<?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>200620</bug_id>
          
          <creation_ts>2019-08-10 19:42:13 -0700</creation_ts>
          <short_desc>[WTF] Add makeUnique&lt;T&gt;, which ensures T is fast-allocated</short_desc>
          <delta_ts>2019-08-19 13:12:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>200611</dependson>
          <blocked>200878</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1560293</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-10 19:42:13 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560322</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-11 03:06:59 -0700</bug_when>
    <thetext>I tried and it finds many classes / structs that are not allocated from FastMalloc. It is worth doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560722</commentid>
    <comment_count>2</comment_count>
      <attachid>376144</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-13 00:55:09 -0700</bug_when>
    <thetext>Created attachment 376144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560723</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-13 01:01:28 -0700</bug_when>
    <thetext>Attachment 376144 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:426:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1242 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>1560724</commentid>
    <comment_count>4</comment_count>
      <attachid>376145</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-13 01:15:10 -0700</bug_when>
    <thetext>Created attachment 376145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560725</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-13 01:22:34 -0700</bug_when>
    <thetext>Attachment 376145 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:426:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1242 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>1560728</commentid>
    <comment_count>6</comment_count>
      <attachid>376147</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-13 01:32:36 -0700</bug_when>
    <thetext>Created attachment 376147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560732</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-13 01:39:04 -0700</bug_when>
    <thetext>Attachment 376147 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:426:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1244 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>1560737</commentid>
    <comment_count>8</comment_count>
      <attachid>376151</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-13 01:57:18 -0700</bug_when>
    <thetext>Created attachment 376151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560743</commentid>
    <comment_count>9</comment_count>
      <attachid>376153</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-13 02:19:57 -0700</bug_when>
    <thetext>Created attachment 376153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560746</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-13 02:26:03 -0700</bug_when>
    <thetext>Attachment 376153 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:426:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1246 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>1560748</commentid>
    <comment_count>11</comment_count>
      <attachid>376154</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-13 02:43:59 -0700</bug_when>
    <thetext>Created attachment 376154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560751</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-13 02:50:16 -0700</bug_when>
    <thetext>Attachment 376154 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:426:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1251 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>1560761</commentid>
    <comment_count>13</comment_count>
      <attachid>376156</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-13 05:08:25 -0700</bug_when>
    <thetext>Created attachment 376156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560762</commentid>
    <comment_count>14</comment_count>
      <attachid>376157</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-13 05:15:57 -0700</bug_when>
    <thetext>Created attachment 376157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560763</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-13 05:21:23 -0700</bug_when>
    <thetext>Attachment 376157 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:426:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1286 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>1560891</commentid>
    <comment_count>16</comment_count>
      <attachid>376192</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-13 12:12:00 -0700</bug_when>
    <thetext>Created attachment 376192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560892</commentid>
    <comment_count>17</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-13 12:18:01 -0700</bug_when>
    <thetext>Attachment 376192 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1288 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>1561359</commentid>
    <comment_count>18</comment_count>
      <attachid>376323</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-14 15:37:27 -0700</bug_when>
    <thetext>Created attachment 376323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561362</commentid>
    <comment_count>19</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-14 15:45:02 -0700</bug_when>
    <thetext>Attachment 376323 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1309 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>1561404</commentid>
    <comment_count>20</comment_count>
      <attachid>376337</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-14 17:48:27 -0700</bug_when>
    <thetext>Created attachment 376337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561411</commentid>
    <comment_count>21</comment_count>
      <attachid>376339</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-14 18:21:18 -0700</bug_when>
    <thetext>Created attachment 376339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561412</commentid>
    <comment_count>22</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-14 18:27:27 -0700</bug_when>
    <thetext>Attachment 376339 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1312 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>1561457</commentid>
    <comment_count>23</comment_count>
      <attachid>376351</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-14 21:35:07 -0700</bug_when>
    <thetext>Created attachment 376351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561459</commentid>
    <comment_count>24</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-14 21:40:58 -0700</bug_when>
    <thetext>Attachment 376351 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1315 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>1561484</commentid>
    <comment_count>25</comment_count>
      <attachid>376360</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-14 23:26:39 -0700</bug_when>
    <thetext>Created attachment 376360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561486</commentid>
    <comment_count>26</comment_count>
      <attachid>376362</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-14 23:31:39 -0700</bug_when>
    <thetext>Created attachment 376362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561491</commentid>
    <comment_count>27</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-14 23:41:01 -0700</bug_when>
    <thetext>Attachment 376362 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1327 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>1561496</commentid>
    <comment_count>28</comment_count>
      <attachid>376365</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-15 00:03:34 -0700</bug_when>
    <thetext>Created attachment 376365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561497</commentid>
    <comment_count>29</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-15 00:11:21 -0700</bug_when>
    <thetext>Attachment 376365 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1329 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>1561503</commentid>
    <comment_count>30</comment_count>
      <attachid>376368</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-15 01:06:44 -0700</bug_when>
    <thetext>Created attachment 376368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561506</commentid>
    <comment_count>31</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-15 01:12:04 -0700</bug_when>
    <thetext>Attachment 376368 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1331 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>1561517</commentid>
    <comment_count>32</comment_count>
      <attachid>376368</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-15 04:30:47 -0700</bug_when>
    <thetext>Comment on attachment 376368
Patch

Attachment 376368 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12916839

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-llint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561730</commentid>
    <comment_count>33</comment_count>
      <attachid>376417</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-15 13:46:01 -0700</bug_when>
    <thetext>Created attachment 376417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561733</commentid>
    <comment_count>34</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-15 13:52:45 -0700</bug_when>
    <thetext>Attachment 376417 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:304:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/FastMalloc.h:310:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeap.h:85:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/IsoHeapInlines.h:126:  __fastAllocatedClass is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 22 in 1331 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>1561746</commentid>
    <comment_count>35</comment_count>
      <attachid>376417</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-08-15 14:17:18 -0700</bug_when>
    <thetext>Comment on attachment 376417
Patch

r=me

Looks like this caught lots of optimization opportunities without adding undue complexity. Nice!

Might be worth emailing webkit-dev to share this change in style.

Probably good to let EWS finish before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561765</commentid>
    <comment_count>36</comment_count>
      <attachid>376417</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-15 14:54:31 -0700</bug_when>
    <thetext>Comment on attachment 376417
Patch

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

There’s another way to stage this.

A) Add WTF_MAKE_FAST_ALLOCATED because of things that we learned from making this change locally.

B) Change callers from std::make_unique to WTF::makeUnique.

C) Add the checking that makes it a compilation failure to use makeUnique without WTF_MAKE_FAST_ALLOCATED.

What I like about this staging is that each patch is safe on its own, and can even be broken into multiple smaller pieces if needed. And patch C is small and easy to roll in and out.

You can do it in the order A, B, C, or B, A, C, or any order as long as it culminates in C.

&gt; Source/WTF/wtf/FastMalloc.h:304
&gt; +typedef int __fastAllocatedClass; \

Since this is new code, why not &quot;using&quot; instead of &quot;typedef&quot;?

Let&apos;s not use &quot;double underscore&quot;, which is reserved in the language; many other patterns are not reserved.

&gt; Source/WebCore/Modules/encryptedmedia/legacy/LegacyCDM.h:54
&gt; -class LegacyCDM {
&gt; +class LegacyCDM final {
&gt; +    WTF_MAKE_FAST_ALLOCATED;

One technique I have used in the past is to land all these changes separately first. Then</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561766</commentid>
    <comment_count>37</comment_count>
      <attachid>376417</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-15 14:56:41 -0700</bug_when>
    <thetext>Comment on attachment 376417
Patch

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

Doing it all at once is probably OK too. Just harder to roll out if there’s a problem.

I guess there’s also:

D) Add a check-webkit-style verifier to complain if we use std::make_unique.

E) Do some trick to make it a compiler error if we accidentally use std::make_unique.

&gt;&gt; Source/WebCore/Modules/encryptedmedia/legacy/LegacyCDM.h:54
&gt;&gt; +    WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; One technique I have used in the past is to land all these changes separately first. Then

I was just pointing out that this could be part of a patch (A) that I mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561801</commentid>
    <comment_count>38</comment_count>
      <attachid>376417</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-15 16:00:03 -0700</bug_when>
    <thetext>Comment on attachment 376417
Patch

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

&gt; Source/WTF/benchmarks/LockFairnessTest.cpp:64
&gt; +        std::unique_ptr&lt;unsigned[]&gt; counts = makeUniqueWithoutFastMallocCheck&lt;unsigned[]&gt;(numThreads);

Isn&apos;t this what makeUniqueArray is for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561807</commentid>
    <comment_count>39</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-15 16:15:36 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #36)
&gt; Comment on attachment 376417 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376417&amp;action=review
&gt; 
&gt; There’s another way to stage this.
&gt; 
&gt; A) Add WTF_MAKE_FAST_ALLOCATED because of things that we learned from making
&gt; this change locally.
&gt; 
&gt; B) Change callers from std::make_unique to WTF::makeUnique.
&gt; 
&gt; C) Add the checking that makes it a compilation failure to use makeUnique
&gt; without WTF_MAKE_FAST_ALLOCATED.
&gt; 
&gt; What I like about this staging is that each patch is safe on its own, and
&gt; can even be broken into multiple smaller pieces if needed. And patch C is
&gt; small and easy to roll in and out.
&gt; 
&gt; You can do it in the order A, B, C, or B, A, C, or any order as long as it
&gt; culminates in C.

This sounds nice! I&apos;ll mechanically split this patch into these pieces and land them separately for roll-out ease.

&gt; 
&gt; &gt; Source/WTF/wtf/FastMalloc.h:304
&gt; &gt; +typedef int __fastAllocatedClass; \
&gt; 
&gt; Since this is new code, why not &quot;using&quot; instead of &quot;typedef&quot;?

Nice, fixed.

&gt; 
&gt; Let&apos;s not use &quot;double underscore&quot;, which is reserved in the language; many
&gt; other patterns are not reserved.

I&apos;ll use very long word instead, like, `webkitFastAllocatedClass` etc.

&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/legacy/LegacyCDM.h:54
&gt; &gt; -class LegacyCDM {
&gt; &gt; +class LegacyCDM final {
&gt; &gt; +    WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; One technique I have used in the past is to land all these changes
&gt; separately first. Then

(In reply to Darin Adler from comment #37)
&gt; Comment on attachment 376417 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376417&amp;action=review
&gt; 
&gt; Doing it all at once is probably OK too. Just harder to roll out if there’s
&gt; a problem.
&gt; 
&gt; I guess there’s also:
&gt; 
&gt; D) Add a check-webkit-style verifier to complain if we use std::make_unique.

While I&apos;ll land separate three patches as A-C in this bug, I&apos;ll create a patch for D and upload it to a separate bug for review :)

&gt; 
&gt; E) Do some trick to make it a compiler error if we accidentally use
&gt; std::make_unique.

ThirdParty code (libwebrtc etc.) is still using std::make_unique, and the header having std::make_unique can be included in WebKit project, so maybe, it is difficult.

&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/encryptedmedia/legacy/LegacyCDM.h:54
&gt; &gt;&gt; +    WTF_MAKE_FAST_ALLOCATED;
&gt; &gt; 
&gt; &gt; One technique I have used in the past is to land all these changes separately first. Then
&gt; 
&gt; I was just pointing out that this could be part of a patch (A) that I
&gt; mentioned.

(In reply to Alex Christensen from comment #38)
&gt; Comment on attachment 376417 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376417&amp;action=review
&gt; 
&gt; &gt; Source/WTF/benchmarks/LockFairnessTest.cpp:64
&gt; &gt; +        std::unique_ptr&lt;unsigned[]&gt; counts = makeUniqueWithoutFastMallocCheck&lt;unsigned[]&gt;(numThreads);
&gt; 
&gt; Isn&apos;t this what makeUniqueArray is for?

Right. Fixed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561926</commentid>
    <comment_count>40</comment_count>
      <attachid>376470</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-15 20:31:15 -0700</bug_when>
    <thetext>Created attachment 376470
A: Annotation Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561927</commentid>
    <comment_count>41</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-15 20:34:42 -0700</bug_when>
    <thetext>Attachment 376470 did not pass style-queue:


ERROR: Source/WebCore/platform/audio/DenormalDisabler.h:44:  Failed to find complete declaration of class DenormalDisabler  [build/class] [5]
Total errors found: 1 in 405 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>1561945</commentid>
    <comment_count>42</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-15 23:49:58 -0700</bug_when>
    <thetext>Tested iOS locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561948</commentid>
    <comment_count>43</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-15 23:53:46 -0700</bug_when>
    <thetext>Committed r248762: &lt;https://trac.webkit.org/changeset/248762&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561950</commentid>
    <comment_count>44</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-15 23:54:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/54379870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561951</commentid>
    <comment_count>45</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-15 23:56:34 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #43)
&gt; Committed r248762: &lt;https://trac.webkit.org/changeset/248762&gt;

&quot;A&quot; patch goes. I&apos;ll upload the &quot;B&quot; patch, and land it tomorrow. And after that, I&apos;ll land &quot;C&quot; patch. Then, announcing makeUnique in webkit-dev and open a new bug for &quot;D&quot; patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561952</commentid>
    <comment_count>46</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-15 23:58:05 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #45)
&gt; (In reply to Yusuke Suzuki from comment #43)
&gt; &gt; Committed r248762: &lt;https://trac.webkit.org/changeset/248762&gt;
&gt; 
&gt; &quot;A&quot; patch goes. I&apos;ll upload the &quot;B&quot; patch, and land it tomorrow. And after
&gt; that, I&apos;ll land &quot;C&quot; patch. Then, announcing makeUnique in webkit-dev and
&gt; open a new bug for &quot;D&quot; patch.

One of the good thing this patch found is that we missed this annotation even in recent code, like Source/WebCore/layout/inlineformatting/InlineItem.h.
After introducing makeUnique, we no longer have this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561987</commentid>
    <comment_count>47</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-16 02:04:41 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561988</commentid>
    <comment_count>48</comment_count>
      <attachid>376485</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-16 02:05:49 -0700</bug_when>
    <thetext>Created attachment 376485
B: makeUnique / makeUniqueWithoutFastMallocCheck</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561990</commentid>
    <comment_count>49</comment_count>
      <attachid>376486</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-16 02:10:09 -0700</bug_when>
    <thetext>Created attachment 376486
B: makeUnique / makeUniqueWithoutFastMallocCheck</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561994</commentid>
    <comment_count>50</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-16 02:17:05 -0700</bug_when>
    <thetext>Attachment 376486 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 17 in 1018 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>1562651</commentid>
    <comment_count>51</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-18 23:11:59 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #38)
&gt; Comment on attachment 376417 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376417&amp;action=review
&gt; 
&gt; &gt; Source/WTF/benchmarks/LockFairnessTest.cpp:64
&gt; &gt; +        std::unique_ptr&lt;unsigned[]&gt; counts = makeUniqueWithoutFastMallocCheck&lt;unsigned[]&gt;(numThreads);
&gt; 
&gt; Isn&apos;t this what makeUniqueArray is for?

Unfortunately, it seems that some of TestWebKit headers (maybe?) things are compiled without bmalloc, so we cannot use makeUniqueArray :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562652</commentid>
    <comment_count>52</comment_count>
      <attachid>376665</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-18 23:44:56 -0700</bug_when>
    <thetext>Created attachment 376665
B: makeUnique / makeUniqueWithoutFastMallocCheck</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562653</commentid>
    <comment_count>53</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-18 23:50:24 -0700</bug_when>
    <thetext>Attachment 376665 did not pass style-queue:


ERROR: Source/WebCore/page/UserContentController.cpp:76:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/page/UserContentController.cpp:103:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/fileapi/AsyncFileStream.cpp:97:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/layout/layouttree/LayoutBox.cpp:450:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:566:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:571:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp:608:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/dom/KeyboardEvent.cpp:99:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:977:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:978:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:984:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/page/animation/CSSPropertyAnimation.cpp:985:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/RenderObject.cpp:1896:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:78:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKitLegacy/Storage/StorageThread.cpp:90:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Tools/TestWebKitAPI/Tests/WebKitGtk/DOMDOMWindowTest.cpp&quot;
ERROR: Source/WebCore/page/Page.cpp:273:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
Total errors found: 17 in 1024 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>1562654</commentid>
    <comment_count>54</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-18 23:59:54 -0700</bug_when>
    <thetext>Committed r248846: &lt;https://trac.webkit.org/changeset/248846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562657</commentid>
    <comment_count>55</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-19 00:16:03 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562658</commentid>
    <comment_count>56</comment_count>
      <attachid>376666</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-19 00:16:04 -0700</bug_when>
    <thetext>Created attachment 376666
C: makeUnique should perform static-assert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562670</commentid>
    <comment_count>57</comment_count>
      <attachid>376672</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-19 00:54:25 -0700</bug_when>
    <thetext>Created attachment 376672
C: makeUnique should perform static-assert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562688</commentid>
    <comment_count>58</comment_count>
      <attachid>376665</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-19 02:03:12 -0700</bug_when>
    <thetext>Comment on attachment 376665
B: makeUnique / makeUniqueWithoutFastMallocCheck

Attachment 376665 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12939317

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-llint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562690</commentid>
    <comment_count>59</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-19 02:11:44 -0700</bug_when>
    <thetext>Committed r248850: &lt;https://trac.webkit.org/changeset/248850&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562692</commentid>
    <comment_count>60</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-19 02:41:08 -0700</bug_when>
    <thetext>Committed r248851: &lt;https://trac.webkit.org/changeset/248851&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562781</commentid>
    <comment_count>61</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-19 13:12:49 -0700</bug_when>
    <thetext>Committed r248861: &lt;https://trac.webkit.org/changeset/248861&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376144</attachid>
            <date>2019-08-13 00:55:09 -0700</date>
            <delta_ts>2019-08-13 01:15:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190813005508.patch</filename>
            <type>text/plain</type>
            <size>1723619</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDkyMDFmZjM5Y2JiMDFhNDJhYWQ1MTg2YzRkZWIxMDgzYWZiOWZhLi42NDFhZDIzY2U3MzZiZDFi
Mzk0ZmQzMGEzYTZjMDFhNjNhNGZjY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgbXVs
dGlwYXJhbWV0ZXIgb3ZlcmxvYWRzIG9mIGFwcGVuZCgpIGluIFN0cmluZ0J1aWxkZXIgYXMgYSBm
aXJzdCBzdGVwIHRvd2FyZCBzdGFuZGFyZGl6aW5naW5nIG9uIHRoZSBmbGV4aWJsZUFwcGVuZCgp
IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZmUzNjczMjEwMThkZDVhMWQ0N2Y1NWMxYTcxZjBhODJm
OGM1NzIuLjBjMDY1NzVlZDQ2ZTFiN2Y5MDU4YzQ3M2U5MTZlMjU5NjdlZDAwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAgICAgICogYmVu
Y2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFZlY3Rv
ci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAgICAgICAqIHd0
Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9u
Lmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICog
d3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9T
dHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAg
ICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3Ip
OgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29t
PgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdl
YWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUwZWJmYzEwNDczZDliY2U5NzM0ODNkMmY4M2Zi
OTEyMGFmZjY5OC4uMmE0ODE3YjY2NTdjZDcyMTllOTdkODQxNWZkMGU3YzEwNjQxZjUwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4MjQgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcpOgorICAgICAgICAqIE1vZHVsZXMv
YmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JC
ZWFjb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUNETTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lz
dGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y2xpZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6c2V0Q2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9s
b2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJl
Y29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5k
ZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVP
cGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRl
U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9w
ZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFu
c2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2
ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURC
VHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFu
YWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2
ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tl
bmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
OjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRl
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJl
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rh
c2s6OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVj
b2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2Rp
bmdUYXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
YW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNl
dEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBh
bm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2Fn
ZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVG
cm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5k
VmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVh
dGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50
cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29t
cHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFt
ZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlBhcnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJ
bml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRl
cyk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRo
b2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFt
ZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0Ns
YXNzOjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29t
YmluZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1
bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRz
Ojpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAg
KiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9E
T01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNl
dEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAg
ICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNl
dDo6YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNj
YWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgor
ICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6Cisg
ICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJJbXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6
OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNv
bnN1bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZVN1cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1l
S2V5ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRv
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvRWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
U2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hh
cGVQYXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2Up
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhP
YmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0
ZXJDU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvbVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRF
dmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAg
ICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAg
KiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRv
bS9NaWNyb3Rhc2tzLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdyk6Cisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFn
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNl
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURh
dGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNl
bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kQ3Jl
YXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhU
TUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHls
ZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAg
KiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25G
aWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxl
U3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6
CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjptYXBN
b3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRU
b1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAg
ICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVx
dWVzdFRvSGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0
VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpp
bnNlcnRBZGphY2VudEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNl
V2hvbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNo
U3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJs
ZVN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEluc3BlY3RlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9y
eUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0
b3JQYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dl
YkhlYXBBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uTG9nKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBs
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0
ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25E
aXNhYmxlci5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNj
aGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5l
Y3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRl
eHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpp
bml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJs
YXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9u
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAgICAg
ICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0
aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdl
L1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0
ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJzUHJv
cGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBwYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUp
OgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVu
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNaXhlZFR5cGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJlck9m
Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNo
YW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bGVu
Z3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bXV0
YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpkYXRh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVybyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50Rmxh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2Ft
cGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6
OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb246OmlzQWN0aXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9CaXF1YWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Db25lLmg6
CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRJbm5lckFuZ2xlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmlubmVyQW5nbGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJBbmdsZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRlckFuZ2xlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNldE91dGVyR2Fpbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRlckdhaW4gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OkRlbm9ybWFsRGlzYWJsZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6fkRlbm9ybWFsRGlzYWJsZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Zmx1c2hEZW5vcm1h
bEZsb2F0VG9aZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJs
ZXI6OmdldENTUik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVy
OjpzZXRDU1IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZv
bHZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGlzdGFuY2VFZmZlY3Q6OnNldE1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3RhbmNlRWZmZWN0OjpzZXRSZWZEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXN0YW5jZUVmZmVjdDo6c2V0TWF4RGlzdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldFJvbGxvZmZGYWN0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnJlZkRpc3RhbmNlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjptYXhEaXN0YW5jZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6cm9sbG9mZkZhY3Rv
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6Om55cXVpc3QgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjp0YWlsVGltZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6Omxh
dGVuY3lUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5h
bWljc0NvbXByZXNzb3JLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21w
cmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbDo6bGF0ZW5jeUZyYW1lcyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNhbXBsZVJhdGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpt
ZXRlcmluZ0dhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Vx
dWFsUG93ZXJQYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVENvbnZvbHZlcjo6ZmZ0U2l6ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkZURnJhbWU6OmNyZWF0ZUludGVycG9sYXRlZEZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFz
ZTo6bnVtYmVyT2ZBemltdXRocyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0
YWJhc2U6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJh
c2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdT
bGljZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OkhSVEZFbGV2YXRpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVsTGlzdEwpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVsTGlzdFIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6ZWxldmF0aW9uQW5nbGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6bnVtYmVyT2ZBemltdXRocyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpzYW1wbGVS
YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRGUGFu
bmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5u
ZXI6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUNoYW5u
ZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcik6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
UGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbml0aWFsaXplKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
dmVyYjo6aW1wdWxzZVJlc3BvbnNlTGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcjo6cmVhZEluZGV4IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcjo6cmVhZFRpbWVGcmFt
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9s
dmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6aW1wdWxzZVJlc3BvbnNlTGVuZ3RoIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6aW5wdXRCdWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp1c2VCYWNr
Z3JvdW5kVGhyZWFkcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9s
dmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXJTdGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9s
dmVyU3RhZ2U6OmlucHV0UmVhZEluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJi
SW5wdXRCdWZmZXI6OndyaXRlSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9VcFNh
bXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oOgorICAgICAgICAo
V2ViQ29yZTo6WmVyb1BvbGU6Olplcm9Qb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Olplcm9Qb2xlOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6
c2V0WmVybyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6c2V0UG9sZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6emVybyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6cG9sZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb246OkF1ZGlvU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
RGVzdGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291
cmNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1
dEZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91
dHB1dEZvcm1hdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVj
b2Rlcjo6ZGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFj
dG9yeUNsZWFyS2V5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlvbmFyeTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWVkRGVjb2Rlcjo6ZGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpLZXllZERlY29kZXJHZW5lcmljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJp
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3Ro
U2Nyb2xsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRGVjb2Rl
ckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c3RhcnRU
aW1lcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dExheW91dDo6VGV4dExheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2ludC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZW5zdXJlRGVyaXZlZEZvbnREYXRhIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
b250Ojpib3VuZHNGb3JHbHlwaCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9u
dFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4gY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGVGb250czo6R2x5cGhQYWdlQ2FjaGVFbnRyeTo6c2V0R2x5
cGhEYXRhRm9yQ2hhcmFjdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1l
dHJpY3NNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDxUPjo6bG9jYXRl
UGFnZVNsb3dDYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzdGFy
dEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5n
aW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2Vla2FibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVnaW9uOjpzZXRTaGFwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OmNvcHlTaGFwZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWdpb246OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVw
cmVzZW50YXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2Np
dHlEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0M0RBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5n
UHNzaEJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1Q
aWNrZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1C
dWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6
QVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZG
V3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldy
YXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01ldGFk
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2Vz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRoVG9s
ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdp
c3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZUN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVt
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRB
c3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6
c2V0TWVkaWFTZWxlY3Rvbk9wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Vmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25z
RnJvbUtleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9y
U2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp0aWxlZFNjcm9s
bGluZ0luZGljYXRvckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
ckNvY29hOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGlsZWRC
YWNraW5nTGF5ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQbGF0Zm9y
bUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcDoKKyAgICAgICAgKFdlYlRp
bGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSk6Cisg
ICAgICAgIChXZWJDb3JlOjptX3ByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6
OmVuc3VyZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0lt
YWdlUm90YXRpb25TZXNzaW9uVlQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25T
ZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVydGllczo6aXNJZGVudGl0eSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjp0cmFuc2Zvcm0gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6
cm90YXRpb25Qcm9wZXJ0aWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlUm90YXRpb25TZXNzaW9uVlQ6OnNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlZFNpemUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZUNhY2hlQ1Y6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9UZXh0dXJlQ29waWVyQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uOjpsb2FkRXh0ZXJuYWxEb2N1bWVudElmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjplbnN1
cmVBdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9z
aXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGlt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
dXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJT
cmNNYWtlUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6YnVmZmVyZWQg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZv
Qm94Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0
aW9uQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1NjaGVtZUluZm9ybWF0aW9uQm94Ojpw
YXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0
aW9uQm94Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVC
b3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9u
Qm94Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJU09TdHJpbmdCb3g6OmNvbnRlbnRzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6OmJveFR5cGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklTT1dlYlZUVEN1ZTo6cHJlc2VudGF0aW9uVGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmR1cmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6c291cmNlSUQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjppZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJU09XZWJWVFRDdWU6Om9yaWdpbmFsU3RhcnRUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6c2V0dGluZ3MgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpjdWVUZXh0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVn
cmF0aW9uLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlNjZW5lSW50ZWdyYXRpb246OmNyZWF0ZVVw
ZGF0ZVNjb3BlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OmNyZWF0
ZUNvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5n
Q29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGFpbnRpbmcpOgorICAgICAgICAoTmljb3Np
YTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29yZGluZzo6Rm9yUmVjb3JkaW5nKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0
b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6QmFja2luZ1N0b3Jl
VGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBl
ckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBw
ZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAg
ICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3Rv
cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFH
QzNETGF5ZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6R0MzRExheWVyOjpzd2FwQnVmZmVyc0lm
TmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6
SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hh
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhp
Y3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OlRleHR1cmVNYXBwZXJHTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI6OmNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdU
aHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybVN0YXRlOjphcHBseVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpzZXRTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnVs
bFNjcmVlbkNvbnRyb2xsZXI6OkZ1bGxTY3JlZW5Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkZ1bGxTY3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeSk6Cisg
ICAgICAgIChXZWJDb3JlOjptX3ByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpjcmVhdGVXaW5kb3dzQml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6YnVmZmVy
ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OndyaXRl
Q2xpcGJvYXJkQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdh
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lU2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVscGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoR0lG
RnJhbWVDb250ZXh0OjpkZWNvZGUpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OmFkZEZyYW1l
SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpkZWNv
ZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZGVj
b2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5VGlsZUNhY2hlOjpMZWdhY3lUaWxlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06Cisg
ICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptX2NhcHR1cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlv
Q2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFt
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2lu
aXQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6bV9jYXB0dXJlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJh
Y2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0
b3J5OjpCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlh
bGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjZXJ0aWZpY2F0ZUdlbmVyYXRvcik6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVh
dGVEZWNvZGVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlckdT
dHJlYW1lcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBs
ZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjOjpyZWNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRl
UGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6
cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZTo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpjcmVhdGVE
ZWNvZGVUYXNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxs
Q2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRCb2R5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpj
YW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrIF9yZXN0YXJ0XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpzZWFyY2hD
b29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3Rh
dGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybENvbnRleHQ6OkN1cmxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5k
bGU6OndpbGxTZXR1cFNzbEN0eCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxGb3JtRGF0YVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJl
YW06OmdldFBvc3REYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpjcmVhdGVJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNhbGxPbldvcmtlclRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOl0pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZy
b21QZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bkludGVybmFs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0
ZUxhYmVsVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrTW9udGhMYWJl
bHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9j
YWxlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0lDVTo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
UmVwbGFjZW1lbnQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjE2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjE2OjpyZWdp
c3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjg6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxl
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC93aW4vVGV4dENvZGVjV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dp
bik6CisgICAgICAgICogcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZS
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmdldFZSRGlzcGxh
eXMpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJj
aFBvcHVwTWVudURCOjpjcmVhdGVQcmVwYXJlZFN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1dDRGF0YU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXQ0RhdGFPYmplY3Q6
OlNldERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJ1
bik6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9vdElubGlu
ZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxp
bmdTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0Vu
ZExpbmVJZk5lZWRlZCk6CisgICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0Ojpjb3B5VG9OZXdDb250YWluZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZsb2F0c1RyZWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJ
dGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFz
ZWxpbmVBbGlnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25t
ZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxleEZhY3RvclVuaXRTaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXApOgorICAgICAg
ICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNl
ZFRlc3RSZXN1bHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bXV0
YWJsZUxpc3RCYXNlZFRlc3RSZXN1bHQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6YWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElu
bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllck92ZXJsYXBNYXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlu
c2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9u
ZWREZXNjZW5kYW50c01hcDo6YWRkRGVzY2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6YmVnaW5VcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjplbnN1cmVCbG9ja1JhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxv
dzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93OjpsYXlvdXRMaW5lR3JpZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmVuc3VyZUxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6Om1hdGVyaWFsaXplUmFyZUJsb2NrRmxvd0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y3JlYXRlSW5saW5lQm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZUNvdW50ZXJOb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRDb250YWluZXI6OnNl
dFJlbmRlckJveEZyYWdtZW50SW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdt
ZW50ZWRGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojpj
b250YWluaW5nRnJhZ21lbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRy
eU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0
c2lkZUdyaWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5l
OjpjcmVhdGVJbmxpbmVGbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlQW5jZXN0b3JDbGlwcGluZ1N0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6
OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpjcmVh
dGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0
aUNvbHVtbkZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJh
Y3Rlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVmlldzo6Y29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3OjppbWFnZVF1YWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6YXBwZW5k
RmxvYXQpOgorICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29sbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5n
ZURhdGE6OmNvbGxlY3RCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
UmFuZ2VEYXRhOjphcHBseSk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGF5b3V0OjpydW5SZXNv
bHZlciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlv
bnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmdlbmVyYXRlTGluZUJveFRyZWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0QXV0b1NpemluZzo6YWRkVGV4dE5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9s
aW5lL0xpbmVCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha2VyOjpza2lw
TGVhZGluZ1doaXRlc3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVT
aGFwZU1hcmdpbkludGVydmFscyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnNldFNoYXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUNpcmNsZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVs
bGlwc2VTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb2x5Z29uU2hhcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRl
Qm94U2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCYXNpY1NoYXBlUGF0aDo6YmxlbmQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9Db250ZW50RGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpGaWxsTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsbExheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRDdXN0b21QYWludFdhdGNo
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENvbnRlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjplbnN1cmVUcmFuc2l0aW9ucyk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoYWRvd1NWR0RhdGE6OlN0eWxlU2hhZG93U1ZHRGF0YSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0
YTo6U2hhZG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVy
aXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Y3JlYXRl
SW5saW5lRmxvd0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRl
eHRCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJp
bWl0aXZlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm46OmJ1aWxkUGF0dGVybik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6dXBkYXRlU2hhcGVGcm9t
RWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jlc291cmNlczo6c2V0RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlczo6c2V0TWFya2VyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRNYXJrZXJNaWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRGaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlczo6c2V0U3Ryb2tlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291
cmNlc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0NhY2hlOjphZGRS
ZXNvdXJjZXNGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRyaWNzQnVpbGRl
cjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcik6CisgICAgICAgICogcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRyZWVCdWlsZGVyOjpSZW5kZXJUcmVlQnVpbGRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyZWVVcGRhdGVyOjpSZW5kZXJUcmVlVXBkYXRlcik6CisgICAgICAgICogcmVwbGF5L1Vz
ZXJJbnB1dEJyaWRnZS5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkludmFsaWRhdG9yOjpJbnZhbGlkYXRvcik6CisgICAg
ICAgICogc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OmNvbW1pdFJlbGF0aW9uc1RvUmVuZGVyU3R5bGUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2Nv
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZXNvbHZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmFjdGl2ZVN0eWxlU2hlZXRzQ29udGFpbnMgY29u
c3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmUpOgorICAgICAgICAqIHN2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQpOgorICAg
ICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6
OlNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6ZW5zdXJlU1ZHUmFy
ZURhdGEpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdXBwbGVtZW50YWxUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEJ5dGVTdHJlYW06OmNvcHkgY29uc3QpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRp
bWVDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnNj
aGVkdWxlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWREZWNvcmF0ZWRQcm9wZXJ0eTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmg6CisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaDoKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RGVjb3JhdGVkRW51bWVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJpbWl0aXZl
UHJvcGVydHlBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpmcm9t
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OmVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
cm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6c2V0UHJpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbml0
aWFsaXplTW9ja0NETSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnF1ZXVlTWljcm9U
YXNrKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogdGVzdGluZy9M
ZWdhY3lNb2NrQ0RNLmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJF
dmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRR
dWV1ZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFz
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6Y3Jl
YXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lz
dHJhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3Jr
ZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZSk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyOjpTV1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2Ip
OgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToKKyAg
ICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29y
a2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRH
bG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmts
ZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtsZXRzL1dv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKToKKyAgICAgICAgKiB4bWwvWE1M
RXJyb3JzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp1cGxvYWQpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0
aW9ucy5jcHA6CisgICAgICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhQYXRoOjpldmFsdWF0ZVByZWRpY2F0ZSk6CisgICAgICAgICogeG1sL1hTTFN0eWxl
U2hlZXRMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OmxvYWRD
aGlsZFNoZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcik6CisgICAg
ICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRFbmRFbGVtZW50TlND
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRDaGFy
YWN0ZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBw
ZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVu
ZGluZ0NhbGxiYWNrczo6YXBwZW5kQ0RBVEFCbG9ja0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENvbW1lbnRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVycm9yQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCk6CisKIDIwMTkt
MDgtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRnJhbWVM
b2FkZXI6Om9wZW4gY2FuIGV4ZWN1dGUgc2NyaXRwcyB2aWEgc3R5bGUgcmVjYWxjIGluIEZyYW1l
OjpzZXREb2N1bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGUxYmZlNzM1NDE0MjRjMGQxOWRi
OTE4YzQ1MmZlMDVmOWU2NzVhZi4uMTI4MWQzMjU4MzY3MjA0ZTEyZDYyNzVmZmUxOTllNTNiZWM4
NmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDgtMTMgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFr
ZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNz
bC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29u
dGV4dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3Bw
OgorICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL21h
Yy9DbG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6OmNyZWF0ZSk6CisKIDIwMTktMDgtMDkgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGFwcGluZyBi
dXR0b25zIGluIERhdGEgRGV0ZWN0b3JzIGxvb2t1cCBwcmV2aWV3cyBkb2Vzbid0IHdvcmsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZlci9D
aGFuZ2VMb2cKaW5kZXggMzU4ZjJiZjAwNWFlNjQ0ZDgxMjMyOGQ1ZGVkZTQxOWM4YmEwMWNmYi4u
YTNmMmI3NjY4YzViYzJjZWNkMmNmNTYyOGRmNTVjNzNkZDE0MzEzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVz
IFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6
OldlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIpOgorICAgICAgICAqIGdsaWIvU2Vz
c2lvbkhvc3RHbGliLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6OmxhdW5j
aEJyb3dzZXIpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VU
b0JhY2tlbmQpOgorCiAyMDE5LTA2LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDU1NjcpOiBbR1RLXVtXUEVdIFsy
LjI1LjFdIFdlYktpdFdlYkRyaXZlciBnZXRzIGluc3RhbGxlZCBhcyBXZWJEcml2ZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNmE0YTgxN2YwOWIyNGJkOGI3MjQ5MTM4ZmNjOWI3NDdmMTA1NThkMi4uODIxZjM4MThj
ZWM1M2RmMWQ4YmVjY2I3MGE3Njc4MzM2YTg1M2EzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MjEg
QEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxs
b2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzayk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZv
ck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3Rh
cnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29udmVydE5l
dHdvcmtMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6
cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFwOjphZGQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2
ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0Jsb2I6OmRvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hl
Y2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjplbnN1cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3
U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0
aWFsaXplUXVvdGFVc2Vycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdG9y
YWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6bV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6
OnNjaGVkdWxlRGF0YWJhc2VVcGRhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OkNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6bWFrZUVudHJ5
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6bWFrZVJlZGlyZWN0RW50
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp1cGRhdGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNw
ZWN1bGF0aXZlTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZDo6cmVnaXN0ZXJT
dWJyZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c2F0aXNmeVBlbmRp
bmdSZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxp
ZGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzeW5jaHJv
bml6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVhZFJlY29y
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmV0cmlldmVGcm9tTWVtb3J5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VS
ZWNvcmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRjaENhY2hlOjpzdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlUmVkaXJlY3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJl
Y29tZURvd25sb2FkVGFzazpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2Nv
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRl
V2ViU29ja2V0VGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJv
Y2Vzc0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1D
cmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
aW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29y
ZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza1NvdXA6OmRvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpw
bGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOgorICAgICAg
ICAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlvbik6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNw
YXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZyk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6dW53cmFwRm9yVGVzdGlu
Zyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQ
Qzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNl
bmRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjpDb25uZWN0aW9u
VGVybWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgor
ICAgICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJv
Y2Vzc01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2Fn
ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZv
cm0vTW9kdWxlLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQu
bW06CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQp
OgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5h
bEhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQ
SVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6
cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RJ
bnZvY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9p
bml0V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9p
bml0V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2ds
aWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51
SXRlbUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAg
ICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKToKKyAgICAg
ICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24pOgorICAg
ICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRo
X2xhYmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJt
ZW51KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKToK
KyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoK
KyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRl
bnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRleG1hcExheWVyKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIpOgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6
OlRocmVhZGVkQ29tcG9zaXRvcik6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RN
ZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVj
dE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5Q
T2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlM
b2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJp
dG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFw
aGljc0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0
MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElGaW5kQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0
Y2hlc0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6SFRUUENvb2tp
ZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhp
c3RvcnlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0Nv
bnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXRIaXN0
b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlvbk1h
bmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6
CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV0tQ
YWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudCk6
CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQ
YWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQpOgor
ICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VT
dGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRl
TWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUgaW5pdFdpdGhQYWdlOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoKKyAgICAgICAgKFdL
Vmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yZSBh
ZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6
CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgor
ICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93
c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24gc2V0
RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNRTGl0ZVN0YXRlbWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNw
cDoKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAg
ICAgIChhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHA6CisgICAgICAg
IChhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHA6CisgICAgICAgIChh
dHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRGYXZpY29uRGF0
YWJhc2VPcGVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAod2Via2l0RmluZENvbnRyb2xsZXJDb25zdHJ1Y3RlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwOgorICAgICAg
ICAoYXR0YWNoRm9ybUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRHZW9sb2NhdGlv
bk1hbmFnZXJDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29u
TG9hZGluZ0NsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hJY29uTG9hZGluZ0NsaWVudFRvVmll
dyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYktpdE5vdGlmaWNh
dGlvblByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGll
bnQuY3BwOgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAod2Vi
a2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIp
OgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9t
ZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRFbW9qaUNob29zZXIuY3BwOgorICAgICAgICAod2Via2l0RW1vamlDaG9vc2VyU2V0dXBFbW9q
aVNlY3Rpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJJbnNwZWN0
b3JDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAgICAgICAo
d2Via2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcik6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURp
ZFJlbGF1bmNoV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdKToK
KyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlv
bjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAgICAgICAgKFdLV1BFOjpWaWV3
OjpWaWV3KToKKyAgICAgICAgKFdLV1BFOjpWaWV3OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHA6CisgICAgICAgIChXUEVRdFZpZXc6Om5v
dGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3Ojpub3RpZnlMb2Fk
RmFpbGVkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3OjpydW5KYXZhU2NyaXB0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdQRVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNl
c3Npb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1t
OgorICAgICAgICAoV2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlOjpjcmVhdGVJY29uTG9hZGlu
Z0NsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAg
ICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNyZWF0ZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6Y3JlYXRlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JD
YXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnN0YXJ0RGlzcGxheUxpbmspOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
V2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0VGV4dEluZGljYXRvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbnN1cmVHZXN0dXJlQ29udHJvbGxlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5n
RHJhd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmdldERhdGFGcm9t
RGVjb2RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdl
Ojpjb21wbGV0ZURldmljZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxsKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNl
dEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFBy
b3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9I
aWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6dGFrZVVwbG9hZEFzc2VydGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpzZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnBsdWdpblJlcXVpcmVzR3RrMik6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVy
OjpkaWRDb25uZWN0VG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVN
YWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6OkhpZFNl
cnZpY2U6OmRldmljZUFkZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
ZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRNZWRp
YUVsZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjptX3Jl
c2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVSUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERyYXdpbmdBcmVhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQ
cm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRIaXN0
b3J5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2Fk
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3Rv
cmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3Bl
Y3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6
aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0RyYWdB
bmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6
ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBv
c2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6aW5pdGlhbGl6
ZUVHTCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5t
bToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmVuc3VyZUVkaXRh
YmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJh
Y2tpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcg
ZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQ
cm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGlu
aXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjp3ZWJWaWV3Ol0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVEcmF3aW5nQXJlYVByb3h5Ol0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2aW91c05vZGU6
YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpl
bGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRD
b29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlciBpbml0V2l0aFdpbmRvdzp3ZWJWaWV3OnBhZ2U6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW06CisgICAgICAgICgtW1dLVGV4dEZp
bmRlckNsaWVudCBpbml0V2l0aFBhZ2U6dmlldzp1c2VQbGF0Zm9ybUZpbmRVSTpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRU
YXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKToKKyAgICAgICAg
KiBVSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OldlYlZpZXcpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdhbWVwYWRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlU2V0Q2xpZW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VTZXRFZGl0b3JDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudCk6
CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdL
QnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VT
ZXRVSUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VPdmVybGF5LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVh
dGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVu
ZGxlUGFnZUJhbm5lck1hYy5tbToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJh
bm5lcldpdGhDQUxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldE9yQ3Jl
YXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6RE9NT2Jq
ZWN0Q2FjaGU6OnB1dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0
RXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwOgorICAgICAgICAod2Via2l0
V2ViRWRpdG9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNp
b25DcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRGcmFtZUdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01U
ZXh0SXRlcmF0b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlOjpzZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVk
aWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBlbmRpbmdNZXNzYWdlOjpQZW5kaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENQ
cm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVTZXJ2ZXJUY3BTb2NrZXQpOgorICAgICAg
ICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVVZHBTb2NrZXQpOgorICAg
ICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVDbGllbnRUY3BTb2Nr
ZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdD
b25uZWN0aW9uU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9y
eTo6Q3JlYXRlQXN5bmNSZXNvbHZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzY2hlZHVsZVRpbWVyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Y
MTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV09yaWdpblRhYmxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlv
bkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRPdmVycmlk
ZXM6OmFkZE92ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsdWdJbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6
ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNy
ZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVu
c3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRm
b3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRpbWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBy
aW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJpbnRPcGVyYXRpb25H
dGs6OnByaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9s
bGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZElu
ZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1h
Yy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVz
dFJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6bGliV2ViUlRDTmV0d29yayk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlcjo6U291cmNlOjpTb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJvY2Vzc1Rhc2tTdGF0
ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0
b3JTdGF0ZSk6CisKIDIwMTktMDgtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggYmFkIFJFTEVBU0VfTE9HX0VSUk9SIHVuZGVyIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDRj
NTFlOTY1ZjY4MjZiZWMzZWU5MmU3NTI5NTg3ZTFiMWIyZDA0M2EuLjgyYjYwMzFiMWI5YjQ2OWJh
YTkwYjRhZGE4OGMxMzcwNGM1NDI0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3Qt
YWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKiBTdG9yYWdl
L1N0b3JhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6ZGlz
cGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVybWluYXRlKToKKyAg
ICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIwMTktMDgtMTIgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREItc3BlY2lmaWMg
cXVvdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggYzYzZWZhYmE1ZDg4NjgzYmVmYmYx
Njk1OGZmMWZlMDAwNGVhOWM2Yi4uNWRlZDIzNjZiM2FlZTExYzgzM2E4Njc5YWI4ZjU4MThiYWFh
N2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0w
OC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZd
IEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xp
ZW50OjpjcmVhdGVGcm9udGVuZFNldHRpbmdzKToKKwogMjAxOS0wOC0xMCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lP
TihyMjQ4NDU0KTogV0sxIGluc3BlY3RvciBmcm9udGVuZCBjbGllbnQgZG9lc24ndCBxdWV1ZSBt
ZXNzYWdlcyB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgbG9hZGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9DaGFuZ2VMb2cKaW5kZXggODViZmU3ZmU3YWE0YzNmN2ZjYmIyZDcyOGRiNWRlYTdhZGFiYThm
Zi4uMjIzYzlmMDZkYzMwZWRlMTAyMTUxODQ5MzRlYmRmMTI1OWFiMzY5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8
VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29u
dGVudC5tbToKKyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2V0Vmlld3BvcnRD
b25zdHJhaW5lZExheWVyczpzdGlja3lDb250YWluZXJNYXA6XSk6CisKIDIwMTktMDctMjkgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9i
c2VydmVyXSBkaWRGaW5pc2hDb250ZW50Q2hhbmdlT2JzZXJ2aW5nIHNob3VsZCBpbmNsdWRlIHRo
ZSB0eXBlIG9mIGNvbnRlbnQgY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IDY4NTUzNTY2Mjg4MWU3MTI3ODc2OWU0MTZiNDllOTgxZmE5NTdmMmIuLjRmZTk3MWM5ZWQ0MWJi
YjYwNzdjNWZjODZlOWU3NThmNTVkMzY5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2NiBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVz
IFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJIaXN0
b3J5UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToK
KyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRp
b246XSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHku
bW06CisgICAgICAgIChXS1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkpOgorICAgICAgICAo
V0tQQ0Jvb2xlYW5SZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhbkFuZERhdGFSZXBseSk6Cisg
ICAgICAgIChXS1BDSW5zdGFudGlhdGVQbHVnaW5SZXBseSk6CisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6
bWV0aG9kTmFtZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVk
KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcu
bW06CisgICAgICAgICgtW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBjcmVhdGVQbHVnaW5d
KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tOgor
ICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmg6CisgICAgICAg
ICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNj
YXBlUGx1Z2luVmlldyBzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOnJlcGVhdDp0aW1lckZ1bmM6
XSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW06CisgICAg
ICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKGFkZFJlZGlyZWN0VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06CisgICAgICAg
ICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2F0dGFjaFNjcmlw
dERlYnVnZ2VyXSk6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1t
OgorICAgICAgICAoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJh
dG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJWaWV3IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6CisgICAgICAgICgt
W1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6
CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1
cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgor
ICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNl
OnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IF9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXZWJWaWV3
IF9zZXRUZXh0SW5kaWNhdG9yOndpdGhMaWZldGltZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXdEYXRhLm1tOgorICAgICAgICAoV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZp
ZXdMYXllckZsdXNoU2NoZWR1bGVyKToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5pdF0p
OgorCiAyMDE5LTA4LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIHRocmVhZGluZyBhc3NlcnRpb25zIHRvIFJlZkNvdW50ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCBmNTFlMDQ0MmU1NmJmNzIzYTAxYjMwZGU4OGZiYzgxNTgzMTg0NDA5
Li4yZWJhNjEzOTAwN2UyMTM2MjFlYTEwMjQyMzVmM2EyMzA3MWU0YTQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxU
Piwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcik6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmxvYWQp
OgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3Ojp3bmRQcm9jKToKKyAgICAgICAgKiBXZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNsaWVudCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JD
bGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBX
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFn
OjpXZWJFbGVtZW50UHJvcGVydHlCYWcpOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoK
KyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlv
bik6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNw
cDoKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2lu
Z0NvbnRleHQpOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHA6CisgICAgICAg
IChXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUpOgorICAgICAgICAo
V2ViVmlldzo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAo
V2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNl
clN0eWxlU2hlZXRUb0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcpOgorCiAyMDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggM2Yw
ZmIyZTFjZWVhZWYwNjU5YzM0YzgyNzFiZWVjMTA4MjM3NTZlZC4uMGQ1NWZlN2UxYmI2NTFlOTgx
MGNjOGIyMzk4MTg3ZjY3ZTk5N2VmMCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5
LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dU
Rl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBibWFsbG9j
L0lzb0hlYXAuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg6CisKIDIwMTkt
MDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbYm1h
bGxvY10gQWRkIElzb0hlYXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBu
b3QgYWxsb2NhdGluZyB0b28gbGFyZ2UgVkEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggMDdkNzA5YmExMmM4MmM4NTQ4MmQ3M2M3MjM3N2Y1MTll
N2ZjMmE1Yy4uZDBlNjI1MjgyYTg0ZjRmMzVlZWRlZDE5NWVkYjhkYzg5N2IxYTU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU4LDcgKzU4
LDcgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAgICB2b2lkIHNldFByaXZhdGVQ
cm9wZXJ0eShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVy
dGllcykKLSAgICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTUHJpdmF0ZVByb3BlcnR5TWFwPigpOworICAgICAgICAgICAgbV9wcml2YXRlUHJvcGVydGll
cyA9IG1ha2VVbmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7CiAgICAgICAgIG1fcHJpdmF0
ZVByb3BlcnRpZXMtPnNldFByaXZhdGVQcm9wZXJ0eSh2bSwgb3duZXIsIHByb3BlcnR5TmFtZSwg
dmFsdWUpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggYWUzYTZmZTNhY2Y5YzZhODAzOTRl
MWQ3MzRmYTMxN2Q5MDhmYWUyYy4uOWNhM2I0YmY0MDg1MDc1MGI4YmM0MTk0OWY3NTA0MmIzNTcy
MzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50PiogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojphc0NhbGxiYWNrT2JqZWN0KEVu
Y28KIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpT
Q2FsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlND
bGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogICAgIDogUGFyZW50KGV4ZWMtPnZtKCksIHN0
cnVjdHVyZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlND
YWxsYmFja09iamVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVj
dERhdGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwganNDbGFzcykpCiB7
CiB9CiAKQEAgLTY3LDcgKzY3LDcgQEAgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxi
YWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmpl
Y3QoVk0mIHZtLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
IDogUGFyZW50KHZtLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShzdGQ6
Om1ha2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKKyAg
ICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09iamVjdERhdGE+
KG51bGxwdHIsIGpzQ2xhc3MpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Ns
YXNzUmVmLmNwcAppbmRleCBmMWM5ZDU3MDJhOGFhNjkwNDRkZmIyOTViNDcxZmNmY2JjODkwYjZi
Li43ZWVjMmE5MGE0NGY4NjBiYWEyMjc2Yjk2ZDQ1ZjJiZDY4NjE3MDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTU5LDIxICs1OSwyMSBAQCBPcGFxdWVK
U0NsYXNzOjpPcGFxdWVKU0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9u
LCBPcGFxdWVKU0NsYXNzKgogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogICAgIGlmIChj
b25zdCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZSA9IGRlZmluaXRpb24tPnN0YXRpY1ZhbHVl
cykgewotICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlND
bGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IG1ha2VV
bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAo
c3RhdGljVmFsdWUtPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBTdHJp
bmc6OmZyb21VVEY4KHN0YXRpY1ZhbHVlLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghdmFsdWVO
YW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVO
YW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1
ZS0+Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0
dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOworICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5z
ZXQodmFsdWVOYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNW
YWx1ZS0+Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUt
PmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOwogICAgICAgICAgICAgKytzdGF0aWNWYWx1ZTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIGlmIChjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNG
dW5jdGlvbiA9IGRlZmluaXRpb24tPnN0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBtX3N0YXRp
Y0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9u
c1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlxdWU8T3BhcXVl
SlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3RhdGljRnVu
Y3Rpb24tPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBTdHJpbmc6
OmZyb21VVEY4KHN0YXRpY0Z1bmN0aW9uLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghZnVuY3Rp
b25OYW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGljRnVuY3Rpb25zLT5zZXQo
ZnVuY3Rpb25OYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5
PihzdGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0aW9uLT5hdHRyaWJ1
dGVzKSk7CisgICAgICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5h
bWUuaW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9u
LT5jYWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKICAgICAgICAg
ICAgICsrc3RhdGljRnVuY3Rpb247CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjgsMjEgKzEyOCwy
MSBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShK
U0M6OlZNJiwgT3BhcXVlSlNDbGFzcyoganNDbAogICAgIDogbV9jbGFzcyhqc0NsYXNzKQogewog
ICAgIGlmIChqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcykgewotICAgICAgICBzdGF0aWNWYWx1ZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAg
ICAgICAgc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVz
VGFibGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmVuZCgpOwogICAgICAgICBm
b3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBq
c0NsYXNzLT5tX3N0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKICAgICAgICAgICAgIFN0cmluZyB2
YWx1ZU5hbWUgPSBpdC0+a2V5LT5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgICAgIHN0YXRpY1Zh
bHVlcy0+YWRkKHZhbHVlTmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljVmFsdWVF
bnRyeT4oaXQtPnZhbHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQt
PnZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAgICAgICAgIHN0YXRpY1ZhbHVl
cy0+YWRkKHZhbHVlTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQt
PnZhbHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5h
dHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChqc0Ns
YXNzLT5tX3N0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAg
ICAgc3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rp
b25zVGFibGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6
Y29uc3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMtPmVuZCgpOwog
ICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKLSAgICAg
ICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgpLCBzdGQ6
Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rp
b24sIGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOworICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25z
LT5hZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIG1ha2VVbmlxdWU8U3RhdGljRnVuY3Rpb25F
bnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzKSk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgT3BhcXVlSlNDbGFzc0Nv
bnRleHREYXRhJiBPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHRE
YXRhID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vcGFxdWVKU0NsYXNzRGF0YSgpLmFk
ZCh0aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFjb250ZXh0RGF0YSkK
LSAgICAgICAgY29udGV4dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CisgICAgICAgIGNvbnRleHREYXRhID0gbWFrZVVu
aXF1ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwogICAgIHJl
dHVybiAqY29udGV4dERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKaW5kZXggZDllZTY3NDAzNDlj
ZmVmZGZiY2MwZDMxMDk0ZjFmNGRlNWE1MmMxZS4uYmE0YTVhMTY2OTdhZjVmOGE5NzIyZTU3NDY5
ZTM5NGQ5NzkwNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01h
cmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBK
U0NvbnRleHRHcm91cEFkZE1hcmtpbmdDb25zdHJhaW50KEpTQ29udGV4dEdyb3VwUmVmIGdyb3Vw
LCBKU01hcmtpbmdDb25zdHIKICAgICAvLyBlbHNlIGdldHMgbWFya2VkLgogICAgIENvbnN0cmFp
bnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkgPSBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVkQnlN
YXJraW5nOwogICAgIAotICAgIGF1dG8gY29uc3RyYWludCA9IHN0ZDo6bWFrZV91bmlxdWU8U2lt
cGxlTWFya2luZ0NvbnN0cmFpbnQ+KAorICAgIGF1dG8gY29uc3RyYWludCA9IG1ha2VVbmlxdWU8
U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KAogICAgICAgICB0b0NTdHJpbmcoIkFtYyIsIGNvbnN0
cmFpbnRJbmRleCwgIigiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWlu
dENhbGxiYWNrKSksICIpIiksCiAgICAgICAgIHRvQ1N0cmluZygiQVBJIE1hcmtpbmcgQ29uc3Ry
YWludCAjIiwgY29uc3RyYWludEluZGV4LCAiICgiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oY29uc3RyYWludENhbGxiYWNrKSksICIsICIsIFJhd1BvaW50ZXIodXNlckRhdGEpLCAi
KSIpLAogICAgICAgICBbY29uc3RyYWludENhbGxiYWNrLCB1c2VyRGF0YV0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KaW5kZXggZDQ2OWI3NWEzMWYwZWZjYTlkMDdh
YmIwM2IwYmU2NjE2MWIzOTU2Ny4uNGI1OTkwNzNmZTc2YjQ4NjQ0MzY5OWFiZGNiMzRjNDE2NGJj
MmUzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYw
Niw3ICs2MDYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihK
U0dsb2JhbENvbnRleHRSZWYpY29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMg
dmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1
bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tO
U01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlv
bnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBdOwogCi0gICAgbV9jYWNoZWRKU1dyYXBwZXJzID0g
c3RkOjptYWtlX3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBK
U0M6OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7CisgICAgbV9jYWNoZWRKU1dyYXBw
ZXJzID0gbWFrZVVuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBK
U0M6OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7CiAKICAgICBBU1NFUlQoIXRvSlNH
bG9iYWxPYmplY3QoY29udGV4dCktPndyYXBwZXJNYXAoKSk7CiAgICAgdG9KU0dsb2JhbE9iamVj
dChjb250ZXh0KS0+c2V0V3JhcHBlck1hcChzZWxmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IGVlOTMyODIxZWY3NGJkNjg5
MWFlOGYyOWZhZDdiYmE1YWZlYTBjYmMuLjczY2I0MjcwNDM4MTgzMWU4MTlkOWQ5NDNlYjllNTQ0
MDMwOTZmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxi
YWNrRnVuY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJh
Y2tGdW5jdGlvbi5tbQpAQCAtMTk1LDE4ICsxOTUsMTggQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8
VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2Vy
PFQ+PigpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJl
c3VsdFR5cGUgdHlwZURvdWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZXN1bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrQXJndW1lbnRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDYWxsYmFja0FyZ3VtZW50Qm9vbGVhbj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0
VHlwZSB0eXBlVm9pZCgpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrQXJndW1lbnRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bGJhY2tBcmd1bWVudElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVP
ZkNsYXNzKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpCkBAIC0yMjgsMTkgKzIy
OCwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBp
ZiAoY2xzID09IFtKU1ZhbHVlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxiYWNrQXJndW1lbnRKU1ZhbHVlPigpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEpTVmFsdWU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0g
W05TU3RyaW5nIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrQXJndW1lbnROU1N0cmluZz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENhbGxiYWNrQXJndW1lbnROU1N0cmluZz4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNOdW1i
ZXIgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tB
cmd1bWVudE5TTnVtYmVyPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudE5TTnVtYmVyPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0RhdGUgY2xhc3Nd
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5T
RGF0ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRO
U0RhdGU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TQXJyYXkgY2xhc3NdKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsK
ICAgICAgICAgaWYgKGNscyA9PSBbTlNEaWN0aW9uYXJ5IGNsYXNzXSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEaWN0aW9uYXJ5
PigpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRP
ZkNsYXNzPihjbHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50
T2ZDbGFzcz4oY2xzKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2so
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChO
U0ludm9jYXRpb24gKmludm9jYXRpb24gPSB2YWx1ZVRvVHlwZUludm9jYXRpb25Gb3IoY29weSkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3Ry
dWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENh
bGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiB9OwpAQCAtMzM1LDQ1ICszMzUsNDUgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1l
cmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVy
aWM8VD4+KCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMg
UmVzdWx0VHlwZSB0eXBlRG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZXN1bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrUmVzdWx0Qm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tSZXN1bHRCb29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBl
IHR5cGVWb2lkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxi
YWNrUmVzdWx0Vm9pZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1
bHRWb2lkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
KikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0
SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
UmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVN0cnVjdChjb25zdCBjaGFy
KiBiZWdpbiwgY29uc3QgY2hhciogZW5kKQogICAgIHsKICAgICAgICAgU3RyaW5nUmFuZ2UgY29w
eShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IHR5
cGVUb1ZhbHVlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9u
LCBjb3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTY2Miw3ICs2
NjIsNyBAQCBzdGF0aWMgSlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JJbnZvY2F0
aW9uKEpTQ29udGV4dCAqY29udGV4dCwgTlNJbnZvYwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVj
ID0gdG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKICAgICBKU0M6OlZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKLSAgICBhdXRv
IGltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihp
bnZvY2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1v
dmUocmVzdWx0KSk7CisgICAgYXV0byBpbXBsID0gbWFrZVVuaXF1ZTxKU0M6Ok9iakNDYWxsYmFj
a0Z1bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgV1RGTW92ZShh
cmd1bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IGlt
cGwtPm5hbWUoKTsKICAgICByZXR1cm4gdG9SZWYoSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG5hbWUsIFdURk1vdmUoaW1w
bCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cAppbmRleCBlMDFlOTcwYzdmNTgwMzY1NjE4ZWYxZGFiODU1NDRkNzA0ZjliNDdhLi43OGQ3NjU1
ZmY4MDc3NjBkNDYwOGE2MTdlNTdjOTBmMTU0Mjc5OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGlj
IHZvaWQganNjQ29udGV4dFNldFZpcnR1YWxNYWNoaW5lKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdS
ZWZQdHI8SlNDVmlydHVhbE0KICAgICAgICAgICAgIHByaXYtPmpzQ29udGV4dCA9IEpTUmV0YWlu
UHRyPEpTR2xvYmFsQ29udGV4dFJlZj4oQWRvcHQsIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3Jv
dXAoanNjVmlydHVhbE1hY2hpbmVHZXRDb250ZXh0R3JvdXAocHJpdi0+dm0uZ2V0KCkpLCBudWxs
cHRyKSk7CiAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlNHbG9iYWxPYmplY3QocHJp
di0+anNDb250ZXh0LmdldCgpKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPndyYXBwZXJN
YXAoKSkKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0V3JhcHBlck1hcChzdGQ6Om1ha2Vf
dW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgpKSk7CisgICAgICAg
ICAgICBnbG9iYWxPYmplY3QtPnNldFdyYXBwZXJNYXAobWFrZVVuaXF1ZTxKU0M6OldyYXBwZXJN
YXA+KHByaXYtPmpzQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBqc2NWaXJ0dWFsTWFjaGluZUFk
ZENvbnRleHQocHJpdi0+dm0uZ2V0KCksIGNvbnRleHQpOwogICAgIH0gZWxzZSBpZiAocHJpdi0+
dm0pIHsKICAgICAgICAgQVNTRVJUKHByaXYtPmpzQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKaW5kZXggMTFiYjdjMGI4NzM3
ZGI2N2RkMTdkY2QyNGY3MDI5NDM0NDY5YTgwMy4uZjUyM2VhNDE5OWY4YWJkNzMyZjc3YjYyODE0
MTIwMTM0YmI4YmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ1dyYXBwZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NXcmFwcGVyTWFwLmNwcApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFdy
YXBwZXJNYXA6OldyYXBwZXJNYXAoSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCkKLSAgICA6
IG1fY2FjaGVkSlNXcmFwcGVycyhzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2lu
dGVyLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKKyAgICA6IG1fY2Fj
aGVkSlNXcmFwcGVycyhtYWtlVW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpT
T2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKaW5kZXggYTc1ZjU4ZGMxNDZiM2I2
NDk1Y2ViMTY3YWRmNGRhYmZmMDZiMGM4OS4uZGE0NzcwNTFmMzQ1ZTA3MTY4ZmM3ZDA2ZTBjN2Y1
MjYzMTE4NmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Q
cm9iZVN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2Jl
U3RhY2suY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgUGFnZSogU3RhY2s6OmVuc3VyZVBhZ2VGb3Io
dm9pZCogYWRkcmVzcykKICAgICBpZiAoTElLRUxZKGl0ICE9IG1fcGFnZXMuZW5kKCkpKQogICAg
ICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
PihiYXNlQWRkcmVzcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gbWFr
ZVVuaXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdl
cy5hZGQoYmFzZUFkZHJlc3MsIFdURk1vdmUocGFnZSkpOwogICAgICAgICBtX2xhc3RBY2Nlc3Nl
ZFBhZ2UgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMmM5YzNiMGRlODllYjNlMzgzZjRj
YmRjZjIxMmQyNjhjMWMxOWRiYS4uN2Y2ODU4NmMxYzAyODljMGEzMjUyMmZkZTllMDY3ZGYxZjQx
ZTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTEy
NDEsNyArMTI0MSw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgIHZvaWQgcHJpbnQoVmFsdWUq
IG9yaWdpbiwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgYXV0byBw
cmludExpc3QgPSBQcmludGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0KGFyZ3VtZW50cy4uLik7Ci0g
ICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwq
PihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihw
cmludExpc3QpKSk7CisgICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWly
OjpQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEFpcjo6UHJpbnRT
cGVjaWFsPihwcmludExpc3QpKSk7CiAgICAgICAgIEluc3QgaW5zdChBaXI6OlBhdGNoLCBvcmln
aW4sIEFyZzo6c3BlY2lhbChwcmludFNwZWNpYWwpKTsKICAgICAgICAgUHJpbnRlcjo6YXBwZW5k
QWlyQXJncyhpbnN0LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKICAg
ICAgICAgYXBwZW5kKFdURk1vdmUoaW5zdCkpOwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgY2xhc3Mg
TG93ZXJUb0FpciB7CiAgICAgewogICAgICAgICBpZiAoIWZpZWxkKSB7CiAgICAgICAgICAgICBm
aWVsZCA9IHN0YXRpY19jYXN0PFQqPigKLSAgICAgICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lh
bChzdGQ6Om1ha2VfdW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pKSk7CisgICAgICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxUPihz
dGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmaWVsZDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmNwcAppbmRleCBmZmNiMmQ0ZTI3MTQ0Mjk3MGU1NDY0MzY2NzBmN2YyOWRlYjFhYjFjLi4y
ZWNjZGFjMDQ5ZTY4ZDExM2UyM2Y5N2YyNDM1M2E1ZDRhYWEzYjk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CiBQcm9jZWR1cmU6OlByb2NlZHVyZSgpCiAgICAgOiBtX2NmZyhu
ZXcgQ0ZHKCp0aGlzKSkKICAgICAsIG1fbGFzdFBoYXNlTmFtZSgiaW5pdGlhbCIpCi0gICAgLCBt
X2J5cHJvZHVjdHMoc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQorICAgICwg
bV9ieXByb2R1Y3RzKG1ha2VVbmlxdWU8T3BhcXVlQnlwcm9kdWN0cz4oKSkKICAgICAsIG1fY29k
ZShuZXcgQWlyOjpDb2RlKCp0aGlzKSkKIHsKICAgICBtX2NvZGUtPnNldE51bUVudHJ5cG9pbnRz
KG1fbnVtRW50cnlwb2ludHMpOwpAQCAtMzExLDI4ICszMTEsMjggQEAgdm9pZCBQcm9jZWR1cmU6
OmRlbGV0ZU9ycGhhbnMoKQogRG9taW5hdG9ycyYgUHJvY2VkdXJlOjpkb21pbmF0b3JzKCkKIHsK
ICAgICBpZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fZG9taW5hdG9ycyA9IG1ha2VV
bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9kb21pbmF0b3JzOwogfQog
CiBOYXR1cmFsTG9vcHMmIFByb2NlZHVyZTo6bmF0dXJhbExvb3BzKCkKIHsKICAgICBpZiAoIW1f
bmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8
TmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fbmF0dXJhbExvb3BzID0gbWFrZVVuaXF1
ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOwogfQog
CiBCYWNrd2FyZHNDRkcmIFByb2NlZHVyZTo6YmFja3dhcmRzQ0ZHKCkKIHsKICAgICBpZiAoIW1f
YmFja3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFja3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1
ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQog
CiBCYWNrd2FyZHNEb21pbmF0b3JzJiBQcm9jZWR1cmU6OmJhY2t3YXJkc0RvbWluYXRvcnMoKQog
ewogICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0Rv
bWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsK
KyAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21p
bmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAK
QEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkKiBQcm9jZWR1cmU6OmFkZERhdGFTZWN0aW9uKHNpemVf
dCBzaXplKQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8RGF0YVNlY3Rpb24+KHNpemUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4g
ZGF0YVNlY3Rpb24gPSBtYWtlVW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKICAgICB2b2lkKiBy
ZXN1bHQgPSBkYXRhU2VjdGlvbi0+ZGF0YSgpOwogICAgIG1fYnlwcm9kdWN0cy0+YWRkKFdURk1v
dmUoZGF0YVNlY3Rpb24pKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ29kZS5jcHAKaW5kZXggMzNmOGFiZmVmYmMxZjhmOTE2NTQ1YTNiZGNhMTk2
YjBjYzY2YzM5OC4uZDVkNjljMzBhNTk5MTc1ZjI4MTQ4MzYyODYzNmZjYjc3MDY4MDE2NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCkBAIC0xNzksNyArMTc5LDcg
QEAgQ0NhbGxTcGVjaWFsKiBDb2RlOjpjQ2FsbFNwZWNpYWwoKQogewogICAgIGlmICghbV9jQ2Fs
bFNwZWNpYWwpIHsKICAgICAgICAgbV9jQ2FsbFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxDQ2FsbFNw
ZWNpYWwqPigKLSAgICAgICAgICAgIGFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbFNw
ZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIGFkZFNwZWNpYWwobWFrZVVuaXF1ZTxDQ2FsbFNwZWNp
YWw+KCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jQ2FsbFNwZWNpYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGYzNmI5YjJmZTY2ODE2
MGI4ODk5YjBjNTBiMzE5N2Q3NTg4MjRmODAuLjk1Y2FhMDA0ZDhlYjM5MjMzMGUxY2NiYjYzOWE1
Y2VlNzljYmM3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
R2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJh
dGUuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2Rl
JiBjb2RlKQogICAgICAgICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICAgICAgfQogCi0gICAgICAg
IGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2RlKTsKKyAgICAgICAgY29kZS5tX2dlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVS
ZWdpc3RlcnM+KGNvZGUpOwogICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lz
dGVycy0+cHJlcGFyZUZvckdlbmVyYXRpb24oKTsKIAogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAppbmRleCBlZjE1NDRjMDdiYjMyYTkwMzdm
MmNiNzFlMTVlNzRhOWJlNjFiZjk0Li4zZGNhMjk2Nzg4YjAwMTA2OGUwMWY0MjNlMTE2YzdjMmE0
ZTdkYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTkw
LDcgKzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gY29tcGlsZShCMzo6
UHJvY2VkdXJlJiBwcm9jKQogICAgIGdlbmVyYXRlKHByb2MuY29kZSgpLCBqaXQpOwogICAgIExp
bmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCMzo6Q29t
cGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRp
b25QdHJUYWcsICJ0ZXN0YWlyIGNvbXBpbGF0aW9uIiksIHByb2MucmVsZWFzZUJ5cHJvZHVjdHMo
KSk7CiB9CiAKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgdGVzdEludmFsaWRhdGVDYWNoZWRU
ZW1wUmVnaXN0ZXJzKCkKICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjpiaWdJ
bW0oYml0d2lzZV9jYXN0PGludHB0cl90PigmdGhpbmdzKSksIGJhc2UpOwogCiAgICAgQjM6OkJh
c2ljQmxvY2sqIHBhdGNoUG9pbnQxUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCMzo6QWly
OjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2Vf
dW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCog
cGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hw
b2ludFNwZWNpYWw+KCkpOwogCiAgICAgLy8gSW4gUGF0Y2hwb2ludCwgTG9hZCB0aGluZ3NbMF0g
LT4gdG1wLiBUaGlzIHdpbGwgbWF0ZXJpYWxpemUgdGhlIGFkZHJlc3MgaW4geDE3IChkYXRhTWVt
b3J5UmVnaXN0ZXIpLgogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQxID0gcGF0
Y2hQb2ludDFSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZv
aWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0xOTMwLDcgKzE5MzAsNyBAQCB2b2lkIHRlc3RBcmd1bWVu
dFJlZ1Bpbm5lZCgpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsK
ICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBw
YXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQ
YXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNw
ZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAg
ICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6
OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0xOTYy
LDcgKzE5NjIsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDIoKQogICAgIEdQUlJlZyBw
aW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5u
ZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFk
ZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAg
IEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1h
a2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2Nr
KiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIz
OjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgdm9pZCB0ZXN0QXJn
dW1lbnRSZWdQaW5uZWQzKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRH
UFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNp
YWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8
QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBv
aW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3Bl
Y2lhbD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygp
OwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5l
dzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCAxNTVjYTRhYjQ3MGIwMTQ0MmFkOTU0M2E4YWUx
ZmMxZmM1OWY3ZTNhLi4xYzdhZDBmOTRlMDZiOGMzMWJmZTdjYzk0ZDA1NTJjNDc3OTYwN2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC0xODksNyArMTg5LDcgQEAgZXh0ZXJuIExv
Y2sgY3Jhc2hMb2NrOwogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY29tcGls
ZVByb2MoUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsID0gT3B0aW9uczo6
ZGVmYXVsdEIzT3B0TGV2ZWwoKSkKIHsKICAgICBwcm9jZWR1cmUuc2V0T3B0TGV2ZWwob3B0TGV2
ZWwpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGls
ZShwcm9jZWR1cmUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21waWxhdGlvbj4oQjM6OmNv
bXBpbGUocHJvY2VkdXJlKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAppbmRleCBjMTA4NTlhY2VkM2RiNzhiNjY0OTc2YTA4YjhlNWI0OGQ2NTJiMmYzLi43N2Zi
NjVkYTBiN2EwNmM3ZDY1OGJhYmRiNGU1MTA4YTc5MTdlZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC04NTMsNyArODUzLDcgQEAgdm9p
ZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgICAgIHN0YXRlLnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcihzcGlsbFN0
YXRlKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFjY2Vzcy5jYWxsTGlua0luZm8o
KSk7Ci0gICAgICAgICAgICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxMaW5rSW5mbz4oKTsKKyAgICAgICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IG1h
a2VVbmlxdWU8Q2FsbExpbmtJbmZvPigpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2Ug
Z2VuZXJhdGVkIGEgcG9seW1vcnBoaWMgY2FsbCBzdHViIHRoYXQganVtcGVkIGJhY2sgdG8gdGhl
IGdldHRlcgogICAgICAgICAgICAgLy8gc3R1Yiwgd2hpY2ggdGhlbiBqdW1wZWQgYmFjayB0byB0
aGUgbWFpbiBjb2RlLCB0aGVuIHdlJ2QgaGF2ZSBhIHJlYWNoYWJpbGl0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFt
cy5jcHAKaW5kZXggMmJkOWZlNjUxOTlkMDdmMTczZTM4MzBkYzc0ZTQ2N2ViOWQ1NDFmYy4uOTI1
N2ZjMjI2NjUyOWY4NjEzN2Q1ZGFkOGM5MjQ5NzE4MzkwNDc0MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMu
Y3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFy
Z3VtZW50cyA6IHB1YmxpYyBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6U2xvd1AKICAgICB2b2lk
IEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVy
czo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0
aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAog
ICAgIHsgXAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvID0gaml0LmxhYmVsKCk7IFwK
LSAgICAgICAgbV9nZW5lcmF0b3JzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNsb3dQYXRoQ2Fs
bEdlbmVyYXRvcldpdGhBcmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9u
VHlwZSwgUmVzdWx0VHlwZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1
bHQsIGFyZ3MpKTsgXAorICAgICAgICBtX2dlbmVyYXRvcnMuYXBwZW5kKG1ha2VVbmlxdWU8U2xv
d1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBP
cGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRp
b24sIHJlc3VsdCwgYXJncykpOyBcCiAgICAgfSBcCiAKIFNOSVBQRVRfU0xPV19QQVRIX0NBTExT
KEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCAzM2JiMGMwNjYzNTM4
MWU4OThmNjVhODc0ZjFmMzZhOGM5NDgyM2FmLi4xMGM2NWJiOWRkNzA5YTlhZjdhYmE2Y2ViOGE5
YjczNTk3NzE2NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNjUsMTUgKzY1LDE1IEBAIHZvaWQgQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvblN0cmVhbSYKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nr
cy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsg
Mik7CiAKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxv
Y2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7Ci0gICAgYXV0byBmaXJzdEJsb2Nr
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9j
azo6RW50cnlCbG9jayk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZmlyc3RC
bG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6
OkVudHJ5QmxvY2spOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0
KCkpOwogCiAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogY3VycmVudCA9IGZpcnN0QmxvY2suZ2V0KCk7CiAgICAgYXBwZW5kQmxvY2soV1RG
TW92ZShmaXJzdEJsb2NrKSk7CiAKLSAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOworICAgIGF1
dG8gZXhpdCA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxv
Y2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFs
c2U7CiAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBi
b29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwogICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRl
Y29kZSBpcyBhIGp1bXAgdGFyZ2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJh
c2ljIGJsb2NrLgogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0
cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7Ci0gICAgICAg
ICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+
KGluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBtYWtlVW5pcXVlPEJ5
dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgY3VycmVudCA9IG5l
d0Jsb2NrLmdldCgpOwogICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykp
OwogICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDhkYWMxNTg1ZmFiMmI5OThj
MWU1ZDg4NzUyYmExMmRmNmRhZGJkZS4uMzkzZjE4MjRlNDFhNGJlYjUxNGM2MmE2OTZmMzNhODM3
MjQ5NWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFr
KFZNJiB2bSkKIAogdm9pZCBDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3Qg
Q2FsbEZyYW1lU2h1ZmZsZURhdGEmIHNodWZmbGVEYXRhKQogewotICAgIG1fZnJhbWVTaHVmZmxl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRh
KTsKKyAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVE
YXRhPihzaHVmZmxlRGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBlZjFjYWJmYTcxOGIwODBk
N2YzZTg2MzdmOWY5NGY2MDU4NmVlNGU4Li4zOWEyM2I0YzdmNDdkOGZjZTVlMzBlZWNhNTUwZTc3
ZGFkMzE1ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJ
bmxpbmVDYWNoZXMoKQogQ29kZUJsb2NrOjpKSVREYXRhJiBDb2RlQmxvY2s6OmVuc3VyZUpJVERh
dGFTbG93KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiB7CiAgICAgQVNTRVJUKCFtX2ppdERh
dGEpOwotICAgIG1faml0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGF0YT4oKTsKKyAgICBt
X2ppdERhdGEgPSBtYWtlVW5pcXVlPEpJVERhdGE+KCk7CiAgICAgcmV0dXJuICptX2ppdERhdGE7
CiB9CiAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6cmFyZUNhc2VQ
cm9maWxlQ291bnRGb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrCiB2b2lk
IENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCBjYWxsZWVTYXZl
UmVnaXN0ZXJzKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAg
ICBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CisgICAg
ZW5zdXJlSklURGF0YShsb2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8
UmVnaXN0ZXJBdE9mZnNldExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOwogfQogCiB2b2lkIENv
ZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJB
dE9mZnNldExpc3Q+IHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQpAQCAtMTc5MCw3ICsxNzkwLDcgQEAg
dm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVP
ZmZzZXRTbG93KGNvbnN0IE9wQ2F0Y2gKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhcmFt
ZXRlcnMoKTsgKytpKQogICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpKTsKIAotICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAg
IGF1dG8gcHJvZmlsZXMgPSBtYWtlVW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+
KGxpdmVPcGVyYW5kcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5tX3Np
emUgPT0gbGl2ZU9wZXJhbmRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyLmdldCgp
W2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA4NzA2OGJhNjVkZDg1YzIzZmJlNGE0
OTBlOTc0YTcyODFmMjU2MDRjLi4zMTQzOGUwYWM1MDY5YjI3NDk2OTg4ODZhYjExMjAwNzZiY2I3
M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC05
NDMsNyArOTQzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9p
ZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJl
RGF0YSkgewotICAgICAgICAgICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFy
ZURhdGE+KCk7CisgICAgICAgICAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0
YT4oKTsKICAgICAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIG1fY2F0Y2hQcm9m
aWxlcyBjYW4gYmUgdG91Y2hlZCBmcm9tIGNvbXBpbGVyIHRocmVhZHMuCiAgICAgICAgICAgICBt
X3JhcmVEYXRhID0gV1RGTW92ZShyYXJlRGF0YSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4IDJkOTQzMWNm
MGIxNDRmYTNhMmMyMjFhNjZlOTQwNzBjNzc1MGUwZTAuLmIxYTAxZmZhNGQ5MzQ4ZmVjYjI0Yzk2
ODhiYzgwMDUyZjkzODg2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIEV4aXRQcm9maWxl
OjphZGQoQ29kZUJsb2NrKiBvd25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAg
ICAvLyBJZiB3ZSd2ZSBuZXZlciBzZWVuIGFueSBmcmVxdWVudCBleGl0cyB0aGVuIGNyZWF0ZSB0
aGUgbGlzdCBhbmQgcHV0IHRoaXMgc2l0ZQogICAgIC8vIGludG8gaXQuCiAgICAgaWYgKCFwcm9m
aWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMpIHsKLSAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50RXhp
dFNpdGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7Cisg
ICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZy
ZXF1ZW50RXhpdFNpdGU+PigpOwogICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMt
PmFwcGVuZChzaXRlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrLmNwcAppbmRleCA0ZjQ4YTFkNmM5ODcyMmU1YWMyZWNlODdlNTA0MDIzMmY5YTVk
NmIxLi40ZmIxMTU3MzAwM2I1MmVmZDlhODY2ZmIzYmRmNzc1MDk4Y2VmYWFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZShDb2RlQmxvY2sqLCBDb2RlQmxv
Y2sqLAogVmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4mIERlZmVycmVkQ29tcGlsYXRpb25DYWxs
YmFjazo6ZW5zdXJlRGVmZXJyZWRTb3VyY2VEdW1wKCkKIHsKICAgICBpZiAoIW1fZGVmZXJyZWRT
b3VyY2VEdW1wKQotICAgICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4+KCk7CisgICAgICAgIG1fZGVmZXJyZWRTb3Vy
Y2VEdW1wID0gbWFrZVVuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPj4oKTsKICAgICBy
ZXR1cm4gKm1fZGVmZXJyZWRTb3VyY2VEdW1wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggZGI5YWQxNjBhYzI4MTMwZjM5
ODQxZmYzYmZlYjMyYjY4M2RkZWFkNi4uZGY0ZDc3Y2UzZjYzYjUyMDA3NTU0NGM0MWExNmNiMjMx
ZDdkZmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNl
IEFjY2Vzc0Nhc2U6OkdldHRlcjogewotICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAg
ICAgIGNhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gYWNjZXNzLmFz
PEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZvKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICpjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9y
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKmNh
bGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAppbmRleCBmYzFmNDYwZGU5NjU0MWQ4ZmEw
OTljYmI0NWYyMzA5YzJhMzMzODBmLi5lZDhkNDkzZjdlZTZmMWRhMmI5MDlhZDU3YzYyNzcxODEz
YzJkNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
VmFyaWFudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgR2V0QnlJZFZhcmlhbnQmIEdldEJ5SWRWYXJp
YW50OjpvcGVyYXRvcj0oY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQogICAgIG1fY3VzdG9t
QWNjZXNzb3JHZXR0ZXIgPSBvdGhlci5tX2N1c3RvbUFjY2Vzc29yR2V0dGVyOwogICAgIG1fZG9t
QXR0cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1dGU7CiAgICAgaWYgKG90aGVyLm1fY2FsbExp
bmtTdGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExp
bmtTdGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0
YXR1cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAg
ICByZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAppbmRleCAwOTI5ZDZmYjQxMjY3NGVk
N2YyMDQwNDVmYjQyNWViN2QzOGQzYzkzLi42ZWViMTQ1YjMzNzk2NjJhZjFjMTUwMDE5MDc2NzI3
YTM5ZWUyYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUqIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRl
cjo6YWRkKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5k
VmFsdWVQcm9maWxlS2V5JiBrZXkpCiB7CiAgICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7Cisg
ICAgICAgIG1fZGF0YSA9IG1ha2VVbmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+
KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEt
PnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobV9kYXRhLT5hdChpKS5rZXkoKSA9PSBr
ZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3Rv
QWNjZXNzQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9B
Y2Nlc3NDaGFpbi5oCmluZGV4IGI0OWU0ZTI0MmU1MmYwODEzMTVlNDhmYjFlMWJjYzI5N2U1Mjhh
ZTAuLmExZWNiOTRkZDBkMTg2NzA4NjM1MmY1MmI1YjU4YzMxOTNlZWNmZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5o
CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY2xvbmUoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsK
ICAgICB9CiAKICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9jaGFpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMjJmNDU1ODE0Yjg0YWY0ZmU3NGNhZjIzNDAx
ZDMwYWRhZGFlNWM2ZS4uM2IzMDIzMzlmMDM1MGRhYzQyOGYzZjA0Y2M3MzUyYTNhZTUyMWI4MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5
bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklU
U3R1YlJvdXRpbmUoY29kZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywg
Y29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2Vw
dGlvbkhhbmRsaW5nKTsKICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBv
aW50cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAg
IG1fd2Vha1JlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxXcml0ZUJhcnJpZXI8
SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgbV93ZWFr
UmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RG
TW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0lu
dGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29k
ZSgpLCAiXG4iKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcAppbmRleCBjMmQ5NTMyMGNlYmQ1NmRiZGM5M2VlYmQ2YzMxNDBhN2Rm
N2NjMjA5Li5kNjQyYmNjZmU3OTc2NmM1Mjc5YmJjODEwODcwMWViN2Y4NTgyNGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC0y
MDIsNyArMjAyLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1
YkluZm8oCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxl
eEdldFN0YXR1czo6SW5saW5lYWJsZTogewogICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzID0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0
dGVyQWNjZXNzQ2FzZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgKmNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZv
LCBjYWxsRXhpdFNpdGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuY3BwCmluZGV4IDVkNmIyOTA0NWNhNjc1YzU2ZmE3MWQ1NDc1YTEx
NWIyZGY2ZjNjNWUuLjcyYzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZlNjM2MmY3MmU2YzBhMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNw
cApAQCAtNDYsNyArNDYsNyBAQCBQdXRCeUlkVmFyaWFudCYgUHV0QnlJZFZhcmlhbnQ6Om9wZXJh
dG9yPShjb25zdCBQdXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jb25kaXRpb25TZXQgPSBv
dGhlci5tX2NvbmRpdGlvblNldDsKICAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zmc2V0OwogICAg
IGlmIChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMp
OworICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4o
Km90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9jYWxsTGlua1N0
YXR1cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IDk2ZDIyZWNmYTBh
NGM3NTZlZGZmNjFmMDAxM2Y3MjU4ZTdkM2ZiZDUuLjUzZjIwOGJjYWRlZDNkZWEyZGVlMThhMGU4
OTYwNWM0OTBhMTk1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVjb3JkZWRTdGF0dXNl
czo6UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAKIENhbGxMaW5r
U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgc3RhdHVzKQogewotICAgIGF1
dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsK
KyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7
CiAgICAgQ2FsbExpbmtTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBjYWxs
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUzLDcgKzUzLDcgQEAgQ2FsbExpbmtTdGF0dXMqIFJl
Y29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4KIAogR2V0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1
cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0
dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdldEJ5SWRTdGF0
dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEdldEJ5SWRTdGF0
dXM+KHN0YXR1cyk7CiAgICAgR2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgp
OwogICAgIGdldHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02MSw3ICs2MSw3IEBAIEdldEJ5SWRT
dGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdp
biYgY29kZU9yaWdpbiwKICAgICAKIFB1dEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFk
ZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgUHV0QnlJ
ZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxQdXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1
ZTxQdXRCeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIFB1dEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0
YXR1c1B0ci5nZXQoKTsKICAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2lu
LCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjksNyArNjks
NyBAQCBQdXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNv
bnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sCiAKIEluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0
dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0
IEluQnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtl
VW5pcXVlPEluQnlJZFN0YXR1cz4oc3RhdHVzKTsKICAgICBJbkJ5SWRTdGF0dXMqIHJlc3VsdCA9
IHN0YXR1c1B0ci5nZXQoKTsKICAgICBpbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmln
aW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggMzBhMWYwNTUyNTllM2RlZDFhNzE2OGVlMzUy
NmY3MmMwODRiZWU1YS4uZmNjMjkxMTgwMjQ0ZTBiMzIyOWUyZmQ3NjMwMDdiZTc5YTg3NDFjZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBT
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KiBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1
YkluZm86OmVuc3VyZVJlZmVyZW5jZQogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSkKIHsKICAgICBpZiAoIWhvbGRlclJl
ZikKLSAgICAgICAgaG9sZGVyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxXYXRjaHBvaW50c09uU3Ry
dWN0dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBob2xkZXJSZWYg
PSBtYWtlVW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJsb2NrLCBz
dHViSW5mbyk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fY29kZUJs
b2NrID09IGNvZGVCbG9jayk7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fc3R1YkluZm8g
PT0gc3R1YkluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNzIyMmQ0ODJhZDFlNWUyODZjZWY1OWQ0ZmYxZTFm
NWViMDcxMDc4ZC4uNDkxOTVkMTU3MjFkMmNkYTRmNzQ4YWU4ZGJlMmFmMDA5YTI4YTdhMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1
cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvbHlt
b3JwaGljQWNjZXNzPigpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGlj
QWNjZXNzPiBhY2Nlc3MgPSBtYWtlVW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAy
PiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggZTAwNmQxNmI5YjhhMGZj
MzBmMDQzM2NkZTYwMmVjYzNiMTY4ZDQyZS4uMmM5YTBiMzAxZWIwOThlMTE1ZWYxZTM2YjEyN2Jl
MjllM2FiZGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzJiBVbmxpbmtlZENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coQ29kZUJs
b2NrKiBjb2QKICAgICAgICAgaWYgKCFtX2xpdmVuZXNzKSB7CiAgICAgICAgICAgICAvLyBUaGVy
ZSBpcyBhIGNoYW5jZSB0d28gY29tcGlsZXIgdGhyZWFkcyByYWNlZCB0byB0aGUgc2xvdyBwYXRo
LgogICAgICAgICAgICAgLy8gR3JhYmJpbmcgdGhlIGxvY2sgYWJvdmUgZGVmZW5kcyBhZ2FpbnN0
IGNvbXB1dGluZyBsaXZlbmVzcyB0d2ljZS4KLSAgICAgICAgICAgIG1fbGl2ZW5lc3MgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKKyAgICAg
ICAgICAgIG1fbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4o
Y29kZUJsb2NrKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNDM3MDk1MTllYjYx
NmUyNjUxMDZlZjFkNTUyOTYxN2Q2NDVjOWJjOS4uNTEyNTM2YzBkNDQ4NTdhNGNhNzZlODEzZmUx
NDgwM2E5NzNmZmE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQwMiw3ICs0MDIsNyBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRh
KSB7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKCpoZWFwKCks
IGNlbGxMb2NrKCkpOwotICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0
YT4oKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXgg
ZmJlYzlmNzJjYTJmZDFhMThiYWNiMDczZTY4NzI1NGI3MGI5ZWJlMS4uNDlkOWQyZmQzZTZmZTlm
YjRiNTI3ZjY3N2FiZDViZDRhNTEyMjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBA
IC0yNzUsNyArMjc1LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2Rl
Q2FjaGVkQ29kZUJsb2NrcyhWTSYgdm0pCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFy
ZURhdGEmIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQog
ewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8UmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+
KCk7CiAgICAgcmV0dXJuICptX3JhcmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTk3Njg2
YWEzZWRjZGQ4ZDNmOWI1N2M0YTZkMTIzYmFjOWNiMzk4Ny4uMTc4YTYxZGY2OTEzM2FmZGNjMTI3
MjhjYmZkOTZlYjM5ZjQyYWViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDAxLDcgKzQwMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogCiAgICAgICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAg
ICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVy
YXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVu
dmlyb25tZW50KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5p
cXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVH
ZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBi
eXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IGJjZDcyZWEwOWY1ZjcxN2E2NWY2NWQ3
ZDJlZmMxNzVlMDIzZTY5OTAuLmViYWJiNTlkNDM1OWE5ZTM2NGYyY2EzYWY2YWZkMGVmZDAzOTBi
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00NCw2
ICs0NCw3IEBAIGNsYXNzIFZNOwogdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwogCiBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgRGVidWdnZXIoVk0mKTsKICAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCmluZGV4IGYyMGEzNTdlY2I3M2FhN2VmZTRjYjEwN2QxY2NiN2U5
ZGM5MDAzMzkuLjI3NjU2OTI2YThkMjlkMjdlYmVlYWE5ZmZkY2EyMDNjYzI1ZmEwZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTU4LDcgKzU4LDcgQEAgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OkFic3RyYWN0SW50ZXJwcmV0ZXIoR3JhcGgmIGdyYXBoLCBBYnN0cmEK
ICAgICAsIG1fc3RhdGUoc3RhdGUpCiB7CiAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkK
LSAgICAgICAgbV9waGlDaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGhpQ2hpbGRyZW4+KG1f
Z3JhcGgpOworICAgICAgICBtX3BoaUNoaWxkcmVuID0gbWFrZVVuaXF1ZTxQaGlDaGlsZHJlbj4o
bV9ncmFwaCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAzMmEyYzkwNDlmZWQ2ZjgyYzZh
YmE0MDc2NzY2YmY0MjliMTM5MzgzLi4wODc0ZWE3MWNiZGViN2M2MWZlNWEwOGUwNTUyYjBiMzdi
NGIxMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtNzQsNyAr
NzQsNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9wbGFuKHBs
YW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKCkpCiAgICAgLCBtX3Byb2Zp
bGVkQmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX3NzYUNGRyhzdGQ6
Om1ha2VfdW5pcXVlPFNTQUNGRz4oKnRoaXMpKQorICAgICwgbV9zc2FDRkcobWFrZVVuaXF1ZTxT
U0FDRkc+KCp0aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhw
b2ludFN0YXRlKEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25T
dGF0ZShIYXZlTm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtODYsOCArODYsOCBAQCBHcmFwaDo6
R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgIAogICAgIG1faGFzRGVidWdnZXJFbmFibGVk
ID0gbV9wcm9maWxlZEJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwg
T3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwogICAgIAotICAgIG1f
aW5kZXhpbmdDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7Ci0g
ICAgbV9hYnN0cmFjdFZhbHVlc0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93TWFwPEFic3Ry
YWN0VmFsdWU+PigqdGhpcyk7CisgICAgbV9pbmRleGluZ0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93
SW5kZXhpbmc+KCp0aGlzKTsKKyAgICBtX2Fic3RyYWN0VmFsdWVzQ2FjaGUgPSBtYWtlVW5pcXVl
PEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0aGlzKTsKIAogICAgIHJlZ2lzdGVyU3RydWN0dXJl
KHZtLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSk7CiAgICAgdGhpcy0+c3RyaW5nU3RydWN0dXJl
ID0gcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKQEAgLTEwODAs
NyArMTA4MCw3IEBAIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBHcmFwaDo6bGl2ZW5lc3NGb3IoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUxpdmVuZXNzLmVu
ZCgpKQogICAgICAgICByZXR1cm4gKml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1
bGxCeXRlY29kZUxpdmVuZXNzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVM
aXZlbmVzcz4gbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVuZXNzPigpOwog
ICAgIGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVGdWxsTGl2ZW5lc3MoY29k
ZUJsb2NrLCAqbGl2ZW5lc3MpOwogICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQgPSAq
bGl2ZW5lc3M7CiAgICAgbV9ieXRlY29kZUxpdmVuZXNzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUo
bGl2ZW5lc3MpKTsKQEAgLTEwOTgsNyArMTA5OCw3IEBAIEJ5dGVjb2RlS2lsbHMmIEdyYXBoOjpr
aWxsc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2Rl
S2lsbHMuZW5kKCkpCiAgICAgICAgIHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUtpbGxzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBraWxscyA9
IG1ha2VVbmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5h
bHlzaXMoKS5jb21wdXRlS2lsbHMoY29kZUJsb2NrLCAqa2lsbHMpOwogICAgIEJ5dGVjb2RlS2ls
bHMmIHJlc3VsdCA9ICpraWxsczsKICAgICBtX2J5dGVjb2RlS2lsbHMuYWRkKGNvZGVCbG9jaywg
V1RGTW92ZShraWxscykpOwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgQ1BTQ0ZHJiBHcmFwaDo6ZW5z
dXJlQ1BTQ0ZHKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lz
SW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fY3BzQ0ZHKQotICAgICAgICBtX2Nwc0NGRyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fY3BzQ0ZHID0gbWFr
ZVVuaXF1ZTxDUFNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzQ0ZHOwogfQogCkBAIC0x
NTQ0LDcgKzE1NDQsNyBAQCBDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9y
cygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29u
dmVyc2lvbik7CiAgICAgaWYgKCFtX2Nwc0RvbWluYXRvcnMpCi0gICAgICAgIG1fY3BzRG9taW5h
dG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBt
X2Nwc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICBy
ZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKIH0KIApAQCAtMTU1Miw3ICsxNTUyLDcgQEAgU1NBRG9t
aW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX3Nz
YURvbWluYXRvcnMpCi0gICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8
U1NBRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBtYWtlVW5p
cXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsK
IH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJl
Q1BTTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFt
X2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgaWYg
KCFtX2Nwc05hdHVyYWxMb29wcykKLSAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX2Nwc05hdHVyYWxM
b29wcyA9IG1ha2VVbmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X2Nwc05hdHVyYWxMb29wczsKIH0KIApAQCAtMTU3MCw3ICsxNTcwLDcgQEAgU1NBTmF0dXJhbExv
b3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVCht
X2Zvcm0gPT0gU1NBKTsKICAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFtX3Nz
YU5hdHVyYWxMb29wcykKLSAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9
IG1ha2VVbmlxdWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3NzYU5h
dHVyYWxMb29wczsKIH0KIApAQCAtMTU3OSw3ICsxNTc5LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFw
aDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKCkKICAgICAvLyBXZSBjb3VsZCBlYXNpbHkgcmVsYXggdGhp
cyBpbiB0aGUgZnV0dXJlIHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0b2RheSwgaXQncyBvbmx5IHVz
ZWQgaW4gU1NBLgogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAKICAgICBpZiAo
IW1fYmFja3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlx
dWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVu
aXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwog
fQogCkBAIC0xNTg3LDcgKzE1ODcsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5z
dXJlQmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dh
cmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRo
aXMpOworICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJk
c0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsK
IH0KIApAQCAtMTU5NSw3ICsxNTk1LDcgQEAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdy
YXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5
c2lzKQotICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOworICAgICAgICBtX2NvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbWFrZVVuaXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRl
eCA2MzkwNDNlOWUyN2ZiZTBlMGI5MmFiNDZhNjY5YmUxNDEwNTAzMzcwLi5mMmI2NjQwMmUzYWQw
ZTcyZGZjZTA1YjY1YWYzZmM5MjZkMDA5ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCBKSVRDb21waWxlcjo6SklU
Q29tcGlsZXIoR3JhcGgmIGRmZykKICAgICAsIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKGRm
Zy5tX3ZtKQogewogICAgIGlmIChVTkxJS0VMWShzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBt
X2dyYXBoLm1fdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyKSkKLSAgICAgICAgbV9kaXNhc3NlbWJs
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKKyAgICAgICAgbV9kaXNh
c3NlbWJsZXIgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKICNpZiBFTkFCTEUoRlRM
X0pJVCkKICAgICBtX2ppdENvZGUtPnRpZXJVcEluTG9vcEhpZXJhcmNoeSA9IFdURk1vdmUobV9n
cmFwaC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkpOwogICAgIGZvciAodW5zaWduZWQg
dGllclVwQnl0ZWNvZGUgOiBtX2dyYXBoLm1fcGxhbi50aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2Rl
cygpKQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIuZGlkQnVpbGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9y
aWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNU
b0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOworICAgICAgICBtX2NvZGVCbG9j
ay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RG
TW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsKIH0KIAogc3Rh
dGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDb21waWxlciYgaml0LCBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QmIHN0YWNrT3ZlcmZsb3cpCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNv
bXBpbGVFbnRyeSgpOwotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1
bGF0aXZlSklUPigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3Vs
YXRpdmVKSVQ+KCp0aGlzKTsKIAogICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50
IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFjay4KICAgICBKdW1wTGlzdCBzdGFja092
ZXJmbG93OwpAQCAtNDAyLDkgKzQwMiw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQog
ICAgIG1fc3BlY3VsYXRpdmUtPmNyZWF0ZU9TUkVudHJpZXMoKTsKICAgICBzZXRFbmRPZkNvZGUo
KTsKIAotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4o
KnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIGF1dG8gbGlu
a0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0
ZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5p
cXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKKyAgICAgICAgbV9ncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1f
cGxhbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNDE2LDcgKzQxNiw3IEBA
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZm
ZXIpOwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8
SklURmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1
ZTxKSVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlcikpKTsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgY29tcGlsZUVudHJ5
RXhlY3V0aW9uRmxhZygpOwogCiAgICAgLy8gPT09IEZ1bmN0aW9uIGJvZHkgY29kZSBnZW5lcmF0
aW9uID09PQotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZl
SklUPigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVK
SVQ+KCp0aGlzKTsKICAgICBjb21waWxlQm9keSgpOwogICAgIHNldEVuZE9mTWFpblBhdGgoKTsK
IApAQCAtNTA3LDkgKzUwNyw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigp
CiAgICAgc2V0RW5kT2ZDb2RlKCk7CiAKICAgICAvLyA9PT0gTGluayA9PT0KLSAgICBhdXRvIGxp
bmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5p
cXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWls
KTsKICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBt
X2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6
ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXpl
cihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBsaW5rKCpsaW5rQnVmZmVyKTsKQEAgLTUyNSw3ICs1MjUsNyBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9j
YXRpb25PZjxKU0VudHJ5UHRyVGFnPihhcml0eUNoZWNrKTsKIAotICAgIG1fZ3JhcGgubV9wbGFu
LnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFw
aC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAg
bV9ncmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtC
dWZmZXIpLCB3aXRoQXJpdHlDaGVjaykpOwogfQogCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCog
SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGUqIG5vZGUpCiAgICAgICAg
IHJldHVybiBpdC0+c2Vjb25kOwogCiAgICAgaWYgKCFtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRz
KQotICAgICAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxC
YWc8ZG91YmxlPj4oKTsKKyAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IG1ha2VV
bmlxdWU8QmFnPGRvdWJsZT4+KCk7CiAKICAgICBkb3VibGUqIGFkZHJlc3NJbkNvbnN0YW50UG9v
bCA9IG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMtPmFkZCgpOwogICAgICphZGRyZXNzSW5Db25z
dGFudFBvb2wgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAppbmRleCBiYjgwMDI3NGRkY2I2MzAzNDc4Mzcz
N2UzOGFkMWU2MWU5YzVlYTA0Li5hOTQ0MDQ3NDU5MjUyMTg0NWJhMzE4ODM3YjEzYjlmNGEzMTdl
ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5h
bHlzaXNQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVz
c0FuYWx5c2lzUGhhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIExpdmVuZXNzQW5hbHlz
aXNQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICwgbV9saXZlQXRUYWlsKG1fZ3JhcGgp
CiAgICAgewogICAgICAgICBtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+cmVjb21wdXRlKCk7Ci0g
ICAgICAgIG1fd29ya3NldCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya3NldD4obV9ncmFwaC5tX2lu
ZGV4aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CisgICAgICAgIG1fd29ya3NldCA9IG1ha2VVbmlx
dWU8V29ya3NldD4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CiAgICAg
fQogCiAgICAgYm9vbCBydW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5k
ZXggNGRiY2VlOGE2YmIyZGMzOGRmYzUwNWRiY2FiNmUzOWZjMGUyNzZmMi4uMDc4MzBlZDJmNWU4
MTY2NDg4YjkxYWRjNTJhNzE5MmRiMjhjMTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46
OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAgIGlmIChtX21vZGUgPT0gRlRMRm9yT1NSRW50cnlN
b2RlKSB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGVyZm9ybU9TUkVudHJ5cG9pbnRDcmVhdGlv
bihkZmcpOwogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgbV9maW5hbGl6ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAgICAgICAg
bV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAg
ICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIFJVTl9QSEFTRShwZXJm
b3JtQ1BTUmV0aHJlYWRpbmcpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIFBsYW46OkNvbXBpbGF0aW9u
UGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBjYXNlIEZUTEZvck9TUkVudHJ5
TW9kZTogewogI2lmIEVOQUJMRShGVExfSklUKQogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxl
KGRmZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBt
X2ZpbmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAg
ICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NzcsNyArNDc3
LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQog
ICAgICAgICBSVU5fUEhBU0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6OkNhbm5vdENvbXBpbGUp
IHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5h
bGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNp
b25QaGFzZS5jcHAKaW5kZXggODcxNTk1YjFmZjI1OWJlZTQ0YzcxY2UwM2Q3ZDhlOGJkNjQzNjUz
Ny4uNTM0ZDY0YjUzOGZhMTgwYWY0OGU4OWQ0ZjgyNjAyZmI0NWM5MjFjZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApAQCAt
NDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIFNTQUNvbnZlcnNpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRUYWlsLmNsZWFyKCk7CiAgICAgICAgICAg
ICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVz
QXRIZWFkLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1
ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CisgICAgICAgICAgICBibG9jay0+c3NhID0g
bWFrZVVuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KIAogICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnRyeXBvaW50SW5kZXhUb0FyZ3VtZW50c0Jsb2NrKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgK
aW5kZXggN2NmNDI1MjFhNjIxMTc4ZmY4NTEyYWZmOWZmZmEzMjUyMDAyMjRkNi4uY2RjZGFhNjBk
ODk4YTNiNjZkN2IyOThmNjY4MThjNzlkYzQ4Yzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTkzLDcgKzE5Myw3IEBAIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAg
ICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
IHJlcXVpcmVtZW50LAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1l
bnRzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVu
dHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBB
cmd1bWVudHMuLi4+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1l
bnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwg
QXJndW1lbnRzLi4uPj4oCiAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwg
cmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBEZXN0aW5hdGlvblR5cGUs
IHR5cGVuYW1lIFNvdXJjZVR5cGUsIHVuc2lnCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRp
dmVKSVQqIGppdCwgU291cmNlVHlwZSBzb3VyY2VbbnVtYmVyT2ZBc3NpZ25tZW50c10sIERlc3Rp
bmF0aW9uVHlwZSBkZXN0aW5hdGlvbltudW1iZXJPZkFzc2lnbm1lbnRzXSkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwg
RGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERl
c3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgbnVtYmVyT2ZBc3NpZ25tZW50cz4+KAogICAgICAg
ICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCkBAIC0yNDksNyArMjQ5LDcg
QEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3Zl
KAogewogICAgIFNvdXJjZVR5cGUgc291cmNlQXJyYXlbMV0gPSB7IHNvdXJjZSB9OwogICAgIERl
c3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlvbkFycmF5WzFdID0geyBkZXN0aW5hdGlvbiB9OwotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBU
eXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDE+PigKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBl
LCBTb3VyY2VUeXBlLCAxPj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwg
c291cmNlQXJyYXkpOwogfQogCkBAIC0yNTksNyArMjU5LDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVl
X3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJjZVR5cGUg
c291cmNlQXJyYXlbMl0gPSB7IHNvdXJjZTEsIHNvdXJjZTIgfTsKICAgICBEZXN0aW5hdGlvblR5
cGUgZGVzdGluYXRpb25BcnJheVsyXSA9IHsgZGVzdGluYXRpb24xLCBkZXN0aW5hdGlvbjIgfTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxK
dW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAyPj4oCisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9u
VHlwZSwgU291cmNlVHlwZSwgMj4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJy
YXksIHNvdXJjZUFycmF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAyYWJjZGIzZmQ1Zjk3MGYzZmJiOTBkM2IwZjZlM2Nk
OWQ0MGZjZTM3Li4wMzlhNDZhNzU4NjEwNDhjODVmMDMyODJhMjZmZWFmYjdlZjliZTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
MTQxLDcgKzE0MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVj
dChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiAgICAgLy8gSSB3YW50IGEg
c2xvdyBwYXRoIHRoYXQgYWxzbyBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRo
YXQncwogICAgIC8vIHdoYXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhH
ZW5lcmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBsb3QKICAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkg
c21hbGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4o
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3
UmF3T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwgdmVj
dG9yTGVuZ3RoKSk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjph
cnJheWlmeShOb2RlKiBub2RlLCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQog
ICAgICAgICBzbG93UGF0aC5hcHBlbmQoanVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1w
R1BSLCBub2RlLT5hcnJheU1vZGUoKSkpOwogICAgIH0KICAgICAKLSAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAorICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRv
cj4oCiAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywg
dGVtcEdQUiwgc3RydWN0dXJlR1BSKSk7CiAgICAgCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9k
ZSk7CkBAIC0yMjQyLDEwICsyMjQyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRCeVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb3Rv
dHlwZUNoYWluSXNTYW5lKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1Bh
dGhHZW5lcmF0b3I+KAorICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1
ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAg
b3V0T2ZCb3VuZHMsIHRoaXMsIEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpLCBiYXNlUmVnLCBwcm9w
ZXJ0eVJlZykpOwogI2Vsc2UKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6
bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxT
bG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIEpT
VmFsdWVSZWdzKHJlc3VsdFRhZ1JlZywgc2NyYXRjaFJlZyksCiAgICAgICAgICAgICAgICAgYmFz
ZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbmRpZgpAQCAtNzYxOSw3ICs3NjE5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKiBub2RlKQog
ICAgICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1
bWVudHMsIHJlc3VsdEdQUiwgc3RydWN0dXJlLAogICAgICAgICAgICAgICAgIGtub3duTGVuZ3Ro
LCBtaW5DYXBhY2l0eSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gZ2VuZXJhdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0
b3I+KAorICAgICAgICBhdXRvIGdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Q2FsbENyZWF0ZURpcmVj
dEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlz
LCByZXN1bHRHUFIsIHN0cnVjdHVyZSwgbGVuZ3RoR1BSLCBtaW5DYXBhY2l0eSk7CiAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoZ2VuZXJhdG9yKSk7CiAgICAgfQpAQCAtODQz
OSw3ICs4NDM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1Bh
dGhHZW5lcmF0b3I+KAorICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENh
bGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRo
R2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJy
YXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRH
UFIpKTsKICAgICB9CiAKQEAgLTkxMzUsNyArOTEzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRTdHJ1Y3R1cmVDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgY2VsbEdQUiwgR1BSUmVnIHRl
bXBHCiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFI7CiAgICAgICAgIAogICAgICAgICBpZiAo
dGVtcEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUg
PSBtYWtlVW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmVH
UFIgPSBzdHJ1Y3R1cmUtPmdwcigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN0cnVj
dHVyZUdQUiA9IHRlbXBHUFI7CkBAIC0xMzE3Niw3ICsxMzE3Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjCiAKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCi0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JX
aXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRo
R2VuZXJhdG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdp
dGhTaXplLCByZXN1bHRHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwKICAgICAgICAgc2hvdWxkQ29u
dmVydExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlID8gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVjdHVyZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKaW5kZXggZmEzOTZmNGYxOTJhOGJiNGFlZjk5ZDAzNzE5MjRhMmEzOGM2NDVlOC4u
YmE2MTI4ZWZlOWJiMzY4ZmUzYjA2NjIzYjUxZWUzZWVhZDNjNGZkMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKQEAgLTk1LDggKzk1LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIFBoYXNlTW9kZTo6R2xvYmFsOiB7CiAg
ICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09
IFNTQSk7CiAKLSAgICAgICAgICAgIG1fc3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluUGxhY2VB
YnN0cmFjdFN0YXRlPihtX2dyYXBoKTsKLSAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFic3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+Piht
X2dyYXBoLCAqbV9zdGF0ZSk7CisgICAgICAgICAgICBtX3N0YXRlID0gbWFrZVVuaXF1ZTxJblBs
YWNlQWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7CisgICAgICAgICAgICBtX2ludGVycHJldGVyID0g
bWFrZVVuaXF1ZTxBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9n
cmFwaCwgKm1fc3RhdGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2lzQ29udmVyZ2Vk
ID0gZmFsc2U7CiAgICAgICAgICAgICAKQEAgLTEwNyw4ICsxMDcsOCBAQCBjbGFzcyBTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyB0b3dh
cmRzIGJlbGlldmluZyB0aGF0IGFsbCBub2RlcyBuZWVkIGJhcnJpZXJzLiAiTmVlZGluZyBhIGJh
cnJpZXIiIGlzIGxpa2UKICAgICAgICAgICAgIC8vIHNheWluZyB0aGF0IHRoZSBub2RlIGlzIGlu
IGEgcGFzdCBlcG9jaC4gIk5vdCBuZWVkaW5nIGEgYmFycmllciIgaXMgbGlrZSBzYXlpbmcKICAg
ICAgICAgICAgIC8vIHRoYXQgdGhlIG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgZXBvY2guCi0gICAg
ICAgICAgICBtX3N0YXRlQXRIZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja01hcDxIYXNoU2V0
PE5vZGUqPj4+KG1fZ3JhcGgpOwotICAgICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAgICAgICAg
IG1fc3RhdGVBdEhlYWQgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9n
cmFwaCk7CisgICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxI
YXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCbG9j
a0xpc3QgcG9zdE9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblBvc3RPcmRlcigpOwogICAgICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IGU2YzIy
MjFlZTMwMTU0NGM3MmE5Y2U4MzVmOTgwZmYzNmYwMjRiN2QuLjhmOTMwMzRiMGM2ZjkwYmE2NmY0
YmY1YzUzYmUxYjRmMGZiYTc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29y
a2xpc3QuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgV29ya2xpc3Q6OlRocmVhZEJvZHkg
OiBwdWJsaWMgQXV0b21hdGljVGhyZWFkIHsKICAgICAgICAgaWYgKG1fcmVsYXRpdmVQcmlvcml0
eSkKICAgICAgICAgICAgIFRocmVhZDo6Y3VycmVudCgpLmNoYW5nZVByaW9yaXR5KG1fcmVsYXRp
dmVQcmlvcml0eSk7CiAgICAgICAgIAotICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7CisgICAgICAgIG1fY29tcGlsYXRpb25T
Y29wZSA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb25TY29wZT4oKTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKQEAg
LTIxNCw3ICsyMTQsNyBAQCB2b2lkIFdvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1bnNpZ25lZCBu
dW1iZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5KQogCiB2b2lkIFdvcmtsaXN0Ojpj
cmVhdGVOZXdUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgaW50IHJlbGF0aXZl
UHJpb3JpdHkpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRocmVhZERhdGE+KHRoaXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJl
YWREYXRhPiBkYXRhID0gbWFrZVVuaXF1ZTxUaHJlYWREYXRhPih0aGlzKTsKICAgICBkYXRhLT5t
X3RocmVhZCA9IGFkb3B0UmVmKG5ldyBUaHJlYWRCb2R5KGxvY2tlciwgKnRoaXMsICpkYXRhLCBt
X2xvY2ssIG1fcGxhbkVucXVldWVkLmNvcHlSZWYoKSwgcmVsYXRpdmVQcmlvcml0eSkpOwogICAg
IG1fdGhyZWFkcy5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggMTliMTE1Yzlm
ZGQ2N2NiYzhhZTEwOWM2NDQ1NzQyOGJhM2FkZmE1My4uMDBiZGE2NTcyNzljZjdhOTlkYmFiMTQ5
YjA5YzcwM2Q2OGIzNWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fz
c2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNh
c3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIEFzeW5jaHJvbm91
c0Rpc2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHZvaWQgZGlzYXNzZW1i
bGVBc3luY2hyb25vdXNseSgKICAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVSZWYsIHNpemVfdCBzaXpl
LCBjb25zdCBjaGFyKiBwcmVmaXgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5
VGFzaz4gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBtYWtlVW5pcXVlPERpc2Fzc2Vt
Ymx5VGFzaz4oKTsKICAgICB0YXNrLT5oZWFkZXIgPSBzdHJkdXAoaGVhZGVyLmRhdGEoKSk7IC8v
IFl1Y2shIFdlIG5lZWQgdGhpcyBiZWNhdXNlIENTdHJpbmcgZG9lcyByYWN5IHJlZmNvdW50aW5n
LgogICAgIHRhc2stPmNvZGVSZWYgPSBjb2RlUmVmOwogICAgIHRhc2stPnNpemUgPSBzaXplOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDkw
YWUyZjRmZTA2YTE1MmNhZTU3ODVlMmMwM2M5OTliNjgzMmJjMWIuLmVjODBlYTY3YjI1NmY4OTE4
ZDQ4ODNhOGM1MmI4ZjM3OTU4M2FiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcC5jcHAKQEAgLTE1NywxMSArMTU3LDExIEBAIGNvbnN0IEFic3RyYWN0
SGVhcCYgSW5kZXhlZEFic3RyYWN0SGVhcDo6YXRTbG93KHB0cmRpZmZfdCBpbmRleCkKICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPj0gbV9zbWFsbEluZGljZXMuc2l6ZSgp
KTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoIW1fbGFyZ2VJbmRpY2VzKSkKLSAgICAgICAgbV9s
YXJnZUluZGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcFR5cGU+KCk7CisgICAgICAgIG1fbGFy
Z2VJbmRpY2VzID0gbWFrZVVuaXF1ZTxNYXBUeXBlPigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEFic3RyYWN0SGVhcD4mIGZpZWxkID0gbV9sYXJnZUluZGljZXMtPmFkZChpbmRleCwgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZmllbGQpIHsKLSAgICAgICAgZmllbGQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFic3RyYWN0SGVhcD4oKTsKKyAgICAgICAgZmllbGQgPSBtYWtlVW5p
cXVlPEFic3RyYWN0SGVhcD4oKTsKICAgICAgICAgaW5pdGlhbGl6ZSgqZmllbGQsIGluZGV4KTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGls
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDVk
MDRiNzJmMDQ4MzFkMDYzMDIzMDRkMWViN2U0OTI5ZDQ4MDQyN2YuLjQ2MzVjYzk2ZjkxMDkxZjcz
ZjA4ZDFmNzUyYjA0N2QxMDUzYmZiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBT
YWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFZNJiB2bSA9IGdyYXBoLm1f
dm07CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCi0gICAgICAgIHN0YXRlLnBy
b2MtPmNvZGUoKS5zZXREaXNhc3NlbWJsZXIoc3RkOjptYWtlX3VuaXF1ZTxCMzo6QWlyOjpEaXNh
c3NlbWJsZXI+KCkpOworICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVy
KG1ha2VVbmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAogICAgIHsKICAgICAgICAg
R3JhcGhTYWZlcG9pbnQgc2FmZXBvaW50KHN0YXRlLmdyYXBoLCBzYWZlcG9pbnRSZXN1bHQpOwpA
QCAtNzgsNyArNzgsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJl
c3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rlck9mZnNldHMgPQotICAgICAg
ICBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5jYWxs
ZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CisgICAgICAgIG1ha2VVbmlxdWU8UmVnaXN0
ZXJBdE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlz
dCgpKTsKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2co
IlVud2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVFR5
cGU6OkZUTEpJVCksICI6ICIsICpyZWdpc3Rlck9mZnNldHMsICJcbiIpOwogICAgIGNvZGVCbG9j
ay0+c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhXVEZNb3ZlKHJlZ2lzdGVyT2Zmc2V0cykpOwpAQCAt
MTQyLDcgKzE0Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVz
dWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7CiAg
ICAgICAgIH0pOwogCi0gICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25D
YW5GYWlsKTsKKyAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBtYWtlVW5p
cXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwog
CiAgICAgaWYgKHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxs
b2NhdGUoKSkgewogICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKQEAgLTE1
MSw3ICsxNTEsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3Vs
dCYgc2FmZXBvaW50UmVzdWx0KQogICAgIAogICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1h
cCA9IHN0YXRlLnByb2MtPnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7CiAgICAgaWYgKHZtLnNob3Vs
ZEJ1aWxkZXJQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKSkKLSAgICAgICAgY29kZUJsb2NrLT5zZXRQ
Q1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5h
bGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29k
ZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1h
cEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29k
ZUxpbmtCdWZmZXIpKTsKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IGxh
YmVsID0gc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50
cnlQdHJUYWc+KHN0YXRlLnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSk7CiAgICAgc3RhdGUuZ2Vu
ZXJhdGVkRnVuY3Rpb24gPSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMRmFpbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3Bw
CmluZGV4IDE2NTMzNTA5Y2QwYjQ4MmM3NGJjYTY3MzE4NzYzZjJlMGYwOWRkZjEuLmMzZjkzMzky
ZjI2ZTZmYzk1ZjljMmNjNTkyOWVkMzRjNmJjMzBjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExGYWlsLmNwcApAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogCiB2
b2lkIGZhaWwoU3RhdGUmIHN0YXRlKQogewotICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5h
bGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxh
bikpOworICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAwODU0MDU2
ZWM3ZDE2MmIxMWNkYzIxY2Q3OGZlMTUxN2Y3YWNmM2ViLi45NWRiNjk2MWU4ZTkwNzcwY2Q2ZTU1
NjczMDIyYjQ0NzYzYjU4MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAK
QEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAg
aml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBl
bmQoaml0Lmp1bXAoKSk7CiAKLSAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwor
ICAgICAgICAgICAgbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICBpZiAobGlua0J1ZmZl
ci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICAgICAgICAgIHN0YXRlLmFsbG9jYXRp
b25GYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEs
NyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRy
ZXNzKCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVt
cCgpOwogICAgICAgICAKLSAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlu
a0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAg
IGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxs
b2NhdGUoKSkgewogICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggYWYxYmE0YmY5MGE4ZmQwYmEyNTAyYzY0N2UyYzE3MTQxMjJkZTdk
NC4uMDliMzQyNzNjYmI3Y2FiNDRjZDg2M2U5OWIyODU5MGU4N2M5NGIxMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTUwODAsNyArMTUw
ODAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5rQnVmZmVyLmxpbmsoZ2VuZXJhdG9ySnVtcCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2bS0+Z2V0
Q1RJU3R1YihsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gc3Rk
OjptYWtlX3VuaXF1ZTxMYXp5U2xvd1BhdGg+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IG1ha2VV
bmlxdWU8TGF6eVNsb3dQYXRoPigpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gbGlua2VkUGF0Y2hhYmxlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0
clRhZz4obGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZUp1
bXApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCA2NTNlYzZm
Njk2MDQ5Yjc1MmFjMjRhNzc5MzEwZDRhZDk3YmIwM2RiLi40YTQ4NGZhNmQ0NjQzMGQ3MWU1NzAw
OGJmMWU5OWY2YzI1Yjg0ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNw
cApAQCAtNjAsMTAgKzYwLDEwIEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtl
X3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOworICAgIGdyYXBoLm1fcGxhbi5z
ZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOwogICAg
IGZpbmFsaXplciA9IHN0YXRpY19jYXN0PEpJVEZpbmFsaXplcio+KGdyYXBoLm1fcGxhbi5maW5h
bGl6ZXIoKSk7CiAKLSAgICBwcm9jID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZWR1cmU+KCk7Cisg
ICAgcHJvYyA9IG1ha2VVbmlxdWU8UHJvY2VkdXJlPigpOwogCiAgICAgcHJvYy0+c2V0T3JpZ2lu
UHJpbnRlcigKICAgICAgICAgW10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2lu
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNw
YWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3Bw
CmluZGV4IDIyZDdmZDY1ZDVhMTc1NWI1YjJkM2I3OGRkYTU1YzBkMDA3ZTFjY2IuLjAyMWIwY2Ri
OWRmYWMxOGIzNjg2NDI4YTk4MjNmMjgxMTBiYjc5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEFsbG9j
YXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAg
ICAgICBkYXRhTG9nKCJDcmVhdGluZyBCbG9ja0RpcmVjdG9yeS9Mb2NhbEFsbG9jYXRvciBmb3Ig
IiwgbV9uYW1lLCAiLCAiLCBhdHRyaWJ1dGVzKCksICIsICIsIHNpemVDbGFzcywgIi5cbiIpOwog
ICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVlRGlyZWN0b3J5
ID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFw
KCksIHNpemVDbGFzcyk7CisgICAgICAgIG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3Bh
Y2UuaGVhcCgpLCBzaXplQ2xhc3MpOwogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSB1
bmlxdWVEaXJlY3RvcnkuZ2V0KCk7CiAgICAgbV9kaXJlY3Rvcmllcy5hcHBlbmQoV1RGTW92ZSh1
bmlxdWVEaXJlY3RvcnkpKTsKICAgICAKQEAgLTg4LDcgKzg4LDcgQEAgQWxsb2NhdG9yIENvbXBs
ZXRlU3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgbV9zcGFjZS5h
ZGRCbG9ja0RpcmVjdG9yeShsb2NrZXIsIGRpcmVjdG9yeSk7CiAgICAgCiAgICAgc3RkOjp1bmlx
dWVfcHRyPExvY2FsQWxsb2NhdG9yPiB1bmlxdWVMb2NhbEFsbG9jYXRvciA9Ci0gICAgICAgIHN0
ZDo6bWFrZV91bmlxdWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CisgICAgICAgIG1ha2VV
bmlxdWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CiAgICAgTG9jYWxBbGxvY2F0b3IqIGxv
Y2FsQWxsb2NhdG9yID0gdW5pcXVlTG9jYWxBbGxvY2F0b3IuZ2V0KCk7CiAgICAgbV9sb2NhbEFs
bG9jYXRvcnMuYXBwZW5kKFdURk1vdmUodW5pcXVlTG9jYWxBbGxvY2F0b3IpKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggYTAxYjVhMmI0YWVmZDNlNTI5Njk3N2E1
YzgzODQwNDJlNWEyOTU2YS4uOTcxOTllMTg2ZGU3MmQ3NzI3OTczNWM5ZDNjOTk0MGM4NWM0OGFm
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTI4OSwxNSArMjg5LDE1IEBA
IEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4RWRlblNp
emUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9tYXhIZWFwU2l6ZShtX21pbkJ5dGVzUGVy
Q3ljbGUpCiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCi0gICAgLCBtX21hY2hpbmVUaHJlYWRz
KHN0ZDo6bWFrZV91bmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCi0gICAgLCBtX2NvbGxlY3RvclNs
b3RWaXNpdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiQyIpKQotICAg
ICwgbV9tdXRhdG9yU2xvdFZpc2l0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRo
aXMsICJNIikpCi0gICAgLCBtX211dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJr
U3RhY2tBcnJheT4oKSkKLSAgICAsIG1fcmFjZU1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1h
cmtTdGFja0FycmF5PigpKQotICAgICwgbV9jb25zdHJhaW50U2V0KHN0ZDo6bWFrZV91bmlxdWU8
TWFya2luZ0NvbnN0cmFpbnRTZXQ+KCp0aGlzKSkKKyAgICAsIG1fbWFjaGluZVRocmVhZHMobWFr
ZVVuaXF1ZTxNYWNoaW5lVGhyZWFkcz4oKSkKKyAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3Io
bWFrZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCisgICAgLCBtX211dGF0b3JTbG90
VmlzaXRvcihtYWtlVW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKKyAgICAsIG1fbXV0
YXRvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9yYWNl
TWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX2NvbnN0cmFp
bnRTZXQobWFrZVVuaXF1ZTxNYXJraW5nQ29uc3RyYWludFNldD4oKnRoaXMpKQogICAgICwgbV9o
YW5kbGVTZXQodm0pCi0gICAgLCBtX2NvZGVCbG9ja3Moc3RkOjptYWtlX3VuaXF1ZTxDb2RlQmxv
Y2tTZXQ+KCkpCi0gICAgLCBtX2ppdFN0dWJSb3V0aW5lcyhzdGQ6Om1ha2VfdW5pcXVlPEpJVFN0
dWJSb3V0aW5lU2V0PigpKQorICAgICwgbV9jb2RlQmxvY2tzKG1ha2VVbmlxdWU8Q29kZUJsb2Nr
U2V0PigpKQorICAgICwgbV9qaXRTdHViUm91dGluZXMobWFrZVVuaXF1ZTxKSVRTdHViUm91dGlu
ZVNldD4oKSkKICAgICAsIG1fdm0odm0pCiAgICAgLy8gV2Ugc2VlZCB3aXRoIDEwbXMgc28gdGhh
dCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNuJ3QgY29udGludW91c2x5IAog
ICAgIC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlv
bi4KQEAgLTMwNSw4ICszMDUsOCBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5
Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKCpuZXcgSW5j
cmVtZW50YWxTd2VlcGVyKHRoaXMpKSkKICAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRv
cHRSZWYoKm5ldyBTdG9wSWZOZWNlc3NhcnlUaW1lcih2bSkpKQotICAgICwgbV9zaGFyZWRDb2xs
ZWN0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAs
IG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5
PigpKQorICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3Rh
Y2tBcnJheT4oKSkKKyAgICAsIG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1h
cmtTdGFja0FycmF5PigpKQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkp
CiAgICAgLCBtX3RocmVhZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fdGhyZWFk
Q29uZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCkBAIC0zMTQsNyAr
MzE0LDcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG1fd29y
bGRTdGF0ZS5zdG9yZSgwKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIG51bWJlck9mUGFy
YWxsZWxUaHJlYWRzID0gaGVhcEhlbHBlclBvb2woKS5udW1iZXJPZlRocmVhZHMoKTsgaSA8IG51
bWJlck9mUGFyYWxsZWxUaHJlYWRzOyArK2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3RWaXNpdG9yPiB2aXNpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMs
IHRvQ1N0cmluZygiUCIsIGkgKyAxKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90Vmlz
aXRvcj4gdmlzaXRvciA9IG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmco
IlAiLCBpICsgMSkpOwogICAgICAgICBpZiAoT3B0aW9uczo6b3B0aW1pemVQYXJhbGxlbFNsb3RW
aXNpdG9yc0ZvclN0b3BwZWRNdXRhdG9yKCkpCiAgICAgICAgICAgICB2aXNpdG9yLT5vcHRpbWl6
ZUZvclN0b3BwZWRNdXRhdG9yKCk7CiAgICAgICAgIG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90Vmlz
aXRvcnMuYXBwZW5kKHZpc2l0b3IuZ2V0KCkpOwpAQCAtMzIzLDE3ICszMjMsMTcgQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIAogICAgIGlmIChPcHRpb25zOjp1
c2VDb25jdXJyZW50R0MoKSkgewogICAgICAgICBpZiAoT3B0aW9uczo6dXNlU3RvY2hhc3RpY011
dGF0b3JTY2hlZHVsZXIoKSkKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAg
ICAgICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9y
U2NoZWR1bGVyPigqdGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc2NoZWR1bGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7Cisg
ICAgICAgICAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVk
dWxlcj4oKnRoaXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHNpbXVsYXRlIHR1cm5p
bmcgb2ZmIGNvbmN1cnJlbnQgR0MgYnkgbWFraW5nIHRoZSBzY2hlZHVsZXIgc2F5IHRoYXQgdGhl
IHdvcmxkCiAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgYmUgc3RvcHBlZCB3aGVuIHRoZSBjb2xs
ZWN0b3IgaXMgcnVubmluZy4KLSAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKKyAgICAgICAgbV9z
Y2hlZHVsZXIgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVk
dWxlcj4oKTsKICAgICB9CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmlmeUhlYXAoKSkKLSAg
ICAgICAgbV92ZXJpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBP
cHRpb25zOjpudW1iZXJPZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24oKSk7CisgICAg
ICAgIG1fdmVyaWZpZXIgPSBtYWtlVW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6
bnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uKCkpOwogICAgIAogICAgIG1f
Y29sbGVjdG9yU2xvdFZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11dGF0b3IoKTsKIApAQCAt
ODk5LDcgKzg5OSw3IEBAIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmplY3RDb3VudCgpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3Vu
dHMoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291
bnRTZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIGZvckVhY2hQ
cm90ZWN0ZWRDZWxsKAogICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgewogICAgICAgICAgICAg
cmVjb3JkVHlwZSgqdm0oKSwgKnJlc3VsdCwgY2VsbCk7CkBAIC05MDksNyArOTA5LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50
cygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVDb3Vu
dHMoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291
bnRTZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIEhlYXBJdGVy
YXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFjZS5mb3JF
YWNoTGl2ZUNlbGwoCiAgICAgICAgIGl0ZXJhdGlvblNjb3BlLApAQCAtMjg1Niw3ICsyODU2LDcg
QEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICB9LAogICAgICAgICBD
b25zdHJhaW50Vm9sYXRpbGl0eTo6U2VsZG9tR3JleWVkKTsKICAgICAKLSAgICBtX2NvbnN0cmFp
bnRTZXQtPmFkZChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50Pigq
dGhpcykpOworICAgIG1fY29uc3RyYWludFNldC0+YWRkKG1ha2VVbmlxdWU8TWFya1N0YWNrTWVy
Z2luZ0NvbnN0cmFpbnQ+KCp0aGlzKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWRkTWFya2luZ0NvbnN0
cmFpbnQoc3RkOjp1bmlxdWVfcHRyPE1hcmtpbmdDb25zdHJhaW50PiBjb25zdHJhaW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5kZXggNWI2OWNkNWUzNWY2MmI1
MDY2M2E5Y2JkYzczOTRkMWJkNjdhZDFkOC4uZTFlYjZjNzgzM2Q0ODU4NzFhOWM1MzNjZmQ0NzMx
Yzc1ZjliMTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBA
IC0yMTcsNyArMjE3LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0
aEFuZEdDSWZOZWVkZWQoKQogaW5saW5lIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYg
SGVhcDo6bWFya0xpc3RTZXQoKQogewogICAgIGlmICghbV9tYXJrTGlzdFNldCkKLSAgICAgICAg
bV9tYXJrTGlzdFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1
ZmZlcio+PigpOworICAgICAgICBtX21hcmtMaXN0U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PE1h
cmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWls
ZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
Y3BwCmluZGV4IDViOWFjODlkYWJmMDRhMDYxNGRjMTBmYmJhZjE2YzBmNGE0OTlmN2UuLjJkMmJj
OGZiOWIyN2ZlOWY5YjFiNWJlNTRjYjc1MWY4M2UwZDNkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHZvaWQgSGVhcFNuYXBzaG90QnVpbGRlcjo6YnVpbGRTbmFwc2hvdCgpCiAKICAgICBQcmV2
ZW50Q29sbGVjdGlvblNjb3BlIHByZXZlbnRDb2xsZWN0aW9uU2NvcGUobV9wcm9maWxlci52bSgp
LmhlYXApOwogCi0gICAgbV9zbmFwc2hvdCA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFNuYXBzaG90
PihtX3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKKyAgICBtX3NuYXBzaG90ID0gbWFr
ZVVuaXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIubW9zdFJlY2VudFNuYXBzaG90KCkpOwog
ICAgIHsKICAgICAgICAgbV9wcm9maWxlci5zZXRBY3RpdmVTbmFwc2hvdEJ1aWxkZXIodGhpcyk7
CiAgICAgICAgIG1fcHJvZmlsZXIudm0oKS5oZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlv
blNjb3BlOjpGdWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAK
aW5kZXggYjhlNDMwMTkxZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOS4uN2MyZWQyNDAy
ZmQ3MzAxZmMwOTlhOGRmYjVkM2MzMzZhZWFkMTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgTkVWRVJfSU5MSU5FIEJpdG1h
cDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6ZV90
IGJsb2MKICAgICBhdXRvJiBiaXRzUHRyUmVmID0gbV9iaXRzW2Jsb2NrSW5kZXhdOwogICAgIGF1
dG8qIGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgIGlmICghYml0cykgewotICAgICAgICBi
aXRzUHRyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVy
QmxvY2s+PigpOworICAgICAgICBiaXRzUHRyUmVmID0gbWFrZVVuaXF1ZTxCaXRtYXA8TWFya2Vk
QmxvY2s6OmF0b21zUGVyQmxvY2s+PigpOwogICAgICAgICBiaXRzID0gYml0c1B0clJlZi5nZXQo
KTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICAgICAgbV9ibG9ja3NXaXRo
Qml0c1tibG9ja0luZGV4XSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZS5jcHAKaW5kZXggZDUxMDAwZWJhODdmMzFkZTQ4MWJlZDA4YTVmMmZlZDhhNjM5ZmY5
OS4uY2QzZTdlNTYxNTQ1NjZkY2Y4YzE1MTYzYTE1YjcyZjI3NjhmMjkzMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcApAQCAtMzksNyArMzksNyBAQCBJc29T
dWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5
cGUqIGhlYXBDZWxsVHlwZSwgcwogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2RpcmVjdG9y
eSgmaGVhcCwgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4o
c2l6ZSkpCiAgICAgLCBtX2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9yeSkKLSAgICAsIG1faXNv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPElzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3I+KCkpCisgICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1
ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQogewogICAgIGluaXRpYWxpemUoaGVhcENl
bGxUeXBlLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKaW5kZXgg
YjNhYmQyYzUyMjRmY2UzZTVjZTEyYzRmMTYzZWQ0ODIzZGFlNjk4ZS4uMTc4MGMwOGE0NzBmMjc2
MjMxNjM3ZWY2ODExN2M5YTRlMzJjMWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lk
IE1hcmtpbmdDb25zdHJhaW50U2V0OjpkaWRTdGFydE1hcmtpbmcoKQogCiB2b2lkIE1hcmtpbmdD
b25zdHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwg
OjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJik+IGZ1bmN0aW9uLCBDb25zdHJhaW50Vm9sYXRp
bGl0eSB2b2xhdGlsaXR5LCBDb25zdHJhaW50Q29uY3VycmVuY3kgY29uY3VycmVuY3ksIENvbnN0
cmFpbnRQYXJhbGxlbGlzbSBwYXJhbGxlbGlzbSkKIHsKLSAgICBhZGQoc3RkOjptYWtlX3VuaXF1
ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5hbWUpLCBXVEZN
b3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSwgY29uY3VycmVuY3ksIHBh
cmFsbGVsaXNtKSk7CisgICAgYWRkKG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+
KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlv
biksIHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOwogfQogCiB2b2lkIE1h
cmtpbmdDb25zdHJhaW50U2V0OjphZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKaW5k
ZXggODJiZTNiYmI0NGNiNmM1Nzc2YjhlY2Y3ZmEwYzk0MGQ1ZDVhNTgyNS4uNTNhOTFhMjNjMWQ4
OTI5MThlZTQyOTQxYTY1ZjUyNzg2N2Q0MzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6
bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzcwogCiAgICAgU3Ry
aW5nIG1lc3NhZ2U7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVz
c2FnZSk7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtl
X3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYykpOworICAgIG1fY29uc29s
ZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFy
Z3VtZW50cyksIGV4ZWMpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6
OmNvdW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGl0
bGUgPT0gdGl0bGUpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRv
IHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgIFN0cmluZyB3
YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0
cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3Rz
Iik7Ci0gICAgICAgICAgICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUo
c3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQ
SSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykp
OworICAgICAgICAgICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOSw3ICsx
MTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bAogCiAgICAgLy8gRklYTUU6IFNlbmQgYW4g
ZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICBTdHJpbmcgd2Fybmlu
ZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VTdHJpbmco
IlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgbV9jb25zb2xl
QWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsIHdhcm5pbmcpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnN0
YXJ0Q29uc29sZVByb2ZpbGUoKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVu
dHM+JiYpCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6d2FyblVuaW1wbGVtZW50
ZWQoY29uc3QgU3RyaW5nJiBtZXRob2QpCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtZXRob2Qg
KyAiIGlzIGN1cnJlbnRseSBpZ25vcmVkIGluIEphdmFTY3JpcHQgY29udGV4dCBpbnNwZWN0aW9u
LiI7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKSk7CisgICAgbV9jb25zb2xl
QWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCBtZXNzYWdlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZGE1MmVmZDEzYzQ5MWNj
YWU2Mzk1ZTA3NGM0NjQ0ZTcwY2MwYTcuLmJkYmQzMWQ2MzEyYjJjMDU2ZDdjNDc4MTVkYzYxNWQx
MjI2ZDkyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3QpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEluamVj
dGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQor
ICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxJbmplY3RlZFNjcmlwdE1h
bmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZXhl
Y3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVn
U2VydmVyKGdsb2JhbE9iamVjdCkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0
ZXI6OmNyZWF0ZSgpKQpAQCAtNzEsMTEgKzcxLDExIEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2Jq
CiB7CiAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29u
c29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRl
eHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JDb25zb2xl
QWdlbnQ+KGNvbnRleHQpOwogICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50LmdldCgp
OwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogCi0gICAgbV9j
b25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGll
bnQ+KG1fY29uc29sZUFnZW50KTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwogCiAgICAgbV9leGVj
dXRpb25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiB9CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEV4Y2UKICAgICAgICAgICAgIENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yTWVzc2FnZSwgU3RyaW5nKCksIDAsIDApOwogICAgIH0KIAotICAgIG1fY29u
c29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIG1fY29uc29s
ZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiBDb25zb2xlQ2xpZW50KiBK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbnNvbGVDbGllbnQoKSBjb25zdApA
QCAtMjgwLDcgKzI4MCw3IEBAIEluc3BlY3RvckFnZW50JiBKU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVj
dG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAg
ICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdl
bnQ+KGNvbnRleHQpOworICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVuaXF1ZTxJ
bnNwZWN0b3JBZ2VudD4oY29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNw
ZWN0b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVj
dG9yQWdlbnQpKTsKICAgICB9CkBAIC0yOTEsNyArMjkxLDcgQEAgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVEZWJ1Z2dlckFn
ZW50KCkKIHsKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBhdXRvIGNvbnRl
eHQgPSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25z
b2xlQWdlbnQpOworICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPEpTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOwogICAgICAg
ICBtX2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgICAgICBtX2NvbnNv
bGVDbGllbnQtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQobV9kZWJ1Z2dlckFnZW50KTsKICAg
ICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwpAQCAtMzI3LDIw
ICszMjcsMjAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0
ZUxhenlBZ2VudHMoKQogCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihj
b250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RS
dW50aW1lQWdlbnQ+KGNvbnRleHQpKTsKIAogICAgIGVuc3VyZURlYnVnZ2VyQWdlbnQoKTsKIAot
ICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxl
ckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Pihjb250
ZXh0KTsKICAgICBtX2NvbnNvbGVDbGllbnQtPnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdU
Rk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBoZWFwQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBo
ZWFwQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CiAgICAg
aWYgKG1fY29uc29sZUFnZW50KQogICAgICAgICBtX2NvbnNvbGVBZ2VudC0+c2V0SW5zcGVjdG9y
SGVhcEFnZW50KGhlYXBBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUo
aGVhcEFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxKU0ds
b2JhbE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzBiNWM5YWFkMThjMDhj
ZWRkYzM2OTY2YmYwNDY4NTE0MTc2MjY0My4uNDE3ZTc3NWZiODAyNDljMDQwMzEzN2E4Mjc4MjEz
NzMyN2QzMzJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkluc3BlY3RvciJfcykKICAg
ICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKLSAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDdlZGJjODA2NjBmMzZkNmE4MWFhOTFmYjhmYTNm
ZGRkZWRhZTZmMjYuLjVkMjRjNjllNmJmNDVkNzJmYjBiZGE1M2I0YzQ1NzU5ODYxM2NiY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMg
Y29uc3QgaW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDsKIEluc3BlY3RvckNvbnNv
bGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ29uc29sZSJfcykKICAgICAsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAtMTQwLDcgKzE0
MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3Ig
bG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVy
IFwiIiwgbGFiZWwsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fy
bmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgd2FybmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkp
OwogICAgIH0KIH0KIApAQCAtMTU5LDE0ICsxNTksMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OmxvZ1RpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJl
bCwKICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2Vu
ZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJp
bmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2VzIG5vdCBl
eGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1p
bmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7
CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwog
ICAgIFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwog
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKLSAgICBh
ZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6
RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7
CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6
OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkp
OwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE4NCwxNCArMTg0LDE0IEBAIHZv
aWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXph
dGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxh
YmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdU
Rk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3Rh
Y2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0
VGltZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9uaWNUaW1lOjpu
b3coKSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWws
ICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygp
LCAzKSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGlt
aW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsK
KyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6
RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogCiAgICAgbV90aW1lcy5yZW1v
dmUoaXQpOwogfQpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpjb3VudChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICAv
LyBGSVhNRTogV2ViIEluc3BlY3RvciBzaG91bGQgaGF2ZSBhIGJldHRlciBVSSBmb3IgY291bnRl
cnMsIGJ1dCBmb3Igbm93IHdlIGp1c3QgbG9nIGFuIHVwZGF0ZWQgY291bnRlciB2YWx1ZS4KIAog
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSk7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9n
LCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JD
b25zb2xlKGV4ZWMsIDEpKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9n
LCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JD
b25zb2xlKGV4ZWMsIDEpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMjM2
LDcgKzIzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fY291
bnRzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250
ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmlu
ZygiQ291bnRlciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRk
TWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsK
KyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywg
MSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCBlNWYyNDgyYTNjYWEwOGFhODE2NDVmYThjNzljNTI5YmE0MzgwZDBhLi4y
NWYxZDNlNzI4MWM2YjBmYjgzMzBmZjEzNzg3MzY0M2ViYzYwZWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgU3RyaW5nIG9iamVj
dEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBh
Y3RpbwogCiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEFn
ZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGVidWdnZXIi
X3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPERlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihEZWJ1Z2dl
ckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGNvbnRleHQuZW52aXJvbm1lbnQuc2NyaXB0
RGVidWdTZXJ2ZXIoKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggYjUzNWZm
NjE5MmFhY2VmYzc5YjRmNmNkOTNkZjEyMDFhMzcxNDhhYy4uNTgyYzM1ZDM2N2RmZTFlNGY3ZGM0
ZTlhNTY4NGRjYTJhNGUzYjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC00Miw3
ICs0Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSW5zcGVjdG9ySGVhcEFnZW50OjpJbnNw
ZWN0b3JIZWFwQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdl
bnRCYXNlKCJIZWFwIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5p
bmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxIZWFwRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoSGVhcEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDU2ZmMxYjc5
OGRhMGVlZWVhMDIzMzFlZDUyNTRhOTUwMjEwMDU4NzQuLmNiYWQ4MWQ2OTk0NDBhNzMzYjBhZjA0
MTY5NGE4NmNhOWU2ZThlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNw
ZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KEFn
ZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiU2NyaXB0UHJv
ZmlsZXIiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
KyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8U2NyaXB0UHJvZmlsZXJGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5k
RGlzcGF0Y2hlcihTY3JpcHRQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQu
ZW52aXJvbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKaW5kZXggM2FjYTQx
MDUxMGZlNTAwZjA1YmZiYWFjNDY3ZmZkYWNjYjIxYzUyNC4uOTM1MDY4YzdhZTExOTcxMDU0NGMx
Zjc2Nzk4MjJkZmI2NmU1NmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yVGFyZ2V0QWdl
bnQ6Okluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwg
QmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQogICAgIDogSW5zcGVjdG9yQWdl
bnRCYXNlKCJUYXJnZXQiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpKQorICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+
KGZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVGFyZ2V0QmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdERlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlMzI5YTNiNDNjZDYw
OTY1ZDlmNzc4NWE0ODIyMDExYWIzNjZmYTUzLi45YjNmMzc5ZDVlNWE0OTBkYmUzNzVjNzJhYzk5
ZmE3MjBiOWFjY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGUKIAogdm9pZCBKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9jb25zb2xlQWdlbnQt
PmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNz
YWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOworICAgIG1fY29uc29sZUFn
ZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5k
ZXggMTQ1ZDA1MTZiOGUzOTY4ODc4ZDkyY2I1OTRhYTU5OWJhZmEzOWQzMi4uM2I3YzNlMjFkMzFj
MWMyZjViNmQxYmEwYzE2ZjQ4ODgzZTZjZjMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
KEpTQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNv
bnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRp
bWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoUnVudGlt
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCiAgICAgLCBtX2dsb2JhbE9iamVjdChjb250ZXh0Lmluc3BlY3RlZEdsb2JhbE9iamVjdCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQuY3BwCmluZGV4IDcxMDE2NjhhOTdjODc0NDgxMmY0NjU2ZjE2ZTBiN2RkNTk0ZjFhNjAuLmNj
OTY0MDA1Njc5ZGJmY2Q0ZmUwMjkwNmJjOTNjMjNiMmM4MmVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtMTQ0LDEx
ICsxNDQsMTEgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIAogICAgIFNvY2tldDo6c2V0dXAo
c29ja2V0KTsKIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U29ja2V0
OjpDb25uZWN0aW9uPigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8U29ja2V0
OjpDb25uZWN0aW9uPigpOwogCiAgICAgY29ubmVjdGlvbi0+cG9sbCA9IFNvY2tldDo6cHJlcGFy
ZVBvbGxpbmcoc29ja2V0KTsKICAgICBjb25uZWN0aW9uLT5zb2NrZXQgPSBzb2NrZXQ7Ci0gICAg
Y29ubmVjdGlvbi0+cGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwg
U29ja2V0OjpCdWZmZXJTaXplKTsKKyAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBtYWtlVW5pcXVl
PE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwogICAgIGNvbm5lY3Rpb24t
PnBhcnNlci0+c2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNdKENvbm5lY3Rpb25JRCBp
ZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBpZiAobV9pbnNwZWN0b3JDbGll
bnQpCiAgICAgICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+ZGlkUmVjZWl2ZVdlYkluc3BlY3Rv
ckV2ZW50KGlkLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKaW5kZXggNzBmMmQ3YTQ4MTM0NzBmODEzNzMyYjNi
OTc3YjViNzNhNDE5NjBiNS4uMzIwNDAwZmQ1YjNjZGIyYzRiMTVkYmRjOTMwNDZiYmZkMDBjYWRj
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+IGNyZWF0ZShSZW1vdGVJbnNwZWN0b3JD
b25uZWN0aW9uQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFtZSk7
CiAgICAgfQogCiAgICAgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoUmVtb3RlSW5zcGVj
dG9yQ29ubmVjdGlvbkNsaWVudCosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3Rl
bXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRleCA1MGM4ZjZmZGU3Y2U2ODk4YjA4
MjgxNDk5N2JlNTdkNzMwMTliMjUzLi4xMDE3ODllMWRmNzU0ODFmNjFlOGMwMGYyMTFhY2E3NDli
NTA1OGVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxh
dGVzLnB5CkBAIC0xMzYsOCArMTM2LDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvclRlbXBsYXRlczoK
ICAgICBbXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgcmVsZWFzZV07CiAgICAgXyR7dmFy
aWFibGVOYW1lUHJlZml4fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFp
bk5hbWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlz
cGF0Y2hlcj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlx
dWU8T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7
CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFp
bk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5k
RXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQv
ZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25z
LXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDNlOTkxNDcxZDMyNGEzNTUxNjky
OGU0M2U5NDEwOGI0NDg3MzEyMDguLmIwNGE4NTBkZjExNTJkNmZkYTU5NjJkZjM3YzJlNDllMWVi
ZDk1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApA
QCAtNzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3
b3JrSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRh
aW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRv
IGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2Jq
Q0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBh
bHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0
d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+
PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIp
KTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFn
ZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNv
bi1yZXN1bHQKaW5kZXggYTcxNGZiMTMxODMyOTNkMTgzMmZjNTgxZTZjNTMzNzg2ODAyZDU3Mi4u
YzBlMTczMzdmZDRhNzk4ODMwZTg1ZDI5ZTg1ZDhlZDMwMjBjYTc5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTExODksOCArMTE4
OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIg
cmVsZWFzZV07CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
Pj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hl
cikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+Pigi
RGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2Vu
dCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwt
cmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlv
bmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggNTNiZDU1M2I3YmE3
NGRkZDI5ZTI1NTFjYzBiODRmYTQzMDcxNGNhZS4uYWVkMDdiNzVlOGI4ODhkZDU5MzM5MGFmYTIx
ZDJjODkwZGRmYzU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1j
YWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTA2OCw4
ICsxMDY4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFu
ZGxlciByZWxlYXNlXTsKICAgICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsK
IAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0lu
c3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0
ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpD
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBh
bHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNo
ZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0
ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNv
bi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CmluZGV4IDY3
OGM2YWFhODVhY2EzODQyNDhiOTkyOTAzNGNjZjA5NDExOGRlZTcuLjFhZGNiZDNmZDJhY2I5Y2Ex
NDYxYzMwOGU0NWM0OTJlYzNlMDMyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFi
aWxpdHkuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJl
c3VsdApAQCAtNzgyLDggKzc4Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAg
W19kb21haW5BSGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWluQUhhbmRsZXIgPSBbaGFuZGxl
ciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAg
ICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRj
aGFibGVBZ2VudDxEb21haW5BQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNr
ZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlx
dWU8T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAg
YXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQ8RG9tYWluQUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3Bh
dGNoZXI+PigiRG9tYWluQSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3Bh
dGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVy
bmF0ZUFnZW50KSk7CiB9CiAKQEAgLTgwMCw4ICs4MDAsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogICAgIFtfZG9tYWluQkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkJIYW5k
bGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5h
dGVEb21haW5CQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBX
VEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURp
c3BhdGNoYWJsZUFnZW50PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWlu
QkJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQo
V1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5z
LXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13
aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCBmNmM1ZWRjY2I5Mjg1
YWY0OGM2ZGViOTg0MjJhNzIzNmI4NzAyZDRlLi5hM2UyN2RmMzhjZWFmYmIzYzQ1MWUxM2I2MTE5
ZTJlNTRjM2QyYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21t
YW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNv
bW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTEwMzksOCArMTAzOSw4IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25l
dHdvcmsxSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAq
X2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0
ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29u
dHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXIt
PmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC0xMDU3
LDggKzEwNTcsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazNI
YW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrM0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBh
bHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURp
c3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9i
akNJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRv
IGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVyPj4oIk5ldHdvcmszIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0
Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJu
YXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCA0ZDk0YWQ5NGFkODUxZjU4
NWY0OGU5MTE1ZTNiZWNjZjk3YjdhZDVmLi5iZDZiOTgxNWY3NjAxYWUxZDBmZWRjMjZjNDU0MzVi
YTQzZjYxZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtODE1LDggKzgxNSw4IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19jb21tYW5kRG9tYWluSGFuZGxlciByZWxlYXNl
XTsKICAgICBfY29tbWFuZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9y
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVy
bmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUo
YWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1h
a2VVbmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250
cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+
YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3Vs
dAppbmRleCA2ZjZiZjM2MjU3YWU5ZWVmMDVmMWJmMjY3M2U2MTEzZjNiY2U4OTgwLi41Y2JjY2Jm
ZWQ1M2M0YmYzNDEzNmY3NjhlZGE1OWZmYjQ5MDcwYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Z2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC03OTgs
OCArNzk4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmsxSGFu
ZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsK
IAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0lu
c3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0
ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpD
SW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBh
bHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hl
cj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNo
ZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0
ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZv
cm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVz
dWx0CmluZGV4IDNlOTkxNDcxZDMyNGEzNTUxNjkyOGU0M2U5NDEwOGI0NDg3MzEyMDguLmIwNGE4
NTBkZjExNTJkNmZkYTU5NjJkZjM3YzJlNDllMWViZDk1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5p
dGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13
aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNlXTsKICAgICBf
bmV0d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmRE
aXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNo
ZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2Nv
bnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRl
cm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5k
RXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCAwNWY3MGYxYWVhZjRjNGQ5ZjUyYzEwNmFiNjZkYjllY2QyZWFiOGJl
Li45OWU4YTQ3ZmQ1ZTBjMjA3ZTcyN2I4NmZlMjM2MTkwNTdiNjUwMmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRo
b3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgfQogCiAgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IChtX3ZtLT5tX3BlckJ5dGVj
b2RlUHJvZmlsZXIgJiYgT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkp
KSkKLSAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVERpc2Fzc2Vt
Ymxlcj4obV9jb2RlQmxvY2spOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8
SklURGlzYXNzZW1ibGVyPihtX2NvZGVCbG9jayk7CiAgICAgaWYgKFVOTElLRUxZKG1fdm0tPm1f
cGVyQnl0ZWNvZGVQcm9maWxlcikpIHsKICAgICAgICAgbV9jb21waWxhdGlvbiA9IGFkb3B0UmVm
KAogICAgICAgICAgICAgbmV3IFByb2ZpbGVyOjpDb21waWxhdGlvbigKQEAgLTkwMSw3ICs5MDEs
NyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KIAogICAgIGlmIChtX3Bj
VG9Db2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkKLSAgICAgICAgbV9jb2Rl
QmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlxdWU8UENUb0NvZGVPcmln
aW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikp
OworICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQ
Q1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIHBh
dGNoQnVmZmVyKSk7CiAgICAgCiAgICAgQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXN1bHQgPSBG
SU5BTElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwgSlNFbnRyeVB0clRhZywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCAxNmJmNzBkODAxNzQ0MjMwNTAy
YTJkOGIxOTdjZDQwMWM4MDI0ZjM4Li41YmRmODMwNDY1MDQzOTk0ZTExYmFmZmVkNTJiYjc4NWMx
YmEwYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0zNyw3
ICszNyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogSklUVGh1bmtzOjpKSVRUaHVua3MoKQotICAg
IDogbV9ob3N0RnVuY3Rpb25TdHViTWFwKHN0ZDo6bWFrZV91bmlxdWU8SG9zdEZ1bmN0aW9uU3R1
Yk1hcD4oKSkKKyAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChtYWtlVW5pcXVlPEhvc3RGdW5j
dGlvblN0dWJNYXA+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CmluZGV4IGUzODhmYjBlNjI3MDhiMzRlY2I5NzFlOTQ2YjQ2YjE5M2M0Y2FlM2IuLjhmOWE4NjRl
NGZlODYyNmExZmVmYzBjMzA3YzllNDY1NjYyZjVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcApAQCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWND
YWxsKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRnJhbWVTaHVmZmxlcj4gZnJhbWVTaHVmZmxl
cjsKICAgICBpZiAoY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSkgewogICAgICAgICBB
U1NFUlQoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSk7Ci0gICAgICAgIGZyYW1lU2h1ZmZsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJ
bmZvLmZyYW1lU2h1ZmZsZURhdGEoKSk7CisgICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBtYWtlVW5p
cXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZs
ZURhdGEoKSk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgLy8gV2Ugd291bGQgaGF2
ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbCwgYW5kIHdlIGNhbgog
ICAgICAgICAvLyB1c2UgdGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIgdGhpcyBidXlzIHVzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAppbmRleCA0MTIyZmJlZDIyZWUxNTUyM2QxNGU0YTg3OWFiYTFhYjg0Nzg2
YTA3Li43MDJkMzY5NGQ5Zjc2ODg0MjBmMGNkYWJkMTBlODg4YTczM2YyODY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcApAQCAtMjk2OSw3ICsyOTY5LDcgQEAgaW50IHJ1bkpTQyhjb25zdCBDb21tYW5k
TGluZSYgb3B0aW9ucywgYm9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykKICAgICAgICAg
SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKICAgICAgICAgaWYgKG9wdGlvbnMubV9wcm9maWxl
ICYmICF2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCi0gICAgICAgICAgICB2bS5tX3BlckJ5dGVj
b2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOwor
ICAgICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxl
cjo6RGF0YWJhc2U+KHZtKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6
OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwg
b3B0aW9ucy5tX2FyZ3VtZW50cyk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0UmVtb3RlRGVi
dWdnaW5nRW5hYmxlZChvcHRpb25zLm1fZW5hYmxlUmVtb3RlRGVidWdnaW5nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmOGRiZTcxOTZmMTExNzE2ZDBhNThm
N2Y1N2UzZjhmNjdiN2EyYWNmLi5hMTY0ZmQ5MDNmMzZlOTQyMGE3MzY0ZWY0MjdjNmMyZmZlMzIy
Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNDAsNyAr
MTQwLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgICwgbV9pbW1lZGlhdGVQYXJlbnRB
bGxvd3NGdW5jdGlvbkRlY2xhcmF0aW9uSW5TdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX2RlYnVn
Z2VyUGFyc2VEYXRhKGRlYnVnZ2VyUGFyc2VEYXRhKQogewotICAgIG1fbGV4ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKKyAgICBt
X2xleGVyID0gbWFrZVVuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2NyaXB0TW9k
ZSk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5hKTsKICAgICBt
X3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgp
OwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNjlhYTBiYzE5MGFm
Njc4M2Q4OTI4YzM1OWFhM2IxMGJiMWZiZDg3My4uMGE1ZWRlNGI4NDI1Y2ZkMWIzMTdjNzZjNTFl
YTczNzgxNzgwYjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0y
MDQsNyArMjA0LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJ
ZGVudGlmaWVyKiBsYWJlbCwgYm9vbCBpc0xvb3ApCiAgICAgewogICAgICAgICBpZiAoIW1fbGFi
ZWxzKQotICAgICAgICAgICAgbV9sYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExhYmVsU3RhY2s+
KCk7CisgICAgICAgICAgICBtX2xhYmVscyA9IG1ha2VVbmlxdWU8TGFiZWxTdGFjaz4oKTsKICAg
ICAgICAgbV9sYWJlbHMtPmFwcGVuZChTY29wZUxhYmVsSW5mbyB7IGxhYmVsLT5pbXBsKCksIGlz
TG9vcCB9KTsKICAgICB9CiAKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBj
b25zdCBJCiAgICAgICAgIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1
cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQg
PSBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCk7CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9
IGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0Owot
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJl
bmEsCisgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVu
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRMb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IGRmMTdiZTUzNjYzZTdjYjdiNzBjNDg3
NzBmOWEwNTI5Y2YzM2E3ZWUuLjQxMDAwNmQ5Mjc1MWNlOTZiOTJjYjk2MjU2MzVlYTdjZjc4ZWM0
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTE4
MCw3ICsxODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllckFyZW5hJiBp
ZGVudGlmaWVyQXJlbmEoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkgKCFt
X2lkZW50aWZpZXJBcmVuYSkpCi0gICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBz
dGQ6Om1ha2VfdW5pcXVlPElkZW50aWZpZXJBcmVuYT4oKTsKKyAgICAgICAgICAgICAgICBtX2lk
ZW50aWZpZXJBcmVuYSA9IG1ha2VVbmlxdWU8SWRlbnRpZmllckFyZW5hPigpOwogICAgICAgICAg
ICAgcmV0dXJuICptX2lkZW50aWZpZXJBcmVuYTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKaW5k
ZXggMDUwMzJiNWQxMzEwOGMwZWI2MjBlOWRhZTgyMGNlZjdhYzc1MzE4Yy4uMzU3MTFiNWZhNjQy
NjllNjc3NGFiNzBlMjFkZDUwMjUxNjljOGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcApAQCAtNzksNyArNzks
NyBAQCBFeGVjdXRpb25Db3VudGVyKiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZvcihj
b25zdCBPcmlnaW5TdGFjayYgb3JpZ2luKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGVjdXRp
b25Db3VudGVyPiYgY291bnRlciA9IG1fY291bnRlcnMuYWRkKG9yaWdpbiwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwogICAgIGlmICghY291bnRlcikKLSAgICAgICAgY291bnRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKKyAgICAgICAgY291bnRlciA9IG1ha2VV
bmlxdWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKIAogICAgIHJldHVybiBjb3VudGVyLmdldCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDcwYzcxNDczMzI0
NDQwODA3ODc5MzQwMTk4NjY3M2M5N2UxZWE4M2QuLmE2NGRlM2ZkZDY2MjU1MThhYzVkMTI2Y2Vh
Yzc4YjZmMjEyNWE0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAK
QEAgLTE3NCw3ICsxNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBn
ZXRTdGFja1RyYWNlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iagogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIHNpemVfdCBmcmFtZXNUb1NraXAgPSB1c2VDdXJyZW50RnJhbWUg
PyAwIDogMTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBzdGFja1Ry
YWNlID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IG1ha2VVbmlxdWU8VmVj
dG9yPFN0YWNrRnJhbWU+PigpOwogICAgIHZtLmludGVycHJldGVyLT5nZXRTdGFja1RyYWNlKG9i
aiwgKnN0YWNrVHJhY2UsIGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2JqZWN0LT5zdGFja1RyYWNlTGlt
aXQoKS52YWx1ZSgpKTsKICAgICBpZiAoIXN0YWNrVHJhY2UtPmlzRW1wdHkoKSkKICAgICAgICAg
QVNTRVJUX1VOVVNFRChleGVjLCBleGVjID09IHZtLnRvcENhbGxGcmFtZSB8fCBleGVjLT5pc0ds
b2JhbEV4ZWMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA0MzllMjA5YjBhNWY4ZmI4MjliNzkxOTc1NzQ4OGM0
MTU2MzQyNzNmLi5lZjJlODMwODc0MWI4ODUyZTU2MjMyNmY5NjI1N2M5ZDAyOTM1ZDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiBGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBG
dW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFt
X3JhcmVEYXRhKTsKLSAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0
YT4oKTsKKyAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICBy
YXJlRGF0YS0+bV9saW5lQ291bnQgPSBsaW5lQ291bnQoKTsKICAgICByYXJlRGF0YS0+bV9lbmRD
b2x1bW4gPSBlbmRDb2x1bW4oKTsKICAgICByYXJlRGF0YS0+bV9wYXJhbWV0ZXJzU3RhcnRPZmZz
ZXQgPSBwYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCA0NjIzNjQxYzU5OGUzZWJiNWZiYTZi
YzAyMzcyNjRlNTA1MmZkMTc5Li41MmIyOGIxM2M3ZTJlMjVkMjFiYmJhYjNhZDMxZDViNmJjMGNk
ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2gKIGlubGlu
ZSBXYXRjaHBvaW50KiBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNs
ZWFyaW5nV2F0Y2hwb2ludCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWhhc0FsbG9jYXRpb25Q
cm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkpOwotICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVh
cmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJp
bmdXYXRjaHBvaW50Pih0aGlzKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRj
aHBvaW50ID0gbWFrZVVuaXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4o
dGhpcyk7CiAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCAxYTU3ZWYzZGNmZTkxOWU3MGIzN2ZhN2UzNDg1NGExM2U5MDUzZmFl
Li5jYzg3NzY3ZjEwOGJjYzQ4M2IzMTVmMTEyZmE5YzUzNDdmNTIwMTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NzcsOCAr
NDc3LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9kZWJ1Z2dl
ciA9IDA7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2luc3BlY3RvckNv
bnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyPigqdGhpcyk7Ci0gICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gc3Rk
OjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKKyAgICBtX2lu
c3BlY3RvckNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0g
bWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKICAgICBtX2luc3Bl
Y3RvckRlYnVnZ2FibGUtPmluaXQoKTsKICAgICBtX2NvbnNvbGVDbGllbnQgPSBtX2luc3BlY3Rv
ckNvbnRyb2xsZXItPmNvbnNvbGVDbGllbnQoKTsKICNlbmRpZgpAQCAtMTE0NSw1NyArMTE0NSw1
NyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9y
ID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0
ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX2Fy
cmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX2Fy
cmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9u
LCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX2FycmF5SXRl
cmF0b3JQcm90b3R5cGVOZXh0LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dCh0aGlzLT5hcnJheVByb3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sKTsKLSAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9y
V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dChtYXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAg
ICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
KyAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
ICAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90
b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAg
ICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFk
YXB0aXZlV2F0Y2hwb2ludChzZXRJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5uZXh0KTsKLSAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBv
aW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBv
aW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlw
ZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1f
c2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAg
ICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwog
ICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2
bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25k
aXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3N0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBt
X3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAg
ICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0p
OwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlv
biA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nUHJvdG90eXBlLmdldCgpLCBtX3Zt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zdHJpbmdQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBt
X3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAg
ICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxs
KHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNv
bmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBt
X3ZtLnByb3BlcnR5TmFtZXMtPnNldCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRj
aHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOwogICAgICAgICBtX21h
cFByb3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsK
LSAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFBy
b3RvdHlwZUFkZFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1f
c2V0QWRkV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+
aW5zdGFsbCh2bSk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBjYXBpdGFsTmFtZSAj
IyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBj
YXBpdGFsTmFtZQogICAgICAgICB0aGlzLT5zeW1ib2xQcm90b3R5cGUoKTsKIAogICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dChudW1iZXJQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpOwotICAgICAg
ICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOworICAgICAg
ICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOwogICAgICAgICBtX251
bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIG1f
bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rp
b24qPihudW1iZXJQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmcpKSk7CiAgICAgfQpAQCAtMTkzMiwxMCArMTkzMiwxMCBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludC5pc0JlaW5nV2F0Y2hl
ZCgpKTsKICAgICBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQudG91Y2godm0sICJTZXQgdXAgYXJy
YXkgc3BlY2llcyB3YXRjaHBvaW50LiIpOwogCi0gICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVj
dG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29u
ZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlQcm90b3R5cGVD
b25zdHJ1Y3RvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNv
bmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5UHJvdG90eXBl
Q29uc3RydWN0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKIAotICAgIG1fYXJyYXlDb25zdHJ1
Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2ll
c0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2FycmF5Q29uc3Ry
dWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25k
aXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9y
U3BlY2llc1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAwNDdjMTY2NTNlNzFiMWE4MDZi
ZDlmYzdkNTY2NDNhNWY5ODhmMTFlLi44NDUzNWNhNWM2MDBjZWNiZDhiNDc4ZjY1YjUzY2QwN2Uz
NmE4MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICB7CiAgICAgICAgIGlmIChtX3JhcmVEYXRh
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFr
ZVVuaXF1ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOwogICAgIH0KICAgICAgICAgCiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BU
aW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5j
cHAKaW5kZXggMWFmMDAzNjUzY2I4YzNkZTY0M2Y4YzQ5MTI3YWJiM2U1NTEzZDVhZC4uMzI3ZmVk
MDZjNjdhNWJmMTEyNTFmOWY0ZGVkODM5ZTcwMzNjOGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcApAQCAtODcsNyArODcsNyBAQCB2
b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OnNldFJ1bkxvb3AoTWFuYWdl
ciogbWFuYWdlciwgQ0ZSdW5Mb29wUgogI2Vsc2UKIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQ
ZXJWTURhdGE6OlBlclZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQogICAgIDogcnVuTG9vcCgmUnVu
TG9vcDo6Y3VycmVudCgpKQotICAgICwgdGltZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpU
aW1lcjxNYW5hZ2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFn
ZXI6OnRpbWVyRGlkRmlyZUNhbGxiYWNrKSkKKyAgICAsIHRpbWVyKG1ha2VVbmlxdWU8UnVuTG9v
cDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpN
YW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkKICAgICB0aW1lci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpKYXZhc2Ny
aXB0VGltZXIpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyJiBK
U1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6c2hhcmVkKCkKIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6
TWFuYWdlcjo6cmVnaXN0ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFBl
clZNRGF0YT4oKnRoaXMpOwogI2lmIFVTRShDRikKICAgICBkYXRhLT5zZXRSdW5Mb29wKHRoaXMs
IHZtLnJ1bkxvb3AoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCmluZGV4IDVmMDc4ZDJhNTA5ZDJiNDQyMDBm
N2E0YWYzODgxMjQ2Y2IyZDU4YTcuLjUyOTAyMGRmMGYxZGMyYTI4NmY4MDBhYmFkOWQ3ZWI3ZDNm
OGVlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNl
dCBQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKIGlubGluZSB2b2lkIFByb3BlcnR5
VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlm
ICghbV9kZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKKyAgICAgICAgbV9kZWxldGVkT2Zm
c2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKICAgICBtX2RlbGV0
ZWRPZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAppbmRleCA1OWVjNDFjNDlhZTgyZjQ3ZjY5ODY4
MDZkZDYxNDM5NDRhNDJiNWQ2Li5iMWJiNjc5MTk5MjY1YWZjYmNjYzgzNjU2ZDhkNTZmYzViNGEz
NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxl
LmNwcApAQCAtODMsNyArODMsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2
bSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVk
T2Zmc2V0cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVk
T2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVs
ZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAgICAg
bV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90
aGVyRGVsZXRlZE9mZnNldHMpOwogfQogCiBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZN
JiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhl
cikKQEAgLTEwNyw3ICsxMDcsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2
bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYgogICAgIC8vIENv
cHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNl
dD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwog
ICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogdm9pZCBQcm9wZXJ0eVRh
YmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCmluZGV4IDA3MWIxZjY2MzE1Y2UzYWU4ZGNmZTE3NWZmNjM2NmY1YzYzMmFmZmMu
LjcwZTU5M2Q1M2ViZGQ4MWQ4YzA4MTNhMjk3NzBlOTQwY2UwNDExM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVn
RXhwOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKICAgICBtX251bVN1YnBhdHRlcm5zID0gcGF0
dGVybi5tX251bVN1YnBhdHRlcm5zOwogICAgIGlmICghcGF0dGVybi5tX2NhcHR1cmVHcm91cE5h
bWVzLmlzRW1wdHkoKSB8fCAhcGF0dGVybi5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguaXNFbXB0
eSgpKSB7Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigp
OworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAg
bV9yYXJlRGF0YS0+bV9jYXB0dXJlR3JvdXBOYW1lcy5zd2FwKHBhdHRlcm4ubV9jYXB0dXJlR3Jv
dXBOYW1lcyk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5z
d2FwKHBhdHRlcm4ubV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4KTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDM5Y2RkOTExNmUwMjdlM2RiNjA0MGRiZDhm
ZTUyNzBkMmU5OTVkOGQuLmU4ZGE4NTI2ZTdjN2U4MWZiZWE3NWM4ODk4ODE2MWI5YWY4OTE3MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0xNjQsNyArMTY0LDcg
QEAgY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgWWFycjo6WWFyckNv
ZGVCbG9jayYgZW5zdXJlUmVnRXhwSklUQ29kZSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcmVn
RXhwSklUQ29kZSkKLSAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IHN0ZDo6bWFrZV91bmlx
dWU8WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKKyAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9
IG1ha2VVbmlxdWU8WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKICAgICAgICAgcmV0dXJuICptX3Jl
Z0V4cEpJVENvZGUuZ2V0KCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDIzN2Q3ZGU2ODhkZDIw
NzY1MDIwMTIxNmNkMGQ1NDY4MGM0OTZlYWEuLmVlNmUxOGNlZmRiZTc5ZjRiYzJlYjIxOTdmZjUz
OTEwNGUxZjc5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgYXV0byBTY3JpcHRFeGVjdXRh
YmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcEltcGwoc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRl
T2JqZWMKIHsKICAgICBpZiAoZGVzdCkKICAgICAgICAgcmV0dXJuICpkZXN0OwotICAgIGF1dG8g
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+KCk7CiAgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsKICAgICBkZXN0ID0gV1RGTW92ZShyZXN1bHQpOwogICAgIHJldHVybiAq
ZGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4
IDI5M2M0NjQ3MmU3NDg5NDFjYTljYzJhZGFjMTZhM2QyZGM1ZGVlZWMuLjAxY2QyYmQ1NDdmZTAy
YjUwNDdhNmQ0NWIzYzhhZDZmZDUyYmRiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIFdhdGNocG9pbnRTZXQqIFN0
cnVjdHVyZTo6ZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQoVk0mIHZtLCBQ
cm9wZXJ0CiAgICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+cmFyZURhdGEo
KTsKICAgICBpZiAoIXJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMpIHsKICAg
ICAgICAgcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cyA9Ci0gICAgICAgICAg
ICBzdGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRN
YXA+KCk7CisgICAgICAgICAgICBtYWtlVW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0
eVdhdGNocG9pbnRNYXA+KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAg
fQogICAgIGF1dG8gcmVzdWx0ID0gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0
cy0+YWRkKG9mZnNldCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKaW5kZXggOTlhOGQ5ZjdkYWFjMjE3ZTRjODFl
N2U3MTI2ZTljMDJiMzc0ZWQzZi4uZDNjZjE4M2IwZjZkN2M0ODk4ODAwYWI2OGVlNDhjZDEyOGY3
ZmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVJhcmVEYXRhLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6
OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVy
CiAgICAgQVNTRVJUKGNvbmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHkoKSk7CiAg
ICAgZm9yIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQp
IHsKICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgPT0gUHJvcGVydHlD
b25kaXRpb246OlByZXNlbmNlKSB7Ci0gICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRp
dmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0VG9TdHJp
bmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9u
LCB0aGlzKTsKKyAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFs
dWVXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOwogICAgICAgICAg
ICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQtPmluc3Rh
bGwodm0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFw
dGl2ZVdhdGNocG9pbnRTZXQuYWRkKGNvbmRpdGlvbiwgdGhpcyktPmluc3RhbGwodm0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDM5MmYy
MTdjMTRlZmFlYjU0NWJmMGQ0Zjc3OTBjMTEyNzkzMmJjODUuLmE0YTg3MGZjMWZjYWQzNWM0Mzk1
ZjEwOWIyMmE5OWM0MjBkNzQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBjb25zdCBTeW1ib2xUYWJsZTo6
TG9jYWxUb0VudHJ5VmVjJiBTeW1ib2xUYWJsZTo6bG9jYWxUb0VudHJ5KGNvbnN0IENvbmN1cnJl
bnRKUwogICAgICAgICAgICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBvZmZzZXQuc2NvcGVP
ZmZzZXQoKS5vZmZzZXQoKSArIDEpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIG1fbG9jYWxU
b0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIp
OworICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IG1ha2VVbmlxdWU8TG9jYWxUb0VudHJ5VmVjPihz
aXplLCBudWxscHRyKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbWFwKSB7CiAgICAg
ICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFsdWUudmFyT2Zmc2V0KCk7CiAgICAg
ICAgICAgICBpZiAob2Zmc2V0LmlzU2NvcGUoKSkKQEAgLTE1OSw3ICsxNTksNyBAQCBTeW1ib2xU
YWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgcmVzdWx0
LT5tX2FyZ3VtZW50cy5zZXQodm0sIHJlc3VsdCwgYXJndW1lbnRzKTsKICAgICAKICAgICBpZiAo
bV9yYXJlRGF0YSkgewotICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgICAgICB7CiAgICAgICAg
ICAgICBhdXRvIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLmJlZ2luKCk7CkBAIC0x
OTEsNyArMTkxLDcgQEAgdm9pZCBTeW1ib2xUYWJsZTo6cHJlcGFyZUZvclR5cGVQcm9maWxpbmco
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFibGVS
YXJlRGF0YT4oKTsKKyAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVE
YXRhPigpOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX21hcC5iZWdpbigpLCBlbmQgPSBtX21h
cC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBtX3JhcmVEYXRhLT5tX3Vu
aXF1ZUlETWFwLnNldChpdGVyLT5rZXksIFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0
aW9uKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBDb2RlQmxvY2sqIFN5bWJvbFRhYmxlOjpyYXJlRGF0
YUNvZGVCbG9jaygpCiB2b2lkIFN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayhDb2Rl
QmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgIG1fcmFy
ZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAg
IG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICBB
U1NFUlQoIW1fcmFyZURhdGEtPm1fY29kZUJsb2NrKTsKICAgICBtX3JhcmVEYXRhLT5tX2NvZGVC
bG9jay5zZXQoKmNvZGVCbG9jay0+dm0oKSwgdGhpcywgY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNDEwZWI2ZDVhZTE2ZjM2MDIyNmRi
MzgyM2Y3ZWU4MjhlY2NhYjM4My4uNDFhY2E5ZDNkNGQ5YjhhNTZhZTY4NTIzMGU4ZDY2NzUyYWMw
ZDAyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTM2
Miw3ICszNjIsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCgpCiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKG1fcHJvdG8tPnByb3BlcnR5SGFzaCgpKTsKICAgICB9CiAKLSAg
ICBtX3Byb3BlcnR5SGFzaCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3Ry
aW5nKCkpOworICAgIG1fcHJvcGVydHlIYXNoID0gbWFrZVVuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIu
dG9TdHJpbmcoKSk7CiAgICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDRlMmQwZDMyNGEyNGUyMzJjZDE5NTM4OTJlZDhi
MGEzM2IwYjA1ZWUuLmI3MDkyYzA4ZWY3MmIwZWNhODlmZjBiNWM0YmUxYWU1OWFhMWRiYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI1MiwxOCArMjUyLDE4IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcnVuTG9vcChD
RlJ1bkxvb3BHZXRDdXJyZW50KCkpCiAjZW5kaWYgLy8gVVNFKENGKQogICAgICwgaGVhcCh0aGlz
LCBoZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxG
YXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2Fj
YWdlQWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRv
cihzdGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNh
Z2U6OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlx
dWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5
cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQot
ICAgICwgY2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2Vs
bEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQot
ICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBD
ZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2Vs
bCkpKQotICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNTdHJpbmdI
ZWFwQ2VsbFR5cGU+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoc3Rk
OjptYWtlX3VuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKKyAgICAs
IGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcj4oKSkKKyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8
R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKKyAg
ICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQorICAgICwgYXV4aWxpYXJ5SGVhcENl
bGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVl
ZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCisgICAgLCBpbW11dGFibGVCdXR0
ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVz
KERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2lu
dGVycykpKQorICAgICwgY2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4o
Q2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkp
KQorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxs
VHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkp
KQorICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5
cGU+KCkpCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCi0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5p
cXVlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCi0gICAgLCB3ZWJBc3Nl
bWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8V2ViQXNzZW1ibHlGdW5j
dGlvbkhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxU
eXBlKG1ha2VVbmlxdWU8SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKKyAg
ICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxXZWJBc3NlbWJs
eUZ1bmN0aW9uSGVhcENlbGxUeXBlPigpKQogI2VuZGlmCiAgICAgLCBwcmltaXRpdmVHaWdhY2Fn
ZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4
aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQo
KSkgLy8gSGFzaDoweDNlN2NkNzYyCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5
cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5
NDYKQEAgLTI5Niw3ICsyOTYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgLCBtX2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVh
ZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKICAg
ICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkK
LSAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChzdGQ6
Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQorICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5
dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKG1ha2VVbmlxdWU8U2ltcGxlU3RhdHM+KCkpCiAgICAg
LCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykKICAgICAsIHN0cmluZ0NhY2hl
KCp0aGlzKQogICAgICwgc3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0aGlzKQpAQCAtMzEyLDggKzMx
Miw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
aW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCkKICNlbmRpZgogICAgICwgbV9zdGFja1BvaW50ZXJB
dFZNRW50cnkoMCkKLSAgICAsIG1fY29kZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUNhY2hl
PigpKQotICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoc3RkOjptYWtlX3VuaXF1ZTxCdWlsdGlu
RXhlY3V0YWJsZXM+KCp0aGlzKSkKKyAgICAsIG1fY29kZUNhY2hlKG1ha2VVbmlxdWU8Q29kZUNh
Y2hlPigpKQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMobWFrZVVuaXF1ZTxCdWlsdGluRXhl
Y3V0YWJsZXM+KCp0aGlzKSkKICAgICAsIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50KDApCiAg
ICAgLCBtX3ByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZChJc1dhdGNoZWQpCiAgICAgLCBtX2NvbnRy
b2xGbG93UHJvZmlsZXJFbmFibGVkQ291bnQoMCkKQEAgLTQwNyw3ICs0MDcsNyBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKCp0aGlzKTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNl
UHJvZmlsZXIoKSkpIHsKLSAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKKyAgICAgICAgbV9wZXJCeXRlY29k
ZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKIAogICAg
ICAgICBTdHJpbmdQcmludFN0cmVhbSBwYXRoT3V0OwogICAgICAgICBjb25zdCBjaGFyKiBwcm9m
aWxlclBhdGggPSBnZXRlbnYoIkpTQ19QUk9GSUxFUl9QQVRIIik7CkBAIC00MjMsNyArNDIzLDcg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIC8vIHdvbid0
IHVzZSB0aGlzLgogICAgIG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgU2lt
cGxlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CiAKLSAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+KCp0aGlz
KTsKKyAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsKIAogICAgIGlmIChPcHRpb25zOjp1c2VUeXBlUHJv
ZmlsZXIoKSkKICAgICAgICAgZW5hYmxlVHlwZVByb2ZpbGVyKCk7CkBAIC00NDIsOSArNDQyLDkg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2VuZGlmIC8vIEVO
QUJMRShTQU1QTElOR19QUk9GSUxFUikKIAogICAgIGlmIChPcHRpb25zOjp1c2VSYW5kb21pemlu
Z0Z1enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50KHN0ZDo6bWFrZV91bmlxdWU8
UmFuZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQo
bWFrZVVuaXF1ZTxSYW5kb21pemluZ0Z1enplckFnZW50PigqdGhpcykpOwogICAgIGVsc2UgaWYg
KE9wdGlvbnM6OnVzZURvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRG
dXp6ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudD4o
KnRoaXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxEb3VibGVQcmVkaWN0
aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAKICAgICBpZiAoT3B0aW9uczo6YWx3YXlzR2VuZXJh
dGVQQ1RvQ29kZU9yaWdpbk1hcCgpKQogICAgICAgICBzZXRTaG91bGRCdWlsZFBDVG9Db2RlT3Jp
Z2luTWFwcGluZygpOwpAQCAtNDU3LDkgKzQ1Nyw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IGFueSBzdHVicyB0aGF0IHRoZSBKSVQgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZCBp
biBub24tY29tcGlsYXRpb24gdGhyZWFkcy4KICAgICBpZiAoY2FuVXNlSklUKCkpIHsKLSAgICAg
ICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKKyAgICAgICAgaml0
U3R1YnMgPSBtYWtlVW5pcXVlPEpJVFRodW5rcz4oKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKLSAg
ICAgICAgZnRsVGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKKyAgICAg
ICAgZnRsVGh1bmtzID0gbWFrZVVuaXF1ZTxGVEw6OlRodW5rcz4oKTsKICNlbmRpZiAvLyBFTkFC
TEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3Io
Q29kZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZv
cihDb2RlRm9yQ29uc3RydWN0KTsKQEAgLTYxOSw3ICs2MTksNyBAQCBXYXRjaGRvZyYgVk06OmVu
c3VyZVdhdGNoZG9nKCkKIEhlYXBQcm9maWxlciYgVk06OmVuc3VyZUhlYXBQcm9maWxlcigpCiB7
CiAgICAgaWYgKCFtX2hlYXBQcm9maWxlcikKLSAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhlYXBQcm9maWxlcj4oKnRoaXMpOworICAgICAgICBtX2hlYXBQcm9maWxl
ciA9IG1ha2VVbmlxdWU8SGVhcFByb2ZpbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2hlYXBQ
cm9maWxlcjsKIH0KIApAQCAtMTA0MSw4ICsxMDQxLDggQEAgc3RhdGljIGJvb2wgZGlzYWJsZVBy
b2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KHVuc2lnbmVkJiBjb3VudGVyLCBjb25zdCBGdW5jJiBk
b0QKIGJvb2wgVk06OmVuYWJsZVR5cGVQcm9maWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVUeXBl
UHJvZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyPigpOwotICAgICAgICB0aGlzLT5tX3R5cGVQcm9m
aWxlckxvZyA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CisgICAg
ICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXI+KCk7Cisg
ICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXJM
b2c+KCp0aGlzKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3Bl
Y3RUb0NvdW50KG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVUeXBlUHJvZmlsZXIp
OwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgYm9vbCBWTTo6ZGlzYWJsZVR5cGVQcm9maWxlcigpCiBi
b29sIFZNOjplbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZUNv
bnRyb2xGbG93UHJvZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX2NvbnRyb2xG
bG93UHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7Cisg
ICAgICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9IG1ha2VVbmlxdWU8Q29udHJvbEZs
b3dQcm9maWxlcj4oKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJl
c3BlY3RUb0NvdW50KG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudCwgZW5hYmxlQ29u
dHJvbEZsb3dQcm9maWxlcik7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFZNOjpkdW1wVHlw
ZVByb2ZpbGVyRGF0YSgpCiAKIHZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKIHsKLSAgICBtX21pY3JvdGFz
a1F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0aGlzLCAmZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQobWFr
ZVVuaXF1ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkp
OwogfQogCiB2b2lkIFZNOjpkcmFpbk1pY3JvdGFza3MoKQpAQCAtMTIzMCwxNCArMTIzMCwxNCBA
QCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKIHsKICAgICBpZiAobV9zaGFkb3dDaGlj
a2VuKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zaGFkb3dDaGlja2VuID0gc3RkOjptYWtlX3Vu
aXF1ZTxTaGFkb3dDaGlja2VuPigpOworICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8
U2hhZG93Q2hpY2tlbj4oKTsKIH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCiAgICAgSXNvU3Vic3Bh
Y2UqIFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1l
KTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxJc29TdWJzcGFjZT4g
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBh
dXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJu
IG1fIyNuYW1lLmdldCgpOyBcCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwg
Y2VsbEhlYQogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7IFwKICAg
ICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlw
ZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+
IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAgICAgICAg
V1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3Bh
Y2UpOyBcCiAgICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAyNGYxOGFk
MDJkZTJmZWY5MDA5MzQ0ODY0MzBjOThmZTk0OTQyNGVmLi41MzM5M2NiMjU4Zjc0MmM2YWNmZGRl
YWVjNmM3MTc1NjQ0ZDc5NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBjbGFzcyBBaXJJUkdl
bmVyYXRvciB7CiAgICAgdm9pZCBlbWl0UGF0Y2hwb2ludChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2Nr
LCBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCwgVG1wIHJlc3VsdCwgVmVjdG9yPENvbnN0cmFp
bmVkVG1wLCBpbmxpbmVTaXplPiYmIGFyZ3MpCiAgICAgewogICAgICAgICBpZiAoIW1fcGF0Y2hw
b2ludFNwZWNpYWwpCi0gICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nh
c3Q8QjM6OlBhdGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3Vu
aXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIG1fcGF0Y2hwb2lu
dFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNwZWNpYWwqPihtX2NvZGUuYWRk
U3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSkpOwogCiAgICAgICAg
IEluc3QgaW5zdChQYXRjaCwgcGF0Y2gsIEFyZzo6c3BlY2lhbChtX3BhdGNocG9pbnRTcGVjaWFs
KSk7CiAgICAgICAgIEluc3QgcmVzdWx0TW92OwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIGNsYXNzIEFp
cklSR2VuZXJhdG9yIHsKIAogICAgICAgICAvLyBGSVhNRTogTWFrZSBhIGhhc2htYXAgb2YgdGhl
c2UuCiAgICAgICAgIEIzOjpDaGVja1NwZWNpYWw6OktleSBrZXkoYnJhbmNoKTsKLSAgICAgICAg
QjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwq
PihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtl
eSkpKTsKKyAgICAgICAgQjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIz
OjpDaGVja1NwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpDaGVja1Nw
ZWNpYWw+KGtleSkpKTsKIAogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBk
dW1teSB2YWx1ZXMKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NDA0MApAQCAtMjEzOSwxMCArMjEzOSwxMCBAQCBhdXRvIEFpcklSR2VuZXJhdG9y
OjpvcmlnaW4oKSAtPiBCMzo6T3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRl
cm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29tcGlsYXRpb25Db250
ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNp
emVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxV
bmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1v
ZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21F
eGNlcHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFs
RnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVybmFsRnVuY3Rp
b24+KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0g
c3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAgY29tcGlsYXRpb25Db250ZXh0
Lndhc21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Cisg
ICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8
Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJ
VCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAgQjM6OlByb2NlZHVyZSBwcm9j
ZWR1cmU7CiAgICAgQ29kZSYgY29kZSA9IHByb2NlZHVyZS5jb2RlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMjA5NDE3N2Vk
NmYxODNhYjRkODYyZWMyMjY3ZDMwZjI4YjdkZTViNi4uMTU4ZGY5ZmE5ZjBjOWY3MjFhYzI5Mjc3
ODE4OGRjZjI4ZTcwN2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMTU1MSwxMCArMTU1MSwxMCBAQCBhdXRvIEIzSVJHZW5l
cmF0b3I6Om9yaWdpbigpIC0+IE9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50
ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQ29udGV4
dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXpl
X3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCBDb21waWxhdGlvbk1vZGUgY29t
cGlsYXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVw
LCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVz
dWx0ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25D
b250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxw
ZXJzPigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJl
ZGRlckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21w
aWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVy
cz4oKTsKIAogICAgIFByb2NlZHVyZSBwcm9jZWR1cmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCBmOTg1ZDUyM2MyZTkzZjNiZDIzZmI3YzU3MTJi
NTg2OGNjMTZhNjg1Li41MDZkZjRiZWZkMGQ1NjQxODQ0Y2U1Mjc5NTExNWY2MTI4NzE2MWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zMTUsNyAr
MzE1LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9j
a2VyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVu
dHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4o
CisgICAgICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0t
PmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAg
ICAgICAgICAgICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlv
blB0clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIGZ1bmN0
aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5n
KEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFt
ZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLAogICAg
ICAgICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXByb2R1Y3Rz
KSk7CiAgICAgICAgICAgICB9CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21w
bGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dh
c21JbnRlcm5hbEZ1bmN0aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50
ZXJuYWxGdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNv
bXBpbGF0aW9uPigKICAgICAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVy
LCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiRW1iZWRkZXItPldlYkFzc2VtYmx5IGVudHJ5cG9pbnRb
JWldICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1f
bW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkp
LmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250ZXh0LmVt
YmVkZGVyRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCBjNTEzZmQyZjUwZWQ2ZmIxN2Mz
Mzg1ZWYyOTA1Mjc4MTczOTIxMDM3Li4wZDdhMDNjMzYxMjljZDFkZTJjNTRmZmNkNTAyOTViNTZj
NWI4OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxh
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBA
IC05NSw3ICs5NSw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisgICAgb21nRW50cnlwb2ludC5jb21w
aWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVf
Q09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2ViQXNzZW1ibHkgT01HIGZ1
bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgbV9mdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4
U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRl
eFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21F
bnRyeXBvaW50Qnlwcm9kdWN0cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVdvcmtsaXN0LmNwcAppbmRleCAzNmQ3NGMxNGIxOGM3MDdiODEyYTA0ODdmOTFlMjljMzg1Mzkx
ZGUyLi42NjBmOTU2NTczOGIxMGEzMGYzZTdjYzgxOGEzMmM4NTg3ODIxMjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBA
QCBXb3JrbGlzdDo6V29ya2xpc3QoKQogICAgIG1fdGhyZWFkcy5yZXNlcnZlQ2FwYWNpdHkobnVt
YmVyT2ZDb21waWxhdGlvblRocmVhZHMpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2sp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNvbXBpbGF0aW9uVGhyZWFk
czsgaSsrKQotICAgICAgICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykpOworICAgICAgICBtX3RocmVhZHMu
dW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhp
cykpOwogfQogCiBXb3JrbGlzdDo6fldvcmtsaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTVG9XYXNtLmNwcAppbmRleCA1ZGQ0NTFiZWE4NGQ1OTBiYmYwZmNiMDc2ZTI2ZmZk
M2NjN2I4MWFjLi43MzUyMjAyODkzN2M2ZGFjMWZjNDczYzdlNGNkYzY0OTU4Y2U4ZWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC00Niw3ICs0Niw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21wCiB7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAq
Y29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVDsKIAotICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVz
dWx0ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogICAgIGppdC5lbWl0RnVuY3Rp
b25Qcm9sb2d1ZSgpOwogCiAgICAgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFzIGNvZGVCbG9ja3Mu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdmMDMzZmVj
MWMzNjlhOTQyM2IzM2NmOGViMzMzNGM1MWNlMDgwOGIuLmM0Yjc3Y2FkYmU1ZWVhNTczZWM4NTJi
OTVlZjZhNzg5YjgyODUzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmNwcApAQCAtMTcwNiw3ICsxNzA2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVy
IHsKICAgICAgICAgICAgIGR1bXBEaXNqdW5jdGlvbihtX2JvZHlEaXNqdW5jdGlvbi5nZXQoKSk7
CiAjZW5kaWYKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRl
cm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9w
YXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCeXRl
Y29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2Vz
SW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAogICAgIHZvaWQgY2hl
Y2tJbnB1dCh1bnNpZ25lZCBjb3VudCkKQEAgLTE5MjYsNyArMTkyNiw3IEBAIGNsYXNzIEJ5dGVD
b21waWxlciB7CiAgICAgICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCA9IHBhcmVudGhlc2VzQmVn
aW4uYXRvbS5zdWJwYXR0ZXJuSWQ7CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMg
PSBsYXN0U3VicGF0dGVybklkIC0gc3VicGF0dGVybklkICsgMTsKLSAgICAgICAgYXV0byBwYXJl
bnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51
bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBj
YWxsRnJhbWVTaXplKTsKIAogICAgICAgICB1bnNpZ25lZCBmaXJzdFRlcm1JblBhcmVudGhlc2Vz
ID0gYmVnaW5UZXJtICsgMTsKICAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+dGVybXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbmRUZXJtIC0gZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyAr
IDIpOwpAQCAtMTk5Nyw3ICsxOTk3LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKIAogICAgIHZv
aWQgcmVnZXhCZWdpbih1bnNpZ25lZCBudW1TdWJwYXR0ZXJucywgdW5zaWduZWQgY2FsbEZyYW1l
U2l6ZSwgYm9vbCBvbmNlVGhyb3VnaCkKICAgICB7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxs
RnJhbWVTaXplKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPEJ5dGVE
aXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwogICAgICAgICBtX2Jv
ZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpCb2R5QWx0ZXJuYXRpdmVCZWdp
bihvbmNlVGhyb3VnaCkpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbMF0uZnJh
bWVMb2NhdGlvbiA9IDA7CiAgICAgICAgIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXggPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCA3YTdjMjA2YzdlNDM1OTdj
ZmU0YzRkNGRjYThhMDdhYzVhYzFmNjYwLi44YWI2MmI3YmEzOTgxMDUxZWJiZGFjZDZlNDdhMDU4
YWFkZDNkOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMzg5
OSw3ICszODk5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtF
TFkoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6ZHVtcFJlZ0V4cERpc2Fz
c2VtYmx5KCkpKQotICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFlhcnJEaXNhc3NlbWJsZXI+KHRoaXMpOworICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBt
YWtlVW5pcXVlPFlhcnJEaXNhc3NlbWJsZXI+KHRoaXMpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fz
c2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRTdGFydE9mQ29kZShsYWJl
bCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCA0
OWY3N2Y2OWM2ODVjNjUyMDNkZjNmMDM0YzkwZDE4NzdjOTJkYzliLi5mY2M1MWIyNzdmNTAxMTAz
YjdjNjViYmQzM2E1Y2E0MTBkODFjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyclBhdHRlcm4uY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgY2xhc3MgQ2hhcmFjdGVyQ2xhc3ND
b25zdHJ1Y3RvciB7CiAgICAgewogICAgICAgICBjb2FsZXNjZVRhYmxlcygpOwogCi0gICAgICAg
IGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigp
OworICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFz
cz4oKTsKIAogICAgICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLnN3YXAobV9tYXRjaGVz
KTsKICAgICAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLnN3YXAobV9yYW5nZXMpOwpAQCAt
NDQxLDcgKzQ0MSw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAs
IG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2UoKSwgcGF0dGVy
bi51bmljb2RlKCkgPyBDYW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNT
MikKICAgICAgICAgLCBtX3N0YWNrTGltaXQoc3RhY2tMaW1pdCkKICAgICB7Ci0gICAgICAgIGF1
dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAg
ICBhdXRvIGJvZHkgPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAg
bV9wYXR0ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBi
b2R5LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlv
bnMuYXBwZW5kKFdURk1vdmUoYm9keSkpOwpAQCAtNDU2LDcgKzQ1Niw3IEBAIGNsYXNzIFlhcnJQ
YXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICBtX3BhdHRlcm4ucmVzZXRGb3JSZXBhcnNpbmco
KTsKICAgICAgICAgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnJlc2V0KCk7CiAKLSAgICAg
ICAgYXV0byBib2R5ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7Cisg
ICAgICAgIGF1dG8gYm9keSA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAg
ICAgICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2
ZSA9IGJvZHktPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1
bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShib2R5KSk7CkBAIC02MDgsNyArNjA4LDcgQEAgY2xhc3Mg
WWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNT
RVJUKCFvcHRHcm91cE5hbWUpOwogCi0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsK
KyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJu
RGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rl
cm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0
dGVybiwgc3VicGF0dGVybklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBjYXB0dXJl
LCBmYWxzZSkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlv
bi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25z
LmFwcGVuZChXVEZNb3ZlKHBhcmVudGhlc2VzRGlzanVuY3Rpb24pKTsKQEAgLTYxNiw3ICs2MTYs
NyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKIAogICAgIHZvaWQgYXRvbVBhcmVu
dGhldGljYWxBc3NlcnRpb25CZWdpbihib29sIGludmVydCA9IGZhbHNlKQogICAgIHsKLSAgICAg
ICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJu
RGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlz
anVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7
CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKFBhdHRl
cm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbiwgbV9wYXR0ZXJuLm1fbnVtU3VicGF0
dGVybnMgKyAxLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBmYWxzZSwgaW52ZXJ0KSk7
CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdB
bHRlcm5hdGl2ZSgpOwogICAgICAgICBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb24gPSBp
bnZlcnQ7CkBAIC03MDcsNyArNzA3LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7
CiAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gZGlzanVuY3Rp
b24tPm1fYWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWZpbHRlclN0
YXJ0c1dpdGhCT0wgfHwgIWFsdGVybmF0aXZlLT5tX3N0YXJ0c1dpdGhCT0wpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIW5ld0Rpc2p1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0Rp
c2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAg
ICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVu
Y3Rpb24+KCk7CiAgICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uLT5tX3BhcmVudCA9
IGRpc2p1bmN0aW9uLT5tX3BhcmVudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgUGF0dGVybkFsdGVybmF0aXZlKiBuZXdBbHRlcm5hdGl2ZSA9IG5ld0Rpc2p1bmN0aW9uLT5h
ZGROZXdBbHRlcm5hdGl2ZSgpOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBZYXJyUGF0dGVy
bjo6ZHVtcFBhdHRlcm4oUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3Ry
aW5nKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGFueWNoYXJDcmVhdGUoKQog
ewotICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNs
YXNzPigpOworICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNs
YXNzPigpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFu
Z2UoMHgwMCwgMHg3ZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBw
ZW5kKENoYXJhY3RlclJhbmdlKDB4MDA4MCwgMHgxMGZmZmYpKTsKICAgICBjaGFyYWN0ZXJDbGFz
cy0+bV9jaGFyYWN0ZXJXaWR0aHMgPSBDaGFyYWN0ZXJDbGFzc1dpZHRoczo6SGFzQm90aEJNUEFu
ZE5vbkJNUDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0
ZXJuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4IDBi
N2RiMmViYThhZDUyZGVkMmI1ZjdlNjdlNTQ1YjhjMTZjOTQ1YzcuLjdlODJjODU1YTg3OGU2YzE4
MGVkNTIxZjFmN2FkNDhkOGMxZmJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uaApAQCAtMzQxLDcgKzM0MSw3IEBAIHN0cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb24g
ewogICAgIAogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWRkTmV3QWx0ZXJuYXRpdmUoKQogICAg
IHsKLSAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVy
bkFsdGVybmF0aXZlPih0aGlzKSk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChtYWtl
VW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOwogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UGF0dGVybkFsdGVybmF0aXZlKj4obV9hbHRlcm5hdGl2ZXMubGFzdCgpLmdldCgpKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9y
ZWdleF90YWJsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFi
bGVzCmluZGV4IGMxZjlmOTlkZTA5MWNlY2IyZTFkYjU1YzM4ZmEzNjAzMTFlZTM3ZjQuLjY5Y2Q4
ODg2NTc4NTRjZDU0NDVmODYzZTIyZDU1ZmZiOWM0MGVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwpAQCAtOTUsMTEgKzk1LDExIEBAIGZv
ciBuYW1lLCBjbGFzc2VzIGluIHR5cGVzLml0ZW1zKCk6CiAgICAgZnVuY3Rpb24gKz0gKCJ7XG4i
KQogICAgIGlmIGVtaXRUYWJsZXMgYW5kIGNsYXNzZXNbIlVzZVRhYmxlIl06CiAgICAgICAgIGlm
ICJJbnZlcnNlIiBpbiBjbGFzc2VzOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0
byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0Rh
dGEsIHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQorICAgICAgICAgICAgZnVuY3Rp
b24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xh
c3M+KF8lc0RhdGEsIHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQogICAgICAgICBl
bHNlOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAo
bmFtZSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNz
ID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1l
KSkKICAgICBlbHNlOgotICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCisgICAgICAgIGZ1
bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3Rl
ckNsYXNzPigpO1xuIikKICAgICBoYXNCTVBDaGFyYWN0ZXJzID0gRmFsc2UKICAgICBoYXNOb25C
TVBDaGFyYWN0ZXJzID0gRmFsc2UKICAgICBmb3IgKG1pbiwgbWF4KSBpbiByYW5nZXM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJv
cGVydHlUYWJsZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJV
bmljb2RlUHJvcGVydHlUYWJsZXMucHkKaW5kZXggZjlmZWY0NjhkMmI1ZGRhNmFhZWVhYjBiM2Zj
MDU4Y2QzZWVjZWFjMS4uNTI2ZmI2ZTdhYzNhMjI3YTZkNDNjYmJlZmQyNzAyZDFhMGM1NGNlOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29k
ZVByb3BlcnR5VGFibGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVy
YXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQpAQCAtNTI5LDcgKzUyOSw3IEBAIGRlZiBk
dW1wTWF0Y2hEYXRhKHNlbGYsIGZpbGUsIHZhbHVlc1BlckxpbmUsIGRhdGFMaXN0LCBmb3JtYXR0
ZXIpOgogICAgIGRlZiBkdW1wKHNlbGYsIGZpbGUsIGNvbW1hQWZ0ZXIpOgogICAgICAgICBmaWxl
LndyaXRlKCJzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiB7fSgpXG57e1xu
Ii5mb3JtYXQoc2VsZi5nZXRDcmVhdGVGdW5jTmFtZSgpKSkKICAgICAgICAgZmlsZS53cml0ZSgi
ICAgIC8vIE5hbWUgPSB7fSwgbnVtYmVyIG9mIGNvZGVQb2ludHM6IHt9XG4iLmZvcm1hdChzZWxm
Lm5hbWUsIHNlbGYuY29kZVBvaW50Q291bnQpKQotICAgICAgICBmaWxlLndyaXRlKCIgICAgYXV0
byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KFxuIikK
KyAgICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVl
PENoYXJhY3RlckNsYXNzPihcbiIpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAgICAgc3RkOjpp
bml0aWFsaXplcl9saXN0PFVDaGFyMzI+KCIpCiAgICAgICAgIHNlbGYuZHVtcE1hdGNoRGF0YShm
aWxlLCA4LCBzZWxmLm1hdGNoZXMsIGxhbWJkYSBmaWxlLCBtYXRjaDogKGZpbGUud3JpdGUoInsw
OjA9IzR4fSIuZm9ybWF0KG1hdGNoKSkpKQogICAgICAgICBmaWxlLndyaXRlKCIpLFxuIikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcCBiL1Nv
dXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcAppbmRleCBjYzcwN2RlM2Zm
NGVjMTM4Y2ZhNDZhYjRjOGUxM2FiYjY1OTNjYmExLi44Yzk3YzFhMjQxYjcyOWFmOGYzMWYzNTlj
N2Y1MTc3YTYzNDA5ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0Zh
aXJuZXNzVGVzdC5jcHAKKysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rl
c3QuY3BwCkBAIC02MSw4ICs2MSw4IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHN0YXRpYyB2
b2lkIHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKICAgICAgICAgTG9ja1R5cGUgbG9jazsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IHN0ZDo6bWFrZV91
bmlxdWU8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFk
PltdPihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNv
dW50cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkW10+KG51bVRo
cmVhZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFk
cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51
bVRocmVhZHMpOwogICAgIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5j
cHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggZjE1NjUw
ZDRjOWM4ZmE2NzcwZjg5MTJmMDlkZmUzOTI5MTMwN2MzNC4uYmU3YWJhMzkwZWI1M2UzNTgxZTM2
ZjRhOGI5NTAwZDBlMjk5Zjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xv
Y2tTcGVlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0
LmNwcApAQCAtNzQsOSArNzQsOSBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBMb2NrVHlwZT4KICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4g
bG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJl
YWRHcm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltd
PiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJl
YWRHcm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhy
ZWFkcyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBz
ICogbnVtVGhyZWFkc1Blckdyb3VwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRk
aW5nPExvY2tUeXBlPltdPiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJl
YWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAgICAgIHZvbGF0aWxlIGJvb2wg
a2VlcEdvaW5nID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29uY3VycmVu
dFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCmluZGV4IDBiNTQx
YjhjNzNkMGY1OTg2NTFiZjk1ZTc2OTNiODA3Yzk5OWY3OGEuLjg4NGVkNzMyMzM3NjFhMjlmYjQ5
NmYwYWQwOTg5Njc1NDVlNzAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJl
bnRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKQEAgLTI1
NCw3ICsyNTQsNyBAQCBjbGFzcyBDb25jdXJyZW50VmVjdG9yIGZpbmFsIHsKICAgICB2b2lkIGFs
bG9jYXRlU2VnbWVudCgpCiAgICAgewogICAgICAgICBtX3NlZ21lbnRzLmdyb3cobV9udW1TZWdt
ZW50cyArIDEpOwotICAgICAgICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNlZ21lbnQ+KCk7CisgICAgICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysr
XSA9IG1ha2VVbmlxdWU8U2VnbWVudD4oKTsKICAgICB9CiAKICAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAppbmRleCA4M2My
MDc1MWY4NWY0ZTRkMjAxNTYxNDQxY2E4MzE0MWNiNWMzN2ZmLi5jNjNjMDU1YTBhMDM0MWRmNmE1
YWYyNzBhNGFjY2I4ZDU3ZDc4NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1Ro
cmVhZFRhc2tIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tI
YW5kbGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6
OnRhc2tSdW5Mb29wKCkKIAogICAgIHdoaWxlICghbV90YXNrUXVldWUuaXNLaWxsZWQoKSkgewog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBh
dXRvZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29s
Rm9yUnVuTG9vcDo6VXNlKSA/IHN0ZDo6bWFrZV91bmlxdWU8QXV0b2RyYWluZWRQb29sPigpIDog
bnVsbHB0cjsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1
dG9kcmFpbmVkUG9vbCA9IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xG
b3JSdW5Mb29wOjpVc2UpID8gbWFrZVVuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRy
OwogCiAgICAgICAgICAgICBtX3Rhc2tRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBlcmZvcm1UYXNr
KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBi
L1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCBlZmVmYjNhMzEzM2U4M2Y2NDMzNmZk
MmVjMmRhNTJhNTQ4MzJlNjIxLi45NWI2NzU5NzJkMzEwZTNkZGJkNDEzZDRhOGY4ZDEyODhmMjBm
YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNl
L1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0zMDEsOSArMzAxLDExIEBAIHVzaW5nIFdURjo6ZmFz
dEFsaWduZWRGcmVlOwogI2RlZmluZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBcCiBwdWJsaWM6
IFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFz
dEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVU
b0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCiAKICNkZWZpbmUgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEIFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5
cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hl
cmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFt
LmNwcAppbmRleCAzZTI1M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFlZmM3Y2E3OWI2NGVhLi43MDc0
YzAzYWJhZjhmY2YzOTc3ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmlu
dFN0cmVhbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0
cmVhbT4gRmlsZVByaW50U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb24KICAg
ICBpZiAoIWZpbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxGaWxlUHJpbnRTdHJlYW0+KGZpbGUpOwogfQogCiB2b2lkIEZpbGVQcmludFN0cmVhbTo6dnBy
aW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmluZGV4
IDA1ZTM2OTc4MjViYzNkMzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4M2UuLjBiNzk1ODY3NDgwZmQw
MzIyNDEyNDU0ZTdkMGFmODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtNjcsMTEgKzY3LDEx
IEBAIGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNf
cG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6
OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAg
RnVuY3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9jYWxsYWJsZVdy
YXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5
cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQorICAgICAgICA6IG1fY2Fs
bGFibGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVU
eXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46
OnR5cGU+CiAgICAgRnVuY3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0gICAgICAgIDogbV9jYWxsYWJs
ZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlv
blR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJs
ZVdyYXBwZXIobWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUs
IE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CiAKICAgICBPdXQgb3BlcmF0b3IoKShJbi4u
LiBpbikgY29uc3QKICAgICB7CkBAIC04NCwxNCArODQsMTQgQEAgY2xhc3MgRnVuY3Rpb248T3V0
KEluLi4uKT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2
YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2Fs
bGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2Fs
bGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxs
YWJsZVR5cGUmJiBjYWxsYWJsZSkKICAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91
dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVy
ID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwg
SW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0
ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+
Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oRnVuY3Rpb25U
eXBlIGYpCiAgICAgewotICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RG
TW92ZShmKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6
OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAzYjFlOTUz
MDNkZTU0MDUxNDNmYjU2M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQwNzdmODRmMDJhMWZhMWMxYmUw
MzRhODZlYjM1MGQ2ZDdmNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNTg4LDEwICs1ODgsMTAgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19I
QVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKLSAgICAgICAgLCBt
X211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VV
bmlxdWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJM
RQotICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyAgICAgICAg
LCBtX3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAt
MTMzNCwxMCArMTMzNCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX2RlbGV0ZWRD
b3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJh
dG9ycyhudWxscHRyKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigp
KQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlmCiAjaWYgRFVN
UF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5p
cXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIHVuc2ln
bmVkIG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXplKCk7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rv
ciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxl
JiYgb3RoZXIpCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRl
cmF0b3JzKG51bGxwdHIpCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+
KCkpCisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICAgICB7
CiAgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDllODcyMGY2ZDlhNzk4MGI5NWU1YjEzYzVlNjU1
YzM4OTQ5MzA0YjUuLjUzNzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUwZDZhMThjNWQ5ZmVjMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBA
QCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlN
b25pdG9yKGJvb2wgdXNlKQogICAgIH0KIAogICAgIGlmICh1c2UpIHsKLSAgICAgICAgbV9tZWFz
dXJlbWVudFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVz
c3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9
IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVy
RmlyZWQpOwogICAgICAgICBtX21lYXN1cmVtZW50VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3Mp
OwogICAgIH0gZWxzZQogICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9T
dGRMaWJFeHRyYXMuaAppbmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlmMTljM2MxZmMxZmRjNTdhYjRk
NGFiLi5kZWY4MzQwZTNjOGFjYzg1ODZkYTRmMDBiYjhlOWRjNTZlMDEzZWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRM
aWJFeHRyYXMuaApAQCAtNTY1LDYgKzU2NSwyNCBAQCBjb25zdGV4cHIgc2l6ZV90IGNseih1aW50
MzJfdCB2YWx1ZSwgWmVyb1N0YXR1cyBtaWdodEJlWmVybyA9IFplcm9TdGF0dXM6Ok1heUJlWgog
CiB9IC8vIG5hbWVzcGFjZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNz
IFQsIGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlx
dWUoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlw
ZW5hbWUgVDo6X19mYXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lOTElORSBkZWNsdHlwZShh
dXRvKSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKK3sK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZGVmaW5lIFdURk1vdmUodmFsdWUp
IHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCiAKIHVzaW5nIFdURjo6
S0I7CkBAIC01ODUsMyArNjAzLDUgQEAgdXNpbmcgV1RGOjptZXJnZURlZHVwbGljYXRlZFNvcnRl
ZDsKIHVzaW5nIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjsKIHVzaW5nIFdURjo6c2FmZUNhc3Q7
CiB1c2luZyBXVEY6OnRyeUJpbmFyeVNlYXJjaDsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZTsKK3Vz
aW5nIFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZl
ci5oCmluZGV4IDI2YmJjOGZkNjdhNDkzNDYzMjIxZDYxOTYxOGViN2M2NDY4NjQwMzAuLmNhMzNm
ODY3ZDM4YjU3NTkyMDE0MWQ1MjNjMzA3YWFlN2M4MjBiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1N0cmVhbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5o
CkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFN0cmVhbUJ1ZmZlciB7CiAgICAgICAgIG1fc2l6ZSAr
PSBzaXplOwogICAgICAgICB3aGlsZSAoc2l6ZSkgewogICAgICAgICAgICAgaWYgKCFtX2J1ZmZl
ci5zaXplKCkgfHwgbV9idWZmZXIubGFzdCgpLT5zaXplKCkgPT0gQmxvY2tTaXplKQotICAgICAg
ICAgICAgICAgIG1fYnVmZmVyLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigpKTsKKyAg
ICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQobWFrZVVuaXF1ZTxCbG9jaz4oKSk7CiAgICAg
ICAgICAgICBzaXplX3QgYXBwZW5kU2l6ZSA9IHN0ZDo6bWluKEJsb2NrU2l6ZSAtIG1fYnVmZmVy
Lmxhc3QoKS0+c2l6ZSgpLCBzaXplKTsKICAgICAgICAgICAgIG1fYnVmZmVyLmxhc3QoKS0+YXBw
ZW5kKGRhdGEsIGFwcGVuZFNpemUpOwogICAgICAgICAgICAgZGF0YSArPSBhcHBlbmRTaXplOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9V
bmlxdWVSZWYuaAppbmRleCA3M2U5ZGZlYzA2ZmQ3ODdmM2IwNmIzZGM5ZGE2NWE1NTA0ZDFjMDI5
Li42NTkxMjUxYjg2MjdkZjM2Y2YyZWI5Zjc0NzkzZWY0ODljYTFlOTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYu
aApAQCAtMzMsMTEgKzMzLDE4IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgVW5pcXVlUmVmOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdz
PgotVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCitVbmlxdWVSZWY8
VD4gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCiB7
CiAgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CitVbmlxdWVS
ZWY8VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0ZWRDbGFzcywgaW50Pjo6dmFs
dWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxUPihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
Y2xhc3MgVW5pcXVlUmVmIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzcwLDcgQEAgY2xhc3MgVW5pcXVl
UmVmIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5pcXVlUHRyKCkgeyByZXR1cm4g
V1RGTW92ZShtX3JlZik7IH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFz
cy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+
IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAogICAgIFVuaXF1ZVJlZihU
JiBvdGhlcikKQEAgLTc5LDMgKzg2LDQgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAogdXNpbmcgV1RG
OjpVbmlxdWVSZWY7CiB1c2luZyBXVEY6Om1ha2VVbmlxdWVSZWY7Cit1c2luZyBXVEY6Om1ha2VV
bmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGli
LmNwcAppbmRleCA1ZTViYThhYmViZGJkNDliYmI4MzdkZDRjNGZkNjliZDZmZmMzNjFmLi5mYjIx
MWQwYTI5NjFkZmMxNmFhNmUyMWEyMWE5NzRkZmYxNTI2OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hB
ZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAg
Z19zb3VyY2Vfc2V0X25hbWUoc291cmNlLmdldCgpLCAiW1dlYktpdF0gUnVuTG9vcCBkaXNwYXRj
aEFmdGVyIik7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUoc291cmNlLmdldCgpLCBnX2dl
dF9tb25vdG9uaWNfdGltZSgpICsgZHVyYXRpb24ubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8RGlzcGF0Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBtYWtl
VW5pcXVlPERpc3BhdGNoQWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZ19z
b3VyY2Vfc2V0X2NhbGxiYWNrKHNvdXJjZS5nZXQoKSwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+
IGdib29sZWFuIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0
PiBjb250ZXh0KHN0YXRpY19jYXN0PERpc3BhdGNoQWZ0ZXJDb250ZXh0Kj4odXNlckRhdGEpKTsK
ICAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
CmluZGV4IGRjYmEwNjA4MmM1ZjY2ZTMxOWExNWVlNTk3ZmM2NDk3NjZiMDVlNmMuLjViZjRlNmQw
MWRlODQzZWQyODc4ODNlYTNhMDNlODQ5NDkzYmVjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1
c3RlcnM6Okl0ZXJhdG9yOjpJbXBsIHsKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3Rl
cnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNp
Z25lZCBpbmRleCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEltcGw+KHN0cmluZ1Zp
ZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
KHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8SW1wbD4oc3Ry
aW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5v
blNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBmZGI4Y2UyOTJkNzM4ZGE0MjAzOGFhOTY1
YWYzYWNhMTc4YTgwY2ViLi44ZGM3NmZhMmU1OWVhNjdlMDIxNzM4YzMxMWEzNTc3ZjRkMzZlNjkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQ
cm9wZXJ0eUludmFsaWRVUkwoY29uc3QgU3RyaW5nJiBwcm9wCiB2b2lkIEFwcGxpY2F0aW9uTWFu
aWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewogICAgIGlmIChtX2NvbnNvbGVDb250ZXh0KQotICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KEpTQzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlND
OjpNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24g
bWFuaWZlc3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7
CisgICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNlOjpPdGhlciwgSlND
OjpNZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmlu
ZygiUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZlc3RVUkwuc3RyaW5n
KCksICI6ICJfcywgbWVzc2FnZSkpKTsKIH0KIAogVVJMIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJz
ZXI6OnBhcnNlU3RhcnRVUkwoY29uc3QgSlNPTjo6T2JqZWN0JiBtYW5pZmVzdCwgY29uc3QgVVJM
JiBkb2N1bWVudFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29u
L05hdmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZp
Z2F0b3JCZWFjb24uY3BwCmluZGV4IDliZmE1Zjk0OTk0YjA1NDUwNmI4MjZhMzE0YjgyNTgyN2Vh
NDFhZGIuLjdlNGY3OTQ3MWUyYzU5ZmU3MWMxNDgxMzJmNGI1NTFkOGZmYzc5MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBOYXZpZ2F0b3JCZWFjb24qIE5hdmlnYXRvckJlYWNvbjo6ZnJvbShOYXZp
Z2F0b3ImIG5hdmlnYXRvcikKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8
TmF2aWdhdG9yQmVhY29uKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3Is
IHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmln
YXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9y
QmVhY29uPihuYXZpZ2F0b3IpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5n
ZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdU
Rk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAppbmRleCA1ZWQxZjVjY2E2NDFlYjA0ZWMwZTBh
MGNlMDZjODM3MjQ1NjhhMmZmLi42MTUzOTQzMGRmYjk2MTZmZDI4OGZlZDkyY2I5NDRmZjQ0NmIw
MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0Nh
Y2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNo
ZXMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIERPTVdpbmRvd0NhY2hlcyogRE9NV2luZG93Q2FjaGVz
Ojpmcm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0
aWNfY2FzdDxET01XaW5kb3dDYWNoZXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2lu
ZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93Q2FjaGVzPih3
aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRv
d0NhY2hlcz4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUo
bmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKaW5kZXggMDY1NmJlZjBiMTcx
OGUzM2RiYzdmYTBlZTYwYzU3ZDQ4ZTM4ZDRlOC4uNTExOGE0ODg1MGYyNDJkMDQ0ZDNiNDBmZjBl
M2IyM2JiOTZlMjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9X
b3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXMqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKFdvcmtlckds
b2JhbFNjb3BlJiBzY29wZSkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8
V29ya2VyR2xvYmFsU2NvcGVDYWNoZXMqPihTdXBwbGVtZW50PFdvcmtlckdsb2JhbFNjb3BlPjo6
ZnJvbSgmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9i
YWxTY29wZUNhY2hlcz4oc2NvcGUpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBw
bGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNy
ZWRlbnRpYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1l
bnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCmluZGV4IDcxZjQzOGNmNzg2Yzc2ZDdiNTg3MjE1
NTk3NjY4YjYyMzYxYjU5OTMuLjExODFiZDk4NWEyMmJhNDkzZjgzNjMxZDdlNDFmZWU4NzliNTZi
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1l
bnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCkBAIC02Myw3ICs2
Myw3IEBAIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbShO
YXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JDcmVkZW50aWFscyogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckNyZWRlbnRpYWxzKj4oU3VwcGxlbWVudDxOYXZp
Z2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3Vw
cGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5hdmlnYXRvckNyZWRlbnRpYWxzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvckNyZWRlbnRpYWxzPigpOwogICAgICAgICBzdXBwbGVtZW50ID0g
bmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxl
bWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAKaW5kZXggYjZmZDY4ZDY3MmVkZTM4Nzc4YzE1YzZmZWFhZjQ2YjQ1NWU1YTFjZC4uNzVl
ZGI2YTkzNjM4ODBlNTg3YzM1NzU2YjE0ZGVjOWY5YjQ1ZTY5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJ
U09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICAgICAgICAg
YXV0byBzeXN0ZW1JRCA9IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGVl
a1N5c3RlbUlEKHZpZXcsIG9mZnNldCk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5D
X0lOSVREQVRBKQogICAgICAgICBpZiAoc3lzdGVtSUQgPT0gSVNPRmFpclBsYXlTdHJlYW1pbmdQ
c3NoQm94OjpmYWlyUGxheVN5c3RlbUlEKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9
IHN0ZDo6bWFrZV91bmlxdWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOworICAgICAg
ICAgICAgYXV0byBmcHNQc3NoID0gbWFrZVVuaXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hC
b3g+KCk7CiAgICAgICAgICAgICBpZiAoIWZwc1Bzc2gtPnJlYWQodmlldywgb2Zmc2V0KSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgcHNzaEJveGVz
LmFwcGVuZChXVEZNb3ZlKGZwc1Bzc2gpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBPcHRpb25hbDxW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJv
eD4+PiBJbml0RGF0YQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHN5c3RlbUlEKTsKICNl
bmRpZgotICAgICAgICBhdXRvIHBzc2hCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1Byb3RlY3Rp
b25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKKyAgICAgICAgYXV0byBwc3NoQm94ID0gbWFr
ZVVuaXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7CiAgICAgICAg
IGlmICghcHNzaEJveC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggODI2Mjg5M2ZlMGFmOTk5MTRl
ZDM5ZTk2MGNmMTBhNzUzNDA3MDViNi4uODM3ZGYxMjNhZTU5NmYzNTM3YzkxNTI3MDNlM2QyNzFi
MzQ2ZWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCkBAIC02MSwxNSArNjEsMTUgQEAgc3RydWN0
IENETUZhY3Rvcnkgewogc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGluc3RhbGxlZENETUZh
Y3RvcmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZChW
ZWN0b3I8Q0RNRmFjdG9yeSo+IHsKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RN
KiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5
PihjZG0pOyB9LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyBy
ZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCiAgICAg
ICAgICAgICBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtLCBMZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAg
ICAgICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMuIGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTA5MzE4LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMyMAotICAgICAgICBuZXcg
Q0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
RE1Qcml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtd
KExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXll
cj4oY2RtKTsgfSwKICAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNL
ZXlTeXN0ZW0sIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1l
VHlwZSksCiAKICNpZiAoSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKSB8fCBIQVZFKEFWU1RSRUFN
U0VTU0lPTikpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5
KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExl
Z2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM+KGNkbSk7IH0sCiAgICAgICAgICAgICBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9y
dHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAjZW5kaWYKICAgICB9KTsKQEAgLTEwNyw3ICsxMDcs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNPiBMZWdhY3lDRE06OmNyZWF0ZShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGVnYWN5Q0RNPihrZXlTeXN0ZW0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeUNETT4o
a2V5U3lzdGVtKTsKIH0KIAogTGVnYWN5Q0RNOjpMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETS5oCmluZGV4IDQ1OGVjNTNiNDMzN2IxNzEwNTU2ZjhhMTdiNGVm
MDFlZmNlMTU2NGUuLmZiNWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1ZmUwYTVlODk2NDA2YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5oCkBAIC01MCw3ICs1MCw4IEBAIGNsYXNzIExlZ2FjeUNETUNsaWVudCB7
CiAgICAgdmlydHVhbCBSZWZQdHI8TWVkaWFQbGF5ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IExl
Z2FjeUNETSopIGNvbnN0ID0gMDsKIH07CiAKLWNsYXNzIExlZ2FjeUNETSB7CitjbGFzcyBMZWdh
Y3lDRE0gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IExlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TVByaXZhdGVDbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCmluZGV4IGM5MzE2ZGZkOGFi
YjQwNTQ5MmY1NTVlYjNkMWIzZDA5MTdjZWZmNTAuLjNhOGMwMGY1MjMxZjUyYTZlODlkMTgzZDE1
MTFjM2FjODc3M2ExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNs
ZWFyS2V5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIExlZ2FjeUNETVByaXZhdGVDbGVhcktl
eTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVT
ZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q0RNU2Vzc2lvbkNsZWFyS2V5PihjbGllbnQpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCmluZGV4IDY2MDJlYmZlOTA0
NDVjNTU5M2M2ZTVmZjhmMWE1YjJlMmRkOTJjMTcuLmNmYjAyNmMyMDJkYTZmZTA5ZmM4ZGNiNDRm
ZmJiYWNiOGE5ZGM5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVN
ZWRpYVBsYXllci5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IExlZ2FjeUNETTsKIAogY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyIDogcHVibGljIENETVBy
aXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IENETVByaXZhdGVNZWRpYVBsYXllcihMZWdhY3lDRE0qIGNkbSkKICAgICAg
ICAgOiBtX2NkbShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktl
eS5oCmluZGV4IDJmN2IwMzUzOWVmOGVhNDc0ZTIzNmQwNWQ5ZTE3ZmVjNDg0ZTYyN2UuLmJjNzc3
ZjBjYmM4Y2U3Yjg5ZTk0M2I4YTYzZTRlNmU4Mjg5YjM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVh
cktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IDogcHVibGljIExlZ2FjeUNE
TVNlc3Npb24geworY2xhc3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIExlZ2Fj
eUNETVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IENETVNlc3Npb25DbGVhcktleShMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVh
bCB+Q0RNU2Vzc2lvbkNsZWFyS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IGFkZGM1NDg5NmI4YTQ0MzhjZmJmZDA2NTgwYWRi
Yzg2MGE4MWY4NjQuLmRiNjM5MGU3Zjk5MjU5NzdiODdjYTAwOWVkYWJkNTFjZGI2NjczMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBA
IC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxv
YiYgYmxvYiwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgIH0KIAogICAgIG1fYmxv
YkxvYWRlci5lbXBsYWNlKCp0aGlzKTsKLSAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKKyAgICBt
X2Jsb2JMb2FkZXItPmxvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2Fk
ZXIsIGNvbnN1bWVyKTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+bG9hZGVy
LT5pc1N0YXJ0ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKaW5kZXggY2QzNDVlYjllYzM0MGMzNmUwZjBhNmVlZDgyZGQ5ODhiNGY5N2Qz
OS4uOTQwMTNjZjRlYTY1MjM4ZDgzYjliNGM4MWRiN2QxODE2NTMyNDcxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0yNDMsNyArMjQz
LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QKIAogICAgIHJlc3BvbnNlLT5hZGRBYm9ydFN0
ZXBzKHJlcXVlc3Quc2lnbmFsKCkpOwogCi0gICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Qm9keUxvYWRlcj4ocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9u
c2VDYWxsYmFjaykpOworICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBtYWtlVW5pcXVlPEJv
ZHlMb2FkZXI+KHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKHJlc3BvbnNlQ2FsbGJhY2spKTsKICAg
ICBpZiAoIXJlc3BvbnNlLT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpKQog
ICAgICAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gbnVsbHB0cjsKIH0KQEAgLTM4Miw3ICsz
ODIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogCiBib29sIEZldGNoUmVzcG9uc2U6OkJvZHlM
b2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNo
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0
Y2hMb2FkZXI+KCp0aGlzLCAmbV9yZXNwb25zZS5tX2JvZHktPmNvbnN1bWVyKCkpOworICAgIG1f
bG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jlc3BvbnNlLm1fYm9k
eS0+Y29uc3VtZXIoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwog
ICAgIHJldHVybiBtX2xvYWRlci0+aXNTdGFydGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKaW5kZXggNjEwMjA4OTlj
YmM0YTdlNDMzYjE1MWRjY2FlYmZlOTA3NjRkM2UyZC4uODUwZDIyZGUyODViYjMzNWQyMmU4YzJl
MjUzYjdhYjZlMGM2MDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1l
cGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcApAQCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JHYW1l
cGFkKiBOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAg
IE5hdmlnYXRvckdhbWVwYWQqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHYW1l
cGFkKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CisgICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZp
Z2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBiMDlmYzM0MzNiYmZiYjcyOGYzMTVjMTUzM2E2
ZjJjOWU0ZmMwMDcxLi5jZDgwNzBiMjA3ZGI4YTM0NDAyNmNmZjYxMDViODVlZTE5YmM1MjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgY29uc3QgY2hhciog
R2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiB2b2lkIHByb3ZpZGVHZW9s
b2NhdGlvblRvKFBhZ2UqIHBhZ2UsIEdlb2xvY2F0aW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAg
QVNTRVJUKHBhZ2UpOwotICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8R2Vv
bG9jYXRpb25Db250cm9sbGVyPigqcGFnZSwgY2xpZW50KSk7CisgICAgU3VwcGxlbWVudDxQYWdl
Pjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUo
KSwgbWFrZVVuaXF1ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKIH0K
ICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKaW5kZXgg
YjM0ZjQ5YTY3MWQ4NWY1MTQyYjhiYWYwZjUyYmE5OTFhYzQzNTlkYy4uMzVkZmJmOGYzZjI1Njlj
MDEzNTM1NjYzMDBmNWI3ODM3ZGUyOGZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpm
cm9tKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBz
dXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yR2VvbG9jYXRpb24qPihTdXBwbGVtZW50
PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3Ip
OwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJv
dmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVu
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGM3MjAzYTlhODY0MDk3
MDUwZDNkYzAwNzkyZjdhNmI1ODFmYWEyNWUuLjVlOWQ5Nzk2NmJmZGU1OGU2NjA5OWE1MDllNjE4
Yjg0YzE4ZDA1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6ZnJv
bShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIHN1
cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqPihTdXBwbGVt
ZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYg
KCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93
KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHBy
b3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcAppbmRleCBmNDMwOTBjNGRjYzNlZGU1ZTI3ZDFhYTQ0Mzg0NDQ3ZDg0OWM2
NDBiLi45YTc4MTI3ODQ2M2VkMGE0YTBhZGRkM2Y3ZGIwYzU2NTY5NjJiOWNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBA
IC01MTcsNyArNTE3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3Rv
cmU6OmluZGV4KGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogICAgIGlmICghaW5mbykKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAn
aW5kZXgnIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBzcGVjaWZpZWQgaW5kZXggd2FzIG5vdCBm
b3VuZC4iX3MgfTsKIAotICAgIGF1dG8gaW5kZXggPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkluZGV4
Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOworICAgIGF1dG8gaW5k
ZXggPSBtYWtlVW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5m
bywgKnRoaXMpOwogCiAgICAgUmVmPElEQkluZGV4PiByZWZlcmVuY2VkSW5kZXggeyAqaW5kZXgg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCmluZGV4IGZhMmNkN2VhZDA5YjYwNTUyNWI4Y2I0NDFlZjcwMDFkODMzNTAxMDAu
LjQyMjQzZmJhNTczMTI5NTQxODg5NGEzMjA0M2U4OWUwYjJjMWE1ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE3
OSw3ICsxNzksNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2Fj
dGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplYwogICAgIGlmICghaW5mbyB8fCAo
IWZvdW5kICYmICFpc1ZlcnNpb25DaGFuZ2UoKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RGb3VuZEVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29iamVjdFN0b3JlJyBvbiAnSURC
VHJhbnNhY3Rpb24nOiBUaGUgc3BlY2lmaWVkIG9iamVjdCBzdG9yZSB3YXMgbm90IGZvdW5kLiJf
cyB9OwogCi0gICAgYXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCT2JqZWN0
U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0
byBvYmplY3RTdG9yZSA9IG1ha2VVbmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBv
YmplY3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KG9iamVj
dFN0b3JlTmFtZSwgV1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC02NjcsNyArNjY3LDcgQEAg
UmVmPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJgogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3JlZmVy
ZW5jZWRPYmplY3RTdG9yZUxvY2spOwogCi0gICAgYXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8s
ICp0aGlzKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9y
ZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJh
d09iamVjdFN0b3JlID0gb2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0
U3RvcmVzLnNldChpbmZvLm5hbWUoKSwgV1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC03NTUs
NyArNzU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3Jl
YXRlSW5kZXgoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3IKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+Y3JlYXRlSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwogICAgIH0pKTsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCSW5kZXg+
KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0b3JlKTsKIH0KIAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3Bl
SW5kZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dv
cmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBhNDg1MDNiNGQyZDgwNDI5
NDY4NGE2NWE2NWViZDY0ZjIzM2NkN2I5Li45Yjc1Nzc0OTIxYjQ2NTA2ZjU4M2RlN2ZlYzQyNTBl
ODU0YWNlNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9X
b3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKiBXb3JrZXJH
bG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbShXb3JrZXJHCiAgICAgICAgIGlmICghY29u
bmVjdGlvblByb3h5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUluZGV4
ZWREYXRhYmFzZT4oc2NvcGUsICpjb25uZWN0aW9uUHJveHkpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihz
Y29wZSwgKmNvbm5lY3Rpb25Qcm94eSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwCmluZGV4IDk0OGNmNzQ2NjNhZTY5YzgyZGE0NDRlMDkzNDczZGQ4NTZkNGRlOTMuLjM3
NzExZGMxMDNkYjZjOWE5YjgxM2RiYzlkZjc5OWI3ZTI2YTZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI+IElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKElEQkNvbm5lY3Rpb25Ub1NlcnZl
ckRlCiAKIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6SURCQ29ubmVjdGlvblRvU2VydmVyKElEQkNv
bm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlJiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUobWFr
ZVdlYWtQdHIoZGVsZWdhdGUpKQotICAgICwgbV9wcm94eShzdGQ6Om1ha2VfdW5pcXVlPElEQkNv
bm5lY3Rpb25Qcm94eT4oKnRoaXMpKQorICAgICwgbV9wcm94eShtYWtlVW5pcXVlPElEQkNvbm5l
Y3Rpb25Qcm94eT4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNw
cAppbmRleCAyNzUzZmQwYzI0NTdiOWMwOWQ5ZDg5ZTRmNzYyYjQ3OWY4YjQ0MGIxLi44ZTFkZTA2
ZDcxZThmMGIyMjNkNjg2ZTVlMWE4YTIyMDliNzQzODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9w
ZXJhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgVHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5z
YWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAg
ICBpZiAobV9pbmRleElkZW50aWZpZXIpCiAgICAgICAgIG1faW5kZXhSZWNvcmRUeXBlID0gcmVx
dWVzdC5yZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGUoKTsKICAgICBpZiAoYXV0byogY3Vyc29yID0g
cmVxdWVzdC5wZW5kaW5nQ3Vyc29yKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVu
dGlmaWVyKCkpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKIAogICAgIG1f
aWRiUmVxdWVzdCA9ICZyZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCBmNmFiNGYzYWIyYzI4YjBl
ZTIyNDY4OTRhMGRlNTg0YmQwODc1MWZkLi5mNTU2OGUzMjVkMzcwMTFhMjc1ZTAxZGY5NjZkZmRm
NTk1MmU4YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFVuaXF1ZUlEQkRhdGFi
YXNlJiBJREJTZXJ2ZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0
YWJhc2VJZGVuCiAKICAgICBhdXRvIHVuaXF1ZUlEQkRhdGFiYXNlID0gbV91bmlxdWVJREJEYXRh
YmFzZU1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAgaWYgKHVuaXF1ZUlEQkRhdGFi
YXNlLmlzTmV3RW50cnkpCi0gICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVy
KTsKKyAgICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOwogCiAgICAgcmV0dXJuICp1
bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5n
U3RvcmUoY29uc3QgSURCRGF0YWJhc2UKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUo
aWRlbnRpZmllcik7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJCYWNr
aW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0
aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcik7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9k
YXRhYmFzZURpcmVjdG9yeVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIp
OwogfQogCiB2b2lkIElEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSkKQEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIElEQlNlcnZlcjo6UXVvdGFV
c2VyOjppbml0aWFsaXplU3BhY2VVc2VkKHVpbnQ2NF90IHNwYWNlVXNlZCkKIElEQlNlcnZlcjo6
UXVvdGFVc2VyJiBJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcihjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbikKIHsKICAgICByZXR1cm4gKm1fcXVvdGFVc2Vycy5lbnN1cmUob3JpZ2luLCBbdGhp
cywgJm9yaWdpbl0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90YVVzZXI+
KCp0aGlzLCBtX3F1b3RhTWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50
T3JpZ2luIHsgb3JpZ2luIH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxRdW90YVVzZXI+
KCp0aGlzLCBtX3F1b3RhTWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50
T3JpZ2luIHsgb3JpZ2luIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhW
YWx1ZVN0b3JlLmNwcAppbmRleCA2OTgzYzlkN2VhZmY1NjE2NzIwNGQ5NTJmMWYyMjY3YmI0MGNh
NGJhLi44ZDkyMWQ4ZWZlNmJhODQwYTMwZDYxZGZkYzZhNzIxZTgyOGE0M2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhW
YWx1ZVN0b3JlLmNwcApAQCAtOTIsNyArOTIsNyBAQCBJREJFcnJvciBJbmRleFZhbHVlU3RvcmU6
OmFkZFJlY29yZChjb25zdCBJREJLZXlEYXRhJiBpbmRleEtleSwgY29uc3QgSURCS2V5RGF0YQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IoQ29uc3RyYWludEVycm9yKTsKIAogICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5kZXhWYWx1ZUVudHJ5PihtX3VuaXF1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEluZGV4VmFsdWVFbnRyeT4obV91bmlxdWUpOwogCiAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkS2V5KHZhbHVlS2V5KTsKICAgICBtX29yZGVy
ZWRLZXlzLmluc2VydChpbmRleEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uLmNwcAppbmRleCA0N2NjNDJmZDI2ZDY0NzNjNjQxOTI3ZTk5MmQ0ZWM2ZThk
N2JmOGVlLi41ZTcxNDQ5Nzg0YTBkYTA3Njc3ODlhOGRlZGM1MjI2ODlmNGQ4ZGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbj4gTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNyZWF0
ZShNZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rp
b25JbmZvJiBpbmZvKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uPihiYWNraW5nU3RvcmUsIGluZm8pOworICAgIHJldHVybiBtYWtl
VW5pcXVlPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPihiYWNraW5nU3RvcmUsIGluZm8p
OwogfQogCiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24oTWVtb3J5SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElE
QlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKQEAgLTUyLDcgKzUyLDcgQEAgTWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1lbW9yeUlEQkJh
Y2tpbmdTdG8KICAgICAgICAgSURCRGF0YWJhc2VJbmZvIGluZm87CiAgICAgICAgIGF1dG8gZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS5nZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhpbmZvKTsKICAg
ICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNl
SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICAgICAg
ICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
aW5mbyk7CiAgICAgfQogfQogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBNZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3JlJiBv
YmplY3QKIAogICAgIGF1dG8gb3JpZ2luYWxBZGRSZXN1bHQgPSBtX29yaWdpbmFsVmFsdWVzLmFk
ZCgmb2JqZWN0U3RvcmUsIG51bGxwdHIpOwogICAgIGlmIChvcmlnaW5hbEFkZFJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPEtleVZhbHVlTWFwPigpOworICAgICAgICBvcmlnaW5hbEFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOwogCiAgICAgYXV0byog
bWFwID0gb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdkMTQyYjAwNTBhYjYwODgxZTM4N2JlOGMx
OTg5NDdhYzZlOGRkODEuLmNmZmUzMzM3Zjc5NDQ4YjhjMjEzZGJiZTVmYTM1YjRkM2E3MGYyZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0
YXRpYyB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAwMDA7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50
aWZpZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRl
bnRpZmllcik7CiB9CiAKIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0
b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAgLTYxLDcgKzYx
LDcgQEAgTWVtb3J5SURCQmFja2luZ1N0b3JlOjp+TWVtb3J5SURCQmFja2luZ1N0b3JlKCkgPSBk
ZWZhdWx0OwogSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERh
dGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgaWYgKCFtX2RhdGFiYXNl
SW5mbykKLSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKKyAgICAgICAgbV9kYXRh
YmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFi
YXNlTmFtZSgpLCAwKTsKIAogICAgIGluZm8gPSAqbV9kYXRhYmFzZUluZm87CiAgICAgcmV0dXJu
IElEQkVycm9yIHsgfTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OnNldERhdGFiYXNlSW5mbyhjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCiAgICAgLy8g
SXQgaXMgbm90IHZhbGlkIHRvIGRpcmVjdGx5IHNldCBkYXRhYmFzZSBpbmZvIG9uIGEgYmFja2lu
ZyBzdG9yZSB0aGF0IGhhc24ndCBhbHJlYWR5IHNldCBpdHMgb3duIGRhdGFiYXNlIGluZm8uCiAg
ICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKIAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0g
bWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogfQogCiBJREJFcnJvciBNZW1vcnlJ
REJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZv
JiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJbmRleC5jcHAKaW5kZXggNDlkZGNhNmJkNDBkMjlkNDJlMzhiODUxMzFjODlm
ZGZlN2Q0NzkyZC4uODU5NWRiYjhmNGE3ZWUzZDE5MWUzMWZiNjEwYjA0OTc1Yjg3NDYwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlu
ZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SW5kZXguY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgSURCRXJyb3IgTWVtb3J5SW5kZXg6OnB1
dEluZGV4S2V5KGNvbnN0IElEQktleURhdGEmIHZhbHVlS2V5LCBjb25zdCBJbmRleEtleSYgaW4K
ICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SW5kZXg6OnByb3Zpc2lvbmFsUHV0SW5kZXhLZXki
KTsKIAogICAgIGlmICghbV9yZWNvcmRzKSB7Ci0gICAgICAgIG1fcmVjb3JkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOworICAgICAgICBtX3Jl
Y29yZHMgPSBtYWtlVW5pcXVlPEluZGV4VmFsdWVTdG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKICAg
ICAgICAgbm90aWZ5Q3Vyc29yc09mQWxsUmVjb3Jkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTI1
OSw3ICsyNTksNyBAQCBNZW1vcnlJbmRleEN1cnNvciogTWVtb3J5SW5kZXg6Om1heWJlT3BlbkN1
cnNvcihjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4o
KnRoaXMsIGluZm8pOwogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCBlZDZlYmE5MjdmMWY0ZjZiOWMzMDY4
ZjZiNWQ4OGRlMjk5NzI2N2ViLi41YjQ0YTczODc4YzlmZGQ3YTFlMDVhOTViNzY1N2ViZTYzNjM1
MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTI1OSw4ICsyNTksOCBAQCBJREJF
cnJvciBNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uJiB0cmFuc2FjdGlvbgogCiAgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpIHsKICAgICAg
ICAgQVNTRVJUKCFtX29yZGVyZWRLZXlzKTsKLSAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gc3Rk
OjptYWtlX3VuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKLSAgICAgICAgbV9vcmRlcmVkS2V5cyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YVNldD4oKTsKKyAgICAgICAgbV9rZXlWYWx1ZVN0b3Jl
ID0gbWFrZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgbV9vcmRlcmVkS2V5cyA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPElEQktleURhdGFTZXQ+KCk7CiAgICAgfQog
CiAgICAgYXV0byBtYXBSZXN1bHQgPSBtX2tleVZhbHVlU3RvcmUtPnNldChrZXlEYXRhLCB2YWx1
ZS5kYXRhKCkpOwpAQCAtNDk3LDcgKzQ5Nyw3IEBAIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yKiBN
ZW1vcnlPYmplY3RTdG9yZTo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNvckluZm8mCiAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlPYmplY3RT
dG9yZUN1cnNvcj4oKnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0
dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKaW5kZXggNGYyMDhlNGQwNjA0Yjg3N2RkMWQ3NDg2N2I4ZTNlMjg3Mjdh
YzA0NC4uNmU4OTNmOTg0NGU3MDhlZDE5NzJiNGEyYzE4YjE1OWZhNzBiNTk1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTYyMyw3ICs2MjMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBv
cHVsYXRlSW5pdGlhbAogICAgIH0KIAogICAgIC8vIFRoaXMgaW5pdGlhbCBkYXRhYmFzZSBpbmZv
IG1hdGNoZXMgdGhlIGRlZmF1bHQgdmFsdWVzIHdlIGp1c3QgcHV0IGludG8gdGhlIG1ldGFkYXRh
IGRhdGFiYXNlLgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
bV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0
cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKCkKQEAgLTY1OCw3ICs2NTgsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlz
dGluZ0RhdGFiYXNlSQogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBkYXRhYmFzZUluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFz
ZVZlcnNpb24pOworICAgIGF1dG8gZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VWZXJzaW9uKTsKIAogICAgIHsKICAgICAgICAg
U1FMaXRlU3RhdGVtZW50IHNxbCgqbV9zcWxpdGVEQiwgIlNFTEVDVCBpZCwgbmFtZSwga2V5UGF0
aCwgYXV0b0luYywgbWF4SW5kZXhJRCBGUk9NIE9iamVjdFN0b3JlSW5mbzsiX3MpOwpAQCAtODIw
LDcgKzgyMCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxp
c2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAKICAgICBTdHJpbmcgZGJGaWxl
bmFtZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKIAotICAgIG1fc3FsaXRlREIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNR
TGl0ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkg
ewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBw
YXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0
ZURCKCk7CkBAIC05MDMsMTEgKzkwMywxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGVzdGFibGlz
aCB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIHRoYXQgYWxyZWFkeSBleGlzdHMiX3MgfTsKICAgICB9
CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxp
dGVJREJUcmFuc2FjdGlvbj4oKnRoaXMsIGluZm8pOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CiAK
ICAgICBhdXRvIGVycm9yID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKm1fc3Fs
aXRlREIpOwogICAgIGlmIChlcnJvci5pc051bGwoKSAmJiBpbmZvLm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNl
SW5mb0JlZm9yZVZlcnNpb25DaGFuZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oKm1fZGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9y
ZVZlcnNpb25DaGFuZ2UgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJ
bmZvKTsKIAogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiVVBEQVRF
IElEQkRhdGFiYXNlSW5mbyBTRVQgdmFsdWUgPSA/IHdoZXJlIGtleSA9ICdEYXRhYmFzZVZlcnNp
b24nOyJfcyk7CiAgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMjYx
MSw3ICsyNjExLDcgQEAgU1FMaXRlU3RhdGVtZW50KiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNh
Y2hlZFN0YXRlbWVudChTUUxpdGVJREJCYWNraW5nU3RvcmU6OlMKICAgICB9CiAKICAgICBpZiAo
bV9zcWxpdGVEQikgewotICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6
ZV90PihzcWwpXSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVE
Qiwgc3RhdGVtZW50KTsKKyAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNp
emVfdD4oc3FsKV0gPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0
YXRlbWVudCk7CiAgICAgICAgIGlmIChtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6
ZV90PihzcWwpXS0+cHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIG1fY2FjaGVk
U3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gbnVsbHB0cjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IGY4NDA1YTc5OGEzNjgxMGRjNTc2YWYxZTczYmNhZjUz
MTAyMzdiYWYuLmM2YjNmZDk1M2EwZDUzYWMxNTY4ZTI4NDhjYmM3OGExMmYxOTU3NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJDdXJzb3IuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3Qg
cHJlZmV0Y2hMaW1pdCA9IDg7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNR
TGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIGF1dG8gY3Vyc29yID0gc3Rk
OjptYWtlX3VuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKKyAgICBh
dXRvIGN1cnNvciA9IG1ha2VVbmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5m
byk7CiAKICAgICBpZiAoIWN1cnNvci0+ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTksNyArNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURC
Q3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aQog
CiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJl
Q3JlYXRlQmFja2luZ1N0b3JlQ3Vyc29yKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgY29uc3QgdWludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgdWludDY0X3QgaW5kZXhJRCwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwg
aW5kZXhJRCwgcmFuZ2UpOworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJD
dXJzb3I+KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7CiAKICAg
ICBpZiAoIWN1cnNvci0+ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTk5LDcgKzE5OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxp
dGVTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRVcHBl
cktleS5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0
aW9uKCkpOwogCi0gICAgbV9zdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRl
bWVudD4obV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3Fs
KTsKKyAgICBtX3N0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5z
YWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOwogCiAgICAgaWYg
KG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChwcmVwYXJlL2lkKSAtICclcyci
LCBtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLmxhc3RFcnJv
ck1zZygpKTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0
IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvclR5
cGU6OktleUFuZFZhbHVlKQotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKKyAgICAgICAgICAgIHJlY29y
ZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YS5k
YXRhKCksIGtleURhdGEuc2l6ZSgpLCByZWNvcmQucmVjb3JkLnByaW1hcnlLZXkpKSB7CiAgICAg
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB2YWx1ZSBkYXRhIGZyb20g
ZGF0YWJhc2Ugd2hpbGUgYWR2YW5jaW5nIGluZGV4IGN1cnNvciIpOwpAQCAtNDg2LDcgKzQ4Niw3
IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5h
bEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJ
VEVfUk9XKSB7CiAgICAgICAgICAgICBvYmplY3RTdG9yZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9i
QXNWZWN0b3IoMCwga2V5RGF0YSk7Ci0gICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGtleURhdGEpKSk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbWFr
ZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtl
eURhdGEpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSByZWNvcmQgd2UncmUgdHJ5aW5n
IHRvIHJldHJpZXZlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlLgogICAg
ICAgICAgICAgLy8gU2tpcCBvdmVyIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggYTZhM2M1ZmZmMzM4MGMyNWVmNzM2MWU2ODhiZWYzNmMwNjE1ZmM4My4uZDIxMmRlMmI2
Yjg4YWZmZTBhMzViMGZkMGZkMzNmYzg2N2NlY2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQlRyYW5zYWN0aW9u
OjpiZWdpbihTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKCFtX3NxbGl0
ZVRyYW5zYWN0aW9uKTsKIAotICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKKyAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVu
aXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4oZGF0YWJhc2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4o
KTsKIAogICAgIGlmIChtX3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAppbmRleCAxZWJjMDgxOGY4OWVmM2Y3NmI0NmIyN2RlNzRmMzFjY2Mz
ZTQ2Y2NmLi5iZTU5MWI5ODg0MGVkYWQ2NDgwYWYwYzQxYjdjOGU5MmM1ZjEyYTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWREZWxldGVCYWNraW5nU3RvcmUodWludDY0X3QgZGVsZXRlZFZlcnNpb24pCiAg
ICAgLy8gd2Ugd29uJ3QgaGF2ZSBhIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8uIElu
IHRoYXQgY2FzZSwgd2UnbGwgbWFudWZhY3R1cmUgb25lIHVzaW5nIHRoZQogICAgIC8vIHBhc3Nl
ZCBpbiBkZWxldGVkVmVyc2lvbiBhcmd1bWVudC4KICAgICBpZiAoIW1fbW9zdFJlY2VudERlbGV0
ZWREYXRhYmFzZUluZm8pCi0gICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNl
TmFtZSgpLCBkZWxldGVkVmVyc2lvbik7CisgICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRh
YmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFi
YXNlTmFtZSgpLCBkZWxldGVkVmVyc2lvbik7CiAKICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVx
dWVzdCkgewogICAgICAgICBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5ub3RpZnlEaWREZWxldGVE
YXRhYmFzZSgqbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyk7CkBAIC03ODUsNyArNzg1
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZShjb25zdCBJ
REJEYXRhYmFzZUluZm8mIGluZm8sIGNvbnN0IEkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5C
YWNraW5nU3RvcmUiKTsKICAgICAKLSAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlx
dWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICBtX2JhY2tpbmdTdG9yZU9wZW5FcnJvciA9
IGVycm9yOwogCiAgICAgQVNTRVJUKG1faXNPcGVuaW5nQmFja2luZ1N0b3JlKTsKQEAgLTE3NDks
NyArMTc0OSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5z
YWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICAgICAgQVNTRVJUKG1fdmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uID09IHRyYW5zYWN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFt
X3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24gfHwgJm1fdmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uLT5kYXRhYmFzZUNvbm5lY3Rpb24oKSA9PSBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNv
bm5lY3Rpb24pOwogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9y
aWdpbmFsRGF0YWJhc2VJbmZvKCkpOwotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9y
aWdpbmFsRGF0YWJhc2VJbmZvKCkpOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlx
dWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFs
RGF0YWJhc2VJbmZvKCkpOwogICAgIH0KIAogICAgIElEQkVycm9yIHJlc3VsdCA9IHRyYW5zYWN0
aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9y
dGVkID8gdHJhbnNhY3Rpb24tPnJlc3VsdCgpIDogZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggYWY5MmViYzYzNjg4NWM2OWMyNWU1MDI5
OWNlNmM0YWNlYWE2NTljOC4uZTRkNjY5ZGE4YWM2MjkxNmY3YmNlMDMyODA5YTU1OWU4NTNjYzgy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAt
NTEsNyArNTEsNyBAQCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgogICAgIEFTU0VSVChkYXRhYmFz
ZSk7CiAKICAgICBpZiAobV90cmFuc2FjdGlvbkluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9u
TW9kZTo6VmVyc2lvbmNoYW5nZSkKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygpKTsKKyAgICAg
ICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihk
YXRhYmFzZS0+aW5mbygpKTsKIAogICAgIGF1dG8mIHNlcnZlciA9IGRhdGFiYXNlLT5zZXJ2ZXIo
KTsKICAgICBtX3NlcnZlciA9IG1ha2VXZWFrUHRyKHNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNw
cAppbmRleCBiMTBkODQwOTliMjUyOGU2ZjczYzI4YjE1MDRhOGE5MzI0ZDBiMjFhLi4yMTY0MTZh
ZmExMWNmMjU1ZDM2ZGVmYjNlZmYzNmVmYWYxOTU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKCkKIAogSURC
UmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5JiBjb25uZWN0aW9uUHJveHksIGNvbnN0IElEQk9wZW5EQlJlcXVlc3QmIHJlcXVlc3Qp
CiAgICAgOiBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25Qcm94eS5zZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6
Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVjdGlvblByb3h5LCByZXF1
ZXN0KSkKKyAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlk
ZW50aWZpZXI+KGNvbm5lY3Rpb25Qcm94eSwgcmVxdWVzdCkpCiAgICAgLCBtX2RhdGFiYXNlSWRl
bnRpZmllcihyZXF1ZXN0LmRhdGFiYXNlSWRlbnRpZmllcigpKQogICAgICwgbV9yZXF1ZXN0ZWRW
ZXJzaW9uKHJlcXVlc3QudmVyc2lvbigpKQogICAgICwgbV9yZXF1ZXN0VHlwZShyZXF1ZXN0LnJl
cXVlc3RUeXBlKCkpCkBAIC00OSw4ICs0OSw4IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0
RGF0YShjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByCiAK
IElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24pCiAgICAgOiBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKG9w
ZXJhdGlvbi50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkuY29ubmVjdGlvblByb3h5KCkuc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIoc3RkOjpt
YWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkp
KQotICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAg
LCBtX3JlcXVlc3RJZGVudGlmaWVyKG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihv
cGVyYXRpb24uaWRlbnRpZmllcigpKSkKKyAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKG1h
a2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCkpKQogICAgICwgbV9vYmplY3RTdG9yZUlkZW50aWZpZXIob3BlcmF0aW9uLm9iamVj
dFN0b3JlSWRlbnRpZmllcigpKQogICAgICwgbV9pbmRleElkZW50aWZpZXIob3BlcmF0aW9uLmlu
ZGV4SWRlbnRpZmllcigpKQogewpAQCAtNTgsNyArNTgsNyBAQCBJREJSZXF1ZXN0RGF0YTo6SURC
UmVxdWVzdERhdGEoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQog
ICAgICAgICBtX2luZGV4UmVjb3JkVHlwZSA9IG9wZXJhdGlvbi5pbmRleFJlY29yZFR5cGUoKTsK
IAogICAgIGlmIChvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKQotICAgICAgICBtX2N1cnNv
cklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm9w
ZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlvbi5jdXJzb3JJZGVu
dGlmaWVyKCkpOwogfQogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURC
UmVxdWVzdERhdGEmIG90aGVyKQpAQCAtNzEsMTEgKzcxLDExIEBAIElEQlJlcXVlc3REYXRhOjpJ
REJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgb3RoZXIpCiAgICAgLCBtX3JlcXVl
c3RUeXBlKG90aGVyLm1fcmVxdWVzdFR5cGUpCiB7CiAgICAgaWYgKG90aGVyLm1fcmVxdWVzdElk
ZW50aWZpZXIpCi0gICAgICAgIG1fcmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpOworICAg
ICAgICBtX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+KCpvdGhlci5tX3JlcXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIubV90cmFuc2Fj
dGlvbklkZW50aWZpZXIpCi0gICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRl
bnRpZmllcik7CisgICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
REJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAg
ICAgaWYgKG90aGVyLm1fY3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgbV9jdXJzb3JJZGVudGlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1
cnNvcklkZW50aWZpZXIpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAK
IElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgdGhh
dCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtMTAyLDExICsxMDIsMTEgQEAgdm9pZCBJREJSZXF1ZXN0
RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlcXVlc3REYXRhJiBzb3VyY2UsIElEQlJlcXVl
c3REYXRhJgogICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSWRlbnRpZmllciA9IHNvdXJj
ZS5tX2RhdGFiYXNlSWRlbnRpZmllci0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBpZiAoc291cmNl
Lm1fcmVxdWVzdElkZW50aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVxdWVzdElkZW50
aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5t
X3JlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVz
dElkZW50aWZpZXIpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpCi0g
ICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZp
ZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fdHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKICAgICBpZiAoc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlk
ZW50aWZpZXI+KCpzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRp
b24ubV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KCpzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogdWludDY0X3QgSURCUmVxdWVzdERh
dGE6OnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKaW5k
ZXggNDVjZmZhZWE2MDNhNTNiNTk5MDRjOGIxNGI3YTFkZWY3ZDI1ZjMxMC4uNDA4YjRlNDYyODcz
MzdiOWFjMzQ0YWZiZjQ2OTE1ODY4ZTgwZjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKQEAgLTE1Niw3
ICsxNTYsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmpl
Y3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9yZXF1ZXN0SWRlbnRp
ZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIElEQlJlcXVl
c3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEmIHJlcXVlc3Qp
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVz
b3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmll
cj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJlcXVlc3QubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVj
dCk7CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmpl
Y3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2Jq
ZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1f
Y3Vyc29ySWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAppbmRl
eCBhODk0NTRlNmU2M2Y2ZWI3Y2I1MDM4YjljOTMyZmEyMTg2MzNlZGM2Li40Y2JkNWQ5YmRmMGE4
NTIzYmY3ZjUyYWM1YmM1Y2I0YjdlZDEwNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC01Nywx
NSArNTcsMTUgQEAgSURCUmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXN1bHRE
YXRhJiBvdGhlcikKICAgICAsIG1fcmVzdWx0SW50ZWdlcihvdGhlci5tX3Jlc3VsdEludGVnZXIp
CiB7CiAgICAgaWYgKG90aGVyLm1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2RhdGFiYXNlSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIubV9kYXRhYmFzZUlu
Zm8pOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZv
Pigqb3RoZXIubV9kYXRhYmFzZUluZm8pOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSW5m
bykKLSAgICAgICAgbV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5z
YWN0aW9uSW5mbz4oKm90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKKyAgICAgICAgbV90cmFuc2Fj
dGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90aGVyLm1fdHJhbnNh
Y3Rpb25JbmZvKTsKICAgICBpZiAob3RoZXIubV9yZXN1bHRLZXkpCi0gICAgICAgIG1fcmVzdWx0
S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOwor
ICAgICAgICBtX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKm90aGVyLm1fcmVz
dWx0S2V5KTsKICAgICBpZiAob3RoZXIubV9nZXRSZXN1bHQpCi0gICAgICAgIG1fZ2V0UmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3VsdCk7Cisg
ICAgICAgIG1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dl
dFJlc3VsdCk7CiAgICAgaWYgKG90aGVyLm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBtX2dldEFs
bFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqb3RoZXIubV9nZXRB
bGxSZXN1bHQpOworICAgICAgICBtX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxs
UmVzdWx0Pigqb3RoZXIubV9nZXRBbGxSZXN1bHQpOwogfQogCiBJREJSZXN1bHREYXRhOjpJREJS
ZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAg
LTg3LDE1ICs4NywxNSBAQCB2b2lkIElEQlJlc3VsdERhdGE6Omlzb2xhdGVkQ29weShjb25zdCBJ
REJSZXN1bHREYXRhJiBzb3VyY2UsIElEQlJlc3VsdERhdGEmIGRlcwogICAgIGRlc3RpbmF0aW9u
Lm1fcmVzdWx0SW50ZWdlciA9IHNvdXJjZS5tX3Jlc3VsdEludGVnZXI7CiAKICAgICBpZiAoc291
cmNlLm1fZGF0YWJhc2VJbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fZGF0YWJhc2VJbmZv
LCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1f
ZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRh
YmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNl
Lm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqc291cmNlLm1fdHJhbnNh
Y3Rpb25JbmZvLCBJREJUcmFuc2FjdGlvbkluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbklu
Zm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElEQlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0
ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fcmVzdWx0S2V5KQotICAgICAgICBkZXN0aW5hdGlv
bi5tX3Jlc3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jl
c3VsdEtleSwgSURCS2V5RGF0YTo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24u
bV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCpzb3VyY2UubV9yZXN1bHRLZXks
IElEQktleURhdGE6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX2dldFJlc3VsdCkK
LSAgICAgICAgZGVzdGluYXRpb24ubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdl
dFJlc3VsdD4oKnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0UmVzdWx0OjpJc29sYXRlZENvcHkp
OworICAgICAgICBkZXN0aW5hdGlvbi5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVz
dWx0Pigqc291cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiAg
ICAgaWYgKHNvdXJjZS5tX2dldEFsbFJlc3VsdCkKLSAgICAgICAgZGVzdGluYXRpb24ubV9nZXRB
bGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKnNvdXJjZS5tX2dl
dEFsbFJlc3VsdCwgSURCR2V0QWxsUmVzdWx0OjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0
aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291
cmNlLm1fZ2V0QWxsUmVzdWx0LCBJREJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiB9CiAK
IElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZXJyb3IoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQpAQCAtMTEx
LDcgKzExMSw3IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3Vj
Y2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlCiAgICAgSURCUmVzdWx0RGF0YSBy
ZXN1bHQgeyByZXF1ZXN0SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1
bHRUeXBlOjpPcGVuRGF0YWJhc2VTdWNjZXNzOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQubV9k
YXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlv
bi5kYXRhYmFzZSgpLT5pbmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VV
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCktPmluZm8oKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxLDE1ICsxMjEsMTUgQEAgSURCUmVzdWx0RGF0
YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmkKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVlc3RJZGVudGlmaWVy
IH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5EYXRhYmFzZVVwZ3Jh
ZGVOZWVkZWQ7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9IHRy
YW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQu
bV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4odHJhbnNh
Y3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5mbygpKTsKLSAgICByZXN1
bHQubV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5m
bz4odHJhbnNhY3Rpb24uaW5mbygpKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCku
ZGF0YWJhc2UoKS0+aW5mbygpKTsKKyAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBtYWtl
VW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4odHJhbnNhY3Rpb24uaW5mbygpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFi
YXNlU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1
bHQge0lEQlJlc3VsdFR5cGU6OkRlbGV0ZURhdGFiYXNlU3VjY2VzcywgcmVxdWVzdElkZW50aWZp
ZXIgfTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oaW5mbyk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3
MSwyMSArMTcxLDIxIEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cmVuYW1lSW5kZXhT
dWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxCiBJREJSZXN1bHREYXRhIElE
QlJlc3VsdERhdGE6OnB1dE9yQWRkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiByZXN1bHRLZXkpCiB7CiAgICAg
SURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpQdXRPckFkZFN1Y2Nlc3MsIHJl
cXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJLZXlEYXRhPihyZXN1bHRLZXkpOworICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IG1h
a2VVbmlxdWU8SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0
JiBnZXRSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBl
OjpHZXRSZWNvcmRTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dl
dFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAg
IHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6
Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxsUmVzdWx0JiBnZXRBbGxSZXN1bHQpCiB7CiAgICAg
SURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2Vz
cywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKKyAgICByZXN1bHQu
bV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMDQsMTQgKzIwNCwxNCBAQCBJREJSZXN1
bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZVJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZQogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29y
U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3Vs
dCB7IElEQlJlc3VsdFR5cGU6Ok9wZW5DdXJzb3JTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9
OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0
PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0
UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERh
dGEgSURCUmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1
bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpJdGVyYXRl
Q3Vyc29yU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1
bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAppbmRleCA3MTdiM2UyZGU1M2IzNTNm
ZWI2ZGQ3NTUwMGEwZTVlNjhjOTQ3YTNmLi42MjA2MmExZTI5NWY3YjU5ODE1ODk1YjU3YmVjMDA4
ZTViMTg3NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1
dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAg
IGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBA
IC0xOTMsNyArMTkzLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVz
dWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
aWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCVHJhbnNhY3Rpb25JbmZvPigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8
SURCVHJhbnNhY3Rpb25JbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmpl
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1f
dHJhbnNhY3Rpb25JbmZvID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERh
dGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAg
ICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCk7CisgICAg
ICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigpOwogICAgICAgICBPcHRp
b25hbDxJREJLZXlEYXRhPiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsK
ICAgICAgICAgaWYgKCFvcHRpb25hbCkKQEAgLTIxNCw3ICsyMTQsNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUo
RGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8g
b2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CisgICAgICAgIGF1dG8g
b2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
ICAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMjMsNyArMjIz
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURC
UmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhh
c09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVj
dCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVz
dWx0PigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0
PigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gV1RG
TW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAppbmRleCA5ODNjMWMxMWM5
OWI0NWI2Y2U1NDRkZmNhYzAzN2U0YzczNzI5NWMzLi40ZmI5OTkxOWY2N2Q1ZjdjOWFiYzEwOWUy
ZTMwMDBjY2U0YzQ0MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBJREJUcmFuc2FjdGlvbkluZm8gSURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJzaW9uQ2hh
bmdlKGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdAogICAgIElEQlRyYW5zYWN0aW9uSW5mbyBy
ZXN1bHQoKElEQlJlc291cmNlSWRlbnRpZmllcihjb25uZWN0aW9uKSkpOwogICAgIHJlc3VsdC5t
X21vZGUgPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2U7CiAgICAgcmVzdWx0Lm1f
bmV3VmVyc2lvbiA9IG5ld1ZlcnNpb247Ci0gICAgcmVzdWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3JpZ2luYWxEYXRhYmFzZUlu
Zm8pOworICAgIHJlc3VsdC5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KG9yaWdpbmFsRGF0YWJhc2VJbmZvKTsKIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CkBAIC02Nyw3ICs2Nyw3IEBAIElEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJhbnNhY3Rpb25J
bmZvKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAsIG1fb2JqZWN0U3RvcmVz
KGluZm8ubV9vYmplY3RTdG9yZXMpCiB7CiAgICAgaWYgKGluZm8ubV9vcmlnaW5hbERhdGFiYXNl
SW5mbykKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPigqaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKTsKKyAgICAgICAg
bV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqaW5m
by5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKTsKIH0KIAogSURCVHJhbnNhY3Rpb25JbmZvOjpJREJU
cmFuc2FjdGlvbkluZm8oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiB0aGF0LCBJc29sYXRlZENv
cHlUYWcpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25JbmZvOjppc29sYXRl
ZENvcHkoY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBzb3VyY2UsIElEQlRyYW5zCiAgICAgICAg
IGRlc3RpbmF0aW9uLm1fb2JqZWN0U3RvcmVzLnVuY2hlY2tlZEFwcGVuZChvYmplY3RTdG9yZS5p
c29sYXRlZENvcHkoKSk7CiAKICAgICBpZiAoc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8p
Ci0gICAgICAgIGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0YWJhc2VJbmZvLCBJ
REJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fb3Jp
Z2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5t
X29yaWdpbmFsRGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CiB9
CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKaW5kZXggOTMwZDgw
MjM2MTgyMzJhYmY2YzA4MWRmMjEyOTU4ZmY2MmE1NTVlZC4uN2I5NDc3ZThlYzU1NGM5MTNkMmE0
OGJlNTU4ZTE2MzNkOTNmY2U5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaApAQCAtMTE5LDcg
KzExOSw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb25JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUlu
Zm8+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBvYmplY3QgPSBtYWtlVW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW5mby5tX29yaWdpbmFsRGF0YWJh
c2VJbmZvID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRl
eCA4N2IxYWRjZDk2NjYyMDZlYzk3MTY2MDM2MmI0MGU1YWQ3ZDgwMWQxLi5jOTY4OTQ0NGZkMjI0
MDJjZWQyMTEzYjNiZmEwYjlhNTI2YzY3M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cApAQCAtNjEsNyArNjEsNyBAQCBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJT
ZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogU3RvcmFnZVF1b3Rh
TWFuYWdlciogSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3Jp
Z2luJiBvcmlnaW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2lu
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFn
ZXI+KFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90
YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNh
bGxiYWNrKSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+
KFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90YSwg
dWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxi
YWNrKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNl
SW5jcmVhc2UpOwogICAgICAgICB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmln
YXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFj
YXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY4NzI1NzRl
ODVjMjQwODc3MmIxZDExYTJlOGJjYjZkZDYwZGEyOTcuLmEzMWJhZGI1NGFjOTgxZTBlM2JhZGFm
ZTIwOTg3ODI5ZDNmNzQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmls
aXRpZXMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzJiBO
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllczo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvCiB7CiAg
ICAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxO
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgm
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVk
aWFDYXBhYmlsaXRpZXM+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlx
dWU8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBu
ZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxl
bWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAppbmRleCA1MGQwYmIwYjFlZDUzYTQzMjQ1OGQ5ZmI3MTM1NzBhZTBlY2Ew
ZDA2Li5iOTc0MzRjNGU2MjQ1ZDczY2NmMmQ2MjVhMGExYjAzZTEyOTBjYmQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBT
dHJpbmcmCiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6bW9ja1BpY2tlcigpCiB7CiAgICAgaWYgKCFtX3BpY2tlck92ZXJyaWRlKQotICAgICAg
ICBtX3BpY2tlck92ZXJyaWRlID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jaz4oKnRoaXMpOworICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1
ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICpt
X3BpY2tlck92ZXJyaWRlLmdldCgpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHVpbnQ2NF90IFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1l
ZGlhU2Vzc2lvbk1hCiAKICAgICBMT0coTWVkaWEsICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjph
ZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCglcCArICVsbHUpIiwgJmNsaWVudCwgY29udGV4
dElkKTsKIAotICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50
U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CisgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFr
ZVVuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4
dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCiAgICAgICAg
IHNjaGVkdWxlRGVsYXllZFRhc2soSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0Q2xp
ZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZDQxN2ExMjE2OTExMTIxNWQ1NDIyOTFl
MDNjNTlkNWQ2ZTdlYjNmNC4uN2NiYzZhMTMzNTFlMGQzMmNlMjU1YTliYWRjYjk3NDRkYWY0ZDQ0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5jcHAKQEAgLTE3OCw5ICsxNzgsOSBAQCBNZWRpYVRpbWUgTWVkaWFTb3VyY2U6OmN1cnJl
bnRUaW1lKCkgY29uc3QKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlh
U291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYnVmZmVyZWQgJiYgbV9hY3Rp
dmVTb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSAmJiBzdGQ6OmFsbF9vZihtX2FjdGl2ZVNvdXJjZUJ1
ZmZlcnMtPmJlZ2luKCksIG1fYWN0aXZlU291cmNlQnVmZmVycy0+ZW5kKCksIFtdKGF1dG8mIGJ1
ZmZlcikgeyByZXR1cm4gIWJ1ZmZlci0+aXNCdWZmZXJlZERpcnR5KCk7IH0pKQotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJl
ZCk7CiAKLSAgICBtX2J1ZmZlcmVkID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCk7CisgICAgbV9idWZmZXJlZCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OwogICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogKm1fYWN0aXZlU291cmNlQnVmZmVycykK
ICAgICAgICAgc291cmNlQnVmZmVyLT5zZXRCdWZmZXJlZERpcnR5KGZhbHNlKTsKIApAQCAtMTkw
LDcgKzE5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291
cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAKICAgICAvLyAxLiBJZiBhY3RpdmVTb3VyY2VCdWZmZXJz
Lmxlbmd0aCBlcXVhbHMgMCB0aGVuIHJldHVybiBhbiBlbXB0eSBUaW1lUmFuZ2VzIG9iamVjdCBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGFjdGl2ZVJhbmdlcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVm
ZmVyZWQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCpt
X2J1ZmZlcmVkKTsKIAogICAgIC8vIDIuIExldCBhY3RpdmUgcmFuZ2VzIGJlIHRoZSByYW5nZXMg
cmV0dXJuZWQgYnkgYnVmZmVyZWQgZm9yIGVhY2ggU291cmNlQnVmZmVyIG9iamVjdCBpbiBhY3Rp
dmVTb3VyY2VCdWZmZXJzLgogICAgIC8vIDMuIExldCBoaWdoZXN0IGVuZCB0aW1lIGJlIHRoZSBs
YXJnZXN0IHJhbmdlIGVuZCB0aW1lIGluIHRoZSBhY3RpdmUgcmFuZ2VzLgpAQCAtMjAzLDcgKzIw
Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpi
dWZmZXJlZCgpIGNvbnN0CiAKICAgICAvLyBSZXR1cm4gYW4gZW1wdHkgcmFuZ2UgaWYgYWxsIHJh
bmdlcyBhcmUgZW1wdHkuCiAgICAgaWYgKCFoaWdoZXN0RW5kVGltZSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwog
CiAgICAgLy8gNC4gTGV0IGludGVyc2VjdGlvbiByYW5nZXMgZXF1YWwgYSBUaW1lUmFuZ2Ugb2Jq
ZWN0IGNvbnRhaW5pbmcgYSBzaW5nbGUgcmFuZ2UgZnJvbSAwIHRvIGhpZ2hlc3QgZW5kIHRpbWUu
CiAgICAgbV9idWZmZXJlZC0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgaGlnaGVzdEVuZFRp
bWUpOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgICAgIG1fYnVmZmVyZWQtPmlu
dGVyc2VjdFdpdGgoc291cmNlUmFuZ2VzKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIH0KIAogdm9pZCBNZWRp
YVNvdXJjZTo6c2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCkBAIC0zNDQsNyArMzQ0
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OnNldExpdmVTZWVrYWJsZVJhbmdl
KGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKIAogICAgIC8vIFNldCBsaXZlIHNlZWthYmxlIHJh
bmdlIHRvIGJlIGEgbmV3IG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgY29udGFpbmluZyBh
IHNpbmdsZSByYW5nZQogICAgIC8vIHdob3NlIHN0YXJ0IHBvc2l0aW9uIGlzIHN0YXJ0IGFuZCBl
bmQgcG9zaXRpb24gaXMgZW5kLgotICAgIG1fbGl2ZVNlZWthYmxlID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCks
IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKKyAgICBtX2xpdmVTZWVrYWJsZSA9
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3Vi
bGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7CiAKICAgICByZXR1
cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCmluZGV4IGU0MTgyNzgzOGQ2MmNhMzhm
YzNiZjNiZTc4ZjhmNGFhOGFlNTI1OTYuLjdiMzU4ZjVlMGRlNDJmYjIyNjhkMzY5MDNlNThkYjVl
Yjc4ZTkwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgTmF2
aWdhdG9yTWVkaWFEZXZpY2VzKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6OmZyb20oTmF2aWdhdG9y
KiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8TmF2aWdhdG9yTWVkaWFEZXZpY2VzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+
Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmln
YXRvck1lZGlhRGV2aWNlcz4obmF2aWdhdG9yLT53aW5kb3coKSk7CisgICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3It
PndpbmRvdygpKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3
U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDhkN2U2M2NjNjA2
ZDZkYTE5ZmJkYjEyZGU1NGZiODU1ZmRmNjJjOTkuLjE0ZGYxMTYxZGFlNjhjYzQ2Y2I0OWVhYWUy
MWY1ZWY5ODllMmFjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBV
c2VyTWVkaWFDb250cm9sbGVyOjp+VXNlck1lZGlhQ29udHJvbGxlcigpCiAKIHZvaWQgcHJvdmlk
ZVVzZXJNZWRpYVRvKFBhZ2UqIHBhZ2UsIFVzZXJNZWRpYUNsaWVudCogY2xpZW50KQogewotICAg
IFVzZXJNZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFDb250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xsZXI+
KGNsaWVudCkpOworICAgIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2Vy
TWVkaWFDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFVzZXJNZWRpYUNv
bnRyb2xsZXI+KGNsaWVudCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTZWN1cmUoRG9j
dW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggYWFhNDAwMDIwNzM2NWZmY2JlNTI4MTI4
ZTI4Y2UwMmY2YzYwN2NkZC4uYzk4NWJjMTlhMzFkMDExNDU2NWFiYWJhNWYwNjBlZTUwZGE2MTE0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwCkBAIC02OSw3ICs2OSw3IEBAIFJlZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6OmNoYW5uZWxFdmVudChTY3JpcHRFeGVjdXRpCiAgICAgaW5pdC5u
ZWdvdGlhdGVkID0gZGF0YUNoYW5uZWwtPm5lZ290aWF0ZWQoKTsKICAgICBpbml0LmlkID0gZGF0
YUNoYW5uZWwtPmlkKCk7CiAKLSAgICBhdXRvIGhhbmRsZXIgPSAgc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5uZWwpKTsKKyAgICBh
dXRvIGhhbmRsZXIgPSAgbWFrZVVuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdU
Rk1vdmUoZGF0YUNoYW5uZWwpKTsKICAgICBhdXRvIGNoYW5uZWwgPSBSVENEYXRhQ2hhbm5lbDo6
Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUoaGFuZGxlciksIGZyb21TdGRTdHJpbmcobGFiZWwpLCBX
VEZNb3ZlKGluaXQpKTsKIAogICAgIHJldHVybiBSVENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmRhdGFjaGFubmVsRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVu
dDo6SXNDYW5jZWxhYmxlOjpObywgV1RGTW92ZShjaGFubmVsKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVu
ZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IDQ1YmY0YTkzZDI1MDBmZTg5YTNlYmU3
N2VjMWNkOGVkZTEwNWEyZjkuLjcyNjJkMTgyYzUyN2MzNTBiYWY0ODFmNGM2NGRiOTZmOGI1OTFm
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0z
OTMsNyArMzkzLDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFj
ayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXYKICAgICB9CiAgICAgfQogCi0g
ICAgcmVjZWl2ZXItPnNldEJhY2tlbmQoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBSZWNl
aXZlckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CisgICAgcmVjZWl2ZXItPnNldEJh
Y2tlbmQobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRj
UmVjZWl2ZXIpKSk7CiAgICAgYXV0byYgdHJhY2sgPSByZWNlaXZlci0+dHJhY2soKTsKICAgICBh
ZGRQZW5kaW5nVHJhY2tFdmVudChyZWNlaXZlci5yZWxlYXNlTm9uTnVsbCgpLCB0cmFjaywgcnRj
U3RyZWFtcywgbnVsbHB0cik7CiB9CkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKCkKICAgICAgICAgaWYgKCFzb3VyY2Up
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQu
bmV3UmVtb3RlVHJhbnNjZWl2ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25O
dWxsKCkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2Nl
aXZlcihtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShy
dGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogfQogCkBA
IC00OTUsNyArNDk1LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFuc2Nl
aXZlcihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2MKICAgICBpZiAoIXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJD
b25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBz
b3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtlVW5pcXVlPExpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3Vy
Y2UucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBhZGRQZW5kaW5nVHJhY2tFdmVudChtYWtlUmVm
KG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkpLCBuZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpLnRy
YWNrKCksIHJ0Y1JlY2VpdmVyLT5zdHJlYW1zKCksIG1ha2VSZWYobmV3VHJhbnNjZWl2ZXIpKTsK
IH0KQEAgLTUzMCw3ICs1MzAsNyBAQCBPcHRpb25hbDxMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpC
YWNrZW5kcz4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZQogICAgIGlmICgh
cmVzdWx0Lm9rKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHRy
YW5zY2VpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92ZVZhbHVlKCkpOwog
ICAgIHJldHVybiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcyB7IHRyYW5zY2VpdmVy
LT5jcmVhdGVTZW5kZXJCYWNrZW5kKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLCBXVEZNb3ZlKHNv
dXJjZSkpLCB0cmFuc2NlaXZlci0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCksIFdURk1vdmUodHJh
bnNjZWl2ZXIpIH07CiB9CiAKQEAgLTU4MSw3ICs1ODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFu
c2NlaQogewogICAgIGZvciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX2JhY2tlbmQtPkdldFRyYW5z
Y2VpdmVycygpKSB7CiAgICAgICAgIGlmICh0cmFuc2NlaXZlci0+c2VuZGVyKCkuZ2V0KCkgPT0g
YmFja2VuZC5ydGNTZW5kZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2NlaXZlcikp
OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTY1MCw3ICs2NTAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpjcmVhdGVEYXRhQ2hhbm5lbAogewogICAgIGF1dG8gaW5pdCA9IExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6ZnJvbVJUQ0RhdGFDaGFubmVsSW5pdChvcHRpb25zKTsKICAgICBhdXRvIGNo
YW5uZWwgPSBtX2JhY2tlbmQtPkNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLnV0ZjgoKS5kYXRhKCks
ICZpbml0KTsKLSAgICByZXR1cm4gY2hhbm5lbCA/IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6IG51bGxwdHI7CisgICAgcmV0
dXJuIGNoYW5uZWwgPyBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RG
TW92ZShjaGFubmVsKSkgOiBudWxscHRyOwogfQogCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9p
bnQ6Ok9uRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJ
bnRlcmZhY2U+IGRhdGFDaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjA3ZjE1ZTY0NTdiOWRmY2FjMWMzMzll
YTM5ZmVhMWQ3Nzg1OWQ4Yi4uZmM5MWNjZDBiYmQxZmRiYmE3NjQyZTcwNGYzN2ZlODVjYzcyZmQ1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNv
bm5lY3Rpb25CYWNrZW5kPiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlCiAKICAg
ICBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpLnNldEVuYWJsZVdlYlJUQ0VuY3J5cHRpb24ocGFn
ZS0+c2V0dGluZ3MoKS53ZWJSVENFbmNyeXB0aW9uRW5hYmxlZCgpKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5l
Y3Rpb24sIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24sIHBhZ2UtPmxp
YldlYlJUQ1Byb3ZpZGVyKCkpOwogfQogCiBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ7CkBAIC0zMTEsNyArMzExLDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpWaWRlb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmkKICAg
ICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxw
dHIsIFdURk1vdmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZl
ckZvclNvdXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVy
QmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRo
aXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2
ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlz
LCAidmlkZW8iX3MsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlS
ZWYoKSwgbnVsbHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9u
KCk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2Vp
dmVyKSk7CkBAIC0zMzQsNyArMzM0LDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjpBdWRpb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXUKICAgICBh
dXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIs
IFdURk1vdmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZv
clNvdXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVyQmFj
a2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMs
IG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIg
PSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAi
YXVkaW8iX3MsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYo
KSwgbnVsbHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7
CiAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVy
KSk7CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8UlRDUnRwU2VuZGVy
PiBmaW5kRXhpc3RpbmdTZW5kZXIoY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHAKIEV4Y2VwdGlv
bk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFk
ZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3Ry
ZWFtSWRzKQogewogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLndlYlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZGVyQmFj
a2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMs
IG51bGxwdHIpOworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFtX2Vu
ZHBvaW50LT5hZGRUcmFjaygqc2VuZGVyQmFja2VuZCwgdHJhY2ssIG1lZGlhU3RyZWFtSWRzKSkK
ICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFibGUgdG8gYWRk
IHRyYWNrIl9zIH07CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRw
U2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0
cgogICAgICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLmtpbmQoKTsKICAgICAg
ICAgU3RyaW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAKLSAgICAg
ICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9
IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwog
ICAgICAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBtYWtl
UmVmKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNl
bmRlckJhY2tlbmQpKTsKICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRy
YWNrS2luZCwgdHJhY2tJZCk7CiAgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFu
c2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShyZWNlaXZlciksIG51
bGxwdHIpOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2Nl
aXZlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmll
ZFBsYW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVy
KFN0cmluZyB7IHRyYWNrS2luZCB9LCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxw
dHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRw
U2VuZGVyOjpjcmVhdGUoKnRoaXMsIFN0cmluZyh0cmFja0tpbmQpLCBWZWN0b3I8U3RyaW5nPigp
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2Nl
aXZlcihXVEZNb3ZlKG5ld1NlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSwgdHJhY2tLaW5kKTsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5z
Y2VpdgogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRkVW5pZmllZFBsYW5U
cmFuc2NlaXZlcihXVEZNb3ZlKHRyYWNrKSwgaW5pdCk7CiAKLSAgICBhdXRvIHNlbmRlckJhY2tl
bmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBu
dWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvJiBiYWNrZW5kID0gKnNl
bmRlckJhY2tlbmQ7CiAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhp
cywgdHJhY2suY29weVJlZigpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRlckJhY2tl
bmQpKTsKICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKGJhY2tlbmQsIHRyYWNrLCBWZWN0
b3I8U3RyaW5nPiB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kLmNwcAppbmRleCA2ODUwZTZhODVlOTAyNGJiMTE0NWI2Yjk0MjI5YzBmNjE0MmRmN2Fh
Li42YWVlYTEzMzg5MmQyMDYzZjAzNTM5YjhlZWM0ZGI5YmNlNjRkN2Q5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0UGFyYW1ldGVycyhjb25zdCBS
VENSdHBTZW5kUGFyYW1ldGVycyYgcGFyYW1lCiAKIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2Vu
ZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRNRkJhY2tlbmQo
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNr
ZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVy
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IGViODcxZWI3ZGIwMzg4
NGY0Y2M3ZTBhZGVmNjg3ODJlMWMwOTcyZDcuLjVjMGQ3ZTk1ZTJmZDEyZTNmODRmMTdjZmJlYjZk
ODY3YTUxZjJlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4gTGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVSZWNlaXZlckJhY2tlbmQoKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4obV9y
dGNUcmFuc2NlaXZlci0+cmVjZWl2ZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5yZWNlaXZlcigpKTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+IExpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlU2VuZGVyQmFja2VuZChMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQmIGJhY2tlbmQsIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OlNvdXJj
ZSYmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kPihiYWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92
ZShzb3VyY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPihiYWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3VyY2Up
KTsKIH0KIAogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gTGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kOjpkaXJlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAwYzMyOGZhZTQ0MjM1
OTkyNTMzMDcyYzg1ZDZiMzJmZGM2YzEzODM4Li4wZWJhZmY4OWZmYmM1MDAzZTI0NjFiYWRlZTUy
MDM5MTE3MWNiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOb3RpZmljYXRpb246
Ok5vdGlmaWNhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IE9wdGlvbgogICAgICwgbV9ib2R5KG9wdGlvbnMuYm9keSkKICAgICAsIG1fdGFnKG9wdGlv
bnMudGFnKQogICAgICwgbV9zdGF0ZShJZGxlKQotICAgICwgbV90YXNrVGltZXIoc3RkOjptYWtl
X3VuaXF1ZTxUaW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKKyAgICAsIG1fdGFza1RpbWVy
KG1ha2VVbmlxdWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3coKTsgfSkpCiB7CiAgICAgaWYgKCFv
cHRpb25zLmljb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gaWNvblVSTCA9IGRvY3VtZW50
LmNvbXBsZXRlVVJMKG9wdGlvbnMuaWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAK
aW5kZXggYTYyMDM1MzkzYzdmYjNmNmRkZjAxYzVjODlkNzRmM2I1ZWRkMmQ0NC4uZDQ4ZjIwNWE5
ZTI0MTRlMDdkNzIyZjkwMzI1YTdjMzY0ZDQ4OTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9s
bGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjb25zdCBjaGFyKiBOb3RpZmljYXRpb25Db250cm9s
bGVyOjpzdXBwbGVtZW50TmFtZSgpCiAKIHZvaWQgcHJvdmlkZU5vdGlmaWNhdGlvbihQYWdlKiBw
YWdlLCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICBOb3RpZmljYXRpb25Db250
cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVu
dE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25Db250cm9sbGVyPihjbGllbnQp
KTsKKyAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxOb3RpZmljYXRpb25D
b250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcAppbmRleCAwM2Zl
OWUzODY3OGY0MDUwNzMyNTUwOWMyMDM4NjdjOWNmODIwZmYxLi5jOThjOTk4NmRlZDZjZDIwNTQy
NjE3MjE1ZjY1MzZjZTU4ZjI3OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1
b3RhL0RPTVdpbmRvd1F1b3RhLmNwcApAQCAtNTcsNyArNTcsNyBAQCBET01XaW5kb3dRdW90YSog
RE9NV2luZG93UXVvdGE6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93
UXVvdGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dRdW90YSo+KFN1cHBsZW1l
bnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAo
IXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxET01XaW5kb3dRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVu
dCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBs
ZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcApp
bmRleCA3YmExZDNkNGIzNjk0NDBjNjRlMTdkZDIwY2E5NDUzOGI4YWQ5Yjc0Li43YTA4MDQ1OTU2
OTgzYTMxZjZkODM0ZWY3ZWE3NzJmYTY2NzM2YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIE5hdmlnYXRvclN0b3JhZ2VRdW90YSogTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9t
KE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3Vw
cGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAo
IXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZp
Z2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3Jr
ZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDk1YzNlNDM2NDczMTYyYTUwZDYxYjVj
ZTc1MTY1ZWU2OGIyMWI3MjcuLjFhMWM4NDdkYzQ5N2RjNjQ4NDVmNTZlY2U1OTI2M2E0MjZhZjYz
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdh
dG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dv
cmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV29ya2VyTmF2
aWdhdG9yU3RvcmFnZVF1b3RhKiBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oV29y
a2VyTmF2aWdhdG9yKgogewogICAgIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1l
bnQ8V29ya2VyTmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsK
ICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQo
KTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92
ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggMzc5NTY1
MjZmYmYyODY5MGVjZjAzOTk1MmM1MmY2ZTA0NDZiY2I0Yy4uOTY5YzIzN2Y3YzgxNTUxNTNkZTA3
MWVjOTZhNjFhNGE0NjJkM2Y5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpm
cm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyog
c3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyo+KFN1cHBs
ZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBp
ZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CisgICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3aW5k
b3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpcy5jcHAKaW5kZXggNzJiNTYzZTRiYmY3ZGNlMDNmYTMwODgwZDJmYTc3MGI4OTg2OTNh
NC4uZTdiNjJhMWExN2JkOTZhOWY1YTEzZmQwOWU3NDlhYjRiY2UxOTg0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjp2b2ljZXNEaWRDaGFuZ2UoKQogUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplciYgU3BlZWNoU3ludGhlc2lzOjplbnN1cmVQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyKCkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcikK
LSAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKKyAgICAgICAgbV9wbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlz
KTsKICAgICByZXR1cm4gKm1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNw
cAppbmRleCA2MmY2OGVjNjYzYTgwMjEyYzZmM2FmN2I4NWUyM2M2YjRmNzQyYTBhLi4yZjU0Mjcy
YWM1YzAxZDBhMjMwZTVjMGRmMDQ1MjRhZmIyYTRlMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtNTYsNyAr
NTYsNyBAQCB2b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyhSZWY8QXJyYXlCdWZm
ZXI+JiYgYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKLSAgICBhdXRvIGRlY29kaW5nVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rp
bmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3VjY2Vzc0Nh
bGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CisgICAgYXV0byBkZWNvZGluZ1Rhc2sg
PSBtYWtlVW5pcXVlPERlY29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRl
LCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogICAg
IG1fcXVldWUuYXBwZW5kKFdURk1vdmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5vdGUgdGhhdCBvd25l
cnNoaXAgb2YgdGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1ZXVlLgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9E
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmgKaW5kZXggYmMwMGViOWY4N2QxYmNkNThjYmY3NDliN2RhN2M0OTNjZjdlODg3Ni4uY2Y5
MjY5YzMwNDRjNDMyMmQ3NDRkMDYyOWRkYTBmYTg5NDkzZWNjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaApAQCAtNDIsNyAr
NDIsOCBAQCBjbGFzcyBBdWRpb0J1ZmZlckNhbGxiYWNrOwogLy8gQXN5bmNBdWRpb0RlY29kZXIg
YXN5bmNocm9ub3VzbHkgZGVjb2RlcyBhdWRpbyBmaWxlIGRhdGEgZnJvbSBhbiBBcnJheUJ1ZmZl
ciBpbiBhIHdvcmtlciB0aHJlYWQuCiAvLyBVcG9uIHN1Y2Nlc3NmdWwgZGVjb2RpbmcsIGEgY29t
cGxldGlvbiBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgZGVjb2RlZCBQQ00gZGF0
YSBpbiBhbiBBdWRpb0J1ZmZlci4KIAotY2xhc3MgQXN5bmNBdWRpb0RlY29kZXIgeworY2xhc3Mg
QXN5bmNBdWRpb0RlY29kZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFzeW5jQXVkaW9EZWNvZGVyKTsKIHB1YmxpYzoKICAg
ICBBc3luY0F1ZGlvRGVjb2RlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAppbmRleCBiYThjMjU1
YWU3ZDdkYTczYmM5ZmY2NTU0M2YxZTM3YmM5NTQwNGIzLi4wZmI1NWIwOGYwYzFhMmJlMmQwNzBj
NGUwZDhkOGY0NjdlMzQ2YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcApAQCAtNDAsOCArNDAs
OCBAQCBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCYXNpY0luc3BlY3Rvcik7Ci0g
ICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAg
IGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgb3V0cHV0
Q2hhbm5lbENvdW50KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
b3V0cHV0Q2hhbm5lbENvdW50KSk7CiB9CiAKIC8vIFdlIG92ZXJyaWRlIHB1bGxJbnB1dHMoKSBh
cyBhbiBvcHRpbWl6YXRpb24gYWxsb3dpbmcgdGhpcyBub2RlIHRvIHRha2UgYWR2YW50YWdlIG9m
IGluLXBsYWNlIHByb2Nlc3NpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGJjMTg5YzA4
Y2JlZmM3YzE5NjA2NDY2YzA3NjhiOGZhNjM0YjE2YWIuLjBiOWYxY2VkODc0NWI1ZDk5OGRjMzhk
NjM2ZTc5MGFiZmJlNmU5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCkBAIC00Miw4ICs0Miw4
IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7
CiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRl
eHQsIHNhbXBsZVJhdGUpCiB7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5w
dXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIDEpKTsKIAogICAgIC8vIFRoZSBzdWJjbGFzcyBtdXN0IGNyZWF0ZSBtX3Byb2Nlc3Nvci4K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCA0MGFjMzJjNWM1NWMzZDMyZDBlMTRiNmE3ZDIyYjI0
NjczOTBmNGJmLi4yNTEwYzQwYTdmNjEyM2Q0YzdmYzJkNjQwYTkwYjRmMGE5OGU2ZjllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
CiAgICAgbV9wbGF5YmFja1JhdGUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInBsYXli
YWNrUmF0ZSIsIDEuMCwgLU1heFJhdGUsIE1heFJhdGUpOwogCiAgICAgLy8gRGVmYXVsdCB0byBt
b25vLiAgQSBjYWxsIHRvIHNldEJ1ZmZlcigpIHdpbGwgc2V0IHRoZSBudW1iZXIgb2Ygb3V0cHV0
IGNoYW5uZWxzIHRvIHRoYXQgb2YgdGhlIGJ1ZmZlci4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVu
aXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApp
bmRleCA5OTU2YzE1ODYyMTg5YzcxNDI5Y2JjZmQ2MDA0MmYwMGM5OGJhZWY2Li5kNGNkYjc2NThj
MGYzNWI1ZmM5YTIyY2U4OThiY2IyYjk5ZWU0ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQXVk
aW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9sb2dJ
ZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNl
c3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50
UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQorICAgICwg
bV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKIHsKICAg
ICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBw
YWdlIG5hdmlnYXRlLgogICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0
aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0aG9kLgpAQCAtMTY2
LDcgKzE2Niw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVu
dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90CiAjZW5kaWYKICAgICAsIG1faXNP
ZmZsaW5lQ29udGV4dCh0cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1
ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlx
dWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKIHsKICAgICBjb25zdHJ1Y3RDb21tb24oKTsK
IApAQCAtNDMyLDcgKzQzMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlCiB2b2lkIEF1ZGlv
Q29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlv
QnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKIHsKICAgICBpZiAoIW1fYXVkaW9EZWNv
ZGVyKQotICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNBdWRp
b0RlY29kZXI+KCk7CisgICAgICAgIG1fYXVkaW9EZWNvZGVyID0gbWFrZVVuaXF1ZTxBc3luY0F1
ZGlvRGVjb2Rlcj4oKTsKICAgICBtX2F1ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5bmMoV1RGTW92ZShh
dWRpb0RhdGEpLCBzYW1wbGVSYXRlKCksIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92
ZShlcnJvckNhbGxiYWNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggOTc1ODg3NTQ3NDdl
MTUyNDgxODlmNDk3MGM2ZDMzZTNjNmFlMWUxMS4uZDlhYmI5Nzc3YTlkMjVlZWFmMjQyZmY0ZmZm
YzVlYzVlZjQ4NmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmEKICAgICAsIG1fbXV0ZWQoZmFsc2UpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVEZXN0aW5hdGlvbik7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2Rl
SW5wdXQ+KHRoaXMpKTsKIH0KIAogQXVkaW9EZXN0aW5hdGlvbk5vZGU6On5BdWRpb0Rlc3RpbmF0
aW9uTm9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1
YWRGaWx0ZXJOb2RlLmNwcAppbmRleCAxNjM3M2NlOTM3OGQzMjJmZGQ5YzI1M2Y5Yzc2ZDk2M2U2
MTNjZDNiLi40YTgyNTVlNmYwYWYwNzY3MTM4ZTQ2ODk4ZjhiNjM2YWIyZDc1NmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVCaXF1YWRGaWx0ZXIpOwogCiAgICAgLy8gSW5pdGlhbGx5IHNldHVwIGFzIGxvd3Bh
c3MgZmlsdGVyLgotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxCaXF1YWRQcm9j
ZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKKyAgICBtX3Byb2Nlc3NvciA9
IG1ha2VVbmlxdWU8QmlxdWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxz
ZSk7CiB9CiAKIEJpcXVhZEZpbHRlclR5cGUgQmlxdWFkRmlsdGVyTm9kZTo6dHlwZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nl
c3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nv
ci5jcHAKaW5kZXggMGU0ZTM2ODViODJjZTQ3N2VjNGU1ODU0N2YxNmFkOGI3MGZjNzkwNC4uZTg0
Yjk4MDM1NjcwZmIxZGNjMzI3MDk2NjNkMmIzOTA1NTJlNjVlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtNjIsNyAr
NjIsNyBAQCBCaXF1YWRQcm9jZXNzb3I6On5CaXF1YWRQcm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IEJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiB9CiAKIHZvaWQgQmlx
dWFkUHJvY2Vzc29yOjpjaGVja0ZvckRpcnR5Q29lZmZpY2llbnRzKCkKQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVzcG9uc2UoaW50IG5GcmVx
dWVuY2llcywgY29uc3QgZmxvYXQqIGZyZXF1ZQogICAgIC8vIHRvIGF2b2lkIGludGVyZmVyaW5n
IHdpdGggdGhlIHByb2Nlc3NpbmcgcnVubmluZyBpbiB0aGUgYXVkaW8KICAgICAvLyB0aHJlYWQg
b24gdGhlIG1haW4ga2VybmVscy4KICAgICAKLSAgICBhdXRvIHJlc3BvbnNlS2VybmVsID0gc3Rk
OjptYWtlX3VuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOworICAgIGF1dG8gcmVzcG9uc2VL
ZXJuZWwgPSBtYWtlVW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiAKICAgICByZXNwb25z
ZUtlcm5lbC0+Z2V0RnJlcXVlbmN5UmVzcG9uc2UobkZyZXF1ZW5jaWVzLCBmcmVxdWVuY3lIeiwg
bWFnUmVzcG9uc2UsIHBoYXNlUmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAppbmRleCAyMGI4ZGExOWU1
ZjQzOWNmZTU0NTVmMDFkYzI5MDg3NDQ2YjIzYzA4Li5kZjUwZjI2ODczNjhhYTVjMzI5NTQxNDgx
NTA3NzdhMDI5MTczMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcApAQCAtNTksOSArNTksOSBAQCBDaGFubmVsTWVy
Z2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlLCB1bgogCiAgICAgLy8gQ3JlYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlu
cHV0cy4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkK
LSAgICAgICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykp
OworICAgICAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiAK
LSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEp
KTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsK
ICAgICAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA0NjM1NDk4YzAz
NGM1OTMwYjRlOGYyMjA4NmUxNGIyYjRiZDI5MTE3Li44MmY2OWEwNGY5OTkyNjFkNThjMTUyYmZj
NjAyYTM2NjA5NjA5MWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKQEAgLTUwLDExICs1MCwxMSBAQCBDaGFu
bmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNw
bGl0dGVyKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+
KHRoaXMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
CiAKICAgICAvLyBDcmVhdGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAoYWJsZSB0byBoYW5k
bGUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBpbnB1dCkuCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQotICAgICAgICBh
ZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAg
ICAgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAg
ICAgCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKaW5kZXggMjM4MmRhYmNjOWM5OTI3Y2FjMzFkMzI3
NWYyMjAzY2M4ZjU4YTA5My4uZTM2Njc3Y2ZkNzQ1ZThiYmUwMmRhM2RjNGRkN2JhMWYxYTUzZGQ0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5v
ZGUuY3BwCkBAIC01Miw4ICs1Miw4IEBAIENvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBl
KE5vZGVUeXBlQ29udm9sdmVyKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCAyKSk7CiAKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVz
LgogICAgIG1fY2hhbm5lbENvdW50ID0gMjsKQEAgLTE0Niw3ICsxNDYsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBDb252b2x2ZXJOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIqIGJ1ZmZlcikKIAog
ICAgIC8vIENyZWF0ZSB0aGUgcmV2ZXJiIHdpdGggdGhlIGdpdmVuIGltcHVsc2UgcmVzcG9uc2Uu
CiAgICAgYm9vbCB1c2VCYWNrZ3JvdW5kVGhyZWFkcyA9ICFjb250ZXh0KCkuaXNPZmZsaW5lQ29u
dGV4dCgpOwotICAgIGF1dG8gcmV2ZXJiID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmI+KGJ1ZmZl
ckJ1cy5nZXQoKSwgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzLCBNYXhGRlRTaXpl
LCAyLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcywgbV9ub3JtYWxpemUpOworICAgIGF1dG8gcmV2ZXJi
ID0gbWFrZVVuaXF1ZTxSZXZlcmI+KGJ1ZmZlckJ1cy5nZXQoKSwgQXVkaW9Ob2RlOjpQcm9jZXNz
aW5nU2l6ZUluRnJhbWVzLCBNYXhGRlRTaXplLCAyLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcywgbV9u
b3JtYWxpemUpOwogCiAgICAgewogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRoIHByb2Nlc3Mo
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAppbmRl
eCA0MjY1YTAwNzQ5ZWFmZmY2YTllMWI5ZDFkZGE2MGQ0ZGI3MDI4YjAzLi44MWJkN2QxOWIyN2U3
NDFiNTBmNmY4NGU1MWY3Y2UyNTU3ODAyYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGlubGluZSBEZWxheU5v
ZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRv
dWJsZSBtYXhECiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkpOwotICAgIG1fcHJvY2Vzc29y
ID0gc3RkOjptYWtlX3VuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwg
MSwgbWF4RGVsYXlUaW1lKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9j
ZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPFJlZjxEZWxheU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCmluZGV4IGE3
NWJhNmI3YzkyZTc0NDRjNjU2MDhlOGFlMThmOWQ1MDAwMjZhMDQuLjEwMzY2ZWY2ZWFmYjZjNDRk
YjE5MTI3MWE5OTVkOWU2ZDJhY2JhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIERlbGF5UHJv
Y2Vzc29yOjp+RGVsYXlQcm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJu
ZWw+IERlbGF5UHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPERlbGF5RFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxE
ZWxheURTUEtlcm5lbD4odGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuY3BwCmluZGV4IGFhMGU0YTgwMTE5ZWJlZDlkZDM2OTZiM2ZhMTMwNWRkZjMyYmQw
NTIuLjE0MDk2ZDhmMGM1OTZhNTI5NzE2NjZlZjgyNjdhMDIzZmRiNDRiMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNz
b3JOb2RlLmNwcApAQCAtNDYsOCArNDYsOCBAQCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5h
bWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcAogewog
ICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRHluYW1pY3NDb21wcmVzc29yKTsKIAotICAgIGFkZElu
cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRw
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJP
Zk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1
dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKIAogICAgIG1fdGhyZXNob2xkID0g
QXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJ0aHJlc2hvbGQiLCAtMjQsIC0xMDAsIDApOwog
ICAgIG1fa25lZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAia25lZSIsIDMwLCAwLCA0
MCk7CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6aW5pdGlh
bGl6ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOyAg
ICAKLSAgICBtX2R5bmFtaWNzQ29tcHJlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8RHluYW1pY3ND
b21wcmVzc29yPihzYW1wbGVSYXRlKCksIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKTsK
KyAgICBtX2R5bmFtaWNzQ29tcHJlc3NvciA9IG1ha2VVbmlxdWU8RHluYW1pY3NDb21wcmVzc29y
PihzYW1wbGVSYXRlKCksIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIH0KIAogdm9p
ZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjp1bmluaXRpYWxpemUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCA2Yzk0YTUyM2MzYjJhMDIxMmIy
YTU0YTFhOWM4ZjAyNmJiZDFkYjVmLi4yNTdkZjJlY2UyMzM4Y2JjYmFiOWVkMDUxMjMzYzY0YjFj
NTdmMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNw
cApAQCAtNDYsOCArNDYsOCBAQCBHYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogCiAgICAgbV9nYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRl
KGNvbnRleHQsICJnYWluIiwgMS4wLCAwLjAsIDEuMCk7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkSW5wdXQobWFrZVVu
aXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1
ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDM4MWFlNzI3OTRmYjBlN2ZlYTYzMzFhYmQzM2Iy
MGMxNTg0NWZmOWIuLjkxMmU2ZWIyMzIxNDU2NDNkNmZkYWZiYzExZTk2NzY0YzNkMmY1ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0LAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2UpOwogCiAgICAgLy8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdlIGRl
cGVuZGluZyBvbiB3aGF0IHRoZSBtZWRpYSBlbGVtZW50IC5zcmMgaXMgc2V0IHRvLgotICAgIGFk
ZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAg
aW5pdGlhbGl6ZSgpOwogfQpAQCAtODksNyArODksNyBAQCB2b2lkIE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3Vy
YwogCiAgICAgICAgIGlmIChzb3VyY2VTYW1wbGVSYXRlICE9IHNhbXBsZVJhdGUoKSkgewogICAg
ICAgICAgICAgZG91YmxlIHNjYWxlRmFjdG9yID0gc291cmNlU2FtcGxlUmF0ZSAvIHNhbXBsZVJh
dGUoKTsKLSAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxz
KTsKKyAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0
aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEJ5cGFzcyByZXNhbXBsaW5nLgogICAgICAgICAg
ICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlLmNwcAppbmRleCA1YjJhNTAwZGQyOTRkMTA1NThiYzdhMDhjZjc3MTZlNDI2YjVjMmFjLi5l
NDNmNTQ0OGJjMjZiODZhZjY5M2QwMDk5OTVjNjczNGY2OTU1ZDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZQog
ICAgIGF1ZGlvU291cmNlUHJvdmlkZXItPnNldENsaWVudCh0aGlzKTsKICAgICAKICAgICAvLyBE
ZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSBmb3Jt
YXQgb2YgdGhlIE1lZGlhU3RyZWFtJ3MgYXVkaW8gdHJhY2suCi0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7
CiB9CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNl
dEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmNlCiAgICAgICAgIG1f
bXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKICAgICAgICAgZG91
YmxlIHNjYWxlRmFjdG9yID0gc291cmNlU2FtcGxlUmF0ZSAvIHNhbXBsZVJhdGU7Ci0gICAgICAg
IG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNdWx0aUNoYW5uZWxS
ZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9tdWx0
aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2Nh
bGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgIH0KIAogICAgIG1fc291cmNlTnVtYmVy
T2ZDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDViNTAyOWJmYmNlNzdhZDVi
NmMzYzg4MzI2MGRiOWRlZmRmNjEwNGIuLmE5OWNlYWFkNmI1YzIxZTA5ZGQyMjUzYzJhY2YzMDQ1
NTQ3NTNlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIE9zY2lsbGF0b3JOb2RlOjpPc2NpbGxh
dG9yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgc2V0
VHlwZShtX3R5cGUpOwogCiAgICAgLy8gQW4gb3NjaWxsYXRvciBpcyBhbHdheXMgbW9uby4KLSAg
ICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsK
KyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAog
ICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuY3BwCmluZGV4IGY2NDc0NjllMjM1NWViM2EwYzA5YjNiMDg1MmJmYmVjNmU0
OGQyOGQuLjUxYzY5OTE2ZmZkZTcwZjVlNjgwYWE5MjdjZWZlZjdjYTczMmMzZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtNTgsOCAr
NTgsOCBAQCBQYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICAvLyBMb2FkIHRoZSBIUlRGIGRhdGFiYXNlIGFzeW5jaHJvbm91
c2x5IHNvIHdlIGRvbid0IGJsb2NrIHRoZSBKYXZhc2NyaXB0IHRocmVhZCB3aGlsZSBjcmVhdGlu
ZyB0aGUgSFJURiBkYXRhYmFzZS4KICAgICBtX2hydGZEYXRhYmFzZUxvYWRlciA9IEhSVEZEYXRh
YmFzZUxvYWRlcjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoY29udGV4
dC5zYW1wbGVSYXRlKCkpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5w
dXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIDIpKTsKIAogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAg
ICAgbV9jaGFubmVsQ291bnQgPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuY3BwCmluZGV4IGJiMmEwN2QyMzU0ZWJhZjk0ZDAwNDY1YTRiNDFk
ODYwNTU1OTk4NmIuLmVjOWExN2M0ZjU2ZWI5OTY2ZGMxNzYyN2U5MzQwNWJhMWZkNDhjNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAK
QEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRU
YWJsZXMoY29uc3QgZmxvYXQqIHJlYWxEYXRhLCBjb25zdCBmbG9hdCogaQogICAgICAgICByZWFs
UFswXSA9IDA7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBiYW5kLWxpbWl0ZWQgdGFibGUuCi0g
ICAgICAgIG1fYmFuZExpbWl0ZWRUYWJsZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9G
bG9hdEFycmF5PihtX3BlcmlvZGljV2F2ZVNpemUpKTsKKyAgICAgICAgbV9iYW5kTGltaXRlZFRh
Ymxlcy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVyaW9kaWNXYXZlU2l6
ZSkpOwogCiAgICAgICAgIC8vIEFwcGx5IGFuIGludmVyc2UgRkZUIHRvIGdlbmVyYXRlIHRoZSB0
aW1lLWRvbWFpbiB0YWJsZSBkYXRhLgogICAgICAgICBmbG9hdCogZGF0YSA9IG1fYmFuZExpbWl0
ZWRUYWJsZXNbcmFuZ2VJbmRleF0tPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDNiNjI4MWQxZTg0M2Vk
Mjk5Y2Y2MTUzYzczMjc5NzA3NDE4MDY3NzguLjgwMjM3MzQwN2Y3NWQ0N2UyNTllYjYwNTYzODBm
NjM1ZjEzYWNlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBSZWFsdGltZUFuYWx5c2Vy
OjpSZWFsdGltZUFuYWx5c2VyKCkKICAgICAsIG1fbWluRGVjaWJlbHMoRGVmYXVsdE1pbkRlY2li
ZWxzKQogICAgICwgbV9tYXhEZWNpYmVscyhEZWZhdWx0TWF4RGVjaWJlbHMpCiB7Ci0gICAgbV9h
bmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUp
OworICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KERlZmF1bHRGRlRT
aXplKTsKIH0KIAogUmVhbHRpbWVBbmFseXNlcjo6flJlYWx0aW1lQW5hbHlzZXIoKSA9IGRlZmF1
bHQ7CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgUmVhbHRpbWVBbmFseXNlcjo6c2V0RmZ0U2l6ZShz
aXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fZmZ0U2l6ZSAh
PSBzaXplKSB7Ci0gICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZU
RnJhbWU+KHNpemUpOworICAgICAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZy
YW1lPihzaXplKTsKICAgICAgICAgLy8gbV9tYWduaXR1ZGVCdWZmZXIgaGFzIHNpemUgPSBmZnRT
aXplIC8gMiBiZWNhdXNlIGl0IGNvbnRhaW5zIGZsb2F0cyByZWR1Y2VkIGZyb20gY29tcGxleCB2
YWx1ZXMgaW4gbV9hbmFseXNpc0ZyYW1lLgogICAgICAgICBtX21hZ25pdHVkZUJ1ZmZlci5hbGxv
Y2F0ZShzaXplIC8gMik7CiAgICAgICAgIG1fZmZ0U2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApp
bmRleCBkNTlkZWNmOTk1MTZmNmQwMWFmOWMxZDlmZGJmMWQwYjEwMTllNDBmLi5kNWIzYWZiZjI3
MTAxNDUxNDk0YjE4OTM3NzY4YjYwNWY2YTNiNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTY4LDgg
KzY4LDggQEAgU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUKICAgICBBU1NFUlQobnVtYmVyT2ZJbnB1
dENoYW5uZWxzIDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKIAogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlSmF2YVNjcmlwdCk7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwor
ICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRP
dXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCmluZGV4IDQxMGQx
ZGFmNWM4OTU0MDA5ZmYwNjM2YTgyOTAwYmY5NGFmNGY4ZjEuLmYzZDIxMjJkZjUxYzRmMWEyOTIy
NGU2OTNhYjQ5NWJiYzJiOTM4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcApAQCAtNDksMTIgKzQ5LDEyIEBA
IHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcoKQog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdGVtcEJ1ZmZlcikgewot
ICAgICAgICBtX3RlbXBCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4o
UmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAgICAgICBtX3RlbXBCdWZmZXIyID0gc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKLSAgICAgICAg
bV91cFNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1
bSk7Ci0gICAgICAgIG1fZG93blNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVy
PihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fdXBTYW1wbGVyMiA9IHN0ZDo6bWFr
ZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fZG93
blNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1
bSAqIDQpOworICAgICAgICBtX3RlbXBCdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJh
eT4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX3RlbXBCdWZmZXIyID0gbWFrZVVu
aXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKKyAgICAgICAgbV91
cFNhbXBsZXIgPSBtYWtlVW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSk7CisgICAg
ICAgIG1fZG93blNhbXBsZXIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFu
dHVtICogMik7CisgICAgICAgIG1fdXBTYW1wbGVyMiA9IG1ha2VVbmlxdWU8VXBTYW1wbGVyPihS
ZW5kZXJpbmdRdWFudHVtICogMik7CisgICAgICAgIG1fZG93blNhbXBsZXIyID0gbWFrZVVuaXF1
ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAppbmRl
eCA4NDg2OTkzZjIxMDg0Y2NjNjFjY2Q4MGIyYzE4N2UwOGMxNTVmZDAxLi42ZTdlOGRkMWM5YzE5
ZmEzYzg1ZTNkOWQ4NTVhYjlmNDU3ODViNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBXYXZl
U2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQogICAgIDog
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiB7
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKLSAgICBtX3Byb2Nlc3NvciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2F2ZVNoYXBlclByb2Nlc3Nvcj4oY29udGV4dC5zYW1wbGVSYXRl
KCksIDEpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29y
Pihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNz
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vz
c29yLmNwcAppbmRleCAyODljMzlmNWYzZjlmN2E3OWU5YTViNmE2ZDgzMTViNTkxZjQzMmRhLi5i
ZmU1ZTBlNDdmYjg0YTI4YzYzYzZlMjhiMzJlMGZjMTFlNWM2N2IxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6fldhdmVTaGFwZXJQcm9jZXNz
b3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IFdhdmVTaGFwZXJQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2F2ZVNo
YXBlckRTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2F2ZVNoYXBlckRT
UEtlcm5lbD4odGhpcyk7CiB9CiAKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUo
RmxvYXQzMkFycmF5KiBjdXJ2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IGIxYzQ5ZGI1MjNi
OTM2YjBhNGVjMjIxMDQxYjc3ZGE3Y2MxNDc4ZmQuLjIwZDYwNjk3MjQyODk3Mzc3OTgyYjg0ZWU3
M2Q0ZGE2MzRlZDhmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBz
dHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwogdXNpbmcgQ3JlZGVudGlh
bFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEJh
c2ljQ3JlZGVudGlhbD4+PjsKIAogY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IpOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCmluZGV4IDhjM2QxMzQ2YzQwMzBj
ZmIzZDgyNzczN2EwYTE1ZjNmMWNiOWJhZDcuLjFiOTEyZDk4ZDlmMDRmMzA3NGExYjhlMWE2MjYw
MWE0MmZhZjM1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcApAQCAtMTUwLDkgKzE1MCw5IEBAIEZpZG9IaWRN
ZXNzYWdlOjpGaWRvSGlkTWVzc2FnZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VD
b21tYW5kIHR5cGUsIGNvCiAgICAgdWludDhfdCBzZXF1ZW5jZSA9IDA7CiAKICAgICBzaXplX3Qg
cG9zID0gZGF0YS5zaXplKCkgPiBrSGlkSW5pdFBhY2tldERhdGFTaXplID8ga0hpZEluaXRQYWNr
ZXREYXRhU2l6ZSA6IGRhdGEuc2l6ZSgpOwotICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0
RGF0YShkYXRhKSwgZGF0YS5zaXplKCkpKTsKKyAgICBtX3BhY2tldHMuYXBwZW5kKG1ha2VVbmlx
dWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgdHlwZSwgZ2V0SW5pdFBhY2tldERhdGEo
ZGF0YSksIGRhdGEuc2l6ZSgpKSk7CiAgICAgZm9yICg7IHBvcyA8IGRhdGEuc2l6ZSgpOyBwb3Mg
Kz0ga0hpZENvbnRpbnVhdGlvblBhY2tldERhdGFTaXplKQotICAgICAgICBtX3BhY2tldHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElk
LCBzZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKKyAg
ICAgICAgbV9wYWNrZXRzLmFwcGVuZChtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNr
ZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0RGF0YShkYXRh
LCBwb3MpKSk7CiB9CiAKIEZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2FnZShzdGQ6OnVuaXF1
ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IGluaXRQYWNrZXQsIHNpemVfdCByZW1haW5pbmdTaXpl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRQYWNrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRQYWNrZXQuY3BwCmluZGV4IDU1YjdiMmQ3MTUzNmEyMzU0OTEzYWUzNmU5ZmI5MWVmMDBhOGYw
ODMuLjI2YjgwYWE4YTVmMTM5NjNjNzY4ZTdlOTIzYmJhYWIyYjg3YjVlZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBG
aWRvSGlkSW5pdFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGMKICAgICBhdXRvIGRh
dGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2lu
KCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmlk
b0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5bG9h
ZFNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVs
SWQsIGNvbW1hbmQsIFdURk1vdmUoZGF0YSksIHBheWxvYWRTaXplKTsKIH0KIAogLy8gVTJGIElu
aXRpYWxpemF0aW9uIHBhY2tldCBpcyBkZWZpbmVkIGFzOgpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PiBGaWRvSGlkQ29udGludWF0
aW9uUGFja2V0OjpjcmVhdGVGcm9tCiAgICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7
CiAgICAgZGF0YS5hcHBlbmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+
KGNoYW5uZWxJZCwgc2VxdWVuY2UsIFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UsIFdURk1v
dmUoZGF0YSkpOwogfQogCiAvLyBVMkYgQ29udGludWF0aW9uIHBhY2tldCBpcyBkZWZpbmVkIGFz
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApp
bmRleCAwMjE0NWQwY2MyZThjOWVhZGIwYzg4Mjk0MWI4NTlmYzBhZTgwNTJkLi41YjY0YTA4NzQ2
YWY4MDgwY2QyZTcyNTAzZmEwMGQzYzk0OWZiMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNldFZlcnNp
b25Jbk5ld0RhdGFiYXNlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlc3VsdDsKLSAgICBhdXRvIHRhc2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRWZXJzaW9uSW5O
ZXdEYXRhYmFzZSwgc3luY2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VV
bmlxdWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBz
eW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhX
VEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7
CiAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8RGF0YWJhc2VDbG9zZVRhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIpKTsKKyAgICB0
aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKG1ha2VVbmlxdWU8RGF0YWJhc2VDbG9zZVRhc2s+
KCp0aGlzLCBzeW5jaHJvbml6ZXIpKTsKIAogICAgIC8vIEZJWE1FOiBpT1MgZGVwZW5kcyBvbiB0
aGlzIGZ1bmN0aW9uIGJsb2NraW5nIHVudGlsIHRoZSBkYXRhYmFzZSBpcyBjbG9zZWQgYXMgcGFy
dAogICAgIC8vIG9mIGNsb3NpbmcgYWxsIG9wZW4gZGF0YWJhc2VzIGZyb20gYSBwcm9jZXNzIGFz
c2VydGlvbiBleHBpcmF0aW9uIGhhbmRsZXIuCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBEYXRh
YmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3Mg
PSB0cnVlOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25RdWV1ZS50YWtl
Rmlyc3QoKTsKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CisgICAgYXV0byB0YXNrID0gbWFrZVVu
aXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOwogICAg
IExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBm
b3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRhc2suZ2V0KCksIHRhc2stPnRyYW5zYWN0aW9uKCkpOwog
ICAgIGRhdGFiYXNlVGhyZWFkKCkuc2NoZWR1bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQpAQCAt
NTQxLDcgKzU0MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKFNR
TFRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBhdXRvJiB0aHJlYWQgPSBkYXRhYmFz
ZVRocmVhZCgpOwogCi0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRy
YW5zYWN0aW9uVGFzaz4oJnRyYW5zYWN0aW9uKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVl
PERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPigmdHJhbnNhY3Rpb24pOwogICAgIExPRyhTdG9yYWdl
QVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRyYW5z
YWN0aW9uIHN0ZXBcbiIsIHRhc2suZ2V0KCkpOwogICAgIHRocmVhZC5zY2hlZHVsZVRhc2soV1RG
TW92ZSh0YXNrKSk7CiB9CkBAIC03NjMsNyArNzYzLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJh
c2U6OnRhYmxlTmFtZXMoKQogICAgIGlmICh0aHJlYWQudGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5
bmNocm9uaXplcikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBhdXRvIHRhc2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBzeW5jaHJvbml6
ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRhYmxlTmFt
ZXNUYXNrPigqdGhpcywgc3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5zY2hlZHVs
ZUltbWVkaWF0ZVRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JU
YXNrQ29tcGxldGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCmluZGV4IDNiYWJkNDk1NjZmMTRhMWIzYzBkM2Ix
N2JmNGM3ZjMyYzVlM2Q1ZjcuLmQ2NDk3YzM5N2ZhNDc0Mjg1OWUwNTg2MjIzNmVkZWU0M2Q0ZWYz
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUaHJlYWQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IERhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCgpCi0gICAgOiBtX3RyYW5zYWN0aW9uQ29v
cmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQor
ICAgIDogbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKG1ha2VVbmlxdWU8U1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvcj4oKSkKIHsKICAgICBtX3NlbGZSZWYgPSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmlu
ZGV4IGQ4ZGRjYzU5ODU1MTU3NmQyYTJjMTBmNDJlNGFkMTJhODI1OWI1MTkuLmMyOGE5NmY0NTgz
OWVmNTRkYWYxZjk5YTFhZDU4ZDdlY2Q0YTY3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTU0OSw3ICs1
NDksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBk
YXRhYmFzZSkKICAgICBMb2NrSG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJh
c2VNYXBHdWFyZCk7CiAKICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQotICAgICAgICBtX29w
ZW5EYXRhYmFzZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7Cisg
ICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4o
KTsKIAogICAgIGF1dG8gb3JpZ2luID0gZGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKIApAQCAt
OTU2LDcgKzk1Niw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGluZ0RhdGFi
YXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjCiAgICAgLy8gV2UgZG9uJ3Qg
dXNlIEhhc2hNYXA6OmVuc3VyZSBoZXJlIHRvIGF2b2lkIG1ha2luZyBhbiBpc29sYXRlZCBjb3B5
IG9mIHRoZSBvcmlnaW4gZXZlcnkgdGltZS4KICAgICBhdXRvKiBuYW1lU2V0ID0gbV9iZWluZ0Ny
ZWF0ZWQuZ2V0KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lU2V0KSB7Ci0gICAgICAgIGF1dG8gb3du
ZWRTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hDb3VudGVkU2V0PFN0cmluZz4+KCk7CisgICAg
ICAgIGF1dG8gb3duZWRTZXQgPSBtYWtlVW5pcXVlPEhhc2hDb3VudGVkU2V0PFN0cmluZz4+KCk7
CiAgICAgICAgIG5hbWVTZXQgPSBvd25lZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0NyZWF0
ZWQuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0K
QEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZWNvcmREZWxldGlu
Z0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjCiAgICAgLy8gV2Ug
ZG9uJ3QgdXNlIEhhc2hNYXA6OmVuc3VyZSBoZXJlIHRvIGF2b2lkIG1ha2luZyBhbiBpc29sYXRl
ZCBjb3B5IG9mIHRoZSBvcmlnaW4gZXZlcnkgdGltZS4KICAgICBhdXRvKiBuYW1lU2V0ID0gbV9i
ZWluZ0RlbGV0ZWQuZ2V0KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lU2V0KSB7Ci0gICAgICAgIGF1
dG8gb3duZWRTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAg
ICAgYXV0byBvd25lZFNldCA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgICAg
ICBuYW1lU2V0ID0gb3duZWRTZXQuZ2V0KCk7CiAgICAgICAgIG1fYmVpbmdEZWxldGVkLmFkZChv
cmlnaW4uaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUob3duZWRTZXQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaAppbmRleCA4
NWYxYjYzNWMzZTQ5YjNmZTFhODFmOTQ4NzgyNDgwZTFkZTQ4ZmI1Li44YTU0YTM2NjdhMDdhYWNl
MDNhOTYwZmIyNTY0ZjdlYmRmM2JkOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgU1FM
UmVzdWx0U2V0OwogY2xhc3MgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOwogCiBjbGFzcyBTUUxTdGF0
ZW1lbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNRTFN0
YXRlbWVudChEYXRhYmFzZSYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTUUxWYWx1ZT4mJiwgUmVm
UHRyPFNRTFN0YXRlbWVudENhbGxiYWNrPiYmLCBSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxs
YmFjaz4mJiwgaW50IHBlcm1pc3Npb25zKTsKICAgICB+U1FMU3RhdGVtZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3Bw
CmluZGV4IDIwZDY5NzM0Nzc0ZGJmYmYzMGJkOGYzOWNlNGM1OTU3MjE0ZTkwMGMuLjRjYjA0MWU0
NTJjODBmNWY1OWJiMjcyMWVhYjhlYzFhOGY2MTgzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC04Myw3ICs4
Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKGNvbnN0
IFN0cmluZyYgc3FsU3RhdGVtZW50LCBPcHRpb25hCiAgICAgZWxzZSBpZiAobV9yZWFkT25seSkK
ICAgICAgICAgcGVybWlzc2lvbnMgfD0gRGF0YWJhc2VBdXRob3JpemVyOjpSZWFkT25seU1hc2s7
CiAKLSAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50Piht
X2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1
ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1p
c3Npb25zKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMU3RhdGVtZW50Piht
X2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1
ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1p
c3Npb25zKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkpCiAgICAgICAgIHN0YXRl
bWVudC0+c2V0RGF0YWJhc2VEZWxldGVkRXJyb3IoKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lk
IFNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogICAgIH0KIAog
ICAgIEFTU0VSVCghbV9zcWxpdGVUcmFuc2FjdGlvbik7Ci0gICAgbV9zcWxpdGVUcmFuc2FjdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0
ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOworICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBtYWtl
VW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLCBt
X3JlYWRPbmx5KTsKIAogICAgIG1fZGF0YWJhc2UtPnJlc2V0RGVsZXRlcygpOwogICAgIG1fZGF0
YWJhc2UtPmRpc2FibGVBdXRob3JpemVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAppbmRleCA3OWFhNTYxODFm
ZmVmM2FiMWE5MmFhNTdmZWNkYjZmYmE1OWU2ZjBiLi4xMjlkODZmZmNmYmQxNTdhODBiMDE5MmUz
YjQ5OTcxMzNiZWI3ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRy
aXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTmF2aWdh
dG9yV2ViRHJpdmVyKiBOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0
b3IpCiB7CiAgICAgTmF2aWdhdG9yV2ViRHJpdmVyKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8
TmF2aWdhdG9yV2ViRHJpdmVyKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRv
ciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4o
KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JXZWJE
cml2ZXI+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAg
ICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1
cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9OYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2
aWdhdG9yR1BVLmNwcAppbmRleCA4OGE5NzgwNDRiYzFlNzA4OTMzNTY1ZGM2MmQwYTMxNDZiMzhi
NDI2Li4zNzZkMTU1Y2E5YjJmNWQyYTRhYjE4NTJjNzc2ZDljMThmMmU1MjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgTmF2aWdhdG9yR1BVKiBOYXZpZ2F0b3JHUFU6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0
b3IpCiB7CiAgICAgTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdh
dG9yR1BVKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKKyAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7CiAgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVt
ZXJhdGlvbkRlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCmluZGV4IDFiMzQyNTA0ZDY5NTUwOGYw
ODE2Y2NiNTU4MmY1YmQ5YWE3NjFhNmIuLjVmNTdlZjExNzc1MzFhMGFjM2Q5NjBkZWIxZDQzODcx
MWE0ZjA1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBAIC02
Myw3ICs2Myw3IEBAIGNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBO
YW1lZFR5cGUgewogCiAgICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1iZXImJiBtZW1iZXIpCiAg
ICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUoKSwg
c3RkOjptYWtlX3VuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBtYWtlVW5p
cXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdC5pc05ld0VudHJ5OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2lu
dFNjYWZmb2xkaW5nLmgKaW5kZXggMGUzMWZmYmRlMGIxNDg2ZjZjNmY2NWUyMGViNjM4YWU4ODFi
ODdmOC4uY2JjYzQ4NGI2ODI1MGMwYWEwOWI1OTk0M2FkYzc5ZTgxMDA5Mjc0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBv
aW50U2NhZmZvbGRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCkBAIC01MCw2ICs1MCw3IEBAIG5h
bWVzcGFjZSBNZXRhbCB7CiBjbGFzcyBUeXBlTmFtZXI7CiAKIGNsYXNzIEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RW50cnlQb2ludFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3Jp
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RnVuY3Rpb25Xcml0ZXIuY3BwCmluZGV4IGNhMzQ2ZTMyYjI5OWExMGNlZDI1NjVkMDFkODU0NTNi
ZDgwZDE0NzQuLjQ3YjA2MGE3YzVhYWZjMzJlODg4NzVmZmM0YWY4OTg5Njg5NjI1NzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC03NjQsOSArNzY0LDkgQEAgc3RkOjp1
bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjpjcmVhdGVFbnQKICAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSgpOwogICAgIH07CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRj
aGVkU2VtYW50aWNzLnZlcnRleFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50
cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRy
eVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwg
bV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2Vt
YW50aWNzLm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50
cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRy
eVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwg
bV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2Vt
YW50aWNzLm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5p
dGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXIpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlv
bkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGlj
cy5mcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdt
ZW50U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihm
dW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNl
bWFudGljcy5mcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNz
LmZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4
dFZhcmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50
cyk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTc5MCw3ICs3OTAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9u
V3JpdGVyOjpjcmVhdGVFbgogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFi
bGVOYW1lKCk7CiAgICAgfTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNo
ZWRTZW1hbnRpY3Muc2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21w
dXRlRW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2lj
cywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50SXRlbXMsIG1fbWF0
Y2hlZFNlbWFudGljcy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXB1dGVFbnRyeVBv
aW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVO
YW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50
aWNzLnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5h
bWUpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCmlu
ZGV4IDE4NWJhMGIwODhhNWNlZDRjNWI2NjM2ZmE5NDQyYzAwMzQwZGQwMmEuLjQwYjYyYzM3ZGJl
MjU4MGUyM2Q1OTBjMDkxZWJiNDE3Y2E5YjgwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAK
QEAgLTI3MiwxOSArMjcyLDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxCYXNlVHlwZU5hbWVOb2RlPiBU
eXBlTmFtZXI6OmNyZWF0ZU5hbWVOb2RlKEFTVDo6VW5uYW1lZFR5cGUmIHVuCiAgICAgc3dpdGNo
ICh1bm5hbWVkVHlwZS5raW5kKCkpIHsKICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6
OlR5cGVSZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0
PEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlw
ZU5hbWUoKSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBl
TmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKICAgICB9CiAgICAgY2FzZSBB
U1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOiB7CiAgICAgICAgIGF1dG8mIHBvaW50ZXJU
eXBlID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVy
YXRlTmV4dFR5cGVOYW1lKCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UG9pbnRlclR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5l
eHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSk7CiAgICAgfQogICAgIGNh
c2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6IHsKICAgICAgICAgYXV0
byYgYXJyYXlSZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+
KHVubmFtZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlSZWZl
cmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlS
ZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUo
KSwgYXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBB
U1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewogICAgICAgICBhdXRvJiBhcnJheVR5cGUg
PSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRU
eXBlTmFtZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCks
IGFycmF5VHlwZS5udW1FbGVtZW50cygpKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCmluZGV4IDMzM2JkZjYyYzAyOTg2
NmE3NDlhM2M2MTJlNWU0ZGJhMTZiMjZhN2UuLmJkZWQ1M2UxOGFmYzhhNDgxNzU4MWZhM2FkYzIy
Nzg1NmViZDQ4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmNwcApAQCAtOTY2LDE0ICs5NjYsMTQgQEAgdm9pZCBDaGVja2Vy
Ojp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCiAK
IHZvaWQgQ2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVz
c2lvbiwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHVubmFtZWRUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0
aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7Ci0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29s
dmluZ1R5cGU+KFdURk1vdmUodW5uYW1lZFR5cGUpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1v
dmUodW5uYW1lZFR5cGUpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUo
dHlwZUFubm90YXRpb24pKTsKIH0KIAogdm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhw
cmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiByZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9
IEFTVDo6UmlnaHRWYWx1ZSgpKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFk
ZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJl
c29sdmFibGVUeXBlUmVmZXJlbmNlKSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFw
LmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29s
dmFibGVUeXBlUmVmZXJlbmNlKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZN
b3ZlKHR5cGVBbm5vdGF0aW9uKSk7CiB9CkBAIC05ODEsMTAgKzk4MSwxMCBAQCB2b2lkIENoZWNr
ZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWZQdHI8UmVzb2x2
YWJsZVR5cGVSZWZlcgogdm9pZCBDaGVja2VyOjpmb3J3YXJkVHlwZShBU1Q6OkV4cHJlc3Npb24m
IGV4cHJlc3Npb24sIFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6VHlwZUFubm90
YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKICAgICByZXNvbHZp
bmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYg
cmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVz
c2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7
CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFr
ZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfSwgWyZdKFJl
ZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVz
b2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVz
dWx0LmNvcHlSZWYoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogICAgIH0pKTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0
aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAppbmRleCA3Y2FiNmM5NWVjMzU2ZTc2
YWM1ZmM0ZjcwMmJkY2MxZWFjYzlmODcwLi5lNjhlNDg2ZTc4NWI0Y2M3ZTczYTRiMWQ4NDc3ODg4
NTAxZWU5MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQYXJzZXIuY3BwCkBAIC03NDAsMTkgKzc0MCwxOSBAQCBhdXRvIFBhcnNlcjo6cGFy
c2VTZW1hbnRpYygpIC0+IEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwg
RXJyb3I+CiAgICAgc3dpdGNoICh0b2tlbi0+dHlwZSkgewogICAgIGNhc2UgVG9rZW46OlR5cGU6
OkF0dHJpYnV0ZTogewogICAgICAgICBQQVJTRShyZXN1bHQsIFN0YWdlSW5PdXRTZW1hbnRpYyk7
Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92
ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGlj
PihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpTcGVj
aWFsaXplZDogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50
aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNU
OjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6UmVnaXN0ZXI6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgUmVzb3VyY2VTZW1hbnRp
Yyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RG
TW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFu
dGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBkZWZhdWx0OiAgewogICAgICAg
ICBQQVJTRShyZXN1bHQsIEJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6
bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAg
cmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9Owog
ICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCmluZGV4IDU1OWNlOGJhOTNiMjlkNTE3ZmE3
NzNmNmE1ZjUyN2RkZjRhODViMDEuLjQ1NzAwY2VkOGZkMzQ0OWM0ZGE0OTU5ZjcxYTQwMmFhMDJk
NmU0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUmVzb2x2aW5nVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCkBAIC03NCw2ICs3NCw3IEBAIGNsYXNzIFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2U+IHsKIC8vIEl0IGV4aXN0cyBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRoYXQgdGhlIGRlZmF1bHQg
Y29uc3RydWN0b3IgZG9lcyB0aGUgcmlnaHQgdGhpbmcuCiAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE1OCBUaGlzIHdyYXBwZXIgbWlnaHQgbm90
IGJlIG5lY2Vzc2FyeS4KIGNsYXNzIFJlc29sdmluZ1R5cGUgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc29sdmluZ1R5cGUoKQogICAgICAgICA6IG1faW5u
ZXIoUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKaW5kZXggYmY5MGY2
YzM2MDU0OGQ1MmM4ZmQ4ZWVlYzc1M2M3OGQ4ZmE5YmYxYy4uZDk1MjIzMDVhZGExZWU5NzFmMTY1
MjhkZTA2NjA0YmI2YTk2YjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdvcmtlck5h
dmlnYXRvckdQVSogV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKFdvcmtlck5hdmlnYXRvciogbmF2
aWdhdG9yKQogewogICAgIFdvcmtlck5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PFdvcmtlck5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9yPjo6ZnJv
bShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOYXZp
Z2F0b3JHUFU+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29y
a2VyTmF2aWdhdG9yR1BVPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5n
ZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCBlZDVhM2NjODM0ZmUxOWQ0ODg4Yjg1
NTUwNGJhMTU1ZDQ4M2ZjNDA3Li5jMWJhYzg2ZDNhYjJiMGQ5MTNmY2U3NDIxNDMxYTk0NDU5ZWVk
MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpjbGVhckNsaWVudCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KCkKIHsKLSAgICBtX3BlbmRpbmdUYXNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKICAgICB9KSk7CkBAIC0xNjQsNyArMTY0
LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENv
bm5lY3QoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGVuZGlu
Z1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNz
YWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVzc2Fn
ZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlm
IChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNz
YWdlKTsKICAgICB9KSk7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWUKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJl
Y2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiB7Ci0gICAgbV9w
ZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYmluYXJ5RGF0
YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJs
ZSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYmlu
YXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9KSk7CkBAIC0x
ODYsNyArMTg2LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF8KIAogdm9pZCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVu
c2lnbmVkIGJ1ZmZlcmVkQW1vdW50KQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJlZEFt
b3VudChidWZmZXJlZEFtb3VudCk7CiAgICAgfSkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudCh1bnNpZ25lZCBiCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogewotICAgIG1fcGVuZGluZ1Rh
c2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiAgICAgfSkp
OwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogCiB2b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVk
QnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9y
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwg
Y2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRl
ZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3Mu
YXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNs
b3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRD
b3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAgICAgaWYgKG1fY2xp
ZW50KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJl
ZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7CiAgICAg
ICAgIH0pKTsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZQogCiB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1l
c3NhZ2VFcnJvcigpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5n
VGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlTWVzc2FnZUVycm9yKCk7CiAgICAgfSkpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZUVycm9yKCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OmRpZFVwZ3JhZGVVUkwoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkVXBncmFkZVVSTCgpOwogICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2MDcxNDQwOTI0ZmIy
Y2U2N2Y1MzQwNjJkNzllOGUzYjA0ZWUxYzUwLi5hMDdhODc2M2FmYjk2OWI0MjA3MGJjNDlhODYy
MzliNzgzZDZlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFdlYlNvY2tldENo
YW5uZWw6OkNvbm5lY3RTdGF0dXMgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwm
IHJlcXVlc3RlZFVSCiAgICAgbV9hbGxvd0Nvb2tpZXMgPSB2YWxpZGF0ZWRVUkwtPmFyZUNvb2tp
ZXNBbGxvd2VkOwogICAgIFN0cmluZyB1c2VyQWdlbnQgPSBtX2RvY3VtZW50LT51c2VyQWdlbnQo
bV9kb2N1bWVudC0+dXJsKCkpOwogICAgIFN0cmluZyBjbGllbnRPcmlnaW4gPSBtX2RvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0gICAgbV9oYW5kc2hha2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29s
LCB1c2VyQWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOworICAgIG1faGFuZHNo
YWtlID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJsLCBw
cm90b2NvbCwgdXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29raWVzKTsKICAgICBt
X2hhbmRzaGFrZS0+cmVzZXQoKTsKICAgICBpZiAobV9kZWZsYXRlRnJhbWVyLmNhbkRlZmxhdGUo
KSkKICAgICAgICAgbV9oYW5kc2hha2UtPmFkZEV4dGVuc2lvblByb2Nlc3NvcihtX2RlZmxhdGVG
cmFtZXIuY3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkpOwpAQCAtNzAzLDcgKzcwMyw3IEBAIGJv
b2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIHZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6ZW5xdWV1ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgQVNTRVJU
KG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwot
ICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1
dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUg
PSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlVGV4dDsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVl
dWVkRnJhbWVUeXBlU3RyaW5nOwogICAgIGZyYW1lLT5zdHJpbmdEYXRhID0gc3RyaW5nOwpAQCAt
NzEzLDcgKzcxMyw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZShj
b25zdCBDU3RyaW5nJiBzdHJpbmcpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVz
ID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVl
ZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBvcENvZGU7CiAgICAgZnJhbWUtPmZyYW1l
VHlwZSA9IFF1ZXVlZEZyYW1lVHlwZVZlY3RvcjsKICAgICBmcmFtZS0+dmVjdG9yRGF0YS5yZXNp
emUoZGF0YUxlbmd0aCk7CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjplbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNo
YXIKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlIG9wQ29kZSwgQmxvYiYgYmxvYikKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0Zy
YW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1h
a2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAg
ICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBlQmxvYjsKICAgICBmcmFtZS0+Ymxv
YkRhdGEgPSAmYmxvYjsKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICAgICAgICAgIHJlZigpOyAvLyBX
aWxsIGJlIGRlcmVmZWQgYWZ0ZXIgZGlkRmluaXNoTG9hZGluZygpIG9yIGRpZEZhaWwoKS4KICAg
ICAgICAgICAgICAgICBBU1NFUlQoIW1fYmxvYkxvYWRlcik7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGZyYW1lLT5ibG9iRGF0YSk7Ci0gICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNB
cnJheUJ1ZmZlciwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gbWFrZVVu
aXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZl
ciwgdGhpcyk7CiAgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyU3RhdHVzID0gQmxvYkxvYWRl
clN0YXJ0ZWQ7CiAgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyLT5zdGFydChtX2RvY3VtZW50
LmdldCgpLCAqZnJhbWUtPmJsb2JEYXRhKTsKICAgICAgICAgICAgICAgICBtX291dGdvaW5nRnJh
bWVRdWV1ZS5wcmVwZW5kKFdURk1vdmUoZnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcApp
bmRleCBmMmZhNjIwOWMwNDhmNTE1MThhMjVlZWMxM2FlZjI1NjRjOWY0ZTdiLi5lZTMzZWEwZmU1
Y2YxZDViZjc5YTJkYTA2NzA3YjczY2QzYTc4YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
CkBAIC0xNTUsNyArMTU1LDcgQEAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3I+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZy
YW1lPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU+KHRoaXMpOwogfQogCiBib29sIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNhbkRl
ZmxhdGUoKSBjb25zdApAQCAtMTcwLDggKzE3MCw4IEBAIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0CiAjaWYgVVNFKFpMSUIpCiB2b2lkIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxh
dGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlIG1vZGUpCiB7Ci0gICAgbV9kZWZsYXRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOwotICAgIG1f
aW5mbGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOworICAgIG1f
ZGVmbGF0ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5kb3dCaXRzLCBtb2Rl
KTsKKyAgICBtX2luZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4oKTsKICAg
ICBpZiAoIW1fZGVmbGF0ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5pdGlhbGl6
ZSgpKSB7CiAgICAgICAgIG1fZGVmbGF0ZXIgPSBudWxscHRyOwogICAgICAgICBtX2luZmxhdGVy
ID0gbnVsbHB0cjsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDbwog
c3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewogI2lmIFVTRShaTElCKQotICAg
IGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlz
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhp
cyk7CiAgICAgaWYgKCFlbmFibGVkKCkgfHwgIVdlYlNvY2tldEZyYW1lOjppc05vbkNvbnRyb2xP
cENvZGUoZnJhbWUub3BDb2RlKSB8fCAhZnJhbWUucGF5bG9hZExlbmd0aCkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICBpZiAoIW1fZGVmbGF0ZXItPmFkZEJ5dGVzKGZyYW1lLnBheWxvYWQs
IGZyYW1lLnBheWxvYWRMZW5ndGgpIHx8ICFtX2RlZmxhdGVyLT5maW5pc2goKSkgewpAQCAtMTk2
LDcgKzE5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyCiAgICAgZnJhbWUucGF5bG9hZExl
bmd0aCA9IG1fZGVmbGF0ZXItPnNpemUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICNlbmRpZgog
fQogCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNl
dERlZmxhdGVDb250ZXh0KCkKIAogc3RkOjp1bmlxdWVfcHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+
IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmluZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVy
Pih0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRl
cj4odGhpcyk7CiAgICAgaWYgKCFlbmFibGVkKCkgJiYgZnJhbWUuY29tcHJlc3MpIHsKICAgICAg
ICAgcmVzdWx0LT5mYWlsKCJDb21wcmVzc2VkIGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRl
ZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZs
YXRlci5jcHAKaW5kZXggMWQ2ZjE3ODIyYzgwNTI4MWI3MGE0MTYyMGRjZGVlNmFkMmFiODg5Yy4u
NGE0ODY1Zjg0OTRkMDYxM2VhYzMyMWE1OTRmOGJhZTE5OTk2YmIzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIFdlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcihp
bnQgd2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSBjb250ZXh0CiB7CiAgICAgQVNTRVJU
KG1fd2luZG93Qml0cyA+PSA4KTsKICAgICBBU1NFUlQobV93aW5kb3dCaXRzIDw9IDE1KTsKLSAg
ICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9zdHJlYW0g
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAgICBtZW1z
ZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlcjo6cmVzZXQoKQogV2ViU29ja2V0SW5mbGF0
ZXI6OldlYlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dCaXRzKQogICAgIDogbV93aW5kb3dCaXRz
KHdpbmRvd0JpdHMpCiB7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3RyZWFt
PigpOworICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8el9z
dHJlYW0+KCk7CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJlYW0p
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXgg
OTk0MDczZWFhNWU4YjIzMGQxYzhiMDBjMTZjNTk2NDNlOTc4NDI2OC4uZGM2ZjY2MGZkMzg4Y2Vm
ZmFmMGViZWY2ZTY2MGU2YjY5NWJiNjMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVj
dXQKIAogICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
R2xvYmFsU2NvcGUoewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVh
bnVwVGFzaywKLSAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYo
KSwgJmxvYWRlclByb3h5LCBwZWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQZWVyPihjbGllbnRXcmFw
cGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHBy
b3ZpZGVyKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAg
ICAgICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJv
eHksIHBlZXIgPSBtYWtlVW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigpLCBsb2Fk
ZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgICAg
IGlmIChjbGllbnRXcmFwcGVyLT5mYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKSkgewog
ICAgICAgICAgICAgICAgIC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFybGll
ciwgd2UgbmVlZCB0byBraWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBwZWVy
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJW
Ui5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcApp
bmRleCBkOTdiNWMyYTg1YTlkMjMyOGY5ODQwZjQ0ZDNkMWU5NjMyYzgyZDllLi43NzZjNDNhZWMw
YjliNWJkZWFkYzNkZDg5MTI2YWNlZDZiYTc1MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcApAQCAtOTQsNyArOTQsNyBAQCBOYXZpZ2F0
b3JXZWJWUiogTmF2aWdhdG9yV2ViVlI6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAg
ICAgTmF2aWdhdG9yV2ViVlIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJW
Uio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKICAgICAgICAgc3VwcGxl
bWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3Is
IHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0
T3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0RpZ2VzdE9wZW5TU0wuY3BwCmluZGV4IGJjMjNkNTljYzMxMjM3YjE0OTdhNzZhY2M1OWQzZWFm
NWQyYjU4NDAuLjZjYTY3ZjM5MWEzMWZjZDM4NjkyNTViMjFmMmZjYjdmM2ZiZjliYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0
T3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9EaWdlc3RPcGVuU1NMLmNwcApAQCAtNzksNyArNzksNyBAQCBzdHJ1Y3QgQ3J5cHRvRGln
ZXN0Q29udGV4dEltcGwgOiBwdWJsaWMgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CiAKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IGNyZWF0ZSgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw+KCk7
CiAgICAgfQogCiAgICAgQ3J5cHRvRGlnZXN0Q29udGV4dEltcGwoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKaW5kZXggMzE1MzE2ODA4MDdiNzJk
NWVmOTM4MDkxNGU3YWUyNDBhZDlkMDM5Ny4uZTUzZTE5NWIzNWY0OThmNzk1MjUxNTFlYmMyYWNl
YjVmYWZjZDI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xv
Y2tHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dl
bmVyaWMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBQQUwgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8Q2xvY2s+IENsb2NrOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENsb2NrR2VuZXJpYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDbG9ja0dlbmVyaWM+
KCk7CiB9CiAKIENsb2NrR2VuZXJpYzo6Q2xvY2tHZW5lcmljKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0KaW5kZXggYzY4OTMyMTVmMDZiMGM2NzRkNTQ2
MDgzM2IxYTRkNTFjYzMyYjYxNC4uOWUwNzFiNzgxNGU0NGZlMDA0NDJlNjZjNzIwYjJiZmIzMTMw
NjlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2Nr
Q00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0K
QEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9
IDEwMDA7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4gQ2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tDTT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDbG9ja0NNPigpOwogfQogCiBDbG9ja0NNOjpDbG9ja0NNKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGNhY2FiODU2OGM4NjExMmQ5
Y2RmZWZjMzA5MDI2YWQ5YzgxNTMzZTUuLmIzNWZjMTU2NDM3ZjFjYTA5ZDY0MjJiZDU5YzcxMzNm
YWMyYzYwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcApAQCAtMTU3NSw3ICsxNTc1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1
dGVJc0lnbm9yZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHZvaWQgQVhPYmplY3RDYWNoZTo6
c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcygpCiB7
CiAgICAgaWYgKCFtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUpCi0gICAgICAgIG1fY29t
cHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8QVhDb21wdXRlZE9i
amVjdEF0dHJpYnV0ZUNhY2hlPigpOworICAgICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRl
Q2FjaGUgPSBtYWtlVW5pcXVlPEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsKIH0K
IAogdm9pZCBBWE9iamVjdENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRl
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGVkZmRi
YjBhMDZmZDZlZGEyNTA0OGI5NzE5YjllZjFiYTllMTM0NDMuLmU2ZGVhOTYxMWY5YjQ4ODBhNWEx
OWI5YWQxZTFiZGU3MWMxODQ3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9XZWJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmlt
YXRpb24uY3BwCkBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnVwZGF0ZUZp
bmlzaGVkU3RhdGUoRGlkU2VlayBkaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90aWZ5IHN5bmMKICAg
ICAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgc3luY2hyb25vdXNseSBub3RpZnkgaXMgZmFsc2Us
IHF1ZXVlIGEgbWljcm90YXNrIHRvIHJ1biBmaW5pc2ggbm90aWZpY2F0aW9uIHN0ZXBzIGZvciBh
bmltYXRpb24gdW5sZXNzIHRoZXJlCiAgICAgICAgICAgICAvLyBpcyBhbHJlYWR5IGEgbWljcm90
YXNrIHF1ZXVlZCB0byBydW4gdGhvc2Ugc3RlcHMgZm9yIGFuaW1hdGlvbi4KICAgICAgICAgICAg
IG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gdHJ1ZTsKLSAgICAg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCku
YXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChtX2ZpbmlzaE5vdGlmaWNh
dGlvblN0ZXBzTWljcm90YXNrUGVuZGluZykgewogICAgICAgICAgICAgICAgICAgICBtX2Zpbmlz
aE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hOb3RpZmljYXRpb25TdGVwcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAppbmRleCA3ZGE0NmE2MTUwNGVmMjQ4MTVhNjk0ZGZi
YTEyYzI4YjFlZjRmZTY2Li42MjFiODkwNTFiYjQ4ZGIwMzAxZWE4MDQ3YzdhZmVmZmI2OGNkZTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaApAQCAt
NjAsNiArNjAsNyBAQCBjbGFzcyBET01Qcm9taXNlUHJveHkgewogCiB0ZW1wbGF0ZTw+CiBjbGFz
cyBET01Qcm9taXNlUHJveHk8SURMVm9pZD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIERPTVByb21pc2VQcm94eSgpID0gZGVmYXVsdDsKICAgICB+RE9NUHJv
bWlzZVByb3h5KCkgPSBkZWZhdWx0OwpAQCAtODQsNiArODUsNyBAQCBjbGFzcyBET01Qcm9taXNl
UHJveHk8SURMVm9pZD4gewogLy8gRm9udEZhY2UgYW5kIEZvbnRGYWNlU2V0LgogdGVtcGxhdGU8
dHlwZW5hbWUgSURMVHlwZT4KIGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJh
Y2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJl
c29sdmVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVy
VHlwZSAoKT47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCmluZGV4IGRiMGMxZGM3NmY4YTI4OTcwNDVlZTJjZmM5MTkyM2Q1OGRmMWI2ZjkuLmM1
YzQ3MDYxYmZhY2ExZmNhNzI4YmUyN2IwYTJiNGE5ZjBiMzAyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBA
IHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVj
dCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyCiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAogICAgIGF1dG8gY2Fs
bGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0
YXNrKSk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNh
bGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlz
T2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFjdGl2
ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCks
ICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAg
fSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1
c3RvbS5jcHAKaW5kZXggNjI5NWY1ODRjZmU4YTE3MjlkZGY2YjE4ZDc3NTQ5ZmQ0NGM5YTBiZS4u
ZGI1ZTc3MzQ5MGJlZGZiZjNlMGMxMGNmMjNkMGEzNmM4YTNiZGE4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTU2LDEx
ICs1NiwxMSBAQCBFdmVudFRhcmdldCogSlNFdmVudFRhcmdldDo6dG9XcmFwcGVkKFZNJiB2bSwg
SlNWYWx1ZSB2YWx1ZSkKIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4ganNF
dmVudFRhcmdldENhc3QoVk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoYXV0
byogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0V2ZW50VGFyZ2V0Kj4odm0sIHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0
YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpT
RXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CiAgICAgaWYg
KGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5kb3codm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBw
ZWQoKSwgKndpbmRvdyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRX
cmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CiAgICAgaWYgKGF1dG8qIHNjb3Bl
ID0gdG9KU1dvcmtlckdsb2JhbFNjb3BlKHZtLCB0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBwZWQoKSwg
KnNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+
KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLmNwcAppbmRleCBkODMxNjA0Y2JhZWI4N2YwN2QxMmVhZGRhNGJmMDUzMWE3MGJiNDAyLi45
YmQ2NjQ0NjAxNzA1NDk1YTk0ZTdiM2ZhZGYwNDhmM2M3YjA0M2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBA
IC0xMzUsNyArMTM1LDcgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNr
VG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoKIAogICAgIGF1dG8gY2Fs
bGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0
YXNrKSk7CiAgICAgYXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1
dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFz
az4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29u
dGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAg
IGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDFkMDA1NGMyODkyZDUw
MTNkZjI2YWJmZmEzZTFjMmY2N2RlZTQ4MTkuLmEzNTM3ODU1ZTdhN2Q0ZmQyYmQyYzRjODhiN2Zh
N2I2Mjk1NTRiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzMwMCw3ICszMzAwLDcgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+PiB0cmFuc2Zl
ckFycmF5QnVmZmUKICAgICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGNvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXplKCkpOworICAgIGF1dG8gY29u
dGVudHMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJz
LnNpemUoKSk7CiAKICAgICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOwogICAg
IGZvciAoc2l6ZV90IGFycmF5QnVmZmVySW5kZXggPSAwOyBhcnJheUJ1ZmZlckluZGV4IDwgYXJy
YXlCdWZmZXJzLnNpemUoKTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7CkBAIC0zNDUxLDcgKzM0NTEs
NyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFy
cmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IG1ha2VVbmlxdWU8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6
c2VyaWFsaXplKCZzdGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFn
ZUJpdG1hcHMsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICB3YXNtTW9kdWxlcywg
CkBAIC0zNDY5LDcgKzM0NjksNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwg
YmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwg
Y29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZN
b3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICAgICAgICAgICwgc3RkOjptYWtlX3VuaXF1ZTxX
YXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAgICAgICAgICAgICwgbWFrZVVuaXF1
ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQogI2VuZGlmCiAgICAgICAgICAgICAgICAg
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCmluZGV4IDVjNDY2Mjk0YmVlNTZjMjFiZjBmNjNkMTViMGY4ZGYwZjI3YTNhMGUu
LjRmNGIwY2YzYjdlZWNkZGQwNzg3MDI1NTIwODg5NWU0NWZhMmEwN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNjQs
NyArMTY0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgQVNTRVJUKGFycmF5TGVuZ3RoKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7Cisg
ICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4oKTsKICAgICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkgewogICAgICAgICB1
bnNpZ25lZCBidWZmZXJTaXplOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNp
emUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnRE
YXRhLmNwcAppbmRleCAyNDZmNjRhOWY2MzIyYjU4NzBjYmI2ODJlZGIyZDRlZGI5NTNlYzdjLi4z
YjExMjUyYWU2NGNhZjJlNGZlNzM5ZTMxZWUxMDk5NTRkNTZhNTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCB2b2lkIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtKQogICAg
IEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gbmV3IEpTVk1DbGllbnREYXRhKCp2bSk7CiAg
ICAgdm0tPmNsaWVudERhdGEgPSBjbGllbnREYXRhOyAvLyB+Vk0gZGVsZXRlcyB0aGlzIHBvaW50
ZXIuCiAgICAgCi0gICAgdm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFpbnQoc3RkOjptYWtlX3Vu
aXF1ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERhdGEpKTsKKyAgICB2bS0+
aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChtYWtlVW5pcXVlPERPTUdDT3V0cHV0Q29uc3RyYWlu
dD4oKnZtLCAqY2xpZW50RGF0YSkpOwogICAgICAgICAKICAgICBjbGllbnREYXRhLT5tX25vcm1h
bFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoKnZtLCB0cnVlKTsKICAgICB2bS0+bV90
eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3JlVHlwZWRBcnJheUNvbnRy
b2xsZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDE2YTc2YzQ5NTI5YTRiYjg3MWNiNjZjYTNhZDc1YTJk
NzZhODA2NTUuLmQyMzk4NTdhYTNiZGRlOWZlYjljYjg3NDBmY2Y1ZDY0OWUzNTBkYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpp
bml0U2NyaXB0KCkKICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2Jh
bE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNP
YmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92
bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAg
ICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+
KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVl
PFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmluZGV4IDI5YzgxODY4MzZl
YTA1NDExZThmMWVkNjQxYzA1NzBjZTgxNzY4MTUuLmFhNTZlMmZkZTg1NTc3YWNmOWMwNDc0Yzg5
ODc3ZjRlMGQ1YzUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xh
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIE1ldGhvZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29uc3QgQ0luc3RhbmNlKiBp
bnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2Jq
ZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9pc2EtPmhhc01ldGhvZCAm
JiBtX2lzYS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gbWV0aG9kID0g
c3RkOjptYWtlX3VuaXF1ZTxDTWV0aG9kPihpZGVudCk7CisgICAgICAgIGF1dG8gbWV0aG9kID0g
bWFrZVVuaXF1ZTxDTWV0aG9kPihpZGVudCk7CiAgICAgICAgIENNZXRob2QqIHJldCA9IG1ldGhv
ZC5nZXQoKTsKICAgICAgICAgbV9tZXRob2RzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShtZXRo
b2QpKTsKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTEwMyw3ICsxMDMsNyBAQCBGaWVsZCogQ0Ns
YXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0
YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2FzdDxjb25z
dCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3QtPmdldE9i
amVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzUHJvcGVydHkgJiYgbV9pc2EtPmhhc1Byb3BlcnR5
KG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPENG
aWVsZD4oaWRlbnQpOworICAgICAgICBhdXRvIGZpZWxkID0gbWFrZVVuaXF1ZTxDRmllbGQ+KGlk
ZW50KTsKICAgICAgICAgQ0ZpZWxkKiByZXQgPSBmaWVsZC5nZXQoKTsKICAgICAgICAgbV9maWVs
ZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKGZpZWxkKSk7CiAgICAgICAgIHJldHVybiByZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBmMmY2MjA4MmE4MDhhMTlm
MTBhNWQ5MzVkOTIyYjc3M2MxMjIxYzI4Li4wNGNkZGNkMjRjYWE4MjljMzJlNTZlYzI3M2FmYmQz
NTFmMjU0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpT
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgY2xhc3MgUm9vdE9iamVjdDsKIGNsYXNzIFJ1bnRpbWVPYmplY3Q7CiAKIGNsYXNz
IEZpZWxkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2Uq
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3Rh
dGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IGI4NmY3NTFhMGE3MTM4YmUwMDc3NmE3OGNi
YzJhNmQ0NWRkMzc1MDIuLmEzZDhkMzJmMjhkZDgwNThhNGFiNDQyNzM5NTM0NDA3NGYyNmM3NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtMTM0LDcgKzEz
NCw3IEBAIE1ldGhvZCogT2JqY0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0
aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOm9iamNNZXRob2RTZWxlY3Rvcl07CiAK
ICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2Jy
aWRnZSBOU1N0cmluZyopbWV0aG9kTmFtZS5nZXQoKV0pIHx8ICFzdHJjbXAob2JqY01ldGhvZFNl
bGVjdG9yTmFtZSwgYnVmZmVyLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIG1ldGhv
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2Vs
ZWN0b3IpOworICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxPYmpjTWV0
aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgbWV0
aG9kUHRyID0gbWV0aG9kLmdldCgpOwogICAgICAgICAgICAgICAgIG1fbWV0aG9kQ2FjaGUuYWRk
KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTg5LDcgKzE4OSw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAg
ICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktleTpVVEY4S2V5TmFt
ZV07CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFs
OihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8IFtrZXlOYW1lIGlzRXF1
YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgewotICAgICAgICAgICAg
ICAgIGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4oKF9fYnJpZGdl
IENGU3RyaW5nUmVmKWtleU5hbWUpOworICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBt
YWtlVW5pcXVlPE9iamNGaWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleU5hbWUpOwogICAg
ICAgICAgICAgICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgbV9m
aWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVsZCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjIwLDcgKzIyMCw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxk
TmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25z
CiAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5h
bWVGb3JLZXk6b2JqY0l2YXJOYW1lXTsKIAogICAgICAgICAgICAgICAgIGlmICgobWFwcGVkTmFt
ZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5n
ZXQoKV0pIHx8ICFzdHJjbXAob2JqY0l2YXJOYW1lLCBqc05hbWUuZGF0YSgpKSkgewotICAgICAg
ICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjRmllbGQ+
KG9iamNJVmFyKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IG1ha2VVbmlx
dWU8T2JqY0ZpZWxkPihvYmpjSVZhcik7CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gbmV3
RmllbGQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5p
bXBsKCksIFdURk1vdmUobmV3RmllbGQpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggZTA4YjA0OGUz
YjU2ODQyOThjZGVmZDkzZWI5MTg4Mzg5MTU2ZjQzOC4uM2I5M2UxODc4Mzg1NGMyNDQ0NmUxY2Zh
NTc1ODQ2NmYwZjBhN2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAg
IGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5k
ZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsKICAgICAgICAgT2Jq
Y0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2Ut
PmdldENsYXNzKCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJh
Y2tNZXRob2Qoc3RkOjptYWtlX3VuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBA
c2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRz
OikpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9k
KG1ha2VVbmlxdWU8T2JqY01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9r
ZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tP
YmplY3RJbXAqPihleGVjLT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CiAgICAgICAgIGZh
bGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpj
TWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCmluZGV4IDgz
ZDQ0ZTA2N2ZiZGY1NDdmNmM4OGI2N2EzNmViNTNmNjkxNDY2ZWUuLmYxNzFhNTgyMDNmOThhZjE1
NTQ3ODBlMDUxOWUwNGExZTUzYTBiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcApAQCAtMTM1LDcgKzEzNSw3
IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjpwcmludCgpIGNvbnN0CiAjZW5kaWYKIAogQ29t
YmluZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMoKQotICAgIDogbV9wcmVmaXhUcmVl
Um9vdChzdGQ6Om1ha2VfdW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkpCisgICAgOiBtX3ByZWZp
eFRyZWVSb290KG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKIHsKIH0KIApAQCAtMjA5
LDcgKzIwOSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKHVpbnQ2NF90
IGFjdGlvbklkLCBjb25zdCBWZWN0b3I8VGVybT4mIHBhdHRlCiAgICAgICAgIGlmIChuZXh0RW50
cnlJbmRleCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBs
YXN0UHJlZml4VHJlZS0+ZWRnZXNbbmV4dEVudHJ5SW5kZXhdLmNoaWxkLmdldCgpOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4
VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIHN0ZDo6bWFrZV91bmlxdWU8UHJl
Zml4VHJlZVZlcnRleD4oKX0pKTsKKyAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5h
cHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIG1ha2VVbmlx
dWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKICAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlID0g
bGFzdFByZWZpeFRyZWUtPmVkZ2VzLmxhc3QoKS5jaGlsZC5nZXQoKTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggOGM3ZTNmN2Q3ZjFlMGQ1NWFhZDg5MzRhYmJh
NWFhNzBmYjhmODVjZi4uNzdmZWI2MGM1MGJjOGE0ZjI0YjI3Njk2YWQxMTBkMWVkYTc0MjgwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgc3RydWN0IFJlc291cmNl
TG9hZEluZm87CiAvLyAxKSBJdCBzdG9yZXMgdGhlIHJ1bGVzIGZvciBlYWNoIGNvbnRlbnQgZXh0
ZW5zaW9uLgogLy8gMikgSXQgcHJvdmlkZXMgQVBJcyBmb3IgdGhlIFdlYkNvcmUgaW50ZXJmYWNl
cyB0byB1c2UgdGhvc2UgcnVsZXMgZWZmaWNpZW50bHkuCiBjbGFzcyBDb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8v
IC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFjZS4gVGhpcyBjYW4gYmUgdXNlZCBieSB1cHBlciBs
YXllci4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAppbmRleCA5NmUyZDYz
NGI4OTNiMzk5MzA0YThiMmIyODVlNjFmNGU0NjlkYzBjLi5iMmE5YTc4MzUyMjc3MjgzZjk1ZDg0
OWQwM2IxNTZmY2RjNzIxZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3Vi
dGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cApAQCAtMTE1LDMxICsxMTUsMzEgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBjYXNl
IE9wZXJhdGlvbnM6OkRlY3J5cHQ6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81Ogot
ICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6IHsKICAgICAgICAgICAg
IGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkM6CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjogewogICAgICAgICAg
ICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNDYmND
ZmJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDYmND
ZmJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NU
UjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9B
bGdvcml0aG1BZXNDdHJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1BZXNDdHJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
QUVTX0dDTTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxD
cnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNTEsNyArMTUxLDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikg
ewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92
MV81OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQTogewogICAgICAgICAgICAgYXV0byBw
YXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4oc3Rh
dGUsIHZhbHVlLmdldCgpKTsKQEAgLTE2MCwxMyArMTYwLDEzIEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNy
eXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsK
ICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlJTQV9QU1M6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rp
b25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTgwLDcg
KzE4MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMzg0OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV81MTI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNy
eXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtD
UzFfdjFfNTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxD
cnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1
bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CkBAIC0yMDMsNyArMjAzLDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNF
eGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFz
ZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElk
ZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4ocGFyYW1z
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFz
aGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgpAQCAtMjEz
LDcgKzIxMyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9
IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4oc3RhdGUsIHZh
bHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2Vw
dGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1z
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0yMjMsMTQgKzIyMywxNCBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxl
YXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNo
SWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFt
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252
ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdl
dCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7
IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAg
ICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0y
NDksNyArMjQ5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKIAogICAgICAgICAgICAgYXV0
byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZl
UGFyYW1zPihzdGF0ZSwgbmV3VmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2
ZVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtE
RjogewpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
ICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBh
cmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1I
a2RmUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlw
dG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6IHsK
QEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAg
aWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMu
aGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGJrZGYy
UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9B
bGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6
ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpJbXBvcnRLZXk6CiAgICAgICAgIHN3aXRj
aCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FFU19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNB
U1NBX1BLQ1MxX3YxXzU6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBX1BTUzoKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAg
ICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAg
ICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yOTgsNyArMjk4LDcgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
R0NNOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgotICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihw
YXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMg
PSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwpAQCAtMzA3LDE5ICszMDcsMTkgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRv
QWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
ICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJl
dHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkVDRFNBOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVD
REg6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRv
QWxnb3JpdGhtRWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhL
REY6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Ig
fTsKQEAgLTMyOSw3ICszMjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2Ug
T3BlcmF0aW9uczo6VW53cmFwS2V5OgogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgotICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihw
YXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAg
LTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzogewogICAgICAgICAgICAgYXV0byBwYXJh
bXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHN0YXRl
LCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBF
eGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewpAQCAtMzU0LDEyICszNTQsMTIg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmll
ci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIu
cmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0g
aGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQ
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6CiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAg
ICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTUyMCwxNiArNTIwLDE2IEBA
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3Jvc3NU
aHJlYWRDb3B5SW1wb3J0UGFyYW1zKGNvCiB7CiAgICAgc3dpdGNoIChpbXBvcnRQYXJhbXMucGFy
YW1ldGVyc0NsYXNzKCkpIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNs
YXNzOjpOb25lOiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICAgICAgcmVzdWx0LT5pZGVudGlm
aWVyID0gaW1wb3J0UGFyYW1zLmlkZW50aWZpZXI7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6OkVjS2V5UGFy
YW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tl
eVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjS2V5UGFy
YW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobUVjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtRWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM6OkNsYXNzOjpIbWFjS2V5UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHko
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihj
cm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oaW1w
b3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6
OlJzYUhhc2hlZEltcG9ydFBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihpbXBvcnRQYXJhbXMp
KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZElt
cG9ydFBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhh
c2hlZEltcG9ydFBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBkYmNjYzkwMGYzMzc0OGNk
MjA2N2Y2MGNiMjkwYzBiZDYwMDY1NTMzLi5hNDJmNTY0ZjgxZmUxZjBlYTA5NDQzZDFmMTA1M2Mx
YzNjZDBjZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3Bw
CkBAIC0yMTcsMTIgKzIxNywxMiBAQCBjbGFzcyBDU1NDYWxjUHJpbWl0aXZlVmFsdWUgZmluYWwg
OiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
Y2F0ZWdvcnkoKSkgewogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcjoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTnVtYmVy
PihtX3ZhbHVlLT5mbG9hdFZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUoKSk7CiAgICAgICAgIGNh
c2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aChtX3ZhbHVlLT5jb21wdXRl
TGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNvcmU6OkZpeGVkKSk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFs
dWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQp
KTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50OgogICAgICAgICBj
YXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnRMZW5ndGg6IHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3ZhbHVlLT5jb252
ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbj4oY29u
dmVyc2lvbkRhdGEpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNz
aW9uTGVuZ3RoPihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKICAgICAgICAgfQogICAgICAg
ICAvLyBPbmx5IHR5cGVzIHRoYXQgY291bGQgYmUgcGFydCBvZiBhIExlbmd0aCBleHByZXNzaW9u
IGNhbiBiZSBjb252ZXJ0ZWQKICAgICAgICAgLy8gdG8gYSBDYWxjRXhwcmVzc2lvbk5vZGUuIENh
bGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnROdW1iZXIgbWFrZXMgbm8gc2Vuc2UgYXMgYSBMZW5n
dGguCkBAIC01MjAsNyArNTIwLDcgQEAgY2xhc3MgQ1NTQ2FsY09wZXJhdGlvbiBmaW5hbCA6IHB1
YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgbm9kZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobm9kZSkpOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9u
T3BlcmF0aW9uPihXVEZNb3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKG5vZGVzKSwgbV9vcGVy
YXRvcik7CiAgICAgfQogCiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgZmluYWwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKaW5kZXggYzQ0Y2Vi
YzUxMjBlZDgzMjZkOWExYjJhNjU2YjkzNjdiNmUxOTEyOC4uZTVhZThiNzdhNTE0ZjA5YzNiNDk0
NDFiNTYyZjVjMmExZWM3NTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Rl
ZmF1bHRTdHlsZVNoZWV0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRT
dHlsZVNoZWV0cy5jcHAKQEAgLTE2NywxMSArMTY3LDExIEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxl
U2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgICAgIHNpbXBsZURlZmF1bHRTdHls
ZVNoZWV0ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIWRlZmF1bHRT
dHlsZSk7Ci0gICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVs
ZVNldD4oKS5yZWxlYXNlKCk7CisgICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlx
dWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgZGVmYXVsdFN0eWxlID0gc3Rk
OjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKLSAgICBkZWZhdWx0UHJpbnRTdHls
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0
eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UHJpbnRT
dHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgbWVkaWFRdWVyeVN0
eWxlU2hlZXQgPSAmU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoQ1NTUGFyc2VyQ29udGV4dChV
QVNoZWV0TW9kZSkpLmxlYWtSZWYoKTsKIAogICAgIC8vIFN0cmljdC1tb2RlIHJ1bGVzLgpAQCAt
MTkwLDEwICsxOTAsMTAgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRTaW1wbGVE
ZWZhdWx0U3R5bGUoKQogICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKICAgICBBU1NFUlQoIXNp
bXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKIAotICAgIGRlZmF1bHRTdHlsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1
ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICAvLyBUaGVyZSBhcmUgbm8gbWVkaWEtc3BlY2lm
aWMgcnVsZXMgaW4gdGhlIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgogICAgIGRlZmF1bHRQcmludFN0
eWxlID0gZGVmYXVsdFN0eWxlOwotICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFr
ZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKIAogICAgIHNpbXBsZURlZmF1bHRTdHlsZVNo
ZWV0ID0gcGFyc2VVQVNoZWV0KHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQsIHN0cmxlbihzaW1w
bGVVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21T
aGVldCgqc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlLmNwcAppbmRleCA3NzA5YjVkZWFmYmZlOWY5YWIxMWFjMDc3YzYxOWQ3OTRk
MTY0MmYyLi42NDZjMTRhMTFhYzY0NWI5OTI2MTQ5ZjI5ZTk4MDBjNGM3MjY3YmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIENTU0ZvbnRG
YWNlOjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBz
cmNMaXN0LCBEbwogICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdG
b250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFi
bGVkKCkpOwogICAgICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBv
cnRlZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKENhY2hlZEZv
bnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwg
aXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAgICAgICAg
ICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRG
YWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZvbnQpOworICAgICAgICAgICAgICAgICAgICBz
b3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNv
dXJjZSgpLCBjYWNoZWRGb250KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250
RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOworICAgICAg
ICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0
ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwgZm9udEZhY2VFbGVtZW50KTsKIAogICAgICAgICBpZiAo
c291cmNlKQogICAgICAgICAgICAgZm9udEZhY2UuYWRvcHRTb3VyY2UoV1RGTW92ZShzb3VyY2Up
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCmluZGV4IDA1ZTNhM2Y2ZTIxYmM5
MjgxNzg1NTY5YTE0YWE1MGZmNTJlNGEyNzAuLjE4ZTgzNGQ2OTBhNmViNTEwMWRjOTBjOGRlNWRi
NWU3YTFiMGM1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApAQCAtMTE5
LDcgKzExOSw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxvY2FsRm9udEZhY2VzRm9y
RmFtaWx5UmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmIGZhbWlsCiAgICAgICAgIGZhbWlseUxpc3Qt
PmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShm
YW1pbHlOYW1lKSk7CiAgICAgICAgIGZhY2UtPnNldEZhbWlsaWVzKGZhbWlseUxpc3QuZ2V0KCkp
OwogICAgICAgICBmYWNlLT5zZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGl0ZW0pOwotICAg
ICAgICBmYWNlLT5hZG9wdFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNl
PihmYWNlLmdldCgpLCBmYW1pbHlOYW1lKSk7CisgICAgICAgIGZhY2UtPmFkb3B0U291cmNlKG1h
a2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCksIGZhbWlseU5hbWUpKTsKICAg
ICAgICAgQVNTRVJUKCFmYWNlLT5jb21wdXRlRmFpbHVyZVN0YXRlKCkpOwogICAgICAgICBmYWNl
cy5hcHBlbmQoV1RGTW92ZShmYWNlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBp
bmdSdWxlLmNwcAppbmRleCBkZTZmMzlkM2Y1ZDg3MzFkOTllNWViM2M5NjhlMjlhZDFlYWNiZmU2
Li5jNmM1YzM5NTQwYTVjNTA1Y2RmNGQ1OWM3NDZjMzkxODVjOWUwM2IyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIENTU1J1bGUqIENT
U0dyb3VwaW5nUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENTU1J1bGVMaXN0JiBD
U1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcnVsZUxpc3RD
U1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihjb25zdF9jYXN0PENTU0dy
b3VwaW5nUnVsZSY+KCp0aGlzKSk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBt
YWtlVW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihjb25zdF9jYXN0PENT
U0dyb3VwaW5nUnVsZSY+KCp0aGlzKSk7CiAgICAgcmV0dXJuICptX3J1bGVMaXN0Q1NTT01XcmFw
cGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5j
cHAKaW5kZXggZmZkZDNkMGFhNjU3ZjI1ZWFmMzFkNTcwYzU4NjhlZDUzMDllMmVmZC4uNTU1MWYy
YzY5MTdkMDMzMDcyNmFjZGY4MTA5MWE5MWZhYjRlMGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIEdlbmVy
YXRlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvclNpemUoRmxv
YXRTaXplIHNpemUpCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFn
ZUZvclNpemUoRmxvYXRTaXplIHNpemUsIEdlbmVyYXRlZEltYWdlJiBpbWFnZSkKIHsKICAgICBB
U1NFUlQoIW1faW1hZ2VzLmNvbnRhaW5zKHNpemUpKTsKLSAgICBtX2ltYWdlcy5hZGQoc2l6ZSwg
c3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNpemUsIGltYWdl
KSk7CisgICAgbV9pbWFnZXMuYWRkKHNpemUsIG1ha2VVbmlxdWU8Q2FjaGVkR2VuZXJhdGVkSW1h
Z2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOwogfQogCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoRmxvYXRTaXplIHNpemUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggYzkwOTgzMmRhMGU1MTkwMjUzNTEzYTM5
ODMxOTFhN2MyZjM5MzAwNS4uNmYxZWIzMzg2ZDlmYmM3MmQ0NDM3ODVkMWQxOWM0ZGQ4YzVjMzdk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMjIwLDcgKzIy
MCw3IEBAIENTU0tleWZyYW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVsZTo6aXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKIENTU1J1bGVMaXN0JiBDU1NLZXlmcmFtZXNSdWxlOjpjc3NSdWxlcygpCiB7
CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NT
T01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTS2V5ZnJhbWVz
UnVsZT4+KCp0aGlzKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlx
dWU8TGl2ZUNTU1J1bGVMaXN0PENTU0tleWZyYW1lc1J1bGU+PigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVl
dC5jcHAKaW5kZXggNDgwYTg5ODUyMzdhZGE5MGExMTc4ZTBiMjc5ZTBlNjY4MDdlMzM0MS4uYzg4
ZDFlZGM5M2I3YTZjODNmMjE3N2JhYzc2N2Y5Yjc4MmVlNzU4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4g
Q1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMoKQogICAgIGlmICghY2FuQWNjZXNzUnVsZXMoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQot
ICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVNo
ZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0g
bWFrZVVuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOwogICAgIHJldHVybiBtX3J1
bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQ
YWludFdvcmtsZXQuY3BwCmluZGV4IDY1YTJmZGY4ZGZhY2I0ZDdmNzFkNzYxY2IyMTY2YjFhOTI4
NGMwNzAuLjkxNGJkZTRhMmRlOWFhMjEwNmMwMTA2M2I4MDhkOWNhNGZmZjZkYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIERP
TUNTU1BhaW50V29ya2xldCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpmcm9tKERPTUNTU05hbWVzcGFj
ZSYgY3NzKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01DU1NQYWlu
dFdvcmtsZXQqPihTdXBwbGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZyb20oJmNzcywgc3VwcGxl
bWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUNTU1BhaW50V29ya2xldD4oY3NzKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NQYWludFdvcmtsZXQ+
KGNzcyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAg
ICBwcm92aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVy
Q3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3Vz
dG9tUHJvcGVydHkuY3BwCmluZGV4IDdlY2Q5M2Q3ZGMzZDQzMmVhZjgyYmM5NTZlNjFkNDg5YTUx
MDYyNWIuLjBkZjZhYWU5NmYwZTFjNzBiMzc1NTYxNjQ5ZWUzNWQyOGViNGMzOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAK
QEAgLTg0LDcgKzg0LDcgQEAgRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eSogRE9NQ1NTUmVn
aXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbShET01DU1NOYW1lc3BhY2UKIHsKICAgICBhdXRvKiBz
dXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eSo+KFN1
cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eT4oY3NzKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5Pihjc3MpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsK
ICAgICAgICAgcHJvdmlkZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3Vw
cGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcApp
bmRleCBkODU5NmZkMWIyNDU5ZGUwN2UxYzg5OWNjMDc5ZmMxOTg1MTE2NWU5Li44MmI3ZmNjMzBl
NTgyNzQ5OTIwMmUyOGI4MzA4NmNmMGZhNDRhYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3Vt
ZW50UnVsZVNldHMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRG9jdW1lbnRSdWxlU2V0czo6
c19pc0ludmFsaWRhdGluZ1N0eWxlV2l0aFJ1bGVTZXRzIHsgZmFsc2UgfTsKIERvY3VtZW50UnVs
ZVNldHM6OkRvY3VtZW50UnVsZVNldHMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKICAg
ICA6IG1fc3R5bGVSZXNvbHZlcihzdHlsZVJlc29sdmVyKQogewotICAgIG1fYXV0aG9yU3R5bGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRob3JTdHlsZSA9IG1ha2VV
bmlxdWU8UnVsZVNldD4oKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1Rv
Rml0KCk7CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjp1cGRh
dGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNvbnN0CiAKICAgICAvLyBNZWRp
YSBxdWVyaWVzIG9uIHVzZXIgYWdlbnQgc2hlZXQgbmVlZCB0byBldmFsdWF0ZWQgaW4gZG9jdW1l
bnQgY29udGV4dC4gVGhleSBiZWhhdmUgbGlrZSBhdXRob3Igc2hlZXRzIGluIHRoaXMgcmVzcGVj
dC4KICAgICBhdXRvJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yID0gbV9zdHlsZVJlc29sdmVyLm1lZGlh
UXVlcnlFdmFsdWF0b3IoKTsKLSAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSA9
IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZS0+
YWRkUnVsZXNGcm9tU2hlZXQoKkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bWVkaWFRdWVyeVN0eWxl
U2hlZXQsIG1lZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2ZXIpOwogCiAgICAgLy8g
Vmlld3BvcnQgZGVwZW5kZW50IHF1ZXJpZXMgYXJlIGN1cnJlbnRseSB0b28gaW5lZmZpY2llbnQg
dG8gYWxsb3cgb24gVUEgc2hlZXQuCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgRG9jdW1lbnRSdWxl
U2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSgpCiB7CiAgICAgYXV0byYgZXh0ZW5zaW9uU3R5bGVT
aGVldHMgPSBtX3N0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5leHRlbnNpb25TdHlsZVNoZWV0cygp
OwogICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFR
dWVyeUV2YWx1YXRvcigpOwotICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVsZVNldD4oKTsKKyAgICBhdXRvIHRlbXBVc2VyU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVT
ZXQ+KCk7CiAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQgPSBleHRlbnNpb25T
dHlsZVNoZWV0cy5wYWdlVXNlclNoZWV0KCkpCiAgICAgICAgIHRlbXBVc2VyU3R5bGUtPmFkZFJ1
bGVzRnJvbVNoZWV0KHBhZ2VVc2VyU2hlZXQtPmNvbnRlbnRzKCksIG1lZGlhUXVlcnlFdmFsdWF0
b3IsICZtX3N0eWxlUmVzb2x2ZXIpOwogICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVl
dHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSwgKnRlbXBV
c2VyU3R5bGUsIG1lZGlhUXVlcnlFdmFsdWF0b3IsIG1fc3R5bGVSZXNvbHZlcik7CkBAIC0xMTgs
NyArMTE4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChj
b25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxlcykKICAgICBzaXplX3Qgc2l6ZSA9IHJ1bGVz
LnNpemUoKTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1
dG8gcnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBhdXRvIHJ1bGVT
ZXQgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpCiAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZXNbaV0ucnVsZSwgcnVsZXNb
aV0uc2VsZWN0b3JJbmRleCwgcnVsZXNbaV0uc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgIHJ1bGVT
ZXQtPnNocmlua1RvRml0KCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxl
cykKIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9p
c0F1dGhvclN0eWxlRGVmaW5lZCA9IHRydWU7Ci0gICAgbV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxl
U2V0PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0K
IApAQCAtMTk1LDEyICsxOTUsMTIgQEAgc3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0
PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYKICAgICAgICAg
ICAgIGF1dG8gYXJyYXlJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigqZmVhdHVyZS5tYXRj
aEVsZW1lbnQpOwogICAgICAgICAgICAgYXV0byYgcnVsZVNldCA9IG1hdGNoRWxlbWVudEFycmF5
W2FycmF5SW5kZXhdOwogICAgICAgICAgICAgaWYgKCFydWxlU2V0KQotICAgICAgICAgICAgICAg
IHJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgICAgICAgICAgICAg
cnVsZVNldCA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICAgICAgICAgIHJ1bGVTZXQtPmFk
ZFJ1bGUoZmVhdHVyZS5ydWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZlYXR1cmUuc2VsZWN0
b3JMaXN0SW5kZXgpOwogICAgICAgICAgICAgaWYgKGZlYXR1cmUuaW52YWxpZGF0aW9uU2VsZWN0
b3IpCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uU2VsZWN0b3JBcnJheVthcnJheUluZGV4
XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7CiAgICAgICAgIH0KLSAgICAg
ICAgYXV0byBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPElu
dmFsaWRhdGlvblJ1bGVTZXQ+PigpOworICAgICAgICBhdXRvIGludmFsaWRhdGlvblJ1bGVTZXRz
ID0gbWFrZVVuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+KCk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaEVsZW1lbnRBcnJheS5zaXplKCk7ICsraSkgewog
ICAgICAgICAgICAgaWYgKG1hdGNoRWxlbWVudEFycmF5W2ldKQogICAgICAgICAgICAgICAgIGlu
dmFsaWRhdGlvblJ1bGVTZXRzLT5hcHBlbmQoeyBzdGF0aWNfY2FzdDxNYXRjaEVsZW1lbnQ+KGkp
LCBXVEZNb3ZlKG1hdGNoRWxlbWVudEFycmF5W2ldKSwgV1RGTW92ZShpbnZhbGlkYXRpb25TZWxl
Y3RvckFycmF5W2ldKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50
UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0
b3IuY3BwCmluZGV4IDA1ZDM4NWE1NThjNDhjNDhlZThkYTkwZjZhMThjYjRlNzVhNmE5NWEuLjA1
YjQ1N2ZkNjgyMGM2N2YwZTBmYmU5MzA4N2I4Y2VmMDgyOWViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1bGVDb2xsZWN0b3I6
OmNvbGxlY3RTbG90dGVkUHNlCiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gcnVsZURhdGFWZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOworICAgIGF1dG8gcnVsZURhdGFWZWN0
b3IgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOwogICAgIHJ1bGVEYXRh
VmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hlZFJ1bGVzLnNpemUoKSk7CiAg
ICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVzKQogICAgICAgICBydWxl
RGF0YVZlY3Rvci0+dW5jaGVja2VkQXBwZW5kKCptYXRjaGVkUnVsZS5ydWxlRGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlLmNwcAppbmRleCAyMTIyNDVkZWRjYWZmOTU2YWQ0NDEwN2I5ZWI0NGNiNDEz
MjhhYWRiLi5lMWIxYWYyMGZiMTFhZTNkZmVlMTkyY2FjOTJlNjJjZGVhNTU3ZGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKENTU0ZvbnRGYWNl
JiBmb250RmFjZSwgUmVmPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5QnVmZmVyVmlldykK
IHsKLSAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+
KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShhcnJheUJ1ZmZl
clZpZXcpKTsKKyAgICBhdXRvIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+
KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShhcnJheUJ1ZmZl
clZpZXcpKTsKICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggM2IyMGQ0MTMzMzc1MzNkNmNiM2M1OGNi
M2QxMDRmMGYwNGI1ZTYxOS4uZTFlMWQ3MjEyMTFlNmRlMDFhOGE4NmUwZDQwZDg1Mjg5OTdiMzU3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8RGVwcmVjYXRlZENTU09N
VmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3JhcEZvckRlcHJlY2F0ZWRD
UwogICAgIC8vIFRoZSBtYXAgaXMgaGVyZSB0byBtYWludGFpbiB0aGUgb2JqZWN0IGlkZW50aXR5
IG9mIHRoZSBDU1NWYWx1ZXMgb3ZlciBtdWx0aXBsZSBpbnZvY2F0aW9ucy4KICAgICAvLyBGSVhN
RTogSXQgaXMgbGlrZWx5IHRoYXQgdGhlIGlkZW50aXR5IGlzIG5vdCBpbXBvcnRhbnQgZm9yIHdl
YiBjb21wYXRpYmlsaXR5IGFuZCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQuCiAgICAgaWYg
KCFtX2Nzc29tVmFsdWVXcmFwcGVycykKLSAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NP
TVZhbHVlPj4+KCk7CisgICAgICAgIG1fY3Nzb21WYWx1ZVdyYXBwZXJzID0gbWFrZVVuaXF1ZTxI
YXNoTWFwPENTU1ZhbHVlKiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4+PigpOwogICAg
IAogICAgIGF1dG8mIGNsb25lZFZhbHVlID0gbV9jc3NvbVZhbHVlV3JhcHBlcnMtPmFkZChpbnRl
cm5hbFZhbHVlLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPigpKS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgaWYgKGNsb25lZFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKaW5k
ZXggZGZmZGE2ZjUxZGY5NTRkMjA2ZjAzZDBjNzM1NjBkZGEzOTJkMTQzMC4uNDRlZWIxZDcwMmQy
ZjlkY2I2YjEyYjU1Mjc4MTU2N2ZkMDBkMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUu
Y3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1
cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIAogICAgIGZvciAoYXV0byYgbmFtZUFuZE1h
dGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5z
dXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3JJ
bmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBuYW1lQW5kTWF0Y2guc2Vjb25k
KSk7CiAgICAgICAgIGlmIChuYW1lQW5kTWF0Y2guc2Vjb25kID09IE1hdGNoRWxlbWVudDo6SG9z
dCkKICAgICAgICAgICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChuYW1lQW5kTWF0Y2guZmly
c3QpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0
dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgICAgIGF1dG8qIHNlbGVjdG9yID0g
c2VsZWN0b3JBbmRNYXRjaC5maXJzdDsKICAgICAgICAgYXV0byBtYXRjaEVsZW1lbnQgPSBzZWxl
Y3RvckFuZE1hdGNoLnNlY29uZDsKICAgICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKHNlbGVj
dG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBb
XSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1
cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJl
Pj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVs
ZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9y
TGlzdEluZGV4KCksIG1hdGNoRWxlbWVudCwgc2VsZWN0b3IpKTsKICAgICAgICAgaWYgKG1hdGNo
RWxlbWVudCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBhdHRyaWJ1dGVzQWZm
ZWN0aW5nSG9zdC5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCkpOwpAQCAtMjAxLDE0ICsyMDEsMTQgQEAgdm9pZCBSdWxlRmVhdHVy
ZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAgICB1bmNvbW1vbkF0dHJp
YnV0ZVJ1bGVzLmFwcGVuZFZlY3RvcihvdGhlci51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzKTsKICAg
ICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLmNsYXNzUnVsZXMpIHsKICAgICAgICAg
Y2xhc3NSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0
ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0K
ICAgICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3Qu
YmVnaW4oKSwgb3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwogCiAgICAgZm9yIChh
dXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5hdHRyaWJ1dGVSdWxlcykgewogICAgICAgICBhdHRy
aWJ1dGVSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0
ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0K
ICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuYXR0cmlidXRlc0FmZmVjdGlu
Z0hvc3QuYmVnaW4oKSwgb3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1J1bGVTZXQuY3BwCmluZGV4IGZhNmI5MTIwMjEzZWM1NGJiNjU5MDNjZmFlNjY5YmQ0NjZm
YmIwMjcuLjNiYmJiZmViY2EwMDk5NzgyYWYzOTgxZWI4NjczNmNlNjgwMzZlZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFRvUnVs
ZVNldChjb25zdCBBdG9tU3RyaW5nJiBrZXksIEF0b21SdWxlTWFwJiBtYXAsIGNvbnN0IFJ1bGVE
YQogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgcnVsZXMgPSBtYXAuYWRkKGtleSwgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghcnVsZXMpCi0gICAgICAgIHJ1bGVzID0gc3Rk
OjptYWtlX3VuaXF1ZTxSdWxlRGF0YVZlY3Rvcj4oKTsKKyAgICAgICAgcnVsZXMgPSBtYWtlVW5p
cXVlPFJ1bGVEYXRhVmVjdG9yPigpOwogICAgIHJ1bGVzLT5hcHBlbmQocnVsZURhdGEpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNjlhZjU1
ODE1NjU0YmUzMjBmMWE5ZmQ3MWE3NzY2N2Q5MjkzZmE5Ny4uODg3NzVhZDdiYThhYTU5MGFkN2Jm
NzJhMzdkM2I1ZjY1YjVkMmQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaApAQCAtMzQ4LDkgKzM0OCw5IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoCiAg
ICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0
aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0
aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgIGxlbmd0aHMu
dW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExl
bmd0aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0byBvcCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3Ro
cyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5k
KG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7
CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxl
bmd0aD4obGVuZ3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25P
cGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAg
IHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1
ZVJhbmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApp
bmRleCA5YTE5MWQxN2RkOGUzZWRjYzFjMTMwYzI2NTkwZTBjYTZmNGUzNmEzLi5jNWMyYmY1ZDBm
NWZjNzkxMGFmZjE2MjU5OTkwYzQzODY2MGMxNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
QnVpbGRlckN1c3RvbS5oCkBAIC04MTMsNyArODEzLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmUKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5jb2xvckZyb21QcmltaXRpdmVW
YWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xv
ciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y29sb3IoKTsKLSAgICAgICAgYXV0byBzaGFkb3dE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwg
c3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFk
b3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAg
ICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4LCB5
KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJr
aXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50
KTsKICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAg
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhXVEZNb3ZlKHNoYWRv
d0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlmIHRoaXMgaXMgbm90
IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCkBAIC04MjksNyArODI5LDcgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0U2hhZG93KFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2wKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAg
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50
U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqc3R5
bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDogbnVsbHB0cik7CisgICAg
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50
U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNv
bHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDogbnVsbHB0cik7CiB9CiAKIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRTaGFkb3coU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtODQ0LDcgKzg0NCw3IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQm94U2hhZG93KFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7
Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5bGVSZXNvbHZlci5w
YXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4o
KnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpIDogbnVsbHB0cik7Cisg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVz
b2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpIDogbnVsbHB0cik7CiB9CiAKIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJveFNoYWRvdyhTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0xMzU5LDcgKzEzNTksNyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAgICAgICBDU1NWYWx1ZUlEIGxpc3RTdHls
ZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwogICAgICAgICAgICAgaWYg
KGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBsaXN0U3R5
bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NW
YWx1ZURpc2MpOwotICAgICAgICAgICAgYXV0byBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
b3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUs
IGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOworICAgICAgICAgICAgYXV0byBjb3VudGVyID0g
bWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxp
c3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOwogICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50KFdURk1vdmUoY291bnRlciksIGRpZFNldCk7
CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA0Y2Y2YzZmN2FiN2RmOWZjMDQzMzRiYmU4
ZGQwNWEzYjU1OWU5MzVjLi4xOWNiMDMzZDcwYmI1YTg5Njg2NTU3Mjc1NWI5NmI5NzcwNTFjYjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTUzMCw3ICsxNTMw
LDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbigpCiAgICAgICAgIEFTU0VSVCghbV9jc3NvbVdyYXBwZXItPnBh
cmVudEVsZW1lbnQoKSk7CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQot
ICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24+KCp0aGlzKTsKKyAgICBtX2Nzc29tV3JhcHBlciA9IG1ha2VVbmlxdWU8UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nzc29t
V3JhcHBlcjsKIH0KIApAQCAtMTU0MCw3ICsxNTQwLDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihT
dHkKICAgICAgICAgQVNTRVJUKG1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVtZW50KCkgPT0gJnBh
cmVudEVsZW1lbnQpOwogICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogICAgIH0KLSAg
ICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lQ1NTU3R5bGVEZWNsYXJh
dGlvbj4oKnRoaXMsIHBhcmVudEVsZW1lbnQpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVu
aXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywgcGFyZW50RWxlbWVudCk7CiAg
ICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCmluZGV4IDNhNTJjMzYxOTlhNzlhMjVlMDljMDFkOGZhMGM1MGFlZmY2ODJiYjUuLmRl
NGRhNWY1NTEyOTkwOTMxZGE4NmM1YzdlODNiY2IxMDE4MDhiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKQEAgLTE3MTUsNyArMTcxNSw3IEBAIFN0eWxlUmVzb2x2ZXI6OkNh
c2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9s
bGJhY2soCiAgICAgICAgIGlmIChhdXRob3JSb2xsYmFjaykKICAgICAgICAgICAgIHJldHVybiBh
dXRob3JSb2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld0F1dGhvclJvbGxiYWNrKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7Cisg
ICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2sobWFrZVVuaXF1ZTxDYXNjYWRlZFByb3BlcnRp
ZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAgICAgICAvLyBUaGlzIHNwZWNpYWwg
cm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBVQSBydWxlcyBhbmQgdXNlciBydWxlcyBidXQgbm8g
YXV0aG9yIHJ1bGVzLgogICAgICAgICBuZXdBdXRob3JSb2xsYmFjay0+YWRkTm9ybWFsTWF0Y2hl
cyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3Vs
dC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgU3R5bGVS
ZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3Bl
cnRpZXNGb3JSb2xsYmFjaygKICAgICAgICAgaWYgKHVzZXJSb2xsYmFjaykKICAgICAgICAgICAg
IHJldHVybiB1c2VyUm9sbGJhY2s7CiAKLSAgICAgICAgYXV0byBuZXdVc2VyUm9sbGJhY2soc3Rk
OjptYWtlX3VuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUp
KTsKKyAgICAgICAgYXV0byBuZXdVc2VyUm9sbGJhY2sobWFrZVVuaXF1ZTxDYXNjYWRlZFByb3Bl
cnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAgICAgICAvLyBUaGlzIHNwZWNp
YWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBvbmx5IFVBIHJ1bGVzLgogICAgICAgICBuZXdV
c2VyUm9sbGJhY2stPmFkZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJh
bmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCA5OTdjNGMwMzY3ZGQ1ZDBkNjQ1ZDVlZGY1MWVlYzRi
ZmIwYzMyMTA1Li4wMmEzNmVmZTA1ZDNjYzlmZTk3ZGQ1YzBlMjU5M2FlNzlmZDZjMmM2IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL21ha2Vwcm9wLnBsCkBAIC04MTEsNyArODExLDcgQEAgc3ViIGdlbmVyYXRlRmlsbExh
eWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIkZpbGxMYXllciogcHJldmlvdXNDaGlsZCA9IG51bGxwdHI7XG4iOwogICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gImZvciAoYXV0byogcGFyZW50ID0gJnN0eWxlUmVzb2x2ZXIu
cGFyZW50U3R5bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTsgcGFyZW50
ICYmIHBhcmVudC0+IiAuICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBhcmVudCA9IHBhcmVudC0+bmV4
dCgpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBpZiAoIWNoaWxk
KSB7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlvdXND
aGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXll
clR5cGUoJG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQobWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBn
ZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTtcbiI7CiAgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIH1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49
ICRpbmRlbnQgLiAiICAgIGNoaWxkLT4iIC4gJHNldHRlciAuICIocGFyZW50LT4iIC4gJGdldHRl
ciAuICIoKSk7XG4iOwpAQCAtODM3LDcgKzgzNyw3IEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclBy
b3BlcnR5VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAv
LyBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBs
YXllcnMgYXMgbmVlZGVkLlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
Zm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHtcbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBpZiAoIWNoaWxkKSB7XG4iOwot
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQt
PnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBl
KCRuYW1lKSAuICIpKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAg
ICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4oIiAuIGdl
dEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTtcbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICB9XG4iOwogICAkc2V0dGVyQ29u
dGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZU1hcCgpLT4iIC4g
Z2V0RmlsbExheWVyTWFwZnVuY3Rpb24oJG5hbWUpIC4gIigiIC4gJENTU1Byb3BlcnR5SWQgLiAi
LCAqY2hpbGQsIGl0ZW0pO1xuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ckltcGwuY3BwCmluZGV4IDY3Y2ZkZjU2ZDYyNTA1M2EwMTExOTkyZDcxMWY4YzhmZmRiOTVkYzIu
LmQ3NWU0ZmM5MmM3N2IwN2IxZTUzZGFkMzM4N2U1NTFhMzkwYzI1YjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNzcsNyArNzcsNyBAQCBDU1NQ
YXJzZXJJbXBsOjpDU1NQYXJzZXJJbXBsKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgc3RyaQogICAgICwgbV9zdHlsZVNoZWV0KHN0eWxlU2hlZXQpCiAgICAg
LCBtX29ic2VydmVyV3JhcHBlcih3cmFwcGVyKQogewotICAgIG1fdG9rZW5pemVyID0gd3JhcHBl
ciA/IHN0ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcsICp3cmFwcGVyKSA6IHN0
ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOworICAgIG1fdG9rZW5pemVyID0g
d3JhcHBlciA/IG1ha2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcsICp3cmFwcGVyKSA6IG1h
a2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOwogICAgIGlmIChjb250ZXh0LmRlZmVycmVk
Q1NTUGFyc2VyRW5hYmxlZCAmJiAhd3JhcHBlciAmJiBzdHlsZVNoZWV0ICYmIHJ1bGVQYXJzaW5n
ID09IENTU1BhcnNlcjo6UnVsZVBhcnNpbmc6OkRlZmVycmVkKQogICAgICAgICBtX2RlZmVycmVk
UGFyc2VyID0gQ1NTRGVmZXJyZWRQYXJzZXI6OmNyZWF0ZShjb250ZXh0LCBzdHJpbmcsICpzdHls
ZVNoZWV0KTsKIH0KQEAgLTI4Miw5ICsyODIsOSBAQCBDU1NTZWxlY3Rvckxpc3QgQ1NTUGFyc2Vy
SW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgU3R5bAog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvcjsKICAgICBp
ZiAoIXR5cGVTZWxlY3Rvci5pc051bGwoKSAmJiBwc2V1ZG8uaXNOdWxsKCkpCi0gICAgICAgIHNl
bGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFt
ZShudWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2Uo
KSkpOworICAgICAgICBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KFF1
YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHlsZVNoZWV0LT5kZWZhdWx0
TmFtZXNwYWNlKCkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBzZWxlY3RvciA9IG1ha2VVbmlx
dWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIGlmICghcHNldWRvLmlzTnVsbCgpKSB7
CiAgICAgICAgICAgICBzZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4oQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKHBzZXVkbykpOwog
ICAgICAgICAgICAgaWYgKCFzZWxlY3RvciB8fCBzZWxlY3Rvci0+bWF0Y2goKSAhPSBDU1NTZWxl
Y3Rvcjo6UGFnZVBzZXVkb0NsYXNzKQpAQCAtNTM1LDcgKzUzNSw3IEBAIFJlZlB0cjxTdHlsZVJ1
bGVOYW1lc3BhY2U+IENTU1BhcnNlckltcGw6OmNvbnN1bWVOYW1lc3BhY2VSdWxlKENTU1BhcnNl
clRva2VuUmFuCiBSZWZQdHI8U3R5bGVSdWxlTWVkaWE+IENTU1BhcnNlckltcGw6OmNvbnN1bWVN
ZWRpYVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdl
IGJsb2NrKQogewogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1cm4gU3R5
bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQo
cHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0KSkucmVsZWFzZU5vbk51
bGwoKSwgIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2Nr
LCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlTWVkaWE6OmNy
ZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQocHJlbHVkZSwgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0KSkucmVsZWFzZU5vbk51bGwoKSwgIG1ha2VVbmlx
dWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gcnVsZXM7CiAKQEAgLTU2Myw3
ICs1NjMsNyBAQCBSZWZQdHI8U3R5bGVSdWxlU3VwcG9ydHM+IENTU1BhcnNlckltcGw6OmNvbnN1
bWVTdXBwb3J0c1J1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsgLy8gUGFyc2UgZXJyb3IsIGludmFsaWQgQHN1cHBvcnRzIGNvbmRpdGlvbgogCiAgICAgaWYg
KG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3Jl
YXRlKHByZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1cHBvcnRlZCwgc3Rk
OjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVy
cmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKHBy
ZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1cHBvcnRlZCwgbWFrZVVuaXF1
ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7
CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAgICAgbV9vYnNlcnZlcldyYXBw
ZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6U3VwcG9ydHMsIG1fb2Jz
ZXJ2ZXJXcmFwcGVyLT5zdGFydE9mZnNldChwcmVsdWRlKSk7CkBAIC02MzUsNyArNjM1LDcgQEAg
UmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUtleWZyYW1l
c1J1bGUoYm9vbCB3ZWJraXRQcmVmaXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vIFBhcnNl
IGVycm9yOyBleHBlY3RlZCBpZGVudCB0b2tlbiBpbiBAa2V5ZnJhbWVzIGhlYWRlcgogCiAgICAg
aWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVLZXlmcmFtZXM6
OmNyZWF0ZShuYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0
PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtl
eWZyYW1lczo6Y3JlYXRlKG5hbWUsIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxp
c3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgaWYgKG1fb2JzZXJ2ZXJXcmFw
cGVyKSB7CiAgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhl
YWRlcihTdHlsZVJ1bGU6OktleWZyYW1lcywgbV9vYnNlcnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0
KHJhbmdlQ29weSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNl
bGVjdG9yLmNwcAppbmRleCA0ZGJlZjQwNThjNzE2MmNkOTY0NmVhNzY0ZGNiYjliYmNmMzFlNDU5
Li5hMDg3MGQzNzYyY2VhNDJmNWI1ZWFiZDA1ZWE3NDRmMmQ5ZDZiMzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcApAQCAtNDQsNyArNDQs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3RvcihTdAogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxl
Y3Rvcj4oKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6
OlBhZ2VQc2V1ZG9DbGFzcyk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBhZ2VQc2V1
ZG9UeXBlKHBzZXVkb1R5cGUpOwogICAgIHJldHVybiBzZWxlY3RvcjsKQEAgLTYzLDcgKzYzLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6
cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOworICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVj
dG9yPigpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6
UHNldWRvRWxlbWVudCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1l
bnRUeXBlKHBzZXVkb1R5cGUpOwogICAgIEF0b21TdHJpbmcgbmFtZTsKQEAgLTg0LDEzICs4NCwx
MyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IoUwogewogICAgIGF1dG8gcHNldWRvVHlwZSA9IHBh
cnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFN0cmluZyhwc2V1ZG9UeXBlU3Ry
aW5nKTsKICAgICBpZiAocHNldWRvVHlwZS5wc2V1ZG9DbGFzcyAhPSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3NVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVu
aXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CiAgICAgICAgIHNlbGVjdG9yLT5t
X3NlbGVjdG9yLT5zZXRQc2V1ZG9DbGFzc1R5cGUocHNldWRvVHlwZS5wc2V1ZG9DbGFzcyk7CiAg
ICAgICAgIHJldHVybiBzZWxlY3RvcjsKICAgICB9CiAgICAgaWYgKHBzZXVkb1R5cGUuY29tcGF0
aWJpbGl0eVBzZXVkb0VsZW1lbnQgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRVbmtub3du
KSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOworICAgICAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1Nl
bGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBzZXVkb0VsZW1lbnQp
OwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0VmFsdWUocHNldWRvVHlwZVN0cmlu
Zy5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKQEAgLTEwMCwxMiArMTAwLDEyIEBAIHN0ZDo6
dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvQ2xhc3NTZWxlY3RvcihTCiB9CiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxl
Y3RvcigpCi0gICAgOiBtX3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KCkp
CisgICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KCkpCiB7CiB9CiAKIENT
U1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdRTmFtZSkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4o
dGFnUU5hbWUpKQorICAgIDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENTU1NlbGVjdG9yPih0YWdR
TmFtZSkpCiB7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBDU1NQYXJzZXJTZWxlY3Rvcjo6fkNT
U1BhcnNlclNlbGVjdG9yKCkKIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3Rv
clZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4mJiBzZWxl
Y3RvclZlY3RvcikKIHsKLSAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxpc3Qoc3RkOjptYWtl
X3VuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0b3JWZWN0b3IpKSk7CisgICAg
bV9zZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0KG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3JMaXN0PihX
VEZNb3ZlKHNlbGVjdG9yVmVjdG9yKSkpOwogfQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjpz
ZXRMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbVN0cmluZz4+IGFy
Z3VtZW50TGlzdCkKQEAgLTIwOSwxMiArMjA5LDEyIEBAIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6
OmFwcGVuZFRhZ0hpc3RvcnkoQ1NTUGFyc2VyU2VsZWN0b3JDb21iaW5hdG9yIHJlbGF0aW9uLCBz
CiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rvcihjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdRTmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpCiB7Ci0gICAg
YXV0byBzZWNvbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAg
IGF1dG8gc2Vjb25kID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWNv
bmQtPm1fc2VsZWN0b3IgPSBXVEZNb3ZlKG1fc2VsZWN0b3IpOwogICAgIHNlY29uZC0+bV90YWdI
aXN0b3J5ID0gV1RGTW92ZShtX3RhZ0hpc3RvcnkpOwogICAgIG1fdGFnSGlzdG9yeSA9IFdURk1v
dmUoc2Vjb25kKTsKIAotICAgIG1fc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVj
dG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKKyAgICBtX3NlbGVjdG9yID0g
bWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSk7
CiAgICAgbV9zZWxlY3Rvci0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1YnNlbGVjdG9yKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cAppbmRleCA0ODhlNjAyM2YyMDAyNGFmZmVmODYxN2E1MTRjNDA5YmY0OWQxZWYzLi43MDhlYzc3
NzNjMThkNmUwOGUwMDFjYWZhM2QyOGM4MGQ5Zjg3MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMjQzNSw3ICsyNDM1LDcgQEAg
c3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlUGF0aD4gY29uc3VtZUJhc2ljU2hhcGVQYXRoKENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MKICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpICE9IFN0
cmluZ1Rva2VuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvIGJ5dGVT
dHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOworICAgIGF1dG8g
Ynl0ZVN0cmVhbSA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgaWYgKCFi
dWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCAqYnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2lu
ZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAppbmRleCA2YjNhY2M4NWU2ZmM1ZTVjYmI5
NWFiOWZlMWE2YzdjYTllZjgxMDQ3Li5mMzMyM2IyMjZiNGIwMTAwYzk4M2M0ODY2Mzc1ZjFlNjU3
YjE3Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9y
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFy
c2VyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVQc2V1ZG8oQ1NTUGFyc2VyVG9rCiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYW5nOiB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogQ1NTIFNlbGVjdG9ycyBMZXZlbCA0IGFsbG93cyA6bGFuZygqLWZv
bykKLSAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8QXRvbVN0cmluZz4+KCk7CisgICAgICAgICAgICBhdXRvIGFyZ3VtZW50TGlzdCA9IG1ha2VV
bmlxdWU8VmVjdG9yPEF0b21TdHJpbmc+PigpOwogICAgICAgICAgICAgaWYgKCFjb25zdW1lTGFu
Z0FyZ3VtZW50TGlzdChhcmd1bWVudExpc3QsIGJsb2NrKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRMYW5nQXJndW1lbnRMaXN0KFdU
Rk1vdmUoYXJndW1lbnRMaXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCA5ZWI1ZDdlNDlmNTZhMWU5OGQxZmJiOWIyM2U2
ZWE3MmUyMjYxNThmLi44ODExN2YxOWU0YjI2YmEyNWJmZjI1YTg1NTkxNzMyYmI3YTNlN2ZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5j
cHAKQEAgLTMzNCw3ICszMzQsNyBAQCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6RWxlbWVu
dFF1ZXVlJiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5zdXJlQmFjawogewogICAgIGlm
ICghc19wcm9jZXNzaW5nQmFja3VwRWxlbWVudFF1ZXVlKSB7CiAgICAgICAgIHNfcHJvY2Vzc2lu
Z0JhY2t1cEVsZW1lbnRRdWV1ZSA9IHRydWU7Ci0gICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYWNrdXBFbGVtZW50UXVldWVN
aWNyb3Rhc2s+KCkpOworICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCku
YXBwZW5kKG1ha2VVbmlxdWU8QmFja3VwRWxlbWVudFF1ZXVlTWljcm90YXNrPigpKTsKICAgICB9
CiAgICAgcmV0dXJuIGJhY2t1cEVsZW1lbnRRdWV1ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcAppbmRleCBjYjc1MjMyODBjN2IzMjVjNjZjZGU2NDZjMTViZjVhOTEzMTc0NWJj
Li5jMDliODQzNjM1NTM0MWE4ZWQ0MGE1YThiODUxNmI2ZDk3YmE2ZGQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVy
OjpkaWRBZGRGaWxlVG9JdGVtTGlzdCgpCiBEYXRhVHJhbnNmZXJJdGVtTGlzdCYgRGF0YVRyYW5z
ZmVyOjppdGVtcygpCiB7CiAgICAgaWYgKCFtX2l0ZW1MaXN0KQotICAgICAgICBtX2l0ZW1MaXN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlzdD4oKnRoaXMpOworICAgICAg
ICBtX2l0ZW1MaXN0ID0gbWFrZVVuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlzdD4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtNDE2LDcgKzQxNiw3IEBAIGJvb2wgRGF0
YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBSZWY8RGF0
YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1s
VGV4dCkKIHsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxTdGF0aWNQYXN0
ZWJvYXJkPigpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9zLCBw
bGFpblRleHQpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L2h0bWwiX3MsIGh0
bWxUZXh0KTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQs
IFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5cGU6OklucHV0RXZl
bnQpKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogCiBSZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0
YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtlX3VuaXF1
ZTxTdGF0aWNQYXN0ZWJvYXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICBhdXRv
IGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9y
ZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpLCBUeXBlOjpE
cmFnQW5kRHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9
IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRh
dGFUcmFuc2ZlcjsKIH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0
RHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkKICAgICBtX2RyYWdJbWFn
ZSA9IGltYWdlOwogICAgIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICBpZiAoIW1fZHJhZ0lt
YWdlTG9hZGVyKQotICAgICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERyYWdJbWFnZUxvYWRlcj4odGhpcyk7CisgICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRl
ciA9IG1ha2VVbmlxdWU8RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKICAgICAgICAgbV9kcmFnSW1h
Z2VMb2FkZXItPnN0YXJ0TG9hZGluZyhtX2RyYWdJbWFnZSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDMz
NjIyMzEwODFiMTNmNzJkYzE4ZGFjNWYzOTA3YTVlN2MxN2IwYmYuLmYyMTEzMWZmODI3ODIxZGM3
NGU4NTBhOThmMWJiMjMwOTllMDI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQoUGFnZSogcGFnZSkKIAogdm9p
ZCBwcm92aWRlRGV2aWNlT3JpZW50YXRpb25UbyhQYWdlJiBwYWdlLCBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudCYgY2xpZW50KQogewotICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJv
dmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1l
KCksIHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPihjbGllbnQp
KTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbygmcGFnZSwgRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPERl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQxN2ZmMmNmZWMxODc4ZTY3YzU4
MTA3OTI4MGI0OTFiODg1OTNlNTkuLmVkNDg0ODk3ZmFkMTk5Nzc4ZTg4MzkzOWRkMTIzYWUyZDZj
NmMyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTIxLDE5ICs1MjEsMTkgQEAgRG9j
dW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRv
Y3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fcXVpcmtzKG1ha2VVbmlxdWVSZWY8UXVpcmtz
PigqdGhpcykpCiAgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKG1fZnJhbWUgPyBSZWY8Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI+KG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpIDogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShudWxscHRyKSkKICAgICAsIG1fZG9tVHJlZVZlcnNpb24oKytzX2dsb2JhbFRyZWVWZXJzaW9u
KQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhp
cykpCi0gICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRzKHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5z
aW9uU3R5bGVTaGVldHM+KCp0aGlzKSkKLSAgICAsIG1fdmlzaXRlZExpbmtTdGF0ZShzdGQ6Om1h
a2VfdW5pcXVlPFZpc2l0ZWRMaW5rU3RhdGU+KCp0aGlzKSkKLSAgICAsIG1fbWFya2VycyhzdGQ6
Om1ha2VfdW5pcXVlPERvY3VtZW50TWFya2VyQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9z
dHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX2V4dGVu
c2lvblN0eWxlU2hlZXRzKG1ha2VVbmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVldHM+KCp0aGlzKSkK
KyAgICAsIG1fdmlzaXRlZExpbmtTdGF0ZShtYWtlVW5pcXVlPFZpc2l0ZWRMaW5rU3RhdGU+KCp0
aGlzKSkKKyAgICAsIG1fbWFya2VycyhtYWtlVW5pcXVlPERvY3VtZW50TWFya2VyQ29udHJvbGxl
cj4oKnRoaXMpKQogICAgICwgbV9zdHlsZVJlY2FsY1RpbWVyKFt0aGlzXSB7IHVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsgfSkKICAgICAsIG1fZG9jdW1lbnRDcmVhdGlvblRpbWUoTW9ub3RvbmljVGlt
ZTo6bm93KCkpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdFJ1
bm5lcj4oKnRoaXMpKQotICAgICwgbV9tb2R1bGVMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3Jp
cHRNb2R1bGVMb2FkZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVyKG1ha2VVbmlxdWU8
U2NyaXB0UnVubmVyPigqdGhpcykpCisgICAgLCBtX21vZHVsZUxvYWRlcihtYWtlVW5pcXVlPFNj
cmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShYU0xUKQogICAgICwgbV9hcHBs
eVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXIoKnRoaXMsICZEb2N1bWVudDo6YXBwbHlQZW5kaW5n
WFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1feG1sVmVyc2lvbigiMS4w
Il9zKQotICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKHN0ZDo6bWFrZV91bmlxdWU8Q29uc3Rh
bnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQorICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKG1ha2VV
bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwgbV9kb2N1bWVudENsYXNz
ZXMoZG9jdW1lbnRDbGFzc2VzKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKQEAgLTU0NSwxMCArNTQ1LDEwIEBAIERvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMs
IHVuc2lnCiAjZW5kaWYKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcigqdGhpcywgJkRvY3Vt
ZW50Ojpsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAsIG1fZGV2aWNlTW90aW9uQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQotICAgICwgbV9kZXZp
Y2VNb3Rpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlTW90aW9uQ29udHJvbGxl
cj4oKm1fZGV2aWNlTW90aW9uQ2xpZW50KSkKLSAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkKLSAgICAs
IG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCisgICAgLCBt
X2RldmljZU1vdGlvbkNsaWVudChtYWtlVW5pcXVlPERldmljZU1vdGlvbkNsaWVudElPUz4oKSkK
KyAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihtYWtlVW5pcXVlPERldmljZU1vdGlvbkNv
bnRyb2xsZXI+KCptX2RldmljZU1vdGlvbkNsaWVudCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0
aW9uQ2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1M+KCkpCisgICAg
LCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihtYWtlVW5pcXVlPERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQpKQogI2VuZGlmCiAgICAg
LCBtX3BlbmRpbmdUYXNrc1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVy
RmlyZWQpCiAgICAgLCBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyKCp0aGlzLCAmRG9j
dW1lbnQ6OnZpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQpCkBAIC03NTcsNyArNzU3
LDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRGb3JBY2Nlc3NLZXkoY29uc3QgU3RyaW5n
JiBrZXkpCiAKIHZvaWQgRG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUoKQogewotICAgIG1f
YWNjZXNzS2V5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50
KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsKKyAgICBtX2FjY2Vzc0tleUNh
Y2hlID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4+KFt0aGlzXSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50Kiwg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7CiAgICAgICAgIGZvciAoYXV0byYgbm9kZSA6
IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCp0aGlzKSkgewogICAgICAgICAgICAgaWYgKCFpczxF
bGVtZW50Pihub2RlKSkKQEAgLTc4Miw3ICs3ODIsNyBAQCBFeGNlcHRpb25PcjxTZWxlY3RvclF1
ZXJ5Jj4gRG9jdW1lbnQ6OnNlbGVjdG9yUXVlcnlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxl
YwogICAgIGlmIChzZWxlY3RvclN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTeW50YXhFcnJvciB9OwogICAgIGlmICghbV9zZWxlY3RvclF1ZXJ5Q2FjaGUpCi0g
ICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3RvclF1
ZXJ5Q2FjaGU+KCk7CisgICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gbWFrZVVuaXF1ZTxT
ZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7CiAgICAgcmV0dXJuIG1fc2VsZWN0b3JRdWVyeUNhY2hlLT5h
ZGQoc2VsZWN0b3JTdHJpbmcsICp0aGlzKTsKIH0KIApAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKCkKIERPTUltcGxlbWVudGF0aW9uJiBEb2N1
bWVudDo6aW1wbGVtZW50YXRpb24oKQogewogICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbikKLSAg
ICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NSW1wbGVtZW50YXRp
b24+KCp0aGlzKTsKKyAgICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IG1ha2VVbmlxdWU8RE9NSW1w
bGVtZW50YXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1wbGVtZW50YXRpb247CiB9CiAK
QEAgLTE3NjIsNyArMTc2Miw3IEBAIE5vZGU6Ok5vZGVUeXBlIERvY3VtZW50Ojpub2RlVHlwZSgp
IGNvbnN0CiBGb3JtQ29udHJvbGxlciYgRG9jdW1lbnQ6OmZvcm1Db250cm9sbGVyKCkKIHsKICAg
ICBpZiAoIW1fZm9ybUNvbnRyb2xsZXIpCi0gICAgICAgIG1fZm9ybUNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZvcm1Db250cm9sbGVyPigpOworICAgICAgICBtX2Zvcm1Db250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxGb3JtQ29udHJvbGxlcj4oKTsKICAgICByZXR1cm4gKm1fZm9ybUNvbnRy
b2xsZXI7CiB9CiAKQEAgLTE5ODcsNyArMTk4Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRl
eHRSZW5kZXJlcihUZXh0JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgdW5z
CiAgICAgQVNTRVJUKCFtX2luUmVuZGVyVHJlZVVwZGF0ZSk7CiAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gaW5SZW5kZXJUcmVlVXBkYXRlKG1faW5SZW5kZXJUcmVlVXBkYXRlLCB0cnVlKTsKIAotICAg
IGF1dG8gdGV4dFVwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlVwZGF0ZT4oKnRoaXMp
OworICAgIGF1dG8gdGV4dFVwZGF0ZSA9IG1ha2VVbmlxdWU8U3R5bGU6OlVwZGF0ZT4oKnRoaXMp
OwogICAgIHRleHRVcGRhdGUtPmFkZFRleHQodGV4dCwgeyBvZmZzZXRPZlJlcGxhY2VkVGV4dCwg
bGVuZ3RoT2ZSZXBsYWNlZFRleHQsIFdURjo6bnVsbG9wdCB9KTsKIAogICAgIFJlbmRlclRyZWVV
cGRhdGVyIHJlbmRlclRyZWVVcGRhdGVyKCp0aGlzKTsKQEAgLTIyNjksNyArMjI2OSw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIElu
dFNpemUmIHBhZ2VTaXplLCBpbnQmCiBTdHlsZVJlc29sdmVyJiBEb2N1bWVudDo6dXNlckFnZW50
U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKQogewogICAgIGlmICghbV91c2VyQWdlbnRTaGFkb3dU
cmVlU3R5bGVSZXNvbHZlcikKLSAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNv
bHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRoaXMpOworICAgICAgICBt
X3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gbWFrZVVuaXF1ZTxTdHlsZVJlc29s
dmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyOwogfQogCkBAIC0yNjcyLDcgKzI2NzIsNyBAQCBBWE9iamVjdENhY2hlKiBEb2N1bWVudDo6
YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAKICAgICBBU1NFUlQoJnRvcERvY3VtZW50ID09IHRoaXMg
fHwgIW1fYXhPYmplY3RDYWNoZSk7CiAgICAgaWYgKCF0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2Fj
aGUpIHsKLSAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlID0gc3RkOjptYWtlX3Vu
aXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CisgICAgICAgIHRvcERvY3VtZW50Lm1f
YXhPYmplY3RDYWNoZSA9IG1ha2VVbmlxdWU8QVhPYmplY3RDYWNoZT4odG9wRG9jdW1lbnQpOwog
ICAgICAgICBoYXNFdmVyQ3JlYXRlZEFuQVhPYmplY3RDYWNoZSA9IHRydWU7CiAgICAgfQogICAg
IHJldHVybiB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUuZ2V0KCk7CkBAIC0zMDM2LDcgKzMw
MzYsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRQYXJzaW5nKGJvb2wgYikKICAgICBtX2JQYXJzaW5n
ID0gYjsKIAogICAgIGlmIChtX2JQYXJzaW5nICYmICFtX3NoYXJlZE9iamVjdFBvb2wpCi0gICAg
ICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRTaGFyZWRP
YmplY3RQb29sPigpOworICAgICAgICBtX3NoYXJlZE9iamVjdFBvb2wgPSBtYWtlVW5pcXVlPERv
Y3VtZW50U2hhcmVkT2JqZWN0UG9vbD4oKTsKIAogICAgIGlmICghbV9iUGFyc2luZyAmJiB2aWV3
KCkgJiYgIXZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldygpLT5maXJlTGF5b3V0
UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwpAQCAtNTU2Niw3ICs1NTY2LDcgQEAgY29uc3Qg
U1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBEb2N1bWVudDo6c3ZnRXh0ZW5zaW9ucygpCiBTVkdEb2N1
bWVudEV4dGVuc2lvbnMmIERvY3VtZW50OjphY2Nlc3NTVkdFeHRlbnNpb25zKCkKIHsKICAgICBp
ZiAoIW1fc3ZnRXh0ZW5zaW9ucykKLSAgICAgICAgbV9zdmdFeHRlbnNpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsKKyAgICAgICAgbV9zdmdFeHRl
bnNpb25zID0gbWFrZVVuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsKICAgICBy
ZXR1cm4gKm1fc3ZnRXh0ZW5zaW9uczsKIH0KIApAQCAtNTc3MSw3ICs1NzcxLDcgQEAgdm9pZCBE
b2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8vIFRoaXMgY2FuIG9jY3Vy
IHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgogICAgICAgICBz
ZXRDb29raWVVUkwoVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSkpOwogICAgICAgICBzZXRTZWN1cml0
eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVVbmlxdWUoKSkpOwotICAgICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3Rk
OjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwgZW1wdHlTdHJp
bmcoKSB9LCAqdGhpcykpOworICAgICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAq
dGhpcykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NzkwLDcgKzU3OTAsNyBAQCB2
b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgaXNTZWN1cml0eU9y
aWdpblVuaXF1ZSA9IGRvY3VtZW50TG9hZGVyICYmIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgp
LnRhaW50aW5nKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZTsKIAogICAg
IHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoaXNT
ZWN1cml0eU9yaWdpblVuaXF1ZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSA6IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9s
aWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9
LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKIAogICAgIFN0cmluZyBv
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgp
Lm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAgICAgaWYgKCFvdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeS5pc051bGwoKSkKQEAgLTYwMjgsNyArNjAyOCw3IEBAIFN0cmluZyBE
b2N1bWVudDo6bmFtZUZvckNTU0NhbnZhc0VsZW1lbnQoY29uc3QgSFRNTENhbnZhc0VsZW1lbnQm
IGNhbnZhc0VsZW1lbnQpCiBUZXh0QXV0b1NpemluZyYgRG9jdW1lbnQ6OnRleHRBdXRvU2l6aW5n
KCkKIHsKICAgICBpZiAoIW1fdGV4dEF1dG9TaXppbmcpCi0gICAgICAgIG1fdGV4dEF1dG9TaXpp
bmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOworICAgICAgICBtX3RleHRB
dXRvU2l6aW5nID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZz4oKTsKICAgICByZXR1cm4gKm1f
dGV4dEF1dG9TaXppbmc7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAg
LTYzOTUsNyArNjM5NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OndoZWVsRXZlbnRIYW5kbGVyc0NoYW5n
ZWQoKQogdm9pZCBEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIoTm9kZSYgbm9kZSkK
IHsKICAgICBpZiAoIW1fd2hlZWxFdmVudFRhcmdldHMpCi0gICAgICAgIG1fd2hlZWxFdmVudFRh
cmdldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOworICAgICAgICBtX3do
ZWVsRXZlbnRUYXJnZXRzID0gbWFrZVVuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKIAogICAgIG1f
d2hlZWxFdmVudFRhcmdldHMtPmFkZCgmbm9kZSk7CiAKQEAgLTY0NTUsNyArNjQ1NSw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKE5vZGUmIGhhbmRsZXIpCiB7CiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoIW1fdG91Y2hFdmVudFRhcmdldHMpCi0g
ICAgICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50VGFyZ2V0
U2V0PigpOworICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gbWFrZVVuaXF1ZTxFdmVudFRh
cmdldFNldD4oKTsKIAogICAgIG1fdG91Y2hFdmVudFRhcmdldHMtPmFkZCgmaGFuZGxlcik7CiAK
QEAgLTgwNDMsNyArODA0Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UoY29uc3Qg
V1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIFZlCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBtZXNzYWdlTGV2ZWxGcm9t
V1RGTG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBl
OjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNT
dGF0ZShmcmFtZSgpKSk7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVz
c2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1l
KCkpKTsKIAogICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAg
ICB9KTsKQEAgLTgwNzgsNyArODA3OCw3IEBAIFN0cmluZyBEb2N1bWVudDo6c2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QKIAogYm9v
bCBEb2N1bWVudDo6cmVnaXN0ZXJDU1NQcm9wZXJ0eShDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHkmJiBwcm9wKQogewotICAgIHJldHVybiBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0eVNldC5hZGQo
cHJvcC5uYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eT4o
V1RGTW92ZShwcm9wKSkpLmlzTmV3RW50cnk7CisgICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFBy
b3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIG1ha2VVbmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5PihXVEZNb3ZlKHByb3ApKSkuaXNOZXdFbnRyeTsKIH0KIAogdm9pZCBEb2N1bWVudDo6
ZGV0YWNoRnJvbUZyYW1lKCkKQEAgLTgxNzIsNyArODE3Miw3IEBAIERldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciYgRG9jdW1lbnQ6OmRldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uCiAgICAgICAgIHJldHVybiB0b3BEb2N1bWVudCgpLmRldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzQ29udHJvbGxlcigpOwogCiAgICAgaWYgKCFtX2RldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcikKLSAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcj4oKnRoaXMpOworICAgICAgICBtX2RldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcjsKIH0KIApAQCAtODIw
Myw3ICs4MjAzLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVG
b3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPFBhaW50V28KIENvbnRlbnRDaGFuZ2VPYnNl
cnZlciYgRG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpCiB7CiAgICAgaWYgKCFtX2Nv
bnRlbnRDaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRoaXMpOworICAgICAgICBt
X2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IG1ha2VVbmlxdWU8Q29udGVudENoYW5nZU9ic2VydmVy
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsgCiB9CiAKQEAg
LTgyMTEsNyArODIxMSw3IEBAIERPTVRpbWVySG9sZGluZ1RhbmsmIERvY3VtZW50Ojpkb21UaW1l
ckhvbGRpbmdUYW5rKCkKIHsKICAgICBpZiAobV9kb21UaW1lckhvbGRpbmdUYW5rKQogICAgICAg
ICByZXR1cm4gKm1fZG9tVGltZXJIb2xkaW5nVGFuazsKLSAgICBtX2RvbVRpbWVySG9sZGluZ1Rh
bmsgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7CisgICAgbV9kb21U
aW1lckhvbGRpbmdUYW5rID0gbWFrZVVuaXF1ZTxET01UaW1lckhvbGRpbmdUYW5rPigpOwogICAg
IHJldHVybiAqbV9kb21UaW1lckhvbGRpbmdUYW5rOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IGY5N2RiZTc1MWJkNTA0MzYyNzNjMDc4ZjcwZWVhMTViNjVjNzYyYTkuLmE1ZTMyMDM5MjU5
NDk1NTUzYzU5MzZjNWI4MDcxZTQwZTBmOGU2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0x
Mjg0LDcgKzEyODQsNyBAQCBjbGFzcyBEb2N1bWVudAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERv
Y3VtZW50UGFyc2VyWWllbGRUb2tlbj4gY3JlYXRlUGFyc2VyWWllbGRUb2tlbigpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+
KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RG9jdW1lbnRQYXJzZXJZaWVsZFRv
a2VuPigqdGhpcyk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNBY3RpdmVQYXJzZXJZaWVsZFRva2Vu
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXJZaWVsZFRva2VuQ291bnQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggMDFjN2Y5NmUwMmU5ZWJkNTg4NTNm
YjVkYjFjNGI4ODIxZTJmOTcyOC4uMDM3MDNiNjJiYzY1MDU1NzhiMzg5Yjk5OTM4YTRkYWFiNmQ3
NmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKQEAgLTU5
LDcgKzU5LDcgQEAgY2xhc3MgRG9jdW1lbnRFdmVudFF1ZXVlOjpUaW1lciBmaW5hbCA6IHB1Ymxp
YyBTdXNwZW5kYWJsZVRpbWVyIHsKIAogRG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50
UXVldWUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAg
ICAsIG1fcGVuZGluZ0V2ZW50VGltZXIoc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMpKQor
ICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcihtYWtlVW5pcXVlPFRpbWVyPigqdGhpcykpCiAgICAg
LCBtX2lzQ2xvc2VkKGZhbHNlKQogewogICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN1c3BlbmRJ
Zk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmNwcAppbmRleCA3MjkxZDRhZGVlOWY0MTc3ZmRiZmVmZWVmZGRmMjY3MDU0YTljNGYwLi5l
NzY0MWFmNjIxOGJmMTNhYjBlM2M2ODkyMDIwZGU4ODljNGU5MDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtMzY0LDcgKzM2NCw3
IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoTm9kZSYgbm9kZSwg
Y29uc3QgRG9jdW1lbnRNYXJrZXImIG5ld01hCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1hcmtlckxp
c3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZCgmbm9kZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwogCiAgICAgaWYgKCFsaXN0KSB7Ci0gICAgICAgIGxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE1h
cmtlckxpc3Q+KCk7CisgICAgICAgIGxpc3QgPSBtYWtlVW5pcXVlPE1hcmtlckxpc3Q+KCk7CiAg
ICAgICAgIGxpc3QtPmFwcGVuZChSZW5kZXJlZERvY3VtZW50TWFya2VyKG5ld01hcmtlcikpOwog
ICAgIH0gZWxzZSBpZiAoc2hvdWxkSW5zZXJ0QXNTZXBhcmF0ZU1hcmtlcihuZXdNYXJrZXIpKSB7
CiAgICAgICAgIC8vIFdlIGRvbid0IG1lcmdlIGRpY3RhdGlvbiBtYXJrZXJzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRleCA4MWVmYjEwZDVlNzZl
ZGI2ZjZkMzgzNTMwMDUxZDI5YzM4OGVhZmRiLi44NTVhMmEwNjU2ZjcxYjQ1ZWU4ZDRmZmYyODRh
NTM1Mzc5YTM4Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9y
YWdlQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmNwcApAQCAtNDgsNyArNDgsNyBAQCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqIERvY3VtZW50
U3RvcmFnZUFjY2Vzczo6ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgYXV0byogc3Vw
cGxlbWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50U3RvcmFnZUFjY2Vzcyo+KFN1cHBsZW1lbnQ8
RG9jdW1lbnQ+Ojpmcm9tKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICgh
c3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPERvY3VtZW50U3RvcmFnZUFjY2Vzcz4oZG9jdW1lbnQpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vzcz4oZG9jdW1lbnQpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAg
ICAgIGJvb2wgc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSA9IHdhc0dyYW50ZWQgPT0gU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyB8fCBwcm9tcHRXYXNTaG93biA9PSBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd246Ok5vOwogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0
dXJlKSB7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0g
bWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVldWU6
Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1
bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQtPmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgp
OwogICAgICAgICAgICAgfSkpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9y
YWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVy
ZSkgewotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdU
Rk1vdmUoZG9jdW1lbnRSZWZlcmVuY2UpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1
ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2Rv
Y3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5jZSldICgpIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkK
ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdl
c3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIERvY3Vt
ZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZW5hYmxlVGVtcG9y
YXJ5VGltZVVzZXJHZXN0dXJlKCkKIHsKLSAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gc3Rk
OjptYWtlX3VuaXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
LCAmbV9kb2N1bWVudCk7CisgICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVyZSA9IG1ha2VVbmlxdWU8
VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgJm1fZG9jdW1lbnQp
OwogfQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6Y29uc3VtZVRlbXBvcmFyeVRpbWVV
c2VyR2VzdHVyZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNzEyMDA4ZjIxYjIzMWM0ZGUy
MWM0MTNiNWQxMDg1ZDkzZjI1ZGFmMy4uYjBkOGFkNWQxNjQwOWE3YmU1NmJjM2MxMGI2OWQzMmJh
NzUwZGMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDc3LDcgKzQ3Nyw3IEBAIE5hbWVk
Tm9kZU1hcCYgRWxlbWVudDo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgaWYgKE5hbWVkTm9kZU1h
cCogYXR0cmlidXRlTWFwID0gcmFyZURhdGEuYXR0cmlidXRlTWFwKCkpCiAgICAgICAgIHJldHVy
biAqYXR0cmlidXRlTWFwOwogCi0gICAgcmFyZURhdGEuc2V0QXR0cmlidXRlTWFwKHN0ZDo6bWFr
ZV91bmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVsZW1lbnQmPigqdGhpcykpKTsKKyAg
ICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAobWFrZVVuaXF1ZTxOYW1lZE5vZGVNYXA+KGNvbnN0
X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOwogICAgIHJldHVybiAqcmFyZURhdGEuYXR0cmlidXRl
TWFwKCk7CiB9CiAKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SXNEZWZp
bmVkQ3VzdG9tRWxlbWVudChKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZh
CiAgICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwogICAgIGF1dG8mIGRhdGEgPSBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUoKSkKLSAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShzdGQ6Om1h
a2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7
CisgICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUobWFrZVVuaXF1ZTxD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOwogICAgIGludmFs
aWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CkBAIC0yMzQ0LDcgKzIzNDQsNyBA
QCB2b2lkIEVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNl
JiBlbGVtZW50SW50ZXJmYWNlKQogICAgIGF1dG8mIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURh
dGEoKTsKICAgICBib29sIGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUgPSBkYXRhLmN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlKCk7CiAgICAgaWYgKCFhbHJlYWR5U2NoZWR1bGVkVG9VcGdyYWRl
KQotICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0ZDo6bWFrZV91
bmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKKyAg
ICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5pcXVlPEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAgZGF0YS5jdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpLT5lbnF1ZXVlRWxlbWVudFVwZ3JhZGUoKnRoaXMsIGFs
cmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpOwogfQogCkBAIC0zNDgwLDcgKzM0ODAsNyBAQCBET01U
b2tlbkxpc3QmIEVsZW1lbnQ6OmNsYXNzTGlzdCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBk
YXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmNsYXNzTGlzdCgp
KQotICAgICAgICBkYXRhLnNldENsYXNzTGlzdChzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlz
dD4oKnRoaXMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CisgICAgICAgIGRhdGEuc2V0Q2xhc3NM
aXN0KG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpjbGFzc0F0dHIp
KTsKICAgICByZXR1cm4gKmRhdGEuY2xhc3NMaXN0KCk7CiB9CiAKQEAgLTM0ODgsNyArMzQ4OCw3
IEBAIERhdGFzZXRET01TdHJpbmdNYXAmIEVsZW1lbnQ6OmRhdGFzZXQoKQogewogICAgIEVsZW1l
bnRSYXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0
YS5kYXRhc2V0KCkpCi0gICAgICAgIGRhdGEuc2V0RGF0YXNldChzdGQ6Om1ha2VfdW5pcXVlPERh
dGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CisgICAgICAgIGRhdGEuc2V0RGF0YXNldChtYWtl
VW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CiAgICAgcmV0dXJuICpkYXRhLmRh
dGFzZXQoKTsKIH0KIApAQCAtMzYzMiw3ICszNjMyLDcgQEAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJE
YXRhJiBFbGVtZW50OjplbnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKQogewogICAgIGF1
dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0
YS5pbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKSkKLSAgICAgICAgcmFyZURhdGEuc2V0SW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhKHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJE
YXRhPigpKTsKKyAgICAgICAgcmFyZURhdGEuc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKG1h
a2VVbmlxdWU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKICAgICByZXR1cm4gKnJhcmVE
YXRhLmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpOwogfQogCkBAIC0zNjU4LDcgKzM2NTgsNyBA
QCBSZXNpemVPYnNlcnZlckRhdGEmIEVsZW1lbnQ6OmVuc3VyZVJlc2l6ZU9ic2VydmVyRGF0YSgp
CiB7CiAgICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBp
ZiAoIXJhcmVEYXRhLnJlc2l6ZU9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRS
ZXNpemVPYnNlcnZlckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxSZXNpemVPYnNlcnZlckRhdGE+KCkp
OworICAgICAgICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEobWFrZVVuaXF1ZTxSZXNp
emVPYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEucmVzaXplT2JzZXJ2ZXJE
YXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAppbmRleCBk
OWU2NjM0OWNiZGJhMGJiODFkMmFjZmJmZGMwZDQzMzc4YzY1OGRiLi4wYjA5ZDA4MmMzNmVkZGQ4
NGI5Y2RlOTg4MjUyNzJkYjVmOTZlNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXJNYXAuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBFdmVudExpc3RlbmVyTWFwOjphZGQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXMKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYXV0byBsaXN0ZW5lcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CisgICAgYXV0byBsaXN0ZW5lcnMgPSBt
YWtlVW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CiAgICAgbGlzdGVuZXJzLT51bmNoZWNr
ZWRBcHBlbmQoUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGxpc3RlbmVy
KSwgb3B0aW9ucykpOwogICAgIG1fZW50cmllcy5hcHBlbmQoeyBldmVudFR5cGUsIFdURk1vdmUo
bGlzdGVuZXJzKSB9KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmlu
ZGV4IDllOTMwOGJiNWRhMTQ2MWUzNThlM2NjNjJmZWFmZGNmY2QwY2M3YWQuLjViNmFiNjg3NTVi
NjFiZmUyZDRhNjhiY2JlNzUyNGZkMGRkYWJiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApA
QCAtMzM5LDEzICszMzksMTMgQEAgc3RydWN0IEV2ZW50TmFtZXMgewogICAgIERPTV9FVkVOVF9O
QU1FU19GT1JfRUFDSChET01fRVZFTlRfTkFNRVNfREVDTEFSRSkKICN1bmRlZiBET01fRVZFTlRf
TkFNRVNfREVDTEFSRQogCi0gICAgLy8gRklYTUU6IFRoZSBmcmllbmQgZGVjbGFyYXRpb24gdG8g
c3RkOjptYWtlX3VuaXF1ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdpbmRvd3MgcG9ydC4KKyAg
ICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBtYWtlVW5pcXVlIGJlbG93IGRv
ZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgogICAgIC8vCiAgICAgLy8gdGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MuLi4gQXJncz4KLSAgICAvLyBmcmllbmQgdHlwZW5hbWUgc3RkOjpfVW5pcXVl
X2lmPFQ+OjpfU2luZ2xlX29iamVjdCBzdGQ6Om1ha2VfdW5pcXVlKEFyZ3MmJi4uLik7CisgICAg
Ly8gZnJpZW5kIHR5cGVuYW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3QgbWFr
ZVVuaXF1ZShBcmdzJiYuLi4pOwogICAgIC8vCiAgICAgLy8gVGhpcyBjcmVhdGUgZnVuY3Rpb24g
c2hvdWxkIGJlIGRlbGV0ZWQgbGF0ZXIgYW5kIGlzIG9ubHkgZm9yIGtlZXBpbmcgRXZlbnROYW1l
cyBhcyBwcml2YXRlLgotICAgIC8vIHN0ZDo6bWFrZV91bmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5z
dGVhZC4KKyAgICAvLyBtYWtlVW5pcXVlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCiAgICAgLy8K
ICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
RXZlbnROYW1lcz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNw
cAppbmRleCBkYjE0MjhkMWQ0MjYwNThjYjY1YjFlYjZmYWNhMjNkYjk4OTI4MmJkLi5hMGFkMGFk
N2M0ODI2OTJlNjM4ZTU3MjgwZjFhMjkyNDdhY2VjMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRo
LmNwcApAQCAtMTE1LDE3ICsxMTUsMTcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2Rl
JiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogewogICAgIHVzaW5nIE1ha2VFdmVudENv
bnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiAoKikoTm9kZSYsIEV2ZW50VGFy
Z2V0KiwgRXZlbnRUYXJnZXQqLCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgIE1ha2VFdmVu
dENvbnRleHQgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCog
Y3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRo
KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4oJm5vZGUs
IGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQs
IGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICB9OwogICAgIGlmIChpczxNb3VzZUV2ZW50PihldmVu
dCkgfHwgZXZlbnQuaXNGb2N1c0V2ZW50KCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9
IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQq
IHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRD
b250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb3VzZU9yRm9j
dXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93
RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW91c2VPckZvY3VzRXZlbnRD
b250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsK
ICAgICAgICAgfTsKICAgICB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoaXM8
VG91Y2hFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgIG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9k
ZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQs
IGludCBjbG9zZWRTaGFkb3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4g
ewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hFdmVudENvbnRleHQ+
KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VG91Y2hFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRU
YXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9OwogICAgIH0KICNl
bmRpZgpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgRXZlbnRQYXRoOjpidWlsZFBhdGgoTm9kZSYg
b3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxEb2N1bWVudD4oKm5vZGUp
LmRvbVdpbmRvdygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2RlLCAqd2luZG93LCAqdGFy
Z2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2RlLCAqd2luZG93
LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwOCw3ICszMDgs
NyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiB0YXJnZXRz
KQogICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgTm9kZSogb3JpZ2luID0gKnRhcmdl
dHMuYmVnaW4oKTsKICAgICAgICAgaWYgKCF0YXJnZXQtPmlzQ2xvc2VkU2hhZG93SGlkZGVuKCpv
cmlnaW4pKQotICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwgMCkpOworICAgICAgICAgICAgbV9wYXRo
LmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwg
MCkpOwogICAgIH0KIH0KIApAQCAtMzE3LDcgKzMxNyw3IEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRo
KGNvbnN0IFZlY3RvcjxFdmVudFRhcmdldCo+JiB0YXJnZXRzKQogICAgIGZvciAoYXV0byogdGFy
Z2V0IDogdGFyZ2V0cykgewogICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgQVNTRVJU
KCFpczxOb2RlPih0YXJnZXQpKTsKLSAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5iZWdpbigpLCAwKSk7
CisgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KG51bGxwdHIs
IHRhcmdldCwgKnRhcmdldHMuYmVnaW4oKSwgMCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlZGQ5Y2EyOGVhNDkzYWM3Yzk0YzhiZGUyODVi
MTY2NmMzODgyNTU5Li5hNzBiY2FlY2NjODc5NWE0ZjRiYTQyNmUyNTEzZGZmN2EwZjc0YjA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNDIsNiArNDIsNyBAQCBj
bGFzcyBSZW5kZXJUcmVlQnVpbGRlcjsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBGdWxs
c2NyZWVuTWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRnVsbHNjcmVlbk1hbmFnZXIoRG9jdW1lbnQmKTsKICAgICB+RnVsbHNjcmVlbk1hbmFnZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAK
aW5kZXggYjNhMDZlNDdiMDcwMGY3YzQ3ZDNkOWFlZjMzZjQ0MzcyNGUwYzU1ZS4uOTQwZWZjYWVk
ODMwOTFjMjU4M2ZhOWUzMzZlZjNkNzhjNTRhYTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKGNvbnN0IEF0b21TdHJpbmcmIGlk
LCBJZFRhcmdldE9ic2VydmUKICAgICAKICAgICBJZFRvT2JzZXJ2ZXJTZXRNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBtX3JlZ2lzdHJ5LmFkZChpZC5pbXBsKCksIG51bGxwdHIpOwogICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JzZXJ2ZXJTZXQ+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPE9ic2VydmVyU2V0PigpOwogCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+YWRkKG9ic2VydmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcApp
bmRleCA3ZTdhMzQ3OTdiODYyOWY2MmY3Zjc4NmFiMTRjNWM2ZjViZDkwYjE0Li5jZTg1NmJiNTVk
NWJkOTllNjZmNTBjYjU1YjBiZTQ3OTBlMDk4NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJk
RXZlbnQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2Fy
ZEV2ZW50KCkgPSBkZWZhdWx0OwogaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQo
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2
aWV3KQogICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50
VHlwZShrZXkudHlwZSgpKSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6WWVzLCBJc0Nv
bXBvc2VkOjpZZXMsCiAgICAgICAgIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25p
Y1RpbWUoKSwgdmlldy5jb3B5UmVmKCksIDAsIGtleS5tb2RpZmllcnMoKSwgSXNUcnVzdGVkOjpZ
ZXMpCi0gICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQorICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVu
dChtYWtlVW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZ
Qk9BUkRfS0VZX0FUVFJJQlVURSkKICAgICAsIG1fa2V5KGtleS5rZXkoKSkKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NaWNyb3Rhc2tzLmgKaW5kZXggYjYzMTg0MTUwZjVhMzkxNDI1MmI4NDJlZDlkMDdkZWFh
ZjZiNDAzNi4uNWQ1MGI3ZDVkN2IyM2E2MWRjYmJjYzVmOGI1ZjFmYmFiMmJiNGIwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWljcm90YXNrcy5oCkBAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFZvaWRNaWNyb3Rhc2sg
ZmluYWwgOiBwdWJsaWMgTWljcm90YXNrIHsKIH07CiAKIGNsYXNzIE1pY3JvdGFza1F1ZXVlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8
TWljcm90YXNrUXVldWU+OwogICAgIGZyaWVuZCBjbGFzcyBNaWNyb3Rhc2s7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggNjZjNWVhMGI5ZDYzNDU0
NDM4MTJmYjEzMWZmZTVkYmU2Y2ExZGRmMy4uMTkzZjI3ODA1YTVhZWQ0YjYwNmU5Y2VlYTNhOWEz
NWQ4YjFlOTkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAt
MTc1LDcgKzE3NSw3IEBAIHN0YXRpYyB2b2lkIHF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5k
TWljcm90YXNrKCkKICAgICBpZiAobXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVl
dWVkRmxhZykKICAgICAgICAgcmV0dXJuOwogICAgIG11dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1p
Y3JvdGFza1F1ZXVlZEZsYWcgPSB0cnVlOwotICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFk
UXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90YXNr
PigpKTsKKyAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VV
bmlxdWU8TXV0YXRpb25PYnNlcnZlck1pY3JvdGFzaz4oKSk7CiB9CiAKIHZvaWQgTXV0YXRpb25P
YnNlcnZlcjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFJlZjxNdXRhdGlvblJlY29yZD4mJiBtdXRh
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXAuY3BwCmluZGV4IDUyZGE2MWY3NGYxZjU3YWY2ODU0OWYzNjY1NjMwNmQ4ZDE3MDNj
NzkuLjAyNzZlNDJiZTViZDgzZmY0MmE3OTM1NmJkZTljZTczNjA5OWNiZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApA
QCAtNTEsNyArNTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXA+IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcgogICAgIGlmIChvYnNlcnZl
cnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2Vy
dmVycyksIG9sZFZhbHVlRmxhZyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKIH0K
IAogYm9vbCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJlcXVlc3Rl
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbi5jcHAKaW5kZXggYzhmYzAxMDY3MjQ1ZTRlMzYxOTdhMmY2ZDRkMWU0NTc1NDdi
YmM4YS4uZTVjNmRkMTZhNGRiNjA5YmE1MjczYTQ3YWY3ZmE2ODI2NjJhMmM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApA
QCAtNjgsNyArNjgsNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2Vy
dmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKE5vZGUmIG5vZGUpCiAgICAgbV9vYnNlcnZlci0+c2V0
SGFzVHJhbnNpZW50UmVnaXN0cmF0aW9uKCk7CiAKICAgICBpZiAoIW1fdHJhbnNpZW50UmVnaXN0
cmF0aW9uTm9kZXMpIHsKLSAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7CisgICAgICAg
IG1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8R0NSZWFj
aGFibGVSZWY8Tm9kZT4+PigpOwogCiAgICAgICAgIEFTU0VSVCghbV9ub2RlS2VwdEFsaXZlKTsK
ICAgICAgICAgbV9ub2RlS2VwdEFsaXZlID0gJm1fbm9kZTsgLy8gQmFsYW5jZWQgaW4gdGFrZVRy
YW5zaWVudFJlZ2lzdHJhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzZkNGVhOWQ3MzBhOTIz
NzJhOWY4ZTdhNmQ4ZjY3ZDAwZmQzZGJmNS4uY2FiZjFlYjU4YzljMjNjYWQ4ODViZDAxZGYxMjJi
NjUxYWUwMmJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzk4LDkgKzM5OCw5IEBAIHZvaWQgTm9k
ZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgpCiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhOwogICAg
IGlmIChpczxFbGVtZW50PigqdGhpcykpCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVsZW1lbnRSYXJlRGF0YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVy
ZXIpKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPEVsZW1lbnRSYXJlRGF0
YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7
CiAgICAgZWxzZQotICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFyZURhdGE+
KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVl
PE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsKICAgICBBU1NFUlQo
ZGF0YSk7CiAKICAgICBtX2RhdGEubV9yYXJlRGF0YSA9IGRhdGE7CkBAIC0yMjE1LDcgKzIyMTUs
NyBAQCBFdmVudFRhcmdldERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAKICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfZXZlbnRUYXJnZXREYXRhTWFwTG9jayk7CiAgICAg
c2V0SGFzRXZlbnRUYXJnZXREYXRhKHRydWUpOwotICAgIHJldHVybiAqZXZlbnRUYXJnZXREYXRh
TWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXREYXRhPigpKS5pdGVy
YXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhpcywg
bWFrZVVuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9p
ZCBOb2RlOjpjbGVhckV2ZW50VGFyZ2V0RGF0YSgpCkBAIC0yMjg3LDcgKzIyODcsNyBAQCB2b2lk
IE5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZl
ciwgTXV0YXRpb25PYnNlcnZlcgogICAgIH0KIAogICAgIGlmICghcmVnaXN0cmF0aW9uKSB7Ci0g
ICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7
CisgICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7CiAg
ICAgICAgIHJlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJ5Lmxhc3QoKS5nZXQoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA3NjkwZDU5OWZjYTdkYzk5Y2I0OWUxNjBmYmUy
YWZhZGRmMDBjZGY0Li43NjZkNjdmM2Y2ZDYyOWFmMDg5NDJhZGMyM2UyYzIyYzI5ZjNlNDY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgTm9k
ZVJhcmVEYXRhIDogcHVibGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVMaXN0c05vZGVE
YXRhJiBlbnN1cmVOb2RlTGlzdHMoKQogICAgIHsKICAgICAgICAgaWYgKCFtX25vZGVMaXN0cykK
LSAgICAgICAgICAgIG1fbm9kZUxpc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTGlzdHNOb2Rl
RGF0YT4oKTsKKyAgICAgICAgICAgIG1fbm9kZUxpc3RzID0gbWFrZVVuaXF1ZTxOb2RlTGlzdHNO
b2RlRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICptX25vZGVMaXN0czsKICAgICB9CiAKQEAgLTI4
OSw3ICsyODksNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFz
ZSB7CiAgICAgTm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhJiBlbnN1cmVNdXRhdGlvbk9ic2VydmVy
RGF0YSgpCiAgICAgewogICAgICAgICBpZiAoIW1fbXV0YXRpb25PYnNlcnZlckRhdGEpCi0gICAg
ICAgICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTXV0
YXRpb25PYnNlcnZlckRhdGE+KCk7CisgICAgICAgICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRh
ID0gbWFrZVVuaXF1ZTxOb2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CiAgICAgICAgIHJldHVy
biAqbV9tdXRhdGlvbk9ic2VydmVyRGF0YTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFk
aW9CdXR0b25Hcm91cHMuY3BwCmluZGV4IDUzMzdjNThjZGZiYmFhYjIzMDE4NDUwMjYzOGRjNjM0
NDlmNzk2YWMuLjYxYmJjNGVkZmY5MzRhNjQ0NmVhMjU2NzU1NjYzZmQ1NDY4NzdlM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcApAQCAtMTk4LDExICsxOTgsMTEg
QEAgdm9pZCBSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKLSAg
ICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8TmFtZVRvR3JvdXBNYXA+
KCk7CisgICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBtYWtlVW5pcXVlPE5hbWVUb0dyb3VwTWFw
PigpOwogCiAgICAgYXV0byYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC5u
YW1lKCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFncm91cCkK
LSAgICAgICAgZ3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7Cisg
ICAgICAgIGdyb3VwID0gbWFrZVVuaXF1ZTxSYWRpb0J1dHRvbkdyb3VwPigpOwogICAgIGdyb3Vw
LT5hZGQoZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcAppbmRleCBjODI1YTdlZGVlNmJiMmQ1ZjUxNmM2ZDNlNmVhNzQxMGU2ZWNj
NzU2Li4wNGFmZTlkNzhhZDBiZDEwMjhhNjcwM2MwZmMzZDRmNjUzYjEzZGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNzksOCArMzc5
LDggQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW4KIHsKICAgICBpZiAobV9pbkRpc3BhdGNoRXJy
b3JFdmVudCkgewogICAgICAgICBpZiAoIW1fcGVuZGluZ0V4Y2VwdGlvbnMpCi0gICAgICAgICAg
ICBtX3BlbmRpbmdFeGNlcHRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsKLSAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9u
cy0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNzYWdl
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShjYWxsU3RhY2sp
KSk7CisgICAgICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zID0gbWFrZVVuaXF1ZTxWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsKKyAgICAgICAgbV9wZW5kaW5n
RXhjZXB0aW9ucy0+YXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNz
YWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShjYWxsU3Rh
Y2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxNCw5ICs0MTQsOSBAQCB2b2lk
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24o
SlNDOjpFeGVjU3RhdGUmIHN0YQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246ICIsIHJlc3VsdE1lc3NhZ2UpOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlm
IChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVs
c2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwogICAgIGFkZENvbnNvbGVN
ZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAgUmVqZWN0
ZWRQcm9taXNlVHJhY2tlciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQ
cm9taXNlVHJhY2tlclNsb3cKICAgICAvLyBXaGVuIGluaXRpYWxpemluZyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0LCB2bSgpIGlzIG5vdCByZWFkeS4KIAogICAgIEFTU0VSVCghbV9yZWplY3RlZFBy
b21pc2VUcmFja2VyKTsKLSAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlamVjdGVkUHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsKKyAgICBtX3JlamVj
dGVkUHJvbWlzZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFJlamVjdGVkUHJvbWlzZVRyYWNrZXI+KCp0
aGlzLCB2bSgpKTsKICAgICByZXR1cm4gKm1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlci5nZXQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDU1ZGMyYzg3YTRhYzIw
MmQ3MWFkZGE2NmQ1OTZiNWZlYTBiYzg4NTYuLjIxMDljZTRhMjI4YzNlN2JhODdhNGJhNTJiMmRi
MjgyMzYwODcxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTYzMyw3
ICs2MzMsNyBAQCBFeGNlcHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gU2VsZWN0b3JRdWVyeUNhY2hl
OjphZGQoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIERvYwogICAgIGlmIChtX2VudHJpZXMuc2l6
ZSgpID09IG1heGltdW1TZWxlY3RvclF1ZXJ5Q2FjaGVTaXplKQogICAgICAgICBtX2VudHJpZXMu
cmVtb3ZlKG1fZW50cmllcy5yYW5kb20oKSk7CiAKLSAgICByZXR1cm4gKm1fZW50cmllcy5hZGQo
c2VsZWN0b3JzLCBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0
b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKm1fZW50cmllcy5hZGQoc2Vs
ZWN0b3JzLCBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0b3JMaXN0KSkp
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4
IDY5NjNiNjgzNzlkODhmMjdhODRlMmYxZGE2NTE1MzgxODA1YjI5M2MuLjY3ODZjMGQyMWUxYjJj
MmE1Nzg1MWJkMDg1MTY0YzFhMWU5MmM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1l
bnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUpCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50
LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAg
ICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5
bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6
U2NvcGU+KCp0aGlzKSkKIHsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCBTaGFkb3dSb290OjpTaGFk
b3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50
PiYmIHNsbwogICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9v
dCkKICAgICAsIFRyZWVTY29wZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUoU2hhZG93
Um9vdE1vZGU6OlVzZXJBZ2VudCkKLSAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2VfdW5pcXVl
PFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5
bGU6OlNjb3BlPigqdGhpcykpCiAgICAgLCBtX3Nsb3RBc3NpZ25tZW50KFdURk1vdmUoc2xvdEFz
c2lnbm1lbnQpKQogewogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU2hhZG93Um9vdDo6bW92
ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KERvY3VtZW50JiBuZXdEb2N1bWVudCkKICAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFwYXJlbnRUcmVlU2NvcGUoKSB8
fCAmcGFyZW50VHJlZVNjb3BlKCktPmRvY3VtZW50U2NvcGUoKSA9PSAmbmV3RG9jdW1lbnQpOwog
CiAgICAgLy8gU3R5bGUgc2NvcGVzIGFyZSBkb2N1bWVudCBzcGVjaWZpYy4KLSAgICBtX3N0eWxl
U2NvcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpOworICAgIG1fc3R5
bGVTY29wZSA9IG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CiAgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmbV9zdHlsZVNjb3BlLT5kb2N1bWVudCgp
ID09ICZuZXdEb2N1bWVudCk7CiB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNoYWRvd1Jv
b3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90
RWxlbWVudCYgcwogewogICAgIEFTU0VSVCgmc2xvdC5yb290Tm9kZSgpID09IHRoaXMpOwogICAg
IGlmICghbV9zbG90QXNzaWdubWVudCkKLSAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U2xvdEFzc2lnbm1lbnQ+KCk7CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQg
PSBtYWtlVW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOwogCiAgICAgcmV0dXJuIG1fc2xvdEFzc2ln
bm1lbnQtPmFkZFNsb3RFbGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICp0aGlzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCmluZGV4IGE0MTlkZGE1MjhhY2NiZGE2ZGU5ZGRm
MWE1NDg2NGNmZGY5MTYwZWYuLjQ1YzA4ZWEzNmFmZTEzOTdiZTBlY2JmYjI5ZTIyOGVjZDBjOTkw
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3
IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21T
dHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVuCiAgICAgICAgIC8vIHRvIGF2b2lkIGFsd2F5cyBo
YXZpbmcgYSB2ZWN0b3Igb2YgYWxsIGNoaWxkIG5vZGVzIG9mIGEgc2hhZG93IGhvc3QuCiAgICAg
ICAgIGlmIChzbG90TmFtZSA9PSBkZWZhdWx0U2xvdE5hbWUoKSkKICAgICAgICAgICAgIG1fc2xv
dEFzc2lnbm1lbnRzSXNWYWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTbG90PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0p
OwogICAgIGF1dG8mIHNsb3QgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBib29s
IG5lZWRzU2xvdGNoYW5nZUV2ZW50ID0gc2hhZG93Um9vdC5zaG91bGRGaXJlU2xvdGNoYW5nZUV2
ZW50KCkgJiYgaGFzQXNzaWduZWROb2RlcyhzaGFkb3dSb290LCBzbG90KTsKQEAgLTQxMCw3ICs0
MTAsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QoTm9kZSYgY2hpbGQsIGNv
bnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lKQogICAgIH0KIAogICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9zbG90cy5lbnN1cmUoc2xvdE5hbWUsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U2xvdD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2xvdD4oKTsKICAgICB9
KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hc3NpZ25lZE5vZGVzLmFwcGVuZCgm
Y2hpbGQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAyZjI4NzBkMTY2OWQ0NGJj
NjE4NGE3MmVjNjNlYjMyM2Y1MjdkMzlmLi41MzFhY2RmNGRkNjU2OGUwZjQ2MjFlYjUwZDg5ZGVl
NDY3ZDU1YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBU
cmVlU2NvcGU6OlRyZWVTY29wZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKHNoYWRvd1Jvb3QpCiAgICAgLCBtX2RvY3VtZW50U2Nv
cGUoZG9jdW1lbnQpCiAgICAgLCBtX3BhcmVudFRyZWVTY29wZSgmZG9jdW1lbnQpCi0gICAgLCBt
X2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KG1ha2VVbmlx
dWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewogICAgIHNoYWRvd1Jvb3Quc2V0VHJl
ZVNjb3BlKCp0aGlzKTsKIH0KQEAgLTczLDcgKzczLDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShkb2N1bWVudCkKICAgICAsIG1f
ZG9jdW1lbnRTY29wZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKG51bGxwdHIp
Ci0gICAgLCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
KG1ha2VVbmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewogICAgIGRvY3VtZW50
LnNldFRyZWVTY29wZSgqdGhpcyk7CiB9CkBAIC0xNDEsNyArMTQxLDcgQEAgY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiogVHJlZVNjb3BlOjpnZXRBbGxFbGVtZW50c0J5SWQoY29uc3QgQXRvbVN0cmlu
ZyYgZWxlbWVudEkKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZChjb25zdCBBdG9tU3Ry
aW5nSW1wbCYgZWxlbWVudElkLCBFbGVtZW50JiBlbGVtZW50LCBib29sIG5vdGlmeU9ic2VydmVy
cykKIHsKICAgICBpZiAoIW1fZWxlbWVudHNCeUlkKQotICAgICAgICBtX2VsZW1lbnRzQnlJZCA9
IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9lbGVt
ZW50c0J5SWQgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9lbGVt
ZW50c0J5SWQtPmFkZChlbGVtZW50SWQsIGVsZW1lbnQsICp0aGlzKTsKICAgICBpZiAobm90aWZ5
T2JzZXJ2ZXJzKQogICAgICAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2Jz
ZXJ2ZXJzKGVsZW1lbnRJZCk7CkBAIC0xNjgsNyArMTY4LDcgQEAgRWxlbWVudCogVHJlZVNjb3Bl
OjpnZXRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lkIFRy
ZWVTY29wZTo6YWRkRWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxl
bWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1fZWxlbWVudHNCeU5hbWUpCi0gICAgICAgIG1f
ZWxlbWVudHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7
CisgICAgICAgIG1fZWxlbWVudHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRN
YXA+KCk7CiAgICAgbV9lbGVtZW50c0J5TmFtZS0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsK
IH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgVHJlZVNjb3BlOjphZGRJbWFnZU1hcChIVE1M
TWFwRWxlbWVudCYgaW1hZ2VNYXApCiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFtX2ltYWdlTWFwc0J5TmFtZSkKLSAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VN
YXBzQnlOYW1lID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIG1faW1h
Z2VNYXBzQnlOYW1lLT5hZGQoKm5hbWUsIGltYWdlTWFwLCAqdGhpcyk7CiB9CiAKQEAgLTI2Myw3
ICsyNjMsNyBAQCBIVE1MTWFwRWxlbWVudCogVHJlZVNjb3BlOjpnZXRJbWFnZU1hcChjb25zdCBB
dG9tU3RyaW5nJiBuYW1lKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5
VXNlbWFwKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVt
ZW50KQogewogICAgIGlmICghbV9pbWFnZXNCeVVzZW1hcCkKLSAgICAgICAgbV9pbWFnZXNCeVVz
ZW1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAg
bV9pbWFnZXNCeVVzZW1hcCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAg
ICByZXR1cm4gbV9pbWFnZXNCeVVzZW1hcC0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0K
IApAQCAtMzAwLDcgKzMwMCw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIFRyZWVTY29wZTo6bGFiZWxF
bGVtZW50Rm9ySWQoY29uc3QgQXRvbVN0cmluZyYgZm9yQXR0cmlidXRlVmFsCiAKICAgICBpZiAo
IW1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUpIHsKICAgICAgICAgLy8gUG9wdWxhdGUgdGhlIG1hcCBv
biBmaXJzdCBhY2Nlc3MuCi0gICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fbGFiZWxzQnlGb3JB
dHRyaWJ1dGUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAKICAgICAgICAg
Zm9yIChhdXRvJiBsYWJlbCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxMYWJlbEVsZW1lbnQ+KG1f
cm9vdE5vZGUpKSB7CiAgICAgICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JWYWx1ZSA9IGxh
YmVsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9yQXR0cik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggNzkzNDJjNDk3NzUzZDlhMTUyNmUwNTU1NDlmYzc3OTcyMTRi
ZjZlNC4uODkxYzEyODhjNmUzMTRhY2NhZTliNjI3MTk3ODE4ODFlNzQyZGMyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzgwLDEyICszODAsMTIgQEAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBk
b2N1bWVudCwKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2lu
ZDo6Q29weToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6Q3V0OgotICAgICAgICByZXR1
cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFu
c2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6
UGFzdGVBc1BsYWluVGV4dDoKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKICAgICAgICAg
ICAgIGF1dG8gcGxhaW5UZXh0VHlwZSA9ICJ0ZXh0L3BsYWluIl9zOwogICAgICAgICAgICAgYXV0
byBwbGFpblRleHQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+cmVhZFN0
cmluZyhwbGFpblRleHRUeXBlKTsKLSAgICAgICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6
bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKKyAgICAgICAgICAgIGF1dG8gcGFzdGVi
b2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKICAgICAgICAgICAgIHBhc3Rl
Ym9hcmQtPndyaXRlU3RyaW5nKHBsYWluVGV4dFR5cGUsIHBsYWluVGV4dCk7CiAgICAgICAgICAg
ICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERh
dGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSk7CiAg
ICAgICAgIH0KQEAgLTM5NiwxMCArMzk2LDEwIEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBj
cmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAg
ICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJlZm9yZUNvcHk6CiAgICAgY2FzZSBDbGlwYm9h
cmRFdmVudEtpbmQ6OkJlZm9yZUN1dDoKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVm
b3JlUGFzdGU6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1v
ZGU6OkludmFsaWQsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQs
IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAgcmV0dXJuIERhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0
b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKIH0KIAog
Ly8gUmV0dXJucyB3aGV0aGVyIGNhbGxlciBzaG91bGQgY29udGludWUgd2l0aCAidGhlIGRlZmF1
bHQgcHJvY2Vzc2luZyIsIHdoaWNoIGlzIHRoZSBzYW1lIGFzCkBAIC0xMTgzLDkgKzExODMsOSBA
QCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBj
b21wb3NpdGlvbikKIAogRWRpdG9yOjpFZGl0b3IoRnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFt
ZShmcmFtZSkKLSAgICAsIG1fa2lsbFJpbmcoc3RkOjptYWtlX3VuaXF1ZTxQQUw6OktpbGxSaW5n
PigpKQotICAgICwgbV9zcGVsbENoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxTcGVsbENoZWNrZXI+
KGZyYW1lKSkKLSAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5p
cXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKKyAgICAsIG1fa2lsbFJpbmco
bWFrZVVuaXF1ZTxQQUw6OktpbGxSaW5nPigpKQorICAgICwgbV9zcGVsbENoZWNrZXIobWFrZVVu
aXF1ZTxTcGVsbENoZWNrZXI+KGZyYW1lKSkKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAs
IG1fZWRpdG9yVUlVcGRhdGVUaW1lcigqdGhpcywgJkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1l
ckZpcmVkKQogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3RlbGVwaG9uZU51bWJlckRldGVjdGlvblVwZGF0ZVRp
bWVyKCp0aGlzLCAmRWRpdG9yOjpzY2FuU2VsZWN0aW9uRm9yVGVsZXBob25lTnVtYmVycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
aW5kZXggMGRkYzE1YmRjMGQzMDRmNDU0M2EwNTk2MmJjNmNjNzY0NWY1NDc5NC4uMmMyMDI4Y2M2
M2MxYjkzOGJjNjZmZjRiZWE1ODk5MjU4ZTlhNGE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE2MzEsNyArMTYzMSw3
IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnVwZGF0ZU5vZGVzSW5zZXJ0ZWQoTm9k
ZSAqbm9kZSkKIFJlcGxhY2VtZW50RnJhZ21lbnQqIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpl
bnN1cmVSZXBsYWNlbWVudEZyYWdtZW50KCkKIHsKICAgICBpZiAoIW1fcmVwbGFjZW1lbnRGcmFn
bWVudCkKLSAgICAgICAgbV9yZXBsYWNlbWVudEZyYWdtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZXBsYWNlbWVudEZyYWdtZW50PihtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIGVuZGluZ1NlbGVj
dGlvbigpKTsKKyAgICAgICAgbV9yZXBsYWNlbWVudEZyYWdtZW50ID0gbWFrZVVuaXF1ZTxSZXBs
YWNlbWVudEZyYWdtZW50PihtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIGVuZGluZ1NlbGVjdGlv
bigpKTsKICAgICByZXR1cm4gbV9yZXBsYWNlbWVudEZyYWdtZW50LmdldCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKaW5kZXgg
M2I0MDY4OGNiNGRhNjU2YjM0NDU4N2MwODg4NjM2YzBhYjE1NjZjZi4uZjliNjRjNWM4Yzg5NmJm
MzIyNjMwODcwOWYyNmFhNjY3ZTFlZDk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcApAQCAtODEsNyArODEsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpOb3RpZmllcj4gU2VsZWN0aW9uUmVjdEdhdGhl
cmVyOjpjbGVhckFuZAogICAgIG1fZ2FwUmVjdHMuY2xlYXIoKTsKICAgICBtX2lzVGV4dE9ubHkg
PSB0cnVlOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpZXI+KCp0aGlzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXgg
MTg5NmUxYTIyODFjMWE5YjA0NmU4ZWZhY2Q5MTE5YWY1ZTI3N2Q1Ni4uZjFkMTljMTAxMTRjMWE5
ODViOGI0MjZmYTY4ZmRiODEyMmE2MGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcApAQCAtNjUwLDcgKzY1MCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0Tm9kZSgpCiAgICAgICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gKG1fbm9kZSA9PSBtX2Vu
ZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9lbmRPZmZzZXQpIDogcmVuZGVy
ZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICBpZiAoIW1fZmxvd1J1blJlc29sdmVyQ2FjaGUgfHwg
Jm1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPmZsb3coKSAhPSAmYmxvY2tGbG93KSB7CiAgICAgICAg
ICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyA9IG1fZmxvd1J1blJlc29s
dmVyQ2FjaGUgPyAwIDogdGV4dE5vZGVPZmZzZXRJbkZsb3codGV4dE5vZGUpOwotICAgICAgICAg
ICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTGluZUxh
eW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7CisgICAgICAgICAgICBtX2Zs
b3dSdW5SZXNvbHZlckNhY2hlID0gbWFrZVVuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNv
bHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKICAgICAgICAgfQogICAgICAgICAvLyBTa2lwIHRv
IG1fb2Zmc2V0IHBvc2l0aW9uLgogICAgICAgICBhdXRvIHJhbmdlID0gbV9mbG93UnVuUmVzb2x2
ZXJDYWNoZS0+cmFuZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMGE4M2FjMDk1OTI3NGMwNzgwZDVk
N2IzODVmMDE5YzBlODZlM2M3NC4uOWNmODZhNGExNWYxYzdjNmYwMjgxNTU2NDdhZmEwMDU5YWUz
YjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQpAQCAtMzgwLDcgKzM4MCw3IEBAIEhUTUxDb252ZXJ0ZXI6OkhUTUxDb252ZXJ0ZXIoY29uc3Qg
UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogICAgIF9mbGFncy5yZWFjaGVk
U3RhcnQgPSBmYWxzZTsKICAgICBfZmxhZ3MucmVhY2hlZEVuZCA9IGZhbHNlOwogICAgIAotICAg
IF9jYWNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxDb252ZXJ0ZXJDYWNoZXM+KCk7CisgICAg
X2NhY2hlcyA9IG1ha2VVbmlxdWU8SFRNTENvbnZlcnRlckNhY2hlcz4oKTsKIH0KIAogSFRNTENv
bnZlcnRlcjo6fkhUTUxDb252ZXJ0ZXIoKQpAQCAtNTUxLDcgKzU1MSw3IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVu
dChFbGVtZW50JiBlCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fY29tcHV0ZWRTdHlsZXMuYWRkKCZl
bGVtZW50LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVkU3R5bGVFeHRy
YWN0b3I+KCZlbGVtZW50LCB0cnVlKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1ha2VVbmlxdWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1lbnQsIHRydWUpOwogICAg
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3ImIGNvbXB1dGVkU3R5bGUgPSAqcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKICAgICByZXR1cm4gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5
SWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIuaAppbmRleCAyNTc3ZDVhNzY5NjgxNjIyZjVkMGE3YjYzZmY0
ZDA5ZDg4Yzk1ZGMxLi4yOWM1YThkYTdlZTMyNTU2MTI2NTY5MDU0ZTMwMjIyOGE1MzAxODExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIuaApAQCAtMzcsNiArMzcsNyBAQCBPQkpDX0NMQVNTIE5TVmlldzsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIoKSB7IH0KICAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4KQEAgLTUy
LDYgKzUzLDcgQEAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKICAgICB2b2lk
IGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKIAogICAgIGNsYXNzIEFsZXJuYXRpdmVUZXh0Q29udGV4
dENvbnRyb2xsZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CiAgICAgICAgIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKSB7IH0KICAgICAg
ICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5h
dGl2ZXM+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZmI0MzcxNjMwM2FlMjVi
ODE5MjkyZDI3MWNhMmNhZTY4NGI5YzAyZS4uYzNjOGY4YjMyNGJmZWNkY2U5ZTVjNGViMTliNWI3
NDYwODkyOGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTc4LDcgKzE3OCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRl
bnQoKQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdlQ29uZmlndXJhdGlvbldp
dGhFbXB0eUNsaWVudHMoKTsKICAgICAKLSAgICBhdXRvIHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBhdXRvIHBhZ2UgPSBtYWtl
VW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICBwYWdlLT5zZXRJ
c0ZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRp
YUVuYWJsZWQoZmFsc2UpOwogICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXgg
YTA5NWVlYWU5YjJhNzk3YmRhYmFlMzQ5NDBmZGM2YTNjZTMwNDI0Yi4uZDU4MTEyZmY5YmRmNmNk
N2QxOTg1NTJkODY2OTkxZjg1YjdhMWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5
bmNGaWxlU3RyZWFtLmNwcApAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyB2b2lkIGNhbGxPbkZp
bGVUaHJlYWQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICAgICAgfSk7CiAgICAg
fSk7CiAKLSAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2
b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQobWFr
ZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5
bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQot
ICAgIDogbV9pbnRlcm5hbHMoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkpCisg
ICAgOiBtX2ludGVybmFscyhtYWtlVW5pcXVlPEludGVybmFscz4oY2xpZW50KSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5j
cHAKaW5kZXggOWFkM2RhOWVmZmYwZjNhNzA3YTA2MDFmNzg2MDFkNWQ4NjgyNThmNS4uOTlhN2I1
YzZmOTg3YTE0YmExOTA5NDU4OTg3YWU4NGVjZmM0ZjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmls
ZVJlYWRlcjo6cmVhZEludGVybmFsKEJsb2ImIGJsb2IsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRU
eXAKICAgICBtX3N0YXRlID0gTE9BRElORzsKICAgICBtX2Vycm9yID0gbnVsbHB0cjsKIAotICAg
IG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRUeXBl
LCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOworICAgIG1fbG9h
ZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2Fz
dDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOwogICAgIG1fbG9hZGVyLT5zZXRFbmNv
ZGluZyhtX2VuY29kaW5nKTsKICAgICBtX2xvYWRlci0+c2V0RGF0YVR5cGUobV9ibG9iLT50eXBl
KCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCA2YWU1NTJjYmNlZmJh
MzVhZjU0OTRhZDgwYTE0NzMxZDAwYWNhM2QxLi41YzhmMThlM2RhYjBlYjI1OTdhZDVlODIyMTM5
YmQ4OGZmMzI0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAt
MTYzLDcgKzE2Myw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAK
ICAgICAvLyBDcmVhdGUgdGhlIENhY2hlZEZyYW1lcyBmb3IgYWxsIEZyYW1lcyBpbiB0aGUgRnJh
bWVUcmVlLgogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQotICAgICAgICBt
X2NoaWxkRnJhbWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQp
KTsKKyAgICAgICAgbV9jaGlsZEZyYW1lcy5hcHBlbmQobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4o
KmNoaWxkKSk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5kb21XaW5kb3coKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7CkBAIC0xNzIsNyArMTcy
LDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFtZSkKICAgICAvLyBBY3Rp
dmUgRE9NIG9iamVjdHMgbXVzdCBiZSBzdXNwZW5kZWQgYmVmb3JlIHdlIGNhY2hlIHRoZSBmcmFt
ZSBzY3JpcHQgZGF0YS4KICAgICBtX2RvY3VtZW50LT5zdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNp
b246OlBhZ2VDYWNoZSk7CiAKLSAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2NyaXB0Q2FjaGVkRnJhbWVEYXRhPihmcmFtZSk7CisgICAgbV9jYWNoZWRGcmFt
ZVNjcmlwdERhdGEgPSBtYWtlVW5pcXVlPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4oZnJhbWUpOwog
CiAgICAgbV9kb2N1bWVudC0+ZG9tV2luZG93KCktPnN1c3BlbmRGb3JQYWdlQ2FjaGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggMDY4NmFlOGZlY2U0NGYxZWY2
OTBlNWY4ZjZhYmU4NDYxNDYzZGY3ZC4uOTc0N2E0MDQwMTZhYzg2OGQyZjc3OTZlNTMzMDQzNmZm
YTU4NzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC01Niw3ICs1
Niw3IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRl
ciwgY2FjaGVkUGFnZUNvdW50ZXIsICgiQ2FjaGVkCiBDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKFBh
Z2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fZXhwaXJhdGlvblRpbWUoTW9u
b3RvbmljVGltZTo6bm93KCkgKyBTZWNvbmRzKHBhZ2Uuc2V0dGluZ3MoKS5iYWNrRm9yd2FyZENh
Y2hlRXhwaXJhdGlvbkludGVydmFsKCkpKQotICAgICwgbV9jYWNoZWRNYWluRnJhbWUoc3RkOjpt
YWtlX3VuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkpCisgICAgLCBtX2NhY2hl
ZE1haW5GcmFtZShtYWtlVW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgpKSkKIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgY2FjaGVkUGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggMDAyOTY1NTg5MmQxNTRjYjUwNDNlMWRh
MjI4MjU4NzlmNjNlZGRlNS4uM2JhMjRiOWRlMmU5OTQxOTZhMGRmOTJmYzM2NjNjZWVhNWJmNGI5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBA
IGJvb2wgUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSog
cGFnZSkKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBp
biB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVh
ZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKKyAgICAgICAgaXRlbS5tX2NhY2hl
ZFBhZ2UgPSBtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKICAgICAgICAgaXRlbS5tX3By
dW5pbmdSZWFzb24gPSBQcnVuaW5nUmVhc29uOjpOb25lOwogICAgICAgICBtX2l0ZW1zLmFkZCgm
aXRlbSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggN2E5
OTFmMTdiMDNkODNlOTA1ZjdkM2UwNjA3YmY1MmE5OWI4MGU0NS4uYjE0ZDMxMDE1OGI2NDVmZTg2
OTlmN2Y5OWY0MTg1OGJkNTVhZTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
aWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbihj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgIG1fZmlsZUljb25Mb2FkZXItPmlu
dmFsaWRhdGUoKTsKIAogICAgIEZpbGVJY29uTG9hZGVyQ2xpZW50JiBjbGllbnQgPSAqdGhpczsK
LSAgICBtX2ZpbGVJY29uTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlSWNvbkxvYWRlcj4o
Y2xpZW50KTsKKyAgICBtX2ZpbGVJY29uTG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlSWNvbkxvYWRl
cj4oY2xpZW50KTsKIAogICAgIGNocm9tZS0+bG9hZEljb25Gb3JGaWxlcyhwYXRocywgKm1fZmls
ZUljb25Mb2FkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNz
b2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVs
ZW1lbnQuY3BwCmluZGV4IDgwNmU1ZjNkYWViZTI5NGUzMzAyMzBkZmE1ZWRlOGM5MmQ1OGMzMTgu
LjE3YzAyN2NmZGZhMWJiNDNiNjQ1ZWU2MmQ1OGM4YWMzMjA2ZDg3NjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTI3OSw3ICsyNzksNyBA
QCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3Ry
aW5nJiBlcnJvcikKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oYXNIVE1MRWxlbWVudCgpLmlzQ29ubmVjdGVkKCkpOwotICAgIG1fZm9ybUF0dHJpYnV0ZVRh
cmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1B
dHRyKSwgKnRoaXMpOworICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbWFrZVVu
aXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMpOwogfQogCiB2b2lkIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCBlYTViMDlhYWEwOGRiMjczOTYxYjk1
MzQyMmYwM2RkN2FkNmU0NjcxLi5kMGUwM2Y1NmNiMDYzZTI3ZjExMzQwYTI3MTNkNGY5NjFiNWFl
NjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIw
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4gU2F2ZWRGb3JtU3RhdGU6OmRl
c2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgc2l6ZV90IGl0ZW1Db3VudCA9IHN0
YXRlVmVjdG9yW2luZGV4KytdLnRvVUludCgpOwogICAgIGlmICghaXRlbUNvdW50KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKKyAgICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gbWFrZVVu
aXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAgICB3aGlsZSAoaXRlbUNvdW50LS0pIHsKICAgICAg
ICAgaWYgKGluZGV4ICsgMSA+PSBzdGF0ZVZlY3Rvci5zaXplKCkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTM2NSwxMyArMzY1LDEzIEBAIHN0YXRpYyBTdHJpbmcgZm9ybVN0YXRl
U2lnbmF0dXJlKCkKIHN0ZDo6dW5pcXVlX3B0cjxGb3JtQ29udHJvbGxlcjo6U2F2ZWRGb3JtU3Rh
dGVNYXA+IEZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1hcChjb25zdCBGb3Jt
RWxlbWVudExpc3RIYXNoU2V0JiBjb250cm9sTGlzdCkKIHsKICAgICBGb3JtS2V5R2VuZXJhdG9y
IGtleUdlbmVyYXRvcjsKLSAgICBhdXRvIHN0YXRlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZl
ZEZvcm1TdGF0ZU1hcD4oKTsKKyAgICBhdXRvIHN0YXRlTWFwID0gbWFrZVVuaXF1ZTxTYXZlZEZv
cm1TdGF0ZU1hcD4oKTsKICAgICBmb3IgKGF1dG8mIGNvbnRyb2wgOiBjb250cm9sTGlzdCkgewog
ICAgICAgICBpZiAoIWNvbnRyb2wtPnNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0
ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8mIGZvcm1TdGF0ZSA9IHN0
YXRlTWFwLT5hZGQoa2V5R2VuZXJhdG9yLmZvcm1LZXkoKmNvbnRyb2wpLmltcGwoKSwgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAoIWZvcm1TdGF0ZSkKLSAgICAgICAgICAg
IGZvcm1TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CisgICAgICAg
ICAgICBmb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwogICAgICAgICBm
b3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1lKCksIGNvbnRyb2wtPnR5
cGUoKSwgY29udHJvbC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CiAgICAgfQogICAgIHJldHVy
biBzdGF0ZU1hcDsKQEAgLTQwMyw3ICs0MDMsNyBAQCBGb3JtQ29udHJvbFN0YXRlIEZvcm1Db250
cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbAog
ICAgIGlmIChtX3NhdmVkRm9ybVN0YXRlTWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEZv
cm1Db250cm9sU3RhdGUoKTsKICAgICBpZiAoIW1fZm9ybUtleUdlbmVyYXRvcikKLSAgICAgICAg
bV9mb3JtS2V5R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtS2V5R2VuZXJhdG9yPigp
OworICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEZvcm1LZXlHZW5lcmF0
b3I+KCk7CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zYXZlZEZvcm1T
dGF0ZU1hcC5maW5kKG1fZm9ybUtleUdlbmVyYXRvci0+Zm9ybUtleShjb250cm9sKS5pbXBsKCkp
OwogICAgIGlmIChpdCA9PSBtX3NhdmVkRm9ybVN0YXRlTWFwLmVuZCgpKQogICAgICAgICByZXR1
cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcAppbmRleCAxMDQ3YzU4ZWVjMzUzNmUzZDM5OTNhN2I2ZTU4NjI1YjAxNTk1MmYxLi5l
YjliZDA2ODVkNTkyZWE2OTIzMTNhZDQxNmMyN2Q3ZjI4MjYxZjc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSFRN
TEFuY2hvckVsZW1lbnQ6Omhhc1JlbChSZWxhdGlvbiByZWxhdGlvbikgY29uc3QKIERPTVRva2Vu
TGlzdCYgSFRNTEFuY2hvckVsZW1lbnQ6OnJlbExpc3QoKSBjb25zdAogewogICAgIGlmICghbV9y
ZWxMaXN0KSB7Ci0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5M
aXN0Pihjb25zdF9jYXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJl
bEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3JlbExp
c3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oY29uc3RfY2FzdDxIVE1MQW5jaG9yRWxlbWVu
dCY+KCp0aGlzKSwgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcg
dG9rZW4pIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgICAgICAgICByZXR1cm4gZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm5vcmVmZXJyZXIiKSB8fCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKHRva2VuLCAibm9vcGVuZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRv
a2VuLCAiYXIiKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAK
aW5kZXggYWMwNzU4ZGU4M2IwNDg4MmE1ZDg5MjJmZDQwNTU0OGVmOTU2ZGNhMi4uNDlhYmZhNWY3
MGE3YWI5N2Q3M2UyYzgyYjc2N2IwNTM1MWFkZWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVudDo6
aW52YWxpZGF0ZUNhY2hlZFJlZ2lvbigpCiBib29sIEhUTUxBcmVhRWxlbWVudDo6bWFwTW91c2VF
dmVudChMYXlvdXRQb2ludCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlmIChtX2xhc3RTaXplICE9IHNpemUpIHsKLSAgICAg
ICAgbV9yZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7Cisg
ICAgICAgIG1fcmVnaW9uID0gbWFrZVVuaXF1ZTxQYXRoPihnZXRSZWdpb24oc2l6ZSkpOwogICAg
ICAgICBtX2xhc3RTaXplID0gc2l6ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKaW5kZXggYTliYjRmYjhlMDYzZTcwMTVmMWE2NGU3ZDg2ZmViMzU4
ZmZjMjdjZC4uODk0ZTYzOThiOGE0ZWNkZGVkZjllMTk4OGE0MTRjMTcxYjI4NjliYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTk1OSw3ICs5NTksNyBA
QCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKSBjbwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5z
ZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250
ZXh0KCkuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShkZWZhdWx0SW50ZXJwb2xhdGlvblF1
YWxpdHkpOwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Mo
MSk7Ci0gICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlcj4obV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX2NvbnRl
eHRTdGF0ZVNhdmVyID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2lt
YWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhIVE1M
RWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpKTsKICAgICBIVE1MRWxlbWVu
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlB
bGxvY2F0ZWQobWVtb3J5Q29zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAKaW5kZXggOTc2YzhlMGE5YTA2YTliODNkNmNhOTQxYmQ1ZGQzN2I5ZjMzODVjNS4uMzI4MTc2
YjY5ZThjZDFiZjIyZDRlNzYzMjdlOWYyOTI5NjhhYjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEhUTUxDb2xsZWN0aW9u
Ojp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVu
dENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0g
bWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKICAgICB1bnNpZ25l
ZCBzaXplID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGYx
NTc4NzRlNmQ1MzRlM2Y2MTM0ZTRhNWRmNGY1MWJlMmY2N2EzMWEuLjYwZGQxZmIyNTIwMzg2MGQz
ZDkyYTdhNWFjYjMzMWMyYWIwNGI1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgRGV0YWls
c1Nsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkK
IFJlZjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRv
IGRldGFpbHMgPSBhZG9wdFJlZigqbmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwotICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRv
Y3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOworICAg
IGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtl
VW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOwogICAgIHJldHVybiBkZXRhaWxzOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApp
bmRleCBkODg5M2IxZjA5NDllZjEwMmUyOWQwM2M1ODk2N2M0ZGQ0ZjNmZDVhLi5lMTUzMTZhMTll
ZWZiNDc3ZTNmMzY3YzgwZjdjM2MxYTJhNjM0Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpCiAg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpCiAgICAgICAgIG1lc3NhZ2UgPSB2
YWxpZGF0aW9uTWVzc2FnZSgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIGlmICghbV92YWxpZGF0
aW9uTWVzc2FnZSkKLSAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMpOworICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdl
ID0gbWFrZVVuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CiAgICAgbV92YWxpZGF0aW9u
TWVzc2FnZS0+dXBkYXRlVmFsaWRhdGlvbk1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXgg
NmVjMjJkNzc0OWYyZjc4YmQzMWVmNzdlYTYzNjA3M2I3MWM1OWZmMi4uYTJiMDBlOGY4MTZkYTFj
MjIxYjFjMzY2ZWE2ZTY4OWMzYjFjNjhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNv
bnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRD
YWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVt
ZW50Q2FjaGU+KCk7CiAKICAgICBIYXNoU2V0PEF0b21TdHJpbmdJbXBsKj4gZm91bmRJbnB1dEVs
ZW1lbnRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggYzc2
ZDQ5M2E2MmNlZDgzMDg4MDFiNmIwMWQzMzIxZTBhMzMzZjUxZC4uNDM1ZDk1MTRkZDI5ZGRkMWY2
ZGZiMWQxNjllMzQ3ZTMxNWEzMDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjphZGRUb1Bh
c3ROYW1lc01hcChGb3JtTmFtZWRJdGVtKiBpdGVtLCBjb25zdCBBdG9tU3RyaW5nJiBwCiAgICAg
aWYgKHBhc3ROYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9wYXN0
TmFtZXNNYXApCi0gICAgICAgIG1fcGFzdE5hbWVzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0
TmFtZXNNYXA+KCk7CisgICAgICAgIG1fcGFzdE5hbWVzTWFwID0gbWFrZVVuaXF1ZTxQYXN0TmFt
ZXNNYXA+KCk7CiAgICAgbV9wYXN0TmFtZXNNYXAtPnNldChwYXN0TmFtZS5pbXBsKCksIGl0ZW0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDAy
ZDdkNGU0ZmJlODZmNTI3MGY1ODRiNmE4ZGViOWJlNDZmOTdhYTkuLmIxYzgyMWRkOWJhYmEyYTIw
Y2IyOWUxYzFjZmQ5MGQ3MWZlYzU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFJlZjxIVE1MSUZyYW1lRWxlbWVudD4gSFRN
TElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiBE
T01Ub2tlbkxpc3QmIEhUTUxJRnJhbWVFbGVtZW50OjpzYW5kYm94KCkKIHsKICAgICBpZiAoIW1f
c2FuZGJveCkgewotICAgICAgICBtX3NhbmRib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2Vu
TGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4p
IHsKKyAgICAgICAgbV9zYW5kYm94ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBz
YW5kYm94QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAg
ICByZXR1cm4gU2VjdXJpdHlDb250ZXh0Ojppc1N1cHBvcnRlZFNhbmRib3hQb2xpY3kodG9rZW4p
OwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCAwYzI1Y2RkODBkNWY4YTc3MGExZDk3MDA1Nzg0N2E4OWM1NjgzZGJkLi4zNzZj
NTIxOTY0ZTBmNzFiNmZkOWMyMTcyZDYyMDFjMjkyNTdhMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBSZWY8SFRNTElucHV0
RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvYwogSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbWFn
ZUxvYWRlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9h
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAg
bV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCkBAIC0xNjQxLDcgKzE2NDEsNyBAQCBSZWZQdHI8
SFRNTERhdGFMaXN0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6ZGF0YUxpc3QoKSBjb25zdAog
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigp
CiB7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCi0gICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdl
dE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGlzdEF0dHIpLCB0aGlzKTsKKyAgICAg
ICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPExpc3RBdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0
ciksIHRoaXMpOwogICAgIGVsc2UKICAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXIgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmlu
ZGV4IGI4NjM0Y2FkYWZhMThhMGEyN2NjZjcyOGY5YmJmNTZjYjdmNzhkMTYuLmY2YTdiYzgwMjRm
ZmE1ZTRiZDcxZjY5YTI3Yzk3YzhjOTM2YmI0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6
c3R5bGVTaGVldElzTG9hZGluZygpIGNvbnN0CiBET01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxlbWVu
dDo6c2l6ZXMoKQogewogICAgIGlmICghbV9zaXplcykKLSAgICAgICAgbV9zaXplcyA9IHN0ZDo6
bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRyKTsKKyAgICAgICAgbV9z
aXplcyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRyKTsKICAgICBy
ZXR1cm4gKm1fc2l6ZXM7CiB9CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVyKiBldmVudFNlbmRlcikK
IERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpyZWxMaXN0KCkKIHsKICAgICBpZiAoIW1f
cmVsTGlzdCkgCi0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5M
aXN0PigqdGhpcywgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYgZG9jdW1lbnQsIFN0
cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9yZWxMaXN0ID0gbWFrZVVuaXF1ZTxET01Ub2tl
bkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiBkb2N1bWVudCwg
U3RyaW5nVmlldyB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuIExpbmtSZWxBdHRyaWJ1dGU6
OmlzU3VwcG9ydGVkKGRvY3VtZW50LCB0b2tlbik7CiAgICAgICAgIH0pOwogICAgIHJldHVybiAq
bV9yZWxMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
Zjc0MGNjYWMyNDJlOWUwZjNiYzhkZGM5NTc1ZmIzMmE0ZWYxOThhZi4uZjNhY2ZjZGUwMDA3YTI0
ZjI3NWE0Yzk1NGQ1MjUxMjA4Mzc4Mjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1l
ZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXphdGlvbigpCiB7Ci0gICAg
bV9tZWRpYVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhRWxlbWVudFNlc3Npb24+KCp0
aGlzKTsKKyAgICBtX21lZGlhU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TWVkaWFFbGVtZW50U2Vzc2lv
bj4oKnRoaXMpOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7CiAg
ICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vz
c2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwpAQCAtMzAyNyw3ICszMDI3LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRp
bWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0KIAogICAgIC8vIDUgLSBJZiB0aGUgc2VlayB3YXMg
aW4gcmVzcG9uc2UgdG8gYSBET00gbWV0aG9kIGNhbGwgb3Igc2V0dGluZyBvZiBhbiBJREwgYXR0
cmlidXRlLCB0aGVuIGNvbnRpbnVlCiAgICAgLy8gdGhlIHNjcmlwdC4gVGhlIHJlbWFpbmRlciBv
ZiB0aGVzZSBzdGVwcyBtdXN0IGJlIHJ1biBhc3luY2hyb25vdXNseS4KLSAgICBtX3BlbmRpbmdT
ZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2ZVRv
bGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOworICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5p
cXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRv
bGVyYW5jZSk7CiAgICAgaWYgKGZyb21ET00pIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUiwgImVucXVldWluZyBzZWVrIGZyb20gIiwgbm93LCAiIHRvICIsIHRpbWUpOwogICAgICAg
ICBtX3NlZWtUYXNrUXVldWUuc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVu
dDo6c2Vla1Rhc2ssIHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
aW5kZXggZDBiYWI5ZmM5ZDZlZGExYzFiYzJhNjA5NjgzZjI3NmZlNzYwM2NmOC4uZjI0ZTg3NmEx
M2I2MTU1OWUyYzk5NWJiYTRhNWU0NTIzNDk3MDA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKQEAgLTk5MCw2ICs5OTAsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50
CiAgICAgUmVmUHRyPE1lZGlhRXJyb3I+IG1fZXJyb3I7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1Nl
ZWsgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBl
bmRpbmdTZWVrKGNvbnN0IE1lZGlhVGltZSYgbm93LCBjb25zdCBNZWRpYVRpbWUmIHRhcmdldFRp
bWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlhVGltZSYg
cG9zaXRpdmVUb2xlcmFuY2UpCiAgICAgICAgICAgICA6IG5vdyhub3cpCiAgICAgICAgICAgICAs
IHRhcmdldFRpbWUodGFyZ2V0VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxl
bWVudC5jcHAKaW5kZXggZGQ0ZmEyZDcwZTRmNDNmNDJiODIyMmQzN2Q0NDE4ZjFhMTMxZWQ4Ny4u
NTZiNzIwNmFlM2JlOGYxMGE4ODE0YWU5YWZhYzYyYmZlYjU2MDlhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEhU
TUxPdXRwdXRFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIERP
TVRva2VuTGlzdCYgSFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IoKQogewogICAgIGlmICghbV90
b2tlbnMpCi0gICAgICAgIG1fdG9rZW5zID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+
KCp0aGlzLCBmb3JBdHRyKTsKKyAgICAgICAgbV90b2tlbnMgPSBtYWtlVW5pcXVlPERPTVRva2Vu
TGlzdD4oKnRoaXMsIGZvckF0dHIpOwogICAgIHJldHVybiAqbV90b2tlbnM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGRkYTk0
NDlkNTdhZDQyMDg1ODYyN2RlZDNmZGQ5MTgxMzIxNWZlMmIuLjViOTlkNTU1NTMwNDk3MDkzYzZi
Y2E5OTU4N2M3YTJmNzI1NTkwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24oKQogICAgIGlmIChyZW5kZXJl
cigpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgewogICAgICAgICBpZiAoaXNJbWFnZVR5cGUo
KSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAgIG1f
aW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwor
ICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRl
cj4oKnRoaXMpOwogICAgICAgICAgICAgaWYgKG1fbmVlZHNJbWFnZVJlbG9hZCkKICAgICAgICAg
ICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNF
cnJvcigpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFy
eUVsZW1lbnQuY3BwCmluZGV4IDEwYmMwOWZmMDk5Yzg4OGIyMjYyNjkzOTBiOGUxZjhiZTRjZTM5
NjcuLmIwNDkzOWI5YzJkNzI3MDIxMzc5YzVhNGRkMzQwNDdkODEyYWQ5NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgY2xh
c3MgU3VtbWFyeVNsb3RFbGVtZW50IGZpbmFsIDogcHVibGljIFNsb3RBc3NpZ25tZW50IHsKIFJl
ZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWY8SFRN
TFN1bW1hcnlFbGVtZW50PiBzdW1tYXJ5ID0gYWRvcHRSZWYoKm5ldyBIVE1MU3VtbWFyeUVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAgICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRv
d1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1l
bnQ+KCkpKTsKKyAgICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShk
b2N1bWVudCwgbWFrZVVuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsKICAgICByZXR1cm4g
c3VtbWFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5k
ZXggYTVlNzVhYWZmNTJkZGY5ZjU3NTQ1YmEwNjdlZWM3ODk4ODhkZDlhYi4uNjdmZjIxMjUyZjFi
OGU4MzEwYTFkN2NiYjIzMmVhOGM3MzkzOGEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKICAgICBpZiAo
c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVy
KQotICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdl
TG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxI
VE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJv
bUVsZW1lbnQoKTsKICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5pbWFnZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1hZ2Uo
bV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBIVE1MVmlk
ZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tU3RyaW4KIAogICAgICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsK
ICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAgICBtX2ltYWdl
TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAg
ICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0
aGlzKTsKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3Jp
bmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoYXV0
byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGlj
VVJMTWFuYWdlci5jcHAKaW5kZXggZDViOWJlZGJhZDA0NzA0NjFhNThhYjVjYjAxNGE2OGMwNDdk
N2ZiMC4uODU0NTFkMTQzNzBlMjRjZDdkNGRkNTY5MDE0NjM3MzVhZDY4MzA0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFB1YmxpY1VSTE1hbmFnZXI+IFB1Ymxp
Y1VSTE1hbmFnZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewot
ICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHVibGljVVJMTWFu
YWdlcj4oY29udGV4dCk7CisgICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0gbWFrZVVuaXF1ZTxQ
dWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKICAgICBwdWJsaWNVUkxNYW5hZ2VyLT5zdXNwZW5k
SWZOZWVkZWQoKTsKICAgICByZXR1cm4gcHVibGljVVJMTWFuYWdlcjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggOGFmNzNhOGEwMDU0OTgwYWQxNzkw
Njk1NmE4NDMyYTZmOWNkYjE0Yi4uZjVkYWIwZjQyZjJkMDUzZTcwM2M2YzU3MjNjYTE2MDM3MWQx
YTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTEx
NSw5ICsxMTUsOSBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICBtX21l
c3NhZ2UgPSBtZXNzYWdlOwogICAgIGlmICghbV9idWJibGUpCi0gICAgICAgIG1fdGltZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1
YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZW
YWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKTsKICAgICBlbHNlCi0gICAgICAgIG1f
dGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdl
OjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5p
cXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3Rh
cnRUaW1lcik7CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKQEAgLTE0Myw3
ICsxNDMsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRU
aW1lcigpCiAgICAgaWYgKG1hZ25pZmljYXRpb24gPD0gMCkKICAgICAgICAgbV90aW1lciA9IG51
bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRp
bWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKKyAgICAg
ICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6
OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjpt
YXgoNV9zLCAxX21zICogc3RhdGljX2Nhc3Q8ZG91YmxlPihtX21lc3NhZ2UubGVuZ3RoKCkpICog
bWFnbmlmaWNhdGlvbikpOwogICAgIH0KIH0KQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFZhbGlk
YXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSgpCiAgICAgfQogCiAgICAgLy8gV2Ug
bXVzdCBub3QgbW9kaWZ5IHRoZSBET00gdHJlZSBpbiB0aGlzIGNvbnRleHQgYnkgdGhlIHNhbWUg
cmVhc29uIGFzIHNldE1lc3NhZ2UoKS4KLSAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxU
aW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CisgICAg
bV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRl
bGV0ZUJ1YmJsZVRyZWUpOwogICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGIxNjc3ODQ0MjhjM2JmZTllNmYxNmE3Nzg0MGQzZjNi
Yjk3MDViOTYuLjUzYzljNTY2MDQyN2M0ODZlMzJhYmMwYzJkNjU0Y2NjNTZjMDI4YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0cnVjdCBEaXNwbGF5TGlzdERy
YXdpbmdDb250ZXh0IHsKIAogICAgIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCiAgICAgICAg
IDogY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4o
ZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRyYW5z
Zm9ybSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNv
cmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmlu
ZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSkKICAgICB7CiAgICAgfQpAQCAtMjExOCw3ICsyMTE4
LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3
aW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKFVOTElLRUxZKG1fdXNlc0Rpc3BsYXlMaXN0
RHJhd2luZykpIHsKICAgICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRleHQpCi0gICAgICAgICAg
ICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0RHJhd2lu
Z0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6
ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29u
dGV4dCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250
ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNp
emUoKSkpOwogICAgICAgICByZXR1cm4gJm1fcmVjb3JkaW5nQ29udGV4dC0+Y29udGV4dDsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHAKaW5kZXggNjMxMTkxNzU3MGYyZGIyODU5NGNiYjM0OTAyNDY5OTdiNTgz
ZmJlMC4uY2Q0NzIxMjYxYjJlMDIyYjU1MjVkZDNkM2NhNTQ2OWY5YzBiM2VhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTEzNTksNyArMTM1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2RlZmluZSBFTkFCTEVf
SUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgY2FuRW5hYmxlKSBcCiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgbmFtZUxpdGVyYWwpKSB7IFwKICAg
ICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFi
bGUpID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCisgICAgICAg
ICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0eXBlPigqdGhpcykgOiBu
dWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAgICAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0
aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGUwNmJmOTlkNTkxNTk2Mzk4
MGE2MTFjMzJhODM5ZTI5N2YxMjgwNDUuLmU1ZmRlNzAzMzc0NTZhMzFlMTU3MWVlMTBmM2ZkMjY0
MmRiMDM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAj
ZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBj
YW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0
ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlh
YmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxw
dHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5
cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxs
cHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFi
bGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApAQCAtMTMyLDcgKzEzMiw3
IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9E
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9s
b2QiX3MpOwotICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1f
ZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG1ha2VVbmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRo
aXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxl
RXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU5
LDcgKzE1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdC
dWZmZXJzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiX3MpOwotICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fd2ViZ2xE
cmF3QnVmZmVycyA9IG1ha2VVbmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOwogICAgICAg
ICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0
aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBA
IFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9
IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlz
Il9zKTsKLSAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gc3RkOjptYWtl
X3VuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1f
YW5nbGVJbnN0YW5jZWRBcnJheXMgPSBtYWtlVW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigq
dGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFi
bGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCmluZGV4IDNlY2U3ZWViNzQyZmFkYjZmZTE4YjMzZWI1YTYxMzljZWQ0MWJhNTYu
LmQxNjZmYjIzOTA3NmQzNjI2NWQ5NmM2NDVmMDcxODc1YWM4MmJiMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCkBAIC03OTksOCArNzk5LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpp
bml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBjYW52
YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogICAgIG1fY29udGV4dC0+c2Np
c3NvcigwLCAwLCBjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogCi0g
ICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7Ci0gICAgbV9jb250ZXh0LT5z
ZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0LT5zZXRDb250
ZXh0TG9zdENhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxi
YWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhtYWtl
VW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncygpCkBAIC0x
NTc5LDcgKzE1NzksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVT
aGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0
Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2so
SlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGVycm9y
IDogZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpLnNwbGl0KCdcbicpKQotICAgICAgICAgICAgY2Fu
dmFzLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlw
ZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFj
ZS5jb3B5UmVmKCkpKTsKKyAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25zb2xl
TWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldl
YkdMOiAiICsgZXJyb3IsIHN0YWNrVHJhY2UuY29weVJlZigpKSk7CiAgICAgfQogfQogCkBAIC01
ODA4LDkgKzU4MDgsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9D
b25zb2xlKE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJgogICAgIC8vIEVycm9yIG1l
c3NhZ2VzIGNhbiBvY2N1ciBkdXJpbmcgZnVuY3Rpb24gY2FsbHMsIHNvIHNob3cgc3RhY2sgdHJh
Y2VzIGZvciB0aGVtLgogICAgIGlmIChsZXZlbCA9PSBNZXNzYWdlTGV2ZWw6OkVycm9yKSB7CiAg
ICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IEluc3Bl
Y3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSk7
Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2cs
IGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICAgICAgY29uc29sZU1l
c3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUo
c3RhY2tUcmFjZSkpOwogICAgIH0gZWxzZQotICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVu
ZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSk7CisgICAgICAgIGNvbnNv
bGVNZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlKTsKIAog
ICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKICAgICBpZiAoY2FudmFzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGU4
NTkwY2NjNjk3MjhhZjM5MzAxZDNhZThkODk4OGY1YzE1YTRiMmEuLmFlZmU0NTdmNGVmZjA0MzY1
NzYzY2IyNmY3MTc4NDYzZTMyZTFkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENTU1By
ZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
cGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2Nhbm5lciB2aWEgc2NhbigpOiB3aXRob3V0
IGl0IHdlIHdpbGwgZ2V0IHJlbGF0aXZlIFVSTHMgd3JvbmcuCiAgICAgICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIHRoaXMgYmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGluIHRoZSBwcmVsb2FkIHJl
cXVlc3Q/Ci0gICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQ
cmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNl
OjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNj
cmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOworICAgICAgICAgICAgbV9y
ZXF1ZXN0cy0+YXBwZW5kKG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJh
c2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5n
KCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1w
dHlTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAgICBtX3N0YXRlID0gSW5pdGlhbDsKICAgICB9
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJ1bGUsICJjaGFyc2V0Iikp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5jcHAKaW5kZXggNTFiYWU0YzIxY2Y5NDBkY2Q4YzZkMzIwYmM0ZGJkNjYyNmJlN2Q5Zi4uOWFj
NDQ0ZWYwYTY3MWY4YTQ3Njk5NTdhZTMyMjJiZDhkMTAwN2Q5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNTAzLDcg
KzUwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4g
SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxFCiAgICAgSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlKiBlbGVtZW50SW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSh0
b2tlbiwgJmVsZW1lbnRJbnRlcmZhY2UpOwogICAgIGlmIChVTkxJS0VMWShlbGVtZW50SW50ZXJm
YWNlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0
cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJmYWNlLCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9r
ZW4uYXR0cmlidXRlcygpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rpb25EYXRhPigqZWxlbWVudEludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBXVEZN
b3ZlKHRva2VuLmF0dHJpYnV0ZXMoKSkpOwogICAgIGF0dGFjaExhdGVyKGN1cnJlbnROb2RlKCks
ICplbGVtZW50KTsKICAgICBtX29wZW5FbGVtZW50cy5wdXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0
ZShlbGVtZW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUodG9rZW4pKSk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcAppbmRleCA0ZmY0ZTJiODc4OGE5MTliZjQyZDE3YWQ5ZmQ2NTFiOWIwM2FkMTli
Li5kZDllYTA0YzZmNTAwYzg2NGI4Yzk0YzE5MzgzNzg3N2FmZmRlNWMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTUzLDEx
ICs1MywxMSBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50
KQogICAgICwgbV9vcHRpb25zKGRvY3VtZW50KQogICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25z
KQotICAgICwgbV9zY3JpcHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MU2NyaXB0UnVubmVy
Pihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhvc3QmPigqdGhpcykpKQot
ICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRo
aXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCi0gICAgLCBt
X3BhcnNlclNjaGVkdWxlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+KCp0
aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVyKG1ha2VVbmlxdWU8SFRNTFNjcmlwdFJ1bm5lcj4o
ZG9jdW1lbnQsIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0Jj4oKnRoaXMpKSkKKyAg
ICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBkb2N1
bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQorICAgICwgbV9wYXJzZXJT
Y2hlZHVsZXIobWFrZVVuaXF1ZTxIVE1MUGFyc2VyU2NoZWR1bGVyPigqdGhpcykpCiAgICAgLCBt
X3hzc0F1ZGl0b3JEZWxlZ2F0ZShkb2N1bWVudCkKLSAgICAsIG1fcHJlbG9hZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8SFRNTFJlc291cmNlUHJlbG9hZGVyPihkb2N1bWVudCkpCisgICAgLCBtX3ByZWxv
YWRlcihtYWtlVW5pcXVlPEhUTUxSZXNvdXJjZVByZWxvYWRlcj4oZG9jdW1lbnQpKQogewogfQog
CkBAIC03MCw3ICs3MCw3IEBAIGlubGluZSBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVu
dFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVuCiAgICAgOiBTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9jdW1lbnQoKSwgcmF3UG9saWN5KQogICAgICwg
bV9vcHRpb25zKGZyYWdtZW50LmRvY3VtZW50KCkpCiAgICAgLCBtX3Rva2VuaXplcihtX29wdGlv
bnMpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRyZWVCdWlsZGVy
PigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCks
IG1fb3B0aW9ucykpCisgICAgLCBtX3RyZWVCdWlsZGVyKG1ha2VVbmlxdWU8SFRNTFRyZWVCdWls
ZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5
KCksIG1fb3B0aW9ucykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShmcmFnbWVudC5kb2N1
bWVudCgpKQogewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3N5bnRheC5odG1sI3BhcnNpbmctaHRtbC1mcmFnbWVudHMKQEAgLTMxNSw3ICszMTUsNyBAQCB2
b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9k
ZSkKICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CiAgICAgICAgIEFTU0VSVChtX3Rv
a2VuaXplci5pc0luRGF0YVN0YXRlKCkpOwogICAgICAgICBpZiAoIW1fcHJlbG9hZFNjYW5uZXIp
IHsKLSAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQ
cmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0gbWFr
ZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCks
IGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICAgICAgbV9wcmVsb2Fk
U2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOwogICAgICAgICB9CiAgICAg
ICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CkBA
IC0zNzQsNyArMzc0LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChTZWdtZW50
ZWRTdHJpbmcmJiBzb3VyY2UpCiAgICAgICAgIC8vIENoZWNrIHRoZSBkb2N1bWVudC53cml0ZSgp
IG91dHB1dCB3aXRoIGEgc2VwYXJhdGUgcHJlbG9hZCBzY2FubmVyIGFzCiAgICAgICAgIC8vIHRo
ZSBtYWluIHNjYW5uZXIgY2FuJ3QgZGVhbCB3aXRoIGluc2VydGlvbnMuCiAgICAgICAgIGlmICgh
bV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lcikKLSAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9h
ZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25z
LCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7Cisg
ICAgICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJl
bG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5h
cHBlbmRUb0VuZChzb3VyY2UpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5z
Y2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKaW5kZXggMzBjNWI0NmRmMTAzZGJk
ZjZmNGI3Y2U0MDljYzNhYTE2YzU0NjAxMi4uNmVmMTcxMmI5ZDYzYjcxYWNiN2MxNjlmNjJiNDlj
ODJmMzEwNTgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVs
ZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1l
bnRTdGFjay5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6Omlu
c2VydEFib3ZlKFJlZjxIVE1MU3RhY2tJdGVtPiYmIGl0ZW0sIEVsZW1lbnRSZWNvcmQmIHJlYwog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgKyttX3N0YWNrRGVwdGg7Ci0gICAgICAg
IHJlY29yZEFib3ZlLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJlY29yZD4oV1RG
TW92ZShpdGVtKSwgcmVjb3JkQWJvdmUtPnJlbGVhc2VOZXh0KCkpKTsKKyAgICAgICAgcmVjb3Jk
QWJvdmUtPnNldE5leHQobWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBy
ZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkpOwogICAgICAgICByZWNvcmRBYm92ZS0+bmV4dCgp
LT5lbGVtZW50KCkuYmVnaW5QYXJzaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnB1c2hDb21tb24o
UmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSkKICAgICBBU1NFUlQobV9yb290Tm9kZSk7CiAKICAg
ICArK21fc3RhY2tEZXB0aDsKLSAgICBtX3RvcCA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJl
Y29yZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShtX3RvcCkpOworICAgIG1fdG9wID0gbWFrZVVu
aXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CiB9CiAK
IHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wQ29tbW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDUzYTE3MmQzM2FmY2Rh
OGZmODhkMzQ0ZDljMGVmMDkwM2NkZWNjOTIuLjMzZDdiM2JiMDhiNjUyZDBjZDY5YmNlZGYxZjg2
MDYzMWFmYWExNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFRva2VuUHJlbG9hZFNj
YW5uZXI6OlN0YXJ0VGFnU2Nhbm5lciB7CiAgICAgICAgIGlmICghTGlua0xvYWRlcjo6aXNTdXBw
b3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgbV90eXBlQXR0cmlidXRlKSkKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8
UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91cmxUb0xvYWQsIHByZWRp
Y3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0ZSwgbV9tb2R1bGVTY3Jp
cHQsIG1fcmVmZXJyZXJQb2xpY3kpOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVl
PFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JGb3IobV90YWdJZCksIG1fdXJsVG9Mb2FkLCBwcmVk
aWN0ZWRCYXNlVVJMLCB0eXBlLnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1dGUsIG1fbW9kdWxlU2Ny
aXB0LCBtX3JlZmVycmVyUG9saWN5KTsKICAgICAgICAgcmVxdWVzdC0+c2V0Q3Jvc3NPcmlnaW5N
b2RlKG1fY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICAgICAgcmVxdWVzdC0+c2V0Tm9uY2UobV9ub25j
ZUF0dHJpYnV0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXgg
ZjcxYjIxZDI3ODk1ZTU3OGFiNDdmNWNmNTQwMjU4M2UzNjEyMWQwMi4uM2Y3NDZkYzZkNjY3YzQz
NzExYjY4ZDA5YjQyMDJkMjNmZjBjMDg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRva2VuLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2lu
RE9DVFlQRSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBt
X3R5cGUgPSBET0NUWVBFOwotICAgIG1fZG9jdHlwZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERv
Y3R5cGVEYXRhPigpOworICAgIG1fZG9jdHlwZURhdGEgPSBtYWtlVW5pcXVlPERvY3R5cGVEYXRh
PigpOwogfQogCiBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9DVFlQRShVQ2hhciBjaGFy
YWN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGFj
NmU3OTQ0MzAwNzAzNjQyMWViMTZkZjgzYTkwZDNkMjc3MmY4NTYuLjA2MWQ5NTY3Yjc4NGQ5YjBi
YWNmM2Y2ZGI5Y2RlNWE4MDZiMDFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hT
U0F1ZGl0b3IuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhTU0luZm8+
IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWUK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGRpZEJsb2NrRW50aXJlUGFnZSA9
IG1feHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb246OkJsb2NrRW5hYmxl
ZDsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJMLCBk
aWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8WFNTSW5mbz4obV9kb2N1bWVudFVSTCwgZGlkQmxvY2tFbnRp
cmVQYWdlLCBtX2RpZFNlbmRWYWxpZFhTU1Byb3RlY3Rpb25IZWFkZXIpOwogfQogCiBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlclN0YXJ0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1
ZXN0KQpAQCAtNzEyLDcgKzcxMiw3IEBAIFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4qIFhTU0F1
ZGl0b3I6OmRlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUoKQogICAgIGNvbnN0IHVuc2lnbmVkIHN1
ZmZpeFRyZWVEZXB0aCA9IDU7CiAKICAgICBpZiAoIW1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJl
ZSAmJiBtX2RlY29kZWRIVFRQQm9keS5sZW5ndGgoKSA+PSBtaW5pbXVtTGVuZ3RoRm9yU3VmZml4
VHJlZSkKLSAgICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4
VHJlZURlcHRoKTsKKyAgICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0gbWFrZVVu
aXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4
VHJlZURlcHRoKTsKICAgICByZXR1cm4gbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlLmdldCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAzYTYzN2RhZWYwMTI0ZTJlNGVkMzM2YjY2Mzc1MmQw
MDIyYjViZTAxLi5kNTY2YmNjNzk0YWE3MjRhYmU2MGEwODBhM2YyY2Y5NTFmNDUzN2M3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxv
Y2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25zdAogT3B0aW9u
YWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0
b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0
eWxlKTsKLSAgICByZXR1cm4gRWxlbWVudFN0eWxlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5
bGU+KFdURk1vdmUoc3R5bGUpKSk7CisgICAgcmV0dXJuIEVsZW1lbnRTdHlsZShtYWtlVW5pcXVl
PFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOwogfQogCiAvLyBNQVJLOiBUZXh0Q29udHJv
bFBsYWNlaG9sZGVyRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggZTQwMjAwYTlhN2EyMjVkZGZkODc0NGQ4
YzkzYmRlNjkwOTY0NzAwOS4uNDkzNGQ3MjljMTk4ZDA4MDU5YWM4YzlmMGIxNzRhOTVlNzZmNzJm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNU
ZXh0VHJhY2suY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYgY3VlKQogV2ViVlRUUGFy
c2VyJiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICghbV93ZWJW
VFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJW
VFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8
V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFj
ay5jcHAKaW5kZXggODU1YmIyMzkyN2ViMTBhMzVhNTlkMTJiZTBkMjM1YTczY2FiYzEwZS4uMTBm
YWExMmY5MGI0NjBiNTA1NmYyNTY3Y2MyZDk4MTI3ZDhmYWE4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6On5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKSA9
IGRlZmF1bHQ7CiBXZWJWVFRQYXJzZXImIEluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKCkK
IHsKICAgICBpZiAoIW1fd2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dlYlZUVFBhcnNlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGll
bnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV93ZWJWVFRQ
YXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2Vy
Q2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICpt
X3dlYlZUVFBhcnNlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRh
YmxlVGV4dFRyYWNrLmNwcAppbmRleCA4ZjI5YzdmMTY3OWEwZmEyOTE4ZGVjZmE1MTNlMmQ4MDI3
MWEzNWUyLi43YTFlMWJjNDY5MWIyMTE2ODhjM2NmNWRhNjE5YWM2MWRiZDZmZTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtODQs
NyArODQsNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCgpCiAgICAg
Ly8gNC4gRG93bmxvYWQ6IElmIFVSTCBpcyBub3QgdGhlIGVtcHR5IHN0cmluZywgcGVyZm9ybSBh
IHBvdGVudGlhbGx5IENPUlMtZW5hYmxlZCBmZXRjaCBvZiBVUkwsIHdpdGggdGhlCiAgICAgLy8g
bW9kZSBiZWluZyB0aGUgc3RhdGUgb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBjcm9zc29yaWdpbiBj
b250ZW50IGF0dHJpYnV0ZSwgdGhlIG9yaWdpbiBiZWluZyB0aGUKICAgICAvLyBvcmlnaW4gb2Yg
dGhlIG1lZGlhIGVsZW1lbnQncyBEb2N1bWVudCwgYW5kIHRoZSBkZWZhdWx0IG9yaWdpbiBiZWhh
dmlvdXIgc2V0IHRvIGZhaWwuCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRU
cmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBz
dGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1
bWVudCgpKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3Rh
dGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7CiAgICAg
aWYgKCFtX2xvYWRlci0+bG9hZChtX3VybCwgKm1fdHJhY2tFbGVtZW50KSkKICAgICAgICAgbV90
cmFja0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZChIVE1MVHJhY2tFbGVtZW50OjpGYWlsdXJlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAK
aW5kZXggMDMxMDgwZTFhYjY2ZDMyY2M5YzA3MTc4ZjAyZjkzNTIzYmM3MDZiMC4uOTAyOWI5MmQ4
YjgzZjJkN2JlZDZkOGU1NDU3NmMwYTE2OGNhNTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPENv
bW1hbmRMaW5lQVBJSG9zdD4gQ29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGUoKQogfQogCiBDb21t
YW5kTGluZUFQSUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCgpCi0gICAgOiBtX2luc3BlY3RlZE9i
amVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpKQorICAgIDogbV9pbnNw
ZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKSkKIHsKIH0KIApAQCAt
MTk2LDcgKzE5Niw3IEBAIEpTVmFsdWUgQ29tbWFuZExpbmVBUElIb3N0Ojp3cmFwcGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIENvbW1hbmRMaW5l
QVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycygpCiB7CiAgICAgbV93cmFwcGVycy5jbGVhckFsbFdy
YXBwZXJzKCk7Ci0gICAgbV9pbnNwZWN0ZWRPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RhYmxlT2JqZWN0PigpOworICAgIG1faW5zcGVjdGVkT2JqZWN0ID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0YWJsZU9iamVjdD4oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA2YzMxZTQ5OGU0MzRkMzAwYjBmMWM2ZWFi
ODQzNDY3NzZjZjBhMmZjLi44Mzg5MDhkYzkzNmVmYTZiYTI2Yzc5MTY3MTQ0ZGI3ZGU5ZTJhZTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtODksNyArODksNyBA
QCBjbGFzcyBET01FZGl0b3I6Okluc2VydEJlZm9yZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBlcmZvcm0oKSBm
aW5hbAogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAg
ICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFj
dGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOworICAgICAgICAgICAgbV9yZW1v
dmVDaGlsZEFjdGlvbiA9IG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KCptX25vZGUtPnBh
cmVudE5vZGUoKSwgbV9ub2RlKTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9yZW1vdmVD
aGlsZEFjdGlvbi0+cGVyZm9ybSgpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsK
QEAgLTM4NSwyNyArMzg1LDI3IEBAIERPTUVkaXRvcjo6fkRPTUVkaXRvcigpID0gZGVmYXVsdDsK
IAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRCZWZvcmUoTm9kZSYgcGFyZW50
Tm9kZSwgUmVmPE5vZGU+JiYgbm9kZSwgTm9kZSogYW5jaG9yTm9kZSkKIHsKLSAgICByZXR1cm4g
bV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBh
cmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0
b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUsIFdU
Rk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRp
dG9yOjpyZW1vdmVDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBOb2RlJiBub2RlKQogewotICAgIHJl
dHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9u
PihwYXJlbnROb2RlLCBub2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VV
bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsKIH0KIAogRXhjZXB0
aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVu
dCwgbmFtZSwgdmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1
ZTxTZXRBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3Rk
OjptYWtlX3VuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKKyAg
ICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rp
b24+KGVsZW1lbnQsIG5hbWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpz
ZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYgbmV3Tm9k
ZSkKIHsKLSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2V0T3V0ZXJIVE1MQWN0
aW9uPihub2RlLCBodG1sKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VVbmlxdWU8U2V0T3V0ZXJI
VE1MQWN0aW9uPihub2RlLCBodG1sKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwog
ICAgIGF1dG8gcmVzdWx0ID0gbV9oaXN0b3J5LnBlcmZvcm0oV1RGTW92ZShhY3Rpb24pKTsKICAg
ICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTQxNSwyMiArNDE1LDIyIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0
cmluZyYgaHRtbCwgTm9kZSomCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5zZXJ0
QWRqYWNlbnRIVE1MKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0
IFN0cmluZyYgaHRtbCkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtl
X3VuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7
CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8SW5zZXJ0QWRqYWNlbnRI
VE1MQWN0aW9uPihlbGVtZW50LCB3aGVyZSwgaHRtbCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQoVGV4dCYgdGV4dE5vZGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1
ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCkpOworICAgIHJldHVybiBt
X2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHRO
b2RlLCB0ZXh0KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZUNo
aWxkKE5vZGUmIHBhcmVudE5vZGUsIFJlZjxOb2RlPiYmIG5ld05vZGUsIE5vZGUmIG9sZE5vZGUp
CiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFj
ZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdOb2RlKSwgb2xkTm9kZSkp
OworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlcGxhY2VDaGlsZE5v
ZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobmV3Tm9kZSksIG9sZE5vZGUpKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXROb2RlVmFsdWUoTm9kZSYgbm9kZSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjpt
YWtlX3VuaXF1ZTxTZXROb2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CisgICAgcmV0dXJu
IG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2
YWx1ZSkpOwogfQogCiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUVycm9yU3RyaW5nKEV4Y2VwdGlvbk9y
PHZvaWQ+JiYgcmVzdWx0LCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDIwZGEzNDMwYzE1Yzg1NTE0
ODVjNTczOGM1NDdmYTBjMzQzMWExYmEuLjJlOWQ3NTU2NTVjODNlZjg4MTU5NmFhZDIwYzk2ZTEw
ZTY4ODI2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEm
IHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0Y2hT
dXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUmIG5vZGUs
IFVudXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IHN0
ZDo6bWFrZV91bmlxdWU8RGlnZXN0PigpOworICAgIGF1dG8gZGlnZXN0ID0gbWFrZVVuaXF1ZTxE
aWdlc3Q+KCk7CiAgICAgZGlnZXN0LT5ub2RlID0gJm5vZGU7CiAgICAgU0hBMSBzaGExOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5k
ZXggNTIwMzcwNmI1M2IzMmIwYmE0ZjBlZDRkNGJhNDAwYjZjNzliNWUxNS4uNjNmZjNhYjYyM2E0
NDZjZDYyMGVlNDdlMzkyMDU1Y2VhNTFhODc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtOTMsMTAgKzkzLDEwIEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNv
bnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCiAg
ICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0
aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVh
dGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVj
dGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkp
KQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVu
ZFJvdXRlci5jb3B5UmVmKCkpKQotICAgICwgbV9vdmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAsIG1fb3ZlcmxheSht
YWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCiAgICAg
LCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9zY3Jp
cHREZWJ1Z1NlcnZlcihwYWdlKQogICAgICwgbV9wYWdlKHBhZ2UpCkBAIC0xMDYsNyArMTA2LDcg
QEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJ
bnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKIAogICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdl
QWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50
ID0gbWFrZVVuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsK
ICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIH0KQEAgLTE1Mywz
NyArMTUzLDM3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygp
CiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKICAgICBlbnN1cmVQYWdlQWdlbnQoKTsKIAot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZVJ1bnRpbWVB
Z2VudD4ocGFnZUNvbnRleHQpKTsKIAotICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIGRlYnVn
Z2VyQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCk7CiAg
ICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdlQ29udGV4dCkpOwotICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdl
Q29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VOZXR3b3JrQWdl
bnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVj
dG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAgICAgZW5zdXJlRE9NQWdlbnQoKTsKLSAgICBt
X2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOwotICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXll
clRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
RGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2Vu
dFB0cikpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+
KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9y
RGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVk
REJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgogCi0gICAgYXV0
byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3Jp
cHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFn
ZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29u
dGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIpKTsKIAogI2lmIEVOQUJMRShSRVNP
VVJDRV9VU0FHRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JDUFVQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck1lbW9yeUFnZW50PihwYWdlQ29udGV4dCkpOworICAg
IG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yTWVt
b3J5QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYKLSAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VBdWRpdEFnZW50PihwYWdlQ29udGV4dCkpOwot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNhbnZhc0FnZW50
PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5k
KG1ha2VVbmlxdWU8UGFnZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2Fn
ZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDYW52YXNBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50
PihwYWdlQ29udGV4dCkpOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAgY29t
bWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpA
QCAtNDIxLDcgKzQyMSw3IEBAIEluc3BlY3RvckFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjpl
bnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAg
ICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1
dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdl
Q29udGV4dCk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3Bl
Y3RvckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNw
ZWN0b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNw
ZWN0b3JBZ2VudChtX2luc3BlY3RvckFnZW50KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdU
Rk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBJbnNwZWN0b3JET01B
Z2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQoKQogewogICAgIGlmICgh
bV9pbnNwZWN0b3JET01BZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFn
ZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRvbUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgICAg
IGF1dG8gZG9tQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4
dCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JET01BZ2VudCA9IGRvbUFn
ZW50LmdldCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkb21BZ2VudCkpOwog
ICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQmIEluc3BlY3RvckNv
bnRyb2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2VB
Z2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwot
ICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUFn
ZW50PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7Cisg
ICAgICAgIGF1dG8gcGFnZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBh
Z2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAgICAg
bV9pbnNwZWN0b3JQYWdlQWdlbnQgPSBwYWdlQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKHBhZ2VBZ2VudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4IDI4
ZWU3MjdhMzZkNjZjZTIxMDk2OTc4MzFhZTBhOGFhYzQyMzg1NzUuLjZjMWI1MWFkZWU5YTM4NDI2
MzMzOGY0NWQ4ODg0YTZkOWMzN2VhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApAQCAtNTAsNiArNTAsNyBA
QCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIDogcHVibGljIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTZXR0aW5ncyB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgU2V0dGluZ3MoKSA9IGRlZmF1bHQ7CiAg
ICAgICAgIHZpcnR1YWwgflNldHRpbmdzKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCmluZGV4IDAwZDVmMTg1MmNlYmEyNzBjM2Fm
ODFjMTMyMDkwMDVkYTdiMTE4YTguLmM4MTAzZGQ3ZGJiODMyMGVhYjJlNmFkNWUzMmMyZDUyZDcy
YjA2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5zcGVjdG9ySGlzdG9yeTo6
cGVyZm9ybShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24pCiAKIHZvaWQgSW5zcGVjdG9y
SGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUoKQogewotICAgIHBlcmZvcm0oc3RkOjptYWtlX3Vu
aXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7CisgICAgcGVyZm9ybShtYWtlVW5pcXVlPFVuZG9h
YmxlU3RhdGVNYXJrPigpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW5zcGVjdG9ySGlzdG9y
eTo6dW5kbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKaW5kZXggY2EzMGUxYTI3YmY0MDYxODVhNDgzMjBhMjYzMTgzZWE3ZTZlNDdlMy4u
MjI5Yzk4YTQ0N2QyMjI0OGRkZWYzYmEzNGIzN2M1YzRjMDQ3NTk1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHZvaWQgUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0YShzdGQ6OnVuaXF1ZV9w
dHI8UnVsZVNvdXJjZURhdGFMaXN0PiBzb3VyY2VECiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3NvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4o
KTsKKyAgICBtX3NvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsK
IAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIHRvIHJldGFpbiB0
aGUgb3JpZ2luYWwgZmxhdCBzb3VyY2VEYXRhIHN0cnVjdHVyZQogICAgIC8vIGNvbnRhaW5pbmcg
b25seSBzdHlsZSBydWxlcywgZXZlbiB0aG91Z2ggQ1NTUGFyc2VyIG5vdyBwcm92aWRlcyB0aGUg
ZnVsbCBydWxlIHNvdXJjZSBkYXRhIHRyZWUuCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBib29sIElu
c3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBhdXRvIG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0
ZSgpOwotICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bGVTb3VyY2VEYXRhTGlzdD4oKTsKKyAgICBhdXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gbWFr
ZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4
dCBjb250ZXh0KHBhcnNlckNvbnRleHRGb3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25l
ckRvY3VtZW50KCkpKTsKICAgICBTdHlsZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5
bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVT
b3VyY2VEYXRhUmVzdWx0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGQzYjc1OWYyOWNjZjFhZTE4MDI4MGQ1ZTE3
MzY3MGQyOWM0ZjhjYzEuLmZkN2NhZDMwNzY3ZTc3NWIxNjc1ZWM0NTRlZjdhMDhiYjAzNmQ1OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291
cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nCiB7CiAgICAg
ZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAKLSAgICBhdXRvIHJlc291cmNl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklk
KTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1
ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNvdXJjZURhdGEtPnNldFR5cGUodHlwZSk7CiAgICAg
bV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJlc291
cmNlRGF0YSkpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5n
CiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAKLSAgICBhdXRv
IHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQs
IGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VE
YXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJl
c291cmNlKCZjYWNoZWRSZXNvdXJjZSk7CiAgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1h
cC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJlc291cmNlRGF0YSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDQzNTFlODcyYTllNWEzNjQ3MjlmNWI0ZmIyNjIxNmM3MzMwMmM4ZGQuLjM2NGFlYTdkNGI1
ZDkxMTc5MzI3NWQ2NDZmMjk1ZTY3YmYwZWVlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2Vy
R2xvYmFsU2NvcGUpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0Fn
ZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6
bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtl
VW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0
SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6
Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9w
d2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKQEAgLTY5LDcgKzY5LDcgQEAgV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29w
ZSYgd29ya2VyR2wKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4
dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNv
bnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7CisgICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtl
VW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7CiAgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsKICAg
ICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIH0KQEAgLTEwNSw3ICsx
MDUsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgp
CiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnJlc2V0KCk7CiAgICAgbV9leGVjdXRpb25TdG9w
d2F0Y2gtPnN0YXJ0KCk7CiAKLSAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOwor
ICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBtYWtlVW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29u
bmVjdEZyb250ZW5kKCptX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5k
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZtX2Jh
Y2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0KQEAgLTE2NCwxOCArMTY0LDE4IEBAIHZvaWQgV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAKICAgICBhdXRvIHdv
cmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENvbnRleHQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2VyQ29udGV4dCkpOwor
ICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2Vy
Q29udGV4dCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyR2xvYmFsU2NvcGUpKSB7Ci0gICAgICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2Vy
Q29udGV4dCkpOwotICAgICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBwZW5k
KG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgICAg
IG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29u
dGV4dCkpOwogICAgIH0KICNlbmRpZgogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckF1ZGl0QWdlbnQ+KHdv
cmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXZWJIZWFwQWdl
bnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3Jr
ZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1h
a2VVbmlxdWU8V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkpOwogCiAgICAgaWYgKGF1
dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5k
TGluZUFQSUhvc3QoKSkKICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zdHJ1
bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
Y3BwCmluZGV4IGE4ZDNjODk5YzMyODBhMjhlNjczMmNmODhhYjg0ZDAwMGQ0NWVkMmQuLmZkZjA0
NGM1NzliMzY4YzMyMDUxYjY1ZGM0NDBlMzg3ZjYwMThmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rv
ckFnZW50QmFzZSgiQXBwbGljYXRpb25DYWNoZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hl
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVj
dGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNw
cAppbmRleCBjZjk0Y2E4MDk2ZmY1NzFkNzRkNzczYjFmMDAyNzUwNTRjMGNlMWY5Li4xMTYyNGUy
NDA5NDY0ZmMxZTFlNjVhNjk5OGRiZDFiMDY4MmYwYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2Vu
dC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5z
cGVjdG9yQ1BVUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudChQYWdlQWdl
bnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDUFVQcm9maWxl
ciJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3Bl
Y3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNQVVByb2ZpbGVyQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKaW5kZXggNGI2OTk0NWVjNzA2N2Y5NjQzZTQ4MDczMDM0ODQyNjg2ZDYx
OWZiOC4uNDRlOWM1YWJlYjRjOTY2YWJhZWE5NDRhNDBkNWUwM2Q0NzJkMTFlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojph
c0NTU1N0eWxlUnVsZShDU1NSdWxlJiBydWxlKQogCiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVj
dG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdl
bnRCYXNlKCJDU1MiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENTU0Zyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRj
aGVyKENTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcykpCiB7CiB9CkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdlbnQt
Pmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0
aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CisgICAgYXV0byByZXN1bHQgPSBkb21B
Z2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0U3R5bGVTaGVldFRleHRBY3Rp
b24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9y
U3RyaW5nKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogfQpAQCAtNjQ2LDcgKzY0Niw3IEBA
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IEpTT046Ok9iamVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFr
ZV91bmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3Vu
ZElkLCB0ZXh0KSk7CisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3Rvcnko
KS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVT
aGVldCwgY29tcG91bmRJZCwgdGV4dCkpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJy
b3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1
cm47CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNl
bGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2IKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0
b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGlu
c3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7CisgICAgYXV0byBwZXJm
b3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFJ1
bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0
b3IpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBl
cnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzU3LDcgKzc1Nyw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9y
U3R5bGVTaGVldCwgc2VsZWN0b3IpOworICAgIGF1dG8gYWN0aW9uID0gbWFrZVVuaXF1ZTxBZGRS
dWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CiAgICAgYXV0byYgcmF3
QWN0aW9uID0gKmFjdGlvbjsKICAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlz
dG9yeSgpLT5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggOWJlMDYxMTlmYjMyMTk3MDA3
Mjk3MjJkODM2YTgxNmIyNWYxYzAxNS4uMGU1MGM3NWJhNDg3NTE1NTZlNDEyZGNiOTdhZDE5NjY5
NjVhOTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0Fn
ZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
IkNhbnZhcyJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJv
bnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6Q2FudmFzQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAg
ICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKQEAgLTQzNiw3ICs0MzYs
NyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24oQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZAogICAgIGlmICghaW5zcGVjdG9yQ2FudmFzLT5j
dXJyZW50RnJhbWVIYXNEYXRhKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNvbnRleHQoKS5jYW52YXNCYXNlKCkuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBxdWV1ZSA9IE1pY3JvdGFz
a1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKTsKLSAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihxdWV1ZSwgKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0b3JD
YW52YXMuY29weVJlZigpXSB7CisgICAgICAgICAgICBxdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0gaW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYo
KV0gewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVtZW50ID0gcHJvdGVjdGVk
SW5zcGVjdG9yQ2FudmFzLT5jYW52YXNFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNhbnZhc0VsZW1lbnQtPmlzRGVzY2VuZGFudE9mKGNhbnZhc0VsZW1lbnQtPmRvY3VtZW50
KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2YzE5
NmUwY2M2ODJiNDQyNTZjN2RkYWFlMDkwYWEwYWFkNTUzMTdkLi5mMGEyOGMxMzMxYzViYjMwODhk
NTNlNzI0M2RiYWY0ZWViNjNlN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIFN0
cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhFeGNlcHRpb24mJiBleGNlcHRp
b24pCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoUGFnZUFnZW50Q29udGV4
dCYgY29udGV4dCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiRE9NIl9zLCBjb250ZXh0KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIo
Y29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBt
X2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9vdmVybGF5KG92
ZXJsYXkpCkBAIC0zMDEsOCArMzAxLDggQEAgSW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JE
T01BZ2VudCgpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlciopCiB7Ci0gICAgbV9oaXN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JI
aXN0b3J5PigpOwotICAgIG1fZG9tRWRpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxET01FZGl0b3I+
KCptX2hpc3RvcnkpOworICAgIG1faGlzdG9yeSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9ySGlzdG9y
eT4oKTsKKyAgICBtX2RvbUVkaXRvciA9IG1ha2VVbmlxdWU8RE9NRWRpdG9yPigqbV9oaXN0b3J5
KTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlz
KTsKICAgICBtX2RvY3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50
KCk7CkBAIC02NTMsNyArNjUzLDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBh
dGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgIE5vZGUqIHBhcmVudCA9IGlu
bmVyUGFyZW50Tm9kZShub2RlKTsKICAgICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICAgICAg
IC8vIE5vZGUgYmVpbmcgcHVzaGVkIGlzIGRldGFjaGVkIC0+IHB1c2ggc3VidHJlZSByb290Lgot
ICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVUb0lkTWFwPigp
OworICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBtYWtlVW5pcXVlPE5vZGVUb0lkTWFwPigpOwog
ICAgICAgICAgICAgZGFuZ2xpbmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2Rh
bmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKICAgICAgICAgICAg
IGF1dG8gY2hpbGRyZW4gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT46OmNyZWF0ZSgpOwpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhp
Z2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNw
ZWN0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBoaWdobGln
aHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICBhdXRv
IGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgIGJv
b2wgc2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDogZmFsc2UgKGRvIG5vdCBzaG93IGEgdG9v
bHRpcCkuCiAgICAgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LT5nZXRCb29sZWFuKCJzaG93SW5m
byIsIHNob3dJbmZvKTsKICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gc2hvd0luZm87
CkBAIC0xMTk2LDEzICsxMTk2LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3Bl
Y3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hCiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGlu
YXRlcykKIHsKLSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oRmxv
YXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVl
PEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICBpbm5lckhp
Z2hsaWdodFF1YWQoV1RGTW92ZShxdWFkKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNv
b3JkaW5hdGVzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OkFycmF5JiBxdWFkQXJyYXksIGNv
bnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9y
LCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBxdWFkID0gc3Rk
OjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCk7CisgICAgYXV0byBxdWFkID0gbWFrZVVuaXF1ZTxG
bG9hdFF1YWQ+KCk7CiAgICAgaWYgKCFwYXJzZVF1YWQocXVhZEFycmF5LCBxdWFkLmdldCgpKSkg
ewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIFF1YWQgZm9ybWF0Il9zOwogICAgICAg
ICByZXR1cm47CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpo
aWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYQog
CiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVf
cHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykK
IHsKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0
Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGln
aHRDb25maWc+KCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihj
b2xvcik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Io
b3V0bGluZUNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPnVzZVBhZ2VDb29yZGluYXRlcyA9
IHVzZVBhZ2VDb29yZGluYXRlcyA/ICp1c2VQYWdlQ29vcmRpbmF0ZXMgOiBmYWxzZTsKQEAgLTEz
MTYsNyArMTMxNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAgICAgYXV0byBoaWdobGln
aHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICAgICAg
YXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAg
ICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHRydWU7IC8vIEFsd2F5cyBzaG93IHRv
b2x0aXBzIGZvciBmcmFtZXMuCiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBh
cnNlQ29sb3IoY29sb3IpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5l
ID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwpAQCAtMTM5OCw3ICsxMzk4LDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGludCBub2RlSWQpCiAgICAgbV9pbnNwZWN0ZWROb2RlID0gbm9kZTsKIAogICAgIGlmIChh
dXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBzdGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXImPihtX2luamVjdGVkU2NyaXB0TWFuYWdlcikuY29tbWFuZExpbmVBUElIb3N0KCkpCi0g
ICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CisgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9z
dC0+YWRkSW5zcGVjdGVkT2JqZWN0KG1ha2VVbmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7
CiAKICAgICBtX3N1cHByZXNzRXZlbnRMaXN0ZW5lckNoYW5nZWRFdmVudCA9IGZhbHNlOwogfQpA
QCAtMjMxNCw3ICsyMzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0
ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IW1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2spCi0gICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0
clRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KHRo
aXMpOworICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gbWFrZVVuaXF1ZTxSZXZh
bGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKICAgICBtX3JldmFsaWRhdGVTdHlsZUF0
dHJUYXNrLT5zY2hlZHVsZUZvcigmZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cAppbmRleCBlOTcxYTk5ZjcwNTI0ZDgzMTgxYWU3MTVkODI2NTg4MTFmZTA4ODA4Li44MWYxNGRj
MTdiZmEwNDc0N2UzZDIzZTQ1M2Y1ZTRhZjhkMDlmZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KFBhZ2VBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRPTVN0b3JhZ2UiX3Ms
IGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJv
dXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBt
X2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5j
cHAKaW5kZXggYjM3YTU2MGNlODA3NjhjNjY0NDA4NTE1ZmIwNTUxMjYxNjViZWQ4Mi4uMzU4YTg1
NjUxMmVhNGQ3MTk2MzMyYTIwNjk5MGRlMzI1MDA0MTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3Bw
CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRPcGVu
RGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiRGF0YWJhc2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERp
c3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGUxZTA4MmU0
MWFkMmQ1MjRmNTdlZjEwNjQwMjg4NzYxMTU2ODI0YjkuLmI1OTgyY2VlMzdlMzc0NDcwNTM5NDZi
Y2Y0YzQzNGI0MzFlZjlhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoIkxheWVyVHJlZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggMjljNzZk
MGM3ZmVhOTIyYzJhM2Q5OTQxNGM5ODZlYThkMjhkNzdiNS4uMjgzMjk1MWY1MzgwMTIxZmE0NTJi
ZmE4ZDQ3MGY0ZDM1ZTc4OWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3Bl
Y3Rvck1lbW9yeUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoIk1lbW9yeSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+
KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TWVtb3J5
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCAzZTRlOTZlYjIzMWEwNTRiMjEyMTI0N2Jj
MmNiMDkxNjVmMDI2NWIzLi41ZDA4MTYzODBjZGM2NmM3ZDc5NjBjMTJkMzQ4YTBmYmYzZjdiMTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNzIsMTAgKzE3MiwxMCBAQCBjbGFzcyBJbnNwZWN0
b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJD
bGllbnQgewogCiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rvck5ldHdvcmtBZ2VudChX
ZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIk5ldHdv
cmsiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAs
IG1fcmVzb3VyY2VzRGF0YShzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigp
KQorICAgICwgbV9yZXNvdXJjZXNEYXRhKG1ha2VVbmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+
KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzMjllMWIwYzVhZDkyZmI0NTFkZjE3NjczM2Fl
MmFlMzU4ZmI0OTM3Li5jNjQxYTZhMDQ4NDE5MzI2OGUyOWU5MGZmMDEyNmFiOTExYzkzMGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgRG9jdW1lbnRMb2FkZXIqIEluc3BlY3Rv
clBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW4K
IAogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4
dCYgY29udGV4dCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92
ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlBhZ2UiX3MsIGNvbnRleHQpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQ
YWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggM2Ez
NjFlOTFlNmYyZGViMDA0MmUxOGE3YzY0YzdiNTE2ZjliODBjNS4uMzBkODZjNzQ2M2M0N2Y1YjNh
ZDJiMzhjZjVkZTI0OWQ0NGViOWE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC04Nyw3ICs4
Nyw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQogCiBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRpbWVsaW5lIl9zLCBjb250ZXh0KQot
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlRp
bWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNv
bnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0
aCkKICAgICAvLyBGSVhNRTogQWJzdHJhY3QgYXdheSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIG9u
Y2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc0OCBpcyBmaXhl
ZC4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxv
b3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdpbiks
IFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9v
cE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93
blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lQmVnaW4pLCBbdGhpc10oKSB7CiAgICAgICAg
IGlmICghbV90cmFja2luZyB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQ
YXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxT
dGFja0RlcHRoKQogICAgICAgICBtX3J1bkxvb3BOZXN0aW5nTGV2ZWwrKzsKICAgICB9KTsKIAot
ICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZl
cj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3RvcE9i
c2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+
KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVF
bmQpLCBbdGhpc10oKSB7CiAgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vudmlyb25tZW50
LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9t
Q29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICAg
ICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBT
ZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJv
ZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwg
IlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+
YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+
YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYg
dGl0bAogICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBh
biBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcg
d2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VT
dHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAg
IGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmls
ZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgIGNvbnNvbGVB
Z2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4
IDkxNjFkODQzY2QzOGU0ZDk2NjEyNmFjZGQzNmU4M2RkMThmNTEwMDIuLjFlMzk4ZWRkMWE5ZWEz
ZWYyNmJlMDllYzAzZDZjNmMyY2QzOThkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zNiw3ICsz
Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvcldvcmtlckFnZW50
OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKCJXb3JrZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6
OldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcykpCiAgICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCmlu
ZGV4IDJlZWQxY2U2MGIzMDIyYWQ5ODI0ZmE2MjhhMzVkZGM1NDQ0OTYwZDkuLmMyMDk0Yjk5MmQz
NTQxNjBmMTdlZTI4ZjY0MTBhNzkzZGNkZTlmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAg
dm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdAogCiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPj0gNDAwKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVk
IHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2Yg
IiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1Rl
eHQoKSwgJyknKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9n
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwg
MCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3Jr
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNwb25z
ZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKICAg
ICB9CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZhaWxM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFJlc28KICAgICAg
ICAgbWVzc2FnZS5hcHBlbmQoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CiAgICAgfQog
Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwgbnVs
bHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VV
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBl
OjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFp
bGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L1dlYkhlYXBBZ2VudC5jcHAKaW5kZXggYmI1ZDFiZWM2YzYzMjIzOWJlZTY0NjM0MzdhZWZlZDEy
YmE0NzFkNS4uMDljYjZmNDY2NmFiNGM5MWNiZWUyZDBmY2ZkZDRiYTZhNjFhMTMzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcApAQCAt
NDEsNiArNDEsNyBAQCBzdHJ1Y3QgR2FyYmFnZUNvbGxlY3Rpb25EYXRhIHsKIH07CiAKIGNsYXNz
IFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2soV2Vi
SGVhcEFnZW50Jik7CiAgICAgdm9pZCBhZGRHYXJiYWdlQ29sbGVjdGlvbihHYXJiYWdlQ29sbGVj
dGlvbkRhdGEmJik7CkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgU2VuZEdhcmJhZ2VDb2xsZWN0aW9u
RXZlbnRzVGFzazo6dGltZXJGaXJlZCgpCiBXZWJIZWFwQWdlbnQ6OldlYkhlYXBBZ2VudChXZWJB
Z2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JIZWFwQWdlbnQoY29udGV4dCkK
ICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMp
Ci0gICAgLCBtX3NlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2soc3RkOjptYWtlX3VuaXF1
ZTxTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrPigqdGhpcykpCisgICAgLCBtX3NlbmRH
YXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2sobWFrZVVuaXF1ZTxTZW5kR2FyYmFnZUNvbGxlY3Rp
b25FdmVudHNUYXNrPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCA1ZWFm
YjZhMzI4NDZlNzAwMTUzYWM4MjY4MWI3YmU1MGQzYWZlNDhjLi44OTg1YmM5NDVmZTc1ZTBlODUx
YTM2ZGUzNTg0YWIwNDcxYzBmZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VS
dW50aW1lQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvclJ1
bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJv
bnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwg
bV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAs
IG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IGIyMGNiYmM5NTA3MDI4MTFiNjU4OWFjMWRmYmQ1NzMzOTE5M2QzMzcu
LjgwODJlZTMxZWVjNjBhMmY2MDMyOWRiYWJkNGQ5ODQyZjZhNTVmZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdvcmtlckRlYnVnZ2VyQWdlbnQ6On5X
b3JrZXJEZWJ1Z2dlckFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFdvcmtlckRlYnVnZ2VyQWdl
bnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewotICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VU
eXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2soJnN0YXRlKSkpOworICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2Uo
bWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBl
OjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2so
JnN0YXRlKSkpOwogfQogCiBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojppbmpl
Y3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4
ZWN1dGlvbkNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4
IGJkOWQ0Y2FkZWZiMmZhYTFmMmUwYjI1Nzk1NWFkNTEyNGUxNzk0ZWUuLjFmM2ZhYmEzMTI2ZjJl
OWIzNmI4NGQxM2U3M2JmMWZkYTMxNzU0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9MYXlvdXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0
YXRlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIExheW91dFN0YXRlOjpsYXlvdXRGb3JtYXR0
aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQm94JiBsYXlvdXRSb290KQogRGlzcGxheTo6Qm94JiBM
YXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKIHsKICAgICByZXR1cm4gKm1fbGF5b3V0VG9EaXNwbGF5Qm94LmVuc3VyZSgmbGF5b3V0
Qm94LCBbJmxheW91dEJveF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNw
bGF5OjpCb3g+KGxheW91dEJveC5zdHlsZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5bGUoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogfQogCkBAIC0xNDAsMTMgKzE0MCwxMyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRl
OjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAg
ICAgICAgICAgLy8gc2hvdWxkIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgY29udGVudCBpbnNpZGUu
CiAgICAgICAgICAgICAvLyA8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+PC9kaXY+PGRpdiBzdHls
ZT0ib3ZlcmZsb3c6IGhpZGRlbiI+IDwtIGlzIGEgbm9uLWludHJ1c2l2ZSBmbG9hdCwgYmVjYXVz
ZSBvdmVyZmxvdzogaGlkZGVuIHRyaWdnZXJzIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQu
PC9kaXY+CiAgICAgICAgICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZv
cm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3Jt
YXR0aW5nUm9vdCksICp0aGlzKTsKIAogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZm9y
bWF0dGluZyBjb250ZXh0IGluaGVyaXRzIHRoZSBmbG9hdHMgZnJvbSB0aGUgcGFyZW50IGZvcm1h
dHRpbmcgY29udGV4dC4KICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGZvcm1hdHRpbmcgc3RhdGUg
aW4gd2hpY2ggdGhpcyBmb3JtYXR0aW5nIHJvb3QgbGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNyZWF0
ZXMgYW5kIHVzZSBpdHMgZmxvYXRpbmcgc3RhdGUuCiAgICAgICAgICAgICBhdXRvJiBwYXJlbnRG
b3JtYXR0aW5nU3RhdGUgPSBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElm
TmVlZGVkKGZvcm1hdHRpbmdSb290LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpKTsgCiAgICAgICAg
ICAgICBhdXRvJiBwYXJlbnRGbG9hdGluZ1N0YXRlID0gcGFyZW50Rm9ybWF0dGluZ1N0YXRlLmZs
b2F0aW5nU3RhdGUoKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGlu
ZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50RmxvYXRpbmdTdGF0ZSwgKnRoaXMpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGbG9hdGlu
Z1N0YXRlLCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAg
LTE1NCw3ICsxNTQsNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3Jt
YXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICByZXR1cm4g
Km1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0gewogCiAgICAg
ICAgICAgICAvLyBCbG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEg
bmV3IGZsb2F0aW5nIHN0YXRlLgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0
dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9ja0Zv
cm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9v
dCksICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTYy
LDcgKzE2Miw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRp
bmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9m
b3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAg
ICAgIC8vIFRhYmxlIGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcg
ZmxvYXRpbmcgc3RhdGUgLWFuZCBpdCBzdGF5cyBlbXB0eS4KLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVh
dGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhp
cywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICB9CiAKQEAgLTE3NCwxOCArMTc0LDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5n
Q29udGV4dD4gTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJvCiAg
ICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250
ZXh0KCkpOwogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0
ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRl
Rm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9v
dCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0dGluZ0Nv
bnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAg
IEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0T25seSgpKTsKICAgICAgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3du
Y2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0
dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRl
eHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgYmxvY2tGb3Jt
YXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0
YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0byYgdGFibGVG
b3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9y
bWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJv
b3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGFibGVGb3JtYXR0aW5nQ29u
dGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdD
b250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIENSQVNIKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1
bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAppbmRl
eCA3YWUzYjQwOWQ3NjExNmYyZTlkMTNjYzMxZWI2ZTU2MDYzYjEwNzZmLi43OTkxNjI3NTc0MDE4
M2YzNTNmNWFmZDViMTUyMmU1NjUzZmM4OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKQEAgLTM2LDcgKzM2LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXkgewogCiBzdHJ1Y3QgUnVuIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc3RydWN0IFRleHRDb250ZXh0IHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
VGV4dENvbnRleHQodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBhMWNkNmQ2ZjFiN2ViOTBmY2M3OTA1
ZTMxZTlmMDRmZTNiZjgyNjBiLi41MDhkNjYxMjlkMTQ4N2M0ZTg0NDA5MzkzZGEzMzQwOTE5ZWE3
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yODEsNyArMjgx
LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQo
KSBjb25zdAogICAgICAgICAgICAgaWYgKCF0cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJv
eCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBz
dGFydCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcuIDxzcGFuPikuCi0gICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+
KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyU3RhcnQpKTsKKyAgICAgICAg
ICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4o
bGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCkpOwogICAgICAgICAg
ICAgYXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwogICAg
ICAgICAgICAgaWYgKCFjb250YWluZXIuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTIsMTcgKzI5MiwxNyBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVldWUudGFrZUxhc3QoKTsKICAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGVuZCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcuIDwvc3Bhbj4pLgog
ICAgICAgICAgICAgaWYgKHRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKLSAgICAg
ICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVl
PElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7
CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1
ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVuZCkp
OwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCkpCi0gICAg
ICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1
ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWsp
KTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5p
cXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVh
aykpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVk
KCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0
KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVu
aXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5s
aW5lTGV2ZWxCb3goKSk7CiAgICAgICAgICAgICAgICAgaWYgKGxheW91dEJveC5oYXNUZXh0Q29u
dGVudCgpKQogICAgICAgICAgICAgICAgICAgICBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBw
ZW5kVGV4dEl0ZW1zKGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygpLCBsYXlvdXRCb3gpOwog
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRl
LmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkJveCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5l
SXRlbTo6VHlwZTo6Qm94KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRv
KiBuZXh0U2libGluZyA9IGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAK
aW5kZXggZjc0MWRlNDg5ZTk0MjQ2MWQ3NjkyZTJlNDA0MTU5MzgzYjBjODE2MC4uMGEyMTMwMjEz
ZjEyNGVlYjVmN2Y3MTEyZTg4NmQ3MTJjNTMxZGEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVu
cyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChs
b2dpY2FsUmVjdC50b3BMZWZ0KCkpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50
Qm94V2lkdGgobG9naWNhbFJlY3Qud2lkdGgoKSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNl
dENvbnRlbnRCb3hIZWlnaHQobG9naWNhbFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4o
bG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4o
bWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpD
b250ZW4KICAgICAgICAgICAgICAgICB0b3BMZWZ0ICs9IEdlb21ldHJ5OjppbkZsb3dQb3NpdGlv
bmVkUG9zaXRpb25PZmZzZXQobGF5b3V0U3RhdGUoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAg
IGRpc3BsYXlCb3guc2V0VG9wTGVmdCh0b3BMZWZ0KTsKICAgICAgICAgICAgIGxpbmVCb3hSZWN0
LmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVjdC53aWR0aCgpKTsKLSAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+
KGxvZ2ljYWxSZWN0KSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVu
KG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6
Q29udGVuCiAgICAgICAgICAgICBhdXRvIHByZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCA9IHByZXZp
b3VzTGluZVJ1biAmJiBwcmV2aW91c0xpbmVSdW4tPnRleHRDb250ZXh0KCkgPyBwcmV2aW91c0xp
bmVSdW4tPnRleHRDb250ZXh0KCktPmNhbkJlRXh0ZW5kZWQgOiBmYWxzZTsKICAgICAgICAgICAg
IGF1dG8gcmVxdWlyZXNOZXdSdW4gPSAhaW5kZXggfHwgIXByZXZpb3VzUnVuQ2FuQmVFeHRlbmRl
ZCB8fCAmbGF5b3V0Qm94ICE9ICZwcmV2aW91c0xpbmVSdW4tPmxheW91dEJveCgpOwogICAgICAg
ICAgICAgaWYgKHJlcXVpcmVzTmV3UnVuKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0
LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29u
dGV4dC0+bGVuZ3RoIH0pKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5s
aW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCwgRGlzcGxheTo6UnVu
OjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5zdGFydCwgdGV4dENvbnRleHQtPmxlbmd0aCB9
KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRvJiBsYXN0RGlzcGxh
eVJ1biA9IGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpOwogICAgICAgICAgICAg
ICAgIGxhc3REaXNwbGF5UnVuLT5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVJdGVtLmgKaW5kZXggYjAwMTNiNmVkNTYzYmNiZjgyODEzOTEzNDFmMmRkNTYxNWVjNTNlZi4u
NzkwNjE5NjgxZTY3NTJkMjg3MjQ5Mzg2MjJlM2E3NGJlMDMzZmYzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaApAQCAtMzQs
NiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xh
c3MgSW5saW5lSXRlbSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbmxpbmVJdGVtPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsg
VGV4dCwgSGFyZExpbmVCcmVhaywgQm94LCBGbG9hdCwgQ29udGFpbmVyU3RhcnQsIENvbnRhaW5l
ckVuZCB9OwogICAgIElubGluZUl0ZW0oY29uc3QgQm94JiBsYXlvdXRCb3gsIFR5cGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
LmNwcAppbmRleCA0ZjIwYTZmZjFkNzBjZTM0OWJkZTBlYmVkZmU4ZjgwYTM1ZTg1YTI4Li5lZDY1
MjA1YjdkYjk5YjBmNmFiMTBmM2VlZWFhMDdjNDQ2YjdmOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcApAQCAtNTQs
NyArNTQsNyBAQCBMaW5lOjpDb250ZW50OjpSdW46OlJ1bihjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBjb25zdCBUZXh0Q29udGV4dCYgdGV4dENvbgogCiBMaW5lOjpMaW5lKGNvbnN0IExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiBpbml0aWFs
Q29uc3RyYWludHMsIFNraXBWZXJ0aWNhbEFsaWdtZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50KQog
ICAgIDogbV9sYXlvdXRTdGF0ZShsYXlvdXRTdGF0ZSkKLSAgICAsIG1fY29udGVudChzdGQ6Om1h
a2VfdW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkpCisgICAgLCBtX2NvbnRlbnQobWFrZVVuaXF1ZTxM
aW5lOjpDb250ZW50PigpKQogICAgICwgbV9sb2dpY2FsVG9wTGVmdChpbml0aWFsQ29uc3RyYWlu
dHMubG9naWNhbFRvcExlZnQpCiAgICAgLCBtX2Jhc2VsaW5lKHsgaW5pdGlhbENvbnN0cmFpbnRz
LmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsQ29uc3RyYWludHMuaGVp
Z2h0QW5kQmFzZWxpbmUuaGVpZ2h0IC0gaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2Vs
aW5lLmJhc2VsaW5lT2Zmc2V0IH0pCiAgICAgLCBtX2luaXRpYWxTdHJ1dChpbml0aWFsQ29uc3Ry
YWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuc3RydXQpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBM
aW5lOjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dp
Y2FsV2lkdGgpCiAKIHZvaWQgTGluZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UoY29uc3QgSW5s
aW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgRGlzcGxheTo6UmVjdCYgbG9naWNhbFJlY3QpCiB7
Ci0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6
UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29udGVudC0+cnVucygpLmFw
cGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsK
ICAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0gbG9naWNhbFJlY3Qud2lkdGgoKTsKIH0KIApA
QCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5s
aW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNhCiAgICAgfQogCiAgICAg
YXV0byB0ZXh0Q29udGV4dCA9IENvbnRlbnQ6OlJ1bjo6VGV4dENvbnRleHQgeyBpbmxpbmVJdGVt
LnN0YXJ0KCksIGlubGluZUl0ZW0uaXNDb2xsYXBzZWQoKSA/IDEgOiBpbmxpbmVJdGVtLmxlbmd0
aCgpLCBpc0NvbXBsZXRlbHlDb2xsYXBzZWQsIGlubGluZUl0ZW0uaXNXaGl0ZXNwYWNlKCksIGNh
bkJlRXh0ZW5kZWQgfTsKLSAgICBhdXRvIGxpbmVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxDb250
ZW50OjpSdW4+KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2FsUmVjdCk7CisgICAgYXV0
byBsaW5lSXRlbSA9IG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCB0ZXh0Q29u
dGV4dCwgbG9naWNhbFJlY3QpOwogICAgIGlmIChpc1RyaW1tYWJsZSAmJiAhaXNDb21wbGV0ZWx5
Q29sbGFwc2VkKQogICAgICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuYWRkKGxpbmVJdGVtLmdldCgp
KTsKIApAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJbmxp
bmVCb3goY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsCiAgICAgICAg
IGxvZ2ljYWxSZWN0LnNldEhlaWdodChpbmxpbmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVt
KSk7CiAgICAgfQogCi0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29udGVu
dC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9n
aWNhbFJlY3QpKTsKICAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0gKGxvZ2ljYWxXaWR0aCAr
IGhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBob3Jpem9udGFsTWFyZ2luLmVuZCk7CiAgICAgbV90
cmltbWFibGVDb250ZW50LmNsZWFyKCk7CiB9CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBMaW5l
OjphcHBlbmRIYXJkTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAg
ICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVtLCB7IH0pOwogICAgICAg
ICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCgpKTsKICAgICB9Ci0gICAgbV9j
b250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxp
bmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChtYWtl
VW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKIH0KIAogdm9p
ZCBMaW5lOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgTGF5b3V0VW5pdCBydW5IZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKaW5kZXggZmFmMDU0NzUzZDM3MjJh
YmMwMWQ4YTczZjQ3OTkzNDliY2IxYWExMS4uNzM3YTA3YjAzMmFmNmZmMTE5OTA5NmY3YTM3NTc1
N2U2ZGE5ZjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmUuaApAQCAtNTIsOCArNTIsMTAgQEAgY2xhc3MgTGluZSB7CiAgICAg
TGluZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50cyYsIFNraXBW
ZXJ0aWNhbEFsaWdtZW50KTsKIAogICAgIGNsYXNzIENvbnRlbnQgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0cnVjdCBSdW4geworICAg
ICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAgICAgc3Ry
dWN0IFRleHRDb250ZXh0IHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAK
aW5kZXggZjEzMDg5YTcwOGYzZmUzZmY5Yjc3ZjcyMDk2Y2RhNDJlZjM2ZTIyMi4uNWU2YzI1NmRi
MGIzMDlhYWYxZTI1ODIxZjBlMWUxOGU1NjQ1MmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcApAQCAt
ODksNyArODksNyBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRl
bXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0ID0g
aW5saW5lQm94LnRleHRDb250ZW50KCk7CiAgICAgaWYgKCF0ZXh0Lmxlbmd0aCgpKQotICAgICAg
ICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0
SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGlu
bGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwg
MCwgMCwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBhdXRvJiBzdHlsZSA9IGlubGluZUJveC5zdHls
ZSgpOwogICAgIGF1dG8gcHJlc2VydmVOZXdsaW5lID0gc3R5bGUucHJlc2VydmVOZXdsaW5lKCk7
CkBAIC05OSwyMCArOTksMjAgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5k
VGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogICAgIHdoaWxlIChj
dXJyZW50UG9zaXRpb24gPCB0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIC8vIFNvZnQgbGluZWJy
ZWFrPwogICAgICAgICBpZiAoaXNTb2Z0TGluZUJyZWFrKHRleHRbY3VycmVudFBvc2l0aW9uXSwg
cHJlc2VydmVOZXdsaW5lKSkgewotICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24s
IDEsIHRydWUsIGZhbHNlKSk7CisgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtl
VW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1
ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICsrY3VycmVudFBvc2l0aW9uOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZUNoYXJhY3Rlcih0
ZXh0W2N1cnJlbnRQb3NpdGlvbl0sIHByZXNlcnZlTmV3bGluZSkpIHsKICAgICAgICAgICAgIGF1
dG8gbGVuZ3RoID0gbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbih0ZXh0LCBjdXJyZW50
UG9zaXRpb24sIHByZXNlcnZlTmV3bGluZSk7CiAgICAgICAgICAgICBhdXRvIGlzQ29sbGFwc2Vk
ID0gY29sbGFwc2VXaGl0ZVNwYWNlICYmIGxlbmd0aCA+IDE7Ci0gICAgICAgICAgICBpbmxpbmVD
b250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gs
IGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBpc0NvbGxhcHNlZCkpOworICAgICAgICAg
ICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5l
Qm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgdHJ1ZSwgaXNDb2xsYXBzZWQpKTsKICAgICAg
ICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gbGVuZ3RoID0gbW92ZVRvTmV4dEJyZWFrYWJsZVBv
c2l0aW9uKGN1cnJlbnRQb3NpdGlvbiwgbGluZUJyZWFrSXRlcmF0b3IsIHN0eWxlKTsKLSAgICAg
ICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4o
aW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgZmFsc2UsIGZhbHNlKSk7CisgICAg
ICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGlu
ZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICBj
dXJyZW50UG9zaXRpb24gKz0gbGVuZ3RoOwogICAgIH0KIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IElubGluZVRleHRJdGVtOjpzcGxpdCh1bnNp
Z25lZCBzcGxpdFBvc2l0aW9uLCB1bgogewogICAgIFJFTEVBU0VfQVNTRVJUKHNwbGl0UG9zaXRp
b24gPj0gdGhpcy0+c3RhcnQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiAr
IGxlbmd0aCA8PSBlbmQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4
dEl0ZW0+KGxheW91dEJveCgpLCBzcGxpdFBvc2l0aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFjZSgp
LCBpc0NvbGxhcHNlZCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4o
bGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24sIGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29s
bGFwc2VkKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Qm94LmNwcAppbmRleCBlZGYyZDRiMjc2NjIyYzg5NWQxNzc5NzE0Y2Y3Y2YyMDhhY2Q5
YzQyLi5mNTZlMWE2MTZhMmRmNTc3MWJiNDhhNzU4MDNhZTU3M2ZjZjhjNzM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAgQm94OjpCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJl
bmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmwKICAgICAsIG1faGFzUmFyZURhdGEoZmFsc2Up
CiB7CiAgICAgaWYgKGlzUmVwbGFjZWQoKSkKLSAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5yZXBs
YWNlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZWQ+KCp0aGlzKTsKKyAgICAgICAgZW5zdXJl
UmFyZURhdGEoKS5yZXBsYWNlZCA9IG1ha2VVbmlxdWU8UmVwbGFjZWQ+KCp0aGlzKTsKIH0KIAog
Qm94OjpCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCkBAIC00MjMsNyArNDIzLDcgQEAgY29uc3QgQm94OjpCb3hSYXJlRGF0YSYg
Qm94OjpyYXJlRGF0YSgpIGNvbnN0CiBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OmVuc3VyZVJhcmVE
YXRhKCkKIHsKICAgICBzZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRh
TWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94UmFyZURh
dGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5z
dXJlKHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWU8Qm94UmFyZURhdGE+KCk7IH0pLml0ZXJh
dG9yLT52YWx1ZTsKIH0KIAogdm9pZCBCb3g6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApp
bmRleCA1ZmVlY2VlNzJmMDhjNDg1MDg4ZWU0ODUxOTQ1YzY2NDBjZmU1N2QzLi5iYzJiYmVlNzhh
MzY4NjgyNmIyMDRkZmI1ZjY5NjI1Zjk1NmYyYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjgsMjUg
KzEyOCwyNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0
Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgIGlmIChpczxSZW5kZXJUZXh0
PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAgICAvLyBGSVhNRTogQ2xlYXJseSB0aGVyZSBtdXN0
IGJlIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGlzLgogICAgICAgICBpZiAocGFyZW50UmVuZGVy
ZXIuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSkKLSAgICAgICAgICAg
IGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRl
eHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFy
ZW50UmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtl
VW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxU
ZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxC
b3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBS
ZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJl
ci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CisgICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVy
KS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkocGFyZW50UmVuZGVyZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkpOwogICAg
ICAgICByZXR1cm4gY2hpbGRMYXlvdXRCb3g7CiAgICAgfQogCiAgICAgYXV0byYgcmVuZGVyZXIg
PSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZFJlbmRlcmVyKTsKICAgICBhdXRvIGRpc3Bs
YXlUeXBlID0gcmVuZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCk7CiAgICAgaWYgKGlzPFJlbmRlckxp
bmVCcmVhaz4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3g+
KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVy
LnN0eWxlKCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmli
dXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAK
ICAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSkgewogICAgICAgICAvLyBDb25zdHJ1
Y3QgdGhlIHByaW5jaXBhbCB0YWJsZSB3cmFwcGVyIGJveCAoYW5kIG5vdCB0aGUgdGFibGUgYm94
IGl0c2VsZikuCi0gICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250
YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZVdy
YXBwZXJCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAg
ICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0
cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBSZW5kZXJTdHls
ZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyUmVw
bGFjZWQ+KHJlbmRlcmVyKSkgewogICAgICAgICBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5
cGU6OkJsb2NrKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVl
PEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVu
ZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVl
PEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVu
ZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExh
eW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCB5ZXQgc3VwcG9ydCBhbGwgcmVwbGFjZWQgZWxlbWVudHMgYW5kIHRoaXMgaXMgdGVt
cG9yYXJ5IGFueXdheS4KICAgICAgICAgaWYgKGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpKQog
ICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCktPnNldEludHJpbnNpY1NpemUo
ZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKS5pbnRyaW5zaWNTaXplKCkpOwpAQCAt
MTYxLDE4ICsxNjEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0
ZUxheW91dEJveChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICAgICAgICAgICAg
ICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKHJlbmRlcmVyLnN0eWxlKCkpOwog
ICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRUb3AoeyBvZmZzZXQtPmhlaWdodCgpLCBGaXhlZCB9
KTsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0TGVmdCh7IG9mZnNldC0+d2lkdGgoKSwgRml4
ZWQgfSk7Ci0gICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKCpzdHlsZSkp
OworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+
KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZSgqc3R5bGUpKTsKICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6
OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
ZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OklubGluZSkKLSAgICAgICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJl
bmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAg
ICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrKQot
ICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4o
ZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIu
c3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRh
aW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVu
ZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5
VHlwZTo6VGFibGVDYXB0aW9uIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNl
bGwpIHsKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250
YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJl
bmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1
ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9
PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlw
ZTo6VGFibGVIZWFkZXJHcm91cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVG
b290ZXJHcm91cAogICAgICAgICAgICAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRh
YmxlUm93IHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwIHx8
IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbikgewotICAgICAgICAgICAg
Y2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwor
ICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUo
KSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRF
RF9ZRVQoKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRh
YmxlUmVuZGVyZXIsIENvbnRhaW4KICAgICAgICAgdGFibGVDaGlsZCA9IHRhYmxlQ2hpbGQtPm5l
eHRTaWJsaW5nKCk7CiAgICAgfQogCi0gICAgYXV0byB0YWJsZUJveCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6
VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOwor
ICAgIGF1dG8gdGFibGVCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0
cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlQm94IH0sIFJlbmRlclN0eWxlOjpjbG9u
ZSh0YWJsZVJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICBhcHBlbmRDaGlsZCh0YWJsZVdyYXBwZXJC
b3gsICp0YWJsZUJveCk7CiAgICAgd2hpbGUgKHRhYmxlQ2hpbGQpIHsKICAgICAgICAgVHJlZUJ1
aWxkZXI6OmNyZWF0ZVN1YlRyZWUoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnRhYmxlQ2hpbGQp
LCAqdGFibGVCb3gpOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgcHJpbnRMYXlvdXRUcmVlRm9y
TGl2ZURvY3VtZW50cygpCiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8g
b3V0cHV0IGdlb21ldHJ5IHdpdGhvdXQgbGF5b3V0IGNvbnRleHQuCiAgICAgICAgIGF1dG8mIHJl
bmRlclZpZXcgPSAqZG9jdW1lbnQtPnJlbmRlclZpZXcoKTsKICAgICAgICAgYXV0byBpbml0aWFs
Q29udGFpbmluZ0Jsb2NrID0gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dFRyZWUocmVuZGVyVmll
dyk7Ci0gICAgICAgIGF1dG8gbGF5b3V0U3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExheW91dDo6
TGF5b3V0U3RhdGU+KCppbml0aWFsQ29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgYXV0byBsYXlv
dXRTdGF0ZSA9IG1ha2VVbmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oKmluaXRpYWxDb250YWlu
aW5nQmxvY2spOwogICAgICAgICBsYXlvdXRTdGF0ZS0+c2V0UXVpcmtzTW9kZShyZW5kZXJWaWV3
LmRvY3VtZW50KCkuaW5MaW1pdGVkUXVpcmtzTW9kZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJrc01v
ZGU6OkxpbWl0ZWQgOiAocmVuZGVyVmlldy5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpID8gTGF5
b3V0U3RhdGU6OlF1aXJrc01vZGU6OlllcyA6IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpObykp
OwogICAgICAgICBsYXlvdXRTdGF0ZS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIHNob3dMYXlv
dXRUcmVlKCppbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBsYXlvdXRTdGF0ZS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTFkNzdlNGFmMWRiZGRmMDQ1
YTkyYzFjOGFkM2I5OWVhY2ViOTdiNS4uYjQ5OGEyMjRiMTkwYzZjZTg0NGViOWRkN2ViOWI3YTEw
NWQ3NmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtNzgs
NyArNzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRlcjo6
Y3JlYXRlKERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYQogICAgIGlmIChmaWx0ZXJzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9j
dW1lbnRMb2FkZXIpOwogfQogCiBDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5l
ciYmIGNvbnRlbnRGaWx0ZXJzLCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCmlu
ZGV4IGQwZDU0Yjk3ZWFlNzIwNDI2Zjk2MWM4ZGFlODk1ZTIwMzY5Y2VkY2MuLmM0Y2U1ZjU1MjE3
MGIzY2ZjOGI4NDFiNTlhNTEwZmQ3NWFhODNmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAg
Ym9vbCB2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVj
ayhyZXNwb25zZSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlY3VyaXR5T3JpZ2luLCBlcnJv
ckRlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPihz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPENy
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPihzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSk7CiAgICAgaWYgKCFyZXN1bHQtPnBhcnNlKHJlc3BvbnNlKQogICAgICAgICB8fCAhcmVzdWx0
LT5hbGxvd3NDcm9zc09yaWdpbk1ldGhvZChyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3JpcHRpb24pCiAgICAgICAgIHx8ICFyZXN1bHQtPmFs
bG93c0Nyb3NzT3JpZ2luSGVhZGVycyhyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSwgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3JpcHRpb24pKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBkZTA5ZTcwMzk5Y2M3NDdlODg3MzY5NzgzNzI0
ZTZkYWE5ZmM3ODhiLi4wNDU1Y2FmYzU5ZmY3YjZlYTFmOWEyY2QzOTMxYTY5ZTlmNjk0NDU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE4OSw3ICsxODks
NyBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRAogICAgICwgbV9vcmlnaW5hbFN1YnN0aXR1dGVE
YXRhV2FzVmFsaWQoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICwgbV9zdWJzdGl0dXRl
UmVzb3VyY2VEZWxpdmVyeVRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVS
ZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGF0YUxvYWRUaW1lcigqdGhpcywg
JkRvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpCi0gICAgLCBtX2Fw
cGxpY2F0aW9uQ2FjaGVIb3N0KHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+
KCp0aGlzKSkKKyAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3QobWFrZVVuaXF1ZTxBcHBsaWNh
dGlvbkNhY2hlSG9zdD4oKnRoaXMpKQogewogfQogCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB1aW50
NjRfdCBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKQogICAgIGlmICht
YW5pZmVzdFVSTC5pc0VtcHR5KCkgfHwgIW1hbmlmZXN0VVJMLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxB
cHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRlbnRp
YWxzKTsKKyAgICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKICAgICBh
dXRvKiByYXdNYW5pZmVzdExvYWRlciA9IG1hbmlmZXN0TG9hZGVyLmdldCgpOwogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG5leHRDYWxsYmFja0lEKys7CiAgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVycy5zZXQoV1RGTW92ZShtYW5pZmVzdExvYWRlciksIGNhbGxiYWNrSUQpOwpAQCAtMTQy
Nyw3ICsxNDI3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QXJjaGl2ZShSZWY8QXJjaGl2
ZT4mJiBhcmNoaXZlKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJiBhcmNoaXZlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CisgICAgICAgIG1fYXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsK
ICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFkZEFsbFJlc291cmNlcyhhcmNoaXZl
KTsKIH0KIApAQCAtMTQzNiw3ICsxNDM2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxs
QXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJiBhcmNoaXZlKQogdm9pZCBEb2N1bWVudExvYWRlcjo6
YWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgcmVzb3VyY2UpCiB7CiAg
ICAgaWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIG1fYXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbj4oKTsKKyAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gbWFrZVVuaXF1
ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbi0+YWRkUmVzb3VyY2UoV1RGTW92ZShyZXNvdXJjZSkpOwogfQogCkBAIC0xOTYzLDcg
KzE5NjMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIC8vIElmIHRoZSBsb2FkIHdhcyBhYm9ydGVkIGJ5
IGNsZWFyaW5nIG1fcmVxdWVzdCwgaXQncyBwb3NzaWJsZSB0aGUgQXBwbGljYXRpb25DYWNoZUhv
c3QKICAgICAgICAgLy8gaXMgbm93IGluIGEgc3RhdGUgd2hlcmUgc3RhcnRpbmcgYW4gZW1wdHkg
bG9hZCB3aWxsIGJlIGluY29uc2lzdGVudC4gUmVwbGFjZSBpdCB3aXRoCiAgICAgICAgIC8vIGEg
bmV3IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LgotICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0
ID0gc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpOworICAgICAg
ICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9z
dD4oKnRoaXMpOwogICAgICAgICBtYXliZUxvYWRFbXB0eSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMjEyMiw3ICsyMTIyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gaWNvbkxvYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SWNvbkxvYWRlcj4oKnRoaXMsIGljb24udXJsKTsKKyAgICBhdXRvIGljb25Mb2FkZXIgPSBt
YWtlVW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAgICAgYXV0byogcmF3SWNv
bkxvYWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7CiAgICAgbV9pY29uTG9hZGVycy5zZXQoV1RGTW92
ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKaW5kZXggYzQ1MGMwODcwYzBkYjkwMDJiOTA0YzdiNmNiY2U0Yzk2OTAyYzZk
Yy4uYWNhMzQ1Mjk4NWI3MzExOWJjYjIzYzQzYmEyM2VlZmI3NWE3YTM0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCBQYWdlQ29uZmln
dXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKQogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxFbXB0eVByb2dyZXNzVHJhY2tlckNsaWVudD4gZHVtbXlQcm9ncmVzc1Ry
YWNrZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50
ID0gJmR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmdldCgpOwogCi0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEVtcHR5RGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+
KCk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9IEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoeyB9LCB7IH0pOwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IEVtcHR5RGF0YWJhc2VQcm92
aWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBlMGY0NjE0OGYy
ZGZhYTg3ZjZiMjQyNjM3ZDUwODkxODUyMGE2MGEyLi44M2JlYjI3MTdkMzM3YzM0MWMwMTVlY2Y0
NmQ0ZjM3M2UwOGIxNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAg
LTI3MCwxMCArMjcwLDEwIEBAIGNsYXNzIEZyYW1lTG9hZGVyOjpGcmFtZVByb2dyZXNzVHJhY2tl
ciB7CiBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUmIGZyYW1lLCBGcmFtZUxvYWRlckNs
aWVudCYgY2xpZW50KQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fY2xpZW50KGNsaWVu
dCkKLSAgICAsIG1fcG9saWN5Q2hlY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFBvbGljeUNoZWNrZXI+
KGZyYW1lKSkKLSAgICAsIG1faGlzdG9yeShzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcnlDb250cm9s
bGVyPihmcmFtZSkpCisgICAgLCBtX3BvbGljeUNoZWNrZXIobWFrZVVuaXF1ZTxQb2xpY3lDaGVj
a2VyPihmcmFtZSkpCisgICAgLCBtX2hpc3RvcnkobWFrZVVuaXF1ZTxIaXN0b3J5Q29udHJvbGxl
cj4oZnJhbWUpKQogICAgICwgbV9ub3RpZmllcihmcmFtZSkKLSAgICAsIG1fc3ViZnJhbWVMb2Fk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUpKQorICAgICwgbV9zdWJm
cmFtZUxvYWRlcihtYWtlVW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFtZSkpCiAgICAgLCBtX21p
eGVkQ29udGVudENoZWNrZXIoZnJhbWUpCiAgICAgLCBtX3N0YXRlKEZyYW1lU3RhdGVQcm92aXNp
b25hbCkKICAgICAsIG1fbG9hZFR5cGUoRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQpCkBAIC0zMjEs
NyArMzIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAgbV9zdGF0ZU1hY2hpbmUu
YWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnQpOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LmNyZWF0ZU5l
dHdvcmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAgICBtX3Byb2dyZXNzVHJhY2tl
ciA9IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwogfQogCiB2b2lk
IEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQpAQCAt
MzQ2LDcgKzM0Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXRGb3JTeW50aGVzaXplZERvY3Vt
ZW50KGNvbnN0IFVSTCYpCiAgICAgbV9uZWVkc0NsZWFyID0gdHJ1ZTsKIAogICAgIG1fbmV0d29y
a2luZ0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwotICAgIG1f
cHJvZ3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4o
bV9mcmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5pcXVlPEZyYW1lUHJvZ3Jl
c3NUcmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9h
ZGluZyhib29sIGRlZmVycykKQEAgLTI2NzgsNyArMjY3OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmRldGFjaENoaWxkcmVuKCkKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwjbmF2aWdhdGUKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TmF2aWdhdGlvbkRpc2FibGVyPiBuYXZpZ2F0aW9uRGlzYWJsZXI7CiAgICAgaWYgKG1fZnJh
bWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgbmF2aWdhdGlvbkRpc2FibGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsKKyAgICAgICAgbmF2aWdhdGlv
bkRpc2FibGVyID0gbWFrZVVuaXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsKIAog
ICAgIC8vIEFueSBzdWJmcmFtZSBpbnNlcnRlZCBieSB1bmxvYWQgZXZlbnQgaGFuZGxlcnMgZXhl
Y3V0ZWQgaW4gdGhlIGxvb3AgYmVsb3cgd2lsbCBub3QgZ2V0IHVubG9hZGVkCiAgICAgLy8gYmVj
YXVzZSB3ZSBjcmVhdGUgYSBjb3B5IG9mIHRoZSBzdWJmcmFtZXMgbGlzdCBiZWZvcmUgbG9vcGlu
Zy4gVGhlcmVmb3JlLCBpdCB3b3VsZCBiZSB1bnNhZmUgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgKaW5kZXggOGUzYTQ2YjUxMGE5OTgwYzJhZmI4MGEzNDQ4YTQ5ODllYWMxOWUxOS4u
NWZmZjY3ZDk0MmViZTkxZTAzYTUyOTZlNmU5ZGEyNGRiM2I3Y2NiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTk2LDYgKzk2LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIHVzaW5nIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0
aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlm
aWVyKT47CiAKIGNsYXNzIEZyYW1lTG9hZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZUxvYWRlcik7CiBwdWJsaWM6CiAgICAg
RnJhbWVMb2FkZXIoRnJhbWUmLCBGcmFtZUxvYWRlckNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwCmluZGV4IGNkZjY0OTUyNmZlM2QxZjMzMjhkNmUzNmMyMDEwODdjMzFm
MTY1NWIuLjQwOGM1MzY0MjllM2IwODc3OThlYjk3ZTc2ODY0Y2M5NDg2NjY3YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTE0MiwyMiArMTQyLDIyIEBAIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gY3JlYXRlTGlua1ByZWxv
YWRSZXNvdXJjZUNsaWVuCiB7CiAgICAgc3dpdGNoIChyZXNvdXJjZS50eXBlKCkpIHsKICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZEltYWdlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwg
ZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNo
ZWRJbWFnZT4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3Jp
cHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJl
c291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFNjcmlwdD4ocmVzb3VyY2UpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGll
bnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOwogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3du
Y2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxMaW5rUHJlbG9hZFN0eWxlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8
Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpUeXBlOjpGb250UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExp
bmtQcmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEZvbnQ+
KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRm9udFJl
c291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlKSk7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlRl
eHRUcmFja1Jlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJl
bG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRUZXh0VHJh
Y2s+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRGVm
YXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVz
b3VyY2UpKTsKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1lZGlhUmVz
b3VyY2U6CiAgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLm1lZGlhUHJlbG9hZGluZ0VuYWJsZWQoKSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwog
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlJhd1Jlc291cmNlOgotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50Pihsb2FkZXIs
IGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0
PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OlR5cGU6Ok1haW5SZXNvdXJjZToKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJY29u
OgogI2lmIEVOQUJMRShTVkdfRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkRpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkRpc2FibGVyLmgKaW5kZXggMDJjYzdkMTIwY2E0YmNmZjM1MjVjOGY3NDljYzQxODBmZTZkNDVl
Mi4uOGFlNGIzMWI4YjY5Zjk4ZDAxYWRhNzg4OTlhOThiZDExZGQ0MjczZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOYXZpZ2F0aW9uRGlzYWJsZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdmlnYXRpb25EaXNhYmxlcihGcmFt
ZSogZnJhbWUpCiAgICAgICAgIDogbV9mcmFtZShmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRleCA1NThjNzgwNDk1N2VjODgyODgxOGVm
NTYxOWJmOTgzZDNmOTQwYTU1Li4zYzJjMjUyYWE1MWI5NjkyOTVlY2YxNDgxMjU0YTMyNDBlYzQy
YTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
CkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJl
ZGlyZWN0KERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIGRvdWJsZQogICAgIC8vIFdlIHdh
bnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlz
ID4gMSBzZWNvbmQuCiAgICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJlY3Qt
PmRlbGF5KCkpIHsKICAgICAgICAgYXV0byBsb2NrQmFja0ZvcndhcmRMaXN0ID0gZGVsYXkgPD0g
MSA/IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyA6IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vOwot
ICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0
aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKKyAgICAg
ICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3Vt
ZW50LCBkZWxheSwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBM
b2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0ZvcndhcmRMaXN0KSk7CiAgICAgfQogfQogCkBAIC00
NDUsNyArNDQ1LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9u
Q2hhbmdlKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIFMKICAgICAvLyBUaGlzIG1heSBo
YXBwZW4gd2hlbiBhIGZyYW1lIGNoYW5nZXMgdGhlIGxvY2F0aW9uIG9mIGFub3RoZXIgZnJhbWUu
CiAgICAgYm9vbCBkdXJpbmdMb2FkID0gIWxvYWRlci5zdGF0ZU1hY2hpbmUoKS5jb21taXR0ZWRG
aXJzdFJlYWxEb2N1bWVudExvYWQoKTsKIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8
U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3Jp
Z2luLCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVy
aW5nTG9hZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBzY2hlZHVsZShtYWtl
VW5pcXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZzZWN1
cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExp
c3QsIGR1cmluZ0xvYWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQg
TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1p
c3Npb24+JiYgc3VibWlzc2lvbikKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIE5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1
Ym1pc3NpbwogICAgICAgICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlz
dDo6WWVzOwogICAgIH0KICAgICAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVk
dWxlZEZvcm1TdWJtaXNzaW9uPihXVEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRM
aXN0LCBkdXJpbmdMb2FkKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRGb3Jt
U3VibWlzc2lvbj4oV1RGTW92ZShzdWJtaXNzaW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVy
aW5nTG9hZCkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVz
aChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQg
TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBpbml0aWF0aW5n
RG9jdW1lbnQpCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGluZ0Rv
Y3VtZW50LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1fZnJh
bWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1
ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2ZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVy
cmVyKCkpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlO
YXZpZ2F0aW9uKGludCBzdGVwcykKQEAgLTQ5OCwxMyArNDk4LDEzIEBAIHZvaWQgTmF2aWdhdGlv
blNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCiAgICAgfQog
CiAgICAgLy8gSW4gYWxsIG90aGVyIGNhc2VzLCBzY2hlZHVsZSB0aGUgaGlzdG9yeSB0cmF2ZXJz
YWwgdG8gb2NjdXIgYXN5bmNocm9ub3VzbHkuCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1
ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbj4oc3RlcHMpKTsKKyAgICBzY2hlZHVsZShtYWtl
VW5pcXVlPFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uPihzdGVwcykpOwogfQogCiB2b2lkIE5h
dmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKERvY3VtZW50JiBvcmlnaW5Eb2N1
bWVudCkKIHsKICAgICBpZiAoc2hvdWxkU2NoZWR1bGVOYXZpZ2F0aW9uKCkpCi0gICAgICAgIHNj
aGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVu
dCkpOworICAgICAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3Jp
Z2luRG9jdW1lbnQpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjp0aW1lckZpcmVk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCmluZGV4IGEy
ZGRhY2UyOGYwN2MzOTFmZTI0ZTE5MThkMjU0YTUwMDJmYWI0NzYuLjk3YzIzYjE1MDkyYmYzOTNi
MzFkMjBjOGYzNGQyNTc3MjYzMWNjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25TY2hlZHVsZXIuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IGVudW0gY2xhc3MgTmV3TG9hZEluUHJvZ3Jlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIAog
Y2xhc3MgTmF2aWdhdGlvblNjaGVkdWxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTmF2aWdhdGlvblNjaGVkdWxlcihGcmFtZSYpOwogICAg
IH5OYXZpZ2F0aW9uU2NoZWR1bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1Ry
YWNrZXIuY3BwCmluZGV4IGUxN2E5ZGM3MmRlMDM3Yzk2MzRiYzFjYzkzYzJjMWE3N2E4NmJmYTMu
LjI4MTdhNzY2NjQ1N2IyMzk3M2E2OGZjZjdiYzAxODBjMTJiZjVjZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBQ
cm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2UKIAogICAgIGF1dG8mIGl0ZW0gPSBtX3Byb2dyZXNzSXRlbXMuYWRk
KGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWl0ZW0pIHsK
LSAgICAgICAgaXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0ZWRM
ZW5ndGgpOworICAgICAgICBpdGVtID0gbWFrZVVuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGltYXRl
ZExlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCBlYTVkYmZiYWFiMjBiZmQ0M2RlYWNm
MWU3NzYxMWMzNDMzYWJhYjgzLi44MjQ2YmIwNzA2Y2QwYzA3MWY4OTk2Mjg5ODZhNWJhNTFjNDhi
NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3Bw
CkBAIC01MzUsNyArNTM1LDcgQEAgYm9vbCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjaGVja0Zvckhl
YWRDaGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4sIGJvb2wKICAgICBpZiAobV9j
b250ZW50VHlwZSA9PSBYTUwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9jaGFyc2V0
UGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7CisgICAg
bV9jaGFyc2V0UGFyc2VyID0gbWFrZVVuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7CiAg
ICAgcmV0dXJuIGNoZWNrRm9yTWV0YUNoYXJzZXQoZGF0YSwgbGVuKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCBjYTllNmM0MzQzZDc0MDEwNTUz
YTllMTBmYTY1NjNlZTUyMzkxYmJlLi5mYTkyNmVhMDYyYWRmZjIwNTcwYzhhMzY5MTI0NjcyYjll
ZjU2NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAt
OTIsNyArOTIsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fY3Vl
UGFyc2VyKQotICAgICAgICBtX2N1ZVBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFy
c2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKKyAgICAgICAgbV9jdWVQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBh
cnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CiAKICAgICB3aGlsZSAobV9wYXJzZU9mZnNldCA8IGJ1ZmZlci0+c2l6
ZSgpKSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEobV9wYXJzZU9m
ZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggYTEyNjNlMmYwNDU3NGI0ZjBlZTczYzA0ZThiNjJmNWM4MDcyYTc1OC4uNzc1
MzJmODYxMzRlMDQzYWQzN2QzZjU5OTk4YTZmNTdhNDI0MTc0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTE1LDExICsxMTUs
MTEgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVh
ZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5
UG9saWN5KTsKIAogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5Db3B5ID0gc2VjdXJpdHlPcmlnaW4t
Pmlzb2xhdGVkQ29weSgpOwotICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihnbG9iYWxTY29wZS51cmwoKS5p
c29sYXRlZENvcHkoKSk7CisgICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gbWFr
ZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVk
Q29weSgpKTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5U3RhdGVGcm9tKGNv
bnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29w
eVVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RTdGF0ZUZyb20oKmNvbnRlbnRTZWN1cml0eVBvbGljeSk7
CiAKLSAgICBhdXRvIG9wdGlvbnNDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJUYXNrT3B0
aW9ucz4ob3B0aW9ucywgcmVxdWVzdC5odHRwUmVmZXJyZXIoKS5pc051bGwoKSA/IG91dGdvaW5n
UmVmZXJyZXIgOiByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lu
Q29weSkpOworICAgIGF1dG8gb3B0aW9uc0NvcHkgPSBtYWtlVW5pcXVlPExvYWRlclRhc2tPcHRp
b25zPihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8gb3V0Z29pbmdS
ZWZlcnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5D
b3B5KSk7CiAKICAgICAvLyBBbGwgbG9hZHMgc3RhcnQgb3V0IGFzIERvY3VtZW50LiBJbnNpZGUg
V29ya2VyVGhyZWFkYWJsZUxvYWRlciB3ZSB1cGdyYWRlIHRoaXMgdG8gYSBXb3JrZXIgbG9hZC4K
ICAgICBBU1NFUlQob3B0aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9PSBJbml0
aWF0b3JDb250ZXh0OjpEb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGY5N2ViMDA0MjViZDI5YjNj
YjZiY2IzNDVmYmZkNjUyMjQwOGY4Y2UuLmJiYTkxMDQxOTE1NGVjZjQzYzEyMmUyZDkwY2Y4NjQ1
NTk3YTk5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShOb2RlJiBub2RlLCBXVEY6OkZ1bmN0
aW9uPGJvb2wKICAgICAvLyBidXQgd2UgY2FuIGFwcHJveGltYXRlIHRoYXQgYnkgY2hlY2tpbmcg
aWYgc2NyaXB0aW5nIGlzIGVuYWJsZWQgcmlnaHQgbm93LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8UXVhbGlmaWVkTmFtZT4+IHRhZ05hbWVzVG9GaWx0ZXI7CiAgICAgaWYgKGZyYW1lLT5w
YWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkgewot
ICAgICAgICB0YWdOYW1lc1RvRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UXVhbGlm
aWVkTmFtZT4+KCk7CisgICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxRdWFsaWZpZWROYW1lPj4oKTsKICAgICAgICAgdGFnTmFtZXNUb0ZpbHRlci0+YXBwZW5kKEhU
TUxOYW1lczo6bm9zY3JpcHRUYWcpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggZjMxMjkwNzI4ZjY5OTBkODAwOGJhMjY0NDAyMWNi
MWQ4ODViOTQ1Ny4uNzBmNTg2ODQ4ZWFlZTI5MTI2YzRiYWU5MTA2YzE1ZTI5NmE5MDc0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0xMDUsNyAr
MTA1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKICAgICAgICAgbV9pbWFnZU9ic2VydmVyLT5jYWNoZWRJbWFnZXMo
KS5hZGQodGhpcyk7CiAKICAgICBpZiAobV9pbWFnZSAmJiBpczxTVkdJbWFnZT4oKm1faW1hZ2Up
KQotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2Fj
aGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAgICAgbV9zdmdJbWFnZUNh
Y2hlID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2lt
YWdlKSk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJj
ZUNsaWVudCYgY2xpZW50KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIGlubGluZSB2b2lkIENhY2hlZElt
YWdlOjpjcmVhdGVJbWFnZSgpCiAKICAgICBpZiAobV9pbWFnZSkgewogICAgICAgICBpZiAoaXM8
U1ZHSW1hZ2U+KCptX2ltYWdlKSkKLSAgICAgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkp
OworICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hl
PigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CiAKICAgICAgICAgLy8gU2VuZCBxdWV1
ZWQgY29udGFpbmVyIHNpemUgcmVxdWVzdHMuCiAgICAgICAgIGlmIChtX2ltYWdlLT51c2VzQ29u
dGFpbmVyU2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAppbmRleCBiZTYxODNhYmZhNTlkNWM4ZTE2MmZlYzFkNjU1MjQ1MjNh
ZGUyNzhjLi5mOWE3NWYzNTQ1Mjc2OTAyYTllNGE1YzM1YjZhYzZiMWYxNTBjMzA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAg
LTIwOCw3ICsyMDgsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVk
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cgogICAgICAgICBDYWNoZWRS
ZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UgewogICAgICAgICBtX3JlZGlyZWN0
Q2hhaW4uYXBwZW5kKFJlZGlyZWN0UGFpcihyZXF1ZXN0LCByZXNwb25zZSkpOwotICAgICAgICBp
dGVyYXRlQ2xpZW50cyhDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudD4obV9jbGllbnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+KHRoaXMpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVz
cG9uc2U+KHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkgbXV0YWJsZSB7CisgICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIG1ha2VV
bmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIENhY2hlZFJlc291cmNl
OjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGU0MzBlNDQ3YWM0OTQ2MzZj
OTg0ZTc0ZDQwYjkxZTY1Y2RlYmI1MGIuLjA1NjdkMWQ1ZGU4YzZmMTNlMTg2ODQ0YWVkNzU1NzVj
ZjE3ZTE3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcApAQCAtNTQ2LDcgKzU0Niw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVu
dFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIC8vIFRoZXJlZm9y
ZSwgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgc2VuZGluZyBjYWxsYmFja3Mgb24gYSBjYWNoZSBo
aXQgbGlrZSBvdGhlciBDYWNoZWRSZXNvdXJjZXMsCiAgICAgICAgIC8vIHdlIHNjaGVkdWxlIHRo
ZSBjYWxsYmFja3MgYW5kIGVuc3VyZSB3ZSBuZXZlciBmaW5pc2ggc3luY2hyb25vdXNseS4KICAg
ICAgICAgQVNTRVJUKCFtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmNvbnRhaW5zKCZjbGllbnQp
KTsKLSAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoJmNsaWVudCwgc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsIGNsaWVudCkpOworICAgICAgICBtX2NsaWVudHNB
d2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50LCBtYWtlVW5pcXVlPENhbGxiYWNrPigqdGhpcywg
Y2xpZW50KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg0
M2E5ZDFmOWQ2Yzg1ZjEwMDBhMmM0MGYxOTY0YjQ3YTJlYjFjN2EuLmIzNGI4ZmQzNWMxMDc3YTU0
NTJhYmIzNDMyMzYxYjRjYzNkMTFjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIFJl
c291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgLy8gRW50cnkgcG9pbnQgdG8gaHR0cHM6Ly9mZXRj
aC5zcGVjLndoYXR3Zy5vcmcvI21haW4tZmV0Y2guCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291
cmNlUmVxdWVzdD4gb3JpZ2luYWxSZXF1ZXN0OwogICAgIGlmIChDYWNoZWRSZXNvdXJjZTo6c2hv
dWxkVXNlUGluZ0xvYWQodHlwZSkgfHwgcmVxdWVzdC5vcHRpb25zKCkuZGVzdGluYXRpb24gPT0g
RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpIHsKLSAgICAgICAgb3JpZ2lu
YWxSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkpOworICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBtYWtlVW5pcXVlPFJl
c291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIG9yaWdp
bmFsUmVxdWVzdC0+Y2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0
LT5jbGVhckhUVFBPcmlnaW4oKTsKICAgICB9CkBAIC0xMzkxLDcgKzEzOTEsNyBAQCBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cHJlbAogICAgICAgICByZXNvdXJjZVZhbHVlLT5pbmNyZWFzZVByZWxvYWRD
b3VudCgpOwogCiAgICAgICAgIGlmICghbV9wcmVsb2FkcykKLSAgICAgICAgICAgIG1fcHJlbG9h
ZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7Cisg
ICAgICAgICAgICBtX3ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNv
dXJjZSo+PigpOwogICAgICAgICBtX3ByZWxvYWRzLT5hZGQocmVzb3VyY2VWYWx1ZS5nZXQoKSk7
CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZTsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMoQ2xlYXJQcmVsb2Fkc01vZGUgbW9k
ZSkKICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICAgICAgaWYgKG1vZGUgPT0gQ2xlYXJQ
cmVsb2Fkc01vZGU6OkNsZWFyU3BlY3VsYXRpdmVQcmVsb2FkcyAmJiByZXNvdXJjZS0+aXNMaW5r
UHJlbG9hZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZ0xpbmtQcmVsb2FkcykKLSAg
ICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExp
c3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5n
TGlua1ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+Pigp
OwogICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzLT5hZGQocmVzb3VyY2UpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKaW5kZXggNzBjYjFh
ZmE0Y2YxZDNhNmU2NDJhOGFlOWRiODQ0OGY4NGQxNGJkNi4uMTQ0MjU3NGMzZGI4ZDVlZmFkM2Rj
NzUyMzc5YWZjZTAyOTdkMGVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKQEAgLTM2LDYgKzM2LDcgQEAg
Y2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
OwogCiBjbGFzcyBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA6IHB1YmxpYyBDYWNoZWRTVkdE
b2N1bWVudENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGQzYjgwNTE0MjNjM2Zj
NTI0YmQ4YjZmNTVmMzVhNmFjMjIzMGIyMDIuLjNkZWFkNDZjMWQ0ZDc4Y2Y3Y2RmMDNhZmZjYmVm
MzkyNzgyNjNjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcApAQCAtODYsNyArODYsNyBAQCBhdXRvIE1lbW9yeUNhY2hlOjplbnN1cmVTZXNzaW9uUmVz
b3VyY2VNYXAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiBDYWNoZWRSZQogICAgIEFTU0VS
VChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKICAgICBhdXRvJiBtYXAgPSBtX3Nlc3Npb25SZXNvdXJj
ZXMuYWRkKHNlc3Npb25JRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghbWFw
KQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlTWFwPigpOwor
ICAgICAgICBtYXAgPSBtYWtlVW5pcXVlPENhY2hlZFJlc291cmNlTWFwPigpOwogICAgIHJldHVy
biAqbWFwOwogfQogCkBAIC0yMTYsNyArMjE2LDcgQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAog
ICAgIHJlbW92ZUltYWdlRnJvbUNhY2hlKHVybCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAv
LyBSZW1vdmUgY2FjaGUgZW50cnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCiAKICAgICBhdXRvIGJp
dG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7
Ci0gICAgYXV0byBjYWNoZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVy
bCwgYml0bWFwSW1hZ2UucHRyKCksIHNlc3Npb25JRCwgY29va2llSmFyLCBkb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbik7CisgICAgYXV0byBjYWNoZWRJbWFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkSW1h
Z2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCksIHNlc3Npb25JRCwgY29va2llSmFyLCBkb21haW5G
b3JDYWNoZVBhcnRpdGlvbik7CiAKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KGR1bW15Q2Fj
aGVkSW1hZ2VDbGllbnQoKSk7CiAgICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1h
cEltYWdlLT5kZWNvZGVkU2l6ZSgpKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCBhdXRvIE1lbW9yeUNh
Y2hlOjpscnVMaXN0Rm9yKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkgLT4gTFJVTGlzdCYKIAog
ICAgIG1fYWxsUmVzb3VyY2VzLnJlc2VydmVDYXBhY2l0eShxdWV1ZUluZGV4ICsgMSk7CiAgICAg
d2hpbGUgKG1fYWxsUmVzb3VyY2VzLnNpemUoKSA8PSBxdWV1ZUluZGV4KQotICAgICAgICBtX2Fs
bFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxMUlVMaXN0PigpKTsK
KyAgICAgICAgbV9hbGxSZXNvdXJjZXMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8TFJVTGlz
dD4oKSk7CiAgICAgcmV0dXJuICptX2FsbFJlc291cmNlc1txdWV1ZUluZGV4XTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCmluZGV4IGY2YjgyMjE3OTE2
Y2FkOTViZmU5NjBiYjNlMzc4NGEyNzBhOWJhNjcuLmM1Y2E1YzI1ZjExYjRkOGE5Y2E5M2VmYzg4
OTA5OTA3ZjZiNzY2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJl
dmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW0KQEAgLTg2LDcgKzg2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VM
b2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJjZVIKIAogICAgIF9y
ZXNvdXJjZUxvYWRlciA9IG1ha2VXZWFrUHRyKHJlc291cmNlTG9hZGVyKTsKICAgICBfcmVzcG9u
c2UgPSByZXNvdXJjZVJlc3BvbnNlOwotICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSk7CisgICAgX2NvbnZlcnRlciA9IG1h
a2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKICAgICBfYnVmZmVy
ZWREYXRhQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAg
ICBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyA9IHJlc291cmNlTG9hZGVyLmZyYW1l
KCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1By
ZXZpZXcoKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxD
b25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAg
ICAgfQogCiAgICAgX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFtzZWxmLCByZXRhaW5lZFNl
bGYgPSByZXRhaW5QdHIoc2VsZildIChjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSB7Ci0gICAgICAg
IF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9y
ZXNwb25zZSwgcGFzc3dvcmQpOworICAgICAgICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2
aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UsIHBhc3N3b3JkKTsKICAgICAgICAgW19jb252
ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgYXBwZW5kRGF0YUFycmF5Ol9idWZmZXJlZERhdGFB
cnJheS5nZXQoKV07CiAgICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZp
bmlzaGVkQXBwZW5kaW5nRGF0YV07CiAgICAgfSk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUHJldmll
d0xvYWRlcjo6flByZXZpZXdMb2FkZXIoKQogc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+
IFByZXZpZXdMb2FkZXI6OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQoUHJldmlld0NvbnZlcnRlcjo6
c3VwcG9ydHNNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CiB9CiAKIGJvb2wg
UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4
IGM0NzljYTFmOWNiMDdkNGFjN2I0YjlmYjIyODUxZjBjOTk0YjE3MTQuLjRjY2RhYjA0YjdiM2Y1
NTM0Y2VjYzJhMTllYzBhNGJjYjdhYjE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0
TWVudShFdmVudAogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q29udGV4dE1lbnU+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGV4dE1lbnU+KCk7CiB9
CiAKIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29udGV4dE1lbnUoRXZlbnQmIGV2
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCBmNjNk
YWE3ZjYzNDcyNTU4ODczZGIzYjU4M2JjMjUxMmExNzc1MjdhLi5jZGM3NGY2ZGUwOWU5M2RlOWFh
YjkyMzU2ZWYyZmJmNDRkZDJkMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92
ZXJsYXlzLmNwcApAQCAtODgsNyArODgsNyBAQCBjbGFzcyBNb3VzZVdoZWVsUmVnaW9uT3Zlcmxh
eSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5IHsKIAogYm9vbCBNb3VzZVdoZWVsUmVnaW9u
T3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIHsKLSAgICBhdXRvIHJlZ2lvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVnaW9uPigpOworICAgIGF1dG8gcmVnaW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KCk7
CiAgICAgCiAgICAgZm9yIChjb25zdCBGcmFtZSogZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAg
IGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNDhjMDczNDc3MGViMTEwYzFjNWQ4NDUzZGQwODc5OTJl
NTY0OWExZS4uZDIwYjk4YzQxNWVlYzgyNzZmODkwMGYyNGM2N2E5N2YxMDFkMGEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIEV2ZW50SGFu
ZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAg
LCBtX3BlbmRpbmdNb21lbnR1bVdoZWVsRXZlbnRzVGltZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6
OmNsZWFyTGF0Y2hlZFN0YXRlKQogI2VuZGlmCi0gICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVy
KHN0ZDo6bWFrZV91bmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkpCisgICAgLCBtX2F1dG9z
Y3JvbGxDb250cm9sbGVyKG1ha2VVbmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkpCiAjaWYg
IUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgICwgbV9mYWtlTW91c2VNb3ZlRXZlbnRUaW1l
cigqdGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCkKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDIzMzcyOTQyYjM3NjNkOTI5M2Qy
NjViMzVhY2MxNTI1ZTM0Y2MwMGYuLmE1ZTVlZGUwYjRiNzQ3ZTQ3OTRkYzc5NDA2YWVmY2NiYjM4
NWRkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTEsNyArMTI5MSw3IEBA
IFJlbmRlckJveCogRnJhbWVWaWV3OjplbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdAogdm9pZCBG
cmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3Qm
IGVtYmVkZGVkT2JqZWN0KQogewogICAgIGlmICghbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkK
LSAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGlz
dEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKKyAgICAgICAgbV9lbWJlZGRlZE9i
amVjdHNUb1VwZGF0ZSA9IG1ha2VVbmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmpl
Y3QqPj4oKTsKIAogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCA9IGVtYmVkZGVk
T2JqZWN0LmZyYW1lT3duZXJFbGVtZW50KCk7CiAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50
PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSkgewpAQCAtMTQyNyw3
ICsxNDI3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyKQogICAgIGJvb2wgaGFkU2xvd1JlcGFpbnRPYmplY3RzID0gaGFzU2xv
d1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBpZiAoIW1fc2xvd1JlcGFpbnRPYmplY3RzKQotICAg
ICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25z
dCBSZW5kZXJFbGVtZW50Kj4+KCk7CisgICAgICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzID0gbWFr
ZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVsZW1lbnQqPj4oKTsKIAogICAgIG1fc2xvd1Jl
cGFpbnRPYmplY3RzLT5hZGQoJnJlbmRlcmVyKTsKICAgICBpZiAoaGFkU2xvd1JlcGFpbnRPYmpl
Y3RzKQpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBh
aW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogdm9pZCBGcmFtZVZpZXc6OmFkZFZp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogb2JqZWN0KQog
ewogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKLSAgICAgICAgbV92aWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdFNldD4oKTsKKyAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9
IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKIAogICAgIGlmICgh
bV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkgewogICAgICAg
ICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5hZGQob2JqZWN0KTsKQEAgLTQ4NjYsNyAr
NDg2Niw3IEBAIFN0cmluZyBGcmFtZVZpZXc6OnRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBj
b25zdAogYm9vbCBGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBz
Y3JvbGxhYmxlQXJlYSkKIHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQotICAgICAgICBt
X3Njcm9sbGFibGVBcmVhcyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7
CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0gbWFrZVVuaXF1ZTxTY3JvbGxhYmxlQXJlYVNl
dD4oKTsKICAgICAKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYXMtPmFkZChzY3JvbGxhYmxlQXJl
YSkuaXNOZXdFbnRyeSkgewogICAgICAgICBzY3JvbGxhYmxlQXJlYVNldENoYW5nZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCmluZGV4IDcz
MDk4ZjFmYTFmMTA3MWU2MWZjZDNhYTY1MzUzMzBkM2U4OWJmNTkuLmU4NThjOTJjYmY4YzMxYTMy
MWJmMzgwMDk3YWJhNTVmMTU3MDAwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtNTk2LDE0ICs1OTYsMTQgQEAgdm9pZCBGcmFtZVZp
ZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUoUmVuZGVyRWxlbWVudCYgcm9vdCkKICAg
ICBBU1NFUlQoIW1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVDb3VudCk7CiAgICAgQVNTRVJUKCFs
YXlvdXRTdGF0ZSgpKTsKIAotICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9vdCkpOworICAgIG1fbGF5b3V0U3RhdGVTdGFj
ay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9vdCkpOwogfQogCiBib29s
IEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZUZvclBhZ2luYXRpb25JZk5l
ZWRlZChSZW5kZXJCbG9ja0Zsb3cmIGxheW91dFJvb3QpCiB7CiAgICAgaWYgKGxheW91dFN0YXRl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxh
eW91dFN0YXRlOjpJc1BhZ2luYXRlZDo6WWVzKSk7CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFw
cGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihsYXlvdXRSb290LCBSZW5kZXJMYXlv
dXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOwogICAgIHJldHVybiB0cnVlOwogfQogICAgIApA
QCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91
dFN0YXRlKFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFNpCiAgICAgYXV0byogbGF5
b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIGlmICghbGF5b3V0U3RhdGUgfHwg
IW5lZWRzRnVsbFJlcGFpbnQoKSB8fCBsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSB8fCByZW5k
ZXJlci5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpCiAgICAgICAgIHx8IGxheW91dFN0YXRlLT5s
aW5lR3JpZCgpIHx8IChyZW5kZXJlci5zdHlsZSgpLmxpbmVHcmlkKCkgIT0gUmVuZGVyU3R5bGU6
OmluaXRpYWxMaW5lR3JpZCgpICYmIHJlbmRlcmVyLmlzUmVuZGVyQmxvY2tGbG93KCkpKSB7Ci0g
ICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJM
YXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVp
Z2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOworICAgICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBw
ZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVu
ZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvckJhc2UuY3BwCmluZGV4IDhjM2M1MmEwNzM1MjI3OTBjZDBjNGE2MGRjMDVlNjE0MTJj
MTlhZTkuLjUyMjdlNDJhYzA5NmNlNjkyNWQ3ZWM2YTE4ZTUxOTI1ZDJlMDA2YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFNlcnZpY2VX
b3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIoKQogewogICAgIEFT
U0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3Jr
ZXJFbmFibGVkKCkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyKQotICAgICAg
ICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMpOworICAgICAgICBt
X3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMpOwogICAgIHJldHVybiAqbV9zZXJ2
aWNlV29ya2VyQ29udGFpbmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBlZGE3YzVmYTVk
NjQ3OWJhNzEwOTAyMGI1MjgzMmNlMjYxYmNkN2U5Li4yOWEyYWY3NGJjYWRkNmIzMGM2YWZmNjBl
YzRlMzFkMGI0NzJiZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIxMSwyNiArMjExLDI2IEBA
IHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IHBhZ2VJbml0
aWFsQWN0aXZpdHlTdGF0ZSgpCiB9CiAKIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2hyb21lKHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21l
PigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCi0gICAgLCBtX2RyYWdD
YXJldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQor
ICAgIDogbV9jaHJvbWUobWFrZVVuaXF1ZTxDaHJvbWU+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRp
b24uY2hyb21lQ2xpZW50KSkKKyAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihtYWtlVW5pcXVl
PERyYWdDYXJldENvbnRyb2xsZXI+KCkpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICAs
IG1fZHJhZ0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMs
ICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkKKyAgICAsIG1fZHJhZ0NvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFn
Q2xpZW50KSkKICNlbmRpZgotICAgICwgbV9mb2N1c0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCisg
ICAgLCBtX2ZvY3VzQ29udHJvbGxlcihtYWtlVW5pcXVlPEZvY3VzQ29udHJvbGxlcj4oKnRoaXMs
IHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1l
bnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50
KSkKKyAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKG1ha2VVbmlxdWU8Q29udGV4dE1lbnVD
b250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkK
ICNlbmRpZgotICAgICwgbV91c2VySW5wdXRCcmlkZ2Uoc3RkOjptYWtlX3VuaXF1ZTxVc2VySW5w
dXRCcmlkZ2U+KCp0aGlzKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5pbnNw
ZWN0b3JDbGllbnQpKQorICAgICwgbV91c2VySW5wdXRCcmlkZ2UobWFrZVVuaXF1ZTxVc2VySW5w
dXRCcmlkZ2U+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVl
PEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JD
bGllbnQpKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICAsIG1fcG9pbnRlckNhcHR1
cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckNhcHR1cmVDb250cm9sbGVyPigq
dGhpcykpCisgICAgLCBtX3BvaW50ZXJDYXB0dXJlQ29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50
ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKLSAgICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9p
bnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxl
cihtYWtlVW5pcXVlPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAg
LCBtX3NldHRpbmdzKFNldHRpbmdzOjpjcmVhdGUodGhpcykpCi0gICAgLCBtX3Byb2dyZXNzKHN0
ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jl
c3NUcmFja2VyQ2xpZW50KSkKLSAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKHN0ZDo6bWFr
ZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQorICAgICwgbV9wcm9ncmVzcyhtYWtlVW5pcXVl
PFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVu
dCkpCisgICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihtYWtlVW5pcXVlPEJhY2tGb3J3YXJk
Q29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRD
bGllbnQpKSkKICAgICAsIG1fbWFpbkZyYW1lKEZyYW1lOjpjcmVhdGUodGhpcywgbnVsbHB0ciwg
cGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lKSkKICAgICAsIG1fZWRp
dG9yQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50KSkKICAgICAs
IG1fcGx1Z0luQ2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCkKQEAgLTI1MCw5
ICsyNTAsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRp
b24pCiAgICAgLCBtX2RvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyKCp0aGlz
LCAmUGFnZTo6ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXJGaXJlZCkKICAg
ICAsIG1fYWN0aXZpdHlTdGF0ZShwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkKICAgICAsIG1f
YWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLmFsdGVybmF0aXZlVGV4dENs
aWVudCkKLSAgICAsIG1fY29uc29sZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xl
Q2xpZW50PigqdGhpcykpCisgICAgLCBtX2NvbnNvbGVDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ29u
c29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwg
bV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0
aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dh
YmxlPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fc29ja2V0UHJvdmlkZXIoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlcikpCiAgICAgLCBtX2Nvb2tpZUphcihXVEZNb3Zl
KHBhZ2VDb25maWd1cmF0aW9uLmNvb2tpZUphcikpCkBAIC0yNjgsMTYgKzI2OCwxNiBAQCBQYWdl
OjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3Bs
YXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGltZXIoKnRoaXMsICZQYWdlOjpwbGF5YmFja0Nv
bnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1faXNVdGlsaXR5
UGFnZShpc1V0aWxpdHlQYWdlQ2hyb21lQ2xpZW50KGNocm9tZSgpLmNsaWVudCgpKSkKLSAgICAs
IG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/IG51bGxwdHIgOiBzdGQ6Om1h
a2VfdW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQotICAgICwgbV9sb3dQb3dlck1v
ZGVOb3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10o
Ym9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlz
TG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQotICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmcoc3Rk
OjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+KCp0aGlzKSkKKyAgICAsIG1fcGVyZm9y
bWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/IG51bGxwdHIgOiBtYWtlVW5pcXVlPFBlcmZv
cm1hbmNlTW9uaXRvcj4oKnRoaXMpKQorICAgICwgbV9sb3dQb3dlck1vZGVOb3RpZmllcihtYWtl
VW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVu
YWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7
IH0pKQorICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmcobWFrZVVuaXF1ZTxQZXJmb3JtYW5jZUxv
Z2dpbmc+KCp0aGlzKSkKICNpZiBQTEFURk9STShNQUMpICYmIChFTkFCTEUoU0VSVklDRV9DT05U
Uk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSkKLSAgICAsIG1fc2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2VydmljZXNPdmVybGF5Q29udHJvbGxlcihtYWtl
VW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwg
bV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXIoV2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVh
dGUoKSkKLSAgICAsIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BhZ2VPdmVybGF5Q29udHJvbGxl
cihtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShB
UFBMRV9QQVkpCi0gICAgLCBtX3BheW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBh
eW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNs
aWVudCkpCisgICAgLCBtX3BheW1lbnRDb29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29y
ZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCkpCiAj
ZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICwgbV9hdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KSkpCkBAIC01NjEs
NyArNTYxLDcgQEAgdm9pZCBQYWdlOjppbml0R3JvdXAoKQogewogICAgIEFTU0VSVCghbV9zaW5n
bGVQYWdlR3JvdXApOwogICAgIEFTU0VSVCghbV9ncm91cCk7Ci0gICAgbV9zaW5nbGVQYWdlR3Jv
dXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VHcm91cD4oKnRoaXMpOworICAgIG1fc2luZ2xlUGFn
ZUdyb3VwID0gbWFrZVVuaXF1ZTxQYWdlR3JvdXA+KCp0aGlzKTsKICAgICBtX2dyb3VwID0gbV9z
aW5nbGVQYWdlR3JvdXAuZ2V0KCk7CiB9CiAKQEAgLTI2NTQsNyArMjY1NCw3IEBAIHZvaWQgUGFn
ZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICB9CiAK
ICAgICBpZiAoIW1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgJiYgbV9zZXR0aW5ncy0+YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkKLSAgICAgICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+KCp0aGlzKTsKKyAgICAgICAg
bV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+
KCp0aGlzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCmluZGV4IGQwMzJmY2Y3MGY4NmE2M2FhZGQxMWYyMjdmYTk2ZGQwNjNjMWVhNjEuLjYz
ZjY1NmYxYTVhYjhlMjZmYjk1NWU2MzRlNDVhOWE4YTEyZmRkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBAIC0xNjAsOSArMTYwLDkgQEAgdm9pZCBQYWdl
Q29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb24KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4gbWVzc2FnZTsKIAogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2Fn
ZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwo
KSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBt
ZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVy
KTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3Nh
Z2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVt
bk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6
TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJl
ciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCiAg
ICAgYWRkTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCB2
b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBib29s
IGdvdE1lc3NhZ2UgPSBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdl
VGV4dCk7CiAKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBt
ZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdl
ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCks
IGV4ZWMpOwogCiAgICAgU3RyaW5nIHVybCA9IG1lc3NhZ2UtPnVybCgpOwogICAgIHVuc2lnbmVk
IGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5lKCk7CkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBQ
YWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxT
Y3JpcHRBcmd1bWVudHM+JiYKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkYXRhVVJMLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgYWRkTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNo
b3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOworICAgICAgICAgICAgYWRkTWVzc2FnZShtYWtl
VW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkNvdWxkIG5vdCBj
YXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgUGFnZUNv
bnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWY8U2NyaXB0
QXJndW1lbnRzPiYmCiAgICAgZm9yIChzaXplX3QgaSA9ICghdGFyZ2V0ID8gMCA6IDEpOyBpIDwg
YXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYWRqdXN0ZWRBcmd1bWVu
dHMuYXBwZW5kKHsgc3RhdGUtPnZtKCksIGFyZ3VtZW50cy0+YXJndW1lbnRBdChpKSB9KTsKICAg
ICBhcmd1bWVudHMgPSBTY3JpcHRBcmd1bWVudHM6OmNyZWF0ZSgqc3RhdGUsIFdURk1vdmUoYWRq
dXN0ZWRBcmd1bWVudHMpKTsKLSAgICBhZGRNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywgZGF0YVVSTCwgV1RGTW92ZShhcmd1bWVudHMp
KSk7CisgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxl
dmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggOTE5MzYwNDVjMmZh
Zjc2Y2FjNWUyYzY5ZTYyMzNmMmNlMzBiZjliMS4uMTI4YzE4ZjE0YjkwOGU3MWJjN2NlZmIzOTYy
MDdmZWJiYzAwZjJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtMTE2LDkgKzEx
Niw5IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMmIFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVu
Y2VzKCkKIHsKICAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2VzKSB7CiAjaWYgUExBVEZPUk0o
TUFDKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQotICAgICAgICBtX2Nh
cHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNl
c01lZGlhQUY+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5p
cXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGPigqdGhpcyk7CiAjZWxzZQotICAgICAg
ICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlcz4oKnRoaXMpOworICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlx
dWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRoaXMpOwogI2VuZGlmCiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4IDZjMTViM2ZhYTgzZjVjYWUwZDkxNzZkMDBj
OGFmYzE1Yjc2NjkzMTYuLmNiYmFjMjFkNDAwNWIxYjBlMTE4MDIyZjdhYTE0YThiY2ZlZDg1MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9p
ZCBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsVGltZXJGaXJlZCgpCiBFeGNl
cHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQog
ewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1h
a2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFr
ZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IG1fdXNlclRp
bWluZy0+bWFyayhtYXJrTmFtZSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAg
LTI3OSwxNCArMjc5LDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNv
bnN0IFN0cmluZyYgbWFya05hbWUpCiB2b2lkIFBlcmZvcm1hbmNlOjpjbGVhck1hcmtzKGNvbnN0
IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1f
dXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAg
ICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3Vz
ZXJUaW1pbmctPmNsZWFyTWFya3MobWFya05hbWUpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBQ
ZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJp
bmcmIHN0YXJ0TWFyaywgY29uc3QgU3RyaW5nJiBlbmRNYXJrKQogewogICAgIGlmICghbV91c2Vy
VGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1p
bmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5n
PigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IG1fdXNlclRpbWluZy0+bWVhc3VyZShtZWFz
dXJlTmFtZSwgc3RhcnRNYXJrLCBlbmRNYXJrKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQpAQCAtMzAwLDcgKzMwMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjpt
ZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYKIHZvaWQgUGVy
Zm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSkKIHsKICAg
ICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3Vu
aXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlx
dWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRpbWluZy0+Y2xlYXJNZWFzdXJlcyht
ZWFzdXJlTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2Fy
bUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5o
CmluZGV4IDk5YTQzNzJlNTRkODQwMjliYWZiZjliOGY3YTU4MjAwMWZhNjNhMWIuLjE2YmNmMDQz
OTBhMTcwZjNkZTc4MjY1MGMyZmMyNTIyY2Y1MDU0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cmV3YXJtSW5mb3JtYXRpb24uaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUHJld2FybUluZm9ybWF0aW9uIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRm9udENhY2hlOjpQcmV3YXJtSW5mb3Jt
YXRpb24gZm9udENhY2hlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4
IDAzNzBmMjg4N2Y2NWI1N2IzY2Q4OTdlNGZjNjllOGEyZWZiODc1ZGYuLjQ0MjkxYWVmYTM3Yzhh
N2E4NDQ4YmVjMzlhZWVhYzI0MzllYzQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4
dC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6b3V0cHV0TGlua2Vk
RGVzdGluYXRpb25zKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBEbwogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIW1fbGlua2VkRGVzdGluYXRpb25zKSB7Ci0gICAgICAgIG1f
bGlua2VkRGVzdGluYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVm
PEVsZW1lbnQ+Pj4oKTsKKyAgICAgICAgbV9saW5rZWREZXN0aW5hdGlvbnMgPSBtYWtlVW5pcXVl
PEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxlbWVudD4+PigpOwogICAgICAgICBjb2xsZWN0TGlua2Vk
RGVzdGluYXRpb25zKGRvY3VtZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcAppbmRleCA1NmEwMTFjNGNlZTk5Nzg5OTAx
ZmFkMzYzMDJiZTEwYzM0NTY2NTI3Li4zYjg4MWRmYmIxNzE3ZjRlNDExYTZjNTM0NDU5NWZiZDNh
YjQzMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVy
Ojppc1NjaGVkdWxlZCgpIGNvbnN0CiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3Rh
cnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAgIEFTU0VSVCghaXNTY2hlZHVsZWQoKSk7Ci0g
ICAgbV9yZWZyZXNoVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRl
cmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CisgICAgbV9yZWZyZXNo
VGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CiAgICAgbV9yZWZyZXNoVGltZXItPnN0YXJ0T25lU2hv
dChkZWxheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlci5oCmluZGV4IGZhZGU2MmZjNzg3ZWU0ODk3OWFmNmRkODI2NjI3Nzk4MDRkMzc1MTcu
LjZmMDYwODE3ODI2ZWM1NmM2ZWU4YTVmOGNkMzk0NGVjMmQ0MTkwZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaApAQCAtNDIsNyArNDIsNyBA
QCBjbGFzcyBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIKIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4gY3JlYXRlKFBhZ2UmIHBhZ2Up
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXI+KHBhZ2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXI+KHBhZ2UpOwogICAgIH0KIAogICAgIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cihQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKaW5kZXggOTViMWM4YjVi
ZTgzZDg5YjI0OTc5ZWFlZDliOWQ0ZTkwZDNmNGY4Ny4uZWVlYmY5YjllNjFiZDU4OGZkM2JhOTlm
YWIxNTAxOTFjYzhmNjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVP
YnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaApAQCAt
NDAsNiArNDAsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiAKIHN0cnVjdCBS
ZXNpemVPYnNlcnZlckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICBWZWN0b3I8V2Vha1B0cjxSZXNpemVPYnNlcnZlcj4+IG9ic2VydmVyczsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNDIzNDE4MjgwZWEyZWUzYzli
ZmRmYzkxY2QxMjdiOTY4ZWIxZTFiZi4uMGRlYjA2NDE0OGY5NzI2Y2QzOGI0MTAwNWQ1MjI5NzI2
MGMxYzY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTE4OSw3
ICsxODksNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwogICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRkKHNvdXJjZVN0cmluZywgbnVsbHB0cik7CiAg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7CisgICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4o
KTsKIAogICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7CiAgICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRy
eTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NB
c0lQQWRkcmVzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCmluZGV4IGI2ODQ4
OTZmMzk4ODQ2MjU0YTE3OTdhZGNkZWQ2NjY2MDVlODVkNWMuLjI3ZWVhNmMwYWI5MzhlYmM4Zjk2
NWRhY2I4MjAzMTE0NDMxNjBiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgbGF5b3V0U2NoZWR1bGVUaHJl
c2hvbGQgPSAyNTBfbXM7CiAKIFNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKFBhZ2UqIHBhZ2Up
CiAgICAgOiBtX3BhZ2UobnVsbHB0cikKLSAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyhzdGQ6
Om1ha2VfdW5pcXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCisgICAgLCBtX2ZvbnRHZW5lcmlj
RmFtaWxpZXMobWFrZVVuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQogICAgICwgbV9sYXlv
dXRJbnRlcnZhbChsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCkKICAgICAsIG1fbWluaW11bURPTVRp
bWVySW50ZXJ2YWwoRE9NVGltZXI6OmRlZmF1bHRNaW5pbXVtSW50ZXJ2YWwoKSkKICAgICAsIG1f
c2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcigqdGhpcywgJlNldHRpbmdzQmFzZTo6aW1hZ2VM
b2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TdXNwZW5kYWJsZVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGlt
ZXIuaAppbmRleCA1NTg0NDM0MDc4MzQ2ZmI5YjU3YTZlYTU5YWZjZTI3YTYyNDBiNTVhLi4zYzNk
NDllMDU4YWIxMzE3NDdlYjQ5YmIwYzkzYTBmZDI5NDUxOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1N1c3BlbmRhYmxlVGltZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTdXNwZW5kYWJsZVRpbWVyIDogcHJpdmF0ZSBUaW1lckJhc2UsIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwog
ICAgIHZpcnR1YWwgflN1c3BlbmRhYmxlVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBiOWNlOThjYzZjYTVjMjQ1NmNkYjk0ZjVk
YzQxYjRkMmI1MGU5OGY2Li42NTIzMTFkN2E1NWY1NTA3YTA1YWE0M2I2MmM4MDIwODcyMmRiYWQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpmb3JFYWNoVXNlck1l
c3NhZ2VIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgVXNlck1lCiAKIHZvaWQgVXNlckNvbnRl
bnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6
dW5pcXVlX3B0cjxVc2VyU2NyaXB0PiB1c2VyU2NyaXB0KQogewotICAgIGF1dG8mIHNjcmlwdHNJ
bldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAg
YXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFsmXSB7
IHJldHVybiBtYWtlVW5pcXVlPFVzZXJTY3JpcHRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1
ZTsKICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclNjcmlwdCkpOwogfQog
CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVz
ZXJTY3JpcHRzKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAKIHZvaWQgVXNlckNvbnRlbnRDb250
cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVu
aXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0LCBVc2VyU3R5bGVJbmplY3Rp
b25UaW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0g
bV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBh
dXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxk
LCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRl
cmF0b3ItPnZhbHVlOwogICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNl
clN0eWxlU2hlZXQpKTsKIAogICAgIGlmIChpbmplY3Rpb25UaW1lID09IEluamVjdEluRXhpc3Rp
bmdEb2N1bWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRE
ZWx0YUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRl
ci5jcHAKaW5kZXggZjI1OWFlYjFhMGE5ZTVjZTdhMTM0ZjBkMTI2OWVjMzE0YzlhOWMzMS4uMzA0
ZDk0YTc1YmYzNjFkOGRkNDZmNmFmZmFmZTMxYzNlZjgyYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcApAQCAtNDMsOSArNDMsOSBAQCBXaGVl
bEV2ZW50RGVsdGFGaWx0ZXI6On5XaGVlbEV2ZW50RGVsdGFGaWx0ZXIoKSA9IGRlZmF1bHQ7CiBz
dGQ6OnVuaXF1ZV9wdHI8V2hlZWxFdmVudERlbHRhRmlsdGVyPiBXaGVlbEV2ZW50RGVsdGFGaWx0
ZXI6OmNyZWF0ZSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFdoZWVsRXZlbnREZWx0YUZpbHRlck1hYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggMTQ0NjYzY2FlOTU5NzljZmNjN2M0YTIyNDJlMWQxNjFkNjEwMjkyNS4u
MTNjMzFmNTc2NGI3YjIyNGEyYjdlYTU1YWUzM2E2YjM5ODZiOTZkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRl
OjphbmltYXRpb25XaWxsQmVSZW1vdmVkKEFuaW1hdGlvbkJhc2UmIGFuaW1hdAogfQogCiBDU1NB
bmltYXRpb25Db250cm9sbGVyOjpDU1NBbmltYXRpb25Db250cm9sbGVyKEZyYW1lJiBmcmFtZSkK
LSAgICA6IG1fZGF0YShzdGQ6Om1ha2VfdW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlPihmcmFtZSkpCisgICAgOiBtX2RhdGEobWFrZVVuaXF1ZTxDU1NBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZT4oZnJhbWUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNzRlZWRjOTk2NmU5
ZjgxYWNiOTk2Y2YzNzY5ODNkYWI2ODU1NDBjNi4uYmFlYjI0NzY1NzE2NzM3Yjg0YTFjYzhmMTlk
ZTAxNzNmMzY3ZTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHN0YXRpYyBp
bmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9w
ZXJ0eUJsZW5kaW5nQ2xpCiB7CiAgICAgQVNTRVJUKGZyb20gJiYgdG8pOwogICAgIGlmIChmcm9t
LT5zdHlsZSgpICE9IHRvLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTaGFkb3dEYXRhPigqdG8pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRh
PigqdG8pOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oYmxlbmQo
ZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChmcm9tLT5sb2NhdGlvbigpLCB0by0+bG9jYXRp
b24oKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5yYWRpdXMoKSwgdG8tPnJhZGl1
cygpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kKGZyb20tPnNwcmVhZCgpLCB0by0+c3ByZWFk
KCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20tPnN0eWxlKCksIHRv
LT5zdHlsZSgpLCBwcm9ncmVzcyksCkBAIC05NzQsMTUgKzk3NCwxNSBAQCBjbGFzcyBQcm9wZXJ0
eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvciA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdy
YXBwZXJCYXNlCiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJv
cGVydHlJRCBwcm9wLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0
LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgY29u
c3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJl
bmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmlt
YXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6
bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkK
LSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFw
cGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAs
IG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIs
IHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5
V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7
CiAgICAgfQogICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3Bl
cnR5SUQgcHJvcCwgTWF5YmVJbnZhbGlkQ29sb3JUYWcsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5
bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBD
b2xvciYpLAogICAgICAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRl
cikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0dGVyKShjb25zdCBDb2xv
ciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKLSAgICAg
ICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFs
aWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAgICAgICAsIG1fdmlzaXRlZFdyYXBw
ZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJv
cCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCisgICAgICAgICwgbV93cmFwcGVyKG1h
a2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwg
c2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlX
cmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0
ZXIpKQogICAgIHsKICAgICB9CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUmVuZGVyU3R5bGUqIGEs
IGNvbnN0IFJlbmRlclN0eWxlKiBiKSBjb25zdCBvdmVycmlkZQpAQCAtMTIyOSwxOSArMTIyOSwx
OSBAQCBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFuaW1hdGlvblBy
b3BlcnR5V3JhcHBlckJhc2UgewogICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3Jh
cHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBv
c2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFj
a2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJv
cGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBl
cj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0
aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dy
b3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBw
ZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3Np
dGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFlPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tn
cm91bmRZT3JpZ2luLCBFZGdlOjpCb3R0b20pOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9w
ZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVy
Pihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRp
b24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3Jv
dW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tT
aXplOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZG
aWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOworICAgICAg
ICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclBy
b3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5n
dGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgICAgICAgICBtX2ZpbGxM
YXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyU3R5bGVJbWFn
ZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVy
OjpzZXRJbWFnZSk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1h
a2VVbmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZG
aWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc3MCw3ICsxNzcw
LDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlv
bldyYXBwZXJNYXAoKQogICAgICAgICAgICAgbG9uZ2hhbmRXcmFwcGVycy51bmNoZWNrZWRBcHBl
bmQobV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJbmRleF0uZ2V0KCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFu
ZFdyYXBwZXJzKSkpOworICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5k
KG1ha2VVbmlxdWU8U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3Zl
KGxvbmdoYW5kV3JhcHBlcnMpKSk7CiAgICAgICAgIGluZGV4RnJvbVByb3BlcnR5SUQocHJvcGVy
dHlJRCkgPSBhbmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQgKyBpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CmluZGV4IDcwNDdlODNkZTc4NWRiODFiNmQ5OTBhOTQ4MzdiYTcxZDcyODI5YTAuLjhmMGY2YmY1
M2IwM2UwOGY3MDMzMTY2ZWI4Yzc0ZDZiZjk3MjgzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBA
IHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBk
YXRlU291cmNlU2VsZihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAg
ICAgbV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpOwotICAg
IG1fc2VsZlNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwg
c2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOworICAg
IG1fc2VsZlNvdXJjZSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlPigq
dGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJp
dHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOwogfQogCiB2b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUuaAppbmRleCBhOGYxZDRmMGJkZTE0ZjE0Yjg4YWEzOTQwZWRkOGM4
OTYyNjFlM2RlLi5iYmQ5MTg5ZTI0ODM0ZGFjYzhkN2JhZTE1Y2M1ODE2Y2EzMjBjZjE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogCiBjbGFzcyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZShjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiBkaXJlY3RpdmVMaXN0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3QuY3BwCmluZGV4IGRkYmQ4Y2RlMjc4MGU5MmRiYTIwZTBhYmQ5OWNmMDQ5
ODQzZjRjNGQuLmMwMTU2ZGRmMDFjOTQ3ZTUwNGI1NjlkMGE0MTE2OThjNTU4ZjNlZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dChDb250ZW50U2UKIAogc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q+IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250
ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRT
ZWN1cml0eVBvbGljeUhlYWRlclR5cGUgdHlwZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xp
Y3lGcm9tIGZyb20pCiB7Ci0gICAgYXV0byBkaXJlY3RpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pihwb2xpY3ksIHR5cGUpOworICAgIGF1
dG8gZGlyZWN0aXZlcyA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdD4ocG9saWN5LCB0eXBlKTsKICAgICBkaXJlY3RpdmVzLT5wYXJzZShoZWFkZXIsIGZyb20p
OwogCiAgICAgaWYgKCFjaGVja0V2YWwoZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRp
cmVjdGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKSkpIHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbgogICAgICAgICBtX3BvbGljeS5yZXBvcnREdXBsaWNhdGVEaXJl
Y3RpdmUobmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZGlyZWN0aXZlID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1BEaXJlY3RpdmVUeXBlPigqdGhpcywgbmFtZSwgdmFsdWUpOworICAg
IGRpcmVjdGl2ZSA9IG1ha2VVbmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZh
bHVlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphcHBs
eVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQ
b2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNh
Z2VPdmVybGF5TGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVz
YWdlT3ZlcmxheUxpbnV4LmNwcAppbmRleCA0ZmRmNzU2YzAyMTk4ODUzM2IyZjEyNTVjOTFhNGVj
YzkxNDg0ZmE0Li4yNmMyMTJiNDgyNGEwNDNjMjUzYWYyNTc2NGUwYjlhMzgxMzA4YTc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGlu
dXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJs
YXlMaW51eC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBSZXNvdXJjZVVzYWdlT3Zlcmxh
eVBhaW50ZXIgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CiAKIHZvaWQgUmVz
b3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB7Ci0gICAgbV9vdmVybGF5
UGFpbnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyPigq
dGhpcyk7CisgICAgbV9vdmVybGF5UGFpbnRlciA9IG1ha2VVbmlxdWU8UmVzb3VyY2VVc2FnZU92
ZXJsYXlQYWludGVyPigqdGhpcyk7CiAgICAgbV9wYWludExheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKG92ZXJsYXkoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmdyYXBoaWNzTGF5ZXJG
YWN0b3J5KCksICptX292ZXJsYXlQYWludGVyKTsKICAgICBtX3BhaW50TGF5ZXItPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBtX3BhaW50TGF5ZXItPnNldFNpemUoeyBub3Jt
YWxXaWR0aCwgbm9ybWFsSGVpZ2h0IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5k
ZXggZDdhZGZmZDcyZjlmYThmZTk3YWZjZGEwNzE4ZDgzYzZlMDkwODUwYy4uMDg2M2FkMjY3MjVk
NjU1NDc1MmI3YWMyMTQ4ZWVkMWM2ZGZjMjNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFj
Lm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHZv
aWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxTY2hlZHVsZVBhaXI+JiYgcGFpcikKIHsKICAg
ICBpZiAoIW1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzKQotICAgICAgICBtX3NjaGVkdWxlZFJ1bkxv
b3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKKyAgICAg
ICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBtYWtlVW5pcXVlPFNjaGVkdWxlUGFpckhhc2hT
ZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAog
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKaW5kZXggZGNkZDk1MDQ4YmQ5NThhYTc0NDBhMGZj
M2Q5YmNlN2RmMmY1NDgwZi4uNjQ3NWNlNWViYzkwN2FlMTg4MGFmMTcxYzA3MzZmZjNlY2I1MDI2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaApA
QCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNzYWxB
bmltYXRpb24gOiB1aW50OF90IHsKICNpZiBQTEFURk9STShNQUMpCiAKIGNsYXNzIFRleHRJbmRp
Y2F0b3JXaW5kb3cgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFRleHRJbmRpY2F0b3JXaW5kb3cpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCmluZGV4IDMwNmNmZWQxOWNlNmQwMGI2MmE4NTI0OTcwMDI4YjgwNDVmYWQ4MjMu
LjAwYWYzOTQ3OGRjNzVmNzAyOWMyNDg0NTRlZjAxYWIwYzZjN2QxMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSogcGFnZSkK
ICAgICA6IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpCiAgICAgLCBtX3VwZGF0ZU5vZGVTY3Jv
bGxQb3NpdGlvblRpbWVyKCp0aGlzLCAmQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRl
U2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsVGltZXJGaXJlZCkKLSAgICAsIG1fc2Nyb2xs
aW5nU3RhdGVUcmVlKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkK
KyAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVl
Pih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCA2M2JkOTYzOGI2M2ExYTExY2E0MGYzNjcy
MTI5ZjcxNDEwYzZmZjJlLi4zYWI2NDA2ODI2NGM1MDQwOGJhYjRlZTM4ZDJjY2Q0YTY0MWM3ODY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaApAQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2Ug
ewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8g
eworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBWZWN0b3I8VD4gaG9y
aXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIFZlY3RvcjxUPiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAppbmRleCA3NjQwZDU1ZDk2YTNmMDk1OWI5MzFlZjA0
MzNlYzE1ZmEyMDdkYmQ0Li5jODkwZjllYmEwMDRjYTg3ODAxNDFiODVjZWVlMDA1NTYyZTJlNDQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgRmxvYXRTaXpl
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQo
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlh
bE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0
aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5
KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9t
ZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iu
aAppbmRleCBiZTk5ZDBlZTZhM2YwNzg5ZmM0ZDdkYzY5Mjg4NWI1MjQwMDQzODAyLi4yMWMzMTFj
ZDg5Yjc5NDA4NGE4NDkwZDVmYzliYTU1YTkzYjlhZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iu
aApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwog
CiBjbGFzcyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25z
dCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwg
Y29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0
YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKaW5kZXggOTY4MmQy
YzFiY2VlMzc1NzEzYzM0NmQzZTMzY2Q0ZGMxMzVhZmM3OC4uYmU1N2M5Yjg2OWQwY2M1MjM4NmIw
MDQ2YTUwN2QzNGM4NDBjODE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBT
Y3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVuZENoaWxkKFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+JiYg
Y2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFt
X2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOworICAgICAgICBtX2NoaWxkcmVuID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOwogICAgIG1fY2hp
bGRyZW4tPmFwcGVuZChXVEZNb3ZlKGNoaWxkTm9kZSkpOwogICAgIHNldFByb3BlcnR5Q2hhbmdl
ZChDaGlsZE5vZGVzKTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRl
Tm9kZTo6aW5zZXJ0Q2hpbGQoUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUsIHNp
emVfdAogCiAgICAgaWYgKCFtX2NoaWxkcmVuKSB7CiAgICAgICAgIEFTU0VSVCghaW5kZXgpOwot
ICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9s
bGluZ1N0YXRlTm9kZT4+PigpOworICAgICAgICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0
b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOwogICAgIH0KIAogICAgIGlmIChpbmRl
eCA+IG1fY2hpbGRyZW4tPnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXggZjYxZTI4ZTBlYzUwMzAxMmIz
NzJmYjI1NTY5YThjYjdkZDUzYWE3MC4uNzE1N2UxNjg2MGY0OWM5MWRkYTM1YmJjNGVhZmU5ODE5
ZWFjYmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbGluZ1N0YXRlVHJlZT4gU2Nyb2xsaW5nU3RhdGVUcmVlOjpjb21taXQoTGF5ZXJSZXByZXNl
bnRhdGkKICAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNsb25lcyBhbmQgcmVzZXRzIHRo
ZSBjdXJyZW50IHN0YXRlIHRyZWUsIGJ1dCBsZWF2ZXMgdGhlIHRyZWUgc3RydWN0dXJlIGludGFj
dC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiB0cmVlU3RhdGVDbG9u
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRyZWVTdGF0ZUNsb25lID0gbWFrZVVuaXF1ZTxT
Y3JvbGxpbmdTdGF0ZVRyZWU+KCk7CiAgICAgdHJlZVN0YXRlQ2xvbmUtPnNldFByZWZlcnJlZExh
eWVyUmVwcmVzZW50YXRpb24ocHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbik7CiAKICAgICBp
ZiAobV9yb290U3RhdGVOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCmluZGV4IGVhNzRlMmNhNDI0MjlhOGUyYmU5ZjlhMzc5
ZTM2N2RhNGRkZGEzZDEuLjcyOTYxNWE2OWYwMTIyNjMxNTE0N2VjZmRiNTUyOGIwMTk5ZjM4NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZTo6YXBwZW5k
Q2hpbGQoUmVmPFNjcm9sbGluZ1RyZWVOb2RlPiYmIGNoaWxkTm9kZSkKICAgICBjaGlsZE5vZGUt
PnNldFBhcmVudCh0aGlzKTsKIAogICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgbV9jaGls
ZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4+
PigpOworICAgICAgICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9s
bGluZ1RyZWVOb2RlPj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGRO
b2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCmluZGV4IDFj
N2FiNzZhMTUxZTYzNTBkOGI2MTRjMzZkMDViY2U2NWM2Yzk1ODQuLmI0M2VhOTk1ZmFmNmI0NzAz
MzVmYmYwN2EyMDg2YTZiMzVmNzBlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgYm9vbCBnRW5hYmxlUGxhdGZvcm1Nb21l
bnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSB0cnVlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50
U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBp
bml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmll
d3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0
aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5p
dGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVk
KGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1v
bml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAppbmRleCA3MWU0
M2QzZjNiOTQ2MTA2MDhjYmYxMWRiNTExNWJjYmVjMDU0ODkwLi4wODhkZjU0M2UwNDc5MTE3Yzgz
N2FmZTIyM2JiY2M1NTE0ODhhN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DUFVNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5o
CkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENQVU1vbml0
b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIEV4
Y2VlZGVkQ1BVTGltaXRIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGRvdWJsZSk+OwogICAg
IFdFQkNPUkVfRVhQT1JUIENQVU1vbml0b3IoU2Vjb25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRl
ZENQVUxpbWl0SGFuZGxlciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCmlu
ZGV4IGU2MGY3NzEzZjYyYmIyNTYyYTg0Mjg4OGM3ZmM2MjlmMmM1NDdmMzMuLjZiMjg4ZTFlMTdl
NDQ4YmI4NmZiOWVjZTI5Y2M5ZTViZGI5ZGQ4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZU1vbml0b3IuaApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBGaWxlTW9uaXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZW51bSBjbGFzcyBGaWxlQ2hhbmdlVHlwZSB7IE1vZGlmaWNhdGlvbiwgUmVtb3ZhbCB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCA0ZmY5ODA0ZWFlYzEzMDZiMjY4YTI0
NWYyNzcxYTExMmUyOGQyYTFlLi4zZmM0MzFhNDc0NjFkOGM0NDNkYjRiNjIyZDZlYTkwNjM0ZGEw
ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAgLTI4OCw5ICsyODgsOSBAQCBM
ZW5ndGggY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3Ro
KQogICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2FsYyBleHByZXNzaW9uOiBjYWxjKDEwMCUgLSBs
ZW5ndGgpCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+PiBs
ZW5ndGhzOwogICAgIGxlbmd0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICBsZW5n
dGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3Ro
PihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOwotICAgIGF1dG8g
b3AgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxl
bmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFw
cGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50
KSkpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Np
b25MZW5ndGg+KGxlbmd0aCkpOworICAgIGF1dG8gb3AgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNz
aW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsK
ICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwg
VmFsdWVSYW5nZUFsbCkpOwogfQogCkBAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIExlbmd0aCBi
bGVuZE1peGVkVHlwZXMoY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3Vi
bGUgcHJvZ3IKICAgICBpZiAocHJvZ3Jlc3MgPj0gMS4wKQogICAgICAgICByZXR1cm4gdG87CiAg
ICAgICAgIAotICAgIGF1dG8gYmxlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9u
QmxlbmRMZW5ndGg+KGZyb20sIHRvLCBwcm9ncmVzcyk7CisgICAgYXV0byBibGVuZCA9IG1ha2VV
bmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aD4oZnJvbSwgdG8sIHByb2dyZXNzKTsKICAg
ICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKGJsZW5kKSwg
VmFsdWVSYW5nZUFsbCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVt
b3RlQ29tbWFuZExpc3RlbmVyLmNwcAppbmRleCA1NTJiMTJmNmMxZThjZGE2ZmZlYTY0Nzg2OTIy
MjllYTkzZWQxN2NhLi44ZTM1ZTMwNGMxZTcyNTdiYzY0YzZhZDEwZWRkZTk2NDIwNGU2NThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5j
cHAKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICghUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykpIHx8ICFIQVZFKE1FRElBX1BMQVlFUikKIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5l
cjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXI+KGNsaWVudCk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4
IGQ5MTU0ZDkzNTFhMmYzMzY2ZGRkMDVmZTYwZmRlYmI5YzFhMWU3MzguLmY4ZWRjODgyZDdmMzYw
MDJlMTk4NTEwZDgxYjhlYjM0YWE1MDA3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2lmICFFTkFCTEUoU01PT1RIX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICFQTEFURk9STShNQUMpCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFu
aW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5k
ZXggYzYyYWQ4MzRlNmIzODA4ZTFlY2RhOGJhMTMxMmQzZDk1NzA1ZTk2YS4uOTZkMGYzMDBiMzQx
OGU2MDgyMWRhMmRhMmE2NDE4OWM0ZGVlMGIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmNwcApAQCAtODAsNyArODAsNyBAQCBTY3JvbGxBbmltYXRvciYgU2Ny
b2xsYWJsZUFyZWE6OnNjcm9sbEFuaW1hdG9yKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2Nyb2xs
QW5pbWF0b3IpIHsKICAgICAgICAgaWYgKHVzZXNNb2NrU2Nyb2xsQW5pbWF0b3IoKSkgewotICAg
ICAgICAgICAgbV9zY3JvbGxBbmltYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0
b3JNb2NrPihjb25zdF9jYXN0PFNjcm9sbGFibGVBcmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSB7CisgICAgICAgICAgICBtX3Njcm9sbEFuaW1hdG9yID0gbWFrZVVu
aXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+KGNvbnN0X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhp
cyksIFt0aGlzXShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICBsb2dN
b2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0gZWxzZQpAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhhc0xh
eWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QKIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRV
bml0PiYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYg
KCFtX3NuYXBPZmZzZXRzSW5mbykKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAg
bV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlv
dXRVbml0Pj4oKTsKICAgICByZXR1cm4gKm1fc25hcE9mZnNldHNJbmZvOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaAppbmRleCA3MmIwMDQ1MTMxNDJj
OGY0ZTk1ZGYyMjgxOGMzZGRjMTgwYWFlY2VkLi4wZDc0YjE2ZTU5MjU5OGFiODNiMGM4YzBlYjU0
YjQ0NmRmZDM4ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5U
ZXJtaW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0
aW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAg
ICBjbGFzcyBTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN1ZGRlblRlcm1pbmF0
aW9uRGlzYWJsZXIpOwogICAgIHB1YmxpYzoKICAgICAgICAgU3VkZGVuVGVybWluYXRpb25EaXNh
YmxlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmlu
ZGV4IGEyODAxMGVjZmU1YTM2N2FkOWQwYjI5YTIwMDU2M2EwZjU2MWQ1NjAuLjI3YTczNjQxNmJh
MDRjMDUzYzJlNzdkYjJjNTU4MTQ0NDBkMmYwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCkBAIC00MCwxNCArNDAsMTQgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCi0gICAgOiBt
X2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRS
ZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQorICAgIDogbV9jYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzKG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4o
KSkKICAgICAsIG1fZXZlbnROYW1lcyhFdmVudE5hbWVzOjpjcmVhdGUoKSkKLSAgICAsIG1fdGhy
ZWFkVGltZXJzKHN0ZDo6bWFrZV91bmlxdWU8VGhyZWFkVGltZXJzPigpKQotICAgICwgbV9xdWFs
aWZpZWROYW1lQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCisg
ICAgLCBtX3RocmVhZFRpbWVycyhtYWtlVW5pcXVlPFRocmVhZFRpbWVycz4oKSkKKyAgICAsIG1f
cXVhbGlmaWVkTmFtZUNhY2hlKG1ha2VVbmlxdWU8UXVhbGlmaWVkTmFtZUNhY2hlPigpKQogI2lm
bmRlZiBOREVCVUcKICAgICAsIG1faXNNYWluVGhyZWFkKGlzTWFpblRocmVhZCgpKQogI2VuZGlm
Ci0gICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShzdGQ6Om1ha2VfdW5pcXVlPElDVUNvbnZlcnRl
cldyYXBwZXI+KCkpCisgICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShtYWtlVW5pcXVlPElDVUNv
bnZlcnRlcldyYXBwZXI+KCkpCiB7CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciB3aWxsIGhhdmUg
YmVlbiBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBiZWluZyBjYWxsZWQgb24KICAg
ICAvLyBhbnkgb3RoZXIgdGhyZWFkLCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBwZXIgdGhyZWFk
IC0gdGhpcyBtYWtlcyB0aGlzIGEgY29udmVuaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9CdXMuY3BwCmluZGV4IDJmODkyZDZiMTlhYmE0MjMwZTkyNGM3NjE4NzM4ZmM2
Y2I0OGY3ZWMuLmU3MGQ0NmQwYjlmMjQwN2Y5MDg1NDhmYThmMmU5OGM5ZGE0NTYzYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgQXVkaW9CdXM6OkF1ZGlvQnVzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBs
ZW5ndGgsIGJvb2wgYWxsb2NhdGUpCiAgICAgbV9jaGFubmVscy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/
IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihsZW5ndGgpIDogc3RkOjptYWtlX3VuaXF1
ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbCA9
IGFsbG9jYXRlID8gbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBtYWtlVW5pcXVl
PEF1ZGlvQ2hhbm5lbD4obnVsbHB0ciwgbGVuZ3RoKTsKICAgICAgICAgbV9jaGFubmVscy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShjaGFubmVsKSk7CiAgICAgfQogCkBAIC00ODksNyArNDg5LDcg
QEAgdm9pZCBBdWRpb0J1czo6Y29weVdpdGhHYWluRnJvbShjb25zdCBBdWRpb0J1cyAmc291cmNl
QnVzLCBmbG9hdCogbGFzdE1peEdhaW4sIGYKIAogICAgIGlmIChmcmFtZXNUb0RlemlwcGVyKSB7
CiAgICAgICAgIGlmICghbV9kZXppcHBlckdhaW5WYWx1ZXMuZ2V0KCkgfHwgbV9kZXppcHBlckdh
aW5WYWx1ZXMtPnNpemUoKSA8IGZyYW1lc1RvRGV6aXBwZXIpCi0gICAgICAgICAgICBtX2Rlemlw
cGVyR2FpblZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNU
b0RlemlwcGVyKTsKKyAgICAgICAgICAgIG1fZGV6aXBwZXJHYWluVmFsdWVzID0gbWFrZVVuaXF1
ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6aXBwZXIpOwogCiAgICAgICAgIGZsb2F0KiBn
YWluVmFsdWVzID0gbV9kZXppcHBlckdhaW5WYWx1ZXMtPmRhdGEoKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lc1RvRGV6aXBwZXI7ICsraSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKaW5kZXggMjE3M2RjOTM4M2U0YTMzYzFiNTkzNDc2
NWExZTViMTA3NDZmMDNhMS4uYmJiM2QyYWNkMjJjNTcyYmM5MjNhNDhiMWY3MGFmODU0YzBjYjAw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCkBAIC00MCw3ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEFuIEF1ZGlvQnVzIHJlcHJlc2VudHMgYSBj
b2xsZWN0aW9uIG9mIG9uZSBvciBtb3JlIEF1ZGlvQ2hhbm5lbHMuCiAvLyBUaGUgZGF0YSBsYXlv
dXQgaXMgInBsYW5hciIgYXMgb3Bwb3NlZCB0byAiaW50ZXJsZWF2ZWQiLgogLy8gQW4gQXVkaW9C
dXMgd2l0aCBvbmUgY2hhbm5lbCBpcyBtb25vLCBhbiBBdWRpb0J1cyB3aXRoIHR3byBjaGFubmVs
cyBpcyBzdGVyZW8sIGV0Yy4KLWNsYXNzIEF1ZGlvQnVzIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEF1ZGlvQnVzPiB7CitjbGFzcyBBdWRpb0J1cyBmaW5hbCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxBdWRpb0J1cz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlv
QnVzKTsKIHB1YmxpYzoKICAgICBlbnVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9DaGFubmVsLmgKaW5kZXggYmJjMTM1N2EzZDUzZjA1NDhmODg3OGU1ODdkYjdkNmRk
MWM0ZmFkOC4uN2I5ODkzZDM4YWM0MTc0NTMxNzQxYjc3MjRjNmZmMmFiZDAxZGY5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKQEAgLTM3LDcgKzM3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBbiBBdWRpb0NoYW5uZWwgcmVwcmVzZW50
cyBhIGJ1ZmZlciBvZiBub24taW50ZXJsZWF2ZWQgZmxvYXRpbmctcG9pbnQgYXVkaW8gc2FtcGxl
cy4KIC8vIFRoZSBQQ00gc2FtcGxlcyBhcmUgbm9ybWFsbHkgYXNzdW1lZCB0byBiZSBpbiBhIG5v
bWluYWwgcmFuZ2UgLTEuMCAtPiArMS4wCi1jbGFzcyBBdWRpb0NoYW5uZWwgeworY2xhc3MgQXVk
aW9DaGFubmVsIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBdWRpb0NoYW5uZWwpOwogcHVibGljOgogICAgIC8vIE1lbW9yeSBj
YW4gYmUgZXh0ZXJuYWxseSByZWZlcmVuY2VkLCBvciBjYW4gYmUgaW50ZXJuYWxseSBhbGxvY2F0
ZWQgd2l0aCBhbiBBdWRpb0Zsb2F0QXJyYXkuCkBAIC01Niw3ICs1Nyw3IEBAIGNsYXNzIEF1ZGlv
Q2hhbm5lbCB7CiAgICAgICAgICwgbV9yYXdQb2ludGVyKDApCiAgICAgICAgICwgbV9zaWxlbnQo
dHJ1ZSkKICAgICB7Ci0gICAgICAgIG1fbWVtQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b0Zsb2F0QXJyYXk+KGxlbmd0aCk7CisgICAgICAgIG1fbWVtQnVmZmVyID0gbWFrZVVuaXF1ZTxB
dWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CiAgICAgfQogCiAgICAgLy8gQSAiYmxhbmsiIGF1ZGlv
IGNoYW5uZWwgLS0gbXVzdCBjYWxsIHNldCgpIGJlZm9yZSBpdCdzIHVzZWZ1bC4uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaAppbmRleCA3NWM5YWJkNzQ5NGQzNTgy
MmY4MmFjZTdjY2QwZDg1Njg2MTFkN2VhLi4wZjQzOGRkN2QwZmE1OWZiNjQ0ZDRkZjU3MmY1NTlm
ZDY2MzA4YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0ZJRk8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApA
QCAtMzMsNyArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvRklG
TyB7CitjbGFzcyBBdWRpb0ZJRk8gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhIEZJRk8gbGFyZ2UgZW5vdWdoIHRvIGhvbGQgfGZp
Zm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4K
ICAgICBBdWRpb0ZJRk8odW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5n
dGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxs
RklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmlu
ZGV4IGJmYmU5ODNhNTc1YTQ1NGFhYzJiMGMzY2JlNDU3NWVmYWY2Yjc4ZDcuLmQ3NDhmYTQxMzg3
Mzc5ZGIzOTViZWFlNjVmODgyYmEyNThlOWZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKQEAgLTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogLy8gdGhlIEZJRk8gd2lsbCBhc2sgdGhlIHByb3ZpZGVyIGZvciBtb3JlIGRhdGEg
d2hlbiBuZWNlc3NhcnkgdG8gZnVsZmlsbCBhIHJlcXVlc3QuIENvbnRyYXN0IHRoaXMKIC8vIHdp
dGggYSAicHVzaCIgRklGTywgd2hlcmUgdGhlIHNlbmRlciBwdXNoZXMgZGF0YSB0byB0aGUgRklG
TyB3aGljaCB3aWxsIGl0c2VsZiBwdXNoIHRoZSBkYXRhIHRvCiAvLyB0aGUgcmVjZWl2ZXIgd2hl
biB0aGUgRklGTyBpcyBmdWxsLgotY2xhc3MgQXVkaW9QdWxsRklGTyB7CitjbGFzcyBBdWRpb1B1
bGxGSUZPIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICAvLyBDcmVhdGUgYSBGSUZPIHRoYXQgZ2V0cyBkYXRhIGZyb20gfHByb3ZpZGVyfC4gVGhlIEZJ
Rk8gd2lsbCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZAogICAgIC8vIHxmaWZvTGVuZ3RofCBmcmFt
ZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVsc3wgY2hhbm5lbHMuIFRoZSBBdWRpb1NvdXJj
ZVByb3ZpZGVyIHdpbGwgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyLmNwcAppbmRleCA4NjkwNmJhNTEyNDc1ODY5MmM2ODNlMmJjOTAzODM1MDFl
YWI4ZmQ5Li4yODRjMDU0OTQzMjU5MzQ0ZWFjZTMyNDE4YWRhOWI4MzAzZGEyZTQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIGNvbnN0IGRvdWJsZSBBdWRpb1Jlc2FtcGxlcjo6TWF4UmF0ZSA9IDguMDsK
IEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxlcigpCiAgICAgOiBtX3JhdGUoMS4wKQogewot
ICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5l
bD4odGhpcykpOworICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxl
cktlcm5lbD4odGhpcykpOwogICAgIG1fc291cmNlQnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCAw
LCBmYWxzZSk7CiB9CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgQXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVz
YW1wbGVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBtX3JhdGUoMS4wKQogewog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAg
ICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5l
bD4odGhpcykpOworICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNh
bXBsZXJLZXJuZWw+KHRoaXMpKTsKIAogICAgIG1fc291cmNlQnVzID0gQXVkaW9CdXM6OmNyZWF0
ZShudW1iZXJPZkNoYW5uZWxzLCAwLCBmYWxzZSk7CiB9CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQg
QXVkaW9SZXNhbXBsZXI6OmNvbmZpZ3VyZUNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMpCiAgICAgLy8gRmlyc3QgZGVhbCB3aXRoIGFkZGluZyBvciByZW1vdmluZyBrZXJuZWxzLgog
ICAgIGlmIChudW1iZXJPZkNoYW5uZWxzID4gY3VycmVudFNpemUpIHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gY3VycmVudFNpemU7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAg
ICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJL
ZXJuZWw+KHRoaXMpKTsKKyAgICAgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxB
dWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwogICAgIH0gZWxzZQogICAgICAgICBtX2tlcm5l
bHMucmVzaXplKG51bWJlck9mQ2hhbm5lbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaAppbmRleCBkMTFmYTkzZWJhYWNiZDhlNTZiOThkYTMz
NzVmYWUxNDA2OGUzYmM5Li4yMDE2YmFmZjdjODhkZjE4YWY1ZDM1MmMzMDFmNWZmNDM3Njg5Zjdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgK
QEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIGF1ZGlvIHN0cmVh
bSBtYXkgYmUgc2luZ2xlIG9yIG11bHRpLWNoYW5uZWwuCiAvLyBUaGUgZGVmYXVsdCBjb25zdHJ1
Y3RvciBkZWZhdWx0cyB0byBzaW5nbGUtY2hhbm5lbCAobW9ubykuCiAKLWNsYXNzIEF1ZGlvUmVz
YW1wbGVyIHsKK2NsYXNzIEF1ZGlvUmVzYW1wbGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBdWRpb1Jlc2FtcGxlcigpOwogICAgIEF1ZGlvUmVz
YW1wbGVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKaW5kZXggOTlkODc3YmI3
Y2Q2OGRiYjA1MzY3N2EwOTdjZDRlMGVhYzgzYjc4Mi4uOGFjMmJhYTQyYzU4N2EzNDg1ZDUzNDAy
M2FkZWUyNGY4ODMyNmVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCkBAIC0zNCw3ICszNCw5IEBAIGNsYXNzIEF1ZGlv
UmVzYW1wbGVyOwogLy8gQXVkaW9SZXNhbXBsZXJLZXJuZWwgZG9lcyByZXNhbXBsaW5nIG9uIGEg
c2luZ2xlIG1vbm8gY2hhbm5lbC4KIC8vIEl0IHVzZXMgYSBzaW1wbGUgbGluZWFyIGludGVycG9s
YXRpb24gZm9yIGdvb2QgcGVyZm9ybWFuY2UuCiAKLWNsYXNzIEF1ZGlvUmVzYW1wbGVyS2VybmVs
IHsKK2NsYXNzIEF1ZGlvUmVzYW1wbGVyS2VybmVsIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Jlc2FtcGxlcktlcm5l
bCk7CiBwdWJsaWM6CiAgICAgQXVkaW9SZXNhbXBsZXJLZXJuZWwoQXVkaW9SZXNhbXBsZXIqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCAx
N2RhODFiM2I3NWQ3YTVhYWI4MjE0ODZiN2MxZTMzZjFhOGRmNDY5Li5lNzAwODIyZmYxZmVlYmQ3
ODI5YWVjNzUwY2NlNDBhNjBiOTI1NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNDQsNyArNDQsOCBAQCBlbnVtIGNsYXNzIFJvdXRlU2hh
cmluZ1BvbGljeSA6IHVpbnQ4X3QgewogICAgIExvbmdGb3JtVmlkZW8KIH07CiAKLWNsYXNzIEF1
ZGlvU2Vzc2lvbiB7CitjbGFzcyBBdWRpb1Nlc3Npb24gZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvU2Vzc2lvbik7CiBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEF1ZGlvU2Vzc2lvbiYgc2hhcmVkU2Vz
c2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaAppbmRleCBiYjcyMWEy
M2E3ZmNjNzc0YjYwOTNlNGVhOTA4YzYwZTg5MDgxMDdjLi43MTM0OTRjOTE0ZDMzNzg2NDNlMjlh
ODBiYzM5ZTc3MzY2ZGYxODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9CaXF1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQu
aApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyAgICBsb3dwYXNzLCBo
aWdocGFzcywgc2hlbHZpbmcsIHBhcmFtZXRlcmljLCBub3RjaCwgYWxscGFzcywgLi4uCiAKIGNs
YXNzIEJpcXVhZCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
ICAgCiAgICAgQmlxdWFkKCk7CiAgICAgfkJpcXVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQ29uZS5oCmluZGV4IGQ4MWMwNWRjNjhlNmUyZmEyMWQyNDVkZDEzN2I0ZjE3OGEyMTIwYjQu
LmE3YWNhM2E0YzU0ZDI3NGIzYWEzZDQwYWQ5ZDE0M2ViZGZjNDVmY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Db25lLmgKQEAgLTM1LDcgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAvLyBDb25lIGdhaW4gaXMgZGVmaW5lZCBhY2NvcmRpbmcgdG8gdGhlIE9wZW5BTCBzcGVj
aWZpY2F0aW9uCiAKLWNsYXNzIENvbmVFZmZlY3QgeworY2xhc3MgQ29uZUVmZmVjdCBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29uZUVmZmVjdCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERp
c2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVy
LmgKaW5kZXggNmU5ZjRlMDFkYWU2ZDQ1ZDAyMTExZDVkNWIxMjhlZjM4ODZiMjI0Mi4uZTBiM2Vm
ZDgwZjc4ZmZhYTMwNjU3MzMyMzE0NzAyZGM3M2EyZjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaApAQCAtNDEsNyArNDEsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfREVOT1JNQUwKLWNsYXNz
IERlbm9ybWFsRGlzYWJsZXIgeworY2xhc3MgRGVub3JtYWxEaXNhYmxlciBmaW5hbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVub3JtYWxEaXNhYmxlcigp
CiAgICAgICAgICAgICA6IG1fc2F2ZWRDU1IoMCkKQEAgLTEwMyw3ICsxMDQsOCBAQCBjbGFzcyBE
ZW5vcm1hbERpc2FibGVyIHsKIAogI2Vsc2UKIC8vIEZJWE1FOiBhZGQgaW1wbGVtZW50YXRpb25z
IGZvciBvdGhlciBhcmNoaXRlY3R1cmVzIGFuZCBjb21waWxlcnMKLWNsYXNzIERlbm9ybWFsRGlz
YWJsZXIgeworY2xhc3MgRGVub3JtYWxEaXNhYmxlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVub3JtYWxEaXNhYmxlcigpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCmluZGV4IDZm
MmZhZjQwZTYxYmY2ZTMyYTRmNDk5OTc2NWM5ZTFiYjUxOTQxYTguLjc4MzA4Y2UxOTk5OTliYjFk
NjgwYmIzYjdlMjNhZTA0Y2Q3Y2IyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCkBAIC0zMyw3ICszMyw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgRGlyZWN0Q29udm9sdmVyIHsKK2NsYXNzIERpcmVjdENvbnZvbHZl
ciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRGlyZWN0Q29udm9sdmVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEaXJlY3RD
b252b2x2ZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0Rpc3RhbmNlLmgKaW5kZXggOTFkMzQ5Yjk3ZTYyNzczMzJkNzYzMWE4ODQ0MjZiMTY2
OGRjZjI4My4uYjNlYjc3OTczY2ZhNDc5NWYxNTA1MzY5YjdlNGIyZjg5ZmZiNmM0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCkBAIC00MCw3ICs0MCw4IEBAIGVu
dW0gY2xhc3MgRGlzdGFuY2VNb2RlbFR5cGUgewogICAgIEV4cG9uZW50aWFsCiB9OwogCi1jbGFz
cyBEaXN0YW5jZUVmZmVjdCB7CitjbGFzcyBEaXN0YW5jZUVmZmVjdCBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGlzdGFuY2VFZmZlY3QoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKaW5kZXggZjRiNDIw
MTdlZTc2MjdjYWQ2NTZiZmY0NTdhYWU5ODk0ODAxNGJmMi4uOTU3MGI4OTFjOTdmZmE5MTFhMDEx
MzQwMDNiNGZkY2I1Zjc2ZjkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRG93blNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
b3duU2FtcGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
RG93blNhbXBsZXIgZG93bi1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9yIG9m
IDJ4LgogCi1jbGFzcyBEb3duU2FtcGxlciB7CitjbGFzcyBEb3duU2FtcGxlciBmaW5hbCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRG93blNh
bXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IGIyNTUxOGQ4ODBhOGQy
ZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIuLjUxMzc5OWE4NTEyZjQyN2I0ZTRiOGQ5YjI5NDVh
OTRkMzQ5MTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMjcxLDggKzI3MSw4IEBAIHZvaWQgRHluYW1pY3ND
b21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMp
CiAgICAgbV9wcmVGaWx0ZXJQYWNrcy5jbGVhcigpOwogICAgIG1fcG9zdEZpbHRlclBhY2tzLmNs
ZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsr
aSkgewotICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFpl
cm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwotICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAgICAgICAgbV9wcmVG
aWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAg
ICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1BvbGVGaWx0ZXJQ
YWNrND4oKSk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VDaGFubmVscyA9IG1ha2VVbmlxdWVBcnJh
eTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRleCBlZjhjMDkzYTFiOTY1
MzIyOWQ3OTlmMWE2YjI5MmFmYWRiZGFiYWQxLi44MjJjOTMxZjM4Y2UwZWM4ZGM2MjgyZjBmOGMz
NDNhZjY3N2Y5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuaApAQCAtNDMsOCArNDMsOSBAQCBjbGFzcyBBdWRpb0J1czsKIC8v
IG9mIHRoZSBsb3VkZXN0IHBhcnRzIG9mIHRoZSBzaWduYWwgYW5kIHJhaXNlcyB0aGUgdm9sdW1l
IG9mIHRoZSBzb2Z0ZXN0IHBhcnRzLAogLy8gbWFraW5nIHRoZSBzb3VuZCByaWNoZXIsIGZ1bGxl
ciwgYW5kIG1vcmUgY29udHJvbGxlZC4KIAotY2xhc3MgRHluYW1pY3NDb21wcmVzc29yIHsKK2Ns
YXNzIER5bmFtaWNzQ29tcHJlc3NvciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHluYW1pY3NDb21wcmVzc29yKTsKIHB1Ymxp
YzoKICAgICBlbnVtIHsKICAgICAgICAgUGFyYW1UaHJlc2hvbGQsCkBAIC05NSw5ICs5NiwxMCBA
QCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgewogICAgIGZsb2F0IG1fbGFzdEFuY2hvcjsKICAg
ICBmbG9hdCBtX2xhc3RGaWx0ZXJTdGFnZUdhaW47CiAKLSAgICB0eXBlZGVmIHN0cnVjdCB7Cisg
ICAgc3RydWN0IFplcm9Qb2xlRmlsdGVyUGFjazQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFplcm9Qb2xlIGZpbHRlcnNbNF07Ci0gICAgfSBaZXJv
UG9sZUZpbHRlclBhY2s0OworICAgIH07CiAKICAgICAvLyBQZXItY2hhbm5lbCBlbXBoYXNpcyBm
aWx0ZXJzLgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0ZXJQYWNrND4+
IG1fcHJlRmlsdGVyUGFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCA3MzRiMDY2Y2RhNDhi
YzJjN2E3OWVkZjUwN2QwNmMwNTZjNzBhMDkwLi5hZmVkYjdiNGNkMGE1YTYxZDFhOWZlMjc4YzM0
MDM4M2Y5OGUyMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscykKIAogICAgIG1fcHJlRGVsYXlCdWZmZXJzLmNsZWFyKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAg
bV9wcmVEZWxheUJ1ZmZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5
PihNYXhQcmVEZWxheUZyYW1lcykpOworICAgICAgICBtX3ByZURlbGF5QnVmZmVycy5hcHBlbmQo
bWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVzKSk7CiB9CiAKIHZv
aWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXRQcmVEZWxheVRpbWUoZmxvYXQgcHJlRGVs
YXlUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5h
bWljc0NvbXByZXNzb3JLZXJuZWwuaAppbmRleCBiN2JjZWEyZmFmZDg5OTZjYTUyOGIwYjVkYWI0
OWNiODg5NThkY2M0Li5lMTFmNDdiYWFmMGJjNmM1ZDBjYTdlM2Q3MjAwODI2MzlkMjcwYzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3JLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWwuaApAQCAtMzUsNyArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCB7CitjbGFzcyBEeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IDhjZjU5OTE3OTVmM2YxZjYzZTI4
MWQ5ZTE2YWNhZjNkN2E1N2E1ZGEuLjRlNDYzYjEyODFhN2ZhM2JiMzk3YTZiMDY1Y2UwMzNjY2Jm
OWFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93
ZXJQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2Vy
UGFubmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBDb21t
b24gdHlwZSBvZiBzdGVyZW8gcGFubmVyIGFzIGZvdW5kIGluIG5vcm1hbCBhdWRpbyBtaXhpbmcg
ZXF1aXBtZW50LgogCi1jbGFzcyBFcXVhbFBvd2VyUGFubmVyIDogcHVibGljIFBhbm5lciB7Citj
bGFzcyBFcXVhbFBvd2VyUGFubmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgRXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAppbmRleCA0NTQyYjZmYjI1
Nzg1NDk1YWIyMDZhYmMzYzkwYzc1YmMyZjE2ZWEwLi4zODYyMjdmMTk3MDRhZmQ3OTJlMzY2MjJi
ZGRhOWMxYWNlYTc1MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9GRlRDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRD
b252b2x2ZXIuaApAQCAtMzQsNyArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEZGVENvbnZvbHZlciB7CitjbGFzcyBGRlRDb252b2x2ZXIgZmluYWwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZGVENvbnZvbHZl
cik7CiBwdWJsaWM6CiAgICAgLy8gZmZ0U2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvCiAgICAg
RkZUQ29udm9sdmVyKHNpemVfdCBmZnRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCA0YzAyYjY5OTJiMDYzODNiODAzNTczNzg3OGRiZjY1YTI2
ZmI5YzMxLi40YzE1MjA2N2Q0NGFjNGI4NTQxOTIxYWFlZDI5NTk4MmI5NjkzNzhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IHZvaWQgRkZURnJhbWU6OmRvUGFkZGVkRkZUKGNvbnN0IGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0
YVNpemUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGRlRGcmFtZT4gRkZURnJhbWU6OmNyZWF0ZUludGVy
cG9sYXRlZEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZGVEZyYW1lJiBmcmFt
ZTIsIGRvdWJsZSB4KQogewotICAgIGF1dG8gbmV3RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZG
VEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gbWFrZVVuaXF1
ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CiAKICAgICBuZXdGcmFtZS0+aW50ZXJwb2xh
dGVGcmVxdWVuY3lDb21wb25lbnRzKGZyYW1lMSwgZnJhbWUyLCB4KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAppbmRleCA3NTdiY2ZhNGI2YWVmZDcw
ZWJhZTg2NTQ4NzI1ZmE0MDYyOWM2ZTllLi5hNTE5MzQ5ODE1MDQ1MjZkNmZjNjRkNDViOTc5MGIz
NzgxMDNhNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhSVEZL
ZXJuZWw7CiAKLWNsYXNzIEhSVEZEYXRhYmFzZSB7CitjbGFzcyBIUlRGRGF0YWJhc2UgZmluYWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEhSVEZEYXRhYmFzZSk7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBmNDViZTg0N2NlNzEwZGNlZGEy
ZTBlYzEwNmI3NWJmMjY4NTc4OWNkLi5hNDc0YTcwYzQwODUyYWUyZTFmOWY1OGE0OWEwMDAzNjE1
ODBiMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZE
YXRhYmFzZUxvYWRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIUlRGRGF0YWJhc2VMb2Fk
ZXI6OmxvYWQoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9ocnRm
RGF0YWJhc2UuZ2V0KCkpIHsKICAgICAgICAgLy8gTG9hZCB0aGUgZGVmYXVsdCBIUlRGIGRhdGFi
YXNlLgotICAgICAgICBtX2hydGZEYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURkRhdGFi
YXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CisgICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gbWFr
ZVVuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKaW5k
ZXggYzg0YWI5NzUxYTE0NTk4OWEwMzc3ZmFkMWY0YTc1ZThmMTdlMmIyNC4uNjA1MjMyY2QxYTk5
YzkyMzNkOWFkMTA0OWJhMzA3ZTIxNzczOGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTI0NCw4ICsyNDQsOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChj
b25zdCBTdHJpbmcmIHN1YgogICAgIGlmICghaXNFbGV2YXRpb25Hb29kKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91
bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBr
ZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90
YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5l
bExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1h
a2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICAv
LyBMb2FkIGNvbnZvbHV0aW9uIGtlcm5lbHMgZnJvbSBIUlRGIGZpbGVzLgogICAgIGludCBpbnRl
cnBvbGF0ZWRJbmRleCA9IDA7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhS
VEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5n
JiBzdWIKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0
UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SFJURkVs
ZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBlbGV2
YXRpb24sIHNhbXBsZVJhdGUpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4g
SFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbGV2YXRpb24q
IGhydGZFbGV2YXRpb24xLCBIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMiwgZmxvYXQgeCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKQEAgLTI4NSw4ICsyODUsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJU
RkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhS
VEZFbAogICAgICAgICAKICAgICBBU1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEuMCk7CiAgICAgCi0g
ICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51
bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91
bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBr
ZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemlt
dXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+
KE51bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlz
dEwxID0gaHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RMKCk7CiAgICAgSFJURktlcm5lbExpc3Qq
IGtlcm5lbExpc3RSMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0UigpOwpAQCAtMzAyLDcg
KzMwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpj
cmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgLy8gSW50ZXJwb2xhdGUgZWxl
dmF0aW9uIGFuZ2xlLgogICAgIGRvdWJsZSBhbmdsZSA9ICgxLjAgLSB4KSAqIGhydGZFbGV2YXRp
b24xLT5lbGV2YXRpb25BbmdsZSgpICsgeCAqIGhydGZFbGV2YXRpb24yLT5lbGV2YXRpb25Bbmds
ZSgpOwogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+KFdU
Rk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGljX2Nhc3Q8aW50
PihhbmdsZSksIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhSVEZFbGV2YXRp
b24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGljX2Nh
c3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOwogfQogCiB2b2lkIEhSVEZFbGV2YXRpb246Omdl
dEtlcm5lbHNGcm9tQXppbXV0aChkb3VibGUgYXppbXV0aEJsZW5kLCB1bnNpZ25lZCBhemltdXRo
SW5kZXgsIEhSVEZLZXJuZWwqICZrZXJuZWxMLCBIUlRGS2VybmVsKiAma2VybmVsUiwgZG91Ymxl
JiBmcmFtZURlbGF5TCwgZG91YmxlJiBmcmFtZURlbGF5UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAppbmRleCAyYTk1OTA0NTUyMTg0M2ExNTE2MmVj
YzhlMzIxMTczOWUwNzA1M2Y3Li5lZjc1MmMzYzAxYmUzOWVjZGI3ZWY2NGRmNDM5MDkyNjZkNmVk
OTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5o
CkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gSFJURkVsZXZhdGlv
biBjb250YWlucyBhbGwgb2YgdGhlIEhSVEZLZXJuZWxzIChvbmUgbGVmdCBlYXIgYW5kIG9uZSBy
aWdodCBlYXIgcGVyIGF6aW11dGggYW5nbGUpIGZvciBhIHBhcnRpY3VsYXIgZWxldmF0aW9uLgog
Ci1jbGFzcyBIUlRGRWxldmF0aW9uIHsKK2NsYXNzIEhSVEZFbGV2YXRpb24gZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhSVEZF
bGV2YXRpb24pOwogcHVibGljOgogICAgIEhSVEZFbGV2YXRpb24oc3RkOjp1bmlxdWVfcHRyPEhS
VEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0TCwgc3RkOjp1bmlxdWVfcHRyPEhSVEZLZXJuZWxMaXN0
PiBrZXJuZWxMaXN0UiwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKaW5kZXggZWRmNmM2MGQwZGI4
MTRkOTRjMGY3MWI2MzA2ZTQzODI2NTNhYTRjNy4uMzc1NTIxNmFlMjg3YTcxYzc0MjkyOWE1M2M5
NTkwOTZkYjFkYmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktl
cm5lbC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSFJURktlcm5lbDo6SFJURktlcm5lbChBdWRpb0No
YW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgbV9mZnRGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+
KGZmdFNpemUpOworICAgIG1fZmZ0RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmZnRTaXpl
KTsKICAgICBtX2ZmdEZyYW1lLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2UsIHRydW5jYXRl
ZFJlc3BvbnNlTGVuZ3RoKTsKIH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHNpemVfdCBIUlRGS2Vy
bmVsOjpmZnRTaXplKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQ2hhbm5lbD4gSFJU
Rktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKCkKIHsKLSAgICBhdXRvIGNoYW5uZWwgPSBz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIGNoYW5u
ZWwgPSBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKICAgICBGRlRGcmFtZSBm
ZnRGcmFtZSgqbV9mZnRGcmFtZSk7CiAKICAgICAvLyBBZGQgbGVhZGluZyBkZWxheSBiYWNrIGlu
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCmluZGV4IGJmNWVl
ZmFhNWU0YzZkMmJmMTdhOTkwMDMwNzQxNjVjNmU0MzNhZDcuLmNhYWE0NDFmMWQxNGVhMzZmNWU5
NjhhZDhhNzdkMGI3YTYwZGQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGUGFubmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBIUlRGUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBIUlRGUGFubmVyIGZpbmFs
IDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSFJURlBhbm5lcihmbG9h
dCBzYW1wbGVSYXRlLCBIUlRGRGF0YWJhc2VMb2FkZXIqKTsKICAgICB2aXJ0dWFsIH5IUlRGUGFu
bmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlD
aGFubmVsUmVzYW1wbGVyLmNwcAppbmRleCBiYmJmMTY0NDYyMDc2MzllMzVjZjc5NTY0ODI4MjYz
ZDNlOTM3M2FlLi41YmY5YWI5NWQwMTU3NTAwODE1ZDYxMzFhYjFkODk3NDFiZTFmZTI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJl
c2FtcGxlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0
aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXIKIHsK
ICAgICAvLyBDcmVhdGUgZWFjaCBjaGFubmVsJ3MgcmVzYW1wbGVyLgogICAgIGZvciAodW5zaWdu
ZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytj
aGFubmVsSW5kZXgpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxT
aW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOworICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1h
a2VVbmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKIH0KIAogdm9pZCBNdWx0aUNo
YW5uZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIsIEF1
ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKaW5k
ZXggNDQxNzU0NzYwNTgzZDI4MDM0YTQ1YjNiZDhhNjE4OGQ0NjVhMmYzNi4uNjE0NmU5MjVjMDZh
MmRkYTc2Y2I0MTJmMGNjMWUwYTI0NmFjODBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKICAgICAKLWNsYXNzIE11
bHRpQ2hhbm5lbFJlc2FtcGxlciB7CitjbGFzcyBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgZmluYWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAgIGV4cGxpY2l0
IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKaW5k
ZXggYWM3Mjg2YWM5YTA2MGI3NTM0Y2IyZWRlOTIxZDZjYmQ3N2E5N2E4OC4uNDBiOWQwMWRjMTg0
Yjk2ZDVkZjNhYjliN2Y0MDk0NjNhOTc4MzRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QYW5uZXIuY3BwCkBAIC00MywxMSArNDMsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFBhbm5l
cj4gUGFubmVyOjpjcmVhdGUoUGFubmluZ01vZGVsVHlwZSBtb2RlbCwgZmxvYXQgc2FtcGxlUmF0
ZSwKIAogICAgIHN3aXRjaCAobW9kZWwpIHsKICAgICBjYXNlIFBhbm5pbmdNb2RlbFR5cGU6OkVx
dWFscG93ZXI6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8RXF1YWxQb3dlclBh
bm5lcj4oc2FtcGxlUmF0ZSk7CisgICAgICAgIHBhbm5lciA9IG1ha2VVbmlxdWU8RXF1YWxQb3dl
clBhbm5lcj4oc2FtcGxlUmF0ZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBQYW5uaW5n
TW9kZWxUeXBlOjpIUlRGOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZQ
YW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKKyAgICAgICAgcGFubmVyID0gbWFr
ZVVuaXF1ZTxIUlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRlcik7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IGUwMjM5NGFhNWIxNDljZDE1OTY5MTJh
MjU2ODFmZjVlYTQ0YWQ4ZDIuLmM4YmQ2NGE0MWJmNjEyZTg5ZTNjMjE0ZmEyMmRjYzU5OTQ4ZTU0
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdHJpbmcgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsK
IH0KIAogUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFTZXNzaW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiLmNwcAppbmRleCAzMDQzZmM4YTA0ZGYwZDc3YzEwYWEwMzc5YmQyNmEzOWQ0NmNlNmJh
Li44YTY3NTVjNTRhZDAwYTNhODEwMTg3NDIxNjJjY2QwNzRkZTEwZTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFJl
dmVyYjo6aW5pdGlhbGl6ZShBdWRpb0J1cyogaW1wdWxzZVJlc3BvbnNlQnVmZmVyLCBzaXplX3Qg
cmVuZGVyU2xpY2VTaXplLAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUmVzcG9uc2VD
aGFubmVsczsgKytpKSB7CiAgICAgICAgIEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCA9IGltcHVsc2VS
ZXNwb25zZUJ1ZmZlci0+Y2hhbm5lbChpKTsKIAotICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNp
emUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFk
cykpOworICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5kKG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9s
dmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJlbmRl
clBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcykpOwogCiAgICAgICAgIGNvbnZvbHZlclJlbmRl
clBoYXNlICs9IHJlbmRlclNsaWNlU2l6ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYi5oCmluZGV4IDNlMjU3NmIzNTc1N2RiYTI0NzBjOGViN2RhM2MxN2JlZWJiZmRj
ZWQuLjIzNGUzMWRhZWJiZDRkZGFhMzZhMWU5MDUzMTFlYjk5MjJmYWE2N2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlv
QnVzOwogICAgIAogLy8gTXVsdGktY2hhbm5lbCBjb252b2x1dGlvbiByZXZlcmIgd2l0aCBjaGFu
bmVsIG1hdHJpeGluZyAtIG9uZSBvciBtb3JlIFJldmVyYkNvbnZvbHZlciBvYmplY3RzIGFyZSB1
c2VkIGludGVybmFsbHkuCiAKLWNsYXNzIFJldmVyYiB7CitjbGFzcyBSZXZlcmIgZmluYWwgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0geyBNYXhGcmFt
ZVNpemUgPSAyNTYgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKaW5kZXggNTEyYjZhZGUzNDFhMjg1Njk3MmVl
M2Y3YmNiMjExNjZiYjcyMWExZi4uYTYyODM1ZjljMGQ3ZDc0M2M5ZTkyN2NlZGUyZDZhMWRhNDU1
ODQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKQEAgLTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8gUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIGlzIGEgY2lyY3VsYXIgZGVsYXkgYnVm
ZmVyIHdpdGggb25lIGNsaWVudCByZWFkaW5nIGZyb20gaXQgYW5kIG11bHRpcGxlIGNsaWVudHMK
IC8vIHdyaXRpbmcvYWNjdW11bGF0aW5nIHRvIGl0IGF0IGRpZmZlcmVudCBkZWxheSBvZmZzZXRz
IGZyb20gdGhlIHJlYWQgcG9zaXRpb24uICBUaGUgcmVhZCBvcGVyYXRpb24gd2lsbCB6ZXJvIHRo
ZSBtZW1vcnkKIC8vIGp1c3QgcmVhZCBmcm9tIHRoZSBidWZmZXIsIHNvIGl0IHdpbGwgYmUgcmVh
ZHkgZm9yIGFjY3VtdWxhdGlvbiB0aGUgbmV4dCB0aW1lIGFyb3VuZC4KLWNsYXNzIFJldmVyYkFj
Y3VtdWxhdGlvbkJ1ZmZlciB7CitjbGFzcyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJl
dmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXggMTQ1ZGY4MWUy
YTZiYTJjMmRhYTliYjQxZTZiNWNhYmFmMzg1ZjkxYy4uYTljOTM1YzFhMjg1YWIxMzYyZDhmZjFk
ZjhjZWJhNWE3ZTVhYTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFJldmVyYkNvbnZvbHZlcjo6
UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVu
ZGVyU2xpCiAKICAgICAgICAgYm9vbCB1c2VEaXJlY3RDb252b2x2ZXIgPSAhc3RhZ2VPZmZzZXQ7
CiAKLSAgICAgICAgYXV0byBzdGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29udm9sdmVy
U3RhZ2U+KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZlcmJUb3RhbExhdGVuY3ks
IHN0YWdlT2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBoYXNlLCByZW5kZXJTbGlj
ZVNpemUsICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVyKTsKKyAgICAg
ICAgYXV0byBzdGFnZSA9IG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+KHJlc3BvbnNl
LCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZlcmJUb3RhbExhdGVuY3ksIHN0YWdlT2Zmc2V0LCBz
dGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBoYXNlLCByZW5kZXJTbGljZVNpemUsICZtX2FjY3Vt
dWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVyKTsKIAogICAgICAgICBib29sIGlzQmFj
a2dyb3VuZFN0YWdlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyLmgKaW5kZXggNWI4MTllMWEzZTZmNGZiMWY4ZGIwYzU5Njk3MjYy
YWFjMDljNmJkZS4uMzIwMGI0NWVhOGRmN2MyMWNlNmZhMzdlMDhiYjI3OTFmOGFlNWY2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKQEAg
LTQzLDggKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0NoYW5uZWw7
CiAKLWNsYXNzIFJldmVyYkNvbnZvbHZlciB7CitjbGFzcyBSZXZlcmJDb252b2x2ZXIgZmluYWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJldmVyYkNvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gbWF4RkZUU2l6ZSBjYW4gYmUgYWRq
dXN0ZWQgKGZyb20gc2F5IDIwNDggdG8gMzI3NjgpIGRlcGVuZGluZyBvbiBob3cgbXVjaCBwcmVj
aXNpb24gaXMgbmVjZXNzYXJ5LgogICAgIC8vIEZvciBjZXJ0YWluIHR3ZWFreSBkZS1jb252b2x2
aW5nIGFwcGxpY2F0aW9ucyB0aGUgcGhhc2UgZXJyb3JzIGFkZCB1cCBxdWlja2x5IGFuZCBsZWFk
IHRvIG5vbi1zZW5zaWNhbCByZXN1bHRzIHdpdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAppbmRleCAwZmRlNDIxYWYy
ZjgyZmQ0ODc0ZDk0ZjZhZjFkNjM0NzIzOWM2NTZlLi40ZmY5NTNiMjYwNDkxN2QzNDUyMDM5NDA1
YjY1ZGUyYmQ1YTFlYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCkBAIC01NSwxNiArNTUsMTYgQEAgUmV2ZXJi
Q29udm9sdmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKGNvbnN0IGZsb2F0KiBpbXB1bHNl
UmVzcG9uc2UsIHNpemVfdCwKICAgICBBU1NFUlQoYWNjdW11bGF0aW9uQnVmZmVyKTsKIAogICAg
IGlmICghbV9kaXJlY3RNb2RlKSB7Ci0gICAgICAgIG1fZmZ0S2VybmVsID0gc3RkOjptYWtlX3Vu
aXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0S2VybmVsID0gbWFrZVVuaXF1
ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CiAgICAgICAgIG1fZmZ0S2VybmVsLT5kb1BhZGRlZEZGVChp
bXB1bHNlUmVzcG9uc2UgKyBzdGFnZU9mZnNldCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2Zm
dENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RkZUQ29udm9sdmVyPihmZnRTaXplKTsKKyAg
ICAgICAgbV9mZnRDb252b2x2ZXIgPSBtYWtlVW5pcXVlPEZGVENvbnZvbHZlcj4oZmZ0U2l6ZSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFzdGFnZU9mZnNldCk7CiAgICAgICAgIEFT
U0VSVChzdGFnZUxlbmd0aCA8PSBmZnRTaXplIC8gMik7CiAKLSAgICAgICAgbV9kaXJlY3RLZXJu
ZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIpOworICAg
ICAgICBtX2RpcmVjdEtlcm5lbCA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihmZnRTaXpl
IC8gMik7CiAgICAgICAgIG1fZGlyZWN0S2VybmVsLT5jb3B5VG9SYW5nZShpbXB1bHNlUmVzcG9u
c2UsIDAsIHN0YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9kaXJlY3RDb252b2x2ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPERpcmVjdENvbnZvbHZlcj4ocmVuZGVyU2xpY2VTaXplKTsKKyAgICAgICAgbV9k
aXJlY3RDb252b2x2ZXIgPSBtYWtlVW5pcXVlPERpcmVjdENvbnZvbHZlcj4ocmVuZGVyU2xpY2VT
aXplKTsKICAgICB9CiAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYWxsb2NhdGUocmVuZGVyU2xpY2VT
aXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
Q29udm9sdmVyU3RhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlclN0YWdlLmgKaW5kZXggYTA0OTA5NzAzNDBhYjNiMzM2MDBiMDg5ZTU5ODQ3NGZiM2Q0
NTVlNi4uM2MwM2JlMzQxYjNiN2Q2NDYyMWRjODAzODE2NjkzNjBmNGRiNGM5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5o
CkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERpcmVjdENvbnZvbHZlcjsKICAgICAKIC8vIEEgUmV2
ZXJiQ29udm9sdmVyU3RhZ2UgcmVwcmVzZW50cyB0aGUgY29udm9sdXRpb24gYXNzb2NpYXRlZCB3
aXRoIGEgc3ViLXNlY3Rpb24gb2YgYSBsYXJnZSBpbXB1bHNlIHJlc3BvbnNlLgogLy8gSXQgaW5j
b3Jwb3JhdGVzIGEgZGVsYXkgbGluZSB0byBhY2NvdW50IGZvciB0aGUgb2Zmc2V0IG9mIHRoZSBz
dWItc2VjdGlvbiB3aXRoaW4gdGhlIGxhcmdlciBpbXB1bHNlIHJlc3BvbnNlLgotY2xhc3MgUmV2
ZXJiQ29udm9sdmVyU3RhZ2UgeworY2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgZmluYWwgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIHJlbmRlclBoYXNl
IGlzIHVzZWZ1bCB0byBrbm93IHNvIHRoYXQgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIHByZSB2ZXJz
dXMgcG9zdCBkZWxheSBzbyB0aGF0IHN0YWdlcyB3aWxsIHBlcmZvcm0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCmluZGV4IGJiMDZlNGVl
ZDYzM2YwZTdjNjgyZTIwZTRlNmE1NzJhYTFmYWE5NjYuLmFmOWVkMDBkNzMzZTg0MmI2ZWQzYTY0
NzQ4NTQyMGQzYzc2Nzc1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiSW5wdXRCdWZmZXIuaApAQCAtMzQsNyArMzQsOCBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAvLyBSZXZlcmJJbnB1dEJ1ZmZlciBpcyB1c2VkIHRvIGJ1ZmZlciBpbnB1dCBzYW1w
bGVzIGZvciBkZWZlcnJlZCBwcm9jZXNzaW5nIGJ5IHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMuCi1j
bGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciB7CitjbGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmV2
ZXJiSW5wdXRCdWZmZXIoc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAppbmRleCAyZmNkODlmN2VjYTM3NTg1ODYzMWE5YjI3
NjVhMTBkMjAxYjM0MWM3Li5jMTMyZjVkOTc2MmM3NTY2YjIzMjVjMDY0YjI4ZGU4YjZlMzkwMWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCkBA
IC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gU2luY1Jlc2FtcGxlciBp
cyBhIGhpZ2gtcXVhbGl0eSBzYW1wbGUtcmF0ZSBjb252ZXJ0ZXIuCiAKLWNsYXNzIFNpbmNSZXNh
bXBsZXIgeworY2xhc3MgU2luY1Jlc2FtcGxlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAgLy8gc2NhbGVGYWN0b3IgPT0gc291cmNlU2FtcGxl
UmF0ZSAvIGRlc3RpbmF0aW9uU2FtcGxlUmF0ZQogICAgIC8vIGtlcm5lbFNpemUgY2FuIGJlIGFk
anVzdGVkIGZvciBxdWFsaXR5IChoaWdoZXIgaXMgYmV0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9VcFNhbXBsZXIuaAppbmRleCAyNjZiY2FmOTgwZDcyNmZhMmY2MzdjZmU5M2E1
ZDRjMzhiMjRlZTA2Li42NzVlZTRhZDBjNDQ2N2NkMWRkNmQxZDUxNjExZTc3Yjk4YzRjNjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVwU2FtcGxlciB1cC1zYW1wbGVzIHRoZSBz
b3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBVcFNhbXBsZXIgeworY2xh
c3MgVXBTYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBVcFNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCmluZGV4IDgzMWRlOTA5M2IwMDU2MTZi
NGJkNzdlYTdiMDc3OGMzN2RhYTdiNmUuLjAyZmZhY2Q1ZWFjYTdjZTI3NTg5MmJlOGQ2NDM5NGM3
MzNkYzdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Q
b2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaApAQCAt
MzMsNyArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFplcm9Qb2xlIGlzIGEgc2lt
cGxlIGZpbHRlciB3aXRoIG9uZSB6ZXJvIGFuZCBvbmUgcG9sZS4KIAotY2xhc3MgWmVyb1BvbGUg
eworY2xhc3MgWmVyb1BvbGUgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFplcm9Qb2xlKCkKICAgICAgICAgOiBtX3plcm8oMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0
LmgKaW5kZXggODZiNjVhMjI1M2FmMWFlYjJhMWNhOWNhYTM2Njc4NmNkN2Q2NTUyMC4uNzZiNWJj
NzUxZDYwNThmMTg3NzFiYTk1NTJhYWM0NmM2ZTJhZDZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKQEAg
LTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uOwogCiBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3QgOiBwdWJsaWMgUGxhdGZvcm1B
dWRpb0RhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdl
YkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiwgdWludDMyX3Qgc2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwCmluZGV4IDViZjhmZGE2YjI5MTJiMThmMTE5MGRjYmU3MDgyYmY2ODRi
ZWU5OGYuLjFhNTQ5NWZkNzY0ZDljM2NjNmVkYjU4MWZhNDgwZWFlYWQxNDU5YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShB
dWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAy
KQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAl
ZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBzYW1wbGVSYXRl
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyPihjYWxs
YmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJl
U2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggOGFmODc3ZWMyYzRjYTBhYmQzMDc0
ODM1ZjU0YjM0YWViZjA0MzNhMi4uNGJkZTdlNDFlMmI2NDM3Y2QwZmY3MjVlNGQwNzlkNjhmODll
N2RjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
RGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAtODAsNyArODAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAgICAg
IExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFu
ZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0K
IAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmlu
ZGV4IGRjNmM4YmNjZTM2OWQwNmFlZGM4ZmQzMzNjNzM4YzBiZTk1NzVkZDQuLmU1NjFjMGRmOGU0
ODk3Y2UyMTQ5OTM2ODBhZDczYjAzMGI2NGEyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtNzEsNyArNzEsNyBA
QCBBdWRpb1Nlc3Npb25Qcml2YXRlOjpBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiop
CiB9CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KHRoaXMpKQorICAgIDogbV9wcml2YXRl
KG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcAppbmRleCA3NjRhMzQ3Zjk4MjllMWU4NDc1YmQyZWExMjgwYWExNzUwMjZlY2ZjLi45
ZmU2NGJhYWE0Nzg0ZmVjZGFiM2Q2ZGRiNWUyNzgzODFlMWUwNzAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0
aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0
ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihj
YWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5h
dGlvbk1hYz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0
aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggNzdkNDMx
NjU2Njk5MGU5MDFiOTIwYmY3NzhkOTY5ZTlmMThmMTg4YS4uNDFhZmUzOWYyMzJhZTU4ODA4NjBm
MDg0ZDU1NmNiNGE1ZDhhZTI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xMDgsNyArMTA4
LDcgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdChjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGYKIHsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBs
ZVJhdGUoKSA+PSAwKTsKIAotICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOworICAgIG1faW5wdXREZXNjcmlw
dGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOwogICAg
IGlmIChtX291dHB1dERlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gc2V0dXBDb252ZXJ0ZXIo
KTsKIApAQCAtMTIwLDkgKzEyMCw5IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
c2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYKICAgICBBU1NF
UlQobV9pbnB1dERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+
PSAwKTsKIAotICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0g
bWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKCFt
X3JpbmdCdWZmZXIpCi0gICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FS
aW5nQnVmZmVyPigpOworICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1
ZmZlcj4oKTsKIAogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoZm9ybWF0LCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KG1fbWF4aW11bVNhbXBsZUNvdW50KSk7CiAgICAgbV9zY3JhdGNoQnVmZmVyID0g
QXVkaW9TYW1wbGVCdWZmZXJMaXN0OjpjcmVhdGUobV9vdXRwdXREZXNjcmlwdGlvbi0+c3RyZWFt
RGVzY3JpcHRpb24oKSwgbV9tYXhpbXVtU2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAppbmRleCA3ZjZl
ZjlkMzNkYjFmYjQ3ZTdjZjE0YzU5MDRhNDYxMTJiMTUyMjMyLi5jYzA0ZjBiZTMwOTc0OThiODM2
NmU5MjQyMDczZWNlM2UxOTc1YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcApAQCAtNjIsNyArNjIsNyBAQCBjbGFz
cyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9u
KCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+
KGlzTXV0ZWQoKSkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2
YXRlPihpc011dGVkKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKaW5kZXggMThhMjZhYjZkYzVjOGRkMDEyNTJkYjA2NDZk
NGY1YjliNDdiNmZmNS4uNTE0ZmY4NmY5ZDJjZGRhNDVlYTRmYTE2MjZmNDA5N2Q2M2E1MTEyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIu
aApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKIH07CiAKIGNs
YXNzIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3RvcmFn
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgfkNBUmluZ0J1
ZmZlclN0b3JhZ2VWZWN0b3IoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAppbmRleCBiOTgwM2JmYTAyMzI0MzU3YzBkZmUwNDcz
MTNkMmMzZWMzMDRjYjkyLi43YTQ3ZjU2MDhiYmI2ZGU5ZDM3NzNiMTdlOThlNDc2NGEyNDIyMmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCkBA
IC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtl
eWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckNG
PihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJDRj4oZGF0
YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckNGOjpLZXllZERlY29kZXJDRihjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcAppbmRleCAxYTYyN2VhMDBiOTJjYmFhNmNmN2MzNTVkNWU0NDVlYzQ4
NjFhNDEyLi40NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rl
cj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxLZXllZEVuY29kZXJDRj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJD
Rj4oKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVh
dGVEaWN0aW9uYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAppbmRleCBiNjg5MjI4MDVlNWQzNzNkZTdmMGFlZDc4
OTA4MjVhY2NjYzEyMDM5Li4wN2E0NWNhZDc4YjZkNDM3ZmFhODQyNTI2OTljMGQ0ODZkNzhlZDZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVk
VGltZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNo
YXJlZFRpbWVyQ0YuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJP
YnNlcnZlcigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBw
b3dlck9ic2VydmVyOwogICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNl
cnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVy
KS5yZWxlYXNlKCk7CisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBvd2VyT2Jz
ZXJ2ZXI+KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOwogI2VsaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmlj
YXRpb24gPSBmYWxzZTsKICAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNh
dGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCA0NzA1ZWQxNWE1YzU4YzQx
MWM0OWYzNGZhZjczZWViMzA3YjJjOTQ4Li5hYjk1ZmZkMGY4NzFlYzA0NjA4ZDUwOTY0NmI0M2Uz
ZDAzNDlmNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtNjUsNyArNjUsNyBA
QCBib29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBOZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlcjo6aW5pdGlhbGl6ZShjb25zdCBVUkwqIHVybCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW0KaW5kZXggYWUwYmQyMDljY2Q2ZjMxN2M5MTkzMjVhMTZhMThhOTljZDE1
NzJlNC4uMGQyYTYyMTg2YjVhNTRlMmI4NTFmZjk2ZDUyODEwMWY4NDY2ZjQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0
ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXI+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5kbGVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGU4MzY5YzZlNTAxNmUyM2Nm
ODczYjk1MzdkMmFmYjRmMGJjNjg1MjIuLjhmZTM4YWQwY2NlMmZkNTQyZDI5NzAxN2ZkYTJkMWNi
MzU1Yjc3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9s
bENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xs
Q29udHJvbGxlci5tbQpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6
dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9y
CiAgICAgICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGU+KCk7CisgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbWFrZVVuaXF1
ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsKICAgICB9CiAKICAgICBpZiAoc25hcFBvaW50
cy5pc0VtcHR5KCkgJiYgbV9zY3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRzRm9yQXhpcyhvdGhl
clNjcm9sbEV2ZW50QXhpcyhheGlzKSkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCmluZGV4IDUwM2Y5N2I5MjAxOGRhODdjMjQ4ODkxYjIyNjc5YWJiNzAwNWIzMDAuLjk2
Yzg1MTI5MzVhYjliNjk4ZTg5ODU1MTYzYmI2ZDIyYWM5YjgyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4gQ0RNRmFjdG9yeUNsZWFyS2V5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZQogI2Vsc2UKICAgICBBU1NFUlQoc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7CiAjZW5k
aWYKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOwogfQogCiBib29sIENE
TUZhY3RvcnlDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCBkNDczMDRjOTViMjZlZjIwNGY1ZGE0
YWRjYmI4YTA4NjRkZTE4YmIzLi4wYjkxMDY0OWNhNGE0N2E5MTVkNTQ4YzlkOTRhZmZmMzM1MzU5
MjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZpbmFsIDogcHVibGlj
IENETUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBDRE1GYWN0b3J5Q2xlYXJLZXkmIHNpbmdsZXRvbigpOwogCkBAIC01NCw2ICs1NSw3
IEBAIGNsYXNzIENETUZhY3RvcnlDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsK
IH07CiAKIGNsYXNzIENETVByaXZhdGVDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRl
Q2xlYXJLZXkoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGY3MjBjZmQzMzQzZjliYWQz
M2E0OTE5YTc4Zjg2NmY5ZDg2MmEwYWQuLjVhNmViNDA0MzllZjU5MDU3MmE3YzI5ZWZjMzM4ZDky
ZjIzOWM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpA
QCAtNjEsNyArNjEsNyBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250
cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIgKmNvbnRyb2xsZQogICAgIExPRyhHYW1lcGFk
LCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxlciAlcCBhZGRlZCIsIGNv
bnRyb2xsZXIpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVk
RGV2aWNlKCk7Ci0gICAgYXV0byBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1ZTxHYW1lQ29udHJv
bGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKKyAgICBhdXRvIGdhbWVwYWQgPSBtYWtl
VW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOwogCiAgICAg
aWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZl
Y3Rvci5ncm93KGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9ISURHYW1lcGFkLmgKaW5kZXggMTVmMDRjNzA4ZTkwMDdiYjRkYWRlZTU0MzVjMzU3
ZjAyZjUzMWM5My4uYTI1MjM0ZmI4NzVhNzUxYzYzYzM3YmE2YTVjZWU3ZDQ1MzRkNWE5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApA
QCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgSElER2FtZXBh
ZEVsZW1lbnQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBISURH
YW1lcGFkRWxlbWVudChkb3VibGUgdGhlTWluLCBkb3VibGUgdGhlTWF4LCBJT0hJREVsZW1lbnRS
ZWYgZWxlbWVudCkKICAgICAgICAgOiBtaW4odGhlTWluKQogICAgICAgICAsIG1heCh0aGVNYXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1l
cGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElE
R2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCA1NzQzOTFiNWMxMTFhMzJiZTkxMjVjYTZjZTA2MDBm
NWQ2MzgyMjU3Li42ZDE0YjZiMjE2MTBiODZjZTRjMDAxM2U1MDkxMWI4OGY5NWUxYTYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJv
dmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdh
bWVwYWRQcm92aWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhJREdhbWVwYWRQcm92
aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAgIExPRyhHYW1lcGFk
LCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CiAKICAgICB1
bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8SElER2Ft
ZXBhZD4oZGV2aWNlLCBpbmRleCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdh
bWVwYWQgPSBtYWtlVW5pcXVlPEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOwogCiAgICAgaWYg
KG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rv
ci5ncm93KGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRleCBhNGEzMGI1MmFiZTQ4YWY4NTBk
YzdjNzQ3YTNiY2RlMWQ1MWZkYTVmLi4wZTU5NzIzMjFiNWY3M2Y1NzJiZDc5NjU4ODExZjAwM2E5
NWVkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgS2V5ZWREZWNv
ZGVyR2VuZXJpYzo6RGljdGlvbmFyeSB7CiAgICAgdXNpbmcgTm9kZSA9IFZhcmlhbnQ8VmVjdG9y
PHVpbnQ4X3Q+LCBib29sLCB1aW50MzJfdCwgdWludDY0X3QsIGludDMyX3QsIGludDY0X3QsIGZs
b2F0LCBkb3VibGUsIFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+LCBzdGQ6OnVu
aXF1ZV9wdHI8QXJyYXk+PjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQg
YWRkKGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgc3RkOjpt
YWtlX3VuaXF1ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KKyAgICB2b2lkIGFk
ZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlx
dWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAgTm9kZSYgZ2V0KGNvbnN0
IFN0cmluZyYga2V5KSB7IHJldHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KIAogcHJpdmF0ZToKQEAg
LTc3LDcgKzc3LDcgQEAgc3RhdGljIGJvb2wgcmVhZFNpbXBsZVZhbHVlKFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXImIGRlY29kZXIsIEtleWVkRGVjb2RlckdlbmUKIAogc3RkOjp1bmlxdWVfcHRy
PEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2Rl
ckdlbmVyaWM+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2Rl
ckdlbmVyaWM+KGRhdGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERl
Y29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpAQCAtODYsNyAr
ODYsNyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGUg
dHlwZTsKICAgICBTdHJpbmcga2V5OwogCi0gICAgbV9yb290RGljdGlvbmFyeSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gbWFrZVVuaXF1
ZTxEaWN0aW9uYXJ5PigpOwogICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChtX3Jvb3REaWN0
aW9uYXJ5LmdldCgpKTsKIAogICAgIGJvb2wgb2sgPSB0cnVlOwpAQCAtMTQ0LDcgKzE0NCw3IEBA
IEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgYXV0byogY3VycmVudERpY3RpbmFyeSA9IG1fZGljdGlvbmFy
eVN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9
IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNr
LmFwcGVuZChuZXdEaWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAgICAgIGN1cnJlbnREaWN0aW5h
cnktPmFkZChrZXksIFdURk1vdmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNTYsMTMgKzE1NiwxMyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJH
ZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgb2sg
PSByZWFkU3RyaW5nKGRlY29kZXIsIGtleSk7CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IHN0ZDo6bWFrZV91
bmlxdWU8QXJyYXk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gbWFrZVVuaXF1ZTxB
cnJheT4oKTsKICAgICAgICAgICAgIG1fYXJyYXlTdGFjay5hcHBlbmQobmV3QXJyYXkuZ2V0KCkp
OwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoa2V5LCBXVEZNb3Zl
KG5ld0FycmF5KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50OiB7Ci0gICAgICAg
ICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7
CisgICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+
KCk7CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5n
ZXQoKSk7CiAgICAgICAgICAgICBtX2FycmF5U3RhY2subGFzdCgpLT5hcHBlbmQoV1RGTW92ZShu
ZXdEaWN0aW9uYXJ5KSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDJm
ODQxMDQ3NDYzOTU1OGYyOTVlODFhNTE3MTlhODczNGIzMmQ1OGEuLjIxY2MxZWJlNGE5MDFhMTNj
NzQ0MDNkYzAxY2YyZmM4MTgxMzAxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMzMsNyArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtl
eWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5
ZWRFbmNvZGVyR2VuZXJpYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJH
ZW5lcmljPigpOwogfQogCiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmluZyhj
b25zdCBTdHJpbmcmIGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCA3YWU2NWM1YThkMzA5ZTNk
ZWVmNTNjZThjZjFlMzAyNDI2ZDI3YzE0Li4yMDhhZjdiODQ3OWVjYWVmNTUzMGNjYzU1N2I3MzZl
YmFiY2JjYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Nj
cm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAgc3RhdGlj
IGNvbnN0IFNlY29uZHMgc2Nyb2xsQ2FwdHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xs
YWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3Jv
bGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYg
c2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAg
ICAsIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKLSAgICBt
X2tpbmV0aWNBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM+KG1fc2Nyb2xsYWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAg
ICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+
KG1fc2Nyb2xsYWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICNpZiBF
TkFCTEUoU01PT1RIX1NDUk9MTElORykKICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQog
ICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlv
bik7CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVT
bW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQogICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRp
b24sIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX3Ntb290aEFuaW1hdGlv
biA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBt
X2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogICAgICAg
ICB1cGRhdGVQb3NpdGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAppbmRleCBl
N2RkMTkxNDA0MTcxOTY4ZjkwZDZmZWEzMzU0ZTE0Y2VmNmY1NTY3Li4zNjFlOWRmMzI0NWJlNTY1
YjBlMmE0MWRmMThiMjZmZmJjNzE5Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6
OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVk
RGVjb2RlckdsaWI6OktleWVkRGVjb2RlckdsaWIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAppbmRleCA3NDA0YmNiZDQ0OWFhNDkyMWI4Y2UyYjdlMDE4NDQ5NTAxMDZmNjgwLi43
MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVy
PiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEtleWVkRW5jb2RlckdsaWI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVy
R2xpYj4oKTsKIH0KIAogS2V5ZWRFbmNvZGVyR2xpYjo6S2V5ZWRFbmNvZGVyR2xpYigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXgg
YTIzZTIxOWQxYTY4NmRhNzMwYzAxMWJlMGQxMjQ5Y2NlMGJhNDVjZC4uZWZjY2M1YzZmNzlhNWE5
YTJlZTQ3NzBiZjVjYzk5NGY4NDJiOTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmNsZWFyVGltZXIoKQogdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihTZWNv
bmRzIGRlbGF5KQogewogICAgIEFTU0VSVCghbV9mcmFtZVRpbWVyKTsKLSAgICBtX2ZyYW1lVGlt
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNl
QW5pbWF0aW9uKTsKKyAgICBtX2ZyYW1lVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywg
JkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0
T25lU2hvdChkZWxheSk7CiB9CiAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIEJpdG1hcEltYWdl
OjpyZXNldEFuaW1hdGlvbigpCiB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2RlY29kaW5nQ2FsbGJhY2tzKQot
ICAgICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnVu
Y3Rpb248dm9pZCgpPiwgMT4+KCk7CisgICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBtYWtl
VW5pcXVlPFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4oKTsKIAogICAgIG1fZGVjb2RpbmdD
YWxsYmFja3MtPmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CmluZGV4IDBkMzU1NjE4OTcwZmIyNzdmNzJlNzg5OTBlM2Y0ZjJhMjE2ZmJjNjkuLjM1M2ZjYTY2
MDEzMjY0YjAyNDYyYTU3MTIyNGQwNWExODFkOTY4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApA
QCAtNzcsNyArNzcsNyBAQCBjbGFzcyBUZXh0TGF5b3V0IHsKICAgICBUZXh0TGF5b3V0KFJlbmRl
clRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB4UG9zKQogICAgICAg
ICA6IG1fZm9udChmb250KQogICAgICAgICAsIG1fcnVuKGNvbnN0cnVjdFRleHRSdW4odGV4dCwg
eFBvcykpCi0gICAgICAgICwgbV9jb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleFRl
eHRDb250cm9sbGVyPihtX2ZvbnQsIG1fcnVuLCB0cnVlKSkKKyAgICAgICAgLCBtX2NvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxDb21wbGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUp
KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UG9pbnQuaAppbmRleCA3MjA0NTNkOWYwNDZkNzlmNDhhMDliODFhZjcwMDBmNGRlM2JlMDI1
Li5jZWZkOGQ0MjI0NGQwNmZjYjgyNGJlNWUzYjczNDE5Y2Q0OThhNGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCkBAIC02Myw2ICs2Myw3IEBA
IGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgRmxvYXRQb2ludCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCgpIHsg
fQogICAgIEZsb2F0UG9pbnQoZmxvYXQgeCwgZmxvYXQgeSkgOiBtX3goeCksIG1feSh5KSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTg0YjQ0YjA3
YTQxMjIxNmI5ZWM1OTg0MjJmMDc4N2YwZTZjN2FlYi4uZTBiNDlmMjQ3YzIwMDliZGQ1ZjFkMGM4
ZWJhN2FkNmM3ZWI4Y2JkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAKQEAgLTM5NCw3ICszOTQsNyBAQCBHbHlwaERhdGEgRm9udDo6Z2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKSBjb25zdAogYXV0byBGb250OjplbnN1cmVEZXJpdmVk
Rm9udERhdGEoKSBjb25zdCAtPiBEZXJpdmVkRm9udHMmCiB7CiAgICAgaWYgKCFtX2Rlcml2ZWRG
b250RGF0YSkKLSAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERl
cml2ZWRGb250cz4oKTsKKyAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBtYWtlVW5pcXVlPERl
cml2ZWRGb250cz4oKTsKICAgICByZXR1cm4gKm1fZGVyaXZlZEZvbnREYXRhOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggMmU1OGJkNjllYmI1MzkxZTAz
NmQyOGMyNzAyYzFmNDUwNTA4YjMxMi4uZWY2MDUyMjAxOTcwOGVmMTVmMDgyOWZhN2Q5YzU2OTgx
NTJjOTZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMzQ1
LDcgKzM0NSw3IEBAIEFMV0FZU19JTkxJTkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0ZvckdseXBo
KEdseXBoIGdseXBoKSBjb25zdAogCiAgICAgYm91bmRzID0gcGxhdGZvcm1Cb3VuZHNGb3JHbHlw
aChnbHlwaCk7CiAgICAgaWYgKCFtX2dseXBoVG9Cb3VuZHNNYXApCi0gICAgICAgIG1fZ2x5cGhU
b0JvdW5kc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+
KCk7CisgICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNz
TWFwPEZsb2F0UmVjdD4+KCk7CiAgICAgbV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRyaWNzRm9y
R2x5cGgoZ2x5cGgsIGJvdW5kcyk7CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDBhNjJhMjc1YmM2
OTJlZjM5OTExNDBlMDI4ZjU4MDA0MjFkMGM3MTEuLjM3MDliNDFlYjJiN2JkMGJmN2IxMDJhYzVk
YmVmZTJmNzc3M2FmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRD
YWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
CiAgICAgICAgICAgICAgICAgaXQgPSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5maW5kKGtleSk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ICE9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgpLmVu
ZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5h
bWUpCi0gICAgICAgICAgICAgICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9u
dFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgaXQtPnZhbHVlID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigq
Zm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuY3BwCmluZGV4IDcyNzRkYjBkYjMyYjNiNDFiM2UwZTFiMWVkMGZiMmFlYThiMzZhM2Iu
LjY0ODE4ZjRiNTE1NWQ0MmJmYWM4MWI2MWY0YjVmOWNkZWE1NDUyZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI1NCw3ICsy
NTQsNyBAQCBzdGF0aWMgUmVmPEZvbnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRDYWNoZWRG
b250cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aQogICAgICAgICByZXR1cm4gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+Zm9udHMuZ2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRyeSA9IGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpj
cmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CisgICAgbmV3RW50cnkgPSBtYWtlVW5pcXVl
PEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpj
cmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CiAgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+
IGdseXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQoKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCB1bnJlZmVyZW5jZWRQcnVuZUludGVydmFsID0gNTA7CkBAIC0zMjYsOSArMzI2LDkgQEAg
c3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRp
c3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q+KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0IHJlY29yZGluZ0NvbnRleHQoWyZdKEdyYXBo
aWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlz
cGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNw
bGF5TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3Qo
KSwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIH0pOwogICAgIAogICAgIEZsb2F0UG9pbnQgc3Rh
cnRQb2ludChzdGFydFgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAppbmRleCBkYjc0MzAyZTlkYWE0ZWI1MmMwY2Uw
ODFmZDU2MDUyNzk1NzhmYmY0Li4xMmFjODM3ZmNkMjQ2NWY5ZjgxZGViMDY4N2FhNzc2ZDVlYTA2
NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZUZvbnRzLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIEZvbnRDYXNjYWRlRm9udHM6
OkdseXBoUGFnZUNhY2hlRW50cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNo
YQogewogICAgIEFTU0VSVCghZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlcikuZ2x5cGgp
OwogICAgIGlmICghbV9taXhlZEZvbnQpIHsKLSAgICAgICAgbV9taXhlZEZvbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKKyAgICAg
ICAgbV9taXhlZEZvbnQgPSBtYWtlVW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVG
b250LmdldCgpKTsKICAgICAgICAgbV9zaW5nbGVGb250ID0gbnVsbHB0cjsKICAgICB9CiAgICAg
bV9taXhlZEZvbnQtPnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGdseXBoRGF0
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1l
dHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmlj
c01hcC5oCmluZGV4IDI1OWU5NzUzM2NhZWRjZmMxNDVmZjdhYjQyOGVhMTY5ZjY0YjE1OTQuLjc5
ZTJmNTM4OGM0NmU1ODkyMzAxNjFjNDc0NTI1NDE5MjQ3ZTgyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0xMzAsMTAg
KzEzMCwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NNYXA8VD46
OkdseXBoTWV0cmljc1BhZ2UmIEdseXBoTWV0cmljc01hcAogICAgIH0KIAogICAgIGlmICghbV9w
YWdlcykKLSAgICAgICAgbV9wYWdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxpbnQsIHN0
ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+KCk7CisgICAgICAgIG1fcGFnZXMgPSBt
YWtlVW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+
PigpOwogCiAgICAgYXV0byYgcGFnZSA9IG1fcGFnZXMtPmVuc3VyZShwYWdlTnVtYmVyLCBbXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVua25v
d25NZXRyaWNzKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NQYWdl
Pih1bmtub3duTWV0cmljcygpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJu
ICpwYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCAxYjQyMjg2ZGRmNDY1YzBlMmIx
MjRkOGFmZGYwZjdjZDY0NzdjYmI3Li5lMzNmOGZiZTczODkyZTM0YjhkZWY4MzZkNDZmNWM3MGM3
OWM2MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiAKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IDk0YWFjMWRmODM1NmJkYjEwZGY3ZDA4NmZhY2UyNmMxZTM3MTgzMjYuLmM5NmVj
YTNhMTVlZDY1MDU0OTRmMjMwOGY1ZTU3Yzc5MGE3MWUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zNDMsNyArMzQz
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCkKICAgICBpZiAobV90cmFuc2Zvcm0pCiAgICAgICAgICptX3RyYW5z
Zm9ybSA9IG1hdHJpeDsKICAgICBlbHNlCi0gICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtl
X3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV90cmFuc2Zv
cm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgR3JhcGhpY3NMYXllcjo6Y2hpbGRyZW5UcmFuc2Zvcm0o
KSBjb25zdApAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRy
ZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKICAgICBpZiAo
bV9jaGlsZHJlblRyYW5zZm9ybSkKICAgICAgICAgKm1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYXRy
aXg7CiAgICAgZWxzZQotICAgICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0gc3RkOjptYWtlX3Vu
aXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV9jaGlsZHJlblRy
YW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYm
IGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCmluZGV4IDAwOWQ0ODY4OTVkNTY4NjI1NDAxMWRmNTYwMGE3MjExMjQzMGU2MmYuLjdh
MWZlYWFjNzllNzhiYTg4ZmNhZGNiODVlMzI5OWZkNzlhMDA0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTExMSw3ICsxMTEs
NyBAQCBjbGFzcyBGbG9hdEFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRp
b25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlv
blZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFu
aW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOwog
ICAgIH0KIAogICAgIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlJiBvdGhlcikKQEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBGaWx0ZXJBbmltYXRp
b25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAg
fQogCiAgICAgRmlsdGVyQW5pbWF0aW9uVmFsdWUoY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUm
IG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4
IGU0NGE2MWUyMjRjYTExOTRkMDkxOGQ0NDQzYmVhN2MxZTdlNGEwZTEuLmMyMWZlMjlkMGYwNWZk
ZGUzOWUwYzRiZjRiNjFhMWM5NzZjY2IxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEltYWdlOjpjb21wdXRl
SW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJp
bnNpYwogdm9pZCBJbWFnZTo6c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSgpCiB7CiAgICAg
aWYgKCFtX2FuaW1hdGlvblN0YXJ0VGltZXIpCi0gICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9u
KTsKKyAgICAgICAgbV9hbmltYXRpb25TdGFydFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRo
aXMsICZJbWFnZTo6c3RhcnRBbmltYXRpb24pOwogICAgIGlmIChtX2FuaW1hdGlvblN0YXJ0VGlt
ZXItPmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FuaW1hdGlvblN0YXJ0VGlt
ZXItPnN0YXJ0T25lU2hvdCgwX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDc1N2YwOTU2N2RjNWRmZGY1YmUwMjYzOTYzOWQx
ZWZlYzcxOGMwZGIuLmFiZTg2OTQxOTRmZjdjMTc1MTAwYjY5ODgwNGExMjQwYmQ2MmM4NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
QEAgLTE0OCw3ICsxNDgsNyBAQCBjbGFzcyBOdWxsTWVkaWFQbGF5ZXJQcml2YXRlIGZpbmFsIDog
cHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICBmbG9hdCBtYXhUaW1l
U2Vla2FibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIG1pblRpbWVT
ZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtl
VW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfQogCiAgICAgZG91YmxlIHNlZWthYmxlVGlt
ZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAg
ZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAg
LTM1NSw3ICszNTUsNyBAQCBSZWY8TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGUoTWVk
aWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKIE1lZGlhUGxheWVyOjpNZWRpYVBsYXllcihNZWRpYVBs
YXllckNsaWVudCYgY2xpZW50KQogICAgIDogbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcmVs
b2FkVGltZXIoKnRoaXMsICZNZWRpYVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZCkKLSAgICAsIG1f
cHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQor
ICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykp
CiB7CiB9CiAKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5l
eHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAjZW5kaWYK
ICAgICAgICAgbV9wcml2YXRlLT5sb2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBtX3ByaXZhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZh
dGU+KHRoaXMpOworICAgICAgICBtX3ByaXZhdGUgPSBtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXll
clByaXZhdGU+KHRoaXMpOwogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0
ZWQodGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0
ZWQodGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCAwMGQ4NWE0OTk2NDJiM2Y1MjM3YjMwYmZm
NWY0ZTZiNDI5MTMwZWNkLi4xZDJmYzAwOTIwNGE4YzAyNTU0MWIyYTJkN2M1ZjBkMGJlNWM5OWNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaApAQCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSB7CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdv
cmtTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1l
U2Vla2FibGUoKSA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQorICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBj
b25zdCB7IHJldHVybiBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1Rp
bWUoKSA/IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpIDogbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWth
YmxlKCkpOyB9CiAgICAgdmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSBj
b25zdCB7IHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobWF4VGltZVNlZWthYmxl
KCkpOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1
cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRp
bGl0aWVzLmNwcAppbmRleCAzZTY4ODA1NWJkY2MwYjEwZTQxNjBjZjE0MGQ0ZmFjZTkyMzIwYTY1
Li41YWQ5MzM0OWJmYjQwZGE0ZmYzMDhhZGE5ODQ5N2ZjMzc1ZTEwOGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtODks
NyArODksNyBAQCBGbG9hdFBvaW50R3JhcGg6Ok5vZGUqIEZsb2F0UG9pbnRHcmFwaDo6ZmluZE9y
Q3JlYXRlTm9kZShGbG9hdFBvaW50IHBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHRlc3ROb2Rl
LmdldCgpOwogICAgIH0KIAotICAgIG1fYWxsTm9kZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
RmxvYXRQb2ludEdyYXBoOjpOb2RlPihwb2ludCkpOworICAgIG1fYWxsTm9kZXMuYXBwZW5kKG1h
a2VVbmlxdWU8RmxvYXRQb2ludEdyYXBoOjpOb2RlPihwb2ludCkpOwogICAgIHJldHVybiBtX2Fs
bE5vZGVzLmxhc3QoKS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKaW5kZXggOWRjZWU4NzYxNjI1YzAxNDg4YjRkOTBkMWFmMjJlMzU0MzVk
NGE1ZS4uNmE3MDFjMWExMjg5NzlkNGM5NDhiMWE3YmFiNTY4ZjEwMjQ3Y2Y2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCkBAIC02NDYsNyArNjQ2LDcg
QEAgdm9pZCBSZWdpb246OnNldFNoYXBlKFNoYXBlJiYgc2hhcGUpCiAgICAgfQogCiAgICAgaWYg
KCFtX3NoYXBlKQotICAgICAgICBtX3NoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RG
TW92ZShzaGFwZSkpOworICAgICAgICBtX3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92
ZShzaGFwZSkpOwogICAgIGVsc2UKICAgICAgICAgKm1fc2hhcGUgPSBXVEZNb3ZlKHNoYXBlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggNzk2MzNm
ZGI2YWRmMzRmZmZlZThmODI2NzQ4M2I4Y2ZmNWNlMWYzYy4uYmMzOWMzMDAwMGVhOGI2YjVhOWU2
MGNmMmJjNWFlMTg2NjY0YjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmgKQEAgLTkxLDYgKzkxLDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICB9OwogCiAgICAg
Y2xhc3MgU2hhcGUgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CiAgICAgICAgIFNoYXBlKCkgPSBkZWZhdWx0OwogICAgICAgICBTaGFwZShjb25zdCBJbnRS
ZWN0Jik7CkBAIC0xNDgsNyArMTQ5LDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICAgICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZSYsIGNvbnN0IFNoYXBlJik7CiAgICAgfTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9z
aGFwZSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
cGUgPyBtYWtlVW5pcXVlPFNoYXBlPigqbV9zaGFwZSkgOiBudWxscHRyOyB9CiAgICAgdm9pZCBz
ZXRTaGFwZShTaGFwZSYmKTsKIAogICAgIEludFJlY3QgbV9ib3VuZHM7CkBAIC0yODksNyArMjkw
LDcgQEAgT3B0aW9uYWw8UmVnaW9uPiBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICBkZWNvZGVyID4+IHNoYXBlOwogICAgICAgICBpZiAoIXNoYXBlKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOworICAgICAgICByZWdpb24ubV9zaGFw
ZSA9IG1ha2VVbmlxdWU8U2hhcGU+KFdURk1vdmUoKnNoYXBlKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHsgcmVnaW9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggMWU0ZTdmYWMzNmM3
YzMwYTY1NmYxZWZkMDBhYWNlNmQ0Yzk1Y2VkYS4uNjkzOWY5MTdhZTZmYWIxM2VjMWM5MWQ0YWE4
MTU1NjZhOTE3MGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gOiBwdWJsaWMgVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24gewogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+
IFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
bGllbnQmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE51bGxUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24+KCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9WZWxvY2l0eURhdGEuaAppbmRleCA3YWViNzU5YjM0YjE4YTFlODQ2ODNmMjljNjE2
YTZjZGIwMjU3NGQ4Li42YTA2Y2M2ZWJhMzRiOTU5ZDJmMTg2MDIyOWUxZjJmMzhmZjMxOTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaApA
QCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3QgVmVsb2NpdHlEYXRhICB7CiBXRUJDT1JFX0VYUE9SVCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBWZWxvY2l0eURhdGEmKTsK
IAogY2xhc3MgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YSgpID0gZGVmYXVsdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0M0RBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcAppbmRleCA3N2EzZTE4YzFjNmMyZTI3
ZGQ2M2FlMjk2ZjZlYzlhMWVhMmZhZTFmLi42MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1
YjE2Y2E0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcApAQCAtMzYyLDcg
KzM2Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBk
ZXB0aCkKIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQog
ewogICAgIGlmICghbV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwor
ICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlz
LCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAppbmRleCBhOWVj
ZDMyMTM2ZGE4NzcwMmY0NzhhZmNkOGFjYzhlYjk3YzIzOTQwLi45OWRkZGQ4Zjg1MDI3MzAzYmI4
YTc2M2VjYWMyYjg2OTg4MmZhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOwogCiBjbGFzcyBBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRyYWNrKik7
CiAgICAgZXhwbGljaXQgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbChBVkFzc2V0VHJhY2sqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRl
eCA1Y2Q3NzcyYWMyZWUxY2VhOTAxMGU4MzM3MWVhNmFhZWY3ZjA2OTU4Li42YjNjOTIyZTZhZWJl
NTkyMGFlNjVlNTdhZjA1ZWRlNGFkMDM3NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBAIC0zMTMsMTIgKzMxMywxMiBAQCB2b2lkIEF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKENNSXRlbUNvdW50IG1heEZyYW1lcywg
Y29uc3QgQXVkaW9TdHJlYQogewogICAgIEFTU0VSVChtYXhGcmFtZXMgPj0gMCk7CiAKLSAgICBt
X3RhcERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24+KCpwcm9jZXNzaW5nRm9ybWF0KTsKKyAgICBtX3RhcERlc2NyaXB0aW9uID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigq
cHJvY2Vzc2luZ0Zvcm1hdCk7CiAgICAgaW50IG51bWJlck9mQ2hhbm5lbHMgPSBwcm9jZXNzaW5n
Rm9ybWF0LT5tQ2hhbm5lbHNQZXJGcmFtZTsKICAgICBkb3VibGUgc2FtcGxlUmF0ZSA9IHByb2Nl
c3NpbmdGb3JtYXQtPm1TYW1wbGVSYXRlOwogICAgIEFTU0VSVChzYW1wbGVSYXRlID49IDApOwog
Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uPigpOworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CiAg
ICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOwogICAgIG1f
b3V0cHV0RGVzY3JpcHRpb24tPm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKICAg
ICBtX291dHB1dERlc2NyaXB0aW9uLT5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05h
dGl2ZUZsb2F0UGFja2VkOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakM6OnByZXBhcmUoQ01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0
cmVhCiAgICAgLy8gTWFrZSB0aGUgcmluZ2J1ZmZlciBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgYXQg
bGVhc3QgdHdvIGNhbGxiYWNrcyB3b3J0aCBvZiBhdWRpbywgb3IgMXMsIHdoaWNoZXZlciBpcyBs
YXJnZXIuCiAgICAgc2l6ZV90IGNhcGFjaXR5ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90
PigyICogbWF4RnJhbWVzKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihrUmluZ0J1ZmZlckR1cmF0aW9u
ICogc2FtcGxlUmF0ZSkpOwogCi0gICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
QVJpbmdCdWZmZXI+KCk7CisgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZm
ZXI+KCk7CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24oKnByb2Nlc3NpbmdGb3JtYXQpLCBjYXBhY2l0eSk7CiAKICAgICAvLyBBdWRpb0J1ZmZlckxp
c3QgaXMgYSB2YXJpYWJsZS1sZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0
aCBhIGdlbmVyaWMgbmV3KCkgb3BlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCmluZGV4IDM2MWE5OTJmMGM0NjUwY2YyYjk2MjhhNjQyZTk3YjVkYmEwZTJh
M2MuLjRmYzY3ODdkZDhkOTA3Y2FkNmEyNzdmMzliMWVkMzJlZDY3OWE2ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OmNy
ZWF0ZUNETShjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc+KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUZh
aXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggODkxOGU4MGUw
YzM5MGQ3ZThkYWNhMTkwMzk0NzlhMGQwZjY5NWFkOC4uNTM4Njk2OWY5NDk3NmYzODM2ODAxODc0
MWJhZmQxMjU1MWUyOGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEZvdXJDQzsK
IAogY2xhc3MgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZh
Y3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmcmIHNpbmdsZXRvbigpOwogCkBAIC00OSw2ICs1
MCw3IEBAIGNsYXNzIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBD
RE1GYWN0b3J5IHsKIH07CiAKIGNsYXNzIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyBmaW5h
bCA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKICAgICB2aXJ0dWFsIH5D
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDRhNTBlYjQxYTU4MzY4M2Y2NmE2NzYy
Mjk1NDZjNTgwMWIyMGI1ODguLmQ4MWJjYTM1NDkwMzkxOGExYmRhMGFkZGQ5NThkNTk0M2Y3MDFi
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDOwogCiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
IDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMo
TGVnYWN5Q0RNKiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyY2MwOGE5YTNiNTFj
YmY3YWIxOTc0MjAyYTk4YjE2OWRiNDNjMTAxLi4wY2QwMTI5YTNjZDllYWY4NjNhZDQ3ODk4Mzg1
MDMxZDhiNzZlZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQpAQCAtMTQ3LDEwICsxNDcsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPExl
Z2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Np
b24oTGUKICNlbmRpZgogICAgIAogICAgIGlmIChzaG91bGRVc2VBVkNvbnRlbnRLZXlTZXNzaW9u
ICYmIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKQotICAgICAg
ICBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVycy52YWx1
ZSgpLnZlcnNpb24sICp0aGlzLCBjbGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1
ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVl
KCkucHJvdG9jb2xzKSwgcGFyYW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBjbGllbnQp
OwogICAgIGVsc2UKICNpZiBIQVZFKEFWU1RSRUFNU0VTU0lPTikKLSAgICAgICAgc2Vzc2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJh
bWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Np
b24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1l
dGVycy52YWx1ZSgpLnByb3RvY29scyksICp0aGlzLCBjbGllbnQpOwogI2Vsc2UKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxh
eVN0cmVhbWluZ1Bzc2hCb3guaAppbmRleCBlNDYwMTQ4MzA1Y2VlZDFiNTY0ODQxOTk2Y2I5ZmMz
NGNkYzNhYjUyLi4xNDdjMzc5ZjEyNzA2ODJlNTVmZDIxNWNlMjNhMzllYTEyNDk1YWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNP
RmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IGZpbmFsIDogcHVi
bGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUo
KSB7IHJldHVybiAiZnBzaSI7IH0KIApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAg
ICAgRm91ckNDIG1fc2NoZW1lOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggZmlu
YWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hU
eXBlTmFtZSgpIHsgcmV0dXJuICJma3JpIjsgfQogCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggOiBwdWJs
aWMgSVNPRnVsbEJveCB7CiAgICAgS2V5SUQgbV9rZXlJRDsKIH07CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3gg
eworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94
IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hU
eXBlTmFtZSgpIHsgcmV0dXJuICJma2FpIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJ
U09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94
IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJv
eCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94
VHlwZU5hbWUoKSB7IHJldHVybiAiZmtjeCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4g
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMg
SVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJ
U09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJz
aW9uTGlzdEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBG
b3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmt2bCI7IH0KICAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4gdmVyc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb25zOyB9CkBAIC04OCw3
ICs4OCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVy
c2lvbkxpc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV92ZXJz
aW9uczsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVxdWVzdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNrIjsgfQog
CkBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdLZXlSZXF1ZXN0Qm94IDogcHVibGljIElTT0JveCB7CiAgICAgT3B0aW9uYWw8SVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07CiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJs
aWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5p
dERhdGFCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91
ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2QiOyB9CiAKQEAgLTEyMCw3ICsxMjAsNyBA
QCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IDog
cHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVz
dEJveD4gbV9yZXF1ZXN0czsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveCA6IHB1YmxpYyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94
IGZpbmFsIDogcHVibGljIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZmFpclBsYXlTeXN0ZW1J
RCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwCmluZGV4IDg1N2YzMWYyNzcyZjQwODFmYmE2MzhmODEwYzExNDk0Mjg1OGI5
NGIuLjU5Y2Y4YmEyMTMxNmIzMDdjMDUwMjNlZDU2ZDliMzlkMjU2MTdmMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBA
IC0zODQsNyArMzg0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpidWZmZXJlZCgpIGMKICAgICBpZiAoIW1fY2Fj
aGVkTG9hZGVkVGltZVJhbmdlcykKICAgICAgICAgbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzID0g
cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1l
UmFuZ2VzKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCmluZGV4IDM5NWNlNzgyZThjNTgwNDU5NjE2MjQ2OTgw
ZjMzZWFkZjAzYjc4YjIuLjVmNWI2ZjY5NTJiNDkzYTk4ODdiYWZjN2YzMGI3YmVlNzMzNDE1ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAK
QEAgLTQ5LDcgKzQ5LDcgQEAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6fldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXJNYWMoKSA9IGRlZmF1bHQ7CiBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcigpCiB7CiAg
ICAgaWYgKCFtX3RhcmdldFBpY2tlcikKLSAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKKyAgICAgICAg
bV90YXJnZXRQaWNrZXIgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM+
KCp0aGlzKTsKIAogICAgIHJldHVybiAqbV90YXJnZXRQaWNrZXIuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmNwcAppbmRleCBhZjBhN2NjNzdiZjI5MmNkZmQ2NmFiYzZlN2Y2M2E1MDkwMGFhZDY3Li41
YTUxOGM1MTUxZDA1YzNlZjViMDk0MmM0MmUzYjI0MDIwMzYwYTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKQEAgLTM0Myw3ICszNDMsNyBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2Fk
ZXJEZWxlZ2F0ZVF1ZXVlKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewog
ICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRj4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9y
dHNUeXBlLCAwLCAwLCAwLCBzdXBwb3J0c0tleVN5c3RlbSk7CiB9CiAKQEAgLTY3Miw3ICs2NzIs
NyBAQCBzdGF0aWMgYm9vbCB0aW1lUmFuZ2VJc1ZhbGlkQW5kTm90RW1wdHkoQ01UaW1lIHN0YXJ0
LCBDTVRpbWUgZHVyYXRpb24pCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBpZiAoIWF2UGxheWVySXRlbShtX2F2ZldyYXBw
ZXIpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAgLTExMzcsNyArMTEzNyw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvCiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlT
eXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsK
IH0KIAogI2VsaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC0xNzA4LDcgKzE3
MDgsNyBAQCB2b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0
aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBw
ZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKGlmPSVkKSAlcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihvYnNlcnZlciksIG5vdGlmaWNhdGlvbk5hbWUpOwogI2VuZGlmCiAKLSAgICBhdXRv
IG5vdGlmaWNhdGlvbkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNr
RGF0YT4ocHJvcGVydHlOYW1lLCBvYnNlcnZlcik7CisgICAgYXV0byBub3RpZmljYXRpb25EYXRh
ID0gbWFrZVVuaXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2Jz
ZXJ2ZXIpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBub3RpZmljYXRpb25EYXRhLnJlbGVhc2UoKSwgcHJvY2Vzc05vdGlmaWNhdGlvbik7CiB9CkBA
IC0xODMzLDcgKzE4MzMsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFj
ayh2b2lkKiBjb250ZXh0LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdQogCiAgICAgQVNTRVJU
KGxlZ2libGVPdXRwdXQgPT0gc2VsZi0+bV9sZWdpYmxlT3V0cHV0KTsKIAotICAgIGF1dG8gbGVn
aWJsZU91dHB1dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2libGVPdXRwdXREYXRhPihhdHRy
aWJ1dGVkU3RyaW5ncywgbmF0aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0b01lZGlhVGltZShpdGVt
VGltZSksIGNvbnRleHQpOworICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEgPSBtYWtlVW5pcXVl
PExlZ2libGVPdXRwdXREYXRhPihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0aXZlU2FtcGxlQnVmZmVy
cywgUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIGNvbnRleHQpOwogCiAgICAgZGlzcGF0Y2hf
YXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBsZWdpYmxlT3V0cHV0RGF0YS5yZWxl
YXNlKCksIHByb2Nlc3NDdWUpOwogfQpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgQm9vbGVhbiBBVkZX
cmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNv
dXJjZShBVkNGQXMKIAogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVy
U2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKCVwKSIsIHNlbGYpOwogCi0g
ICAgYXV0byBsb2FkUmVxdWVzdERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRSZXF1ZXN0RGF0
YT4obG9hZGluZ1JlcXVlc3QsIGNvbnRleHQpOworICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0g
bWFrZVVuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKIAog
ICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbG9hZFJlcXVl
c3REYXRhLnJlbGVhc2UoKSwgcHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk7
CiAKQEAgLTE5NTMsNyArMTk1Myw3IEBAIFBsYXRmb3JtTGF5ZXIqIEFWRldyYXBwZXI6OnBsYXRm
b3JtTGF5ZXIoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIENyZWF0ZSBhIFBsYXRmb3Jt
Q0FMYXllciBzbyB3ZSBjYW4gcmVzaXplIHRoZSB2aWRlbyBsYXllciB0byBtYXRjaCB0aGUgZWxl
bWVudCBzaXplLgotICAgIG1fbGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xp
ZW50Pih0aGlzKTsKKyAgICBtX2xheWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMYXllckNsaWVudD4o
dGhpcyk7CiAgICAgaWYgKCFtX2xheWVyQ2xpZW50KQogICAgICAgICByZXR1cm4gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCmlu
ZGV4IGUxNGFmMWEyN2YyNmJkMWFkNjAyODYwNGE1NzUyZjBkZjlhOGRmNTIuLjdkZTE0YzI1NzFm
N2QzOGVlY2JiMzQ4ZmRhM2M3NGE0M2RlYjgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KQEAgLTMzLDEzICszMywxMyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwo
c3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAg
OiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7
CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIEF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZG
T2JqQyYgb3B0aW9uKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRy
YWNrKCk7CiB9CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
OjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKEFWUGxheWVySXRlbVRyYWNrICp0cmFjaykKIHsKLSAg
ICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRy
YWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtNjksMTQg
KzY5LDE0IEBAIEFWUGxheWVySXRlbVRyYWNrKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBs
YXllckl0ZW1UcmFjaygpCiB9CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2lt
cGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAg
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBs
ID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7Cisg
ICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7
CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTg3LDcgKzg3LDcgQEAg
QVZBc3NldFRyYWNrKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmFzc2V0VHJhY2soKQogCiB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24oTWVk
aWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1faW1w
bCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAgICBy
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3Bw
CmluZGV4IGVjMGQwZWRkYmY3M2JlZWRhNjcxN2I3YTUxOGM3MzIxMjYwOTVhZTIuLmRmNTIyNmE0
ZWEwMzZlNTZmYTI1MzlhNjI3NjJhMjM4YWU3MGUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBw
YXJlbnQpCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjaykpCiAgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiAgICAgcmVzZXRQ
cm9wZXJ0aWVzRnJvbVRyYWNrKCk7CkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZv
aWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZB
c3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9t
VHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjJhYWZlYzdiODM0MjdiODEzMGE3YzA0M2Y4ZjY3MjA4
MzRjY2E0Ny4uNWQ4ZTI1MDc0NzBiYzdhNDk5OTU1Yzk4MWIxNzZmZjQ0NGZiYzZkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIAotY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPiB7CitjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQyBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMmZlMjUyNDk5NGMz
YjE5NDQ1OWVjMzMzMDI5YWJkOWU5ODVjNzViNC4uYmIwNzc3NjEzODJjODgwODA3YmE1M2M4ZGFk
YjI5NDU2ZTU2ZWI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpy
ZWFkVHJhY2tNZXRhZGF0YSgpCiAgICAgICAgIHx8ICFtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50
cmFuc2Zvcm0oKQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0o
KS52YWx1ZSgpICE9IGZpbmFsVHJhbnNmb3JtCiAgICAgICAgIHx8IG1faW1hZ2VSb3RhdGlvblNl
c3Npb24tPnNpemUoKSAhPSBzaXplKQotICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJh
bnNmb3JtKSwgc2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKKyAgICAgICAgbV9pbWFnZVJvdGF0
aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShm
aW5hbFRyYW5zZm9ybSksIHNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90
YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CiAKICAgICBtX3NpemUg
PSBleHBhbmRlZEludFNpemUobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+cm90YXRlZFNpemUoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjNjU5MGJkZWU2N2I0ZTIwOTg4OGU5NmEy
YzMzMGYyZmUyMzM4Njk3Li44NDk5MDRhY2Y5MjljN2NmZTNmOTRiYzQxMGUwZDBiMmU4YjFiNDQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFF
bmdpbmVSZWdpc3RyYQogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwK
KyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1
ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAogICAgICAg
ICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNo
ZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tl
eVN5c3RlbSk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5p
c0F2YWlsYWJsZSgpKTsKIH0KQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3Ry
aW5nJgogCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24ocGxheWVyKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJP
YmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogICAgICwgbV92aWRlb0Z1bGxzY3Jl
ZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpCiAgICAgLCBt
X29iamNPYnNlcnZlcihhZG9wdE5TKFtbV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgYWxsb2NdIGlu
aXRXaXRoUGxheWVyOm1ha2VXZWFrUHRyKCp0aGlzKV0pKQogICAgICwgbV92aWRlb0ZyYW1lSGFz
RHJhd24oZmFsc2UpCkBAIC0xMzM3LDcgKzEzMzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsK
LSAgICBhdXRvIHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKTsKIAogICAgIGlmICghbV9hdlBsYXllckl0ZW0pCiAgICAgICAgIHJldHVybiB0aW1lUmFu
Z2VzOwpAQCAtMTg5Miw3ICsxODkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjp1cGRhdGVSb3RhdGlvblNlc3Npb24oKQogICAgICAgICAmJiBtX2ltYWdlUm90
YXRpb25TZXNzaW9uLT5zaXplKCkgPT0gbmF0dXJhbFNpemUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRp
b25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4
ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29t
cGF0aWJsZTo6WWVzKTsKKyAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNp
emUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6Oklz
Q0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBA
IC0yMjE2LDcgKzIyMTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAjZWxzZQogICAgICAgICBOU0Rp
Y3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBuaWw7CiAjZW5kaWYKLSAgICAgICAgbV9waXhlbEJ1ZmZl
ckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9f
YnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKKyAgICAgICAgbV9waXhlbEJ1ZmZl
ckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKQEAgLTIyNjUsNyArMjI2NSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAg
ICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxCdWZm
ZXIuZ2V0KCkpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92
aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNW
PigqY29udGV4dCk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxW
aWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0
dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5n
ZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwog
fQpAQCAtMjMzMCw3ICsyMzMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3MKIHsKICAgICBp
ZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8gc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVudCk7CisgICAgYXV0byBzZXNzaW9uID0gbWFrZVVuaXF1
ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsKICAgICBtX3Nlc3Np
b24gPSBtYWtlV2Vha1B0cigqc2Vzc2lvbik7CiAgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lvbik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDczOTZlNWIxYjQzMTE5OGU1ZTYwZDhm
Y2QwNjM1OWJiMjdjZjQ5ZjcuLmExZGQwZjkwOTFmYjI4NjQ2OGRiZTBhZTEwY2U4YjNjMTQyYzBi
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yNjgsNiArMjY4LDcgQEAgY2xhc3Mg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDCiAgICAgZnJpZW5kIGNsYXNzIE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1NlZWsgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdTZWVr
KGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRo
cmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCkKICAgICAgICAgICAg
IDogdGFyZ2V0VGltZSh0YXJnZXRUaW1lKQogICAgICAgICAgICAgLCBuZWdhdGl2ZVRocmVzaG9s
ZChuZWdhdGl2ZVRocmVzaG9sZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBmMTk1
MTU2ZDhjZjIyNTZmNjBmOWY1NTMyNDEyOWU4NTIzZDlkMzhiLi45YzBhZWY2MTlhZGMyYTMxOGYw
ZGI3ZDJlMzg2N2MyMWRmYzMxZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0x
MzcsNyArMTM3LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTWVkaWEKICAgICAsIG1fcGxheWluZygw
KQogICAgICwgbV9zZWVraW5nKGZhbHNlKQogICAgICwgbV9sb2FkaW5nUHJvZ3Jlc3NlZChmYWxz
ZSkKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2Jq
Qz4oKSkKICAgICAsIG1fZWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcihFZmZlY3RpdmVSYXRl
Q2hhbmdlZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMsIFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0p
KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRp
YVBsYXllckxvZ2dlcigpKQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7IH0sCisgICAgcmVn
aXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRT
dXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAgICBBU1NFUlQoQVZB
c3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAtNDM3
LDcgKzQzNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpz
ZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIHRpCiAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgInRpbWUgPSAiLCB0aW1lLCAiLCBuZWdhdGl2ZVRocmVzaG9sZCA9ICIsIG5lZ2F0
aXZlVGhyZXNob2xkLCAiLCBwb3NpdGl2ZVRocmVzaG9sZCA9ICIsIHBvc2l0aXZlVGhyZXNob2xk
KTsKIAogICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGVuZGluZ1NlZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRo
cmVzaG9sZCk7CisgICAgbV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KHRp
bWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBpZiAobV9z
ZWVrVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9zZWVrVGltZXIuc3RvcCgpOwpAQCAtNTQz
LDcgKzU0Myw3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
c2Vla2FibGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUo
KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRp
bWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKIH0KIAogTWVkaWFUaW1lIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bWF4TWVkaWFUaW1lU2Vla2FibGUo
KSBjb25zdApAQCAtNTU4LDcgKzU1OCw3IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQ
cml2YXRlID8gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZh
dGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKQEAgLTYwMiw3ICs2MDIsNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdl
KCkKIAogICAgIGlmICghbV9yZ2JDb25mb3JtZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVz
ID0gQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVL
ZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfTsKLSAgICAgICAgbV9yZ2JDb25mb3Jt
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBD
RkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcmdiQ29uZm9ybWVyID0gbWFr
ZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KWF0dHJpYnV0ZXMpOwogICAgIH0KIAogICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3JtZXIt
PmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKQEAg
LTY0OSw3ICs2NDksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAgIHNpemVfdCBoZWln
aHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAog
ICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29w
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwor
ICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29w
aWVyQ1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29w
eUltYWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBo
ZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbQppbmRleCBjYTNiMTEzNTUyYjM4ODVjOTk5NzdkYWUyYTIxZWExNjU3N2Vk
YTgwLi45ZGVlZTQ2ZjJjYTI0NTI5NTNkZjVjYTg4YmI2OWY4MThlN2U0ZTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0xODMsNyArMTgzLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMo
TWVkaWEKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVu
ZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2Nd
IGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3JlYXRl
KCkpCi0gICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVl
PFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9i
akM+KCkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwbGF5ZXIt
Pm1lZGlhUGxheWVyTG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxheWVyLT5tZWRp
YVBsYXllckxvZ0lkZW50aWZpZXIoKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlm
IChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgICAgICByZWdpc3Ry
YXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVz
LAogICAgICAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTA1NCwx
MiArMTA1NCwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
dXBkYXRlVHJhY2tzKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQpA
QCAtMTA3Myw3ICsxMDczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9pbWFn
ZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5T
U3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3Jt
YXRUeXBlXzMyQkdSQSkgfSk7CisgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29u
Zm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxG
b3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCiAgICAgQVNT
RVJUKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKTsKICAgICBpZiAoIW1faW1h
Z2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKaW5kZXggYzg3MWM1OTQ4MzU1MDg1
NzE4MmM3YTI0ZDU1MzRiODVhNWQ0ZWY3ZS4uMjk0ODNiYTVlOThkOTVmYThlNWVjOWE2YTEwYmY2
NDFhYWUzNTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakMuY3BwCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMo
QVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVy
dGllc0Zyb21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6
bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9p
bXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAg
IHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMm
IG9wdGlvbikKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KG9wdGlvbikpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsPihvcHRpb24pKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwogfQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVz
ZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OnNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9p
bXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7
CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
ayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTc3LDcgKzc3LDcg
QEAgQVZQbGF5ZXJJdGVtVHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRl
bVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2so
QVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVl
PEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNG
cm9tVHJhY2soKTsKIH0KIApAQCAtODgsNyArODgsNyBAQCBBVkFzc2V0VHJhY2sqIFZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6YXNzZXRUcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpzZXRNZWRpYVNlbGVjdG9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2Jq
QyYgb3B0aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZmNjMjQ5NmExMzVhYTRmNzNh
OGZlNTQ4ZDE0ZTBjODAwMDRhZDFiMC4uOTc1NmNmZmFmZDhjM2Y2ZmUzYjQ3YTIzMzM3MWI3NGRl
Yzk4ZDA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM1LDcgKzM1LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ss
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2ltcGwoc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2lt
cGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiAgICAgLCBt
X3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCiAgICAgLCBtX3NlbGVjdGVkKGZh
bHNlKQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2sp
CiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCmluZGV4IDE3MWYyNzcyYzk0YTY5Y2RhNzM0OTNjYzljOGM3ODc4YjAwMTA4ZGQu
Ljg3NjUzNDQ1MjAyNGU2MTY1MTQxN2EwNGEwZDk0NTA1OGE5NTQwMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cApAQCAtMTYzNiwxMiArMTYzNiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZl
Q29tbWl0Q2hhbmdlcyhDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgIGlm
ICh1c2VzRGlzcGxheUxpc3REcmF3aW5nKCkgJiYgbV9kcmF3c0NvbnRlbnQgJiYgKCFtX2hhc0V2
ZXJQYWludGVkIHx8IGhhZERpcnR5UmVjdHMpKSB7CiAgICAgICAgIFRyYWNlU2NvcGUgdHJhY2lu
Z1Njb3BlKERpc3BsYXlMaXN0UmVjb3JkU3RhcnQsIERpc3BsYXlMaXN0UmVjb3JkRW5kKTsKIAot
ICAgICAgICBtX2Rpc3BsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q+KCk7CisgICAgICAgIG1fZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdD4oKTsKICAgICAgICAgCiAgICAgICAgIEZsb2F0UmVjdCBpbml0aWFs
Q2xpcChib3VuZHNPcmlnaW4oKSwgc2l6ZSgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQg
Y29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rp
c3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJh
bnNmb3JtKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJl
Y29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
aW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHBh
aW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHNpemUoKSkpOwogICAgIH0KQEAgLTI4NjcsNyArMjg2Nyw3IEBAIGJvb2wgR3JhcGhpY3NMYXll
ckNBOjppc1J1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb24oKSBjb25zdAogdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvbnMp
Ci0gICAgICAgIG1fYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmltYXRpb25z
PigpOworICAgICAgICBtX2FuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPExheWVyQW5pbWF0aW9ucz4o
KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZv
cm1DQUFuaW1hdGlvbiYgY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0
IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIFNlY29uZHMg
dGltZU9mZnNldCkKQEAgLTM5MDMsNyArMzkwMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpl
bnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
CiAgICAgY29udGVudHNMYXllciA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fbGF5ZXJDbG9uZXMp
Ci0gICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xvbmVzPigp
OworICAgICAgICBtX2xheWVyQ2xvbmVzID0gbWFrZVVuaXF1ZTxMYXllckNsb25lcz4oKTsKIAog
ICAgIHByaW1hcnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdldCgp
LCBtX2xheWVyQ2xvbmVzLT5wcmltYXJ5TGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwogICAgIHN0
cnVjdHVyYWxMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXll
ci5nZXQoKSwgbV9sYXllckNsb25lcy0+c3RydWN0dXJhbExheWVyQ2xvbmVzLCBjbG9uZUxldmVs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmgKaW5kZXggM2FjNGMxZTMyYTE1NDhkNThjNjkxMTE3Y2M2OWEyOWM0ZGNmMGUx
YS4uYzRiMmM5YzM0NzA4MGE2YjdjOTZkNjcwMmY0YTRkOGEzMGM3ZjZiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgK
QEAgLTE1Nyw2ICsxNTcsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhp
Y3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgRmxvYXRTaXplIHBp
eGVsQWxpZ25tZW50T2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9waXhlbEFsaWdu
bWVudE9mZnNldDsgfQogCiAgICAgc3RydWN0IENvbW1pdFN0YXRlIHsKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB1bnNpZ25lZCB0cmVlRGVwdGggeyAw
IH07CiAgICAgICAgIHVuc2lnbmVkIHRvdGFsQmFja2Ryb3BGaWx0ZXJBcmVhIHsgMCB9OwogICAg
ICAgICBib29sIGFuY2VzdG9ySGFkQ2hhbmdlcyB7IGZhbHNlIH07CkBAIC0zMDksNiArMzEwLDcg
QEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIHR5cGVkZWYgdW5zaWduZWQgQ29tcHV0ZVZpc2li
bGVSZWN0RmxhZ3M7CiAgICAgCiAgICAgc3RydWN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzIHsK
KyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBGbG9hdFJl
Y3QgdmlzaWJsZVJlY3Q7CiAgICAgICAgIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3Q7CiAgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGFuaW1hdGluZ1RyYW5zZm9ybTsKQEAgLTMyOCw2ICszMzAs
NyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGlj
IFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAKICAgICAvLyBVc2VkIHRvIHRyYWNrIHRoZSBwYXRo
IGRvd24gdGhlIHRyZWUgZm9yIHJlcGxpY2EgbGF5ZXJzLgogICAgIHN0cnVjdCBSZXBsaWNhU3Rh
dGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgbWF4UmVwbGljYURlcHRoID0gMTY7CiAgICAgICAgIGVudW0gUmVw
bGljYUJyYW5jaFR5cGUgeyBDaGlsZEJyYW5jaCA9IDAsIFJlcGxpY2FCcmFuY2ggPSAxIH07CiAg
ICAgICAgIFJlcGxpY2FTdGF0ZShSZXBsaWNhQnJhbmNoVHlwZSBmaXJzdEJyYW5jaCkKQEAgLTU3
OSw2ICs1ODIsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXll
ciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAKICAgICAvLyBSZWZlcmVuY2VzIHRv
IGNsb25lcyBvZiBvdXIgbGF5ZXJzLCBmb3IgcmVwbGljYXRlZCBsYXllcnMuCiAgICAgc3RydWN0
IExheWVyQ2xvbmVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICBMYXllck1hcCBwcmltYXJ5TGF5ZXJDbG9uZXM7CiAgICAgICAgIExheWVyTWFwIHN0
cnVjdHVyYWxMYXllckNsb25lczsKICAgICAgICAgTGF5ZXJNYXAgY29udGVudHNMYXllckNsb25l
czsKQEAgLTYwOCw2ICs2MTIsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgVmVjdG9yPEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+PiBBbmltYXRp
b25zVG9Qcm9jZXNzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXll
clByb3BlcnR5QW5pbWF0aW9uPj4gQW5pbWF0aW9uc01hcDsKICAgICBzdHJ1Y3QgTGF5ZXJBbmlt
YXRpb25zIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gdW5jb21pdHRlZEFuaW1hdGlvbnM7CiAg
ICAgICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXAgYW5pbWF0aW9uc1RvUHJvY2VzczsKICAgICAg
ICAgQW5pbWF0aW9uc01hcCBydW5uaW5nQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA0ZDY0
YzJjNGIxOWIzMWI4MDU0YzFiYzQxYWMwMjI1NzNiZWZmNTYyLi4zMDVlZmQzMzNiZDYxMWM2ZWY1
ZTRjMWIyNjIyODg3NTI1NmYyNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFN0
cmluZyBUaWxlQ29udHJvbGxlcjo6em9vbWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUo
KQogVGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBs
YXRmb3JtTGF5ZXIpCiAgICAgOiBtX3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQog
ICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcihvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3Jt
Q0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkpCi0gICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFrZV91
bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkKKyAgICAsIG1fdGlsZUdyaWQobWFrZVVuaXF1ZTxUaWxl
R3JpZD4oKnRoaXMpKQogICAgICwgbV90aWxlUmV2YWxpZGF0aW9uVGltZXIoKnRoaXMsICZUaWxl
Q29udHJvbGxlcjo6dGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX3RpbGVTaXpl
Q2hhbmdlVGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVNpemVDaGFuZ2VUaW1lckZp
cmVkLCB0aWxlU2l6ZVVwZGF0ZURlbGF5KQogICAgICwgbV9tYXJnaW5FZGdlcyhmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVy
OjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQogICAgIGlmIChtX3pvb21lZE91dENvbnRl
bnRzU2NhbGUgJiYgbV96b29tZWRPdXRDb250ZW50c1NjYWxlID09IHRpbGVHcmlkKCkuc2NhbGUo
KSAmJiB0aWxlR3JpZCgpLnNjYWxlKCkgIT0gc2NhbGUgJiYgIW1faGFzVGlsZXNXaXRoVGVtcG9y
YXJ5U2NhbGVGYWN0b3IpIHsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZCA9IFdURk1vdmUo
bV90aWxlR3JpZCk7CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPnNldElzWm9vbWVkT3V0
VGlsZUdyaWQodHJ1ZSk7Ci0gICAgICAgIG1fdGlsZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRp
bGVHcmlkPigqdGhpcyk7CisgICAgICAgIG1fdGlsZUdyaWQgPSBtYWtlVW5pcXVlPFRpbGVHcmlk
PigqdGhpcyk7CiAgICAgICAgIHRpbGVHcmlkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTUwMCw3
ICs1MDAsNyBAQCBGbG9hdFJlY3QgVGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJl
Y3RGb3JTY3JvbGxpbmcoY29uc3QgRmxvYXRSZWN0JiBjbwogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGlmICghbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhKQotICAgICAgICAgICAgbV9o
aXN0b3JpY2FsVmVsb2NpdHlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3JpY2FsVmVsb2Np
dHlEYXRhPigpOworICAgICAgICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhID0gbWFrZVVu
aXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlEYXRhPigpOwogCiAgICAgICAgIG1fdmVsb2NpdHkgPSBt
X2hpc3RvcmljYWxWZWxvY2l0eURhdGEtPnZlbG9jaXR5Rm9yTmV3RGF0YShzY3JvbGxPZmZzZXQs
IGNvbnRlbnRzU2NhbGUsIE1vbm90b25pY1RpbWU6Om5vdygpKTsKICAgICB9OwpAQCAtNjg1LDcg
KzY4NSw3IEBAIEludFJlY3QgVGlsZUNvbnRyb2xsZXI6OnRpbGVDb3ZlcmFnZVJlY3QoKSBjb25z
dAogUGxhdGZvcm1DQUxheWVyKiBUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0
b3JMYXllcigpCiB7CiAgICAgaWYgKCFtX2NvdmVyYWdlTWFwKQotICAgICAgICBtX2NvdmVyYWdl
TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKKyAgICAgICAg
bV9jb3ZlcmFnZU1hcCA9IG1ha2VVbmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CiAKICAg
ICByZXR1cm4gJm1fY292ZXJhZ2VNYXAtPmxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tCmluZGV4IGE0ODUyM2NmNTE3NmIzMWYyYWNjNDk4NGIyZWNkOGUyYzg3NGY2
MDcuLjM2YWMyZjc4NGIwMDZmZjljNzAzZjQxZTdiZmY2ODdhMWFhNGM2NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXll
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6Y29tbW9uSW5pdCgpCiAgICAgICAgIFdlYlRpbGVkQmFja2luZ0xheWVy
KiB0aWxlZEJhY2tpbmdMYXllciA9IHN0YXRpY19jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyKj4o
bV9sYXllci5nZXQoKSk7CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9
IFt0aWxlZEJhY2tpbmdMYXllciBjcmVhdGVUaWxlQ29udHJvbGxlcjp0aGlzXTsKIAotICAgICAg
ICBtX2N1c3RvbVN1YmxheWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlz
dD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0b21T
dWJsYXllcnMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVy
LT5jb250YWluZXJMYXllcnMoKSk7CiAgICAgfQogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwpAQCAtOTQ3LDcgKzk0Nyw3IEBAIEZsb2F0Um91bmRlZFJlY3QgUGxhdGZvcm1DQUxheWVy
Q29jb2E6OnNoYXBlUm91bmRlZFJlY3QoKSBjb25zdAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2Nv
YTo6c2V0U2hhcGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVj
dCkKIHsKICAgICBBU1NFUlQobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVMYXllcik7Ci0g
ICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0
Pihyb3VuZGVkUmVjdCk7CisgICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9h
dFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKICAgICBQYXRoIHNoYXBlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIu
bW0KaW5kZXggYzE5MWYzOTFjNjQ1NzJjYzk5NTVhNDdjNmNiN2I5MDA3ODY3MjYzOS4uYjNlMjFm
NjQwYWU5MWEwZDFmNTkzODQ2YTg1MGZlYzIyZmE3OGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRC
YWNraW5nTGF5ZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgLSAoaWQpaW5pdFdpdGhMYXllcjooaWQp
bGF5ZXIKIC0gKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyKiljcmVhdGVUaWxlQ29udHJvbGxlcjoo
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKilyb290TGF5ZXIKIHsKICAgICBBU1NFUlQoIV90aWxl
Q29udHJvbGxlcik7Ci0gICAgX3RpbGVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKKyAgICBfdGlsZUNvbnRyb2xsZXIgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOwogICAgIHJldHVy
biBfdGlsZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAK
aW5kZXggMTVkNGU0NmIwNmM3NmMxN2YzNDA1MTM5YzZjOTc5YzEwMTdiMzY5Ni4uZDZhN2MxNjhm
MGU0NDFmZDdkMjkwZmM0ZmUzMTM2MGM1ODVkNTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FM
YXllcldpbihMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiBsYXllcgogICAgIGlm
ICh1c2VzVGlsZWRCYWNraW5nTGF5ZXIoKSkgewogICAgICAgICBpbnRlcm4gPSBuZXcgV2ViVGls
ZWRCYWNraW5nTGF5ZXJXaW4odGhpcyk7CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29u
dHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4qPihpbnRl
cm4pLT5jcmVhdGVUaWxlQ29udHJvbGxlcih0aGlzKTsKLSAgICAgICAgbV9jdXN0b21TdWJsYXll
cnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVy
LT5jb250YWluZXJMYXllcnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVu
aXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJz
KCkpOwogICAgIH0gZWxzZQogICAgICAgICBpbnRlcm4gPSBuZXcgUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmlu
ZGV4IDIyNGQ4YmJlZWQzOTkyYWVlZmM5MzJhMWJlZTgwZGM2M2ZjYTJmOGIuLmM1YTczZThkM2Fl
OWJiNDlhOTZiZTI3ZjUzMjdlMDZjMDYyMTRmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2lu
Z0xheWVyV2luLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW46OnNldEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIFRpbGVDb250cm9sbGVy
KiBXZWJUaWxlZEJhY2tpbmdMYXllcldpbjo6Y3JlYXRlVGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1D
QUxheWVyKiByb290TGF5ZXIpCiB7CiAgICAgQVNTRVJUKCFtX3RpbGVDb250cm9sbGVyKTsKLSAg
ICBtX3RpbGVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9v
dExheWVyKTsKKyAgICBtX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxl
cj4ocm9vdExheWVyKTsKICAgICByZXR1cm4gbV90aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggNTBiN2Q5YzIzYzAxYWJm
YzNhMDUxNzhjMTA1MjUxMDcwZjE1ZDZkYi4uMDRmMmE5ZmY1NDY5YWE1YmEyNGQxNDk1NjU0YjYw
ZjBiYzQzZDJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00
NSw3ICs0NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3Rvcnkg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1D
b250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4
dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAg
fSk7CiB9CiAKQEAgLTU0LDE0ICs1NCwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29u
dGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAg
ICAgICBbY2Fpcm9Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKICAg
ICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxv
YXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0
KHBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9w
cml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRm
b3JtQ29udGV4dCkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0
UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9w
bGF0Zm9ybUNvbnRleHQuY3IoKSk7CkBAIC02OSw5ICs2OSw5IEBAIEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgUGxhCiAKIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY2Fpcm9fdCogY2Fpcm9Db250ZXh0KQogICAg
IDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFu
c2Zvcm0geyB9KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQorICAgICwgbV9vd25lZFBsYXRm
b3JtQ29udGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQp
KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAg
LCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU+KG1fcGxhdGZvcm1Db250ZXh0KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1f
cGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgp
KTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAxODhlN2JjM2RiODU4Mjk2NWNhYmIyODliYzVjMDJi
YzcxNjIzYWE1Li4xZjc2M2I1MDc3M2JkZjVkMWU1MmU1ZDE5YzBiODBmYmFkMzdiNDM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJE
YXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAgICAgIHBy
b3h5LnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOworICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0
QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29t
cG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xf
UkdCQSkpOwogICAgICAgICAgICAgfTsKICNpZiBVU0UoTklDT1NJQSkKICAgICAgICAgcHJveHlP
cGVyYXRpb24oZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+
KG1fbmljb3NpYUxheWVyLT5pbXBsKCkpLnByb3h5KCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIElt
YWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgQ29sb3JTcGFjCiAKICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJl
ZihjYWlyb19jcmVhdGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkpOwogICAgIG1fZGF0YS5tX3Bs
YXRmb3JtQ29udGV4dC5zZXRDcihjci5nZXQoKSk7Ci0gICAgbV9kYXRhLm1fY29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7CisgICAgbV9kYXRhLm1f
Y29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7CiAgICAgc3Vj
Y2VzcyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggODBiNWQ0ZmJkMjcyZGVlNDM1YjVjZTdj
MDg0ZWUzNTlhNTAxZWQ2NC4uZDM1ZmYwZWZmOTcxOTUwZWVkMWUzZmQwMjZiY2RhOWVhZmEzNGU0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JT
cAogICAgICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0Nv
bnRleHQuZ2V0KCkpOworICAgICAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOwogICAgIH0KIAogICAgIGNvbnRleHQoKS5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA3MjUyZTQ5
NTI0ZjYwOTg2YjAzOGNhODdjOGU3ZTI2NWQwNTc0NzBkLi5jMDE2MDFlMTAxMTEyNzk4YjI2OGRm
YWYyNjkzODJiNjUzMTlkNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMzcxLDcg
KzEzNzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpj
cmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogCiAgICAgYXV0byBbc3ludGhldGlj
Qm9sZCwgc3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnQu
Z2V0KCksIGZvbnREZXNjcmlwdGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24o
KSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJl
bmRlcmluZ01vZGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4o
Zm9udC5nZXQoKSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERl
c2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwg
Zm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogfQogCiB0eXBlZGVmIEhhc2hT
ZXQ8UmV0YWluUHRyPENURm9udFJlZj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaDxDVEZvbnRS
ZWY+LCBXVEY6OlJldGFpblB0ck9iamVjdEhhc2hUcmFpdHM8Q1RGb250UmVmPj4gRmFsbGJhY2tE
ZWR1cFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAKaW5kZXggMWNlMGM5NDdlMTdlOWE2OGVlYWQzYTRkNTdiNTlkOGZhMTZjZWYyOS4uMGRlOTM0
YTdiMzg0MTAwZWViNzZkNzdmNDU2YTE4MmZiYmFiY2VjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBGb250
UmFuZ2VzIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBmbwogCiAgICAgICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRo
ZXRpY09ibGlxdWVdID0gY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250Rm9yU3ludGhlc2lz
Q29tcHV0YXRpb24uZ2V0KCksIGZvbnREZXNjcmlwdGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5n
ZXQoKSwgc2l6ZSwgZmFsc2UsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmll
bnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlv
bi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBs
YXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgZmFsc2UsIHN5bnRoZXRpY09ibGlxdWUsIGZv
bnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50
KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CiAKICAgICBBU1NFUlQoZm9udFBsYXRmb3JtRGF0YSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0M0RDb2NvYS5tbQppbmRleCA4OTJiNGE5OGMwMDdiNmY5NzBhMzY4NjFiZTkxNzE0OGJi
MDQ2NzJjLi41NzlmMWI5MThkYmJlNzViODQxM2U2ZDZmZDE1ZGZhZjY0YTM1NjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHQzRENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KQEAgLTkyLDYgKzkyLDcgQEAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHN0YXR1c0NoZWNrVGhyZXNob2xkID0gNTsKIC8vIEZJWE1FOiBUaGlzIGNsYXNz
IGlzIGN1cnJlbnRseSBlbXB0eSBvbiBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1bGF0ZWQgYXMKIC8v
IHRoZSByZXN0cnVjdHVyaW5nIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjkwMyBpcyBkb25lCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCopIHsgfQogICAgIApAQCAtMjEyLDcgKzIxMyw3IEBA
IHN0YXRpYyB2b2lkIHNldEdQVUJ5RGlzcGxheU1hc2soUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBjb250ZXh0T2JqLCBDR0xQaXhlbEZvCiAKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0
M0QqIHNoYXJlZENvbnRleHQpCiAgICAgOiBtX2F0dHJzKGF0dHJzKQotICAgICwgbV9wcml2YXRl
KHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkKKyAgICAs
IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCiB7
CiAjaWYgIVVTRShBTkdMRSkKICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDVjNzMzZTNi
YWQxZTlkM2QyNWMxZWQ1N2Y1YWNkZmZmM2E0Y2I5OWYuLjM4NzVmY2ZkMzA2ZGY4NmQzNDc0ZWUx
ODYwYmE1OTBhM2E4YmMxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTMyNiw3ICszMjYsNyBAQCBHcmFwaGljc0Nv
bnRleHQmIElPU3VyZmFjZTo6ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCkKICAgICBpZiAobV9ncmFw
aGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CiAKLSAgICBt
X2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1
cmVQbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVl
PEdyYXBoaWNzQ29udGV4dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIG1fZ3JhcGhp
Y3NDb250ZXh0LT5zZXRJc0FjY2VsZXJhdGVkQ29udGV4dCh0cnVlKTsKIAogICAgIHJldHVybiAq
bV9ncmFwaGljc0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2Nv
YS5tbQppbmRleCA2ZTYwZWJmMWZmYTY1OTBmNmYzNGU1MjhhM2UzMzU4MzE4YjVlYmRmLi4yNzg3
NDY4MTY2ZmVmMWI1ZjY0NjIxZmViNWJiNWU1MGQ5ZDZkYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRU
cmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBAZW5kCiAKIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50
YXRpb246OmNyZWF0ZShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+
KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYT4oY2xpZW50KTsKIH0KIAogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6VGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xp
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1h
Z2VSb3RhdGlvblNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCmluZGV4IGFkYzk3YWRjMWZhMjQ1ODA5OTAwM2Mz
ZGU5YzBhYTM4ZDg3NjE4N2QuLjYwMDFiYjcwYTEwMDQxNzQ0MTA5MjEzNmYzZmU1YjYxNzYyY2Iw
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
Um90YXRpb25TZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKQEAgLTM2LDcgKzM2LDggQEAgdHlwZWRlZiBz
dHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCB7CitjbGFzcyBJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUm90YXRpb25Qcm9wZXJ0aWVzIHsKICAgICAgICAgYm9v
bCBmbGlwWCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKaW5kZXggZGQxMzU2OWUw
ODFhMWIzOTlkY2JhYmYzZjVlODgzN2Y4NGMyYWI0ZS4uY2Q1YjZmY2MwMGQ3NzQ2NGU2ZTZiZTc0
NjMxMWUxM2QwZDI3ZTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaApAQCAtMzYsNiArMzYs
NyBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
KENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gY29udmVydChDVlBpeGVsQnVmZmVyUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCmluZGV4IDgxYWIyZjkyNGRh
ZjI2Y2RhMjJjNWUyMDA3NzZjMjE4MDIwMjNhM2IuLmM5ZmY0MTlkNDNiZTQ1ZjQwNDQwMzA0MGFk
ZDhjNGQwNDQwMmJhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAogY2xhc3MgVGV4dHVyZUNhY2hlQ1Yg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGV4dHVyZUNhY2hlQ1Y+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVDYWNoZUNWPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQppbmRleCA1
NzdlYzI4NDYzOTJhNzIxNWQ5OThhYTMxMGQzZDhkNjMzZjVmMWVjLi45ZjFmNjZiM2JkNTlmNTli
MWFkM2NiNzA1Yzg1NjU0NDIyN2VjMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQpAQCAtNTAsNyArNTAsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IFRleHR1cmVDYWNoZUNWOjpjcmVhdGUoR3Jh
cGhpY3NDb250ZXh0M0QmIGNvbnRleAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJl
dGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiBzdHJvbmdDYWNoZSA9IGFkb3B0Q0YoY2FjaGUpOwot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZN
b3ZlKHN0cm9uZ0NhY2hlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZUNhY2hlQ1Y+
KGNvbnRleHQsIFdURk1vdmUoc3Ryb25nQ2FjaGUpKTsKIH0KIAogVGV4dHVyZUNhY2hlQ1Y6OlRl
eHR1cmVDYWNoZUNWKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0LCBSZXRhaW5QdHI8VGV4dHVy
ZUNhY2hlVHlwZT4mJiBjYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCmluZGV4IDQzYTk2ZGMxNDM2
NTg0YWZhNzcxODc4YjE5N2YyYTk1NDdkY2NjZWUuLjlkMzkyZWEwNThiMzYwMDhjYTU2OWNhNDRm
ZDcxMjg4M2IwZDZmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaApAQCAtNDAsNiArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUZXh0dXJlQ2FjaGVDVjsKIAogY2xhc3MgVmlkZW9U
ZXh0dXJlQ29waWVyQ1YgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFZpZGVvVGV4dHVyZUNvcGllckNWKEdyYXBoaWNzQ29udGV4dDNEJik7CiAgICAgflZpZGVv
VGV4dHVyZUNvcGllckNWKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKaW5kZXggOGZlYWEyZjVkNzUzMjhlNDM2YmY5ZDg4YjhkYzA1YmFjMWMyZTFmMy4uYzU2MWY1
ZjllYWI5OTYyMTFhOGIyMjIxOTc3NmQ2OGYzOWUxNjQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RGlzcGxheUxpc3Q+IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xp
cCwgYm9vbAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiByZXBsYXlMaXN0Owog
ICAgIGlmIChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3QpKQotICAgICAgICByZXBsYXlMaXN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKKyAgICAgICAgcmVwbGF5TGlzdCA9IG1h
a2VVbmlxdWU8RGlzcGxheUxpc3Q+KCk7CiAKICAgICBzaXplX3QgbnVtSXRlbXMgPSBtX2Rpc3Bs
YXlMaXN0Lml0ZW1Db3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtSXRlbXM7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDU1N2I4ZTAwODYyZDZhYmM1ODA0
YjQxNDMyMTAwODBhODM1MTZkMWUuLjMwYmI0OGNjOGYwYzQ5NTQ0OGFiNjVmNjgxMTcyY2NjNmJj
YTUzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBS
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghU1ZHVVJJUmVmZXJl
bmNlOjppc0V4dGVybmFsVVJJUmVmZXJlbmNlKG1fdXJsLCAqY2FjaGVkUmVzb3VyY2VMb2FkZXIu
ZG9jdW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91
cmwpOworICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlVW5pcXVlPENhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlPihtX3VybCk7CiAgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZS0+bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNo
ZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRleCA2NTYzYzhiZmVlYjM1YmE1MzI3ZjQ4OTYxZWQ2
MjFmZTNkNTNhYTQxLi43MWE0YWIyZjQ4MjVmMWE1NDMxOTE4MDM0YjM1MzFlY2RhOGEwZjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC00NTUsNyArNDU1LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGUKICAgICAgICAgICAgIEZjUGF0dGVybkFkZFN0cmluZyhyZXN1bHRQ
YXR0ZXJuLmdldCgpLCBGQ19GT05UX1ZBUklBVElPTlMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
RmNDaGFyOCo+KHZhcmlhbnRzLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAjZW5kaWYKLSAgICBh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9u
dEZhY2UuZ2V0KCksIHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpLCBmaXhlZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVl
LCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSk7CisgICAgYXV0byBwbGF0Zm9ybURhdGEg
PSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQYXR0
ZXJuLmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRXaWR0
aCwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVu
dGF0aW9uKCkpOwogICAgIC8vIFZlcmlmeSB0aGF0IHRoaXMgZm9udCBoYXMgYW4gZW5jb2Rpbmcg
Y29tcGF0aWJsZSB3aXRoIEZvbnRjb25maWcuIEZvbnRjb25maWcgY3VycmVudGx5CiAgICAgLy8g
c3VwcG9ydHMgdGhyZWUgZW5jb2RpbmdzIGluIEZjRnJlZVR5cGVDaGFySW5kZXg6IFVuaWNvZGUs
IFN5bWJvbCBhbmQgQXBwbGVSb21hbi4KICAgICAvLyBJZiB0aGlzIGZvbnQgZG9lc24ndCBoYXZl
IG9uZSBvZiB0aGVzZSB0aHJlZSBlbmNvZGluZ3MsIGRvbid0IHNlbGVjdCBpdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDEzNzY1
ZjQzZGE4NjY4ZDJkZTgyZTY3MWQ4MTgwZDY4NDQyODQzYjAuLjU4OTQzZDJhOTBkZmM1NTAxZjJk
Y2FhOGVjZjBlOTBlMWFjN2Y3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2U7CiAgICAgaWYgKEZUX05ld19NZW1v
cnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIu
ZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CiB9CiAKIGJvb2wgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAK
aW5kZXggODY5ODEzNjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3Ni4uNzFmZGEwZDky
NGNkMjU1ZGIzZWYxMDc3ZjllMTA3ODE0ZTI0M2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBSZWZQ
dHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBG
b3JtYXQgZm9ybWF0LCBpbnQgdwogICAgICAgICBudW1UaWxlcyA9IDA7CiAgICAgfQogCi0gICAg
YXV0byB0ZXh0dXJlSWRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1U
aWxlcyk7CisgICAgYXV0byB0ZXh0dXJlSWRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+
PihudW1UaWxlcyk7CiAgICAgdGV4dHVyZUlkcy0+ZmlsbCgwLCBudW1UaWxlcyk7CiAKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggZjRhNGJhMWE4YWNhZDVlMjA1YTU5
M2E0OGY3NDg2YjI4YzdiZTFkNS4uZjZlMWUxNDY5M2M3OTg0MjUyZjc4ZWI3ODBkMDI0Y2Y2NDVl
YTQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpcwogewogICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7
CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+
KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBl
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgfQog
fQpAQCAtMTE0MCw3ICsxMTQwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVy
ZWQoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8fCBpc0xpdmVTdHJl
YW0oKSkKICAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CiAKQEAgLTIzNzYsNyArMjM3Niw3IEBA
IEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5rKCkgY29u
c3QKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjplbnN1cmVBdWRpb1NvdXJjZVBy
b3ZpZGVyKCkKIHsKICAgICBpZiAoIW1fYXVkaW9Tb3VyY2VQcm92aWRlcikKLSAgICAgICAgbV9h
dWRpb1NvdXJjZVByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVy
R1N0cmVhbWVyPigpOworICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBtYWtlVW5pcXVl
PEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI+KCk7CiB9CiAKIEF1ZGlvU291cmNlUHJvdmlk
ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAK
aW5kZXggMDcyOGVlYjY0MjBhZmZiOTZjN2ExYTQ5ZjU1NTVkOWYzYjNkOThkNS4uYzdhYzViMmJl
NzQ1MTgzNjk0MDMyNzBmNDZiMmZmNmMxY2EzODc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzEwLDE5ICs3MTAsMTkg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29t
cG9zaXRvcigpCiAgICAgICAgICAgICBpZiAoIXByb3h5LmlzQWN0aXZlKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFt
ZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xk
ZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFj
a1ZpZGVvU2luayk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhv
bGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2Ft
cGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2lu
ayk7CiAKICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVy
ZUlEKCk7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyOwogICAgICAgICAgICAgaWYgKHRleHR1cmVJRCkgewot
ICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4odGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBm
cmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICAg
ICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4odGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+Zmxh
Z3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwogICAgICAgICAgICAgICAgIGxheWVyQnVm
ZmVyLT5zZXRVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKFdURk1vdmUoZnJhbWVIb2xkZXIpKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBwcm94
eS5nZXRBdmFpbGFibGVCdWZmZXIoZnJhbWVIb2xkZXItPnNpemUoKSwgR0xfRE9OVF9DQVJFKTsK
ICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWxheWVyQnVmZmVyKSkgewogICAgICAgICAg
ICAgICAgICAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJl
TWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZS0+cmVzZXQoZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hh
bm5lbCgpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5v
RmxhZyk7Ci0gICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT51cGRhdGVUZXh0dXJlKGxheWVyQnVmZmVy
LT50ZXh0dXJlR0woKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldEV4dHJhRmxh
Z3MobV90ZXh0dXJlTWFwcGVyRmxhZ3MgfCAoZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgp
ID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApKTsKQEAgLTkxMiw3ICs5MTIsNyBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmFwaGljcwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBs
ZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxH
c3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0Vmlk
ZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVl
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIg
PSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1
cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVy
LT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJRCkKQEAgLTkyMyw3ICs5MjMsNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljcwogICAgICAgICBzaXplID0gc2l6ZS50cmFuc3Bvc2VkU2l6
ZSgpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1Rl
eHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1l
cj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKKyAgICAgICAgbV92aWRlb1Rl
eHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVY
VFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4
dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwg
c2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CkBAIC05
MzksNyArOTM5LDcgQEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiAgICAgaWYgKCFHU1RfSVNfU0FNUExF
KG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJG
bGFncywgdHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZy
YW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQo
KSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCiAgICAgYXV0byB0ZXh0dXJlSUQgPSBm
cmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlSUQpCkBAIC05NTMsNyAr
OTUzLDcgQEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiAgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVv
VGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBtX3ZpZGVv
VGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihU
RVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4
dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwg
c2l6ZSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUsIGZhbHNlLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTExNDcsOCArMTE0Nyw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQogICAgICAgICBbdGhp
c10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4o
MCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUp
OwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4g
aG9sZVB1bmNoQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIb2xlUHVuY2hDbGll
bnQ+KG1fdmlkZW9TaW5rLmdldCgpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBtYWtlVW5p
cXVlPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOwogICAgICAg
ICAgICAgbGF5ZXJCdWZmZXItPnNldEhvbGVQdW5jaENsaWVudChXVEZNb3ZlKGhvbGVQdW5jaENs
aWVudCkpOwogICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1
ZmZlcikpOwogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcAppbmRleCA5NzNmNGQ0ZjAwMzIzNTZmMTc3ZWJkN2ZjNGI5ZTk0YTUyOTJmOTVhLi41
ZmY5NzI4NjU2NjMxNjQzYjI5MDNmYmVjOWUzOTQ1YmMyMzI5M2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNjMyLDcgKzYzMiw3IEBAIHN0YXRp
YyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChHc3RCYXNlU3JjKiBiYXNlU3JjLCBi
b29sIG5vdGlmeUFzeW5jQ29tCiAgICAgICAgICAgICBsb2FkT3B0aW9ucyB8PSBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkJ1ZmZlckRhdGE7CiAgICAgICAgIHByaXYt
PnJlc291cmNlID0gcHJpdi0+bG9hZGVyLT5yZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0
KHJlcXVlc3QpLCBsb2FkT3B0aW9ucyk7CiAgICAgICAgIGlmIChwcml2LT5yZXNvdXJjZSkgewot
ICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENh
Y2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCksIFJlc291cmNlUmVx
dWVzdChyZXF1ZXN0KSkpOworICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2UtPnNldENsaWVudCht
YWtlVW5pcXVlPENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCks
IFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSkpOwogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVD
VChwcm90ZWN0b3IuZ2V0KCksICJTdGFydGVkIHJlcXVlc3QiKTsKICAgICAgICAgICAgIGlmIChu
b3RpZnlBc3luY0NvbXBsZXRpb24pCiAgICAgICAgICAgICAgICAgZ3N0X2Jhc2Vfc3JjX3N0YXJ0
X2NvbXBsZXRlKEdTVF9CQVNFX1NSQyhzcmMpLCBHU1RfRkxPV19PSyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXgg
NGU5ZDE5ZDg1MjdkNjk2MjBjZjVhYTk0MTA3MzYyODM4MWIzYzlmMC4uZTY4ODBkOThlN2ZjYWQx
ZDA1M2Y4NGVkMzhhNmZkODE5OGRlN2I4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhciByZQogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3Rl
cldlYktpdEVsZW1lbnRzKCk7CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21z
ZV9kZWJ1ZywgIndlYmtpdG1zZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIpOwogICAg
IGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRT4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
PihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlw
ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIH0K
IH0KQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RTo6c2V0UmF0ZShmbG9hdCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fbWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpIDogc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3Vy
Y2UgPyBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzb3Vy
Y2VTZXR1cChHc3RFbGVtZW50KiBzb3VyY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAppbmRleCAxMTcyNDU4NDEwZTlhMTQ1M2I2MzVi
MGY4ZDkxYjlmYjRhNjk2YzU4Li4wZjA4YzE5ZGJkYmU2OWIwNmY3Yjc1NTNmOGFiNDk3ZDQ3ZTM3
N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVu
Y2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNw
cApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVz
aE5leHRIb2xlUHVuY2hCdWZmZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIg
aG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFw
cGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9
IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwg
VGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKICAgICAgICAg
ICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAg
fTsKIApAQCAtMTQxLDcgKzE0MSw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5n
aW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2g+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIp
IHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIp
OyB9LAogICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxh
eWVyUHJpdmF0ZUhvbGVQdW5jaC5oCmluZGV4IGYwZDA0ZDRjNjNkOTMxMjBiY2U4MDVhYjhmZWEy
ODdhMDFlMDQ0MmEuLjJhZWYwZmU4NGE2NzFiNzIyYzRiNDUzZmNlNzE3YjY2YTk3ZTZjMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKQEAgLTc5LDcg
Kzc5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIDogcHVibGljIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZSwgcHVibGljIEMKICAgICBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpF
bXB0eTsgfTsKICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsgfTsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKIAogICAgIGJvb2wg
ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCBlMWEz
YTg2NjMxNDc1Y2FiN2E5YjE3MWI0MDYyZDM5M2Q4OTBlNjA2Li5lY2Y4OTY5M2RhMzM4NTIwMTJl
NzUwMjExMjk5ODA5OWVjOGRhYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT0JveC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIERhdGFWaWV3OwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Cb3ggeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfklTT0JveCgpID0g
ZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaAppbmRleCA3MGJiODYxMTMxNmU2ODViNzZi
Nzg4MzhiNWVkMDYwMzc2YjliMWE5Li4xODgzYmE0N2JkZjNhNTJhZmIyZmY3ZDBkZDVjZDlkY2Q3
Y2RkODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPT3JpZ2luYWxGb3JtYXRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0
Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09PcmlnaW5hbEZv
cm1hdEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3Vy
Q0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnJtYSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9u
U2NoZW1lSW5mb0JveC5jcHAKaW5kZXggZDhkNzQwMWE3NTYwMDQ2Yzk4YWZmOGNiMTFlYjJlNzIy
M2M5ODFjZS4uYmRmZGJkYzk2Y2YwZTFiNTBhNzI4NTgyODhjOWIyZjQ3NGY3ZDBmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25T
Y2hlbWVJbmZvQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wg
SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25l
ZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAob3B0aW9uYWxCb3hU
eXBlLnZhbHVlKCkuZmlyc3QgPT0gSVNPU2NoZW1lVHlwZUJveDo6Ym94VHlwZU5hbWUoKSkgewot
ICAgICAgICBtX3NjaGVtZVR5cGVCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZVR5cGVC
b3g+KCk7CisgICAgICAgIG1fc2NoZW1lVHlwZUJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lVHlw
ZUJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZVR5cGVCb3gtPnJlYWQodmlldywgbG9jYWxP
ZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02OCw3ICs2OCw3IEBAIGJv
b2wgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNp
Z25lZCYgb2Zmc2V0KQogICAgIH0KIAogICAgIGlmIChvcHRpb25hbEJveFR5cGUudmFsdWUoKS5m
aXJzdCA9PSBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAg
ICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVJbmZv
cm1hdGlvbkJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVJbmZvcm1hdGlvbkJveCA9IG1ha2VVbmlx
dWU8SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVJbmZv
cm1hdGlvbkJveC0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKaW5kZXggZjM3Yjc2MjQ5
ZDhlMDBmYTE3YTA1NTkyOWU3NzY2ODUxMzczMzM2Ni4uOGU1NjczZTA1MTZhNjUwMTRmNWNkNDlm
NjFhYTdiNzUzOGQyY2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSVNPU2NoZW1lVHlwZUJv
eDsKIGNsYXNzIElTT1NjaGVtZUluZm9ybWF0aW9uQm94OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNP
Qm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4g
InNpbmYiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCmluZGV4IGI0ZjI3N2E2
ODQ3Y2MyMGQ0ZmM5ZDYyNmY5Y2FjYzc0MzBhZGFmNzAuLmM4M2M0ZmY3YjM4YWJmMWFlMjJmZmU1
ZTcyYzdhMWY4NmEwOGViMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcApAQCAt
NDcsNyArNDcsNyBAQCBib29sIElTT1NjaGVtZUluZm9ybWF0aW9uQm94OjpwYXJzZShEYXRhVmll
dyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICAgICAgaWYgKGxvY2FsT2Zmc2V0ICsgc2No
ZW1lU3BlY2lmaWNCb3hUeXBlLnZhbHVlKCkuc2Vjb25kID4gb2Zmc2V0ICsgbV9zaXplKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxJU09UcmFja0VuY3J5cHRpb25Cb3g+KCk7CisgICAgICAgIG1fc2No
ZW1lU3BlY2lmaWNEYXRhID0gbWFrZVVuaXF1ZTxJU09UcmFja0VuY3J5cHRpb25Cb3g+KCk7CiAg
ICAgICAgIGlmICghbV9zY2hlbWVTcGVjaWZpY0RhdGEtPnJlYWQodmlldywgbG9jYWxPZmZzZXQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9u
Qm94LmgKaW5kZXggOWVkYjE4NzhhOWJhOTE5YmViMTlkN2I2MjIzZDllN2U0NjRmNjg1OC4uZThl
YzBjNGM2OWI3NGU4MzM0NDk4OTQxZjI0ZWVlNDEwZjJjZGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9y
bWF0aW9uQm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCA6IHB1YmxpYyBJU09C
b3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3ggZmluYWwg
OiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1l
KCkgeyByZXR1cm4gInNjaGkiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCmluZGV4IDYxOTYxMDM5ZjQ4Y2Yy
YmM2ZWU3Yjg4NDgwNzNjODM3NmU1ODMxMzAuLjRiOGYyNjMzNzUwZjhhZGY5MGJjMjdjMmQwY2Yx
NGVmOTgyYzE3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09TY2hlbWVUeXBlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggOiBw
dWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVUeXBlQm94
IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0Mg
Ym94VHlwZU5hbWUoKSB7IHJldHVybiAic2NobSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5o
CmluZGV4IGY0ZWZlMjgxMDUxZTNjN2IyOWRiZWY3OGU0NGRhM2IwMzg3ODAzZjMuLjQ3ZmE0OTcy
NDZjNzE1YmUxZDJjZWY5YjBlYTg3ZGQ3Zjc5ZWY1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09UcmFja0VuY3J5cHRpb25Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7Citj
bGFzcyBXRUJDT1JFX0VYUE9SVCBJU09UcmFja0VuY3J5cHRpb25Cb3ggZmluYWwgOiBwdWJsaWMg
SVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsg
cmV0dXJuICJ0ZW5jIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuY3BwCmluZGV4IDllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRm
N2IxMzk1NWQyODQuLjRiNTE2ZWU4ZGQ3ZjdkMjM3ZThkNjI3Mjc5N2IwMzJkZDFmNWFjYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIEpTQzo6RGF0YVZpZXc7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgSVNPU3RyaW5nQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBJ
U09TdHJpbmdCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIGNvbnRlbnRzKCkgeyByZXR1cm4gbV9jb250ZW50czsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKaW5kZXggYTYxNjBiNjZh
ZTk0NjgyMDY3N2FkMjkzNGIxODFkZWI5M2NjNGY0OS4uYWUyM2JlZmZmZWQ2NGE2ZGUyODkxNzZl
NDE1MTAxMWYwNjdjOTg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAvLyBOIGJ5dGVzIDogQ3VlVGltZUJveCA6IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDog
Q3VlU2V0dGluZ3NCb3ggOiBib3ggOiBvcHRpb25hbAogLy8gTiBieXRlcyA6IEN1ZVBheWxvYWRC
b3ggOiBib3ggOiByZXF1aXJlZAotY2xhc3MgSVNPV2ViVlRUQ3VlIDogcHVibGljIElTT0JveCB7
CitjbGFzcyBJU09XZWJWVFRDdWUgZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAg
ICBJU09XZWJWVFRDdWUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBjb25zdCBN
ZWRpYVRpbWUmIGR1cmF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4
IDNkNWVmMDliN2Q5NDAzMDU5NzQxZDgwODI4ZjUxOGRlZmM4NDIzYjUuLmVmMTBiMzNhNTRiMzVk
N2Q1NzFmMDZlNDE2ZjEyOTIyMDg5YWMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250RGVzY3JpcHRvci5nZXQoKSk7CiB9
CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3Ry
aW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4
IDEwOWMyYzU3NzY3OWExMjE0YWE2ZWExMDFjNmY0ODBmYmEyZWM2MDEuLjViZWU2MTNmY2Y2YjQ2
YTA3YzYyOGU1ODAxNmY0OWJiOTAyMWIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50
ZWdyYXRpb24uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVx
dWVzdFVwZGF0ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVT
Y29wZT4gU2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKIH0KIAogU2NlbmVJ
bnRlZ3JhdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAyYjFh
ZWNmMGQxYjdlNmEzNDFiZjk0YmZmYWVkMjIwZjFhNDU4NjM4Li41MGUwYzNjN2Q5NzY4MjZiYTdi
YjgxODVkMWVlMTQyMTI5YWRhMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBhdXRvIGNy
ZWF0ZUNvbW1hbmQoQXJncyYmLi4uIGFyZ3VtZW50cykgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX2Jhc2Vfb2Y8T3BlcgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGF1dG8gY3JlYXRlQ29tbWFu
ZCgpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXJhdGlvbkRhdGE8Piwg
VD46OnZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+PgogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VD4oKTsK
IH0KIAogQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAK
aW5kZXggMGM4YTY3MGUzYTBhMzYzMDdlM2YyOTllY2RhMDI1NTJmZDc3NGVkMS4uYjM1MDhkNTE3
YjI0ZTQ3NWMwOGFmNDhiMzNlNDMxZmQyNzkyMDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcApAQCAtNzAsOCArNzAsOCBAQCBQ
YWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYgYnVm
ZmVyKQogICAgICAgICB9KTsKIAogICAgIG1fY2Fpcm8uY29udGV4dCA9IGFkb3B0UmVmKGNhaXJv
X2NyZWF0ZShtX2NhaXJvLnN1cmZhY2UuZ2V0KCkpKTsKLSAgICBtX3BsYXRmb3JtQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8u
Y29udGV4dC5nZXQoKSk7Ci0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpjcmVhdGVGYWN0b3J5KCptX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fcGxhdGZvcm1D
b250ZXh0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWly
by5jb250ZXh0LmdldCgpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmNyZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CiB9CiAKIFBhaW50aW5nQ29udGV4
dENhaXJvOjpGb3JQYWludGluZzo6fkZvclBhaW50aW5nKCkKQEAgLTEwNCwxMCArMTA0LDEwIEBA
IHZvaWQgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkoY29uc3QgUGFp
bnRpbmdPcGVyYXRpb25zJiBwYWludGluCiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNv
cmRpbmc6OkZvclJlY29yZGluZyhQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0aW9u
cykKIHsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0PigKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0PigKICAgICAgICAgWyZwYWludGluZ09wZXJhdGlvbnNdKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwg
cGFpbnRpbmdPcGVyYXRpb25zKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CiAgICAgICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBkNGM5YjYwNWI0Y2QyOGUzNDhl
ZmQ4NTMzNTAzOGI1OGM5YTRkZGZhLi44ZTM3OTBmN2FiNTRmNmIzZDk1NmYzMDcwNGM0MjljMmFj
ZGMzMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFC
YWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBC
YWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkK
IHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10oQmFja2luZ1N0b3JlJikgewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBl
ckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVUZXh0
dXJlTWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlv
bkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbC5jcHAKaW5kZXggMzhmZGQ5M2RhNmIxMzg4MzE0MDU5MTY1M2NkZjI5ZTA3ZGUzMjM5Ni4u
NzU2OTJjN2M0YTdiZmRiMTg3MWRmMTgwMmUzODc3NTM2YjYxNTUxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBv
c2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0
dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgYXV0byBDb21wb3NpdGlvbkxheWVy
VGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0
dXJuIEZhY3RvcnkoCiAgICAgICAgIFtdKHVpbnQ2NF90LCBDb21wb3NpdGlvbkxheWVyJikgewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpb25MYXllclRleHR1
cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcG9zaXRp
b25MYXllclRleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbC5jcHAKaW5kZXggNTYxNzI4YjVlZjFmNDBkODBjNTM1OTkyNjcxMDY2YWQ4NzQ4MTlh
Ny4uMmZiMGVjOTU5MTVhZWIwYmEwOTZmODBiYzY5MGQyZjNiMjg0OGM0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1h
cHBlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGF1dG8gQ29udGVudExheWVyVGV4dHVyZU1h
cHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoQ2xpZW50JiBjbGllbnQpIC0+IEZhY3RvcnkKIHsKICAg
ICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgWyZjbGllbnRdKENvbnRlbnRMYXllciYpIHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBw
ZXJJbXBsPihjbGllbnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudExh
eWVyVGV4dHVyZU1hcHBlckltcGw+KGNsaWVudCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0MzRExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCmluZGV4IDUyZWM3MGI2ODFmN2JjNTYzYTY3
NDc1NDM2MjM4NzZiMDMxMzlhOWIuLjlhOWJkNDY4M2IyNjc0MmFmZWNiMTQ5MWY2MTQ0ZjJhNzhj
NTk1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCkBAIC04OCw3
ICs4OCw3IEBAIHZvaWQgR0MzRExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICAgICAg
YXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbD4obV9jb250ZW50TGF5ZXItPmltcGwoKSkucHJveHkoKTsKIAogICAgICAgICBMb2NrSG9s
ZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRl
eHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9p
bnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VV
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBv
c2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29s
b3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggYTJhZTM0YTMxMzI3ZTg3MTU2NTQxNDZkMThm
NzdjN2E2N2YyNDIxNi4uZDM1M2M4YmUxYjViZmExMTZiNmNiODUyMDk3MDI3N2NjOTMyNDVjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNr
aW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGF1dG8gSW1hZ2VCYWNr
aW5nVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAg
cmV0dXJuIEZhY3RvcnkoCiAgICAgICAgIFtdKEltYWdlQmFja2luZyYpIHsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBl
ckltcGw+KCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcAppbmRleCBlNjg0OGZjZWNhNDFlOTczNmYyYTM4MTdhOWZkMDNjZWJhZTNhYzExLi5i
OTYzNjNiNTUxOTM1NmM4Y2RmNDY1NDM2MzI2ZWQwNmNlY2VkODhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9u
cykKLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RP
cGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkp
OwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMjRkZjAzNWUyODhlMWViMmY4
YWY5ZjdhYjkxZDc3OWQwYWNhNDllLi4yYTBlNWI3NmU0ZDZiYWI3MGU5MGIyZjNkMjhlYjQzYzA3
ZjQyNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHAKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIEFOR0xFUmVzb3VyY2VzLkhhc2hGdW5j
dGlvbiA9IG5hbWVIYXNoRm9yU2hhZGVyOwogCiAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRl
cnMpCi0gICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hh
ZGVyTmFtZUhhc2g+KCk7CisgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlx
dWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVy
KG5hbWVIYXNoTWFwRm9yU2hhZGVycy5nZXQoKSk7CiAgICAgbV9jb21waWxlci5zZXRSZXNvdXJj
ZXMoQU5HTEVSZXNvdXJjZXMpOwogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBB
TkdMRVNoYWRlcgogICAgICAgICAvLyBBdHRyaWJ1dGVzIGFyZSBhIHNwZWNpYWwgY2FzZTogdGhl
eSBtYXkgYmUgcmVxdWVzdGVkIGJlZm9yZSBhbnkgc2hhZGVycyBoYXZlIGJlZW4gY29tcGlsZWQs
CiAgICAgICAgIC8vIGFuZCBhcmVuJ3QgZXZlbiByZXF1aXJlZCB0byBiZSB1c2VkIGluIGFueSBz
aGFkZXIgcHJvZ3JhbS4KICAgICAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAg
ICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5h
bWVIYXNoPigpOworICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gbWFrZVVuaXF1
ZTxTaGFkZXJOYW1lSGFzaD4oKTsKICAgICAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hh
ZGVyKG5hbWVIYXNoTWFwRm9yU2hhZGVycy5nZXQoKSk7CiAKICAgICAgICAgYXV0byBnZW5lcmF0
ZWROYW1lID0gZ2VuZXJhdGVIYXNoZWROYW1lKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMRVMuY3BwCmluZGV4IDI0MzA0NmQ5ODlhZDczOGY3YzlmNzE0OTU1NjdjOTZi
YjM0YzU2NDEuLjcwYTIwZDUwYzM1MjFhNjEyM2U2ZWZhZjFmNDc2OGY2NDk1Y2RlNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKQEAgLTI0Miw3ICsyNDIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBF
eHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBp
ZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1
ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAg
ICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywg
aXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRp
ZgpAQCAtMjcxLDcgKzI3MSw3IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMKIEdyYXBoaWNzQ29u
dGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0
cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5k
ZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJlZENvbnRleHQpCiAgICAgOiBtX2F0dHJz
KGF0dHJpYnV0ZXMpCiAgICAgLCBtX2NvbXBpbGVyKGlzR0xFUzJDb21wbGlhbnQoKSA/IFNIX0VT
U0xfT1VUUFVUIDogU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCkKLSAgICAsIG1fcHJpdmF0
ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVy
U3R5bGUpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlPih0aGlzLCByZW5kZXJTdHlsZSkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRDb250
ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGVkNmNjZjE5
NGJiZWUxZTAwZmQ0MzlmNjFhNmRlNjJlNDAzMDJlYTMuLjhmZDNhZDRmNzJkNzY0YmQ5NWQyMjBm
NTgxZWQyYjc5NjI4ODNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRl
eHR1cmVNYXBwZXIuY3BwCkBAIC0xMDYsOSArMTA2LDkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6Okdy
YXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBI
b3MKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsK
ICNpZiBVU0UoTklDT1NJQSkKLSAgICBtX25pY29zaWFMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8
Tmljb3NpYTo6R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOworICAgIG1fbmljb3NpYUxh
eWVyID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7
CiAjZWxzZQotICAgIG1fdGV4bWFwTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBw
ZXJHQzNEUGxhdGZvcm1MYXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX3RleG1hcExh
eWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCBy
ZW5kZXJTdHlsZSk7CiAjZW5kaWYKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMzI1
LDEwICszMjUsMTAgQEAgRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5z
aW9ucygpCiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BFTkdMX0VTKQogICAg
ICAgICAvLyBnbEdldFN0cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KLSAgICAgICAg
bV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhp
cywgIGZhbHNlKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25z
M0RPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKICNlbHNlCiAgICAgICAgIC8vIEZyb20gT3BlbkdM
IDMuMiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGds
R2V0U3RyaW5naS4KLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRl
bnNpb25zM0RPcGVuR0w+KHRoaXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0g
MzIwKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0w+KHRoaXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRp
ZgogICAgIH0KICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKaW5kZXggMTRmMWRiZjE4ZDkxYjM5MDc1ZTJk
NTBmMjE0OWI3NzZiYmMxNzQ5My4uNjYzMjMxNTY5NWJhMjFjMjY3ZDE1NTkzMmViYTkxNDdmYjY2
YWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6
OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGhvbGRl
cihtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVy
UHJveHktPnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6
ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKKyAgICAgICAgbV9w
bGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0
dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9
CiAKICAgICBtX2NvbnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcAppbmRleCA5NzRiODU3OGI4OGFhNjQzNTA5MWU4YjBjMzhiYjJkYjcxMGVmMTAyLi5hMmY3
NTg2NmUzMjNiOGZkYmE0M2EwMDdkNDQ3YWFhNDY1NzZiZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIFRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdM
KCkKIAogICAgIG1fZGF0YSA9IG5ldyBUZXh0dXJlTWFwcGVyR0xEYXRhKHBsYXRmb3JtQ29udGV4
dCk7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIG1fdGV4dHVyZVBvb2wgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJpdG1hcFRleHR1cmVQb29sPihtX2NvbnRleHRBdHRyaWJ1dGVzKTsKKyAg
ICBtX3RleHR1cmVQb29sID0gbWFrZVVuaXF1ZTxCaXRtYXBUZXh0dXJlUG9vbD4obV9jb250ZXh0
QXR0cmlidXRlcyk7CiAjZW5kaWYKIH0KIApAQCAtNzkwLDcgKzc5MCw3IEBAIFJlZjxCaXRtYXBU
ZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoR0xpbnQgaW50ZXJuYWxGb3Jt
YXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpwbGF0
Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0dXJlTWFwcGVyR0w+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdM
PigpOwogfQogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlci5jcHAKaW5kZXggN2FmZGYzMGEwNWJjYTUzOTdiODAxOGJmZWJkODllMGUxZGE1MDMz
My4uZTExYTBiYjI3YjgxMGMyZDUyNzZiMmE5YjBjNTA5Zjg4OTUwNjZjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4g
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFw
VGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwg
bV9pbnRlcm5hbEZvcm1hdCk7CiAgICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKICAgICBzdGF0
aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFs
VGV4dHVyZShtX3RleHR1cmVJRCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFn
cyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CiB9CiAKIHZvaWQgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAppbmRleCBjNzE0
ZjZkNzhjMWNmMWE2MWQ0ZGZmNmI0MjA1MjFiMDJlY2Q3YzUwLi4zNzkzNjc1YWM4ZDZiM2MzMmEz
YjMxODE5M2U0OWE3YjM3ZGM0ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC03MSw4ICs3MSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0
b3IqIGNvCiAgICAgaWYgKG1fdGFyZ2V0TGF5ZXIgJiYgbV9jdXJyZW50QnVmZmVyKQogICAgICAg
ICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7
CiAKLSAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpj
dXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNl
VW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOwotICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRp
bWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQpOworICAg
IG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhp
cywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJz
VGltZXJGaXJlZCk7CisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIgPSBtYWtlVW5p
cXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5M
b29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpj
b21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7CiAKICNpZiBVU0UoR0xJQl9FVkVOVF9M
T09QKQogICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyLT5zZXRQcmlvcml0eShSdW5M
b29wU291cmNlUHJpb3JpdHk6OkNvbXBvc2l0aW5nVGhyZWFkVXBkYXRlVGltZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApp
bmRleCAzNjdkOGE1M2NmMzcwZDIyMDJkNmYzNDAxY2RjYjNhMDJmZjQyYzJiLi5kNDc1NzEwYmEw
Y2RkZmJjZGJkYTBjNjhjZTMwYjgxZWZhYWQ2OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTgxLDcgKzk4MSw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygp
CiAKICAgICAvLyBFbnN1cmUgdGhlIFRpbGVkQmFja2luZ1N0b3JlIG9iamVjdCwgYW5kIGVuZm9y
Y2UgYSBjb21wbGV0ZSByZXBhaW50IGlmIGl0J3Mgbm90IGJlZW4gcHJlc2VudCB5ZXQuCiAgICAg
aWYgKCFsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUpIHsKLSAgICAgICAgbGF5ZXJTdGF0ZS5t
YWluQmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1w
bCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKKyAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFj
a2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZl
Q29udGVudHNTY2FsZSgpKTsKICAgICAgICAgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50
ID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDNiZTQzMTFkZWFhMDI0OTdjN2VkMWNkY2ExMzQ1YmE1YTY4MDMxMDku
LjRhNjk3ODIyZTRkZTJjZGI4YjY2ZjgxZDQwNGQ4ZGJlODJiNDk4NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBA
IHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKGNvbnN0IEludFJlY3QmIHZpc2li
bGVSZWN0LCBjb25zdCBJbnRSZWN0JiBzCiAgICAgdW5zaWduZWQgdGlsZXNUb0NyZWF0ZUNvdW50
ID0gdGlsZXNUb0NyZWF0ZS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHRp
bGVzVG9DcmVhdGVDb3VudDsgKytuKSB7CiAgICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgY29vcmRp
bmF0ZSA9IHRpbGVzVG9DcmVhdGVbbl07Ci0gICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUs
IHN0ZDo6bWFrZV91bmlxdWU8VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKKyAgICAgICAgbV90
aWxlcy5hZGQoY29vcmRpbmF0ZSwgbWFrZVVuaXF1ZTxUaWxlPigqdGhpcywgY29vcmRpbmF0ZSkp
OwogICAgIH0KICAgICByZXF1aXJlZFRpbGVDb3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggYzg4ZTliZWY5ZDY2Y2EyYjU1MDE4Yzkw
ZjRiMGE0MjhiNDY4MmVmOC4uNGVhZjAwMTEyMGM0N2ZmY2U1NWFiNGRmYTkyMTgzY2U4YjMxOTRm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgVHJhbnNm
b3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUm
IG90aGVyKQogICAgIGlmIChtX21hcFF1YWQpIHsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9
IG90aGVyLm1fbGFzdFBsYW5hclF1YWQ7CiAgICAgICAgIGlmIChvdGhlci5tX2xhc3RQbGFuYXJT
ZWNvbmRhcnlRdWFkKQotICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0
ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVh
ZCk7CisgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxG
bG9hdFF1YWQ+KCpvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7CiAgICAg
fQpAQCAtNTAsNyArNTAsNyBAQCBUcmFuc2Zvcm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJh
dG9yPShjb25zdCBUcmFuc2Zvcm1TdGF0ZSYgb3RoZXIpCiAgICAgbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSA9IG51bGxwdHI7CiAKICAgICBpZiAob3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkK
LSAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNm
b3JtYXRpb25NYXRyaXg+KCpvdGhlci5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAgICAgICAg
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+
KCpvdGhlci5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAgICAgICAgCiAgICAgcmV0dXJuICp0
aGlzOwogfQpAQCAtMTI5LDEyICsxMjksMTIgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlU
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybUZyb21Db24KICAg
ICAvLyBJZiB3ZSBoYXZlIGFuIGFjY3VtdWxhdGVkIHRyYW5zZm9ybSBmcm9tIGxhc3QgdGltZSwg
bXVsdGlwbHkgaW4gdGhpcyB0cmFuc2Zvcm0KICAgICBpZiAobV9hY2N1bXVsYXRlZFRyYW5zZm9y
bSkgewogICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24p
Ci0gICAgICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxh
dGVkVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtl
VW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyICogKm1f
YWNjdW11bGF0ZWRUcmFuc2Zvcm0pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2FjY3Vt
dWxhdGVkVHJhbnNmb3JtLT5tdWx0aXBseSh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKICAgICB9
IGVsc2UgaWYgKGFjY3VtdWxhdGUgPT0gQWNjdW11bGF0ZVRyYW5zZm9ybSkgewogICAgICAgICAv
LyBNYWtlIG9uZSBpZiB3ZSBzdGFydGVkIHRvIGFjY3VtdWxhdGUKLSAgICAgICAgbV9hY2N1bXVs
YXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRy
YW5zZm9ybUZyb21Db250YWluZXIpOworICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0g
bWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7
CiAgICAgfQogICAgIAogICAgIGlmIChhY2N1bXVsYXRlID09IEZsYXR0ZW5UcmFuc2Zvcm0pIHsK
QEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpzZXRMYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZChjb25zdCBGbG9hdFF1YWQqIHF1YWQpCiAgICAgLy8gTWFwIHRoZSBxdWFkIGJh
Y2sgdGhyb3VnaCBhbnkgdHJhbnNmb3JtIG9yIG9mZnNldCBiYWNrIGludG8gdGhlIGxhc3QgZmxh
dHRlbmluZyBjb29yZGluYXRlIHNwYWNlLgogICAgIEZsb2F0UXVhZCBiYWNrTWFwcGVkUXVhZCgq
cXVhZCk7CiAgICAgbWFwUXVhZChiYWNrTWFwcGVkUXVhZCwgaW52ZXJzZURpcmVjdGlvbigpKTsK
LSAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1
YWQ+KGJhY2tNYXBwZWRRdWFkKTsKKyAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFr
ZVVuaXF1ZTxGbG9hdFF1YWQ+KGJhY2tNYXBwZWRRdWFkKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1T
dGF0ZTo6bWFwUXVhZChGbG9hdFF1YWQmIHF1YWQsIFRyYW5zZm9ybURpcmVjdGlvbiBkaXJlY3Rp
b24sIGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKaW5kZXgg
MTA4NjM3NDAwYTIwZmEyZjA5ZGY2YWQ0MzkzM2NhN2RhMTdmNDg2MS4uYjYyNTgzNmE1Y2UyMjVi
ZjQ3ZjMzMGMwOGMyOWQ4Yzc1NjUyZWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaApAQCAt
ODQsNyArODQsNyBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZSB7CiAgICAgICAgIC8vIFdlIG11c3Qg
YmUgaW4gYSBmbGF0dGVuZWQgc3RhdGUgKG5vIGFjY3VtdWxhdGVkIG9mZnNldCkgd2hlbiBzZXR0
aW5nIHRoaXMgc2Vjb25kYXJ5IHF1YWQuCiAgICAgICAgIEFTU0VSVChtX2FjY3VtdWxhdGVkT2Zm
c2V0ID09IExheW91dFNpemUoKSk7CiAgICAgICAgIGlmIChxdWFkKQotICAgICAgICAgICAgbV9s
YXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigqcXVh
ZCk7CisgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxG
bG9hdFF1YWQ+KCpxdWFkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9sYXN0UGxhbmFy
U2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCBkMzFhMjU3OWZi
MWUxYzc5NDI1ZDAyOTA1ZWJlYmM4OGQxNGFkZDUwLi44Zjc3MDI3NWRlNjk5NTY4Yzg1MTVhZWEw
ZjJjZmEwZTUyMDU2NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udERlCiAgICAgYm9vbCBzeW50aGVzaXplQm9sZCA9IGlzR0RJRm9udFdlaWdo
dEJvbGQod2VpZ2h0KSAmJiAhaXNHRElGb250V2VpZ2h0Qm9sZChsb2dGb250LmxmV2VpZ2h0KTsK
ICAgICBib29sIHN5bnRoZXNpemVJdGFsaWMgPSBpc0l0YWxpYyhmb250RGVzY3JpcHRpb24uaXRh
bGljKCkpICYmICFsb2dGb250LmxmSXRhbGljOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQpLCBmb250RGVzY3JpcHRp
b24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJdGFsaWMs
IHVzZUdESSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+
KFdURk1vdmUoaGZvbnQpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3lu
dGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJdGFsaWMsIHVzZUdESSk7CiAKICNpZiBVU0UoQ0cpCiAg
ICAgYm9vbCBmb250Q3JlYXRpb25GYWlsZWQgPSAhcmVzdWx0LT5jZ0ZvbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAzODdhMjM5ZjgyOWMyZDc4MDljMmM5NmQzZmUxMjRk
ZWUxNGJkM2Q3Li42NDg0ODVhYzI2Y2IyMzc1Y2Y2NTc0ZjgxZmY0Y2Q2NTY3MmM1MDgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmUKICAgICBmb250UmVmZXJlbmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250
KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICghZm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAog
Ym9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcm
IGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggYWI3
Yzc5MGQ2MGYyZThmNzRhZjAzYzA2YWNmYzcyYzhlMzljMjJkOS4uZWVlYWZlYmQ5MzNjYTljNzhk
ZDA1MTQxM2QyMzM0NGNhODUzYjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBp
ZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwg
Zm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRy
b2xsZXIuY3BwCmluZGV4IGI5NTM1NTAzYzMwNmM1MDFhYTM5M2YzMWZmZDkyODg1ZWRlOWJkZWYu
LmY0YWFkM2I1NjNlM2QxNDM0ZmYzMThlNGM2MjI3MzI1YzA1OWM0OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5D
b250cm9sbGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIExSRVNVTFQgRnVsbFNjcmVlbkNvbnRy
b2xsZXI6OlByaXZhdGU6OmZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQgaHduZCwgVUlOVCBt
CiB9CiAKIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpGdWxsU2NyZWVuQ29udHJvbGxlcihGdWxsU2Ny
ZWVuQ29udHJvbGxlckNsaWVudCogY2xpZW50KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91
bmlxdWU8UHJpdmF0ZT4odGhpcywgY2xpZW50KSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVl
PFByaXZhdGU+KHRoaXMsIGNsaWVudCkpCiB7CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVu
dCk7CiB9CkBAIC0xMzEsMTMgKzEzMSwxMyBAQCB2b2lkIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpl
bnRlckZ1bGxTY3JlZW4oKQogICAgIG1fcHJpdmF0ZS0+bV9vcmlnaW5hbEZyYW1lID0gb3JpZ2lu
YWxGcmFtZTsKIAogICAgIEFTU0VSVCghbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cpOwot
ICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1f
cHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+bV9i
YWNrZ3JvdW5kV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAgICAgOjpBbmltYXRlV2luZG93KG1f
cHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5od25kKCksIGtGdWxsU2NyZWVuQW5pbWF0aW9u
RHVyYXRpb24sIEFXX0JMRU5EIHwgQVdfQUNUSVZBVEUpOwogCiAgICAgbV9wcml2YXRlLT5tX2Ns
aWVudC0+ZnVsbFNjcmVlbkNsaWVudFdpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAgICBBU1NFUlQo
IW1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fZnVsbFNj
cmVlbldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldp
bmRvdyA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9w
cml2YXRlLmdldCgpKTsKICAgICBBU1NFUlQobV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cp
OwogICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCmluZGV4IDEwNjdiOTYwOTNkYjJlZDU5MWEy
MWEzMWQ5ZDAyNTZkYzEyOTNlODkuLmYxNDQyNTcyY2M2ZDFkNTRiYmVlNThiZGJjMzZlZGY3NzRh
YWJiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9vbCBoYXNBbHBo
YSkKIAogICAgIGNhaXJvX3QqIGNyID0gY3JlYXRlQ2Fpcm9Db250ZXh0V2l0aEhEQyhkYywgaGFz
QWxwaGEpOwogCi0gICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZShzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOworICAgIG1fZGF0
YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUobWFrZVVuaXF1ZTxQbGF0Zm9y
bUNvbnRleHRDYWlybz4oY3IpKTsKICAgICBtX2RhdGEtPnBsYXRmb3JtQ29udGV4dC5zZXRHcmFw
aGljc0NvbnRleHRQcml2YXRlKG1fZGF0YSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAg
IGlmIChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKaW5kZXggYzJiYWZhZjk2YTE2MDcwODBiNzYzMzk1MjY2MmU3Njc3NjE0YjAwYy4uOTZj
ODI4MWFmNGIyMmM2Njg2YWNiMTRjNWU4MmMxZDY5YjkwZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0RGlyZWN0MkQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhp
Y3NDb250ZXh0KEhEQyBoZGMsIElEMkQxRENSZW5kZXJUYXJnZXQqKiByZW5kZXJUYXJnZXQsIFJF
CiAKICAgICAoKnJlbmRlclRhcmdldCktPkJpbmREQyhoZGMsICZyZWN0KTsKIAotICAgIGF1dG8g
b3duZWRQbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEPigqcmVuZGVyVGFyZ2V0KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0g
bWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7CiAgICAg
bV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVk
UGxhdGZvcm1Db250ZXh0KSwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7
CiAgICAgbV9kYXRhLT5tX2hkYyA9IGhkYzsKIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAg
aWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG93bmVkUGxh
dGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4o
cmVuZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKICAg
ICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3du
ZWRQbGF0Zm9ybUNvbnRleHQpLCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5
KTsKICAgICBtX2RhdGEtPm1faGRjID0gaGRjOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwCmluZGV4IGJkNzZlZmJiYTlkMGU4OTdkM2QyODhlODVlOGQyNDQ0Y2M0Zjhm
NGUuLjFlYmI1YjA5ZDM4NTM3YzAxOTIyMGI5NDdkY2FkOTQ0ZDhlMTAxMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEdyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJEOjpjcmVhdGVGCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250
ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU1
LDE0ICs1NSwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5
IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVybiBHcmFwaGlj
c0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbcmVuZGVyVGFy
Z2V0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4
dCwgcmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKICAgICAgICAgfSk7
CiB9CiAKIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
IHBsYXRmb3JtQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxv
YXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0
KHBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29u
dGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3By
aXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZv
cm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpH
UFVNZW1vcnkpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFBy
aXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxh
dGZvcm1Db250ZXh0KTsKQEAgLTcwLDkgKzcwLDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXgK
IAogR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFy
Z2V0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBB
ZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQorICAgICwg
bV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
PihyZW5kZXJUYXJnZXQpKQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9y
bUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJp
dG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1h
a2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4
dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5
KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1f
cHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCmluZGV4IDViZGU0Y2VkZjUxNmE5MTc5YTZkM2Qz
YjNlMzNkMTM0ZWQ1YWI1MTEuLjFkODA0MjBjZjdlYzZjZDc3NWE2MmJhZWEyMmY5OTA2MDdlYjRj
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEdyYXBoaWNzQ29u
dGV4dDo6V2luZG93c0JpdG1hcDo6fldpbmRvd3NCaXRtYXAoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NDb250ZXh0OjpXaW5kb3dzQml0bWFwPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVdp
bmRvd3NCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXaW5kb3dzQml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxXaW5kb3dzQml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VCdWZmZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKaW5kZXggMDZjMTc0NTc5YTRiYzEzMDkxZjM0YjU3
OTRhYWE5Mjk5M2JiYmEyNC4uMzVhOWZmNjExMzUxYzMzYzcxNzRkOTJhMWZkY2Y0NDcwZTgxYTg4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcApAQCAtMTEyLDggKzExMiw4IEBAIEltYWdlQnVm
ZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vdGU6IFRoaXMgcGxh
Y2VzIHRoZSBiaXRtYXBjb250ZXh0IGludG8gYSBsb2NrZWQgc3RhdGUgYmVjYXVzZSBvZiB0aGUg
QmVnaW5EcmF3IGNhbGwgaW4gdGhlIGNvbnN0cnVjdG9yLgotICAgIG1fZGF0YS5wbGF0Zm9ybUNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBD
b250ZXh0LmdldCgpKTsKLSAgICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3Jh
cGhpY3NDb250ZXh0PihtX2RhdGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRl
eHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOworICAgIG1fZGF0YS5w
bGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRt
YXBDb250ZXh0LmdldCgpKTsKKyAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0PihtX2RhdGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6
OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCiAgICAgc3VjY2VzcyA9
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24u
Y3BwCmluZGV4IDU4MzhlYzE1N2EyYzdiNzE2M2I3MTY4MmE0ZWI4YzgwMzRlOTYzMjEuLjZkNjRh
ZTlhNmUzYTQxN2ZiMTRmMTIxNjZmNjhkM2M5YTU1MjY2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbigpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYg
KGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5
ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNU
eXBlLCAwLCAwLCAwLCAwKTsKICAgICB9CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgZmxvYXQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgY29uc3QKIHsgCi0gICAgYXV0byByYW5nZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHJhbmdlcyA9
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGlmIChtX3ByZXNlbnRlciAm
JiBtX3ByZXNlbnRlci0+bWF4VGltZUxvYWRlZCgpID4gMCkKICAgICAgICAgcmFuZ2VzLT5hZGQo
TWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV9wcmVz
ZW50ZXItPm1heFRpbWVMb2FkZWQoKSkpOwogICAgIHJldHVybiByYW5nZXM7CkBAIC04ODgsNyAr
ODg4LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1By
ZXNlbnRlcjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXIoTWUKICAgICBtX3NvdXJjZVJlY3QuYm90dG9t
ID0gMTsKICAgICBtX3NvdXJjZVJlY3QucmlnaHQgPSAxOwogCi0gICAgbV9wcmVzZW50ZXJFbmdp
bmUgPSBzdGQ6Om1ha2VfdW5pcXVlPERpcmVjdDNEUHJlc2VudGVyPigpOworICAgIG1fcHJlc2Vu
dGVyRW5naW5lID0gbWFrZVVuaXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKICAgICBpZiAoIW1f
cHJlc2VudGVyRW5naW5lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCmluZGV4IDMz
N2ZhZjM3OGRhNzk1NWJlYTYxMGFlYzkwNzU3OTY2ZDZjNDgyMDAuLjdlNDQ0ZDAyNzZkYjRiZGRh
NjU4Nzk3YmQ1NDMwNmQ2ZmY5Y2IyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcApAQCAtNTAsMTMgKzUwLDEz
IEBAIHN0YXRpYyB2b2lkIFdLQ0FJbWFnZVF1ZXVlUmVsZWFzZShDQUltYWdlUXVldWVSZWYgaXEp
CiB9CiAKIFdLQ0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSh1aW50MzJfdCB3aWR0aCwgdWlu
dDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBjYXBhY2l0eSkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1h
a2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtl
VW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKIHsKICAgICBtX3ByaXZhdGUtPm1faW1h
Z2VRdWV1ZSA9IGFkb3B0Q0Yod2tDQUltYWdlUXVldWVDcmVhdGUod2lkdGgsIGhlaWdodCwgY2Fw
YWNpdHkpKTsKIH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKGNvbnN0IFdLQ0FJ
bWFnZVF1ZXVlJiBvKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdl
UXVldWVQcml2YXRlPigpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8V0tDQUltYWdlUXVl
dWVQcml2YXRlPigpKQogewogICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlID0gby5tX3ByaXZh
dGUtPm1faW1hZ2VRdWV1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkR3RrLmNwcAppbmRleCA3MWEwMGEzMGMwZmFlZGQ5YjQwZWM0ZmZhZGYxNzg2MzhmMjVi
ODU0Li40MjI1MmQzNGI1NGZlNmMyYzI2YjUyMmM2NjBlODYyZjA1NmVmMDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC00MywyNCArNDMs
MjQgQEAgZW51bSBDbGlwYm9hcmREYXRhVHlwZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPigiQ0xJUEJPQVJEIik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJQUklNQVJZIik7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIlBSSU1BUlkiKTsKIH0KIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3AoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3Rl
Ym9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
YXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhOjpjcmVhdGUoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZv
cm1EYXRhKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5w
bGF0Zm9ybURhdGEoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDQ5MDM3MWFkODllZjJlNzk2ZTM0MDFh
YWMxZGJiODA2ZWE5NjZlYjAuLmI2ZTA1OGJlMzMwNjcyNTRiYmI2MzA1MzQ5ZWE4NmNhYWU1ZGEy
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xp
cGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IFNlbAogCiAgICAg
aWYgKG51bWJlck9mVGFyZ2V0cyA+IDAgJiYgdGFibGUpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8
U2VsZWN0aW9uRGF0YSo+IGNoYW5nZShzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBjb25zdF9j
YXN0PFNlbGVjdGlvbkRhdGEqPigmc2VsZWN0aW9uKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rp
b24sIFdURk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gbWFrZVVuaXF1ZTxDbGlwYm9hcmRTZXREYXRhPigqc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlv
biwgV1RGTW92ZShwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOwogICAgICAgICBpZiAoZ3RrX2Ns
aXBib2FyZF9zZXRfd2l0aF9kYXRhKGNsaXBib2FyZCwgdGFibGUsIG51bWJlck9mVGFyZ2V0cywg
Z2V0Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxi
YWNrLCBkYXRhLmdldCgpKSkgewogICAgICAgICAgICAgZ3RrX2NsaXBib2FyZF9zZXRfY2FuX3N0
b3JlKGNsaXBib2FyZCwgbnVsbHB0ciwgMCk7CiAgICAgICAgICAgICAvLyBXaGVuIGd0a19jbGlw
Ym9hcmRfc2V0X3dpdGhfZGF0YSgpIHN1Y2NlZWRzIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxs
YmFjayB0YWtlcyB0aGUgb3duZXJzaGlwIG9mIGRhdGEsIHNvIHdlIGxlYWsgaXQgaGVyZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCmlu
ZGV4IGJkY2M5OWU4NTlkNDk3NTA3OGZmM2M1ZTJlYmMzODVkOWI5NWI5NTIuLjczZTA3NThhNmVk
ZDFlMTkzMjMxMDgzZjg5YTdlN2ZkZjIwZDEzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcApAQCAtMzUsMjAgKzM1LDIwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZUdhZGdldD4gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0
ZShjb25zdCBSZW5kZXJUaGVtZUdhCiB7CiAgICAgc3dpdGNoIChpbmZvLnR5cGUpIHsKICAgICBj
YXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmljOgotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywg
cG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4o
aW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVH
YWRnZXQ6OlR5cGU6OlRleHRGaWVsZDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0
aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRn
ZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRo
ZW1lR2FkZ2V0OjpUeXBlOjpSYWRpbzoKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBl
OjpDaGVjazoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dn
bGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2li
bGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpBcnJv
dzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVBcnJvd0dhZGdl
dD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZUFycm93R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBw
b3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6SWNvbjoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uR2FkZ2V0PihpbmZvLCBw
YXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwog
ICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlNjcm9sbGJhcjoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBh
cmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9u
KTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJl
bnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcAppbmRleCAwNWQxMmRkOWVhZmJlZjAy
YTQ1OWNhNTI3NjQxN2E1YjliMGU4OTc2Li5jYTZlZDkxOGE1MDMzZTI5NzZkYjg0ZDg5YzIwNDg4
NzAwZjAyYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZVdpZGdldC5jcHAKQEAgLTQyLDQ5ICs0Miw0OSBAQCBSZW5kZXJUaGVtZVdpZGdldCYgUmVu
ZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKFR5cGUgd2lkZ2V0VHlwZSkKICAgICBhdXRvIGFk
ZFJlc3VsdCA9IHdpZGdldE1hcCgpLmVuc3VyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2lkZ2V0
VHlwZSksIFt3aWRnZXRUeXBlXSgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZVdpZGdl
dD4gewogICAgICAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHsKICAgICAgICAgY2FzZSBSZW5kZXJU
aGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJSaWdodDoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJMZWZ0OgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdU
S19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGws
IFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTY3JvbGxiYXI6Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9O
X0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwogICAgICAg
ICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvclJp
Z2h0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3Jv
bGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1v
ZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJh
cjo6TW9kZTo6SW5kaWNhdG9yKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlw
ZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNB
TCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6
OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0
OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xsSW5kaWNhdG9yOgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJ
Wk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkNoZWNrQnV0dG9uOgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJl
bmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0
b246OlR5cGU6OkNoZWNrKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
UmFkaW9CdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlvKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihS
ZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6UmFkaW8pOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Ok5v
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5k
ZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6Tm8pOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lk
Z2V0OjpUeXBlOjpCdXR0b25EZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRl
clRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lk
Z2V0OjpUeXBlOjpDb21ib0JveDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lQ29tYm9Cb3g+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZUNvbWJvQm94PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpU
eXBlOjpFbnRyeToKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lRW50cnk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVu
dHJ5PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTZWxlY3RlZEVu
dHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVFbnRy
eT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PihSZW5kZXJUaGVtZUVudHJ5OjpTZWxlY3RlZDo6
WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VhcmNoRW50cnk6
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNlYXJjaEVu
dHJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hF
bnRyeT4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U3BpbkJ1dHRv
bjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1
dHRvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1
dHRvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxT
bGlkZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNs
aWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogICAg
ICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2xpZGVyOgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19P
UklFTlRBVElPTl9IT1JJWk9OVEFMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CiAgICAgICAgIGNh
c2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlByb2dyZXNzQmFyOgotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQ
cm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9k
ZTo6RGV0ZXJtaW5hdGUpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJ
bmRldGVybWluYXRlUHJvZ3Jlc3NCYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2Rl
OjpJbmRldGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRo
ZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkluZGV0ZXJtaW5h
dGUpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpMaXN0VmlldzoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lTGlzdFZpZXc+KCk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJY29uOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpXaW5kb3c6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lV2luZG93PigpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzOSw3ICsxMzksNyBAQCBS
ZW5kZXJUaGVtZVNjcm9sbGJhcjo6UmVuZGVyVGhlbWVTY3JvbGxiYXIoR3RrT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIE1vZGUgbW9kZQogICAgIGluZm8udHlwZSA9IFJlbmRlclRoZW1lR2FkZ2V0
OjpUeXBlOjpHZW5lcmljOwogICAgIGluZm8ubmFtZSA9ICJjb250ZW50cyI7CiAgICAgaW5mby5j
bGFzc0xpc3QuY2xlYXIoKTsKLSAgICBtX2NvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJl
biwgbV9zY3JvbGxiYXIuZ2V0KCkpOworICAgIG1fY29udGVudHMgPSBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIGNoaWxkcmVu
LCBtX3Njcm9sbGJhci5nZXQoKSk7CiAgICAgaW5mby5uYW1lID0gInNsaWRlciI7CiAgICAgbV9z
bGlkZXIgPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGluZm8sIG1fY29udGVudHMtPmNoaWxk
KG1fdHJvdWdoUG9zaXRpb24pKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBSZW5kZXJUaGVtZUNv
bWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94KCkKICAgICB9OwogICAgIGluZm8ubmFtZSA9ICJi
b3giOwogICAgIGluZm8uY2xhc3NMaXN0ID0geyAiaG9yaXpvbnRhbCIsICJsaW5rZWQiIH07Ci0g
ICAgbV9ib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBH
VEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgY2hpbGRyZW4sIG1fY29tYm9Cb3guZ2V0KCkpOwor
ICAgIG1fYm94ID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09S
SUVOVEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKICAgICBS
ZW5kZXJUaGVtZUdhZGdldCogYnV0dG9uID0gbV9ib3gtPmNoaWxkKDApOwogICAgIGluZm8uY2xh
c3NMaXN0LnJlbW92ZUxhc3QoKTsKICAgICBtX2J1dHRvbkJveCA9IFJlbmRlclRoZW1lR2FkZ2V0
OjpjcmVhdGUoaW5mbywgYnV0dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
ODQwN2MxMTAxZGRkNmRiNmUzNzhkZWZjYjNhYjgyNmJmNzI2NDU0ZC4uNzg2OTdlYjAwMDBmN2Y3
YjgyYTdkMGVjZjVmOTg1YTFlOTI4OWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAK
QEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBCTVBJbWFnZURlY29kZXI6OmRlY29kZUhlbHBlcihib29s
IG9ubHlTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fcmVhZGVyKSB7
Ci0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhp
cywgbV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBmYWxzZSk7CisgICAgICAgIG1fcmVh
ZGVyID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0LCBp
bWdEYXRhT2Zmc2V0LCBmYWxzZSk7CiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5n
ZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDdiYTdlZDkx
MDFjZTI1YTliZjZlMjMxMDg3YmYwYmMxMTRjYzIyZDYuLjRmMzQ4N2UzMzQ3NjQwNTQ3NGNmODZi
NWM2MDZkMmMxOTg4YzdjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMzQs
NyArMzM0LDcgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYWx0QXRG
cmFtZSwgR0lGUXVlcnkgcXVlcnksIGJvb2wgYWxsRGF0YVIKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
R0lGSW1hZ2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8R0lG
SW1hZ2VSZWFkZXI+KHRoaXMpOwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0
KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggMWNjYTVlNTllZWIz
NTFiMDU4YTIxZGIxMzRmNjQzNzkxZTUwNzdjYS4uZDc3MTg2ZWE5NzM5YmRmYjJjNTYyMjhlZTRj
ZjVlODgyOGQ4ODU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMjEsNyArMzIx
LDcgQEAgYm9vbCBHSUZGcmFtZUNvbnRleHQ6OmRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjoKICAgICAgICAgaWYgKCFpc0RhdGFTaXplRGVm
aW5lZCgpIHx8ICFpc0hlYWRlckRlZmluZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgICAgIG1fbHp3Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGTFpXQ29udGV4dD4o
Y2xpZW50LCB0aGlzKTsKKyAgICAgICAgbV9sendDb250ZXh0ID0gbWFrZVVuaXF1ZTxHSUZMWldD
b250ZXh0PihjbGllbnQsIHRoaXMpOwogICAgICAgICBpZiAoIW1fbHp3Q29udGV4dC0+cHJlcGFy
ZVRvRGVjb2RlKCkpIHsKICAgICAgICAgICAgIG1fbHp3Q29udGV4dCA9IG51bGxwdHI7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBHSUZJbWFnZVJl
YWRlcjo6c2V0UmVtYWluaW5nQnl0ZXMoc2l6ZV90IHJlbWFpbmluZ0J5dGVzKQogdm9pZCBHSUZJ
bWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1fZnJhbWVzLmlz
RW1wdHkoKSB8fCBtX2ZyYW1lcy5sYXN0KCktPmlzQ29tcGxldGUoKSkKLSAgICAgICAgbV9mcmFt
ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXpl
KCkpKTsKKyAgICAgICAgbV9mcmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8R0lGRnJhbWVDb250ZXh0
PihtX2ZyYW1lcy5zaXplKCkpKTsKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhpcyBtZXRob2QgdG8g
Y2xvc2UgdG8gZG9MWlcoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTg3MGJi
MTYwYjg0OTQ4ZjBiNTlkZTQ1MTE2MzZiYTRjMGYzOGYyZS4uZmY2YTFjODdhZTZmMDViNDljY2Mx
MjhhYmUwNWMzMDNkNmVlYmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE5
NSw3ICsxOTUsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleChzaXplX3Qg
aW5kZXgpCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGhhdmUgYWxyZWFkeSBzaXplZCBtX2Zy
YW1lQnVmZmVyQ2FjaGUgYmVmb3JlIHRoaXMsIGFuZAogICAgICAgICAgICAgLy8gd2UgbXVzdCBu
b3QgcmVzaXplIGl0IGFnYWluIGxhdGVyIChzZWUgY2F1dGlvbiBpbiBmcmFtZUNvdW50KCkpLgog
ICAgICAgICAgICAgQVNTRVJUKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPT0gbV9kaXJFbnRy
aWVzLnNpemUoKSk7Ci0gICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gc3RkOjptYWtl
X3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwg
dHJ1ZSk7CisgICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gbWFrZVVuaXF1ZTxCTVBJ
bWFnZVJlYWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CiAgICAg
ICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAg
ICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXRCdWZmZXIoJm1fZnJhbWVCdWZmZXJDYWNo
ZVtpbmRleF0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCBiNzJjNTVhMmNiOTA5ZmEzNDYxY2Y3OTVmMDRkY2VhZDUxMDRlOGVlLi5kMGI5MTZhNWRhZjhh
M2FhMjU0ZjQ5NzM0NzNhODMxNTU3MjlkYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpQ
RUdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxKUEVH
SW1hZ2VSZWFkZXI+KHRoaXMpOwogCiAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVjb2RlIHRoZSBp
bWFnZSBidXQgd2UndmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRhLCBkZWNvZGluZwogICAgIC8vIGhh
cyBmYWlsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGMxOGEzOWI1OTEzM2Ez
MThmMTUxMDU4MWU4ZjkxZWJkZDc2ODc5YWIuLjYyY2I5YjIyYTAxZjI2ZTlmMmNkNDFkZWEzODFi
MzYzNjg5N2VlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01NTYsNyArNTU2
LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCB1bnNpZ25l
ZCBoYWx0QXRGcmFtZSwgYm9vbCBhbGxEYXRhUmUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBOR0ltYWdl
UmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPFBOR0ltYWdlUmVh
ZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0
IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5k
ZXggMjA5Zjg4ZjQ3YTNiN2NkYzAxNDNkZTkyZTI0YmFkZGY5NjY0YjVmNC4uY2FlM2RjZjE2NDc5
NmNlZWNiNjhiMjQ0OGYxMTMzYzEwZWM5YzIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIExlZ2FjeVRpbGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyogd2lu
ZG93KQogICAgIDogbV93aW5kb3cod2luZG93KQogICAgICwgbV90b21ic3RvbmUoYWRvcHROUyhb
W0xlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV96b29tZWRP
dXRUaWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxl
U2l6ZSkpCisgICAgLCBtX3pvb21lZE91dFRpbGVHcmlkKG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdy
aWQ+KCp0aGlzLCBtX3RpbGVTaXplKSkKICAgICAsIG1fdGlsZUNyZWF0aW9uVGltZXIoKnRoaXMs
ICZMZWdhY3lUaWxlQ2FjaGU6OnRpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgW2hvc3RM
YXllcigpIGluc2VydFN1YmxheWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIo
KSBhdEluZGV4OjBdOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpj
b21taXRTY2FsZUNoYW5nZSgpCiAKICAgICBpZiAobV9jdXJyZW50U2NhbGUgIT0gbV96b29tZWRP
dXRUaWxlR3JpZC0+c2NhbGUoKSkgewogICAgICAgICBpZiAoIW1fem9vbWVkSW5UaWxlR3JpZCkg
ewotICAgICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdh
Y3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOworICAgICAgICAgICAgbV96b29tZWRJblRp
bGVHcmlkID0gbWFrZVVuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOwog
ICAgICAgICAgICAgW2hvc3RMYXllcigpIGFkZFN1YmxheWVyOm1fem9vbWVkSW5UaWxlR3JpZC0+
dGlsZUhvc3RMYXllcigpXTsKICAgICAgICAgICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
aW5kZXggMTkxYWM3Njk2MjE1MTIxNTNkYmRjYjA3OGRkNjZmNDY1NTNiYzIxZC4uMDI3MWI5M2U3
MDVjZTJjNDJkNjMyZmUyZGIyOWFhNDZlODM2ZDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY2LDEyICs2NiwxMiBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigiZGF0YSBpbnRlcmFj
dGlvbiBwYXN0ZWJvYXJkIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oImRh
dGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdE
YXRhLnBhc3RlYm9hcmROYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+
KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOwogfQogCiAjZW5kaWYKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUo
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGNoYW5nZUNvdW50
Rm9yUGFzdGVib2FyZCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjaGFu
Z2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1F1aWNrTG9vay5tbQppbmRleCBhOWQ5ZTQ3MTA1MDE3ZDY0ZDgyZTM3YzhhYTMxY2U2NDY5
MDI1Njg1Li5jMmI1YTBiMDhiZGY3NWU4YzAxY2Q5YmQyZDUxYzMxNDkzMDVmMzg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KQEAgLTg0LDcgKzg0LDcgQEAgUmV0
YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChO
U1VSTCAqdXJsLCBOU1N0cmluZwogICAgIGlmIChbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5
cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6dXBkYXRlZE1JTUVUeXBlLmdldCgpXSkgewogICAgICAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHV0aSA9IGFkb3B0TlMoUEFMOjpzb2Z0TGlua19RdWlja0xv
b2tfUUxUeXBlQ29weVVUSUZvclVSTEFuZE1pbWVUeXBlKHVybCwgdXBkYXRlZE1JTUVUeXBlLmdl
dCgpKSk7CiAKLSAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZp
ZXdDb252ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQoKSk7CisgICAgICAgIGF1dG8gY29udmVydGVyID0g
bWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0KCkpOwogICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QgcHJldmlld1JlcXVlc3QgPSBjb252ZXJ0ZXItPnByZXZpZXdSZXF1ZXN0
KCk7CiAKICAgICAgICAgLy8gV2UgdXNlIFtyZXF1ZXN0IFVSTF0gaGVyZSBpbnN0ZWFkIG9mIHVy
bCBzaW5jZSBpdCB3aWxsIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQppbmRleCAxMDdjNzdjNzUzZWFiN2Q5MmRh
Mjk0ODdjYTZmNjVmODA3MDQ4MjEzLi42ZDljY2UxNWI4NzRmMTVmMTU0ODc1ZWEwZWU2YjlmMTAz
NWE4MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29t
bWFuZExpc3RlbmVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1MubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVt
b3RlQ29tbWEKICAgICBpZiAoIU1lZGlhUGxheWVyTGlicmFyeSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUz4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlz
dGVuZXJJT1M+KGNsaWVudCk7CiB9CiAKIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3Rl
Q29tbWFuZExpc3RlbmVySU9TKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCmlu
ZGV4IDAxZjBhOWJiMjBhMjQ4YjY5OTg4NTY0NzBhZWUzNzRhOThjZmE1MWMuLmVkNjMyZWE1ZTNm
NTU5N2U5ZDc2ZmQyZTU1Njk1NjFmZTZjNGMyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFu
aW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFibGVBcmVh
KTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JJT1M6OlNjcm9sbEFuaW1hdG9ySU9TKFNjcm9sbGFibGVB
cmVhJiBzY3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
YndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCAwNTQzZWQ1ZTlmYzlmY2ZlM2JiYWE0MDM1
NWU0MDcyZjlmM2MzZjQwLi5mOGE2MWVjNzBjMGMxYTRjZDM3N2YwZTdjZDY3NmVmYjlkZTViYzhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExp
YldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRM
aWJXUEUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOwogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXgg
NTE1MjBkY2JiZWE1OTIxODVjMzI2NzAyY2JhNjlmZTg4YjRkNGRkZS4uOGViMTVjZjg4NTJkOTg1
NzQ0N2UwNTljMzhhY2FlYmEyMzQxNWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEwMCw3ICsxMDAsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwcm9taQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZSgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9h
cmQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2FyZCk7
CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKQEAgLTEwOCwxMyAr
MTA4LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUoKQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJh
Z1Bib2FyZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oTlNEcmFnUGJvYXJk
KTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0
IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0
ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5h
bWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCmlu
ZGV4IDA1Y2MwODk1N2UxZDUwMTI0ZGQ2MzJlMmE0Yzg5MjEyOTg5Njk2MTEuLjFhYTJjZDgwMTMy
ZjJjMjFlZTM4YjlmZmJkYjgzMzczYmJmNGMxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQpAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21t
YW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRM
aXN0ZW5lckNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggYTgzMTc1MTIyZWMy
ZTRiNmI2ZGU1MWJlNmRmNTI2NGI0MWExZjhjNC4uNjg2MGUzM2MzYTNiMjE1NjMwNWZiMzFhZjQy
N2RjNDkwMjM1ODdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQpAQCAtNjk3LDcgKzY5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRl
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yTWFjPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9s
bEFuaW1hdG9yTWFjOjpTY3JvbGxBbmltYXRvck1hYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJs
ZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggMWI5
ZGM1MzQ1Yjg4MWViMzZkOTZmY2UzNTgyZGYwZTU0YTEzODViYS4uZTI0NDViYzgyM2Y4NmUwNTVi
MGU1Nzg3N2Q2Y2Y1MzFhNGZmY2M5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVB
VkZJbXBsLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAg
IGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4od3JpdGVyLnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUoYXVkaW9UcmFja0lkKSwgV1RGTW92ZSh2aWRlb1RyYWNrSWQpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRl
ci5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9U
cmFja0lkKSk7CiB9CiAKIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6TWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsKFJlZjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4mJiB3cml0ZXIs
IFN0cmluZyYmIGF1ZGlvVHJhY2tJZCwgU3RyaW5nJiYgdmlkZW9UcmFja0lkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKaW5kZXggZDRhZGIxNTJiZDRiYWVmN2VmN2JmMDU1
ZjZkOWE4M2Q4NjdlNjdlYi4uYTIyZjU3MWJjNTE2MTFmNjE3NDQ5MTA0Y2Y1ZmM4NjBlNTJlOWFl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCkBAIC0zNCw2ICszNCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIAogY2xh
c3MgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsIGZpbmFsIDogcHVibGljIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gY3JlYXRl
KGNvbnN0IE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGRiOTRmZGFmODNhOGFiZDY3YWZj
ZmQ2ZWEzNjlmYWE4OWM0NmMzZTIuLjU5YWIzODQwZmQ3MzZjYTE0NTAxNmM3ZjY2MGVjYTNiMDkw
MzI0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwCkBAIC05MSwxNCArOTEsMTQgQEAgQXVkaW9DYXB0dXJlRmFjdG9yeSYgR1N0cmVh
bWVyQXVkaW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJl
U291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmlj
ZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3Rl
bnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQot
ICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+
KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0
dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAog
R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2Uo
U3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQogICAg
IDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywg
V1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAg
ICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkp
CisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkK
IHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0Rh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJBdWRpb0RhdGEuaAppbmRleCA5NTNmM2E4YTBlNGY2YTA2MmI5Yjk0YThmNDE1MWE0OWYx
YTQzMDFkLi5kNGM5Mzc5Zjg0ZGFkNmY2ODgxMTk4OWQxNDM0ZWZlMTZhZWZlYzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyQXVkaW9EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdTdHJlYW1lckF1ZGlvRGF0YSA6IHB1YmxpYyBQbGF0Zm9y
bUF1ZGlvRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
R1N0cmVhbWVyQXVkaW9EYXRhKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwgR3N0QXVkaW9J
bmZvIGluZm8pCiAgICAgICAgIDogbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ck1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggYjNhZjM1
YWY4MjQ4OGRkNGNmODIxY2QzZWVhZTYzZDljZjFhY2Q4NC4uNGE2ZDQxY2U0OGNmYTBiYjdkMGY4
MjdiMTNkYzk5NDE3OThlZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
TWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0zNTEsOCArMzUxLDggQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X21lZGlhX3N0cmVhbV9zcmNfY2xhc3NfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyY0NsYXNz
KiBrbGFzcykKIAogc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdChXZWJL
aXRNZWRpYVN0cmVhbVNyYyogc2VsZikKIHsKLSAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4o
c2VsZik7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1PYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcj4oc2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJlYW1U
cmFja09ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+
KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktp
dE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOwogICAgIHNlbGYtPmZsb3dDb21iaW5lciA9IGdz
dF9mbG93X2NvbWJpbmVyX25ldygpOwogICAgIHNlbGYtPmZpcnN0QXVkaW9CdWZmZXJQdHMgPSBH
U1RfQ0xPQ0tfVElNRV9OT05FOwogICAgIHNlbGYtPmZpcnN0RnJhbWVQdHMgPSBHU1RfQ0xPQ0tf
VElNRV9OT05FOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlLmNwcAppbmRleCBlNWQ5YjBlMDI3NmVkZGE1ZGJkNTIwYmMxMGYzNTE4MGQwMTVkNjli
Li45N2JlMWYxMmZiYjIyZGMzNThjOTljODM5Zjk4MWYxNjU2YThlMTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTI3LDE0
ICsxMjcsMTQgQEAgRGlzcGxheUNhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2U6OmRpc3BsYXlGYWN0b3J5KCkKIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5h
bWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciAqc291cmNlX2ZhY3RvcnkpCiAgICAg
OiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShu
YW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlx
dWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQorICAgICwgbV9jYXB0
dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkK
IHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVy
ZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVWaWRlb0Nh
cHR1cmVTb3VyY2UoU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRl
dmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6
Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2Nh
cHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAg
ICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJG
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA2OTk1YzYwMmNiMTc0NDdm
YTc0MWQzOWQ0NDk0YzM1NjFkYzFiYjgyLi5mOTlkYmVjNTllMDQwYmI3ZmZjNTVlNzVjNmE5MTMx
NWRkZWM5NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3RvcnkuY3BwCkBAIC01MTIsMTQgKzUxMiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8d2Vi
cnRjOjpWaWRlb0VuY29kZXI+IEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZVZp
ZGVvRQogICAgICAgICBnX29iamVjdF9nZXQod2VicnRjZW5jb2Rlci5nZXQoKSwgImVuY29kZXIi
LCAmZW5jb2Rlci5vdXRQdHIoKSwgTlVMTCk7CiAKICAgICAgICAgaWYgKGVuY29kZXIpCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihmb3Jt
YXQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4o
Zm9ybWF0KTsKIAogICAgICAgICBHU1RfSU5GTygiVXNpbmcgVlA4IEVuY29kZXIgZnJvbSBMaWJX
ZWJSVEMuIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6TGlidnB4
VnA4RW5jb2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8d2VicnRjOjpMaWJ2cHhW
cDhFbmNvZGVyPigpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXQubmFtZSA9PSBjcmlja2V0Ojpr
SDI2NENvZGVjTmFtZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVy
SDI2NEVuY29kZXI+KGZvcm1hdCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1l
ckgyNjRFbmNvZGVyPihmb3JtYXQpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRFRNRlNlbmRlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCmluZGV4IGRjNmY4ZjNm
YjA1N2ZiNTQwZDkwYzAwMjI2OGE5OTc3NDQxMDI3N2YuLjRhMDYxZmNjOTUzYjEzZDU4M2JhZTU1
NDUxNTViY2UwOGRmOGY5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZC5oCkBAIC00MCw2ICs0MCw3IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJT
X0VORAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMaWJXZWJSVENEVE1GU2VuZGVyQmFj
a2VuZCBmaW5hbCA6IHB1YmxpYyBSVENEVE1GU2VuZGVyQmFja2VuZCwgcHJpdmF0ZSB3ZWJydGM6
OkR0bWZTZW5kZXJPYnNlcnZlckludGVyZmFjZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPExpYldl
YlJUQ0RUTUZTZW5kZXJCYWNrZW5kPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQocnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6RHRtZlNlbmRlckludGVyZmFjZT4mJik7CiAgICAgfkxpYldlYlJU
Q0RUTUZTZW5kZXJCYWNrZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNw
cAppbmRleCAzYWE5MGNmYTQ2YTdlYzAwZTc1NmRhM2ZiZWNkNTJhNjQzYzcyZWNlLi45MDI3Y2U4
MGY4MTkzNTdkOTQ1YmJhOWZhMjZkZGQyYjVhMWNkZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5jcHAKQEAgLTc5LDkgKzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpT
b2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYKIH0KIAogY2xhc3MgQmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQm
IG5ldHdvcmtUaHJlYWQpCi0gICAgICAgIDogbV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8
cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAg
OiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRj
OjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAg
fQogCkBAIC0xNzksNyArMTgwLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0
aW9uRmFjdG9yeUFuZFRocmVhZHMoUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1
bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNT
RVJUKHJlc3VsdCk7CiAKLSAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFu
ZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBtYWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9k
dWxlPigpOwogfQogCiBzdGF0aWMgaW5saW5lIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVh
ZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkKQEAgLTI4OCwxMCArMjg5LDEwIEBAIHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQ
cm92aWRlcjo6Y3JlYXRlUGVlCiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0
aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsK
IAogICAgIGlmICghZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZh
Y3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJh
c2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtN
YW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdv
cmtNYW5hZ2VyPigpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRG
YWN0b3J5KQotICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0g
c3RkOjptYWtlX3VuaXF1ZTxCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhy
ZWFkcy5uZXR3b3JrVGhyZWFkKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29j
a2V0RmFjdG9yeSA9IG1ha2VVbmlxdWU8QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9y
eUFuZFRocmVhZHMubmV0d29ya1RocmVhZCk7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0
U29ja2V0RmFjdG9yeS0+c2V0RGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJs
ZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKTsKIAogICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVj
dGlvbihvYnNlcnZlciwgKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9y
eUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwg
bnVsbHB0cik7CkBAIC0zMTQsNyArMzE1LDcgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxv
Y2F0b3I7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9p
ZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgewotICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29y
a01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0b3J5KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRB
bGxvY2F0b3IgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNp
Y1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwog
ICAgICAgICBpZiAoIW1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAg
ICAgICAgICAgIGJhc2ljUG9ydEFsbG9jYXRvci0+c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRv
ci0+ZmxhZ3MoKSB8IGNyaWNrZXQ6OlBPUlRBTExPQ0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1F
UkFUSU9OKTsKICAgICAgICAgcG9ydEFsbG9jYXRvciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2Nh
dG9yKTsKQEAgLTMzNSw3ICszMzYsNyBAQCBydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBM
aWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNhdGVHZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZh
Y3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGljRmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3Jr
VGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0
aWZpY2F0ZUdlbmVyYXRvcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVH
ZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+
KGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVh
ZHMubmV0d29ya1RocmVhZC5nZXQoKSk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRp
ZmljYXRlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFk
LmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJl
dHVybiAqZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCAxNWUy
YTg3ODljMDdmYjBkMGFlYzZmNmMyMGY3YmIxN2ZhOGRiN2QyLi41YjgyNzNiMDg1MTk2ZmZkMzBl
NGQ3YTdmNjU1MTBiZWMwODAzMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBib29sIExpYldlYlJU
Q1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0RlY29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRGVj
b2RlckZhY3RvcnkoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZp
ZGVvRGVjb2RlckZhY3Rvcnk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlk
ZW9EZWNvZGVyRmFjdG9yeT4oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9F
bmNvZGVyRmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJG
YWN0b3J5KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0Vu
Y29kZXJGYWN0b3J5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3Rvcnk+KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKaW5kZXggODJjYmNi
MWM2NmQzMmVhMThjZGViMTY3OTM4ZDY4ZDNiMTJlNDE5YS4uZjdkODVkYzYwYTYxYTgxNDZkYmEw
ZDAzZTU1ZDc1NzYyZmU5MGY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKQEAgLTE4OCw4ICsxODgsOCBAQCB2b2lkIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1l
ZGlhVGltZSYgcwogICAgICAgICBpZiAoIXJlbW90ZUlPVW5pdCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4oaW5wdXREZXNjcmlwdGlvbik7Ci0gICAgICAgIG1fb3V0cHV0
RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4o
b3V0cHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5p
cXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oaW5wdXREZXNjcmlwdGlvbik7CisgICAgICAg
IG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4ob3V0cHV0RGVzY3JpcHRpb24pOwogCiAgICAgICAgIG1fZGF0YVNvdXJjZSA9IEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZTo6Y3JlYXRlKGRlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDIsIHN0cmVh
bVRyYWNrKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KaW5k
ZXggZThlM2QzNDg2ZGE0M2FhYzFkZDU0Yjc4ZTZiNGRmNGRjOTgxNjc5MC4uNjExYWMxNmI5ZWNi
ODY4OThhMzcyNjQ3MWM3NjIwNzEyZmI5YjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWM6OnJlY29uZmlndXJlKCkKICAgICBjb25zdCBib29sIGlzTm9uSW50ZXJsZWF2
ZWQgPSB0cnVlOwogICAgIEZpbGxPdXRBU0JERm9yTFBDTShtX3N0cmVhbUZvcm1hdCwgc2FtcGxl
UmF0ZSgpLCBjaGFubmVsQ291bnQsIGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdCwgYml0c1Bl
ckJ5dGUgKiBieXRlc1BlckZsb2F0LCBpc0Zsb2F0LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxl
YXZlZCk7CiAKLSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXVk
aW9CdWZmZXJMaXN0PihtX3N0cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJh
bWUgKiBtX21heGltaXVtRnJhbWVDb3VudCk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtl
VW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4obV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0
Lm1CeXRlc1BlckZyYW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQpOwogCiAgICAgQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKICAgICBDTUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb25DcmVhdGUoTlVMTCwgJm1fc3RyZWFtRm9ybWF0LCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxM
LCAmZm9ybWF0RGVzY3JpcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IGY5ZGM0YTg0N2Y0YTM1NWQ5Y2NmZjRjZGUwMzA4ZDBk
NWM1YzQ0NTYuLjM4OGQ3MWUyNGIyNWViZjZkNzc4ODE0ZmRkMGE5NjYzYjE3MDU0NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTQ2
LDcgKzQ2LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZUNvY29hOjpjb252ZXJ0VG9ZVVYoQ1ZQaXgKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1fcGl4ZWxC
dWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4
ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgp
KSB9KTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxC
dWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChwcmVmZXJlZFBp
eGVsQnVmZmVyRm9ybWF0KCkpIH0pOwogCiAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJDb25mb3Jt
ZXItPmNvbnZlcnQocGl4ZWxCdWZmZXIpOwogfQpAQCAtNzUsNyArNzUsNyBAQCBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnJvdGF0
ZVBpeGVsQnVmZmVyKAogICAgICAgICBJbnRTaXplIHNpemUgPSB7IChpbnQpQ1ZQaXhlbEJ1ZmZl
ckdldFdpZHRoKHBpeGVsQnVmZmVyKSAsIChpbnQpQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhl
bEJ1ZmZlcikgfTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAg
dHJhbnNmb3JtLnJvdGF0ZShyb3RhdGlvblRvQW5nbGUocm90YXRpb24pKTsKLSAgICAgICAgbV9y
b3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+
KFdURk1vdmUodHJhbnNmb3JtKSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlw
ZShwaXhlbEJ1ZmZlciksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGli
bGU6Ok5vKTsKKyAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90
YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUodHJhbnNmb3JtKSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdl
dFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlciksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6Oklz
Q0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9yb3RhdGlvblNl
c3Npb24tPnJvdGF0ZShwaXhlbEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXgg
OGUyOWQ3YjgxYTE3M2RmYTUzNzA1ZmExZTYyYzllODgzYzRmOTUwMi4uZDQ3NjlkNjllNGFmMDQ3
MGQ2MmNlOTBiNzU0NDBlMjgyNzY5ZTdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAt
MzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jayBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2soTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6
Q2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCmluZGV4IDNjNmRlMWM0ZWJlNGVjNzQ3MzU0MGFlY2Ni
ODk3NjJiMTk1NTVjZDQuLjEzODhhZDA1MTMxMDhiMmViOTJlYzJiYmUyODkzMzY1MmU5OWEwOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxI
YW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jay5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2sgZmluYWwgOiBwdWJsaWMgUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLCBwdWJsaWMgVGltZXJFdmVudEJhc2VkTW9jayB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9j
ayhjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKaW5kZXggMmYx
ZmI1NWVlNjcxZjJmMjI4ZmM1MTUxZDBkZDY5Y2Y4ZWM2OTVjYi4uMmM3YzQxYmQ2OTZmZjFmOWJh
YjM4MzgxYTRiNTgzODU2OGIxOGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCkBAIC05OCw3ICs5OCw3IEBAIFJlbW90ZURhdGFD
aGFubmVsTm90aWZpZXI6OlJlbW90ZURhdGFDaGFubmVsTm90aWZpZXIoUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpCiAKIHZvaWQgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSgpCiB7
Ci0gICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKHN0ZDo6bWFrZV91bmlxdWU8
UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBS
VENEYXRhQ2hhbm5lbEluaXQoKSkpOworICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hh
bm5lbChtYWtlVW5pcXVlPFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNoYW5uZWxJbml0KCkpKTsKIH0KIAogRGF0YUNoYW5uZWxT
dGF0ZU5vdGlmaWVyOjpEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXIoUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50KiBjbGllbnQsIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCmluZGV4IDU1OTkzMzgyYjNhMWRjMzZk
ODM1NmI2MWIyNWM3MDAyZTA3MzQ3ZmUuLjM4N2EyMWRhZjQ1NTIzOTY4YWVlNGY3OTQxOWQzZDhi
ODg2OTBkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE1lZGlhUGxheWVyIEVu
aWduZSBTdXBwb3J0CiB2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1l
ZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3Ry
YXIoW10gKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAor
ICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1
ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlw
ZXMsCiAgICAgICAgIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiB9CiAKQEAgLTE2Niw3ICsx
NjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogICAgIGlmIChtX21lZGlhU291cmNlUHJp
dmF0ZSkKICAgICAgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogYm9vbCBNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxl
LmNwcAppbmRleCBjYzY3Y2U2ODhmM2JjYTIyMjY5MGI0M2YxMDU4NzhiYTllM2MyOGY4Li45MDUx
NDMxNjIxYThjMTA4YTZlZjBmNTFlYjYwZjc3NGFmY2MwYTExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0x
NTksOSArMTU5LDkgQEAgQmxvYlJlc291cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoQmxv
YkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QKICAgICAsIG1fYXN5bmMgeyBh
c3luYyB9CiB7CiAgICAgaWYgKG1fYXN5bmMpCi0gICAgICAgIG1fYXN5bmNTdHJlYW0gPSBzdGQ6
Om1ha2VfdW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpOworICAgICAgICBtX2FzeW5jU3Ry
ZWFtID0gbWFrZVVuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fc3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlU3RyZWFtPigpOworICAgICAgICBt
X3N0cmVhbSA9IG1ha2VVbmlxdWU8RmlsZVN0cmVhbT4oKTsKIH0KIAogQmxvYlJlc291cmNlSGFu
ZGxlOjp+QmxvYlJlc291cmNlSGFuZGxlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCA4MTEyYjk3M2Vl
ZjU0ZWQ3YTVjN2E1MTRjZjEwMmFjOTkxZTc2NTMzLi5iNTQxZjYyZWUwMDUyMDM2MmMxNTU3Zjdj
YTQ5NjRhMjM3Yjg3NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIERlY29kaW5n
UmVzdWx0RGlzcGF0Y2hlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWNvZGluZ1Jl
c3VsdERpc3BhCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4gY3JlYXRlRGVj
b2RlVGFzayhjb25zdCBVUkwmIHVybCwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiBzY2hlZHVsZUNv
bnRleHQsIERlY29kZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2RlVGFzaz4oCisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8RGVjb2RlVGFzaz4oCiAgICAgICAgIHVybC5zdHJpbmcoKSwKICAgICAgICAgc2NoZWR1
bGVDb250ZXh0LAogICAgICAgICBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4
IGE5ODQzZjUwZTVhNDM0MDNkOGY1MmYwYTk2N2Y5MDI3ODY1ZThkNTYuLjhkYWVjNTRhMTM0MmRh
YjU5YzM1Y2M0OTI3YTAwZmU2MjI5NDk2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKQEAgLTM3LDYgKzM3LDcgQEAgV0VC
Q09SRV9FWFBPUlQgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWw7IC8vIFVzZWQgZm9yIGUKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyKiBj
b25zdCBlcnJvckRvbWFpbldlYktpdFNlcnZpY2VXb3JrZXI7IC8vIFVzZWQgZm9yIGVycm9ycyB0
aGF0IGhhcHBlbiB3aGVuIGxvYWRpbmcgYSByZXNvdXJjZSBmcm9tIGEgc2VydmljZSB3b3JrZXIu
CiAKIGNsYXNzIFJlc291cmNlRXJyb3JCYXNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuY3BwCmluZGV4IDMwYzI3ZjU3NmExNzdlNmI2YWIxOTQ3NDBhN2Q5MDI1YjY1
OWZjYWQuLjZhMzFlM2U1MjdmOGVjOTJkNmY2MmI5NmNkZDgxOTQ0MTRiNTVjNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBA
IC03NCw3ICs3NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNo
cm9ub3VzTG9hZGVyKGNvbnN0IEF0b21TdHJpbmcmIHByb3RvY29sCiB9CiAKIFJlc291cmNlSGFu
ZGxlOjpSZXNvdXJjZUhhbmRsZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50LCBib29s
IGRlZmVyc0xvYWRpbmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRl
bnRFbmNvZGluZ1NuaWZmKQotICAgIDogZChzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlSGFuZGxl
SW50ZXJuYWw+KHRoaXMsIGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywg
c2hvdWxkQ29udGVudFNuaWZmICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgp
KSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpKQorICAgIDogZChtYWtlVW5pcXVlPFJlc291
cmNlSGFuZGxlSW50ZXJuYWw+KHRoaXMsIGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJz
TG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1
ZXN0LnVybCgpKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpKQogewogICAgIGlmICghcmVx
dWVzdC51cmwoKS5pc1ZhbGlkKCkpIHsKICAgICAgICAgc2NoZWR1bGVGYWlsdXJlKEludmFsaWRV
UkxGYWlsdXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IGRhZDkw
MTBmOTU3MGViYzU2NzYzMzU0M2ZkMWZjNTAyZjg0NjliOTkuLjcxM2I0ZGZiMzBiMmFmZGZiZWFm
ZjRlZTUzNzBhMjU0NmZhZDNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cApAQCAtMTY5LDcgKzE2OSw3IEBAIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuCiAgICAgfTsKIAog
ICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAg
ICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdU
Rk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92
ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkK
LSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVu
ZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNl
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhv
cmUud2FpdCgpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAg
ICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1
ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdv
cmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlv
bjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmlu
aXNoTG9hZGluZygpCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAg
ICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFr
ZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMjc2LDcgKzI3Niw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkRmFpbChDRkVycm9yUmVmCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VR
dWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1
bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUt
PmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAg
ICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0z
MTEsNyArMzExLDcgQEAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjoKICAgICB9OwogICAgIAogICAg
IGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAg
bV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1v
dmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3
b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6
ZGlkUmVjZWl2ZUNoYWxsZW5nCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAg
ICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZCht
YWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zNDksNyArMzQ5
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRTZW5kQm9keURhdGEoQ0YKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2Fn
ZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwog
ICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAg
LTM4MCw3ICszODAsNyBAQCBCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1BybwogICAgIH07CiAgICAgCiAg
ICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAg
ICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3Zl
KHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0K
aW5kZXggYzliNTNlMzEyYWQ4NTU3NmQzNjZlZjRkYzUzNzQzOTFmZThjNjkwYy4uYmE1NWYwMDQ4
YjhlNGRkYzViMDczNGQ5OTNkYzliMTNiOGNiMmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bQpAQCAtNTIzLDcgKzUyMyw3IEBAIC0gKHZvaWQpX3Jlc3RhcnQKIAogICAgIF9yZXNvdXJjZSA9
IHNlbGYuc2Vzc2lvbi5sb2FkZXIucmVxdWVzdFJlc291cmNlKHNlbGYub3JpZ2luYWxSZXF1ZXN0
LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGlu
Zyk7CiAgICAgaWYgKF9yZXNvdXJjZSkKLSAgICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ+KHNlbGYpKTsK
KyAgICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ+KHNlbGYpKTsKIH0KIAogLSAodm9pZClfY2FuY2VsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApp
bmRleCBhNDVhNWY0ZTRhMDI4ZmU2ZTdmMmRmYjc1ZWMyYzhhZWM5M2VkMmJiLi4xMDE2MjRmMjkw
MGE5NGNjN2QxYTg5OTg5Njc2ZDZiNDVhYjdmYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTM4NCw3ICszODQs
NyBAQCBPcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdAogICAgICAgICAiQU5EICgoZG9tYWluID0gPykg
T1IgKGRvbWFpbiBHTE9CID8pKSAiXAogICAgICAgICAiT1JERVIgQlkgbGVuZ3RoKHBhdGgpIERF
U0MsIGxhc3R1cGRhdGVkIjsKIAotICAgIGF1dG8gcHN0bXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNR
TGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHBzdG10ID0gbWFrZVVu
aXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaWYgKCFwc3RtdCkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtNTY2LDcgKzU2Niw3IEBAIGJvb2wg
Q29va2llSmFyREI6OmRlbGV0ZUFsbENvb2tpZXMoKQogCiB2b2lkIENvb2tpZUphckRCOjpjcmVh
dGVQcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogewotICAgIGF1dG8gc3RhdGVt
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7
CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRh
YmFzZSwgc3FsKTsKICAgICBpbnQgcmV0ID0gc3RhdGVtZW50LT5wcmVwYXJlKCk7CiAgICAgQVNT
RVJUKHJldCA9PSBTUUxJVEVfT0spOwogICAgIG1fc3RhdGVtZW50cy5hZGQoc3FsLCBXVEZNb3Zl
KHN0YXRlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuaAppbmRleCAwYzAzZTlkNjkyYzdmNmRjNjEzMDg2ZmYyNTVjMjBlNWM2
YmJlOWU5Li4yNjg3YWU3NGZiOWQ5OTQyOTcyYmVkY2FjNmFiOWIxMTU5YTdlNTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApA
QCAtNDEsNiArNDEsNyBAQCBlbnVtIGNsYXNzIENvb2tpZUFjY2VwdFBvbGljeSB7CiB9OwogCiBj
bGFzcyBDb29raWVKYXJEQiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ29va2llSmFyREIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAKaW5kZXggZmE1YzhkMmQyMWI2MjczODE1ZDAyM2E0ZjIwNDU1MDE2ZTk2MzhhZi4uZTJiNGI1
ZGZiZGE2MmEzYzBjYjZiZjkxODFiYmQ2OGZkN2E0YTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApA
QCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAg
ICAgICAgLS1lbmQ7IC8vIExhc3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQp
IHsKICAgICAgICAgU3RyaW5nIHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAg
YXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBu
dWxscHRyLCBtX2NhY2hlRGlyKTsKKyAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVVuaXF1
ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKIAogICAgICAgICBp
ZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1f
c3RvcmFnZVNpemVMaW1pdCkgewogICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0g
Y2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBDdXJsQ2Fj
aGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmIGpvYiwgUmVzb3Vy
Y2VSZXNwb25zZSYKIAogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOyAvLyBJbnZh
bGlkYXRlIGV4aXN0aW5nIGVudHJ5IG9uIDIwMAogCi0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7
CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVy
bCwgJmpvYiwgbV9jYWNoZURpcik7CiAgICAgICAgIGJvb2wgY2FjaGVhYmxlID0gY2FjaGVFbnRy
eS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOwogICAgICAgICBpZiAoY2FjaGVhYmxl
KSB7CiAgICAgICAgICAgICBjYWNoZUVudHJ5LT5zZXRJc0xvYWRpbmcodHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3ZDE3MjE3YzJlNDQyYWM2ZjNkZThjNGI2MGE5NTI2YzlmNjU4NDJhLi43YjA0ZmEyNmE0
MmFiOTc4YWUwN2JkMzFmMGU2OTE1NTFiYmM0NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCBDdXJsQ29udGV4dDo6Q3VybENvbnRleHQoKQogICAgIGlmIChhdXRvIHZhbHVlID0gZW52
VmFyLnJlYWRBczxzaWduZWQ+KCJXRUJLSVRfQ1VSTF9NQVhfSE9TVF9DT05ORUNUSU9OUyIpKQog
ICAgICAgICBtYXhIb3N0Q29ubmVjdGlvbnMgPSAqdmFsdWU7CiAKLSAgICBtX3NjaGVkdWxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhU
b3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOworICAgIG1fc2NoZWR1bGVyID0g
bWFrZVVuaXF1ZTxDdXJsUmVxdWVzdFNjaGVkdWxlcj4obWF4Q29ubmVjdHMsIG1heFRvdGFsQ29u
bmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9ucyk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92
ZXJib3NlID0gZW52VmFyLmRlZmluZWQoIkRFQlVHX0NVUkwiKTsKQEAgLTMzNiw3ICszMzYsNyBA
QCBDVVJMY29kZSBDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xDdHgodm9pZCogc3NsQ3R4KQogICAg
ICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKIAogICAgIGlmICghbV9zc2xW
ZXJpZmllcikKLSAgICAgICAgbV9zc2xWZXJpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFNT
TFZlcmlmaWVyPihzc2xDdHgpOworICAgICAgICBtX3NzbFZlcmlmaWVyID0gbWFrZVVuaXF1ZTxD
dXJsU1NMVmVyaWZpZXI+KHNzbEN0eCk7CiAKICAgICByZXR1cm4gQ1VSTEVfT0s7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRh
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9y
bURhdGFTdHJlYW0uY3BwCmluZGV4IGRkNjNhNGFiNDI3MDNmNmU5NDJmOGVmOTU1MTM2YTg2YmNk
ZjY2NTEuLjJiNDc3MzZmNmU3MWYxYzQ5NzgxYmUxOTQ2YzBiOGUzNmJkNjc1MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9y
bURhdGFTdHJlYW0uY3BwCkBAIC03Niw3ICs3Niw3IEBAIGNvbnN0IFZlY3RvcjxjaGFyPiogQ3Vy
bEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFtX3Bvc3REYXRhKQotICAgICAgICBtX3Bvc3REYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7CisgICAgICAgIG1fcG9z
dERhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsK
IAogICAgIHJldHVybiBtX3Bvc3REYXRhLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
CmluZGV4IGE4YmI4ZDgxYTdhYmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZkZTJkNTUuLmNjZGJiMjgy
MzlmMjJjMzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+
IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwKICAgICBpZiAoIWJv
dW5kYXJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5KTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpib3VuZGFyeSk7CiB9
CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5
KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAxN2ZlZGRmMGUwODE0
ZDVlYWQwNjgyZjZlZjE0Zjc2NWM5MWU1OTA4Li5jMWQxNTdiZWZmOTQ0NTQ2MzFjZDA1OTYyZjIz
MTEzMmZkOGRiOGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0OjpjYWxsQ2xpZW50KEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3QmLCBDdXJsUmVxdWVzdENs
aWVudCYpPiYmCiB2b2lkIEN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQoRnVuY3Rpb248dm9p
ZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh0YXNrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogICAgIGVsc2UgaWYgKGlzTWFpblRocmVh
ZCgpKQogICAgICAgICB0YXNrKCk7CiAgICAgZWxzZQpAQCAtMjA1LDcgKzIwNSw3IEBAIENVUkwq
IEN1cmxSZXF1ZXN0OjpzZXR1cFRyYW5zZmVyKCkKICAgICBhdXRvIGh0dHBIZWFkZXJGaWVsZHMg
PSBtX3JlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwogICAgIGFwcGVuZEFjY2VwdExhbmd1YWdl
SGVhZGVyKGh0dHBIZWFkZXJGaWVsZHMpOwogCi0gICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtl
X3VuaXF1ZTxDdXJsSGFuZGxlPigpOworICAgIG1fY3VybEhhbmRsZSA9IG1ha2VVbmlxdWU8Q3Vy
bEhhbmRsZT4oKTsKIAogICAgIG1fY3VybEhhbmRsZS0+c2V0VXJsKG1fcmVxdWVzdC51cmwoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDkxODM3YWY5ZjNlNDc3M2I1YzcxYzFj
MjYwZGI5NmY1ODZiMjExYWYuLjNhYTVmNTJkYjYyN2FiYjBlY2NhZjI5MjEzZGNlMTJmYmM2ZmJj
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQg
Q3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybE11bHRpSGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFuZGxlID0gbWFrZVVuaXF1ZTxD
dXJsTXVsdGlIYW5kbGU+KCk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heENvbm5lY3Rz
KG1fbWF4Q29ubmVjdHMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhUb3RhbENvbm5l
Y3Rpb25zKG1fbWF4VG90YWxDb25uZWN0aW9ucyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNl
dE1heEhvc3RDb25uZWN0aW9ucyhtX21heEhvc3RDb25uZWN0aW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCmluZGV4IDdiZTAwYWQzNGI4ZTU5ODgyZGUwZjUxM2I2YzJkZGY5MDExZjk5ZTEuLjdk
NGE3MmZkODc1NTc2ZDlhNTk4YWExNTg0MDRlODlmMTI0ZDcwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmUKIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAg
IGlmICghZC0+bV9kZWxlZ2F0ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKKyAgICAgICAgZC0+bV9k
ZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsK
IAogICAgIHJldHVybiBkLT5tX2RlbGVnYXRlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5NTVlNjg4OWM2NTcyMGM5
ZWZhZjIxYi4uMTNhODMyYzI2NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkwMmRmYTk0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV90YXNrUXVldWUuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgIG1f
dGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFz
aykpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpleGVjdXRlVGFza3MoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFmMTg3YjUwNzY1YTlkMTdjMmVjNGVjODAzM2Q4M2Yz
NDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdjZWMxZTJmZjZlNzNmMjRjMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZCljYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6
KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogewogICAgIC8vIFN5bmMgeGhyIHVzZXMgdGhl
IG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICByZXR1cm4g
bV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+
KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIAog
ICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlLgogICAgIGlmICghc2NoZWR1bGVkV2l0aEN1
c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVkUGFpcnMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3Bw
CmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3MTkzNGZlYzM3NjNhNWE0YTgyZDkuLmVlNDRkODlk
MTk5ODU0NjhiN2FlYTFlNzVhNDQyMzBlMjc2ODIwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5j
cHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRAogCiAgICAgZ19v
YmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVudGlmaWVyIiwgR1VJ
TlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CiAKLSAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxETlNSZXNvbHZlUXVldWVT
b3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhh
bmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNv
bXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdU
Rk1vdmUoY2FuY2VsbGFibGUpKSk7CiB9CiAKIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3Rv
cFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25T
b3VwLmNwcAppbmRleCBlNGM4YjBmMTNlNmQwODlhNTg5MmFhN2FlMGE5YjgyMTU4NWJiOWE0Li43
YjI4ZjI2YjUzODRjYjRiZDViZmQ2NzU3MDdjZjJiZmZkNWYwNzc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJv
dGVjdGlvblMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8U2VjcmV0U2VydmljZVNlYXJjaERhdGE+KGNhbmNlbGxhYmxlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxTZWNyZXRT
ZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICBzZWNyZXRfc2VydmljZV9zZWFyY2gobnVsbHB0ciwgU0VDUkVUX1NDSEVNQV9DT01Q
QVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8U2VjcmV0
U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5MT0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NF
Q1JFVFMpLCBjYW5jZWxsYWJsZSwKICAgICAgICAgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNS
ZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCmluZGV4IDEwZmVjYmM0MTk0Nzk1ZjMyZDFjYTdlNzYw
OWFjNGZmMjA5MmNkMjMuLmFhZmVkM2RlNzliOTlhYWM0NzY5Yzc2YjU1ZjZjMWNiYjY2MWI4ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMzIx
LDcgKzMyMSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyQmFzZTxJdGVyYXRvciwgUnVuLCBEZXJpdmVk
Q2xhc3M+OjphcHBlbmRSdW5JbnRlcm5hbCgpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZW5k
T2Zmc2V0ID49IHN0YXJ0T2Zmc2V0KQotICAgICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihzdGQ6
Om1ha2VfdW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwg
bV9kaXJlY3Rpb24pKTsKKyAgICAgICAgICAgIG1fcnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxS
dW4+KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7
CiAKICAgICAgICAgbV9lb3IuaW5jcmVtZW50KCk7CiAgICAgICAgIG1fc29yID0gbV9lb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKaW5kZXggNTllMWZjNzJh
MmJmMjk2OTQ1YTg2Zjg1NTJiODYzNzZhOWVhNTg2ZC4uMmM4Y2NlNzMwODhmYTVhZDBjZjU5NTlj
Y2U0Zjk2OTFiZjM1N2EwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
SUNVLmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgaWN1OwogCiBzdGQ6OnVu
aXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlSUNVPihsb2Nh
bGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIExvY2FsZUlDVTo6TG9jYWxlSUNVKGNv
bnN0IGNoYXIqIGxvY2FsZSkKQEAgLTE2MywyMiArMTYzLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0
RGF0ZUZvcm1hdFBhdHRlcm4oY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQpCiBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29u
c3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQsIFVEYXRlRm9ybWF0U3ltYm9sVHlwZSB0eXBlLCBp
bnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSkKIHsKICAgICBpZiAoIWRhdGVGb3JtYXQp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9j
b3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAotICAgIGF1dG8gbGFiZWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1h
a2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHko
c2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICBpbnQzMl90IGxlbmd0
aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgMCwg
MCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChzdGF0dXMgIT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJS
T1IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAg
ICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihsZW5ndGgpOwogICAgICAgICBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CiAgICAgICAgIHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFy
dEluZGV4ICsgaSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoU3RyaW5nOjphZG9wdChXVEZNb3Zl
KGJ1ZmZlcikpKTsKICAgICB9CiAgICAgcmV0dXJuIFdURk1vdmUobGFiZWxzKTsKQEAgLTE4Niw3
ICsxODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3Jl
YXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMoKQogewotICAgIGF1
dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRv
IGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNl
cnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5h
bWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+YXBwZW5kKFdURjo6bW9udGhGdWxsTmFtZVtpXSk7
CkBAIC0yMDgsNyArMjA4LDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9u
dGhMYWJlbHMoKQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVh
dGVGYWxsYmFja0FNUE1MYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgbGFi
ZWxzLT5hcHBlbmQoIkFNIik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIlBNIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAppbmRleCBiYjZiMjZiYTU5Y2IzNmI5
ODliN2U2ZjU4NjMwYzdhN2IzYjU2ZWE3Li43ODE1YTQ3OGUwMjk3NDU1OTY1NzZjMmRlZDIyMTE5
MzZhYTk2YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2Fs
ZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgTG9jYWxlTm9uZSA6IHB1YmxpYyBMb2NhbGUgewog
CiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVOb25lPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPExvY2FsZU5vbmU+KCk7CiB9CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVO
b25lKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNJQ1UuY3BwCmluZGV4IGY4ZTE2NzA4NDlhOTU4OThhMTQ1N2JjOThkYTkxZTRiZGU3ODRjNzku
LmU1ZjI4MTY2YzZkZDM0YmM1MzUwOWI2YTAwMjBhODg4OTA3YzJjZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKQEAgLTE1Niw0MyArMTU2LDQz
IEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIg
cmVnaXN0cmFyKQogICAgICAgICAvLyBodHRwOi8vZGVtby5pY3UtcHJvamVjdC5vcmcvaWN1LWJp
bi9jb252ZXhwCiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ3aW5kb3dzLTg3NCIpKSB7CiAg
ICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAw
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1l
LCAid2luZG93cy04NzQtMjAwMCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAid2luZG93cy05NDki
KSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05
NDktMjAwMCIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lD
VT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFj
LWN5cmlsbGljIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwg
Im1hY29zLTdfMy0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4
dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwg
IngtbWFjLWdyZWVrIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFt
ZSwgIm1hY29zLTZfMi0xMC40Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8yLTEwLjQiKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFt
ZSwgIngtbWFjLWNlbnRyYWxldXJyb21hbiIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFt
ZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMjktMTAuMiIpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
IXN0cmNtcChuYW1lLCAieC1tYWMtdHVya2lzaCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIo
bmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMzUtMTAuMiIpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIXN0cmNtcChuYW1lLCAiRVVDLUtSIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1l
LCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDkiKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBA
QCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJl
Z2lzdHJhcikKICAgICAgICAgY29uc3QgY2hhciogY2Fub25pY2FsQ29udmVydGVyTmFtZSA9IHVj
bnZfZ2V0Q2Fub25pY2FsTmFtZShuYW1lLCAiSUFOQSIsICZlcnJvcik7CiAgICAgICAgIEFTU0VS
VChVX1NVQ0NFU1MoZXJyb3IpKTsKICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lLCBjYW5v
bmljYWxDb252ZXJ0ZXJOYW1lXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWUpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCBjYW5vbmljYWxDb252ZXJ0
ZXJOYW1lKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCmluZGV4IDkzMTQ1MzMyOGE2ZjY2OTQ4NWVl
MDFmOGE0ZTJjZWRlNTAyNjc3ZmYuLjkyYzY2MTNjYjFmY2MwZTMwOGE3M2MzNTBhOWUwN2VmNzcz
NDYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
TGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xh
dGluMS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVy
RW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0
Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIp
CiB7CiAgICAgcmVnaXN0cmFyKCJ3aW5kb3dzLTEyNTIiLCBbXSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0xhdGluMT4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCmluZGV4IDE3
NjViZjc5MjE1OTc1YjE1N2M4YjNmNzRjNTU3MmM0NzFlMjExNDEuLmM4YjU1OGM4Y2EyZDNhZmQz
MDIxNGJjZmMzN2ExNDU3NzU2YTEzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZv
aWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05h
bWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3Rl
ckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigi
cmVwbGFjZW1lbnQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY1JlcGxhY2VtZW50PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNS
ZXBsYWNlbWVudD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCBiZTAwNjU2NDQ2NDhmY2UwYzM3OWQzYzc0
M2VlMjI3ZWE5ZWRhNmY0Li45MGM0NDc1ZDAyMGI5ZjQ3MWI1YmU3N2MzY2FhYzBmZGM5OGNiYTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNw
cApAQCAtNTQsMTAgKzU0LDEwIEBAIHZvaWQgVGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyRW5jb2Rp
bmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNV
VEYxNjo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAg
ICByZWdpc3RyYXIoIlVURi0xNkxFIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRl
eHRDb2RlY1VURjE2Pih0cnVlKTsKICAgICB9KTsKICAgICByZWdpc3RyYXIoIlVURi0xNkJFIiwg
W10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFs
c2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNV
VEY4LmNwcAppbmRleCBhM2RhZDRlOWQxNjM3Njg2MzA4OGIxOTcxMGY4MzlkYmJmZmVhOGRkLi5l
MWQwYTUzYzcxN2FhZTczOTkzOWY1MWM0ZDMyOTM0NWFmODljYWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
dm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4
dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi04IiwgW10g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZp
bmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmlu
ZWQuY3BwCmluZGV4IDI5NmM0NjlmMTY5ZmI5MTFkYzhkYmQ3YTY0N2VhNTY0MWUyZmZlMTkuLjQ4
YWRiYTlkNGIxYTdhOWE2NThhZWY5ZGZhZGY4NWFkZGU5ZGNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIHZvaWQgVGV4dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyRW5jb2RpbmdO
YW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1VzZXJE
ZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewog
ICAgIHJlZ2lzdHJhcigieC11c2VyLWRlZmluZWQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVkPigpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUZXh0Q29kZWNVc2VyRGVmaW5lZD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCmluZGV4IGE1MTdiZTM0MWY2
YWM0YmU4ZTg5M2NmYWQ3YzIyODg0NWQ2YTgyODAuLjJiM2QwM2EzOGE1ZDIwMWJiNmRjYjhlYmU0
NGY0NmZlZWZjNjdlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9M
b2NhbGVNYWMubW0KQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0xvY2FsZT4g
ZGV0ZXJtaW5lTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxl
LnN0cmluZygpKS5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlTWFjPihkZXRl
cm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5Q
dHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVEYXRlVGltZUZvcm1hdHRlcihOU0xvY2FsZSogbG9j
YWxlLCBOU0NhbGVuZGFyKiBjYWxlbmRhciwgTlNEYXRlRm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxl
LCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSB0aW1lU3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCA2YTE2MGRlY2NmYzkyNmFlZjM3ZGUy
M2U5N2Y2MmU4ZjVjNjc5MDZhLi5hYTAwYTRhZDZmNWI1OTk4MmI2YjQ3NzMxNzFjOGJjN2MwMzM5
MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5j
cHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TG9jYWxlV2luPihMQ0lERnJvbUxvY2FsZShsb2NhbGUpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOwogfQogCiBpbmxpbmUgTG9j
YWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKaW5kZXggYWY0NjkxMzkwODFlODBjMTIwN2I4
MmM5N2ZkZmEzYzc3MjFhNjUxMS4uMmNlYjQ3NWU1ZmFlYmI2NzBjNzQxNDQ3NWE0NzI5MjQ5NTJk
Y2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENv
ZGVjV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIFVJTlQgZ2V0Q29kZVBhZ2UoY29u
c3QgY2hhciogbmFtZSkKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1Rl
eHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVu
Y29kaW5nLm5hbWUoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0
Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CiB9CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVj
V2luKFVJTlQgY29kZVBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92
ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcAppbmRleCBkMWRjNjcz
Njg2ZjY1MWUzZTAzMjkxYjdjMDJjMzFiMGMxNjliYmMyLi5lN2NmNzEzN2UzM2FhNTViZjdlNTg1
ZWUxNjRlNjczZDNhYWVlYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92
ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPiBWUlBsYXRm
b3JtTWFuYWdlck9wZW5WUjo6Y3JlYXRlKCkKICAgICBpZiAoIXZyOjpWUl9Jc1J1bnRpbWVJbnN0
YWxsZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4oKTsKIH0KIAogVlJQbGF0Zm9ybU1hbmFnZXJPcGVu
VlI6On5WUlBsYXRmb3JtTWFuYWdlck9wZW5WUigpCkBAIC03OCw3ICs3OCw3IEBAIFZlY3RvcjxX
ZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmdldFZS
RGlzcGxheXMoKQogCiAgICAgVmVjdG9yPFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBkaXNw
bGF5czsKICAgICBpZiAoIW1fZGlzcGxheSkKLSAgICAgICAgbV9kaXNwbGF5ID0gc3RkOjptYWtl
X3VuaXF1ZTxWUlBsYXRmb3JtRGlzcGxheU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29t
cG9zaXRvcik7CisgICAgICAgIG1fZGlzcGxheSA9IG1ha2VVbmlxdWU8VlJQbGF0Zm9ybURpc3Bs
YXlPcGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNvbXBvc2l0b3IpOwogICAgIGRpc3BsYXlz
LmFwcGVuZChtYWtlV2Vha1B0cigqbV9kaXNwbGF5KSk7CiAgICAgcmV0dXJuIGRpc3BsYXlzOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4
IGFiYWRkYzdmYmNhMjM1OWVmZjViOTgxMWMxOTVmNmI1YWJjMWJhODMuLjE2OTc4NTVmZTcyZjYz
N2U2NWFkNDc3NzJhZmE2MWM3NDcxOTI0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIExSRVNVTFQg
Q0FMTEJBQ0sgUGFzdGVib2FyZE93bmVyV25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwg
V1BBUkFNIHcKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oKTsKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGNsaXBib2FyZERhdGE7CiAgICAg
aWYgKCFTVUNDRUVERUQoT2xlR2V0Q2xpcGJvYXJkKCZjbGlwYm9hcmREYXRhKSkpCiAgICAgICAg
IGNsaXBib2FyZERhdGEgPSAwOwpAQCAtMTA2LDE2ICsxMDYsMTYgQEAgc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKICAgICBD
T01QdHI8V0NEYXRhT2JqZWN0PiBkYXRhT2JqZWN0OwogICAgIFdDRGF0YU9iamVjdDo6Y3JlYXRl
SW5zdGFuY2UoJmRhdGFPYmplY3QpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3Rl
Ym9hcmQ+KGRhdGFPYmplY3QuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9h
cmQ+KGRhdGFPYmplY3QuZ2V0KCkpOwogfQogCiAvLyBzdGF0aWMKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURh
dGEoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBs
YXRmb3JtRGF0YSgpKTsKICAgICAvLyBGSVhNRTogU2hvdWxkIGFkZCBhIGNvbnN0IG92ZXJsb2Fk
IG9mIGRyYWdEYXRhTWFwIHNvIHdlIGRvbid0IG5lZWQgYSBjb25zdF9jYXN0IGhlcmUuCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2FzdDxEcmFnRGF0YSY+
KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJv
YXJkPihjb25zdF9jYXN0PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51REIuY3BwCmluZGV4IDE5NjQ5YzU2NmNmY2Y1ZjQyNDMwOWQxZDhkMTAwYjBiNGZmNzcwYTgu
LjZmN2Y0YmExNjYwYjRmN2E5NzcyMTJjODU2M2E0M2M2NjVlMzBiNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMjg0LDcg
KzI4NCw3IEBAIGludCBTZWFyY2hQb3B1cE1lbnVEQjo6ZXhlY3V0ZVNpbXBsZVNxbChjb25zdCBT
dHJpbmcmIHNxbCwgYm9vbCBpZ25vcmVFcnJvcikKIAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0
YXRlbWVudD4gU2VhcmNoUG9wdXBNZW51REI6OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KGNvbnN0
IFN0cmluZyYgc3FsKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxT
UUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBt
YWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpbnQgcmV0
ID0gc3RhdGVtZW50LT5wcmVwYXJlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBT
UUxJVEVfT0spOwogICAgIHJldHVybiBzdGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwCmluZGV4IGRiZjk5YTQ1Y2U3MDNhOWQ4NTdhMGU2MDE5
ZDY4MDZkZDExZmExN2IuLmM5N2E3ZWJhYWFiZGQ4ZTI2MjlhYTM3N2U3MjY3ZWJkN2M4NTEyMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwCkBAIC0y
NTYsNyArMjU2LDcgQEAgU1RETUVUSE9ESU1QIFdDRGF0YU9iamVjdDo6U2V0RGF0YShGT1JNQVRF
VEMqIHBmb3JtYXRldGMsIFNUR01FRElVTSogcG1lZGl1bSwgQk8KICAgICBpZiAoIXBmb3JtYXRl
dGMgfHwgIXBtZWRpdW0pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBhdXRvIGZl
dGMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZPUk1BVEVUQz4oKTsKKyAgICBhdXRvIGZldGMgPSBtYWtl
VW5pcXVlPEZPUk1BVEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdN
ZWRpdW1EZWxldGVyPiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShm
ZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwCmluZGV4IGMwMDRmYzllNzA0YTZhZDMyMzQ5ZmI4MjRjZGM1ZGRkMDM2MDFiNWMu
LjQ3OTgxYWU2OTkxZGM2NDkxNTIwZmM4MjQzMmVjYzQ5NTg2NDQzZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgRmkKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKIAotICAgIGF1
dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3Vz
RWZmZWN0KTsKKyAgICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+
KCZwcmV2aW91c0VmZmVjdCk7CiAgICAgbV9zb3VyY2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSk7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVj
dEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM+KCpmaWx0ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q29tcGxleExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhM
aW5lTGF5b3V0LmNwcAppbmRleCAwMTMzNzg3ZDlkMzA2MmIxY2E3OWIxNjA3OTYzZjIwYzEwNzFl
ZDUzLi5iZDNjOWJlZTg3Mjk4NmVjNjFiMWEzMGEwNDk1YjhjMGEyNmZkNjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKQEAgLTgyLDcgKzgy
LDcgQEAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYg
ZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVyKQogCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPEJpZGlS
dW4+IGNyZWF0ZVJ1bihpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxp
bmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEJpZGlSdW4+KHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5k
aXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCBy
ZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKIH0KIAogdm9pZCBDb21wbGV4TGlu
ZUxheW91dDo6YXBwZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywg
aW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVy
JiByZXNvbHZlcikKQEAgLTEzMCwxMiArMTMwLDEyIEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6
OmFwcGVuZFJ1bnNGb3JPYmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFy
CiBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4gQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0
ZVJvb3RJbmxpbmVCb3goKQogewogICAgIGlmIChpczxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7
Ci0gICAgICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSb290SW5saW5lQm94Pihk
b3duY2FzdDxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKTsKKyAgICAgICAgYXV0byBib3ggPSBtYWtl
VW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykp
OwogICAgICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJl
dHVybiBib3g7CiAgICAgfQogICAgICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
b290SW5saW5lQm94PihtX2Zsb3cpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJvb3RJbmxpbmVC
b3g+KG1fZmxvdyk7CiB9CiAKIFJvb3RJbmxpbmVCb3gqIENvbXBsZXhMaW5lTGF5b3V0OjpjcmVh
dGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkKQEAgLTEwODUsNyArMTA4NSw3IEBAIGlubGluZSBC
aWRpUnVuKiBDb21wbGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxp
c3Q8QmlkaVJ1bj4mIGJpCiAgICAgICAgIHdoaWxlIChCaWRpQ29udGV4dCogcGFyZW50ID0gYmFz
ZUNvbnRleHQtPnBhcmVudCgpKQogICAgICAgICAgICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7CiAK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IG5ld1RyYWlsaW5nUnVuID0gc3RkOjpt
YWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3As
IHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVyKCksIGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRS
QUwpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBt
YWtlVW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwg
dHJhaWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJB
TCk7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAg
ICAgIHRyYWlsaW5nU3BhY2VSdW4gPSBuZXdUcmFpbGluZ1J1bi5nZXQoKTsKICAgICAgICAgaWYg
KGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2
b2lkIENvbXBsZXhMaW5lTGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQoTGluZUxheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSkKICAgICAgICAgaWYgKGxheW91dFN0YXRlLmNoZWNrRm9yRmxvYXRz
RnJvbUxhc3RMaW5lKCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tVmlzdWFsT3Zl
cmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAg
ICAgICAgICAgIExheW91dFVuaXQgYm90dG9tTGF5b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgp
LT5sb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3coKTsKLSAgICAgICAgICAgIGF1dG8gbmV3TGlu
ZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94PihtX2Zs
b3cpOworICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94ID0gbWFrZVVuaXF1ZTxUcmFpbGluZ0Zs
b2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiAgICAgICAgICAgICBhdXRvIHRyYWlsaW5nRmxv
YXRzTGluZUJveCA9IG5ld0xpbmVCb3guZ2V0KCk7CiAgICAgICAgICAgICBtX2xpbmVCb3hlcy5h
cHBlbmRMaW5lQm94KFdURk1vdmUobmV3TGluZUJveCkpOwogICAgICAgICAgICAgdHJhaWxpbmdG
bG9hdHNMaW5lQm94LT5zZXRDb25zdHJ1Y3RlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA0Y2RkMTM5YzQ4NzUxNmVhMGU3YjEyMTNiNzAz
YmQzNDI3YWIwMThjLi5hNmM2NDgxOGM0OTc0NTYwOTBmNjYyM2MzMDRiNWQ2Mjc3MDdhZTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtNzUs
NyArNzUsNyBAQCBGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94JiByZW5k
ZXJlciwgVHlwZSB0eXBlLCBjb25zdCBMYXlvdXRSZWN0JgogCiBzdGQ6OnVuaXF1ZV9wdHI8Rmxv
YXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikK
IHsKLSAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJl
bmRlcmVyKTsKKyAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJl
bmRlcmVyKTsKICAgICBvYmplY3QtPnNldFNob3VsZFBhaW50KCFyZW5kZXJlci5oYXNTZWxmUGFp
bnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50
IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgogICAgIG9iamVjdC0+c2V0SXNE
ZXNjZW5kYW50KHRydWUpOwogICAgIHJldHVybiBvYmplY3Q7CkBAIC04MywxMiArODMsMTIgQEAg
c3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKFJl
bmRlckJveCYgcmVuZGVyZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxv
YXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lcihMYXlvdXRTaXplIG9mZnNldCwgYm9vbCBz
aG91bGRQYWludCwgYm9vbCBpc0Rlc2NlbmRhbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVj
dChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBt
YXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChm
cmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJn
aW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50KCkg
Y29uc3QKIHsKLSAgICBhdXRvIGNsb25lT2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGlu
Z09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQs
IG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKKyAgICBhdXRvIGNsb25lT2JqZWN0ID0g
bWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVj
dCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKICAgICBj
bG9uZU9iamVjdC0+bV9wYWdpbmF0aW9uU3RydXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBj
bG9uZU9iamVjdC0+bV9pc1BsYWNlZCA9IG1faXNQbGFjZWQ7CiAgICAgcmV0dXJuIGNsb25lT2Jq
ZWN0OwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxh
Y2VkRmxvYXRzVHJlZSgpCiAgICAgaWYgKG1fc2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09i
amVjdFRyZWU+KCk7CisgICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gbWFrZVVuaXF1ZTxGbG9hdGlu
Z09iamVjdFRyZWU+KCk7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zZXQuYmVnaW4oKSwgZW5kID0g
bV9zZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBGbG9hdGluZ09iamVjdCog
ZmxvYXRpbmdPYmplY3QgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+
aXNQbGFjZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCBjNzJkMDFkODFjN2Q3
MTY2MTU3OWUzYmEwMTgzMGU0MjlkMzBmNjg4Li4xZTkxMWFlNjBhNjEyNjg5YTQ5N2ZmMmQ1Yjdm
MGQ1MGI4N2UyOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdy
aWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZh
cnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNp
emUoKSA6IG1fZ3JpZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwg
ZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBp
ZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlk
QXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1f
cm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFu
KG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+
KEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0lu
ZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2Nv
bHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8g
QWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3
b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAg
ICArK3ZhcnlpbmdUcmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5k
ZXggNWZjMzI4MTUzYTZkOGJmYzQ4ODNiYTUxMjFjY2EwYmY2ZjJlOTlkMC4uNjYwOTA5OGY5Yzg3
MDQ2ODgxMTQxOGFiMTc4Mjk0MTdiZWUyZDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2
b2lkIEdyaWRCYXNlbGluZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0
KEl0ZW1Qb3NpdGlvbiBwcmVmZXJlbgogCiAgICAgLy8gTG9va2luZyBmb3IgYSBjb21wYXRpYmxl
IGJhc2VsaW5lLXNoYXJpbmcgZ3JvdXAuCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQot
ICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNl
bGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOworICAgICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxCYXNlbGluZUNvbnRleHQ+
KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOwogICAgIGVsc2UgewogICAgICAg
ICBhdXRvKiBjb250ZXh0ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICAg
ICAgY29udGV4dC0+dXBkYXRlU2hhcmVkR3JvdXAoY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwg
ZGVzY2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uY3BwCmluZGV4IGFkZGVkYzQyOGIxZjJmZGIzNTAzZTgxMjYyNmI5NzY5
M2EzZTdiNWYuLmIyYjAxMWJkZjc0OTFiMzVhYjFkYmI3YWM2YjI2Mzk2MTcyMWNjYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uY3BwCkBAIC02ODEsNyArNjgxLDcgQEAgZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0U2l6ZShjb25zdCBWZWN0b3I8R3JpZFRyYWMKICAgICAg
ICAgICAgIGxlZnRPdmVyU3BhY2UgLT0gYmFzZVNpemU7CiAgICAgICAgICAgICBmbGV4RmFjdG9y
U3VtIC09IGZsZXhGYWN0b3I7CiAgICAgICAgICAgICBpZiAoIXRyYWNrc1RvVHJlYXRBc0luZmxl
eGlibGUpCi0gICAgICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8VHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICB0cmFja3NUb1Ry
ZWF0QXNJbmZsZXhpYmxlID0gbWFrZVVuaXF1ZTxUcmFja0luZGV4U2V0PigpOwogICAgICAgICAg
ICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZS0+YWRkKGluZGV4KTsKICAgICAgICAgICAgIHZh
bGlkRmxleEZhY3RvclVuaXQgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMTI2MCwxMCArMTI2MCwx
MCBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZQogICAgIG1fc2l6aW5nT3BlcmF0aW9uID0gc2l6
aW5nT3BlcmF0aW9uOwogICAgIHN3aXRjaCAobV9zaXppbmdPcGVyYXRpb24pIHsKICAgICBjYXNl
IEludHJpbnNpY1NpemVDb21wdXRhdGlvbjoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5kZWZpbml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0
ZWd5ID0gbWFrZVVuaXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgVHJhY2tTaXppbmc6Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6
Om1ha2VfdW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3Ry
YXRlZ3kgPSBtYWtlVW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IDczYjM2NTQ3NjcxNDBhMDM3MGU0ZDU2OTU2ZTU0ZjI2NzRiNThiMzYuLmIzYzQw
MDc5MDJkZjYwNDg2MmE1YWM3YzI5OThjYmFkNzNmMTEyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSGl0VGVzdFJlc3Vs
dDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faXNP
dmVyV2lkZ2V0KG90aGVyLmlzT3ZlcldpZGdldCgpKQogewogICAgIC8vIE9ubHkgY29weSB0aGUg
Tm9kZVNldCBpbiBjYXNlIG9mIGxpc3QgaGl0IHRlc3QuCi0gICAgbV9saXN0QmFzZWRUZXN0UmVz
dWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2Rl
U2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CisgICAgbV9saXN0
QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gbWFrZVVuaXF1
ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CiB9CiAK
IEhpdFRlc3RSZXN1bHQ6On5IaXRUZXN0UmVzdWx0KCkgPSBkZWZhdWx0OwpAQCAtMTEzLDcgKzEx
Myw3IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRU
ZXN0UmVzdWx0JiBvdGhlcikKICAgICBtX2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdl
dCgpOwogCiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQg
dGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RS
ZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RS
ZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xp
c3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNl
ZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTY5MCwx
NCArNjkwLDE0IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1
bHQmIG90aGVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxCiBjb25zdCBIaXRUZXN0UmVzdWx0
OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0
UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNl
ZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RC
YXNlZFRlc3RSZXN1bHQ7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1
bHQ6Om11dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KCkKIHsKICAgICBpZiAoIW1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5p
cXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggNDNjNjUzODc2
Y2Y5ODRhNjJiNmZjOTI5NDVkM2RkNjkwY2EzZWRiOS4uMTVmZGU1NGRlNWQzNDk5MjA4MmQ0Mzlh
MjkwYTUxZjkyNWNjMmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJh
dG9yLmgKQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG51bWJlck9m
SXNvbGF0ZUFuY2VzdG9ycyhjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRlcikKIC8vIG9mIEJpZGlS
ZXNvbHZlciB3aGljaCBrbm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdHMuCiBzdGF0aWMg
aW5saW5lIHZvaWQgYWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZShJbmxpbmVCaWRp
UmVzb2x2ZXImIHJlc29sdmVyLCBSZW5kZXJPYmplY3QmIG9iaiwgdW5zaWduZWQgcG9zLCBSZW5k
ZXJFbGVtZW50JiByb290KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBpc29sYXRl
ZFJ1biA9IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIu
Y29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+
IGlzb2xhdGVkUnVuID0gbWFrZVVuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZl
ci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKICAgICAvLyBGSVhNRTogaXNvbGF0ZWRSdW5z
KCkgY291bGQgYmUgYSBoYXNoIG9mIG9iamVjdC0+cnVuIGFuZCB0aGVuIHdlIGNvdWxkIGNoZWFw
bHkKICAgICAvLyBBU1NFUlQgaGVyZSB0aGF0IHdlIGRpZG4ndCBjcmVhdGUgbXVsdGlwbGUgb2Jq
ZWN0cyBmb3IgdGhlIHNhbWUgaW5saW5lLgogICAgIHJlc29sdmVyLnNldFdoaXRlc3BhY2VDb2xs
YXBzaW5nVHJhbnNpdGlvbkZvcklzb2xhdGVkUnVuKCppc29sYXRlZFJ1biwgcmVzb2x2ZXIud2hp
dGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSgpLmN1cnJlbnRUcmFuc2l0aW9uKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAppbmRleCAyODVhYTVmOWZlOWJh
ZTdkZmM4NTI4YzI0YzFkNTU2N2Q0MTI5ZmYzLi45NmFmOTVhNDU1Njk1MGU4MTI2Yjk1MzczNTM0
ZDQ3NmRhZTM1NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJP
dmVybGFwTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFw
TWFwLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgUmVjdExpc3QmIHJlY3RMaXN0KQogLy8gQ2hlY2tpbmcgZm9y
IG92ZXJsYXAgaW52b2x2ZXMgZmluZGluZyB0aGUgbm9kZSBmb3IgdGhlIGNsaXBwaW5nIGxheWVy
IGVuY2xvc2luZyB0aGUgZ2l2ZW4gbGF5ZXIgKG9yIHRoZSByb290KSwKIC8vIGFuZCBjb21wYXJp
bmcgYWdhaW5zdCB0aGUgYm91bmRzIG9mIGVhcmxpZXIgc2libGluZ3MuCiBjbGFzcyBPdmVybGFw
TWFwQ29udGFpbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBPdmVybGFwTWFwQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyJiByb290TGF5ZXIpCiAgICAg
ICAgIDogbV9yb290U2NvcGUocm9vdExheWVyKQpAQCAtMjk2LDcgKzI5Nyw3IEBAIGJvb2wgTGF5
ZXJPdmVybGFwTWFwOjpvdmVybGFwc0xheWVycyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIGNv
bnN0IExheW91dFJlY3QmCiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdD
b250YWluZXIoKQogewotICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PE92ZXJsYXBNYXBDb250YWluZXI+KG1fcm9vdExheWVyKSk7CisgICAgbV9vdmVybGFwU3RhY2su
YXBwZW5kKG1ha2VVbmlxdWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9yb290TGF5ZXIpKTsKIH0K
IAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnBvcENvbXBvc2l0aW5nQ29udGFpbmVyKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRkYmEzZjFjNDEwNWFmYjBl
OGU0Yzc2YTdjZmNiOWU1ZmZmNzE4NTQuLjAwMTkyNTg4MmU1MDI4YzhhMjA5OWI0YmJkZTM3MzE2
NWI0YTI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAt
MTA0LDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBz
KGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAg
IGF1dG8mIGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAtPmVuc3Vy
ZSgmY29udGFpbmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNr
ZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFj
a2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAg
ICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKCZkZXNjZW5kYW50KS5pc05ld0VudHJ5
OwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVy
ZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAg
IAogICAgIGF1dG8mIGNvbnRhaW5lclNldCA9IHBlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmVu
c3VyZSgmZGVzY2VuZGFudCwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxI
YXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKICAgICBBU1NFUlQoIWNvbnRhaW5lclNldC0+Y29udGFpbnMoJmNvbnRhaW5lcikpOwpAQCAt
MTYxLDcgKzE2MSw3IEBAIGNsYXNzIFBvc2l0aW9uZWREZXNjZW5kYW50c01hcCB7CiAgICAgICAg
IH0KIAogICAgICAgICBhdXRvJiBkZXNjZW5kYW50cyA9IG1fZGVzY2VuZGFudHNNYXAuZW5zdXJl
KCZjb250YWluaW5nQmxvY2ssIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAgICAgICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKIAogICAgICAgICBib29sIGlzTmV3RW50cnkgPSBtb3ZlRGVzY2VuZGFudFRv
RW5kID09IE1vdmVEZXNjZW5kYW50VG9FbmQ6OlllcyA/IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1v
dmVUb0xhc3QoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5CkBAIC01MjgsNyArNTI4
LDcgQEAgc3RhdGljIGlubGluZSBVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlv
biogY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnQKIHZvaWQgUmVuZGVyQmxvY2s6OmJlZ2luVXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKQogewogICAgIGlmICghdXBkYXRl
U2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpKQotICAgICAgICB1cGRhdGVT
Y3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBzdGQ6Om1ha2VfdW5pcXVl
PERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbElu
Zm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IG1ha2VVbmlxdWU8RGVsYXllZFVwZGF0
ZVNjcm9sbEluZm9TdGFjaz4oKTsKICAgICBpZiAodXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0
VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkgfHwgY3VycmVudFVwZGF0ZVNjcm9sbEluZm9B
ZnRlckxheW91dFRyYW5zYWN0aW9uKCktPnZpZXcgIT0gJnZpZXcoKSkKICAgICAgICAgdXBkYXRl
U2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5hcHBlbmQoVXBkYXRlU2Ny
b2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24odmlldygpKSk7CiAgICAgKytjdXJyZW50VXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+bmVzdGVkQ291bnQ7CkBAIC02
MjAsNyArNjIwLDcgQEAgc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEmIGVuc3VyZUJsb2NrUmFy
ZURhdGEoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQogICAgIAogICAgIGF1dG8mIHJhcmVEYXRh
ID0gZ1JhcmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgaWYgKCFyYXJlRGF0YSkKLSAgICAgICAgcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckJsb2NrUmFyZURhdGE+KCk7CisgICAgICAgIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSZW5k
ZXJCbG9ja1JhcmVEYXRhPigpOwogICAgIHJldHVybiAqcmFyZURhdGEuZ2V0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggN2YxZTYz
OTcwNjNiZTRmOGRmOWI1N2YxNzVkNmUyNmU3OGVmYjEzNC4uYjg2NDJkMTcyMDNiZDRiZjI1YmRl
MTcxZjk4NzBhZjdkNWE0M2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiBy
ZQogICAgIG1fc2ltcGxlTGluZUxheW91dCA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fY29tcGxl
eExpbmVMYXlvdXQpCi0gICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CisgICAgICAgIG1fY29tcGxleExpbmVMYXlv
dXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKICAgICBtX2NvbXBs
ZXhMaW5lTGF5b3V0LT5sYXlvdXRMaW5lQm94ZXMocmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludExv
Z2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKIH0KQEAgLTIwMTksNyArMjAxOSw3IEBA
IHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgpCiAgICAgCiAgICAgc2V0
TGluZUdyaWRCb3goMCk7CiAKLSAgICBhdXRvIGxpbmVHcmlkQm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxSb290SW5saW5lQm94PigqdGhpcyk7CisgICAgYXV0byBsaW5lR3JpZEJveCA9IG1ha2VVbmlx
dWU8Um9vdElubGluZUJveD4oKnRoaXMpOwogICAgIGxpbmVHcmlkQm94LT5zZXRIYXNUZXh0Q2hp
bGRyZW4oKTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhlIGxpbmUgYXNjZW50L2Rlc2NlbnQgYWN0dWFs
bHkgYmUgaG9ub3JlZCBpbiBxdWlya3MgbW9kZS4KICAgICBsaW5lR3JpZEJveC0+c2V0Q29uc3Ry
dWN0ZWQoKTsKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0ZXh0Qm94RGF0
YU1hcDsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0
RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBhaW50CiAKIHZv
aWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMoKQogewotICAgIG1fZmxv
YXRpbmdPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsK
KyAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3RzPigqdGhp
cyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVjdHMoKQpA
QCAtMzY3Nyw3ICszNjc3LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hl
cygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9jb21wbGV4TGluZUxheW91dCk7
Ci0gICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleExpbmVM
YXlvdXQ+KCp0aGlzKTsKKyAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21w
bGV4TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAgaWYgKFNpbXBsZUxpbmVMYXlvdXQ6OmNhblVz
ZUZvckxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KSkgewogICAgICAgICBT
aW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5l
TGF5b3V0KTsKQEAgLTM3MzUsNyArMzczNSw3IEBAIFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxv
Y2tGbG93UmFyZURhdGEmIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFyZUJsb2NrRmxvd0RhCiB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0YSgpCiB7CiAg
ICAgQVNTRVJUKCFoYXNSYXJlQmxvY2tGbG93RGF0YSgpKTsKLSAgICBtX3JhcmVCbG9ja0Zsb3dE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1Jh
cmVEYXRhPigqdGhpcyk7CisgICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9IG1ha2VVbmlxdWU8UmVu
ZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOwogfQogCiAjaWYg
RU5BQkxFKFRFWFRfQVVUT1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKaW5kZXggZTIwZmMyMDcxNGExMGUxMjIwZDJlZmQwYTljOGFhY2EyOTlkODU0MS4uYTQ2NzNk
MTE4ODJiMzFlOTNmMmJhNzA5MGYyMmVlMzA2MDY4ZDEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgQ29udHJvbFN0YXRl
c1JlbmRlcmVyTWFwJiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQogc3RhdGljIENvbnRyb2xT
dGF0ZXMqIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVy
KQogewogICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5lbnN1cmUoJnJlbmRl
cmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xTdGF0ZXM+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCkBAIC0yMTE1LDcgKzIxMTUsNyBAQCBMYXlvdXRT
aXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWlu
ZXIsIGNvbnN0IExheW91dAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gUmVu
ZGVyQm94OjpjcmVhdGVJbmxpbmVCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVF
bGVtZW50Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhi
b29sIGZ1bGxMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAppbmRleCA0MjQzMGRmOGJhN2I2YWI4NjMyMzI4ZTYyZWY5MjU3MDFh
ZjNiNzc4Li5jZGNhNDU4YTFjMWY0MGU5Njk2MjA0Y2Y0NjhkOTkxNGVkYTI0ZWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAg
LTI1MzgsNyArMjUzOCw3IEBAIGF1dG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRp
bnVhdGlvbkNoYWluTm9kZSgpIC0+IENvbnRpbnVhdGlvbkNoYWluTm9kCiB7CiAgICAgc2V0SGFz
Q29udGludWF0aW9uQ2hhaW5Ob2RlKHRydWUpOwogICAgIHJldHVybiAqY29udGludWF0aW9uQ2hh
aW5Ob2RlTWFwKCkuZW5zdXJlKHRoaXMsIFsmXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJD
b3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApp
bmRleCAyMjEwNDQzNGU0NWQ2Yzk4NDc2ZmZkMjlhYjU1MGJkNjJhYzQwOGZlLi5jMWUwM2YwOTdl
ZjU5YWQ1YTE2YjE5NGM5YzA1ZDY0OWY3ZmYxNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIENvdW50ZXJO
b2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21T
dHJpbmcmIGkKICAgICBpZiAocGxhY2UucGFyZW50KQogICAgICAgICBwbGFjZS5wYXJlbnQtPmlu
c2VydEFmdGVyKG5ld05vZGUsIHBsYWNlLnByZXZpb3VzU2libGluZy5nZXQoKSwgaWRlbnRpZmll
cik7CiAKLSAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlck1h
cD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkp
OworICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxDb3VudGVyTWFwPigpKS5pdGVy
YXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7CiAgICAgcmVu
ZGVyZXIuc2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7CiAKICAgICBpZiAobmV3Tm9kZS0+cGFy
ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21l
bnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
Q29udGFpbmVyLmNwcAppbmRleCA1MWE5ZTQ2ODQzNDRkMjYzN2QwNGE5MWZiNTlhM2NkNmVmOGYw
NmVkLi43ZjZjYWJjMDU5MTIxMDgxYzRkNzI4NjAyMTliZDRiOWM4NWI5NGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAK
QEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJCb3hGcmFnbWVudEluZm8qIFJlbmRlckZyYWdtZW50
Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8oY29uc3QgUgogewogICAgIEFTU0VS
VChpc1ZhbGlkKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveEZyYWdtZW50SW5m
bz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQoYm94LCBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJp
Z2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94SW5mbyA9IG1f
cmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gsIG1ha2VVbmlxdWU8UmVuZGVyQm94RnJhZ21l
bnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Js
b2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBib3hJbmZvLmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
Z21lbnRlZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
ZWRGbG93LmNwcAppbmRleCA0NGY1NjM1YmE1M2FlM2Y3ZTk0ZDdhYzhlNDk2NzM5MGY1OGMyZTU2
Li44NDZkZDNhMDJhYTg2YWFmNzE1YzA5NGU4YzM1MGMxNjZhODY3YjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKQEAgLTExMTUs
NyArMTExNSw3IEBAIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBSZW5kZXJGcmFnbWVudGVkRmxv
dzo6Y3VycmVudEZyYWdtZW50KCkgY29uc3QKIENvbnRhaW5pbmdGcmFnbWVudE1hcCYgUmVuZGVy
RnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVudE1hcCgpCiB7CiAgICAgaWYgKCFtX2xp
bmVUb0ZyYWdtZW50TWFwKQotICAgICAgICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gc3RkOjptYWtl
X3VuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+KCk7CisgICAgICAgIG1fbGluZVRvRnJhZ21l
bnRNYXAgPSBtYWtlVW5pcXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKIAogICAgIHJldHVy
biAqbV9saW5lVG9GcmFnbWVudE1hcC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IGI5MDQ1ZTY3OTA4NzNhYmY4MWE5MGRm
YTViYmIxMTA5M2M2NzdiMDIuLjUyYzc5MGQ0ZTU3ODliMTc4ZTI2YzhhYmQ4YmE3YjEzY2M1OTE1
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNw
cApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2goY29uc3Qg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NCiAgICAgCiAgICAg
UmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9zaXRp
b25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQotICAgICAgICBzdGVwLm1f
dHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odCk7Cisg
ICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4
Pih0KTsKICAgICBlbHNlCiAgICAgICAgIHN0ZXAubV9vZmZzZXQgPSBMYXlvdXRTaXplKHQuZSgp
LCB0LmYoKSk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpw
dXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAog
ICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2luc2VydGlvblBv
c2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OwogICAgIGlmICh0KQot
ICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4oKnQpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwogICAgIAogICAgIHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBlMzVhMmMxMzIyNWQ0
NzI1Y2Q4OGMyMmY2ZDA0Y2NjOWQwZjM0OTdmLi40OWFkMDM1NTUzNzM0MjI1ZjFkZGQ2MzNiNDJj
MTM4MzJjY2VmYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBA
IC01NDQsNyArNTQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBS
ZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICB1bnNpZ25lZCBs
YXN0QXV0b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBl
YXRUcmFja3MoZGlyZWN0aW9uKTsKIAogICAgIGlmICghZ3JpZC5oYXNHcmlkSXRlbXMoKSkgewot
ICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNr
SW5kZXhTZXQ+KCk7CisgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRl
cmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFja0luZGV4ID0g
Zmlyc3RBdXRvUmVwZWF0VHJhY2s7IHRyYWNrSW5kZXggPCBsYXN0QXV0b1JlcGVhdFRyYWNrOyAr
K3RyYWNrSW5kZXgpCiAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5k
ZXgpOwogICAgIH0gZWxzZSB7CkBAIC01NTIsNyArNTUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9y
ZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRv
UmVwZWEKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBkaXJlY3Rpb24s
IHRyYWNrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkg
ewogICAgICAgICAgICAgICAgIGlmICghZW1wdHlUcmFja0luZGV4ZXMpCi0gICAgICAgICAgICAg
ICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJ
bmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtl
VW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgICAgIGVtcHR5VHJh
Y2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTczMiw3ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNy
ZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dAogICAgIGNvbnN0IHVuc2ln
bmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7
CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24p
OwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5z
bGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJl
Y3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0Rp
cmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0
aW9ucyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JpZEFyZWE+KHNwZWNpZmllZERpcmVjdGlv
biA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3Np
dGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRp
b25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBs
YWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9y
PFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZjZjYjU2MTgxMmQyMjI2ODY2OTgzZjNhYjljNzQwYTU2
ZGIwMjZlOC4uYzM1NWZmMzcxYjQxMWE1OGU3OTA2Yzg3N2VhZDRiNTM0NjcxNWJjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVs
ZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1h
Z2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJlcGxh
Y2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVz
b3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNv
dXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxS
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxS
ZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9pbWFnZURldmljZVBpeGVsUmF0aW8oaW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKQEAgLTE0NCw3ICsx
NDQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bAogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1h
Z2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBz
dHlsZUltYWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUp
LCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNv
dXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDlkOGE2
NTkzNGJhM2ZkMjU0NzRjMzljOTFmZWVjNDNhYTBjOWY5ZjUuLjE1MzI1Y2RhMTY5MDY3YTU2OTFi
ODg1YThkZmRjN2FhOTAzNjQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6ZGVsZXRl
TGluZXMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gUmVuZGVySW5saW5lOjpj
cmVhdGVJbmxpbmVGbG93Qm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxp
bmVGbG93Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRmxvd0JveD4o
KnRoaXMpOwogfQogCiBJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVu
ZElubGluZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
aW5kZXggMjc2Y2U4MjcyYmNkYjMzNjQ1NDFkZTQ2MTEyZjJhM2Y5NzQxMDE3MS4uNjQwNjI4ZmQ2
NGJkMWFkYjJiMjY5ODg5NWFmY2M5M2E0ODA4YWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgICAgICAvLyBJZ25vcmUgbm9uLW92ZXJmbG93IGxh
eWVycyBhbmQgcmVmbGVjdGlvbnMuCiAgICAgICAgIGlmIChjaGlsZC0+aXNOb3JtYWxGbG93T25s
eSgpICYmICFpc1JlZmxlY3Rpb25MYXllcigqY2hpbGQpKSB7CiAgICAgICAgICAgICBpZiAoIW1f
bm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAgICAgICAgICAgbV9u
b3JtYWxGbG93TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CiAgICAg
ICAgICAgICBtX25vcm1hbEZsb3dMaXN0LT5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9CiAgICAg
fQpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9v
bCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yCiAgICAgaWYgKGlu
Y2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93T25seSgpKSB7CiAgICAgICAgIGF1dG8m
IGxheWVyTGlzdCA9ICh6SW5kZXgoKSA+PSAwKSA/IHBvc2l0aXZlWk9yZGVyTGlzdCA6IG5lZ2F0
aXZlWk9yZGVyTGlzdDsKICAgICAgICAgaWYgKCFsYXllckxpc3QpCi0gICAgICAgICAgICBsYXll
ckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOworICAgICAg
ICAgICAgbGF5ZXJMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAg
ICAgICAgbGF5ZXJMaXN0LT5hcHBlbmQodGhpcyk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGJvb2wgaGFkVHJh
bnNmb3JtID0gISFtX3RyYW5zZm9ybTsKICAgICBpZiAoaGFzVHJhbnNmb3JtICE9IGhhZFRyYW5z
Zm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQotICAgICAgICAgICAgbV90cmFuc2Zv
cm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOworICAgICAgICAg
ICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBtX3RyYW5zZm9ybSA9IG51bGxwdHI7CiAgICAgICAgIApA
QCAtNTUxOSw3ICs1NTE5LDcgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNs
aXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb24KICAgICB9CiAgICAg
CiAgICAgaWYgKCFtX2NsaXBSZWN0c0NhY2hlKQotICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0g
c3RkOjptYWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKKyAgICAgICAgbV9jbGlwUmVjdHND
YWNoZSA9IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CiAjaWZuZGVmIE5ERUJVRwogICAg
IG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNUeXBlXSA9IGNsaXBS
ZWN0c0NvbnRleHQucm9vdExheWVyOwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fc2Nyb2xsYmFy
UmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4dC5vdmVybGF5U2Nyb2xs
YmFyU2l6ZVJlbGV2YW5jeTsKQEAgLTYwOTcsNyArNjA5Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OmNsZWFyQ2xpcFJlY3RzKENsaXBSZWN0c1R5cGUgdHlwZVRvQ2xlYXIpCiBSZW5kZXJMYXllckJh
Y2tpbmcqIFJlbmRlckxheWVyOjplbnN1cmVCYWNraW5nKCkKIHsKICAgICBpZiAoIW1fYmFja2lu
ZykgewotICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQmFj
a2luZz4oKnRoaXMpOworICAgICAgICBtX2JhY2tpbmcgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVy
QmFja2luZz4oKnRoaXMpOwogICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVDb21wb3Np
dGVkKCp0aGlzKTsKIAogICAgICAgICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CkBA
IC02NTE1LDcgKzY1MTUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVE
aWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogCiAgICAgaWYgKHJl
bmRlcmVyKCkuaXNIVE1MTWFycXVlZSgpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5tYXJxdWVlQmVo
YXZpb3IoKSAhPSBNYXJxdWVlQmVoYXZpb3I6Ok5vbmUgJiYgcmVuZGVyZXIoKS5pc0JveCgpKSB7
CiAgICAgICAgIGlmICghbV9tYXJxdWVlKQotICAgICAgICAgICAgbV9tYXJxdWVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWFycXVlZSA9
IG1ha2VVbmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7CiAgICAgICAgIG1fbWFycXVlZS0+dXBk
YXRlTWFycXVlZVN0eWxlKCk7CiAgICAgfSBlbHNlIGlmIChtX21hcnF1ZWUpCiAgICAgICAgIG1f
bWFycXVlZSA9IG51bGxwdHI7CkBAIC02NzI3LDcgKzY3MjcsNyBAQCB2b2lkIFJlbmRlckxheWVy
OjplbnN1cmVMYXllckZpbHRlcnMoKQogICAgIGlmIChtX2ZpbHRlcnMpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBtX2ZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyRmls
dGVycz4oKnRoaXMpOworICAgIG1fZmlsdGVycyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJGaWx0
ZXJzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyTGF5ZXJGaWx0ZXJzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5k
ZXggN2YxNDM2NmE3ZTU2MTEwMzM3MjA3N2JlZmUyYTYwODM0MmY3YmE0OS4uNzVmOWViMGYyOTdh
MjM2YzdhNzgyNTY4NjNkMDUyODU3YjRjZGNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE2MjcsNyArMTYyNyw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5nU3RhY2soVmVjdG9yPENv
bXBvc2l0ZWRDbGlwRGF0YT4mCiAgICAgfQogICAgIAogICAgIGlmICghbV9hbmNlc3RvckNsaXBw
aW5nU3RhY2spIHsKLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3RhY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkp
OworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9IG1ha2VVbmlxdWU8TGF5ZXJBbmNl
c3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7CiAgICAgICAgIExPR19X
SVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJsYXllciAiIDw8ICZtX293bmluZ0xh
eWVyIDw8ICIgYW5jZXN0b3JDbGlwcGluZ1N0YWNrICIgPDwgKm1fYW5jZXN0b3JDbGlwcGluZ1N0
YWNrKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3OCwxNyArMzE3OCwxNyBA
QCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZz
ZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0ZpcnN0
T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkgPT0gMTsKICAgICAgICAgaWYgKChoYXNU
cmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29u
dGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSkpCi0gICAgICAgICAgICB0cmFuc2Zv
cm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+
KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CisgICAgICAgICAgICB0cmFu
c2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtl
eSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CiAKICAgICAgICAgaWYgKChoYXNP
cGFjaXR5ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRh
aW5zUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0
b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlm
cmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmlu
c2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+
b3BhY2l0eSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgoaGFzRmlsdGVyICYmIGlzRmlyc3RPckxh
c3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVy
dHlGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5p
cXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0
ZikpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFu
aW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwogCiAjaWYg
RU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICAgICAgaWYgKChoYXNCYWNrZHJvcEZpbHRlciAm
JiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3Bl
cnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpKQotICAgICAgICAgICAgYmFja2Ry
b3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFs
dWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKKyAgICAgICAg
ICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlv
blZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCksIHRmKSk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTMyNDMsOCArMzI0Myw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
OjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVy
CiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogb3BhY2l0eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0
aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KTsKICAgICAgICAgaWYgKG9wYWNpdHlB
bmltICYmICFvcGFjaXR5QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAg
ICAgIEtleWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNp
dHkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxG
bG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFj
aXR5KCkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5p
cXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5v
cGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVl
PEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9w
YWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8
RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNp
dHkoKSkpKTsKICAgICAgICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBm
b3IgdHJhbnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hl
cyksIHNvIHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3Jh
cGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEZsb2F0U2l6ZSgpLCBvcGFj
aXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0
ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRv
IGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmlt
YXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9wYWNpdHkuCkBAIC0zMjU4LDggKzMyNTgs
OCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1l
T2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIHRy
YW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlU
cmFuc2Zvcm0pOwogICAgICAgICBpZiAodHJhbnNmb3JtQW5pbSAmJiAhdHJhbnNmb3JtQW5pbS0+
aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0
IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKTsKLSAgICAgICAgICAg
IHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOwotICAgICAgICAgICAgdHJhbnNm
b3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVl
PigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9y
Lmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUt
PnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VV
bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7
CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3Jt
VmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKS5zaXpl
KCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0
aW9uKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAg
ICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxl
IHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgdHJhbnNmb3JtLgog
ICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgqdG9TdHlsZSk7CkBAIC0zMjcyLDggKzMy
NzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0
aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24q
IGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlG
aWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9y
WmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZl
Y3RvcihBbmltYXRlZFByb3BlcnR5RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5p
bnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxl
LT5maWx0ZXIoKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2Vf
dW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOworICAg
ICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZh
bHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3Iu
aW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRl
cigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oZmls
dGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0
aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlciksIHRpbWVPZmZzZXQp
KSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVy
IGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBm
aWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVycygqdG9TdHlsZSk7CkBAIC0zMjg3
LDggKzMyODcsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRv
dWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmlt
YXRpb24qIGJhY2tkcm9wRmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKICAgICAgICAgaWYgKGJhY2tkcm9w
RmlsdGVyQW5pbSAmJiAhYmFja2Ryb3BGaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24o
KSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgYmFja2Ryb3BGaWx0ZXJWZWN0b3Io
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKLSAgICAgICAgICAgIGJhY2tk
cm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZh
bHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKLSAgICAgICAgICAgIGJhY2tk
cm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZh
bHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJv
cEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwg
ZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRl
clZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHls
ZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+
YWRkQW5pbWF0aW9uKGJhY2tkcm9wRmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgYmFja2Ryb3BG
aWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmlt
YXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAg
ICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGJhY2tkcm9wIGZpbHRlciBp
cyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgYmFj
a2Ryb3AgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVwZGF0ZUJhY2tkcm9wRmlsdGVycygqdG9T
dHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCmluZGV4IGFiZTRkNGQ2NzVhMjIxODZlMmVhODlkNDEyZmZhODE1MzhjNWM5Mjku
LjMyMTIyOWQ2ZjIzY2ZhZTY2YTA1YTUyODA4ZGQwYjBjYmE4YzE0NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yOTUs
NyArMjk1LDcgQEAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3Io
UmVuZGVyVmlldyYgcmVuZGVyVmlldykKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAg
bV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdh
Y3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50
KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKKyAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdM
YXllckNvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNv
b3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRv
cigpKTsKICNlbmRpZgogfQogCkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2goY29uc3QgR3JhcGhpY3NM
YXllcioKIHsKICAgICBpZiAoIW1fbGF5ZXJVcGRhdGVyKSB7CiAgICAgICAgIFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCA9IHBhZ2UoKS5jaHJvbWUoKS5kaXNwbGF5SUQoKTsKLSAgICAgICAg
bV9sYXllclVwZGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigq
dGhpcywgZGlzcGxheUlEKTsKKyAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBtYWtlVW5pcXVlPEdy
YXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKICAgICB9CiAgICAgCiAgICAg
bV9sYXllclVwZGF0ZXItPnNjaGVkdWxlVXBkYXRlKCk7CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2
b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmll
d3BvcnRDb25zdHJhaW5lZExheWVycwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9y
dENvbnN0cmFpbnRzPiBjb25zdHJhaW50czsKICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigp
LmlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0
b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CisgICAgICAgICAg
ICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikp
OwogICAgICAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJs
ZUxheWVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChjb21wb3NpdG9yLmlzQXN5bmNTY3Jv
bGxhYmxlU3RpY2t5TGF5ZXIoKmxheWVyLCAmZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIp
ICYmIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CkBAIC00
ODAwLDcgKzQ4MDAsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0
b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogICAgICAgICAgICAgICAg
IHN0aWNreUNvbnRhaW5lck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigp
LT5wbGF0Zm9ybUxheWVyKCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5iYWNraW5n
KCktPnNjcm9sbENvbnRhaW5lckxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNGaXhlZFBvc2l0aW9u
ZWQoKSkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxGaXhlZFBv
c2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9y
dENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAgICAgICAgY29uc3RyYWludHMgPSBtYWtlVW5p
cXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVG
aXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggNGI4NmZlMmFkMTc1ZGNlODZhZDM4NTJiZGZjMTUy
ZmQxMzA4ZDQ1ZS4uMTI4Yzk2ZGFlMGIzMTAwNmNhMjVkNWE1NmM3MjBiYzg5MGQzNGYwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmRlc3Ry
b3lMYXllcigpCiB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmNyZWF0ZUxheWVyKCkKIHsK
ICAgICBBU1NFUlQoIW1fbGF5ZXIpOwotICAgIG1fbGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckxheWVyPigqdGhpcyk7CisgICAgbV9sYXllciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXI+
KCp0aGlzKTsKICAgICBzZXRIYXNMYXllcih0cnVlKTsKICAgICBtX2xheWVyLT5pbnNlcnRPbmx5
VGhpc0xheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwCmluZGV4IGJjNTUyN2I4YzQ2YTRkZTA2NmY2OWU1YTMxMGM4ODY4MTk2ZmMyM2EuLjFh
YWUwOWQwMGIyNmVhM2NhZGVhODY3MmUyNzc5MjliZmQxN2E2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC04OSw3ICs4OSw3IEBAIGludCBS
ZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgYm9vbCBmaXJzdExpbmUsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBS
ZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OnNl
dElubGluZUJveFdyYXBwZXIoSW5saW5lRWxlbWVudEJveCogaW5saW5lQm94KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAppbmRleCA5
YmI5YTUzOWQ2NjQyZGY5MDAyNmE3ODJhZjhjZjg0ZGM0OWRhMmE5Li40MTAzZGFkNDg0NGRkMjRh
MzAyYTczMmFmMjIxOWFjOTAwMDFjYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcApAQCAtNDIsNyArNDIsNyBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVsdGlDb2x1bW5GbG93KTsKIAogUmVuZGVyTXVs
dGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhZ21lbnRlZEZsb3coZG9jdW1lbnQs
IFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zcGFubmVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8U3Bh
bm5lck1hcD4oKSkKKyAgICAsIG1fc3Bhbm5lck1hcChtYWtlVW5pcXVlPFNwYW5uZXJNYXA+KCkp
CiAgICAgLCBtX2xhc3RTZXRXb3JrZWRPbihudWxscHRyKQogICAgICwgbV9jb2x1bW5Db3VudCgx
KQogICAgICwgbV9jb2x1bW5XaWR0aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAppbmRleCA0ZGEzYmQ3Mzc3MWJhMTcxOTBlYWMzNWRhNjM4ZTI0M2YxOTAyOTA3
Li4wYmY1MTkzZGU0ODQ0NWJjYzY3N2U5MTRlOGFkM2RmODFjZWI4MmRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg5Myw3ICsxODkzLDcgQEAgY29u
c3QgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YSYgUmVuZGVyT2JqZWN0OjpyYXJl
RGF0YSgpIGNvbnN0CiBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJP
YmplY3Q6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAg
ICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9p
ZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDNmYWFmYTExMjA2
NTI2MjNlMDY1ZTZhMjFjZTFjNzUxZGJhOTFhMzcuLjAzZGQwOGZlNmI3ZjBhNmRkMTVmMjFmMjMz
NWNjYWJjNWFmMDJhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOwogCiBSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVu
dCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVtYmVkZGVkT2Jq
ZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zbmFwc2hvdFJlc291cmNlKHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1fc25hcHNob3RS
ZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiAgICAgbV9zbmFw
c2hvdFJlc291cmNlLT5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDE4NmNhODcwZWQxMDkxM2Q1OGI4NTQ5ZWI5NmRlMzM2
ZTM0NTUzNTkuLmU5MWExMzM3MTk5MTJkMThmYTU1ZTM2ZDgzNTU4ODU3YzJkMThiMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTM3LDkgKzEzNyw5IEBA
IHZvaWQgUmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5CiAgICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NT
MiBzcGVjLCB5b3Ugb25seSB1c2UgZml4ZWQgdGFibGUgbGF5b3V0IGlmIGFuCiAgICAgICAgIC8v
IGV4cGxpY2l0IHdpZHRoIGlzIHNwZWNpZmllZCBvbiB0aGUgdGFibGUuICBBdXRvIHdpZHRoIGlt
cGxpZXMgYXV0byB0YWJsZSBsYXlvdXQuCiAgICAgICAgIGlmIChzdHlsZSgpLnRhYmxlTGF5b3V0
KCkgPT0gVGFibGVMYXlvdXRUeXBlOjpGaXhlZCAmJiAhc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5p
c0F1dG8oKSkKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
eGVkVGFibGVMYXlvdXQ+KHRoaXMpOworICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IG1ha2VV
bmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7
CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxBdXRvVGFibGVMYXlvdXQ+
KHRoaXMpOwogICAgIH0KIAogICAgIC8vIElmIGJvcmRlciB3YXMgY2hhbmdlZCwgaW52YWxpZGF0
ZSBjb2xsYXBzZWQgYm9yZGVycyBjYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcAppbmRleCA2OGMzYTE1ZDk1MTZiNWIzYzdjMmRkYWI0YWRhNDA5YTVkYzIwZGZhLi5h
MDJkOWMxNmYzYTI3Y2M1MjIwOTcxMDJjMjY5Yjc1NTUwOWQwMDFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIFJlbmRl
clRleHQ6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKIAogc3RkOjp1bmlxdWVfcHRy
PElubGluZVRleHRCb3g+IFJlbmRlclRleHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dDo6cG9z
aXRpb25MaW5lQm94KElubGluZVRleHRCb3gmIHRleHRCb3gpCkBAIC0xNTQ1LDcgKzE1NDUsNyBA
QCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVu
c2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgc2Vj
dXJlVGV4dFRpbWVyID0gc2VjdXJlVGV4dFRpbWVycygpLmFkZCh0aGlzLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgaWYgKCFzZWN1cmVUZXh0VGltZXIpCi0gICAgICAgIHNlY3VyZVRl
eHRUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7CisgICAg
ICAgIHNlY3VyZVRleHRUaW1lciA9IG1ha2VVbmlxdWU8U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7
CiAgICAgc2VjdXJlVGV4dFRpbWVyLT5yZXN0YXJ0KG9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFj
dGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGMx
NDQ1MWExOGVlYTdhNTcxYTI3Nzc4OThhNzljYzhiNDNmZjMxNDIuLjVmZWM2NzhjNmJiNWRmMGU0
OTIyYjAxMmMzZjI2OGRiYWI0YTdiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3
UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0KSBjb25zdAogICAgIC8vIEZJ
WE1FOiBNYXliZSB0aGVyZSBzaG91bGQgYmUgYSByZWdpb24gdHlwZSB0aGF0IGRvZXMgdGhpcyBh
dXRvbWF0aWNhbGx5LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtUmVwYWludFJl
Z2lvbkdyaWRTaXplID0gMTYgKiAxNjsKICAgICBpZiAobV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdp
b24tPmdyaWRTaXplKCkgPiBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplKQotICAgICAgICBt
X2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPihtX2Fj
Y3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOworICAgICAgICBtX2FjY3VtdWxhdGVk
UmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJl
Z2lvbi0+Ym91bmRzKCkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmZsdXNoQWNjdW11bGF0ZWRS
ZXBhaW50UmVnaW9uKCkgY29uc3QKQEAgLTcyNCw3ICs3MjQsNyBAQCBib29sIFJlbmRlclZpZXc6
OnVzZXNDb21wb3NpdGluZygpIGNvbnN0CiBSZW5kZXJMYXllckNvbXBvc2l0b3ImIFJlbmRlclZp
ZXc6OmNvbXBvc2l0b3IoKQogewogICAgIGlmICghbV9jb21wb3NpdG9yKQotICAgICAgICBtX2Nv
bXBvc2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMp
OworICAgICAgICBtX2NvbXBvc2l0b3IgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRv
cj4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX2NvbXBvc2l0b3I7CiB9CkBAIC03NDUsNyArNzQ1
LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIEltYWdlUXVhbGl0eUNvbnRyb2xsZXImIFJl
bmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9pbWFnZVF1
YWxpdHlDb250cm9sbGVyKQotICAgICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICAgICAgbV9p
bWFnZVF1YWxpdHlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbWFnZVF1YWxpdHlDb250cm9sbGVy
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CiB9CiAKQEAg
LTgzNCw3ICs4MzQsNyBAQCBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3I6OlJl
cGFpbnRSZWdpb25BY2N1bXVsYXRvcihSZW5kZXJWaWV3KiB2aWV3KQogCiAgICAgbV93YXNBY2N1
bXVsYXRpbmdSZXBhaW50UmVnaW9uID0gISFyb290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJl
cGFpbnRSZWdpb247CiAgICAgaWYgKCFtX3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRSZWdpb24pCi0g
ICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgICAgICByb290UmVuZGVyVmlldy0+bV9hY2N1bXVs
YXRlZFJlcGFpbnRSZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICBtX3Jvb3RWaWV3
ID0gbWFrZVdlYWtQdHIoKnJvb3RSZW5kZXJWaWV3KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGZkY2Q1OWM1MmM1ZjMyOGY1MjA5ZjAwYzFm
OGQ4MTZhZGM1Zjc2NjguLjQ0NTU4NDFhZjMyZmYxNTI1MmNmYTI4ZWQ4YTY5YzNlNDlmMWYzMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTEyOSw3
ICsxMjksNyBAQCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21T
dHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGZsbwogICAgICAgICBnRWxsaXBzaXNCb3hN
YXAgPSBuZXcgRWxsaXBzaXNCb3hNYXAoKTsKIAogICAgIEFTU0VSVCghaGFzRWxsaXBzaXNCb3go
KSk7Ci0gICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBz
dGQ6Om1ha2VfdW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRo
aXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgo
KSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRh
bCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgYXV0byogZWxsaXBz
aXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBtYWtlVW5pcXVlPEVsbGlwc2lzQm94
PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3Vw
Qm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHko
KSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7CiAgICAgc2V0SGFzRWxsaXBzaXNCb3godHJ1ZSk7CiAgICAgLy8gRklYTUU6
IERvIHdlIG5lZWQgYW4gUlRMIHZlcnNpb24gb2YgdGhpcz8KICAgICBpZiAobHRyICYmICh4KCkg
KyBsb2dpY2FsV2lkdGgoKSArIGVsbGlwc2lzV2lkdGgpIDw9IGJsb2NrUmlnaHRFZGdlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCA3ZGYyODI4OGE0ZDU1
YzJjN2QyNmFkNGJjMDE3NmQwYjc2MTc4MzY0Li4yNDdlNTVjMDY5ZTlmZTg4MWNhZjRiZmJjMmI0
YWVmMTllMzYxN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgK
QEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBSb290SW5saW5lQm94IDogcHVibGljIElubGluZUZs
b3dCb3gsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSb290SW5saW5lQm94PgogICAgICAgICBpZiAo
bV9mbG9hdHMpCiAgICAgICAgICAgICBtX2Zsb2F0cy0+YXBwZW5kKG1ha2VXZWFrUHRyKGZsb2F0
aW5nQm94KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZmxvYXRzID0gc3RkOjptYWtl
X3VuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7
CisgICAgICAgICAgICBtX2Zsb2F0cyA9IG1ha2VVbmlxdWU8Q2xlYW5MaW5lRmxvYXRMaXN0Pigx
LCBtYWtlV2Vha1B0cihmbG9hdGluZ0JveCkpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlRmxv
YXQoUmVuZGVyQm94JiBmbG9hdGluZ0JveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5kZXggZWM1ZTczNTZhNjRkMTI0OWRkYTExNDdlOGJi
YTMxZjQ3OTBiNGJmMi4uYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNmNGU4MTFjM2VhMWI5M2ZjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAK
QEAgLTEzMSwxMyArMTMxLDEzIEBAIHN0YXRpYyBTZWxlY3Rpb25EYXRhIGNvbGxlY3QoY29uc3Qg
U2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24sIGJvb2wKICAgICB3aGlsZSAo
c3RhcnQgJiYgc3RhcnQgIT0gc3RvcCkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9y
U2VsZWN0aW9uKCpzdGFydCwgc2VsZWN0aW9uKSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFy
ZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhl
eSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRh
LnJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5m
bz4oKnN0YXJ0LCB0cnVlKSk7CisgICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVy
cy5zZXQoc3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVl
KSk7CiAgICAgICAgICAgICBpZiAocmVwYWludERpZmZlcmVuY2UpIHsKICAgICAgICAgICAgICAg
ICBmb3IgKGF1dG8qIGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpzdGFydCk7IGJs
b2NrOyBibG9jayA9IGNvbnRhaW5pbmdCbG9ja0JlbG93VmlldygqYmxvY2spKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8mIGJsb2NrSW5mbyA9IG9sZFNlbGVjdGlvbkRhdGEuYmxvY2tzLmFk
ZChibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rp
b25JbmZvPigqYmxvY2spOworICAgICAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5p
cXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmJsb2NrKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMywxMyArMjEzLDEzIEBAIEludFJlY3Qg
U2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50IGNs
aXBUb1Zpc2libGVDb250CiAgICAgICAgIGlmICgoc3RhcnQtPmNhbkJlU2VsZWN0aW9uTGVhZigp
IHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpIHx8IHN0YXJ0ID09IG1fc2Vs
ZWN0aW9uQ29udGV4dC5lbmQoKSkKICAgICAgICAgICAgICYmIHN0YXJ0LT5zZWxlY3Rpb25TdGF0
ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgLy8gQmxv
Y2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fw
cy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICByZW5kZXJlcnMu
c2V0KHN0YXJ0LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwg
Y2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOworICAg
ICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25J
bmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50
OjpZZXMpKTsKICAgICAgICAgICAgIGF1dG8qIGJsb2NrID0gc3RhcnQtPmNvbnRhaW5pbmdCbG9j
aygpOwogICAgICAgICAgICAgd2hpbGUgKGJsb2NrICYmICFpczxSZW5kZXJWaWV3PigqYmxvY2sp
KSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+
JiBibG9ja0luZm8gPSByZW5kZXJlcnMuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zp
c2libGVDb250ZW50OjpZZXMpOworICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlx
dWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2NrLCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBD
bGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsKICAgICAgICAgICAgICAgICBibG9jayA9IGJsb2Nr
LT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjgxLDcg
KzI4MSw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBu
ZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgc2VsZWN0aW9uSXRlcmF0b3Ig
PSBTZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAgICAgZm9yIChhdXRvKiBjdXJy
ZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsgY3VycmVudFJlbmRlcmVyICYmIGN1cnJlbnRS
ZW5kZXJlciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJh
dG9yLm5leHQoKSkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpj
dXJyZW50UmVuZGVyZXIsIG1fc2VsZWN0aW9uQ29udGV4dCkpIHsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0cnVlKTsKKyAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25J
bmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0
cnVlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAgICAgICAgIGZvciAoYXV0
byYgcmVjdCA6IHNlbGVjdGlvbkluZm8tPmNvbGxlY3RlZFNlbGVjdGlvblJlY3RzKCkpCiAgICAg
ICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkUmVjdChzZWxlY3Rpb25JbmZv
LT5yZXBhaW50Q29udGFpbmVyKCksIHJlY3QpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgU2Vs
ZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFp
bnRNb2RlIGJsb2NrUmVwCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJs
b2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVjdGVkQmxvY2tzLmFkZChjb250
YWluaW5nQmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBp
ZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4o
KmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1
ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpjb250YWluaW5nQmxvY2spOwogICAgICAgICAg
ICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2Nr
KCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgICAgICAgICAgICAgbV9zZWxl
Y3Rpb25SZWN0R2F0aGVyZXIuYWRkR2FwUmVjdHMoYmxvY2tJbmZvLT5yZXBhaW50Q29udGFpbmVy
KCksIGJsb2NrSW5mby0+cmVjdHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dC5jcHAKaW5kZXggOGM3NjZlNmRlMmM3NGFkMDM3OTczMzMxZmM3ZjVhNDc0
OTAxNWI4ZS4uYzM2MmY0ZTU3YjAwZjljZTM5YTczZWNlODExYzJjODMyZDY1MGJhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtOTk3LDcg
Kzk5Nyw3IEBAIExheW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNp
Z25lZCBsaW5lQ291bnQsIGNvbnN0IFJlbmRlckJsb2NrCiBjb25zdCBSdW5SZXNvbHZlciYgTGF5
b3V0OjpydW5SZXNvbHZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3J1blJlc29sdmVyKQotICAg
ICAgICBtX3J1blJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9j
a0Zsb3dSZW5kZXJlciwgKnRoaXMpOworICAgICAgICBtX3J1blJlc29sdmVyID0gbWFrZVVuaXF1
ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOwogICAgIHJldHVybiAq
bV9ydW5SZXNvbHZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDFiZjk4ZTRlZWI0M2JhMjJjZGE0
ZTZmNWQzYmMyYTVmOWZjNGI0YjcuLjA2MjViMTZiZDU0MzE5NzNlZDMxZGU5OThhZWQ4ODliMDEy
YmEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIHBhaW50Rmxvdyhj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBQYWludElu
Zm8mIHBhaQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGRlYnVnU2hhZG93ID0g
bnVsbHB0cjsKICAgICBpZiAoZmxvdy5zZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0Jv
cmRlcnNFbmFibGVkKCkpIHsKLSAgICAgICAgZGVidWdTaGFkb3cgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWws
IHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CisgICAgICAgIGRlYnVnU2hhZG93ID0gbWFr
ZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6
Tm9ybWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAsIDIwMCkpOwogICAgICAgICB0ZXh0UGFpbnRl
ci5zZXRTaGFkb3coZGVidWdTaGFkb3cuZ2V0KCkpOwogICAgIH0KIApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHZvaWQgZ2VuZXJhdGVMaW5lQm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0
IExheW91dCYgbGF5b3V0KQogICAgICAgICBCaWRpUnVuTGlzdDxCaWRpUnVuPiBiaWRpUnVuczsK
ICAgICAgICAgZm9yIChhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsgaXQgIT0gcmFuZ2UuZW5kKCk7
ICsraXQpIHsKICAgICAgICAgICAgIGF1dG8gcnVuID0gKml0OwotICAgICAgICAgICAgYmlkaVJ1
bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocnVuLmxvY2FsU3RhcnQoKSwg
cnVuLmxvY2FsRW5kKCksIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4ocnVuLnJlbmRlcmVyKCkp
LCBiaWRpQ29udGV4dC5wdHIoKSwgVV9MRUZUX1RPX1JJR0hUKSk7CisgICAgICAgICAgICBiaWRp
UnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4u
bG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJp
ZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKICAgICAgICAgfQogCiAgICAgICAg
IExpbmVJbmZvIGxpbmVJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1Np
emluZy5jcHAKaW5kZXggM2JhMTMwZDQ1NTlkNzI5MmQ4OTFmNTUzY2YxNDgwZjg2NmJiMmJhZC4u
NGI0M2U2YWNiZTBlZWRhZjRlYWY0ZDJlNWQ1YTQ0NjM5MDYwNTNlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9p
ZCBUZXh0QXV0b1NpemluZzo6YWRkVGV4dE5vZGUoVGV4dCYgbm9kZSwgZmxvYXQgY2FuZGlkYXRl
U2l6ZSkKICAgICBMT0coVGV4dEF1dG9zaXppbmcsICIgYWRkQXV0b1NpemVkTm9kZSAlcCBjYW5k
aWRhdGVTaXplPSVmIiwgJm5vZGUsIGNhbmRpZGF0ZVNpemUpOwogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV90ZXh0Tm9kZXMuYWRkPFRleHRBdXRvU2l6aW5nSGFzaFRyYW5zbGF0b3I+KG5vZGUucmVu
ZGVyZXIoKS0+c3R5bGUoKSwgbnVsbHB0cik7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0QXV0b1NpemluZ1ZhbHVlPigpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOwogICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUtPmFkZFRleHROb2RlKG5vZGUsIGNhbmRpZGF0ZVNpemUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKaW5kZXggMmIxYzFm
YTAzY2ExYzU3NTY5MDI3N2E1ZTgxMjg3MTAxMGQ0NDY3ZS4uZDExNjYxNWE3MjZjNWEwYTk0M2Q5
YjlmNmUwOTQwYjk1ZTY5MDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVCcmVha2VyLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIExpbmVCcmVha2VyOjpza2lw
TGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUluZm8m
CiAgICAgICAgIGlmIChvYmplY3QuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAg
ICAgIHNldFN0YXRpY1Bvc2l0aW9ucyhtX2Jsb2NrLCBkb3duY2FzdDxSZW5kZXJCb3g+KG9iamVj
dCksIHdpZHRoLnNob3VsZEluZGVudFRleHQoKSk7CiAgICAgICAgICAgICBpZiAob2JqZWN0LnN0
eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBy
ZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4oMCwgMSwg
b2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CisgICAgICAgICAg
ICAgICAgcmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlSdW4+KDAsIDEs
IG9iamVjdCwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSkpOwogICAgICAgICAg
ICAgICAgIGxpbmVJbmZvLmluY3JlbWVudFJ1bnNGcm9tTGVhZGluZ1doaXRlc3BhY2UoKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChvYmplY3QuaXNGbG9hdGluZygpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAppbmRleCA0
YjE1OTdlOWYyMWM5Y2Q0YjJmMGQ4ODM0NzQ0Nzc1ZjFkOGJkZTAxLi5kNTIwOTJiNjhlZDhlMmM4
ZmRhNTE1YzkwY2Q1MjIzNTZkNjU1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBJbnRTaGFwZUludGVy
dmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KGludCB5KSBjb25zdAogc3Rk
Ojp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6
Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3QKIHsKICAg
ICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChvZmZzZXQoKSA+IHNoYXBlTWFyZ2luKSA/IHNp
emUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiArIHNoYXBlTWFyZ2luICogMjsKLSAgICBhdXRv
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpbklu
dGVydmFsc1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFyZ2luLCBvZmZzZXQoKSkpOworICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxz
U2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CiAgICAgTWFyZ2luSW50ZXJ2
YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ioc2hhcGVNYXJnaW4pOwogCiAgICAg
Zm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygpLm1heFkoKTsgKyt5KSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDMwMjMxYTBiZTFi
YmM2M2U0YmUzZDI1MDUxMmJlZDNkMTk1OTQwOTkuLmY1ZWZlZmRkMzJiMzA1NDdhZGJkOGViMDhm
NTRlNjNiMDI0MGZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCkBAIC00NiwyNCArNDYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlSW5zZXRTaGFwZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiBib3VuZHMpCiB7CiAgICAgQVNTRVJUKGJvdW5kcy5yZWN0KCkud2lkdGgoKSA+PSAwICYmIGJv
dW5kcy5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Qm94U2hhcGU+KGJvdW5kcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94U2hhcGU+KGJvdW5k
cyk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUNpcmNsZVNoYXBl
KGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQgcmFkaXVzKQogewogICAgIEFTU0VSVChy
YWRpdXMgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+
KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIueSgpIC0gcmFkaXVzLCByYWRp
dXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMs
IGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRp
dXMsIHJhZGl1cykpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVF
bGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBjb25zdCBGbG9hdFNpemUmIHJh
ZGlpKQogewogICAgIEFTU0VSVChyYWRpaS53aWR0aCgpID49IDAgJiYgcmFkaWkuaGVpZ2h0KCkg
Pj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0
UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdo
dCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFk
aWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIs
IHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9p
bnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBvbHlnb25TaGFwZT4oV1RGTW92ZSh2ZXJ0aWNlcyksIGZpbGxS
dWxlKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9hdFJlY3QgcGh5c2ljYWxSZWN0VG9Mb2dpY2Fs
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbG9naWNhbEJveEhlaWdodCwgV3JpdGluZ01v
ZGUgd3JpdGluZ01vZGUpCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBl
PiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFwZSwgY29uc3Qg
TGEKICAgICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVlcyA9IHBvbHlnb24udmFsdWVz
KCk7CiAgICAgICAgIHNpemVfdCB2YWx1ZXNTaXplID0gdmFsdWVzLnNpemUoKTsKICAgICAgICAg
QVNTRVJUKCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGbG9hdFBv
aW50Pj4odmFsdWVzU2l6ZSAvIDIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZs
b2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1
ZXNTaXplIC8gMik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZXNTaXpl
OyBpICs9IDIpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgdmVydGV4KAogICAgICAgICAgICAg
ICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWVzLmF0KGkpLCBib3hXaWR0aCksCkBAIC0xNzks
NyArMTc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hh
cGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKIAogICAgIEludFJlY3QgaW1hZ2VS
ZWN0ID0gc25hcHBlZEludFJlY3QoaW1hZ2VSKTsKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBz
bmFwcGVkSW50UmVjdChtYXJnaW5SKTsKLSAgICBhdXRvIGludGVydmFscyA9IHN0ZDo6bWFrZV91
bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5S
ZWN0LnkoKSk7CisgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50
ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJ
WE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1
bmFjY2VsZXJhdGVkLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFVuYWNjZWxlcmF0ZWQp
OwogCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3Jl
YXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICAgICAg
fQogICAgIH0KIAotICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhc3Rl
clNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKKyAgICBhdXRv
IHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMp
LCBtYXJnaW5SZWN0LnNpemUoKSk7CiAgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3
cml0aW5nTW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBtYXJnaW47CiAgICAgcmV0
dXJuIHJhc3RlclNoYXBlOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFw
ZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwg
V3JpCiAKICAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCByb3VuZGVkUmVjdC5yZWN0KCkud2lkdGgo
KSwgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpKTsKICAgICBGbG9hdFJvdW5kZWRSZWN0IGJv
dW5kcyhyZWN0LCByb3VuZGVkUmVjdC5yYWRpaSgpKTsKLSAgICBhdXRvIHNoYXBlID0gc3RkOjpt
YWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICBhdXRvIHNoYXBlID0gbWFrZVVuaXF1
ZTxCb3hTaGFwZT4oYm91bmRzKTsKICAgICBzaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdN
b2RlOwogICAgIHNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAppbmRleCBjZDk0Zjg5YzAy
YjBiOGMxMzUxOTQ1N2U0NGQwZGRhZjZkODdmMWZhLi45NDg0MzE3MTk0N2MwMjMwOWFiN2Y0ZmIx
Yjk3YzI2Mzg4MmVlMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlT3V0c2lkZUluZm8uaApAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNoYXBlT3V0
c2lkZUluZm8gZmluYWwgewogICAgICAgICBJbmZvTWFwJiBpbmZvTWFwID0gU2hhcGVPdXRzaWRl
SW5mbzo6aW5mb01hcCgpOwogICAgICAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogaW5mbyA9IGlu
Zm9NYXAuZ2V0KCZrZXkpKQogICAgICAgICAgICAgcmV0dXJuICppbmZvOwotICAgICAgICBhdXRv
IHJlc3VsdCA9IGluZm9NYXAuYWRkKCZrZXksIHN0ZDo6bWFrZV91bmlxdWU8U2hhcGVPdXRzaWRl
SW5mbz4oa2V5KSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQoJmtleSwgbWFr
ZVVuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKICAgICAgICAgcmV0dXJuICpyZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOwogICAgIH0KICAgICBzdGF0aWMgdm9pZCByZW1vdmVJbmZvKGNvbnN0
IFJlbmRlckJveCYga2V5KSB7IGluZm9NYXAoKS5yZW1vdmUoJmtleSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4IDBjOThmOTE2NmY3
ZTE1Mjk3MDNiY2RiMmM4YzgzY2M4MGJiN2JmMjQuLjc0NGM5MGI4ZmIzZjUyNzY4YTUzOGQyMTM1
ODM2MmNhNjM0ODI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jh
c2ljU2hhcGVzLmNwcApAQCAtMzU4LDcgKzM1OCw3IEBAIFJlZjxCYXNpY1NoYXBlPiBCYXNpY1No
YXBlUGF0aDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBj
CiAKICAgICBhdXRvJiBmcm9tUGF0aCA9IGRvd25jYXN0PEJhc2ljU2hhcGVQYXRoPihmcm9tKTsK
IAotICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRo
Qnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIHJlc3VsdGluZ1BhdGhCeXRlcyA9IG1ha2VVbmlxdWU8
U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFt
KCpmcm9tUGF0aC5tX2J5dGVTdHJlYW0sICptX2J5dGVTdHJlYW0sICpyZXN1bHRpbmdQYXRoQnl0
ZXMsIHByb2dyZXNzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gQmFzaWNTaGFwZVBhdGg6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdGluZ1BhdGhCeXRlcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCBlN2JiMDYxNjUwMmQ5OWQ2ZGI0MzkyYmI0Njhh
OWFiNDY5Y2U0OTRhLi4yYzEyZGQ5YjQwZGQ0MGIzYzBiZjY3NDkzMjJhZTJiMGZkMWUwNzBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaApAQCAtOTUs
NyArOTUsNyBAQCBjbGFzcyBJbWFnZUNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnRE
YXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIo
RG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewot
ICAgICAgICBhdXRvIGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPiht
X2ltYWdlLmNvcHlSZWYoKSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBtYWtlVW5pcXVlPEltYWdl
Q29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKICAgICAgICAgaW1hZ2UtPnNldEFsdFRl
eHQoYWx0VGV4dCgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KQEAgLTEyNiw3ICsx
MjYsNyBAQCBjbGFzcyBUZXh0Q29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEg
ewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRS
ZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KG1fdGV4dCk7IH0KKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQogCiAgICAg
U3RyaW5nIG1fdGV4dDsKIH07CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgQ291bnRlckNvbnRl
bnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVy
T2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHls
ZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJ
bnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDb3VudGVyQ29udGVudERhdGE+KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+
KGNvdW50ZXIoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudERh
dGE+KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOwogICAgIH0KIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gbV9jb3VudGVyOwpAQCAtMTkwLDcgKzE5
MCw3IEBAIGNsYXNzIFF1b3RlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEg
ewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRS
ZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUoKSk7IH0KIAog
ICAgIFF1b3RlVHlwZSBtX3F1b3RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggZjNkOTFkYzhkYmM4ZDllNDZjNjAxYjk1ODQzYjlhOTUy
ZjNiMmQxZC4uMzAwMTRkMDRmNzBmYjkxODE3NDI4NzYwM2ZkZWFiNzIzOTU2MTRmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgRmlsbExheWVyOjpGaWxsTGF5ZXIoRmlsbExheWVyVHlwZSB0eXBlKQogfQogCiBGaWxs
TGF5ZXI6OkZpbGxMYXllcihjb25zdCBGaWxsTGF5ZXImIG8pCi0gICAgOiBtX25leHQoby5tX25l
eHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisg
ICAgOiBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6
IG51bGxwdHIpCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAgICAsIG1feFBvc2l0aW9uKG8u
bV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBvc2l0aW9uKQpAQCAtMTE3LDcg
KzExNyw3IEBAIEZpbGxMYXllcjo6fkZpbGxMYXllcigpCiAKIEZpbGxMYXllciYgRmlsbExheWVy
OjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQogewotICAgIG1fbmV4dCA9IG8ubV9uZXh0
ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOworICAg
IG1fbmV4dCA9IG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBu
dWxscHRyOwogCiAgICAgbV9pbWFnZSA9IG8ubV9pbWFnZTsKICAgICBtX3hQb3NpdGlvbiA9IG8u
bV94UG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAppbmRleCAyNDliYTQ3ZTU4NDNlY2M2MmU2ZmQ0ZjI2YWYxY2Y1MzhhMTYzZjljLi5m
YjQzYzIwZTVjZTk5ZWNlMTlmNDUyZmQ5Zjg3OTY0ZDgxNGJiN2FlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBA
QCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjbG9uZVB0cihj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
U3R5bGU+KHN0eWxlLCBDbG9uZSk7CiB9CiAKIFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKQEAgLTQwOSw3ICs0MDksNyBAQCBSZW5kZXJTdHlsZSog
UmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gcHNldQogICAgIFJlbmRlclN0eWxlKiByZXN1bHQgPSBwc2V1ZG8uZ2V0KCk7CiAKICAg
ICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzKQotICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKKyAgICAgICAgbV9jYWNo
ZWRQc2V1ZG9TdHlsZXMgPSBtYWtlVW5pcXVlPFBzZXVkb1N0eWxlQ2FjaGU+KCk7CiAKICAgICBt
X2NhY2hlZFBzZXVkb1N0eWxlcy0+YXBwZW5kKFdURk1vdmUocHNldWRvKSk7CiAKQEAgLTEwNTgs
NyArMTA1OCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0
eShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMpCi0gICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA9IHN0ZDo6
bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBkYXRhLmN1c3RvbVBhaW50
V2F0Y2hlZFByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKICAgICBk
YXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMtPmFkZChuYW1lKTsKIH0KIApAQCAtMTMw
MSw3ICsxMzAxLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChSZWZQdHI8U3R5bGVJ
bWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuOwotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihp
bWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8
SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwoKSksIGFkZCk7CiB9CiAKIHZv
aWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRk
KQpAQCAtMTMxMCwxMyArMTMxMCwxMyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkKICAgICBpZiAoYWRkICYmIGRhdGEuY29udGVu
dCkgewogICAgICAgICBhdXRvJiBsYXN0ID0gbGFzdENvbnRlbnQoKmRhdGEuY29udGVudCk7CiAg
ICAgICAgIGlmICghaXM8VGV4dENvbnRlbnREYXRhPihsYXN0KSkKLSAgICAgICAgICAgIGxhc3Qu
c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CisgICAg
ICAgICAgICBsYXN0LnNldE5leHQobWFrZVVuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRDb250ZW50ID0gZG93bmNh
c3Q8VGV4dENvbnRlbnREYXRhPihsYXN0KTsKICAgICAgICAgICAgIHRleHRDb250ZW50LnNldFRl
eHQodGV4dENvbnRlbnQudGV4dCgpICsgc3RyaW5nKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
Ci0gICAgICAgIGRhdGEuY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRh
PihzdHJpbmcpOworICAgICAgICBkYXRhLmNvbnRlbnQgPSBtYWtlVW5pcXVlPFRleHRDb250ZW50
RGF0YT4oc3RyaW5nKTsKICAgICAgICAgYXV0byYgYWx0VGV4dCA9IGRhdGEuYWx0VGV4dDsKICAg
ICAgICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQogICAgICAgICAgICAgZGF0YS5jb250ZW50LT5z
ZXRBbHRUZXh0KGFsdFRleHQpOwpAQCAtMTMyNywxMiArMTMyNywxMiBAQCB2b2lkIFJlbmRlclN0
eWxlOjpzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gY291bnRlciwg
Ym9vbCBhZGQpCiB7CiAgICAgaWYgKCFjb3VudGVyKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0
Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3Vu
dGVyKSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0
YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENv
bnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkKIHsKLSAgICBzZXRDb250ZW50KHN0ZDo6
bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBhZGQpOworICAgIHNldENvbnRl
bnQobWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CiB9CiAKIHZvaWQg
UmVuZGVyU3R5bGU6OnNldENvbnRlbnRBbHRUZXh0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAt
MTU1MSw3ICsxNTUxLDcgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vz
c0NvdW50ZXJEaXJlY3RpdmVzKCkKIHsKICAgICBhdXRvJiBtYXAgPSBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLmNvdW50ZXJEaXJlY3RpdmVzOwogICAgIGlmICghbWFwKQotICAgICAg
ICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCk7CisgICAgICAg
IG1hcCA9IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKICAgICByZXR1cm4gKm1h
cDsKIH0KIApAQCAtMTY3MSwxNCArMTY3MSwxNCBAQCB2b2lkIFJlbmRlclN0eWxlOjphZGp1c3RU
cmFuc2l0aW9ucygpCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9u
cygpCiB7CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlv
bnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gbWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0
PigpOwogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9uczsKIH0K
IAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKCkKIHsKICAg
ICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMpCi0gICAg
ICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAg
ICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9uczsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVm
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZz
LmNwcAppbmRleCAyMGIyYTgxMTRiMGM4ZTllYmQ0ODI3MDc5YTk4MjBmMmVjMGRjZGMyLi42ZTM3
Y2Y4ZmI4YWJhNTVlYzMzMGE5NjAzM2E4YTk1NGM3Y2IwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcApAQCAtMjAx
LDcgKzIwMSw3IEBAIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKCkKIAog
aW5saW5lIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKGNvbnN0IFN0eWxl
U2hhZG93U1ZHRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlU2hhZG93U1ZHRGF0
YT4oKQotICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93
RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQorICAgICwgc2hhZG93KG90aGVyLnNoYWRv
dyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5k
ZXggM2Q2MWM5NGMwMTY2MTYwODU4ZGFiZDg0MDlmYzQwODY3MGU1MDFjYS4uYzE3ZWFmODU5YjBi
ZmFhN2RhYmMwMDhkNGU3NDBmYzYzMGE0YjgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMzMsNyArMzMsNyBAQCBTaGFkb3dEYXRhOjpT
aGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCiAgICAgLCBtX2NvbG9yKG8ubV9jb2xvcikK
ICAgICAsIG1fc3R5bGUoby5tX3N0eWxlKQogICAgICwgbV9pc1dlYmtpdEJveFNoYWRvdyhvLm1f
aXNXZWJraXRCb3hTaGFkb3cpCi0gICAgLCBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5p
cXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQorICAgICwgbV9uZXh0KG8ubV9u
ZXh0ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby5tX25leHQpIDogbnVsbHB0cikKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGFkMmNiZDk1N2VlZjgyNTYwY2ZiMzUyZTlmNTBiMzll
NjMzYTI2ZmYuLjk2ZGJiYTAwN2U2YTY0YTdkNjk3YTI5YTIxZDYyMWFkNDQ3NTRiNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWRE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWRE
YQogICAgICwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihvLnZpc2l0ZWRMaW5rVGV4dEVt
cGhhc2lzQ29sb3IpCiAgICAgLCBjYXJldENvbG9yKG8uY2FyZXRDb2xvcikKICAgICAsIHZpc2l0
ZWRMaW5rQ2FyZXRDb2xvcihvLnZpc2l0ZWRMaW5rQ2FyZXRDb2xvcikKLSAgICAsIHRleHRTaGFk
b3coby50ZXh0U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hh
ZG93KSA6IG51bGxwdHIpCisgICAgLCB0ZXh0U2hhZG93KG8udGV4dFNoYWRvdyA/IG1ha2VVbmlx
dWU8U2hhZG93RGF0YT4oKm8udGV4dFNoYWRvdykgOiBudWxscHRyKQogICAgICwgY3Vyc29yRGF0
YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQpCiAgICAgLCBlZmZlY3RpdmVa
b29tKG8uZWZmZWN0aXZlWm9vbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA2ZmJiMmI3
YjBjM2ViMDNlODY5YTFlYWFjOTE2MTExOWM5YzYxZTliLi5iZGQwMTkxNWFhMjc4ZGQ2YTY2NDhm
ZjRjM2ZiZGIzZmNjZDE0MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xMzksMTMg
KzEzOSwxMyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwgc2Nyb2xsU25hcEFyZWEo
by5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgogICAgICwgY29udGVudChvLmNvbnRlbnQgPyBvLmNv
bnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3Vu
dGVyRGlyZWN0aXZlcyA/IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8u
Y291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKKyAgICAsIGNvdW50ZXJEaXJlY3RpdmVzKG8u
Y291bnRlckRpcmVjdGl2ZXMgPyBtYWtlVW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCpvLmNv
dW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCiAgICAgLCBhbHRUZXh0KG8uYWx0VGV4dCkKLSAg
ICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4o
Km8uYm94U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBib3hTaGFkb3coby5ib3hTaGFkb3cgPyBt
YWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBudWxscHRyKQogICAgICwgd2ls
bENoYW5nZShvLndpbGxDaGFuZ2UpCiAgICAgLCBib3hSZWZsZWN0KG8uYm94UmVmbGVjdCkKLSAg
ICAsIGFuaW1hdGlvbnMoby5hbmltYXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25M
aXN0Pigqby5hbmltYXRpb25zKSA6IG51bGxwdHIpCi0gICAgLCB0cmFuc2l0aW9ucyhvLnRyYW5z
aXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby50cmFuc2l0aW9ucykg
OiBudWxscHRyKQorICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBtYWtlVW5pcXVlPEFu
aW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKKyAgICAsIHRyYW5zaXRpb25z
KG8udHJhbnNpdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25z
KSA6IG51bGxwdHIpCiAgICAgLCBtYXNrKG8ubWFzaykKICAgICAsIG1hc2tCb3hJbWFnZShvLm1h
c2tCb3hJbWFnZSkKICAgICAsIHBhZ2VTaXplKG8ucGFnZVNpemUpCkBAIC0xNzAsNyArMTcwLDcg
QEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJ
dGVtcykKICAgICAsIGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYpCiAgICAgLCBjdXN0b21Qcm9w
ZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykKLSAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gc3RkOjptYWtlX3VuaXF1ZTxI
YXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0
cikKKyAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNo
ZWRQcm9wZXJ0aWVzID8gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50
V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMp
CiAgICAgLCB0b3VjaEFjdGlvbnMoby50b3VjaEFjdGlvbnMpCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMmM2ZjMxNzhl
ZWIyNmM3YjJjMGQ5NWFlMTA4YjdlZmNjNmUyMmM0ZS4uMjRjZGU0YmQ2MWU3MTRjMjMyM2I5ZTVj
ZDJjZjI2OWUyODQ1ZjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVuZGVyU1ZHSW1hZ2U6OlJlbmRl
clNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAg
ICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1V
cGRhdGUodHJ1ZSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3VyY2UobWFrZVVuaXF1ZTxSZW5k
ZXJJbWFnZVJlc291cmNlPigpKQogewogICAgIGltYWdlUmVzb3VyY2UoKS5pbml0aWFsaXplKCp0
aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lLmNwcAppbmRleCAzYzMxMDU2ZDFjYWIxZmVhMTA0OTA3ODBkMDBjOGRjZDJjNzk4MDY4Li5i
YTFjZDA1MmRhZGFhMWNlMTg0MWM3YzIzY2FmMzNmYWE0ZTM0N2ViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIFJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93
Qm94PiBSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQogewotICAgIGF1dG8g
Ym94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgYXV0
byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsKICAgICBib3gtPnNl
dEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmlu
ZGV4IDY3ZTZmOTg5N2QyNzc0NGZkNDEzM2ZmMjc2NzE0YzRlOWRhNjY1YjAuLmRiZjQ5MDNmODlm
NGRjOTJlZGZmMzA1MzkyNTg2OWYzMmUyZDk5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtMTEzLDcgKzExMyw3
IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0
Qm94PiBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KCkKIHsKLSAgICBhdXRvIGJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW5saW5lVGV4dEJveD4oKnRoaXMpOworICAgIGF1dG8g
Ym94ID0gbWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiAgICAgYm94LT5zZXRI
YXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAgIHJldHVybiBib3g7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCmluZGV4IDFiM2VmMjRjYzkyZDIwNTJhMzRhYWQyMDg4MjMzMGUxYTEyM2I4NGYuLjFhZDI2
NDk2NDY3MDljMjNmMGRiOWNmYWU0Yjg2M2MyNDdiMzY5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBA
IC04OCw3ICs4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgRmxvYXRSZWN0IHRh
cmdldEJvdW5kaW5nQm94ID0gZmlsdGVyLnRhcmdldEJvdW5kaW5nQm94KCk7CiAKICAgICAvLyBB
ZGQgZWZmZWN0cyB0byB0aGUgYnVpbGRlcgotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOwor
ICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3Jh
cGhpYzo6Y3JlYXRlKGZpbHRlcikpOwogICAgIGJ1aWxkZXItPnNldFByaW1pdGl2ZVVuaXRzKGZp
bHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpKTsKICAgICBidWlsZGVyLT5zZXRUYXJnZXRC
b3VuZGluZ0JveCh0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgCkBAIC0xMjIsNyArMTIyLDcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBbHJlYWR5
IGJ1aWx0LCBvciB3ZSdyZSBpbiBhIGN5Y2xlLCBvciB3ZSdyZSBtYXJrZWQgZm9yIHJlbW92YWwu
IFJlZ2FyZGxlc3MsIGp1c3QgZG8gbm90aGluZyBtb3JlIG5vdy4KICAgICB9CiAKLSAgICBhdXRv
IGZpbHRlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckRhdGE+KCk7CisgICAgYXV0byBm
aWx0ZXJEYXRhID0gbWFrZVVuaXF1ZTxGaWx0ZXJEYXRhPigpOwogICAgIEZsb2F0UmVjdCB0YXJn
ZXRCb3VuZGluZ0JveCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCk7CiAKICAgICBmaWx0
ZXJEYXRhLT5ib3VuZGFyaWVzID0gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxT
VkdGaWx0ZXJFbGVtZW50PigmZmlsdGVyRWxlbWVudCgpLCBmaWx0ZXJFbGVtZW50KCkuZmlsdGVy
VW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggZDhh
ZDA4MDQ2NmM1YzZkOWVlY2YwNzhjZGZmNjQyNmM2MTRhMGNlMi4uNTUyY2U1YTMzYTgwNjJlNmJl
ZTBiMDRhZTNmMTYwZjA5OWViNTJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xMTksNyAr
MTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KIAogICAgIGF1dG8mIGdyYWRpZW50RGF0
YSA9IG1fZ3JhZGllbnRNYXAuYWRkKCZyZW5kZXJlciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwogICAgIGlmICghZ3JhZGllbnREYXRhKQotICAgICAgICBncmFkaWVudERhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKKyAgICAgICAgZ3JhZGllbnREYXRhID0gbWFrZVVu
aXF1ZTxHcmFkaWVudERhdGE+KCk7CiAKICAgICBib29sIGlzUGFpbnRpbmdUZXh0ID0gcmVzb3Vy
Y2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1RleHQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuY3BwCmluZGV4IGFhNTc2NWVkMzc5YjZhYjFiOTQ0NzI2ZjViNWVlNDU0MzgzYzQ2
NGUuLjRjODE5YjliYzU1ZGMyYmZhODJmYmJjMDk3ZjYzNzU4NWI1YjEyNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFw
cGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBi
b29sIG1pc3NpbmdNYXNrZXJEYXRhID0gIW1fbWFza2VyLmNvbnRhaW5zKCZyZW5kZXJlcik7CiAg
ICAgaWYgKG1pc3NpbmdNYXNrZXJEYXRhKQotICAgICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVy
LCBzdGQ6Om1ha2VfdW5pcXVlPE1hc2tlckRhdGE+KCkpOworICAgICAgICBtX21hc2tlci5zZXQo
JnJlbmRlcmVyLCBtYWtlVW5pcXVlPE1hc2tlckRhdGE+KCkpOwogCiAgICAgTWFza2VyRGF0YSog
bWFza2VyRGF0YSA9IG1fbWFza2VyLmdldCgmcmVuZGVyZXIpOwogICAgIEFmZmluZVRyYW5zZm9y
bSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5z
Zm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
aAppbmRleCAyOWU4ZTdjMjQ3NTY1ODc5MmVlNGVkNGVkMDgyMGZhZWVjOWJkYzBjLi5kZjAxN2Jh
MWJmYzBjY2Y3YWVhOTNhM2JiMmY3ZmM3ODhmNjk2Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC0zMSw2
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAog
c3RydWN0IE1hc2tlckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuLmNwcAppbmRleCBjYzJjYmZjZjBmZTlhNTllY2UxNWY1MmYzNTcyZGI1OWQxNjMyMGQ2
Li4zMWJjNWYxOTMxYmRhZTUwYWFjNjYxMzU5ZmMwYTI2ZjE3ODU4NmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNl
UGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIGF1dG8gcGF0
dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EYXRhPigpOworICAgIGF1dG8gcGF0
dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT5w
YXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHRy
dWUsIHRydWUpOwogCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApp
bmRleCAzNGIwYWU3NWJkYzAwNTY1NzZkNTEzODAxODVlZmU2YmM3MmM3MDZlLi42YTY3MTE4ZmYx
YjI1OGIzMDNjOTU2Mzg1OTNmNDc0ZWU4OWJiZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtNzksNyArNzksNyBAQCBSZW5kZXJT
VkdTaGFwZTo6flJlbmRlclNWR1NoYXBlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbmRlclNWR1No
YXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKIHsKLSAgICBtX3BhdGggPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhdGg+KHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KCZncmFwaGljc0VsZW1lbnQoKSkp
OworICAgIG1fcGF0aCA9IG1ha2VVbmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGljc0VsZW1lbnQo
JmdyYXBoaWNzRWxlbWVudCgpKSk7CiAgICAgcHJvY2Vzc01hcmtlclBvc2l0aW9ucygpOwogCiAg
ICAgbV9maWxsQm91bmRpbmdCb3ggPSBjYWxjdWxhdGVPYmplY3RCb3VuZGluZ0JveCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4IGJmNzg2
NDQzZGRkNjBkNjIxYmNkNTc5Yjg3NzBlZGNkOTFkMjlmYTkuLjljNzM3Y2FmZjhiOTI3NmNjNDEw
NjAyZjU3OWE5ZjM2NGU1YTA4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlcy5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIFNWR1Jlc291cmNlczo6
c2V0Q2xpcHBlcihSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIpCiAgICAgQVNTRVJU
KGNsaXBwZXItPnJlc291cmNlVHlwZSgpID09IENsaXBwZXJSZXNvdXJjZVR5cGUpOwogCiAgICAg
aWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJN
YXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsK
KyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZp
bHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlw
cGVyID0gY2xpcHBlcjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyOSw3ICs1MjksNyBAQCBib29s
IFNWR1Jlc291cmNlczo6c2V0RmlsdGVyKFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIp
CiAgICAgQVNTRVJUKGZpbHRlci0+cmVzb3VyY2VUeXBlKCkgPT0gRmlsdGVyUmVzb3VyY2VUeXBl
KTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tl
ckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVl
PENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YS0+ZmlsdGVyID0gZmlsdGVyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTUwLDcgKzU1MCw3
IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydChSZW5kZXJTVkdSZXNvdXJjZU1h
cmtlciogbWFya2VyU3RhcnQpCiAgICAgQVNTRVJUKG1hcmtlclN0YXJ0LT5yZXNvdXJjZVR5cGUo
KSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAg
ICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAg
ICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJr
ZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1hcmtlclN0YXJ0OwogICAgIHJldHVybiB0cnVlOwpAQCAt
NTcxLDcgKzU3MSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJNaWQoUmVuZGVyU1ZH
UmVzb3VyY2VNYXJrZXIqIG1hcmtlck1pZCkKICAgICBBU1NFUlQobWFya2VyTWlkLT5yZXNvdXJj
ZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEp
Ci0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsK
KyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAg
bV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSBtYXJrZXJNaWQ7CiAgICAgcmV0dXJuIHRydWU7CkBA
IC01OTIsNyArNTkyLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZChSZW5kZXJT
VkdSZXNvdXJjZU1hcmtlciogbWFya2VyRW5kKQogICAgIEFTU0VSVChtYXJrZXJFbmQtPnJlc291
cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0
YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigp
OworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAg
ICBtX21hcmtlckRhdGEtPm1hcmtlckVuZCA9IG1hcmtlckVuZDsKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFza2VyKFJlbmRlclNW
R1Jlc291cmNlTWFza2VyKiBtYXNrZXIpCiAgICAgQVNTRVJUKG1hc2tlci0+cmVzb3VyY2VUeXBl
KCkgPT0gTWFza2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRl
ck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAg
ICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyID0gbWFza2VyOwogICAgIHJldHVy
biB0cnVlOwpAQCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWxsKFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKQogICAgICAgICAgICB8fCBmaWxsLT5yZXNv
dXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1f
ZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVu
aXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPmZpbGwgPSBm
aWxsOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjU5LDcgKzY1OSw3IEBAIGJvb2wgU1ZHUmVzb3Vy
Y2VzOjpzZXRTdHJva2UoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHN0cm9rZSkKICAgICAg
ICAgICAgfHwgc3Ryb2tlLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNl
VHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9r
ZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2Zp
bGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmls
bFN0cm9rZURhdGEtPnN0cm9rZSA9IHN0cm9rZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXgg
MTkxOTVhYTFkYWJjNjZlNGIzNTY1OTcyZWM5MWY4OTQ3N2Y0MDM5Yi4uMWVlYjc4ZjU3YjNlYmIz
MWI0Y2RlOGU1MzAyZGRlMDllMDQ4YzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBT
VkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJlbmRlcmVyKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBjb25zdAogICAgIEFTU0VSVCghbV9jYWNoZS5jb250YWlucygmcmVuZGVyZXIp
KTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBhbGwgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0
aCB0aGUgcGFzc2VkIFJlbmRlck9iamVjdAotICAgIGF1dG8gbmV3UmVzb3VyY2VzID0gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7CisgICAgYXV0byBuZXdSZXNvdXJjZXMgPSBtYWtl
VW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKICAgICBpZiAoIW5ld1Jlc291cmNlcy0+YnVpbGRDYWNo
ZWRSZXNvdXJjZXMocmVuZGVyZXIsIHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5j
cHAKaW5kZXggMzI0MTAyNTg0YzFmMTEzZDBlZWQzMzIxNGE2N2Y1NTM0YWIwZjU5YS4uODEwYTBi
ODgwYThhYTRkYWUwMmZhYjQ0NmE5NDFlZGQ5YzVhNzFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApAQCAtMTAz
LDcgKzEwMyw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3Vy
ZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAgICAgaWYgKG1faXNDb21wbGV4
VGV4dCkKICAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbnVsbHB0cjsKICAgICBlbHNl
Ci0gICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2lkdGhJ
dGVyYXRvcj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsKKyAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJh
dG9yID0gbWFrZVVuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4pOwogfQog
CiBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGQzN2JlZThjYmNl
NTU2MTUxMWIyNGUzNjRlMWFmNjRhYWQ3YWE3NWQuLmU2YjI3MzIwZDkyZmU4NTZkODM3NDEwOGVk
OTU0MmUwOTFlZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMTIyLDIyICsxMjIsMjIgQEAgc3Rh
dGljIHZvaWQgZ2V0SW5saW5lUnVuKFJlbmRlck9iamVjdCogc3RhcnQsIFJlbmRlck9iamVjdCog
Ym91bmRhcnksIFJlbmRlck9iamUKIAogUmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWls
ZGVyKFJlbmRlclZpZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fZmlyc3RM
ZXR0ZXJCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKLSAgICAs
IG1fbGlzdEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxMaXN0PigqdGhpcykpCi0gICAgLCBtX211
bHRpQ29sdW1uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ29sdW1uPigqdGhpcykpCi0g
ICAgLCBtX3RhYmxlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlPigqdGhpcykpCi0gICAg
LCBtX3J1YnlCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVieT4oKnRoaXMpKQotICAgICwgbV9m
b3JtQ29udHJvbHNCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhpcykp
Ci0gICAgLCBtX2Jsb2NrQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigqdGhpcykpCi0g
ICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlz
KSkKLSAgICAsIG1faW5saW5lQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPElubGluZT4oKnRoaXMp
KQotICAgICwgbV9zdmdCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8U1ZHPigqdGhpcykpCisgICAg
LCBtX2ZpcnN0TGV0dGVyQnVpbGRlcihtYWtlVW5pcXVlPEZpcnN0TGV0dGVyPigqdGhpcykpCisg
ICAgLCBtX2xpc3RCdWlsZGVyKG1ha2VVbmlxdWU8TGlzdD4oKnRoaXMpKQorICAgICwgbV9tdWx0
aUNvbHVtbkJ1aWxkZXIobWFrZVVuaXF1ZTxNdWx0aUNvbHVtbj4oKnRoaXMpKQorICAgICwgbV90
YWJsZUJ1aWxkZXIobWFrZVVuaXF1ZTxUYWJsZT4oKnRoaXMpKQorICAgICwgbV9ydWJ5QnVpbGRl
cihtYWtlVW5pcXVlPFJ1Ynk+KCp0aGlzKSkKKyAgICAsIG1fZm9ybUNvbnRyb2xzQnVpbGRlciht
YWtlVW5pcXVlPEZvcm1Db250cm9scz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0J1aWxkZXIobWFr
ZVVuaXF1ZTxCbG9jaz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0Zsb3dCdWlsZGVyKG1ha2VVbmlx
dWU8QmxvY2tGbG93PigqdGhpcykpCisgICAgLCBtX2lubGluZUJ1aWxkZXIobWFrZVVuaXF1ZTxJ
bmxpbmU+KCp0aGlzKSkKKyAgICAsIG1fc3ZnQnVpbGRlcihtYWtlVW5pcXVlPFNWRz4oKnRoaXMp
KQogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgLCBtX21hdGhNTEJ1aWxkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxNYXRoTUw+KCp0aGlzKSkKKyAgICAsIG1fbWF0aE1MQnVpbGRlcihtYWtlVW5pcXVlPE1h
dGhNTD4oKnRoaXMpKQogI2VuZGlmCi0gICAgLCBtX2NvbnRpbnVhdGlvbkJ1aWxkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxDb250aW51YXRpb24+KCp0aGlzKSkKKyAgICAsIG1fY29udGludWF0aW9uQnVp
bGRlcihtYWtlVW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLSAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGdWxs
U2NyZWVuPigqdGhpcykpCisgICAgLCBtX2Z1bGxTY3JlZW5CdWlsZGVyKG1ha2VVbmlxdWU8RnVs
bFNjcmVlbj4oKnRoaXMpKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNfY3VycmVu
dCB8fCAmbV92aWV3ICE9ICZzX2N1cnJlbnQtPm1fdmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCBm
NDJiY2EzYjM0NjllNmQ1NmU2YTRkN2I5NDQ1ZTE2N2IxMTExYjJiLi4yNjg1NDRhMWU2NWJmYTNk
MzhmNDNlYjViYmNlNGVlZWNhYWM0NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyoKIAogUmVuZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRy
ZWVVcGRhdGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQp
Ci0gICAgLCBtX2dlbmVyYXRlZENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmF0ZWRDb250
ZW50PigqdGhpcykpCisgICAgLCBtX2dlbmVyYXRlZENvbnRlbnQobWFrZVVuaXF1ZTxHZW5lcmF0
ZWRDb250ZW50PigqdGhpcykpCiAgICAgLCBtX2J1aWxkZXIocmVuZGVyVmlldygpKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCmluZGV4IDdmZTdmNjg3MzIwNDEw
ZWYwNDgzODdkNDgxZjkyN2IxMmMyMzgzYWMuLmI5YzcyZWI4ODBlOWJiODc1OThmNDE0NDA3N2Qw
MjMwMTY2NjViODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRC
cmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKQEAg
LTQ5LDYgKzQ5LDcgQEAgZW51bSBjbGFzcyBJbnB1dFNvdXJjZSB7CiB9OwogCiBjbGFzcyBVc2Vy
SW5wdXRCcmlkZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFVzZXJJbnB1dEJyaWRnZSk7CiBwdWJsaWM6CiAgICAgVXNlcklucHV0QnJp
ZGdlKFBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxp
ZGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5k
ZXggZGFlMTFjYjJmNjI4OTkxODQ1M2ExMjgwOWFlNDNiODEyNGI2YjEyYi4uNmQ2OTVhNjYwZDBl
NGUwNDVhMjZkYWJlMzMzMWVjYTI2ZmFkMmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVJbnZhbGlkYXRvci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkRGly
dHlBbGxTdHlsZShjb25zdCBWZWN0b3I8U3R5bGVTaGVldENvbnRlbnRzKj4mIHNoZWV0cykKIH0K
IAogSW52YWxpZGF0b3I6OkludmFsaWRhdG9yKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVu
dHMqPiYgc2hlZXRzLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpYVF1ZXJ5RXZhbHVh
dG9yKQotICAgIDogbV9vd25lZFJ1bGVTZXQoc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpKQor
ICAgIDogbV9vd25lZFJ1bGVTZXQobWFrZVVuaXF1ZTxSdWxlU2V0PigpKQogICAgICwgbV9ydWxl
U2V0KCptX293bmVkUnVsZVNldCkKICAgICAsIG1fZGlydGllc0FsbFN0eWxlKHNob3VsZERpcnR5
QWxsU3R5bGUoc2hlZXRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVsYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNw
cAppbmRleCA0ZDgxNDhiNGUzMWQ3NGQ2YTBhNTE3NTRkZWU1ZWFiODA3NTlhYmFhLi4wNjJkNTk2
NGQ3N2VjNWRiODNiM2Y0MWFjYmFhODdlZmNlOThkZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZWxhdGlvbnMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZWxh
dGlvbnM+IGNvbW1pdFJlbGF0aW9uc1RvUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBj
b25zCiAKICAgICBhdXRvIGFwcGVuZFN0eWxlUmVsYXRpb24gPSBbJnJlbWFpbmluZ1JlbGF0aW9u
c10gKGNvbnN0IFJlbGF0aW9uJiByZWxhdGlvbikgewogICAgICAgICBpZiAoIXJlbWFpbmluZ1Jl
bGF0aW9ucykKLSAgICAgICAgICAgIHJlbWFpbmluZ1JlbGF0aW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVsYXRpb25zPigpOworICAgICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gbWFrZVVu
aXF1ZTxSZWxhdGlvbnM+KCk7CiAgICAgICAgIHJlbWFpbmluZ1JlbGF0aW9ucy0+YXBwZW5kKHJl
bGF0aW9uKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCmluZGV4IDlm
MGQxYWQ3NDkwYmZlYWIyNDA3Y2U3YmM4OGIwOTUxMTZkMGIyMjIuLmRjYjY1YmMwOWMzNDc3OWI2
M2EyOTMyNGUyNGQzNzJiZmM2YTIzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3Bw
CkBAIC05Niw3ICs5Niw3IEBAIFN0eWxlUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCiAgICAg
aWYgKCFtX3Jlc29sdmVyKSB7CiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdT
dHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciwgdHJ1ZSB9OwogCi0gICAg
ICAgIG1fcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1l
bnQpOworICAgICAgICBtX3Jlc29sdmVyID0gbWFrZVVuaXF1ZTxTdHlsZVJlc29sdmVyPihtX2Rv
Y3VtZW50KTsKIAogICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkgewogICAgICAgICAgICAgbV9k
b2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsKQEAgLTU2Myw3ICs1NjMsNyBA
QCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBTY29wZTo6YWN0aXZlU3R5bGVT
aGVldHNGb3JJbnNwZWN0b3IoKQogYm9vbCBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlu
cyhjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgY29uc3QKIHsKICAgICBpZiAoIW1fd2Vha0Nv
cHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCkgewotICAgICAgICBtX3dlYWtD
b3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOworICAgICAgICBtX3dlYWtDb3B5T2ZB
Y3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29u
c3QgQ1NTU3R5bGVTaGVldCo+PigpOwogICAgICAgICBmb3IgKGF1dG8mIGFjdGl2ZVN0eWxlU2hl
ZXQgOiBtX2FjdGl2ZVN0eWxlU2hlZXRzKQogICAgICAgICAgICAgbV93ZWFrQ29weU9mQWN0aXZl
U3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwLT5hZGQoYWN0aXZlU3R5bGVTaGVldC5nZXQoKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4
IDg0NmEyMzFhZDJiMThiNWQ3ZjI5NDkwMTZkMDlmMjIzZGQ2OWU4OGIuLmEwMGY0ZmUwZjRjY2I1
MmRkODMxYTk0ZTI2YTU4NjRlNWMxYjc5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VXBk
YXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmUoKQogCiAgICAgbV9kaWRTZWVQZW5kaW5nU3R5bGVz
aGVldCA9IG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLmhhc1BlbmRpbmdTaGVldHNCZWZvcmVCb2R5
KCk7CiAKLSAgICBtX3VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlPihtX2RvY3VtZW50
KTsKKyAgICBtX3VwZGF0ZSA9IG1ha2VVbmlxdWU8VXBkYXRlPihtX2RvY3VtZW50KTsKICAgICBt
X3Njb3BlU3RhY2suYXBwZW5kKGFkb3B0UmVmKCpuZXcgU2NvcGUobV9kb2N1bWVudCkpKTsKICAg
ICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnQobV9kb2N1bWVudCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IGJjNTE0MzRiMGIyYjhl
MGJmNzdlNTdhNGE3NmU0ZDRiY2VlZTk5NjUuLjI1ZjM4NjNkMDc5NTRhYzhkNmE2M2U2ODY0YTFm
MDc2YjBkNTFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4
dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMoRG9jdW1lbnQmIGRvY3VtZW50KQog
ICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcmVzb3VyY2VzQ2FjaGUoc3RkOjpt
YWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKKyAgICAsIG1fcmVzb3VyY2VzQ2FjaGUo
bWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKICAgICAsIG1fYXJlQW5pbWF0aW9uc1Bh
dXNlZCghZG9jdW1lbnQucGFnZSgpIHx8ICFkb2N1bWVudC5wYWdlKCktPmlzVmlzaWJsZSgpKQog
ewogfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQ
ZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIEVsZW1lbnQmIGVsCiAKICAgICBh
dXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIG51bGxwdHIpOwogICAgIGlm
IChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0VsZW1lbnRzPigpOworICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7CiAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+YWRkKCZlbGVtZW50KTsKIAogICAgIGVsZW1lbnQuc2V0SGFzUGVuZGlu
Z1Jlc291cmNlcygpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiBT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OnNldE9mRWxlbWVudHNSZWZlcmVuY2luZ1RhcmdldChTVkdF
CiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0
KFNWR0VsZW1lbnQmIHJlZmVyZW5jaW5nRWxlbWVudCwgU1ZHRWxlbWVudCYgcmVmZXJlbmNlZEVs
ZW1lbnQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZW5zdXJl
KCZyZWZlcmVuY2VkRWxlbWVudCwgWyZyZWZlcmVuY2luZ0VsZW1lbnRdIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTVkdFbGVtZW50Kj4+KHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVmZXJlbmNpbmdFbGVtZW50IH0pOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9s
aXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7CiAgICAgfSk7CiAgICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YWRkKCZyZWZlcmVuY2luZ0VsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4
IGE4MDk2ZGRhZGE4MWVhZDZhN2ExZWEzMjRjZDg1MDY3ZjVjMGIyOGIuLmU0ZGUzYjc0OWYwYTAw
MzliYzVjNGNmY2QwOGUxOTM5NmNkNjU2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
QEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIEhhc2hNYXA8QXRvbVN0cmlu
Z0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiBjcmVhdGVBdHRyaWJ1dGVOYW1lVAogU1ZHRWxlbWVudDo6
U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVTVkdFbGVt
ZW50KQogICAgICwgU1ZHTGFuZ1NwYWNlKHRoaXMpCi0gICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JG
YWN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCisg
ICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KG1ha2VVbmlxdWU8U1ZHUHJvcGVydHlBbmlt
YXRvckZhY3Rvcnk+KCkpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwog
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9p
ZCBTVkdFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSBjaGFuZ2UpCiBTVkdF
bGVtZW50UmFyZURhdGEmIFNWR0VsZW1lbnQ6OmVuc3VyZVNWR1JhcmVEYXRhKCkKIHsKICAgICBp
ZiAoIW1fc3ZnUmFyZURhdGEpCi0gICAgICAgIG1fc3ZnUmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0VsZW1lbnRSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9zdmdSYXJlRGF0YSA9IG1ha2VV
bmlxdWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOwogICAgIHJldHVybiAqbV9zdmdSYXJlRGF0YTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBhNzU4
OTBmMzE4MDQ2OGQxNTI0YmVlODU0MzU5ZDAzNTZlYjUyMjJkLi44MGVjN2ZjODYyOTJiNjNiYmJh
ODUxZTExZTEwNmZhMTUyZjkxNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGlj
c0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogQWZmaW5lVHJhbnNmb3Jt
KiBTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpCiB7CiAgICAgaWYg
KCFtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKLSAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zv
cm0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFmZmluZVRyYW5zZm9ybT4oKTsKKyAgICAgICAgbV9zdXBw
bGVtZW50YWxUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPEFmZmluZVRyYW5zZm9ybT4oKTsKICAgICBy
ZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhCeXRlU3RyZWFtLmgKaW5kZXggNmYwYWNhY2YxOWVlODUwZGI0ZTY5MTBkM2U4M2Qy
NjQ5NGQ2N2ViMC4uNDM0ZDkxZWIzZGY4YWQ4NzlmODM5YTQ4OTY2ODY3ODBiNDA5ZjI1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKQEAgLTg2LDcgKzg2LDcgQEAgY2xh
c3MgU1ZHUGF0aEJ5dGVTdHJlYW0gewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRl
U3RyZWFtPiBjb3B5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CiAgICAgfQogCiAgICAgRGF0YUl0ZXJhdG9yIGJl
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKaW5kZXggZTA0MjNjZTk4
MTVmYTBmMjU1NjNhM2I1NDMxNDA4NmFjMzU2ZmY0NC4uM2ViNTdhZDJmMjFkZmE2NGI5YjExODAx
ZjQyNzI4MzYwMmI3NWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TTUlMVGltZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TTUlMVGltZUNvbnRhaW5lci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBTTUlMVGltZUNv
bnRhaW5lcjo6c2NoZWR1bGUoU1ZHU01JTEVsZW1lbnQqIGFuaW1hdGlvbiwgU1ZHRWxlbWVudCog
dGFyZ2V0LAogICAgIEVsZW1lbnRBdHRyaWJ1dGVQYWlyIGtleSh0YXJnZXQsIGF0dHJpYnV0ZU5h
bWUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25zVmVjdG9yPiYgc2NoZWR1bGVkID0g
bV9zY2hlZHVsZWRBbmltYXRpb25zLmFkZChrZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIXNjaGVkdWxlZCkKLSAgICAgICAgc2NoZWR1bGVkID0gc3RkOjptYWtlX3VuaXF1
ZTxBbmltYXRpb25zVmVjdG9yPigpOworICAgICAgICBzY2hlZHVsZWQgPSBtYWtlVW5pcXVlPEFu
aW1hdGlvbnNWZWN0b3I+KCk7CiAgICAgQVNTRVJUKCFzY2hlZHVsZWQtPmNvbnRhaW5zKGFuaW1h
dGlvbikpOwogICAgIHNjaGVkdWxlZC0+YXBwZW5kKGFuaW1hdGlvbik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDQwZWU5OTE1NTg1ZWNhOWExMDA0NGI5
ZTMzMGM4NzUyODBjMjUxZTcuLjNiMjdkMDYwOGJmOTBmZGFhMGU1YjE1NjAwZWE0YWQ1ZmUxMzRk
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDU3LDcg
KzQ1Nyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFs
bERhdGFSZWNlaXZlZCkKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgYXV0
byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygp
OwotICAgICAgICBtX2Nocm9tZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDaHJv
bWVDbGllbnQ+KHRoaXMpOworICAgICAgICBtX2Nocm9tZUNsaWVudCA9IG1ha2VVbmlxdWU8U1ZH
SW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOwogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJv
bWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKIAogICAgICAgICAvLyBGSVhNRTogSWYg
dGhpcyBTVkcgZW5kcyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UgbWlnaHQgbGVhayB0aGUgd29ybGQu
CkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFu
Z2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBUaGlzIHdpbGwgYmVjb21lIGFu
IGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxvYWQgb3RoZXIKICAgICAgICAg
Ly8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdl
IGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRvcC1sZXZlbCBkb2N1bWVudC4K
LSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uKSk7CisgICAgICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbikpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFF
bmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJs
ZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0UGx1Z2luc0VuYWJsZWQo
ZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IGQ5NzAzMDJhZGY4NjU4NTUwOWM2NTA4ZDUwNDk1MmEy
NTUzMjM2MmIuLmM3N2FlMDhiYWM2NWMzYzJjZmM4OTc0ZmEzM2U3NjQ2MGNlOTdmYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJC
dWlsZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU1ZH
RmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVyQnVpbGRlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoU2V0PEZpbHRlckVmZmVj
dCo+IEZpbHRlckVmZmVjdFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IGU1ZWZh
YWVhNzExMWJjNmM5NTdkOTcyZDc0NTQ4ZGU5MmQ4YTEzM2UuLmNlYmFhMzYzYmY1MjdiYmIzOGU1
NjdkM2UzZDQyYmY4NDMxMDJhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eSA6IHB1YmxpYyBTVkdB
bmltYXRlZFByb3BlcnR5IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5
cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5Pgog
ICAgIHN0YXRpYyBSZWY8QW5pbWF0ZWRQcm9wZXJ0eT4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQ
cm9wZXJ0eShjb250ZXh0RWxlbWVudCwgc3RkOjptYWtlX3VuaXF1ZTxEZWNvcmF0ZWRQcm9wZXJ0
eTxEZWNvcmF0aW9uVHlwZSwgUHJvcGVydHlUeXBlPj4oKSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBtYWtlVW5pcXVlPERl
Y29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCB0eXBlbmFtZSBBbmltYXRl
ZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yLmgKaW5kZXggYWE2MWJmZjQzNDQ4OGNhNjc0YjA0ODg5ZWM3NDU4YTMzNjAyMGI4ZC4uZTAy
MzRmMzU5MTI5Mjk1NzljZjNlMmIxNjgwOTQyNTI4ZjA3YWExMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgU1ZHRWxlbWVudDsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSwgdHlwZW5hbWUgQW5pbWF0aW9uRnVuY3Rpb24+CiBjbGFz
cyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IgOiBwdWJsaWMgU1ZHQXR0cmlidXRlQW5pbWF0
b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIEFu
aW1hdG9yQW5pbWF0ZWRQcm9wZXJ0eSA9IEFuaW1hdGVkUHJvcGVydHk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvckltcGwuaAppbmRleCAyODg3NDFiMTI5MDVjYjg1MTQzMDU0MDkwYzRlMmM5MTM5
YjM1YmYzLi5kMDczN2FjYmEzMzFmZTEyMzQ3YjgzNGZmN2FhMzAxMDBhZDE1NjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFNWR0FuaW1h
dGVkQW5nbGVBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3I8U1ZHQW5pCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiYgYW5pbWF0ZWQsIEFu
aW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1
bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjgsNyArNjgsNyBAQCBjbGFz
cyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3I8U1ZHQQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+JiBhbmltYXRl
ZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBp
c0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODksNyArODks
NyBAQCBjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNN
b2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
bmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTExLDcgKzExMSw3IEBAIGNs
YXNzIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1h
dGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMzIsNyAr
MTMyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1vZGUg
bGVuZ3RoTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Fu
aW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTUzLDcg
KzE1Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiAKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3Ro
TW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3Ro
TW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTE3Miw3ICsxNzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogcHVibGljOgog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTE4OSw3ICsxODksNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51
bWJlckxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3I8UwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0PiYgYW5pbWF0ZWQsIEFu
aW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1
bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yMDYs
NyArMjA2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjwKIHB1YmxpYzoKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0Fu
aW1hdGVkUGF0aFNlZ0xpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUp
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhT
ZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMjQsNyArMjI0LDcgQEAgY2xhc3MgU1ZHQW5pbWF0
ZWRQb2ludExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3I8U1YKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUG9pbnRMaXN0PiYgYW5pbWF0ZWQs
IEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNB
Y2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjQz
LDcgKzI0Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJsaWM6CiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdB
bmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUp
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE9yaWVu
dFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJv
cGVydHlBCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+JiBh
bmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwg
Ym9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAg
ICAgfQogCiBwcml2YXRlOgpAQCAtMjgxLDcgKzI4MSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUmVj
dEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdB
bmltCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUmVjdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wg
aXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Fu
aW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTgsNyArMjk4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRT
dHJpbmdBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8
U1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiYgYW5pbWF0ZWQsIEFuaW1h
dGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVs
YXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQs
IGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zMzgsNyArMzM4LDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG8KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNh
bGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yLmgKaW5kZXggYzcyM2FjZmYy
NjA2MDFhMWU1MGQzMjY5NWFlM2NlOGM5MjYwMjUxNS4uYzg5MDUwMTY5ZDNjMWE0MzNhYjdhMjdi
YTFhZWNlYTMyZGJiNWY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3IuaApAQCAtMzMs
NiArMzMsNyBAQCBjbGFzcyBTVkdFbGVtZW50OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3IxLCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyPgog
Y2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvciA6IHB1YmxpYyBTVkdBdHRyaWJ1
dGVBbmltYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dXNpbmcgQW5pbWF0ZWRQcm9wZXJ0eTEgPSB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3IxOjpBbmltYXRvckFuaW1hdGVkUHJvcGVydHk7CiAgICAgdXNpbmcgQW5pbWF0ZWRQcm9wZXJ0
eTIgPSB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyOjpBbmltYXRvckFuaW1hdGVk
UHJvcGVydHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaAppbmRleCA0ZWRh
MzRjOWIxODg4ZmZkNmQzZDY2MzJjZjBjZjZkMzNhNmZhOWUxLi4zOTdmZjA5MTU5NDAwZDMzYzA1
MmIxMWQ4MjhjYjhlMzdiM2M4MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJ
bXBsLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWEKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZE9yaWVu
dFR5cGU+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTEzLDcgKzExMyw3IEBAIGNs
YXNzIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmlt
YXRlZFByb3BlcnR5UGFpckFuaW1hCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+
JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlv
bk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRl
ZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQ
YWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0CiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVk
TnVtYmVyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaAppbmRleCA2NGE2NWIxODYy
ZmZiOTY5NjAzYzcxNTYwN2I1NDRmNTU2ZTAwODNhLi4wMjJlZGVkYTgyMWI1MzM1NWIzZmRkMzk1
OGYyNDM2ODAxOWFhZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBD
YWxjTW9kZSA6IHVpbnQ4X3QgewogfTsKIAogY2xhc3MgU1ZHQXR0cmlidXRlQW5pbWF0b3Igewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNWR0F0dHJpYnV0ZUFu
aW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgIDogbV9h
dHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaAppbmRleCAyNjRjMzZiNjkw
NzRjY2YzZTJlMjlkMjY3NzIxY2Y1Mzc0NTcwMzExLi5hMzVlMjUwYTliMTUxZjllODk3Zjg1ZjYz
NjdjMzg3ZGJiM2NhNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3Mg
U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24gOiBwdWJsaWMgU1ZHRGVjb3JhdGVkUHJpbWl0aXZlPERl
Y29yYXRpb25UeXBlLCBFbnUKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRW51bVR5cGUm
IHZhbHVlKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPERl
Y29yYXRpb25UeXBlPjo6dmFsdWUsICJEZWNvcmF0aW9uVHlwZSBmb3JtIGVudW0gc2hvdWxkIGJl
IGludGVncmFsLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdEZWNvcmF0
ZWRFbnVtZXJhdGlvbj4odmFsdWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdEZWNv
cmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByaW1pdGl2ZS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmgKaW5k
ZXggZTJhNTI0MzEyNGYwNzNmODVhZDhkZDZhOTZkZjRhNjUzNTBiNjdjOC4uOWI2NjEyN2JjNTll
MmY1MWYwMTAxOTIxNmZhMmQ1NjIxNTNjYTdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmgKQEAgLTMxLDYgKzMxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvcmF0aW9uVHlw
ZSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlPgogY2xhc3MgU1ZHRGVjb3JhdGVkUHJpbWl0aXZlIDog
cHVibGljIFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlPiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0RlY29yYXRlZFByb3BlcnR5
PERlY29yYXRpb25UeXBlPjsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCmluZGV4
IDQxMjE3MjIwYmRmY2ZlZmY2N2MxNjA5MTNhZDE0ZDZiOTliYTE0MmMuLjY4YjJlMGIxMTM3YWRl
OGQzN2Y4MGUwZTI5OGI1ZGUyNGQwMWE4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvciA6IHB1Ymxp
YyBTVkdQcm9wZXJ0eUFuaW1hdG9yPEFuaW1hdGlvbkZ1bmN0aW8KIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNN
b2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1v
dmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
QW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCmluZGV4IGFkNTBkNDIzNjI5Njk0MmQxZGM4NzE4YTJkYThl
NmFkZjhkMWJjY2IuLjVlMzAxOGY1YTQwMmE5YzdmMTI5ZDQxZDQxOWFjNWU5NDlmZWUwNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlBbmltYXRvckZhY3RvcnkuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkoKSA9
IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAxMTg4ODZjNGY4YmI3MjM2
YTQ0NmZmYWQwMzg2OWZmMGIwZGNkZTk1Li5mZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEy
ODc5YTdlZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmlt
YXRvcjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9w
ZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9v
bCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdM
ZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3Ro
ZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkg
b3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCmluZGV4IDVlZThhYzNkMGY0
ZTEyYzYyYTVlZmMwMGZmNTNiNTkwZTQwMGYzNjguLmFlOTRlMjllZDRiODYxM2I5OWNkOTc0ODZl
ZDBiMDYyODI2YzAyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaApAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
VmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcjxTVkdMZW5ndAogcHVibGljOgogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJv
cGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFNWR0xlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGMxMTMxZDI1YjM4OGJiYTgzNjY1M2QyOTcwOGU2YTVi
YmU0YmRmYzQuLjI0Mzc4OWJiOWQyNzlhNmU4NTNlMDg2NDRiNjRiZWU4NTFlNWVlMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMjMxLDYgKzIz
MSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3Mm
IHNldHRpbmdzKQogfQogCiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzV3JhcHBlciA6IHB1YmxpYyBT
dXBwbGVtZW50PFBhZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzV3JhcHBlcihQYWdlKiBwYWdlKQogICAgICAg
ICA6IG1faW50ZXJuYWxTZXR0aW5ncyhJbnRlcm5hbFNldHRpbmdzOjpjcmVhdGUocGFnZSkpIHsg
fQpAQCAtMjUyLDcgKzI1Myw3IEBAIGNvbnN0IGNoYXIqIEludGVybmFsU2V0dGluZ3M6OnN1cHBs
ZW1lbnROYW1lKCkKIEludGVybmFsU2V0dGluZ3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFn
ZSogcGFnZSkKIHsKICAgICBpZiAoIVN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxl
bWVudE5hbWUoKSkpCi0gICAgICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBz
dXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVy
PihwYWdlKSk7CisgICAgICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBw
bGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludGVybmFsU2V0dGluZ3NXcmFwcGVyKj4oU3VwcGxl
bWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSktPmludGVybmFsU2V0dGlu
Z3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUxNzhiNDk2
ODU4NzU1MWJmMDcwNGQ4MzAyMDU2MmRkMTJkZjRlYmIuLjYyZTczNDlhMWNhMTY2MmQwNjJjNjA3
OTM4OTJmYzcwZmY2MDU4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTM0MSw3ICszNDEsNyBAQCBjbGFzcyBJbnNwZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgcHVibGljCiB9OwogCiBJbnNwZWN0b3JT
dHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZChQYWdlJiBpbnNwZWN0ZWRQYWdlLCBS
ZWZQdHI8RE9NV2luZG93PiYmIGZyb250ZW5kV2luZG93KQotICAgIDogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250
ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+KCkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRl
bmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKICAgICAsIG1fZnJvbnRlbmRXaW5kb3coZnJvbnRl
bmRXaW5kb3cuY29weVJlZigpKQogewogICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRXaW5kb3csIGZy
b250ZW5kV2luZG93KTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCBJbnRlcm5hbHM6OkludGVybmFscyhE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwog
ICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKSB7
CiAgICAgICAgIGF1dG8gbW9ja1BheW1lbnRDb29yZGluYXRvciA9IG5ldyBNb2NrUGF5bWVudENv
b3JkaW5hdG9yKCpmcmFtZS0+cGFnZSgpKTsKLSAgICAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0UGF5
bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqbW9j
a1BheW1lbnRDb29yZGluYXRvcikpOworICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50
Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENv
b3JkaW5hdG9yKSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCB2b2lk
IEludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCkKICAgICBpZiAoIXN5bnRo
ZXNpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRo
ZXNpemVyKHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5
bnRoZXNpcykpOworICAgIHN5bnRoZXNpcy0+c2V0UGxhdGZvcm1TeW50aGVzaXplcihtYWtlVW5p
cXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPihzeW50aGVzaXMpKTsKIH0KIAogI2Vu
ZGlmCkBAIC0yNDg5LDcgKzI0ODksNyBAQCBSZWZQdHI8V2luZG93UHJveHk+IEludGVybmFsczo6
b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgYXV0byog
aW5zcGVjdGVkUGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAg
YXV0byogd2luZG93ID0gaW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCk7CiAgICAgYXV0byBmcm9udGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3
aW5kb3csICp3aW5kb3csIHVybCwgIiIsICIiKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBt
X2luc3BlY3RvckZyb250ZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRl
bmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJv
eHktPndpbmRvdygpKSk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5z
cGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihm
cm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3coKSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRv
d1Byb3h5OwogfQogCkBAIC0zMDA5LDcgKzMwMDksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRl
cm5hbHM6OnNldFZpZXdFeHBvc2VkUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwg
ZgogCiB2b2lkIEludGVybmFsczo6c2V0UHJpbnRpbmcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog
ewotICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRD
b250ZXh0PihmcmFtZSgpKTsKKyAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkgPSBtYWtlVW5p
cXVlPFByaW50Q29udGV4dD4oZnJhbWUoKSk7CiAgICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygp
LT5iZWdpbih3aWR0aCwgaGVpZ2h0KTsKIH0KIApAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgdm9pZCBJ
bnRlcm5hbHM6OmVuYWJsZUF1dG9TaXplTW9kZShib29sIGVuYWJsZWQsIGludCB3aWR0aCwgaW50
IGhlaWdodCkKIAogdm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKIHsKLSAgICBM
ZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwKKyAgICBMZWdhY3lDRE06
OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwKICAgICAgICAgTGVnYWN5TW9ja0NETTo6c3VwcG9y
dHNLZXlTeXN0ZW0sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUp
OwogfQogCkBAIC00MjQxLDcgKzQyNDEsNyBAQCB2b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rh
c2soaW50IHRlc3ROdW1iZXIpCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNr
TWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICpkb2N1bWVudCwg
W2RvY3VtZW50LCB0ZXN0TnVtYmVyXSgpIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlx
dWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFk
UXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgewogICAgICAgICBk
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RGVidWcsIG1ha2VTdHJpbmcoIk1pY3JvVGFzayAjIiwgdGVzdE51bWJlciwgIiBoYXMgcnVu
LiIpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdh
Y3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAK
aW5kZXggNjQyODdkMjM5YWY1NzNlOTIwM2QyNTg0MzFiMjczYzdiODc0OTAwNi4uNjAyNzJkMzQ5
N2Y0Yjg2NWNkYjAzNzBmZTQxZDNkNmZiZGU4YjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE1vY2tDRE1TZXNzaW9uIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1vY2tDRE1TZXNzaW9uKExl
Z2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lvbigpID0g
ZGVmYXVsdDsKQEAgLTczLDcgKzc0LDcgQEAgYm9vbCBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lD
RE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25D
bGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNU2Vz
c2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xp
ZW50KTsKIH0KIAogc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKaW5kZXggMjRiOWI4MDA4YzRmNTE5YjRhNjY2ZWM2
ZDE1MjVhYzYyZWMxYzMwYS4uYjkzYWViOTNmZjYzMjllNTE1NDdjMTNmZjc2YTY5MmVlNmE3MTg2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogCiBjbGFzcyBMZWdhY3lN
b2NrQ0RNIDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2FjeU1vY2tDRE0oTGVnYWN5Q0RN
KiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAppbmRleCA1Njc5NmVlOTAwYmJmM2I2Y2MwNWNmNmEyMjk2ZWZkNDNiOWVm
N2I2Li5jZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2ZDcxYjM2OTY2MzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYm
IHR5cGVzKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNy
ZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1v
Y2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NE
TT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKIH0KIAogTW9ja0NETTo6TW9ja0NETShXZWFrUHRyPE1v
Y2tDRE1GYWN0b3J5PiBmYWN0b3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCmluZGV4IDMzOTZjZDAyYWQwMmRkMTRlOTJmMTU3OWUyNzUxNmU2YmMzZjQyOTguLjM5OTA5
YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBNb2NrQ0RNRmFj
dG9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDRE1GYWN0b3J5PiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPAogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TW9ja0NETT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIE1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxMTgxZGFlNzJl
MTNlMmJiZDE1M2U4MTFjMTQzNjRkMWNkOGExODcuLjc3OGE5MThhNmI5MDc1NWNiODZkM2FhYTc0
Zjc5YjNlNjE4ZDRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJs
ZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0NvbnRlbnRGaWx0ZXI+IE1vY2tDb250ZW50Rmls
dGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDb250ZW50
RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOwog
fQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKaW5kZXgg
ZDNhYzVkODdkMTllMmE4NTM2MWMxMTU3MmNmMzExZjBjODNiMjQ1Yi4uZDQwZGVkMWRhMTE5OGNh
YTM0NTlkNjc3ZTFmZTg0ZjViZmI5NDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgTW9ja0dhbWVw
YWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBT
dHJpbmcmIGdhCiAgICAgaWYgKG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdKQogICAgICAgICBt
X21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XS0+dXBkYXRlRGV0YWlscyhnYW1lcGFkSUQsIGF4aXND
b3VudCwgYnV0dG9uQ291bnQpOwogICAgIGVsc2UKLSAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3Rv
cltpbmRleF0gPSBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElE
LCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKKyAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3Rvcltp
bmRleF0gPSBtYWtlVW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291
bnQsIGJ1dHRvbkNvdW50KTsKIH0KIAogYm9vbCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0
TW9ja0dhbWVwYWQodW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb25zb2xlQ2xpZW50LmNwcAppbmRleCBkYmU5MDczZDZhZGViZmM1MDE1OWNjMmVkYmIy
MjgzY2NkMTdiYTg1Li44ZjE2NDdjMWYzMjI1MTgxNmM3Y2YwODk2MTgyYWUzNDIzNWM1MTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVB
bmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwKIHsKICAgICBTdHJpbmcgbWVz
c2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2Fn
ZVRleHQpOwotICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4
ZWMpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZSht
ZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUu
Y3BwCmluZGV4IGY0M2JkMmE3YTYwNTkzNzI3YWQwYTZhOTFkZWNkNmViZWM3MjI2ODguLjY5MDNi
ZTVlYzI1ZmI5MWVmZjc3NzZlNDQ3NmFkNGVhMmJjZTczMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtNDQsNiArNDQsNyBAQCBXb3JrZXJFdmVu
dFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgpCiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWU6OkV2
ZW50RGlzcGF0Y2hlcgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEV2ZW50RGlzcGF0Y2hlcihSZWZQdHI8RXZlbnQ+JiYgZXZlbnQsIFdvcmtlckV2ZW50UXVl
dWUmIGV2ZW50UXVldWUpCiAgICAgICAgIDogbV9ldmVudChXVEZNb3ZlKGV2ZW50KSkKQEAgLTg0
LDcgKzg1LDcgQEAgYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50
PiYmIGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvKiBldmVudFB0ciA9
IGV2ZW50LnB0cigpOwotICAgIGF1dG8gZXZlbnREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUoZXZlbnQpLCAqdGhpcyk7CisgICAgYXV0byBldmVu
dERpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCks
ICp0aGlzKTsKICAgICBtX2V2ZW50RGlzcGF0Y2hlck1hcC5hZGQoZXZlbnRQdHIsIGV2ZW50RGlz
cGF0Y2hlci5nZXQoKSk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnBvc3RUYXNrKFtl
dmVudERpc3BhdGNoZXIgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hlcildIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewogICAgICAgICBldmVudERpc3BhdGNoZXItPmRpc3BhdGNoKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCmluZGV4IDYxMTVlZjRhMTM2NTJh
NmVhZDEwYWYzN2NmYjQ5NDI4MjBjM2NiMmIuLmQ4OTczZDViY2FlMTdiOTU1MDA0NGM3ZTgwMTYw
NWI5OWQ1NDlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZl
bnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5o
CkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWUgZmluYWwgOiBwdWJsaWMgRXZl
bnRRdWV1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmly
dHVhbCB+V29ya2VyRXZlbnRRdWV1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcAppbmRleCA3YmE2ZWRiNTIwOGYyMmMzZjhmMTZkZTI5ZDgyNWI3NzFm
NmMzZTllLi5iMTdkNjYzNjNhYzM1ODBlN2EzNDQwMDgxYTJmN2M2M2EwNzM4NzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjIsOSArNjIs
OSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmws
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQp
Ci0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+
KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQotICAgICwgbV9taWNyb3Rhc2tRdWV1ZShz
dGQ6Om1ha2VfdW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCisgICAgLCBt
X3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAgICwg
bV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cj4oKnRoaXMpKQorICAgICwgbV9taWNyb3Rhc2tRdWV1ZShtYWtlVW5pcXVlPE1pY3JvdGFza1F1
ZXVlPihtX3NjcmlwdC0+dm0oKSkpCiAgICAgLCBtX2lzT25saW5lKGlzT25saW5lKQogICAgICwg
bV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlz
KQpAQCAtODYsNyArODYsNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUo
Y29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICAgICBvcmln
aW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCk7CiAKICAgICBzZXRTZWN1
cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUob3Jp
Z2luKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250
ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7
IG1fdXJsIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFs
U2NvcGUoKQpAQCAtMzYyLDkgKzM2Miw5IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKICAg
ICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBt
ZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVy
KTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFj
ay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAg
ICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihz
b3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAg
ICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJj
ZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUo
bWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCmluZGV4IGE3NWMwMTU2YzU5ZTM4ZGQ5OTlkNmNlYzFkZGVlZGUyM2JlMTg3
YjMuLjRlOWY1MTlhZWZlZGQyNWY4ODNmNjNhY2EwYTQ3ODlmZjAyN2U0YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlUHJveHkmIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OmNy
ZWF0ZShXb3JrZXImIHdvcmtlcikKIAogV29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5KFdvcmtlciYgd29ya2VyT2JqZWN0KQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2lu
c3BlY3RvclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtl
ck9iamVjdC5pZGVudGlmaWVyKCkpKQorICAgICwgbV9pbnNwZWN0b3JQcm94eShtYWtlVW5pcXVl
PFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmplY3QuaWRlbnRpZmllcigpKSkKICAgICAs
IG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1bWVu
dD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtl
ckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnQKICAgICAgICAgKyttX3VuY29uZmly
bWVkTWVzc2FnZUNvdW50OwogICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrKFdURk1vdmUodGFzaykpOwogICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFz
a3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
V1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VV
bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOwogfQog
CiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVu
TG9vcC5jcHAKaW5kZXggYmNkOTRlNmFjMDQwM2FjZDZhNTRiYWM0MWZhYjQxZTViZjU1MjdkYS4u
YmZhYzk1OTJkZmFhNzkyMTAwNjViMzQ1OWJkMjIxNjE5NTc4NDg3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIE1vZGVQ
cmVkaWNhdGUgewogfTsKIAogV29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCgpCi0gICAgOiBt
X3NoYXJlZFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCisgICAg
OiBtX3NoYXJlZFRpbWVyKG1ha2VVbmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCiB7CiB9CiAK
QEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9z
dFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7
Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+
KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBl
bmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkp
OwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1fbWVz
c2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1v
ZGUpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3Zl
KHRhc2spLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdERlYnVnZ2VyVGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAxOTkxMmYwMjc1ZmVhMTk0ODA1
NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1Li4yMjhmM2QxN2ZmMDAyMmU2MmU2MzY0NTMyZDU1NmI5NTA3
YTAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXQKIAogICAgIEFT
U0VSVChzY3JpcHRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiR0VUIik7CiAKLSAgICBhdXRvIHJl
cXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92ZShzY3JpcHRS
ZXF1ZXN0KSk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+
KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6
OnJlc3BvbnNlVVJMKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4g
V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiBp
bml0aWF0b3JJZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1
ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKICAgICByZXF1ZXN0LT5zZXRIVFRQTWV0aG9kKCJH
RVQiX3MpOwogICAgIHJlcXVlc3QtPnNldEluaXRpYXRvcklkZW50aWZpZXIoaW5pdGlhdG9ySWRl
bnRpZmllcik7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKaW5kZXggMWY3NTYxODZhMjBmMDE2OWU0Nzg0Mzk1MWJlZTM2ODdlMDAyNGZi
YS4uM2MzODU4YmRhOWI0NGI1N2ZhZGIzOWVmYTJlMGEwZjNhMzA0MTE4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFdvcmtlclRo
cmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluCiAgICAgLCBtX3dvcmtlckRlYnVnZ2VyUHJveHkod29ya2VyRGVidWdn
ZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29ya2VyUmVwb3J0aW5nUHJv
eHkpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX3N0YXJ0dXBE
YXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNjcmlwdFVSTCwg
bmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgc291cmNlQ29kZSwgc3RhcnRN
b2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNz
aW9uSUQpKQorICAgICwgbV9zdGFydHVwRGF0YShtYWtlVW5pcXVlPFdvcmtlclRocmVhZFN0YXJ0
dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUs
IHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIHRvcE9yaWdp
biwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICAgICAsIG1faWRiQ29ubmVjdGlvblByb3h5KGNvbm5lY3Rpb25Qcm94eSkKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCmluZGV4IGIyZDI2MTVhMTI2M2QxNjI2NjE4MjAwNDY0OGY5MGVkYTY5MjA2
YjUuLjU5YzcxYzRkMTQ3NjI3Y2ZkOWQzMWE0NWVhYmNjY2RhZTEwM2U3OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpk
ZXJlZkV2ZW50VGFyZ2V0KCkKIGF1dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkoKSAt
PiBSZWFkeVByb21pc2UmCiB7CiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZSkgewotICAgICAgICBt
X3JlYWR5UHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZHlQcm9taXNlPigpOworICAgICAg
ICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWU8UmVhZHlQcm9taXNlPigpOwogCiAgICAgICAg
IGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQo
KS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gKm1fcmVhZHlQcm9taXNlOwpAQCAtMTgw
LDcgKzE4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9u
KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0YS50eXBlID0g
U2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9u
T3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNl
cnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEp
KSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywg
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29w
ZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJ
RDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0
KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9i
PigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVk
dWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAg
LTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lz
dHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBDT05UQUlORVJf
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBVcGRhdGluZyBzZXJ2
aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklk
ZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVl
PFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRh
dGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhp
cywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29y
a2VySm9iPiYmIGpvYikKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVy
cgogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9s
YXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVu
ZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlx
dWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlm
aWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlm
aWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRl
bnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVu
ZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHBy
b21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJv
bWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGlu
Z1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRv
IGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oCmluZGV4IDdhYzljOTgzODNiMDRiNmViODljOTlmMjIwODg1ZTc2NzM5NzZjM2YuLjNiZDZi
OWIwNmU1NzM3NjY1YjU4Zjk2OWUyOTNkMGZlZDYyYzNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAt
MTM5LDYgKzEzOSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXIgZmluYWwgOiBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjCiAjZW5kaWYKIAogICAgIHN0
cnVjdCBQZW5kaW5nUHJvbWlzZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgUGVuZGluZ1Byb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBSZWY8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiYmIHBlbmRp
bmdBY3Rpdml0eSkKICAgICAgICAgICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogICAg
ICAgICAgICAgLCBwZW5kaW5nQWN0aXZpdHkoV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGJjOGY5MWVlNDM0NjJhNTA0OWU4OGMxY2VmNWVmYTc2
MmM5OGZmLi5jYjVjMjIxZmM5NDg4ZDdjMDA3Mjk4M2ExNTc4OTVkY2E4YzZjZWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdl
cjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNl
Y29uCiAKICAgICBzZXJ2aWNlV29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7
CiAKLSAgICBtX3BlbmRpbmdTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoaWRl
bnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0
PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91dCkpOworICAgIG1fcGVuZGluZ1NlcnZpY2VXb3Jr
ZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VX
b3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CiAK
ICAgICBhdXRvJiB0aHJlYWQgPSBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKTsKICAgICB0aHJlYWQu
c3RvcChbdGhpcywgaWRlbnRpZmllciwgc2VydmljZVdvcmtlciA9IFdURk1vdmUoc2VydmljZVdv
cmtlciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBjNjE3
MzYxM2NhY2I1NWQ2OTA1OGJlMmM3ZTJhNWZiZDg1MjljNzc2Li45ZTcyOGMzYTdhZmE0NmM5NDlj
ZGNiZTBkNmZlYjA0YTk1MzFjY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgIGFs
bFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkuYWRkKHRoaXMpOwogCiAjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi0gICAgbV9yZW1vdGVEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1
ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEpOworICAgIG1fcmVtb3RlRGVi
dWdnYWJsZSA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBkYXRh
KTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1
ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5pbml0KCk7CiAjZW5kaWYKQEAgLTE2OCw3ICsx
NjgsNyBAQCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hM
b2FkZXI+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQmxvYkxvYWRlcihGZXRjaExv
YWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBVUkwmIGJsb2JVUkwpCiB7Ci0gICAgYXV0byBsb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOworICAg
IGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oY2xpZW50LCBudWxscHRyKTsK
ICAgICBsb2FkZXItPnN0YXJ0TG9hZGluZ0Jsb2JVUkwobV9kb2N1bWVudCwgYmxvYlVSTCk7CiAg
ICAgaWYgKCFsb2FkZXItPmlzU3RhcnRlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggMWM3ODMxMmM4NTQ4MmY5ODY5YTVmYzBjNmQy
Y2M2YzZmZGZjMTBhMC4uZTRiODQzMTY4NGY3ZDg3ZDJiZmRlNmRkNDI3ZjMzOTAzMDM0YmFkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxs
RmlsZW5hbWUpCiAKICAgICBTUUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9y
eUV4aXN0cyhtX2RhdGFiYXNlRGlyZWN0b3J5KTsKIAotICAgIG1fZGF0YWJhc2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVl
PFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9kYXRhYmFzZS0+b3BlbihmdWxsRmlsZW5h
bWUpKSB7CiAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJGYWlsZWQgdG8gb3BlbiByZWdpc3RyYXRp
b24gZGF0YWJhc2UiOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGZlNWNjODU5ZTY1YTZlMzJh
NzhiNTI4OTc1YTEzMmU3NGJmMTc4N2UuLjkzMjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0
ZDBlOTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVn
aXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAg
Ly8gUGFnZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJh
dGlvbiB0byB0aGlzIGtleSB3aGlsZSB0aGUgaW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2Uu
CiAgICAgQVNTRVJUKCFtX3JlZ2lzdHJhdGlvbnMuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24u
a2V5KSk7CiAKLSAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0
cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5z
Y3JpcHRVUkwpOworICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJl
Z2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRp
b24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlw
dFVSTCk7CiAgICAgcmVnaXN0cmF0aW9uLT5zZXRMYXN0VXBkYXRlVGltZShkYXRhLnJlZ2lzdHJh
dGlvbi5sYXN0VXBkYXRlVGltZSk7CiAgICAgYXV0byByZWdpc3RyYXRpb25QdHIgPSByZWdpc3Ry
YXRpb24uZ2V0KCk7CiAgICAgYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7
CkBAIC0zMDQsNyArMzA0LDcgQEAgU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdp
blN0b3JlPiYmIG9yaWdpblN0b3JlLCBTdHJpbmcmJiByZWdpc3RyYXRpb24KIHsKICAgICBBU1NF
UlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0g
ICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdHJhdGlv
blN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOwor
ICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlID0gbWFrZVVuaXF1ZTxSZWdpc3RyYXRpb25TdG9y
ZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsKICAgICBl
bHNlCiAgICAgICAgIHJlZ2lzdHJhdGlvblN0b3JlSW1wb3J0Q29tcGxldGUoKTsKIApAQCAtMzIx
LDcgKzMyMSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiYgam9iRGF0YSkKICAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0
IGpvYi4KIAogICAgIGF1dG8mIGpvYlF1ZXVlID0gKm1fam9iUXVldWVzLmVuc3VyZShqb2JEYXRh
LnJlZ2lzdHJhdGlvbktleSgpLCBbdGhpcywgJmpvYkRhdGFdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0
aW9uS2V5KCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigq
dGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogCiAgICAgam9iUXVldWUuZW5xdWV1ZUpvYihqb2JEYXRhKTsKQEAgLTgyMCw3ICs4MjAsNyBA
QCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogCiAgICAgaWYgKGNsaWVudElkZW50aWZpZXJzLmlz
RW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2
aWNlV29ya2Vyc1RpbWVyKTsKLSAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihbY2xpZW50T3JpZ2luLCBj
bGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhpc10geworICAgICAgICBpdGVyYXRvci0+dmFsdWUu
dGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KFtjbGllbnRP
cmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlzXSB7CiAgICAgICAgICAgICBWZWN0
b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJzVG9UZXJtaW5hdGU7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5vcmln
aW4oKSA9PSBjbGllbnRPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA4YjY4YjcwZjAx
ZDI1Mjc4YWY1MzhhYmNlOTE0YjhjN2M2OGFiODM3Li5kY2FmNWE4YTcxMGY3OTQ0NjQ3ZGUzY2Q1
ZTk4MDYzOTlhOGZkNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTI4Niw3ICsyODYsNyBA
QCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiBqb2IpCiAgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNldFVwZGF0ZVZpYUNh
Y2hlKGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlKTsKICAgICAgICAgUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0
ZXJKb2I6IEZvdW5kIHJlZ2lzdHJhdGlvbiAlbGx1IGZvciBqb2IgJXMgYnV0IGl0IG5lZWRzIHVw
ZGF0aW5nIiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgam9i
LmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2Vy
dmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3Ry
YXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwp
OworICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdp
c3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9w
dGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CiAgICAg
ICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlvbikpOwog
CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVl
dWU6OnJ1blJlZ2lzdGVySm9iOiBObyBleGlzdGluZyByZWdpc3RyYXRpb24gZm9yIGpvYiAlcywg
Y29uc3RydWN0aW5nIGEgbmV3IG9uZS4iLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAyYjdhMmZlM2ZiYjU4ZDRjNGVlMzhm
YzA0YjUzNmEzZTRlMGM3N2U3Li4zYmU3NTdlMDJhZTE5ZDc1OTBlYzA3YjNmYTRjYmU3ZDYzY2U4
MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAog
ICAgICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9u
IHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgICAgICBhdXRvIHBhaW50RGVmaW5p
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0
cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVy
dGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKKyAgICAgICAgYXV0byBwYWludERlZmlu
aXRpb24gPSBtYWtlVW5pcXVlPFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rv
ci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMp
LCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CiAgICAgICAgIHBhaW50RGVmaW5pdGlvbk1hcCgp
LmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggOTZj
ZjE4NTBiMGNhZTNhYWU5NjA3ZGIxMzQxNjczNThiNjcxYzFkOS4uNjRmYzc4ZWVlNzg4MGVkOWJl
ZGNmYzJhNzAxMmNhNmVjM2NlMWMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CiAKICAgICAv
LyBBbGwgcGFpbnQgZGVmaW5pdGlvbnMgbXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSB2bSBp
cyBkZXN0cm95ZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZXkgd2lsbCBwb2ludCB0byBmcmVlZCBt
ZW1vcnkuCiAgICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxQYWludERlZmluaXRpb24+IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBQYWludERlZmluaXRpb24oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSlND
OjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYsIFZl
Y3RvcjxTdHJpbmc+JiYgaW5wdXRQcm9wZXJ0aWVzLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0QXJn
dW1lbnRzKTsKIAogICAgICAgICBjb25zdCBBdG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKaW5kZXggOGU4YTJhNGNh
MjNlMmI5M2RhMTM0YWZiNTJkMGU5NTc2YzQwMjE1OS4uM2YwOTI1NjNiZDUyYWM0YTRiYmVkYTQx
NWMyMzdhMmQxZGZkYWRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZQogewogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0
QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhl
Yyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQs
IFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRk
Q29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDRiYjc4OGVhNjNjZDZiYmRj
NTMyNTg3ZTA1MTBkNTMyNTI2MDZmZmEuLmNlZjgyZjdiNDExZDIxOGM3MzNkNjZmYTlkYmEyZDkz
MTI1YWU4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcApAQCAtNDksNyArNDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29y
a2xldEdsb2JhbFNjb3BlKTsKIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3Bl
KERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2Rv
Y3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1l
bnQtPnNlc3Npb25JRCgpKQotICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1f
Y29kZShXVEZNb3ZlKGNvZGUpKQpAQCAtNjIsNyArNjIsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6
OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUm
JiBjbwogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCiAgICAgc2V0U2VjdXJpdHlPcmln
aW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVm
KCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250
ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fY29kZS51cmwoKSB9LCAqdGhpcykpOworICAgIHNl
dENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4o
VVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6
fldvcmtsZXRHbG9iYWxTY29wZSgpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBXb3JrbGV0R2xv
YmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXMKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRl
bigpIHx8ICFtZXNzYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiht
ZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNz
YWdlLT5tZXNzYWdlKCksIDApKTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZSht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBt
ZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkp
OwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDFjZWU5ZWIzNDIx
Y2Q5OWE1NmM4ODYwYjhlY2RkNDU5NmY4MGQyZGUuLjcxMzM5MDBmMTcxZWVmNDE1NjczZDRlOTBk
NWNmNzdjZmViYzJiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKICAgICBBU1NFUlQobV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBt
X3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3Bl
KTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50
PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MRXJyb3JzLmgKaW5kZXggYjAyMWNjZTE1M2MzMTkyOTUwYTJiZjc3ZDgwOWEyODQ3YWIwZjBj
MS4uYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYwMzgxNTI0MjhjNzFhYTgyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxFcnJvcnMuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBE
b2N1bWVudDsKIAogY2xhc3MgWE1MRXJyb3JzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBYTUxFcnJvcnMoRG9jdW1lbnQmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZjAxOTNkOGM5NmUzNWM5ZmY3NWU2YTYz
YTM1MGM2NTVkY2E4NjBlZi4uZjg2NjMzYThkNmRiNzA1NDMwMTg4Mjg1NzViNTlmMjY2N2M2NmVk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNzMsNyArMjczLDcg
QEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVVSTCgpIGNvbnN0CiBYTUxIdHRwUmVx
dWVzdFVwbG9hZCYgWE1MSHR0cFJlcXVlc3Q6OnVwbG9hZCgpCiB7CiAgICAgaWYgKCFtX3VwbG9h
ZCkKLSAgICAgICAgbV91cGxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBs
b2FkPigqdGhpcyk7CisgICAgICAgIG1fdXBsb2FkID0gbWFrZVVuaXF1ZTxYTUxIdHRwUmVxdWVz
dFVwbG9hZD4oKnRoaXMpOwogICAgIHJldHVybiAqbV91cGxvYWQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IGFkN2UxM2M4YTE5NGFkNTZkNjIzNDIwMDAxN2Ni
YTc3ZmU4MGI3NDIuLmE5MjQ0MDllZTQ2YzUzZTczYjI3YTQ5YTE5ZWZlOTY5NzIxNjczYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGMpCiAgICAgcmV0dXJuIGMgPT0gJyAn
IHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicgfHwgYyA9PSAnXHQnOwogfQogCi0jZGVmaW5lIERF
RklORV9GVU5DVElPTl9DUkVBVE9SKFN1ZmZpeCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5j
dGlvbj4gY3JlYXRlRnVuY3Rpb24jI1N1ZmZpeCgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RnVuIyNTdWZmaXg+KCk7IH0KKyNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4
KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4
KCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQogCiBjbGFzcyBJbnRlcnZh
bCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAppbmRleCAwNDYx
NWMzZDVmMDMxMzEwNjkzOGZhYTA1ZmIzOWM5OWNlMTIzYjVjLi5jMWJiYzU0ZWI4MzAxNjkxMTlj
ODY4MzFhNGYyYTZlN2MwMDQ1NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhQcmVkaWNhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5j
cHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIGV2YWx1YXRlUHJlZGljYXRlKGNvbnN0IEV4cHJl
c3Npb24mIGV4cHJlc3Npb24pCiAKICAgICAvLyBmb29bM10gbWVhbnMgZm9vW3Bvc2l0aW9uKCk9
M10KICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBFcVRlc3RPcChF
cVRlc3RPcDo6T1BfRVEsIEZ1bmN0aW9uOjpjcmVhdGUoInBvc2l0aW9uIl9zKSwgc3RkOjptYWtl
X3VuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4o
KTsKKyAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNy
ZWF0ZSgicG9zaXRpb24iX3MpLCBtYWtlVW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkp
KS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOwogCiAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4o
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNs
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCmluZGV4
IGVjMmM2YWUwNDU5YTA2OTI1NmE2NjJmNzJjODcyNjdmZWExYTQ1YmQuLjYzMDRlOTI4MTFhOTM0
ZjdkZTc0YzhjOTRiMmI2OWMwMDRlYTQ5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgWFNMU3R5bGVTaGVl
dDo6bG9hZENoaWxkU2hlZXRzKCkKIAogdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVl
dChjb25zdCBTdHJpbmcmIGhyZWYpCiB7Ci0gICAgYXV0byBjaGlsZFJ1bGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYpOworICAgIGF1dG8gY2hpbGRSdWxlID0g
bWFrZVVuaXF1ZTxYU0xJbXBvcnRSdWxlPih0aGlzLCBocmVmKTsKICAgICBtX2NoaWxkcmVuLmFw
cGVuZChjaGlsZFJ1bGUucmVsZWFzZSgpKTsKICAgICBtX2NoaWxkcmVuLmxhc3QoKS0+bG9hZFNo
ZWV0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCmluZGV4IGUwMjRlZmI1NmJmNjUyYjkwYTlhMWQ0ZjgxMzA2NDkxODMwZDhlMGYuLjcw
NDg4OTJhNWFhMGVmOWE1NWZiZDI0MDhjZDE3OTE0ZDAyYTljODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMjgsNyArMTI4LDcg
QEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlu
cHV0U291cmNlKQogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3Jz
OjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKQog
ewogICAgIGlmICghbV94bWxFcnJvcnMpCi0gICAgICAgIG1feG1sRXJyb3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVudCgpKTsKKyAgICAgICAgbV94bWxFcnJvcnMgPSBt
YWtlVW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkpOwogICAgIG1feG1sRXJyb3JzLT5oYW5k
bGVFcnJvcih0eXBlLCBtLCBwb3NpdGlvbik7CiAgICAgaWYgKHR5cGUgIT0gWE1MRXJyb3JzOjp3
YXJuaW5nKQogICAgICAgICBtX3Nhd0Vycm9yID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBiOTMx
MDFiOGFhYzQ4MzlhMzliYjU0YjJiODlkZTg5OGM3OWI3NWFiLi44OGRkNjAyZGE4ODNlN2ViYWE5
NGE5NmFiNmEyOWVkZGIzZDgwMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGNs
YXNzIFBlbmRpbmdDYWxsYmFja3MgewogcHVibGljOgogICAgIHZvaWQgYXBwZW5kU3RhcnRFbGVt
ZW50TlNDYWxsYmFjayhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIq
IHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciogeG1sVVJJLCBpbnQgbnVtTmFtZXNwYWNlcywgY29u
c3QgeG1sQ2hhcioqIG5hbWVzcGFjZXMsIGludCBudW1BdHRyaWJ1dGVzLCBpbnQgbnVtRGVmYXVs
dGVkLCBjb25zdCB4bWxDaGFyKiogYXR0cmlidXRlcykKICAgICB7Ci0gICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigp
OworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU3RhcnRFbGVtZW50
TlNDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+eG1sTG9jYWxOYW1lID0geG1sU3Ry
ZHVwKHhtbExvY2FsTmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT54bWxQcmVmaXggPSB4bWxTdHJk
dXAoeG1sUHJlZml4KTsKQEAgLTEyMiwxMiArMTIyLDEyIEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFj
a3MgewogCiAgICAgdm9pZCBhcHBlbmRFbmRFbGVtZW50TlNDYWxsYmFjaygpCiAgICAgewotICAg
ICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRW5kRWxlbWVu
dE5TQ2FsbGJhY2s+KCkpOworICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxQ
ZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5k
Q2hhcmFjdGVyc0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiAgICAgewotICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0Nh
bGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ2hh
cmFjdGVyc0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1cChz
LCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+bGVuID0gbGVuOwpAQCAtMTM3LDcgKzEzNyw3IEBA
IGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25DYWxsYmFjayhjb25zdCB4bWxDaGFyKiB0YXJnZXQsIGNvbnN0IHhtbENoYXIqIGRh
dGEpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJh
Y2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsK
IAogICAgICAgICBjYWxsYmFjay0+dGFyZ2V0ID0geG1sU3RyZHVwKHRhcmdldCk7CiAgICAgICAg
IGNhbGxiYWNrLT5kYXRhID0geG1sU3RyZHVwKGRhdGEpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNs
YXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRDREFUQUJsb2NrQ2FsbGJh
Y2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJh
Y2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CisgICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+
KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAg
IGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgUGVuZGluZ0Nh
bGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZENvbW1lbnRDYWxsYmFjayhjb25zdCB4bWxDaGFy
KiBzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlx
dWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHht
bFN0cmR1cChzKTsKIApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3Mg
ewogCiAgICAgdm9pZCBhcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKGNvbnN0IHhtbENoYXIq
IG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIqIHN5c3RlbUlE
KQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGlu
Z0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtl
VW5pcXVlPFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxi
YWNrLT5uYW1lID0geG1sU3RyZHVwKG5hbWUpOwogICAgICAgICBjYWxsYmFjay0+ZXh0ZXJuYWxJ
RCA9IHhtbFN0cmR1cChleHRlcm5hbElEKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBQZW5k
aW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kRXJyb3JDYWxsYmFjayhYTUxFcnJvcnM6
OkVycm9yVHlwZSB0eXBlLCBjb25zdCB4bWxDaGFyKiBtZXNzYWdlLCBPcmRpbmFsTnVtYmVyIGxp
bmVOdW1iZXIsIE9yZGluYWxOdW1iZXIgY29sdW1uTnVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0
byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7Cisg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdFcnJvckNhbGxiYWNrPigp
OwogCiAgICAgICAgIGNhbGxiYWNrLT5tZXNzYWdlID0geG1sU3RyZHVwKG1lc3NhZ2UpOwogICAg
ICAgICBjYWxsYmFjay0+dHlwZSA9IHR5cGU7CkBAIC0yMDIsNiArMjAyLDcgQEAgY2xhc3MgUGVu
ZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nU3RhcnRFbGVtZW50
TlNDYWxsYmFjayA6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdTdGFydEVsZW1l
bnROU0NhbGxiYWNrKCkKICAgICAgICAgewogICAgICAgICAgICAgeG1sRnJlZSh4bWxMb2NhbE5h
bWUpOwpAQCAtMjMzLDYgKzIzNCw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogICAgIH07
CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNrIDogcHVibGljIFBlbmRp
bmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgdm9pZCBjYWxsKFhNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIpIG92ZXJyaWRlCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHBhcnNlci0+ZW5kRWxlbWVudE5zKCk7CkBAIC0yNDAsNiArMjQy
LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5k
aW5nQ2hhcmFjdGVyc0NhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGlu
Z0NoYXJhY3RlcnNDYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHhtbEZyZWUocyk7
CkBAIC0yNTUsNiArMjU4LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2sgOiBwdWJsaWMg
UGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2so
KQogICAgICAgICB7CiAgICAgICAgICAgICB4bWxGcmVlKHRhcmdldCk7CkBAIC0yNzEsNiArMjc1
LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5k
aW5nQ0RBVEFCbG9ja0NhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGlu
Z0NEQVRBQmxvY2tDYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHhtbEZyZWUocyk7
CkBAIC0yODYsNiArMjkxLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBQZW5kaW5nQ29tbWVudENhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxsYmFj
ayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmly
dHVhbCB+UGVuZGluZ0NvbW1lbnRDYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHht
bEZyZWUocyk7CkBAIC0zMDAsNiArMzA2LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAg
ICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjayA6IHB1Ymxp
YyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrKCkKICAg
ICAgICAgewogICAgICAgICAgICAgeG1sRnJlZShuYW1lKTsKQEAgLTMxOCw2ICszMjUsNyBAQCBj
bGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKICAgICB9OwogCiAgICAgc3RydWN0IFBlbmRpbmdFcnJv
ckNhbGxiYWNrOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nRXJyb3JDYWxsYmFj
aygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHhtbEZyZWUobWVzc2FnZSk7CkBAIC01NjQsNyAr
NTcyLDcgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6c3VwcG9ydHNYTUxWZXJzaW9uKGNvbnN0
IFN0cmluZyYgdmVyc2lvbikKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihE
b2N1bWVudCYgZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQogICAgIDogU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV92aWV3KGZyYW1lVmlldykKLSAgICAs
IG1fcGVuZGluZ0NhbGxiYWNrcyhzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkp
CisgICAgLCBtX3BlbmRpbmdDYWxsYmFja3MobWFrZVVuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigp
KQogICAgICwgbV9jdXJyZW50Tm9kZSgmZG9jdW1lbnQpCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9z
aXRpb24oVGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKIHsKQEAgLTU3Miw3ICs1
ODAsNyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIAogWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERv
Y3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnRF
bGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCiAgICAgOiBT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9jdW1lbnQoKSwgcGFyc2VyQ29udGVu
dFBvbGljeSkKLSAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdDYWxsYmFja3M+KCkpCisgICAgLCBtX3BlbmRpbmdDYWxsYmFja3MobWFrZVVuaXF1ZTxQZW5k
aW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50Tm9kZSgmZnJhZ21lbnQpCiAgICAgLCBt
X3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKSkK
ICAgICAsIG1fcGFyc2luZ0ZyYWdtZW50KHRydWUpCkBAIC0xMzI4LDcgKzEzMzYsNyBAQCB2b2lk
IFhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCgpCiAgICAgICAgIHhtbFRyZWVWaWV3ZXIudHJhbnNm
b3JtRG9jdW1lbnRUb1RyZWVWaWV3KCk7CiAgICAgfSBlbHNlIGlmIChtX3Nhd1hTTFRyYW5zZm9y
bSkgewogICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1sRG9jUHRyRm9yU3RyaW5nKGRvY3VtZW50
KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIG1fb3JpZ2luYWxTb3VyY2VGb3JUcmFuc2Zvcm0u
dG9TdHJpbmcoKSwgZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgICAgICBkb2N1bWVu
dCgpLT5zZXRUcmFuc2Zvcm1Tb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1Tb3VyY2U+
KGRvYykpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRUcmFuc2Zvcm1Tb3VyY2UobWFrZVVuaXF1
ZTxUcmFuc2Zvcm1Tb3VyY2U+KGRvYykpOwogCiAgICAgICAgIGRvY3VtZW50KCktPnNldFBhcnNp
bmcoZmFsc2UpOyAvLyBNYWtlIHRoZSBkb2N1bWVudCB0aGluayBpdCdzIGRvbmUsIHNvIGl0IHdp
bGwgYXBwbHkgWFNMIHN0eWxlc2hlZXRzLgogICAgICAgICBkb2N1bWVudCgpLT5hcHBseVBlbmRp
bmdYU0xUcmFuc2Zvcm1zTm93SWZTY2hlZHVsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJE
cml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNl
cnZpY2UuY3BwCmluZGV4IDA1YmM5NTNmN2YwZGRjNzg3YjFlNjMwNDg3Njk2YzIwODU5Y2FlMGYu
LmQ2OWUxNDk5MmQ1ODY3NTFjYTA0MzQyNjM2MmE2ZjQxYzI2OTlmNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgV2ViRHJpdmVy
U2VydmljZTo6Y29ubmVjdFRvQnJvd3NlcihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYmIGNhcGFiaWxp
dGllc0xpc3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNlc3Npb25Ib3N0
ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXNzaW9uSG9zdD4oY2FwYWJpbGl0aWVzTGlzdC50YWtlTGFz
dCgpKTsKKyAgICBhdXRvIHNlc3Npb25Ib3N0ID0gbWFrZVVuaXF1ZTxTZXNzaW9uSG9zdD4oY2Fw
YWJpbGl0aWVzTGlzdC50YWtlTGFzdCgpKTsKICAgICBhdXRvKiBzZXNzaW9uSG9zdFB0ciA9IHNl
c3Npb25Ib3N0LmdldCgpOwogICAgIHNlc3Npb25Ib3N0UHRyLT5jb25uZWN0VG9Ccm93c2VyKFt0
aGlzLCBjYXBhYmlsaXRpZXNMaXN0ID0gV1RGTW92ZShjYXBhYmlsaXRpZXNMaXN0KSwgc2Vzc2lv
bkhvc3QgPSBXVEZNb3ZlKHNlc3Npb25Ib3N0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChlcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9nbGliL1Nl
c3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGli
LmNwcAppbmRleCA3YTIwYjg5NDFhZmY3MmE4NTJiNzZmNWM1NTEwNjI2NTQ3NzRhMWNjLi5hNTI2
NmI1OTcyZmVhMGIyOGRkZTU3NzFjMDk0ZjE1NmVmZGZhNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgU2Vzc2lv
bkhvc3Q6OmxhdW5jaEJyb3dzZXIoRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
cik+JiYgY29tcGxlCiAgICAgfSwgdGhpcyk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRidXNB
ZGRyZXNzKGdfc3RyZHVwX3ByaW50ZigidGNwOmhvc3Q9JXMscG9ydD0ldSIsICIxMjcuMC4wLjEi
LCBwb3J0KSk7Ci0gICAgY29ubmVjdFRvQnJvd3NlcihzdGQ6Om1ha2VfdW5pcXVlPENvbm5lY3RU
b0Jyb3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxh
YmxlLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIGNvbm5lY3RUb0Jy
b3dzZXIobWFrZVVuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPih0aGlzLCBXVEZNb3Zl
KGRidXNBZGRyZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpKTsKIH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6Y29ubmVjdFRvQnJvd3NlcihzdGQ6OnVu
aXF1ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4mJiBkYXRhKQpAQCAtMzgxLDcgKzM4
MSw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGxvbmcgbWVzc2Fn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKG1fY29ubmVjdGlvbklEKTsK
ICAgICBBU1NFUlQobV90YXJnZXQuaWQpOwogCi0gICAgYXV0byBtZXNzYWdlQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8TWVzc2FnZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlE
LCB0aGlzIH0pOworICAgIGF1dG8gbWVzc2FnZUNvbnRleHQgPSBtYWtlVW5pcXVlPE1lc3NhZ2VD
b250ZXh0PihNZXNzYWdlQ29udGV4dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKICAgICBnX2RidXNf
Y29ubmVjdGlvbl9jYWxsKG1fZGJ1c0Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsCiAgICAgICAg
IElOU1BFQ1RPUl9EQlVTX09CSkVDVF9QQVRILAogICAgICAgICBJTlNQRUNUT1JfREJVU19JTlRF
UkZBQ0UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tB
dHRyaWJ1dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlj
a0F0dHJpYnV0aW9uTWFuYWdlci5oCmluZGV4IGI2MmYxMmUxODJmMjFlYjhkNTEwNzRjYjI1NGQ3
YjIxMmUwY2VkMTkuLmI0NDVlN2E2NWE0OGQwNzQ4YmQ3ZTkyMDVhMzQ0MGY3ZjFhOTU2Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9u
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlci5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxB
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAyZTI5NmIyOWY0M2E0ZmM4OGU3MDA5MzI0
YTVlMjNiMGJlOWNkNTFjLi45MzAzZDJhZGMxNWVmNmZiMzEwYjZmYjE2ZDA3MGNjODUzZmRjM2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKCkKICAgICBpZiAo
cmVzb3VyY2VMb2dQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9maWxl
TW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwg
bV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyldIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0
b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVl
LmNvcHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihz
dG9yYWdlUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpG
aWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9maWxlTW9uaXRvciA9IG1ha2VVbmlxdWU8Rmls
ZU1vbml0b3I+KHN0b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmls
ZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgICAgIGlmICh0eXBlID09IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZTo6UmVtb3ZhbCkgewogICAgICAgICAgICAgLy8gRGlyZWN0b3J5IHdhcyByZW1vdmVkIQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZS5oCmluZGV4IDRjMDMzZTM1M2Q0ZjMwOGY3Zjc2MDAxMmNhOTYyOTYzMDNjMTA3MzAuLjcx
ZjM0YmZhM2Q2YzJiNTI3NjE2ODk0NGVlMzM0YzczZGFmNTAzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKQEAgLTQ1
LDYgKzQ1LDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogCiAv
LyBDYW4gb25seSBiZSBjb25zdHJ1Y3RlZCAvIGRlc3Ryb3llZCAvIHVzZWQgZnJvbSB0aGUgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljIHF1ZXVlLgogY2xhc3MgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmLCBXb3Jr
UXVldWUmLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAgICB+UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggYWRlYzE0Y2Y5Y2NkOTY0YzI5MDFjZTJkODRlYTM1
NmRmNmRiMGZmMi4uNWRjN2Q5OTQ3OGIzNGNhMzJiNzcyMGYwOTc0NWQwMjFhNmVjNDExNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNzcsNiArNzcsNyBA
QCBlbnVtIGNsYXNzIE9wZXJhdGluZ0RhdGVzV2luZG93IDogYm9vbCB7IExvbmcsIFNob3J0IH07
CiAKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0
aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNs
YXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB1c2luZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkYTg4NjZiNjFjOGIwNTcyY2RkNTA4ZWI2OWE5ZDhh
OTg5ZTc1ZDIxLi44YjRhODgyMzk3NGQ2Y2YxNTU2OWRjZjlmZmU5OTFjMWUxYzBmYjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTU5
LDE1ICsxNTksMTUgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG4KICAgICAKICAgICBwb3N0VGFz
ayhbdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3Rd
IHsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
aXNJVFBEYXRhYmFzZUVuYWJsZWQoKSkgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigq
dGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUg
PSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqdGhpcywg
bV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkpOwogCi0gICAgICAgICAgICBhdXRvIG1lbW9yeVN0b3JlID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBt
X3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAgICAgICAgICBh
dXRvIHBlcnNpc3RlbnRTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGljc1F1ZXVlLCBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIGF1dG8gbWVtb3J5
U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRo
aXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKKyAgICAgICAg
ICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNzUXVldWUsIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCiAgICAgICAgICAgICBkb3duY2FzdDxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlLmdl
dCgpKS5wb3B1bGF0ZUZyb21NZW1vcnlTdG9yZSgqbWVtb3J5U3RvcmUpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVl
LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3Jh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0
aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IG1ha2VVbmlxdWU8UmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUs
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFn
ZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPihk
b3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NT
dG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FKDE5MzI5Nyk6IFRoaXMgc2hvdWxkIGJl
IHJldmlzZWQgYWZ0ZXIgdGhlIFVJUHJvY2VzcyB2ZXJzaW9uIGdvZXMgYXdheS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5oCmluZGV4IDYwNWFlZjNlNmVlOTUwZjM5NDgzZmNkOGNjNGQ4ZTY1OGUwMmNmMGMuLmJiZTM5
ODQ3NTJiZTE0NjA1MGQ1MDM1NzEzNzE1NTBmYjJjYjYzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAt
NDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwog
CiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb29raWVNYW5hZ2VyKTsKIHB1Ymxp
YzoKICAgICBXZWJDb29raWVNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCmluZGV4IGRjNzllZWJjZjE4ZGJm
NjdiNDY0YzM1ODYxMGZiM2NlN2NmZTkwY2MuLjBlMzhlOTQzMGQyY2M5YTE0MWE5NzI3MDM1ZGQz
ZGZhMDI1ZjRkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogc3RydWN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcik7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKE5ldHdvcmtQcm9j
ZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVBy
b3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJTb3VwLmNwcAppbmRleCAyYzRkMmZmOTQ4MDljNDJhNjExNjczYjVmYjVj
YWRiZmE1OTE2MDRlLi5jOWIwYzNiMjE1N2FkOGFlYmU3NDZmNGYzOWZiNWVmY2Q3NWU3MTVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9z
b3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyU291cC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsaWVu
dAogICAgICAgICBpZiAoIWN1c3RvbVByb3RvY29sTWFuYWdlcikKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBhdXRvIGN1c3RvbVByb3RvY29sSUQgPSBjdXN0b21Qcm90b2NvbE1hbmFn
ZXItPmFkZEN1c3RvbVByb3RvY29sKHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YT4oV1RGTW92ZSh0YXNrKSwgcmVxdWVz
dCkpOworICAgICAgICBhdXRvIGN1c3RvbVByb3RvY29sSUQgPSBjdXN0b21Qcm90b2NvbE1hbmFn
ZXItPmFkZEN1c3RvbVByb3RvY29sKG1ha2VVbmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YT4oV1RGTW92ZSh0YXNrKSwgcmVxdWVzdCkpOwog
ICAgICAgICBjdXN0b21Qcm90b2NvbE1hbmFnZXItPnN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2Nv
bElELCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNHZXRSZXF1ZXN0KHJlcXVlc3QpKTsKICAgICB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggODBmZTFhMmRkYzNlMTNhMDIwYjI1NjRhNjJk
YzU1M2YwYjVkNDRkMC4uYjRkMmRhYzVkMGRiNTczYmM3NWVlY2VlZjhmYjA2MGU4M2Q2MTZiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBk
b3dubG9hCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gY2xpZW50KCku
bmV0d29ya0Jsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVlc3QudXJsKCkpOwogICAgIHBh
cmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpVc2U7CiAKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0
ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAq
bmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuYmxvYlJlZ2lz
dHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKKyAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25s
b2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElE
LCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuYmxvYlJl
Z2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRh
dGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlx
dWVfcHRyPERvd25sb2FkPiYmIGRvd25sb2FkKQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIERvd25s
b2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtE
YXRhVGFzayYgbmV0dwogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRv
RG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xv
YWQ+JiYgbmV0d29ya0xvYWQsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlciwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYm
IGJsb2JGaWxlUmVmZXJlbmNlcywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Rv
d25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7Ci0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9h
ZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNw
b25zZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgbWFrZVVuaXF1
ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93
bmxvYWRzKCksIFdURk1vdmUobmV0d29ya0xvYWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1h
bmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJ
RCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbHNlCi0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6
bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9u
SUQpOworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93
bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVz
dW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgQVNT
RVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKaW5kZXgg
YTg4NGFjYjI5NWQ0MmNlOTNlMjFiYWM0MzMwODRkN2JiYzQzM2U2NS4uYWUzY2E3ZTBlNGVlN2Vj
ODVkZWEyZTMwOWUxZDNjMjBiNzQ5NjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcApAQCAtNjEsNyArNjEsNyBA
QCBEb3dubG9hZE1hcDo6RG93bmxvYWRNYXBUeXBlOjpBZGRSZXN1bHQgRG93bmxvYWRNYXA6OmFk
ZChEb3dubG9hZElEIGRvd25sb2FkSUQsCiAgICAgYXV0byByZXN1bHQgPSBtX2Rvd25sb2Fkcy5h
ZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGlmIChtX2Rvd25sb2Fkcy5z
aXplKCkgPT0gMSkgewogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRBc3NlcnRpb24pOwotICAg
ICAgICBtX2Rvd25sb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0
aW9uPihnZXRwaWQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJv
dW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZEFzc2VydGlvbiA9IG1ha2VVbmlx
dWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0cGlkKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAgICAgICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiVG9vayAnV2ViS2l0IGRvd25sb2FkcycgYXNzZXJ0aW9uIGluIE5l
dHdvcmtQcm9jZXNzIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAppbmRleCBhMjc4Mjhk
N2E4YmQ4NGE3YWUzNzcxNjg2Nzg2OTFjNzY3ZjI3OTZkLi41OTEyM2YyYzQ4ZjFjMWU0MTc5YmIx
ZDViY2UxNTcwYzZiNzU0ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUGVuZGlu
Z0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoSVBDOjpDb25uZWN0aW9uKiBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgRG93bmxvYWRJ
RCBkb3dubG9hZElELCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1l
KQotICAgIDogbV9uZXR3b3JrTG9hZChzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhp
cywgYmxvYlJlZ2lzdHJ5LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBuZXR3b3JrU2Vzc2lvbikpCisg
ICAgOiBtX25ldHdvcmtMb2FkKG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVn
aXN0cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNzaW9uKSkKICAgICAsIG1fcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24pCiB7CiAgICAgbV9p
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVu
dGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVk
ZW50aWFsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWIxYjliODYwNDM4ZDli
NmEzZjEyNjg5MTQ2MmIzMzZiYzU5ZmM0ZC4uODJhMWU4M2JlOTVjMzA3ZjdlMGE3ZTA3MDQxOWE5
OTY1N2QzNGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTg3OSw3ICs4Nzks
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25u
ZWN0aW9ucygpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hT
V1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+
c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0byBjb25uZWN0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNl
cnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOworICAgIGF1dG8gY29ubmVjdGlv
biA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBz
ZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKICAgICAKICAgICBTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVj
dGlvbi0+aWRlbnRpZmllcigpOwogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbiAtICVzIiwgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcAppbmRleCA0NDQyMGZmNWZmMjI5OWJlMzc1NGNlMzdj
ZGRjN2VlNjE2MmUxOTMxLi41NDM1MjgyOGU2ODcyMWFmMGJhZGUwYzAyNzViZTJmMDk1YTE2NjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE5l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoVXNl
ckNvbnRlbnRDb250cm9sbAogdm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRk
Q29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERh
dGE+PiYmIGNvbnRlbnRSdWxlTGlzdHMpCiB7CiAgICAgYXV0byYgYmFja2VuZCA9ICptX2NvbnRl
bnRFeHRlbnNpb25CYWNrZW5kcy5lbnN1cmUoaWRlbnRpZmllciwgW10gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4
dGVuc2lvbnNCYWNrZW5kPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigpOwogICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKIAogICAgIGZvciAoYXV0byYmIGNvbnRlbnRSdWxlTGlzdCA6IGNvbnRl
bnRSdWxlTGlzdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDg1NmNhMWYwOTVlMTAzYzU0MmFkNGU0MzAwMGJj
YjcwZmYxZmIzMDcuLjhhNmM1YTFmMjE4ZDNjOWFiMjEwNGRmMDk0NjkyY2MzZjY1NTIyNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tC
bG9iLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2ViS2l0
QmxvYlJlc291cmNlRG9tYWluID0gIldlYktpdEJsb2JSZXNvdXJjZSI7CiAKIE5ldHdvcmtEYXRh
VGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIEJs
b2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ29udGVudFNuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRTbmlmZiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+PiYgZmlsZVJlZmVyZW5jZXMpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2so
c2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RV
c2UsIGZhbHNlLCBmYWxzZSkKLSAgICAsIG1fc3RyZWFtKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNG
aWxlU3RyZWFtPigqdGhpcykpCisgICAgLCBtX3N0cmVhbShtYWtlVW5pcXVlPEFzeW5jRmlsZVN0
cmVhbT4oKnRoaXMpKQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhmaWxlUmVmZXJlbmNlcykKICAg
ICAsIG1fbmV0d29ya1Byb2Nlc3Moc2Vzc2lvbi5uZXR3b3JrUHJvY2VzcygpKQogewpAQCAtNDY3
LDcgKzQ2Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQoKQogICAgIH0K
IAogICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2Fk
TWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2Fk
Pihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24t
PnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICBhdXRvIGRvd25sb2FkID0g
bWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElE
LCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAg
ICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9hZC5nZXQoKTsKICAgICBkb3dubG9hZE1hbmFn
ZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5nRG93bmxvYWRJRCwgV1RGTW92
ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3Bl
bmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKaW5kZXggZjY1NDI5
NThiNDcxMDNkMzgxZjhjYzUzNzBkOWQ2YjU5NGRjMTE2Yy4uMTkzMjZmMmY0N2RjOWY0ZjYyMjhh
NGM5YWE4NGY2YzlmYWFiYjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fZGF0YWJh
c2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPigpOworICAgICAg
ICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4oKTsKICAg
ICAgICAgYm9vbCBpc0RhdGFiYXNlT3BlbiA9IG1fZGF0YWJhc2UtPm9wZW4ocGF0aCwgV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6Ok9wZW5Nb2RlOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghaXNE
YXRhYmFzZU9wZW4pIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTgwLDcgKzgwLDcgQEAgTmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKICAg
ICAgICAgLy8gU2luY2Ugd2UgYXJlIHVzaW5nIGEgd29ya2VyUXVldWUsIHRoZSBzZXF1ZW50aWFs
IGRpc3BhdGNoIGJsb2NrcyBtYXkgYmUgY2FsbGVkIGJ5IGRpZmZlcmVudCB0aHJlYWRzLgogICAg
ICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAKLSAgICAgICAgbV9z
dGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4oKm1f
ZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CisgICAgICAgIG1fc3RhdGVtZW50
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KCptX2RhdGFiYXNlLCBodHRw
c1VwZ3JhZGVDaGVja2VyUXVlcnkpOwogICAgICAgICBpbnQgaXNTdGF0ZW1lbnRQcmVwYXJlZCA9
IChtX3N0YXRlbWVudC0+cHJlcGFyZSgpID09IFNRTElURV9PSyk7CiAgICAgICAgIEFTU0VSVChp
c1N0YXRlbWVudFByZXBhcmVkKTsKICAgICAgICAgaWYgKCFpc1N0YXRlbWVudFByZXBhcmVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlci5oCmluZGV4IGRjZDQ2YTYwMWJlNjMwOTg2ZmMyYWUwYzFjOTY1NThjOTU5
MjIwOGEuLjUxZDIwMzE0ZWFhNDllOTZhNDFhNTdjZThkNDIyMjZiYmZiMDcyMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlcigpOwogICAgIH5OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCA5MTA3ZmVjMWUzNGRiNDQ4
ODE2MjI4Njg2MjJjOGZiZWI1YjM4ODNjLi5lZTgwYWM2ZWExYTc3OTc3M2EwNzEwZTE3ODg3MDYz
NzY3YzUxMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxlCiAgICAgfQog
CiAgICAgaWYgKG1fbG9hZFRocm90dGxlTGF0ZW5jeSA+IDBfcykgewotICAgICAgICBtX3Rocm90
dGxlID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJvdHRsZT4oKnRoaXMsIG1fbG9hZFRocm90dGxlTGF0
ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgbV90aHJvdHRsZSA9IG1ha2VVbmlxdWU8VGhyb3R0bGU+KCp0aGlzLCBtX2xvYWRUaHJv
dHRsZUxhdGVuY3ksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCA0MDk3MTRkNjY3MjZhODQ3
NGFmZjI5YTE2MDgxN2YyNDc5NjdiMDE2Li5lMWFlMDBiZDlkOTU0Nzc3ODE3NDM5ODVkZjA3M2E4
YjFjZDI1MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBOZXR3b3JrTG9hZENo
ZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QKICAgICAgICAgbV9mcmFtZUlELAogICAgICAgICBtX3N0b3JlZENyZWRlbnRpYWxzUG9s
aWN5CiAgICAgfTsKLSAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1
ZTxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+KG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCksIFdU
Rk1vdmUocGFyYW1ldGVycyksIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
LCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpLCBpc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQoKV0oYXV0byYmIGVycm9yKSBtdXRh
YmxlIHsKKyAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXI+KG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCksIFdURk1vdmUocGFyYW1l
dGVycyksIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBbdGhpcywgcmVx
dWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBpc1Jl
ZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQoKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQg
LSBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCBwcmVmbGlnaHQgY29t
cGxldGUsIHN1Y2Nlc3M6ICVkIGZvclJlZGlyZWN0PyAlZCIsIGVycm9yLmlzTnVsbCgpLCBpc1Jl
ZGlyZWN0ZWQpOwogCiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKQEAgLTQ0Niw3ICs0
NDYsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVu
dFNlY3VyaXR5UG9saWN5KCkKIHsKICAgICBpZiAoIW1fY29udGVudFNlY3VyaXR5UG9saWN5ICYm
IG1fY3NwUmVzcG9uc2VIZWFkZXJzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQYXNzIHRoZSBVUkwg
b2YgdGhlIHByb3RlY3RlZCByZXNvdXJjZSBpbnN0ZWFkIG9mIGl0cyBvcmlnaW4uCi0gICAgICAg
IG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJp
dHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygpIH0pOworICAgICAg
ICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJpbmcoKSB9KTsKICAgICAgICAgbV9j
b250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJzKCptX2NzcFJlc3BvbnNlSGVh
ZGVycywgU3RyaW5nIHsgbV9yZWZlcnJlciB9LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dFBhcnNpbmdFcnJvcnM6Ok5vKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5
UG9saWN5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCA5Y2I0YTkyNTIyMDkwNWI0YzIxYTRmNzZhZTc3NmFlMTQ1MDI1Zjg3
Li5iYmE3YmJlMDJiOWU2YjkwYzRmOTNhZjU4OGYyNTMzYWE1NTY5OWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNTAzLDkgKzUw
Myw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQog
ICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25D
b3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uLmdldCgpKSk7CiAg
ICAgfQogCi0gICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkp
OworICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKICNlbGlmIFVT
RShDVVJMKSB8fCBVU0UoU09VUCkKLSAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgbV9kZWZhdWx0TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogI2VuZGlmCiB9CiAKQEAgLTUzNSw5
ICs1MzUsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVTZXNzaW9uKGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZwogICAgICAgICAgICAgY29va2llU3Rv
cmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29r
aWVTdG9yYWdlKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24p
LCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKICNlbGlmIFVTRShDVVJMKSB8fCBVU0UoU09VUCkK
LSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOwogI2VuZGlm
CiB9CiAKQEAgLTI0MjgsNyArMjQyOCw3IEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6c3dT
ZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgLy8gSWYg
dGhlcmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29tZSBmcm9t
PwogICAgICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgIXBhdGguaXNFbXB0
eSgpKTsKICAgICAgICAgCi0gICAgICAgIGF1dG8gdmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNX
U2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIFdURk1vdmUocGF0aCks
IHNlc3Npb25JRCk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBtYWtlVW5pcXVlPFNXU2VydmVyPiht
YWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIFdURk1vdmUocGF0aCksIHNlc3Npb25J
RCk7CiAgICAgICAgIGlmIChtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXkpCiAgICAgICAgICAgICB2YWx1ZS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzVGVybWluYXRpb25EZWxheSgpOwogICAgICAgICByZXR1cm4gdmFsdWU7CkBAIC0yNTQwLDYg
KzI1NDAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50TwogfQogCiBjbGFzcyBRdW90YVVzZXJJ
bml0aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFVc2VyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBRdW90YVVz
ZXJJbml0aWFsaXplcihTdG9yYWdlUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKQogICAgICAgICA6IG1f
bWFuYWdlcihtYWtlV2Vha1B0cihtYW5hZ2VyKSkKQEAgLTI1NzQsNyArMjU3NSw3IEBAIGNsYXNz
IFF1b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VRdW90
YVVzZXIgewogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUXVvdGFVc2VycyhTdG9y
YWdlUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVz
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBt
dXRhYmxlIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgb3JpZ2luLCB1c2VyID0gbWFrZVVuaXF1ZTxR
dW90YVVzZXJJbml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMtPmlkYlNlcnZlcihz
ZXNzaW9uSUQpLmluaXRpYWxpemVRdW90YVVzZXIob3JpZ2luKTsKQEAgLTI1ODgsNyArMjU4OSw3
IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5h
Z2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiAgICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFN
YW5hZ2VycyB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAqc3RvcmFn
ZVF1b3RhTWFuYWdlcnMubWFuYWdlcnNQZXJPcmlnaW4oKS5lbnN1cmUob3JpZ2luLCBbdGhpcywg
JnN0b3JhZ2VRdW90YU1hbmFnZXJzLCBzZXNzaW9uSUQsICZvcmlnaW5dIHsKLSAgICAgICAgYXV0
byBtYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdl
UXVvdGFNYW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3Jp
Z2luXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFj
ZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAgICAgIGF1dG8gbWFuYWdlciA9IG1ha2VV
bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFuYWdlcnMuZGVmYXVsdFF1
b3RhKG9yaWdpbiksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0odWludDY0X3QgcXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFj
aykgewogICAgICAgICAgICAgdGhpcy0+cmVxdWVzdFN0b3JhZ2VTcGFjZShzZXNzaW9uSUQsIG9y
aWdpbiwgcXVvdGEsIGN1cnJlbnRTcGFjZSwgc3BhY2VJbmNyZWFzZSwgV1RGTW92ZShjYWxsYmFj
aykpOwogICAgICAgICB9KTsKICAgICAgICAgaW5pdGlhbGl6ZVF1b3RhVXNlcnMoKm1hbmFnZXIs
IHNlc3Npb25JRCwgb3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAppbmRleCBmYjdhNmNkMzZlYTlmMzU5NGE3ZmI5ZGU4NTUzNTMyM2ZhODIx
NzA4Li5jNmUxNjhkZDQ3ZjYzZjQyMjZiZjY1ZGY0ZjM0NGM0OWVkYTBlMzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xNTMsNyArMTUz
LDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2VzcywgcHJp
dmF0ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudCwKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
ICAgICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgbV9zdXBwbGVtZW50cy5h
ZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPigqdGhpcykpOworICAg
ICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFQ+
KCp0aGlzKSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IGNlMDZlMzYxM2FjMjBlZjhiMzMxNGM3ZWIyNmUyYzRhYmFmYjRlODguLmZmOTkyYmZmMWJjZmVm
YTUwNDI4YzRmYTFhMGE5ZjM2NjNjZGExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTExMSw3ICsxMTEs
NyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogCiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkg
fHwgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyB8fCBwYXJhbWV0
ZXJzLm9wdGlvbnMua2VlcEFsaXZlKSB7CiAgICAgICAgIE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9h
ZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gaXNNYWluRnJhbWVMb2FkKCkgPyBOZXR3b3JrTG9hZENo
ZWNrZXI6OkxvYWRUeXBlOjpNYWluRnJhbWUgOiBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBl
OjpPdGhlcjsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9w
dGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRl
ck1hcCB7IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFy
YW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJl
ZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRw
UmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CisgICAgICAg
IG1fbmV0d29ya0xvYWRDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNv
bm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9w
dGlvbnMgfSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9
LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZs
aWdodFBvbGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVy
cy5pc0hUVFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcygpLCByZXF1ZXN0TG9hZFR5cGUpOwogICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLmNzcFJl
c3BvbnNlSGVhZGVycykKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDU1BS
ZXNwb25zZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgbV9w
YXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpIH0pOwogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCkBAIC0xMTksNyArMTE5LDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBw
YXIKICNlbmRpZgogICAgIH0KICAgICBpZiAoc3luY2hyb25vdXNSZXBseSkKLSAgICAgICAgbV9z
eW5jaHJvbm91c0xvYWREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c0xvYWREYXRh
PihXVEZNb3ZlKHN5bmNocm9ub3VzUmVwbHkpKTsKKyAgICAgICAgbV9zeW5jaHJvbm91c0xvYWRE
YXRhID0gbWFrZVVuaXF1ZTxTeW5jaHJvbm91c0xvYWREYXRhPihXVEZNb3ZlKHN5bmNocm9ub3Vz
UmVwbHkpKTsKIH0KIAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjp+TmV0d29ya1Jlc291cmNlTG9h
ZGVyKCkKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgIH0K
IAogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7Ci0gICAgbV9uZXR3
b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbV9jb25uZWN0
aW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9u
KTsKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZt
X2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29y
a1Nlc3Npb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9h
ZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRh
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBhMTZhZTNmYTE3YjJkNTAuLmEwNGFhOTM0
OGYyNDczYmY5YjY3MjViMGEzNjQ4OGE3ZmJjMzJmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTY0LDYgKzY0LDcgQEAgY2xhc3MgQ2Fj
aGU7CiB9CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5l
dHdvcmtTZXNzaW9uPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdmlydHVh
bCB+TmV0d29ya1Nlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMDRlM2QwMjUyMjBkZTRjNDNjNzM2
MmRhMTQxZGYzMmJhMjAzMGZhZi4uNTkxODg1NzU3YTg0NzUxYzgzMThmN2JlNWQyNzVhN2YxMWM1
YTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gTmV0d29ya1NvY2tl
dENoYW5uZWw6OmNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25u
ZWN0aW9uLCBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0g
bWFrZVVuaXF1ZTxOZXR3b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5u
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3Rv
Y29sLCBpZGVudGlmaWVyKTsKICAgICBpZiAoIXJlc3VsdC0+bV9zb2NrZXQpIHsKICAgICAgICAg
cmVzdWx0LT5kaWRDbG9zZSgwLCAiQ2Fubm90IGNyZWF0ZSBhIHdlYiBzb2NrZXQgdGFzayJfcyk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDY3MmIzNzgxYTRkNGEzNGI5YzFl
MWUyNDE1YmQ0OTEwZTc3OWVkNzEuLjlkZjlhYWNkY2IzMzJlMDQxZGI2OWJkMDY4MTAyMjljZjhi
YjRlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRDaGFubmVsLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBj
bGFzcyBOZXR3b3JrU2Vzc2lvbjsKIAogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWwgOiBwdWJs
aWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IGNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCBkOTBj
Y2NhOTgwYThlZmZjMmQ0ZjM4ZjVlM2Y2YmMwYWEyYzJlNTQ2Li4yYzY0MjdlNjQ4MjJjZWY1ZDFh
ODEyMDI1ZWZkNmM4NTQ1NDFjZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApAQCAtNTMsNyArNTMsNyBAQCBQcmVjb25uZWN0VGFzazo6
UHJlY29ubmVjdFRhc2soTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrTG9h
ZFBhcmFtZQogICAgIH0KIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RP
bmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3
b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vz
c2lvbik7CiAKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCBiZjUxNTc4ZmIxNDdkZGRjODdlNjZk
OTBhNWVkZDAyYTRjZDcyNjkzLi5jYzg3ODRkNDI4M2E2MjVmYzBlMWQ5ZWZhYTUyNzA1MjNhYzcx
MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTI0NSw3ICsyNDUsNyBA
QCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpzY2hlZHVsZURhdGFiYXNlVXBkYXRlKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxl
V3JpdGluZ1RvTG9jYWxTdG9yYWdlKQotICAgICAgICBtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlv
bldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdWRkZW5UZXJt
aW5hdGlvbkRpc2FibGVyPigpOworICAgICAgICBtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldo
aWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gbWFrZVVuaXF1ZTxTdWRkZW5UZXJtaW5hdGlvbkRp
c2FibGVyPigpOwogCiAgICAgbV9kaWRTY2hlZHVsZURhdGFiYXNlVXBkYXRlID0gdHJ1ZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwCmluZGV4IDNlOWQxN2Q2MDJkMzQxNzcwMzNjOTMzOGI0YmJlNmRhMGJhYmE4YTQuLmIwODNk
NWQzMmE1MWU2MWRhNDM3NmRmOTQ0NmVmMTExNGVhNmJmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTg0LDE3ICs4
NCwxNyBAQCBDYWNoZTo6Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBSZWY8
U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8QwogewogI2lmIEVOQUJMRShORVRXT1JLX0NB
Q0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhD
YWNoZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7Ci0gICAgICAgIG1fbG93UG93
ZXJNb2RlTm90aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5v
dGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKKyAgICAgICAgbV9s
b3dQb3dlck1vZGVOb3RpZmllciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TG93UG93ZXJNb2RlTm90
aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgewogICAgICAgICAgICAg
QVNTRVJUKFdURjo6UnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKGlzTG93UG93
ZXJNb2RlRW5hYmxlZCkKICAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIg
PSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFt
X3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIpOwotICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVM
b2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRo
aXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9y
YWdlLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIGlmICghbV9s
b3dQb3dlck1vZGVOb3RpZmllci0+aXNMb3dQb3dlck1vZGVFbmFibGVkKCkpCi0gICAgICAgICAg
ICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOworICAgICAgICAgICAgbV9zcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigq
dGhpcywgbV9zdG9yYWdlLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzc1LDEyICszNzUs
MTIgQEAgdm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2ZUNvbXBsZXRpb25IYW5k
bGVyJiYgaGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92
ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5l
dHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNl
KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwg
cmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdS
ZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBy
ZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpt
YWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQ
cm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9u
c2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVy
cyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNw
b25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC00NTcsNyArNDU3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6dXBkYXRl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXEKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gZXhpc3RpbmdFbnRyeS5yZXNwb25zZSgpOwog
ICAgIFdlYkNvcmU6OnVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9uKHJlc3Bv
bnNlLCB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCi0gICAgYXV0byB1cGRhdGVFbnRyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnkua2V5KCksIHJlc3BvbnNlLCBleGlzdGlu
Z0VudHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5l
dHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIG9yaWdpbmFsUmVxdWVzdCwg
cmVzcG9uc2UpKTsKKyAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gbWFrZVVuaXF1ZTxFbnRyeT4oZXhp
c3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50cnkuYnVmZmVyKCksIFdlYkNv
cmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0
U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSkpOwogICAgIGF1dG8g
dXBkYXRlUmVjb3JkID0gdXBkYXRlRW50cnktPmVuY29kZUFzU3RvcmFnZVJlY29yZCgpOwogCiAg
ICAgbV9zdG9yYWdlLT5zdG9yZSh1cGRhdGVSZWNvcmQsIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmlu
ZGV4IDdhZTFjMmZlN2RjZTYwN2I5ZjhhNTNkOTlhMWJkNzk4NTM5OWJjZjEuLjFmNDE0NGE4ZmFl
ODdiZjVmYzVjODNlZDkwMmI2ZmYwOGEwNjRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQo
KSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVj
b3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQogewotICAgIGF1dG8gZW50
cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihzdG9yYWdlRW50cnkpOworICAgIGF1dG8gZW50
cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAgV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdl
RW50cnkuaGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRyeS0+bV9y
ZXNwb25zZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggZTdmYzVi
ODkzMjJiOTkxYzcwOWQwNjhiZTJkZTc3NzM4M2NiNGJjMC4uMjIwMTk0MTdhOGM1MDFiZjk1NWJm
NTMyMmMwNjljYjAzMmE0MWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cApAQCAtNjAsNyArNjAsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNo
ZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIHBhcmFtZXRl
cnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gQ29udGVudFNuaWZmaW5nUG9saWN5OjpEb05vdFNu
aWZmQ29udGVudDsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
ID0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmOwogICAgIHBhcmFtZXRlcnMu
cmVxdWVzdCA9IG1fb3JpZ2luYWxSZXF1ZXN0OwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSkpOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5l
dHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSkpOwogfQogCiBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVjdWxhdGl2ZUxvYWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKaW5kZXggMWNkNmI0
OTJmODFhNWE4MWQyNGNhNzkxMDhkYTZiMTllMGMwMDNmMS4uNTdlOGU3NTk5YjFjY2E2NWIyNmUw
NmVjMzg3MmVlMmRkOTQ5ZGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZE1hbmFnZXIuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdGcmFt
ZUwKICAgICB2b2lkIHJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNl
S2V5KSk7CisgICAgICAgIG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBlbmQobWFrZVVuaXF1ZTxTdWJy
ZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNlS2V5KSk7CiAgICAgICAgIG1fbG9hZEh5
c3RlcmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CiAgICAgfQogCkBAIC0zNTUsNyArMzU1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZShjb25zdCBLZXkmIHN0b3JhZ2VL
ZXksIFJldHJpZXZlQ29tcGxldGlvbkgKICAgICBBU1NFUlQobV9wZW5kaW5nUHJlbG9hZHMuY29u
dGFpbnMoc3RvcmFnZUtleSkpOwogICAgIC8vIEZJWE1FOiBUaGlzIGJyZWFrcyBpbmNyZW1lbnRh
bCBsb2FkaW5nIHdoZW4gdGhlIHJldmFsaWRhdGlvbiBpcyBub3Qgc3VjY2Vzc2Z1bC4KICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fcGVuZGluZ1JldHJpZXZlUmVxdWVzdHMuZW5zdXJlKHN0b3JhZ2VL
ZXksIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJldHJpZXZl
Q29tcGxldGlvbkhhbmRsZXI+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8
UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CiAgICAgfSk7CiAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAg
LTQwNCw3ICs0MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRl
ZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbgogICAgIEFTU0VSVChlbnRy
eSk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogICAgIGF1dG8ga2V5
ID0gZW50cnktPmtleSgpOwotICAgIG1fcHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBzdGQ6Om1h
a2VfdW5pcXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3ZlKGVudHJ5KSwgV1RGTW92ZShyZXZhbGlk
YXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJRF0geworICAgIG1fcHJlbG9hZGVkRW50
cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3ZlKGVudHJ5KSwg
V1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAg
ICAgICBhdXRvIHByZWxvYWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRFbnRyaWVzLnRha2Uoa2V5KTsK
ICAgICAgICAgQVNTRVJUKHByZWxvYWRlZEVudHJ5KTsKICAgICAgICAgaWYgKHByZWxvYWRlZEVu
dHJ5LT53YXNSZXZhbGlkYXRlZCgpKQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIGJvb2wgU3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhjb25zdCBLZXkmIGtleSwgRW50
cnkqIGVudHJ5CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgY29tcGxl
dGlvbkhhbmRsZXIgOiAqY29tcGxldGlvbkhhbmRsZXJzKQotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihlbnRyeSA/IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KCplbnRyeSkgOiBudWxscHRyKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkgPyBtYWtlVW5pcXVlPEVudHJ5PigqZW50
cnkpIDogbnVsbHB0cik7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ2OCw3ICs0NjgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZShjb25z
dCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlcwogCiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmVseSByZXZhbGlkYXRp
bmcgJyVzJzoiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgYXV0byBy
ZXZhbGlkYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkPihtX2NhY2hlLCBm
cmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwg
cmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiByZXZh
bGlkYXRlZEVudHJ5KSB7CisgICAgYXV0byByZXZhbGlkYXRvciA9IG1ha2VVbmlxdWU8U3BlY3Vs
YXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZNb3Zl
KGVudHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmV2
YWxpZGF0ZWRFbnRyeSB8fCAhcmV2YWxpZGF0ZWRFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwog
ICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgcmV2YWxpZGF0ZWRFbnRyeS0+a2V5
KCkgPT0ga2V5KTsKIApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBm
CiAgICAgICAgICAgICBwcmVsb2FkRW50cnkoa2V5LCBzdWJyZXNvdXJjZUluZm8sIGZyYW1lSUQp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5vdCBwcmVsb2FkaW5nICclcycgYmVjYXVz
ZSBpdCBpcyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwga2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBzdGQ6Om1h
a2VfdW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsKKyAgICAgICAg
ICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPEV4cGlyaW5nRW50
cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2
ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShtX2NhY2hlLm5ldHdvcmtQcm9jZXNzKCksIGZyYW1l
SUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZW50cnlSaWdodGx5Tm90V2FybWVkVXBLZXkoKSk7
CiAgICAgICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLnJlbW92ZShrZXkpOwogICAg
ICAgICAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggYmJmYzY0OTg5MGY5NWNjN2Uw
NGNlODJhNGZlMzI5NDRkYzFhYjFmMC4uODA0YzQyOThjYzNlM2MyODE0ZmRiYzJiYmI2Y2JlZTU3
NTg0YWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0yOTAsOCArMjkwLDggQEAgdm9pZCBT
dG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0
d29ya1Byb2Nlc3MpIHN5bmNocm9uaXppbmcgY2FjaGUiKTsKIAogICAgIGJhY2tncm91bmRJT1F1
ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcmVjb3JkRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50c0ZpbHRlcj4oKTsKLSAgICAgICAgYXV0byBibG9iRmlsdGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIgPSBtYWtl
VW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRvIGJsb2JGaWx0ZXIgPSBtYWtl
VW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwogCiAgICAgICAgIC8vIE1vc3Qgb2YgdGhlIGRpc2sg
c3BhY2UgdXNhZ2UgaXMgaW4gYmxvYnMgaWYgd2UgYXJlIHVzaW5nIHRoZW0uIEFwcHJveGltYXRl
IHJlY29yZHMgZmlsZSBzaXplcyB0byBhdm9pZCBleHBlbnNpdmUgc3RhdCgpIGNhbGxzLgogICAg
ICAgICBzaXplX3QgcmVjb3Jkc1NpemUgPSAwOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgU3Rv
cmFnZTo6cmVhZFJlY29yZChSZWFkT3BlcmF0aW9uJiByZWFkT3BlcmF0aW9uLCBjb25zdCBEYXRh
JiByZWNvcmREYXRhKQogICAgIH0KIAogICAgIHJlYWRPcGVyYXRpb24uZXhwZWN0ZWRCb2R5SGFz
aCA9IG1ldGFEYXRhLmJvZHlIYXNoOwotICAgIHJlYWRPcGVyYXRpb24ucmVzdWx0UmVjb3JkID0g
c3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJlY29yZCB7CisgICAg
cmVhZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4o
U3RvcmFnZTo6UmVjb3JkIHsKICAgICAgICAgbWV0YURhdGEua2V5LAogICAgICAgICBtZXRhRGF0
YS50aW1lU3RhbXAsCiAgICAgICAgIGhlYWRlckRhdGEsCkBAIC03NTgsNyArNzU4LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFQ+IGJvb2wgcmV0cmlldmVGcm9tTWVtb3J5KGNvbnN0IFQmIG9wZXJhdGlv
bnMsIGNvbnN0IEtleSYga2V5LAogICAgICAgICBpZiAob3BlcmF0aW9uLT5yZWNvcmQua2V5ID09
IGtleSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1By
b2Nlc3MpIGZvdW5kIHdyaXRlIG9wZXJhdGlvbiBpbiBwcm9ncmVzcyIpOwogICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZWNvcmQgPSBvcGVyYXRpb24tPnJlY29yZCwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtlX3VuaXF1ZTxTdG9y
YWdlOjpSZWNvcmQ+KHJlY29yZCksIHsgfSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobWFrZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29yZCksIHsgfSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC04NjIsNyAr
ODYyLDcgQEAgdm9pZCBTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBLZXkmIGtleSwgdW5zaWduZWQg
cHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlvbkhhbmQKICAgICBpZiAocmV0cmlldmVGcm9tTWVt
b3J5KG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLCBrZXksIGNvbXBsZXRpb25IYW5kbGVyKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWFkT3BlcmF0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxSZWFkT3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgYXV0byByZWFkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxSZWFkT3BlcmF0aW9uPigqdGhp
cywga2V5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICByZWFkT3BlcmF0aW9u
LT50aW1pbmdzLnN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIHJlYWRPcGVy
YXRpb24tPnRpbWluZ3MuZGlzcGF0Y2hDb3VudEF0U3RhcnQgPSBtX3JlYWRPcGVyYXRpb25EaXNw
YXRjaENvdW50OwpAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgU3RvcmFnZTo6c3RvcmUoY29uc3Qg
UmVjb3JkJiByZWNvcmQsIE1hcHBlZEJvZHlIYW5kbGVyJiYgbWFwcGVkQm9keUhhbmRsZXIsCiAg
ICAgaWYgKCFtX2NhcGFjaXR5KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHdyaXRlT3Bl
cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZU9wZXJhdGlvbj4oKnRoaXMsIHJlY29yZCwg
V1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBhdXRvIHdyaXRlT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxXcml0ZU9wZXJhdGlvbj4oKnRo
aXMsIHJlY29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICBtX3BlbmRpbmdXcml0ZU9wZXJhdGlvbnMucHJlcGVuZChXVEZNb3Zl
KHdyaXRlT3BlcmF0aW9uKSk7CiAKICAgICAvLyBBZGQga2V5IHRvIHRoZSBmaWx0ZXIgYWxyZWFk
eSBoZXJlIGFzIHdlIGRvIGxvb2t1cHMgZnJvbSB0aGUgcGVuZGluZyBvcGVyYXRpb25zIHRvby4K
QEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYg
dHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgIEFTU0VSVCh0
cmF2ZXJzZUhhbmRsZXIpOwogICAgIC8vIEF2b2lkIG5vbi10aHJlYWQgc2FmZSBGdW5jdGlvbiBj
b3BpZXMuCiAKLSAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhpcyksIHR5cGUsIGZsYWdzLCBXVEZNb3Zl
KHRyYXZlcnNlSGFuZGxlcikpOworICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBtYWtl
VW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwgdHlwZSwgZmxhZ3MsIFdU
Rk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CiAgICAgYXV0byYgdHJhdmVyc2VPcGVyYXRpb24gPSAq
dHJhdmVyc2VPcGVyYXRpb25QdHI7CiAgICAgbV9hY3RpdmVUcmF2ZXJzZU9wZXJhdGlvbnMuYWRk
KFdURk1vdmUodHJhdmVyc2VPcGVyYXRpb25QdHIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcAppbmRleCA3Yjg4OTIyOTk1MzlkYjM0YzViMzkxNGQzYjIxNGNlOGI4
MTQzYjk4Li42M2FkMDQwOWZkZDIzNmY2ZTNjMmNhMzBlODdlNGE3YzBhMjk1OTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJl
c291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAtOTMsNyArOTMsNyBAQCBTdG9y
YWdlOjpSZWNvcmQgU3VicmVzb3VyY2VzRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNv
bnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3VicmVzb3VyY2VzRW50
cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50
cnkpCiB7Ci0gICAgYXV0byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VicmVzb3VyY2VzRW50
cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8U3VicmVzb3Vy
Y2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIu
c2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3N1YnJlc291cmNlcykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENh
Y2hlLmNwcAppbmRleCBkOGEwNTk0MGQ3MTk3ZWIzMjI1YTM2YmM1MTNhMmRiNjEwZGIwY2Q4Li43
MTA0ZDFmNzRjZDcwMWNiY2VjZmFiNTdkMjRlYmZmOGRhZWJlZGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKQEAgLTcz
LDggKzczLDggQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3Mg
fTsKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKLSAgICAg
ICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hFbnRyaWVz
TWFwPigpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJl
cXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hl
cyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmwsIG1ha2VVbmlxdWU8UHJlZmV0
Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKICAg
ICAvLyBMaW1pdCBwcmVmZXRjaGVzIGZvciBzYW1lIHVybCB0byAxLgogICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2LDkgKzg2LDkgQEAgdm9pZCBQ
cmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25z
dCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QpCiB7CiAg
ICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVz
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CisgICAgICAgIG1fc2Vz
c2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKICAgICBy
ZWRpcmVjdFJlcXVlc3QuY2xlYXJQdXJwb3NlKCk7Ci0gICAgbV9zZXNzaW9uUHJlZmV0Y2hlcy0+
c2V0KHJlcXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdU
Rk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSkpOworICAg
IG1fc2Vzc2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0VXJsLCBtYWtlVW5pcXVlPFByZWZldGNo
Q2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlZGlyZWN0
UmVxdWVzdCkpKTsKICAgICBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5hcHBlbmQoc3RkOjptYWtl
X3R1cGxlKHJlcXVlc3RVcmwsIFdhbGxUaW1lOjpub3coKSkpOwogICAgIGlmICghbV9leHBpcmF0
aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9leHBpcmF0aW9uVGltZXIuc3RhcnRPbmVT
aG90KGV4cGlyYXRpb25UaW1lb3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXggYTE3MTBiYWU5ZTVhODg1MjZjZWZhM2Iz
OWFhNzg4ZmFhZjJjZmEwZS4uYTI1MTUyMGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIzMWExYmVkMTM4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRj
aENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRj
aENhY2hlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgUHJlZmV0Y2hDYWNoZSB7CiAgICAgdm9p
ZCBjbGVhcigpOwogCiAgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRyeShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tCmluZGV4IDA3N2YxNmZhNjUwNjUyYzc4N2E2ZjAzMTYwOTA5MDI2OGVi
YjhhYzAuLmNjZTI2YWNmYjA0Y2Y3MDc0ZTc2M2Y1YmJjOGU0YTVlOThhMTVjOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQwog
CiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3Jr
UHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gTmV0d29ya1Byb2Nl
c3M6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKQEAgLTI3Niw3ICsyNzYsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3Jl
Z3JvdW5kKCkKIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBOZXR3b3JrUHJvY2Vzczo6bmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogewogICAgIGlmICghbV9uZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlcikKLSAgICAgICAgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IHN0ZDo6
bWFrZV91bmlxdWU8TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI+KCk7CisgICAgICAgIG1fbmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyPigpOwogICAgIHJldHVybiAqbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDFmOGQ0Y2JmYzdhNTMzOGNmMGVmNTI0ZTlhNjc1NDMx
YjQwMTdmYzkuLjA5YjI0M2E2ZDdjODE2OGU3NDU5OTRjZGU4NzM3NDdiNjc1NTQ4MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KQEAgLTgwMCw3ICs4MDAsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0
YQogICAgICAgICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3RlY3RlZE5ldHdvcmtEYXRh
VGFzaygqbmV0d29ya0RhdGFUYXNrKTsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29y
a0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpOwogICAgICAgICBhdXRvJiBkb3dubG9hZE1h
bmFnZXIgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsKLSAg
ICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZD4o
ZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNz
aW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICAgICAg
YXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5h
Z2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0
d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFU
YXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpkb3dubG9hZCk7CiAgICAg
ICAgIEFTU0VSVChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGlu
Z0Rvd25sb2FkTG9jYXRpb24oKSkpOwogICAgICAgICBkb3dubG9hZC0+ZGlkQ3JlYXRlRGVzdGlu
YXRpb24obmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKTsKQEAgLTg5
NSw3ICs4OTUsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldENURGF0YUNvbm5lY3Rp
b25TZXJ2aWNlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+
KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFyeShjb25zdCBV
UkwmIGh0dHBQcm94eSwgY29uc3QgVVJMJiBodHRwc1Byb3h5KQpAQCAtMTI0MSw3ICsxMjQxLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNy
ZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1MKIHsKICAgICAvLyBGSVhNRTogVXNlIHByb3RvY29s
LgogICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNrPiB0YXNrID0gW21fc2Vz
c2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5nZXQoKSB3ZWJTb2NrZXRUYXNrV2l0aFJlcXVlc3Q6
IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05v
dFVwZGF0ZUhUVFBCb2R5KV07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0
VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
U29ja2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nl
c3Npb25Db2NvYTo6YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJiB0YXNrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3ND
dXJsLmNwcAppbmRleCBiZTY4MDFmMzBjZGY0OTAwMjU0YzIyNGI5YjExZmJkZjczZmUyZTMxLi41
YmUxNzAyNjZmNDViOGJmNzJlZjU2YjEwMDg3Y2I1OWJiNTZkYmE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNw
cApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlm
aWNhdGVGb3JIb3N0KGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25z
dCBTdHJpbmcmIGhvc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKaW5kZXggZDQ3MDlhNWU0YWM4YTJmYjZhY2ViNTZj
NTdlYmYwYjVjNzQwZDQ1Ni4uZTE4YTQzOTBiMTg4YTI3ZTkzMThjNTI0MDQ1NWYwNjRjZjZiZDY2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtT
ZXNzaW9uQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrU2Vzc2lvbkN1cmwuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkN1
cmwgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9u
Q3VybD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25DdXJsKE5ldHdvcmtQcm9j
ZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgfk5ldHdvcmtT
ZXNzaW9uQ3VybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQppbmRl
eCAyMzc0NTI4OGEwNmQwMTE0NTkxOTY4YjUwODZkZWI1ZjQ1YWEwYWM2Li5jOGI4NmM1MTExMzdl
Mzc0ZWMwYmUwYzBlYjViM2ZlYjRmMDliZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0lPUy5tbQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5JiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5
bWVudENvb3JkaW5hdG9yKCkKIHsKICAgICBpZiAoIW1fcGF5bWVudENvb3JkaW5hdG9yKQotICAg
ICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBt
YWtlVW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX3BheW1lbnRDb29yZGluYXRvcjsKIH0KIApAQCAtODIsNyArODIsNyBAQCBjb25zdCBTdHJp
bmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3Vy
Y2VBcHBsaWNhdGlvbgogCiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JB
dXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBjb29yZGlu
YXRvciwgUEtQYXltZW50UmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI+KGNvb3JkaW5hdG9yLCByZXF1
ZXN0KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xs
ZXI+KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggODdlODViNTVlOTFlYzY5NmFj
MTViMWM1ZjFhMTEzNTFhM2UyNmFiNy4uYzkzNjRjNWQwNGFiMzYzMTcwMjBiMmNhZTI5ZjA3ZWI3
YTk1YmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRPdXRwdXRTdHJlYW0g
PSBhZG9wdEdSZWYoR19PVVRQVVRfU1RSRUFNKG91dHB1dFN0cmVhbS5sZWFrUmVmKCkpKTsKIAog
ICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IG1fc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5k
b3dubG9hZE1hbmFnZXIoKTsKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxE
b3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9z
ZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgYXV0byBkb3du
bG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93
bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1l
KCkpOwogICAgIGF1dG8qIGRvd25sb2FkUHRyID0gZG93bmxvYWQuZ2V0KCk7CiAgICAgZG93bmxv
YWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKG1fcGVuZGluZ0Rvd25sb2FkSUQs
IFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBkb3dubG9hZFB0ci0+ZGlkQ3JlYXRlRGVzdGluYXRp
b24obV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDgzYzJm
MjhlYTVjNzAzNGRhYTdkYjY0NjIxYjQ0NGVkZDVkOTZhZjkuLjdhNzQ4MWY3ZDQyNWYwMjMzN2Ew
YzEwYWRmOWQ2NTRmNzBlYzdkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMzMsNyArMTMzLDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
Y29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vz
c2lvblNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtT
ZXNzaW9uU291cC5jcHAKaW5kZXggNzM1NTI1N2JlZGExZTVhZGNkZTU1NGU2YmQzM2JjZTllMmY2
MGQwZC4uOWM4ZmI4ZDY5MjlkODE3NzdjZDE0NTExNGVlYmZmMGY4MDA4ZjUzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9u
U291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIE5l
dHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCi0gICAg
LCBtX25ldHdvcmtTZXNzaW9uKHN0ZDo6bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPiht
X3Nlc3Npb25JRCkpCisgICAgLCBtX25ldHdvcmtTZXNzaW9uKG1ha2VVbmlxdWU8U291cE5ldHdv
cmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCiB7CiAgICAgYXV0byogc3RvcmFnZVNlc3Npb24gPSBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKICAgICBBU1NFUlQoc3RvcmFnZVNlc3Npb24pOwpAQCAt
MTI0LDcgKzEyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vz
c2lvblNvdXA6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvCiAgICAgcmVxdWVzdC51cGRh
dGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZS5nZXQoKSk7CiAgICAgaWYgKHJlcXVlc3QudXJsKCku
cHJvdG9jb2xJcygid3NzIikpCiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cE1lc3NhZ2Uu
Z2V0KCksICJuZXR3b3JrLWV2ZW50IiwgR19DQUxMQkFDSyh3ZWJTb2NrZXRNZXNzYWdlTmV0d29y
a0V2ZW50Q2FsbGJhY2spLCBudWxscHRyKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJTb2NrZXRUYXNrPihjaGFubmVsLCBzb3VwU2Vzc2lvbigpLCBzb3VwTWVzc2FnZS5nZXQoKSwg
cHJvdG9jb2wpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWws
IHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCmluZGV4IGY5ZWY0YmI1NDMwYmJmNzNiMDRhMGUz
YmVjMjQ3OTI4ZDU5ZTcxNmIuLjQ2NmIyNzgyYmY5M2M3NzA3MGY3OTdkZDM2NTIzNGNjMWRlM2Zi
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
U2Vzc2lvblNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Nlc3Npb25Tb3VwLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25T
b3VwIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lv
blNvdXA+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSk7CiAgICAgfQogICAgIE5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJv
Y2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIH5OZXR3b3Jr
U2Vzc2lvblNvdXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAppbmRleCA2
ZGRjODFhMzZkODQ5Y2JjMjgzNzkzYjYxNzA2N2EyN2UyOWQ5MWYwLi5jMTkzNTAwMTU3YTJhZmI5
ZGE0NmU5M2FiNGVmNTUwODQ2OTQ2NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW0uY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5w
dXRTdHJlYW1SZWFkQXN5bmMoR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgdm9pCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291
bnQpOworICAgIHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5jUmVhZCA9IG1ha2VVbmlxdWU8QXN5
bmNSZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7CiB9CiAKIHN0YXRpYyBn
c3NpemUgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRGaW5pc2goR0lucHV0U3RyZWFt
KiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29j
a2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRDbGllbnQuaAppbmRleCA4ZjIwNWNlMDI5NzEzZDhiYTIxM2YxNDNiYTcxYmIxMTQ3
NTJkZWY1Li4yMmFiZGVjNjlkYjI0NWE0Y2Y5ODNmMjQ3YjM4ZjcyZDkwMGE2ZjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRDbGllbnQuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtSVENQcm92aWRlcjsKIAogY2xhc3MgTGliV2ViUlRDU29ja2V0Q2xpZW50IGZp
bmFsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBVRFAsIFNlcnZlclRDUCwg
Q2xpZW50VENQLCBTZXJ2ZXJDb25uZWN0aW9uVENQIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAK
aW5kZXggZTc4NjU2OGZmNTA1YTdiODcxNzg3MGRmNTdmYTU3ZDE1ZjVkNzc2My4uOTI2NjY4YzM4
ZmZmNzA4YWU1MDJmNThmZDQxNTI4ODAzZWM1NTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAK
QEAgLTY0LDYgKzY0LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTURO
U05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWUKIH0KIAogc3RydWN0IFBl
bmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgUGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QoUmVmPElQQzo6Q29ubmVjdGlv
bj4gY29ubmVjdGlvbiwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgOiBjb25uZWN0aW9uKFdURk1vdmUo
Y29ubmVjdGlvbikpCiAgICAgICAgICwgcmVxdWVzdElkZW50aWZpZXIocmVxdWVzdElkZW50aWZp
ZXIpCkBAIC0xMzUsNyArMTM2LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rl
ck1ETlNOYW1lKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBQQUw6OlNlc3MKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsK
KyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxQZW5kaW5nUmVnaXN0cmF0aW9u
UmVxdWVzdD4obWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgcmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUobmFtZSksIHNlc3Npb25JRCk7CiAgICAgYXV0byogcmVjb3JkID0gJnBl
bmRpbmdSZXF1ZXN0LT5yZWNvcmQ7CiAgICAgYXV0byBlcnJvciA9IEROU1NlcnZpY2VSZWdpc3Rl
clJlY29yZChzZXJ2aWNlLAogICAgICAgICByZWNvcmQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKaW5kZXgg
MzUzZWFjOGNlMTFiNjkwNmVmYWRkMmZkMjcxOGI5N2FiNTJjZGE0ZC4uYWI3MDZkYzJlOTM0YTlh
N2VmOTkyNjg5Nzk3NGJkYzc1NGVhM2RmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcApAQCAtNDQsNyAr
NDQsNyBAQCB2b2lkIE5ldHdvcmtSVENNb25pdG9yOjpzdGFydFVwZGF0aW5nKCkKIHsKICAgICBt
X2lzU3RhcnRlZCA9IHRydWU7CiAgICAgbV9ydGNQcm92aWRlci5jYWxsT25SVENOZXR3b3JrVGhy
ZWFkKFt0aGlzXSgpIHsKLSAgICAgICAgbV9tYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6
OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAgICAgIG1fbWFuYWdlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKICAgICAg
ICAgbV9tYW5hZ2VyLT5TaWduYWxOZXR3b3Jrc0NoYW5nZWQuY29ubmVjdCh0aGlzLCAmTmV0d29y
a1JUQ01vbml0b3I6Om9uTmV0d29ya3NDaGFuZ2VkKTsKICAgICAgICAgbV9tYW5hZ2VyLT5TdGFy
dFVwZGF0aW5nKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAppbmRleCAxNmI3ZmFlMTlm
NjBiZjgxMzk4NDEzNTliZDY4N2M2NGU0OTMxZjQ2Li5kMjJkMmRhODdhZDE2Yzk0YTY2ZTYyOWQy
MmNiYWIyMGJlNjkzZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
TmV0d29ya1JUQ1Byb3ZpZGVyOjpOZXR3b3JrUlRDUHJvdmlkZXIoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24KICAgICA6IG1fY29ubmVjdGlvbigmY29ubmVjdGlvbikK
ICAgICAsIG1fcnRjTW9uaXRvcigqdGhpcykKICAgICAsIG1fcnRjTmV0d29ya1RocmVhZChjcmVh
dGVUaHJlYWQoKSkKLSAgICAsIG1fcGFja2V0U29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmPHJ0
Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PihtX3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkpKQor
ICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PihtX3J0Y05ldHdvcmtUaHJlYWQu
Z2V0KCkpKQogewogI2lmIGRlZmluZWQoTkRFQlVHKQogICAgIHJ0Yzo6TG9nTWVzc2FnZTo6TG9n
VG9EZWJ1ZyhydGM6OkxTX05PTkUpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgTmV0d29ya1JU
Q1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGFkZFNv
Y2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4o
aWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgdHlwZSkpOworICAgIGFkZFNvY2tl
dChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmll
ciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgdHlwZSkpOwogfQogCiB2b2lkIE5ldHdvcmtSVENQ
cm92aWRlcjo6Y3JlYXRlVURQU29ja2V0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFJUQ05l
dHdvcms6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90
IG1heFBvcnQpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6Ondy
YXBOZXdUQ1BDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0MKIHsK
ICAgICBjYWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBpZGVudGlmaWVyLCBuZXdDb25uZWN0
aW9uU29ja2V0SWRlbnRpZmllcl0oKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFz
eW5jUGFja2V0U29ja2V0PiBzb2NrZXQgPSBtX3BlbmRpbmdJbmNvbWluZ1NvY2tldHMudGFrZShu
ZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllcik7Ci0gICAgICAgIGFkZFNvY2tldChpZGVudGlm
aWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwg
KnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2
ZXJDb25uZWN0aW9uVENQKSk7CisgICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBtYWtlVW5p
cXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29j
a2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQKSk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAK
aW5kZXggMzgzODJiMDlkNGZiM2JlMjY0Zjg5Yjc3ODQxYTQxZDdjMDhjYWMwNS4uYzVlZjZkOTlh
NTYwZGQxNDg4ZjE4NDk5NWFlOGE3YjE2ZDlhZDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIENvbm5lY3Rpb246
OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5
bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIC8vIEhh
bmQgb2ZmIGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVz
c2FnZSByZWNlaXZlci4KICAgICB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwpAQCAtMzg4LDcgKzM4OCw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZh
bGlkKCkKIAogc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNN
ZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYg
c3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVu
Y29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5zZXRJc1N5bmNN
ZXNzYWdlKHRydWUpOwogCiAgICAgLy8gRW5jb2RlIHRoZSBzeW5jIHJlcXVlc3QgSUQuCkBAIC03
NTYsNyArNzU2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhy
b3R0bGluZygpCiAgICAgaWYgKG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29t
aW5nTWVzc2FnZXMpOworICAgIG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlciA9IG1ha2VVbmlx
dWU8TWVzc2FnZXNUaHJvdHRsZXI+KCp0aGlzLCAmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWlu
Z01lc3NhZ2VzKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpwb3N0Q29ubmVjdGlvbkRpZENsb3Nl
T25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIENvbm5lY3Rp
b246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNv
ZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRv
IHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJl
cGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09ICJXcmFwcGVkQXN5bmNN
ZXNzYWdlRm9yVGVzdGluZyIpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2Rl
SXNBbGxvd2VkRm9yVGVzdGluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCmluZGV4IDIwZjVlYzViMjAyYmVjMmJkZjU4ZjAyMGViZGVlZjgzMTQ5MzExYmYuLmFkYzRh
YWQ5ODgxOGZhMDZhZmM2YmU4OTYxNDVkNTYzMTU4MzJkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTQzMyw3ICs0MzMsNyBAQCBib29sIENvbm5lY3Rpb246
OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5k
T3B0aW9uPgogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4
cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4o
VDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMo
KSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zKTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5
bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdAogewog
ICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAot
ICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJO
YW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlv
bklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQo
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cAppbmRleCBjY2EwNzM5MGFkZWM0NDZkZTc0NjZjZjhlMTAxMjNjMjc5Mzg1MzUyLi5mZDUxNzAx
NzEyYjA2MjlkNDcyNTJkMDQwODk2YzY0ZmNiY2JiMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh3cmFwcGVkTWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4od3JhcHBlZE1lc3NhZ2Uu
ZGF0YSgpLCB3cmFwcGVkTWVzc2FnZS5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVu
dHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5kYXRh
KCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykp
OwogfQogCiBzdGF0aWMgaW5saW5lIGNvbnN0IHVpbnQ4X3QqIHJvdW5kVXBUb0FsaWdubWVudChj
b25zdCB1aW50OF90KiBwdHIsIHVuc2lnbmVkIGFsaWdubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA4NTQ1MmNkYTdlMDQ1ZTQ0NTVlMDdiOTNi
YWZjYTM1YjEwMjAwMTFlLi5hNzQ5YWFiODcwMDU0Y2ViNjkwZTVmMTRmNDA3NTYzZmZjZDBmOWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0xODIs
NyArMTgyLDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogICAgIH0KIAogICAgIHR5cGVuYW1l
IFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5l
cklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVy
PigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKKyAgICAgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5j
TWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKICAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsK
ICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBh
cmdzLi4uKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oCmluZGV4IDNkNmYzNDI4OTJiYzg4MzkwNjc4ZThjMzY0NjM5MTEwZGU0ZjU3MjYuLjc3MTQ0
OGE0NGQwODg2ZGQwMWJiMGMyZGU2NGRjOWE0Mjg2MjdhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVzc2Fn
ZVNlbmRlciB7CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFVOjppc1N5bmMsICJNZXNz
YWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
KyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5h
bWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNz
YWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCAzNzAyYWNjN2Rm
NTFiZDg0NmI5M2FmNjRiZjA3MGE0YzEwMDM5MTlmLi44N2RkMjhmODA4Njc4MmNlMmEzZGY3OTBm
NGFjMGU2ZDc0OWRhYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Y29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIDogbV94cGNDb25uZWN0aW9uKHhwY0Nvbm5lY3Rpb24pCiAgICAgICAgICwgbV93YXRjaGRv
Z1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNo
ZG9nOjp3YXRjaGRvZ1RpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAg
ICAgLCBtX2Fzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNz
ZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJD
b25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6
QmFja2dyb3VuZCkpCisgICAgICAgICwgbV9hc3NlcnRpb24obWFrZVVuaXF1ZTxXZWJLaXQ6OlBy
b2Nlc3NBbmRVSUFzc2VydGlvbj4oeHBjX2Nvbm5lY3Rpb25fZ2V0X3BpZChtX3hwY0Nvbm5lY3Rp
b24uZ2V0KCkpLCAiQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2ciX3MsIFdlYktpdDo6QXNz
ZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpKQogI2VuZGlmCiAgICAgewogICAgICAgICBtX3dhdGNo
ZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29s
IENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFp
bnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgYXV0byBlbmNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0
aW9uIiwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQ
QyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIsIDApOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
TWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKIAogICAg
ICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVh
ZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWludDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGhlYWRlciArIDEpOwogICAgICAgICBzaXplX3QgYm9keVNpemUgPSBoZWFkZXIt
Pm1zZ2hfc2l6ZSAtIHNpemVvZihtYWNoX21zZ19oZWFkZXJfdCk7CiAKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4oYm9keSwgYm9keVNpemUsIG51bGxwdHIsIFZlY3Rv
cjxBdHRhY2htZW50PiB7IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPihi
b2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7CiAgICAgfQog
CiAgICAgYm9vbCBtZXNzYWdlQm9keUlzT09MID0gaGVhZGVyLT5tc2doX2lkID09IG91dE9mTGlu
ZUJvZHlNZXNzYWdlSUQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVy
KQogICAgICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihk
ZXNjcmlwdG9yLT5vdXRfb2ZfbGluZS5hZGRyZXNzKTsKICAgICAgICAgc2l6ZV90IG1lc3NhZ2VC
b2R5U2l6ZSA9IGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLnNpemU7CiAKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwg
W10oY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFtdKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgewogICAgICAgICAgICAgdm1fZGVh
bGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4o
YnVmZmVyKSwgbGVuZ3RoKTsKICAgICAgICAgfSwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAg
IH0KQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNy
ZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgdWludDhf
dCogbWVzc2FnZUJvZHkgPSBkZXNjcmlwdG9yRGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlT
aXplID0gaGVhZGVyLT5tc2doX3NpemUgLSAoZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihoZWFkZXIpKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERl
Y29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0
YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwg
bWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIC8v
IFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMgaW5jbHVkZSB0aGUgbWF4aW11
bSB0cmFpbGVyIHNpemUuCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNl
aXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24oc3RkOjptYWtlX3VuaXF1
ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKKyAgICBkZWNvZGVyLT5zZXRJbXBvcnRh
bmNlQXNzZXJ0aW9uKG1ha2VVbmlxdWU8SW1wb3J0YW5jZUFzc2VydGlvbj4oaGVhZGVyKSk7CiAj
ZW5kaWYKIAogICAgIGlmIChkZWNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIg
JiYgZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
CmluZGV4IDYzYjZiZTcyNzFlNDQ1ODgzOTUwNWFhOTE1ZTM4NzNmODUxNGRlZGQuLjc3YWY5YjI4
NTg0NTI2YmI3MGM3ZmZjOGUzMjU2YTNiYWExM2EyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yMTYsNyArMjE2LDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZv
LmlzQm9keU91dE9mTGluZSgpKQogICAgICAgICBtZXNzYWdlQm9keSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VCb2R5LT5kYXRhKCkpOwogCi0gICAgYXV0byBkZWNvZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9k
eVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIGF1dG8gZGVjb2Rl
ciA9IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXpl
KCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIAogICAgIHByb2Nlc3NJbmNvbWlu
Z01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBib29sIENv
bm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJy
bm8gPT0gRVdPVUxEQkxPQ0spIHsKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIG1fcGVuZGlu
Z091dHB1dE1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91
dHB1dE1lc3NhZ2UpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ091dHB1dE1lc3NhZ2UgPSBtYWtl
VW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1lc3NhZ2UpKTsKICAgICAgICAgICAg
IG1fd3JpdGVTb2NrZXRNb25pdG9yLnN0YXJ0KG1fc29ja2V0LmdldCgpLCBHX0lPX09VVCwgbV9j
b25uZWN0aW9uUXVldWUtPnJ1bkxvb3AoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gKEdJT0NvbmRpdGlvbiBjb25kaXRpb24pIC0+IGdib29sZWFuIHsKICAgICAgICAg
ICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19PVVQpIHsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG1fcGVuZGluZ091dHB1dE1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IDY0MGY0NTI5OWUzYjI2NmUwMjY5
Y2NjY2M5NDUyYjNiYTU3OWVmYjEuLjVhZGZkODJiZWNhNDZkYjAyNDQ3ZThiY2I2ZDM4NGMyYzAx
NTZhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlv
bldpbi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhh
bmRsZXIoKQogICAgICAgICBpZiAoIW1fcmVhZEJ1ZmZlci5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIFdlIGhhdmUgYSBtZXNzYWdlLCBsZXQncyBkaXNwYXRjaCBpdC4KICAgICAgICAgICAg
IFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cygwKTsKLSAgICAgICAgICAgIGF1dG8gZGVj
b2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9y
ZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgICAg
ICAgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0
YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7
CiAgICAgICAgICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCmluZGV4IGRkMmI2NmE3Y2ExOTU5MWI2
ZWU2N2I4ZjI4NGZkMjU0YTM4Mjc4NWQuLjU2ODM3MjEzZGZiZWFlYjRkNTllOTNjM2Q0OWY2Yzdh
YzJmNTM0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaApAQCAtNDQsNiArNDQsNyBAQCB0eXBl
ZGVmIHN0cnVjdCBfR01vZHVsZSBHTW9kdWxlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTW9kdWxlKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNb2R1bGUoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVy
SG9zdGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3Rp
bmdDb250ZXh0Lm1tCmluZGV4IDgyMzJkYjRlYjU2ZWFjYjZmOGNlODU1NjY0YjhiNzgyYWI2NTBh
OTguLjdhZWU0N2VhYjk1ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0Y2Y0NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RkOjp1bmlxdWVfcHRyPExheWVySG9z
dGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWFj
aFNlbmRSaWdodCYgc2VydmVyUG9ydCkKIHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXll
ckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogCiAg
ICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKICAgICAgICAga0NBQ29udGV4dFBvcnROdW1i
ZXIgOiBAKHNlcnZlclBvcnQuc2VuZFJpZ2h0KCkpLApAQCAtNTIsNyArNTIsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRl
Rm9yUG9ydChjb25zdCBNYQogI2lmIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykK
IHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0
OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRl
eHRPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9z
dGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5
ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6
T3V0T2ZQcm9jZXNzOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQpAQCAtODIsNyArODIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5n
Q29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aQogI2lm
IFBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXll
ckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKCkK
IHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVy
SG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1f
bGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKICAgICBs
YXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IGNvbnRleHRXaXRoQ0dT
Q29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9uczpAeyBrQ0FDb250ZXh0Q0lG
aWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9XTsKICAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuaAppbmRleCA5N2UyZGYzNTNiMzY4MjM5MjlhMzFhZTk1N2ExZGRjZGMyMWMzN2Q2
Li5iOThjYTk0YmM5ZWZjMjNiMmVkODE4YTViNzg0MzM3MjMxN2U5YzY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC00
OSw3ICs0OSw4IEBAIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlByb2Nlc3NDb25u
ZWN0aW9uOwogc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKIAotY2xhc3MgUGx1Z2lu
Q29udHJvbGxlclByb3h5IDogUGx1Z2luQ29udHJvbGxlciB7CitjbGFzcyBQbHVnaW5Db250cm9s
bGVyUHJveHkgOiBwdWJsaWMgUGx1Z2luQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGx1Z2luQ29udHJvbGxlclByb3h5
KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMzY2Yjk4M2NjMGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0
OGRmNzQ4NDQzNS4uY2U4MjY3ZDJlZTc4Y2FjYjNkZGEwYTliMzc1YmZhYWZjNjg2ZWU2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW4KIAogdm9p
ZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIGJvb2wmIHJlc3VsdCwgYm9v
bCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpCiB7Ci0g
ICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNv
bnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJhbWV0ZXJzKTsKKyAgICBhdXRvIHBsdWdp
bkNvbnRyb2xsZXJQcm94eSA9IG1ha2VVbmlxdWU8UGx1Z2luQ29udHJvbGxlclByb3h5Pih0aGlz
LCBjcmVhdGlvblBhcmFtZXRlcnMpOwogCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5KiBwbHVn
aW5Db250cm9sbGVyUHJveHlQdHIgPSBwbHVnaW5Db250cm9sbGVyUHJveHkuZ2V0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRleCBiYmQ0MjNiY2Y1NzE1ZTRhZDcwYmY1MmRlZjhj
MmMzMGM0MWJmMGY2Li4zZTYxYmJkMDAwZTFmNGNkYjZjMmEzNmNhNGY3NWU5MDRmODM1Y2YyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFVSTCA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBB
U1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsK
LSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KCpi
YXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOworICAgICAgICBhdXRvIGFi
c29sdXRlVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVSTD4oKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdl
dCgpLCByZWxhdGl2ZVVSTCk7CiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBhYnNvbHV0ZVVS
TFN0cmluZyA9IGFic29sdXRlVVJMLT5zdHJpbmcoKTsKIAogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxTdHJpbmcp
KTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RG
OjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKKyAgICAgICAgbV9wYXJzZWRVUkwgPSBtYWtl
VW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgpLCBtX3N0cmluZyk7CiAgICAgfQogCiAgICAgV1RG
OjpTdHJpbmcgbV9zdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCmluZGV4IDI1OTI4NDdlMzQxYTNiNmY3
Mjg3NTRiZDc4OGE2NjUzZGQyMjE1YjAuLmQzZmY2MjFlYzBmNGExMGQ3NTY0ODdjYzIxNmY0OTVj
ZTg2ZDcyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1v
dGVPYmplY3RJbnZvY2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgUmVtb3Rl
T2JqZWN0SW52b2NhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlT2Jq
ZWN0SW52b2NhdGlvCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYmxvY2tTaWduYXR1cmUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5tX3JlcGx5SW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbHlJbmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2ln
bmF0dXJlKSk7CisgICAgICAgIHJlc3VsdC5tX3JlcGx5SW5mbyA9IG1ha2VVbmlxdWU8UmVwbHlJ
bmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggNjVkYTllZmYwMWI0M2VhNTcxMDgwMmY2
YzQ2YTZkMDIwMjY1NjkzZS4uNDg5OTc2MjkzMmI3YWY2OTIyMWQwNTBhZjY3NDU4MzZmYzM4N2Iw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIC0gKGlkKV9pbml0V2l0
aFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSYpcGFnZQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBw
YWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVt
b3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBA
IC0xMTksNyArMTE5LDcgQEAgLSAoaWQpX2luaXRXaXRoV2ViUGFnZVByb3h5OihXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYpcGFnZQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsKKyAgICBfcmVt
b3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0
cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xNjAsNyArMTYwLDcg
QEAgLSAodm9pZClfc2VuZEludm9jYXRpb246KE5TSW52b2NhdGlvbiAqKWludm9jYXRpb24gaW50
ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnQKICAgICAgICAgaWYgKHN0cmNtcChbTlNNZXRob2RT
aWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUJsb2NrU2lnbmF0dXJlXS5tZXRo
b2RSZXR1cm5UeXBlLCAidiIpKQogICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlJldHVybiB2YWx1ZSBvZiBibG9jayBhcmd1
bWVudCBtdXN0IGJlICd2b2lkJy4gKCVzKSIsIHNlbF9nZXROYW1lKGludm9jYXRpb24uc2VsZWN0
b3IpXTsKIAotICAgICAgICByZXBseUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVt
b3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigp
LCByZXBseUJsb2NrU2lnbmF0dXJlKTsKKyAgICAgICAgcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlk
ZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0
aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0IHRyeSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlk
IG51bGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9n
bGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggN2VkMTFlNmMxNzFlMjBiZTFlOWVh
ZGIzMDdlNzFmYzQ4YmZkZTg0OS4uZmFlZmVkMmRjYzgzOGVlOTU3MzkwNjVkYWM2M2YxMzU2M2Yw
ZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29u
dGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC05NCw3ICs5NCw3IEBAIFdlYktpdENvbnRleHRNZW51
SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRF
WFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwg
TlVMTCkpOwogCi0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRl
bSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEpOwogICAgIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgc3ViTWVudSA9IGl0ZW1EYXRhLnN1
Ym1lbnUoKTsKICAgICBpZiAoIXN1Yk1lbnUuaXNFbXB0eSgpKQogICAgICAgICB3ZWJraXRDb250
ZXh0TWVudUl0ZW1TZXRTdWJNZW51KGl0ZW0sIGFkb3B0R1JlZih3ZWJraXRDb250ZXh0TWVudUNy
ZWF0ZShzdWJNZW51KSkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRl
bSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyhHdGtBY3Rpb24qIGFjdGlvbikKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChHVEtfSVNfQUNUSU9OKGFjdGlvbiksIG51bGxwdHIpOwogCiAg
ICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVN
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwot
ICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVu
dUl0ZW1HbGliPihhY3Rpb24pOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1
ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9
CkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbihHQWN0aW9uKiBhY3Rpb24KICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbCghdGFyZ2V0IHx8IGdfdmFyaWFudF9pc19vZl90eXBlKHRhcmdldCwgZ19h
Y3Rpb25fZ2V0X3BhcmFtZXRlcl90eXBlKGFjdGlvbikpLCBudWxscHRyKTsKIAogICAgIFdlYktp
dENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVt
LT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xp
Yj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKKyAgICBpdGVtLT5w
cml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9u
LCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKIAogICAgIHJldHVybiBpdGVtOwog
fQpAQCAtMTk0LDcgKzE5NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRl
eHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbihXZWJLaXRDb250CiAKICAgICBXZWJL
aXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CiAgICAgQ29u
dGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJs
ZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+
cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+
KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdlYmtp
dENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CisgICAgaXRlbS0+cHJpdi0+bWVu
dUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENv
bnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51QWN0
aW9uR2V0TGFiZWwoYWN0aW9uKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTIxNiw3ICsy
MTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9sYWJlbAogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAgIENvbnRleHRNZW51SXRlbVR5
cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVja2FibGUoYWN0aW9uKSA/IENo
ZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRD
b250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBTdHJpbmc6OmZyb21VVEY4KGxh
YmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRN
ZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFj
dGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpA
QCAtMjM5LDcgKzIzOSw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRf
bWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2NoYXIqIGxhCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NP
TlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRF
TSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1CYXNl
QXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKKyAgICBpdGVtLT5wcml2
LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oQWN0aW9uVHlw
ZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnLCBTdHJpbmc6OmZyb21VVEY4KGxh
YmVsKSk7CiAgICAgaXRlbS0+cHJpdi0+c3ViTWVudSA9IHN1Ym1lbnU7CiAgICAgd2Via2l0Q29u
dGV4dE1lbnVTZXRQYXJlbnRJdGVtKHN1Ym1lbnUsIGl0ZW0pOwogCkBAIC0yNTYsNyArMjU2LDcg
QEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dp
dGhfc3VibWVudShjb25zdCBnY2hhciogbGEKIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3Iodm9pZCkKIHsKICAgICBXZWJLaXRDb250
ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJp
di0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KFNl
cGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CisgICAg
aXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+
KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CiAK
ICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDVlZDE0M2E5OTg1
OTA0OTZjMzM3NmE1Njk4ODExNTNhNmEwMmIyOGMuLmYzM2NhYjMwNWZlZTEyNzRmYWE3YjIxODM4
ZTliYjdlZjc2YmJmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtNzIsNiArNzIsNyBAQCBj
bGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VTZW5kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eT4KICAgICAsIHB1YmxpYyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
Q2xpZW50IHsKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IDdhZDMzMzE0NTM5MTg4ODlmZDNiOTg5NjM4
NmE4YmVkMWY1MTlhMTQuLjM5MTRhNGMyMDE0YTlhNTRhNjM0ODhhNGU3NDM4MTljNmE4ZGIzYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNv
bnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAogICAgICAgICBBU1NFUlQodmlld0NvbnRyb2xsZXIp
OwogCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVz
ZW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI+KCpwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdD
b250cm9sbGVyKTsKKyAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXph
dGlvblByZXNlbnRlciA9IG1ha2VVbmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmll
d0NvbnRyb2xsZXIpOwogCiAgICAgICAgIEFTU0VSVCghcGF5bWVudENvb3JkaW5hdG9yUHJveHkt
Pm1fc2hlZXRXaW5kb3cpOwogICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVl
dFdpbmRvdyA9IFtOU1dpbmRvdyB3aW5kb3dXaXRoQ29udGVudFZpZXdDb250cm9sbGVyOnZpZXdD
b250cm9sbGVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXggODZlNzQ0YzEwOGRmNGNiY2Y1
ZDA0NzYwOWFjZjk2YzY4MjNkNmIxNi4uNGY4MzcwMjRlZTVmMzRmZmEwZTY5YmFmN2IzYmZjODgx
YTUyODAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAgLTU1LDYgKzU1LDcgQEAgZW51bSBj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIDogdWludDhfdDsKIHVzaW5n
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFs
Jik+OwogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nl
c3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxBdXRoZW50aWNhdGlvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdGlvbk1hbmFnZXIpOwog
cHVibGljOgogICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0aW9uTWFuYWdlcihOZXR3b3JrUHJvY2Vz
cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVu
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCmluZGV4IDU2YTc4M2EwYjIzYjI2YTIwYzViOGZhNGE1OWYxNTdhNGMwMzdiYjcu
LjJkNWQxYWZjMDgyN2E0MWEwYmQ4M2JiYWE4MGY3OGY2MTRmNWJkN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTM4
LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9u
SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIq
IHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGUgdHlwZSwgT3B0aW9uYWw8cGlkX3Q+IHBpZCA9
IFdURjo6bnVsbG9wdCkKICAgICB7CkBAIC0xNjAsNyArMTYxLDcgQEAgYXV0byBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFs
PEhhbmRsZT4KICAgICAgICAgcmV0dXJuIHt7IH19OwogCiAgICAgSGFuZGxlIGhhbmRsZTsKLSAg
ICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0
ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5k
YXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVu
c2lvbiA9IG1ha2VVbmlxdWU8U2FuZGJveEV4dGVuc2lvbkltcGw+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkp
OwogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oCmluZGV4IGM5MzRlOTA3
Zjg5N2YzN2ZlMGUwOGY5MGY2ZjE5ZTM0M2YyMGY1ZWYuLjM5YWUwZDc3Y2QwZmEwMTExNzFmMTkz
YWQ4YjdjMGYzODExOTE2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlIDogcHVibGljIFdlYkNv
cmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDE4ZGMyZmI4ZWQxM2QxNTM0MTJlYTMwZTI5
MTExNzhlYWNlZmM1YWUuLjcwNDMwZjQ0MzEyYzhhNTYyY2UxNWZjNzMyZjY5ZDM4NzZmZTljMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTEyNSw3ICsx
MjUsNyBAQCBUZXh0dXJlTWFwcGVyTGF5ZXImIHRleG1hcExheWVyKE5pY29zaWE6OkNvbXBvc2l0
aW9uTGF5ZXImIGNvbXBvc2l0aW9uTGF5ZXIpCiB7CiAgICAgYXV0byYgY29tcG9zaXRpb25TdGF0
ZSA9IGNvbXBvc2l0aW9uTGF5ZXJJbXBsKGNvbXBvc2l0aW9uTGF5ZXIpLmNvbXBvc2l0aW9uU3Rh
dGUoKTsKICAgICBpZiAoIWNvbXBvc2l0aW9uU3RhdGUubGF5ZXIpIHsKLSAgICAgICAgY29tcG9z
aXRpb25TdGF0ZS5sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigp
OworICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFw
cGVyTGF5ZXI+KCk7CiAgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXItPnNldElEKGNvbXBv
c2l0aW9uTGF5ZXIuaWQoKSk7CiAgICAgfQogICAgIHJldHVybiAqY29tcG9zaXRpb25TdGF0ZS5s
YXllcjsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
ZW5zdXJlUm9vdExheWVyKCkKICAgICBpZiAobV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcm9vdExheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+
KCk7CisgICAgbV9yb290TGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsK
ICAgICBtX3Jvb3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7CiAgICAgbV9yb290TGF5
ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBv
aW50KEZsb2F0UG9pbnQzRCgwLCAwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRleCBjZDNlNTdjNmJjYjlk
OGRjMWZmOTljYWQ1OWM0ZTEzZmY2NjAzYTZiLi5iY2IyMzU5NzViMTMzZDJlMjc2NzZkMjgzZmU4
OTEzODFhMGQ1ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmPFRocmVhZGVk
Q29tcG9zaXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFRo
cmVhZGVkRGlzcGwKIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKENsaWVu
dCYgY2xpZW50LCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Q2xpZW50JiBkaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZUZhY3RvciwgVGV4dHVyZU1hcHBlcjo6
UGFpbnRGbGFncyBwYWludEZsYWdzKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9w
YWludEZsYWdzKHBhaW50RmxhZ3MpCi0gICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChzdGQ6Om1h
a2VfdW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7
IH0pKQorICAgICwgbV9jb21wb3NpdGluZ1J1bkxvb3AobWFrZVVuaXF1ZTxDb21wb3NpdGluZ1J1
bkxvb3A+KFt0aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkKICNpZiBVU0UoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgICwgbV9kaXNwbGF5UmVmcmVzaE1v
bml0b3IoVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShkaXNwbGF5SUQsIGRp
c3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAppbmRleCAxYTA1
NDc1MDdlYzFjMWE4MTI0NzJiYjdlYmQ5ZmEwZDRhZDEzYTQ4Li4wN2U4YmJjOWI1YzljM2M2Yzlk
OGQ2YzNiOTQ1ZTUzOTMyN2I4NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNs
YXNzIE5QVmFyaWFudERhdGE7CiBjbGFzcyBQbHVnaW47CiAKIGNsYXNzIE5QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcik7CiAKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5kZXgg
NjFlMWY5NDAyNTIzODVkYjgwNWVjMTIyZGZmMWM5ZTRmMWI3MjU2My4uZDRiNTI0YzgyOWVjNjY3
MjFkZjFhNzBkMmQ1MTNhZTRlYjNmM2QyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBO
UFJlbW90ZU9iamVjdE1hcDo6bnBPYmplY3RQcm94eURlc3Ryb3llZChOUE9iamVjdCogbnBPYmpl
Y3QpCiB1aW50NjRfdCBOUFJlbW90ZU9iamVjdE1hcDo6cmVnaXN0ZXJOUE9iamVjdChOUE9iamVj
dCogbnBPYmplY3QsIFBsdWdpbiogcGx1Z2luKQogewogICAgIHVpbnQ2NF90IG5wT2JqZWN0SUQg
PSBnZW5lcmF0ZU5QT2JqZWN0SUQoKTsKLSAgICBtX3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5w
T2JqZWN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRoaXMs
IHBsdWdpbiwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7CisgICAgbV9yZWdpc3Rl
cmVkTlBPYmplY3RzLnNldChucE9iamVjdElELCBtYWtlVW5pcXVlPE5QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyPih0aGlzLCBwbHVnaW4sIG5wT2JqZWN0SUQsIG5wT2JqZWN0KS5yZWxlYXNlKCkpOwog
CiAgICAgcmV0dXJuIG5wT2JqZWN0SUQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCmlu
ZGV4IDdiMDJiNWUxMmYzMmM3MmQzOGY1MjA0NWJiNmQ2YTIzYjYyYWUyZTEuLjI2MWQ3YTg5Njkz
MDZhODkyNWM0YWIzNmU0Nzk0N2IzOTZjMTI1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUu
Y3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgc3RhdGljIGJvb2wgbW9kdWxlTWl4ZXNHdGtTeW1ib2xz
KE1vZHVsZSogbW9kdWxlKQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkK
IHsKLSAgICBtX21vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtX3BsdWdpblBhdGgp
OworICAgIG1fbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7CiAgICAg
aWYgKCFtX21vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggZWEyYmU5MzA4Y2JiZTZkZDdlYjhjZjJjNTg4
YzhmZjYxOWVhOTkzYy4uOTU1MTNmNDc5ODJmZDY3ZWU1Zjk4ZGQ3OTk2Yzg1OThmMWY0NjNmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xh
c3MgRW5jb2RlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZW51bSBMYXllckNoYW5nZSB7CiAgICAgICAgIE5hbWVDaGFuZ2VkICAgICAgICAgICAgICAgICAg
ICAgPSAxTExVIDw8IDEsCkBAIC05NCw2ICs5NSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uIHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVz
IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXll
ckNyZWF0aW9uUHJvcGVydGllcygpOwogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwpAQCAtMTA5LDYgKzExMSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uIHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVyUHJvcGVydGllcyB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVz
KCk7CiAgICAgICAgIExheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRpZXMmIG90aGVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDFmMmRlNGQwMzdl
YTNlODMwMjg3YWI5OGNiMmE4ZjIxYzRlY2VhMmUuLjBkMjI3ZmZjMWQ5YzU1NTZhYWQ5MmU3ZWUx
NTc2NWUxNmIzNDQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAg
LTE1MiwxMyArMTUyLDEzIEBAIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXM6OkxheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRpCiAgICAgLy8gRklYTUU6
IExheWVyUHJvcGVydGllcyBzaG91bGRuJ3QgYmUgY29weWFibGU7IFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6Y2xvbmUgc2hvdWxkIGNvcHkgdGhlIHJlbGV2YW50IHByb3BlcnRpZXMuCiAKICAgICBp
ZiAob3RoZXIudHJhbnNmb3JtKQotICAgICAgICB0cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKKyAgICAg
ICAgdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
Km90aGVyLnRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pCi0g
ICAgICAgIHN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKKyAgICAgICAgc3Vi
bGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOwogCiAgICAgaWYgKG90aGVyLmZpbHRlcnMpCi0g
ICAgICAgIGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnM+KCpvdGhlci5maWx0ZXJzKTsKKyAgICAgICAgZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOwogfQogCiB2b2lkIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQudHJhbnNmb3JtID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAg
ICAgICAgcmVzdWx0LnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJv
cGVydGllcyAmIFN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCkgewpAQCAtMzYyLDcgKzM2Miw3IEBA
IGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFu
c2Zvcm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5zdWJs
YXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXg+KHRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9ybSA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CiAgICAg
fQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEhpZGRlbkNoYW5nZWQpIHsK
QEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXll
clByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocm91bmRlZFJlY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAKLSAgICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICAgICAgcmVz
dWx0LnNoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJl
Y3Q+KHJvdW5kZWRSZWN0KTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0
aWVzICYgU2hhcGVQYXRoQ2hhbmdlZCkgewpAQCAtNDcxLDcgKzQ3MSw3IEBAIGJvb2wgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNGcm9udEJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChoYXNGcm9udEJ1ZmZlcikg
ewotICAgICAgICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlPihudWxscHRyKTsKKyAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0
b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7CiAgICAg
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpiYWNraW5nU3RvcmUpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIApAQCAtNDg2LDcgKzQ4Niw3IEBAIGJvb2wg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0
aWVzICYgRmlsdGVyc0NoYW5nZWQpIHsKLSAgICAgICAgYXV0byBmaWx0ZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigpOworICAgICAgICBhdXRvIGZpbHRl
cnMgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKmZpbHRlcnMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICByZXN1bHQuZmlsdGVycyA9IFdURk1vdmUoZmlsdGVycyk7CkBAIC02MDIsNyArNjAy
LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVlVHIKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPExheWVyUHJvcGVydGllcz4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJv
cGVydGllcz4gbGF5ZXJQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmxheWVyUHJvcGVydGllcykpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcAppbmRleCA5NzhjNGJiZWQ3YjVjZDkxY2FhZWMxNTRiYzhi
YTE0YmFiNzUzNDYxLi5lODI2YTMwYjEyZTI0ZWNmNDMwYzY5Yjc2YjFhNmYyOGY1YmI5OGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24u
Y3BwCkBAIC01MjIsNyArNTIyLDcgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRy
YW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaGFzTmV3Um9vdE5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRl
VHJlZT4oKTsKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5n
U3RhdGVUcmVlPigpOwogCiAgICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydGllczsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc0NoYW5nZWRQcm9wZXJ0aWVzKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCBjNzM0N2M3
OWU2NjkzODM3ODVkMDVkMjI5ZTQ3Yjc0N2MxZjBjYTU1Li5iMmNkNDg0NjY3N2NlOTdkZmFjMjg1
ODQ5MGMxZWE0MzRmOTYyOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fp
cm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZSA9IGNyZWF0ZUNhaXJv
U3VyZmFjZSgpOwogICAgIFJlZlB0cjxjYWlyb190PiBiaXRtYXBDb250ZXh0ID0gYWRvcHRSZWYo
Y2Fpcm9fY3JlYXRlKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3Rvcnko
Yml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29u
dGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRl
eHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3Bw
CmluZGV4IDkyZjEwNjJiMjkwZjc3NWRiNWFlN2VkMTk1MmE5Y2E4NThhYjMxMjIuLjAxNmFiYmQ5
OTNlMThhNDVjMDFhN2YwNDk3ZGNjMzFhNTNiNDM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCks
IDAsIG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oYml0bWFwQ29udGV4
dC5nZXQoKSwgMSwgLTEpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3ND
b250ZXh0PihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFw
aGljc0NvbnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJp
dG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCmluZGV4IDYw
ZjhmM2NiNzMyODliNmIwZDJmNGMzNTE0NmYxY2ZlZDQwMzRhODAuLjEwMDFlZTNlNTI5MmVkY2I1
MzZmODIzMzAzYzJjNzRjMmIxZTkyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpCiB7CiAgICAgbV9iaXRtYXAgPSBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKTsK
ICAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IGJpdG1hcENvbnRleHQgPSBEaXJlY3QyRDo6
Y3JlYXRlUmVuZGVyVGFyZ2V0RnJvbVdJQ0JpdG1hcChtX2JpdG1hcC5nZXQoKSk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
OjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFi
bGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQm
IGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKaW5kZXggMjk5NTgxMDk1ZGQxZDFi
MTVhZmVhYmI0ZGFjYmVkMDVkMmJkZDExNC4uNTQ1YTdiZTRkNDgxOTcxMzI4ZDFjM2Y3OWQyNzFl
ZDlhMjFmODM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1
dG9tYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0
b21hdGlvbkNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwog
bmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkF1dG9tYXRpb25DbGllbnQo
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0
b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAyOGZhZjY4NzE5YTlkNzI4ZDUxYjZjNzcyZDg0
ZTE3YjY0OTA5N2NhLi4yYWUyYTUwMzRjM2E0MTcxY2NmNDc3Yjk3ODViNzNhNmYyNGRiODE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlv
blNlc3Npb25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIEF1dG9tYXRpb25TZXNzaW9u
QnJvd3NpbmdDb250ZXh0T3B0aW9ucyA6IHVpbnQxNl90IHsKIH07CiAKIGNsYXNzIEF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIEphdmFTY3JpcHREaWFsb2dUeXBlIHsKICAgICAgICAgQWxlcnQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5o
CmluZGV4IGFmMTA5YzFkZjY3MDBkYzIzZTJlMzMxYjBiNTBlZmJjZmY0Mjg2NjcuLjgxNmY3MWUx
MjY3MGNiM2Q2NWIxZTYzMjgwM2E2YjQwZWY3ZGJmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBA
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBDb250ZXh0TWVu
dUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmlu
ZGV4IDBmOGNhYjk3MzI5ZjA5NTdmMzJiNDdjMjc3ODFkMWU3ODZmYTE0N2QuLjhiNDRhM2Y0NTZj
NTMyYWQzMzgwNmVmNjliNDdlYWQwOTQxZGY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgK
QEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIEFQSSB7
CiAKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKaW5kZXggOTJiMmQ2NzVkZmNhMmNhZmRhMjEx
YjNmNzFjNTc5OGFmZDQ1ZDYyYS4uYjRlMmFkZTcyOWVhNjZkOGRkYThkZDUwMjExOGFlNGFiZGIy
MTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0
aWNMb2dnaW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURp
YWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEFQSSB7
CiBjbGFzcyBEaWN0aW9uYXJ5OwogCiBjbGFzcyBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaAppbmRleCAwMjM3NmUxZTExMGQ0NzZlYjJiOTE4NWU0ZTJm
Y2Q4ZDZlMTMzMmUxLi5iMmVhY2M5YjgzMjU5OGIxN2E5OWRiZDlkNjdlZjI0ZTQ3M2FlZDE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApA
QCAtNDYsNiArNDYsNyBAQCBlbnVtIGNsYXNzIEFsbG93T3ZlcndyaXRlIHsgTm8sIFllcyB9Owog
bmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIERvd25sb2FkQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAppbmRleCBm
MzEyM2FmMTk1MTY1YTY2OWQ2NjY4MzE4YjgxMmU5MzM2NWU2ZGMyLi42ZDFlM2IyMTFmZTBkZDk1
YTk0ODUwNTg0MTdkYjRkZTA4MjQwZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElGaW5kQ2xpZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5Owog
bmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEZpbmRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbmRDbGllbnQoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaApp
bmRleCBjNmY0NTczNDJkMTExOTAxZGNhNmQzYzMwOTAzMzdmZWU3YTFmZWMyLi5mYWUxZGNkM2Nk
Njg4MzUwN2VmYmUzZDk1ZDVkNmY3MmEwMzY5ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBj
bGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRmluZE1hdGNoZXND
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgfkZpbmRNYXRjaGVzQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRm9ybUNsaWVudC5oCmluZGV4IDViMGM2Y2NhMjRlZWZjMWE5NTgxOTFlMGUyNzk0YTQ3
YjRmNTRlN2MuLmYwY2EwNjAxMTE5ODAyZWQzNjliNGQwNzhkODNjODYyYTUxNjEyZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaApAQCAtMzcsNiArMzcs
NyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgRm9ybUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9y
bUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRnVsbHNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1
bGxzY3JlZW5DbGllbnQuaAppbmRleCAxMzc1NTI5Y2RhMjVmMjVjYmIxNzliZGM4OTg5MTcxYzg5
ZWU4ODU3Li44OTc0Y2QxMzM5NDc3NTAyNzNmNDUwZjBlODM5NmMwZTZiMTMyMDM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKQEAg
LTMyLDYgKzMyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNs
YXNzIEZ1bGxzY3JlZW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIEFQSVR5cGUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaAppbmRleCA1MjY2
YmMyY2E1NGNmMDk5YzIzOGNhY2M2MjE0NGM5Nzk5YTA5Nzk3Li43YzZmNTYyOWNiNjBlNTNiYzdi
ODVhYTg4ODlmNzJlNjhkN2E0YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3Mg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgR2Vv
bG9jYXRpb25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+R2VvbG9jYXRpb25Qcm92aWRlcigpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCmluZGV4IDk4MWE5
ODViYmRlNWYxY2I2NWY5NmNiYjIxMzlmYmNmMTlkN2RjZTUuLmUxMjJlZTNlZGIxYzQyMTlkMWQ4
NDE5OTMyMWE4MDAzZDUyYzgyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBIVFRQ
Q29va2llU3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQogCiAgICAg
QVNTRVJUKCFtX29ic2VydmVkQ29va2llTWFuYWdlclByb3h5KTsKIAotICAgIG1fY29va2llTWFu
YWdlclByb3h5T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSVdlYkNvb2tpZU1hbmFnZXJQ
cm94eU9ic2VydmVyPigqdGhpcyk7CisgICAgbV9jb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9
IG1ha2VVbmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsKIAog
ICAgIGF1dG8qIHBvb2wgPSBtX293bmluZ0RhdGFTdG9yZS0+cHJvY2Vzc1Bvb2xGb3JDb29raWVT
dG9yYWdlT3BlcmF0aW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUhpc3RvcnlDbGllbnQuaAppbmRleCBmY2Y0NjA2MWY2YmZhNmRjYjc2MGUxMmM2NjMzYjZiNDVm
MTU2ZGQ0Li4xMTg0YWE0MzJjM2I5ZmZjYjE1ZGE1ZjgyOGVmNGFjNGYxYWRiMWVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKQEAgLTM1LDYg
KzM1LDcgQEAgc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiBuYW1lc3BhY2UgQVBJIHsK
IAogY2xhc3MgSGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SGlzdG9yeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKaW5kZXggZWE5
ZWJhNTBlMWVmZThmMDMyMWM0ZGZlM2E0NDZmMGRjYmI1ZDhjOS4uYmU0M2FlZWM1NGZmMmQ0YWJi
NWEyOGZmMzYzMTQ1YzQ5MGM3ZTg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBX
ZWJJY29uRGF0YWJhc2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkRhdGFiYXNlQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JY29uRGF0YWJhc2VDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCA2ZjllN2FmOWM5ODA5MjMzYjZh
NTY1ZWMzZTM4MGJlMGFhY2Q1NjdlLi4yZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4Mzkz
NmIwZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxv
YWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxv
YWRpbmdDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogbmFt
ZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JY29uTG9hZGluZ0NsaWVudCgp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oCmluZGV4IGMzNWU3YjNhZTQ5M2Q5YWM2M2NiM2E0YjU4MWZlMzJmY2I0
MGFjZTguLjlkNDM0ODlhMmQ2MjU3Y2IwY2FmOTIyYjNmYjA5MzI5NWNlOWJiOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogbmFtZXNwYWNlIEFQ
SSB7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZUNsaWVudCgpID0g
ZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxl
Z2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAppbmRleCBjYmI5ZTBhOTcxNDViZDE3ZGRl
ZjhlMGJiMTRhZjhjMzc2ZGZiMzg4Li5kYjVkOTBjMzFmOTI3NjlkMzAzYTAxYWQ3OGJkYTdmYmQx
YTRkMDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5
Q29udGV4dEhpc3RvcnlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBzdHJ1Y3Qg
V2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCmluZGV4IDM0OGQ2
YmY3NzI5MjcyZThmMmFiYWVjMzc1NWMyMGRlNTQyZDY0NWQuLmIyZWE0MWQ5ZTJmMmU4MWUyYzll
YjNiODc3OTFmYzNlZjhjM2YwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgTmF2aWdhdGlvbjsKIGNs
YXNzIE9iamVjdDsKIAogY2xhc3MgTG9hZGVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkZXJDbGllbnQoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6
T2JqZWN0KikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaAppbmRleCBhNmUwMTljYzQ1MTg2M2E0MWFjZmM4YmVhN2JmMzAyODk2YjFi
YjczLi5jZDIyYTI2NzY0NjhkMTgyMzRhNjA4NDJmZTlkOTE2NzFiMjBhODdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTcz
LDYgKzczLDcgQEAgY2xhc3MgTmF2aWdhdGlvblJlc3BvbnNlOwogY2xhc3MgT2JqZWN0OwogCiBj
bGFzcyBOYXZpZ2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5OYXZpZ2F0aW9uQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAppbmRleCA1ZWJlNDQwNzQyYTc2
NTQxYjFkOWNjZjI5OTVjOWE5NWZlODRkNWFkLi42YWU4ZTc1MjA1ZmZmYzg2NTJmNGY5YjgzYmIz
ZGUzMGVlNmNmYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UG9saWN5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGlj
eUNsaWVudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0
OwogCiBjbGFzcyBQb2xpY3lDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgflBvbGljeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGQ5ZGQwZGI0NjYzNzcyMmI2MDJiMjBk
ZGRmNjczODEzNWY2NDZmNjIuLjc3MmRhNmU1YTg2OTc3ZWM4YWUyZGMwNzU0MmQ4ZmNmMWUxNDk2
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC03MSw2
ICs3MSw3IEBAIGNsYXNzIE9wZW5QYW5lbFBhcmFtZXRlcnM7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKIAogY2xhc3MgVUlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IGFmY2U3MGI2MjdmZWVmN2I1YmY4ODI4OWFk
ODIyZjE5YzE5Y2RiNmYuLjNkMDE2MTFjMDI5ZjkzZjVjZTNlNWViM2UzMDY0NzQ4ODlhYjhmM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtOTUs
NyArOTUsNyBAQCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiwgY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogd2tDbAogCiB2b2lkIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9J
bXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOworICAg
IFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtl
VW5pcXVlPFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkp
OwogfQogCiB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTE1
Niw3ICsxNTYsNyBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVm
IGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogICAgIH07CiAKICAgICBXZWJL
aXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCA9ICpXZWJLaXQ6OnRvSW1wbChjb250ZXh0
UmVmKTsKLSAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
SGlzdG9yeUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xp
ZW50KG1ha2VVbmlxdWU8SGlzdG9yeUNsaWVudD4od2tDbGllbnQpKTsKIAogICAgIGJvb2wgYWRk
c1Zpc2l0ZWRMaW5rcyA9IHByb2Nlc3NQb29sLmhpc3RvcnlDbGllbnQoKS5hZGRzVmlzaXRlZExp
bmtzKCk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHREb3dubG9hZAogICAg
ICAgICB9CiAgICAgfTsKIAotICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3du
bG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOwor
ICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5p
cXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldENv
bm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENv
bm5lY3Rpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCAxMWI4MzRiNGVl
MmE5YTY4NzYyNmM3MzJiZjU4YTQ4ODIzZjYzMzRhLi44ODhiNzViYzdjZWM4OWQxNmUwN2Y2MTdl
N2JiMmNlMjk3OWZhNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdLVHlwZUlE
IFdLR2VvbG9jYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFu
YWdlclNldFByb3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdl
clJlZiwgY29uc3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKLSAg
ICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CisgICAgdG9JbXBsKGdl
b2xvY2F0aW9uTWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViR2VvbG9jYXRp
b25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2Vy
UHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2Nh
dGlvbk1hbmFnZXJSZWYsIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBwb3NpdGlvblJlZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCmluZGV4IGIyMjNkNmY4N2JmYTVlOTZlM2U1MGRhMmRkNzhmZjBkMmRkNDE2Y2Uu
Ljc2OTIzOTkwYWI1YjllYTIxMzg1ZjFkMzU2OWU4YjUwYWE3ZjY1ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBXS1R5cGVJRCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRUeXBl
SUQoKQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyQmFz
ZSogd2tQcm92aWRlcikKIHsKLSAgICB0b0ltcGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKHN0
ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAg
ICB0b0ltcGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1h
bmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNDdlYzcyNmIwY2U0NDA1N2YwMDJiNTQwYmVhNzY4ZTQz
YjEwYThkNC4uNjFhNjliMWYzYTZkYTc0OTZhZDQ3MjY5NzBiODVmMmM5MTE4MTNmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC05NDgsNyArOTQ4LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZUNvbnRleHRNZW51Q2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwo
cGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1l
bnVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250ZXh0TWVu
dUNsaWVudChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsK
QEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogCiB2b2lkIFdLUGFn
ZVNldFBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0b0lt
cGwocGFnZVJlZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFn
ZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNl
KiB3a0NsaWVudCkKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbAog
ICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEZpbmRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4od2tDbGllbnQpKTsKIH0K
IAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDM4LDcg
KzEwMzgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbAogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNl
dEZpbmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8RmluZE1hdGNoZXNDbGllbnQ+KHdrQ2xpZW50
KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50
KQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnUKIAogdm9pZCBX
S1BhZ2VTZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9y
bUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2ViRm9ybUNsaWVudD4od2tD
bGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTExOTks
NyArMTE5OSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKIAogICAgIFdlYlBhZ2VQcm94eSog
d2ViUGFnZVByb3h5ID0gdG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgYXV0byBsb2FkZXJDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRlckNsaWVudD4od2tDbGllbnQpOworICAgIGF1dG8gbG9h
ZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KTsKIAogICAgIC8v
IEl0IHdvdWxkIGJlIG5pY2UgdG8gZ2V0IHJpZCBvZiB0aGlzIGNvZGUgYW5kIHRyYW5zaXRpb24g
YWxsIGNsaWVudHMgdG8gdXNpbmcgZGlkTGF5b3V0IGluc3RlYWQgb2YKICAgICAvLyBkaWRGaXJz
dExheW91dEluRnJhbWUgYW5kIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUu
IEluIHRoZSBtZWFudGltZSwgdGhpcyBpcyByZXF1aXJlZApAQCAtMTI4MSw3ICsxMjgxLDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2xpZW50Pih3
a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50KG1ha2VVbmlx
dWU8UG9saWN5Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTIwNzUsNyArMjA3NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgIH0KICAg
ICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFVJQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQo
bWFrZVVuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdl
TmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlv
bkNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMjI5MywxNjQgKzIyOTMsMTY2IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZU5hdmlnYXRpb25DbGllCiAgICAgd2ViUGFnZVByb3h5LT5zZXROYXZpZ2F0aW9uQ2xpZW50KG1h
a2VVbmlxdWVSZWY8TmF2aWdhdGlvbkNsaWVudD4od2tDbGllbnQpKTsKIH0KIAotdm9pZCBXS1Bh
Z2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFz
ZSogY2xpZW50KQotewotICAgIGNsYXNzIFN0YXRlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6
Q2xpZW50PFdLUGFnZVN0YXRlQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNl
cnZlciB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBTdGF0ZUNsaWVudChjb25zdCBX
S1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgaW5p
dGlhbGl6ZShjbGllbnQpOwotICAgICAgICB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB3
aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQorY2xhc3MgU3RhdGVDbGllbnQgZmluYWwgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VMb2FkU3RhdGU6
Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBTdGF0ZUNsaWVudChjb25zdCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkK
KyAgICB7CisgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICB9Citwcml2YXRlOgorICAg
IHZvaWQgd2lsbENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZykK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VJ
c0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQg
ZGlkQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9
CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VU
aXRsZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
Q2hhbmdlVGl0bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQuZGlkQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VUaXRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9j
bGllbnQuZGlkQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAK
LSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5n
ZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxD
aGFuZ2VBY3RpdmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50Lndp
bGxDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAg
ICAgICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTCkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQWN0aXZl
VVJMKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0
aXZlVVJMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VB
Y3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9p
ZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
SGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAg
fQorICAgIHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25s
eVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAg
ICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRl
bnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hh
bmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVu
dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25s
eVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAg
ICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
RXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jl
c3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRD
aGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jl
c3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hh
bmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdl
Q2FuR29CYWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50
LndpbGxDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAg
fQorICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdv
QmFjaykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRD
aGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAg
IHZvaWQgZGlkQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3
YXJkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0Zvcndh
cmQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZUNhbkdvRm9yd2FyZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
LSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdl
TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZU5l
dHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQorICAgIHZvaWQgd2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVl
c3RzSW5Qcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2ls
bENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dy
ZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRD
aGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3Mo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdl
TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJv
Z3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3
aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUlu
Zm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENo
YW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8o
KSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5n
ZUNlcnRpZmljYXRlSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZv
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZp
Y2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9p
ZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNp
dmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENo
YW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAg
ICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lz
UmVzcG9uc2l2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENo
YW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3Zl
cnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VXZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVz
cG9uc2l2ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5n
ZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRTd2FwV2ViUHJvY2Vzc2VzKCkgb3Zl
cnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJv
Y2Vzc2VzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFN3YXBXZWJQcm9jZXNzZXMobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQot
ICAgIH07CisgICAgdm9pZCBkaWRTd2FwV2ViUHJvY2Vzc2VzKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KK307CisKK3ZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50
KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKK3sKICAgICBp
ZiAoY2xpZW50KQotICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZl
cihzdGQ6Om1ha2VfdW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKKyAgICAgICAgdG9JbXBs
KHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobWFrZVVuaXF1ZTxTdGF0ZUNsaWVudD4o
Y2xpZW50KSk7CiAgICAgZWxzZQogICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcihudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KaW5kZXggZjc2M2FmNjAwM2RhNDY2NzM2
MzFlOTFlYTgxYjgzYjVjOTdhMDg3ZC4uMzVlZjkyMjE1NGUxOTYzMDBlNGI2ZWU3NWQ0Yzk4MTc4
NWJjM2UyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
UGFnZVByaXZhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFj
L1dLUGFnZVByaXZhdGVNYWMubW0KQEAgLTUyLDcgKzUyLDcgQEAgLSAoaWQpaW5pdFdpdGhQYWdl
OihSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYpcGFnZQogICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgX3BhZ2UgPSBXVEZNb3ZlKHBhZ2UpOwotICAgIF9vYnNlcnZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYsIEAiVVJMIik7Cisg
ICAgX29ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4o
c2VsZiwgQCJVUkwiKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpf
b2JzZXJ2ZXIpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL3dwZS9XS1ZpZXcuY3BwCmluZGV4IDc4YmJhMzk2N2I2MTk3YzBlOGE3YzIzYWMzZGE4
Y2QxMzJlN2M0YmUuLjk2NDA2ZDBhYWZiYzM1NTU2MGI1ZDMxOTdhMDBjMjVmNTc1OWEzZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCkBAIC02OCw1
ICs2OCw1IEBAIHZvaWQgV0tWaWV3U2V0Vmlld0NsaWVudChXS1ZpZXdSZWYgdmlldywgY29uc3Qg
V0tWaWV3Q2xpZW50QmFzZSogY2xpZW50KQogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1w
bCh2aWV3KS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Vmlld0NsaWVudD4oY2xpZW50KSk7
CisgICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxWaWV3Q2xpZW50PihjbGll
bnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDI2NTU1NGYzZDdm
MmQ3YWQyOTZlOWYzZjlmYTExMzg4Yjc4ZmQ1NjQuLjQ5Njc3ODhhMTA1N2ZhODgyYTBhMDFjOGRi
ZjUwMDJlOTIyNmVjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjAy
LDcgKzYwMiw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhQYWdlUmVmOihXS1BhZ2VSZWYp
cGFnZVJlZgogCiAgICAgX3BhZ2UgPSBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKTsKIAotICAgIF9w
YWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUxvYWRT
dGF0ZU9ic2VydmVyPihzZWxmKTsKKyAgICBfcGFnZUxvYWRTdGF0ZU9ic2VydmVyID0gbWFrZVVu
aXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZik7CiAgICAgX3BhZ2UtPnBh
Z2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqX3BhZ2VMb2FkU3RhdGVPYnNlcnZlcik7CiAKICAg
ICBBU1NFUlQoIWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJNYXAoKS5jb250YWlucyhfcGFnZS5n
ZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
SFRUUENvb2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
SFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDEzNzJjYTQxMDZjNzZlMWQ2MjM1ZDYxNGFkNWMxZTZh
NTZlYTA1YTEuLjgxZDM3MDNiMGVlYTgyZTVlNmM2MmYzMjIyYWM0ZTY4MTlmNmIzYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCAtICh2b2lkKWFkZE9ic2VydmVyOihpZDxXS0hU
VFBDb29raWVTdG9yZU9ic2VydmVyPilvYnNlcnZlcgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXS0hUVFBDb29raWVTdG9yZU9ic2Vy
dmVyPihvYnNlcnZlcik7CiAgICAgX2Nvb2tpZVN0b3JlLT5yZWdpc3Rlck9ic2VydmVyKCpyZXN1
bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBiYWNlNWFjN2VjMDBiMTg5OGFkMmRm
NzJjYjFiMTk0NDY3ZGNlYzlkLi5lYmFjNTY4ZTNkZGI2ODcwZjg1YjAxNTA4ZWMyMGZhYWI3ZjIw
NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQpAQCAtMzczLDcgKzM3Myw3IEBAIC0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRl
PilfZG93bmxvYWREZWxlZ2F0ZQogLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9X
S0Rvd25sb2FkRGVsZWdhdGU+KWRvd25sb2FkRGVsZWdhdGUKIHsKICAgICBfZG93bmxvYWREZWxl
Z2F0ZSA9IGRvd25sb2FkRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVs
ZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8
V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8
X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC0zODQsNyArMzg0
LDcgQEAgLSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQog
LSAodm9pZClfc2V0QXV0b21hdGlvbkRlbGVnYXRlOihpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRl
PilhdXRvbWF0aW9uRGVsZWdhdGUKIHsKICAgICBfYXV0b21hdGlvbkRlbGVnYXRlID0gYXV0b21h
dGlvbkRlbGVnYXRlOwotICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0b21hdGlvbkRl
bGVnYXRlKSk7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlx
dWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsK
IH0KIAogLSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0K
aW5kZXggOGI2ZGYyNGY4OTUyZDg0ZjYwNzU0NGM2YTMxYTJkZDFiOGFhMzU1ZC4uYTAwYjIwM2Nj
OTA1OTMwMWJlY2M0NjFkNjFiNDY3MzJiODU2MTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5t
bQpAQCAtMTE4LDYgKzExOCw3IEBAIC0gKHZvaWQpcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cwog
fQogCiBjbGFzcyBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlIGZpbmFsIDogcHVibGljIFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZShX
S1VzZXJDb250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQgPFdLU2NyaXB0TWVzc2FnZUhh
bmRsZXI+IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQogICAgICAgICA6IG1fY29udHJvbGxlcihj
b250cm9sbGVyKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAKIC0gKHZvaWQpYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNz
YWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBX
ZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxT
Y3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwg
bmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAg
YXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1h
a2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2Fn
ZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOwogICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlz
ZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3Jp
cHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3Rz
LiIsIG5hbWVdOwogfQpAQCAtMjI5LDcgKzIzMCw3IEBAIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRX
CiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNTdHJpbmcgKiluYW1lIHVzZXJD
b250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0g
ICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2Ny
aXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJD
b250ZW50V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+
KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVzZXJDb250ZW50V29y
bGQtPl91c2VyQ29udGVudFdvcmxkKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAi
QXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVu
IG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAzOTFhMTk5MmUzNTMyZGJlNWYyMWRi
NjkxZGQ4MTA4YWFlMmE2NmMuLjA4ZjQyZWM4YjEzYmY3MGJkMmI2YjM3YmM3ZDgxNTY4MjNkNmM2
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtNzU3LDcgKzc1Nyw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIF9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZp
ZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJl
ZigpKTsKKyAgICBfaW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwg
c2VsZiwgcHJvY2Vzc1Bvb2wsIHBhZ2VDb25maWd1cmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgX3Bh
Z2UgPSAmX2ltcGwtPnBhZ2UoKTsKIAogICAgIF9pbXBsLT5zZXRBdXRvbWF0aWNhbGx5QWRqdXN0
c0NvbnRlbnRJbnNldHModHJ1ZSk7CkBAIC03NjksMTQgKzc2OSwxNCBAQCAtICh2b2lkKV9pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCiAKICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2Vu
dChjb25maWd1cmF0aW9uLl9hcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KTsKIAot
ICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlPihzZWxmKTsKKyAgICBfbmF2aWdhdGlvblN0YXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7CiAgICAgX3BhZ2UtPnNldE5hdmlnYXRpb25DbGllbnQo
X25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpKTsKIAotICAgIF91aURl
bGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOwotICAg
IF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50
PihzZWxmKSk7Ci0gICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOworICAgIF91
aURlbGVnYXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOworICAgIF9w
YWdlLT5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7
CisgICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOwogCi0gICAgX2ljb25Mb2FkaW5nRGVs
ZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2Vs
Zik7CisgICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SWNvbkxv
YWRpbmdEZWxlZ2F0ZT4oc2VsZik7CiAKICAgICBfdXNlUGxhdGZvcm1GaW5kVUkgPSBZRVM7CiAK
QEAgLTM0MjUsNyArMzQyNSw3IEBAIC0gKHZvaWQpc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0
aW9uR2VzdHVyZXM6KEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uCiAgICAgX2FsbG93
c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0
aW9uR2VzdHVyZXM7CiAKICAgICBpZiAoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVy
ZXMgJiYgIV9nZXN0dXJlQ29udHJvbGxlcikgewotICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2Up
OworICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyPigqX3BhZ2UpOwogICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmlu
c3RhbGxTd2lwZUhhbmRsZXIoc2VsZiwgW3NlbGYgc2Nyb2xsVmlld10pOwogICAgICAgICBpZiAo
V0tXZWJWaWV3ICphbHRlcm5hdGVXZWJWaWV3ID0gW19jb25maWd1cmF0aW9uIF9hbHRlcm5hdGVX
ZWJWaWV3Rm9yTmF2aWdhdGlvbkdlc3R1cmVzXSkKICAgICAgICAgICAgIF9nZXN0dXJlQ29udHJv
bGxlci0+c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShhbHRlcm5hdGVXZWJW
aWV3LT5fcGFnZS5nZXQoKSk7CkBAIC01Njc4LDcgKzU2NzgsNyBAQCAtICh2b2lkKV9zZXRJbnB1
dERlbGVnYXRlOihpZCA8X1dLSW5wdXREZWxlZ2F0ZT4paW5wdXREZWxlZ2F0ZQogICAgIH07CiAK
ICAgICBpZiAoaW5wdXREZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRGb3Jt
Q2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAg
X3BhZ2UtPnNldEZvcm1DbGllbnQobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KaW5kZXgg
N2FkMDczYjhjZDZkZDQyMDNlMWE3NjA1OGY3YzdkZjJhOWY4YWQ3Yi4uMmFkZWVhNzYwYzY5OGIx
OGFlNTkxZTU3MDU3MTMyOTVmMjRjNTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpAQCAtNzIsNyAr
NzIsNyBAQCAtIChpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4pZGVsZWdhdGUKIC0g
KHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxl
Z2F0ZQogewogICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIF9zZXNzaW9uLT5zZXRDbGll
bnQoZGVsZWdhdGUgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ+KGRlbGVnYXRlKSA6IG51bGxwdHIpOworICAgIF9zZXNzaW9uLT5zZXRDbGllbnQoZGVs
ZWdhdGUgPyBtYWtlVW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KGRlbGVn
YXRlKSA6IG51bGxwdHIpOwogfQogCiAtIChOU1N0cmluZyAqKXNlc3Npb25JZGVudGlmaWVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggYjM3YjA1
MDUzZjEyNGFjYjcwZmQ2YWRlNmRmNDIwZmU4MjVkNTRjZi4uMGRkNDA5YTQzZGU2NTMwMGM5ZjBj
Yzg1NDQ3YWMyZjcxM2VjOTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbQpAQCAtMzgsNiArMzgsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgZmluYWwgOiBwdWJsaWMg
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIF9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50KF9XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyICpjb250cm9sbGVyKQogICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQpAQCAtNzUsNyArNzYsNyBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdAogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eSA9
IFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSgpOwotICAgIG1fcmVtb3Rl
SW5zcGVjdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYklu
c3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKKyAgICBtX3JlbW90ZUluc3BlY3RvckNsaWVudCA9
IG1ha2VVbmlxdWU8V2ViS2l0OjpfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudD4oc2Vs
Zik7CiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+c2V0Q2xpZW50KG1fcmVtb3RlSW5zcGVj
dG9yQ2xpZW50LmdldCgpKTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggOGQyZjg4YWUwMDMy
YTBkOTM0NWU2ODAwYTk3ODU4YjQyOGE0ZDZkOS4uMDY4NzBkMjFkZWU3Y2E0Zjg5ZGI5ZTM0MmY2
ZjBmNWZkM2Y1NGE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwCkBAIC0xNjkxLDcgKzE2OTEsNyBAQCBpbmxpbmUgdm9pZCByZWFk
eVNRTGl0ZVN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVt
ZW50LCBTUQogICAgICAgICBzdGF0ZW1lbnQgPSBudWxscHRyOwogICAgIH0KICAgICBpZiAoIXN0
YXRlbWVudCkgewotICAgICAgICBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0
YXRlbWVudD4oZGIsIHN0cik7CisgICAgICAgIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRl
U3RhdGVtZW50PihkYiwgc3RyKTsKICAgICAgICAgaWYgKHN0YXRlbWVudC0+cHJlcGFyZSgpICE9
IFNRTElURV9PSykKICAgICAgICAgICAgIExPR19FUlJPUigiUHJlcGFyaW5nIHN0YXRlbWVudCAl
cyBmYWlsZWQiLCBzdHIuYXNjaWkoKS5kYXRhKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmNwcAppbmRleCBkMmFmNjRiYWQ4NmE4YTMzZjEzMzU0NzI1ODFiNzAyZTQxYTY3ZWMyLi4yMTg2
NjA0NTE5Mjc2OWJlNmRmZjg1OWE2MzIwNDNkNTEzNTY5YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFM
XSA9IHsgMCwgfTsKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiwg
d2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbiwgR19UWVBFX09CSkVDVCkKIAogY2xhc3MgQXV0b21h
dGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Np
b24pCiAgICAgICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCkBAIC0yMjMsNyArMjI0LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1Y3RlZChHT2JqZWN0KiBvYmpl
Y3QpCiAKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uID0gYWRvcHRSZWYobmV3IFdlYkF1dG9t
YXRpb25TZXNzaW9uKCkpOwogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldFNlc3Npb25J
ZGVudGlmaWVyKFN0cmluZzo6ZnJvbVVURjgoc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpKSk7Ci0g
ICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QXV0
b21hdGlvblNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKKyAgICBzZXNzaW9uLT5wcml2LT5zZXNz
aW9uLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lv
bikpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkRpc3Bvc2UoR09i
amVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDk3ZTkyNTYwMTc3Mzdi
NzY2NWFjYzhlYjJmMzU4ZWIyZWM1OTAwYjkuLjI4NThkZjZmMzRkNGZhNjIxMjA5YmYxZWIxZTEw
ODg1YWQwNWU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTU2LDYgKzU2LDYgQEAg
Y2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWw6IHB1YmxpYyBBUEk6OkNvbnRleHRNZW51Q2xp
ZW50IHsKIAogdm9pZCBhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldENvbnRl
eHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZpZXcp
KTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRDb250ZXh0TWVudUNsaWVu
dChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCmluZGV4IGQzMmI1OWM1NDc2NjdhN2Vj
ODc3MTgxMDUyYmQxYTc0OWMwZGJjMWMuLmEzNzNiMjk0NTcxNjc5MWEyZDRjMzA3YmQ1ZTBhOTI5
YzgxNDBhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcApA
QCAtNTYsNSArNTYsNSBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbgogCiB2b2lkIGF0dGFjaEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJD
b250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0
KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRXZWJD
b250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pih3ZWJD
b250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZWFkNGYyMzQ5OTE2NzA0ZDE3ZDFm
MjMwNjQwODlmN2ExYTA0NTk0Zi4uZTc3MWRkNzE4N2U1ODU5YWRiZDVhMDE2ZjhjYTkzNWQyOGU4
NGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdERvd25sb2FkQ2xpZW50LmNwcApAQCAtMTE4LDUgKzExOCw1IEBAIGNsYXNzIERvd25s
b2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgewogCiB2b2lkIGF0
dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQp
CiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldERv
d25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdlYkNvbnRleHQp
KTsKKyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93
bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNv
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZh
dmljb25EYXRhYmFzZS5jcHAKaW5kZXggMjE4MDgzZTc2OTdhNTEzOThmMmVlMDk0Y2RiMDY4YzIw
ODM3YjFmYS4uOWI1ODE4YTk4MzZmMzc2MmQ4OTYyMmUzNjJjM2ZjOGIyZDNlYmZkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZp
Y29uRGF0YWJhc2UuY3BwCkBAIC0yNjcsOCArMjY3LDggQEAgdm9pZCB3ZWJraXRGYXZpY29uRGF0
YWJhc2VPcGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYg
cGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZSog
cHJpdiA9IGRhdGFiYXNlLT5wcml2OwotICAgIHByaXYtPmljb25EYXRhYmFzZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SWNvbkRhdGFiYXNlPigpOwotICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SWNvbkRhdGFiYXNlQ2xpZW50PihkYXRhYmFzZSkp
OworICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG1ha2VVbmlxdWU8SWNvbkRhdGFiYXNlPigpOwor
ICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SWNvbkRh
dGFiYXNlQ2xpZW50PihkYXRhYmFzZSkpOwogICAgIEljb25EYXRhYmFzZTo6ZGVsYXlEYXRhYmFz
ZUNsZWFudXAoKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldEVuYWJsZWQodHJ1ZSk7CiAg
ICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYlByZWZl
cmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIu
Y3BwCmluZGV4IDRmOTgwZDRlZTI1OGFjYWM0NTU4MzIzY2E3YmQ3MWNjZGYzYmVlYjEuLjc2NzVj
OWNiM2E1ZWRhZjg4NjRkMTdhMTc5MjE3Y2I5NDIzMzY1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAK
QEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRGaW5kQ29udHJvbGxlckNvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZmluZF9j
b250cm9sbGVyX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKICAgICBXZWJL
aXRGaW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIgPSBXRUJLSVRfRklORF9DT05UUk9MTEVS
KG9iamVjdCk7Ci0gICAgZ2V0UGFnZShmaW5kQ29udHJvbGxlcikuc2V0RmluZENsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRDb250cm9sbGVyKSk7CisgICAgZ2V0UGFnZShm
aW5kQ29udHJvbGxlcikuc2V0RmluZENsaWVudChtYWtlVW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRD
b250cm9sbGVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVyR2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBhcmFtU3BlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKaW5kZXggMTM0ZDFjNmNlYmU1NjdmYzU0ZDk3MGY4
NzZiZTAyOTMxZDMyODIyZC4uYmM2N2EzNTdkYzA3NDQ1YTM1MjhmODBmMGFiZDc5ZDA3YzNiYzA0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9y
bUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Rm9ybUNsaWVudC5jcHAKQEAgLTQ4LDUgKzQ4LDUgQEAgY2xhc3MgRm9ybUNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkZvcm1DbGllbnQgewogCiB2b2lkIGF0dGFjaEZvcm1DbGllbnRUb1ZpZXco
V2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJW
aWV3KS5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4od2ViVmlldykp
OworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1DbGllbnQobWFrZVVu
aXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApp
bmRleCAyZTE1OTQ1ZGZhZDI5YzMxNTUwZDFhZDNjNGRkMTQ5OGJlN2I3MjA0Li44Y2JhNDIyZWQ1
ZTM4YmY4NGM3NjA1OTRkNmNmMGY2NTg4Y2JlYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5j
cHAKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvbk1hbmFn
ZXJTdGFydChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIpCiAgICAgfQogCiAgICAg
aWYgKCFtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIpIHsKLSAgICAgICAgbWFuYWdlci0+
cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZW9jbHVlR2VvbG9jYXRp
b25Qcm92aWRlcj4oKTsKKyAgICAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyID0g
bWFrZVVuaXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICAgICAgbWFuYWdl
ci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3kobWFuYWdlci0+
cHJpdi0+aGlnaEFjY3VyYWN5RW5hYmxlZCk7CiAgICAgfQogICAgIG1hbmFnZXItPnByaXYtPmdl
b2NsdWVQcm92aWRlci0+c3RhcnQoW21hbmFnZXJdKEdlb2xvY2F0aW9uUG9zaXRpb24mJiBjb3Jl
UG9zaXRpb24sIE9wdGlvbmFsPENTdHJpbmc+IGVycm9yKSB7CkBAIC0zMTIsNyArMzEyLDcgQEAg
V2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiB3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUo
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHIKIHsKICAgICBhdXRvKiBtYW5hZ2VyID0gV0VCS0lUX0dF
T0xPQ0FUSU9OX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01B
TkFHRVIsIG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5wcml2LT5tYW5hZ2VyID0gcHJveHk7Ci0g
ICAgcHJveHktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRl
cj4obWFuYWdlcikpOworICAgIHByb3h5LT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPEdlb2xvY2F0
aW9uUHJvdmlkZXI+KG1hbmFnZXIpKTsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxv
YWRpbmdDbGllbnQuY3BwCmluZGV4IGI4ZjAxZmIyNGZmMjc2NTRjMGFkNjA5YWRkMzI0MTk1ZWU0
MWNhNTkuLjY1ZmQ3YzY5OTIzODgwMTE1NThjNjdkZWIyNWZkYWEyN2Y2NmM1MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29u
TG9hZGluZ0NsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IEljb25Mb2FkaW5nQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCkBAIC02MSw1ICs2Miw1IEBAIGNsYXNzIEljb25Mb2FkaW5nQ2xp
ZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgewogCiB2b2lkIGF0dGFjaEljb25M
b2FkaW5nQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0
V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxJY29uTG9hZGluZ0NsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQ
YWdlKHdlYlZpZXcpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdD
bGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAppbmRleCBh
OTNmZjI1YjM5YTI5MjU2MDBkMmM0YWVjY2VjYmM3NTcwZDVkZjNkLi45MjYyYTg0ZGVjZTI1YmYw
YmRmNWM1OWI0OGQwMDI1ODUyZjM2YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xNzksNSArMTc5LDUgQEAgY2xhc3MgV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQgZmlu
YWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoSW5q
ZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkK
IHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3
ZWJDb250ZXh0KS5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPFdlYktpdEluamVj
dGVkQnVuZGxlQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5jcHAKaW5kZXggMjM2ZTgxYzEzOTBiM2VjM2MxNTQ5MTg2ODZiYWZhNWU1Mzg2NDY4Ny4uNTUx
NjM2NDQ3NzU1NzQ3YjcwYWM1ZTc2YjFkMTA0ZDYxYzBiNWNhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
cjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclBybwog
ICAgICwgbV9ub3RpZmljYXRpb25NYW5hZ2VyKG5vdGlmaWNhdGlvbk1hbmFnZXIpCiB7CiAgICAg
QVNTRVJUKG1fbm90aWZpY2F0aW9uTWFuYWdlcik7Ci0gICAgbV9ub3RpZmljYXRpb25NYW5hZ2Vy
LT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvblByb3ZpZGVyPigqdGhp
cykpOworICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxO
b3RpZmljYXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKIH0KIAogV2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXI6On5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggNWJjZWY2OGY2
NWQyMzE4OTgwY2Y5MWRhZTU5M2Q3NjY3MTQ4YTk4OS4uODk2ZTEzZGFkOTdiZTdmZjc3NmMwM2Jm
NmU3ZDAyNzgyZTAzMjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMjI1LDYgKzIyNSw2IEBAIGNsYXNzIFVJQ2xp
ZW50IDogcHVibGljIEFQSTo6VUlDbGllbnQgewogCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2Vi
Vmlldykuc2V0VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxVSUNsaWVudD4od2ViVmlldykpOwor
ICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8
VUlDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKaW5kZXgg
NDhiMzhlYWMwOGQ5MTJjOTYzOWVmNTUwOTRiMTBmMWZmYWQxZDlmOS4uMjM2ZjJiZmI1MTdlOTc0
OTg0YTViOTA0NDI4YjQxMmQ0NzJhZjAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBA
IC0yMzgsNyArMjM4LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3Jl
Z2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIoV2ViS2l0VXNlckMKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChuYW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI+IGhhbmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0
cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CisgICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxT
Y3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChu
YW1lKSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICByZXR1cm4g
bWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiB9CiAKQEAgLTI4OCw3ICsyODgsNyBAQCBnYm9vbGVh
biB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFu
ZGxlcl9pbl93b3JsZChXZQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHdvcmxkTmFtZSwgRkFM
U0UpOwogCiAgICAgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0KLSAgICAg
ICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUp
LCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOworICAgICAgICBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4o
bWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdFVzZXJDb250ZW50
V29ybGQod29ybGROYW1lKSk7CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50
Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwCmluZGV4IGJmYzU2N2NlZDViYjE3MDFkM2FjOTI3NjdhZWJhYTQyZGIyYzM5
N2EuLjU0NGQ5ZTI1NTg3NWE1ZjA3ZTkzNTlkNjU3YjQ1MmFhOGM3ZGM0M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
CkBAIC0zNjcsOSArMzY3LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQp
OwogCiAgICAgcHJpdi0+Z2VvbG9jYXRpb25NYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xv
Y2F0aW9uTWFuYWdlckNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eT4oKSkpOwotICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJv
Y2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJD
b250ZXh0KTsKKyAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8V2Vi
S2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7CiAjaWYgUExBVEZPUk0o
R1RLKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBwcml2LT5yZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3Rv
Y29sSGFuZGxlcj4od2ViQ29udGV4dCk7CisgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyID0gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+KHdl
YkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKFdlYktpdFdlYkNvbnRleHQqIGNvbnRl
eHQsIGdib29sZQogICAgICAgICAgICAgZ193YXJuaW5nKCJOb3QgZW5hYmxpbmcgYXV0b21hdGlv
biBvbiBXZWJLaXRXZWJDb250ZXh0IGJlY2F1c2UgdGhlcmUncyBhbm90aGVyIGNvbnRleHQgd2l0
aCBhdXRvbWF0aW9uIGVuYWJsZWQsIG9ubHkgb25lIGlzIGFsbG93ZWQiKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsK
KyAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8V2Vi
S2l0QXV0b21hdGlvbkNsaWVudD4oY29udGV4dCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbnRl
eHQtPnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGIy
MzlhYzRlMTllNjNkMzNhODY5ZGVmYjY2ZmMzYzBiNDUwMGI3ODUuLmQzMzY0ZGE2YzA4YWE5YWM3
YTQ2NThiZTk4YWZjNGU3MjY3ZmE1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC03MjUsNyArNzI1LDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIHdl
YmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhwcml2LT5jb250ZXh0LmdldCgpLCB3
ZWJWaWV3LCBwcml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3
KTsKIAotICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxvYWRT
dGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKKyAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3
KS5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKnByaXYtPmxvYWRPYnNlcnZlcik7CiAKICAg
ICAvLyBUaGUgcmVsYXRlZCB2aWV3IGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoZSBjb25zdHJ1Y3Rp
b24uCkBAIC03NDEsNyArNzQxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVj
dGVkKEdPYmplY3QqIG9iamVjdCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1BFKQotICAgIHBy
aXYtPnZpZXctPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYlZpZXdDbGllbnQ+KHdlYlZp
ZXcpKTsKKyAgICBwcml2LT52aWV3LT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJWaWV3Q2xpZW50
Pih3ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgYWZ0ZXIgYXR0
YWNoVUlDbGllbnRUb1ZpZXcoKSBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQoKSBj
YWxscyBzZXRDYW5SdW5Nb2RhbCgpIHdpdGggdHJ1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggZjA5ZDZjN2U5MjA2ODNh
NzU2NjUyNzY5NjdlNzQ3Y2M2Y2VlYjQ4MS4uMDZiM2I4MzYwNjVkOWY2NmEwNzk4YTIwOTU1MTNj
YTg2OGIzMWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VD
bGllbnRJbXBsKEd0a1dpZGdldCogdmlld1dpZGdldCkKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZp
cnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19C
QVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndlYmtpdFdlYlZpZXdCYXNlR2V0UGFn
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSwgcHJvY2Vzcyk7CiB9CiAKIHZv
aWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVn
aW9uJiByZWdpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKaW5kZXggMzFlMDk3M2ZlMTAwM2M2ZWE2NTIzMDYxYTY3
Yzk0OWQ1M2ViZDZiNy4uMmQxYzJjYjM2OGE5OTMzMTY5NzQyNDZhMGVkNTk5YzI4ZGNhZTZjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNo
b29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1v
amlDaG9vc2VyLmNwcApAQCAtNTE5LDcgKzUxOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEVtb2pp
Q2hvb3NlclNldHVwRW1vamlTZWN0aW9ucyhXZWJLaXRFbW9qaUNob29zZXIqIGNob29zZXIsIEd0
CiAgICAgICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9IG51bGxwdHI7
CiAgICAgfTsKIAotICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RGTW92ZShwb3B1bGF0ZVNlY3Rpb25zKSk7
CisgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbWFrZVVuaXF1ZTxD
YWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsKICAgICBjaG9vc2VyLT5w
cml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnNldFByaW9yaXR5KEdfUFJJT1JJVFlfREVGQVVM
VF9JRExFKTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnNldE5h
bWUoIltXZWJLaXRFbW9qaUNob29zZXJdIHBvcHVsYXRlIHNlY3Rpb25zIHRpbWVyIik7CiAgICAg
Y2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zdGFydFJlcGVhdGluZyh7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IDBm
Njc0ODY0NTJjZDFmYTg3YTgyODYyZTdlNjA1NzM0ZGZjMzU5NjguLmVhMGJjMmRlYTFmNDVhODI0
MjRhMzJiYzM1ODMxY2FkYTQzYWJjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAKQEAgLTEwNSwxMyArMTA1LDEzIEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3Qq
IHJlcXVlCiAgICAgYXV0byogdXNlckNvbnRlbnRNYW5hZ2VyID0gd2Via2l0X3dlYl92aWV3X2dl
dF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KTsKICAgICBhdXRvIHVzZXJDb250ZW50TWFu
YWdlclJlc3VsdCA9IG1fdXNlckNvbnRlbnRNYW5hZ2Vycy5hZGQodXNlckNvbnRlbnRNYW5hZ2Vy
KTsKICAgICBpZiAodXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAg
ICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1h
a2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6
VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgICAgIGF1dG8gaGFuZGxlciA9
IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdl
Q2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1h
bFdvcmxkKCkpOwogICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5hZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfcmVmKEdfT0JK
RUNUKHVzZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KHVz
ZXJDb250ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0KIAogICAgIGF1dG8qIGNs
aWVudCA9IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgp
LCBbdGhpcywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCBy
ZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEo
KSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKIAogICAgIEdTdHJpbmcqIGh0bWwgPSBnX3N0cmluZ19uZXcoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5j
cHAKaW5kZXggMGYwMTcxMWU3OTYxZThiMDBjNWU1NzRkMjg4NTBkMDViMjQxZjZlYy4uZjEwYTBk
YTZkMDMzZThmZTEyNDg3ZjY4MjVmOGMwYzc4NmQxOGJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcApAQCAtMzYw
LDcgKzM2MCw3IEBAIFdlYktpdFdlYkluc3BlY3Rvciogd2Via2l0V2ViSW5zcGVjdG9yQ3JlYXRl
KFdlYkluc3BlY3RvclByb3h5KiB3ZWJJbnNwZWN0b3IpCiB7CiAgICAgV2ViS2l0V2ViSW5zcGVj
dG9yKiBpbnNwZWN0b3IgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUihnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfV0VCX0lOU1BFQ1RPUiwgTlVMTCkpOwogICAgIGluc3BlY3Rvci0+cHJpdi0+d2ViSW5z
cGVjdG9yID0gd2ViSW5zcGVjdG9yOwotICAgIHdlYkluc3BlY3Rvci0+c2V0Q2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50PihpbnNwZWN0b3IpKTsKKyAgICB3ZWJJ
bnNwZWN0b3ItPnNldENsaWVudChtYWtlVW5pcXVlPFdlYktpdEluc3BlY3RvckNsaWVudD4oaW5z
cGVjdG9yKSk7CiAgICAgcmV0dXJuIGluc3BlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCAxYjlk
ZDhkMWY0NjAyMTRmNWE3NzI2NzJjMmZiNjUzNzBiNTIwYzVlLi44OGIzY2Y0M2JmZTY4ZWU5N2M3
MzFiNzY0ZDQ0OTkwYTdiZmM1YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTY2LDcgKzU2Niw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQog
ICAgIGd0a19kcmFnX2Rlc3Rfc2V0X3RhcmdldF9saXN0KHZpZXdXaWRnZXQsIFBhc3RlYm9hcmRI
ZWxwZXI6OnNpbmdsZXRvbigpLnRhcmdldExpc3QoKSk7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShvYmplY3QpLT5wcml2OwotICAg
IHByaXYtPnBhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3
V2lkZ2V0KTsKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1w
bD4odmlld1dpZGdldCk7CiAgICAgcHJpdi0+ZGlhbG9nID0gbnVsbHB0cjsKIH0KIApAQCAtMTIy
MCw3ICsxMjIwLDcgQEAgR2VzdHVyZUNvbnRyb2xsZXImIHdlYmtpdFdlYlZpZXdCYXNlR2VzdHVy
ZUNvbnRyb2xsZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcKIHsKICAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAoIXByaXYt
Pmdlc3R1cmVDb250cm9sbGVyKQotICAgICAgICBwcml2LT5nZXN0dXJlQ29udHJvbGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8R2VzdHVyZUNvbnRyb2xsZXI+KEdUS19XSURHRVQod2ViVmlld0Jhc2Up
LCBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoR2VzdHVyZUNvbnRyb2xsZXI+KHdlYlZpZXdCYXNlKSk7
CisgICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxHZXN0dXJlQ29u
dHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSksIG1ha2VVbmlxdWU8VG91Y2hHZXN0dXJl
Q29udHJvbGxlcj4od2ViVmlld0Jhc2UpKTsKICAgICByZXR1cm4gKnByaXYtPmdlc3R1cmVDb250
cm9sbGVyOwogfQogCkBAIC0xNTAxLDcgKzE1MDEsNyBAQCBEcmFnQW5kRHJvcEhhbmRsZXImIHdl
YmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5kbGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5w
cml2OwogICAgIGlmICghcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyKQotICAgICAgICBwcml2LT5k
cmFnQW5kRHJvcEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYWdBbmREcm9wSGFuZGxlcj4o
KnByaXYtPnBhZ2VQcm94eSk7CisgICAgICAgIHByaXYtPmRyYWdBbmREcm9wSGFuZGxlciA9IG1h
a2VVbmlxdWU8RHJhZ0FuZERyb3BIYW5kbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKICAgICByZXR1
cm4gKnByaXYtPmRyYWdBbmREcm9wSGFuZGxlcjsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19T
VVBQT1JUKQpAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJl
bGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UKICAg
ICBpZiAocHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyKQogICAgICAgICBwcml2LT52aWV3R2Vz
dHVyZUNvbnRyb2xsZXItPmNvbm5lY3RUb1Byb2Nlc3MoKTsKICAgICBlbHNlIHsKLSAgICAgICAg
cHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CisgICAgICAgIHByaXYtPnZp
ZXdHZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRy
b2xsZXItPnNldFN3aXBlR2VzdHVyZUVuYWJsZWQocHJpdi0+aXNCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlRW5hYmxlZCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQppbmRleCAyY2FiMmUwNTM4NmQ0MmIzNzFmNDQwNmFiNzFhN2Y2NTkzMGY3
ZDc3Li4xNDYwM2Q1YWZlYmFmNmRlZTAxMTk3OTU3NzAzODgzNDlkNGU3YjM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtODk1LDYgKzg5NSw3IEBAIC0g
KHZvaWQpbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnQKIHsKICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVi
bGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KFdL
VmlldyAqd2tWaWV3KQogICAgICAgICAgICAgOiBtX3drVmlldyh3a1ZpZXcpCkBAIC05MzIsNyAr
OTMzLDcgQEAgLSAodm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9T
ZWxlY3RvcjpJY29uTG9hZGluZ0NsaWVudDo6ZGVsZWdhdGVTZWxlY3RvcigpXSkKLSAgICAgICAg
X2RhdGEtPl9pbXBsLT5wYWdlKCkuc2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxJY29uTG9hZGluZ0NsaWVudD4oc2VsZikpOworICAgICAgICBfZGF0YS0+X2ltcGwtPnBhZ2Uo
KS5zZXRJY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxm
KSk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJv
Y2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRp
b246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24KQEAgLTk0NCw3
ICs5NDUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBy
b2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJgogICAgIFdlYktpdDo6SW5pdGlhbGl6
ZVdlYktpdDIoKTsKIAogICAgIF9kYXRhID0gW1tXS1ZpZXdEYXRhIGFsbG9jXSBpbml0XTsKLSAg
ICBfZGF0YS0+X2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNl
bGYsIG51bGxwdHIsIHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICBf
ZGF0YS0+X2ltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIG51bGxw
dHIsIHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIAogICAgIFtzZWxmIG1h
eWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA4NTEyOWE1NDg3YzlmZmJl
ZDU2NjQ2Y2MxMGRkMTg4M2M5ODc1NmQzLi5lMjA4YTVjNTVkNzU4ODU3M2RmZjQzNjAzMzc3ZWY4
ZDE2MzU4NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Bh
Z2VDbGllbnRJbXBsLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdLV1BFOjpWaWV3JiB2aWV3KQogICAgIDog
bV92aWV3KHZpZXcpCi0gICAgLCBtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX3Njcm9sbEdlc3R1cmVD
b250cm9sbGVyKG1ha2VVbmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI+KCkpCiB7CiB9CiAK
QEAgLTYzLDcgKzYzLDcgQEAgSVBDOjpBdHRhY2htZW50IFBhZ2VDbGllbnRJbXBsOjpob3N0Rmls
ZURlc2NyaXB0b3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzPihtX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4obV92aWV3LnBhZ2UoKSwg
cHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6UmVnaW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dQRVZpZXcuY3BwCmluZGV4IGJlNTBmMTI3NGU4YzFmYTQ5MTA5YWEyODU1YjhiYjQxNTcxNzA0
NGYuLjEyZTMyZmFkNDAwMjhjNzdlNTcwMzA5Mjg0OTg0NDBkMDMwY2UwNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAtNDIsOCArNDIsOCBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogbmFtZXNwYWNlIFdLV1BFIHsKIAogVmlldzo6Vmlldyhz
dHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJh
dGlvbiYgYmFzZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6Vmlld0NsaWVudD4oKSkKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisgICAgOiBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6
Vmlld0NsaWVudD4oKSkKKyAgICAsIG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJ
bXBsPigqdGhpcykpCiAgICAgLCBtX3NpemUgeyA4MDAsIDYwMCB9CiAgICAgLCBtX3ZpZXdTdGF0
ZUZsYWdzIHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUsIFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93IH0KICAgICAsIG1fYmFja2Vu
ZChiYWNrZW5kKQpAQCAtMTg0LDcgKzE4NCw3IEBAIFZpZXc6On5WaWV3KCkKIHZvaWQgVmlldzo6
c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlZpZXdDbGllbnQ+JiYgY2xpZW50KQogewog
ICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpWaWV3Q2xpZW50PigpOworICAgICAgICBtX2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpWaWV3
Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5j
cHAKaW5kZXggZTFkYzg1N2ZmOTk1ZWQwY2U2YTg1MzY1OWNjNWIxMzU2MWNiMzY2Yy4uYjRmMjdi
NmQzNGUyNDJiYTU1MzVhYjViMmU0ZWNlNTMxNWQwOWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRMb2FkRXZlbnQgZXZlbnQsCiAKICAgICBpZiAoc3RhdHVzU2V0KSB7CiAgICAgICAg
IFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUodmlldy0+dXJs
KCksIGxvYWRTdGF0dXMsICIiKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xv
YWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3TG9hZFJl
cXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVR
dFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xvYWRS
ZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgICAgICBRX0VNSVQgdmlldy0+bG9hZGlu
Z0NoYW5nZWQobG9hZFJlcXVlc3QuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTE2Niw3ICsxNjYsNyBA
QCB2b2lkIFdQRVF0Vmlldzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcq
LCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0CiAgICAgICAgIGxvYWRTdGF0dXMgPSBXUEVRdFZpZXc6
OkxvYWRTdGF0dXM6OkxvYWRGYWlsZWRTdGF0dXM7CiAKICAgICBXUEVRdFZpZXdMb2FkUmVxdWVz
dFByaXZhdGUgbG9hZFJlcXVlc3RQcml2YXRlKFFVcmwoUVN0cmluZyhmYWlsaW5nVVJJKSksIGxv
YWRTdGF0dXMsIGVycm9yLT5tZXNzYWdlKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3
TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdMb2Fk
UmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRW
aWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxXUEVRdFZpZXdMb2FkUmVx
dWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKICAgICBRX0VNSVQgdmlldy0+bG9hZGluZ0NoYW5n
ZWQobG9hZFJlcXVlc3QuZ2V0KCkpOwogfQogCkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIHZv
aWQganNBc3luY1JlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgZ3BvaW50ZXIKICovCiB2b2lkIFdQRVF0Vmlldzo6cnVuSmF2YVNjcmlwdChjb25zdCBR
U3RyaW5nJiBzY3JpcHQsIGNvbnN0IFFKU1ZhbHVlJiBjYWxsYmFjaykKIHsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4oY2FsbGJhY2ssIFFQb2ludGVyPFdQRVF0Vmlldz4odGhp
cykpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0g
bWFrZVVuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BF
UXRWaWV3Pih0aGlzKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KG1fd2Vi
Vmlldy5nZXQoKSwgc2NyaXB0LnRvVXRmOCgpLmNvbnN0RGF0YSgpLCBudWxscHRyLCBqc0FzeW5j
UmVhZHlDYWxsYmFjaywgZGF0YS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcAppbmRleCBh
ODUyNmNlZDAyMGY2MzQ0ZTcyZmJjYzNhYTQ0OWMyZGQzYWJkMWY5Li4xM2ZkMzdhZWZmMmI2NTM1
ZDU0ZjMxNGM0MTZlMWNiODY4ZTNlODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0JhY2tlbmQ+IFdQRVF0Vmlld0JhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBRU2l6ZUYmIHNpemUsIFEKICAgICBpZiAoIWVnbENvbnRleHQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3
QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxheSwgZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFUXRWaWV3QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxheSwg
ZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7CiB9CiAKIFdQRVF0Vmlld0JhY2tlbmQ6OldQRVF0
Vmlld0JhY2tlbmQoY29uc3QgUVNpemVGJiBzaXplLCBFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENv
bnRleHQgZWdsQ29udGV4dCwgUVBvaW50ZXI8UU9wZW5HTENvbnRleHQ+IGNvbnRleHQsIFFQb2lu
dGVyPFdQRVF0Vmlldz4gdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggY2NlNWM0ODE3
YTgwNDkxN2NkYzE5OWMxYjAxNjBlMjU2ZTliZTI5Ny4uYTU5MTUwZGI3YTQwZGM3YmMxNWRiNTFi
ZThlZjRlMTEzNTZkYzUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTczLDExICs3Mywx
MSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0UGFnZUxvYWRUaW1lb3V0ID0gMzAwX3M7
CiBzdGF0aWMgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRT
dHJhdGVneSBkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDsKIAogV2ViQXV0b21hdGlvblNlc3Np
b246OldlYkF1dG9tYXRpb25TZXNzaW9uKCkKLSAgICA6IG1fY2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkKKyAgICA6IG1fY2xpZW50KG1ha2VV
bmlxdWU8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkKICAgICAsIG1fZnJvbnRlbmRS
b3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkK
ICAgICAsIG1fZG9tYWluRGlzcGF0Y2hlcihBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShtX2JhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fZG9tYWluTm90aWZpZXIo
c3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZG9tYWluTm90aWZpZXIobWFrZVVuaXF1ZTxBdXRvbWF0aW9uRnJv
bnRlbmREaXNwYXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKICAgICAsIG1fbG9hZFRpbWVyKFJ1
bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYkF1dG9tYXRpb25TZXNzaW9uOjpsb2FkVGltZXJGaXJl
ZCkKIHsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA2YjA5YmFkYjhkMGNl
YmFiZjJjNjlmNjAwOWIxYmQxZDIzYzA5ZTU4Li41M2IzNzcwN2U4N2M1MWRjNGFlOWQ2MzliMWQ0
ZjMyNjM4MDY4YjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlh
cnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaApAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5OjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8
CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQp
OwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6
OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFt
ZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVu
dHMoKSk7CiAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9w
dGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21h
dGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9t
YXRpb25TZXNzaW9uQ2xpZW50LmgKaW5kZXggMTBhOGU0MjQxM2IyOWFmZmI2Mzc3ZDg0YTA5YmU1
MTFiZDI1MWQ1Yy4uZGU0MGZjOGYzMTc2OTc1YjE1MmM0ZWZhYTQwMTU3Yzk0ZjJmYTlmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoaWQgPF9XS0F1dG9tYXRpb25TZXNz
aW9uRGVsZWdhdGU+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCmluZGV4IGIwMTFkZDNhNzIzOTczMjA1Y2M2ZGY0Y2M2NmE2
NzkwNmMwMjliMGQuLjA3NDM3OTA0ZjFlNDIzMGIzMTU4MmE5ZGY0MmMyM2MxNGQ2MDVhZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVn
YXRlLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJY29u
TG9hZGluZ0RlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0RlbGVnYXRlKFdLV2ViVmlldyAqKTsKICAgICB+SWNv
bkxvYWRpbmdEZWxlZ2F0ZSgpOwpAQCAtNDgsNiArNDksNyBAQCBjbGFzcyBJY29uTG9hZGluZ0Rl
bGVnYXRlIHsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1Ymxp
YyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChJY29u
TG9hZGluZ0RlbGVnYXRlJik7CiAgICAgICAgIH5JY29uTG9hZGluZ0NsaWVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0K
aW5kZXggYTM0NGRmZjljZTBkNTM1Y2EzMGRiMmJlYjViY2JkN2MwZDc0Y2ZiNC4uMTYzZmI5NTJl
ZTBlYTliNzFhM2Q0OWQzZGQ5N2NlMDA0M2NjNjhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCkBAIC00NCw3ICs0NCw3
IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6On5JY29uTG9hZGluZ0RlbGVnYXRlKCkKIAogc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmNy
ZWF0ZUljb25Mb2FkaW5nQ2xpZW50KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJ
Y29uTG9hZGluZ0NsaWVudD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEljb25Mb2Fk
aW5nQ2xpZW50PigqdGhpcyk7CiB9CiAKIFJldGFpblB0cjxpZCA8X1dLSWNvbkxvYWRpbmdEZWxl
Z2F0ZT4gPiBJY29uTG9hZGluZ0RlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBhNTFhMjIzNjIzODQxNTFhYjExZDQ4
OTQzNjlmOGExODU4MDA2N2RhLi5mNTEzN2Y5Y2M3MzE2Mzg4ZTYxZGUxMDc3M2ZmMzQyODU2MjUw
NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAg
LTc4LDEzICs3OCwxMyBAQCBVSURlbGVnYXRlOjp+VUlEZWxlZ2F0ZSgpCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4gVUlE
ZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKIH0KICNlbmRpZgogCiBzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpVSUNsaWVudD4gVUlEZWxlZ2F0ZTo6Y3JlYXRlVUlDbGllbnQoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxXS1VJRGVsZWdhdGU+
ID4gVUlEZWxlZ2F0ZTo6ZGVsZWdhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRl
eCA0OGMyYjJiNGUwNjEwNjkyNzJhZWI4Yjk0YTIzNGVhYTkyNmFmNzZkLi45MWNmOTQ4MGM3NTE4
Y2Q5YmIxN2U5ZmNhNGU5MTZkMGIwNzNiMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTb3VyY2VQcm94
eSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciwgcHVibGljIFNoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFNvdXJjZVByb3h5KHVpbnQ2NF90IGlkLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24sIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKICAgICAg
ICAgOiBtX2lkKGlkKQpAQCAtMTY4LDcgKzE2OSw3IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFp
CiAgICAgICAgIHNvdXJjZS0+c2V0SXNSZW1vdGUodHJ1ZSk7CiAgICAgICAgIHNldHRpbmdzID0g
c291cmNlLT5zZXR0aW5ncygpOwogICAgICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhp
ZCkpOwotICAgICAgICBtX3Byb3hpZXMuYWRkKGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXJjZVBy
b3h5PihpZCwgKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc291cmNlKSkpOworICAg
ICAgICBtX3Byb3hpZXMuYWRkKGlkLCBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKm1fcHJv
Y2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc291cmNlKSkpOwogICAgIH0gZWxzZQogICAgICAg
ICBpbnZhbGlkQ29uc3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdl
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZWVkZWQsIGludmFsaWRDb25zdHJhaW50cywg
V1RGTW92ZShzZXR0aW5ncykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCmluZGV4IDljYTZmYTM1
MzQ5NjAxODAzZGY1ZDNkMWIyYWJhMzE2NTU3NDBjMzkuLjliZGRiOTkwOWRmN2U4ZmVmMWU1NDgw
NmNiZTZiYzVjNDBjZmM1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKQEAgLTM5LDYgKzM5
LDcgQEAgY2xhc3MgU2hhcmVkTWVtb3J5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFz
cyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShXZWJQcm9jZXNzUHJveHkmKTsKICAgICB+
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggMzA3MGQ1NzQ0M2Zk
ZjcxOTYwODYwMzBlM2U2MzE0MWUwNjc4NTgyNi4uZTVlMzJkMmZhMmEwODYwNDE3YzZjZjgwZDdi
Y2U1OWI5YTczOWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBpZiAoIVtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRTdXBwcmVzc01lbW9yeVBy
ZXNzdXJlSGFuZGxlciJdKQogICAgICAgICBpbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7
CiAKLSAgICBzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpOworICAgIHNldExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVlPExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudD4oKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAt
NTE0LDcgKzUxNCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0RGlzcGxheUxpbmsoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1bnNpZ25lZCBvYnNlCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgYXV0byBkaXNwbGF5TGluayA9IHN0ZDo6bWFrZV91
bmlxdWU8RGlzcGxheUxpbms+KGRpc3BsYXlJRCk7CisgICAgYXV0byBkaXNwbGF5TGluayA9IG1h
a2VVbmlxdWU8RGlzcGxheUxpbms+KGRpc3BsYXlJRCk7CiAgICAgZGlzcGxheUxpbmstPmFkZE9i
c2VydmVyKGNvbm5lY3Rpb24sIG9ic2VydmVySUQpOwogICAgIG1fZGlzcGxheUxpbmtzLmFwcGVu
ZChXVEZNb3ZlKGRpc3BsYXlMaW5rKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDVjMjFjYTc1YTE4Mjlj
NTBmMWQ4MmY1Nzc3OGI0ZTg2ZTY5ZDcwZWEuLmIxZWM4NDZiN2I0NjA1NDhjZTBmODZkN2E1ZDEx
N2E2NzY3OGM0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCkKICAgICBhdXRvIGJhY2tncm91bmRBY3Rpdml0eVRpbWVvdXRIYW5kbGVyID0g
W2FjdGl2aXR5VG9rZW4gPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVk
bHlVbnN1c3BlbmRlZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5kIGFjdGl2aXR5IHRpbWVkIG91dCIs
IHdlYWtUaGlzLmdldCgpKTsKICAgICB9OwotICAgIG1fdW5leHBlY3RlZEFjdGl2aXR5VGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXI+KFdURk1v
dmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1bmV4cGVjdGVkQWN0aXZpdHlE
dXJhdGlvbik7CisgICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1lciA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlU
aW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0aW9uKTsKICAgICBjb21wbGV0
aW9uKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KaW5kZXggZjE3NmYxYTY1YTk5MmM1MWFjMzQ0ZWQwMDg4NTdlMDEzZWY5OTRiMS4u
MzdmNTRkYTRhZDJkNmEyNTQ3YzFkZDM1OWI4OTVjOGE1NGEyNTk4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEzMzQsNyArMTMzNCw3IEBA
IHN0YXRpYyBOU1RyYWNraW5nQXJlYU9wdGlvbnMgdHJhY2tpbmdBcmVhT3B0aW9ucygpCiAKIFdl
YlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBsRGVsZWdhdGU+ICp2aWV3
LCBXS1dlYlZpZXcgKm91dGVyV2ViVmlldywgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogICAgIDogbV92aWV3
KHZpZXcpCi0gICAgLCBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1w
bD4odmlldywgb3V0ZXJXZWJWaWV3KSkKKyAgICAsIG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBh
Z2VDbGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQogICAgICwgbV9wYWdlKHByb2Nlc3NQ
b29sLmNyZWF0ZVdlYlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkp
CiAgICAgLCBtX25lZWRzVmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcyhtX3BhZ2UtPnByZWZl
cmVuY2VzKCkucGx1Z2luc0VuYWJsZWQoKSkKICAgICAsIG1faW50cmluc2ljQ29udGVudFNpemUo
Q0dTaXplTWFrZShOU1ZpZXdOb0ludHJpbnNpY01ldHJpYywgTlNWaWV3Tm9JbnRyaW5zaWNNZXRy
aWMpKQpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmll
dyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWIKICAgICB2
aWV3LmxheWVyQ29udGVudHNQbGFjZW1lbnQgPSBOU1ZpZXdMYXllckNvbnRlbnRzUGxhY2VtZW50
VG9wTGVmdDsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBtX3BhZ2UtPnNldEZ1
bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+
KHZpZXcpKTsKKyAgICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJL
aXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KHZpZXcpKTsKICNlbmRpZgogCiAgICAgV2ViUHJvY2Vzc1Bv
b2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMTczMCw5ICsxNzMwLDkgQEAgQ0dT
aXplIFdlYlZpZXdJbXBsOjpmaXhlZExheW91dFNpemUoKSBjb25zdAogc3RkOjp1bmlxdWVfcHRy
PFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4gV2ViVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVh
UHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewogICAgIGlmIChbW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OkAiV2ViS2l0MlVzZVJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhIl0gYm9vbFZhbHVlXSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9j
ZXNzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vzcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4o
bV9wYWdlLCBwcm9jZXNzKTsKIH0KIAogYm9vbCBXZWJWaWV3SW1wbDo6aXNVc2luZ1VJU2lkZUNv
bXBvc2l0aW5nKCkgY29uc3QKQEAgLTMzNzUsNyArMzM3NSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKIHZvaWQgV2ViVmlld0ltcGw6OnNldFRleHRJbmRpY2F0
b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvciYgdGV4dEluZGljYXRvciwgV2ViQ29yZTo6VGV4dElu
ZGljYXRvcldpbmRvd0xpZmV0aW1lIGxpZmV0aW1lKQogewogICAgIGlmICghbV90ZXh0SW5kaWNh
dG9yV2luZG93KQotICAgICAgICBtX3RleHRJbmRpY2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c+KG1fdmlldy5nZXRBdXRvcmVsZWFzZWQo
KSk7CisgICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxlYXNlZCgpKTsKIAogICAgIE5T
UmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyA9IFtbbV92aWV3IHdpbmRv
d10gY29udmVydFJlY3RUb1NjcmVlbjpbbV92aWV3IGNvbnZlcnRSZWN0OnRleHRJbmRpY2F0b3Iu
dGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIHRvVmlldzpuaWxdXTsKICAg
ICBtX3RleHRJbmRpY2F0b3JXaW5kb3ctPnNldFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvciwg
TlNSZWN0VG9DR1JlY3QodGV4dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMpLCBsaWZl
dGltZSk7CkBAIC00Mzc3LDcgKzQzNzcsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzYXZlQmFja0Zv
cndhcmRTbmFwc2hvdEZvckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIFZpZXdH
ZXN0dXJlQ29udHJvbGxlciYgV2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1cmVDb250cm9sbGVyKCkK
IHsKICAgICBpZiAoIW1fZ2VzdHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIG1fZ2VzdHVyZUNvbnRy
b2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4obV9wYWdlKTsK
KyAgICAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8Vmlld0dlc3R1cmVDb250
cm9sbGVyPihtX3BhZ2UpOwogICAgIHJldHVybiAqbV9nZXN0dXJlQ29udHJvbGxlcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzLmNwcAppbmRleCA4ZWFjZDkxYTFlNmFlNDg1NjVjOWU1OGNjZGExMGYzZWE0NDRjMjc2
Li42MjY0ZGRiN2Y3OTBjMmZjY2NkZjQxMGRmNmUyYzkzMzdiNjVkMjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNw
cApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8mIHVwCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghbV9iYWNraW5nU3RvcmUpCi0gICAgICAgIG1fYmFja2luZ1N0b3Jl
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmU+KHVwZGF0ZUluZm8udmlld1NpemUsIHVw
ZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IsIG1fd2ViUGFnZVByb3h5KTsKKyAgICAgICAgbV9i
YWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6
ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOwogCiAgICAg
bV9iYWNraW5nU3RvcmUtPmluY29ycG9yYXRlVXBkYXRlKHVwZGF0ZUluZm8pOwogCkBAIC00NDIs
NyArNDQyLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6ZGlz
cGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmMKICAgICB9CiAKICAgICBpZiAoIW1f
ZHJhd2luZ01vbml0b3IpCi0gICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4o
bV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2RyYXdpbmdNb25pdG9yID0gbWFrZVVuaXF1ZTxE
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJhd2luZ01vbml0b3I+KG1fd2Vi
UGFnZVByb3h5KTsKICAgICBtX2RyYXdpbmdNb25pdG9yLT5zdGFydChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IGEyZDAzODZhY2Y1ZDhhZDUzNWM3OTEyYTg4NmNi
ZDBmMDA1NDc4NjguLjZhYTI0N2JkODc3MDIxNTg4MjQ3MTZhNjY1ZWUxYjc4Njk2YTZhNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3JpZ2luPiBEZXZpY2VJZEhhc2hTYWx0U3RvcgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGhhc2hTYWx0Rm9yT3JpZ2luID0g
c3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShzZWN1cml0eU9yaWdp
bkRhdGEudmFsdWUoKSksIFdURk1vdmUocGFyZW50U2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkp
LCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKKyAgICBhdXRvIGhhc2hTYWx0Rm9yT3JpZ2lu
ID0gbWFrZVVuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShzZWN1cml0eU9yaWdpbkRh
dGEudmFsdWUoKSksIFdURk1vdmUocGFyZW50U2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBX
VEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAogICAgIGhhc2hTYWx0Rm9yT3JpZ2luLT5sYXN0
VGltZVVzZWQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFzdFRpbWVVc2VkKTsKIApAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2
aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwoU2VjdXJpdHlPcmlnCiAKICAgICAgICAgU3RyaW5n
IGRldmljZUlkSGFzaFNhbHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBu
ZXdIYXNoU2FsdEZvck9yaWdpbiA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNhbHRGb3JPcmlnaW4+
KFdURk1vdmUoZG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHBhcmVudE9yaWdpbiksIFdURk1vdmUo
ZGV2aWNlSWRIYXNoU2FsdCkpOworICAgICAgICBhdXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0g
bWFrZVVuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdU
Rk1vdmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CiAKICAgICAg
ICAgcmV0dXJuIG5ld0hhc2hTYWx0Rm9yT3JpZ2luOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5TWFwLmNwcAppbmRleCA2M2E0OWI1NjdkYjhkYTUzZjU3OTlhNTAzNDRmMzEyNTFmNWU5Njg0
Li5kYzVhZGYxYTNlNGI5NGFhMDE0YjQzMGVmYTY2ZGUwOWY5NWNhN2JhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3Bw
CkBAIC04OCwxMSArODgsMTEgQEAgRG93bmxvYWRQcm94eSYgRG93bmxvYWRQcm94eU1hcDo6Y3Jl
YXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wKIAogICAgIGlmICht
X2Rvd25sb2Fkcy5zaXplKCkgPT0gMSAmJiBtX3Nob3VsZFRha2VBc3NlcnRpb24pIHsKICAgICAg
ICAgQVNTRVJUKCFtX2Rvd25sb2FkVUlBc3NlcnRpb24pOwotICAgICAgICBtX2Rvd25sb2FkVUlB
c3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQ
cm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZFVJQXNzZXJ0aW9uID0gbWFrZVVuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgZG93bmxv
YWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAKICAgICAgICAg
QVNTRVJUKCFtX2Rvd25sb2FkTmV0d29ya2luZ0Fzc2VydGlvbik7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fcHJvY2Vzcyk7Ci0gICAgICAgIG1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3Vu
ZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uID0g
bWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29y
a2luZyk7CiAKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nl
c3MgdG9vayAnV2ViS2l0IGRvd25sb2FkcycgYXNzZXJ0aW9ucyBmb3IgVUlQcm9jZXNzIGFuZCBO
ZXR3b3JrUHJvY2VzcyIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaAppbmRleCAzZGVmNWQ3OWYwN2NiOTE0MGI4MjU2MmRiOWY2ZjJiYzZkMGY3MmY2
Li41NjA2YzUxMTY1MzRmNDNjZmM4MDZkNTExZDQxZWQ5OGNmYjI1MTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogY2xhc3MgRHJhd2luZ0Fy
ZWFQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJvdGVjdGVkIElQQzo6TWVz
c2FnZVNlbmRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRHJhd2luZ0FyZWFQcm94eSk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXgg
ZWNhYWMzMDFiNGJkZjQ2ZjJjODljZGRlNzFkMTkzMjU0NTE0ZjY0MC4uZjRiN2JlYTY1ODUwOTkx
ZTk0OTRhNjIyM2Q1NGI5ODJhZWNmZDEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
dm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5lY3RlZEdhbWVwYWRzKGNvbnN0
IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQKICAgICBmb3IgKGF1dG8qIGdhbWVwYWQgOiBpbml0aWFs
R2FtZXBhZHMpIHsKICAgICAgICAgaWYgKCFnYW1lcGFkKQogICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFVJR2FtZXBhZD4oKmdhbWVwYWQpOworICAgICAgICBtX2dhbWVwYWRzW2dhbWVwYWQtPmluZGV4
KCldID0gbWFrZVVuaXF1ZTxVSUdhbWVwYWQ+KCpnYW1lcGFkKTsKICAgICB9CiAKICAgICBmb3Ig
KGF1dG8mIHBvb2wgOiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMpCkBAIC0xMDYsNyArMTA2
LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBs
YXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCkKICAgICAgICAgbV9nYW1lcGFkcy5ncm93KGdhbWVwYWQu
aW5kZXgoKSArIDEpOwogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRzW2dhbWVwYWQuaW5kZXgoKV0p
OwotICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlH
YW1lcGFkPihnYW1lcGFkKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWQuaW5kZXgoKV0gPSBtYWtl
VW5pcXVlPFVJR2FtZXBhZD4oZ2FtZXBhZCk7CiAKICAgICBzY2hlZHVsZUdhbWVwYWRTdGF0ZVN5
bmMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0hpZ2hQ
ZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKaW5kZXggN2Q1NmIwYTI0NjNkZWRmMTY2
OTU4YzI4ZmZiNzVhYTBlMmNlNTFmMS4uZTZiYzBhNDUwNTY1ZWUyZWZhMWJkMDVhMmE3NTYxMTFh
MTVkOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9I
aWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCkBAIC0zMiw2ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKIGNsYXNzIEhpZ2hQZXJm
b3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2Ft
cGxlcihXZWJQcm9jZXNzUG9vbCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwZDNkMDNjZWVkODMx
M2JjYTI3YjM5MTVhYzM3Y2U2ZTNlZDczMDk5Li5lZWI0MDk4OTVjZTBlMjNjOWZjM2U5NWYzNTgx
ODBmYzlhYjA0OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQoYm9vbCBiYWNrZ3Jv
dW5kKQogRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQ
cm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBpZiAo
IW1fZG93bmxvYWRQcm94eU1hcCkKLSAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0gc3RkOjpt
YWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CisgICAgICAgIG1fZG93bmxvYWRQ
cm94eU1hcCA9IG1ha2VVbmlxdWU8RG93bmxvYWRQcm94eU1hcD4oKnRoaXMpOwogCiAgICAgcmV0
dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShtX3Byb2Nlc3NQb29s
LCByZXNvdXJjZVJlcXVlc3QpOwogfQpAQCAtMTIwMSw3ICsxMjAxLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgV2UKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGFrZVVwbG9hZEFzc2VydGlv
bigpCiB7CiAgICAgQVNTRVJUKCFtX3VwbG9hZEFzc2VydGlvbik7Ci0gICAgbV91cGxvYWRBc3Nl
cnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3NJZGVudGlm
aWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdv
cmtpbmcpOworICAgIG1fdXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0
aW9uPihwcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0
YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpjbGVhclVwbG9hZEFzc2VydGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDM1YjgyMTNjMjhmY2I2Yjk0
MGExMDk5YmUxNDA4ZjkwNmEzYjkyYmIuLjFmZGI2NmMxNTVkODdiMjI2MmYyYTNkNWUxMGRlMjM5
MTQzOGE4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Owogc3RydWN0IFdlYnNpdGVEYXRhOwogCiBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHJpdmF0
ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1By
b2Nlc3NQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAg
ICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCAyYWFmZjFlYzJhNjU0
OTBkODg1NDM5OTZiZjgxMDJjMmQ0OWM1MDQyLi40N2EzZTliMjNiYTEyNjUxOThiNjBlZGRmNmM0
ZGQ5ODZmY2QyMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CkBAIC01NiwxNCArNTYsMTQgQEAgUmVmPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4gV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1AKIAogV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vz
c1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bv
b2wpCi0gICAgLCBtX3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpOb3RpZmljYXRpb25Q
cm92aWRlcj4oKSkKKyAgICAsIG1fcHJvdmlkZXIobWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlv
blByb3ZpZGVyPigpKQogewogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+JiYg
cHJvdmlkZXIpCiB7CiAgICAgaWYgKCFwcm92aWRlcikgewotICAgICAgICBtX3Byb3ZpZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpOworICAgICAgICBt
X3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5k
ZXggZWM2NGJjOWUxNjJjYjdjYTFlNzUzN2U5MzMxZDRmMTM5NTg3ZWM0MS4uNmNmNWUxNGVhNTY5
ZjIzZGE4NDc1NDA5NmNhNTExNDUzYzI5OGI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9
IHVpbnQzMl90OwogI2VuZGlmCiAKIGNsYXNzIFBhZ2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8UGFnZUNsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgflBhZ2VDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCmluZGV4
IDAxYTdkYTdiODkxYTkwMDY2YzkwZTg0MjljNjU2YmQ3MDBiMTY2YmQuLmVhNDM5MjdkNDhkNzUy
YmViNjcyODA5NDk5YzlhZDBiZmUwN2JjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKQEAgLTM1LDYg
KzM1LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKIGNs
YXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBlckFjdGl2aXR5U3RhdGVDUFVVc2Fn
ZVNhbXBsZXIoV2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB+UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91
bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGY2ZjQ3OWIxZTAz
OTJmMzIyMTYwYTY0OTRhZWM2MmUwYTA2Nzk2ZGQuLjg0MzY5ZDMzNDQwN2NmYmMyZTgzYWE4Mjdj
NWNjMGU1ZGI5MTIyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdp
blByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGEKICNpZiBQTEFURk9STShHVEspCiBzdGF0
aWMgYm9vbCBwbHVnaW5SZXF1aXJlc0d0azIoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQogewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9k
dWxlPihwbHVnaW5QYXRoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlPiBtb2R1bGUgPSBt
YWtlVW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0aCk7CiAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtb2R1bGUtPmZ1bmN0aW9uUG9pbnRl
cjxncG9pbnRlcj4oImd0a19vYmplY3RfZ2V0X3R5cGUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKaW5kZXggMDBhOTkxODg2MTQ4NzM5MzhhNmNiNGFi
ZDk5MTRiYzg2Mjk0NWNmNy4uNGNlMjYyZTlkY2JiNGIxYjBmZjBhZDVkYjk3ZWI5N2YzNjA3Mzc1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKQEAg
LTEwMyw5ICsxMDMsOSBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RUb1Byb2Nl
c3MoUHJvY2Vzc0lEIHBpZCkKIAogICAgIG1fc3VzcGVuZFRpbWVyLnN0b3AoKTsKICAgICBpZiAo
bV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKQotICAgICAgICBtX2Fzc2VydGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVu
dCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlz
aWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2Fzc2Vy
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRl
bnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CisgICAgICAgIG1fYXNzZXJ0aW9u
ID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmls
aXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX3Byb2Nlc3MuZGlkU2V0QXNzZXJ0aW9u
U3RhdGUoYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgbV9hc3NlcnRpb24tPnNldENsaWVudCgqdGhp
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1t
CmluZGV4IDYwZjAyYzYxMGZjZDk4ODMwNjM5YzU3YjNlOWQ2MWZmMWZkNTI1ZmQuLjI3NGFiZDMw
MjljMDA3NzMzOWRmZTM3NDhmZjMwNjk3YzliNDhiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMDcsNyArMTA3LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHks
IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICA6IERyYXdpbmdBcmVhUHJveHkoRHJhd2lu
Z0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCB3ZWJQYWdlUHJveHksIHByb2Nlc3MpCi0gICAgLCBt
X3JlbW90ZUxheWVyVHJlZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0
PigqdGhpcykpCisgICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3QobWFrZVVuaXF1ZTxSZW1vdGVM
YXllclRyZWVIb3N0PigqdGhpcykpCiB7CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCB0byBwb29sIHN1cmZhY2VzIGluIHRoZSBVSSBwcm9jZXNzLgpAQCAtMzc2LDcg
KzM3Niw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6dXBkYXRlRGVi
dWdJbmRpY2F0b3IoSW50U2l6ZSBjb250ZW50c1NpemUsCiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKCkKIHsKLSAgICBtX2Rl
YnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJU
cmVlSG9zdD4oKnRoaXMpOworICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gbWFr
ZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcyk7CiAgICAgbV9kZWJ1Z0luZGljYXRv
ckxheWVyVHJlZUhvc3QtPnNldElzRGVidWdMYXllclRyZWVIb3N0KHRydWUpOwogCiAgICAgbV90
aWxlTWFwSG9zdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggMzAwMjVkNDI5OWYzYmNhMDQ4NWQzMDRkODMzNTgx
NzYxMGJhNTBiZC4uOGE0ZTUwNDgxN2ViYzEyNWNlODk4YzFjMjkxZDlhNmU0ZDVmNTgyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFJlbW90
ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllckNyZQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90
ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykKIHsKICAgICBhdXRvIG1ha2VX
aXRoTGF5ZXIgPSBbJl0gKFJldGFpblB0cjxDQUxheWVyPiBsYXllcikgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVy
SUQsIFdURk1vdmUobGF5ZXIpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5
ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CiAgICAgfTsK
ICAgICBhdXRvIG1ha2VBZG9wdGluZ0xheWVyID0gWyZdIChDQUxheWVyKiBsYXllcikgewogICAg
ICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihhZG9wdE5TKGxheWVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9k
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVOb2RlLm1tCmluZGV4IGU4OGJiYzYwOGQ0ZmIwNTgzODRkMjliMjY5ODE1OTJlZGE4MTRl
YmEuLjRmZDRlYTI2OWU4Y2MxYmRmZmIyZWIyNTk3ZDRmNzUwZDg0MjQwNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVO
b2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVOb2RlLm1tCkBAIC03Myw3ICs3Myw3IEBAIFJlbW90ZUxheWVyVHJlZU5vZGU6
On5SZW1vdGVMYXllclRyZWVOb2RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVO
b2RlPiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCkKIHsKICAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gbGF5ZXIgPSBhZG9wdE5TKFtbV0tQbGFpblJlbW90ZUxheWVyIGFsbG9jXSBpbml0
XSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4obGF5
ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVy
VHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVMYXll
clRyZWVOb2RlOjpkZXRhY2hGcm9tUGFyZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaAppbmRleCBjMjc4MWRjOGFkYTM0
MzM5Zjc5ZWQ4NWE3ZTNlOWZmNzY1MjIyNTI4Li4yOWRmZWZlNmNiNzJjMTIwYTYxY2MyMmQwZDNi
YTY0YTZkOTQ0MjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTsKIAogY2xhc3MgUmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGEoUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSYpOwogICAgIH5SZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDg2ZDBkZWZjNjk2NWU0ZmE2YmExMTY0
NzYxYmM5YWM3MTk4YzcyZTYuLjFhNzY5NDNmMjQ1YmUxY2Q4MjJmMTk2MTNjZGQzNWY1NDBhOTRj
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApA
QCAtNDksNiArNDksNyBAQCBjbGFzcyBSZW1vdGVTY3JvbGxpbmdUcmVlOwogY2xhc3MgV2ViUGFn
ZVByb3h5OwogCiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVI
b3N0SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDYyOWE5YzY1MGQ0M2MwZDU2MWM4MTkzM2Jh
MGQxNGU4ZDMzZWE0NDQuLjBjMTI2YWU2YWY3NWU0MTM4YWZkMDA4NjgzOTU2NjI5ZmY3MDAyMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTYxLDcgKzYx
LDcgQEAgc3RhdGljIFJldGFpblB0cjxVSVZpZXc+IGNyZWF0ZVJlbW90ZVZpZXcocGlkX3QgcGlk
LCB1aW50MzJfdCBjb250ZXh0SUQpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9k
ZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIGF1
dG8gbWFrZVdpdGhWaWV3ID0gWyZdIChSZXRhaW5QdHI8VUlWaWV3PiB2aWV3KSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMu
bGF5ZXJJRCwgV1RGTW92ZSh2aWV3KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90
ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZSh2aWV3KSk7CiAgICAg
fTsKICAgICBhdXRvIG1ha2VBZG9wdGluZ1ZpZXcgPSBbJl0gKFVJVmlldyogdmlldykgewogICAg
ICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlModmlldykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9T
Lm1tCmluZGV4IDgxYTJlYjlhNjM1ZDU5ODQxNjAwZjc4MzUyMDRhYzg0YmQ2ZDVjMjguLmI4OTA2
ODFlOWU3YTUxM2JhMzQzNjdjZWYzOTg5YmUzYjE5ZDljYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZVJlbW90ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1Mu
bW0KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFMKIAogICAgIGlmIChz
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAgICAgIGlmIChzY3JvbGxDb250YWluZXJMYXll
cigpKQotICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKKyAgICAg
ICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mu
bW0KaW5kZXggYjU2ZTJlYTY0ZGE1MjAzMWRmYWYxMjhlYzI0OGNkMTVjNzEwMDkyNi4uZDBiZGQz
YzU3ZGJiY2JlZjA3MGU4NTFhZmUwNGVlZTZhYWI1N2Q5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQpAQCAt
NDMsNyArNDMsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUz4g
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUwogCiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFdlYkNvcmU6OlNjcm9s
bGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRl
KHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4o
KnRoaXMpKQorICAgICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUobWFrZVVuaXF1ZTxTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWMuY3BwCmluZGV4IDMyYTFlMzNhYTg1NjdjMGI2MTYyZTA2NzgzY2YzNzZjZjYxOTA3
ZTIuLjIzM2ZmZDAyMWU2MzhiZjE4OGY4ZGNhYmQ3NzljNzQ1Mjk0MzcyOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyhTY3JvbGxpbmdUcmVlJiB0cmVlLCBTY3JvbGxp
bmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWModHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkKLSAg
ICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhp
cykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRo
aXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAppbmRleCBkODk2MGNlYzMw
ZTQzMzE5YWEwMjdkOWEyMWZjZWZjODM3NjM1MDQzLi5iNmNhM2NiYmE4MDgwN2FmN2I5ZjY5OWJl
OWIxYjJhYTljZGMxYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVN
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWM+
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ04KIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZVJlbW90ZU1hYyhTY3JvbGxpbmdUcmVlJiB0cmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQog
ICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlSUQp
Ci0gICAgLCBtX3Njcm9sbGVyUGFpcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGVyUGFpck1hYz4o
KnRoaXMpKQorICAgICwgbV9zY3JvbGxlclBhaXIobWFrZVVuaXF1ZTxTY3JvbGxlclBhaXJNYWM+
KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKaW5kZXggZjUw
NWUyODBjNDQyOTBhODAzZGJkYjY4Yzk4ZWVhNjMwYjFjOWJiNi4uODY4YjU0ZTc5MmFmMmFiZDk4
NmJjODY2MDA1Y2IxMmY0NTY4MjQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
CkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5CiAgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgogI2VuZGlmCiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5Jik7CiAgICAgflVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQpp
bmRleCBjYTI2ZTUxZDdhNDA2NGFhMjgxMjdjMGYwMWQ1NGE0ZTBhYzI0NDYzLi4zOTNiMTM2NzFm
NjAxNDE2YTZlZDdjMmZkYWIwY2QyZWIwODFlM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2Uu
bW0KQEAgLTkyLDcgKzkyLDcgQEAgVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+IEhpZFNlcnZpY2U6
OmNyZWF0ZUhpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogCiB2b2lkIEhpZFNl
cnZpY2U6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKLSAgICBhdXRvIGRy
aXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVjdGlv
bihkZXZpY2UpKTsKKyAgICBhdXRvIGRyaXZlciA9IG1ha2VVbmlxdWU8Q3RhcEhpZERyaXZlcj4o
Y3JlYXRlSGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKICAgICAvLyBHZXQgYXV0aGVudGljYXRvciBp
bmZvIGZyb20gdGhlIGRldmljZS4KICAgICBkcml2ZXItPnRyYW5zYWN0KGVuY29kZUVtcHR5QXV0
aGVudGljYXRvclJlcXVlc3QoQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdldElu
Zm8pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHB0ciA9IGRyaXZlci5nZXQoKV0o
VmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eS5oCmluZGV4IDg1Y2U2OTA2MTExNDQyYmM2NzljYzdhNzc1Yjg2ODJkZDE1NzI4YzkuLmY4
NTJiZWQyMTMwYjQ3YzJmN2RkMjk4YWQzNTZhZWFjODdjMDI2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApAQCAtNDQsNiArNDQsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSk7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5jcHAKaW5kZXggOTlkNmVhMzM0MTUzZWNmNDlkNDU4NGM3NDNkYzY4MTY4ODQxNTUyMC4uODQ2
YTVhYTI3ZGZhYjNkMjc0Y2ZmYTQ4NzM4NjFmMjU4N2QxN2ZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAt
NDYsNyArNDYsNyBAQCBSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1BvbwogCiBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHBy
b2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAg
LCBtX3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigp
KQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4o
KSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CkBAIC01NCw3ICs1NCw3IEBAIFdlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCog
cHJvY2Vzc1BvCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQogewog
ICAgIGlmICghcHJvdmlkZXIpCi0gICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VV
bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgIGVsc2UKICAgICAgICAgbV9w
cm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKaW5kZXggMmNkY2Qx
NzY1Mjk5ZmU3NzY0OWJhYmY5ZGUzZTc0ZThiMGYwMGUzNy4uMzM2NGJjYmNjOTExODRhNmJhNzU0
MWVmOTBiMGY5NjA0Y2RlNGRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAg
dm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnVwZGF0ZVBsYXliYWNrQXR0cmlidXRl
c0Zyb21NZWRpYVN0YXRlKFdlYlBhZ2UKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFnZVByb3h5JiBwcm94eSwgdWludDY0X3Qg
ZWxlbWVudElEKQogewotICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOworICAgIG1fZm9jdXNl
ZE1lZGlhRWxlbWVudCA9IG1ha2VVbmlxdWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5LCBl
bGVtZW50SUQpOwogfQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y2xlYXJG
b2N1c2VkTWVkaWFFbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYk5hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdh
dGlvblN0YXRlLmgKaW5kZXggOWViOWQyOGFkZGQ1YjViMDA2ZDUwYjA4YTNkNzRmYjY5ZDE2MjM5
Mi4uMTZhNzU5YWM4YTFmZjMxNDYwNWIwOTQ2ZmZjNWFhNjU4MThlMDc0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAg
Y2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIAogY2xh
c3MgV2ViTmF2aWdhdGlvblN0YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICB+V2ViTmF2aWdh
dGlvblN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IDY1Mjk4MmE4MTJhOWVmYmVmNTIxYTZhOTg5OWZh
NGJlZTVmYWYzNGMuLjFiMjlmNzlkZGZhZWEwN2I5ZTcyNDliZDc3MjM4NGVlYmY1MzBmZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
UGFnZVByb3h5OwogCiBjbGFzcyBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQgOiBwdWJsaWMg
QVBJOjpDbGllbnQ8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVj
dCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCosIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4
IGM0YjkyYzgzY2ZlYTI5YjMxZWRiYjM0YWE4NDAyNWJhNWM4YjAzYjcuLmJkYTU5Y2Q4MDUxNTc2
NDZiMzA4ZDJmZDIzNmYzZDExODI3MWUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0
ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKIHsKLSAgICBhdXRvIHRhcmdl
dEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQ+KG1f
ZnJvbnRlbmRSb3V0ZXIuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIGF1
dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudD4o
bV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAg
ICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdmYTJiNGQ2ZDNjMTY2MWE3MDAzYjc3ODU1OGRh
N2MyZmYyNGYwN2UuLjBiNDBkYjI3NzgzZmRlOWQyNTZmZjUyOTJlZWE3ZWJmZTMxNmNhMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzk3LDE1ICszOTcs
MTUgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVS
ZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KG1ha2VV
bmlxdWVSZWY8QVBJOjpIaXN0b3J5Q2xpZW50PigpKQotICAgICwgbV9pY29uTG9hZGluZ0NsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCkpCi0gICAgLCBtX2Zv
cm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBtX3Vp
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKLSAgICAsIG1fZmluZENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKLSAgICAsIG1fZmluZE1h
dGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpKQor
ICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGll
bnQ+KCkpCisgICAgLCBtX2Zvcm1DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkp
CisgICAgLCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKKyAgICAsIG1f
ZmluZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKKyAgICAsIG1fZmluZE1h
dGNoZXNDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpKQogI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51Q2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKICNlbmRpZgotICAgICwg
bV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkp
CisgICAgLCBtX25hdmlnYXRpb25TdGF0ZShtYWtlVW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4o
KSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAoKm1fY29uZmln
dXJhdGlvbi0+cGFnZUdyb3VwKCkpCiAgICAgLCBtX3ByZWZlcmVuY2VzKCptX2NvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VzKCkpCkBAIC00MTYsNyArNDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCBQYWcKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3Vy
YXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgfQogICAgICwgbV90cmVhdHNT
SEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZpZ3VyYXRpb24tPnRyZWF0c1NIQTFTaWdu
ZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQot
ICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVu
Q2xpZW50PigpKQorICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGdWxs
c2NyZWVuQ2xpZW50PigpKQogI2VuZGlmCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIoKnRoaXMpCkBAIC00MzUsOSArNDM1LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQ
YWcKICNlbmRpZgogICAgICwgbV9wYWdlTG9hZFN0YXRlKCp0aGlzKQogICAgICwgbV9jb25maWd1
cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhtX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMo
KSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFr
ZV91bmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRGVi
dWdnYWJsZShtYWtlVW5pcXVlPFdlYlBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYKICAg
ICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
V2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7CkBAIC00NzcsNyArNDc3LDcg
QEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6Oldl
bGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10geworICAg
IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNl
cnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5M
b29wT3JkZXJzOjpBY3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNdIHsKICAgICAgICAgdGhpcy0+
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTYwMSw3
ICs2MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OlBvbGljeUNsaWVudD4mJiBwb2xpY3lDbAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNsaWVudD4mJiBmb3JtQ2xpZW50
KQogewogICAgIGlmICghZm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYgdWlDbGll
bnQpCiB7CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgICAgICBtX3VpQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OlVJQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02Mjgs
NyArNjI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYKIHsKICAgICBib29sIGhhc0NsaWVu
dCA9IGljb25Mb2FkaW5nQ2xpZW50LmdldCgpOwogICAgIGlmICghaWNvbkxvYWRpbmdDbGllbnQp
Ci0gICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNv
bkxvYWRpbmdDbGllbnQ+KCk7CisgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2ljb25M
b2FkaW5nQ2xpZW50ID0gV1RGTW92ZShpY29uTG9hZGluZ0NsaWVudCk7CiAKQEAgLTY1MCw3ICs2
NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6
dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcgogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZp
bmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50KQog
ewogICAgIGlmICghZmluZENsaWVudCkgewotICAgICAgICBtX2ZpbmRDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKKyAgICAgICAgbV9maW5kQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50KQogdm9pZCBXZWJQYWdl
UHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRNYXRj
aGVzQ2xpZW50PiYmIGZpbmRNYXRjaGVzQ2xpZW50KQogewogICAgIGlmICghZmluZE1hdGNoZXND
bGllbnQpIHsKLSAgICAgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICAgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREaWFnbm9z
dGljTG9nZ2luZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEaWFnbm9zdGljTG9nCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
Q29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGllbnQpCiB7CiAgICAgaWYgKCFjb250
ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRleHRNZW51
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFz
ZSoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKKyAgICBt
X2luamVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQ+KCk7CiAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+aW5pdGlhbGl6ZShjbGllbnQp
OwogfQogCkBAIC03NzYsNyArNzc2LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJy
ZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICB9
CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRD
dXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNz
IHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgYXV0byBzdXNw
ZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBt
X3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGls
RW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CisgICAgYXV0byBzdXNwZW5kZWRQ
YWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29w
eVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2Vi
UGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nl
c3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2
NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAw
KTsKIApAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1
bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBBU1NFUlQo
IW1fZnVsbFNjcmVlbk1hbmFnZXIpOwotICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50KCku
ZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKKyAgICBtX2Z1bGxTY3JlZW5NYW5hZ2Vy
ID0gbWFrZVVuaXF1ZTxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PigqdGhpcywgcGFnZUNsaWVu
dCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIEFTU0VSVCghbV9wbGF5YmFja1Nlc3Npb25N
YW5hZ2VyKTsKQEAgLTg2MCwyMiArODYwLDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRh
Y2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAgICAgQVNTRVJU
KCFtX3BheW1lbnRDb29yZGluYXRvcik7Ci0gICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAgbV9w
YXltZW50Q29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBBU1NFUlQo
IW1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIpOwotICAgIG1fc3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhpcyk7Cisg
ICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8U3lzdGVtUHJldmlld0Nv
bnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBB
U1NFUlQoIW1fY3JlZGVudGlhbHNNZXNzZW5nZXIpOwotICAgIG1fY3JlZGVudGlhbHNNZXNzZW5n
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Pigq
dGhpcyk7CisgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG1ha2VVbmlxdWU8V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgSEFWRShQRU5D
SUxLSVQpCiAgICAgQVNTRVJUKCFtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyKTsKLSAgICBtX2Vk
aXRhYmxlSW1hZ2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFZGl0YWJsZUltYWdlQ29u
dHJvbGxlcj4oKnRoaXMpOworICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBtYWtlVW5p
cXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtOTQz
LDcgKzk0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmF3aW5nQXJlYShzdGQ6OnVuaXF1
ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlCiAKICNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9kcmF3aW5nQXJlYS0+dHlw
ZSgpID09IERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSkgewotICAgICAgICBtX3Njcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5PigqdGhpcyk7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gT24gaU9TLCBtYWluIGZyYW1l
IHNjcm9sbHMgYXJlIHNlbnQgaW4gdGVybXMgb2YgdmlzaWJsZSByZWN0IHVwZGF0ZXMuCiAgICAg
ICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS0+c2V0UHJvcGFnYXRlc01haW5GcmFtZVNj
cm9sbHMoZmFsc2UpOwpAQCAtMTAwNiwxNyArMTAwNiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2xvc2UoKQogICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX25hdmlnYXRpb25D
bGllbnQgPSBtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKTsKICAgICBtX3Bv
bGljeUNsaWVudCA9IG51bGxwdHI7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKLSAgICBtX2Zvcm1DbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKLSAgICBtX3VpQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwotICAgIG1fZmluZENsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwotICAgIG1fZmluZE1hdGNoZXNDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CisgICAgbV9pY29u
TG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKKyAg
ICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAgICBtX3Vp
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgIG1fZmluZENsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgIG1fZmluZE1hdGNoZXNDbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CiAgICAgbV9kaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
bV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNs
aWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNvbnRl
eHRNZW51Q2xpZW50PigpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAg
IG1fZnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xp
ZW50PigpOworICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGdWxsc2Ny
ZWVuQ2xpZW50PigpOwogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVt
b3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlzKTsKQEAgLTEyMjYsNyArMTIyNiw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25h
dmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVuY29kaW5nLCBi
YXNlVVJMLCB1c2VyRGF0YSkpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0
YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24obWFrZVVuaXF1ZTxBUEk6OlN1YnN0aXR1dGVE
YXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRh
KSk7CiAgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRh
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQsIHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQpAQCAtMjQx
NSw3ICsyNDE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
TmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRp
dmVXZWJXaGVlbEV2ZW50Pj4oKTsKKyAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBtYWtl
VW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBjb2FsZXNjZWRXaGVl
bEV2ZW50LT5hcHBlbmQoZXZlbnQpOwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVu
dHMuYXBwZW5kKFdURk1vdmUoY29hbGVzY2VkV2hlZWxFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2
ZW50KGV2ZW50KTsKQEAgLTI0MjMsNyArMjQyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50KCkKIHsKLSAgICBhdXRvIG5l
eHRDb2FsZXNjZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVs
RXZlbnQ+PigpOworICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0
b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CiAgICAgV2ViV2hlZWxFdmVudCBuZXh0V2hlZWxF
dmVudCA9IGNvYWxlc2NlZFdoZWVsRXZlbnQobV93aGVlbEV2ZW50UXVldWUsICpuZXh0Q29hbGVz
Y2VkRXZlbnQuZ2V0KCkpOwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBw
ZW5kKFdURk1vdmUobmV4dENvYWxlc2NlZEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQobmV4
dFdoZWVsRXZlbnQpOwpAQCAtMjk4NCw3ICsyOTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IHMKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwogICAgIH0KIAotICAgIG1f
cHJvdmlzaW9uYWxQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4o
KnRoaXMsIG5ld1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2VQcm94eSks
IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJc1Jl
ZGlyZWN0KCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCk7CisgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lv
bmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3VzcGVu
ZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJy
ZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKIAogICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdh
dGlvbi50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkg
JXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0
aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTU3MDIsNyArNTcwMiw3IEBAIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6ZnVsbFNjcmVlbk1hbmFnZXIo
KQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6RnVsbHNjcmVlbkNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpIHsK
LSAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxz
Y3JlZW5DbGllbnQ+KCk7CisgICAgICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8
QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03
NDM3LDcgKzc0MzcsNyBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYg
V2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogICAgIGlmIChtX3VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKICAgICAgICAgcmV0dXJuICptX3VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAotICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eT4oKnRoaXMpOworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyID0gbWFrZVVuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eT4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI7CiB9CiAKQEAgLTgxNDMsNyArODE0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3Jv
bGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9z
Y3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CiAKICAgICBp
ZiAobV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCAmJiAhbV9zY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEpCi0gICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+
KGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdBcmVh
KSk7CisgICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbWFrZVVuaXF1ZTxSZW1v
dGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+KGRvd25jYXN0PFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdBcmVhKSk7CiAgICAgZWxzZSBpZiAoIW1f
c2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQpCiAgICAgICAgIG1fc2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhID0gbnVsbHB0cjsKIH0KQEAgLTkxOTAsNyArOTE5MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXNldFNwZWVjaFN5bnRoZXNpemVyKCkKIFdlYlBhZ2VQcm94eTo6
U3BlZWNoU3ludGhlc2lzRGF0YSYgV2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVzaXNEYXRhKCkK
IHsKICAgICBpZiAoIW1fc3BlZWNoU3ludGhlc2lzRGF0YSkKLSAgICAgICAgbV9zcGVlY2hTeW50
aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIgfTsKKyAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3BlZWNo
U3ludGhlc2lzRGF0YSB7IG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhp
cyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICBy
ZXR1cm4gKm1fc3BlZWNoU3ludGhlc2lzRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXggOGJkZjhjZjgzODhjZGM3YmZhY2ZmMmI3ZTYw
NWQwYTgxOGRhYWM2NC4uOTYyZjNiZWQyZDgyNTY5YTA3ZGQ0ZTljZGFiOGZjYzcyMTE5ZjdkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCkBAIC04NCw3
ICs4NCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZShSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gZ2VuZXJhdGVBZGRSZXF1ZXN0SWRlbnRpZmll
cigpOwotICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgc3Rk
OjptYWtlX3VuaXF1ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOworICAgIG1f
cGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuaXF1ZTxDYWNo
ZWRQcm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOwogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxlKCk6
IENoZWNraW5nIGlmIHByb2Nlc3MgJWkgaXMgcmVzcG9uc2l2ZSBiZWZvcmUgY2FjaGluZyBpdC4u
LiIsIHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIHByb2Nlc3MtPmlz
UmVzcG9uc2l2ZShbdGhpcywgcHJvY2Vzc1Bvb2wgPSBtYWtlUmVmKHByb2Nlc3MtPnByb2Nlc3NQ
b29sKCkpLCByZXF1ZXN0SWRlbnRpZmllcl0oYm9vbCBpc1Jlc3BvbnNpdmUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBkYmUyNTM1MmI1MjU4OGQ4
YTNjYzg2OTQ4NDQ0MGU3OWU4NWEwOTZkLi5mZWRhOGVlOGU4ZDMwZjM5NGZmMTA4ZmJmYTgwNDE1
ZDgxMDc3YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC0yMzMsMTUgKzIzMywxNSBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdAogV2ViUHJvY2Vz
c1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24uY29weSgpKQog
ICAgICwgbV9kZWZhdWx0UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCi0gICAgLCBt
X2luamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZUNsaWVudD4oKSkKLSAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6QXV0b21hdGlvbkNsaWVudD4oKSkKLSAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQotICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKLSAgICAs
IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisgICAgLCBtX2luamVjdGVkQnVuZGxlQ2xpZW50
KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKKyAgICAsIG1fYXV0b21h
dGlvbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKKyAgICAsIG1f
ZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQorICAgICwg
bV9oaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dD4oKSkKKyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3Rv
cmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICwg
bV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPEhp
Z2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPigqdGhpcykpCi0gICAgLCBtX3BlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3VuaXF1ZTxQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykpCisgICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBo
aWNzVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNh
bXBsZXI+KCp0aGlzKSkKKyAgICAsIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlciht
YWtlVW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKICNlbmRp
ZgogICAgICwgbV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkobV9jb25maWd1cmF0aW9u
LT5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkoKSkKICAgICAsIG1fc2hvdWxkVGFrZVVJ
QmFja2dyb3VuZEFzc2VydGlvbihtX2NvbmZpZ3VyYXRpb24tPnNob3VsZFRha2VVSUJhY2tncm91
bmRBc3NlcnRpb24oKSkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpp
bml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIGNsaWVudCkKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkK
LSAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKKyAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBlbHNlCiAgICAg
ICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBAIC0zNzcs
NyArMzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGll
bnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEIKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3Rv
cnlDbGllbnQ+JiYgaGlzdG9yeUNsaWVudCkKIHsKICAgICBpZiAoIWhpc3RvcnlDbGllbnQpCi0g
ICAgICAgIG1faGlzdG9yeUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250
ZXh0SGlzdG9yeUNsaWVudD4oKTsKKyAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gbWFrZVVuaXF1
ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAg
bV9oaXN0b3J5Q2xpZW50ID0gV1RGTW92ZShoaXN0b3J5Q2xpZW50KTsKIH0KQEAgLTM4NSw3ICsz
ODUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Qwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0
RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgZG93
bmxvYWRDbGllbnQpCiB7CiAgICAgaWYgKCFkb3dubG9hZENsaWVudCkKLSAgICAgICAgbV9kb3du
bG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKTsKKyAg
ICAgICAgbV9kb3dubG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4o
KTsKICAgICBlbHNlCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEZNb3ZlKGRvd25sb2Fk
Q2xpZW50KTsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4mJiBkbwog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmIGF1dG9tYXRpb25DbGllbnQpCiB7CiAgICAgaWYgKCFh
dXRvbWF0aW9uQ2xpZW50KQotICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKKyAgICAgICAgbV9hdXRvbWF0aW9uQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCk7CiAgICAgZWxzZQogICAg
ICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQpA
QCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDCiB7CiAjaWYgRU5BQkxF
KExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICAgICBpZiAoIWN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudCkKLSAgICAgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpOworICAg
ICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2N1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KTsKICNlbmRpZgpAQCAtNDkyLDcgKzQ5Miw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAg
ICAgICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKICAgICB9CiAKLSAgICBhdXRvIG5ldHdv
cmtQcm9jZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5PigqdGhpcyk7
CisgICAgYXV0byBuZXR3b3JrUHJvY2VzcyA9IG1ha2VVbmlxdWU8TmV0d29ya1Byb2Nlc3NQcm94
eT4oKnRoaXMpOwogCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKIApAQCAtMjUxMCw3ICsyNTEwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29s
bGVjdFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWEKICAg
ICAgICAgbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUobV9w
cmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5yYW5kb20oKSk7CiAKICAgICBh
dXRvJiB2YWx1ZSA9IG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4uZW5z
dXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIAogICAgICp2YWx1ZSA9IHByZXdhcm1JbmZvcm1hdGlvbjsKQEAgLTI1NTcsMTIgKzI1
NTcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoUHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT50YWtl
VXBsb2FkQXNzZXJ0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoIW1fdWlQcm9jZXNz
VXBsb2FkQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwg
IldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7
CisgICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNz
QXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogICAgIH0KICAgICAKICAgICBhdXRv
IHJlc3VsdCA9IG1fcHJvY2Vzc2VzV2l0aFVwbG9hZHMuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7
CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQ
cm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVw
bG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSUQpCkBAIC0yNTk5LDEyICsyNTk5LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnNldFdlYlByb2Nlc3NJc1BsYXlpbmdBdWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVGhlIG51bWJl
ciBvZiBwcm9jZXNzZXMgcGxheWluZyBhdWRpYmxlIG1lZGlhIGlzIG5vdyBvbmUuIFRha2luZyBV
SSBwcm9jZXNzIGFzc2VydGlvbi4iKTsKIAogICAgICAgICBBU1NFUlQoIW1fdWlQcm9jZXNzTWVk
aWFQbGF5YmFja0Fzc2VydGlvbik7Ci0gICAgICAgIG1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fz
c2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFBy
b2Nlc3NJRCgpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9y
ZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICAgICAgbV91aVBy
b2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9u
PihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2Vy
dGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOwog
ICAgIH0KIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNQbGF5aW5nQXVkaWJsZU1lZGlh
LmFkZChwcm9jZXNzSUQsIG51bGxwdHIpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7
Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fz
c2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBNZWRpYSBQbGF5
YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVk
aWFQbGF5YmFjayk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJv
Y2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBNZWRp
YSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNv
bjo6TWVkaWFQbGF5YmFjayk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJv
Y2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9j
ZXNzSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCAwYjI0MmEyYmI1ODY3NGMwMzhjZjdjZmE0OTJkYjdkOTVjYWUwMDFlLi5kYTM2ZjZiYTU4YTUz
MDU2ZTA4YzJiNjZiMjM4ZTdlZTMzODdlNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBXZWJQcm9jZXNzUHJveHk6
OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRh
U3RvcmUqCiAgICAgLCBtX3Zpc2libGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50
KSB7IHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCiAgICAgLCBtX3dl
YnNpdGVEYXRhU3RvcmUod2Vic2l0ZURhdGFTdG9yZSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0aGlzKSkK
KyAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9pc1ByZXdhcm1l
ZChpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVu
dC5oCmluZGV4IGU5ZmNmMDAxNTM5OTVkYzFjY2UxMzVmOGMwOTJlOTJlNjZkYmZmM2EuLmQwYmJh
NTY0YzI3NTgyZDc4MjZlOWYyYzIwNjIyMzcwMjI3Mjk1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xp
ZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0
b3JlQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2Nh
aXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJv
L0JhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCAxODI5NGQzN2ZlNDllZWQ2ZDY5ZGZmZmY1ZjJm
NjUwNzBiNjZjZDkwLi43YmRkMDNkM2M4ZWM4ZTA2NjJlNzdkMDE4MjUwYjUwODhjMjZjZmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwCkBAIC01NCwxMiArNTQsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEJhY2tpbmdTdG9yZUJh
Y2tlbmRDYWlybz4gQmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKCkKICAgICAgICAgR2RrVmlz
dWFsKiB2aXN1YWwgPSBndGtfd2lkZ2V0X2dldF92aXN1YWwobV93ZWJQYWdlUHJveHkudmlld1dp
ZGdldCgpKTsKICAgICAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBnZGtfdmlzdWFsX2dldF9zY3Jl
ZW4odmlzdWFsKTsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
c2hhcmVkRGlzcGxheSkubmF0aXZlKCkgPT0gR0RLX1NDUkVFTl9YRElTUExBWShzY3JlZW4pKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExPihHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExPihH
REtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwKICAgICAg
ICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBnZGtfdmlzdWFsX2dldF9kZXB0aCh2
aXN1YWwpLCBtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbD4o
bV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwog
fQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBiODc0ZmIwZmIyZTJhN2U3ZWMzNmNjNDRlMzlk
NjI0OTA2YTRjNWYxLi5mODg4YzBmNDQ2YzYyNzEyN2M4Mzc1YmUwZDgxYTZhM2YyYzA5ZjcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0
b3JDbGllbnQuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGll
bnQ6OmNvbm5lY3Rpb25DbG9zZWQoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3Bl
Y3QodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCkKIHsKICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJlKHN0ZDo6bWFrZV9wYWlyKGNv
bm5lY3Rpb25JRCwgdGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRF0gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRo
aXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpOwogICAg
IH0pOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+c2hvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAppbmRl
eCAzODMxMDAwNTg4OTRkZWMwZmI3YjUxY2FhMDlhMjM5ZDc3ZDA4YThiLi44OTMyNzlmYmNmNThh
ZWFmMmFmZDZiMWE0N2MxYzc2YzIzZDgyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNw
cApAQCAtNzksOSArNzksOSBAQCBib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6
Y2hlY2tSZXF1aXJlbWVudHMoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNF
KE9QRU5HTF9FUykKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVT
PiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihu
dWxscHRyLCAgZmFsc2UpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3Bl
bkdMRVM+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51
bGxwdHIsICBmYWxzZSk7CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9u
czNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9w
ZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMg
PSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJy
ZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAgICAgIGlmIChnbEV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikgfHwgZ2xFeHRlbnNpb25zLT5zdXBwb3J0
cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQogICAgICAgICAgICAgZ2xJbWFnZVRhcmdl
dFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUy
RE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VT
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9w
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5k
bGVyLmNwcAppbmRleCBlOWFlNjU1MmE3YTJkODYyYzRiZDRlZTEwZWQyZWMzNmU5MmY4MzFkLi5j
YTY1M2U1ZWJhNzBjOTYxNTVmZjc2NDg4YzNlZGY0MjgxZjg1NzEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcApAQCAtMjAyLDcg
KzIwMiw3IEBAIFNlbGVjdGlvbkRhdGEqIERyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxl
Y3Rpb24oR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAgc3RkOjp1bmlxdWVfcHRyPERy
b3BwaW5nQ29udGV4dD4mIGRyb3BwaW5nQ29udGV4dCA9IG1fZHJvcHBpbmdDb250ZXh0cy5hZGQo
Y29udGV4dCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZHJvcHBpbmdDb250
ZXh0KSB7CiAgICAgICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gbV9wYWdlLnZpZXdXaWRnZXQoKTsK
LSAgICAgICAgZHJvcHBpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEcm9wcGluZ0NvbnRl
eHQ+KGNvbnRleHQsIHBvc2l0aW9uKTsKKyAgICAgICAgZHJvcHBpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxEcm9wcGluZ0NvbnRleHQ+KGNvbnRleHQsIHBvc2l0aW9uKTsKICAgICAgICAgVmVjdG9y
PEdka0F0b20+IGFjY2VwdGFibGVUYXJnZXRzKFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigp
LmRyb3BBdG9tc0ZvckNvbnRleHQod2lkZ2V0LCBkcm9wcGluZ0NvbnRleHQtPmdka0NvbnRleHQp
KTsKICAgICAgICAgZHJvcHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3RzID0gYWNjZXB0
YWJsZVRhcmdldHMuc2l6ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHRhcmdldCA6IGFjY2VwdGFi
bGVUYXJnZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxh
bmRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29t
cG9zaXRvci5jcHAKaW5kZXggY2JlMzgwYjI0MGQ5NjAxMTE3MjdiNzcwYTgyNWUwOWUwNTQ3Yzll
ZC4uYzNkOTk3M2M3MGRjMjA4OWM2ODNkNjVhOTEzZGEyOTRkNWZmZWJjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBAIC00MjAs
OSArNDIwLDkgQEAgYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRl
bnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1
ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJz
aW9uKCkgPj0gMzIwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBn
bEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xD
b250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAgaWYgKGds
RXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVuc2lvbnMt
PnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAgICAgIGdsSW1hZ2VU
YXJnZXRUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJHRVRURVhU
VVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUy
RE9FUyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJs
ZUltYWdlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJs
ZUltYWdlQ29udHJvbGxlci5tbQppbmRleCBjMjM0MTFjMWYwOWIwMTBhNjUyNTRiMzY5ZGQzMTY5
ZDMxZjBjMGUwLi42MWU4NTk0ZDViN2M0MWFhZjlmYzgyYzY1MzhkYjlhZDcxODU2MzQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250
cm9sbGVyLm1tCkBAIC01OCw3ICs1OCw3IEBAIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjp+RWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIoKQogRWRpdGFibGVJbWFnZSYgRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXI6OmVuc3VyZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRk
ZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2VkaXRhYmxl
SW1hZ2VzLmVuc3VyZShlbWJlZGRlZFZpZXdJRCwgWyZdIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxFZGl0YWJsZUltYWdl
PigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBtYWtl
VW5pcXVlPEVkaXRhYmxlSW1hZ2U+KCk7CiAgICAgICAgIGltYWdlLT5kcmF3aW5nVmlldyA9IG1f
d2ViUGFnZVByb3h5LT5wYWdlQ2xpZW50KCkuY3JlYXRlRHJhd2luZ1ZpZXcoZW1iZWRkZWRWaWV3
SUQpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmll
dy5tbQppbmRleCBkMDNhMTcyNmFiMzM0YTAwZTYwZmJjMDUwYjUwZTVjMzM3NWFmNzIwLi43ZjBm
OTQ4NGZkNzc3NGRkMTE1N2FlMjg4NWM5MGEzYmYyZWU3OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2lu
Z1ZpZXcubW0KQEAgLTY1LDcgKzY1LDcgQEAgLSAodm9pZClkaWRNb3ZlVG9XaW5kb3cKICAgICBp
ZiAoIXNlbGYuX2NvbnRlbnRWaWV3LndpbmRvdyB8fCBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4oc2VsZiwgQHNlbGVj
dG9yKF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRp
b25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCksIEBzZWxlY3Rv
cihfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKSk7CisgICAgX2FwcGxpY2F0aW9uU3Rh
dGVUcmFja2VyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihz
ZWxmLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9y
KF9hcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5k
KSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsKICAgICAKICAg
ICBpZiAoX2xhc3RPYnNlcnZlZFN0YXRlV2FzQmFja2dyb3VuZCAmJiAhW3NlbGYgaXNCYWNrZ3Jv
dW5kXSkKICAgICAgICAgW3NlbGYgX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZF07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDY4MTFl
ODdhNGE0MjEwMDViZDk0YTdhYzIxNjU0M2VjYzAwYTc3ZmMuLjQzMWZhY2QxZTY4Mzk3ZWM4NTcz
OTFhYjFjZjg4OGQzODQxNTdhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCkBAIC0xNjcsNyArMTY3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYp
cHIKICAgICBfcGFnZS0+c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKHRydWUpOwogCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQotICAgIF9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pihfd2ViVmlldykpOworICAgIF9wYWdl
LT5zZXRGdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50
Pihfd2ViVmlldykpOwogI2VuZGlmCiAKICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGF0
aXN0aWNzKCkud2tWaWV3Q291bnQrKzsKQEAgLTIzOSw3ICsyMzksNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sJgogCiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgX3Bh
Z2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUNsaWVudEltcGw+KHNlbGYs
IHdlYlZpZXcpOworICAgIF9wYWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAKICAgICBy
ZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQ
b29sIGNvbmZpZ3VyYXRpb246V1RGTW92ZShjb25maWd1cmF0aW9uKV07CkBAIC01NDEsNyArNTQx
LDcgQEAgLSAodm9pZClfd2ViVmlld0Rlc3Ryb3llZAogCiAtIChzdGQ6OnVuaXF1ZV9wdHI8V2Vi
S2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTooV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHkmKXByb2Nlc3MKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5PigqX3BhZ2UsIHByb2Nlc3MpOwogfQogCiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KaW5kZXggOWUxNmNjYmZkNmIyMDFjYjU5ZjczODdhYmFmZjgxOGI1NTYwNjk3
Mi4uZDNlZGEzNjljMDM3MWMxZjJjMTNhMWQwNTk5MTVkYjZkZDVlOTJiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCkBAIC04MDYsNyArODA2LDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgCiAg
ICAgX2FjdGlvblNoZWV0QXNzaXN0YW50ID0gYWRvcHROUyhbW1dLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7CiAgICAgW19hY3Rpb25TaGVldEFzc2lzdGFu
dCBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyPihz
ZWxmKTsKKyAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2Vi
S2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyPihzZWxmKTsKICAgICBfaXNFeHBlY3Rp
bmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0gTk87CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3Mg
PSBOTzsKICAgICBfaXNEb3VibGVUYXBQZW5kaW5nID0gTk87CkBAIC04MjEsNyArODIxLDcgQEAg
LSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAjZW5kaWYKIAogI2lmIEVOQUJMRShQTEFURk9STV9E
UklWRU5fVEVYVF9DSEVDS0lORykKLSAgICBfdGV4dENoZWNraW5nQ29udHJvbGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyPigqX3BhZ2UpOworICAg
IF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2lu
Z0NvbnRyb2xsZXI+KCpfcGFnZSk7CiAjZW5kaWYKIAogICAgIF9oYXNTZXRVcEludGVyYWN0aW9u
cyA9IFlFUzsKQEAgLTExOTYsNyArMTE5Niw3IEBAIC0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25k
ZXJGb3JXZWJWaWV3CiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlmICghX2lucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyKQotICAgICAgICBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOworICAgICAg
ICBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXI+KHNlbGYpOwogCiAgICAgQk9PTCBkaWRCZWNvbWVGaXJzdFJlc3BvbmRl
cjsKICAgICB7CkBAIC01MzExLDcgKzUzMTEsNyBAQCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6
KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQog
ICAgICAgICAvLyBEZWZlciB2aWV3IHVwZGF0ZXMgdW50aWwgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0
aW9uIHRvIGF2b2lkIGEgbm90aWNlYWJsZSBmbGFzaCB3aGVuIHN3aXRjaGluZyBmb2N1cwogICAg
ICAgICAvLyBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgcmVxdWlyZSB0aGUga2V5Ym9hcmQuCiAgICAg
ICAgIGlmICghaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIpCi0gICAgICAgICAgICBpbnB1dFZpZXdV
cGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVE
ZWZlcnJlcj4oc2VsZik7CisgICAgICAgICAgICBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1h
a2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CiAgICAgICAg
IFtzZWxmIF9lbGVtZW50RGlkQmx1cl07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBiMDI4MjQ4OTIwMDNhMDQ5ODkyOWU3
MDZhNTkwNDU5YTRmODcxYWNkLi5jMDhmOTc4NmYwZWFhYjRhOTc1YmI1NjQ4Yzc0MjdjNTYzNmRi
ZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWxlbWVudERpZEZvY3Vz
KGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mIGluZm9ybWF0aW9uLAogICAgIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKTsKICAgICBpZiAobV9lZGl0b3JTdGF0ZS5pc01p
c3NpbmdQb3N0TGF5b3V0RGF0YSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0
byBlbGltaW5hdGUgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyBhbHRvZ2V0aGVy
LCBpbiBmYXZvciBvZiBvbmx5IGRlZmVycmluZyBhY3Rpb25zIHRoYXQgYXJlIGRlcGVuZGVudCBv
biBwb3N0LWxheW91dCBlZGl0b3Igc3RhdGUgaW5mb3JtYXRpb24uCi0gICAgICAgIG1fZGVmZXJy
ZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnREaWRG
b2N1c0FyZ3VtZW50cz4oRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVz
ZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywg
dXNlckRhdGFPYmplY3QgfSk7CisgICAgICAgIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1
bWVudHMgPSBtYWtlVW5pcXVlPEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cz4oRWxlbWVudERpZEZv
Y3VzQXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlv
dXNOb2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgdXNlckRhdGFPYmplY3QgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVk
KFJlZjxXCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4g
V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgUEtQYXlt
ZW50UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9y
UHJveHksIHBheW1lbnRSZXF1ZXN0KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVu
dFJlcXVlc3QpOwogfQogCiBVSVZpZXdDb250cm9sbGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRD
b29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVs
bHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCmluZGV4
IDhiMTIzYjBhOTdjMDMwZTk0NTBmNWVkNGY4YzE3NGIzMjFiYjQwN2IuLjhmZjhhMGJmNDc1YjNm
N2IyMzYyMjlmNDEyZTNmMzI2NmNmOTU5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdD
b250cm9sbGVyLm1tCkBAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBXS0Z1
bGxTY3JlZW5WaWV3Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlblZpZXdDb250cm9s
bGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDgzNDM0ODg5Y2RjZjI0
OWMxYzI3OTFiZDA3YmZmZmEyMDFjZjQ4N2QuLmE5MTI5NTNlYzkxYzI3MzM2MjY3NjNkYWY5ZGEy
NmIyNDkzM2M2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNs
aWVudEltcGwoTlNWaWV3KiB2aWV3LCBXS1dlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBQYWdlQ2xp
ZW50SW1wbENvY29hKHdlYlZpZXcpCiAgICAgLCBtX3ZpZXcodmlldykKICNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKLSAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKHN0
ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpKQorICAgICwgbV9h
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXI+KCkpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggNDNl
OWY5NjdiYzg5NzdmYmZmOGM4NjY4YTVjY2ExZjM4MjRjMDgwOS4uMzRhNjliYmUwYmIwZDE3NmI1
NTFiYWYyZDdhMzVjMWZhYWMwMzdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTU0LDYg
KzU0LDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIERlZmF1bHRXYXRjaGRvZ1RpbWVy
SW50ZXJ2YWwgPSAxOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCA6IFdlYkNvcmU6OlZpZGVv
RnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICpw
YXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIApAQCAtMTUwLDcgKzE1MSw3IEBAIC0gKGlk
KWluaXRXaXRoV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyB3ZWJWaWV3OihOU1ZpZXcgKil3ZWJW
aWV3IHBhZ2U6KFdlYktpdDo6CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogICAgIF9wYWdlID0g
JnBhZ2U7CiAKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENs
aWVudD4oKTsKKyAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6
OldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4o
KTsKICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5zZXRQYXJlbnQoc2VsZik7CiAKICAgICBb
c2VsZiB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQppbmRleCA2NjAzMTdjMmZiYzc5
YjY4YmI1YjczNDc2YTU4YmVmZWEwOWIwNmQzLi42OWQ5ZDllMmQ0NDQ4NDNkMTUyNzBmNTExN2Y3
NzRjZDIzN2Q1ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tU
ZXh0RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0KQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgVGV4dEZpbmRlckZpbmRDbGllbnQgOiBw
dWJsaWMgQVBJOjpGaW5kTWF0Y2hlc0NsaWVudCwgcHVibGljIEFQSTo6RmluZENsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dEZp
bmRlckZpbmRDbGllbnQoV0tUZXh0RmluZGVyQ2xpZW50ICp0ZXh0RmluZGVyQ2xpZW50KQogICAg
ICAgICA6IG1fdGV4dEZpbmRlckNsaWVudCh0ZXh0RmluZGVyQ2xpZW50KQpAQCAtMTY4LDggKzE2
OSw4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdlYktpdDo6V2ViUGFnZVByb3h5
JilwYWdlIHZpZXc6KE5TVmlldyAqKXZpZXcgdXNlCiAgICAgX3ZpZXcgPSB2aWV3OwogICAgIF91
c2VQbGF0Zm9ybUZpbmRVSSA9IHVzZVBsYXRmb3JtRmluZFVJOwogICAgIAotICAgIF9wYWdlLT5z
ZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZp
bmRDbGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0
RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50
PihzZWxmKSk7CisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRl
eHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHAKaW5kZXggZWQwZDVmZmU5NTg5Zjk1ZTQ0YTA3ZjIyMThlZDgyYzAwZjAxN2Q3ZS4u
ZTc0YWRhYzFlNjVlYmU1Yzk5YjMxZDkwNjdhZTYxMTU4ZjM5ODdmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5j
cHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6ZGlkQ2xv
c2UoQ29ubmVjdGlvbklEKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QoQ29u
bmVjdGlvbklEIGNvbm5lY3Rpb25JRCwgVGFyZ2V0SUQgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJl
KHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlv
bklELCB0YXJnZXRJRCwgJnR5cGVdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlz
LCBjb25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBlKTsKICAgICB9KTsKIAogICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5k
ZXggMWI2ZDljYzU0ZmM2MGI1M2U0NDAyNzFmMjMwOGU3YzBmNDdjODc0Yy4uYTg4MzNmNjI0ODdm
OWE2NzIxMDM5OWVjOWY4ZmY1ZTA5MjcxMmVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlci5jcHAKQEAgLTg0LDExICs4NCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8qIGNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1
cmUocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBbdGhpcywgJnJlcXVlc3RVUkxdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0
VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhp
cyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVx
dWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwg
KnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIAogICAgIC8vIFNldHVwIHRh
cmdldCBwb3N0TWVzc2FnZSBsaXN0ZW5lcgotICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50
PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6
OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIHBhZ2VQcm94eS5wYWdlR3Jv
dXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIo
aGFuZGxlci5nZXQoKSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGh0bWxCdWlsZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAK
aW5kZXggYjY3ZDczYTRkYzQ4OGIzMWZkYzlhNDcyMTk2OTE0MDQyNzQ0ODgyNS4uNWQ1MGFlNTU0
NjgwYTZlOWUzZGEyY2U4NGJlNTY0ZDVjMzIzN2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0
b3JlQmFja2VuZERpcmVjdDJEPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw+
KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFj
a2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9y
KTsKIH0KIAogdm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5k
ZXJUYXJnZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBjZDZmMDhmZjE4YmQ1NWMxNTU0NDYzZDRh
NDBiNTFlNDViMmVhYjlmLi4wMzA3YzRmOWYxNDNmODZkYzYyMDhiNDg0YmU4ZGI0MjJkYzBmNDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdlYlZpZXcm
IHZpZXcpCiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlx
dWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJl
YVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKm1fdmlldy5wYWdl
KCksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiBy
ZWdpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggY2Q1MzUy
ZGY3YWEwNGU2OWQ5YjBmOThlZDAwMWU1YzYzMzJmNzU5My4uNjdlNWU0YjI3YTNhZTgwYWI2Njhm
NmMzNDE3YzBmMGNlNmI3ZjA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgV2ViVmlldzo6cmVnaXN0ZXJXZWJWaWV3V2lu
ZG93Q2xhc3MoKQogfQogCiBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYXJlbnRXaW5kb3cpCi0gICAg
OiBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQor
ICAgIDogbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKIHsK
ICAgICByZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5k
ZXggYjZkNGEwNDIwZDVhNWRiZDY0NjA4M2FmNjc4ODA1MWJmNmNjNDdlMC4uZjJkNjJlYTk3OTBm
ODA3YTY1YjVkM2U1OGY4MGI5N2YwNmFkYmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTEs
NiArNTEsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
cml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKICAg
ICBleHBsaWNpdCBXZWJQYXltZW50Q29vcmRpbmF0b3IoV2ViUGFnZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAK
aW5kZXggNGY4MTBjY2YzOGVjZmEyYzk5ZWNiZGE4OWQwNDFjZWI4ZDIzMzNiOC4uYWFiMzQ1N2Nl
ZDY0YTVhOTEwY2RjNTYyYWNjMDExNTAwZDNjNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsR2FtZXBhZHMoY29u
c3QgVmVjdG9yPEdhbWVwYWREYXRhPiYgZ2FtZXBhZERhCiAgICAgICAgIGlmIChnYW1lcGFkRGF0
YXNbaV0uaXNOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtX2dhbWVw
YWRzW2ldID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YXNbaV0pOwor
ICAgICAgICBtX2dhbWVwYWRzW2ldID0gbWFrZVVuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0
YXNbaV0pOwogICAgICAgICBtX3Jhd0dhbWVwYWRzW2ldID0gbV9nYW1lcGFkc1tpXS5nZXQoKTsK
ICAgICB9CiB9CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1l
cGFkQ29ubmVjdGVkKGNvbnN0IEdhbWVwYWREYXRhJiBnYW1lcGFkRGF0YSkKIAogICAgIEFTU0VS
VCghbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSk7CiAKLSAgICBtX2dhbWVwYWRzW2dh
bWVwYWREYXRhLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFk
RGF0YSk7CisgICAgbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IG1ha2VVbmlxdWU8
V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGEpOwogICAgIG1fcmF3R2FtZXBhZHNbZ2FtZXBhZERhdGEu
aW5kZXgoKV0gPSBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldLmdldCgpOwogCiAgICAg
Zm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCmluZGV4IGZkNjUyM2Q2ZmE3ZDc1OTNkMWI4ZDNiMzJi
YWI0NjNhOTY4ZWFhMjguLjYzM2YyMmZkZmU0MjcyYjM5ZGUyNWVhMGU0YTBhMDRkN2NkZTZjYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBA
IC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xh
c3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCmluZGV4
IDBiYjRmMmI0MjFhM2VjMjI4NzU0ZTYzODI5ZDQxYWJiZTJlMDZmOGQuLmE2YzI4NzE2YWIxNjc4
YWZkZDU3NGM5ZGY5ZmUyODY4NjM0NjMwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV2ViUHJvY2VzczsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNz
IFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlLmNwcAppbmRleCBmM2VjNzIwODdjYTI4ODY3ZjU0ZDlkZjBmNTBkODcxMDJlMDE2
ZmEyLi5jYTg1ZDU4NWRjZjFiNzZlZjBiOGQxMWQ1OWFkNjYwNGFjM2YxODZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVHZXRUeXBlSUQo
KQogCiB2b2lkIFdLQnVuZGxlU2V0Q2xpZW50KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5k
bGVDbGllbnRCYXNlICp3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYp
LT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50
Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnNldENsaWVudCht
YWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAK
IHZvaWQgV0tCdW5kbGVTZXRTZXJ2aWNlV29ya2VyUHJveHlDcmVhdGlvbkNhbGxiYWNrKFdLQnVu
ZGxlUmVmIGJ1bmRsZVJlZiwgdm9pZCAoKmNhbGxiYWNrKSh1aW50NjRfdCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuY3BwCmluZGV4IGYxMmE1YmE3NzRkNmNjNjhkMDg0ZjFmNjAyMWNlYmYzODFh
YTNhNTguLmRjMDc1OGFkNzVhZjM2MWRmYmU4MTZlYjExM2Y0MWM3ZjA5ZDgxY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxl
UGFnZUdldFR5cGVJRCgpCiB2b2lkIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2Uq
IHdrQ2xpZW50KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIFdlYktpdDo6dG9J
bXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tD
bGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVD
b250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdl
UmVmKTsKICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpAQCAtODYsMjIgKzg2LDIyIEBAIHZv
aWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlUGFnZUNvbnRlCiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlKiB3
a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQod2tDbGllbnQgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pigqd2tDbGllbnQpIDogc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkpOworICAgIFdlYktpdDo6dG9JbXBs
KHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVudCA/IG1ha2VV
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkg
OiBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7CiB9CiAK
IHZvaWQgV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwg
V0tCdW5kbGVQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9J
bXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
V2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtl
VW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsK
IH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAg
ICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFJl
c291cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUmVz
b3VyY2VMb2FkQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFn
ZVJlZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHdrQ2xpZW50
KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3Vy
Y2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5
Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRC
YXNlKiB3a0NsaWVudCkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldFBv
bGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUG9saWN5Q2xp
ZQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZVBhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9J
bXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJL
aXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVl
PFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tCdW5kbGVQYWdlU2V0RnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCmluZGV4IGViZDNlZjVmMjkzMDhjMTQxOTNh
MTgxYjdlMWU0YTQyNWZkMjFkZDIuLjY5ZjdhZjIyYjU2NzUwNGQ0ZjMxZjBkN2E3MGI4NzRlMDlm
YTU1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKQEAgLTU0
LDYgKzU0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZU92
ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50QmFzZT4gewogfQogCiBjbGFzcyBQYWdlT3ZlcmxheUNs
aWVudEltcGwgOiBBUEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZT4sIHB1
YmxpYyBXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VPdmVybGF5Q2xpZW50SW1wbChX
S0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZSogY2xpZW50KQogICAgIHsKQEAgLTIxNiw3ICsy
MTcsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VPdmVybGF5R2V0VHlwZUlEKCkKIAogV0tCdW5k
bGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92
ZXJsYXlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4od2tDbGllbnQpOworICAgIGF1dG8g
Y2xpZW50SW1wbCA9IG1ha2VVbmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7
CiAgICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpjcmVhdGUoV1RGTW92
ZShjbGllbnRJbXBsKSkubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFj
L1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQppbmRleCBhY2MzNWEyMWI1OWYxYWEzMWUzMzA1MWE2
NmJjMTMwNTk5NjY5OWQzLi5kNmZmZDFjY2MwNGE5M2E3YTA5ZDJiMzY1NTlhOGYwYzA5NTBmZjE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQpA
QCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBjbGFzcyBQYWdlQmFubmVyQ2xpZW50SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxl
UGFnZUJhbm5lckNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUJhbm5lcjo6Q2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlQmFubmVy
Q2xpZW50SW1wbChXS0J1bmRsZVBhZ2VCYW5uZXJDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpA
QCAtMTAzLDcgKzEwNCw3IEBAIFdLQnVuZGxlUGFnZUJhbm5lclJlZiBXS0J1bmRsZVBhZ2VCYW5u
ZXJDcmVhdGVCYW5uZXJXaXRoQ0FMYXllcihDQUxheWVyICpsYXllciwKICAgICBpZiAod2tDbGll
bnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXV0byBj
bGllbnRJbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VCYW5uZXJDbGllbnRJbXBs
Pih3a0NsaWVudCk7CisgICAgYXV0byBjbGllbnRJbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBh
Z2VCYW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7CiAgICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6
OlBhZ2VCYW5uZXI6OmNyZWF0ZShsYXllciwgaGVpZ2h0LCBjbGllbnRJbXBsLnJlbGVhc2UoKSku
bGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hl
LmNwcAppbmRleCA0MjEwMWY4YzgyY2IyYTU0ODNiYWU0ZGM4NDgwN2I0MTY1YTkyZDg2Li4wOTVm
MzZmZmM2M2Y5NWI0NzU1ODFmNWI4ZWQ1ZTkzZjQyNzM4YjJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgRE9N
T2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyJiBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVP
YnNlcnZlcihXZWJDbwogewogICAgIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlck1hcDo6QWRk
UmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcnMoKS5hZGQoJmZyYW1l
LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTU9iamVjdENhY2hlRnJhbWVPYnNl
cnZlcj4oZnJhbWUpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXI+KGZyYW1lKTsKICAgICByZXR1cm4gKnJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBjbGFzcyBET01PYmpl
Y3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZQogICAgICAgICBpZiAoZG9tV2luZG93ICYmICghbV9kb21XaW5kb3dPYnNlcnZl
ciB8fCBtX2RvbVdpbmRvd09ic2VydmVyLT53aW5kb3coKSAhPSBkb21XaW5kb3cpKSB7CiAgICAg
ICAgICAgICAvLyBOZXcgRE9NV2luZG93LCBjbGVhciB0aGUgY2FjaGUgYW5kIGNyZWF0ZSBhIG5l
dyBET01XaW5kb3dPYnNlcnZlci4KICAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgICAgICBt
X2RvbVdpbmRvd09ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4o
KmRvbVdpbmRvdywgKnRoaXMpOworICAgICAgICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IG1h
a2VVbmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlzKTsKICAgICAgICAg
fQogCiAgICAgICAgIG1fb2JqZWN0cy5hcHBlbmQoJmRhdGEpOwpAQCAtMjE1LDcgKzIxNSw3IEBA
IHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dCh2b2lkKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBw
ZXIpCiB7CiAgICAgRE9NT2JqZWN0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0cygp
LmFkZChvYmplY3RIYW5kbGUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkK
LSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2Jq
ZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBl
cikpOwogfQogCiB2b2lkIERPTU9iamVjdENhY2hlOjpwdXQoV2ViQ29yZTo6Tm9kZSogb2JqZWN0
SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgRE9NT2JqZWN0
Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCiAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihH
X09CSkVDVCh3cmFwcGVyKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CiAgICAgaWYgKFdlYkNv
cmU6OkZyYW1lKiBmcmFtZSA9IG9iamVjdEhhbmRsZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAg
ICAgICBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcigqZnJhbWUpLmFkZE9i
amVjdENhY2hlRGF0YSgqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0
ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggNGNjZWM2MmVmMGUx
MTMxZmExM2Y3ZmIwNjBjODBlMDdlZTQyNTFhZi4uNGQ3NDJlNDA5YmJmYzdjZmFiNDA4Y2Q2NTM4
YWVmOWYyMjhmZDcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNp
b25NYW5hZ2VyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViS2l0RXh0ZW5zaW9uTWFu
YWdlcjo6aW5pdGlhbGl6ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBBUEk6Ok9iamVjdCogdXNl
CiAgICAgc2Nhbk1vZHVsZXMod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgbW9kdWxlUGF0aHMpOwog
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgewot
ICAgICAgICBhdXRvIG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtb2R1bGVQYXRo
c1tpXSk7CisgICAgICAgIGF1dG8gbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KG1vZHVsZVBh
dGhzW2ldKTsKICAgICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbihtb2R1bGUuZ2V0KCksIHVz
ZXJEYXRhLmdldCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKaW5k
ZXggMDQwNzJlYjg2NGRiZTM1ZjgwZGZjODZhZDBlODgzYzNlOTljZTQ0Zi4uY2NiNTFlMGQ5NjQw
YzY2Zjg1OTZlNDc0MTcxNDA1OGU5MTM5NzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYkVkaXRvci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRX
ZWJFZGl0b3JDcmVhdGUoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIHsKICAgICBXZWJLaXRXZWJF
ZGl0b3IqIGVkaXRvciA9IFdFQktJVF9XRUJfRURJVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfRURJVE9SLCBudWxscHRyKSk7CiAgICAgZWRpdG9yLT5wcml2LT53ZWJQYWdlID0gd2Vi
UGFnZTsKLSAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+c2V0SW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50PihlZGl0b3Ip
KTsKKyAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+c2V0SW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQobWFrZVVuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50PihlZGl0b3IpKTsKICAgICBy
ZXR1cm4gZWRpdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNp
b24uY3BwCmluZGV4IDRhMjNiZjU2MDEwN2MzMWYxYTRkZTJjOTYxMjk5YTcwMTA4MTc1MDEuLmUz
MDZlM2ZlZjI2MzFkNTQ2NjU1NzExNmU1ZTQ4N2QzNzFjNzg1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRl
bnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgY2xhc3Mg
V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6Q2xpZW4KIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9u
Q3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiB7CiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9u
KiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX0VYVEVOU0lPTiwgTlVMTCkpOwotICAgIGJ1bmRsZS0+c2V0Q2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4dGVuc2lvbikpOwor
ICAgIGJ1bmRsZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KGV4dGVuc2lvbikpOwogICAgIHJldHVybiBleHRlbnNpb247CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCBjZmM1MDMxZWQ2ZTRhMjk1NGZlMDJh
MDNkYTg3YTE2MWNkMmQzMDgyLi42ZGIyOTlmNDcxMTJhMTQ0NWY3ZTY4MzM0NzJkM2RiOGQ3ZDdi
OWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC0xMjgsNyArMTI4
LDcgQEAgc3RhdGljIFdlYktpdEZyYW1lKiB3ZWJraXRGcmFtZUdldE9yQ3JlYXRlKFdlYkZyYW1l
KiB3ZWJGcmFtZSkKICAgICBpZiAod3JhcHBlclB0cikKICAgICAgICAgcmV0dXJuIHdyYXBwZXJQ
dHItPndlYmtpdEZyYW1lKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFw
cGVyPiB3cmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJG
cmFtZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEZyYW1lV3JhcHBlcj4gd3JhcHBlciA9
IG1ha2VVbmlxdWU8V2ViS2l0RnJhbWVXcmFwcGVyPigqd2ViRnJhbWUpOwogICAgIHdyYXBwZXJQ
dHIgPSB3cmFwcGVyLmdldCgpOwogICAgIHdlYkZyYW1lTWFwKCkuc2V0KHdlYkZyYW1lLCBXVEZN
b3ZlKHdyYXBwZXIpKTsKICAgICByZXR1cm4gd3JhcHBlclB0ci0+d2Via2l0RnJhbWUoKTsKQEAg
LTY3OCwxMSArNjc4LDExIEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2Vi
UGFnZSogd2ViUGFnZSkKICAgICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdF
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfUEFHRSwgTlVMTCkpOwogICAgIHBhZ2UtPnBy
aXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwogCi0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVS
ZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlUmVzb3VyY2VMb2FkQ2xpZW50
PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxvYWRlckNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2Ut
PnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdl
Q29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVVJQ2xpZW50PihwYWdlKSk7Ci0gICAgd2Vi
UGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUZv
cm1DbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNl
TG9hZENsaWVudChtYWtlVW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBhZ2UpKTsKKyAg
ICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxQ
YWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVD
b250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb250ZXh0TWVudUNsaWVudD4ocGFnZSkp
OworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQobWFrZVVuaXF1ZTxQYWdl
VUlDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQobWFrZVVuaXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOwogCiAgICAgcmV0dXJuIHBhZ2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDgxMDU1Y2U3
ZmRlYmEzMThkYWIwNjgyNjM0YzZiZDg0YTM3ZmFlOGMuLjA4NGYzMDA1ZDYxMDNkNGUyNTAzM2My
NTZjNzBjMGUwNjQwNDFjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9y
Lm1tCkBAIC00NSw3ICs0NSw3IEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KFdLRE9NUmFuZ2UgKily
YW5nZQogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF90ZXh0SXRl
cmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oV2ViS2l0Ojp0
b1dlYkNvcmVSYW5nZShyYW5nZSkpOworICAgIF90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdl
YkNvcmU6OlRleHRJdGVyYXRvcj4oV2ViS2l0Ojp0b1dlYkNvcmVSYW5nZShyYW5nZSkpOwogICAg
IHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXgg
NDg4MDBiYjMxNzkwNjVlNGU3MzI5MzA2OTA1NDY4MGU0MzRhZjFmZi4uNDIwMjM5NmFiYWZhZjMw
ZDcxODlhZWI2ODUwOWVhMjcxNzFiOTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ci5tbQpAQCAtNTQ0LDcgKzU0NCw3IEBAIC0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0ZTooaWQgPFdL
V2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGU+KWZvcm1EZWxlZ2F0CiAgICAgfTsK
IAogICAgIGlmIChmb3JtRGVsZWdhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CisgICAgICAg
IF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50
PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KG51bGxwdHIpOwogfQpAQCAtNjczLDcgKzY3Myw3IEBAIC0gKHZvaWQpX3NldEVkaXRp
bmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGlu
Z0RlbGVnCiAgICAgfTsKIAogICAgIGlmIChlZGl0aW5nRGVsZWdhdGUpCi0gICAgICAgIF9wYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENsaWVudD4o
c2VsZikpOworICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQobWFr
ZVVuaXF1ZTxDbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmlu
ZGV4IDIwY2U1NTkxMWQ3MDY1MWMzMzVhNzBhY2YyNGU1YmRmYzIxYmQ2MzEuLjk5NzlkNjM4NGRm
ZjVjOTgwNTkxZjI5MDgzYzkzNzI5NjM0NGE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIFJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNy
ZWF0ZShXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiBJbmplY3RlZEJ1bmRsZTo6
SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKICAgICA6IG1fcGF0aChwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCkKICAgICAs
IG1fcGxhdGZvcm1CdW5kbGUoMCkKLSAgICAsIG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpKQorICAgICwgbV9jbGllbnQobWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCiB7CiB9CiAKQEAgLTExNCw3ICsxMTQsNyBA
QCBJbmplY3RlZEJ1bmRsZTo6fkluamVjdGVkQnVuZGxlKCkKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PiYm
IGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9jbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKTsKKyAgICAgICAgbV9jbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5oCmluZGV4IDBjYTVlYTZkMmFiZTU3MjE1NGQyMWJlZDBjYzlhMDUzZTdkNjZj
MTguLmJmYjNkMDQ1MTQzNzM2YzMxZGY5ODhhYjFiMDBkZTQyYjg1MzA4OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyIDog
cHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKTsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKFdlYlByb2Nl
c3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApp
bmRleCBkN2M1YzY4MzQ0YjcyNzM4ZDk0OTdkZjAxMmNhMzc2YmI4NDE4OGRhLi5iMGJkNTM0Y2Ux
OWQ3Mzg2MWQ4MTc2YTgyMDVjZGNlNjE5NWZkMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcj4sIHByaXZhdGUgV2ViQ29yZTo6TWVkaWFDYW5TdGFydExpc3RlbmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogICAgIH5Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDczMzUyNzY1ODcx
ZDgyNTVhMjNkYjdiNTVlNmQ0NGVlNzMzOTIyZDcuLjJlNTdhZjI0ODNiZDM2YjNkZDg1ZTRlYzE4
ZGRlMTBmNDQzNmU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMzIsMzggKzEzMiwxMSBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRNZXNzYWdlKFQmJiBtZXNz
YWdlLCBzaXplX3QgYnl0ZQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLVdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17
Ci0gICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOwotICAgIGlmICgh
aW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFNlbmRG
YWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2Vu
ZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgbWVz
c2FnZSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2Vz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdlKSk7Ci0KLSAg
ICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KLVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlEYXRh
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQotewotICAgIGlmICgh
aW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFNlbmRG
YWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2Vu
ZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6
RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRh
dGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7Ci0gICAgZWxz
ZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nTWVzc2FnZT4oYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwotCi0gICAg
cmV0dXJuIFNlbmRTdWNjZXNzOwotfQotCiBjbGFzcyBCbG9iTG9hZGVyIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEJsb2JMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3Vt
ZW50LCBXZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9sb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNB
cnJheUJ1ZmZlciwgdGhpcykpCisgICAgICAgIDogbV9sb2FkZXIobWFrZVVuaXF1ZTxXZWJDb3Jl
OjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJh
eUJ1ZmZlciwgdGhpcykpCiAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKICAgICB7CiAgICAgICAgIG1fbG9hZGVyLT5zdGFydChkb2N1bWVu
dCwgYmxvYik7CkBAIC0yMjYsNyArMTk5LDcgQEAgY2xhc3MgUGVuZGluZ01lc3NhZ2UgewogCiAg
ICAgUGVuZGluZ01lc3NhZ2UoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJDb3JlOjpC
bG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIDogbV90eXBlKFR5cGU6OkJsb2IpCi0gICAgICAgICwgbV9ibG9iTG9hZGVyKHN0
ZDo6bWFrZV91bmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJsb2IsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKSkKKyAgICAgICAgLCBtX2Jsb2JMb2FkZXIobWFrZVVuaXF1ZTxCbG9iTG9h
ZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKQogICAgIHsK
ICAgICB9CiAKQEAgLTI0NCwxMyArMjE3LDQwIEBAIGNsYXNzIFBlbmRpbmdNZXNzYWdlIHsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogfTsKIAorV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJbkJ5dGVz
KCk7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAgICAg
ICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgp
KQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNl
bmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1lc3NhZ2Up
KTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKworV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJp
bmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCit7Cisg
ICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAgICAgICByZXR1
cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQorICAg
ICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRh
IHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFy
eURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsK
KyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBl
bmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CisKKyAg
ICByZXR1cm4gU2VuZFN1Y2Nlc3M7Cit9CisKIFdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChXZWJDb3JlOjpCbG9iJiBibG9iKQogewogICAgIC8vIEF2
b2lkIHRoZSBCbG9iIHF1ZXVlIGFuZCBsb2FkaW5nIGZvciBlbXB0eSBibG9icy4KICAgICBpZiAo
IWJsb2Iuc2l6ZSgpKQogICAgICAgICByZXR1cm4gc2VuZChKU0M6OkFycmF5QnVmZmVyOjpjcmVh
dGUoYmxvYi5zaXplKCksIDEpLCAwLCAwKTsKIAotICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9i
LCBbdGhpc10geworICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRp
bmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9iLCBbdGhpc10gewogICAgICAgICB3aGls
ZSAoIW1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0byYgbWVz
c2FnZSA9IG1fcGVuZGluZ01lc3NhZ2VzLmZpcnN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwCmluZGV4IGFmZTI0MDg4NGMzY2JhYWE2YWQyMzhiYmUyM2Y5NTkzMTU5MTkyMWQuLmU0ZTdl
M2Y3YzA0NDM3ZjZkMGM3ODU0YWI4OWQ5MWVmNTNmNjZkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJy
dGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHByaXZhdGU6CiAgICAgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlKiBDcmVhdGUoKSBmaW5h
bAogICAgIHsKQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQXN5bmNSZXNvbHZlckZhY3RvcnkgOiBw
dWJsaWMgd2VicnRjOjpBc3luY1Jlc29sdmVyRmFjdG9yeSB7CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3Jl
YXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZl
ciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNv
bmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpj
cmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGli
V2ViUlRDTmV0d29yaygpLm1vbml0b3IoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2Vi
UlRDTmV0d29yaygpLnNvY2tldEZhY3RvcnkoKSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc3Rk
OjptYWtlX3VuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKSwgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLnNvY2tldEZhY3RvcnkoKSwgV1RG
TW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7
CiB9CiAKIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0
aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCmluZGV4IDVkNjM4M2Y2YjUwNjUzYjVjNjcwNzA3
MDVjNmMxMDI4NzBmYTAyMzEuLjM5OTA2OTlkMDc3OGZlYjE3YjBjYThlNjA3ODE0MTA4YTVjMDBh
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgTGliV2ViUlRDU29ja2V0RmFjdG9yeTsKIAogY2xhc3MgTGliV2ViUlRD
UmVzb2x2ZXIgZmluYWwgOiBwdWJsaWMgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENSZXNvbHZl
cih1aW50NjRfdCBpZGVudGlmaWVyKSA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1NvY2tldEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCmluZGV4IGQ3NzhkNTc3ZWE4ZWZjMWIz
NTZkZjFkN2MwMTdlY2RmMzE4ODEwNmEuLjdmZWYzYjZiOGVjN2JlNDY2NjMyODBjYTk3MzhiOTkx
M2NlODEwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgc3RhdGljIGlubGluZSBydGM6OlNvY2tldEFkZHJlc3MgcHJlcGFyZVNvY2tldEFk
ZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0
KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoY29uc3QgcnRj
OjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQ
b3J0LCBpbnQgb3B0aW9ucykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldl
YlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyVENQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3Mo
KSk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMs
ICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZl
clRDUCwgYWRkcmVzcywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQo
c29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhy
ZWFkKFtpZGVudGlmaWVyID0gc29ja2V0LT5pZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJl
U29ja2V0QWRkcmVzcyhhZGRyZXNzLCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyks
IG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnNdKCkgewpAQCAtNjYsNyArNjYsNyBAQCBydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVTZXJ2ZXJUY3BT
b2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5OjpDcmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRy
ZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KQogewotICAgIGF1dG8gc29j
a2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVl
U29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0
Yzo6U29ja2V0QWRkcmVzcygpKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2Vi
UlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1Nv
Y2tldDo6VHlwZTo6VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9z
b2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNh
bGxPbk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVz
cyA9IHByZXBhcmVTb2NrZXRBZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENv
bm5lY3Rpb25zKSwgbWluUG9ydCwgbWF4UG9ydF0oKSB7CkBAIC04MCw3ICs4MCw3IEBAIHJ0Yzo6
QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVVkcFNvY2tl
dChjb25zdCBydGM6OlNvY2tlCiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1Nv
Y2tldEZhY3Rvcnk6OkNyZWF0ZUNsaWVudFRjcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJl
c3MmIGxvY2FsQWRkcmVzcywgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNz
LCBjb25zdCBydGM6OlByb3h5SW5mbyYsIGNvbnN0IHN0ZDo6c3RyaW5nJiwgaW50IG9wdGlvbnMp
CiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4o
KnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6
OkNsaWVudFRDUCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tl
dCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElk
ZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6Q2xpZW50VENQLCBsb2NhbEFkZHJlc3Ms
IHJlbW90ZUFkZHJlc3MpOwogICAgIHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpT
VEFURV9DT05ORUNUSU5HKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigp
LCBzb2NrZXQuZ2V0KCkpOwogCkBAIC05Niw3ICs5Niw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2Nr
ZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZUNsaWVudFRjcFNvY2tldChjb25zdCBy
dGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNy
ZWF0ZU5ld0Nvbm5lY3Rpb25Tb2NrZXQoTGliV2ViUlRDU29ja2V0JiBzZXJ2ZXJTb2NrZXQsIHVp
bnQ2NF90IG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyLCBjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmIHJlbW90ZUFkZHJlc3MpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBM
aWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5s
b2NhbEFkZHJlc3MoKSwgcmVtb3RlQWRkcmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5p
cXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBM
aWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5s
b2NhbEFkZHJlc3MoKSwgcmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJX
ZWJSVENTb2NrZXQ6OlNUQVRFX0NPTk5FQ1RFRCk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQt
PmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQg
TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6ZGV0YWNoKExpYldlYlJUQ1NvY2tldCYgc29ja2V0KQog
CiBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNy
ZWF0ZUFzeW5jUmVzb2x2ZXIoKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPExpYldlYlJUQ1Jlc29sdmVyPigrK3NfdW5pcXVlUmVzb2x2ZXJJZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHJlc29sdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytzX3VuaXF1
ZVJlc29sdmVySWRlbnRpZmllcik7CiAgICAgYXV0byogcmVzb2x2ZXJQb2ludGVyID0gcmVzb2x2
ZXIuZ2V0KCk7CiAgICAgbV9yZXNvbHZlcnMuc2V0KHJlc29sdmVyUG9pbnRlci0+aWRlbnRpZmll
cigpLCBXVEZNb3ZlKHJlc29sdmVyKSk7CiAgICAgcmV0dXJuIHJlc29sdmVyUG9pbnRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAyZDFlODQyNDdiZDBhMzBjOTRkMWYyZWEz
MDFkZDU1ZDAyYTZlMDc2Li5iMjcxM2Y0NmMxZmMxM2M5ZjI3YmJlMzljYTVkYzUxODUwYjE4M2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwCmluZGV4IDE2YTFhN2Y4MzQ0NjA1M2YzM2Q2NTRlODMzMzIyOTUwZWU5OTRk
NzIuLmQ3M2YxZjE2Zjg5MDc2OWM3MmNjOWRkNDQwZDIyOTIxZmY1ZmZhOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3Nl
ckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgUGx1Z2lu
RGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgewogICAgIGV4cGxpY2l0IFBsdWdpbkRlc3RydWN0aW9uUHJv
dGVjdG9yKE5ldHNjYXBlUGx1Z2luKiBwbHVnaW4pCiAgICAgewogICAgICAgICBpZiAocGx1Z2lu
KQotICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNvbnRy
b2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihw
bHVnaW4pLT5jb250cm9sbGVyKCkpOworICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBtYWtlVW5p
cXVlPFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNf
Y2FzdDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpOwogICAgIH0KICAgICAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjlhM2M5M2YxMzI2ZmE0YzZmN2ZlYmY4
YWIxYjJjYTRjNzc2YmMwZS4uNTlmNDgyNTFmMjg4NTRjNmQxNjgwYjFkNjRkZmFhNWE0N2M2ODEw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIHVpbnQzMl90
IE5ldHNjYXBlUGx1Z2luOjpzY2hlZHVsZVRpbWVyKHVuc2lnbmVkIGludGVydmFsLCBib29sIHJl
cGVhdCwgdm9pZCAoKnRpCiAgICAgLy8gRklYTUU6IEhhbmRsZSB3cmFwcGluZyBhcm91bmQuCiAg
ICAgdW5zaWduZWQgdGltZXJJRCA9ICsrbV9uZXh0VGltZXJJRDsKIAotICAgIGF1dG8gdGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0
LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPih0aGlzLCB0
aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogICAgIAogICAgIC8vIEZJWE1F
OiBCYXNlZCBvbiB0aGUgcGx1Zy1pbiB2aXNpYmlsaXR5LCBmaWd1cmUgb3V0IGlmIHdlIHNob3Vs
ZCB0aHJvdHRsZSB0aGUgdGltZXIsIG9yIGlmIHdlIHNob3VsZCBzdGFydCBpdCBhdCBhbGwuCiAg
ICAgdGltZXItPnN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBlMGFiYzJjN2I0MTI5
OTMwMDJiYmFiOGJkZmFiN2YyNjUxYWRjNTdmLi5iNmM3NmI2ZWQ3MTRjYWFhM2E0MWRkZTQxYzFk
NmExMDRmYjdhZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTMwOCw2ICszMDgsNyBAQCBj
bGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4gewogICAgIFZlY3Rvcjxib29sLCA4
PiBtX3BvcHVwRW5hYmxlZFN0YXRlczsKIAogICAgIGNsYXNzIFRpbWVyIHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbWVy
KTsKIAogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRl
eCAwNDk2MjhmNWM2MjcwMmU0ZDVkNDExMTgyMDEyM2JhNWY0Yjk2NTI0Li5iZGFhMTQ0Nzg0MjI2
OTVkNTBlYTg0OGFhZmNjYmNlMTJkMmFkOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6
ZGVsaXZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAobV90
cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlE
YXRhKQotICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjx1aW50OF90Pj4oKTsKKyAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8dWludDhfdD4+KCk7CiAKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2VydmVDYXBh
Y2l0eShtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpICsgbGVuZ3RoKTsKICAgICAgICAgbV9kZWxpdmVy
eURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwCmluZGV4IDQ0ZDExYjU3YzNlYTZkNTE4YzE4ZDA0YjgyMmQyODZkNTNlOTY4Y2Yu
LjA3ZDU1NmMzYjdmYzYzNzE5YzJhMjU1OWUwYWFkNmMyMjZjMDdjYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
blgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMTM2LDEwICsxMzYsMTAgQEAgc3RkOjp1bmlx
dWVfcHRyPE5ldHNjYXBlUGx1Z2luWDExPiBOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKE5ldHNj
YXBlUGx1Z2luJiBwbHUKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAocGx1Z2luLmlzV2lu
ZG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5Y
MTE+KHBsdWdpbiwgZGlzcGxheSwgd2luZG93SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4s
IGRpc3BsYXkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVn
aW4sIGRpc3BsYXkpOwogfQogCiBOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEo
TmV0c2NhcGVQbHVnaW4mIHBsdWdpbiwgRGlzcGxheSogZGlzcGxheSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCBhMWY4
MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2YjM1Li5iNTcyYWEzYTUzNmQ0ODVjYjli
ODE3YTE2ZTAyYzMzMmM0YmMyMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0xNTksNiArMTU5LDcgQEAgY2xhc3Mg
UGx1Z2luQ29udHJvbGxlciB7CiAKICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRlbGF5aW5nIGRl
c3RydWN0aW9uIG9mIGEgcGx1Zy1pbi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3Rl
Y3RvciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAg
ICAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoUGx1Z2luQ29udHJvbGxl
ciogcGx1Z2luQ29udHJvbGxlcikKICAgICAgICAgICAgIDogbV9wbHVnaW5Db250cm9sbGVyKHBs
dWdpbkNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHAKaW5kZXggZjM3YzJjYzI0ZTNkZDk3NjNmM2ViZGQ2MzJkOGJmZGI3NzE0
NDM0Ny4uOWFiNTgzNzMwYjg5ZGJkOTYwMWQ2NTIwZWY4ZjliMGJlMDA2ZGM1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtOTUs
NyArOTUsNyBAQCBib29sIFBsdWdpblByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiAgICAgbV9jb25uZWN0aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlzKTsKIAog
ICAgIC8vIEFzayB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4uCi0gICAg
bV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzID0gbWFrZVVuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7CiAKICAgICBt
X3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPnBsdWdpbkluc3RhbmNlSUQgPSBtX3Bs
dWdpbkluc3RhbmNlSUQ7CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT53
aW5kb3dOUE9iamVjdElEID0gd2luZG93TlBPYmplY3RJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA3YWI4OTY2ZGI5MDVhZGQx
MjM5NDgxNjUwYjE5ZGU0YTdlN2QyMjNmLi4xMTlkMmI5MGMyYjQ0MjMxZjI1Njk1N2U2MmRkY2E4
ZjEzMGZjNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcApAQCAtODk4LDcgKzg5OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJFdmVudD4g
UGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAg
aWYgKGV2ZW50Lm1ldGFLZXkoKSkKICAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJFdmVudDo6TW9k
aWZpZXI6Ok1ldGFLZXkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTW91c2VF
dmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5idXR0b25zKCksIG1fcGx1Z2luLT5jb252ZXJ0VG9S
b290VmlldyhJbnRQb2ludChldmVudC5vZmZzZXRYKCksIGV2ZW50Lm9mZnNldFkoKSkpLCBldmVu
dC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxU
aW1lIHsgfSwgMCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwg
YnV0dG9uLCBldmVudC5idXR0b25zKCksIG1fcGx1Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQ
b2ludChldmVudC5vZmZzZXRYKCksIGV2ZW50Lm9mZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2Nh
dGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7
CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6aGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZmYzA5YzRmNjViMjQ1YjYwYmY0ZDRm
NTk3YTlmOTBhZDRkMGFhZjkuLmExZmYwMzNiMjA0ZWFmYWRjODg4YTgyMDhhODlmNzlkYTAwYmNm
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTE1Myw3ICsxNTMs
NyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdv
cmtlcihjb25zdCBTZXJ2aWNlV29ya2VyQ29udAogCiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9k
IHNob3VsZCBiZSBtb3ZlZCBkaXJlY3RseSB0byBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpD
b25uZWN0aW9uCiAgICAgLy8gSWYgaXQgd2VyZW4ndCBmb3IgU2VydmljZVdvcmtlckZyYW1lTG9h
ZGVyQ2xpZW50J3MgZGVwZW5kZW5jZSBvbiBXZWJEb2N1bWVudExvYWRlciwgdGhpcyBjb3VsZCBh
bHJlYWR5IGhhcHBlbi4KLSAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQsIG1f
cGFnZUlELCArK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQsIGVmZmVjdGl2ZVVzZXJBZ2VudCk7
CisgICAgYXV0byBmcmFtZUxvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50PigqdGhpcywgc2Vzc2lvbklELCBtX3BhZ2VJRCwgKyttX3ByZXZpb3Vz
U2VydmljZVdvcmtlcklELCBlZmZlY3RpdmVVc2VyQWdlbnQpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IGZyYW1lTG9hZGVyQ2xpZW50LmdldCgpOwog
ICAgIG1fbG9hZGVycy5hZGQoV1RGTW92ZShmcmFtZUxvYWRlckNsaWVudCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKaW5k
ZXggOTIwZGVkMDQwY2U1NjE4MzM5OWY2YzkzYjgyZWIzNmRmNzMwNDk2YS4uOTMwZTQ2MTgxOWUx
ODZmNWE4MGQ4ZjY3MTZmYjExOGM0ZGMwZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaApAQCAtMzcsNiArMzcsNyBAQCBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YlNXT3JpZ2luVGFibGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFdlYlNXT3JpZ2luVGFibGUoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaAppbmRleCA0ZGY2ZjAxOWU1NTg1NzU1MmM4NGRmYWI5MjUwYzQwMWE4NGNi
ODM1Li5mNGNmMjkxYTQwMTBiMWU3YzI0MTY3ZDQ1NGI1NGVjNGI4NjRjNGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggM2M4NzJmNWFkZjM5YmVhY2QzYTcwNjY3YjI2
ODlkMzhjOWIxMTEyZS4uNGQyNzQ3Njg2MjBlNWE0NmViOTUwOGZkZTQ3YjU3MWU3OTZmMTcxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc5Myw3ICs3OTMsNyBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdp
biYgb3JpZ2luLAogCiBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQmIGNsaWVudCwgY29uc3Qg
Q29sb3ImIGluaXRpYWxDb2xvcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b2xvckNob29zZXI+KCZtX3BhZ2UsICZjbGllbnQsIGluaXRpYWxDb2xvcik7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViQ29sb3JDaG9vc2VyPigmbV9wYWdlLCAmY2xpZW50LCBpbml0aWFsQ29s
b3IpOwogfQogCiAjZW5kaWYKQEAgLTgwMiw3ICs4MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29s
b3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29z
ZXJDbAogCiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rp
b25zQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyPigmbV9wYWdlLCAmY2xpZW50KTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBjZWQzNmE2YzI1YjdlNGY4MzQ0YTU4
OTk0MDA2NzkxZjdjYzkyNzZmLi5kNDU1NmQ5ODdhMzY2ZDE4MTE0MDhhZDkwYmY3YTM0N2RkNTk4
ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFdlYkZyYW1l
OwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuaAppbmRleCA2YzI5YjRlMDgxMjZlN2NkNjY3OWNjNDcwMjM1YzU1NzRkZTUwZDJl
Li5jMWM4OWNkOTllODdhZWU4NGVkNTc0NmMyZTgxZjY0N2U4MmYxZmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNv
cmU6OkNvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVudChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6
IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggMWFkNGMzZGUyY2I3ZDM4ZTYyNjJjMTk3
YWFiMjRjY2E2ZmVkYTgyMS4uYjI0ZWNmNzZjNDU1MjRmNjBkODZhZWQ2ZmIxZWNmNmYwZjM5NDIx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpE
cmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBX
ZWJEcmFnQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggMjY4MTAyZmVhMWE3NzU3ZWQ3ZTE2ZGRlY2NlM2NhZDhlZTZiZDQz
NS4uZDIyZDRjYjczZjI5NzNmNTY1NWE4NzNlYmQyMmQ2YjAwNmFlMGYzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBh
Z2U7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0
b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CmluZGV4IDMwZjVhZDZiNGJjMmE2MzhkNjAzN2Y4ZWM5NzM4MDlkZjZlNTZiMTguLjM1YTMxZmMy
YTM0NGIzMTI4NzMwNTA0YjdmZTdhMTE1ZjAxMWI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9j
YXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDdjZGFhY2QxZmMxZDQ2ZDY1ZWFk
YzNmM2E2MTM0YWEzNTU4YTJkMTEuLmQ2N2I2MmMwMmU2ODgzYjQ0ODY1ZmJhMTU4NTE2ZWEwY2Jj
YjVjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgIH0KIAogICAgIGlmICghbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50KQotICAg
ICAgICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGFp
bnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRoaXMpOworICAgICAgICBtX3BhaW50SW5kaWNhdG9y
TGF5ZXJDbGllbnQgPSBtYWtlVW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRo
aXMpOwogCiAgICAgYXV0byBwYWludExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG1fcGFn
ZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1fcGFpbnRJbmRpY2F0
b3JMYXllckNsaWVudCk7CiAgICAgCkBAIC0xNjIsOSArMTYyLDkgQEAgdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHBhaW50
TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAwLjJmKSk7
CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmYWRlS2V5ZnJhbWVzKEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5KTsKLSAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0
QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKKyAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChtYWtlVW5p
cXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKIAotICAgIGZhZGVLZXlmcmFtZXMuaW5z
ZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMC4yNSwgMCkpOworICAg
IGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMC4y
NSwgMCkpOwogICAgIAogICAgIGF1dG8gb3BhY2l0eUFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgb3BhY2l0eUFuaW1hdGlvbi0+c2V0RHVyYXRpb24oMC4yNSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKaW5kZXggZjVlY2M2NGM5MjNmMzg2YzUwZTdiNTI5NzdlZmMwOTllMGJj
ZmFkNi4uMjdjM2VlMTQyZTE2MTZlNDM1ZjQ4ZDQxZjI3MjcxNWZlOGUwMzgyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3Mg
UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwcml2YXRlIFdlYkNvcmU6OlBhZ2VP
dmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogZnJpZW5kIGNs
YXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudDsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0
b3JDbGllbnQoV2ViUGFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIuaAppbmRleCA1MzNiZTg0MGNhZDcxNDU1NWRhZjBhYTIwNzI4YTNjOTMzNTVjOWJlLi40
YmIzN2ZkZDYwNzc3NGVkODA5YTk2N2E3NzUxNWZiYWZiNmVmNmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIDogcHVi
bGljIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXImIHNpbmdsZXRvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5k
ZXggMTYzN2FkMTA5N2Q3NjQ5ZTUwZGY3NGY1ZTA2MjI3MjcxZmFiODQ1YS4uMDBjYzBhMDhkOTI2
MDRmZGRmYjVjYTYyZjZiODg1OTVjMzFhYjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmlj
YXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+V2ViTm90aWZp
Y2F0aW9uQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKaW5kZXgg
NzkwMDg0Y2U0OGQyMjZiMTBlNjY1YjgyODQ0MzQ5ZmRhYWZmZWU0Ni4uNjlmMGFlODI3OTUwN2I3
Mjk2NWY2NWMyMTY4NzNjNDgxYWRmNGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJp
ZGVzLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OmFk
ZE92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cgogICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9vdmVycmlkZXNNYXAuYWRkKHBhc3RlYm9hcmROYW1lLCBudWxscHRy
KTsKIAogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PigpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAg
PSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PigpOwogICAgICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZSh0eXBlTWFwKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnSW5DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbHVnSW5DbGllbnQuaAppbmRleCBmNmUwMTQ5NTdlZGMyNzdkYjk4MzczMTI3ZWMxMDYzZTkz
NTU4Y2I4Li5jZjkwYTVkZmNmZGE2M2VjYjk4OTdjYzY2ZDBkNDgxMjk0NDgxM2M2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdJbkNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgV2ViUGx1Z0luQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlBsdWdJ
bkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViUGx1Z0luQ2xpZW50KFdlYlBhZ2UmKTsKICAgICB2aXJ0dWFsIH5XZWJQbHVnSW5D
bGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaAppbmRleCA1ZGQ2NWJm
YTBkNTBjY2ZkYjE0NjFmZWIzZmU1MjQxZmNhYTBmYmE2Li42M2Q3NzRlNWE5NDI3YzczNWI1MjQ5
MGJkMDFjZDc5YWI3NGExMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5o
CkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlByb2dyZXNz
VHJhY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KFdlYlBhZ2UmKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hTeW50aGVzaXNDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaAppbmRleCBlYWQxN2QzMGYwNTkwZDc0NDY3
MjA1NWNhZDc3ZDk1YzZkMGE0NzcwLi43YmQ4NzU5MDVhNjVjNzdkOTZjM2Y3ODg0MDAxODU4MmNm
YWY3NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCkBAIC0zNiw2ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKICAgICAKIGNsYXNzIFdl
YlNwZWVjaFN5bnRoZXNpc0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXND
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudChXZWJQYWdlJiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlVzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCmluZGV4IDEwOTMwNDUzY2U3OTdlZGQ5MGRlNzZmMDM1
NGI5YTFkNDA2ZjJlNmUuLjY5NTIxNzRiOTEyYzk3MWUzNTc4NmUyN2M0ODIyNWQyZmNhMTQwMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJV
c2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJVc2VyTWVkaWFDbGllbnQoV2ViUGFnZSYpOwogICAgIH5XZWJV
c2VyTWVkaWFDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCA5Y2ZmY2M5YTlm
ZDJiNjQ0NDkyMmY4NTRhZDk3ZDFkMzMxZTcwYjBlLi5iMjQ1ODFjOTdlN2E4ODE2ZjQ2YWY5MzE5
YTkxZWEyMWI3MmJkNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC01NTAsNyArNTUwLDcg
QEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpOwogICAgIH0gZWxzZSB7CiAjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPExheWVyVHJlZUhvc3Q+KG1fd2ViUGFnZSk7CisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdCA9IG1ha2VVbmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQYWdlKTsKICNlbHNlCiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAppbmRleCBj
MDczOTZmMDJmMWZhNjVmNDVhY2VlNzJmMTM0ZjRmYjJkOWU4OTA5Li41MzU4Y2Q2ODYzYjMyMjY5
NThlZTI3NGVmZDAzMmFkMjAwNjRkZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgc3RkOjp1bmlx
dWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5nQXJlYTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2Us
IGNvbnN0IFdlYlBhZ2UKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbjoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+
KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAg
ICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZToKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFt
ZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZUNvb3Jk
aW5hdGVkR3JhcGhpY3M6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwg
cGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCmluZGV4IDBmMjY0MDNlYmI3MGE4MTFiMThl
OTg3OTVlMTlkZTc3NDBiZTgzNjAuLjFhNTM1ZjE3ZDk3ZjY2NjgzOTcyNjlhODZlMjg1N2IyOWI5
NzJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YlBhZ2U7CiAKIGNsYXNzIEZpbmRDb250cm9sbGVyIDogcHJpdmF0ZSBXZWJDb3JlOjpQYWdlT3Zl
cmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShGaW5kQ29udHJvbGxlcik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNDUyZjUzYmNlZGMwMDQ3
ZjczM2QxYzM0YmNkNzY1MTE5MmNiOGJlNi4uNDZlOGFhMDk5ODY0NWE4Y2U1ZDJkN2I5NTdmOTlh
ZmRjMzhmNDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
ZW5zdXJlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZUF0dGFjaGVkKTsKIAogICAgIGlmICghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSkKLSAgICAg
ICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU+KHRoaXMpOworICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
ID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4odGhpcyk7CiAKICAgICB1cGRh
dGVCYWNraW5nU3RvcmUoKTsKIH0KQEAgLTUyMSw3ICs1MjEsNyBAQCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnRyYW5zZm9ybSgpIGNvbnN0CiAKIHZvaWQgUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAgbV9wcm9wZXJ0aWVzLnRyYW5z
Zm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3By
b3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNTMyLDcgKzUzMiw3IEBAIFRyYW5zZm9ybWF0
aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25z
dAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy5zdWJs
YXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZh
bHVlKTsKKyAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0
aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U3VibGF5ZXJUcmFuc2Zvcm1D
aGFuZ2VkKTsKIH0KIApAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewotICAgIG1f
cHJvcGVydGllcy5maWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJPcGVyYXRpb25zPihm
aWx0ZXJzKTsKKyAgICBtX3Byb3BlcnRpZXMuZmlsdGVycyA9IG1ha2VVbmlxdWU8RmlsdGVyT3Bl
cmF0aW9ucz4oZmlsdGVycyk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdl
ZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RmlsdGVyc0NoYW5nZWQpOwogfQogCkBAIC04
MjYsNyArODI2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFNoYXBlUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFIKICAgICBpZiAobV9wcm9wZXJ0
aWVzLnNoYXBlUm91bmRlZFJlY3QgJiYgKm1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID09
IHJvdW5kZWRSZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb3BlcnRpZXMuc2hhcGVS
b3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJl
Y3QpOworICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9h
dFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0
aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U2hhcGVSb3VuZGVkUmVjdENo
YW5nZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCmluZGV4IDFjYmQxYjRiYTc5YTdkZjljZTU1
ZTA0MjFkNDRlNjViNDA4ODIxYzIuLjA5OTUzNmI5M2MwMTFhYzNmMmEwNzNjM2NhNDY0ZjA3MjY0
NjljZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRm
b3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyhMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogUGxhdGZvcm1DQUxheWVyUmVtb3RlKGxheWVyVHlwZSwgb3duZXIsIGNvbnRleHQpCi0g
ICAgLCBtX3RpbGVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHRo
aXMpKQorICAgICwgbV90aWxlQ29udHJvbGxlcihtYWtlVW5pcXVlPFRpbGVDb250cm9sbGVyPih0
aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCmluZGV4IDVlNTBlMGJhMWVmMTI0NmM2YWUwOGYyOWQ5MmE4MzBlMGRi
NGYyMzcuLjQ0NDZmMzRkMDRjY2ZiZmJlYjM2OWJhNDRjMzIwNmJmMGRkMjNlY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAg
LTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdl
LCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogRHJh
d2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCBwYXJhbWV0ZXJzLmRyYXdp
bmdBcmVhSWRlbnRpZmllciwgd2ViUGFnZSkKLSAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4
dChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+KHdlYlBhZ2UpKQorICAg
ICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dD4od2ViUGFnZSkpCiAgICAgLCBtX3Jvb3RMYXllcihHcmFwaGljc0xheWVyOjpjcmVhdGUo
Z3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQogICAgICwgbV9sYXllckZsdXNoVGltZXIo
KnRoaXMsICZSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpCiB7CkBAIC00
MjMsNyArNDIzLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXll
cnMoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkpKTsK
IAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRM
YXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9uLCBzY3JvbGxpbmdUcmFuc2FjdGlvbik7
Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJUEM6OkVuY29kZXI+
KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRy
ZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6cmVj
ZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpD
b21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIGNv
bW1pdEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIC8vIEZJWE1F
OiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmlu
ZGV4IGFhZGUzZDlmMTg0NGQ3ZjA1YzA5MjE4ZDhlMjA0NGQ1OGEyZjA1ZjguLmIyYmRjNDFiNzIz
MzZiYjZlNDg0OTBmNzMxYjI0ODVkMjcwNzgyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdlJik7CiAgICAgflZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAppbmRleCA2MGNmZDhkMmExNzU0YTdhY2VkNThkNjFkZjE3YmU0YzE0
MzEzNjk0Li5iZGQ0YjM5NTI1NGE3MTY3NjM5YWVjZDczODYwZTA3MmQ2OWM0MmY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xMjAsNyAr
MTIwLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUo
V2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIAogUmVmPFdlYkZyYW1lPiBXZWJGcmFt
ZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUs
IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewotICAgIGF1dG8gZnJhbWUg
PSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CisgICAg
YXV0byBmcmFtZSA9IGNyZWF0ZShtYWtlVW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsK
ICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1l
KGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0
ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xp
ZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggMTMzNjU3MGQ5M2FhNTExMDY5Nzg1NjExNzAyNjA4OTNiOGEzY2RiNC4uZGIzMmRh
NDgxMzllMTlmNzE0MjEyNTY1NDBhMjE2MzIzNGNjOTEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4MywyMSArMzgzLDIxIEBAIFdlYlBh
Z2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fdGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5KG1h
a2VVbmlxdWVSZWY8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5PigqdGhpcykpCiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQotICAgICwgbV92aWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcj4oKnRoaXMpKQorICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKG1h
a2VVbmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQogI2VsaWYgRU5B
QkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0
eU9iamVjdChudWxscHRyKQogI2VuZGlmCiAgICAgLCBtX3NldENhblN0YXJ0TWVkaWFUaW1lcihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJl
ZCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGll
bnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlmCi0gICAgLCBtX2VkaXRv
ckNsaWVudCB7IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xp
ZW50PigpIH0KLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBtX2xvYWRlckNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCkpCi0gICAgLCBt
X3Jlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlJlc291cmNlTG9hZENsaWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCisgICAgLCBtX2VkaXRvckNs
aWVudCB7IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0K
KyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1D
bGllbnQ+KCkpCisgICAgLCBtX2xvYWRlckNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCkpCisgICAgLCBtX3Jlc291cmNlTG9hZENsaWVudCht
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKSkKKyAg
ICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGll
bnQ+KCkpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKG1ha2VVbmlxdWVSZWY8RmluZENvbnRyb2xs
ZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1f
aW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXRDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRD
b250cm9sbGVySUQpKQogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICAsIG1fZ2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIobWFrZVVuaXF1ZVJlZjxHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMpKQpAQCAtNDY0LDIxICs0NjQsMjEgQEAgV2ViUGFn
ZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCA9IG5l
dyBXZWJQbHVnSW5DbGllbnQoKnRoaXMpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNs
aWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudDsKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCp0aGlz
KTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4oKnRoaXMpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnBl
cmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5n
Q2xpZW50PigqdGhpcyk7CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgcGFnZUNvbmZpZ3VyYXRp
b24ud2ViR0xTdGF0ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMU3RhdGVUcmFja2Vy
PihbdGhpc10oYm9vbCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpIHsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlciA9IG1ha2VVbmlxdWU8V2ViR0xTdGF0ZVRyYWNr
ZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkgewogICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldElzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJH
TChpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpKTsKICAgICB9KTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uc3BlZWNoU3lu
dGhlc2lzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ+
KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5zcGVlY2hTeW50aGVzaXNDbGllbnQgPSBt
YWtlVW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRoaXMpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2Fn
ZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0
aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1h
a2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlzKTsKICNlbmRpZgogCiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSAmV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKTsKQEAgLTQ5MywxNCArNDkz
LDE0IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9B
VVRITikKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oKnRoaXMp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA9
IG1ha2VVbmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigqdGhpcyk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gcGFyYW1ldGVycy5hcHBsaWNhdGlvbk1hbmlmZXN0Owog
I2VuZGlmCiAKLSAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBtX3BhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIC8vIFNldCB0aGUgc2Vzc2lvbklEICpiZWZvcmUq
IHVwZGF0aW5nIHRoZSBwcmVmZXJlbmNlcyBhcyB0aGUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBw
cmVmZXJlbmNlcyBtYXkgbmVlZCB0byBvdmVycmlkZSBpdC4KICAgICBpZiAocGFyYW1ldGVycy5z
ZXNzaW9uSUQuaXNWYWxpZCgpKQpAQCAtODUzLDcgKzg1Myw3IEBAIHVpbnQ2NF90IFdlYlBhZ2U6
Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHZvaWQgV2ViUGFnZTo6c2V0SW5q
ZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PiYmIGNvbnRleHRNZW51Q2xpZW50KQogewog
ICAgIGlmICghY29udGV4dE1lbnVDbGllbnQpIHsKLSAgICAgICAgbV9jb250ZXh0TWVudUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51
Q2xpZW50PigpOworICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVk
QnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdQog
dm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCkKIHsK
ICAgICBpZiAoIWVkaXRvckNsaWVudCkgewotICAgICAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOworICAgICAg
ICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9y
Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NzQsNyArODc0LDcgQEAg
dm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpJbmplY3RlZEJ1bmRsZToKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVG
b3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50
PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0gICAgICAgIG1fZm9y
bUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVu
dD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpGb3JtQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04ODQsNyAr
ODg0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkYKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlTG9hZGVyQ2xpZW50PiYmIGxvYWRlckNsaWVudCkKIHsKICAgICBpZiAoIWxvYWRl
ckNsaWVudCkgewotICAgICAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAgICAgICAgbV9sb2FkZXJD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkwNSw3ICs5MDUsNyBAQCB2b2lkIFdl
YlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VQ
b2xpY3lDbGllbnRCYXNlKgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNl
TG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VM
b2FkQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIW1fcmVzb3VyY2VMb2FkQ2xpZW50KQot
ICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOworICAgICAgICBtX3Jlc291cmNlTG9h
ZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xp
ZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBXVEZNb3Zl
KGNsaWVudCk7CiB9CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEIK
IHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PiYmIHVpQ2xpZW50KQogewogICAgIGlm
ICghdWlDbGllbnQpIHsKLSAgICAgICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgICAgICBtX3VpQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTE0MTAsMTQgKzE0MTAsMTQgQEAgdm9pZCBXZWJQYWdlOjpj
bG9zZSgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIG1fY29udGV4
dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VD
b250ZXh0TWVudUNsaWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYK
LSAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6RWRpdG9yQ2xpZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKLSAgICBtX2xvYWRlckNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4o
KTsKKyAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
RWRpdG9yQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICBtX2xvYWRlckNsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKICAgICBtX3BvbGlj
eUNsaWVudC5pbml0aWFsaXplKDApOwotICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7Ci0g
ICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZVVJQ2xpZW50PigpOworICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAgbV91aUNsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOwogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX2Z1bGxTY3JlZW5DbGllbnQuaW5pdGlhbGl6ZSgw
KTsKICNlbmRpZgpAQCAtNDY5Niw3ICs0Njk2LDcgQEAgdm9pZCBXZWJQYWdlOjpiZWdpblByaW50
aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvKQogI2VuZGlm
CiAKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KSB7Ci0gICAgICAgIG1fcHJpbnRDb250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+KGNvcmVGcmFtZSk7CisgICAgICAgIG1fcHJp
bnRDb250ZXh0ID0gbWFrZVVuaXF1ZTxQcmludENvbnRleHQ+KGNvcmVGcmFtZSk7CiAgICAgICAg
IG1fcGFnZS0+ZGlzcGF0Y2hCZWZvcmVQcmludEV2ZW50KCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcAppbmRleCA3MzU2NmExMzM4NWRlM2FhYzY0NmZiOTQ5NmJkZGFmY2I1YWY0
NmI2Li40NjczNGZmZjI2OTFlYTY1YWJkZmY0ZmU1MDQ3MGZjYzRlMzRkMWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5jcHAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFdlYlByaW50T3BlcmF0
aW9uR3RrOjpwcmludChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGRvdWJsZSB4RFBJLCBkb3Vi
bGUgeQogewogICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7CiAKLSAgICBhdXRvIGRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBt
YWtlVW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKICAgICBpZiAoIWRhdGEtPmlzVmFsaWQp
IHsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV9maW5pc2goc3VyZmFjZSk7CiAgICAgICAgIHByaW50
RG9uZShpbnZhbGlkUGFnZVJhbmdlVG9QcmludChmcmFtZVVSTCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1Mu
bW0KaW5kZXggOWFiYjJhNzkyOTlkNTk2YjkxZTZlZjYxY2E0M2VmODYxOTBhOTA0OS4uOTM0MThh
YjIxZDc0ZmM5NDU4YTAyMjRlNGNiNDhhNzM0MTc4MDlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpA
QCAtOTgsNyArOTgsNyBAQCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9y
KEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgIGlmICghdGV4dElu
ZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9maW5kSW5kaWNhdG9yT3Zl
cmxheUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJ
T1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOworICAgIG1fZmluZEluZGlj
YXRvck92ZXJsYXlDbGllbnQgPSBtYWtlVW5pcXVlPEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50
SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdldCgpKTsKICAgICBtX2ZpbmRJbmRp
Y2F0b3JSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0SW5kaWNhdG9yLT5zZWxlY3Rpb25SZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpOwogICAgIG1fZmluZEluZGljYXRvck92ZXJsYXkgPSBQ
YWdlT3ZlcmxheTo6Y3JlYXRlKCptX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50LCBQYWdlT3Zl
cmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheSgqbV9maW5kSW5kaWNh
dG9yT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05vdEZhZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5j
cHAKaW5kZXggOTA2ODdjOTc0YWNmMzNkODJiOGM2NGI5NDhlNmVlOWEzMGVlMmU5Yy4uMDZmY2M0
NzE1OTNlYjc4ZWRlYmZjYzYzZjg5NDRiM2RmYWU5ZGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVz
aENhbGxiYWNrKCkKICAgICBpZiAoIW1faGFzU2VudE1lc3NhZ2UpIHsKICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpTdGFydERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxh
eUlEKCkpLCAwKTsKICAgICAgICAgbV9oYXNTZW50TWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIG1f
cnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1
bkxvb3BFbnRyeSwgW3RoaXNdKCkgeworICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VV
bmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKICAgICAg
ICAgICAgIHRoaXMtPm1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3AgPSB0cnVlOwogICAg
ICAgICB9KTsKICAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxlKENGUnVuTG9vcEdl
dEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5k
ZXggZGY2MDAzNjQ1OThmMTM0NjI5ZGFiNjI3MDZlYWY2ODYxZTVmZjMzZC4uNGNiM2RmOWFlYTUy
OWVmZjUyNjMzNmM4MWYxMzAyMDQ1YmEzZTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQpAQCAtODcsNyArODcsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwg
YwogICAgIFttX2hvc3RpbmdMYXllciBzZXRPcGFxdWU6WUVTXTsKICAgICBbbV9ob3N0aW5nTGF5
ZXIgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAKLSAgICBtX2xheWVyRmx1c2hSdW5Mb29wT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpM
YXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1fbGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZlciA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4
PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBb
dGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hSdW5Mb29wQ2FsbGJhY2soKTsKICAg
ICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGEyZGEx
MmM2MDIyOTM3M2NmODc4OTJiODNkYWE1NzczNTAwYTc3ZjIuLmE5ZTM3NDQ0ZmJkMzY4NDRhNDky
OGM5NjEyMmQ3NGVkMWYwZmJiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTE1NzMsNyArMTU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6bWFya0FsbExheWVy
c1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuCiAgICAg
QVNTRVJUKCFtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIpOwogICAgIG1fY291
bnRPZlBhZ2VzRmFpbGluZ1RvTWFya1ZvbGF0aWxlID0gMDsKIAotICAgIG1fcGFnZU1hcmtpbmdM
YXllcnNBc1ZvbGF0aWxlQ291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU1hcmtpbmdMYXll
cnNBc1ZvbGF0aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKKyAgICBtX3BhZ2VNYXJraW5n
TGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBtYWtlVW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNW
b2xhdGlsZUNvdW50ZXI+KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoUmVmQ291bnRlckV2ZW50KSB7CiAgICAgICAgIGlmIChtX3BhZ2VNYXJr
aW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTE4MzgsNyArMTgzOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5hYmxlZFNlcnZp
Y2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2CiAKIHZvaWQg
V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZGVudGlmaWVyKQogewotICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIp
OworICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IG1ha2VVbmlxdWU8V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6
OmRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKQEAgLTE4NzEsNyArMTg3MSw3IEBAIGJv
b2wgV2ViUHJvY2Vzczo6aGFzVmlzaWJsZVdlYlBhZ2UoKSBjb25zdAogTGliV2ViUlRDTmV0d29y
ayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB7CiAgICAgaWYgKCFtX2xpYldlYlJU
Q05ldHdvcmspCi0gICAgICAgIG1fbGliV2ViUlRDTmV0d29yayA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDTmV0d29yaz4oKTsKKyAgICAgICAgbV9saWJXZWJSVENOZXR3b3JrID0gbWFrZVVu
aXF1ZTxMaWJXZWJSVENOZXR3b3JrPigpOwogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3Jr
OwogfQogCkBAIC0xODgyLDcgKzE4ODIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlRwogICAg
IC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRN
YW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBh
cyB0aGUKICAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlv
biBwdXJwb3Nlcy4KICAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnNldENvbm5lY3Rpb24oc3RkOjptYWtlX3VuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQsIHBhZ2VJRCwgc3RvcmUpKTsK
KyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlx
dWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91
cElELCBwYWdlSUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCBkNGMwMWJhYjFmOTNkYTkwODViMGYyMTk0Y2QzMjdkNDcxODY1MGIyLi4yZjRmYjUzMGFiY2Vk
N2VmYzczNzY0MjIzMDlmZDMxODg3YTQ3YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAgICAgLCBQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OkNsaWVudAogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlByb2Nlc3MmIHNpbmdsZXRvbigp
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUgPSBQcm9jZXNz
VHlwZTo6V2ViQ29udGVudDsKQEAgLTE0Niw3ICsxNDcsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAgICB7
Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFr
ZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxl
bWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIFdlYkNvbm5l
Y3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1
cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAyNzIw
Yjg2ZmNkMmZmZWU2MDIyZjVhZDVlZWQ1MGJjZjM2OTJkN2Y4Li45YWYwMGVlOGFhMGYxY2Q4NDBh
ODE3Mzc5MGZhMDYyMzAwNDZmZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6IHB1YmxpYyBSZWFs
dGltZU1lZGlhU291cmNlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXZpY2VUeXBlICE9IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd24pOwogICAgICAgICBpZiAodHlwZSA9PSBU
eXBlOjpBdWRpbykKLSAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxs
cHRyKSk7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZl
cj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOwogICAg
IH0KIAogICAgIH5Tb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAppbmRleCBiYWVkMGNkOWUwOWI0OWQy
MjFlOTQwMThmNjQ5ZmU2ZGJjZjkyNTE5Li5jMWQ0M2ZjYjNhZjU4NDE0NTNhZDM0MzRjN2NmOTNl
YmZjOWU3ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBDcm9z
c1Byb2Nlc3NSZWFsdGltZUF1ZGlvU291cmNlOwogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xhc3Mg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OkF1ZGlvQ2FwdHVyZUZh
Y3RvcnksIHB1YmxpYyBXZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29y
ZTo6RGlzcGxheUNhcHR1cmVGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNz
Jik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBiNDdkMWQ4YWZhMDNm
ZWQzNmRlY2FkOTg5ZDcyZGJjNDE4NDg3ZjU5Li4zYjkwNmE4MGM1YWQ4ZjY5YmVmNzdmOWE4Yzc2
NGFmODA5ZjQ5NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBy
b2Nlc3NUYXNrU3RhdGVEaWRDaGFuZ2UoUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpUYXNrU3Rh
dGUgdAogCiAgICAgLy8gV2Ugd2VyZSBhd2FrZW5lZCBmcm9tIHN1c3BlbnNpb24gdW5leHBlY3Rl
ZGx5LiBOb3RpZnkgdGhlIFdlYlByb2Nlc3NQcm94eSwgYnV0IHRha2UgYSBwcm9jZXNzIGFzc2Vy
dGlvbiBvbiBvdXIgcGFyZW50IFBJRAogICAgIC8vIHRvIGVuc3VyZSB0aGF0IGl0IHRvbyBpcyBh
d2FrZW5lZC4KLSAgICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
UHJvY2Vzc0Fzc2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vz
c0lEKCksICJVbmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5k
LCBBc3NlcnRpb25SZWFzb246OkZpbmlzaFRhc2spOworICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0
aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5yZW1vdGVQcm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0aW9u
U3RhdGU6OkJhY2tncm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CiAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OlByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpLCBbdWlQcm9j
ZXNzQXNzZXJ0aW9uID0gV1RGTW92ZSh1aVByb2Nlc3NBc3NlcnRpb24pXSB7IH0pOwogfQogI2Vu
ZGlmCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9y
U3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbiByZWFzb24pCiAgICAgfQogCiAgICAgaWYgKCFt
X2NwdU1vbml0b3IpIHsKLSAgICAgICAgbV9jcHVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxD
UFVNb25pdG9yPihjcHVNb25pdG9yaW5nSW50ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2Up
IHsKKyAgICAgICAgbV9jcHVNb25pdG9yID0gbWFrZVVuaXF1ZTxDUFVNb25pdG9yPihjcHVNb25p
dG9yaW5nSW50ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2UpIHsKICAgICAgICAgICAgIGlm
IChtX3Byb2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpTZXJ2aWNlV29ya2VyKQogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gU2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBleGNlZWRlZCBDUFUgbGltaXQgb2YgJS4xZiUlICh3YXMgdXNpbmcg
JS4xZiUlKSIsIHRoaXMsIG1fY3B1TGltaXQudmFsdWUoKSAqIDEwMCwgY3B1VXNhZ2UgKiAxMDAp
OwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAppbmRleCAzNjkwOTVjZGFkMWQzNDcxMWEwNjc2ZDg3MzZh
OTBlMTkzZTI5MDVlLi4yMjhmNGEzNmQ0YjBmMjIyYzE3ODYwZDBiYzQ5OGMxZjllMDg5YTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2Vy
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZWY8U3RvcmFnZVN5bmNNYW5hZ2VyPiBTdG9yYWdlU3lu
Y01hbmFnZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB9CiAKIFN0b3JhZ2VTeW5jTWFu
YWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCkKLSAgICA6IG1fdGhy
ZWFkKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICA6IG1fdGhyZWFkKG1h
a2VVbmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKICAgICAsIG1fcGF0aChwYXRoLmlzb2xhdGVkQ29w
eSgpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggNDQzOTM4Mjk1ZjRlMWMyOWRkMDQ4
NmI0MzFiYTdmZWEzNTI5ZDE2ZC4uOWM3NTE0ZTM0NjJjNGI0ZDhhODU2MDVlZDAyOWRiZDE5MjVk
NmIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNw
cApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9u
PHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWQpOwotICAgIG1fcXVldWUuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24p
KSk7CisgICAgbV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RG
TW92ZShmdW5jdGlvbikpKTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQpA
QCAtODcsNyArODcsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAgICAgaWYg
KCFtX3RocmVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKKyAgICBtX3F1ZXVlLmFwcGVu
ZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10gewogICAgICAgICBwZXJmb3Jt
VGVybWluYXRlKCk7CiAgICAgfSkpOwogICAgIG1fdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5k
ZXggYjkzNGQxYTNiMWJhYTgzMWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2ZhMi4uODA2Y2IwOTk1ZDBh
MDdjNzE4MjcxZDIxMDUwNzAzOThjNDAzYmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFN0b3JhZ2VUcmFj
a2VyJiBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpCiBTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRy
YWNrZXIoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKICAgICA6IG1fc3RvcmFnZURpcmVjdG9y
eVBhdGgoc3RvcmFnZVBhdGguaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2NsaWVudCgwKQotICAg
ICwgbV90aHJlYWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQorICAgICwgbV90
aHJlYWQobWFrZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9pc0FjdGl2ZShmYWxz
ZSkKICAgICAsIG1fbmVlZHNJbml0aWFsaXphdGlvbihmYWxzZSkKICAgICAsIG1fU3RvcmFnZURh
dGFiYXNlSWRsZUludGVydmFsKGRlZmF1bHRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9y
YWdlU2Vzc2lvbk1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05l
dHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKaW5kZXggNDNlYTQ1ZGFlODkyMDZjODI5YTUxNGQ0
ZGE4ZTNkMWM5N2NjMTI4NC4uODUxY2MxMDE3ZGVkMDBjMDZkNDZkMmM4NTlkNzAwMDBiNmQ3MmQ1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3Rv
cmFnZVNlc3Npb24oY29uc3QgUAogV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3
b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCiB7CiAgICAgaWYg
KCFkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIGRlZmF1bHROZXR3b3Jr
U3RvcmFnZVNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICAgICAg
ZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwog
ICAgIHJldHVybiAqZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogfQogCkBAIC03NCw3
ICs3NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3Rp
bmdTZXNzaW9uKCkKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lv
bi5nZXQoKSkpOwogICAgIH0KIAotICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNv
b2tpZVN0b3JhZ2UpKTsKKyAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdl
KSk7CiAjZW5kaWYKIH0KIApAQCAtMTAwLDExICsxMDAsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCwgY28KICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Np
b24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwg
V1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShj
b29raWVTdG9yYWdlKSk7CiAKICNlbGlmIFVTRShDVVJMKQogICAgIGdsb2JhbFNlc3Npb25NYXAo
KS5lbnN1cmUoc2Vzc2lvbklELCBbc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihz
ZXNzaW9uSUQpOwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3Bw
CmluZGV4IDE4NzZiOTYwYjk0NzA4MTRjMzUwYmM1OTI2YTRjODFhZWRmMzkwMjMuLjdiODY5ODFh
M2Y0OGU1MGY4YjNjY2FjMzcwNjkxN2Q0YWYxZmRiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Q0YuY3BwCkBAIC0xNTksNSArMTU5LDUgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0b3JDbGkKICAgICAg
ICAgICAgIGRlbGV0ZVNldHRpbmcobmFtZSk7CiAgICAgICAgIH0KICAgICB9OwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudElPUy5oCmluZGV4IDNiMWE0NTA3MDc4ZmE0Y2MwNjhlNzQwMzAzMjIxMjM5YjJh
ZDcxMjMuLjE0NTc3MjIyYTllMTNlNjNlNDkxZDZkM2I5MmNhMWJjODllN2NiMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudElPUy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJXZWJDaHJvbWVDbGll
bnQuaCIKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50SU9TIGZpbmFsIDogcHVibGljIFdlYkNocm9t
ZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
Q2hyb21lQ2xpZW50SU9TKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogV2ViQ2hyb21lQ2xp
ZW50KHdlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCmluZGV4IDIxN2E0
ZWQwYTg1YTZiYjQxNGQzMTk0Y2I3YmZhZWZkZTAzNmQ0N2EuLjhkYWQ2MDQ0NjJmODM3NjQ1NzNm
MDA2MjllYTEwNDllZWI4NmRjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1t
CkBAIC0xNzgsNyArMTc4LDcgQEAgLSAodm9pZClzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJz
OihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBzdGQ6OnVuaXF1ZV9wdHI8V2UKIAogICAgIGZvciAo
YXV0byYgbGF5ZXJBbmRDb25zdHJhaW50cyA6IGxheWVyTWFwKSB7CiAgICAgICAgIENBTGF5ZXIq
IGxheWVyID0gbGF5ZXJBbmRDb25zdHJhaW50cy5rZXk7Ci0gICAgICAgIGF1dG8gbGF5ZXJEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPigpOworICAg
ICAgICBhdXRvIGxheWVyRGF0YSA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZExheWVy
RGF0YT4oKTsKIAogICAgICAgICBsYXllckRhdGEtPm1fZW5jbG9zaW5nQWNjZWxlcmF0ZWRTY3Jv
bGxMYXllciA9IHN0aWNreUNvbnRhaW5lcnMuZ2V0KGxheWVyKTsKICAgICAgICAgbGF5ZXJEYXRh
LT5tX3ZpZXdwb3J0Q29uc3RyYWludHMgPSBXVEZNb3ZlKGxheWVyQW5kQ29uc3RyYWludHMudmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCmlu
ZGV4IGE4YjZhMDQzOTNlYzAwMDE0NjUzOGQ0Y2Y2NWJkNjQwYzc0YmQ5MDEuLjVhZDgxYjRhM2I0
OWI1ZDA2MzkzNjU2ODNhMWJjZjVkNTdlZjM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KQEAgLTEzMyw3ICsxMzMsNyBAQCAtIChpZClpbml0
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgX2VudHJpZXNCeVVSTCA9IFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgX2VudHJpZXNCeURhdGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CisgICAgX2VudHJpZXNCeURhdGUgPSBtYWtl
VW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4
IGI3Mzk1OTM1ZTUxMGJmM2I3ZjBjNDhlZGQ0MzZjNThiYmM0ODFkOGUuLjg2ZjlkM2Q0MjIzODQ2
YmM5NWNiYzk1NjQ1YTFjYTczMjBhZmUxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMzQ4LDcgKzM0OCw3IEBAIC0gKGlk
KWluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOihOU0RpY3Rpb25hcnkgKilkaWN0CiAg
ICAgICAgIGNvcmUoX3ByaXZhdGUpLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOwogICAg
IAogICAgIGlmIChOU0FycmF5ICpyZWRpcmVjdFVSTHMgPSBbZGljdCBfd2Via2l0X2FycmF5Rm9y
S2V5OnJlZGlyZWN0VVJMc0tleV0pIHsKLSAgICAgICAgYXV0byByZWRpcmVjdFVSTHNWZWN0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBhdXRvIHJlZGly
ZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIHJl
ZGlyZWN0VVJMc1ZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbcmVkaXJlY3RVUkxzIGNv
dW50XSk7CiAKICAgICAgICAgZm9yIChpZCByZWRpcmVjdFVSTCBpbiByZWRpcmVjdFVSTHMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggZTE3Yzc4ODFhNTE3ZjBjMzU1
Zjg3NTY5YjYwZGEzZjIxNWExZWJhNy4uZjVlN2ZiY2YxMmU0N2Y5MGRlZWYxZWEyY2ZlYjcxNzQy
Njg4MGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTQ5Myw3ICs0
OTMsNyBAQCBrZXJuX3JldHVybl90IFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseShtYWNo
X3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbAogICAgIGlmICghaW5zdGFuY2VQcm94eSkK
ICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1
cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0SUQpKTsKKyAgICBp
bnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHk+KG9iamVj
dElEKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApAQCAtNTA5LDcgKzUwOSw3IEBA
IGtlcm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5SZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1
aW50MzJfdCBwbHVnaW5JRCwgdWludDMyCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAg
ICByZXR1cm4gS0VSTl9GQUlMVVJFOwogICAgIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJl
bnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1
cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9
CiAKQEAgLTUyOCw3ICs1MjgsNyBAQCBrZXJuX3JldHVybl90IFdLUENCb29sZWFuQW5kRGF0YVJl
cGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELAogICAgICAgICBy
ZXR1cm4gS0VSTl9GQUlMVVJFOwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVzdWx0ID0g
YWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KHJlc3VsdERh
dGEpLCByZXN1bHRMZW5ndGgpKTsKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHko
cmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
Qm9vbGVhbkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOworICAgIGluc3RhbmNl
UHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwgcmVzdWx0
KSk7CiAgICAgCiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KQEAgLTU0NSw3ICs1NDUsNyBA
QCBrZXJuX3JldHVybl90IFdLUENJbnN0YW50aWF0ZVBsdWdpblJlcGx5KG1hY2hfcG9ydF90IGNs
aWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbgogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAg
ICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRS
ZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5OjpJbnN0YW50aWF0ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJRCwgc3Rh
dGljX2Nhc3Q8UmVuZGVyZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CisgICAgaW5zdGFuY2VQcm94
eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwgcmVuZGVyQ29udGV4
dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkpKTsKICAgICByZXR1
cm4gS0VSTl9TVUNDRVNTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5oCmluZGV4IDEwYTA4ZTk1MGEzZGMwYzkzNjcxZjFmYzFjNzRjOTQ3NzkzYTA3ZTguLmU1NmEx
MDNhMjhhNzYwZjljZTBiOTdlNzFkZDZiMjNhNjBjNTNlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5oCkBAIC0xNzEsNiArMTcxLDcgQEAgY2xhc3MgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3gKIAogICAgIC8vIFJlcGx5IHN0cnVjdHMKICAgICBzdHJ1Y3QgUmVwbHkgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGVudW0gVHlwZSB7
CiAgICAgICAgICAgICBJbnN0YW50aWF0ZVBsdWdpbiwKICAgICAgICAgICAgIEdldFNjcmlwdGFi
bGVOUE9iamVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDIwMmM2ZGVhZjEzZDA3YzZlM2E1Njk4YjFj
ZGI1OWExOWI1ZGEwMzkuLjUyYmY3YmQxMmU0ZTM3MTJkMzE0NzVlMmE1MzlhNDI4Y2ZmOGZhNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5
SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
UHJveHlJbnN0YW5jZS5tbQpAQCAtMzYyLDcgKzM2Miw3IEBAIE1ldGhvZCogUHJveHlJbnN0YW5j
ZTo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBBZGQgYSBu
ZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVkIHdoaWxlIHdlIHdl
cmUgaW4gd2FpdEZvclJlcGx5LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0gbV9tZXRob2RzLmFk
ZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5
ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlNZXRob2Q+KG1ldGhvZE5hbWUpOworICAgICAgICBt
YXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eU1ldGhvZD4obWV0
aG9kTmFtZSk7CiAKICAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQo
KTsKIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1l
ZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0
aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9y
UmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX2ZpZWxkcy5hZGQobmFtZS5pbXBsKCks
IG51bGxwdHIpOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiByZXBseS0+bV9y
ZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOworICAgICAgICBtYXBBZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlmaWVyKTsKICAgICBy
ZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
V2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDljNzFhM2NjOTIzZjMzZDJlMGFi
MzlhMWJmNmIxNGI0NDNlOTRkNGIuLmVlMTljNTY3YzAxZmExOGM1ZThkYzYxYjA4Yzg5NGU1MjAw
MmRhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTYw
LDYgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgIAogY2xhc3MgU29mdHdhcmVDQVJlbmRlcmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTb2Z0d2FyZUNBUmVuZGVyZXIodWludDMyX3Qg
Y29udGV4dElEKQogICAgICAgICA6IG1fY29udGV4dCB7IFtDQUNvbnRleHQgbG9jYWxDb250ZXh0
XSB9CkBAIC0xNjgsNyArMTY5LDcgQEAgLSAoQk9PTCljcmVhdGVQbHVnaW4KICAgICAgICAgcmV0
dXJuIE5POwogCiAgICAgaWYgKF9wcm94eS0+cmVuZGVyZXJUeXBlKCkgPT0gVXNlU29mdHdhcmVS
ZW5kZXJlcikKLSAgICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNv
ZnR3YXJlQ0FSZW5kZXJlcj4oX3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CisgICAgICAgIF9z
b2Z0d2FyZVJlbmRlcmVyID0gbWFrZVVuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+KF9wcm94eS0+
cmVuZGVyQ29udGV4dElEKCkpOwogICAgIGVsc2UKICAgICAgICAgW3NlbGYgY3JlYXRlUGx1Z2lu
TGF5ZXJdOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KaW5kZXggZjdhZWRi
Y2VkNGQ3ZjVjNGJhM2U5NmUzNTYxY2E3ZjBiMjY1YzhhYy4uOGVjMWJmNzllZTMyYTJhYzFiYmNm
N2EyMWU3M2U3ZTFlMDFkYjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCkBA
IC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlcj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyCiB7CiAgICAgc3dpdGNoIChb
cGx1Z2luVmlldyBldmVudE1vZGVsXSkgewogICAgIGNhc2UgTlBFdmVudE1vZGVsQ29jb2E6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyQ29jb2E+KHBsdWdpblZpZXcpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5WaWV3KTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCmluZGV4IDcwODM3NzZkMjhhNzVj
ZmI1NDI1MzNkOTBmMzc3OGU4NWFiY2QxZDIuLmJiZDljNWQ1ODIxZjg1ZjY1ZWJjOGY3NzdlYzY1
NTIyOWQ1ZTg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIu
aCIKIAogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYSA6IHB1YmxpYyBX
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYShXZWJO
ZXRzY2FwZVBsdWdpblZpZXcqKTsgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMDJmZjIxODZkZjg0
YTlhOTBkN2U5YzI2YzA3NjI3OWUzMjIxMTM3OC4uMTYwNjYzZTg2MWY3MTBlYmZlZDFkNzY4NTY1
ZGQyMmExMTRlOGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE2NTUsNyArMTY1NSw3IEBAIC0g
KHVpbnQzMl90KXNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVydmFsIHJl
cGVhdDooTlBCb29sKXJlcGVhdCB0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIGlmICgh
dGltZXJzKQotICAgICAgICB0aW1lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8dWludDMy
X3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4+PigpOworICAgICAgICB0aW1lcnMgPSBt
YWtlVW5pcXVlPEhhc2hNYXA8dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4+
PigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPiogc2xvdDsKICAgICB1aW50
MzJfdCB0aW1lcklEOwpAQCAtMTY2Myw3ICsxNjYzLDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVU
aW1lcldpdGhJbnRlcnZhbDoodWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0
IHQKICAgICAgICAgdGltZXJJRCA9ICsrY3VycmVudFRpbWVySUQ7CiAgICAgd2hpbGUgKCF0aW1l
cnMtPmlzVmFsaWRLZXkodGltZXJJRCkgfHwgKihzbG90ID0gJnRpbWVycy0+YWRkKHRpbWVySUQs
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZSkpOwogCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGx1Z2luVGltZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwg
dGltZXJGdW5jKTsKKyAgICBhdXRvIHRpbWVyID0gbWFrZVVuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1
Z2luLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogCiAgICAgaWYgKF9z
aG91bGRGaXJlVGltZXJzKQogICAgICAgICB0aW1lci0+c3RhcnQoX2lzQ29tcGxldGVseU9ic2N1
cmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KaW5kZXggNzA0Y2QwOTVlODhmZTFhMjM4MTE4NmM2
YmZmMTMwZmM5MDIwNDFlYi4uNTdmYmJmYWQ5ZTY0Yjc2NzhhZDNhY2NlODA3NzhiYWNmMDM3ODFi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KQEAgLTk0LDEwICs5NCwxMSBAQCBXZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQ6On5XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQogfQogCiBjbGFzcyBE
aWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiAgICAg
ewotICAgICAgICBhdXRvIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlmeU9yaWdp
bkRhdGE+KGNsaWVudCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gbWFrZVVuaXF1
ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdpbik7CiAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSB7CiAgICAgICAgICAgICBjb250
ZXh0LT5jbGllbnQuZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29udGV4dC0+b3JpZ2luKTsKICAg
ICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IGEzYjE1OThl
ZTM1M2Q2N2UyM2FmODA5NThlYjdmNzVlYjE2N2Y0ZDguLmNkNzI2NDI2ODI1YmE3MjIxNTU3ZTA1
NjZmYTkyZWMwODExMTQ1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBA
IC0zMSw2ICszMSw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCmluZGV4IDc4
YjUzOWUzNzJiODY1YzU5NGZjMDc2ZjVhMWZjODRhYWZlOThiZjAuLjI3MTQyN2UyZDQ2ZWUzYTI5
N2QwNTQwMTJhN2E4NWFiOGIzZTFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBj
bGFzcyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRG
cmFtZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoaWQgd2ViRG9jdW1lbnRWaWV3KSA6IG1f
d2ViRG9jdW1lbnRWaWV3KHdlYkRvY3VtZW50VmlldykgeyB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CmluZGV4IGZkYzRjYzc4MTk2ZmNiY2YzMjYwMmQxOGUyODlmMDdhMTE1NGNjOTUuLmMwZmJkYTli
MmRhMWRkNDUxMGZmZTA4OWJmNjhmNWE3NjdkZDQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00
MSw2ICs0MSw3IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiAvLyBiYXNlIGNsYXNzIG9mIHRo
ZSBjb25jcmV0ZSBjbGFzcywgV2ViQ2hyb21lQ2xpZW50SU9TLiBCZWNhdXNlIG9mIHRoYXQsIHRo
aXMgY2xhc3MgYW5kCiAvLyBtYW55IG9mIGl0cyBmdW5jdGlvbnMgYXJlIG5vdCBtYXJrZWQgZmlu
YWwuIFRoYXQgaXMgbWVzc3kgd2F5IHRvIG9yZ2FuaXplIHRoaW5ncy4KIGNsYXNzIFdlYkNocm9t
ZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJWaWV3Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDE4ODVmMDMxMzEzNWI4MTdiMzBmOTQ1Nzc3
ZDhlMjRiMTUzOWJmOTAuLmE3ZjY2ZWVlZjMwNmE2ODYwNTQyMGU3OTg3NjIwMjU3YmUwNmI2YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJD
b250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogICAg
ICwgcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50CiAjZW5kaWYKIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVu
dChXZWJWaWV3ICp3ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudUNsaWVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCmluZGV4IDg0N2E3M2IxN2E0NjE3YmQ1NGE4ZDI4YTkyM2MxZDRhNjNiZGQx
MmUuLjMwZGYzZjczZDg1MGVhNzY5YzcxMzUyMjFkMmU4ODY1ZWE2N2UwM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJEcmFnQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCmluZGV4IGYwNTllMDU5ZTExODdhM2JjNWJkMjQ3Y2MyNDFmNTlhZGQ0NTA5NTAuLmI1
MTA3ODdkODA5YmNmOTdiNzY4OWU3NDA5MzI4Mzc1YWEwYjBiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC00NSw2ICs0NSw3IEBACiBAY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAogY2xhc3Mg
V2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVi
bGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vi
RWRpdG9yQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgdmlydHVhbCB+V2ViRWRpdG9yQ2xp
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDNkZDUwZTdiM2I5Y2Y5OTMz
NDljOWFiYjRjYjQ5NzgzN2VlYzM1M2UuLjk0MGIwZmY5NjNhODVjZTlkODhkN2JjNTZmZjZiM2Vl
YjJlM2Q5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDY3LDcgKzEwNjcs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKIHN0
YXRpYyB2b2lkIGFkZFJlZGlyZWN0VVJMKFdlYkhpc3RvcnlJdGVtICppdGVtLCBjb25zdCBTdHJp
bmcmIHVybCkKIHsKICAgICBpZiAoIWl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzKQotICAg
ICAgICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CisgICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0g
bWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAogICAgIC8vIE91ciBBUEkgYWxsb3dzIHVz
IHRvIHN0b3JlIGFsbCB0aGUgVVJMcyBpbiB0aGUgcmVkaXJlY3QgY2hhaW4sIGJ1dCBmb3IKICAg
ICAvLyBub3cgd2Ugb25seSBoYXZlIGEgdXNlIGZvciB0aGUgZmluYWwgVVJMLgpAQCAtMTM4MCw3
ICsxMzgwLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJh
bWUpCiB7Ci0gICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9wcml2
YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CisgICAgY2FjaGVkRnJhbWUtPnNldENh
Y2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGE+KG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0
aGlzIGZyYW1lIGlzIGdvaW5nIHRvIGJlIGNhY2hlZC4gU3RvcCBhbGwgcGx1Z2lucy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGZmZTI5OTMxMmViNDgwYmFmYjVmMGVhYzQzNTJmMjQz
Zjk2ZTAwZjcuLmZmZGJhY2ZjMjc0MjFlOGQzNTg4OGYyY2U2YjE4MDc3YTE2ZTMzZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBHZW9sb2NhdGlv
blBvc2l0aW9uOwogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3ICop
OwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKaW5kZXggYmQ3ZjYyZmM4NWRjOTljMzg3MTZmMDc2NjY0NjMxODI1MTFjNTRh
NS4uMGM5NDhiM2FlZjk4NzYwOTYzMDM1MWQ1OWFjNzkwYjJhYmVhZGE3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICppbnNwZWN0ZWRXZWJWaWV3KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDFjMDA4MDk3NjkyZmY5YjA3MWZjZTVhYzRhNGI0
NjkyZDEzN2VkOTUuLjdkM2U1ZWM5ZTYxNWUxZDQ4YzNkMDVkNzFhNTljNDUxZmViNzY2YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTEwOSw3ICsxMDksNyBAQCBGcm9udGVuZENoYW5u
ZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcAogICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVu
dDp0aGlzXTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5n
ZXQoKSBmcm9udGVuZFdlYlZpZXddKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCB3
aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9mcm9udGVu
ZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9
IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmll
dywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJv
bnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogCiAgICAgUmV0YWluUHRyPFdl
Ykluc3BlY3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0TlMoW1tXZWJJ
bnNwZWN0b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDptX2Zyb250ZW5k
Q2xpZW50LmdldCgpXSk7CiAgICAgW1ttX2luc3BlY3RlZFdlYlZpZXcgaW5zcGVjdG9yXSBzZXRG
cm9udGVuZDp3ZWJJbnNwZWN0b3JGcm9udGVuZC5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oCmluZGV4IDE1YjQxODA0OGU0ZjFkNDYyNGMzMDNkY2JiZmVkMTY5Nzk2NDQ4NjEuLjk0
ZWQ2MThhYzc4ZWU4YmNmNTcxNTVjOWFkYWJjYmRhZGY2OGM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3Mg
V2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTm90aWZp
Y2F0aW9uQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0dXJu
IG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgK
aW5kZXggYTNkNmFlNjM2MzY0N2M1ZjMwY2M3OWZiZDYzNWY2NjRiY2EwMTIzYy4uZGM5ZDExYTM1
ODdlZTA0ZjUwMTUxYmU4OGJjNWQ0YjE0OGJjZGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEludFBvaW50Owog
fQogCiBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA6IHB1YmxpYyBXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIoV2ViVmlldyopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQppbmRleCAyNTM2NDhkOGU4NDU5MTFl
MmFlMjhjMGJiODYzY2I1N2Y3YzMwMDM5Li4yNzZkOWYxNWVmOGZhNWUxZmVkNDM4ZWQ5YzFkMjU5
YTc4NTgzNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KQEAgLTM2
LDcgKzM2LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYg
KCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IHN0ZDo6bWFrZV91bmlx
dWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOworICAgIG1fY29yZSA9IG1ha2VVbmlx
dWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOwogICAgIHJldHVybiBzZWxmOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBhOTA2
MjJjMjA3NGUwY2RjZWNlZjJjNmMxYzg0OTQ1ZDRlOWRmZmFiLi4zYTk0YmI5MTBkMjU5ZWZhYTg5
MWQ1MjllODBkMmI1YjAwMjBiNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KQEAgLTM3OCw3ICszNzgsNyBAQCAtICh2b2lkKV9hdHRhY2hTY3JpcHRE
ZWJ1Z2dlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3ByaXZhdGUtPnNjcmlwdERl
YnVnZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0
KTsKKyAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBtYWtlVW5pcXVlPFdlYlNjcmlwdERl
YnVnZ2VyPihnbG9iYWxPYmplY3QpOwogfQogCiAtICh2b2lkKV9kZXRhY2hTY3JpcHREZWJ1Z2dl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCBkZmE3ZWZkMDYwNmFkYzQ5ZmUyOTFk
MDUyMWQxMzJlNmUxOWM1MDczLi5hMDcyZTgxOTUyNDkzOWFlMGYyMmJiOTgzNmQzYWM3MDVkODU3
OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFz
cyBQYWdlOwogfQogCiBjbGFzcyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIDogcHVibGlj
IFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlcj4gY3JlYXRlKFdlYkNvcmU6OlBhZ2UmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDcyYzIwYzY5M2ZlY2JhOTcxMDQ2MzQxNjQxY2Nl
MTE0OTRkZTRhNjkuLjYwMjQwMjk5NjJlYzM0ZjAwZjRhYWQ5NDMyYTdmYzQyYmExZDE3NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogc3RkOjp1
bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+IFdlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXI6OmNyZWF0ZShXZWJDb3JlOjpQYWdlJiBwYWdlKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBhZ2UpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBhZ2UpOwog
fQogCiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyKFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDFhNzI1OGI0MjNhODQ1Nzg5MWU0
MTVlMTBkMDAyNTY3MzBhYTJiZGUuLmUzNjNiODViMmIzZDVhZTE0NzNjODM3MjcxODU4MzRkNTE3
ODdiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4
dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4
dEl0ZXJhdG9yLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KERPTVJh
bmdlICopcmFuZ2UKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgCiAgICAgX3ByaXZhdGUgPSBb
W1dlYlRleHRJdGVyYXRvclByaXZhdGUgYWxsb2NdIGluaXRdOwotICAgIF9wcml2YXRlLT5fdGV4
dEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUo
cmFuZ2UpKTsKKyAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiY2NjNjRiMDdh
M2QwNWY5YmU4NDVmZDE2YThhNGUxNThiNTY0NzVkLi4xMGYyMTg4NGViNGE5Yzk4NGFjMzJlNjAx
NDE0OTg1MGI4YzE5YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCkBAIC0xMjI5LDcgKzEyMjksNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmxlYWtPdXRsb29r
UXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCkKIC0odm9pZClfaW5qZWN0T3V0bG9va1F1aXJrc1Nj
cmlwdAogewogICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRz
ID0gbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKLSAgICBfcHJpdmF0ZS0+
Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUoW1dlYlNj
cmlwdFdvcmxkIHdvcmxkXSksIHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4ob3V0bG9va1F1
aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKKyAgICBfcHJp
dmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUo
W1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlxdWU8VXNlclNjcmlwdD4ob3V0bG9va1F1
aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKIAogfQogI2Vu
ZGlmCkBAIC0xNDQzLDcgKzE0NDMsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZik7
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4
dE1lbnVDbGllbnQoc2VsZik7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBlbmFibGUgdGhpcyBv
biBpT1MgYXMgd2VsbC4KLSAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KHNlbGYp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gbWFrZVVu
aXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxmKTsKICNl
bHNlCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNs
aWVudElPUyhzZWxmKTsKQEAgLTQ2MzMsNyArNDYzMyw3IEBAICsgKHZvaWQpX2FkZFVzZXJTY3Jp
cHRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3
b3JsCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1c2VyU2Ny
aXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdW
ZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGlt
ZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJ
bmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1l
cyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgIGF1dG8g
dXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5n
VmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRp
bWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDog
SW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFt
ZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKICAgICB2aWV3
R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUod29ybGQp
LCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtNDY1Niw3ICs0NjU2LDcgQEAgKyAodm9p
ZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDoo
V2ViU2NyaXB0V29ybGQgKikKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3Vy
Y2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2ts
aXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFs
bEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAg
IGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJs
LCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBp
bmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVz
IDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CiAgICAgdmlld0dy
b3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCgqY29yZSh3b3Js
ZCksIFdURk1vdmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogfQog
CkBAIC05NDE2LDcgKzk0MTYsNyBAQCAtIChWZWN0b3I8U3RyaW5nPilfZGljdGF0aW9uQWx0ZXJu
YXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0CiAtIChXZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlciYpX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyCiB7CiAgICAgaWYgKCFfcHJp
dmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKQotICAgICAgICBfcHJpdmF0ZS0+X3Nl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CisgICAgICAgIF9wcml2YXRlLT5fc2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
PihzZWxmKTsKICAgICByZXR1cm4gKl9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xs
ZXI7CiB9CiAjZW5kaWYKQEAgLTk0NzUsNyArOTQ3NSw3IEBAIC0gKHZvaWQpX3NldFRleHRJbmRp
Y2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3IKIC0gKHZvaWQpX3NldFRleHRJbmRp
Y2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOihUZXh0SW5k
aWNhdG9yV2luZG93TGlmZXRpbWUpbGlmZXRpbWUKIHsKICAgICBpZiAoIV9wcml2YXRlLT50ZXh0
SW5kaWNhdG9yV2luZG93KQotICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CisgICAgICAgIF9w
cml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxUZXh0SW5kaWNhdG9yV2lu
ZG93PihzZWxmKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGlu
YXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OltzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290Vmlldzp0
ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKV0gdG9W
aWV3Om5pbF07CiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVz
ID0gW3NlbGYud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46dGV4dEJvdW5kaW5nUmVjdEluV2lu
ZG93Q29vcmRpbmF0ZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEubW0KaW5kZXggMTA2MGMyZDg1NGFkYTBkY2FmYjMzNTU5YzgxMWU0ZWU0OTRjYzZl
MC4uODIzOGE0ZWM1ZmVlMTY4MzY0ZWQxMzA0YmM3NTE1ZjU1MTdmZTg5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC05Niw3ICs5Niw3
IEBAIExheWVyRmx1c2hDb250cm9sbGVyOjpMYXllckZsdXNoQ29udHJvbGxlcihXZWJWaWV3KiB3
ZWJWaWV3KQogV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2No
ZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVyKiBmbHVzaENvbnRyb2xsZXIpCiAgICAgOiBtX2Zs
dXNoQ29udHJvbGxlcihmbHVzaENvbnRyb2xsZXIpCiB7Ci0gICAgbV9ydW5Mb29wT2JzZXJ2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8
Q0ZJbmRleD4oV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJz
OjpMYXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFdlYkNv
cmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCks
IFt0aGlzXSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaENhbGxiYWNrKCk7CiAgICAgfSk7
CiB9CkBAIC0yMDgsNyArMjA4LDcgQEAgLSAoaWQpaW5pdAogICAgIHBsdWdpbkRhdGFiYXNlQ2xp
ZW50Q291bnQrKzsKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4o
KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDY0NmU2YWVmOTMy
ZjFjOTkyOTg1MzZjODJmMmM5NTVhNzFhMTkyY2YuLmZlNDRlNzUxY2MxMWMwZWFhZmUyODE4MTc5
ZWRjZjY1YTdmMWM3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCkBAIC0yNDYsMTAgKzI0NiwxMCBAQCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKICAgICAsIG1f
bW92aW5nV2luZG93KGZhbHNlKQogICAgICwgbV90aW1lcigqdGhpcywgJkZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnRpbWVyRmlyZWQpCiAjaWYgVVNFKENBKQotICAgICwgbV9sYXllckNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKKyAgICAsIG1fbGF5ZXJDbGll
bnQobWFrZVVuaXF1ZTxMYXllckNsaWVudD4odGhpcykpCiAgICAgLCBtX3Jvb3RDaGlsZChQbGF0
Zm9ybUNBTGF5ZXJXaW46OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyLCBt
X2xheWVyQ2xpZW50LmdldCgpKSkKICNlbmRpZgotICAgICwgbV9mdWxsc2NyZWVuV2luZG93KHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4oc3RhdGlj
X2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRoaXMpKSkKKyAgICAs
IG1fZnVsbHNjcmVlbldpbmRvdyhtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQq
Pih0aGlzKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmNwcAppbmRleCBhYmE2M2RhYjhiMzFlNDdhYmQ4MDg4YjM3ODNhODBlYzU0
YzEwMjE4Li4wZjZiZWVmZmFkMWRjMDE1YzhhNDc3ZTdmYmU1YzliNmFhZmFmZjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC00
MzMsNyArNDMzLDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIKIAogICAgIGlmIChtX3RyYW5z
ZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9kZWxpdmVyeURhdGEp
Ci0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPGNo
YXI+PigpOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBtYWtlVW5pcXVlPFZlY3Rvcjxj
aGFyPj4oKTsKIAogICAgICAgICBpbnQgb2xkU2l6ZSA9IG1fZGVsaXZlcnlEYXRhLT5zaXplKCk7
CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5yZXNpemUob2xkU2l6ZSArIGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyMTM2
MzE3ZjI5OTlkNWUxMzc0OWRmMzhlMTlhOGY0ZDJmMjViZDYwLi41NDcxNmEwYmIyYjFmYWI3NWQ4
MWRlNDJhZWU5NmVlYTJmNmIxM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTUxMCw3ICs1MTAsNyBAQCBOUEVycm9yIFBsdWdpblZp
ZXc6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5v
dGlmaWNhdAogICAgIH0gZWxzZSBpZiAoIW1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1cmwpKQogICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJ
Q19FUlJPUjsKIAotICAgIHNjaGVkdWxlUmVxdWVzdChzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpblJl
cXVlc3Q+KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHNlbmROb3RpZmljYXRpb24sIG5vdGlm
eURhdGEsIGFyZVBvcHVwc0FsbG93ZWQoKSkpOworICAgIHNjaGVkdWxlUmVxdWVzdChtYWtlVW5p
cXVlPFBsdWdpblJlcXVlc3Q+KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHNlbmROb3RpZmlj
YXRpb24sIG5vdGlmeURhdGEsIGFyZVBvcHVwc0FsbG93ZWQoKSkpOwogCiAgICAgcmV0dXJuIE5Q
RVJSX05PX0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMDU3MjhmM2VkMzcyMDUwNGFmNTVmOTg3N2Y4NjIxYmRj
MDVjZTYyMi4uNTIwNDU5NGFiNmY4NGQ1NzAwMDQwZGZkMjk4MWMzZjU2M2VkZmYzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBA
IC0zMTAsNyArMzEwLDcgQEAgUGx1Z2luVmlldzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVz
c2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAobWVzc2FnZSA9PSBX
TV9VU0VSICsgMSAmJgogICAgICAgICBtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2lu
UXVpcmtUaHJvdHRsZVdNVXNlclBsdXNPbmVNZXNzYWdlcykpIHsKICAgICAgICAgaWYgKCFtX21l
c3NhZ2VUaHJvdHRsZXIpCi0gICAgICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4+KHRoaXMpOworICAgICAgICAgICAg
bV9tZXNzYWdlVGhyb3R0bGVyID0gbWFrZVVuaXF1ZTxQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2lu
Pih0aGlzKTsKIAogICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXItPmFwcGVuZE1lc3NhZ2UoaFdu
ZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDUzMGI2OWVkNzE5YzI3YWNjNmIwN2UzNTE1OTIyMWY1NTI2YzUzMDUuLjNiZjQ0ZDg3ZDE4
ZDVmMjczY2QyOTUzNTY3NmIyNDA4ZjJjOTE0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaD4KIAogY2xhc3Mg
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKElXZWJEYXRhU291cmNlKiB3ZWJEYXRhU291cmNl
KSA6IG1fd2ViRGF0YVNvdXJjZSh3ZWJEYXRhU291cmNlKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggNGE0OWI5NGJiYTU4ZDBjNTQ2MzMyOWMzZjZlZjIzZTg0ODhiN2FmMy4uN2IyOTlj
ZWUyNWVjZDEwYmJhNjIxYzg1ODFiMDZhZTA2YzVhMWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RmlsZVBhdGhzTGlzdFNp
emUgPSBVU0hSVF9NQVg7CiBXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNsaWVudChXZWJWaWV3
KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCi0gICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShzdGQ6Om1ha2VfdW5pcXVlPFdl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZpZXcpKQorICAgICwgbV9ub3RpZmlj
YXRpb25zRGVsZWdhdGUobWFrZVVuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRl
Pih3ZWJWaWV3KSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA0MWQ1ZjA2YWVh
Y2I3ZTE0MTdkNGI3MDI0MDA2MGJiZTU3ZjY5MzBmLi43ODc1NDMyNTNkNWRmZjRlYzY2OGViZTg4
ZjA4ODVkMGJhZGI2NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFz
cyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOwogaW50ZXJmYWNlIElXZWJVSURlbGVn
YXRlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hy
b21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBX
ZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRl
eCBjOWRlNDliM2NkMTQ1NTE3MjhmYjJmOWQ5NmVmNDkwZTk5MTU4YmQ0Li5mNDhlZTczMGVlZjcx
OTc5ZTRkOGQyYzMyN2VkMWJhMTdiOTRmZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgK
QEAgLTMwLDYgKzMwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVudChXZWJW
aWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBiNTk4OTMzMjkxMDA5ZTI4NTFlZDc1NDE1ZWM0YWEw
ZmU0MDNkNjExLi40NWUzY2E3Mjc1M2FkMWFjMTE1M2JlOTYxOTNmNmVkNjIxZmY4OWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJE
cmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwogICAg
IHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCBkYjYzNTJkNjM4MTZmN2M5YWVlZTlmNzQ0ZTQ4ZTM4MWU4NTZkMmI1Li42OWQ3ZWQzZTBh
YTMxZjEzYmVhNjRjZjBjMjc2NWUyNTRmYmY4ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMzUs
NiArMzUsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBXZWJFZGl0b3JVbmRvVGFy
Z2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RWRp
dG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVudChXZWJWaWV3
Kik7CiAgICAgfldlYkVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDhlMzU0YjcxY2RmZDJhNWY5YjhiMDExYTAzMjlkNzQyNGJjOTBiYmMuLjc3MWY4ZWE2
ZjcxNjgwOWNkZmFkZDdlMzhjNjBkYzdhMDNlMDFmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudDo6
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUgewogfTsKIAogV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiB3ZWJGcmFtZSkKLSAgICA6IG1fcG9s
aWN5TGlzdGVuZXJQcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByaXZhdGU+KCkpCisgICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShtYWtlVW5pcXVlPFdl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQogICAgICwgbV93ZWJGcmFtZSh3ZWJGcmFt
ZSkKICAgICAsIG1fbWFudWFsTG9hZGVyKDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1
Z2luKGZhbHNlKSAKQEAgLTk3Myw3ICs5NzMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbQog
CiAgICAgQVNTRVJUKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBjYWNo
ZWRGcmFtZS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVG
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CisgICAgY2FjaGVkRnJhbWUtPnNl
dENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGE+KHN0YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3Jl
RnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkpOwogI2Vsc2UKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBlYjk3NThi
ZDQyMTA3ZDJmOWE4NTRlNGU2ODgxNjZhNmY1MTVmYjlmLi5iYmE5YzlmNDQ1MzU4ZDdjZTNlYTAz
Zjg5NjY0MWJkNmU1ZTA0MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYg
KzM2LDcgQEAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYlZpZXc7CiAKIGNs
YXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9s
b2NhdGlvbkNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4
IDc1Njk1OTBjMWIzY2YzODE2ZmM0MmEzNWJmM2Y2NmJmZDc4OTAyMjQuLmY4MGFlMDQ4YjgyZGJk
YjIzNDY1NDY4ZDkzM2M2MGE3MDk3MmM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApA
QCAtMTY5LDcgKzE2OSw3IEBAIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0
b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7
Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxl
LCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhp
cywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBt
X2luc3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBm
cm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogICAg
IG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9
IGZyb250ZW5kSHduZDsKICAgICByZXR1cm4gdGhpczsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KCkKICAgICBib29sIGNyZWF0aW5nSGlnaGxp
Z2h0ID0gIW1faGlnaGxpZ2h0OwogCiAgICAgaWYgKGNyZWF0aW5nSGlnaGxpZ2h0KQotICAgICAg
ICBtX2hpZ2hsaWdodCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViTm9kZUhpZ2hsaWdodD4obV9pbnNw
ZWN0ZWRXZWJWaWV3KTsKKyAgICAgICAgbV9oaWdobGlnaHQgPSBtYWtlVW5pcXVlPFdlYk5vZGVI
aWdobGlnaHQ+KG1faW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBpZiAobV9oaWdobGlnaHQtPmlz
U2hvd2luZygpKQogICAgICAgICBtX2hpZ2hsaWdodC0+dXBkYXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCmluZGV4IDk1YzlhZmE4NTAwMmE1NDMyNzBiN2NlNmIzODhjNzBkNDg5MTg1MTguLmYy
MGVhZWJkNjYxZjkxMmJhY2YyZDk5ZjQ0MDlkYmNkN2E5NzFlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBjbGFzcyBX
ZWJWaWV3OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYklu
c3BlY3RvckNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY4YzZiZDQ5MzljZjliMDQ4OTU3YmM3NTAwYmQ4
NTQ4YTAxZWUzYjIuLjE2MjdlYzVmYTI2YmY1OTAxZDA1OTNiNWExODM5Njk0NzkyMTkwYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAt
MzQ3LDYgKzM0Nyw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxJbmRl
eGVkRGF0YWJhc2VzKCkKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlkTW9kaWZ5
T3JpZ2luRGF0YSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJl
YWQoV2ViRGF0YWJhc2VNYW5hZ2VyKiBkYXRhYmFzZU1hbmFnZXIsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggMjdhZjFiYWU2NTNlZmYwMmY2NzA0ZjdlMzlhZDBlMWFj
NTBhZDcwYi4uOGFmYmEwZjZkNTNhZmQ1NTU4NDVjMTk1MzZjMmE5YzFlYzVmMzdkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBA
IC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZWJFbGVtZW50
UHJvcGVydHlCYWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKGNvbnN0IEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCkKLSAgICA6IG1fcmVzdWx0KHN0ZDo6bWFrZV91bmlxdWU8SGl0
VGVzdFJlc3VsdD4ocmVzdWx0KSkKKyAgICA6IG1fcmVzdWx0KG1ha2VVbmlxdWU8SGl0VGVzdFJl
c3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggYTgxYzAwZTU2YzVkZTJhZWJjMTJhYjhiNmRiMTFi
YzkzNGViYmJkYS4uZmI4OGUzOWU3YjU2YWMzMmRjZjVjZjUwMTFjMzU0ODE3MWE2YzNiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMTE1LDcgKzEx
NSw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2Vu
dGF0aW9uKF9Jbl9vcHRfIHZvaWQqIGRpY3Rpb25hCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdHJpbmc+PiByZWRpcmVjdFVSTHNWZWN0b3I7CiAgICAgaWYgKENGQXJyYXlSZWYgcmVkaXJl
Y3RVUkxzUmVmID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZGljdGlvbmFyeVJlZiwgcmVkaXJlY3RVUkxzS2V5KSkpIHsKICAgICAgICAgQ0ZJbmRleCBzaXpl
ID0gQ0ZBcnJheUdldENvdW50KHJlZGlyZWN0VVJMc1JlZik7Ci0gICAgICAgIHJlZGlyZWN0VVJM
c1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KHNpemUpOworICAgICAg
ICByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PihzaXplKTsK
ICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAg
KCpyZWRpcmVjdFVSTHNWZWN0b3IpW2ldID0gU3RyaW5nKHN0YXRpY19jYXN0PENGU3RyaW5nUmVm
PihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlZGlyZWN0VVJMc1JlZiwgaSkpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NBRDNEUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAppbmRleCAyZjFmMmY0ODA3ZWI5YzRm
ZTcwODM1ZGI3OGUzNGEzNGJjZmYzNmQwLi5kNjVkZTE5ZWU5OWM0NTE0NDVkZmJmMWIxMzU5ZGMy
YThiYTM4Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKQEAgLTIy
NCw3ICsyMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0PiBD
QUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2luZwogICAgIG1lbWNweShvdmVybGF5
UXVhZEJ1ZmZlciwgb3ZlcmxheVF1YWRWZXJ0aWNlcywgc2l6ZW9mKG92ZXJsYXlRdWFkVmVydGlj
ZXMpKTsKICAgICBvdmVybGF5UXVhZC0+VW5sb2NrKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1
YWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4oc2Nl
bmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CiB9CiAKIC8vIEZJWE1FOiA8cmRhcjovLzY1MDc4NTE+
IFNoYXJlIHRoaXMgY29kZSB3aXRoIENvcmVBbmltYXRpb24ncwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggN2JkOTg4OTYxMTFj
M2IzZmU2ZmU1NGYwYTI0Nzk2NjA2YjIyYTc1Zi4uYjIwYmFjZDYyOWViNWFjMGQyNzIwNDJkODc4
YjE2MGU4NDVhYzFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90
aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0cnVjdCBXZWJOb3RpZmljYXRp
b25DZW50ZXJQcml2YXRlIHsKIElXZWJOb3RpZmljYXRpb25DZW50ZXIqIFdlYk5vdGlmaWNhdGlv
bkNlbnRlcjo6bV9kZWZhdWx0Q2VudGVyID0gMDsKIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpX
ZWJOb3RpZmljYXRpb25DZW50ZXIoKQotICAgIDogZChzdGQ6Om1ha2VfdW5pcXVlPFdlYk5vdGlm
aWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCisgICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0
aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IDk3NjE0OGUzM2Y3NDQ2ZDdjMzg0OTk1OWQ2Y2Y3M2RlZjQ4ZjY3
ZmYuLjkyZDM5YWM0YmM1YTA1ZWVjMTRkZDFlYWI0MDk1MTZmNDQ0NjRkOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xODgwLDcgKzE4ODAsNyBAQCBib29sIFdlYlZpZXc6
OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBh
cmFtKQogICAgICAgICBtb3VzZUV2ZW50LnNldENsaWNrQ291bnQoZ2xvYmFsQ2xpY2tDb3VudCk7
CiAgICAgICAgIGhhbmRsZWQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLm1v
dXNlTW92ZWQobW91c2VFdmVudCk7CiAgICAgICAgIGlmICghbV9tb3VzZU91dFRyYWNrZXIpIHsK
LSAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxUUkFDS01P
VVNFRVZFTlQ+KCk7CisgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9IG1ha2VVbmlxdWU8
VFJBQ0tNT1VTRUVWRU5UPigpOwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXItPmNiU2l6
ZSA9IHNpemVvZihUUkFDS01PVVNFRVZFTlQpOwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNr
ZXItPmR3RmxhZ3MgPSBUTUVfTEVBVkU7CiAgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlci0+
aHduZFRyYWNrID0gbV92aWV3V2luZG93OwpAQCAtNjc5NCw3ICs2Nzk0LDcgQEAgSFJFU1VMVCBX
ZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmlld01JTUVUeXBlKF9Jbl8gQlNUUiBtaW1lVHlwZSkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIGlmICghbV9lbWJlZGRlZFZpZXdNSU1F
VHlwZXMpCi0gICAgICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzID0g
bWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAKICAgICBtX2VtYmVkZGVkVmlld01JTUVU
eXBlcy0+YWRkKHRvU3RyaW5nKG1pbWVUeXBlKSk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC02ODk0
LDcgKzY4OTQsNyBAQCB2b2lkIFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudAogICAgICAgICBBU1NFUlQoIW1f
ZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlcik7CiAgICAgfQogCi0gICAgbV9mdWxsU2NyZWVuVmlk
ZW9Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
PigpOworICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcj4oKTsKICAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIt
PnNldFZpZGVvRWxlbWVudCgmdmlkZW9FbGVtZW50KTsKICAgICBtX2Z1bGxTY3JlZW5WaWRlb0Nv
bnRyb2xsZXItPmVudGVyRnVsbHNjcmVlbigpOwogI2VuZGlmCkBAIC02OTQ2LDcgKzY5NDYsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5h
bWUsIF9Jbl9vcHRfIElXZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAg
ICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3Js
ZCo+KGlXb3JsZCk7Ci0gICAgYXV0byB1c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2Vy
U2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hp
dGVsaXN0Q291bnQpLAorICAgIGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlw
dD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlz
dENvdW50KSwKICAgICAgICAgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3Vu
dCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXRE
b2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwKICAgICAgICAgaW5qZWN0ZWRGcmFt
ZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdElu
VG9wRnJhbWVPbmx5KTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFk
ZFVzZXJTY3JpcHQod29ybGQtPndvcmxkKCksIFdURk1vdmUodXNlclNjcmlwdCkpOwpAQCAtNjk3
Myw3ICs2OTczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3JvdXAo
X0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8gc3R5bGVTaGVldCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwg
YmxhY2tsaXN0Q291bnQpLAorICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8VXNlclN0
eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3
aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQp
LAogICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVj
dEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7
CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVl
dCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0Rv
Y3VtZW50cyk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC03MjM3LDcgKzcyMzcsNyBAQCB2b2lkIFdl
YlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICB9
CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgaWYgKGFjY2VsZXJhdGVkICYmICFt
X2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQotICAgICAgICBtX2FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dD4oKnRoaXMpOworICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
ID0gbWFrZVVuaXF1ZTxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4oKnRoaXMpOwogICAg
IG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gYWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29IZWFwLmgKaW5kZXggZWVjYTczOWQyYjM5NGU4NjAzNTFiYTFiNDY0ZGU1
NDc4YjliYjE2Ny4uZGIzNmViOWRlZDJiOWUwZjVmNmVmNDBkYjZjNjk5MTlhNzMwNmQ5MiAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOiBcCiAgICAg
XAogICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0ZTsgXAogICAg
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgPSBkZWxldGU7IFwKK3R5cGVkZWYgaW50
IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX21ha2VC
aXNvTWFsbG9jZWRNYWNyb1NlbWljb2xvbmlmaWVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
SGVhcElubGluZXMuaAppbmRleCBjMDQ0ZDc3M2I4NzlhNjZkZmFkZDJlMmNhMzE1ZWVlYTM3NmZm
YTRhLi4zYWExZDIwOTUxZGJmMzM2NGU3ZDE2ZGQyMzY0M2QwY2Q5N2Y2ZjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVibGlj
OiBcCiAgICAgXAogICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0
ZTsgXAogICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgPSBkZWxldGU7IFwKK3R5
cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGlu
dCBfX21ha2VCaXNvTWFsbG9jZWRJbmxpbmVNYWNyb1NlbWljb2xvbmlmaWVyCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MmZmM2VlYjJkNzBj
MDk4MDExNGRjMTg3YzcwZjk4MDNmMWNlOTA4Li5lMzg0YTgwMmE0MTJiZTc4NzZmM2M0MTBkYTJj
MmI4ZDY3ZjQ0MmViIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNo
IGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayk6CisgICAgICAgIChzZXRXaWxsU2VuZFJl
cXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEFjY3Vt
bXVsYXRlTG9nc0ZvckNoYW5uZWwpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHQp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGR1bXBGcmFtZXNB
c1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9s
bGVyLm1tOgorICAgICAgICAoZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3
QW5kRXZlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNw
cDoKKyAgICAgICAgKERSVERhdGFPYmplY3Q6OlNldERhdGEpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxl
Z2F0ZTo6RnJhbWVMb2FkRGVsZWdhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9V
SURlbGVnYXRlLmNwcDoKKyAgICAgICAgKERSVFVuZG9NYW5hZ2VyOjpEUlRVbmRvTWFuYWdlcik6
CisgICAgICAgIChVSURlbGVnYXRlOjpVSURlbGVnYXRlKToKKyAgICAgICAgKFVJRGVsZWdhdGU6
OnJlc2V0VW5kb01hbmFnZXIpOgorICAgICAgICAqIEltYWdlRGlmZi9jYWlyby9QbGF0Zm9ybUlt
YWdlQ2Fpcm8uY3BwOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoKKyAgICAg
ICAgKGNyZWF0ZVZpZXdCYWNrZW5kKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oOgorICAgICAgICAq
IFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvQ291bnRlcnMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0phdmFT
Y3JpcHRUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkpTVGVzdCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVdlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dGVzdE1vdmluZ1VzaW5nRW5zdXJlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RNb3Zp
bmdVc2luZ0FkZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkxvY2tUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SZWZDb3VudGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vh
a1B0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkNBUmluZ0J1ZmZlclRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjcmVhdGVUZXN0VmFsdWUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9y
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OldlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpXZWJLaXQyV2lsbExvYWRUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxl
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Rm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRs
ZVRlc3Q6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcDoKKyAgICAgICAgKHNlcnZlckNhbGxi
YWNrKToKKyAgICAgICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Qcm94eUhUVFBTKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKGFwcGx5V29ya2Fyb3VuZFRvQWxsb3dX
cml0aW5nQXR0cmlidXRlZFN0cmluZ3NUb0l0ZW1Qcm92aWRlcnMpOgorICAgICAgICAoLVtUZXN0
V0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjphZGRUb1dpbmRvdzpdKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmg6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOgorICAgICAg
ICAoLVtUZXN0Rm9udE9wdGlvbnMgaW5pdFdpdGhGb250T3B0aW9uczpdKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZENyZWF0ZVBhZ2UpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1X
ZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaDoK
KyAgICAgICAgKFdUUjo6dG9TVEQpOgorICAgICAgICAoV1RSOjp0b1dURlN0cmluZyk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OmNyZWF0
ZVRlc3RVUkwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cnVuVGVzdCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldERl
ZmF1bHRDYWxlbmRhclR5cGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50
U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RSOjpnZXRHREtLZXlTeW1Gb3JLZXlSZWYp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEtleWJvYXJkSW5w
dXRNb2RlSWRlbnRpZmllcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRT
ZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3du
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdUUjo6d3BlS2V5
U3ltRm9yS2V5UmVmKToKKwogMjAxOS0wOC0xMiAgVGFrYXNoaSBLb21vcmkgIDxUYWthc2hpLktv
bW9yaUBzb255LmNvbT4KIAogICAgICAgICBbV1RGXSBUaHJlYWQ6OnJlbW92ZUZyb21UaHJlYWRH
cm91cCBsZWFrcyB3ZWFrIHBvaW50ZXJzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApp
bmRleCBlODE3YTU3M2E1OGQxNTlkNGNmMjM0OTgyY2NhMDRkY2Q2NGI2MDRhLi44ZjEzZWUwMDNh
M2RlMGEwZDk0ODYxMTkxMzIyZjM0ZjhhZGVlZDI0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmNwcApAQCAtMzYzLDExICszNjMsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgYWRkVVJMVG9S
ZWRpcmVjdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW4KICAg
ICBBU1NFUlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5n
R2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShvcmlnaW4uZ2V0KCkpOwotICAgIGF1dG8gb3JpZ2lu
QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1
dG8gb3JpZ2luQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltd
PihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKG9yaWdpbi5nZXQo
KSwgb3JpZ2luQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIG1heExlbmd0aCA9
IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShkZXN0aW5hdGlvbi5nZXQoKSk7Ci0g
ICAgYXV0byBkZXN0aW5hdGlvbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhM
ZW5ndGggKyAxKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dl
dFVURjhDU3RyaW5nKGRlc3RpbmF0aW9uLmdldCgpLCBkZXN0aW5hdGlvbkJ1ZmZlci5nZXQoKSwg
bWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nh
c3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xMzA0
LDcgKzEzMDQsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhl
YWRlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKUwogICAgIEFTU0VSVCghKmV4Y2Vw
dGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKGhlYWRlci5nZXQoKSk7Ci0gICAgYXV0byBoZWFkZXJCdWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBoZWFkZXJCdWZmZXIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEp
OwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaGVhZGVyLmdldCgpLCBoZWFkZXJCdWZmZXIu
Z2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpA
QCAtMjM3OSw3ICsyMzc5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRQYWludEJyb2tl
bkltYWdlKGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChKU1N0cmluZ1JlZiBjaGFubmVsKQogewogICAgIHNp
emVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY2hhbm5l
bCk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3Ro
ICsgMSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoY2hh
bm5lbCwgYnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFdlYkNvcmVUZXN0U3Vw
cG9ydDo6c2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZSh7IGJ1ZmZlci5nZXQoKSB9KTsKQEAgLTI0
NDksNyArMjQ0OSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHQoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTU3RyaW5nUmVmIHNjcmlwdCwgSlNWYWx1ZVJlCiAgICAgY2FjaGVUZXN0UnVu
bmVyQ2FsbGJhY2soY2FsbGJhY2tJRCwgY2FsbGJhY2spOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0
Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdU
Ujo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0
aGlzKTsKIAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcoSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRy
KHNjcmlwdCksIEpTU3RyaW5nR2V0TGVuZ3RoKHNjcmlwdCkpOwogICAgIG1fVUlTY3JpcHRDb250
ZXh0LT5ydW5VSVNjcmlwdChzY3JpcHRTdHJpbmcsIGNhbGxiYWNrSUQpOwpAQCAtMjUwNiw3ICsy
NTA2LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1dG8gZmlsZSA9IGFk
b3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBudWxscHRyKSk7CiAg
ICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gZmlsZUJ1
ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oZmlsZUJ1ZmZl
clNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZpbGVC
dWZmZXIuZ2V0KCksIGZpbGVCdWZmZXJTaXplKTsKIAogICAgICAgICBtX29wZW5QYW5lbEZpbGVz
LnB1c2hfYmFjayhmaWxlQnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQppbmRleCA2NGRiMWQxN2Y5YmM5Y2I4Y2U2ZDgyZjliNzdkYmYzODc1
YWNhMGNhLi45NTdjNGU2Mzk1OTExODYzNWQ3MjIxNWUwY2FjN2NiNmZkNzIwY2RmIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xNTM1LDcgKzE1MzUs
NyBAQCBzdGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQog
ICAgIC8vIHRoZSByZXN1bHQgd2l0aG91dCBhbnkgY29udmVyc2lvbi4KICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gc3RyaW5nUmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0
cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpaW5uZXJUZXh0KSk7CiAgICAgc2l6ZV90IGJ1ZmZl
clNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nUmVmLmdldCgp
KTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXpl
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNo
YXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0
VVRGOENTdHJpbmdOb25TdHJpY3Qoc3RyaW5nUmVmLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZl
clNpemUpOwogICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiJUBcbiIsIFN0cmluZzo6ZnJvbVVU
RjhXaXRoTGF0aW4xRmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCA0NjFiZDNkZjNlYmIyNjAzYWMzMjE4Mjg4
MjE4ZGQ4ZjY5MTY4ZmZkLi4zYmUzMzIyMWQ2YjNlYmMzNTZkNTFlMzM0YTI0ZDkyOWFlMjUzYTll
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5tbQpAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2xhc3NN
ZXRob2RTd2l6emxlcj4gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWCiB7CiAg
ICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAgICAg
IHZpZXcgPSBbKFdlYkhUTUxWaWV3ICopdmlldyBfaGl0Vmlld0ZvckV2ZW50OmV2ZW50XTsKLSAg
ICByZXR1cm4gIVt2aWV3IGlzS2luZE9mQ2xhc3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IHN0ZDo6
bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0
b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2
ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpIDogTlVMTDsKKyAgICByZXR1cm4gIVt2aWV3IGlzS2lu
ZE9mQ2xhc3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6
emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpIDog
TlVMTDsKIH0KIAogc3RhdGljIE5TVUludGVnZXIgc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1
dHRvbnMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmpl
Y3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCmluZGV4
IGVmMmQyZWZiODU5ZjRiOGEyMmYzMGM0NjdhY2UxZjhhYWQxNTdhNGQuLjc2YTIxYTU4YTlmNjZk
ZGUxNjA3MjlmOGZlZTFlMTVmOTQ5ZTY2MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RFJURGF0YU9iamVjdC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBTVERNRVRIT0RJTVAgRFJURGF0
YU9iamVjdDo6U2V0RGF0YShfSW5fIEZPUk1BVEVUQyogcGZvcm1hdGV0YywgX0luXyBTVEdNRURJ
VU0qCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogCi0gICAgYXV0byBmb3JtYXRldGMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZPUk1BVEVU
Qz4oKTsKKyAgICBhdXRvIGZvcm1hdGV0YyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPEZPUk1BVEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRp
dW1EZWxldGVyPiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmb3Jt
YXRldGMuZ2V0KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCmluZGV4IGM4MGRmMWJlNWYyZGU0N2QzYjgzMTYz
N2VmNmU5ZmJjZDkzNGM4ZTYuLjExYzkzMzliMTZkODA0ZDJjMjAxYzkzMjlmNGE4YzM1NDQyYTgz
Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0
ZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNw
cApAQCAtNzIsOSArNzIsOSBAQCBzdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQoSVdlYkZyYW1lKiB3ZWJGcmFtZSkKIH0KIAogRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9h
ZERlbGVnYXRlKCkKLSAgICA6IG1fZ2NDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8R0NDb250
cm9sbGVyPigpKQotICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5p
cXVlPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPigpKQotICAgICwgbV90ZXh0SW5wdXRDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dElucHV0Q29udHJvbGxlcj4oKSkKKyAgICA6IG1fZ2ND
b250cm9sbGVyKG1ha2VVbmlxdWU8R0NDb250cm9sbGVyPigpKQorICAgICwgbV9hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcihtYWtlVW5pcXVlPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPigpKQorICAg
ICwgbV90ZXh0SW5wdXRDb250cm9sbGVyKG1ha2VVbmlxdWU8VGV4dElucHV0Q29udHJvbGxlcj4o
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdh
dGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCmluZGV4IGYw
YWRiY2U0Nzk2ZmFiZjRmMGQ0MmIyNzExNjMzNzAxYWM3ODEzMTQuLjQ3YWEyNzJiZjE5NWNkOWEy
NWFmMjg2NTVkMzcxZjQxNjAwZjQ1OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9VSURlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxl
Z2F0ZS5jcHAKQEAgLTEwMSw4ICsxMDEsOCBAQCBjbGFzcyBEUlRVbmRvTWFuYWdlciB7CiB9Owog
CiBEUlRVbmRvTWFuYWdlcjo6RFJUVW5kb01hbmFnZXIoKQotICAgIDogbV9yZWRvU3RhY2soc3Rk
OjptYWtlX3VuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCi0gICAgLCBtX3VuZG9TdGFjayhzdGQ6Om1h
a2VfdW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKKyAgICA6IG1fcmVkb1N0YWNrKG1ha2VVbmlxdWU8
RFJUVW5kb1N0YWNrPigpKQorICAgICwgbV91bmRvU3RhY2sobWFrZVVuaXF1ZTxEUlRVbmRvU3Rh
Y2s+KCkpCiB7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIERSVFVuZG9NYW5hZ2VyOjp1
bmRvKCkKIH0KIAogVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCi0gICAgOiBtX3VuZG9NYW5hZ2Vy
KHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb01hbmFnZXI+KCkpCisgICAgOiBtX3VuZG9NYW5hZ2Vy
KG1ha2VVbmlxdWU8RFJUVW5kb01hbmFnZXI+KCkpCiAgICAgLCBtX2Rlc2t0b3BOb3RpZmljYXRp
b25zKG5ldyBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyKQogewogICAgIG1fZnJhbWUu
Ym90dG9tID0gMDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkK
IAogdm9pZCBVSURlbGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKCkKIHsKLSAgICBtX3VuZG9NYW5h
Z2VyID0gc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKKyAgICBtX3VuZG9NYW5h
Z2VyID0gbWFrZVVuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKIH0KIAogSFJFU1VMVCBVSURlbGVn
YXRlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9jYWlyby9QbGF0Zm9ybUlt
YWdlQ2Fpcm8uY3BwIGIvVG9vbHMvSW1hZ2VEaWZmL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5j
cHAKaW5kZXggNGI0OGNjZmFlNmQxY2NlYmI2YmZmYjVlMTFlMjNkMTNmZTQzZTgxMi4uOWVlNGFk
NTAxMGFmZDM3NjMyNzJiYTk4MGNiYTNkNGI2NDdiMzZlMSAxMDA2NDQKLS0tIGEvVG9vbHMvSW1h
Z2VEaWZmL2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKKysrIGIvVG9vbHMvSW1hZ2VEaWZm
L2NhaXJvL1BsYXRmb3JtSW1hZ2VDYWlyby5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
IDxjYWlyby5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSW1hZ2VEaWZmIHsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dz
ZXIvd3BlL21haW4uY3BwCmluZGV4IGJlNjQ2MGU1NmI3YjcwY2QyNDgwZmM4N2RlMmI5YmE5NzBl
NThjMzguLjQzOTE5Mjk3OTFkZDY3MTMxYzg1OGExNjY4OWM1MmJhZGMxZGQ4NjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci93cGUvbWFpbi5jcHAKQEAgLTEyOSw4ICsxMjksOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gZGVjaWRl
UGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyAqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVz
dAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXUEVUb29saW5nQmFja2VuZHM6OlZpZXdCYWNrZW5k
PiBjcmVhdGVWaWV3QmFja2VuZCh1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQogewog
ICAgIGlmIChoZWFkbGVzc01vZGUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdQ
RVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpXaW5kb3dWaWV3
QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdQRVRv
b2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpXaW5kb3dWaWV3QmFja2VuZD4o
d2lkdGgsIGhlaWdodCk7CiB9CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTI1MSw3ICsyNTEsNyBA
QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICBudWxscHRyKSk7CiAg
ICAgZ19vYmplY3RfdW5yZWYoc2V0dGluZ3MpOwogCi0gICAgYmFja2VuZFB0ci0+c2V0SW5wdXRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJbnB1dENsaWVudD4obG9vcCwgd2ViVmlldykpOworICAg
IGJhY2tlbmRQdHItPnNldElucHV0Q2xpZW50KG1ha2VVbmlxdWU8SW5wdXRDbGllbnQ+KGxvb3As
IHdlYlZpZXcpKTsKICNpZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkgJiYgSEFWRV9BQ0NF
U1NJQklMSVRZCiAgICAgYXV0byogYWNjZXNzaWJsZSA9IHdwZV92aWV3X2JhY2tlbmRfZGlzcGF0
Y2hfZ2V0X2FjY2Vzc2libGUod3BlQmFja2VuZCk7CiAgICAgaWYgKEFUS19JU19PQkpFQ1QoYWNj
ZXNzaWJsZSkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRleHQuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCmluZGV4IDRlMDIwZjE5NmNkMDMzZDYxZWUwZTYyOGY2
YTFlNTljYTFjMzM0NTguLjBiODRkMmQ0NTQ1NTgzZGU5ZmMwZGVjMTJhNGFhODhhNjU5ZWQxOTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udGV4dC5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udGV4dC5oCkBAIC02OCw2ICs2OCw3IEBAIHR5cGVkZWYgZW51bSAgewogfSBD
YWxsYmFja1R5cGU7CiAKIGNsYXNzIFVJU2NyaXB0Q29udGV4dCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVUlTY3JpcHRDb250ZXh0KTsK
IHB1YmxpYzoKICAgICBVSVNjcmlwdENvbnRleHQoVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUmKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6
emxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVy
LmgKaW5kZXggMjhkYjEwYTQ3OTk2MzBjNjRjNTVkMDc4NmMwMGVlMDk0ODkxNDVlMi4uMzliNGU1
ZWE3MTgzNjg4Y2RlYzliZWZjYzk2NGNlODkzYTU0M2YwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKKysrIGIvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKQEAgLTI2LDkgKzI2LDEx
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG9iamMvcnVudGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIGNsYXNz
IENsYXNzTWV0aG9kU3dpenpsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENsYXNzTWV0aG9kU3dpenpsZXIpOwogcHVibGljOgogICAg
IENsYXNzTWV0aG9kU3dpenpsZXIoQ2xhc3MsIFNFTCwgSU1QKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMu
aAppbmRleCBmOWVhMjI0MDI2MTUwZDhlMWFjNmJiNzYxNWI2ZGUzODkwYWY2NzBlLi5hYjVjNTJm
NzVkMWFjNmFmOTYwYWMxNGNhNzBiNWNiNzRmYTM2Mjg4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvdW50ZXJzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5o
CkBAIC0yNyw2ICsyNyw4IEBACiAjaWZuZGVmIENvdW50ZXJzX2gKICNkZWZpbmUgQ291bnRlcnNf
aAogCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKwogc3RydWN0IENvcHlNb3ZlQ291bnRl
ciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkNvdW50OwogICAgIHN0YXRpYyB1
bnNpZ25lZCBjb3B5Q291bnQ7CkBAIC01MCw2ICs1Miw3IEBAIHN0cnVjdCBDb3B5TW92ZUNvdW50
ZXIgewogCiAKIHN0cnVjdCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0cnVj
dGlvbkNvdW50OwogICAgIHN0YXRpYyB1bnNpZ25lZCBkZXN0cnVjdGlvbkNvdW50OwogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwCmluZGV4IDIxMzZlOThkOGViYjg3NWQ1OTdm
YzZlMDdjN2IwMWVkNWI4NGFlMTYuLjZhMjMzNjMyOTQxYWNmNjA3MDU5NDk0MjY0MDFiMzI3MzM3
YzcwODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwCkBAIC03NSw3ICs3
NSw3IEBAIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IHJ1bkpTVGVzdChjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBXS1BhCiAgICAgVXRpbDo6cnVuKCZjb250ZXh0LmRp
ZEZpbmlzaCk7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZShjb250ZXh0LmFjdHVhbFN0cmluZy5nZXQoKSk7Ci0gICAgYXV0byBidWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZm
ZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUp
OwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoY29udGV4dC5hY3R1YWxTdHJpbmcuZ2V0KCks
IGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbXBhcmVKU1Jl
c3VsdChzY3JpcHQsIGJ1ZmZlci5nZXQoKSwgZXhwZWN0ZWRSZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAppbmRleCA4ZjhkNzY4YTUzYzI3NTFhMjQzZTA1
OTVlMmMwYzBmNDQ1ZGQ5NmM4Li5iYmJmZjcwOWU2N2QzNTliNGU0ODE3MWVkN2M0YzI0MDA4YTU2
N2Y0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcApAQCAtNjks
NyArNjksNyBAQCBXS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVz
dChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdE5hbWUsIFdLVAogc3RkOjpzdHJpbmcgdG9TVEQoV0tT
dHJpbmdSZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVf
dCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdl
dCgpLCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBz
dHJpbmdMZW5ndGggLSAxKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1XZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCmlu
ZGV4IGFkMmE3MzJkNTE5NDdiYmM3YWZjNjRlMjdkNDIxNWNlMzI4N2RkZWUuLjBjMjdhNDYxNjQ1
ZmJhMTJhNWM2OTVkOTMyNjQzMDUyNmM0ZWYxMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVdlYlZpZXcuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBQbGF0Zm9ybVdlYlZpZXdfaAog
I2RlZmluZSBQbGF0Zm9ybVdlYlZpZXdfaAogCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KwogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgogI2Vu
ZGlmCkBAIC02Myw2ICs2NSw3IEBAIHR5cGVkZWYgdWludDMyX3QgV0tFdmVudE1vZGlmaWVyczsK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9y
bVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZik7CiAgICAgZXhwbGljaXQgUGxhdGZvcm1X
ZWJWaWV3KFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAppbmRleCA0YjEwYzg2YTJhYjczMmUxZWE2Mjc0
ODRjYzc4OTQwZmI2Y2Q2ZTk2Li4yYTA2ZjhiYTVjYTlmZWI0OTJhMzUyMmM1YzY1NTAxMzhkMjIz
N2U1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCkBAIC00
MDcsNiArNDA3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIGRlc3RydWN0b3JzKQogc3RhdGljIGlu
dCBzbm93Zmxha2VzID0gMDsKIHN0YXRpYyBpbnQgbWVsdGVkID0gMDsKIHN0cnVjdCBzbm93Zmxh
a2UgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdm9p
ZCByZXNldCgpIHsgc25vd2ZsYWtlcyA9IG1lbHRlZCA9IDA7IH0KICAgICBzbm93Zmxha2UoKSB7
ICsrc25vd2ZsYWtlczsgfQogICAgIH5zbm93Zmxha2UoKSB7ICsrbWVsdGVkOyB9CkBAIC00MTYs
NyArNDE3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiB7CiAgICAgLy8gVW5p
cXVlIHNub3dmbGFrZXMgY2Fubm90IGJlIGNvcGllZC4KICAgICB7Ci0gICAgICAgIGF1dG8gcyA9
IG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAg
YXV0byBzID0gbWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CiAgICAgICAgIEVYUEVDVF9FUShtZWx0ZWQsIDAp
OwogICAgIH0KQEAgLTQyNSw3ICs0MjYsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0
cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gcyA9IG1h
a2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgYXV0
byBzID0gbWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBV
bmV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBjKFdURk1vdmUocykpOwogICAg
ICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CiAgICAgICAgIEVYUEVDVF9FUShtZWx0ZWQs
IDApOwpAQCAtNDQ2LDcgKzQ0Nyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQog
ICAgIH07CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxh
a2U+LCBpbnQ+IHMoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBFeHBl
Y3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPiwgaW50PiBzKG1ha2VVbmlxdWU8c25vd2Zs
YWtlPigpKTsKICAgICAgICAgcGxvdyhXVEZNb3ZlKHMpLnZhbHVlKCkpOwogICAgIH0KICAgICBF
WFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CkBAIC00NTQsNyArNDU1LDcgQEAgVEVTVChXVEZfRXhw
ZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAg
ICAgICBFeHBlY3RlZDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4
cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKSk7CisgICAgICAgIEV4cGVjdGVk
PGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVu
aXF1ZTxzbm93Zmxha2U+KCkpKTsKICAgICAgICAgcGxvdyhXVEZNb3ZlKHMpLmVycm9yKCkpOwog
ICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CkBAIC00NjIsNyArNDYzLDcgQEAg
VEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwog
CiAgICAgewotICAgICAgICBFeHBlY3RlZDx2b2lkLCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtl
Pj4gcyhtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSkpOworICAg
ICAgICBFeHBlY3RlZDx2b2lkLCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5l
eHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93KFdURk1vdmUo
cykuZXJyb3IoKSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAppbmRleCA4
NGRhNWVjM2ZmYzI0OGFjZGQ5ZTM2MzMwMzhjNjlkYWU4OTEyMDk5Li43YjhmYWYyODhhYmMwN2Nm
YWY4YjUyNzEyMzhmNzZkMDEzMDEyZWU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgVEVTVChXVEZf
SGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleSkKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6
dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92
ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIFRFU1QoV1RG
X0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlJbml0aWFsQ291bnQpCiAKICAgICBIYXNoQ291
bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhh
c2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtl
VW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgaGFzaENvdW50ZWRT
ZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMTIpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yOTgsNyAr
Mjk4LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdS
YXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBo
YXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxp
bnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNo
Q291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBA
IFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1Bv
aW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hD
b3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4o
NSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3Vu
dGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgVEVT
VChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9HZXRVc2luZ1Jhd1BvaW50ZXIpCiB7
CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0
OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAg
YXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUp
OwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMzcsNyArMzM3LDcgQEAgVEVTVChXVEZfSGFz
aENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBI
YXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hD
b3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hNYXAuY3BwCmluZGV4IDFlMTYzZDM4OTk4ZTZiYWJmZmY1Mzg0MTNjY2Ey
OGFhNmQyOTg5ODIuLmE4MGNhNzQ5NGE4ZjlhNzk2N2UxZTQ5NDZmZThjY2E2MzljYmI1OGIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCkBAIC0xOTEsNyArMTkx
LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaE1hcDxzdGQ6
OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0g
ICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIp
OwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25z
dHJ1Y3Rpb25Db3VudCk7CkBAIC0yMzAsNyArMjMwLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5p
cXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1
ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91
bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAg
ICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAg
VEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQog
ewogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0
byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCog
cHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAy
KTsKIApAQCAtMjU1LDcgKzI1NSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9H
ZXRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50Piwg
aW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChX
VEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yNjksNyArMjY5LDcgQEAgVEVTVChXVEZfSGFz
aE1hcCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hNYXA8
c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsK
IAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRy
KSwgMik7CiAKQEAgLTI4OSw3ICsyODksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJL
ZXlfVGFrZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVl
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0
ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTU2Mywx
MiArNTYzLDEyIEBAIFRFU1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9VbmlxdWVQb2ludGVyKQogewog
ICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZD4+IG1hcDsKICAg
ICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkPigxKTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazx1bnNpZ25lZD4oMSk7IH0pOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICptYXAuZ2V0KDEp
KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXkpOwogICAg
ICAgICBFWFBFQ1RfVFJVRShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgIGF1dG8gYWRk
UmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNp
Z25lZD4oMik7IH0pOworICAgICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtd
IHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkPigyKTsg
fSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1hcC5nZXQoMSkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMXUsICphZGRSZXN1bHQyLml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgxdSwgYWRkUmVzdWx0Mi5pdGVyYXRvci0+a2V5KTsKQEAgLTU5MCw2ICs1OTAsNyBAQCBU
RVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfUmVmUHRyKQogfQogCiBjbGFzcyBPYmplY3RXaXRoUmVm
TG9nZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmpl
Y3RXaXRoUmVmTG9nZ2VyKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogICAgICAgICA6IG1fbG9n
Z2VyKFdURk1vdmUobG9nZ2VyKSkKQEAgLTYwNCw3ICs2MDUsNyBAQCB2b2lkIHRlc3RNb3ZpbmdV
c2luZ0Vuc3VyZShSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKIHsKICAgICBIYXNoTWFwPHVuc2ln
bmVkLCBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0V2l0aFJlZkxvZ2dlcj4+IG1hcDsKICAgICAKLSAg
ICBtYXAuZW5zdXJlKDEsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhS
ZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7IH0pOworICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsg
cmV0dXJuIG1ha2VVbmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsg
fSk7CiB9CiAKIHZvaWQgdGVzdE1vdmluZ1VzaW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2Vy
KQpAQCAtNjEyLDcgKzYxMyw3IEBAIHZvaWQgdGVzdE1vdmluZ1VzaW5nQWRkKFJlZjxSZWZMb2dn
ZXI+JiYgbG9nZ2VyKQogICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmpl
Y3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogCiAgICAgYXV0byYgc2xvdCA9IG1hcC5hZGQoMSwgbnVs
bHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIHNsb3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVj
dFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7CisgICAgc2xvdCA9IG1ha2VVbmlxdWU8
T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsKIH0KIAogVEVTVChXVEZfSGFz
aE1hcCwgRW5zdXJlX0xhbWJkYXNDYXB0dXJpbmdCeVJlZmVyZW5jZSkKQEAgLTY4Myw2ICs2ODQs
NyBAQCBURVNUKFdURl9IYXNoTWFwLCBWYWx1ZUlzRGVzdHJ1Y3RlZE9uUmVtb3ZlKQogVEVTVChX
VEZfSGFzaE1hcCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiB7CiAgICAgc3RydWN0IERl
cmVmT2JzZXJ2ZXIgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIE5FVkVSX0lOTElORSB2b2lkIHJlZigpCiAgICAgICAgIHsKICAgICAgICAgICAgICsr
Y291bnQ7CkBAIC02OTcsNyArNjk5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyTm90WmVy
b2VkQmVmb3JlRGVyZWYpCiAgICAgICAgIGNvbnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2VydmVkQnVj
a2V0IHsgbnVsbHB0ciB9OwogICAgIH07CiAKLSAgICBhdXRvIG9ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxEZXJlZk9ic2VydmVyPigpOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBtYWtlVW5pcXVl
PERlcmVmT2JzZXJ2ZXI+KCk7CiAKICAgICBIYXNoTWFwPFJlZlB0cjxEZXJlZk9ic2VydmVyPiwg
aW50PiBtYXA7CiAgICAgbWFwLmFkZChhZG9wdFJlZihvYnNlcnZlci5nZXQoKSksIDUpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAppbmRleCA3MWVjZmRkYjg0MmI2
YmQ1MTY0MWNhMDViNjEwOGFkNDhmNjJiYjdkLi44NzI2OGM3NGYwY2I4ZmMxNDllYmY2MGM4NTg4
ZmNlZDM1ODFhMjA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNw
cApAQCAtMTI4LDcgKzEyOCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleSkKIAog
ICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5p
cXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBURVNUKFdURl9IYXNo
U2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7
CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAg
VEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQog
ewogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IHNldDsKIAotICAgIGF1dG8gdW5p
cXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9
IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAg
LTE3MSw3ICsxNzEsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNp
bmdSYXdQb2ludGVyKQogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVl
UHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBz
ZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBURVNUKFdU
Rl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfVGFrZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hT
ZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikp
OwogCkBAIC0yODMsNiArMjgzLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgQ29weUNhcGFjaXR5SXNO
b3RPbkJvdW5kYXJ5KQogVEVTVChXVEZfSGFzaFNldCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVy
ZWYpCiB7CiAgICAgc3RydWN0IERlcmVmT2JzZXJ2ZXIgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIHJlZigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgICsrY291bnQ7CkBAIC0yOTcsNyArMjk4LDcgQEAgVEVTVChXVEZf
SGFzaFNldCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiAgICAgICAgIGNvbnN0IERlcmVm
T2JzZXJ2ZXIqIG9ic2VydmVkQnVja2V0IHsgbnVsbHB0ciB9OwogICAgIH07CiAKLSAgICBhdXRv
IG9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJlZk9ic2VydmVyPigpOworICAgIGF1dG8g
b2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CiAKICAgICBIYXNoU2V0PFJl
ZlB0cjxEZXJlZk9ic2VydmVyPj4gc2V0OwogICAgIHNldC5hZGQoYWRvcHRSZWYob2JzZXJ2ZXIu
Z2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RI
YXNoU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNw
cAppbmRleCA2NTdiZTQxZDYyMDcyNDQ2N2E1NTQ5ZTJhYjVhMTk0MWM0ZTM3M2MxLi5iNzcwYTVi
MjdjMWQyYjA5NWE1YmI1OWQ2NWFjM2Y0ZGM0ZTRlNjhlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgVEVTVChX
VEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleSkKIAogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5p
cXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gbGlzdDsKIAotICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPigpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBF
WFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNv
dW50KTsKQEAgLTM5Niw3ICszOTYsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRy
S2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVf
cHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPGludD4oNSk7CiAgICAgYXV0byBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbGlz
dC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtNDEwLDcgKzQxMCw3IEBAIFRFU1QoV1RG
X0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAg
ICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgYXV0byBwdHIg
PSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApA
QCAtNDIxLDkgKzQyMSw5IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfSW5z
ZXJ0QmVmb3JlVXNpbmdSYXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVl
X3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHJXaXRoMiA9IHN0ZDo6bWFrZV91
bmlxdWU8aW50PigyKTsKKyAgICBhdXRvIHVuaXF1ZVB0cldpdGgyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8aW50PigyKTsKICAgICBhdXRvIHB0cldpdGgyID0gdW5pcXVlUHRy
V2l0aDIuZ2V0KCk7Ci0gICAgYXV0byB1bmlxdWVQdHJXaXRoNCA9IHN0ZDo6bWFrZV91bmlxdWU8
aW50Pig0KTsKKyAgICBhdXRvIHVuaXF1ZVB0cldpdGg0ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50Pig0KTsKICAgICBhdXRvIHB0cldpdGg0ID0gdW5pcXVlUHRyV2l0aDQu
Z2V0KCk7CiAKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cldpdGgyKSk7CkBAIC00MzUs
NyArNDM1LDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9JbnNlcnRCZWZv
cmVVc2luZ1Jhd1BvaW50ZXIpCiAgICAgQVNTRVJUX0VRKHB0cldpdGg0LCBsaXN0Lmxhc3QoKS5n
ZXQoKSk7CiAgICAgQVNTRVJUX0VRKDQsICpsaXN0Lmxhc3QoKS5nZXQoKSk7CiAKLSAgICBhdXRv
IHVuaXF1ZVB0cldpdGgzID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDMpOworICAgIGF1dG8gdW5p
cXVlUHRyV2l0aDMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDMpOwog
ICAgIGF1dG8gcHRyV2l0aDMgPSB1bmlxdWVQdHJXaXRoMy5nZXQoKTsKIAogICAgIGxpc3QuaW5z
ZXJ0QmVmb3JlKHB0cldpdGg0LCBXVEZNb3ZlKHVuaXF1ZVB0cldpdGgzKSk7CkBAIC00NjIsNyAr
NDYyLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jh
d1BvaW50ZXIpCiAKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1
ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBh
dXRvKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHIpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcAppbmRleCAyZGNjZWRj
YWRjYzZjMjIyNzNkZWJjMjBmM2ZmNjc3Yzg3MzI5MDI3Li41ZmQzMWJmMWM5YWJlY2ZiOGFiZTcz
NTYwOGE0N2M1NjA0MzA0NzcyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Mb2NrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNw
cApAQCAtNDIsOSArNDIsOSBAQCBzdHJ1Y3QgTG9ja0luc3BlY3RvciB7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBMb2NrVHlwZT4KIHZvaWQgcnVuTG9ja1Rlc3QodW5zaWduZWQgbnVtVGhyZWFkR3JvdXBz
LCB1bnNpZ25lZCBudW1UaHJlYWRzUGVyR3JvdXAsIHVuc2lnbmVkIHdvcmtQZXJDcml0aWNhbFNl
Y3Rpb24sIHVuc2lnbmVkIG51bUl0ZXJhdGlvbnMpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExv
Y2tUeXBlW10+IGxvY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxMb2NrVHlwZVtdPihudW1UaHJlYWRH
cm91cHMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGRvdWJsZVtdPihudW1UaHJlYWRHcm91cHMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFk
PltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPExvY2tUeXBlW10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPGRv
dWJsZVtdPiB3b3JkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGRvdWJsZVtd
PihudW1UaHJlYWRHcm91cHMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltd
PiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVh
ZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3VwKTsKIAogICAgIGZvciAo
dW5zaWduZWQgdGhyZWFkR3JvdXBJbmRleCA9IG51bVRocmVhZEdyb3VwczsgdGhyZWFkR3JvdXBJ
bmRleC0tOykgewogICAgICAgICB3b3Jkc1t0aHJlYWRHcm91cEluZGV4XSA9IDA7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCmluZGV4IDQ1MmUyMjc3MWRj
MDY0YWRhYWZlNjIwZWIzM2U4MDEzMGY3OWYxOTcuLmUwMGEwOWIyYTE3YWE3MzQ4NTZlNDJjMTE0
NWNiZTYwODYzZjBhMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BhcmtpbmdMb3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bhcmtp
bmdMb3QuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgc3RydWN0IFNpbmdsZUxhdGNoVGVzdCB7CiAK
IHZvaWQgcnVuUGFya2luZ1Rlc3QodW5zaWduZWQgbnVtTGF0Y2hlcywgdW5zaWduZWQgZGVsYXks
IHVuc2lnbmVkIG51bVRocmVhZHMsIHVuc2lnbmVkIG51bVNpbmdsZVVucGFya3MpCiB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFNpbmdsZUxhdGNoVGVzdFtdPiB0ZXN0cyA9IHN0ZDo6bWFrZV91bmlx
dWU8U2luZ2xlTGF0Y2hUZXN0W10+KG51bUxhdGNoZXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aW5nbGVMYXRjaFRlc3RbXT4gdGVzdHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxTaW5nbGVMYXRjaFRlc3RbXT4obnVtTGF0Y2hlcyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGxh
dGNoSW5kZXggPSBudW1MYXRjaGVzOyBsYXRjaEluZGV4LS07KQogICAgICAgICB0ZXN0c1tsYXRj
aEluZGV4XS5pbml0aWFsaXplKG51bVRocmVhZHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SZWZDb3VudGVyLmNwcAppbmRleCAwODFkZjllNGZjMWQyNTFkODE0YjIyNjRiZDJk
MGUwNTJjMGJkNDFmLi5mNGVmOTgzYjFhOWZiZTg5ODA3Yzc1YWMyOGZkYjYyNmQ5YTk2YTExIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcApAQCAtMTcw
LDcgKzE3MCw3IEBAIFRFU1QoV1RGLCBSZWZDb3VudGVyKQogVEVTVChXVEYsIFJlZkNvdW50ZXJE
ZWxldGVDb3VudGVyV2l0aE91dHN0YW5kaW5nVG9rZW5zKQogewogICAgIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0
Q291bnRlcj4oWyZdKFJlZkNvdW50ZXJFdmVudCBldmVudCkgeworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGVzdENvdW50ZXI+IGNvdW50ZXIgPSBtYWtlVW5pcXVlPFRlc3RDb3VudGVyPihbJl0o
UmVmQ291bnRlckV2ZW50IGV2ZW50KSB7CiAgICAgICAgICAgICBpZiAoIWNvdW50ZXItPnZhbHVl
KCkpCiAgICAgICAgICAgICAgICAgY291bnRlciA9IG51bGxwdHI7CiAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAppbmRleCAwZWYxZjFkYTQ0YmFj
NTE1NGZmZmQzMzIxMzk1ZTlmMWUyZDJhN2MyLi41MWVjYTA3NjhkMmNjZTFjOWEzMjk1NTUyZDM1
MDA5ZmY0ZmQ1NmJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9W
YXJpYW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNw
cApAQCAtMjEyLDcgKzIxMiw3IEBAIFRFU1QoV1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1
Y3RvcikKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2Nv
cGU7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICAgICAgVmFy
aWFudDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4g
diA9IFdURk1vdmUodW5pcXVlUHRyKTsKIAogICAgICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKaW5kZXggMTUwYjliNzZjOGE1NjVlMzY1NTQ4MzZl
MGJiZWMwNTA1Yzc4NDhmMi4uN2U2MzA2OTNlZWM2MDQxYTM3NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTUwLDYg
KzUwLDcgQEAgc3RydWN0IEludCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnQ+IHsKIH07CiAK
IGNsYXNzIEJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QmFzZT4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJhc2UoKSB7IH0KIApAQCAtNTc4LDEwICs1
NzksMTAgQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hhc2hTZXRFeHBhbnNpb24pCiAgICAgICAg
IEVYUEVDVF9FUSh3ZWFrSGFzaFNldC5jYXBhY2l0eSgpLCAwdSk7CiAgICAgICAgIEVYUEVDVF9U
UlVFKGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXApOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgaW5pdGlhbENhcGFjaXR5IC8gbWF4TG9hZENhcDsgKytpKSB7Ci0gICAgICAg
ICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAg
IGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hT
ZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmpl
Y3QpKTsKLSAgICAgICAgICAgIG90aGVyT2JqZWN0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxC
YXNlPigpKTsKKyAgICAgICAgICAgIG90aGVyT2JqZWN0cy5hcHBlbmQobWFrZVVuaXF1ZTxCYXNl
PigpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAg
ICAgfQogICAgICAgICBFWFBFQ1RfRVEoc19iYXNlV2Vha1JlZmVyZW5jZXMsIG90aGVyT2JqZWN0
cy5zaXplKCkpOwpAQCAtNjE1LDcgKzYxNiw3IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNo
U2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwg
MHUpOwogICAgICAgICB1bnNpZ25lZCBvYmplY3RDb3VudCA9IGluaXRpYWxDYXBhY2l0eSAqIDI7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAg
ICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vh
a0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92
ZShvYmplY3QpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsK
QEAgLTY2NywxMCArNjY4LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0
ZXNFbXB0eSkKICAgICB7CiAgICAgICAgIFdlYWtIYXNoU2V0PEJhc2U+IHdlYWtIYXNoU2V0Owog
ICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2U+PiBvYmplY3RzOwotICAgICAgICBh
dXRvIGZpcnN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRv
IGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5h
ZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgZG8gewotICAgICAgICAgICAgYXV0byBvYmplY3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1h
a2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsK
ICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgIH0g
d2hpbGUgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgPT0gZmlyc3RPYmplY3QuZ2V0KCkpOwpA
QCAtNzM0LDggKzczNSw4IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNp
emUpCiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFz
aFNldDsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4o
KTsKLSAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOwor
ICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOworICAgICAgICBh
dXRvIGxhc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0
LmFkZCgqZmlyc3RPYmplY3QpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmxhc3RPYmplY3Qp
OwogICAgICAgICBpZiAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSAhPSBmaXJzdE9iamVjdC5n
ZXQoKSkKQEAgLTc1OSwxMCArNzYwLDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0
Q29tcHV0ZVNpemUpCiAgICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNl
dDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAg
ICAgYXV0byBub25GaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAg
ICAgYXV0byBub25GaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vh
a0hhc2hTZXQuYWRkKCpub25GaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAg
IGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0
byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5h
ZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkp
OwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IG5vbkZpcnN0
T2JqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9DQVJpbmdCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggMmFhYjY1ZGQ4ZmQ3ZWYwNzA1MWZiNmY3NTY3NThjZGU3
MDJlMDdhMS4uODFkN2JhMjkxYWU5ZjRhYjdjZjJlNWY5YWFkNjJjOTQyNDM1MzY3MiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQogICAgIHsKICAgICAgICAgV1RGOjpp
bml0aWFsaXplTWFpblRocmVhZCgpOwotICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Q0FSaW5nQnVmZmVyPigpOwogICAgIH0KIAogICAgIC8v
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkb3VibGUgc2FtcGxlUmF0ZSwgVUludDMyIG51bUNo
YW5uZWxzLCBQQ01Gb3JtYXQgZm9ybWF0LCBib29sIGlzSW50ZXJsZWF2ZWQsIHNpemVfdCBjYXBh
Y2l0eSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxj
dWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxj
dWxhdGlvblZhbHVlLmNwcAppbmRleCA3NzhlNjE1NWYwNmNjMTI4Mzk3OTc1ZjA0NTg3MTJhMmM3
MTA0MGZhLi5kY2E0NjM2MDJlOTZkNjBhMDQ1MTM4MTIxY2JiZGNlZmJlZTllNWMyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFs
dWUuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHN0YXRp
YyB1bnNpZ25lZCBkZWxldGlvbkNvdW50OwogCiBjbGFzcyBDYWxjdWxhdGlvbkRlbGV0aW9uVGVz
dE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25Ob2RlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWxjdWxhdGlvbkRlbGV0
aW9uVGVzdE5vZGUoKQogICAgIHsKQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25E
ZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CiAK
IHN0YXRpYyBSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkK
IHsKLSAgICBhdXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25U
ZXN0Tm9kZT4oKTsKKyAgICBhdXRvIG5vZGUgPSBtYWtlVW5pcXVlPENhbGN1bGF0aW9uRGVsZXRp
b25UZXN0Tm9kZT4oKTsKICAgICByZXR1cm4gV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3Jl
YXRlKFdURk1vdmUobm9kZSksIFdlYkNvcmU6OlZhbHVlUmFuZ2VBbGwpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRl
c3QuY3BwCmluZGV4IGY1OGRhOGE0MjA3M2VjOTliYmVlMzRhODViZWMzNGMwODVjNTJhNjQuLjBj
MWEwNjlmMTNjMzljNDA5ZTVkNWUxYjAzYTdlOTJiZjliMzY2YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3Bw
CkBAIC00OCwxMCArNDgsMTAgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRT
aXplKQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUwNjA3MDg7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGE7CiAKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
ZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwg
VmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0
ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAg
IEVYUEVDVF9FUSg2NHUsIGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsK
IAotICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlk
Q29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOworICAgIGF1
dG8gY29udGludWF0aW9uUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFj
a2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGNv
bnRpbnVhdGlvblBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCkpOwogfQogCkBAIC03
MCw3ICs3MCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YSkKICAg
ICB1aW50MzJfdCBjaGFubmVsSWQgPSAweEY1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprV2luazsKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEp
LCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlk
SW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5z
aXplKCkpOwogICAgIHNpemVfdCBpbmRleCA9IDA7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc2Vy
aWFsaXplZCA9IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CkBAIC05NCw3ICs5NCw3
IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5k
IGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsKICAgICBzaXplX3QgbGVuZ3RoID0g
ZGF0YS5zaXplKCk7Ci0gICAgYXV0byBvcmlnUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRv
SGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7Cisg
ICAgYXV0byBvcmlnUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5l
bElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CiAKICAgICBzaXplX3QgcGF5bG9hZExl
bmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ob3JpZ1BhY2tldC0+cGF5bG9hZExlbmd0aCgpKTsK
ICAgICBWZWN0b3I8dWludDhfdD4gb3JpZ0RhdGEgPSBvcmlnUGFja2V0LT5nZXRTZXJpYWxpemVk
RGF0YSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zp
bGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKaW5kZXggMWVkMTMyOGY4MTMwOWUxMmUxMzcxY2IzYWRmZTZiMGE5NzgzZWViNi4u
MjI4MzgzYTBmMzBhOWIxMzlmNmFhZjQzZjk1Y2VkZDgwOTE2NmU2YSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiAgICAgYXV0
byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAg
ICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBh
dGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlw
ZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVt
cEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0xOTAsNyArMTkwLDcgQEAgVEVTVF9GKEZpbGVNb25p
dG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVDaGFuZ2VzKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBX
b3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVl
LmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAg
YXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRl
c3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmlj
YXRpb246CkBAIC0yNTAsNyArMjUwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0
RGVsZXRpb24pCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0
IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
ZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5p
cXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10g
KEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTI4OSw3ICsyODks
NyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQog
CiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVl
Iik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0
ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxl
Q2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9u
aXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMzQ2LDcgKzM0Niw3IEBAIFRF
U1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2Up
CiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVl
dWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+
KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVN
b25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDkyZDhhMTkyY2E3
YjJhMTA4MTU2NTk5N2IwZWE1YjFmOWFlYThmNjUuLjIxOWU5NjZkYmViYWE4NGQzNjAyNzIyZTk1
OWUzMmY2NGZiNGRiMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEN1cmxDb29raWVz
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgewogICAgICAgICBtX2Nvb2tpZURpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwogCi0gICAgICAgIG1f
Y29va2llSmFyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2ll
ZGIuc3FsIikpOworICAgICAgICBtX2Nvb2tpZUphciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29v
a2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURp
cmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKICAgICAgICAgbV9jb29raWVKYXItPm9wZW4oKTsK
ICAgICAgICAgbV9jb29raWVKYXItPnNldEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3k6
OkFsd2F5cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAppbmRleCA1YzBhZTMz
MTMyOGIzNmIwYmE3MGExOGQ5OTM2Njk0MTJhY2EyOWE5Li5iM2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5
ZGRhMTIxMmYxOTMyYTBkMjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2Us
IFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9w
ZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtl
VW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVp
Q2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEku
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3Bw
CmluZGV4IGE0ZmJhMTI3YzZlNGQwM2U2M2Q5YTgxNzJhMzliM2NiOGIxNDcyYzcuLjdiYzM1MjRm
MmJkYjlkYmQ3YTQzNWEzY2M2YWQzODMyZTk0NGVkZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJM
UmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdl
YlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50
OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRF
bmRFZGl0aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVs
ZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKaW5kZXggMGY3ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4
MDM4ZDE5MjIxZWRiZjdkNS4uY2QxOWQ3Y2RlNTg4OTYyNWYxMjIxMmZjNzUzY2ZkNTVlMjc4ZDky
MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxk
RGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHN0cnVjdCBXZWJLaXQyVGV4dEZpZWxkQmVnaW5BbmRFZGl0RWRpdGluZ1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBj
b250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0
KCJUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdFdmVudHNUZXN0IikpOwogICAgICAgICBz
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3
ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkp
OworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQu
Z2V0KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhp
cyk7CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCmluZGV4IGM3YjAyNTFiZmNmMjFh
YTRhYmQxMTRjODU1MDc5MjQxZDY2MTc0ZTkuLjlkYzNhNmRhOTk1MDljMjcxMTIxZDRjM2E0NTMw
ODRmZWU5ODliZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L1VzZXJNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9V
c2VyTWVzc2FnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgV2ViS2l0MlVzZXJNZXNzYWdl
Um91bmRUcmlwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0
ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJVc2Vy
TWVzc2FnZVRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQu
Z2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJD
bGllbnQod2ViVmlldy0+cGFnZSgpLCB0aGlzKTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxs
TG9hZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAK
aW5kZXggZWQ5ZjBmZmM3MDI1YWIxMmNiNTM5NjdmNzIwNWZmOTZjODliZTY5OS4uNTJmMThkY2Vi
NDJkNTFhYzA4Mzk1YjYyMDAxZDRhOTU0MGY3NDUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBXZWJL
aXQyV2lsbExvYWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnRl
eHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIldp
bGxMb2FkVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5n
ZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8
UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKIAogICAgICAgICBkaWRSZWNlaXZlTWVz
c2FnZSA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUlu
QnVuZGxlX0J1bmRsZS5tbQppbmRleCBhZWJhMWMzNDhmYmM2NmExNzBlNTM5ZTBhNzI4NmFlZTkx
NTNlNjA0Li4yOTFhNDc4YTI3ODQyNDJkYWQ0NWEzYThmMTczOTA1ZDdkM2IyZjIxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVh
cmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBhZG9wdChKU1Zh
bHVlVG9TdHJpbmdDb3B5KHNjcmlwdENvbnRleHQsIHJlc3VsdCwgbnVsbHB0cikpOwogCiAgICAg
ICAgIGF1dG8gYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShy
ZXN1bHRTdHJpbmcuZ2V0KCkpOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0
cmluZ0dldFVURjhDU3RyaW5nKHJlc3VsdFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZm
ZXJTaXplKTsKIAogICAgICAgICBXS0J1bmRsZVBhZ2VTZXRVc2VEYXJrQXBwZWFyYW5jZShtX3Bh
Z2UsIHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAppbmRleCBkNmNjMmZiMjQ3ZTU2MjA2Njk3
NzYxMGIyNTY3OWI3ZWQxZGNjOGJhLi43YzhjOGI1MjE1NGFjNGViMDk4ZTY5NTE3OTA2OWEwNWVi
ZGM2NmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdEF1dGhlbnRpY2F0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcApAQCAtMjU2LDYgKzI1Niw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25FbXB0eVJlYWxtKEF1dGhlbnRpY2F0aW9u
VGVzdCogdGVzdCwgZ2NvbnN0CiB9CiAKIGNsYXNzIFR1bm5lbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVHVubmVsKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291
cE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIDogbV9zZXJ2ZXIoc2VydmVyKQpAQCAtMjk5LDcg
KzMwMCw3IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwg
U291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1l
dGhvZCA9PSBTT1VQX01FVEhPRF9DT05ORUNUKSB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQo
c291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSwgPT0sIGdQcm94eVNlcnZlclBvcnQpOwotICAg
ICAgICBhdXRvIHR1bm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3Nh
Z2UpOworICAgICAgICBhdXRvIHR1bm5lbCA9IG1ha2VVbmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1l
c3NhZ2UpOwogICAgICAgICBhdXRvKiB0dW5uZWxQdHIgPSB0dW5uZWwuZ2V0KCk7CiAgICAgICAg
IHR1bm5lbFB0ci0+Y29ubmVjdChbdHVubmVsID0gV1RGTW92ZSh0dW5uZWwpXShjb25zdCBjaGFy
KiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKQEAgLTM5
NCw3ICszOTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHko
UHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyhQcm94eUF1dGhlbnRpY2F0aW9uVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBhdXRvIGh0dHBzU2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXRUZXN0U2VydmVyPihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7
CisgICAgYXV0byBodHRwc1NlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2Vi
S2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOwogICAgIGh0dHBzU2VydmVyLT5ydW4oc2VydmVy
Q2FsbGJhY2spOwogCiAgICAgdGVzdC0+bG9hZFVSSShodHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0
aCgiL3Byb3h5L2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNi
MDVjZDRiYzAyN2UxMmQxMTAzZmFmNmEwMDdhYzZmNDBmMy4uYjZiNzI4ZTQ1ZTA5YzUxYTZkNmJh
OTliZjcxN2UxOTVlOWEwZTBjMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNlbmRp
ZgogCiBjbGFzcyBXZWJQcm9jZXNzVGVzdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSopID0gMDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdp
bmRvd1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9N
V2luZG93VGVzdC5jcHAKaW5kZXggMTI1NjI0MTk2YTcxYzZkM2FkNWJjZGQyOWYxNDJiODZhYmI5
ZmQxMS4uZTQwMDA3NjMzZjIzNjI0MDUyOWRmNTRhZTg2MzIwODdiZDM2OTUyZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93
VGVzdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgc3RhdGljIGdib29sZWFuIGNsaWNrZWRDYWxsYmFj
ayhXZWJLaXRET01ET01XaW5kb3cqLCBXZWJLaXRET01FdmVudCosIFdlYktpdERPTUQKIAogY2xh
c3MgV2ViS2l0RE9NRE9NV2luZG93VGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkg
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1
cm4gbWFrZVVuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CiAKIHByaXZhdGU6CiAg
ICAgZ3VpbnQ2NCB3ZWJQYWdlRnJvbUFyZ3MoR1ZhcmlhbnQqIGFyZ3MpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggOGQy
ZWU4YWQxNmNhZDY3OTU2OGVkOWI2ZDc1Y2VjZDgyMTUwZmVkYi4uMzQ5MGVmMWNlYjZmMTc4MDUw
MmYwY2RjOTE5Yzk3MWUyOTJiZTkwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzgsNyArMzgsNyBAQCBzdGQ6OnN0
cmluZyB0b1NURChOU1N0cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmco
KTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gW3N0cmluZyBsZW5ndGhPZkJ5dGVzVXNpbmdF
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIE5TVUlu
dGVnZXIgc3RyaW5nTGVuZ3RoOwogICAgIFtzdHJpbmcgZ2V0Qnl0ZXM6YnVmZmVyLmdldCgpIG1h
eExlbmd0aDpidWZmZXJTaXplIHVzZWRMZW5ndGg6JnN0cmluZ0xlbmd0aCBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZyBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBs
ZW5ndGhdKSByZW1haW5pbmdSYW5nZTowXTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVy
LmdldCgpLCBzdHJpbmdMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3Lm1tCmluZGV4IDU0NmNhNmUyMjJkOWZlYTgxY2U3YmU0ZTJjMmQzOTg1YzViNDRmMGYu
LjI0NzU3Mjg5OGI2YTg3OWM3YTM2YjRmYzY1YjkxNTMzMDQ3MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0
aWMgdm9pZCBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9J
dGVtUHJvdmlkZXJzKCkKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dp
enpsZXI+IHN3aXp6bGVyOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwog
ICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgc3dpenpsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFz
cywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVy
V2l0aG91dFB1YmxpY1JURkQpKTsKKyAgICAgICAgc3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNz
TWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRh
YmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQp
KTsKICAgICB9KTsKIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJh
dGlvCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyB3b3JrYXJvdW5kIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NTIwND4gaXMgZml4ZWQu
Ci0gICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NN
ZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxs
b3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7Cisg
ICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6
emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CiAgICAgX2lucHV0
U2Vzc2lvbkNoYW5nZUNvdW50ID0gMDsKICAgICBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGlu
Z0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaApp
bmRleCA2OTBmMGE3NzU2Y2ZlM2FmYjA3ZDkwYmVlZmYwOTU3OGIyZmM1NWRlLi4yODE0NTI3ZjE5
Yjk1NGY4MmFlYjg3YmMwZTRjOGRjMGI5YTdmNWI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCkBAIC0yNSw2ICsy
NSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBjbGFzcyBXZWJLaXRUZXN0
U2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIGVu
dW0gU2VydmVyT3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlv
bnMubW0KaW5kZXggODYyNjM1NDQzMzVhN2Y1ZDk3MWI1ZGMwZDI1OWU1NWRjMGQ3M2M2Ni4uNGJk
ZTZjNTEwMGQyYmQ2ZmU0YmI5MGZhY2JlMjVkMzM5YTUwNTRiYiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCiAK
ICAgICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXplWmVybzsKICAgICBfc2hhZG93Qmx1clJhZGl1cyA9
IDA7Ci0gICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
bGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSwg
QHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNoYXJl
ZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOworICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxl
ciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJO
U0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKICAgICBfaGFzUGVuZGlu
Z1NoYWRvd0NoYW5nZXMgPSBOTzsKICAgICBfaGFzTXVsdGlwbGVGb250cyA9IE5POwogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDE1MzIyMTgyNjk5ZTBl
YTMwNzU0YTAyMjZjM2E3YjYyOTU5NzZkMDAuLjExMzk5YjM5MGZlOTE3MGY2YzUyNTI3NWFjMjM0
NTgyZGFmNzUwZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5k
ZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
CkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBXVFJFdmVudFF1ZXVlSXRlbTsKICNlbmRpZgogCiBj
bGFzcyBFdmVudFNlbmRlclByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKik7CiAg
ICAgfkV2ZW50U2VuZGVyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2Vv
bG9jYXRpb25Qcm92aWRlck1vY2suaAppbmRleCA3ZDk0NWQ2N2VjNjc1MGJlNzA2NDM1YTJhNmIz
Yzc0ZDFhZDE3NDNjLi4xZWQ0YWRmOWIzOTM5M2EzMzNhYTMyNTEwOTdiOWUzYWE0MmNjMzZiIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2Nr
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5o
CkBAIC0yNywxMCArMjcsMTIgQEAKICNkZWZpbmUgR2VvbG9jYXRpb25Qcm92aWRlck1vY2tfaAog
CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2Nr
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHZW9sb2NhdGlv
blByb3ZpZGVyTW9jayhXS0NvbnRleHRSZWYpOwogICAgIH5HZW9sb2NhdGlvblByb3ZpZGVyTW9j
aygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9F
dmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKaW5kZXggMWY5ZDNlZmM5NjRmYjEz
NzdiYzY2M2MwMTYwYzM0YTg4YjIzMjhhNi4uYzlhNTJjMTVmNzcwODMwNjgzYzhlZmY2ODk0Mjli
ZDBiYzFmNTY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCkBAIC02MTIsNiAr
NjEyLDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb25pdG9yV2hlZWxFdmVudHMo
KQogfQogCiBzdHJ1Y3QgU2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEpTQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAg
ICAgSlNPYmplY3RSZWYgbV9mdW5jdGlvbjsKIApAQCAtNjQ3LDcgKzY0OCw3IEBAIHZvaWQgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVS
ZWYgZnVuY3Rpb25DYWxsCiAgICAgCiAgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgZnVuY3Rp
b25DYWxsYmFja09iamVjdCk7CiAKLSAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0Rh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRl
eHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOworICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNh
bGxiYWNrRGF0YSA9IG1ha2VVbmlxdWU8U2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YT4oY29u
dGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9u
Q2FsbGJhY2tEYXRhUHRyID0gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YS5yZWxlYXNlKCk7
CiAgICAgYm9vbCBjYWxsYmFja1dpbGxCZUNhbGxlZCA9IFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Ny
b2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Ny
b2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0cik7CiAgICAgaWYgKCFjYWxsYmFja1dpbGxCZUNh
bGxlZCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA3MTE2Y2M5ODE1NjY5ZDk0OTRkYmY4ZGU0OGJh
ZWVjZDYzNzRjMzc2Li44M2IyYjMwYjEzMzJlYzc3YmZlZmNjMjlmZGQxYTJlNDgzY2I1ZjIzIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25V
c2VyCiB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBw
YWdlKQogewogICAgIGJvb2wgaXNNYWluUGFnZSA9IG1fcGFnZXMuaXNFbXB0eSgpOwotICAgIG1f
cGFnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7
CisgICAgbV9wYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+KHBhZ2Up
KTsKIAogICAgIHNldFVwSW5qZWN0ZWRCdW5kbGVDbGllbnRzKHBhZ2UpOwogCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuaAppbmRleCA1OWQzZTFiMGQwMmUyMmM1MmZhNzY1NDMzMjljMjNmNmI2MmEzODlhLi5i
MzIzYzI1MDQ0ZjU1MDM2MDc2ZjQ4ZWRkZDQ3YmNlYWEzZTIwZjE4IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBJbmplY3Rl
ZEJ1bmRsZVBhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IEluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYpOwogICAgIH5JbmplY3RlZEJ1bmRs
ZVBhZ2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IDU5ZjI1YzFiYmFjNmVkODllOTRjZmE4OGE5YWZmYzAzZmI3
MjRhMTguLjNiMGVkNmFhY2E3NTk5NTVlZDE1Y2U4YjBjMTBjZjM3MmM5OTFkMzEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cApAQCAtMjM3NCw3ICsyMzc0LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxl
cyhKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAg
c2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXpl
KGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7
CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5n
ZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGZpbGVV
UkxzLmdldCgpLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aEJhc2VVUkwobV90ZXN0VVJMLmdldCgp
LCBmaWxlQnVmZmVyLmdldCgpKSkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAppbmRleCAwZTVjMDdjYTcyOWI2ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMy
YzAwMTdjLi4xOGU1N2QyZmNmNjI5NzY3YTczMjk3OWJjMmVkYzU3YWNmMTA5Y2UyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNzMwLDcgKzczMCw3
IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRUb0pTT2JqZWN0QXJyYXkoY29uc3QgVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBX
S0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKIAogICAgIHNpemVf
dCBlbGVtZW50Q291bnQgPSBjaGlsZHJlbi5zaXplKCk7Ci0gICAgYXV0byB2YWx1ZUVsZW1lbnRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ZhbHVlUmVmW10+KGVsZW1lbnRDb3VudCk7CisgICAgYXV0
byB2YWx1ZUVsZW1lbnRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SlNWYWx1
ZVJlZltdPihlbGVtZW50Q291bnQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVu
dENvdW50OyBpKyspCiAgICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29u
dGV4dCwgY2hpbGRyZW5baV0tPndyYXBwZXJDbGFzcygpLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGY3NGNjMmQzOTNk
NTMwNWZkMzY2NWJiMGUwYTM1NTE4NDQ3MzEwOWYuLmNhNGZkYmQ3MjIxNWFmNDhiZGE5NjdkNWJj
YWI0ODE1NmJhZGNjNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZv
cm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUZXN0T3B0aW9u
cy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgIWRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgpAQCAtNjQsNiArNjUsNyBAQCB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1J
bWFnZTsKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFBsYXRmb3JtV2ViVmlldyhXS1dlYlZpZXdDb25maWd1cmF0aW9uKiwgY29uc3QgVGVzdE9wdGlv
bnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25z
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCmluZGV4IGRhZjE0
Y2E3MDU0ODZiZmMyMDY0MzEyM2RlNTA5MWI3OWU1ZDAxMzEuLmJiYTE3YzJlZmZiMDk2NjVlZmMy
OGVlYjY5ZTcyMzI5YjFkNjliNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
U3RyaW5nRnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5j
dGlvbnMuaApAQCAtNzMsNyArNzMsNyBAQCBpbmxpbmUgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IHRvSlMoY29uc3QgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+JiBzdHJpbmcpCiBpbmxpbmUgc3Rk
OjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJT
aXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0
byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0
byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZl
clNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5n
KHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gc3RkOjpzdHJp
bmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAg
aW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYg
c3RyaW5nKQogaW5saW5lIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmlu
ZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3Ro
ID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmcsIGJ1ZmZlci5nZXQoKSwg
YnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFG
YWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAxNjU0NjI5Y2FhNmY2ZDhjODk0NTQ4
MzUxYzBjOGZiMGEzMzMzNzJhLi5mOTdmMTVlNjEyYzBiMWE0NzAzOGRkYmQzNzhiNjZkMGU3YWM0
Mjc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDc5
LDcgKzQ3OSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNv
bnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3Vw
SWRlbnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktp
dFRlc3RSdW5uZXJQYWdlR3JvdXAiKSk7CiAgICAgbV9wYWdlR3JvdXAuYWRvcHQoV0tQYWdlR3Jv
dXBDcmVhdGVXaXRoSWRlbnRpZmllcihwYWdlR3JvdXBJZGVudGlmaWVyLmdldCgpKSk7CiAKLSAg
ICBtX2V2ZW50U2VuZGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+
KHRoaXMpOworICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5kZXJQ
cm94eT4odGhpcyk7CiB9CiAKIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+
IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RP
cHRpb25zOjpDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykgY29uc3QKQEAgLTUyMSw3ICs1MjEsNyBA
QCBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2Vu
ZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjbwogICAgICAgICBtX2NvbnRleHQgPSBwbGF0Zm9ybUFk
anVzdENvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb250
ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSkpLmdldCgpLCBjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQo
KSk7CiAgICAgICAgIG1fY29udGV4dE9wdGlvbnMgPSBvcHRpb25zLmNvbnRleHRPcHRpb25zOwog
Ci0gICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9j
YXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZ2VvbG9jYXRp
b25Qcm92aWRlciA9IG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4
dC5nZXQoKSk7CiAKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9
IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5
Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwpAQCAtOTUxLDcg
Kzk1MSw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgLy8gRklYTUU6IFRoaXMgZnVu
Y3Rpb24gc2hvdWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVu
LgogCiAgICAgLy8gUmVzZXQgdGhlIEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCi0gICAgbV9l
dmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlz
KTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+
KHRoaXMpOwogCiAgICAgLy8gRklYTUU6IElzIHRoaXMgbmVlZGVkPyBOb3RoaW5nIGluIFRlc3RD
b250cm9sbGVyIGNoYW5nZXMgcHJlZmVyZW5jZXMgZHVyaW5nIHRlc3RzLCBhbmQgaWYgdGhlcmUg
aXMKICAgICAvLyBzb21lIG90aGVyIGNvZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5
IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVhbnVwIHRvby4KQEAgLTEyMzQsMTEgKzEyMzQsMTEgQEAg
c3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOwogICAgIGlmIChpc0Fic29sdXRlUGF0
aCkgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVu
Z3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CiAgICAgICAg
IHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwogICAgICAgICBzdHJjcHkoYnVmZmVy
LmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01B
WCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFyYXRvcgorICAgICAgICBidWZm
ZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0
aCArIFBBVEhfTUFYICsgbGVuZ3RoICsgMik7IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCiAg
ICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwogICAgICAgICBpZiAoIWdl
dGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIFBBVEhfTUFYKSkKICAgICAgICAgICAg
IHJldHVybiAwOwpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cnVu
VGVzdChjb25zdCBjaGFyKiBpbnB1dExpbmUpCiAgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyA9IHRl
c3RPcHRpb25zRm9yVGVzdChjb21tYW5kKTsKIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3
a1VSTCA9IGFkb3B0V0soY3JlYXRlVGVzdFVSTChjb21tYW5kLnBhdGhPclVSTC5jX3N0cigpKSk7
Ci0gICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdEludm9jYXRp
b24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gbWFr
ZVVuaXF1ZTxUZXN0SW52b2NhdGlvbj4od2tVUkwuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYg
KGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3Nob3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0
cykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+c2V0SXNQaXhlbFRlc3QoY29tbWFuZC5l
eHBlY3RlZFBpeGVsSGFzaCk7CkBAIC0yOTYwLDcgKzI5NjAsNyBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybVdpbGxSdW5UZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJikKIAogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9t
YWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0
aW9uLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXcqIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBh
cmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCmluZGV4IDEwNzNhYjE1MWEwZTM1NDlhNDEyYTVkMjVmNTRmN2IxYjRlOWRjYjguLjA5MTA4
YjBlNTIyNDQzYTY3NWI1MTE0ZjQyOGM3OWFhMTBkMjgzZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjY5LDcgKzE2NjksNyBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0LCB1bnNpZ25lZCBz
Y3JpcHRDYWxsYmFjawogICAgIG1fcGVuZGluZ1VJU2NyaXB0SW52b2NhdGlvbkRhdGEgPSBudWxs
cHRyOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAgICAg
ICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWU8VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7
CiAgICAgCiAgICAgbV9VSVNjcmlwdENvbnRleHQtPnJ1blVJU2NyaXB0KHRvV1RGU3RyaW5nKHNj
cmlwdCksIHNjcmlwdENhbGxiYWNrSUQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oCmluZGV4IDc4ODBkZDhkZjU1MmZjOWQ4MmI5NGQxZDJmMmRkZmQ2ZGY4MmVjMmIu
Ljg1YjFiMDIwNmViODkyMjZlODZjNmI0MWFiOTNlNWRiOTVlYmZkOTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBX
VFIgewogCiBjbGFzcyBUZXN0SW52b2NhdGlvbiBmaW5hbCA6IHB1YmxpYyBVSVNjcmlwdENvbnRl
eHREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVGVzdEludm9jYXRpb24pOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRlc3RJ
bnZvY2F0aW9uKFdLVVJMUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDBmYmY4
ZWE1MjNkMzQ4ZDI1NmVjYzUyMzA0MmRlYTAyZmVjZGQxZGMuLjBlYmY3YmZkMDAzOWY0ZWY4MDkz
MmMxZWI1MTkyZmY1NGVlM2M0YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiwgY29uc3QgVGVzdE9wdAogICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0QXBwbGlj
YXRpb25NYW5pZmVzdDpbX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0
RnJvbUpTT046dGV4dCBtYW5pZmVzdFVSTDpuaWwgZG9jdW1lbnRVUkw6bmlsXV07CiAgICAgfQog
Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihj
b3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvcGllZENvbmZpZ3VyYXRpb24uZ2V0KCksIG9w
dGlvbnMpOwogICAgIGZpbmlzaENyZWF0aW5nUGxhdGZvcm1XZWJWaWV3KG1fbWFpbldlYlZpZXcu
Z2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKG9wdGlvbnMucHVuY2hPdXRXaGl0ZUJhY2tncm91
bmRzSW5EYXJrTW9kZSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXREZWZhdWx0Q2FsZW5kYXJUeXBlKE5TU3RyaW5nICppZGVudGlmaWVyKQogewogICAgIG1fb3Zl
cnJpZGRlbkNhbGVuZGFySWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgaWYgKCFtX2NhbGVu
ZGFyU3dpenpsZXIpCi0gICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3Vy
cmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsK
KyAgICAgICAgbV9jYWxlbmRhclN3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6
bGVyPihbTlNDYWxlbmRhciBjbGFzc10sIEBzZWxlY3RvcihjdXJyZW50Q2FsZW5kYXIpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRDYWxlbmRhcikpOwogfQogCiB2b2lkIFRlc3RDb250
cm9sbGVyOjpyZXNldENvbnRlbnRFeHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggZGU1NzhmNzNmYzM2ZWNk
MTU4OWM5OWY4ZGJmOGZjY2MzOTg3YjQyZS4uZWY5ZTM4ZTcyM2JhYTk1ZGZmZTcwZWM1YTg3NWNm
ZWM4NGUzMjg3NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRT
ZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRT
ZW5kZXJQcm94eUd0ay5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCBpbnQgZ2V0R0RLS2V5U3ltRm9y
S2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2Rp
ZmllcgogICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTI7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6
ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShrZXlSZWYpOwotICAgIGF1dG8g
YnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8g
YnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJT
aXplKTsKICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtleVJlZiwgYnVmZmVyLmdldCgpLCBi
dWZmZXJTaXplKTsKICAgICBjaGFyIGNoYXJDb2RlID0gYnVmZmVyLmdldCgpWzBdOwogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IDZh
NjFkZjhlMzVkNmZhMDhjOGIxNGM1MWE4MjNjNjJkMDgwNWQ0ZDIuLmYzYzQxN2M3ZmI3Y2FhNGRl
NDc3N2M3YTQ5NGY1M2FmMzJhMThiZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0xNTEsOCArMTUxLDggQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RP
cHRpb25zJiBvcHQKIAogICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuY2xlYXIoKTsKICAg
ICBpZiAoIW9wdGlvbnMuc2hvdWxkUHJlc2VudFBvcG92ZXJzKSB7Ci0gICAgICAgIG1fcHJlc2Vu
dFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RT
d2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdD
b250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwotICAgICAgICBtX3ByZXNl
bnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9k
U3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQ
b3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBv
cG92ZXIpKSk7CisgICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKG1ha2VV
bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBA
c2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVy
KSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVl
PEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNl
bGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0
aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmll
d0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CiAgICAgfQogICAgIAogICAgIEJPT0wgc2hvdWxkUmVz
dG9yZUZpcnN0UmVzcG9uZGVyID0gTk87CkBAIC0yNjksOSArMjY5LDkgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcikKIAogICAgIGF1dG8gY29udHJvbGxlckNsYXNzID0gVUlLZXlib2FyZElucHV0TW9k
ZUNvbnRyb2xsZXIuY2xhc3M7CiAgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMucmVzZXJ2ZUNhcGFj
aXR5KDMpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVj
dG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJl
bnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNz
LCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6
bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkpOworICAgIG1faW5wdXRN
b2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dp
enpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1
dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RT
d2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJl
ZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkp
KTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJ
bnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVz
KSkpOwogICAgIFtVSUtleWJvYXJkSW1wbC5zaGFyZWRJbnN0YW5jZSBwcmVwYXJlS2V5Ym9hcmRJ
bnB1dE1vZGVGcm9tUHJlZmVyZW5jZXM6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KaW5kZXggZDFjZmM2YTMzMjFlMDI5YzhiYTgx
MTVmNGE2ZDkyMDdmOGU3MTg0Zi4uODljZTRlZjEyNmMxNWQ5MmRjZjc2NjUwY2U2ZWVmNWI4OTIz
MTcyZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5
Lm1tCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24o
dW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWUKIAogICAgIE5T
VmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0
Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHRh
cmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3Nd
LCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihz
d2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVy
PihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAg
ICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgW3RhcmdldFZpZXcg
bW91c2VEb3duOmV2ZW50XTsKICAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsK
QEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWdu
ZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycwogICAgICAgICB0YXJn
ZXRWaWV3ID0gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7
CiAKICAgICBBU1NFUlQodGFyZ2V0Vmlldyk7Ci0gICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1
dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05T
RXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgIGF1dG8g
ZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9k
U3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMp
LCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMp
KTsKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgW3RhcmdldFZpZXcg
bW91c2VVcDpldmVudF07CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTU5
Myw3ICs1OTMsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4
LCBkb3VibGUgeSkKICAgICAvLyBBbHdheXMgdGFyZ2V0IGRyYWdzIGF0IHRoZSBXS1dlYlZpZXcg
dG8gYWxsb3cgZm9yIGRyYWctc2Nyb2xsaW5nIG91dHNpZGUgdGhlIHZpZXcuCiAgICAgTlNWaWV3
ICp0YXJnZXRWaWV3ID0gaXNEcmFnID8gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCkgOiBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1WaWV3KCkgaGl0VGVzdDp3aW5kb3dMb2NhdGlvbl07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsK
LSAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3Io
cHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0
dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBj
bGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBf
c2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgaWYgKGlzRHJhZykKICAgICAgICAgICAg
IFt0YXJnZXRWaWV3IG1vdXNlRHJhZ2dlZDpldmVudF07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCmluZGV4IDQ2OWJmYWYwZThjZjI5
MDczMGJhYmZhMDc4MzZkODc3ZWM3MGU4ZjUuLjY5NmY0NTU3NTg5NmZlODI2NjQ4N2QwOThlOGZl
OGVlNjFlNTRkNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50
U2VuZGVyUHJveHlXUEUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50
U2VuZGVyUHJveHlXUEUuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIHVpbnQzMl90IHdw
ZUtleVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1
aW50MzIKICAgICAgICAgcmV0dXJuIFdQRV9LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVy
U2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwg
YnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376145</attachid>
            <date>2019-08-13 01:15:10 -0700</date>
            <delta_ts>2019-08-13 01:32:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190813011509.patch</filename>
            <type>text/plain</type>
            <size>1723925</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDkyMDFmZjM5Y2JiMDFhNDJhYWQ1MTg2YzRkZWIxMDgzYWZiOWZhLi42NDFhZDIzY2U3MzZiZDFi
Mzk0ZmQzMGEzYTZjMDFhNjNhNGZjY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgbXVs
dGlwYXJhbWV0ZXIgb3ZlcmxvYWRzIG9mIGFwcGVuZCgpIGluIFN0cmluZ0J1aWxkZXIgYXMgYSBm
aXJzdCBzdGVwIHRvd2FyZCBzdGFuZGFyZGl6aW5naW5nIG9uIHRoZSBmbGV4aWJsZUFwcGVuZCgp
IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZmUzNjczMjEwMThkZDVhMWQ0N2Y1NWMxYTcxZjBhODJm
OGM1NzIuLjBjMDY1NzVlZDQ2ZTFiN2Y5MDU4YzQ3M2U5MTZlMjU5NjdlZDAwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAgICAgICogYmVu
Y2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFZlY3Rv
ci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAgICAgICAqIHd0
Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9u
Lmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICog
d3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9T
dHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAg
ICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3Ip
OgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29t
PgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdl
YWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUwZWJmYzEwNDczZDliY2U5NzM0ODNkMmY4M2Zi
OTEyMGFmZjY5OC4uMWVjYWZhYjc1YWFiNWVjZTU5ZDczYTc1NTA0NGQyYjM3MTRhZTc2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4MjUgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcpOgorICAgICAgICAqIE1vZHVsZXMv
YmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JC
ZWFjb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUNETTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lz
dGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y2xpZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6c2V0Q2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9s
b2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJl
Y29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5k
ZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVP
cGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRl
U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9w
ZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFu
c2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2
ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURC
VHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFu
YWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2
ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tl
bmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
OjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRl
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJl
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rh
c2s6OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVj
b2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2Rp
bmdUYXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
YW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNl
dEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBh
bm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2Fn
ZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVG
cm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5k
VmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVh
dGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50
cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29t
cHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFt
ZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlBhcnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJ
bml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRl
cyk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRo
b2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFt
ZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0Ns
YXNzOjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29t
YmluZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1
bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRz
Ojpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAg
KiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9E
T01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNl
dEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAg
ICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNl
dDo6YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNj
YWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgor
ICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6Cisg
ICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJJbXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6
OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNv
bnN1bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZVN1cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1l
S2V5ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRv
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvRWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
U2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hh
cGVQYXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2Up
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhP
YmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0
ZXJDU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvbVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRF
dmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAg
ICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAg
KiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRv
bS9NaWNyb3Rhc2tzLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdyk6Cisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFn
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNl
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURh
dGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNl
bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kQ3Jl
YXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhU
TUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHls
ZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAg
KiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25G
aWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxl
U3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6
CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjptYXBN
b3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRU
b1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAg
ICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVx
dWVzdFRvSGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0
VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpp
bnNlcnRBZGphY2VudEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNl
V2hvbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNo
U3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJs
ZVN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEluc3BlY3RlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9y
eUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0
b3JQYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dl
YkhlYXBBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uTG9nKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBs
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0
ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25E
aXNhYmxlci5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNj
aGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5l
Y3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRl
eHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpp
bml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJs
YXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9u
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAgICAg
ICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0
aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdl
L1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0
ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJzUHJv
cGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBwYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUp
OgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVu
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNaXhlZFR5cGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJlck9m
Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNo
YW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bGVu
Z3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bXV0
YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpkYXRh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVybyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50Rmxh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2Ft
cGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6
OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGVu
b3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1plcm8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NSKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVm
ZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZl
Y3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNl
RWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0
YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6RHlu
YW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2FpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5l
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJPZkF6
aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNl
UmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkVGltZUZyYW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2
ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5w
dXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6
d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6CisgICAgICAgIChXZWJDb3JlOjpaZXJv
UG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJl
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRQb2xlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYVBsYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNo
YXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lvbjo6Y29weVNoYXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lv
bjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpu
b3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3Vy
Y2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0
QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
Um90YXRpb25TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVr
YWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1l
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVj
dG9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNv
bW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNo
YXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlRpbGVkQmFja2luZ0xheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBj
cmVhdGVUaWxlQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6
UGxhdGZvcm1DQUxheWVyV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnN3YXBC
dWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZv
bnRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90
YXRpb25Qcm9wZXJ0aWVzOjppc0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3Bl
cnRpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpyb3RhdGVkU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YubW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3Bp
ZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXll
cjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNl
UHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1
bmNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6
OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1
ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3Vl
OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRlQ29tbWFuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6OnNldFNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
bkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldL
Q0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6
OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2Fj
aGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1f
Y2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1
cmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVh
dGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRvWVVWKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlh
RW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0ZURlY29kZVRhc2spOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxDYWNoZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
X3Jlc3RhcnRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJjaENvb2tpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4
dDo6Q3VybENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6d2lsbFNldHVw
U3NsQ3R4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0
aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNS
ZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVudDo6
cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
ZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAgICAg
KiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6
OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NEYXRh
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxl
eExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRp
bmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
bG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0
RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0ZUJh
c2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2Vk
VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjphZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0SW50b1RyYWNr
ZWRSZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25lZERlc2NlbmRhbnRz
TWFwOjphZGREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWdp
blVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZUJsb2NrUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExp
bmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxv
YXRpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJl
TGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxp
emVSYXJlQmxvY2tGbG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJh
Z21lbnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFn
bWVudE1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5
VHJhY2tzRm9yQXV0b1JlcGVhdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGlu
ZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVBbmNlc3RvckNsaXBwaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OlJlbmRlckxheWVyQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdl
UXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWlu
dFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVj
dEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFw
cGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRv
U2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50
ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJh
c3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2lj
U2hhcGVQYXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93
U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5k
ZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0
ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21S
ZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXpl
TWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0
ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdl
Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OkludmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRp
b25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAg
ICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NW
R1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6
Y29weSBjb25zdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5UGFpckFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQ
cmltaXRpdmUuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFu
aW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlM
aXN0QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJG
cm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9j
a1NwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQ
cmludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RN
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAg
ICAqIHRlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lN
b2NrQ0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0u
aDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2Ft
ZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVu
cXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrQW5kVGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrRm9yTW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtl
clRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25E
YXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICog
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGll
bnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OmV2YWx1YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5k
aW5nQ2FsbGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xMiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBGcmFtZUxvYWRlcjo6b3BlbiBj
YW4gZXhlY3V0ZSBzY3JpdHBzIHZpYSBzdHlsZSByZWNhbGMgaW4gRnJhbWU6OnNldERvY3VtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCAwZTFiZmU3MzU0MTQyNGMwZDE5ZGI5MThjNDUyZmUwNWY5
ZTY3NWFmLi4xMjgxZDMyNTgzNjcyMDRlMTJkNjI3NWZmZTE5OWU1M2JlYzg2YjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3
aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2Vz
dE9wZW5TU0wuY3BwOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3RDb250ZXh0SW1wbDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChQ
QUw6OkNsb2NrOjpjcmVhdGUpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW06
CisgICAgICAgIChDbG9jazo6Y3JlYXRlKToKKwogMjAxOS0wOC0wOSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUYXBwaW5nIGJ1dHRvbnMgaW4gRGF0
YSBEZXRlY3RvcnMgbG9va3VwIHByZXZpZXdzIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRl
eCAzNThmMmJmMDA1YWU2NDRkODEyMzI4ZDVkZWRlNDE5YzhiYTAxY2ZiLi5hM2YyYjc2NjhjNWJj
MmNlY2QyY2Y1NjI4ZGY1NWM3M2RkMTQzMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2Vy
dmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6CisgICAgICAgICogZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3Nlcik6Cisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisK
IDIwMTktMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjI0NTU2Nyk6IFtHVEtdW1dQRV0gWzIuMjUuMV0gV2ViS2l0
V2ViRHJpdmVyIGdldHMgaW5zdGFsbGVkIGFzIFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2YTRhODE3
ZjA5YjI0YmQ4YjcyNDkxMzhmY2M5Yjc0N2YxMDU1OGQyLi44MjFmMzgxOGNlYzUzZGYxZDhiZWNj
YjcwYTc2NzgzMzZhODUzYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyMSBAQAorMjAxOS0wOC0x
MyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFk
ZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
OjpzdGFydE1vbml0b3JpbmdEaXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGlj
cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3Vw
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9h
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYXA6OmFkZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBl
bmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFk
ZENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3
b3JrRGF0YVRhc2tCbG9iKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6
ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6
Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0
V2l0aFByZWZsaWdodCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29u
dGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVz
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFn
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRD
aGFubmVsOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRh
YmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6Q2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlRW50cnkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlUmVkaXJlY3RFbnRyeSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdpc3RlclN1YnJlc291cmNlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdl
cjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5bmNocm9uaXplKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFkUmVjb3JkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2ZUZyb21NZW1vcnkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hD
YWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNy
ZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3
b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRU
YXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRT
dG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9y
aXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6
ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRl
RGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgICh3ZWJraXRTb3Vw
UmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQ
cm92aWRlcjo6TmV0d29ya1JUQ1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JU
Q1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJv
dmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVN5bmNNZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUlu
Y29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlz
cGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNz
YWdlQXN5bmMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldh
dGNoZG9nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6
OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2
ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRl
cm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlUGx1Z2luSW50ZXJuYWwpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAg
ICAgIChBUEk6OlVSTDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6VVJMOjpwYXJzZVVSTElmTmVj
ZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdElu
dm9jYXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFn
ZTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFn
ZVByb3h5Ol0pOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9j
YXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAod2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKToK
KyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAgICAgICAod2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24pOgorICAgICAgICAod2Via2l0X2Nv
bnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbik6CisgICAgICAgICh3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uX3dpdGhfbGFiZWwpOgorICAg
ICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUpOgorICAgICAg
ICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3IpOgorICAgICAgICAqIFNo
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFNo
YXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXlt
ZW50VUkpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmg6CisgICAgICAg
ICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6dGV4bWFwTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RMYXllcik6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21w
b3NpdG9yKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TlBSZW1vdGVPYmplY3RNYXA6OnJlZ2lzdGVyTlBPYmplY3QpOgorICAg
ICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAg
ICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBD
YWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6
CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElI
VFRQQ29va2llU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OnJlZ2lz
dGVyT2JzZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldEluamVj
dGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQpOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9u
TWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3Zp
ZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgIChXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW06CisgICAg
ICAgICgtW1dLT2JzZXJ2YWJsZVBhZ2VTdGF0ZSBpbml0V2l0aFBhZ2U6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2V0Vmlld0Ns
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfaW5p
dFdpdGhQYWdlUmVmOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29v
a2llU3RvcmUubW06CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JlIGFkZE9ic2VydmVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAg
ICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0RG93bmxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1b
V0tQcm9jZXNzUG9vbCBfc2V0QXV0b21hdGlvbkRlbGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dL
VXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6XSk6Cisg
ICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpuYW1lOnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmRO
YXZpZ2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0SW5wdXREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNz
aW9uLm1tOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBzZXREZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlciBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWR5U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAo
d2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaENv
bnRleHRNZW51Q2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaERvd25sb2Fk
Q2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgICh3ZWJraXRGaW5kQ29udHJvbGxlckNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hGb3Jt
Q2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50
LmNwcDoKKyAgICAgICAgKGF0dGFjaEljb25Mb2FkaW5nQ2xpZW50VG9WaWV3KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAg
ICAgICAoYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAg
ICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcik6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxl
cl9pbl93b3JsZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdB
cmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nl
ci5jcHA6CisgICAgICAgICh3ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2ppU2VjdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkluc3BlY3RvckNyZWF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0Fu
ZERyb3BIYW5kbGVyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAg
ICgtW1dLVmlldyBtYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAgICAoLVtX
S1ZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvd3BlL1dQRVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6OlZpZXc6OlZpZXcpOgorICAg
ICAgICAoV0tXUEU6OlZpZXc6OnNldENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvcXQvV1BFUXRWaWV3LmNwcDoKKyAgICAgICAgKFdQRVF0Vmlldzo6bm90aWZ5TG9hZENoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXUEVRdFZpZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFj
ayk6CisgICAgICAgIChXUEVRdFZpZXc6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwOgorICAgICAgICAoV1BFUXRWaWV3
QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VX
aXRoQ29uc3RyYWludHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5
TGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVk
bHlVbnN1c3BlbmRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRUZXh0SW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2
aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlN
YXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5l
Y3RlZEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cGx1Z2luUmVxdWlyZXNHdGsyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RU
b1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmluaXRpYWxp
emVEZWJ1Z0luZGljYXRvcik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVI
b3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVOb2RlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2Rl
OjpjcmVhdGVXaXRoUGxhaW5MYXllcik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0Ojpt
YWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRDcmFz
aENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvcm1DbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjptYXli
ZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjph
ZGRQcm9jZXNzSWZQb3NzaWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFBy
ZXdhcm1JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRX
ZWJQcm9jZXNzSGFzVXBsb2Fkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5n
U3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFj
a2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tS
ZXF1aXJlbWVudHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVj
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tOgorICAgICAgICAo
V2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW06
CisgICAgICAgICgtW1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldyBkaWRNb3ZlVG9XaW5k
b3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpw
cm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
c2V0dXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGJlY29tZUZpcnN0
UmVzcG9uZGVyRm9yV2ViVmlld10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50
RGlkRm9jdXM6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clByZXZpb3VzTm9kZTphY3Rpdml0eVN0YXRl
Q2hhbmdlczp1c2VyT2JqZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0
aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQ
YWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
IGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGlu
aXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmluZFVJOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAg
ICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy93
aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRDb25uZWN0ZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
OgorICAgICAgICAoV0tCdW5kbGVTZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZVNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEVkaXRvckNs
aWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdL
QnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0
UmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlT3ZlcmxheUNyZWF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVy
TWFjLm1tOgorICAgICAgICAoV0tCdW5kbGVQYWdlQmFubmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RP
TU9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0T3JDcmVhdGVET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4
dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRFeHRlbnNpb25NYW5h
Z2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFZGl0b3JDcmVh
dGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdl
LmNwcDoKKyAgICAgICAgKHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUpOgorICAgICAgICAod2Via2l0
V2ViUGFnZUNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBp
bml0V2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0Rm9y
bURlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGU6OnNldENsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGlu
Z01lc3NhZ2U6OlBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hh
bm5lbDo6c2VuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENSZXNvbHZlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Nv
Y2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZlclRjcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVVkcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6
OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZUNsaWVudFRjcFNvY2tldCk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZU5ld0Nvbm5lY3Rpb25Tb2Nr
ZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVBc3lu
Y1Jlc29sdmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkRlc3RydWN0
aW9uUHJvdGVjdG9yOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0
YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJp
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVy
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRG
aWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFw
ZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6UGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdGV4dEF1dG9TaXpp
bmdBZGp1c3RtZW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luUHJpbnRp
bmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxi
YWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om1hcmtB
bGxMYXllcnNWb2xhdGlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUF1
dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpsaWJX
ZWJSVENOZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6
OlNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKToKKwog
MjAxOS0wOC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBiYWQgUkVMRUFTRV9MT0dfRVJST1IgdW5kZXIgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zp
c2lvbmFsUGFnZVByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNGM1MWU5NjVmNjgyNmJl
YzNlZTkyZTc1Mjk1ODdlMWIxYjJkMDQzYS4uODJiNjAzMWIxYjliNDY5YmFhOTBiNGFkYTg4YzEz
NzA0YzU0MjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0w
OC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZd
IEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9T
dG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5h
Z2VyOjpTdG9yYWdlU3luY01hbmFnZXIpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgorICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6
U3RvcmFnZVRyYWNrZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcC5jcHA6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjplbnN1cmVTZXNzaW9uKToKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2NmL0NoYW5nZUxvZwppbmRleCBjNjNlZmFiYTVkODg2ODNiZWZiZjE2OTU4ZmYxZmUwMDA0
ZWE5YzZiLi41ZGVkMjM2NmIzYWVlMTFjODMzYTg2NzlhYjhmNTgxOGJhYWE3ZjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTEzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZy
b250ZW5kU2V0dGluZ3MpOgorCiAyMDE5LTA4LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNDg0NTQpOiBX
SzEgaW5zcGVjdG9yIGZyb250ZW5kIGNsaWVudCBkb2Vzbid0IHF1ZXVlIG1lc3NhZ2VzIHRvIHRo
ZSBmcm9udGVuZCBiZWZvcmUgaXQncyBsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpp
bmRleCA4NWJmZTdmZTdhYTRjM2Y3ZmNiYjJkNzI4ZGI1ZGVhN2FkYWJhOGZmLi4yMjNjOWYwNmRj
MzBlZGUxMDIxNTE4NDkzNGViZGYxMjU5YWIzNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAg
ICAgICAoLVtXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5
ZXJzOnN0aWNreUNvbnRhaW5lck1hcDpdKToKKwogMjAxOS0wNy0yOSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJdIGRpZEZp
bmlzaENvbnRlbnRDaGFuZ2VPYnNlcnZpbmcgc2hvdWxkIGluY2x1ZGUgdGhlIHR5cGUgb2YgY29u
dGVudCBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjg1NTM1NjYyODgx
ZTcxMjc4NzY5ZTQxNmI0OWU5ODFmYTk1N2YyYi4uNGZlOTcxYzllZDQxYmJiNjA3N2M1ZmM4NmU5
ZTc1OGY1NWQzNjk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGlu
aXRdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoLVtX
ZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpdKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAg
KFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhblJl
cGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuQW5kRGF0YVJlcGx5KToKKyAgICAgICAgKFdLUENJ
bnN0YW50aWF0ZVBsdWdpblJlcGx5KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZCk6
CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgorICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAg
KC1bV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdpbl0pOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW06CisgICAgICAgIChXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaDoKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3
IHNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6cmVwZWF0OnRpbWVyRnVuYzpdKToKKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlm
eU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoYWRkUmVkaXJl
Y3RVUkwpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFU
b0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0YWNoU2NyaXB0RGVidWdnZXJdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaDoKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06CisgICAgICAgIChX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgaW5pdFdpdGhS
YW5nZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHRdKToKKyAgICAgICAgKC1bV2ViVmlldyBfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKCtb
V2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6
YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgrW1dl
YlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlz
dDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRp
Y2F0b3I6d2l0aExpZmV0aW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06
CisgICAgICAgIChXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hT
Y2hlZHVsZXIpOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisKIDIwMTktMDgt
MTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGhyZWFk
aW5nIGFzc2VydGlvbnMgdG8gUmVmQ291bnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGY1MWUwNDQyZTU2YmY3MjNhMDFiMzBkZTg4ZmJjODE1ODMxODQ0MDkuLjJlYmE2MTM5MDA3
ZTIxMzYyMWVhMTAyNDIzNWYzYTIzMDcxZTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToK
KyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6bG9hZCk6CisgICAgICAgICog
UGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OnduZFByb2MpOgorICAgICAgICAqIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNo
cm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5Mb2NhbEZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxp
Z2h0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZy5jcHA6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQ
cm9wZXJ0eUJhZyk6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAgICAgICAoV2Vi
SGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwOgorICAgICAgICAo
V0tRQ0E6OkNBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dCk6Cisg
ICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYk5vdGlmaWNh
dGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKToKKyAgICAgICAgKiBXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViVmll
dzo6cmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlwZSk6CisgICAgICAgIChXZWJWaWV3OjplbnRl
clZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJWaWV3OjphZGRV
c2VyU2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRv
R3JvdXApOgorICAgICAgICAoV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyk6CisK
IDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBJREItc3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCAzZjBmYjJlMWNlZWFlZjA2
NTljMzRjODI3MWJlZWMxMDgyMzc1NmVkLi4wZDU1ZmU3ZTFiYjY1MWU5ODEwY2M4YjIzOTgxODdm
NjdlOTk3ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTMgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcC5oOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcElubGluZXMuaDoKKwogMjAxOS0wNy0yNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBBZGQgSXNv
SGVhcCB0ZXN0IHRvIGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0aW5n
IHRvbyBsYXJnZSBWQQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaAppbmRleCAwN2Q3MDliYTEyYzgyYzg1NDgyZDczYzcyMzc3ZjUxOWU3ZmMyYTVjLi5kMGU2
MjUyODJhODRmNGYzNWVlZGVkMTk1ZWRiOGRjODk3YjFhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3Qg
SlNDYWxsYmFja09iamVjdERhdGEgewogICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFtX3ByaXZhdGVQcm9wZXJ0aWVzKQotICAgICAg
ICAgICAgbV9wcml2YXRlUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNQcml2YXRlUHJv
cGVydHlNYXA+KCk7CisgICAgICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1
ZTxKU1ByaXZhdGVQcm9wZXJ0eU1hcD4oKTsKICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcy0+
c2V0UHJpdmF0ZVByb3BlcnR5KHZtLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAppbmRleCBhZTNhNmZlM2FjZjljNmE4MDM5NGUxZDczNGZhMzE3ZDkw
OGZhZTJjLi45Y2EzYjRiZjQwODUwNzUwYjhiYzQxOTQ5Zjc1MDQyYjM1NzIzMWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaApAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmFzQ2FsbGJhY2tPYmplY3QoRW5jbwogdGVtcGxhdGUg
PGNsYXNzIFBhcmVudD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xh
c3MsIHZvaWQqIGRhdGEpCiAgICAgOiBQYXJlbnQoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQotICAg
ICwgbV9jYWxsYmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0
RGF0YT4oZGF0YSwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtlVW5p
cXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0NsYXNzKSkKIHsKIH0KIApAQCAtNjcs
NyArNjcsNyBAQCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChWTSYgdm0sIEpT
Q2xhc3NSZWYganNDbGFzcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBQYXJlbnQodm0s
IHN0cnVjdHVyZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8
SlNDYWxsYmFja09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFj
a09iamVjdERhdGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4obnVsbHB0ciwganND
bGFzcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
bGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCmlu
ZGV4IGYxYzlkNTcwMmE4YWE2OTA0NGRmYjI5NWI0NzFmY2ZjYmM4OTBiNmIuLjdlZWMyYTkwYTQ0
Zjg2MGJhYTIyNzZiOTZkNDVmMmJkNjg2MTcwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NsYXNzUmVmLmNwcApAQCAtNTksMjEgKzU5LDIxIEBAIE9wYXF1ZUpTQ2xhc3M6Ok9wYXF1
ZUpTQ2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpTQ2xh
c3MqCiAgICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGlj
VmFsdWUqIHN0YXRpY1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGljVmFsdWVzKSB7Ci0gICAgICAg
IG1fc3RhdGljVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFs
dWVzVGFibGU+KCk7CisgICAgICAgIG1fc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVK
U0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNWYWx1ZS0+
bmFtZSkgewogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgo
c3RhdGljVmFsdWUtPm5hbWUpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZU5hbWUuaXNOdWxsKCkp
Ci0gICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0
eSwgc3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFs
dWVOYW1lKSk7CisgICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUu
aW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9w
ZXJ0eSwgc3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywg
dmFsdWVOYW1lKSk7CiAgICAgICAgICAgICArK3N0YXRpY1ZhbHVlOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9uID0gZGVm
aW5pdGlvbi0+c3RhdGljRnVuY3Rpb25zKSB7Ci0gICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0g
c3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7Cisg
ICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGlj
RnVuY3Rpb25zVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNGdW5jdGlvbi0+bmFtZSkg
ewogICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3Rh
dGljRnVuY3Rpb24tPm5hbWUpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUu
aW1wbCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0
aW9uLT5jYWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKKyAgICAg
ICAgICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIG1h
a2VVbmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0
aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOwogICAgICAgICAgICAgKytzdGF0aWNG
dW5jdGlvbjsKICAgICAgICAgfQogICAgIH0KQEAgLTEyOCwyMSArMTI4LDIxIEBAIE9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6Vk0mLCBPcGFx
dWVKU0NsYXNzKiBqc0NsCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xh
c3MtPm1fc3RhdGljVmFsdWVzKSB7Ci0gICAgICAgIHN0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBzdGF0aWNW
YWx1ZXMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKICAg
ICAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlND
bGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3Rh
dGljVmFsdWVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFTU0VS
VCghaXQtPmtleS0+aXNBdG9tKCkpOwogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IGl0
LT5rZXktPmlzb2xhdGVkQ29weSgpOwotICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFs
dWVOYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFs
dWUtPmdldFByb3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJp
YnV0ZXMsIHZhbHVlTmFtZSkpOworICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVO
YW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFBy
b3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZh
bHVlTmFtZSkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGlj
RnVuY3Rpb25zKSB7Ci0gICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAgICAgICBzdGF0aWNGdW5j
dGlvbnMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsK
ICAgICAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgIGZvciAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpz
Q2xhc3MtPm1fc3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAg
ICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwotICAgICAgICAgICAgc3RhdGlj
RnVuY3Rpb25zLT5hZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIHN0ZDo6bWFrZV91bmlxdWU8
U3RhdGljRnVuY3Rpb25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVl
LT5hdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChpdC0+a2V5
LT5pc29sYXRlZENvcHkoKSwgbWFrZVVuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihpdC0+dmFs
dWUtPmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQog
ICAgIH0KIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIE9w
YXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9wYXF1ZUpTQ2xhc3NEYXRhKCkuYWRkKHRoaXMsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICBjb250
ZXh0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPihleGVj
LT52bSgpLCB0aGlzKTsKKyAgICAgICAgY29udGV4dERhdGEgPSBtYWtlVW5pcXVlPE9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CiAgICAgcmV0dXJuICpjb250ZXh0
RGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFy
a2luZ0NvbnN0cmFpbnRQcml2YXRlLmNwcAppbmRleCBkOWVlNjc0MDM0OWNmZWZkZmJjYzBkMzEw
OTRmMWY0ZGU1YTUyYzFlLi5iYTRhNWExNjY5N2FmNWY4YTk3MjJlNTc0NjllMzk0ZDk3OTA0MmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFp
bnRQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0Nv
bnN0cmFpbnRQcml2YXRlLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEpTQ29udGV4dEdyb3Vw
QWRkTWFya2luZ0NvbnN0cmFpbnQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTTWFya2luZ0Nv
bnN0cgogICAgIC8vIGVsc2UgZ2V0cyBtYXJrZWQuCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkg
dm9sYXRpbGl0eSA9IENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmc7CiAgICAg
Ci0gICAgYXV0byBjb25zdHJhaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29u
c3RyYWludD4oCisgICAgYXV0byBjb25zdHJhaW50ID0gbWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5n
Q29uc3RyYWludD4oCiAgICAgICAgIHRvQ1N0cmluZygiQW1jIiwgY29uc3RyYWludEluZGV4LCAi
KCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2spKSwg
IikiKSwKICAgICAgICAgdG9DU3RyaW5nKCJBUEkgTWFya2luZyBDb25zdHJhaW50ICMiLCBjb25z
dHJhaW50SW5kZXgsICIgKCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJh
aW50Q2FsbGJhY2spKSwgIiwgIiwgUmF3UG9pbnRlcih1c2VyRGF0YSksICIpIiksCiAgICAgICAg
IFtjb25zdHJhaW50Q2FsbGJhY2ssIHVzZXJEYXRhXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV3JhcHBlck1hcC5tbQppbmRleCBkNDY5Yjc1YTMxZjBlZmNhOWQwN2FiYjAzYjBiZTY2MTYx
YjM5NTY3Li40YjU5OTA3M2ZlNzZiNDg2NDQzNjk5YWJkY2IzNGM0MTY0YmMyZTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpAQCAtNjA2LDcgKzYwNiw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4
dFJlZiljb250ZXh0CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0
UGVyc29uYWxpdHk7CiAgICAgbV9jYWNoZWRPYmpDV3JhcHBlcnMgPSBbW05TTWFwVGFibGUgYWxs
b2NdIGluaXRXaXRoS2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlv
bnMgY2FwYWNpdHk6MF07CiAKLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+
Pih0b0pTKGNvbnRleHQpLT52bSgpKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBtYWtlVW5p
cXVlPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+
Pih0b0pTKGNvbnRleHQpLT52bSgpKTsKIAogICAgIEFTU0VSVCghdG9KU0dsb2JhbE9iamVjdChj
b250ZXh0KS0+d3JhcHBlck1hcCgpKTsKICAgICB0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5z
ZXRXcmFwcGVyTWFwKHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2Jq
Q0NhbGxiYWNrRnVuY3Rpb24ubW0KaW5kZXggZWU5MzI4MjFlZjc0YmQ2ODkxYWU4ZjI5ZmFkN2Ji
YTVhZmVhMGNiYy4uNzNjYjQyNzA0MzgxODMxZTgxOWQ5ZDk0M2ViOWU1NDQwMzA5NmY4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1t
CkBAIC0xOTUsMTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBl
RG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
QXJndW1lbnREb3VibGU8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNr
QXJndW1lbnREb3VibGU8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUJvb2woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tB
cmd1bWVudEJvb2xlYW4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRCb29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lk
KCkKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0
eXBlSWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tB
cmd1bWVudElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50
SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3Qg
Y2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkKQEAgLTIyOCwxOSArMjI4LDE5IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmIChjbHMgPT0gW0pT
VmFsdWUgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudEpTVmFsdWU+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxs
YmFja0FyZ3VtZW50SlNWYWx1ZT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNTdHJpbmcgY2xh
c3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVu
dE5TU3RyaW5nPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1
bWVudE5TU3RyaW5nPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU051bWJlciBjbGFzc10pCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1i
ZXI+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNO
dW1iZXI+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGF0ZSBjbGFzc10pCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKICAg
ICAgICAgaWYgKGNscyA9PSBbTlNBcnJheSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0FycmF5PigpOwogICAgICAgICBpZiAo
Y2xzID09IFtOU0RpY3Rpb25hcnkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CiAKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMp
OwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCbG9jayhjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopCkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
U3RyaW5nUmFuZ2UgY29weShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAq
aW52b2NhdGlvbiA9IHZhbHVlVG9UeXBlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRp
b24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVu
dFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIH07CkBAIC0zMzUsNDUgKzMzNSw0NSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5
cGVEb3VibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJh
Y2tSZXN1bHROdW1lcmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFj
a1Jlc3VsdE51bWVyaWM8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUJvb2woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tS
ZXN1bHRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3Vs
dEJvb2xlYW4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lk
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJl
c3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBz
dGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlU3RydWN0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25z
dCBjaGFyKiBlbmQpCiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5KGJlZ2luLCBlbmQp
OwogICAgICAgICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdHlwZVRvVmFsdWVJbnZv
Y2F0aW9uRm9yKGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9OwpAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRp
YyBKU09iamVjdFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24oSlNDb250ZXh0
ICpjb250ZXh0LCBOU0ludm9jCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFtjb250
ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAgIGF1dG8gaW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5
cGUsIGluc3RhbmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsK
KyAgICBhdXRvIGltcGwgPSBtYWtlVW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBs
PihpbnZvY2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gaW1wbC0+bmFtZSgpOwog
ICAgIHJldHVybiB0b1JlZihKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbmFtZSwgV1RGTW92ZShpbXBsKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGUwMWU5
NzBjN2Y1ODAzNjU2MThlZjFkYWI4NTU0NGQ3MDRmOWI0N2EuLjc4ZDc2NTVmZjgwNzc2MGQ0NjA4
YTYxN2U1N2M5MGYxNTQyNzk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ29udGV4dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBqc2NDb250
ZXh0U2V0VmlydHVhbE1hY2hpbmUoSlNDQ29udGV4dCogY29udGV4dCwgR1JlZlB0cjxKU0NWaXJ0
dWFsTQogICAgICAgICAgICAgcHJpdi0+anNDb250ZXh0ID0gSlNSZXRhaW5QdHI8SlNHbG9iYWxD
b250ZXh0UmVmPihBZG9wdCwgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqc2NWaXJ0dWFs
TWFjaGluZUdldENvbnRleHRHcm91cChwcml2LT52bS5nZXQoKSksIG51bGxwdHIpKTsKICAgICAg
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KU0dsb2JhbE9iamVjdChwcml2LT5qc0NvbnRleHQu
Z2V0KCkpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+d3JhcHBlck1hcCgpKQotICAgICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRXcmFwcGVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpX
cmFwcGVyTWFwPihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+c2V0V3JhcHBlck1hcChtYWtlVW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anND
b250ZXh0LmdldCgpKSk7CiAgICAgICAgIGpzY1ZpcnR1YWxNYWNoaW5lQWRkQ29udGV4dChwcml2
LT52bS5nZXQoKSwgY29udGV4dCk7CiAgICAgfSBlbHNlIGlmIChwcml2LT52bSkgewogICAgICAg
ICBBU1NFUlQocHJpdi0+anNDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcAppbmRleCAxMWJiN2MwYjg3MzdkYjY3ZGQxN2RjZDI0
ZjcwMjk0MzQ0NjlhODAzLi5mNTIzZWE0MTk5ZjhhYmQ3MzJmNzdiNjI4MTQxMjAxMzRiYjhiZWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1h
cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogV3JhcHBlck1hcDo6V3Jh
cHBlck1hcChKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0KQotICAgIDogbV9jYWNoZWRKU1dy
YXBwZXJzKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNP
YmplY3Q+Pih0b0pTKGpzQ29udGV4dCktPnZtKCkpKQorICAgIDogbV9jYWNoZWRKU1dyYXBwZXJz
KG1ha2VVbmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pT
KGpzQ29udGV4dCktPnZtKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Qcm9iZVN0YWNrLmNwcAppbmRleCBhNzVmNThkYzE0NmIzYjY0OTVjZWIxNjdhZGY0
ZGFiZmYwNmIwYzg5Li5kYTQ3NzA1MWYzNDVlMDcxNjhmYzdkMDZlMGM3ZjUyNjMxMTg2ZTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKQEAg
LTEzNCw3ICsxMzQsNyBAQCBQYWdlKiBTdGFjazo6ZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNz
KQogICAgIGlmIChMSUtFTFkoaXQgIT0gbV9wYWdlcy5lbmQoKSkpCiAgICAgICAgIG1fbGFzdEFj
Y2Vzc2VkUGFnZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+
KGJhc2VBZGRyZXNzKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2VzLmFkZChiYXNlQWRk
cmVzcywgV1RGTW92ZShwYWdlKSk7CiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcAppbmRleCAyYzljM2IwZGU4OWViM2UzODNmNGNiZGNmMjEyZDI2OGMx
YzE5ZGJhLi43ZjY4NTg2YzFjMDI4OWMwYTMyNTIyZmRlOWUwNjdkZjFmNDFlMjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTI0MSw3ICsxMjQxLDcg
QEAgY2xhc3MgTG93ZXJUb0FpciB7CiAgICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9IFBy
aW50ZXI6Om1ha2VQcmludFJlY29yZExpc3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0byBw
cmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRT
cGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsK
KyAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lh
bCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50
TGlzdCkpKTsKICAgICAgICAgSW5zdCBpbnN0KEFpcjo6UGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVj
aWFsKHByaW50U3BlY2lhbCkpOwogICAgICAgICBQcmludGVyOjphcHBlbmRBaXJBcmdzKGluc3Qs
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBhcHBlbmQo
V1RGTW92ZShpbnN0KSk7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsK
ICAgICB7CiAgICAgICAgIGlmICghZmllbGQpIHsKICAgICAgICAgICAgIGZpZWxkID0gc3RhdGlj
X2Nhc3Q8VCo+KAotICAgICAgICAgICAgICAgIG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91
bmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpKTsKKyAgICAg
ICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZp
ZWxkOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4
IGZmY2IyZDRlMjcxNDQyOTcwZTU0NjQzNjY3MGY3ZjI5ZGViMWFiMWMuLjJlY2NkYWMwNDllNjhk
MTEzZTIzZjk3ZjI0MzUzYTVkNGFhYTNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIFByb2NlZHVyZTo6UHJvY2VkdXJlKCkKICAgICA6IG1fY2ZnKG5ldyBDRkcoKnRoaXMp
KQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKLSAgICAsIG1fYnlwcm9kdWN0cyhz
dGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUJ5cHJvZHVjdHM+KCkpCisgICAgLCBtX2J5cHJvZHVjdHMo
bWFrZVVuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQogICAgICwgbV9jb2RlKG5ldyBBaXI6OkNv
ZGUoKnRoaXMpKQogewogICAgIG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobV9udW1FbnRyeXBv
aW50cyk7CkBAIC0zMTEsMjggKzMxMSwyOCBAQCB2b2lkIFByb2NlZHVyZTo6ZGVsZXRlT3JwaGFu
cygpCiBEb21pbmF0b3JzJiBQcm9jZWR1cmU6OmRvbWluYXRvcnMoKQogewogICAgIGlmICghbV9k
b21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWlu
YXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9kb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxEb21pbmF0
b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2RvbWluYXRvcnM7CiB9CiAKIE5hdHVyYWxMb29w
cyYgUHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMoKQogewogICAgIGlmICghbV9uYXR1cmFsTG9vcHMp
Ci0gICAgICAgIG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxOYXR1cmFsTG9vcHM+
KCp0aGlzKTsKKyAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPE5hdHVyYWxMb29w
cz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJkc0NG
RyYgUHJvY2VkdXJlOjpiYWNrd2FyZHNDRkcoKQogewogICAgIGlmICghbV9iYWNrd2FyZHNDRkcp
Ci0gICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+
KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0NG
Rz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKIEJhY2t3YXJkc0Rv
bWluYXRvcnMmIFByb2NlZHVyZTo6YmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFt
X2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2Jh
Y2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlz
KTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMzU4LDcgKzM1
OCw3IEBAIHZvaWQqIFByb2NlZHVyZTo6YWRkRGF0YVNlY3Rpb24oc2l6ZV90IHNpemUpCiB7CiAg
ICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhU2VjdGlv
bj4oc2l6ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9
IG1ha2VVbmlxdWU8RGF0YVNlY3Rpb24+KHNpemUpOwogICAgIHZvaWQqIHJlc3VsdCA9IGRhdGFT
ZWN0aW9uLT5kYXRhKCk7CiAgICAgbV9ieXByb2R1Y3RzLT5hZGQoV1RGTW92ZShkYXRhU2VjdGlv
bikpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmNwcAppbmRleCAzM2Y4YWJmZWZiYzFmOGY5MTY1NDVhM2JkY2ExOTZiMGNjNjZjMzk4Li5k
NWQ2OWMzMGE1OTkxNzVmMjgxNDgzNjI4NjM2ZmNiNzcwNjgwMTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBDQ2FsbFNwZWNp
YWwqIENvZGU6OmNDYWxsU3BlY2lhbCgpCiB7CiAgICAgaWYgKCFtX2NDYWxsU3BlY2lhbCkgewog
ICAgICAgICBtX2NDYWxsU3BlY2lhbCA9IHN0YXRpY19jYXN0PENDYWxsU3BlY2lhbCo+KAotICAg
ICAgICAgICAgYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwor
ICAgICAgICAgICAgYWRkU3BlY2lhbChtYWtlVW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwogICAg
IH0KIAogICAgIHJldHVybiBtX2NDYWxsU3BlY2lhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKaW5kZXggZjM2YjliMmZlNjY4MTYwYjg4OTliMGM1MGIz
MTk3ZDc1ODgyNGY4MC4uOTVjYWEwMDRkOGViMzkyMzMwZTFjY2JiNjM5YTVjZWU3OWNiYzc5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKQEAgLTEw
MCw3ICsxMDAsNyBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAg
ICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgY29kZS5tX2dlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlQW5kQWxs
b2NhdGVSZWdpc3RlcnM+KGNvZGUpOworICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0
ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4oY29k
ZSk7CiAgICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzLT5wcmVwYXJl
Rm9yR2VuZXJhdGlvbigpOwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL3Rlc3RhaXIuY3BwCmluZGV4IGVmMTU0NGMwN2JiMzJhOTAzN2YyY2I3MWUxNWU3NGE5
YmU2MWJmOTQuLjNkY2EyOTY3ODhiMDAxMDY4ZTAxZjQyM2UxMTZjN2MyYTRlN2RhNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBjb21waWxlKEIzOjpQcm9jZWR1cmUmIHBy
b2MpCiAgICAgZ2VuZXJhdGUocHJvYy5jb2RlKCksIGppdCk7CiAgICAgTGlua0J1ZmZlciBsaW5r
QnVmZmVyKGppdCwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCMzo6
Q29tcGlsYXRpb24+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAg
ICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRl
c3RhaXIgY29tcGlsYXRpb24iKSwgcHJvYy5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIH0KIApAQCAt
MTg1NSw3ICsxODU1LDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNhY2hlZFRlbXBSZWdpc3RlcnMo
KQogICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCBBcmc6OmJpZ0ltbShiaXR3aXNlX2Nh
c3Q8aW50cHRyX3Q+KCZ0aGluZ3MpKSwgYmFzZSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogcGF0
Y2hQb2ludDFSb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBh
dGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBh
dGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3Bl
Y2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4o
KSk7CiAKICAgICAvLyBJbiBQYXRjaHBvaW50LCBMb2FkIHRoaW5nc1swXSAtPiB0bXAuIFRoaXMg
d2lsbCBtYXRlcmlhbGl6ZSB0aGUgYWRkcmVzcyBpbiB4MTcgKGRhdGFNZW1vcnlSZWdpc3Rlciku
CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDEgPSBwYXRjaFBvaW50MVJvb3Qt
PmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdp
bigpKTsKQEAgLTE5MzAsNyArMTkzMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkKCkK
ICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGlu
UmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVj
aWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVj
aWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUu
YWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBC
Mzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5NjIsNyArMTk2Miw3IEBA
IHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkMigpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBC
Mzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6
Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3Bl
Y2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6
UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNS
b290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpP
cmlnaW4oKSk7CkBAIC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5l
ZDMoKQogICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJv
Yy5waW5SZWdpc3RlcihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2lu
dFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2lu
dFNwZWNpYWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0g
Y29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAog
ICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBv
aW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5oCmluZGV4IDE1NWNhNGFiNDcwYjAxNDQyYWQ5NTQzYThhZTFmYzFmYzU5ZjdlM2Eu
LjFjN2FkMGY5NGUwNmI4YzMxYmZlN2NjOTRkMDU1MmM0Nzc5NjA3ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmgKQEAgLTE4OSw3ICsxODksNyBAQCBleHRlcm4gTG9jayBjcmFzaExvY2s7
CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjb21waWxlUHJvYyhQcm9jZWR1
cmUmIHByb2NlZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwgPSBPcHRpb25zOjpkZWZhdWx0QjNPcHRM
ZXZlbCgpKQogewogICAgIHByb2NlZHVyZS5zZXRPcHRMZXZlbChvcHRMZXZlbCk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1
cmUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGMx
MDg1OWFjZWQzZGI3OGI2NjQ5NzZhMDhiOGU1YjQ4ZDY1MmIyZjMuLjc3ZmI2NWRhMGI3YTA2Yzdk
NjU4YmFiZGI0ZTUxMDhhNzkxN2VlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAg
c3RhdGUuc2V0U3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKHNwaWxsU3RhdGUpOwogCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghYWNjZXNzLmNhbGxMaW5rSW5mbygpKTsKLSAgICAgICAg
ICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtJbmZv
PigpOworICAgICAgICAgICAgYWNjZXNzLm1fY2FsbExpbmtJbmZvID0gbWFrZVVuaXF1ZTxDYWxs
TGlua0luZm8+KCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZW5lcmF0ZWQgYSBw
b2x5bW9ycGhpYyBjYWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0byB0aGUgZ2V0dGVyCiAgICAg
ICAgICAgICAvLyBzdHViLCB3aGljaCB0aGVuIGp1bXBlZCBiYWNrIHRvIHRoZSBtYWluIGNvZGUs
IHRoZW4gd2UnZCBoYXZlIGEgcmVhY2hhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAppbmRleCAy
YmQ5ZmU2NTE5OWQwN2YxNzNlMzgzMGRjNzRlNDY3ZWI5ZDU0MWZjLi45MjU3ZmMyMjY2NTI5Zjg2
MTM3ZDVkYWQ4YzkyNDk3MTgzOTA0NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVi
bGljIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjpTbG93UAogICAgIHZvaWQgQWNjZXNzQ2FzZVNu
aXBwZXRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBm
cm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5
cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgdG8gPSBqaXQubGFiZWwoKTsgXAotICAgICAgICBtX2dl
bmVyYXRvcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0
aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRU
eXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBc
CisgICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQobWFrZVVuaXF1ZTxTbG93UGF0aENhbGxHZW5l
cmF0b3JXaXRoQXJndW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUs
IFJlc3VsdFR5cGUsIF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBh
cmdzKSk7IFwKICAgICB9IFwKIAogU05JUFBFVF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RFRklORV9D
QUxMX09QRVJBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDMzYmIwYzA2NjM1MzgxZTg5OGY2NWE4NzRm
MWYzNmE4Yzk0ODIzYWYuLjEwYzY1YmI5ZGQ3MDlhOWFmN2FiYTZjZWI4YTliNzM1OTc3MTY0MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwCkBAIC02NSwxNSArNjUsMTUgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgog
ICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2lj
QmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKIAotICAgIGF1
dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKLSAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2Nr
KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVj
b2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7CisgICAgYXV0byBmaXJzdEJsb2NrID0gbWFrZVVu
aXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7
CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKICAgICBh
cHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJy
ZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0Qmxv
Y2spKTsKIAotICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CisgICAgYXV0byBleGl0ID0gbWFr
ZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2Nr
KTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIApAQCAtODQs
NyArODQsNyBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgICAgIGJvb2wgY3JlYXRlZEJs
b2NrID0gZmFsc2U7CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEganVt
cCB0YXJnZXQsIHRoZW4gaXQncyB0aGUgbGVhZGVyIG9mIGl0cyBvd24gYmFzaWMgYmxvY2suCiAg
ICAgICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9m
ZnNldCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKLSAgICAgICAgICAgIGF1dG8gbmV3
QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24p
OworICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPihpbnN0cnVjdGlvbik7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7
CiAgICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAg
ICBjcmVhdGVkQmxvY2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBkOGRhYzE1ODVmYWIyYjk5OGMxZTVkODg3NTJiYTEy
ZGY2ZGFkYmRlLi4zOTNmMTgyNGU0MWE0YmViNTE0YzYyYTY5NmYzM2E4MzcyNDk1Y2RkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAt
MjY1LDcgKzI2NSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogCiB2
b2lkIENhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVm
ZmxlRGF0YSYgc2h1ZmZsZURhdGEpCiB7Ci0gICAgbV9mcmFtZVNodWZmbGVEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJh
bWVTaHVmZmxlRGF0YSA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVE
YXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGVmMWNhYmZhNzE4YjA4MGQ3ZjNlODYzN2Y5Zjk0
ZjYwNTg2ZWU0ZTguLjM5YTIzYjRjN2Y0N2Q4ZmNlNWUzMGVlY2E1NTBlNzdkYWQzMTU4NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMzM3
LDcgKzEzMzcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygp
CiBDb2RlQmxvY2s6OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNsb3coY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikKIHsKICAgICBBU1NFUlQoIW1faml0RGF0YSk7Ci0gICAgbV9q
aXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKSVREYXRhPigpOworICAgIG1faml0RGF0YSA9IG1h
a2VVbmlxdWU8SklURGF0YT4oKTsKICAgICByZXR1cm4gKm1faml0RGF0YTsKIH0KIApAQCAtMTU1
MCw3ICsxNTUwLDcgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudEZv
ckJ5dGVjb2RlT2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2sKIHZvaWQgQ29kZUJsb2NrOjpz
ZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGVuc3VyZUpJVERh
dGEobG9ja2VyKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKKyAgICBlbnN1cmVKSVREYXRh
KGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zm
c2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRD
YWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4g
cmVnaXN0ZXJBdE9mZnNldExpc3QpCkBAIC0xNzkwLDcgKzE3OTAsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3coY29u
c3QgT3BDYXRjaAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kp
CiAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aSkpOwogCi0gICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgYXV0byBwcm9maWxl
cyA9IG1ha2VVbmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRz
LnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmlsZXMtPm1f
c2l6ZTsgKytpKQogICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5k
ID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IDg3MDY4YmE2NWRkODVjMjNmYmU0YTQ5MGU5NzRhNzI4MWYy
NTYwNGMuLjMxNDM4ZTBhYzUwNjliMjc0OTY5ODg4NmFiMTEyMDA3NmJjYjczYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTk0Myw3ICs5NDMsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNyZWF0ZVJhcmVE
YXRhSWZOZWNlc3NhcnkoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7Ci0gICAg
ICAgICAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAg
ICAgICAgICAgIGF1dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRjaFByb2ZpbGVzIGNhbiBiZSB0
b3VjaGVkIGZyb20gY29tcGlsZXIgdGhyZWFkcy4KICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBX
VEZNb3ZlKHJhcmVEYXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKaW5kZXggMmQ5NDMxY2YwYjE0NGZhM2EyYzIy
MWE2NmU5NDA3MGM3NzUwZTBlMC4uYjFhMDFmZmE0ZDkzNDhmZWNiMjRjOTY4OGJjODAwNTJmOTM4
ODZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQ
cm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxv
Y2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgIC8vIElmIHdlJ3Zl
IG5ldmVyIHNlZW4gYW55IGZyZXF1ZW50IGV4aXRzIHRoZW4gY3JlYXRlIHRoZSBsaXN0IGFuZCBw
dXQgdGhpcyBzaXRlCiAgICAgLy8gaW50byBpdC4KICAgICBpZiAoIXByb2ZpbGUubV9mcmVxdWVu
dEV4aXRTaXRlcykgewotICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKKyAgICAgICAgcHJvZmls
ZS5tX2ZyZXF1ZW50RXhpdFNpdGVzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0
ZT4+KCk7CiAgICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcy0+YXBwZW5kKHNpdGUp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3Bw
CmluZGV4IDRmNDhhMWQ2Yzk4NzIyZTVhYzJlY2U4N2U1MDQwMjMyZjlhNWQ2YjEuLjRmYjExNTcz
MDAzYjUyZWZkOWE4NjZmYjNiZGY3NzUwOThjZWZhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
Ojpjb21waWxhdGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvZGVCbG9jayosCiBWZWN0b3I8
RGVmZXJyZWRTb3VyY2VEdW1wPiYgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjplbnN1cmVE
ZWZlcnJlZFNvdXJjZUR1bXAoKQogewogICAgIGlmICghbV9kZWZlcnJlZFNvdXJjZUR1bXApCi0g
ICAgICAgIG1fZGVmZXJyZWRTb3VyY2VEdW1wID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RGVm
ZXJyZWRTb3VyY2VEdW1wPj4oKTsKKyAgICAgICAgbV9kZWZlcnJlZFNvdXJjZUR1bXAgPSBtYWtl
VW5pcXVlPFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+PigpOwogICAgIHJldHVybiAqbV9kZWZl
cnJlZFNvdXJjZUR1bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcAppbmRleCBkYjlhZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJi
NjgzZGRlYWQ2Li5kZjRkNzdjZTNmNjNiNTIwMDc1NTQ0YzQxYTE2Y2IyMzFkN2RmYTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBA
IC0yNDMsNyArMjQzLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
U3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6
R2V0dGVyOiB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtT
dGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
KmNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBj
YWxsRXhpdFNpdGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuY3BwCmluZGV4IGZjMWY0NjBkZTk2NTQxZDhmYTA5OWNiYjQ1ZjIzMDlj
MmEzMzM4MGYuLmVkOGQ0OTNmN2VlNmYxZGEyYjkwOWFkNTdjNjI3NzE4MTNjMmQ2YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApA
QCAtNzIsNyArNzIsNyBAQCBHZXRCeUlkVmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9y
PShjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jdXN0b21BY2Nlc3NvckdldHRl
ciA9IG90aGVyLm1fY3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgbV9kb21BdHRyaWJ1dGUgPSBv
dGhlci5tX2RvbUF0dHJpYnV0ZTsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykKLSAg
ICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+
KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG1h
a2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAgICBl
bHNlCiAgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAqdGhp
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDA5MjlkNmZiNDEyNjc0ZWQ3ZjIwNDA0NWZiNDI1
ZWI3ZDM4ZDNjOTMuLjZlZWIxNDViMzM3OTY2MmFmMWMxNTAwMTkwNzY3MjdhMzllZTJiZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCiAgICAg
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVL
ZXkmIGtleSkKIHsKICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKKyAgICAgICAgbV9kYXRh
ID0gbWFrZVVuaXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKICAgICBlbHNl
IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGlmIChtX2RhdGEtPmF0KGkpLmtleSgpID09IGtleSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgK
aW5kZXggYjQ5ZTRlMjQyZTUyZjA4MTMxNWU0OGZiMWUxYmNjMjk3ZTUyOGFlMC4uYTFlY2I5NGRk
MGQxODY3MDg2MzUyZjUyYjViNThjMzE5M2VlY2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgY2xhc3MgUG9seVByb3RvQWNjZXNzQ2hhaW4gewogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjbG9uZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOwogICAgIH0KIAogICAg
IGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWlu
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcAppbmRleCAyMmY0NTU4MTRiODRhZjRmZTc0Y2FmMjM0MDFkMzBhZGFkYWU1YzZl
Li4zYjMwMjMzOWYwMzUwZGFjNDI4ZjNmMDRjYzczNTJhM2FlNTIxYjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAg
LTYxNiw3ICs2MTYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNz
OjpyZWdlbmVyYXRlKAogICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShj
b2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBjb2RlQmxvY2tUaGF0
T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcp
OwogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBp
ZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWFrUmVmZXJl
bmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RG
TW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOworICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0g
bWFrZVVuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndl
YWtSZWZlcmVuY2VzKSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCmluZGV4IGMyZDk1MzIwY2ViZDU2ZGJkYzkzZWViZDZjMzE0MGE3ZGY3Y2MyMDkuLmQ2NDJi
Y2NmZTc5NzY2YzUyNzliYmM4MTA4NzAxZWI3Zjg1ODI0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTIwMiw3ICsyMDIsNyBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJ
bmxpbmVhYmxlOiB7CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlu
a1N0YXR1cz4gY2FsbExpbmtTdGF0dXMgPQotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
a2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
PigpLmNhbGxMaW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtT
dGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0
ZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFy
aWFudC5jcHAKaW5kZXggNWQ2YjI5MDQ1Y2E2NzVjNTZmYTcxZDU0NzVhMTE1YjJkZjZmM2M1ZS4u
NzJjNmNhYzg0ZmIyN2JjZjVlNDE3YzQ5NmU2MzYyZjcyZTZjMGEyOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIFB1dEJ5SWRWYXJpYW50JiBQdXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IFB1
dEJ5SWRWYXJpYW50JiBvdGhlcikKICAgICBtX2NvbmRpdGlvblNldCA9IG90aGVyLm1fY29uZGl0
aW9uU2V0OwogICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CiAgICAgaWYgKG90aGVyLm1f
Y2FsbExpbmtTdGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1f
Y2FsbExpbmtTdGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxs
TGlua1N0YXR1cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0
cjsKICAgICByZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKaW5kZXggOTZkMjJlY2ZhMGE0Yzc1NmVkZmY2MWYw
MDEzZjcyNThlN2QzZmJkNS4uNTNmMjA4YmNhZGVkM2RlYTJkZWUxOGEwZTg5NjA1YzQ5MGExOTVi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmNwcApAQCAtNDUsNyArNDUsNyBAQCBSZWNvcmRlZFN0YXR1c2VzOjpSZWNvcmRlZFN0
YXR1c2VzKFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKIAogQ2FsbExpbmtTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3Rh
dHVzUHRyID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKICAgICBDYWxsTGlu
a1N0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGNhbGxzLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtNTMsNyArNTMsNyBAQCBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogCiBHZXRC
eUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVP
cmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBh
dXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsK
KyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsK
ICAgICBHZXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgZ2V0cy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYxLDcgKzYxLDcgQEAgR2V0QnlJZFN0YXR1cyogUmVjb3Jk
ZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LAogICAgIAogUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1
cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0
dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0
dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFB1dEJ5SWRTdGF0
dXM+KHN0YXR1cyk7CiAgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgp
OwogICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw3ICs2OSw3IEBAIFB1dEJ5SWRT
dGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdp
biYgY29kZU9yaWdpbiwKIAogSW5CeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRJbkJ5
SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgSW5CeUlkU3RhdHVz
JiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluQnlJ
ZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8SW5CeUlk
U3RhdHVzPihzdGF0dXMpOwogICAgIEluQnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdl
dCgpOwogICAgIGlucy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShz
dGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50LmNwcAppbmRleCAzMGExZjA1NTI1OWUzZGVkMWE3MTY4ZWUzNTI2ZjcyYzA4NGJlZTVh
Li5mY2MyOTExODAyNDRlMGIzMjI5ZTJmZDc2MzAwN2JlNzlhODc0MWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQqIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJl
UmVmZXJlbmNlCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiYga2V5KQogewogICAgIGlmICghaG9sZGVyUmVmKQotICAgICAgICBo
b2xkZXJSZWYgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5m
bz4oY29kZUJsb2NrLCBzdHViSW5mbyk7CisgICAgICAgIGhvbGRlclJlZiA9IG1ha2VVbmlxdWU8
V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAg
ICBlbHNlIHsKICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9jb2RlQmxvY2sgPT0gY29kZUJs
b2NrKTsKICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9zdHViSW5mbyA9PSBzdHViSW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCA3MjIyZDQ4MmFkMWU1ZTI4NmNlZjU5ZDRmZjFlMWY1ZWIwNzEwNzhkLi40
OTE5NWQxNTcyMWQyY2RhNGY3NDhhZThkYmUyYWYwMDlhMjhhN2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTE2
MCw3ICsxNjAsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjph
ZGRBY2Nlc3NDYXNlKAogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1v
cnBoaWNBY2Nlc3M+IGFjY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+
KCk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2Vz
cyA9IG1ha2VVbmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2Vz
OwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBlMDA2ZDE2YjliOGEwZmMzMGYwNDMzY2RlNjAy
ZWNjM2IxNjhkNDJlLi4yYzlhMGIzMDFlYjA5OGUxMTVlZjFlMzZiMTI3YmUyOWUzYWJkYTIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIFVu
bGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxvY2sqIGNvZAogICAg
ICAgICBpZiAoIW1fbGl2ZW5lc3MpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgY2hhbmNl
IHR3byBjb21waWxlciB0aHJlYWRzIHJhY2VkIHRvIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAg
ICAvLyBHcmFiYmluZyB0aGUgbG9jayBhYm92ZSBkZWZlbmRzIGFnYWluc3QgY29tcHV0aW5nIGxp
dmVuZXNzIHR3aWNlLgotICAgICAgICAgICAgbV9saXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOworICAgICAgICAgICAgbV9saXZl
bmVzcyA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOwog
ICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0MzcwOTUxOWViNjE2ZTI2NTEwNmVmMWQ1
NTI5NjE3ZDY0NWM5YmM5Li41MTI1MzZjMGQ0NDg1N2E0Y2E3NmU4MTNmZTE0ODAzYTk3M2ZmYTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaApAQCAtNDAyLDcgKzQwMiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKICAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcoKmhlYXAoKSwgY2VsbExvY2soKSk7
Ci0gICAgICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsK
KyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBmYmVjOWY3MmNhMmZk
MWExOGJhY2IwNzNlNjg3MjU0YjcwYjllYmUxLi40OWQ5ZDJmZDNlNmZlOWZiNGI1MjdmNjc3YWJk
NWJkNGE1MTIyNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI3NSw3ICsyNzUs
NyBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxv
Y2tzKFZNJiB2bSkKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJU
KCFtX3JhcmVEYXRhKTsKLSAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0
YT4oKTsKKyAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByZXR1
cm4gKm1fcmFyZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlOTc2ODZhYTNlZGNkZDhkM2Y5
YjU3YzRhNmQxMjNiYWM5Y2IzOTg3Li4xNzhhNjFkZjY5MTMzYWZkY2MxMjcyOGNiZmQ5NmViMzlm
NDJhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAg
ICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9k
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOwor
ICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVH
ZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2Rl
LCBlbnZpcm9ubWVudCk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJh
dG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVw
b3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmgKaW5kZXggYmNkNzJlYTA5ZjVmNzE3YTY1ZjY1ZDdkMmVmYzE3NWUwMjNl
Njk5MC4uZWJhYmI1OWQ0MzU5YTllMzY0ZjJjYTNhZjZhZmQwZWZkMDM5MGIzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xh
c3MgVk07CiB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CiAKIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIERlYnVnZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBEZWJ1Z2dlcihWTSYpOwogICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggZjIwYTM1N2VjYjczYWE3ZWZlNGNiMTA3ZDFjY2I3ZTlkYzkwMDMzOS4uMjc2
NTY5MjZhOGQyOWQyN2ViZWVhYTlmZmRjYTIwM2NjMjVmYTBmNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtNTgsNyArNTgsNyBAQCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6QWJzdHJhY3RJbnRlcnByZXRlcihHcmFwaCYgZ3JhcGgsIEFic3RyYQogICAgICwgbV9zdGF0
ZShzdGF0ZSkKIHsKICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQotICAgICAgICBtX3Bo
aUNoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxQaGlDaGlsZHJlbj4obV9ncmFwaCk7CisgICAg
ICAgIG1fcGhpQ2hpbGRyZW4gPSBtYWtlVW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDMyYTJjOTA0OWZlZDZmODJjNmFiYTQwNzY3NjZiZjQy
OWIxMzkzODMuLjA4NzRlYTcxY2JkZWI3YzYxZmU1YTA4ZTA1NTJiMGIzN2I0YjEzNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC03NCw3ICs3NCw3IEBAIEdyYXBo
OjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1f
Y29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2soKSkKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2Nv
ZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlxdWU8
U1NBQ0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhtYWtlVW5pcXVlPFNTQUNGRz4oKnRoaXMp
KQogICAgICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVm
b3JlRml4cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RT
dGFydGVkUmVnaXN0ZXJpbmcpCkBAIC04Niw4ICs4Niw4IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0s
IFBsYW4mIHBsYW4pCiAgICAgCiAgICAgbV9oYXNEZWJ1Z2dlckVuYWJsZWQgPSBtX3Byb2ZpbGVk
QmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSB8fCBPcHRpb25zOjpmb3Jj
ZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uKCk7CiAgICAgCi0gICAgbV9pbmRleGluZ0NhY2hl
ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlzKTsKLSAgICBtX2Fic3RyYWN0
VmFsdWVzQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0
aGlzKTsKKyAgICBtX2luZGV4aW5nQ2FjaGUgPSBtYWtlVW5pcXVlPEZsb3dJbmRleGluZz4oKnRo
aXMpOworICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd01hcDxBYnN0
cmFjdFZhbHVlPj4oKnRoaXMpOwogCiAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RydWN0dXJl
U3RydWN0dXJlLmdldCgpKTsKICAgICB0aGlzLT5zdHJpbmdTdHJ1Y3R1cmUgPSByZWdpc3RlclN0
cnVjdHVyZSh2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAg
RnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaykKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlTGl2ZW5lc3MuZW5kKCkpCiAgICAgICAg
IHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRl
Y29kZUxpdmVuZXNzPiBsaXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8RnVsbEJ5dGVjb2RlTGl2
ZW5lc3M+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPiBsaXZl
bmVzcyA9IG1ha2VVbmlxdWU8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+KCk7CiAgICAgY29kZUJsb2Nr
LT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0ZUZ1bGxMaXZlbmVzcyhjb2RlQmxvY2ssICpsaXZl
bmVzcyk7CiAgICAgRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCA9ICpsaXZlbmVzczsKICAg
ICBtX2J5dGVjb2RlTGl2ZW5lc3MuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShsaXZlbmVzcykpOwpA
QCAtMTA5OCw3ICsxMDk4LDcgQEAgQnl0ZWNvZGVLaWxscyYgR3JhcGg6OmtpbGxzRm9yKENvZGVC
bG9jayogY29kZUJsb2NrKQogICAgIGlmIChpdGVyICE9IG1fYnl0ZWNvZGVLaWxscy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuICppdGVyLT52YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVLaWxscz4ga2lsbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gbWFrZVVuaXF1ZTxC
eXRlY29kZUtpbGxzPigpOwogICAgIGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1
dGVLaWxscyhjb2RlQmxvY2ssICpraWxscyk7CiAgICAgQnl0ZWNvZGVLaWxscyYgcmVzdWx0ID0g
KmtpbGxzOwogICAgIG1fYnl0ZWNvZGVLaWxscy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGtpbGxz
KSk7CkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBDUFNDRkcmIEdyYXBoOjplbnN1cmVDUFNDRkcoKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNp
b24pOwogICAgIGlmICghbV9jcHNDRkcpCi0gICAgICAgIG1fY3BzQ0ZHID0gc3RkOjptYWtlX3Vu
aXF1ZTxDUFNDRkc+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNDRkcgPSBtYWtlVW5pcXVlPENQU0NG
Rz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNDRkc7CiB9CiAKQEAgLTE1NDQsNyArMTU0NCw3
IEBAIENQU0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKCkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAg
ICBpZiAoIW1fY3BzRG9taW5hdG9ycykKLSAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fY3BzRG9taW5hdG9y
cyA9IG1ha2VVbmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNE
b21pbmF0b3JzOwogfQogCkBAIC0xNTUyLDcgKzE1NTIsNyBAQCBTU0FEb21pbmF0b3JzJiBHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fc3NhRG9taW5hdG9ycykK
LSAgICAgICAgbV9zc2FEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FEb21pbmF0b3Jz
PigqdGhpcyk7CisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8U1NBRG9taW5h
dG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCkBAIC0xNTYx
LDcgKzE1NjEsNyBAQCBDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9v
cHMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZl
cnNpb24pOwogICAgIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fY3BzTmF0dXJh
bExvb3BzKQotICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BT
TmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbWFrZVVu
aXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExv
b3BzOwogfQogCkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjpl
bnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0Ep
OwogICAgIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fc3NhTmF0dXJhbExvb3Bz
KQotICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBTmF0dXJh
bExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxT
U0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwog
fQogCkBAIC0xNTc5LDcgKzE1NzksNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNr
d2FyZHNDRkcoKQogICAgIC8vIFdlIGNvdWxkIGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBmdXR1
cmUgdG8gd29yayBvdmVyIENQUywgYnV0IHRvZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EuCiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2FyZHND
RkcpCi0gICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHND
Rkc+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJk
c0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKQEAgLTE1ODcs
NyArMTU4Nyw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNE
b21pbmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBp
ZiAoIW1fYmFja3dhcmRzRG9taW5hdG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3Jz
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAg
IG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0xNTk1
LDcgKzE1OTUsNyBAQCBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0g
PT0gU1NBKTsKICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCi0gICAgICAg
IG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CisgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMgPSBtYWtlVW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDYzOTA0M2U5ZTI3
ZmJlMGUwYjkyYWI0NmE2NjliZTE0MTA1MDMzNzAuLmYyYjY2NDAyZTNhZDBlNzJkZmNlMDViNjVh
ZjNmYzkyNmQwMDlkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEpJVENvbXBpbGVyOjpKSVRDb21waWxlcihHcmFw
aCYgZGZnKQogICAgICwgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIoZGZnLm1fdm0pCiB7CiAg
ICAgaWYgKFVOTElLRUxZKHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IG1fZ3JhcGgubV92bS5t
X3BlckJ5dGVjb2RlUHJvZmlsZXIpKQotICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGlzYXNzZW1ibGVyPihkZmcpOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1h
a2VVbmlxdWU8RGlzYXNzZW1ibGVyPihkZmcpOwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIG1f
aml0Q29kZS0+dGllclVwSW5Mb29wSGllcmFyY2h5ID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi50
aWVyVXBJbkxvb3BIaWVyYXJjaHkoKSk7CiAgICAgZm9yICh1bnNpZ25lZCB0aWVyVXBCeXRlY29k
ZSA6IG1fZ3JhcGgubV9wbGFuLnRpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzKCkpCkBAIC0zNDMs
NyArMzQzLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KQogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1h
cHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6
bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1h
cEJ1aWxkZXIpLCBsaW5rQnVmZmVyKSk7CisgICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29k
ZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOwogfQogCiBzdGF0aWMgdm9pZCBlbWl0
U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvbXBpbGVyJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCYgc3RhY2tPdmVyZmxvdykKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIAogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7
Ci0gICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0
aGlzKTsKKyAgICBtX3NwZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRo
aXMpOwogCiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZh
aWxhYmxlIGluIHRoZSBKU1N0YWNrLgogICAgIEp1bXBMaXN0IHN0YWNrT3ZlcmZsb3c7CkBAIC00
MDIsOSArNDAyLDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxh
dGl2ZS0+Y3JlYXRlT1NSRW50cmllcygpOwogICAgIHNldEVuZE9mQ29kZSgpOwogCi0gICAgYXV0
byBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgYXV0byBsaW5rQnVmZmVyID0gbWFr
ZVVuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKLSAgICAg
ICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmlu
YWxpemVyPihtX2dyYXBoLm1fcGxhbikpOworICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5h
bGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZSgpCiAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAKLSAgICBt
X2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+
KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEpJVEZpbmFsaXpl
cj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShsaW5rQnVmZmVyKSkpOwogfQogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBKSVRD
b21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBjb21waWxlRW50cnlFeGVjdXRpb25GbGFn
KCk7CiAKICAgICAvLyA9PT0gRnVuY3Rpb24gYm9keSBjb2RlIGdlbmVyYXRpb24gPT09Ci0gICAg
bV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsK
KyAgICBtX3NwZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwog
ICAgIGNvbXBpbGVCb2R5KCk7CiAgICAgc2V0RW5kT2ZNYWluUGF0aCgpOwogCkBAIC01MDcsOSAr
NTA3LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBzZXRFbmRP
ZkNvZGUoKTsKIAogICAgIC8vID09PSBMaW5rID09PQotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxh
dGlvbkNhbkZhaWwpOworICAgIGF1dG8gbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZl
cj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChs
aW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFu
LnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5t
X3BsYW4pKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8
RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGxpbmsoKmxpbmtCdWZmZXIpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4gd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50
cnlQdHJUYWc+KGFyaXR5Q2hlY2spOwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVy
KHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRG
aW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxh
biwgbV9qaXRDb2RlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhB
cml0eUNoZWNrKSk7CiB9CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkKiBKSVRDb21waWxlcjo6
YWRkcmVzc09mRG91YmxlQ29uc3RhbnQoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQ7CiAKICAgICBpZiAoIW1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMpCi0gICAgICAgIG1f
Z3JhcGgubV9kb3VibGVDb25zdGFudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhZzxkb3VibGU+Pigp
OworICAgICAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gbWFrZVVuaXF1ZTxCYWc8ZG91
YmxlPj4oKTsKIAogICAgIGRvdWJsZSogYWRkcmVzc0luQ29uc3RhbnRQb29sID0gbV9ncmFwaC5t
X2RvdWJsZUNvbnN0YW50cy0+YWRkKCk7CiAgICAgKmFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IHZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuY3BwCmluZGV4IGJiODAwMjc0ZGRjYjYzMDM0NzgzNzM3ZTM4YWQxZTYxZTlj
NWVhMDQuLmE5NDQwNDc0NTkyNTIxODQ1YmEzMTg4MzdiMTNiOWY0YTMxN2VmMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFz
ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgTGl2ZW5lc3NBbmFseXNpc1BoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgLCBtX2xpdmVBdFRhaWwobV9ncmFwaCkKICAgICB7CiAgICAg
ICAgIG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5yZWNvbXB1dGUoKTsKLSAgICAgICAgbV93b3Jr
c2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jrc2V0PihtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+
bnVtSW5kaWNlcygpKTsKKyAgICAgICAgbV93b3Jrc2V0ID0gbWFrZVVuaXF1ZTxXb3Jrc2V0Piht
X2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+bnVtSW5kaWNlcygpKTsKICAgICB9CiAKICAgICBib29s
IHJ1bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCA0ZGJjZWU4YTZi
YjJkYzM4ZGZjNTA1ZGJjYWI2ZTM5ZmMwZTI3NmYyLi4wNzgzMGVkMmY1ZTgxNjY0ODhiOTFhZGM1
MmE3MTkyZGIyOGMxMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAg
LTI5Niw3ICsyOTYsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhy
ZWFkSW1wbCgpCiAgICAgaWYgKG1fbW9kZSA9PSBGVExGb3JPU1JFbnRyeU1vZGUpIHsKICAgICAg
ICAgYm9vbCByZXN1bHQgPSBwZXJmb3JtT1NSRW50cnlwb2ludENyZWF0aW9uKGRmZyk7CiAgICAg
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9
IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4g
RmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1DUFNSZXRocmVh
ZGluZyk7CkBAIC0zOTcsNyArMzk3LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNv
bXBpbGVJblRocmVhZEltcGwoKQogICAgIGNhc2UgRlRMRm9yT1NSRW50cnlNb2RlOiB7CiAjaWYg
RU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6
OkNhbm5vdENvbXBpbGUpIHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0g
bWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBG
YWlsUGF0aDsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBQbGFuOjpD
b21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgICAgIFJVTl9Q
SEFTRShwZXJmb3JtV2F0Y2hwb2ludENvbGxlY3Rpb24pOwogICAgICAgICAKICAgICAgICAgaWYg
KEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgewotICAgICAgICAg
ICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMp
OworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4o
KnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApp
bmRleCA4NzE1OTViMWZmMjU5YmVlNDRjNzFjZTAzZDdkOGU4YmQ2NDM2NTM3Li41MzRkNjRiNTM4
ZmExODBhZjQ4ZTg5ZDRmODI2MDJmYjQ1YzkyMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCkBAIC00NDgsNyArNDQ4LDcg
QEAgY2xhc3MgU1NBQ29udmVyc2lvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1
ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIo
KTsKLSAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6
OlNTQURhdGE+KGJsb2NrKTsKKyAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBtYWtlVW5pcXVlPEJh
c2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0
byYgcGFpciA6IGVudHJ5cG9pbnRJbmRleFRvQXJndW1lbnRzQmxvY2spIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCA3Y2Y0MjUy
MWE2MjExNzhmZjg1MTJhZmY5ZmZmYTMyNTIwMDIyNGQ2Li5jZGNkYWE2MGQ4OThhM2I2NmQ3YjI5
OGY2NjgxOGM3OWRjNDhjODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0xOTMsNyArMTkzLDcgQEAgaW5saW5lIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIFNwaWxsUmVnaXN0
ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQs
CiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2Vu
ZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+
KAorICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+
PigKICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwg
cmVzdWx0LCBhcmd1bWVudHMuLi4pOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIERlc3RpbmF0aW9uVHlwZSwgdHlwZW5hbWUgU291
cmNlVHlwZSwgdW5zaWcKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoTW92ZSgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBT
b3VyY2VUeXBlIHNvdXJjZVtudW1iZXJPZkFzc2lnbm1lbnRzXSwgRGVzdGluYXRpb25UeXBlIGRl
c3RpbmF0aW9uW251bWJlck9mQXNzaWdubWVudHNdKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5
cGUsIFNvdXJjZVR5cGUsIG51bWJlck9mQXNzaWdubWVudHM+PigKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBl
LCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCiAgICAgICAgIGZyb20sIGppdCwg
ZGVzdGluYXRpb24sIHNvdXJjZSk7CiB9CiAKQEAgLTI0OSw3ICsyNDksNyBAQCBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291
cmNlVHlwZSBzb3VyY2VBcnJheVsxXSA9IHsgc291cmNlIH07CiAgICAgRGVzdGluYXRpb25UeXBl
IGRlc3RpbmF0aW9uQXJyYXlbMV0gPSB7IGRlc3RpbmF0aW9uIH07Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0
aW9uVHlwZSwgU291cmNlVHlwZSwgMT4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmlu
Z1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUs
IDE+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7
CiB9CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291cmNlVHlwZSBzb3VyY2VBcnJheVsy
XSA9IHsgc291cmNlMSwgc291cmNlMiB9OwogICAgIERlc3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlv
bkFycmF5WzJdID0geyBkZXN0aW5hdGlvbjEsIGRlc3RpbmF0aW9uMiB9OwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0
aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDI+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3Np
Z25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VU
eXBlLCAyPj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJy
YXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDJhYmNkYjNmZDVmOTcwZjNmYmI5MGQzYjBmNmUzY2Q5ZDQwZmNlMzcuLjAz
OWE0NmE3NTg2MTA0OGM4NWYwMzI4MmEyNmZlYWZiN2VmOWJlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNDEsNyArMTQxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1
bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUKICAgICAvLyBJIHdhbnQgYSBzbG93IHBhdGggdGhh
dCBhbHNvIGxvYWRzIG91dCB0aGUgc3RvcmFnZSBwb2ludGVyLCBhbmQgdGhhdCdzCiAgICAgLy8g
d2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZl
cyBtZS4gSXQncyBhIGxvdAogICAgIC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBv
ZiBmdW5jdGlvbmFsaXR5LiA6LS8KLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJl
c3VsdEdQUiwgc3RvcmFnZUdQUiwKICAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpKTsK
IApAQCAtODk5LDcgKzg5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUq
IG5vZGUsIEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgcHJvcGVydHlSZWcpCiAgICAgICAgIHNsb3dQ
YXRoLmFwcGVuZChqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUtPmFy
cmF5TW9kZSgpKSk7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6
bWFrZV91bmlxdWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IobWFrZVVuaXF1ZTxBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAg
c2xvd1BhdGgsIHRoaXMsIG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB0ZW1wR1BSLCBzdHJ1
Y3R1cmVHUFIpKTsKICAgICAKICAgICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKQEAgLTIyNDIs
MTAgKzIyNDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJp
bmcoTm9kZSogbm9kZSkKICAgICAgICAgfQogICAgICAgICBpZiAocHJvdG90eXBlQ2hhaW5Jc1Nh
bmUpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc3RkOjptYWtlX3VuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4o
CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywg
dGhpcywgSlNWYWx1ZVJlZ3Moc2NyYXRjaFJlZyksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAj
ZWxzZQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxT
YW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJh
dG9yPigKICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhpcywgSlNWYWx1ZVJlZ3MocmVz
dWx0VGFnUmVnLCBzY3JhdGNoUmVnKSwKICAgICAgICAgICAgICAgICBiYXNlUmVnLCBwcm9wZXJ0
eVJlZykpOwogI2VuZGlmCkBAIC03NjE5LDcgKzc2MTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cywgcmVzdWx0
R1BSLCBzdHJ1Y3R1cmUsCiAgICAgICAgICAgICAgICAga25vd25MZW5ndGgsIG1pbkNhcGFjaXR5
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xv
d1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHJlc3VsdEdQUiwg
c3RydWN0dXJlLCBsZW5ndGhHUFIsIG1pbkNhcGFjaXR5KTsKICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoV1RGTW92ZShnZW5lcmF0b3IpKTsKICAgICB9CkBAIC04NDM5LDcgKzg0MzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxv
Y2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4o
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2Nh
dG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAog
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCBy
ZXN1bHRHUFIsIHRlbXBWYWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAgIH0K
IApAQCAtOTEzNSw3ICs5MTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0cnVjdHVy
ZUNoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBjZWxsR1BSLCBHUFJSZWcgdGVtcEcKICAgICAgICAg
R1BSUmVnIHN0cnVjdHVyZUdQUjsKICAgICAgICAgCiAgICAgICAgIGlmICh0ZW1wR1BSID09IElu
dmFsaWRHUFJSZWcpIHsKLSAgICAgICAgICAgIHN0cnVjdHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8
R1BSVGVtcG9yYXJ5Pih0aGlzKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZSA9IG1ha2VVbmlxdWU8
R1BSVGVtcG9yYXJ5Pih0aGlzKTsKICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVy
ZS0+Z3ByKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gdGVt
cEdQUjsKQEAgLTEzMTc2LDcgKzEzMTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAog
ICAgIG1faml0Lm11dGF0b3JGZW5jZSgqbV9qaXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNp
emVTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1
ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAog
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3Vs
dEdQUiwKICAgICAgICAgc3RydWN0dXJlLAogICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXpl
VG9BcnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRl
eCBmYTM5NmY0ZjE5MmE4YmI0YWVmOTlkMDM3MTkyNGEyYTM4YzY0NWU4Li5iYTYxMjhlZmU5YmIz
NjhmZTNiMDY2MjNiNTFlZTNlZWFkM2M0ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAt
OTUsOCArOTUsOCBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgIGNhc2UgUGhhc2VNb2RlOjpHbG9iYWw6IHsKICAgICAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKIAotICAg
ICAgICAgICAgbV9zdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+
KG1fZ3JhcGgpOwotICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0
YXRlKTsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBtYWtlVW5pcXVlPEluUGxhY2VBYnN0cmFjdFN0
YXRlPihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBtYWtlVW5pcXVlPEFi
c3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0
ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faXNDb252ZXJnZWQgPSBmYWxzZTsKICAg
ICAgICAgICAgIApAQCAtMTA3LDggKzEwNyw4IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIC8vIHRvd2FyZHMgYmVsaWV2aW5n
IHRoYXQgYWxsIG5vZGVzIG5lZWQgYmFycmllcnMuICJOZWVkaW5nIGEgYmFycmllciIgaXMgbGlr
ZQogICAgICAgICAgICAgLy8gc2F5aW5nIHRoYXQgdGhlIG5vZGUgaXMgaW4gYSBwYXN0IGVwb2No
LiAiTm90IG5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlIHNheWluZwogICAgICAgICAgICAgLy8g
dGhhdCB0aGUgbm9kZSBpcyBpbiB0aGUgY3VycmVudCBlcG9jaC4KLSAgICAgICAgICAgIG1fc3Rh
dGVBdEhlYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9n
cmFwaCk7Ci0gICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9j
a01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0SGVh
ZCA9IG1ha2VVbmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAg
ICAgICAgIG1fc3RhdGVBdFRhaWwgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+
Pj4obV9ncmFwaCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJsb2NrTGlzdCBwb3N0T3Jk
ZXIgPSBtX2dyYXBoLmJsb2Nrc0luUG9zdE9yZGVyKCk7CiAgICAgICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggZTZjMjIyMWVlMzAxNTQ0Yzcy
YTljZTgzNWY5ODBmZjM2ZjAyNGI3ZC4uOGY5MzAzNGIwYzZmOTBiYTY2ZjRiZjVjNTNiZTFiNGYw
ZmJhNzRlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlz
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAg
LTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBXb3JrbGlzdDo6VGhyZWFkQm9keSA6IHB1YmxpYyBBdXRv
bWF0aWNUaHJlYWQgewogICAgICAgICBpZiAobV9yZWxhdGl2ZVByaW9yaXR5KQogICAgICAgICAg
ICAgVGhyZWFkOjpjdXJyZW50KCkuY2hhbmdlUHJpb3JpdHkobV9yZWxhdGl2ZVByaW9yaXR5KTsK
ICAgICAgICAgCi0gICAgICAgIG1fY29tcGlsYXRpb25TY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29tcGlsYXRpb25TY29wZT4oKTsKKyAgICAgICAgbV9jb21waWxhdGlvblNjb3BlID0gbWFrZVVu
aXF1ZTxDb21waWxhdGlvblNjb3BlPigpOwogICAgIH0KICAgICAKICAgICB2b2lkIHRocmVhZElz
U3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlkZQpAQCAtMjE0LDcgKzIxNCw3
IEBAIHZvaWQgV29ya2xpc3Q6OmZpbmlzaENyZWF0aW9uKHVuc2lnbmVkIG51bWJlck9mVGhyZWFk
cywgaW50IHJlbGF0aXZlUHJpb3JpdHkpCiAKIHZvaWQgV29ya2xpc3Q6OmNyZWF0ZU5ld1RocmVh
ZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
VGhyZWFkRGF0YT4odGhpcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEg
PSBtYWtlVW5pcXVlPFRocmVhZERhdGE+KHRoaXMpOwogICAgIGRhdGEtPm1fdGhyZWFkID0gYWRv
cHRSZWYobmV3IFRocmVhZEJvZHkobG9ja2VyLCAqdGhpcywgKmRhdGEsIG1fbG9jaywgbV9wbGFu
RW5xdWV1ZWQuY29weVJlZigpLCByZWxhdGl2ZVByaW9yaXR5KSk7CiAgICAgbV90aHJlYWRzLmFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAppbmRleCAxOWIxMTVjOWZkZDY3Y2JjOGFlMTA5
YzY0NDU3NDI4YmEzYWRmYTUzLi4wMGJkYTY1NzI3OWNmN2E5OWRiYWIxNDliMDljNzAzZDY4YjM1
YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgQXN5bmNocm9ub3VzRGlzYXNzZW1ibGVy
JiBhc3luY2hyb25vdXNEaXNhc3NlbWJsZXIoKQogdm9pZCBkaXNhc3NlbWJsZUFzeW5jaHJvbm91
c2x5KAogICAgIGNvbnN0IENTdHJpbmcmIGhlYWRlciwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZVJlZiwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIq
IHByZWZpeCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IG1ha2VVbmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOwog
ICAgIHRhc2stPmhlYWRlciA9IHN0cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVjayEgV2UgbmVl
ZCB0aGlzIGJlY2F1c2UgQ1N0cmluZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCiAgICAgdGFzay0+
Y29kZVJlZiA9IGNvZGVSZWY7CiAgICAgdGFzay0+c2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKaW5kZXggOTBhZTJmNGZlMDZhMTUy
Y2FlNTc4NWUyYzAzYzk5OWI2ODMyYmMxYi4uZWM4MGVhNjdiMjU2Zjg5MThkNDg4M2E4YzUyYjhm
Mzc5NTgzYWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwLmNwcApAQCAtMTU3LDExICsxNTcsMTEgQEAgY29uc3QgQWJzdHJhY3RIZWFwJiBJbmRleGVk
QWJzdHJhY3RIZWFwOjphdFNsb3cocHRyZGlmZl90IGluZGV4KQogICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGluZGV4KSA+PSBtX3NtYWxsSW5kaWNlcy5zaXplKCkpOwogICAgIAogICAg
IGlmIChVTkxJS0VMWSghbV9sYXJnZUluZGljZXMpKQotICAgICAgICBtX2xhcmdlSW5kaWNlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8TWFwVHlwZT4oKTsKKyAgICAgICAgbV9sYXJnZUluZGljZXMgPSBt
YWtlVW5pcXVlPE1hcFR5cGU+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWJzdHJhY3RIZWFw
PiYgZmllbGQgPSBtX2xhcmdlSW5kaWNlcy0+YWRkKGluZGV4LCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFmaWVsZCkgewotICAgICAgICBmaWVsZCA9IHN0ZDo6bWFrZV91bmlx
dWU8QWJzdHJhY3RIZWFwPigpOworICAgICAgICBmaWVsZCA9IG1ha2VVbmlxdWU8QWJzdHJhY3RI
ZWFwPigpOwogICAgICAgICBpbml0aWFsaXplKCpmaWVsZCwgaW5kZXgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggNWQwNGI3MmYwNDgzMWQw
NjMwMjMwNGQxZWI3ZTQ5MjlkNDgwNDI3Zi4uNDYzNWNjOTZmOTEwOTFmNzNmMDhkMWY3NTJiMDQ3
ZDEwNTNiZmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVz
dWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKIAogICAgIGlm
IChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKLSAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNl
dERpc2Fzc2VtYmxlcihzdGQ6Om1ha2VfdW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7
CisgICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXREaXNhc3NlbWJsZXIobWFrZVVuaXF1ZTxC
Mzo6QWlyOjpEaXNhc3NlbWJsZXI+KCkpOwogCiAgICAgewogICAgICAgICBHcmFwaFNhZmVwb2lu
dCBzYWZlcG9pbnQoc3RhdGUuZ3JhcGgsIHNhZmVwb2ludFJlc3VsdCk7CkBAIC03OCw3ICs3OCw3
IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9p
bnRSZXN1bHQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyT2Zmc2V0cyA9Ci0gICAgICAgIHN0ZDo6bWFrZV91
bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCgpKTsKKyAgICAgICAgbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwogICAgIGlm
IChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgZGF0YUxvZygiVW53aW5kIGluZm8g
Zm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwg
IjogIiwgKnJlZ2lzdGVyT2Zmc2V0cywgIlxuIik7CiAgICAgY29kZUJsb2NrLT5zZXRDYWxsZWVT
YXZlUmVnaXN0ZXJzKFdURk1vdmUocmVnaXN0ZXJPZmZzZXRzKSk7CkBAIC0xNDIsNyArMTQyLDcg
QEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2lu
dFJlc3VsdCkKICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAK
LSAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAg
IHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZl
cj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAKICAgICBpZiAoc3Rh
dGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAg
ICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwpAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRS
ZXN1bHQpCiAgICAgCiAgICAgQjM6OlBDVG9PcmlnaW5NYXAgb3JpZ2luTWFwID0gc3RhdGUucHJv
Yy0+cmVsZWFzZVBDVG9PcmlnaW5NYXAoKTsKICAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9D
b2RlT3JpZ2luTWFwcGluZygpKQotICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2lu
TWFwKHN0ZDo6bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFw
QnVpbGRlcih2bSwgV1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlcikpOworICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1h
a2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2bSwg
V1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlcikp
OwogCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gbGFiZWwgPSBzdGF0ZS5m
aW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oc3Rh
dGUucHJvYy0+ZW50cnlwb2ludExhYmVsKDApKTsKICAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlv
biA9IGxhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWls
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKaW5kZXggMTY1MzM1
MDljZDBiNDgyYzc0YmNhNjczMTg3NjNmMmUwZjA5ZGRmMS4uYzNmOTMzOTJmMjZlNmZjOTVmOWMy
Y2M1OTI5ZWQzNGM2YmMzMGMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExGYWlsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKIHZvaWQgZmFpbChTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGUuZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1h
a2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oc3RhdGUuZ3JhcGgubV9wbGFuKSk7CisgICAgc3Rh
dGUuZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4o
c3RhdGUuZ3JhcGgubV9wbGFuKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDA4NTQwNTZlYzdkMTYyYjExY2Rj
MjFjZDc4ZmUxNTE3ZjdhY2YzZWIuLjk1ZGI2OTYxZThlOTA3NzBjZDZlNTU2NzMwMjJiNDQ3NjNi
NTgwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMTY2LDcgKzE2
Niw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQudW50YWdSZXR1
cm5BZGRyZXNzKCk7CiAgICAgICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuanVtcCgp
KTsKIAotICAgICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZl
cj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgICAgICBs
aW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9B
bGxvY2F0ZSgpKSB7CiAgICAgICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgbGlu
ayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG1haW5QYXRoSnVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAg
IAotICAgICAgICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQs
IGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgbGlua0J1ZmZlciA9
IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CiAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAg
ICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBhZjFiYTRiZjkwYThmZDBiYTI1MDJjNjQ3ZTJjMTcxNDEyMmRlN2Q0Li4wOWIzNDI3M2Ni
YjdjYWI0NGNkODYzZTk5YjI4NTkwZTg3Yzk0YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNTA4MCw3ICsxNTA4MCw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhnZW5lcmF0b3JKdW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHZtLT5nZXRDVElTdHViKGxhenlT
bG93UGF0aEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF6eVNsb3dQYXRoPiBsYXp5U2xvd1BhdGggPSBzdGQ6Om1ha2VfdW5pcXVl
PExhenlTbG93UGF0aD4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gbWFrZVVuaXF1ZTxMYXp5U2xv
d1BhdGg+KCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rZWRQ
YXRjaGFibGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihsaW5rQnVm
ZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlSnVtcCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCmluZGV4IDY1M2VjNmY2OTYwNDliNzUyYWMy
NGE3NzkzMTBkNGFkOTdiYjAzZGIuLjRhNDg0ZmE2ZDQ2NDMwZDcxZTU3MDA4YmYxZTk5ZjZjMjVi
ODQ4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC02MCwxMCAr
NjAsMTAgQEAgU3RhdGU6OlN0YXRlKEdyYXBoJiBncmFwaCkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZp
bmFsaXplcj4oZ3JhcGgubV9wbGFuKSk7CisgICAgZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplciht
YWtlVW5pcXVlPEpJVEZpbmFsaXplcj4oZ3JhcGgubV9wbGFuKSk7CiAgICAgZmluYWxpemVyID0g
c3RhdGljX2Nhc3Q8SklURmluYWxpemVyKj4oZ3JhcGgubV9wbGFuLmZpbmFsaXplcigpKTsKIAot
ICAgIHByb2MgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2NlZHVyZT4oKTsKKyAgICBwcm9jID0gbWFr
ZVVuaXF1ZTxQcm9jZWR1cmU+KCk7CiAKICAgICBwcm9jLT5zZXRPcmlnaW5QcmludGVyKAogICAg
ICAgICBbXSAoUHJpbnRTdHJlYW0mIG91dCwgQjM6Ok9yaWdpbiBvcmlnaW4pIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKaW5kZXggMjJkN2Zk
NjVkNWExNzU1YjViMmQzYjc4ZGRhNTVjMGQwMDdlMWNjYi4uMDIxYjBjZGI5ZGZhYzE4YjM2ODY0
MjhhOTgyM2YyODExMGJiNzlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29tcGxldGVTdWJzcGFjZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQWxsb2NhdG9yIENvbXBsZXRl
U3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgICAgIGRhdGFMb2co
IkNyZWF0aW5nIEJsb2NrRGlyZWN0b3J5L0xvY2FsQWxsb2NhdG9yIGZvciAiLCBtX25hbWUsICIs
ICIsIGF0dHJpYnV0ZXMoKSwgIiwgIiwgc2l6ZUNsYXNzLCAiLlxuIik7CiAgICAgCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlxdWVEaXJlY3RvcnkgPQotICAgICAgICBz
dGQ6Om1ha2VfdW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNz
KTsKKyAgICAgICAgbWFrZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNp
emVDbGFzcyk7CiAgICAgQmxvY2tEaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9y
eS5nZXQoKTsKICAgICBtX2RpcmVjdG9yaWVzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9y
eSkpOwogICAgIApAQCAtODgsNyArODgsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6
YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICBtX3NwYWNlLmFkZEJsb2NrRGlyZWN0
b3J5KGxvY2tlciwgZGlyZWN0b3J5KTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxB
bGxvY2F0b3I+IHVuaXF1ZUxvY2FsQWxsb2NhdG9yID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1
ZTxMb2NhbEFsbG9jYXRvcj4oZGlyZWN0b3J5KTsKKyAgICAgICAgbWFrZVVuaXF1ZTxMb2NhbEFs
bG9jYXRvcj4oZGlyZWN0b3J5KTsKICAgICBMb2NhbEFsbG9jYXRvciogbG9jYWxBbGxvY2F0b3Ig
PSB1bmlxdWVMb2NhbEFsbG9jYXRvci5nZXQoKTsKICAgICBtX2xvY2FsQWxsb2NhdG9ycy5hcHBl
bmQoV1RGTW92ZSh1bmlxdWVMb2NhbEFsbG9jYXRvcikpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAppbmRleCBhMDFiNWEyYjRhZWZkM2U1Mjk2OTc3YTVjODM4NDA0MmU1YTI5
NTZhLi45NzE5OWUxODZkZTcyZDc3Mjc5NzM1YzlkM2M5OTQwYzg1YzQ4YWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMjg5LDE1ICsyODksMTUgQEAgSGVhcDo6SGVhcChW
TSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9tYXhFZGVuU2l6ZShtX21pbkJ5dGVz
UGVyQ3ljbGUpCiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAs
IG1fb2JqZWN0U3BhY2UodGhpcykKLSAgICAsIG1fbWFjaGluZVRocmVhZHMoc3RkOjptYWtlX3Vu
aXF1ZTxNYWNoaW5lVGhyZWFkcz4oKSkKLSAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCi0gICAgLCBtX211dGF0b3JT
bG90VmlzaXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKLSAg
ICAsIG1fbXV0YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQotICAgICwgbV9yYWNlTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+
KCkpCi0gICAgLCBtX2NvbnN0cmFpbnRTZXQoc3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3Ry
YWludFNldD4oKnRoaXMpKQorICAgICwgbV9tYWNoaW5lVGhyZWFkcyhtYWtlVW5pcXVlPE1hY2hp
bmVUaHJlYWRzPigpKQorICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihtYWtlVW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgIkMiKSkKKyAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKG1ha2VV
bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQorICAgICwgbV9tdXRhdG9yTWFya1N0YWNr
KG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3JhY2VNYXJrU3RhY2sobWFr
ZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fY29uc3RyYWludFNldChtYWtlVW5p
cXVlPE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykpCiAgICAgLCBtX2hhbmRsZVNldCh2bSkK
LSAgICAsIG1fY29kZUJsb2NrcyhzdGQ6Om1ha2VfdW5pcXVlPENvZGVCbG9ja1NldD4oKSkKLSAg
ICAsIG1faml0U3R1YlJvdXRpbmVzKHN0ZDo6bWFrZV91bmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+
KCkpCisgICAgLCBtX2NvZGVCbG9ja3MobWFrZVVuaXF1ZTxDb2RlQmxvY2tTZXQ+KCkpCisgICAg
LCBtX2ppdFN0dWJSb3V0aW5lcyhtYWtlVW5pcXVlPEpJVFN0dWJSb3V0aW5lU2V0PigpKQogICAg
ICwgbV92bSh2bSkKICAgICAvLyBXZSBzZWVkIHdpdGggMTBtcyBzbyB0aGF0IEdDQWN0aXZpdHlD
YWxsYmFjazo6ZGlkQWxsb2NhdGUgZG9lc24ndCBjb250aW51b3VzbHkgCiAgICAgLy8gc2NoZWR1
bGUgdGhlIHRpbWVyIGlmIHdlJ3ZlIG5ldmVyIGRvbmUgYSBjb2xsZWN0aW9uLgpAQCAtMzA1LDgg
KzMwNSw4IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
ZWRlbkFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVFZGVuVGlt
ZXIodGhpcykpCiAgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNyZW1lbnRhbFN3ZWVw
ZXIodGhpcykpKQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9wdFJlZigqbmV3IFN0
b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCi0gICAgLCBtX3NoYXJlZENvbGxlY3Rvck1hcmtTdGFj
ayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQotICAgICwgbV9zaGFyZWRNdXRh
dG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBt
X3NoYXJlZENvbGxlY3Rvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQor
ICAgICwgbV9zaGFyZWRNdXRhdG9yTWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+
KCkpCiAgICAgLCBtX2hlbHBlckNsaWVudCgmaGVhcEhlbHBlclBvb2woKSkKICAgICAsIG1fdGhy
ZWFkTG9jayhCb3g8TG9jaz46OmNyZWF0ZSgpKQogICAgICwgbV90aHJlYWRDb25kaXRpb24oQXV0
b21hdGljVGhyZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkKQEAgLTMxNCw3ICszMTQsNyBAQCBIZWFw
OjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgbV93b3JsZFN0YXRlLnN0b3Jl
KDApOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbnVtYmVyT2ZQYXJhbGxlbFRocmVhZHMg
PSBoZWFwSGVscGVyUG9vbCgpLm51bWJlck9mVGhyZWFkcygpOyBpIDwgbnVtYmVyT2ZQYXJhbGxl
bFRocmVhZHM7ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZp
c2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQ
IiwgaSArIDEpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNpdG9y
ID0gbWFrZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRvQ1N0cmluZygiUCIsIGkgKyAxKSk7
CiAgICAgICAgIGlmIChPcHRpb25zOjpvcHRpbWl6ZVBhcmFsbGVsU2xvdFZpc2l0b3JzRm9yU3Rv
cHBlZE11dGF0b3IoKSkKICAgICAgICAgICAgIHZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11
dGF0b3IoKTsKICAgICAgICAgbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy5hcHBlbmQo
dmlzaXRvci5nZXQoKSk7CkBAIC0zMjMsMTcgKzMyMywxNyBAQCBIZWFwOjpIZWFwKFZNKiB2bSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRH
QygpKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VTdG9jaGFzdGljTXV0YXRvclNjaGVkdWxl
cigpKQotICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b2NoYXN0
aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX3NjaGVk
dWxlciA9IG1ha2VVbmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0
aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1f
c2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2Ugc2ltdWxhdGUgdHVybmluZyBvZmYgY29uY3Vy
cmVudCBHQyBieSBtYWtpbmcgdGhlIHNjaGVkdWxlciBzYXkgdGhhdCB0aGUgd29ybGQKICAgICAg
ICAgLy8gc2hvdWxkIGFsd2F5cyBiZSBzdG9wcGVkIHdoZW4gdGhlIGNvbGxlY3RvciBpcyBydW5u
aW5nLgotICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNT
dG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyPigpOworICAgICAgICBtX3NjaGVkdWxlciA9IG1h
a2VVbmlxdWU8U3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyPigpOwogICAg
IH0KICAgICAKICAgICBpZiAoT3B0aW9uczo6dmVyaWZ5SGVhcCgpKQotICAgICAgICBtX3Zlcmlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJl
ck9mR0NDeWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbigpKTsKKyAgICAgICAgbV92ZXJpZmll
ciA9IG1ha2VVbmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRpb25zOjpudW1iZXJPZkdDQ3lj
bGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24oKSk7CiAgICAgCiAgICAgbV9jb2xsZWN0b3JTbG90
VmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogCkBAIC04OTksNyArODk5LDcg
QEAgc2l6ZV90IEhlYXA6OnByb3RlY3RlZE9iamVjdENvdW50KCkKIAogc3RkOjp1bmlxdWVfcHRy
PFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxU
eXBlQ291bnRTZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgZm9yRWFjaFByb3RlY3RlZENlbGwo
CiAgICAgICAgIFsmXSAoSlNDZWxsKiBjZWxsKSB7CiAgICAgICAgICAgICByZWNvcmRUeXBlKCp2
bSgpLCAqcmVzdWx0LCBjZWxsKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiBIZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIAogc3RkOjp1
bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6b2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxU
eXBlQ291bnRTZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0
ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgK
ICAgICAgICAgaXRlcmF0aW9uU2NvcGUsCkBAIC0yODU2LDcgKzI4NTYsNyBAQCB2b2lkIEhlYXA6
OmFkZENvcmVDb25zdHJhaW50cygpCiAgICAgICAgIH0sCiAgICAgICAgIENvbnN0cmFpbnRWb2xh
dGlsaXR5OjpTZWxkb21HcmV5ZWQpOwogICAgIAotICAgIG1fY29uc3RyYWludFNldC0+YWRkKHN0
ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+KCp0aGlzKSk7CisgICAg
bV9jb25zdHJhaW50U2V0LT5hZGQobWFrZVVuaXF1ZTxNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWlu
dD4oKnRoaXMpKTsKIH0KIAogdm9pZCBIZWFwOjphZGRNYXJraW5nQ29uc3RyYWludChzdGQ6OnVu
aXF1ZV9wdHI8TWFya2luZ0NvbnN0cmFpbnQ+IGNvbnN0cmFpbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCA1YjY5Y2Q1ZTM1ZjYyYjUwNjYzYTljYmRjNzM5
NGQxYmQ2N2FkMWQ4Li5lMWViNmM3ODMzZDQ4NTg3MWE5YzUzM2NmZDQ3MzFjNzVmOWIxMWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTIxNyw3ICsyMTcs
NyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZWNyZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRl
ZCgpCiBpbmxpbmUgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBIZWFwOjptYXJrTGlz
dFNldCgpCiB7CiAgICAgaWYgKCFtX21hcmtMaXN0U2V0KQotICAgICAgICBtX21hcmtMaXN0U2V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7Cisg
ICAgICAgIG1fbWFya0xpc3RTZXQgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRC
dWZmZXIqPj4oKTsKICAgICByZXR1cm4gKm1fbWFya0xpc3RTZXQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggNWI5
YWM4OWRhYmYwNGEwNjE0ZGMxMGZiYmFmMTZjMGY0YTQ5OWY3ZS4uMmQyYmM4ZmI5YjI3ZmU5Zjli
MWI1YmU1NGNiNzUxZjgzZTBkM2QwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBIZWFw
U25hcHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KCkKIAogICAgIFByZXZlbnRDb2xsZWN0aW9u
U2NvcGUgcHJldmVudENvbGxlY3Rpb25TY29wZShtX3Byb2ZpbGVyLnZtKCkuaGVhcCk7CiAKLSAg
ICBtX3NuYXBzaG90ID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIu
bW9zdFJlY2VudFNuYXBzaG90KCkpOworICAgIG1fc25hcHNob3QgPSBtYWtlVW5pcXVlPEhlYXBT
bmFwc2hvdD4obV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNob3QoKSk7CiAgICAgewogICAgICAg
ICBtX3Byb2ZpbGVyLnNldEFjdGl2ZVNuYXBzaG90QnVpbGRlcih0aGlzKTsKICAgICAgICAgbV9w
cm9maWxlci52bSgpLmhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAppbmRleCBiOGU0MzAx
OTFlNmIxZGMyOWFhNWMwZjEwY2RkNmU5YmIxOThmZGE5Li43YzJlZDI0MDJmZDczMDFmYzA5OWE4
ZGZiNWQzYzMzNmFlYWQxMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0LmNwcApAQCAtODcsNyArODcsNyBAQCBORVZFUl9JTkxJTkUgQml0bWFwPE1hcmtlZEJsb2Nr
OjphdG9tc1BlckJsb2NrPiogSXNvQ2VsbFNldDo6YWRkU2xvdyhzaXplX3QgYmxvYwogICAgIGF1
dG8mIGJpdHNQdHJSZWYgPSBtX2JpdHNbYmxvY2tJbmRleF07CiAgICAgYXV0byogYml0cyA9IGJp
dHNQdHJSZWYuZ2V0KCk7CiAgICAgaWYgKCFiaXRzKSB7Ci0gICAgICAgIGJpdHNQdHJSZWYgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4+KCk7Cisg
ICAgICAgIGJpdHNQdHJSZWYgPSBtYWtlVW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQ
ZXJCbG9jaz4+KCk7CiAgICAgICAgIGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgICAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgICAgICBtX2Jsb2Nrc1dpdGhCaXRzW2Jsb2NrSW5k
ZXhdID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1
YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcApp
bmRleCBkNTEwMDBlYmE4N2YzMWRlNDgxYmVkMDhhNWYyZmVkOGE2MzlmZjk5Li5jZDNlN2U1NjE1
NDU2NmRjZjhjMTUxNjNhMTViNzJmMjc2OGYyOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIElzb1N1YnNwYWNlOjpJc29T
dWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxU
eXBlLCBzCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fZGlyZWN0b3J5KCZoZWFwLCBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKICAgICAs
IG1fbG9jYWxBbGxvY2F0b3IoJm1fZGlyZWN0b3J5KQotICAgICwgbV9pc29BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkK
KyAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihtYWtlVW5pcXVlPElzb0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3I+KCkpCiB7CiAgICAgaW5pdGlhbGl6ZShoZWFwQ2VsbFR5cGUsIG1faXNv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCBiM2FiZDJjNTIyNGZj
ZTNlNWNlMTJjNGYxNjNlZDQ4MjNkYWU2OThlLi4xNzgwYzA4YTQ3MGYyNzYyMzE2MzdlZjY4MTE3
YzlhNGUzMmMxZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
aW5nQ29uc3RyYWludFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTZXQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTWFya2luZ0NvbnN0
cmFpbnRTZXQ6OmRpZFN0YXJ0TWFya2luZygpCiAKIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6
OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZv
aWQoU2xvdFZpc2l0b3ImKT4gZnVuY3Rpb24sIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxp
dHksIENvbnN0cmFpbnRDb25jdXJyZW5jeSBjb25jdXJyZW5jeSwgQ29uc3RyYWludFBhcmFsbGVs
aXNtIHBhcmFsbGVsaXNtKQogewotICAgIGFkZChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtp
bmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdURk1vdmUobmFtZSksIFdU
Rk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20pKTsK
KyAgICBhZGQobWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJy
ZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0
eSwgY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtKSk7CiB9CiAKIHZvaWQgTWFya2luZ0NvbnN0cmFp
bnRTZXQ6OmFkZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4MmJlM2JiYjQ0
Y2I2YzU3NzZiOGVjZjdmYTBjOTQwZDVkNWE1ODI1Li41M2E5MWEyM2MxZDg5MjkxOGVlNDI5NDFh
NjVmNTI3ODY3ZDQzMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5
cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzCiAKICAgICBTdHJpbmcgbWVzc2FnZTsK
ICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKLSAgICBt
X2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhl
YykpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6Y291bnQoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYgdGl0bGUpCiAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUaXRsZSA9PSB0aXRsZSkg
ewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5k
IGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRs
ZS5pc0VtcHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0
cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAg
ICAgICAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgICAg
ICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2Zp
bGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJiB0aXRsCiAKICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBm
cm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNF
bXB0eSgpID8gIk5vIHByb2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIs
IHRpdGxlLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCB3YXJuaW5nKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykp
OwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c3RhcnRDb25zb2xlUHJv
ZmlsZSgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGll
bnQ6OnNjcmVlbnNob3QoRXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp3YXJuVW5pbXBsZW1lbnRlZChjb25zdCBTdHJp
bmcmIG1ldGhvZCkKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ldGhvZCArICIgaXMgY3VycmVu
dGx5IGlnbm9yZWQgaW4gSmF2YVNjcmlwdCBjb250ZXh0IGluc3BlY3Rpb24uIjsKLSAgICBtX2Nv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3Nh
Z2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYzhkYTUyZWZkMTNjNDkxY2NhZTYzOTVlMDc0YzQ2
NDRlNzBjYzBhNy4uYmRiZDMxZDYzMTJiMmMwNTZkN2M0NzgxNWRjNjE1ZDEyMjZkOTI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjMsNyArNjMsNyBA
QCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKLSAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMs
IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0
Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIoZ2xvYmFs
T2JqZWN0KQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkp
CkBAIC03MSwxMSArNzEsMTEgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoKIHsKICAgICBhdXRv
IGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4dCk7CisgICAgYXV0
byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4
dCk7CiAgICAgbV9jb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xl
QWdlbnQpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50PihtX2NvbnNvbGVBZ2VudCk7CiAKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRj
aC0+c3RhcnQoKTsKIH0KQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6cmVwb3J0QVBJRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhj
ZQogICAgICAgICAgICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBTdHJpbmcoKSwgMCwgMCk7CiAgICAgfQogCi0gICAgbV9jb25zb2xlQWdlbnQtPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9y
TWVzc2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
V1RGTW92ZShjYWxsU3RhY2spKSk7CiB9CiAKIENvbnNvbGVDbGllbnQqIEpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29uc29sZUNsaWVudCgpIGNvbnN0CkBAIC0yODAsNyArMjgw
LDcgQEAgSW5zcGVjdG9yQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5zdXJlSW5zcGVjdG9yQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkgewog
ICAgICAgICBhdXRvIGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGlu
c3BlY3RvckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oY29udGV4dCk7
CisgICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckFnZW50
Pihjb250ZXh0KTsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Lmdl
dCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwog
ICAgIH0KQEAgLTI5MSw3ICsyOTEsNyBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50JiBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQoKQogewogICAg
IGlmICghbV9kZWJ1Z2dlckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGpzQWdlbnRD
b250ZXh0KCk7Ci0gICAgICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7Cisg
ICAgICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7CiAgICAgICAgIG1fZGVidWdnZXJB
Z2VudCA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fY29uc29sZUNsaWVudC0+c2V0
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChtX2RlYnVnZ2VyQWdlbnQpOwogICAgICAgICBtX2FnZW50
cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CkBAIC0zMjcsMjAgKzMyNywyMCBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygp
CiAKICAgICBlbnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNvbnRleHQpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4o
Y29udGV4dCkpOwogCiAgICAgZW5zdXJlRGVidWdnZXJBZ2VudCgpOwogCi0gICAgYXV0byBzY3Jp
cHRQcm9maWxlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBt
YWtlVW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRleHQpOwogICAgIG1f
Y29uc29sZUNsaWVudC0+c2V0SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChzY3JpcHRQcm9m
aWxlckFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShzY3JpcHRQ
cm9maWxlckFnZW50UHRyKSk7CiAKLSAgICBhdXRvIGhlYXBBZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9ySGVhcEFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGhlYXBBZ2VudCA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9ySGVhcEFnZW50Pihjb250ZXh0KTsKICAgICBpZiAobV9jb25zb2xl
QWdlbnQpCiAgICAgICAgIG1fY29uc29sZUFnZW50LT5zZXRJbnNwZWN0b3JIZWFwQWdlbnQoaGVh
cEFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShoZWFwQWdlbnQpKTsK
IAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0QXVk
aXRBZ2VudD4oY29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEpTR2xv
YmFsT2JqZWN0QXVkaXRBZ2VudD4oY29udGV4dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCBjMGI1YzlhYWQxOGMwOGNlZGRjMzY5NjZiZjA0
Njg1MTQxNzYyNjQzLi40MTdlNzc1ZmI4MDI0OWMwNDAzMTM3YTgyNzgyMTM3MzI3ZDMzMmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQWdlbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkK
ICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSW5zcGVjdG9yIl9zKQogICAgICwgbV9lbnZpcm9u
bWVudChjb250ZXh0LmVudmlyb25tZW50KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRl
eHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAKaW5kZXggN2VkYmM4MDY2MGYzNmQ2YTgxYWE5MWZiOGZhM2ZkZGRlZGFlNmYyNi4u
NWQyNGM2OWU2YmY0NWQ3MmZiMGJkYTUzYjRjNDU3NTk4NjEzY2JjYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZXhw
aXJlQ29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwOwogSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJDb25zb2xlIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29u
dGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDb25zb2xl
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0YXJ0VGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmUKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/
CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwg
IlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjpt
YWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5n
LCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgfQogfQog
CkBAIC0xNTksMTQgKzE1OSwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6bG9nVGlt
aW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLAogICAgIGlmIChp
dCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8g
dGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0g
bWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAg
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgYWRk
TWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25kcyBl
bGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lk
dGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBhZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3Nh
Z2UsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTg0LDE0ICsxODQsMTQgQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwKICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhN
RTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAg
ICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2Vz
IG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3Rh
Y2spKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZh
bHVlOwogICAgIFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRU
aW1lOwogICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsK
LSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VM
ZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAKICAgICBtX3RpbWVzLnJlbW92ZShpdCk7CiB9CkBA
IC0yMjQsNyArMjI0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIC8vIEZJWE1FOiBXZWIg
SW5zcGVjdG9yIHNob3VsZCBoYXZlIGEgYmV0dGVyIFVJIGZvciBjb3VudGVycywgYnV0IGZvciBu
b3cgd2UganVzdCBsb2cgYW4gdXBkYXRlZCBjb3VudGVyIHZhbHVlLgogCiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
LSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RGVidWcsIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywg
MSkpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RGVidWcsIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywg
MSkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0yMzYsNyArMjM2LDcgQEAg
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwKICAgICBpZiAoaXQgPT0gbV9jb3VudHMuZW5kKCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2Fs
aXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJDb3VudGVyIFwi
IiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywg
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fy
bmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IGU1ZjI0ODJhM2NhYTA4YWE4MTY0NWZhOGM3OWM1MjliYTQzODBkMGEuLjI1ZjFkM2U3MjgxYzZi
MGZiODMzMGZmMTM3ODczNjQzZWJjNjBlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVh
a3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvCiAKIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEZWJ1Z2dlciJfcykKLSAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKERlYnVnZ2VyQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1f
c2NyaXB0RGVidWdTZXJ2ZXIoY29udGV4dC5lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigp
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCBiNTM1ZmY2MTkyYWFjZWZjNzli
NGY2Y2Q5M2RmMTIwMWEzNzE0OGFjLi41ODJjMzVkMzY3ZGZlMWU0ZjdkYzRlOWE1Njg0ZGNhMmE0
ZTNiNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiBJbnNwZWN0b3JIZWFwQWdlbnQ6Okluc3BlY3RvckhlYXBBZ2Vu
dChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkhlYXAi
X3MpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0
TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SGVh
cEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihIZWFwQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAg
ICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggNTZmYzFiNzk4ZGEwZWVlZWEwMjMz
MWVkNTI1NGE5NTAyMTAwNTg3NC4uY2JhZDgxZDY5OTQ0MGE3MzNiMGFmMDQxNjk0YTg2Y2E5ZTZl
OGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQ6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJTY3JpcHRQcm9maWxlciJfcykKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UHJvZmlsZXJG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFNj
cmlwdFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKICAgICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcAppbmRleCAzYWNhNDEwNTEwZmU1MDBmMDVi
ZmJhYWM0NjdmZmRhY2NiMjFjNTI0Li45MzUwNjhjN2FlMTE5NzEwNTQ0YzFmNzY3OTgyMmRmYjY2
ZTU2Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6SW5zcGVjdG9y
VGFyZ2V0QWdlbnQoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0
Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdl
dCJfcykKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFyZ2V0
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGUzMjlhM2I0M2NkNjA5NjVkOWY3Nzg1YTQ4
MjIwMTFhYjM2NmZhNTMuLjliM2YzNzlkNWU1YTQ5MGRiZTM3NWM3MmFjOTlmYTcyMGI5YWNjZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtNTgsNyAr
NTgsNyBAQCBJbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNj
cmlwdENhbGxTdGFjaygmc3RhdGUpLCAwKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAppbmRleCAxNDVkMDUxNmI4
ZTM5Njg4NzhkOTJjYjU5NGFhNTk5YmFmYTM5ZDMyLi4zYjdjM2UyMWQzMWMxYzJmNWI2ZDFiYTBj
MTZmNDg4ODNlNmNmMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
Y3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSlNBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkKLSAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVudGltZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1f
Z2xvYmFsT2JqZWN0KGNvbnRleHQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXgg
NzEwMTY2OGE5N2M4NzQ0ODEyZjQ2NTZmMTZlMGI3ZGQ1OTRmMWE2MC4uY2M5NjQwMDU2NzlkYmZj
ZDRmZTAyOTA2YmM5M2MyM2IyYzgyZWNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC0xNDQsMTEgKzE0NCwxMSBAQCBP
cHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVh
dGVDbGllbnQoUGxhdGZvcm1Tb2NrZQogCiAgICAgU29ja2V0OjpzZXR1cChzb2NrZXQpOwogCi0g
ICAgYXV0byBjb25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+
KCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+
KCk7CiAKICAgICBjb25uZWN0aW9uLT5wb2xsID0gU29ja2V0OjpwcmVwYXJlUG9sbGluZyhzb2Nr
ZXQpOwogICAgIGNvbm5lY3Rpb24tPnNvY2tldCA9IHNvY2tldDsKLSAgICBjb25uZWN0aW9uLT5w
YXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZl
clNpemUpOworICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IG1ha2VVbmlxdWU8TWVzc2FnZVBhcnNl
cj4oaWQsIFNvY2tldDo6QnVmZmVyU2l6ZSk7CiAgICAgY29ubmVjdGlvbi0+cGFyc2VyLT5zZXRE
aWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcihbdGhpc10oQ29ubmVjdGlvbklEIGlkLCBWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKSB7CiAgICAgICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKICAgICAgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoaWQsIFdU
Rk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQuaAppbmRleCA3MGYyZDdhNDgxMzQ3MGY4MTM3MzJiM2I5NzdiNWI3M2E0MTk2
MGI1Li4zMjA0MDBmZDViM2NkYjJjNGIxNWRiZGM5MzA0NmJiZmQwMGNhZGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludD4gY3JlYXRlKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGll
bnQqIGluc3BlY3RvckNsaWVudCwgY29uc3QgY2hhciogbmFtZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PihpbnNw
ZWN0b3JDbGllbnQsIG5hbWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKICAgICB9CiAKICAg
ICBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludChSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9u
Q2xpZW50KiwgY29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5l
cmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IDUwYzhmNmZkZTdjZTY4OThiMDgyODE0OTk3YmU1N2Q3
MzAxOWIyNTMuLjEwMTc4OWUxZGY3NTQ4MWY2MWU4YzAwZjIxMWFjYTc0OWI1MDU4ZWEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29i
amNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTEz
Niw4ICsxMzYsOCBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzOgogICAgIFtfJHt2YXJp
YWJsZU5hbWVQcmVmaXh9SGFuZGxlciByZWxlYXNlXTsKICAgICBfJHt2YXJpYWJsZU5hbWVQcmVm
aXh9SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7
ZG9tYWluTmFtZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVj
dG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0
ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdU
Rk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13
aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxh
dGZvcm0uanNvbi1yZXN1bHQKaW5kZXggM2U5OTE0NzFkMzI0YTM1NTE2OTI4ZTQzZTk0MTA4YjQ0
ODczMTIwOC4uYjA0YTg1MGRmMTE1MmQ2ZmRhNTk2MmRmMzdjMmU0OWUxZWJkOTVlYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9l
eHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC03NzEsOCArNzcx
LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmtIYW5kbGVyIHJl
bGVhc2VdOwogICAgIF9uZXR3b3JrSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5l
dHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7Cisg
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0
d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9z
LCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250
cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRl
eCBhNzE0ZmIxMzE4MzI5M2QxODMyZmM1ODFlNmM1MzM3ODY4MDJkNTcyLi5jMGUxNzMzN2ZkNGE3
OTg4MzBlODVkMjllODVkOGVkMzAyMGNhNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTE4OSw4ICsxMTg5LDggQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsKICAg
ICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2Ui
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0
byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1h
a2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJv
bGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1
cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA1M2JkNTUzYjdiYTc0ZGRkMjllMjU1MWNj
MGI4NGZhNDMwNzE0Y2FlLi5hZWQwN2I3NWU4Yjg4OGRkNTkzMzkwYWZhMjFkMmM4OTBkZGZjNTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1j
YWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0xMDY4LDggKzEwNjgsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2Vd
OwogICAgIF9kYXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRh
YmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNl
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKaW5kZXggNjc4YzZhYWE4NWFjYTM4
NDI0OGI5OTI5MDM0Y2NmMDk0MTE4ZGVlNy4uMWFkY2JkM2ZkMmFjYjljYTE0NjFjMzA4ZTQ1YzQ5
MmVjM2UwMzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CkBAIC03ODIs
OCArNzgyLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkFIYW5k
bGVyIHJlbGVhc2VdOwogICAgIF9kb21haW5BSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAK
LSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNw
ZWN0b3JEb21haW5BQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERv
bWFpbkFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVy
Pj4oIkRvbWFpbkEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVj
dG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5BQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21h
aW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAg
IF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsK
IH0KIApAQCAtODAwLDggKzgwMCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAg
W19kb21haW5CSGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWluQkhhbmRsZXIgPSBbaGFuZGxl
ciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAg
ICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRj
aGFibGVBZ2VudDxEb21haW5CQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNr
ZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5CIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlx
dWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAg
YXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5CQmFja2VuZERpc3Bh
dGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3Bh
dGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVy
bmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5n
LWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IGY2YzVlZGNjYjkyODVhZjQ4YzZkZWI5ODQy
MmE3MjM2Yjg3MDJkNGUuLmEzZTI3ZGYzOGNlYWZiYjNjNDUxZTEzYjYxMTllMmU1NGMzZDJhOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdApAQCAtMTAzOSw4ICsxMDM5LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKICAgICBbX25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0
ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwg
V1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRj
aGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFB
Z2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKQEAgLTEwNTcsOCArMTA1Nyw4IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrM0hhbmRsZXIgcmVsZWFz
ZV07CiAgICAgX25ldHdvcmszSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRv
IGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0Jh
Y2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oIk5l
dHdvcmszIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwor
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29y
azMiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAg
X2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Vu
dW0tdmFsdWVzLmpzb24tcmVzdWx0CmluZGV4IDRkOTRhZDk0YWQ4NTFmNTg1ZjQ4ZTkxMTVlM2Jl
Y2NmOTdiN2FkNWYuLmJkNmI5ODE1Zjc2MDFhZTFkMGZlZGMyNmM0NTQzNWJhNDNmNjFlNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0t
dmFsdWVzLmpzb24tcmVzdWx0CkBAIC04MTUsOCArODE1LDggQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKICAgICBbX2NvbW1hbmREb21haW5IYW5kbGVyIHJlbGVhc2VdOwogICAgIF9jb21t
YW5kRG9tYWluSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
Pj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpD
SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFn
ZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDZmNmJm
MzYyNTdhZTllZWYwNWYxYmYyNjczZTYxMTNmM2JjZTg5ODAuLjVjYmNjYmZlZDUzYzRiZjM0MTM2
Zjc2OGVkYTU5ZmZiNDkwNzBiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMt
d2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21h
aW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTc5OCw4ICs3OTgsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazFIYW5kbGVyIHJlbGVhc2Vd
OwogICAgIF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsx
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhw
ZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggM2U5
OTE0NzFkMzI0YTM1NTE2OTI4ZTQzZTk0MTA4YjQ0ODczMTIwOC4uYjA0YTg1MGRmMTE1MmQ2ZmRh
NTk2MmRmMzdjMmU0OWUxZWJkOTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1h
Yy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRm
b3JtLmpzb24tcmVzdWx0CkBAIC03NzEsOCArNzcxLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKICAgICBbX25ldHdvcmtIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrSGFuZGxl
ciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRl
TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RG
TW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVy
ID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0
ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdU
Rk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmlu
ZGV4IDA1ZjcwZjFhZWFmNGM0ZDlmNTJjMTA2YWI2NmRiOWVjZDJlYWI4YmUuLjk5ZThhNDdmZDVl
MGMyMDdlNzI3Yjg2ZmUyMzYxOTA1N2I2NTAyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJ
VENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICB9CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkgfHwgKG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAm
JiBPcHRpb25zOjpkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJvZmlsZXIoKSkpKQotICAgICAgICBt
X2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGlzYXNzZW1ibGVyPihtX2NvZGVC
bG9jayk7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxKSVREaXNhc3NlbWJs
ZXI+KG1fY29kZUJsb2NrKTsKICAgICBpZiAoVU5MSUtFTFkobV92bS0+bV9wZXJCeXRlY29kZVBy
b2ZpbGVyKSkgewogICAgICAgICBtX2NvbXBpbGF0aW9uID0gYWRvcHRSZWYoCiAgICAgICAgICAg
ICBuZXcgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKApAQCAtOTAxLDcgKzkwMSw3IEBAIENvbXBpbGF0
aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENU
b0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92
ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKSk7CisgICAgICAgIG1f
Y29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2lu
TWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsK
ICAgICAKICAgICBDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJlc3VsdCA9IEZJTkFMSVpFX0NPREUo
CiAgICAgICAgIHBhdGNoQnVmZmVyLCBKU0VudHJ5UHRyVGFnLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDE2YmY3MGQ4MDE3NDQyMzA1MDJhMmQ4YjE5N2NkNDAx
YzgwMjRmMzguLjViZGY4MzA0NjUwNDM5OTRlMTFiYWZmZWQ1MmJiNzg1YzFiYTBhNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBKSVRUaHVua3M6OkpJVFRodW5rcygpCi0gICAgOiBtX2hvc3RGdW5j
dGlvblN0dWJNYXAoc3RkOjptYWtlX3VuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQorICAg
IDogbV9ob3N0RnVuY3Rpb25TdHViTWFwKG1ha2VVbmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4o
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZTM4OGZi
MGU2MjcwOGIzNGVjYjk3MWU5NDZiNDZiMTkzYzRjYWUzYi4uOGY5YTg2NGU0ZmU4NjI2YTFmZWZj
MGMzMDdjOWU0NjU2NjJmNWE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC0xMDkyLDcgKzEwOTIsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENhbGxGcmFtZVNodWZmbGVyPiBmcmFtZVNodWZmbGVyOwogICAgIGlmIChj
YWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVChjYWxsTGlu
a0luZm8uaXNUYWlsQ2FsbCgpKTsKLSAgICAgICAgZnJhbWVTaHVmZmxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZXI+KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVm
ZmxlRGF0YSgpKTsKKyAgICAgICAgZnJhbWVTaHVmZmxlciA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1l
U2h1ZmZsZXI+KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAvLyBXZSB3b3VsZCBoYXZlIGFscmVhZHkgY2hl
Y2tlZCB0aGF0IHRoZSBjYWxsZWUgaXMgYSBjZWxsLCBhbmQgd2UgY2FuCiAgICAgICAgIC8vIHVz
ZSB0aGUgYWRkaXRpb25hbCByZWdpc3RlciB0aGlzIGJ1eXMgdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IDQxMjJmYmVkMjJlZTE1NTIzZDE0ZTRhODc5YWJhMWFiODQ3ODZhMDcuLjcwMmQzNjk0
ZDlmNzY4ODQyMGYwY2RhYmQxMGU4ODhhNzMzZjI4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC0yOTY5LDcgKzI5NjksNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25z
LCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAgICBKU0xvY2tIb2xkZXIg
bG9ja2VyKHZtKTsKIAogICAgICAgICBpZiAob3B0aW9ucy5tX3Byb2ZpbGUgJiYgIXZtLm1fcGVy
Qnl0ZWNvZGVQcm9maWxlcikKLSAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CisgICAgICAgICAgICB2
bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBtYWtlVW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4o
dm0pOwogCiAgICAgICAgIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBH
bG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBvcHRpb25zLm1fYXJn
dW1lbnRzKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVk
KG9wdGlvbnMubV9lbmFibGVSZW1vdGVEZWJ1Z2dpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCmluZGV4IGY4ZGJlNzE5NmYxMTE3MTZkMGE1OGY3ZjU3ZTNmOGY2N2I3
YTJhY2YuLmExNjRmZDkwM2YzNmU5NDIwYTczNjRlZjQyN2M2YzJmZmUzMjJjZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlCiAgICAgLCBtX2ltbWVkaWF0ZVBhcmVudEFsbG93c0Z1bmN0aW9u
RGVjbGFyYXRpb25JblN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fZGVidWdnZXJQYXJzZURhdGEo
ZGVidWdnZXJQYXJzZURhdGEpCiB7Ci0gICAgbV9sZXhlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGV4
ZXJUeXBlPih2bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOworICAgIG1fbGV4ZXIgPSBtYWtl
VW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKICAgICBtX2xl
eGVyLT5zZXRDb2RlKHNvdXJjZSwgJm1fcGFyc2VyQXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2Nh
dGlvbi5saW5lID0gc291cmNlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCk7CiAgICAgbV90b2tl
bi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA2OWFhMGJjMTkwYWY2NzgzZDg5MjhjMzU5
YWEzYjEwYmIxZmJkODczLi4wYTVlZGU0Yjg0MjVjZmQxYjMxN2M3NmM1MWVhNzM3ODE3ODBiNTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIwNCw3ICsyMDQsNyBA
QCBzdHJ1Y3QgU2NvcGUgewogICAgIHZvaWQgcHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxh
YmVsLCBib29sIGlzTG9vcCkKICAgICB7CiAgICAgICAgIGlmICghbV9sYWJlbHMpCi0gICAgICAg
ICAgICBtX2xhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8TGFiZWxTdGFjaz4oKTsKKyAgICAgICAg
ICAgIG1fbGFiZWxzID0gbWFrZVVuaXF1ZTxMYWJlbFN0YWNrPigpOwogICAgICAgICBtX2xhYmVs
cy0+YXBwZW5kKFNjb3BlTGFiZWxJbmZvIHsgbGFiZWwtPmltcGwoKSwgaXNMb29wIH0pOwogICAg
IH0KIApAQCAtMTk0MSw3ICsxOTQxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICAg
ICAgZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudExpbmVTdGFy
dE9mZnNldCgpOwogICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1
cnJlbnRPZmZzZXQoKTsKICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gZW5kTG9jYXRpb24u
c3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0gICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwKKyAgICAgICAg
cmVzdWx0ID0gbWFrZVVuaXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuZExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhcnRDb2x1bW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckFyZW5hLmgKaW5kZXggZGYxN2JlNTM2NjNlN2NiN2I3MGM0ODc3MGY5YTA1MjljZjMz
YTdlZS4uNDEwMDA2ZDkyNzUxY2U5NmI5MmNiOTYyNTYzNWVhN2NmNzhlYzRkOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtMTgwLDcgKzE4MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyQXJlbmEmIGlkZW50aWZpZXJBcmVu
YSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSAoIW1faWRlbnRpZmllckFy
ZW5hKSkKLSAgICAgICAgICAgICAgICBtX2lkZW50aWZpZXJBcmVuYSA9IHN0ZDo6bWFrZV91bmlx
dWU8SWRlbnRpZmllckFyZW5hPigpOworICAgICAgICAgICAgICAgIG1faWRlbnRpZmllckFyZW5h
ID0gbWFrZVVuaXF1ZTxJZGVudGlmaWVyQXJlbmE+KCk7CiAgICAgICAgICAgICByZXR1cm4gKm1f
aWRlbnRpZmllckFyZW5hOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAppbmRleCAwNTAzMmI1ZDEz
MTA4YzBlYjYyMGU5ZGFlODIwY2VmN2FjNzUzMThjLi4zNTcxMWI1ZmE2NDI2OWU2Nzc0YWI3MGUy
MWRkNTAyNTE2OWM4ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCkBAIC03OSw3ICs3OSw3IEBAIEV4ZWN1dGlv
bkNvdW50ZXIqIENvbXBpbGF0aW9uOjpleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0
YWNrJiBvcmlnaW4pCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4ZWN1dGlvbkNvdW50ZXI+JiBj
b3VudGVyID0gbV9jb3VudGVycy5hZGQob3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgaWYgKCFjb3VudGVyKQotICAgICAgICBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxF
eGVjdXRpb25Db3VudGVyPigpOworICAgICAgICBjb3VudGVyID0gbWFrZVVuaXF1ZTxFeGVjdXRp
b25Db3VudGVyPigpOwogCiAgICAgcmV0dXJuIGNvdW50ZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggNzBjNzE0NzMzMjQ0NDA4MDc4NzkzNDAx
OTg2NjczYzk3ZTFlYTgzZC4uYTY0ZGUzZmRkNjYyNTUxOGFjNWQxMjZjZWFjNzhiNmYyMTI1YTRm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTc0LDcgKzE3
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IGdldFN0YWNrVHJhY2Uo
RXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IHVzZUN1cnJlbnRGcmFtZSA/IDAgOiAxOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RhY2tGcmFt
ZT4+KCk7CiAgICAgdm0uaW50ZXJwcmV0ZXItPmdldFN0YWNrVHJhY2Uob2JqLCAqc3RhY2tUcmFj
ZSwgZnJhbWVzVG9Ta2lwLCBnbG9iYWxPYmplY3QtPnN0YWNrVHJhY2VMaW1pdCgpLnZhbHVlKCkp
OwogICAgIGlmICghc3RhY2tUcmFjZS0+aXNFbXB0eSgpKQogICAgICAgICBBU1NFUlRfVU5VU0VE
KGV4ZWMsIGV4ZWMgPT0gdm0udG9wQ2FsbEZyYW1lIHx8IGV4ZWMtPmlzR2xvYmFsRXhlYygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCmluZGV4IDQzOWUyMDliMGE1ZjhmYjgyOWI3OTE5NzU3NDg4YzQxNTYzNDI3M2YuLmVm
MmU4MzA4NzQxYjg4NTJlNTYyMzI2Zjk2MjU3YzlkMDI5MzVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9t
R2xvYmFsQ29kZSgKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOwot
ICAgIGF1dG8gcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgIGF1
dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJhcmVEYXRhLT5tX2xp
bmVDb3VudCA9IGxpbmVDb3VudCgpOwogICAgIHJhcmVEYXRhLT5tX2VuZENvbHVtbiA9IGVuZENv
bHVtbigpOwogICAgIHJhcmVEYXRhLT5tX3BhcmFtZXRlcnNTdGFydE9mZnNldCA9IHBhcmFtZXRl
cnNTdGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5oCmluZGV4IDQ2MjM2NDFjNTk4ZTNlYmI1ZmJhNmJjMDIzNzI2NGU1MDUy
ZmQxNzkuLjUyYjI4YjEzYzdlMmUyNWQyMWJiYmFiM2FkMzFkNWI2YmMwY2RlZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKQEAgLTE1
Niw3ICsxNTYsNyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhOjpBbGxvY2F0aW9uUHJvZmlsZUNs
ZWFyaW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaAogaW5saW5lIFdhdGNocG9pbnQq
IEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBv
aW50KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaGFzQWxsb2NhdGlvblByb2ZpbGVDbGVhcmlu
Z1dhdGNocG9pbnQoKSk7Ci0gICAgbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+
KHRoaXMpOworICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgPSBtYWtl
VW5pcXVlPEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0aGlzKTsKICAgICBy
ZXR1cm4gbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludC5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDFhNTdlZjNkY2ZlOTE5ZTcwYjM3ZmE3ZTM0ODU0YTEzZTkwNTNmYWUuLmNjODc3NjdmMTA4
YmNjNDgzYjMxNWYxMTJmYTljNTM0N2Y1MjAxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ3Nyw4ICs0NzcsOCBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2RlYnVnZ2VyID0gMDsKIAogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI+KCp0aGlzKTsKLSAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZT4oKnRoaXMpOworICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXI+KCp0aGlzKTsKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBtYWtlVW5pcXVlPEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZT4oKnRoaXMpOwogICAgIG1faW5zcGVjdG9yRGVidWdnYWJs
ZS0+aW5pdCgpOwogICAgIG1fY29uc29sZUNsaWVudCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+
Y29uc29sZUNsaWVudCgpOwogI2VuZGlmCkBAIC0xMTQ1LDU3ICsxMTQ1LDU3IEBAIGNhcGl0YWxO
YW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxh
ZyA/IGNhcGl0YWxOYW1lCiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KGFycmF5SXRlcmF0b3JQcm90b3R5
cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fYXJyYXlJdGVyYXRvclBy
b3RvdHlwZU5leHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fYXJyYXlJdGVyYXRvclBy
b3RvdHlwZU5leHQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlw
ZU5leHQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5
UHJvdG90eXBlKCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAg
ICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnQpOworICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnQpOwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBv
aW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJhdG9y
UHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX21hcEl0ZXJh
dG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21h
cEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21h
cEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAg
ICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRh
cHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBv
aW50KHNldEl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAg
ICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQp
OworICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQp
OwogICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRp
dGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3Zt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVT
eW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuZ2V0KCksIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
dHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5n
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAg
IHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFw
dGl2ZVdhdGNocG9pbnQobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
dHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nUHJvdG90
eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJp
bmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0K
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlO
YW1lcy0+c2V0KTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOworICAg
ICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0
V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3Nl
dFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwotICAgICAgICBtX3Nl
dFByb3RvdHlwZUFkZFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0QWRkV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBv
aW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
ICAgICB9CiAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAg
ICAgICAgIHRoaXMtPnN5bWJvbFByb3RvdHlwZSgpOwogCiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3Rv
dHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZyk7Ci0gICAgICAgIG1fbnVtYmVyUHJv
dG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbnVtYmVyUHJv
dG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9u
LCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBl
VG9TdHJpbmdXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgbV9udW1iZXJQcm90b1Rv
U3RyaW5nRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclBy
b3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAg
ICB9CkBAIC0xOTMyLDEwICsxOTMyLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3Rh
bGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FT
U0VSVCghbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50LmlzQmVpbmdXYXRjaGVkKCkpOwogICAgIG1f
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludC50b3VjaCh2bSwgIlNldCB1cCBhcnJheSBzcGVjaWVzIHdh
dGNocG9pbnQuIik7CiAKLSAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludCk7CisgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3Rvcldh
dGNocG9pbnQtPmluc3RhbGwodm0pOwogCi0gICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBt
X2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJh
eVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hw
b2ludC0+aW5zdGFsbCh2bSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDA0N2MxNjY1M2U3MWIxYTgwNmJkOWZjN2Q1NjY0M2E1
Zjk4OGYxMWUuLjg0NTM1Y2E1YzYwMGNlY2JkOGI0NzhmNjViNTNjZDA3ZTM2YTgzOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTIx
LDcgKzUyMSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIHsKICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFs
T2JqZWN0UmFyZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPEpTR2xv
YmFsT2JqZWN0UmFyZURhdGE+KCk7CiAgICAgfQogICAgICAgICAKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCAxYWYw
MDM2NTNjYjhjM2RlNjQzZjhjNDkxMjdhYmIzZTU1MTNkNWFkLi4zMjdmZWQwNmM2N2E1YmYxMTI1
MWY5ZjRkZWQ4MzllNzAzM2M4YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSlNSdW5Mb29w
VGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6c2V0UnVuTG9vcChNYW5hZ2VyKiBtYW5hZ2VyLCBD
RlJ1bkxvb3BSCiAjZWxzZQogSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVy
Vk1EYXRhKE1hbmFnZXImIG1hbmFnZXIpCiAgICAgOiBydW5Mb29wKCZSdW5Mb29wOjpjdXJyZW50
KCkpCi0gICAgLCB0aW1lcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+
PigqcnVuTG9vcCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRG
aXJlQ2FsbGJhY2spKQorICAgICwgdGltZXIobWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5h
Z2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVy
RGlkRmlyZUNhbGxiYWNrKSkKIHsKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIHRpbWVy
LT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkphdmFzY3JpcHRUaW1lcik7CkBA
IC0xNzIsNyArMTcyLDcgQEAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXImIEpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpzaGFyZWQoKQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdp
c3RlclZNKFZNJiB2bSkKIHsKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlclZN
RGF0YT4oKnRoaXMpOworICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UGVyVk1EYXRhPigqdGhp
cyk7CiAjaWYgVVNFKENGKQogICAgIGRhdGEtPnNldFJ1bkxvb3AodGhpcywgdm0ucnVuTG9vcCgp
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggNWYwNzhkMmE1MDlkMmI0NDIwMGY3YTRhZjM4ODEyNDZj
YjJkNThhNy4uNTI5MDIwZGYwZjFkYzJhMjg2ZjgwMGFiYWQ5ZDdlYjdkM2Y4ZWU5NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFi
bGU6OmdldERlbGV0ZWRPZmZzZXQoKQogaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVs
ZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2RlbGV0ZWRP
ZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8UHJvcGVydHlPZmZzZXQ+PigpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFrZVVu
aXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+PigpOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFw
cGVuZChvZmZzZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5VGFibGUuY3BwCmluZGV4IDU5ZWM0MWM0OWFlODJmNDdmNjk4NjgwNmRkNjE0Mzk0NGE0
MmI1ZDYuLmIxYmI2NzkxOTkyNjVhZmNiY2NjODM2NTZkOGQ1NmZjNWI0YTM1NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCBjb25zdCBQcm9w
ZXJ0eVRhYmxlJiBvdGhlcikKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rv
ci4KICAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3Ro
ZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykK
LSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CiB9CiAKIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25l
ZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQpAQCAtMTA3LDcg
KzEwNyw3IEBAIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25lZCBp
bml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFiCiAgICAgLy8gQ29weSB0aGUgbV9kZWxl
dGVkT2Zmc2V0cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxl
dGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVy
RGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAg
ICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4o
Km90aGVyRGVsZXRlZE9mZnNldHMpOwogfQogCiB2b2lkIFByb3BlcnR5VGFibGU6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5k
ZXggMDcxYjFmNjYzMTVjZTNhZThkY2ZlMTc1ZmY2MzY2ZjVjNjMyYWZmYy4uNzBlNTkzZDUzZWJk
ZDgxZDhjMDgxM2EyOTc3MGU5NDBjZTA0MTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZWdFeHA6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIAogICAgIG1fbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3Vi
cGF0dGVybnM7CiAgICAgaWYgKCFwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMuaXNFbXB0eSgp
IHx8ICFwYXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgIG1f
cmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICBtX3JhcmVEYXRhLT5t
X2NhcHR1cmVHcm91cE5hbWVzLnN3YXAocGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzKTsKICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LnN3YXAocGF0dGVybi5t
X25hbWVkR3JvdXBUb1BhcmVuSW5kZXgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgKaW5kZXggMzljZGQ5MTE2ZTAyN2UzZGI2MDQwZGJkOGZlNTI3MGQyZTk5NWQ4
ZC4uZThkYTg1MjZlN2M3ZTgxZmJlYTc1Yzg4OTg4MTYxYjlhZjg5MTcxMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBjbGFzcyBSZWdF
eHAgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBlbnN1
cmVSZWdFeHBKSVRDb2RlKCkKICAgICB7CiAgICAgICAgIGlmICghbV9yZWdFeHBKSVRDb2RlKQot
ICAgICAgICAgICAgbV9yZWdFeHBKSVRDb2RlID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyOjpZYXJy
Q29kZUJsb2NrPigpOworICAgICAgICAgICAgbV9yZWdFeHBKSVRDb2RlID0gbWFrZVVuaXF1ZTxZ
YXJyOjpZYXJyQ29kZUJsb2NrPigpOwogICAgICAgICByZXR1cm4gKm1fcmVnRXhwSklUQ29kZS5n
ZXQoKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggMjM3ZDdkZTY4OGRkMjA3NjUwMjAxMjE2Y2Qw
ZDU0NjgwYzQ5NmVhYS4uZWU2ZTE4Y2VmZGJlNzlmNGJjMmViMjE5N2ZmNTM5MTA0ZTFmNzk5OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJs
ZS5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCBhdXRvIFNjcmlwdEV4ZWN1dGFibGU6OmVuc3VyZVRl
bXBsYXRlT2JqZWN0TWFwSW1wbChzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplYwogewogICAg
IGlmIChkZXN0KQogICAgICAgICByZXR1cm4gKmRlc3Q7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRlbXBsYXRlT2JqZWN0TWFwPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OwogICAgIGRlc3QgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuICpkZXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMjkzYzQ2NDcyZTc0
ODk0MWNhOWNjMmFkYWMxNmEzZDJkYzVkZWVlYy4uMDFjZDJiZDU0N2ZlMDJiNTA0N2E2ZDQ1YjNj
OGFkNmZkNTJiZGI0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCkBAIC04NTYsNyArODU2LDcgQEAgV2F0Y2hwb2ludFNldCogU3RydWN0dXJlOjplbnN1
cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChWTSYgdm0sIFByb3BlcnQKICAgICBT
dHJ1Y3R1cmVSYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzLT5yYXJlRGF0YSgpOwogICAgIGlmICgh
cmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cykgewogICAgICAgICByYXJlRGF0
YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91
bmlxdWU8U3RydWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1hcD4oKTsKKyAgICAg
ICAgICAgIG1ha2VVbmlxdWU8U3RydWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1h
cD4oKTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICB9CiAgICAgYXV0byBy
ZXN1bHQgPSByYXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzLT5hZGQob2Zmc2V0
LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmNwcAppbmRleCA5OWE4ZDlmN2RhYWMyMTdlNGM4MWU3ZTcxMjZlOWMwMmIz
NzRlZDNmLi5kM2NmMTgzYjBmNmQ3YzQ4OTg4MDBhYjY4ZWU0OGNkMTI4ZjdmZTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9T
dHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXIKICAgICBBU1NFUlQo
Y29uZGl0aW9uU2V0LnN0cnVjdHVyZXNFbnN1cmVWYWxpZGl0eSgpKTsKICAgICBmb3IgKE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA6IGNvbmRpdGlvblNldCkgewogICAgICAgICBp
ZiAoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJl
c2VuY2UpIHsKLSAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFs
dWVXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOworICAg
ICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQg
PSBtYWtlVW5pcXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CiAgICAgICAgICAgICBtX29iamVjdFRv
U3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlV2F0Y2hwb2lu
dFNldC5hZGQoY29uZGl0aW9uLCB0aGlzKS0+aW5zdGFsbCh2bSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggMzkyZjIxN2MxNGVmYWViNTQ1
YmYwZDRmNzc5MGMxMTI3OTMyYmM4NS4uYTRhODcwZmMxZmNhZDM1YzQzOTVmMTA5YjIyYTk5YzQy
MGQ3NDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIGNvbnN0IFN5bWJvbFRhYmxlOjpMb2NhbFRvRW50cnlW
ZWMmIFN5bWJvbFRhYmxlOjpsb2NhbFRvRW50cnkoY29uc3QgQ29uY3VycmVudEpTCiAgICAgICAg
ICAgICAgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG9mZnNldC5zY29wZU9mZnNldCgpLm9mZnNl
dCgpICsgMSk7CiAgICAgICAgIH0KICAgICAKLSAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CisgICAgICAgIG1f
bG9jYWxUb0VudHJ5ID0gbWFrZVVuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIp
OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9tYXApIHsKICAgICAgICAgICAgIFZhck9m
ZnNldCBvZmZzZXQgPSBlbnRyeS52YWx1ZS52YXJPZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChv
ZmZzZXQuaXNTY29wZSgpKQpAQCAtMTU5LDcgKzE1OSw3IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xU
YWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogICAgICAgICByZXN1bHQtPm1fYXJndW1lbnRz
LnNldCh2bSwgcmVzdWx0LCBhcmd1bWVudHMpOwogICAgIAogICAgIGlmIChtX3JhcmVEYXRhKSB7
Ci0gICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFi
bGVSYXJlRGF0YT4oKTsKKyAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxT
eW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXRl
ciA9IG1fcmFyZURhdGEtPm1fdW5pcXVlSURNYXAuYmVnaW4oKTsKQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIFN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImKQogICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwor
ICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAg
ICBmb3IgKGF1dG8gaXRlciA9IG1fbWFwLmJlZ2luKCksIGVuZCA9IG1fbWFwLmVuZCgpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fdW5pcXVlSURNYXAuc2V0
KGl0ZXItPmtleSwgVHlwZVByb2ZpbGVyTmVlZHNVbmlxdWVJREdlbmVyYXRpb24pOwpAQCAtMjEw
LDcgKzIxMCw3IEBAIENvZGVCbG9jayogU3ltYm9sVGFibGU6OnJhcmVEYXRhQ29kZUJsb2NrKCkK
IHZvaWQgU3ltYm9sVGFibGU6OnNldFJhcmVEYXRhQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJs
b2NrKQogewogICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIEFTU0VSVCghbV9yYXJl
RGF0YS0+bV9jb2RlQmxvY2spOwogICAgIG1fcmFyZURhdGEtPm1fY29kZUJsb2NrLnNldCgqY29k
ZUJsb2NrLT52bSgpLCB0aGlzLCBjb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmNwcAppbmRleCA0MTBlYjZkNWFlMTZmMzYwMjI2ZGIzODIzZjdlZTgyOGVj
Y2FiMzgzLi40MWFjYTlkM2Q0ZDliOGE1NmFlNjg1MjMwZThkNjY3NTJhYzBkMDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtMzYyLDcgKzM2Miw3IEBA
IFN0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKCkKICAgICAgICAgYnVpbGRlci5h
cHBlbmQobV9wcm90by0+cHJvcGVydHlIYXNoKCkpOwogICAgIH0KIAotICAgIG1fcHJvcGVydHlI
YXNoID0gc3RkOjptYWtlX3VuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAg
bV9wcm9wZXJ0eUhhc2ggPSBtYWtlVW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsK
ICAgICByZXR1cm4gKm1fcHJvcGVydHlIYXNoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggNGUyZDBkMzI0YTI0ZTIzMmNkMTk1Mzg5MmVkOGIwYTMzYjBiMDVlZS4u
YjcwOTJjMDhlZjcyYjBlY2E4OWZmMGI1YzRiZTFhZTU5YWExZGJiNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjUyLDE4ICsyNTIsMTggQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1
cnJlbnQoKSkKICNlbmRpZiAvLyBVU0UoQ0YpCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBUeXBlKQot
ICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yPigpKQotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3Io
c3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdl
OjpQcmltaXRpdmUpKQotICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0ZDo6bWFrZV91
bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkp
Ci0gICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5
cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhp
bGlhcnkpKSkKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShzdGQ6Om1ha2Vf
dW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlv
biwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCi0gICAgLCBjZWxsSGVh
cENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhE
b2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxs
QXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBz
dHJpbmdIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4o
KSkKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVl
PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQorICAgICwgZmFzdE1hbGxvY0Fs
bG9jYXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQor
ICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQorICAgICwganNWYWx1ZUdp
Z2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
PihHaWdhY2FnZTo6SlNWYWx1ZSkpCisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUobWFrZVVu
aXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpBdXhpbGlhcnkpKSkKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxs
VHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWRE
ZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCisgICAg
LCBjZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRl
cyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0
cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBzdHJp
bmdIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4oKSkKKyAgICAs
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlPigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAsIHdl
YkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNXZWJBc3Nl
bWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25I
ZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxU
eXBlPigpKQorICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUobWFrZVVuaXF1
ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlPigpKQorICAgICwgd2ViQXNzZW1i
bHlGdW5jdGlvbkhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGU+KCkpCiAjZW5kaWYKICAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGUuZ2V0KCksIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4
M2U3Y2Q3NjIKICAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwganNW
YWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgpAQCAtMjk2LDcg
KzI5Niw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAs
IG1fYXRvbVN0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCku
YXRvbVN0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbVN0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlO
YW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQotICAgICwgbWFjaGlu
ZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKHN0ZDo6bWFrZV91bmlxdWU8
U2ltcGxlU3RhdHM+KCkpCisgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9y
QmFzZWxpbmVKSVQobWFrZVVuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKICAgICAsIGN1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uTWFwKCp0aGlzKQogICAgICwgc3RyaW5nQ2FjaGUoKnRoaXMpCiAgICAg
LCBzeW1ib2xJbXBsVG9TeW1ib2xNYXAoKnRoaXMpCkBAIC0zMTIsOCArMzEyLDggQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbml0aWFsaXppbmdP
YmplY3RDbGFzcygwKQogI2VuZGlmCiAgICAgLCBtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeSgwKQot
ICAgICwgbV9jb2RlQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxDb2RlQ2FjaGU+KCkpCi0gICAgLCBt
X2J1aWx0aW5FeGVjdXRhYmxlcyhzdGQ6Om1ha2VfdW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4o
KnRoaXMpKQorICAgICwgbV9jb2RlQ2FjaGUobWFrZVVuaXF1ZTxDb2RlQ2FjaGU+KCkpCisgICAg
LCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhtYWtlVW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRo
aXMpKQogICAgICwgbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQoMCkKICAgICAsIG1fcHJpbWl0
aXZlR2lnYWNhZ2VFbmFibGVkKElzV2F0Y2hlZCkKICAgICAsIG1fY29udHJvbEZsb3dQcm9maWxl
ckVuYWJsZWRDb3VudCgwKQpAQCAtNDA3LDcgKzQwNyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMo
KnRoaXMpOwogICAgIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VQcm9maWxlcigpKSkg
ewotICAgICAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Zp
bGVyOjpEYXRhYmFzZT4oKnRoaXMpOworICAgICAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBt
YWtlVW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4oKnRoaXMpOwogCiAgICAgICAgIFN0cmluZ1By
aW50U3RyZWFtIHBhdGhPdXQ7CiAgICAgICAgIGNvbnN0IGNoYXIqIHByb2ZpbGVyUGF0aCA9IGdl
dGVudigiSlNDX1BST0ZJTEVSX1BBVEgiKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMuCiAg
ICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFycmF5
Q29udHJvbGxlcigpKTsKIAotICAgIG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeT4oKnRoaXMpOworICAgIG1fYnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeT4oKnRoaXMpOwogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVR5cGVQcm9maWxlcigpKQogICAg
ICAgICBlbmFibGVUeXBlUHJvZmlsZXIoKTsKQEAgLTQ0Miw5ICs0NDIsOSBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5H
X1BST0ZJTEVSKQogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVJhbmRvbWl6aW5nRnV6emVyQWdlbnQo
KSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxSYW5kb21pemluZ0Z1
enplckFnZW50PigqdGhpcykpOworICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFJh
bmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAgZWxzZSBpZiAoT3B0aW9uczo6dXNl
RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50KHN0
ZDo6bWFrZV91bmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOworICAg
ICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dD4oKnRoaXMpKTsKIAogICAgIGlmIChPcHRpb25zOjphbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3Jp
Z2luTWFwKCkpCiAgICAgICAgIHNldFNob3VsZEJ1aWxkUENUb0NvZGVPcmlnaW5NYXBwaW5nKCk7
CkBAIC00NTcsOSArNDU3LDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRo
YXQgdGhlIEpJVCBpcyBnb2luZyB0byB1c2UgYXJlIGluaXRpYWxpemVkIGluIG5vbi1jb21waWxh
dGlvbiB0aHJlYWRzLgogICAgIGlmIChjYW5Vc2VKSVQoKSkgewotICAgICAgICBqaXRTdHVicyA9
IHN0ZDo6bWFrZV91bmlxdWU8SklUVGh1bmtzPigpOworICAgICAgICBqaXRTdHVicyA9IG1ha2VV
bmlxdWU8SklUVGh1bmtzPigpOwogI2lmIEVOQUJMRShGVExfSklUKQotICAgICAgICBmdGxUaHVu
a3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZUTDo6VGh1bmtzPigpOworICAgICAgICBmdGxUaHVua3Mg
PSBtYWtlVW5pcXVlPEZUTDo6VGh1bmtzPigpOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQog
ICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ2FsbCk7
CiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDb25z
dHJ1Y3QpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIFdhdGNoZG9nJiBWTTo6ZW5zdXJlV2F0Y2hkb2co
KQogSGVhcFByb2ZpbGVyJiBWTTo6ZW5zdXJlSGVhcFByb2ZpbGVyKCkKIHsKICAgICBpZiAoIW1f
aGVhcFByb2ZpbGVyKQotICAgICAgICBtX2hlYXBQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SGVhcFByb2ZpbGVyPigqdGhpcyk7CisgICAgICAgIG1faGVhcFByb2ZpbGVyID0gbWFrZVVuaXF1
ZTxIZWFwUHJvZmlsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faGVhcFByb2ZpbGVyOwogfQog
CkBAIC0xMDQxLDggKzEwNDEsOCBAQCBzdGF0aWMgYm9vbCBkaXNhYmxlUHJvZmlsZXJXaXRoUmVz
cGVjdFRvQ291bnQodW5zaWduZWQmIGNvdW50ZXIsIGNvbnN0IEZ1bmMmIGRvRAogYm9vbCBWTTo6
ZW5hYmxlVHlwZVByb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZVR5cGVQcm9maWxlciA9IFt0
aGlzXSAoKSB7Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUeXBlUHJvZmlsZXI+KCk7Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gc3Rk
OjptYWtlX3VuaXF1ZTxUeXBlUHJvZmlsZXJMb2c+KCp0aGlzKTsKKyAgICAgICAgdGhpcy0+bV90
eXBlUHJvZmlsZXIgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+
bV90eXBlUHJvZmlsZXJMb2cgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlckxvZz4oKnRoaXMpOwog
ICAgIH07CiAKICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQobV90
eXBlUHJvZmlsZXJFbmFibGVkQ291bnQsIGVuYWJsZVR5cGVQcm9maWxlcik7CkBAIC0xMDYxLDcg
KzEwNjEsNyBAQCBib29sIFZNOjpkaXNhYmxlVHlwZVByb2ZpbGVyKCkKIGJvb2wgVk06OmVuYWJs
ZUNvbnRyb2xGbG93UHJvZmlsZXIoKQogewogICAgIGF1dG8gZW5hYmxlQ29udHJvbEZsb3dQcm9m
aWxlciA9IFt0aGlzXSAoKSB7Ci0gICAgICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEZsb3dQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+
bV9jb250cm9sRmxvd1Byb2ZpbGVyID0gbWFrZVVuaXF1ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigp
OwogICAgIH07CiAKICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQo
bV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyKTsKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHZvaWQgVk06OmR1bXBUeXBlUHJvZmlsZXJEYXRh
KCkKIAogdm9pZCBWTTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogewotICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZnbG9iYWxPYmplY3QsIFdURk1v
dmUodGFzaykpKTsKKyAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFF1ZXVl
ZFRhc2s+KCp0aGlzLCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQg
Vk06OmRyYWluTWljcm90YXNrcygpCkBAIC0xMjMwLDE0ICsxMjMwLDE0IEBAIHZvaWQgVk06OmVu
c3VyZVNoYWRvd0NoaWNrZW4oKQogewogICAgIGlmIChtX3NoYWRvd0NoaWNrZW4pCiAgICAgICAg
IHJldHVybjsKLSAgICBtX3NoYWRvd0NoaWNrZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0No
aWNrZW4+KCk7CisgICAgbV9zaGFkb3dDaGlja2VuID0gbWFrZVVuaXF1ZTxTaGFkb3dDaGlja2Vu
PigpOwogfQogCiAjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKICAgICBJc29TdWJzcGFjZSogVk06Om5hbWUj
I1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAg
IGF1dG8gc3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAgICAgICAg
bV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0
KCk7IFwKQEAgLTEyNjgsNyArMTI2OCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhCiAgICAg
SXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQo
IW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGFj
ZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAor
ICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAg
ICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDI0ZjE4YWQwMmRlMmZlZjkwMDkz
NDQ4NjQzMGM5OGZlOTQ5NDI0ZWYuLjUzMzkzY2IyNThmNzQyYzZhY2ZkZGVhZWM2YzcxNzU2NDRk
Nzk0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsKICAg
ICB2b2lkIGVtaXRQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJhc2ljQmxvY2ssIEIzOjpQYXRjaHBv
aW50VmFsdWUqIHBhdGNoLCBUbXAgcmVzdWx0LCBWZWN0b3I8Q29uc3RyYWluZWRUbXAsIGlubGlu
ZVNpemU+JiYgYXJncykKICAgICB7CiAgICAgICAgIGlmICghbV9wYXRjaHBvaW50U3BlY2lhbCkK
LSAgICAgICAgICAgIG1fcGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hw
b2ludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRj
aHBvaW50U3BlY2lhbD4oKSkpOworICAgICAgICAgICAgbV9wYXRjaHBvaW50U3BlY2lhbCA9IHN0
YXRpY19jYXN0PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VV
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKSk7CiAKICAgICAgICAgSW5zdCBpbnN0KFBh
dGNoLCBwYXRjaCwgQXJnOjpzcGVjaWFsKG1fcGF0Y2hwb2ludFNwZWNpYWwpKTsKICAgICAgICAg
SW5zdCByZXN1bHRNb3Y7CkBAIC00ODcsNyArNDg3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3Ig
ewogCiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIGEgaGFzaG1hcCBvZiB0aGVzZS4KICAgICAgICAg
QjM6OkNoZWNrU3BlY2lhbDo6S2V5IGtleShicmFuY2gpOwotICAgICAgICBCMzo6Q2hlY2tTcGVj
aWFsKiBzcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lhbCo+KG1fY29kZS5hZGRT
cGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkpOworICAgICAg
ICBCMzo6Q2hlY2tTcGVjaWFsKiBzcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lh
bCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgZm9yIGR1bW15IHZhbHVlcwog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQw
CkBAIC0yMTM5LDEwICsyMTM5LDEwIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6Om9yaWdpbigpIC0+
IEIzOjpPcmlnaW4KIAogRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+
LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZUFpcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0
aW9uQ29udGV4dCwgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9u
TGVuZ3RoLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIGluZm8sIE1lbW9yeU1vZGUgbW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVw
Q291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIAotICAg
IGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9p
bnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlv
bkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+
KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gbWFrZVVuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBCMzo6UHJvY2VkdXJlIHByb2NlZHVyZTsKICAgICBD
b2RlJiBjb2RlID0gcHJvY2VkdXJlLmNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAyMDk0MTc3ZWQ2ZjE4M2FiNGQ4NjJl
YzIyNjdkMzBmMjhiN2RlNWI2Li4xNThkZjlmYTlmMGM5ZjcyMWFjMjkyNzc4MTg4ZGNmMjhlNzA3
ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCkBAIC0xNTUxLDEwICsxNTUxLDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6b3JpZ2lu
KCkgLT4gT3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9u
PiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxl
bmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIENvbXBpbGF0aW9uTW9kZSBjb21waWxhdGlvbk1vZGUs
IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4
Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5p
cXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRk
ZXJFbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAg
Y29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxD
Q2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2lu
dEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4
dC53YXNtRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAg
UHJvY2VkdXJlIHByb2NlZHVyZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uY3BwCmluZGV4IGY5ODVkNTIzYzJlOTNmM2JkMjNmYjdjNTcxMmI1ODY4Y2MxNmE2ODUu
LjUwNmRmNGJlZmQwZDU2NDE4NDRjZTUyNzk1MTE1ZjYxMjg3MTYxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lk
IEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5jb21w
aWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAgICAgICAg
ICAgICBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5j
b21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgICAgICAg
ICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2Vi
QXNzZW1ibHkgQkJRIGZ1bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRleCwgc2ln
bmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUo
ZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0
KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAgICAgICAg
ICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAg
ICAgIH0KQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVu
Y3Rpb24tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21w
aWxhdGlvbj4oCisgICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9u
LT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAog
ICAgICAgICAgICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRp
b25QdHJUYWcsICJFbWJlZGRlci0+V2ViQXNzZW1ibHkgZW50cnlwb2ludFslaV0gJXMgbmFtZSAl
cyIsIGZ1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBt
YWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1h
dGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRh
KCkpLAogICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQuZW1iZWRkZXJFbnRyeXBv
aW50Qnlwcm9kdWN0cykpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IGM1MTNmZDJmNTBlZDZmYjE3YzMzODVlZjI5MDUyNzgx
NzM5MjEwMzcuLjBkN2EwM2MzNjEyOWNkMWRlMmM1NGZmY2Q1MDI5NWI1NmM1Yjg5OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgb21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICBvbWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFr
ZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBPTUcgZnVuY3Rpb25bJWldICVz
IG5hbWUgJXMiLCBtX2Z1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCku
ZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1
bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNj
aWkoKS5kYXRhKCkpLAogICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXBy
b2R1Y3RzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21X
b3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3Bw
CmluZGV4IDM2ZDc0YzE0YjE4YzcwN2I4MTJhMDQ4N2Y5MWUyOWMzODUzOTFkZTIuLjY2MGY5NTY1
NzM4YjEwYTMwZjNlN2NjODE4YTMyYzg1ODc4MjEyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIFdvcmtsaXN0OjpX
b3JrbGlzdCgpCiAgICAgbV90aHJlYWRzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkNvbXBpbGF0
aW9uVGhyZWFkcyk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzOyBpKyspCi0gICAg
ICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGlzdDo6
VGhyZWFkPihsb2NrZXIsICp0aGlzKSk7CisgICAgICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBl
bmQobWFrZVVuaXF1ZTxXb3JrbGlzdDo6VGhyZWFkPihsb2NrZXIsICp0aGlzKSk7CiB9CiAKIFdv
cmtsaXN0Ojp+V29ya2xpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dh
c20uY3BwCmluZGV4IDVkZDQ1MWJlYTg0ZDU5MGJiZjBmY2IwNzZlMjZmZmQzY2M3YjgxYWMuLjcz
NTIyMDI4OTM3YzZkYWMxZmM0NzNjN2U0Y2RjNjQ5NThjZThlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEludGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlv
bkNvbnRleHQmIGNvbXAKIHsKICAgICBDQ2FsbEhlbHBlcnMmIGppdCA9ICpjb21waWxhdGlvbkNv
bnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5p
cXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7
CiAKICAgICAvLyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXggN2YwMzNmZWMxYzM2OWE5NDIzYjMz
Y2Y4ZWIzMzM0YzUxY2UwODA4Yi4uYzRiNzdjYWRiZTVlZWE1NzNlYzg1MmI5NWVmNmE3ODliODI4
NTM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIu
Y3BwCkBAIC0xNzA2LDcgKzE3MDYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICAg
ICAgZHVtcERpc2p1bmN0aW9uKG1fYm9keURpc2p1bmN0aW9uLmdldCgpKTsKICNlbmRpZgogCi0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4oV1RGTW92ZSht
X2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRlcm4sIGFsbG9j
YXRvciwgbG9jayk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4o
V1RGTW92ZShtX2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRl
cm4sIGFsbG9jYXRvciwgbG9jayk7CiAgICAgfQogCiAgICAgdm9pZCBjaGVja0lucHV0KHVuc2ln
bmVkIGNvdW50KQpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAg
ICAgICAgdW5zaWduZWQgc3VicGF0dGVybklkID0gcGFyZW50aGVzZXNCZWdpbi5hdG9tLnN1YnBh
dHRlcm5JZDsKIAogICAgICAgICB1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IGxhc3RTdWJwYXR0
ZXJuSWQgLSBzdWJwYXR0ZXJuSWQgKyAxOwotICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVu
Y3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMs
IGNhbGxGcmFtZVNpemUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBt
YWtlVW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUp
OwogCiAgICAgICAgIHVuc2lnbmVkIGZpcnN0VGVybUluUGFyZW50aGVzZXMgPSBiZWdpblRlcm0g
KyAxOwogICAgICAgICBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT50ZXJtcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGVuZFRlcm0gLSBmaXJzdFRlcm1JblBhcmVudGhlc2VzICsgMik7CkBAIC0xOTk3
LDcgKzE5OTcsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogCiAgICAgdm9pZCByZWdleEJlZ2lu
KHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zLCB1bnNpZ25lZCBjYWxsRnJhbWVTaXplLCBib29sIG9u
Y2VUaHJvdWdoKQogICAgIHsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwor
ICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihu
dW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm06OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKG9uY2VUaHJvdWdo
KSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1swXS5mcmFtZUxvY2F0aW9uID0g
MDsKICAgICAgICAgbV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IDdhN2MyMDZjN2U0MzU5N2NmZTRjNGQ0ZGNhOGEw
N2FjNWFjMWY2NjAuLjhhYjYyYjdiYTM5ODEwNTFlYmJkYWNkNmU0N2EwNThhYWRkM2Q5YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0zODk5LDcgKzM4OTksNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpk
dW1wRGlzYXNzZW1ibHkoKSB8fCBPcHRpb25zOjpkdW1wUmVnRXhwRGlzYXNzZW1ibHkoKSkpCi0g
ICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8WWFyckRpc2Fzc2Vt
Ymxlcj4odGhpcyk7CisgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8WWFy
ckRpc2Fzc2VtYmxlcj4odGhpcyk7CiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAg
ICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldFN0YXJ0T2ZDb2RlKGxhYmVsKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IDQ5Zjc3ZjY5YzY4NWM2
NTIwM2RmM2YwMzRjOTBkMTg3N2M5MmRjOWIuLmZjYzUxYjI3N2Y1MDExMDNiN2M2NWJiZDMzYTVj
YTQxMGQ4MWMwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5j
cHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBjbGFzcyBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yIHsK
ICAgICB7CiAgICAgICAgIGNvYWxlc2NlVGFibGVzKCk7CiAKLSAgICAgICAgYXV0byBjaGFyYWN0
ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAgICAgIGF1
dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwogCiAgICAg
ICAgIGNoYXJhY3RlckNsYXNzLT5tX21hdGNoZXMuc3dhcChtX21hdGNoZXMpOwogICAgICAgICBj
aGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuc3dhcChtX3Jhbmdlcyk7CkBAIC00NDEsNyArNDQxLDcg
QEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICwgbV9jaGFyYWN0ZXJD
bGFzc0NvbnN0cnVjdG9yKHBhdHRlcm4uaWdub3JlQ2FzZSgpLCBwYXR0ZXJuLnVuaWNvZGUoKSA/
IENhbm9uaWNhbE1vZGU6OlVuaWNvZGUgOiBDYW5vbmljYWxNb2RlOjpVQ1MyKQogICAgICAgICAs
IG1fc3RhY2tMaW1pdChzdGFja0xpbWl0KQogICAgIHsKLSAgICAgICAgYXV0byBib2R5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgIGF1dG8gYm9keSA9
IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4ubV9i
b2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0Fs
dGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RG
TW92ZShib2R5KSk7CkBAIC00NTYsNyArNDU2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciB7CiAgICAgICAgIG1fcGF0dGVybi5yZXNldEZvclJlcGFyc2luZygpOwogICAgICAgICBt
X2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IucmVzZXQoKTsKIAotICAgICAgICBhdXRvIGJvZHkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBi
b2R5ID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVy
bi5tX2JvZHkgPSBib2R5LmdldCgpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRk
TmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVu
ZChXVEZNb3ZlKGJvZHkpKTsKQEAgLTYwOCw3ICs2MDgsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNv
bnN0cnVjdG9yIHsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NFUlQoIW9wdEdyb3Vw
TmFtZSk7CiAKLSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRv
IHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4o
bV9hbHRlcm5hdGl2ZSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBh
dHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0
ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGZhbHNlKSk7CiAg
ICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRl
cm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1v
dmUocGFyZW50aGVzZXNEaXNqdW5jdGlvbikpOwpAQCAtNjE2LDcgKzYxNiw3IEBAIGNsYXNzIFlh
cnJQYXR0ZXJuQ29uc3RydWN0b3IgewogCiAgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkJlZ2luKGJvb2wgaW52ZXJ0ID0gZmFsc2UpCiAgICAgewotICAgICAgICBhdXRvIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4o
bV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1h
a2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKICAgICAgICAgbV9h
bHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQ
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uLCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDEsIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGZhbHNlLCBpbnZlcnQpKTsKICAgICAgICAgbV9h
bHRlcm5hdGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7
CiAgICAgICAgIG1faW52ZXJ0UGFyZW50aGV0aWNhbEFzc2VydGlvbiA9IGludmVydDsKQEAgLTcw
Nyw3ICs3MDcsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAg
IFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5h
dGl2ZXNbYWx0XS5nZXQoKTsKICAgICAgICAgICAgIGlmICghZmlsdGVyU3RhcnRzV2l0aEJPTCB8
fCAhYWx0ZXJuYXRpdmUtPm1fc3RhcnRzV2l0aEJPTCkgewogICAgICAgICAgICAgICAgIGlmICgh
bmV3RGlzanVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgICAgICAgICAg
ICAgbmV3RGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAg
ICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24tPm1fcGFyZW50ID0gZGlzanVuY3Rpb24t
Pm1fcGFyZW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0
ZXJuYXRpdmUqIG5ld0FsdGVybmF0aXZlID0gbmV3RGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0
aXZlKCk7CkBAIC0xNDczLDcgKzE0NzMsNyBAQCB2b2lkIFlhcnJQYXR0ZXJuOjpkdW1wUGF0dGVy
bihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxDaGFyYWN0ZXJDbGFzcz4gYW55Y2hhckNyZWF0ZSgpCiB7Ci0gICAgYXV0byBj
aGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAg
YXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAgICAg
Y2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwLCAweDdm
KSk7CiAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVy
UmFuZ2UoMHgwMDgwLCAweDEwZmZmZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX2NoYXJhY3Rl
cldpZHRocyA9IENoYXJhY3RlckNsYXNzV2lkdGhzOjpIYXNCb3RoQk1QQW5kTm9uQk1QOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggMGI3ZGIyZWJhOGFkNTJk
ZWQyYjVmN2U2N2U1NDViOGMxNmM5NDVjNy4uN2U4MmM4NTVhODc4ZTZjMTgwZWQ1MjFmMWY3YWQ0
OGQ4YzFmYmFjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCkBA
IC0zNDEsNyArMzQxLDcgQEAgc3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbiB7CiAgICAgCiAgICAg
UGF0dGVybkFsdGVybmF0aXZlKiBhZGROZXdBbHRlcm5hdGl2ZSgpCiAgICAgewotICAgICAgICBt
X2FsdGVybmF0aXZlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+
KHRoaXMpKTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGF0dGVy
bkFsdGVybmF0aXZlPih0aGlzKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYXR0ZXJu
QWx0ZXJuYXRpdmUqPihtX2FsdGVybmF0aXZlcy5sYXN0KCkuZ2V0KCkpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKaW5kZXggYzFm
OWY5OWRlMDkxY2VjYjJlMWRiNTVjMzhmYTM2MDMxMWVlMzdmNC4uNjljZDg4ODY1Nzg1NGNkNTQ0
NWY4NjNlMjJkNTVmZmI5YzQwZWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9jcmVhdGVfcmVnZXhfdGFibGVzCkBAIC05NSwxMSArOTUsMTEgQEAgZm9yIG5hbWUsIGNsYXNz
ZXMgaW4gdHlwZXMuaXRlbXMoKToKICAgICBmdW5jdGlvbiArPSAoIntcbiIpCiAgICAgaWYgZW1p
dFRhYmxlcyBhbmQgY2xhc3Nlc1siVXNlVGFibGUiXToKICAgICAgICAgaWYgIkludmVyc2UiIGlu
IGNsYXNzZXM6Ci0gICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgdHJ1ZSk7XG4i
ICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBh
dXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwg
dHJ1ZSk7XG4iICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkKKyAgICAg
ICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVl
PENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQogICAgIGVsc2U6
Ci0gICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1h
a2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpO1xuIikKKyAgICAgICAgZnVuY3Rpb24gKz0gKCIg
ICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7XG4i
KQogICAgIGhhc0JNUENoYXJhY3RlcnMgPSBGYWxzZQogICAgIGhhc05vbkJNUENoYXJhY3RlcnMg
PSBGYWxzZQogICAgIGZvciAobWluLCBtYXgpIGluIHJhbmdlczoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0
eVRhYmxlcy5weQppbmRleCBmOWZlZjQ2OGQyYjVkZGE2YWFlZWFiMGIzZmMwNThjZDNlZWNlYWMx
Li41MjZmYjZlN2FjM2EyMjdhNmQ0M2NiYmVmZDI3MDJkMWEwYzU0Y2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJs
ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29k
ZVByb3BlcnR5VGFibGVzLnB5CkBAIC01MjksNyArNTI5LDcgQEAgZGVmIGR1bXBNYXRjaERhdGEo
c2VsZiwgZmlsZSwgdmFsdWVzUGVyTGluZSwgZGF0YUxpc3QsIGZvcm1hdHRlcik6CiAgICAgZGVm
IGR1bXAoc2VsZiwgZmlsZSwgY29tbWFBZnRlcik6CiAgICAgICAgIGZpbGUud3JpdGUoInN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IHt9KClcbnt7XG4iLmZvcm1hdChzZWxm
LmdldENyZWF0ZUZ1bmNOYW1lKCkpKQogICAgICAgICBmaWxlLndyaXRlKCIgICAgLy8gTmFtZSA9
IHt9LCBudW1iZXIgb2YgY29kZVBvaW50czoge31cbiIuZm9ybWF0KHNlbGYubmFtZSwgc2VsZi5j
b2RlUG9pbnRDb3VudCkpCi0gICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQorICAgICAgICBmaWxl
LndyaXRlKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xh
c3M+KFxuIikKICAgICAgICAgZmlsZS53cml0ZSgiICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VUNoYXIzMj4oIikKICAgICAgICAgc2VsZi5kdW1wTWF0Y2hEYXRhKGZpbGUsIDgsIHNlbGYu
bWF0Y2hlcywgbGFtYmRhIGZpbGUsIG1hdGNoOiAoZmlsZS53cml0ZSgiezA6MD0jNHh9Ii5mb3Jt
YXQobWF0Y2gpKSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiksXG4iKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwIGIvU291cmNlL1dURi9iZW5j
aG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCmluZGV4IGNjNzA3ZGUzZmY0ZWMxMzhjZmE0NmFi
NGM4ZTEzYWJiNjU5M2NiYTEuLjhjOTdjMWEyNDFiNzI5YWY4ZjMxZjM1OWM3ZjUxNzdhNjM0MDlk
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAKQEAgLTYx
LDggKzYxLDggQEAgc3RydWN0IEJlbmNobWFyayB7CiAgICAgc3RhdGljIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIG5hbWUpCiAgICAgewogICAgICAgICBMb2NrVHlwZSBsb2NrOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dW5zaWduZWRbXT4gY291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25l
ZFtdPihudW1UaHJlYWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+
W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVh
ZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWRbXT4gY291bnRzID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CiAg
ICAgCiAgICAgICAgIHZvbGF0aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1ZTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcCBiL1NvdXJjZS9X
VEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAppbmRleCBmMTU2NTBkNGM5YzhmYTY3NzBm
ODkxMmYwOWRmZTM5MjkxMzA3YzM0Li5iZTdhYmEzOTBlYjUzZTM1ODFlMzZmNGE4Yjk1MDBkMGUy
OTlmOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5j
cHAKKysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCkBAIC03NCw5
ICs3NCw5IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tU
eXBlPgogICAgIHN0YXRpYyB2b2lkIHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPiBsb2NrcyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxkb3VibGU+W10+IHdvcmRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxXaXRoUGFkZGluZzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRz
UGVyR3JvdXApOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+
W10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2l0aFBhZGRpbmc8
TG9ja1R5cGU+W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxX
aXRoUGFkZGluZzxkb3VibGU+W10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51
bVRocmVhZHNQZXJHcm91cCk7CiAKICAgICAgICAgdm9sYXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0
cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmggYi9T
b3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKaW5kZXggMGI1NDFiOGM3M2QwZjU5ODY1
MWJmOTVlNzY5M2I4MDdjOTk5Zjc4YS4uODg0ZWQ3MzIzMzc2MWEyOWZiNDk2ZjBhZDA5ODk2NzU0
NWU3MDM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaApAQCAtMjU0LDcgKzI1NCw3IEBA
IGNsYXNzIENvbmN1cnJlbnRWZWN0b3IgZmluYWwgewogICAgIHZvaWQgYWxsb2NhdGVTZWdtZW50
KCkKICAgICB7CiAgICAgICAgIG1fc2VnbWVudHMuZ3JvdyhtX251bVNlZ21lbnRzICsgMSk7Ci0g
ICAgICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vn
bWVudD4oKTsKKyAgICAgICAgbV9zZWdtZW50c1ttX251bVNlZ21lbnRzKytdID0gbWFrZVVuaXF1
ZTxTZWdtZW50PigpOwogICAgIH0KIAogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCmluZGV4IDgzYzIwNzUxZjg1ZjRlNGQy
MDE1NjE0NDFjYTgzMTQxY2I1YzM3ZmYuLmM2M2MwNTVhMGEwMzQxZGY2YTVhZjI3MGE0YWNjYjhk
NTdkNzg0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3Ao
KQogCiAgICAgd2hpbGUgKCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKSB7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9kcmFpbmVkUG9v
bCA9IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpV
c2UpID8gc3RkOjptYWtlX3VuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOworICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29s
ID0gKG1fdXNlQXV0b2RyYWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVz
ZSkgPyBtYWtlVW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CiAKICAgICAgICAg
ICAgIG1fdGFza1F1ZXVlLndhaXRGb3JNZXNzYWdlKCkucGVyZm9ybVRhc2soKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93
dGYvRmFzdE1hbGxvYy5oCmluZGV4IGVmZWZiM2EzMTMzZTgzZjY0MzM2ZmQyZWMyZGE1MmE1NDgz
MmU2MjEuLjk1YjY3NTk3MmQzMTBlM2RkYmQ0MTNkNGE4ZjhkMTI4OGYyMGZhZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmgKQEAgLTMwMSw5ICszMDEsMTEgQEAgdXNpbmcgV1RGOjpmYXN0QWxpZ25lZEZyZWU7
CiAjZGVmaW5lIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIFwKIHB1YmxpYzogXAogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xh
c3M7IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm8KIAogI2RlZmluZSBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQgXAogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19m
YXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2Vt
aWNvbG9uQWZ0ZXJUaGlzTWFjcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmlu
dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCmluZGV4IDNl
MjUzY2YyYWMyMTljYzg1NTg0ZDQyYzQ1MWVmYzdjYTc5YjY0ZWEuLjcwNzRjMDNhYmFmOGZjZjM5
NzdmMmIxMWFiOWMzZDZlMzgxNjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQ
cmludFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcApA
QCAtNDcsNyArNDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVByaW50U3RyZWFtPiBGaWxlUHJp
bnRTdHJlYW06Om9wZW4oY29uc3QgY2hhciogZmlsZW5hbWUsIGNvbgogICAgIGlmICghZmlsZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlUHJpbnRTdHJlYW0+KGZpbGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpbGVQcmludFN0
cmVhbT4oZmlsZSk7CiB9CiAKIHZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKGNvbnN0IGNo
YXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RnVuY3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKaW5kZXggMDVlMzY5NzgyNWJj
M2QzNDlmNDhkNjhjMzJhNjg2MjI1NWZiNTgzZS4uMGI3OTU4Njc0ODBmZDAzMjI0MTI0NTRlN2Qw
YWY4MzM4ZDZlM2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCkBAIC02NywxMSArNjcsMTEgQEAgY2xhc3MgRnVu
Y3Rpb248T3V0KEluLi4uKT4gewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBl
LCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCEoc3RkOjppc19wb2ludGVyPENhbGxh
YmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVf
cG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0eXBlPjo6dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVlX3Jl
ZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbihDYWxs
YWJsZVR5cGUmJiBjYWxsYWJsZSkKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6Om1h
a2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4u
Lj4+KFdURk1vdmUoY2FsbGFibGUpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIo
bWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxGdW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBG
dW5jdGlvbihGdW5jdGlvblR5cGUgZikKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6
Om1ha2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJ
bi4uLj4+KFdURk1vdmUoZikpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtl
VW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+
KFdURk1vdmUoZikpKSB7IH0KIAogICAgIE91dCBvcGVyYXRvcigpKEluLi4uIGluKSBjb25zdAog
ICAgIHsKQEAgLTg0LDE0ICs4NCwxNCBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4pPiB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCEoc3RkOjppc19wb2ludGVyPENhbGxhYmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6
aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0
eXBlPjo6dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46
OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlwZSYmIGNh
bGxhYmxlKQogICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdU
Rk1vdmUoY2FsbGFibGUpKTsKKyAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVl
PERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1v
dmUoY2FsbGFibGUpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlv
bjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1
ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShGdW5jdGlvblR5cGUgZikKICAgICB7
Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNh
bGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKKyAg
ICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFw
cGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDNiMWU5NTMwM2RlNTQwNTE0M2Zi
NTYzY2NiODA0N2U1YWNlYWQwYjMuLmE0ZDA3N2Y4NGYwMmExZmExYzFiZTAzNGE4NmViMzUwZDZk
N2Y0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5oCkBAIC01ODgsMTAgKzU4OCwxMCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVS
QVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9ycygwKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjpt
YWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigp
KQogI2VuZGlmCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwg
bV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigpKQorICAgICAgICAsIG1fc3RhdHMobWFr
ZVVuaXF1ZTxTdGF0cz4oKSkKICNlbmRpZgogICAgIHsKICAgICB9CkBAIC0xMzM0LDEwICsxMzM0
LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCiAjaWYg
Q0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKG51bGxwdHIp
Ci0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwg
bV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICNpZiBEVU1QX0hBU0hUQUJMRV9T
VEFUU19QRVJfVEFCTEUKLSAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFrZV91bmlxdWU8U3RhdHM+
KCpvdGhlci5tX3N0YXRzKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCpv
dGhlci5tX3N0YXRzKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgdW5zaWduZWQgb3RoZXJLZXlD
b3VudCA9IG90aGVyLnNpemUoKTsKQEAgLTEzODIsNyArMTM4Miw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgIGlubGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShIYXNoVGFibGUmJiBvdGhlcikKICNp
ZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgIDogbV9pdGVyYXRvcnMobnVsbHB0
cikKLSAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAg
LCBtX211dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgb3Ro
ZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAKaW5kZXggOWU4NzIwZjZkOWE3OTgwYjk1ZTViMTNjNWU2NTVjMzg5NDkzMDRiNS4u
NTM3OWMwYTRkNWM4YzZmMzY3ZDkxNjk2ZTBkNmExOGM1ZDlmZWMwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1
c2UpCiAgICAgfQogCiAgICAgaWYgKHVzZSkgewotICAgICAgICBtX21lYXN1cmVtZW50VGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4+
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1l
bnRUaW1lckZpcmVkKTsKKyAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbWFrZVVuaXF1ZTxS
dW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CiAgICAg
ICAgIG1fbWVhc3VyZW1lbnRUaW1lci0+c3RhcnRSZXBlYXRpbmcoMzBfcyk7CiAgICAgfSBlbHNl
CiAgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5o
CmluZGV4IGFmNjVlMDhjYTg4MDI0MGVhOWYxOWMzYzFmYzFmZGM1N2FiNGQ0YWIuLmRlZjgzNDBl
M2M4YWNjODU4NmRhNGYwMGJiOGU5ZGM1NmUwMTNlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBA
IC01NjUsNiArNTY1LDI0IEBAIGNvbnN0ZXhwciBzaXplX3QgY2x6KHVpbnQzMl90IHZhbHVlLCBa
ZXJvU3RhdHVzIG1pZ2h0QmVaZXJvID0gWmVyb1N0YXR1czo6TWF5QmVaCiAKIH0gLy8gbmFtZXNw
YWNlIHN0ZAogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4g
QXJncz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZShBcmdzJiYuLi4g
YXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zh
c3RBbGxvY2F0ZWRDbGFzcywgaW50Pjo6dmFsdWUpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IFQsIGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKICNkZWZpbmUgV1RGTW92ZSh2YWx1ZSkgc3RkOjptb3ZlPFdU
Rjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSkKIAogdXNpbmcgV1RGOjpLQjsKQEAgLTU4NSwz
ICs2MDMsNSBAQCB1c2luZyBXVEY6Om1lcmdlRGVkdXBsaWNhdGVkU29ydGVkOwogdXNpbmcgV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mOwogdXNpbmcgV1RGOjpzYWZlQ2FzdDsKIHVzaW5nIFdURjo6
dHJ5QmluYXJ5U2VhcmNoOwordXNpbmcgV1RGOjptYWtlVW5pcXVlOwordXNpbmcgV1RGOjptYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1N0cmVhbUJ1ZmZlci5oIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKaW5kZXggMjZi
YmM4ZmQ2N2E0OTM0NjMyMjFkNjE5NjE4ZWI3YzY0Njg2NDAzMC4uY2EzM2Y4NjdkMzhiNTc1OTIw
MTQxZDUyM2MzMDdhYWU3YzgyMGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RyZWFt
QnVmZmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKQEAgLTYwLDcgKzYw
LDcgQEAgY2xhc3MgU3RyZWFtQnVmZmVyIHsKICAgICAgICAgbV9zaXplICs9IHNpemU7CiAgICAg
ICAgIHdoaWxlIChzaXplKSB7CiAgICAgICAgICAgICBpZiAoIW1fYnVmZmVyLnNpemUoKSB8fCBt
X2J1ZmZlci5sYXN0KCktPnNpemUoKSA9PSBCbG9ja1NpemUpCi0gICAgICAgICAgICAgICAgbV9i
dWZmZXIuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCkpOworICAgICAgICAgICAgICAg
IG1fYnVmZmVyLmFwcGVuZChtYWtlVW5pcXVlPEJsb2NrPigpKTsKICAgICAgICAgICAgIHNpemVf
dCBhcHBlbmRTaXplID0gc3RkOjptaW4oQmxvY2tTaXplIC0gbV9idWZmZXIubGFzdCgpLT5zaXpl
KCksIHNpemUpOwogICAgICAgICAgICAgbV9idWZmZXIubGFzdCgpLT5hcHBlbmQoZGF0YSwgYXBw
ZW5kU2l6ZSk7CiAgICAgICAgICAgICBkYXRhICs9IGFwcGVuZFNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCmlu
ZGV4IDczZTlkZmVjMDZmZDc4N2YzYjA2YjNkYzlkYTY1YTU1MDRkMWMwMjkuLjY1OTEyNTFiODYy
N2RmMzZjZjJlYjlmNzQ3OTNlZjQ4OWNhMWU5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZVJlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCkBAIC0zMywxMSAr
MzMsMTggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBVbmlx
dWVSZWY7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+Ci1VbmlxdWVSZWY8
VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVl
UmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKIHsKICAgICByZXR1cm4g
VW5pcXVlUmVmPFQ+KCpuZXcgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KK1VuaXF1ZVJlZjxUPiBtYWtlVW5p
cXVlUmVmKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PHR5cGVuYW1lIFQ6Ol9fZmFzdEFsbG9jYXRlZENsYXNzLCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFQ+KHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBVbmlxdWVS
ZWYgewogcHVibGljOgpAQCAtNjMsNyArNzAsNyBAQCBjbGFzcyBVbmlxdWVSZWYgewogICAgIHN0
ZDo6dW5pcXVlX3B0cjxUPiBtb3ZlVG9VbmlxdWVQdHIoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVm
KTsgfQogCiBwcml2YXRlOgotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZy
aWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOworICAgIHRlbXBsYXRl
PGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBV
PiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5pcXVlUmVmKFQmIG90aGVyKQpAQCAt
NzksMyArODYsNCBAQCBjbGFzcyBVbmlxdWVSZWYgewogCiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsK
IHVzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZjsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxv
b3BHTGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCmluZGV4IDVl
NWJhOGFiZWJkYmQ0OWJiYjgzN2RkNGM0ZmQ2OWJkNmZmYzM2MWYuLmZiMjExZDBhMjk2MWRmYzE2
YWE2ZTIxYTIxYTk3NGRmZjE1MjY5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
UnVuTG9vcEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMg
ZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBnX3NvdXJjZV9zZXRf
bmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKICAg
ICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190
aW1lKCkgKyBkdXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGF0
Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBnX3NvdXJjZV9zZXRfY2Fs
bGJhY2soc291cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQoc3Rh
dGljX2Nhc3Q8RGlzcGF0Y2hBZnRlckNvbnRleHQqPih1c2VyRGF0YSkpOwogICAgICAgICBjb250
ZXh0LT5kaXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZGNiYTA2
MDgyYzVmNjZlMzE5YTE1ZWU1OTdmYzY0OTc2NmIwNWU2Yy4uNWJmNGU2ZDAxZGU4NDNlZDI4Nzg4
M2VhM2EwM2U4NDk0OTNiZWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0x
NzksNyArMTc5LDcgQEAgY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0
b3I6OkltcGwgewogfTsKIAogU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6
Okl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQot
ICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmll
dy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJy
ZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykp
LCBpbmRleCkpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJp
bmdWaWV3LmlzTnVsbCgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdW
aWV3KSksIGluZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZl
c3RQYXJzZXIuY3BwCmluZGV4IGZkYjhjZTI5MmQ3MzhkYTQyMDM4YWE5NjVhZjNhY2ExNzhhODBj
ZWIuLjhkYzc2ZmEyZTU5ZWE2N2UwMjE3MzhjMzExYTM1NzdmNGQzNmU2OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1h
bmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
dm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFByb3BlcnR5SW52YWxp
ZFVSTChjb25zdCBTdHJpbmcmIHByb3AKIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6
bG9nRGV2ZWxvcGVyV2FybmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1f
Y29uc29sZUNvbnRleHQpCi0gICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNz
YWdlU291cmNlOjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZl
bDo6V2FybmluZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3Ms
IG1fbWFuaWZlc3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVzc2FnZSkpKTsKKyAgICAgICAgbV9j
b25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBKU0M6Ok1lc3NhZ2VUeXBl
OjpMb2csIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJQYXJzaW5nIGFw
cGxpY2F0aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5zdHJpbmcoKSwgIjogIl9zLCBt
ZXNzYWdlKSkpOwogfQogCiBVUkwgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VTdGFy
dFVSTChjb25zdCBKU09OOjpPYmplY3QmIG1hbmlmZXN0LCBjb25zdCBVUkwmIGRvY3VtZW50VVJM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVh
Y29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5j
cHAKaW5kZXggOWJmYTVmOTQ5OTRiMDU0NTA2YjgyNmEzMTRiODI1ODI3ZWE0MWFkYi4uN2U0Zjc5
NDcxZTJjNTlmZTcxYzE0ODEzMmY0YjU1MWQ4ZmZjNzkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC01Miw3ICs1Miw3IEBA
IE5hdmlnYXRvckJlYWNvbiogTmF2aWdhdG9yQmVhY29uOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdh
dG9yKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JCZWFj
b24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmln
YXRvcik7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAg
ICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01XaW5kb3dDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01X
aW5kb3dDYWNoZXMuY3BwCmluZGV4IDVlZDFmNWNjYTY0MWViMDRlYzBlMGEwY2UwNmM4MzcyNDU2
OGEyZmYuLjYxNTM5NDMwZGZiOTYxNmZkMjg4ZmVkOTJjYjk0NGZmNDQ2YjAxMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgRE9NV2luZG93Q2FjaGVzKiBET01XaW5kb3dDYWNoZXM6OmZyb20oRE9NV2lu
ZG93KiB3aW5kb3cpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdp
bmRvd0NhY2hlcyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5k
b3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dv
cmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcAppbmRleCAwNjU2YmVmMGIxNzE4ZTMzZGJjN2ZhMGVl
NjBjNTdkNDhlMzhkNGU4Li41MTE4YTQ4ODUwZjI0MmQwNDRkM2I0MGZmMGUzYjIzYmI5NmUyOGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNj
b3BlQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckds
b2JhbFNjb3BlQ2FjaGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBXb3JrZXJHbG9iYWxTY29wZUNh
Y2hlcyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20oV29ya2VyR2xvYmFsU2NvcGUmIHNj
b3BlKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlcyo+KFN1cHBsZW1lbnQ8V29ya2VyR2xvYmFsU2NvcGU+Ojpmcm9tKCZzY29wZSwg
c3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVz
PihzY29wZSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXM+KHNjb3BlKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JD
cmVkZW50aWFscy5jcHAKaW5kZXggNzFmNDM4Y2Y3ODZjNzZkN2I1ODcyMTU1OTc2NjhiNjIzNjFi
NTk5My4uMTE4MWJkOTg1YTIyYmE0OTNmODM2MzFkN2U0MWZlZTg3OWI1NmIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JD
cmVkZW50aWFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFu
YWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTmF2aWdh
dG9yQ3JlZGVudGlhbHMqIE5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKE5hdmlnYXRvciogbmF2
aWdhdG9yKQogewogICAgIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8TmF2aWdhdG9yQ3JlZGVudGlhbHMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yQ3Jl
ZGVudGlhbHM+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2
aWdhdG9yQ3JlZGVudGlhbHM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCBi
NmZkNjhkNjcyZWRlMzg3NzhjMTVjNmZlYWFmNDZiNDU1ZTVhMWNkLi43NWVkYjZhOTM2Mzg4MGU1
ODdjMzU3NTZiMTRkZWM5ZjliNDVlNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTEzMyw3
ICsxMzMsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgICAgICBhdXRvIHN5c3RlbUlE
ID0gSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVrU3lzdGVtSUQodmll
dywgb2Zmc2V0KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAg
ICAgICAgIGlmIChzeXN0ZW1JRCA9PSBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6OmZhaXJQ
bGF5U3lzdGVtSUQoKSkgewotICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gc3RkOjptYWtlX3Vu
aXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CisgICAgICAgICAgICBhdXRvIGZw
c1Bzc2ggPSBtYWtlVW5pcXVlPElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveD4oKTsKICAgICAg
ICAgICAgIGlmICghZnBzUHNzaC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBwc3NoQm94ZXMuYXBwZW5kKFdURk1v
dmUoZnBzUHNzaCkpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRh
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oc3lzdGVtSUQpOwogI2VuZGlmCi0gICAgICAg
IGF1dG8gcHNzaEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94PigpOworICAgICAgICBhdXRvIHBzc2hCb3ggPSBtYWtlVW5pcXVlPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKICAgICAgICAgaWYgKCFwc3NoQm94
LT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmNwcAppbmRleCA4MjYyODkzZmUwYWY5OTkxNGVkMzllOTYwY2YxMGE3
NTM0MDcwNWI2Li44MzdkZjEyM2FlNTk2ZjM1MzdjOTE1MjcwM2UzZDI3MWIzNDZlYjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHAKQEAgLTYxLDE1ICs2MSwxNSBAQCBzdHJ1Y3QgQ0RNRmFjdG9yeSB7
CiBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCkKIHsK
ICAgICBzdGF0aWMgYXV0byBjZG1zID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxDRE1GYWN0
b3J5Kj4gewotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCisg
ICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5p
cXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKICAgICAgICAgICAgIExlZ2Fj
eUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeUNETVByaXZhdGVD
bGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICAgICAgICAgLy8gRklY
TUU6IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkz
MTgsIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtd
KExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRp
YVBsYXllcj4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBj
ZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LAog
ICAgICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RN
UHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogI2lm
IChIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pIHx8IEhBVkUoQVZTVFJFQU1TRVNTSU9OKSkgJiYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RN
KiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQz4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2RtKTsg
fSwKICAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5
U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbUFu
ZE1pbWVUeXBlKSwKICNlbmRpZgogICAgIH0pOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE0+IExlZ2FjeUNETTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKQogICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE0+KGtl
eVN5c3RlbSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNPihrZXlTeXN0ZW0pOwog
fQogCiBMZWdhY3lDRE06OkxlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNLmgKaW5kZXggNDU4ZWM1M2I0MzM3YjE3MTA1NTZmOGExN2I0ZWYwMWVmY2UxNTY0ZS4u
ZmI1ZGExZjE2ZGEwMmVjODRjMzQ3N2QzNTVmZTBhNWU4OTY0MDZhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RN
LmgKQEAgLTUwLDcgKzUwLDggQEAgY2xhc3MgTGVnYWN5Q0RNQ2xpZW50IHsKICAgICB2aXJ0dWFs
IFJlZlB0cjxNZWRpYVBsYXllcj4gY2RtTWVkaWFQbGF5ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29u
c3QgPSAwOwogfTsKIAotY2xhc3MgTGVnYWN5Q0RNIHsKK2NsYXNzIExlZ2FjeUNETSBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVn
YWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggYzkzMTZkZmQ4YWJiNDA1NDkyZjU1NWVi
M2QxYjNkMDkxN2NlZmY1MC4uM2E4YzAwZjUyMzFmNTJhNmU4OWQxODNkMTUxMWMzYWM4NzczYTFm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lD
RE1TZXNzaW9uPiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENETVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1T
ZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKaW5kZXggNjYwMmViZmU5MDQ0NWM1NTkzYzZlNWZm
OGYxYTViMmUyZGQ5MmMxNy4uY2ZiMDI2YzIwMmRhNmZlMDlmYzhkY2I0NGZmYmJhY2I4YTlkYzky
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgK
QEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwog
CiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIgOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFj
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
Q0RNUHJpdmF0ZU1lZGlhUGxheWVyKExlZ2FjeUNETSogY2RtKQogICAgICAgICA6IG1fY2RtKGNk
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMmY3
YjAzNTM5ZWY4ZWE0NzRlMjM2ZDA1ZDllMTdmZWM0ODRlNjI3ZS4uYmM3NzdmMGNiYzhjZTdiODll
OTQzYjhhNjNlNGU2ZTgyODliMzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vz
c2lvbkNsZWFyS2V5LmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBDRE1TZXNzaW9uQ2xlYXJLZXkgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7Citj
bGFzcyBDRE1TZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkNs
ZWFyS2V5KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
Q2xlYXJLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKaW5kZXggYWRkYzU0ODk2YjhhNDQzOGNmYmZkMDY1ODBhZGJjODYwYTgxZjg2NC4u
ZGI2MzkwZTdmOTkyNTk3N2I4N2NhMDA5ZWRhYmQ1MWNkYjY2NzMzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI0NCw3ICsyNDQs
NyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRj
aEJvZHlDb25zdW1lciogY29uc3VtZXIpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyLmVtcGxh
Y2UoKnRoaXMpOwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
ZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOworICAgIG1fYmxvYkxvYWRlci0+
bG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIp
OwogCiAgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGJsb2IpOwogICAgIGlmICghbV9ibG9iTG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApp
bmRleCBjZDM0NWViOWVjMzQwYzM2ZTBmMGE2ZWVkODJkZDk4OGI0Zjk3ZDM5Li45NDAxM2NmNGVh
NjUyMzhkODNiOWI0YzgxZGI3ZDE4MTY1MzI0NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNo
UmVxdWVzdCYgcmVxdWVzdAogCiAgICAgcmVzcG9uc2UtPmFkZEFib3J0U3RlcHMocmVxdWVzdC5z
aWduYWwoKSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxCb2R5TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNrKSk7
CisgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG1ha2VVbmlxdWU8Qm9keUxvYWRlcj4ocmVz
cG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwogICAgIGlmICghcmVzcG9u
c2UtPm1fYm9keUxvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3Bv
bnNlLT5tX2JvZHlMb2FkZXIgPSBudWxscHRyOwogfQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCiAKIGJvb2wgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRo
aXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7CisgICAgbV9sb2FkZXIgPSBtYWtl
VW5pcXVlPEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigp
KTsKICAgICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIG1f
bG9hZGVyLT5pc1N0YXJ0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAppbmRleCA2MTAyMDg5OWNiYzRhN2U0MzNiMTUx
ZGNjYWViZmU5MDc2NGQzZTJkLi44NTBkMjJkZTI4NWJiMzM1ZDIyZThjMmUyNTNiN2FiNmUwYzYw
MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9y
R2FtZXBhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRv
ckdhbWVwYWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvckdhbWVwYWQqIE5hdmlnYXRv
ckdhbWVwYWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2Ft
ZXBhZCogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdhbWVwYWQqPihTdXBwbGVt
ZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOwogICAgICAgICBzdXBwbGVtZW50ID0g
bmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxl
bWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IGIwOWZjMzQzM2JiZmJiNzI4ZjMxNWMxNTMzYTZmMmM5ZTRmYzAwNzEu
LmNkODA3MGIyMDdkYjhhMzQ0MDI2Y2ZmNjEwNWI4NWVlMTliYzUyNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFn
ZSogcGFnZSwgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQocGFnZSk7
Ci0gICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvbkNvbnRy
b2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8o
cGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVl
PEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCBiMzRmNDlhNjcxZDg1
ZjUxNDJiOGJhZjBmNTJiYTk5MWFjNDM1OWRjLi4zNWRmYmY4ZjNmMjU2OWMwMTM1MzU2NjMwMGY1
Yjc4MzdkZTI4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCBO
YXZpZ2F0b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20oTmF2aWdhdG9y
JiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxOYXZpZ2F0b3JHZW9sb2NhdGlvbio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6
ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50
KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdh
dG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdp
bmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYzcyMDNhOWE4NjQwOTcwNTBkM2RjMDA3OTJm
N2E2YjU4MWZhYTI1ZS4uNWU5ZDk3OTY2YmZkZTU4ZTY2MDk5YTUwOWU2MThiODRjMThkMDVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9E
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKERPTVdpbmRvdyog
d2luZG93KQogewogICAgIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93
Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5k
b3dJbmRleGVkRGF0YWJhc2U+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRv
dywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CmluZGV4IGY0MzA5MGM0ZGNjM2VkZTVlMjdkMWFhNDQzODQ0NDdkODQ5YzY0MGIuLjlhNzgxMjc4
NDYzZWQwYTRhMGFkZGQzZjdkYjBjNTY1Njk2MmI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTUxNyw3ICs1MTcs
NyBAQCBFeGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmRleCcgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIHNwZWNpZmllZCBpbmRleCB3YXMgbm90IGZvdW5kLiJfcyB9Owog
Ci0gICAgYXV0byBpbmRleCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBpbmRleCA9IG1ha2VVbmlx
dWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CiAK
ICAgICBSZWY8SURCSW5kZXg+IHJlZmVyZW5jZWRJbmRleCB7ICppbmRleCB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggZmEyY2Q3ZWFkMDliNjA1NTI1YjhjYjQ0MWVmNzAwMWQ4MzM1MDEwMC4uNDIyNDNmYmE1NzMx
Mjk1NDE4ODk0YTMyMDQzZTg5ZTBiMmMxYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYgKCFpbmZvIHx8ICghZm91bmQgJiYgIWlz
VmVyc2lvbkNoYW5nZSgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJy
b3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3RvcmUnIG9uICdJREJUcmFuc2FjdGlvbic6
IFRoZSBzcGVjaWZpZWQgb2JqZWN0IHN0b3JlIHdhcyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBh
dXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBhdXRvIG9iamVjdFN0b3Jl
ID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
KmluZm8sICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdl
dCgpOwogICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmVOYW1lLCBX
VEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBSZWY8SURCT2JqZWN0
U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RT
dG9yZUluZm8mCiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNlZE9iamVjdFN0
b3JlTG9jayk7CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJP
YmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOworICAg
IGF1dG8gb2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUg
PSBvYmplY3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KGlu
Zm8ubmFtZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJP
YmplY3RTdG9yZSYgb2JqZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jcmVhdGVJbmRl
eE9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7CiAgICAgfSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9i
amVjdFN0b3JlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpjcmVhdGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2Nv
cGVJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGE0ODUwM2I0ZDJkODA0Mjk0Njg0YTY1YTY1ZWJk
NjRmMjMzY2Q3YjkuLjliNzU3NzQ5MjFiNDY1MDZmNTgzZGU3ZmVjNDI1MGU4NTRhY2U1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNj
b3BlSW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcg
QEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlOjpmcm9tKFdvcmtlckcKICAgICAgICAgaWYgKCFjb25uZWN0aW9uUHJveHkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihz
Y29wZSwgKmNvbm5lY3Rpb25Qcm94eSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVj
dGlvblByb3h5KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3Vw
cGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXgg
OTQ4Y2Y3NDY2M2FlNjljODJkYTQ0NGUwOTM0NzNkZDg1NmQ0ZGU5My4uMzc3MTFkYzEwM2RiNmM5
YTliODEzZGJjOWRmNzk5YjdlMjZhNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gSURCQ29u
bmVjdGlvblRvU2VydmVyOjpjcmVhdGUoSURCQ29ubmVjdGlvblRvU2VydmVyRGUKIAogSURCQ29u
bmVjdGlvblRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIoSURCQ29ubmVjdGlvblRvU2Vy
dmVyRGVsZWdhdGUmIGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShtYWtlV2Vha1B0cihkZWxl
Z2F0ZSkpCi0gICAgLCBtX3Byb3h5KHN0ZDo6bWFrZV91bmlxdWU8SURCQ29ubmVjdGlvblByb3h5
PigqdGhpcykpCisgICAgLCBtX3Byb3h5KG1ha2VVbmlxdWU8SURCQ29ubmVjdGlvblByb3h5Pigq
dGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDI3NTNm
ZDBjMjQ1N2I5YzA5ZDlkODllNGY3NjJiNDc5ZjhiNDQwYjEuLjhlMWRlMDZkNzFlOGYwYjIyM2Q2
ODZlNWUxYThhMjIwOWI3NDM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApA
QCAtNDIsNyArNDIsNyBAQCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRp
b24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChtX2luZGV4
SWRlbnRpZmllcikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1ZXN0LnJlcXVlc3Rl
ZEluZGV4UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0LnBlbmRp
bmdDdXJzb3IoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7Cisg
ICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlm
aWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCiAgICAgbV9pZGJSZXF1ZXN0ID0g
JnJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGY2YWI0ZjNhYjJjMjhiMGVlMjI0Njg5NGEwZGU1
ODRiZDA4NzUxZmQuLmY1NTY4ZTMyNWQzNzAxMWEyNzVlMDFkZjk2NmRmZGY1OTUyZThiMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVW5pcXVlSURCRGF0YWJhc2UmIElEQlNlcnZl
cjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW4KIAog
ICAgIGF1dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLmFkZChp
ZGVudGlmaWVyLCBudWxscHRyKTsKICAgICBpZiAodW5pcXVlSURCRGF0YWJhc2UuaXNOZXdFbnRy
eSkKLSAgICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworICAgICAgICB1
bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFVuaXF1ZUlEQkRh
dGFiYXNlPigqdGhpcywgaWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gKnVuaXF1ZUlEQkRhdGFi
YXNlLml0ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJ
REJEYXRhYmFzZQogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9z
ZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdT
dG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJ
REJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0
b3J5UGF0aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcik7CiB9CiAKIHZvaWQg
SURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
KQpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgSURCU2VydmVyOjpRdW90YVVzZXI6OmluaXRpYWxp
emVTcGFjZVVzZWQodWludDY0X3Qgc3BhY2VVc2VkKQogSURCU2VydmVyOjpRdW90YVVzZXImIElE
QlNlcnZlcjo6ZW5zdXJlUXVvdGFVc2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewog
ICAgIHJldHVybiAqbV9xdW90YVVzZXJzLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAmb3JpZ2luXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVv
dGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmln
aW4gfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVv
dGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmln
aW4gfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3Bw
CmluZGV4IDY5ODNjOWQ3ZWFmZjU2MTY3MjA0ZDk1MmYxZjIyNjdiYjQwY2E0YmEuLjhkOTIxZDhl
ZmU2YmE4NDBhMzBkNjFkZmRjNmE3MjFlODI4YTQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3Bw
CkBAIC05Miw3ICs5Miw3IEBAIElEQkVycm9yIEluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKGNv
bnN0IElEQktleURhdGEmIGluZGV4S2V5LCBjb25zdCBJREJLZXlEYXRhCiAgICAgICAgIHJldHVy
biBJREJFcnJvcihDb25zdHJhaW50RXJyb3IpOwogCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRl
eFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZUVudHJ5PihtX3VuaXF1ZSk7CiAKICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5hZGRLZXkodmFsdWVLZXkpOwogICAgIG1fb3JkZXJlZEtleXMuaW5zZXJ0
KGluZGV4S2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDQ3Y2M0MmZkMjZkNjQ3M2M2NDE5MjdlOTkyZDRlYzZlOGQ3YmY4ZWUuLjVlNzE0
NDk3ODRhMGRhMDc2Nzc4OWE4ZGVkYzUyMjY4OWY0ZDhkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3Bh
Y2UgSURCU2VydmVyIHsKIAogc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uPiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6Y3JlYXRlKE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8p
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7CiB9CiAKIE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihN
ZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJiBpbmZvKQpAQCAtNTIsNyArNTIsNyBAQCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oTWVtb3J5SURCQmFja2luZ1N0bwogICAg
ICAgICBJREJEYXRhYmFzZUluZm8gaW5mbzsKICAgICAgICAgYXV0byBlcnJvciA9IG1fYmFja2lu
Z1N0b3JlLmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGluZm8pOwogICAgICAgICBpZiAoZXJy
b3IuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgICAgICAgICAgbV9vcmlnaW5h
bERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICB9
CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdAogCiAgICAg
YXV0byBvcmlnaW5hbEFkZFJlc3VsdCA9IG1fb3JpZ2luYWxWYWx1ZXMuYWRkKCZvYmplY3RTdG9y
ZSwgbnVsbHB0cik7CiAgICAgaWYgKG9yaWdpbmFsQWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+KCk7CiAKICAgICBhdXRvKiBtYXAgPSBvcmlnaW5h
bEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggN2QxNDJiMDA1MGFiNjA4ODFlMzg3YmU4YzE5ODk0N2FjNmU4ZGQ4
MS4uY2ZmZTMzMzdmNzk0NDhiOGMyMTNkYmJlNWZhMzViNGQzYTcwZjJmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHVpbnQ2NF90
IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsKIAogc3RkOjp1bmlxdWVf
cHRyPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIH0K
IAogTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURC
RGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtNjEsNyArNjEsNyBAQCBNZW1vcnlJ
REJCYWNraW5nU3RvcmU6On5NZW1vcnlJREJCYWNraW5nU3RvcmUoKSA9IGRlZmF1bHQ7CiBJREJF
cnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElE
QkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VJbmZvKQotICAgICAg
ICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lk
ZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDAp
OwogCiAgICAgaW5mbyA9ICptX2RhdGFiYXNlSW5mbzsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9
OwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJh
c2VJbmZvKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbykKICAgICAvLyBJdCBpcyBub3QgdmFs
aWQgdG8gZGlyZWN0bHkgc2V0IGRhdGFiYXNlIGluZm8gb24gYSBiYWNraW5nIHN0b3JlIHRoYXQg
aGFzbid0IGFscmVhZHkgc2V0IGl0cyBvd24gZGF0YWJhc2UgaW5mby4KICAgICBBU1NFUlQobV9k
YXRhYmFzZUluZm8pOwogCi0gICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oaW5mbyk7CiB9CiAKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlu
ZGV4LmNwcAppbmRleCA0OWRkY2E2YmQ0MGQyOWQ0MmUzOGI4NTEzMWM4OWZkZmU3ZDQ3OTJkLi44
NTk1ZGJiOGY0YTdlZTNkMTkxZTMxZmI2MTBiMDQ5NzViODc0NjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAK
QEAgLTE5NCw3ICsxOTQsNyBAQCBJREJFcnJvciBNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkoY29u
c3QgSURCS2V5RGF0YSYgdmFsdWVLZXksIGNvbnN0IEluZGV4S2V5JiBpbgogICAgIExPRyhJbmRl
eGVkREIsICJNZW1vcnlJbmRleDo6cHJvdmlzaW9uYWxQdXRJbmRleEtleSIpOwogCiAgICAgaWYg
KCFtX3JlY29yZHMpIHsKLSAgICAgICAgbV9yZWNvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRl
eFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUoKSk7CisgICAgICAgIG1fcmVjb3JkcyA9IG1ha2VV
bmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOwogICAgICAgICBub3RpZnlD
dXJzb3JzT2ZBbGxSZWNvcmRzQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBA
IE1lbW9yeUluZGV4Q3Vyc29yKiBNZW1vcnlJbmRleDo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1lbW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7
CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuY3BwCmluZGV4IGVkNmViYTkyN2YxZjRmNmI5YzMwNjhmNmI1ZDg4ZGUyOTk3
MjY3ZWIuLjViNDRhNzM4NzhjOWZkZDdhMWUwNWE5NWI3NjU3ZWJlNjM2MzUxNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMjU5LDggKzI1OSw4IEBAIElEQkVycm9yIE1lbW9yeU9i
amVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uCiAKICAgICBpZiAoIW1fa2V5VmFsdWVTdG9yZSkgewogICAgICAgICBBU1NFUlQoIW1f
b3JkZXJlZEtleXMpOwotICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PEtleVZhbHVlTWFwPigpOwotICAgICAgICBtX29yZGVyZWRLZXlzID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJLZXlEYXRhU2V0PigpOworICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBtYWtlVW5pcXVl
PEtleVZhbHVlTWFwPigpOworICAgICAgICBtX29yZGVyZWRLZXlzID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8SURCS2V5RGF0YVNldD4oKTsKICAgICB9CiAKICAgICBhdXRvIG1h
cFJlc3VsdCA9IG1fa2V5VmFsdWVTdG9yZS0+c2V0KGtleURhdGEsIHZhbHVlLmRhdGEoKSk7CkBA
IC00OTcsNyArNDk3LDcgQEAgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IqIE1lbW9yeU9iamVjdFN0
b3JlOjptYXliZU9wZW5DdXJzb3IoY29uc3QgSURCQ3Vyc29ySW5mbyYKICAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigq
dGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVt
b3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0aGlzLCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cAppbmRleCA0ZjIwOGU0ZDA2MDRiODc3ZGQxZDc0ODY3YjhlM2UyODcyN2FjMDQ0Li42ZTg5M2Y5
ODQ0ZTcwOGVkMTk3MmI0YTJjMThiMTU5ZmE3MGI1OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFs
CiAgICAgfQogCiAgICAgLy8gVGhpcyBpbml0aWFsIGRhdGFiYXNlIGluZm8gbWF0Y2hlcyB0aGUg
ZGVmYXVsdCB2YWx1ZXMgd2UganVzdCBwdXQgaW50byB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIu
ZGF0YWJhc2VOYW1lKCksIDApOworICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdE
YXRhYmFzZUluZm8oKQpAQCAtNjU4LDcgKzY1OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJ
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGRhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7Cisg
ICAgYXV0byBkYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJh
c2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOwogCiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1l
bnQgc3FsKCptX3NxbGl0ZURCLCAiU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jLCBt
YXhJbmRleElEIEZST00gT2JqZWN0U3RvcmVJbmZvOyJfcyk7CkBAIC04MjAsNyArODIwLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5m
byhJREJEYXRhYmFzZUluZm8mIGluZm8KIAogICAgIFN0cmluZyBkYkZpbGVuYW1lID0gZnVsbERh
dGFiYXNlUGF0aCgpOwogCi0gICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRl
RGF0YWJhc2U+KCk7CisgICAgbV9zcWxpdGVEQiA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+
KCk7CiAgICAgaWYgKCFtX3NxbGl0ZURCLT5vcGVuKGRiRmlsZW5hbWUpKSB7CiAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRi
RmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKQEAgLTkw
MywxMSArOTAzLDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFu
c2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZXN0YWJsaXNoIHRyYW5zYWN0aW9u
IGlkZW50aWZpZXIgdGhhdCBhbHJlYWR5IGV4aXN0cyJfcyB9OwogICAgIH0KIAotICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0
aW9uPigqdGhpcywgaW5mbyk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rpb24+KCp0aGlzLCBpbmZvKTsKIAogICAgIGF1dG8gZXJy
b3IgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5iZWdpbigqbV9zcWxpdGVEQik7CiAgICAg
aWYgKGVycm9yLmlzTnVsbCgpICYmIGluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6
VmVyc2lvbmNoYW5nZSkgewotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVy
c2lvbkNoYW5nZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFz
ZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5n
ZSA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8pOwogCiAgICAg
ICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsICJVUERBVEUgSURCRGF0YWJhc2VJ
bmZvIFNFVCB2YWx1ZSA9ID8gd2hlcmUga2V5ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKICAg
ICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC0yNjExLDcgKzI2MTEsNyBA
QCBTUUxpdGVTdGF0ZW1lbnQqIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50
KFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6UwogICAgIH0KIAogICAgIGlmIChtX3NxbGl0ZURCKSB7
Ci0gICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0g
c3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQp
OworICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9
IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKICAg
ICAgICAgaWYgKG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldLT5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0
YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKaW5kZXggZjg0MDVhNzk4YTM2ODEwZGM1NzZhZjFlNzNiY2FmNTMxMDIzN2JhZi4uYzZi
M2ZkOTUzYTBkNTNhYzE1NjhlMjg0OGNiYzc4YTEyZjE5NTc1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0
ID0gODsKIAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29y
OjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8pOworICAgIGF1dG8gY3Vyc29yID0g
bWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKIAogICAgIGlm
ICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC01OSw3ICs1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0
ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3RpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5n
U3RvcmVDdXJzb3IoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50
NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCB1aW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIHJhbmdlKQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxT
UUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5n
ZSk7CisgICAgYXV0byBjdXJzb3IgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNh
Y3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIHJhbmdlKTsKIAogICAgIGlmICghY3Vyc29y
LT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTks
NyArMTk5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChj
b25zdCBTdHJpbmcmIHNxbCkKICAgICBBU1NFUlQoIW1fY3VycmVudFVwcGVyS2V5LmlzTnVsbCgp
KTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKSk7CiAKLSAg
ICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5z
YWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOworICAgIG1fc3Rh
dGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0
ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7CiAKICAgICBpZiAobV9zdGF0ZW1lbnQt
PnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
Y3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKHByZXBhcmUvaWQpIC0gJyVzJyIsIG1fdHJhbnNhY3Rp
b24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwpAQCAt
NDY0LDcgKzQ2NCw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vy
c29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFs
dWUpCi0gICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwg
YmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1
ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0
YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJpbWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGls
ZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7CkBAIC00ODYsNyArNDg2LDcgQEAgU1FMaXRlSURC
Q3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVj
b3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAg
ICAgICAgICAgIG9iamVjdFN0b3JlU3RhdGVtZW50LmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBr
ZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0
YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZh
bHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8v
IFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBT
a2lwIG92ZXIgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBhNmEzYzVm
ZmYzMzgwYzI1ZWY3MzYxZTY4OGJlZjM2YzA2MTVmYzgzLi5kMjEyZGUyYjZiODhhZmZlMGEzNWIw
ZmQwZmQzM2ZjODY3Y2VjYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKFNRTGl0
ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24p
OwogCi0gICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJh
bnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6
UmVhZG9ubHkpOworICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRy
YW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6
OlJlYWRvbmx5KTsKICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgaWYg
KG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCmluZGV4IDFlYmMwODE4Zjg5ZWYzZjc2YjQ2YjI3ZGU3NGYzMWNjYzNlNDZjY2YuLmJlNTkx
Yjk4ODQwZWRhZDY0ODBhZjBjNDFiN2M4ZTkyYzVmMTJhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERl
bGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBkZWxldGVkVmVyc2lvbikKICAgICAvLyB3ZSB3b24n
dCBoYXZlIGEgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mby4gSW4gdGhhdCBjYXNlLCB3
ZSdsbCBtYW51ZmFjdHVyZSBvbmUgdXNpbmcgdGhlCiAgICAgLy8gcGFzc2VkIGluIGRlbGV0ZWRW
ZXJzaW9uIGFyZ3VtZW50LgogICAgIGlmICghbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5m
bykKLSAgICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0
ZWRWZXJzaW9uKTsKKyAgICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRl
bGV0ZWRWZXJzaW9uKTsKIAogICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0KSB7CiAgICAg
ICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPm5vdGlmeURpZERlbGV0ZURhdGFiYXNlKCptX21v
c3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5m
byYgaW5mbywgY29uc3QgSQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIp
OwogICAgIAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGluZm8pOwogICAgIG1fYmFja2luZ1N0b3JlT3BlbkVycm9yID0gZXJyb3I7CiAKICAg
ICBBU1NFUlQobV9pc09wZW5pbmdCYWNraW5nU3RvcmUpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5n
ZURhdGFiYXNlQ29ubmVjdGlvbiB8fCAmbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmRhdGFi
YXNlQ29ubmVjdGlvbigpID09IG1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CiAg
ICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFz
ZUluZm8oKSk7Ci0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFz
ZUluZm8oKSk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8o
KSk7CiAgICAgfQogCiAgICAgSURCRXJyb3IgcmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkg
PT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2Fj
dGlvbi0+cmVzdWx0KCkgOiBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcAppbmRleCBhZjkyZWJjNjM2ODg1YzY5YzI1ZTUwMjk5Y2U2YzRhY2VhYTY1
OWM4Li5lNGQ2NjlkYThhYzYyOTE2ZjdiY2UwMzI4MDlhNTU5ZTg1M2NjODJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC01MSw3ICs1MSw3IEBA
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKIAogICAgIGlm
IChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9u
Y2hhbmdlKQotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOworICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZv
KCkpOwogCiAgICAgYXV0byYgc2VydmVyID0gZGF0YWJhc2UtPnNlcnZlcigpOwogICAgIG1fc2Vy
dmVyID0gbWFrZVdlYWtQdHIoc2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCmluZGV4IGIxMGQ4
NDA5OWIyNTI4ZTZmNzNjMjhiMTUwNGE4YTkzMjRkMGIyMWEuLjIxNjQxNmFmYTExY2YyNTVkMzZk
ZWZiM2VmZjM2ZWZhZjE5NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoKQogCiBJREJSZXF1ZXN0RGF0YTo6
SURCUmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5l
Y3Rpb25Qcm94eSwgY29uc3QgSURCT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvblByb3h5LnNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQorICAgICwg
bV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29u
bmVjdGlvblByb3h5LCByZXF1ZXN0KSkKICAgICAsIG1fZGF0YWJhc2VJZGVudGlmaWVyKHJlcXVl
c3QuZGF0YWJhc2VJZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3RlZFZlcnNpb24ocmVxdWVz
dC52ZXJzaW9uKCkpCiAgICAgLCBtX3JlcXVlc3RUeXBlKHJlcXVlc3QucmVxdWVzdFR5cGUoKSkK
QEAgLTQ5LDggKzQ5LDggQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHIKIAogSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbikKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIob3BlcmF0aW9uLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5jb25uZWN0aW9uUHJveHkoKS5zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCi0gICAgLCBtX3Ry
YW5zYWN0aW9uSWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmll
cj4ob3BlcmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAsIG1fcmVxdWVzdElk
ZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVu
dGlmaWVyKCkpKQorICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCiAg
ICAgLCBtX29iamVjdFN0b3JlSWRlbnRpZmllcihvcGVyYXRpb24ub2JqZWN0U3RvcmVJZGVudGlm
aWVyKCkpCiAgICAgLCBtX2luZGV4SWRlbnRpZmllcihvcGVyYXRpb24uaW5kZXhJZGVudGlmaWVy
KCkpCiB7CkBAIC01OCw3ICs1OCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIG1faW5k
ZXhSZWNvcmRUeXBlID0gb3BlcmF0aW9uLmluZGV4UmVjb3JkVHlwZSgpOwogCiAgICAgaWYgKG9w
ZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNv
cklkZW50aWZpZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CiB9
CiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
b3RoZXIpCkBAIC03MSwxMSArNzEsMTEgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRh
KGNvbnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKICAgICAsIG1fcmVxdWVzdFR5cGUob3RoZXIu
bV9yZXF1ZXN0VHlwZSkKIHsKICAgICBpZiAob3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAg
ICAgICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVxdWVz
dElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1f
cmVxdWVzdElkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmll
cikKLSAgICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAg
ICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIu
bV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmll
cik7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiB0aGF0LCBJc29sYXRlZENv
cHlUYWcpCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCB2b2lkIElEQlJlcXVlc3REYXRhOjppc29sYXRl
ZENvcHkoY29uc3QgSURCUmVxdWVzdERhdGEmIHNvdXJjZSwgSURCUmVxdWVzdERhdGEmCiAgICAg
ICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJZGVudGlmaWVyID0gc291cmNlLm1fZGF0YWJhc2VJ
ZGVudGlmaWVyLT5pc29sYXRlZENvcHkoKTsKIAogICAgIGlmIChzb3VyY2UubV9yZXF1ZXN0SWRl
bnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50
aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7
CiAgICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgZGVzdGlu
YXRpb24ubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291
cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAg
IGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlm
IChzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNv
cklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNv
dXJjZS5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1
cnNvcklkZW50aWZpZXIpOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0RGF0YTo6c2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA0NWNmZmFlYTYw
M2E1M2I1OTkwNGM4YjE0YjdhMWRlZjdkMjVmMzEwLi40MDhiNGU0NjI4NzMzN2I5YWMzNDRhZmJm
NDY5MTU4NjhlODBmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGJv
b2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3JlcXVlc3RJZGVudGlmaWVyID0gV1RGTW92
ZShvYmplY3QpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
aGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVx
dWVzdC5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE3NCw3
ICsxNzQsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmpl
Y3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9jdXJzb3JJZGVudGlm
aWVyID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCmluZGV4IGE4OTQ1NGU2ZTYz
ZjZlYjdjYjUwMzhiOWM5MzJmYTIxODYzM2VkYzYuLjRjYmQ1ZDliZGYwYTg1MjNiZjdmNTJhYzVi
YzVjYjRiN2VkMTA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBJ
REJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIG90aGVyKQog
ICAgICwgbV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKIHsKICAgICBpZiAo
b3RoZXIubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CisgICAgICAg
IG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2Rh
dGFiYXNlSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBt
X3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigq
b3RoZXIubV90cmFuc2FjdGlvbkluZm8pOworICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IG1h
a2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOwog
ICAgIGlmIChvdGhlci5tX3Jlc3VsdEtleSkKLSAgICAgICAgbV9yZXN1bHRLZXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtleSk7CisgICAgICAgIG1fcmVz
dWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOwogICAg
IGlmIChvdGhlci5tX2dldFJlc3VsdCkKLSAgICAgICAgbV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKKyAgICAgICAgbV9nZXRS
ZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKICAg
ICBpZiAob3RoZXIubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7Cisg
ICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhl
ci5tX2dldEFsbFJlc3VsdCk7CiB9CiAKIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29u
c3QgSURCUmVzdWx0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtODcsMTUgKzg3LDE1
IEBAIHZvaWQgSURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlc3VsdERhdGEm
IHNvdXJjZSwgSURCUmVzdWx0RGF0YSYgZGVzCiAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRJbnRl
Z2VyID0gc291cmNlLm1fcmVzdWx0SW50ZWdlcjsKIAogICAgIGlmIChzb3VyY2UubV9kYXRhYmFz
ZUluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNl
SW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUluZm8g
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURC
RGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlv
bkluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElE
QlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90
cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJjZS5t
X3RyYW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwogICAg
IGlmIChzb3VyY2UubV9yZXN1bHRLZXkpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJL
ZXlEYXRhOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9
IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6
SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fZ2V0UmVzdWx0KQotICAgICAgICBkZXN0
aW5hdGlvbi5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqc291
cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2Uu
bV9nZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNl
Lm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJ
REJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0
QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxS
ZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogSURCUmVzdWx0RGF0
YSBJREJSZXN1bHREYXRhOjplcnJvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCkBAIC0xMTEsNyArMTExLDcgQEAg
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmUKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVl
c3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5E
YXRhYmFzZVN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCkt
PmluZm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERh
dGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQog
ICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1
bHQubV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZDsKICAg
ICByZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uZGF0
YWJhc2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFz
ZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOwotICAgIHJlc3VsdC5tX3RyYW5zYWN0
aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlv
bi5pbmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0
YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5p
bmZvKCkpOworICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJh
bnNhY3Rpb25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7SURCUmVzdWx0
VHlwZTo6RGVsZXRlRGF0YWJhc2VTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJl
c3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihp
bmZvKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTcxLDIxICsxNzEsMjEg
QEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpyZW5hbWVJbmRleFN1Y2Nlc3MoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXEKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6
cHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsKICAgICBJREJSZXN1bHREYXRh
IHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OlB1dE9yQWRkU3VjY2VzcywgcmVxdWVzdElkZW50aWZp
ZXIgfTsKLSAgICByZXN1bHQubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURh
dGE+KHJlc3VsdEtleSk7CisgICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJL
ZXlEYXRhPihyZXN1bHRLZXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERh
dGEgSURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkK
IHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1
Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0
UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRz
U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBJREJHZXRBbGxSZXN1bHQmIGdldEFsbFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRh
IHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzLCByZXF1ZXN0SWRl
bnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldEFsbFJlc3Vs
dCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTIwNCwxNCArMjA0LDE0IEBAIElEQlJlc3VsdERhdGEgSURCUmVz
dWx0RGF0YTo6ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJl
c3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0
VHlwZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0
Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7
CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHRE
YXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJ
REJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNz
LCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3Vs
dCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDcxN2IzZTJkZTUzYjM1M2ZlYjZkZDc1NTAwYTBl
NWU2OGM5NDdhM2YuLjYyMDYyYTFlMjk1ZjdiNTk4MTU4OTViNTdiZWMwMDhlNWIxODc2YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1
bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBk
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3Qg
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAg
IHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE5Myw3ICsxOTMs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJS
ZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFz
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0
KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV90cmFuc2FjdGlvbklu
Zm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERl
Y29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKTsKKyAgICAgICAgYXV0byBvYmpl
Y3QgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElEQktleURh
dGE+IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAo
IW9wdGlvbmFsKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQkdldFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2Jq
ZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5t
X2dldFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAg
IGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CisgICAg
ICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgICAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
VHJhbnNhY3Rpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCmluZGV4IDk4M2MxYzExYzk5YjQ1YjZjZTU0NGRm
Y2FjMDM3ZTRjNzM3Mjk1YzMuLjRmYjk5OTE5ZjY3ZDVmN2M5YWJjMTA5ZTJlMzAwMGNjZTRjNDQw
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJUcmFuc2FjdGlvbkluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCkBAIC01NSw3ICs1NSw3IEBAIElEQlRy
YW5zYWN0aW9uSW5mbyBJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UoY29uc3QgSURC
U2VydmVyOjpJREJDb25uZWN0CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIHJlc3VsdCgoSURCUmVz
b3VyY2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pKSk7CiAgICAgcmVzdWx0Lm1fbW9kZSA9IElEQlRy
YW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZTsKICAgICByZXN1bHQubV9uZXdWZXJzaW9uID0g
bmV3VmVyc2lvbjsKLSAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CisgICAgcmVz
dWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
b3JpZ2luYWxEYXRhYmFzZUluZm8pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3LDcg
KzY3LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICwgbV9vYmplY3RTdG9yZXMoaW5mby5tX29iamVj
dFN0b3JlcykKIHsKICAgICBpZiAoaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAg
ICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxE
YXRhYmFzZUluZm8pOwogfQogCiBJREJUcmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0aW9uSW5m
byhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTkx
LDcgKzkxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkluZm86Omlzb2xhdGVkQ29weShjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mIHNvdXJjZSwgSURCVHJhbnMKICAgICAgICAgZGVzdGluYXRpb24u
bV9vYmplY3RTdG9yZXMudW5jaGVja2VkQXBwZW5kKG9iamVjdFN0b3JlLmlzb2xhdGVkQ29weSgp
KTsKIAogICAgIGlmIChzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgZGVz
dGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5m
bzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNl
SW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogI2lmICFMT0df
RElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAppbmRleCA5MzBkODAyMzYxODIzMmFiZjZj
MDgxZGYyMTI5NThmZjYyYTU1NWVkLi43Yjk0NzdlOGVjNTU0YzkxM2QyYTQ4YmU1NThlMTYzM2Q5
M2ZjZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCkBAIC0xMTksNyArMTE5LDcgQEAgYm9v
bCBJREJUcmFuc2FjdGlvbkluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJUcmFuc2Fj
dGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNPYmpl
Y3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZv
PigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBXVEZN
b3ZlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDg3YjFhZGNkOTY2
NjIwNmVjOTcxNjYwMzYyYjQwZTVhZDdkODAxZDEuLmM5Njg5NDQ0ZmQyMjQwMmNlZDIxMTNiM2Jm
YTBiOWE1MjZjNjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblBy
b2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikK
IHsKICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1
b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CiAg
ICAgICAgIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9O
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5kZXggZjg3MjU3NGU4NWMyNDA4NzcyYjFk
MTFhMmU4YmNiNmRkNjBkYTI5Ny4uYTMxYmFkYjU0YWM5ODFlMGUzYmFkYWZlMjA5ODc4MjlkM2Y3
NDAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGll
cy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMmIE5hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG8KIHsKICAgICBOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGll
cz4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllcz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CmluZGV4IDUwZDBiYjBiMWVkNTNhNDMyNDU4ZDlmYjcxMzU3MGFlMGVjYTBkMDYuLmI5NzQzNGM0
ZTYyNDVkNzNjY2YyZDYyNWEwYTFiMDNlMTI5MGNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlj
a2VyKCkKIHsKICAgICBpZiAoIW1fcGlja2VyT3ZlcnJpZGUpCi0gICAgICAgIG1fcGlja2VyT3Zl
cnJpZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigq
dGhpcyk7CisgICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fcGlja2VyT3ZlcnJp
ZGUuZ2V0KCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdWludDY0X3QgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWEK
IAogICAgIExPRyhNZWRpYSwgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFy
Z2V0UGlja2VyQ2xpZW50KCVwICsgJWxsdSkiLCAmY2xpZW50LCBjb250ZXh0SWQpOwogCi0gICAg
bV9jbGllbnRTdGF0ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50
LCBjb250ZXh0SWQpKTsKKyAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVu
dFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJh
dGlvblRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcAppbmRleCBkNDE3YTEyMTY5MTExMjE1ZDU0MjI5MWUwM2M1OWQ1ZDZlN2Vi
M2Y0Li43Y2JjNmExMzM1MWUwZDMyY2UyNTVhOWJhZGNiOTc0NGRhZjRkNDQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAt
MTc4LDkgKzE3OCw5IEBAIE1lZGlhVGltZSBNZWRpYVNvdXJjZTo6Y3VycmVudFRpbWUoKSBjb25z
dAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZl
cmVkKCkgY29uc3QKIHsKICAgICBpZiAobV9idWZmZXJlZCAmJiBtX2FjdGl2ZVNvdXJjZUJ1ZmZl
cnMtPmxlbmd0aCgpICYmIHN0ZDo6YWxsX29mKG1fYWN0aXZlU291cmNlQnVmZmVycy0+YmVnaW4o
KSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5lbmQoKSwgW10oYXV0byYgYnVmZmVyKSB7IHJldHVy
biAhYnVmZmVyLT5pc0J1ZmZlcmVkRGlydHkoKTsgfSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAotICAgIG1f
YnVmZmVyZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBt
X2J1ZmZlcmVkID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgZm9yIChh
dXRvJiBzb3VyY2VCdWZmZXIgOiAqbV9hY3RpdmVTb3VyY2VCdWZmZXJzKQogICAgICAgICBzb3Vy
Y2VCdWZmZXItPnNldEJ1ZmZlcmVkRGlydHkoZmFsc2UpOwogCkBAIC0xOTAsNyArMTkwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVk
KCkgY29uc3QKIAogICAgIC8vIDEuIElmIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMubGVuZ3RoIGVxdWFs
cyAwIHRoZW4gcmV0dXJuIGFuIGVtcHR5IFRpbWVSYW5nZXMgb2JqZWN0IGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KICAgICBpZiAoYWN0aXZlUmFuZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwog
CiAgICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5lZCBieSBi
dWZmZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJjZUJ1ZmZl
cnMuCiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3QgcmFuZ2Ug
ZW5kIHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29u
c3QKIAogICAgIC8vIFJldHVybiBhbiBlbXB0eSByYW5nZSBpZiBhbGwgcmFuZ2VzIGFyZSBlbXB0
eS4KICAgICBpZiAoIWhpZ2hlc3RFbmRUaW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyA0LiBM
ZXQgaW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmlu
ZyBhIHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBtX2J1ZmZl
cmVkLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBoaWdoZXN0RW5kVGltZSk7CkBAIC0yMjEs
NyArMjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3Vy
Y2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChz
b3VyY2VSYW5nZXMpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzZWVr
VG9UaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0
LCBkb3VibGUgZW5kKQogCiAgICAgLy8gU2V0IGxpdmUgc2Vla2FibGUgcmFuZ2UgdG8gYmUgYSBu
ZXcgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdl
CiAgICAgLy8gd2hvc2Ugc3RhcnQgcG9zaXRpb24gaXMgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBp
cyBlbmQuCi0gICAgbV9saXZlU2Vla2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKGVuZCkpOworICAgIG1fbGl2ZVNlZWthYmxlID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1l
ZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5jcHAKaW5kZXggZTQxODI3ODM4ZDYyY2EzOGZjM2JmM2JlNzhmOGY0
YWE4YWU1MjU5Ni4uN2IzNThmNWUwZGU0MmZiMjI2OGQzNjkwM2U1OGRiNWViNzhlOTBkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApAQCAtNTEsNyArNTEsNyBAQCBOYXZpZ2F0b3JNZWRpYURl
dmljZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxO
YXZpZ2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdh
dG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZp
Y2VzPihuYXZpZ2F0b3ItPndpbmRvdygpKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
bWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKaW5kZXggOGQ3ZTYzY2M2MDZkNmRhMTlmYmRiMTJk
ZTU0ZmI4NTVmZGY2MmM5OS4uMTRkZjExNjFkYWU2OGNjNDZjYjQ5ZWFhZTIxZjVlZjk4OWUyYWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFVzZXJNZWRpYUNvbnRy
b2xsZXI6On5Vc2VyTWVkaWFDb250cm9sbGVyKCkKIAogdm9pZCBwcm92aWRlVXNlck1lZGlhVG8o
UGFnZSogcGFnZSwgVXNlck1lZGlhQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgVXNlck1lZGlhQ29u
dHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7Cisg
ICAgVXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xp
ZW50KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlY3VyZShEb2N1bWVudExvYWRlciYg
ZG9jdW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCBhYWE0MDAwMjA3MzY1ZmZjYmU1MjgxMjhlMjhjZTAyZjZjNjA3
Y2RkLi5jOTg1YmMxOWEzMWQwMTE0NTY1YWJhYmE1ZjA2MGVlNTBkYTYxMTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IExpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjo6Y2hhbm5lbEV2ZW50KFNjcmlwdEV4ZWN1dGkKICAgICBpbml0Lm5lZ290aWF0ZWQgPSBk
YXRhQ2hhbm5lbC0+bmVnb3RpYXRlZCgpOwogICAgIGluaXQuaWQgPSBkYXRhQ2hhbm5lbC0+aWQo
KTsKIAotICAgIGF1dG8gaGFuZGxlciA9ICBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOworICAgIGF1dG8gaGFuZGxlciA9
ICBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hh
bm5lbCkpOwogICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoY29udGV4
dCwgV1RGTW92ZShoYW5kbGVyKSwgZnJvbVN0ZFN0cmluZyhsYWJlbCksIFdURk1vdmUoaW5pdCkp
OwogCiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZGF0YWNoYW5uZWxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vLCBXVEZNb3ZlKGNoYW5uZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKaW5kZXggNDViZjRhOTNkMjUwMGZlODlhM2ViZTc3ZWMxY2Q4ZWRlMTA1
YTJmOS4uNzI2MmQxODJjNTI3YzM1MGJhZjQ4MWY0YzY0ZGI5NmY4YjU5MWY5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTM5Myw3ICszOTMsNyBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+
c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4o
V1RGTW92ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+c2V0QmFja2VuZChtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsK
ICAgICBhdXRvJiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwogICAgIGFkZFBlbmRpbmdUcmFj
a0V2ZW50KHJlY2VpdmVyLnJlbGVhc2VOb25OdWxsKCksIHRyYWNrLCBydGNTdHJlYW1zLCBudWxs
cHRyKTsKIH0KQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNvbGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFu
c2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4o
V1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlx
dWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVy
KSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiB9CiAKQEAgLTQ5NSw3ICs0OTUs
NyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zYwogICAgIGlmICghc291cmNlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKIAogICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KG1ha2VSZWYobmV3VHJhbnNjZWl2
ZXIucmVjZWl2ZXIoKSksIG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkudHJhY2soKSwgcnRjUmVj
ZWl2ZXItPnN0cmVhbXMoKSwgbWFrZVJlZihuZXdUcmFuc2NlaXZlcikpOwogfQpAQCAtNTMwLDcg
KzUzMCw3IEBAIE9wdGlvbmFsPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzPiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVUcmFuc2NlCiAgICAgaWYgKCFyZXN1bHQub2soKSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1v
dmVWYWx1ZSgpKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CiAgICAgcmV0dXJuIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzIHsgdHJhbnNjZWl2ZXItPmNyZWF0ZVNlbmRl
ckJhY2tlbmQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQsIFdURk1vdmUoc291cmNlKSksIHRyYW5z
Y2VpdmVyLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikgfTsK
IH0KIApAQCAtNTgxLDcgKzU4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQ+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnRyYW5zY2VpCiB7CiAgICAg
Zm9yIChhdXRvJiB0cmFuc2NlaXZlciA6IG1fYmFja2VuZC0+R2V0VHJhbnNjZWl2ZXJzKCkpIHsK
ICAgICAgICAgaWYgKHRyYW5zY2VpdmVyLT5zZW5kZXIoKS5nZXQoKSA9PSBiYWNrZW5kLnJ0Y1Nl
bmRlcigpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2Nl
aXZlckludGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CiAgICAgfQogICAg
IHJldHVybiBudWxscHRyOwogfQpAQCAtNjUwLDcgKzY1MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
VENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFD
aGFubmVsCiB7CiAgICAgYXV0byBpbml0ID0gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpm
cm9tUlRDRGF0YUNoYW5uZWxJbml0KG9wdGlvbnMpOwogICAgIGF1dG8gY2hhbm5lbCA9IG1fYmFj
a2VuZC0+Q3JlYXRlRGF0YUNoYW5uZWwobGFiZWwudXRmOCgpLmRhdGEoKSwgJmluaXQpOwotICAg
IHJldHVybiBjaGFubmVsID8gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gY2hhbm5lbCA/
IG1ha2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwp
KSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hh
bm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0
YUNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcAppbmRleCAyMDdmMTVlNjQ1N2I5ZGZjYWMxYzMzOWVhMzlmZWExZDc3ODU5
ZDhiLi5mYzkxY2NkMGJiZDFmZGJiYTc2NDJlNzA0ZjM3ZmU4NWNjNzJmZDVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ+IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2UKIAogICAgIHBhZ2UtPmxpYldl
YlJUQ1Byb3ZpZGVyKCkuc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihwYWdlLT5zZXR0aW5ncygp
LndlYlJUQ0VuY3J5cHRpb25FbmFibGVkKCkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+
bGliV2ViUlRDUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlk
ZXIoKSk7CiB9CiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKQEAg
LTMxMSw3ICszMTEsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlZpZGVvUmVj
ZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aQogICAgIGF1dG8gc291cmNl
ID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0
cmFja0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNv
dXJjZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7
CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRy
YW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywg
eyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRy
KTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3Bl
ZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTMz
NCw3ICszMzQsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2
ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdQogICAgIGF1dG8gc291cmNlID0g
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFj
a0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJj
ZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJhdWRpbyJfcywgeyB9
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsK
ICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJD
b25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTQwMCw3
ICs0MDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRFeGlzdGlu
Z1NlbmRlcihjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFT
dHJlYW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5p
ZmllZFBsYW5FbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRy
YWNrKCpzZW5kZXJCYWNrZW5kLCB0cmFjaywgbWVkaWFTdHJlYW1JZHMpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsK
IApAQCAtNDM4LDcgKzQzOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyCiAgICAgICAgIGNv
bnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgpOwogICAgICAgICBTdHJpbmcgdHJh
Y2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIHNlbmRl
ckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0
aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGF1dG8g
bmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIG1ha2VSZWYodHJhY2spLCBW
ZWN0b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkp
OwogICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXIodHJhY2tLaW5kLCB0cmFj
a0lkKTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVh
dGUoV1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSwgbnVsbHB0cik7CkBAIC00
NzIsNyArNDcyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoU3RyaW5nIHsgdHJh
Y2tLaW5kIH0sIGluaXQpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0
byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigq
dGhpcywgbnVsbHB0cik7CiAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0
ZSgqdGhpcywgU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2Vu
ZGVyQmFja2VuZCkpOwogICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUo
bmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQp
OwogfQpAQCAtNDgyLDcgKzQ4Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZl
cj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBs
YW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFdU
Rk1vdmUodHJhY2spLCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8mIGJhY2tlbmQgPSAqc2VuZGVyQmFja2VuZDsK
ICAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCB0cmFjay5jb3B5
UmVmKCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIGlm
ICghbV9lbmRwb2ludC0+YWRkVHJhY2soYmFja2VuZCwgdHJhY2ssIFZlY3RvcjxTdHJpbmc+IHsg
fSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmlu
ZGV4IDY4NTBlNmE4NWU5MDI0YmIxMTQ1YjZiOTQyMjljMGY2MTQyZGY3YWEuLjZhZWVhMTMzODky
ZDIwNjNmMDM1MzliOGVlYzRkYjliY2U2NGQ3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJh
bWV0ZXJzJiBwYXJhbWUKIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2Vu
ZGVyLT5HZXREdG1mU2VuZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ0RU
TUZTZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKaW5kZXggZWI4NzFlYjdkYjAzODg0ZjRjYzdlMGFkZWY2
ODc4MmUxYzA5NzJkNy4uNWMwZDdlOTVlMmZkMTJlM2Y4NGYxN2NmYmViNmQ4NjdhNTFmMmU0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVy
LT5yZWNlaXZlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOwogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZCYgYmFja2VuZCwgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6U291cmNlJiYgc291cmNlKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+
KGJhY2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQs
IG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiBSVENS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRp
cmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDBjMzI4ZmFlNDQyMzU5OTI1MzMwNzJjODVk
NmIzMmZkYzZjMTM4MzguLjBlYmFmZjg5ZmZiYzUwMDNlMjQ2MWJhZGVlNTIwMzkxMTcxY2JkM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9uCiAg
ICAgLCBtX2JvZHkob3B0aW9ucy5ib2R5KQogICAgICwgbV90YWcob3B0aW9ucy50YWcpCiAgICAg
LCBtX3N0YXRlKElkbGUpCi0gICAgLCBtX3Rhc2tUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVy
PihbdGhpc10gKCkgeyBzaG93KCk7IH0pKQorICAgICwgbV90YXNrVGltZXIobWFrZVVuaXF1ZTxU
aW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKIHsKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5p
c0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBpY29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwo
b3B0aW9ucy5pY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBhNjIwMzUz
OTNjN2ZiM2Y2ZGRmMDFjNWM4OWQ3NGYzYjVlZGQyZDQ0Li5kNDhmMjA1YTllMjQxNGUwN2Q3MjJm
OTAzMjVhN2MzNjRkNDg5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIGNvbnN0IGNoYXIqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1l
bnROYW1lKCkKIAogdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNh
dGlvbkNsaWVudCogY2xpZW50KQogewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3Zp
ZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6
Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNs
aWVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCmluZGV4IDAzZmU5ZTM4Njc4ZjQwNTA3
MzI1NTA5YzIwMzg2N2M5Y2Y4MjBmZjEuLmM5OGM5OTg2ZGVkNmNkMjA1NDI2MTcyMTVmNjUzNmNl
NThmMjc5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2lu
ZG93UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIERPTVdpbmRvd1F1b3RhKiBET01XaW5kb3dRdW90
YTo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dRdW90YSogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1F1b3RhKj4oU3VwcGxlbWVudDxET01XaW5kb3c+
Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRv
d1F1b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PERPTVdpbmRvd1F1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDdiYTFkM2Q0
YjM2OTQ0MGM2NGUxN2RkMjBjYTk0NTM4YjhhZDliNzQuLjdhMDgwNDU5NTY5ODNhMzFmNmQ4MzRl
ZjdlYTc3MmZhNjY3MzZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVv
dGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdh
dG9yU3RvcmFnZVF1b3RhKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oTmF2aWdhdG9yKiBu
YXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpm
cm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRv
clN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBz
dXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VR
dW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0
b3JhZ2VRdW90YS5jcHAKaW5kZXggOTVjM2U0MzY0NzMxNjJhNTBkNjFiNWNlNzUxNjVlZTY4YjIx
YjcyNy4uMWExYzg0N2RjNDk3ZGM2NDg0NWY1NmVjZTU5MjYzYTQyNmFmNjMwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9y
U3RvcmFnZVF1b3RhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdl
UXVvdGEqIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3Iq
CiB7CiAgICAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZp
Z2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3Vw
cGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRv
dyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1l
bnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9E
T01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCAzNzk1NjUyNmZiZjI4NjkwZWNm
MDM5OTUyYzUyZjZlMDQ0NmJjYjRjLi45NjljMjM3ZjdjODE1NTE1M2RlMDcxZWM5NmE2MWE0YTQ2
MmQzZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgRE9NV2luZG93
U3BlZWNoU3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20oRE9NV2luZG93
KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzKj4oU3VwcGxlbWVudDxET01XaW5k
b3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2lu
ZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApp
bmRleCA3MmI1NjNlNGJiZjdkY2UwM2ZhMzA4ODBkMmZhNzcwYjg5ODY5M2E0Li5lN2I2MmExYTE3
YmQ5NmE5ZjVhMTNmZDA5ZTc0OWFiNGJjZTE5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9p
ZCBTcGVlY2hTeW50aGVzaXM6OnZvaWNlc0RpZENoYW5nZSgpCiBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyJiBTcGVlY2hTeW50aGVzaXM6OmVuc3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIo
KQogewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQotICAgICAgICBtX3Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI+KHRoaXMpOworICAgICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIg
PSBtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpOwogICAgIHJldHVy
biAqbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDYyZjY4
ZWM2NjNhODAyMTJjNmYzYWY3Yjg1ZTIzYzZiNGY3NDJhMGEuLjJmNTQyNzJhYzVjMDFkMGEyMzBl
NWMwZGYwNDUyNGFmYjJhNGUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQg
QXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0Rh
dGEsIGZsb2F0IHNhbXBsZVJhCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IGF1dG8gZGVjb2RpbmdUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1v
dmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spKTsKKyAgICBhdXRvIGRlY29kaW5nVGFzayA9IG1ha2VVbmlxdWU8
RGVjb2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CiAgICAgbV9xdWV1ZS5hcHBl
bmQoV1RGTW92ZShkZWNvZGluZ1Rhc2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUg
dGFzayBpcyBlZmZlY3RpdmVseSB0YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAppbmRleCBi
YzAwZWI5Zjg3ZDFiY2Q1OGNiZjc0OWI3ZGE3YzQ5M2NmN2U4ODc2Li5jZjkyNjljMzA0NGM0MzIy
ZDc0NGQwNjI5ZGRhMGZhODk0OTNlY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw4IEBAIGNsYXNz
IEF1ZGlvQnVmZmVyQ2FsbGJhY2s7CiAvLyBBc3luY0F1ZGlvRGVjb2RlciBhc3luY2hyb25vdXNs
eSBkZWNvZGVzIGF1ZGlvIGZpbGUgZGF0YSBmcm9tIGFuIEFycmF5QnVmZmVyIGluIGEgd29ya2Vy
IHRocmVhZC4KIC8vIFVwb24gc3VjY2Vzc2Z1bCBkZWNvZGluZywgYSBjb21wbGV0aW9uIGNhbGxi
YWNrIHdpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBkZWNvZGVkIFBDTSBkYXRhIGluIGFuIEF1ZGlv
QnVmZmVyLgogCi1jbGFzcyBBc3luY0F1ZGlvRGVjb2RlciB7CitjbGFzcyBBc3luY0F1ZGlvRGVj
b2RlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXN5bmNBdWRpb0RlY29kZXIpOwogcHVibGljOgogICAgIEFzeW5jQXVkaW9E
ZWNvZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IGJhOGMyNTVhZTdkN2RhNzNiYzlm
ZjY1NTQzZjFlMzdiYzk1NDA0YjMuLjBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2Uz
NDZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
YXNpY0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsK
ICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKLSAgICBhZGRJbnB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQp
KTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAg
YWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVs
Q291bnQpKTsKIH0KIAogLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpIGFzIGFuIG9wdGltaXph
dGlvbiBhbGxvd2luZyB0aGlzIG5vZGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW4tcGxhY2UgcHJv
Y2Vzc2luZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYmMxODljMDhjYmVmYzdjMTk2MDY0
NjZjMDc2OGI4ZmE2MzRiMTZhYi4uMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZlNzkwYWJmYmU2
ZTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQyLDggKzQyLDggQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlz
KSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAxKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwor
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAg
ICAgLy8gVGhlIHN1YmNsYXNzIG11c3QgY3JlYXRlIG1fcHJvY2Vzc29yLgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCmluZGV4IDQwYWMzMmM1YzU1YzNkMzJkMGUxNGI2YTdkMjJiMjQ2NzM5MGY0YmYuLjI1
MTBjNDBhN2Y2MTIzZDRjN2ZjMmQ2NDBhOTBiNGYwYTk4ZTZmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAKQEAgLTczLDcgKzczLDcgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNv
dXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGUKICAgICBtX3BsYXli
YWNrUmF0ZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicGxheWJhY2tSYXRlIiwgMS4w
LCAtTWF4UmF0ZSwgTWF4UmF0ZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIG1vbm8uICBBIGNhbGwg
dG8gc2V0QnVmZmVyKCkgd2lsbCBzZXQgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMgdG8g
dGhhdCBvZiB0aGUgYnVmZmVyLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5NTZjMTU4
NjIxODljNzE0MjljYmNmZDYwMDQyZjAwYzk4YmFlZjYuLmQ0Y2RiNzY1OGMwZjM1YjVmYzlhMjJj
ZTg5OGJjYjJiOTllZTRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5p
cXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1h
a2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUo
bWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAgIC8vIEFjY29yZGlu
ZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVyIHBhZ2UgbmF2aWdhdGUu
CiAgICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0
aXZpdHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCkBAIC0xNjYsNyArMTY2LDcgQEAg
QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVDb250ZXh0
KHRydWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRl
KCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVu
dFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZl
bnRRdWV1ZT4oKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC00MzIsNyAr
NDMyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gQXVkaW9Db250ZXh0OjpjcmVh
dGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmUKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWNv
ZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVm
ZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4mJiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICghbV9hdWRpb0RlY29kZXIpCi0gICAgICAg
IG1fYXVkaW9EZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsK
KyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigp
OwogICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0YSksIHNh
bXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA5NzU4ODc1NDc0N2UxNTI0ODE4OWY0OTcw
YzZkMzNlM2M2YWUxZTExLi5kOWFiYjk3NzdhOWQyNWVlYWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYQogICAgICwgbV9tdXRlZChmYWxzZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURl
c3RpbmF0aW9uKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykp
OwogfQogCiBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUu
Y3BwCmluZGV4IDE2MzczY2U5Mzc4ZDMyMmZkZDljMjUzZjljNzZkOTYzZTYxM2NkM2IuLjRhODI1
NWU2ZjBhZjA3NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzksNyAr
MzksNyBAQCBCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVh
ZEZpbHRlcik7CiAKICAgICAvLyBJbml0aWFsbHkgc2V0dXAgYXMgbG93cGFzcyBmaWx0ZXIuCi0g
ICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4
dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2UpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxC
aXF1YWRQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKIH0KIAogQmlx
dWFkRmlsdGVyVHlwZSBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCAw
ZTRlMzY4NWI4MmNlNDc3ZWM0ZTU4NTQ3ZjE2YWQ4YjcwZmM3OTA0Li5lODRiOTgwMzU2NzBmYjFk
Y2MzMjcwOTY2M2QyYjM5MDU1MmU2NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEJpcXVh
ZFByb2Nlc3Nvcjo6fkJpcXVhZFByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RT
UEtlcm5lbD4gQmlxdWFkUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6
OmNoZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlx
dWFkUHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lSZXNwb25zZShpbnQgbkZyZXF1ZW5jaWVzLCBjb25z
dCBmbG9hdCogZnJlcXVlCiAgICAgLy8gdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgcHJv
Y2Vzc2luZyBydW5uaW5nIGluIHRoZSBhdWRpbwogICAgIC8vIHRocmVhZCBvbiB0aGUgbWFpbiBr
ZXJuZWxzLgogICAgIAotICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgYXV0byByZXNwb25zZUtlcm5lbCA9IG1ha2VV
bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIAogICAgIHJlc3BvbnNlS2VybmVsLT5nZXRG
cmVxdWVuY3lSZXNwb25zZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5jeUh6LCBtYWdSZXNwb25zZSwg
cGhhc2VSZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IDIwYjhkYTE5ZTVmNDM5Y2ZlNTQ1NWYw
MWRjMjkwODc0NDZiMjNjMDguLmRmNTBmMjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMy
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1l
cmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bE1lcmdlck5vZGUuY3BwCkBAIC01OSw5ICs1OSw5IEBAIENoYW5uZWxNZXJnZXJOb2RlOjpDaGFu
bmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVu
CiAKICAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5wdXRzLgogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQotICAgICAgICBhZGRJ
bnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgICAgIGFk
ZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAotICAgIGFkZE91dHB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91
dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGlu
aXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDQ2MzU0OThjMDM0YzU5MzBiNGU4ZjIy
MDg2ZTE0YjJiNGJkMjkxMTcuLjgyZjY5YTA0Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkx
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNw
bGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIENoYW5uZWxTcGxpdHRlck5v
ZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwogCi0g
ICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAogICAgIC8vIENy
ZWF0ZSBhIGZpeGVkIG51bWJlciBvZiBvdXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11
bSBudW1iZXIgb2YgY2hhbm5lbHMgZmVkIHRvIGFuIGlucHV0KS4KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCi0gICAgICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgICAgICBhZGRPdXRw
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0
aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmNwcAppbmRleCAyMzgyZGFiY2M5Yzk5MjdjYWMzMWQzMjc1ZjIyMDNjYzhmNThh
MDkzLi5lMzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTUy
LDggKzUyLDggQEAgQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDb252
b2x2ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMp
KTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsK
IAogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFu
bmVsQ291bnQgPSAyOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZv
bHZlck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgLy8gQ3JlYXRl
IHRoZSByZXZlcmIgd2l0aCB0aGUgZ2l2ZW4gaW1wdWxzZSByZXNwb25zZS4KICAgICBib29sIHVz
ZUJhY2tncm91bmRUaHJlYWRzID0gIWNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCk7Ci0gICAg
YXV0byByZXZlcmIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBB
dWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tn
cm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CisgICAgYXV0byByZXZlcmIgPSBtYWtlVW5pcXVl
PFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFt
ZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CiAK
ICAgICB7CiAgICAgICAgIC8vIFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDQyNjVhMDA3NDll
YWZmZjZhOWUxYjlkMWRkYTYwZDRkYjcwMjhiMDMuLjgxYmQ3ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUx
ZjdjZTI1NTc4MDJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
bGF5Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2Rl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heEQKICAg
ICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAg
c2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRp
bWUpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4
dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPERl
bGF5Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggYTc1YmE2YjdjOTJlNzQ0
NGM2NTYwOGU4YWUxOGY5ZDUwMDAyNmEwNC4uMTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5
ZTZkMmFjYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGVsYXlQcm9jZXNzb3I6On5EZWxh
eVByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gRGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVs
YXlEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlbGF5RFNQS2VybmVs
Pih0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAK
aW5kZXggYWEwZTRhODAxMTllYmVkOWRkMzY5NmIzZmExMzA1ZGRmMzJiZDA1Mi4uMTQwOTZkOGYw
YzU5NmE1Mjk3MTY2NmVmODI2N2EwMjNmZGI0NGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBA
IC00Niw4ICs0Niw4IEBAIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Cisg
ICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgbV90aHJlc2hvbGQgPSBBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CiAgICAgbV9rbmVlID0g
QXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJrbmVlIiwgMzAsIDAsIDQwKTsKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7ICAgIAotICAgIG1fZHlu
YW1pY3NDb21wcmVzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNh
bXBsZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIG1fZHluYW1p
Y3NDb21wcmVzc29yID0gbWFrZVVuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUo
KSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogfQogCiB2b2lkIER5bmFtaWNzQ29t
cHJlc3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDZjOTRhNTIzYzNiMmEwMjEyYjJhNTRhMWE5YzhmMDI2
YmJkMWRiNWYuLjI1N2RmMmVjZTIzMzhjYmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC00Niw4ICs0
Niw4IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCiAKICAgICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImdh
aW4iLCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5jcHAKaW5kZXggMzgxYWU3Mjc5NGZiMGU3ZmVhNjMzMWFiZDMzYjIwYzE1ODQ1ZmY5Yi4u
OTEyZTZlYjIzMjE0NTY0M2Q2ZmRhZmJjMTFlOTY3NjRjM2QyZjVkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZSk7CiAKICAg
ICAvLyBEZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdo
YXQgdGhlIG1lZGlhIGVsZW1lbnQgLnNyYyBpcyBzZXQgdG8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7
CiB9CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpz
ZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAKICAgICAgICAg
aWYgKHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAgICAgICBkb3Vi
bGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgpOwotICAgICAg
ICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hh
bm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICAg
ICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2Ft
cGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gQnlwYXNzIHJlc2FtcGxpbmcuCiAgICAgICAgICAgICBtX211bHRpQ2hh
bm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4
IDViMmE1MDBkZDI5NGQxMDU1OGJjN2EwOGNmNzcxNmU0MjZiNWMyYWMuLmU0M2Y1NDQ4YmMyNmI4
NmFmNjkzZDAwOTk5NWM2NzM0ZjY5NTVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
CkBAIC01Niw3ICs1Niw3IEBAIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lCiAgICAgYXVkaW9Tb3Vy
Y2VQcm92aWRlci0+c2V0Q2xpZW50KHRoaXMpOwogICAgIAogICAgIC8vIERlZmF1bHQgdG8gc3Rl
cmVvLiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIGZvcm1hdCBvZiB0aGUgTWVk
aWFTdHJlYW0ncyBhdWRpbyB0cmFjay4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UKICAgICAgICAgbV9tdWx0aUNoYW5uZWxS
ZXNhbXBsZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAgICBkb3VibGUgc2NhbGVGYWN0
b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZTsKLSAgICAgICAgbV9tdWx0aUNoYW5u
ZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2Nh
bGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2Ft
cGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVt
YmVyT2ZDaGFubmVscyk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0g
bnVtYmVyT2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggNWI1MDI5YmZiY2U3N2FkNWI2YzNjODgzMjYwZGI5
ZGVmZGY2MTA0Yi4uYTk5Y2VhYWQ2YjVjMjFlMDlkZDIyNTNjMmFjZjMwNDU1NDc1M2U3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXRUeXBlKG1fdHlwZSk7
CiAKICAgICAvLyBBbiBvc2NpbGxhdG9yIGlzIGFsd2F5cyBtb25vLgotICAgIGFkZE91dHB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5j
cHAKaW5kZXggZjY0NzQ2OWUyMzU1ZWIzYTBjMDliM2IwODUyYmZiZWM2ZTQ4ZDI4ZC4uNTFjNjk5
MTZmZmRlNzBmNWU2ODBhYTkyN2NlZmVmN2NhNzMyYzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFBhbm5l
ck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9u
J3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRh
dGFiYXNlLgogICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpj
cmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUo
KSk7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlz
KSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAyKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwor
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAg
ICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxD
b3VudCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bl
cmlvZGljV2F2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGlj
V2F2ZS5jcHAKaW5kZXggYmIyYTA3ZDIzNTRlYmFmOTRkMDA0NjVhNGI0MWQ4NjA1NTU5OTg2Yi4u
ZWM5YTE3YzRmNTZlYjk5NjZkYzE3NjI3ZTkzNDA1YmExZmQ0OGM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcApAQCAtMTkyLDcgKzE5
Miw3IEBAIHZvaWQgUGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyhjb25zdCBm
bG9hdCogcmVhbERhdGEsIGNvbnN0IGZsb2F0KiBpCiAgICAgICAgIHJlYWxQWzBdID0gMDsKIAog
ICAgICAgICAvLyBDcmVhdGUgdGhlIGJhbmQtbGltaXRlZCB0YWJsZS4KLSAgICAgICAgbV9iYW5k
TGltaXRlZFRhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1f
cGVyaW9kaWNXYXZlU2l6ZSkpOworICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZCht
YWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CiAKICAgICAg
ICAgLy8gQXBwbHkgYW4gaW52ZXJzZSBGRlQgdG8gZ2VuZXJhdGUgdGhlIHRpbWUtZG9tYWluIHRh
YmxlIGRhdGEuCiAgICAgICAgIGZsb2F0KiBkYXRhID0gbV9iYW5kTGltaXRlZFRhYmxlc1tyYW5n
ZUluZGV4XS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggM2I2MjgxZDFlODQzZWQyOTljZjYxNTNjNzMy
Nzk3MDc0MTgwNjc3OC4uODAyMzczNDA3Zjc1ZDQ3ZTI1OWViNjA1NjM4MGY2MzVmMTNhY2VmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5h
bHlzZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5h
bHlzZXIoKQogICAgICwgbV9taW5EZWNpYmVscyhEZWZhdWx0TWluRGVjaWJlbHMpCiAgICAgLCBt
X21heERlY2liZWxzKERlZmF1bHRNYXhEZWNpYmVscykKIHsKLSAgICBtX2FuYWx5c2lzRnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CisgICAgbV9hbmFs
eXNpc0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOwogfQogCiBS
ZWFsdGltZUFuYWx5c2VyOjp+UmVhbHRpbWVBbmFseXNlcigpID0gZGVmYXVsdDsKQEAgLTgzLDcg
KzgzLDcgQEAgYm9vbCBSZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mZnRTaXplICE9IHNpemUpIHsKLSAg
ICAgICAgbV9hbmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7
CisgICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KHNpemUpOwog
ICAgICAgICAvLyBtX21hZ25pdHVkZUJ1ZmZlciBoYXMgc2l6ZSA9IGZmdFNpemUgLyAyIGJlY2F1
c2UgaXQgY29udGFpbnMgZmxvYXRzIHJlZHVjZWQgZnJvbSBjb21wbGV4IHZhbHVlcyBpbiBtX2Fu
YWx5c2lzRnJhbWUuCiAgICAgICAgIG1fbWFnbml0dWRlQnVmZmVyLmFsbG9jYXRlKHNpemUgLyAy
KTsKICAgICAgICAgbV9mZnRTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGQ1OWRlY2Y5
OTUxNmY2ZDAxYWY5YzFkOWZkYmYxZDBiMTAxOWU0MGYuLmQ1YjNhZmJmMjcxMDE0NTE0OTRiMTg5
Mzc3NjhiNjA1ZjZhM2I0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNjgsOCArNjgsOCBAQCBTY3Jp
cHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZQogICAgIEFTU0VSVChudW1iZXJPZklucHV0Q2hhbm5lbHMgPD0g
QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwogCiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVKYXZhU2NyaXB0KTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQo
bWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAg
ICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNDEwZDFkYWY1Yzg5NTQwMDlm
ZjA2MzZhODI5MDBiZjk0YWY0ZjhmMS4uZjNkMjEyMmRmNTFjNGYxYTI5MjI0ZTY5M2FiNDk1YmJj
MmI5MzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZl
U2hhcGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBXYXZlU2hh
cGVyRFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpCiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAogICAgIGlmICghbV90ZW1wQnVmZmVyKSB7Ci0gICAgICAgIG1fdGVt
cEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFu
dHVtICogMik7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwotICAgICAgICBtX3VwU2FtcGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKLSAgICAgICAg
bV9kb3duU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1
YW50dW0gKiAyKTsKLSAgICAgICAgbV91cFNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBz
dGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CisgICAg
ICAgIG1fdGVtcEJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdR
dWFudHVtICogMik7CisgICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAgICBtX3VwU2FtcGxlciA9IG1h
a2VVbmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKKyAgICAgICAgbV9kb3duU2Ft
cGxlciA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAg
ICAgICAgbV91cFNhbXBsZXIyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50
dW0gKiAyKTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVy
PihSZW5kZXJpbmdRdWFudHVtICogNCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDg0ODY5OTNmMjEw
ODRjY2M2MWNjZDgwYjJjMTg3ZTA4YzE1NWZkMDEuLjZlN2U4ZGQxYzljMTlmYTNjODVlM2Q5ZDg1
NWFiOWY0NTc4NWI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFdhdmVTaGFwZXJOb2RlOjpX
YXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsKICAgICBzZXROb2Rl
VHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3Vu
aXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CisgICAg
bV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2Ft
cGxlUmF0ZSgpLCAxKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4
IDI4OWMzOWY1ZjNmOWY3YTc5ZTlhNWI2YTZkODMxNWI1OTFmNDMyZGEuLmJmZTVlMGU0N2ZiODRh
MjhjNjNjNmUyOGIzMmUwZmMxMWU1YzY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtNDYsNyArNDYs
NyBAQCBXYXZlU2hhcGVyUHJvY2Vzc29yOjp+V2F2ZVNoYXBlclByb2Nlc3NvcigpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVs
Pih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlz
KTsKIH0KIAogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkq
IGN1cnZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggYjFjNDlkYjUyM2I5MzZiMGE0ZWMyMjEw
NDFiNzdkYTdjYzE0NzhmZC4uMjBkNjA2OTcyNDI4OTczNzc5ODJiODRlZTczZDRkYTYzNGVkOGZj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiB1c2luZyBDcmVkZW50aWFsUHJvbWlzZSA9IERP
TVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8QmFzaWNDcmVkZW50aWFs
Pj4+OwogCiBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKaW5kZXggOGMzZDEzNDZjNDAzMGNmYjNkODI3NzM3YTBh
MTVmM2YxY2I5YmFkNy4uMWI5MTJkOThkOWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQyZmFmMzU3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRN
ZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b0hpZE1lc3NhZ2UuY3BwCkBAIC0xNTAsOSArMTUwLDkgQEAgRmlkb0hpZE1lc3NhZ2U6OkZpZG9I
aWRNZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwg
Y28KICAgICB1aW50OF90IHNlcXVlbmNlID0gMDsKIAogICAgIHNpemVfdCBwb3MgPSBkYXRhLnNp
emUoKSA+IGtIaWRJbml0UGFja2V0RGF0YVNpemUgPyBrSGlkSW5pdFBhY2tldERhdGFTaXplIDog
ZGF0YS5zaXplKCk7Ci0gICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9I
aWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBk
YXRhLnNpemUoKSkpOworICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkSW5p
dFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5z
aXplKCkpKTsKICAgICBmb3IgKDsgcG9zIDwgZGF0YS5zaXplKCk7IHBvcyArPSBrSGlkQ29udGlu
dWF0aW9uUGFja2V0RGF0YVNpemUpCi0gICAgICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyss
IGdldENvbnRpbnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOworICAgICAgICBtX3BhY2tl
dHMuYXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElk
LCBzZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKIH0K
IAogRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlk
SW5pdFBhY2tldD4gaW5pdFBhY2tldCwgc2l6ZV90IHJlbWFpbmluZ1NpemUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAK
aW5kZXggNTViN2IyZDcxNTM2YTIzNTQ5MTNhZTM2ZTlmYjkxZWYwMGE4ZjA4My4uMjZiODBhYThh
NWYxMzk2M2M3NjhlN2U5MjNiYmFhYjJiODdiNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNzAsNyAr
NzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFj
a2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoYwogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1
aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBk
YXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tl
dD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwg
V1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCiAvLyBVMkYgSW5pdGlhbGl6YXRpb24g
cGFja2V0IGlzIGRlZmluZWQgYXM6CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNy
ZWF0ZUZyb20KICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFw
cGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBz
ZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENv
bnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9
CiAKIC8vIFUyRiBDb250aW51YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDAyMTQ1ZDBj
YzJlOGM5ZWFkYjBjODgyOTQxYjg1OWZjMGFlODA1MmQuLjViNjRhMDg3NDZhZjgwODBjZDJlNzI1
MDNmYTAwZDNjOTQ5ZmIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJh
c2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVzdWx0OwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91
bmlxdWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBz
eW5jaHJvbml6ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFz
ZU9wZW5UYXNrPigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwg
cmVzdWx0KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykp
OwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxEYXRh
YmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOworICAgIHRocmVhZC5zY2hlZHVs
ZUltbWVkaWF0ZVRhc2sobWFrZVVuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNo
cm9uaXplcikpOwogCiAgICAgLy8gRklYTUU6IGlPUyBkZXBlbmRzIG9uIHRoaXMgZnVuY3Rpb24g
YmxvY2tpbmcgdW50aWwgdGhlIGRhdGFiYXNlIGlzIGNsb3NlZCBhcyBwYXJ0CiAgICAgLy8gb2Yg
Y2xvc2luZyBhbGwgb3BlbiBkYXRhYmFzZXMgZnJvbSBhIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGly
YXRpb24gaGFuZGxlci4KQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVs
ZVRyYW5zYWN0aW9uKCkKICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7CiAKICAg
ICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwotICAg
IGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdU
Rk1vdmUodHJhbnNhY3Rpb24pKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNl
VHJhbnNhY3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiAgICAgTE9HKFN0b3JhZ2VB
UEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0cmFuc2FjdGlv
biAlcFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAgICAgZGF0YWJhc2VU
aHJlYWQoKS5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC01NDEsNyArNTQxLDcg
QEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQogewogICAgIGF1dG8mIHRocmVhZCA9IGRhdGFiYXNlVGhyZWFkKCk7CiAK
LSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNr
PigmdHJhbnNhY3Rpb24pOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFu
c2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVs
aW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxu
IiwgdGFzay5nZXQoKSk7CiAgICAgdGhyZWFkLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsK
IH0KQEAgLTc2Myw3ICs3NjMsNyBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1l
cygpCiAgICAgaWYgKHRocmVhZC50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsK
KyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlz
LCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFz
ayhXVEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9u
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5jcHAKaW5kZXggM2JhYmQ0OTU2NmYxNGExYjNjMGQzYjE3YmY0YzdmMzJjNWUz
ZDVmNy4uZDY0OTdjMzk3ZmE0NzQyODU5ZTA1ODYyMjM2ZWRlZTQzZDRlZjM5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VUaHJl
YWQ6OkRhdGFiYXNlVGhyZWFkKCkKLSAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihzdGQ6
Om1ha2VfdW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCisgICAgOiBtX3RyYW5z
YWN0aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigp
KQogewogICAgIG1fc2VsZlJlZiA9IHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDhkZGNjNTk4
NTUxNTc2ZDJhMmMxMGY0MmU0YWQxMmE4MjU5YjUxOS4uYzI4YTk2ZjQ1ODM5ZWY1NGRhZjFmOTlh
MWFkNThkN2VjZDRhNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQg
RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAg
IExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsK
IAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCi0gICAgICAgIG1fb3BlbkRhdGFiYXNlTWFw
ID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKKyAgICAgICAgbV9vcGVu
RGF0YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0
byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCkBAIC05NTYsNyArOTU2LDcg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6
ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdp
biBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nQ3JlYXRlZC5nZXQob3Jp
Z2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6
bWFrZV91bmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25l
ZFNldCA9IG1ha2VVbmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFt
ZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nQ3JlYXRlZC5hZGQob3JpZ2lu
Lmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAgfQpAQCAtMTAwMiw3ICsx
MDAyLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFz
aE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhl
IG9yaWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5n
ZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVk
U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVTZXQgPSBv
d25lZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi5pc29sYXRl
ZENvcHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCmluZGV4IDg1ZjFiNjM1YzNlNDli
M2ZlMWE4MWY5NDg3ODI0ODBlMWRlNDhmYjUuLjhhNTRhMzY2N2EwN2FhY2UwM2E5NjBmYjI1NjRm
N2ViZGYzYmQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxTdGF0ZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQ7CiBj
bGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ7CiAKIGNsYXNzIFNRTFN0YXRlbWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1FMU3RhdGVtZW50KERhdGFi
YXNlJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNRTFZhbHVlPiYmLCBSZWZQdHI8U1FMU3RhdGVt
ZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmLCBpbnQg
cGVybWlzc2lvbnMpOwogICAgIH5TUUxTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjBkNjk3
MzQ3NzRkYmZiZjMwYmQ4ZjM5Y2U0YzU5NTcyMTRlOTAwYy4uNGNiMDQxZTQ1MmM4MGY1ZjU5YmIy
NzIxZWFiOGVjMWE4ZjYxODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxT
dGF0ZW1lbnQsIE9wdGlvbmEKICAgICBlbHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJt
aXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8g
c3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNx
bFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAg
IGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNx
bFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOwogCiAg
ICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50LT5zZXREYXRh
YmFzZURlbGV0ZWRFcnJvcigpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rp
b246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAgICAgfQogCiAgICAgQVNTRVJUKCFt
X3NxbGl0ZVRyYW5zYWN0aW9uKTsKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwg
bV9yZWFkT25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRl
VHJhbnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOwog
CiAgICAgbV9kYXRhYmFzZS0+cmVzZXREZWxldGVzKCk7CiAgICAgbV9kYXRhYmFzZS0+ZGlzYWJs
ZUF1dGhvcml6ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJp
dmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRy
aXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCmluZGV4IDc5YWE1NjE4MWZmZWYzYWIxYTkyYWE1
N2ZlY2RiNmZiYTU5ZTZmMGIuLjEyOWQ4NmZmY2ZiZDE1N2E4MGIwMTkyZTNiNDk5NzEzM2JlYjc4
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRv
cldlYkRyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2
aWdhdG9yV2ViRHJpdmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBOYXZpZ2F0b3JXZWJEcml2ZXIq
IE5hdmlnYXRvcldlYkRyaXZlcjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBO
YXZpZ2F0b3JXZWJEcml2ZXIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJE
cml2ZXIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOworICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKICAg
ICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVU
byhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRv
ckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3Bw
CmluZGV4IDg4YTk3ODA0NGJjMWU3MDg5MzM1NjVkYzYyZDBhMzE0NmIzOGI0MjYuLjM3NmQxNTVj
YTliMmY1ZDJhNGFiMTg1MmM3NzZkOWMxOGYyZTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBOYXZpZ2F0
b3JHUFUqIE5hdmlnYXRvckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBO
YXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHUFUqPihTdXBw
bGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAg
ICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8TmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1
cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgKaW5kZXggMWIzNDI1MDRkNjk1NTA4ZjA4MTZjY2I1NTgyZjVi
ZDlhYTc2MWE2Yi4uNWY1N2VmMTE3NzUzMWEwYWMzZDk2MGRlYjFkNDM4NzExYTRmMDViZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAg
Y2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAK
ICAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKICAgICB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1ha2VfdW5p
cXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51bWVyYXRp
b25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3
RW50cnk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcu
aAppbmRleCAwZTMxZmZiZGUwYjE0ODZmNmM2ZjY1ZTIwZWI2MzhhZTg4MWI4N2Y4Li5jYmNjNDg0
YjY4MjUwYzBhYTA5YjU5OTQzYWRjNzllODEwMDkyNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RW50cnlQb2ludFNjYWZmb2xkaW5nLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIE1ldGFs
IHsKIGNsYXNzIFR5cGVOYW1lcjsKIAogY2xhc3MgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbnRyeVBv
aW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRl
ci5jcHAKaW5kZXggY2EzNDZlMzJiMjk5YTEwY2VkMjU2NWQwMWQ4NTQ1M2JkODBkMTQ3NC4uNDdi
MDYwYTdjNWFhZmMzMmU4ODg3NWZmYzRhZjg5ODk2ODk2MjU3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHAKQEAgLTc2NCw5ICs3NjQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnlQb2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0
ZUVudAogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAg
ICAgfTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3Mu
dmVydGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywg
bV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywg
bV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMpOwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0
Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwg
bV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hh
ZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNv
dXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9t
YXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5p
dGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdt
ZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFk
ZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
KSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtNzkwLDcgKzc5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eVBvaW50U2NhZmZvbGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0
ZUVuCiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAg
ICB9OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5z
aGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVFbnRyeVBvaW50
U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1l
ciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNz
LnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGlu
Zz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNo
ZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VN
YXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggMTg1YmEwYjA4
OGE1Y2VkNGM1YjY2MzZmYTk0NDJjMDAzNDBkZDAyYS4uNDBiNjJjMzdkYmUyNTgwZTIzZDU5MGMw
OTFlYmI0MTdjYTliODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjcyLDE5ICsy
NzIsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3Jl
YXRlTmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICBzd2l0Y2ggKHVubmFtZWRUeXBl
LmtpbmQoKSkgewogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5j
ZTogewogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVm
ZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
ZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBl
UmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVm
ZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVS
ZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2Fz
dDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5h
bWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCks
IHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFt
ZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVy
ZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUp
OwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1l
Tm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUu
YWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVJlZmVyZW5j
ZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVy
ZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFT
VDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFy
cmF5VHlwZS5udW1FbGVtZW50cygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlU
eXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51
bUVsZW1lbnRzKCkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggMzMzYmRmNjJjMDI5ODY2YTc0OWEzYzYxMmU1
ZTRkYmExNmIyNmE3ZS4uYmRlZDUzZTE4YWZjOGE0ODE3NTgxZmEzYWRjMjI3ODU2ZWJkNDg5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwCkBAIC05NjYsMTQgKzk2NiwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKIAogdm9pZCBDaGVja2Vy
Ojphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNU
OjpVbm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90
YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlw
ZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RG
TW92ZSh1bm5hbWVkVHlwZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQo
JmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlw
ZSkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlv
bikpOwogfQogCiB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZh
bHVlKCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9u
LCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNz
aW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90
YXRpb24pKTsKIH0KQEAgLTk4MSwxMCArOTgxLDEwIEBAIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlw
ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
CiB2b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwg
UmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5u
b3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewogICAgIHJlc29sdmluZ1R5cGUudmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1h
a2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29s
dmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90
eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihy
ZXN1bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFk
ZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigp
KSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CiAgICAgfSkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0
eXBlQW5ub3RhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IDdjYWI2Yzk1ZWMzNTZlNzZhYzVmYzRmNzAyYmRj
YzFlYWNjOWY4NzAuLmU2OGU0ODZlNzg1YjRjYzdlNzNhNGIxZDg0Nzc4ODg1MDFlZTkyZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5jcHAKQEAgLTc0MCwxOSArNzQwLDE5IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGljKCkg
LT4gRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KICAgICBz
d2l0Y2ggKHRva2VuLT50eXBlKSB7CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7
CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0
dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9
OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJl
c3VsdCkpIH07CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlNwZWNpYWxpemVkOiAgewog
ICAgICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0g
ICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgq
cmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihX
VEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpSZWdpc3Rl
cjogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFudGljKTsKLSAgICAgICAg
cmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQp
KSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUo
KnJlc3VsdCkpIH07CiAgICAgfQogICAgIGRlZmF1bHQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3Vs
dCwgQnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVzb2x2aW5nVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZpbmdUeXBlLmgKaW5kZXggNTU5Y2U4YmE5M2IyOWQ1MTdmYTc3M2Y2YTVmNTI3ZGRm
NGE4NWIwMS4uNDU3MDBjZWQ4ZmQzNDQ5YzRkYTQ5NTlmNzFhNDAyYWEwMmQ2ZTQzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNv
bHZpbmdUeXBlLmgKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewogLy8gSXQg
ZXhpc3RzIHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBk
b2VzIHRoZSByaWdodCB0aGluZy4KIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5
LgogY2xhc3MgUmVzb2x2aW5nVHlwZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVzb2x2aW5nVHlwZSgpCiAgICAgICAgIDogbV9pbm5lcihSZWZQdHI8UmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2U+KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAppbmRleCBiZjkwZjZjMzYwNTQ4ZDUyYzhm
ZDhlZWVjNzUzYzc4ZDhmYTliZjFjLi5kOTUyMjMwNWFkYTFlZTk3MWYxNjUyOGRlMDY2MDRiYjZh
OTZiMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJO
YXZpZ2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtl
ck5hdmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgV29ya2VyTmF2aWdhdG9yR1BVKiBX
b3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20oV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAg
ICAgV29ya2VyTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2
aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsK
KyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JH
UFU+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAg
ICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwCmluZGV4IGVkNWEzY2M4MzRmZTE5ZDQ4ODhiODU1NTA0YmExNTVkNDgz
ZmM0MDcuLmMxYmFjODZkM2FiMmIwZDkxM2ZjZTc0MjE0MzFhOTQ0NTllZWQyZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmNsZWFyQ2xpZW50KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZENvbm5lY3QoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkQ29ubmVjdCgpOwogICAgIH0pKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFw
cGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0p
KTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogCiB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShi
aW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RG
TW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5h
cnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0pKTsKQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnVmZmVy
ZWRBbW91bnQpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewor
ICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVk
QW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50
KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVk
QW1vdW50KTsKICAgICB9KSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2ln
bmVkIGIKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Cisg
ICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAgICB9KSk7CkBAIC0yMDgsNyAr
MjA4LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0
dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNo
YWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9z
aW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKICAgICAgICAgfSkpOwpAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlCiAKIHZvaWQgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkK
IHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQo
bWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdl
RXJyb3IoKTsKICAgICB9KSk7CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogCiB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBncmFkZVVS
TCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGdyYWRlVVJM
KCk7CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDYwNzE0NDA5MjRmYjJjZTY3ZjUzNDA2MmQ3
OWU4ZTNiMDRlZTFjNTAuLmEwN2E4NzYzYWZiOTY5YjQyMDcwYmM0OWE4NjIzOWI3ODNkNmViYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVj
dFN0YXR1cyBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgcmVxdWVzdGVkVVIK
ICAgICBtX2FsbG93Q29va2llcyA9IHZhbGlkYXRlZFVSTC0+YXJlQ29va2llc0FsbG93ZWQ7CiAg
ICAgU3RyaW5nIHVzZXJBZ2VudCA9IG1fZG9jdW1lbnQtPnVzZXJBZ2VudChtX2RvY3VtZW50LT51
cmwoKSk7CiAgICAgU3RyaW5nIGNsaWVudE9yaWdpbiA9IG1fZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkudG9TdHJpbmcoKTsKLSAgICBtX2hhbmRzaGFrZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
U29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwg
Y2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CisgICAgbV9oYW5kc2hha2UgPSBtYWtlVW5p
cXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2Vy
QWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwogICAgIG1faGFuZHNoYWtlLT5y
ZXNldCgpOwogICAgIGlmIChtX2RlZmxhdGVGcmFtZXIuY2FuRGVmbGF0ZSgpKQogICAgICAgICBt
X2hhbmRzaGFrZS0+YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKG1fZGVmbGF0ZUZyYW1lci5jcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoKSk7CkBAIC03MDMsNyArNzAzLDcgQEAgYm9vbCBXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzRnJhbWUoKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4
dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0Zy
YW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1h
a2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IFdlYlNvY2tldEZy
YW1lOjpPcENvZGVUZXh0OwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVT
dHJpbmc7CiAgICAgZnJhbWUtPnN0cmluZ0RhdGEgPSBzdHJpbmc7CkBAIC03MTMsNyArNzEzLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcm
IHN0cmluZykKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdG
cmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVk
RnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAg
ICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVk
RnJhbWVUeXBlVmVjdG9yOwogICAgIGZyYW1lLT52ZWN0b3JEYXRhLnJlc2l6ZShkYXRhTGVuZ3Ro
KTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhcgogdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BD
b2RlLCBCbG9iJiBibG9iKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1
cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtl
X3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1
ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5mcmFt
ZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVCbG9iOwogICAgIGZyYW1lLT5ibG9iRGF0YSA9ICZibG9i
OwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdv
aW5nRnJhbWVRdWV1ZSgpCiAgICAgICAgICAgICAgICAgcmVmKCk7IC8vIFdpbGwgYmUgZGVyZWZl
ZCBhZnRlciBkaWRGaW5pc2hMb2FkaW5nKCkgb3IgZGlkRmFpbCgpLgogICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9ibG9iTG9hZGVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmJs
b2JEYXRhKTsKLSAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0
aGlzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFk
ZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKICAg
ICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKICAg
ICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KG1fZG9jdW1lbnQuZ2V0KCksICpmcmFt
ZS0+YmxvYkRhdGEpOwogICAgICAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBl
bmQoV1RGTW92ZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCmluZGV4IGYyZmE2MjA5
YzA0OGY1MTUxOGEyNWVlYzEzYWVmMjU2NGM5ZjRlN2IuLmVlMzNlYTBmZTVjZjFkNWJmNzlhMmRh
MDY3MDdiNzNjZDNhNzhjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTE1NSw3ICsx
NTUsNyBAQCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkK
IAogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0
RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhp
cyk7CiB9CiAKIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0
CkBAIC0xNzAsOCArMTcwLDggQEAgYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZs
YXRlKCkgY29uc3QKICNpZiBVU0UoWkxJQikKIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRU
YWtlT3Zlck1vZGUgbW9kZSkKIHsKLSAgICBtX2RlZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJTb2NrZXREZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7Ci0gICAgbV9pbmZsYXRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0SW5mbGF0ZXI+KCk7CisgICAgbV9kZWZsYXRlciA9IG1h
a2VVbmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOworICAgIG1faW5m
bGF0ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOwogICAgIGlmICghbV9kZWZs
YXRlci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2luZmxhdGVyLT5pbml0aWFsaXplKCkpIHsKICAgICAg
ICAgbV9kZWZsYXRlciA9IG51bGxwdHI7CiAgICAgICAgIG1faW5mbGF0ZXIgPSBudWxscHRyOwpA
QCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVm
bGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvCiBzdGQ6OnVuaXF1ZV9w
dHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7CiAjaWYgVVNFKFpMSUIpCi0gICAgYXV0byByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBpZiAo
IWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5v
cENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9h
ZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBAIC0xOTYsNyArMTk2LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmRlZmxhdGUoV2ViU29ja2V0RnIKICAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9kZWZs
YXRlci0+c2l6ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTIxMCw3
ICsyMTAsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRl
eHQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAg
IGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAg
ICBpZiAoIWVuYWJsZWQoKSAmJiBmcmFtZS5jb21wcmVzcykgewogICAgICAgICByZXN1bHQtPmZh
aWwoIkNvbXByZXNzZWQgYml0IG11c3QgYmUgMCBpZiBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJh
bWUgZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAppbmRl
eCAxZDZmMTc4MjJjODA1MjgxYjcwYTQxNjIwZGNkZWU2YWQyYWI4ODljLi40YTQ4NjVmODQ5NGQw
NjEzZWFjMzIxYTU5NGY4YmFlMTk5OTZiYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgV2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKGludCB3aW5kb3dCaXRz
LCBDb250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHQKIHsKICAgICBBU1NFUlQobV93aW5kb3dCaXRz
ID49IDgpOwogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPD0gMTUpOwotICAgIG1fc3RyZWFtID0g
c3RkOjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5n
ZXQoKSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lk
IFdlYlNvY2tldERlZmxhdGVyOjpyZXNldCgpCiBXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0
SW5mbGF0ZXIoaW50IHdpbmRvd0JpdHMpCiAgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykK
IHsKLSAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9z
dHJlYW0gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAg
ICBtZW1zZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5OTQwNzNlYWE1ZThi
MjMwZDFjOGIwMGMxNmM1OTY0M2U5Nzg0MjY4Li5kYzZmNjYwZmQzODhjZWZmYWYwZWJlZjZlNjYw
ZTZiNjk1YmI2MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAogCiAgICAgYm9v
bCBzZW50ID0gbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh7
CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLAotICAg
ICAgICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJv
eHksIHBlZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigp
LCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFtjbGllbnRX
cmFwcGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IG1h
a2VVbmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250
ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKGNsaWVudFdy
YXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJsaWVyLCB3ZSBuZWVkIHRv
IGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBlZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCmluZGV4IGQ5N2I1YzJh
ODVhOWQyMzI4Zjk4NDBmNDRkM2QxZTk2MzJjODJkOWUuLjc3NmM0M2FlYzBiOWI1YmRlYWRjM2Rk
ODkxMjZhY2VkNmJhNzUxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvTmF2aWdhdG9yV2ViVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
TmF2aWdhdG9yV2ViVlIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIE5hdmlnYXRvcldlYlZSKiBOYXZp
Z2F0b3JXZWJWUjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JX
ZWJWUiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYlZSKj4oU3VwcGxlbWVu
dDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNT
TC5jcHAKaW5kZXggYmMyM2Q1OWNjMzEyMzdiMTQ5N2E3NmFjYzU5ZDNlYWY1ZDJiNTg0MC4uNmNh
NjdmMzkxYTMxZmNkMzg2OTI1NWIyMWYyZmNiN2YzZmJmOWJiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9w
ZW5TU0wuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0SW1w
bCA6IHB1YmxpYyBDcnlwdG9EaWdlc3RDb250ZXh0IHsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHRJbXBsPigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4oKTsKICAgICB9CiAKICAg
ICBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
eXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCAzMTUzMTY4MDgwN2I3MmQ1ZWY5MzgwOTE0ZTdh
ZTI0MGFkOWQwMzk3Li5lNTNlMTk1YjM1ZjQ5OGY3OTUyNTE1MWViYzJhY2ViNWZhZmNkMjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFBBTCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4g
Q2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tHZW5l
cmljPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrR2VuZXJpYz4oKTsKIH0KIAogQ2xv
Y2tHZW5lcmljOjpDbG9ja0dlbmVyaWMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9tYWMvQ2xvY2tDTS5tbQppbmRleCBjNjg5MzIxNWYwNmIwYzY3NGQ1NDYwODMzYjFhNGQ1MWNj
MzJiNjE0Li45ZTA3MWI3ODE0ZTQ0ZmUwMDQ0MmU2NmM3MjBiMmJmYjMxMzA2OWExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQpAQCAtMzksNyArMzks
NyBAQCBzdGF0aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDsKIAogc3Rk
Ojp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDbG9ja0NNPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrQ00+KCk7
CiB9CiAKIENsb2NrQ006OkNsb2NrQ00oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggY2FjYWI4NTY4Yzg2MTEyZDljZGZlZmMzMDkwMjZh
ZDljODE1MzNlNS4uYjM1ZmMxNTY0MzdmMWNhMDlkNjQyMmJkNTljNzEzM2ZhYzJjNjBhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0x
NTc1LDcgKzE1NzUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogdm9pZCBBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdD
b21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKCkKIHsKICAgICBpZiAoIW1f
Y29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSkKLSAgICAgICAgbV9jb21wdXRlZE9iamVjdEF0
dHJpYnV0ZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRl
Q2FjaGU+KCk7CisgICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IG1ha2VV
bmlxdWU8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlPigpOwogfQogCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggZWRmZGJiMGEwNmZkNmVkYTI1
MDQ4Yjk3MTliOWVmMWJhOWUxMzQ0My4uZTZkZWE5NjExZjliNDg4MGE1YTE5YjlhZDFlMWJkZTcx
YzE4NDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAg
LTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShE
aWRTZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlOb3RpZnkgc3luYwogICAgICAgICAgICAgLy8g
T3RoZXJ3aXNlLCBpZiBzeW5jaHJvbm91c2x5IG5vdGlmeSBpcyBmYWxzZSwgcXVldWUgYSBtaWNy
b3Rhc2sgdG8gcnVuIGZpbmlzaCBub3RpZmljYXRpb24gc3RlcHMgZm9yIGFuaW1hdGlvbiB1bmxl
c3MgdGhlcmUKICAgICAgICAgICAgIC8vIGlzIGFscmVhZHkgYSBtaWNyb3Rhc2sgcXVldWVkIHRv
IHJ1biB0aG9zZSBzdGVwcyBmb3IgYW5pbWF0aW9uLgogICAgICAgICAgICAgbV9maW5pc2hOb3Rp
ZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSB0cnVlOwotICAgICAgICAgICAgTWljcm90
YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRN
aWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKKyAg
ICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVu
aXF1ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNy
b3Rhc2tQZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZmluaXNoTm90aWZpY2F0aW9u
U3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGZpbmlz
aE5vdGlmaWNhdGlvblN0ZXBzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01Qcm9taXNlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVBy
b21pc2VQcm94eS5oCmluZGV4IDdkYTQ2YTYxNTA0ZWYyNDgxNWE2OTRkZmJhMTJjMjhiMWVmNGZl
NjYuLjYyMWI4OTA1MWJiNDhkYjAzMDFlYTgwNDdjN2FmZWZmYjY4Y2RlNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCkBAIC02MCw2ICs2MCw3IEBA
IGNsYXNzIERPTVByb21pc2VQcm94eSB7CiAKIHRlbXBsYXRlPD4KIGNsYXNzIERPTVByb21pc2VQ
cm94eTxJRExWb2lkPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRE9NUHJvbWlzZVByb3h5KCkgPSBkZWZhdWx0OwogICAgIH5ET01Qcm9taXNlUHJveHkoKSA9
IGRlZmF1bHQ7CkBAIC04NCw2ICs4NSw3IEBAIGNsYXNzIERPTVByb21pc2VQcm94eTxJRExWb2lk
PiB7CiAvLyBGb250RmFjZSBhbmQgRm9udEZhY2VTZXQuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExU
eXBlPgogY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjayB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlICgpPjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXgg
ZGIwYzFkYzc2ZjhhMjg5NzA0NWVlMmNmYzkxOTIzZDU4ZGYxYjZmOS4uYzVjNDcwNjFiZmFjYTFm
Y2E3MjhiZTI3YjBhMmI0YTlmMGIzMDI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBKU0RPTVdp
bmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJl
ZjxKU0M6Ok1pY3IKICAgICBKU0RPTVdpbmRvd0Jhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWlj
cm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBh
dXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Qu
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRl
eCA2Mjk1ZjU4NGNmZThhMTcyOWRkZjZiMThkNzc1NDlmZDQ0YzlhMGJlLi5kYjVlNzczNDkwYmVk
ZmJmM2UwYzEwY2YyM2QwYTM2YzhhM2JkYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIEV2
ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQogc3RkOjp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRXcmFwcGVyPiBqc0V2ZW50VGFyZ2V0Q2Fz
dChWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBq
c0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBl
ZCgpLCAqdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdy
YXBwZXI+KHRhcmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKICAgICBpZiAoYXV0byogd2luZG93
ID0gdG9KU0RPTVdpbmRvdyh2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRv
dy0+d3JhcHBlZCgpLCAqd2luZG93KTsKICAgICBpZiAoYXV0byogc2NvcGUgPSB0b0pTV29ya2Vy
R2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBw
ZWQoKSwgKnNjb3BlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4
IGQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcwYmI0MDIuLjliZDY2NDQ2MDE3MDU0
OTVhOTRlN2IzZmFkZjA0OGYzYzdiMDQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChK
U0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SgogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWlj
cm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBh
dXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBtaWNyb3Rhc2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1p
Y3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxs
YmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNh
bGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMWQwMDU0YzI4OTJkNTAxM2RmMjZhYmZmYTNl
MWMyZjY3ZGVlNDgxOS4uYTM1Mzc4NTVlN2E3ZDRmZDJiZDJjNGM4OGI3ZmE3YjYyOTU1NGJiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4+IHRyYW5zZmVyQXJyYXlCdWZmZQog
ICAgIGlmIChhcnJheUJ1ZmZlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CisgICAgYXV0byBjb250ZW50cyA9IG1ha2VV
bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1ZmZlcnMuc2l6ZSgpKTsKIAog
ICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3Qg
YXJyYXlCdWZmZXJJbmRleCA9IDA7IGFycmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6
ZSgpOyBhcnJheUJ1ZmZlckluZGV4KyspIHsKQEAgLTM0NTEsNyArMzQ1MSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShFeGVjU3RhdGUmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVB
cnJheSB3YXNtTW9kdWxlczsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250
ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+KCk7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJnN0
YXRlLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1bGVzLCAKQEAgLTM0NjksNyAr
MzQ2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJy
YXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNl
cmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVm
ZmVycykgOiBudWxscHRyLCBXVEZNb3ZlKGltYWdlQnVmZmVycykKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCi0gICAgICAgICAgICAgICAgLCBzdGQ6Om1ha2VfdW5pcXVlPFdhc21Nb2R1bGVBcnJh
eT4od2FzbU1vZHVsZXMpCisgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21Nb2R1bGVB
cnJheT4od2FzbU1vZHVsZXMpCiAjZW5kaWYKICAgICAgICAgICAgICAgICApKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5k
ZXggNWM0NjYyOTRiZWU1NmMyMWJmMGY2M2QxNWIwZjhkZjBmMjdhM2EwZS4uNGY0YjBjZjNiN2Vl
Y2RkZDA3ODcwMjU1MjA4ODk1ZTQ1ZmEyYTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQo
YXJyYXlMZW5ndGgpOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBhdXRvIGFycmF5
QnVmZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
PigpOwogICAgIHdoaWxlIChhcnJheUxlbmd0aC0tKSB7CiAgICAgICAgIHVuc2lnbmVkIGJ1ZmZl
clNpemU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCmluZGV4
IDI0NmY2NGE5ZjYzMjJiNTg3MGNiYjY4MmVkYjJkNGVkYjk1M2VjN2MuLjNiMTEyNTJhZTY0Y2Fm
MmU0ZmU3MzllMzFlZTEwOTk1NGQ1NmE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQg
SlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0pCiAgICAgSlNWTUNsaWVudERh
dGEqIGNsaWVudERhdGEgPSBuZXcgSlNWTUNsaWVudERhdGEoKnZtKTsKICAgICB2bS0+Y2xpZW50
RGF0YSA9IGNsaWVudERhdGE7IC8vIH5WTSBkZWxldGVzIHRoaXMgcG9pbnRlci4KICAgICAKLSAg
ICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChzdGQ6Om1ha2VfdW5pcXVlPERPTUdDT3V0
cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOworICAgIHZtLT5oZWFwLmFkZE1hcmtp
bmdDb25zdHJhaW50KG1ha2VVbmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGll
bnREYXRhKSk7CiAgICAgICAgIAogICAgIGNsaWVudERhdGEtPm1fbm9ybWFsV29ybGQgPSBET01X
cmFwcGVyV29ybGQ6OmNyZWF0ZSgqdm0sIHRydWUpOwogICAgIHZtLT5tX3R5cGVkQXJyYXlDb250
cm9sbGVyID0gYWRvcHRSZWYobmV3IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggMTZhNzZjNDk1MjlhNGJiODcxY2I2NmNhM2FkNzVhMmQ3NmE4MDY1NS4uZDIz
OTg1N2FhM2JkZGU5ZmViOWNiODc0MGZjZjVkNjQ5ZTM1MGRiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQog
ICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9i
amVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKIAotICAgIG1fY29uc29sZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xv
YmFsU2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29s
ZUNsaWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKaW5kZXggMjljODE4NjgzNmVhMDU0MTFlOGYxZWQ2
NDFjMDU3MGNlODE3NjgxNS4uYWE1NmUyZmRlODU1NzdhY2Y5YzA0NzRjODk4NzdmNGUwZDVjNTEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgTWV0
aG9kKiBDQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3Rh
bmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGlu
c3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzTWV0aG9kICYmIG1faXNhLT5oYXNN
ZXRob2Qob2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5p
cXVlPENNZXRob2Q+KGlkZW50KTsKKyAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPENN
ZXRob2Q+KGlkZW50KTsKICAgICAgICAgQ01ldGhvZCogcmV0ID0gbWV0aG9kLmdldCgpOwogICAg
ICAgICBtX21ldGhvZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAg
ICByZXR1cm4gcmV0OwpAQCAtMTAzLDcgKzEwMyw3IEBAIEZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAog
ICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+
KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAg
aWYgKG1faXNhLT5oYXNQcm9wZXJ0eSAmJiBtX2lzYS0+aGFzUHJvcGVydHkob2JqLCBpZGVudCkp
IHsKLSAgICAgICAgYXV0byBmaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0ZpZWxkPihpZGVudCk7
CisgICAgICAgIGF1dG8gZmllbGQgPSBtYWtlVW5pcXVlPENGaWVsZD4oaWRlbnQpOwogICAgICAg
ICBDRmllbGQqIHJldCA9IGZpZWxkLmdldCgpOwogICAgICAgICBtX2ZpZWxkcy5zZXQobmFtZS5p
bXBsKCksIFdURk1vdmUoZmllbGQpKTsKICAgICAgICAgcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IGYyZjYyMDgyYTgwOGExOWYxMGE1ZDkzNWQ5MjJi
NzczYzEyMjFjMjguLjA0Y2RkY2QyNGNhYTgyOWMzMmU1NmVjMjczYWZiZDM1MWYyNTRlMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAtNDksNiArNDksNyBAQCBjbGFz
cyBSb290T2JqZWN0OwogY2xhc3MgUnVudGltZU9iamVjdDsKIAogY2xhc3MgRmllbGQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2
YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IElu
c3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KaW5kZXggYjg2Zjc1MWEwYTcxMzhiZTAwNzc2YTc4Y2JjMmE2ZDQ1ZGQzNzUw
Mi4uYTNkOGQzMmYyOGRkODA1OGE0YWI0NDI3Mzk1MzQ0MDc0ZjI2Yzc1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgTWV0aG9k
KiBPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3Rh
bmNlKikgY29uc3QKICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJT
Y3JpcHROYW1lRm9yU2VsZWN0b3I6b2JqY01ldGhvZFNlbGVjdG9yXTsKIAogICAgICAgICAgICAg
aWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5n
KiltZXRob2ROYW1lLmdldCgpXSkgfHwgIXN0cmNtcChvYmpjTWV0aG9kU2VsZWN0b3JOYW1lLCBi
dWZmZXIuZGF0YSgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CisgICAg
ICAgICAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPE9iamNNZXRob2Q+KHRoaXNDbGFz
cywgb2JqY01ldGhvZFNlbGVjdG9yKTsKICAgICAgICAgICAgICAgICBtZXRob2RQdHIgPSBtZXRo
b2QuZ2V0KCk7CiAgICAgICAgICAgICAgICAgbV9tZXRob2RDYWNoZS5hZGQobmFtZS5pbXBsKCks
IFdURk1vdmUobWV0aG9kKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODksNyArMTg5
LDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAgICAgICBtYXBwZWROYW1l
ID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5OlVURjhLZXlOYW1lXTsKIAogICAgICAg
ICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5T
U3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgW2tleU5hbWUgaXNFcXVhbDooX19icmlkZ2Ug
TlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuZXdG
aWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
a2V5TmFtZSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IG1ha2VVbmlxdWU8T2Jq
Y0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5TmFtZSk7CiAgICAgICAgICAgICAgICAg
ZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtX2ZpZWxkQ2FjaGUuYWRk
KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0yMjAsNyArMjIwLDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAg
ICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktleTpvYmpj
SXZhck5hbWVdOwogCiAgICAgICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWRO
YW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgIXN0
cmNtcChvYmpjSXZhck5hbWUsIGpzTmFtZS5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gbWFrZVVuaXF1ZTxPYmpjRmllbGQ+
KG9iamNJVmFyKTsKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92
ZShuZXdGaWVsZCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCBlMDhiMDQ4ZTNiNTY4NDI5OGNkZWZk
OTNlYjkxODgzODkxNTZmNDM4Li4zYjkzZTE4NzgzODU0YzI0NDQ2ZTFjZmE1NzU4NDY2ZjBmMGE3
ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0y
NjcsNyArMjY3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9i
akNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgaWYgKFt0YXJnZXRP
YmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RG
cm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBPYmpjQ2xhc3MqIG9iamND
bGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0Q2xhc3MoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChzdGQ6
Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZv
a2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QobWFrZVVuaXF1ZTxP
YmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0
aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKICAgICAgICAgY29uc3QgU3RyaW5n
JiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4
ZWMtPmpzQ2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKICAgICAgICAgZmFsbGJhY2tNZXRob2Qt
PnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmludm9rZU9iamNNZXRob2QoZXhlYywg
ZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKaW5kZXggODNkNDRlMDY3ZmJkZjU0
N2Y2Yzg4YjY3YTM2ZWI1M2Y2OTE0NjZlZS4uZjE3MWE1ODIwM2Y5OGFmMTU1NDc4MGUwNTE5ZTA0
YTFlNTNhMGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29tYmluZWRVUkxGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBDb21i
aW5lZFVSTEZpbHRlcnM6OnByaW50KCkgY29uc3QKICNlbmRpZgogCiBDb21iaW5lZFVSTEZpbHRl
cnM6OkNvbWJpbmVkVVJMRmlsdGVycygpCi0gICAgOiBtX3ByZWZpeFRyZWVSb290KHN0ZDo6bWFr
ZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKKyAgICA6IG1fcHJlZml4VHJlZVJvb3QobWFr
ZVVuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpKQogewogfQogCkBAIC0yMDksNyArMjA5LDcgQEAg
dm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4odWludDY0X3QgYWN0aW9uSWQsIGNv
bnN0IFZlY3RvcjxUZXJtPiYgcGF0dGUKICAgICAgICAgaWYgKG5leHRFbnRyeUluZGV4ICE9IFdU
Rjo6bm90Rm91bmQpCiAgICAgICAgICAgICBsYXN0UHJlZml4VHJlZSA9IGxhc3RQcmVmaXhUcmVl
LT5lZGdlc1tuZXh0RW50cnlJbmRleF0uY2hpbGQuZ2V0KCk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhUcmVlRWRnZSh7bV9h
bHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVydGV4
PigpfSkpOworICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhU
cmVlRWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgbWFrZVVuaXF1ZTxQcmVmaXhUcmVl
VmVydGV4PigpfSkpOwogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJl
ZS0+ZWRnZXMubGFzdCgpLmNoaWxkLmdldCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaAppbmRleCA4YzdlM2Y3ZDdmMWUwZDU1YWFkODkzNGFiYmE1YWE3MGZiOGY4NWNm
Li43N2ZlYjYwYzUwYmM4YTRmMjRiMjc2OTZhZDExMGQxZWRhNzQyODA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaApAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKIC8v
IDEpIEl0IHN0b3JlcyB0aGUgcnVsZXMgZm9yIGVhY2ggY29udGVudCBleHRlbnNpb24uCiAvLyAy
KSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZhY2VzIHRvIHVzZSB0aG9z
ZSBydWxlcyBlZmZpY2llbnRseS4KIGNsYXNzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gLSBSdWxlIG1hbmFn
ZW1lbnQgaW50ZXJmYWNlLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHVwcGVyIGxheWVyLgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IDk2ZTJkNjM0Yjg5M2IzOTkzMDRh
OGIyYjI4NWU2MWY0ZTQ2OWRjMGMuLmIyYTlhNzgzNTIyNzcyODNmOTVkODQ5ZDAzYjE1NmZjZGM3
MjFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC0xMTUsMzEg
KzExNSwzMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6
RGVjcnlwdDoKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMg
PSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzoKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFt
cyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4oc3Rh
dGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVz
Q2JjQ2ZiUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOiB7CiAgICAgICAg
ICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0N0
clBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bUFlc0djbVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFl
c0djbVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkVDRFNBOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0
KCkpOwpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAg
cGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVl
KCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bUVjZHNhUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BT
UzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9B
bGdvcml0aG1Sc2FQc3NQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xODAsNyArMTgwLDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMjU2OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8zODQ6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yIH07CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bVJzYUtleUdlblBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FTU0FfUEtDUzFfdjFfNToKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOworICAgICAgICAg
ICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yMTMsNyArMjEzLDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rp
b25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkhNQUM6IHsKQEAgLTIyMywxNCArMjIzLDE0IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6
ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5
PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI0OSw3ICsyNDksNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogCiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNv
bnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHN0YXRl
LCBuZXdWYWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2Ro
S2V5RGVyaXZlUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOiB7CkBAIC0yNTks
NyArMjU5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNo
SWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElk
ZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVu
dGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBh
cmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhr
ZGZQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjogewpAQCAtMjY5LDcgKzI2
OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50
aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlm
aWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmll
ciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBia2Rm
MlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGRlZmF1bHQ6CkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAg
ICBjYXNlIE9wZXJhdGlvbnM6OkltcG9ydEtleToKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmll
cikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1Mx
X3YxXzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFf
NToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOgpAQCAt
MjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAo
aGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhh
c2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNo
SWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJ
bXBvcnRQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NUUjoKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpITUFDOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0
aW9uYXJ5PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CkBAIC0zMDcsMTkgKzMwNywxOSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAg
ICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJh
bXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1h
Y0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAg
ICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tl
eVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFy
YW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzI5LDcg
KzMyOSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpV
bndyYXBLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzQ0LDcgKzM0NCw3
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnRE
aWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgp
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0zNTQsMTIgKzM1NCwxMiBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtNTIwLDE2ICs1MjAsMTYgQEAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcm9zc1RocmVhZENvcHlJbXBv
cnRQYXJhbXMoY28KIHsKICAgICBzd2l0Y2ggKGltcG9ydFBhcmFtcy5wYXJhbWV0ZXJzQ2xhc3Mo
KSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6Ok5vbmU6IHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPigpOwogICAgICAgICByZXN1bHQtPmlkZW50aWZpZXIgPSBpbXBvcnRQ
YXJhbXMuaWRlbnRpZmllcjsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6RWNLZXlQYXJhbXM6Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9z
c1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBh
cmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQ
YXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFt
cz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6
Q2xhc3M6OkhtYWNLZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29w
eShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6UnNhSGFzaGVkSW1w
b3J0UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihj
cm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFy
YW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGRiY2NjOTAwZjMzNzQ4Y2QyMDY3ZjYwY2IyOTBj
MGJkNjAwNjU1MzMuLmE0MmY1NjRmODFmZTFmMGVhMDk0NDNkMWYxMDUzYzFjM2NkMGNmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTIxNywxMiAr
MjE3LDEyIEBAIGNsYXNzIENTU0NhbGNQcmltaXRpdmVWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1ND
YWxjRXhwcmVzc2lvbk5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChjYXRlZ29yeSgpKSB7
CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZs
b2F0VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lv
bk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlv
bkNhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+
KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxl
bmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkpOwogICAgICAgICBj
YXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRp
b25DYXRlZ29yeTo6UGVyY2VudExlbmd0aDogewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1f
dmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAgICAgICB9CiAgICAgICAgIC8vIE9ubHkgdHlw
ZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVuZ3RoIGV4cHJlc3Npb24gY2FuIGJlIGNvbnZl
cnRlZAogICAgICAgICAvLyB0byBhIENhbGNFeHByZXNzaW9uTm9kZS4gQ2FsY3VsYXRpb25DYXRl
Z29yeTo6UGVyY2VudE51bWJlciBtYWtlcyBubyBzZW5zZSBhcyBhIExlbmd0aC4KQEAgLTUyMCw3
ICs1MjAsNyBAQCBjbGFzcyBDU1NDYWxjT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENTU0NhbGNF
eHByZXNzaW9uTm9kZSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICBub2Rlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShub2RlKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdU
Rk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
Y0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKICAgICB9
CiAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBmaW5hbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAppbmRleCBjNDRjZWJjNTEyMGVkODMyNmQ5
YTFiMmE2NTZiOTM2N2I2ZTE5MTI4Li5lNWFlOGI3N2E1MTRmMDljM2I0OTQ0MWI1NjJmNWMyYTFl
Yzc1MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNw
cApAQCAtMTY3LDExICsxNjcsMTEgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRG
dWxsRGVmYXVsdFN0eWxlKCkKICAgICAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBudWxs
cHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKLSAgICAg
ICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVh
c2UoKTsKKyAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0Pigp
LnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwotICAgIGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5p
cXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQcmludFN0eWxlID0gbWFrZVVu
aXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSku
bGVha1JlZigpOwogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCkBAIC0xOTAsMTAgKzE5MCwx
MCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSgp
CiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwogICAgIEFTU0VSVCghc2ltcGxlRGVmYXVsdFN0
eWxlU2hlZXQpOwogCi0gICAgZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCku
cmVsZWFzZSgpOwogICAgIC8vIFRoZXJlIGFyZSBubyBtZWRpYS1zcGVjaWZpYyBydWxlcyBpbiB0
aGUgc2ltcGxlIGRlZmF1bHQgc3R5bGUuCiAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBkZWZhdWx0
U3R5bGU7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVT
ZXQ+KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVB
U2hlZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwgc3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0
eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzaW1wbGVE
ZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
Y3BwCmluZGV4IDc3MDliNWRlYWZiZmU5ZjlhYjExYWMwNzdjNjE5ZDc5NGQxNjQyZjIuLjY0NmMx
NGExMWFjNjQ1Yjk5MjYxNDlmMjllOTgwMGM0YzcyNjdiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNv
dXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAg
ICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRp
bmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoKSk7CiAgICAg
ICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9ybWF0KCkg
JiYgZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoQ2FjaGVkRm9udCogY2FjaGVkRm9u
dCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdF
bGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAgICAgICAgICAgICAgICAgICAgc291cmNl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVz
b3VyY2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VV
bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hl
ZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNvdXJj
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJl
c291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxlbWVudCk7CisgICAgICAgICAgICBzb3VyY2Ug
PSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgp
LCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwogCiAgICAgICAgIGlmIChzb3VyY2UpCiAgICAg
ICAgICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggMDVlM2EzZjZlMjFiYzkyODE3ODU1NjlhMTRh
YTUwZmY1MmU0YTI3MC4uMThlODM0ZDY5MGE2ZWI1MTAxZGM5MGM4ZGU1ZGI1ZTdhMWIwYzVkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
dm9pZCBDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3Rl
cmVkKGNvbnN0IFN0cmluZyYgZmFtaWwKICAgICAgICAgZmFtaWx5TGlzdC0+YXBwZW5kKENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhbWlseVZhbHVlKGZhbWlseU5hbWUpKTsK
ICAgICAgICAgZmFjZS0+c2V0RmFtaWxpZXMoZmFtaWx5TGlzdC5nZXQoKSk7CiAgICAgICAgIGZh
Y2UtPnNldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMoaXRlbSk7Ci0gICAgICAgIGZhY2UtPmFk
b3B0U291cmNlKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCks
IGZhbWlseU5hbWUpKTsKKyAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2UobWFrZVVuaXF1ZTxDU1NG
b250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOwogICAgICAgICBBU1NFUlQo
IWZhY2UtPmNvbXB1dGVGYWlsdXJlU3RhdGUoKSk7CiAgICAgICAgIGZhY2VzLmFwcGVuZChXVEZN
b3ZlKGZhY2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jv
dXBpbmdSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCmlu
ZGV4IGRlNmYzOWQzZjVkODczMWQ5OWU1ZWIzYzk2OGUyOWFkMWVhY2JmZTYuLmM2YzVjMzk1NDBh
NWM1MDVjZGY0ZDU5Yzc0NmMzOTE4NWM5ZTAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91
cGluZ1J1bGUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQ1NTUnVsZSogQ1NTR3JvdXBpbmdSdWxl
OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENTU0dyb3VwaW5nUnVs
ZTo6Y3NzUnVsZXMoKSBjb25zdAogewogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikK
LSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNT
U1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4o
KnRoaXMpKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2
ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxl
Jj4oKnRoaXMpKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCBmZmRk
M2QwYWE2NTdmMjVlYWYzMWQ1NzBjNTg2OGVkNTMwOWUyZWZkLi41NTUxZjJjNjkxN2QwMzMwNzI2
YWNkZjgxMDkxYTkxZmFiNGUwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgR2VuZXJhdGVkSW1hZ2UqIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSkK
IHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9h
dFNpemUgc2l6ZSwgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKQogewogICAgIEFTU0VSVCghbV9pbWFn
ZXMuY29udGFpbnMoc2l6ZSkpOwotICAgIG1faW1hZ2VzLmFkZChzaXplLCBzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKKyAgICBtX2lt
YWdlcy5hZGQoc2l6ZSwgbWFrZVVuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNp
emUsIGltYWdlKSk7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNo
ZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlm
cmFtZXNSdWxlLmNwcAppbmRleCBjOTA5ODMyZGEwZTUxOTAyNTM1MTNhMzk4MzE5MWE3YzJmMzkz
MDA1Li42ZjFlYjMzODZkOWZiYzcyZDQ0Mzc4NWQxZDE5YzRkZDhjNWMzN2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgQ1NTS2V5
ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAog
Q1NTUnVsZUxpc3QmIENTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKCkKIHsKICAgICBpZiAoIW1f
cnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMp
OworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVs
ZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RD
U1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA0
ODBhODk4NTIzN2FkYTkwYTExNzhlMGIyNzllMGU2NjgwN2UzMzQxLi5jODhkMWVkYzkzYjdhNmM4
M2YyMTc3YmFjNzY3ZjliNzgyZWU3NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVs
ZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlz
dD4odGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPFN0
eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CiAgICAgcmV0dXJuIG1fcnVsZUxpc3RDU1NPTVdy
YXBwZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQ
YWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5j
cHAKaW5kZXggNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MC4uOTE0YmRl
NGEyZGU5YWEyMTA2YzAxMDYzYjgwOGQ5Y2E0ZmZmNmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRE9NQ1NTUGFpbnRXb3Jr
bGV0KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCiB7CiAg
ICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1BhaW50V29ya2xldCo+KFN1
cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3MpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1BhaW50V29ya2xldD4oY3NzKTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygm
Y3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5j
cHAKaW5kZXggN2VjZDkzZDdkYzNkNDMyZWFmODJiYzk1NmU2MWQ0ODlhNTEwNjI1Yi4uMGRmNmFh
ZTk2ZjBlMWM3MGIzNzU1NjE2NDllZTM1ZDI4ZWI0YzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcApAQCAtODQsNyArODQs
NyBAQCBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5KiBET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5Ojpmcm9tKERPTUNTU05hbWVzcGFjZQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Kj4oU3VwcGxlbWVudDxET01D
U1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNzcyk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCmluZGV4IGQ4NTk2ZmQx
YjI0NTlkZTA3ZTFjODk5Y2MwNzlmYzE5ODUxMTY1ZTkuLjgyYjdmY2MzMGU1ODI3NDk5MjAyZTI4
YjgzMDg2Y2YwZmE0NGFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBEb2N1bWVudFJ1bGVTZXRzOjpzX2lzSW52YWxpZGF0
aW5nU3R5bGVXaXRoUnVsZVNldHMgeyBmYWxzZSB9OwogRG9jdW1lbnRSdWxlU2V0czo6RG9jdW1l
bnRSdWxlU2V0cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAgIDogbV9zdHlsZVJl
c29sdmVyKHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgbV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0
PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIApA
QCAtNzgsNyArNzgsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZUlmTmVlZGVkKCkgY29uc3QKIAogICAgIC8vIE1lZGlhIHF1ZXJpZXMgb24g
dXNlciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRlZCBpbiBkb2N1bWVudCBjb250ZXh0LiBU
aGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4gdGhpcyByZXNwZWN0LgogICAgIGF1dG8m
IG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRv
cigpOwotICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlU2V0PigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gbWFrZVVuaXF1ZTxS
dWxlU2V0PigpOwogICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlLT5hZGRSdWxlc0Zyb21T
aGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRpYVF1ZXJ5U3R5bGVTaGVldCwgbWVkaWFR
dWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAKICAgICAvLyBWaWV3cG9ydCBkZXBl
bmRlbnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBpbmVmZmljaWVudCB0byBhbGxvdyBvbiBV
QSBzaGVldC4KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFs
aXplVXNlclN0eWxlKCkKIHsKICAgICBhdXRvJiBleHRlbnNpb25TdHlsZVNoZWV0cyA9IG1fc3R5
bGVSZXNvbHZlci5kb2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hlZXRzKCk7CiAgICAgYXV0byYg
bWVkaWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9y
KCk7Ci0gICAgYXV0byB0ZW1wVXNlclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0Pigp
OworICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBp
ZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBh
Z2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
cGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVS
ZXNvbHZlcik7CiAgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25T
dHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSwgbWVk
aWFRdWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29sdmVyKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxS
dWxlRmVhdHVyZT4mIHJ1bGVzKQogICAgIHNpemVfdCBzaXplID0gcnVsZXMuc2l6ZSgpOwogICAg
IGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBydWxlU2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8gcnVsZVNldCA9IG1ha2VVbmlx
dWU8UnVsZVNldD4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAg
ICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3Rvcklu
ZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgcnVsZVNldC0+c2hyaW5rVG9G
aXQoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+
IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogdm9pZCBEb2N1
bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2lzQXV0aG9yU3R5bGVE
ZWZpbmVkID0gdHJ1ZTsKLSAgICBtX2F1dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxl
U2V0PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAg
bV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC0xOTUsMTIg
KzE5NSwxMiBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZh
bGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJgogICAgICAgICAgICAgYXV0byBhcnJh
eUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpmZWF0dXJlLm1hdGNoRWxlbWVudCk7CiAg
ICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50QXJyYXlbYXJyYXlJbmRleF07
CiAgICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCi0gICAgICAgICAgICAgICAgcnVsZVNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICAgICAgICAgICAgICBydWxlU2V0ID0gbWFr
ZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShmZWF0dXJl
LnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7
CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICAgICAg
ICAgICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLmFwcGVuZChmZWF0
dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGludmFs
aWRhdGlvblJ1bGVTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVs
ZVNldD4+KCk7CisgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMgPSBtYWtlVW5pcXVl
PFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBp
ZiAobWF0Y2hFbGVtZW50QXJyYXlbaV0pCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uUnVs
ZVNldHMtPmFwcGVuZCh7IHN0YXRpY19jYXN0PE1hdGNoRWxlbWVudD4oaSksIFdURk1vdmUobWF0
Y2hFbGVtZW50QXJyYXlbaV0pLCBXVEZNb3ZlKGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlbaV0p
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXgg
MDVkMzg1YTU1OGM0OGM0OGVlOGRhOTBmNmExOGNiNGU3NWE2YTk1YS4uMDViNDU3ZmQ2ODIwYzY3
ZjBlMGZiZTkzMDg3YjhjZWYwODI5ZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ1
bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0
ZWRQc2UKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBydWxlRGF0YVZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNl
dDo6UnVsZURhdGFWZWN0b3I+KCk7CisgICAgYXV0byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlx
dWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZURhdGFWZWN0b3ItPnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkUnVsZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8m
IG1hdGNoZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMpCiAgICAgICAgIHJ1bGVEYXRhVmVjdG9yLT51
bmNoZWNrZWRBcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
Y3BwCmluZGV4IDIxMjI0NWRlZGNhZmY5NTZhZDQ0MTA3YjllYjQ0Y2I0MTMyOGFhZGIuLmUxYjFh
ZjIwZmIxMWFlM2RmZWUxOTJjYWM5MmU2MmNkZWE1NTdkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29s
IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBS
ZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJWaWV3KQogewotICAgIGF1dG8g
c291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOworICAg
IGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAg
IGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCAzYjIwZDQxMzMzNzUzM2Q2Y2IzYzU4Y2IzZDEwNGYwZjA0YjVl
NjE5Li5lMWUxZDcyMTIxMWU2ZGUwMWE4YTg2ZTBkNDBkODUyODk5N2IzNTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNw
cApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTCiAgICAgLy8gVGhl
IG1hcCBpcyBoZXJlIHRvIG1haW50YWluIHRoZSBvYmplY3QgaWRlbnRpdHkgb2YgdGhlIENTU1Zh
bHVlcyBvdmVyIG11bHRpcGxlIGludm9jYXRpb25zLgogICAgIC8vIEZJWE1FOiBJdCBpcyBsaWtl
bHkgdGhhdCB0aGUgaWRlbnRpdHkgaXMgbm90IGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxp
dHkgYW5kIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZC4KICAgICBpZiAoIW1fY3Nzb21WYWx1
ZVdyYXBwZXJzKQotICAgICAgICBtX2Nzc29tVmFsdWVXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKTsK
KyAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8Q1NTVmFs
dWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CiAgICAgCiAgICAgYXV0byYg
Y2xvbmVkVmFsdWUgPSBtX2Nzc29tVmFsdWVXcmFwcGVycy0+YWRkKGludGVybmFsVmFsdWUsIFdl
YWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+KCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
Y2xvbmVkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRleCBkZmZkYTZmNTFk
Zjk1NGQyMDZmMDNkMGM3MzU2MGRkYTM5MmQxNDMwLi40NGVlYjFkNzAyZDJmOWRjYjZiMTJiNTUy
NzgxNTY3ZmQwMGQyZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVs
ZURhdGEmIHJ1bGVEYXRhKQogCiAgICAgZm9yIChhdXRvJiBuYW1lQW5kTWF0Y2ggOiBzZWxlY3Rv
ckZlYXR1cmVzLmNsYXNzZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUobmFtZUFuZE1h
dGNoLmZpcnN0LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9y
PFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVs
ZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVE
YXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKICAgICAgICAg
aWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAg
ICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVBbmRNYXRjaC5maXJzdCk7CkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0byogc2VsZWN0b3IgPSBzZWxlY3RvckFuZE1h
dGNoLmZpcnN0OwogICAgICAgICBhdXRvIG1hdGNoRWxlbWVudCA9IHNlbGVjdG9yQW5kTWF0Y2gu
c2Vjb25kOwogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoc2VsZWN0b3ItPmF0dHJpYnV0
ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIFtdIHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAg
ICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwg
bWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOwogICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1h
dGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFk
ZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29u
c3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBw
ZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogICAgIGZvciAoYXV0byYg
a2V5VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVu
c3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGNsYXNzZXNB
ZmZlY3RpbmdIb3N0LmFkZChvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhl
ci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGtleVZhbHVl
UGFpciA6IG90aGVyLmF0dHJpYnV0ZVJ1bGVzKSB7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVu
c3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGF0dHJpYnV0
ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5iZWdpbigp
LCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKaW5kZXggZmE2YjkxMjAyMTNlYzU0YmI2NTkwM2NmYWU2NjliZDQ2NmZiYjAyNy4uM2JiYmJm
ZWJjYTAwOTk3ODJhZjM5ODFlYjg2NzM2Y2U2ODAzNmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNw
cApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KGNvbnN0IEF0
b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhCiAgICAgICAgIHJl
dHVybjsKICAgICBhdXRvJiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFydWxlcykKLSAgICAgICAgcnVsZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVEYXRhVmVjdG9yPigpOworICAgICAgICBydWxlcyA9IG1ha2VVbmlxdWU8UnVsZURhdGFW
ZWN0b3I+KCk7CiAgICAgcnVsZXMtPmFwcGVuZChydWxlRGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA2OWFmNTU4MTU2NTRiZTMyMGYx
YTlmZDcxYTc3NjY3ZDkyOTNmYTk3Li44ODc3NWFkN2JhOGFhNTkwYWQ3YmY3MmEzN2QzYjVmNjVi
NWQyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBA
IC0zNDgsOSArMzQ4LDkgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgKICAgICAvLyBUdXJuIHRo
aXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5n
dGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVy
Y2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENh
bGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJh
dG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhz
LnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgp
KTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RG
TW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0
aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDlhMTkxZDE3
ZGQ4ZTNlZGNjMWMxMzBjMjY1OTBlMGNhNmY0ZTM2YTMuLmM1YzJiZjVkMGY1ZmM3OTEwYWZmMTYy
NTk5OTBjNDM4NjYwYzE0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKQEAgLTgxMyw3ICs4MTMsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICAg
ICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpzaGFkb3dW
YWx1ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRv
d1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNW
YWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBhdXRvIHNoYWRv
d0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJl
YWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywg
Y29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICBp
ZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0Zp
cnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVu
dHJ5CiAgICAgICAgIGVsc2UKQEAgLTgyOSw3ICs4MjksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbAogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRT
aGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0
U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0
U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC04NDQsNyArODQ0LDcgQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVy
aXRCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkt
PmJveFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZl
ci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJv
eFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEzNTksNyArMTM1OSw3IEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3Vu
dGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRl
bnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0
aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0g
ICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50
Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVl
LT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENv
dW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwg
Y291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAg
IGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnRpZXMuY3BwCmluZGV4IDRjZjZjNmY3YWI3ZGY5ZmMwNDMzNGJiZThkZDA1YTNiNTU5ZTkz
NWMuLjE5Y2IwMzNkNzBiYjVhODk2ODY1NTcyNzU1Yjk2Yjk3NzA1MWNiNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0xNTMwLDcgKzE1MzAsNyBAQCBDU1NTdHls
ZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xh
cmF0aW9uKCkKICAgICAgICAgQVNTRVJUKCFtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgp
KTsKICAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdy
YXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4o
KnRoaXMpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVuaXF1ZTxQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQog
CkBAIC0xNTQwLDcgKzE1NDAsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eQogICAgICAgICBB
U1NFUlQobV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSA9PSAmcGFyZW50RWxlbWVudCk7
CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywg
cGFyZW50RWxlbWVudCk7CisgICAgbV9jc3NvbVdyYXBwZXIgPSBtYWtlVW5pcXVlPElubGluZUNT
U1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKICAgICByZXR1cm4gKm1f
Y3Nzb21XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
M2E1MmMzNjE5OWE3OWEyNWUwOWMwMWQ4ZmEwYzUwYWVmZjY4MmJiNS4uZGU0ZGE1ZjU1MTI5OTA5
MzFkYTg2YzVjN2U4M2JjYjEwMTgwOGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMTcxNSw3ICsxNzE1LDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0
aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAg
ICAgaWYgKGF1dGhvclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIGF1dGhvclJvbGxiYWNr
OwogCi0gICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNj
YWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBu
ZXdBdXRob3JSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNj
YWRlIGNvbnRhaW5zIFVBIHJ1bGVzIGFuZCB1c2VyIHJ1bGVzIGJ1dCBubyBhdXRob3IgcnVsZXMu
CiAgICAgICAgIG5ld0F1dGhvclJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVzKG1hdGNoUmVzdWx0
LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0
VUFSdWxlLCBmYWxzZSk7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxi
YWNrKAogICAgICAgICBpZiAodXNlclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIHVzZXJS
b2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVl
PENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOworICAgICAgICBh
dXRvIG5ld1VzZXJSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0
aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBj
YXNjYWRlIGNvbnRhaW5zIG9ubHkgVUEgcnVsZXMuCiAgICAgICAgIG5ld1VzZXJSb2xsYmFjay0+
YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFS
dWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vw
cm9wLnBsCmluZGV4IDk5N2M0YzAzNjdkZDVkMGQ2NDVkNWVkZjUxZWVjNGJmYjBjMzIxMDUuLjAy
YTM2ZWZlMDVkM2NjOWZlOTdkZDVjMGUyNTkzYWU3OWZkNmMyYzYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXBy
b3AucGwKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUlu
aGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExh
eWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiZm9yIChhdXRvKiBwYXJlbnQgPSAmc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgp
LT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBwYXJlbnQgJiYgcGFyZW50LT4i
IC4gJHRlc3RGdW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50LT5uZXh0KCkpIHtcbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0
KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkg
LiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlv
dXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5
cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
ICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgfVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgY2hpbGQtPiIgLiAkc2V0dGVyIC4gIihwYXJlbnQtPiIgLiAkZ2V0dGVyIC4gIigpKTtcbiI7
CkBAIC04MzcsNyArODM3LDcgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNl
dHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2
YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVk
ZWQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250
ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6
Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikp
O1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBwcmV2aW91
c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlw
ZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAg
ICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIH1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlTWFwKCktPiIgLiBnZXRGaWxsTGF5ZXJN
YXBmdW5jdGlvbigkbmFtZSkgLiAiKCIgLiAkQ1NTUHJvcGVydHlJZCAuICIsICpjaGlsZCwgaXRl
bSk7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5k
ZXggNjdjZmRmNTZkNjI1MDUzYTAxMTE5OTJkNzExZjhjOGZmZGI5NWRjMi4uZDc1ZTRmYzkyYzc3
YjA3YjFlNTNkYWQzMzg3ZTU1MWEzOTBjMjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1BhcnNlckltcGw6OkNT
U1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBzdHJpCiAgICAgLCBtX3N0eWxlU2hlZXQoc3R5bGVTaGVldCkKICAgICAsIG1fb2JzZXJ2ZXJX
cmFwcGVyKHdyYXBwZXIpCiB7Ci0gICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gc3RkOjptYWtl
X3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogc3RkOjptYWtlX3VuaXF1
ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CisgICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gbWFr
ZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogbWFrZVVuaXF1ZTxDU1NU
b2tlbml6ZXI+KHN0cmluZyk7CiAgICAgaWYgKGNvbnRleHQuZGVmZXJyZWRDU1NQYXJzZXJFbmFi
bGVkICYmICF3cmFwcGVyICYmIHN0eWxlU2hlZXQgJiYgcnVsZVBhcnNpbmcgPT0gQ1NTUGFyc2Vy
OjpSdWxlUGFyc2luZzo6RGVmZXJyZWQpCiAgICAgICAgIG1fZGVmZXJyZWRQYXJzZXIgPSBDU1NE
ZWZlcnJlZFBhcnNlcjo6Y3JlYXRlKGNvbnRleHQsIHN0cmluZywgKnN0eWxlU2hlZXQpOwogfQpA
QCAtMjgyLDkgKzI4Miw5IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBh
Z2VTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsCiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yOwogICAgIGlmICghdHlwZVNlbGVj
dG9yLmlzTnVsbCgpICYmIHBzZXVkby5pc051bGwoKSkKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCks
IHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CisgICAgICAg
IHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkp
OwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKICAgICAgICAgaWYgKCFwc2V1ZG8uaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IHNlbGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPihDU1NQYXJzZXJT
ZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IocHNldWRvKSk7CiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9yLT5tYXRjaCgpICE9IENTU1NlbGVjdG9yOjpQYWdlUHNl
dWRvQ2xhc3MpCkBAIC01MzUsNyArNTM1LDcgQEAgUmVmUHRyPFN0eWxlUnVsZU5hbWVzcGFjZT4g
Q1NTUGFyc2VySW1wbDo6Y29uc3VtZU5hbWVzcGFjZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW4KIFJl
ZlB0cjxTdHlsZVJ1bGVNZWRpYT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZShDU1NQ
YXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spCiB7CiAg
ICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6
Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgc3RkOjpt
YWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVk
UGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVl
cnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29u
dGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0
eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKIApAQCAtNTYzLDcgKzU2Myw3IEBAIFJl
ZlB0cjxTdHlsZVJ1bGVTdXBwb3J0cz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1cHBvcnRzUnVs
ZShDU1NQYXJzZXJUb2tlblJhbmdlCiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBl
cnJvciwgaW52YWxpZCBAc3VwcG9ydHMgY29uZGl0aW9uCiAKICAgICBpZiAobV9kZWZlcnJlZFBh
cnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5z
ZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBzdGQ6Om1ha2VfdW5pcXVl
PERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsK
KyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5zZXJpYWxp
emUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5
bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIGlmICht
X29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIo
KS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpTdXBwb3J0cywgbV9vYnNlcnZlcldyYXBwZXIt
PnN0YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBSZWZQdHI8U3R5bGVS
dWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5ZnJhbWVzUnVsZShib29sIHdl
YmtpdFByZWZpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3I7IGV4cGVj
dGVkIGlkZW50IHRva2VuIGluIEBrZXlmcmFtZXMgaGVhZGVyCiAKICAgICBpZiAobV9kZWZlcnJl
ZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUs
IHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9k
ZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVh
dGUobmFtZSwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICpt
X2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAg
ICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVs
ZTo6S2V5ZnJhbWVzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZzZXQocmFuZ2VDb3B5KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCmlu
ZGV4IDRkYmVmNDA1OGM3MTYyY2Q5NjQ2ZWE3NjRkY2JiOWJiY2YzMWU0NTkuLmEwODcwZDM3NjJj
ZWE0MmY1YjVlYWJkMDVlYTc0NGYyZDlkNmIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBz
ZXVkb1NlbGVjdG9yKFN0CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwor
ICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAg
IHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0Ns
YXNzKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UGFnZVBzZXVkb1R5cGUocHNldWRv
VHlwZSk7CiAgICAgcmV0dXJuIHNlbGVjdG9yOwpAQCAtNjMsNyArNjMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0Vs
ZW1lbnRTZWxlY3RvcgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
YXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7Cisg
ICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAg
c2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
KTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRv
VHlwZSk7CiAgICAgQXRvbVN0cmluZyBuYW1lOwpAQCAtODQsMTMgKzg0LDEzIEBAIHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRv
Q2xhc3NTZWxlY3RvcihTCiB7CiAgICAgYXV0byBwc2V1ZG9UeXBlID0gcGFyc2VQc2V1ZG9DbGFz
c0FuZENvbXBhdGliaWxpdHlFbGVtZW50U3RyaW5nKHBzZXVkb1R5cGVTdHJpbmcpOwogICAgIGlm
IChwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Vua25v
d24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNl
clNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dFBzZXVkb0NsYXNzVHlwZShwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzKTsKICAgICAgICAgcmV0dXJu
IHNlbGVjdG9yOwogICAgIH0KICAgICBpZiAocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRv
RWxlbWVudCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd24pIHsKLSAgICAgICAg
YXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7Cisg
ICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwog
ICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVu
dFR5cGUocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNl
bGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRWYWx1ZShwc2V1ZG9UeXBlU3RyaW5nLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkpOwpAQCAtMTAwLDEyICsxMDAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPENT
U1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVj
dG9yKFMKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKLSAgICA6
IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKKyAgICA6IG1fc2Vs
ZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKIHsKIH0KIAogQ1NTUGFyc2VyU2VsZWN0
b3I6OkNTU1BhcnNlclNlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKQotICAg
IDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCisg
ICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lKSkKIHsKIH0K
IApAQCAtMTI2LDcgKzEyNiw3IEBAIENTU1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFyc2VyU2VsZWN0
b3IoKQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiYmIHNlbGVjdG9yVmVjdG9yKQog
ewotICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChzdGQ6Om1ha2VfdW5pcXVlPENTU1Nl
bGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsKKyAgICBtX3NlbGVjdG9yLT5z
ZXRTZWxlY3Rvckxpc3QobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0
b3JWZWN0b3IpKSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnNldExhbmdBcmd1bWVu
dExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9tU3RyaW5nPj4gYXJndW1lbnRMaXN0KQpA
QCAtMjA5LDEyICsyMDksMTIgQEAgdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YXBwZW5kVGFnSGlz
dG9yeShDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3IgcmVsYXRpb24sIHMKIAogdm9pZCBDU1NQ
YXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z1FOYW1lLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKIHsKLSAgICBhdXRvIHNlY29uZCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWNvbmQg
PSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlY29uZC0+bV9zZWxlY3Rv
ciA9IFdURk1vdmUobV9zZWxlY3Rvcik7CiAgICAgc2Vjb25kLT5tX3RhZ0hpc3RvcnkgPSBXVEZN
b3ZlKG1fdGFnSGlzdG9yeSk7CiAgICAgbV90YWdIaXN0b3J5ID0gV1RGTW92ZShzZWNvbmQpOwog
Ci0gICAgbV9zZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1l
LCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOworICAgIG1fc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENT
U1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKICAgICBtX3NlbGVj
dG9yLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ4OGU2
MDIzZjIwMDI0YWZmZWY4NjE3YTUxNGM0MDliZjQ5ZDFlZjMuLjcwOGVjNzc3M2MxOGQ2ZTA4ZTAw
MWNhZmEzZDI4YzgwZDlmODcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBzdGF0aWMgUmVmUHRy
PENTU0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncwogICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gYnl0ZVN0cmVhbSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CisgICAgYXV0byBieXRlU3RyZWFtID0g
bWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBpZiAoIWJ1aWxkU1ZHUGF0aEJ5
dGVTdHJlYW1Gcm9tU3RyaW5nKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1
ZSgpLnRvU3RyaW5nKCksICpieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5nKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4IDZiM2FjYzg1ZTZmYzVlNWNiYjk1YWI5ZmUxYTZjN2Nh
OWVmODEwNDcuLmYzMzIzYjIyNmI0YjAxMDBjOTgzYzQ4NjYzNzVmMWU2NTdiMTczOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC01
NjQsNyArNTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxl
Y3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyhDU1NQYXJzZXJUb2sKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhbmc6IHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBDU1MgU2VsZWN0b3JzIExldmVsIDQgYWxsb3dzIDpsYW5nKCotZm9vKQotICAgICAgICAg
ICAgYXV0byBhcmd1bWVudExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5n
Pj4oKTsKKyAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8
QXRvbVN0cmluZz4+KCk7CiAgICAgICAgICAgICBpZiAoIWNvbnN1bWVMYW5nQXJndW1lbnRMaXN0
KGFyZ3VtZW50TGlzdCwgYmxvY2spKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICAgICAgc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RGTW92ZShhcmd1bWVu
dExpc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuY3BwCmluZGV4IDllYjVkN2U0OWY1NmExZTk4ZDFmYmI5YjIzZTZlYTcyZTIyNjE1OGYu
Ljg4MTE3ZjE5ZTRiMjZiYTI1YmZmMjVhODU1OTE3MzJiYjdhM2U3ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcApAQCAtMzM0LDcg
KzMzNCw3IEBAIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjpFbGVtZW50UXVldWUmIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVCYWNrCiB7CiAgICAgaWYgKCFzX3Byb2Nlc3Np
bmdCYWNrdXBFbGVtZW50UXVldWUpIHsKICAgICAgICAgc19wcm9jZXNzaW5nQmFja3VwRWxlbWVu
dFF1ZXVlID0gdHJ1ZTsKLSAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgp
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJhY2t1cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4oKSk7
CisgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVu
aXF1ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOwogICAgIH0KICAgICByZXR1cm4g
YmFja3VwRWxlbWVudFF1ZXVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmlu
ZGV4IGNiNzUyMzI4MGM3YjMyNWM2NmNkZTY0NmMxNWJmNWE5MTMxNzQ1YmMuLmMwOWI4NDM2MzU1
MzQxYThlZDQwYTVhOGI4NTE2YjZkOTdiYTZkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OmRpZEFkZEZpbGVU
b0l0ZW1MaXN0KCkKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKCkK
IHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxpc3Qg
PSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X2l0ZW1MaXN0OwogfQogCkBAIC00MTYsNyArNDE2LDcgQEAgYm9vbCBEYXRhVHJhbnNmZXI6Omhh
c1N0cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0bWxUZXh0KQogewotICAg
IGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsK
KyAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAg
ICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CiAg
ICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRtbFRleHQpOwogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpS
ZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRFdmVudCkpOwpAQCAtNDcx
LDcgKzQ3MSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJh
Zyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9j
dW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3Rl
Ym9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdy
aXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0
YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3Jp
Z2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwog
fQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UoRWxl
bWVudCogZWxlbWVudCwgaW50IHgsIGludCB5KQogICAgIG1fZHJhZ0ltYWdlID0gaW1hZ2U7CiAg
ICAgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIGlmICghbV9kcmFnSW1hZ2VMb2FkZXIpCi0g
ICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0ltYWdl
TG9hZGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyID0gbWFrZVVuaXF1
ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOwogICAgICAgICBtX2RyYWdJbWFnZUxvYWRlci0+c3Rh
cnRMb2FkaW5nKG1fZHJhZ0ltYWdlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMzM2MjIzMTA4MWIxM2Y3
MmRjMThkYWM1ZjM5MDdhNWU3YzE3YjBiZi4uZjIxMTMxZmY4Mjc4MjFkYzc0ZTg1MGE5OGYxYmIy
MzA5OWUwMjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChQYWdlKiBwYWdlKQogCiB2b2lkIHByb3ZpZGVEZXZp
Y2VPcmllbnRhdGlvblRvKFBhZ2UmIHBhZ2UsIERldmljZU9yaWVudGF0aW9uQ2xpZW50JiBjbGll
bnQpCiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8oJnBhZ2Us
IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtl
X3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZDE3ZmYyY2ZlYzE4NzhlNjdjNTgxMDc5MjgwYjQ5MWI4
ODU5M2U1OS4uZWQ0ODQ4OTdmYWQxOTk3NzhlODgzOTM5ZGQxMjNhZTJkNmM2YzIzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjEsMTkgKzUyMSwxOSBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2Vz
LCB1bnNpZwogICAgICwgbV9xdWlya3MobWFrZVVuaXF1ZVJlZjxRdWlya3M+KCp0aGlzKSkKICAg
ICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIobV9mcmFtZSA/IFJlZjxDYWNoZWRSZXNvdXJjZUxv
YWRlcj4obV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKSkgOiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG51bGxwdHIpKQog
ICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNpb24pCi0gICAgLCBtX3N0
eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKLSAgICAsIG1f
ZXh0ZW5zaW9uU3R5bGVTaGVldHMoc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0
cz4oKnRoaXMpKQotICAgICwgbV92aXNpdGVkTGlua1N0YXRlKHN0ZDo6bWFrZV91bmlxdWU8Vmlz
aXRlZExpbmtTdGF0ZT4oKnRoaXMpKQotICAgICwgbV9tYXJrZXJzKHN0ZDo6bWFrZV91bmlxdWU8
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFr
ZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVl
dHMobWFrZVVuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4oKnRoaXMpKQorICAgICwgbV92aXNp
dGVkTGlua1N0YXRlKG1ha2VVbmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQorICAgICwg
bV9tYXJrZXJzKG1ha2VVbmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCiAg
ICAgLCBtX3N0eWxlUmVjYWxjVGltZXIoW3RoaXNdIHsgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOyB9
KQogICAgICwgbV9kb2N1bWVudENyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAg
ICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykp
Ci0gICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRl
cj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxTY3JpcHRSdW5uZXI+
KCp0aGlzKSkKKyAgICAsIG1fbW9kdWxlTG9hZGVyKG1ha2VVbmlxdWU8U2NyaXB0TW9kdWxlTG9h
ZGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRy
YW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1z
VGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV94bWxWZXJzaW9uKCIxLjAiX3MpCi0gICAgLCBt
X2NvbnN0YW50UHJvcGVydHlNYXAoc3RkOjptYWtlX3VuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFw
PigqdGhpcykpCisgICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAobWFrZVVuaXF1ZTxDb25zdGFu
dFByb3BlcnR5TWFwPigqdGhpcykpCiAgICAgLCBtX2RvY3VtZW50Q2xhc3Nlcyhkb2N1bWVudENs
YXNzZXMpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQpAQCAtNTQ1LDEwICs1NDUsMTAgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICNlbmRp
ZgogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVu
dERlbGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCi0gICAgLCBtX2RldmljZU1vdGlvbkNvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VN
b3Rpb25DbGllbnQpKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TPigpKQotICAgICwgbV9kZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlTW90aW9u
Q2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQorICAgICwgbV9kZXZp
Y2VNb3Rpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4oKm1f
ZGV2aWNlTW90aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQobWFr
ZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
PigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCiAjZW5kaWYKICAgICAsIG1fcGVuZGluZ1Rh
c2tzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCkKICAgICAs
IG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFs
VXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKQEAgLTc1Nyw3ICs3NTcsNyBAQCBFbGVtZW50
KiBEb2N1bWVudDo6ZWxlbWVudEZvckFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkKIAogdm9p
ZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlDYWNoZSgpCiB7Ci0gICAgbV9hY2Nlc3NLZXlDYWNo
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+PihbdGhpc10geworICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBtYWtlVW5p
cXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4o
W3RoaXNdIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVl
RGVzY2VuZGFudHMoKnRoaXMpKSB7CiAgICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUp
KQpAQCAtNzgyLDcgKzc4Miw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBEb2N1bWVu
dDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVjCiAgICAgaWYgKHNl
bGVjdG9yU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRh
eEVycm9yIH07CiAgICAgaWYgKCFtX3NlbGVjdG9yUXVlcnlDYWNoZSkKLSAgICAgICAgbV9zZWxl
Y3RvclF1ZXJ5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsK
KyAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnlD
YWNoZT4oKTsKICAgICByZXR1cm4gbV9zZWxlY3RvclF1ZXJ5Q2FjaGUtPmFkZChzZWxlY3RvclN0
cmluZywgKnRoaXMpOwogfQogCkBAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVz
ZXRBY3RpdmVMaW5rQ29sb3IoKQogRE9NSW1wbGVtZW50YXRpb24mIERvY3VtZW50OjppbXBsZW1l
bnRhdGlvbigpCiB7CiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uKQotICAgICAgICBtX2ltcGxl
bWVudGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOwor
ICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gbWFrZVVuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9pbXBsZW1lbnRhdGlvbjsKIH0KIApAQCAtMTc2Miw3ICsx
NzYyLDcgQEAgTm9kZTo6Tm9kZVR5cGUgRG9jdW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKIEZvcm1D
b250cm9sbGVyJiBEb2N1bWVudDo6Zm9ybUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9mb3Jt
Q29udHJvbGxlcikKLSAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Rm9ybUNvbnRyb2xsZXI+KCk7CisgICAgICAgIG1fZm9ybUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PEZvcm1Db250cm9sbGVyPigpOwogICAgIHJldHVybiAqbV9mb3JtQ29udHJvbGxlcjsKIH0KIApA
QCAtMTk4Nyw3ICsxOTg3LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRl
eHQmIHRleHQsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWRUZXh0LCB1bnMKICAgICBBU1NFUlQo
IW1faW5SZW5kZXJUcmVlVXBkYXRlKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBpblJlbmRlclRy
ZWVVcGRhdGUobV9pblJlbmRlclRyZWVVcGRhdGUsIHRydWUpOwogCi0gICAgYXV0byB0ZXh0VXBk
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CisgICAgYXV0byB0
ZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CiAgICAgdGV4dFVw
ZGF0ZS0+YWRkVGV4dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRUZXh0LCBsZW5ndGhPZlJlcGxh
Y2VkVGV4dCwgV1RGOjpudWxsb3B0IH0pOwogCiAgICAgUmVuZGVyVHJlZVVwZGF0ZXIgcmVuZGVy
VHJlZVVwZGF0ZXIoKnRoaXMpOwpAQCAtMjI2OSw3ICsyMjY5LDcgQEAgdm9pZCBEb2N1bWVudDo6
cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNp
emUsIGludCYKIFN0eWxlUmVzb2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5
bGVSZXNvbHZlcigpCiB7CiAgICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyKQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CisgICAgICAgIG1fdXNlckFnZW50U2hh
ZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsK
ICAgICByZXR1cm4gKm1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7CiB9CiAKQEAg
LTI2NzIsNyArMjY3Miw3IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3VtZW50OjpheE9iamVjdENhY2hl
KCkgY29uc3QKIAogICAgIEFTU0VSVCgmdG9wRG9jdW1lbnQgPT0gdGhpcyB8fCAhbV9heE9iamVj
dENhY2hlKTsKICAgICBpZiAoIXRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSkgewotICAgICAg
ICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFYT2JqZWN0
Q2FjaGU+KHRvcERvY3VtZW50KTsKKyAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hl
ID0gbWFrZVVuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CiAgICAgICAgIGhhc0V2
ZXJDcmVhdGVkQW5BWE9iamVjdENhY2hlID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIHRvcERv
Y3VtZW50Lm1fYXhPYmplY3RDYWNoZS5nZXQoKTsKQEAgLTMwMzYsNyArMzAzNiw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnNldFBhcnNpbmcoYm9vbCBiKQogICAgIG1fYlBhcnNpbmcgPSBiOwogCiAgICAg
aWYgKG1fYlBhcnNpbmcgJiYgIW1fc2hhcmVkT2JqZWN0UG9vbCkKLSAgICAgICAgbV9zaGFyZWRP
YmplY3RQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7
CisgICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTaGFyZWRP
YmplY3RQb29sPigpOwogCiAgICAgaWYgKCFtX2JQYXJzaW5nICYmIHZpZXcoKSAmJiAhdmlldygp
LT5uZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3KCktPmZpcmVMYXlvdXRSZWxhdGVkTWlsZXN0
b25lc0lmTmVlZGVkKCk7CkBAIC01NTY2LDcgKzU1NjYsNyBAQCBjb25zdCBTVkdEb2N1bWVudEV4
dGVuc2lvbnMqIERvY3VtZW50OjpzdmdFeHRlbnNpb25zKCkKIFNWR0RvY3VtZW50RXh0ZW5zaW9u
cyYgRG9jdW1lbnQ6OmFjY2Vzc1NWR0V4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9zdmdFeHRl
bnNpb25zKQotICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOworICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBtYWtl
VW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zdmdF
eHRlbnNpb25zOwogfQogCkBAIC01NzcxLDcgKzU3NzEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0
U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50
LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAgICAgIHNldENvb2tpZVVSTChV
UkwoeyB9LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5
KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1
ZSgpKSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlz
KSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlzKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3OTAsNyArNTc5MCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICBpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID0g
ZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkudGFpbnRpbmcoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlOwogCiAgICAgc2V0U2VjdXJpdHlP
cmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShpc1NlY3VyaXR5T3JpZ2lu
VW5pcXVlID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3VybCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5ID0gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkub3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3koKTsKICAgICBpZiAoIW92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5LmlzTnVsbCgpKQpAQCAtNjAyOCw3ICs2MDI4LDcgQEAgU3RyaW5nIERvY3VtZW50OjpuYW1l
Rm9yQ1NTQ2FudmFzRWxlbWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVu
dCkKIFRleHRBdXRvU2l6aW5nJiBEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcoKQogewogICAgIGlm
ICghbV90ZXh0QXV0b1NpemluZykKLSAgICAgICAgbV90ZXh0QXV0b1NpemluZyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7CisgICAgICAgIG1fdGV4dEF1dG9TaXppbmcgPSBt
YWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwogICAgIHJldHVybiAqbV90ZXh0QXV0b1Npemlu
ZzsKIH0KICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAtNjM5NSw3ICs2Mzk1
LDcgQEAgdm9pZCBEb2N1bWVudDo6d2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCgpCiB2b2lkIERv
Y3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcihOb2RlJiBub2RlKQogewogICAgIGlmICgh
bV93aGVlbEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAgIG1fd2hlZWxFdmVudFRhcmdl
dHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAgICAgbV93aGVlbEV2ZW50VGFy
Z2V0cy0+YWRkKCZub2RlKTsKIApAQCAtNjQ1NSw3ICs2NDU1LDcgQEAgdm9pZCBEb2N1bWVudDo6
ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoTm9kZSYgaGFuZGxlcikKIHsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIGlmICghbV90b3VjaEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV90b3Vj
aEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAg
ICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwog
CiAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cy0+YWRkKCZoYW5kbGVyKTsKIApAQCAtODA0Myw3ICs4
MDQzLDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dDaGFubmVs
JiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgVmUKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IG1lc3NhZ2VMZXZlbEZyb21XVEZMb2dMZXZlbChs
ZXZlbCk7Ci0gICAgICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2Fn
ZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKCkp
KTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdU
Rk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOwogCiAgICAg
ICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogICAgIH0pOwpAQCAtODA3
OCw3ICs4MDc4LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdAogCiBib29sIERvY3VtZW50Ojpy
ZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSYmIHByb3ApCiB7
Ci0gICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIHN0
ZDo6bWFrZV91bmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3Ap
KSkuaXNOZXdFbnRyeTsKKyAgICByZXR1cm4gbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRk
KHByb3AubmFtZSwgbWFrZVVuaXF1ZTxDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1v
dmUocHJvcCkpKS5pc05ld0VudHJ5OwogfQogCiB2b2lkIERvY3VtZW50OjpkZXRhY2hGcm9tRnJh
bWUoKQpAQCAtODE3Miw3ICs4MTcyLDcgQEAgRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb24KICAgICAg
ICAgcmV0dXJuIHRvcERvY3VtZW50KCkuZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyKCk7CiAKICAgICBpZiAoIW1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyKQotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOwogfQogCkBAIC04MjAzLDcgKzgyMDMsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBSZWY8UGFpbnRXbwogQ29udGVudENoYW5nZU9ic2VydmVyJiBEb2N1bWVu
dDo6Y29udGVudENoYW5nZU9ic2VydmVyKCkKIHsKICAgICBpZiAoIW1fY29udGVudENoYW5nZU9i
c2VydmVyKQotICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CisgICAgICAgIG1fY29udGVudENoYW5n
ZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fY29udGVudENoYW5nZU9ic2VydmVyOyAKIH0KIApAQCAtODIxMSw3ICs4MjEx
LDcgQEAgRE9NVGltZXJIb2xkaW5nVGFuayYgRG9jdW1lbnQ6OmRvbVRpbWVySG9sZGluZ1Rhbmso
KQogewogICAgIGlmIChtX2RvbVRpbWVySG9sZGluZ1RhbmspCiAgICAgICAgIHJldHVybiAqbV9k
b21UaW1lckhvbGRpbmdUYW5rOwotICAgIG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4oKTsKKyAgICBtX2RvbVRpbWVySG9sZGluZ1Rh
bmsgPSBtYWtlVW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7CiAgICAgcmV0dXJuICptX2Rv
bVRpbWVySG9sZGluZ1Rhbms7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZjk3ZGJlNzUx
YmQ1MDQzNjI3M2MwNzhmNzBlZWExNWI2NWM3NjJhOS4uYTVlMzIwMzkyNTk0OTU1NTNjNTkzNmM1
YjgwNzFlNDBlMGY4ZTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyODQsNyArMTI4NCw3
IEBAIGNsYXNzIERvY3VtZW50CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRQYXJzZXJZ
aWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsK
ICAgICB9CiAKICAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSBjb25zdCB7IHJl
dHVybiBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcAppbmRleCAwMWM3Zjk2ZTAyZTllYmQ1ODg1M2ZiNWRiMWM0Yjg4MjFl
MmY5NzI4Li4wMzcwM2I2MmJjNjUwNTU3OGIzODliOTk5MzhhNGRhYWI2ZDc2YzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtNTksNyArNTksNyBAQCBj
bGFzcyBEb2N1bWVudEV2ZW50UXVldWU6OlRpbWVyIGZpbmFsIDogcHVibGljIFN1c3BlbmRhYmxl
VGltZXIgewogCiBEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9wZW5kaW5n
RXZlbnRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcykpCisgICAgLCBtX3BlbmRp
bmdFdmVudFRpbWVyKG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzKSkKICAgICAsIG1faXNDbG9zZWQo
ZmFsc2UpCiB7CiAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4
IDcyOTFkNGFkZWU5ZjQxNzdmZGJmZWZlZWZkZGYyNjcwNTRhOWM0ZjAuLmU3NjQxYWY2MjE4YmYx
M2FiMGUzYzY4OTIwMjBkZTg4OWM0ZTkwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihOb2RlJiBub2RlLCBjb25zdCBEb2N1bWVu
dE1hcmtlciYgbmV3TWEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFya2VyTGlzdD4mIGxpc3QgPSBt
X21hcmtlcnMuYWRkKCZub2RlLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBpZiAo
IWxpc3QpIHsKLSAgICAgICAgbGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyTGlzdD4oKTsK
KyAgICAgICAgbGlzdCA9IG1ha2VVbmlxdWU8TWFya2VyTGlzdD4oKTsKICAgICAgICAgbGlzdC0+
YXBwZW5kKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIobmV3TWFya2VyKSk7CiAgICAgfSBlbHNlIGlm
IChzaG91bGRJbnNlcnRBc1NlcGFyYXRlTWFya2VyKG5ld01hcmtlcikpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbWVyZ2UgZGljdGF0aW9uIG1hcmtlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4IDgxZWZiMTBkNWU3NmVkYjZmNmQzODM1MzAw
NTFkMjljMzg4ZWFmZGIuLjg1NWEyYTA2NTZmNzFiNDVlZThkNGZmZjI4NGE1MzUzNzlhMzg3OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCkBAIC00
OCw3ICs0OCw3IEBAIERvY3VtZW50U3RvcmFnZUFjY2VzcyogRG9jdW1lbnRTdG9yYWdlQWNjZXNz
Ojpmcm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNzKj4oU3VwcGxlbWVudDxEb2N1bWVudD46OmZy
b20oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRT
dG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CiAgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmRvY3VtZW50
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CkBAIC0x
ODMsNyArMTgzLDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgYm9vbCBzaG91
bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6WWVzIHx8IHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bjo6Tm87CiAKICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigq
ZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1
ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNl
ID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAg
ICB9KSk7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVu
dFJlZmVyZW5jZSldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFk
UXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVu
Y2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgewogICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC0+Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOwogICAg
ICAgICAgICAgfSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
CiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3JhcnlUaW1lVXNlckdl
c3R1cmUoKQogewotICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50
KTsKKyAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gbWFrZVVuaXF1ZTxVc2VyR2VzdHVyZUlu
ZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA3MTIwMDhmMjFiMjMxYzRkZTIxYzQxM2I1ZDEwODVk
OTNmMjVkYWYzLi5iMGQ4YWQ1ZDE2NDA5YTdiZTU2YmMzYzEwYjY5ZDMyYmE3NTBkYzIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00NzcsNyArNDc3LDcgQEAgTmFtZWROb2RlTWFwJiBFbGVt
ZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVN
YXAgPSByYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKSkKICAgICAgICAgcmV0dXJuICphdHRyaWJ1dGVN
YXA7CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAoc3RkOjptYWtlX3VuaXF1ZTxOYW1l
ZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOworICAgIHJhcmVEYXRhLnNl
dEF0dHJpYnV0ZU1hcChtYWtlVW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3RfY2FzdDxFbGVtZW50
Jj4oKnRoaXMpKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKTsKIH0KIApA
QCAtMjMwNyw3ICsyMzA3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVt
ZW50KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVyZmEKICAgICBzZXRGbGFn
KElzQ3VzdG9tRWxlbWVudCk7CiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpOwogICAgIGlmICghZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKQotICAgICAg
ICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0
YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9y
U3VidHJlZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9t
RWxlbWVudFN0YXRlKCp0aGlzKTsKIH0KQEAgLTIzNDQsNyArMjM0NCw3IEBAIHZvaWQgRWxlbWVu
dDo6ZW5xdWV1ZVRvVXBncmFkZShKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRl
cmZhY2UpCiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGJv
b2wgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSA9IGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUoKTsKICAgICBpZiAoIWFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpCi0gICAgICAgIGRh
dGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAgICAgICBkYXRhLnNl
dEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKICAgICBkYXRhLmN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlKCktPmVucXVldWVFbGVtZW50VXBncmFkZSgqdGhpcywgYWxyZWFkeVNjaGVkdWxl
ZFRvVXBncmFkZSk7CiB9CiAKQEAgLTM0ODAsNyArMzQ4MCw3IEBAIERPTVRva2VuTGlzdCYgRWxl
bWVudDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY2xhc3NMaXN0KCkpCi0gICAgICAgIGRh
dGEuc2V0Q2xhc3NMaXN0KHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRN
TE5hbWVzOjpjbGFzc0F0dHIpKTsKKyAgICAgICAgZGF0YS5zZXRDbGFzc0xpc3QobWFrZVVuaXF1
ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwogICAgIHJldHVy
biAqZGF0YS5jbGFzc0xpc3QoKTsKIH0KIApAQCAtMzQ4OCw3ICszNDg4LDcgQEAgRGF0YXNldERP
TVN0cmluZ01hcCYgRWxlbWVudDo6ZGF0YXNldCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBk
YXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmRhdGFzZXQoKSkK
LSAgICAgICAgZGF0YS5zZXREYXRhc2V0KHN0ZDo6bWFrZV91bmlxdWU8RGF0YXNldERPTVN0cmlu
Z01hcD4oKnRoaXMpKTsKKyAgICAgICAgZGF0YS5zZXREYXRhc2V0KG1ha2VVbmlxdWU8RGF0YXNl
dERPTVN0cmluZ01hcD4oKnRoaXMpKTsKICAgICByZXR1cm4gKmRhdGEuZGF0YXNldCgpOwogfQog
CkBAIC0zNjMyLDcgKzM2MzIsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEmIEVsZW1lbnQ6
OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEg
PSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLmludGVyc2VjdGlv
bk9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZl
ckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOworICAg
ICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEobWFrZVVuaXF1ZTxJbnRl
cnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEuaW50ZXJzZWN0
aW9uT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKQEAgLTM2NTgsNyArMzY1OCw3IEBAIFJlc2l6ZU9ic2Vy
dmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlUmVzaXplT2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRv
JiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEu
cmVzaXplT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVy
RGF0YShzdGQ6Om1ha2VfdW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJh
cmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YShtYWtlVW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0
YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRhdGEoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IGQ5ZTY2MzQ5Y2JkYmEw
YmI4MWQyYWNmYmZkYzBkNDMzNzhjNjU4ZGIuLjBiMDlkMDgyYzM2ZWRkZDg0YjljZGU5ODgyNTI3
MmRiNWY5NmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpcwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvIGxpc3RlbmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZl
bnRMaXN0ZW5lclZlY3Rvcj4oKTsKKyAgICBhdXRvIGxpc3RlbmVycyA9IG1ha2VVbmlxdWU8RXZl
bnRMaXN0ZW5lclZlY3Rvcj4oKTsKICAgICBsaXN0ZW5lcnMtPnVuY2hlY2tlZEFwcGVuZChSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKSk7
CiAgICAgbV9lbnRyaWVzLmFwcGVuZCh7IGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lcnMpIH0p
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggOWU5MzA4YmI1
ZGExNDYxZTM1OGUzY2M2MmZlYWZkY2ZjZDBjYzdhZC4uNWI2YWI2ODc1NWI2MWJmZTJkNGE2OGJj
YmU3NTI0ZmQwZGRhYmI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0zMzksMTMgKzMz
OSwxMyBAQCBzdHJ1Y3QgRXZlbnROYW1lcyB7CiAgICAgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNI
KERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKQogI3VuZGVmIERPTV9FVkVOVF9OQU1FU19ERUNMQVJF
CiAKLSAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBzdGQ6Om1ha2VfdW5p
cXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgorICAgIC8vIEZJWE1FOiBU
aGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIG1ha2VVbmlxdWUgYmVsb3cgZG9lcyBub3Qgd29yayBp
biB3aW5kb3dzIHBvcnQuCiAgICAgLy8KICAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4u
LiBBcmdzPgotICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5n
bGVfb2JqZWN0IHN0ZDo6bWFrZV91bmlxdWUoQXJncyYmLi4uKTsKKyAgICAvLyBmcmllbmQgdHlw
ZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBtYWtlVW5pcXVlKEFyZ3Mm
Ji4uLik7CiAgICAgLy8KICAgICAvLyBUaGlzIGNyZWF0ZSBmdW5jdGlvbiBzaG91bGQgYmUgZGVs
ZXRlZCBsYXRlciBhbmQgaXMgb25seSBmb3Iga2VlcGluZyBFdmVudE5hbWVzIGFzIHByaXZhdGUu
Ci0gICAgLy8gc3RkOjptYWtlX3VuaXF1ZSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorICAgIC8v
IG1ha2VVbmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KICAgICAvLwogICAgIHRlbXBsYXRl
PGNsYXNzLi4uIEFyZ3M+CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVzPiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCmluZGV4IGRiMTQy
OGQxZDQyNjA1OGNiNjViMWViNmZhY2EyM2RiOTg5MjgyYmQuLmEwYWQwYWQ3YzQ4MjY5MmU2Mzhl
NTcyODBmMWEyOTI0N2FjZWMxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCkBAIC0xMTUs
MTcgKzExNSwxNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFy
Z2V0LCBFdmVudCYgZXZlbnQpCiB7CiAgICAgdXNpbmcgTWFrZUV2ZW50Q29udGV4dCA9IHN0ZDo6
dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+ICgqKShOb2RlJiwgRXZlbnRUYXJnZXQqLCBFdmVudFRh
cmdldCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgTWFrZUV2ZW50Q29udGV4dCBtYWtl
RXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0
LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdl
dCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93
RGVwdGgpOwogICAgIH07CiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSB8fCBldmVudC5p
c0ZvY3VzRXZlbnQoKSkgewogICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5v
ZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQg
Y2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4
dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUs
IGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9Owog
ICAgIH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChpczxUb3VjaEV2ZW50Pihl
dmVudCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVu
dFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNo
YWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVu
dFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0
LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2VuZGlmCkBAIC0xNDks
NyArMTQ5LDcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdl
dCwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pigqbm9kZSkuZG9tV2luZG93KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNsb3NlZFNo
YWRvd0RlcHRoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZCht
YWtlVW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNs
b3NlZFNoYWRvd0RlcHRoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEV2ZW50UGF0
aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIHRhcmdldHMpCiAgICAgICAgIEFT
U0VSVCh0YXJnZXQpOwogICAgICAgICBOb2RlKiBvcmlnaW4gPSAqdGFyZ2V0cy5iZWdpbigpOwog
ICAgICAgICBpZiAoIXRhcmdldC0+aXNDbG9zZWRTaGFkb3dIaWRkZW4oKm9yaWdpbikpCi0gICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJn
ZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CisgICAgICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VV
bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CiAgICAgfQog
fQogCkBAIC0zMTcsNyArMzE3LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9y
PEV2ZW50VGFyZ2V0Kj4mIHRhcmdldHMpCiAgICAgZm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRz
KSB7CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBBU1NFUlQoIWlzPE5vZGU+KHRh
cmdldCkpOwotICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250
ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsKKyAgICAgICAgbV9w
YXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFy
Z2V0cy5iZWdpbigpLCAwKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVu
TWFuYWdlci5oCmluZGV4IGVkZDljYTI4ZWE0OTNhYzdjOTRjOGJkZTI4NWIxNjY2YzM4ODI1NTku
LmE3MGJjYWVjY2M4Nzk1YTRmNGJhNDI2ZTI1MTNkZmY3YTBmNzRiMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFJlbmRlclRy
ZWVCdWlsZGVyOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIEZ1bGxzY3JlZW5NYW5hZ2Vy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVu
TWFuYWdlcihEb2N1bWVudCYpOwogICAgIH5GdWxsc2NyZWVuTWFuYWdlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAppbmRleCBiM2EwNmU0
N2IwNzAwZjdjNDdkM2Q5YWVmMzNmNDQzNzI0ZTBjNTVlLi45NDBlZmNhZWQ4MzA5MWMyNTgzZmE5
ZTMzNmVmM2Q3OGM1NGFhM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQCB2b2lkIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbVN0cmluZyYgaWQsIElkVGFyZ2V0T2Jz
ZXJ2ZQogICAgIAogICAgIElkVG9PYnNlcnZlclNldE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
cmVnaXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxP
YnNlcnZlclNldD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8T2JzZXJ2ZXJTZXQ+KCk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQob2Jz
ZXJ2ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDdlN2EzNDc5
N2I4NjI5ZjYyZjdmNzg2YWIxNGM1YzZmNWJkOTBiMTQuLmNlODU2YmI1NWQ1YmQ5OWU2NmY1MGNi
NTViMGJlNDc5MGUwOTg0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoKSA9IGRl
ZmF1bHQ7CiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQmIGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCiAgICAgOiBV
SUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKGtleS50eXBl
KCkpLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMsIElzQ29tcG9zZWQ6OlllcywK
ICAgICAgICAga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3
LmNvcHlSZWYoKSwgMCwga2V5Lm1vZGlmaWVycygpLCBJc1RydXN0ZWQ6OlllcykKLSAgICAsIG1f
dW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ+KGtleSkpCisgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KG1ha2VVbmlxdWU8
UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRU
UklCVVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFz
a3MuaAppbmRleCBiNjMxODQxNTBmNWEzOTE0MjUyYjg0MmVkOWQwN2RlYWFmNmI0MDM2Li41ZDUw
YjdkNWQ3YjIzYTYxZGNiYmNjNWY4YjVmMWZiYWIyYmI0YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWljcm90YXNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rh
c2tzLmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgVm9pZE1pY3JvdGFzayBmaW5hbCA6IHB1Ymxp
YyBNaWNyb3Rhc2sgewogfTsKIAogY2xhc3MgTWljcm90YXNrUXVldWUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNaWNyb3Rhc2tRdWV1
ZT47CiAgICAgZnJpZW5kIGNsYXNzIE1pY3JvdGFzazsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA2NmM1ZWEwYjlkNjM0NTQ0MzgxMmZiMTMxZmZl
NWRiZTZjYTFkZGYzLi4xOTNmMjc4MDVhNWFlZDRiNjA2ZTljZWVhM2E5YTM1ZDhiMWU5OTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcg
QEAgc3RhdGljIHZvaWQgcXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2soKQog
ICAgIGlmIChtdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnKQogICAg
ICAgICByZXR1cm47CiAgICAgbXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVk
RmxhZyA9IHRydWU7Ci0gICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkpOworICAgIE1p
Y3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxNdXRhdGlv
bk9ic2VydmVyTWljcm90YXNrPigpKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1
ZXVlTXV0YXRpb25SZWNvcmQoUmVmPE11dGF0aW9uUmVjb3JkPiYmIG11dGF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAK
aW5kZXggNTJkYTYxZjc0ZjFmNTdhZjY4NTQ5ZjM2NjU2MzA2ZDhkMTcwM2M3OS4uMDI3NmU0MmJl
NWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5Y2JkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyCiAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFs
dWVGbGFnKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOwogfQogCiBib29sIE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNw
cAppbmRleCBjOGZjMDEwNjcyNDVlNGUzNjE5N2EyZjZkNGQxZTQ1NzU0N2JiYzhhLi5lNWM2ZGQx
NmE0ZGI2MDliYTUyNzNhNDdhZjdmYTY4MjY2MmEyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC02OCw3ICs2OCw3
IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6b2JzZXJ2ZWRTdWJ0cmVlTm9k
ZVdpbGxEZXRhY2goTm9kZSYgbm9kZSkKICAgICBtX29ic2VydmVyLT5zZXRIYXNUcmFuc2llbnRS
ZWdpc3RyYXRpb24oKTsKIAogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcykg
ewotICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKKyAgICAgICAgbV90cmFuc2llbnRS
ZWdpc3RyYXRpb25Ob2RlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2Rl
Pj4+KCk7CiAKICAgICAgICAgQVNTRVJUKCFtX25vZGVLZXB0QWxpdmUpOwogICAgICAgICBtX25v
ZGVLZXB0QWxpdmUgPSAmbV9ub2RlOyAvLyBCYWxhbmNlZCBpbiB0YWtlVHJhbnNpZW50UmVnaXN0
cmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3NmQ0ZWE5ZDczMGE5MjM3MmE5ZjhlN2E2ZDhm
NjdkMDBmZDNkYmY1Li5jYWJmMWViNThjOWMyM2NhZDg4NWJkMDFkZjEyMmI2NTFhZTAyYmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC0zOTgsOSArMzk4LDkgQEAgdm9pZCBOb2RlOjptYXRlcmlhbGl6
ZVJhcmVEYXRhKCkKIHsKICAgICBOb2RlUmFyZURhdGEqIGRhdGE7CiAgICAgaWYgKGlzPEVsZW1l
bnQ+KCp0aGlzKSkKLSAgICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJhcmVE
YXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2Uo
KTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKICAgICBlbHNlCi0g
ICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVu
ZGVyZXIpLnJlbGVhc2UoKTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8Tm9kZVJhcmVEYXRh
PihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOwogICAgIEFTU0VSVChkYXRhKTsKIAogICAg
IG1fZGF0YS5tX3JhcmVEYXRhID0gZGF0YTsKQEAgLTIyMTUsNyArMjIxNSw3IEBAIEV2ZW50VGFy
Z2V0RGF0YSYgTm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKIAogICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soc19ldmVudFRhcmdldERhdGFNYXBMb2NrKTsKICAgICBzZXRIYXNFdmVudFRh
cmdldERhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhp
cywgc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICByZXR1cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBtYWtlVW5pcXVlPEV2
ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIE5vZGU6OmNsZWFy
RXZlbnRUYXJnZXREYXRhKCkKQEAgLTIyODcsNyArMjI4Nyw3IEBAIHZvaWQgTm9kZTo6cmVnaXN0
ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9i
c2VydmVyCiAgICAgfQogCiAgICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKLSAgICAgICAgcmVnaXN0
cnkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4o
b2JzZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKKyAgICAgICAgcmVn
aXN0cnkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4ob2Jz
ZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKICAgICAgICAgcmVnaXN0
cmF0aW9uID0gcmVnaXN0cnkubGFzdCgpLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCmluZGV4IDc2OTBkNTk5ZmNhN2RjOTljYjQ5ZTE2MGZiZTJhZmFkZGYwMGNkZjQu
Ljc2NmQ2N2YzZjZkNjI5YWYwODk0MmFkYzIzZTJjMjJjMjlmM2U0NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKQEAgLTI4MSw3ICsyODEsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBw
dWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgTm9kZUxpc3RzTm9kZURhdGEmIGVuc3VyZU5v
ZGVMaXN0cygpCiAgICAgewogICAgICAgICBpZiAoIW1fbm9kZUxpc3RzKQotICAgICAgICAgICAg
bV9ub2RlTGlzdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOworICAg
ICAgICAgICAgbV9ub2RlTGlzdHMgPSBtYWtlVW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOwog
ICAgICAgICByZXR1cm4gKm1fbm9kZUxpc3RzOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OSw3IEBA
IGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsKICAgICBOb2Rl
TXV0YXRpb25PYnNlcnZlckRhdGEmIGVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkKICAgICB7
CiAgICAgICAgIGlmICghbV9tdXRhdGlvbk9ic2VydmVyRGF0YSkKLSAgICAgICAgICAgIG1fbXV0
YXRpb25PYnNlcnZlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVy
RGF0YT4oKTsKKyAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBtYWtlVW5pcXVl
PE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICptX211dGF0aW9u
T2JzZXJ2ZXJEYXRhOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
ZGlvQnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vw
cy5jcHAKaW5kZXggNTMzN2M1OGNkZmJiYWFiMjMwMTg0NTAyNjM4ZGM2MzQ0OWY3OTZhYy4uNjFi
YmM0ZWRmZjkzNGE2NDQ2ZWEyNTY3NTU2NjNmZDU0Njg3N2UzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCkBAIC0xOTgsMTEgKzE5OCwxMSBAQCB2b2lkIFJhZGlv
QnV0dG9uR3JvdXBzOjphZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQotICAgICAgICBtX25hbWVU
b0dyb3VwTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKKyAgICAgICAg
bV9uYW1lVG9Hcm91cE1hcCA9IG1ha2VVbmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CiAKICAgICBh
dXRvJiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50Lm5hbWUoKS5pbXBsKCks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWdyb3VwKQotICAgICAgICBncm91
cCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFkaW9CdXR0b25Hcm91cD4oKTsKKyAgICAgICAgZ3JvdXAg
PSBtYWtlVW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CmluZGV4IGM4MjVhN2VkZWU2YmIyZDVmNTE2YzZkM2U2ZWE3NDEwZTZlY2M3NTYuLjA0YWZlOWQ3
OGFkMGJkMTAyOGE2NzAzYzBmYzNkNGY2NTNiMTNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM3OSw4ICszNzksOCBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbgogewogICAgIGlmIChtX2luRGlzcGF0Y2hFcnJvckV2ZW50KSB7CiAg
ICAgICAgIGlmICghbV9wZW5kaW5nRXhjZXB0aW9ucykKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4
Y2VwdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGlu
Z0V4Y2VwdGlvbj4+PigpOwotICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAg
ICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBtYWtlVW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOworICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5h
cHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE0LDkgKzQxNCw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihKU0M6OkV4ZWNTdGF0
ZSYgc3RhCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogIiwgcmVzdWx0TWVzc2FnZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykK
LSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAg
ICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgZWxzZQotICAgICAgICBt
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7CiAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92
ZShtZXNzYWdlKSk7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBSZWplY3RlZFByb21pc2VUcmFj
a2VyJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2Vy
U2xvdwogICAgIC8vIFdoZW4gaW5pdGlhbGl6aW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHZt
KCkgaXMgbm90IHJlYWR5LgogCiAgICAgQVNTRVJUKCFtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIp
OwotICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVqZWN0
ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOworICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJh
Y2tlciA9IG1ha2VVbmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOwog
ICAgIHJldHVybiAqbV9yZWplY3RlZFByb21pc2VUcmFja2VyLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggNTVkYzJjODdhNGFjMjAyZDcxYWRkYTY2ZDU5
NmI1ZmVhMGJjODg1Ni4uMjEwOWNlNGEyMjhjM2U3YmE4N2E0YmE1MmIyZGIyODIzNjA4NzEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIEV4
Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBTZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBT
dHJpbmcmIHNlbGVjdG9ycywgRG9jCiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbWF4aW11
bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUpCiAgICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRy
aWVzLnJhbmRvbSgpKTsKIAotICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIHN0
ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIG1ha2VV
bmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjk2M2I2ODM3OWQ4
OGYyN2E4NGUyZjFkYTY1MTUzODE4MDViMjkzYy4uNjc4NmMwZDIxZTFiMmMyYTU3ODUxYmQwODUx
NjRjMWExZTkyYzk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNTgsNyArNTgs
NyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93Um9v
dE1vZGUgdHlwZSkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRv
d1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50KQogICAgICwgbV90eXBlKHR5
cGUpCi0gICAgLCBtX3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0
aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMp
KQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYgc2xvCiAgICAg
OiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJl
ZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShTaGFkb3dSb290TW9kZTo6VXNl
ckFnZW50KQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3Bl
PigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0
aGlzKSkKICAgICAsIG1fc2xvdEFzc2lnbm1lbnQoV1RGTW92ZShzbG90QXNzaWdubWVudCkpCiB7
CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXBhcmVudFRyZWVTY29wZSgpIHx8ICZwYXJlbnRUcmVl
U2NvcGUoKS0+ZG9jdW1lbnRTY29wZSgpID09ICZuZXdEb2N1bWVudCk7CiAKICAgICAvLyBTdHls
ZSBzY29wZXMgYXJlIGRvY3VtZW50IHNwZWNpZmljLgotICAgIG1fc3R5bGVTY29wZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CisgICAgbV9zdHlsZVNjb3BlID0gbWFr
ZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkgPT0gJm5ld0RvY3Vt
ZW50KTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6YWRkU2xvdEVs
ZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzCiB7
CiAgICAgQVNTRVJUKCZzbG90LnJvb3ROb2RlKCkgPT0gdGhpcyk7CiAgICAgaWYgKCFtX3Nsb3RB
c3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxT
bG90QXNzaWdubWVudD4oKTsKKyAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IG1ha2VVbmlxdWU8
U2xvdEFzc2lnbm1lbnQ+KCk7CiAKICAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+YWRkU2xv
dEVsZW1lbnRCeU5hbWUobmFtZSwgc2xvdCwgKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90
QXNzaWdubWVudC5jcHAKaW5kZXggYTQxOWRkYTUyOGFjY2JkYTZkZTlkZGYxYTU0ODY0Y2ZkZjkx
NjBlZi4uNDVjMDhlYTM2YWZlMTM5N2JlMGVjYmZiMjllMjI4ZWNkMGM5OTA3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTbG90
QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwg
SFRNTFNsb3RFbGVtZW4KICAgICAgICAgLy8gdG8gYXZvaWQgYWx3YXlzIGhhdmluZyBhIHZlY3Rv
ciBvZiBhbGwgY2hpbGQgbm9kZXMgb2YgYSBzaGFkb3cgaG9zdC4KICAgICAgICAgaWYgKHNsb3RO
YW1lID09IGRlZmF1bHRTbG90TmFtZSgpKQogICAgICAgICAgICAgbV9zbG90QXNzaWdubWVudHNJ
c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYXV0byYg
c2xvdCA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIGJvb2wgbmVlZHNTbG90Y2hh
bmdlRXZlbnQgPSBzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNB
c3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsIHNsb3QpOwpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQg
U2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbVN0cmlu
ZyYgc2xvdE5hbWUpCiAgICAgfQogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nsb3RzLmVuc3Vy
ZShzbG90TmFtZSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90Pigp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwogICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPmFzc2lnbmVkTm9kZXMuYXBwZW5kKCZjaGlsZCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDJmMjg3MGQxNjY5ZDQ0YmM2MTg0YTcyZWM2M2Vi
MzIzZjUyN2QzOWYuLjUzMWFjZGY0ZGQ2NTY4ZTBmNDYyMWViNTBkODlkZWU0NjdkNTVhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFRyZWVTY29wZTo6VHJl
ZVNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fcm9vdE5vZGUoc2hhZG93Um9vdCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkK
ICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKCZkb2N1bWVudCkKLSAgICAsIG1faWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Pigp
KQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgc2hhZG93Um9vdC5zZXRUcmVlU2NvcGUoKnRoaXMp
OwogfQpAQCAtNzMsNyArNzMsNyBAQCBUcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKGRvY3VtZW50KQogICAgICwgbV9kb2N1bWVudFNjb3Bl
KGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUobnVsbHB0cikKLSAgICAsIG1faWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgZG9jdW1lbnQuc2V0VHJlZVNjb3Bl
KCp0aGlzKTsKIH0KQEAgLTE0MSw3ICsxNDEsNyBAQCBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBU
cmVlU2NvcGU6OmdldEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50SQog
dm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBlbGVt
ZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgbm90aWZ5T2JzZXJ2ZXJzKQogewogICAgIGlm
ICghbV9lbGVtZW50c0J5SWQpCi0gICAgICAgIG1fZWxlbWVudHNCeUlkID0gc3RkOjptYWtlX3Vu
aXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IG1h
a2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlJZC0+YWRk
KGVsZW1lbnRJZCwgZWxlbWVudCwgKnRoaXMpOwogICAgIGlmIChub3RpZnlPYnNlcnZlcnMpCiAg
ICAgICAgIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVu
dElkKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRC
eU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNjb3BlOjphZGRF
bGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50JiBlbGVtZW50
KQogewogICAgIGlmICghbV9lbGVtZW50c0J5TmFtZSkKLSAgICAgICAgbV9lbGVtZW50c0J5TmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9l
bGVtZW50c0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBt
X2VsZW1lbnRzQnlOYW1lLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0yMzks
NyArMjM5LDcgQEAgdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50JiBp
bWFnZU1hcCkKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1faW1h
Z2VNYXBzQnlOYW1lKQotICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBt
YWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9pbWFnZU1hcHNCeU5hbWUt
PmFkZCgqbmFtZSwgaW1hZ2VNYXAsICp0aGlzKTsKIH0KIApAQCAtMjYzLDcgKzI2Myw3IEBAIEhU
TUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoY29uc3Qg
QXRvbVN0cmluZ0ltcGwmIG5hbWUsIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAg
aWYgKCFtX2ltYWdlc0J5VXNlbWFwKQotICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gc3RkOjpt
YWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2ltYWdlc0J5VXNl
bWFwID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIHJldHVybiBtX2lt
YWdlc0J5VXNlbWFwLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0zMDAsNyAr
MzAwLDcgQEAgSFRNTExhYmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJlbEVsZW1lbnRGb3JJZChj
b25zdCBBdG9tU3RyaW5nJiBmb3JBdHRyaWJ1dGVWYWwKIAogICAgIGlmICghbV9sYWJlbHNCeUZv
ckF0dHJpYnV0ZSkgewogICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgbWFwIG9uIGZpcnN0IGFjY2Vz
cy4KLSAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJl
ZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IG1h
a2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGxh
YmVsIDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTExhYmVsRWxlbWVudD4obV9yb290Tm9kZSkpIHsK
ICAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvclZhbHVlID0gbGFiZWwuYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCA3OTM0MmM0OTc3NTNkOWExNTI2ZTA1NTU0OWZjNzc5NzIxNGJmNmU0Li44OTFjMTI4
OGM2ZTMxNGFjY2FlOWI2MjcxOTc4MTg4MWU3NDJkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC0zODAsMTIgKzM4MCwxMiBAQCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAg
IHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5OgogICAg
IGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDdXQ6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1v
ZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCkpOwogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUGxhaW5U
ZXh0OgogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSkgewogICAgICAgICAgICAgYXV0byBwbGFp
blRleHRUeXBlID0gInRleHQvcGxhaW4iX3M7CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dCA9
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT5yZWFkU3RyaW5nKHBsYWluVGV4
dFR5cGUpOwotICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxT
dGF0aWNQYXN0ZWJvYXJkPigpOworICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAgICAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVT
dHJpbmcocGxhaW5UZXh0VHlwZSwgcGxhaW5UZXh0KTsKICAgICAgICAgICAgIHJldHVybiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpT
dG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpKTsKICAgICAgICAgfQpAQCAt
Mzk2LDEwICszOTYsMTAgQEAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFu
c2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCwKICAgICBjYXNlIENsaXBi
b2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6
QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVQYXN0ZToKLSAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0
aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwg
bWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3Vu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZh
bGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogfQogCiAvLyBSZXR1cm5zIHdo
ZXRoZXIgY2FsbGVyIHNob3VsZCBjb250aW51ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5n
Iiwgd2hpY2ggaXMgdGhlIHNhbWUgYXMKQEAgLTExODMsOSArMTE4Myw5IEBAIHZvaWQgRWRpdG9y
OjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQog
CiBFZGl0b3I6OkVkaXRvcihGcmFtZSYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAg
ICwgbV9raWxsUmluZyhzdGQ6Om1ha2VfdW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCi0gICAgLCBt
X3NwZWxsQ2hlY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQotICAg
ICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQorICAgICwgbV9raWxsUmluZyhtYWtlVW5pcXVlPFBB
TDo6S2lsbFJpbmc+KCkpCisgICAgLCBtX3NwZWxsQ2hlY2tlcihtYWtlVW5pcXVlPFNwZWxsQ2hl
Y2tlcj4oZnJhbWUpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKG1ha2VVbmlx
dWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQogICAgICwgbV9lZGl0b3JVSVVw
ZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjplZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpCiAjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAsIG1fdGVsZXBob25lTnVtYmVyRGV0ZWN0aW9uVXBkYXRlVGltZXIoKnRoaXMsICZF
ZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAwZGRjMTVi
ZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3NjQ1ZjU0Nzk0Li4yYzIwMjhjYzYzYzFiOTM4YmM2NmZm
NGJlYTU4OTkyNThlOWE0YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTYzMSw3ICsxNjMxLDcgQEAgdm9pZCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6dXBkYXRlTm9kZXNJbnNlcnRlZChOb2RlICpub2RlKQogUmVw
bGFjZW1lbnRGcmFnbWVudCogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2Vt
ZW50RnJhZ21lbnQoKQogewogICAgIGlmICghbV9yZXBsYWNlbWVudEZyYWdtZW50KQotICAgICAg
ICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VtZW50RnJh
Z21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOworICAg
ICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBtYWtlVW5pcXVlPFJlcGxhY2VtZW50RnJhZ21l
bnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIHJl
dHVybiBtX3JlcGxhY2VtZW50RnJhZ21lbnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAppbmRleCAzYjQwNjg4Y2I0ZGE2
NTZiMzQ0NTg3YzA4ODg2MzZjMGFiMTU2NmNmLi5mOWI2NGM1YzhjODk2YmYzMjI2MzA4NzA5ZjI2
YWE2NjdlMWVkOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
blJlY3RHYXRoZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25S
ZWN0R2F0aGVyZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZWxlY3Rp
b25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyPiBTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5k
CiAgICAgbV9nYXBSZWN0cy5jbGVhcigpOwogICAgIG1faXNUZXh0T25seSA9IHRydWU7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPE5vdGlmaWVyPigqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCAxODk2ZTFhMjI4MWMx
YTliMDQ2ZThlZmFjZDkxMTlhZjVlMjc3ZDU2Li5mMWQxOWMxMDExNGMxYTk4NWI4YjQyNmZhNjhm
ZGI4MTIyYTYwYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBA
IC02NTAsNyArNjUwLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAg
ICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9mZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3Ro
KCk7CiAgICAgICAgIGlmICghbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSB8fCAmbV9mbG93UnVuUmVz
b2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZibG9ja0Zsb3cpIHsKICAgICAgICAgICAgIG1fYWNjdW11
bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93ID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA/IDAg
OiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBtX2Zsb3dSdW5S
ZXNvbHZlckNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNv
bHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKKyAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVy
Q2FjaGUgPSBtYWtlVW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zs
b3csICpsYXlvdXQpOwogICAgICAgICB9CiAgICAgICAgIC8vIFNraXAgdG8gbV9vZmZzZXQgcG9z
aXRpb24uCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5yYW5n
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCAwYTgzYWMwOTU5Mjc0YzA3ODBkNWQ3YjM4NWYwMTljMGU4
NmUzYzc0Li45Y2Y4NmE0YTE1ZjFjN2M2ZjAyODE1NTY0N2FmYTAwNTlhZTNiNmZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0zODAsNyAr
MzgwLDcgQEAgSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcihjb25zdCBQb3NpdGlvbiYgc3Rh
cnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiAgICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9IGZhbHNl
OwogICAgIF9mbGFncy5yZWFjaGVkRW5kID0gZmFsc2U7CiAgICAgCi0gICAgX2NhY2hlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTENvbnZlcnRlckNhY2hlcz4oKTsKKyAgICBfY2FjaGVzID0gbWFr
ZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVzPigpOwogfQogCiBIVE1MQ29udmVydGVyOjp+SFRN
TENvbnZlcnRlcigpCkBAIC01NTEsNyArNTUxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBIVE1MQ29u
dmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KEVsZW1lbnQmIGUK
IAogICAgIGF1dG8gcmVzdWx0ID0gbV9jb21wdXRlZFN0eWxlcy5hZGQoJmVsZW1lbnQsIG51bGxw
dHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1l
bnQsIHRydWUpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxD
b21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxlbWVudCwgdHJ1ZSk7CiAgICAgQ29tcHV0ZWRTdHls
ZUV4dHJhY3RvciYgY29tcHV0ZWRTdHlsZSA9ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAg
IHJldHVybiBjb21wdXRlZFN0eWxlLnByb3BlcnR5VmFsdWUocHJvcGVydHlJZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5oCmluZGV4IDI1NzdkNWE3Njk2ODE2MjJmNWQwYTdiNjNmZjRkMDlkODhjOTVkYzEu
LjI5YzVhOGRhN2VlMzI1NTYxMjY1NjkwNTRlMzAyMjI4YTUzMDE4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNfQ0xBU1MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cigpIHsgfQogICAgIC8vIFJldHVybnMgYSBjb250ZXh0IElELgpAQCAtNTIsNiArNTMsNyBAQCBj
bGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgewogICAgIHZvaWQgZGlzbWlzc0FsdGVy
bmF0aXZlcygpOwogCiAgICAgY2xhc3MgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcigpIHsgfQogICAgICAgICB1aW50NjRfdCBh
ZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmYjQzNzE2MzAzYWUyNWI4MTkyOTJkMjcxY2Ey
Y2FlNjg0YjljMDJlLi5jM2M4ZjhiMzI0YmZlY2RjZTllNWM0ZWIxOWI1Yjc0NjA4OTI4YzNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpCiB7CiAgICAg
YXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50
cygpOwogICAgIAotICAgIGF1dG8gcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4o
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgIHBhZ2UtPnNldElzRm9yU2FuaXRpemlu
Z1dlYkNvbnRlbnQoKTsKICAgICBwYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxz
ZSk7CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCBhMDk1ZWVhZTliMmE3
OTdiZGFiYWUzNDk0MGZkYzZhM2NlMzA0MjRiLi5kNTgxMTJmZjliZGY2Y2Q3ZDE5ODU1MmQ4NjY5
OTFmODViN2ExYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwCkBAIC05NCwxMSArOTQsMTEgQEAgc3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChGdW5j
dGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1
ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZN
b3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1ZXVlLmdldCgpLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0
aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogfQogCiBBc3luY0ZpbGVTdHJlYW06
OkFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2ludGVy
bmFscyhzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFscz4oY2xpZW50KSkKKyAgICA6IG1faW50ZXJu
YWxzKG1ha2VVbmlxdWU8SW50ZXJuYWxzPihjbGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCA5YWQz
ZGE5ZWZmZjBmM2E3MDdhMDYwMWY3ODYwMWQ1ZDg2ODI1OGY1Li45OWE3YjVjNmY5ODdhMTRiYTE5
MDk0NTg5ODdhZTg0ZWNmYzRmMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5j
cHAKQEAgLTEzOSw3ICsxMzksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGaWxlUmVhZGVyOjpyZWFk
SW50ZXJuYWwoQmxvYiYgYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cAogICAgIG1fc3Rh
dGUgPSBMT0FESU5HOwogICAgIG1fZXJyb3IgPSBudWxscHRyOwogCi0gICAgbV9sb2FkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0
PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0aGlzKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5p
cXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJM
b2FkZXJDbGllbnQqPih0aGlzKSk7CiAgICAgbV9sb2FkZXItPnNldEVuY29kaW5nKG1fZW5jb2Rp
bmcpOwogICAgIG1fbG9hZGVyLT5zZXREYXRhVHlwZShtX2Jsb2ItPnR5cGUoKSk7CiAgICAgbV9s
b2FkZXItPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDZhZTU1MmNiY2VmYmEzNWFmNTQ5NGFkODBh
MTQ3MzFkMDBhY2EzZDEuLjVjOGYxOGUzZGFiMGViMjU5N2FkNWU4MjIxMzliZDg4ZmYzMjRlMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0xNjMsNyArMTYzLDcg
QEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFtZSkKIAogICAgIC8vIENyZWF0
ZSB0aGUgQ2FjaGVkRnJhbWVzIGZvciBhbGwgRnJhbWVzIGluIHRoZSBGcmFtZVRyZWUuCiAgICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG1fY2hpbGRGcmFtZXMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkRnJhbWU+KCpjaGlsZCkpOworICAgICAgICBt
X2NoaWxkRnJhbWVzLmFwcGVuZChtYWtlVW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKIAog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpKTsKICAgICBSRUxFQVNF
X0FTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBDYWNoZWRG
cmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUmIGZyYW1lKQogICAgIC8vIEFjdGl2ZSBET00gb2JqZWN0
cyBtdXN0IGJlIHN1c3BlbmRlZCBiZWZvcmUgd2UgY2FjaGUgdGhlIGZyYW1lIHNjcmlwdCBkYXRh
LgogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hl
KTsKIAotICAgIG1fY2FjaGVkRnJhbWVTY3JpcHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3Jp
cHRDYWNoZWRGcmFtZURhdGE+KGZyYW1lKTsKKyAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9
IG1ha2VVbmlxdWU8U2NyaXB0Q2FjaGVkRnJhbWVEYXRhPihmcmFtZSk7CiAKICAgICBtX2RvY3Vt
ZW50LT5kb21XaW5kb3coKS0+c3VzcGVuZEZvclBhZ2VDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRQYWdlLmNwcAppbmRleCAwNjg2YWU4ZmVjZTQ0ZjFlZjY5MGU1ZjhmNmFiZTg0
NjE0NjNkZjdkLi45NzQ3YTQwNDAxNmFjODY4ZDJmNzc5NmU1MzMwNDM2ZmZhNTg3NDlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgREVGSU5F
X0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRQYWdl
Q291bnRlciwgKCJDYWNoZWQKIENhY2hlZFBhZ2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSkKICAg
ICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9leHBpcmF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpu
b3coKSArIFNlY29uZHMocGFnZS5zZXR0aW5ncygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9u
SW50ZXJ2YWwoKSkpCi0gICAgLCBtX2NhY2hlZE1haW5GcmFtZShzdGQ6Om1ha2VfdW5pcXVlPENh
Y2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgpKSkKKyAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKG1h
a2VVbmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2UubWFpbkZyYW1lKCkpKQogewogI2lmbmRlZiBOREVC
VUcKICAgICBjYWNoZWRQYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAppbmRleCAwMDI5NjU1ODkyZDE1NGNiNTA0M2UxZGEyMjgyNTg3OWY2M2Vk
ZGU1Li4zYmEyNGI5ZGUyZTk5NDE5NmEwZGY5MmZjMzY2M2NlZWE1YmY0Yjk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBAIC00NzgsNyArNDc4LDcgQEAgYm9vbCBQYWdlQ2Fj
aGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAg
ICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUu
CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2Fs
bG93ZWRTY29wZTsKIAotICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOworICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VV
bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9
IFBydW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCA3YTk5MWYxN2IwM2Q4M2U5
MDVmN2QzZTA2MDdiZjUyYTk5YjgwZTQ1Li5iMTRkMzEwMTU4YjY0NWZlODY5OWY3Zjk5ZjQxODU4
YmQ1NWFlMjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMzMiw3
ICszMzIsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXRocykKICAgICAgICAgbV9maWxlSWNvbkxvYWRlci0+aW52YWxpZGF0ZSgpOwog
CiAgICAgRmlsZUljb25Mb2FkZXJDbGllbnQmIGNsaWVudCA9ICp0aGlzOwotICAgIG1fZmlsZUlj
b25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOworICAg
IG1fZmlsZUljb25Mb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOwog
CiAgICAgY2hyb21lLT5sb2FkSWNvbkZvckZpbGVzKHBhdGhzLCAqbV9maWxlSWNvbkxvYWRlcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5k
ZXggODA2ZTVmM2RhZWJlMjk0ZTMzMDIzMGRmYTVlZGU4YzkyZDU4YzMxOC4uMTdjMDI3Y2ZkZmEx
YmI0M2I2NDVlZTYyZDU4YzhhYzMyMDZkODc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRm9ybUFz
c29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQog
dm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyKCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihhc0hUTUxFbGVt
ZW50KCkuaXNDb25uZWN0ZWQoKSk7Ci0gICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxl
bWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7
CisgICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRF
bGVtZW50Ojpmb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuY3BwCmluZGV4IGVhNWIwOWFhYTA4ZGIyNzM5NjFiOTUzNDIyZjAzZGQ3YWQ2
ZTQ2NzEuLmQwZTAzZjU2Y2IwNjNlMjdmMTEzNDBhMjcxM2Q0Zjk2MWI1YWU2NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNhdmVkRm9ybVN0YXRlPiBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29u
c3QgVmVjdG9yPFN0cmluZz4KICAgICBzaXplX3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5k
ZXgrK10udG9VSW50KCk7CiAgICAgaWYgKCFpdGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9y
bVN0YXRlPigpOworICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9y
bVN0YXRlPigpOwogICAgIHdoaWxlIChpdGVtQ291bnQtLSkgewogICAgICAgICBpZiAoaW5kZXgg
KyAxID49IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMzY1LDEzICszNjUsMTMgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQog
c3RkOjp1bmlxdWVfcHRyPEZvcm1Db250cm9sbGVyOjpTYXZlZEZvcm1TdGF0ZU1hcD4gRm9ybUNv
bnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKGNvbnN0IEZvcm1FbGVtZW50TGlzdEhh
c2hTZXQmIGNvbnRyb2xMaXN0KQogewogICAgIEZvcm1LZXlHZW5lcmF0b3Iga2V5R2VuZXJhdG9y
OwotICAgIGF1dG8gc3RhdGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFw
PigpOworICAgIGF1dG8gc3RhdGVNYXAgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigp
OwogICAgIGZvciAoYXV0byYgY29udHJvbCA6IGNvbnRyb2xMaXN0KSB7CiAgICAgICAgIGlmICgh
Y29udHJvbC0+c2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgYXV0byYgZm9ybVN0YXRlID0gc3RhdGVNYXAtPmFkZChr
ZXlHZW5lcmF0b3IuZm9ybUtleSgqY29udHJvbCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgICAgIGlmICghZm9ybVN0YXRlKQotICAgICAgICAgICAgZm9ybVN0YXRlID0g
c3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKKyAgICAgICAgICAgIGZvcm1TdGF0
ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CiAgICAgICAgIGZvcm1TdGF0ZS0+YXBw
ZW5kQ29udHJvbFN0YXRlKGNvbnRyb2wtPm5hbWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9s
LT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFwOwpA
QCAtNDAzLDcgKzQwMyw3IEBAIEZvcm1Db250cm9sU3RhdGUgRm9ybUNvbnRyb2xsZXI6OnRha2VT
dGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsCiAgICAgaWYgKG1fc2F2
ZWRGb3JtU3RhdGVNYXAuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0
ZSgpOwogICAgIGlmICghbV9mb3JtS2V5R2VuZXJhdG9yKQotICAgICAgICBtX2Zvcm1LZXlHZW5l
cmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1LZXlHZW5lcmF0b3I+KCk7CisgICAgICAgIG1f
Zm9ybUtleUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKICAgICBT
YXZlZEZvcm1TdGF0ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQo
bV9mb3JtS2V5R2VuZXJhdG9yLT5mb3JtS2V5KGNvbnRyb2wpLmltcGwoKSk7CiAgICAgaWYgKGl0
ID09IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJv
bFN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4
IDEwNDdjNThlZWMzNTM2ZTNkMzk5M2E3YjZlNTg2MjViMDE1OTUyZjEuLmViOWJkMDY4NWQ1OTJl
YTY5MjMxM2FkNDE2YzI3ZDdmMjgyNjFmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVu
dDo6aGFzUmVsKFJlbGF0aW9uIHJlbGF0aW9uKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MQW5j
aG9yRWxlbWVudDo6cmVsTGlzdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIHsKLSAg
ICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nh
c3Q8SFRNTEFuY2hvckVsZW1lbnQmPigqdGhpcyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9j
dW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlx
dWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBI
VE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogI2lm
IFVTRShTWVNURU1fUFJFVklFVykKICAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKHRva2VuLCAibm9yZWZlcnJlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9r
ZW4sICJub29wZW5lciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJhciIpOwog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCBhYzA3NThk
ZTgzYjA0ODgyYTVkODkyMmZkNDA1NTQ4ZWY5NTZkY2EyLi40OWFiZmE1ZjcwYTdhYjk3ZDczZTJj
ODJiNzY3YjA1MzUxYWRlZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
Y3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgSFRNTEFyZWFFbGVtZW50OjppbnZhbGlkYXRlQ2Fj
aGVkUmVnaW9uKCkKIGJvb2wgSFRNTEFyZWFFbGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBv
aW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBzaXplLCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQpCiB7CiAgICAgaWYgKG1fbGFzdFNpemUgIT0gc2l6ZSkgewotICAgICAgICBtX3JlZ2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4oZ2V0UmVnaW9uKHNpemUpKTsKKyAgICAgICAgbV9yZWdp
b24gPSBtYWtlVW5pcXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7CiAgICAgICAgIG1fbGFzdFNp
emUgPSBzaXplOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAppbmRleCBhOWJiNGZiOGUwNjNlNzAxNWYxYTY0ZTdkODZmZWIzNThmZmMyN2NkLi44OTRl
NjM5OGI4YTRlY2RkZWRmOWUxOTg4YTQxNGMxNzFiMjg2OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4m
JiBidWZmZXIpIGNvCiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKHRydWUpOwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KGRlZmF1bHRJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAg
bV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2Nv
bnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIg
PSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNv
bnRleHQoKSk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKEhUTUxFbGVtZW50OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIEhUTUxFbGVtZW50OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtZW1v
cnlDb3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA5NzZj
OGUwYTlhMDZhOWI4M2Q2Y2E5NDFiZDVkZDM3YjlmMzM4NWM1Li4zMjgxNzZiNjllOGNkMWJmMjJk
NGU3NjMyN2U5ZjI5Mjk2OGFiNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVk
RWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVj
dGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBsZW5n
dGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggZjE1Nzg3NGU2ZDUzNGUz
ZjYxMzRlNGE1ZGY0ZjUxYmUyZjY3YTMxYS4uNjBkZDFmYjI1MjAzODYwZDNkOTJhN2E1YWNiMzMx
YzJhYjA0YjU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNw
cApAQCAtODgsNyArODgsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBEZXRhaWxzU2xvdEFzc2lnbm1l
bnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5vZGUmIGNoaWxkKQogUmVmPEhUTUxEZXRh
aWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGF1dG8gZGV0YWlscyA9IGFk
b3B0UmVmKCpuZXcgSFRNTERldGFpbHNFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAg
ZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6
bWFrZV91bmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7CisgICAgZGV0YWlscy0+YWRk
U2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8RGV0YWls
c1Nsb3RBc3NpZ25tZW50PigpKSk7CiAgICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ4ODkzYjFm
MDk0OWVmMTAyZTI5ZDAzYzU4OTY3YzRkZDRmM2ZkNWEuLmUxNTMxNmExOWVlZmI0NzdlM2YzNjdj
ODBmN2MzYzFhMmE2MzRiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcApAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkKICAgICBpZiAocmVuZGVy
ZXIoKSAmJiB3aWxsVmFsaWRhdGUoKSkKICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNz
YWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgaWYgKCFtX3ZhbGlkYXRpb25NZXNzYWdlKQot
ICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxWYWxpZGF0aW9u
TWVzc2FnZT4odGhpcyk7CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBtYWtlVW5pcXVl
PFZhbGlkYXRpb25NZXNzYWdlPih0aGlzKTsKICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT51cGRh
dGVWYWxpZGF0aW9uTWVzc2FnZShtZXNzYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCA2ZWMyMmQ3NzQ5ZjJm
NzhiZDMxZWY3N2VhNjM2MDczYjcxYzU5ZmYyLi5hMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZl
Njg5YzNiMWM2OGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAo
aGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNo
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAg
IGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsK
IAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZ0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBjNzZkNDkzYTYyY2VkODMw
ODgwMWI2YjAxZDMzMjFlMGEzMzNmNTFkLi40MzVkOTUxNGRkMjlkZGQxZjZkZmIxZDE2OWUzNDdl
MzE1YTMwMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03
OTEsNyArNzkxLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKEZv
cm1OYW1lZEl0ZW0qIGl0ZW0sIGNvbnN0IEF0b21TdHJpbmcmIHAKICAgICBpZiAocGFzdE5hbWUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX3Bhc3ROYW1lc01hcCkKLSAg
ICAgICAgbV9wYXN0TmFtZXNNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhc3ROYW1lc01hcD4oKTsK
KyAgICAgICAgbV9wYXN0TmFtZXNNYXAgPSBtYWtlVW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKICAg
ICBtX3Bhc3ROYW1lc01hcC0+c2V0KHBhc3ROYW1lLmltcGwoKSwgaXRlbSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMDJkN2Q0ZTRmYmU4NmY1
MjcwZjU4NGI2YThkZWI5YmU0NmY5N2FhOS4uYjFjODIxZGQ5YmFiYTJhMjBjYjI5ZTFjMWNmZDkw
ZDcxZmVjNThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxJRnJhbWVFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIERPTVRva2VuTGlzdCYg
SFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3goKQogewogICAgIGlmICghbV9zYW5kYm94KSB7Ci0g
ICAgICAgIG1fc2FuZGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywg
c2FuZGJveEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBt
X3NhbmRib3ggPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBb
XShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiBTZWN1
cml0eUNvbnRleHQ6OmlzU3VwcG9ydGVkU2FuZGJveFBvbGljeSh0b2tlbik7CiAgICAgICAgIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBj
MjVjZGQ4MGQ1ZjhhNzcwYTFkOTcwMDU3ODQ3YTg5YzU2ODNkYmQuLjM3NmM1MjE5NjRlMGY3MWI2
ZmQ5YzIxNzJkNjIwMWMyOTI1N2ExYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBI
VE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKIHsK
ICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlTG9hZGVy
ID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1h
Z2VMb2FkZXI7CiB9CiAKQEAgLTE2NDEsNyArMTY0MSw3IEBAIFJlZlB0cjxIVE1MRGF0YUxpc3RF
bGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpkYXRhTGlzdCgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBpZiAo
aXNDb25uZWN0ZWQoKSkKLSAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0ciksIHRoaXMpOworICAgICAgICBtX2xpc3RBdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1ha2VVbmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyPihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CiAg
ICAgZWxzZQogICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjg2MzRjYWRh
ZmExOGEwYTI3Y2NmNzI4ZjliYmY1NmNiN2Y3OGQxNi4uZjZhN2JjODAyNGZmYTVlNGJkNzFmNjlh
MjdjOTdjOGM5MzZiYjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cApAQCAtNDgxLDcgKzQ4MSw3IEBAIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzdHlsZVNoZWV0SXNM
b2FkaW5nKCkgY29uc3QKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpzaXplcygpCiB7
CiAgICAgaWYgKCFtX3NpemVzKQotICAgICAgICBtX3NpemVzID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXplc0F0dHIpOworICAgICAgICBtX3NpemVzID0gbWFrZVVu
aXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXplc0F0dHIpOwogICAgIHJldHVybiAqbV9zaXpl
czsKIH0KIApAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRj
aFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQogRE9NVG9rZW5MaXN0
JiBIVE1MTGlua0VsZW1lbnQ6OnJlbExpc3QoKQogewogICAgIGlmICghbV9yZWxMaXN0KSAKLSAg
ICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBI
VE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tl
bikgeworICAgICAgICBtX3JlbExpc3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMs
IEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRv
a2VuKSB7CiAgICAgICAgICAgICByZXR1cm4gTGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQo
ZG9jdW1lbnQsIHRva2VuKTsKICAgICAgICAgfSk7CiAgICAgcmV0dXJuICptX3JlbExpc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBmNzQwY2NhYzI0MmU5
ZTBmM2JjOGRkYzk1NzVmYjMyYTRlZjE5OGFmLi5mM2FjZmNkZTAwMDdhMjRmMjc1YTRjOTU0ZDUy
NTEyMDgzNzgyOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTQ4MSw3ICs0ODEsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKCkKIHsKLSAgICBtX21lZGlhU2Vzc2lv
biA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOworICAgIG1f
bWVkaWFTZXNzaW9uID0gbWFrZVVuaXF1ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CiAK
ICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuKTsKICAgICBtX21lZGlhU2Vz
c2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJl
UGFnZUNvbnNlbnRUb0xvYWRNZWRpYSk7CkBAIC0zMDI3LDcgKzMwMjcsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBj
b25zdCBNZWRpYVRpbQogCiAgICAgLy8gNSAtIElmIHRoZSBzZWVrIHdhcyBpbiByZXNwb25zZSB0
byBhIERPTSBtZXRob2QgY2FsbCBvciBzZXR0aW5nIG9mIGFuIElETCBhdHRyaWJ1dGUsIHRoZW4g
Y29udGludWUKICAgICAvLyB0aGUgc2NyaXB0LiBUaGUgcmVtYWluZGVyIG9mIHRoZXNlIHN0ZXBz
IG11c3QgYmUgcnVuIGFzeW5jaHJvbm91c2x5LgotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3Np
dGl2ZVRvbGVyYW5jZSk7CisgICAgbV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1Nl
ZWs+KG5vdywgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAg
ICBpZiAoZnJvbURPTSkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1
aW5nIHNlZWsgZnJvbSAiLCBub3csICIgdG8gIiwgdGltZSk7CiAgICAgICAgIG1fc2Vla1Rhc2tR
dWV1ZS5zY2hlZHVsZVRhc2soc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywg
dGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMGJhYjlm
YzlkNmVkYTFjMWJjMmE2MDk2ODNmMjc2ZmU3NjAzY2Y4Li5mMjRlODc2YTEzYjYxNTU5ZTJjOTk1
YmJhNGE1ZTQ1MjM0OTcwMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtOTkwLDYgKzk5MCw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICBSZWZQdHI8
TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAogICAgIHN0cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29u
c3QgTWVkaWFUaW1lJiBub3csIGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVk
aWFUaW1lJiBuZWdhdGl2ZVRvbGVyYW5jZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVy
YW5jZSkKICAgICAgICAgICAgIDogbm93KG5vdykKICAgICAgICAgICAgICwgdGFyZ2V0VGltZSh0
YXJnZXRUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRl
eCBkZDRmYTJkNzBlNGY0M2Y0MmI4MjIyZDM3ZDQ0MThmMWExMzFlZDg3Li41NmI3MjA2YWUzYmU4
ZjEwYTg4MTRhZTlhZmFjNjJiZmViNTYwOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1l
bnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogRE9NVG9rZW5MaXN0JiBI
VE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcigpCiB7CiAgICAgaWYgKCFtX3Rva2VucykKLSAgICAg
ICAgbV90b2tlbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0
dHIpOworICAgICAgICBtX3Rva2VucyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywg
Zm9yQXR0cik7CiAgICAgcmV0dXJuICptX3Rva2VuczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggZGRhOTQ0OWQ1N2FkNDIwODU4
NjI3ZGVkM2ZkZDkxODEzMjE1ZmUyYi4uNWI5OWQ1NTU1MzA0OTcwOTNjNmJjYTk5NTg3YzdhMmY3
MjU1OTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1
cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbigpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgIXVzZUZh
bGxiYWNrQ29udGVudCgpKSB7CiAgICAgICAgIGlmIChpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAg
ICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAg
ICAgICAgICAgICBpZiAobV9uZWVkc0ltYWdlUmVsb2FkKQogICAgICAgICAgICAgICAgIG1faW1h
Z2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAg
ICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAK
aW5kZXggMTBiYzA5ZmYwOTljODg4YjIyNjI2OTM5MGI4ZTFmOGJlNGNlMzk2Ny4uYjA0OTM5Yjlj
MmQ3MjcwMjEzNzljNWE0ZGQzNDA0N2Q4MTJhZDk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBTdW1tYXJ5U2xv
dEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU2xvdEFzc2lnbm1lbnQgewogUmVmPEhUTUxTdW1tYXJ5
RWxlbWVudD4gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIFJlZjxIVE1MU3VtbWFyeUVsZW1l
bnQ+IHN1bW1hcnkgPSBhZG9wdFJlZigqbmV3IEhUTUxTdW1tYXJ5RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwotICAgIHN1bW1hcnktPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRl
KGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOworICAg
IHN1bW1hcnktPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtl
VW5pcXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOwogICAgIHJldHVybiBzdW1tYXJ5OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBhNWU3NWFhZmY1
MmRkZjlmNTc1NDViYTA2N2VlYzc4OTg4OGRkOWFiLi42N2ZmMjEyNTJmMWI4ZTgzMTBhMWQ3Y2Ji
MjMyZWE4YzczOTM4YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5k
ZXJlcnMoKQogICAgIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwogICAgIGlmIChzaG91bGREaXNwbGF5
UG9zdGVySW1hZ2UoKSkgewogICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlz
KTsKKyAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRl
cj4oKnRoaXMpOwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwog
ICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgcmVuZGVyZXItPmltYWdlUmVzb3VyY2UoKS5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVy
LT5pbWFnZSgpKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgog
CiAgICAgICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAgICAgICAg
aWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1f
aW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAg
ICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJy
b3IoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNw
cAppbmRleCBkNWI5YmVkYmFkMDQ3MDQ2MWE1OGFiNWNiMDE0YTY4YzA0N2Q3ZmIwLi44NTQ1MWQx
NDM3MGUyNGNkN2Q0ZGQ1NjkwMTQ2MzczNWFkNjgzMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGQ6OnVuaXF1ZV9wdHI8UHVibGljVVJMTWFuYWdlcj4gUHVibGljVVJMTWFuYWdlcjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBwdWJs
aWNVUkxNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0
KTsKKyAgICBhdXRvIHB1YmxpY1VSTE1hbmFnZXIgPSBtYWtlVW5pcXVlPFB1YmxpY1VSTE1hbmFn
ZXI+KGNvbnRleHQpOwogICAgIHB1YmxpY1VSTE1hbmFnZXItPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcAppbmRleCA4YWY3M2E4YTAwNTQ5ODBhZDE3OTA2OTU2YTg0MzJhNmY5
Y2RiMTRiLi5mNWRhYjBmNDJmMmQwNTNlNzAzYzZjNTcyM2NhMTYwMzcxZDFhMmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcApAQCAtMTE1LDkgKzExNSw5IEBA
IHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIG1fbWVzc2FnZSA9IG1lc3Nh
Z2U7CiAgICAgaWYgKCFtX2J1YmJsZSkKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7Cisg
ICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNz
YWdlOjpidWlsZEJ1YmJsZVRyZWUpOwogICAgIGVsc2UKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VE
T01BbmRTdGFydFRpbWVyKTsKKyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0
aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKICAg
ICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKIH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZv
aWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKCkKICAgICBp
ZiAobWFnbmlmaWNhdGlvbiA8PSAwKQogICAgICAgICBtX3RpbWVyID0gbnVsbHB0cjsKICAgICBl
bHNlIHsKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAm
VmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0g
bWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxl
VHJlZSk7CiAgICAgICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdChzdGQ6Om1heCg1X3MsIDFfbXMg
KiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9u
KSk7CiAgICAgfQogfQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6
OnJlcXVlc3RUb0hpZGVNZXNzYWdlKCkKICAgICB9CiAKICAgICAvLyBXZSBtdXN0IG5vdCBtb2Rp
ZnkgdGhlIERPTSB0cmVlIGluIHRoaXMgY29udGV4dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0
TWVzc2FnZSgpLgotICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywg
JlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKKyAgICBtX3RpbWVyID0gbWFr
ZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJl
ZSk7CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKaW5kZXggYjE2Nzc4NDQyOGMzYmZlOWU2ZjE2YTc3ODQwZDNmM2JiOTcwNWI5Ni4uNTNj
OWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRjY2M1NmMwMjhhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RydWN0IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQg
ewogCiAgICAgRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKICAgICAgICAgOiBjb250ZXh0KFsm
XShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENv
bnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5
TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkp
OwogICAgICAgICB9KQogICAgIHsKICAgICB9CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBHcmFwaGlj
c0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdpbmdDb250ZXh0KCkg
Y29uc3QKIHsKICAgICBpZiAoVU5MSUtFTFkobV91c2VzRGlzcGxheUxpc3REcmF3aW5nKSkgewog
ICAgICAgICBpZiAoIW1fcmVjb3JkaW5nQ29udGV4dCkKLSAgICAgICAgICAgIG1fcmVjb3JkaW5n
Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3Jh
cGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFz
QmFzZSgpLnNpemUoKSkpOworICAgICAgICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAg
ICAgIHJldHVybiAmbV9yZWNvcmRpbmdDb250ZXh0LT5jb250ZXh0OwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCA2MzExOTE3NTcwZjJkYjI4NTk0Y2JiMzQ5MDI0Njk5N2I1ODNmYmUwLi5jZDQ3MjEy
NjFiMmUwMjJiNTUyNWRkM2QzY2E1NDY5ZjljMGIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTM1OSw3
ICsxMzU5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQo
dHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZh
cmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1h
a2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxl
ID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAg
ICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBc
CiAgICAgICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZTA2YmY5OWQ1OTE1OTYzOTgwYTYxMWMzMmE4Mzll
Mjk3ZjEyODA0NS4uZTVmZGU3MDMzNzQ1NmEzMWUxNTcxZWUxMGYzZmQyNjQyZGIwMzZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxF
X0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAog
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAg
ICAgICAgIGlmICghdmFyaWFibGUpIHsgXAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5h
YmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAg
ICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDog
bnVsbHB0cjsgXAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigq
dGhpcywgbmFtZSk7IFwKICAgICAgICAgfSBcCkBAIC0xMzIsNyArMTMyLDcgQEAgV2ViR0xFeHRl
bnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBudWxscHRyOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAg
ICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRT
aGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0
dXJlTE9EID0gbWFrZVVuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRo
aXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTksNyArMTU5LDcgQEAg
V2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBudWxs
cHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAg
ICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERy
YXdCdWZmZXJzPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0g
bWFrZVVuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzEsNyArMTcxLDcgQEAgV2ViR0xFeHRlbnNp
b24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwotICAgICAg
ICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xF
SW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNl
ZEFycmF5cyA9IG1ha2VVbmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigq
dGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggM2VjZTdlZWI3NDJmYWRiNmZlMThiMzNlYjVhNjEzOWNlZDQxYmE1Ni4uZDE2NmZiMjM5MDc2
ZDM2MjY1ZDk2YzY0NWYwNzE4NzVhYzgyYmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc5OSw4
ICs3OTksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdD
b250ZXh0KCkKICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIGNhbnZhc1NpemUud2lkdGgo
KSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CiAgICAgbV9jb250ZXh0LT5zY2lzc29yKDAsIDAsIGNh
bnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQt
PnNldENvbnRleHRMb3N0Q2FsbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0Nv
bnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsKLSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2Fn
ZUNhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNz
YWdlQ2FsbGJhY2s+KHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJh
Y2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsK
KyAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KHRoaXMpKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKCkKQEAgLTE1NzksNyArMTU3OSw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNo
YWRlciogc2hhZGVyKQogICAgICAgICBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0
YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6
Y3VycmVudFN0YXRlKCkpOwogCiAgICAgICAgIGZvciAoYXV0byYgZXJyb3IgOiBnZXRTaGFkZXJJ
bmZvTG9nKHNoYWRlcikuc3BsaXQoJ1xuJykpCi0gICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkp
OworICAgICAgICAgICAgY2FudmFzLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJv
ciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsKICAgICB9CiB9CiAKQEAgLTU4MDgsOSArNTgwOCw5
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmCiAgICAgLy8gRXJyb3IgbWVzc2FnZXMgY2FuIG9j
Y3VyIGR1cmluZyBmdW5jdGlvbiBjYWxscywgc28gc2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZW0u
CiAgICAgaWYgKGxldmVsID09IE1lc3NhZ2VMZXZlbDo6RXJyb3IpIHsKICAgICAgICAgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVT
Y3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpKTsKLSAgICAgICAgY29u
c29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3Nh
Z2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3Nh
Z2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRl
cmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UpOwogCiAgICAgYXV0byogY2Fu
dmFzID0gaHRtbENhbnZhcygpOwogICAgIGlmIChjYW52YXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggZTg1OTBjY2M2OTcyOGFm
MzkzMDFkM2FlOGQ4OTg4ZjVjMTVhNGIyYS4uYWVmZTQ1N2Y0ZWZmMDQzNjU3NjNjYjI2ZjcxNzg0
NjNlMzJlMWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJl
bG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxv
YWRTY2FubmVyLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6
OmVtaXRSdWxlKCkKICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBV
UkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJv
bSB0aGUgSFRNTFByZWxvYWRTY2FubmVyIHZpYSBzY2FuKCk6IHdpdGhvdXQgaXQgd2Ugd2lsbCBn
ZXQgcmVsYXRpdmUgVVJMcyB3cm9uZy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJzZXQgaW4gdGhlIHByZWxvYWQgcmVxdWVzdD8KLSAgICAg
ICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0
PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVudFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0
eWxlU2hlZXQsIFN0cmluZygpLCBQcmVsb2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVm
ZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSk7CisgICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBl
bmQobWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkws
IENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJl
cXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwog
ICAgICAgICB9CiAgICAgICAgIG1fc3RhdGUgPSBJbml0aWFsOwogICAgIH0gZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocnVsZSwgImNoYXJzZXQiKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA1
MWJhZTRjMjFjZjk0MGRjZDhjNmQzMjBiYzRkYmQ2NjI2YmU3ZDlmLi45YWM0NDRlZjBhNjcxZjhh
NDc2OTk1N2FlMzIyMmJkOGQxMDA3ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPiBIVE1MQ29uc3RydWN0
aW9uU2l0ZTo6aW5zZXJ0SFRNTEUKICAgICBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGVsZW1l
bnRJbnRlcmZhY2UgPSBudWxscHRyOwogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3Jl
YXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKHRva2VuLCAmZWxlbWVu
dEludGVyZmFjZSk7CiAgICAgaWYgKFVOTElLRUxZKGVsZW1lbnRJbnRlcmZhY2UpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4o
KmVsZW1lbnRJbnRlcmZhY2UsIHRva2VuLm5hbWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVz
KCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlv
bkRhdGE+KCplbGVtZW50SW50ZXJmYWNlLCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0
cmlidXRlcygpKSk7CiAgICAgYXR0YWNoTGF0ZXIoY3VycmVudE5vZGUoKSwgKmVsZW1lbnQpOwog
ICAgIG1fb3BlbkVsZW1lbnRzLnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZSh0b2tlbikpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmlu
ZGV4IDRmZjRlMmI4Nzg4YTkxOWJmNDJkMTdhZDlmZDY1MWI5YjAzYWQxOWIuLmRkOWVhMDRjNmY1
MDBjODY0YjhjOTRjMTkzODM3ODc3YWZmZGU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEhU
TUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX29w
dGlvbnMoZG9jdW1lbnQpCiAgICAgLCBtX3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3Nj
cmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBz
dGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVubmVySG9zdCY+KCp0aGlzKSkpCi0gICAgLCBtX3RyZWVC
dWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQs
IHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKLSAgICAsIG1fcGFyc2VyU2NoZWR1
bGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQorICAgICwg
bV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3Rh
dGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhvc3QmPigqdGhpcykpKQorICAgICwgbV90cmVlQnVp
bGRlcihtYWtlVW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJD
b250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCisgICAgLCBtX3BhcnNlclNjaGVkdWxlcihtYWtl
VW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+KCp0aGlzKSkKICAgICAsIG1feHNzQXVkaXRvckRl
bGVnYXRlKGRvY3VtZW50KQotICAgICwgbV9wcmVsb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1M
UmVzb3VyY2VQcmVsb2FkZXI+KGRvY3VtZW50KSkKKyAgICAsIG1fcHJlbG9hZGVyKG1ha2VVbmlx
dWU8SFRNTFJlc291cmNlUHJlbG9hZGVyPihkb2N1bWVudCkpCiB7CiB9CiAKQEAgLTcwLDcgKzcw
LDcgQEAgaW5saW5lIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3Vt
ZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW4KICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlcihmcmFnbWVudC5kb2N1bWVudCgpLCByYXdQb2xpY3kpCiAgICAgLCBtX29wdGlvbnMoZnJh
Z21lbnQuZG9jdW1lbnQoKSkKICAgICAsIG1fdG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1f
dHJlZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFn
bWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkK
KyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBm
cmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25z
KSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGZyYWdtZW50LmRvY3VtZW50KCkpCiB7CiAg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwj
cGFyc2luZy1odG1sLWZyYWdtZW50cwpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChp
c1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKICAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLmlzSW5E
YXRhU3RhdGUoKSk7CiAgICAgICAgIGlmICghbV9wcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAg
ICAgbV9wcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVy
PihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKKyAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQ
cmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBl
bmRUb0VuZChtX2lucHV0LmN1cnJlbnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9wcmVsb2Fk
U2Nhbm5lci0+c2NhbigqbV9wcmVsb2FkZXIsICpkb2N1bWVudCgpKTsKQEAgLTM3NCw3ICszNzQs
NyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmIHNv
dXJjZSkKICAgICAgICAgLy8gQ2hlY2sgdGhlIGRvY3VtZW50LndyaXRlKCkgb3V0cHV0IHdpdGgg
YSBzZXBhcmF0ZSBwcmVsb2FkIHNjYW5uZXIgYXMKICAgICAgICAgLy8gdGhlIG1haW4gc2Nhbm5l
ciBjYW4ndCBkZWFsIHdpdGggaW5zZXJ0aW9ucy4KICAgICAgICAgaWYgKCFtX2luc2VydGlvblBy
ZWxvYWRTY2FubmVyKQotICAgICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCkt
PnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1f
aW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4o
bV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKHNv
dXJjZSk7CiAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9h
ZGVyLCAqZG9jdW1lbnQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCAzMGM1YjQ2ZGYxMDNkYmRmNmY0YjdjZTQwOWNj
M2FhMTZjNTQ2MDEyLi42ZWYxNzEyYjlkNjNiNzFhY2I3YzE2OWY2MmI0OWM4MmYzMTA1ODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApA
QCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUoUmVm
PEhUTUxTdGFja0l0ZW0+JiYgaXRlbSwgRWxlbWVudFJlY29yZCYgcmVjCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICArK21fc3RhY2tEZXB0aDsKLSAgICAgICAgcmVjb3JkQWJvdmUt
PnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBy
ZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkpOworICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4
dChtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5y
ZWxlYXNlTmV4dCgpKSk7CiAgICAgICAgIHJlY29yZEFib3ZlLT5uZXh0KCktPmVsZW1lbnQoKS5i
ZWdpblBhcnNpbmdDaGlsZHJlbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcg
KzUzMyw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaENvbW1vbihSZWY8SFRNTFN0YWNr
SXRlbT4mJiBpdGVtKQogICAgIEFTU0VSVChtX3Jvb3ROb2RlKTsKIAogICAgICsrbV9zdGFja0Rl
cHRoOwotICAgIG1fdG9wID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3Zl
KGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CisgICAgbV90b3AgPSBtYWtlVW5pcXVlPEVsZW1lbnRS
ZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdURk1vdmUobV90b3ApKTsKIH0KIAogdm9pZCBIVE1MRWxl
bWVudFN0YWNrOjpwb3BDb21tb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggNTNhMTcyZDMzYWZjZGE4ZmY4OGQzNDRkOWMw
ZWYwOTAzY2RlY2M5Mi4uMzNkN2IzYmIwOGI2NTJkMGNkNjliY2VkZjFmODYwNjMxYWZhYTE0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRU
YWdTY2FubmVyIHsKICAgICAgICAgaWYgKCFMaW5rTG9hZGVyOjppc1N1cHBvcnRlZFR5cGUodHlw
ZS52YWx1ZSgpLCBtX3R5cGVBdHRyaWJ1dGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICAgICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVz
dD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwg
dHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0cmlidXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJl
clBvbGljeSk7CisgICAgICAgIGF1dG8gcmVxdWVzdCA9IG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVl
c3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkws
IHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJy
ZXJQb2xpY3kpOwogICAgICAgICByZXF1ZXN0LT5zZXRDcm9zc09yaWdpbk1vZGUobV9jcm9zc09y
aWdpbk1vZGUpOwogICAgICAgICByZXF1ZXN0LT5zZXROb25jZShtX25vbmNlQXR0cmlidXRlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCBmNzFiMjFkMjc4OTVl
NTc4YWI0N2Y1Y2Y1NDAyNTgzZTM2MTIxZDAyLi4zZjc0NmRjNmQ2NjdjNDM3MTFiNjhkMDliNDIw
MmQyM2ZmMGMwODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAt
MjA5LDcgKzIwOSw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKCkKIHsK
ICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IERPQ1RZ
UEU7Ci0gICAgbV9kb2N0eXBlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdHlwZURhdGE+KCk7
CisgICAgbV9kb2N0eXBlRGF0YSA9IG1ha2VVbmlxdWU8RG9jdHlwZURhdGE+KCk7CiB9CiAKIGlu
bGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggYWM2ZTc5NDQzMDA3MDM2
NDIxZWIxNmRmODNhOTBkM2QyNzcyZjg1Ni4uMDYxZDk1NjdiNzg0ZDliMGJhY2YzZjZkYjljZGU1
YTgwNmIwMWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAK
QEAgLTM3Niw3ICszNzYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8WFNTSW5mbz4gWFNTQXVkaXRvcjo6
ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlID0gbV94c3NQcm90ZWN0
aW9uID09IFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbjo6QmxvY2tFbmFibGVkOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFhTU0luZm8+KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJl
UGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQcm90ZWN0aW9uSGVhZGVyKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlk
U2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6Zmls
dGVyU3RhcnRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC03MTIs
NyArNzEyLDcgQEAgU3VmZml4VHJlZTxBU0NJSUNvZGVib29rPiogWFNTQXVkaXRvcjo6ZGVjb2Rl
ZEhUVFBCb2R5U3VmZml4VHJlZSgpCiAgICAgY29uc3QgdW5zaWduZWQgc3VmZml4VHJlZURlcHRo
ID0gNTsKIAogICAgIGlmICghbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlICYmIG1fZGVjb2Rl
ZEhUVFBCb2R5Lmxlbmd0aCgpID49IG1pbmltdW1MZW5ndGhGb3JTdWZmaXhUcmVlKQotICAgICAg
ICBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZmZpeFRy
ZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwor
ICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUgPSBtYWtlVW5pcXVlPFN1ZmZpeFRy
ZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwog
ICAgIHJldHVybiBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUuZ2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwCmluZGV4IDNhNjM3ZGFlZjAxMjRlMmU0ZWQzMzZiNjYzNzUyZDAwMjJiNWJlMDEuLmQ1
NjZiY2M3OTRhYTcyNGFiZTYwYTA4MGEzZjJjZjk1MWY0NTM3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApA
QCAtMTc0LDcgKzE3NCw3IEBAIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50OjpyZW5kZXJlcigpIGNvbnN0CiBPcHRpb25hbDxFbGVtZW50U3R5
bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAg
ICBhdXRvIHN0eWxlID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFk
b3dIb3N0KCkpLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOwotICAgIHJl
dHVybiBFbGVtZW50U3R5bGUoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShz
dHlsZSkpKTsKKyAgICByZXR1cm4gRWxlbWVudFN0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+
KFdURk1vdmUoc3R5bGUpKSk7CiB9CiAKIC8vIE1BUks6IFRleHRDb250cm9sUGxhY2Vob2xkZXJF
bGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVy
aWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmlj
VGV4dFRyYWNrLmNwcAppbmRleCBlNDAyMDBhOWE3YTIyNWRkZmQ4NzQ0ZDhjOTNiZGU2OTA5NjQ3
MDA5Li40OTM0ZDcyOWMxOThkMDgwNTlhYzhjOWYwYjE3NGE5NWU3NmY3MmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAK
QEAgLTE3NCw3ICsxNzQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbmJhbmRHZW5lcmljVGV4dFRy
YWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJiBjdWUpCiBXZWJWVFRQYXJzZXImIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OnBhcnNlcigpCiB7CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAg
ICAgICAgbV93ZWJWVFRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3Rh
dGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgICAgIG1fd2ViVlRUUGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+
KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIHJldHVybiAqbV93ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCA4
NTViYjIzOTI3ZWIxMGEzNWE1OWQxMmJlMGQyMzVhNzNjYWJjMTBlLi4xMGZhYTEyZjkwYjQ2MGI1
MDU2ZjI1NjdjYzJkOTgxMjdkOGZhYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluYmFu
ZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdlYlZUVFRleHRUcmFjaygpID0gZGVmYXVsdDsKIFdl
YlZUVFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICgh
bV93ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VV
bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlz
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2Vy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4
dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2su
Y3BwCmluZGV4IDhmMjljN2YxNjc5YTBmYTI5MThkZWNmYTUxM2UyZDgwMjcxYTM1ZTIuLjdhMWUx
YmM0NjkxYjIxMTY4OGMzY2Y1ZGE2MTlhYzYxZGJkNmZlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKCkKICAgICAvLyA0LiBEb3dubG9h
ZDogSWYgVVJMIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLCBwZXJmb3JtIGEgcG90ZW50aWFsbHkg
Q09SUy1lbmFibGVkIGZldGNoIG9mIFVSTCwgd2l0aCB0aGUKICAgICAvLyBtb2RlIGJlaW5nIHRo
ZSBzdGF0ZSBvZiB0aGUgbWVkaWEgZWxlbWVudCdzIGNyb3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmli
dXRlLCB0aGUgb3JpZ2luIGJlaW5nIHRoZQogICAgIC8vIG9yaWdpbiBvZiB0aGUgbWVkaWEgZWxl
bWVudCdzIERvY3VtZW50LCBhbmQgdGhlIGRlZmF1bHQgb3JpZ2luIGJlaGF2aW91ciBzZXQgdG8g
ZmFpbC4KLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrTG9hZGVyPihz
dGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJDbGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKKyAg
ICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0
VHJhY2tMb2FkZXJDbGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqPigmbV90cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKICAgICBpZiAoIW1fbG9hZGVy
LT5sb2FkKG1fdXJsLCAqbV90cmFja0VsZW1lbnQpKQogICAgICAgICBtX3RyYWNrRWxlbWVudC0+
ZGlkQ29tcGxldGVMb2FkKEhUTUxUcmFja0VsZW1lbnQ6OkZhaWx1cmUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAppbmRleCAwMzEwODBl
MWFiNjZkMzJjYzljMDcxNzhmMDJmOTM1MjNiYzcwNmIwLi45MDI5YjkyZDhiODNmMmQ3YmVkNmQ4
ZTU0NTc2YzBhMTY4Y2E1MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElIb3N0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8Q29tbWFuZExpbmVBUElI
b3N0PiBDb21tYW5kTGluZUFQSUhvc3Q6OmNyZWF0ZSgpCiB9CiAKIENvbW1hbmRMaW5lQVBJSG9z
dDo6Q29tbWFuZExpbmVBUElIb3N0KCkKLSAgICA6IG1faW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCkpCisgICAgOiBtX2luc3BlY3RlZE9iamVjdCht
YWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpKQogewogfQogCkBAIC0xOTYsNyArMTk2LDcg
QEAgSlNWYWx1ZSBDb21tYW5kTGluZUFQSUhvc3Q6OndyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVh
ckFsbFdyYXBwZXJzKCkKIHsKICAgICBtX3dyYXBwZXJzLmNsZWFyQWxsV3JhcHBlcnMoKTsKLSAg
ICBtX2luc3BlY3RlZE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+
KCk7CisgICAgbV9pbnNwZWN0ZWRPYmplY3QgPSBtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0
PigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01FZGl0b3IuY3BwCmluZGV4IDZjMzFlNDk4ZTQzNGQzMDBiMGYxYzZlYWI4NDM0Njc3NmNmMGEy
ZmMuLjgzODkwOGRjOTM2ZWZhNmJhMjZjNzkxNjcxNDRkYjdkZTllMmFlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIERPTUVk
aXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbiB7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGVyZm9ybSgpIGZpbmFsCiAgICAgewog
ICAgICAgICBpZiAobV9ub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIG1fcmVtb3Zl
Q2hpbGRBY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2Rl
LT5wYXJlbnROb2RlKCksIG1fbm9kZSk7CisgICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9u
ID0gbWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBt
X25vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX3JlbW92ZUNoaWxkQWN0aW9uLT5w
ZXJmb3JtKCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwpAQCAtMzg1LDI3ICsz
ODUsMjcgQEAgRE9NRWRpdG9yOjp+RE9NRWRpdG9yKCkgPSBkZWZhdWx0OwogCiBFeGNlcHRpb25P
cjx2b2lkPiBET01FZGl0b3I6Omluc2VydEJlZm9yZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9k
ZT4mJiBub2RlLCBOb2RlKiBhbmNob3JOb2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RG
TW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybSht
YWtlVW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwg
YW5jaG9yTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUNo
aWxkKE5vZGUmIHBhcmVudE5vZGUsIE5vZGUmIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9y
eS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUs
IG5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVD
aGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwgbm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBE
T01FZGl0b3I6OnNldEF0dHJpYnV0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3Jt
KHN0ZDo6bWFrZV91bmlxdWU8U2V0QXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1
ZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFNldEF0dHJpYnV0
ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwgdmFsdWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5n
JiBuYW1lKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVl
PFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSkpOworICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwg
bmFtZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE91dGVySFRNTChO
b2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqJiBuZXdOb2RlKQogewotICAgIGF1
dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0
bWwpOworICAgIGF1dG8gYWN0aW9uID0gbWFrZVVuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5v
ZGUsIGh0bWwpOwogICAgIGF1dG8mIHJhd0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byByZXN1
bHQgPSBtX2hpc3RvcnkucGVyZm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmICghcmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNDE1LDIyICs0MTUsMjIgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBO
b2RlKiYKIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1s
KQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2Vy
dEFkamFjZW50SFRNTEFjdGlvbj4oZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsKKyAgICByZXR1cm4g
bV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVs
ZW1lbnQsIHdoZXJlLCBodG1sKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6
cmVwbGFjZVdob2xlVGV4dChUZXh0JiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewot
ICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9s
ZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0KSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJm
b3JtKG1ha2VVbmlxdWU8UmVwbGFjZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSYgcGFy
ZW50Tm9kZSwgUmVmPE5vZGU+JiYgbmV3Tm9kZSwgTm9kZSYgb2xkTm9kZSkKIHsKLSAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0
aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5ld05vZGUpLCBvbGROb2RlKSk7CisgICAgcmV0dXJu
IG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFy
ZW50Tm9kZSwgV1RGTW92ZShuZXdOb2RlKSwgb2xkTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBET01FZGl0b3I6OnNldE5vZGVWYWx1ZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNl
dE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwgdmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBl
cmZvcm0obWFrZVVuaXF1ZTxTZXROb2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CiB9CiAK
IHN0YXRpYyBib29sIHBvcHVsYXRlRXJyb3JTdHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1
bHQsIEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMjBkYTM0MzBjMTVjODU1MTQ4NWM1NzM4YzU0N2Zh
MGMzNDMxYTFiYS4uMmU5ZDc1NTY1NWM4M2VmODgxNTk2YWFkMjBjOTZlMTBlNjg4MjZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTQwMiw3
ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAKIHN0ZDo6dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2Vz
dD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNN
YXAqIHVudXNlZE5vZGVzTWFwKQogewotICAgIGF1dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxEaWdlc3Q+KCk7CisgICAgYXV0byBkaWdlc3QgPSBtYWtlVW5pcXVlPERpZ2VzdD4oKTsKICAg
ICBkaWdlc3QtPm5vZGUgPSAmbm9kZTsKICAgICBTSEExIHNoYTE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1MjAzNzA2YjUz
YjMyYjBiYTRmMGVkNGQ0YmE0MDBiNmM3OWI1ZTE1Li42M2ZmM2FiNjIzYTQ0NmNkNjIwZWU0N2Uz
OTIwNTVjZWE1MWE4NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC05MywxMCArOTMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdl
JiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zy
b250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlS
ZWYoKSkpCi0gICAgLCBtX292ZXJsYXkoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5
PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV9vdmVybGF5KG1ha2VVbmlxdWU8SW5z
cGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9u
U3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVy
KHBhZ2UpCiAgICAgLCBtX3BhZ2UocGFnZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBJbnNwZWN0b3JD
b250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVu
dCogaW5zcGVjdG9yQwogCiAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQo
KTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29s
ZUFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVl
PFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogfQpAQCAtMTUzLDM3ICsxNTMsMzcgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBlbnN1cmVJ
bnNwZWN0b3JBZ2VudCgpOwogICAgIGVuc3VyZVBhZ2VBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29u
dGV4dCkpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
RGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1h
a2VVbmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBhdXRvIGRlYnVn
Z2VyQWdlbnRQdHIgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChX
VEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4o
cGFnZUNvbnRleHQpKTsKICAgICBlbnN1cmVET01BZ2VudCgpOwotICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0
LCBkZWJ1Z2dlckFnZW50UHRyKSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50Pihw
YWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtl
VW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50
PihwYWdlQ29udGV4dCkpOwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdl
Q29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckluZGV4
ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOwogI2VuZGlmCiAKLSAgICBhdXRvIHNjcmlwdFByb2Zp
bGVyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtl
VW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2Ny
aXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUo
c2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVy
QWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFn
ZUNvbnRleHQpKTsKICNlbmRpZgotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8UGFnZUF1ZGl0QWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxp
bmVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQ
YWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5p
cXVlPFBhZ2VBdWRpdEFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZCht
YWtlVW5pcXVlPEluc3BlY3RvckNhbnZhc0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQSUhv
c3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmNvcHlSZWYoKSk7CkBAIC00MjEsNyArNDIx
LDcgQEAgSW5zcGVjdG9yQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3Rv
ckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBw
YWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAg
ICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBh
Z2VDb250ZXh0KTsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Lmdl
dCgpOwogICAgICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1f
aW5zcGVjdG9yQWdlbnQpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0
b3JBZ2VudCkpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIEluc3BlY3RvckRPTUFnZW50JiBJbnNwZWN0
b3JDb250cm9sbGVyOjplbnN1cmVET01BZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckRP
TUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7
Ci0gICAgICAgIGF1dG8gZG9tQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFn
ZW50PihwYWdlQ29udGV4dCwgbV9vdmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBkb21BZ2Vu
dCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXku
Z2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvckRPTUFnZW50ID0gZG9tQWdlbnQuZ2V0KCk7CiAg
ICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRvbUFnZW50KSk7CiAgICAgfQpAQCAtNDQ0
LDcgKzQ0NCw3IEBAIEluc3BlY3RvclBhZ2VBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5z
dXJlUGFnZUFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZUFnZW50KSB7CiAgICAg
ICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8g
cGFnZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250
ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBw
YWdlQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1f
aW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvclBh
Z2VBZ2VudCA9IHBhZ2VBZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1v
dmUocGFnZUFnZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggMjhlZTcyN2EzNmQ2NmNl
MjEwOTY5NzgzMWFlMGE4YWFjNDIzODU3NS4uNmMxYjUxYWRlZTlhMzg0MjYzMzM4ZjQ1ZDg4ODRh
NmQ5YzM3ZWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFNldHRpbmdzIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgogICAgICAgICBTZXR0aW5ncygpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVh
bCB+U2V0dGluZ3MoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGlzdG9yeS5jcHAKaW5kZXggMDBkNWYxODUyY2ViYTI3MGMzYWY4MWMxMzIwOTAwNWRh
N2IxMThhOC4uYzgxMDNkZDdkYmI4MzIwZWFiMmU2YWQ1ZTMyYzJkNTJkNzJiMDYzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6
dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlvbikKIAogdm9pZCBJbnNwZWN0b3JIaXN0b3J5OjptYXJr
VW5kb2FibGVTdGF0ZSgpCiB7Ci0gICAgcGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFVuZG9hYmxl
U3RhdGVNYXJrPigpKTsKKyAgICBwZXJmb3JtKG1ha2VVbmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+
KCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJbnNwZWN0b3JIaXN0b3J5Ojp1bmRvKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCBjYTMwZTFhMjdiZjQwNjE4NWE0ODMyMGEyNjMxODNlYTdlNmU0N2UzLi4yMjljOThhNDQ3ZDIy
MjQ4ZGRlZjNiYTM0YjM3YzVjNGMwNDc1OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBQ
YXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291cmNl
RGF0YUxpc3Q+IHNvdXJjZUQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc291cmNl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIG1fc291
cmNlRGF0YSA9IG1ha2VVbmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwogCiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc29sdXRpb24gdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBm
bGF0IHNvdXJjZURhdGEgc3RydWN0dXJlCiAgICAgLy8gY29udGFpbmluZyBvbmx5IHN0eWxlIHJ1
bGVzLCBldmVuIHRob3VnaCBDU1NQYXJzZXIgbm93IHByb3ZpZGVzIHRoZSBmdWxsIHJ1bGUgc291
cmNlIGRhdGEgdHJlZS4KQEAgLTEzMzQsNyArMTMzNCw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVT
aGVldDo6ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1
dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7Ci0gICAgYXV0
byBydWxlU291cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFM
aXN0PigpOworICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBtYWtlVW5pcXVlPFJ1bGVT
b3VyY2VEYXRhTGlzdD4oKTsKICAgICAKICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQocGFy
c2VyQ29udGV4dEZvckRvY3VtZW50KG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSkp
OwogICAgIFN0eWxlU2hlZXRIYW5kbGVyIGhhbmRsZXIobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0
KCksIG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSwgcnVsZVNvdXJjZURhdGFSZXN1
bHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKaW5kZXggZDNiNzU5ZjI5Y2NmMWFlMTgwMjgwZDVlMTczNjcwZDI5YzRmOGNj
MS4uZmQ3Y2FkMzA3NjdlNzc1YjE2NzVlYzQ1NGVmN2EwOGJiMDM2ZDU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xMzYs
NyArMTM2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFG
b3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8g
cmVzb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVy
SWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0VHlwZSh0eXBlKTsKICAgICBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9
CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VD
cmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1
cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwor
ICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJ
ZCwgbG9hZGVySWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoJmNhY2hl
ZFJlc291cmNlKTsKICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0
SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNDM1MWU4NzJh
OWU1YTM2NDcyOWY1YjRmYjI2MjE2YzczMzAyYzhkZC4uMzY0YWVhN2Q0YjVkOTExNzkzMjc1ZDY0
NmYyOTVlNjdiZjBlZWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkK
ICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUo
KnRoaXMpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNy
ZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUo
KSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250
ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0
Y2g6OmNyZWF0ZSgpKQpAQCAtNjksNyArNjksNyBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
OjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAog
CiAgICAgYXV0byB3b3JrZXJDb250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBh
dXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3
b3JrZXJDb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8V29ya2Vy
Q29uc29sZUFnZW50Pih3b3JrZXJDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogfQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQg
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX2V4ZWN1
dGlvblN0b3B3YXRjaC0+cmVzZXQoKTsKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQo
KTsKIAotICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRv
UGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9mb3J3YXJk
aW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dv
cmtlckdsb2JhbFNjb3BlKTsKICAgICBtX2Zyb250ZW5kUm91dGVyLT5jb25uZWN0RnJvbnRlbmQo
Km1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCkpOwogfQpAQCAtMTY0LDE4ICsxNjQsMTggQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9
IHdvcmtlckFnZW50Q29udGV4dCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8V29ya2VyUnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMu
YXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyUnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4obV93b3JrZXJHbG9iYWxTY29wZSkpIHsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0g
ICAgICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5ldHdvcmtBZ2Vu
dD4od29ya2VyQ29udGV4dCkpOworICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxT
ZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8V29ya2VyTmV0d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAg
fQogI2VuZGlmCiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXZWJIZWFw
QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29u
dGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdl
bnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3Jr
ZXJBdWRpdEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExp
bmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgp
KQogICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYThk
M2M4OTljMzI4MGEyOGU2NzMyY2Y4OGFiODRkMDAwZDQ1ZWQyZC4uZmRmMDQ0YzU3OWIzNjhjMzIw
NTFiNjVkYzQ0MGUzODdmNjAxOGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJB
cHBsaWNhdGlvbkNhY2hlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRl
eHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRl
eHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGNmOTRj
YTgwOTZmZjU3MWQ3NGQ3NzNiMWYwMDI3NTA1NGMwY2UxZjkuLjExNjI0ZTI0MDk0NjRmYzFlMWU2
NWE2OTk4ZGJkMWIwNjgyZjBiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcApAQCAtMzks
NyArMzksNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDUFVQcm9m
aWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNQVVByb2ZpbGVyIl9zLCBjb250ZXh0
KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
KyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9m
aWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cAppbmRleCA0YjY5OTQ1ZWM3MDY3Zjk2NDNlNDgwNzMwMzQ4NDI2ODZkNjE5ZmI4Li40NGU5YzVh
YmViNGM5NjZhYmFlYTk0NGE0MGQ1ZTAzZDQ3MmQxMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjk3LDcg
KzI5Nyw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxl
KENTU1J1bGUmIHJ1bGUpCiAKIEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChX
ZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNTUyJf
cywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8
Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQ1NTQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsK
IH0KQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNo
ZWV0VGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5w
ZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3Rv
clN0eWxlU2hlZXQsIHRleHQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5
KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9y
U3R5bGVTaGVldCwgdGV4dCkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiB9CkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
SlNPTjo6T2JqZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJl
c3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRT
dHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsK
KyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1h
a2VVbmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3Vu
ZElkLCB0ZXh0KSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJm
b3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3
ICs2NzAsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVT
aGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBk
b21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0
aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOwogICAgIGlm
IChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
SW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgc3R5bGVTaGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWN0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBz
ZWxlY3Rvcik7CisgICAgYXV0byBhY3Rpb24gPSBtYWtlVW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGlu
c3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0
aW9uOwogICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZv
cm0oV1RGTW92ZShhY3Rpb24pKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcAppbmRleCA5YmUwNjExOWZiMzIxOTcwMDcyOTcyMmQ4MzZhODE2
YjI1ZjFjMDE1Li4wZTUwYzc1YmE0ODc1MTU1NmU0MTJkY2I5N2FkMTk2Njk2NWE5OTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ2FudmFzIl9zLCBj
b250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFz
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3BlY3Rl
ZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250
ZXh0JiBjYW52YXNSZW5kCiAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMtPmN1cnJlbnRGcmFtZUhh
c0RhdGEoKSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGlu
c3BlY3RvckNhbnZhcy0+Y29udGV4dCgpLmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIHF1ZXVlID0gTWljcm90YXNrUXVldWU6Om1haW5U
aHJlYWRRdWV1ZSgpOwotICAgICAgICAgICAgcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgWyYsIHByb3RlY3RlZEluc3BlY3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVm
KCldIHsKKyAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxi
YWNrTWljcm90YXNrPihxdWV1ZSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0
ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpXSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52
YXMtPmNhbnZhc0VsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzRWxl
bWVudC0+aXNEZXNjZW5kYW50T2YoY2FudmFzRWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDZjMTk2ZTBjYzY4MmI0NDI1
NmM3ZGRhYWUwOTBhYTBhYWQ1NTMxN2QuLmYwYTI4YzEzMzFjNWJiMzA4OGQ1M2U3MjQzZGJhZjRl
ZWI2M2U3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgU3RyaW5nIEluc3BlY3Rv
ckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIEluc3BlY3Rv
ckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJ
bnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET00i
X3MsIGNvbnRleHQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVj
dGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTMw
MSw4ICszMDEsOCBAQCBJbnNwZWN0b3JET01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsK
LSAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7Ci0g
ICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7
CisgICAgbV9oaXN0b3J5ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOworICAgIG1f
ZG9tRWRpdG9yID0gbWFrZVVuaXF1ZTxET01FZGl0b3I+KCptX2hpc3RvcnkpOwogCiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRPTUFnZW50KHRoaXMpOwogICAgIG1fZG9j
dW1lbnQgPSBtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKQEAgLTY1Myw3
ICs2NTMsNyBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
Tm9kZSogbm9kZVRvUHVzaCkKICAgICAgICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2Rl
KG5vZGUpOwogICAgICAgICBpZiAoIXBhcmVudCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWlu
ZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4gcHVzaCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBh
dXRvIG5ld01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CisgICAgICAgICAg
ICBhdXRvIG5ld01hcCA9IG1ha2VVbmlxdWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBk
YW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9J
ZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgYXV0byBjaGlsZHJl
biA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRl
KCk7CkBAIC0xMTc3LDcgKzExNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmln
PiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3RvcgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29u
ZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgYm9vbCBzaG93SW5mbyA9
IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxzZSAoZG8gbm90IHNob3cgYSB0b29sdGlwKS4KICAgICBo
aWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oInNob3dJbmZvIiwgc2hvd0luZm8p
OwogICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSBzaG93SW5mbzsKQEAgLTExOTYsMTMg
KzExOTYsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVk
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCBlbmEKIAogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmpl
Y3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAg
IGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwg
d2lkdGgsIGhlaWdodCkpOworICAgIGF1dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihG
bG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgIGlubmVySGlnaGxpZ2h0UXVhZChX
VEZNb3ZlKHF1YWQpLCBjb2xvciwgb3V0bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwog
fQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIHF1YWRBcnJheSwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wq
IHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZsb2F0UXVhZD4oKTsKKyAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKTsK
ICAgICBpZiAoIXBhcnNlUXVhZChxdWFkQXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkludmFsaWQgUXVhZCBmb3JtYXQiX3M7CiAgICAgICAgIHJldHVybjsKQEAg
LTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJhCiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFk
PiBxdWFkLCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91
dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8g
aGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7Cisg
ICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsK
ICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3Ip
OwogICAgIGhpZ2hsaWdodENvbmZpZy0+dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3Jk
aW5hdGVzID8gKnVzZVBhZ2VDb29yZGluYXRlcyA6IGZhbHNlOwpAQCAtMTMxNiw3ICsxMzE2LDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGZy
YW1lLT5vd25lckVsZW1lbnQoKSkgewotICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgICAgICBhdXRvIGhpZ2hsaWdo
dENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgICAgICBoaWdobGln
aHRDb25maWctPnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZy
YW1lcy4KICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xv
cik7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9y
KG91dGxpbmVDb2xvcik7CkBAIC0xMzk4LDcgKzEzOTgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpzZXRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCkKICAgICBtX2luc3BlY3RlZE5vZGUgPSBub2RlOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRM
aW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciY+KG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKS5jb21tYW5kTGluZUFQSUhvc3QoKSkKLSAgICAgICAgY29tbWFu
ZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
YWJsZU5vZGU+KG5vZGUpKTsKKyAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0
ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKIAogICAgIG1fc3Vw
cHJlc3NFdmVudExpc3RlbmVyQ2hhbmdlZEV2ZW50ID0gZmFsc2U7CiB9CkBAIC0yMzE0LDcgKzIz
MTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZXZhbGlkYXRl
U3R5bGVBdHRyVGFzaykKLSAgICAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IHN0ZDo6
bWFrZV91bmlxdWU8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7CisgICAgICAg
IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sgPSBtYWtlVW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0
dHJpYnV0ZVRhc2s+KHRoaXMpOwogICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnNjaGVk
dWxlRm9yKCZlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGU5NzFh
OTlmNzA1MjRkODMxODFhZTcxNWQ4MjY1ODgxMWZlMDg4MDguLjgxZjE0ZGMxN2JmYTA0NzQ3ZTNk
MjNlNDUzZjVlNGFmOGQwOWZkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRE9NU3RvcmFnZSJfcywgY29udGV4dCkKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01T
dG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiMzdh
NTYwY2U4MDc2OGM2NjQ0MDg1MTVmYjA1NTEyNjE2NWJlZDgyLi4zNThhODU2NTEyZWE0ZDcxOTYz
MzJhMjA2OTkwZGUzMjUwMDQxMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTIxNyw3ICsy
MTcsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShEYXRh
YmFzZSYgZGF0YWJhc2UpCiAKIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFi
YXNlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJEYXRhYmFzZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggZTFlMDgyZTQxYWQyZDUyNGY1N2Vm
MTA2NDAyODg3NjExNTY4MjRiOS4uYjU5ODJjZWUzN2UzNzQ0NzA1Mzk0NmJjZjRjNDM0YjQzMWVm
OWE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiTGF5ZXJUcmVlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpM
YXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAyOWM3NmQwYzdmZWE5MjJjMmEz
ZDk5NDE0Yzk4NmVhOGQyOGQ3N2I1Li4yODMyOTUxZjUzODAxMjFmYTQ1MmJmYThkNDcwZjRkMzVl
Nzg5YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdl
bnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
TWVtb3J5Il9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3Bl
Y3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpNZW1vcnlCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDNlNGU5NmViMjMxYTA1NGIyMTIxMjQ3YmMyY2IwOTE2NWYwMjY1
YjMuLjVkMDgxNjM4MGNkYzY2YzdkNzk2MGMxMmQzNDhhMGZiZjNmN2IxMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTE3MiwxMCArMTcyLDEwIEBAIGNsYXNzIEluc3BlY3RvclRocmVhZGFibGVM
b2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAKIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6SW5zcGVjdG9yTmV0d29ya0FnZW50KFdlYkFnZW50Q29udGV4
dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTmV0d29yayJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9yZXNvdXJjZXNE
YXRhKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+KCkpCisgICAgLCBtX3Jl
c291cmNlc0RhdGEobWFrZVVuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IDMyOWUxYjBjNWFkOTJmYjQ1MWRmMTc2NzMzYWUyYWUzNThmYjQ5Mzcu
LmM2NDFhNmEwNDg0MTkzMjY4ZTI5ZTkwZmYwMTI2YWI5MTFjOTMwZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
QEAgLTMzMyw3ICszMzMsNyBAQCBEb2N1bWVudExvYWRlciogSW5zcGVjdG9yUGFnZUFnZW50Ojph
c3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogCiBJbnNwZWN0b3JQ
YWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJ
bnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiUGFnZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpQYWdl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCAzYTM2MWU5MWU2ZjJkZWIw
MDQyZTE4YTdjNjRjN2I1MTZmOWI4MGM1Li4zMGQ4NmM3NDYzYzQ3ZjViM2FkMmIzOGNmNWRlMjQ5
ZDQ0ZWI5YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGlj
IENGUnVuTG9vcFJlZiBjdXJyZW50UnVuTG9vcCgpCiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiVGltZWxpbmUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5z
cGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQogewpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIC8vIEZJ
WE1FOiBBYnN0cmFjdCBhd2F5IHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgb25jZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNzQ4IGlzIGZpeGVkLgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpX
ZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgewor
ICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0
YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVy
czo6SW5zcGVjdG9yRnJhbWVCZWdpbiksIFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNr
aW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAg
ICAgICAgIG1fcnVuTG9vcE5lc3RpbmdMZXZlbCsrOwogICAgIH0pOwogCi0gICAgbV9mcmFtZVN0
b3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2Fz
dDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3Bl
Y3RvckZyYW1lRW5kKSwgW3RoaXNdKCkgeworICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBtYWtl
VW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2Vy
dmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgp
IHsKICAgICAgICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdT
ZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yODAsNyArMjgw
LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgICAgICBpZiAoV2ViQ29u
c29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29s
ZUFnZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0
byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkg
ZXhpc3RzIl9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBl
eGlzdHMiKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdh
cm5pbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3Rv
cEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgaWYg
KFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndl
YkNvbnNvbGVBZ2VudCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhl
IGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0
bGUuaXNFbXB0eSgpID8gIk5vIHByb2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmls
ZSBcIiIsIHRpdGxlLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgY29uc29sZUFnZW50
LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggOTE2MWQ4NDNjZDM4
ZTRkOTY2MTI2YWNkZDM2ZTgzZGQxOGY1MTAwMi4uMWUzOThlZGQxYTllYTNlZjI2YmUwOWVjMDNk
NmM2YzJjZDM5OGRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3Rvcldv
cmtlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIldvcmtlciJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJv
dXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6V29ya2VyQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAg
ICAsIG1fcGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMmVlZDFjZTYw
YjMwMjJhZDk4MjRmYTYyOGEzNWRkYzU0NDQ5NjBkOS4uYzIwOTRiOTkyZDM1NDE2MGYxN2VlMjhm
NjQxMGE3OTNkY2RlOWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvV2ViQ29uc29sZUFnZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkNvbnNv
bGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0CiAKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsK
ICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNv
dXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpLCAiICgiLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwot
ICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRy
LCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VV
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBl
OjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmlu
ZygpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogICAgIH0KIH0KIApAQCAt
OTIsNyArOTIsNyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzbwogICAgICAgICBtZXNzYWdlLmFw
cGVuZChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKICAgICB9CiAKLSAgICBhZGRNZXNz
YWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3Nh
Z2UudG9TdHJpbmcoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0
SWRlbnRpZmllcikpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAs
IDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVh
cEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50
LmNwcAppbmRleCBiYjVkMWJlYzZjNjMyMjM5YmVlNjQ2MzQzN2FlZmVkMTJiYTQ3MWQ1Li4wOWNi
NmY0NjY2YWI0YzkxY2JlZTJkMGZjZmRkNGJhNmE2MWExMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBA
IHN0cnVjdCBHYXJiYWdlQ29sbGVjdGlvbkRhdGEgewogfTsKIAogY2xhc3MgU2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmKTsK
ICAgICB2b2lkIGFkZEdhcmJhZ2VDb2xsZWN0aW9uKEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSYmKTsK
QEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrOjp0
aW1lckZpcmVkKCkKIFdlYkhlYXBBZ2VudDo6V2ViSGVhcEFnZW50KFdlYkFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckhlYXBBZ2VudChjb250ZXh0KQogICAgICwgbV9pbnN0
cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2Vu
ZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNlbmRHYXJiYWdl
Q29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlzKSkKKyAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0
aW9uRXZlbnRzVGFzayhtYWtlVW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+
KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDVlYWZiNmEzMjg0NmU3MDAx
NTNhYzgyNjgxYjdiZTUwZDNhZmU0OGMuLjg5ODViYzk0NWZlNzVlMGU4NTFhMzZkZTM1ODRhYjA0
NzFjMGZkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChQ
YWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNv
bnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UnVudGlt
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3RydW1lbnRp
bmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggYjIwY2JiYzk1MDcwMjgxMWI2NTg5YWMxZGZiZDU3MzM5MTkzZDMzNy4uODA4MmVlMzFlZWM2
MGEyZjYwMzI5ZGJhYmQ0ZDk4NDJmNmE1NWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgV29ya2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2Vy
QWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2lu
dEFjdGlvbkxvZyhFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVz
c2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7
CisgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CiB9
CiAKIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9y
RXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4
dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggYmQ5ZDRjYWRlZmIy
ZmFhMWYyZTBiMjU3OTU1YWQ1MTI0ZTE3OTRlZS4uMWYzZmFiYTMxMjZmMmU5YjM2Yjg0ZDEzZTcz
YmYxZmRhMzE3NTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgTGF5b3V0U3RhdGU6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3Vi
dHJlZShjb25zdCBCb3gmIGxheW91dFJvb3QpCiBEaXNwbGF5OjpCb3gmIExheW91dFN0YXRlOjpk
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAg
IHJldHVybiAqbV9sYXlvdXRUb0Rpc3BsYXlCb3guZW5zdXJlKCZsYXlvdXRCb3gsIFsmbGF5b3V0
Qm94XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OkJveD4obGF5
b3V0Qm94LnN0eWxlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+
KGxheW91dEJveC5zdHlsZSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTE0
MCwxMyArMTQwLDEzIEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1h
dHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgICAgICAvLyBz
aG91bGQgbm90IGludGVyZmVyZSB3aXRoIHRoZSBjb250ZW50IGluc2lkZS4KICAgICAgICAgICAg
IC8vIDxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzog
aGlkZGVuIj4gPC0gaXMgYSBub24taW50cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBo
aWRkZW4gdHJpZ2dlcnMgbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4KICAgICAg
ICAgICAgIGlmIChmb3JtYXR0aW5nUm9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3Qp
LCAqdGhpcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0
dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwg
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBmb3JtYXR0aW5nIGNvbnRl
eHQgaW5oZXJpdHMgdGhlIGZsb2F0cyBmcm9tIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0
LgogICAgICAgICAgICAgLy8gRmluZCB0aGUgZm9ybWF0dGluZyBzdGF0ZSBpbiB3aGljaCB0aGlz
IGZvcm1hdHRpbmcgcm9vdCBsaXZlcywgbm90IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQgdXNlIGl0
cyBmbG9hdGluZyBzdGF0ZS4KICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZvcm1hdHRpbmdTdGF0
ZSA9IGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0
dGluZ1Jvb3QuZm9ybWF0dGluZ0NvbnRleHRSb290KCkpOyAKICAgICAgICAgICAgIGF1dG8mIHBh
cmVudEZsb2F0aW5nU3RhdGUgPSBwYXJlbnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgp
OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRlLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlz
KTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw3
IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZv
ckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5n
U3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIEJs
b2NrIGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcg
c3RhdGUuCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRp
bmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0
aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRl
PihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwog
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcgQEAg
Rm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9y
bWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0
ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwgWyZdIHsKIAogICAgICAgICAgICAgLy8gVGFibGUg
Zm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0
ZSAtYW5kIGl0IHN0YXlzIGVtcHR5LgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9y
bWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJs
ZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5n
Um9vdCksICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAt
MTc0LDE4ICsxNzQsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlv
dXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm8KICAgICBBU1NFUlQoZm9y
bWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAg
aWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250
ZXh0KCkpIHsKICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8
SW5saW5lRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5n
Um9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRS
b290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0
YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkp
OwogICAgICAgICBhdXRvJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9y
bWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVl
ZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2Nr
Rm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0
aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7
CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBhdXRvJiB0YWJsZUZvcm1hdHRpbmdTdGF0
ZSA9IGRvd25jYXN0PFRhYmxlRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVG
b3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0
YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCmluZGV4IDdhZTNiNDA5ZDc2
MTE2ZjJlOWQxM2NjMzFlYjZlNTYwNjNiMTA3NmYuLjc5OTE2Mjc1NzQwMTgzZjM1M2Y1YWZkNWIx
NTIyZTU2NTNmYzg5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlSdW4uaApAQCAtMzYsNyArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgRGlzcGxheSB7CiAKIHN0cnVjdCBSdW4geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICBzdHJ1Y3QgVGV4dENvbnRleHQgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0Q29udGV4dCh1
bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IGExY2Q2ZDZmMWI3ZWI5MGZjYzc5MDVlMzFlOWYwNGZlM2Jm
ODI2MGIuLjUwOGQ2NjEyOWQxNDg3YzRlODQ0MDkzOTNkYTMzNDA5MTllYTdmODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAg
ICAgICAgICBpZiAoIXRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGFuIGlu
bGluZSBjb250YWluZXIgKGUuZy4gPHNwYW4+KS4KLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJ
bmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCkpOworICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0YXJ0KSk7CiAgICAgICAgICAgICBhdXRvJiBjb250
YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CiAgICAgICAgICAgICBpZiAo
IWNvbnRhaW5lci5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTI5MiwxNyArMjkyLDE3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbGxlY3RJbmxpbmVDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJv
eCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFzdCgpOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUg
ZW5kIG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4gPC9zcGFuPikuCiAgICAgICAgICAgICBp
ZiAodHJlYXRBc0lubGluZUNvbnRhaW5lcihsYXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4o
bGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJFbmQpKTsKKyAgICAgICAgICAg
ICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+
KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSkKLSAgICAgICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+
KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhaykpOworICAgICAgICAg
ICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRl
bT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElu
bGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsKKyAgICAgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0
ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgp
KTsKICAgICAgICAgICAgICAgICBpZiAobGF5b3V0Qm94Lmhhc1RleHRDb250ZW50KCkpCiAgICAg
ICAgICAgICAgICAgICAgIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMo
Zm9ybWF0dGluZ1N0YXRlLmlubGluZUl0ZW1zKCksIGxheW91dEJveCk7CiAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRl
bShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlw
ZTo6Qm94KSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJ
dGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpC
b3gpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5n
ID0gbGF5b3V0Qm94Lm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcAppbmRleCBmNzQxZGU0
ODllOTQyNDYxZDc2OTJlMmU0MDQxNTkzODNiMGM4MTYwLi4wYTIxMzAyMTNmMTI0ZWViNWY3Zjcx
MTJlODg2ZDcxMmM1MzFkYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0TGluZUxheW91dC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6
OkNvbnRlbgogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRv
cExlZnQoKSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChsb2dp
Y2FsUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhl
aWdodChsb2dpY2FsUmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkp
OworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERp
c3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAg
ICAgICAgICAgIHRvcExlZnQgKz0gR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9m
ZnNldChsYXlvdXRTdGF0ZSgpLCBsYXlvdXRCb3gpOwogICAgICAgICAgICAgZGlzcGxheUJveC5z
ZXRUb3BMZWZ0KHRvcExlZnQpOwogICAgICAgICAgICAgbGluZUJveFJlY3QuZXhwYW5kSG9yaXpv
bnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRl
LmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3Qp
KTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxE
aXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAg
ICAgICAgIGF1dG8gcHJldmlvdXNSdW5DYW5CZUV4dGVuZGVkID0gcHJldmlvdXNMaW5lUnVuICYm
IHByZXZpb3VzTGluZVJ1bi0+dGV4dENvbnRleHQoKSA/IHByZXZpb3VzTGluZVJ1bi0+dGV4dENv
bnRleHQoKS0+Y2FuQmVFeHRlbmRlZCA6IGZhbHNlOwogICAgICAgICAgICAgYXV0byByZXF1aXJl
c05ld1J1biA9ICFpbmRleCB8fCAhcHJldmlvdXNSdW5DYW5CZUV4dGVuZGVkIHx8ICZsYXlvdXRC
b3ggIT0gJnByZXZpb3VzTGluZVJ1bi0+bGF5b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAocmVx
dWlyZXNOZXdSdW4pCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1
bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1
bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29udGV4dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5ndGgg
fSkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVu
aXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0
IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGF1dG8mIGxhc3REaXNwbGF5UnVuID0gZm9ybWF0
dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5sYXN0KCk7CiAgICAgICAgICAgICAgICAgbGFzdERpc3Bs
YXlSdW4tPmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVjdC53aWR0aCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRl
eCBiMDAxM2I2ZWQ1NjNiY2JmODI4MTM5MTM0MWYyZGQ1NjE1ZWM1M2VmLi43OTA2MTk2ODFlNjc1
MmQyODcyNDkzODYyMmUzYTc0YmUwMzNmZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCkBAIC0zNCw2ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVt
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPElubGluZUl0ZW0+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBIYXJkTGlu
ZUJyZWFrLCBCb3gsIEZsb2F0LCBDb250YWluZXJTdGFydCwgQ29udGFpbmVyRW5kIH07CiAgICAg
SW5saW5lSXRlbShjb25zdCBCb3gmIGxheW91dEJveCwgVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDRm
MjBhNmZmMWQ3MGNlMzQ5YmRlMGViZWRmZThmODBhMzVlODVhMjguLmVkNjUyMDViN2RiOTliMGY2
YWIxMGYzZWVlYWEwN2M0NDZiN2Y4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIExp
bmU6OkNvbnRlbnQ6OlJ1bjo6UnVuKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0
IFRleHRDb250ZXh0JiB0ZXh0Q29uCiAKIExpbmU6OkxpbmUoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywg
U2tpcFZlcnRpY2FsQWxpZ21lbnQgc2tpcFZlcnRpY2FsQWxpZ21lbnQpCiAgICAgOiBtX2xheW91
dFN0YXRlKGxheW91dFN0YXRlKQotICAgICwgbV9jb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8TGlu
ZTo6Q29udGVudD4oKSkKKyAgICAsIG1fY29udGVudChtYWtlVW5pcXVlPExpbmU6OkNvbnRlbnQ+
KCkpCiAgICAgLCBtX2xvZ2ljYWxUb3BMZWZ0KGluaXRpYWxDb25zdHJhaW50cy5sb2dpY2FsVG9w
TGVmdCkKICAgICAsIG1fYmFzZWxpbmUoeyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFz
ZWxpbmUuYmFzZWxpbmVPZmZzZXQsIGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGlu
ZS5oZWlnaHQgLSBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVP
ZmZzZXQgfSkKICAgICAsIG1faW5pdGlhbFN0cnV0KGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRB
bmRCYXNlbGluZS5zdHJ1dCkKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIAog
dm9pZCBMaW5lOjphcHBlbmROb25CcmVha2FibGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2NvbnRl
bnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0
ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlx
dWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVu
dExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsUmVjdC53aWR0aCgpOwogfQogCkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYg
aW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICB9CiAKICAgICBhdXRvIHRleHRDb250
ZXh0ID0gQ29udGVudDo6UnVuOjpUZXh0Q29udGV4dCB7IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5s
aW5lSXRlbS5pc0NvbGxhcHNlZCgpID8gMSA6IGlubGluZUl0ZW0ubGVuZ3RoKCksIGlzQ29tcGxl
dGVseUNvbGxhcHNlZCwgaW5saW5lSXRlbS5pc1doaXRlc3BhY2UoKSwgY2FuQmVFeHRlbmRlZCB9
OwotICAgIGF1dG8gbGluZUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5s
aW5lSXRlbSwgdGV4dENvbnRleHQsIGxvZ2ljYWxSZWN0KTsKKyAgICBhdXRvIGxpbmVJdGVtID0g
bWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2Fs
UmVjdCk7CiAgICAgaWYgKGlzVHJpbW1hYmxlICYmICFpc0NvbXBsZXRlbHlDb2xsYXBzZWQpCiAg
ICAgICAgIG1fdHJpbW1hYmxlQ29udGVudC5hZGQobGluZUl0ZW0uZ2V0KCkpOwogCkBAIC0zMDMs
NyArMzAzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGwKICAgICAgICAgbG9naWNhbFJlY3Qu
c2V0SGVpZ2h0KGlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGlubGluZUl0ZW0pKTsKICAgICB9CiAK
LSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpS
dW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBw
ZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwog
ICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSAobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1h
cmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRl
bnQuY2xlYXIoKTsKIH0KQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZEhhcmRM
aW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICAgICAgYWRqdXN0QmFz
ZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGluZUl0ZW0sIHsgfSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0
LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KLSAgICBtX2NvbnRlbnQtPnJ1bnMo
KS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2lj
YWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVu
dDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogfQogCiB2b2lkIExpbmU6OmFkanVz
dEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlv
dXRVbml0IHJ1bkhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuaAppbmRleCBmYWYwNTQ3NTNkMzcyMmFiYzAxZDhhNzNmNDc5
OTM0OWJjYjFhYTExLi43MzdhMDdiMDMyYWY2ZmYxMTk5MDk2ZjdhMzc1NzU3ZTZkYTlmMWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZS5oCkBAIC01Miw4ICs1MiwxMCBAQCBjbGFzcyBMaW5lIHsKICAgICBMaW5lKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiwgU2tpcFZlcnRpY2FsQWxpZ21l
bnQpOwogCiAgICAgY2xhc3MgQ29udGVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgc3RydWN0IFJ1biB7CisgICAgICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgICAgICBzdHJ1Y3QgVGV4dENvbnRl
eHQgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAppbmRleCBmMTMwODlh
NzA4ZjNmZTNmZjliNzdmNzIwOTZjZGE0MmVmMzZlMjIyLi41ZTZjMjU2ZGIwYjMwOWFhZjFlMjU4
MjFmMGUxZTE4ZTU2NDUyZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVt
cyYgaW5saW5lQ29udGVudCwgY29uc3QKIHsKICAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4
dENvbnRlbnQoKTsKICAgICBpZiAoIXRleHQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBpbmxp
bmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVC
b3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5h
cHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwg
ZmFsc2UpKTsKIAogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lQm94LnN0eWxlKCk7CiAgICAgYXV0
byBwcmVzZXJ2ZU5ld2xpbmUgPSBzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKTsKQEAgLTk5LDIwICs5
OSwyMCBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5s
aW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlv
biA8IHRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgLy8gU29mdCBsaW5lYnJlYWs/CiAgICAgICAg
IGlmIChpc1NvZnRMaW5lQnJlYWsodGV4dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xp
bmUpKSB7Ci0gICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFs
c2UpKTsKKyAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOwog
ICAgICAgICAgICAgKytjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRbY3VycmVudFBv
c2l0aW9uXSwgcHJlc2VydmVOZXdsaW5lKSkgewogICAgICAgICAgICAgYXV0byBsZW5ndGggPSBt
b3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHRleHQsIGN1cnJlbnRQb3NpdGlvbiwgcHJl
c2VydmVOZXdsaW5lKTsKICAgICAgICAgICAgIGF1dG8gaXNDb2xsYXBzZWQgPSBjb2xsYXBzZVdo
aXRlU3BhY2UgJiYgbGVuZ3RoID4gMTsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0
aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFwc2VkKSk7CisgICAgICAgICAgICBpbmxpbmVDb250
ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQ
b3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBpc0NvbGxhcHNlZCkpOwogICAgICAgICAgICAgY3VycmVu
dFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgYXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uLCBsaW5lQnJlYWtJdGVyYXRvciwgc3R5bGUpOwotICAgICAgICBpbmxpbmVDb250
ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1
cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgaW5saW5lQ29u
dGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50
UG9zaXRpb24sIGxlbmd0aCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIGN1cnJlbnRQb3NpdGlv
biArPSBsZW5ndGg7CiAgICAgfQogfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbmxpbmVUZXh0SXRlbT4gSW5saW5lVGV4dEl0ZW06OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9z
aXRpb24sIHVuCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiA+PSB0aGlzLT5z
dGFydCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0aW9uICsgbGVuZ3RoIDw9IGVu
ZCgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0
Qm94KCksIHNwbGl0UG9zaXRpb24sIGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2Vk
KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwg
c3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3Bw
CmluZGV4IGVkZjJkNGIyNzY2MjJjODk1ZDE3Nzk3MTRjZjdjZjIwOGFjZDljNDIuLmY1NmUxYTYx
NmEyZGY1NzcxYmI0OGE3NTgwM2FlNTczZmNmOGM3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtNDUsNyArNDUsNyBAQCBCb3g6OkJv
eChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgQmFzZVR5cGVGbAogICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKIHsKICAgICBpZiAo
aXNSZXBsYWNlZCgpKQotICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXBsYWNlZD4oKnRoaXMpOworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJl
cGxhY2VkID0gbWFrZVVuaXF1ZTxSZXBsYWNlZD4oKnRoaXMpOwogfQogCiBCb3g6OkJveChPcHRp
b25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
QEAgLTQyMyw3ICs0MjMsNyBAQCBjb25zdCBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OnJhcmVEYXRh
KCkgY29uc3QKIEJveDo6Qm94UmFyZURhdGEmIEJveDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAg
IHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUo
dGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10g
eyByZXR1cm4gbWFrZVVuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwog
fQogCiB2b2lkIEJveDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDVmZWVjZWU3
MmYwOGM0ODUwODhlZTQ4NTE5NDVjNjY0MGNmZTU3ZDMuLmJjMmJiZWU3OGEzNjg2ODI2YjIwNGRm
YjVmNjk2MjVmOTU2ZjJiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTEyOCwyNSArMTI4LDI1IEBAIHN0
ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVu
ZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVy
ZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDbGVhcmx5IHRoZXJlIG11c3QgYmUgYSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIHRoaXMuCiAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJlci5zdHlsZSgpLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5k
ZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5z
dHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihk
b3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVy
U3R5bGU6OmNsb25lKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8
UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERp
c3BsYXlUeXBlOjpJbmxpbmUpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRS
ZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CiAgICAgICAgIHJldHVybiBj
aGlsZExheW91dEJveDsKICAgICB9CiAKICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVyZXIpOwogICAgIGF1dG8gZGlzcGxheVR5cGUgPSByZW5k
ZXJlci5zdHlsZSgpLmRpc3BsYXkoKTsKICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5k
ZXJlcikpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVy
KSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKIAogICAgIGlmIChpczxS
ZW5kZXJUYWJsZT4ocmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgcHJpbmNp
cGFsIHRhYmxlIHdyYXBwZXIgYm94IChhbmQgbm90IHRoZSB0YWJsZSBib3ggaXRzZWxmKS4KLSAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpF
bGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICBjaGlsZExheW91
dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94
OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVy
ZXIpKSB7CiAgICAgICAgIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spCi0g
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFr
ZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHlldCBz
dXBwb3J0IGFsbCByZXBsYWNlZCBlbGVtZW50cyBhbmQgdGhpcyBpcyB0ZW1wb3JhcnkgYW55d2F5
LgogICAgICAgICBpZiAoY2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCkpCiAgICAgICAgICAgICBj
aGlsZExheW91dEJveC0+cmVwbGFjZWQoKS0+c2V0SW50cmluc2ljU2l6ZShkb3duY2FzdDxSZW5k
ZXJSZXBsYWNlZD4ocmVuZGVyZXIpLmludHJpbnNpY1NpemUoKSk7CkBAIC0xNjEsMTggKzE2MSwx
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNv
bnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICAg
ICAgc3R5bGUtPnNldFRvcCh7IG9mZnNldC0+aGVpZ2h0KCksIEZpeGVkIH0pOwogICAgICAgICAg
ICAgICAgIHN0eWxlLT5zZXRMZWZ0KHsgb2Zmc2V0LT53aWR0aCgpLCBGaXhlZCB9KTsKLSAgICAg
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihl
bGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7CisgICAgICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKCpzdHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5l
cj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1
ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9
PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5k
ZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlm
IChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spCi0gICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmli
dXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7Cisg
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CiAgICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNh
cHRpb24gfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkgewotICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUo
KSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4o
ZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIu
c3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBl
OjpUYWJsZVJvd0dyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRl
ckdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCiAg
ICAgICAgICAgICB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgZGlz
cGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAgfHwgZGlzcGxheVR5cGUg
PT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJl
ciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhy
ZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFRyZWVCdWlsZGVy
OjpjcmVhdGVUYWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwg
Q29udGFpbgogICAgICAgICB0YWJsZUNoaWxkID0gdGFibGVDaGlsZC0+bmV4dFNpYmxpbmcoKTsK
ICAgICB9CiAKLSAgICBhdXRvIHRhYmxlQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+
KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBS
ZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgYXV0byB0YWJs
ZUJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94
OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVy
ZXIuc3R5bGUoKSkpOwogICAgIGFwcGVuZENoaWxkKHRhYmxlV3JhcHBlckJveCwgKnRhYmxlQm94
KTsKICAgICB3aGlsZSAodGFibGVDaGlsZCkgewogICAgICAgICBUcmVlQnVpbGRlcjo6Y3JlYXRl
U3ViVHJlZShkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGFibGVDaGlsZCksICp0YWJsZUJveCk7
CkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRz
KCkKICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBvdXRwdXQgZ2VvbWV0
cnkgd2l0aG91dCBsYXlvdXQgY29udGV4dC4KICAgICAgICAgYXV0byYgcmVuZGVyVmlldyA9ICpk
b2N1bWVudC0+cmVuZGVyVmlldygpOwogICAgICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxv
Y2sgPSBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAg
YXV0byBsYXlvdXRTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4o
KmluaXRpYWxDb250YWluaW5nQmxvY2spOworICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gbWFr
ZVVuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAg
ICAgICAgIGxheW91dFN0YXRlLT5zZXRRdWlya3NNb2RlKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5p
bkxpbWl0ZWRRdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6TGltaXRlZCA6
IChyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVp
cmtzTW9kZTo6WWVzIDogTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6Ok5vKSk7CiAgICAgICAgIGxh
eW91dFN0YXRlLT51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgc2hvd0xheW91dFRyZWUoKmluaXRp
YWxDb250YWluaW5nQmxvY2ssIGxheW91dFN0YXRlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA1MWQ3N2U0YWYxZGJkZGYwNDVhOTJjMWM4YWQzYjk5
ZWFjZWI5N2I1Li5iNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGUoRG9jdW1l
bnRMb2FkZXImIGRvY3VtZW50TG9hCiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRG
aWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7
CiB9CiAKIENvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVudEZp
bHRlcnMsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggZDBkNTRiOTdl
YWU3MjA0MjZmOTYxYzhkYWU4OTVlMjAzNjljZWRjYy4uYzRjZTVmNTUyMTcwYjNjZmM4Yjg0MWI1
OWE1MTBmZDc1YWE4M2ZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIHZhbGlkYXRl
UHJlZmxpZ2h0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlcwogICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24p
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICBpZiAo
IXJlc3VsdC0+cGFyc2UocmVzcG9uc2UpCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3Nz
T3JpZ2luTWV0aG9kKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgZXJyb3JEZXNjcmlwdGlvbikKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmln
aW5IZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpLCBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgZXJyb3JEZXNjcmlwdGlvbikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IGRlMDllNzAzOTljYzc0N2U4ODczNjk3ODM3MjRlNmRhYTlmYzc4OGIu
LjA0NTVjYWZjNTlmZjdiNmVhMWY5YTJjZDM5MzFhNjllOWY2OTQ0NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIERvY3VtZW50
TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN1YnN0aXR1dGVECiAgICAgLCBtX29yaWdpbmFsU3Vic3RpdHV0ZURhdGFXYXNWYWxpZChz
dWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2
ZXJ5VGltZXIoKnRoaXMsICZEb2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZl
cnlUaW1lckZpcmVkKQogICAgICwgbV9kYXRhTG9hZFRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2Fk
ZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdykKLSAgICAsIG1fYXBwbGljYXRpb25DYWNo
ZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQorICAg
ICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0
PigqdGhpcykpCiB7CiB9CiAKQEAgLTEzMzYsNyArMTMzNiw3IEBAIHVpbnQ2NF90IERvY3VtZW50
TG9hZGVyOjpsb2FkQXBwbGljYXRpb25NYW5pZmVzdCgpCiAgICAgaWYgKG1hbmlmZXN0VVJMLmlz
RW1wdHkoKSB8fCAhbWFuaWZlc3RVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOworICAgIGF1
dG8gbWFuaWZlc3RMb2FkZXIgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+
KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOwogICAgIGF1dG8qIHJhd01hbmlm
ZXN0TG9hZGVyID0gbWFuaWZlc3RMb2FkZXIuZ2V0KCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0g
bmV4dENhbGxiYWNrSUQrKzsKICAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChX
VEZNb3ZlKG1hbmlmZXN0TG9hZGVyKSwgY2FsbGJhY2tJRCk7CkBAIC0xNDI3LDcgKzE0MjcsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmIGFyY2hpdmUp
CiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFy
Y2hpdmUpCiB7CiAgICAgaWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAg
IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbj4oKTsKKyAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
ID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkQWxsUmVzb3VyY2VzKGFyY2hpdmUpOwogfQogCkBAIC0x
NDM2LDcgKzE0MzYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3Vy
Y2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVz
b3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAoIW1fYXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAg
ICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRS
ZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiB9CiAKQEAgLTE5NjMsNyArMTk2Myw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKICAgICAgICAgLy8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9y
ZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdAogICAgICAgICAv
LyBpcyBub3cgaW4gYSBzdGF0ZSB3aGVyZSBzdGFydGluZyBhbiBlbXB0eSBsb2FkIHdpbGwgYmUg
aW5jb25zaXN0ZW50LiBSZXBsYWNlIGl0IHdpdGgKICAgICAgICAgLy8gYSBuZXcgQXBwbGljYXRp
b25DYWNoZUhvc3QuCi0gICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CisgICAgICAgIG1fYXBwbGljYXRp
b25DYWNoZUhvc3QgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CiAg
ICAgICAgIG1heWJlTG9hZEVtcHR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTIy
LDcgKzIxMjIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBpY29uTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGVy
PigqdGhpcywgaWNvbi51cmwpOworICAgIGF1dG8gaWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8SWNv
bkxvYWRlcj4oKnRoaXMsIGljb24udXJsKTsKICAgICBhdXRvKiByYXdJY29uTG9hZGVyID0gaWNv
bkxvYWRlci5nZXQoKTsKICAgICBtX2ljb25Mb2FkZXJzLnNldChXVEZNb3ZlKGljb25Mb2FkZXIp
LCBuZXdDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApp
bmRleCBjNDUwYzA4NzBjMGRiOTAwMmI5MDRjN2I2Y2JjZTRjOTY5MDJjNmRjLi5hY2EzNDUyOTg1
YjczMTE5YmNiMjNjNDNiYTIzZWVmYjc1YTdhMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcApAQCAtNTgyLDcgKzU4Miw3IEBAIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VD
b25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEVtcHR5UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiBkdW1teVByb2dyZXNzVHJhY2tlckNsaWVudDsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSAmZHVtbXlQcm9n
cmVzc1RyYWNrZXJDbGllbnQuZ2V0KCk7CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudD4oKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dCA9IG1ha2VVbmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKIAogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmNyZWF0ZSh7IH0sIHsgfSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJh
c2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgRW1wdHlEYXRhYmFzZVByb3ZpZGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGUwZjQ2MTQ4ZjJkZmFhODdmNmIyNDI2
MzdkNTA4OTE4NTIwYTYwYTIuLjgzYmViMjcxN2QzMzdjMzQxYzAxNWVjZjQ2ZDRmMzczZTA4YjE1
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjcwLDEwICsyNzAs
MTAgQEAgY2xhc3MgRnJhbWVMb2FkZXI6OkZyYW1lUHJvZ3Jlc3NUcmFja2VyIHsKIEZyYW1lTG9h
ZGVyOjpGcmFtZUxvYWRlcihGcmFtZSYgZnJhbWUsIEZyYW1lTG9hZGVyQ2xpZW50JiBjbGllbnQp
CiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9w
b2xpY3lDaGVja2VyKHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQotICAg
ICwgbV9oaXN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkK
KyAgICAsIG1fcG9saWN5Q2hlY2tlcihtYWtlVW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1lKSkK
KyAgICAsIG1faGlzdG9yeShtYWtlVW5pcXVlPEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCiAg
ICAgLCBtX25vdGlmaWVyKGZyYW1lKQotICAgICwgbV9zdWJmcmFtZUxvYWRlcihzdGQ6Om1ha2Vf
dW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFtZSkpCisgICAgLCBtX3N1YmZyYW1lTG9hZGVyKG1h
a2VVbmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKICAgICAsIG1fbWl4ZWRDb250ZW50Q2hl
Y2tlcihmcmFtZSkKICAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICwg
bV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZCkKQEAgLTMyMSw3ICszMjEsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkRpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAK
ICAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRl
eHQoKTsKLSAgICBtX3Byb2dyZXNzVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9n
cmVzc1RyYWNrZXI+KG1fZnJhbWUpOworICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1
ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KGNvbnN0IFVSTCYpCkBAIC0zNDYsNyArMzQ2LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJM
JikKICAgICBtX25lZWRzQ2xlYXIgPSB0cnVlOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9
IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNr
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAg
ICBtX3Byb2dyZXNzVHJhY2tlciA9IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1f
ZnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzKQpAQCAtMjY3OCw3ICsyNjc4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRy
ZW4oKQogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dz
aW5nLXRoZS13ZWIuaHRtbCNuYXZpZ2F0ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXZpZ2F0aW9u
RGlzYWJsZXI+IG5hdmlnYXRpb25EaXNhYmxlcjsKICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFt
ZSgpKQotICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmln
YXRpb25EaXNhYmxlcj4oJm1fZnJhbWUpOworICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBt
YWtlVW5pcXVlPE5hdmlnYXRpb25EaXNhYmxlcj4oJm1fZnJhbWUpOwogCiAgICAgLy8gQW55IHN1
YmZyYW1lIGluc2VydGVkIGJ5IHVubG9hZCBldmVudCBoYW5kbGVycyBleGVjdXRlZCBpbiB0aGUg
bG9vcCBiZWxvdyB3aWxsIG5vdCBnZXQgdW5sb2FkZWQKICAgICAvLyBiZWNhdXNlIHdlIGNyZWF0
ZSBhIGNvcHkgb2YgdGhlIHN1YmZyYW1lcyBsaXN0IGJlZm9yZSBsb29waW5nLiBUaGVyZWZvcmUs
IGl0IHdvdWxkIGJlIHVuc2FmZSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRl
eCA4ZTNhNDZiNTEwYTk5ODBjMmFmYjgwYTM0NDhhNDk4OWVhYzE5ZTE5Li41ZmZmNjdkOTQyZWJl
OTFlMDNhNTI5NmU2ZTlkYTI0ZGIzYjdjY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaApAQCAtOTYsNiArOTYsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGlzUmVsb2FkKEZyYW1l
TG9hZFR5cGUpOwogdXNpbmcgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPjsKIAogY2xh
c3MgRnJhbWVMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVyKTsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWRlcihG
cmFtZSYsIEZyYW1lTG9hZGVyQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKaW5kZXggY2RmNjQ5NTI2ZmUzZDFmMzMyOGQ2ZTM2YzIwMTA4N2MzMWYxNjU1Yi4uNDA4YzUz
NjQyOWUzYjA4Nzc5OGViOTdlNzY4NjRjYzk0ODY2NjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmNwcApAQCAtMTQyLDIyICsxNDIsMjIgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xp
ZW4KIHsKICAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNo
ZWRJbWFnZT4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxv
YWRJbWFnZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNv
dXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdDoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBk
b3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGlua1ByZWxvYWRTdHlsZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENT
U1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQ
cmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHls
ZVNoZWV0PihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRS
ZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRGb250
UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJl
c291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2Up
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VD
bGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwogI2Vu
ZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWVkaWFSZXNvdXJjZToKICAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWVkaWFQ
cmVsb2FkaW5nRW5hYmxlZCgpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6UmF3UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2Fj
aGVkUmF3UmVzb3VyY2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExp
bmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVz
b3VyY2U+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJl
c291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Okljb246CiAjaWYgRU5BQkxF
KFNWR19GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
RGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaApp
bmRleCAwMmNjN2QxMjBjYTRiY2ZmMzUyNWM4Zjc0OWNjNDE4MGZlNmQ0NWUyLi44YWU0YjMxYjhi
NjlmOThkMDFhZGE3ODg5OWE5OGJkMTFkZDQyNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25EaXNhYmxlci5oCkBAIC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE5hdmlnYXRpb25EaXNhYmxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkRpc2FibGVyKEZyYW1lKiBmcmFtZSkKICAg
ICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwCmluZGV4IDU1OGM3ODA0OTU3ZWM4ODI4ODE4ZWY1NjE5YmY5ODNkM2Y5
NDBhNTUuLjNjMmMyNTJhYTUxYjk2OTI5NWVjZjE0ODEyNTRhMzI0MGVjNDJhNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM5Nyw3ICsz
OTcsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoRG9jdW1l
bnQmIGluaXRpYXRpbmdEb2N1bWVudCwgZG91YmxlCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBiYWNr
L2ZvcndhcmQgbGlzdCBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4K
ICAgICBpZiAoIW1fcmVkaXJlY3QgfHwgZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkgewog
ICAgICAgICBhdXRvIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBkZWxheSA8PSAxID8gTG9ja0JhY2tG
b3J3YXJkTGlzdDo6WWVzIDogTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm87Ci0gICAgICAgIHNjaGVk
dWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVu
dCwgZGVsYXksICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9j
a0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJkTGlzdCkpOworICAgICAgICBzY2hlZHVsZSht
YWtlVW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAm
bV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZ
ZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKICAgICB9CiB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBA
QCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoRG9jdW1l
bnQmIGluaXRpYXRpbmdEb2N1bWVudCwgUwogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVuIGEg
ZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRpb24gb2YgYW5vdGhlciBmcmFtZS4KICAgICBib29sIGR1
cmluZ0xvYWQgPSAhbG9hZGVyLnN0YXRlTWFjaGluZSgpLmNvbW1pdHRlZEZpcnN0UmVhbERvY3Vt
ZW50TG9hZCgpOwogCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRMb2Nh
dGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVm
ZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1
bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1
cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9h
ZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2No
ZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJt
aXNzaW9uKQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvCiAgICAg
ICAgIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXM7CiAgICAg
fQogICAgIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1p
c3Npb24+KFdURk1vdmUoc3VibWlzc2lvbiksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xv
YWQpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihX
VEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CiB9
CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBp
bml0aWF0aW5nRG9jdW1lbnQpCkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2No
ZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2goRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkKICAg
ICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2Zy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5v
dXRnb2luZ1JlZmVycmVyKCkpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJl
ZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVudCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOwogfQog
CiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50
IHN0ZXBzKQpAQCAtNDk4LDEzICs0OTgsMTMgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKICAgICB9CiAKICAgICAvLyBJbiBh
bGwgb3RoZXIgY2FzZXMsIHNjaGVkdWxlIHRoZSBoaXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1ciBh
c3luY2hyb25vdXNseS4KLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEhp
c3RvcnlOYXZpZ2F0aW9uPihzdGVwcykpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1
bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0ZXBzKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVQYWdlQmxvY2soRG9jdW1lbnQmIG9yaWdpbkRvY3VtZW50KQogewogICAg
IGlmIChzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKLSAgICAgICAgc2NoZWR1bGUoc3RkOjpt
YWtlX3VuaXF1ZTxTY2hlZHVsZWRQYWdlQmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CisgICAgICAg
IHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkp
OwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnRpbWVyRmlyZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKaW5kZXggYTJkZGFjZTI4ZjA3YzM5
MWZlMjRlMTkxOGQyNTRhNTAwMmZhYjQ3Ni4uOTdjMjNiMTUwOTJiZjM5M2IzMWQyMGM4ZjM0ZDI1
NzcyNjMxY2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogZW51bSBjbGFzcyBO
ZXdMb2FkSW5Qcm9ncmVzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgCiBjbGFzcyBOYXZpZ2F0
aW9uU2NoZWR1bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBOYXZpZ2F0aW9uU2NoZWR1bGVyKEZyYW1lJik7CiAgICAgfk5hdmlnYXRpb25T
Y2hlZHVsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1Ry
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5k
ZXggZTE3YTlkYzcyZGUwMzdjOTYzNGJjMWNjOTNjMmMxYTc3YTg2YmZhMy4uMjgxN2E3NjY2NDU3
YjIzOTczYTY4ZmNmN2JjMDE4MGMxMmJmNWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
b2dyZXNzVHJhY2tlci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tl
cjo6aW5jcmVtZW50UHJvZ3Jlc3ModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZQogCiAgICAgYXV0byYgaXRlbSA9IG1fcHJvZ3Jlc3NJdGVtcy5hZGQoaWRlbnRpZmllciwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghaXRlbSkgewotICAgICAgICBpdGVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CisgICAg
ICAgIGl0ZW0gPSBtYWtlVW5pcXVlPFByb2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwCmluZGV4IGVhNWRiZmJhYWIyMGJmZDQzZGVhY2YxZTc3NjExYzM0MzNh
YmFiODMuLjgyNDZiYjA3MDZjZDBjMDcxZjg5OTYyODk4NmE1YmE1MWM0OGI2MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTUzNSw3ICs1
MzUsNyBAQCBib29sIFRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbiwgYm9vbAogICAgIGlmIChtX2NvbnRlbnRUeXBlID09
IFhNTCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2NoYXJzZXRQYXJzZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNlcj4oKTsKKyAgICBtX2NoYXJzZXRQYXJz
ZXIgPSBtYWtlVW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNlcj4oKTsKICAgICByZXR1cm4gY2hl
Y2tGb3JNZXRhQ2hhcnNldChkYXRhLCBsZW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGNhOWU2YzQzNDNkNzQwMTA1NTNhOWUxMGZhNjU2M2Vl
NTIzOTFiYmUuLmZhOTI2ZWEwNjJhZGZmMjA1NzBjOGEzNjkxMjQ2NzJiOWVmNTY2ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9jdWVQYXJzZXIpCi0gICAg
ICAgIG1fY3VlUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19j
YXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OworICAgICAgICBtX2N1ZVBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNf
Y2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKIAogICAgIHdoaWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAg
ICAgYXV0byBkYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBh
MTI2M2UyZjA0NTc0YjRmMGVlNzNjMDRlOGI2MmY1YzgwNzJhNzU4Li43NzUzMmY4NjEzNGUwNDNh
ZDM3ZDNmNTk5OThhNmY1N2E0MjQxNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVh
ZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCiAg
ICAgYXV0byBzZWN1cml0eU9yaWdpbkNvcHkgPSBzZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5
KCk7Ci0gICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgp
KTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBtYWtlVW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAg
IGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5
UG9saWN5KTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5VXBncmFkZUluc2Vj
dXJlUmVxdWVzdFN0YXRlRnJvbSgqY29udGVudFNlY3VyaXR5UG9saWN5KTsKIAotICAgIGF1dG8g
b3B0aW9uc0NvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRpb25z
LCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJl
cXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7CisgICAg
YXV0byBvcHRpb25zQ29weSA9IG1ha2VVbmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMs
IHJlcXVlc3QuaHR0cFJlZmVycmVyKCkuaXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDogcmVx
dWVzdC5odHRwUmVmZXJyZXIoKSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKIAogICAg
IC8vIEFsbCBsb2FkcyBzdGFydCBvdXQgYXMgRG9jdW1lbnQuIEluc2lkZSBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyIHdlIHVwZ3JhZGUgdGhpcyB0byBhIFdvcmtlciBsb2FkLgogICAgIEFTU0VSVChv
cHRpb25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6
OkRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZjk3ZWIwMDQyNWJkMjliM2NiNmJjYjM0NWZiZmQ2
NTIyNDA4ZjhjZS4uYmJhOTEwNDE5MTU0ZWNmNDNjMTIyZTJkOTBjZjg2NDU1OTdhOTlkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUmIG5vZGUsIFdURjo6RnVuY3Rpb248Ym9vbAogICAg
IC8vIGJ1dCB3ZSBjYW4gYXBwcm94aW1hdGUgdGhhdCBieSBjaGVja2luZyBpZiBzY3JpcHRpbmcg
aXMgZW5hYmxlZCByaWdodCBub3cuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxRdWFsaWZp
ZWROYW1lPj4gdGFnTmFtZXNUb0ZpbHRlcjsKICAgICBpZiAoZnJhbWUtPnBhZ2UoKSAmJiBmcmFt
ZS0+cGFnZSgpLT5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKSB7Ci0gICAgICAgIHRhZ05h
bWVzVG9GaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4oKTsK
KyAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9IG1ha2VVbmlxdWU8VmVjdG9yPFF1YWxpZmllZE5h
bWU+PigpOwogICAgICAgICB0YWdOYW1lc1RvRmlsdGVyLT5hcHBlbmQoSFRNTE5hbWVzOjpub3Nj
cmlwdFRhZyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAppbmRleCBmMzEyOTA3MjhmNjk5MGQ4MDA4YmEyNjQ0MDIxY2IxZDg4NWI5NDU3Li43
MGY1ODY4NDhlYWVlMjkxMjZjNGJhZTkxMDZjMTVlMjk2YTkwNzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lk
IENhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogICAgICAgICBtX2ltYWdlT2JzZXJ2ZXItPmNhY2hlZEltYWdlcygpLmFkZCh0aGlzKTsK
IAogICAgIGlmIChtX2ltYWdlICYmIGlzPFNWR0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAgIG1f
c3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0
PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5p
cXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIH0KIAog
dm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGll
bnQpCkBAIC0zNTcsNyArMzU3LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNyZWF0ZUlt
YWdlKCkKIAogICAgIGlmIChtX2ltYWdlKSB7CiAgICAgICAgIGlmIChpczxTVkdJbWFnZT4oKm1f
aW1hZ2UpKQotICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAgICAg
ICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxT
VkdJbWFnZT4oKm1faW1hZ2UpKTsKIAogICAgICAgICAvLyBTZW5kIHF1ZXVlZCBjb250YWluZXIg
c2l6ZSByZXF1ZXN0cy4KICAgICAgICAgaWYgKG1faW1hZ2UtPnVzZXNDb250YWluZXJTaXplKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCmluZGV4IGJlNjE4M2FiZmE1OWQ1YzhlMTYyZmVjMWQ2NTUyNDUyM2FkZTI3OGMuLmY5YTc1
ZjM1NDUyNzY5MDJhOWU0YTVjMzViNmFjNmIxZjE1MGMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMjA4LDcgKzIwOCw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRp
cmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQo
UmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJlc3BvbnNlKSk7Ci0gICAgICAgIGl0ZXJhdGVDbGllbnRz
KENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2Ns
aWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdU
Rk1vdmUocmVxdWVzdCksIHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9u
c2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsK
KyAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92ZShyZXF1ZXN0KSwgbWFrZVVuaXF1ZTxSZXNvdXJj
ZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNwb25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVj
ZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggZTQzMGU0NDdhYzQ5NDYzNmM5ODRlNzRkNDBiOTFl
NjVjZGViYjUwYi4uMDU2N2QxZDVkZThjNmYxM2UxODY4NDRhZWQ3NTU3NWNmMTdlMTcyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01
NDYsNyArNTQ2LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIgdGhh
biBpbW1lZGlhdGVseSBzZW5kaW5nIGNhbGxiYWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90aGVy
IENhY2hlZFJlc291cmNlcywKICAgICAgICAgLy8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBh
bmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlzaCBzeW5jaHJvbm91c2x5LgogICAgICAgICBBU1NFUlQo
IW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suY29udGFpbnMoJmNsaWVudCkpOwotICAgICAgICBt
X2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50LCBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrPigqdGhpcywgY2xpZW50KSk7CisgICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJh
Y2suYWRkKCZjbGllbnQsIG1ha2VVbmlxdWU8Q2FsbGJhY2s+KCp0aGlzLCBjbGllbnQpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODQzYTlkMWY5ZDZjODVm
MTAwMGEyYzQwZjE5NjRiNDdhMmViMWM3YS4uYjM0YjhmZDM1YzEwNzdhNTQ1MmFiYjM0MzIzNjFi
NGNjM2QxMWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXUKICAgICAvLyBFbnRyeSBwb2ludCB0byBodHRwczovL2ZldGNoLnNwZWMud2hhdHdn
Lm9yZy8jbWFpbi1mZXRjaC4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBv
cmlnaW5hbFJlcXVlc3Q7CiAgICAgaWYgKENhY2hlZFJlc291cmNlOjpzaG91bGRVc2VQaW5nTG9h
ZCh0eXBlKSB8fCByZXF1ZXN0Lm9wdGlvbnMoKS5kZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykgewotICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSk7CisgICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0
PihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5j
bGVhckhUVFBSZWZlcnJlcigpOwogICAgICAgICBvcmlnaW5hbFJlcXVlc3QtPmNsZWFySFRUUE9y
aWdpbigpOwogICAgIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmVsCiAgICAgICAgIHJlc291cmNlVmFsdWUtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CiAKICAg
ICAgICAgaWYgKCFtX3ByZWxvYWRzKQotICAgICAgICAgICAgbV9wcmVsb2FkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgIG1f
cHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAg
ICAgICAgIG1fcHJlbG9hZHMtPmFkZChyZXNvdXJjZVZhbHVlLmdldCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIHJlc291cmNlOwpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2xlYXJQcmVsb2FkcyhDbGVhclByZWxvYWRzTW9kZSBtb2RlKQogICAgICAgICBB
U1NFUlQocmVzb3VyY2UpOwogICAgICAgICBpZiAobW9kZSA9PSBDbGVhclByZWxvYWRzTW9kZTo6
Q2xlYXJTcGVjdWxhdGl2ZVByZWxvYWRzICYmIHJlc291cmNlLT5pc0xpbmtQcmVsb2FkKCkpIHsK
ICAgICAgICAgICAgIGlmICghcmVtYWluaW5nTGlua1ByZWxvYWRzKQotICAgICAgICAgICAgICAg
IHJlbWFpbmluZ0xpbmtQcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2Fj
aGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMg
PSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgICAg
ICByZW1haW5pbmdMaW5rUHJlbG9hZHMtPmFkZChyZXNvdXJjZSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAppbmRleCA3MGNiMWFmYTRjZjFkM2E2ZTY0
MmE4YWU5ZGI4NDQ4Zjg0ZDE0YmQ2Li4xNDQyNTc0YzNkYjhkNWVmYWQzZGM3NTIzNzlhZmNlMDI5
N2QwZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKIGNsYXNzIENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQyM2MzZmM1MjRiZDhiNmY1NWYz
NWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2FmZmNiZWYzOTI3ODI2M2M0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC04Niw3
ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAgQVNTRVJUKHNlc3Npb25JRC5p
c1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJlc291cmNlcy5hZGQoc2Vzc2lv
bklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1h
cCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CisgICAgICAgIG1hcCA9
IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAgcmV0dXJuICptYXA7CiB9CiAK
QEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0
aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmVtb3ZlSW1h
Z2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBjYWNo
ZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBhdXRvIGNh
Y2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFn
ZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsK
KyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRt
YXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJbWFnZUNsaWVu
dCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29k
ZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmxydUxpc3RG
b3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0JgogCiAgICAgbV9hbGxSZXNv
dXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsKICAgICB3aGlsZSAobV9hbGxS
ZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAgIG1fYWxsUmVzb3VyY2VzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+KCkpOworICAgICAgICBtX2Fs
bFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxMUlVMaXN0PigpKTsKICAgICBy
ZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KaW5kZXggZjZiODIyMTc5MTZjYWQ5NWJmZTk2MGJi
M2UzNzg0YTI3MGE5YmE2Ny4uYzVjYTVjMjVmMTFiNGQ4YTljYTkzZWZjODg5MDk5MDdmNmI3NjYw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQpAQCAtODYs
NyArODYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooUmVzb3Vy
Y2VMb2FkZXImKXJlc291cmNlTG9hZGVyIHJlc291cmNlUgogCiAgICAgX3Jlc291cmNlTG9hZGVy
ID0gbWFrZVdlYWtQdHIocmVzb3VyY2VMb2FkZXIpOwogICAgIF9yZXNwb25zZSA9IHJlc291cmNl
UmVzcG9uc2U7Ci0gICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZl
cnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKKyAgICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2
aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UpOwogICAgIF9idWZmZXJlZERhdGFBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9zaG91bGREZWNp
ZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3Mo
KS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpOwogCkBA
IC0yNDYsNyArMjQ2LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICB9CiAKICAgICBf
Y2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJldGFpblB0
cihzZWxmKV0gKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2NvbnZlcnRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBwYXNz
d29yZCk7CisgICAgICAgIF9jb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+
KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOwogICAgICAgICBbX2NvbnZlcnRlci0+cGxhdGZv
cm1Db252ZXJ0ZXIoKSBhcHBlbmREYXRhQXJyYXk6X2J1ZmZlcmVkRGF0YUFycmF5LmdldCgpXTsK
ICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgZmluaXNoZWRBcHBlbmRp
bmdEYXRhXTsKICAgICB9KTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBQcmV2aWV3TG9hZGVyOjp+UHJl
dmlld0xvYWRlcigpCiBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gUHJldmlld0xvYWRl
cjo6Y3JlYXRlKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVU
eXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQ
cmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
cmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKIH0KIAogYm9vbCBQcmV2aWV3TG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzQ3OWNhMWY5Y2Iw
N2Q0YWM3YjRiOWZiMjI4NTFmMGM5OTRiMTcxNC4uNGNjZGFiMDRiN2IzZjU1MzRjZWNjMmExOWVj
MGE0YmNiN2FiMTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZXh0TWVu
dT4gQ29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51KEV2ZW50CiAg
ICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudT4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudT4oKTsKIH0KIAogdm9pZCBDb250
ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCYgZXZlbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGY2M2RhYTdmNjM0NzI1NTg4
NzNkYjNiNTgzYmMyNTEyYTE3NzUyN2EuLmNkYzc0ZjZkZTA5ZTkzZGU5YWFiOTIzNTZlZjJmYmY0
NGRkMmQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC04OCw3ICs4OCw3IEBAIGNsYXNzIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5IGZpbmFsIDogcHVi
bGljIFJlZ2lvbk92ZXJsYXkgewogCiBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRh
dGVSZWdpb24oKQogewotICAgIGF1dG8gcmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+
KCk7CisgICAgYXV0byByZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICAKICAgICBm
b3IgKGNvbnN0IEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKCFmcmFtZS0+
dmlldygpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAppbmRleCA0OGMwNzM0NzcwZWIxMTBjMWM1ZDg0NTNkZDA4Nzk5MmU1NjQ5YTFlLi5kMjBi
OThjNDE1ZWVjODI3NmY4OTAwZjI0YzY3YTk3ZjEwMWQwYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgRXZlbnRIYW5kbGVyOjpFdmVudEhh
bmRsZXIoRnJhbWUmIGZyYW1lKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGVuZGluZ01v
bWVudHVtV2hlZWxFdmVudHNUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6Y2xlYXJMYXRjaGVk
U3RhdGUpCiAjZW5kaWYKLSAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKICNpZiAhRU5BQkxFKElPU19U
T1VDSF9FVkVOVFMpCiAgICAgLCBtX2Zha2VNb3VzZU1vdmVFdmVudFRpbWVyKCp0aGlzLCAmRXZl
bnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMjMzNzI5NDJiMzc2M2Q5MjkzZDI2NWIzNWFjYzE1MjVl
MzRjYzAwZi4uYTVlNWVkZTBiNGI3NDdlNDc5NGRjNzk0MDZhZWZjY2JiMzg1ZGQ2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTI5MSw3ICsxMjkxLDcgQEAgUmVuZGVyQm94KiBG
cmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiB2b2lkIEZyYW1lVmlldzo6YWRk
RW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRkZWRPYmpl
Y3QpCiB7CiAgICAgaWYgKCFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlKQotICAgICAgICBtX2Vt
YmVkZGVkT2JqZWN0c1RvVXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFzaFNldDxSZW5k
ZXJFbWJlZGRlZE9iamVjdCo+PigpOworICAgICAgICBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRl
ID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+PigpOwogCiAg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50ID0gZW1iZWRkZWRPYmplY3QuZnJhbWVP
d25lckVsZW1lbnQoKTsKICAgICBpZiAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpIHx8
IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpKSB7CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCB2
b2lkIEZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIpCiAgICAgYm9vbCBoYWRTbG93UmVwYWludE9iamVjdHMgPSBoYXNTbG93UmVwYWludE9iamVj
dHMoKTsKIAogICAgIGlmICghbV9zbG93UmVwYWludE9iamVjdHMpCi0gICAgICAgIG1fc2xvd1Jl
cGFpbnRPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVsZW1l
bnQqPj4oKTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBtYWtlVW5pcXVlPEhhc2hT
ZXQ8Y29uc3QgUmVuZGVyRWxlbWVudCo+PigpOwogCiAgICAgbV9zbG93UmVwYWludE9iamVjdHMt
PmFkZCgmcmVuZGVyZXIpOwogICAgIGlmIChoYWRTbG93UmVwYWludE9iamVjdHMpCkBAIC0xNDYy
LDcgKzE0NjIsNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB2b2lkIEZyYW1lVmlldzo6YWRkVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKCFt
X3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKQotICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0
PigpOworICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gbWFrZVVuaXF1ZTxW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0PigpOwogCiAgICAgaWYgKCFtX3ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzLT5jb250YWlucyhvYmplY3QpKSB7CiAgICAgICAgIG1fdmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdHMtPmFkZChvYmplY3QpOwpAQCAtNDg2Niw3ICs0ODY2LDcgQEAgU3Ry
aW5nIEZyYW1lVmlldzo6dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0CiBib29sIEZy
YW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVh
KQogewogICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYXMpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFy
ZWFzID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKKyAgICAgICAgbV9z
Y3JvbGxhYmxlQXJlYXMgPSBtYWtlVW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOwogICAgIAog
ICAgIGlmIChtX3Njcm9sbGFibGVBcmVhcy0+YWRkKHNjcm9sbGFibGVBcmVhKS5pc05ld0VudHJ5
KSB7CiAgICAgICAgIHNjcm9sbGFibGVBcmVhU2V0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKaW5kZXggNzMwOThmMWZhMWYxMDcx
ZTYxZmNkM2FhNjUzNTMzMGQzZTg5YmY1OS4uZTg1OGM5MmNiZjhjMzFhMzIxYmYzODAwOTdhYmE1
NWYxNTcwMDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlv
dXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENv
bnRleHQuY3BwCkBAIC01OTYsMTQgKzU5NiwxNCBAQCB2b2lkIEZyYW1lVmlld0xheW91dENvbnRl
eHQ6OnB1c2hMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiByb290KQogICAgIEFTU0VSVCghbV9w
YWludE9mZnNldENhY2hlRGlzYWJsZUNvdW50KTsKICAgICBBU1NFUlQoIWxheW91dFN0YXRlKCkp
OwogCi0gICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckxheW91dFN0YXRlPihyb290KSk7CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtl
VW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihyb290KSk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3TGF5
b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlRm9yUGFnaW5hdGlvbklmTmVlZGVkKFJlbmRlckJs
b2NrRmxvdyYgbGF5b3V0Um9vdCkKIHsKICAgICBpZiAobGF5b3V0U3RhdGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0U3RhdGU6Oklz
UGFnaW5hdGVkOjpZZXMpKTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlx
dWU8UmVuZGVyTGF5b3V0U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRlOjpJc1Bh
Z2luYXRlZDo6WWVzKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCkBAIC02MTMsNyArNjEz
LDcgQEAgYm9vbCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUoUmVuZGVy
Qm94JiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2kKICAgICBhdXRvKiBsYXlvdXRTdGF0ZSA9IHRo
aXMtPmxheW91dFN0YXRlKCk7CiAgICAgaWYgKCFsYXlvdXRTdGF0ZSB8fCAhbmVlZHNGdWxsUmVw
YWludCgpIHx8IGxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpIHx8IHJlbmRlcmVyLmVuY2xvc2lu
Z0ZyYWdtZW50ZWRGbG93KCkKICAgICAgICAgfHwgbGF5b3V0U3RhdGUtPmxpbmVHcmlkKCkgfHwg
KHJlbmRlcmVyLnN0eWxlKCkubGluZUdyaWQoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVH
cmlkKCkgJiYgcmVuZGVyZXIuaXNSZW5kZXJCbG9ja0Zsb3coKSkpIHsKLSAgICAgICAgbV9sYXlv
dXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0YXRlPiht
X2xheW91dFN0YXRlU3RhY2ssIHJlbmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VIZWln
aHRDaGFuZ2VkKSk7CisgICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1
ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwgb2Zmc2V0
LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5j
cHAKaW5kZXggOGMzYzUyYTA3MzUyMjc5MGNkMGM0YTYwZGMwNWU2MTQxMmMxOWFlOS4uNTIyN2U0
MmFjMDk2Y2U2OTI1ZDdlYzZhMThlNTE5MjVkMmUwMDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvckJhc2UuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5l
ciYgTmF2aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcigpCiB7CiAgICAgQVNTRVJUKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKSk7
CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJDb250YWluZXIpCi0gICAgICAgIG1fc2VydmljZVdv
cmtlckNvbnRhaW5lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5lcj4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CisgICAgICAgIG1fc2VydmljZVdvcmtl
ckNvbnRhaW5lciA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5lcj4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3NlcnZpY2VXb3JrZXJDb250
YWluZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGVkYTdjNWZhNWQ2NDc5YmE3MTA5MDIw
YjUyODMyY2UyNjFiY2Q3ZTkuLjI5YTJhZjc0YmNhZGQ2YjMwYzZhZmY2MGVjNGUzMWQwYjQ3MmJm
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjExLDI2ICsyMTEsMjYgQEAgc3RhdGljIGNvbnN0
ZXhwciBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gcGFnZUluaXRpYWxBY3Rpdml0eVN0
YXRlKCkKIH0KIAogUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0
aW9uKQotICAgIDogbV9jaHJvbWUoc3RkOjptYWtlX3VuaXF1ZTxDaHJvbWU+KCp0aGlzLCAqcGFn
ZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKLSAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxl
cihzdGQ6Om1ha2VfdW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCisgICAgOiBtX2Nocm9t
ZShtYWtlVW5pcXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGll
bnQpKQorICAgICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8RHJhZ0NhcmV0Q29u
dHJvbGxlcj4oKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9kcmFnQ29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPERyYWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1
cmF0aW9uLmRyYWdDbGllbnQpKQorICAgICwgbV9kcmFnQ29udHJvbGxlcihtYWtlVW5pcXVlPERy
YWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQogI2Vu
ZGlmCi0gICAgLCBtX2ZvY3VzQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzQ29udHJv
bGxlcj4oKnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkKKyAgICAsIG1fZm9jdXND
b250cm9sbGVyKG1ha2VVbmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUluaXRpYWxB
Y3Rpdml0eVN0YXRlKCkpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250
ZXh0TWVudUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xsZXI+
KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQorICAgICwgbV9j
b250ZXh0TWVudUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xsZXI+KCp0
aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQogI2VuZGlmCi0gICAg
LCBtX3VzZXJJbnB1dEJyaWRnZShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJJbnB1dEJyaWRnZT4oKnRo
aXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCkp
CisgICAgLCBtX3VzZXJJbnB1dEJyaWRnZShtYWtlVW5pcXVlPFVzZXJJbnB1dEJyaWRnZT4oKnRo
aXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ29u
dHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCkpCiAjaWYg
RU5BQkxFKFBPSU5URVJfRVZFTlRTKQotICAgICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIo
c3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAs
IG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckNhcHR1cmVDb250
cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgICwg
bV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyTG9ja0NvbnRy
b2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKG1ha2VVbmlxdWU8
UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3Mo
U2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcHJvZ3Jlc3Moc3RkOjptYWtlX3VuaXF1
ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGll
bnQpKQotICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxCYWNr
Rm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tG
b3J3YXJkQ2xpZW50KSkpCisgICAgLCBtX3Byb2dyZXNzKG1ha2VVbmlxdWU8UHJvZ3Jlc3NUcmFj
a2VyPigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKKyAgICAsIG1f
YmFja0ZvcndhcmRDb250cm9sbGVyKG1ha2VVbmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigq
dGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQogICAg
ICwgbV9tYWluRnJhbWUoRnJhbWU6OmNyZWF0ZSh0aGlzLCBudWxscHRyLCBwYWdlQ29uZmlndXJh
dGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUpKQogICAgICwgbV9lZGl0b3JDbGllbnQoV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQpKQogICAgICwgbV9wbHVnSW5DbGll
bnQocGFnZUNvbmZpZ3VyYXRpb24ucGx1Z0luQ2xpZW50KQpAQCAtMjUwLDkgKzI1MCw5IEBAIFBh
Z2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1f
ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQYWdlOjpkb21U
aW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lckZpcmVkKQogICAgICwgbV9hY3Rpdml0
eVN0YXRlKHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKQogICAgICwgbV9hbHRlcm5hdGl2ZVRl
eHRDbGllbnQocGFnZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KQotICAgICwg
bV9jb25zb2xlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVDbGllbnQ+KCp0aGlz
KSkKKyAgICAsIG1fY29uc29sZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50Pigq
dGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckRl
YnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorICAgICwg
bV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkK
ICNlbmRpZgogICAgICwgbV9zb2NrZXRQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
LnNvY2tldFByb3ZpZGVyKSkKICAgICAsIG1fY29va2llSmFyKFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24uY29va2llSmFyKSkKQEAgLTI2OCwxNiArMjY4LDE2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNv
bmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fcGxheWJhY2tDb250cm9s
c01hbmFnZXJVcGRhdGVUaW1lcigqdGhpcywgJlBhZ2U6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
VXBkYXRlVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV9pc1V0aWxpdHlQYWdlKGlzVXRpbGl0
eVBhZ2VDaHJvbWVDbGllbnQoY2hyb21lKCkuY2xpZW50KCkpKQotICAgICwgbV9wZXJmb3JtYW5j
ZU1vbml0b3IoaXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IHN0ZDo6bWFrZV91bmlxdWU8UGVy
Zm9ybWFuY2VNb25pdG9yPigqdGhpcykpCi0gICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyKHN0
ZDo6bWFrZV91bmlxdWU8TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93
ZXJNb2RlRW5hYmxlZCkgeyBoYW5kbGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQb3dlck1vZGVF
bmFibGVkKTsgfSkpCi0gICAgLCBtX3BlcmZvcm1hbmNlTG9nZ2luZyhzdGQ6Om1ha2VfdW5pcXVl
PFBlcmZvcm1hbmNlTG9nZ2luZz4oKnRoaXMpKQorICAgICwgbV9wZXJmb3JtYW5jZU1vbml0b3Io
aXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VNb25pdG9y
PigqdGhpcykpCisgICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyKG1ha2VVbmlxdWU8TG93UG93
ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeyBoYW5k
bGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQb3dlck1vZGVFbmFibGVkKTsgfSkpCisgICAgLCBt
X3BlcmZvcm1hbmNlTG9nZ2luZyhtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTG9nZ2luZz4oKnRoaXMp
KQogI2lmIFBMQVRGT1JNKE1BQykgJiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFC
TEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pKQotICAgICwgbV9zZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJvbGxlcj4oKnRo
aXMpKQorICAgICwgbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8U2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3JlY2VudFdoZWVs
RXZlbnREZWx0YUZpbHRlcihXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpKQotICAgICwg
bV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlT3ZlcmxheUNvbnRy
b2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8
UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAg
ICAsIG1fcGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3JkaW5h
dG9yPigqcGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkKKyAgICAs
IG1fcGF5bWVudENvb3JkaW5hdG9yKG1ha2VVbmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqcGFn
ZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkKICNlbmRpZgogI2lmIEVO
QUJMRShXRUJfQVVUSE4pCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JDb29yZGluYXRvcihtYWtlVW5p
cXVlUmVmPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlv
bi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpKSkKQEAgLTU2MSw3ICs1NjEsNyBAQCB2
b2lkIFBhZ2U6OmluaXRHcm91cCgpCiB7CiAgICAgQVNTRVJUKCFtX3NpbmdsZVBhZ2VHcm91cCk7
CiAgICAgQVNTRVJUKCFtX2dyb3VwKTsKLSAgICBtX3NpbmdsZVBhZ2VHcm91cCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZUdyb3VwPigqdGhpcyk7CisgICAgbV9zaW5nbGVQYWdlR3JvdXAgPSBtYWtl
VW5pcXVlPFBhZ2VHcm91cD4oKnRoaXMpOwogICAgIG1fZ3JvdXAgPSBtX3NpbmdsZVBhZ2VHcm91
cC5nZXQoKTsKIH0KIApAQCAtMjY1NCw3ICsyNjU0LDcgQEAgdm9pZCBQYWdlOjpzZXRSZXNvdXJj
ZVVzYWdlT3ZlcmxheVZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIH0KIAogICAgIGlmICghbV9y
ZXNvdXJjZVVzYWdlT3ZlcmxheSAmJiBtX3NldHRpbmdzLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZCgpKQotICAgICAgICBtX3Jlc291cmNlVXNhZ2VPdmVybGF5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMpOworICAgICAgICBtX3Jlc291cmNlVXNh
Z2VPdmVybGF5ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKaW5kZXgg
ZDAzMmZjZjcwZjg2YTYzYWFkZDExZjIyN2ZhOTZkZDA2M2MxZWE2MS4uNjNmNjU2ZjFhNWFiOGUy
NmZiOTU1ZTYzNGU0NWE5YThhMTJmZGQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5jcHAKQEAgLTE2MCw5ICsxNjAsOSBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50
OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNv
bgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdl
OwogCiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBs
ZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRl
bnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBj
YWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIGVsc2UK
LSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dl
c3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0
ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBt
ZXNzYWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdnZXN0ZWRD
b2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICBhZGRNZXNzYWdl
KFdURk1vdmUobWVzc2FnZSkpOwogfQpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgUGFnZUNvbnNv
bGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3Nh
Z2VMZXZlbCBsCiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGJvb2wgZ290TWVzc2FnZSA9
IGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKIAotICAg
IGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBh
cmd1bWVudHMuY29weVJlZigpLCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5
cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhlYyk7CiAKICAg
ICBTdHJpbmcgdXJsID0gbWVzc2FnZS0+dXJsKCk7CiAgICAgdW5zaWduZWQgbGluZU51bWJlciA9
IG1lc3NhZ2UtPmxpbmUoKTsKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xp
ZW50OjpzY3JlZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlwdEFyZ3VtZW50
cz4mJgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRhdGFVUkwuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBhZGRNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUgc2NyZWVuc2hvdCJfcywgV1RGTW92
ZShhcmd1bWVudHMpKSk7CisgICAgICAgICAgICBhZGRNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUgc2NyZWVu
c2hvdCJfcywgV1RGTW92ZShhcmd1bWVudHMpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6
c2NyZWVuc2hvdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYK
ICAgICBmb3IgKHNpemVfdCBpID0gKCF0YXJnZXQgPyAwIDogMSk7IGkgPCBhcmd1bWVudHMtPmFy
Z3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhZGp1c3RlZEFyZ3VtZW50cy5hcHBlbmQoeyBz
dGF0ZS0+dm0oKSwgYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpIH0pOwogICAgIGFyZ3VtZW50cyA9
IFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKCpzdGF0ZSwgV1RGTW92ZShhZGp1c3RlZEFyZ3VtZW50
cykpOwotICAgIGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1l
c3NhZ2VMZXZlbDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICBhZGRN
ZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywgZGF0
YVVSTCwgV1RGTW92ZShhcmd1bWVudHMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCA5MTkzNjA0NWMyZmFmNzZjYWM1ZTJjNjll
NjIzM2YyY2UzMGJmOWIxLi4xMjhjMThmMTRiOTA4ZTcxYmM3Y2VmYjM5NjIwN2ZlYmJjMDBmMmFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0xMTYsOSArMTE2LDkgQEAgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcyYgUGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMoKQogewogICAg
IGlmICghbV9jYXB0aW9uUHJlZmVyZW5jZXMpIHsKICNpZiBQTEFURk9STShNQUMpIHx8IEhBVkUo
TUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi0gICAgICAgIG1fY2FwdGlvblByZWZlcmVu
Y2VzID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRj4oKnRo
aXMpOworICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKICNlbHNlCi0gICAgICAgIG1fY2FwdGlvblBy
ZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzPigqdGhp
cyk7CisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxDYXB0aW9uVXNl
clByZWZlcmVuY2VzPigqdGhpcyk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZS5jcHAKaW5kZXggNmMxNWIzZmFhODNmNWNhZTBkOTE3NmQwMGM4YWZjMTViNzY2OTMx
Ni4uY2JiYWMyMWQ0MDA1YjFiMGUxMTgwMjJmN2FhMTRhOGJjZmVkODUyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZS5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFBlcmZvcm1hbmNl
OjpyZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZpcmVkKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+
IFBlcmZvcm1hbmNlOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYgKCFt
X3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNl
clRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJU
aW1pbmc+KCp0aGlzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5nLT5tYXJrKG1h
cmtOYW1lKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMjc5LDE0ICsyNzks
MTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3RyaW5nJiBt
YXJrTmFtZSkKIHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWFya3MoY29uc3QgU3RyaW5nJiBtYXJr
TmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0g
c3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWlu
ZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRpbWluZy0+Y2xl
YXJNYXJrcyhtYXJrTmFtZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjpt
ZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYgc3RhcnRNYXJr
LCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAg
ICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwor
ICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKIAog
ICAgIGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5nLT5tZWFzdXJlKG1lYXN1cmVOYW1lLCBzdGFy
dE1hcmssIGVuZE1hcmspOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0zMDAs
NyArMzAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1lYXN1cmUoY29uc3Qg
U3RyaW5nJiBtZWFzdXJlTmFtZSwgY29uc3QgU3RyaW5nJgogdm9pZCBQZXJmb3JtYW5jZTo6Y2xl
YXJNZWFzdXJlcyhjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lKQogewogICAgIGlmICghbV91c2Vy
VGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1p
bmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5n
PigqdGhpcyk7CiAgICAgbV91c2VyVGltaW5nLT5jbGVhck1lYXN1cmVzKG1lYXN1cmVOYW1lKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKaW5kZXggOTlhNDM3
MmU1NGQ4NDAyOWJhZmJmOWI4ZjdhNTgyMDAxZmE2M2ExYi4uMTZiY2YwNDM5MGExNzBmM2RlNzgy
NjUwYzJmYzI1MjJjZjUwNTRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3
YXJtSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1h
dGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBX
RUJDT1JFX0VYUE9SVCBQcmV3YXJtSW5mb3JtYXRpb24geworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBmb250Q2Fj
aGU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggMDM3MGYyODg3ZjY1
YjU3YjNjZDg5N2U0ZmM2OWU4YTJlZmI4NzVkZi4uNDQyOTFhZWZhMzdjOGE3YTg0NDhiZWMzOWFl
ZWFjMjQzOWVjNDc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcApAQCAtMzIx
LDcgKzMyMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0aW5hdGlvbnMo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIERvCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmICghbV9saW5rZWREZXN0aW5hdGlvbnMpIHsKLSAgICAgICAgbV9saW5rZWREZXN0aW5h
dGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxlbWVudD4+Pigp
OworICAgICAgICBtX2xpbmtlZERlc3RpbmF0aW9ucyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJp
bmcsIFJlZjxFbGVtZW50Pj4+KCk7CiAgICAgICAgIGNvbGxlY3RMaW5rZWREZXN0aW5hdGlvbnMo
ZG9jdW1lbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdV
cGRhdGVTY2hlZHVsZXIuY3BwCmluZGV4IDU2YTAxMWM0Y2VlOTk3ODk5MDFmYWQzNjMwMmJlMTBj
MzQ1NjY1MjcuLjNiODgxZGZiYjE3MTdmNGU0MTFhNmM1MzQ0NTk1ZmJkM2FiNDMwNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgYm9vbCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmlzU2NoZWR1bGVk
KCkgY29uc3QKIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzdGFydFRpbWVyKFNlY29u
ZHMgZGVsYXkpCiB7CiAgICAgQVNTRVJUKCFpc1NjaGVkdWxlZCgpKTsKLSAgICBtX3JlZnJlc2hU
aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyOjpkaXNwbGF5UmVmcmVzaEZpcmVkKTsKKyAgICBtX3JlZnJlc2hUaW1lciA9IG1ha2VV
bmlxdWU8VGltZXI+KCp0aGlzLCAmUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpkaXNwbGF5UmVm
cmVzaEZpcmVkKTsKICAgICBtX3JlZnJlc2hUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKaW5k
ZXggZmFkZTYyZmM3ODdlZTQ4OTc5YWY2ZGQ4MjY2Mjc3OTgwNGQzNzUxNy4uNmYwNjA4MTc4MjZl
YzU2YzZlZThhNWY4Y2QzOTQ0ZWMyZDQxOTBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlbmRl
cmluZ1VwZGF0ZVNjaGVkdWxlcgogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPiBjcmVhdGUoUGFnZSYgcGFnZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4ocGFn
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4o
cGFnZSk7CiAgICAgfQogCiAgICAgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKFBhZ2UmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaAppbmRleCA5NWIxYzhiNWJlODNkODliMjQ5Nzll
YWVkOWI5ZDRlOTBkM2Y0Zjg3Li5lZWViZjliOWU2MWJkNTg4ZmQzYmE5OWZhYjE1MDE5MWNjOGY2
NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCkBAIC00MCw2ICs0MCw3IEBA
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIAogc3RydWN0IFJlc2l6ZU9ic2VydmVy
RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZlY3RvcjxX
ZWFrUHRyPFJlc2l6ZU9ic2VydmVyPj4gb2JzZXJ2ZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCA0MjM0MTgyODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5
NjhlYjFlMWJmLi4wZGViMDY0MTQ4Zjk3MjZjZDM4YjQxMDA1ZDUyMjk3MjYwYzFjNjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZv
aWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBzb3VyY2VPCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nl
c3NNYXBMb2NrKTsKICAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmln
aW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IG1ha2VVbmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOwogCiAgICAgT3Jp
Z2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
ICAgICBsaXN0LT5hcHBlbmQoT3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Eb21haW4sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zID8gT3JpZ2luQWNj
ZXNzRW50cnk6OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpEaXNhbGxvd1N1
YmRvbWFpbnMsIE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVhdElQQWRkcmVzc0FzSVBBZGRyZXNzKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggYjY4NDg5NmYzOTg4NDYyNTRh
MTc5N2FkY2RlZDY2NjYwNWU4NWQ1Yy4uMjdlZWE2YzBhYjkzOGViYzhmOTY1ZGFjYjgyMDMxMTQ0
MzE2MGI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtNjgsNyArNjgs
NyBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCA9IDI1MF9t
czsKIAogU2V0dGluZ3NCYXNlOjpTZXR0aW5nc0Jhc2UoUGFnZSogcGFnZSkKICAgICA6IG1fcGFn
ZShudWxscHRyKQotICAgICwgbV9mb250R2VuZXJpY0ZhbWlsaWVzKHN0ZDo6bWFrZV91bmlxdWU8
Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKKyAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyhtYWtl
VW5pcXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCiAgICAgLCBtX2xheW91dEludGVydmFsKGxh
eW91dFNjaGVkdWxlVGhyZXNob2xkKQogICAgICwgbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbChE
T01UaW1lcjo6ZGVmYXVsdE1pbmltdW1JbnRlcnZhbCgpKQogICAgICwgbV9zZXRJbWFnZUxvYWRp
bmdTZXR0aW5nc1RpbWVyKCp0aGlzLCAmU2V0dGluZ3NCYXNlOjppbWFnZUxvYWRpbmdTZXR0aW5n
c1RpbWVyRmlyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxl
VGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCmluZGV4IDU1
ODQ0MzQwNzgzNDZmYjliNTdhNmVhNTlhZmNlMjdhNjI0MGI1NWEuLjNjM2Q0OWUwNThhYjEzMTc0
N2ViNDliYjBjOTNhMGZkMjk0NTE4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U3VzcGVuZGFibGVUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVU
aW1lci5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN1
c3BlbmRhYmxlVGltZXIgOiBwcml2YXRlIFRpbWVyQmFzZSwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
U3VzcGVuZGFibGVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+
U3VzcGVuZGFibGVUaW1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCmluZGV4IGI5Y2U5OGNjNmNhNWMyNDU2Y2RiOTRmNWRjNDFiNGQyYjUwZTk4
ZjYuLjY1MjMxMWQ3YTU1ZjU1MDdhMDVhYTQzYjYyYzgwMjA4NzIyZGJhZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTczLDcgKzczLDcg
QEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmZvckVhY2hVc2VyTWVzc2FnZUhhbmRsZXIo
RnVuY3Rpb248dm9pZChjb25zdCBVc2VyTWUKIAogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6
OmFkZFVzZXJTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1bmlxdWVfcHRyPFVz
ZXJTY3JpcHQ+IHVzZXJTY3JpcHQpCiB7Ci0gICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3Vz
ZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJTY3JpcHRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzY3JpcHRz
SW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIG1ha2VV
bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHNjcmlw
dHNJbldvcmxkLT5hcHBlbmQoV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTEwMCw3ICsx
MDAsNyBAQCB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdHMoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCkKIAogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVz
ZXJTdHlsZVNoZWV0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVlX3B0cjxVc2Vy
U3R5bGVTaGVldD4gdXNlclN0eWxlU2hlZXQsIFVzZXJTdHlsZUluamVjdGlvblRpbWUgaW5qZWN0
aW9uVGltZSkKIHsKLSAgICBhdXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNo
ZWV0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5
bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHN0eWxlU2hl
ZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVy
biBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgc3R5bGVTaGVldHNJbldvcmxkLT5hcHBlbmQoV1RGTW92ZSh1c2VyU3R5bGVTaGVldCkp
OwogCiAgICAgaWYgKGluamVjdGlvblRpbWUgPT0gSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcAppbmRleCBm
MjU5YWViMWEwYTllNWNlN2ExMzRmMGQxMjY5ZWMzMTRjOWE5YzMxLi4zMDRkOTRhNzViZjM2MWQ4
ZGQ0NmY2YWZmYWZlMzFjM2VmODJhNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVl
bEV2ZW50RGVsdGFGaWx0ZXIuY3BwCkBAIC00Myw5ICs0Myw5IEBAIFdoZWVsRXZlbnREZWx0YUZp
bHRlcjo6fldoZWVsRXZlbnREZWx0YUZpbHRlcigpID0gZGVmYXVsdDsKIHN0ZDo6dW5pcXVlX3B0
cjxXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+IFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKCkK
IHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2hlZWxF
dmVudERlbHRhRmlsdGVyTWFjPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdoZWVsRXZlbnRE
ZWx0YUZpbHRlck1hYz4oKTsKICNlbHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFz
aWNXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFzaWNX
aGVlbEV2ZW50RGVsdGFGaWx0ZXI+KCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRl
eCAxNDQ2NjNjYWU5NTk3OWNmY2M3YzRhMjI0MmUxZDE2MWQ2MTAyOTI1Li4xM2MzMWY1NzY0Yjdi
MjI0YTJiN2VhNTVhZTMzYTZiMzk4NmI5NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTk2LDcg
KzU5Niw3IEBAIHZvaWQgQ1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmFuaW1hdGlvbldp
bGxCZVJlbW92ZWQoQW5pbWF0aW9uQmFzZSYgYW5pbWF0CiB9CiAKIENTU0FuaW1hdGlvbkNvbnRy
b2xsZXI6OkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIoRnJhbWUmIGZyYW1lKQotICAgIDogbV9kYXRh
KHN0ZDo6bWFrZV91bmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+KGZyYW1lKSkK
KyAgICA6IG1fZGF0YShtYWtlVW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPihm
cmFtZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCA3NGVlZGM5OTY2ZTlmODFhY2I5OTZjZjM3
Njk4M2RhYjY4NTU0MGM2Li5iYWViMjQ3NjU3MTY3MzdiODRhMWNjOGYxOWRlMDE3M2YzNjdlOTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVy
dHlBbmltYXRpb24uY3BwCkBAIC0xMTcsOSArMTE3LDkgQEAgc3RhdGljIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdD
bGkKIHsKICAgICBBU1NFUlQoZnJvbSAmJiB0byk7CiAgICAgaWYgKGZyb20tPnN0eWxlKCkgIT0g
dG8tPnN0eWxlKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+
KCp0byk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCp0byk7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChmcm9tLT5sb2NhdGlv
bigpLCB0by0+bG9jYXRpb24oKSwgcHJvZ3Jlc3MpLAorICAgIHJldHVybiBtYWtlVW5pcXVlPFNo
YWRvd0RhdGE+KGJsZW5kKGZyb20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlvbigpLCBwcm9ncmVz
cyksCiAgICAgICAgIGJsZW5kKGZyb20tPnJhZGl1cygpLCB0by0+cmFkaXVzKCksIHByb2dyZXNz
KSwKICAgICAgICAgYmxlbmQoZnJvbS0+c3ByZWFkKCksIHRvLT5zcHJlYWQoKSwgcHJvZ3Jlc3Mp
LAogICAgICAgICBibGVuZEZ1bmMoYW5pbSwgZnJvbS0+c3R5bGUoKSwgdG8tPnN0eWxlKCksIHBy
b2dyZXNzKSwKQEAgLTk3NCwxNSArOTc0LDE1IEBAIGNsYXNzIFByb3BlcnR5V3JhcHBlclZpc2l0
ZWRBZmZlY3RlZENvbG9yIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UKICAg
ICBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3As
IGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRl
clN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpLAogICAgICAgICBjb25zdCBDb2xvciYgKFJl
bmRlclN0eWxlOjoqdmlzaXRlZEdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2
aXNpdGVkU2V0dGVyKShjb25zdCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5
V3JhcHBlckJhc2UocHJvcCkKLSAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQ
cm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAgICAgICAsIG1f
dmlzaXRlZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJv
cCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCisgICAgICAgICwgbV93cmFwcGVyKG1h
a2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKKyAg
ICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+
KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAg
UHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBN
YXliZUludmFsaWRDb2xvclRhZywgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KmdldHRlciko
KSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IENvbG9yJiksCiAgICAg
ICAgIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2
b2lkIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAg
IDogQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBl
cihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9w
LCBnZXR0ZXIsIHNldHRlcikpCi0gICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihzdGQ6Om1ha2Vf
dW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCB2aXNpdGVkR2V0
dGVyLCB2aXNpdGVkU2V0dGVyKSkKKyAgICAgICAgLCBtX3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9w
ZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQorICAg
ICAgICAsIG1fdmlzaXRlZFdyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUlu
dmFsaWRDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAgewog
ICAgIH0KICAgICBib29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVy
U3R5bGUqIGIpIGNvbnN0IG92ZXJyaWRlCkBAIC0xMjI5LDE5ICsxMjI5LDE5IEBAIGNsYXNzIEZp
bGxMYXllcnNQcm9wZXJ0eVdyYXBwZXIgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVy
QmFzZSB7CiAgICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25YOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0
eSwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxs
TGF5ZXI6OmJhY2tncm91bmRYT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWE9yaWdp
biwgRWRnZTo6UmlnaHQpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIg
PSBtYWtlVW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwg
JkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5
ZXI6OmJhY2tncm91bmRYT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWE9yaWdpbiwg
RWRnZTo6UmlnaHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHks
ICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExh
eWVyOjpiYWNrZ3JvdW5kWU9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFlPcmlnaW4s
IEVkZ2U6OkJvdHRvbSk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9
IG1ha2VVbmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAm
RmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXll
cjo6YmFja2dyb3VuZFlPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRZT3JpZ2luLCBF
ZGdlOjpCb3R0b20pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91
bmRTaXplOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6Ci0gICAgICAg
ICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExh
eWVyUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+Pihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6c2l6
ZUxlbmd0aCwgJkZpbGxMYXllcjo6c2V0U2l6ZUxlbmd0aCk7CisgICAgICAgICAgICBtX2ZpbGxM
YXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyUHJvcGVydHlXcmFwcGVy
PExlbmd0aFNpemU+Pihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6c2l6ZUxlbmd0aCwgJkZpbGxMYXll
cjo6c2V0U2l6ZUxlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRJbWFnZToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlX
cmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJTdHlsZUltYWdlUHJvcGVydHlXcmFw
cGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlKTsK
KyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxs
TGF5ZXJTdHlsZUltYWdlUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6aW1h
Z2UsICZGaWxsTGF5ZXI6OnNldEltYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzcwLDcgKzE3NzAsNyBAQCBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCgp
CiAgICAgICAgICAgICBsb25naGFuZFdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChtX3Byb3BlcnR5
V3JhcHBlcnNbd3JhcHBlckluZGV4XS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3By
b3BlcnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2hvcnRoYW5k
UHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3ZlKGxvbmdoYW5kV3JhcHBlcnMpKSk7
CisgICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxT
aG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIFdURk1vdmUobG9uZ2hhbmRXcmFw
cGVycykpKTsKICAgICAgICAgaW5kZXhGcm9tUHJvcGVydHlJRChwcm9wZXJ0eUlEKSA9IGFuaW1h
dGFibGVMb25naGFuZFByb3BlcnRpZXNDb3VudCArIGk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNzA0N2U4
M2RlNzg1ZGI4MWI2ZDk5MGE5NDgzN2JhNzFkNzI4MjlhMC4uOGYwZjZiZjUzYjAzZTA4ZjcwMzMx
NjZlYjhjNzRkNmJmOTcyODM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIENv
bnRlbnRTZWN1cmkKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxm
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBtX3NlbGZTb3Vy
Y2VQcm90b2NvbCA9IHNlY3VyaXR5T3JpZ2luLnByb3RvY29sKCk7Ci0gICAgbV9zZWxmU291cmNl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBt
X3NlbGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdp
bi5wb3J0KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgbV9zZWxmU291cmNl
ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3NlbGZT
b3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdpbi5wb3J0
KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphcHBseVBvbGljeVRvU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZS5oCmluZGV4IGE4ZjFkNGYwYmRlMTRmMTRiODhhYTM5NDBlZGQ4Yzg5NjI2MWUzZGUuLmJi
ZDkxODllMjQ4MzRkYWNjOGQ3YmFlMTVjYzU4MTZjYTMyMGNmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5o
CkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3QmIGRpcmVjdGl2ZUxpc3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dC5jcHAKaW5kZXggZGRiZDhjZGUyNzgwZTkyZGJhMjBlMGFiZDk5Y2YwNDk4NDNmNGM0ZC4uYzAx
NTZkZGYwMWM5NDdlNTA0YjU2OWQwYTQxMTY5OGM1NThmM2VmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0KENvbnRlbnRTZQog
CiBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4gQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKENvbnRlbnRTZWN1cml0eVBv
bGljeSYgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaXR5UG9saWN5
SGVhZGVyVHlwZSB0eXBlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlBvbGljeUZyb20gZnJvbSkK
IHsKLSAgICBhdXRvIGRpcmVjdGl2ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CisgICAgYXV0byBkaXJlY3RpdmVz
ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pihwb2xpY3ks
IHR5cGUpOwogICAgIGRpcmVjdGl2ZXMtPnBhcnNlKGhlYWRlciwgZnJvbSk7CiAKICAgICBpZiAo
IWNoZWNrRXZhbChkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUoZGlyZWN0aXZlcy0+bV9z
Y3JpcHRTcmMuZ2V0KCkpKSkgewpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uCiAgICAgICAgIG1fcG9saWN5LnJlcG9ydER1cGxpY2F0ZURpcmVjdGl2ZShuYW1lKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBkaXJlY3RpdmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PENTUERpcmVjdGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2YWx1ZSk7CisgICAgZGlyZWN0aXZlID0g
bWFrZVVuaXF1ZTxDU1BEaXJlY3RpdmVUeXBlPigqdGhpcywgbmFtZSwgdmFsdWUpOwogfQogCiB2
b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFwcGx5U2FuZGJveFBvbGlj
eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2FuZGJveFBvbGljeSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGlu
dXguY3BwCmluZGV4IDRmZGY3NTZjMDIxOTg4NTMzYjJmMTI1NWM5MWE0ZWNjOTE0ODRmYTQuLjI2
YzIxMmI0ODI0YTA0M2MyNTNhZjI1NzY0ZTBiOWEzODEzMDhhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcApA
QCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlciBmaW5h
bCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIAogdm9pZCBSZXNvdXJjZVVzYWdlT3Zl
cmxheTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAgICBtX292ZXJsYXlQYWludGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsKKyAgICBt
X292ZXJsYXlQYWludGVyID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+
KCp0aGlzKTsKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUob3Zlcmxh
eSgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1f
b3ZlcmxheVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludDNEKCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3Jt
YWxIZWlnaHQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQppbmRleCBkN2FkZmZkNzJm
OWZhOGZlOTdhZmNkYTA3MThkODNjNmUwOTA4NTBjLi4wODYzYWQyNjcyNWQ2NTU0NzUyYjdhYzIx
NDhlZWQxYzZkZmMyM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogdm9pZCBQYWdlOjphZGRT
Y2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogewogICAgIGlmICghbV9zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gc3Rk
OjptYWtlX3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOworICAgICAgICBtX3NjaGVkdWxl
ZFJ1bkxvb3BQYWlycyA9IG1ha2VVbmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBt
X3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCiAgICAgZm9yIChGcmFt
ZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L1RleHRJbmRpY2F0b3JXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRp
Y2F0b3JXaW5kb3cuaAppbmRleCBkY2RkOTUwNDhiZDk1OGFhNzQ0MGEwZmMzZDliY2U3ZGYyZjU0
ODBmLi42NDc1Y2U1ZWJjOTA3YWUxODgwYWYxNzFjMDczNmZmM2VjYjUwMjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCkBAIC01Miw2ICs1Miw3
IEBAIGVudW0gY2xhc3MgVGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlvbiA6IHVp
bnQ4X3QgewogI2lmIFBMQVRGT1JNKE1BQykKIAogY2xhc3MgVGV4dEluZGljYXRvcldpbmRvdyB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
VGV4dEluZGljYXRvcldpbmRvdyk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5k
ZXggMzA2Y2ZlZDE5Y2U2ZDAwYjYyYTg1MjQ5NzAwMjhiODA0NWZhZDgyMy4uMDBhZjM5NDc4ZGM3
NWY3MDI5YzI0ODQ1NGVmMDFhYjBjNmM3ZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAg
LTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKiBwYWdlKQogICAgIDogU2Nyb2xs
aW5nQ29vcmRpbmF0b3IocGFnZSkKICAgICAsIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGlt
ZXIoKnRoaXMsICZBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlv
bkFmdGVyQXN5bmNTY3JvbGxUaW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUo
c3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQorICAgICwgbV9zY3Jv
bGxpbmdTdGF0ZVRyZWUobWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5oCmluZGV4IDYzYmQ5NjM4YjYzYTFhMTFjYTQwZjM2NzIxMjlmNzE0MTBjNmZm
MmUuLjNhYjY0MDY4MjY0YzUwNDA4YmFiNGVlMzhkMmNjZDRhNjQxYzc4NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5o
CkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTY3JvbGxPZmZzZXRSYW5nZSB7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZlY3RvcjxUPiBob3Jpem9udGFsU25hcE9m
ZnNldHM7CiAgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25hcE9mZnNldHM7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IuY3BwCmluZGV4IDc2NDBkNTVkOTZhM2YwOTU5YjkzMWVmMDQzM2VjMTVmYTIwN2Ri
ZDQuLmM4OTBmOWViYTAwNGNhODc4MDE0MWI4NWNlZWUwMDU1NjJlMmU0NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yLmNwcApAQCAtNzEsNyArNzEsNyBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9h
dFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNp
Y1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwg
aW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lk
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGlu
Z1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCmluZGV4IGJlOTlk
MGVlNmEzZjA3ODlmYzRkN2RjNjkyODg1YjUyNDAwNDM4MDIuLjIxYzMxMWNkODliNzk0MDg0YTg0
OTBkNWZjOWJhNTVhOTNiOWFlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCkBAIC0zOSw2ICsz
OSw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiAKIGNsYXNzIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3
cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQm
IGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAppbmRleCA5NjgyZDJjMWJjZWUzNzU3MTNj
MzQ2ZDNlMzNjZDRkYzEzNWFmYzc4Li5iZTU3YzliODY5ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0
MGM4MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlTm9kZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRl
Tm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUpCiAg
ICAgY2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pCi0g
ICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xs
aW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3Rv
cjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5k
KFdURk1vdmUoY2hpbGROb2RlKSk7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKENoaWxkTm9kZXMp
OwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRD
aGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90CiAKICAgICBp
ZiAoIW1fY2hpbGRyZW4pIHsKICAgICAgICAgQVNTRVJUKCFpbmRleCk7Ci0gICAgICAgIG1fY2hp
bGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2Rl
Pj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Ny
b2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgfQogCiAgICAgaWYgKGluZGV4ID4gbV9jaGlsZHJl
bi0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVUcmVlLmNwcAppbmRleCBmNjFlMjhlMGVjNTAzMDEyYjM3MmZiMjU1NjlhOGNi
N2RkNTNhYTcwLi43MTU3ZTE2ODYwZjQ5YzkxZGRhMzViYmM0ZWFmZTk4MTllYWNiZTZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJl
ZS5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVU
cmVlPiBTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdChMYXllclJlcHJlc2VudGF0aQogICAgIH0K
IAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVzIGFuZCByZXNldHMgdGhlIGN1cnJlbnQgc3Rh
dGUgdHJlZSwgYnV0IGxlYXZlcyB0aGUgdHJlZSBzdHJ1Y3R1cmUgaW50YWN0LgotICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRyZWVTdGF0ZUNsb25lID0gc3RkOjptYWtl
X3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9s
bGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRl
VHJlZT4oKTsKICAgICB0cmVlU3RhdGVDbG9uZS0+c2V0UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRh
dGlvbihwcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKTsKIAogICAgIGlmIChtX3Jvb3RTdGF0
ZU5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlTm9kZS5jcHAKaW5kZXggZWE3NGUyY2E0MjQyOWE4ZTJiZTlmOWEzNzllMzY3ZGE0ZGRkYTNk
MS4uNzI5NjE1YTY5ZjAxMjI2MzE1MTQ3ZWNmZGI1NTI4YjAxOTlmMzg2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcApAQCAt
NTAsNyArNTAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Ny
b2xsaW5nVHJlZU5vZGU+JiYgY2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0UGFyZW50KHRo
aXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7CisgICAgICAg
IG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+
Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RGTW92ZShjaGlsZE5vZGUpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KaW5kZXggMWM3YWI3NmExNTFlNjM1
MGQ4YjYxNGMzNmQwNWJjZTY1YzZjOTU4NC4uYjQzZWE5OTVmYWY2YjQ3MDMzNWZiZjA3YTIwODZh
NmIzNWY3MGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0z
Niw3ICszNiw3IEBAIHN0YXRpYyBib29sIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5n
UHJlZGljdGlvbiA9IHRydWU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBG
bG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNv
bnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2
aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGlu
aXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpz
ZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCmluZGV4IDcxZTQzZDNmM2I5NDYxMDYw
OGNiZjExZGI1MTE1YmNiZWMwNTQ4OTAuLjA4OGRmNTQzZTA0NzkxMTdjODM3YWZlMjIzYmJjYzU1
MTQ4OGE3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKQEAgLTMzLDYgKzMz
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1BVTW9uaXRvciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgRXhjZWVkZWRDUFVMaW1p
dEhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoZG91YmxlKT47CiAgICAgV0VCQ09SRV9FWFBP
UlQgQ1BVTW9uaXRvcihTZWNvbmRzIGNoZWNrSW50ZXJ2YWwsIEV4Y2VlZGVkQ1BVTGltaXRIYW5k
bGVyJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKaW5kZXggZTYwZjc3MTNm
NjJiYjI1NjJhODQyODg4YzdmYzYyOWYyYzU0N2YzMy4uNmIyODhlMWUxN2U0NDhiYjg2ZmI5ZWNl
MjljYzllNWJkYjlkZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCkBA
IC00Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVNb25pdG9y
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNz
IEZpbGVDaGFuZ2VUeXBlIHsgTW9kaWZpY2F0aW9uLCBSZW1vdmFsIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguY3BwCmluZGV4IDRmZjk4MDRlYWVjMTMwNmIyNjhhMjQ1ZjI3NzFhMTEyZTI4
ZDJhMWUuLjNmYzQzMWE0NzQ2MWQ4YzQ0M2RiNGI2MjJkNmVhOTA2MzRkYTBmMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMjg4LDkgKzI4OCw5IEBAIExlbmd0aCBjb252ZXJ0
VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgLy8gVHVy
biB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkKICAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0aHM7CiAgICAg
bGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgIGxlbmd0aHMudW5jaGVja2Vk
QXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAs
IFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNP
cGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlx
dWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7CisgICAgbGVu
Z3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVu
Z3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+
KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAgIHJldHVybiBM
ZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxs
KSk7CiB9CiAKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgTGVuZ3RoIGJsZW5kTWl4ZWRUeXBl
cyhjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncgogICAg
IGlmIChwcm9ncmVzcyA+PSAxLjApCiAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgCi0gICAg
YXV0byBibGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aD4o
ZnJvbSwgdG8sIHByb2dyZXNzKTsKKyAgICBhdXRvIGJsZW5kID0gbWFrZVVuaXF1ZTxDYWxjRXhw
cmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3MpOwogICAgIHJldHVybiBMZW5n
dGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBWYWx1ZVJhbmdlQWxs
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlz
dGVuZXIuY3BwCmluZGV4IDU1MmIxMmY2YzFlOGNkYTZmZmVhNjQ3ODY5MjIyOWVhOTNlZDE3Y2Eu
LjhlMzVlMzA0YzFlNzI1N2JjNjRjNmFkMTBlZGRlOTY0MjA0ZTY1OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcApAQCAtMzEsNyAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgKCFQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhUExBVEZPUk0oTUFDKSkgfHwgIUhBVkUoTUVESUFfUExBWUVSKQogc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVt
b3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihjbGllbnQpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggZDkxNTRkOTM1MWEy
ZjMzNjZkZGQwNWZlNjBmZGViYjljMWExZTczOC4uZjhlZGM4ODJkN2YzNjAwMmUxOTg1MTBkODFi
OGViMzRhYTUwMDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIUVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1B
QykKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0
ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCBjNjJhZDgzNGU2
YjM4MDhlMWVjZGE4YmExMzEyZDNkOTU3MDVlOTZhLi45NmQwZjMwMGIzNDE4ZTYwODIxZGEyZGEy
YTY0MTg5YzRkZWUwYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFNjcm9sbEFuaW1hdG9yJiBTY3JvbGxhYmxlQXJlYTo6
c2Nyb2xsQW5pbWF0b3IoKSBjb25zdAogewogICAgIGlmICghbV9zY3JvbGxBbmltYXRvcikgewog
ICAgICAgICBpZiAodXNlc01vY2tTY3JvbGxBbmltYXRvcigpKSB7Ci0gICAgICAgICAgICBtX3Nj
cm9sbEFuaW1hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+KGNvbnN0
X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIHsKKyAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBtYWtlVW5pcXVlPFNjcm9sbEFu
aW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0aGlzKSwgW3RoaXNdKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIGxvZ01vY2tTY3JvbGxBbmlt
YXRvck1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlCkBA
IC00MzUsNyArNDM1LDcgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFzTGF5ZXJGb3JTY3JvbGxD
b3JuZXIoKSBjb25zdAogU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3JvbGxh
YmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKIHsKICAgICBpZiAoIW1fc25hcE9mZnNl
dHNJbmZvKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PigpOworICAgICAgICBtX3NuYXBPZmZzZXRz
SW5mbyA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PigpOwog
ICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0c0luZm87CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCmluZGV4IDcyYjAwNDUxMzE0MmM4ZjRlOTVkZjIyODE4
YzNkZGMxODBhYWVjZWQuLjBkNzRiMTZlNTkyNTk4YWI4M2IwYzhjMGViNTRiNDQ2ZGZkMzhkMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaApAQCAtNDIs
NiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIGNsYXNzIFN1ZGRl
blRlcm1pbmF0aW9uRGlzYWJsZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3VkZGVuVGVybWluYXRpb25EaXNhYmxlcik7
CiAgICAgcHVibGljOgogICAgICAgICBTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYTI4MDEwZWNm
ZTVhMzY3YWQ5ZDBiMjlhMjAwNTYzYTBmNTYxZDU2MC4uMjdhNzM2NDE2YmEwNGMwNTNjMmU3N2Ri
MmM1NTgxNDQ0MGQyZjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xv
YmFsRGF0YS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBU
aHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKLSAgICA6IG1fY2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0SW5pdGlhdG9ycyhzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnM+KCkpCisgICAgOiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMo
bWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQogICAgICwgbV9l
dmVudE5hbWVzKEV2ZW50TmFtZXM6OmNyZWF0ZSgpKQotICAgICwgbV90aHJlYWRUaW1lcnMoc3Rk
OjptYWtlX3VuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCi0gICAgLCBtX3F1YWxpZmllZE5hbWVDYWNo
ZShzdGQ6Om1ha2VfdW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkKKyAgICAsIG1fdGhyZWFk
VGltZXJzKG1ha2VVbmlxdWU8VGhyZWFkVGltZXJzPigpKQorICAgICwgbV9xdWFsaWZpZWROYW1l
Q2FjaGUobWFrZVVuaXF1ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCiAjaWZuZGVmIE5ERUJVRwog
ICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKLSAgICAsIG1fY2Fj
aGVkQ29udmVydGVySUNVKHN0ZDo6bWFrZV91bmlxdWU8SUNVQ29udmVydGVyV3JhcHBlcj4oKSkK
KyAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKG1ha2VVbmlxdWU8SUNVQ29udmVydGVyV3JhcHBl
cj4oKSkKIHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNhbGxlZCBv
biB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBvbgogICAgIC8vIGFueSBvdGhl
ciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0aGlzIG1ha2Vz
IHRoaXMgYSBjb252ZW5pZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5jcHAKaW5kZXggMmY4OTJkNmIxOWFiYTQyMzBlOTI0Yzc2MTg3MzhmYzZjYjQ4ZjdlYy4uZTcw
ZDQ2ZDBiOWYyNDA3ZjkwODU0OGZhOGYyZTk4YzlkYTQ1NjNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBBdWRpb0J1czo6
QXVkaW9CdXModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGxlbmd0aCwgYm9vbCBh
bGxvY2F0ZSkKICAgICBtX2NoYW5uZWxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZD
aGFubmVscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVs
czsgKytpKSB7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8gc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5l
bD4obnVsbHB0ciwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byBjaGFubmVsID0gYWxsb2NhdGUgPyBt
YWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVs
PihudWxscHRyLCBsZW5ndGgpOwogICAgICAgICBtX2NoYW5uZWxzLnVuY2hlY2tlZEFwcGVuZChX
VEZNb3ZlKGNoYW5uZWwpKTsKICAgICB9CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIEF1ZGlv
QnVzOjpjb3B5V2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZsb2F0KiBs
YXN0TWl4R2FpbiwgZgogCiAgICAgaWYgKGZyYW1lc1RvRGV6aXBwZXIpIHsKICAgICAgICAgaWYg
KCFtX2RlemlwcGVyR2FpblZhbHVlcy5nZXQoKSB8fCBtX2RlemlwcGVyR2FpblZhbHVlcy0+c2l6
ZSgpIDwgZnJhbWVzVG9EZXppcHBlcikKLSAgICAgICAgICAgIG1fZGV6aXBwZXJHYWluVmFsdWVz
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6aXBwZXIpOwor
ICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4oZnJhbWVzVG9EZXppcHBlcik7CiAKICAgICAgICAgZmxvYXQqIGdhaW5WYWx1ZXMgPSBt
X2RlemlwcGVyR2FpblZhbHVlcy0+ZGF0YSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZnJhbWVzVG9EZXppcHBlcjsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9CdXMuaAppbmRleCAyMTczZGM5MzgzZTRhMzNjMWI1OTM0NzY1YTFlNWIxMDc0NmYw
M2ExLi5iYmIzZDJhY2QyMmM1NzJiYzkyM2E0OGIxZjcwYWY4NTRjMGNiMDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gQW4gQXVkaW9CdXMgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2Yg
b25lIG9yIG1vcmUgQXVkaW9DaGFubmVscy4KIC8vIFRoZSBkYXRhIGxheW91dCBpcyAicGxhbmFy
IiBhcyBvcHBvc2VkIHRvICJpbnRlcmxlYXZlZCIuCiAvLyBBbiBBdWRpb0J1cyB3aXRoIG9uZSBj
aGFubmVsIGlzIG1vbm8sIGFuIEF1ZGlvQnVzIHdpdGggdHdvIGNoYW5uZWxzIGlzIHN0ZXJlbywg
ZXRjLgotY2xhc3MgQXVkaW9CdXMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9C
dXM+IHsKK2NsYXNzIEF1ZGlvQnVzIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEF1ZGlvQnVzPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9CdXMpOwogcHVibGlj
OgogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9DaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5u
ZWwuaAppbmRleCBiYmMxMzU3YTNkNTNmMDU0OGY4ODc4ZTU4N2RiN2Q2ZGQxYzRmYWQ4Li43Yjk4
OTNkMzhhYzQxNzQ1MzE3NDFiNzcyNGM2ZmYyYWJkMDFkZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaApAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvQ2hhbm5lbCByZXByZXNlbnRzIGEgYnVmZmVyIG9m
IG5vbi1pbnRlcmxlYXZlZCBmbG9hdGluZy1wb2ludCBhdWRpbyBzYW1wbGVzLgogLy8gVGhlIFBD
TSBzYW1wbGVzIGFyZSBub3JtYWxseSBhc3N1bWVkIHRvIGJlIGluIGEgbm9taW5hbCByYW5nZSAt
MS4wIC0+ICsxLjAKLWNsYXNzIEF1ZGlvQ2hhbm5lbCB7CitjbGFzcyBBdWRpb0NoYW5uZWwgZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEF1ZGlvQ2hhbm5lbCk7CiBwdWJsaWM6CiAgICAgLy8gTWVtb3J5IGNhbiBiZSBleHRlcm5h
bGx5IHJlZmVyZW5jZWQsIG9yIGNhbiBiZSBpbnRlcm5hbGx5IGFsbG9jYXRlZCB3aXRoIGFuIEF1
ZGlvRmxvYXRBcnJheS4KQEAgLTU2LDcgKzU3LDcgQEAgY2xhc3MgQXVkaW9DaGFubmVsIHsKICAg
ICAgICAgLCBtX3Jhd1BvaW50ZXIoMCkKICAgICAgICAgLCBtX3NpbGVudCh0cnVlKQogICAgIHsK
LSAgICAgICAgbV9tZW1CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4o
bGVuZ3RoKTsKKyAgICAgICAgbV9tZW1CdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJh
eT4obGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBBICJibGFuayIgYXVkaW8gY2hhbm5lbCAtLSBt
dXN0IGNhbGwgc2V0KCkgYmVmb3JlIGl0J3MgdXNlZnVsLi4uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvRklGTy5oCmluZGV4IDc1YzlhYmQ3NDk0ZDM1ODIyZjgyYWNlN2NjZDBk
ODU2ODYxMWQ3ZWEuLjBmNDM4ZGQ3ZDBmYTU5ZmI2NDRkNGRmNTcyZjU1OWZkNjYzMDhiZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCkBAIC0zMyw3ICszMyw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9GSUZPIHsKK2NsYXNzIEF1
ZGlvRklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgLy8gQ3JlYXRlIGEgRklGTyBsYXJnZSBlbm91Z2ggdG8gaG9sZCB8Zmlmb0xlbmd0aHwgZnJh
bWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLgogICAgIEF1ZGlvRklG
Tyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKaW5kZXggYmZiZTk4M2E1
NzVhNDU0YWFjMmIwYzNjYmU0NTc1ZWZhZjZiNzhkNy4uZDc0OGZhNDEzODczNzlkYjM5NWJlYWU2
NWY4ODJiYTI1OGU5ZmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9QdWxsRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUHVsbEZJRk8uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB0
aGUgRklGTyB3aWxsIGFzayB0aGUgcHJvdmlkZXIgZm9yIG1vcmUgZGF0YSB3aGVuIG5lY2Vzc2Fy
eSB0byBmdWxmaWxsIGEgcmVxdWVzdC4gQ29udHJhc3QgdGhpcwogLy8gd2l0aCBhICJwdXNoIiBG
SUZPLCB3aGVyZSB0aGUgc2VuZGVyIHB1c2hlcyBkYXRhIHRvIHRoZSBGSUZPIHdoaWNoIHdpbGwg
aXRzZWxmIHB1c2ggdGhlIGRhdGEgdG8KIC8vIHRoZSByZWNlaXZlciB3aGVuIHRoZSBGSUZPIGlz
IGZ1bGwuCi1jbGFzcyBBdWRpb1B1bGxGSUZPIHsKK2NsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBh
IEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJvdmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxh
cmdlIGVub3VnaCB0byBob2xkCiAgICAgLy8gfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9m
IHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4gVGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2ls
bCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNh
bXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIu
Y3BwCmluZGV4IDg2OTA2YmE1MTI0NzU4NjkyYzY4M2UyYmM5MDM4MzUwMWVhYjhmZDkuLjI4NGMw
NTQ5NDMyNTkzNDRlYWNlMzI0MThhZGE5YjgzMDNkYTJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
Y29uc3QgZG91YmxlIEF1ZGlvUmVzYW1wbGVyOjpNYXhSYXRlID0gOC4wOwogQXVkaW9SZXNhbXBs
ZXI6OkF1ZGlvUmVzYW1wbGVyKCkKICAgICA6IG1fcmF0ZSgxLjApCiB7Ci0gICAgbV9rZXJuZWxz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7Cisg
ICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlz
KSk7CiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIDAsIGZhbHNlKTsKIH0K
IApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIodW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IG1fcmF0ZSgxLjApCiB7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9rZXJuZWxz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7Cisg
ICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4o
dGhpcykpOwogCiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mQ2hh
bm5lbHMsIDAsIGZhbHNlKTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBdWRpb1Jlc2FtcGxl
cjo6Y29uZmlndXJlQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICAvLyBG
aXJzdCBkZWFsIHdpdGggYWRkaW5nIG9yIHJlbW92aW5nIGtlcm5lbHMuCiAgICAgaWYgKG51bWJl
ck9mQ2hhbm5lbHMgPiBjdXJyZW50U2l6ZSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBj
dXJyZW50U2l6ZTsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgICAgIG1fa2Vy
bmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykp
OworICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVy
S2VybmVsPih0aGlzKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fa2VybmVscy5yZXNpemUobnVt
YmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlci5oCmluZGV4IGQxMWZhOTNlYmFhY2JkOGU1NmI5OGRhMzM3NWZhZTE0MDY4ZTNi
YzkuLjIwMTZiYWZmN2M4OGRmMThhZjVkMzUyYzMwMWY1ZmY0Mzc2ODlmN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaApAQCAtMzcsNyArMzcs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgYXVkaW8gc3RyZWFtIG1heSBiZSBzaW5n
bGUgb3IgbXVsdGktY2hhbm5lbC4KIC8vIFRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHRz
IHRvIHNpbmdsZS1jaGFubmVsIChtb25vKS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXIgeworY2xh
c3MgQXVkaW9SZXNhbXBsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVyKCk7CiAgICAgQXVkaW9SZXNhbXBsZXIodW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAppbmRleCA5OWQ4NzdiYjdjZDY4ZGJiMDUzNjc3
YTA5N2NkNGUwZWFjODNiNzgyLi44YWMyYmFhNDJjNTg3YTM0ODVkNTM0MDIzYWRlZTI0Zjg4MzI2
ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVz
YW1wbGVyS2VybmVsLmgKQEAgLTM0LDcgKzM0LDkgQEAgY2xhc3MgQXVkaW9SZXNhbXBsZXI7CiAv
LyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBkb2VzIHJlc2FtcGxpbmcgb24gYSBzaW5nbGUgbW9ubyBj
aGFubmVsLgogLy8gSXQgdXNlcyBhIHNpbXBsZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmb3IgZ29v
ZCBwZXJmb3JtYW5jZS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgeworY2xhc3MgQXVk
aW9SZXNhbXBsZXJLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvUmVzYW1wbGVyS2VybmVsKTsKIHB1YmxpYzoK
ICAgICBBdWRpb1Jlc2FtcGxlcktlcm5lbChBdWRpb1Jlc2FtcGxlciopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAppbmRleCA1YzFiZjJhMzE3
MzQyZWEzZTUyOTJhNzk3ZThlNjZlMWE4ZGEzOTdjLi5iNWZiNTgwNjQ4ZjljZjhlYzRmMTg2ZmFm
YTQ4ZTEzZmRjZjJmNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRv
U2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogY2xhc3MgQXVk
aW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiB9OwogCiBB
dWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IDE3ZGE4MWIzYjc1ZDdhNWFhYjgyMTQ4NmI3YzFlMzNm
MWE4ZGY0NjkuLmU3MDA4MjJmZjFmZWViZDc4MjlhZWM3NTBjY2U0MGE2MGI5MjU2NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC00NCw3ICs0
NCw4IEBAIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdCB7CiAgICAgTG9u
Z0Zvcm1WaWRlbwogfTsKIAotY2xhc3MgQXVkaW9TZXNzaW9uIHsKK2NsYXNzIEF1ZGlvU2Vzc2lv
biBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQXVkaW9TZXNzaW9uKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgQXVkaW9TZXNzaW9uJiBzaGFyZWRTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0JpcXVhZC5oCmluZGV4IGJiNzIxYTIzYTdmY2M3NzRiNjA5M2U0ZWE5MDhjNjBlODkwODEw
N2MuLjcxMzQ5NGM5MTRkMzM3ODY0M2UyOWE4MGJjMzllNzczNjZkZjE4MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vICAgIGxvd3Bhc3MsIGhpZ2hwYXNzLCBzaGVsdmluZywgcGFyYW1ldGVyaWMs
IG5vdGNoLCBhbGxwYXNzLCAuLi4KIAogY2xhc3MgQmlxdWFkIGZpbmFsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBCaXF1YWQoKTsKICAgICB+QmlxdWFk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKaW5kZXggZDgxYzA1ZGM2OGU2ZTJm
YTIxZDI0NWRkMTM3YjRmMTc4YTIxMjBiNC4uYTdhY2EzYTRjNTRkMjc0YjNhYTNkNDBhZDlkMTQz
ZWJkZmM0NWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29u
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaApAQCAtMzUsNyAr
MzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbmUgZ2FpbiBpcyBkZWZpbmVkIGFj
Y29yZGluZyB0byB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24KIAotY2xhc3MgQ29uZUVmZmVjdCB7
CitjbGFzcyBDb25lRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBDb25lRWZmZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAppbmRleCA2ZTlmNGUwMWRhZTZkNDVkMDIxMTFk
NWQ1YjEyOGVmMzg4NmIyMjQyLi5lMGIzZWZkODBmNzhmZmFhMzA2NTczMzIzMTQ3MDJkYzczYTJm
MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERp
c2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNh
Ymxlci5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAj
aWZkZWYgSEFWRV9ERU5PUk1BTAotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBEZW5v
cm1hbERpc2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBEZW5vcm1hbERpc2FibGVyKCkKICAgICAgICAgICAgIDogbV9zYXZlZENTUigwKQpA
QCAtMTAzLDcgKzEwNCw4IEBAIGNsYXNzIERlbm9ybWFsRGlzYWJsZXIgewogCiAjZWxzZQogLy8g
RklYTUU6IGFkZCBpbXBsZW1lbnRhdGlvbnMgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMgYW5kIGNv
bXBpbGVycwotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBEZW5vcm1hbERpc2FibGVy
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEZW5v
cm1hbERpc2FibGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RGlyZWN0Q29udm9sdmVyLmgKaW5kZXggNmYyZmFmNDBlNjFiZjZlMzJhNGY0OTk5NzY1YzllMWJi
NTE5NDFhOC4uNzgzMDhjZTE5OTk5OWJiMWQ2ODBiYjNiN2UyM2FlMDRjZDdjYjIwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKQEAgLTMz
LDcgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEaXJlY3RDb252b2x2
ZXIgeworY2xhc3MgRGlyZWN0Q29udm9sdmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXJlY3RDb252b2x2ZXIpOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IERpcmVjdENvbnZvbHZlcihzaXplX3QgaW5wdXRCbG9ja1NpemUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaAppbmRleCA5MWQzNDli
OTdlNjI3NzMzMmQ3NjMxYTg4NDQyNmIxNjY4ZGNmMjgzLi5iM2ViNzc5NzNjZmE0Nzk1ZjE1MDUz
NjliN2U0YjJmODlmZmI2YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EaXN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3Rh
bmNlLmgKQEAgLTQwLDcgKzQwLDggQEAgZW51bSBjbGFzcyBEaXN0YW5jZU1vZGVsVHlwZSB7CiAg
ICAgRXhwb25lbnRpYWwKIH07CiAKLWNsYXNzIERpc3RhbmNlRWZmZWN0IHsKK2NsYXNzIERpc3Rh
bmNlRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBEaXN0YW5jZUVmZmVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RG93blNhbXBsZXIuaAppbmRleCBmNGI0MjAxN2VlNzYyN2NhZDY1NmJmZjQ1N2FhZTk4OTQ4MDE0
YmYyLi45NTcwYjg5MWM5N2ZmYTkxMWEwMTEzNDAwM2I0ZmRjYjVmNzZmOTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBEb3duU2FtcGxlciBkb3duLXNhbXBsZXMgdGhlIHNv
dXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCiAKLWNsYXNzIERvd25TYW1wbGVyIHsKK2Ns
YXNzIERvd25TYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBEb3duU2FtcGxlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ci5jcHAKaW5kZXggYjI1NTE4ZDg4MGE4ZDJkOTk0YTc2OTZiOGZhZGE5ZTU1NDhjMjllYi4uNTEz
Nzk5YTg1MTJmNDI3YjRlNGI4ZDliMjk0NWE5NGQzNDkxODc3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCkBAIC0yNzEs
OCArMjcxLDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICBtX3ByZUZpbHRlclBhY2tzLmNsZWFyKCk7
CiAgICAgbV9wb3N0RmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIG1fcHJlRmlsdGVyUGFja3Mu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7Ci0gICAgICAg
IG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVy
UGFjazQ+KCkpOworICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFpl
cm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQo
bWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAgICB9CiAKICAgICBtX3NvdXJj
ZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVs
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvci5oCmluZGV4IGVmOGMwOTNhMWI5NjUzMjI5ZDc5OWYxYTZiMjkyYWZhZGJkYWJhZDEuLjgy
MmM5MzFmMzhjZTBlYzhkYzYyODJmMGY4YzM0M2FmNjc3Zjk4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCkBAIC00Myw4ICs0
Myw5IEBAIGNsYXNzIEF1ZGlvQnVzOwogLy8gb2YgdGhlIGxvdWRlc3QgcGFydHMgb2YgdGhlIHNp
Z25hbCBhbmQgcmFpc2VzIHRoZSB2b2x1bWUgb2YgdGhlIHNvZnRlc3QgcGFydHMsCiAvLyBtYWtp
bmcgdGhlIHNvdW5kIHJpY2hlciwgZnVsbGVyLCBhbmQgbW9yZSBjb250cm9sbGVkLgogCi1jbGFz
cyBEeW5hbWljc0NvbXByZXNzb3IgeworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yIGZpbmFsIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
eW5hbWljc0NvbXByZXNzb3IpOwogcHVibGljOgogICAgIGVudW0gewogICAgICAgICBQYXJhbVRo
cmVzaG9sZCwKQEAgLTk1LDkgKzk2LDEwIEBAIGNsYXNzIER5bmFtaWNzQ29tcHJlc3NvciB7CiAg
ICAgZmxvYXQgbV9sYXN0QW5jaG9yOwogICAgIGZsb2F0IG1fbGFzdEZpbHRlclN0YWdlR2FpbjsK
IAotICAgIHR5cGVkZWYgc3RydWN0IHsKKyAgICBzdHJ1Y3QgWmVyb1BvbGVGaWx0ZXJQYWNrNCB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgWmVyb1Bv
bGUgZmlsdGVyc1s0XTsKLSAgICB9IFplcm9Qb2xlRmlsdGVyUGFjazQ7CisgICAgfTsKIAogICAg
IC8vIFBlci1jaGFubmVsIGVtcGhhc2lzIGZpbHRlcnMuCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4gbV9wcmVGaWx0ZXJQYWNrczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWwuY3BwCmluZGV4IDczNGIwNjZjZGE0OGJjMmM3YTc5ZWRmNTA3ZDA2YzA1NmM3MGEwOTAuLmFm
ZWRiN2I0Y2QwYTVhNjFkMWE5ZmUyNzhjMzQwMzgzZjk4ZTIxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVs
LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0
TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogCiAgICAgbV9wcmVE
ZWxheUJ1ZmZlcnMuY2xlYXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZDaGFubmVsczsgKytpKQotICAgICAgICBtX3ByZURlbGF5QnVmZmVycy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVzKSk7CisgICAgICAg
IG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oTWF4
UHJlRGVsYXlGcmFtZXMpKTsKIH0KIAogdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNl
dFByZURlbGF5VGltZShmbG9hdCBwcmVEZWxheVRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCmluZGV4IGI3
YmNlYTJmYWZkODk5NmNhNTI4YjBiNWRhYjQ5Y2I4ODk1OGRjYzQuLmUxMWY0N2JhYWYwYmM2YzVk
MGNhN2UzZDcyMDA4MjYzOWQyNzBjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCkBAIC0zNSw3ICszNSw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRHluYW1pY3NDb21wcmVz
c29yS2VybmVsKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFu
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmgK
aW5kZXggOGNmNTk5MTc5NWYzZjFmNjNlMjgxZDllMTZhY2FmM2Q3YTU3YTVkYS4uNGU0NjNiMTI4
MWE3ZmEzYmIzOTdhNmIwNjVjZTAzM2NjYmY5YWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbW1vbiB0eXBlIG9mIHN0ZXJlbyBwYW5uZXIgYXMgZm91
bmQgaW4gbm9ybWFsIGF1ZGlvIG1peGluZyBlcXVpcG1lbnQuCiAKLWNsYXNzIEVxdWFsUG93ZXJQ
YW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKK2NsYXNzIEVxdWFsUG93ZXJQYW5uZXIgZmluYWwgOiBw
dWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFcXVhbFBvd2VyUGFubmVyKGZs
b2F0IHNhbXBsZVJhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENv
bnZvbHZlci5oCmluZGV4IDQ1NDJiNmZiMjU3ODU0OTVhYjIwNmFiYzNjOTBjNzViYzJmMTZlYTAu
LjM4NjIyN2YxOTcwNGFmZDc5MmUzNjYyMmJkZGE5YzFhY2VhNzUxMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCkBAIC0zNCw3ICszNCw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRkZUQ29udm9sdmVyIHsKK2NsYXNzIEZGVENv
bnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRkZUQ29udm9sdmVyKTsKIHB1YmxpYzoKICAgICAvLyBmZnRTaXplIG11
c3QgYmUgYSBwb3dlciBvZiB0d28KICAgICBGRlRDb252b2x2ZXIoc2l6ZV90IGZmdFNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCmluZGV4IDRjMDJiNjk5
MmIwNjM4M2I4MDM1NzM3ODc4ZGJmNjVhMjZmYjljMzEuLjRjMTUyMDY3ZDQ0YWM0Yjg1NDE5MjFh
YWVkMjk1OTgyYjk2OTM3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0ZGVEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRG
cmFtZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBGRlRGcmFtZTo6ZG9QYWRkZWRGRlQoY29u
c3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIAogc3RkOjp1bmlxdWVfcHRyPEZGVEZy
YW1lPiBGRlRGcmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUoY29uc3QgRkZURnJhbWUmIGZy
YW1lMSwgY29uc3QgRkZURnJhbWUmIGZyYW1lMiwgZG91YmxlIHgpCiB7Ci0gICAgYXV0byBuZXdG
cmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZyYW1lMS5mZnRTaXplKCkpOworICAg
IGF1dG8gbmV3RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsK
IAogICAgIG5ld0ZyYW1lLT5pbnRlcnBvbGF0ZUZyZXF1ZW5jeUNvbXBvbmVudHMoZnJhbWUxLCBm
cmFtZTIsIHgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFz
ZS5oCmluZGV4IDc1N2JjZmE0YjZhZWZkNzBlYmFlODY1NDg3MjVmYTQwNjI5YzZlOWUuLmE1MTkz
NDk4MTUwNDUyNmQ2ZmM2NGQ0NWI5NzkwYjM3ODEwM2E0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJURktlcm5lbDsKIAotY2xhc3MgSFJURkRhdGFiYXNlIHsK
K2NsYXNzIEhSVEZEYXRhYmFzZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkRhdGFiYXNlKTsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3Bw
CmluZGV4IGY0NWJlODQ3Y2U3MTBkY2VkYTJlMGVjMTA2Yjc1YmYyNjg1Nzg5Y2QuLmE0NzRhNzBj
NDA4NTJhZTJlMWY5ZjU4YTQ5YTAwMDM2MTU4MGIzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcApAQCAtODUsNyArODUs
NyBAQCB2b2lkIEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZCgpCiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSkgewogICAgICAgICAvLyBM
b2FkIHRoZSBkZWZhdWx0IEhSVEYgZGF0YWJhc2UuCi0gICAgICAgIG1faHJ0ZkRhdGFiYXNlID0g
c3RkOjptYWtlX3VuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKKyAg
ICAgICAgbV9ocnRmRGF0YWJhc2UgPSBtYWtlVW5pcXVlPEhSVEZEYXRhYmFzZT4obV9kYXRhYmFz
ZVNhbXBsZVJhdGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBjODRhYjk3NTFhMTQ1OTg5YTAzNzdmYWQxZjRh
NzVlOGYxN2UyYjI0Li42MDUyMzJjZDFhOTljOTIzM2Q5YWQxMDQ5YmEzMDdlMjE3NzM4ZmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcApA
QCAtMjQ0LDggKzI0NCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxl
dmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViCiAgICAgaWYgKCFpc0Vs
ZXZhdGlvbkdvb2QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKLSAgICBhdXRv
IGtlcm5lbExpc3RMID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZU
b3RhbEF6aW11dGhzKTsKLSAgICBhdXRvIGtlcm5lbExpc3RSID0gc3RkOjptYWtlX3VuaXF1ZTxI
UlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExp
c3RMID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsK
KyAgICBhdXRvIGtlcm5lbExpc3RSID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVy
T2ZUb3RhbEF6aW11dGhzKTsKIAogICAgIC8vIExvYWQgY29udm9sdXRpb24ga2VybmVscyBmcm9t
IEhSVEYgZmlsZXMuCiAgICAgaW50IGludGVycG9sYXRlZEluZGV4ID0gMDsKQEAgLTI3NCw3ICsy
NzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3Jl
YXRlRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1YgogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVs
TGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwg
V1RGTW92ZShrZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9s
YXRpbmdTbGljZXMoSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjEsIEhSVEZFbGV2YXRpb24q
IGhydGZFbGV2YXRpb24yLCBmbG9hdCB4LCBmbG9hdCBzYW1wbGVSYXRlKQpAQCAtMjg1LDggKzI4
NSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVh
dGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgICAgIAogICAgIEFTU0VSVCh4ID49
IDAuMCAmJiB4IDwgMS4wKTsKICAgICAKLSAgICBhdXRvIGtlcm5lbExpc3RMID0gc3RkOjptYWtl
X3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKLSAgICBhdXRv
IGtlcm5lbExpc3RSID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZU
b3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RMID0gbWFrZVVuaXF1ZTxIUlRGS2Vy
bmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RSID0g
bWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKIAogICAg
IEhSVEZLZXJuZWxMaXN0KiBrZXJuZWxMaXN0TDEgPSBocnRmRWxldmF0aW9uMS0+a2VybmVsTGlz
dEwoKTsKICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdFIxID0gaHJ0ZkVsZXZhdGlvbjEt
Pmtlcm5lbExpc3RSKCk7CkBAIC0zMDIsNyArMzAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZF
bGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRG
RWwKICAgICAvLyBJbnRlcnBvbGF0ZSBlbGV2YXRpb24gYW5nbGUuCiAgICAgZG91YmxlIGFuZ2xl
ID0gKDEuMCAtIHgpICogaHJ0ZkVsZXZhdGlvbjEtPmVsZXZhdGlvbkFuZ2xlKCkgKyB4ICogaHJ0
ZkVsZXZhdGlvbjItPmVsZXZhdGlvbkFuZ2xlKCk7CiAgICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2Vy
bmVsTGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xlKSwgc2FtcGxlUmF0ZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1v
dmUoa2VybmVsTGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xlKSwgc2FtcGxlUmF0ZSk7CiB9
CiAKIHZvaWQgSFJURkVsZXZhdGlvbjo6Z2V0S2VybmVsc0Zyb21BemltdXRoKGRvdWJsZSBhemlt
dXRoQmxlbmQsIHVuc2lnbmVkIGF6aW11dGhJbmRleCwgSFJURktlcm5lbCogJmtlcm5lbEwsIEhS
VEZLZXJuZWwqICZrZXJuZWxSLCBkb3VibGUmIGZyYW1lRGVsYXlMLCBkb3VibGUmIGZyYW1lRGVs
YXlSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCmlu
ZGV4IDJhOTU5MDQ1NTIxODQzYTE1MTYyZWNjOGUzMjExNzM5ZTA3MDUzZjcuLmVmNzUyYzNjMDFi
ZTM5ZWNkYjdlZjY0ZGY0MzkwOTI2NmQ2ZWQ5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBIUlRGRWxldmF0aW9uIGNvbnRhaW5zIGFsbCBvZiB0aGUgSFJURktlcm5l
bHMgKG9uZSBsZWZ0IGVhciBhbmQgb25lIHJpZ2h0IGVhciBwZXIgYXppbXV0aCBhbmdsZSkgZm9y
IGEgcGFydGljdWxhciBlbGV2YXRpb24uCiAKLWNsYXNzIEhSVEZFbGV2YXRpb24geworY2xhc3Mg
SFJURkVsZXZhdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkVsZXZhdGlvbik7CiBwdWJsaWM6CiAgICAgSFJURkVs
ZXZhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RMLCBzdGQ6
OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RSLCBpbnQgZWxldmF0aW9uLCBm
bG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2Vy
bmVsLmNwcAppbmRleCBlZGY2YzYwZDBkYjgxNGQ5NGMwZjcxYjYzMDZlNDM4MjY1M2FhNGM3Li4z
NzU1MjE2YWUyODdhNzFjNzQyOTI5YTUzYzk1OTA5NmRiMWRiYjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcApAQCAtOTIsNyArOTIsNyBAQCBIUlRG
S2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90IGZmdFNpemUs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZmdEZyYW1lID0g
c3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CisgICAgbV9mZnRGcmFtZSA9IG1h
a2VVbmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOwogICAgIG1fZmZ0RnJhbWUtPmRvUGFkZGVkRkZU
KGltcHVsc2VSZXNwb25zZSwgdHJ1bmNhdGVkUmVzcG9uc2VMZW5ndGgpOwogfQogCkBAIC0xMDMs
NyArMTAzLDcgQEAgc2l6ZV90IEhSVEZLZXJuZWw6OmZmdFNpemUoKSBjb25zdAogCiBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9DaGFubmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2Uo
KQogewotICAgIGF1dG8gY2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihm
ZnRTaXplKCkpOworICAgIGF1dG8gY2hhbm5lbCA9IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihm
ZnRTaXplKCkpOwogICAgIEZGVEZyYW1lIGZmdEZyYW1lKCptX2ZmdEZyYW1lKTsKIAogICAgIC8v
IEFkZCBsZWFkaW5nIGRlbGF5IGJhY2sgaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGUGFubmVyLmgKaW5kZXggYmY1ZWVmYWE1ZTRjNmQyYmYxN2E5OTAwMzA3NDE2NWM2ZTQz
M2FkNy4uY2FhYTQ0MWYxZDE0ZWEzNmY1ZTk2OGFkOGE3N2QwYjdhNjBkZDk5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaApAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhSVEZQYW5uZXIgOiBwdWJsaWMgUGFubmVy
IHsKK2NsYXNzIEhSVEZQYW5uZXIgZmluYWwgOiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBIUlRGUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUsIEhSVEZEYXRhYmFzZUxvYWRl
ciopOwogICAgIHZpcnR1YWwgfkhSVEZQYW5uZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCmluZGV4IGJiYmYx
NjQ0NjIwNzYzOWUzNWNmNzk1NjQ4MjgyNjNkM2U5MzczYWUuLjViZjlhYjk1ZDAxNTc1MDA4MTVk
NjEzMWFiMWQ4OTc0MWJlMWZlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCBN
dWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVG
YWN0b3IsIHVuc2lnbmVkIG51bWJlcgogewogICAgIC8vIENyZWF0ZSBlYWNoIGNoYW5uZWwncyBy
ZXNhbXBsZXIuCiAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5k
ZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkKLSAgICAgICAgbV9rZXJuZWxz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yKSk7Cisg
ICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZh
Y3RvcikpOwogfQogCiB2b2lkIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1Nv
dXJjZVByb3ZpZGVyKiBwcm92aWRlciwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
TXVsdGlDaGFubmVsUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
dWx0aUNoYW5uZWxSZXNhbXBsZXIuaAppbmRleCA0NDE3NTQ3NjA1ODNkMjgwMzRhNDViM2JkOGE2
MTg4ZDQ2NWEyZjM2Li42MTQ2ZTkyNWMwNmEyZGRhNzZjYjQxMmYwY2MxZTBhMjQ2YWM4MGQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNh
bXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxS
ZXNhbXBsZXIuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEF1ZGlvQnVzOwogICAgIAotY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyIHsKK2NsYXNzIE11
bHRpQ2hhbm5lbFJlc2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6ICAgCiAgICAgZXhwbGljaXQgTXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBz
Y2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGFubmVyLmNwcAppbmRleCBhYzcyODZhYzlhMDYwYjc1MzRjYjJlZGU5MjFk
NmNiZDc3YTk3YTg4Li40MGI5ZDAxZGMxODRiOTZkNWRmM2FiOWI3ZjQwOTQ2M2E5NzgzNGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKQEAgLTQzLDExICs0Mywx
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVyPiBQYW5uZXI6OmNyZWF0ZShQYW5uaW5nTW9kZWxU
eXBlIG1vZGVsLCBmbG9hdCBzYW1wbGVSYXRlLAogCiAgICAgc3dpdGNoIChtb2RlbCkgewogICAg
IGNhc2UgUGFubmluZ01vZGVsVHlwZTo6RXF1YWxwb3dlcjoKLSAgICAgICAgcGFubmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxFcXVhbFBvd2VyUGFubmVyPihzYW1wbGVSYXRlKTsKKyAgICAgICAgcGFu
bmVyID0gbWFrZVVuaXF1ZTxFcXVhbFBvd2VyUGFubmVyPihzYW1wbGVSYXRlKTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFBhbm5pbmdNb2RlbFR5cGU6OkhSVEY6Ci0gICAgICAgIHBhbm5l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURlBhbm5lcj4oc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2Fk
ZXIpOworICAgICAgICBwYW5uZXIgPSBtYWtlVW5pcXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUs
IGRhdGFiYXNlTG9hZGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5k
ZXggZTAyMzk0YWE1YjE0OWNkMTU5NjkxMmEyNTY4MWZmNWVhNDRhZDhkMi4uYzhiZDY0YTQxYmY2
MTJlODllM2MyMTRmYTIyZGNjNTk5NDhlNTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bU1lZGlhU2Vzc2lvbj4gUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlh
U2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRm
b3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOwogfQogCiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxh
dGZvcm1NZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCmluZGV4IDMwNDNmYzhhMDRkZjBk
NzdjMTBhYTAzNzliZDI2YTM5ZDQ2Y2U2YmEuLjhhNjc1NWM1NGFkMDBhM2E4MTAxODc0MjE2MmNj
ZDA3NGRlMTBlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApA
QCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUmV2ZXJiOjppbml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1
bHNlUmVzcG9uc2VCdWZmZXIsIHNpemVfdCByZW5kZXJTbGljZVNpemUsCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1SZXNwb25zZUNoYW5uZWxzOyArK2kpIHsKICAgICAgICAgQXVkaW9D
aGFubmVsKiBjaGFubmVsID0gaW1wdWxzZVJlc3BvbnNlQnVmZmVyLT5jaGFubmVsKGkpOwogCi0g
ICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2
ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVy
UGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7CisgICAgICAgIG1fY29udm9sdmVycy5hcHBl
bmQobWFrZVVuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwg
bWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7
CiAKICAgICAgICAgY29udm9sdmVyUmVuZGVyUGhhc2UgKz0gcmVuZGVyU2xpY2VTaXplOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKaW5kZXggM2UyNTc2YjM1NzU3
ZGJhMjQ3MGM4ZWI3ZGEzYzE3YmVlYmJmZGNlZC4uMjM0ZTMxZGFlYmJkNGRkYWEzNmExZTkwNTMx
MWViOTkyMmZhYTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKQEAg
LTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9CdXM7CiAgICAgCiAvLyBNdWx0aS1jaGFubmVsIGNv
bnZvbHV0aW9uIHJldmVyYiB3aXRoIGNoYW5uZWwgbWF0cml4aW5nIC0gb25lIG9yIG1vcmUgUmV2
ZXJiQ29udm9sdmVyIG9iamVjdHMgYXJlIHVzZWQgaW50ZXJuYWxseS4KIAotY2xhc3MgUmV2ZXJi
IHsKK2NsYXNzIFJldmVyYiBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZW51bSB7IE1heEZyYW1lU2l6ZSA9IDI1NiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaApp
bmRleCA1MTJiNmFkZTM0MWEyODU2OTcyZWUzZjdiY2IyMTE2NmJiNzIxYTFmLi5hNjI4MzVmOWMw
ZDdkNzQzYzllOTI3Y2VkZTJkNmExZGE0NTU4NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaApAQCAtMzYs
NyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBSZXZlcmJBY2N1bXVsYXRpb25CdWZm
ZXIgaXMgYSBjaXJjdWxhciBkZWxheSBidWZmZXIgd2l0aCBvbmUgY2xpZW50IHJlYWRpbmcgZnJv
bSBpdCBhbmQgbXVsdGlwbGUgY2xpZW50cwogLy8gd3JpdGluZy9hY2N1bXVsYXRpbmcgdG8gaXQg
YXQgZGlmZmVyZW50IGRlbGF5IG9mZnNldHMgZnJvbSB0aGUgcmVhZCBwb3NpdGlvbi4gIFRoZSBy
ZWFkIG9wZXJhdGlvbiB3aWxsIHplcm8gdGhlIG1lbW9yeQogLy8ganVzdCByZWFkIGZyb20gdGhl
IGJ1ZmZlciwgc28gaXQgd2lsbCBiZSByZWFkeSBmb3IgYWNjdW11bGF0aW9uIHRoZSBuZXh0IHRp
bWUgYXJvdW5kLgotY2xhc3MgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIHsKK2NsYXNzIFJldmVy
YkFjY3VtdWxhdGlvbkJ1ZmZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyKHNpemVfdCBs
ZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmNwcAppbmRleCAxNDVkZjgxZTJhNmJhMmMyZGFhOWJiNDFlNmI1Y2FiYWYzODVmOTFj
Li5hOWM5MzVjMWEyODVhYjEzNjJkOGZmMWRmOGNlYmE1YTdlNWFhNzdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAgLTk0LDcg
Kzk0LDcgQEAgUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBp
bXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGkKIAogICAgICAgICBib29sIHVzZURpcmVj
dENvbnZvbHZlciA9ICFzdGFnZU9mZnNldDsKIAotICAgICAgICBhdXRvIHN0YWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VM
ZW5ndGgsIHJldmVyYlRvdGFsTGF0ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6
ZSwgcmVuZGVyUGhhc2UsIHJlbmRlclNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1
c2VEaXJlY3RDb252b2x2ZXIpOworICAgICAgICBhdXRvIHN0YWdlID0gbWFrZVVuaXF1ZTxSZXZl
cmJDb252b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5ndGgsIHJldmVyYlRv
dGFsTGF0ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2Us
IHJlbmRlclNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1c2VEaXJlY3RDb252b2x2
ZXIpOwogCiAgICAgICAgIGJvb2wgaXNCYWNrZ3JvdW5kU3RhZ2UgPSBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaAppbmRleCA1Yjgx
OWUxYTNlNmY0ZmIxZjhkYjBjNTk2OTcyNjJhYWMwOWM2YmRlLi4zMjAwYjQ1ZWE4ZGY3YzIxY2U2
ZmEzN2UwOGJiMjc5MWY4YWU1ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuaApAQCAtNDMsOCArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEF1ZGlvQ2hhbm5lbDsKIAotY2xhc3MgUmV2ZXJiQ29udm9sdmVyIHsKK2Ns
YXNzIFJldmVyYkNvbnZvbHZlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmV2ZXJiQ29udm9sdmVyKTsKIHB1YmxpYzoKICAg
ICAvLyBtYXhGRlRTaXplIGNhbiBiZSBhZGp1c3RlZCAoZnJvbSBzYXkgMjA0OCB0byAzMjc2OCkg
ZGVwZW5kaW5nIG9uIGhvdyBtdWNoIHByZWNpc2lvbiBpcyBuZWNlc3NhcnkuCiAgICAgLy8gRm9y
IGNlcnRhaW4gdHdlYWt5IGRlLWNvbnZvbHZpbmcgYXBwbGljYXRpb25zIHRoZSBwaGFzZSBlcnJv
cnMgYWRkIHVwIHF1aWNrbHkgYW5kIGxlYWQgdG8gbm9uLXNlbnNpY2FsIHJlc3VsdHMgd2l0aApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuY3BwCmluZGV4IDBmZGU0MjFhZjJmODJmZDQ4NzRkOTRmNmFmMWQ2MzQ3MjM5YzY1NmUu
LjRmZjk1M2IyNjA0OTE3ZDM0NTIwMzk0MDViNjVkZTJiZDVhMWVhYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAK
QEAgLTU1LDE2ICs1NSwxNiBAQCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVy
U3RhZ2UoY29uc3QgZmxvYXQqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90LAogICAgIEFTU0VSVChh
Y2N1bXVsYXRpb25CdWZmZXIpOwogCiAgICAgaWYgKCFtX2RpcmVjdE1vZGUpIHsKLSAgICAgICAg
bV9mZnRLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKKyAgICAg
ICAgbV9mZnRLZXJuZWwgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKICAgICAgICAg
bV9mZnRLZXJuZWwtPmRvUGFkZGVkRkZUKGltcHVsc2VSZXNwb25zZSArIHN0YWdlT2Zmc2V0LCBz
dGFnZUxlbmd0aCk7Ci0gICAgICAgIG1fZmZ0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
RlRDb252b2x2ZXI+KGZmdFNpemUpOworICAgICAgICBtX2ZmdENvbnZvbHZlciA9IG1ha2VVbmlx
dWU8RkZUQ29udm9sdmVyPihmZnRTaXplKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQo
IXN0YWdlT2Zmc2V0KTsKICAgICAgICAgQVNTRVJUKHN0YWdlTGVuZ3RoIDw9IGZmdFNpemUgLyAy
KTsKIAotICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9h
dEFycmF5PihmZnRTaXplIC8gMik7CisgICAgICAgIG1fZGlyZWN0S2VybmVsID0gbWFrZVVuaXF1
ZTxBdWRpb0Zsb2F0QXJyYXk+KGZmdFNpemUgLyAyKTsKICAgICAgICAgbV9kaXJlY3RLZXJuZWwt
PmNvcHlUb1JhbmdlKGltcHVsc2VSZXNwb25zZSwgMCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBt
X2RpcmVjdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGlyZWN0Q29udm9sdmVyPihyZW5k
ZXJTbGljZVNpemUpOworICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RGly
ZWN0Q29udm9sdmVyPihyZW5kZXJTbGljZVNpemUpOwogICAgIH0KICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hbGxvY2F0ZShyZW5kZXJTbGljZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAppbmRleCBhMDQ5MDk3MDM0
MGFiM2IzMzYwMGIwODllNTk4NDc0ZmIzZDQ1NWU2Li4zYzAzYmUzNDFiM2I3ZDY0NjIxZGM4MDM4
MTY2OTM2MGY0ZGI0YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRGlyZWN0
Q29udm9sdmVyOwogICAgIAogLy8gQSBSZXZlcmJDb252b2x2ZXJTdGFnZSByZXByZXNlbnRzIHRo
ZSBjb252b2x1dGlvbiBhc3NvY2lhdGVkIHdpdGggYSBzdWItc2VjdGlvbiBvZiBhIGxhcmdlIGlt
cHVsc2UgcmVzcG9uc2UuCiAvLyBJdCBpbmNvcnBvcmF0ZXMgYSBkZWxheSBsaW5lIHRvIGFjY291
bnQgZm9yIHRoZSBvZmZzZXQgb2YgdGhlIHN1Yi1zZWN0aW9uIHdpdGhpbiB0aGUgbGFyZ2VyIGlt
cHVsc2UgcmVzcG9uc2UuCi1jbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSB7CitjbGFzcyBSZXZl
cmJDb252b2x2ZXJTdGFnZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgLy8gcmVuZGVyUGhhc2UgaXMgdXNlZnVsIHRvIGtub3cgc28gdGhhdCB3ZSBj
YW4gbWFuaXB1bGF0ZSB0aGUgcHJlIHZlcnN1cyBwb3N0IGRlbGF5IHNvIHRoYXQgc3RhZ2VzIHdp
bGwgcGVyZm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiSW5wdXRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklu
cHV0QnVmZmVyLmgKaW5kZXggYmIwNmU0ZWVkNjMzZjBlN2M2ODJlMjBlNGU2YTU3MmFhMWZhYTk2
Ni4uYWY5ZWQwMGQ3MzNlODQyYjZlZDNhNjQ3NDg1NDIwZDNjNzY3NzUzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCkBAIC0zNCw3
ICszNCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFJldmVyYklucHV0QnVmZmVyIGlz
IHVzZWQgdG8gYnVmZmVyIGlucHV0IHNhbXBsZXMgZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcgYnkg
dGhlIGJhY2tncm91bmQgdGhyZWFkcy4KLWNsYXNzIFJldmVyYklucHV0QnVmZmVyIHsKK2NsYXNz
IFJldmVyYklucHV0QnVmZmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBSZXZlcmJJbnB1dEJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCmluZGV4
IDJmY2Q4OWY3ZWNhMzc1ODU4NjMxYTliMjc2NWExMGQyMDFiMzQxYzcuLmMxMzJmNWQ5NzYyYzc1
NjZiMjMyNWMwNjRiMjhkZThiNmUzOTAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKQEAgLTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAvLyBTaW5jUmVzYW1wbGVyIGlzIGEgaGlnaC1xdWFsaXR5IHNhbXBsZS1yYXRlIGNv
bnZlcnRlci4KIAotY2xhc3MgU2luY1Jlc2FtcGxlciB7CitjbGFzcyBTaW5jUmVzYW1wbGVyIGZp
bmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICAvLyBz
Y2FsZUZhY3RvciA9PSBzb3VyY2VTYW1wbGVSYXRlIC8gZGVzdGluYXRpb25TYW1wbGVSYXRlCiAg
ICAgLy8ga2VybmVsU2l6ZSBjYW4gYmUgYWRqdXN0ZWQgZm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBi
ZXR0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCmluZGV4IDI2
NmJjYWY5ODBkNzI2ZmEyZjYzN2NmZTkzYTVkNGMzOGIyNGVlMDYuLjY3NWVlNGFkMGM0NDY3Y2Qx
ZGQ2ZDFkNTE2MTFlNzdiOThjNGM2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1VwU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1VwU2FtcGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
VXBTYW1wbGVyIHVwLXNhbXBsZXMgdGhlIHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMngu
CiAKLWNsYXNzIFVwU2FtcGxlciB7CitjbGFzcyBVcFNhbXBsZXIgZmluYWwgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVwU2FtcGxlcihzaXpl
X3QgaW5wdXRCbG9ja1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vWmVyb1BvbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xl
LmgKaW5kZXggODMxZGU5MDkzYjAwNTYxNmI0YmQ3N2VhN2IwNzc4YzM3ZGFhN2I2ZS4uMDJmZmFj
ZDVlYWNhN2NlMjc1ODkyYmU4ZDY0Mzk0YzczM2RjN2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9aZXJvUG9sZS5oCkBAIC0zMyw3ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gWmVyb1BvbGUgaXMgYSBzaW1wbGUgZmlsdGVyIHdpdGggb25lIHplcm8gYW5kIG9u
ZSBwb2xlLgogCi1jbGFzcyBaZXJvUG9sZSB7CitjbGFzcyBaZXJvUG9sZSBmaW5hbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgWmVyb1BvbGUoKQogICAgICAg
ICA6IG1femVybygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaAppbmRleCA4NmI2NWEyMjUzYWYxYWViMmExY2E5
Y2FhMzY2Nzg2Y2Q3ZDY1NTIwLi43NmI1YmM3NTFkNjA1OGYxODc3MWJhOTU1MmFhYzQ2YzZlMmFk
NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJB
dWRpb0J1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9XZWJBdWRpb0J1ZmZlckxpc3QuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiAKIGNsYXNzIFdlYkF1ZGlvQnVm
ZmVyTGlzdCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFdlYkF1ZGlvQnVmZmVyTGlz
dChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50MzJfdCBzYW1wbGVDb3VudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggNWJmOGZkYTZi
MjkxMmIxOGYxMTkwZGNiZTcwODJiZjY4NGJlZTk4Zi4uMWE1NDk1ZmQ3NjRkOWMzY2M2ZWRiNTgx
ZmE0ODBlYWVhZDE0NTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4g
QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChu
dW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVz
dGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMi
LCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJh
dGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0KIAogZmxvYXQg
QXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApp
bmRleCA4YWY4NzdlYzJjNGNhMGFiZDMwNzQ4MzVmNTRiMzRhZWJmMDQzM2EyLi40YmRlN2U0MWUy
YjY0MzdjZDBmZjcyNWU0ZDA3OWQ2OGY4OWU3ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCkBAIC04
MCw3ICs4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3Rp
bmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6
Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9m
SW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9TPihjYWxsYmFjaywg
c2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbklPUz4o
Y2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJk
d2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggZGM2YzhiY2NlMzY5ZDA2YWVkYzhmZDMzM2M3
MzhjMGJlOTU3NWRkNC4uNjM5ODI0MGJiZDhkOTY3MzAyZGY3ZTllY2ZmNDA3NTAyZGE2ZTIwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lv
bklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNz
aW9uSU9TLm1tCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjYXRlZ29yeU5h
bWUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiAjZW5kaWYKIAogY2xhc3Mg
QXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKTsKICAgICBBdWRpb1Nl
c3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7CkBAIC03MSw3ICs3Miw3IEBA
IEF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKikK
IH0KIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhpcykpCisgICAgOiBtX3ByaXZhdGUo
bWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25N
YWMuY3BwCmluZGV4IDc2NGEzNDdmOTgyOWUxZTg0NzViZDJlYTEyODBhYTE3NTAyNmVjZmMuLjlm
ZTY0YmFhYTQ3ODRmZWNkYWIzZDZkZGI1ZTI3ODM4MWUxZTA3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVt
YmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3Rp
bmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRl
KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNh
bGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0
aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRp
b246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCA3N2Q0MzE2
NTY2OTkwZTkwMWI5MjBiZjc3OGQ5NjllOWYxOGYxODhhLi40MWFmZTM5ZjIzMmFlNTg4MDg2MGYw
ODRkNTU2Y2I0YTVkOGFlMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTEwOCw3ICsxMDgs
NyBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KGNvbnN0
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZgogewogICAgIEFTU0VSVChmb3JtYXQuc2FtcGxl
UmF0ZSgpID49IDApOwogCi0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CisgICAgbV9pbnB1dERlc2NyaXB0
aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAg
aWYgKG1fb3V0cHV0RGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBzZXR1cENvbnZlcnRlcigp
OwogCkBAIC0xMjAsOSArMTIwLDkgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpz
ZXRPdXRwdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJgogICAgIEFTU0VS
VChtX2lucHV0RGVzY3JpcHRpb24pOwogICAgIEFTU0VSVChmb3JtYXQuc2FtcGxlUmF0ZSgpID49
IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBt
YWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKICAgICBpZiAoIW1f
cmluZ0J1ZmZlcikKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJp
bmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVm
ZmVyPigpOwogCiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShmb3JtYXQsIHN0YXRpY19jYXN0
PHNpemVfdD4obV9tYXhpbXVtU2FtcGxlQ291bnQpKTsKICAgICBtX3NjcmF0Y2hCdWZmZXIgPSBB
dWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZShtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1E
ZXNjcmlwdGlvbigpLCBtX21heGltdW1TYW1wbGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCmluZGV4IDdmNmVm
OWQzM2RiMWZiNDdlN2NmMTRjNTkwNGE0NjExMmIxNTIyMzIuLmNjMDRmMGJlMzA5NzQ5OGI4MzY2
ZTkyNDIwNzNlY2UzZTE5NzVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNz
IEF1ZGlvU2Vzc2lvblByaXZhdGUgewogfTsKIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24o
KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4o
aXNNdXRlZCgpKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZh
dGU+KGlzTXV0ZWQoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAppbmRleCAxOGEyNmFiNmRjNWM4ZGQwMTI1MmRiMDY0NmQ0
ZjViOWI0N2I2ZmY1Li41MTRmZjg2ZjlkMmNkZGE0NWVhNGZhMTYyNmY0MDk3ZDYzYTUxMTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5o
CkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2UgewogfTsKIAogY2xh
c3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvciA6IHB1YmxpYyBDQVJpbmdCdWZmZXJTdG9yYWdl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB+Q0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3RvcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCmluZGV4IGI5ODAzYmZhMDIzMjQzNTdjMGRmZTA0NzMx
M2QyYzNlYzMwNGNiOTIuLjdhNDdmNTYwOGJiYjZkZTlkMzc3M2IxN2U5OGU0NzY0YTI0MjIyYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5
ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyQ0Y+
KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckNGPihkYXRh
LCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyQ0Y6OktleWVkRGVjb2RlckNGKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDFhNjI3ZWEwMGI5MmNiYWE2Y2Y3YzM1NWQ1ZTQ0NWVjNDg2
MWE0MTIuLjQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVy
PiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEtleWVkRW5jb2RlckNGPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2RlckNG
PigpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0
ZURpY3Rpb25hcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFp
blRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFp
blRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCmluZGV4IGI2ODkyMjgwNWU1ZDM3M2RlN2YwYWVkNzg5
MDgyNWFjY2NjMTIwMzkuLjA3YTQ1Y2FkNzhiNmQ0MzdmYWE4NDI1MjY5OWMwZDQ4NmQ3OGVkNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hh
cmVkVGltZXJDRi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBQb3dlck9i
c2VydmVyKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIFBvd2VyT2JzZXJ2ZXIqIHBv
d2VyT2JzZXJ2ZXI7CiAgICAgaWYgKCFwb3dlck9ic2VydmVyKQotICAgICAgICBwb3dlck9ic2Vy
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIp
LnJlbGVhc2UoKTsKKyAgICAgICAgcG93ZXJPYnNlcnZlciA9IG1ha2VVbmlxdWU8UG93ZXJPYnNl
cnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CiAjZWxpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNh
dGlvbiA9IGZhbHNlOwogICAgIGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0
aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDQ3MDVlZDE1YTVjNThjNDEx
YzQ5ZjM0ZmFmNzNlZWIzMDdiMmM5NDguLmFiOTVmZmQwZjg3MWVjMDQ2MDhkNTA5NjQ2YjQzZTNk
MDM0OWY1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC02NSw3ICs2NSw3IEBA
IGJvb2wgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IE5ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE5ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyOjppbml0aWFsaXplKGNvbnN0IFVSTCogdXJsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbQppbmRleCBhZTBiZDIwOWNjZDZmMzE3YzkxOTMyNWExNmExOGE5OWNkMTU3
MmU0Li4wZDJhNjIxODZiNWE1NGUyYjg1MWZmOTZkNTI4MTAxZjg0NjZmNDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5tbQpAQCAtNTAsNyArNTAsNyBAQCBib29sIFBhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRl
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlcj4oKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkhhbmRsZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggZTgzNjljNmU1MDE2ZTIzY2Y4
NzNiOTUzN2QyYWZiNGYwYmM2ODUyMi4uOGZlMzhhZDBjY2UyZmQ1NDJkMjk3MDE3ZmRhMmQxY2Iz
NTViNzcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xs
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1
cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3IK
ICAgICAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZT4oKTsKKyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBtYWtlVW5pcXVl
PFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwogICAgIH0KIAogICAgIGlmIChzbmFwUG9pbnRz
LmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBTdGF0ZS0+c25hcE9mZnNldHNGb3JBeGlzKG90aGVy
U2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKaW5kZXggNTAzZjk3YjkyMDE4ZGE4N2MyNDg4OTFiMjI2NzlhYmI3MDA1YjMwMC4uOTZj
ODUxMjkzNWFiOWI2OThlODk4NTUxNjNiYjZkMjJhYzliODJlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2
YXRlPiBDRE1GYWN0b3J5Q2xlYXJLZXk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
CiAjZWxzZQogICAgIEFTU0VSVChzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKTsKICNlbmRp
ZgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVDbGVhcktleT4oKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CiB9CiAKIGJvb2wgQ0RN
RmFjdG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IGQ0NzMwNGM5NWIyNmVmMjA0ZjVkYTRh
ZGNiYjhhMDg2NGRlMThiYjMuLjBiOTEwNjQ5Y2E0YTQ3YTkxNWQ1NDhjOWQ5NGFmZmYzMzUzNTky
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1GYWN0b3J5Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMg
Q0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIENETUZhY3RvcnlDbGVhcktleSYgc2luZ2xldG9uKCk7CiAKQEAgLTU0LDYgKzU1LDcg
QEAgY2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUZhY3Rvcnkgewog
fTsKIAogY2xhc3MgQ0RNUHJpdmF0ZUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETVByaXZhdGUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVByaXZhdGVD
bGVhcktleSgpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVDbGVhcktleSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2Ev
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KaW5kZXggZjcyMGNmZDMzNDNmOWJhZDMz
YTQ5MTlhNzhmODY2ZjlkODYyYTBhZC4uNWE2ZWI0MDQzOWVmNTkwNTcyYTdjMjllZmMzMzhkOTJm
MjM5YzVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBA
IC02MSw3ICs2MSw3IEBAIHZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRy
b2xsZXJEaWRDb25uZWN0KEdDQ29udHJvbGxlciAqY29udHJvbGxlCiAgICAgTE9HKEdhbWVwYWQs
ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciBjb250cm9sbGVyICVwIGFkZGVkIiwgY29u
dHJvbGxlcik7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWRE
ZXZpY2UoKTsKLSAgICBhdXRvIGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdhbWVDb250cm9s
bGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOworICAgIGF1dG8gZ2FtZXBhZCA9IG1ha2VV
bmlxdWU8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPihjb250cm9sbGVyLCBpbmRleCk7CiAKICAgICBp
ZiAobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgbV9nYW1lcGFkVmVj
dG9yLmdyb3coaW5kZXggKyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWQuaAppbmRleCAxNWYwNGM3MDhlOTAwN2JiNGRhZGVlNTQzNWMzNTdm
MDJmNTMxYzkzLi5hMjUyMzRmYjg3NWE3NTFjNjNjMzdiYTZhNWNlZTdkNDUzNGQ1YTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCkBA
IC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBISURHYW1lcGFk
RWxlbWVudCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEhJREdh
bWVwYWRFbGVtZW50KGRvdWJsZSB0aGVNaW4sIGRvdWJsZSB0aGVNYXgsIElPSElERWxlbWVudFJl
ZiBlbGVtZW50KQogICAgICAgICA6IG1pbih0aGVNaW4pCiAgICAgICAgICwgbWF4KHRoZU1heCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVw
YWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDU3NDM5MWI1YzExMWEzMmJlOTEyNWNhNmNlMDYwMGY1
ZDYzODIyNTcuLjZkMTRiNmIyMTYxMGI4NmNlNGMwMDEzZTUwOTExYjg4Zjk1ZTFhNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZFByb3ZpZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSElER2FtZXBhZFByb3Zp
ZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiAgICAgTE9HKEdhbWVwYWQs
ICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKIAogICAgIHVu
c2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxISURHYW1lcGFkPiBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1ZTxISURHYW1l
cGFkPihkZXZpY2UsIGluZGV4KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gZ2Ft
ZXBhZCA9IG1ha2VVbmlxdWU8SElER2FtZXBhZD4oZGV2aWNlLCBpbmRleCk7CiAKICAgICBpZiAo
bV9nYW1lcGFkVmVjdG9yLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgbV9nYW1lcGFkVmVjdG9y
Lmdyb3coaW5kZXggKyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IGE0YTMwYjUyYWJlNDhhZjg1MGRj
N2M3NDdhM2JjZGUxZDUxZmRhNWYuLjBlNTk3MjMyMWI1ZjczZjU3MmJkNzk2NTg4MTFmMDAzYTk1
ZWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRE
ZWNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZERlY29kZXJHZW5lcmljLmNwcApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBLZXllZERlY29k
ZXJHZW5lcmljOjpEaWN0aW9uYXJ5IHsKICAgICB1c2luZyBOb2RlID0gVmFyaWFudDxWZWN0b3I8
dWludDhfdD4sIGJvb2wsIHVpbnQzMl90LCB1aW50NjRfdCwgaW50MzJfdCwgaW50NjRfdCwgZmxv
YXQsIGRvdWJsZSwgU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4sIHN0ZDo6dW5p
cXVlX3B0cjxBcnJheT4+OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBh
ZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBzdGQ6Om1h
a2VfdW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQorICAgIHZvaWQgYWRk
KGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgbWFrZVVuaXF1
ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KICAgICBOb2RlJiBnZXQoY29uc3Qg
U3RyaW5nJiBrZXkpIHsgcmV0dXJuICptX21hcC5nZXQoa2V5KTsgfQogCiBwcml2YXRlOgpAQCAt
NzcsNyArNzcsNyBAQCBzdGF0aWMgYm9vbCByZWFkU2ltcGxlVmFsdWUoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciYgZGVjb2RlciwgS2V5ZWREZWNvZGVyR2VuZQogCiBzdGQ6OnVuaXF1ZV9wdHI8
S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVy
R2VuZXJpYz4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVy
R2VuZXJpYz4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCkBAIC04Niw3ICs4
Niw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZSB0
eXBlOwogICAgIFN0cmluZyBrZXk7CiAKLSAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gc3RkOjptYWtl
X3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgIG1fcm9vdERpY3Rpb25hcnkgPSBtYWtlVW5pcXVl
PERpY3Rpb25hcnk+KCk7CiAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG1fcm9vdERpY3Rp
b25hcnkuZ2V0KCkpOwogCiAgICAgYm9vbCBvayA9IHRydWU7CkBAIC0xNDQsNyArMTQ0LDcgQEAg
S2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBhdXRvKiBjdXJyZW50RGljdGluYXJ5ID0gbV9kaWN0aW9uYXJ5
U3RhY2subGFzdCgpOwotICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtl
X3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0g
bWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2su
YXBwZW5kKG5ld0RpY3Rpb25hcnkuZ2V0KCkpOwogICAgICAgICAgICAgY3VycmVudERpY3RpbmFy
eS0+YWRkKGtleSwgV1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTE1NiwxMyArMTU2LDEzIEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2Rlckdl
bmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICBvayA9
IHJlYWRTdHJpbmcoZGVjb2Rlciwga2V5KTsKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBcnJheT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBtYWtlVW5pcXVlPEFy
cmF5PigpOwogICAgICAgICAgICAgbV9hcnJheVN0YWNrLmFwcGVuZChuZXdBcnJheS5nZXQoKSk7
CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmFkZChrZXksIFdURk1vdmUo
bmV3QXJyYXkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5BcnJheUVsZW1lbnQ6IHsKLSAgICAgICAg
ICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4o
KTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9uYXJ5Lmdl
dCgpKTsKICAgICAgICAgICAgIG1fYXJyYXlTdGFjay5sYXN0KCktPmFwcGVuZChXVEZNb3ZlKG5l
d0RpY3Rpb25hcnkpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggMmY4
NDEwNDc0NjM5NTU4ZjI5NWU4MWE1MTcxOWE4NzM0YjMyZDU4YS4uMjFjYzFlYmU0YTkwMWExM2M3
NDQwM2RjMDFjZjJmYzgxODEzMDEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5
ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXll
ZEVuY29kZXJHZW5lcmljPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2Rlckdl
bmVyaWM+KCk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4IDdhZTY1YzVhOGQzMDllM2Rl
ZWY1M2NlOGNmMWUzMDI0MjZkMjdjMTQuLjIwOGFmN2I4NDc5ZWNhZWY1NTMwY2NjNTU3YjczNmVi
YWJjYmNiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBzdGF0aWMg
Y29uc3QgU2Vjb25kcyBzY3JvbGxDYXB0dXJlVGhyZXNob2xkIHsgMTUwX21zIH07CiAKIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAg
ICwgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRv
ckdlbmVyaWM6Om92ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lckZpcmVkKQogewotICAgIG1f
a2luZXRpY0FuaW1hdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yz4obV9zY3JvbGxhYmxlQXJlYSwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAg
IG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4o
bV9zY3JvbGxhYmxlQXJlYSwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogI2lmIEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQogICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAg
ICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9u
KTsKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3VyZVNt
b290aFNjcm9sbGluZ0FuaW1hdGlvbigpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlv
biwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAgIG1fc21vb3RoQW5pbWF0aW9u
ID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xsYWJsZUFyZWEsIG1f
Y3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAgICAgICAg
IHVwZGF0ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRpb24pKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCmluZGV4IGU3
ZGQxOTE0MDQxNzE5NjhmOTBkNmZlYTMzNTRlMTRjZWY2ZjU1NjcuLjM2MWU5ZGYzMjQ1YmU1NjVi
MGUyYTQxZGYxOGIyNmZmYmM3MTljZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6
ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29kZXJHbGliPihkYXRhLCBzaXplKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJHbGliPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWRE
ZWNvZGVyR2xpYjo6S2V5ZWREZWNvZGVyR2xpYihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCmluZGV4IDc0MDRiY2JkNDQ5YWE0OTIxYjhjZTJiN2UwMTg0NDk1MDEwNmY2ODAuLjcw
ZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+
IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
S2V5ZWRFbmNvZGVyR2xpYj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJH
bGliPigpOwogfQogCiBLZXllZEVuY29kZXJHbGliOjpLZXllZEVuY29kZXJHbGliKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBh
MjNlMjE5ZDFhNjg2ZGE3MzBjMDExYmUwZDEyNDljY2UwYmE0NWNkLi5lZmNjYzVjNmY3OWE1YTlh
MmVlNDc3MGJmNWNjOTk0Zjg0MmI5NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6Y2xlYXJUaW1lcigpCiB2b2lkIEJpdG1hcEltYWdlOjpzdGFydFRpbWVyKFNlY29u
ZHMgZGVsYXkpCiB7CiAgICAgQVNTRVJUKCFtX2ZyYW1lVGltZXIpOwotICAgIG1fZnJhbWVUaW1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmQml0bWFwSW1hZ2U6OmFkdmFuY2VB
bmltYXRpb24pOworICAgIG1fZnJhbWVUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAm
Qml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOwogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRP
bmVTaG90KGRlbGF5KTsKIH0KIApAQCAtNTIwLDcgKzUyMCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OnJlc2V0QW5pbWF0aW9uKCkKIHZvaWQgQml0bWFwSW1hZ2U6OmRlY29kZShXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZGVjb2RpbmdDYWxsYmFja3MpCi0g
ICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGdW5j
dGlvbjx2b2lkKCk+LCAxPj4oKTsKKyAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IG1ha2VV
bmlxdWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOwogCiAgICAgbV9kZWNvZGluZ0Nh
bGxiYWNrcy0+YXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAK
aW5kZXggMGQzNTU2MTg5NzBmYjI3N2Y3MmU3ODk5MGUzZjRmMmEyMTZmYmM2OS4uMzUzZmNhNjYw
MTMyNjRiMDI0NjJhNTcxMjI0ZDA1YTE4MWQ5Njg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBA
IC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFRleHRMYXlvdXQgewogICAgIFRleHRMYXlvdXQoUmVuZGVy
VGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHhQb3MpCiAgICAgICAg
IDogbV9mb250KGZvbnQpCiAgICAgICAgICwgbV9ydW4oY29uc3RydWN0VGV4dFJ1bih0ZXh0LCB4
UG9zKSkKLSAgICAgICAgLCBtX2NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4VGV4
dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUpKQorICAgICAgICAsIG1fY29udHJvbGxl
cihtYWtlVW5pcXVlPENvbXBsZXhUZXh0Q29udHJvbGxlcj4obV9mb250LCBtX3J1biwgdHJ1ZSkp
CiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRQb2ludC5oCmluZGV4IDcyMDQ1M2Q5ZjA0NmQ3OWY0OGEwOWI4MWFmNzAwMGY0ZGUzYmUwMjUu
LmNlZmQ4ZDQyMjQ0ZDA2ZmNiODI0YmU1ZTNiNzM0MTljZDQ5OGE0ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKQEAgLTYzLDYgKzYzLDcgQEAg
Y2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBGbG9hdFBvaW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGbG9hdFBvaW50KCkgeyB9
CiAgICAgRmxvYXRQb2ludChmbG9hdCB4LCBmbG9hdCB5KSA6IG1feCh4KSwgbV95KHkpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAxODRiNDRiMDdh
NDEyMjE2YjllYzU5ODQyMmYwNzg3ZjBlNmM3YWViLi5lMGI0OWYyNDdjMjAwOWJkZDVmMWQwYzhl
YmE3YWQ2YzdlYjhjYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIEdseXBoRGF0YSBGb250OjpnbHlwaERhdGFGb3JDaGFy
YWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpIGNvbnN0CiBhdXRvIEZvbnQ6OmVuc3VyZURlcml2ZWRG
b250RGF0YSgpIGNvbnN0IC0+IERlcml2ZWRGb250cyYKIHsKICAgICBpZiAoIW1fZGVyaXZlZEZv
bnREYXRhKQotICAgICAgICBtX2Rlcml2ZWRGb250RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVy
aXZlZEZvbnRzPigpOworICAgICAgICBtX2Rlcml2ZWRGb250RGF0YSA9IG1ha2VVbmlxdWU8RGVy
aXZlZEZvbnRzPigpOwogICAgIHJldHVybiAqbV9kZXJpdmVkRm9udERhdGE7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCAyZTU4YmQ2OWViYjUzOTFlMDM2
ZDI4YzI3MDJjMWY0NTA1MDhiMzEyLi5lZjYwNTIyMDE5NzA4ZWYxNWYwODI5ZmE3ZDljNTY5ODE1
MmM5NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0zNDUs
NyArMzQ1LDcgQEAgQUxXQVlTX0lOTElORSBGbG9hdFJlY3QgRm9udDo6Ym91bmRzRm9yR2x5cGgo
R2x5cGggZ2x5cGgpIGNvbnN0CiAKICAgICBib3VuZHMgPSBwbGF0Zm9ybUJvdW5kc0ZvckdseXBo
KGdseXBoKTsKICAgICBpZiAoIW1fZ2x5cGhUb0JvdW5kc01hcCkKLSAgICAgICAgbV9nbHlwaFRv
Qm91bmRzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4o
KTsKKyAgICAgICAgbV9nbHlwaFRvQm91bmRzTWFwID0gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NN
YXA8RmxvYXRSZWN0Pj4oKTsKICAgICBtX2dseXBoVG9Cb3VuZHNNYXAtPnNldE1ldHJpY3NGb3JH
bHlwaChnbHlwaCwgYm91bmRzKTsKICAgICByZXR1cm4gYm91bmRzOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMGE2MmEyNzViYzY5
MmVmMzk5MTE0MGUwMjhmNTgwMDQyMWQwYzcxMS4uMzcwOWI0MWViMmI3YmQwYmY3YjEwMmFjNWRi
ZWZlMmY3NzczYWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENh
Y2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8K
ICAgICAgICAgICAgICAgICBpdCA9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgpLmZpbmQoa2V5KTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gZm9udFBsYXRmb3JtRGF0YUNhY2hlKCkuZW5k
KCkpOwogICAgICAgICAgICAgICAgIGlmIChmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFt
ZSkKLSAgICAgICAgICAgICAgICAgICAgaXQtPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxGb250
UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpOworICAgICAg
ICAgICAgICAgICAgICBpdC0+dmFsdWUgPSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KCpm
b250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5jcHAKaW5kZXggNzI3NGRiMGRiMzJiM2I0MWIzZTBlMWIxZWQwZmIyYWVhOGIzNmEzYi4u
NjQ4MThmNGI1MTU1ZDQyYmZhYzgxYjYxZjRiNWY5Y2RlYTU0NTJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjU0LDcgKzI1
NCw3IEBAIHN0YXRpYyBSZWY8Rm9udENhc2NhZGVGb250cz4gcmV0cmlldmVPckFkZENhY2hlZEZv
bnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpCiAgICAgICAgIHJldHVybiBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLT5mb250cy5nZXQoKTsKIAogICAgIGF1dG8mIG5ld0VudHJ5ID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICBuZXdFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8
Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtleSksIEZvbnRDYXNjYWRlRm9udHM6OmNy
ZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKKyAgICBuZXdFbnRyeSA9IG1ha2VVbmlxdWU8
Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtleSksIEZvbnRDYXNjYWRlRm9udHM6OmNy
ZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKICAgICBSZWY8Rm9udENhc2NhZGVGb250cz4g
Z2x5cGhzID0gbmV3RW50cnktPmZvbnRzLmdldCgpOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwgPSA1MDsKQEAgLTMyNiw5ICszMjYsOSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlz
cGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdD4oKTsKICAgICBHcmFwaGljc0NvbnRleHQgcmVjb3JkaW5nQ29udGV4dChbJl0oR3JhcGhp
Y3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsICpkaXNw
bGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3Bs
YXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgp
LCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgfSk7CiAgICAgCiAgICAgRmxvYXRQb2ludCBzdGFy
dFBvaW50KHN0YXJ0WCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4IGRiNzQzMDJlOWRhYTRlYjUyYzBjZTA4
MWZkNTYwNTI3OTU3OGZiZjQuLjEyYWM4MzdmY2QyNDY1ZjlmODFkZWIwNjg3YWE3NzZkNWVhMDY0
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlRm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlRm9udHMuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgRm9udENhc2NhZGVGb250czo6
R2x5cGhQYWdlQ2FjaGVFbnRyeTo6c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hh
CiB7CiAgICAgQVNTRVJUKCFnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKS5nbHlwaCk7
CiAgICAgaWYgKCFtX21peGVkRm9udCkgewotICAgICAgICBtX21peGVkRm9udCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWl4ZWRGb250R2x5cGhQYWdlPihtX3NpbmdsZUZvbnQuZ2V0KCkpOworICAgICAg
ICBtX21peGVkRm9udCA9IG1ha2VVbmlxdWU8TWl4ZWRGb250R2x5cGhQYWdlPihtX3NpbmdsZUZv
bnQuZ2V0KCkpOwogICAgICAgICBtX3NpbmdsZUZvbnQgPSBudWxscHRyOwogICAgIH0KICAgICBt
X21peGVkRm9udC0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgZ2x5cGhEYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0
cmljc01hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNz
TWFwLmgKaW5kZXggMjU5ZTk3NTMzY2FlZGNmYzE0NWZmN2FiNDI4ZWExNjlmNjRiMTU5NC4uNzll
MmY1Mzg4YzQ2ZTU4OTIzMDE2MWM0NzQ1MjU0MTkyNDdlODJhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKQEAgLTEzMCwxMCAr
MTMwLDEwIEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHR5cGVuYW1lIEdseXBoTWV0cmljc01hcDxUPjo6
R2x5cGhNZXRyaWNzUGFnZSYgR2x5cGhNZXRyaWNzTWFwCiAgICAgfQogCiAgICAgaWYgKCFtX3Bh
Z2VzKQotICAgICAgICBtX3BhZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPGludCwgc3Rk
Ojp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4oKTsKKyAgICAgICAgbV9wYWdlcyA9IG1h
a2VVbmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+
KCk7CiAKICAgICBhdXRvJiBwYWdlID0gbV9wYWdlcy0+ZW5zdXJlKHBhZ2VOdW1iZXIsIFtdIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4odW5rbm93
bk1ldHJpY3MoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+
KHVua25vd25NZXRyaWNzKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4g
KnBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDFiNDIyODZkZGY0NjVjMGUyYjEy
NGQ4YWZkZjBmN2NkNjQ3N2NiYjcuLmUzM2Y4ZmJlNzM4OTJlMzRiOGRlZjgzNmQ0NmY1YzcwYzc5
YzYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcFRleHR1cmVHTDsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyU3R5bGUpOwogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKaW5kZXggOTRhYWMxZGY4MzU2YmRiMTBkZjdkMDg2ZmFjZTI2YzFlMzcxODMyNi4uYzk2ZWNh
M2ExNWVkNjUwNTQ5NGYyMzA4ZjVlNTdjNzkwYTcxZTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTM0Myw3ICszNDMs
NyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbWF0cml4KQogICAgIGlmIChtX3RyYW5zZm9ybSkKICAgICAgICAgKm1fdHJhbnNm
b3JtID0gbWF0cml4OwogICAgIGVsc2UKLSAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAgICBtX3RyYW5zZm9y
bSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBHcmFwaGljc0xheWVyOjpjaGlsZHJlblRyYW5zZm9ybSgp
IGNvbnN0CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJl
blRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogICAgIGlmICht
X2NoaWxkcmVuVHJhbnNmb3JtKQogICAgICAgICAqbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1hdHJp
eDsKICAgICBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAgICBtX2NoaWxkcmVuVHJh
bnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKIH0KIAog
dm9pZCBHcmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYg
bGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmgKaW5kZXggMDA5ZDQ4Njg5NWQ1Njg2MjU0MDExZGY1NjAwYTcyMTEyNDMwZTYyZi4uN2Ex
ZmVhYWM3OWU3OGJhODhmY2FkY2I4NWUzMjk5ZmQ3OWEwMDQzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMTExLDcgKzExMSw3
IEBAIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlv
blZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWU7IH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBUcmFuc2Zvcm1BbmltYXRpb25W
YWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5p
bWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAg
ICAgfQogCiAgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtQW5pbWF0
aW9uVmFsdWUmIG90aGVyKQpAQCAtMTYzLDcgKzE2Myw3IEBAIGNsYXNzIEZpbHRlckFuaW1hdGlv
blZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
bmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9
CiAKICAgICBGaWx0ZXJBbmltYXRpb25WYWx1ZShjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYg
b3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXgg
ZTQ0YTYxZTIyNGNhMTE5NGQwOTE4ZDQ0NDNiZWE3YzFlN2U0YTBlMS4uYzIxZmUyOWQwZjA1ZmRk
ZTM5ZTBjNGJmNGI2MWExYzk3NmNjYjEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgSW1hZ2U6OmNvbXB1dGVJ
bnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmlu
c2ljCiB2b2lkIEltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KCkKIHsKICAgICBp
ZiAoIW1fYW5pbWF0aW9uU3RhcnRUaW1lcikKLSAgICAgICAgbV9hbmltYXRpb25TdGFydFRpbWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3RhcnRBbmltYXRpb24p
OworICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhp
cywgJkltYWdlOjpzdGFydEFuaW1hdGlvbik7CiAgICAgaWYgKG1fYW5pbWF0aW9uU3RhcnRUaW1l
ci0+aXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1l
ci0+c3RhcnRPbmVTaG90KDBfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNzU3ZjA5NTY3ZGM1ZGZkZjViZTAyNjM5NjM5ZDFl
ZmVjNzE4YzBkYi4uYWJlODY5NDE5NGZmN2MxNzUxMDBiNjk4ODA0YTEyNDBiZDYyYzg0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApA
QCAtMTQ4LDcgKzE0OCw3IEBAIGNsYXNzIE51bGxNZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBw
dWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgIGZsb2F0IG1heFRpbWVT
ZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbWluVGltZVNl
ZWthYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQotICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9CiAKICAgICBkb3VibGUgc2Vla2FibGVUaW1l
UmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBk
b3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQpAQCAt
MzU1LDcgKzM1NSw3IEBAIFJlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRp
YVBsYXllckNsaWVudCYgY2xpZW50KQogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxh
eWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxv
YWRUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQotICAgICwgbV9w
cml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCisg
ICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkK
IHsKIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4
dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICNlbmRpZgog
ICAgICAgICBtX3ByaXZhdGUtPmxvYWQobV91cmwuc3RyaW5nKCkpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG1fcHJpdmF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0
ZT4odGhpcyk7CisgICAgICAgIG1fcHJpdmF0ZSA9IG1ha2VVbmlxdWU8TnVsbE1lZGlhUGxheWVy
UHJpdmF0ZT4odGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRl
ZCh0aGlzKTsKICAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRl
ZCh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDAwZDg1YTQ5OTY0MmIzZjUyMzdiMzBiZmY1
ZjRlNmI0MjkxMzBlY2QuLjFkMmZjMDA5MjA0YThjMDI1NTQxYjJhMmQ3YzVmMGQwYmU1Yzk5Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCkBAIC0xMjksNyArMTI5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlIHsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29y
a1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhNZWRpYVRpbWVT
ZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSA/IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9CisgICAg
dmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGlt
ZSgpID8gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIDA7IH0KICAgICB2aXJ0dWFsIE1lZGlhVGltZSBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtYXhUaW1lU2Vla2FibGUo
KSk7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVy
biAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRo
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGls
aXRpZXMuY3BwCmluZGV4IDNlNjg4MDU1YmRjYzBiMTBlNDE2MGNmMTQwZDRmYWNlOTIzMjBhNjUu
LjVhZDkzMzQ5YmZiNDBkYTRmZjMwOGFkYTk4NDk3ZmMzNzVlMTA4YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCkBAIC04OSw3
ICs4OSw3IEBAIEZsb2F0UG9pbnRHcmFwaDo6Tm9kZSogRmxvYXRQb2ludEdyYXBoOjpmaW5kT3JD
cmVhdGVOb2RlKEZsb2F0UG9pbnQgcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gdGVzdE5vZGUu
Z2V0KCk7CiAgICAgfQogCi0gICAgbV9hbGxOb2Rlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxG
bG9hdFBvaW50R3JhcGg6Ok5vZGU+KHBvaW50KSk7CisgICAgbV9hbGxOb2Rlcy5hcHBlbmQobWFr
ZVVuaXF1ZTxGbG9hdFBvaW50R3JhcGg6Ok5vZGU+KHBvaW50KSk7CiAgICAgcmV0dXJuIG1fYWxs
Tm9kZXMubGFzdCgpLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVnaW9uLmNwcAppbmRleCA5ZGNlZTg3NjE2MjVjMDE0ODhiNGQ5MGQxYWYyMmUzNTQzNWQ0
YTVlLi42YTcwMWMxYTEyODk3OWQ0Yzk0OGIxYTdiYWI1NjhmMTAyNDdjZjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKQEAgLTY0Niw3ICs2NDYsNyBA
QCB2b2lkIFJlZ2lvbjo6c2V0U2hhcGUoU2hhcGUmJiBzaGFwZSkKICAgICB9CiAKICAgICBpZiAo
IW1fc2hhcGUpCi0gICAgICAgIG1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZN
b3ZlKHNoYXBlKSk7CisgICAgICAgIG1fc2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBlPihXVEZNb3Zl
KHNoYXBlKSk7CiAgICAgZWxzZQogICAgICAgICAqbV9zaGFwZSA9IFdURk1vdmUoc2hhcGUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCA3OTYzM2Zk
YjZhZGYzNGZmZmVlOGY4MjY3NDgzYjhjZmY1Y2UxZjNjLi5iYzM5YzMwMDAwZWE4YjZiNWE5ZTYw
Y2YyYmM1YWUxODY2NjRiNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZWdpb24uaApAQCAtOTEsNiArOTEsNyBAQCBjbGFzcyBSZWdpb24gewogICAgIH07CiAKICAgICBj
bGFzcyBTaGFwZSB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKICAgICAgICAgU2hhcGUoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFNoYXBlKGNvbnN0IEludFJl
Y3QmKTsKQEAgLTE0OCw3ICsxNDksNyBAQCBjbGFzcyBSZWdpb24gewogICAgICAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlJiwgY29uc3QgU2hhcGUmKTsKICAgICB9OwogCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjb3B5U2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3No
YXBlID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oKm1fc2hhcGUpIDogbnVsbHB0cjsgfQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFw
ZSA/IG1ha2VVbmlxdWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KICAgICB2b2lkIHNl
dFNoYXBlKFNoYXBlJiYpOwogCiAgICAgSW50UmVjdCBtX2JvdW5kczsKQEAgLTI4OSw3ICsyOTAs
NyBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIGRlY29kZXIgPj4gc2hhcGU7CiAgICAgICAgIGlmICghc2hhcGUpCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZWdpb24ubV9zaGFwZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2hhcGU+KFdURk1vdmUoKnNoYXBlKSk7CisgICAgICAgIHJlZ2lvbi5tX3NoYXBl
ID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92ZSgqc2hhcGUpKTsKICAgICB9CiAKICAgICByZXR1
cm4geyByZWdpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcAppbmRleCAxZTRlN2ZhYzM2Yzdj
MzBhNjU2ZjFlZmQwMGFhY2U2ZDRjOTVjZWRhLi42OTM5ZjkxN2FlNmZhYjEzZWMxYzkxZDRhYTgx
NTU2NmE5MTcwZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCkBAIC00Niw3ICs0Niw3IEBA
IGNsYXNzIE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiA6IHB1YmxpYyBUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbiB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4g
VGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNs
aWVudCYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TnVsbFRleHRUcmFja1JlcHJl
c2VudGF0aW9uPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE51bGxUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbj4oKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZlbG9jaXR5RGF0YS5oCmluZGV4IDdhZWI3NTliMzRiMThhMWU4NDY4M2YyOWM2MTZh
NmNkYjAyNTc0ZDguLjZhMDZjYzZlYmEzNGI5NTlkMmYxODYwMjI5ZTFmMmYzOGZmMzE5MzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCkBA
IC02NSw2ICs2NSw3IEBAIHN0cnVjdCBWZWxvY2l0eURhdGEgIHsKIFdFQkNPUkVfRVhQT1JUIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFZlbG9jaXR5RGF0YSYpOwog
CiBjbGFzcyBIaXN0b3JpY2FsVmVsb2NpdHlEYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBIaXN0b3JpY2FsVmVsb2NpdHlEYXRhKCkgPSBkZWZhdWx0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHQzREFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwCmluZGV4IDc3YTNlMThjMWM2YzJlMjdk
ZDYzYWUyOTZmNmVjOWExZWEyZmFlMWYuLjYxMjYwZTljODNkYzRhNTUyODU3MWM5OWQ0YTI3MDVi
MTZjYTRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwCkBAIC0zNjIsNyAr
MzYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRl
cHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7
CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXh0ZW5zaW9uczNEQU5HTEU+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7Cisg
ICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNEQU5HTEU+KHRoaXMs
IGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCmluZGV4IGE5ZWNk
MzIxMzZkYTg3NzAyZjQ3OGFmY2Q4YWNjOGViOTdjMjM5NDAuLjk5ZGRkZDhmODUwMjczMDNiYjhh
NzYzZWNhYzJiODY5ODgyZmE5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM7CiAKIGNsYXNzIEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwoQVZQbGF5ZXJJdGVtVHJhY2sqKTsK
ICAgICBleHBsaWNpdCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWQXNzZXRUcmFjayopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4
IDVjZDc3NzJhYzJlZTFjZWE5MDEwZTgzMzcxZWE2YWFlZjdmMDY5NTguLjZiM2M5MjJlNmFlYmU1
OTIwYWU2NWU1N2FmMDVlZGU0YWQwMzc0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTMxMywxMiArMzEzLDEyIEBAIHZvaWQgQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoQ01JdGVtQ291bnQgbWF4RnJhbWVzLCBj
b25zdCBBdWRpb1N0cmVhCiB7CiAgICAgQVNTRVJUKG1heEZyYW1lcyA+PSAwKTsKIAotICAgIG1f
dGFwRGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOworICAgIG1fdGFwRGVzY3JpcHRpb24gPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpw
cm9jZXNzaW5nRm9ybWF0KTsKICAgICBpbnQgbnVtYmVyT2ZDaGFubmVscyA9IHByb2Nlc3NpbmdG
b3JtYXQtPm1DaGFubmVsc1BlckZyYW1lOwogICAgIGRvdWJsZSBzYW1wbGVSYXRlID0gcHJvY2Vz
c2luZ0Zvcm1hdC0+bVNhbXBsZVJhdGU7CiAgICAgQVNTRVJUKHNhbXBsZVJhdGUgPj0gMCk7CiAK
LSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24+KCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsKICAg
ICBtX291dHB1dERlc2NyaXB0aW9uLT5tU2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CiAgICAgbV9v
dXRwdXREZXNjcmlwdGlvbi0+bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwogICAg
IG1fb3V0cHV0RGVzY3JpcHRpb24tPm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0
aXZlRmxvYXRQYWNrZWQ7CkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3Ry
ZWEKICAgICAvLyBNYWtlIHRoZSByaW5nYnVmZmVyIGxhcmdlIGVub3VnaCB0byBzdG9yZSBhdCBs
ZWFzdCB0d28gY2FsbGJhY2tzIHdvcnRoIG9mIGF1ZGlvLCBvciAxcywgd2hpY2hldmVyIGlzIGxh
cmdlci4KICAgICBzaXplX3QgY2FwYWNpdHkgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+
KDIgKiBtYXhGcmFtZXMpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGtSaW5nQnVmZmVyRHVyYXRpb24g
KiBzYW1wbGVSYXRlKSk7CiAKLSAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENB
UmluZ0J1ZmZlcj4oKTsKKyAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZl
cj4oKTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bigqcHJvY2Vzc2luZ0Zvcm1hdCksIGNhcGFjaXR5KTsKIAogICAgIC8vIEF1ZGlvQnVmZmVyTGlz
dCBpcyBhIHZhcmlhYmxlLWxlbmd0aCBzdHJ1Y3QsIHNvIGNyZWF0ZSBvbiB0aGUgaGVhcCB3aXRo
IGEgZ2VuZXJpYyBuZXcoKSBvcGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5jcHAKaW5kZXggMzYxYTk5MmYwYzQ2NTBjZjJiOTYyOGE2NDJlOTdiNWRiYTBlMmEz
Yy4uNGZjNjc4N2RkOGQ5MDdjYWQ2YTI3N2YzOWIxZWQzMmVkNjc5YTZkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC0yMzQsNyArMjM0LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPENETVByaXZhdGU+IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3Jl
YXRlQ0RNKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3Rl
bSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nPigpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZz4oKTsKIH0KIAogYm9vbCBDRE1GYWN0b3J5RmFp
clBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCA4OTE4ZTgwZTBj
MzkwZDdlOGRhY2ExOTAzOTQ3OWEwZDBmNjk1YWQ4Li41Mzg2OTY5Zjk0OTc2ZjM4MzY4MDE4NzQx
YmFmZDEyNTUxZTI4Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
aApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRm91ckNDOwog
CiBjbGFzcyBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNRmFj
dG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyYgc2luZ2xldG9uKCk7CiAKQEAgLTQ5LDYgKzUw
LDcgQEAgY2xhc3MgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENE
TUZhY3RvcnkgewogfTsKIAogY2xhc3MgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFs
IDogcHVibGljIENETVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Q
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggNGE1MGViNDFhNTgzNjgzZjY2YTY3NjIy
OTU0NmM1ODAxYjIwYjU4OC4uZDgxYmNhMzU0OTAzOTE4YTFiZGEwYWRkZDk1OGQ1OTQzZjcwMWIx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIENETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakM7CiAKIGNsYXNzIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMg
OiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhM
ZWdhY3lDRE0qIGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjYzA4YTlhM2I1MWNi
ZjdhYjE5NzQyMDJhOThiMTY5ZGI0M2MxMDEuLjBjZDAxMjlhM2NkOWVhZjg2M2FkNDc4OTgzODUw
MzFkOGI3NmVmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCkBAIC0xNDcsMTAgKzE0NywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVn
YWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lv
bihMZQogI2VuZGlmCiAgICAgCiAgICAgaWYgKHNob3VsZFVzZUFWQ29udGVudEtleVNlc3Npb24g
JiYgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpCi0gICAgICAg
IHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
PihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVl
KCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVl
PENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUo
KS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7
CiAgICAgZWxzZQogI2lmIEhBVkUoQVZTVFJFQU1TRVNTSU9OKQotICAgICAgICBzZXNzaW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihXVEZNb3ZlKHBhcmFt
ZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCAqdGhpcywgY2xpZW50KTsKKyAgICAgICAgc2Vzc2lv
biA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0
ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CiAjZWxzZQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveC5oCmluZGV4IGU0NjAxNDgzMDVjZWVkMWI1NjQ4NDE5OTZjYjlmYzM0
Y2RjM2FiNTIuLjE0N2MzNzlmMTI3MDY4MmU1NWZkMjE1Y2UyM2EzOWVhMTI0OTVhZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09G
YWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggZmluYWwgOiBwdWJs
aWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgp
IHsgcmV0dXJuICJmcHNpIjsgfQogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKICAg
ICBGb3VyQ0MgbV9zY2hlbWU7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCBmaW5h
bCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5
cGVOYW1lKCkgeyByZXR1cm4gImZrcmkiOyB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCA6IHB1Ymxp
YyBJU09GdWxsQm94IHsKICAgICBLZXlJRCBtX2tleUlEOwogfTsKIAotY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IDogcHVibGljIElTT0JveCB7
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3gg
ZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5
cGVOYW1lKCkgeyByZXR1cm4gImZrYWkiOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IDogcHVibGljIElT
T0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3gg
eworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94
IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hU
eXBlTmFtZSgpIHsgcmV0dXJuICJma2N4IjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCA6IHB1YmxpYyBJ
U09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IDogcHVibGljIElT
T0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNp
b25MaXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZv
dXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma3ZsIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiB2ZXJzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbnM7IH0KQEAgLTg4LDcg
Kzg4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJz
aW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBtX3ZlcnNp
b25zOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXF1ZXN0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2siOyB9CiAK
QEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVh
bWluZ0tleVJlcXVlc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBPcHRpb25hbDxJU09GYWly
UGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94PiBtX3ZlcnNpb25MaXN0OwogfTsKIAotY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCA6IHB1Ymxp
YyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0
RGF0YUJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3Vy
Q0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzZCI7IH0KIApAQCAtMTIwLDcgKzEyMCw3IEBA
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBw
dWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0
Qm94PiBtX3JlcXVlc3RzOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlT
dHJlYW1pbmdQc3NoQm94IDogcHVibGljIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3gg
ZmluYWwgOiBwdWJsaWMgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmYWlyUGxheVN5c3RlbUlE
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKaW5kZXggODU3ZjMxZjI3NzJmNDA4MWZiYTYzOGY4MTBjMTE0OTQyODU4Yjk0
Yi4uNTljZjhiYTIxMzE2YjMwN2MwNTAyM2VkNTZkOWIzOWQyNTYxN2YwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAg
LTM4NCw3ICszODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgYwogICAgIGlmICghbV9jYWNo
ZWRMb2FkZWRUaW1lUmFuZ2VzKQogICAgICAgICBtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMgPSBw
bGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hlZExvYWRlZFRpbWVS
YW5nZXMpOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpt
YXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVk
aWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXggMzk1Y2U3ODJlOGM1ODA0NTk2MTYyNDY5ODBm
MzNlYWRmMDNiNzhiMi4uNWY1YjZmNjk1MmI0OTNhOTg4N2JhZmM3ZjMwYjdiZWU3MzM0MTVlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApA
QCAtNDksNyArNDksNyBAQCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp+V2ViTWVkaWFTZXNz
aW9uTWFuYWdlck1hYygpID0gZGVmYXVsdDsKIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXImIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnBsYXRmb3JtUGlja2VyKCkKIHsKICAg
ICBpZiAoIW1fdGFyZ2V0UGlja2VyKQotICAgICAgICBtX3RhcmdldFBpY2tlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRoaXMpOworICAgICAgICBt
X3RhcmdldFBpY2tlciA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4o
KnRoaXMpOwogCiAgICAgcmV0dXJuICptX3RhcmdldFBpY2tlci5nZXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCmluZGV4IGFmMGE3Y2M3N2JmMjkyY2RmZDY2YWJjNmU3ZjYzYTUwOTAwYWFkNjcuLjVh
NTE4YzUxNTFkMDVjM2VmNWIwOTQyYzQyZTNiMjQwMjAzNjBhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cApAQCAtMzQzLDcgKzM0Myw3IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbExvYWRl
ckRlbGVnYXRlUXVldWUoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAg
ICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKIH0KIApAQCAtNjcyLDcgKzY3Miw3
IEBAIHN0YXRpYyBib29sIHRpbWVSYW5nZUlzVmFsaWRBbmROb3RFbXB0eShDTVRpbWUgc3RhcnQs
IENNVGltZSBkdXJhdGlvbikKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFu
Z2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKIAogICAgIGlmICghYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBl
cikpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGOjpjcmVhdGVTZXNzaW8KICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5
c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOwog
fQogCiAjZWxpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTE3MDgsNyArMTcw
OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRp
b25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDCiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBl
cjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soaWY9JWQpICVzIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KG9ic2VydmVyKSwgbm90aWZpY2F0aW9uTmFtZSk7CiAjZW5kaWYKIAotICAgIGF1dG8g
bm90aWZpY2F0aW9uRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uQ2FsbGJhY2tE
YXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbkRhdGEg
PSBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4ocHJvcGVydHlOYW1lLCBvYnNl
cnZlcik7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IG5vdGlmaWNhdGlvbkRhdGEucmVsZWFzZSgpLCBwcm9jZXNzTm90aWZpY2F0aW9uKTsKIH0KQEAg
LTE4MzMsNyArMTgzMyw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNr
KHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1CiAKICAgICBBU1NFUlQo
bGVnaWJsZU91dHB1dCA9PSBzZWxmLT5tX2xlZ2libGVPdXRwdXQpOwogCi0gICAgYXV0byBsZWdp
YmxlT3V0cHV0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnaWJsZU91dHB1dERhdGE+KGF0dHJp
YnV0ZWRTdHJpbmdzLCBuYXRpdmVTYW1wbGVCdWZmZXJzLCBQQUw6OnRvTWVkaWFUaW1lKGl0ZW1U
aW1lKSwgY29udGV4dCk7CisgICAgYXV0byBsZWdpYmxlT3V0cHV0RGF0YSA9IG1ha2VVbmlxdWU8
TGVnaWJsZU91dHB1dERhdGE+KGF0dHJpYnV0ZWRTdHJpbmdzLCBuYXRpdmVTYW1wbGVCdWZmZXJz
LCBQQUw6OnRvTWVkaWFUaW1lKGl0ZW1UaW1lKSwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9h
c3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGxlZ2libGVPdXRwdXREYXRhLnJlbGVh
c2UoKSwgcHJvY2Vzc0N1ZSk7CiB9CkBAIC0xOTI2LDcgKzE5MjYsNyBAQCBCb29sZWFuIEFWRldy
YXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291
cmNlKEFWQ0ZBcwogCiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJT
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoJXApIiwgc2VsZik7CiAKLSAg
ICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZFJlcXVlc3REYXRh
Pihsb2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CisgICAgYXV0byBsb2FkUmVxdWVzdERhdGEgPSBt
YWtlVW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9hZGluZ1JlcXVlc3QsIGNvbnRleHQpOwogCiAg
ICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBsb2FkUmVxdWVz
dERhdGEucmVsZWFzZSgpLCBwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKTsK
IApAQCAtMTk1Myw3ICsxOTUzLDcgQEAgUGxhdGZvcm1MYXllciogQVZGV3JhcHBlcjo6cGxhdGZv
cm1MYXllcigpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gQ3JlYXRlIGEgUGxhdGZvcm1D
QUxheWVyIHNvIHdlIGNhbiByZXNpemUgdGhlIHZpZGVvIGxheWVyIHRvIG1hdGNoIHRoZSBlbGVt
ZW50IHNpemUuCi0gICAgbV9sYXllckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGll
bnQ+KHRoaXMpOworICAgIG1fbGF5ZXJDbGllbnQgPSBtYWtlVW5pcXVlPExheWVyQ2xpZW50Pih0
aGlzKTsKICAgICBpZiAoIW1fbGF5ZXJDbGllbnQpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KaW5k
ZXggZTE0YWYxYTI3ZjI2YmQxYWQ2MDI4NjA0YTU3NTJmMGRmOWE4ZGY1Mi4uN2RlMTRjMjU3MWY3
ZDM4ZWVjYmIzNDhmZGEzYzc0YTQzZGViODJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzMsMTMgKzMzLDEzIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChz
dGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6
IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsK
ICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZP
YmpDJiBvcHRpb24pCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsPihvcHRpb24pKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJh
Y2soKTsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogewotICAg
IG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJh
Y2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
dHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC02OSwxNCAr
NjksMTQgQEAgQVZQbGF5ZXJJdGVtVHJhY2sqIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxh
eWVySXRlbVRyYWNrKCkKIH0KIAogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1h
a2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1w
bChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICBy
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFW
Rk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAg
ICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsK
ICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtODcsNyArODcsNyBAQCBB
VkFzc2V0VHJhY2sqIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6YXNzZXRUcmFjaygpCiAKIHZv
aWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdGlvbk9wdGlvbihNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CisgICAgbV9pbXBs
ID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOwogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAK
aW5kZXggZWMwZDBlZGRiZjczYmVlZGE2NzE3YjdhNTE4YzczMjEyNjA5NWFlMi4uZGY1MjI2YTRl
YTAzNmU1NmZhMjUzOWE2Mjc2MmEyMzhhZTcwZTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBh
cmVudCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKSkKICAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKICAgICByZXNldFBy
b3BlcnRpZXNGcm9tVHJhY2soKTsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9p
ZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFz
c2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMuaAppbmRleCAyMmFhZmVjN2I4MzQyN2I4MTMwYTdjMDQzZjhmNjcyMDgz
NGNjYTQ3Li41ZDhlMjUwNzQ3MGJjN2E0OTk5NTVjOTgxYjE3NmZmNDQ0ZmJjNmRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgK
QEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwogCi1jbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQyA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+IHsKK2NsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDIGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24sIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCop
OwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAyZmUyNTI0OTk0YzNi
MTk0NDU5ZWMzMzMwMjlhYmQ5ZTk4NWM3NWI0Li5iYjA3Nzc2MTM4MmM4ODA4MDdiYTUzYzhkYWRi
Mjk0NTZlNTZlYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW0KQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnJl
YWRUcmFja01ldGFkYXRhKCkKICAgICAgICAgfHwgIW1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnRy
YW5zZm9ybSgpCiAgICAgICAgIHx8IG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnRyYW5zZm9ybSgp
LnZhbHVlKCkgIT0gZmluYWxUcmFuc2Zvcm0KICAgICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vz
c2lvbi0+c2l6ZSgpICE9IHNpemUpCi0gICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFu
c2Zvcm0pLCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOworICAgICAgICBtX2ltYWdlUm90YXRp
b25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZp
bmFsVHJhbnNmb3JtKSwgc2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKIAogICAgIG1fc2l6ZSA9
IGV4cGFuZGVkSW50U2l6ZShtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGVkU2l6ZSgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGM2NTkwYmRlZTY3YjRlMjA5ODg4ZTk2YTJj
MzMwZjJmZTIzMzg2OTcuLjg0OTkwNGFjZjkyOWM3Y2ZlM2Y5NGJjNDEwZTBkMGIyZThiMWI0NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhCiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAor
ICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCiAgICAgICAg
ICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5
U3lzdGVtKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlz
QXZhaWxhYmxlKCkpOwogfQpAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJp
bmcmCiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbihwbGF5ZXIpCi0gICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9i
akM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVl
bkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKICAgICAsIG1f
b2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBhbGxvY10gaW5p
dFdpdGhQbGF5ZXI6bWFrZVdlYWtQdHIoKnRoaXMpXSkpCiAgICAgLCBtX3ZpZGVvRnJhbWVIYXNE
cmF3bihmYWxzZSkKQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkK
IAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdAogewot
ICAgIGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigpOwogCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSkKICAgICAgICAgcmV0dXJuIHRpbWVSYW5n
ZXM7CkBAIC0xODkyLDcgKzE4OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbigpCiAgICAgICAgICYmIG1faW1hZ2VSb3Rh
dGlvblNlc3Npb24tPnNpemUoKSA9PSBuYXR1cmFsU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlv
blNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhl
bEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21w
YXRpYmxlOjpZZXMpOworICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPElt
YWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBuYXR1cmFsU2l6
ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXND
R0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAg
LTIyMTYsNyArMjIxNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkKICNlbHNlCiAgICAgICAgIE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlcyA9IG5pbDsKICNlbmRpZgotICAgICAgICBtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOworICAgICAgICBtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0KIAogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRApAQCAtMjI2NSw3ICsyMjY1LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGgKICAg
ICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZl
ci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3Zp
ZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+
KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZp
ZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1
cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdl
dCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBp
bnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9
CkBAIC0yMzMwLDcgKzIzMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlU2VzcwogewogICAgIGlm
ICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsKKyAgICBhdXRvIHNlc3Npb24gPSBtYWtlVW5pcXVl
PENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0aGlzLCBjbGllbnQpOwogICAgIG1fc2Vzc2lv
biA9IG1ha2VXZWFrUHRyKCpzZXNzaW9uKTsKICAgICByZXR1cm4gV1RGTW92ZShzZXNzaW9uKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggNzM5NmU1YjFiNDMxMTk4ZTVlNjBkOGZj
ZDA2MzU5YmIyN2NmNDlmNy4uYTFkZDBmOTA5MWZiMjg2NDY4ZGJlMGFlMTBjZThiM2MxNDJjMGJk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTI2OCw2ICsyNjgsNyBAQCBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMKICAgICBmcmllbmQgY2xhc3MgTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQzsKIAogICAgIHN0cnVjdCBQZW5kaW5nU2VlayB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1NlZWso
Y29uc3QgTWVkaWFUaW1lJiB0YXJnZXRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhy
ZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVGhyZXNob2xkKQogICAgICAgICAgICAg
OiB0YXJnZXRUaW1lKHRhcmdldFRpbWUpCiAgICAgICAgICAgICAsIG5lZ2F0aXZlVGhyZXNob2xk
KG5lZ2F0aXZlVGhyZXNob2xkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGYxOTUx
NTZkOGNmMjI1NmY2MGY5ZjU1MzI0MTI5ZTg1MjNkOWQzOGIuLjljMGFlZjYxOWFkYzJhMzE4ZjBk
YjdkMmUzODY3YzIxZGZjMzFkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTEz
Nyw3ICsxMzcsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhNZWRpYQogICAgICwgbV9wbGF5aW5nKDAp
CiAgICAgLCBtX3NlZWtpbmcoZmFsc2UpCiAgICAgLCBtX2xvYWRpbmdQcm9ncmVzc2VkKGZhbHNl
KQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpD
PigpKQogICAgICwgbV9lZmZlY3RpdmVSYXRlQ2hhbmdlZExpc3RlbmVyKEVmZmVjdGl2ZVJhdGVD
aGFuZ2VkTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcywgW21fc3luY2hyb25pemVyIHRpbWViYXNlXSkp
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlh
UGxheWVyTG9nZ2VyKCkpCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3QKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKKyAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7IH0sCiAgICAgICAgIGdldFN1
cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogICAgIEFTU0VSVChBVkFz
c2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CiB9CkBAIC00Mzcs
NyArNDM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNl
ZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgdGkKICAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAidGltZSA9ICIsIHRpbWUsICIsIG5lZ2F0aXZlVGhyZXNob2xkID0gIiwgbmVnYXRp
dmVUaHJlc2hvbGQsICIsIHBvc2l0aXZlVGhyZXNob2xkID0gIiwgcG9zaXRpdmVUaHJlc2hvbGQp
OwogCiAgICAgbV9zZWVraW5nID0gdHJ1ZTsKLSAgICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwgbmVnYXRpdmVUaHJlc2hvbGQsIHBvc2l0aXZlVGhy
ZXNob2xkKTsKKyAgICBtX3BlbmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4odGlt
ZSwgbmVnYXRpdmVUaHJlc2hvbGQsIHBvc2l0aXZlVGhyZXNob2xkKTsKIAogICAgIGlmIChtX3Nl
ZWtUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3NlZWtUaW1lci5zdG9wKCk7CkBAIC01NDMs
NyArNTQzLDcgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpyZWFkeVN0YXRlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpz
ZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGlt
ZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOwogfQogCiBNZWRpYVRpbWUgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjptYXhNZWRpYVRpbWVTZWVrYWJsZSgp
IGNvbnN0CkBAIC01NTgsNyArNTU4LDcgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6bWluTWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVBy
aXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0
ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdApAQCAtNjAyLDcgKzYwMiw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2Uo
KQogCiAgICAgaWYgKCFtX3JnYkNvbmZvcm1lcikgewogICAgICAgICBhdXRvIGF0dHJpYnV0ZXMg
PSBAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtl
eTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9OwotICAgICAgICBtX3JnYkNvbmZvcm1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKKyAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBtYWtl
VW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
YXR0cmlidXRlcyk7CiAgICAgfQogCiAgICAgbV9sYXN0SW1hZ2UgPSBtX3JnYkNvbmZvcm1lci0+
Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAt
NjQ5LDcgKzY0OSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhCiAgICAgc2l6ZV90IGhlaWdo
dCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAg
ICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3Bp
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7Cisg
ICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3Bp
ZXJDVj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5
SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhl
aWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQs
IGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCmluZGV4IGNhM2IxMTM1NTJiMzg4NWM5OTk3N2RhZTJhMjFlYTE2NTc3ZWRh
ODAuLjlkZWVlNDZmMmNhMjQ1Mjk1M2RmNWNhODhiYjY5ZjgxOGU3ZTRlNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KQEAgLTE4Myw3ICsxODMsNyBAQCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhN
ZWRpYQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5l
cihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10g
aW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9jbG9jayhQQUw6OkNsb2NrOjpjcmVhdGUo
KSkKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2Jq
Qz4oKSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+
bWVkaWFQbGF5ZXJMb2dnZXIoKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcihwbGF5ZXItPm1lZGlh
UGxheWVyTG9nSWRlbnRpZmllcigpKQpAQCAtMjIwLDcgKzIyMCw3IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQygpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYg
KGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCisgICAgICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMs
CiAgICAgICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogfQogCkBAIC0xMDU0LDEy
ICsxMDU0LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVUcmFja3MoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFu
Z2VzPigpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBA
IC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQotICAgICAgICBtX2ltYWdl
UGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNT
dHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1h
dFR5cGVfMzJCR1JBKSB9KTsKKyAgICAgICAgbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25m
b3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRp
Y3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZv
cm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfSk7CiAKICAgICBBU1NF
UlQobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpOwogICAgIGlmICghbV9pbWFn
ZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcAppbmRleCBjODcxYzU5NDgzNTUwODU3
MTgyYzdhMjRkNTUzNGI4NWE1ZDRlZjdlLi4yOTQ4M2JhNWU5OGQ5NWZhOGU1ZWM5YTZhMTBiZjY0
MWFhZTM1NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQy5jcHAKQEAgLTM0LDE5ICszNCwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhB
VlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2lt
cGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAg
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIFZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYg
b3B0aW9uKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4ob3B0aW9uKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KG9wdGlvbikpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7
CiB9CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNl
dFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6
c2V0UGxheWVySXRlbVRyYWNrKEFWUGxheWVySXRlbVRyYWNrICp0cmFjaykKIHsKLSAgICBtX2lt
cGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsK
KyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNr
KTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtNzcsNyArNzcsNyBA
QCBBVlBsYXllckl0ZW1UcmFjayogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVt
VHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhB
VkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zy
b21UcmFjaygpOwogfQogCkBAIC04OCw3ICs4OCw3IEBAIEFWQXNzZXRUcmFjayogVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjphc3NldFRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakM6OnNldE1lZGlhU2VsZWN0b25PcHRpb24oTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpD
JiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2so
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBmY2MyNDk2YTEzNWFhNGY3M2E4
ZmU1NDhkMTRlMGM4MDAwNGFkMWIwLi45NzU2Y2ZmYWZkOGMzZjZmZTNiNDdhMjMzMzcxYjc0ZGVj
OThkMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzUsNyArMzUsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1faW1wbChzdGQ6Om1h
a2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1w
bChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKICAgICAsIG1f
cGFyZW50KHBhcmVudCkKICAgICAsIG1fdHJhY2tJRCgtMSkKICAgICAsIG1fc2VsZWN0ZWQoZmFs
c2UpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykK
IHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKaW5kZXggMTcxZjI3NzJjOTRhNjljZGE3MzQ5M2NjOWM4Yzc4NzhiMDAxMDhkZC4u
ODc2NTM0NDUyMDI0ZTYxNjUxNDE3YTA0YTBkOTQ1MDU4YTk1NDAzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CkBAIC0xNjM2LDEyICsxNjM2LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVD
b21taXRDaGFuZ2VzKENvbW1pdFN0YXRlJiBjb21taXRTdGF0ZSwgY29uc3QgVHJhCiAgICAgaWYg
KHVzZXNEaXNwbGF5TGlzdERyYXdpbmcoKSAmJiBtX2RyYXdzQ29udGVudCAmJiAoIW1faGFzRXZl
clBhaW50ZWQgfHwgaGFkRGlydHlSZWN0cykpIHsKICAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5n
U2NvcGUoRGlzcGxheUxpc3RSZWNvcmRTdGFydCwgRGlzcGxheUxpc3RSZWNvcmRFbmQpOwogCi0g
ICAgICAgIG1fZGlzcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdD4oKTsKKyAgICAgICAgbV9kaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0PigpOwogICAgICAgICAKICAgICAgICAgRmxvYXRSZWN0IGluaXRpYWxD
bGlwKGJvdW5kc09yaWdpbigpLCBzaXplKCkpOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBj
b250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlz
cGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFu
c2Zvcm0oKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVj
b3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBp
bml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgICAgICB9KTsKICAgICAgICAgcGFp
bnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSgpKSk7CiAgICAgfQpAQCAtMjg2Nyw3ICsyODY3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVy
Q0E6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbigpIGNvbnN0CiB2b2lkIEdyYXBoaWNzTGF5
ZXJDQTo6ZW5zdXJlTGF5ZXJBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9ucykK
LSAgICAgICAgbV9hbmltYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckFuaW1hdGlvbnM+
KCk7CisgICAgICAgIG1fYW5pbWF0aW9ucyA9IG1ha2VVbmlxdWU8TGF5ZXJBbmltYXRpb25zPigp
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9y
bUNBQW5pbWF0aW9uJiBjYUFuaW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRleCwgU2Vjb25kcyB0
aW1lT2Zmc2V0KQpAQCAtMzkwMyw3ICszOTAzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVu
c3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4K
ICAgICBjb250ZW50c0xheWVyID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9sYXllckNsb25lcykK
LSAgICAgICAgbV9sYXllckNsb25lcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbG9uZXM+KCk7
CisgICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBtYWtlVW5pcXVlPExheWVyQ2xvbmVzPigpOwogCiAg
ICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fbGF5ZXIuZ2V0KCks
IG1fbGF5ZXJDbG9uZXMtPnByaW1hcnlMYXllckNsb25lcywgY2xvbmVMZXZlbCk7CiAgICAgc3Ry
dWN0dXJhbExheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fc3RydWN0dXJhbExheWVy
LmdldCgpLCBtX2xheWVyQ2xvbmVzLT5zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaAppbmRleCAzYWM0YzFlMzJhMTU0OGQ1OGM2OTExMTdjYzY5YTI5YzRkY2YwZTFh
Li5jNGIyYzljMzQ3MDgwYTZiN2M5NmQ2NzAyZjRhNGQ4YTMwYzdmNmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApA
QCAtMTU3LDYgKzE1Nyw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGlj
c0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKICAgICBGbG9hdFNpemUgcGl4
ZWxBbGlnbm1lbnRPZmZzZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BpeGVsQWxpZ25t
ZW50T2Zmc2V0OyB9CiAKICAgICBzdHJ1Y3QgQ29tbWl0U3RhdGUgeworICAgICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHVuc2lnbmVkIHRyZWVEZXB0aCB7IDAg
fTsKICAgICAgICAgdW5zaWduZWQgdG90YWxCYWNrZHJvcEZpbHRlckFyZWEgeyAwIH07CiAgICAg
ICAgIGJvb2wgYW5jZXN0b3JIYWRDaGFuZ2VzIHsgZmFsc2UgfTsKQEAgLTMwOSw2ICszMTAsNyBA
QCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBs
YXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBDb21wdXRlVmlzaWJs
ZVJlY3RGbGFnczsKICAgICAKICAgICBzdHJ1Y3QgVmlzaWJsZUFuZENvdmVyYWdlUmVjdHMgewor
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEZsb2F0UmVj
dCB2aXNpYmxlUmVjdDsKICAgICAgICAgRmxvYXRSZWN0IGNvdmVyYWdlUmVjdDsKICAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggYW5pbWF0aW5nVHJhbnNmb3JtOwpAQCAtMzI4LDYgKzMzMCw3
IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMg
UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIAogICAgIC8vIFVzZWQgdG8gdHJhY2sgdGhlIHBhdGgg
ZG93biB0aGUgdHJlZSBmb3IgcmVwbGljYSBsYXllcnMuCiAgICAgc3RydWN0IFJlcGxpY2FTdGF0
ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBtYXhSZXBsaWNhRGVwdGggPSAxNjsKICAgICAgICAgZW51bSBSZXBs
aWNhQnJhbmNoVHlwZSB7IENoaWxkQnJhbmNoID0gMCwgUmVwbGljYUJyYW5jaCA9IDEgfTsKICAg
ICAgICAgUmVwbGljYVN0YXRlKFJlcGxpY2FCcmFuY2hUeXBlIGZpcnN0QnJhbmNoKQpAQCAtNTc5
LDYgKzU4Miw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVy
LCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIAogICAgIC8vIFJlZmVyZW5jZXMgdG8g
Y2xvbmVzIG9mIG91ciBsYXllcnMsIGZvciByZXBsaWNhdGVkIGxheWVycy4KICAgICBzdHJ1Y3Qg
TGF5ZXJDbG9uZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIExheWVyTWFwIHByaW1hcnlMYXllckNsb25lczsKICAgICAgICAgTGF5ZXJNYXAgc3Ry
dWN0dXJhbExheWVyQ2xvbmVzOwogICAgICAgICBMYXllck1hcCBjb250ZW50c0xheWVyQ2xvbmVz
OwpAQCAtNjA4LDYgKzYxMiw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFw
aGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBWZWN0b3I8QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbj4+IEFuaW1hdGlv
bnNUb1Byb2Nlc3NNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPExheWVy
UHJvcGVydHlBbmltYXRpb24+PiBBbmltYXRpb25zTWFwOwogICAgIHN0cnVjdCBMYXllckFuaW1h
dGlvbnMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiB1bmNvbWl0dGVkQW5pbWF0aW9uczsKICAg
ICAgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcCBhbmltYXRpb25zVG9Qcm9jZXNzOwogICAgICAg
ICBBbmltYXRpb25zTWFwIHJ1bm5pbmdBbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDRkNjRj
MmM0YjE5YjMxYjgwNTRjMWJjNDFhYzAyMjU3M2JlZmY1NjIuLjMwNWVmZDMzM2JkNjExYzZlZjVl
NGMxYjI2MjI4ODc1MjU2ZjI0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgU3Ry
aW5nIFRpbGVDb250cm9sbGVyOjp6b29tZWRPdXRUaWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgp
CiBUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290UGxh
dGZvcm1MYXllcikKICAgICA6IG1fdGlsZUNhY2hlTGF5ZXIocm9vdFBsYXRmb3JtTGF5ZXIpCiAg
ICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1D
QUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSkKLSAgICAsIG1fdGlsZUdyaWQoc3RkOjptYWtlX3Vu
aXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQorICAgICwgbV90aWxlR3JpZChtYWtlVW5pcXVlPFRpbGVH
cmlkPigqdGhpcykpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25UaW1lcigqdGhpcywgJlRpbGVD
b250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fdGlsZVNpemVD
aGFuZ2VUaW1lcigqdGhpcywgJlRpbGVDb250cm9sbGVyOjp0aWxlU2l6ZUNoYW5nZVRpbWVyRmly
ZWQsIHRpbGVTaXplVXBkYXRlRGVsYXkpCiAgICAgLCBtX21hcmdpbkVkZ2VzKGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlKQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6
OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgaWYgKG1fem9vbWVkT3V0Q29udGVu
dHNTY2FsZSAmJiBtX3pvb21lZE91dENvbnRlbnRzU2NhbGUgPT0gdGlsZUdyaWQoKS5zY2FsZSgp
ICYmIHRpbGVHcmlkKCkuc2NhbGUoKSAhPSBzY2FsZSAmJiAhbV9oYXNUaWxlc1dpdGhUZW1wb3Jh
cnlTY2FsZUZhY3RvcikgewogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkID0gV1RGTW92ZSht
X3RpbGVHcmlkKTsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0SXNab29tZWRPdXRU
aWxlR3JpZCh0cnVlKTsKLSAgICAgICAgbV90aWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8VGls
ZUdyaWQ+KCp0aGlzKTsKKyAgICAgICAgbV90aWxlR3JpZCA9IG1ha2VVbmlxdWU8VGlsZUdyaWQ+
KCp0aGlzKTsKICAgICAgICAgdGlsZUdyaWRzQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtNTAwLDcg
KzUwMCw3IEBAIEZsb2F0UmVjdCBUaWxlQ29udHJvbGxlcjo6YWRqdXN0VGlsZUNvdmVyYWdlUmVj
dEZvclNjcm9sbGluZyhjb25zdCBGbG9hdFJlY3QmIGNvCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKCFtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEpCi0gICAgICAgICAgICBtX2hp
c3RvcmljYWxWZWxvY2l0eURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcmljYWxWZWxvY2l0
eURhdGE+KCk7CisgICAgICAgICAgICBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEgPSBtYWtlVW5p
cXVlPEhpc3RvcmljYWxWZWxvY2l0eURhdGE+KCk7CiAKICAgICAgICAgbV92ZWxvY2l0eSA9IG1f
aGlzdG9yaWNhbFZlbG9jaXR5RGF0YS0+dmVsb2NpdHlGb3JOZXdEYXRhKHNjcm9sbE9mZnNldCwg
Y29udGVudHNTY2FsZSwgTW9ub3RvbmljVGltZTo6bm93KCkpOwogICAgIH07CkBAIC02ODUsNyAr
Njg1LDcgQEAgSW50UmVjdCBUaWxlQ29udHJvbGxlcjo6dGlsZUNvdmVyYWdlUmVjdCgpIGNvbnN0
CiBQbGF0Zm9ybUNBTGF5ZXIqIFRpbGVDb250cm9sbGVyOjp0aWxlZFNjcm9sbGluZ0luZGljYXRv
ckxheWVyKCkKIHsKICAgICBpZiAoIW1fY292ZXJhZ2VNYXApCi0gICAgICAgIG1fY292ZXJhZ2VN
YXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb3ZlcmFnZU1hcD4oKnRoaXMpOworICAgICAgICBt
X2NvdmVyYWdlTWFwID0gbWFrZVVuaXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKIAogICAg
IHJldHVybiAmbV9jb3ZlcmFnZU1hcC0+bGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxh
eWVyQ29jb2EubW0KaW5kZXggYTQ4NTIzY2Y1MTc2YjMxZjJhY2M0OTg0YjJlY2Q4ZTJjODc0ZjYw
Ny4uMzZhYzJmNzg0YjAwNmZmOWM3MDNmNDFlN2JmZjY4N2ExYWE0YzY3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2Ev
UGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFBsYXRmb3Jt
Q0FMYXllckNvY29hOjpjb21tb25Jbml0KCkKICAgICAgICAgV2ViVGlsZWRCYWNraW5nTGF5ZXIq
IHRpbGVkQmFja2luZ0xheWVyID0gc3RhdGljX2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXIqPiht
X2xheWVyLmdldCgpKTsKICAgICAgICAgVGlsZUNvbnRyb2xsZXIqIHRpbGVDb250cm9sbGVyID0g
W3RpbGVkQmFja2luZ0xheWVyIGNyZWF0ZVRpbGVDb250cm9sbGVyOnRoaXNdOwogCi0gICAgICAg
IG1fY3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0
Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOworICAgICAgICBtX2N1c3RvbVN1
YmxheWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXIt
PmNvbnRhaW5lckxheWVycygpKTsKICAgICB9CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCkBAIC05NDcsNyArOTQ3LDcgQEAgRmxvYXRSb3VuZGVkUmVjdCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6c2hhcGVSb3VuZGVkUmVjdCgpIGNvbnN0CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0
KQogewogICAgIEFTU0VSVChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTaGFwZUxheWVyKTsKLSAg
ICBtX3NoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+
KHJvdW5kZWRSZWN0KTsKKyAgICBtX3NoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPEZsb2F0
Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogICAgIFBhdGggc2hhcGVQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5t
bQppbmRleCBjMTkxZjM5MWM2NDU3MmNjOTk1NWE0N2M2Y2I3YjkwMDc4NjcyNjM5Li5iM2UyMWY2
NDBhZTkxYTBkMWY1OTM4NDZhODUwZmVjMjJmYTc4YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJh
Y2tpbmdMYXllci5tbQpAQCAtNjIsNyArNjIsNyBAQCAtIChpZClpbml0V2l0aExheWVyOihpZCls
YXllcgogLSAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXIqKWNyZWF0ZVRpbGVDb250cm9sbGVyOihX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqKXJvb3RMYXllcgogewogICAgIEFTU0VSVCghX3RpbGVD
b250cm9sbGVyKTsKLSAgICBfdGlsZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOworICAgIF90aWxlQ29udHJvbGxlciA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CiAgICAgcmV0dXJu
IF90aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApp
bmRleCAxNWQ0ZTQ2YjA2Yzc2YzE3ZjM0MDUxMzljNmM5NzljMTAxN2IzNjk2Li5kNmE3YzE2OGYw
ZTQ0MWZkN2QyOTBmYzRmZTMxMzYwYzU4NWQ1Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIFBsYXRmb3JtQ0FMYXllcldpbjo6UGxhdGZvcm1DQUxh
eWVyV2luKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqIGxheWVyCiAgICAgaWYg
KHVzZXNUaWxlZEJhY2tpbmdMYXllcigpKSB7CiAgICAgICAgIGludGVybiA9IG5ldyBXZWJUaWxl
ZEJhY2tpbmdMYXllcldpbih0aGlzKTsKICAgICAgICAgVGlsZUNvbnRyb2xsZXIqIHRpbGVDb250
cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWJUaWxlZEJhY2tpbmdMYXllcldpbio+KGludGVy
biktPmNyZWF0ZVRpbGVDb250cm9sbGVyKHRoaXMpOwotICAgICAgICBtX2N1c3RvbVN1YmxheWVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXIt
PmNvbnRhaW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBtYWtlVW5p
cXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMo
KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGludGVybiA9IG5ldyBQbGF0Zm9ybUNBTGF5ZXJXaW5J
bnRlcm5hbCh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKaW5k
ZXggMjI0ZDhiYmVlZDM5OTJhZWVmYzkzMmExYmVlODBkYzYzZmNhMmY4Yi4uYzVhNzNlOGQzYWU5
YmI0OWE5NmJlMjdmNTMyN2UwNmMwNjIxNGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5n
TGF5ZXJXaW4uY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJUaWxlZEJhY2tpbmdMYXll
cldpbjo6c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQogVGlsZUNvbnRyb2xsZXIq
IFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNB
TGF5ZXIqIHJvb3RMYXllcikKIHsKICAgICBBU1NFUlQoIW1fdGlsZUNvbnRyb2xsZXIpOwotICAg
IG1fdGlsZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPihyb290
TGF5ZXIpOworICAgIG1fdGlsZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFRpbGVDb250cm9sbGVy
Pihyb290TGF5ZXIpOwogICAgIHJldHVybiBtX3RpbGVDb250cm9sbGVyLmdldCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA1MGI3ZDljMjNjMDFhYmZj
M2EwNTE3OGMxMDUyNTEwNzBmMTVkNmRiLi4wNGYyYTlmZjU0NjlhYTViYTI0ZDE0OTU2NTRiNjBm
MGJjNDNkMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3ND
b250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNv
bnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0
LCBwbGF0Zm9ybUNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9
KTsKIH0KIApAQCAtNTQsMTQgKzU0LDE0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250
ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAg
ICAgIFtjYWlyb0NvbnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvPihjb250ZXh0LCBjYWlyb0NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBjYWlyb0NvbnRleHQpOwogICAg
ICAgICB9KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9h
dFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQo
cGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCisgICAgLCBtX3By
aXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZv
cm1Db250ZXh0KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQ
cml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3Bs
YXRmb3JtQ29udGV4dC5jcigpKTsKQEAgLTY5LDkgKzY5LDkgQEAgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBQbGEKIAogR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjYWlyb190KiBjYWlyb0NvbnRleHQpCiAgICAg
OiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5z
Zm9ybSB7IH0pCi0gICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCisgICAgLCBtX293bmVkUGxhdGZv
cm1Db250ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkp
CiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkKLSAgICAs
IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9w
bGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkp
OwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDE4OGU3YmMzZGI4NTgyOTY1Y2FiYjI4OWJjNWMwMmJj
NzE2MjNhYTUuLjFmNzYzYjUwNzczYmRmNWQxZTUyZTVkMTljMGI4MGZiYWQzN2I0MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRh
dGE6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICAgICAgcHJv
eHkucHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6
OlNob3VsZEJsZW5kLCBHTF9SR0JBKSk7CisgICAgICAgICAgICAgICAgcHJveHkucHVzaE5leHRC
dWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb21w
b3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBHTF9S
R0JBKSk7CiAgICAgICAgICAgICB9OwogI2lmIFVTRShOSUNPU0lBKQogICAgICAgICBwcm94eU9w
ZXJhdGlvbihkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4o
bV9uaWNvc2lhTGF5ZXItPmltcGwoKSkucHJveHkoKSk7CkBAIC0zMDgsNyArMzA4LDcgQEAgSW1h
Z2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWMKIAogICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVm
KGNhaXJvX2NyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpKSk7CiAgICAgbV9kYXRhLm1fcGxh
dGZvcm1Db250ZXh0LnNldENyKGNyLmdldCgpKTsKLSAgICBtX2RhdGEubV9jb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
Y3JlYXRlRmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQpKTsKKyAgICBtX2RhdGEubV9j
b250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6Y3JlYXRlRmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQpKTsKICAgICBzdWNj
ZXNzID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4MGI1ZDRmYmQyNzJkZWU0MzViNWNlN2Mw
ODRlZTM1OWE1MDFlZDY0Li5kMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFmYTM0ZTQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNw
CiAgICAgICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29u
dGV4dC5nZXQoKSk7CisgICAgICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGlj
c0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAgICAgY29udGV4dCgpLnNjYWxl
KEZsb2F0U2l6ZSgxLCAtMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDcyNTJlNDk1
MjRmNjA5ODZiMDM4Y2E4N2M4ZTdlMjY1ZDA1NzQ3MGQuLmMwMTYwMWUxMDExMTI3OThiMjY4ZGZh
ZjI2OTM4MmI2NTMxOWQ1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEzNzEsNyAr
MTM3MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNy
ZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAKICAgICBhdXRvIFtzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5n
ZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRo
ZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigp
LCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVu
ZGVyaW5nTW9kZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVz
Y3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBm
b250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiB9CiAKIHR5cGVkZWYgSGFzaFNl
dDxSZXRhaW5QdHI8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmplY3RIYXNoPENURm9udFJl
Zj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaFRyYWl0czxDVEZvbnRSZWY+PiBGYWxsYmFja0Rl
ZHVwU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cAppbmRleCAxY2UwYzk0N2UxN2U5YTY4ZWVhZDNhNGQ1N2I1OWQ4ZmExNmNlZjI5Li4wZGU5MzRh
N2IzODQxMDBlZWI3NmQ3N2Y0NTZhMTgyZmJiYWJjZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIEZvbnRS
YW5nZXMgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyhjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvCiAKICAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhl
dGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXND
b21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250Lmdl
dCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVu
dGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9u
LnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxh
dGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9u
dERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQo
KSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9y
LT52YWx1ZTsKIAogICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHQzRENvY29hLm1tCmluZGV4IDg5MmI0YTk4YzAwN2I2Zjk3MGEzNjg2MWJlOTE3MTQ4YmIw
NDY3MmMuLjU3OWYxYjkxOGRiYmU3NWI4NDEzZTZkNmZkMTVkZmFmNjRhMzU2NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dDNEQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtOTIsNiArOTIsNyBAQCBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQgPSA1OwogLy8gRklYTUU6IFRoaXMgY2xhc3Mg
aXMgY3VycmVudGx5IGVtcHR5IG9uIE1hYywgYnV0IHdpbGwgZ2V0IHBvcHVsYXRlZCBhcwogLy8g
dGhlIHJlc3RydWN0dXJpbmcgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2OTAzIGlzIGRvbmUKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKikgeyB9CiAgICAgCkBAIC0yMTIsNyArMjEzLDcgQEAg
c3RhdGljIHZvaWQgc2V0R1BVQnlEaXNwbGF5TWFzayhQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
IGNvbnRleHRPYmosIENHTFBpeGVsRm8KIAogR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29u
dGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlLCBHcmFwaGljc0NvbnRleHQz
RCogc2hhcmVkQ29udGV4dCkKICAgICA6IG1fYXR0cnMoYXR0cnMpCi0gICAgLCBtX3ByaXZhdGUo
c3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMpKQorICAgICwg
bV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkKIHsK
ICNpZiAhVVNFKEFOR0xFKQogI2lmIFVTRShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KaW5kZXggNWM3MzNlM2Jh
ZDFlOWQzZDI1YzFlZDU3ZjVhY2RmZmYzYTRjYjk5Zi4uMzg3NWZjZmQzMDZkZjg2ZDM0NzRlZTE4
NjBiYTU5MGEzYThiYzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzI2LDcgKzMyNiw3IEBAIEdyYXBoaWNzQ29u
dGV4dCYgSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0NvbnRleHQoKQogICAgIGlmIChtX2dyYXBo
aWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29udGV4dDsKIAotICAgIG1f
Z3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGVuc3Vy
ZVBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgbV9ncmFwaGlj
c0NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KHRydWUpOwogCiAgICAgcmV0dXJuICpt
X2dyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCmluZGV4IDZlNjBlYmYxZmZhNjU5MGY2ZjM0ZTUyOGEzZTMzNTgzMThiNWViZGYuLjI3ODc0
NjgxNjZmZWYxYjVmNjQ2MjFmZWI1YmI1ZTUwZDlkNmRhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIEBlbmQKIAogc3Rk
Ojp1bmlxdWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbjo6Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYT4o
Y2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNv
Y29hPihjbGllbnQpOwogfQogCiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JiBjbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVJvdGF0aW9uU2Vzc2lvblZULmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKaW5kZXggYWRjOTdhZGMxZmEyNDU4MDk5MDAzYzNk
ZTljMGFhMzhkODc2MTg3ZC4uNjAwMWJiNzBhMTAwNDE3NDQxMDkyMTM2ZjNmZTViNjE3NjJjYjBj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VS
b3RhdGlvblNlc3Npb25WVC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaApAQCAtMzYsNyArMzYsOCBAQCB0eXBlZGVmIHN0
cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIHsKK2NsYXNzIElt
YWdlUm90YXRpb25TZXNzaW9uVlQgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0cnVjdCBSb3RhdGlvblByb3BlcnRpZXMgewogICAgICAgICBib29s
IGZsaXBYIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAppbmRleCBkZDEzNTY5ZTA4
MWExYjM5OWRjYmFiZjNmNWU4ODM3Zjg0YzJhYjRlLi5jZDViNmZjYzAwZDc3NDY0ZTZlNmJlNzQ2
MzExZTEzZDBkMjdlMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCkBAIC0zNiw2ICszNiw3
IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yo
Q0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKaW5kZXggODFhYjJmOTI0ZGFm
MjZjZGEyMmM1ZTIwMDc3NmMyMTgwMjAyM2EzYi4uYzlmZjQxOWQ0M2JlNDVmNDA0NDAzMDQwYWRk
OGM0ZDA0NDAyYmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVGV4dHVyZUNhY2hlQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBUZXh0dXJlQ2FjaGVDViA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0dXJlQ2FjaGVDVj4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVy
ZUNhY2hlQ1Y+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCmluZGV4IDU3
N2VjMjg0NjM5MmE3MjE1ZDk5OGFhMzEwZDNkOGQ2MzNmNWYxZWMuLjlmMWY2NmIzYmQ1OWY1OWIx
YWQzY2I3MDVjODU2NTQ0MjI3ZWMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCkBAIC01MCw3ICs1MCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gVGV4dHVyZUNhY2hlQ1Y6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRCYgY29udGV4CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmV0
YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+IHN0cm9uZ0NhY2hlID0gYWRvcHRDRihjYWNoZSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZUNhY2hlQ1Y+KGNvbnRleHQsIFdURk1v
dmUoc3Ryb25nQ2FjaGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlQ2FjaGVDVj4o
Y29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOwogfQogCiBUZXh0dXJlQ2FjaGVDVjo6VGV4
dHVyZUNhY2hlQ1YoR3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleHQsIFJldGFpblB0cjxUZXh0dXJl
Q2FjaGVUeXBlPiYmIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKaW5kZXggNDNhOTZkYzE0MzY1
ODRhZmE3NzE4NzhiMTk3ZjJhOTU0N2RjY2NlZS4uOWQzOTJlYTA1OGIzNjAwOGNhNTY5Y2E0NGZk
NzEyODgzYjBkNmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCkBAIC00MCw2ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVDYWNoZUNWOwogCiBjbGFzcyBWaWRlb1Rl
eHR1cmVDb3BpZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgVmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0M0QmKTsKICAgICB+VmlkZW9U
ZXh0dXJlQ29waWVyQ1YoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cAppbmRleCA4ZmVhYTJmNWQ3NTMyOGU0MzZiZjlkODhiOGRjMDViYWMxYzJlMWYzLi5jNTYxZjVm
OWVhYjk5NjIxMWE4YjIyMjE5Nzc2ZDY4ZjM5ZTE2NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBib29sCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheUxpc3Q7CiAg
ICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpCi0gICAgICAgIHJlcGxheUxpc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0PigpOworICAgICAgICByZXBsYXlMaXN0ID0gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKIAogICAgIHNpemVfdCBudW1JdGVtcyA9IG1fZGlzcGxh
eUxpc3QuaXRlbUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1JdGVtczsg
KytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNTU3YjhlMDA4NjJkNmFiYzU4MDRi
NDE0MzIxMDA4MGE4MzUxNmQxZS4uMzBiYjQ4Y2M4ZjBjNDk1NDQ4YWI2NWY2ODExNzJjY2M2YmNh
NTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1lbnRJZk5lZWRlZChDYWNo
ZWRSZXNvdXJjZUxvYWRlcgogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFTVkdVUklSZWZlcmVu
Y2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UobV91cmwsICpjYWNoZWRSZXNvdXJjZUxvYWRlci5k
b2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPihtX3Vy
bCk7CisgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VVbmlxdWU8Q2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKICAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRpb25zKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDY1NjNjOGJmZWViMzViYTUzMjdmNDg5NjFlZDYy
MWZlM2Q1M2FhNDEuLjcxYTRhYjJmNDgyNWYxYTU0MzE5MTgwMzRiMzUzMWVjZGE4YTBmMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZQogICAgICAgICAgICAgRmNQYXR0ZXJuQWRkU3RyaW5nKHJlc3VsdFBh
dHRlcm4uZ2V0KCksIEZDX0ZPTlRfVkFSSUFUSU9OUywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBG
Y0NoYXI4Kj4odmFyaWFudHMudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICNlbmRpZgotICAgIGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250
RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
UGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUs
IGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKKyAgICBhdXRvIHBsYXRmb3JtRGF0YSA9
IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2UuZ2V0KCksIHJlc3VsdFBhdHRl
cm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBmaXhlZFdpZHRo
LCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50
YXRpb24oKSk7CiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBmb250IGhhcyBhbiBlbmNvZGluZyBj
b21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNvbmZpZyBjdXJyZW50bHkKICAgICAvLyBz
dXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlwZUNoYXJJbmRleDogVW5pY29kZSwg
U3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElmIHRoaXMgZm9udCBkb2Vzbid0IGhhdmUg
b25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9uJ3Qgc2VsZWN0IGl0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggMTM3NjVm
NDNkYTg2NjhkMmRlODJlNjcxZDgxODBkNjg0NDI4NDNiMC4uNTg5NDNkMmE5MGRmYzU1MDFmMmRj
YWE4ZWNmMGU5MGUxYWM3ZjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmUKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAgICBpZiAoRlRfTmV3X01lbW9y
eV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1ZmZlci5k
YXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNlKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KIAogYm9vbCBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApp
bmRleCA4Njk4MTM2NDUxM2I4ZTZmMGQ3YjJkZGE1YmI4ZDFmODcyZTdmNTc2Li43MWZkYTBkOTI0
Y2QyNTVkYjNlZjEwNzdmOWUxMDc4MTRlMjQzZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC05NSw3ICs5NSw3IEBAIFJlZlB0
cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEZv
cm1hdCBmb3JtYXQsIGludCB3CiAgICAgICAgIG51bVRpbGVzID0gMDsKICAgICB9CiAKLSAgICBh
dXRvIHRleHR1cmVJZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1bnNpZ25lZD4+KG51bVRp
bGVzKTsKKyAgICBhdXRvIHRleHR1cmVJZHMgPSBtYWtlVW5pcXVlPFZlY3Rvcjx1bnNpZ25lZD4+
KG51bVRpbGVzKTsKICAgICB0ZXh0dXJlSWRzLT5maWxsKDAsIG51bVRpbGVzKTsKIAogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmNGE0YmExYThhY2FkNWUyMDVhNTkz
YTQ4Zjc0ODZiMjhjN2JlMWQ1Li5mNmUxZTE0NjkzYzc5ODQyNTJmNzhlYjc4MGQwMjRjZjY0NWVh
NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzCiB7CiAgICAgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsK
ICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5
ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4o
cGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICB9CiB9
CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAogc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJl
ZCgpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkIHx8IGlzTGl2ZVN0cmVh
bSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIApAQCAtMjM3Niw3ICsyMzc2LDcgQEAg
R3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsoKSBjb25z
dAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJv
dmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKQotICAgICAgICBtX2F1
ZGlvU291cmNlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU291cmNlUHJvdmlkZXJH
U3RyZWFtZXI+KCk7CisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IG1ha2VVbmlxdWU8
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKIH0KIAogQXVkaW9Tb3VyY2VQcm92aWRl
ciogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApp
bmRleCAwNzI4ZWViNjQyMGFmZmI5NmM3YTFhNDlmNTU1NWQ5ZjNiM2Q5OGQ1Li5jN2FjNWIyYmU3
NDUxODM2OTQwMzI3MGY0NmIyZmY2YzFjYTM4NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03MTAsMTkgKzcxMCwxOSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21w
b3NpdG9yKCkKICAgICAgICAgICAgIGlmICghcHJveHkuaXNBY3RpdmUoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1l
SG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRl
cj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNr
VmlkZW9TaW5rKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9s
ZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1w
bGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5r
KTsKIAogICAgICAgICAgICAgR0x1aW50IHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJl
SUQoKTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgICAgICBpZiAodGV4dHVyZUlEKSB7Ci0g
ICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZy
YW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAg
ICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFn
cygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZm
ZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGTW92ZShmcmFtZUhvbGRlcikpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHByb3h5
LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6ZSgpLCBHTF9ET05UX0NBUkUpOwog
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbGF5ZXJCdWZmZXIpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVN
YXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkpOwogICAgICAgICAgICAgICAgICAgICB0ZXh0
dXJlLT5yZXNldChmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+aGFzQWxwaGFDaGFu
bmVsKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9G
bGFnKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnVwZGF0ZVRleHR1cmUobGF5ZXJCdWZmZXIt
PnRleHR1cmVHTCgpKTsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0RXh0cmFGbGFn
cyhtX3RleHR1cmVNYXBwZXJGbGFncyB8IChmcmFtZUhvbGRlci0+aGFzQWxwaGFDaGFubmVsKCkg
PyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCkpOwpAQCAtOTEyLDcgKzkxMiw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxl
LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdz
dFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRl
b0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9
IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVy
ZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXIt
PnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAtOTIzLDcgKzkyMyw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgICAgIHNpemUgPSBzaXplLnRyYW5zcG9zZWRTaXpl
KCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4
dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
PihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBtX3ZpZGVvVGV4
dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhU
VVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0
dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVyZUlELCBz
aXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwg
Zm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0KQEAgLTkz
OSw3ICs5MzksNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBpZiAoIUdTVF9JU19TQU1QTEUo
bV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZs
YWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJh
bWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgp
LCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9IGZy
YW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJRCkKQEAgLTk1Myw3ICs5
NTMsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9U
ZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CisgICAgICAgIG1fdmlkZW9U
ZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRF
WFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0
dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVyZUlELCBz
aXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTE0Nyw4ICsxMTQ3LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlz
XShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAg
ICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigw
LCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7
Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PiBo
b2xlUHVuY2hDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckhvbGVQdW5jaENsaWVu
dD4obV92aWRlb1NpbmsuZ2V0KCkpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdM
OjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9IG1ha2VVbmlx
dWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQoKSk7CiAgICAgICAg
ICAgICBsYXllckJ1ZmZlci0+c2V0SG9sZVB1bmNoQ2xpZW50KFdURk1vdmUoaG9sZVB1bmNoQ2xp
ZW50KSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3ZlKGxheWVyQnVm
ZmVyKSk7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwCmluZGV4IDk3M2Y0ZDRmMDAzMjM1NmYxNzdlYmQ3ZmM0YjllOTRhNTI5MmY5NWEuLjVm
Zjk3Mjg2NTY2MzE2NDNiMjkwM2ZiZWM5ZTM5NDViYzIzMjkzYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgc3RhdGlj
IGdib29sZWFuIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KEdzdEJhc2VTcmMqIGJhc2VTcmMsIGJv
b2wgbm90aWZ5QXN5bmNDb20KICAgICAgICAgICAgIGxvYWRPcHRpb25zIHw9IFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0YTsKICAgICAgICAgcHJpdi0+
cmVzb3VyY2UgPSBwcml2LT5sb2FkZXItPnJlcXVlc3RSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3Qo
cmVxdWVzdCksIGxvYWRPcHRpb25zKTsKICAgICAgICAgaWYgKHByaXYtPnJlc291cmNlKSB7Ci0g
ICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5nZXQoKSwgUmVzb3VyY2VSZXF1
ZXN0KHJlcXVlc3QpKSk7CisgICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KG1h
a2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5nZXQoKSwg
UmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNU
KHByb3RlY3Rvci5nZXQoKSwgIlN0YXJ0ZWQgcmVxdWVzdCIpOwogICAgICAgICAgICAgaWYgKG5v
dGlmeUFzeW5jQ29tcGxldGlvbikKICAgICAgICAgICAgICAgICBnc3RfYmFzZV9zcmNfc3RhcnRf
Y29tcGxldGUoR1NUX0JBU0VfU1JDKHNyYyksIEdTVF9GTE9XX09LKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA0
ZTlkMTlkODUyN2Q2OTYyMGNmNWFhOTQxMDczNjI4MzgxYjNjOWYwLi5lNjg4MGQ5OGU3ZmNhZDFk
MDUzZjg0ZWQzOGE2ZmQ4MTk4ZGU3Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0cmFyIHJlCiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVy
V2ViS2l0RWxlbWVudHMoKTsKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfbXNl
X2RlYnVnLCAid2Via2l0bXNlIiwgMCwgIldlYktpdCBNU0UgbWVkaWEgcGxheWVyIik7CiAgICAg
aWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+
KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBl
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgfQog
fQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
OjpzZXRSYXRlKGZsb2F0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJj
ZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNvdXJj
ZVNldHVwKEdzdEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmluZGV4IDExNzI0NTg0MTBlOWExNDUzYjYzNWIw
ZjhkOTFiOWZiNGE2OTZjNTguLjBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5j
aC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3Bw
CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpwdXNo
TmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBo
b2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0g
bWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBU
ZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOwogICAgICAgICAg
ICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAgICAgICB9
OwogCkBAIC0xNDEsNyArMTQxLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUUKIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaD4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikg
eyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7
IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggZjBkMDRkNGM2M2Q5MzEyMGJjZTgwNWFiOGZlYTI4
N2EwMWUwNDQyYS4uMmFlZjBmZTg0YTY3MWI3MjJjNGI0NTNmY2U3MTdiNjZhOTdlNmMxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaApAQCAtNzksNyAr
NzksNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgIE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkVt
cHR5OyB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9OwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OwogCiAgICAgYm9vbCBk
aWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IGUxYTNh
ODY2MzE0NzVjYWI3YTliMTcxYjQwNjJkMzkzZDg5MGU2MDYuLmVjZjg5NjkzZGEzMzg1MjAxMmU3
NTAyMTEyOTk4MDk5ZWM4ZGFjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPQm94LmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgRGF0YVZpZXc7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SVNPQm94KCkgPSBk
ZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCmluZGV4IDcwYmI4NjExMzE2ZTY4NWI3NmI3
ODgzOGI1ZWQwNjAzNzZiOWIxYTkuLjE4ODNiYTQ3YmRmM2E1MmFmYjJmZjdkMGRkNWNkOWRjZDdj
ZGQ4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09PcmlnaW5hbEZvcm1hdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2luYWxGb3JtYXRC
b3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9y
bWF0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJD
QyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcm1hIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25T
Y2hlbWVJbmZvQm94LmNwcAppbmRleCBkOGQ3NDAxYTc1NjAwNDZjOThhZmY4Y2IxMWViMmU3MjIz
Yzk4MWNlLi5iZGZkYmRjOTZjZjBlMWI1MGE3Mjg1ODI4OGM5YjJmNDc0ZjdkMGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNj
aGVtZUluZm9Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBJ
U09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVk
JiBvZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChvcHRpb25hbEJveFR5
cGUudmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVUeXBlQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0g
ICAgICAgIG1fc2NoZW1lVHlwZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lVHlwZUJv
eD4oKTsKKyAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0gbWFrZVVuaXF1ZTxJU09TY2hlbWVUeXBl
Qm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lVHlwZUJveC0+cmVhZCh2aWV3LCBsb2NhbE9m
ZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTY4LDcgKzY4LDcgQEAgYm9v
bCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2ln
bmVkJiBvZmZzZXQpCiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLmZp
cnN0ID09IElTT1NjaGVtZUluZm9ybWF0aW9uQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAgICAg
IG1fc2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZUluZm9y
bWF0aW9uQm94PigpOworICAgICAgICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0gbWFrZVVuaXF1
ZTxJU09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZUluZm9y
bWF0aW9uQm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAppbmRleCBmMzdiNzYyNDlk
OGUwMGZhMTdhMDU1OTI5ZTc3NjY4NTEzNzMzMzY2Li44ZTU2NzNlMDUxNmE2NTAxNGY1Y2Q0OWY2
MWFhN2I3NTM4ZDJjYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJU09TY2hlbWVUeXBlQm94
OwogY2xhc3MgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09C
b3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAi
c2luZiI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKaW5kZXggYjRmMjc3YTY4
NDdjYzIwZDRmYzlkNjI2ZjljYWNjNzQzMGFkYWY3MC4uYzgzYzRmZjdiMzhhYmYxYWUyMmZmZTVl
NzJjN2ExZjg2YTA4ZWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIGJvb2wgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKERhdGFWaWV3
JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICBpZiAobG9jYWxPZmZzZXQgKyBzY2hl
bWVTcGVjaWZpY0JveFR5cGUudmFsdWUoKS5zZWNvbmQgPiBvZmZzZXQgKyBtX3NpemUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9zY2hlbWVTcGVjaWZpY0RhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKKyAgICAgICAgbV9zY2hl
bWVTcGVjaWZpY0RhdGEgPSBtYWtlVW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKICAg
ICAgICAgaWYgKCFtX3NjaGVtZVNwZWNpZmljRGF0YS0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25C
b3guaAppbmRleCA5ZWRiMTg3OGE5YmE5MTliZWIxOWQ3YjYyMjNkOWU3ZTQ2NGY2ODU4Li5lOGVj
MGM0YzY5Yjc0ZTgzMzQ0OTg5NDFmMjRlZWU0MTBmMmNkZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3Jt
YXRpb25Cb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9ybWF0aW9uQm94IDogcHVibGljIElTT0Jv
eCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCBmaW5hbCA6
IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUo
KSB7IHJldHVybiAic2NoaSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKaW5kZXggNjE5NjEwMzlmNDhjZjJi
YzZlZTdiODg0ODA3M2M4Mzc2ZTU4MzEzMC4uNGI4ZjI2MzM3NTBmOGFkZjkwYmMyN2MyZDBjZjE0
ZWY5ODJjMTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1NjaGVtZVR5cGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlwZUJveCA6IHB1
YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3gg
ZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBi
b3hUeXBlTmFtZSgpIHsgcmV0dXJuICJzY2htIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgK
aW5kZXggZjRlZmUyODEwNTFlM2M3YjI5ZGJlZjc4ZTQ0ZGEzYjAzODc4MDNmMy4uNDdmYTQ5NzI0
NmM3MTViZTFkMmNlZjliMGVhODdkZDdmNzllZjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3gu
aApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCBmaW5hbCA6IHB1YmxpYyBJ
U09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyBy
ZXR1cm4gInRlbmMiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1ZUVEN1ZS5jcHAKaW5kZXggOWVjNDA4OTRmMWUyOGEwNWEyMTRjYjMyMzUxNGY3
YjEzOTU1ZDI4NC4uNGI1MTZlZThkZDdmN2QyMzdlOGQ2MjcyNzk3YjAzMmRkMWY1YWNjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgSlNDOjpEYXRhVmlldzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBJU09TdHJpbmdCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElT
T1N0cmluZ0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgY29udGVudHMoKSB7IHJldHVybiBtX2NvbnRlbnRzOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAppbmRleCBhNjE2MGI2NmFl
OTQ2ODIwNjc3YWQyOTM0YjE4MWRlYjkzY2M0ZjQ5Li5hZTIzYmVmZmZlZDY0YTZkZTI4OTE3NmU0
MTUxMDExZjA2N2M5ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1ZUVEN1ZS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIE4gYnl0ZXMgOiBDdWVUaW1lQm94IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBD
dWVTZXR0aW5nc0JveCA6IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlUGF5bG9hZEJv
eCA6IGJveCA6IHJlcXVpcmVkCi1jbGFzcyBJU09XZWJWVFRDdWUgOiBwdWJsaWMgSVNPQm94IHsK
K2NsYXNzIElTT1dlYlZUVEN1ZSBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAg
IElTT1dlYlZUVEN1ZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGNvbnN0IE1l
ZGlhVGltZSYgZHVyYXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXgg
M2Q1ZWYwOWI3ZDk0MDMwNTk3NDFkODA4MjhmNTE4ZGVmYzg0MjNiNS4uZWYxMGIzM2E1NGIzNWQ3
ZDU3MWYwNmU0MTZmMTI5MjIwODlhYzA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cApAQCAtODQsNyArODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpKTsKIH0K
IAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJp
bmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKaW5kZXgg
MTA5YzJjNTc3Njc5YTEyMTRhYTZlYTEwMWM2ZjQ4MGZiYTJlYzYwMS4uNWJlZTYxM2ZjZjZiNDZh
MDdjNjI4ZTU4MDE2ZjQ5YmI5MDIxYjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRl
Z3JhdGlvbi5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTY2VuZUludGVncmF0aW9uOjpyZXF1
ZXN0VXBkYXRlKCkKIAogc3RkOjp1bmlxdWVfcHRyPFNjZW5lSW50ZWdyYXRpb246OlVwZGF0ZVNj
b3BlPiBTY2VuZUludGVncmF0aW9uOjpjcmVhdGVVcGRhdGVTY29wZSgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxVcGRhdGVTY29wZT4obWFrZVJlZigqdGhpcykpOwogfQogCiBTY2VuZUlu
dGVncmF0aW9uOjpDbGllbnQ6On5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDJiMWFl
Y2YwZDFiN2U2YTM0MWJmOTRiZmZhZWQyMjBmMWE0NTg2MzguLjUwZTBjM2M3ZDk3NjgyNmJhN2Ji
ODE4NWQxZWUxNDIxMjlhZGEwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGF1dG8gY3Jl
YXRlQ29tbWFuZChBcmdzJiYuLi4gYXJndW1lbnRzKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYmFzZV9vZjxPcGVyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogYXV0byBjcmVhdGVDb21tYW5k
KCkgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8T3BlcmF0aW9uRGF0YTw+LCBU
Pjo6dmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxQYWludGluZ09wZXJhdGlvbj4+CiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUPigpOwog
fQogCiBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpDYWlyb09wZXJhdGlvblJlY29yZGVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgUGFpbnRpbmdPcGVyYXRpb25zJiBjb21tYW5kTGlzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcApp
bmRleCAwYzhhNjcwZTNhMGEzNjMwN2UzZjI5OWVjZGEwMjU1MmZkNzc0ZWQxLi5iMzUwOGQ1MTdi
MjRlNDc1YzA4YWY0OGIzM2U0MzFmZDI3OTIwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCkBAIC03MCw4ICs3MCw4IEBAIFBh
aW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGFpbnRpbmcoQnVmZmVyJiBidWZm
ZXIpCiAgICAgICAgIH0pOwogCiAgICAgbV9jYWlyby5jb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9f
Y3JlYXRlKG1fY2Fpcm8uc3VyZmFjZS5nZXQoKSkpOwotICAgIG1fcGxhdGZvcm1Db250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWlyby5j
b250ZXh0LmdldCgpKTsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmNyZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CisgICAgbV9wbGF0Zm9ybUNv
bnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvPihtX2NhaXJv
LmNvbnRleHQuZ2V0KCkpOworICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
Y3JlYXRlRmFjdG9yeSgqbV9wbGF0Zm9ybUNvbnRleHQpKTsKIH0KIAogUGFpbnRpbmdDb250ZXh0
Q2Fpcm86OkZvclBhaW50aW5nOjp+Rm9yUGFpbnRpbmcoKQpAQCAtMTA0LDEwICsxMDQsMTAgQEAg
dm9pZCBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OnJlcGxheShjb25zdCBQYWlu
dGluZ09wZXJhdGlvbnMmIHBhaW50aW4KIAogUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29y
ZGluZzo6Rm9yUmVjb3JkaW5nKFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbmdPcGVyYXRpb25z
KQogewotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ+KAorICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ+KAogICAgICAgICBbJnBhaW50aW5nT3BlcmF0aW9uc10oV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihjb250ZXh0LCBw
YWludGluZ09wZXJhdGlvbnMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fpcm9P
cGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRpbmdPcGVyYXRpb25zKTsKICAgICAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFj
a2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGQ0YzliNjA1YjRjZDI4ZTM0OGVm
ZDg1MzM1MDM4YjU4YzlhNGRkZmEuLjhlMzc5MGY3YWI1NGY2YjNkOTU2ZjMwNzA0YzQyOWMyYWNk
YzMxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzcsNyArMzcsNyBAQCBhdXRvIEJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9yeQog
ewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXShCYWNraW5nU3RvcmUmKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9u
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJ
bXBsLmNwcAppbmRleCAzOGZkZDkzZGE2YjEzODgzMTQwNTkxNjUzY2RmMjllMDdkZTMyMzk2Li43
NTY5MmM3YzRhN2JmZGIxODcxZGYxODAyZTM4Nzc1MzZiNjE1NTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9z
aXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1
cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRvIENvbXBvc2l0aW9uTGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1
cm4gRmFjdG9yeSgKICAgICAgICAgW10odWludDY0X3QsIENvbXBvc2l0aW9uTGF5ZXImKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGlvbkxheWVyVGV4dHVy
ZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21wb3NpdGlv
bkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBw
ZXJJbXBsLmNwcAppbmRleCA1NjE3MjhiNWVmMWY0MGQ4MGM1MzU5OTI2NzEwNjZhZDg3NDgxOWE3
Li4yZmIwZWM5NTkxNWFlYjBiYTA5NmY4MGJjNjkwZDJmM2IyODQ4YzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29u
dGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgYXV0byBDb250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbDo6Y3JlYXRlRmFjdG9yeShDbGllbnQmIGNsaWVudCkgLT4gRmFjdG9yeQogewogICAg
IHJldHVybiBGYWN0b3J5KAogICAgICAgICBbJmNsaWVudF0oQ29udGVudExheWVyJikgewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGw+KGNsaWVudCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFHQzNETGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAKaW5kZXggNTJlYzcwYjY4MWY3YmM1NjNhNjc0
NzU0MzYyMzg3NmIwMzEzOWE5Yi4uOWE5YmQ0NjgzYjI2NzQyYWZlY2IxNDkxZjYxNDRmMmE3OGM1
OTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAKQEAgLTg4LDcg
Kzg4LDcgQEAgdm9pZCBHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgICAgICBh
dXRvJiBwcm94eSA9IGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsPihtX2NvbnRlbnRMYXllci0+aW1wbCgpKS5wcm94eSgpOwogCiAgICAgICAgIExvY2tIb2xk
ZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKHN0
ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4
dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2lu
dGVybmFsQ29sb3JGb3JtYXQpKTsKKyAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIobWFrZVVu
aXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9z
aXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xv
ckZvcm1hdCkpOwogICAgIH0KIAogICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2lu
Z1RleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBhMmFlMzRhMzEzMjdlODcxNTY1NDE0NmQxOGY3
N2M3YTY3ZjI0MjE2Li5kMzUzYzhiZTFiNWJmYTExNmI2Y2I4NTIwOTcwMjc3Y2M5MzI0NWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICBy
ZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10oSW1hZ2VCYWNraW5nJikgewotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw+KCk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVy
SW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwCmluZGV4IGU2ODQ4ZmNlY2E0MWU5NzM2ZjJhMzgxN2E5ZmQwM2NlYmFlM2FjMTEuLmI5
NjM2M2I1NTE5MzU2YzhjZGY0NjU0MzYzMjZlZDA2Y2VjZWQ4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMzRCYgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25z
KQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9w
ZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0g
bWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7
CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGIyNGRmMDM1ZTI4OGUxZWIyZjhh
ZjlmN2FiOTFkNzc5ZDBhY2E0OWUuLjJhMGU1Yjc2ZTRkNmJhYjcwZTkwYjJmM2QyOGViNDNjMDdm
NDI1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cApAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFk
ZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgQU5HTEVSZXNvdXJjZXMuSGFzaEZ1bmN0
aW9uID0gbmFtZUhhc2hGb3JTaGFkZXI7CiAKICAgICBpZiAoIW5hbWVIYXNoTWFwRm9yU2hhZGVy
cykKLSAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFk
ZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gbWFrZVVuaXF1
ZTxTaGFkZXJOYW1lSGFzaD4oKTsKICAgICBzZXRDdXJyZW50TmFtZUhhc2hNYXBGb3JTaGFkZXIo
bmFtZUhhc2hNYXBGb3JTaGFkZXJzLmdldCgpKTsKICAgICBtX2NvbXBpbGVyLnNldFJlc291cmNl
cyhBTkdMRVJlc291cmNlcyk7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6bWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEFO
R0xFU2hhZGVyCiAgICAgICAgIC8vIEF0dHJpYnV0ZXMgYXJlIGEgc3BlY2lhbCBjYXNlOiB0aGV5
IG1heSBiZSByZXF1ZXN0ZWQgYmVmb3JlIGFueSBzaGFkZXJzIGhhdmUgYmVlbiBjb21waWxlZCwK
ICAgICAgICAgLy8gYW5kIGFyZW4ndCBldmVuIHJlcXVpcmVkIHRvIGJlIHVzZWQgaW4gYW55IHNo
YWRlciBwcm9ncmFtLgogICAgICAgICBpZiAoIW5hbWVIYXNoTWFwRm9yU2hhZGVycykKLSAgICAg
ICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZGVyTmFt
ZUhhc2g+KCk7CisgICAgICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBtYWtlVW5pcXVl
PFNoYWRlck5hbWVIYXNoPigpOwogICAgICAgICBzZXRDdXJyZW50TmFtZUhhc2hNYXBGb3JTaGFk
ZXIobmFtZUhhc2hNYXBGb3JTaGFkZXJzLmdldCgpKTsKIAogICAgICAgICBhdXRvIGdlbmVyYXRl
ZE5hbWUgPSBnZW5lcmF0ZUhhc2hlZE5hbWUobmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xFUy5jcHAKaW5kZXggMjQzMDQ2ZDk4OWFkNzM4ZjdjOWY3MTQ5NTU2N2M5NmJi
MzRjNTY0MS4uNzBhMjBkNTBjMzUyMWE2MTIzZTZlZmFmMWY0NzY4ZjY0OTVjZGU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4
dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlm
ICghbV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAg
ICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCBp
c0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogI2VuZGlm
CkBAIC0yNzEsNyArMjcxLDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcwogR3JhcGhpY3NDb250
ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRy
aWJ1dGVzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRl
clN0eWxlLCBHcmFwaGljc0NvbnRleHQzRCogc2hhcmVkQ29udGV4dCkKICAgICA6IG1fYXR0cnMo
YXR0cmlidXRlcykKICAgICAsIG1fY29tcGlsZXIoaXNHTEVTMkNvbXBsaWFudCgpID8gU0hfRVNT
TF9PVVRQVVQgOiBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQotICAgICwgbV9wcml2YXRl
KHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJT
dHlsZSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNoYXJlZENvbnRl
eHQsICFzaGFyZWRDb250ZXh0KTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHQzRFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggZWQ2Y2NmMTk0
YmJlZTFlMDBmZDQzOWY2MWE2ZGU2MmU0MDMwMmVhMy4uOGZkM2FkNGY3MmQ3NjRiZDk1ZDIyMGY1
ODFlZDJiNzk2Mjg4M2M5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHAKQEAgLTEwNiw5ICsxMDYsOSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhv
cwogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwog
I2lmIFVTRShOSUNPU0lBKQotICAgIG1fbmljb3NpYUxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxO
aWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CisgICAgbV9uaWNvc2lhTGF5
ZXIgPSBtYWtlVW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsK
ICNlbHNlCi0gICAgbV90ZXhtYXBMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBl
ckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOworICAgIG1fdGV4bWFwTGF5
ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcj4oKnRoaXMsIHJl
bmRlclN0eWxlKTsKICNlbmRpZgogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CkBAIC0zMjUs
MTAgKzMyNSwxMCBAQCBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNp
b25zKCkKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykgewogI2lmIFVTRShPUEVOR0xfRVMpCiAgICAg
ICAgIC8vIGdsR2V0U3RyaW5naSBpcyBub3QgYXZhaWxhYmxlIG9uIEdMRVMyLgotICAgICAgICBt
X2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlz
LCAgZmFsc2UpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMz
RE9wZW5HTEVTPih0aGlzLCAgZmFsc2UpOwogI2Vsc2UKICAgICAgICAgLy8gRnJvbSBPcGVuR0wg
My4yIG9uIHdlIHVzZSB0aGUgQ29yZSBwcm9maWxlLCBhbmQgdGhlcmUgd2UgbXVzdCB1c2UgZ2xH
ZXRTdHJpbmdpLgotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVu
c2lvbnMzRE9wZW5HTD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAz
MjApOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5H
TD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlm
CiAgICAgfQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1M
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcAppbmRleCAxNGYxZGJmMThkOTFiMzkwNzVlMmQ1
MGYyMTQ5Yjc3NmJiYzE3NDkzLi42NjMyMzE1Njk1YmEyMWMyNjdkMTU1OTMyZWJhOTE0N2ZiNjZh
ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNw
cApAQCAtODQsNyArODQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6
c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVy
KG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOwotICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQ
cm94eS0+cHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXpl
LCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOworICAgICAgICBtX3Bs
YXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1
cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOwogICAgIH0K
IAogICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwCmluZGV4IDk3NGI4NTc4Yjg4YWE2NDM1MDkxZThiMGMzOGJiMmRiNzEwZWYxMDIuLmEyZjc1
ODY2ZTMyM2I4ZmRiYTQzYTAwN2Q0NDdhYWE0NjU3NmJmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwCkBAIC0xODYsNyArMTg2LDcgQEAgVGV4dHVyZU1hcHBlckdMOjpUZXh0dXJlTWFwcGVyR0wo
KQogCiAgICAgbV9kYXRhID0gbmV3IFRleHR1cmVNYXBwZXJHTERhdGEocGxhdGZvcm1Db250ZXh0
KTsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgbV90ZXh0dXJlUG9vbCA9IHN0ZDo6
bWFrZV91bmlxdWU8Qml0bWFwVGV4dHVyZVBvb2w+KG1fY29udGV4dEF0dHJpYnV0ZXMpOworICAg
IG1fdGV4dHVyZVBvb2wgPSBtYWtlVW5pcXVlPEJpdG1hcFRleHR1cmVQb29sPihtX2NvbnRleHRB
dHRyaWJ1dGVzKTsKICNlbmRpZgogfQogCkBAIC03OTAsNyArNzkwLDcgQEAgUmVmPEJpdG1hcFRl
eHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZShHTGludCBpbnRlcm5hbEZvcm1h
dCkKIAogc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OnBsYXRm
b3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHR1cmVNYXBwZXJHTD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+
KCk7CiB9CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmNwcAppbmRleCA3YWZkZjMwYTA1YmNhNTM5N2I4MDE4YmZlYmQ4OWUwZTFkYTUwMzMz
Li5lMTFhMGJiMjdiODEwYzJkNTI3NmIyYTliMGM1MDlmODg5NTA2NmMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmYKICAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBU
ZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpLCBt
X2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5yZXNldChtX3NpemUpOwogICAgIHN0YXRp
Y19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUuZ2V0KCkpLmNvcHlGcm9tRXh0ZXJuYWxU
ZXh0dXJlKG1fdGV4dHVyZUlEKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4oV1RGTW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCmluZGV4IGM3MTRm
NmQ3OGMxY2YxYTYxZDRkZmY2YjQyMDUyMWIwMmVjZDdjNTAuLjM3OTM2NzVhYzhkNmIzYzMyYTNi
MzE4MTkzZTQ5YTdiMzdkYzQ4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5jcHAKQEAgLTcxLDggKzcxLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRv
ciogY28KICAgICBpZiAobV90YXJnZXRMYXllciAmJiBtX2N1cnJlbnRCdWZmZXIpCiAgICAgICAg
IG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsK
IAotICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVu
TG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1
cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VV
bnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7Ci0gICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGlt
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7CisgICAg
bV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNU
aW1lckZpcmVkKTsKKyAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lciA9IG1ha2VVbmlx
dWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxv
b3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNv
bXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKTsKIAogI2lmIFVTRShHTElCX0VWRU5UX0xP
T1ApCiAgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXItPnNldFByaW9yaXR5KFJ1bkxv
b3BTb3VyY2VQcmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVUaW1lcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmlu
ZGV4IDM2N2Q4YTUzY2YzNzBkMjIwMmQ2ZjM0MDFjZGNiM2EwMmZmNDJjMmIuLmQ0NzU3MTBiYTBj
ZGRmYmNkYmRhMGM2OGNlMzBiODFlZmFhZDY5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC05ODEsNyArOTgxLDcg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkK
IAogICAgIC8vIEVuc3VyZSB0aGUgVGlsZWRCYWNraW5nU3RvcmUgb2JqZWN0LCBhbmQgZW5mb3Jj
ZSBhIGNvbXBsZXRlIHJlcGFpbnQgaWYgaXQncyBub3QgYmVlbiBwcmVzZW50IHlldC4KICAgICBp
ZiAoIWxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSkgewotICAgICAgICBsYXllclN0YXRlLm1h
aW5CYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQmFja2luZ1N0b3JlPihpbXBs
LCBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOworICAgICAgICBsYXllclN0YXRlLm1haW5CYWNr
aW5nU3RvcmUgPSBtYWtlVW5pcXVlPFRpbGVkQmFja2luZ1N0b3JlPihpbXBsLCBlZmZlY3RpdmVD
b250ZW50c1NjYWxlKCkpOwogICAgICAgICBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQg
PSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdT
dG9yZS5jcHAKaW5kZXggM2JlNDMxMWRlYWEwMjQ5N2M3ZWQxY2RjYTEzNDViYTVhNjgwMzEwOS4u
NGE2OTc4MjJlNGRlMmNkYjhiNjZmODFkNDA0ZDhkYmU4MmI0OTg3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAg
dm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoY29uc3QgSW50UmVjdCYgdmlzaWJs
ZVJlY3QsIGNvbnN0IEludFJlY3QmIHMKICAgICB1bnNpZ25lZCB0aWxlc1RvQ3JlYXRlQ291bnQg
PSB0aWxlc1RvQ3JlYXRlLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgdGls
ZXNUb0NyZWF0ZUNvdW50OyArK24pIHsKICAgICAgICAgVGlsZTo6Q29vcmRpbmF0ZSBjb29yZGlu
YXRlID0gdGlsZXNUb0NyZWF0ZVtuXTsKLSAgICAgICAgbV90aWxlcy5hZGQoY29vcmRpbmF0ZSwg
c3RkOjptYWtlX3VuaXF1ZTxUaWxlPigqdGhpcywgY29vcmRpbmF0ZSkpOworICAgICAgICBtX3Rp
bGVzLmFkZChjb29yZGluYXRlLCBtYWtlVW5pcXVlPFRpbGU+KCp0aGlzLCBjb29yZGluYXRlKSk7
CiAgICAgfQogICAgIHJlcXVpcmVkVGlsZUNvdW50IC09IHRpbGVzVG9DcmVhdGVDb3VudDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCBjODhlOWJlZjlkNjZjYTJiNTUwMThjOTBm
NGIwYTQyOGI0NjgyZWY4Li40ZWFmMDAxMTIwYzQ3ZmZjZTU1YWI0ZGZhOTIxODNjZThiMzE5NGY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBUcmFuc2Zv
cm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPShjb25zdCBUcmFuc2Zvcm1TdGF0ZSYg
b3RoZXIpCiAgICAgaWYgKG1fbWFwUXVhZCkgewogICAgICAgICBtX2xhc3RQbGFuYXJRdWFkID0g
b3RoZXIubV9sYXN0UGxhbmFyUXVhZDsKICAgICAgICAgaWYgKG90aGVyLm1fbGFzdFBsYW5hclNl
Y29uZGFyeVF1YWQpCi0gICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3Rk
OjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCpvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFk
KTsKKyAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBtYWtlVW5pcXVlPEZs
b2F0UXVhZD4oKm90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbnVsbHB0cjsKICAgICB9
CkBAIC01MCw3ICs1MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0
b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBtX2FjY3VtdWxhdGVkVHJhbnNm
b3JtID0gbnVsbHB0cjsKIAogICAgIGlmIChvdGhlci5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtKQot
ICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4oKm90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOworICAgICAgICBt
X2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
Km90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOwogICAgICAgICAKICAgICByZXR1cm4gKnRo
aXM7CiB9CkBAIC0xMjksMTIgKzEyOSwxMiBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjphcHBseVRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtRnJvbUNvbgogICAg
IC8vIElmIHdlIGhhdmUgYW4gYWNjdW11bGF0ZWQgdHJhbnNmb3JtIGZyb20gbGFzdCB0aW1lLCBt
dWx0aXBseSBpbiB0aGlzIHRyYW5zZm9ybQogICAgIGlmIChtX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
KSB7CiAgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURpcmVjdGlvbikK
LSAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyICogKm1fYWNjdW11bGF0
ZWRUcmFuc2Zvcm0pOworICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIgKiAqbV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYWNjdW11
bGF0ZWRUcmFuc2Zvcm0tPm11bHRpcGx5KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAgIH0g
ZWxzZSBpZiAoYWNjdW11bGF0ZSA9PSBBY2N1bXVsYXRlVHJhbnNmb3JtKSB7CiAgICAgICAgIC8v
IE1ha2Ugb25lIGlmIHdlIHN0YXJ0ZWQgdG8gYWNjdW11bGF0ZQotICAgICAgICBtX2FjY3VtdWxh
dGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJh
bnNmb3JtRnJvbUNvbnRhaW5lcik7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBt
YWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsK
ICAgICB9CiAgICAgCiAgICAgaWYgKGFjY3VtdWxhdGUgPT0gRmxhdHRlblRyYW5zZm9ybSkgewpA
QCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OnNldExhc3RQbGFuYXJTZWNv
bmRhcnlRdWFkKGNvbnN0IEZsb2F0UXVhZCogcXVhZCkKICAgICAvLyBNYXAgdGhlIHF1YWQgYmFj
ayB0aHJvdWdoIGFueSB0cmFuc2Zvcm0gb3Igb2Zmc2V0IGJhY2sgaW50byB0aGUgbGFzdCBmbGF0
dGVuaW5nIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgRmxvYXRRdWFkIGJhY2tNYXBwZWRRdWFkKCpx
dWFkKTsKICAgICBtYXBRdWFkKGJhY2tNYXBwZWRRdWFkLCBpbnZlcnNlRGlyZWN0aW9uKCkpOwot
ICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVh
ZD4oYmFja01hcHBlZFF1YWQpOworICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBtYWtl
VW5pcXVlPEZsb2F0UXVhZD4oYmFja01hcHBlZFF1YWQpOwogfQogCiB2b2lkIFRyYW5zZm9ybVN0
YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNmb3JtRGlyZWN0aW9uIGRpcmVjdGlv
biwgYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaAppbmRleCAx
MDg2Mzc0MDBhMjBmYTJmMDlkZjZhZDQzOTMzY2E3ZGExN2Y0ODYxLi5iNjI1ODM2YTVjZTIyNWJm
NDdmMzMwYzA4YzI5ZDhjNzU2NTJlZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCkBAIC04
NCw3ICs4NCw3IEBAIGNsYXNzIFRyYW5zZm9ybVN0YXRlIHsKICAgICAgICAgLy8gV2UgbXVzdCBi
ZSBpbiBhIGZsYXR0ZW5lZCBzdGF0ZSAobm8gYWNjdW11bGF0ZWQgb2Zmc2V0KSB3aGVuIHNldHRp
bmcgdGhpcyBzZWNvbmRhcnkgcXVhZC4KICAgICAgICAgQVNTRVJUKG1fYWNjdW11bGF0ZWRPZmZz
ZXQgPT0gTGF5b3V0U2l6ZSgpKTsKICAgICAgICAgaWYgKHF1YWQpCi0gICAgICAgICAgICBtX2xh
c3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCpxdWFk
KTsKKyAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBtYWtlVW5pcXVlPEZs
b2F0UXVhZD4oKnF1YWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2xhc3RQbGFuYXJT
ZWNvbmRhcnlRdWFkID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IGQzMWEyNTc5ZmIx
ZTFjNzk0MjVkMDI5MDVlYmViYzg4ZDE0YWRkNTAuLjhmNzcwMjc1ZGU2OTk1NjhjODUxNWFlYTBm
MmNmYTBlNTIwNTY3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC02NDIsNyArNjQyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGUKICAgICBib29sIHN5bnRoZXNpemVCb2xkID0gaXNHRElGb250V2VpZ2h0
Qm9sZCh3ZWlnaHQpICYmICFpc0dESUZvbnRXZWlnaHRCb2xkKGxvZ0ZvbnQubGZXZWlnaHQpOwog
ICAgIGJvb2wgc3ludGhlc2l6ZUl0YWxpYyA9IGlzSXRhbGljKGZvbnREZXNjcmlwdGlvbi5pdGFs
aWMoKSkgJiYgIWxvZ0ZvbnQubGZJdGFsaWM7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oV1RGTW92ZShoZm9udCksIGZvbnREZXNjcmlwdGlv
bi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBzeW50aGVzaXplQm9sZCwgc3ludGhlc2l6ZUl0YWxpYywg
dXNlR0RJKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4o
V1RGTW92ZShoZm9udCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBzeW50
aGVzaXplQm9sZCwgc3ludGhlc2l6ZUl0YWxpYywgdXNlR0RJKTsKIAogI2lmIFVTRShDRykKICAg
ICBib29sIGZvbnRDcmVhdGlvbkZhaWxlZCA9ICFyZXN1bHQtPmNnRm9udCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDM4N2EyMzlmODI5YzJkNzgwOWMyYzk2ZDNmZTEyNGRl
ZTE0YmQzZDcuLjY0ODQ4NWFjMjZjYjIzNzVjZjY1NzRmODFmZjRjZDY1NjcyYzUwODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZQogICAgIGZvbnRSZWZlcmVuY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQo
YnVmZmVyLCBmb250TmFtZSk7CiAgICAgaWYgKCFmb250UmVmZXJlbmNlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOwogfQogCiBi
b29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYg
Zm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCBhYjdj
NzkwZDYwZjJlOGY3NGFmMDNjMDZhY2ZjNzJjOGUzOWMyMmQ5Li5lZWVhZmViZDkzM2NhOWM3OGRk
MDUxNDEzZDIzMzQ0Y2E4NTNiMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGlm
ICghZm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBm
b250TmFtZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4o
Zm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJv
bGxlci5jcHAKaW5kZXggYjk1MzU1MDNjMzA2YzUwMWFhMzkzZjMxZmZkOTI4ODVlZGU5YmRlZi4u
ZjRhYWQzYjU2M2UzZDE0MzRmZjMxOGU0YzYyMjczMjVjMDU5YzQ5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNv
bnRyb2xsZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgTFJFU1VMVCBGdWxsU2NyZWVuQ29udHJv
bGxlcjo6UHJpdmF0ZTo6ZnVsbHNjcmVlbkNsaWVudFduZFByb2MoSFdORCBod25kLCBVSU5UIG0K
IH0KIAogRnVsbFNjcmVlbkNvbnRyb2xsZXI6OkZ1bGxTY3JlZW5Db250cm9sbGVyKEZ1bGxTY3Jl
ZW5Db250cm9sbGVyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3Vu
aXF1ZTxQcml2YXRlPih0aGlzLCBjbGllbnQpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8
UHJpdmF0ZT4odGhpcywgY2xpZW50KSkKIHsKICAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50
KTsKIH0KQEAgLTEzMSwxMyArMTMxLDEzIEBAIHZvaWQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OmVu
dGVyRnVsbFNjcmVlbigpCiAgICAgbV9wcml2YXRlLT5tX29yaWdpbmFsRnJhbWUgPSBvcmlnaW5h
bEZyYW1lOwogCiAgICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdyk7Ci0g
ICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgbV9w
cml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5tX2Jh
Y2tncm91bmRXaW5kb3ctPmNyZWF0ZVdpbmRvdygwKTsKICAgICA6OkFuaW1hdGVXaW5kb3cobV9w
cml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3ctPmh3bmQoKSwga0Z1bGxTY3JlZW5BbmltYXRpb25E
dXJhdGlvbiwgQVdfQkxFTkQgfCBBV19BQ1RJVkFURSk7CiAKICAgICBtX3ByaXZhdGUtPm1fY2xp
ZW50LT5mdWxsU2NyZWVuQ2xpZW50V2lsbEVudGVyRnVsbFNjcmVlbigpOwogICAgIEFTU0VSVCgh
bV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2Ny
ZWVuV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2lu
ZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3By
aXZhdGUuZ2V0KCkpOwogICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyk7
CiAgICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3ctPmNyZWF0ZVdpbmRvdygwKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKaW5kZXggMTA2N2I5NjA5M2RiMmVkNTkxYTIx
YTMxZDlkMDI1NmRjMTI5M2U4OS4uZjE0NDI1NzJjYzZkMWQ1NGJiZWU1OGJkYmMzNmVkZjc3NGFh
YmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGRjLCBib29sIGhhc0FscGhh
KQogCiAgICAgY2Fpcm9fdCogY3IgPSBjcmVhdGVDYWlyb0NvbnRleHRXaXRoSERDKGRjLCBoYXNB
bHBoYSk7CiAKLSAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7CisgICAgbV9kYXRh
ID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShtYWtlVW5pcXVlPFBsYXRmb3Jt
Q29udGV4dENhaXJvPihjcikpOwogICAgIG1fZGF0YS0+cGxhdGZvcm1Db250ZXh0LnNldEdyYXBo
aWNzQ29udGV4dFByaXZhdGUobV9kYXRhKTsKICAgICBtX2RhdGEtPm1faGRjID0gZGM7CiAgICAg
aWYgKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJE
LmNwcAppbmRleCBjMmJhZmFmOTZhMTYwNzA4MGI3NjMzOTUyNjYyZTc2Nzc2MTRiMDBjLi45NmM4
MjgxYWY0YjIyYzY2ODZhY2IxNGM1ZTgyYzFkNjliOTBkZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGlj
c0NvbnRleHQoSERDIGhkYywgSUQyRDFEQ1JlbmRlclRhcmdldCoqIHJlbmRlclRhcmdldCwgUkUK
IAogICAgICgqcmVuZGVyVGFyZ2V0KS0+QmluZERDKGhkYywgJnJlY3QpOwogCi0gICAgYXV0byBv
d25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFyZ2V0KTsKICAgICBt
X2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQ
bGF0Zm9ybUNvbnRleHQpLCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsK
ICAgICBtX2RhdGEtPm1faGRjID0gaGRjOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGhkYywgYm9vbCBoYXNBbHBoYSkKICAgICBp
ZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gb3duZWRQbGF0
Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihy
ZW5kZXJUYXJnZXQuZ2V0KCkpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBtYWtl
VW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQuZ2V0KCkpOwogICAg
IG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShvd25l
ZFBsYXRmb3JtQ29udGV4dCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkp
OwogICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRC5jcHAKaW5kZXggYmQ3NmVmYmJhOWQwZTg5N2QzZDI4OGU4NWU4ZDI0NDRjYzRmOGY0
ZS4uMWViYjViMDlkMzg1MzdjMDE5MjIwYjk0N2RjYWQ5NDRkOGUxMDExOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgR3JhcGhpY3ND
b250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ6OmNyZWF0ZUYKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRl
eHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRleHRdKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsKIH0KIApAQCAtNTUs
MTQgKzU1LDE0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3Rvcnkg
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFtyZW5kZXJUYXJn
ZXRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0
LCByZW5kZXJUYXJnZXQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCByZW5kZXJUYXJnZXQpOwogICAgICAgICB9KTsK
IH0KIAogR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYg
cGxhdGZvcm1Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9h
dFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQo
cGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250
ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKKyAgICAsIG1fcHJp
dmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9y
bUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQ
VU1lbW9yeSkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJp
dmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0
Zm9ybUNvbnRleHQpOwpAQCAtNzAsOSArNzAsOSBAQCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQmIGNvbnRleAog
CiBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJn
ZXQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFm
ZmluZVRyYW5zZm9ybSB7IH0pCi0gICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldCkpCisgICAgLCBt
X293bmVkUGxhdGZvcm1Db250ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+
KHJlbmRlclRhcmdldCkpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3Jt
Q29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0
bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0
LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkp
KQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9w
cml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKaW5kZXggNWJkZTRjZWRmNTE2YTkxNzlhNmQzZDNi
M2UzM2QxMzRlZDVhYjUxMS4uMWQ4MDQyMGNmN2VjNmNkNzc1YTYyYmFlYTIyZjk5MDYwN2ViNGNi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgR3JhcGhpY3NDb250
ZXh0OjpXaW5kb3dzQml0bWFwOjp+V2luZG93c0JpdG1hcCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlV2lu
ZG93c0JpdG1hcChjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFdpbmRvd3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFdpbmRvd3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAppbmRleCAwNmMxNzQ1NzlhNGJjMTMwOTFmMzRiNTc5
NGFhYTkyOTkzYmJiYTI0Li4zNWE5ZmY2MTEzNTFjMzNjNzE3NGQ5MmExZmRjZjQ0NzBlODFhODg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VC
dWZmZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCkBAIC0xMTIsOCArMTEyLDggQEAgSW1hZ2VCdWZm
ZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm90ZTogVGhpcyBwbGFj
ZXMgdGhlIGJpdG1hcGNvbnRleHQgaW50byBhIGxvY2tlZCBzdGF0ZSBiZWNhdXNlIG9mIHRoZSBC
ZWdpbkRyYXcgY2FsbCBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAgbV9kYXRhLnBsYXRmb3JtQ29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KGJpdG1hcENv
bnRleHQuZ2V0KCkpOwotICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHQ+KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBoaWNzQ29udGV4
dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CisgICAgbV9kYXRhLnBs
YXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KGJpdG1h
cENvbnRleHQuZ2V0KCkpOworICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGlj
c0NvbnRleHQ+KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDo6
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKICAgICBzdWNjZXNzID0g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5j
cHAKaW5kZXggNTgzOGVjMTU3YTJjN2I3MTYzYjcxNjgyYTRlYjhjODAzNGU5NjMyMS4uNmQ2NGFl
OWE2ZTNhNDE3ZmIxNGYxMjE2NmY2OGQzYzlhNTUyNjZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAo
aXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxh
eWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5
cGUsIDAsIDAsIDAsIDApOwogICAgIH0KIH0KQEAgLTMwMSw3ICszMDEsNyBAQCBmbG9hdCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om1heFRpbWVTZWVrYWJsZSgpIGNvbnN0CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6YnVmZmVyZWQoKSBjb25zdAogeyAKLSAgICBhdXRvIHJhbmdlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gcmFuZ2VzID0g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fcHJlc2VudGVyICYm
IG1fcHJlc2VudGVyLT5tYXhUaW1lTG9hZGVkKCkgPiAwKQogICAgICAgICByYW5nZXMtPmFkZChN
ZWRpYVRpbWU6Onplcm9UaW1lKCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3ByZXNl
bnRlci0+bWF4VGltZUxvYWRlZCgpKSk7CiAgICAgcmV0dXJuIHJhbmdlczsKQEAgLTg4OCw3ICs4
ODgsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJl
c2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcihNZQogICAgIG1fc291cmNlUmVjdC5ib3R0b20g
PSAxOwogICAgIG1fc291cmNlUmVjdC5yaWdodCA9IDE7CiAKLSAgICBtX3ByZXNlbnRlckVuZ2lu
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RGlyZWN0M0RQcmVzZW50ZXI+KCk7CisgICAgbV9wcmVzZW50
ZXJFbmdpbmUgPSBtYWtlVW5pcXVlPERpcmVjdDNEUHJlc2VudGVyPigpOwogICAgIGlmICghbV9w
cmVzZW50ZXJFbmdpbmUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAKaW5kZXggMzM3
ZmFmMzc4ZGE3OTU1YmVhNjEwYWVjOTA3NTc5NjZkNmM0ODIwMC4uN2U0NDRkMDI3NmRiNGJkZGE2
NTg3OTdiZDU0MzA2ZDZmZjljYjI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCkBAIC01MCwxMyArNTAsMTMg
QEAgc3RhdGljIHZvaWQgV0tDQUltYWdlUXVldWVSZWxlYXNlKENBSW1hZ2VRdWV1ZVJlZiBpcSkK
IH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKHVpbnQzMl90IHdpZHRoLCB1aW50
MzJfdCBoZWlnaHQsIHVpbnQzMl90IGNhcGFjaXR5KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFr
ZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQorICAgIDogbV9wcml2YXRlKG1ha2VV
bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQogewogICAgIG1fcHJpdmF0ZS0+bV9pbWFn
ZVF1ZXVlID0gYWRvcHRDRih3a0NBSW1hZ2VRdWV1ZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBjYXBh
Y2l0eSkpOwogfQogCiBXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUoY29uc3QgV0tDQUlt
YWdlUXVldWUmIG8pCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VR
dWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1
ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBvLm1fcHJpdmF0
ZS0+bV9pbWFnZVF1ZXVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwCmluZGV4IDcxYTAwYTMwYzBmYWVkZDliNDBlYzRmZmFkZjE3ODYzOGYyNWI4
NTQuLjQyMjUyZDM0YjU0ZmU2YzJjMjZiNTIyYzY2MGU4NjJmMDU2ZWYwOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTQzLDI0ICs0Mywy
NCBAQCBlbnVtIENsaXBib2FyZERhdGFUeXBlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIkNMSVBCT0FSRCIpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIlBSSU1BUlkiKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiUFJJTUFSWSIpOwogfQogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVi
b2FyZD4oU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
c3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9y
bURhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBs
YXRmb3JtRGF0YSgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggNDkwMzcxYWQ4OWVmMmU3OTZlMzQwMWFh
YzFkYmI4MDZlYTk2NmViMC4uYjZlMDU4YmUzMzA2NzI1NGJiYjYzMDUzNDllYTg2Y2FhZTVkYTI0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgY29uc3QgU2VsCiAKICAgICBp
ZiAobnVtYmVyT2ZUYXJnZXRzID4gMCAmJiB0YWJsZSkgewogICAgICAgICBTZXRGb3JTY29wZTxT
ZWxlY3Rpb25EYXRhKj4gY2hhbmdlKHNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIGNvbnN0X2Nh
c3Q8U2VsZWN0aW9uRGF0YSo+KCZzZWxlY3Rpb24pKTsKLSAgICAgICAgYXV0byBkYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxDbGlwYm9hcmRTZXREYXRhPigqc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlv
biwgV1RGTW92ZShwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOworICAgICAgICBhdXRvIGRhdGEg
PSBtYWtlVW5pcXVlPENsaXBib2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9u
LCBXVEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSk7CiAgICAgICAgIGlmIChndGtfY2xp
cGJvYXJkX3NldF93aXRoX2RhdGEoY2xpcGJvYXJkLCB0YWJsZSwgbnVtYmVyT2ZUYXJnZXRzLCBn
ZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLCBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJh
Y2ssIGRhdGEuZ2V0KCkpKSB7CiAgICAgICAgICAgICBndGtfY2xpcGJvYXJkX3NldF9jYW5fc3Rv
cmUoY2xpcGJvYXJkLCBudWxscHRyLCAwKTsKICAgICAgICAgICAgIC8vIFdoZW4gZ3RrX2NsaXBi
b2FyZF9zZXRfd2l0aF9kYXRhKCkgc3VjY2VlZHMgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxi
YWNrIHRha2VzIHRoZSBvd25lcnNoaXAgb2YgZGF0YSwgc28gd2UgbGVhayBpdCBoZXJlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKaW5k
ZXggYmRjYzk5ZTg1OWQ0OTc1MDc4ZmYzYzVlMmViYzM4NWQ5Yjk1Yjk1Mi4uNzNlMDc1OGE2ZWRk
MWUxOTMyMzEwODNmODlhN2U3ZmRmMjBkMTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCkBAIC0zNSwyMCArMzUsMjAgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclRoZW1lR2FkZ2V0PiBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRl
KGNvbnN0IFJlbmRlclRoZW1lR2EKIHsKICAgICBzd2l0Y2ggKGluZm8udHlwZSkgewogICAgIGNh
c2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkdlbmVyaWM6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBw
b3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lR2FkZ2V0Pihp
bmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdh
ZGdldDo6VHlwZTo6VGV4dEZpZWxkOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZVRleHRGaWVsZEdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRp
b24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRleHRGaWVsZEdhZGdl
dD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhl
bWVHYWRnZXQ6OlR5cGU6OlJhZGlvOgogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6
OkNoZWNrOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2ds
ZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJs
aW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkFycm93
OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUFycm93R2FkZ2V0
PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBv
c2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpJY29uOgotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUljb25HYWRnZXQ+KGluZm8sIHBh
cmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVJY29uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAg
ICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6U2Nyb2xsYmFyOgotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhckdhZGdldD4oaW5mbywgcGFy
ZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVNjcm9sbGJhckdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24p
OwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkJ1dHRvbjoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0b25HYWRnZXQ+KGluZm8sIHBhcmVu
dCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVCdXR0b25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAg
ICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCmluZGV4IDA1ZDEyZGQ5ZWFmYmVmMDJh
NDU5Y2E1Mjc2NDE3YTViOWIwZTg5NzYuLmNhNmVkOTE4YTUwMzNlMjk3NmRiODRkODljMjA0ODg3
MDBmMDJiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZVdpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lV2lkZ2V0LmNwcApAQCAtNDIsNDkgKzQyLDQ5IEBAIFJlbmRlclRoZW1lV2lkZ2V0JiBSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUoVHlwZSB3aWRnZXRUeXBlKQogICAgIGF1dG8gYWRk
UmVzdWx0ID0gd2lkZ2V0TWFwKCkuZW5zdXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPih3aWRnZXRU
eXBlKSwgW3dpZGdldFR5cGVdKCkgLT4gc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRoZW1lV2lkZ2V0
PiB7CiAgICAgICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkgewogICAgICAgICBjYXNlIFJlbmRlclRo
ZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbGJhclJpZ2h0OgotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElP
Tl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElP
Tl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbGJhckxlZnQ6Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RL
X09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwg
UmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElP
Tl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwsIFJlbmRlclRoZW1l
U2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKICAgICAgICAgY2FzZSBSZW5kZXJU
aGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNjcm9sbGJhcjoKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05f
SE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElP
Tl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAg
IGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9yUmln
aHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9s
bGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9k
ZTo6SW5kaWNhdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1l
U2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvckxlZnQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FM
LCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yLCBSZW5kZXJUaGVtZVNjcm9s
bGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5k
ZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6
VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6
OlR5cGU6Okhvcml6b250YWxTY3JvbGxJbmRpY2F0b3I6Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUkla
T05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElP
Tl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKICAg
ICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6Q2hlY2tCdXR0b246Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVu
ZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OkNoZWNrKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRv
bjo6VHlwZTo6Q2hlY2spOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpS
YWRpb0J1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6UmFkaW8pOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJl
bmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6OkJ1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6Tm8p
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRl
clRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6OkJ1dHRvbkRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Olllcyk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVy
VGhlbWVCdXR0b246OkRlZmF1bHQ6Olllcyk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6OkNvbWJvQm94OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVDb21ib0JveD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lQ29tYm9Cb3g+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5
cGU6OkVudHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVFbnRyeT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lRW50
cnk+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNlbGVjdGVkRW50
cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5
PihSZW5kZXJUaGVtZUVudHJ5OjpTZWxlY3RlZDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJlbmRlclRoZW1lRW50cnk6OlNlbGVjdGVkOjpZ
ZXMpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTZWFyY2hFbnRyeToK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50
cnk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNlYXJjaEVu
dHJ5PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTcGluQnV0dG9u
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTcGluQnV0
dG9uPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTcGluQnV0
dG9uPigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNs
aWRlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2xp
ZGVyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCk7CiAgICAg
ICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTbGlkZXI6Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09S
SUVOVEFUSU9OX0hPUklaT05UQUwpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6UHJvZ3Jlc3NCYXI6Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVBy
b2dyZXNzQmFyOjpNb2RlOjpEZXRlcm1pbmF0ZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2Rl
OjpEZXRlcm1pbmF0ZSk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Oklu
ZGV0ZXJtaW5hdGVQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6
OkluZGV0ZXJtaW5hdGUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhl
bWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5kZXRlcm1pbmF0
ZSk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okxpc3RWaWV3OgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lTGlzdFZpZXc+KCk7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okljb246Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUljb24+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUljb24+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6OldpbmRvdzoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lV2luZG93PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVXaW5kb3c+KCk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTM5LDcgKzEzOSw3IEBAIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcihHdGtPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgTW9kZSBtb2RlCiAgICAgaW5mby50eXBlID0gUmVuZGVyVGhlbWVHYWRnZXQ6
OlR5cGU6OkdlbmVyaWM7CiAgICAgaW5mby5uYW1lID0gImNvbnRlbnRzIjsKICAgICBpbmZvLmNs
YXNzTGlzdC5jbGVhcigpOwotICAgIG1fY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIGNoaWxkcmVu
LCBtX3Njcm9sbGJhci5nZXQoKSk7CisgICAgbV9jb250ZW50cyA9IG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4s
IG1fc2Nyb2xsYmFyLmdldCgpKTsKICAgICBpbmZvLm5hbWUgPSAic2xpZGVyIjsKICAgICBtX3Ns
aWRlciA9IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoaW5mbywgbV9jb250ZW50cy0+Y2hpbGQo
bV90cm91Z2hQb3NpdGlvbikpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIFJlbmRlclRoZW1lQ29t
Ym9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3goKQogICAgIH07CiAgICAgaW5mby5uYW1lID0gImJv
eCI7CiAgICAgaW5mby5jbGFzc0xpc3QgPSB7ICJob3Jpem9udGFsIiwgImxpbmtlZCIgfTsKLSAg
ICBtX2JveCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdU
S19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBjaGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7Cisg
ICAgbV9ib3ggPSBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJ
RU5UQVRJT05fSE9SSVpPTlRBTCwgY2hpbGRyZW4sIG1fY29tYm9Cb3guZ2V0KCkpOwogICAgIFJl
bmRlclRoZW1lR2FkZ2V0KiBidXR0b24gPSBtX2JveC0+Y2hpbGQoMCk7CiAgICAgaW5mby5jbGFz
c0xpc3QucmVtb3ZlTGFzdCgpOwogICAgIG1fYnV0dG9uQm94ID0gUmVuZGVyVGhlbWVHYWRnZXQ6
OmNyZWF0ZShpbmZvLCBidXR0b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4
NDA3YzExMDFkZGQ2ZGI2ZTM3OGRlZmNiM2FiODI2YmY3MjY0NTRkLi43ODY5N2ViMDAwMGY3Zjdi
ODJhN2QwZWNmNWY5ODVhMWU5Mjg5YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApA
QCAtOTgsNyArOTgsNyBAQCBib29sIEJNUEltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVscGVyKGJvb2wg
b25seVNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9yZWFkZXIpIHsK
LSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlz
LCBtX2RlY29kZWRPZmZzZXQsIGltZ0RhdGFPZmZzZXQsIGZhbHNlKTsKKyAgICAgICAgbV9yZWFk
ZXIgPSBtYWtlVW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlzLCBtX2RlY29kZWRPZmZzZXQsIGlt
Z0RhdGFPZmZzZXQsIGZhbHNlKTsKICAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdl
dCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggN2JhN2VkOTEw
MWNlMjVhOWJmNmUyMzEwODdiZjBiYzExNGNjMjJkNi4uNGYzNDg3ZTMzNDc2NDA1NDc0Y2Y4NmI1
YzYwNmQyYzE5ODhjN2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTMzNCw3
ICszMzQsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZy
YW1lLCBHSUZRdWVyeSBxdWVyeSwgYm9vbCBhbGxEYXRhUgogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIW1fcmVhZGVyKSB7Ci0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxH
SUZJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxHSUZJ
bWFnZVJlYWRlcj4odGhpcyk7CiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQo
KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCAxY2NhNWU1OWVlYjM1
MWIwNThhMjFkYjEzNGY2NDM3OTFlNTA3N2NhLi5kNzcxODZlYTk3MzliZGZiMmM1NjIyOGVlNGNm
NWU4ODI4ZDg4NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTMyMSw3ICszMjEs
NyBAQCBib29sIEdJRkZyYW1lQ29udGV4dDo6ZGVjb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OgogICAgICAgICBpZiAoIWlzRGF0YVNpemVEZWZp
bmVkKCkgfHwgIWlzSGVhZGVyRGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICAgICAgbV9sendDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHSUZMWldDb250ZXh0Pihj
bGllbnQsIHRoaXMpOworICAgICAgICBtX2x6d0NvbnRleHQgPSBtYWtlVW5pcXVlPEdJRkxaV0Nv
bnRleHQ+KGNsaWVudCwgdGhpcyk7CiAgICAgICAgIGlmICghbV9sendDb250ZXh0LT5wcmVwYXJl
VG9EZWNvZGUoKSkgewogICAgICAgICAgICAgbV9sendDb250ZXh0ID0gbnVsbHB0cjsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIEdJRkltYWdlUmVh
ZGVyOjpzZXRSZW1haW5pbmdCeXRlcyhzaXplX3QgcmVtYWluaW5nQnl0ZXMpCiB2b2lkIEdJRklt
YWdlUmVhZGVyOjphZGRGcmFtZUlmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9mcmFtZXMuaXNF
bXB0eSgpIHx8IG1fZnJhbWVzLmxhc3QoKS0+aXNDb21wbGV0ZSgpKQotICAgICAgICBtX2ZyYW1l
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxHSUZGcmFtZUNvbnRleHQ+KG1fZnJhbWVzLnNpemUo
KSkpOworICAgICAgICBtX2ZyYW1lcy5hcHBlbmQobWFrZVVuaXF1ZTxHSUZGcmFtZUNvbnRleHQ+
KG1fZnJhbWVzLnNpemUoKSkpOwogfQogCiAvLyBGSVhNRTogTW92ZSB0aGlzIG1ldGhvZCB0byBj
bG9zZSB0byBkb0xaVygpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAxODcwYmIx
NjBiODQ5NDhmMGI1OWRlNDUxMTYzNmJhNGMwZjM4ZjJlLi5mZjZhMWM4N2FlNmYwNWI0OWNjYzEy
OGFiZTA1YzMwM2Q2ZWViYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTk1
LDcgKzE5NSw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KHNpemVfdCBp
bmRleCkKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaGF2ZSBhbHJlYWR5IHNpemVkIG1fZnJh
bWVCdWZmZXJDYWNoZSBiZWZvcmUgdGhpcywgYW5kCiAgICAgICAgICAgICAvLyB3ZSBtdXN0IG5v
dCByZXNpemUgaXQgYWdhaW4gbGF0ZXIgKHNlZSBjYXV0aW9uIGluIGZyYW1lQ291bnQoKSkuCiAg
ICAgICAgICAgICBBU1NFUlQobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA9PSBtX2RpckVudHJp
ZXMuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlzLCBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0LCAwLCB0
cnVlKTsKKyAgICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0gPSBtYWtlVW5pcXVlPEJNUElt
YWdlUmVhZGVyPih0aGlzLCBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0LCAwLCB0cnVlKTsKICAgICAg
ICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0tPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICAg
ICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0tPnNldEJ1ZmZlcigmbV9mcmFtZUJ1ZmZlckNhY2hl
W2luZGV4XSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4
IGI3MmM1NWEyY2I5MDlmYTM0NjFjZjc5NWYwNGRjZWFkNTEwNGU4ZWUuLmQwYjkxNmE1ZGFmOGEz
YWEyNTRmNDk3MzQ3M2E4MzE1NTcyOWRjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcApAQCAtNjUzLDcgKzY1Myw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJv
b2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIW1fcmVhZGVyKQotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SlBF
R0ltYWdlUmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEpQRUdJ
bWFnZVJlYWRlcj4odGhpcyk7CiAKICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGlt
YWdlIGJ1dCB3ZSd2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFz
IGZhaWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzE4YTM5YjU5MTMzYTMx
OGYxNTEwNTgxZThmOTFlYmRkNzY4NzlhYi4uNjJjYjliMjJhMDFmMjZlOWYyY2Q0MWRlYTM4MWIz
NjM2ODk3ZWU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU1Niw3ICs1NTYs
NyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIHVuc2lnbmVk
IGhhbHRBdEZyYW1lLCBib29sIGFsbERhdGFSZQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IW1fcmVhZGVyKQotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UE5HSW1hZ2VS
ZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8UE5HSW1hZ2VSZWFk
ZXI+KHRoaXMpOwogCiAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVjb2RlIHRoZSBpbWFnZSBidXQg
d2UndmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRhLCBkZWNvZGluZwogICAgIC8vIGhhcyBmYWlsZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRl
eCAyMDlmODhmNDdhM2I3Y2RjMDE0M2RlOTJlMjRiYWRkZjk2NjRiNWY0Li5jYWUzZGNmMTY0Nzk2
Y2VlY2I2OGIyNDQ4ZjExMzNjMTBlYzljMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogTGVnYWN5VGlsZUNhY2hlOjpMZWdhY3lUaWxlQ2FjaGUoV0FLV2luZG93KiB3aW5k
b3cpCiAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgLCBtX3RvbWJzdG9uZShhZG9wdE5TKFtb
TGVnYWN5VGlsZUNhY2hlVG9tYnN0b25lIGFsbG9jXSBpbml0XSkpCi0gICAgLCBtX3pvb21lZE91
dFRpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVT
aXplKSkKKyAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQobWFrZVVuaXF1ZTxMZWdhY3lUaWxlR3Jp
ZD4oKnRoaXMsIG1fdGlsZVNpemUpKQogICAgICwgbV90aWxlQ3JlYXRpb25UaW1lcigqdGhpcywg
JkxlZ2FjeVRpbGVDYWNoZTo6dGlsZUNyZWF0aW9uVGltZXJGaXJlZCkKIHsKICAgICBbaG9zdExh
eWVyKCkgaW5zZXJ0U3VibGF5ZXI6bV96b29tZWRPdXRUaWxlR3JpZC0+dGlsZUhvc3RMYXllcigp
IGF0SW5kZXg6MF07CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmNv
bW1pdFNjYWxlQ2hhbmdlKCkKIAogICAgIGlmIChtX2N1cnJlbnRTY2FsZSAhPSBtX3pvb21lZE91
dFRpbGVHcmlkLT5zY2FsZSgpKSB7CiAgICAgICAgIGlmICghbV96b29tZWRJblRpbGVHcmlkKSB7
Ci0gICAgICAgICAgICBtX3pvb21lZEluVGlsZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2Fj
eVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSk7CisgICAgICAgICAgICBtX3pvb21lZEluVGls
ZUdyaWQgPSBtYWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSk7CiAg
ICAgICAgICAgICBbaG9zdExheWVyKCkgYWRkU3VibGF5ZXI6bV96b29tZWRJblRpbGVHcmlkLT50
aWxlSG9zdExheWVyKCldOwogICAgICAgICAgICAgaG9zdExheWVyU2l6ZUNoYW5nZWQoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpp
bmRleCAxOTFhYzc2OTYyMTUxMjE1M2RiZGNiMDc4ZGQ2NmY0NjU1M2JjMjFkLi4wMjcxYjkzZTcw
NWNlMmM0MmQ2MzJmZTJkYjI5YWE0NmU4MzZkMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtNjYsMTIgKzY2LDEyIEBAIHZvaWQgUGFzdGVi
b2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJkYXRhIGludGVyYWN0
aW9uIHBhc3RlYm9hcmQiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiZGF0
YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0Rh
dGEucGFzdGVib2FyZE5hbWUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4o
ZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7CiB9CiAKICNlbmRpZgpAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIAogc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oY2hhbmdlQ291bnRG
b3JQYXN0ZWJvYXJkKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGNoYW5n
ZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUXVpY2tMb29rLm1tCmluZGV4IGE5ZDllNDcxMDUwMTdkNjRkODJlMzdjOGFhMzFjZTY0Njkw
MjU2ODUuLmMyYjVhMGIwOGJkZjc1ZThjMDFjZDliZDJkNTFjMzE0OTMwNWYzODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtODQsNyArODQsNyBAQCBSZXRh
aW5QdHI8TlNVUkxSZXF1ZXN0PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5T
VVJMICp1cmwsIE5TU3RyaW5nCiAgICAgaWYgKFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlw
ZXNTZXQoKSBjb250YWluc09iamVjdDp1cGRhdGVkTUlNRVR5cGUuZ2V0KCldKSB7CiAgICAgICAg
IFJldGFpblB0cjxOU1N0cmluZz4gdXRpID0gYWRvcHROUyhQQUw6OnNvZnRMaW5rX1F1aWNrTG9v
a19RTFR5cGVDb3B5VVRJRm9yVVJMQW5kTWltZVR5cGUodXJsLCB1cGRhdGVkTUlNRVR5cGUuZ2V0
KCkpKTsKIAotICAgICAgICBhdXRvIGNvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmll
d0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBt
YWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQoKSk7CiAgICAgICAgIFJl
c291cmNlUmVxdWVzdCBwcmV2aWV3UmVxdWVzdCA9IGNvbnZlcnRlci0+cHJldmlld1JlcXVlc3Qo
KTsKIAogICAgICAgICAvLyBXZSB1c2UgW3JlcXVlc3QgVVJMXSBoZXJlIGluc3RlYWQgb2YgdXJs
IHNpbmNlIGl0IHdpbGwgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCmluZGV4IDEwN2M3N2M3NTNlYWI3ZDkyZGEy
OTQ4N2NhNmY2NWY4MDcwNDgyMTMuLjZkOWNjZTE1Yjg3NGYxNWYxNTQ4NzVlYTBlZTZiOWYxMDM1
YTgzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21t
YW5kTGlzdGVuZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQpAQCAtNDUsNyArNDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1v
dGVDb21tYQogICAgIGlmICghTWVkaWFQbGF5ZXJMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29tbWFuZExpc3Rl
bmVySU9TPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUz4oY2xpZW50KTsKIH0KIAogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVD
b21tYW5kTGlzdGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KaW5k
ZXggMDFmMGE5YmIyMGEyNDhiNjk5ODg1NjQ3MGFlZTM3NGE5OGNmYTUxYy4uZWQ2MzJlYTVlM2Y1
NTk3ZTlkNzZmZDJlNTU2OTU2MWZlNmM0YzIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5p
bWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFibGVBcmVhKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJsZUFyZWEp
OwogfQogCiBTY3JvbGxBbmltYXRvcklPUzo6U2Nyb2xsQW5pbWF0b3JJT1MoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGli
d3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCmluZGV4IDA1NDNlZDVlOWZjOWZjZmUzYmJhYTQwMzU1
ZTQwNzJmOWYzYzNmNDAuLmY4YTYxZWM3MGMwYzFhNGNkMzc3ZjBlN2NkNjc2ZWZiOWRlNWJjOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExp
YldQRS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiB9CiAKIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA1
MTUyMGRjYmJlYTU5MjE4NWMzMjY3MDJjYmE2OWZlODhiNGQ0ZGRlLi44ZWIxNWNmODg1MmQ5ODU3
NDQ3ZTA1OWMzOGFjYWViYTIzNDE1ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMTAwLDcgKzEwMCw3IEBAIFBhc3RlYm9hcmQ6OlBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHByb21pCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2Fy
ZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFsUGJvYXJkKTsK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIApAQCAtMTA4LDEzICsx
MDgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZSgpCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oTlNEcmFn
UGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9hcmQp
OwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3Rl
Ym9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFt
ZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KaW5k
ZXggMDVjYzA4OTU3ZTFkNTAxMjRkZDYzMmUyYTRjODkyMTI5ODk2OTYxMS4uMWFhMmNkODAxMzJm
MmMyMWVlMzhiOWZmYmRiODMzNzNiYmY0YzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1h
bmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWFuZExp
c3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWM6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCBhODMxNzUxMjJlYzJl
NGI2YjZkZTUxYmU2ZGY1MjY0YjQxYTFmOGM0Li42ODYwZTMzYzNhM2IyMTU2MzA1ZmIzMWFmNDI3
ZGM0OTAyMzU4N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tCkBAIC02OTcsNyArNjk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUo
U2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNjcm9sbEFuaW1hdG9yTWFjPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Nyb2xs
QW5pbWF0b3JNYWM6OlNjcm9sbEFuaW1hdG9yTWFjKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAppbmRleCAxYjlk
YzUzNDViODgxZWIzNmQ5NmZjZTM1ODJkZjBlNTRhMTM4NWJhLi5lMjQ0NWJjODIzZjg2ZTA1NWIw
ZTU3ODc3ZDZjZjUzMWE0ZmZjYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlCiAgICAg
aWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFzZU5v
bk51bGwoKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJZCkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4od3JpdGVy
LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoYXVkaW9UcmFja0lkKSwgV1RGTW92ZSh2aWRlb1Ry
YWNrSWQpKTsKIH0KIAogTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiYmIHdyaXRlciwg
U3RyaW5nJiYgYXVkaW9UcmFja0lkLCBTdHJpbmcmJiB2aWRlb1RyYWNrSWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAppbmRleCBkNGFkYjE1MmJkNGJhZWY3ZWY3YmYwNTVm
NmQ5YTgzZDg2N2U2N2ViLi5hMjJmNTcxYmM1MTYxMWY2MTc0NDkxMDRjZjVmYzg2MGU1MmU5YWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogCiBjbGFz
cyBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwgZmluYWwgOiBwdWJsaWMgTWVkaWFSZWNvcmRl
clByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBjcmVhdGUo
Y29uc3QgTWVkaWFTdHJlYW1Qcml2YXRlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggZGI5NGZkYWY4M2E4YWJkNjdhZmNm
ZDZlYTM2OWZhYTg5YzQ2YzNlMi4uNTlhYjM4NDBmZDczNmNhMTQ1MDE2YzdmNjYwZWNhM2IwOTAz
MjQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZS5jcHAKQEAgLTkxLDE0ICs5MSwxNCBAQCBBdWRpb0NhcHR1cmVGYWN0b3J5JiBHU3RyZWFt
ZXJBdWRpb0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkoKQogCiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2U6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNl
IGRldmljZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVu
dElkKCkgfSwgU3RyaW5nIHsgZGV2aWNlLmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCkpCi0g
ICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4o
ZGV2aWNlKSkKKyAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1
cmVyPihkZXZpY2UpKQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQogCiBH
U3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZShT
dHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAg
OiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBX
VEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAg
LCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkK
KyAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPigpKQog
ewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvRGF0YS5oCmluZGV4IDk1M2YzYThhMGU0ZjZhMDYyYjliOTRhOGY0MTUxYTQ5ZjFh
NDMwMWQuLmQ0YzkzNzlmODRkYWQ2ZjY4ODExOTg5ZDE0MzRlZmUxNmFlZmVjNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJBdWRpb0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgR1N0cmVhbWVyQXVkaW9EYXRhIDogcHVibGljIFBsYXRmb3Jt
QXVkaW9EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBH
U3RyZWFtZXJBdWRpb0RhdGEoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBHc3RBdWRpb0lu
Zm8gaW5mbykKICAgICAgICAgOiBtX3NhbXBsZShXVEZNb3ZlKHNhbXBsZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
TWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAppbmRleCBiM2FmMzVh
ZjgyNDg4ZGQ0Y2Y4MjFjZDNlZWFlNjNkOWNmMWFjZDg0Li40YTZkNDFjZTQ4Y2ZhMGJiN2QwZjgy
N2IxM2RjOTk0MTc5OGVkM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJN
ZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTM1MSw4ICszNTEsOCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfbWVkaWFfc3RyZWFtX3NyY19jbGFzc19pbml0KFdlYktpdE1lZGlhU3RyZWFtU3JjQ2xhc3Mq
IGtsYXNzKQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFfc3RyZWFtX3NyY19pbml0KFdlYktp
dE1lZGlhU3RyZWFtU3JjKiBzZWxmKQogewotICAgIHNlbGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNl
cnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyPihz
ZWxmKTsKLSAgICBzZWxmLT5tZWRpYVN0cmVhbU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyPihzZWxmKTsKKyAgICBzZWxmLT5tZWRpYVN0cmVhbVRy
YWNrT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4o
c2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJlYW1PYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0
TWVkaWFTdHJlYW1PYnNlcnZlcj4oc2VsZik7CiAgICAgc2VsZi0+Zmxvd0NvbWJpbmVyID0gZ3N0
X2Zsb3dfY29tYmluZXJfbmV3KCk7CiAgICAgc2VsZi0+Zmlyc3RBdWRpb0J1ZmZlclB0cyA9IEdT
VF9DTE9DS19USU1FX05PTkU7CiAgICAgc2VsZi0+Zmlyc3RGcmFtZVB0cyA9IEdTVF9DTE9DS19U
SU1FX05PTkU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2UuY3BwCmluZGV4IGU1ZDliMGUwMjc2ZWRkYTVkYmQ1MjBiYzEwZjM1MTgwZDAxNWQ2OWIu
Ljk3YmUxZjEyZmJiMjJkYzM1OGM5OWM4MzlmOTgxZjE2NTZhOGUxMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xMjcsMTQg
KzEyNywxNCBAQCBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZTo6ZGlzcGxheUZhY3RvcnkoKQogCiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFt
ZSwgU3RyaW5nJiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyICpzb3VyY2VfZmFjdG9yeSkKICAgICA6
IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5h
bWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1
ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9yeSkpCisgICAgLCBtX2NhcHR1
cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQog
ewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQogCiBHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJl
RGV2aWNlIGRldmljZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZVZpZGVvQ2Fw
dHVyZVNvdXJjZShTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgU3RyaW5nIHsgZGV2
aWNlLmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6
bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKKyAgICAsIG1fY2Fw
dHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQogewogICAg
IGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCmluZGV4IDY5OTVjNjAyY2IxNzQ0N2Zh
NzQxZDM5ZDQ0OTRjMzU2MWRjMWJiODIuLmY5OWRiZWM1OWUwNDBiYjdmZmM1NWU3NWM2YTkxMzE1
ZGRlYzk0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNv
ZGVyRmFjdG9yeS5jcHAKQEAgLTUxMiwxNCArNTEyLDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRW5jb2Rlcj4gR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlk
ZW9FCiAgICAgICAgIGdfb2JqZWN0X2dldCh3ZWJydGNlbmNvZGVyLmdldCgpLCAiZW5jb2RlciIs
ICZlbmNvZGVyLm91dFB0cigpLCBOVUxMKTsKIAogICAgICAgICBpZiAoZW5jb2RlcikKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZQOEVuY29kZXI+KGZvcm1h
dCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihm
b3JtYXQpOwogCiAgICAgICAgIEdTVF9JTkZPKCJVc2luZyBWUDggRW5jb2RlciBmcm9tIExpYldl
YlJUQy4iKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8d2VicnRjOjpMaWJ2cHhW
cDhFbmNvZGVyPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTx3ZWJydGM6OkxpYnZweFZw
OEVuY29kZXI+KCk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdC5uYW1lID09IGNyaWNrZXQ6OmtI
MjY0Q29kZWNOYW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJI
MjY0RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVy
SDI2NEVuY29kZXI+KGZvcm1hdCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEVE1GU2VuZGVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKaW5kZXggZGM2ZjhmM2Zi
MDU3ZmI1NDBkOTBjMDAyMjY4YTk5Nzc0NDEwMjc3Zi4uNGEwNjFmY2M5NTNiMTNkNTgzYmFlNTU0
NTE1NWJjZTA4ZGY4ZjlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZT
ZW5kZXJCYWNrZW5kLmgKQEAgLTQwLDYgKzQwLDcgQEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNf
RU5ECiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExpYldlYlJUQ0RUTUZTZW5kZXJCYWNr
ZW5kIGZpbmFsIDogcHVibGljIFJUQ0RUTUZTZW5kZXJCYWNrZW5kLCBwcml2YXRlIHdlYnJ0Yzo6
RHRtZlNlbmRlck9ic2VydmVySW50ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGliV2Vi
UlRDRFRNRlNlbmRlckJhY2tlbmQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZChydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpEdG1mU2VuZGVySW50ZXJmYWNlPiYmKTsKICAgICB+TGliV2ViUlRD
RFRNRlNlbmRlckJhY2tlbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
CmluZGV4IDNhYTkwY2ZhNDZhN2VjMDBlNzU2ZGEzZmJlY2Q1MmE2NDNjNzJlY2UuLjkwMjdjZTgw
ZjgxOTM1N2Q5NDViYmE5ZmEyNmRkZDJiNWExY2RmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcApAQCAtNzksOSArNzksMTAgQEAgc3RhdGljIGlubGluZSBydGM6OlNv
Y2tldEFkZHJlc3MgcHJlcGFyZVNvY2tldEFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNz
JgogfQogCiBjbGFzcyBCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkgOiBwdWJsaWMgcnRjOjpCYXNp
Y1BhY2tldFNvY2tldEZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeShydGM6OlRocmVhZCYg
bmV0d29ya1RocmVhZCkKLSAgICAgICAgOiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxy
dGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oJm5ldHdvcmtUaHJlYWQpKQorICAgICAgICA6
IG1fc29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6
OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oJm5ldHdvcmtUaHJlYWQpKQogICAgIHsKICAgICB9
CiAKQEAgLTE3OSw3ICsxODAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGVlckNvbm5lY3Rp
b25GYWN0b3J5QW5kVGhyZWFkcyhQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaAogICAgIHJlc3Vs
dCA9IGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC0+U3RhcnQoKTsKICAgICBBU1NF
UlQocmVzdWx0KTsKIAotICAgIGZhY3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENBdWRpb01vZHVsZT4oKTsKKyAgICBmYWN0b3J5QW5k
VGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IG1ha2VVbmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1
bGU+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFk
cyYgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKQpAQCAtMjg4LDEwICsyODksMTAgQEAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1By
b3ZpZGVyOjpjcmVhdGVQZWUKICAgICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IGdldFN0YXRp
Y0ZhY3RvcnlBbmRUaHJlYWRzKG1fdXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwog
CiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrTWFuYWdlcikKLSAgICAgICAgZmFj
dG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFz
aWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01h
bmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljTmV0d29y
a01hbmFnZXI+KCk7CiAKICAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZh
Y3RvcnkpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oKmZhY3RvcnlBbmRUaHJl
YWRzLm5ldHdvcmtUaHJlYWQpOworICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2Nr
ZXRGYWN0b3J5ID0gbWFrZVVuaXF1ZTxCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5
QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRT
b2NrZXRGYWN0b3J5LT5zZXREaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMobV9kaXNhYmxl
Tm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0
aW9uKG9ic2VydmVyLCAqZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIsICpmYWN0b3J5
QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBu
dWxscHRyKTsKQEAgLTMxNCw3ICszMTUsNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4gcG9ydEFsbG9j
YXRvcjsKICAgICBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPkludm9rZTx2b2lk
PihSVENfRlJPTV9IRVJFLCBbJl0oKSB7Ci0gICAgICAgIGF1dG8gYmFzaWNQb3J0QWxsb2NhdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3Jr
TWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOworICAgICAgICBhdXRvIGJhc2ljUG9ydEFs
bG9jYXRvciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNyaWNrZXQ6OkJhc2lj
UG9ydEFsbG9jYXRvcj4oJm5ldHdvcmtNYW5hZ2VyLCAmcGFja2V0U29ja2V0RmFjdG9yeSk7CiAg
ICAgICAgIGlmICghbV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKQogICAg
ICAgICAgICAgYmFzaWNQb3J0QWxsb2NhdG9yLT5zZXRfZmxhZ3MoYmFzaWNQb3J0QWxsb2NhdG9y
LT5mbGFncygpIHwgY3JpY2tldDo6UE9SVEFMTE9DQVRPUl9ESVNBQkxFX0FEQVBURVJfRU5VTUVS
QVRJT04pOwogICAgICAgICBwb3J0QWxsb2NhdG9yID0gV1RGTW92ZShiYXNpY1BvcnRBbGxvY2F0
b3IpOwpAQCAtMzM1LDcgKzMzNiw3IEBAIHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImIExp
YldlYlJUQ1Byb3ZpZGVyOjpjZXJ0aWZpY2F0ZUdlbmVyYXRvcigpCiB7CiAgICAgYXV0byYgZmFj
dG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtU
aHJlYWRXaXRoU29ja2V0U2VydmVyKTsKICAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmNlcnRp
ZmljYXRlR2VuZXJhdG9yKQotICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdl
bmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4o
ZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFk
cy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlm
aWNhdGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OlJU
Q0NlcnRpZmljYXRlR2VuZXJhdG9yPihmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQu
Z2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCkpOwogCiAgICAgcmV0
dXJuICpmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDE1ZTJh
ODc4OWMwN2ZiMGQwYWVjNmY2YzIwZjdiYjE3ZmE4ZGI3ZDIuLjViODI3M2IwODUxOTZmZmQzMGU0
ZDdhN2Y2NTUxMGJlYzA4MDMxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIGJvb2wgTGliV2ViUlRD
UHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZp
ZGVvRGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNv
ZGVyRmFjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlk
ZW9EZWNvZGVyRmFjdG9yeT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRl
b0RlY29kZXJGYWN0b3J5PigpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0Vu
Y29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRW5jb2RlckZh
Y3RvcnkoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3Rvcnk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNv
ZGVyRmFjdG9yeT4oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAppbmRleCA4MmNiY2Ix
YzY2ZDMyZWExOGNkZWIxNjc5MzhkNjhkM2IxMmU0MTlhLi5mN2Q4NWRjNjBhNjFhODE0NmRiYTBk
MDNlNTVkNzU3NjJmZTkwZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmNwcApAQCAtMTg4LDggKzE4OCw4IEBAIHZvaWQgQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiBzCiAgICAgICAgIGlmICghcmVtb3RlSU9Vbml0KQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgbV9vdXRwdXRE
ZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihv
dXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlx
dWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAg
bV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
PihvdXRwdXREZXNjcmlwdGlvbik7CiAKICAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1w
bGVEYXRhU291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMiwgc3RyZWFt
VHJhY2soKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRl
eCBlOGUzZDM0ODZkYTQzYWFjMWRkNTRiNzhlNmI0ZGY0ZGM5ODE2NzkwLi42MTFhYzE2YjllY2I4
Njg5OGEzNzI2NDcxYzc2MjA3MTJmYjliMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYzo6cmVjb25maWd1cmUoKQogICAgIGNvbnN0IGJvb2wgaXNOb25JbnRlcmxlYXZl
ZCA9IHRydWU7CiAgICAgRmlsbE91dEFTQkRGb3JMUENNKG1fc3RyZWFtRm9ybWF0LCBzYW1wbGVS
YXRlKCksIGNoYW5uZWxDb3VudCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBiaXRzUGVy
Qnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGlzRmxvYXQsIGlzQmlnRW5kaWFuLCBpc05vbkludGVybGVh
dmVkKTsKIAotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdWRp
b0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFt
ZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VV
bmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX3N0cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQu
bUJ5dGVzUGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVDb3VudCk7CiAKICAgICBDTUZvcm1hdERl
c2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uOwogICAgIENNQXVkaW9Gb3JtYXREZXNjcmlw
dGlvbkNyZWF0ZShOVUxMLCAmbV9zdHJlYW1Gb3JtYXQsIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEws
ICZmb3JtYXREZXNjcmlwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW0KaW5kZXggZjlkYzRhODQ3ZjRhMzU1ZDljY2ZmNGNkZTAzMDhkMGQ1
YzVjNDQ1Ni4uMzg4ZDcxZTI0YjI1ZWJmNmQ3Nzg4MTRmZGQwYTk2NjNiMTcwNTQ2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtNDYs
NyArNDYsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVihDVlBpeAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9waXhlbEJ1
ZmZlckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4o
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhl
bEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkp
IH0pOworICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBO
U1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4
ZWxCdWZmZXJGb3JtYXQoKSkgfSk7CiAKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlckNvbmZvcm1l
ci0+Y29udmVydChwaXhlbEJ1ZmZlcik7CiB9CkBAIC03NSw3ICs3NSw3IEBAIFJldGFpblB0cjxD
VlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRl
UGl4ZWxCdWZmZXIoCiAgICAgICAgIEludFNpemUgc2l6ZSA9IHsgKGludClDVlBpeGVsQnVmZmVy
R2V0V2lkdGgocGl4ZWxCdWZmZXIpICwgKGludClDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVs
QnVmZmVyKSB9OwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0
cmFuc2Zvcm0ucm90YXRlKHJvdGF0aW9uVG9BbmdsZShyb3RhdGlvbikpOwotICAgICAgICBtX3Jv
dGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4o
V1RGTW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBl
KHBpeGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJs
ZTo6Tm8pOworICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3Rh
dGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0
UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXND
R0ltYWdlQ29tcGF0aWJsZTo6Tm8pOwogICAgIH0KIAogICAgIHJldHVybiBtX3JvdGF0aW9uU2Vz
c2lvbi0+cm90YXRlKHBpeGVsQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAppbmRleCA4
ZTI5ZDdiODFhMTczZGZhNTM3MDVmYTFlNjJjOWU4ODNjNGY5NTAyLi5kNDc2OWQ2OWU0YWYwNDcw
ZDYyY2U5MGI3NTQ0MGUyODI3NjllN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCkBAIC0z
NSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpD
bGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKaW5kZXggM2M2ZGUxYzRlYmU0ZWM3NDczNTQwYWVjY2I4
OTc2MmIxOTU1NWNkNC4uMTM4OGFkMDUxMzEwOGIyZWI5MmVjMmJiZTI4OTMzNjUyZTk5YTA4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJNb2NrLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayBmaW5hbCA6IHB1YmxpYyBSVENEYXRh
Q2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBUaW1lckV2ZW50QmFzZWRNb2NrIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAppbmRleCAyZjFm
YjU1ZWU2NzFmMmYyMjhmYzUxNTFkMGRkNjljZjhlYzY5NWNiLi4yYzdjNDFiZDY5NmZmMWY5YmFi
MzgzODFhNGI1ODM4NTY4YjE4YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgUmVtb3RlRGF0YUNo
YW5uZWxOb3RpZmllcjo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcihSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGkKIAogdm9pZCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKCkKIHsK
LSAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoc3RkOjptYWtlX3VuaXF1ZTxS
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJU
Q0RhdGFDaGFubmVsSW5pdCgpKSk7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFu
bmVsKG1ha2VVbmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2siLCBSVENEYXRhQ2hhbm5lbEluaXQoKSkpOwogfQogCiBEYXRhQ2hhbm5lbFN0
YXRlTm90aWZpZXI6OkRhdGFDaGFubmVsU3RhdGVOb3RpZmllcihSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJDbGllbnQqIGNsaWVudCwgUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggNTU5OTMzODJiM2ExZGMzNmQ4
MzU2YjYxYjI1YzcwMDJlMDczNDdmZS4uMzg3YTIxZGFmNDU1MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4
ODY5MGQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTWVkaWFQbGF5ZXIgRW5p
Z25lIFN1cHBvcnQKIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJh
cihbXSAoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCisg
ICAgcmVnaXN0cmFyKFtdIChNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVl
PE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBl
cywKICAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTY2LDcgKzE2
Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2
YXRlKQogICAgICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCk7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBib29sIE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUu
Y3BwCmluZGV4IGNjNjdjZTY4OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjguLjkwNTE0
MzE2MjFhOGMxMDhhNmVmMGY1MWViNjBmNzc0YWZjYzBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE1
OSw5ICsxNTksOSBAQCBCbG9iUmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9i
RGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdAogICAgICwgbV9hc3luYyB7IGFz
eW5jIH0KIHsKICAgICBpZiAobV9hc3luYykKLSAgICAgICAgbV9hc3luY1N0cmVhbSA9IHN0ZDo6
bWFrZV91bmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIG1fYXN5bmNTdHJl
YW0gPSBtYWtlVW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVTdHJlYW0+KCk7CisgICAgICAgIG1f
c3RyZWFtID0gbWFrZVVuaXF1ZTxGaWxlU3RyZWFtPigpOwogfQogCiBCbG9iUmVzb3VyY2VIYW5k
bGU6On5CbG9iUmVzb3VyY2VIYW5kbGUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCmluZGV4IDgxMTJiOTczZWVm
NTRlZDdhNWM3YTUxNGNmMTAyYWM5OTFlNzY1MzMuLmI1NDFmNjJlZTAwNTIwMzYyYzE1NTdmN2Nh
NDk2NGEyMzdiODc0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgRGVjb2RpbmdS
ZXN1bHREaXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlY29kaW5nUmVz
dWx0RGlzcGEKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNv
ZGVUYXNrKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29u
dGV4dCwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVUYXNrPigKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxEZWNvZGVUYXNrPigKICAgICAgICAgdXJsLnN0cmluZygpLAogICAgICAgICBzY2hlZHVs
ZUNvbnRleHQsCiAgICAgICAgIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXgg
YTk4NDNmNTBlNWE0MzQwM2Q4ZjUyZjBhOTY3ZjkwMjc4NjVlOGQ1Ni4uOGRhZWM1NGExMzQyZGFi
NTljMzVjYzQ5MjdhMDBmZTYyMjk0OTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMzcsNiArMzcsNyBAQCBXRUJD
T1JFX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbDsgLy8gVXNlZCBmb3IgZQogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IGVycm9yRG9tYWluV2ViS2l0U2VydmljZVdvcmtlcjsgLy8gVXNlZCBmb3IgZXJyb3JzIHRo
YXQgaGFwcGVuIHdoZW4gbG9hZGluZyBhIHJlc291cmNlIGZyb20gYSBzZXJ2aWNlIHdvcmtlci4K
IAogY2xhc3MgUmVzb3VyY2VFcnJvckJhc2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaXNvbGF0ZWRDb3B5
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAKaW5kZXggMzBjMjdmNTc2YTE3N2U2YjZhYjE5NDc0MGE3ZDkwMjViNjU5
ZmNhZC4uNmEzMWUzZTUyN2Y4ZWM5MmQ2ZjYyYjk2Y2RkODE5NDQxNGI1NWM0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hy
b25vdXNMb2FkZXIoY29uc3QgQXRvbVN0cmluZyYgcHJvdG9jb2wKIH0KIAogUmVzb3VyY2VIYW5k
bGU6OlJlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wg
ZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVu
dEVuY29kaW5nU25pZmYpCi0gICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbD4odGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBz
aG91bGRDb250ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkp
LCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikpCisgICAgOiBkKG1ha2VVbmlxdWU8UmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbD4odGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNM
b2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVl
c3QudXJsKCkpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikpCiB7CiAgICAgaWYgKCFyZXF1
ZXN0LnVybCgpLmlzVmFsaWQoKSkgewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUoSW52YWxpZFVS
TEZhaWx1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZGFkOTAx
MGY5NTcwZWJjNTY3NjMzNTQzZmQxZmM1MDJmODQ2OWI5OS4uNzEzYjRkZmIzMGIyYWZkZmJlYWZm
NGVlNTM3MGEyNTQ2ZmFkM2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CkBAIC0xNjksNyArMTY5LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICB9OwogCiAg
ICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAg
ICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3Zl
KHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRSZWNlaXZlUmVzcG9uc2UKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQot
ICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248
dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5k
KG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UK
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9y
ZS53YWl0KCk7CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAg
ICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVl
dWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5p
c2hMb2FkaW5nKCkKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAg
ICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtl
VW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNzYsNyArMjc2LDcg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlOjpkaWRGYWlsKENGRXJyb3JSZWYKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAg
IGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTMx
MSw3ICszMTEsNyBAQCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OgogICAgIH07CiAgICAgCiAgICAg
aWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBt
X21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdv
cmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRSZWNlaXZlQ2hhbGxlbmcKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAg
ICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1h
a2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM0OSw3ICszNDks
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZFNlbmRCb2R5RGF0YShDRgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdl
UXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVl
LT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAg
ICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAt
MzgwLDcgKzM4MCw3IEBAIEJvb2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvCiAgICAgfTsKICAgICAKICAg
ICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAg
IG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUo
d29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpp
bmRleCBjOWI1M2UzMTJhZDg1NTc2ZDM2NmVmNGRjNTM3NDM5MWZlOGM2OTBjLi5iYTU1ZjAwNDhi
OGU0ZGRjNWIwNzM0ZDk5M2RjOWIxM2I4Y2IyYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CkBAIC01MjMsNyArNTIzLDcgQEAgLSAodm9pZClfcmVzdGFydAogCiAgICAgX3Jlc291cmNlID0g
c2VsZi5zZXNzaW9uLmxvYWRlci5yZXF1ZXN0UmVzb3VyY2Uoc2VsZi5vcmlnaW5hbFJlcXVlc3Qs
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5n
KTsKICAgICBpZiAoX3Jlc291cmNlKQotICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2VsZikpOwor
ICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudD4oc2VsZikpOwogfQogCiAtICh2b2lkKV9jYW5jZWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmlu
ZGV4IGE0NWE1ZjRlNGEwMjhmZTZlN2YyZGZiNzVlYzJjOGFlYzkzZWQyYmIuLjEwMTYyNGYyOTAw
YTk0Y2M3ZDFhODk5ODk2NzZkNmI0NWFiN2ZhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzg0LDcgKzM4NCw3
IEBAIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0CiAgICAgICAgICJBTkQgKChkb21haW4gPSA/KSBP
UiAoZG9tYWluIEdMT0IgPykpICJcCiAgICAgICAgICJPUkRFUiBCWSBsZW5ndGgocGF0aCkgREVT
QywgbGFzdHVwZGF0ZWQiOwogCi0gICAgYXV0byBwc3RtdCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FM
aXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8gcHN0bXQgPSBtYWtlVW5p
cXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpZiAoIXBzdG10KQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkBAIC01NjYsNyArNTY2LDcgQEAgYm9vbCBD
b29raWVKYXJEQjo6ZGVsZXRlQWxsQ29va2llcygpCiAKIHZvaWQgQ29va2llSmFyREI6OmNyZWF0
ZVByZXBhcmVTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsK
KyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBzcWwpOwogICAgIGludCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NF
UlQocmV0ID09IFNRTElURV9PSyk7CiAgICAgbV9zdGF0ZW1lbnRzLmFkZChzcWwsIFdURk1vdmUo
c3RhdGVtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5oCmluZGV4IDBjMDNlOWQ2OTJjN2Y2ZGM2MTMwODZmZjI1NWMyMGU1YzZi
YmU5ZTkuLjI2ODdhZTc0ZmI5ZDk5NDI5NzJiZWRjYWM2YWI5YjExNTlhN2U1MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCkBA
IC00MSw2ICs0MSw3IEBAIGVudW0gY2xhc3MgQ29va2llQWNjZXB0UG9saWN5IHsKIH07CiAKIGNs
YXNzIENvb2tpZUphckRCIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDb29raWVKYXJEQik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNw
cAppbmRleCBmYTVjOGQyZDIxYjYyNzM4MTVkMDIzYTRmMjA0NTUwMTZlOTYzOGFmLi5lMmI0YjVk
ZmJkYTYyYTNjMGNiNmJmOTE4MWJiZDY4ZmQ3YTRhMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBA
IC0xNDEsNyArMTQxLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAg
ICAgICAtLWVuZDsgLy8gTGFzdCBsaW5lIGlzIGVtcHR5CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkg
ewogICAgICAgICBTdHJpbmcgdXJsID0gaXQtPnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICBh
dXRvIGNhY2hlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsIG51
bGxwdHIsIG1fY2FjaGVEaXIpOworICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlVW5pcXVl
PEN1cmxDYWNoZUVudHJ5Pih1cmwsIG51bGxwdHIsIG1fY2FjaGVEaXIpOwogCiAgICAgICAgIGlm
IChjYWNoZUVudHJ5LT5pc0NhY2hlZCgpICYmIGNhY2hlRW50cnktPmVudHJ5U2l6ZSgpIDwgbV9z
dG9yYWdlU2l6ZUxpbWl0KSB7CiAgICAgICAgICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBj
YWNoZUVudHJ5LT5lbnRyeVNpemUoKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEN1cmxDYWNo
ZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSYgam9iLCBSZXNvdXJj
ZVJlc3BvbnNlJgogCiAgICAgICAgIGludmFsaWRhdGVDYWNoZUVudHJ5KHVybCk7IC8vIEludmFs
aWRhdGUgZXhpc3RpbmcgZW50cnkgb24gMjAwCiAKLSAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0g
c3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCAmam9iLCBtX2NhY2hlRGlyKTsK
KyAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVVuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJs
LCAmam9iLCBtX2NhY2hlRGlyKTsKICAgICAgICAgYm9vbCBjYWNoZWFibGUgPSBjYWNoZUVudHJ5
LT5wYXJzZVJlc3BvbnNlSGVhZGVycyhyZXNwb25zZSk7CiAgICAgICAgIGlmIChjYWNoZWFibGUp
IHsKICAgICAgICAgICAgIGNhY2hlRW50cnktPnNldElzTG9hZGluZyh0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmlu
ZGV4IDdkMTcyMTdjMmU0NDJhYzZmM2RlOGM0YjYwYTk1MjZjOWY2NTg0MmEuLjdiMDRmYTI2YTQy
YWI5NzhhZTA3YmQzMWYwZTY5MTU1MWJiYzQ2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtMTE1LDcgKzExNSw3
IEBAIEN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCgpCiAgICAgaWYgKGF1dG8gdmFsdWUgPSBlbnZW
YXIucmVhZEFzPHNpZ25lZD4oIldFQktJVF9DVVJMX01BWF9IT1NUX0NPTk5FQ1RJT05TIikpCiAg
ICAgICAgIG1heEhvc3RDb25uZWN0aW9ucyA9ICp2YWx1ZTsKIAotICAgIG1fc2NoZWR1bGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxDdXJsUmVxdWVzdFNjaGVkdWxlcj4obWF4Q29ubmVjdHMsIG1heFRv
dGFsQ29ubmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9ucyk7CisgICAgbV9zY2hlZHVsZXIgPSBt
YWtlVW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPihtYXhDb25uZWN0cywgbWF4VG90YWxDb25u
ZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25zKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBtX3Zl
cmJvc2UgPSBlbnZWYXIuZGVmaW5lZCgiREVCVUdfQ1VSTCIpOwpAQCAtMzM2LDcgKzMzNiw3IEBA
IENVUkxjb2RlIEN1cmxIYW5kbGU6OndpbGxTZXR1cFNzbEN0eCh2b2lkKiBzc2xDdHgpCiAgICAg
ICAgIHJldHVybiBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOwogCiAgICAgaWYgKCFtX3NzbFZl
cmlmaWVyKQotICAgICAgICBtX3NzbFZlcmlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsU1NM
VmVyaWZpZXI+KHNzbEN0eCk7CisgICAgICAgIG1fc3NsVmVyaWZpZXIgPSBtYWtlVW5pcXVlPEN1
cmxTU0xWZXJpZmllcj4oc3NsQ3R4KTsKIAogICAgIHJldHVybiBDVVJMRV9PSzsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFT
dHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3Jt
RGF0YVN0cmVhbS5jcHAKaW5kZXggZGQ2M2E0YWI0MjcwM2Y2ZTk0MmY4ZWY5NTUxMzZhODZiY2Rm
NjY1MS4uMmI0NzczNmY2ZTcxZjFjNDk3ODFiZTE5NDZjMGI4ZTM2YmQ2NzUwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3Jt
RGF0YVN0cmVhbS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgY29uc3QgVmVjdG9yPGNoYXI+KiBDdXJs
Rm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAoIW1fcG9zdERhdGEpCi0gICAgICAgIG1fcG9zdERhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsKKyAgICAgICAgbV9wb3N0
RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPGNoYXI+PihtX2Zvcm1EYXRhLT5mbGF0dGVuKCkpOwog
CiAgICAgcmV0dXJuIG1fcG9zdERhdGEuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
aW5kZXggYThiYjhkODFhN2FiZDcxNzQzYmQzOTVkY2M4NjYzMTc5ZmRlMmQ1NS4uY2NkYmIyODIz
OWYyMmMzNjM2Y2FjMTRiMDc4NWQ2ZjU1YWIyZjViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybE11bHRpcGFydEhhbmRsZT4g
Q3VybE11bHRpcGFydEhhbmRsZTo6Y3JlYXRlSWZOZWVkZWQoQ3VybE11bAogICAgIGlmICghYm91
bmRhcnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAqYm91bmRhcnkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5KTsKIH0K
IAogT3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0Qm91bmRhcnko
Y29uc3QgQ3VybFJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDE3ZmVkZGYwZTA4MTRk
NWVhZDA2ODJmNmVmMTRmNzY1YzkxZTU5MDguLmMxZDE1N2JlZmY5NDQ1NDYzMWNkMDU5NjJmMjMx
MTMyZmQ4ZGI4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OmNhbGxDbGllbnQoRnVuY3Rpb248dm9pZChDdXJsUmVxdWVzdCYsIEN1cmxSZXF1ZXN0Q2xp
ZW50Jik+JiYKIHZvaWQgQ3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lk
KCk+JiYgdGFzaykKIHsKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3Zl
KHRhc2spKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7CiAgICAgZWxzZSBpZiAoaXNNYWluVGhyZWFk
KCkpCiAgICAgICAgIHRhc2soKTsKICAgICBlbHNlCkBAIC0yMDUsNyArMjA1LDcgQEAgQ1VSTCog
Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIoKQogICAgIGF1dG8gaHR0cEhlYWRlckZpZWxkcyA9
IG1fcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7CiAgICAgYXBwZW5kQWNjZXB0TGFuZ3VhZ2VI
ZWFkZXIoaHR0cEhlYWRlckZpZWxkcyk7CiAKLSAgICBtX2N1cmxIYW5kbGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEN1cmxIYW5kbGU+KCk7CisgICAgbV9jdXJsSGFuZGxlID0gbWFrZVVuaXF1ZTxDdXJs
SGFuZGxlPigpOwogCiAgICAgbV9jdXJsSGFuZGxlLT5zZXRVcmwobV9yZXF1ZXN0LnVybCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKaW5kZXggOTE4MzdhZjlmM2U0NzczYjVjNzFjMWMy
NjBkYjk2ZjU4NmIyMTFhZi4uM2FhNWY1MmRiNjI3YWJiMGVjY2FmMjkyMTNkY2UxMmZiYzZmYmM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBD
dXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKIAotICAgIG1fY3VybE11bHRpSGFuZGxlID0gc3RkOjptYWtlX3VuaXF1ZTxD
dXJsTXVsdGlIYW5kbGU+KCk7CisgICAgbV9jdXJsTXVsdGlIYW5kbGUgPSBtYWtlVW5pcXVlPEN1
cmxNdWx0aUhhbmRsZT4oKTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4Q29ubmVjdHMo
bV9tYXhDb25uZWN0cyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heFRvdGFsQ29ubmVj
dGlvbnMobV9tYXhUb3RhbENvbm5lY3Rpb25zKTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0
TWF4SG9zdENvbm5lY3Rpb25zKG1fbWF4SG9zdENvbm5lY3Rpb25zKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHAKaW5kZXggN2JlMDBhZDM0YjhlNTk4ODJkZTBmNTEzYjZjMmRkZjkwMTFmOTllMS4uN2Q0
YTcyZmQ4NzU1NzZkOWE1OThhYTE1ODQwNGU4OWYxMjRkNzA3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBSZWY8Q3VybFJlcXVlc3Q+IFJlc291cmNlSGFuZGxl
OjpjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZQogQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUqIFJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSgpCiB7CiAgICAg
aWYgKCFkLT5tX2RlbGVnYXRlKQotICAgICAgICBkLT5tX2RlbGVnYXRlID0gc3RkOjptYWtlX3Vu
aXF1ZTxDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOworICAgICAgICBkLT5tX2Rl
bGVnYXRlID0gbWFrZVVuaXF1ZTxDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOwog
CiAgICAgcmV0dXJuIGQtPm1fZGVsZWdhdGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDdXJsLmNwcAppbmRleCBhMzY3ZmRhNjJhNmQyMTJhNDk1NWU2ODg5YzY1NzIwYzll
ZmFmMjFiLi4xM2E4MzJjMjY2OWI0Y2U4Y2JlYmYzMTM0YmEwODlkOTAyZGZhOTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnN0b3BUaHJlYWQoKQogdm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpjYWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7CisgICAgbV90
YXNrUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNr
KSkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmV4ZWN1dGVUYXNrcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW0KaW5kZXggZGUwYjdlMWYxODdiNTA3NjVhOWQxN2MyZWM0ZWM4MDMzZDgzZjM0
MS4uZjEwZWI2MjVlYTA4MTMwMjkyNzgwN2NlYzFlMmZmNmU3M2YyNGMxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDoo
RnVuY3Rpb248dm9pZCgpPiYmKWZ1bmN0aW9uCiB7CiAgICAgLy8gU3luYyB4aHIgdXNlcyB0aGUg
bWVzc2FnZSBxdWV1ZS4KICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIHJldHVybiBt
X21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4o
V1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLT5hcHBl
bmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogCiAg
ICAgLy8gVGhpcyBpcyB0aGUgY29tbW9uIGNhc2UuCiAgICAgaWYgKCFzY2hlZHVsZWRXaXRoQ3Vz
dG9tUnVuTG9vcE1vZGUobV9zY2hlZHVsZWRQYWlycykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAK
aW5kZXggNGJiMzBhODcxZGU1NzAzOWI3YjcxOTM0ZmVjMzc2M2E1YTRhODJkOS4uZWU0NGQ4OWQx
OTk4NTQ2OGI3YWVhMWU3NWE0NDIzMGUyNzY4MjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNw
cApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZShj
b25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBECiAKICAgICBnX29i
amVjdF9zZXRfZGF0YShHX09CSkVDVChhZGRyZXNzLmdldCgpKSwgImlkZW50aWZpZXIiLCBHVUlO
VF9UT19QT0lOVEVSKGlkZW50aWZpZXIpKTsKIAotICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhh
bmRsZXJzLmFkZChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPEROU1Jlc29sdmVRdWV1ZVNv
dXA6OkNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIFdURk1vdmUoY2FuY2VsbGFibGUpKSk7CisgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlcnMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8RE5TUmVzb2x2ZVF1ZXVlU291cDo6Q29t
cGxldGlvbkFuZENhbmNlbEhhbmRsZXJzPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RG
TW92ZShjYW5jZWxsYWJsZSkpKTsKIH0KIAogdm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpzdG9w
UmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwCmluZGV4IGU0YzhiMGYxM2U2ZDA4OWE1ODkyYWE3YWUwYTliODIxNTg1YmI5YTQuLjdi
MjhmMjZiNTM4NGNiNGJkNWJmZDY3NTcwN2NmMmJmZmQ1ZjA3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90
ZWN0aW9uUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBkYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFNlY3JldFNl
cnZpY2VTZWFyY2hEYXRhPihjYW5jZWxsYWJsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIHNlY3JldF9zZXJ2aWNlX3NlYXJjaChudWxscHRyLCBTRUNSRVRfU0NIRU1BX0NPTVBB
VF9ORVRXT1JLLCBhdHRyaWJ1dGVzLmdldCgpLAogICAgICAgICBzdGF0aWNfY2FzdDxTZWNyZXRT
ZWFyY2hGbGFncz4oU0VDUkVUX1NFQVJDSF9VTkxPQ0sgfCBTRUNSRVRfU0VBUkNIX0xPQURfU0VD
UkVUUyksIGNhbmNlbGxhYmxlLAogICAgICAgICBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQmlkaVJlc29sdmVyLmgKaW5kZXggMTBmZWNiYzQxOTQ3OTVmMzJkMWNhN2U3NjA5
YWM0ZmYyMDkyY2QyMy4uYWFmZWQzZGU3OWI5OWFhYzQ3NjljNzZiNTVmNmMxY2JiNjYxYjhmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0zMjEs
NyArMzIxLDcgQEAgdm9pZCBCaWRpUmVzb2x2ZXJCYXNlPEl0ZXJhdG9yLCBSdW4sIERlcml2ZWRD
bGFzcz46OmFwcGVuZFJ1bkludGVybmFsKCkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmRP
ZmZzZXQgPj0gc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICBtX3J1bnMuYXBwZW5kUnVuKHN0ZDo6
bWFrZV91bmlxdWU8UnVuPihzdGFydE9mZnNldCwgZW5kT2Zmc2V0ICsgMSwgY29udGV4dCgpLCBt
X2RpcmVjdGlvbikpOworICAgICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVlPFJ1
bj4oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsK
IAogICAgICAgICBtX2Vvci5pbmNyZW1lbnQoKTsKICAgICAgICAgbV9zb3IgPSBtX2VvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAppbmRleCA1OWUxZmM3MmEy
YmYyOTY5NDVhODZmODU1MmI4NjM3NmE5ZWE1ODZkLi4yYzhjY2U3MzA4OGZhNWFkMGNmNTk1OWNj
ZTRmOTY5MWJmMzU3YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZUlDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJ
Q1UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBpY3U7CiAKIHN0ZDo6dW5p
cXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVJQ1U+KGxvY2Fs
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogTG9jYWxlSUNVOjpMb2NhbGVJQ1UoY29u
c3QgY2hhciogbG9jYWxlKQpAQCAtMTYzLDIyICsxNjMsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRE
YXRlRm9ybWF0UGF0dGVybihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkKIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25z
dCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGlu
dDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQogewogICAgIGlmICghZGF0ZUZvcm1hdCkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGlmICh1ZGF0X2Nv
dW50U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlKSAhPSBzdGFydEluZGV4ICsgc2l6ZSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogCi0gICAgYXV0byBsYWJlbHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShz
aXplKTsKICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIGludDMyX3QgbGVuZ3Ro
ID0gdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCAwLCAw
LCAmc3RhdHVzKTsKICAgICAgICAgaWYgKHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJP
UikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAg
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0
SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsICZzdGF0dXMpOwogICAgICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxT
dHJpbmc+PigpOwogICAgICAgICBsYWJlbHMtPmFwcGVuZChTdHJpbmc6OmFkb3B0KFdURk1vdmUo
YnVmZmVyKSkpOwogICAgIH0KICAgICByZXR1cm4gV1RGTW92ZShsYWJlbHMpOwpAQCAtMTg2LDcg
KzE4Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVh
dGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCoKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tNb250aExhYmVscygpCiB7Ci0gICAgYXV0
byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8g
bGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2Vy
dmVDYXBhY2l0eShXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFt
ZSk7ICsraSkKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ldKTsK
QEAgLTIwOCw3ICsyMDgsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjptb250
aExhYmVscygpCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0
ZUZhbGxiYWNrQU1QTUxhYmVscygpCiB7Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBsYWJl
bHMtPmFwcGVuZCgiQU0iKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiUE0iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCmluZGV4IGJiNmIyNmJhNTljYjM2Yjk4
OWI3ZTZmNTg2MzBjN2E3YjNiNTZlYTcuLjc4MTVhNDc4ZTAyOTc0NTU5NjU3NmMyZGVkMjIxMTkz
NmFhOTZhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
Tm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBMb2NhbGVOb25lIDogcHVibGljIExvY2FsZSB7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcm
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU5vbmU+KCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TG9jYWxlTm9uZT4oKTsKIH0KIAogTG9jYWxlTm9uZTo6fkxvY2FsZU5v
bmUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY0lDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y0lDVS5jcHAKaW5kZXggZjhlMTY3MDg0OWE5NTg5OGExNDU3YmM5OGRhOTFlNGJkZTc4NGM3OS4u
ZTVmMjgxNjZjNmRkMzRiYzUzNTA5YjZhMDAyMGE4ODg5MDdjMmNlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcApAQCAtMTU2LDQzICsxNTYsNDMg
QEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciBy
ZWdpc3RyYXIpCiAgICAgICAgIC8vIGh0dHA6Ly9kZW1vLmljdS1wcm9qZWN0Lm9yZy9pY3UtYmlu
L2NvbnZleHAKICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIndpbmRvd3MtODc0IikpIHsKICAg
ICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtODc0LTIwMDAi
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUs
ICJ3aW5kb3dzLTg3NC0yMDAwIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ3aW5kb3dzLTk0OSIp
KSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0
OS0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNV
PihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMt
Y3lyaWxsaWMiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAi
bWFjb3MtN18zLTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0
Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy03XzMtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAi
eC1tYWMtZ3JlZWsiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1l
LCAibWFjb3MtNl8yLTEwLjQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
ZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy02XzItMTAuNCIpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1l
LCAieC1tYWMtY2VudHJhbGV1cnJvbWFuIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1l
LCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY0lDVT4obmFtZSwgIm1hY29zLTI5LTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICgh
c3RyY21wKG5hbWUsICJ4LW1hYy10dXJraXNoIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihu
YW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTM1LTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4yIik7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlm
ICghc3RyY21wKG5hbWUsICJFVUMtS1IiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUs
IFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
ZGVjSUNVPihuYW1lLCAid2luZG93cy05NDkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OSIpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBA
IHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVn
aXN0cmFyKQogICAgICAgICBjb25zdCBjaGFyKiBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lID0gdWNu
dl9nZXRDYW5vbmljYWxOYW1lKG5hbWUsICJJQU5BIiwgJmVycm9yKTsKICAgICAgICAgQVNTRVJU
KFVfU1VDQ0VTUyhlcnJvcikpOwogICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWUsIGNhbm9u
aWNhbENvbnZlcnRlck5hbWVdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRleHRDb2RlY0lDVT4obmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZSk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENvbnZlcnRl
ck5hbWUpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKaW5kZXggOTMxNDUzMzI4YTZmNjY5NDg1ZWUw
MWY4YTRlMmNlZGU1MDI2NzdmZi4uOTJjNjYxM2NiMWZjYzBlMzA4YTczYzM1MGE5ZTA3ZWY3NzM0
NjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNM
YXRpbjEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0
aW4xLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJF
bmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRD
b2RlY0xhdGluMTo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikK
IHsKICAgICByZWdpc3RyYXIoIndpbmRvd3MtMTI1MiIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUZXh0Q29kZWNMYXRpbjE+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKaW5kZXggMTc2
NWJmNzkyMTU5NzViMTU3YzhiM2Y3NGM1NTcyYzQ3MWUyMTE0MS4uYzhiNTU4YzhjYTJkM2FmZDMw
MjE0YmNmYzM3YTE0NTc3NTZhMTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9p
ZCBUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFt
ZVJlZ2lzdHJhciByZWdpc3RyYXIKIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVy
Q29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJy
ZXBsYWNlbWVudCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
ZGVjUmVwbGFjZW1lbnQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1Jl
cGxhY2VtZW50PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCmluZGV4IGJlMDA2NTY0NDY0OGZjZTBjMzc5ZDNjNzQz
ZWUyMjdlYTllZGE2ZjQuLjkwYzQ0NzVkMDIwYjlmNDcxYjViZTc3YzNjYWFjMGZkYzk4Y2JhMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3Bw
CkBAIC01NCwxMCArNTQsMTAgQEAgdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJFbmNvZGlu
Z05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRDb2RlY1VU
RjE2OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAg
IHJlZ2lzdHJhcigiVVRGLTE2TEUiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4
dENvZGVjVVRGMTY+KHRydWUpOwogICAgIH0pOwogICAgIHJlZ2lzdHJhcigiVVRGLTE2QkUiLCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjE2PihmYWxz
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2PihmYWxzZSk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjVVRGOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VU
RjguY3BwCmluZGV4IGEzZGFkNGU5ZDE2Mzc2ODYzMDg4YjE5NzEwZjgzOWRiYmZmZWE4ZGQuLmUx
ZDBhNTNjNzE3YWFlNzM5OTM5ZjUxYzRkMzI5MzQ1YWY4OWNhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2
b2lkIFRleHRDb2RlY1VURjg6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdp
c3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckNvZGVjcyhUZXh0
Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigiVVRGLTgiLCBbXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjg+KCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjg+KCk7CiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmlu
ZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5l
ZC5jcHAKaW5kZXggMjk2YzQ2OWYxNjlmYjkxMWRjOGRiZDdhNjQ3ZWE1NjQxZTJmZmUxOS4uNDhh
ZGJhOWQ0YjFhN2E5YTY1OGFlZjlkZmFkZjg1YWRkZTlkY2Y1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJFbmNvZGluZ05h
bWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIKIHZvaWQgVGV4dENvZGVjVXNlckRl
ZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAg
ICAgcmVnaXN0cmFyKCJ4LXVzZXItZGVmaW5lZCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VGV4dENvZGVjVXNlckRlZmluZWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVkPigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5kZXggYTUxN2JlMzQxZjZh
YzRiZThlODkzY2ZhZDdjMjI4ODQ1ZDZhODI4MC4uMmIzZDAzYTM4YTVkMjAxYmI2ZGNiOGViZTQ0
ZjQ2ZmVlZmM2N2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvTG9jYWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xv
Y2FsZU1hYy5tbQpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTG9jYWxlPiBk
ZXRlcm1pbmVMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxM
b2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUu
c3RyaW5nKCkpLmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVNYWM+KGRldGVy
bWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0
cjxOU0RhdGVGb3JtYXR0ZXI+IGNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKE5TTG9jYWxlKiBsb2Nh
bGUsIE5TQ2FsZW5kYXIqIGNhbGVuZGFyLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSBkYXRlU3R5bGUs
IE5TRGF0ZUZvcm1hdHRlclN0eWxlIHRpbWVTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IDZhMTYwZGVjY2ZjOTI2YWVmMzdkZTIz
ZTk3ZjYyZThmNWM2NzkwNmEuLmFhMDBhNGFkNmY1YjU5OTgyYjZiNDc3MzE3MWM4YmM3YzAzMzkw
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNw
cApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9t
U3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPExvY2FsZVdpbj4oTENJREZyb21Mb2NhbGUobG9jYWxlKSk7CiB9CiAKIGlubGluZSBMb2Nh
bGVXaW46OkxvY2FsZVdpbihMQ0lEIGxjaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAppbmRleCBhZjQ2OTEzOTA4MWU4MGMxMjA3Yjgy
Yzk3ZmRmYTNjNzcyMWE2NTExLi4yY2ViNDc1ZTVmYWViYjY3MGM3NDE0NDc1YTQ3MjkyNDk1MmRj
YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2Rl
Y1dpbi5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgVUlOVCBnZXRDb2RlUGFnZShjb25z
dCBjaGFyKiBuYW1lKQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbmV3VGV4
dENvZGVjV2luKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZvaWQqKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5j
b2RpbmcubmFtZSgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjV2luPihnZXRD
b2RlUGFnZShlbmNvZGluZy5uYW1lKCkpKTsKIH0KIAogVGV4dENvZGVjV2luOjpUZXh0Q29kZWNX
aW4oVUlOVCBjb2RlUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Zy
L29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCmluZGV4IGQxZGM2NzM2
ODZmNjUxZTNlMDMyOTFiN2MwMmMzMWIwYzE2OWJiYzIuLmU3Y2Y3MTM3ZTMzYWE1NWJmN2U1ODVl
ZTE2NGU2NzNkM2FhZWVjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Zy
L29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcApAQCAtMzUsNyAr
MzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+IFZSUGxhdGZv
cm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUoKQogICAgIGlmICghdnI6OlZSX0lzUnVudGltZUluc3Rh
bGxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOwogfQogCiBWUlBsYXRmb3JtTWFuYWdlck9wZW5W
Ujo6flZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSKCkKQEAgLTc4LDcgKzc4LDcgQEAgVmVjdG9yPFdl
YWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJE
aXNwbGF5cygpCiAKICAgICBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IGRpc3Bs
YXlzOwogICAgIGlmICghbV9kaXNwbGF5KQotICAgICAgICBtX2Rpc3BsYXkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVyb25lLCBjb21w
b3NpdG9yKTsKKyAgICAgICAgbV9kaXNwbGF5ID0gbWFrZVVuaXF1ZTxWUlBsYXRmb3JtRGlzcGxh
eU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CiAgICAgZGlzcGxheXMu
YXBwZW5kKG1ha2VXZWFrUHRyKCptX2Rpc3BsYXkpKTsKICAgICByZXR1cm4gZGlzcGxheXM7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXgg
YWJhZGRjN2ZiY2EyMzU5ZWZmNWI5ODExYzE5NWY2YjVhYmMxYmE4My4uMTY5Nzg1NWZlNzJmNjM3
ZTY1YWQ0Nzc3MmFmYTYxYzc0NzE5MjQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgTFJFU1VMVCBD
QUxMQkFDSyBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0gdwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxQYXN0
ZWJvYXJkPigpOwogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gY2xpcGJvYXJkRGF0YTsKICAgICBp
ZiAoIVNVQ0NFRURFRChPbGVHZXRDbGlwYm9hcmQoJmNsaXBib2FyZERhdGEpKSkKICAgICAgICAg
Y2xpcGJvYXJkRGF0YSA9IDA7CkBAIC0xMDYsMTYgKzEwNiwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewogICAgIENP
TVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJ
bnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVi
b2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oZGF0YU9iamVjdC5nZXQoKSk7CiB9CiAKIC8vIHN0YXRpYwogc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKICAgICBpZiAoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0
YSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxh
dGZvcm1EYXRhKCkpOwogICAgIC8vIEZJWE1FOiBTaG91bGQgYWRkIGEgY29uc3Qgb3ZlcmxvYWQg
b2YgZHJhZ0RhdGFNYXAgc28gd2UgZG9uJ3QgbmVlZCBhIGNvbnN0X2Nhc3QgaGVyZS4KLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjb25zdF9jYXN0PERyYWdEYXRhJj4o
ZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9h
cmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVEQi5jcHAKaW5kZXggMTk2NDljNTY2Y2ZjZjVmNDI0MzA5ZDFkOGQxMDBiMGI0ZmY3NzBhOC4u
NmY3ZjRiYTE2NjBiNGY3YTk3NzIxMmM4NTYzYTQzYzY2NWUzMGI1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCkBAIC0yODQsNyAr
Mjg0LDcgQEAgaW50IFNlYXJjaFBvcHVwTWVudURCOjpleGVjdXRlU2ltcGxlU3FsKGNvbnN0IFN0
cmluZyYgc3FsLCBib29sIGlnbm9yZUVycm9yKQogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3Rh
dGVtZW50PiBTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRlUHJlcGFyZWRTdGF0ZW1lbnQoY29uc3Qg
U3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNR
TGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1h
a2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGludCByZXQg
PSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IFNR
TElURV9PSyk7CiAgICAgcmV0dXJuIHN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dDRGF0YU9iamVjdC5jcHAKaW5kZXggZGJmOTlhNDVjZTcwM2E5ZDg1N2EwZTYwMTlk
NjgwNmRkMTFmYTE3Yi4uYzk3YTdlYmFhYWJkZDhlMjYyOWFhMzc3ZTcyNjdlYmQ3Yzg1MTIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKQEAgLTI1
Niw3ICsyNTYsNyBAQCBTVERNRVRIT0RJTVAgV0NEYXRhT2JqZWN0OjpTZXREYXRhKEZPUk1BVEVU
QyogcGZvcm1hdGV0YywgU1RHTUVESVVNKiBwbWVkaXVtLCBCTwogICAgIGlmICghcGZvcm1hdGV0
YyB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8gZmV0
YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFURVRDPigpOworICAgIGF1dG8gZmV0YyA9IG1ha2VV
bmlxdWU8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0Z01l
ZGl1bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5KGZl
dGMuZ2V0KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0Zp
bHRlci5jcHAKaW5kZXggYzAwNGZjOWU3MDRhNmFkMzIzNDlmYjgyNGNkYzVkZGQwMzYwMWI1Yy4u
NDc5ODFhZTY5OTFkYzY0OTE1MjBmYzgyNDMyZWNjNDk1ODY0NDNmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBGaQogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogCi0gICAgYXV0
byBidWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlvdXNF
ZmZlY3QpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4o
JnByZXZpb3VzRWZmZWN0KTsKICAgICBtX3NvdXJjZUFscGhhID0gYnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpKTsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0
RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcz4oKmZpbHRlcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
b21wbGV4TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExp
bmVMYXlvdXQuY3BwCmluZGV4IDAxMzM3ODdkOWQzMDYyYjFjYTc5YjE2MDc5NjNmMjBjMTA3MWVk
NTMuLmJkM2M5YmVlODcyOTg2ZWM2MWIxYTMwYTA0OTViOGMwYTI2ZmQ2MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcApAQCAtODIsNyArODIs
NyBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBk
aXIsIElubGluZUl0ZXJhdG9yIGl0ZXIpCiAKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1
bj4gY3JlYXRlUnVuKGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0JiBvYmosIElubGlu
ZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRp
cigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaWRpUnVuPihzdGFydCwgZW5kLCBvYmosIHJl
c29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogfQogCiB2b2lkIENvbXBsZXhMaW5l
TGF5b3V0OjphcHBlbmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBp
bnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXIm
IHJlc29sdmVyKQpAQCAtMTMwLDEyICsxMzAsMTIgQEAgdm9pZCBDb21wbGV4TGluZUxheW91dDo6
YXBwZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXIK
IHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBDb21wbGV4TGluZUxheW91dDo6Y3JlYXRl
Um9vdElubGluZUJveCgpCiB7CiAgICAgaWYgKGlzPFJlbmRlclNWR1RleHQ+KG1fZmxvdykpIHsK
LSAgICAgICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRv
d25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOworICAgICAgICBhdXRvIGJveCA9IG1ha2VV
bmlxdWU8U1ZHUm9vdElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSk7
CiAgICAgICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0
dXJuIGJveDsKICAgICB9CiAgICAgICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJv
b3RJbmxpbmVCb3g+KG1fZmxvdyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Um9vdElubGluZUJv
eD4obV9mbG93KTsKIH0KIAogUm9vdElubGluZUJveCogQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0
ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW5saW5lIEJp
ZGlSdW4qIENvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlz
dDxCaWRpUnVuPiYgYmkKICAgICAgICAgd2hpbGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNl
Q29udGV4dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBiYXNlQ29udGV4dCA9IHBhcmVudDsKIAot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBzdGQ6Om1h
a2VfdW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwg
dHJhaWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJB
TCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IG1h
a2VVbmlxdWU8QmlkaVJ1bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0
cmFpbGluZ1NwYWNlUnVuLT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFM
KTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAgICAg
ICAgdHJhaWxpbmdTcGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuLmdldCgpOwogICAgICAgICBpZiAo
ZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKQEAgLTE2MTcsNyArMTYxNyw3IEBAIHZv
aWQgQ29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZChMaW5lTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlKQogICAgICAgICBpZiAobGF5b3V0U3RhdGUuY2hlY2tGb3JGbG9hdHNG
cm9tTGFzdExpbmUoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21WaXN1YWxPdmVy
ZmxvdyA9IGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygpOwogICAg
ICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21MYXlvdXRPdmVyZmxvdyA9IGxhc3RSb290Qm94KCkt
PmxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdygpOwotICAgICAgICAgICAgYXV0byBuZXdMaW5l
Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxv
dyk7CisgICAgICAgICAgICBhdXRvIG5ld0xpbmVCb3ggPSBtYWtlVW5pcXVlPFRyYWlsaW5nRmxv
YXRzUm9vdElubGluZUJveD4obV9mbG93KTsKICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdGbG9h
dHNMaW5lQm94ID0gbmV3TGluZUJveC5nZXQoKTsKICAgICAgICAgICAgIG1fbGluZUJveGVzLmFw
cGVuZExpbmVCb3goV1RGTW92ZShuZXdMaW5lQm94KSk7CiAgICAgICAgICAgICB0cmFpbGluZ0Zs
b2F0c0xpbmVCb3gtPnNldENvbnN0cnVjdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GbG9hdGluZ09iamVjdHMuY3BwCmluZGV4IDRjZGQxMzljNDg3NTE2ZWEwZTdiMTIxM2I3MDNi
ZDM0MjdhYjAxOGMuLmE2YzY0ODE4YzQ5NzQ1NjA5MGY2NjIzYzMwNGI1ZDYyNzcwN2FlNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC03NSw3
ICs3NSw3IEBAIEZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gmIHJlbmRl
cmVyLCBUeXBlIHR5cGUsIGNvbnN0IExheW91dFJlY3QmCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9h
dGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyKQog
ewotICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVu
ZGVyZXIpOworICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVu
ZGVyZXIpOwogICAgIG9iamVjdC0+c2V0U2hvdWxkUGFpbnQoIXJlbmRlcmVyLmhhc1NlbGZQYWlu
dGluZ0xheWVyKCkpOyAvLyBJZiBhIGxheWVyIGV4aXN0cywgdGhlIGZsb2F0IHdpbGwgcGFpbnQg
aXRzZWxmLiBPdGhlcndpc2Ugc29tZW9uZSBlbHNlIHdpbGwuCiAgICAgb2JqZWN0LT5zZXRJc0Rl
c2NlbmRhbnQodHJ1ZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTgzLDEyICs4MywxMiBAQCBz
dGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVu
ZGVyQm94JiByZW5kZXJlcikKIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9h
dGluZ09iamVjdDo6Y29weVRvTmV3Q29udGFpbmVyKExheW91dFNpemUgb2Zmc2V0LCBib29sIHNo
b3VsZFBhaW50LCBib29sIGlzRGVzY2VuZGFudCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0
KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1h
cmdpbk9mZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZy
YW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdp
bk9mZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQoKSBj
b25zdAogewotICAgIGF1dG8gY2xvbmVPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5n
T2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9mZnNldCwg
bV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOworICAgIGF1dG8gY2xvbmVPYmplY3QgPSBt
YWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0
LCBtX21hcmdpbk9mZnNldCwgbV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOwogICAgIGNs
b25lT2JqZWN0LT5tX3BhZ2luYXRpb25TdHJ1dCA9IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIGNs
b25lT2JqZWN0LT5tX2lzUGxhY2VkID0gbV9pc1BsYWNlZDsKICAgICByZXR1cm4gY2xvbmVPYmpl
Y3Q7CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQbGFj
ZWRGbG9hdHNUcmVlKCkKICAgICBpZiAobV9zZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2Jq
ZWN0VHJlZT4oKTsKKyAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBtYWtlVW5pcXVlPEZsb2F0aW5n
T2JqZWN0VHJlZT4oKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NldC5iZWdpbigpLCBlbmQgPSBt
X3NldC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBm
bG9hdGluZ09iamVjdCA9IGl0LT5nZXQoKTsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5p
c1BsYWNlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IGM3MmQwMWQ4MWM3ZDcx
NjYxNTc5ZTNiYTAxODMwZTQyOWQzMGY2ODguLjFlOTExYWU2MGE2MTI2ODlhNDk3ZmYyZDViN2Yw
ZDUwYjg3ZTI5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIzMyw3ICsyMzMs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3Jp
ZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYQogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFy
eWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6
ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBl
bmRPZlZhcnlpbmdUcmFja0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgIGlm
IChpc0VtcHR5QXJlYUVub3VnaChyb3dTcGFuLCBjb2x1bW5TcGFuKSkgewotICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRB
cmVhPihHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9y
b3dJbmRleCArIHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4o
bV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4o
R3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5k
ZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29s
dW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CiAgICAgICAgICAgICAvLyBB
ZHZhbmNlIHRoZSBpdGVyYXRvciB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdlIHdv
dWxkIHJldHVybiB0aGUgc2FtZSBncmlkIGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAgICAg
ICsrdmFyeWluZ1RyYWNrSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAppbmRl
eCA1ZmMzMjgxNTNhNmQ4YmZjNDg4M2JhNTEyMWNjYTBiZjZmMmU5OWQwLi42NjA5MDk4ZjljODcw
NDY4ODExNDE4YWIxNzgyOTQxN2JlZTJkMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZv
aWQgR3JpZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQo
SXRlbVBvc2l0aW9uIHByZWZlcmVuCiAKICAgICAvLyBMb29raW5nIGZvciBhIGNvbXBhdGlibGUg
YmFzZWxpbmUtc2hhcmluZyBncm91cC4KICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0g
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2Vs
aW5lQ29udGV4dD4oY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CisgICAgICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEJhc2VsaW5lQ29udGV4dD4o
Y2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IGF1dG8qIGNvbnRleHQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgICAg
ICBjb250ZXh0LT51cGRhdGVTaGFyZWRHcm91cChjaGlsZCwgcHJlZmVyZW5jZSwgYXNjZW50LCBk
ZXNjZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHAKaW5kZXggYWRkZWRjNDI4YjFmMmZkYjM1MDNlODEyNjI2Yjk3Njkz
YTNlN2I1Zi4uYjJiMDExYmRmNzQ5MWIzNWFiMWRiYjdhYzZiMjYzOTYxNzIxY2NhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRo
bS5jcHAKQEAgLTY4MSw3ICs2ODEsNyBAQCBkb3VibGUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
Ojpjb21wdXRlRmxleEZhY3RvclVuaXRTaXplKGNvbnN0IFZlY3RvcjxHcmlkVHJhYwogICAgICAg
ICAgICAgbGVmdE92ZXJTcGFjZSAtPSBiYXNlU2l6ZTsKICAgICAgICAgICAgIGZsZXhGYWN0b3JT
dW0gLT0gZmxleEZhY3RvcjsKICAgICAgICAgICAgIGlmICghdHJhY2tzVG9UcmVhdEFzSW5mbGV4
aWJsZSkKLSAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxUcmFja0luZGV4U2V0PigpOworICAgICAgICAgICAgICAgIHRyYWNrc1RvVHJl
YXRBc0luZmxleGlibGUgPSBtYWtlVW5pcXVlPFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAg
ICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlLT5hZGQoaW5kZXgpOwogICAgICAgICAgICAgdmFs
aWRGbGV4RmFjdG9yVW5pdCA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMjYwLDEwICsxMjYwLDEw
IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cChHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lCiAgICAgbV9zaXppbmdPcGVyYXRpb24gPSBzaXpp
bmdPcGVyYXRpb247CiAgICAgc3dpdGNoIChtX3NpemluZ09wZXJhdGlvbikgewogICAgIGNhc2Ug
SW50cmluc2ljU2l6ZUNvbXB1dGF0aW9uOgotICAgICAgICBtX3N0cmF0ZWd5ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRl
Z3kgPSBtYWtlVW5pcXVlPEluZGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUcmFja1NpemluZzoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6
bWFrZV91bmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKKyAgICAgICAgbV9zdHJh
dGVneSA9IG1ha2VVbmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKaW5kZXggNzNiMzY1NDc2NzE0MGEwMzcwZTRkNTY5NTZlNTRmMjY3NGI1OGIzNi4uYjNjNDAw
NzkwMmRmNjA0ODYyYTVhYzdjMjk5OGNiYWQ3M2YxMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtOTYsNyArOTYsNyBAQCBIaXRUZXN0UmVzdWx0
OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pc092
ZXJXaWRnZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBO
b2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVT
ZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RC
YXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVl
PE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIH0KIAog
SGl0VGVzdFJlc3VsdDo6fkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7CkBAIC0xMTMsNyArMTEz
LDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRl
c3RSZXN1bHQmIG90aGVyKQogICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0
KCk7CiAKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0IGhpdCB0
ZXN0LgotICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJl
c3VsdCA/IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJl
c3VsdCkgOiBudWxscHRyOworICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlz
dEJhc2VkVGVzdFJlc3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCkgOiBudWxscHRyOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjkwLDE0
ICs2OTAsMTQgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgb3RoZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXEKIGNvbnN0IEhpdFRlc3RSZXN1bHQ6
Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQoKSBjb25zdAogewog
ICAgIGlmICghbV9saXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RS
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCA9IG1ha2VVbmlxdWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJh
c2VkVGVzdFJlc3VsdDsKIH0KIAogSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJlc3Vs
dDo6bXV0YWJsZUxpc3RCYXNlZFRlc3RSZXN1bHQoKQogewogICAgIGlmICghbV9saXN0QmFzZWRU
ZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG1ha2VVbmlx
dWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCA0M2M2NTM4NzZj
Zjk4NGE2MmI2ZmM5Mjk0NWQzZGQ2OTBjYTNlZGI5Li4xNWZkZTU0ZGU1ZDM0OTkyMDgyZDQzOWEy
OTBhNTFmOTI1Y2MyZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0
b3IuaApAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbnVtYmVyT2ZJ
c29sYXRlQW5jZXN0b3JzKGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdGVyKQogLy8gb2YgQmlkaVJl
c29sdmVyIHdoaWNoIGtub3dzIG5vdGhpbmcgYWJvdXQgUmVuZGVyT2JqZWN0cy4KIHN0YXRpYyBp
bmxpbmUgdm9pZCBhZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKElubGluZUJpZGlS
ZXNvbHZlciYgcmVzb2x2ZXIsIFJlbmRlck9iamVjdCYgb2JqLCB1bnNpZ25lZCBwb3MsIFJlbmRl
ckVsZW1lbnQmIHJvb3QpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVk
UnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5j
b250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4g
aXNvbGF0ZWRSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KHBvcywgcG9zLCBvYmosIHJlc29sdmVy
LmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogICAgIC8vIEZJWE1FOiBpc29sYXRlZFJ1bnMo
KSBjb3VsZCBiZSBhIGhhc2ggb2Ygb2JqZWN0LT5ydW4gYW5kIHRoZW4gd2UgY291bGQgY2hlYXBs
eQogICAgIC8vIEFTU0VSVCBoZXJlIHRoYXQgd2UgZGlkbid0IGNyZWF0ZSBtdWx0aXBsZSBvYmpl
Y3RzIGZvciB0aGUgc2FtZSBpbmxpbmUuCiAgICAgcmVzb2x2ZXIuc2V0V2hpdGVzcGFjZUNvbGxh
cHNpbmdUcmFuc2l0aW9uRm9ySXNvbGF0ZWRSdW4oKmlzb2xhdGVkUnVuLCByZXNvbHZlci53aGl0
ZXNwYWNlQ29sbGFwc2luZ1N0YXRlKCkuY3VycmVudFRyYW5zaXRpb24oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwCmluZGV4IDI4NWFhNWY5ZmU5YmFl
N2RmYzg1MjhjMjRjMWQ1NTY3ZDQxMjlmZjMuLjk2YWY5NWE0NTU2OTUwZTgxMjZiOTUzNzM1MzRk
NDc2ZGFlMzU2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92
ZXJsYXBNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBN
YXAuY3BwCkBAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBSZWN0TGlzdCYgcmVjdExpc3QpCiAvLyBDaGVja2luZyBmb3Ig
b3ZlcmxhcCBpbnZvbHZlcyBmaW5kaW5nIHRoZSBub2RlIGZvciB0aGUgY2xpcHBpbmcgbGF5ZXIg
ZW5jbG9zaW5nIHRoZSBnaXZlbiBsYXllciAob3IgdGhlIHJvb3QpLAogLy8gYW5kIGNvbXBhcmlu
ZyBhZ2FpbnN0IHRoZSBib3VuZHMgb2YgZWFybGllciBzaWJsaW5ncy4KIGNsYXNzIE92ZXJsYXBN
YXBDb250YWluZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IE92ZXJsYXBNYXBDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXImIHJvb3RMYXllcikKICAgICAg
ICAgOiBtX3Jvb3RTY29wZShyb290TGF5ZXIpCkBAIC0yOTYsNyArMjk3LDcgQEAgYm9vbCBMYXll
ck92ZXJsYXBNYXA6Om92ZXJsYXBzTGF5ZXJzKGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY29u
c3QgTGF5b3V0UmVjdCYKIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnB1c2hDb21wb3NpdGluZ0Nv
bnRhaW5lcigpCiB7Ci0gICAgbV9vdmVybGFwU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9yb290TGF5ZXIpKTsKKyAgICBtX292ZXJsYXBTdGFjay5h
cHBlbmQobWFrZVVuaXF1ZTxPdmVybGFwTWFwQ29udGFpbmVyPihtX3Jvb3RMYXllcikpOwogfQog
CiB2b2lkIExheWVyT3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNGRiYTNmMWM0MTA1YWZiMGU4
ZTRjNzZhN2NmY2I5ZTVmZmY3MTg1NC4uMDAxOTI1ODgyZTUwMjhjOGEyMDk5YjRiYmRlMzczMTY1
YjRhMjRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0x
MDQsNyArMTA0LDcgQEAgc3RhdGljIHZvaWQgaW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMo
Y29uc3QgUmVuZGVyQmxvY2smIGNvbnRhaW5lciwgUmVuZGVyQm8KICAgICB9CiAgICAgCiAgICAg
YXV0byYgZGVzY2VuZGFudFNldCA9IHBlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+ZW5zdXJl
KCZjb250YWluZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tl
ZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYWNr
ZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAg
IGJvb2wgYWRkZWQgPSBkZXNjZW5kYW50U2V0LT5hZGQoJmRlc2NlbmRhbnQpLmlzTmV3RW50cnk7
CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIHZvaWQgaW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJl
ck1hcHMoY29uc3QgUmVuZGVyQmxvY2smIGNvbnRhaW5lciwgUmVuZGVyQm8KICAgICB9CiAgICAg
CiAgICAgYXV0byYgY29udGFpbmVyU2V0ID0gcGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+ZW5z
dXJlKCZkZXNjZW5kYW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhh
c2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
SGFzaFNldDxjb25zdCBSZW5kZXJCbG9jayo+PigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
IAogICAgIEFTU0VSVCghY29udGFpbmVyU2V0LT5jb250YWlucygmY29udGFpbmVyKSk7CkBAIC0x
NjEsNyArMTYxLDcgQEAgY2xhc3MgUG9zaXRpb25lZERlc2NlbmRhbnRzTWFwIHsKICAgICAgICAg
fQogCiAgICAgICAgIGF1dG8mIGRlc2NlbmRhbnRzID0gbV9kZXNjZW5kYW50c01hcC5lbnN1cmUo
JmNvbnRhaW5pbmdCbG9jaywgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlOwogCiAgICAgICAgIGJvb2wgaXNOZXdFbnRyeSA9IG1vdmVEZXNjZW5kYW50VG9F
bmQgPT0gTW92ZURlc2NlbmRhbnRUb0VuZDo6WWVzID8gZGVzY2VuZGFudHMtPmFwcGVuZE9yTW92
ZVRvTGFzdCgmcG9zaXRpb25lZERlc2NlbmRhbnQpLmlzTmV3RW50cnkKQEAgLTUyOCw3ICs1Mjgs
NyBAQCBzdGF0aWMgaW5saW5lIFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9u
KiBjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdAogdm9pZCBSZW5kZXJCbG9jazo6YmVnaW5VcGRh
dGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpCiB7CiAgICAgaWYgKCF1cGRhdGVT
Y3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkpCi0gICAgICAgIHVwZGF0ZVNj
cm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IHN0ZDo6bWFrZV91bmlxdWU8
RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsSW5m
b0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpID0gbWFrZVVuaXF1ZTxEZWxheWVkVXBkYXRl
U2Nyb2xsSW5mb1N0YWNrPigpOwogICAgIGlmICh1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRU
cmFuc2FjdGlvblN0YWNrKCktPmlzRW1wdHkoKSB8fCBjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0Fm
dGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+dmlldyAhPSAmdmlldygpKQogICAgICAgICB1cGRhdGVT
Y3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCktPmFwcGVuZChVcGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbih2aWV3KCkpKTsKICAgICArK2N1cnJlbnRVcGRh
dGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpLT5uZXN0ZWRDb3VudDsKQEAgLTYy
MCw3ICs2MjAsNyBAQCBzdGF0aWMgUmVuZGVyQmxvY2tSYXJlRGF0YSYgZW5zdXJlQmxvY2tSYXJl
RGF0YShjb25zdCBSZW5kZXJCbG9jayYgYmxvY2spCiAgICAgCiAgICAgYXV0byYgcmFyZURhdGEg
PSBnUmFyZURhdGFNYXAtPmFkZCgmYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAg
ICBpZiAoIXJhcmVEYXRhKQotICAgICAgICByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyQmxvY2tSYXJlRGF0YT4oKTsKKyAgICAgICAgcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJlbmRl
ckJsb2NrUmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA3ZjFlNjM5
NzA2M2JlNGY4ZGY5YjU3ZjE3NWQ2ZTI2ZTc4ZWZiMTM0Li5iODY0MmQxNzIwM2JkNGJmMjViZGUx
NzFmOTg3MGFmN2Q1YTQzYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcApAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojps
YXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJl
CiAgICAgbV9zaW1wbGVMaW5lTGF5b3V0ID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9jb21wbGV4
TGluZUxheW91dCkKLSAgICAgICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICAgICAgbV9jb21wbGV4TGluZUxheW91
dCA9IG1ha2VVbmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKIAogICAgIG1fY29tcGxl
eExpbmVMYXlvdXQtPmxheW91dExpbmVCb3hlcyhyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9n
aWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0b20pOwogfQpAQCAtMjAxOSw3ICsyMDE5LDcgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVHcmlkQm94KCkKICAgICAKICAgICBzZXRM
aW5lR3JpZEJveCgwKTsKIAotICAgIGF1dG8gbGluZUdyaWRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVl
PFJvb3RJbmxpbmVCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGxpbmVHcmlkQm94ID0gbWFrZVVuaXF1
ZTxSb290SW5saW5lQm94PigqdGhpcyk7CiAgICAgbGluZUdyaWRCb3gtPnNldEhhc1RleHRDaGls
ZHJlbigpOyAvLyBOZWVkZWQgdG8gbWFrZSB0aGUgbGluZSBhc2NlbnQvZGVzY2VudCBhY3R1YWxs
eSBiZSBob25vcmVkIGluIHF1aXJrcyBtb2RlLgogICAgIGxpbmVHcmlkQm94LT5zZXRDb25zdHJ1
Y3RlZCgpOwogICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwIHRleHRCb3hEYXRh
TWFwOwpAQCAtMjI2MCw3ICsyMjYwLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRG
bG9hdGluZ09iamVjdHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgUGFpbnQKIAogdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cygpCiB7Ci0gICAgbV9mbG9h
dGluZ09iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0cz4oKnRoaXMpOwor
ICAgIG1fZmxvYXRpbmdPYmplY3RzID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlz
KTsKIH0KIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZWN0cygpCkBA
IC0zNjc3LDcgKzM2NzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlTGluZUJveGVz
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2NvbXBsZXhMaW5lTGF5b3V0KTsK
LSAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4TGluZUxh
eW91dD4oKnRoaXMpOworICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBs
ZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKICAgICBpZiAoU2ltcGxlTGluZUxheW91dDo6Y2FuVXNl
Rm9yTGluZUJveFRyZWUoKnRoaXMsICptX3NpbXBsZUxpbmVMYXlvdXQpKSB7CiAgICAgICAgIFNp
bXBsZUxpbmVMYXlvdXQ6OmdlbmVyYXRlTGluZUJveFRyZWUoKnRoaXMsICptX3NpbXBsZUxpbmVM
YXlvdXQpOwpAQCAtMzczNSw3ICszNzM1LDcgQEAgUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9j
a0Zsb3dSYXJlRGF0YSYgUmVuZGVyQmxvY2tGbG93OjplbnN1cmVSYXJlQmxvY2tGbG93RGEKIHZv
aWQgUmVuZGVyQmxvY2tGbG93OjptYXRlcmlhbGl6ZVJhcmVCbG9ja0Zsb3dEYXRhKCkKIHsKICAg
ICBBU1NFUlQoIWhhc1JhcmVCbG9ja0Zsb3dEYXRhKCkpOwotICAgIG1fcmFyZUJsb2NrRmxvd0Rh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFy
ZURhdGE+KCp0aGlzKTsKKyAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0gbWFrZVVuaXF1ZTxSZW5k
ZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CiB9CiAKICNpZiBF
TkFCTEUoVEVYVF9BVVRPU0laSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAppbmRleCBlMjBmYzIwNzE0YTEwZTEyMjBkMmVmZDBhOWM4YWFjYTI5OWQ4NTQxLi5hNDY3M2Qx
MTg4MmIzMWU5M2YyYmE3MDkwZjIyZWUzMDYwNjhkMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBDb250cm9sU3RhdGVz
UmVuZGVyZXJNYXAmIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpCiBzdGF0aWMgQ29udHJvbFN0
YXRlcyogY29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIp
CiB7CiAgICAgcmV0dXJuIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmVuc3VyZSgmcmVuZGVy
ZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbFN0YXRlcz4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udHJvbFN0YXRlcz4oKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTIxMTUsNyArMjExNSw3IEBAIExheW91dFNp
emUgUmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5k
ZXJCb3g6OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUVs
ZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OmRpcnR5TGluZUJveGVzKGJv
b2wgZnVsbExheW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCmluZGV4IDQyNDMwZGY4YmE3YjZhYjg2MzIzMjhlNjJlZjkyNTcwMWFm
M2I3NzguLmNkY2E0NThhMWMxZjQwZTk2OTYyMDRjZjQ2OGQ5OTE0ZWRhMjRlYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAt
MjUzOCw3ICsyNTM4LDcgQEAgYXV0byBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZW5zdXJlQ29udGlu
dWF0aW9uQ2hhaW5Ob2RlKCkgLT4gQ29udGludWF0aW9uQ2hhaW5Ob2QKIHsKICAgICBzZXRIYXND
b250aW51YXRpb25DaGFpbk5vZGUodHJ1ZSk7CiAgICAgcmV0dXJuICpjb250aW51YXRpb25DaGFp
bk5vZGVNYXAoKS5lbnN1cmUodGhpcywgWyZdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q29udGludWF0aW9uQ2hhaW5Ob2RlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmlu
ZGV4IDIyMTA0NDM0ZTQ1ZDZjOTg0NzZmZmQyOWFiNTUwYmQ2MmFjNDA4ZmUuLmMxZTAzZjA5N2Vm
NTlhZDVhMTZiMTk0YzljMDVkNjQ5ZjdmZjE1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgQ291bnRlck5v
ZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgQXRvbVN0
cmluZyYgaQogICAgIGlmIChwbGFjZS5wYXJlbnQpCiAgICAgICAgIHBsYWNlLnBhcmVudC0+aW5z
ZXJ0QWZ0ZXIobmV3Tm9kZSwgcGxhY2UucHJldmlvdXNTaWJsaW5nLmdldCgpLCBpZGVudGlmaWVy
KTsKIAotICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyTWFw
PigpKS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7
CisgICAgbWFwcy5hZGQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPENvdW50ZXJNYXA+KCkpLml0ZXJh
dG9yLT52YWx1ZS0+YWRkKGlkZW50aWZpZXIsIG5ld05vZGUuY29weVJlZigpKTsKICAgICByZW5k
ZXJlci5zZXRIYXNDb3VudGVyTm9kZU1hcCh0cnVlKTsKIAogICAgIGlmIChuZXdOb2RlLT5wYXJl
bnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVu
dENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRD
b250YWluZXIuY3BwCmluZGV4IDUxYTllNDY4NDM0NGQyNjM3ZDA0YTkxZmI1OWEzY2Q2ZWY4ZjA2
ZWQuLjdmNmNhYmMwNTkxMjEwODFjNGQ3Mjg2MDIxOWJkNGI5Yzg1Yjk0ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcApA
QCAtMzAzLDcgKzMwMyw3IEBAIFJlbmRlckJveEZyYWdtZW50SW5mbyogUmVuZGVyRnJhZ21lbnRD
b250YWluZXI6OnNldFJlbmRlckJveEZyYWdtZW50SW5mbyhjb25zdCBSCiB7CiAgICAgQVNTRVJU
KGlzVmFsaWQoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZv
PiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gsIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmln
aHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCb3hGcmFnbWVudEluZm8+JiBib3hJbmZvID0gbV9y
ZW5kZXJCb3hGcmFnbWVudEluZm8uYWRkKGJveCwgbWFrZVVuaXF1ZTxSZW5kZXJCb3hGcmFnbWVu
dEluZm8+KGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBjb250YWluaW5nQmxv
Y2tDaGFpbklzSW5zZXQpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuIGJveEluZm8uZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFn
bWVudGVkRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRl
ZEZsb3cuY3BwCmluZGV4IDQ0ZjU2MzViYTUzYWUzZjdlOTRkN2FjOGU0OTY3MzkwZjU4YzJlNTYu
Ljg0NmRkM2EwMmFhODZhYWY3MTVjMDk0ZThjMzUwYzE2NmE4NjdiMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcApAQCAtMTExNSw3
ICsxMTE1LDcgQEAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIFJlbmRlckZyYWdtZW50ZWRGbG93
OjpjdXJyZW50RnJhZ21lbnQoKSBjb25zdAogQ29udGFpbmluZ0ZyYWdtZW50TWFwJiBSZW5kZXJG
cmFnbWVudGVkRmxvdzo6Y29udGFpbmluZ0ZyYWdtZW50TWFwKCkKIHsKICAgICBpZiAoIW1fbGlu
ZVRvRnJhZ21lbnRNYXApCi0gICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKKyAgICAgICAgbV9saW5lVG9GcmFnbWVu
dE1hcCA9IG1ha2VVbmlxdWU8Q29udGFpbmluZ0ZyYWdtZW50TWFwPigpOwogCiAgICAgcmV0dXJu
ICptX2xpbmVUb0ZyYWdtZW50TWFwLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKaW5kZXggYjkwNDVlNjc5MDg3M2FiZjgxYTkwZGZh
NWJiYjExMDkzYzY3N2IwMi4uNTJjNzkwZDRlNTc4OWIxNzhlMjZjOGFiZDhiYTdiMTNjYzU5MTUx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3Bw
CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaChjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk0KICAgICAKICAgICBS
ZW5kZXJHZW9tZXRyeU1hcFN0ZXAmIHN0ZXAgPSBtX21hcHBpbmdbbV9pbnNlcnRpb25Qb3NpdGlv
bl07CiAgICAgaWYgKCF0LmlzSW50ZWdlclRyYW5zbGF0aW9uKCkpCi0gICAgICAgIHN0ZXAubV90
cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKKyAg
ICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+
KHQpOwogICAgIGVsc2UKICAgICAgICAgc3RlcC5tX29mZnNldCA9IExheW91dFNpemUodC5lKCks
IHQuZigpKTsKIApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1
c2hWaWV3KGNvbnN0IFJlbmRlclZpZXcqIHZpZXcsIGNvbnN0IExheW91dFNpemUmIHNjcm9sCiAg
ICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9z
aXRpb25dOwogICAgIHN0ZXAubV9vZmZzZXQgPSBzY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHQpCi0g
ICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9u
TWF0cml4PigqdCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PigqdCk7CiAgICAgCiAgICAgc3RlcEluc2VydGVkKHN0ZXApOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IGUzNWEyYzEzMjI1ZDQ3
MjVjZDg4YzIyZjZkMDRjY2M5ZDBmMzQ5N2YuLjQ5YWQwMzU1NTM3MzQyMjVmMWRkZDYzM2I0MmMx
MzgzMmNjZWZiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAg
LTU0NCw3ICs1NDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJl
bmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYQogICAgIHVuc2lnbmVkIGxh
c3RBdXRvUmVwZWF0VHJhY2sgPSBmaXJzdEF1dG9SZXBlYXRUcmFjayArIGdyaWQuYXV0b1JlcGVh
dFRyYWNrcyhkaXJlY3Rpb24pOwogCiAgICAgaWYgKCFncmlkLmhhc0dyaWRJdGVtcygpKSB7Ci0g
ICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJ
bmRleFNldD4oKTsKKyAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVy
ZWRUcmFja0luZGV4U2V0PigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIHRyYWNrSW5kZXggPSBm
aXJzdEF1dG9SZXBlYXRUcmFjazsgdHJhY2tJbmRleCA8IGxhc3RBdXRvUmVwZWF0VHJhY2s7ICsr
dHJhY2tJbmRleCkKICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRl
eCk7CiAgICAgfSBlbHNlIHsKQEAgLTU1Miw3ICs1NTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8T3Jk
ZXJlZFRyYWNrSW5kZXhTZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9S
ZXBlYQogICAgICAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKGdyaWQsIGRpcmVjdGlvbiwg
dHJhY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eVRyYWNrSW5kZXhlcykKLSAgICAgICAgICAgICAg
ICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9yZGVyZWRUcmFja0lu
ZGV4U2V0PigpOworICAgICAgICAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IG1ha2VV
bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAgICAgICAgZW1wdHlUcmFj
a0luZGV4ZXMtPmFkZCh0cmFja0luZGV4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
NzMyLDcgKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gUmVuZGVyR3JpZDo6Y3Jl
YXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0CiAgICAgY29uc3QgdW5zaWdu
ZWQgZW5kT2ZDcm9zc0RpcmVjdGlvbiA9IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsK
ICAgICB1bnNpZ25lZCBjcm9zc0RpcmVjdGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29s
dmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7
CiAgICAgR3JpZFNwYW4gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNs
YXRlZERlZmluaXRlR3JpZFNwYW4oZW5kT2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVj
dGlvbiArIGNyb3NzRGlyZWN0aW9uU3BhblNpemUpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyaWRBcmVhPihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGly
ZWN0aW9uUG9zaXRpb25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24g
PT0gRm9yQ29sdW1ucyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRp
b25zKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0
aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlv
bnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8
UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRlbXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAppbmRleCBmNmNiNTYxODEyZDIyMjY4NjY5ODNmM2FiOWM3NDBhNTZk
YjAyNmU4Li5jMzU1ZmYzNzFiNDExYTU4ZTc5MDZjODc3ZWFkNGI1MzQ2NzE1YmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFn
ZSwgY29uc3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogICAgIDogUmVuZGVyUmVwbGFj
ZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIEludFNpemUoKSkKLSAgICAsIG1faW1hZ2VSZXNv
dXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291
cmNlPigpKQorICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBtYWtlVW5pcXVlPFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBtYWtlVW5pcXVlPFJl
bmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyhpbWFn
ZURldmljZVBpeGVsUmF0aW8pCiB7CiAgICAgdXBkYXRlQWx0VGV4dCgpOwpAQCAtMTQ0LDcgKzE0
NCw3IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsCiAKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFn
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0
eWxlSW1hZ2UpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSks
IEludFNpemUoKSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9pbWFnZVJlc291
cmNlKHN0eWxlSW1hZ2UgPyBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdl
Pigqc3R5bGVJbWFnZSkgOiBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggOWQ4YTY1
OTM0YmEzZmQyNTQ3NGMzOWM5MWZlZWM0M2FhMGM5ZjlmNS4uMTUzMjVjZGExNjkwNjdhNTY5MWI4
ODVhOGRmZGM3YWE5MDM2NDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKQEAgLTExMDAsNyArMTEwMCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpkZWxldGVM
aW5lcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJJbmxpbmU6OmNy
ZWF0ZUlubGluZUZsb3dCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGlu
ZUZsb3dCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGbG93Qm94Pigq
dGhpcyk7CiB9CiAKIElubGluZUZsb3dCb3gqIFJlbmRlcklubGluZTo6Y3JlYXRlQW5kQXBwZW5k
SW5saW5lRmxvd0JveCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCAyNzZjZTgyNzJiY2RiMzM2NDU0MWRlNDYxMTJmMmEzZjk3NDEwMTcxLi42NDA2MjhmZDY0
YmQxYWRiMmIyNjk4ODk1YWZjYzkzYTQ4MDhhYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVOb3JtYWxGbG93TGlzdCgpCiAgICAgICAgIC8vIElnbm9yZSBub24tb3ZlcmZsb3cgbGF5
ZXJzIGFuZCByZWZsZWN0aW9ucy4KICAgICAgICAgaWYgKGNoaWxkLT5pc05vcm1hbEZsb3dPbmx5
KCkgJiYgIWlzUmVmbGVjdGlvbkxheWVyKCpjaGlsZCkpIHsKICAgICAgICAgICAgIGlmICghbV9u
b3JtYWxGbG93TGlzdCkKLSAgICAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKKyAgICAgICAgICAgICAgICBtX25v
cm1hbEZsb3dMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAg
ICAgICAgIG1fbm9ybWFsRmxvd0xpc3QtPmFwcGVuZChjaGlsZCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29s
IGluY2x1ZGVIaWRkZW5MYXllcnMsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3IKICAgICBpZiAoaW5j
bHVkZUhpZGRlbkxheWVyICYmICFpc05vcm1hbEZsb3dPbmx5KCkpIHsKICAgICAgICAgYXV0byYg
bGF5ZXJMaXN0ID0gKHpJbmRleCgpID49IDApID8gcG9zaXRpdmVaT3JkZXJMaXN0IDogbmVnYXRp
dmVaT3JkZXJMaXN0OwogICAgICAgICBpZiAoIWxheWVyTGlzdCkKLSAgICAgICAgICAgIGxheWVy
TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAg
ICAgICBsYXllckxpc3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOwogICAg
ICAgICBsYXllckxpc3QtPmFwcGVuZCh0aGlzKTsKICAgICB9CiAKQEAgLTEyMDYsNyArMTIwNiw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgYm9vbCBoYWRUcmFu
c2Zvcm0gPSAhIW1fdHJhbnNmb3JtOwogICAgIGlmIChoYXNUcmFuc2Zvcm0gIT0gaGFkVHJhbnNm
b3JtKSB7CiAgICAgICAgIGlmIChoYXNUcmFuc2Zvcm0pCi0gICAgICAgICAgICBtX3RyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCk7CisgICAgICAgICAg
ICBtX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gbnVsbHB0cjsKICAgICAgICAgCkBA
IC01NTE5LDcgKzU1MTksNyBAQCBSZWY8Q2xpcFJlY3RzPiBSZW5kZXJMYXllcjo6dXBkYXRlQ2xp
cFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbgogICAgIH0KICAgICAK
ICAgICBpZiAoIW1fY2xpcFJlY3RzQ2FjaGUpCi0gICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPENsaXBSZWN0c0NhY2hlPigpOworICAgICAgICBtX2NsaXBSZWN0c0Nh
Y2hlID0gbWFrZVVuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKICNpZm5kZWYgTkRFQlVHCiAgICAg
bV9jbGlwUmVjdHNDYWNoZS0+bV9jbGlwUmVjdHNSb290W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJl
Y3RzQ29udGV4dC5yb290TGF5ZXI7CiAgICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9zY3JvbGxiYXJS
ZWxldmFuY3lbY2xpcFJlY3RzVHlwZV0gPSBjbGlwUmVjdHNDb250ZXh0Lm92ZXJsYXlTY3JvbGxi
YXJTaXplUmVsZXZhbmN5OwpAQCAtNjA5Nyw3ICs2MDk3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
Y2xlYXJDbGlwUmVjdHMoQ2xpcFJlY3RzVHlwZSB0eXBlVG9DbGVhcikKIFJlbmRlckxheWVyQmFj
a2luZyogUmVuZGVyTGF5ZXI6OmVuc3VyZUJhY2tpbmcoKQogewogICAgIGlmICghbV9iYWNraW5n
KSB7Ci0gICAgICAgIG1fYmFja2luZyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJCYWNr
aW5nPigqdGhpcyk7CisgICAgICAgIG1fYmFja2luZyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJC
YWNraW5nPigqdGhpcyk7CiAgICAgICAgIGNvbXBvc2l0b3IoKS5sYXllckJlY2FtZUNvbXBvc2l0
ZWQoKnRoaXMpOwogCiAgICAgICAgIHVwZGF0ZUZpbHRlclBhaW50aW5nU3RyYXRlZ3koKTsKQEAg
LTY1MTUsNyArNjUxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAKICAgICBpZiAocmVu
ZGVyZXIoKS5pc0hUTUxNYXJxdWVlKCkgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLm1hcnF1ZWVCZWhh
dmlvcigpICE9IE1hcnF1ZWVCZWhhdmlvcjo6Tm9uZSAmJiByZW5kZXJlcigpLmlzQm94KCkpIHsK
ICAgICAgICAgaWYgKCFtX21hcnF1ZWUpCi0gICAgICAgICAgICBtX21hcnF1ZWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlck1hcnF1ZWU+KHRoaXMpOworICAgICAgICAgICAgbV9tYXJxdWVlID0g
bWFrZVVuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKICAgICAgICAgbV9tYXJxdWVlLT51cGRh
dGVNYXJxdWVlU3R5bGUoKTsKICAgICB9IGVsc2UgaWYgKG1fbWFycXVlZSkKICAgICAgICAgbV9t
YXJxdWVlID0gbnVsbHB0cjsKQEAgLTY3MjcsNyArNjcyNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OmVuc3VyZUxheWVyRmlsdGVycygpCiAgICAgaWYgKG1fZmlsdGVycykKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIG1fZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJGaWx0
ZXJzPigqdGhpcyk7CisgICAgbV9maWx0ZXJzID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllckZpbHRl
cnM+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJMYXllckZpbHRlcnMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRl
eCA3ZjE0MzY2YTdlNTYxMTAzMzcyMDc3YmVmZTJhNjA4MzQyZjdiYTQ5Li43NWY5ZWIwZjI5N2Ey
MzZjN2E3ODI1Njg2M2QwNTI4NTdiNGNkY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTYyNyw3ICsxNjI3LDcgQEAgYm9vbCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFuY2VzdG9yQ2xpcHBpbmdTdGFjayhWZWN0b3I8Q29t
cG9zaXRlZENsaXBEYXRhPiYKICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2FuY2VzdG9yQ2xpcHBp
bmdTdGFjaykgewotICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9IHN0ZDo6bWFrZV91
bmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7
CisgICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrID0gbWFrZVVuaXF1ZTxMYXllckFuY2Vz
dG9yQ2xpcHBpbmdTdGFjaz4oV1RGTW92ZShjbGlwcGluZ0RhdGEpKTsKICAgICAgICAgTE9HX1dJ
VEhfU1RSRUFNKENvbXBvc2l0aW5nLCBzdHJlYW0gPDwgImxheWVyICIgPDwgJm1fb3duaW5nTGF5
ZXIgPDwgIiBhbmNlc3RvckNsaXBwaW5nU3RhY2sgIiA8PCAqbV9hbmNlc3RvckNsaXBwaW5nU3Rh
Y2spOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMTc4LDE3ICszMTc4LDE3IEBA
IGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNl
dCwgY29uc3QgQW5pbWF0aW9uJiBhbmltCiAgICAgICAgIAogICAgICAgICBib29sIGlzRmlyc3RP
ckxhc3RLZXlmcmFtZSA9IGtleSA9PSAwIHx8IGtleSA9PSAxOwogICAgICAgICBpZiAoKGhhc1Ry
YW5zZm9ybSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250
YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKSkKLSAgICAgICAgICAgIHRyYW5zZm9y
bVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4o
a2V5LCBrZXlmcmFtZVN0eWxlLT50cmFuc2Zvcm0oKSwgdGYpKTsKKyAgICAgICAgICAgIHRyYW5z
Zm9ybVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oa2V5
LCBrZXlmcmFtZVN0eWxlLT50cmFuc2Zvcm0oKSwgdGYpKTsKIAogICAgICAgICBpZiAoKGhhc09w
YWNpdHkgJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFp
bnNQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpKQotICAgICAgICAgICAgb3BhY2l0eVZlY3Rv
ci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPihrZXksIGtleWZy
YW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5z
ZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5v
cGFjaXR5KCksIHRmKSk7CiAKICAgICAgICAgaWYgKChoYXNGaWx0ZXIgJiYgaXNGaXJzdE9yTGFz
dEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZpbHRlcikpCi0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlx
dWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRm
KSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5p
bWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRmKSk7CiAKICNpZiBF
TkFCTEUoRklMVEVSU19MRVZFTF8yKQogICAgICAgICBpZiAoKGhhc0JhY2tkcm9wRmlsdGVyICYm
IGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlcikpCi0gICAgICAgICAgICBiYWNrZHJv
cEZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1
ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpLCB0ZikpOworICAgICAgICAg
ICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9u
VmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKICNlbmRp
ZgogICAgIH0KIApAQCAtMzI0Myw4ICszMjQzLDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIK
ICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBvcGFjaXR5QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRp
b25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpOwogICAgICAgICBpZiAob3BhY2l0eUFu
aW0gJiYgIW9wYWNpdHlBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAg
ICAgS2V5ZnJhbWVWYWx1ZUxpc3Qgb3BhY2l0eVZlY3RvcihBbmltYXRlZFByb3BlcnR5T3BhY2l0
eSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZs
b2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNp
dHkoKSkpKTsKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlx
dWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9w
YWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8
RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgY29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3Bh
Y2l0eSgpKSkpOworICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxG
bG9hdEFuaW1hdGlvblZhbHVlPigxLCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0
eSgpKSkpOwogICAgICAgICAgICAgLy8gVGhlIGJveFNpemUgcGFyYW0gaXMgb25seSB1c2VkIGZv
ciB0cmFuc2Zvcm0gYW5pbWF0aW9ucyAod2hpY2ggY2FuIG9ubHkgcnVuIG9uIFJlbmRlckJveGVz
KSwgc28gd2UgcGFzcyBhbiBlbXB0eSBzaXplIGhlcmUuCiAgICAgICAgICAgICBpZiAobV9ncmFw
aGljc0xheWVyLT5hZGRBbmltYXRpb24ob3BhY2l0eVZlY3RvciwgRmxvYXRTaXplKCksIG9wYWNp
dHlBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRl
ZFByb3BlcnR5T3BhY2l0eSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8g
ZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3Qgb3BhY2l0eSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1h
dGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgb3BhY2l0eS4KQEAgLTMyNTgsOCArMzI1OCw4
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVP
ZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogdHJh
bnNmb3JtQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVRy
YW5zZm9ybSk7CiAgICAgICAgIGlmICh0cmFuc2Zvcm1BbmltICYmICF0cmFuc2Zvcm1BbmltLT5p
c0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qg
dHJhbnNmb3JtVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pOwotICAgICAgICAgICAg
dHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlPigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7Ci0gICAgICAgICAgICB0cmFuc2Zv
cm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+
KDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3Iu
aW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+
dHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVu
aXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsK
ICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1W
ZWN0b3IsIHNuYXBwZWRJbnRSZWN0KHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpLnNpemUo
KSwgdHJhbnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRp
b24oQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgdHJhbnNmb3JtIGlzIHZpc2libGUg
d2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCB0cmFuc2Zvcm0uCiAg
ICAgICAgICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCp0b1N0eWxlKTsKQEAgLTMyNzIsOCArMzI3
Miw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRp
bWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiog
ZmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUZp
bHRlcik7CiAgICAgICAgIGlmIChmaWx0ZXJBbmltICYmICFmaWx0ZXJBbmltLT5pc0VtcHR5T3Ja
ZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmlsdGVyVmVj
dG9yKEFuaW1hdGVkUHJvcGVydHlGaWx0ZXIpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmlu
c2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUt
PmZpbHRlcigpKSk7Ci0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91
bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CisgICAg
ICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFs
dWU+KDAsIGZyb21TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5p
bnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+ZmlsdGVy
KCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0
ZXJWZWN0b3IsIEZsb2F0U2l6ZSgpLCBmaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRp
b25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5RmlsdGVyKSwgdGltZU9mZnNldCkp
IHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmaWx0ZXIg
aXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIGZp
bHRlci4KICAgICAgICAgICAgICAgICB1cGRhdGVGaWx0ZXJzKCp0b1N0eWxlKTsKQEAgLTMyODcs
OCArMzI4Nyw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91
YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1h
dGlvbiogYmFja2Ryb3BGaWx0ZXJBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpOwogICAgICAgICBpZiAoYmFja2Ryb3BG
aWx0ZXJBbmltICYmICFiYWNrZHJvcEZpbHRlckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigp
KSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBiYWNrZHJvcEZpbHRlclZlY3RvcihB
bmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpOwotICAgICAgICAgICAgYmFja2Ry
b3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFs
dWU+KDAsIGZyb21TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwotICAgICAgICAgICAgYmFja2Ry
b3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFs
dWU+KDEsIHRvU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGJhY2tkcm9w
RmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBm
cm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVy
VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxl
LT5iYWNrZHJvcEZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5h
ZGRBbmltYXRpb24oYmFja2Ryb3BGaWx0ZXJWZWN0b3IsIEZsb2F0U2l6ZSgpLCBiYWNrZHJvcEZp
bHRlckFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1h
dGVkUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgYmFja2Ryb3AgZmlsdGVyIGlz
IHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBiYWNr
ZHJvcCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlQmFja2Ryb3BGaWx0ZXJzKCp0b1N0
eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggYWJlNGQ0ZDY3NWEyMjE4NmUyZWE4OWQ0MTJmZmE4MTUzOGM1YzkyOS4u
MzIxMjI5ZDZmMjNjZmFlNjZhMDVhNTI4MDhkZDBiMGNiYThjMTQ0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI5NSw3
ICsyOTUsNyBAQCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OlJlbmRlckxheWVyQ29tcG9zaXRvcihS
ZW5kZXJWaWV3JiByZW5kZXJWaWV3KQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
aWYgKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5wbGF0Zm9ybVdpZGdldCgpKQotICAgICAgICBt
X2xlZ2FjeVNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2Fj
eVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I+KHBhZ2UoKS5jaHJvbWUoKS5jbGllbnQo
KSwgaXNNYWluRnJhbWVDb21wb3NpdG9yKCkpOworICAgICAgICBtX2xlZ2FjeVNjcm9sbGluZ0xh
eWVyQ29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29v
cmRpbmF0b3I+KHBhZ2UoKS5jaHJvbWUoKS5jbGllbnQoKSwgaXNNYWluRnJhbWVDb21wb3NpdG9y
KCkpOwogI2VuZGlmCiB9CiAKQEAgLTYxMiw3ICs2MTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6bm90aWZ5Rmx1c2hCZWZvcmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xh
eWVyKgogewogICAgIGlmICghbV9sYXllclVwZGF0ZXIpIHsKICAgICAgICAgUGxhdGZvcm1EaXNw
bGF5SUQgZGlzcGxheUlEID0gcGFnZSgpLmNocm9tZSgpLmRpc3BsYXlJRCgpOwotICAgICAgICBt
X2xheWVyVXBkYXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NMYXllclVwZGF0ZXI+KCp0
aGlzLCBkaXNwbGF5SUQpOworICAgICAgICBtX2xheWVyVXBkYXRlciA9IG1ha2VVbmlxdWU8R3Jh
cGhpY3NMYXllclVwZGF0ZXI+KCp0aGlzLCBkaXNwbGF5SUQpOwogICAgIH0KICAgICAKICAgICBt
X2xheWVyVXBkYXRlci0+c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTQ3OTIsNyArNDc5Miw3IEBAIHZv
aWQgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxWaWV3
cG9ydENvbnN0cmFpbmVkTGF5ZXJzCiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZXdwb3J0
Q29uc3RyYWludHM+IGNvbnN0cmFpbnRzOwogICAgICAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCku
aXNTdGlja2lseVBvc2l0aW9uZWQoKSkgewotICAgICAgICAgICAgY29uc3RyYWludHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRv
ci5jb21wdXRlU3RpY2t5Vmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKKyAgICAgICAgICAg
IGNvbnN0cmFpbnRzID0gbWFrZVVuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWlu
dHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7
CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJMYXllciogZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxl
TGF5ZXIgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGNvbXBvc2l0b3IuaXNBc3luY1Njcm9s
bGFibGVTdGlja3lMYXllcigqbGF5ZXIsICZlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllcikg
JiYgZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpIHsKICAgICAgICAgICAgICAgICBBU1NF
UlQoZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKQEAgLTQ4
MDAsNyArNDgwMCw3IEBAIHZvaWQgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRv
cjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzCiAgICAgICAgICAgICAgICAg
c3RpY2t5Q29udGFpbmVyTWFwLmFkZChsYXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCkt
PnBsYXRmb3JtTGF5ZXIoKSwgZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXItPmJhY2tpbmco
KS0+c2Nyb2xsQ29udGFpbmVyTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmIChsYXllci0+cmVuZGVyZXIoKS5pc0ZpeGVkUG9zaXRpb25l
ZCgpKQotICAgICAgICAgICAgY29uc3RyYWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkUG9z
aXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0
Q29uc3RyYWludHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlx
dWU8Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZUZp
eGVkVmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcAppbmRleCA0Yjg2ZmUyYWQxNzVkY2U4NmFkMzg1MmJkZmMxNTJm
ZDEzMDhkNDVlLi4xMjhjOTZkYWUwYjMxMDA2Y2EyNWQ1YTU2YzcyMGJjODkwZDM0ZjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6ZGVzdHJv
eUxheWVyKCkKIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRlTGF5ZXIoKQogewog
ICAgIEFTU0VSVCghbV9sYXllcik7Ci0gICAgbV9sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyTGF5ZXI+KCp0aGlzKTsKKyAgICBtX2xheWVyID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllcj4o
KnRoaXMpOwogICAgIHNldEhhc0xheWVyKHRydWUpOwogICAgIG1fbGF5ZXItPmluc2VydE9ubHlU
aGlzTGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5jcHAKaW5kZXggYmM1NTI3YjhjNDZhNGRlMDY2ZjY5ZTVhMzEwYzg4NjgxOTZmYzIzYS4uMWFh
ZTA5ZDAwYjI2ZWEzY2FkZWE4NjcyZTI3NzkyOWJmZDE3YTYyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgaW50IFJl
bmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBl
LCBib29sIGZpcnN0TGluZSwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJl
bmRlckxpbmVCcmVhazo6Y3JlYXRlSW5saW5lQm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0
SW5saW5lQm94V3JhcHBlcihJbmxpbmVFbGVtZW50Qm94KiBpbmxpbmVCb3gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDli
YjlhNTM5ZDY2NDJkZjkwMDI2YTc4MmFmOGNmODRkYzQ5ZGEyYTkuLjQxMDNkYWQ0ODQ0ZGQyNGEz
MDJhNzMyYWYyMjE5YWM5MDAwMWNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJNdWx0aUNvbHVtbkZsb3cpOwogCiBSZW5kZXJNdWx0
aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGcmFnbWVudGVkRmxvdyhkb2N1bWVudCwg
V1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3NwYW5uZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxTcGFu
bmVyTWFwPigpKQorICAgICwgbV9zcGFubmVyTWFwKG1ha2VVbmlxdWU8U3Bhbm5lck1hcD4oKSkK
ICAgICAsIG1fbGFzdFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEp
CiAgICAgLCBtX2NvbHVtbldpZHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDRkYTNiZDczNzcxYmExNzE5MGVhYzM1ZGE2MzhlMjQzZjE5MDI5MDcu
LjBiZjUxOTNkZTQ4NDQ1YmNjNjc3ZTkxNGU4YWQzZGY4MWNlYjgyZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODkzLDcgKzE4OTMsNyBAQCBjb25z
dCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OnJhcmVE
YXRhKCkgY29uc3QKIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGEmIFJlbmRlck9i
amVjdDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAg
IHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lk
IFJlbmRlck9iamVjdDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggM2ZhYWZhMTEyMDY1
MjYyM2UwNjVlNmEyMWNlMWM3NTFkYmE5MWEzNy4uMDNkZDA4ZmU2YjdmMGE2ZGQxNWYyMWYyMzM1
Y2NhYmM1YWYwMmE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik7CiAKIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmpl
Y3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9zbmFwc2hvdFJl
c291cmNlKG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsKICAgICBtX3NuYXBz
aG90UmVzb3VyY2UtPmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMTg2Y2E4NzBlZDEwOTEzZDU4Yjg1NDllYjk2ZGUzMzZl
MzQ1NTM1OS4uZTkxYTEzMzcxOTkxMmQxOGZhNTVlMzZkODM1NTg4NTdjMmQxOGIzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xMzcsOSArMTM3LDkgQEAg
dm9pZCBSZW5kZXJUYWJsZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1My
IHNwZWMsIHlvdSBvbmx5IHVzZSBmaXhlZCB0YWJsZSBsYXlvdXQgaWYgYW4KICAgICAgICAgLy8g
ZXhwbGljaXQgd2lkdGggaXMgc3BlY2lmaWVkIG9uIHRoZSB0YWJsZS4gIEF1dG8gd2lkdGggaW1w
bGllcyBhdXRvIHRhYmxlIGxheW91dC4KICAgICAgICAgaWYgKHN0eWxlKCkudGFibGVMYXlvdXQo
KSA9PSBUYWJsZUxheW91dFR5cGU6OkZpeGVkICYmICFzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlz
QXV0bygpKQotICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4
ZWRUYWJsZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVu
aXF1ZTxGaXhlZFRhYmxlTGF5b3V0Pih0aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8QXV0b1RhYmxlTGF5b3V0Pih0aGlzKTsK
KyAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBtYWtlVW5pcXVlPEF1dG9UYWJsZUxheW91dD4o
dGhpcyk7CiAgICAgfQogCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBpbnZhbGlkYXRl
IGNvbGxhcHNlZCBib3JkZXJzIGNhY2hlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwCmluZGV4IDY4YzNhMTVkOTUxNmI1YjNjN2MyZGRhYjRhZGE0MDlhNWRjMjBkZmEuLmEw
MmQ5YzE2ZjNhMjdjYzUyMjA5NzEwMmMyNjliNzU1NTA5ZDAwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgUmVuZGVy
VGV4dDo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8
SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Ojpwb3Np
dGlvbkxpbmVCb3goSW5saW5lVGV4dEJveCYgdGV4dEJveCkKQEAgLTE1NDUsNyArMTU0NSw3IEBA
IHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5z
aWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBzZWN1
cmVUZXh0VGltZXIgPSBzZWN1cmVUZXh0VGltZXJzKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoIXNlY3VyZVRleHRUaW1lcikKLSAgICAgICAgc2VjdXJlVGV4
dFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKKyAgICAg
ICAgc2VjdXJlVGV4dFRpbWVyID0gbWFrZVVuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsK
ICAgICBzZWN1cmVUZXh0VGltZXItPnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0
ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYzE0
NDUxYTE4ZWVhN2E1NzFhMjc3Nzg5OGE3OWNjOGI0M2ZmMzE0Mi4uNWZlYzY3OGM2YmI1ZGYwZTQ5
MjJiMDEyYzNmMjY4ZGJhYjRhN2I2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFZpZXdS
ZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYgcmVwYWludFJlY3QpIGNvbnN0CiAgICAgLy8gRklY
TUU6IE1heWJlIHRoZXJlIHNob3VsZCBiZSBhIHJlZ2lvbiB0eXBlIHRoYXQgZG9lcyB0aGlzIGF1
dG9tYXRpY2FsbHkuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1SZXBhaW50UmVn
aW9uR3JpZFNpemUgPSAxNiAqIDE2OwogICAgIGlmIChtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lv
bi0+Z3JpZFNpemUoKSA+IG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUpCi0gICAgICAgIG1f
YWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KG1fYWNj
dW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMoKSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRS
ZXBhaW50UmVnaW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVn
aW9uLT5ib3VuZHMoKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6Zmx1c2hBY2N1bXVsYXRlZFJl
cGFpbnRSZWdpb24oKSBjb25zdApAQCAtNzI0LDcgKzcyNCw3IEBAIGJvb2wgUmVuZGVyVmlldzo6
dXNlc0NvbXBvc2l0aW5nKCkgY29uc3QKIFJlbmRlckxheWVyQ29tcG9zaXRvciYgUmVuZGVyVmll
dzo6Y29tcG9zaXRvcigpCiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29t
cG9zaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7
CisgICAgICAgIG1fY29tcG9zaXRvciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9y
PigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fY29tcG9zaXRvcjsKIH0KQEAgLTc0NSw3ICs3NDUs
NyBAQCB2b2lkIFJlbmRlclZpZXc6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bAogSW1hZ2VRdWFsaXR5Q29udHJvbGxlciYgUmVu
ZGVyVmlldzo6aW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIpCi0gICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4oKnRoaXMpOworICAgICAgICBtX2lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKIH0KIApAQCAt
ODM0LDcgKzgzNCw3IEBAIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVw
YWludFJlZ2lvbkFjY3VtdWxhdG9yKFJlbmRlclZpZXcqIHZpZXcpCiAKICAgICBtX3dhc0FjY3Vt
dWxhdGluZ1JlcGFpbnRSZWdpb24gPSAhIXJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVw
YWludFJlZ2lvbjsKICAgICBpZiAoIW1fd2FzQWNjdW11bGF0aW5nUmVwYWludFJlZ2lvbikKLSAg
ICAgICAgcm9vdFJlbmRlclZpZXctPm1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZWdpb24+KCk7CisgICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxh
dGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigpOwogICAgIG1fcm9vdFZpZXcg
PSBtYWtlV2Vha1B0cigqcm9vdFJlbmRlclZpZXcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggZmRjZDU5YzUyYzVmMzI4ZjUyMDlmMDBjMWY4
ZDgxNmFkYzVmNzY2OC4uNDQ1NTg0MWFmMzJmZjE1MjUyY2ZhMjhlZDhhNjljM2U0OWYxZjMwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtMTI5LDcg
KzEyOSw3IEBAIGZsb2F0IFJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0
cmluZyYgZWxsaXBzaXNTdHIsICBib29sIGx0ciwgZmxvCiAgICAgICAgIGdFbGxpcHNpc0JveE1h
cCA9IG5ldyBFbGxpcHNpc0JveE1hcCgpOwogCiAgICAgQVNTRVJUKCFoYXNFbGxpcHNpc0JveCgp
KTsKLSAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIHN0
ZDo6bWFrZV91bmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhp
cywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgp
IDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFs
KCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBhdXRvKiBlbGxpcHNp
c0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIG1ha2VVbmlxdWU8RWxsaXBzaXNCb3g+
KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBC
b3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgp
LCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKICAgICBzZXRIYXNFbGxpcHNpc0JveCh0cnVlKTsKICAgICAvLyBGSVhNRTog
RG8gd2UgbmVlZCBhbiBSVEwgdmVyc2lvbiBvZiB0aGlzPwogICAgIGlmIChsdHIgJiYgKHgoKSAr
IGxvZ2ljYWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0aCkgPD0gYmxvY2tSaWdodEVkZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IDdkZjI4Mjg4YTRkNTVj
MmM3ZDI2YWQ0YmMwMTc2ZDBiNzYxNzgzNjQuLjI0N2U1NWMwNjllOWZlODgxY2FmNGJmYmMyYjRh
ZWYxOWUzNjE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApA
QCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxv
d0JveCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJvb3RJbmxpbmVCb3g+CiAgICAgICAgIGlmICht
X2Zsb2F0cykKICAgICAgICAgICAgIG1fZmxvYXRzLT5hcHBlbmQobWFrZVdlYWtQdHIoZmxvYXRp
bmdCb3gpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mbG9hdHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENsZWFuTGluZUZsb2F0TGlzdD4oMSwgbWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsK
KyAgICAgICAgICAgIG1fZmxvYXRzID0gbWFrZVVuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEs
IG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVGbG9h
dChSZW5kZXJCb3gmIGZsb2F0aW5nQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAppbmRleCBlYzVlNzM1NmE2NGQxMjQ5ZGRhMTE0N2U4YmJh
MzFmNDc5MGI0YmYyLi5iOWJhZDBhMDlmMjliZjdhZGM5ZDMzM2Y0ZTgxMWMzZWExYjkzZmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApA
QCAtMTMxLDEzICsxMzEsMTMgQEAgc3RhdGljIFNlbGVjdGlvbkRhdGEgY29sbGVjdChjb25zdCBT
ZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRleHQmIHNlbGVjdGlvbiwgYm9vbAogICAgIHdoaWxlIChz
dGFydCAmJiBzdGFydCAhPSBzdG9wKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JT
ZWxlY3Rpb24oKnN0YXJ0LCBzZWxlY3Rpb24pKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJl
IHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5
IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEu
cmVuZGVyZXJzLnNldChzdGFydCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZv
Pigqc3RhcnQsIHRydWUpKTsKKyAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJz
LnNldChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUp
KTsKICAgICAgICAgICAgIGlmIChyZXBhaW50RGlmZmVyZW5jZSkgewogICAgICAgICAgICAgICAg
IGZvciAoYXV0byogYmxvY2sgPSBjb250YWluaW5nQmxvY2tCZWxvd1ZpZXcoKnN0YXJ0KTsgYmxv
Y2s7IGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpibG9jaykpIHsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byYgYmxvY2tJbmZvID0gb2xkU2VsZWN0aW9uRGF0YS5ibG9ja3MuYWRk
KGJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlv
bkluZm8+KCpibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlx
dWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjEzLDEzICsyMTMsMTMgQEAgSW50UmVjdCBT
ZWxlY3Rpb25SYW5nZURhdGE6OmNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQgY2xp
cFRvVmlzaWJsZUNvbnQKICAgICAgICAgaWYgKChzdGFydC0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkg
fHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgc3RhcnQgPT0gbV9zZWxl
Y3Rpb25Db250ZXh0LmVuZCgpKQogICAgICAgICAgICAgJiYgc3RhcnQtPnNlbGVjdGlvblN0YXRl
KCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9j
a3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBz
LiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIHJlbmRlcmVycy5z
ZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBj
bGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKSk7CisgICAg
ICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbklu
Zm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6
OlllcykpOwogICAgICAgICAgICAgYXV0byogYmxvY2sgPSBzdGFydC0+Y29udGFpbmluZ0Jsb2Nr
KCk7CiAgICAgICAgICAgICB3aGlsZSAoYmxvY2sgJiYgIWlzPFJlbmRlclZpZXc+KCpibG9jaykp
IHsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4m
IGJsb2NrSW5mbyA9IHJlbmRlcmVycy5hZGQoYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clNlbGVjdGlvbkluZm8+KCpibG9jaywgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlz
aWJsZUNvbnRlbnQ6Olllcyk7CisgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1
ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENs
aXBUb1Zpc2libGVDb250ZW50OjpZZXMpOwogICAgICAgICAgICAgICAgIGJsb2NrID0gYmxvY2st
PmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODEsNyAr
MjgxLDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5l
d1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tSZXAKICAgICBzZWxlY3Rpb25JdGVyYXRvciA9
IFNlbGVjdGlvbkl0ZXJhdG9yKHNlbGVjdGlvblN0YXJ0KTsKICAgICBmb3IgKGF1dG8qIGN1cnJl
bnRSZW5kZXJlciA9IHNlbGVjdGlvblN0YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJl
bmRlcmVyICE9IHNlbGVjdGlvbkVuZDsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0
b3IubmV4dCgpKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKmN1
cnJlbnRSZW5kZXJlciwgbV9zZWxlY3Rpb25Db250ZXh0KSkgewotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOworICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbklu
Zm8gPSBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRy
dWUpOwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgICAgICAgICAgZm9yIChhdXRv
JiByZWN0IDogc2VsZWN0aW9uSW5mby0+Y29sbGVjdGVkU2VsZWN0aW9uUmVjdHMoKSkKICAgICAg
ICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRSZWN0KHNlbGVjdGlvbkluZm8t
PnJlcGFpbnRDb250YWluZXIoKSwgcmVjdCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTZWxl
Y3Rpb25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWlu
dE1vZGUgYmxvY2tSZXAKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxv
Y2tTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gbmV3U2VsZWN0ZWRCbG9ja3MuYWRkKGNvbnRh
aW5pbmdCbG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlm
IChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigq
Y29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVl
PFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgICAg
ICAgICAgY29udGFpbmluZ0Jsb2NrID0gY29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2so
KTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAgICAgICAgICAgICBtX3NlbGVj
dGlvblJlY3RHYXRoZXJlci5hZGRHYXBSZWN0cyhibG9ja0luZm8tPnJlcGFpbnRDb250YWluZXIo
KSwgYmxvY2tJbmZvLT5yZWN0cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0LmNwcAppbmRleCA4Yzc2NmU2ZGUyYzc0YWQwMzc5NzMzMzFmYzdmNWE0NzQ5
MDE1YjhlLi5jMzYyZjRlNTdiMDBmOWNlMzlhNzNlY2U4MTFjMmM4MzJkNjUwYmEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC05OTcsNyAr
OTk3LDcgQEAgTGF5b3V0OjpMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2ln
bmVkIGxpbmVDb3VudCwgY29uc3QgUmVuZGVyQmxvY2sKIGNvbnN0IFJ1blJlc29sdmVyJiBMYXlv
dXQ6OnJ1blJlc29sdmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcnVuUmVzb2x2ZXIpCi0gICAg
ICAgIG1fcnVuUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2Nr
Rmxvd1JlbmRlcmVyLCAqdGhpcyk7CisgICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBtYWtlVW5pcXVl
PFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7CiAgICAgcmV0dXJuICpt
X3J1blJlc29sdmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggMWJmOThlNGVlYjQzYmEyMmNkYTRl
NmY1ZDNiYzJhNWY5ZmM0YjRiNy4uMDYyNWIxNmJkNTQzMTk3M2VkMzFkZTk5OGFlZDg4OWIwMTJi
YTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgcGFpbnRGbG93KGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5m
byYgcGFpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gZGVidWdTaGFkb3cgPSBu
dWxscHRyOwogICAgIGlmIChmbG93LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91dERlYnVnQm9y
ZGVyc0VuYWJsZWQoKSkgewotICAgICAgICBkZWJ1Z1NoYWRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8
U2hhZG93RGF0YT4oSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwg
dHJ1ZSwgQ29sb3IoMCwgMjU1LCAwLCAyMDApKTsKKyAgICAgICAgZGVidWdTaGFkb3cgPSBtYWtl
VW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpO
b3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CiAgICAgICAgIHRleHRQYWludGVy
LnNldFNoYWRvdyhkZWJ1Z1NoYWRvdy5nZXQoKSk7CiAgICAgfQogCkBAIC0zNDcsNyArMzQ3LDcg
QEAgdm9pZCBnZW5lcmF0ZUxpbmVCb3hUcmVlKFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3Qg
TGF5b3V0JiBsYXlvdXQpCiAgICAgICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+IGJpZGlSdW5zOwog
ICAgICAgICBmb3IgKGF1dG8gaXQgPSByYW5nZS5iZWdpbigpOyBpdCAhPSByYW5nZS5lbmQoKTsg
KytpdCkgewogICAgICAgICAgICAgYXV0byBydW4gPSAqaXQ7Ci0gICAgICAgICAgICBiaWRpUnVu
cy5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBy
dW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSks
IGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKKyAgICAgICAgICAgIGJpZGlS
dW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlSdW4+KHJ1bi5sb2NhbFN0YXJ0KCksIHJ1bi5s
b2NhbEVuZCgpLCBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJ1bi5yZW5kZXJlcigpKSwgYmlk
aUNvbnRleHQucHRyKCksIFVfTEVGVF9UT19SSUdIVCkpOwogICAgICAgICB9CiAKICAgICAgICAg
TGluZUluZm8gbGluZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dEF1dG9TaXppbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6
aW5nLmNwcAppbmRleCAzYmExMzBkNDU1OWQ3MjkyZDg5MWY1NTNjZjE0ODBmODY2YmIyYmFkLi40
YjQzZTZhY2JlMGVlZGFmNGVhZjRkMmU1ZDVhNDQ2MzkwNjA1M2VlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lk
IFRleHRBdXRvU2l6aW5nOjphZGRUZXh0Tm9kZShUZXh0JiBub2RlLCBmbG9hdCBjYW5kaWRhdGVT
aXplKQogICAgIExPRyhUZXh0QXV0b3NpemluZywgIiBhZGRBdXRvU2l6ZWROb2RlICVwIGNhbmRp
ZGF0ZVNpemU9JWYiLCAmbm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3RleHROb2Rlcy5hZGQ8VGV4dEF1dG9TaXppbmdIYXNoVHJhbnNsYXRvcj4obm9kZS5yZW5k
ZXJlcigpLT5zdHlsZSgpLCBudWxscHRyKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRBdXRvU2l6aW5nVmFsdWU+KCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7CiAgICAgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS0+YWRkVGV4dE5vZGUobm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAppbmRleCAyYjFjMWZh
MDNjYTFjNTc1NjkwMjc3YTVlODEyODcxMDEwZDQ0NjdlLi5kMTE2NjE1YTcyNmM1YTBhOTQzZDli
OWY2ZTA5NDBiOTVlNjkwOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lQnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUJyZWFrZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgTGluZUJyZWFrZXI6OnNraXBM
ZWFkaW5nV2hpdGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYK
ICAgICAgICAgaWYgKG9iamVjdC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAg
ICAgc2V0U3RhdGljUG9zaXRpb25zKG1fYmxvY2ssIGRvd25jYXN0PFJlbmRlckJveD4ob2JqZWN0
KSwgd2lkdGguc2hvdWxkSW5kZW50VGV4dCgpKTsKICAgICAgICAgICAgIGlmIChvYmplY3Quc3R5
bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgewotICAgICAgICAgICAgICAgIHJl
c29sdmVyLnJ1bnMoKS5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPigwLCAxLCBv
YmplY3QsIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKG1ha2VVbmlxdWU8QmlkaVJ1bj4oMCwgMSwg
b2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CiAgICAgICAgICAg
ICAgICAgbGluZUluZm8uaW5jcmVtZW50UnVuc0Zyb21MZWFkaW5nV2hpdGVzcGFjZSgpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG9iamVjdC5pc0Zsb2F0aW5nKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCmluZGV4IDRi
MTU5N2U5ZjIxYzljZDRiMmYwZDg4MzQ3NDQ3NzVmMWQ4YmRlMDEuLmQ1MjA5MmI2OGVkOGUyYzhm
ZGE1MTVjOTBjZDUyMjM1NmQ2NTVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIEludFNoYXBlSW50ZXJ2
YWwgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OmludGVydmFsQXQoaW50IHkpIGNvbnN0CiBzdGQ6
OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpj
b21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50IHNoYXBlTWFyZ2luKSBjb25zdAogewogICAg
IGludCBtYXJnaW5JbnRlcnZhbHNTaXplID0gKG9mZnNldCgpID4gc2hhcGVNYXJnaW4pID8gc2l6
ZSgpIDogc2l6ZSgpIC0gb2Zmc2V0KCkgKiAyICsgc2hhcGVNYXJnaW4gKiAyOwotICAgIGF1dG8g
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50
ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CisgICAgYXV0byBy
ZXN1bHQgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5JbnRlcnZhbHNT
aXplLCBzdGQ6Om1heChzaGFwZU1hcmdpbiwgb2Zmc2V0KCkpKTsKICAgICBNYXJnaW5JbnRlcnZh
bEdlbmVyYXRvciBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvcihzaGFwZU1hcmdpbik7CiAKICAgICBm
b3IgKGludCB5ID0gYm91bmRzKCkueSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggMzAyMzFhMGJlMWJi
YzYzZTRiZTNkMjUwNTEyYmVkM2QxOTU5NDA5OS4uZjVlZmVmZGQzMmIzMDU0N2FkYmQ4ZWIwOGY1
NGU2M2IwMjQwZmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHAKQEAgLTQ2LDI0ICs0NiwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVJbnNldFNoYXBlKGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IGJvdW5kcykKIHsKICAgICBBU1NFUlQoYm91bmRzLnJlY3QoKS53aWR0aCgpID49IDAgJiYgYm91
bmRzLnJlY3QoKS5oZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxC
b3hTaGFwZT4oYm91bmRzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRz
KTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUo
Y29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBmbG9hdCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJh
ZGl1cyA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4o
RmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1
cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlY3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGl1cywg
Y2VudGVyLnkoKSAtIHJhZGl1cywgcmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRTaXplKHJhZGl1
cywgcmFkaXVzKSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUVs
bGlwc2VTaGFwZShjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFk
aWkpCiB7CiAgICAgQVNTRVJUKHJhZGlpLndpZHRoKCkgPj0gMCAmJiByYWRpaS5oZWlnaHQoKSA+
PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRS
ZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0
KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRp
aS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwg
cmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
aGFwZT4gY3JlYXRlUG9seWdvblNoYXBlKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2lu
dD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQb2x5Z29uU2hhcGU+KFdURk1vdmUodmVydGljZXMpLCBmaWxsUnVsZSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1
bGUpOwogfQogCiBzdGF0aWMgaW5saW5lIEZsb2F0UmVjdCBwaHlzaWNhbFJlY3RUb0xvZ2ljYWwo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBlLCBjb25zdCBM
YQogICAgICAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgdmFsdWVzID0gcG9seWdvbi52YWx1ZXMo
KTsKICAgICAgICAgc2l6ZV90IHZhbHVlc1NpemUgPSB2YWx1ZXMuc2l6ZSgpOwogICAgICAgICBB
U1NFUlQoISh2YWx1ZXNTaXplICUgMikpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9p
bnQ+Pih2YWx1ZXNTaXplIC8gMik7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8Rmxv
YXRQb2ludD4+IHZlcnRpY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVl
c1NpemUgLyAyKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7
IGkgKz0gMikgewogICAgICAgICAgICAgRmxvYXRQb2ludCB2ZXJ0ZXgoCiAgICAgICAgICAgICAg
ICAgZmxvYXRWYWx1ZUZvckxlbmd0aCh2YWx1ZXMuYXQoaSksIGJveFdpZHRoKSwKQEAgLTE3OSw3
ICsxNzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFw
ZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogCiAgICAgSW50UmVjdCBpbWFnZVJl
Y3QgPSBzbmFwcGVkSW50UmVjdChpbWFnZVIpOwogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNu
YXBwZWRJbnRSZWN0KG1hcmdpblIpOwotICAgIGF1dG8gaW50ZXJ2YWxzID0gc3RkOjptYWtlX3Vu
aXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJl
Y3QueSgpKTsKKyAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgLy8gRklY
TUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVu
YWNjZWxlcmF0ZWQuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7
CiAKQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVh
dGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgICAgICB9
CiAgICAgfQogCi0gICAgYXV0byByYXN0ZXJTaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVy
U2hhcGU+KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOworICAgIGF1dG8g
cmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyks
IG1hcmdpblJlY3Quc2l6ZSgpKTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdy
aXRpbmdNb2RlOwogICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKICAgICByZXR1
cm4gcmFzdGVyU2hhcGU7CkBAIC0yMzAsNyArMjMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBl
PiBTaGFwZTo6Y3JlYXRlQm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBX
cmkKIAogICAgIEZsb2F0UmVjdCByZWN0KDAsIDAsIHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgp
LCByb3VuZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkpOwogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91
bmRzKHJlY3QsIHJvdW5kZWRSZWN0LnJhZGlpKCkpOwotICAgIGF1dG8gc2hhcGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJveFNoYXBlPihib3VuZHMpOworICAgIGF1dG8gc2hhcGUgPSBtYWtlVW5pcXVl
PEJveFNoYXBlPihib3VuZHMpOwogICAgIHNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01v
ZGU7CiAgICAgc2hhcGUtPm1fbWFyZ2luID0gbWFyZ2luOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IGNkOTRmODljMDJi
MGI4YzEzNTE5NDU3ZTQ0ZDBkZGFmNmQ4N2YxZmEuLjk0ODQzMTcxOTQ3YzAyMzA5YWI3ZjRmYjFi
OTdjMjYzODgyZWUzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU2hhcGVPdXRz
aWRlSW5mbyBmaW5hbCB7CiAgICAgICAgIEluZm9NYXAmIGluZm9NYXAgPSBTaGFwZU91dHNpZGVJ
bmZvOjppbmZvTWFwKCk7CiAgICAgICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBpbmZvID0gaW5m
b01hcC5nZXQoJmtleSkpCiAgICAgICAgICAgICByZXR1cm4gKmluZm87Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gaW5mb01hcC5hZGQoJmtleSwgc3RkOjptYWtlX3VuaXF1ZTxTaGFwZU91dHNpZGVJ
bmZvPihrZXkpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBpbmZvTWFwLmFkZCgma2V5LCBtYWtl
VW5pcXVlPFNoYXBlT3V0c2lkZUluZm8+KGtleSkpOwogICAgICAgICByZXR1cm4gKnJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CiAgICAgfQogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUluZm8oY29uc3Qg
UmVuZGVyQm94JiBrZXkpIHsgaW5mb01hcCgpLnJlbW92ZSgma2V5KTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMGM5OGY5MTY2Zjdl
MTUyOTcwM2JjZGIyYzhjODNjYzgwYmI3YmYyNC4uNzQ0YzkwYjhmYjNmNTI3NjhhNTM4ZDIxMzU4
MzYyY2E2MzQ4MjdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFz
aWNTaGFwZXMuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hh
cGVQYXRoOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGMK
IAogICAgIGF1dG8mIGZyb21QYXRoID0gZG93bmNhc3Q8QmFzaWNTaGFwZVBhdGg+KGZyb20pOwog
Ci0gICAgYXV0byByZXN1bHRpbmdQYXRoQnl0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhC
eXRlU3RyZWFtPigpOworICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gbWFrZVVuaXF1ZTxT
VkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0o
KmZyb21QYXRoLm1fYnl0ZVN0cmVhbSwgKm1fYnl0ZVN0cmVhbSwgKnJlc3VsdGluZ1BhdGhCeXRl
cywgcHJvZ3Jlc3MpOwogCiAgICAgYXV0byByZXN1bHQgPSBCYXNpY1NoYXBlUGF0aDo6Y3JlYXRl
KFdURk1vdmUocmVzdWx0aW5nUGF0aEJ5dGVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Db250ZW50RGF0YS5oCmluZGV4IGU3YmIwNjE2NTAyZDk5ZDZkYjQzOTJiYjQ2OGE5
YWI0NjljZTQ5NGEuLjJjMTJkZDliNDBkZDQwYjNjMGJmNjc0OTMyMmFlMmIwZmQxZTA3MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCkBAIC05NSw3
ICs5NSw3IEBAIGNsYXNzIEltYWdlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERh
dGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihE
b2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1f
aW1hZ2UuY29weVJlZigpKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IG1ha2VVbmlxdWU8SW1hZ2VD
b250ZW50RGF0YT4obV9pbWFnZS5jb3B5UmVmKCkpOwogICAgICAgICBpbWFnZS0+c2V0QWx0VGV4
dChhbHRUZXh0KCkpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQpAQCAtMTI2LDcgKzEy
Niw3IEBAIGNsYXNzIFRleHRDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7
CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJl
bmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihtX3RleHQpOyB9CiAKICAgICBT
dHJpbmcgbV90ZXh0OwogfTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBDb3VudGVyQ29udGVu
dERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJP
YmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxl
JikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUlu
dGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENvdW50ZXJDb250ZW50RGF0YT4oc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4o
Y291bnRlcigpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0
YT4obWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7CiAgICAgfQogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBtX2NvdW50ZXI7CkBAIC0xOTAsNyArMTkw
LDcgQEAgY2xhc3MgUXVvdGVDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7
CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJl
bmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKCkpOyB9Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQogCiAg
ICAgUXVvdGVUeXBlIG1fcXVvdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvRmlsbExheWVyLmNwcAppbmRleCBmM2Q5MWRjOGRiYzhkOWU0NmM2MDFiOTU4NDNiOWE5NTJm
M2IyZDFkLi4zMDAxNGQwNGY3MGZiOTE4MTc0Mjg3NjAzZmRlYWI3MjM5NTYxNGYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcApAQCAtNzYsNyArNzYs
NyBAQCBGaWxsTGF5ZXI6OkZpbGxMYXllcihGaWxsTGF5ZXJUeXBlIHR5cGUpCiB9CiAKIEZpbGxM
YXllcjo6RmlsbExheWVyKGNvbnN0IEZpbGxMYXllciYgbykKLSAgICA6IG1fbmV4dChvLm1fbmV4
dCA/IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKKyAg
ICA6IG1fbmV4dChvLm1fbmV4dCA/IG1ha2VVbmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDog
bnVsbHB0cikKICAgICAsIG1faW1hZ2Uoby5tX2ltYWdlKQogICAgICwgbV94UG9zaXRpb24oby5t
X3hQb3NpdGlvbikKICAgICAsIG1feVBvc2l0aW9uKG8ubV95UG9zaXRpb24pCkBAIC0xMTcsNyAr
MTE3LDcgQEAgRmlsbExheWVyOjp+RmlsbExheWVyKCkKIAogRmlsbExheWVyJiBGaWxsTGF5ZXI6
Om9wZXJhdG9yPShjb25zdCBGaWxsTGF5ZXImIG8pCiB7Ci0gICAgbV9uZXh0ID0gby5tX25leHQg
PyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CisgICAg
bV9uZXh0ID0gby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51
bGxwdHI7CiAKICAgICBtX2ltYWdlID0gby5tX2ltYWdlOwogICAgIG1feFBvc2l0aW9uID0gby5t
X3hQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCmluZGV4IDI0OWJhNDdlNTg0M2VjYzYyZTZmZDRmMjZhZjFjZjUzOGExNjNmOWMuLmZi
NDNjMjBlNWNlOTllY2UxOWY0NTJmZDlmODc5NjRkODE0YmI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBA
IFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjbG9uZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJT
dHlsZT4oc3R5bGUsIENsb25lKTsKIH0KIAogUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxl
LCBEaXNwbGF5VHlwZSBkaXNwbGF5KQpAQCAtNDA5LDcgKzQwOSw3IEBAIFJlbmRlclN0eWxlKiBS
ZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBwc2V1CiAgICAgUmVuZGVyU3R5bGUqIHJlc3VsdCA9IHBzZXVkby5nZXQoKTsKIAogICAg
IGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMpCi0gICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVz
ID0gc3RkOjptYWtlX3VuaXF1ZTxQc2V1ZG9TdHlsZUNhY2hlPigpOworICAgICAgICBtX2NhY2hl
ZFBzZXVkb1N0eWxlcyA9IG1ha2VVbmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKIAogICAgIG1f
Y2FjaGVkUHNldWRvU3R5bGVzLT5hcHBlbmQoV1RGTW92ZShwc2V1ZG8pKTsKIApAQCAtMTA1OCw3
ICsxMDU4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dGllcykKLSAgICAgICAgZGF0YS5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAgIGRhdGEuY3VzdG9tUGFpbnRX
YXRjaGVkUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgIGRh
dGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcy0+YWRkKG5hbWUpOwogfQogCkBAIC0xMzAx
LDcgKzEzMDEsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUlt
YWdlPiYmIGltYWdlLCBib29sIGFkZCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1
cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KGlt
YWdlLnJlbGVhc2VOb25OdWxsKCkpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxJ
bWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKIH0KIAogdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQp
CkBAIC0xMzEwLDEzICsxMzEwLDEzIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQogICAgIGlmIChhZGQgJiYgZGF0YS5jb250ZW50
KSB7CiAgICAgICAgIGF1dG8mIGxhc3QgPSBsYXN0Q29udGVudCgqZGF0YS5jb250ZW50KTsKICAg
ICAgICAgaWYgKCFpczxUZXh0Q29udGVudERhdGE+KGxhc3QpKQotICAgICAgICAgICAgbGFzdC5z
ZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpKTsKKyAgICAg
ICAgICAgIGxhc3Quc2V0TmV4dChtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byYgdGV4dENvbnRlbnQgPSBkb3duY2Fz
dDxUZXh0Q29udGVudERhdGE+KGxhc3QpOwogICAgICAgICAgICAgdGV4dENvbnRlbnQuc2V0VGV4
dCh0ZXh0Q29udGVudC50ZXh0KCkgKyBzdHJpbmcpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgZGF0YS5jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+
KHN0cmluZyk7CisgICAgICAgIGRhdGEuY29udGVudCA9IG1ha2VVbmlxdWU8VGV4dENvbnRlbnRE
YXRhPihzdHJpbmcpOwogICAgICAgICBhdXRvJiBhbHRUZXh0ID0gZGF0YS5hbHRUZXh0OwogICAg
ICAgICBpZiAoIWFsdFRleHQuaXNOdWxsKCkpCiAgICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNl
dEFsdFRleHQoYWx0VGV4dCk7CkBAIC0xMzI3LDEyICsxMzI3LDEyIEBAIHZvaWQgUmVuZGVyU3R5
bGU6OnNldENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBi
b29sIGFkZCkKIHsKICAgICBpZiAoIWNvdW50ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRD
b250ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50
ZXIpKSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnREYXRh
PihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29u
dGVudChRdW90ZVR5cGUgcXVvdGUsIGJvb2wgYWRkKQogewotICAgIHNldENvbnRlbnQoc3RkOjpt
YWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CisgICAgc2V0Q29udGVu
dChtYWtlVW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKSwgYWRkKTsKIH0KIAogdm9pZCBS
ZW5kZXJTdHlsZTo6c2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0x
NTUxLDcgKzE1NTEsNyBAQCBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNz
Q291bnRlckRpcmVjdGl2ZXMoKQogewogICAgIGF1dG8mIG1hcCA9IG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuY291bnRlckRpcmVjdGl2ZXM7CiAgICAgaWYgKCFtYXApCi0gICAgICAg
IG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKKyAgICAgICAg
bWFwID0gbWFrZVVuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOwogICAgIHJldHVybiAqbWFw
OwogfQogCkBAIC0xNjcxLDE0ICsxNjcxLDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRy
YW5zaXRpb25zKCkKIEFuaW1hdGlvbkxpc3QmIFJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25z
KCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9u
cykKLSAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0g
c3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigpOworICAgICAgICBtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+
KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zOwogfQog
CiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMoKQogewogICAg
IGlmICghbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucykKLSAgICAg
ICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAg
ICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMu
Y3BwCmluZGV4IDIwYjJhODExNGIwYzhlOWViZDQ4MjcwNzlhOTgyMGYyZWMwZGNkYzIuLjZlMzdj
ZjhmYjhhYmE1NWVjMzMwYTk2MDMzYThhOTU0YzdjYjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCkBAIC0yMDEs
NyArMjAxLDcgQEAgU3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoKQogCiBp
bmxpbmUgU3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoY29uc3QgU3R5bGVT
aGFkb3dTVkdEYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRh
PigpCi0gICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dE
YXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBzaGFkb3cob3RoZXIuc2hhZG93
ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAppbmRl
eCAzZDYxYzk0YzAxNjYxNjA4NThkYWJkODQwOWZjNDA4NjcwZTUwMWNhLi5jMTdlYWY4NTliMGJm
YWE3ZGFiYzAwOGQ0ZTc0MGZjNjMwYTRiODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCkBAIC0zMyw3ICszMyw3IEBAIFNoYWRvd0RhdGE6OlNo
YWRvd0RhdGEoY29uc3QgU2hhZG93RGF0YSYgbykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQog
ICAgICwgbV9zdHlsZShvLm1fc3R5bGUpCiAgICAgLCBtX2lzV2Via2l0Qm94U2hhZG93KG8ubV9p
c1dlYmtpdEJveFNoYWRvdykKLSAgICAsIG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlx
dWU8U2hhZG93RGF0YT4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgLCBtX25leHQoby5tX25l
eHQgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggYWQyY2JkOTU3ZWVmODI1NjBjZmIzNTJlOWY1MGIzOWU2
MzNhMjZmZi4uOTZkYmJhMDA3ZTZhNjRhN2Q2OTdhMjlhMjFkNjIxYWQ0NDc1NGI2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERh
CiAgICAgLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKG8udmlzaXRlZExpbmtUZXh0RW1w
aGFzaXNDb2xvcikKICAgICAsIGNhcmV0Q29sb3Ioby5jYXJldENvbG9yKQogICAgICwgdmlzaXRl
ZExpbmtDYXJldENvbG9yKG8udmlzaXRlZExpbmtDYXJldENvbG9yKQotICAgICwgdGV4dFNoYWRv
dyhvLnRleHRTaGFkb3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFk
b3cpIDogbnVsbHB0cikKKyAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gbWFrZVVuaXF1
ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCBjdXJzb3JEYXRh
KG8uY3Vyc29yRGF0YSkKICAgICAsIGluZGVudChvLmluZGVudCkKICAgICAsIGVmZmVjdGl2ZVpv
b20oby5lZmZlY3RpdmVab29tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDZmYmIyYjdi
MGMzZWIwM2U4NjlhMWVhYWM5MTYxMTE5YzljNjFlOWIuLmJkZDAxOTE1YWEyNzhkZDZhNjY0OGZm
NGMzZmJkYjNmY2NkMTQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTEzOSwxMyAr
MTM5LDEzIEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAgLCBzY3JvbGxTbmFwQXJlYShv
LnNjcm9sbFNuYXBBcmVhKQogI2VuZGlmCiAgICAgLCBjb250ZW50KG8uY29udGVudCA/IG8uY29u
dGVudC0+Y2xvbmUoKSA6IG51bGxwdHIpCi0gICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50
ZXJEaXJlY3RpdmVzID8gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigqby5j
b3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRyKQorICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5j
b3VudGVyRGlyZWN0aXZlcyA/IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291
bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKICAgICAsIGFsdFRleHQoby5hbHRUZXh0KQotICAg
ICwgYm94U2hhZG93KG8uYm94U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigq
by5ib3hTaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IG1h
a2VVbmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCB3aWxs
Q2hhbmdlKG8ud2lsbENoYW5nZSkKICAgICAsIGJveFJlZmxlY3Qoby5ib3hSZWZsZWN0KQotICAg
ICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxp
c3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKLSAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNp
dGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6
IG51bGxwdHIpCisgICAgLCBhbmltYXRpb25zKG8uYW5pbWF0aW9ucyA/IG1ha2VVbmlxdWU8QW5p
bWF0aW9uTGlzdD4oKm8uYW5pbWF0aW9ucykgOiBudWxscHRyKQorICAgICwgdHJhbnNpdGlvbnMo
by50cmFuc2l0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMp
IDogbnVsbHB0cikKICAgICAsIG1hc2soby5tYXNrKQogICAgICwgbWFza0JveEltYWdlKG8ubWFz
a0JveEltYWdlKQogICAgICwgcGFnZVNpemUoby5wYWdlU2l6ZSkKQEAgLTE3MCw3ICsxNzAsNyBA
QCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwganVzdGlmeUl0ZW1zKG8uanVzdGlmeUl0
ZW1zKQogICAgICwganVzdGlmeVNlbGYoby5qdXN0aWZ5U2VsZikKICAgICAsIGN1c3RvbVByb3Bl
cnRpZXMoby5jdXN0b21Qcm9wZXJ0aWVzKQotICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBzdGQ6Om1ha2VfdW5pcXVlPEhh
c2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxscHRy
KQorICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hl
ZFByb3BlcnRpZXMgPyBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRX
YXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykK
ICAgICAsIHRvdWNoQWN0aW9ucyhvLnRvdWNoQWN0aW9ucykKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCAyYzZmMzE3OGVl
YjI2YzdiMmMwZDk1YWUxMDhiN2VmY2M2ZTIyYzRlLi4yNGNkZTRiZDYxZTcxNGMyMzIzYjllNWNk
MmNmMjY5ZTI4NDVmOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZW5kZXJTVkdJbWFnZTo6UmVuZGVy
U1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAg
LCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVlKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVw
ZGF0ZSh0cnVlKQotICAgICwgbV9pbWFnZVJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRl
ckltYWdlUmVzb3VyY2U+KCkpCiB7CiAgICAgaW1hZ2VSZXNvdXJjZSgpLmluaXRpYWxpemUoKnRo
aXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmUuY3BwCmluZGV4IDNjMzEwNTZkMWNhYjFmZWExMDQ5MDc4MGQwMGM4ZGNkMmM3OTgwNjguLmJh
MWNkMDUyZGFkYWExY2UxODQxYzdjMjNjYWYzM2ZhYTRlMzQ3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgUmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBl
bGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dC
b3g+IFJlbmRlclNWR0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCgpCiB7Ci0gICAgYXV0byBi
b3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAgICBhdXRv
IGJveCA9IG1ha2VVbmlxdWU8U1ZHSW5saW5lRmxvd0JveD4oKnRoaXMpOwogICAgIGJveC0+c2V0
SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICByZXR1cm4gYm94OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5k
ZXggNjdlNmY5ODk3ZDI3NzQ0ZmQ0MTMzZmYyNzY3MTRjNGU5ZGE2NjViMC4uZGJmNDkwM2Y4OWY0
ZGM5MmVkZmYzMDUzOTI1ODY5ZjMyZTJkOTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xMTMsNyArMTEzLDcg
QEAgdm9pZCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRC
b3g+IFJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAgIGF1dG8gYm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CisgICAgYXV0byBi
b3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZVRleHRCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhh
c1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5j
cHAKaW5kZXggMWIzZWYyNGNjOTJkMjA1MmEzNGFhZDIwODgyMzMwZTFhMTIzYjg0Zi4uMWFkMjY0
OTY0NjcwOWMyM2YwZGI5Y2ZhZTRiODYzYzI0N2IzNjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAg
LTg4LDcgKzg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmkKICAgICBGbG9hdFJlY3QgdGFy
Z2V0Qm91bmRpbmdCb3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKIAogICAgIC8vIEFk
ZCBlZmZlY3RzIHRvIHRoZSBidWlsZGVyCi0gICAgYXV0byBidWlsZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7Cisg
ICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFw
aGljOjpjcmVhdGUoZmlsdGVyKSk7CiAgICAgYnVpbGRlci0+c2V0UHJpbWl0aXZlVW5pdHMoZmls
dGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCkpOwogICAgIGJ1aWxkZXItPnNldFRhcmdldEJv
dW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsKICAgICAKQEAgLTEyMiw3ICsxMjIsNyBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFscmVhZHkg
YnVpbHQsIG9yIHdlJ3JlIGluIGEgY3ljbGUsIG9yIHdlJ3JlIG1hcmtlZCBmb3IgcmVtb3ZhbC4g
UmVnYXJkbGVzcywganVzdCBkbyBub3RoaW5nIG1vcmUgbm93LgogICAgIH0KIAotICAgIGF1dG8g
ZmlsdGVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyRGF0YT4oKTsKKyAgICBhdXRvIGZp
bHRlckRhdGEgPSBtYWtlVW5pcXVlPEZpbHRlckRhdGE+KCk7CiAgICAgRmxvYXRSZWN0IHRhcmdl
dEJvdW5kaW5nQm94ID0gcmVuZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKTsKIAogICAgIGZpbHRl
ckRhdGEtPmJvdW5kYXJpZXMgPSBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNW
R0ZpbHRlckVsZW1lbnQ+KCZmaWx0ZXJFbGVtZW50KCksIGZpbHRlckVsZW1lbnQoKS5maWx0ZXJV
bml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCBkOGFk
MDgwNDY2YzVjNmQ5ZWVjZjA3OGNkZmY2NDI2YzYxNGEwY2UyLi41NTJjZTVhMzNhODA2MmU2YmVl
MGIwNGFlM2YxNjBmMDk5ZWI1MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTExOSw3ICsx
MTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbgogCiAgICAgYXV0byYgZ3JhZGllbnREYXRh
ID0gbV9ncmFkaWVudE1hcC5hZGQoJnJlbmRlcmVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgaWYgKCFncmFkaWVudERhdGEpCi0gICAgICAgIGdyYWRpZW50RGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8R3JhZGllbnREYXRhPigpOworICAgICAgICBncmFkaWVudERhdGEgPSBtYWtlVW5p
cXVlPEdyYWRpZW50RGF0YT4oKTsKIAogICAgIGJvb2wgaXNQYWludGluZ1RleHQgPSByZXNvdXJj
ZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5jcHAKaW5kZXggYWE1NzY1ZWQzNzliNmFiMWI5NDQ3MjZmNWI1ZWU0NTQzODNjNDY0
ZS4uNGM4MTliOWJjNTVkYzJiZmE4MmZiYmMwOTdmNjM3NTg1YjViMTI3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBw
bHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKIAogICAgIGJv
b2wgbWlzc2luZ01hc2tlckRhdGEgPSAhbV9tYXNrZXIuY29udGFpbnMoJnJlbmRlcmVyKTsKICAg
ICBpZiAobWlzc2luZ01hc2tlckRhdGEpCi0gICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIs
IHN0ZDo6bWFrZV91bmlxdWU8TWFza2VyRGF0YT4oKSk7CisgICAgICAgIG1fbWFza2VyLnNldCgm
cmVuZGVyZXIsIG1ha2VVbmlxdWU8TWFza2VyRGF0YT4oKSk7CiAKICAgICBNYXNrZXJEYXRhKiBt
YXNrZXJEYXRhID0gbV9tYXNrZXIuZ2V0KCZyZW5kZXJlcik7CiAgICAgQWZmaW5lVHJhbnNmb3Jt
IGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNm
b3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5o
CmluZGV4IDI5ZThlN2MyNDc1NjU4NzkyZWU0ZWQ0ZWQwODIwZmFlZWM5YmRjMGMuLmRmMDE3YmEx
YmZjMGNjZjdhZWE5M2EzYmIyZjdmYzc4OGY2OTZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAgLTMxLDYg
KzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBz
dHJ1Y3QgTWFza2VyRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwCmluZGV4IGNjMmNiZmNmMGZlOWE1OWVjZTE1ZjUyZjM1NzJkYjU5ZDE2MzIwZDYu
LjMxYmM1ZjE5MzFiZGFlNTBhYWM2NjEzNTlmYzBhMjZmMTc4NTg2ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEJ1aWxkIHBhdHRlcm4uCi0gICAgYXV0byBwYXR0
ZXJuRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRhdGE+KCk7CisgICAgYXV0byBwYXR0
ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1
ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmlu
ZGV4IDM0YjBhZTc1YmRjMDA1NjU3NmQ1MTM4MDE4NWVmZTZiYzcyYzcwNmUuLjZhNjcxMThmZjFi
MjU4YjMwM2M5NTYzODU5M2Y0NzRlZTg5YmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlbmRlclNW
R1NoYXBlOjp+UmVuZGVyU1ZHU2hhcGUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVuZGVyU1ZHU2hh
cGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKQogewotICAgIG1fcGF0aCA9IHN0ZDo6bWFrZV91
bmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7
CisgICAgbV9wYXRoID0gbWFrZVVuaXF1ZTxQYXRoPihwYXRoRnJvbUdyYXBoaWNzRWxlbWVudCgm
Z3JhcGhpY3NFbGVtZW50KCkpKTsKICAgICBwcm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKICAg
ICBtX2ZpbGxCb3VuZGluZ0JveCA9IGNhbGN1bGF0ZU9iamVjdEJvdW5kaW5nQm94KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5kZXggYmY3ODY0
NDNkZGQ2MGQ2MjFiY2Q1NzliODc3MGVkY2Q5MWQyOWZhOS4uOWM3MzdjYWZmOGI5Mjc2Y2M0MTA2
MDJmNTc5YTlmMzY0ZTVhMDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVzb3VyY2VzLmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpz
ZXRDbGlwcGVyKFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcikKICAgICBBU1NFUlQo
Y2xpcHBlci0+cmVzb3VyY2VUeXBlKCkgPT0gQ2xpcHBlclJlc291cmNlVHlwZSk7CiAKICAgICBp
ZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xpcHBlckZpbHRlck1h
c2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwor
ICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmls
dGVyTWFza2VyRGF0YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBw
ZXIgPSBjbGlwcGVyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wg
U1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikK
ICAgICBBU1NFUlQoZmlsdGVyLT5yZXNvdXJjZVR5cGUoKSA9PSBGaWx0ZXJSZXNvdXJjZVR5cGUp
OwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8
Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhLT5maWx0ZXIgPSBmaWx0ZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NTAsNyArNTUwLDcg
QEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlclN0YXJ0KFJlbmRlclNWR1Jlc291cmNlTWFy
a2VyKiBtYXJrZXJTdGFydCkKICAgICBBU1NFUlQobWFya2VyU3RhcnQtPnJlc291cmNlVHlwZSgp
ID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAg
ICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAg
ICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtl
ckRhdGEtPm1hcmtlclN0YXJ0ID0gbWFya2VyU3RhcnQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01
NzEsNyArNTcxLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZChSZW5kZXJTVkdS
ZXNvdXJjZU1hcmtlciogbWFya2VyTWlkKQogICAgIEFTU0VSVChtYXJrZXJNaWQtPnJlc291cmNl
VHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkK
LSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOwor
ICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBt
X21hcmtlckRhdGEtPm1hcmtlck1pZCA9IG1hcmtlck1pZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTU5Miw3ICs1OTIsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNW
R1Jlc291cmNlTWFya2VyKiBtYXJrZXJFbmQpCiAgICAgQVNTRVJUKG1hcmtlckVuZC0+cmVzb3Vy
Y2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRh
KQotICAgICAgICBtX21hcmtlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtlckRhdGE+KCk7
CisgICAgICAgIG1fbWFya2VyRGF0YSA9IG1ha2VVbmlxdWU8TWFya2VyRGF0YT4oKTsKIAogICAg
IG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID0gbWFya2VyRW5kOwogICAgIHJldHVybiB0cnVlOwpA
QCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIoUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIqIG1hc2tlcikKICAgICBBU1NFUlQobWFza2VyLT5yZXNvdXJjZVR5cGUo
KSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNr
ZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAg
ICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5tYXNrZXIgPSBtYXNrZXI7CiAgICAgcmV0dXJu
IHRydWU7CkBAIC02MzYsNyArNjM2LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldEZpbGwoUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIGZpbGwpCiAgICAgICAgICAgIHx8IGZpbGwtPnJlc291
cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9m
aWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5p
cXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+ZmlsbCA9IGZp
bGw7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02NTksNyArNjU5LDcgQEAgYm9vbCBTVkdSZXNvdXJj
ZXM6OnNldFN0cm9rZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogc3Ryb2tlKQogICAgICAg
ICAgICB8fCBzdHJva2UtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VU
eXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmls
bFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxs
U3Ryb2tlRGF0YS0+c3Ryb2tlID0gc3Ryb2tlOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCAx
OTE5NWFhMWRhYmM2NmU0YjM1NjU5NzJlYzkxZjg5NDc3ZjQwMzliLi4xZWViNzhmNTdiM2ViYjMx
YjRjZGU4ZTUzMDJkZGUwOWUwNDhjMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIFNW
R1Jlc291cmNlc0NhY2hlOjphZGRSZXNvdXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0CiAgICAgQVNTRVJUKCFtX2NhY2hlLmNvbnRhaW5zKCZyZW5kZXJlcikp
OwogCiAgICAgLy8gQnVpbGQgYSBsaXN0IG9mIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRo
IHRoZSBwYXNzZWQgUmVuZGVyT2JqZWN0Ci0gICAgYXV0byBuZXdSZXNvdXJjZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKKyAgICBhdXRvIG5ld1Jlc291cmNlcyA9IG1ha2VV
bmlxdWU8U1ZHUmVzb3VyY2VzPigpOwogICAgIGlmICghbmV3UmVzb3VyY2VzLT5idWlsZENhY2hl
ZFJlc291cmNlcyhyZW5kZXJlciwgc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cAppbmRleCAzMjQxMDI1ODRjMWYxMTNkMGVlZDMzMjE0YTY3ZjU1MzRhYjBmNTlhLi44MTBhMGI4
ODBhOGFhNGRhZTAyZmFiNDQ2YTk0MWVkZDljNWE3MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJl
bWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW4KICAgICBpZiAobV9pc0NvbXBsZXhU
ZXh0KQogICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBudWxscHRyOwogICAgIGVsc2UK
LSAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXaWR0aEl0
ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4pOworICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0
b3IgPSBtYWtlVW5pcXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRGb250LCBtX3J1bik7CiB9CiAK
IHN0cnVjdCBNZWFzdXJlVGV4dERhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggZDM3YmVlOGNiY2U1
NTYxNTExYjI0ZTM2NGUxYWY2NGFhZDdhYTc1ZC4uZTZiMjczMjBkOTJmZTg1NmQ4Mzc0MTA4ZWQ5
NTQyZTA5MWVlYWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjIsMjIgKzEyMiwyMiBAQCBzdGF0
aWMgdm9pZCBnZXRJbmxpbmVSdW4oUmVuZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBi
b3VuZGFyeSwgUmVuZGVyT2JqZQogCiBSZW5kZXJUcmVlQnVpbGRlcjo6UmVuZGVyVHJlZUJ1aWxk
ZXIoUmVuZGVyVmlldyYgdmlldykKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9maXJzdExl
dHRlckJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGaXJzdExldHRlcj4oKnRoaXMpKQotICAgICwg
bV9saXN0QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPExpc3Q+KCp0aGlzKSkKLSAgICAsIG1fbXVs
dGlDb2x1bW5CdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlDb2x1bW4+KCp0aGlzKSkKLSAg
ICAsIG1fdGFibGVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFibGU+KCp0aGlzKSkKLSAgICAs
IG1fcnVieUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxSdWJ5PigqdGhpcykpCi0gICAgLCBtX2Zv
cm1Db250cm9sc0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ29udHJvbHM+KCp0aGlzKSkK
LSAgICAsIG1fYmxvY2tCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCp0aGlzKSkKLSAg
ICAsIG1fYmxvY2tGbG93QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRmxvdz4oKnRoaXMp
KQotICAgICwgbV9pbmxpbmVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lPigqdGhpcykp
Ci0gICAgLCBtX3N2Z0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxTVkc+KCp0aGlzKSkKKyAgICAs
IG1fZmlyc3RMZXR0ZXJCdWlsZGVyKG1ha2VVbmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKKyAg
ICAsIG1fbGlzdEJ1aWxkZXIobWFrZVVuaXF1ZTxMaXN0PigqdGhpcykpCisgICAgLCBtX211bHRp
Q29sdW1uQnVpbGRlcihtYWtlVW5pcXVlPE11bHRpQ29sdW1uPigqdGhpcykpCisgICAgLCBtX3Rh
YmxlQnVpbGRlcihtYWtlVW5pcXVlPFRhYmxlPigqdGhpcykpCisgICAgLCBtX3J1YnlCdWlsZGVy
KG1ha2VVbmlxdWU8UnVieT4oKnRoaXMpKQorICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKG1h
a2VVbmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhpcykpCisgICAgLCBtX2Jsb2NrQnVpbGRlcihtYWtl
VW5pcXVlPEJsb2NrPigqdGhpcykpCisgICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIobWFrZVVuaXF1
ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKKyAgICAsIG1faW5saW5lQnVpbGRlcihtYWtlVW5pcXVlPElu
bGluZT4oKnRoaXMpKQorICAgICwgbV9zdmdCdWlsZGVyKG1ha2VVbmlxdWU8U1ZHPigqdGhpcykp
CiAjaWYgRU5BQkxFKE1BVEhNTCkKLSAgICAsIG1fbWF0aE1MQnVpbGRlcihzdGQ6Om1ha2VfdW5p
cXVlPE1hdGhNTD4oKnRoaXMpKQorICAgICwgbV9tYXRoTUxCdWlsZGVyKG1ha2VVbmlxdWU8TWF0
aE1MPigqdGhpcykpCiAjZW5kaWYKLSAgICAsIG1fY29udGludWF0aW9uQnVpbGRlcihzdGQ6Om1h
a2VfdW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQorICAgICwgbV9jb250aW51YXRpb25CdWls
ZGVyKG1ha2VVbmlxdWU8Q29udGludWF0aW9uPigqdGhpcykpCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQotICAgICwgbV9mdWxsU2NyZWVuQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxT
Y3JlZW4+KCp0aGlzKSkKKyAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIobWFrZVVuaXF1ZTxGdWxs
U2NyZWVuPigqdGhpcykpCiAjZW5kaWYKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghc19jdXJyZW50
IHx8ICZtX3ZpZXcgIT0gJnNfY3VycmVudC0+bV92aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IGY0
MmJjYTNiMzQ2OWU2ZDU2ZTZhNGQ3Yjk0NDVlMTY3YjExMTFiMmIuLjI2ODU0NGExZTY1YmZhM2Qz
OGY0M2ViNWJiY2U0ZWVlY2FhYzQ2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKgogCiBSZW5kZXJUcmVlVXBkYXRlcjo6UmVuZGVyVHJl
ZVVwZGF0ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkK
LSAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlZENvbnRl
bnQ+KCp0aGlzKSkKKyAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChtYWtlVW5pcXVlPEdlbmVyYXRl
ZENvbnRlbnQ+KCp0aGlzKSkKICAgICAsIG1fYnVpbGRlcihyZW5kZXJWaWV3KCkpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKaW5kZXggN2ZlN2Y2ODczMjA0MTBl
ZjA0ODM4N2Q0ODFmOTI3YjEyYzIzODNhYy4uYjljNzJlYjg4MGU5YmI4NzU5OGY0MTQ0MDc3ZDAy
MzAxNjY2NWI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJy
aWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaApAQCAt
NDksNiArNDksNyBAQCBlbnVtIGNsYXNzIElucHV0U291cmNlIHsKIH07CiAKIGNsYXNzIFVzZXJJ
bnB1dEJyaWRnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVXNlcklucHV0QnJpZGdlKTsKIHB1YmxpYzoKICAgICBVc2VySW5wdXRCcmlk
Z2UoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlk
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAppbmRl
eCBkYWUxMWNiMmY2Mjg5OTE4NDUzYTEyODA5YWU0M2I4MTI0YjZiMTJiLi42ZDY5NWE2NjBkMGU0
ZTA0NWEyNmRhYmUzMzMxZWNhMjZmYWQyZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUludmFsaWRhdG9yLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGREaXJ0
eUFsbFN0eWxlKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzKQogfQog
CiBJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50
cyo+JiBzaGVldHMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGlhUXVlcnlFdmFsdWF0
b3IpCi0gICAgOiBtX293bmVkUnVsZVNldChzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkpCisg
ICAgOiBtX293bmVkUnVsZVNldChtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkpCiAgICAgLCBtX3J1bGVT
ZXQoKm1fb3duZWRSdWxlU2V0KQogICAgICwgbV9kaXJ0aWVzQWxsU3R5bGUoc2hvdWxkRGlydHlB
bGxTdHlsZShzaGVldHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZWxhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3Bw
CmluZGV4IDRkODE0OGI0ZTMxZDc0ZDZhMGE1MTc1NGRlZTVlYWI4MDc1OWFiYWEuLjA2MmQ1OTY0
ZDc3ZWM1ZGI4M2IzZjQxYWNiYWE4N2VmY2U5OGRkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0
aW9ucz4gY29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnMKIAogICAgIGF1dG8gYXBwZW5kU3R5bGVSZWxhdGlvbiA9IFsmcmVtYWluaW5nUmVsYXRpb25z
XSAoY29uc3QgUmVsYXRpb24mIHJlbGF0aW9uKSB7CiAgICAgICAgIGlmICghcmVtYWluaW5nUmVs
YXRpb25zKQotICAgICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gc3RkOjptYWtlX3VuaXF1
ZTxSZWxhdGlvbnM+KCk7CisgICAgICAgICAgICByZW1haW5pbmdSZWxhdGlvbnMgPSBtYWtlVW5p
cXVlPFJlbGF0aW9ucz4oKTsKICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zLT5hcHBlbmQocmVs
YXRpb24pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggOWYw
ZDFhZDc0OTBiZmVhYjI0MDdjZTdiYzg4YjA5NTExNmQwYjIyMi4uZGNiNjViYzA5YzM0Nzc5YjYz
YTI5MzI0ZTI0ZDM3MmJmYzZhMjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAK
QEAgLTk2LDcgKzk2LDcgQEAgU3R5bGVSZXNvbHZlciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICBp
ZiAoIW1fcmVzb2x2ZXIpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0
eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAg
ICAgbV9yZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4obV9kb2N1bWVu
dCk7CisgICAgICAgIG1fcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9j
dW1lbnQpOwogCiAgICAgICAgIGlmICghbV9zaGFkb3dSb290KSB7CiAgICAgICAgICAgICBtX2Rv
Y3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxkU3RhcnRlZCgpOwpAQCAtNTYzLDcgKzU2Myw3IEBA
IGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IFNjb3BlOjphY3RpdmVTdHlsZVNo
ZWV0c0Zvckluc3BlY3RvcigpCiBib29sIFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5z
KGNvbnN0IENTU1N0eWxlU2hlZXQqIHNoZWV0KSBjb25zdAogewogICAgIGlmICghbV93ZWFrQ29w
eU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwKSB7Ci0gICAgICAgIG1fd2Vha0Nv
cHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNldDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4+KCk7CisgICAgICAgIG1fd2Vha0NvcHlPZkFj
dGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IG1ha2VVbmlxdWU8SGFzaFNldDxjb25z
dCBDU1NTdHlsZVNoZWV0Kj4+KCk7CiAgICAgICAgIGZvciAoYXV0byYgYWN0aXZlU3R5bGVTaGVl
dCA6IG1fYWN0aXZlU3R5bGVTaGVldHMpCiAgICAgICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVT
dHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAtPmFkZChhY3RpdmVTdHlsZVNoZWV0LmdldCgpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXgg
ODQ2YTIzMWFkMmIxOGI1ZDdmMjk0OTAxNmQwOWYyMjNkZDY5ZTg4Yi4uYTAwZjRmZTBmNGNjYjUy
ZGQ4MzFhOTRlMjZhNTg2NGU1YzFiNzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxVcGRh
dGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZSgpCiAKICAgICBtX2RpZFNlZVBlbmRpbmdTdHlsZXNo
ZWV0ID0gbV9kb2N1bWVudC5zdHlsZVNjb3BlKCkuaGFzUGVuZGluZ1NoZWV0c0JlZm9yZUJvZHko
KTsKIAotICAgIG1fdXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQp
OworICAgIG1fdXBkYXRlID0gbWFrZVVuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOwogICAgIG1f
c2NvcGVTdGFjay5hcHBlbmQoYWRvcHRSZWYoKm5ldyBTY29wZShtX2RvY3VtZW50KSkpOwogICAg
IG1fcGFyZW50U3RhY2suYXBwZW5kKFBhcmVudChtX2RvY3VtZW50KSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggYmM1MTQzNGIwYjJiOGUw
YmY3N2U1N2E0YTc2ZTRkNGJjZWVlOTk2NS4uMjVmMzg2M2QwNzk1NGFjOGQ2YTYzZTY4NjRhMWYw
NzZiMGQ1MWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9yZXNvdXJjZXNDYWNoZShzdGQ6Om1h
a2VfdW5pcXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQorICAgICwgbV9yZXNvdXJjZXNDYWNoZSht
YWtlVW5pcXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQogICAgICwgbV9hcmVBbmltYXRpb25zUGF1
c2VkKCFkb2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkpCiB7
CiB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBl
bmRpbmdSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCwgRWxlbWVudCYgZWwKIAogICAgIGF1
dG8gcmVzdWx0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgbnVsbHB0cik7CiAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPFBlbmRpbmdFbGVtZW50cz4oKTsKICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5hZGQoJmVsZW1lbnQpOwogCiAgICAgZWxlbWVudC5zZXRIYXNQZW5kaW5n
UmVzb3VyY2VzKCk7CkBAIC0yNzksNyArMjc5LDcgQEAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIFNW
R0RvY3VtZW50RXh0ZW5zaW9uczo6c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFyZ2V0KFNWR0UK
IHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQo
U1ZHRWxlbWVudCYgcmVmZXJlbmNpbmdFbGVtZW50LCBTVkdFbGVtZW50JiByZWZlcmVuY2VkRWxl
bWVudCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5lbnN1cmUo
JnJlZmVyZW5jZWRFbGVtZW50LCBbJnJlZmVyZW5jaW5nRWxlbWVudF0gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXpl
cl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+PihzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8U1ZHRWxlbWVudCo+IHsgJnJlZmVyZW5jaW5nRWxlbWVudCB9KTsKICAgICB9KTsKICAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5h
ZGQoJnJlZmVyZW5jaW5nRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXgg
YTgwOTZkZGFkYTgxZWFkNmE3YTFlYTMyNGNkODUwNjdmNWMwYjI4Yi4uZTRkZTNiNzQ5ZjBhMDAz
OWJjNWM0Y2ZjZDA4ZTE5Mzk2Y2Q2NTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgSGFzaE1hcDxBdG9tU3RyaW5n
SW1wbCosIENTU1Byb3BlcnR5SUQ+IGNyZWF0ZUF0dHJpYnV0ZU5hbWVUCiBTVkdFbGVtZW50OjpT
VkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKICAgICA6IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZVNWR0VsZW1l
bnQpCiAgICAgLCBTVkdMYW5nU3BhY2UodGhpcykKLSAgICAsIG1fcHJvcGVydHlBbmltYXRvckZh
Y3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKKyAg
ICAsIG1fcHJvcGVydHlBbmltYXRvckZhY3RvcnkobWFrZVVuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1h
dG9yRmFjdG9yeT4oKSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lk
IFNWR0VsZW1lbnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIGNoYW5nZSkKIFNWR0Vs
ZW1lbnRSYXJlRGF0YSYgU1ZHRWxlbWVudDo6ZW5zdXJlU1ZHUmFyZURhdGEoKQogewogICAgIGlm
ICghbV9zdmdSYXJlRGF0YSkKLSAgICAgICAgbV9zdmdSYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOworICAgICAgICBtX3N2Z1JhcmVEYXRhID0gbWFrZVVu
aXF1ZTxTVkdFbGVtZW50UmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICptX3N2Z1JhcmVEYXRhOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IGE3NTg5
MGYzMTgwNDY4ZDE1MjRiZWU4NTQzNTlkMDM1NmViNTIyMmQuLjgwZWM3ZmM4NjI5MmI2M2JiYmE4
NTFlMTFlMTA2ZmExNTJmOTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0Vs
ZW1lbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNz
RWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiBBZmZpbmVUcmFuc2Zvcm0q
IFNWR0dyYXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkKIHsKICAgICBpZiAo
IW1fc3VwcGxlbWVudGFsVHJhbnNmb3JtKQotICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOworICAgICAgICBtX3N1cHBs
ZW1lbnRhbFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOwogICAgIHJl
dHVybiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEJ5dGVTdHJlYW0uaAppbmRleCA2ZjBhY2FjZjE5ZWU4NTBkYjRlNjkxMGQzZTgzZDI2
NDk0ZDY3ZWIwLi40MzRkOTFlYjNkZjhhZDg3OWY4MzlhNDg5NjY4Njc4MGI0MDlmMjVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaApAQCAtODYsNyArODYsNyBAQCBjbGFz
cyBTVkdQYXRoQnl0ZVN0cmVhbSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVT
dHJlYW0+IGNvcHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1ZHUGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsKICAgICB9CiAKICAgICBEYXRhSXRlcmF0b3IgYmVn
aW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAppbmRleCBlMDQyM2NlOTgx
NWZhMGYyNTU2M2EzYjU0MzE0MDg2YWMzNTZmZjQ0Li4zZWI1N2FkMmYyMWRmYTY0YjliMTE4MDFm
NDI3MjgzNjAyYjc1YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NNSUxUaW1lQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NNSUxUaW1lQ29udGFpbmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNNSUxUaW1lQ29u
dGFpbmVyOjpzY2hlZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0
YXJnZXQsCiAgICAgRWxlbWVudEF0dHJpYnV0ZVBhaXIga2V5KHRhcmdldCwgYXR0cmlidXRlTmFt
ZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbnNWZWN0b3I+JiBzY2hlZHVsZWQgPSBt
X3NjaGVkdWxlZEFuaW1hdGlvbnMuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghc2NoZWR1bGVkKQotICAgICAgICBzY2hlZHVsZWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFuaW1hdGlvbnNWZWN0b3I+KCk7CisgICAgICAgIHNjaGVkdWxlZCA9IG1ha2VVbmlxdWU8QW5p
bWF0aW9uc1ZlY3Rvcj4oKTsKICAgICBBU1NFUlQoIXNjaGVkdWxlZC0+Y29udGFpbnMoYW5pbWF0
aW9uKSk7CiAgICAgc2NoZWR1bGVkLT5hcHBlbmQoYW5pbWF0aW9uKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNDBlZTk5MTU1ODVlY2E5YTEwMDQ0Yjll
MzMwYzg3NTI4MGMyNTFlNy4uM2IyN2QwNjA4YmY5MGZkYWEwZTViMTU2MDBlYTRhZDVmZTEzNGQy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NTcsNyAr
NDU3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBhdXRv
IHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCk7
Ci0gICAgICAgIG1fY2hyb21lQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNocm9t
ZUNsaWVudD4odGhpcyk7CisgICAgICAgIG1fY2hyb21lQ2xpZW50ID0gbWFrZVVuaXF1ZTxTVkdJ
bWFnZUNocm9tZUNsaWVudD4odGhpcyk7CiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9t
ZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0
aGlzIFNWRyBlbmRzIHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBtaWdodCBsZWFrIHRoZSB3b3JsZC4K
QEAgLTQ2Niw3ICs0NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5n
ZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgYW4g
aXNzdWUgd2hlbiBTVkdJbWFnZSB3aWxsIGJlIGFibGUgdG8gbG9hZCBvdGhlcgogICAgICAgICAv
LyBTVkdJbWFnZSBvYmplY3RzLCBidXQgd2UncmUgc2FmZSBub3csIGJlY2F1c2UgU1ZHSW1hZ2Ug
Y2FuIG9ubHkgYmUKICAgICAgICAgLy8gbG9hZGVkIGJ5IGEgdG9wLWxldmVsIGRvY3VtZW50Lgot
ICAgICAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24pKTsKKyAgICAgICAgbV9wYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVu
YWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxl
ZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQbHVnaW5zRW5hYmxlZChm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmgKaW5kZXggZDk3MDMwMmFkZjg2NTg1NTA5YzY1MDhkNTA0OTUyYTI1
NTMyMzYyYi4uYzc3YWUwOGJhYzY1YzNjMmNmYzg5NzRmYTMzZTc2NDYwY2U5N2ZhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1
aWxkZXIuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTVkdG
aWx0ZXJFbGVtZW50OwogCiBjbGFzcyBTVkdGaWx0ZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hTZXQ8RmlsdGVyRWZmZWN0
Kj4gRmlsdGVyRWZmZWN0U2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTVlZmFh
ZWE3MTExYmM2Yzk1N2Q5NzJkNzQ1NDhkZTkyZDhhMTMzZS4uY2ViYWEzNjNiZjUyN2JiYjM4ZTU2
N2QzZTNkNDJiZjg0MzEwMmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5IDogcHVibGljIFNWR0Fu
aW1hdGVkUHJvcGVydHkgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgdHlw
ZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk+CiAg
ICAgc3RhdGljIFJlZjxBbmltYXRlZFByb3BlcnR5PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFBy
b3BlcnR5KGNvbnRleHRFbGVtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERlY29yYXRlZFByb3BlcnR5
PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIG1ha2VVbmlxdWU8RGVj
b3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkpKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVk
UHJvcGVydHkgPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3IuaAppbmRleCBhYTYxYmZmNDM0NDg4Y2E2NzRiMDQ4ODllYzc0NThhMzM2MDIwYjhkLi5lMDIz
NGYzNTkxMjkyOTU3OWNmM2UyYjE2ODA5NDI1MjhmMDdhYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3IuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBTVkdFbGVtZW50OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBbmltYXRlZFByb3BlcnR5LCB0eXBlbmFtZSBBbmltYXRpb25GdW5jdGlvbj4KIGNsYXNz
IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvciA6IHB1YmxpYyBTVkdBdHRyaWJ1dGVBbmltYXRv
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgQW5p
bWF0b3JBbmltYXRlZFByb3BlcnR5ID0gQW5pbWF0ZWRQcm9wZXJ0eTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9ySW1wbC5oCmluZGV4IDI4ODc0MWIxMjkwNWNiODUxNDMwNTQwOTBjNGUyYzkxMzli
MzViZjMuLmQwNzM3YWNiYTMzMWZlMTIzNDdiODM0ZmY3YWEzMDEwMGFkMTU2MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0
ZWRBbmdsZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjxTVkdBbmkKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZCwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC02OCw3ICs2OCw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4mIGFuaW1hdGVk
LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlz
QWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04OSw3ICs4OSw3
IEBAIGNsYXNzIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEVu
dW1lcmF0aW9uPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFu
aW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTEsNyArMTExLDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9yPFNWR0EKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0
ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wg
aXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEzMiw3ICsx
MzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBs
ZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTMsNyAr
MTUzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhN
b2RlIGxlbmd0aE1vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhN
b2RlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMTcyLDcgKzE3Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgZmlu
YWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVk
TnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAg
ICAgfQogCiBwcml2YXRlOgpAQCAtMTg5LDcgKzE4OSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVt
YmVyTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjxTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlckxpc3Q+JiBhbmltYXRlZCwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTIwNiw3
ICsyMDYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3IgZmluYWwgOiBw
dWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5p
bWF0ZWRQYXRoU2VnTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNl
Z0xpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIyNCw3ICsyMjQsNyBAQCBjbGFzcyBTVkdBbmltYXRl
ZFBvaW50TGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvcjxTVgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+JiBhbmltYXRlZCwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yNDMs
NyArMjQzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3IgZmluYWwgOiBw
dWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIHB1YmxpYzoKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0Fu
aW1hdGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkT3JpZW50
VHlwZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0yNjIsNyArMjYyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQ
cmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4mIGFu
aW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQs
IGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRSZWN0
QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0Fu
aW0KIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRSZWN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBp
c0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRSZWN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5OCw3ICsyOTgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFN0
cmluZ0FuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxT
VkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTMzOCw3ICszMzgsNyBAQCBjbGFz
cyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0bwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3IuaAppbmRleCBjNzIzYWNmZjI2
MDYwMWExZTUwZDMyNjk1YWUzY2U4YzkyNjAyNTE1Li5jODkwNTAxNjlkM2MxYTQzM2FiN2EyN2Jh
MWFlY2VhMzJkYmI1Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oCkBAIC0zMyw2
ICszMyw3IEBAIGNsYXNzIFNWR0VsZW1lbnQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjEsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmltYXRvcjI+CiBj
bGFzcyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yIDogcHVibGljIFNWR0F0dHJpYnV0
ZUFuaW1hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1
c2luZyBBbmltYXRlZFByb3BlcnR5MSA9IHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjE6OkFuaW1hdG9yQW5pbWF0ZWRQcm9wZXJ0eTsKICAgICB1c2luZyBBbmltYXRlZFByb3BlcnR5
MiA9IHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmltYXRvcjI6OkFuaW1hdG9yQW5pbWF0ZWRQ
cm9wZXJ0eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCmluZGV4IDRlZGEz
NGM5YjE4ODhmZmQ2ZDNkNjYzMmNmMGNmNmQzM2E2ZmE5ZTEuLjM5N2ZmMDkxNTk0MDBkMzNjMDUy
YjExZDgyOGNiOGUzN2IzYzgwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcklt
cGwuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0
b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQogcHVibGljOgog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50
VHlwZT4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTMsNyArMTEzLDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlQYWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4m
IGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9u
TW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVk
LCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
MSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlclBh
aXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHBy
aXZhdGU6CkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXQKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWRO
dW1iZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCmluZGV4IDY0YTY1YjE4NjJm
ZmI5Njk2MDNjNzE1NjA3YjU0NGY1NTZlMDA4M2EuLjAyMmVkZWRhODIxYjUzMzU1YjNmZGQzOTU4
ZjI0MzY4MDE5YWFkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIENh
bGNNb2RlIDogdWludDhfdCB7CiB9OwogCiBjbGFzcyBTVkdBdHRyaWJ1dGVBbmltYXRvciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHQXR0cmlidXRlQW5p
bWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICAgICAgOiBtX2F0
dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCmluZGV4IDI2NGMzNmI2OTA3
NGNjZjNlMmUyOWQyNjc3MjFjZjUzNzQ1NzAzMTEuLmEzNWUyNTBhOWIxNTFmOWU4OTdmODVmNjM2
N2MzODdkYmIzY2E1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBT
VkdEZWNvcmF0ZWRFbnVtZXJhdGlvbiA6IHB1YmxpYyBTVkdEZWNvcmF0ZWRQcmltaXRpdmU8RGVj
b3JhdGlvblR5cGUsIEVudQogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBFbnVtVHlwZSYg
dmFsdWUpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8RGVj
b3JhdGlvblR5cGU+Ojp2YWx1ZSwgIkRlY29yYXRpb25UeXBlIGZvcm0gZW51bSBzaG91bGQgYmUg
aW50ZWdyYWwuIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0RlY29yYXRl
ZEVudW1lcmF0aW9uPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0RlY29y
YXRlZEVudW1lcmF0aW9uPih2YWx1ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcmltaXRpdmUuaAppbmRl
eCBlMmE1MjQzMTI0ZjA3M2Y4NWFkOGRkNmE5NmRmNGE2NTM1MGI2N2M4Li45YjY2MTI3YmM1OWUy
ZjUxZjAxMDE5MjE2ZmEyZDU2MjE1M2NhN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcmltaXRpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcmltaXRpdmUuaApAQCAtMzEsNiArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERlY29yYXRpb25UeXBl
LCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CiBjbGFzcyBTVkdEZWNvcmF0ZWRQcmltaXRpdmUgOiBw
dWJsaWMgU1ZHRGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGU+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICB1c2luZyBCYXNlID0gU1ZHRGVjb3JhdGVkUHJvcGVydHk8
RGVjb3JhdGlvblR5cGU+OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXgg
NDEyMTcyMjBiZGZjZmVmZjY3YzE2MDkxM2FkMTRkNmI5OWJhMTQyYy4uNjhiMmUwYjExMzdhZGU4
ZDM3ZjgwZTBlMjk4YjVkZTI0ZDAxYTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yIDogcHVibGlj
IFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5pbWF0aW9uRnVuY3RpbwogcHVibGljOgogICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
UHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlB
bmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5LmgKaW5kZXggYWQ1MGQ0MjM2Mjk2OTQyZDFkYzg3MThhMmRhOGU2
YWRmOGQxYmNjYi4uNWUzMDE4ZjVhNDAyYTljN2YxMjlkNDFkNDE5YWM1ZTk0OWZlZTA0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRv
ckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eUFuaW1hdG9yRmFjdG9yeS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSgpID0g
ZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
VmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDExODg4NmM0ZjhiYjcyMzZh
NDQ2ZmZhZDAzODY5ZmYwYjBkY2RlOTUuLmZkM2RjOTYwZmZhN2QzMTI5MDEzN2Q0NTJjZGUxYTI4
NzlhN2VkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUFuaW1h
dG9yPFNWR0xlbmd0aCwgU1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3Bl
cnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3Zl
KHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xl
bmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhl
cik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBv
dmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFs
dWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKaW5kZXggNWVlOGFjM2QwZjRl
MTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2OC4uYWU5NGUyOWVkNGI4NjEzYjk5Y2Q5NzQ4NmVk
MGIwNjI4MjZjMDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9w
ZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3Zl
KHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggYzExMzFkMjViMzg4YmJhODM2NjUzZDI5NzA4ZTZhNWJi
ZTRiZGZjNC4uMjQzNzg5YmI5ZDI3OWE2ZTg1M2UwODY0NGI2NGJlZTg1MWU1ZWUyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0yMzEsNiArMjMx
LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyYg
c2V0dGluZ3MpCiB9CiAKIGNsYXNzIEludGVybmFsU2V0dGluZ3NXcmFwcGVyIDogcHVibGljIFN1
cHBsZW1lbnQ8UGFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3NXcmFwcGVyKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IDogbV9pbnRlcm5hbFNldHRpbmdzKEludGVybmFsU2V0dGluZ3M6OmNyZWF0ZShwYWdlKSkgeyB9
CkBAIC0yNTIsNyArMjUzLDcgQEAgY29uc3QgY2hhciogSW50ZXJuYWxTZXR0aW5nczo6c3VwcGxl
bWVudE5hbWUoKQogSW50ZXJuYWxTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShQYWdl
KiBwYWdlKQogewogICAgIGlmICghU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVt
ZW50TmFtZSgpKSkKLSAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1
cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+
KHBhZ2UpKTsKKyAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1cHBs
ZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2UpKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIqPihTdXBwbGVt
ZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKS0+aW50ZXJuYWxTZXR0aW5n
cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTE3OGI0OTY4
NTg3NTUxYmYwNzA0ZDgzMDIwNTYyZGQxMmRmNGViYi4uNjJlNzM0OWExY2ExNjYyZDA2MmM2MDc5
Mzg5MmZjNzBmZjYwNTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MzQxLDcgKzM0MSw3IEBAIGNsYXNzIEluc3BlY3RvclN0dWJGcm9udGVuZCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBwdWJsaWMKIH07CiAKIEluc3BlY3RvclN0
dWJGcm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKFBhZ2UmIGluc3BlY3RlZFBhZ2UsIFJl
ZlB0cjxET01XaW5kb3c+JiYgZnJvbnRlbmRXaW5kb3cpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRl
bmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwoJmluc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVu
ZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpLCBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OlNldHRpbmdzPigpKQogICAgICwgbV9mcm9udGVuZFdpbmRvdyhmcm9udGVu
ZFdpbmRvdy5jb3B5UmVmKCkpCiB7CiAgICAgQVNTRVJUX0FSRyhmcm9udGVuZFdpbmRvdywgZnJv
bnRlbmRXaW5kb3cpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIEludGVybmFsczo6SW50ZXJuYWxzKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAg
ICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsK
ICAgICAgICAgYXV0byBtb2NrUGF5bWVudENvb3JkaW5hdG9yID0gbmV3IE1vY2tQYXltZW50Q29v
cmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwotICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXlt
ZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2Nr
UGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1lbnRD
b29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50Q29v
cmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTE0MTcsNyArMTQxNyw3IEBAIHZvaWQg
SW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKQogICAgIGlmICghc3ludGhl
c2lzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzeW50aGVzaXMtPnNldFBsYXRmb3JtU3ludGhl
c2l6ZXIoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4oc3lu
dGhlc2lzKSk7CisgICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKG1ha2VVbmlx
dWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOwogfQogCiAjZW5k
aWYKQEAgLTI0ODksNyArMjQ4OSw3IEBAIFJlZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJuYWxzOjpv
cGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBhdXRvKiBp
bnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBh
dXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5kb21X
aW5kb3coKTsKICAgICBhdXRvIGZyb250ZW5kV2luZG93UHJveHkgPSB3aW5kb3ctPm9wZW4oKndp
bmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclN0dWJGcm9udGVu
ZD4oKmluc3BlY3RlZFBhZ2UsIGRvd25jYXN0PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5kb3dQcm94
eS0+d2luZG93KCkpKTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZy
b250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CiAgICAgcmV0dXJuIGZyb250ZW5kV2luZG93
UHJveHk7CiB9CiAKQEAgLTMwMDksNyArMzAwOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVy
bmFsczo6c2V0Vmlld0V4cG9zZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQcmludGluZyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
Ci0gICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENv
bnRleHQ+KGZyYW1lKCkpOworICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IG1ha2VVbmlx
dWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKICAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkt
PmJlZ2luKHdpZHRoLCBoZWlnaHQpOwogfQogCkBAIC0zNDQ4LDcgKzM0NDgsNyBAQCB2b2lkIElu
dGVybmFsczo6ZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogCiB2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0oKQogewotICAgIExl
Z2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAorICAgIExlZ2FjeUNETTo6
cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1
ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAogICAgICAgICBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0
c0tleVN5c3RlbSwgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk7
CiB9CiAKQEAgLTQyNDEsNyArNDI0MSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1pY3JvVGFz
ayhpbnQgdGVzdE51bWJlcikKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBb
ZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1
ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRR
dWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVudCwgdGVzdE51bWJlcl0oKSB7CiAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCB0ZXN0TnVtYmVyLCAiIGhhcyBydW4u
IikpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2Fj
eU1vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApp
bmRleCA2NDI4N2QyMzlhZjU3M2U5MjAzZDI1ODQzMWIyNzNjN2I4NzQ5MDA2Li42MDI3MmQzNDk3
ZjRiODY1Y2RiMDM3MGZlNDFkM2Q2ZmJkZThiN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TGVnYWN5TW9ja0NETS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTW9ja0NETVNlc3Npb24gOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETVNlc3Npb24oTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfk1vY2tDRE1TZXNzaW9uKCkgPSBk
ZWZhdWx0OwpAQCAtNzMsNyArNzQsNyBAQCBib29sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE1TZXNz
aW9uPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE1TZXNzaW9uPihjbGll
bnQpOwogfQogCiBzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQcmVmaXgoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAppbmRleCAyNGI5YjgwMDhjNGY1MTliNGE2NjZlYzZk
MTUyNWFjNjJlYzFjMzBhLi5iOTNhZWI5M2ZmNjMyOWU1MTU0N2MxM2ZmNzZhNjkyZWU2YTcxODZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lDRE07CiAKIGNsYXNzIExlZ2FjeU1v
Y2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5TW9ja0NETShMZWdhY3lDRE0q
IGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCmluZGV4IDU2Nzk2ZWU5MDBiYmYzYjZjYzA1Y2Y2YTIyOTZlZmQ0M2I5ZWY3
YjYuLmNlNWQ4ZjdkNmJkZjM4YjU5MjIwOTMwMmE2ZTZkNzFiMzY5NjYzMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9p
ZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYg
dHlwZXMpCiAKIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9yeTo6Y3Jl
YXRlQ0RNKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9j
a0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RN
PihtYWtlV2Vha1B0cigqdGhpcykpOwogfQogCiBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9j
a0NETUZhY3Rvcnk+IGZhY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmgKaW5kZXggMzM5NmNkMDJhZDAyZGQxNGU5MmYxNTc5ZTI3NTE2ZTZiYzNmNDI5OC4uMzk5MDli
OTMwM2E5NGM5MzY4ZWFhMGY2MjVmNGI2N2U1MjUwNTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIE1vY2tDRE1GYWN0
b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NETUZhY3Rvcnk+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxNb2NrQ0RNPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5Pik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTExODFkYWU3MmUx
M2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4Ny4uNzc4YTkxOGE2YjkwNzU1Y2I4NmQzYWFhNzRm
NzliM2U2MThkNGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBNb2NrQ29udGVudEZpbHRlcjo6ZW5hYmxl
ZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0
ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NvbnRlbnRG
aWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CiB9
CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBk
M2FjNWQ4N2QxOWUyYTg1MzYxYzExNTcyY2YzMTFmMGM4M2IyNDViLi5kNDBkZWQxZGExMTk4Y2Fh
MzQ1OWQ2NzdlMWZlODRmNWJmYjk0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0dhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBNb2NrR2FtZXBh
ZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHModW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgZ2EKICAgICBpZiAobV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0pCiAgICAgICAgIG1f
bW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdLT51cGRhdGVEZXRhaWxzKGdhbWVwYWRJRCwgYXhpc0Nv
dW50LCBidXR0b25Db3VudCk7CiAgICAgZWxzZQotICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9y
W2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQs
IGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOworICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2lu
ZGV4XSA9IG1ha2VVbmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4aXNDb3Vu
dCwgYnV0dG9uQ291bnQpOwogfQogCiBib29sIE1vY2tHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3RN
b2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IGRiZTkwNzNkNmFkZWJmYzUwMTU5Y2MyZWRiYjIy
ODNjY2QxN2JhODUuLjhmMTY0N2MxZjMyMjUxODE2YzdjZjA4OTYxODJhZTM0MjM1YzUxODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApAQCAt
NDYsNyArNDYsNyBAQCB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFu
ZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbAogewogICAgIFN0cmluZyBtZXNz
YWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdl
VGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhl
Yyk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1l
c3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJF
dmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5j
cHAKaW5kZXggZjQzYmQyYTdhNjA1OTM3MjdhZDBhNmE5MWRlY2Q2ZWJlYzcyMjY4OC4uNjkwM2Jl
NWVjMjVmYjkxZWZmNzc3NmU0NDc2YWQ0ZWEyYmNlNzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFdvcmtlckV2ZW50
UXVldWU6On5Xb3JrZXJFdmVudFF1ZXVlKCkKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6RXZl
bnREaXNwYXRjaGVyCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRXZlbnREaXNwYXRjaGVyKFJlZlB0cjxFdmVudD4mJiBldmVudCwgV29ya2VyRXZlbnRRdWV1
ZSYgZXZlbnRRdWV1ZSkKICAgICAgICAgOiBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQpAQCAtODQs
NyArODUsNyBAQCBib29sIFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+
JiYgZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8qIGV2ZW50UHRyID0g
ZXZlbnQucHRyKCk7Ci0gICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsKKyAgICBhdXRvIGV2ZW50
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8RXZlbnREaXNwYXRjaGVyPihXVEZNb3ZlKGV2ZW50KSwg
KnRoaXMpOwogICAgIG1fZXZlbnREaXNwYXRjaGVyTWFwLmFkZChldmVudFB0ciwgZXZlbnREaXNw
YXRjaGVyLmdldCgpKTsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9zdFRhc2soW2V2
ZW50RGlzcGF0Y2hlciA9IFdURk1vdmUoZXZlbnREaXNwYXRjaGVyKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CiAgICAgICAgIGV2ZW50RGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKaW5kZXggNjExNWVmNGExMzY1MmE2
ZWFkMTBhZjM3Y2ZiNDk0MjgyMGMzY2IyYi4uZDg5NzNkNWJjYWUxN2I5NTUwMDQ0YzdlODAxNjA1
Yjk5ZDU0OWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgK
QEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZSBmaW5hbCA6IHB1YmxpYyBFdmVu
dFF1ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXb3JrZXJFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0
dWFsIH5Xb3JrZXJFdmVudFF1ZXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCmluZGV4IDdiYTZlZGI1MjA4ZjIyYzNmOGYxNmRlMjlkODI1Yjc3MWY2
YzNlOWUuLmIxN2Q2NjM2M2FjMzU4MGU3YTM0NDAwODFhMmY3YzYzYTA3Mzg3NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02Miw5ICs2Miw5
IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKICAgICAsIG1fdXNlckFnZW50KHVzZXJBZ2VudCkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkK
LSAgICAsIG1fc2NyaXB0KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4o
dGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCi0gICAgLCBtX21pY3JvdGFza1F1ZXVlKHN0
ZDo6bWFrZV91bmlxdWU8TWljcm90YXNrUXVldWU+KG1fc2NyaXB0LT52bSgpKSkKKyAgICAsIG1f
c2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBt
X2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
PigqdGhpcykpCisgICAgLCBtX21pY3JvdGFza1F1ZXVlKG1ha2VVbmlxdWU8TWljcm90YXNrUXVl
dWU+KG1fc2NyaXB0LT52bSgpKSkKICAgICAsIG1faXNPbmxpbmUoaXNPbmxpbmUpCiAgICAgLCBt
X3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMp
CkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBVUkwmIHVybCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgICAgIG9yaWdp
bi0+Z3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKIAogICAgIHNldFNlY3Vy
aXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShvcmln
aW4pKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAgIHNldENvbnRl
bnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsg
bV91cmwgfSwgKnRoaXMpKTsKIH0KIAogV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxT
Y29wZSgpCkBAIC0zNjIsOSArMzYyLDkgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVz
c2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogICAg
IGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1l
c3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIp
OworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
Pihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNr
LnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNv
dXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNl
LCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZSht
ZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAKaW5kZXggYTc1YzAxNTZjNTllMzhkZDk5OWQ2Y2VjMWRkZWVkZTIzYmUxODdi
My4uNGU5ZjUxOWFlZmVkZDI1Zjg4M2Y2M2FjYTBhNDc4OWZmMDI3ZTRiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSYgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6Y3Jl
YXRlKFdvcmtlciYgd29ya2VyKQogCiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2Fn
aW5nUHJveHkoV29ya2VyJiB3b3JrZXJPYmplY3QpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQod29ya2VyT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faW5z
cGVjdG9yUHJveHkoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2Vy
T2JqZWN0LmlkZW50aWZpZXIoKSkpCisgICAgLCBtX2luc3BlY3RvclByb3h5KG1ha2VVbmlxdWU8
V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQogICAgICwg
bV93b3JrZXJPYmplY3QoJndvcmtlck9iamVjdCkKIHsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2Vy
R2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydAogICAgICAgICArK21fdW5jb25maXJt
ZWRNZXNzYWdlQ291bnQ7CiAgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soV1RGTW92ZSh0YXNrKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcXVldWVkRWFybHlUYXNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihX
VEZNb3ZlKHRhc2spKSk7CisgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7CiB9CiAK
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5M
b29wLmNwcAppbmRleCBiY2Q5NGU2YWMwNDAzYWNkNmE1NGJhYzQxZmFiNDFlNWJmNTUyN2RhLi5i
ZmFjOTU5MmRmYWE3OTIxMDA2NWIzNDU5YmQyMjE2MTk1Nzg0ODc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgTW9kZVBy
ZWRpY2F0ZSB7CiB9OwogCiBXb3JrZXJSdW5Mb29wOjpXb3JrZXJSdW5Mb29wKCkKLSAgICA6IG1f
c2hhcmVkVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKKyAgICA6
IG1fc2hhcmVkVGltZXIobWFrZVVuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKIHsKIH0KIApA
QCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0
VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIHsK
LSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4o
V1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVu
ZEFuZEtpbGwobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKSk7
CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbV9tZXNz
YWdlUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgbW9k
ZSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFRhc2s+KFdURk1vdmUo
dGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0RGVidWdnZXJUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDE5OTEyZjAyNzVmZWExOTQ4MDU0
MmEwNzA5NzVkY2IwYzdkMjgwMzUuLjIyOGYzZDE3ZmYwMDIyZTYyZTYzNjQ1MzJkNTU2Yjk1MDdh
MDE4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5j
aHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dAogCiAgICAgQVNT
RVJUKHNjcmlwdFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsKIAotICAgIGF1dG8gcmVx
dWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihXVEZNb3ZlKHNjcmlwdFJl
cXVlc3QpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4o
V1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1
cm47CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjb25zdCBVUkwmIFdvcmtlclNjcmlwdExvYWRlcjo6
cmVzcG9uc2VVUkwoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBX
b3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIGlu
aXRpYXRvcklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVl
PFJlc291cmNlUmVxdWVzdD4obV91cmwpOwogICAgIHJlcXVlc3QtPnNldEhUVFBNZXRob2QoIkdF
VCJfcyk7CiAgICAgcmVxdWVzdC0+c2V0SW5pdGlhdG9ySWRlbnRpZmllcihpbml0aWF0b3JJZGVu
dGlmaWVyKTsKICAgICByZXR1cm4gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcAppbmRleCAxZjc1NjE4NmEyMGYwMTY5ZTQ3ODQzOTUxYmVlMzY4N2UwMDI0ZmJh
Li4zYzM4NThiZGE5YjQ0YjU3ZmFkYjM5ZWZhMmUwYTBmM2EzMDQxMThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgV29ya2VyVGhy
ZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW4KICAgICAsIG1fd29ya2VyRGVidWdnZXJQcm94eSh3b3JrZXJEZWJ1Z2dl
clByb3h5KQogICAgICwgbV93b3JrZXJSZXBvcnRpbmdQcm94eSh3b3JrZXJSZXBvcnRpbmdQcm94
eSkKICAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFncykKLSAgICAsIG1fc3RhcnR1cERh
dGEoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0VVJMLCBu
YW1lLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCBzb3VyY2VDb2RlLCBzdGFydE1v
ZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCB0b3BPcmlnaW4sIHRpbWVPcmlnaW4sIHNlc3Np
b25JRCkpCisgICAgLCBtX3N0YXJ0dXBEYXRhKG1ha2VVbmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1
cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwg
c291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2lu
LCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
ICAgICwgbV9pZGJDb25uZWN0aW9uUHJveHkoY29ubmVjdGlvblByb3h5KQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKaW5kZXggYjJkMjYxNWExMjYzZDE2MjY2MTgyMDA0NjQ4ZjkwZWRhNjkyMDZi
NS4uNTljNzFjNGQxNDc2MjdjZmQ5ZDMxYTQ1ZWFiY2NjZGFlMTAzZTc4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRl
cmVmRXZlbnRUYXJnZXQoKQogYXV0byBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSgpIC0+
IFJlYWR5UHJvbWlzZSYKIHsKICAgICBpZiAoIW1fcmVhZHlQcm9taXNlKSB7Ci0gICAgICAgIG1f
cmVhZHlQcm9taXNlID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkeVByb21pc2U+KCk7CisgICAgICAg
IG1fcmVhZHlQcm9taXNlID0gbWFrZVVuaXF1ZTxSZWFkeVByb21pc2U+KCk7CiAKICAgICAgICAg
aWYgKG1faXNTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgp
LmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7CkBAIC0xODAs
NyArMTgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24o
Y29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBqb2JEYXRhLnR5cGUgPSBT
ZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25P
cHRpb25zID0gb3B0aW9uczsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8U2Vy
dmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkp
KTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBX
VEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3Bl
VVJMLCBSZWY8RGVmZXJyZQogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJlbW92ZVJlZ2lzdHJhdGlvbjogVW5yZWdpc3RlcmluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElE
OiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQo
KSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+
KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1
bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNl
KSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlw
dFVSTCwgV29ya2VyVHlwZSwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAt
MjMyLDcgKzIzMiw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0
cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYKIAogICAgIENPTlRBSU5FUl9S
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVwZGF0aW5nIHNlcnZp
Y2Ugd29ya2VyLiBKb2IgSUQ6ICUiIFBSSXU2NCwgam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8
U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0
YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlz
LCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2Ioc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3Jr
ZXJKb2I+JiYgam9iKQpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgY2xpZW50VVJMLCBSZWY8RGVmZXJy
CiAgICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyID0gKyttX2xh
c3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5k
aW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1
ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZp
ZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAgIGF1dG8gY29udGV4dElkZW50aWZp
ZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyhSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVu
dGlmaWVyID0gKyttX2xhc3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0byBwZW5k
aW5nUHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJv
bWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRpbmdQcm9t
aXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBl
bmRpbmdBY3Rpdml0eSgqdGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5n
UHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAgIGF1dG8g
Y29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmgKaW5kZXggN2FjOWM5ODM4M2IwNGI2ZWI4OWM5OWYyMjA4ODVlNzY3Mzk3NmMzZi4uM2JkNmI5
YjA2ZTU3Mzc2NjViNThmOTY5ZTI5M2QwZmVkNjJjM2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0x
MzksNiArMTM5LDcgQEAgY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lciBmaW5hbCA6IHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWMKICNlbmRpZgogCiAgICAgc3Ry
dWN0IFBlbmRpbmdQcm9taXNlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBQZW5kaW5nUHJvbWlzZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIFJlZjxQZW5kaW5nQWN0aXZpdHk8U2VydmljZVdvcmtlckNvbnRhaW5lcj4+JiYgcGVuZGlu
Z0FjdGl2aXR5KQogICAgICAgICAgICAgOiBwcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCiAgICAg
ICAgICAgICAsIHBlbmRpbmdBY3Rpdml0eShXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCmluZGV4IGVkYmM4ZjkxZWU0MzQ2MmE1MDQ5ZTg4YzFjZWY1ZWZhNzYy
Yzk4ZmYuLmNiNWMyMjFmYzk0ODhkN2MwMDcyOTgzYTE1Nzg5NWRjYThjNmNlYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2Vy
Ojp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vj
b24KIAogICAgIHNlcnZpY2VXb3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsK
IAotICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVu
dGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+
KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CisgICAgbV9wZW5kaW5nU2VydmljZVdvcmtl
clRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8U2VydmljZVdv
cmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQpKTsKIAog
ICAgIGF1dG8mIHRocmVhZCA9IHNlcnZpY2VXb3JrZXItPnRocmVhZCgpOwogICAgIHRocmVhZC5z
dG9wKFt0aGlzLCBpZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyID0gV1RGTW92ZShzZXJ2aWNlV29y
a2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGM2MTcz
NjEzY2FjYjU1ZDY5MDU4YmUyYzdlMmE1ZmJkODUyOWM3NzYuLjllNzI4YzNhN2FmYTQ2Yzk0OWNk
Y2JlMGQ2ZmViMDRhOTUzMWNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgYWxs
U2VydmljZVdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBtX3JlbW90ZURlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigqdGhpcywgZGF0YSk7CisgICAgbV9yZW1vdGVEZWJ1
Z2dhYmxlID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEp
OwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCh0cnVl
KTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPmluaXQoKTsKICNlbmRpZgpAQCAtMTY4LDcgKzE2
OCw3IEBAIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGZXRjaExv
YWRlcj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVyKEZldGNoTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsKLSAgICBhdXRvIGxvYWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KGNsaWVudCwgbnVsbHB0cik7CisgICAg
YXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOwog
ICAgIGxvYWRlci0+c3RhcnRMb2FkaW5nQmxvYlVSTChtX2RvY3VtZW50LCBibG9iVVJMKTsKICAg
ICBpZiAoIWxvYWRlci0+aXNTdGFydGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1Jl
Z2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCAxYzc4MzEyYzg1NDgyZjk4NjlhNWZjMGM2ZDJj
YzZjNmZkZmMxMGEwLi5lNGI4NDMxNjg0ZjdkODdkMmJmZGU2ZGQ0MjdmMzM5MDMwMzRiYWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUmVn
aXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxG
aWxlbmFtZSkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRGlyZWN0b3J5
RXhpc3RzKG1fZGF0YWJhc2VEaXJlY3RvcnkpOwogCi0gICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuKGZ1bGxGaWxlbmFt
ZSkpIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0gIkZhaWxlZCB0byBvcGVuIHJlZ2lzdHJhdGlv
biBkYXRhYmFzZSI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZmU1Y2M4NTllNjVhNmUzMmE3
OGI1Mjg5NzVhMTMyZTc0YmYxNzg3ZS4uOTMyNmEzYmFjNjU5YTI0NjcwNWU5MjBhODg4NDZkZjRk
MGU5NjliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICAv
LyBQYWdlcyBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIG1ha2UgYSBuZXcgcmVnaXN0cmF0
aW9uIHRvIHRoaXMga2V5IHdoaWxlIHRoZSBpbXBvcnQgd2FzIHN0aWxsIHRha2luZyBwbGFjZS4K
ICAgICBBU1NFUlQoIW1fcmVnaXN0cmF0aW9ucy5jb250YWlucyhkYXRhLnJlZ2lzdHJhdGlvbi5r
ZXkpKTsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3Ry
YXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNj
cmlwdFVSTCk7CisgICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVn
aXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlv
bi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0
VVJMKTsKICAgICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0
aW9uLmxhc3RVcGRhdGVUaW1lKTsKICAgICBhdXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJh
dGlvbi5nZXQoKTsKICAgICBhZGRSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsK
QEAgLTMwNCw3ICszMDQsNyBAQCBTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2lu
U3RvcmU+JiYgb3JpZ2luU3RvcmUsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbgogewogICAgIEFTU0VS
VCghcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAg
ICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0cmF0aW9u
U3RvcmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5KSk7Cisg
ICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBtYWtlVW5pcXVlPFJlZ2lzdHJhdGlvblN0b3Jl
PigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOwogICAgIGVs
c2UKICAgICAgICAgcmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwogCkBAIC0zMjEs
NyArMzIxLDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYkRh
dGEmJiBqb2JEYXRhKQogICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQg
am9iLgogCiAgICAgYXV0byYgam9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEu
cmVnaXN0cmF0aW9uS2V5KCksIFt0aGlzLCAmam9iRGF0YV0gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRp
b25LZXkoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0
aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKICAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKGpvYkRhdGEpOwpAQCAtODIwLDcgKzgyMCw3IEBA
IHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVu
dE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAKICAgICBpZiAoY2xpZW50SWRlbnRpZmllcnMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVCghaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzVGltZXIpOwotICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2Vydmlj
ZVdvcmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNs
aWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlzXSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50
ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oW2NsaWVudE9y
aWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNdIHsKICAgICAgICAgICAgIFZlY3Rv
cjxTV1NlcnZlcldvcmtlcio+IHdvcmtlcnNUb1Rlcm1pbmF0ZTsKICAgICAgICAgICAgIGZvciAo
YXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPm9yaWdp
bigpID09IGNsaWVudE9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDhiNjhiNzBmMDFk
MjUyNzhhZjUzOGFiY2U5MTRiOGM3YzY4YWI4MzcuLmRjYWY1YThhNzEwZjc5NDQ2NDdkZTNjZDVl
OTgwNjM5OWE4ZmQ1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmIGpvYikKICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0VXBkYXRlVmlhQ2Fj
aGUoam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUpOwogICAgICAgICBSRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3Rl
ckpvYjogRm91bmQgcmVnaXN0cmF0aW9uICVsbHUgZm9yIGpvYiAlcyBidXQgaXQgbmVlZHMgdXBk
YXRpbmciLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBqb2Iu
aWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJh
dGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7
CisgICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0
aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJMKTsKICAgICAg
ICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUobmV3UmVnaXN0cmF0aW9uKSk7CiAK
ICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1
ZTo6cnVuUmVnaXN0ZXJKb2I6IE5vIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiBmb3Igam9iICVzLCBj
b25zdHJ1Y3RpbmcgYSBuZXcgb25lLiIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDJiN2EyZmUzZmJiNThkNGM0ZWUzOGZj
MDRiNTM2YTNlNGUwYzc3ZTcuLjNiZTc1N2UwMmFlMTlkNzU5MGVjMDdiM2ZhNGNiZTdkNjNjZTgx
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiAg
ICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxs
YmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9i
YWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgICAgIGF1dG8gcGFpbnREZWZpbml0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3Ry
dWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0
aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpOworICAgICAgICBhdXRvIHBhaW50RGVmaW5p
dGlvbiA9IG1ha2VVbmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9y
LmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyks
IFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKICAgICAgICAgcGFpbnREZWZpbml0aW9uTWFwKCku
YWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA5NmNm
MTg1MGIwY2FlM2FhZTk2MDdkYjEzNDE2NzM1OGI2NzFjMWQ5Li42NGZjNzhlZWU3ODgwZWQ5YmVk
Y2ZjMmE3MDEyY2E2ZWMzY2UxYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlIHsKIAogICAgIC8v
IEFsbCBwYWludCBkZWZpbml0aW9ucyBtdXN0IGJlIGRlc3Ryb3llZCBiZWZvcmUgdGhlIHZtIGlz
IGRlc3Ryb3llZCwgYmVjYXVzZSBvdGhlcndpc2UgdGhleSB3aWxsIHBvaW50IHRvIGZyZWVkIG1l
bW9yeS4KICAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFBhaW50RGVmaW5pdGlvbj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBKU0M6
OkpTT2JqZWN0KiBwYWludENvbnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiwgVmVj
dG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1
bWVudHMpOwogCiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcgbmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4ZThhMmE0Y2Ey
M2UyYjkzZGExMzRhZmI1MmQwZTk1NzZjNDAyMTU5Li4zZjA5MjU2M2JkNTJhYzRhNGJiZWRhNDE1
YzIzN2EyZDFkZmRhZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgV29ya2xldENvbnNvbGVD
bGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VM
ZXZlCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVj
KTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwg
V1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRD
b25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggNGJiNzg4ZWE2M2NkNmJiZGM1
MzI1ODdlMDUxMGQ1MzI1MjYwNmZmYS4uY2VmODJmN2I0MTFkMjE4YzczM2Q2NmZhOWRiYTJkOTMx
MjVhZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3Jr
bGV0R2xvYmFsU2NvcGUpOwogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKICAgICA6IG1fZG9j
dW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9zZXNzaW9uSUQobV9kb2N1bWVu
dC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2xl
dFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmln
aW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogICAgICwgbV9j
b2RlKFdURk1vdmUoY29kZSkpCkBAIC02Miw3ICs2Miw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6
V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYm
IGNvCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdp
blBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlSZWYo
KSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7CisgICAgc2V0
Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihV
UkwgeyBtX2NvZGUudXJsKCkgfSwgKnRoaXMpKTsKIH0KIAogV29ya2xldEdsb2JhbFNjb3BlOjp+
V29ya2xldEdsb2JhbFNjb3BlKCkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdvcmtsZXRHbG9i
YWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lcwogewogICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVu
KCkgfHwgIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25z
b2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1l
c3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3Nh
Z2UtPm1lc3NhZ2UoKSwgMCkpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1l
c3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7
CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMWNlZTllYjM0MjFj
ZDk5YTU2Yzg4NjBiOGVjZGQ0NTk2ZjgwZDJkZS4uNzEzMzkwMGYxNzFlZWY0MTU2NzNkNGU5MGQ1
Y2Y3N2NmZWJjMmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQogICAgIEFTU0VSVChtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUp
OworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+
KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxFcnJvcnMuaAppbmRleCBiMDIxY2NlMTUzYzMxOTI5NTBhMmJmNzdkODA5YTI4NDdhYjBmMGMx
Li5hNjMyN2I5ZGZmMWI3NmJiNTgyYzYzNjAzODE1MjQyOGM3MWFhODI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEVycm9ycy5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERv
Y3VtZW50OwogCiBjbGFzcyBYTUxFcnJvcnMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFhNTEVycm9ycyhEb2N1bWVudCYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBmMDE5M2Q4Yzk2ZTM1YzlmZjc1ZTZhNjNh
MzUwYzY1NWRjYTg2MGVmLi5mODY2MzNhOGQ2ZGI3MDU0MzAxODgyODU3NWI1OWYyNjY3YzY2ZWQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBA
QCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVVJMKCkgY29uc3QKIFhNTEh0dHBSZXF1
ZXN0VXBsb2FkJiBYTUxIdHRwUmVxdWVzdDo6dXBsb2FkKCkKIHsKICAgICBpZiAoIW1fdXBsb2Fk
KQotICAgICAgICBtX3VwbG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8WE1MSHR0cFJlcXVlc3RVcGxv
YWQ+KCp0aGlzKTsKKyAgICAgICAgbV91cGxvYWQgPSBtYWtlVW5pcXVlPFhNTEh0dHBSZXF1ZXN0
VXBsb2FkPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VwbG9hZDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggYWQ3ZTEzYzhhMTk0YWQ1NmQ2MjM0MjAwMDE3Y2Jh
NzdmZTgwYjc0Mi4uYTkyNDQwOWVlNDZjNTNlNzNiMjdhNDlhMTllZmU5Njk3MjE2NzNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgYykKICAgICByZXR1cm4gYyA9PSAnICcg
fHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcdCc7CiB9CiAKLSNkZWZpbmUgREVG
SU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0
aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
dW4jI1N1ZmZpeD4oKTsgfQorI2RlZmluZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihTdWZmaXgp
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNTdWZmaXgo
KSB7IHJldHVybiBtYWtlVW5pcXVlPEZ1biMjU3VmZml4PigpOyB9CiAKIGNsYXNzIEludGVydmFs
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4IDA0NjE1
YzNkNWYwMzEzMTA2OTM4ZmFhMDVmYjM5Yzk5Y2UxMjNiNWMuLmMxYmJjNTRlYjgzMDE2OTExOWM4
NjgzMWE0ZjJhNmU3YzAwNDU2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFByZWRpY2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNw
cApAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgZXZhbHVhdGVQcmVkaWNhdGUoY29uc3QgRXhwcmVz
c2lvbiYgZXhwcmVzc2lvbikKIAogICAgIC8vIGZvb1szXSBtZWFucyBmb29bcG9zaXRpb24oKT0z
XQogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVx
VGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBzdGQ6Om1ha2Vf
dW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigp
OworICAgICAgICByZXR1cm4gRXFUZXN0T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlvbjo6Y3Jl
YXRlKCJwb3NpdGlvbiJfcyksIG1ha2VVbmlxdWU8TnVtYmVyPihyZXN1bHQudG9OdW1iZXIoKSkp
LmV2YWx1YXRlKCkudG9Cb29sZWFuKCk7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXgg
ZWMyYzZhZTA0NTlhMDY5MjU2YTY2MmY3MmM4NzI2N2ZlYTFhNDViZC4uNjMwNGU5MjgxMWE5MzRm
N2RlNzRjOGM5NGIyYjY5YzAwNGVhNDk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5
bGVTaGVldExpYnhzbHQuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBYU0xTdHlsZVNoZWV0
Ojpsb2FkQ2hpbGRTaGVldHMoKQogCiB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZikKIHsKLSAgICBhdXRvIGNoaWxkUnVsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8WFNMSW1wb3J0UnVsZT4odGhpcywgaHJlZik7CisgICAgYXV0byBjaGlsZFJ1bGUgPSBt
YWtlVW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYpOwogICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKGNoaWxkUnVsZS5yZWxlYXNlKCkpOwogICAgIG1fY2hpbGRyZW4ubGFzdCgpLT5sb2FkU2hl
ZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggZTAyNGVmYjU2YmY2NTJiOTBhOWExZDRmODEzMDY0OTE4MzBkOGUwZi4uNzA0
ODg5MmE1YWEwZWY5YTU1ZmJkMjQwOGNkMTc5MTRkMDJhOWM4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTEyOCw3ICsxMjgsNyBA
QCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5w
dXRTb3VyY2UpCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihYTUxFcnJvcnM6
OkVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24gcG9zaXRpb24pCiB7
CiAgICAgaWYgKCFtX3htbEVycm9ycykKLSAgICAgICAgbV94bWxFcnJvcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkpOworICAgICAgICBtX3htbEVycm9ycyA9IG1h
a2VVbmlxdWU8WE1MRXJyb3JzPigqZG9jdW1lbnQoKSk7CiAgICAgbV94bWxFcnJvcnMtPmhhbmRs
ZUVycm9yKHR5cGUsIG0sIHBvc2l0aW9uKTsKICAgICBpZiAodHlwZSAhPSBYTUxFcnJvcnM6Ondh
cm5pbmcpCiAgICAgICAgIG1fc2F3RXJyb3IgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGI5MzEw
MWI4YWFjNDgzOWEzOWJiNTRiMmI4OWRlODk4Yzc5Yjc1YWIuLjg4ZGQ2MDJkYTg4M2U3ZWJhYTk0
YTk2YWI2YTI5ZWRkYjNkODAyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRTdGFydEVsZW1l
bnROU0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciog
eG1sUHJlZml4LCBjb25zdCB4bWxDaGFyKiB4bWxVUkksIGludCBudW1OYW1lc3BhY2VzLCBjb25z
dCB4bWxDaGFyKiogbmFtZXNwYWNlcywgaW50IG51bUF0dHJpYnV0ZXMsIGludCBudW1EZWZhdWx0
ZWQsIGNvbnN0IHhtbENoYXIqKiBhdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxs
YmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2s+KCk7
CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnRO
U0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT54bWxMb2NhbE5hbWUgPSB4bWxTdHJk
dXAoeG1sTG9jYWxOYW1lKTsKICAgICAgICAgY2FsbGJhY2stPnhtbFByZWZpeCA9IHhtbFN0cmR1
cCh4bWxQcmVmaXgpOwpAQCAtMTIyLDEyICsxMjIsMTIgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNr
cyB7CiAKICAgICB2b2lkIGFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKCkKICAgICB7Ci0gICAg
ICAgIG1fY2FsbGJhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50
TlNDYWxsYmFjaz4oKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFBl
bmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4oKSk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRD
aGFyYWN0ZXJzQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2Fs
bGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDaGFy
YWN0ZXJzQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMs
IGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xMzcsNyArMTM3LDcgQEAg
Y2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZFByb2Nlc3NpbmdJbnN0
cnVjdGlvbkNhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHRhcmdldCwgY29uc3QgeG1sQ2hhciogZGF0
YSkKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFj
ayA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrPigpOwog
CiAgICAgICAgIGNhbGxiYWNrLT50YXJnZXQgPSB4bWxTdHJkdXAodGFyZ2V0KTsKICAgICAgICAg
Y2FsbGJhY2stPmRhdGEgPSB4bWxTdHJkdXAoZGF0YSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZENEQVRBQmxvY2tDYWxsYmFj
ayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFj
ayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKKyAgICAg
ICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4o
KTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cm5kdXAocywgbGVuKTsKICAgICAgICAg
Y2FsbGJhY2stPmxlbiA9IGxlbjsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2Fs
bGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kQ29tbWVudENhbGxiYWNrKGNvbnN0IHhtbENoYXIq
IHMpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nQ29tbWVudENhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1
ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1s
U3RyZHVwKHMpOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7
CiAKICAgICB2b2lkIGFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2soY29uc3QgeG1sQ2hhciog
bmFtZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciogc3lzdGVtSUQp
CiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5n
SW50ZXJuYWxTdWJzZXRDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VV
bmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJh
Y2stPm5hbWUgPSB4bWxTdHJkdXAobmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbElE
ID0geG1sU3RyZHVwKGV4dGVybmFsSUQpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGNsYXNzIFBlbmRp
bmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFcnJvckNhbGxiYWNrKFhNTEVycm9yczo6
RXJyb3JUeXBlIHR5cGUsIGNvbnN0IHhtbENoYXIqIG1lc3NhZ2UsIE9yZGluYWxOdW1iZXIgbGlu
ZU51bWJlciwgT3JkaW5hbE51bWJlciBjb2x1bW5OdW1iZXIpCiAgICAgewotICAgICAgICBhdXRv
IGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRXJyb3JDYWxsYmFjaz4oKTsKKyAg
ICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7
CiAKICAgICAgICAgY2FsbGJhY2stPm1lc3NhZ2UgPSB4bWxTdHJkdXAobWVzc2FnZSk7CiAgICAg
ICAgIGNhbGxiYWNrLT50eXBlID0gdHlwZTsKQEAgLTIwMiw2ICsyMDIsNyBAQCBjbGFzcyBQZW5k
aW5nQ2FsbGJhY2tzIHsKICAgICB9OwogCiAgICAgc3RydWN0IFBlbmRpbmdTdGFydEVsZW1lbnRO
U0NhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ1N0YXJ0RWxlbWVu
dE5TQ2FsbGJhY2soKQogICAgICAgICB7CiAgICAgICAgICAgICB4bWxGcmVlKHhtbExvY2FsTmFt
ZSk7CkBAIC0yMzMsNiArMjM0LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsK
IAogICAgIHN0cnVjdCBQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2sgOiBwdWJsaWMgUGVuZGlu
Z0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICB2b2lkIGNhbGwoWE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlcikgb3ZlcnJpZGUKICAgICAg
ICAgewogICAgICAgICAgICAgcGFyc2VyLT5lbmRFbGVtZW50TnMoKTsKQEAgLTI0MCw2ICsyNDIs
NyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKICAgICB9OwogCiAgICAgc3RydWN0IFBlbmRp
bmdDaGFyYWN0ZXJzQ2FsbGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5n
Q2hhcmFjdGVyc0NhbGxiYWNrKCkKICAgICAgICAgewogICAgICAgICAgICAgeG1sRnJlZShzKTsK
QEAgLTI1NSw2ICsyNTgsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKICAgICB9OwogCiAg
ICAgc3RydWN0IFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjayA6IHB1YmxpYyBQ
ZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaygp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHhtbEZyZWUodGFyZ2V0KTsKQEAgLTI3MSw2ICsyNzUs
NyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKICAgICB9OwogCiAgICAgc3RydWN0IFBlbmRp
bmdDREFUQUJsb2NrQ2FsbGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5n
Q0RBVEFCbG9ja0NhbGxiYWNrKCkKICAgICAgICAgewogICAgICAgICAgICAgeG1sRnJlZShzKTsK
QEAgLTI4Niw2ICsyOTEsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKICAgICB9OwogCiAg
ICAgc3RydWN0IFBlbmRpbmdDb21tZW50Q2FsbGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNr
IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0
dWFsIH5QZW5kaW5nQ29tbWVudENhbGxiYWNrKCkKICAgICAgICAgewogICAgICAgICAgICAgeG1s
RnJlZShzKTsKQEAgLTMwMCw2ICszMDYsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKICAg
ICB9OwogCiAgICAgc3RydWN0IFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrIDogcHVibGlj
IFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2soKQogICAg
ICAgICB7CiAgICAgICAgICAgICB4bWxGcmVlKG5hbWUpOwpAQCAtMzE4LDYgKzMyNSw3IEBAIGNs
YXNzIFBlbmRpbmdDYWxsYmFja3MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0Vycm9y
Q2FsbGJhY2s6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdFcnJvckNhbGxiYWNr
KCkKICAgICAgICAgewogICAgICAgICAgICAgeG1sRnJlZShtZXNzYWdlKTsKQEAgLTU2NCw3ICs1
NzIsNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpzdXBwb3J0c1hNTFZlcnNpb24oY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKQogWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERv
Y3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgOiBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX3ZpZXcoZnJhbWVWaWV3KQotICAgICwg
bV9wZW5kaW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkK
KyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtlVW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkp
CiAgICAgLCBtX2N1cnJlbnROb2RlKCZkb2N1bWVudCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3Np
dGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogewpAQCAtNTcyLDcgKzU4
MCw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9j
dW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQogCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9j
dW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudEVs
ZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKICAgICA6IFNj
cmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1bWVudCgpLCBwYXJzZXJDb250ZW50
UG9saWN5KQotICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGlu
Z0NhbGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtlVW5pcXVlPFBlbmRp
bmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJlbnROb2RlKCZmcmFnbWVudCkKICAgICAsIG1f
c2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQog
ICAgICwgbV9wYXJzaW5nRnJhZ21lbnQodHJ1ZSkKQEAgLTEzMjgsNyArMTMzNiw3IEBAIHZvaWQg
WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAgICAgICAgeG1sVHJlZVZpZXdlci50cmFuc2Zv
cm1Eb2N1bWVudFRvVHJlZVZpZXcoKTsKICAgICB9IGVsc2UgaWYgKG1fc2F3WFNMVHJhbnNmb3Jt
KSB7CiAgICAgICAgIHhtbERvY1B0ciBkb2MgPSB4bWxEb2NQdHJGb3JTdHJpbmcoZG9jdW1lbnQo
KS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybS50
b1N0cmluZygpLCBkb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIGRvY3VtZW50
KCktPnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4o
ZG9jKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShtYWtlVW5pcXVl
PFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CiAKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0UGFyc2lu
ZyhmYWxzZSk7IC8vIE1ha2UgdGhlIGRvY3VtZW50IHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2ls
bCBhcHBseSBYU0wgc3R5bGVzaGVldHMuCiAgICAgICAgIGRvY3VtZW50KCktPmFwcGx5UGVuZGlu
Z1hTTFRyYW5zZm9ybXNOb3dJZlNjaGVkdWxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vy
dmljZS5jcHAKaW5kZXggMDViYzk1M2Y3ZjBkZGM3ODdiMWU2MzA0ODc2OTZjMjA4NTljYWUwZi4u
ZDY5ZTE0OTkyZDU4Njc1MWNhMDQzNDI2MzYyYTZmNDFjMjY5OWY0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBXZWJEcml2ZXJT
ZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0
aWVzTGlzdCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2Vzc2lvbkhvc3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNlc3Npb25Ib3N0PihjYXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0
KCkpOworICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBtYWtlVW5pcXVlPFNlc3Npb25Ib3N0PihjYXBh
YmlsaXRpZXNMaXN0LnRha2VMYXN0KCkpOwogICAgIGF1dG8qIHNlc3Npb25Ib3N0UHRyID0gc2Vz
c2lvbkhvc3QuZ2V0KCk7CiAgICAgc2Vzc2lvbkhvc3RQdHItPmNvbm5lY3RUb0Jyb3dzZXIoW3Ro
aXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9u
SG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKGVycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vz
c2lvbkhvc3RHbGliLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwCmluZGV4IDdhMjBiODk0MWFmZjcyYTg1MmI3NmY1YzU1MTA2MjY1NDc3NGExY2MuLmE1MjY2
YjU5NzJmZWEwYjI4ZGRlNTc3MWMwOTRmMTU2ZWZkZmE3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIv
Z2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBTZXNzaW9u
SG9zdDo6bGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9y
KT4mJiBjb21wbGUKICAgICB9LCB0aGlzKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGJ1c0Fk
ZHJlc3MoZ19zdHJkdXBfcHJpbnRmKCJ0Y3A6aG9zdD0lcyxwb3J0PSV1IiwgIjEyNy4wLjAuMSIs
IHBvcnQpKTsKLSAgICBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6bWFrZV91bmlxdWU8Q29ubmVjdFRv
QnJvd3NlckFzeW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFi
bGUuZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgY29ubmVjdFRvQnJv
d3NlcihtYWtlVW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUo
ZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOwogfQogCiB2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKHN0ZDo6dW5p
cXVlX3B0cjxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPiYmIGRhdGEpCkBAIC0zODEsNyArMzgx
LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQobG9uZyBtZXNzYWdl
SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQobV9jb25uZWN0aW9uSUQpOwog
ICAgIEFTU0VSVChtX3RhcmdldC5pZCk7CiAKLSAgICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2FnZUNvbnRleHQgeyBtZXNzYWdlSUQs
IHRoaXMgfSk7CisgICAgYXV0byBtZXNzYWdlQ29udGV4dCA9IG1ha2VVbmlxdWU8TWVzc2FnZUNv
bnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlELCB0aGlzIH0pOwogICAgIGdfZGJ1c19j
b25uZWN0aW9uX2NhbGwobV9kYnVzQ29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwKICAgICAgICAg
SU5TUEVDVE9SX0RCVVNfT0JKRUNUX1BBVEgsCiAgICAgICAgIElOU1BFQ1RPUl9EQlVTX0lOVEVS
RkFDRSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNr
QXR0cmlidXRpb25NYW5hZ2VyLmgKaW5kZXggYjYyZjEyZTE4MmYyMWViOGQ1MTA3NGNiMjU0ZDdi
MjEyZTBjZWQxOS4uYjQ0NWU3YTY1YTQ4ZDA3NDhiZDdlOTIwNWEzNDQwZjdmMWE5NTZjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25N
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKIAogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IDJlMjk2YjI5ZjQzYTRmYzg4ZTcwMDkzMjRh
NWUyM2IwYmU5Y2Q1MWMuLjkzMDNkMmFkYzE1ZWY2ZmIzMTBiNmZiMTZkMDcwY2M4NTNmZGMzYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2soKQogICAgIGlmIChy
ZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZpbGVN
b25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4ocmVzb3VyY2VMb2dQYXRoLCBt
X3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9maWxlTW9uaXRv
ciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwgbV93b3JrUXVldWUu
Y29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChGaWxlTW9u
aXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHN0
b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBtX2ZpbGVNb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxl
TW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxl
TW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VU
eXBlOjpSZW1vdmFsKSB7CiAgICAgICAgICAgICAvLyBEaXJlY3Rvcnkgd2FzIHJlbW92ZWQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmgKaW5kZXggNGMwMzNlMzUzZDRmMzA4ZjdmNzYwMDEyY2E5NjI5NjMwM2MxMDczMC4uNzFm
MzRiZmEzZDZjMmI1Mjc2MTY4OTQ0ZWUzMzRjNzNkYWY1MDMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaApAQCAtNDUs
NiArNDUsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU7CiAKIC8v
IENhbiBvbmx5IGJlIGNvbnN0cnVjdGVkIC8gZGVzdHJveWVkIC8gdXNlZCBmcm9tIHRoZSBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWMgcXVldWUuCiBjbGFzcyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYsIFdvcmtR
dWV1ZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogICAgIH5SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBhZGVjMTRjZjljY2Q5NjRjMjkwMWNlMmQ4NGVhMzU2
ZGY2ZGIwZmYyLi41ZGM3ZDk5NDc4YjM0Y2EzMmI3NzIwZjA5NzQ1ZDAyMWE2ZWM0MTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC03Nyw2ICs3Nyw3IEBA
IGVudW0gY2xhc3MgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgOiBib29sIHsgTG9uZywgU2hvcnQgfTsK
IAogLy8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVkIG9uIHRo
ZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVlLgogY2xh
c3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHVzaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRhODg2NmI2MWM4YjA1NzJjZGQ1MDhlYjY5YTlkOGE5
ODllNzVkMjEuLjhiNGE4ODIzOTc0ZDZjZjE1NTY5ZGNmOWZmZTk5MWMxZTFjMGZiNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xNTks
MTUgKzE1OSwxNSBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYgbgogICAgIAogICAgIHBvc3RUYXNr
KFt0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdF0g
ewogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5p
c0lUUERhdGFiYXNlRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCp0
aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9
IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCp0aGlzLCBt
X3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSk7CiAKLSAgICAgICAgICAgIGF1dG8gbWVtb3J5U3RvcmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1f
c3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAgICAgIGF1
dG8gcGVyc2lzdGVudFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNzUXVldWUsIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgYXV0byBtZW1vcnlT
dG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhp
cywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgICAgICAg
ICAgYXV0byBwZXJzaXN0ZW50U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAKICAgICAgICAgICAgIGRvd25jYXN0PFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUuZ2V0
KCkpLnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKCptZW1vcnlTdG9yZSk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUs
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRp
c3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gbWFrZVVuaXF1ZTxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwg
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CisgICAgICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdl
ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KGRv
d25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3RhdGlzdGljc1N0
b3JlKSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnkp
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUUoMTkzMjk3KTogVGhpcyBzaG91bGQgYmUg
cmV2aXNlZCBhZnRlciB0aGUgVUlQcm9jZXNzIHZlcnNpb24gZ29lcyBhd2F5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmgKaW5kZXggNjA1YWVmM2U2ZWU5NTBmMzk0ODNmY2Q4Y2M0ZDhlNjU4ZTAyY2YwYy4uYmJlMzk4
NDc1MmJlMTQ2MDUwZDUwMzU3MTM3MTU1MGZiMmNiNjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC00
OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiAK
IGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvb2tpZU1hbmFnZXIpOwogcHVibGlj
OgogICAgIFdlYkNvb2tpZU1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90
b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZGM3OWVlYmNmMThkYmY2
N2I0NjRjMzU4NjEwZmIzY2U3Y2ZlOTBjYy4uMGUzOGU5NDMwZDJjYzlhMTQxYTk3MjcwMzVkZDNk
ZmEwMjVmNGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBzdHJ1Y3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoTmV0d29ya1Byb2Nl
c3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDJjNGQyZmY5NDgwOWM0MmE2MTE2NzNiNWZiNWNh
ZGJmYTU5MTYwNGUuLmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0ZjM5ZmI1ZWZjZDc1ZTcxNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJTb3VwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbFJl
cXVlc3RDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xpZW50
CiAgICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdl
ci0+YWRkQ3VzdG9tUHJvdG9jb2woc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0
KSk7CisgICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdl
ci0+YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CiAg
ICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29s
SUQsIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVlc3QocmVxdWVzdCkpOwogICAgIH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA4MGZlMWEyZGRjM2UxM2EwMjBiMjU2NGE2MmRj
NTUzZjBiNWQ0NGQwLi5iNGQyZGFjNWQwZGI1NzNiYzc1ZWVjZWVmOGZiMDYwZTgzZDYxNmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRv
d25sb2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5u
ZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CiAgICAgcGFy
YW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
ID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OlVzZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpu
ZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0
cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxv
YWRJRCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQs
ICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVn
aXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0
YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1
ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oTmV0d29ya0Rh
dGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9E
b3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9h
ZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYg
YmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nRG93
bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRk
KGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKG5ldHdvcmtMb2Fk
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3Bv
bnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBtYWtlVW5pcXVl
PFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3du
bG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFu
YWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElE
IGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogI2lmICFQTEFURk9STShDT0NPQSkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjpt
YWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25J
RCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3du
bG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwogCiAgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1
bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBBU1NF
UlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAppbmRleCBh
ODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3YmJjNDMzZTY1Li5hZTNjYTdlMGU0ZWU3ZWM4
NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6OkFkZFJlc3VsdCBEb3dubG9hZE1hcDo6YWRk
KERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBhdXRvIHJlc3VsdCA9IG1fZG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgaWYgKG1fZG93bmxvYWRzLnNp
emUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9hZEFzc2VydGlvbik7Ci0gICAg
ICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91
bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKICAgICAgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb24gaW4gTmV0
d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCmluZGV4IGEyNzgyOGQ3
YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5NmQuLjU5MTIzZjJjNDhmMWMxZTQxNzliYjFk
NWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcApAQCAtMzcsNyArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQZW5kaW5n
RG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6OkNvbm5lY3Rpb24qIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBEb3dubG9hZElE
IGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgV2ViQ29yZTo6Qmxv
YlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUp
Ci0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlz
LCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNzaW9uKSkKKyAg
ICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdp
c3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQogICAgICwgbV9wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbikKIHsKICAgICBtX2lz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gcGFyYW1ldGVycy5jbGllbnRDcmVkZW50
aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRl
bnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5YjFiOWI4NjA0MzhkOWI2
YTNmMTI2ODkxNDYyYjMzNmJjNTlmYzRkLi44MmExZTgzYmU5NWMzMDdmN2UwYTdlMDcwNDE5YTk5
NjU3ZDM0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODc5LDcgKzg3OSw3
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5l
Y3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNX
U2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5z
d1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2Vy
dmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9u
ID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNl
cnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOwogICAgIAogICAgIFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0
aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIC0gJXMiLCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4IDQ0NDIwZmY1ZmYyMjk5YmUzNzU0Y2UzN2Nk
ZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIxYWYwYmFkZTBjMDI3NWJlMmYwOTVhMTY2MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZChVc2Vy
Q29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRD
b250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAgICBhdXRvJiBiYWNrZW5kID0gKm1fY29udGVu
dEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CiAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRvJiYgY29udGVudFJ1bGVMaXN0IDogY29udGVu
dFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2Y2ExZjA5NWUxMDNjNTQyYWQ0ZTQzMDAwYmNi
NzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIyMTA0ZGYwOTQ2OTJjYzNmNjU1MjI1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3ZWJLaXRC
bG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIjsKIAogTmV0d29ya0RhdGFU
YXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgQmxv
YlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVu
dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykKICAgICA6IE5ldHdvcmtEYXRhVGFzayhz
ZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVz
ZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJlYW0oc3RkOjptYWtlX3VuaXF1ZTxBc3luY0Zp
bGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3RyZWFtKG1ha2VVbmlxdWU8QXN5bmNGaWxlU3Ry
ZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGZpbGVSZWZlcmVuY2VzKQogICAg
ICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkpCiB7CkBAIC00Njcs
NyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAgICAgfQog
CiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRN
YW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+
KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+
c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIGF1dG8gZG93bmxvYWQgPSBt
YWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQs
ICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAg
ICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwogICAgIGRvd25sb2FkTWFuYWdl
ci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3Zl
KGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAppbmRleCBmNjU0Mjk1
OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMxMTZjLi4xOTMyNmYyZjQ3ZGM5ZjRmNjIyOGE0
YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9kYXRhYmFz
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgICAg
IG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPigpOwogICAg
ICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9kYXRhYmFzZS0+b3BlbihwYXRoLCBXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFpc0Rh
dGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODAsNyArODAsNyBAQCBOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAg
ICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwg
ZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVyZW50IHRocmVhZHMuCiAgICAg
ICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKIAotICAgICAgICBtX3N0
YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9k
YXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsKKyAgICAgICAgbV9zdGF0ZW1lbnQg
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4oKm1fZGF0YWJhc2UsIGh0dHBz
VXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAgIGludCBpc1N0YXRlbWVudFByZXBhcmVkID0g
KG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FMSVRFX09LKTsKICAgICAgICAgQVNTRVJUKGlz
U3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBpZiAoIWlzU3RhdGVtZW50UHJlcGFyZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyLmgKaW5kZXggZGNkNDZhNjAxYmU2MzA5ODZmYzJhZTBjMWM5NjU1OGM5NTky
MjA4YS4uNTFkMjAzMTRlYWE0OWU5NmE0MWE1N2NlOGQ0MjIyNmJiZmIwNzIzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyKCk7CiAgICAgfk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDkxMDdmZWMxZTM0ZGI0NDg4
MTYyMjg2ODYyMmM4ZmJlYjViMzg4M2MuLmVlODBhYzZlYTFhNzc5NzczYTA3MTBlMTc4ODcwNjM3
NjdjNTEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGUKICAgICB9CiAK
ICAgICBpZiAobV9sb2FkVGhyb3R0bGVMYXRlbmN5ID4gMF9zKSB7Ci0gICAgICAgIG1fdGhyb3R0
bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocm90dGxlPigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRl
bmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBtX3Rocm90dGxlID0gbWFrZVVuaXF1ZTxUaHJvdHRsZT4oKnRoaXMsIG1fbG9hZFRocm90
dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IDQwOTcxNGQ2NjcyNmE4NDc0
YWZmMjlhMTYwODE3ZjI0Nzk2N2IwMTYuLmUxYWUwMGJkOWQ5NTQ3Nzc4MTc0Mzk4NWRmMDczYThi
MWNkMjUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdAogICAgICAgICBtX2ZyYW1lSUQsCiAgICAgICAgIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kKICAgICB9OwotICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3Ms
IFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFu
ZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFi
bGUgeworICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVk
aXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgewogICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCAt
IG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0IHByZWZsaWdodCBjb21w
bGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwgZXJyb3IuaXNOdWxsKCksIGlzUmVk
aXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewpAQCAtNDQ2LDcgKzQ0
Niw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50
U2VjdXJpdHlQb2xpY3koKQogewogICAgIGlmICghbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgJiYg
bV9jc3BSZXNwb25zZUhlYWRlcnMpIHsKICAgICAgICAgLy8gRklYTUU6IFBhc3MgdGhlIFVSTCBv
ZiB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGluc3RlYWQgb2YgaXRzIG9yaWdpbi4KLSAgICAgICAg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0
eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7CisgICAgICAg
IG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygpIH0pOwogICAgICAgICBtX2Nv
bnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2ZUhlYWRlcnMoKm1fY3NwUmVzcG9uc2VIZWFk
ZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0KICAgICByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQ
b2xpY3kuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDljYjRhOTI1MjIwOTA1YjRjMjFhNGY3NmFlNzc2YWUxNDUwMjVmODcu
LmJiYTdiYmUwMmI5ZTZiOTBjNGY5M2FmNTg4ZjI1MzNhYTU1Njk5ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01MDMsOSArNTAz
LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAg
ICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNv
cHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAg
ICB9CiAKLSAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7
CisgICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNF
KENVUkwpIHx8IFVTRShTT1VQKQotICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAjZW5kaWYKIH0KIApAQCAtNTM1LDkg
KzUzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICBjb29raWVTdG9y
YWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tp
ZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiks
IFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQot
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CiAjZW5kaWYK
IH0KIApAQCAtMjQyOCw3ICsyNDI4LDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9jZXNzOjpzd1Nl
cnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICAvLyBJZiB0
aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6OlNlc3Npb25JRCBjb21lIGZyb20/
CiAgICAgICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSB8fCAhcGF0aC5pc0VtcHR5
KCkpOwogICAgICAgICAKLSAgICAgICAgYXV0byB2YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1dT
ZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwg
c2Vzc2lvbklEKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1h
a2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklE
KTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheSkKICAgICAgICAgICAgIHZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKQEAgLTI1NDAsNiAr
MjU0MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPCiB9CiAKIGNsYXNzIFF1b3RhVXNlcklu
aXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VRdW90YVVzZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFF1b3RhVXNl
ckluaXRpYWxpemVyKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIpCiAgICAgICAgIDogbV9t
YW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQpAQCAtMjU3NCw3ICsyNTc1LDcgQEAgY2xhc3Mg
UXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
VXNlciB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVzZXJzKFN0b3Jh
Z2VRdW90YU1hbmFnZXImIG1hbmFnZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQsIG9yaWdpbiwgdXNl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6ZXI+KG1hbmFnZXIpXSgpIG11
dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVzZXIgPSBtYWtlVW5pcXVlPFF1
b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy0+aWRiU2VydmVyKHNl
c3Npb25JRCkuaW5pdGlhbGl6ZVF1b3RhVXNlcihvcmlnaW4pOwpAQCAtMjU4OCw3ICsyNTg5LDcg
QEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFn
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1h
bmFnZXJzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuICpzdG9yYWdl
UXVvdGFNYW5hZ2Vycy5tYW5hZ2Vyc1Blck9yaWdpbigpLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAm
c3RvcmFnZVF1b3RhTWFuYWdlcnMsIHNlc3Npb25JRCwgJm9yaWdpbl0gewotICAgICAgICBhdXRv
IG1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KHN0b3JhZ2VR
dW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBbdGhpcywgc2Vzc2lvbklELCBvcmln
aW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNl
SW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAgYXV0byBtYW5hZ2VyID0gbWFrZVVu
aXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVvdGFNYW5hZ2Vycy5kZWZhdWx0UXVv
dGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3JpZ2luXSh1aW50NjRfdCBxdW90YSwgdWlu
dDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNr
KSB7CiAgICAgICAgICAgICB0aGlzLT5yZXF1ZXN0U3RvcmFnZVNwYWNlKHNlc3Npb25JRCwgb3Jp
Z2luLCBxdW90YSwgY3VycmVudFNwYWNlLCBzcGFjZUluY3JlYXNlLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgICAgIH0pOwogICAgICAgICBpbml0aWFsaXplUXVvdGFVc2VycygqbWFuYWdlciwg
c2Vzc2lvbklELCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IGZiN2E2Y2QzNmVhOWYzNTk0YTdmYjlkZTg1NTM1MzIzZmE4MjE3
MDguLmM2ZTE2OGRkNDdmNjNmNDIyNmJmNjVkZjRmMzQ0YzQ5ZWRhMGUzNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE1Myw3ICsxNTMs
NyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzLCBwcml2
YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFk
ZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7CisgICAg
ICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VD4o
KnRoaXMpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
Y2UwNmUzNjEzYWMyMGVmOGIzMzE0YzdlYjI2ZTJjNGFiYWZiNGU4OC4uZmY5OTJiZmYxYmNmZWZh
NTA0MjhjNGZhMWEwYTlmMzY2M2NkYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTExLDcgKzExMSw3
IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAKICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8
fCBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzIHx8IHBhcmFtZXRl
cnMub3B0aW9ucy5rZWVwQWxpdmUpIHsKICAgICAgICAgTmV0d29ya0xvYWRDaGVja2VyOjpMb2Fk
VHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBpc01haW5GcmFtZUxvYWQoKSA/IE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6TG9hZFR5cGU6Ok1haW5GcmFtZSA6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6
Ok90aGVyOwotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0
aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBIVFRQSGVhZGVy
TWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJh
bWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVm
KCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBS
ZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKKyAgICAgICAg
bV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29u
bmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0
aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRlck1hcCB7IG1fcGFyYW1ldGVycy5vcmln
aW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0s
IG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxp
Z2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJz
LmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAgIGlmIChtX3BhcmFtZXRlcnMuY3NwUmVz
cG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENTUFJl
c3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgeyBtX3Bh
cmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKQEAgLTExOSw3ICsxMTksNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBh
cgogI2VuZGlmCiAgICAgfQogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5KQotICAgICAgICBtX3N5
bmNocm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+
KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOworICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERh
dGEgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNS
ZXBseSkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIoKQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFy
dE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgfQog
CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAgICBtX25ldHdv
cmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nvbm5lY3Rp
b24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24p
OworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm1f
Y29ubmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3Jr
U2Vzc2lvbik7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2Fk
OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
aW5kZXggYzJiZjQzZDI0ZTA5MWZmNzZkOWRiOGI3MGExNmFlM2ZhMTdiMmQ1MC4uYTA0YWE5MzQ4
ZjI0NzNiZjliNjcyNWIwYTM2NDg4YTdmYmMzMmZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBDYWNo
ZTsKIH0KIAogY2xhc3MgTmV0d29ya1Nlc3Npb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0
d29ya1Nlc3Npb24+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1By
b2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0dWFs
IH5OZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRleCAwNGUzZDAyNTIyMGRlNGM0M2M3MzYy
ZGExNDFkZjMyYmEyMDMwZmFmLi41OTE4ODU3NTdhODQ3NTFjODMxOGY3YmU1ZDI3NWE3ZjExYzVh
NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRDaGFubmVsLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBOZXR3b3JrU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1NvY2tldENoYW5uZWw+KGNvbm5l
Y3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7CisgICAgYXV0byByZXN1bHQgPSBt
YWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0aW9uLm5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwgcHJvdG9j
b2wsIGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0LT5tX3NvY2tldCkgewogICAgICAgICBy
ZXN1bHQtPmRpZENsb3NlKDAsICJDYW5ub3QgY3JlYXRlIGEgd2ViIHNvY2tldCB0YXNrIl9zKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggNjcyYjM3ODFhNGQ0YTM0YjljMWUx
ZTI0MTViZDQ5MTBlNzc5ZWQ3MS4uOWRmOWFhY2RjYjMzMmUwNDFkYjY5YmQwNjgxMDIyOWNmOGJi
NGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIGNs
YXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbCA6IHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IGQ5MGNj
Y2E5ODBhOGVmZmMyZDRmMzhmNWUzZjZiYzBhYTJjMmU1NDYuLjJjNjQyN2U2NDgyMmNlZjVkMWE4
MTIwMjVlZmQ2Yzg1NDU0MWNlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC01Myw3ICs1Myw3IEBAIFByZWNvbm5lY3RUYXNrOjpQ
cmVjb25uZWN0VGFzayhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtMb2Fk
UGFyYW1lCiAgICAgfQogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9u
bHkgPT0gUHJlY29ubmVjdE9ubHk6Olllcyk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdv
cmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNz
aW9uKTsKIAogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdCg2MDAwMF9zKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IGJmNTE1NzhmYjE0N2RkZGM4N2U2NmQ5
MGE1ZWRkMDJhNGNkNzI2OTMuLmNjODc4NGQ0MjgzYTYyNWZjMGUxZDllZmFhNTI3MDUyM2FjNzEx
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBA
IHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRhdGUoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVX
cml0aW5nVG9Mb2NhbFN0b3JhZ2UpCi0gICAgICAgIG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9u
V2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZGRlblRlcm1p
bmF0aW9uRGlzYWJsZXI+KCk7CisgICAgICAgIG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hp
bGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFN1ZGRlblRlcm1pbmF0aW9uRGlz
YWJsZXI+KCk7CiAKICAgICBtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUgPSB0cnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAKaW5kZXggM2U5ZDE3ZDYwMmQzNDE3NzAzM2M5MzM4YjRiYmU2ZGEwYmFiYThhNC4uYjA4M2Q1
ZDMyYTUxZTYxZGE0Mzc2ZGY5NDQ2ZWYxMTE0ZWE2YmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtODQsMTcgKzg0
LDE3IEBAIENhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFJlZjxT
dG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKENh
Y2hlT3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpIHsKLSAgICAgICAgbV9sb3dQb3dl
ck1vZGVOb3RpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TG93UG93ZXJNb2RlTm90
aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeworICAgICAgICBtX2xv
d1Bvd2VyTW9kZU5vdGlmaWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3Rp
Zmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7CiAgICAgICAgICAgICBB
U1NFUlQoV1RGOjpSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoaXNMb3dQb3dl
ck1vZGVFbmFibGVkKQogICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9
IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1f
c3BlY3VsYXRpdmVMb2FkTWFuYWdlcik7Ci0gICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhp
cywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1h
bmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3Jh
Z2UuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgaWYgKCFtX2xv
d1Bvd2VyTW9kZU5vdGlmaWVyLT5pc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSkKLSAgICAgICAgICAg
IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAgICBtX3NwZWN1
bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0
aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgIH0KICNlbmRpZgogCkBAIC0zNzUsMTIgKzM3NSwx
MiBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3Zl
KHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2Up
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCBy
ZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJl
cXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1h
a2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1By
b2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25z
ZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3Bv
bnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjp1cGRhdGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcQogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBleGlzdGluZ0VudHJ5LnJlc3BvbnNlKCk7CiAg
ICAgV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24ocmVzcG9u
c2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKLSAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5n
RW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCBy
ZXNwb25zZSkpOworICAgIGF1dG8gdXBkYXRlRW50cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihleGlz
dGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRyeS5idWZmZXIoKSwgV2ViQ29y
ZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKSk7CiAgICAgYXV0byB1
cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAKICAg
ICBtX3N0b3JhZ2UtPnN0b3JlKHVwZGF0ZVJlY29yZCwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5k
ZXggN2FlMWMyZmU3ZGNlNjA3YjlmOGE1M2Q5OWExYmQ3OTg1Mzk5YmNmMS4uMWY0MTQ0YThmYWU4
N2JmNWZjNWM4M2VkOTAyYjZmZjA4YTA2NGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgp
IGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNv
cmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7Ci0gICAgYXV0byBlbnRy
eSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRy
eSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VF
bnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3Jl
c3BvbnNlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBlN2ZjNWI4
OTMyMmI5OTFjNzA5ZDA2OGJlMmRlNzc3MzgzY2I0YmMwLi4yMjAxOTQxN2E4YzUwMWJmOTU1YmY1
MzIyYzA2OWNiMDMyYTQxZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hl
JiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgcGFyYW1ldGVy
cy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBDb250ZW50U25pZmZpbmdQb2xpY3k6OkRvTm90U25p
ZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
PSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmY7CiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0
d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKSk7CiB9CiAKIFNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCAxY2Q2YjQ5
MmY4MWE1YTgxZDI0Y2E3OTEwOGRhNmIxOWUwYzAwM2YxLi41N2U4ZTc1OTliMWNjYTY1YjI2ZTA2
ZWMzODcyZWUyZGQ5NDlkZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ0ZyYW1l
TAogICAgIHZvaWQgcmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBLZXkmIHN1YnJlc291cmNlS2V5KQogICAgIHsKICAgICAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VL
ZXkpKTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVuZChtYWtlVW5pcXVlPFN1YnJl
c291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VLZXkpKTsKICAgICAgICAgbV9sb2FkSHlz
dGVyZXNpc0FjdGl2aXR5LmltcHVsc2UoKTsKICAgICB9CiAKQEAgLTM1NSw3ICszNTUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEtleSYgc3RvcmFnZUtl
eSwgUmV0cmlldmVDb21wbGV0aW9uSAogICAgIEFTU0VSVChtX3BlbmRpbmdQcmVsb2Fkcy5jb250
YWlucyhzdG9yYWdlS2V5KSk7CiAgICAgLy8gRklYTUU6IFRoaXMgYnJlYWtzIGluY3JlbWVudGFs
IGxvYWRpbmcgd2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5vdCBzdWNjZXNzZnVsLgogICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmlldmVSZXF1ZXN0cy5lbnN1cmUoc3RvcmFnZUtl
eSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmV0cmlldmVD
b21wbGV0aW9uSGFuZGxlcj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKICAgICB9KTsKICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5hcHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpAQCAt
NDA0LDcgKzQwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVk
RW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgY29uCiAgICAgQVNTRVJUKGVudHJ5
KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAgYXV0byBrZXkg
PSBlbnRyeS0+a2V5KCk7Ci0gICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFr
ZV91bmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBXVEZNb3ZlKHJldmFsaWRh
dGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7CisgICAgbV9wcmVsb2FkZWRFbnRy
aWVzLmFkZChrZXksIG1ha2VVbmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBX
VEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAg
ICAgIGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRlZEVudHJpZXMudGFrZShrZXkpOwog
ICAgICAgICBBU1NFUlQocHJlbG9hZGVkRW50cnkpOwogICAgICAgICBpZiAocHJlbG9hZGVkRW50
cnktPndhc1JldmFsaWRhdGVkKCkpCkBAIC00NDksNyArNDQ5LDcgQEAgYm9vbCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0IEtleSYga2V5LCBFbnRy
eSogZW50cnkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBjb21wbGV0
aW9uSGFuZGxlciA6ICpjb21wbGV0aW9uSGFuZGxlcnMpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVudHJ5ID8gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6IG51bGxwdHIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IG1ha2VVbmlxdWU8RW50cnk+KCplbnRy
eSkgOiBudWxscHRyKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDY4LDcgKzQ2OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0
IFN1YnJlc291cmNlSW5mbyYgc3VicmVzCiAKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGlu
ZyAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIHJl
dmFsaWRhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZy
YW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCBy
ZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFs
aWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFsaWRhdG9yID0gbWFrZVVuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUo
ZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXZh
bGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAg
ICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCByZXZhbGlkYXRlZEVudHJ5LT5rZXko
KSA9PSBrZXkpOwogCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGYK
ICAgICAgICAgICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJlc291cmNlSW5mbywgZnJhbWVJRCk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
UHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgTm90IHByZWxvYWRpbmcgJyVzJyBiZWNhdXNl
IGl0IGlzIG1hcmtlZCBhcyB0cmFuc2llbnQiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFr
ZV91bmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwgZnJhbWVJRF0geworICAgICAgICAg
ICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1ha2VVbmlxdWU8RXhwaXJpbmdFbnRy
eT4oW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZl
TG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKG1fY2FjaGUubmV0d29ya1Byb2Nlc3MoKSwgZnJhbWVJ
RCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVJpZ2h0bHlOb3RXYXJtZWRVcEtleSgpKTsK
ICAgICAgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMucmVtb3ZlKGtleSk7CiAgICAg
ICAgICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiYmZjNjQ5ODkwZjk1Y2M3ZTA0
Y2U4MmE0ZmUzMjk0NGRjMWFiMWYwLi44MDRjNDI5OGNjM2UzYzI4MTRmZGJjMmJiYjZjYmVlNTc1
ODRhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTI5MCw4ICsyOTAsOCBAQCB2b2lkIFN0
b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3
b3JrUHJvY2Vzcykgc3luY2hyb25pemluZyBjYWNoZSIpOwogCiAgICAgYmFja2dyb3VuZElPUXVl
dWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bnRlbnRzRmlsdGVyPigpOwotICAgICAgICBhdXRvIGJsb2JGaWx0ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRvIHJlY29yZEZpbHRlciA9IG1ha2VV
bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1dG8gYmxvYkZpbHRlciA9IG1ha2VV
bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CiAKICAgICAgICAgLy8gTW9zdCBvZiB0aGUgZGlzayBz
cGFjZSB1c2FnZSBpcyBpbiBibG9icyBpZiB3ZSBhcmUgdXNpbmcgdGhlbS4gQXBwcm94aW1hdGUg
cmVjb3JkcyBmaWxlIHNpemVzIHRvIGF2b2lkIGV4cGVuc2l2ZSBzdGF0KCkgY2FsbHMuCiAgICAg
ICAgIHNpemVfdCByZWNvcmRzU2l6ZSA9IDA7CkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBTdG9y
YWdlOjpyZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mIHJlYWRPcGVyYXRpb24sIGNvbnN0IERhdGEm
IHJlY29yZERhdGEpCiAgICAgfQogCiAgICAgcmVhZE9wZXJhdGlvbi5leHBlY3RlZEJvZHlIYXNo
ID0gbWV0YURhdGEuYm9keUhhc2g7Ci0gICAgcmVhZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3JkIHsKKyAgICBy
ZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IG1ha2VVbmlxdWU8U3RvcmFnZTo6UmVjb3JkPihT
dG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0YS5rZXksCiAgICAgICAgIG1ldGFEYXRh
LnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKQEAgLTc1OCw3ICs3NTgsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZyb21NZW1vcnkoY29uc3QgVCYgb3BlcmF0aW9u
cywgY29uc3QgS2V5JiBrZXksCiAgICAgICAgIGlmIChvcGVyYXRpb24tPnJlY29yZC5rZXkgPT0g
a2V5KSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJv
Y2VzcykgZm91bmQgd3JpdGUgb3BlcmF0aW9uIGluIHByb2dyZXNzIik7CiAgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlY29yZCA9IG9wZXJhdGlvbi0+cmVjb3JkLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om1ha2VfdW5pcXVlPFN0b3Jh
Z2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTg2Miw3ICs4
NjIsNyBAQCB2b2lkIFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IEtleSYga2V5LCB1bnNpZ25lZCBw
cmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZAogICAgIGlmIChyZXRyaWV2ZUZyb21NZW1v
cnkobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMsIGtleSwgY29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFJlYWRPcGVyYXRpb24+KCp0aGlz
LCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIHJlYWRPcGVyYXRpb24t
PnRpbWluZ3Muc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgcmVhZE9wZXJh
dGlvbi0+dGltaW5ncy5kaXNwYXRjaENvdW50QXRTdGFydCA9IG1fcmVhZE9wZXJhdGlvbkRpc3Bh
dGNoQ291bnQ7CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBTdG9yYWdlOjpzdG9yZShjb25zdCBS
ZWNvcmQmIHJlY29yZCwgTWFwcGVkQm9keUhhbmRsZXImJiBtYXBwZWRCb2R5SGFuZGxlciwKICAg
ICBpZiAoIW1fY2FwYWNpdHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd3JpdGVPcGVy
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhpcywgcmVjb3JkLCBX
VEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhp
cywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5wcmVwZW5kKFdURk1vdmUo
d3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFkZCBrZXkgdG8gdGhlIGZpbHRlciBhbHJlYWR5
IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRoZSBwZW5kaW5nIG9wZXJhdGlvbnMgdG9vLgpA
QCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0
eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAgQVNTRVJUKHRy
YXZlcnNlSGFuZGxlcik7CiAgICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIEZ1bmN0aW9uIGNv
cGllcy4KIAotICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUo
dHJhdmVyc2VIYW5kbGVyKSk7CisgICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IG1ha2VV
bmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRoaXMpLCB0eXBlLCBmbGFncywgV1RG
TW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKICAgICBhdXRvJiB0cmF2ZXJzZU9wZXJhdGlvbiA9ICp0
cmF2ZXJzZU9wZXJhdGlvblB0cjsKICAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQo
V1RGTW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCmluZGV4IDdiODg5MjI5OTUzOWRiMzRjNWIzOTE0ZDNiMjE0Y2U4Yjgx
NDNiOTguLjYzYWQwNDA5ZmRkMjM2ZjZlM2MyY2EzMGU4N2U0YTdjMGEyOTU5MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0b3Jh
Z2U6OlJlY29yZCBTdWJyZXNvdXJjZXNFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29u
c3QKIAogc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBTdWJyZXNvdXJjZXNFbnRy
eTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRy
eSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZXNFbnRy
eT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxTdWJyZXNvdXJj
ZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRlci5z
aXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fc3VicmVzb3VyY2VzKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuY3BwCmluZGV4IGQ4YTA1OTQwZDcxOTdlYjMyMjVhMzZiYzUxM2EyZGI2MTBkYjBjZDguLjcx
MDRkMWY3NGNkNzAxY2JjZWNmYWI1N2QyNGViZmY4ZGFlYmVkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtNzMs
OCArNzMsOCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9
Owogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAg
ICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNN
YXA+KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVx
dWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShy
ZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVz
ID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVybCwgbWFrZVVuaXF1ZTxQcmVmZXRj
aENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOwogICAg
IC8vIExpbWl0IHByZWZldGNoZXMgZm9yIHNhbWUgdXJsIHRvIDEuCiAgICAgaWYgKCFhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwpAQCAtODYsOSArODYsOSBAQCB2b2lkIFBy
ZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlcwogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0
IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCkKIHsKICAg
ICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKKyAgICAgICAgbV9zZXNz
aW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwogICAgIHJl
ZGlyZWN0UmVxdWVzdC5jbGVhclB1cnBvc2UoKTsKLSAgICBtX3Nlc3Npb25QcmVmZXRjaGVzLT5z
ZXQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RG
TW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpKSk7CisgICAg
bV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmwsIG1ha2VVbmlxdWU8UHJlZmV0Y2hD
YWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVkaXJlY3RS
ZXF1ZXN0KSkpOwogICAgIG1fc2Vzc2lvbkV4cGlyYXRpb25MaXN0LmFwcGVuZChzdGQ6Om1ha2Vf
dHVwbGUocmVxdWVzdFVybCwgV2FsbFRpbWU6Om5vdygpKSk7CiAgICAgaWYgKCFtX2V4cGlyYXRp
b25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNo
b3QoZXhwaXJhdGlvblRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMTcxMGJhZTllNWE4ODUyNmNlZmEzYjM5
YWE3ODhmYWFmMmNmYTBlLi5hMjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBQcmVmZXRjaENhY2hlIHsKICAgICB2b2lk
IGNsZWFyKCk7CiAKICAgICBzdHJ1Y3QgRW50cnkgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0KaW5kZXggMDc3ZjE2ZmE2NTA2NTJjNzg3YTZmMDMxNjA5MDkwMjY4ZWJi
OGFjMC4uY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjViYmM4ZTRhNWU5OGExNWM5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDCiAK
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBOZXR3b3JrUHJvY2Vz
czo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdApAQCAtMjc2LDcgKzI3Niw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVn
cm91bmQoKQogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXImIE5ldHdvcmtQcm9jZXNzOjpuZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyKQotICAgICAgICBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsKKyAgICAgICAgbV9uZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXI+KCk7CiAgICAgcmV0dXJuICptX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMWY4ZDRjYmZjN2E1MzM4Y2YwZWY1MjRlOWE2NzU0MzFi
NDAxN2ZjOS4uMDliMjQzYTZkN2M4MTY4ZTc0NTk5NGNkZTg3Mzc0N2I2NzU1NDgzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtODAwLDcgKzgwMCw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRh
CiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4gcHJvdGVjdGVkTmV0d29ya0RhdGFU
YXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3Jr
RGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CiAgICAgICAgIGF1dG8mIGRvd25sb2FkTWFu
YWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAg
ICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihk
b3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Np
b25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgICAgICBh
dXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFn
ZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3
b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoKmRvd25sb2FkKTsKICAgICAg
ICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5h
dGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOwpAQCAtODk1
LDcgKzg5NSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0Q1REYXRhQ29ubmVjdGlv
blNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4o
bmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFyeSAqcHJveHlEaWN0aW9uYXJ5KGNvbnN0IFVS
TCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkpCkBAIC0xMjQxLDcgKzEyNDEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrUwogewogICAgIC8vIEZJWE1FOiBVc2UgcHJvdG9jb2wu
CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+IHRhc2sgPSBbbV9zZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpIHdlYlNvY2tldFRhc2tXaXRoUmVxdWVzdDog
cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpXTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRU
YXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJT
b2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vz
c2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smIHRhc2spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1
cmwuY3BwCmluZGV4IGJlNjgwMWYzMGNkZjQ5MDAyNTRjMjI0YjliMTFmYmRmNzNmZTJlMzEuLjVi
ZTE3MDI2NmY0NWI4YmY3MmVmNTZiMTAwODdjYjU5YmI1NmRiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0
Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZp
Y2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0
IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAppbmRleCBkNDcwOWE1ZTRhYzhhMmZiNmFjZWI1NmM1
N2ViZjBiNWM3NDBkNDU2Li5lMThhNDM5MGIxODhhMjdlOTMxOGM1MjQwNDU1ZjA2NGNmNmJkNjY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nl
c3Npb25DdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtTZXNzaW9uQ3VybC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ3Vy
bCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Npb25D
dXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUo
cGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nl
c3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB+TmV0d29ya1Nl
c3Npb25DdXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCmluZGV4
IDIzNzQ1Mjg4YTA2ZDAxMTQ1OTE5NjhiNTA4NmRlYjVmNDVhYTBhYzYuLmM4Yjg2YzUxMTEzN2Uz
NzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXlt
ZW50Q29vcmRpbmF0b3IoKQogewogICAgIGlmICghbV9wYXltZW50Q29vcmRpbmF0b3IpCi0gICAg
ICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1h
a2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1fcGF5bWVudENvb3JkaW5hdG9yOwogfQogCkBAIC04Miw3ICs4Miw3IEBAIGNvbnN0IFN0cmlu
ZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclNvdXJj
ZUFwcGxpY2F0aW9uCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckF1
dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIGNvb3JkaW5h
dG9yLCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVl
c3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxl
cj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVz
c2FnZVJlY2VpdmVyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCA4N2U4NWI1NWU5MWVjNjk2YWMx
NWIxYzVmMWExMTM1MWEzZTI2YWI3Li5jOTM2NGM1ZDA0YWIzNjMxNzAyMGIyY2FlMjlmMDdlYjdh
OTViYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAgbV9kb3dubG9hZE91dHB1dFN0cmVhbSA9
IGFkb3B0R1JlZihHX09VVFBVVF9TVFJFQU0ob3V0cHV0U3RyZWFtLmxlYWtSZWYoKSkpOwogCiAg
ICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRv
d25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERv
d25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nl
c3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICBhdXRvIGRvd25s
b2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3du
bG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9hZC5nZXQoKTsKICAgICBkb3dubG9h
ZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5nRG93bmxvYWRJRCwg
V1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlv
bihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggODNjMmYy
OGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFmOS4uN2E3NDgxZjdkNDI1ZjAyMzM3YTBj
MTBhZGY5ZDY1NGY3MGVjN2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhj
b25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0
U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nl
c3Npb25Tb3VwLmNwcAppbmRleCA3MzU1MjU3YmVkYTFlNWFkY2RlNTU0ZTZiZDMzYmNlOWUyZjYw
ZDBkLi45YzhmYjhkNjkyOWQ4MTc3N2NkMTQ1MTE0ZWViZmYwZjgwMDhmNTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTmV0
d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycykKLSAgICAs
IG1fbmV0d29ya1Nlc3Npb24oc3RkOjptYWtlX3VuaXF1ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1f
c2Vzc2lvbklEKSkKKyAgICAsIG1fbmV0d29ya1Nlc3Npb24obWFrZVVuaXF1ZTxTb3VwTmV0d29y
a1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKIHsKICAgICBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIEFTU0VSVChzdG9yYWdlU2Vzc2lvbik7CkBAIC0x
MjQsNyArMTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNz
aW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU28KICAgICByZXF1ZXN0LnVwZGF0
ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpKTsKICAgICBpZiAocmVxdWVzdC51cmwoKS5w
cm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzb3VwTWVzc2FnZS5n
ZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKHdlYlNvY2tldE1lc3NhZ2VOZXR3b3Jr
RXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdlLmdldCgpLCBw
cm90b2NvbCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwg
c291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggZjllZjRiYjU0MzBiYmY3M2IwNGEwZTNi
ZWMyNDc5MjhkNTllNzE2Yi4uNDY2YjI3ODJiZjkzYzc3MDcwZjc5N2RkMzY1MjM0Y2MxZGUzZmIx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtT
ZXNzaW9uU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvblNv
dXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9u
U291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9j
ZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgfk5ldHdvcmtT
ZXNzaW9uU291cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCmluZGV4IDZk
ZGM4MWEzNmQ4NDljYmMyODM3OTNiNjE3MDY3YTI3ZTI5ZDkxZjAuLmMxOTM1MDAxNTdhMmFmYjlk
YTQ2ZTkzYWI0ZWY1NTA4NDY5NDY0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCB2b2kKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5jUmVhZCA9IHN0
ZDo6bWFrZV91bmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVmZmVyLCBjb3Vu
dCk7CisgICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkID0gbWFrZVVuaXF1ZTxBc3lu
Y1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIsIGNvdW50KTsKIH0KIAogc3RhdGljIGdz
c2l6ZSB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEZpbmlzaChHSW5wdXRTdHJlYW0q
IGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oCmluZGV4IDhmMjA1Y2UwMjk3MTNkOGJhMjEzZjE0M2JhNzFiYjExNDc1
MmRlZjUuLjIyYWJkZWM2OWRiMjQ1YTRjZjk4M2YyNDdiMzhmNzJkOTAwYTZmNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTmV0d29ya1JUQ1Byb3ZpZGVyOwogCiBjbGFzcyBMaWJXZWJSVENTb2NrZXRDbGllbnQgZmlu
YWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFVEUCwgU2VydmVyVENQLCBD
bGllbnRUQ1AsIFNlcnZlckNvbm5lY3Rpb25UQ1AgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApp
bmRleCBlNzg2NTY4ZmY1MDVhN2I4NzE3ODcwZGY1N2ZhNTdkMTVmNWQ3NzYzLi45MjY2NjhjMzhm
ZmY3MDhhZTUwMmY1OGZkNDE1Mjg4MDNlYzU1NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApA
QCAtNjQsNiArNjQsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5T
TmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZQogfQogCiBzdHJ1Y3QgUGVu
ZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdChSZWY8SVBDOjpDb25uZWN0aW9u
PiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICA6IGNvbm5lY3Rpb24oV1RGTW92ZShj
b25uZWN0aW9uKSkKICAgICAgICAgLCByZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0SWRlbnRpZmll
cikKQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2VzcwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBzZXNzaW9uSUQpOwor
ICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdSZWdpc3RyYXRpb25S
ZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRp
ZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKICAgICBhdXRvKiByZWNvcmQgPSAmcGVu
ZGluZ1JlcXVlc3QtPnJlY29yZDsKICAgICBhdXRvIGVycm9yID0gRE5TU2VydmljZVJlZ2lzdGVy
UmVjb3JkKHNlcnZpY2UsCiAgICAgICAgIHJlY29yZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAppbmRleCAz
NTNlYWM4Y2UxMWI2OTA2ZWZhZGQyZmQyNzE4Yjk3YWI1MmNkYTRkLi5hYjcwNmRjMmU5MzRhOWE3
ZWY5OTI2ODk3OTc0YmRjNzU0ZWEzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIHZvaWQgTmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQogewogICAgIG1f
aXNTdGFydGVkID0gdHJ1ZTsKICAgICBtX3J0Y1Byb3ZpZGVyLmNhbGxPblJUQ05ldHdvcmtUaHJl
YWQoW3RoaXNdKCkgewotICAgICAgICBtX21hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6
QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgbV9tYW5hZ2VyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogICAgICAg
ICBtX21hbmFnZXItPlNpZ25hbE5ldHdvcmtzQ2hhbmdlZC5jb25uZWN0KHRoaXMsICZOZXR3b3Jr
UlRDTW9uaXRvcjo6b25OZXR3b3Jrc0NoYW5nZWQpOwogICAgICAgICBtX21hbmFnZXItPlN0YXJ0
VXBkYXRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IDE2YjdmYWUxOWY2
MGJmODEzOTg0MTM1OWJkNjg3YzY0ZTQ5MzFmNDYuLmQyMmQyZGE4N2FkMTZjOTRhNjZlNjI5ZDIy
Y2JhYjIwYmU2OTNkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCBO
ZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbgogICAgIDogbV9jb25uZWN0aW9uKCZjb25uZWN0aW9uKQog
ICAgICwgbV9ydGNNb25pdG9yKCp0aGlzKQogICAgICwgbV9ydGNOZXR3b3JrVGhyZWFkKGNyZWF0
ZVRocmVhZCgpKQotICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRj
OjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCisg
ICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5n
ZXQoKSkpCiB7CiAjaWYgZGVmaW5lZChOREVCVUcpCiAgICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dU
b0RlYnVnKHJ0Yzo6TFNfTk9ORSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBOZXR3b3JrUlRD
UHJvdmlkZXI6OmNyZWF0ZVNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjoKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYWRkU29j
a2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50Pihp
ZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CisgICAgYWRkU29ja2V0
KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVy
LCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1By
b3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgUlRDTmV0
d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3Qg
bWF4UG9ydCkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6d3Jh
cE5ld1RDUENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgbmV3Qwogewog
ICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIG5ld0Nvbm5lY3Rp
b25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCA9IG1fcGVuZGluZ0luY29taW5nU29ja2V0cy50YWtlKG5l
d0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKTsKLSAgICAgICAgYWRkU29ja2V0KGlkZW50aWZp
ZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAq
dGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZl
ckNvbm5lY3Rpb25UQ1ApKTsKKyAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlx
dWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2Nr
ZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApp
bmRleCAzODM4MmIwOWQ0ZmIzYmUyNjRmODliNzc4NDFhNDFkN2MwOGNhYzA1Li5jNWVmNmQ5OWE1
NjBkZDE0ODhmMTg0OTk1YWU4YTdiMTZkOWFkMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3lu
Y1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgLy8gSGFu
ZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBxdWV1ZSBtZXNz
YWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CkBAIC0zODgsNyArMzg4LDcg
QEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFs
aWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3luY01l
c3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBz
eW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5j
b2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFt
ZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPnNldElzU3luY01l
c3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KQEAgLTc1
Niw3ICs3NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNUaHJv
dHRsaW5nKCkKICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlcyk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyID0gbWFrZVVuaXF1
ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5n
TWVzc2FnZXMpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBvc3RDb25uZWN0aW9uRGlkQ2xvc2VP
bkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29k
ZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8g
cmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVw
bHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gIldyYXBwZWRBc3luY01l
c3NhZ2VGb3JUZXN0aW5nIikgewogICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJvbm91c01vZGVJ
c0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKaW5kZXggMjBmNWVjNWIyMDJiZWMyYmRmNThmMDIwZWJkZWVmODMxNDkzMTFiZi4uYWRjNGFh
ZDk4ODE4ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDMzLDcgKzQzMyw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRP
cHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihU
OjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCks
IGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygp
KTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9w
dGlvbnMpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90CiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0g
ICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5h
bWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgp
OwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CmluZGV4IGNjYTA3MzkwYWRlYzQ0NmRlNzQ2NmNmOGUxMDEyM2MyNzkzODUzNTIuLmZkNTE3MDE3
MTJiMDYyOWQ0NzI1MmQwNDA4OTZjNjRmY2JjYmIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IERlY29kZXI6OnVud3JhcEZvclRlc3RpbmcoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHdyYXBwZWRNZXNzYWdlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5k
YXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50
cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEo
KSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhfdCogcm91bmRVcFRvQWxpZ25tZW50KGNv
bnN0IHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDg1NDUyY2RhN2UwNDVlNDQ1NWUwN2I5M2Jh
ZmNhMzViMTAyMDAxMWUuLmE3NDlhYWI4NzAwNTRjZWI2OTBlNWYxNGY0MDc1NjNmZmNkMGY5Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE4Miw3
ICsxODIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAgICAgfQogCiAgICAgdHlwZW5hbWUg
VDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVy
SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11
dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+
KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOworICAgICAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNN
ZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwog
ICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFy
Z3MuLi4pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVy
LmgKaW5kZXggM2Q2ZjM0Mjg5MmJjODgzOTA2NzhlOGMzNjQ2MzkxMTBkZTRmNTcyNi4uNzcxNDQ4
YTQ0ZDA4ODZkZDAxYmIwYzJkZTY0ZGM5YTQyODYyN2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZXNzYWdl
U2VuZGVyIHsKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6OmlzU3luYywgIk1lc3Nh
Z2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwor
ICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFt
ZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDM3MDJhY2M3ZGY1
MWJkODQ2YjkzYWY2NGJmMDcwYTRjMTAwMzkxOWYuLjg3ZGQyOGY4MDg2NzgyY2UyYTNkZjc5MGY0
YWMwZTZkNzQ5ZGFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikKICAgICAgICAgLCBtX3dhdGNoZG9n
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hk
b2c6OndhdGNoZG9nVGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAg
ICAsIG1fYXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3Nl
cnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdldCgpKSwgIkNv
bm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlvblN0YXRlOjpC
YWNrZ3JvdW5kKSkKKyAgICAgICAgLCBtX2Fzc2VydGlvbihtYWtlVW5pcXVlPFdlYktpdDo6UHJv
Y2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29ubmVjdGlv
bi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0OjpBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG1fd2F0Y2hk
b2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wg
Q29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogICAgICAg
ICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlu
cyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICBhdXRvIGVuY29k
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNvbm5lY3Rp
b24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBD
IiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShN
YWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpOwogCiAgICAg
ICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFk
ZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBib2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhlYWRlci0+
bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKIAotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9y
PEF0dGFjaG1lbnQ+IHsgfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KGJv
ZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsKICAgICB9CiAK
ICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgPT0gb3V0T2ZMaW5l
Qm9keU1lc3NhZ2VJRDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIp
CiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRl
c2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MpOwogICAgICAgICBzaXplX3QgbWVzc2FnZUJv
ZHlTaXplID0gZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuc2l6ZTsKIAotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBb
XShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpIHsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7CiAgICAgICAgICAgICB2bV9kZWFs
bG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190Pihi
dWZmZXIpLCBsZW5ndGgpOwogICAgICAgICB9LCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAg
fQpAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3Jl
YXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICB1aW50OF90
KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAgIHNpemVfdCBtZXNzYWdlQm9keVNp
emUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9yRGF0YSAtIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVj
b2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgbnVsbHB0ciwgV1RGTW92ZShhdHRh
Y2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0KIAogLy8g
VGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVt
IHRyYWlsZXIgc2l6ZS4KQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2Vp
dmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1cm47CiAKICNpZiBQTEFURk9STShN
QUMpCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVl
PEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOworICAgIGRlY29kZXItPnNldEltcG9ydGFu
Y2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKICNl
bmRpZgogCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAm
JiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXplQ29ubmVjdGlvbiIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXgu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
aW5kZXggNjNiNmJlNzI3MWU0NDU4ODM5NTA1YWE5MTVlMzg3M2Y4NTE0ZGVkZC4uNzdhZjliMjg1
ODQ1MjZiYjcwYzdmZmM4ZTMyNTZhM2JhYTEzYTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBA
QCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKCkKICAgICBpZiAobWVzc2FnZUluZm8u
aXNCb2R5T3V0T2ZMaW5lKCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBhdXRvIGRlY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5
U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgYXV0byBkZWNvZGVy
ID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUo
KSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogCiAgICAgcHJvY2Vzc0luY29taW5n
TWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIApAQCAtNDgyLDcgKzQ4Miw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJu
byA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgbV9wZW5kaW5n
T3V0cHV0TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0
cHV0TWVzc2FnZSkpOworICAgICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IG1ha2VV
bmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOwogICAgICAgICAgICAg
bV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9zb2NrZXQuZ2V0KCksIEdfSU9fT1VULCBtX2Nv
bm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4gZ2Jvb2xlYW4gewogICAgICAgICAg
ICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobV9wZW5kaW5nT3V0cHV0TWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggNjQwZjQ1Mjk5ZTNiMjY2ZTAyNjlj
Y2NjYzk0NTJiM2JhNTc5ZWZiMS4uNWFkZmQ4MmJlY2E0NmRiMDI0NDdlOGJjYjZkMzg0YzJjMDE1
NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9u
V2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFu
ZGxlcigpCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3BhdGNoIGl0LgogICAgICAgICAgICAg
VmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKDApOwotICAgICAgICAgICAgYXV0byBkZWNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3Jl
YWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgICAg
ICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29kZXI+KG1fcmVhZEJ1ZmZlci5kYXRh
KCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsK
ICAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKaW5kZXggZGQyYjY2YTdjYTE5NTkxYjZl
ZTY3YjhmMjg0ZmQyNTRhMzgyNzg1ZC4uNTY4MzcyMTNkZmJlYWViNGQ1OWU5M2MzZDQ5ZjZjN2Fj
MmY1MzRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCkBAIC00NCw2ICs0NCw3IEBAIHR5cGVk
ZWYgc3RydWN0IF9HTW9kdWxlIEdNb2R1bGU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNb2R1bGUpOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1vZHVsZShjb25zdCBTdHJp
bmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGlu
Z0NvbnRleHQubW0KaW5kZXggODIzMmRiNGViNTZlYWNiNmY4Y2U4NTU2NjRiOGI3ODJhYjY1MGE5
OC4uN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdmMDJiMDRjZjQ0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0
aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYWNo
U2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVy
SG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAKICAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewogICAgICAgICBrQ0FDb250ZXh0UG9ydE51bWJl
ciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVG
b3JQb3J0KGNvbnN0IE1hCiAjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQog
c3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6
OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4
dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0
aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKICAgICBsYXll
ckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpP
dXRPZlByb2Nlc3M7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCkBAIC04Miw3ICs4Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpCiAjaWYg
UExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVy
SG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MoKQog
ewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJI
b3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5p
cXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9s
YXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogICAgIGxh
eWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1ND
b25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZp
bHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwogICAgIHJldHVybiBsYXllckhvc3RpbmdDb250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oCmluZGV4IDk3ZTJkZjM1M2IzNjgyMzkyOWEzMWFlOTU3YTFkZGNkYzIxYzM3ZDYu
LmI5OGNhOTRiYzllZmMyM2IyZWQ4MThhNWI3ODQzMzcyMzE3ZTljNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTQ5
LDcgKzQ5LDggQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb247CiBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOwogCi1jbGFzcyBQbHVnaW5D
b250cm9sbGVyUHJveHkgOiBQbHVnaW5Db250cm9sbGVyIHsKK2NsYXNzIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eSA6IHB1YmxpYyBQbHVnaW5Db250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5Db250cm9sbGVyUHJveHkp
OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAzNjZiOTgzY2MwYmVhNTgzODYzYTdjZDYzMzNmOTQ4
ZGY3NDg0NDM1Li5jZTgyNjdkMmVlNzhjYWNiM2RkYTBhOWIzNzViZmFhZmM2ODZlZTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbgogCiB2b2lk
IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgYm9vbCYgcmVzdWx0LCBib29s
JiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCkKIHsKLSAg
ICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29u
dHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOworICAgIGF1dG8gcGx1Z2lu
Q29udHJvbGxlclByb3h5ID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJveHk+KHRoaXMs
IGNyZWF0aW9uUGFyYW1ldGVycyk7CiAKICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBsdWdp
bkNvbnRyb2xsZXJQcm94eVB0ciA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS5nZXQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IGJiZDQyM2JjZjU3MTVlNGFkNzBiZjUyZGVmOGMy
YzMwYzQxYmYwZjYuLjNlNjFiYmQwMDBlMWY0Y2RiNmMyYTM2Y2E0Zjc1ZTkwNGY4MzVjZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgVVJMIDog
cHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsKICAgICB7CiAgICAgICAgIEFT
U0VSVChiYXNlVVJMKTsKICAgICAgICAgYmFzZVVSTC0+cGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oKmJh
c2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CisgICAgICAgIGF1dG8gYWJz
b2x1dGVVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0
KCksIHJlbGF0aXZlVVJMKTsKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGFic29sdXRlVVJM
U3RyaW5nID0gYWJzb2x1dGVVUkwtPnN0cmluZygpOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFQSTo6VVJMKFdURk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykp
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBpZiAobV9wYXJzZWRVUkwpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6
OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IG1ha2VV
bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6
OlN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KaW5kZXggMjU5Mjg0N2UzNDFhM2I2Zjcy
ODc1NGJkNzg4YTY2NTNkZDIyMTViMC4uZDNmZjYyMWVjMGY0YTEwZDc1NjQ4N2NjMjE2ZjQ5NWNl
ODZkNzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90
ZU9iamVjdEludm9jYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZW1vdGVP
YmplY3RJbnZvY2F0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVPYmpl
Y3RJbnZvY2F0aW8KICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibG9ja1NpZ25hdHVyZSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWdu
YXR1cmUpKTsKKyAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxSZXBseUlu
Zm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUpKTsKICAgICB9CiAKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCA2NWRhOWVmZjAxYjQzZWE1NzEwODAyZjZj
NDZhNmQwMjAyNjU2OTNlLi40ODk5NzYyOTMyYjdhZjY5MjIxZDA1MGFmNjc0NTgzNmZjMzg3YjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgLSAoaWQpX2luaXRXaXRo
V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlJilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBh
Z2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAg
LTExOSw3ICsxMTksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQYWdlUHJveHk6KFdlYktpdDo6V2Vi
UGFnZVByb3h5JilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOworICAgIF9yZW1v
dGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTE2MCw3ICsxNjAsNyBA
QCAtICh2b2lkKV9zZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiBpbnRl
cmZhY2U6KF9XS1JlbW90ZU9iamVjdEludAogICAgICAgICBpZiAoc3RyY21wKFtOU01ldGhvZFNp
Z25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5QmxvY2tTaWduYXR1cmVdLm1ldGhv
ZFJldHVyblR5cGUsICJ2IikpCiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiUmV0dXJuIHZhbHVlIG9mIGJsb2NrIGFyZ3Vt
ZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMpIiwgc2VsX2dldE5hbWUoaW52b2NhdGlvbi5zZWxlY3Rv
cildOwogCi0gICAgICAgIHJlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCks
IHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAgICByZXBseUluZm8gPSBtYWtlVW5pcXVlPFdl
YktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRl
bnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKIAogICAgICAgICAvLyBSZXBsYWNlIHRo
ZSBibG9jayBvYmplY3Qgc28gd2Ugd29uJ3QgdHJ5IHRvIGVuY29kZSBpdC4KICAgICAgICAgaWQg
bnVsbCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAppbmRleCA3ZWQxMWU2YzE3MWUyMGJlMWU5ZWFk
YjMwN2U3MWZjNDhiZmRlODQ5Li5mYWVmZWQyZGNjODM4ZWU5NTczOTA2NWRhYzYzZjEzNTYzZjBk
M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktp
dENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiB3ZWJraXRDb250ZXh0TWVudUl0ZW1DcmVhdGUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSYKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVY
VF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBO
VUxMKSk7CiAKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihpdGVtRGF0YSk7CiAgICAgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBzdWJNZW51ID0gaXRlbURhdGEuc3Vi
bWVudSgpOwogICAgIGlmICghc3ViTWVudS5pc0VtcHR5KCkpCiAgICAgICAgIHdlYmtpdENvbnRl
eHRNZW51SXRlbVNldFN1Yk1lbnUoaXRlbSwgYWRvcHRHUmVmKHdlYmtpdENvbnRleHRNZW51Q3Jl
YXRlKHN1Yk1lbnUpKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KEd0a0FjdGlvbiogYWN0aW9uKQogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19BQ1RJT04oYWN0aW9uKSwgbnVsbHB0cik7CiAKICAg
ICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0o
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0g
ICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51
SXRlbUdsaWI+KGFjdGlvbik7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CiAKICAgICByZXR1cm4gaXRlbTsKIH0K
QEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKEdBY3Rpb24qIGFjdGlvbgogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKCF0YXJnZXQgfHwgZ192YXJpYW50X2lzX29mX3R5cGUodGFyZ2V0LCBnX2Fj
dGlvbl9nZXRfcGFyYW1ldGVyX3R5cGUoYWN0aW9uKSksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGli
PihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOworICAgIGl0ZW0tPnBy
aXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24s
IFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9
CkBAIC0xOTQsNyArMTk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uKFdlYktpdENvbnQKIAogICAgIFdlYktp
dENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKICAgICBDb250
ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxl
KGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZTsKLSAgICBpdGVtLT5w
cml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
dHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0
Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsKKyAgICBpdGVtLT5wcml2LT5tZW51
SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29u
dGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0Q29udGV4dE1lbnVBY3Rp
b25HZXRMYWJlbChhY3Rpb24pKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMjE2LDcgKzIx
Niw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsCiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlw
ZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hl
Y2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENv
bnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0
aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBA
IC0yMzksNyArMjM5LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09O
VEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVN
LCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbUJhc2VB
cHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0ZW0tPnByaXYt
Pm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKICAgICBpdGVtLT5wcml2LT5zdWJNZW51ID0gc3VibWVudTsKICAgICB3ZWJraXRDb250
ZXh0TWVudVNldFBhcmVudEl0ZW0oc3VibWVudSwgaXRlbSk7CiAKQEAgLTI1Niw3ICsyNTYsNyBA
QCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0
aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcih2b2lkKQogewogICAgIFdlYktpdENvbnRl
eHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2
LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oU2Vw
YXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKKyAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
U2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKIAog
ICAgIHJldHVybiBpdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggNWVkMTQzYTk5ODU5
MDQ5NmMzMzc2YTU2OTg4MTE1M2E2YTAyYjI4Yy4uZjMzY2FiMzA1ZmVlMTI3NGZhYTdiMjE4Mzhl
OWJiN2VmNzZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC03Miw2ICs3Miw3IEBAIGNs
YXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVNlbmRlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5PgogICAgICwgcHVibGljIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBD
bGllbnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggN2FkMzMzMTQ1MzkxODg4OWZkM2I5ODk2Mzg2
YThiZWQxZjUxOWExNC4uMzkxNGE0YzIwMTRhOWE1NGE2MzQ4OGE0ZTc0MzgxOWM2YThkYjNhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtNzksNyArNzksNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFTU0VSVCh2aWV3Q29udHJvbGxlcik7
CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNl
bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmlld0Nv
bnRyb2xsZXIpOworICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0
aW9uUHJlc2VudGVyID0gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3
Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNTRVJUKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+
bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0
V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6dmlld0Nv
bnRyb2xsZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRleCA4NmU3NDRjMTA4ZGY0Y2JjZjVk
MDQ3NjA5YWNmOTZjNjgyM2Q2YjE2Li40ZjgzNzAyNGVlNWYzNGZmYTBlNjliYWY3YjNiZmM4ODFh
NTI4MDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtNTUsNiArNTUsNyBAQCBlbnVtIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gOiB1aW50OF90OwogdXNpbmcg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KT47CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0aW9uTWFuYWdlcik7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKE5ldHdvcmtQcm9jZXNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0KaW5kZXggNTZhNzgzYTBiMjNiMjZhMjBjNWI4ZmE0YTU5ZjE1N2E0YzAzN2JiNy4u
MmQ1ZDFhZmMwODI3YTQxYTBiZDgzYmJhYTgwZjc4ZjYxNGY1YmQ3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMzgs
NiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25J
bXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29uc3QgY2hhciog
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBPcHRpb25hbDxwaWRfdD4gcGlkID0g
V1RGOjpudWxsb3B0KQogICAgIHsKQEAgLTE2MCw3ICsxNjEsNyBAQCBhdXRvIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8
SGFuZGxlPgogICAgICAgICByZXR1cm4ge3sgfX07CiAKICAgICBIYW5kbGUgaGFuZGxlOwotICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRl
bnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRh
dGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uID0gbWFrZVVuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7
CiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgKaW5kZXggYzkzNGU5MDdm
ODk3ZjM3ZmUwZTA4ZjkwZjZmMTllMzQzZjIwZjVlZi4uMzlhZTBkNzdjZDBmYTAxMTE3MWYxOTNh
ZDhiN2MwZjM4MTE5MTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UgOiBwdWJsaWMgV2ViQ29y
ZTo6Q0FSaW5nQnVmZmVyU3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggMThkYzJmYjhlZDEzZDE1MzQxMmVhMzBlMjkx
MTE3OGVhY2VmYzVhZS4uNzA0MzBmNDQzMTJjOGE1NjJjZTE1ZmM3MzJmNjlkMzg3NmZlOWMyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMTI1LDcgKzEy
NSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciYgdGV4bWFwTGF5ZXIoTmljb3NpYTo6Q29tcG9zaXRp
b25MYXllciYgY29tcG9zaXRpb25MYXllcikKIHsKICAgICBhdXRvJiBjb21wb3NpdGlvblN0YXRl
ID0gY29tcG9zaXRpb25MYXllckltcGwoY29tcG9zaXRpb25MYXllcikuY29tcG9zaXRpb25TdGF0
ZSgpOwogICAgIGlmICghY29tcG9zaXRpb25TdGF0ZS5sYXllcikgewotICAgICAgICBjb21wb3Np
dGlvblN0YXRlLmxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7
CisgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBw
ZXJMYXllcj4oKTsKICAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXllci0+c2V0SUQoY29tcG9z
aXRpb25MYXllci5pZCgpKTsKICAgICB9CiAgICAgcmV0dXJuICpjb21wb3NpdGlvblN0YXRlLmxh
eWVyOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpl
bnN1cmVSb290TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9yb290TGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4o
KTsKKyAgICBtX3Jvb3RMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOwog
ICAgIG1fcm9vdExheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKICAgICBtX3Jvb3RMYXll
ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0QW5jaG9yUG9p
bnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9z
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGNkM2U1N2M2YmNiOWQ4
ZGMxZmY5OWNhZDU5YzRlMTNmZjY2MDNhNmIuLmJjYjIzNTk3NWIxMzNkMmUyNzY3NmQyODNmZTg5
MTM4MWEwZDVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtNTMsNyArNTMsNyBAQCBSZWY8VGhyZWFkZWRD
b21wb3NpdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgVGhy
ZWFkZWREaXNwbAogVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50
JiBjbGllbnQsIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpDbGllbnQmIGRpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWxlRmFjdG9yLCBUZXh0dXJlTWFwcGVyOjpQ
YWludEZsYWdzIHBhaW50RmxhZ3MpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3Bh
aW50RmxhZ3MocGFpbnRGbGFncykKLSAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6bWFr
ZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUoKTsg
fSkpCisgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChtYWtlVW5pcXVlPENvbXBvc2l0aW5nUnVu
TG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQogI2lmIFVTRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgLCBtX2Rpc3BsYXlSZWZyZXNoTW9u
aXRvcihUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgZGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCmluZGV4IDFhMDU0
NzUwN2VjMWMxYTgxMjQ3MmJiN2ViZDlmYTBkNGFkMTNhNDguLjA3ZThiYmM5YjVjOWMzYzZjOWQ4
ZDZjM2I5NDVlNTM5MzI3Yjg3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xh
c3MgTlBWYXJpYW50RGF0YTsKIGNsYXNzIFBsdWdpbjsKIAogY2xhc3MgTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAppbmRleCA2
MWUxZjk0MDI1MjM4NWRiODA1ZWMxMjJkZmYxYzllNGYxYjcyNTYzLi5kNGI1MjRjODI5ZWM2Njcy
MWRmMWE3MGQyZDUxM2FlNGViM2YzZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE5Q
UmVtb3RlT2JqZWN0TWFwOjpucE9iamVjdFByb3h5RGVzdHJveWVkKE5QT2JqZWN0KiBucE9iamVj
dCkKIHVpbnQ2NF90IE5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KE5QT2JqZWN0
KiBucE9iamVjdCwgUGx1Z2luKiBwbHVnaW4pCiB7CiAgICAgdWludDY0X3QgbnBPYmplY3RJRCA9
IGdlbmVyYXRlTlBPYmplY3RJRCgpOwotICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQobnBP
YmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcj4odGhpcywg
cGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCkucmVsZWFzZSgpKTsKKyAgICBtX3JlZ2lzdGVy
ZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIG1ha2VVbmlxdWU8TlBPYmplY3RNZXNzYWdlUmVj
ZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7CiAK
ICAgICByZXR1cm4gbnBPYmplY3RJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5k
ZXggN2IwMmI1ZTEyZjMyYzcyZDM4ZjUyMDQ1YmI2ZDZhMjNiNjJhZTJlMS4uMjYxZDdhODk2OTMw
NmE4OTI1YzRhYjM2ZTQ3OTQ3YjM5NmMxMjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5j
cHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgYm9vbCBtb2R1bGVNaXhlc0d0a1N5bWJvbHMo
TW9kdWxlKiBtb2R1bGUpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQog
ewotICAgIG1fbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7
CisgICAgbV9tb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obV9wbHVnaW5QYXRoKTsKICAgICBp
ZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCBlYTJiZTkzMDhjYmJlNmRkN2ViOGNmMmM1ODhj
OGZmNjE5ZWE5OTNjLi45NTUxM2Y0Nzk4MmZkNjdlZTVmOThkZDc5OTZjODU5OGYxZjQ2M2YyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApAQCAtNTEsNiArNTEsNyBAQCBjbGFz
cyBFbmNvZGVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
bnVtIExheWVyQ2hhbmdlIHsKICAgICAgICAgTmFtZUNoYW5nZWQgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMSwKQEAgLTk0LDYgKzk1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMg
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVy
Q3JlYXRpb25Qcm9wZXJ0aWVzKCk7CiAKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CkBAIC0xMDksNiArMTExLDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0aWVzIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllclByb3BlcnRpZXMo
KTsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGllcyYgb3RoZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggMWYyZGU0ZDAzN2Vh
M2U4MzAyODdhYjk4Y2IyYThmMjFjNGVjZWEyZS4uMGQyMjdmZmMxZDljNTU1NmFhZDkyZTdlZTE1
NzY1ZTE2YjM0NDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAt
MTUyLDEzICsxNTIsMTMgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVy
dGllczo6TGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGkKICAgICAvLyBGSVhNRTog
TGF5ZXJQcm9wZXJ0aWVzIHNob3VsZG4ndCBiZSBjb3B5YWJsZTsgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpjbG9uZSBzaG91bGQgY29weSB0aGUgcmVsZXZhbnQgcHJvcGVydGllcy4KIAogICAgIGlm
IChvdGhlci50cmFuc2Zvcm0pCi0gICAgICAgIHRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOworICAgICAg
ICB0cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigq
b3RoZXIudHJhbnNmb3JtKTsKIAogICAgIGlmIChvdGhlci5zdWJsYXllclRyYW5zZm9ybSkKLSAg
ICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOworICAgICAgICBzdWJs
YXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+
KCpvdGhlci5zdWJsYXllclRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuZmlsdGVycykKLSAg
ICAgICAgZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
cz4oKm90aGVyLmZpbHRlcnMpOworICAgICAgICBmaWx0ZXJzID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKQEAgLTM1NCw3ICszNTQsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJlc3VsdC50cmFuc2Zvcm0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOworICAg
ICAgICByZXN1bHQudHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9w
ZXJ0aWVzICYgU3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKSB7CkBAIC0zNjIsNyArMzYyLDcgQEAg
Ym9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5z
Zm9ybSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0LnN1Ymxh
eWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNmb3JtID0gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9
CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgSGlkZGVuQ2hhbmdlZCkgewpA
QCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyb3VuZGVkUmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIAotICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgICAgICByZXN1
bHQuc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVj
dD4ocm91bmRlZFJlY3QpOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRp
ZXMgJiBTaGFwZVBhdGhDaGFuZ2VkKSB7CkBAIC00NzEsNyArNDcxLDcgQEAgYm9vbCBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0Zyb250QnVmZmVyKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGhhc0Zyb250QnVmZmVyKSB7
Ci0gICAgICAgICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU+KG51bGxwdHIpOworICAgICAgICAgICAgYXV0byBiYWNraW5nU3Rv
cmUgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPihudWxscHRyKTsKICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmJhY2tpbmdTdG9yZSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCkBAIC00ODYsNyArNDg2LDcgQEAgYm9vbCBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLAogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRp
ZXMgJiBGaWx0ZXJzQ2hhbmdlZCkgewotICAgICAgICBhdXRvIGZpbHRlcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7CisgICAgICAgIGF1dG8gZmlsdGVy
cyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKTsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSgqZmlsdGVycykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHJlc3VsdC5maWx0ZXJzID0gV1RGTW92ZShmaWx0ZXJzKTsKQEAgLTYwMiw3ICs2MDIs
NyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBSZW1vdGVMYXllclRyZWVUcgogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxMYXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlx
dWU8TGF5ZXJQcm9wZXJ0aWVzPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJQcm9w
ZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPExheWVyUHJvcGVydGllcz4oKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqbGF5ZXJQcm9wZXJ0aWVzKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IDk3OGM0YmJlZDdiNWNkOTFjYWFlYzE1NGJjOGJh
MTRiYWI3NTM0NjEuLmU4MjZhMzBiMTJlMjRlY2Y0MzBjNjliNzZiMWE2ZjI4ZjViYjk4ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5j
cHAKQEAgLTUyMiw3ICs1MjIsNyBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJh
bnNhY3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNOZXdSb290Tm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVU
cmVlPigpOworICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdT
dGF0ZVRyZWU+KCk7CiAKICAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVzOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzQ2hhbmdlZFByb3BlcnRpZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IGM3MzQ3Yzc5
ZTY2OTM4Mzc4NWQwNWQyMjllNDdiNzQ3YzFmMGNhNTUuLmIyY2Q0ODQ2Njc3Y2U5N2RmYWMyODU4
NDkwYzFlYTQzNGY5NjI5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJv
L1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHQoKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlID0gY3JlYXRlQ2Fpcm9T
dXJmYWNlKCk7CiAgICAgUmVmUHRyPGNhaXJvX3Q+IGJpdG1hcENvbnRleHQgPSBhZG9wdFJlZihj
YWlyb19jcmVhdGUoaW1hZ2UuZ2V0KCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShi
aXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4
dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRt
YXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAK
aW5kZXggOTJmMTA2MmIyOTBmNzc1ZGI1YWU3ZWQxOTUyYTljYTg1OGFiMzEyMi4uMDE2YWJiZDk5
M2UxOGE0NWMwMWE3ZjA0OTdkY2MzMWE1M2I0MzcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCkKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwg
MCwgbV9zaXplLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShiaXRtYXBDb250ZXh0
LmdldCgpLCAxLCAtMSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBo
aWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBv
aW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKaW5kZXggNjBm
OGYzY2I3MzI4OWI2YjBkMmY0YzM1MTQ2ZjFjZmVkNDAzNGE4MC4uMTAwMWVlM2U1MjkyZWRjYjUz
NmY4MjMzMDNjMmM3NGMyYjFlOTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCkKIHsKICAgICBtX2JpdG1hcCA9IGNyZWF0ZURpcmVjdDJEU3VyZmFjZSgpOwog
ICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gYml0bWFwQ29udGV4dCA9IERpcmVjdDJEOjpj
cmVhdGVSZW5kZXJUYXJnZXRGcm9tV0lDQml0bWFwKG1fYml0bWFwLmdldCgpKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6
OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYg
ZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaAppbmRleCAyOTk1ODEwOTVkZDFkMWIx
NWFmZWFiYjRkYWNiZWQwNWQyYmRkMTE0Li41NDVhN2JlNGQ0ODE5NzEzMjhkMWMzZjc5ZDI3MWVk
OWEyMWY4MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0
b21hdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRv
bWF0aW9uQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQXV0b21hdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXV0b21hdGlvbkNsaWVudCgp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21h
dGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IDI4ZmFmNjg3MTlhOWQ3MjhkNTFiNmM3NzJkODRl
MTdiNjQ5MDk3Y2EuLjJhZTJhNTAzNGMzYTQxNzFjY2Y0NzdiOTc4NWI3M2E2ZjI0ZGI4MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gQXV0b21hdGlvblNlc3Npb25C
cm93c2luZ0NvbnRleHRPcHRpb25zIDogdWludDE2X3QgewogfTsKIAogY2xhc3MgQXV0b21hdGlv
blNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGVudW0gY2xhc3MgSmF2YVNjcmlwdERpYWxvZ1R5cGUgewogICAgICAgICBBbGVydCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgK
aW5kZXggYWYxMDljMWRmNjcwMGRjMjNlMmUzMzFiMGI1MGVmYmNmZjQyODY2Ny4uODE2ZjcxZTEy
NjcwY2IzZDY1YjFlNjMyODAzYTZiNDBlZjdkYmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAg
Y2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIENvbnRleHRNZW51
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5Db250ZXh0TWVudUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKaW5k
ZXggMGY4Y2FiOTczMjlmMDk1N2YzMmI0N2MyNzc4MWQxZTc4NmZhMTQ3ZC4uOGI0NGEzZjQ1NmM1
MzJhZDMzODA2ZWY2OWI0N2VhZDA5NDFkZjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApA
QCAtMzgsNiArMzgsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgQVBJIHsK
IAogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAppbmRleCA5MmIyZDY3NWRmY2EyY2FmZGEyMTFi
M2Y3MWM1Nzk4YWZkNDVkNjJhLi5iNGUyYWRlNzI5ZWE2NmQ4ZGRhOGRkNTAyMTE4YWU0YWJkYjIx
ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgQVBJIHsK
IGNsYXNzIERpY3Rpb25hcnk7CiAKIGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDAyMzc2ZTFlMTEwZDQ3NmViMmI5MTg1ZTRlMmZj
ZDhkNmUxMzMyZTEuLmIyZWFjYzliODMyNTk4YjE3YTk5ZGJkOWQ2N2VmMjRlNDczYWVkMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBA
IC00Niw2ICs0Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CiBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRG93bmxvYWRDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCmluZGV4IGYz
MTIzYWYxOTUxNjVhNjY5ZDY2NjgzMThiODEyZTkzMzY1ZTZkYzIuLjZkMWUzYjIxMWZlMGRkOTVh
OTQ4NTA1ODQxN2RiNGRlMDgyNDBkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZpbmRDbGllbnQuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZENsaWVudCgpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCmlu
ZGV4IGM2ZjQ1NzM0MmQxMTE5MDFkY2E2ZDNjMzA5MDMzN2ZlZTdhMWZlYzIuLmZhZTFkY2QzY2Q2
ODgzNTA3ZWZiZTNkOTVkNWQ2ZjcyYTAzNjlkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5kTWF0Y2hlc0Ns
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+RmluZE1hdGNoZXNDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElGb3JtQ2xpZW50LmgKaW5kZXggNWIwYzZjY2EyNGVlZmMxYTk1ODE5MWUwZTI3OTRhNDdi
NGY1NGU3Yy4uZjBjYTA2MDExMTk4MDJlZDM2OWI0ZDA3OGQ4M2M4NjJhNTE2MTJkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oCkBAIC0zNyw2ICszNyw3
IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBGb3JtQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Gb3Jt
Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElGdWxsc2NyZWVuQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVs
bHNjcmVlbkNsaWVudC5oCmluZGV4IDEzNzU1MjljZGEyNWYyNWNiYjE3OWJkYzg5ODkxNzFjODll
ZTg4NTcuLjg5NzRjZDEzMzk0Nzc1MDI3M2Y0NTBmMGU4Mzk2YzBlNmIxMzIwMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaApAQCAt
MzIsNiArMzIsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgRnVsbHNjcmVlbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgQVBJVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDUyNjZi
YzJjYTU0Y2YwOTljMjM4Y2FjYzYyMTQ0Yzk3OTlhMDk3OTcuLjdjNmY1NjI5Y2I2MGU1M2JjN2I4
NWFhODg4OWY3MmU2OGQ3YTRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBHZW9s
b2NhdGlvblByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvblByb3ZpZGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggOTgxYTk4
NWJiZGU1ZjFjYjY1Zjk2Y2JiMjEzOWZiY2YxOWQ3ZGNlNS4uZTEyMmVlM2VkYjFjNDIxOWQxZDg0
MTk5MzIxYTgwMDNkNTJjODIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEhUVFBD
b29raWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCiAKICAgICBB
U1NFUlQoIW1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHkpOwogCi0gICAgbV9jb29raWVNYW5h
Z2VyUHJveHlPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclBy
b3h5T2JzZXJ2ZXI+KCp0aGlzKTsKKyAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0g
bWFrZVVuaXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRoaXMpOwogCiAg
ICAgYXV0byogcG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5wcm9jZXNzUG9vbEZvckNvb2tpZVN0
b3JhZ2VPcGVyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SGlzdG9yeUNsaWVudC5oCmluZGV4IGZjZjQ2MDYxZjZiZmE2ZGNiNzYwZTEyYzY2MzNiNmI0NWYx
NTZkZDQuLjExODRhYTQzMmMzYjlmZmNiMTVkYTVmODI4ZWY0YWM0ZjFhZGIxZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaApAQCAtMzUsNiAr
MzUsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkgewog
CiBjbGFzcyBIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5IaXN0b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaAppbmRleCBlYTll
YmE1MGUxZWZlOGYwMzIxYzRkZmUzYTQ0NmYwZGNiYjVkOGM5Li5iZTQzYWVlYzU0ZmYyZDRhYmI1
YTI4ZmYzNjMxNDVjNDkwYzdlODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIFdl
Ykljb25EYXRhYmFzZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJY29uRGF0YWJhc2VDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkljb25EYXRhYmFzZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4IDZmOWU3YWY5Yzk4MDkyMzNiNmE1
NjVlYzNlMzgwYmUwYWFjZDU2N2UuLjJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2
YjBkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9h
ZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9h
ZGluZ0NsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiBuYW1l
c3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25Mb2FkaW5nQ2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVk
QnVuZGxlQ2xpZW50LmgKaW5kZXggYzM1ZTdiM2FlNDkzZDlhYzYzY2IzYTRiNTgxZmUzMmZjYjQw
YWNlOC4uOWQ0MzQ4OWEyZDYyNTdjYjBjYWY5MjJiM2ZiMDkzMjk1Y2U5YmI5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50
LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCmluZGV4IGNiYjllMGE5NzE0NWJkMTdkZGVm
OGUwYmIxNGFmOGMzNzZkZmIzODguLmRiNWQ5MGMzMWY5Mjc2OWQzMDNhMDFhZDc4YmRhN2ZiZDFh
NGQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBX
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIExlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCgpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5kZXggMzQ4ZDZi
Zjc3MjkyNzJlOGYyYWJhZWMzNzU1YzIwZGU1NDJkNjQ1ZC4uYjJlYTQxZDllMmYyZTgxZTJjOWVi
M2I4Nzc5MWZjM2VmOGMzZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMb2FkZXJDbGllbnQuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uOwogY2xh
c3MgT2JqZWN0OwogCiBjbGFzcyBMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRlckNsaWVudCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpP
YmplY3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oCmluZGV4IGE2ZTAxOWNjNDUxODYzYTQxYWNmYzhiZWE3YmYzMDI4OTZiMWJi
NzMuLmNkMjJhMjY3NjQ2OGQxODIzNGE2MDg0MmZlOWQ5MTY3MWIyMGE4N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNzMs
NiArNzMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uUmVzcG9uc2U7CiBjbGFzcyBPYmplY3Q7CiAKIGNs
YXNzIE5hdmlnYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfk5hdmlnYXRpb25DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCmluZGV4IDVlYmU0NDA3NDJhNzY1
NDFiMWQ5Y2NmMjk5NWM5YTk1ZmU4NGQ1YWQuLjZhZThlNzUyMDVmZmZjODY1MmY0ZjliODNiYjNk
ZTMwZWU2Y2ZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
b2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5
Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7
CiAKIGNsYXNzIFBvbGljeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UG9saWN5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggZDlkZDBkYjQ2NjM3NzIyYjYwMmIyMGRk
ZGY2NzM4MTM1ZjY0NmY2Mi4uNzcyZGE2ZTVhODY5NzdlYzhhZTJkYzA3NTQyZDhmY2YxZTE0OTYx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTcxLDYg
KzcxLDcgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogCiBjbGFzcyBVSUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+VUlDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggYWZjZTcwYjYyN2ZlZWY3YjViZjg4Mjg5YWQ4
MjJmMTljMTljZGI2Zi4uM2QwMTYxMWMwMjlmOTNmNWNlM2U1ZWIzZTMwNjQ3NDg4OWFiOGYzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC05NSw3
ICs5NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiB3a0NsCiAKIHZvaWQgV0tDb250ZXh0U2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0lt
cGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7
CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTU2
LDcgKzE1Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsCiAgICAgfTsKIAogICAgIFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sID0gKldlYktpdDo6dG9JbXBsKGNvbnRleHRS
ZWYpOwotICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxI
aXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGll
bnQobWFrZVVuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOwogCiAgICAgYm9vbCBhZGRz
VmlzaXRlZExpbmtzID0gcHJvY2Vzc1Bvb2wuaGlzdG9yeUNsaWVudCgpLmFkZHNWaXNpdGVkTGlu
a3MoKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGll
bnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkCiAgICAg
ICAgIH0KICAgICB9OwogCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25s
b2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlx
dWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0Q29u
bmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29u
bmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDExYjgzNGI0ZWUy
YTlhNjg3NjI2YzczMmJmNThhNDg4MjNmNjMzNGEuLjg4OGI3NWJjN2NlYzg5ZDE2ZTA3ZjYxN2U3
YmIyY2UyOTc5ZmE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQg
V0tHZW9sb2NhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5h
Z2VyU2V0UHJvdmlkZXIoV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2Vy
UmVmLCBjb25zdCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAg
IHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5p
cXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAgICB0b0ltcGwoZ2Vv
bG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJHZW9sb2NhdGlv
blByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0
aW9uTWFuYWdlclJlZiwgV0tHZW9sb2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAKaW5kZXggYjIyM2Q2Zjg3YmZhNWU5NmUzZTUwZGEyZGQ3OGZmMGQyZGQ0MTZjZS4u
NzY5MjM5OTBhYjViOWVhMjEzODVmMWQzNTY5ZThiNTBhYTdmNjVlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFR5cGVJ
RCgpCiAKIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXJCYXNl
KiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOworICAg
IHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRp
b25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdl
clByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFu
YWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAppbmRleCA0N2VjNzI2YjBjZTQ0MDU3ZjAwMmI1NDBiZWE3NjhlNDNi
MTBhOGQ0Li42MWE2OWIxZjNhNmRhNzQ5NmFkNDcyNjk3MGI4NWYyYzkxMTgxM2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTk0OCw3ICs5NDgsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlQ29udGV4dE1lbnVDbAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVu
dUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRleHRNZW51
Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpA
QCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsCiAKIHZvaWQgV0tQYWdl
U2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChtYWtlVW5pcXVlPFdlYlBhZ2VEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdl
RmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2Uq
IHdrQ2xpZW50KQpAQCAtOTk1LDcgKzk5NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAg
ICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxGaW5kQ2xpZW50Pih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTEwMzgsNyAr
MTAzOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAgICAgICAgIH0KICAgICB9OwogCi0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEZpbmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQp
KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQp
CkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRCdQogCiB2b2lkIFdL
UGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGb3Jt
Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0Ns
aWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTE5OSw3
ICsxMTk5LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogCiAgICAgV2ViUGFnZVByb3h5KiB3
ZWJQYWdlUHJveHkgPSB0b0ltcGwocGFnZVJlZik7CiAKLSAgICBhdXRvIGxvYWRlckNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyQ2xpZW50Pih3a0NsaWVudCk7CisgICAgYXV0byBsb2Fk
ZXJDbGllbnQgPSBtYWtlVW5pcXVlPExvYWRlckNsaWVudD4od2tDbGllbnQpOwogCiAgICAgLy8g
SXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQgdHJhbnNpdGlvbiBh
bGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVhZCBvZgogICAgIC8vIGRpZEZpcnN0
TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZS4g
SW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRQb2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDbGllbnQ+KHdr
Q2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQobWFrZVVuaXF1
ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MjA3NSw3ICsyMDc1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgfQogICAg
IH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
VUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudCht
YWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VO
YXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9u
Q2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0yMjkzLDE2NCArMjI5MywxNjYgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
TmF2aWdhdGlvbkNsaWUKICAgICB3ZWJQYWdlUHJveHktPnNldE5hdmlnYXRpb25DbGllbnQobWFr
ZVVuaXF1ZVJlZjxOYXZpZ2F0aW9uQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCi12b2lkIFdLUGFn
ZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNl
KiBjbGllbnQpCi17Ci0gICAgY2xhc3MgU3RhdGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpD
bGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2Vy
dmVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdL
UGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0
aWFsaXplKGNsaWVudCk7Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHdp
bGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CitjbGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBB
UEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6
T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4
cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQor
ICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOworICAgIH0KK3ByaXZhdGU6CisgICAg
dm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICgh
bV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlz
TG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBk
aWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0K
IAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVRp
dGxlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRD
aGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZENoYW5nZVRpdGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAot
ICAgICAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTCht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdl
QWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZUFjdGl2ZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2ls
bENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJMKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVV
UkwoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VBY3Rp
dmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUFj
dGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VI
YXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5
U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAg
ICB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVu
dCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFu
Z2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5
U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAg
ICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VF
c3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVz
cyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENo
YW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVz
cyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFu
Z2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2soKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VD
YW5Hb0JhY2spCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjaykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNhbkdvQmFjaygpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29C
YWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENo
YW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAg
dm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0Zvcndh
cmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENo
YW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNhbkdvRm9yd2Fy
ZCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hh
bmdlQ2FuR29Gb3J3YXJkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VO
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0
d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVz
dHNJblByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxs
Q2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jl
c3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VO
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9n
cmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdp
bGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5m
byhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hh
bmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRlSW5mbygp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
Q2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8p
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmlj
YXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IHdpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hh
bmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNS
ZXNwb25zaXZlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hh
bmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
IH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNw
b25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
V2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9j
bGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN3YXBXZWJQcm9j
ZXNzZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlk
U3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0g
ICAgfTsKKyAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgfQorfTsKKwordm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQo
V0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQorewogICAgIGlm
IChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVy
KHN0ZDo6bWFrZV91bmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOworICAgICAgICB0b0ltcGwo
cGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRlQ2xpZW50Pihj
bGllbnQpKTsKICAgICBlbHNlCiAgICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0
ZU9ic2VydmVyKG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQppbmRleCBmNzYzYWY2MDAzZGE0NjY3MzYz
MWU5MWVhODFiODNiNWM5N2EwODdkLi4zNWVmOTIyMTU0ZTE5NjMwMGU0YjZlZTc1ZDRjOTgxNzg1
YmMzZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQ
YWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtNTIsNyArNTIsNyBAQCAtIChpZClpbml0V2l0aFBhZ2U6
KFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJilwYWdlCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBfcGFnZSA9IFdURk1vdmUocGFnZSk7Ci0gICAgX29ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsKKyAg
ICBfb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihz
ZWxmLCBAIlVSTCIpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKl9v
YnNlcnZlcik7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0Mvd3BlL1dLVmlldy5jcHAKaW5kZXggNzhiYmEzOTY3YjYxOTdjMGU4YTdjMjNhYzNkYThj
ZDEzMmU3YzRiZS4uOTY0MDZkMGFhZmJjMzU1NTYwYjVkMzE5N2EwMGMyNWY1NzU5YTNmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKQEAgLTY4LDUg
KzY4LDUgQEAgdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3LCBjb25zdCBX
S1ZpZXdDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBs
KHZpZXcpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsK
KyAgICB0b0ltcGwodmlldyktPnNldENsaWVudChtYWtlVW5pcXVlPFZpZXdDbGllbnQ+KGNsaWVu
dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggMjY1NTU0ZjNkN2Yy
ZDdhZDI5NmU5ZjNmOWZhMTEzODhiNzhmZDU2NC4uNDk2Nzc4OGExMDU3ZmE4ODJhMGEwMWM4ZGJm
NTAwMmU5MjI2ZWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MDIs
NyArNjAyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFBhZ2VSZWY6KFdLUGFnZVJlZilw
YWdlUmVmCiAKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgX3Bh
Z2VMb2FkU3RhdGVPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0
YXRlT2JzZXJ2ZXI+KHNlbGYpOworICAgIF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmKTsKICAgICBfcGFnZS0+cGFn
ZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfcGFnZUxvYWRTdGF0ZU9ic2VydmVyKTsKIAogICAg
IEFTU0VSVCghYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcCgpLmNvbnRhaW5zKF9wYWdlLmdl
dCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW0KaW5kZXggMTM3MmNhNDEwNmM3NmUxZDYyMzVkNjE0YWQ1YzFlNmE1
NmVhMDVhMS4uODFkMzcwM2IwZWVhODJlNWU2YzYyZjMyMjJhYzRlNjgxOWY2YjNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVT
dG9yZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIC0gKHZvaWQpYWRkT2JzZXJ2ZXI6KGlkPFdLSFRU
UENvb2tpZVN0b3JlT2JzZXJ2ZXI+KW9ic2VydmVyCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIpOworICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2
ZXI+KG9ic2VydmVyKTsKICAgICBfY29va2llU3RvcmUtPnJlZ2lzdGVyT2JzZXJ2ZXIoKnJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGJhY2U1YWM3ZWMwMGIxODk4YWQyZGY3
MmNiMWIxOTQ0NjdkY2VjOWQuLmViYWM1NjhlM2RkYjY4NzBmODViMDE1MDhlYzIwZmFhYjdmMjA0
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tCkBAIC0zNzMsNyArMzczLDcgQEAgLSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
KV9kb3dubG9hZERlbGVnYXRlCiAtICh2b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dL
RG93bmxvYWREZWxlZ2F0ZT4pZG93bmxvYWREZWxlZ2F0ZQogewogICAgIF9kb3dubG9hZERlbGVn
YXRlID0gZG93bmxvYWREZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxl
Z2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXQ6OkRvd25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CiB9CiAKIC0gKGlkIDxf
V0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKQEAgLTM4NCw3ICszODQs
NyBAQCAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCiAt
ICh2b2lkKV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+
KWF1dG9tYXRpb25EZWxlZ2F0ZQogewogICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUgPSBhdXRvbWF0
aW9uRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVs
ZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1
ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxlZ2F0ZSkpOwog
fQogCiAtICh2b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpp
bmRleCA4YjZkZjI0Zjg5NTJkODRmNjA3NTQ0YzZhMzFhMmRkMWI4YWEzNTVkLi5hMDBiMjAzY2M5
MDU5MzAxYmVjYzQ2MWQ2MWI0NjczMmI4NTYxMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
CkBAIC0xMTgsNiArMTE4LDcgQEAgLSAodm9pZClyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzCiB9
CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyICpjb250cm9sbGVyLCBpZCA8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcj4gaGFuZGxlciwgTlNTdHJpbmcgKm5hbWUpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNv
bnRyb2xsZXIpCkBAIC0xNDUsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAogLSAodm9pZClhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIGF1dG8gaGFuZGxlciA9IFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBu
YW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBh
dXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFr
ZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdl
SGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CiAgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMu
IiwgbmFtZV07CiB9CkBAIC0yMjksNyArMjMwLDcgQEAgLSAodm9pZClfcmVtb3ZlQWxsVXNlclN0
eWxlU2hlZXRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFcK
IAogLSAodm9pZClfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUgdXNlckNv
bnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQKIHsKLSAg
ICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
c3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3Jp
cHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNv
bnRlbnRXb3JsZCk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4o
c2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRXb3Js
ZC0+X3VzZXJDb250ZW50V29ybGQpOwogICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJB
dHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4g
b25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDM5MWExOTkyZTM1MzJkYmU1ZjIxZGI2
OTFkZDgxMDhhYWUyYTY2Yy4uMDhmNDJlYzhiMTNiZjcwYmQyYjZiMzdiYzdkODE1NjgyM2Q2YzZk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC03NTcsNyArNzU3LDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
OihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmll
d0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJhdGlvbi5jb3B5UmVm
KCkpOworICAgIF9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBz
ZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsKICAgICBfcGFn
ZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNldEF1dG9tYXRpY2FsbHlBZGp1c3Rz
Q29udGVudEluc2V0cyh0cnVlKTsKQEAgLTc2OSwxNCArNzY5LDE0IEBAIC0gKHZvaWQpX2luaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3Vy
YXRpb24KIAogICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50
KGNvbmZpZ3VyYXRpb24uX2FwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpOwogCi0g
ICAgX25hdmlnYXRpb25TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU+KHNlbGYpOworICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKICAgICBfcGFnZS0+c2V0TmF2aWdhdGlvbkNsaWVudChf
bmF2aWdhdGlvblN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkpOwogCi0gICAgX3VpRGVs
ZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7Ci0gICAg
X3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+
KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CisgICAgX3Vp
RGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7CisgICAgX3Bh
Z2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsK
KyAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAKLSAgICBfaWNvbkxvYWRpbmdEZWxl
Z2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxm
KTsKKyAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJY29uTG9h
ZGluZ0RlbGVnYXRlPihzZWxmKTsKIAogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IFlFUzsKIApA
QCAtMzQyNSw3ICszNDI1LDcgQEAgLSAodm9pZClzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb24KICAgICBfYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlczsKIAogICAgIGlmIChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJl
cyAmJiAhX2dlc3R1cmVDb250cm9sbGVyKSB7Ci0gICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7
CisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+aW5z
dGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7CiAgICAgICAgIGlmIChX
S1dlYlZpZXcgKmFsdGVybmF0ZVdlYlZpZXcgPSBbX2NvbmZpZ3VyYXRpb24gX2FsdGVybmF0ZVdl
YlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXNdKQogICAgICAgICAgICAgX2dlc3R1cmVDb250cm9s
bGVyLT5zZXRBbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdlKGFsdGVybmF0ZVdlYlZp
ZXctPl9wYWdlLmdldCgpKTsKQEAgLTU2NzgsNyArNTY3OCw3IEBAIC0gKHZvaWQpX3NldElucHV0
RGVsZWdhdGU6KGlkIDxfV0tJbnB1dERlbGVnYXRlPilpbnB1dERlbGVnYXRlCiAgICAgfTsKIAog
ICAgIGlmIChpbnB1dERlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEZvcm1D
bGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBf
cGFnZS0+c2V0Rm9ybUNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQppbmRleCA3
YWQwNzNiOGNkNmRkNDIwM2UxYTc2MDU4ZjdjN2RmMmE5ZjhhZDdiLi4yYWRlZWE3NjBjNjk4YjE4
YWU1OTFlNTcwNTcxMzI5NWYyNGM1NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCkBAIC03Miw3ICs3
Miw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQogLSAo
dm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KWRlbGVn
YXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3Nlc3Npb24tPnNldENsaWVu
dChkZWxlZ2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CisgICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxl
Z2F0ZSA/IG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdh
dGUpIDogbnVsbHB0cik7CiB9CiAKIC0gKE5TU3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCBiMzdiMDUw
NTNmMTI0YWNiNzBmZDZhZGU2ZGY0MjBmZTgyNWQ1NGNmLi4wZGQ0MDlhNDNkZTY1MzAwYzlmMGNj
ODU0NDdhYzJmNzEzZWM5NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCkBAIC0zOCw2ICszOCw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCBmaW5hbCA6IHB1YmxpYyBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQoX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCiAgICAgICAgIDogbV9j
b250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC03NSw3ICs3Niw3IEBAIC0gKGluc3RhbmNldHlwZSlp
bml0CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0g
V2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKCk7Ci0gICAgbV9yZW1vdGVJ
bnNwZWN0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlDbGllbnQ+KHNlbGYpOworICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxm
KTsKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0
b3JDbGllbnQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA4ZDJmODhhZTAwMzJh
MGQ5MzQ1ZTY4MDBhOTc4NThiNDI4YTRkNmQ5Li4wNjg3MGQyMWRlZTdjYTRmODlkYjllMzQyZjZm
MGY1ZmQzZjU0YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3IEBAIGlubGluZSB2b2lkIHJlYWR5
U1FMaXRlU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1l
bnQsIFNRCiAgICAgICAgIHN0YXRlbWVudCA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghc3Rh
dGVtZW50KSB7Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3Rh
dGVtZW50PihkYiwgc3RyKTsKKyAgICAgICAgc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVT
dGF0ZW1lbnQ+KGRiLCBzdHIpOwogICAgICAgICBpZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQcmVwYXJpbmcgc3RhdGVtZW50ICVz
IGZhaWxlZCIsIHN0ci5hc2NpaSgpLmRhdGEoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
Y3BwCmluZGV4IGQyYWY2NGJhZDg2YThhMzNmMTMzNTQ3MjU4MWI3MDJlNDFhNjdlYzIuLjIxODY2
MDQ1MTkyNzY5YmU2ZGZmODU5YTYzMjA0M2Q1MTM1NjljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxd
ID0geyAwLCB9OwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQogCiBjbGFzcyBBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lv
bikKICAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKQEAgLTIyMyw3ICsyMjQsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVj
dCkKIAogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21h
dGlvblNlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklk
ZW50aWZpZXIoU3RyaW5nOjpmcm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKLSAg
ICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikpOworICAgIHNlc3Npb24tPnByaXYtPnNlc3Np
b24tPnNldENsaWVudChtYWtlVW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9u
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZShHT2Jq
ZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggOTdlOTI1NjAxNzczN2I3
NjY1YWNjOGViMmYzNThlYjJlYzU5MDBiOS4uMjg1OGRmNmYzNGQ0ZmE2MjEyMDliZjFlYjFlMTA4
ODVhZDA1ZTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNTYsNiArNTYsNiBAQCBj
bGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbDogcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGll
bnQgewogCiB2b2lkIGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Q29udGV4
dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2ViVmlldykp
OworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldENvbnRleHRNZW51Q2xpZW50
KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKaW5kZXggZDMyYjU5YzU0NzY2N2E3ZWM4
NzcxODEwNTJiZDFhNzQ5YzBkYmMxYy4uYTM3M2IyOTQ1NzE2NzkxYTJkNGMzMDdiZDVlMGE5Mjlj
ODE0MGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCkBA
IC01Niw1ICs1Niw1IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVuCiAKIHZvaWQgYXR0YWNoQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNv
bnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQp
LnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNv
bnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQobWFrZVVuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNv
bnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlYWQ0ZjIzNDk5MTY3MDRkMTdkMWYy
MzA2NDA4OWY3YTFhMDQ1OTRmLi5lNzcxZGQ3MTg3ZTU4NTlhZGJkNWEwMTZmOGNhOTM1ZDI4ZTg0
YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRE
b3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC0xMTgsNSArMTE4LDUgQEAgY2xhc3MgRG93bmxv
YWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7CiAKIHZvaWQgYXR0
YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkK
IHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93
bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkp
OworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMTgwODNlNzY5N2E1MTM5OGYyZWUwOTRjZGIwNjhjMjA4
MzdiMWZhLi45YjU4MThhOTgzNmYzNzYyZDg5NjIyZTM2MmMzZmM4YjJkM2ViZmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRh
YmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBw
YQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKiBw
cml2ID0gZGF0YWJhc2UtPnByaXY7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gc3RkOjptYWtl
X3VuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7
CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbWFrZVVuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Cisg
ICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJY29uRGF0
YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CiAgICAgSWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNl
Q2xlYW51cCgpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAg
ICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVy
ZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5j
cHAKaW5kZXggNGY5ODBkNGVlMjU4YWNhYzQ1NTgzMjNjYTdiZDcxY2NkZjNiZWViMS4uNzY3NWM5
Y2IzYTVlZGFmODg2NGQxN2ExNzkyMTdjYjk0MjMzNjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcApA
QCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9maW5kX2Nv
bnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAogICAgIFdlYktp
dEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxlciA9IFdFQktJVF9GSU5EX0NPTlRST0xMRVIo
b2JqZWN0KTsKLSAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKKyAgICBnZXRQYWdlKGZp
bmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4oZmluZENv
bnRyb2xsZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0RmluZENvbnRyb2xsZXJHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcGFyYW1TcGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAppbmRleCAxMzRkMWM2Y2ViZTU2N2ZjNTRkOTcwZjg3
NmJlMDI5MzFkMzI4MjJkLi5iYzY3YTM1N2RjMDc0NDVhMzUyOGY4MGYwYWJkNzlkMDdjM2JjMDRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3Jt
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
b3JtQ2xpZW50LmNwcApAQCAtNDgsNSArNDgsNSBAQCBjbGFzcyBGb3JtQ2xpZW50IGZpbmFsIDog
cHVibGljIEFQSTo6Rm9ybUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoRm9ybUNsaWVudFRvVmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZp
ZXcpLnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7
CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Rm9ybUNsaWVudChtYWtlVW5p
cXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDJlMTU5NDVkZmFkMjljMzE1NTBkMWFkM2M0ZGQxNDk4YmU3YjcyMDQuLjhjYmE0MjJlZDVl
MzhiZjg0Yzc2MDU5NGQ2Y2YwZjY1ODhjYmVhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNw
cApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdl
clN0YXJ0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlcikKICAgICB9CiAKICAgICBp
ZiAoIW1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlcikgewotICAgICAgICBtYW5hZ2VyLT5w
cml2LT5nZW9jbHVlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlv
blByb3ZpZGVyPigpOworICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBt
YWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgICAgICBtYW5hZ2Vy
LT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShtYW5hZ2VyLT5w
cml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAgICB9CiAgICAgbWFuYWdlci0+cHJpdi0+Z2Vv
Y2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9jYXRpb25Qb3NpdGlvbiYmIGNvcmVQ
b3NpdGlvbiwgT3B0aW9uYWw8Q1N0cmluZz4gZXJyb3IpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCBX
ZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZShX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcgogewogICAgIGF1dG8qIG1hbmFnZXIgPSBXRUJLSVRfR0VP
TE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFO
QUdFUiwgbnVsbHB0cikpOwogICAgIG1hbmFnZXItPnByaXYtPm1hbmFnZXIgPSBwcm94eTsKLSAg
ICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVy
PihtYW5hZ2VyKSk7CisgICAgcHJveHktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8R2VvbG9jYXRp
b25Qcm92aWRlcj4obWFuYWdlcikpOwogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9h
ZGluZ0NsaWVudC5jcHAKaW5kZXggYjhmMDFmYjI0ZmYyNzY1NGMwYWQ2MDlhZGQzMjQxOTVlZTQx
Y2E1OS4uNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2RlYjI1ZmRhYTI3ZjY2YzUyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25M
b2FkaW5nQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0Ns
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgSWNvbkxvYWRpbmdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykKQEAgLTYxLDUgKzYyLDUgQEAgY2xhc3MgSWNvbkxvYWRpbmdDbGll
bnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CiAKIHZvaWQgYXR0YWNoSWNvbkxv
YWRpbmdDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRX
ZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBh
Z2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0Ns
aWVudD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGE5
M2ZmMjViMzlhMjkyNTYwMGQyYzRhZWNjZWNiYzc1NzBkNWRmM2QuLjkyNjJhODRkZWNlMjViZjBi
ZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAK
QEAgLTE3OSw1ICsxNzksNSBAQCBjbGFzcyBXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5h
bCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hJbmpl
Y3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQog
ewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluamVjdGVkQnVuZGxlQ2xp
ZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdl
YkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5qZWN0
ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcAppbmRleCAyMzZlODFjMTM5MGIzZWMzYzE1NDkxODY4NmJhZmE1ZTUzODY0Njg3Li41NTE2
MzY0NDc3NTU3NDdiNzBhYzVlNzZiMWQxMDRkNjFjMGI1Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
OjpXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJvCiAg
ICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobm90aWZpY2F0aW9uTWFuYWdlcikKIHsKICAgICBB
U1NFUlQobV9ub3RpZmljYXRpb25NYW5hZ2VyKTsKLSAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXIt
PnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlz
KSk7CisgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPE5v
dGlmaWNhdGlvblByb3ZpZGVyPigqdGhpcykpOwogfQogCiBXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcjo6fldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCA1YmNlZjY4ZjY1
ZDIzMTg5ODBjZjkxZGFlNTkzZDc2NjcxNDhhOTg5Li44OTZlMTNkYWQ5N2JlN2ZmNzc2YzAzYmY2
ZTdkMDI3ODJlMDMyMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMjUsNiArMjI1LDYgQEAgY2xhc3MgVUlDbGll
bnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXco
V2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJW
aWV3KS5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7Cisg
ICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0VUlDbGllbnQobWFrZVVuaXF1ZTxV
SUNsaWVudD4od2ViVmlldykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA0
OGIzOGVhYzA4ZDkxMmM5NjM5ZWY1NTA5NGIxMGYxZmZhZDFkOWY5Li4yMzZmMmJmYjUxN2U5NzQ5
ODRhNWI5MDQ0MjhiNDEyZDQ3MmFmMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKQEAg
LTIzOCw3ICsyMzgsNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcihXZWJLaXRVc2VyQwogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKG5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3Ry
aW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNj
cmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5h
bWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIHJldHVybiBt
YW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApAQCAtMjg4LDcgKzI4OCw3IEBAIGdib29sZWFu
IHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5k
bGVyX2luX3dvcmxkKFdlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod29ybGROYW1lLCBGQUxT
RSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAg
ICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSks
IHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgICAgIFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPiht
YW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRX
b3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKaW5kZXggYmZjNTY3Y2VkNWJiMTcwMWQzYWM5Mjc2N2FlYmFhNDJkYjJjMzk3
YS4uNTQ0ZDllMjU1ODc1YTVmMDdlOTM1OWQ2NTdiNDUyYWE4YzdkYzQzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
QEAgLTM2Nyw5ICszNjcsOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7
CiAKICAgICBwcml2LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0R2VvbG9j
YXRpb25NYW5hZ2VyQ3JlYXRlKHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5PigpKSk7Ci0gICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5wcm9j
ZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdlYkNv
bnRleHQpOworICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0gbWFrZVVuaXF1ZTxXZWJL
aXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250ZXh0KTsKICNpZiBQTEFURk9STShH
VEspICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIHByaXYtPnJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4od2Vi
Q29udGV4dCk7CiAjZW5kaWYKIH0KIApAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgZ2Jvb2xlCiAgICAgICAgICAgICBnX3dhcm5pbmcoIk5vdCBlbmFibGluZyBhdXRvbWF0aW9u
IG9uIFdlYktpdFdlYkNvbnRleHQgYmVjYXVzZSB0aGVyZSdzIGFub3RoZXIgY29udGV4dCB3aXRo
IGF1dG9tYXRpb24gZW5hYmxlZCwgb25seSBvbmUgaXMgYWxsb3dlZCIpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQpOwor
ICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJL
aXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKICAgICB9IGVsc2UKICAgICAgICAgY29udGV4
dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYjIz
OWFjNGUxOWU2M2QzM2E4NjlkZWZiNjZmYzNjMGI0NTAwYjc4NS4uZDMzNjRkYTZjMDhhYTlhYzdh
NDY1OGJlOThhZmM0ZTcyNjdmYTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTcyNSw3ICs3MjUsNyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgd2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdl
YlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcp
OwogCi0gICAgcHJpdi0+bG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZFN0
YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOworICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IG1ha2VVbmlx
dWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdlYlZpZXcp
LnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVyKTsKIAogICAg
IC8vIFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlv
bi4KQEAgLTc0MSw3ICs3NDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAKICNpZiBQTEFURk9STShXUEUpCi0gICAgcHJp
di0+dmlldy0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmll
dykpOworICAgIHByaXYtPnZpZXctPnNldENsaWVudChtYWtlVW5pcXVlPFdlYlZpZXdDbGllbnQ+
KHdlYlZpZXcpKTsKICNlbmRpZgogCiAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBhZnRlciBhdHRh
Y2hVSUNsaWVudFRvVmlldygpIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudCgpIGNh
bGxzIHNldENhblJ1bk1vZGFsKCkgd2l0aCB0cnVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBmMDlkNmM3ZTkyMDY4M2E3
NTY2NTI3Njk2N2U3NDdjYzZjZWViNDgxLi4wNmIzYjgzNjA2NWQ5ZjY2YTA3OThhMjA5NTUxM2Nh
ODY4YjMxYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNs
aWVudEltcGwoR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmly
dHVhbCBmdW5jdGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0UobV92aWV3V2lkZ2V0KSksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdp
bmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKIH0KIAogdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdp
b24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RW1vamlDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RW1vamlDaG9vc2VyLmNwcAppbmRleCAzMWUwOTczZmUxMDAzYzZlYTY1MjMwNjFhNjdj
OTQ5ZDUzZWJkNmI3Li4yZDFjMmNiMzY4YTk5MzMxNjk3NDI0NmEwZWQ1OTljMjhkY2FlNmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hv
b3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9q
aUNob29zZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RW1vamlD
aG9vc2VyU2V0dXBFbW9qaVNlY3Rpb25zKFdlYktpdEVtb2ppQ2hvb3NlciogY2hvb3NlciwgR3QK
ICAgICAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbnVsbHB0cjsK
ICAgICB9OwogCi0gICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsK
KyAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBtYWtlVW5pcXVlPENh
bGxiYWNrVGltZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOwogICAgIGNob29zZXItPnBy
aXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0UHJpb3JpdHkoR19QUklPUklUWV9ERUZBVUxU
X0lETEUpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0TmFt
ZSgiW1dlYktpdEVtb2ppQ2hvb3Nlcl0gcG9wdWxhdGUgc2VjdGlvbnMgdGltZXIiKTsKICAgICBj
aG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnN0YXJ0UmVwZWF0aW5nKHsgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMGY2
NzQ4NjQ1MmNkMWZhODdhODI4NjJlN2U2MDU3MzRkZmMzNTk2OC4uZWEwYmMyZGVhMWY0NWE4MjQy
NGEzMmJjMzU4MzFjYWRhNDNhYmNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtMTA1LDEzICsxMDUsMTMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCog
cmVxdWUKICAgICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAgIGF1dG8gdXNlckNvbnRlbnRNYW5h
Z2VyUmVzdWx0ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFkZCh1c2VyQ29udGVudE1hbmFnZXIp
OwogICAgIGlmICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAg
ICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFr
ZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpV
c2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgYXV0byBoYW5kbGVyID0g
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VD
bGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vha19yZWYoR19PQkpF
Q1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4odXNl
ckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogCiAgICAgYXV0byogY2xp
ZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCks
IFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJl
cXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgp
LCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlLmdldCgpOwogCiAgICAgR1N0cmluZyogaHRtbCA9IGdfc3RyaW5nX25ldygKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNw
cAppbmRleCAwZjAxNzExZTc5NjFlOGIwMGM1ZTU3NGQyODg1MGQwNWIyNDFmNmVjLi5mMTBhMGRh
NmQwMzNlOGZlMTI0ODdmNjgyNWY4YzBjNzg2ZDE4YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCkBAIC0zNjAs
NyArMzYwLDcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRXZWJJbnNwZWN0b3JDcmVhdGUo
V2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvcikKIHsKICAgICBXZWJLaXRXZWJJbnNwZWN0
b3IqIGluc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfSU5TUEVDVE9SLCBOVUxMKSk7CiAgICAgaW5zcGVjdG9yLT5wcml2LT53ZWJJbnNw
ZWN0b3IgPSB3ZWJJbnNwZWN0b3I7Ci0gICAgd2ViSW5zcGVjdG9yLT5zZXRDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOworICAgIHdlYklu
c3BlY3Rvci0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50PihpbnNw
ZWN0b3IpKTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDFiOWRk
OGQxZjQ2MDIxNGY1YTc3MjY3MmMyZmI2NTM3MGI1MjBjNWUuLjg4YjNjZjQzYmZlNjhlZTk3Yzcz
MWI3NjRkNDQ5OTBhN2JmYzVhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC01NjYsNyArNTY2LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmlld1dpZGdldCwgUGFzdGVib2FyZEhl
bHBlcjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdCgpKTsKIAogICAgIFdlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKG9iamVjdCktPnByaXY7Ci0gICAg
cHJpdi0+cGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXdX
aWRnZXQpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBs
Pih2aWV3V2lkZ2V0KTsKICAgICBwcml2LT5kaWFsb2cgPSBudWxscHRyOwogfQogCkBAIC0xMjIw
LDcgKzEyMjAsNyBAQCBHZXN0dXJlQ29udHJvbGxlciYgd2Via2l0V2ViVmlld0Jhc2VHZXN0dXJl
Q29udHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldwogewogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+
Z2VzdHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSks
IHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmlld0Jhc2UpKTsK
KyAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEdlc3R1cmVDb250
cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgbWFrZVVuaXF1ZTxUb3VjaEdlc3R1cmVD
b250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVybiAqcHJpdi0+Z2VzdHVyZUNvbnRy
b2xsZXI7CiB9CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIERyYWdBbmREcm9wSGFuZGxlciYgd2Vi
a2l0V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnBy
aXY7CiAgICAgaWYgKCFwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIpCi0gICAgICAgIHByaXYtPmRy
YWdBbmREcm9wSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0FuZERyb3BIYW5kbGVyPigq
cHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyID0gbWFr
ZVVuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAgIHJldHVy
biAqcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVs
YXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZQogICAg
IGlmIChwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIpCiAgICAgICAgIHByaXYtPnZpZXdHZXN0
dXJlQ29udHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwogICAgIGVsc2UgewotICAgICAgICBw
cml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmll
d0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+dmll
d0dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJv
bGxlci0+c2V0U3dpcGVHZXN0dXJlRW5hYmxlZChwcml2LT5pc0JhY2tGb3J3YXJkTmF2aWdhdGlv
bkdlc3R1cmVFbmFibGVkKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCmluZGV4IDJjYWIyZTA1Mzg2ZDQyYjM3MWY0NDA2YWI3MWE3ZjY1OTMwZjdk
NzcuLjE0NjAzZDVhZmViYWY2ZGVlMDExOTc5NTc3MDM4ODM0OWQ0ZTdiMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04OTUsNiArODk1LDcgQEAgLSAo
dm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogewogICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJs
aWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdDbGllbnQoV0tW
aWV3ICp3a1ZpZXcpCiAgICAgICAgICAgICA6IG1fd2tWaWV3KHdrVmlldykKQEAgLTkzMiw3ICs5
MzMsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW3NlbGYgcmVzcG9uZHNUb1Nl
bGVjdG9yOkljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNlbGVjdG9yKCldKQotICAgICAgICBf
ZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9kYXRhLT5faW1wbC0+cGFnZSgp
LnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHNlbGYp
KTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9j
ZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlv
bjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbgpAQCAtOTQ0LDcg
Kzk0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJv
Y2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAgICAgV2ViS2l0OjpJbml0aWFsaXpl
V2ViS2l0MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxsb2NdIGluaXRdOwotICAg
IF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2Vs
ZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgIF9k
YXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgbnVsbHB0
ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCiAgICAgW3NlbGYgbWF5
YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDg1MTI5YTU0ODdjOWZmYmVk
NTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3NTg4NTczZGZmNDM2MDMzNzdlZjhk
MTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFn
ZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFn
ZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBQ
YWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6OlZpZXcmIHZpZXcpCiAgICAgOiBt
X3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fc2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKIHsKIH0KIApA
QCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6Omhvc3RGaWxl
RGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcucGFnZSgpLCBw
cm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShj
b25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkxMDlhYTI4NTViOGJiNDE1NzE3MDQ0
Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQwMzBjZTA0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC00Miw4ICs0Miw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tXUEUgewogCiBWaWV3OjpWaWV3KHN0
cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0
aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpW
aWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudElt
cGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAwIH0KICAgICAsIG1fdmlld1N0YXRl
RmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgfQogICAgICwgbV9iYWNrZW5k
KGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6flZpZXcoKQogdm9pZCBWaWV3Ojpz
ZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0NsaWVudD4mJiBjbGllbnQpCiB7CiAg
ICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlZpZXdD
bGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNw
cAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1YjEzNTYxY2IzNjZjLi5iNGYyN2I2
ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAg
dm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyos
IFdlYktpdExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChzdGF0dXNTZXQpIHsKICAgICAgICAg
V1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1ZXN0UHJpdmF0ZSh2aWV3LT51cmwo
KSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9h
ZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdMb2FkUmVx
dWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0
Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BFUXRWaWV3TG9hZFJl
cXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5n
Q2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQogfQpAQCAtMTY2LDcgKzE2Niw3IEBA
IHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyos
IFdlYktpdExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9hZFN0YXR1cyA9IFdQRVF0Vmlldzo6
TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAgIFdQRVF0Vmlld0xvYWRSZXF1ZXN0
UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3RyaW5nKGZhaWxpbmdVUkkpKSwgbG9h
ZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdM
b2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmlld0xvYWRS
ZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZp
ZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1
ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdl
ZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9p
ZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3OjpydW5KYXZhU2NyaXB0KGNvbnN0IFFT
dHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxiYWNrKQogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxK
YXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BFUXRWaWV3Pih0aGlz
KSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+IGRhdGEgPSBt
YWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNrLCBRUG9pbnRlcjxXUEVR
dFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJW
aWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRhKCksIG51bGxwdHIsIGpzQXN5bmNS
ZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCmluZGV4IGE4
NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQxZjkuLjEzZmQzN2FlZmYyYjY1MzVk
NTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcApAQCAtNjUsNyArNjUsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4gV1BFUXRWaWV3QmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICghZWdsQ29udGV4dCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdC
YWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBl
Z2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BFUXRWaWV3QmFja2VuZDo6V1BFUXRW
aWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29u
dGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29udGV4dD4gY29udGV4dCwgUVBvaW50
ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBjY2U1YzQ4MTdh
ODA0OTE3Y2RjMTk5YzFiMDE2MGUyNTZlOWJlMjk3Li5hNTkxNTBkYjdhNDBkYzdiYzE1ZGI1MWJl
OGVmNGUxMTM1NmRjNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzMsMTEgKzczLDEx
IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQgPSAzMDBfczsK
IHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0
cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwogCiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAgIDogbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQorICAgIDogbV9jbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQogICAgICwgbV9mcm9udGVuZFJv
dXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQog
ICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9kb21haW5Ob3RpZmllcihz
dGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmllcihtYWtlVW5pcXVlPEF1dG9tYXRpb25Gcm9u
dGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9sb2FkVGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21hdGlvblNlc3Npb246OmxvYWRUaW1lckZpcmVk
KQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDZiMDliYWRiOGQwY2Vi
YWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3ZTg3YzUxZGM0YWU5ZDYzOWIxZDRm
MzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDwK
IHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7
CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6
cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNv
ZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50
cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21h
dGlvblNlc3Npb25DbGllbnQuaAppbmRleCAxMGE4ZTQyNDEzYjI5YWZmYjYzNzdkODRhMDliZTUx
MWJkMjUxZDVjLi5kZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFhNDAxNTdjOTRmMmZhOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNz
aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChpZCA8X1dLQXV0b21hdGlvblNlc3Np
b25EZWxlZ2F0ZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9JY29uTG9hZGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9J
Y29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3MjM5NzMyMDVjYzZkZjRjYzY2YTY3
OTA2YzAyOWIwZC4uMDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlkZjQyYzIzYzE0ZDYwNWFkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdh
dGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEljb25M
b2FkaW5nRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3ICopOwogICAgIH5JY29u
TG9hZGluZ0RlbGVnYXRlKCk7CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNzIEljb25Mb2FkaW5nRGVs
ZWdhdGUgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGlj
IEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KEljb25M
b2FkaW5nRGVsZWdhdGUmKTsKICAgICAgICAgfkljb25Mb2FkaW5nQ2xpZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQpp
bmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIyYmViNWJjYmQ3YzBkNzRjZmI0Li4xNjNmYjk1MmVl
MGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KQEAgLTQ0LDcgKzQ0LDcg
QEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fkljb25Mb2FkaW5nRGVsZWdhdGUoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3Jl
YXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElj
b25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SWNvbkxvYWRp
bmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tJY29uTG9hZGluZ0RlbGVn
YXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmRlbGVnYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGE1MWEyMjM2MjM4NDE1MWFiMTFkNDg5
NDM2OWY4YTE4NTgwMDY3ZGEuLmY1MTM3ZjljYzczMTYzODhlNjFkZTEwNzczZmYzNDI4NTYyNTA1
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAt
NzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6On5VSURlbGVnYXRlKCkKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiBVSURl
bGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOwogfQogI2VuZGlmCiAKIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPFdLVUlEZWxlZ2F0ZT4g
PiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IDQ4YzJiMmI0ZTA2MTA2OTI3MmFlYjhiOTRhMjM0ZWFhOTI2YWY3NmQuLjkxY2Y5NDgwYzc1MThj
ZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
CkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5
IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyLCBwdWJsaWMgU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgU291cmNlUHJveHkodWludDY0X3QgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogICAgICAg
ICA6IG1faWQoaWQpCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkK
ICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsKICAgICAgICAgc2V0dGluZ3MgPSBz
b3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlk
KSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8U291cmNlUHJv
eHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CisgICAg
ICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9j
ZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5lcnJvck1lc3NhZ2Up
OwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwgaW52YWxpZENvbnN0cmFpbnRzLCBX
VEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXggOWNhNmZhMzUz
NDk2MDE4MDNkZjVkM2QxYjJhYmEzMTY1NTc0MGMzOS4uOWJkZGI5OTA5ZGY3ZThmZWYxZTU0ODA2
Y2JlNmJjNWM0MGNmYzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtMzksNiArMzks
NyBAQCBjbGFzcyBTaGFyZWRNZW1vcnk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNz
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQcm94eSYpOwogICAgIH5V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzMDcwZDU3NDQzZmRm
NzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQyZmEyYTA4NjA0MTdjNmNmODBkN2Jj
ZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIGlmICghW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFN1cHByZXNzTWVtb3J5UHJl
c3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKTsK
IAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisgICAgc2V0TGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01
MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9ic2UKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlMaW5rID0gc3RkOjptYWtlX3Vu
aXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKKyAgICBhdXRvIGRpc3BsYXlMaW5rID0gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKICAgICBkaXNwbGF5TGluay0+YWRkT2Jz
ZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAgbV9kaXNwbGF5TGlua3MuYXBwZW5k
KFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggNWMyMWNhNzVhMTgyOWM1
MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3YjQ2MDU0OGNlMGY4NmQ3YTVkMTE3
YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIgPSBb
YWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRs
eVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tncm91bmQgYWN0aXZpdHkgdGltZWQgb3V0Iiwg
d2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1lciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92
ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1
cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRBY3Rpdml0eVRp
bWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOwogICAgIGNvbXBsZXRp
b24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQppbmRleCBmMTc2ZjFhNjVhOTkyYzUxYWMzNDRlZDAwODg1N2UwMTNlZjk5NGIxLi4z
N2Y1NGRhNGFkMmQ2YTI1NDdjMWRkMzU5Yjg5NWM4YTU0YTI1OTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTMzNCw3ICsxMzM0LDcgQEAg
c3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0cmFja2luZ0FyZWFPcHRpb25zKCkKIAogV2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcs
IFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3ZpZXco
dmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBs
Pih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFn
ZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCiAgICAgLCBtX3BhZ2UocHJvY2Vzc1Bv
b2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSkK
ICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKG1fcGFnZS0+cHJlZmVy
ZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAgICwgbV9pbnRyaW5zaWNDb250ZW50U2l6ZShD
R1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0cmljLCBOU1ZpZXdOb0ludHJpbnNpY01ldHJp
YykpCkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoTlNWaWV3
IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldlYgogICAgIHZp
ZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQbGFjZW1lbnRU
b3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fcGFnZS0+c2V0RnVs
bHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4o
dmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktp
dDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwogI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9v
bDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0xNzMwLDkgKzE3MzAsOSBAQCBDR1Np
emUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQ
cm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgaWYgKFtbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXQyVXNlUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFsdWVdKQotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nl
c3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Piht
X3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc1VzaW5nVUlTaWRlQ29t
cG9zaXRpbmcoKSBjb25zdApAQCAtMzM3NSw3ICszMzc1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGV4dEluZGljYXRv
cihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yLCBXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAgICAgaWYgKCFtX3RleHRJbmRpY2F0
b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxlYXNlZCgp
KTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOwogCiAgICAgTlNS
ZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW1ttX3ZpZXcgd2luZG93
XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcgY29udmVydFJlY3Q6dGV4dEluZGljYXRvci50
ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5pbF1dOwogICAg
IG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBO
U1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyksIGxpZmV0
aW1lKTsKQEAgLTQzNzcsNyArNDM3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNhdmVCYWNrRm9y
d2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogVmlld0dl
c3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIoKQog
ewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgbV9nZXN0dXJlQ29udHJv
bGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOwor
ICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUNvbnRy
b2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICptX2dlc3R1cmVDb250cm9sbGVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5ZTU4Y2NkYTEwZjNlYTQ0NGMyNzYu
LjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2NWQyODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFw
aGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXAKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6ZSwgdXBk
YXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2Jh
Y2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZvLnZpZXdTaXpl
LCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7CiAKICAgICBt
X2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAKQEAgLTQ0Miw3
ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNw
YXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuYwogICAgIH0KIAogICAgIGlmICghbV9k
cmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdNb25pdG9yPiht
X3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBtYWtlVW5pcXVlPERy
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQ
YWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0b3ItPnN0YXJ0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJkMDM4NmFjZjVkOGFkNTM1Yzc5MTJhODg2Y2Jk
MGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2NjVlZTFiNzg2OTZhNmE0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9yCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lu
RGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSks
IFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4g
PSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0
YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdU
Rk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgaGFzaFNhbHRGb3JPcmlnaW4tPmxhc3RU
aW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0VGltZVVzZWQpOwogCkBAIC0y
MTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZp
Y2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKIAogICAgICAgICBTdHJpbmcg
ZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgICAgICBhdXRvIG5l
d0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4o
V1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShk
ZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JPcmlnaW4gPSBt
YWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3JpZ2luKSwgV1RG
TW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAogICAgICAg
ICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5OWE1MDM0NGYzMTI1MWY1ZTk2ODQu
LmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1Y2E3YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAK
QEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVh
dGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbAogCiAgICAgaWYgKG1f
ZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hvdWxkVGFrZUFzc2VydGlvbikgewogICAgICAg
ICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRVSUFz
c2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFBy
b2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRl
ZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBtYWtlVW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9h
ZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAgICAgICBB
U1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBt
YWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3Jr
aW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2Vz
cyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb25zIGZvciBVSVByb2Nlc3MgYW5kIE5l
dHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oCmluZGV4IDNkZWY1ZDc5ZjA3Y2I5MTQwYjgyNTYyZGI5ZjZmMmJjNmQwZjcyZjYu
LjU2MDZjNTExNjUzNGY0M2NmYzgwNmQ1MTFkNDFlZDk4Y2ZiMjUxNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBEcmF3aW5nQXJl
YVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcm90ZWN0ZWQgSVBDOjpNZXNz
YWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEcmF3aW5nQXJlYVByb3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBl
Y2FhYzMwMWI0YmRmNDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRmNjQwLi5mNGI3YmVhNjU4NTA5OTFl
OTQ5NGE2MjIzZDU0Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2
b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMoY29uc3Qg
VmVjdG9yPFBsYXRmb3JtR2FtZXBhZAogICAgIGZvciAoYXV0byogZ2FtZXBhZCA6IGluaXRpYWxH
YW1lcGFkcykgewogICAgICAgICBpZiAoIWdhbWVwYWQpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8
VUlHYW1lcGFkPigqZ2FtZXBhZCk7CisgICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgo
KV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOwogICAgIH0KIAogICAgIGZvciAo
YXV0byYgcG9vbCA6IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcykKQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxh
dGZvcm1HYW1lcGFkJiBnYW1lcGFkKQogICAgICAgICBtX2dhbWVwYWRzLmdyb3coZ2FtZXBhZC5p
bmRleCgpICsgMSk7CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7
Ci0gICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdh
bWVwYWQ+KGdhbWVwYWQpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IG1ha2VV
bmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKIAogICAgIHNjaGVkdWxlR2FtZXBhZFN0YXRlU3lu
YygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFu
Y2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAppbmRleCA3ZDU2YjBhMjQ2M2RlZGYxNjY5
NThjMjhmZmI3NWFhMGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVlZTJlZmExYmQwNWEyYTc1NjExMWEx
NWQ5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFu
Y2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0hp
Z2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgSGlnaFBlcmZv
cm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1w
bGVyKFdlYlByb2Nlc3NQb29sJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBkM2QwM2NlZWQ4MzEz
YmNhMjdiMzkxNWFjMzdjZTZlM2VkNzMwOTkuLmVlYjQwOTg5NWNlMGUyM2M5ZmMzZTk1ZjM1ODE4
MGZjOWFiMDQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91
bmQpCiBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFBy
b3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIGlmICgh
bV9kb3dubG9hZFByb3h5TWFwKQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBzdGQ6Om1h
a2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9kb3dubG9hZFBy
b3h5TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CiAKICAgICByZXR1
cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2ws
IHJlc291cmNlUmVxdWVzdCk7CiB9CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBXZQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9u
KCkKIHsKICAgICBBU1NFUlQoIW1fdXBsb2FkQXNzZXJ0aW9uKTsKLSAgICBtX3VwbG9hZEFzc2Vy
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzc0lkZW50aWZp
ZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29y
a2luZyk7CisgICAgbV91cGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3Rh
dGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmNsZWFyVXBsb2FkQXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzViODIxM2MyOGZjYjZiOTQw
YTEwOTliZTE0MDhmOTA2YTNiOTJiYi4uMWZkYjY2YzE1NWQ4N2IyMjYyZjJhM2Q1ZTEwZGUyMzkx
NDM4YTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwcml2YXRl
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrUHJv
Y2Vzc1Byb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAg
ICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJhYWZmMWVjMmE2NTQ5
MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIuLjQ3YTNlOWIyM2JhMTI2NTE5OGI2MGVkZGY2YzRk
ZDk4NmZjZDIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAK
QEAgLTU2LDE0ICs1NiwxNCBAQCBSZWY8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUAogCiBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNz
UG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9v
bCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblBy
b3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9u
UHJvdmlkZXI+KCkpCiB7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpz
ZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4mJiBw
cm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVyKSB7Ci0gICAgICAgIG1fcHJvdmlkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1f
cHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRl
eCBlYzY0YmM5ZTE2MmNiN2NhMWU3NTM3ZTkzMzFkNGYxMzk1ODdlYzQxLi42Y2Y1ZTE0ZWE1Njlm
MjNkYTg0NzU0MDk2Y2E1MTE0NTNjMjk4YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0g
dWludDMyX3Q7CiAjZW5kaWYKIAogY2xhc3MgUGFnZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxQYWdlQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKaW5kZXgg
MDFhN2RhN2I4OTFhOTAwNjZjOTBlODQyOWM2NTZiZDcwMGIxNjZiZC4uZWE0MzkyN2Q0OGQ3NTJi
ZWI2NzI4MDk0OTljOWFkMGJmZTA3YmM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaApAQCAtMzUsNiAr
MzUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xh
c3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3Vu
aXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggZjZmNDc5YjFlMDM5
MmYzMjIxNjBhNjQ5NGFlYzYyZTBhMDY3OTZkZC4uODQzNjlkMzM0NDA3Y2ZiYzJlODNhYTgyN2M1
Y2MwZTVkYjkxMjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtNjMsNyAr
NjMsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2lu
UHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYQogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRp
YyBib29sIHBsdWdpblJlcXVpcmVzR3RrMihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1
bGU+KHBsdWdpblBhdGgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IG1h
a2VVbmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVy
PGdwb2ludGVyPigiZ3RrX29iamVjdF9nZXRfdHlwZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAwMGE5OTE4ODYxNDg3MzkzOGE2Y2I0YWJk
OTkxNGJjODYyOTQ1Y2Y3Li40Y2UyNjJlOWRjYmI0YjFiMGZmMGFkNWRiOTdlYjk3ZjM2MDczNzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAt
MTAzLDkgKzEwMyw5IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vz
cyhQcm9jZXNzSUQgcGlkKQogCiAgICAgbV9zdXNwZW5kVGltZXIuc3RvcCgpOwogICAgIGlmICht
X3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCi0gICAgICAgIG1fYXNzZXJ0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50
IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fzc2VydGlvbiA9
IG1ha2VVbmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNp
YmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYXNzZXJ0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVu
dCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxp
dHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwogICAgIG1fcHJvY2Vzcy5kaWRTZXRBc3NlcnRpb25T
dGF0ZShhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX2Fzc2VydGlvbi0+c2V0Q2xpZW50KCp0aGlz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0K
aW5kZXggNjBmMDJjNjEwZmNkOTg4MzA2MzljNTdiM2U5ZDYxZmYxZmQ1MjVmZC4uMjc0YWJkMzAy
OWMwMDc3MzM5ZGZlMzc0OGZmMzA2OTdjOWI0OGI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEwNyw3ICsxMDcsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIDogRHJhd2luZ0FyZWFQcm94eShEcmF3aW5n
QXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBhZ2VQcm94eSwgcHJvY2VzcykKLSAgICAsIG1f
cmVtb3RlTGF5ZXJUcmVlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+
KCp0aGlzKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChtYWtlVW5pcXVlPFJlbW90ZUxh
eWVyVHJlZUhvc3Q+KCp0aGlzKSkKIHsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICAvLyBXZSBk
b24ndCB3YW50IHRvIHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJIHByb2Nlc3MuCkBAIC0zNzYsNyAr
Mzc2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp1cGRhdGVEZWJ1
Z0luZGljYXRvcihJbnRTaXplIGNvbnRlbnRzU2l6ZSwKIAogdm9pZCBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKQogewotICAgIG1fZGVi
dWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRy
ZWVIb3N0PigqdGhpcyk7CisgICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3QgPSBtYWtl
VW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKICAgICBtX2RlYnVnSW5kaWNhdG9y
TGF5ZXJUcmVlSG9zdC0+c2V0SXNEZWJ1Z0xheWVyVHJlZUhvc3QodHJ1ZSk7CiAKICAgICBtX3Rp
bGVNYXBIb3N0TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCAzMDAyNWQ0Mjk5ZjNiY2EwNDg1ZDMwNGQ4MzM1ODE3
NjEwYmE1MGJkLi44YTRlNTA0ODE3ZWJjMTI1Y2U4OThjMWMyOTFkOWE2ZTRkNWY1ODJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkxheWVyQ3JlCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIGF1dG8gbWFrZVdp
dGhMYXllciA9IFsmXSAoUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyKSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJ
RCwgV1RGTW92ZShsYXllcikpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXll
clRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKICAgICB9Owog
ICAgIGF1dG8gbWFrZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENBTGF5ZXIqIGxheWVyKSB7CiAgICAg
ICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMobGF5ZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2Rl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZU5vZGUubW0KaW5kZXggZTg4YmJjNjA4ZDRmYjA1ODM4NGQyOWIyNjk4MTU5MmVkYTgxNGVi
YS4uNGZkNGVhMjY5ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBkODQyNDA2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZU5vZGUubW0KQEAgLTczLDcgKzczLDcgQEAgUmVtb3RlTGF5ZXJUcmVlTm9kZTo6
flJlbW90ZUxheWVyVHJlZU5vZGUoKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5v
ZGU+IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKQogewogICAgIFJldGFpblB0cjxD
QUxheWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1BsYWluUmVtb3RlTGF5ZXIgYWxsb2NdIGluaXRd
KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihsYXll
cklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJU
cmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwogfQogCiB2b2lkIFJlbW90ZUxheWVy
VHJlZU5vZGU6OmRldGFjaEZyb21QYXJlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCmluZGV4IGMyNzgxZGM4YWRhMzQz
MzlmNzllZDg1YTdlM2U5ZmY3NjUyMjI1MjguLjI5ZGZlZmU2Y2I3MmMxMjBhNjFjYzIyZDBkM2Jh
NjRhNmQ5NDQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OwogCiBjbGFzcyBSZW1v
dGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Jik7CiAgICAgflJlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5kZXggODZkMGRlZmM2OTY1ZTRmYTZiYTExNjQ3
NjFiYzlhYzcxOThjNzJlNi4uMWE3Njk0M2YyNDViZTFjZDgyMmYxOTYxM2NkZDM1ZjU0MGE5NGNk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCkBA
IC00OSw2ICs0OSw3IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGluZ1RyZWU7CiBjbGFzcyBXZWJQYWdl
UHJveHk7CiAKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhv
c3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggNjI5YTljNjUwZDQzYzBkNTYxYzgxOTMzYmEw
ZDE0ZThkMzNlYTQ0NC4uMGMxMjZhZTZhZjc1ZTQxMzhhZmQwMDg2ODM5NTY2MjlmZjcwMDIzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNjEsNyArNjEs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4gY3JlYXRlUmVtb3RlVmlldyhwaWRfdCBwaWQs
IHVpbnQzMl90IGNvbnRleHRJRCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2Rl
PiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7CiAgICAgYXV0
byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0cjxVSVZpZXc+IHZpZXcpIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5s
YXllcklELCBXVEZNb3ZlKHZpZXcpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKICAgICB9
OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9IFsmXSAoVUlWaWV3KiB2aWV3KSB7CiAgICAg
ICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1Mu
bW0KaW5kZXggODFhMmViOWE2MzVkNTk4NDE2MDBmNzgzNTIwNGFjODRiZDZkNWMyOC4uYjg5MDY4
MWU5ZTdhNTEzYmEzNDM2N2NlZjM5ODliZTNiMTlkOWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5t
bQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgUwogCiAgICAgaWYgKHN0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAgICAgaWYgKHNjcm9sbENvbnRhaW5lckxheWVy
KCkpCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOworICAgICAg
ICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5t
bQppbmRleCBiNTZlMmVhNjRkYTUyMDMxZGZhZjEyOGVjMjQ4Y2QxNWM3MTAwOTI2Li5kMGJkZDNj
NTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFhYjU3ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCkBAIC00
Myw3ICs0Myw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TCiAKIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgV2ViQ29yZTo6U2Nyb2xs
aW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUo
c3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigq
dGhpcykpCisgICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShtYWtlVW5pcXVlPFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2N2MwYjYxNjJlMDY3ODNjZjM3NmNmNjE5MDdl
Mi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3OWM3NDUyOTQzNzI5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGlu
Z05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlVHlwZSwgbm9kZUlEKQotICAg
ICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlz
KSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhp
cykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IGQ4OTYwY2VjMzBl
NDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMuLmI2Y2EzY2JiYTgwODA3YWY3YjlmNjk5YmU5
YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYz4g
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTgogCiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAg
ICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5vZGVJRCkK
LSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigq
dGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFpck1hYz4o
KnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCBmNTA1
ZTI4MGM0NDI5MGE4MDNkYmRiNjhjOThlZWE2MzBiMWM5YmI2Li44NjhiNTRlNzkyYWYyYWJkOTg2
YmM4NjYwMDVjYjEyZjQ1NjgyNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgK
QEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKICAgICB+VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCmlu
ZGV4IGNhMjZlNTFkN2E0MDY0YWEyODEyN2MwZjAxZDU0YTRlMGFjMjQ0NjMuLjM5M2IxMzY3MWY2
MDE0MTZhNmVkN2MyZmRhYjBjZDJlYjA4MWUzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5t
bQpAQCAtOTIsNyArOTIsNyBAQCBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2VydmljZTo6
Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2Vy
dmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIGF1dG8gZHJp
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9u
KGRldmljZSkpOworICAgIGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihj
cmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwogICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGlu
Zm8gZnJvbSB0aGUgZGV2aWNlLgogICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRo
ZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5m
byksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShW
ZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5LmgKaW5kZXggODVjZTY5MDYxMTE0NDJiYzY3OWNjN2E3NzViODY4MmRkMTU3MjhjOS4uZjg1
MmJlZDIxMzBiNDdjMmY3ZGQyOThhZDM1NmFlYWM4N2MwMjY4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHJveHkmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
LmNwcAppbmRleCA5OWQ2ZWEzMzQxNTNlY2Y0OWQ0NTg0Yzc0M2RjNjgxNjg4NDE1NTIwLi44NDZh
NWFhMjdkZmFiM2QyNzRjZmZhNDg3Mzg2MWYyNTg3ZDE3ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vCiAKIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJv
Y2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAs
IG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkp
CisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigp
KQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KQEAgLTU0LDcgKzU0LDcgQEAgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG8KIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0
ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7CiAg
ICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVu
aXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgZWxzZQogICAgICAgICBtX3By
b3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAppbmRleCAyY2RjZDE3
NjUyOTlmZTc3NjQ5YmFiZjlkZTNlNzRlOGIwZjAwZTM3Li4zMzY0YmNiY2M5MTE4NGE2YmE3NTQx
ZWY5MGIwZjk2MDRjZGU0ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2
b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVz
RnJvbU1lZGlhU3RhdGUoV2ViUGFnZQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
cjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQYWdlUHJveHkmIHByb3h5LCB1aW50NjRfdCBl
bGVtZW50SUQpCiB7Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CisgICAgbV9mb2N1c2Vk
TWVkaWFFbGVtZW50ID0gbWFrZVVuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVs
ZW1lbnRJRCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpjbGVhckZv
Y3VzZWRNZWRpYUVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0
aW9uU3RhdGUuaAppbmRleCA5ZWI5ZDI4YWRkZDViNWIwMDZkNTBiMDhhM2Q3NGZiNjlkMTYyMzky
Li4xNmE3NTlhYzhhMWZmMzE0NjA1YjA5NDZmZmM1YWE2NTgxOGUwNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaApAQCAtNDUsNiArNDUsNyBAQCBj
bGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogCiBjbGFz
cyBXZWJOYXZpZ2F0aW9uU3RhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFdlYk5hdmlnYXRpb25TdGF0ZSgpOwogICAgIH5XZWJOYXZpZ2F0
aW9uU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggNjUyOTgyYTgxMmE5ZWZiZWY1MjFhNmE5ODk5ZmE0
YmVlNWZhZjM0Yy4uMWIyOWY3OWRkZmFlYTA3YjllNzI0OWJkNzcyMzg0ZWViZjUzMGZkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQ
YWdlUHJveHk7CiAKIGNsYXNzIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCA6IHB1YmxpYyBB
UEk6OkNsaWVudDxXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2U+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0
Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0KiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXgg
YzRiOTJjODNjZmVhMjliMzFlZGJiMzRhYTg0MDI1YmE1YzhiMDNiNy4uYmRhNTljZDgwNTE1NzY0
NmIzMDhkMmZkMjM2ZjNkMTE4MjcxZTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIo
V2ViUGFnZVByb3h5JiBwYWdlKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRl
cjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogewotICAgIGF1dG8gdGFyZ2V0
QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9m
cm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgYXV0
byB0YXJnZXRBZ2VudCA9IG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50Piht
X2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAg
IG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2ZhMmI0ZDZkM2MxNjYxYTcwMDNiNzc4NTU4ZGE3
YzJmZjI0ZjA3ZS4uMGI0MGRiMjc3ODNmZGU5ZDI1NmZmNTI5MmVlYTdlYmZlMzE2Y2EwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zOTcsMTUgKzM5Nywx
NSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1v
dmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJl
ZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVu
aXF1ZVJlZjxBUEk6Okhpc3RvcnlDbGllbnQ+KCkpCi0gICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKLSAgICAsIG1fZm9y
bUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fdWlD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQotICAgICwgbV9maW5kQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQotICAgICwgbV9maW5kTWF0
Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCisg
ICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVu
dD4oKSkKKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkK
KyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQorICAgICwgbV9m
aW5kQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQorICAgICwgbV9maW5kTWF0
Y2hlc0NsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGll
bnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlmCi0gICAgLCBt
X25hdmlnYXRpb25TdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkK
KyAgICAsIG1fbmF2aWdhdGlvblN0YXRlKG1ha2VVbmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigp
KQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1
cmF0aW9uLT5wYWdlR3JvdXAoKSkKICAgICAsIG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZXMoKSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IFBhZwogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IG1fY29uZmlndXJh
dGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSB9CiAgICAgLCBtX3RyZWF0c1NI
QTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1fY29uZmlndXJhdGlvbi0+dHJlYXRzU0hBMVNpZ25l
ZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0g
ICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5D
bGllbnQ+KCkpCisgICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZ1bGxz
Y3JlZW5DbGllbnQ+KCkpCiAjZW5kaWYKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcigqdGhpcykKQEAgLTQzNSw5ICs0MzUsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBh
ZwogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRoaXMpCiAgICAgLCBtX2NvbmZpZ3Vy
YXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygp
KQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlciht
YWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUoc3RkOjptYWtl
X3VuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JEZWJ1
Z2dhYmxlKG1ha2VVbmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKICNlbmRpZgogICAg
ICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZX
ZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKIHsKQEAgLTQ3Nyw3ICs0NzcsNyBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxS
dW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2Vs
bEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CisgICAg
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2Vy
dmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxv
b3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10gewogICAgICAgICB0aGlzLT5k
aXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgpAQCAtNjAxLDcg
KzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQb2xpY3lDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmIHBvbGljeUNsCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQp
CiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJiB1aUNsaWVu
dCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7Ci0gICAgICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6VUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYyOCw3
ICs2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogewogICAgIGJvb2wgaGFzQ2xpZW50
ID0gaWNvbkxvYWRpbmdDbGllbnQuZ2V0KCk7CiAgICAgaWYgKCFpY29uTG9hZGluZ0NsaWVudCkK
LSAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29u
TG9hZGluZ0NsaWVudD4oKTsKKyAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1faWNvbkxv
YWRpbmdDbGllbnQgPSBXVEZNb3ZlKGljb25Mb2FkaW5nQ2xpZW50KTsKIApAQCAtNjUwLDcgKzY1
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1
bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VyCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rmlu
ZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB7
CiAgICAgaWYgKCFmaW5kQ2xpZW50KSB7Ci0gICAgICAgIG1fZmluZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
QEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZE1hdGNo
ZXNDbGllbnQ+JiYgZmluZE1hdGNoZXNDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kTWF0Y2hlc0Ns
aWVudCkgewotICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRpYWdub3N0aWNMb2cKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpD
b250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAgICBpZiAoIWNvbnRl
eHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNl
KgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgIG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudD4oKTsKICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5pbml0aWFsaXplKGNsaWVudCk7
CiB9CiAKQEAgLTc3Niw3ICs3NzYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIH0K
IAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1
cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3Mg
cGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBhdXRvIHN1c3Bl
bmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1f
cHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxF
bnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKKyAgICBhdXRvIHN1c3BlbmRlZFBh
Z2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5
UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAogICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQ
YWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2Vz
cyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0
KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDAp
OwogCkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVu
bmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIEFTU0VSVCgh
bV9mdWxsU2NyZWVuTWFuYWdlcik7Ci0gICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGllbnQoKS5m
dWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOworICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIg
PSBtYWtlVW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50
KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgQVNTRVJUKCFtX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIpOwpAQCAtODYwLDIyICs4NjAsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFj
aFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBBU1NFUlQo
IW1fcGF5bWVudENvb3JkaW5hdG9yKTsKLSAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX3Bh
eW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+
KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIEFTU0VSVCgh
bV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcik7Ci0gICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKKyAg
ICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIEFT
U0VSVCghbV9jcmVkZW50aWFsc01lc3Nlbmdlcik7Ci0gICAgbV9jcmVkZW50aWFsc01lc3Nlbmdl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0
aGlzKTsKKyAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJ
TEtJVCkKICAgICBBU1NFUlQoIW1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOwotICAgIG1fZWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250
cm9sbGVyPigqdGhpcyk7CisgICAgbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogfQogCkBAIC05NDMs
NyArOTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYXdpbmdBcmVhKHN0ZDo6dW5pcXVl
X3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmUKIAogI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBl
KCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlKSB7Ci0gICAgICAgIG1fc2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkgPSBtYWtlVW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBPbiBpT1MsIG1haW4gZnJhbWUg
c2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBvZiB2aXNpYmxlIHJlY3QgdXBkYXRlcy4KICAgICAg
ICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LT5zZXRQcm9wYWdhdGVzTWFpbkZyYW1lU2Ny
b2xscyhmYWxzZSk7CkBAIC0xMDA2LDE3ICsxMDA2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
bG9zZSgpCiAgICAgbV9sb2FkZXJDbGllbnQgPSBudWxscHRyOwogICAgIG1fbmF2aWdhdGlvbkNs
aWVudCA9IG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpOwogICAgIG1fcG9s
aWN5Q2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOwotICAgIG1fdWlDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7Ci0gICAgbV9maW5kQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICBtX2ljb25M
b2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOworICAg
IG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAgIG1fdWlD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgbV9maW5kQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICBtX2RpYWdub3N0aWNM
b2dnaW5nQ2xpZW50ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBt
X2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xp
ZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4
dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAg
bV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGll
bnQ+KCk7CisgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3Jl
ZW5DbGllbnQ+KCk7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1v
dmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwpAQCAtMTIyNiw3ICsxMjI2LDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9KTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2
aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24oc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJh
c2VVUkwsIHVzZXJEYXRhKSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3Rh
dGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihtYWtlVW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURh
dGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEp
KTsKICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCks
IG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCwgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CkBAIC0yNDE1
LDcgKzI0MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBO
YXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2
ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IG1ha2VV
bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOwogICAgIGNvYWxlc2NlZFdoZWVs
RXZlbnQtPmFwcGVuZChldmVudCk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50
cy5hcHBlbmQoV1RGTW92ZShjb2FsZXNjZWRXaGVlbEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZl
bnQoZXZlbnQpOwpAQCAtMjQyMyw3ICsyNDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQoKQogewotICAgIGF1dG8gbmV4
dENvYWxlc2NlZEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxF
dmVudD4+KCk7CisgICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2
ZW50ID0gY29hbGVzY2VkV2hlZWxFdmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNj
ZWRFdmVudC5nZXQoKSk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBl
bmQoV1RGTW92ZShuZXh0Q29hbGVzY2VkRXZlbnQpKTsKICAgICBzZW5kV2hlZWxFdmVudChuZXh0
V2hlZWxFdmVudCk7CkBAIC0yOTg0LDcgKzI5ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29u
dGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
cwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9w
cm92aXNpb25hbFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5Pigq
dGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3VzcGVuZGVkUGFnZVByb3h5KSwg
bmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVk
aXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50KTsKKyAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9u
YWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5k
ZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmN1cnJl
bnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwogCiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0
aW9uLnRhcmdldEl0ZW0oKSkgewogICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAl
cCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRo
aXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTcwMiw3ICs1NzAyLDcgQEAgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpmdWxsU2NyZWVuTWFuYWdlcigp
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkgewot
ICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNj
cmVlbkNsaWVudD4oKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0
MzcsNyArNzQzNyw3IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBX
ZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgaWYgKG1fdXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKQogICAgICAgICByZXR1cm4gKm1fdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogCi0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5PigqdGhpcyk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIgPSBtYWtlVW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjsKIH0KIApAQCAtODE0Myw3ICs4MTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9s
bFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3Nj
cm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkID0gZW5hYmxlZDsKIAogICAgIGlm
IChtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkICYmICFtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YSkKLSAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4o
ZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEp
KTsKKyAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBtYWtlVW5pcXVlPFJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKICAgICBlbHNlIGlmICghbV9z
Y3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCkKICAgICAgICAgbV9zY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEgPSBudWxscHRyOwogfQpAQCAtOTE5MCw3ICs5MTkwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKQogV2ViUGFnZVByb3h5OjpT
cGVlY2hTeW50aGVzaXNEYXRhJiBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc0RhdGEoKQog
ewogICAgIGlmICghbV9zcGVlY2hTeW50aGVzaXNEYXRhKQotICAgICAgICBtX3NwZWVjaFN5bnRo
ZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OworICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hT
eW50aGVzaXNEYXRhIHsgbWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlz
KSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHJl
dHVybiAqbV9zcGVlY2hTeW50aGVzaXNEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA4YmRmOGNmODM4OGNkYzdiZmFjZmYyYjdlNjA1
ZDBhODE4ZGFhYzY0Li45NjJmM2JlZDJkODI1NjlhMDdkZDRlOWNkYWI4ZmNjNzIxMTlmN2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAgLTg0LDcg
Kzg0LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxlKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSBnZW5lcmF0ZUFkZFJlcXVlc3RJZGVudGlmaWVy
KCk7Ci0gICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6
Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CisgICAgbV9w
ZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5pcXVlPENhY2hl
ZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUoKTog
Q2hlY2tpbmcgaWYgcHJvY2VzcyAlaSBpcyByZXNwb25zaXZlIGJlZm9yZSBjYWNoaW5nIGl0Li4u
IiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgcHJvY2Vzcy0+aXNS
ZXNwb25zaXZlKFt0aGlzLCBwcm9jZXNzUG9vbCA9IG1ha2VSZWYocHJvY2Vzcy0+cHJvY2Vzc1Bv
b2woKSksIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGlzUmVzcG9uc2l2ZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGRiZTI1MzUyYjUyNTg4ZDhh
M2NjODY5NDg0NDQwZTc5ZTg1YTA5NmQuLmZlZGE4ZWU4ZThkMzBmMzk0ZmYxMDhmYmZhODA0MTVk
ODEwNzdhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTIzMywxNSArMjMzLDE1IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90CiBXZWJQcm9jZXNz
UG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5jb3B5KCkpCiAg
ICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3VwOjpjcmVhdGUoKSkKLSAgICAsIG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
Q2xpZW50PigpKQotICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpBdXRvbWF0aW9uQ2xpZW50PigpKQotICAgICwgbV9kb3dubG9hZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCi0gICAgLCBtX2hpc3RvcnlDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQotICAgICwg
bV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKKyAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQo
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQorICAgICwgbV9hdXRvbWF0
aW9uQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQorICAgICwgbV9k
b3dubG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCisgICAgLCBt
X2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
PigpKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9y
ZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICNpZiBQTEFURk9STShNQUMpCi0gICAgLCBt
X2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8SGln
aFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0aGlzKSkKLSAgICAsIG1fcGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1faGlnaFBlcmZvcm1hbmNlR3JhcGhp
Y3NVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2Ft
cGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKG1h
a2VVbmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQogI2VuZGlm
CiAgICAgLCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24t
PmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQogICAgICwgbV9zaG91bGRUYWtlVUlC
YWNrZ3JvdW5kQXNzZXJ0aW9uKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkVGFrZVVJQmFja2dyb3Vu
ZEFzc2VydGlvbigpKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omlu
aXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KQot
ICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAg
ICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KQEAgLTM3Nyw3
ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ29ubmVjdGlvbkNsaWVu
dChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Qgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudD4mJiBoaXN0b3J5Q2xpZW50KQogewogICAgIGlmICghaGlzdG9yeUNsaWVudCkKLSAg
ICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRl
eHRIaXN0b3J5Q2xpZW50PigpOworICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBtYWtlVW5pcXVl
PEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBt
X2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGllbnQpOwogfQpAQCAtMzg1LDcgKzM4
NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4mJiBkb3du
bG9hZENsaWVudCkKIHsKICAgICBpZiAoIWRvd25sb2FkQ2xpZW50KQotICAgICAgICBtX2Rvd25s
b2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpOworICAg
ICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50Pigp
OwogICAgIGVsc2UKICAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUoZG93bmxvYWRD
bGllbnQpOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERv
d25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGRvCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkF1dG9tYXRpb25DbGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKIHsKICAgICBpZiAoIWF1
dG9tYXRpb25DbGllbnQpCi0gICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAgICAgICBtX2F1dG9tYXRpb25DbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1vdmUoYXV0b21hdGlvbkNsaWVudCk7CiB9CkBA
IC00MDIsNyArNDAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkMKIHsKICNpZiBFTkFCTEUo
TEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIGlmICghY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50KQotICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CisgICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQp
OwogI2VuZGlmCkBAIC00OTIsNyArNDkyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAg
ICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogICAgIH0KIAotICAgIGF1dG8gbmV0d29y
a1Byb2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtQcm9jZXNzUHJveHk+KCp0aGlzKTsK
KyAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gbWFrZVVuaXF1ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5
PigqdGhpcyk7CiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwogCkBAIC0yNTEwLDcgKzI1MTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb2xs
ZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYQogICAg
ICAgICBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShtX3By
ZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJhbmRvbSgpKTsKIAogICAgIGF1
dG8mIHZhbHVlID0gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5lbnN1
cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogCiAgICAgKnZhbHVlID0gcHJld2FybUluZm9ybWF0aW9uOwpAQCAtMjU1NywxMiArMjU1
NywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnRha2VV
cGxvYWRBc3NlcnRpb24oKTsKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCghbV91aVByb2Nlc3NV
cGxvYWRBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAi
V2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsK
KyAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NB
c3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAgICAgfQogICAgIAogICAgIGF1dG8g
cmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5hZGQocHJvY2Vzc0lELCBudWxscHRyKTsK
ICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRl
ZE5ldHdvcmtpbmcpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFBy
b2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBs
b2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJRCkKQEAgLTI1OTksMTIgKzI1OTksMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUaGUgbnVtYmVy
IG9mIHByb2Nlc3NlcyBwbGF5aW5nIGF1ZGlibGUgbWVkaWEgaXMgbm93IG9uZS4gVGFraW5nIFVJ
IHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwogCiAgICAgICAgIEFTU0VSVCghbV91aVByb2Nlc3NNZWRp
YVBsYXliYWNrQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNz
ZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJv
Y2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3Jl
Z3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOworICAgICAgICBtX3VpUHJv
Y2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+
KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0
aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CiAg
ICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nlc1BsYXlpbmdBdWRpYmxlTWVkaWEu
YWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsK
LSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNz
ZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1lZGlhIFBsYXli
YWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRp
YVBsYXliYWNrKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1lZGlh
IFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29u
OjpNZWRpYVBsYXliYWNrKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9j
ZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDBiMjQyYTJiYjU4Njc0YzAzOGNmN2NmYTQ5MmRiN2Q5NWNhZTAwMWUuLmRhMzZmNmJhNThhNTMw
NTZlMDhjMmI2NmIyMzhlN2VlMzM4N2U3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIFdlYlByb2Nlc3NQcm94eTo6
V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFT
dG9yZSoKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQp
IHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKICAgICAsIG1fd2Vi
c2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
KHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQor
ICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2lzUHJld2FybWVk
KGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50
LmgKaW5kZXggZTlmY2YwMDE1Mzk5NWRjMWNjZTEzNWY4YzA5MmU5MmU2NmRiZmYzYS4uZDBiYmE1
NjRjMjc1ODJkNzgyNmU5ZjJjMjA2MjIzNzAyMjcyOTUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGll
bnQuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3Rv
cmVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fp
cm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8v
QmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDE4Mjk0ZDM3ZmU0OWVlZDZkNjlkZmZmZjVmMmY2
NTA3MGI2NmNkOTAuLjdiZGQwM2QzYzhlYzhlMDY2MmU3N2QwMTgyNTBiNTA4OGMyNmNmYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWly
by5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogICAgICAgICBHZGtWaXN1
YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dlYlBhZ2VQcm94eS52aWV3V2lk
Z2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdka192aXN1YWxfZ2V0X3NjcmVl
bih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihz
aGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVOX1hESVNQTEFZKHNjcmVlbikpOwot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9Y
MTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KEdE
S19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAogICAgICAg
ICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdka192aXN1YWxfZ2V0X2RlcHRoKHZp
c3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgfQogI2VuZGlmCiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsPiht
X3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tp
bmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiB9
CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGI4NzRmYjBmYjJlMmE3ZTdlYzM2Y2M0NGUzOWQ2
MjQ5MDZhNGM1ZjEuLmY4ODhjMGY0NDZjNjI3MTI3YzgzNzViZTBkODFhNmEzZjJjMDlmNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3Rv
ckNsaWVudC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVu
dDo6Y29ubmVjdGlvbkNsb3NlZCgpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVj
dCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKQogewogICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29u
bmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhp
cywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CiAgICAg
fSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLT5zaG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCmluZGV4
IDM4MzEwMDA1ODg5NGRlYzBmYjdiNTFjYWEwOWEyMzlkNzdkMDhhOGIuLjg5MzI3OWZiY2Y1OGFl
YWYyYWZkNmIxYTQ3YzFjNzZjMjNkODJiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3Bw
CkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpj
aGVja1JlcXVpcmVtZW50cygpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0Uo
T1BFTkdMX0VTKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+
IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51
bGxwdHIsICBmYWxzZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVu
R0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVs
bHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25z
M0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3Bl
bkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJl
bnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGdsRXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVuc2lvbnMtPnN1cHBvcnRz
KCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAgICAgICAgICBnbEltYWdlVGFyZ2V0
VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJE
T0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMi
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRs
ZXIuY3BwCmluZGV4IGU5YWU2NTUyYTdhMmQ4NjJjNGJkNGVlMTBlZDJlYzM2ZTkyZjgzMWQuLmNh
NjUzZTVlYmE3MGM5NjE1NWZmNzY0ODhjM2VkZjQyODFmODU3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCkBAIC0yMDIsNyAr
MjAyLDcgQEAgU2VsZWN0aW9uRGF0YSogRHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVj
dGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY28KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJv
cHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0ID0gbV9kcm9wcGluZ0NvbnRleHRzLmFkZChj
b250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFkcm9wcGluZ0NvbnRl
eHQpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBtX3BhZ2Uudmlld1dpZGdldCgpOwot
ICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERyb3BwaW5nQ29udGV4
dD4oY29udGV4dCwgcG9zaXRpb24pOworICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBtYWtlVW5p
cXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOwogICAgICAgICBWZWN0b3I8
R2RrQXRvbT4gYWNjZXB0YWJsZVRhcmdldHMoUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCku
ZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGRyb3BwaW5nQ29udGV4dC0+Z2RrQ29udGV4dCkp
OwogICAgICAgICBkcm9wcGluZ0NvbnRleHQtPnBlbmRpbmdEYXRhUmVxdWVzdHMgPSBhY2NlcHRh
YmxlVGFyZ2V0cy5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0byYgdGFyZ2V0IDogYWNjZXB0YWJs
ZVRhcmdldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21w
b3NpdG9yLmNwcAppbmRleCBjYmUzODBiMjQwZDk2MDExMTcyN2I3NzBhODI1ZTA5ZTA1NDdjOWVk
Li5jM2Q5OTczYzcwZGMyMDg5YzY4M2Q2NWE5MTNkYTI5NGQ1ZmZlYmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTQyMCw5
ICs0MjAsOSBAQCBib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8
RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVu
c2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOwogI2Vsc2UKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNp
b24oKSA+PSAzMjApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGds
RXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENv
bnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICBpZiAoZ2xF
eHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+
c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKICAgICAgICAgZ2xJbWFnZVRh
cmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRV
UkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJE
T0VTIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tCmluZGV4IGMyMzQxMWMxZjA5YjAxMGE2NTI1NGIzNjlkZDMxNjlk
MzFmMGMwZTAuLjYxZTg1OTRkNWI3YzQxYWFmOWZjODJjNjUzOGRiOWFkNzE4NTYzNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXIubW0KQEAgLTU4LDcgKzU4LDcgQEAgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6On5FZGl0
YWJsZUltYWdlQ29udHJvbGxlcigpCiBFZGl0YWJsZUltYWdlJiBFZGl0YWJsZUltYWdlQ29udHJv
bGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRl
ZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZWRpdGFibGVJ
bWFnZXMuZW5zdXJlKGVtYmVkZGVkVmlld0lELCBbJl0gewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2U+
KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPiBpbWFnZSA9IG1ha2VV
bmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKICAgICAgICAgaW1hZ2UtPmRyYXdpbmdWaWV3ID0gbV93
ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5nVmlldyhlbWJlZGRlZFZpZXdJ
RCk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3
Lm1tCmluZGV4IGQwM2ExNzI2YWIzMzRhMDBlNjBmYmMwNTBiNTBlNWMzMzc1YWY3MjAuLjdmMGY5
NDg0ZmQ3Nzc0ZGQxMTU3YWUyODg1YzkwYTNiZjJlZTc5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5n
Vmlldy5tbQpAQCAtNjUsNyArNjUsNyBAQCAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogICAgIGlm
ICghc2VsZi5fY29udGVudFZpZXcud2luZG93IHx8IF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0
b3IoX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlv
bkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9y
KF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsKKyAgICBfYXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNl
bGYsIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3Io
X2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQp
LCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOwogICAgIAogICAg
IGlmIChfbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kICYmICFbc2VsZiBpc0JhY2tncm91
bmRdKQogICAgICAgICBbc2VsZiBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggNjgxMWU4
N2E0YTQyMTAwNWJkOTRhN2FjMjE2NTQzZWNjMDBhNzdmYy4uNDMxZmFjZDFlNjgzOTdlYzg1NzM5
MWFiMWNmODg4ZDM4NDE1N2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilw
cgogICAgIF9wYWdlLT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1ZSk7CiAKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCi0gICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7CisgICAgX3BhZ2Ut
PnNldEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+
KF93ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRp
c3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMjM5LDcgKzIzOSw3IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmCiAKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFn
ZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwg
d2ViVmlldyk7CisgICAgX3BhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUNsaWVu
dEltcGw+KHNlbGYsIHdlYlZpZXcpOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIHJl
dHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bv
b2wgY29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pXTsKQEAgLTU0MSw3ICs1NDEs
NyBAQCAtICh2b2lkKV93ZWJWaWV3RGVzdHJveWVkCiAKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJL
aXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5OihXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eSYpcHJvY2VzcwogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLCBwcm9jZXNzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCA5ZTE2Y2NiZmQ2YjIwMWNiNTlmNzM4N2FiYWZmODE4YjU1NjA2OTcy
Li5kM2VkYTM2OWMwMzcxYzFmMmMxM2ExZDA1OTkxNWRiNmRkNWU5MmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTgwNiw3ICs4MDYsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICAgICAKICAg
ICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50
IHNldERlbGVnYXRlOnNlbGZdOwotICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNl
bGYpOworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJL
aXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOwogICAgIF9pc0V4cGVjdGlu
Z0Zhc3RTaW5nbGVUYXBDb21taXQgPSBOTzsKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9
IE5POwogICAgIF9pc0RvdWJsZVRhcFBlbmRpbmcgPSBOTzsKQEAgLTgyMSw3ICs4MjEsNyBAQCAt
ICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RS
SVZFTl9URVhUX0NIRUNLSU5HKQotICAgIF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAg
X3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5n
Q29udHJvbGxlcj4oKl9wYWdlKTsKICNlbmRpZgogCiAgICAgX2hhc1NldFVwSW50ZXJhY3Rpb25z
ID0gWUVTOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgLSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRl
ckZvcldlYlZpZXcKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYgKCFfaW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXIpCi0gICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CisgICAgICAg
IF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdV
cGRhdGVEZWZlcnJlcj4oc2VsZik7CiAKICAgICBCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVy
OwogICAgIHsKQEAgLTUzMTEsNyArNTMxMSw3IEBAIC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czoo
Y29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1CiAg
ICAgICAgIC8vIERlZmVyIHZpZXcgdXBkYXRlcyB1bnRpbCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rp
b24gdG8gYXZvaWQgYSBub3RpY2VhYmxlIGZsYXNoIHdoZW4gc3dpdGNoaW5nIGZvY3VzCiAgICAg
ICAgIC8vIGJldHdlZW4gZWxlbWVudHMgdGhhdCByZXF1aXJlIHRoZSBrZXlib2FyZC4KICAgICAg
ICAgaWYgKCFpbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAgICAgICAgICAgIGlucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURl
ZmVycmVyPihzZWxmKTsKKyAgICAgICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKICAgICAgICAg
W3NlbGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGIwMjgyNDg5MjAwM2EwNDk4OTI5ZTcw
NmE1OTA0NTlhNGY4NzFhY2QuLmMwOGY5Nzg2ZjBlYWFiNGE5NzViYjU2NDhjNzQyN2M1NjM2ZGJl
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtOTEyLDcgKzkxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMo
Y29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24sCiAgICAgQVBJOjpP
YmplY3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwogICAgIGlmIChtX2VkaXRvclN0YXRlLmlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRv
IGVsaW1pbmF0ZSBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIGFsdG9nZXRoZXIs
IGluIGZhdm9yIG9mIG9ubHkgZGVmZXJyaW5nIGFjdGlvbnMgdGhhdCBhcmUgZGVwZW5kZW50IG9u
IHBvc3QtbGF5b3V0IGVkaXRvciBzdGF0ZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgbV9kZWZlcnJl
ZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudERpZEZv
Y3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNl
cklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1
c2VyRGF0YU9iamVjdCB9KTsKKyAgICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3Vt
ZW50cyA9IG1ha2VVbmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9j
dXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91
c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTI1OCw3ICsxMjU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQo
UmVmPFcKIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBX
ZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29yZGluYXRvclByb3h5LCBQS1BheW1l
bnRSZXF1ZXN0ICpwYXltZW50UmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXltZW50Q29vcmRpbmF0b3JQ
cm94eSwgcGF5bWVudFJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50
UmVxdWVzdCk7CiB9CiAKIFVJVmlld0NvbnRyb2xsZXIgKldlYlBhZ2VQcm94eTo6cGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KaW5kZXgg
OGIxMjNiMGE5N2MwMzBlOTQ1MGY1ZWQ0ZjhjMTc0YjMyMWJiNDA3Yi4uOGZmOGEwYmY0NzViM2Y3
YjIzNjIyOWY0MTJlM2YzMjY2Y2Y5NTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0Nv
bnRyb2xsZXIubW0KQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIFdLRnVs
bFNjcmVlblZpZXdDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xs
ZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggODM0MzQ4ODljZGNmMjQ5
YzFjMjc5MWJkMDdiZmZmYTIwMWNmNDg3ZC4uYTkxMjk1M2VjOTFjMjczMzYyNjc2M2RhZjlkYTI2
YjI0OTMzYzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xp
ZW50SW1wbChOU1ZpZXcqIHZpZXcsIFdLV2ViVmlldyAqd2ViVmlldykKICAgICA6IFBhZ2VDbGll
bnRJbXBsQ29jb2Eod2ViVmlldykKICAgICAsIG1fdmlldyh2aWV3KQogI2lmIFVTRShESUNUQVRJ
T05fQUxURVJOQVRJVkVTKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX2Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlcj4oKSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCA0M2U5
Zjk2N2JjODk3N2ZiZmY4Yzg2NjhhNWNjYTFmMzgyNGMwODA5Li4zNGE2OWJiZTBiYjBkMTc2YjU1
MWJhZjJkN2EzNWMxZmFhYzAzN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtNTQsNiAr
NTQsNyBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgRGVmYXVsdFdhdGNoZG9nVGltZXJJ
bnRlcnZhbCA9IDE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29yZTo6VmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgKnBh
cmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCkBAIC0xNTAsNyArMTUxLDcgQEAgLSAoaWQp
aW5pdFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luZG93IHdlYlZpZXc6KE5TVmlldyAqKXdlYlZp
ZXcgcGFnZTooV2ViS2l0OjoKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgX3BhZ2UgPSAm
cGFnZTsKIAotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xp
ZW50PigpOworICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Pigp
OwogICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldFBhcmVudChzZWxmKTsKIAogICAgIFtz
ZWxmIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IDY2MDMxN2MyZmJjNzli
NjhiYjViNzM0NzZhNThiZWZlYTA5YjA2ZDMuLjY5ZDlkOWUyZDQ0NDg0M2QxNTI3MGY1MTE3Zjc3
NGNkMjM3ZDVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4
dEZpbmRlckNsaWVudC5tbQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBUZXh0RmluZGVyRmluZENsaWVudCA6IHB1
YmxpYyBBUEk6OkZpbmRNYXRjaGVzQ2xpZW50LCBwdWJsaWMgQVBJOjpGaW5kQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0Rmlu
ZGVyRmluZENsaWVudChXS1RleHRGaW5kZXJDbGllbnQgKnRleHRGaW5kZXJDbGllbnQpCiAgICAg
ICAgIDogbV90ZXh0RmluZGVyQ2xpZW50KHRleHRGaW5kZXJDbGllbnQpCkBAIC0xNjgsOCArMTY5
LDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViS2l0OjpXZWJQYWdlUHJveHkm
KXBhZ2UgdmlldzooTlNWaWV3ICopdmlldyB1c2UKICAgICBfdmlldyA9IHZpZXc7CiAgICAgX3Vz
ZVBsYXRmb3JtRmluZFVJID0gdXNlUGxhdGZvcm1GaW5kVUk7CiAgICAgCi0gICAgX3BhZ2UtPnNl
dEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmlu
ZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXRG
aW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+
KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4
dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmNwcAppbmRleCBlZDBkNWZmZTk1ODlmOTVlNDRhMDdmMjIxOGVkODJjMDBmMDE3ZDdlLi5l
NzRhZGFjMWU2NWViZTVjOTliMzFkOTA2N2FlNjExNThmMzk4N2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpkaWRDbG9z
ZShDb25uZWN0aW9uSUQpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdChDb25u
ZWN0aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiB0
eXBlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUo
c3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9u
SUQsIHRhcmdldElELCAmdHlwZV0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMs
IGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwogICAgIH0pOwogCiAgICAgaWYgKCFhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
c29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRl
eCAxYjZkOWNjNTRmYzYwYjUzZTQ0MDI3MWYyMzA4ZTdjMGY0N2M4NzRjLi5hODgzM2Y2MjQ4N2Y5
YTY3MjEwMzk5ZWM5ZjhmZjVlMDkyNzEyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94eSwKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3Vy
ZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RV
UkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlz
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1
ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAq
dGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgLy8gU2V0dXAgdGFy
Z2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+
KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZSht
YWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6
VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91
cCgpLnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciho
YW5kbGVyLmdldCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbEJ1aWxkZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcApp
bmRleCBiNjdkNzNhNGRjNDg4YjMxZmRjOWE0NzIxOTY5MTQwNDI3NDQ4ODI1Li41ZDUwYWU1NTQ2
ODBhNmU5ZTNkYTJjZTg0YmU1NjRkNWMzMjM3ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3Rv
cmVCYWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4o
bV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3Ip
OwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRl
clRhcmdldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGNkNmYwOGZmMThiZDU1YzE1NTQ0NjNkNGE0
MGI1MWU0NWIyZWFiOWYuLjAzMDdjNGY5ZjE0M2Y4NmRjNjIwOGI0ODRiZThkYjQyMmRjMGY0MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV2ViVmlldyYg
dmlldykKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1
ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVh
UHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2Uo
KSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJl
Z2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCBjZDUzNTJk
ZjdhYTA0ZTY5ZDliMGY5OGVkMDAxZTVjNjMzMmY3NTkzLi42N2U1ZTRiMjdhM2FlODBhYjY2OGY2
YzM0MTdjMGYwY2U2YjdmMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBXZWJWaWV3OjpyZWdpc3RlcldlYlZpZXdXaW5k
b3dDbGFzcygpCiB9CiAKIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBjb25zdCBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBhcmVudFdpbmRvdykKLSAgICA6
IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisg
ICAgOiBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQogewog
ICAgIHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAppbmRl
eCBiNmQ0YTA0MjBkNWE1ZGJkNjQ2MDgzYWY2Nzg4MDUxYmY2Y2M0N2UwLi5mMmQ2MmVhOTc5MGY4
MDdhNjViNWQzZTU4ZjgwYjk3ZjA2YWRiZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBAIC01MSw2
ICs1MSw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwogICAg
IGV4cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvcihXZWJQYWdlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApp
bmRleCA0ZjgxMGNjZjM4ZWNmYTJjOTllY2JkYTg5ZDA0MWNlYjhkMjMzM2I4Li5hYWIzNDU3Y2Vk
NjRhNWE5MTBjZGM1NjJhY2MwMTE1MDBkM2M2Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFkcyhjb25z
dCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGEKICAgICAgICAgaWYgKGdhbWVwYWREYXRh
c1tpXS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fZ2FtZXBh
ZHNbaV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7Cisg
ICAgICAgIG1fZ2FtZXBhZHNbaV0gPSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRh
c1tpXSk7CiAgICAgICAgIG1fcmF3R2FtZXBhZHNbaV0gPSBtX2dhbWVwYWRzW2ldLmdldCgpOwog
ICAgIH0KIH0KQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVw
YWRDb25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmIGdhbWVwYWREYXRhKQogCiAgICAgQVNTRVJU
KCFtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldKTsKIAotICAgIG1fZ2FtZXBhZHNbZ2Ft
ZXBhZERhdGEuaW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWRE
YXRhKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gbWFrZVVuaXF1ZTxX
ZWJHYW1lcGFkPihnYW1lcGFkRGF0YSk7CiAgICAgbV9yYXdHYW1lcGFkc1tnYW1lcGFkRGF0YS5p
bmRleCgpXSA9IG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0uZ2V0KCk7CiAKICAgICBm
b3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZmQ2NTIzZDZmYTdkNzU5M2QxYjhkM2IzMmJh
YjQ2M2E5NjhlYWEyOC4uNjMzZjIyZmRmZTQyNzJiMzlkZTI1ZWEwZTRhMGEwNGQ3Y2RlNmNjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAg
LTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFz
cyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXgg
MGJiNGYyYjQyMWEzZWMyMjg3NTRlNjM4MjlkNDFhYmJlMmUwNmY4ZC4uYTZjMjg3MTZhYjE2Nzhh
ZmRkNTc0YzlkZjlmZTI4Njg2MzQ2MzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAt
NDQsNiArNDQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3Mg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGUuY3BwCmluZGV4IGYzZWM3MjA4N2NhMjg4NjdmNTRkOWRmMGY1MGQ4NzEwMmUwMTZm
YTIuLmNhODVkNTg1ZGNmMWI3NmVmMGI4ZDExZDU5YWQ2NjA0YWMzZjE4NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZUdldFR5cGVJRCgp
CiAKIHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRs
ZUNsaWVudEJhc2UgKndrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZikt
PnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+
KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xpZW50KG1h
a2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAog
dm9pZCBXS0J1bmRsZVNldFNlcnZpY2VXb3JrZXJQcm94eUNyZWF0aW9uQ2FsbGJhY2soV0tCdW5k
bGVSZWYgYnVuZGxlUmVmLCB2b2lkICgqY2FsbGJhY2spKHVpbnQ2NF90KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5jcHAKaW5kZXggZjEyYTViYTc3NGQ2Y2M2OGQwODRmMWY2MDIxY2ViZjM4MWFh
M2E1OC4uZGMwNzU4YWQ3NWFmMzYxZGZiZTgxNmViMTEzZjQxYzdmMDlkODFjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQ
YWdlR2V0VHlwZUlEKCkKIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSog
d2tDbGllbnQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2ViS2l0Ojp0b0lt
cGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0Ns
aWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNv
bnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VS
ZWYpOwogICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBAIC04NiwyMiArODYsMjIgQEAgdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVQYWdlQ29udGUKIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQo
V0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudEJhc2UqIHdr
Q2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudCh3a0NsaWVudCA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50ID8gbWFrZVVu
aXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudD4oKndrQ2xpZW50KSA6
IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpKTsKIH0KIAog
dm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0lt
cGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwog
fQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAg
IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UmVz
b3VyY2VMb2FkQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdl
UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQp
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJj
ZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNl
TG9hZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJh
c2UqIHdrQ2xpZW50KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9s
aWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGll
CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYs
IFdLQnVuZGxlUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0lt
cGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktp
dDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1ha2VVbmlxdWU8
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXggZWJkM2VmNWYyOTMwOGMxNDE5M2Ex
ODFiN2UxZTRhNDI1ZmQyMWRkMi4uNjlmN2FmMjJiNTY3NTA0ZDRmMzFmMGQ3YTcwYjg3NGUwOWZh
NTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcApAQCAtNTQs
NiArNTQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlT3Zl
cmxheUFjY2Vzc2liaWxpdHlDbGllbnRCYXNlPiB7CiB9CiAKIGNsYXNzIFBhZ2VPdmVybGF5Q2xp
ZW50SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlPiwgcHVi
bGljIFdlYktpdDo6V2ViUGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGFnZU92ZXJsYXlDbGllbnRJbXBsKFdL
QnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAtMjE2LDcgKzIx
Nyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZU92ZXJsYXlHZXRUeXBlSUQoKQogCiBXS0J1bmRs
ZVBhZ2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQYWdlT3Zl
cmxheUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAgYXV0byBj
bGllbnRJbXBsID0gbWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsK
ICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6V2ViUGFnZU92ZXJsYXk6OmNyZWF0ZShXVEZNb3Zl
KGNsaWVudEltcGwpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMv
V0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCmluZGV4IGFjYzM1YTIxYjU5ZjFhYTMxZTMzMDUxYTY2
YmMxMzA1OTk2Njk5ZDMuLmQ2ZmZkMWNjYzA0YTkzYTdhMDlkMmIzNjU1OWE4ZjBjMDk1MGZmMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCkBA
IC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIGNsYXNzIFBhZ2VCYW5uZXJDbGllbnRJbXBsIDogQVBJOjpDbGllbnQ8V0tCdW5kbGVQ
YWdlQmFubmVyQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlQmFubmVyOjpDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VCYW5uZXJD
bGllbnRJbXBsKFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJhc2UqIGNsaWVudCkKICAgICB7CkBA
IC0xMDMsNyArMTA0LDcgQEAgV0tCdW5kbGVQYWdlQmFubmVyUmVmIFdLQnVuZGxlUGFnZUJhbm5l
ckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKENBTGF5ZXIgKmxheWVyLAogICAgIGlmICh3a0NsaWVu
dCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIGNs
aWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+
KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFn
ZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6
UGFnZUJhbm5lcjo6Y3JlYXRlKGxheWVyLCBoZWlnaHQsIGNsaWVudEltcGwucmVsZWFzZSgpKS5s
ZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUu
Y3BwCmluZGV4IDQyMTAxZjhjODJjYjJhNTQ4M2JhZTRkYzg0ODA3YjQxNjVhOTJkODYuLjA5NWYz
NmZmYzYzZjk1YjQ3NTU4MWY1YjhlZDVlOTNmNDI3MzhiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBET01P
YmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9i
c2VydmVyKFdlYkNvCiB7CiAgICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpLmFkZCgmZnJhbWUs
IG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyPihmcmFtZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUpOwogICAgIHJldHVybiAqcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNzIERPTU9iamVj
dENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlCiAgICAgICAgIGlmIChkb21XaW5kb3cgJiYgKCFtX2RvbVdpbmRvd09ic2VydmVy
IHx8IG1fZG9tV2luZG93T2JzZXJ2ZXItPndpbmRvdygpICE9IGRvbVdpbmRvdykpIHsKICAgICAg
ICAgICAgIC8vIE5ldyBET01XaW5kb3csIGNsZWFyIHRoZSBjYWNoZSBhbmQgY3JlYXRlIGEgbmV3
IERPTVdpbmRvd09ic2VydmVyLgogICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgICAgIG1f
ZG9tV2luZG93T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd09ic2VydmVyPigq
ZG9tV2luZG93LCAqdGhpcyk7CisgICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0gbWFr
ZVVuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOwogICAgICAgICB9
CiAKICAgICAgICAgbV9vYmplY3RzLmFwcGVuZCgmZGF0YSk7CkBAIC0yMTUsNyArMjE1LDcgQEAg
dm9pZCBET01PYmplY3RDYWNoZTo6cHV0KHZvaWQqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBl
cikKIHsKICAgICBET01PYmplY3RNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RzKCku
YWRkKG9iamVjdEhhbmRsZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQot
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmpl
Y3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVy
KSk7CiB9CiAKIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RI
YW5kbGUsIHZvaWQqIHdyYXBwZXIpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBET01PYmplY3RD
YWNoZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikKICAg
ICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdf
T0JKRUNUKHdyYXBwZXIpKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKICAgICBpZiAoV2ViQ29y
ZTo6RnJhbWUqIGZyYW1lID0gb2JqZWN0SGFuZGxlLT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAg
ICAgIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKCpmcmFtZSkuYWRkT2Jq
ZWN0Q2FjaGVEYXRhKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRl
bnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCA0Y2NlYzYyZWYwZTEx
MzFmYTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmLi40ZDc0MmU0MDliYmZjN2NmYWI0MDhjZDY1Mzhh
ZWY5ZjIyOGZkNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lv
bk1hbmFnZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJLaXRFeHRlbnNpb25NYW5h
Z2VyOjppbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIEFQSTo6T2JqZWN0KiB1c2UK
ICAgICBzY2FuTW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBtb2R1bGVQYXRocyk7CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhz
W2ldKTsKKyAgICAgICAgYXV0byBtb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0
aHNbaV0pOwogICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGlmIChpbml0aWFsaXplV2ViRXh0ZW5zaW9uKG1vZHVsZS5nZXQoKSwgdXNl
ckRhdGEuZ2V0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAppbmRl
eCAwNDA3MmViODY0ZGJlMzVmODBkZmM4NmFkMGU4ODNjM2U5OWNlNDRmLi5jY2I1MWUwZDk2NDBj
NjZmODU5NmU0NzQxNzE0MDU4ZTkxMzk3Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViRWRpdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRXZWJFZGl0b3IqIHdlYmtpdFdl
YkVkaXRvckNyZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIFdlYktpdFdlYkVk
aXRvciogZWRpdG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9FRElUT1IsIG51bGxwdHIpKTsKICAgICBlZGl0b3ItPnByaXYtPndlYlBhZ2UgPSB3ZWJQ
YWdlOwotICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikp
OworICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudChtYWtlVW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOwogICAgIHJl
dHVybiBlZGl0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lv
bi5jcHAKaW5kZXggNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5NjEyOTlhNzAxMDgxNzUwMS4uZTMw
NmUzZmVmMjYzMWQ1NDY2NTU3MTE2ZTVlNDg3ZDM3MWM3ODU3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBX
ZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkluamVj
dGVkQnVuZGxlOjpDbGllbgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25D
cmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24q
IGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfRVhURU5TSU9OLCBOVUxMKSk7Ci0gICAgYnVuZGxlLT5zZXRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7Cisg
ICAgYnVuZGxlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRs
ZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGNmYzUwMzFlZDZlNGEyOTU0ZmUwMmEw
M2RhODdhMTYxY2QyZDMwODIuLjZkYjI5OWY0NzExMmExNDQ1ZjdlNjgzMzQ3MmQzZGI4ZDdkN2I5
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBzdGF0aWMgV2ViS2l0RnJhbWUqIHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUoV2ViRnJhbWUq
IHdlYkZyYW1lKQogICAgIGlmICh3cmFwcGVyUHRyKQogICAgICAgICByZXR1cm4gd3JhcHBlclB0
ci0+d2Via2l0RnJhbWUoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBw
ZXI+IHdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEZyYW1lV3JhcHBlcj4oKndlYkZy
YW1lKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0g
bWFrZVVuaXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CiAgICAgd3JhcHBlclB0
ciA9IHdyYXBwZXIuZ2V0KCk7CiAgICAgd2ViRnJhbWVNYXAoKS5zZXQod2ViRnJhbWUsIFdURk1v
dmUod3JhcHBlcikpOwogICAgIHJldHVybiB3cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgpOwpAQCAt
Njc4LDExICs2NzgsMTEgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJQ
YWdlKiB3ZWJQYWdlKQogICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSBXRUJLSVRfV0VCX1BBR0Uo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QQUdFLCBOVUxMKSk7CiAgICAgcGFnZS0+cHJp
di0+d2ViUGFnZSA9IHdlYlBhZ2U7CiAKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJl
c291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+
KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+
c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VD
b250ZXh0TWVudUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxl
VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQ
YWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRm9y
bUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VM
b2FkQ2xpZW50KG1ha2VVbmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFnZSkpOworICAg
IHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFBh
Z2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUNv
bnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50PihwYWdlKSk7
CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFBhZ2VV
SUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVu
dChtYWtlVW5pcXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7CiAKICAgICByZXR1cm4gcGFnZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KaW5kZXggODEwNTVjZTdm
ZGViYTMxOGRhYjA2ODI2MzRjNmJkODRhMzdmYWU4Yy4uMDg0ZjMwMDVkNjEwM2Q0ZTI1MDMzYzI1
NmM3MGMwZTA2NDA0MWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3Iu
bW0KQEAgLTQ1LDcgKzQ1LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooV0tET01SYW5nZSAqKXJh
bmdlCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRJdGVy
YXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRv
V2ViQ29yZVJhbmdlKHJhbmdlKSk7CisgICAgX3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0
ODgwMGJiMzE3OTA2NWU0ZTczMjkzMDY5MDU0NjgwZTQzNGFmMWZmLi40MjAyMzk2YWJhZmFmMzBk
NzE4OWFlYjY4NTA5ZWEyNzE3MWI5NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tCkBAIC01NDQsNyArNTQ0LDcgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4pZm9ybURlbGVnYXQKICAgICB9Owog
CiAgICAgaWYgKGZvcm1EZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxl
Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAg
X3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+
KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1D
bGllbnQobnVsbHB0cik7CiB9CkBAIC02NzMsNyArNjczLDcgQEAgLSAodm9pZClfc2V0RWRpdGlu
Z0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5n
RGVsZWcKICAgICB9OwogCiAgICAgaWYgKGVkaXRpbmdEZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2Ut
PnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50Pihz
ZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtl
VW5pcXVlPENsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5k
ZXggMjBjZTU1OTExZDcwNjUxYzMzNWE3MGFjZjI0ZTViZGZjMjFiZDYzMS4uOTk3OWQ2Mzg0ZGZm
NWM5ODA1OTFmMjkwODNjOTM3Mjk2MzQ0YTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3Jl
YXRlKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIEluamVjdGVkQnVuZGxlOjpJ
bmplY3RlZEJ1bmRsZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogICAgIDogbV9wYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgICwg
bV9wbGF0Zm9ybUJ1bmRsZSgwKQotICAgICwgbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCisgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKSkKIHsKIH0KIApAQCAtMTE0LDcgKzExNCw3IEBA
IEluamVjdGVkQnVuZGxlOjp+SW5qZWN0ZWRCdW5kbGUoKQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+JiYg
Y2xpZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOworICAgICAgICBtX2NsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOwogICAgIGVsc2UK
ICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmgKaW5kZXggMGNhNWVhNmQyYWJlNTcyMTU0ZDIxYmVkMGNjOWEwNTNlN2Q2NmMx
OC4uYmZiM2QwNDUxNDM3MzZjMzFkZjk4OGFiMWIwMGRlNDJiODUzMDg5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIgOiBw
dWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIpOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIoV2ViUHJvY2Vz
cyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCmlu
ZGV4IGQ3YzVjNjgzNDRiNzI3MzhkOTQ5N2RmMDEyY2EzNzZiYjg0MTg4ZGEuLmIwYmQ1MzRjZTE5
ZDczODYxZDgxNzZhODIwNWNkY2U2MTk1ZmQwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyPiwgcHJpdmF0ZSBXZWJDb3JlOjpNZWRpYUNhblN0YXJ0TGlzdGVuZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAgICAgflVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzMzNTI3NjU4NzFk
ODI1NWEyM2RiN2I1NWU2ZDQ0ZWU3MzM5MjJkNy4uMmU1N2FmMjQ4M2JkMzZiM2RkODVlNGVjMThk
ZGUxMGY0NDM2ZTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMiwzOCArMTMyLDExIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZE1lc3NhZ2UoVCYmIG1lc3Nh
Z2UsIHNpemVfdCBieXRlCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsK
LSAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJbkJ5dGVzKCk7Ci0gICAgaWYgKCFp
bmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZh
aWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5k
TWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBtZXNz
YWdlIH0sIGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1lc3NhZ2UpKTsKLQotICAg
IHJldHVybiBTZW5kU3VjY2VzczsKLX0KLQotV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJpbmFyeURhdGEs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCi17Ci0gICAgaWYgKCFp
bmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZh
aWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5k
TWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpE
YXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0
YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNl
Ci0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7Ci0KLSAgICBy
ZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KIGNsYXNzIEJsb2JMb2FkZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQmxvYkxvYWRlcihXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1l
bnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKLSAgICAgICAgOiBtX2xvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0Fy
cmF5QnVmZmVyLCB0aGlzKSkKKyAgICAgICAgOiBtX2xvYWRlcihtYWtlVW5pcXVlPFdlYkNvcmU6
OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5
QnVmZmVyLCB0aGlzKSkKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgIHsKICAgICAgICAgbV9sb2FkZXItPnN0YXJ0KGRvY3VtZW50
LCBibG9iKTsKQEAgLTIyNiw3ICsxOTksNyBAQCBjbGFzcyBQZW5kaW5nTWVzc2FnZSB7CiAKICAg
ICBQZW5kaW5nTWVzc2FnZShXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6OkJs
b2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ICAgICAgICAgOiBtX3R5cGUoVHlwZTo6QmxvYikKLSAgICAgICAgLCBtX2Jsb2JMb2FkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpKQorICAgICAgICAsIG1fYmxvYkxvYWRlcihtYWtlVW5pcXVlPEJsb2JMb2Fk
ZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpCiAgICAgewog
ICAgIH0KIApAQCAtMjQ0LDEzICsyMTcsNDAgQEAgY2xhc3MgUGVuZGluZ01lc3NhZ2UgewogICAg
IHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiB9OwogCitXZWJTb2Nr
ZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIGF1dG8gYnl0ZUxlbmd0aCA9IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMo
KTsKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAgICAg
IHJldHVybiBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkp
CisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2Vu
ZFN0cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBtX3Bl
bmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2FnZSkp
OworCisgICAgcmV0dXJuIFNlbmRTdWNjZXNzOworfQorCitXZWJTb2NrZXRDaGFubmVsOjpTZW5k
UmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmlu
YXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK3sKKyAg
ICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAgICAgIHJldHVy
biBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCisgICAg
ICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEg
eyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5
RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVu
ZGluZ01lc3NhZ2U+KGJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKKworICAg
IHJldHVybiBTZW5kU3VjY2VzczsKK30KKwogV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKFdlYkNvcmU6OkJsb2ImIGJsb2IpCiB7CiAgICAgLy8gQXZv
aWQgdGhlIEJsb2IgcXVldWUgYW5kIGxvYWRpbmcgZm9yIGVtcHR5IGJsb2JzLgogICAgIGlmICgh
YmxvYi5zaXplKCkpCiAgICAgICAgIHJldHVybiBzZW5kKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZShibG9iLnNpemUoKSwgMSksIDAsIDApOwogCi0gICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2Is
IFt0aGlzXSB7CisgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGlu
Z01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0aGlzXSB7CiAgICAgICAgIHdoaWxl
ICghbV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvJiBtZXNz
YWdlID0gbV9wZW5kaW5nTWVzc2FnZXMuZmlyc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHAKaW5kZXggYWZlMjQwODg0YzNjYmFhYTZhZDIzOGJiZTIzZjk1OTMxNTkxOTIxZC4uZTRlN2Uz
ZjdjMDQ0MzdmNmQwYzc4NTRhYjg5ZDkxZWY1M2Y2NmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIGNsYXNzIEFzeW5jUmVzb2x2ZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0
Yzo6QXN5bmNSZXNvbHZlckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHJpdmF0ZToKICAgICBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UqIENyZWF0ZSgpIGZpbmFs
CiAgICAgewpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1
YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKIAogcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVy
LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29u
ZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNy
ZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJX
ZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJS
VENOZXR3b3JrKCkuc29ja2V0RmFjdG9yeSgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzdGQ6
Om1ha2VfdW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkuc29ja2V0RmFjdG9yeSgpLCBXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsK
IH0KIAogdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rp
b25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKaW5kZXggNWQ2MzgzZjZiNTA2NTNiNWM2NzA3MDcw
NWM2YzEwMjg3MGZhMDIzMS4uMzk5MDY5OWQwNzc4ZmViMTdiMGNhOGU2MDc4MTQxMDhhNWMwMGFm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OwogCiBjbGFzcyBMaWJXZWJSVENS
ZXNvbHZlciBmaW5hbCA6IHB1YmxpYyBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ1Jlc29sdmVy
KHVpbnQ2NF90IGlkZW50aWZpZXIpIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDU29ja2V0RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKaW5kZXggZDc3OGQ1NzdlYThlZmMxYjM1
NmRmMWQ3YzAxN2VjZGYzMTg4MTA2YS4uN2ZlZjNiNmI4ZWM3YmU0NjY2MzI4MGNhOTczOGI5OTEz
Y2U4MTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29ja2V0QWRkcmVzcyBwcmVwYXJlU29ja2V0QWRk
cmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmCiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQq
IExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZlclRjcFNvY2tldChjb25zdCBydGM6
OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBv
cnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2Vi
UlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygp
KTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywg
KytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVy
VENQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2NrZXRzLnNldChz
b2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJl
YWQoW2lkZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9IHByZXBhcmVT
b2NrZXRBZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKSwg
bWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7CkBAIC02Niw3ICs2Niw3IEBAIHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZlclRjcFNv
Y2tldChjb25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OkNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJl
c3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCiB7Ci0gICAgYXV0byBzb2Nr
ZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVT
b2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRj
OjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJS
VENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29j
a2V0OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKICAgICBtX3Nv
Y2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCiAgICAgY2Fs
bE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigpLCBhZGRyZXNz
ID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9uTG9jYWxob3N0Q29u
bmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0XSgpIHsKQEAgLTgwLDcgKzgwLDcgQEAgcnRjOjpB
c3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlVWRwU29ja2V0
KGNvbnN0IHJ0Yzo6U29ja2UKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29j
a2V0RmFjdG9yeTo6Q3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYgbG9jYWxBZGRyZXNzLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZUFkZHJlc3Ms
IGNvbnN0IHJ0Yzo6UHJveHlJbmZvJiwgY29uc3Qgc3RkOjpzdHJpbmcmLCBpbnQgb3B0aW9ucykK
IHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Pigq
dGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6
Q2xpZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MpOworICAgIGF1dG8gc29ja2V0
ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRl
bnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywg
cmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENTb2NrZXQ6OlNU
QVRFX0NPTk5FQ1RJTkcpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCks
IHNvY2tldC5nZXQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tl
dCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0
YzoKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3Jl
YXRlTmV3Q29ubmVjdGlvblNvY2tldChMaWJXZWJSVENTb2NrZXQmIHNlcnZlclNvY2tldCwgdWlu
dDY0X3QgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXIsIGNvbnN0IHJ0Yzo6U29ja2V0QWRk
cmVzcyYgcmVtb3RlQWRkcmVzcykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExp
YldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0Lmxv
Y2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExp
YldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0Lmxv
Y2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNldFN0YXRlKExpYldl
YlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVEVEKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+
aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBM
aWJXZWJSVENTb2NrZXRGYWN0b3J5OjpkZXRhY2goTGliV2ViUlRDU29ja2V0JiBzb2NrZXQpCiAK
IHJ0Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Q3Jl
YXRlQXN5bmNSZXNvbHZlcigpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOworICAg
IGF1dG8gcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1Jlc29sdmVyPigrK3NfdW5pcXVl
UmVzb2x2ZXJJZGVudGlmaWVyKTsKICAgICBhdXRvKiByZXNvbHZlclBvaW50ZXIgPSByZXNvbHZl
ci5nZXQoKTsKICAgICBtX3Jlc29sdmVycy5zZXQocmVzb2x2ZXJQb2ludGVyLT5pZGVudGlmaWVy
KCksIFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4gcmVzb2x2ZXJQb2ludGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDJkMWU4NDI0N2JkMGEzMGM5NGQxZjJlYTMw
MWRkNTVkMDJhNmUwNzYuLmIyNzEzZjQ2YzFmYzEzYzlmMjdiYmUzOWNhNWRjNTE4NTBiMTgzZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3Mg
V2ViUGFnZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2ViTm90aWZpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKaW5kZXggMTZhMWE3ZjgzNDQ2MDUzZjMzZDY1NGU4MzMzMjI5NTBlZTk5NGQ3
Mi4uZDczZjFmMTZmODkwNzY5YzcyY2M5ZGQ0NDBkMjI5MjFmZjVmZmE5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBQbHVnaW5E
ZXN0cnVjdGlvblByb3RlY3RvciB7CiAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90
ZWN0b3IoTmV0c2NhcGVQbHVnaW4qIHBsdWdpbikKICAgICB7CiAgICAgICAgIGlmIChwbHVnaW4p
Ci0gICAgICAgICAgICBtX3Byb3RlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29udHJv
bGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+KHBs
dWdpbiktPmNvbnRyb2xsZXIoKSk7CisgICAgICAgICAgICBtX3Byb3RlY3RvciA9IG1ha2VVbmlx
dWU8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19j
YXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CiAgICAgfQogICAgIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA2OWEzYzkzZjEzMjZmYTRjNmY3ZmViZjhh
YjFiMmNhNGM3NzZiYzBlLi41OWY0ODI1MWYyODg1NGM2ZDE2ODBiMWQ2NGRmYWE1YTQ3YzY4MTA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgdWludDMyX3Qg
TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIodW5zaWduZWQgaW50ZXJ2YWwsIGJvb2wgcmVw
ZWF0LCB2b2lkICgqdGkKICAgICAvLyBGSVhNRTogSGFuZGxlIHdyYXBwaW5nIGFyb3VuZC4KICAg
ICB1bnNpZ25lZCB0aW1lcklEID0gKyttX25leHRUaW1lcklEOwogCi0gICAgYXV0byB0aW1lciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQs
IHRpbWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KHRoaXMsIHRp
bWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAgICAgCiAgICAgLy8gRklYTUU6
IEJhc2VkIG9uIHRoZSBwbHVnLWluIHZpc2liaWxpdHksIGZpZ3VyZSBvdXQgaWYgd2Ugc2hvdWxk
IHRocm90dGxlIHRoZSB0aW1lciwgb3IgaWYgd2Ugc2hvdWxkIHN0YXJ0IGl0IGF0IGFsbC4KICAg
ICB0aW1lci0+c3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGUwYWJjMmM3YjQxMjk5
MzAwMmJiYWI4YmRmYWI3ZjI2NTFhZGM1N2YuLmI2Yzc2YjZlZDcxNGNhYWEzYTQxZGRlNDFjMWQ2
YTEwNGZiN2FlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMzA4LDYgKzMwOCw3IEBAIGNs
YXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiAgICAgVmVjdG9yPGJvb2wsIDg+
IG1fcG9wdXBFbmFibGVkU3RhdGVzOwogCiAgICAgY2xhc3MgVGltZXIgeworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGltZXIp
OwogCiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4
IDA0OTYyOGY1YzYyNzAyZTRkNWQ0MTExODIwMTIzYmE1ZjRiOTY1MjQuLmJkYWExNDQ3ODQyMjY5
NWQ1MGVhODQ4YWFmY2NiY2UxMmQyYWQ5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
ZWxpdmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmIChtX3Ry
YW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9kZWxpdmVyeURh
dGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PHVpbnQ4X3Q+PigpOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBtYWtlVW5pcXVlPFZl
Y3Rvcjx1aW50OF90Pj4oKTsKIAogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+cmVzZXJ2ZUNhcGFj
aXR5KG1fZGVsaXZlcnlEYXRhLT5zaXplKCkgKyBsZW5ndGgpOwogICAgICAgICBtX2RlbGl2ZXJ5
RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
blgxMS5jcHAKaW5kZXggNDRkMTFiNTdjM2VhNmQ1MThjMThkMDRiODIyZDI4NmQ1M2U5NjhjZi4u
MDdkNTU2YzNiN2ZjNjM3MTljMmEyNTU5ZTBhYWQ2YzIyNmMwN2NhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TmV0c2NhcGVQbHVnaW5YMTE+IE5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUoTmV0c2Nh
cGVQbHVnaW4mIHBsdQogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChwbHVnaW4uaXNXaW5k
b3dlZCgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpblgx
MT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRvd0lEKTsKICNlbmRpZgog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwg
ZGlzcGxheSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdp
biwgZGlzcGxheSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luWDExOjpOZXRzY2FwZVBsdWdpblgxMShO
ZXRzY2FwZVBsdWdpbiYgcGx1Z2luLCBEaXNwbGF5KiBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmluZGV4IGExZjgw
N2UxZTU1MDcyM2VmZWVhMTc3MTMzYjgxZGZmNGQxNzZiMzUuLmI1NzJhYTNhNTM2ZDQ4NWNiOWI4
MTdhMTZlMDJjMzMyYzRiYzIxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBjbGFzcyBQ
bHVnaW5Db250cm9sbGVyIHsKIAogICAgIC8vIEhlbHBlciBjbGFzcyBmb3IgZGVsYXlpbmcgZGVz
dHJ1Y3Rpb24gb2YgYSBwbHVnLWluLgogICAgIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVj
dG9yIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAg
ICAgICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihQbHVnaW5Db250cm9sbGVy
KiBwbHVnaW5Db250cm9sbGVyKQogICAgICAgICAgICAgOiBtX3BsdWdpbkNvbnRyb2xsZXIocGx1
Z2luQ29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcAppbmRleCBmMzdjMmNjMjRlM2RkOTc2M2YzZWJkZDYzMmQ4YmZkYjc3MTQ0
MzQ3Li45YWI1ODM3MzBiODlkYmQ5NjAxZDY1MjBlZjhmOWIwYmUwMDZkYzU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC05NSw3
ICs5NSw3IEBAIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFBsdWdpblByb3h5KHRoaXMpOwogCiAg
ICAgLy8gQXNrIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRlIGEgcGx1Zy1pbi4KLSAgICBt
X3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMgPSBtYWtlVW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKIAogICAgIG1f
cGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGx1Z2luSW5zdGFuY2VJRCA9IG1fcGx1
Z2luSW5zdGFuY2VJRDsKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPndp
bmRvd05QT2JqZWN0SUQgPSB3aW5kb3dOUE9iamVjdElEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDdhYjg5NjZkYjkwNWFkZDEy
Mzk0ODE2NTBiMTlkZTRhN2U3ZDIyM2YuLjExOWQyYjkwYzJiNDQyMzFmMjU2OTU3ZTYyZGRjYThm
MTMwZmM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCkBAIC04OTgsNyArODk4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkV2ZW50PiBQ
bHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBp
ZiAoZXZlbnQubWV0YUtleSgpKQogICAgICAgICBtb2RpZmllcnMuYWRkKFdlYkV2ZW50OjpNb2Rp
Zmllcjo6TWV0YUtleSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNb3VzZUV2
ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jv
b3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50
LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRp
bWUgeyB9LCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBi
dXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBv
aW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50LnNjcmVlbkxvY2F0
aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWUgeyB9LCAwKTsK
IH0KIAogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCYgZXZlbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmZjMDljNGY2NWIyNDViNjBiZjRkNGY1
OTdhOWY5MGFkNGQwYWFmOS4uYTFmZjAzM2IyMDRlYWZhZGM4ODhhODIwOGE4OWY3OWRhMDBiY2Y5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTUzLDcgKzE1Myw3
IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29y
a2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250CiAKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qg
c2hvdWxkIGJlIG1vdmVkIGRpcmVjdGx5IHRvIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNv
bm5lY3Rpb24KICAgICAvLyBJZiBpdCB3ZXJlbid0IGZvciBTZXJ2aWNlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQncyBkZXBlbmRlbmNlIG9uIFdlYkRvY3VtZW50TG9hZGVyLCB0aGlzIGNvdWxkIGFs
cmVhZHkgaGFwcGVuLgotICAgIGF1dG8gZnJhbWVMb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9w
YWdlSUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZmZWN0aXZlVXNlckFnZW50KTsK
KyAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRnJh
bWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNT
ZXJ2aWNlV29ya2VySUQsIGVmZmVjdGl2ZVVzZXJBZ2VudCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCk7CiAg
ICAgbV9sb2FkZXJzLmFkZChXVEZNb3ZlKGZyYW1lTG9hZGVyQ2xpZW50KSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaAppbmRl
eCA5MjBkZWQwNDBjZTU2MTgzMzk5ZjZjOTNiODJlYjM2ZGY3MzA0OTZhLi45MzBlNDYxODE5ZTE4
NmY1YTgwZDhmNjcxNmZiMTE4YzRkYzBlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCkBAIC0zNyw2ICszNyw3IEBAIHN0
cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
U1dPcmlnaW5UYWJsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViU1dPcmlnaW5UYWJsZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oCmluZGV4IDRkZjZmMDE5ZTU1ODU3NTUyYzg0ZGZhYjkyNTBjNDAxYTg0Y2I4
MzUuLmY0Y2YyOTFhNDAxMGIxZTdjMjQxNjdkNDU0YjU0ZWM0Yjg2NGM0ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAzYzg3MmY1YWRmMzliZWFjZDNhNzA2NjdiMjY4
OWQzOGM5YjExMTJlLi40ZDI3NDc2ODYyMGU1YTQ2ZWI5NTA4ZmRlNDdiNTcxZTc5NmYxNzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCYgY2xpZW50LCBjb25zdCBD
b2xvciYgaW5pdGlhbENvbG9yKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
bG9yQ2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwgaW5pdGlhbENvbG9yKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2UsICZjbGllbnQsIGluaXRpYWxDb2xv
cik7CiB9CiAKICNlbmRpZgpAQCAtODAyLDcgKzgwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb2xv
ckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3Nl
ckNsCiAKIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0U3VnZ2VzdGlv
bnNDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGNlZDM2YTZjMjViN2U0ZjgzNDRhNTg5
OTQwMDY3OTFmN2NjOTI3NmYuLmQ0NTU2ZDk4N2EzNjZkMTgxMTQwOGFkOTBiZjdhMzQ3ZGQ1OThk
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgV2ViRnJhbWU7
CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oCmluZGV4IDZjMjliNGUwODEyNmU3Y2Q2Njc5Y2M0NzAyMzVjNTU3NGRlNTBkMmUu
LmMxYzg5Y2Q5OWU4N2FlZTg0ZWQ1NzQ2YzJlODFmNjQ3ZTgyZjFmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDog
bV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCAxYWQ0YzNkZTJjYjdkMzhlNjI2MmMxOTdh
YWIyNGNjYTZmZWRhODIxLi5iMjRlY2Y3NmM0NTUyNGY2MGQ4NmFlZDZmYjFlY2Y2ZjBmMzk0MjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRy
YWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdl
YkRyYWdDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAppbmRleCAyNjgxMDJmZWExYTc3NTdlZDdlMTZkZGVjY2UzY2FkOGVlNmJkNDM1
Li5kMjJkNGNiNzNmMjk3M2Y1NjU1YTg3M2ViZDIyZDZiMDA2YWUwZjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRv
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViUGFnZSog
cGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgK
aW5kZXggMzBmNWFkNmI0YmMyYTYzOGQ2MDM3ZjhlYzk3MzgwOWRmNmU1NmIxOC4uMzVhMzFmYzJh
MzQ0YjMxMjg3MzA1MDRiN2ZlN2ExMTVmMDExYjg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
V2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggN2NkYWFjZDFmYzFkNDZkNjVlYWRj
M2YzYTYxMzRhYTM1NThhMmQxMS4uZDY3YjYyYzAyZTY4ODNiNDQ4NjVmYmExNTg1MTZlYTBjYmNi
NWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAgICAgfQogCiAgICAgaWYgKCFtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQpCi0gICAg
ICAgIG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwYWlu
dEluZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7CisgICAgICAgIG1fcGFpbnRJbmRpY2F0b3JM
YXllckNsaWVudCA9IG1ha2VVbmlxdWU8UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50PigqdGhp
cyk7CiAKICAgICBhdXRvIHBhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUobV9wYWdl
LT5kcmF3aW5nQXJlYSgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqbV9wYWludEluZGljYXRv
ckxheWVyQ2xpZW50KTsKICAgICAKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcGFpbnRM
YXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDAuMmYpKTsK
IAogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZhZGVLZXlmcmFtZXMoQW5pbWF0ZWRQcm9wZXJ0eU9w
YWNpdHkpOwotICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oMCwgMSkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlx
dWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOwogCi0gICAgZmFkZUtleWZyYW1lcy5pbnNl
cnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1LCAwKSk7CisgICAg
ZmFkZUtleWZyYW1lcy5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1
LCAwKSk7CiAgICAgCiAgICAgYXV0byBvcGFjaXR5QW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVh
dGUoKTsKICAgICBvcGFjaXR5QW5pbWF0aW9uLT5zZXREdXJhdGlvbigwLjI1KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaAppbmRleCBmNWVjYzY0YzkyM2YzODZjNTBlN2I1Mjk3N2VmYzA5OWUwYmNm
YWQ2Li4yN2MzZWUxNDJlMTYxNmU0MzVmNDhkNDFmMjcyNzE1ZmU4ZTAzODJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBS
ZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHByaXZhdGUgV2ViQ29yZTo6UGFnZU92
ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBmcmllbmQgY2xh
c3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogcHVibGljOgogICAgIFdlYkluc3BlY3Rv
ckNsaWVudChXZWJQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oCmluZGV4IDUzM2JlODQwY2FkNzE0NTU1ZGFmMGFhMjA3MjhhM2M5MzM1NWM5YmUuLjRi
YjM3ZmRkNjA3Nzc0ZWQ4MDlhOTY3YTc3NTE1ZmJhZmI2ZWY2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgOiBwdWJs
aWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBXZWJNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlciYgc2luZ2xldG9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRl
eCAxNjM3YWQxMDk3ZDc2NDllNTBkZjc0ZjVlMDYyMjcyNzFmYWI4NDVhLi4wMGNjMGEwOGQ5MjYw
NGZkZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsK
IAogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
V2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJOb3RpZmlj
YXRpb25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAppbmRleCA3
OTAwODRjZTQ4ZDIyNmIxMGU2NjViODI4NDQzNDlmZGFhZmZlZTQ2Li42OWYwYWU4Mjc5NTA3Yjcy
OTY1ZjY1YzIxNjg3M2M0ODFhZGY0ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlk
ZXMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6YWRk
T3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyCiAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX292ZXJyaWRlc01hcC5hZGQocGFzdGVib2FyZE5hbWUsIG51bGxwdHIp
OwogCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9
IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7CiAgICAgICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKHR5cGVNYXApOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdJbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsdWdJbkNsaWVudC5oCmluZGV4IGY2ZTAxNDk1N2VkYzI3N2RiOTgzNzMxMjdlYzEwNjNlOTM1
NThjYjguLmNmOTBhNWRmY2ZkYTYzZWNiOTg5N2NjNjZkMGQ0ODEyOTQ0ODEzYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1
Z0luQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJQYWdlOwogCiBjbGFzcyBXZWJQbHVnSW5DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z0lu
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXZWJQbHVnSW5DbGllbnQoV2ViUGFnZSYpOwogICAgIHZpcnR1YWwgfldlYlBsdWdJbkNs
aWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCmluZGV4IDVkZDY1YmZh
MGQ1MGNjZmRiMTQ2MWZlYjNmZTUyNDFmY2FhMGZiYTYuLjYzZDc3NGU1YTk0MjdjNzM1YjUyNDkw
YmQwMWNkNzlhYjc0YTEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgK
QEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBj
bGFzcyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UHJvZ3Jlc3NU
cmFja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQoV2ViUGFnZSYpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCmluZGV4IGVhZDE3ZDMwZjA1OTBkNzQ0Njcy
MDU1Y2FkNzdkOTVjNmQwYTQ3NzAuLjdiZDg3NTkwNWE2NWM3N2Q5NmMzZjc4ODQwMDE4NTgyY2Zh
Zjc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKQEAgLTM2LDYgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogICAgIAogY2xhc3MgV2Vi
U3BlZWNoU3ludGhlc2lzQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0Ns
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
VXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggMTA5MzA0NTNjZTc5N2VkZDkwZGU3NmYwMzU0
YjlhMWQ0MDZmMmU2ZS4uNjk1MjE3NGI5MTJjOTcxZTM1Nzg2ZTI3YzQ4MjI1ZDJmY2ExNDAyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVz
ZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlVzZXJNZWRpYUNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlJik7CiAgICAgfldlYlVz
ZXJNZWRpYUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDljZmZjYzlhOWZk
MmI2NDQ0OTIyZjg1NGFkOTdkMWQzMzFlNzBiMGUuLmIyNDU4MWM5N2U3YTg4MTZmNDZhZjkzMTlh
OTFlYTIxYjcyYmQ2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTU1MCw3ICs1NTAsNyBA
QCB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShHcmFwaGljc0xheQogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgfSBlbHNlIHsKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQYWdlKTsKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0ID0gbWFrZVVuaXF1ZTxMYXllclRyZWVIb3N0PihtX3dlYlBhZ2UpOwogI2Vsc2UKICAg
ICAgICAgbV9sYXllclRyZWVIb3N0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmluZGV4IGMw
NzM5NmYwMmYxZmE2NWY0NWFjZWU3MmYxMzRmNGZiMmQ5ZTg5MDkuLjUzNThjZDY4NjNiMzIyNjk1
OGVlMjc0ZWZkMDMyYWQyMDA2NGRkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwg
Y29uc3QgV2ViUGFnZQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uOgotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4o
d2ViUGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbmRpZgogICAg
IGNhc2UgRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlOgotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1l
dGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykgfHwgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlQ29vcmRp
bmF0ZWRHcmFwaGljczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBw
YXJhbWV0ZXJzKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKaW5kZXggMGYyNjQwM2ViYjcwYTgxMWIxOGU5
ODc5NWUxOWRlNzc0MGJlODM2MC4uMWE1MzVmMTdkOTdmNjY2ODM5NzI2OWE4NmUyODU3YjI5Yjk3
MmEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
UGFnZTsKIAogY2xhc3MgRmluZENvbnRyb2xsZXIgOiBwcml2YXRlIFdlYkNvcmU6OlBhZ2VPdmVy
bGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEZpbmRDb250cm9sbGVyKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA0NTJmNTNiY2VkYzAwNDdm
NzMzZDFjMzRiY2Q3NjUxMTkyY2I4YmU2Li40NmU4YWEwOTk4NjQ1YThjZTVkMmQ3Yjk1N2Y5OWFm
ZGMzOGY0NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpl
bnN1cmVCYWNraW5nU3RvcmUoKQogICAgIEFTU0VSVChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
QXR0YWNoZWQpOwogCiAgICAgaWYgKCFtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlKQotICAgICAg
ICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZT4odGhpcyk7CisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUg
PSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPih0aGlzKTsKIAogICAgIHVwZGF0
ZUJhY2tpbmdTdG9yZSgpOwogfQpAQCAtNTIxLDcgKzUyMSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0
cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dHJhbnNmb3JtKCkgY29uc3QKIAogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMudHJhbnNm
b3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOwogICAgIG1fcHJv
cGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OlRyYW5zZm9ybUNoYW5nZWQpOwogfQogCkBAIC01MzIsNyArNTMyLDcgQEAgVHJhbnNmb3JtYXRp
b25NYXRyaXggUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0
CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnN1Ymxh
eWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFs
dWUpOworICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJh
bnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRp
ZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTdWJsYXllclRyYW5zZm9ybUNo
YW5nZWQpOwogfQogCkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7Ci0gICAgbV9w
cm9wZXJ0aWVzLmZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KGZp
bHRlcnMpOworICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gbWFrZVVuaXF1ZTxGaWx0ZXJPcGVy
YXRpb25zPihmaWx0ZXJzKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2Vk
KFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpGaWx0ZXJzQ2hhbmdlZCk7CiB9CiAKQEAgLTgy
Niw3ICs4MjYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUgogICAgIGlmIChtX3Byb3BlcnRp
ZXMuc2hhcGVSb3VuZGVkUmVjdCAmJiAqbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPT0g
cm91bmRlZFJlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvcGVydGllcy5zaGFwZVJv
dW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVj
dCk7CisgICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPEZsb2F0
Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRp
ZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTaGFwZVJvdW5kZWRSZWN0Q2hh
bmdlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKaW5kZXggMWNiZDFiNGJhNzlhN2RmOWNlNTVl
MDQyMWQ0NGU2NWI0MDg4MjFjMi4uMDk5NTM2YjkzYzAxMWFjM2YyYTA3M2MzY2E0NjRmMDcyNjQ2
OWNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6UGxhdGZv
cm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBlLCBvd25lciwgY29udGV4dCkKLSAg
ICAsIG1fdGlsZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhp
cykpCisgICAgLCBtX3RpbGVDb250cm9sbGVyKG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHRo
aXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KaW5kZXggNWU1MGUwYmExZWYxMjQ2YzZhZTA4ZjI5ZDkyYTgzMGUwZGI0
ZjIzNy4uNDQ0NmYzNGQwNGNjZmJmYmViMzY5YmE0NGMzMjA2YmYwZGQyM2VjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAt
NTgsNyArNTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2Us
IGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBEcmF3
aW5nQXJlYShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHBhcmFtZXRlcnMuZHJhd2lu
Z0FyZWFJZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0
KHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCisgICAg
LCBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQobWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVDb250
ZXh0Pih3ZWJQYWdlKSkKICAgICAsIG1fcm9vdExheWVyKEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShn
cmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcykpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcigq
dGhpcywgJlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycykKIHsKQEAgLTQy
Myw3ICs0MjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVy
cygpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
V2lsbENvbW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSkpOwog
CiAgICAgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExh
eWVyVHJlZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsK
LSAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5jb2Rlcj4o
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJl
ZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdl
czo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNl
aXZlck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNv
bW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgY29t
bWl0RW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgLy8gRklYTUU6
IE1vdmUgYWxsIGJhY2tpbmcgc3RvcmUgZmx1c2hpbmcgbWFuYWdlbWVudCB0byBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKaW5k
ZXggYWFkZTNkOWYxODQ0ZDdmMDVjMDkyMThkOGUyMDQ0ZDU4YTJmMDVmOC4uYjJiZGM0MWI3MjMz
NmJiNmU0ODQ5MGY3MzFiMjQ4NWQyNzA3ODJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgOiBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKFdlYlBhZ2UmKTsKICAgICB+Vmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3RvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCmluZGV4IDYwY2ZkOGQyYTE3NTRhN2FjZWQ1OGQ2MWRmMTdiZTRjMTQz
MTM2OTQuLmJkZDRiMzk1MjU0YTcxNjc2MzlhZWNkNzM4NjBlMDcyZDY5YzQyZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEyMCw3ICsx
MjAsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShX
ZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1l
OjpjcmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7Ci0gICAgYXV0byBmcmFtZSA9
IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKKyAgICBh
dXRvIGZyYW1lID0gY3JlYXRlKG1ha2VVbmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOwog
ICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUo
ZnJhbWUtPmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRl
KHBhZ2UtPmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGll
bnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCAxMzM2NTcwZDkzYWE1MTEwNjk3ODU2MTE3MDI2MDg5M2I4YTNjZGI0Li5kYjMyZGE0
ODEzOWUxOWY3MTQyMTI1NjU0MGEyMTYzMjM0Y2M5MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzgzLDIxICszODMsMjEgQEAgV2ViUGFn
ZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV90ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkobWFr
ZVVuaXF1ZVJlZjxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk+KCp0aGlzKSkKICNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi0gICAgLCBtX3ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yPigqdGhpcykpCisgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IobWFr
ZVVuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBFTkFC
TEUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5
T2JqZWN0KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1
bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVk
KQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVu
dD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAsIG1fZWRpdG9y
Q2xpZW50IHsgc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGll
bnQ+KCkgfQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fbG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKLSAgICAsIG1f
cmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UmVzb3VyY2VMb2FkQ2xpZW50PigpKQotICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkKKyAgICAsIG1fZWRpdG9yQ2xp
ZW50IHsgbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkgfQor
ICAgICwgbV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNs
aWVudD4oKSkKKyAgICAsIG1fbG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKKyAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpKQorICAg
ICwgbV91aUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVu
dD4oKSkKICAgICAsIG1fZmluZENvbnRyb2xsZXIobWFrZVVuaXF1ZVJlZjxGaW5kQ29udHJvbGxl
cj4odGhpcykpCi0gICAgLCBtX2luc3BlY3RvclRhcmdldENvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9p
bnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdl
dENvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVycy51c2VyQ29udGVudENv
bnRyb2xsZXJJRCkpCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgICwgbV9nZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihtYWtlVW5pcXVlUmVmPEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyPigqdGhpcykpCkBAIC00NjQsMjEgKzQ2NCwyMSBAQCBXZWJQYWdl
OjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGx1Z0luQ2xpZW50ID0gbmV3
IFdlYlBsdWdJbkNsaWVudCgqdGhpcyk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xp
ZW50Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVzc1RyYWNrZXJD
bGllbnQoKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMp
OwotICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkRp
YWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGVy
Zm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQ+KCp0aGlzKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi53ZWJHTFN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xTdGF0ZVRyYWNrZXI+
KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkgeworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLndlYkdMU3RhdGVUcmFja2VyID0gbWFrZVVuaXF1ZTxXZWJHTFN0YXRlVHJhY2tl
cj4oW3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSB7CiAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdM
KGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkpOwogICAgIH0pOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5zcGVlY2hTeW50
aGVzaXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudD4o
KnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRoZXNpc0NsaWVudCA9IG1h
a2VVbmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50PigqdGhpcyk7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdl
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRo
aXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMpOwogI2VuZGlmCiAKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9ICZXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpAQCAtNDkzLDE0ICs0OTMs
MTQgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigqdGhpcyk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHBhZ2VDb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uTWFuaWZlc3QgPSBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAj
ZW5kaWYKIAotICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOworICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgLy8gU2V0IHRoZSBzZXNzaW9uSUQgKmJlZm9yZSog
dXBkYXRpbmcgdGhlIHByZWZlcmVuY2VzIGFzIHRoZSBwcml2YXRlQnJvd3NpbmdFbmFibGVkIHBy
ZWZlcmVuY2VzIG1heSBuZWVkIHRvIG92ZXJyaWRlIGl0LgogICAgIGlmIChwYXJhbWV0ZXJzLnNl
c3Npb25JRC5pc1ZhbGlkKCkpCkBAIC04NTMsNyArODUzLDcgQEAgdWludDY0X3QgV2ViUGFnZTo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogdm9pZCBXZWJQYWdlOjpzZXRJbmpl
Y3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVk
QnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGllbnQpCiB7CiAg
ICAgaWYgKCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVD
bGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRC
dW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1CiB2
b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50KQogewog
ICAgIGlmICghZWRpdG9yQ2xpZW50KSB7Ci0gICAgICAgIG1fZWRpdG9yQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CisgICAgICAg
IG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JD
bGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3NCw3ICs4NzQsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkluamVjdGVkQnVuZGxlOgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZv
cm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+
JiYgZm9ybUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGllbnQpIHsKLSAgICAgICAgbV9mb3Jt
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50
PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg4NCw3ICs4
ODQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OlBhZ2VMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50KQogewogICAgIGlmICghbG9hZGVy
Q2xpZW50KSB7Ci0gICAgICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAgICAgICBtX2xvYWRlckNs
aWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQgV2Vi
UGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVBv
bGljeUNsaWVudEJhc2UqCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VM
b2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxv
YWRDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghbV9yZXNvdXJjZUxvYWRDbGllbnQpCi0g
ICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAgICAgIG1fcmVzb3VyY2VMb2Fk
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGll
bnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUo
Y2xpZW50KTsKIH0KQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVk
QnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQgog
dm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+JiYgdWlDbGllbnQpCiB7CiAgICAgaWYg
KCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTQxMCwxNCArMTQxMCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmNs
b3NlKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0
TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNv
bnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICNlbmRpZgot
ICAgIG1fZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpFZGl0b3JDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwotICAgIG1fbG9hZGVyQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50Pigp
OworICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpF
ZGl0b3JDbGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOworICAgIG1fbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOwogICAgIG1fcG9saWN5
Q2xpZW50LmluaXRpYWxpemUoMCk7Ci0gICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKLSAg
ICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
VUlDbGllbnQ+KCk7CisgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKKyAgICBtX3VpQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbkNsaWVudC5pbml0aWFsaXplKDAp
OwogI2VuZGlmCkBAIC00Njk2LDcgKzQ2OTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmJlZ2luUHJpbnRp
bmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiAjZW5kaWYK
IAogICAgIGlmICghbV9wcmludENvbnRleHQpIHsKLSAgICAgICAgbV9wcmludENvbnRleHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKKyAgICAgICAgbV9wcmlu
dENvbnRleHQgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKICAgICAgICAg
bV9wYWdlLT5kaXNwYXRjaEJlZm9yZVByaW50RXZlbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuY3BwCmluZGV4IDczNTY2YTEzMzg1ZGUzYWFjNjQ2ZmI5NDk2YmRkYWZjYjVhZjQ2
YjYuLjQ2NzM0ZmZmMjY5MWVhNjVhYmRmZjRmZTUwNDcwZmNjNGUzNGQxZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgV2ViUHJpbnRPcGVyYXRp
b25HdGs6OnByaW50KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgZG91YmxlIHhEUEksIGRvdWJs
ZSB5CiB7CiAgICAgQVNTRVJUKG1fcHJpbnRDb250ZXh0KTsKIAotICAgIGF1dG8gZGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOworICAgIGF1dG8gZGF0YSA9IG1h
a2VVbmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOwogICAgIGlmICghZGF0YS0+aXNWYWxpZCkg
ewogICAgICAgICBjYWlyb19zdXJmYWNlX2ZpbmlzaChzdXJmYWNlKTsKICAgICAgICAgcHJpbnRE
b25lKGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGZyYW1lVVJMKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5t
bQppbmRleCA5YWJiMmE3OTI5OWQ1OTZiOTFlNmVmNjFjYTQzZWY4NjE5MGE5MDQ5Li45MzQxOGFi
MjFkNzRmYzk0NThhMDIyNGU0Y2I0OGE3MzQxNzgwOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBA
IC05OCw3ICs5OCw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3Io
RnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlCiAgICAgaWYgKCF0ZXh0SW5k
aWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ZpbmRJbmRpY2F0b3JPdmVy
bGF5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElP
Uz4oc2VsZWN0ZWRGcmFtZSwgdGV4dEluZGljYXRvci5nZXQoKSk7CisgICAgbV9maW5kSW5kaWNh
dG9yT3ZlcmxheUNsaWVudCA9IG1ha2VVbmlxdWU8RmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJ
T1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOwogICAgIG1fZmluZEluZGlj
YXRvclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRJbmRpY2F0b3ItPnNlbGVjdGlvblJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMoKSk7CiAgICAgbV9maW5kSW5kaWNhdG9yT3ZlcmxheSA9IFBh
Z2VPdmVybGF5OjpjcmVhdGUoKm1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQsIFBhZ2VPdmVy
bGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpOwogICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+
cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KCptX2ZpbmRJbmRpY2F0
b3JPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNw
cAppbmRleCA5MDY4N2M5NzRhY2YzM2Q4MmI4YzY0Yjk0OGU2ZWU5YTMwZWUyZTljLi4wNmZjYzQ3
MTU5M2ViNzhlZGViZmNjNjNmODk0NGIzZGZhZTlkYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNo
Q2FsbGJhY2soKQogICAgIGlmICghbV9oYXNTZW50TWVzc2FnZSkgewogICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5
SUQoKSksIDApOwogICAgICAgICBtX2hhc1NlbnRNZXNzYWdlID0gdHJ1ZTsKLSAgICAgICAgbV9y
dW5Mb29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVu
TG9vcEVudHJ5LCBbdGhpc10oKSB7CisgICAgICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbWFrZVVu
aXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3RoaXNdKCkgewogICAgICAg
ICAgICAgdGhpcy0+bV9maXJzdENhbGxiYWNrSW5DdXJyZW50UnVubG9vcCA9IHRydWU7CiAgICAg
ICAgIH0pOwogICAgICAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRl
eCBkZjYwMDM2NDU5OGYxMzQ2MjlkYWI2MjcwNmVhZjY4NjFlNWZmMzNkLi40Y2IzZGY5YWVhNTI5
ZWZmNTI2MzM2YzgxZjEzMDIwNDViYTNlMGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBj
CiAgICAgW21faG9zdGluZ0xheWVyIHNldE9wYXF1ZTpZRVNdOwogICAgIFttX2hvc3RpbmdMYXll
ciBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKIAotICAgIG1fbGF5ZXJGbHVzaFJ1bkxvb3BPYnNl
cnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNf
Y2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okxh
eWVyRmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+
KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0
aGlzXSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaFJ1bkxvb3BDYWxsYmFjaygpOwogICAg
IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYTJkYTEy
YzYwMjI5MzczY2Y4Nzg5MmI4M2RhYTU3NzM1MDBhNzdmMi4uYTllMzc0NDRmYmQzNjg0NGE0OTI4
Yzk2MTIyZDc0ZWQxZjBmYmI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtMTU3Myw3ICsxNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJz
Vm9sYXRpbGUoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW4KICAgICBB
U1NFUlQoIW1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlcik7CiAgICAgbV9jb3Vu
dE9mUGFnZXNGYWlsaW5nVG9NYXJrVm9sYXRpbGUgPSAwOwogCi0gICAgbV9wYWdlTWFya2luZ0xh
eWVyc0FzVm9sYXRpbGVDb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTWFya2luZ0xheWVy
c0FzVm9sYXRpbGVDb3VudGVyPihbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50ZXJFdmVudCkgeworICAgIG1fcGFnZU1hcmtpbmdM
YXllcnNBc1ZvbGF0aWxlQ291bnRlciA9IG1ha2VVbmlxdWU8UGFnZU1hcmtpbmdMYXllcnNBc1Zv
bGF0aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKICAgICAgICAgaWYgKG1fcGFnZU1hcmtp
bmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlci0+dmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMTgzOCw3ICsxODM4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmFibGVkU2Vydmlj
ZXMoYm9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnYKIAogdm9pZCBX
ZWJQcm9jZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkZW50aWZpZXIpCiB7Ci0gICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PihzZXNzaW9uSWRlbnRpZmllcik7
CisgICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gbWFrZVVuaXF1ZTxXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5PihzZXNzaW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
ZGVzdHJveUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQpAQCAtMTg3MSw3ICsxODcxLDcgQEAgYm9v
bCBXZWJQcm9jZXNzOjpoYXNWaXNpYmxlV2ViUGFnZSgpIGNvbnN0CiBMaWJXZWJSVENOZXR3b3Jr
JiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIHsKICAgICBpZiAoIW1fbGliV2ViUlRD
TmV0d29yaykKLSAgICAgICAgbV9saWJXZWJSVENOZXR3b3JrID0gc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENOZXR3b3JrPigpOworICAgICAgICBtX2xpYldlYlJUQ05ldHdvcmsgPSBtYWtlVW5p
cXVlPExpYldlYlJUQ05ldHdvcms+KCk7CiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7
CiB9CiAKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAgICAg
Ly8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1h
bmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFz
IHRoZQogICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9u
IHB1cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc2V0Q29ubmVjdGlvbihzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBzdG9yZSkpOwor
ICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1
ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3Vw
SUQsIHBhZ2VJRCwgc3RvcmUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4
IGQ0YzAxYmFiMWY5M2RhOTA4NWIwZjIxOTRjZDMyN2Q0NzE4NjUwYjIuLjJmNGZiNTMwYWJjZWQ3
ZWZjNzM3NjQyMjMwOWZkMzE4ODdhNDdiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtMTMzLDYgKzEzMyw3IEBAIGNsYXNzIFdlYlByb2Nlc3MKICAgICAsIFByb2Nl
c3NUYXNrU3RhdGVPYnNlcnZlcjo6Q2xpZW50CiAjZW5kaWYKIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUHJvY2VzcyYgc2luZ2xldG9uKCk7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSA9IFByb2Nlc3NU
eXBlOjpXZWJDb250ZW50OwpAQCAtMTQ2LDcgKzE0Nyw3IEBAIGNsYXNzIFdlYlByb2Nlc3MKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsK
LSAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtl
X3VuaXF1ZTxUPigqdGhpcykpOworICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVt
ZW50TmFtZSgpLCBtYWtlVW5pcXVlPFQ+KCp0aGlzKSk7CiAgICAgfQogCiAgICAgV2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzKiB3ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVy
biBtX3dlYkNvbm5lY3Rpb24uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDI3MjBi
ODZmY2QyZmZlZTYwMjJmNWFkNWVlZDUwYmNmMzY5MmQ3ZjguLjlhZjAwZWU4YWEwZjFjZDg0MGE4
MTczNzkwZmEwNjIzMDA0NmZkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlIDogcHVibGljIFJlYWx0
aW1lTWVkaWFTb3VyY2UgewogICAgIHsKICAgICAgICAgQVNTRVJUKGRldmljZVR5cGUgIT0gQ2Fw
dHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bik7CiAgICAgICAgIGlmICh0eXBlID09IFR5
cGU6OkF1ZGlvKQotICAgICAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
QVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxw
dHIpKTsKKyAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVy
PihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRyKSk7CiAgICAg
fQogCiAgICAgflNvdXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmluZGV4IGJhZWQwY2Q5ZTA5YjQ5ZDIy
MWU5NDAxOGY2NDlmZTZkYmNmOTI1MTkuLmMxZDQzZmNiM2FmNTg0MTQ1M2FkMzQzNGM3Y2Y5M2Vi
ZmM5ZTdlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIENyb3Nz
UHJvY2Vzc1JlYWx0aW1lQXVkaW9Tb3VyY2U7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9DYXB0dXJlRmFj
dG9yeSwgcHVibGljIFdlYkNvcmU6OlZpZGVvQ2FwdHVyZUZhY3RvcnksIHB1YmxpYyBXZWJDb3Jl
OjpEaXNwbGF5Q2FwdHVyZUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlByb2Nlc3Mm
KTsKICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGI0N2QxZDhhZmEwM2Zl
ZDM2ZGVjYWQ5ODlkNzJkYmM0MTg0ODdmNTkuLjNiOTA2YTgwYzVhZDhmNjliZWY3N2Y5YThjNzY0
YWY4MDlmNDk1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJv
Y2Vzc1Rhc2tTdGF0ZURpZENoYW5nZShQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OlRhc2tTdGF0
ZSB0CiAKICAgICAvLyBXZSB3ZXJlIGF3YWtlbmVkIGZyb20gc3VzcGVuc2lvbiB1bmV4cGVjdGVk
bHkuIE5vdGlmeSB0aGUgV2ViUHJvY2Vzc1Byb3h5LCBidXQgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0
aW9uIG9uIG91ciBwYXJlbnQgUElECiAgICAgLy8gdG8gZW5zdXJlIHRoYXQgaXQgdG9vIGlzIGF3
YWtlbmVkLgotICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNz
SUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQs
IEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CisgICAgYXV0byB1aVByb2Nlc3NBc3NlcnRp
b24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5IHJlc3VtZWQiLCBBc3NlcnRpb25T
dGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5pc2hUYXNrKTsKICAgICBwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6UHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKCksIFt1aVByb2Nl
c3NBc3NlcnRpb24gPSBXVEZNb3ZlKHVpUHJvY2Vzc0Fzc2VydGlvbildIHsgfSk7CiB9CiAjZW5k
aWYKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JT
dGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uIHJlYXNvbikKICAgICB9CiAKICAgICBpZiAoIW1f
Y3B1TW9uaXRvcikgewotICAgICAgICBtX2NwdU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENQ
VU1vbml0b3I+KGNwdU1vbml0b3JpbmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2FnZSkg
eworICAgICAgICBtX2NwdU1vbml0b3IgPSBtYWtlVW5pcXVlPENQVU1vbml0b3I+KGNwdU1vbml0
b3JpbmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2FnZSkgewogICAgICAgICAgICAgaWYg
KG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlNlcnZpY2VXb3JrZXIpCiAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBTZXJ2aWNl
IHdvcmtlciBwcm9jZXNzIGV4Y2VlZGVkIENQVSBsaW1pdCBvZiAlLjFmJSUgKHdhcyB1c2luZyAl
LjFmJSUpIiwgdGhpcywgbV9jcHVMaW1pdC52YWx1ZSgpICogMTAwLCBjcHVVc2FnZSAqIDEwMCk7
CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDM2OTA5NWNkYWQxZDM0NzExYTA2NzZkODczNmE5
MGUxOTNlMjkwNWUuLjIyOGY0YTM2ZDRiMGYyMjJjMTc4NjBkMGJjNDk4YzFmOWUwODlhMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIu
Y3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlZjxTdG9yYWdlU3luY01hbmFnZXI+IFN0b3JhZ2VTeW5j
TWFuYWdlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKIH0KIAogU3RvcmFnZVN5bmNNYW5h
Z2VyOjpTdG9yYWdlU3luY01hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogbV90aHJl
YWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQorICAgIDogbV90aHJlYWQobWFr
ZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRDb3B5
KCkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAppbmRleCA0NDM5MzgyOTVmNGUxYzI5ZGQwNDg2
YjQzMWJhN2ZlYTM1MjlkMTZkLi45Yzc1MTRlMzQ2MmM0YjRkOGE4NTYwNWVkMDI5ZGJkMTkyNWQ2
YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3Bw
CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVhZCk7Ci0gICAgbV9xdWV1ZS5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikp
KTsKKyAgICBtX3F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZN
b3ZlKGZ1bmN0aW9uKSkpOwogfQogCiB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCkBA
IC04Nyw3ICs4Nyw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKICAgICBpZiAo
IW1fdGhyZWFkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10geworICAgIG1fcXVldWUuYXBwZW5k
KG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CiAgICAgICAgIHBlcmZvcm1U
ZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAgbV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRl
eCBiOTM0ZDFhM2IxYmFhODMxYWRkZjNhYmU1ZTA3NzBhYjFjZjc3ZmEyLi44MDZjYjA5OTVkMGEw
N2M3MTgyNzFkMjEwNTA3MDM5OGM0MDNiYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgU3RvcmFnZVRyYWNr
ZXImIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkKIFN0b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJh
Y2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKQogICAgIDogbV9zdG9yYWdlRGlyZWN0b3J5
UGF0aChzdG9yYWdlUGF0aC5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fY2xpZW50KDApCi0gICAg
LCBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCisgICAgLCBtX3Ro
cmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNl
KQogICAgICwgbV9uZWVkc0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwgbV9TdG9yYWdlRGF0
YWJhc2VJZGxlSW50ZXJ2YWwoZGVmYXVsdFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAppbmRleCA0M2VhNDVkYWU4OTIwNmM4MjlhNTE0ZDRk
YThlM2QxYzk3Y2MxMjg0Li44NTFjYzEwMTdkZWQwMGMwNmQ0NmQyYzg1OWQ3MDAwMGI2ZDcyZDUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzdG9y
YWdlU2Vzc2lvbihjb25zdCBQCiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKIHsKICAgICBpZiAo
IWRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgZGVmYXVsdE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICBk
ZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAg
ICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKQEAgLTc0LDcg
Kzc0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKQogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3Rv
cmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9u
LmdldCgpKSk7CiAgICAgfQogCi0gICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29v
a2llU3RvcmFnZSkpOworICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2Up
KTsKICNlbmRpZgogfQogCkBAIC0xMDAsMTEgKzEwMCwxMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
LCBjbwogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNl
c3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lv
bi5nZXQoKSkpOwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBX
VEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNv
b2tpZVN0b3JhZ2UpKTsKIAogI2VsaWYgVVNFKENVUkwpCiAgICAgZ2xvYmFsU2Vzc2lvbk1hcCgp
LmVuc3VyZShzZXNzaW9uSUQsIFtzZXNzaW9uSURdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNl
c3Npb25JRCk7CiAgICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAK
aW5kZXggMTg3NmI5NjBiOTQ3MDgxNGMzNTBiYzU5MjZhNGM4MWFlZGYzOTAyMy4uN2I4Njk4MWEz
ZjQ4ZTUwZjhiM2NjYWMzNzA2OTE3ZDRhZjFmZGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHAKQEAgLTE1OSw1ICsxNTksNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IFdlYkluc3BlY3RvckNsaQogICAgICAg
ICAgICAgZGVsZXRlU2V0dGluZyhuYW1lKTsKICAgICAgICAgfQogICAgIH07Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudElPUy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50SU9TLmgKaW5kZXggM2IxYTQ1MDcwNzhmYTRjYzA2OGU3NDAzMDMyMjEyMzliMmFk
NzEyMy4uMTQ1NzcyMjJhOWUxM2U2M2U0OTFkNmQzYjkyY2ExYmM4OWU3Y2IwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
SU9TLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50SU9TLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIldlYkNocm9tZUNsaWVu
dC5oIgogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnRJT1MgZmluYWwgOiBwdWJsaWMgV2ViQ2hyb21l
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJD
aHJvbWVDbGllbnRJT1MoV2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBXZWJDaHJvbWVDbGll
bnQod2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KaW5kZXggMjE3YTRl
ZDBhODVhNmJiNDE0ZDMxOTRjYjdiZmFlZmRlMDM2ZDQ3YS4uOGRhZDYwNDQ2MmY4Mzc2NDU3M2Yw
MDYyOWVhMTA0OWVlYjg2ZGMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0K
QEAgLTE3OCw3ICsxNzgsNyBAQCAtICh2b2lkKXNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6
KFdURjo6SGFzaE1hcDxDQUxheWVyICosIHN0ZDo6dW5pcXVlX3B0cjxXZQogCiAgICAgZm9yIChh
dXRvJiBsYXllckFuZENvbnN0cmFpbnRzIDogbGF5ZXJNYXApIHsKICAgICAgICAgQ0FMYXllciog
bGF5ZXIgPSBsYXllckFuZENvbnN0cmFpbnRzLmtleTsKLSAgICAgICAgYXV0byBsYXllckRhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+KCk7CisgICAg
ICAgIGF1dG8gbGF5ZXJEYXRhID0gbWFrZVVuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJE
YXRhPigpOwogCiAgICAgICAgIGxheWVyRGF0YS0+bV9lbmNsb3NpbmdBY2NlbGVyYXRlZFNjcm9s
bExheWVyID0gc3RpY2t5Q29udGFpbmVycy5nZXQobGF5ZXIpOwogICAgICAgICBsYXllckRhdGEt
Pm1fdmlld3BvcnRDb25zdHJhaW50cyA9IFdURk1vdmUobGF5ZXJBbmRDb25zdHJhaW50cy52YWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5k
ZXggYThiNmEwNDM5M2VjMDAwMTQ2NTM4ZDRjZjY1YmQ2NDBjNzRiZDkwMS4uNWFkODFiNGEzYjQ5
YjVkMDYzOTM2NTY4M2ExYmNmNWQ1N2VmMzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtMTMzLDcgKzEzMyw3IEBAIC0gKGlkKWluaXQK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBfZW50cmllc0J5VVJMID0gW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBfZW50cmllc0J5RGF0ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKKyAgICBfZW50cmllc0J5RGF0ZSA9IG1ha2VV
bmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXgg
YjczOTU5MzVlNTEwYmYzYjdmMGM0OGVkZDQzNmM1OGJiYzQ4MWQ4ZS4uODZmOWQzZDQyMjM4NDZi
Yzk1Y2JjOTU2NDVhMWNhNzMyMGFmZTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0zNDgsNyArMzQ4LDcgQEAgLSAoaWQp
aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAg
ICAgICAgY29yZShfcHJpdmF0ZSktPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAgICAg
CiAgICAgaWYgKE5TQXJyYXkgKnJlZGlyZWN0VVJMcyA9IFtkaWN0IF93ZWJraXRfYXJyYXlGb3JL
ZXk6cmVkaXJlY3RVUkxzS2V5XSkgewotICAgICAgICBhdXRvIHJlZGlyZWN0VVJMc1ZlY3RvciA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8gcmVkaXJl
Y3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgcmVk
aXJlY3RVUkxzVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtyZWRpcmVjdFVSTHMgY291
bnRdKTsKIAogICAgICAgICBmb3IgKGlkIHJlZGlyZWN0VVJMIGluIHJlZGlyZWN0VVJMcykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRleCBlMTdjNzg4MWE1MTdmMGMzNTVm
ODc1NjliNjBkYTNmMjE1YTFlYmE3Li5mNWU3ZmJjZjEyZTQ3ZjkwZGVlZjFlYTJjZmViNzE3NDI2
ODgwYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtNDkzLDcgKzQ5
Myw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0dldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5KG1hY2hf
cG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQog
ICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3Vy
cmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmplY3RJRCkpOworICAgIGlu
c3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0
SUQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAg
a2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhblJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVp
bnQzMl90IHBsdWdpbklELCB1aW50MzIKICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAg
IHJldHVybiBLRVJOX0ZBSUxVUkU7CiAgICAgCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVu
dFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3Vy
cmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0K
IApAQCAtNTI4LDcgKzUyOCw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5BbmREYXRhUmVw
bHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQsCiAgICAgICAgIHJl
dHVybiBLRVJOX0ZBSUxVUkU7CiAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bHQgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZSgwLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0RGF0
YSksIHJlc3VsdExlbmd0aCkpOwotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShy
ZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpC
b29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwgcmVzdWx0KSk7CisgICAgaW5zdGFuY2VQ
cm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJldHVyblZhbHVlLCByZXN1bHQp
KTsKICAgICAKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQpAQCAtNTQ1LDcgKzU0NSw3IEBA
IGtlcm5fcmV0dXJuX3QgV0tQQ0luc3RhbnRpYXRlUGx1Z2luUmVwbHkobWFjaF9wb3J0X3QgY2xp
ZW50UG9ydCwgdWludDMyX3QgcGx1Z2luCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAg
ICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJl
cGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwgcmVuZGVyQ29udGV4dElELCBzdGF0
aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkpKTsKKyAgICBpbnN0YW5jZVByb3h5
LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0
SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4ocmVuZGVyZXJUeXBlKSkpOwogICAgIHJldHVy
biBLRVJOX1NVQ0NFU1M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
LmgKaW5kZXggMTBhMDhlOTUwYTNkYzBjOTM2NzFmMWZjMWM3NGM5NDc3OTNhMDdlOC4uZTU2YTEw
M2EyOGE3NjBmOWNlMGI5N2U3MWRkNmIyM2E2MGM1M2U4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5LmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBjbGFzcyBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveAogCiAgICAgLy8gUmVwbHkgc3RydWN0cwogICAgIHN0cnVjdCBSZXBseSB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZW51bSBUeXBlIHsK
ICAgICAgICAgICAgIEluc3RhbnRpYXRlUGx1Z2luLAogICAgICAgICAgICAgR2V0U2NyaXB0YWJs
ZU5QT2JqZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMjAyYzZkZWFmMTNkMDdjNmUzYTU2OThiMWNk
YjU5YTE5YjVkYTAzOS4uNTJiZjdiZDEyZTRlMzcxMmQzMTQ3NWUyYTUzOWE0MjhjZmY4ZmE0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJ
bnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Q
cm94eUluc3RhbmNlLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgTWV0aG9kKiBQcm94eUluc3RhbmNl
OjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5l
dyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2Vy
ZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRk
KG5hbWUuaW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkg
JiYgcmVwbHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm94eU1ldGhvZD4obWV0aG9kTmFtZSk7CisgICAgICAgIG1h
cEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5TWV0aG9kPihtZXRo
b2ROYW1lKTsKIAogICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogfQpAQCAtMzk3LDcgKzM5Nyw3IEBAIEZpZWxkKiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVk
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRo
ZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JS
ZXBseS4KICAgICBhdXRvIG1hcEFkZFJlc3VsdCA9IG1fZmllbGRzLmFkZChuYW1lLmltcGwoKSwg
bnVsbHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jl
c3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOwogICAgIHJl
dHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2Fw
ZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9X
ZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWM3MWEzY2M5MjNmMzNkMmUwYWIz
OWExYmY2YjE0YjQ0M2U5NGQ0Yi4uZWUxOWM1NjdjMDFmYTE4YzVlOGRjNjFiMDhjODk0ZTUyMDAy
ZGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
V2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNjAs
NiArNjAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogbmFtZXNwYWNlIFdlYktpdCB7CiAg
ICAgCiBjbGFzcyBTb2Z0d2FyZUNBUmVuZGVyZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFNvZnR3YXJlQ0FSZW5kZXJlcih1aW50MzJfdCBj
b250ZXh0SUQpCiAgICAgICAgIDogbV9jb250ZXh0IHsgW0NBQ29udGV4dCBsb2NhbENvbnRleHRd
IH0KQEAgLTE2OCw3ICsxNjksNyBAQCAtIChCT09MKWNyZWF0ZVBsdWdpbgogICAgICAgICByZXR1
cm4gTk87CiAKICAgICBpZiAoX3Byb3h5LT5yZW5kZXJlclR5cGUoKSA9PSBVc2VTb2Z0d2FyZVJl
bmRlcmVyKQotICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9IHN0ZDo6bWFrZV91bmlxdWU8U29m
dHdhcmVDQVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRleHRJRCgpKTsKKyAgICAgICAgX3Nv
ZnR3YXJlUmVuZGVyZXIgPSBtYWtlVW5pcXVlPFNvZnR3YXJlQ0FSZW5kZXJlcj4oX3Byb3h5LT5y
ZW5kZXJDb250ZXh0SUQoKSk7CiAgICAgZWxzZQogICAgICAgICBbc2VsZiBjcmVhdGVQbHVnaW5M
YXllcl07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQppbmRleCBmN2FlZGJj
ZWQ0ZDdmNWM0YmEzZTk2ZTM1NjFjYTdmMGIyNjVjOGFjLi44ZWMxYmY3OWVlMzJhMmFjMWJiY2Y3
YTIxZTczZTdlMWUwMWRiMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KQEAg
LTM1LDcgKzM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3IKIHsKICAgICBzd2l0Y2ggKFtw
bHVnaW5WaWV3IGV2ZW50TW9kZWxdKSB7CiAgICAgY2FzZSBOUEV2ZW50TW9kZWxDb2NvYToKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXJDb2NvYT4ocGx1Z2luVmlldyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdpblZpZXcpOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKaW5kZXggNzA4Mzc3NmQyOGE3NWNm
YjU0MjUzM2Q5MGYzNzc4ZTg1YWJjZDFkMi4uYmJkOWM1ZDU4MjFmODVmNjVlYmM4Zjc3N2VjNjU1
MjI5ZDVlODlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5o
IgogCiBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hIDogcHVibGljIFdl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hKFdlYk5l
dHNjYXBlUGx1Z2luVmlldyopOyAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAwMmZmMjE4NmRmODRh
OWE5MGQ3ZTljMjZjMDc2Mjc5ZTMyMjExMzc4Li4xNjA2NjNlODYxZjcxMGViZmVkMWQ3Njg1NjVk
ZDIyYTExNGU4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTY1NSw3ICsxNjU1LDcgQEAgLSAo
dWludDMyX3Qpc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoodWludDMyX3QpaW50ZXJ2YWwgcmVw
ZWF0OihOUEJvb2wpcmVwZWF0IHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKCF0
aW1lcnMpCi0gICAgICAgIHRpbWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDx1aW50MzJf
dCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7CisgICAgICAgIHRpbWVycyA9IG1h
a2VVbmlxdWU8SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+
KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+KiBzbG90OwogICAgIHVpbnQz
Ml90IHRpbWVySUQ7CkBAIC0xNjYzLDcgKzE2NjMsNyBAQCAtICh1aW50MzJfdClzY2hlZHVsZVRp
bWVyV2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCByZXBlYXQ6KE5QQm9vbClyZXBlYXQg
dAogICAgICAgICB0aW1lcklEID0gKytjdXJyZW50VGltZXJJRDsKICAgICB3aGlsZSAoIXRpbWVy
cy0+aXNWYWxpZEtleSh0aW1lcklEKSB8fCAqKHNsb3QgPSAmdGltZXJzLT5hZGQodGltZXJJRCwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlKSk7CiAKLSAgICBhdXRvIHRpbWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1Z2luLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0
aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFBsdWdpblRpbWVyPihwbHVn
aW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAKICAgICBpZiAoX3No
b3VsZEZpcmVUaW1lcnMpCiAgICAgICAgIHRpbWVyLT5zdGFydChfaXNDb21wbGV0ZWx5T2JzY3Vy
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRh
YmFzZU1hbmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQppbmRleCA3MDRjZDA5NWU4OGZlMWEyMzgxMTg2YzZi
ZmYxMzBmYzkwMjA0MWViLi41N2ZiYmZhZDllNjRiNzY3OGFkM2FjY2U4MDc3OGJhY2YwMzc4MWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNl
TWFuYWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQpAQCAtOTQsMTAgKzk0LDExIEBAIFdlYkRhdGFiYXNl
TWFuYWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpCiB9CiAKIGNsYXNzIERp
ZE1vZGlmeU9yaWdpbkRhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudCYgY2xpZW50LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKICAgICB7
Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlkTW9kaWZ5T3JpZ2lu
RGF0YT4oY2xpZW50LCBvcmlnaW4pOworICAgICAgICBhdXRvIGNvbnRleHQgPSBtYWtlVW5pcXVl
PERpZE1vZGlmeU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2luKTsKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbY29udGV4dCA9IFdURk1vdmUoY29udGV4dCldIHsKICAgICAgICAgICAgIGNvbnRl
eHQtPmNsaWVudC5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihjb250ZXh0LT5vcmlnaW4pOwogICAg
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggYTNiMTU5OGVl
MzUzZDY3ZTIzYWY4MDk1OGViN2Y3NWViMTY3ZjRkOC4uY2Q3MjY0MjY4MjViYTcyMjE1NTdlMDU2
NmZhOTJlYzA4MTExNDVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAg
LTMxLDYgKzMxLDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQoV2ViVmlldyopOwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4
dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKaW5kZXggNzhi
NTM5ZTM3MmI4NjVjNTk0ZmMwNzZmNWExZmM4NGFhZmU5OGJmMC4uMjcxNDI3ZTJkNDZlZTNhMjk3
ZDA1NDAxMmE3YTg1YWI4YjNlMWIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGNs
YXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIDogcHVibGljIFdlYkNvcmU6OkNhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShpZCB3ZWJEb2N1bWVudFZpZXcpIDogbV93
ZWJEb2N1bWVudFZpZXcod2ViRG9jdW1lbnRWaWV3KSB7IH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
aW5kZXggZmRjNGNjNzgxOTZmY2JjZjMyNjAyZDE4ZTI4OWYwN2ExMTU0Y2M5NS4uYzBmYmRhOWIy
ZGExZGQ0NTEwZmZlMDg5YmY2OGY1YTc2N2RkNDE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQx
LDYgKzQxLDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIC8vIGJhc2UgY2xhc3Mgb2YgdGhl
IGNvbmNyZXRlIGNsYXNzLCBXZWJDaHJvbWVDbGllbnRJT1MuIEJlY2F1c2Ugb2YgdGhhdCwgdGhp
cyBjbGFzcyBhbmQKIC8vIG1hbnkgb2YgaXRzIGZ1bmN0aW9ucyBhcmUgbm90IG1hcmtlZCBmaW5h
bC4gVGhhdCBpcyBtZXNzeSB3YXkgdG8gb3JnYW5pemUgdGhpbmdzLgogY2xhc3MgV2ViQ2hyb21l
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMTg4NWYwMzEzMTM1YjgxN2IzMGY5NDU3Nzdk
OGUyNGIxNTM5YmY5MC4uYTdmNjZlZWVmMzA2YTY4NjA1NDIwZTc5ODc2MjAyNTdiZTA2YjZiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkNv
bnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50CiAgICAg
LCBwdWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKICNlbmRpZgogeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50
KFdlYlZpZXcgKndlYlZpZXcpOwogICAgIHZpcnR1YWwgfldlYkNvbnRleHRNZW51Q2xpZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmgKaW5kZXggODQ3YTczYjE3YTQ2MTdiZDU0YThkMjhhOTIzYzFkNGE2M2JkZDEy
ZS4uMzBkZjNmNzNkODUwZWE3NjljNzEzNTIyMWQyZTg4NjVlYTY3ZTAzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aApAQCAtMzAsNiArMzAsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkRyYWdDbGll
bnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggZjA1OWUwNTllMTE4N2EzYmM1YmQyNDdjYzI0MWY1OWFkZDQ1MDk1MC4uYjUx
MDc4N2Q4MDliY2Y5N2I3Njg5ZTc0MDkzMjgzNzVhYTBiMGIzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
QEAgLTQ1LDYgKzQ1LDcgQEAKIEBjbGFzcyBXZWJFZGl0b3JVbmRvVGFyZ2V0OwogCiBjbGFzcyBX
ZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJs
aWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJF
ZGl0b3JDbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBXZWJFZGl0b3JDbGllbnQoV2ViVmlldyAqKTsKICAgICB2aXJ0dWFsIH5XZWJFZGl0b3JDbGll
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggM2RkNTBlN2IzYjljZjk5MzM0
OWM5YWJiNGNiNDk3ODM3ZWVjMzUzZS4uOTQwYjBmZjk2M2E4NWNlOWQ4OGQ3YmM1NmZmNmIzZWVi
MmUzZDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEwNjcsNyArMTA2Nyw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogc3Rh
dGljIHZvaWQgYWRkUmVkaXJlY3RVUkwoV2ViSGlzdG9yeUl0ZW0gKml0ZW0sIGNvbnN0IFN0cmlu
ZyYgdXJsKQogewogICAgIGlmICghaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMpCi0gICAg
ICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBt
YWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogCiAgICAgLy8gT3VyIEFQSSBhbGxvd3MgdXMg
dG8gc3RvcmUgYWxsIHRoZSBVUkxzIGluIHRoZSByZWRpcmVjdCBjaGFpbiwgYnV0IGZvcgogICAg
IC8vIG5vdyB3ZSBvbmx5IGhhdmUgYSB1c2UgZm9yIHRoZSBmaW5hbCBVUkwuCkBAIC0xMzgwLDcg
KzEzODAsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKiBjYWNoZWRGcmFt
ZSkKIHsKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3ByaXZh
dGUtPndlYkZyYW1lVmlldy5kb2N1bWVudFZpZXcpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0Q2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldy5kb2N1bWVudFZpZXcpKTsKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRo
aXMgZnJhbWUgaXMgZ29pbmcgdG8gYmUgY2FjaGVkLiBTdG9wIGFsbCBwbHVnaW5zLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggZmZlMjk5MzEyZWI0ODBiYWZiNWYwZWFjNDM1MmYyNDNm
OTZlMDBmNy4uZmZkYmFjZmMyNzQyMWU4ZDM1ODg4ZjJjZTZiMTgwNzdhMTZlMzNmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIEdlb2xvY2F0aW9u
UG9zaXRpb247CiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcgKik7
CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaAppbmRleCBiZDdmNjJmYzg1ZGM5OWMzODcxNmYwNzY2NjQ2MzE4MjUxMWM1NGE1
Li4wYzk0OGIzYWVmOTg3NjA5NjMwMzUxZDU5YWM3OTBiMmFiZWFkYTdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBQYWdlOwogY2xhc3MgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKmluc3BlY3RlZFdlYlZpZXcpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggMWMwMDgwOTc2OTJmZjliMDcxZmNlNWFjNGE0YjQ2
OTJkMTM3ZWQ5NS4uN2QzZTVlYzllNjE1ZTFkNDhjM2QwNWQ3MWE1OWM0NTFmZWI3NjZiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIEZyb250ZW5kQ2hhbm5l
bCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwCiAgICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9yQ2xpZW50
OnRoaXNdOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdl
dCgpIGZyb250ZW5kV2ViVmlld10pOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHdp
bmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250ZW5k
UGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3
LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9mcm9u
dGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAKICAgICBSZXRhaW5QdHI8V2Vi
SW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYklu
c3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRD
bGllbnQuZ2V0KCldKTsKICAgICBbW21faW5zcGVjdGVkV2ViVmlldyBpbnNwZWN0b3JdIHNldEZy
b250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmgKaW5kZXggMTViNDE4MDQ4ZTRmMWQ0NjI0YzMwM2RjYmJmZWQxNjk3OTY0NDg2MS4uOTRl
ZDYxOGFjNzhlZThiY2Y1NzE1NWM5YWRhYmNiZGFkZjY4YzczNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBX
ZWJOb3RpZmljYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb3RpZmlj
YXRpb25DbGllbnQoV2ViVmlldyAqKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4g
bV93ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaApp
bmRleCBhM2Q2YWU2MzYzNjQ3YzVmMzBjYzc5ZmJkNjM1ZjY2NGJjYTAxMjNjLi5kYzlkMTFhMzU4
N2VlMDRmNTAxNTFiZTg4YmM1ZDRiMTQ4YmNkZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlv
blNlcnZpY2VDb250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiB9
CiAKIGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyIDogcHVibGljIFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcihXZWJWaWV3Kik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2subW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCmluZGV4IDI1MzY0OGQ4ZTg0NTkxMWUy
YWUyOGMwYmI4NjNjYjU3ZjdjMzAwMzkuLjI3NmQ5ZjE1ZWY4ZmE1ZTFmZWQ0MzhlZDljMWQyNTlh
Nzg1ODM1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQpAQCAtMzYs
NyArMzYsNyBAQCAtIChpZClpbml0CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAo
IXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgbV9jb3JlID0gc3RkOjptYWtlX3VuaXF1
ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CisgICAgbV9jb3JlID0gbWFrZVVuaXF1
ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGE5MDYy
MmMyMDc0ZTBjZGNlY2VmMmM2YzFjODQ5NDVkNGU5ZGZmYWIuLjNhOTRiYjkxMGQyNTllZmFhODkx
ZDUyOWU4MGQyYjViMDAyMGI0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQpAQCAtMzc4LDcgKzM3OCw3IEBAIC0gKHZvaWQpX2F0dGFjaFNjcmlwdERl
YnVnZ2VyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfcHJpdmF0ZS0+c2NyaXB0RGVi
dWdnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNjcmlwdERlYnVnZ2VyPihnbG9iYWxPYmplY3Qp
OworICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IG1ha2VVbmlxdWU8V2ViU2NyaXB0RGVi
dWdnZXI+KGdsb2JhbE9iamVjdCk7CiB9CiAKIC0gKHZvaWQpX2RldGFjaFNjcmlwdERlYnVnZ2Vy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCmluZGV4IGRmYTdlZmQwNjA2YWRjNDlmZTI5MWQw
NTIxZDEzMmU2ZTE5YzUwNzMuLmEwNzJlODE5NTI0OTM5YWUwZjIyYmI5ODM2ZDNhYzcwNWQ4NTc5
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNz
IFBhZ2U7CiB9CiAKIGNsYXNzIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIgOiBwdWJsaWMg
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyPiBjcmVhdGUoV2ViQ29yZTo6UGFnZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIubW0KaW5kZXggNzJjMjBjNjkzZmVjYmE5NzEwNDYzNDE2NDFjY2Ux
MTQ5NGRlNGE2OS4uNjAyNDAyOTk2MmVjMzRmMDBmNGFhZDk0MzJhN2ZjNDJiYTFkMTc0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4gV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlcjo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CiB9
CiAKIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OldlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXIoV2ViQ29yZTo6UGFnZSYgcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KaW5kZXggMWE3MjU4YjQyM2E4NDU3ODkxZTQx
NWUxMGQwMDI1NjczMGFhMmJkZS4uZTM2M2I4NWIyYjNkNWFlMTQ3M2M4MzcyNzE4NTgzNGQ1MTc4
N2IxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0
SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0
SXRlcmF0b3IubW0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooRE9NUmFu
Z2UgKilyYW5nZQogICAgICAgICByZXR1cm4gc2VsZjsKICAgICAKICAgICBfcHJpdmF0ZSA9IFtb
V2ViVGV4dEl0ZXJhdG9yUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgX3ByaXZhdGUtPl90ZXh0
SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShy
YW5nZSkpOworICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpUZXh0SXRlcmF0b3I+KGNvcmUocmFuZ2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGJjY2M2NGIwN2Ez
ZDA1ZjliZTg0NWZkMTZhOGE0ZTE1OGI1NjQ3NWQuLjEwZjIxODg0ZWI0YTljOTg0YWMzMmU2MDE0
MTQ5ODUwYjhjMTlhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KQEAgLTEyMjksNyArMTIyOSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tR
dWlya3NVc2VyU2NyaXB0Q29udGVudHMoKQogLSh2b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2Ny
aXB0CiB7CiAgICAgc3RhdGljIE5TU3RyaW5nICpvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMg
PSBsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpOwotICAgIF9wcml2YXRlLT5n
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2Ny
aXB0V29ybGQgd29ybGRdKSwgc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVp
cmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5n
PigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcykpOworICAgIF9wcml2
YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShb
V2ViU2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVp
cmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5n
PigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcykpOwogCiB9CiAjZW5k
aWYKQEAgLTE0NDMsNyArMTQ0Myw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0
aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0
TWVudUNsaWVudChzZWxmKTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuYWJsZSB0aGlzIG9u
IGlPUyBhcyB3ZWxsLgotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtlVW5p
cXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxmKTsKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwogI2Vs
c2UKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xp
ZW50SU9TKHNlbGYpOwpAQCAtNDYzMyw3ICs0NjMzLDcgQEAgKyAodm9pZClfYWRkVXNlclNjcmlw
dFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdv
cmwKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVzZXJTY3Jp
cHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1Zl
Y3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1l
ID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IElu
amVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVz
ID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CisgICAgYXV0byB1
c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdW
ZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGlt
ZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJ
bmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1l
cyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdH
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZSh3b3JsZCks
IFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC00NjU2LDcgKzQ2NTYsNyBAQCArICh2b2lk
KV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihX
ZWJTY3JpcHRXb3JsZCAqKQogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gc3R5bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJj
ZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QpLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxs
RnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAg
YXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmws
IHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGlu
amVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMg
OiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3Jv
dXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KCpjb3JlKHdvcmxk
KSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAK
QEAgLTk0MTYsNyArOTQxNiw3IEBAIC0gKFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5h
dGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKIC0gKFdlYlNlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyJilfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIKIHsKICAgICBpZiAoIV9wcml2
YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIpCi0gICAgICAgIF9wcml2YXRlLT5fc2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyPihzZWxmKTsKKyAgICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+
KHNlbGYpOwogICAgIHJldHVybiAqX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cjsKIH0KICNlbmRpZgpAQCAtOTQ3NSw3ICs5NDc1LDcgQEAgLSAodm9pZClfc2V0VGV4dEluZGlj
YXRvcjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvcgogLSAodm9pZClfc2V0VGV4dEluZGlj
YXRvcjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6KFRleHRJbmRp
Y2F0b3JXaW5kb3dMaWZldGltZSlsaWZldGltZQogewogICAgIGlmICghX3ByaXZhdGUtPnRleHRJ
bmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5kaWNhdG9yV2luZG93PihzZWxmKTsKKyAgICAgICAgX3By
aXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBtYWtlVW5pcXVlPFRleHRJbmRpY2F0b3JXaW5k
b3c+KHNlbGYpOwogCiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5h
dGVzID0gW3NlbGYgY29udmVydFJlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OnRl
eHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpXSB0b1Zp
ZXc6bmlsXTsKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMg
PSBbc2VsZi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjp0ZXh0Qm91bmRpbmdSZWN0SW5XaW5k
b3dDb29yZGluYXRlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5tbQppbmRleCAxMDYwYzJkODU0YWRhMGRjYWZiMzM1NTljODExZTRlZTQ5NGNjNmUw
Li44MjM4YTRlYzVmZWUxNjgzNjRlZDEzMDRiYzc1MTVmNTUxN2ZlODkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTk2LDcgKzk2LDcg
QEAgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OkxheWVyRmx1c2hDb250cm9sbGVyKFdlYlZpZXcqIHdl
YlZpZXcpCiBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hl
ZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdXNoQ29udHJvbGxlcikKICAgICA6IG1fZmx1
c2hDb250cm9sbGVyKGZsdXNoQ29udHJvbGxlcikKIHsKLSAgICBtX3J1bkxvb3BPYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxD
RkluZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6
OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oV2ViQ29y
ZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwg
W3RoaXNdKCkgewogICAgICAgICB0aGlzLT5sYXllckZsdXNoQ2FsbGJhY2soKTsKICAgICB9KTsK
IH0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtIChpZClpbml0CiAgICAgcGx1Z2luRGF0YWJhc2VDbGll
bnRDb3VudCsrOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKaW5kZXggNjQ2ZTZhZWY5MzJm
MWM5OTI5ODUzNmM4MmYyYzk1NWE3MWExOTJjZi4uZmU0NGU3NTFjYzExYzBlYWFmZTI4MTgxNzll
ZGNmNjVhN2YxYzcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTI0NiwxMCArMjQ2LDEwIEBAIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQogICAgICwgbV9t
b3ZpbmdXaW5kb3coZmFsc2UpCiAgICAgLCBtX3RpbWVyKCp0aGlzLCAmRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6dGltZXJGaXJlZCkKICNpZiBVU0UoQ0EpCi0gICAgLCBtX2xheWVyQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQorICAgICwgbV9sYXllckNsaWVu
dChtYWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKICAgICAsIG1fcm9vdENoaWxkKFBsYXRm
b3JtQ0FMYXllcldpbjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIG1f
bGF5ZXJDbGllbnQuZ2V0KCkpKQogI2VuZGlmCi0gICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3coc3Rk
OjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihzdGF0aWNf
Y2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhpcykpKQorICAgICwg
bV9mdWxsc2NyZWVuV2luZG93KG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCo+
KHRoaXMpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5TdHJlYW0uY3BwCmluZGV4IGFiYTYzZGFiOGIzMWU0N2FiZDgwODhiMzc4M2E4MGVjNTRj
MTAyMTguLjBmNmJlZWZmYWQxZGMwMTVjOGE0NzdlN2ZiZTVjOWI2YWFmYWZmMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKQEAgLTQz
Myw3ICs0MzMsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogCiAgICAgaWYgKG1fdHJhbnNm
ZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAgICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0YSkK
LSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hh
cj4+KCk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPGNo
YXI+PigpOwogCiAgICAgICAgIGludCBvbGRTaXplID0gbV9kZWxpdmVyeURhdGEtPnNpemUoKTsK
ICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2l6ZShvbGRTaXplICsgbGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDIxMzYz
MTdmMjk5OWQ1ZTEzNzQ5ZGYzOGUxOWE4ZjRkMmYyNWJkNjAuLjU0NzE2YTBiYjJiMWZhYjc1ZDgx
ZGU0MmFlZTk2ZWVhMmY2YjEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNTEwLDcgKzUxMCw3IEBAIE5QRXJyb3IgUGx1Z2luVmll
dzo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgYm9vbCBzZW5kTm90
aWZpY2F0CiAgICAgfSBlbHNlIGlmICghbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpCiAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklD
X0VSUk9SOwogCi0gICAgc2NoZWR1bGVSZXF1ZXN0KHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luUmVx
dWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5
RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CisgICAgc2NoZWR1bGVSZXF1ZXN0KG1ha2VVbmlx
dWU8UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlmaWNh
dGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CiAKICAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5WaWV3V2luLmNwcAppbmRleCAwNTcyOGYzZWQzNzIwNTA0YWY1NWY5ODc3Zjg2MjFiZGMw
NWNlNjIyLi41MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQyOTgxYzNmNTYzZWRmZjNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKQEAg
LTMxMCw3ICszMTAsNyBAQCBQbHVnaW5WaWV3Ojp3bmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNz
YWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGlmIChtZXNzYWdlID09IFdN
X1VTRVIgKyAxICYmCiAgICAgICAgIG1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVnaW5R
dWlya1Rocm90dGxlV01Vc2VyUGx1c09uZU1lc3NhZ2VzKSkgewogICAgICAgICBpZiAoIW1fbWVz
c2FnZVRocm90dGxlcikKLSAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CisgICAgICAgICAgICBt
X21lc3NhZ2VUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4+
KHRoaXMpOwogCiAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlci0+YXBwZW5kTWVzc2FnZShoV25k
LCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKaW5k
ZXggNTMwYjY5ZWQ3MTljMjdhY2M2YjA3ZTM1MTU5MjIxZjU1MjZjNTMwNS4uM2JmNDRkODdkMThk
NWYyNzNjZDI5NTM1Njc2YjI0MDhmMmM5MTRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oPgogCiBjbGFzcyBX
ZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoSVdlYkRhdGFTb3VyY2UqIHdlYkRhdGFTb3VyY2Up
IDogbV93ZWJEYXRhU291cmNlKHdlYkRhdGFTb3VyY2UpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAppbmRleCA0YTQ5Yjk0YmJhNThkMGM1NDYzMzI5YzNmNmVmMjNlODQ4OGI3YWYzLi43YjI5OWNl
ZTI1ZWNkMTBiYmE2MjFjODU4MWIwNmFlMDZjNWExZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGaWxlUGF0aHNMaXN0U2l6
ZSA9IFVTSFJUX01BWDsKIFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKLSAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCisgICAgLCBtX25vdGlmaWNh
dGlvbnNEZWxlZ2F0ZShtYWtlVW5pcXVlPFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+
KHdlYlZpZXcpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDQxZDVmMDZhZWFj
YjdlMTQxN2Q0YjcwMjQwMDYwYmJlNTdmNjkzMGYuLjc4NzU0MzI1M2Q1ZGZmNGVjNjY4ZWJlODhm
MDg4NWQwYmFkYjY1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNz
IFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiBpbnRlcmZhY2UgSVdlYlVJRGVsZWdh
dGU7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJv
bWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdl
YkNocm9tZUNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4
IGM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQuLmY0OGVlNzMwZWVmNzE5
NzllNGQ4ZDJjMzI3ZWQxYmExN2I5NGZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApA
QCAtMzAsNiArMzAsNyBAQAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZp
ZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGI1OTg5MzMyOTEwMDllMjg1MWVkNzU0MTVlYzRhYTBm
ZTQwM2Q2MTEuLjQ1ZTNjYTcyNzUzYWQxYWMxMTUzYmU5NjE5M2Y2ZWQ2MjFmZjg5ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkRy
YWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJWaWV3Kik7CiAgICAg
dmlydHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJveWVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmlu
ZGV4IGRiNjM1MmQ2MzgxNmY3YzlhZWVlOWY3NDRlNDhlMzgxZTg1NmQyYjUuLjY5ZDdlZDNlMGFh
MzFmMTNiZWE2NGNmMGMyNzY1ZTI1NGZiZjhlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0zNSw2
ICszNSw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYkVkaXRvclVuZG9UYXJn
ZXQ7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0
b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcq
KTsKICAgICB+V2ViRWRpdG9yQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggOGUzNTRiNzFjZGZkMmE1ZjliOGIwMTFhMDMyOWQ3NDI0YmM5MGJiYy4uNzcxZjhlYTZm
NzE2ODA5Y2RmYWRkN2UzOGM2MGRjN2EwM2UwMWZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZSB7CiB9OwogCiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQoV2ViRnJhbWUqIHdlYkZyYW1lKQotICAgIDogbV9wb2xp
Y3lMaXN0ZW5lclByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJpdmF0ZT4oKSkKKyAgICA6IG1fcG9saWN5TGlzdGVuZXJQcml2YXRlKG1ha2VVbmlxdWU8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+KCkpCiAgICAgLCBtX3dlYkZyYW1lKHdlYkZyYW1l
KQogICAgICwgbV9tYW51YWxMb2FkZXIoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNlVG9QbHVn
aW4oZmFsc2UpIApAQCAtOTczLDcgKzk3Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKiBjYWNoZWRGcmFtCiAK
ICAgICBBU1NFUlQoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID09IGNhY2hl
ZEZyYW1lLT5kb2N1bWVudExvYWRlcigpKTsKIAotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRG
cmFtZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhPihzdGF0aWNfY2FzdDxJV2ViRGF0YVNvdXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0
Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVG
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CiAjZWxzZQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGViOTc1OGJk
NDIxMDdkMmY5YTg1NGU0ZTY4ODE2NmE2ZjUxNWZiOWYuLmJiYTljOWY0NDUzNThkN2NlM2VhMDNm
ODk2NjQxYmQ2ZTVlMDQwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzYsNiAr
MzYsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2ViVmlldzsKIAogY2xh
c3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXgg
NzU2OTU5MGMxYjNjZjM4MTZmYzQyYTM1YmYzZjY2YmZkNzg5MDIyNC4uZjgwYWUwNDhiODJkYmRi
MjM0NjU0NjhkOTMzYzYwYTcwOTcyYzdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBA
IC0xNjksNyArMTY5LDcgQEAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3Rv
ckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHIKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsK
LSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUs
IGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlz
LCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBtYWtl
VW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1f
aW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZy
b250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAgICAg
bV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKICAgICBtX2Zyb250ZW5kSGFuZGxlID0g
ZnJvbnRlbmRId25kOwogICAgIHJldHVybiB0aGlzOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQoKQogICAgIGJvb2wgY3JlYXRpbmdIaWdobGln
aHQgPSAhbV9oaWdobGlnaHQ7CiAKICAgICBpZiAoY3JlYXRpbmdIaWdobGlnaHQpCi0gICAgICAg
IG1faGlnaGxpZ2h0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3Bl
Y3RlZFdlYlZpZXcpOworICAgICAgICBtX2hpZ2hsaWdodCA9IG1ha2VVbmlxdWU8V2ViTm9kZUhp
Z2hsaWdodD4obV9pbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGlmIChtX2hpZ2hsaWdodC0+aXNT
aG93aW5nKCkpCiAgICAgICAgIG1faGlnaGxpZ2h0LT51cGRhdGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKaW5kZXggOTVjOWFmYTg1MDAyYTU0MzI3MGI3Y2U2YjM4OGM3MGQ0ODkxODUxOC4uZjIw
ZWFlYmQ2NjFmOTEyYmFjZjJkOTlmNDQwOWRiY2Q3YTk3MWU1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5z
cGVjdG9yQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjhjNmJkNDkzOWNmOWIwNDg5NTdiYzc1MDBiZDg1
NDhhMDFlZTNiMi4uMTYyN2VjNWZhMjZiZjU5MDFkMDU5M2I1YTE4Mzk2OTQ3OTIxOTBiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0z
NDcsNiArMzQ3LDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbEluZGV4
ZWREYXRhYmFzZXMoKQogfQogCiBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaWRNb2RpZnlP
cmlnaW5EYXRhKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVh
ZChXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFuYWdlciwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJF
bGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcAppbmRleCAyN2FmMWJhZTY1M2VmZjAyZjY3MDRmN2UzOWFkMGUxYWM1
MGFkNzBiLi44YWZiYTBmNmQ1M2FmZDU1NTg0NWMxOTUzNmMyYTljMWVjNWYzN2QwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdlYkVsZW1lbnRQ
cm9wZXJ0eUJhZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0KQotICAgIDogbV9yZXN1bHQoc3RkOjptYWtlX3VuaXF1ZTxIaXRU
ZXN0UmVzdWx0PihyZXN1bHQpKQorICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVz
dWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBhODFjMDBlNTZjNWRlMmFlYmMxMmFiOGI2ZGIxMWJj
OTM0ZWJiYmRhLi5mYjg4ZTM5ZTdiNTZhYzMyZGNmNWNmNTAxMWMzNTQ4MTcxYTZjM2JlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0xMTUsNyArMTE1
LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50
YXRpb24oX0luX29wdF8gdm9pZCogZGljdGlvbmEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PFN0cmluZz4+IHJlZGlyZWN0VVJMc1ZlY3RvcjsKICAgICBpZiAoQ0ZBcnJheVJlZiByZWRpcmVj
dFVSTHNSZWYgPSBzdGF0aWNfY2FzdDxDRkFycmF5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShk
aWN0aW9uYXJ5UmVmLCByZWRpcmVjdFVSTHNLZXkpKSkgewogICAgICAgICBDRkluZGV4IHNpemUg
PSBDRkFycmF5R2V0Q291bnQocmVkaXJlY3RVUkxzUmVmKTsKLSAgICAgICAgcmVkaXJlY3RVUkxz
VmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oc2l6ZSk7CisgICAgICAg
IHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KHNpemUpOwog
ICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICAo
KnJlZGlyZWN0VVJMc1ZlY3RvcilbaV0gPSBTdHJpbmcoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVkaXJlY3RVUkxzUmVmLCBpKSkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCmluZGV4IDJmMWYyZjQ4MDdlYjljNGZl
NzA4MzVkYjc4ZTM0YTM0YmNmZjM2ZDAuLmQ2NWRlMTllZTk5YzQ1MTQ0NWRmYmYxYjEzNTlkYzJh
OGJhMzhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcApAQCAtMjI0
LDcgKzIyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+IENB
RDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5nCiAgICAgbWVtY3B5KG92ZXJsYXlR
dWFkQnVmZmVyLCBvdmVybGF5UXVhZFZlcnRpY2VzLCBzaXplb2Yob3ZlcmxheVF1YWRWZXJ0aWNl
cykpOwogICAgIG92ZXJsYXlRdWFkLT5VbmxvY2soKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4oc2NlbmVUZXh0dXJlLCBvdmVybGF5UXVh
ZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0PihzY2Vu
ZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKIH0KIAogLy8gRklYTUU6IDxyZGFyOi8vNjUwNzg1MT4g
U2hhcmUgdGhpcyBjb2RlIHdpdGggQ29yZUFuaW1hdGlvbidzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA3YmQ5ODg5NjExMWMz
YjNmZTZmZTU0ZjBhMjQ3OTY2MDZiMjJhNzVmLi5iMjBiYWNkNjI5ZWI1YWMwZDI3MjA0MmQ4Nzhi
MTYwZTg0NWFjMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbkNlbnRlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IFdlYk5vdGlmaWNhdGlv
bkNlbnRlclByaXZhdGUgewogSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjptX2RlZmF1bHRDZW50ZXIgPSAwOwogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6Oldl
Yk5vdGlmaWNhdGlvbkNlbnRlcigpCi0gICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZp
Y2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKKyAgICA6IGQobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRp
b25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAKaW5kZXggOTc2MTQ4ZTMzZjc0NDZkN2MzODQ5OTU5ZDZjZjczZGVmNDhmNjdm
Zi4uOTJkMzlhYzRiYzVhMDVlZWMxNGRkMWVhYjQwOTUxNmY0NDQ2NGQ5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE4ODAsNyArMTg4MCw3IEBAIGJvb2wgV2ViVmlldzo6
aGFuZGxlTW91c2VFdmVudChVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pCiAgICAgICAgIG1vdXNlRXZlbnQuc2V0Q2xpY2tDb3VudChnbG9iYWxDbGlja0NvdW50KTsK
ICAgICAgICAgaGFuZGxlZCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkubW91
c2VNb3ZlZChtb3VzZUV2ZW50KTsKICAgICAgICAgaWYgKCFtX21vdXNlT3V0VHJhY2tlcikgewot
ICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRSQUNLTU9V
U0VFVkVOVD4oKTsKKyAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyID0gbWFrZVVuaXF1ZTxU
UkFDS01PVVNFRVZFTlQ+KCk7CiAgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlci0+Y2JTaXpl
ID0gc2l6ZW9mKFRSQUNLTU9VU0VFVkVOVCk7CiAgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tl
ci0+ZHdGbGFncyA9IFRNRV9MRUFWRTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5o
d25kVHJhY2sgPSBtX3ZpZXdXaW5kb3c7CkBAIC02Nzk0LDcgKzY3OTQsNyBAQCBIUkVTVUxUIFdl
YlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUoX0luXyBCU1RSIG1pbWVUeXBlKQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYgKCFtX2VtYmVkZGVkVmlld01JTUVU
eXBlcykKLSAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMgPSBt
YWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKIAogICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5
cGVzLT5hZGQodG9TdHJpbmcobWltZVR5cGUpKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTY4OTQs
NyArNjg5NCw3IEBAIHZvaWQgV2ViVmlldzo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0Vs
ZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50CiAgICAgICAgIEFTU0VSVCghbV9m
dWxsU2NyZWVuVmlkZW9Db250cm9sbGVyKTsKICAgICB9CiAKLSAgICBtX2Z1bGxTY3JlZW5WaWRl
b0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+
KCk7CisgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyPigpOwogICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlci0+
c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwogICAgIG1fZnVsbFNjcmVlblZpZGVvQ29u
dHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYKQEAgLTY5NDYsNyArNjk0Niw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFt
ZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAg
ICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxk
Kj4oaVdvcmxkKTsKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJT
Y3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0
ZWxpc3RDb3VudCksCisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0
Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0
Q291bnQpLAogICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50
KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERv
Y3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLAogICAgICAgICBpbmplY3RlZEZyYW1l
cyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5U
b3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRk
VXNlclNjcmlwdCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CkBAIC02OTcz
LDcgKzY5NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChf
SW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxX
ZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7Ci0gICAgYXV0byBzdHlsZVNoZWV0ID0gc3RkOjptYWtl
X3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBi
bGFja2xpc3RDb3VudCksCisgICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxVc2VyU3R5
bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdo
aXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCks
CiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0
SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsK
ICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0
KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9j
dW1lbnRzKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTcyMzcsNyArNzIzNyw3IEBAIHZvaWQgV2Vi
Vmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogICAgIH0K
ICNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBpZiAoYWNjZWxlcmF0ZWQgJiYgIW1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAgIG1fYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQg
PSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CiAgICAg
bV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRlZDsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb0hlYXAuaAppbmRleCBlZWNhNzM5ZDJiMzk0ZTg2MDM1MWJhMWI0NjRkZTU0
NzhiOWJiMTY3Li5kYjM2ZWI5ZGVkMmI5ZTBmNWY2ZWY0MGRiNmM2OTkxOWE3MzA2ZDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0hlYXAuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6IFwKICAgICBc
CiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRlOyBcCiAgICAg
dm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0ZTsgXAordHlwZWRlZiBpbnQg
X19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fbWFrZUJp
c29NYWxsb2NlZE1hY3JvU2VtaWNvbG9uaWZpZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29I
ZWFwSW5saW5lcy5oCmluZGV4IGMwNDRkNzczYjg3OWE2NmRmYWRkMmUyY2EzMTVlZWVhMzc2ZmZh
NGEuLjNhYTFkMjA5NTFkYmYzMzY0ZTdkMTZkZDIzNjQzZDBjZDk3ZjZmNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBwdWJsaWM6
IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRl
OyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0ZTsgXAordHlw
ZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50
IF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1hY3JvU2VtaWNvbG9uaWZpZXIKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYyZmYzZWViMmQ3MGMw
OTgwMTE0ZGMxODdjNzBmOTgwM2YxY2U5MDguLjBiYTc1OWU0NmZlNDFjMjhhMjljNWI0Y2YxYWU0
YWY4ZjI2ZWMzZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMzMgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2gg
ZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoYWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKToKKyAgICAgICAgKHNldFdpbGxTZW5kUmVx
dWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QWNjdW1t
dWxhdGVMb2dzRm9yQ2hhbm5lbCk6CisgICAgICAgIChUZXN0UnVubmVyOjpydW5VSVNjcmlwdCk6
CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0Fz
VGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIubW06CisgICAgICAgIChldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclZpZXdB
bmRFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3Bw
OgorICAgICAgICAoRFJURGF0YU9iamVjdDo6U2V0RGF0YSk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVn
YXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJ
RGVsZWdhdGUuY3BwOgorICAgICAgICAoRFJUVW5kb01hbmFnZXI6OkRSVFVuZG9NYW5hZ2VyKToK
KyAgICAgICAgKFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6
cmVzZXRVbmRvTWFuYWdlcik6CisgICAgICAgICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgor
ICAgICAgICAoY3JlYXRlVmlld0JhY2tlbmQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
VGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0Lmg6CisgICAg
ICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmg6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9Db3VudGVycy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
SmF2YVNjcmlwdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuSlNUZXN0KToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVj
dGVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjp0ZXN0TW92aW5nVXNpbmdFbnN1cmUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVz
dE1vdmluZ1VzaW5nQWRkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNo
U2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuTG9ja1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9XZWFrUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Q0FSaW5nQnVmZmVyVGVzdDo6U2V0VXApOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmNyZWF0ZVRlc3RWYWx1ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHA6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6V2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdDo6U2V0VXApOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OldlYktpdDJXaWxsTG9hZFRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9C
dW5kbGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGb3JjZUxpZ2h0QXBwZWFyYW5jZUlu
QnVuZGxlVGVzdDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwOgorICAgICAgICAoc2VydmVy
Q2FsbGJhY2spOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRUUFMp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVz
dC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRv
d1Rlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVzdDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoYXBwbHlXb3JrYXJvdW5kVG9B
bGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycyk6CisgICAgICAgICgt
W1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOmFkZFRvV2luZG93Ol0p
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2
ZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW06Cisg
ICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBpbml0V2l0aEZvbnRPcHRpb25zOl0pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFn
ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxl
cyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0
Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9u
cy5oOgorICAgICAgICAoV1RSOjp0b1NURCk6CisgICAgICAgIChXVFI6OnRvV1RGU3RyaW5nKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6
Y3JlYXRlVGVzdFVSTCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpydW5UZXN0KToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
c2V0RGVmYXVsdENhbGVuZGFyVHlwZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsv
RXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktl
eVJlZik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0S2V5Ym9h
cmRJbnB1dE1vZGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9F
dmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3Vz
ZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKToKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8pOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwOgorICAgICAgICAoV1RSOjp3
cGVLZXlTeW1Gb3JLZXlSZWYpOgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2Fz
aGkuS29tb3JpQHNvbnkuY29tPgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRo
cmVhZEdyb3VwIGxlYWtzIHdlYWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IGU4MTdhNTczYTU4ZDE1OWQ0Y2YyMzQ5ODJjY2EwNGRjZDY0YjYwNGEuLjhmMTNl
ZTAwM2EzZGUwYTBkOTQ4NjExOTEzMjJmMzRmOGFkZWVkMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCkBAIC0zNjMsMTEgKzM2MywxMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBhZGRV
UkxUb1JlZGlyZWN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bgogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNT
dHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKG9yaWdpbi5nZXQoKSk7Ci0gICAgYXV0byBv
cmlnaW5CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7Cisg
ICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxj
aGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcob3JpZ2lu
LmdldCgpLCBvcmlnaW5CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgbWF4TGVu
Z3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGRlc3RpbmF0aW9uLmdldCgp
KTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3Ry
aW5nR2V0VVRGOENTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCksIGRlc3RpbmF0aW9uQnVmZmVyLmdl
dCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAg
LTEzMDQsNyArMTMwNCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFdpbGxTZW5kUmVxdWVzdENs
ZWFySGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgQVNTRVJUKCEq
ZXhjZXB0aW9uKTsKIAogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1V
VEY4Q1N0cmluZ1NpemUoaGVhZGVyLmdldCgpKTsKLSAgICBhdXRvIGhlYWRlckJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGhlYWRlckJ1
ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3Ro
ICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhoZWFkZXIuZ2V0KCksIGhlYWRlckJ1
ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVy
ID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CkBAIC0yMzc5LDcgKzIzNzksNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNob3VsZFBhaW50
QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKQogdm9pZCBUZXN0UnVubmVy
OjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5uZWwpCiB7CiAg
ICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShj
aGFubmVsKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhM
ZW5ndGggKyAxKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmlu
ZyhjaGFubmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgV2ViQ29yZVRl
c3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKHsgYnVmZmVyLmdldCgpIH0pOwpA
QCAtMjQ0OSw3ICsyNDQ5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpydW5VSVNjcmlwdChKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1ZhbHVlUmUKICAgICBjYWNoZVRl
c3RSdW5uZXJDYWxsYmFjayhjYWxsYmFja0lELCBjYWxsYmFjayk7CiAKICAgICBpZiAoIW1fVUlT
Y3JpcHRDb250ZXh0KQotICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENvbnRl
eHQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXVFI6OlVJU2NyaXB0Q29udGV4
dD4oKnRoaXMpOwogCiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyhKU1N0cmluZ0dldENoYXJhY3Rl
cnNQdHIoc2NyaXB0KSwgSlNTdHJpbmdHZXRMZW5ndGgoc2NyaXB0KSk7CiAgICAgbV9VSVNjcmlw
dENvbnRleHQtPnJ1blVJU2NyaXB0KHNjcmlwdFN0cmluZywgY2FsbGJhY2tJRCk7CkBAIC0yNTA2
LDcgKzI1MDYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAgYXV0byBmaWxl
ID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUsIG51bGxwdHIp
KTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRG
OENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxlQnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBm
aWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihmaWxl
QnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwg
ZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIG1fb3BlblBhbmVs
RmlsZXMucHVzaF9iYWNrKGZpbGVCdWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDY0ZGIxZDE3ZjliYzljYjhjZTZkODJmOWI3N2Ri
ZjM4NzVhY2EwY2EuLjk1N2M0ZTYzOTU5MTE4NjM1ZDcyMjE1ZTBjYWM3Y2I2ZmQ3MjBjZGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MzUsNyAr
MTUzNSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAqZnJh
bWUpCiAgICAgLy8gdGhlIHJlc3VsdCB3aXRob3V0IGFueSBjb252ZXJzaW9uLgogICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpbm5lclRleHQpKTsKICAgICBzaXplX3Qg
YnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmdSZWYu
Z2V0KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZl
clNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJp
bmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmdSZWYuZ2V0KCksIGJ1ZmZlci5nZXQoKSwg
YnVmZmVyU2l6ZSk7CiAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwgU3RyaW5nOjpm
cm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDQ2MWJkM2RmM2ViYjI2MDNhYzMy
MTgyODgyMThkZDhmNjkxNjhmZmQuLjNiZTMzMjIxZDZiM2ViYzM1NmQ1MWUzMzRhMjRkOTI5YWUy
NTNhOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdD
b250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdD
b250cm9sbGVyLm1tCkBAIC01NjgsNyArNTY4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxD
bGFzc01ldGhvZFN3aXp6bGVyPiBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclYK
IHsKICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKICAg
ICAgICAgdmlldyA9IFsoV2ViSFRNTFZpZXcgKil2aWV3IF9oaXRWaWV3Rm9yRXZlbnQ6ZXZlbnRd
OwotICAgIHJldHVybiAhW3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11dID8g
c3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBz
ZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSkgOiBOVUxMOworICAgIHJldHVybiAhW3ZpZXcg
aXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11dID8gbWFrZVVuaXF1ZTxDbGFzc01ldGhv
ZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25z
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
KSkgOiBOVUxMOwogfQogCiBzdGF0aWMgTlNVSW50ZWdlciBzd2l6emxlZEV2ZW50UHJlc3NlZE1v
dXNlQnV0dG9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0
YU9iamVjdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAK
aW5kZXggZWYyZDJlZmI4NTlmNGI4YTIyZjMwYzQ2N2FjZTFmOGFhZDE1N2E0ZC4uNzZhMjFhNThh
OWY2NmRkZTE2MDcyOWY4ZmVlMWUxNWY5NDllNjYyNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EUlREYXRhT2JqZWN0LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIFNURE1FVEhPRElNUCBE
UlREYXRhT2JqZWN0OjpTZXREYXRhKF9Jbl8gRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBfSW5fIFNU
R01FRElVTSoKICAgICBpZiAoIXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAKLSAgICBhdXRvIGZvcm1hdGV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9S
TUFURVRDPigpOworICAgIGF1dG8gZm9ybWF0ZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0
Z01lZGl1bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5
KGZvcm1hdGV0Yy5nZXQoKSwgc2l6ZW9mKEZPUk1BVEVUQykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggYzgwZGYxYmU1ZjJkZTQ3ZDNi
ODMxNjM3ZWY2ZTlmYmNkOTM0YzhlNi4uMTFjOTMzOWIxNmQ4MDRkMmMyMDFjOTMyOWY0YThjMzU0
NDJhODNjYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERl
bGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuY3BwCkBAIC03Miw5ICs3Miw5IEBAIHN0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChJV2ViRnJhbWUqIHdlYkZyYW1lKQogfQogCiBGcmFtZUxvYWREZWxlZ2F0ZTo6RnJh
bWVMb2FkRGVsZWdhdGUoKQotICAgIDogbV9nY0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxH
Q0NvbnRyb2xsZXI+KCkpCi0gICAgLCBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKHN0ZDo6bWFr
ZV91bmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+KCkpCi0gICAgLCBtX3RleHRJbnB1dENv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5wdXRDb250cm9sbGVyPigpKQorICAgIDog
bV9nY0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCisgICAgLCBtX2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyKG1ha2VVbmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+KCkp
CisgICAgLCBtX3RleHRJbnB1dENvbnRyb2xsZXIobWFrZVVuaXF1ZTxUZXh0SW5wdXRDb250cm9s
bGVyPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlE
ZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKaW5k
ZXggZjBhZGJjZTQ3OTZmYWJmNGYwZDQyYjI3MTE2MzM3MDFhYzc4MTMxNC4uNDdhYTI3MmJmMTk1
Y2Q5YTI1YWYyODY1NWQzNzFmNDE2MDBmNDU5OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9V
SURlbGVnYXRlLmNwcApAQCAtMTAxLDggKzEwMSw4IEBAIGNsYXNzIERSVFVuZG9NYW5hZ2VyIHsK
IH07CiAKIERSVFVuZG9NYW5hZ2VyOjpEUlRVbmRvTWFuYWdlcigpCi0gICAgOiBtX3JlZG9TdGFj
ayhzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKLSAgICAsIG1fdW5kb1N0YWNrKHN0
ZDo6bWFrZV91bmlxdWU8RFJUVW5kb1N0YWNrPigpKQorICAgIDogbV9yZWRvU3RhY2sobWFrZVVu
aXF1ZTxEUlRVbmRvU3RhY2s+KCkpCisgICAgLCBtX3VuZG9TdGFjayhtYWtlVW5pcXVlPERSVFVu
ZG9TdGFjaz4oKSkKIHsKIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgRFJUVW5kb01hbmFn
ZXI6OnVuZG8oKQogfQogCiBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkKLSAgICA6IG1fdW5kb01h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKKyAgICA6IG1fdW5kb01h
bmFnZXIobWFrZVVuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKICAgICAsIG1fZGVza3RvcE5vdGlm
aWNhdGlvbnMobmV3IERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIpCiB7CiAgICAgbV9m
cmFtZS5ib3R0b20gPSAwOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIFVJRGVsZWdhdGU6OlVJRGVsZWdh
dGUoKQogCiB2b2lkIFVJRGVsZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIoKQogewotICAgIG1fdW5k
b01hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOworICAgIG1fdW5k
b01hbmFnZXIgPSBtYWtlVW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOwogfQogCiBIUkVTVUxUIFVJ
RGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2
b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4u
Y3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmluZGV4IGJlNjQ2MGU1NmI3Yjcw
Y2QyNDgwZmM4N2RlMmI5YmE5NzBlNThjMzguLjQzOTE5Mjk3OTFkZDY3MTMxYzg1OGExNjY4OWM1
MmJhZGMxZGQ4NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAgLTEyOSw4ICsxMjksOCBAQCBz
dGF0aWMgZ2Jvb2xlYW4gZGVjaWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyAqLCBX
ZWJLaXRQZXJtaXNzaW9uUmVxdWVzdAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXUEVUb29saW5n
QmFja2VuZHM6OlZpZXdCYWNrZW5kPiBjcmVhdGVWaWV3QmFja2VuZCh1aW50MzJfdCB3aWR0aCwg
dWludDMyX3QgaGVpZ2h0KQogewogICAgIGlmIChoZWFkbGVzc01vZGUpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2Vu
ZD4od2lkdGgsIGhlaWdodCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFVG9vbGlu
Z0JhY2tlbmRzOjpXaW5kb3dWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZD4o
d2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRz
OjpXaW5kb3dWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CiB9CiAKIHR5cGVkZWYgc3RydWN0
IHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog
ICAgICAgICBudWxscHRyKSk7CiAgICAgZ19vYmplY3RfdW5yZWYoc2V0dGluZ3MpOwogCi0gICAg
YmFja2VuZFB0ci0+c2V0SW5wdXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJbnB1dENsaWVudD4o
bG9vcCwgd2ViVmlldykpOworICAgIGJhY2tlbmRQdHItPnNldElucHV0Q2xpZW50KG1ha2VVbmlx
dWU8SW5wdXRDbGllbnQ+KGxvb3AsIHdlYlZpZXcpKTsKICNpZiBkZWZpbmVkKEhBVkVfQUNDRVNT
SUJJTElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCiAgICAgYXV0byogYWNjZXNzaWJsZSA9IHdw
ZV92aWV3X2JhY2tlbmRfZGlzcGF0Y2hfZ2V0X2FjY2Vzc2libGUod3BlQmFja2VuZCk7CiAgICAg
aWYgKEFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaCBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCmluZGV4IDRlMDIw
ZjE5NmNkMDMzZDYxZWUwZTYyOGY2YTFlNTljYTFjMzM0NTguLjBiODRkMmQ0NTQ1NTgzZGU5ZmMw
ZGVjMTJhNGFhODhhNjU5ZWQxOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCkBAIC02OCw2ICs2OCw3IEBA
IHR5cGVkZWYgZW51bSAgewogfSBDYWxsYmFja1R5cGU7CiAKIGNsYXNzIFVJU2NyaXB0Q29udGV4
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVUlTY3JpcHRDb250ZXh0KTsKIHB1YmxpYzoKICAgICBVSVNjcmlwdENvbnRleHQoVUlTY3Jp
cHRDb250ZXh0RGVsZWdhdGUmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
Y29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2Nv
YS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKaW5kZXggMjhkYjEwYTQ3OTk2MzBjNjRjNTVkMDc4NmMw
MGVlMDk0ODkxNDVlMi4uMzliNGU1ZWE3MTgzNjg4Y2RlYzliZWZjYzk2NGNlODkzYTU0M2YwNyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6
bGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6
bGVyLmgKQEAgLTI2LDkgKzI2LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG9iamMv
cnVudGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAKIGNsYXNzIENsYXNzTWV0aG9kU3dpenpsZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsYXNzTWV0aG9kU3dp
enpsZXIpOwogcHVibGljOgogICAgIENsYXNzTWV0aG9kU3dpenpsZXIoQ2xhc3MsIFNFTCwgSU1Q
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ291bnRlcnMuaAppbmRleCBmOWVhMjI0MDI2MTUwZDhlMWFjNmJiNzYxNWI2
ZGUzODkwYWY2NzBlLi5hYjVjNTJmNzVkMWFjNmFmOTYwYWMxNGNhNzBiNWNiNzRmYTM2Mjg4IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db3VudGVycy5oCkBAIC0yNyw2ICsyNyw4IEBACiAjaWZuZGVmIENvdW50ZXJz
X2gKICNkZWZpbmUgQ291bnRlcnNfaAogCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKwog
c3RydWN0IENvcHlNb3ZlQ291bnRlciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0cnVjdGlv
bkNvdW50OwogICAgIHN0YXRpYyB1bnNpZ25lZCBjb3B5Q291bnQ7CkBAIC01MCw2ICs1Miw3IEBA
IHN0cnVjdCBDb3B5TW92ZUNvdW50ZXIgewogCiAKIHN0cnVjdCBDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc3Rh
dGljIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkNvdW50OwogICAgIHN0YXRpYyB1bnNpZ25lZCBkZXN0
cnVjdGlvbkNvdW50OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3Jp
cHRUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwCmluZGV4
IDIxMzZlOThkOGViYjg3NWQ1OTdmYzZlMDdjN2IwMWVkNWI4NGFlMTYuLjZhMjMzNjMyOTQxYWNm
NjA3MDU5NDk0MjY0MDFiMzI3MzM3YzcwODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvSmF2YVNjcmlwdFRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlw
dFRlc3QuY3BwCkBAIC03NSw3ICs3NSw3IEBAIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IHJ1
bkpTVGVzdChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBXS1BhCiAgICAg
VXRpbDo6cnVuKCZjb250ZXh0LmRpZEZpbmlzaCk7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShjb250ZXh0LmFjdHVhbFN0cmluZy5n
ZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVy
U2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoY29udGV4
dC5hY3R1YWxTdHJpbmcuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgCiAg
ICAgcmV0dXJuIGNvbXBhcmVKU1Jlc3VsdChzY3JpcHQsIGJ1ZmZlci5nZXQoKSwgZXhwZWN0ZWRS
ZXN1bHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGll
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAppbmRleCA4
ZjhkNzY4YTUzYzI3NTFhMjQzZTA1OTVlMmMwYzBmNDQ1ZGQ5NmM4Li5iYmJmZjcwOWU2N2QzNTli
NGU0ODE3MWVkN2M0YzI0MDA4YTU2N2Y0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtVXRpbGl0aWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
VXRpbGl0aWVzLmNwcApAQCAtNjksNyArNjksNyBAQCBXS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4
dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdE5hbWUsIFdLVAog
c3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZm
ZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAg
YXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAg
YXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1
ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3Ry
aW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gc3RkOjpz
dHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGFkMmE3MzJkNTE5NDdiYmM3YWZjNjRlMjdkNDIxNWNl
MzI4N2RkZWUuLjBjMjdhNDYxNjQ1ZmJhMTJhNWM2OTVkOTMyNjQzMDUyNmM0ZWYxMjkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRl
ZiBQbGF0Zm9ybVdlYlZpZXdfaAogI2RlZmluZSBQbGF0Zm9ybVdlYlZpZXdfaAogCisjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKwogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ0dHZW9tZXRyeS5oPgogI2VuZGlmCkBAIC02Myw2ICs2NSw3IEBAIHR5cGVkZWYgdWludDMy
X3QgV0tFdmVudE1vZGlmaWVyczsKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogY2xhc3Mg
UGxhdGZvcm1XZWJWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZik7CiAg
ICAgZXhwbGljaXQgUGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYg
PSAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVk
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAppbmRleCA0
YjEwYzg2YTJhYjczMmUxZWE2Mjc0ODRjYzc4OTQwZmI2Y2Q2ZTk2Li4yYTA2ZjhiYTVjYTlmZWI0
OTJhMzUyMmM1YzY1NTAxMzhkMjIzN2U1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvRXhwZWN0ZWQuY3BwCkBAIC00MDcsNiArNDA3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIGRl
c3RydWN0b3JzKQogc3RhdGljIGludCBzbm93Zmxha2VzID0gMDsKIHN0YXRpYyBpbnQgbWVsdGVk
ID0gMDsKIHN0cnVjdCBzbm93Zmxha2UgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBzdGF0aWMgdm9pZCByZXNldCgpIHsgc25vd2ZsYWtlcyA9IG1lbHRlZCA9IDA7
IH0KICAgICBzbm93Zmxha2UoKSB7ICsrc25vd2ZsYWtlczsgfQogICAgIH5zbm93Zmxha2UoKSB7
ICsrbWVsdGVkOyB9CkBAIC00MTYsNyArNDE3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1
ZV9wdHIpCiB7CiAgICAgLy8gVW5pcXVlIHNub3dmbGFrZXMgY2Fubm90IGJlIGNvcGllZC4KICAg
ICB7Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25v
d2ZsYWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxz
bm93Zmxha2U+KCkpOwogICAgICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CiAgICAgICAg
IEVYUEVDVF9FUShtZWx0ZWQsIDApOwogICAgIH0KQEAgLTQyNSw3ICs0MjYsNyBAQCBURVNUKFdU
Rl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7
Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2Zs
YWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93
Zmxha2U+KCkpOwogICAgICAgICBVbmV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+
PiBjKFdURk1vdmUocykpOwogICAgICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CiAgICAg
ICAgIEVYUEVDVF9FUShtZWx0ZWQsIDApOwpAQCAtNDQ2LDcgKzQ0Nyw3IEBAIFRFU1QoV1RGX0V4
cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIH07CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPHN0
ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxh
a2U+KCkpOworICAgICAgICBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPiwgaW50
PiBzKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAgcGxvdyhXVEZNb3ZlKHMpLnZh
bHVlKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CkBAIC00NTQsNyAr
NDU1LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpy
ZXNldCgpOwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxz
bm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigp
KSk7CisgICAgICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMo
bWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpKTsKICAgICAgICAgcGxvdyhX
VEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7
CkBAIC00NjIsNyArNDYzLDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAg
c25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDx2b2lkLCBzdGQ6
OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVl
PHNub3dmbGFrZT4oKSkpOworICAgICAgICBFeHBlY3RlZDx2b2lkLCBzdGQ6OnVuaXF1ZV9wdHI8
c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSkpOwog
ICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShz
bm93Zmxha2VzLCAxKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hDb3VudGVkU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hD
b3VudGVkU2V0LmNwcAppbmRleCA4NGRhNWVjM2ZmYzI0OGFjZGQ5ZTM2MzMwMzhjNjlkYWU4OTEy
MDk5Li43YjhmYWYyODhhYmMwN2NmYWY4YjUyNzEyMzhmNzZkMDEzMDEyZWU2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCkBAIC0yNDEs
NyArMjQxLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleSkKIAogICAg
IEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBoYXNo
Q291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwg
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjU5
LDcgKzI1OSw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlJbml0aWFs
Q291bnQpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAg
YXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMTIpOwogCiAg
ICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rp
b25Db3VudCk7CkBAIC0yOTgsNyArMjk4LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVu
aXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1
ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsK
IApAQCAtMzEyLDcgKzMxMiw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJL
ZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1
bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRy
LmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBA
IC0zMjMsNyArMzIzLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9H
ZXRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRy
PGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwog
ICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMzcsNyAr
MzM3LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2lu
Z1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVl
UHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCmluZGV4IDFlMTYzZDM4
OTk4ZTZiYWJmZmY1Mzg0MTNjY2EyOGFhNmQyOTg5ODIuLmE4MGNhNzQ5NGE4ZjlhNzk2N2UxZTQ5
NDZmZThjY2E2MzljYmI1OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hN
YXAuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5
KQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgbWFwLmFkZChX
VEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yMzAsNyArMjMwLDcgQEAg
VEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAg
ICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIg
PSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwog
CkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0NvbnRh
aW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPGludD4s
IGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4o
NSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQo
V1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjU1LDcgKzI1NSw3IEBAIFRFU1QoV1RGX0hh
c2hNYXAsIFVuaXF1ZVB0cktleV9HZXRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDxz
dGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIu
Z2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yNjksNyAr
MjY5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9p
bnRlcikKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRy
ID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI4OSw3ICsyODksNyBAQCBURVNUKFdU
Rl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfVGFrZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hN
YXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1h
cDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVl
UHRyKSwgMik7CiAKQEAgLTU2MywxMiArNTYzLDEyIEBAIFRFU1QoV1RGX0hhc2hNYXAsIEVuc3Vy
ZV9VbmlxdWVQb2ludGVyKQogewogICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0
cjx1bnNpZ25lZD4+IG1hcDsKICAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmVu
c3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkPigxKTsgfSk7Cisg
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZD4oMSk7IH0pOwogICAgICAgICBFWFBF
Q1RfRVEoMXUsICptYXAuZ2V0KDEpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgYWRkUmVzdWx0
Lml0ZXJhdG9yLT5rZXkpOwogICAgICAgICBFWFBFQ1RfVFJVRShhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMik7IH0pOworICAgICAgICBhdXRvIGFkZFJlc3Vs
dDIgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPHVuc2lnbmVkPigyKTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1hcC5nZXQo
MSkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQyLml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgYWRkUmVzdWx0Mi5pdGVyYXRvci0+a2V5KTsK
QEAgLTU5MCw2ICs1OTAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfUmVmUHRyKQogfQog
CiBjbGFzcyBPYmplY3RXaXRoUmVmTG9nZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBPYmplY3RXaXRoUmVmTG9nZ2VyKFJlZjxSZWZMb2dnZXI+JiYgbG9n
Z2VyKQogICAgICAgICA6IG1fbG9nZ2VyKFdURk1vdmUobG9nZ2VyKSkKQEAgLTYwNCw3ICs2MDUs
NyBAQCB2b2lkIHRlc3RNb3ZpbmdVc2luZ0Vuc3VyZShSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikK
IHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0V2l0aFJlZkxv
Z2dlcj4+IG1hcDsKICAgICAKLSAgICBtYXAuZW5zdXJlKDEsIFsmXSB7IHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7IH0pOworICAg
IG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dl
cj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CiB9CiAKIHZvaWQgdGVzdE1vdmluZ1VzaW5nQWRkKFJl
ZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQpAQCAtNjEyLDcgKzYxMyw3IEBAIHZvaWQgdGVzdE1vdmlu
Z1VzaW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogICAgIEhhc2hNYXA8dW5zaWduZWQs
IHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogCiAgICAgYXV0byYg
c2xvdCA9IG1hcC5hZGQoMSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIHNsb3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7Cisg
ICAgc2xvdCA9IG1ha2VVbmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIp
KTsKIH0KIAogVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX0xhbWJkYXNDYXB0dXJpbmdCeVJlZmVy
ZW5jZSkKQEAgLTY4Myw2ICs2ODQsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBWYWx1ZUlzRGVzdHJ1
Y3RlZE9uUmVtb3ZlKQogVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVy
ZWYpCiB7CiAgICAgc3RydWN0IERlcmVmT2JzZXJ2ZXIgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIHJlZigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgICsrY291bnQ7CkBAIC02OTcsNyArNjk5LDcgQEAgVEVTVChXVEZf
SGFzaE1hcCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiAgICAgICAgIGNvbnN0IERlcmVm
T2JzZXJ2ZXIqIG9ic2VydmVkQnVja2V0IHsgbnVsbHB0ciB9OwogICAgIH07CiAKLSAgICBhdXRv
IG9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJlZk9ic2VydmVyPigpOworICAgIGF1dG8g
b2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CiAKICAgICBIYXNoTWFwPFJl
ZlB0cjxEZXJlZk9ic2VydmVyPiwgaW50PiBtYXA7CiAgICAgbWFwLmFkZChhZG9wdFJlZihvYnNl
cnZlci5nZXQoKSksIDUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvSGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNw
cAppbmRleCA3MWVjZmRkYjg0MmI2YmQ1MTY0MWNhMDViNjEwOGFkNDhmNjJiYjdkLi44NzI2OGM3
NGYwY2I4ZmMxNDllYmY2MGM4NTg4ZmNlZDM1ODFhMjA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoU2V0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIFRFU1QoV1RGX0hhc2hT
ZXQsIFVuaXF1ZVB0cktleSkKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAg
ICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTE0NCw3ICsx
NDQsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRl
cikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBzZXQ7CiAKLSAgICBhdXRv
IHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBw
dHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwog
CkBAIC0xNTgsNyArMTU4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X0NvbnRh
aW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+
IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50
Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBV
bmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaFNldDxzdGQ6OnVu
aXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVu
aXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE5
MSw3ICsxOTEsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfVGFrZVVzaW5nUmF3
UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0yODMsNiArMjgzLDcgQEAgVEVTVChXVEZfSGFz
aFNldCwgQ29weUNhcGFjaXR5SXNOb3RPbkJvdW5kYXJ5KQogVEVTVChXVEZfSGFzaFNldCwgUmVm
UHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiB7CiAgICAgc3RydWN0IERlcmVmT2JzZXJ2ZXIgewor
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIE5FVkVSX0lO
TElORSB2b2lkIHJlZigpCiAgICAgICAgIHsKICAgICAgICAgICAgICsrY291bnQ7CkBAIC0yOTcs
NyArMjk4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYp
CiAgICAgICAgIGNvbnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2VydmVkQnVja2V0IHsgbnVsbHB0ciB9
OwogICAgIH07CiAKLSAgICBhdXRvIG9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJlZk9i
c2VydmVyPigpOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERlcmVmT2JzZXJ2ZXI+
KCk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxEZXJlZk9ic2VydmVyPj4gc2V0OwogICAgIHNldC5h
ZGQoYWRvcHRSZWYob2JzZXJ2ZXIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0xpc3RIYXNoU2V0LmNwcAppbmRleCA2NTdiZTQxZDYyMDcyNDQ2N2E1NTQ5ZTJhYjVh
MTk0MWM0ZTM3M2MxLi5iNzcwYTViMjdjMWQyYjA5NWE1YmI1OWQ2NWFjM2Y0ZGM0ZTRlNjhlIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCkBAIC0z
ODAsNyArMzgwLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleSkKIAogICAg
IExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGxpc3QuYWRkKFdURk1vdmUo
dW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTM5Niw3ICszOTYsNyBAQCBURVNUKFdURl9M
aXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlz
dEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgYXV0byBwdHIgPSB1bmlx
dWVQdHIuZ2V0KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtNDEw
LDcgKzQxMCw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNV
c2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+
IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsK
KyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGlu
dD4oNSk7CiAgICAgYXV0byBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbGlzdC5hZGQoV1RG
TW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtNDIxLDkgKzQyMSw5IEBAIFRFU1QoV1RGX0xpc3RIYXNo
U2V0LCBVbmlxdWVQdHJLZXlfSW5zZXJ0QmVmb3JlVXNpbmdSYXdQb2ludGVyKQogewogICAgIExp
c3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQ
dHJXaXRoMiA9IHN0ZDo6bWFrZV91bmlxdWU8aW50PigyKTsKKyAgICBhdXRvIHVuaXF1ZVB0cldp
dGgyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50PigyKTsKICAgICBhdXRv
IHB0cldpdGgyID0gdW5pcXVlUHRyV2l0aDIuZ2V0KCk7Ci0gICAgYXV0byB1bmlxdWVQdHJXaXRo
NCA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig0KTsKKyAgICBhdXRvIHVuaXF1ZVB0cldpdGg0ID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig0KTsKICAgICBhdXRvIHB0cldp
dGg0ID0gdW5pcXVlUHRyV2l0aDQuZ2V0KCk7CiAKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1
ZVB0cldpdGgyKSk7CkBAIC00MzUsNyArNDM1LDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVu
aXF1ZVB0cktleV9JbnNlcnRCZWZvcmVVc2luZ1Jhd1BvaW50ZXIpCiAgICAgQVNTRVJUX0VRKHB0
cldpdGg0LCBsaXN0Lmxhc3QoKS5nZXQoKSk7CiAgICAgQVNTRVJUX0VRKDQsICpsaXN0Lmxhc3Qo
KS5nZXQoKSk7CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgzID0gc3RkOjptYWtlX3VuaXF1ZTxp
bnQ+KDMpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxpbnQ+KDMpOwogICAgIGF1dG8gcHRyV2l0aDMgPSB1bmlxdWVQdHJXaXRoMy5n
ZXQoKTsKIAogICAgIGxpc3QuaW5zZXJ0QmVmb3JlKHB0cldpdGg0LCBXVEZNb3ZlKHVuaXF1ZVB0
cldpdGgzKSk7CkBAIC00NjIsNyArNDYyLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1
ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVu
aXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGxpc3Q7CiAKLSAgICBhdXRv
IHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKICAgICBhdXRvKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbGlz
dC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTG9jay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9M
b2NrLmNwcAppbmRleCAyZGNjZWRjYWRjYzZjMjIyNzNkZWJjMjBmM2ZmNjc3Yzg3MzI5MDI3Li41
ZmQzMWJmMWM5YWJlY2ZiOGFiZTczNTYwOGE0N2M1NjA0MzA0NzcyIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcApAQCAtNDIsOSArNDIsOSBAQCBzdHJ1Y3QgTG9ja0luc3Bl
Y3RvciB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KIHZvaWQgcnVuTG9ja1Rlc3QodW5z
aWduZWQgbnVtVGhyZWFkR3JvdXBzLCB1bnNpZ25lZCBudW1UaHJlYWRzUGVyR3JvdXAsIHVuc2ln
bmVkIHdvcmtQZXJDcml0aWNhbFNlY3Rpb24sIHVuc2lnbmVkIG51bUl0ZXJhdGlvbnMpCiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPExvY2tUeXBlW10+IGxvY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxM
b2NrVHlwZVtdPihudW1UaHJlYWRHcm91cHMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxkb3VibGVb
XT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGRvdWJsZVtdPihudW1UaHJlYWRHcm91cHMpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtl
X3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVy
R3JvdXApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPExvY2tUeXBlW10+KG51bVRocmVhZEdyb3Vwcyk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPGRvdWJsZVtdPihudW1UaHJlYWRHcm91cHMpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Bl
ckdyb3VwKTsKIAogICAgIGZvciAodW5zaWduZWQgdGhyZWFkR3JvdXBJbmRleCA9IG51bVRocmVh
ZEdyb3VwczsgdGhyZWFkR3JvdXBJbmRleC0tOykgewogICAgICAgICB3b3Jkc1t0aHJlYWRHcm91
cEluZGV4XSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
YXJraW5nTG90LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3Qu
Y3BwCmluZGV4IDQ1MmUyMjc3MWRjMDY0YWRhYWZlNjIwZWIzM2U4MDEzMGY3OWYxOTcuLmUwMGEw
OWIyYTE3YWE3MzQ4NTZlNDJjMTE0NWNiZTYwODYzZjBhMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgc3RydWN0
IFNpbmdsZUxhdGNoVGVzdCB7CiAKIHZvaWQgcnVuUGFya2luZ1Rlc3QodW5zaWduZWQgbnVtTGF0
Y2hlcywgdW5zaWduZWQgZGVsYXksIHVuc2lnbmVkIG51bVRocmVhZHMsIHVuc2lnbmVkIG51bVNp
bmdsZVVucGFya3MpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNpbmdsZUxhdGNoVGVzdFtdPiB0
ZXN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8U2luZ2xlTGF0Y2hUZXN0W10+KG51bUxhdGNoZXMpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRjaFRlc3RbXT4gdGVzdHMgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxTaW5nbGVMYXRjaFRlc3RbXT4obnVtTGF0Y2hlcyk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGxhdGNoSW5kZXggPSBudW1MYXRjaGVzOyBsYXRjaEluZGV4LS07
KQogICAgICAgICB0ZXN0c1tsYXRjaEluZGV4XS5pbml0aWFsaXplKG51bVRocmVhZHMpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcAppbmRleCAwODFkZjll
NGZjMWQyNTFkODE0YjIyNjRiZDJkMGUwNTJjMGJkNDFmLi5mNGVmOTgzYjFhOWZiZTg5ODA3Yzc1
YWMyOGZkYjYyNmQ5YTk2YTExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SZWZDb3VudGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9S
ZWZDb3VudGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIFRFU1QoV1RGLCBSZWZDb3VudGVyKQog
VEVTVChXVEYsIFJlZkNvdW50ZXJEZWxldGVDb3VudGVyV2l0aE91dHN0YW5kaW5nVG9rZW5zKQog
ewogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBjb3VudGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxUZXN0Q291bnRlcj4oWyZdKFJlZkNvdW50ZXJFdmVudCBldmVudCkg
eworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdENvdW50ZXI+IGNvdW50ZXIgPSBtYWtlVW5p
cXVlPFRlc3RDb3VudGVyPihbJl0oUmVmQ291bnRlckV2ZW50IGV2ZW50KSB7CiAgICAgICAgICAg
ICBpZiAoIWNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY291bnRlciA9IG51bGxw
dHI7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNw
cAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1NGZmZmQzMzIxMzk1ZTlmMWUyZDJhN2MyLi41MWVjYTA3
NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5ZmY0ZmQ1NmJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFRFU1QoV1RGX1Zhcmlh
bnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gdW5pcXVlUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAg
ICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4oKTsKICAgICAgICAgVmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4sIGludD4gdiA9IFdURk1vdmUodW5pcXVlUHRyKTsKIAogICAgICAgICBF
WFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNv
dW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKaW5kZXggMTUw
YjliNzZjOGE1NjVlMzY1NTQ4MzZlMGJiZWMwNTA1Yzc4NDhmMi4uN2U2MzA2OTNlZWM2MDQxYTM3
NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
V2Vha1B0ci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IEludCA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxJbnQ+IHsKIH07CiAKIGNsYXNzIEJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJhc2Uo
KSB7IH0KIApAQCAtNTc4LDEwICs1NzksMTAgQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hhc2hT
ZXRFeHBhbnNpb24pCiAgICAgICAgIEVYUEVDVF9FUSh3ZWFrSGFzaFNldC5jYXBhY2l0eSgpLCAw
dSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXApOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdGlhbENhcGFjaXR5IC8gbWF4TG9h
ZENhcDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwog
ICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0
cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAgICAgIG90aGVyT2JqZWN0cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpKTsKKyAgICAgICAgICAgIG90aGVyT2JqZWN0cy5h
cHBlbmQobWFrZVVuaXF1ZTxCYXNlPigpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNr
Q29uc2lzdGVuY3koKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoc19iYXNlV2Vha1Jl
ZmVyZW5jZXMsIG90aGVyT2JqZWN0cy5zaXplKCkpOwpAQCAtNjE1LDcgKzYxNiw3IEBAIFRFU1Qo
V1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vh
a0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICB1bnNpZ25lZCBvYmplY3RDb3VudCA9
IGluaXRpYWxDYXBhY2l0eSAqIDI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
YmplY3RDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNl
PigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAg
b2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0
LmNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTY2NywxMCArNjY4LDEwIEBAIFRFU1QoV1RGX1dlYWtQ
dHIsIFdlYWtIYXNoU2V0Q29tcHV0ZXNFbXB0eSkKICAgICB7CiAgICAgICAgIFdlYWtIYXNoU2V0
PEJhc2U+IHdlYWtIYXNoU2V0OwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2U+
PiBvYmplY3RzOwotICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwog
ICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgZG8gewotICAg
ICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAg
ICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtI
YXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUo
b2JqZWN0KSk7CiAgICAgICAgIH0gd2hpbGUgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgPT0g
Zmlyc3RPYmplY3QuZ2V0KCkpOwpAQCAtNzM0LDggKzczNSw4IEBAIFRFU1QoV1RGX1dlYWtQdHIs
IFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBXZWFr
SGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKLSAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1
ZTxCYXNlPigpOworICAgICAgICBhdXRvIGxhc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7
CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqZmlyc3RPYmplY3QpOwogICAgICAgICB3ZWFrSGFz
aFNldC5hZGQoKmxhc3RPYmplY3QpOwogICAgICAgICBpZiAod2Vha0hhc2hTZXQuYmVnaW4oKS5n
ZXQoKSAhPSBmaXJzdE9iamVjdC5nZXQoKSkKQEAgLTc1OSwxMCArNzYwLDEwIEBAIFRFU1QoV1RG
X1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAgICAgewogICAgICAgICBXZWFrSGFz
aFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
YXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8
QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpub25GaXJzdE9iamVjdCk7CiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNl
PigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAg
ICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFw
cGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdp
bigpLmdldCgpID09IG5vbkZpcnN0T2JqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggMmFhYjY1ZGQ4ZmQ3
ZWYwNzA1MWZiNmY3NTY3NThjZGU3MDJlMDdhMS4uODFkN2JhMjkxYWU5ZjRhYjdjZjJlNWY5YWFk
NjJjOTQyNDM1MzY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVy
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQog
ICAgIHsKICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgICAgICBtX3Jp
bmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9y
aW5nQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Q0FSaW5nQnVmZmVy
PigpOwogICAgIH0KIAogICAgIC8vIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkb3VibGUgc2Ft
cGxlUmF0ZSwgVUludDMyIG51bUNoYW5uZWxzLCBQQ01Gb3JtYXQgZm9ybWF0LCBib29sIGlzSW50
ZXJsZWF2ZWQsIHNpemVfdCBjYXBhY2l0eSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA3NzhlNjE1NWYwNmNj
MTI4Mzk3OTc1ZjA0NTg3MTJhMmM3MTA0MGZhLi5kY2E0NjM2MDJlOTZkNjBhMDQ1MTM4MTIxY2Ji
ZGNlZmJlZTllNWMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIHN0YXRpYyB1bnNpZ25lZCBkZWxldGlvbkNvdW50OwogCiBjbGFzcyBD
YWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FsY0V4cHJlc3Np
b25Ob2RlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5DYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUoKQogICAgIHsKQEAgLTUyLDcgKzUzLDcg
QEAgY2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNh
bGNFeHByZXNzaW9uTm9kZSB7CiAKIHN0YXRpYyBSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1
ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsKLSAgICBhdXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKKyAgICBhdXRvIG5vZGUgPSBtYWtlVW5p
cXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKICAgICByZXR1cm4gV2ViQ29yZTo6
Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUobm9kZSksIFdlYkNvcmU6OlZhbHVlUmFu
Z2VBbGwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCmluZGV4IGY1OGRhOGE0MjA3M2VjOTliYmVlMzRh
ODViZWMzNGMwODVjNTJhNjQuLjBjMWEwNjlmMTNjMzljNDA5ZTVkNWUxYjAzYTdlOTJiZjliMzY2
YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlk
TWVzc2FnZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9G
aWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgVEVTVChGaWRvSGlkTWVz
c2FnZVRlc3QsIFRlc3RQYWNrZXRTaXplKQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUw
NjA3MDg7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAKLSAgICBhdXRvIGluaXRQYWNrZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7
CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hh
bm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRh
KSwgZGF0YS5zaXplKCkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGluaXRQYWNrZXQtPmdldFNlcmlh
bGl6ZWREYXRhKCkuc2l6ZSgpKTsKIAotICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdU
Rk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gbWFrZVVuaXF1ZTxG
aWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOwog
ICAgIEVYUEVDVF9FUSg2NHUsIGNvbnRpbnVhdGlvblBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEo
KS5zaXplKCkpOwogfQogCkBAIC03MCw3ICs3MCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0
LCBUZXN0UGFja2V0RGF0YSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweEY1MDYwNzA4Owog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21t
YW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsKLSAgICBhdXRvIGluaXRQYWNr
ZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwg
VmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0
ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1
aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIHNpemVfdCBpbmRleCA9IDA7CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZCA9IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWRE
YXRhKCk7CkBAIC05NCw3ICs5NCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFj
a2V0Q29uc3RydWN0b3JzKQogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAg
IEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsK
ICAgICBzaXplX3QgbGVuZ3RoID0gZGF0YS5zaXplKCk7Ci0gICAgYXV0byBvcmlnUGFja2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1v
dmUoZGF0YSksIGxlbmd0aCk7CisgICAgYXV0byBvcmlnUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRv
SGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CiAK
ICAgICBzaXplX3QgcGF5bG9hZExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ob3JpZ1BhY2tl
dC0+cGF5bG9hZExlbmd0aCgpKTsKICAgICBWZWN0b3I8dWludDhfdD4gb3JpZ0RhdGEgPSBvcmln
UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggMWVkMTMyOGY4MTMwOWUxMmUxMzcx
Y2IzYWRmZTZiMGE5NzgzZWViNi4uMjI4MzgzYTBmMzBhOWIxMzlmNmFhZjQzZjk1Y2VkZDgwOTE2
NmU2YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0
ZWN0Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVz
dCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVN
b25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVu
aXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtd
IChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2Ug
RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0xOTAsNyArMTkw
LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVDaGFuZ2VzKQogCiAg
ICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7
CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1w
RmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hh
bmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRv
cj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yNTAsNyArMjUwLDcgQEAgVEVTVF9GKEZp
bGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRpb24pCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdv
cmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUu
Y29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBh
dXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVz
dFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7
CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNh
dGlvbjoKQEAgLTI4OSw3ICsyODksNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RD
aGFuZ2VBbmRUaGVuRGVsZXRlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNy
ZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwg
W10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9y
ID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5
UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
ICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpA
QCAtMzQ2LDcgKzM0Niw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1
dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6
Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigp
LCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0
b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNv
cHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29r
aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMu
Y3BwCmluZGV4IDkyZDhhMTkyY2E3YjJhMTA4MTU2NTk5N2IwZWE1YjFmOWFlYThmNjUuLjIxOWU5
NjZkYmViYWE4NGQzNjAyNzIyZTk1OWUzMmY2NGZiNGRiMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC00NCw3ICs0NCw3
IEBAIGNsYXNzIEN1cmxDb29raWVzOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgewogICAg
ICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeSgpOwogCi0gICAgICAgIG1fY29va2llSmFyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29v
a2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOworICAgICAgICBtX2Nvb2tpZUphciA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKICAgICAgICAg
bV9jb29raWVKYXItPm9wZW4oKTsKICAgICAgICAgbV9jb29raWVKYXItPnNldEFjY2VwdFBvbGlj
eShDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQ
YWdlLmNwcAppbmRleCA1YzBhZTMzMTMyOGIzNmIwYmE3MGExOGQ5OTM2Njk0MTJhY2EyOWE5Li5i
M2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5ZGRhMTIxMmYxOTMyYTBkMjBmIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5D
cmVhdGVQYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5l
d1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwog
ewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVu
ZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAg
IG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAg
ICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNp
emVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvTW9kYWxBbGVydHNTUEkuY3BwCmluZGV4IGE0ZmJhMTI3YzZlNGQwM2U2M2Q5YTgxNzJhMzli
M2NiOGIxNDcyYzcuLjdiYzM1MjRmMmJkYjlkYmQ3YTQzNWEzY2M2YWQzODMyZTk0NGVkZDUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJ
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQ
SS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2Uo
V0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAg
IEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJW
aWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5l
ZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1Bh
Z2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1
aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
VGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKaW5kZXggMGY3
ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4MDM4ZDE5MjIxZWRiZjdkNS4uY2QxOWQ3Y2RlNTg4OTYyNWYx
MjIxMmZjNzUzY2ZkNTVlMjc4ZDkyMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRp
bmcuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBXZWJLaXQyVGV4dEZpZWxkQmVnaW5BbmRF
ZGl0RWRpdGluZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0
Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdFdmVu
dHNUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgp
LCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50
KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3Nh
Z2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3Bw
CmluZGV4IGM3YjAyNTFiZmNmMjFhYTRhYmQxMTRjODU1MDc5MjQxZDY2MTc0ZTkuLjlkYzNhNmRh
OTk1MDljMjcxMTIxZDRjM2E0NTMwODRmZWU5ODliZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY2xh
c3MgV2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJVc2VyTWVzc2FnZVRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVk
QnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAg
IHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAg
ICAgICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy0+cGFnZSgpLCB0aGlzKTsKIAogICAg
ICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9XaWxsTG9hZC5jcHAKaW5kZXggZWQ5ZjBmZmM3MDI1YWIxMmNiNTM5NjdmNzIwNWZm
OTZjODliZTY5OS4uNTJmMThkY2ViNDJkNTFhYzA4Mzk1YjYyMDAxZDRhOTU0MGY3NDUyZCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBjbGFzcyBXZWJLaXQyV2lsbExvYWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CiAgICAgICAgIGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJ
bmplY3RlZEJ1bmRsZVRlc3QoIldpbGxMb2FkVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAg
d2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKIAog
ICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUlu
QnVuZGxlX0J1bmRsZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9G
b3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQppbmRleCBhZWJhMWMzNDhmYmM2
NmExNzBlNTM5ZTBhNzI4NmFlZTkxNTNlNjA0Li4yOTFhNDc4YTI3ODQyNDJkYWQ0NWEzYThmMTcz
OTA1ZDdkM2IyZjIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5k
bGVfQnVuZGxlLm1tCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byByZXN1
bHRTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KHNjcmlwdENvbnRleHQsIHJlc3Vs
dCwgbnVsbHB0cikpOwogCiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShyZXN1bHRTdHJpbmcuZ2V0KCkpOwotICAgICAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZl
clNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHJlc3VsdFN0cmluZy5nZXQo
KSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAgICAgICBXS0J1bmRsZVBhZ2VTZXRV
c2VEYXJrQXBwZWFyYW5jZShtX3BhZ2UsIHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAppbmRl
eCBkNmNjMmZiMjQ3ZTU2MjA2Njk3NzYxMGIyNTY3OWI3ZWQxZGNjOGJhLi43YzhjOGI1MjE1NGFj
NGViMDk4ZTY5NTE3OTA2OWEwNWViZGM2NmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcApAQCAt
MjU2LDYgKzI1Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25FbXB0
eVJlYWxtKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0CiB9CiAKIGNsYXNzIFR1bm5l
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVHVubmVsKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIDogbV9zZXJ2
ZXIoc2VydmVyKQpAQCAtMjk5LDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNr
KFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiB7
CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9DT05ORUNUKSB7CiAgICAg
ICAgIGdfYXNzZXJ0X2NtcHVpbnQoc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSwgPT0sIGdQ
cm94eVNlcnZlclBvcnQpOwotICAgICAgICBhdXRvIHR1bm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8
VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOworICAgICAgICBhdXRvIHR1bm5lbCA9IG1ha2VVbmlx
dWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOwogICAgICAgICBhdXRvKiB0dW5uZWxQdHIgPSB0
dW5uZWwuZ2V0KCk7CiAgICAgICAgIHR1bm5lbFB0ci0+Y29ubmVjdChbdHVubmVsID0gV1RGTW92
ZSh0dW5uZWwpXShjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChl
cnJvck1lc3NhZ2UpIHsKQEAgLTM5NCw3ICszOTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0F1dGhlbnRpY2F0aW9uUHJveHkoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25z
dAogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyhQcm94
eUF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBhdXRvIGh0
dHBzU2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRUZXN0U2VydmVyPihXZWJLaXRUZXN0
U2VydmVyOjpTZXJ2ZXJIVFRQUyk7CisgICAgYXV0byBodHRwc1NlcnZlciA9IG1ha2VVbmlxdWU8
V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOwogICAgIGh0
dHBzU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOwogCiAgICAgdGVzdC0+bG9hZFVSSShodHRw
c1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Byb3h5L2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9j
ZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nl
c3NUZXN0LmgKaW5kZXggN2E0NGNiMDVjZDRiYzAyN2UxMmQxMTAzZmFmNmEwMDdhYzZmNDBmMy4u
YjZiNzI4ZTQ1ZTA5YzUxYTZkNmJhOTliZjcxN2UxOTVlOWEwZTBjMSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNlbmRpZgogCiBjbGFzcyBXZWJQcm9jZXNzVGVzdCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc1Rl
c3QoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwg
V2ViS2l0V2ViUGFnZSopID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKaW5kZXggMTI1NjI0MTk2YTcxYzZk
M2FkNWJjZGQyOWYxNDJiODZhYmI5ZmQxMS4uZTQwMDA3NjMzZjIzNjI0MDUyOWRmNTRhZTg2MzIw
ODdiZDM2OTUyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NRE9NV2luZG93VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgc3RhdGljIGdi
b29sZWFuIGNsaWNrZWRDYWxsYmFjayhXZWJLaXRET01ET01XaW5kb3cqLCBXZWJLaXRET01FdmVu
dCosIFdlYktpdERPTUQKIAogY2xhc3MgV2ViS2l0RE9NRE9NV2luZG93VGVzdCA6IHB1YmxpYyBX
ZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQ
cm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRET01E
T01XaW5kb3dUZXN0PigpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNz
VGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0
PigpOyB9CiAKIHByaXZhdGU6CiAgICAgZ3VpbnQ2NCB3ZWJQYWdlRnJvbUFyZ3MoR1ZhcmlhbnQq
IGFyZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRp
bGl0aWVzQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0
aWVzQ29jb2EubW0KaW5kZXggOGQyZWU4YWQxNmNhZDY3OTU2OGVkOWI2ZDc1Y2VjZDgyMTUwZmVk
Yi4uMzQ5MGVmMWNlYjZmMTc4MDUwMmYwY2RjOTE5Yzk3MWUyOTJiZTkwNSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpAQCAt
MzgsNyArMzgsNyBAQCBzdGQ6OnN0cmluZyB0b1NURChOU1N0cmluZyAqc3RyaW5nKQogICAgICAg
ICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gW3N0cmlu
ZyBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAg
YXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAg
YXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1
ZmZlclNpemUpOwogICAgIE5TVUludGVnZXIgc3RyaW5nTGVuZ3RoOwogICAgIFtzdHJpbmcgZ2V0
Qnl0ZXM6YnVmZmVyLmdldCgpIG1heExlbmd0aDpidWZmZXJTaXplIHVzZWRMZW5ndGg6JnN0cmlu
Z0xlbmd0aCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBvcHRpb25zOjAgcmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSByZW1haW5pbmdSYW5nZTowXTsKICAgICByZXR1
cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGgpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDU0NmNhNmUyMjJkOWZlYTgxY2U3
YmU0ZTJjMmQzOTg1YzViNDRmMGYuLjI0NzU3Mjg5OGI2YTg3OWM3YTM2YjRmYzY1YjkxNTMzMDQ3
MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAg
LTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGlu
Z0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCkKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IHN3aXp6bGVyOwogICAgIHN0YXRpYyBkaXNwYXRj
aF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAg
ICAgICAgc3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5T
QXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJz
Rm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50
aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKKyAgICAgICAgc3dpenps
ZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5j
bGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3Zp
ZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKICAgICB9KTsKIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE3NTIwND4gaXMgZml4ZWQuCi0gICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10s
IEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHBy
ZXNzVUlDYWxsb3V0QmFyKSk7CisgICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IG1ha2VV
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3Rv
cihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxs
b3V0QmFyKSk7CiAgICAgX2lucHV0U2Vzc2lvbkNoYW5nZUNvdW50ID0gMDsKICAgICBhcHBseVdv
cmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYktpdFRlc3RTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYktpdFRlc3RTZXJ2ZXIuaAppbmRleCA2OTBmMGE3NzU2Y2ZlM2FmYjA3ZDkwYmVlZmYwOTU3
OGIyZmM1NWRlLi4yODE0NTI3ZjE5Yjk1NGY4MmFlYjg3YmMwZTRjOGRjMGI5YTdmNWI2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVz
dFNlcnZlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBjbGFzcyBXZWJLaXRUZXN0U2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKIAogICAgIGVudW0gU2VydmVyT3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KaW5kZXggODYyNjM1NDQzMzVhN2Y1ZDk3MWI1ZGMw
ZDI1OWU1NWRjMGQ3M2M2Ni4uNGJkZTZjNTEwMGQyYmQ2ZmU0YmI5MGZhY2JlMjVkMzM5YTUwNTRi
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpAQCAtODQs
NyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0
aW9ucyAqKWZvbnRPcHRpb25zCiAKICAgICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXplWmVybzsKICAg
ICBfc2hhZG93Qmx1clJhZGl1cyA9IDA7Ci0gICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmlu
ZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHNoYXJlZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOworICAgIF9yZXBs
YWNlRm9udE9wdGlvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4o
TlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250
T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3Rp
bmcpKTsKICAgICBfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMgPSBOTzsKICAgICBfaGFzTXVsdGlw
bGVGb250cyA9IE5POwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
CmluZGV4IDE1MzIyMTgyNjk5ZTBlYTMwNzU0YTAyMjZjM2E3YjYyOTU5NzZkMDAuLjExMzk5YjM5
MGZlOTE3MGY2YzUyNTI3NWFjMjM0NTgyZGFmNzUwZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBXVFJFdmVudFF1
ZXVlSXRlbTsKICNlbmRpZgogCiBjbGFzcyBFdmVudFNlbmRlclByb3h5IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFdmVudFNlbmRlclByb3h5
KFRlc3RDb250cm9sbGVyKik7CiAgICAgfkV2ZW50U2VuZGVyUHJveHkoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaAppbmRleCA3ZDk0NWQ2
N2VjNjc1MGJlNzA2NDM1YTJhNmIzYzc0ZDFhZDE3NDNjLi4xZWQ0YWRmOWIzOTM5M2EzMzNhYTMy
NTEwOTdiOWUzYWE0MmNjMzZiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dl
b2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9s
b2NhdGlvblByb3ZpZGVyTW9jay5oCkBAIC0yNywxMCArMjcsMTIgQEAKICNkZWZpbmUgR2VvbG9j
YXRpb25Qcm92aWRlck1vY2tfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIEdl
b2xvY2F0aW9uUHJvdmlkZXJNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayhXS0NvbnRleHRSZWYpOwogICAgIH5H
ZW9sb2NhdGlvblByb3ZpZGVyTW9jaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAK
aW5kZXggMWY5ZDNlZmM5NjRmYjEzNzdiYzY2M2MwMTYwYzM0YTg4YjIzMjhhNi4uYzlhNTJjMTVm
NzcwODMwNjgzYzhlZmY2ODk0MjliZDBiYzFmNTY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuY3BwCkBAIC02MTIsNiArNjEyLDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
Ojptb25pdG9yV2hlZWxFdmVudHMoKQogfQogCiBzdHJ1Y3QgU2Nyb2xsQ29tcGxldGlvbkNhbGxi
YWNrRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEpTQ29u
dGV4dFJlZiBtX2NvbnRleHQ7CiAgICAgSlNPYmplY3RSZWYgbV9mdW5jdGlvbjsKIApAQCAtNjQ3
LDcgKzY0OCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsCiAgICAgCiAgICAgSlNWYWx1ZVBy
b3RlY3QoY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAKLSAgICBhdXRvIHNjcm9s
bENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbENvbXBsZXRp
b25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOworICAgIGF1
dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSA9IG1ha2VVbmlxdWU8U2Nyb2xsQ29tcGxl
dGlvbkNhbGxiYWNrRGF0YT4oY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAgICAg
YXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyID0gc2Nyb2xsQ29tcGxldGlvbkNh
bGxiYWNrRGF0YS5yZWxlYXNlKCk7CiAgICAgYm9vbCBjYWxsYmFja1dpbGxCZUNhbGxlZCA9IFdL
QnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKHBhZ2Us
IGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0cik7CiAgICAg
aWYgKCFjYWxsYmFja1dpbGxCZUNhbGxlZCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA3MTE2Y2M5
ODE1NjY5ZDk0OTRkYmY4ZGU0OGJhZWVjZDYzNzRjMzc2Li44M2IyYjMwYjEzMzJlYzc3YmZlZmNj
MjlmZGQxYTJlNDgzY2I1ZjIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5
cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQ
YWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewogICAgIGJvb2wgaXNNYWluUGFnZSA9IG1fcGFn
ZXMuaXNFbXB0eSgpOwotICAgIG1fcGFnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0
ZWRCdW5kbGVQYWdlPihwYWdlKSk7CisgICAgbV9wYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxJbmpl
Y3RlZEJ1bmRsZVBhZ2U+KHBhZ2UpKTsKIAogICAgIHNldFVwSW5qZWN0ZWRCdW5kbGVDbGllbnRz
KHBhZ2UpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA1OWQzZTFiMGQwMmUyMmM1MmZhNzY1
NDMzMjljMjNmNmI2MmEzODlhLi5iMzIzYzI1MDQ0ZjU1MDM2MDc2ZjQ4ZWRkZDQ3YmNlYWEzZTIw
ZjE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBX
VFIgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYp
OwogICAgIH5JbmplY3RlZEJ1bmRsZVBhZ2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDU5ZjI1YzFiYmFjNmVk
ODllOTRjZmE4OGE5YWZmYzAzZmI3MjRhMTguLjNiMGVkNmFhY2E3NTk5NTVlZDE1Y2U4YjBjMTBj
ZjM3MmM5OTFkMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjM3NCw3ICsyMzc0LDcgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAg
YXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUs
IG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxl
QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAg
ICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hh
cltdPihmaWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmls
ZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIFdL
QXJyYXlBcHBlbmRJdGVtKGZpbGVVUkxzLmdldCgpLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aEJh
c2VVUkwobV90ZXN0VVJMLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpKSkuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCAwZTVjMDdjYTcyOWI2
ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMyYzAwMTdjLi4xOGU1N2QyZmNmNjI5NzY3YTczMjk3OWJjMmVk
YzU3YWNmMTA5Y2UyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcApAQCAtNzMwLDcgKzczMCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRUb0pTT2Jq
ZWN0QXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtCiAgICAgSlND
b250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFp
bkZyYW1lKTsKIAogICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBjaGlsZHJlbi5zaXplKCk7Ci0g
ICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ZhbHVlUmVmW10+KGVs
ZW1lbnRDb3VudCk7CisgICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyBpKyspCiAgICAgICAgIHZhbHVlRWxlbWVudHNb
aV0gPSBKU09iamVjdE1ha2UoY29udGV4dCwgY2hpbGRyZW5baV0tPndyYXBwZXJDbGFzcygpLCBj
aGlsZHJlbltpXS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
UGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmll
dy5oCmluZGV4IGY3NGNjMmQzOTNkNTMwNWZkMzY2NWJiMGUwYTM1NTE4NDQ3MzEwOWYuLmNhNGZk
YmQ3MjIxNWFmNDhiZGE5NjdkNWJjYWI0ODE1NmJhZGNjNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgIWRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjaW5jbHVk
ZSA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgpAQCAtNjQsNiArNjUsNyBAQCB0eXBlZGVmIGNhaXJv
X3N1cmZhY2VfdCogUGxhdGZvcm1JbWFnZTsKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0
Zm9ybVdlYlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtV2ViVmlldyhXS1dlYlZpZXdDb25maWd1cmF0
aW9uKiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvU3RyaW5nRnVuY3Rpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1
bmN0aW9ucy5oCmluZGV4IGRhZjE0Y2E3MDU0ODZiZmMyMDY0MzEyM2RlNTA5MWI3OWU1ZDAxMzEu
LmJiYTE3YzJlZmZiMDk2NjVlZmMyOGVlYjY5ZTcyMzI5YjFkNjliNzQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaApAQCAtNzMsNyArNzMsNyBAQCBpbmxpbmUgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRvSlMoY29uc3QgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
JiBzdHJpbmcpCiBpbmxpbmUgc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQog
ewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
YnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBX
S1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsK
ICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsK
IH0KQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKGNvbnN0IFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIFdURjo6U3RyaW5nIHRvV1RGU3Ry
aW5nKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3Ry
aW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAg
ICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChz
dHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFdURjo6U3RyaW5n
Ojpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAt
IDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAx
NjU0NjI5Y2FhNmY2ZDhjODk0NTQ4MzUxYzBjOGZiMGEzMzMzNzJhLi5mOTdmMTVlNjEyYzBiMWE0
NzAzOGRkYmQzNzhiNjZkMGU3YWM0Mjc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6Omlu
aXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIldlYktpdFRlc3RSdW5uZXJQYWdlR3JvdXAiKSk7CiAgICAgbV9wYWdl
R3JvdXAuYWRvcHQoV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihwYWdlR3JvdXBJZGVu
dGlmaWVyLmdldCgpKSk7CiAKLSAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5p
cXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOworICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IG1h
a2VVbmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CiB9CiAKIFdLUmV0YWluUHRyPFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZUNvbnRleHRDb25m
aWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zOjpDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykgY29u
c3QKQEAgLTUyMSw3ICs1MjEsNyBAQCBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVm
PiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjbwogICAgICAgICBt
X2NvbnRleHQgPSBwbGF0Zm9ybUFkanVzdENvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbihjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSkpLmdldCgpLCBjb250
ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fY29udGV4dE9wdGlvbnMgPSBvcHRp
b25zLmNvbnRleHRPcHRpb25zOwogCi0gICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7
CisgICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Q
cm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgaWYgKGNvbnN0IGNoYXIq
IGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVy
VHJlZVRlbXApOwpAQCAtOTUxLDcgKzk1MSw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0
U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAg
ICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlcmUg
aXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVzZXQgdGhlIEV2ZW50U2VuZGVyIGZv
ciBlYWNoIHRlc3QuCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxF
dmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5p
cXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogCiAgICAgLy8gRklYTUU6IElzIHRoaXMgbmVl
ZGVkPyBOb3RoaW5nIGluIFRlc3RDb250cm9sbGVyIGNoYW5nZXMgcHJlZmVyZW5jZXMgZHVyaW5n
IHRlc3RzLCBhbmQgaWYgdGhlcmUgaXMKICAgICAvLyBzb21lIG90aGVyIGNvZGUgZG9pbmcgdGhp
cywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVhbnVwIHRvby4KQEAg
LTEyMzQsMTEgKzEyMzQsMTEgQEAgc3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RVUkwoY29uc3Qg
Y2hhciogcGF0aE9yVVJMKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOwog
ICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIGJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsg
bGVuZ3RoICsgMSk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwog
ICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihw
cmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNl
cGFyYXRvcgorICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxjaGFyW10+KHByZWZpeExlbmd0aCArIFBBVEhfTUFYICsgbGVuZ3RoICsgMik7IC8vIDEgZm9y
IHRoZSBwYXRoU2VwYXJhdG9yCiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVm
aXgpOwogICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIFBB
VEhfTUFYKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgYm9v
bCBUZXN0Q29udHJvbGxlcjo6cnVuVGVzdChjb25zdCBjaGFyKiBpbnB1dExpbmUpCiAgICAgVGVz
dE9wdGlvbnMgb3B0aW9ucyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21tYW5kKTsKIAogICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0soY3JlYXRlVGVzdFVSTChjb21tYW5k
LnBhdGhPclVSTC5jX3N0cigpKSk7Ci0gICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKKyAgICBtX2N1
cnJlbnRJbnZvY2F0aW9uID0gbWFrZVVuaXF1ZTxUZXN0SW52b2NhdGlvbj4od2tVUkwuZ2V0KCks
IG9wdGlvbnMpOwogCiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3Nob3Vs
ZER1bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+c2V0
SXNQaXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CkBAIC0yOTYwLDcgKzI5NjAs
NyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5UZXN0KGNvbnN0IFRlc3RJ
bnZvY2F0aW9uJikKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQog
CiBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFn
ZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29u
ZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDEwNzNhYjE1MWEwZTM1NDlhNDEyYTVkMjVm
NTRmN2IxYjRlOWRjYjguLjA5MTA4YjBlNTIyNDQzYTY3NWI1MTE0ZjQyOGM3OWFhMTBkMjgzZmMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjY5LDcg
KzE2NjksNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQoV0tTdHJpbmdS
ZWYgc2NyaXB0LCB1bnNpZ25lZCBzY3JpcHRDYWxsYmFjawogICAgIG1fcGVuZGluZ1VJU2NyaXB0
SW52b2NhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4dCkK
LSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVJU2NyaXB0Q29u
dGV4dD4oKnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWU8VUlT
Y3JpcHRDb250ZXh0PigqdGhpcyk7CiAgICAgCiAgICAgbV9VSVNjcmlwdENvbnRleHQtPnJ1blVJ
U2NyaXB0KHRvV1RGU3RyaW5nKHNjcmlwdCksIHNjcmlwdENhbGxiYWNrSUQpOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDc4ODBkZDhkZjU1MmZjOWQ4MmI5
NGQxZDJmMmRkZmQ2ZGY4MmVjMmIuLjg1YjFiMDIwNmViODkyMjZlODZjNmI0MWFiOTNlNWRiOTVl
YmZkOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTQwLDYg
KzQwLDcgQEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0SW52b2NhdGlvbiBmaW5hbCA6
IHB1YmxpYyBVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGVzdEludm9jYXRpb24pOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFRlc3RJbnZvY2F0aW9uKFdLVVJMUmVmLCBjb25zdCBUZXN0T3B0aW9u
cyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxl
ckNvY29hLm1tCmluZGV4IDBmYmY4ZWE1MjNkMzQ4ZDI1NmVjYzUyMzA0MmRlYTAyZmVjZGQxZGMu
LjBlYmY3YmZkMDAzOWY0ZWY4MDkzMmMxZWI1MTkyZmY1NGVlM2M0YTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTE2
OCw3ICsxNjgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXco
V0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAgICAgICBbY29waWVkQ29u
ZmlndXJhdGlvbiBfc2V0QXBwbGljYXRpb25NYW5pZmVzdDpbX1dLQXBwbGljYXRpb25NYW5pZmVz
dCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046dGV4dCBtYW5pZmVzdFVSTDpuaWwgZG9jdW1l
bnRVUkw6bmlsXV07CiAgICAgfQogCi0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsK
KyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvcGllZENv
bmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwogICAgIGZpbmlzaENyZWF0aW5nUGxhdGZvcm1X
ZWJWaWV3KG1fbWFpbldlYlZpZXcuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKG9wdGlvbnMu
cHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKE5TU3RyaW5nICppZGVu
dGlmaWVyKQogewogICAgIG1fb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRpZmllciA9IGlkZW50aWZp
ZXI7CiAgICAgaWYgKCFtX2NhbGVuZGFyU3dpenpsZXIpCi0gICAgICAgIG1fY2FsZW5kYXJTd2l6
emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIg
Y2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHN3aXp6bGVkQ2FsZW5kYXIpKTsKKyAgICAgICAgbV9jYWxlbmRhclN3aXp6bGVyID0gbWFrZVVu
aXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNDYWxlbmRhciBjbGFzc10sIEBzZWxlY3Rvcihj
dXJyZW50Q2FsZW5kYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRDYWxlbmRhcikp
OwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldENvbnRlbnRFeHRlbnNpb25zKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
aW5kZXggZGU1NzhmNzNmYzM2ZWNkMTU4OWM5OWY4ZGJmOGZjY2MzOTg3YjQyZS4uZWY5ZTM4ZTcy
M2JhYTk1ZGZmZTcwZWM1YTg3NWNmZWM4NGUzMjg3NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTI3MSw3ICsyNzEsNyBA
QCBpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQg
bG9jYXRpb24sIGd1aW50KiBtb2RpZmllcgogICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTI7CiAK
ICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShrZXlSZWYpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1
ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtl
eVJlZiwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBjaGFyIGNoYXJDb2RlID0gYnVm
ZmVyLmdldCgpWzBdOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9U
ZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250
cm9sbGVySU9TLm1tCmluZGV4IDZhNjFkZjhlMzVkNmZhMDhjOGIxNGM1MWE4MjNjNjJkMDgwNWQ0
ZDIuLmYzYzQxN2M3ZmI3Y2FhNGRlNDc3N2M3YTQ5NGY1M2FmMzJhMThiZmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0xNTEsOCAr
MTUxLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKIAogICAgIG1fcHJlc2VudFBvcG92ZXJT
d2l6emxlcnMuY2xlYXIoKTsKICAgICBpZiAoIW9wdGlvbnMuc2hvdWxkUHJlc2VudFBvcG92ZXJz
KSB7Ci0gICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBA
c2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVy
KSkpOwotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNz
XSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93
RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVz
ZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CisgICAgICAgIG1fcHJlc2VudFBvcG92ZXJT
d2l6emxlcnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmll
d0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1h
dGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZp
ZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenps
ZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJD
b250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3
OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CiAgICAgfQogICAg
IAogICAgIEJPT0wgc2hvdWxkUmVzdG9yZUZpcnN0UmVzcG9uZGVyID0gTk87CkBAIC0yNjksOSAr
MjY5LDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogICAgIGF1dG8gY29udHJvbGxlckNsYXNz
ID0gVUlLZXlib2FyZElucHV0TW9kZUNvbnRyb2xsZXIuY2xhc3M7CiAgICAgbV9pbnB1dE1vZGVT
d2l6emxlcnMucmVzZXJ2ZUNhcGFjaXR5KDMpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNv
bnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9j
YXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6
emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6
emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVy
ZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsK
LSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3Rp
dmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1v
ZGVzKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5p
cXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1
cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1
dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VV
bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3Io
Y3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6
emxlQ3VycmVudElucHV0TW9kZSkpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNr
ZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xh
c3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3
aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkpOwogICAgIFtVSUtleWJvYXJkSW1wbC5zaGFyZWRJbnN0
YW5jZSBwcmVwYXJlS2V5Ym9hcmRJbnB1dE1vZGVGcm9tUHJlZmVyZW5jZXM6bmlsXTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KaW5kZXgg
ZDFjZmM2YTMzMjFlMDI5YzhiYTgxMTVmNGE2ZDkyMDdmOGU3MTg0Zi4uODljZTRlZjEyNmMxNWQ5
MmRjZjc2NjUwY2U2ZWVmNWI4OTIzMTcyZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9FdmVudFNlbmRlclByb3h5Lm1tCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWUKIAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVy
LT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbklu
V2luZG93XV07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNz
ZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6
emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwor
ICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1
ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2Vk
TW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsK
ICAgICAgICAgW3RhcmdldFZpZXcgbW91c2VEb3duOmV2ZW50XTsKICAgICAgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVy
UHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycwogICAgICAgICB0YXJnZXRWaWV3ID0gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZp
ZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAKICAgICBBU1NFUlQodGFyZ2V0Vmlldyk7Ci0gICAgYXV0
byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xh
c3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNl
QnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9ucykpOworICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBt
YWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9y
KHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVu
dFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVu
dF07CiAgICAgW3RhcmdldFZpZXcgbW91c2VVcDpldmVudF07CiAgICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6bmlsXTsKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICAvLyBBbHdheXMgdGFyZ2V0IGRy
YWdzIGF0IHRoZSBXS1dlYlZpZXcgdG8gYWxsb3cgZm9yIGRyYWctc2Nyb2xsaW5nIG91dHNpZGUg
dGhlIHZpZXcuCiAgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gaXNEcmFnID8gbV90ZXN0Q29udHJv
bGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgOiBbbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDp3aW5kb3dMb2NhdGlvbl07CiAg
ICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRv
bnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZl
bnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgICAgICBhdXRv
IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhv
ZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25z
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
KSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgaWYg
KGlzRHJhZykKICAgICAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRHJhZ2dlZDpldmVudF07CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BF
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3Bw
CmluZGV4IDQ2OWJmYWYwZThjZjI5MDczMGJhYmZhMDc4MzZkODc3ZWM3MGU4ZjUuLjY5NmY0NTU3
NTg5NmZlODI2NjQ4N2QwOThlOGZlOGVlNjFlNTRkNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCkBAIC0yNzksNyArMjc5LDcg
QEAgc3RhdGljIHVpbnQzMl90IHdwZUtleVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYs
IHVuc2lnbmVkIGxvY2F0aW9uLCB1aW50MzIKICAgICAgICAgcmV0dXJuIFdQRV9LRVlfRjEyOwog
CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1Np
emUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihi
dWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhr
ZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1
ZmZlci5nZXQoKVswXTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376147</attachid>
            <date>2019-08-13 01:32:36 -0700</date>
            <delta_ts>2019-08-13 01:57:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190813013234.patch</filename>
            <type>text/plain</type>
            <size>1725701</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDkyMDFmZjM5Y2JiMDFhNDJhYWQ1MTg2YzRkZWIxMDgzYWZiOWZhLi42NDFhZDIzY2U3MzZiZDFi
Mzk0ZmQzMGEzYTZjMDFhNjNhNGZjY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgbXVs
dGlwYXJhbWV0ZXIgb3ZlcmxvYWRzIG9mIGFwcGVuZCgpIGluIFN0cmluZ0J1aWxkZXIgYXMgYSBm
aXJzdCBzdGVwIHRvd2FyZCBzdGFuZGFyZGl6aW5naW5nIG9uIHRoZSBmbGV4aWJsZUFwcGVuZCgp
IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZmUzNjczMjEwMThkZDVhMWQ0N2Y1NWMxYTcxZjBhODJm
OGM1NzIuLjBjMDY1NzVlZDQ2ZTFiN2Y5MDU4YzQ3M2U5MTZlMjU5NjdlZDAwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAgICAgICogYmVu
Y2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFZlY3Rv
ci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAgICAgICAqIHd0
Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9u
Lmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICog
d3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9T
dHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAg
ICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3Ip
OgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29t
PgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdl
YWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUwZWJmYzEwNDczZDliY2U5NzM0ODNkMmY4M2Zi
OTEyMGFmZjY5OC4uMWVjYWZhYjc1YWFiNWVjZTU5ZDczYTc1NTA0NGQyYjM3MTRhZTc2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4MjUgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcpOgorICAgICAgICAqIE1vZHVsZXMv
YmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JC
ZWFjb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUNETTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lz
dGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y2xpZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6c2V0Q2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9s
b2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJl
Y29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5k
ZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVP
cGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRl
U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9w
ZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFu
c2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2
ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURC
VHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFu
YWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2
ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tl
bmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
OjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRl
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJl
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rh
c2s6OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVj
b2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2Rp
bmdUYXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
YW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNl
dEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBh
bm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2Fn
ZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVG
cm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5k
VmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVh
dGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50
cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29t
cHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFt
ZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlBhcnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJ
bml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRl
cyk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRo
b2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFt
ZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0Ns
YXNzOjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29t
YmluZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1
bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRz
Ojpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAg
KiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9E
T01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNl
dEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAg
ICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNl
dDo6YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNj
YWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgor
ICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6Cisg
ICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJJbXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6
OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNv
bnN1bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZVN1cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1l
S2V5ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRv
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvRWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
U2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hh
cGVQYXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2Up
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhP
YmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0
ZXJDU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvbVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRF
dmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAg
ICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAg
KiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRv
bS9NaWNyb3Rhc2tzLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdyk6Cisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFn
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNl
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURh
dGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNl
bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kQ3Jl
YXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhU
TUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHls
ZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAg
KiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25G
aWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxl
U3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6
CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjptYXBN
b3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRU
b1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAg
ICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVx
dWVzdFRvSGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0
VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpp
bnNlcnRBZGphY2VudEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNl
V2hvbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNo
U3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJs
ZVN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEluc3BlY3RlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9y
eUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0
b3JQYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dl
YkhlYXBBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uTG9nKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBs
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0
ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25E
aXNhYmxlci5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNj
aGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5l
Y3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRl
eHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpp
bml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJs
YXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9u
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAgICAg
ICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0
aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdl
L1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0
ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJzUHJv
cGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBwYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUp
OgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVu
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNaXhlZFR5cGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJlck9m
Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNo
YW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bGVu
Z3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bXV0
YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpkYXRh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVybyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50Rmxh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2Ft
cGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6
OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGVu
b3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1plcm8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NSKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVm
ZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZl
Y3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNl
RWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0
YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6RHlu
YW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2FpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5l
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJPZkF6
aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNl
UmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkVGltZUZyYW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2
ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5w
dXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6
d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6CisgICAgICAgIChXZWJDb3JlOjpaZXJv
UG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJl
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRQb2xlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYVBsYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNo
YXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lvbjo6Y29weVNoYXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lv
bjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpu
b3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3Vy
Y2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0
QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
Um90YXRpb25TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVr
YWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1l
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVj
dG9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNv
bW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNo
YXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlRpbGVkQmFja2luZ0xheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBj
cmVhdGVUaWxlQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6
UGxhdGZvcm1DQUxheWVyV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnN3YXBC
dWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZv
bnRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90
YXRpb25Qcm9wZXJ0aWVzOjppc0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3Bl
cnRpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpyb3RhdGVkU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YubW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3Bp
ZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXll
cjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNl
UHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1
bmNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6
OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1
ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3Vl
OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRlQ29tbWFuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6OnNldFNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
bkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldL
Q0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6
OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2Fj
aGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1f
Y2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1
cmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVh
dGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRvWVVWKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlh
RW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0ZURlY29kZVRhc2spOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxDYWNoZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
X3Jlc3RhcnRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJjaENvb2tpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4
dDo6Q3VybENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6d2lsbFNldHVw
U3NsQ3R4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0
aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNS
ZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVudDo6
cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
ZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAgICAg
KiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6
OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NEYXRh
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxl
eExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRp
bmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
bG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0
RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0ZUJh
c2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2Vk
VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjphZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0SW50b1RyYWNr
ZWRSZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25lZERlc2NlbmRhbnRz
TWFwOjphZGREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWdp
blVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZUJsb2NrUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExp
bmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxv
YXRpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJl
TGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxp
emVSYXJlQmxvY2tGbG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJh
Z21lbnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFn
bWVudE1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5
VHJhY2tzRm9yQXV0b1JlcGVhdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGlu
ZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVBbmNlc3RvckNsaXBwaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OlJlbmRlckxheWVyQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdl
UXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWlu
dFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVj
dEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFw
cGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRv
U2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50
ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJh
c3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2lj
U2hhcGVQYXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93
U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5k
ZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0
ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21S
ZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXpl
TWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0
ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdl
Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OkludmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRp
b25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAg
ICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NW
R1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6
Y29weSBjb25zdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5UGFpckFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQ
cmltaXRpdmUuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFu
aW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlM
aXN0QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJG
cm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9j
a1NwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQ
cmludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RN
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAg
ICAqIHRlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lN
b2NrQ0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0u
aDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2Ft
ZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVu
cXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrQW5kVGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrRm9yTW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtl
clRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25E
YXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICog
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGll
bnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OmV2YWx1YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5k
aW5nQ2FsbGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xMiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBGcmFtZUxvYWRlcjo6b3BlbiBj
YW4gZXhlY3V0ZSBzY3JpdHBzIHZpYSBzdHlsZSByZWNhbGMgaW4gRnJhbWU6OnNldERvY3VtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCAwZTFiZmU3MzU0MTQyNGMwZDE5ZGI5MThjNDUyZmUwNWY5
ZTY3NWFmLi4xMjgxZDMyNTgzNjcyMDRlMTJkNjI3NWZmZTE5OWU1M2JlYzg2YjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3
aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2Vz
dE9wZW5TU0wuY3BwOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3RDb250ZXh0SW1wbDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChQ
QUw6OkNsb2NrOjpjcmVhdGUpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW06
CisgICAgICAgIChDbG9jazo6Y3JlYXRlKToKKwogMjAxOS0wOC0wOSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUYXBwaW5nIGJ1dHRvbnMgaW4gRGF0
YSBEZXRlY3RvcnMgbG9va3VwIHByZXZpZXdzIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRl
eCAzNThmMmJmMDA1YWU2NDRkODEyMzI4ZDVkZWRlNDE5YzhiYTAxY2ZiLi5hM2YyYjc2NjhjNWJj
MmNlY2QyY2Y1NjI4ZGY1NWM3M2RkMTQzMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2Vy
dmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6CisgICAgICAgICogZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3Nlcik6Cisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisK
IDIwMTktMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjI0NTU2Nyk6IFtHVEtdW1dQRV0gWzIuMjUuMV0gV2ViS2l0
V2ViRHJpdmVyIGdldHMgaW5zdGFsbGVkIGFzIFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2YTRhODE3
ZjA5YjI0YmQ4YjcyNDkxMzhmY2M5Yjc0N2YxMDU1OGQyLi44MjFmMzgxOGNlYzUzZGYxZDhiZWNj
YjcwYTc2NzgzMzZhODUzYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyMSBAQAorMjAxOS0wOC0x
MyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFk
ZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
OjpzdGFydE1vbml0b3JpbmdEaXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGlj
cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3Vw
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9h
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYXA6OmFkZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBl
bmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFk
ZENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3
b3JrRGF0YVRhc2tCbG9iKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6
ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6
Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0
V2l0aFByZWZsaWdodCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29u
dGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVz
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFn
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRD
aGFubmVsOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRh
YmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6Q2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlRW50cnkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlUmVkaXJlY3RFbnRyeSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdpc3RlclN1YnJlc291cmNlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdl
cjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5bmNocm9uaXplKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFkUmVjb3JkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2ZUZyb21NZW1vcnkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hD
YWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNy
ZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3
b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRU
YXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRT
dG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9y
aXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6
ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRl
RGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgICh3ZWJraXRTb3Vw
UmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQ
cm92aWRlcjo6TmV0d29ya1JUQ1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JU
Q1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJv
dmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVN5bmNNZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUlu
Y29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlz
cGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNz
YWdlQXN5bmMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldh
dGNoZG9nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6
OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2
ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRl
cm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlUGx1Z2luSW50ZXJuYWwpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAg
ICAgIChBUEk6OlVSTDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6VVJMOjpwYXJzZVVSTElmTmVj
ZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdElu
dm9jYXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFn
ZTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFn
ZVByb3h5Ol0pOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9j
YXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAod2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKToK
KyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAgICAgICAod2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24pOgorICAgICAgICAod2Via2l0X2Nv
bnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbik6CisgICAgICAgICh3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uX3dpdGhfbGFiZWwpOgorICAg
ICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUpOgorICAgICAg
ICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3IpOgorICAgICAgICAqIFNo
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFNo
YXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXlt
ZW50VUkpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmg6CisgICAgICAg
ICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6dGV4bWFwTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RMYXllcik6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21w
b3NpdG9yKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TlBSZW1vdGVPYmplY3RNYXA6OnJlZ2lzdGVyTlBPYmplY3QpOgorICAg
ICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAg
ICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBD
YWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6
CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElI
VFRQQ29va2llU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OnJlZ2lz
dGVyT2JzZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldEluamVj
dGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQpOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9u
TWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3Zp
ZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgIChXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW06CisgICAg
ICAgICgtW1dLT2JzZXJ2YWJsZVBhZ2VTdGF0ZSBpbml0V2l0aFBhZ2U6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2V0Vmlld0Ns
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfaW5p
dFdpdGhQYWdlUmVmOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29v
a2llU3RvcmUubW06CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JlIGFkZE9ic2VydmVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAg
ICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0RG93bmxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1b
V0tQcm9jZXNzUG9vbCBfc2V0QXV0b21hdGlvbkRlbGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dL
VXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6XSk6Cisg
ICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpuYW1lOnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmRO
YXZpZ2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0SW5wdXREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNz
aW9uLm1tOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBzZXREZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlciBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWR5U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAo
d2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaENv
bnRleHRNZW51Q2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaERvd25sb2Fk
Q2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgICh3ZWJraXRGaW5kQ29udHJvbGxlckNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hGb3Jt
Q2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50
LmNwcDoKKyAgICAgICAgKGF0dGFjaEljb25Mb2FkaW5nQ2xpZW50VG9WaWV3KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAg
ICAgICAoYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAg
ICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcik6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxl
cl9pbl93b3JsZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdB
cmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nl
ci5jcHA6CisgICAgICAgICh3ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2ppU2VjdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkluc3BlY3RvckNyZWF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0Fu
ZERyb3BIYW5kbGVyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAg
ICgtW1dLVmlldyBtYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAgICAoLVtX
S1ZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvd3BlL1dQRVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6OlZpZXc6OlZpZXcpOgorICAg
ICAgICAoV0tXUEU6OlZpZXc6OnNldENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvcXQvV1BFUXRWaWV3LmNwcDoKKyAgICAgICAgKFdQRVF0Vmlldzo6bm90aWZ5TG9hZENoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXUEVRdFZpZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFj
ayk6CisgICAgICAgIChXUEVRdFZpZXc6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwOgorICAgICAgICAoV1BFUXRWaWV3
QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VX
aXRoQ29uc3RyYWludHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5
TGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVk
bHlVbnN1c3BlbmRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRUZXh0SW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2
aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlN
YXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5l
Y3RlZEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cGx1Z2luUmVxdWlyZXNHdGsyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RU
b1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmluaXRpYWxp
emVEZWJ1Z0luZGljYXRvcik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVI
b3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVOb2RlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2Rl
OjpjcmVhdGVXaXRoUGxhaW5MYXllcik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0Ojpt
YWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRDcmFz
aENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvcm1DbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjptYXli
ZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjph
ZGRQcm9jZXNzSWZQb3NzaWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFBy
ZXdhcm1JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRX
ZWJQcm9jZXNzSGFzVXBsb2Fkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5n
U3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFj
a2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tS
ZXF1aXJlbWVudHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVj
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tOgorICAgICAgICAo
V2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW06
CisgICAgICAgICgtW1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldyBkaWRNb3ZlVG9XaW5k
b3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpw
cm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
c2V0dXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGJlY29tZUZpcnN0
UmVzcG9uZGVyRm9yV2ViVmlld10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50
RGlkRm9jdXM6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clByZXZpb3VzTm9kZTphY3Rpdml0eVN0YXRl
Q2hhbmdlczp1c2VyT2JqZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0
aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQ
YWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
IGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGlu
aXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmluZFVJOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAg
ICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy93
aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRDb25uZWN0ZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
OgorICAgICAgICAoV0tCdW5kbGVTZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZVNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEVkaXRvckNs
aWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdL
QnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0
UmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlT3ZlcmxheUNyZWF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVy
TWFjLm1tOgorICAgICAgICAoV0tCdW5kbGVQYWdlQmFubmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RP
TU9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0T3JDcmVhdGVET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4
dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRFeHRlbnNpb25NYW5h
Z2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFZGl0b3JDcmVh
dGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdl
LmNwcDoKKyAgICAgICAgKHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUpOgorICAgICAgICAod2Via2l0
V2ViUGFnZUNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBp
bml0V2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0Rm9y
bURlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGU6OnNldENsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGlu
Z01lc3NhZ2U6OlBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hh
bm5lbDo6c2VuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENSZXNvbHZlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Nv
Y2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZlclRjcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVVkcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6
OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZUNsaWVudFRjcFNvY2tldCk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZU5ld0Nvbm5lY3Rpb25Tb2Nr
ZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVBc3lu
Y1Jlc29sdmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkRlc3RydWN0
aW9uUHJvdGVjdG9yOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0
YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJp
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVy
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRG
aWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFw
ZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6UGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdGV4dEF1dG9TaXpp
bmdBZGp1c3RtZW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luUHJpbnRp
bmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxi
YWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om1hcmtB
bGxMYXllcnNWb2xhdGlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUF1
dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpsaWJX
ZWJSVENOZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6
OlNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKToKKwog
MjAxOS0wOC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBiYWQgUkVMRUFTRV9MT0dfRVJST1IgdW5kZXIgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zp
c2lvbmFsUGFnZVByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNGM1MWU5NjVmNjgyNmJl
YzNlZTkyZTc1Mjk1ODdlMWIxYjJkMDQzYS4uODJiNjAzMWIxYjliNDY5YmFhOTBiNGFkYTg4YzEz
NzA0YzU0MjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0w
OC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZd
IEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9T
dG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5h
Z2VyOjpTdG9yYWdlU3luY01hbmFnZXIpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgorICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6
U3RvcmFnZVRyYWNrZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcC5jcHA6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjplbnN1cmVTZXNzaW9uKToKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2NmL0NoYW5nZUxvZwppbmRleCBjNjNlZmFiYTVkODg2ODNiZWZiZjE2OTU4ZmYxZmUwMDA0
ZWE5YzZiLi41ZGVkMjM2NmIzYWVlMTFjODMzYTg2NzlhYjhmNTgxOGJhYWE3ZjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTEzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZy
b250ZW5kU2V0dGluZ3MpOgorCiAyMDE5LTA4LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNDg0NTQpOiBX
SzEgaW5zcGVjdG9yIGZyb250ZW5kIGNsaWVudCBkb2Vzbid0IHF1ZXVlIG1lc3NhZ2VzIHRvIHRo
ZSBmcm9udGVuZCBiZWZvcmUgaXQncyBsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpp
bmRleCA4NWJmZTdmZTdhYTRjM2Y3ZmNiYjJkNzI4ZGI1ZGVhN2FkYWJhOGZmLi4yMjNjOWYwNmRj
MzBlZGUxMDIxNTE4NDkzNGViZGYxMjU5YWIzNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAg
ICAgICAoLVtXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5
ZXJzOnN0aWNreUNvbnRhaW5lck1hcDpdKToKKwogMjAxOS0wNy0yOSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJdIGRpZEZp
bmlzaENvbnRlbnRDaGFuZ2VPYnNlcnZpbmcgc2hvdWxkIGluY2x1ZGUgdGhlIHR5cGUgb2YgY29u
dGVudCBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjg1NTM1NjYyODgx
ZTcxMjc4NzY5ZTQxNmI0OWU5ODFmYTk1N2YyYi4uNGZlOTcxYzllZDQxYmJiNjA3N2M1ZmM4NmU5
ZTc1OGY1NWQzNjk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGlu
aXRdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoLVtX
ZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpdKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAg
KFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhblJl
cGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuQW5kRGF0YVJlcGx5KToKKyAgICAgICAgKFdLUENJ
bnN0YW50aWF0ZVBsdWdpblJlcGx5KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZCk6
CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgorICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAg
KC1bV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdpbl0pOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW06CisgICAgICAgIChXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaDoKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3
IHNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6cmVwZWF0OnRpbWVyRnVuYzpdKToKKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlm
eU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoYWRkUmVkaXJl
Y3RVUkwpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFU
b0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0YWNoU2NyaXB0RGVidWdnZXJdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaDoKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06CisgICAgICAgIChX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgaW5pdFdpdGhS
YW5nZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHRdKToKKyAgICAgICAgKC1bV2ViVmlldyBfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKCtb
V2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6
YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgrW1dl
YlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlz
dDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRp
Y2F0b3I6d2l0aExpZmV0aW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06
CisgICAgICAgIChXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hT
Y2hlZHVsZXIpOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisKIDIwMTktMDgt
MTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGhyZWFk
aW5nIGFzc2VydGlvbnMgdG8gUmVmQ291bnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGY1MWUwNDQyZTU2YmY3MjNhMDFiMzBkZTg4ZmJjODE1ODMxODQ0MDkuLjJlYmE2MTM5MDA3
ZTIxMzYyMWVhMTAyNDIzNWYzYTIzMDcxZTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToK
KyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6bG9hZCk6CisgICAgICAgICog
UGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OnduZFByb2MpOgorICAgICAgICAqIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNo
cm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5Mb2NhbEZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxp
Z2h0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZy5jcHA6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQ
cm9wZXJ0eUJhZyk6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAgICAgICAoV2Vi
SGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwOgorICAgICAgICAo
V0tRQ0E6OkNBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dCk6Cisg
ICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYk5vdGlmaWNh
dGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKToKKyAgICAgICAgKiBXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViVmll
dzo6cmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlwZSk6CisgICAgICAgIChXZWJWaWV3OjplbnRl
clZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJWaWV3OjphZGRV
c2VyU2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRv
R3JvdXApOgorICAgICAgICAoV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyk6CisK
IDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBJREItc3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCAzZjBmYjJlMWNlZWFlZjA2
NTljMzRjODI3MWJlZWMxMDgyMzc1NmVkLi4wZDU1ZmU3ZTFiYjY1MWU5ODEwY2M4YjIzOTgxODdm
NjdlOTk3ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTMgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcC5oOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcElubGluZXMuaDoKKwogMjAxOS0wNy0yNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBBZGQgSXNv
SGVhcCB0ZXN0IHRvIGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0aW5n
IHRvbyBsYXJnZSBWQQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaAppbmRleCAwN2Q3MDliYTEyYzgyYzg1NDgyZDczYzcyMzc3ZjUxOWU3ZmMyYTVjLi5kMGU2
MjUyODJhODRmNGYzNWVlZGVkMTk1ZWRiOGRjODk3YjFhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3Qg
SlNDYWxsYmFja09iamVjdERhdGEgewogICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFtX3ByaXZhdGVQcm9wZXJ0aWVzKQotICAgICAg
ICAgICAgbV9wcml2YXRlUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNQcml2YXRlUHJv
cGVydHlNYXA+KCk7CisgICAgICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1
ZTxKU1ByaXZhdGVQcm9wZXJ0eU1hcD4oKTsKICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcy0+
c2V0UHJpdmF0ZVByb3BlcnR5KHZtLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAppbmRleCBhZTNhNmZlM2FjZjljNmE4MDM5NGUxZDczNGZhMzE3ZDkw
OGZhZTJjLi45Y2EzYjRiZjQwODUwNzUwYjhiYzQxOTQ5Zjc1MDQyYjM1NzIzMWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaApAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmFzQ2FsbGJhY2tPYmplY3QoRW5jbwogdGVtcGxhdGUg
PGNsYXNzIFBhcmVudD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xh
c3MsIHZvaWQqIGRhdGEpCiAgICAgOiBQYXJlbnQoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQotICAg
ICwgbV9jYWxsYmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0
RGF0YT4oZGF0YSwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtlVW5p
cXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0NsYXNzKSkKIHsKIH0KIApAQCAtNjcs
NyArNjcsNyBAQCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChWTSYgdm0sIEpT
Q2xhc3NSZWYganNDbGFzcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBQYXJlbnQodm0s
IHN0cnVjdHVyZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8
SlNDYWxsYmFja09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFj
a09iamVjdERhdGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4obnVsbHB0ciwganND
bGFzcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
bGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCmlu
ZGV4IGYxYzlkNTcwMmE4YWE2OTA0NGRmYjI5NWI0NzFmY2ZjYmM4OTBiNmIuLjdlZWMyYTkwYTQ0
Zjg2MGJhYTIyNzZiOTZkNDVmMmJkNjg2MTcwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NsYXNzUmVmLmNwcApAQCAtNTksMjEgKzU5LDIxIEBAIE9wYXF1ZUpTQ2xhc3M6Ok9wYXF1
ZUpTQ2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpTQ2xh
c3MqCiAgICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGlj
VmFsdWUqIHN0YXRpY1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGljVmFsdWVzKSB7Ci0gICAgICAg
IG1fc3RhdGljVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFs
dWVzVGFibGU+KCk7CisgICAgICAgIG1fc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVK
U0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNWYWx1ZS0+
bmFtZSkgewogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgo
c3RhdGljVmFsdWUtPm5hbWUpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZU5hbWUuaXNOdWxsKCkp
Ci0gICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0
eSwgc3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFs
dWVOYW1lKSk7CisgICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUu
aW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9w
ZXJ0eSwgc3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywg
dmFsdWVOYW1lKSk7CiAgICAgICAgICAgICArK3N0YXRpY1ZhbHVlOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9uID0gZGVm
aW5pdGlvbi0+c3RhdGljRnVuY3Rpb25zKSB7Ci0gICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0g
c3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7Cisg
ICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGlj
RnVuY3Rpb25zVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNGdW5jdGlvbi0+bmFtZSkg
ewogICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3Rh
dGljRnVuY3Rpb24tPm5hbWUpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUu
aW1wbCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0
aW9uLT5jYWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKKyAgICAg
ICAgICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIG1h
a2VVbmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0
aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOwogICAgICAgICAgICAgKytzdGF0aWNG
dW5jdGlvbjsKICAgICAgICAgfQogICAgIH0KQEAgLTEyOCwyMSArMTI4LDIxIEBAIE9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6Vk0mLCBPcGFx
dWVKU0NsYXNzKiBqc0NsCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xh
c3MtPm1fc3RhdGljVmFsdWVzKSB7Ci0gICAgICAgIHN0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBzdGF0aWNW
YWx1ZXMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKICAg
ICAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlND
bGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3Rh
dGljVmFsdWVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFTU0VS
VCghaXQtPmtleS0+aXNBdG9tKCkpOwogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IGl0
LT5rZXktPmlzb2xhdGVkQ29weSgpOwotICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFs
dWVOYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFs
dWUtPmdldFByb3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJp
YnV0ZXMsIHZhbHVlTmFtZSkpOworICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVO
YW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFBy
b3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZh
bHVlTmFtZSkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGlj
RnVuY3Rpb25zKSB7Ci0gICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAgICAgICBzdGF0aWNGdW5j
dGlvbnMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsK
ICAgICAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgIGZvciAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpz
Q2xhc3MtPm1fc3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAg
ICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwotICAgICAgICAgICAgc3RhdGlj
RnVuY3Rpb25zLT5hZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIHN0ZDo6bWFrZV91bmlxdWU8
U3RhdGljRnVuY3Rpb25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVl
LT5hdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChpdC0+a2V5
LT5pc29sYXRlZENvcHkoKSwgbWFrZVVuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihpdC0+dmFs
dWUtPmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQog
ICAgIH0KIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIE9w
YXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9wYXF1ZUpTQ2xhc3NEYXRhKCkuYWRkKHRoaXMsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICBjb250
ZXh0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPihleGVj
LT52bSgpLCB0aGlzKTsKKyAgICAgICAgY29udGV4dERhdGEgPSBtYWtlVW5pcXVlPE9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CiAgICAgcmV0dXJuICpjb250ZXh0
RGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFy
a2luZ0NvbnN0cmFpbnRQcml2YXRlLmNwcAppbmRleCBkOWVlNjc0MDM0OWNmZWZkZmJjYzBkMzEw
OTRmMWY0ZGU1YTUyYzFlLi5iYTRhNWExNjY5N2FmNWY4YTk3MjJlNTc0NjllMzk0ZDk3OTA0MmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFp
bnRQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0Nv
bnN0cmFpbnRQcml2YXRlLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEpTQ29udGV4dEdyb3Vw
QWRkTWFya2luZ0NvbnN0cmFpbnQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTTWFya2luZ0Nv
bnN0cgogICAgIC8vIGVsc2UgZ2V0cyBtYXJrZWQuCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkg
dm9sYXRpbGl0eSA9IENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmc7CiAgICAg
Ci0gICAgYXV0byBjb25zdHJhaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29u
c3RyYWludD4oCisgICAgYXV0byBjb25zdHJhaW50ID0gbWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5n
Q29uc3RyYWludD4oCiAgICAgICAgIHRvQ1N0cmluZygiQW1jIiwgY29uc3RyYWludEluZGV4LCAi
KCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2spKSwg
IikiKSwKICAgICAgICAgdG9DU3RyaW5nKCJBUEkgTWFya2luZyBDb25zdHJhaW50ICMiLCBjb25z
dHJhaW50SW5kZXgsICIgKCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJh
aW50Q2FsbGJhY2spKSwgIiwgIiwgUmF3UG9pbnRlcih1c2VyRGF0YSksICIpIiksCiAgICAgICAg
IFtjb25zdHJhaW50Q2FsbGJhY2ssIHVzZXJEYXRhXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV3JhcHBlck1hcC5tbQppbmRleCBkNDY5Yjc1YTMxZjBlZmNhOWQwN2FiYjAzYjBiZTY2MTYx
YjM5NTY3Li40YjU5OTA3M2ZlNzZiNDg2NDQzNjk5YWJkY2IzNGM0MTY0YmMyZTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpAQCAtNjA2LDcgKzYwNiw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4
dFJlZiljb250ZXh0CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0
UGVyc29uYWxpdHk7CiAgICAgbV9jYWNoZWRPYmpDV3JhcHBlcnMgPSBbW05TTWFwVGFibGUgYWxs
b2NdIGluaXRXaXRoS2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlv
bnMgY2FwYWNpdHk6MF07CiAKLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+
Pih0b0pTKGNvbnRleHQpLT52bSgpKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBtYWtlVW5p
cXVlPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+
Pih0b0pTKGNvbnRleHQpLT52bSgpKTsKIAogICAgIEFTU0VSVCghdG9KU0dsb2JhbE9iamVjdChj
b250ZXh0KS0+d3JhcHBlck1hcCgpKTsKICAgICB0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5z
ZXRXcmFwcGVyTWFwKHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2Jq
Q0NhbGxiYWNrRnVuY3Rpb24ubW0KaW5kZXggZWU5MzI4MjFlZjc0YmQ2ODkxYWU4ZjI5ZmFkN2Ji
YTVhZmVhMGNiYy4uNzNjYjQyNzA0MzgxODMxZTgxOWQ5ZDk0M2ViOWU1NDQwMzA5NmY4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1t
CkBAIC0xOTUsMTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBl
RG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
QXJndW1lbnREb3VibGU8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNr
QXJndW1lbnREb3VibGU8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUJvb2woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tB
cmd1bWVudEJvb2xlYW4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRCb29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lk
KCkKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0
eXBlSWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tB
cmd1bWVudElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50
SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3Qg
Y2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkKQEAgLTIyOCwxOSArMjI4LDE5IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmIChjbHMgPT0gW0pT
VmFsdWUgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudEpTVmFsdWU+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxs
YmFja0FyZ3VtZW50SlNWYWx1ZT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNTdHJpbmcgY2xh
c3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVu
dE5TU3RyaW5nPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1
bWVudE5TU3RyaW5nPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU051bWJlciBjbGFzc10pCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1i
ZXI+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNO
dW1iZXI+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGF0ZSBjbGFzc10pCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKICAg
ICAgICAgaWYgKGNscyA9PSBbTlNBcnJheSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0FycmF5PigpOwogICAgICAgICBpZiAo
Y2xzID09IFtOU0RpY3Rpb25hcnkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CiAKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMp
OwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCbG9jayhjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopCkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
U3RyaW5nUmFuZ2UgY29weShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAq
aW52b2NhdGlvbiA9IHZhbHVlVG9UeXBlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRp
b24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVu
dFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIH07CkBAIC0zMzUsNDUgKzMzNSw0NSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5
cGVEb3VibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJh
Y2tSZXN1bHROdW1lcmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFj
a1Jlc3VsdE51bWVyaWM8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUJvb2woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tS
ZXN1bHRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3Vs
dEJvb2xlYW4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lk
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJl
c3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBz
dGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlU3RydWN0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25z
dCBjaGFyKiBlbmQpCiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5KGJlZ2luLCBlbmQp
OwogICAgICAgICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdHlwZVRvVmFsdWVJbnZv
Y2F0aW9uRm9yKGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9OwpAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRp
YyBKU09iamVjdFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24oSlNDb250ZXh0
ICpjb250ZXh0LCBOU0ludm9jCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFtjb250
ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAgIGF1dG8gaW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5
cGUsIGluc3RhbmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsK
KyAgICBhdXRvIGltcGwgPSBtYWtlVW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBs
PihpbnZvY2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gaW1wbC0+bmFtZSgpOwog
ICAgIHJldHVybiB0b1JlZihKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbmFtZSwgV1RGTW92ZShpbXBsKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGUwMWU5
NzBjN2Y1ODAzNjU2MThlZjFkYWI4NTU0NGQ3MDRmOWI0N2EuLjc4ZDc2NTVmZjgwNzc2MGQ0NjA4
YTYxN2U1N2M5MGYxNTQyNzk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ29udGV4dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBqc2NDb250
ZXh0U2V0VmlydHVhbE1hY2hpbmUoSlNDQ29udGV4dCogY29udGV4dCwgR1JlZlB0cjxKU0NWaXJ0
dWFsTQogICAgICAgICAgICAgcHJpdi0+anNDb250ZXh0ID0gSlNSZXRhaW5QdHI8SlNHbG9iYWxD
b250ZXh0UmVmPihBZG9wdCwgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqc2NWaXJ0dWFs
TWFjaGluZUdldENvbnRleHRHcm91cChwcml2LT52bS5nZXQoKSksIG51bGxwdHIpKTsKICAgICAg
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KU0dsb2JhbE9iamVjdChwcml2LT5qc0NvbnRleHQu
Z2V0KCkpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+d3JhcHBlck1hcCgpKQotICAgICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRXcmFwcGVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpX
cmFwcGVyTWFwPihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+c2V0V3JhcHBlck1hcChtYWtlVW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anND
b250ZXh0LmdldCgpKSk7CiAgICAgICAgIGpzY1ZpcnR1YWxNYWNoaW5lQWRkQ29udGV4dChwcml2
LT52bS5nZXQoKSwgY29udGV4dCk7CiAgICAgfSBlbHNlIGlmIChwcml2LT52bSkgewogICAgICAg
ICBBU1NFUlQocHJpdi0+anNDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcAppbmRleCAxMWJiN2MwYjg3MzdkYjY3ZGQxN2RjZDI0
ZjcwMjk0MzQ0NjlhODAzLi5mNTIzZWE0MTk5ZjhhYmQ3MzJmNzdiNjI4MTQxMjAxMzRiYjhiZWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1h
cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogV3JhcHBlck1hcDo6V3Jh
cHBlck1hcChKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0KQotICAgIDogbV9jYWNoZWRKU1dy
YXBwZXJzKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNP
YmplY3Q+Pih0b0pTKGpzQ29udGV4dCktPnZtKCkpKQorICAgIDogbV9jYWNoZWRKU1dyYXBwZXJz
KG1ha2VVbmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pT
KGpzQ29udGV4dCktPnZtKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Qcm9iZVN0YWNrLmNwcAppbmRleCBhNzVmNThkYzE0NmIzYjY0OTVjZWIxNjdhZGY0
ZGFiZmYwNmIwYzg5Li5kYTQ3NzA1MWYzNDVlMDcxNjhmYzdkMDZlMGM3ZjUyNjMxMTg2ZTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKQEAg
LTEzNCw3ICsxMzQsNyBAQCBQYWdlKiBTdGFjazo6ZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNz
KQogICAgIGlmIChMSUtFTFkoaXQgIT0gbV9wYWdlcy5lbmQoKSkpCiAgICAgICAgIG1fbGFzdEFj
Y2Vzc2VkUGFnZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+
KGJhc2VBZGRyZXNzKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2VzLmFkZChiYXNlQWRk
cmVzcywgV1RGTW92ZShwYWdlKSk7CiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcAppbmRleCAyYzljM2IwZGU4OWViM2UzODNmNGNiZGNmMjEyZDI2OGMx
YzE5ZGJhLi43ZjY4NTg2YzFjMDI4OWMwYTMyNTIyZmRlOWUwNjdkZjFmNDFlMjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTI0MSw3ICsxMjQxLDcg
QEAgY2xhc3MgTG93ZXJUb0FpciB7CiAgICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9IFBy
aW50ZXI6Om1ha2VQcmludFJlY29yZExpc3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0byBw
cmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRT
cGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsK
KyAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lh
bCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50
TGlzdCkpKTsKICAgICAgICAgSW5zdCBpbnN0KEFpcjo6UGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVj
aWFsKHByaW50U3BlY2lhbCkpOwogICAgICAgICBQcmludGVyOjphcHBlbmRBaXJBcmdzKGluc3Qs
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBhcHBlbmQo
V1RGTW92ZShpbnN0KSk7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsK
ICAgICB7CiAgICAgICAgIGlmICghZmllbGQpIHsKICAgICAgICAgICAgIGZpZWxkID0gc3RhdGlj
X2Nhc3Q8VCo+KAotICAgICAgICAgICAgICAgIG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91
bmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpKTsKKyAgICAg
ICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZp
ZWxkOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4
IGZmY2IyZDRlMjcxNDQyOTcwZTU0NjQzNjY3MGY3ZjI5ZGViMWFiMWMuLjJlY2NkYWMwNDllNjhk
MTEzZTIzZjk3ZjI0MzUzYTVkNGFhYTNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIFByb2NlZHVyZTo6UHJvY2VkdXJlKCkKICAgICA6IG1fY2ZnKG5ldyBDRkcoKnRoaXMp
KQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKLSAgICAsIG1fYnlwcm9kdWN0cyhz
dGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUJ5cHJvZHVjdHM+KCkpCisgICAgLCBtX2J5cHJvZHVjdHMo
bWFrZVVuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQogICAgICwgbV9jb2RlKG5ldyBBaXI6OkNv
ZGUoKnRoaXMpKQogewogICAgIG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobV9udW1FbnRyeXBv
aW50cyk7CkBAIC0zMTEsMjggKzMxMSwyOCBAQCB2b2lkIFByb2NlZHVyZTo6ZGVsZXRlT3JwaGFu
cygpCiBEb21pbmF0b3JzJiBQcm9jZWR1cmU6OmRvbWluYXRvcnMoKQogewogICAgIGlmICghbV9k
b21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWlu
YXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9kb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxEb21pbmF0
b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2RvbWluYXRvcnM7CiB9CiAKIE5hdHVyYWxMb29w
cyYgUHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMoKQogewogICAgIGlmICghbV9uYXR1cmFsTG9vcHMp
Ci0gICAgICAgIG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxOYXR1cmFsTG9vcHM+
KCp0aGlzKTsKKyAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPE5hdHVyYWxMb29w
cz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJkc0NG
RyYgUHJvY2VkdXJlOjpiYWNrd2FyZHNDRkcoKQogewogICAgIGlmICghbV9iYWNrd2FyZHNDRkcp
Ci0gICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+
KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0NG
Rz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKIEJhY2t3YXJkc0Rv
bWluYXRvcnMmIFByb2NlZHVyZTo6YmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFt
X2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2Jh
Y2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlz
KTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMzU4LDcgKzM1
OCw3IEBAIHZvaWQqIFByb2NlZHVyZTo6YWRkRGF0YVNlY3Rpb24oc2l6ZV90IHNpemUpCiB7CiAg
ICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhU2VjdGlv
bj4oc2l6ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9
IG1ha2VVbmlxdWU8RGF0YVNlY3Rpb24+KHNpemUpOwogICAgIHZvaWQqIHJlc3VsdCA9IGRhdGFT
ZWN0aW9uLT5kYXRhKCk7CiAgICAgbV9ieXByb2R1Y3RzLT5hZGQoV1RGTW92ZShkYXRhU2VjdGlv
bikpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmNwcAppbmRleCAzM2Y4YWJmZWZiYzFmOGY5MTY1NDVhM2JkY2ExOTZiMGNjNjZjMzk4Li5k
NWQ2OWMzMGE1OTkxNzVmMjgxNDgzNjI4NjM2ZmNiNzcwNjgwMTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBDQ2FsbFNwZWNp
YWwqIENvZGU6OmNDYWxsU3BlY2lhbCgpCiB7CiAgICAgaWYgKCFtX2NDYWxsU3BlY2lhbCkgewog
ICAgICAgICBtX2NDYWxsU3BlY2lhbCA9IHN0YXRpY19jYXN0PENDYWxsU3BlY2lhbCo+KAotICAg
ICAgICAgICAgYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwor
ICAgICAgICAgICAgYWRkU3BlY2lhbChtYWtlVW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwogICAg
IH0KIAogICAgIHJldHVybiBtX2NDYWxsU3BlY2lhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKaW5kZXggZjM2YjliMmZlNjY4MTYwYjg4OTliMGM1MGIz
MTk3ZDc1ODgyNGY4MC4uOTVjYWEwMDRkOGViMzkyMzMwZTFjY2JiNjM5YTVjZWU3OWNiYzc5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKQEAgLTEw
MCw3ICsxMDAsNyBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAg
ICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgY29kZS5tX2dlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlQW5kQWxs
b2NhdGVSZWdpc3RlcnM+KGNvZGUpOworICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0
ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4oY29k
ZSk7CiAgICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzLT5wcmVwYXJl
Rm9yR2VuZXJhdGlvbigpOwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL3Rlc3RhaXIuY3BwCmluZGV4IGVmMTU0NGMwN2JiMzJhOTAzN2YyY2I3MWUxNWU3NGE5
YmU2MWJmOTQuLjNkY2EyOTY3ODhiMDAxMDY4ZTAxZjQyM2UxMTZjN2MyYTRlN2RhNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBjb21waWxlKEIzOjpQcm9jZWR1cmUmIHBy
b2MpCiAgICAgZ2VuZXJhdGUocHJvYy5jb2RlKCksIGppdCk7CiAgICAgTGlua0J1ZmZlciBsaW5r
QnVmZmVyKGppdCwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCMzo6
Q29tcGlsYXRpb24+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAg
ICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRl
c3RhaXIgY29tcGlsYXRpb24iKSwgcHJvYy5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIH0KIApAQCAt
MTg1NSw3ICsxODU1LDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNhY2hlZFRlbXBSZWdpc3RlcnMo
KQogICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCBBcmc6OmJpZ0ltbShiaXR3aXNlX2Nh
c3Q8aW50cHRyX3Q+KCZ0aGluZ3MpKSwgYmFzZSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogcGF0
Y2hQb2ludDFSb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBh
dGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBh
dGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3Bl
Y2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4o
KSk7CiAKICAgICAvLyBJbiBQYXRjaHBvaW50LCBMb2FkIHRoaW5nc1swXSAtPiB0bXAuIFRoaXMg
d2lsbCBtYXRlcmlhbGl6ZSB0aGUgYWRkcmVzcyBpbiB4MTcgKGRhdGFNZW1vcnlSZWdpc3Rlciku
CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDEgPSBwYXRjaFBvaW50MVJvb3Qt
PmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdp
bigpKTsKQEAgLTE5MzAsNyArMTkzMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkKCkK
ICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGlu
UmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVj
aWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVj
aWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUu
YWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBC
Mzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5NjIsNyArMTk2Miw3IEBA
IHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkMigpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBC
Mzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6
Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3Bl
Y2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6
UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNS
b290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpP
cmlnaW4oKSk7CkBAIC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5l
ZDMoKQogICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJv
Yy5waW5SZWdpc3RlcihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2lu
dFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2lu
dFNwZWNpYWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0g
Y29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAog
ICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBv
aW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5oCmluZGV4IDE1NWNhNGFiNDcwYjAxNDQyYWQ5NTQzYThhZTFmYzFmYzU5ZjdlM2Eu
LjFjN2FkMGY5NGUwNmI4YzMxYmZlN2NjOTRkMDU1MmM0Nzc5NjA3ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmgKQEAgLTE4OSw3ICsxODksNyBAQCBleHRlcm4gTG9jayBjcmFzaExvY2s7
CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjb21waWxlUHJvYyhQcm9jZWR1
cmUmIHByb2NlZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwgPSBPcHRpb25zOjpkZWZhdWx0QjNPcHRM
ZXZlbCgpKQogewogICAgIHByb2NlZHVyZS5zZXRPcHRMZXZlbChvcHRMZXZlbCk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1
cmUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGMx
MDg1OWFjZWQzZGI3OGI2NjQ5NzZhMDhiOGU1YjQ4ZDY1MmIyZjMuLjc3ZmI2NWRhMGI3YTA2Yzdk
NjU4YmFiZGI0ZTUxMDhhNzkxN2VlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAg
c3RhdGUuc2V0U3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKHNwaWxsU3RhdGUpOwogCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghYWNjZXNzLmNhbGxMaW5rSW5mbygpKTsKLSAgICAgICAg
ICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtJbmZv
PigpOworICAgICAgICAgICAgYWNjZXNzLm1fY2FsbExpbmtJbmZvID0gbWFrZVVuaXF1ZTxDYWxs
TGlua0luZm8+KCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZW5lcmF0ZWQgYSBw
b2x5bW9ycGhpYyBjYWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0byB0aGUgZ2V0dGVyCiAgICAg
ICAgICAgICAvLyBzdHViLCB3aGljaCB0aGVuIGp1bXBlZCBiYWNrIHRvIHRoZSBtYWluIGNvZGUs
IHRoZW4gd2UnZCBoYXZlIGEgcmVhY2hhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAppbmRleCAy
YmQ5ZmU2NTE5OWQwN2YxNzNlMzgzMGRjNzRlNDY3ZWI5ZDU0MWZjLi45MjU3ZmMyMjY2NTI5Zjg2
MTM3ZDVkYWQ4YzkyNDk3MTgzOTA0NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVi
bGljIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjpTbG93UAogICAgIHZvaWQgQWNjZXNzQ2FzZVNu
aXBwZXRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBm
cm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5
cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgdG8gPSBqaXQubGFiZWwoKTsgXAotICAgICAgICBtX2dl
bmVyYXRvcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0
aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRU
eXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBc
CisgICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQobWFrZVVuaXF1ZTxTbG93UGF0aENhbGxHZW5l
cmF0b3JXaXRoQXJndW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUs
IFJlc3VsdFR5cGUsIF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBh
cmdzKSk7IFwKICAgICB9IFwKIAogU05JUFBFVF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RFRklORV9D
QUxMX09QRVJBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDMzYmIwYzA2NjM1MzgxZTg5OGY2NWE4NzRm
MWYzNmE4Yzk0ODIzYWYuLjEwYzY1YmI5ZGQ3MDlhOWFmN2FiYTZjZWI4YTliNzM1OTc3MTY0MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwCkBAIC02NSwxNSArNjUsMTUgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgog
ICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2lj
QmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKIAotICAgIGF1
dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKLSAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2Nr
KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVj
b2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7CisgICAgYXV0byBmaXJzdEJsb2NrID0gbWFrZVVu
aXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7
CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKICAgICBh
cHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJy
ZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0Qmxv
Y2spKTsKIAotICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CisgICAgYXV0byBleGl0ID0gbWFr
ZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2Nr
KTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIApAQCAtODQs
NyArODQsNyBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgICAgIGJvb2wgY3JlYXRlZEJs
b2NrID0gZmFsc2U7CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEganVt
cCB0YXJnZXQsIHRoZW4gaXQncyB0aGUgbGVhZGVyIG9mIGl0cyBvd24gYmFzaWMgYmxvY2suCiAg
ICAgICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9m
ZnNldCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKLSAgICAgICAgICAgIGF1dG8gbmV3
QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24p
OworICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPihpbnN0cnVjdGlvbik7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7
CiAgICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAg
ICBjcmVhdGVkQmxvY2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBkOGRhYzE1ODVmYWIyYjk5OGMxZTVkODg3NTJiYTEy
ZGY2ZGFkYmRlLi4zOTNmMTgyNGU0MWE0YmViNTE0YzYyYTY5NmYzM2E4MzcyNDk1Y2RkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAt
MjY1LDcgKzI2NSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogCiB2
b2lkIENhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVm
ZmxlRGF0YSYgc2h1ZmZsZURhdGEpCiB7Ci0gICAgbV9mcmFtZVNodWZmbGVEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJh
bWVTaHVmZmxlRGF0YSA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVE
YXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGVmMWNhYmZhNzE4YjA4MGQ3ZjNlODYzN2Y5Zjk0
ZjYwNTg2ZWU0ZTguLjM5YTIzYjRjN2Y0N2Q4ZmNlNWUzMGVlY2E1NTBlNzdkYWQzMTU4NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMzM3
LDcgKzEzMzcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygp
CiBDb2RlQmxvY2s6OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNsb3coY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikKIHsKICAgICBBU1NFUlQoIW1faml0RGF0YSk7Ci0gICAgbV9q
aXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKSVREYXRhPigpOworICAgIG1faml0RGF0YSA9IG1h
a2VVbmlxdWU8SklURGF0YT4oKTsKICAgICByZXR1cm4gKm1faml0RGF0YTsKIH0KIApAQCAtMTU1
MCw3ICsxNTUwLDcgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudEZv
ckJ5dGVjb2RlT2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2sKIHZvaWQgQ29kZUJsb2NrOjpz
ZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGVuc3VyZUpJVERh
dGEobG9ja2VyKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKKyAgICBlbnN1cmVKSVREYXRh
KGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zm
c2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRD
YWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4g
cmVnaXN0ZXJBdE9mZnNldExpc3QpCkBAIC0xNzkwLDcgKzE3OTAsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3coY29u
c3QgT3BDYXRjaAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kp
CiAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aSkpOwogCi0gICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgYXV0byBwcm9maWxl
cyA9IG1ha2VVbmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRz
LnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmlsZXMtPm1f
c2l6ZTsgKytpKQogICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5k
ID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IDg3MDY4YmE2NWRkODVjMjNmYmU0YTQ5MGU5NzRhNzI4MWYy
NTYwNGMuLjMxNDM4ZTBhYzUwNjliMjc0OTY5ODg4NmFiMTEyMDA3NmJjYjczYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTk0Myw3ICs5NDMsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNyZWF0ZVJhcmVE
YXRhSWZOZWNlc3NhcnkoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7Ci0gICAg
ICAgICAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAg
ICAgICAgICAgIGF1dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRjaFByb2ZpbGVzIGNhbiBiZSB0
b3VjaGVkIGZyb20gY29tcGlsZXIgdGhyZWFkcy4KICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBX
VEZNb3ZlKHJhcmVEYXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKaW5kZXggMmQ5NDMxY2YwYjE0NGZhM2EyYzIy
MWE2NmU5NDA3MGM3NzUwZTBlMC4uYjFhMDFmZmE0ZDkzNDhmZWNiMjRjOTY4OGJjODAwNTJmOTM4
ODZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQ
cm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxv
Y2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgIC8vIElmIHdlJ3Zl
IG5ldmVyIHNlZW4gYW55IGZyZXF1ZW50IGV4aXRzIHRoZW4gY3JlYXRlIHRoZSBsaXN0IGFuZCBw
dXQgdGhpcyBzaXRlCiAgICAgLy8gaW50byBpdC4KICAgICBpZiAoIXByb2ZpbGUubV9mcmVxdWVu
dEV4aXRTaXRlcykgewotICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKKyAgICAgICAgcHJvZmls
ZS5tX2ZyZXF1ZW50RXhpdFNpdGVzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0
ZT4+KCk7CiAgICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcy0+YXBwZW5kKHNpdGUp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3Bw
CmluZGV4IDRmNDhhMWQ2Yzk4NzIyZTVhYzJlY2U4N2U1MDQwMjMyZjlhNWQ2YjEuLjRmYjExNTcz
MDAzYjUyZWZkOWE4NjZmYjNiZGY3NzUwOThjZWZhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
Ojpjb21waWxhdGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvZGVCbG9jayosCiBWZWN0b3I8
RGVmZXJyZWRTb3VyY2VEdW1wPiYgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjplbnN1cmVE
ZWZlcnJlZFNvdXJjZUR1bXAoKQogewogICAgIGlmICghbV9kZWZlcnJlZFNvdXJjZUR1bXApCi0g
ICAgICAgIG1fZGVmZXJyZWRTb3VyY2VEdW1wID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RGVm
ZXJyZWRTb3VyY2VEdW1wPj4oKTsKKyAgICAgICAgbV9kZWZlcnJlZFNvdXJjZUR1bXAgPSBtYWtl
VW5pcXVlPFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+PigpOwogICAgIHJldHVybiAqbV9kZWZl
cnJlZFNvdXJjZUR1bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcAppbmRleCBkYjlhZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJi
NjgzZGRlYWQ2Li5kZjRkNzdjZTNmNjNiNTIwMDc1NTQ0YzQxYTE2Y2IyMzFkN2RmYTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBA
IC0yNDMsNyArMjQzLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
U3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6
R2V0dGVyOiB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtT
dGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
KmNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBj
YWxsRXhpdFNpdGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuY3BwCmluZGV4IGZjMWY0NjBkZTk2NTQxZDhmYTA5OWNiYjQ1ZjIzMDlj
MmEzMzM4MGYuLmVkOGQ0OTNmN2VlNmYxZGEyYjkwOWFkNTdjNjI3NzE4MTNjMmQ2YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApA
QCAtNzIsNyArNzIsNyBAQCBHZXRCeUlkVmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9y
PShjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jdXN0b21BY2Nlc3NvckdldHRl
ciA9IG90aGVyLm1fY3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgbV9kb21BdHRyaWJ1dGUgPSBv
dGhlci5tX2RvbUF0dHJpYnV0ZTsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykKLSAg
ICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+
KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG1h
a2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAgICBl
bHNlCiAgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAqdGhp
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDA5MjlkNmZiNDEyNjc0ZWQ3ZjIwNDA0NWZiNDI1
ZWI3ZDM4ZDNjOTMuLjZlZWIxNDViMzM3OTY2MmFmMWMxNTAwMTkwNzY3MjdhMzllZTJiZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCiAgICAg
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVL
ZXkmIGtleSkKIHsKICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKKyAgICAgICAgbV9kYXRh
ID0gbWFrZVVuaXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKICAgICBlbHNl
IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGlmIChtX2RhdGEtPmF0KGkpLmtleSgpID09IGtleSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgK
aW5kZXggYjQ5ZTRlMjQyZTUyZjA4MTMxNWU0OGZiMWUxYmNjMjk3ZTUyOGFlMC4uYTFlY2I5NGRk
MGQxODY3MDg2MzUyZjUyYjViNThjMzE5M2VlY2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgY2xhc3MgUG9seVByb3RvQWNjZXNzQ2hhaW4gewogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjbG9uZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOwogICAgIH0KIAogICAg
IGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWlu
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcAppbmRleCAyMmY0NTU4MTRiODRhZjRmZTc0Y2FmMjM0MDFkMzBhZGFkYWU1YzZl
Li4zYjMwMjMzOWYwMzUwZGFjNDI4ZjNmMDRjYzczNTJhM2FlNTIxYjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAg
LTYxNiw3ICs2MTYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNz
OjpyZWdlbmVyYXRlKAogICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShj
b2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBjb2RlQmxvY2tUaGF0
T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcp
OwogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBp
ZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWFrUmVmZXJl
bmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RG
TW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOworICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0g
bWFrZVVuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndl
YWtSZWZlcmVuY2VzKSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCmluZGV4IGMyZDk1MzIwY2ViZDU2ZGJkYzkzZWViZDZjMzE0MGE3ZGY3Y2MyMDkuLmQ2NDJi
Y2NmZTc5NzY2YzUyNzliYmM4MTA4NzAxZWI3Zjg1ODI0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTIwMiw3ICsyMDIsNyBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJ
bmxpbmVhYmxlOiB7CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlu
a1N0YXR1cz4gY2FsbExpbmtTdGF0dXMgPQotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
a2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
PigpLmNhbGxMaW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtT
dGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0
ZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFy
aWFudC5jcHAKaW5kZXggNWQ2YjI5MDQ1Y2E2NzVjNTZmYTcxZDU0NzVhMTE1YjJkZjZmM2M1ZS4u
NzJjNmNhYzg0ZmIyN2JjZjVlNDE3YzQ5NmU2MzYyZjcyZTZjMGEyOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIFB1dEJ5SWRWYXJpYW50JiBQdXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IFB1
dEJ5SWRWYXJpYW50JiBvdGhlcikKICAgICBtX2NvbmRpdGlvblNldCA9IG90aGVyLm1fY29uZGl0
aW9uU2V0OwogICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CiAgICAgaWYgKG90aGVyLm1f
Y2FsbExpbmtTdGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1f
Y2FsbExpbmtTdGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxs
TGlua1N0YXR1cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0
cjsKICAgICByZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKaW5kZXggOTZkMjJlY2ZhMGE0Yzc1NmVkZmY2MWYw
MDEzZjcyNThlN2QzZmJkNS4uNTNmMjA4YmNhZGVkM2RlYTJkZWUxOGEwZTg5NjA1YzQ5MGExOTVi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmNwcApAQCAtNDUsNyArNDUsNyBAQCBSZWNvcmRlZFN0YXR1c2VzOjpSZWNvcmRlZFN0
YXR1c2VzKFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKIAogQ2FsbExpbmtTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3Rh
dHVzUHRyID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKICAgICBDYWxsTGlu
a1N0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGNhbGxzLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtNTMsNyArNTMsNyBAQCBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogCiBHZXRC
eUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVP
cmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBh
dXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsK
KyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsK
ICAgICBHZXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgZ2V0cy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYxLDcgKzYxLDcgQEAgR2V0QnlJZFN0YXR1cyogUmVjb3Jk
ZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LAogICAgIAogUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1
cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0
dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0
dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFB1dEJ5SWRTdGF0
dXM+KHN0YXR1cyk7CiAgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgp
OwogICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw3ICs2OSw3IEBAIFB1dEJ5SWRT
dGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdp
biYgY29kZU9yaWdpbiwKIAogSW5CeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRJbkJ5
SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgSW5CeUlkU3RhdHVz
JiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluQnlJ
ZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8SW5CeUlk
U3RhdHVzPihzdGF0dXMpOwogICAgIEluQnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdl
dCgpOwogICAgIGlucy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShz
dGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50LmNwcAppbmRleCAzMGExZjA1NTI1OWUzZGVkMWE3MTY4ZWUzNTI2ZjcyYzA4NGJlZTVh
Li5mY2MyOTExODAyNDRlMGIzMjI5ZTJmZDc2MzAwN2JlNzlhODc0MWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQqIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJl
UmVmZXJlbmNlCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiYga2V5KQogewogICAgIGlmICghaG9sZGVyUmVmKQotICAgICAgICBo
b2xkZXJSZWYgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5m
bz4oY29kZUJsb2NrLCBzdHViSW5mbyk7CisgICAgICAgIGhvbGRlclJlZiA9IG1ha2VVbmlxdWU8
V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAg
ICBlbHNlIHsKICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9jb2RlQmxvY2sgPT0gY29kZUJs
b2NrKTsKICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9zdHViSW5mbyA9PSBzdHViSW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCA3MjIyZDQ4MmFkMWU1ZTI4NmNlZjU5ZDRmZjFlMWY1ZWIwNzEwNzhkLi40
OTE5NWQxNTcyMWQyY2RhNGY3NDhhZThkYmUyYWYwMDlhMjhhN2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTE2
MCw3ICsxNjAsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjph
ZGRBY2Nlc3NDYXNlKAogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1v
cnBoaWNBY2Nlc3M+IGFjY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+
KCk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2Vz
cyA9IG1ha2VVbmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2Vz
OwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBlMDA2ZDE2YjliOGEwZmMzMGYwNDMzY2RlNjAy
ZWNjM2IxNjhkNDJlLi4yYzlhMGIzMDFlYjA5OGUxMTVlZjFlMzZiMTI3YmUyOWUzYWJkYTIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIFVu
bGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxvY2sqIGNvZAogICAg
ICAgICBpZiAoIW1fbGl2ZW5lc3MpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgY2hhbmNl
IHR3byBjb21waWxlciB0aHJlYWRzIHJhY2VkIHRvIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAg
ICAvLyBHcmFiYmluZyB0aGUgbG9jayBhYm92ZSBkZWZlbmRzIGFnYWluc3QgY29tcHV0aW5nIGxp
dmVuZXNzIHR3aWNlLgotICAgICAgICAgICAgbV9saXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOworICAgICAgICAgICAgbV9saXZl
bmVzcyA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOwog
ICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0MzcwOTUxOWViNjE2ZTI2NTEwNmVmMWQ1
NTI5NjE3ZDY0NWM5YmM5Li41MTI1MzZjMGQ0NDg1N2E0Y2E3NmU4MTNmZTE0ODAzYTk3M2ZmYTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaApAQCAtNDAyLDcgKzQwMiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKICAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcoKmhlYXAoKSwgY2VsbExvY2soKSk7
Ci0gICAgICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsK
KyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBmYmVjOWY3MmNhMmZk
MWExOGJhY2IwNzNlNjg3MjU0YjcwYjllYmUxLi40OWQ5ZDJmZDNlNmZlOWZiNGI1MjdmNjc3YWJk
NWJkNGE1MTIyNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI3NSw3ICsyNzUs
NyBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxv
Y2tzKFZNJiB2bSkKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJU
KCFtX3JhcmVEYXRhKTsKLSAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0
YT4oKTsKKyAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByZXR1
cm4gKm1fcmFyZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlOTc2ODZhYTNlZGNkZDhkM2Y5
YjU3YzRhNmQxMjNiYWM5Y2IzOTg3Li4xNzhhNjFkZjY5MTMzYWZkY2MxMjcyOGNiZmQ5NmViMzlm
NDJhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAg
ICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9k
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOwor
ICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVH
ZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2Rl
LCBlbnZpcm9ubWVudCk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJh
dG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVw
b3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmgKaW5kZXggYmNkNzJlYTA5ZjVmNzE3YTY1ZjY1ZDdkMmVmYzE3NWUwMjNl
Njk5MC4uZWJhYmI1OWQ0MzU5YTllMzY0ZjJjYTNhZjZhZmQwZWZkMDM5MGIzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xh
c3MgVk07CiB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CiAKIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIERlYnVnZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBEZWJ1Z2dlcihWTSYpOwogICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggZjIwYTM1N2VjYjczYWE3ZWZlNGNiMTA3ZDFjY2I3ZTlkYzkwMDMzOS4uMjc2
NTY5MjZhOGQyOWQyN2ViZWVhYTlmZmRjYTIwM2NjMjVmYTBmNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtNTgsNyArNTgsNyBAQCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6QWJzdHJhY3RJbnRlcnByZXRlcihHcmFwaCYgZ3JhcGgsIEFic3RyYQogICAgICwgbV9zdGF0
ZShzdGF0ZSkKIHsKICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQotICAgICAgICBtX3Bo
aUNoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxQaGlDaGlsZHJlbj4obV9ncmFwaCk7CisgICAg
ICAgIG1fcGhpQ2hpbGRyZW4gPSBtYWtlVW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDMyYTJjOTA0OWZlZDZmODJjNmFiYTQwNzY3NjZiZjQy
OWIxMzkzODMuLjA4NzRlYTcxY2JkZWI3YzYxZmU1YTA4ZTA1NTJiMGIzN2I0YjEzNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC03NCw3ICs3NCw3IEBAIEdyYXBo
OjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1f
Y29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2soKSkKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2Nv
ZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlxdWU8
U1NBQ0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhtYWtlVW5pcXVlPFNTQUNGRz4oKnRoaXMp
KQogICAgICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVm
b3JlRml4cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RT
dGFydGVkUmVnaXN0ZXJpbmcpCkBAIC04Niw4ICs4Niw4IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0s
IFBsYW4mIHBsYW4pCiAgICAgCiAgICAgbV9oYXNEZWJ1Z2dlckVuYWJsZWQgPSBtX3Byb2ZpbGVk
QmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSB8fCBPcHRpb25zOjpmb3Jj
ZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uKCk7CiAgICAgCi0gICAgbV9pbmRleGluZ0NhY2hl
ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlzKTsKLSAgICBtX2Fic3RyYWN0
VmFsdWVzQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0
aGlzKTsKKyAgICBtX2luZGV4aW5nQ2FjaGUgPSBtYWtlVW5pcXVlPEZsb3dJbmRleGluZz4oKnRo
aXMpOworICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd01hcDxBYnN0
cmFjdFZhbHVlPj4oKnRoaXMpOwogCiAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RydWN0dXJl
U3RydWN0dXJlLmdldCgpKTsKICAgICB0aGlzLT5zdHJpbmdTdHJ1Y3R1cmUgPSByZWdpc3RlclN0
cnVjdHVyZSh2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAg
RnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaykKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlTGl2ZW5lc3MuZW5kKCkpCiAgICAgICAg
IHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRl
Y29kZUxpdmVuZXNzPiBsaXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8RnVsbEJ5dGVjb2RlTGl2
ZW5lc3M+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPiBsaXZl
bmVzcyA9IG1ha2VVbmlxdWU8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+KCk7CiAgICAgY29kZUJsb2Nr
LT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0ZUZ1bGxMaXZlbmVzcyhjb2RlQmxvY2ssICpsaXZl
bmVzcyk7CiAgICAgRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCA9ICpsaXZlbmVzczsKICAg
ICBtX2J5dGVjb2RlTGl2ZW5lc3MuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShsaXZlbmVzcykpOwpA
QCAtMTA5OCw3ICsxMDk4LDcgQEAgQnl0ZWNvZGVLaWxscyYgR3JhcGg6OmtpbGxzRm9yKENvZGVC
bG9jayogY29kZUJsb2NrKQogICAgIGlmIChpdGVyICE9IG1fYnl0ZWNvZGVLaWxscy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuICppdGVyLT52YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVLaWxscz4ga2lsbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gbWFrZVVuaXF1ZTxC
eXRlY29kZUtpbGxzPigpOwogICAgIGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1
dGVLaWxscyhjb2RlQmxvY2ssICpraWxscyk7CiAgICAgQnl0ZWNvZGVLaWxscyYgcmVzdWx0ID0g
KmtpbGxzOwogICAgIG1fYnl0ZWNvZGVLaWxscy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGtpbGxz
KSk7CkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBDUFNDRkcmIEdyYXBoOjplbnN1cmVDUFNDRkcoKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNp
b24pOwogICAgIGlmICghbV9jcHNDRkcpCi0gICAgICAgIG1fY3BzQ0ZHID0gc3RkOjptYWtlX3Vu
aXF1ZTxDUFNDRkc+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNDRkcgPSBtYWtlVW5pcXVlPENQU0NG
Rz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNDRkc7CiB9CiAKQEAgLTE1NDQsNyArMTU0NCw3
IEBAIENQU0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKCkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAg
ICBpZiAoIW1fY3BzRG9taW5hdG9ycykKLSAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fY3BzRG9taW5hdG9y
cyA9IG1ha2VVbmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNE
b21pbmF0b3JzOwogfQogCkBAIC0xNTUyLDcgKzE1NTIsNyBAQCBTU0FEb21pbmF0b3JzJiBHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fc3NhRG9taW5hdG9ycykK
LSAgICAgICAgbV9zc2FEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FEb21pbmF0b3Jz
PigqdGhpcyk7CisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8U1NBRG9taW5h
dG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCkBAIC0xNTYx
LDcgKzE1NjEsNyBAQCBDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9v
cHMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZl
cnNpb24pOwogICAgIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fY3BzTmF0dXJh
bExvb3BzKQotICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BT
TmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbWFrZVVu
aXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExv
b3BzOwogfQogCkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjpl
bnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0Ep
OwogICAgIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fc3NhTmF0dXJhbExvb3Bz
KQotICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBTmF0dXJh
bExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxT
U0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwog
fQogCkBAIC0xNTc5LDcgKzE1NzksNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNr
d2FyZHNDRkcoKQogICAgIC8vIFdlIGNvdWxkIGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBmdXR1
cmUgdG8gd29yayBvdmVyIENQUywgYnV0IHRvZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EuCiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2FyZHND
RkcpCi0gICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHND
Rkc+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJk
c0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKQEAgLTE1ODcs
NyArMTU4Nyw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNE
b21pbmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBp
ZiAoIW1fYmFja3dhcmRzRG9taW5hdG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3Jz
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAg
IG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0xNTk1
LDcgKzE1OTUsNyBAQCBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0g
PT0gU1NBKTsKICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCi0gICAgICAg
IG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CisgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMgPSBtYWtlVW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDYzOTA0M2U5ZTI3
ZmJlMGUwYjkyYWI0NmE2NjliZTE0MTA1MDMzNzAuLmYyYjY2NDAyZTNhZDBlNzJkZmNlMDViNjVh
ZjNmYzkyNmQwMDlkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEpJVENvbXBpbGVyOjpKSVRDb21waWxlcihHcmFw
aCYgZGZnKQogICAgICwgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIoZGZnLm1fdm0pCiB7CiAg
ICAgaWYgKFVOTElLRUxZKHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IG1fZ3JhcGgubV92bS5t
X3BlckJ5dGVjb2RlUHJvZmlsZXIpKQotICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGlzYXNzZW1ibGVyPihkZmcpOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1h
a2VVbmlxdWU8RGlzYXNzZW1ibGVyPihkZmcpOwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIG1f
aml0Q29kZS0+dGllclVwSW5Mb29wSGllcmFyY2h5ID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi50
aWVyVXBJbkxvb3BIaWVyYXJjaHkoKSk7CiAgICAgZm9yICh1bnNpZ25lZCB0aWVyVXBCeXRlY29k
ZSA6IG1fZ3JhcGgubV9wbGFuLnRpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzKCkpCkBAIC0zNDMs
NyArMzQzLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KQogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1h
cHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6
bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1h
cEJ1aWxkZXIpLCBsaW5rQnVmZmVyKSk7CisgICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29k
ZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOwogfQogCiBzdGF0aWMgdm9pZCBlbWl0
U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvbXBpbGVyJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCYgc3RhY2tPdmVyZmxvdykKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIAogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7
Ci0gICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0
aGlzKTsKKyAgICBtX3NwZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRo
aXMpOwogCiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZh
aWxhYmxlIGluIHRoZSBKU1N0YWNrLgogICAgIEp1bXBMaXN0IHN0YWNrT3ZlcmZsb3c7CkBAIC00
MDIsOSArNDAyLDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxh
dGl2ZS0+Y3JlYXRlT1NSRW50cmllcygpOwogICAgIHNldEVuZE9mQ29kZSgpOwogCi0gICAgYXV0
byBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgYXV0byBsaW5rQnVmZmVyID0gbWFr
ZVVuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKLSAgICAg
ICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmlu
YWxpemVyPihtX2dyYXBoLm1fcGxhbikpOworICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5h
bGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZSgpCiAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAKLSAgICBt
X2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+
KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEpJVEZpbmFsaXpl
cj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShsaW5rQnVmZmVyKSkpOwogfQogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBKSVRD
b21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBjb21waWxlRW50cnlFeGVjdXRpb25GbGFn
KCk7CiAKICAgICAvLyA9PT0gRnVuY3Rpb24gYm9keSBjb2RlIGdlbmVyYXRpb24gPT09Ci0gICAg
bV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsK
KyAgICBtX3NwZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwog
ICAgIGNvbXBpbGVCb2R5KCk7CiAgICAgc2V0RW5kT2ZNYWluUGF0aCgpOwogCkBAIC01MDcsOSAr
NTA3LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBzZXRFbmRP
ZkNvZGUoKTsKIAogICAgIC8vID09PSBMaW5rID09PQotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxh
dGlvbkNhbkZhaWwpOworICAgIGF1dG8gbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZl
cj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChs
aW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFu
LnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5t
X3BsYW4pKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8
RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGxpbmsoKmxpbmtCdWZmZXIpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4gd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50
cnlQdHJUYWc+KGFyaXR5Q2hlY2spOwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVy
KHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRG
aW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxh
biwgbV9qaXRDb2RlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhB
cml0eUNoZWNrKSk7CiB9CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkKiBKSVRDb21waWxlcjo6
YWRkcmVzc09mRG91YmxlQ29uc3RhbnQoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQ7CiAKICAgICBpZiAoIW1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMpCi0gICAgICAgIG1f
Z3JhcGgubV9kb3VibGVDb25zdGFudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhZzxkb3VibGU+Pigp
OworICAgICAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gbWFrZVVuaXF1ZTxCYWc8ZG91
YmxlPj4oKTsKIAogICAgIGRvdWJsZSogYWRkcmVzc0luQ29uc3RhbnRQb29sID0gbV9ncmFwaC5t
X2RvdWJsZUNvbnN0YW50cy0+YWRkKCk7CiAgICAgKmFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IHZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuY3BwCmluZGV4IGJiODAwMjc0ZGRjYjYzMDM0NzgzNzM3ZTM4YWQxZTYxZTlj
NWVhMDQuLmE5NDQwNDc0NTkyNTIxODQ1YmEzMTg4MzdiMTNiOWY0YTMxN2VmMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFz
ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgTGl2ZW5lc3NBbmFseXNpc1BoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgLCBtX2xpdmVBdFRhaWwobV9ncmFwaCkKICAgICB7CiAgICAg
ICAgIG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5yZWNvbXB1dGUoKTsKLSAgICAgICAgbV93b3Jr
c2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jrc2V0PihtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+
bnVtSW5kaWNlcygpKTsKKyAgICAgICAgbV93b3Jrc2V0ID0gbWFrZVVuaXF1ZTxXb3Jrc2V0Piht
X2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+bnVtSW5kaWNlcygpKTsKICAgICB9CiAKICAgICBib29s
IHJ1bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCA0ZGJjZWU4YTZi
YjJkYzM4ZGZjNTA1ZGJjYWI2ZTM5ZmMwZTI3NmYyLi4wNzgzMGVkMmY1ZTgxNjY0ODhiOTFhZGM1
MmE3MTkyZGIyOGMxMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAg
LTI5Niw3ICsyOTYsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhy
ZWFkSW1wbCgpCiAgICAgaWYgKG1fbW9kZSA9PSBGVExGb3JPU1JFbnRyeU1vZGUpIHsKICAgICAg
ICAgYm9vbCByZXN1bHQgPSBwZXJmb3JtT1NSRW50cnlwb2ludENyZWF0aW9uKGRmZyk7CiAgICAg
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9
IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4g
RmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1DUFNSZXRocmVh
ZGluZyk7CkBAIC0zOTcsNyArMzk3LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNv
bXBpbGVJblRocmVhZEltcGwoKQogICAgIGNhc2UgRlRMRm9yT1NSRW50cnlNb2RlOiB7CiAjaWYg
RU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6
OkNhbm5vdENvbXBpbGUpIHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0g
bWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBG
YWlsUGF0aDsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBQbGFuOjpD
b21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgICAgIFJVTl9Q
SEFTRShwZXJmb3JtV2F0Y2hwb2ludENvbGxlY3Rpb24pOwogICAgICAgICAKICAgICAgICAgaWYg
KEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgewotICAgICAgICAg
ICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMp
OworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4o
KnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApp
bmRleCA4NzE1OTViMWZmMjU5YmVlNDRjNzFjZTAzZDdkOGU4YmQ2NDM2NTM3Li41MzRkNjRiNTM4
ZmExODBhZjQ4ZTg5ZDRmODI2MDJmYjQ1YzkyMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCkBAIC00NDgsNyArNDQ4LDcg
QEAgY2xhc3MgU1NBQ29udmVyc2lvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1
ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIo
KTsKLSAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6
OlNTQURhdGE+KGJsb2NrKTsKKyAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBtYWtlVW5pcXVlPEJh
c2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0
byYgcGFpciA6IGVudHJ5cG9pbnRJbmRleFRvQXJndW1lbnRzQmxvY2spIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCA3Y2Y0MjUy
MWE2MjExNzhmZjg1MTJhZmY5ZmZmYTMyNTIwMDIyNGQ2Li5jZGNkYWE2MGQ4OThhM2I2NmQ3YjI5
OGY2NjgxOGM3OWRjNDhjODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0xOTMsNyArMTkzLDcgQEAgaW5saW5lIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIFNwaWxsUmVnaXN0
ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQs
CiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2Vu
ZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+
KAorICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+
PigKICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwg
cmVzdWx0LCBhcmd1bWVudHMuLi4pOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIERlc3RpbmF0aW9uVHlwZSwgdHlwZW5hbWUgU291
cmNlVHlwZSwgdW5zaWcKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoTW92ZSgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBT
b3VyY2VUeXBlIHNvdXJjZVtudW1iZXJPZkFzc2lnbm1lbnRzXSwgRGVzdGluYXRpb25UeXBlIGRl
c3RpbmF0aW9uW251bWJlck9mQXNzaWdubWVudHNdKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5
cGUsIFNvdXJjZVR5cGUsIG51bWJlck9mQXNzaWdubWVudHM+PigKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBl
LCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCiAgICAgICAgIGZyb20sIGppdCwg
ZGVzdGluYXRpb24sIHNvdXJjZSk7CiB9CiAKQEAgLTI0OSw3ICsyNDksNyBAQCBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291
cmNlVHlwZSBzb3VyY2VBcnJheVsxXSA9IHsgc291cmNlIH07CiAgICAgRGVzdGluYXRpb25UeXBl
IGRlc3RpbmF0aW9uQXJyYXlbMV0gPSB7IGRlc3RpbmF0aW9uIH07Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0
aW9uVHlwZSwgU291cmNlVHlwZSwgMT4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmlu
Z1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUs
IDE+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7
CiB9CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291cmNlVHlwZSBzb3VyY2VBcnJheVsy
XSA9IHsgc291cmNlMSwgc291cmNlMiB9OwogICAgIERlc3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlv
bkFycmF5WzJdID0geyBkZXN0aW5hdGlvbjEsIGRlc3RpbmF0aW9uMiB9OwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0
aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDI+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3Np
Z25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VU
eXBlLCAyPj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJy
YXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDJhYmNkYjNmZDVmOTcwZjNmYmI5MGQzYjBmNmUzY2Q5ZDQwZmNlMzcuLjAz
OWE0NmE3NTg2MTA0OGM4NWYwMzI4MmEyNmZlYWZiN2VmOWJlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNDEsNyArMTQxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1
bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUKICAgICAvLyBJIHdhbnQgYSBzbG93IHBhdGggdGhh
dCBhbHNvIGxvYWRzIG91dCB0aGUgc3RvcmFnZSBwb2ludGVyLCBhbmQgdGhhdCdzCiAgICAgLy8g
d2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZl
cyBtZS4gSXQncyBhIGxvdAogICAgIC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBv
ZiBmdW5jdGlvbmFsaXR5LiA6LS8KLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJl
c3VsdEdQUiwgc3RvcmFnZUdQUiwKICAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpKTsK
IApAQCAtODk5LDcgKzg5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUq
IG5vZGUsIEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgcHJvcGVydHlSZWcpCiAgICAgICAgIHNsb3dQ
YXRoLmFwcGVuZChqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUtPmFy
cmF5TW9kZSgpKSk7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6
bWFrZV91bmlxdWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IobWFrZVVuaXF1ZTxBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAg
c2xvd1BhdGgsIHRoaXMsIG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB0ZW1wR1BSLCBzdHJ1
Y3R1cmVHUFIpKTsKICAgICAKICAgICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKQEAgLTIyNDIs
MTAgKzIyNDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJp
bmcoTm9kZSogbm9kZSkKICAgICAgICAgfQogICAgICAgICBpZiAocHJvdG90eXBlQ2hhaW5Jc1Nh
bmUpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc3RkOjptYWtlX3VuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4o
CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywg
dGhpcywgSlNWYWx1ZVJlZ3Moc2NyYXRjaFJlZyksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAj
ZWxzZQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxT
YW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJh
dG9yPigKICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhpcywgSlNWYWx1ZVJlZ3MocmVz
dWx0VGFnUmVnLCBzY3JhdGNoUmVnKSwKICAgICAgICAgICAgICAgICBiYXNlUmVnLCBwcm9wZXJ0
eVJlZykpOwogI2VuZGlmCkBAIC03NjE5LDcgKzc2MTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cywgcmVzdWx0
R1BSLCBzdHJ1Y3R1cmUsCiAgICAgICAgICAgICAgICAga25vd25MZW5ndGgsIG1pbkNhcGFjaXR5
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xv
d1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHJlc3VsdEdQUiwg
c3RydWN0dXJlLCBsZW5ndGhHUFIsIG1pbkNhcGFjaXR5KTsKICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoV1RGTW92ZShnZW5lcmF0b3IpKTsKICAgICB9CkBAIC04NDM5LDcgKzg0MzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxv
Y2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4o
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2Nh
dG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAog
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCBy
ZXN1bHRHUFIsIHRlbXBWYWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAgIH0K
IApAQCAtOTEzNSw3ICs5MTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0cnVjdHVy
ZUNoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBjZWxsR1BSLCBHUFJSZWcgdGVtcEcKICAgICAgICAg
R1BSUmVnIHN0cnVjdHVyZUdQUjsKICAgICAgICAgCiAgICAgICAgIGlmICh0ZW1wR1BSID09IElu
dmFsaWRHUFJSZWcpIHsKLSAgICAgICAgICAgIHN0cnVjdHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8
R1BSVGVtcG9yYXJ5Pih0aGlzKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZSA9IG1ha2VVbmlxdWU8
R1BSVGVtcG9yYXJ5Pih0aGlzKTsKICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVy
ZS0+Z3ByKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gdGVt
cEdQUjsKQEAgLTEzMTc2LDcgKzEzMTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAog
ICAgIG1faml0Lm11dGF0b3JGZW5jZSgqbV9qaXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNp
emVTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1
ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAog
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3Vs
dEdQUiwKICAgICAgICAgc3RydWN0dXJlLAogICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXpl
VG9BcnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRl
eCBmYTM5NmY0ZjE5MmE4YmI0YWVmOTlkMDM3MTkyNGEyYTM4YzY0NWU4Li5iYTYxMjhlZmU5YmIz
NjhmZTNiMDY2MjNiNTFlZTNlZWFkM2M0ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAt
OTUsOCArOTUsOCBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgIGNhc2UgUGhhc2VNb2RlOjpHbG9iYWw6IHsKICAgICAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKIAotICAg
ICAgICAgICAgbV9zdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+
KG1fZ3JhcGgpOwotICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0
YXRlKTsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBtYWtlVW5pcXVlPEluUGxhY2VBYnN0cmFjdFN0
YXRlPihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBtYWtlVW5pcXVlPEFi
c3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0
ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faXNDb252ZXJnZWQgPSBmYWxzZTsKICAg
ICAgICAgICAgIApAQCAtMTA3LDggKzEwNyw4IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIC8vIHRvd2FyZHMgYmVsaWV2aW5n
IHRoYXQgYWxsIG5vZGVzIG5lZWQgYmFycmllcnMuICJOZWVkaW5nIGEgYmFycmllciIgaXMgbGlr
ZQogICAgICAgICAgICAgLy8gc2F5aW5nIHRoYXQgdGhlIG5vZGUgaXMgaW4gYSBwYXN0IGVwb2No
LiAiTm90IG5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlIHNheWluZwogICAgICAgICAgICAgLy8g
dGhhdCB0aGUgbm9kZSBpcyBpbiB0aGUgY3VycmVudCBlcG9jaC4KLSAgICAgICAgICAgIG1fc3Rh
dGVBdEhlYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9n
cmFwaCk7Ci0gICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9j
a01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0SGVh
ZCA9IG1ha2VVbmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAg
ICAgICAgIG1fc3RhdGVBdFRhaWwgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+
Pj4obV9ncmFwaCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJsb2NrTGlzdCBwb3N0T3Jk
ZXIgPSBtX2dyYXBoLmJsb2Nrc0luUG9zdE9yZGVyKCk7CiAgICAgICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggZTZjMjIyMWVlMzAxNTQ0Yzcy
YTljZTgzNWY5ODBmZjM2ZjAyNGI3ZC4uOGY5MzAzNGIwYzZmOTBiYTY2ZjRiZjVjNTNiZTFiNGYw
ZmJhNzRlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlz
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAg
LTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBXb3JrbGlzdDo6VGhyZWFkQm9keSA6IHB1YmxpYyBBdXRv
bWF0aWNUaHJlYWQgewogICAgICAgICBpZiAobV9yZWxhdGl2ZVByaW9yaXR5KQogICAgICAgICAg
ICAgVGhyZWFkOjpjdXJyZW50KCkuY2hhbmdlUHJpb3JpdHkobV9yZWxhdGl2ZVByaW9yaXR5KTsK
ICAgICAgICAgCi0gICAgICAgIG1fY29tcGlsYXRpb25TY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29tcGlsYXRpb25TY29wZT4oKTsKKyAgICAgICAgbV9jb21waWxhdGlvblNjb3BlID0gbWFrZVVu
aXF1ZTxDb21waWxhdGlvblNjb3BlPigpOwogICAgIH0KICAgICAKICAgICB2b2lkIHRocmVhZElz
U3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlkZQpAQCAtMjE0LDcgKzIxNCw3
IEBAIHZvaWQgV29ya2xpc3Q6OmZpbmlzaENyZWF0aW9uKHVuc2lnbmVkIG51bWJlck9mVGhyZWFk
cywgaW50IHJlbGF0aXZlUHJpb3JpdHkpCiAKIHZvaWQgV29ya2xpc3Q6OmNyZWF0ZU5ld1RocmVh
ZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
VGhyZWFkRGF0YT4odGhpcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEg
PSBtYWtlVW5pcXVlPFRocmVhZERhdGE+KHRoaXMpOwogICAgIGRhdGEtPm1fdGhyZWFkID0gYWRv
cHRSZWYobmV3IFRocmVhZEJvZHkobG9ja2VyLCAqdGhpcywgKmRhdGEsIG1fbG9jaywgbV9wbGFu
RW5xdWV1ZWQuY29weVJlZigpLCByZWxhdGl2ZVByaW9yaXR5KSk7CiAgICAgbV90aHJlYWRzLmFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAppbmRleCAxOWIxMTVjOWZkZDY3Y2JjOGFlMTA5
YzY0NDU3NDI4YmEzYWRmYTUzLi4wMGJkYTY1NzI3OWNmN2E5OWRiYWIxNDliMDljNzAzZDY4YjM1
YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgQXN5bmNocm9ub3VzRGlzYXNzZW1ibGVy
JiBhc3luY2hyb25vdXNEaXNhc3NlbWJsZXIoKQogdm9pZCBkaXNhc3NlbWJsZUFzeW5jaHJvbm91
c2x5KAogICAgIGNvbnN0IENTdHJpbmcmIGhlYWRlciwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZVJlZiwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIq
IHByZWZpeCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IG1ha2VVbmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOwog
ICAgIHRhc2stPmhlYWRlciA9IHN0cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVjayEgV2UgbmVl
ZCB0aGlzIGJlY2F1c2UgQ1N0cmluZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCiAgICAgdGFzay0+
Y29kZVJlZiA9IGNvZGVSZWY7CiAgICAgdGFzay0+c2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKaW5kZXggOTBhZTJmNGZlMDZhMTUy
Y2FlNTc4NWUyYzAzYzk5OWI2ODMyYmMxYi4uZWM4MGVhNjdiMjU2Zjg5MThkNDg4M2E4YzUyYjhm
Mzc5NTgzYWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwLmNwcApAQCAtMTU3LDExICsxNTcsMTEgQEAgY29uc3QgQWJzdHJhY3RIZWFwJiBJbmRleGVk
QWJzdHJhY3RIZWFwOjphdFNsb3cocHRyZGlmZl90IGluZGV4KQogICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGluZGV4KSA+PSBtX3NtYWxsSW5kaWNlcy5zaXplKCkpOwogICAgIAogICAg
IGlmIChVTkxJS0VMWSghbV9sYXJnZUluZGljZXMpKQotICAgICAgICBtX2xhcmdlSW5kaWNlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8TWFwVHlwZT4oKTsKKyAgICAgICAgbV9sYXJnZUluZGljZXMgPSBt
YWtlVW5pcXVlPE1hcFR5cGU+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWJzdHJhY3RIZWFw
PiYgZmllbGQgPSBtX2xhcmdlSW5kaWNlcy0+YWRkKGluZGV4LCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFmaWVsZCkgewotICAgICAgICBmaWVsZCA9IHN0ZDo6bWFrZV91bmlx
dWU8QWJzdHJhY3RIZWFwPigpOworICAgICAgICBmaWVsZCA9IG1ha2VVbmlxdWU8QWJzdHJhY3RI
ZWFwPigpOwogICAgICAgICBpbml0aWFsaXplKCpmaWVsZCwgaW5kZXgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggNWQwNGI3MmYwNDgzMWQw
NjMwMjMwNGQxZWI3ZTQ5MjlkNDgwNDI3Zi4uNDYzNWNjOTZmOTEwOTFmNzNmMDhkMWY3NTJiMDQ3
ZDEwNTNiZmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVz
dWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKIAogICAgIGlm
IChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKLSAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNl
dERpc2Fzc2VtYmxlcihzdGQ6Om1ha2VfdW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7
CisgICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXREaXNhc3NlbWJsZXIobWFrZVVuaXF1ZTxC
Mzo6QWlyOjpEaXNhc3NlbWJsZXI+KCkpOwogCiAgICAgewogICAgICAgICBHcmFwaFNhZmVwb2lu
dCBzYWZlcG9pbnQoc3RhdGUuZ3JhcGgsIHNhZmVwb2ludFJlc3VsdCk7CkBAIC03OCw3ICs3OCw3
IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9p
bnRSZXN1bHQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyT2Zmc2V0cyA9Ci0gICAgICAgIHN0ZDo6bWFrZV91
bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCgpKTsKKyAgICAgICAgbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwogICAgIGlm
IChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgZGF0YUxvZygiVW53aW5kIGluZm8g
Zm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwg
IjogIiwgKnJlZ2lzdGVyT2Zmc2V0cywgIlxuIik7CiAgICAgY29kZUJsb2NrLT5zZXRDYWxsZWVT
YXZlUmVnaXN0ZXJzKFdURk1vdmUocmVnaXN0ZXJPZmZzZXRzKSk7CkBAIC0xNDIsNyArMTQyLDcg
QEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2lu
dFJlc3VsdCkKICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAK
LSAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAg
IHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZl
cj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAKICAgICBpZiAoc3Rh
dGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAg
ICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwpAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRS
ZXN1bHQpCiAgICAgCiAgICAgQjM6OlBDVG9PcmlnaW5NYXAgb3JpZ2luTWFwID0gc3RhdGUucHJv
Yy0+cmVsZWFzZVBDVG9PcmlnaW5NYXAoKTsKICAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9D
b2RlT3JpZ2luTWFwcGluZygpKQotICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2lu
TWFwKHN0ZDo6bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFw
QnVpbGRlcih2bSwgV1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlcikpOworICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1h
a2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2bSwg
V1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlcikp
OwogCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gbGFiZWwgPSBzdGF0ZS5m
aW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oc3Rh
dGUucHJvYy0+ZW50cnlwb2ludExhYmVsKDApKTsKICAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlv
biA9IGxhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWls
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKaW5kZXggMTY1MzM1
MDljZDBiNDgyYzc0YmNhNjczMTg3NjNmMmUwZjA5ZGRmMS4uYzNmOTMzOTJmMjZlNmZjOTVmOWMy
Y2M1OTI5ZWQzNGM2YmMzMGMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExGYWlsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKIHZvaWQgZmFpbChTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGUuZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1h
a2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oc3RhdGUuZ3JhcGgubV9wbGFuKSk7CisgICAgc3Rh
dGUuZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4o
c3RhdGUuZ3JhcGgubV9wbGFuKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDA4NTQwNTZlYzdkMTYyYjExY2Rj
MjFjZDc4ZmUxNTE3ZjdhY2YzZWIuLjk1ZGI2OTYxZThlOTA3NzBjZDZlNTU2NzMwMjJiNDQ3NjNi
NTgwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMTY2LDcgKzE2
Niw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQudW50YWdSZXR1
cm5BZGRyZXNzKCk7CiAgICAgICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuanVtcCgp
KTsKIAotICAgICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZl
cj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgICAgICBs
aW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9B
bGxvY2F0ZSgpKSB7CiAgICAgICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgbGlu
ayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG1haW5QYXRoSnVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAg
IAotICAgICAgICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQs
IGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgbGlua0J1ZmZlciA9
IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CiAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAg
ICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBhZjFiYTRiZjkwYThmZDBiYTI1MDJjNjQ3ZTJjMTcxNDEyMmRlN2Q0Li4wOWIzNDI3M2Ni
YjdjYWI0NGNkODYzZTk5YjI4NTkwZTg3Yzk0YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNTA4MCw3ICsxNTA4MCw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhnZW5lcmF0b3JKdW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHZtLT5nZXRDVElTdHViKGxhenlT
bG93UGF0aEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF6eVNsb3dQYXRoPiBsYXp5U2xvd1BhdGggPSBzdGQ6Om1ha2VfdW5pcXVl
PExhenlTbG93UGF0aD4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gbWFrZVVuaXF1ZTxMYXp5U2xv
d1BhdGg+KCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rZWRQ
YXRjaGFibGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihsaW5rQnVm
ZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlSnVtcCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCmluZGV4IDY1M2VjNmY2OTYwNDliNzUyYWMy
NGE3NzkzMTBkNGFkOTdiYjAzZGIuLjRhNDg0ZmE2ZDQ2NDMwZDcxZTU3MDA4YmYxZTk5ZjZjMjVi
ODQ4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC02MCwxMCAr
NjAsMTAgQEAgU3RhdGU6OlN0YXRlKEdyYXBoJiBncmFwaCkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZp
bmFsaXplcj4oZ3JhcGgubV9wbGFuKSk7CisgICAgZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplciht
YWtlVW5pcXVlPEpJVEZpbmFsaXplcj4oZ3JhcGgubV9wbGFuKSk7CiAgICAgZmluYWxpemVyID0g
c3RhdGljX2Nhc3Q8SklURmluYWxpemVyKj4oZ3JhcGgubV9wbGFuLmZpbmFsaXplcigpKTsKIAot
ICAgIHByb2MgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2NlZHVyZT4oKTsKKyAgICBwcm9jID0gbWFr
ZVVuaXF1ZTxQcm9jZWR1cmU+KCk7CiAKICAgICBwcm9jLT5zZXRPcmlnaW5QcmludGVyKAogICAg
ICAgICBbXSAoUHJpbnRTdHJlYW0mIG91dCwgQjM6Ok9yaWdpbiBvcmlnaW4pIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKaW5kZXggMjJkN2Zk
NjVkNWExNzU1YjViMmQzYjc4ZGRhNTVjMGQwMDdlMWNjYi4uMDIxYjBjZGI5ZGZhYzE4YjM2ODY0
MjhhOTgyM2YyODExMGJiNzlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29tcGxldGVTdWJzcGFjZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQWxsb2NhdG9yIENvbXBsZXRl
U3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgICAgIGRhdGFMb2co
IkNyZWF0aW5nIEJsb2NrRGlyZWN0b3J5L0xvY2FsQWxsb2NhdG9yIGZvciAiLCBtX25hbWUsICIs
ICIsIGF0dHJpYnV0ZXMoKSwgIiwgIiwgc2l6ZUNsYXNzLCAiLlxuIik7CiAgICAgCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlxdWVEaXJlY3RvcnkgPQotICAgICAgICBz
dGQ6Om1ha2VfdW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNz
KTsKKyAgICAgICAgbWFrZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNp
emVDbGFzcyk7CiAgICAgQmxvY2tEaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9y
eS5nZXQoKTsKICAgICBtX2RpcmVjdG9yaWVzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9y
eSkpOwogICAgIApAQCAtODgsNyArODgsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6
YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICBtX3NwYWNlLmFkZEJsb2NrRGlyZWN0
b3J5KGxvY2tlciwgZGlyZWN0b3J5KTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxB
bGxvY2F0b3I+IHVuaXF1ZUxvY2FsQWxsb2NhdG9yID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1
ZTxMb2NhbEFsbG9jYXRvcj4oZGlyZWN0b3J5KTsKKyAgICAgICAgbWFrZVVuaXF1ZTxMb2NhbEFs
bG9jYXRvcj4oZGlyZWN0b3J5KTsKICAgICBMb2NhbEFsbG9jYXRvciogbG9jYWxBbGxvY2F0b3Ig
PSB1bmlxdWVMb2NhbEFsbG9jYXRvci5nZXQoKTsKICAgICBtX2xvY2FsQWxsb2NhdG9ycy5hcHBl
bmQoV1RGTW92ZSh1bmlxdWVMb2NhbEFsbG9jYXRvcikpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAppbmRleCBhMDFiNWEyYjRhZWZkM2U1Mjk2OTc3YTVjODM4NDA0MmU1YTI5
NTZhLi45NzE5OWUxODZkZTcyZDc3Mjc5NzM1YzlkM2M5OTQwYzg1YzQ4YWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMjg5LDE1ICsyODksMTUgQEAgSGVhcDo6SGVhcChW
TSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9tYXhFZGVuU2l6ZShtX21pbkJ5dGVz
UGVyQ3ljbGUpCiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAs
IG1fb2JqZWN0U3BhY2UodGhpcykKLSAgICAsIG1fbWFjaGluZVRocmVhZHMoc3RkOjptYWtlX3Vu
aXF1ZTxNYWNoaW5lVGhyZWFkcz4oKSkKLSAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCi0gICAgLCBtX211dGF0b3JT
bG90VmlzaXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKLSAg
ICAsIG1fbXV0YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQotICAgICwgbV9yYWNlTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+
KCkpCi0gICAgLCBtX2NvbnN0cmFpbnRTZXQoc3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3Ry
YWludFNldD4oKnRoaXMpKQorICAgICwgbV9tYWNoaW5lVGhyZWFkcyhtYWtlVW5pcXVlPE1hY2hp
bmVUaHJlYWRzPigpKQorICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihtYWtlVW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgIkMiKSkKKyAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKG1ha2VV
bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQorICAgICwgbV9tdXRhdG9yTWFya1N0YWNr
KG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3JhY2VNYXJrU3RhY2sobWFr
ZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fY29uc3RyYWludFNldChtYWtlVW5p
cXVlPE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykpCiAgICAgLCBtX2hhbmRsZVNldCh2bSkK
LSAgICAsIG1fY29kZUJsb2NrcyhzdGQ6Om1ha2VfdW5pcXVlPENvZGVCbG9ja1NldD4oKSkKLSAg
ICAsIG1faml0U3R1YlJvdXRpbmVzKHN0ZDo6bWFrZV91bmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+
KCkpCisgICAgLCBtX2NvZGVCbG9ja3MobWFrZVVuaXF1ZTxDb2RlQmxvY2tTZXQ+KCkpCisgICAg
LCBtX2ppdFN0dWJSb3V0aW5lcyhtYWtlVW5pcXVlPEpJVFN0dWJSb3V0aW5lU2V0PigpKQogICAg
ICwgbV92bSh2bSkKICAgICAvLyBXZSBzZWVkIHdpdGggMTBtcyBzbyB0aGF0IEdDQWN0aXZpdHlD
YWxsYmFjazo6ZGlkQWxsb2NhdGUgZG9lc24ndCBjb250aW51b3VzbHkgCiAgICAgLy8gc2NoZWR1
bGUgdGhlIHRpbWVyIGlmIHdlJ3ZlIG5ldmVyIGRvbmUgYSBjb2xsZWN0aW9uLgpAQCAtMzA1LDgg
KzMwNSw4IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
ZWRlbkFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVFZGVuVGlt
ZXIodGhpcykpCiAgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNyZW1lbnRhbFN3ZWVw
ZXIodGhpcykpKQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9wdFJlZigqbmV3IFN0
b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCi0gICAgLCBtX3NoYXJlZENvbGxlY3Rvck1hcmtTdGFj
ayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQotICAgICwgbV9zaGFyZWRNdXRh
dG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBt
X3NoYXJlZENvbGxlY3Rvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQor
ICAgICwgbV9zaGFyZWRNdXRhdG9yTWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+
KCkpCiAgICAgLCBtX2hlbHBlckNsaWVudCgmaGVhcEhlbHBlclBvb2woKSkKICAgICAsIG1fdGhy
ZWFkTG9jayhCb3g8TG9jaz46OmNyZWF0ZSgpKQogICAgICwgbV90aHJlYWRDb25kaXRpb24oQXV0
b21hdGljVGhyZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkKQEAgLTMxNCw3ICszMTQsNyBAQCBIZWFw
OjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgbV93b3JsZFN0YXRlLnN0b3Jl
KDApOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbnVtYmVyT2ZQYXJhbGxlbFRocmVhZHMg
PSBoZWFwSGVscGVyUG9vbCgpLm51bWJlck9mVGhyZWFkcygpOyBpIDwgbnVtYmVyT2ZQYXJhbGxl
bFRocmVhZHM7ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZp
c2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQ
IiwgaSArIDEpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNpdG9y
ID0gbWFrZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRvQ1N0cmluZygiUCIsIGkgKyAxKSk7
CiAgICAgICAgIGlmIChPcHRpb25zOjpvcHRpbWl6ZVBhcmFsbGVsU2xvdFZpc2l0b3JzRm9yU3Rv
cHBlZE11dGF0b3IoKSkKICAgICAgICAgICAgIHZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11
dGF0b3IoKTsKICAgICAgICAgbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy5hcHBlbmQo
dmlzaXRvci5nZXQoKSk7CkBAIC0zMjMsMTcgKzMyMywxNyBAQCBIZWFwOjpIZWFwKFZNKiB2bSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRH
QygpKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VTdG9jaGFzdGljTXV0YXRvclNjaGVkdWxl
cigpKQotICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b2NoYXN0
aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX3NjaGVk
dWxlciA9IG1ha2VVbmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0
aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1f
c2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2Ugc2ltdWxhdGUgdHVybmluZyBvZmYgY29uY3Vy
cmVudCBHQyBieSBtYWtpbmcgdGhlIHNjaGVkdWxlciBzYXkgdGhhdCB0aGUgd29ybGQKICAgICAg
ICAgLy8gc2hvdWxkIGFsd2F5cyBiZSBzdG9wcGVkIHdoZW4gdGhlIGNvbGxlY3RvciBpcyBydW5u
aW5nLgotICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNT
dG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyPigpOworICAgICAgICBtX3NjaGVkdWxlciA9IG1h
a2VVbmlxdWU8U3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyPigpOwogICAg
IH0KICAgICAKICAgICBpZiAoT3B0aW9uczo6dmVyaWZ5SGVhcCgpKQotICAgICAgICBtX3Zlcmlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJl
ck9mR0NDeWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbigpKTsKKyAgICAgICAgbV92ZXJpZmll
ciA9IG1ha2VVbmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRpb25zOjpudW1iZXJPZkdDQ3lj
bGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24oKSk7CiAgICAgCiAgICAgbV9jb2xsZWN0b3JTbG90
VmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogCkBAIC04OTksNyArODk5LDcg
QEAgc2l6ZV90IEhlYXA6OnByb3RlY3RlZE9iamVjdENvdW50KCkKIAogc3RkOjp1bmlxdWVfcHRy
PFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxU
eXBlQ291bnRTZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgZm9yRWFjaFByb3RlY3RlZENlbGwo
CiAgICAgICAgIFsmXSAoSlNDZWxsKiBjZWxsKSB7CiAgICAgICAgICAgICByZWNvcmRUeXBlKCp2
bSgpLCAqcmVzdWx0LCBjZWxsKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiBIZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIAogc3RkOjp1
bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6b2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxU
eXBlQ291bnRTZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0
ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgK
ICAgICAgICAgaXRlcmF0aW9uU2NvcGUsCkBAIC0yODU2LDcgKzI4NTYsNyBAQCB2b2lkIEhlYXA6
OmFkZENvcmVDb25zdHJhaW50cygpCiAgICAgICAgIH0sCiAgICAgICAgIENvbnN0cmFpbnRWb2xh
dGlsaXR5OjpTZWxkb21HcmV5ZWQpOwogICAgIAotICAgIG1fY29uc3RyYWludFNldC0+YWRkKHN0
ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+KCp0aGlzKSk7CisgICAg
bV9jb25zdHJhaW50U2V0LT5hZGQobWFrZVVuaXF1ZTxNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWlu
dD4oKnRoaXMpKTsKIH0KIAogdm9pZCBIZWFwOjphZGRNYXJraW5nQ29uc3RyYWludChzdGQ6OnVu
aXF1ZV9wdHI8TWFya2luZ0NvbnN0cmFpbnQ+IGNvbnN0cmFpbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCA1YjY5Y2Q1ZTM1ZjYyYjUwNjYzYTljYmRjNzM5
NGQxYmQ2N2FkMWQ4Li5lMWViNmM3ODMzZDQ4NTg3MWE5YzUzM2NmZDQ3MzFjNzVmOWIxMWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTIxNyw3ICsyMTcs
NyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZWNyZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRl
ZCgpCiBpbmxpbmUgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBIZWFwOjptYXJrTGlz
dFNldCgpCiB7CiAgICAgaWYgKCFtX21hcmtMaXN0U2V0KQotICAgICAgICBtX21hcmtMaXN0U2V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7Cisg
ICAgICAgIG1fbWFya0xpc3RTZXQgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRC
dWZmZXIqPj4oKTsKICAgICByZXR1cm4gKm1fbWFya0xpc3RTZXQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggNWI5
YWM4OWRhYmYwNGEwNjE0ZGMxMGZiYmFmMTZjMGY0YTQ5OWY3ZS4uMmQyYmM4ZmI5YjI3ZmU5Zjli
MWI1YmU1NGNiNzUxZjgzZTBkM2QwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBIZWFw
U25hcHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KCkKIAogICAgIFByZXZlbnRDb2xsZWN0aW9u
U2NvcGUgcHJldmVudENvbGxlY3Rpb25TY29wZShtX3Byb2ZpbGVyLnZtKCkuaGVhcCk7CiAKLSAg
ICBtX3NuYXBzaG90ID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIu
bW9zdFJlY2VudFNuYXBzaG90KCkpOworICAgIG1fc25hcHNob3QgPSBtYWtlVW5pcXVlPEhlYXBT
bmFwc2hvdD4obV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNob3QoKSk7CiAgICAgewogICAgICAg
ICBtX3Byb2ZpbGVyLnNldEFjdGl2ZVNuYXBzaG90QnVpbGRlcih0aGlzKTsKICAgICAgICAgbV9w
cm9maWxlci52bSgpLmhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAppbmRleCBiOGU0MzAx
OTFlNmIxZGMyOWFhNWMwZjEwY2RkNmU5YmIxOThmZGE5Li43YzJlZDI0MDJmZDczMDFmYzA5OWE4
ZGZiNWQzYzMzNmFlYWQxMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0LmNwcApAQCAtODcsNyArODcsNyBAQCBORVZFUl9JTkxJTkUgQml0bWFwPE1hcmtlZEJsb2Nr
OjphdG9tc1BlckJsb2NrPiogSXNvQ2VsbFNldDo6YWRkU2xvdyhzaXplX3QgYmxvYwogICAgIGF1
dG8mIGJpdHNQdHJSZWYgPSBtX2JpdHNbYmxvY2tJbmRleF07CiAgICAgYXV0byogYml0cyA9IGJp
dHNQdHJSZWYuZ2V0KCk7CiAgICAgaWYgKCFiaXRzKSB7Ci0gICAgICAgIGJpdHNQdHJSZWYgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4+KCk7Cisg
ICAgICAgIGJpdHNQdHJSZWYgPSBtYWtlVW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQ
ZXJCbG9jaz4+KCk7CiAgICAgICAgIGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgICAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgICAgICBtX2Jsb2Nrc1dpdGhCaXRzW2Jsb2NrSW5k
ZXhdID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1
YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcApp
bmRleCBkNTEwMDBlYmE4N2YzMWRlNDgxYmVkMDhhNWYyZmVkOGE2MzlmZjk5Li5jZDNlN2U1NjE1
NDU2NmRjZjhjMTUxNjNhMTViNzJmMjc2OGYyOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIElzb1N1YnNwYWNlOjpJc29T
dWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxU
eXBlLCBzCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fZGlyZWN0b3J5KCZoZWFwLCBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKICAgICAs
IG1fbG9jYWxBbGxvY2F0b3IoJm1fZGlyZWN0b3J5KQotICAgICwgbV9pc29BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkK
KyAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihtYWtlVW5pcXVlPElzb0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3I+KCkpCiB7CiAgICAgaW5pdGlhbGl6ZShoZWFwQ2VsbFR5cGUsIG1faXNv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCBiM2FiZDJjNTIyNGZj
ZTNlNWNlMTJjNGYxNjNlZDQ4MjNkYWU2OThlLi4xNzgwYzA4YTQ3MGYyNzYyMzE2MzdlZjY4MTE3
YzlhNGUzMmMxZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
aW5nQ29uc3RyYWludFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTZXQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTWFya2luZ0NvbnN0
cmFpbnRTZXQ6OmRpZFN0YXJ0TWFya2luZygpCiAKIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6
OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZv
aWQoU2xvdFZpc2l0b3ImKT4gZnVuY3Rpb24sIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxp
dHksIENvbnN0cmFpbnRDb25jdXJyZW5jeSBjb25jdXJyZW5jeSwgQ29uc3RyYWludFBhcmFsbGVs
aXNtIHBhcmFsbGVsaXNtKQogewotICAgIGFkZChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtp
bmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdURk1vdmUobmFtZSksIFdU
Rk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20pKTsK
KyAgICBhZGQobWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJy
ZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0
eSwgY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtKSk7CiB9CiAKIHZvaWQgTWFya2luZ0NvbnN0cmFp
bnRTZXQ6OmFkZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4MmJlM2JiYjQ0
Y2I2YzU3NzZiOGVjZjdmYTBjOTQwZDVkNWE1ODI1Li41M2E5MWEyM2MxZDg5MjkxOGVlNDI5NDFh
NjVmNTI3ODY3ZDQzMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5
cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzCiAKICAgICBTdHJpbmcgbWVzc2FnZTsK
ICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKLSAgICBt
X2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhl
YykpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6Y291bnQoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYgdGl0bGUpCiAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUaXRsZSA9PSB0aXRsZSkg
ewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5k
IGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRs
ZS5pc0VtcHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0
cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAg
ICAgICAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgICAg
ICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2Zp
bGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJiB0aXRsCiAKICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBm
cm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNF
bXB0eSgpID8gIk5vIHByb2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIs
IHRpdGxlLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCB3YXJuaW5nKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykp
OwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c3RhcnRDb25zb2xlUHJv
ZmlsZSgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGll
bnQ6OnNjcmVlbnNob3QoRXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp3YXJuVW5pbXBsZW1lbnRlZChjb25zdCBTdHJp
bmcmIG1ldGhvZCkKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ldGhvZCArICIgaXMgY3VycmVu
dGx5IGlnbm9yZWQgaW4gSmF2YVNjcmlwdCBjb250ZXh0IGluc3BlY3Rpb24uIjsKLSAgICBtX2Nv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3Nh
Z2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYzhkYTUyZWZkMTNjNDkxY2NhZTYzOTVlMDc0YzQ2
NDRlNzBjYzBhNy4uYmRiZDMxZDYzMTJiMmMwNTZkN2M0NzgxNWRjNjE1ZDEyMjZkOTI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjMsNyArNjMsNyBA
QCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKLSAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMs
IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0
Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIoZ2xvYmFs
T2JqZWN0KQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkp
CkBAIC03MSwxMSArNzEsMTEgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoKIHsKICAgICBhdXRv
IGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4dCk7CisgICAgYXV0
byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4
dCk7CiAgICAgbV9jb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xl
QWdlbnQpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50PihtX2NvbnNvbGVBZ2VudCk7CiAKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRj
aC0+c3RhcnQoKTsKIH0KQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6cmVwb3J0QVBJRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhj
ZQogICAgICAgICAgICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBTdHJpbmcoKSwgMCwgMCk7CiAgICAgfQogCi0gICAgbV9jb25zb2xlQWdlbnQtPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9y
TWVzc2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
V1RGTW92ZShjYWxsU3RhY2spKSk7CiB9CiAKIENvbnNvbGVDbGllbnQqIEpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29uc29sZUNsaWVudCgpIGNvbnN0CkBAIC0yODAsNyArMjgw
LDcgQEAgSW5zcGVjdG9yQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5zdXJlSW5zcGVjdG9yQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkgewog
ICAgICAgICBhdXRvIGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGlu
c3BlY3RvckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oY29udGV4dCk7
CisgICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckFnZW50
Pihjb250ZXh0KTsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Lmdl
dCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwog
ICAgIH0KQEAgLTI5MSw3ICsyOTEsNyBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50JiBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQoKQogewogICAg
IGlmICghbV9kZWJ1Z2dlckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGpzQWdlbnRD
b250ZXh0KCk7Ci0gICAgICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7Cisg
ICAgICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7CiAgICAgICAgIG1fZGVidWdnZXJB
Z2VudCA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fY29uc29sZUNsaWVudC0+c2V0
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChtX2RlYnVnZ2VyQWdlbnQpOwogICAgICAgICBtX2FnZW50
cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CkBAIC0zMjcsMjAgKzMyNywyMCBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygp
CiAKICAgICBlbnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNvbnRleHQpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4o
Y29udGV4dCkpOwogCiAgICAgZW5zdXJlRGVidWdnZXJBZ2VudCgpOwogCi0gICAgYXV0byBzY3Jp
cHRQcm9maWxlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBt
YWtlVW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRleHQpOwogICAgIG1f
Y29uc29sZUNsaWVudC0+c2V0SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChzY3JpcHRQcm9m
aWxlckFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShzY3JpcHRQ
cm9maWxlckFnZW50UHRyKSk7CiAKLSAgICBhdXRvIGhlYXBBZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9ySGVhcEFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGhlYXBBZ2VudCA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9ySGVhcEFnZW50Pihjb250ZXh0KTsKICAgICBpZiAobV9jb25zb2xl
QWdlbnQpCiAgICAgICAgIG1fY29uc29sZUFnZW50LT5zZXRJbnNwZWN0b3JIZWFwQWdlbnQoaGVh
cEFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShoZWFwQWdlbnQpKTsK
IAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0QXVk
aXRBZ2VudD4oY29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEpTR2xv
YmFsT2JqZWN0QXVkaXRBZ2VudD4oY29udGV4dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCBjMGI1YzlhYWQxOGMwOGNlZGRjMzY5NjZiZjA0
Njg1MTQxNzYyNjQzLi40MTdlNzc1ZmI4MDI0OWMwNDAzMTM3YTgyNzgyMTM3MzI3ZDMzMmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQWdlbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkK
ICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSW5zcGVjdG9yIl9zKQogICAgICwgbV9lbnZpcm9u
bWVudChjb250ZXh0LmVudmlyb25tZW50KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRl
eHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAKaW5kZXggN2VkYmM4MDY2MGYzNmQ2YTgxYWE5MWZiOGZhM2ZkZGRlZGFlNmYyNi4u
NWQyNGM2OWU2YmY0NWQ3MmZiMGJkYTUzYjRjNDU3NTk4NjEzY2JjYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZXhw
aXJlQ29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwOwogSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJDb25zb2xlIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29u
dGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDb25zb2xl
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0YXJ0VGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmUKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/
CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwg
IlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjpt
YWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5n
LCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgfQogfQog
CkBAIC0xNTksMTQgKzE1OSwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6bG9nVGlt
aW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLAogICAgIGlmIChp
dCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8g
dGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0g
bWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAg
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgYWRk
TWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25kcyBl
bGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lk
dGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBhZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3Nh
Z2UsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTg0LDE0ICsxODQsMTQgQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwKICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhN
RTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAg
ICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2Vz
IG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3Rh
Y2spKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZh
bHVlOwogICAgIFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRU
aW1lOwogICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsK
LSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VM
ZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAKICAgICBtX3RpbWVzLnJlbW92ZShpdCk7CiB9CkBA
IC0yMjQsNyArMjI0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIC8vIEZJWE1FOiBXZWIg
SW5zcGVjdG9yIHNob3VsZCBoYXZlIGEgYmV0dGVyIFVJIGZvciBjb3VudGVycywgYnV0IGZvciBu
b3cgd2UganVzdCBsb2cgYW4gdXBkYXRlZCBjb3VudGVyIHZhbHVlLgogCiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
LSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RGVidWcsIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywg
MSkpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RGVidWcsIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywg
MSkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0yMzYsNyArMjM2LDcgQEAg
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwKICAgICBpZiAoaXQgPT0gbV9jb3VudHMuZW5kKCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2Fs
aXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJDb3VudGVyIFwi
IiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywg
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fy
bmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IGU1ZjI0ODJhM2NhYTA4YWE4MTY0NWZhOGM3OWM1MjliYTQzODBkMGEuLjI1ZjFkM2U3MjgxYzZi
MGZiODMzMGZmMTM3ODczNjQzZWJjNjBlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVh
a3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvCiAKIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEZWJ1Z2dlciJfcykKLSAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKERlYnVnZ2VyQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1f
c2NyaXB0RGVidWdTZXJ2ZXIoY29udGV4dC5lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigp
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCBiNTM1ZmY2MTkyYWFjZWZjNzli
NGY2Y2Q5M2RmMTIwMWEzNzE0OGFjLi41ODJjMzVkMzY3ZGZlMWU0ZjdkYzRlOWE1Njg0ZGNhMmE0
ZTNiNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiBJbnNwZWN0b3JIZWFwQWdlbnQ6Okluc3BlY3RvckhlYXBBZ2Vu
dChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkhlYXAi
X3MpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0
TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SGVh
cEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihIZWFwQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAg
ICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggNTZmYzFiNzk4ZGEwZWVlZWEwMjMz
MWVkNTI1NGE5NTAyMTAwNTg3NC4uY2JhZDgxZDY5OTQ0MGE3MzNiMGFmMDQxNjk0YTg2Y2E5ZTZl
OGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQ6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJTY3JpcHRQcm9maWxlciJfcykKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UHJvZmlsZXJG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFNj
cmlwdFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKICAgICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcAppbmRleCAzYWNhNDEwNTEwZmU1MDBmMDVi
ZmJhYWM0NjdmZmRhY2NiMjFjNTI0Li45MzUwNjhjN2FlMTE5NzEwNTQ0YzFmNzY3OTgyMmRmYjY2
ZTU2Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6SW5zcGVjdG9y
VGFyZ2V0QWdlbnQoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0
Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdl
dCJfcykKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFyZ2V0
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGUzMjlhM2I0M2NkNjA5NjVkOWY3Nzg1YTQ4
MjIwMTFhYjM2NmZhNTMuLjliM2YzNzlkNWU1YTQ5MGRiZTM3NWM3MmFjOTlmYTcyMGI5YWNjZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtNTgsNyAr
NTgsNyBAQCBJbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNj
cmlwdENhbGxTdGFjaygmc3RhdGUpLCAwKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAppbmRleCAxNDVkMDUxNmI4
ZTM5Njg4NzhkOTJjYjU5NGFhNTk5YmFmYTM5ZDMyLi4zYjdjM2UyMWQzMWMxYzJmNWI2ZDFiYTBj
MTZmNDg4ODNlNmNmMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
Y3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSlNBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkKLSAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVudGltZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1f
Z2xvYmFsT2JqZWN0KGNvbnRleHQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXgg
NzEwMTY2OGE5N2M4NzQ0ODEyZjQ2NTZmMTZlMGI3ZGQ1OTRmMWE2MC4uY2M5NjQwMDU2NzlkYmZj
ZDRmZTAyOTA2YmM5M2MyM2IyYzgyZWNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC0xNDQsMTEgKzE0NCwxMSBAQCBP
cHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVh
dGVDbGllbnQoUGxhdGZvcm1Tb2NrZQogCiAgICAgU29ja2V0OjpzZXR1cChzb2NrZXQpOwogCi0g
ICAgYXV0byBjb25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+
KCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+
KCk7CiAKICAgICBjb25uZWN0aW9uLT5wb2xsID0gU29ja2V0OjpwcmVwYXJlUG9sbGluZyhzb2Nr
ZXQpOwogICAgIGNvbm5lY3Rpb24tPnNvY2tldCA9IHNvY2tldDsKLSAgICBjb25uZWN0aW9uLT5w
YXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZl
clNpemUpOworICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IG1ha2VVbmlxdWU8TWVzc2FnZVBhcnNl
cj4oaWQsIFNvY2tldDo6QnVmZmVyU2l6ZSk7CiAgICAgY29ubmVjdGlvbi0+cGFyc2VyLT5zZXRE
aWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcihbdGhpc10oQ29ubmVjdGlvbklEIGlkLCBWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKSB7CiAgICAgICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKICAgICAgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoaWQsIFdU
Rk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQuaAppbmRleCA3MGYyZDdhNDgxMzQ3MGY4MTM3MzJiM2I5NzdiNWI3M2E0MTk2
MGI1Li4zMjA0MDBmZDViM2NkYjJjNGIxNWRiZGM5MzA0NmJiZmQwMGNhZGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludD4gY3JlYXRlKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGll
bnQqIGluc3BlY3RvckNsaWVudCwgY29uc3QgY2hhciogbmFtZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PihpbnNw
ZWN0b3JDbGllbnQsIG5hbWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKICAgICB9CiAKICAg
ICBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludChSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9u
Q2xpZW50KiwgY29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5l
cmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IDUwYzhmNmZkZTdjZTY4OThiMDgyODE0OTk3YmU1N2Q3
MzAxOWIyNTMuLjEwMTc4OWUxZGY3NTQ4MWY2MWU4YzAwZjIxMWFjYTc0OWI1MDU4ZWEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29i
amNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTEz
Niw4ICsxMzYsOCBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzOgogICAgIFtfJHt2YXJp
YWJsZU5hbWVQcmVmaXh9SGFuZGxlciByZWxlYXNlXTsKICAgICBfJHt2YXJpYWJsZU5hbWVQcmVm
aXh9SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7
ZG9tYWluTmFtZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVj
dG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0
ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdU
Rk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13
aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxh
dGZvcm0uanNvbi1yZXN1bHQKaW5kZXggM2U5OTE0NzFkMzI0YTM1NTE2OTI4ZTQzZTk0MTA4YjQ0
ODczMTIwOC4uYjA0YTg1MGRmMTE1MmQ2ZmRhNTk2MmRmMzdjMmU0OWUxZWJkOTVlYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9l
eHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC03NzEsOCArNzcx
LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmtIYW5kbGVyIHJl
bGVhc2VdOwogICAgIF9uZXR3b3JrSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5l
dHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7Cisg
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0
d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9z
LCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250
cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRl
eCBhNzE0ZmIxMzE4MzI5M2QxODMyZmM1ODFlNmM1MzM3ODY4MDJkNTcyLi5jMGUxNzMzN2ZkNGE3
OTg4MzBlODVkMjllODVkOGVkMzAyMGNhNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTE4OSw4ICsxMTg5LDggQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsKICAg
ICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2Ui
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0
byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1h
a2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJv
bGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1
cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA1M2JkNTUzYjdiYTc0ZGRkMjllMjU1MWNj
MGI4NGZhNDMwNzE0Y2FlLi5hZWQwN2I3NWU4Yjg4OGRkNTkzMzkwYWZhMjFkMmM4OTBkZGZjNTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1j
YWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0xMDY4LDggKzEwNjgsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2Vd
OwogICAgIF9kYXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRh
YmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNl
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKaW5kZXggNjc4YzZhYWE4NWFjYTM4
NDI0OGI5OTI5MDM0Y2NmMDk0MTE4ZGVlNy4uMWFkY2JkM2ZkMmFjYjljYTE0NjFjMzA4ZTQ1YzQ5
MmVjM2UwMzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CkBAIC03ODIs
OCArNzgyLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkFIYW5k
bGVyIHJlbGVhc2VdOwogICAgIF9kb21haW5BSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAK
LSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNw
ZWN0b3JEb21haW5BQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERv
bWFpbkFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVy
Pj4oIkRvbWFpbkEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVj
dG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5BQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21h
aW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAg
IF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsK
IH0KIApAQCAtODAwLDggKzgwMCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAg
W19kb21haW5CSGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWluQkhhbmRsZXIgPSBbaGFuZGxl
ciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAg
ICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRj
aGFibGVBZ2VudDxEb21haW5CQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNr
ZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5CIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlx
dWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAg
YXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5CQmFja2VuZERpc3Bh
dGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3Bh
dGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVy
bmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5n
LWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IGY2YzVlZGNjYjkyODVhZjQ4YzZkZWI5ODQy
MmE3MjM2Yjg3MDJkNGUuLmEzZTI3ZGYzOGNlYWZiYjNjNDUxZTEzYjYxMTllMmU1NGMzZDJhOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdApAQCAtMTAzOSw4ICsxMDM5LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKICAgICBbX25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0
ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwg
V1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRj
aGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFB
Z2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKQEAgLTEwNTcsOCArMTA1Nyw4IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrM0hhbmRsZXIgcmVsZWFz
ZV07CiAgICAgX25ldHdvcmszSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRv
IGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0Jh
Y2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oIk5l
dHdvcmszIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwor
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29y
azMiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAg
X2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Vu
dW0tdmFsdWVzLmpzb24tcmVzdWx0CmluZGV4IDRkOTRhZDk0YWQ4NTFmNTg1ZjQ4ZTkxMTVlM2Jl
Y2NmOTdiN2FkNWYuLmJkNmI5ODE1Zjc2MDFhZTFkMGZlZGMyNmM0NTQzNWJhNDNmNjFlNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0t
dmFsdWVzLmpzb24tcmVzdWx0CkBAIC04MTUsOCArODE1LDggQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKICAgICBbX2NvbW1hbmREb21haW5IYW5kbGVyIHJlbGVhc2VdOwogICAgIF9jb21t
YW5kRG9tYWluSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
Pj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpD
SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFn
ZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDZmNmJm
MzYyNTdhZTllZWYwNWYxYmYyNjczZTYxMTNmM2JjZTg5ODAuLjVjYmNjYmZlZDUzYzRiZjM0MTM2
Zjc2OGVkYTU5ZmZiNDkwNzBiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMt
d2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21h
aW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTc5OCw4ICs3OTgsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazFIYW5kbGVyIHJlbGVhc2Vd
OwogICAgIF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsx
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhw
ZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggM2U5
OTE0NzFkMzI0YTM1NTE2OTI4ZTQzZTk0MTA4YjQ0ODczMTIwOC4uYjA0YTg1MGRmMTE1MmQ2ZmRh
NTk2MmRmMzdjMmU0OWUxZWJkOTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1h
Yy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRm
b3JtLmpzb24tcmVzdWx0CkBAIC03NzEsOCArNzcxLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKICAgICBbX25ldHdvcmtIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrSGFuZGxl
ciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRl
TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RG
TW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVy
ID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0
ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdU
Rk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmlu
ZGV4IDA1ZjcwZjFhZWFmNGM0ZDlmNTJjMTA2YWI2NmRiOWVjZDJlYWI4YmUuLjk5ZThhNDdmZDVl
MGMyMDdlNzI3Yjg2ZmUyMzYxOTA1N2I2NTAyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJ
VENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICB9CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkgfHwgKG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAm
JiBPcHRpb25zOjpkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJvZmlsZXIoKSkpKQotICAgICAgICBt
X2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGlzYXNzZW1ibGVyPihtX2NvZGVC
bG9jayk7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxKSVREaXNhc3NlbWJs
ZXI+KG1fY29kZUJsb2NrKTsKICAgICBpZiAoVU5MSUtFTFkobV92bS0+bV9wZXJCeXRlY29kZVBy
b2ZpbGVyKSkgewogICAgICAgICBtX2NvbXBpbGF0aW9uID0gYWRvcHRSZWYoCiAgICAgICAgICAg
ICBuZXcgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKApAQCAtOTAxLDcgKzkwMSw3IEBAIENvbXBpbGF0
aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENU
b0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92
ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKSk7CisgICAgICAgIG1f
Y29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2lu
TWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsK
ICAgICAKICAgICBDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJlc3VsdCA9IEZJTkFMSVpFX0NPREUo
CiAgICAgICAgIHBhdGNoQnVmZmVyLCBKU0VudHJ5UHRyVGFnLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDE2YmY3MGQ4MDE3NDQyMzA1MDJhMmQ4YjE5N2NkNDAx
YzgwMjRmMzguLjViZGY4MzA0NjUwNDM5OTRlMTFiYWZmZWQ1MmJiNzg1YzFiYTBhNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBKSVRUaHVua3M6OkpJVFRodW5rcygpCi0gICAgOiBtX2hvc3RGdW5j
dGlvblN0dWJNYXAoc3RkOjptYWtlX3VuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQorICAg
IDogbV9ob3N0RnVuY3Rpb25TdHViTWFwKG1ha2VVbmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4o
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZTM4OGZi
MGU2MjcwOGIzNGVjYjk3MWU5NDZiNDZiMTkzYzRjYWUzYi4uOGY5YTg2NGU0ZmU4NjI2YTFmZWZj
MGMzMDdjOWU0NjU2NjJmNWE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC0xMDkyLDcgKzEwOTIsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENhbGxGcmFtZVNodWZmbGVyPiBmcmFtZVNodWZmbGVyOwogICAgIGlmIChj
YWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVChjYWxsTGlu
a0luZm8uaXNUYWlsQ2FsbCgpKTsKLSAgICAgICAgZnJhbWVTaHVmZmxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZXI+KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVm
ZmxlRGF0YSgpKTsKKyAgICAgICAgZnJhbWVTaHVmZmxlciA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1l
U2h1ZmZsZXI+KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAvLyBXZSB3b3VsZCBoYXZlIGFscmVhZHkgY2hl
Y2tlZCB0aGF0IHRoZSBjYWxsZWUgaXMgYSBjZWxsLCBhbmQgd2UgY2FuCiAgICAgICAgIC8vIHVz
ZSB0aGUgYWRkaXRpb25hbCByZWdpc3RlciB0aGlzIGJ1eXMgdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IDQxMjJmYmVkMjJlZTE1NTIzZDE0ZTRhODc5YWJhMWFiODQ3ODZhMDcuLjcwMmQzNjk0
ZDlmNzY4ODQyMGYwY2RhYmQxMGU4ODhhNzMzZjI4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC0yOTY5LDcgKzI5NjksNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25z
LCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAgICBKU0xvY2tIb2xkZXIg
bG9ja2VyKHZtKTsKIAogICAgICAgICBpZiAob3B0aW9ucy5tX3Byb2ZpbGUgJiYgIXZtLm1fcGVy
Qnl0ZWNvZGVQcm9maWxlcikKLSAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CisgICAgICAgICAgICB2
bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBtYWtlVW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4o
dm0pOwogCiAgICAgICAgIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBH
bG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBvcHRpb25zLm1fYXJn
dW1lbnRzKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVk
KG9wdGlvbnMubV9lbmFibGVSZW1vdGVEZWJ1Z2dpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCmluZGV4IGY4ZGJlNzE5NmYxMTE3MTZkMGE1OGY3ZjU3ZTNmOGY2N2I3
YTJhY2YuLmExNjRmZDkwM2YzNmU5NDIwYTczNjRlZjQyN2M2YzJmZmUzMjJjZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlCiAgICAgLCBtX2ltbWVkaWF0ZVBhcmVudEFsbG93c0Z1bmN0aW9u
RGVjbGFyYXRpb25JblN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fZGVidWdnZXJQYXJzZURhdGEo
ZGVidWdnZXJQYXJzZURhdGEpCiB7Ci0gICAgbV9sZXhlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGV4
ZXJUeXBlPih2bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOworICAgIG1fbGV4ZXIgPSBtYWtl
VW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKICAgICBtX2xl
eGVyLT5zZXRDb2RlKHNvdXJjZSwgJm1fcGFyc2VyQXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2Nh
dGlvbi5saW5lID0gc291cmNlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCk7CiAgICAgbV90b2tl
bi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA2OWFhMGJjMTkwYWY2NzgzZDg5MjhjMzU5
YWEzYjEwYmIxZmJkODczLi4wYTVlZGU0Yjg0MjVjZmQxYjMxN2M3NmM1MWVhNzM3ODE3ODBiNTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIwNCw3ICsyMDQsNyBA
QCBzdHJ1Y3QgU2NvcGUgewogICAgIHZvaWQgcHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxh
YmVsLCBib29sIGlzTG9vcCkKICAgICB7CiAgICAgICAgIGlmICghbV9sYWJlbHMpCi0gICAgICAg
ICAgICBtX2xhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8TGFiZWxTdGFjaz4oKTsKKyAgICAgICAg
ICAgIG1fbGFiZWxzID0gbWFrZVVuaXF1ZTxMYWJlbFN0YWNrPigpOwogICAgICAgICBtX2xhYmVs
cy0+YXBwZW5kKFNjb3BlTGFiZWxJbmZvIHsgbGFiZWwtPmltcGwoKSwgaXNMb29wIH0pOwogICAg
IH0KIApAQCAtMTk0MSw3ICsxOTQxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICAg
ICAgZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudExpbmVTdGFy
dE9mZnNldCgpOwogICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1
cnJlbnRPZmZzZXQoKTsKICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gZW5kTG9jYXRpb24u
c3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0gICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwKKyAgICAgICAg
cmVzdWx0ID0gbWFrZVVuaXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuZExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhcnRDb2x1bW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckFyZW5hLmgKaW5kZXggZGYxN2JlNTM2NjNlN2NiN2I3MGM0ODc3MGY5YTA1MjljZjMz
YTdlZS4uNDEwMDA2ZDkyNzUxY2U5NmI5MmNiOTYyNTYzNWVhN2NmNzhlYzRkOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtMTgwLDcgKzE4MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyQXJlbmEmIGlkZW50aWZpZXJBcmVu
YSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSAoIW1faWRlbnRpZmllckFy
ZW5hKSkKLSAgICAgICAgICAgICAgICBtX2lkZW50aWZpZXJBcmVuYSA9IHN0ZDo6bWFrZV91bmlx
dWU8SWRlbnRpZmllckFyZW5hPigpOworICAgICAgICAgICAgICAgIG1faWRlbnRpZmllckFyZW5h
ID0gbWFrZVVuaXF1ZTxJZGVudGlmaWVyQXJlbmE+KCk7CiAgICAgICAgICAgICByZXR1cm4gKm1f
aWRlbnRpZmllckFyZW5hOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAppbmRleCAwNTAzMmI1ZDEz
MTA4YzBlYjYyMGU5ZGFlODIwY2VmN2FjNzUzMThjLi4zNTcxMWI1ZmE2NDI2OWU2Nzc0YWI3MGUy
MWRkNTAyNTE2OWM4ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCkBAIC03OSw3ICs3OSw3IEBAIEV4ZWN1dGlv
bkNvdW50ZXIqIENvbXBpbGF0aW9uOjpleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0
YWNrJiBvcmlnaW4pCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4ZWN1dGlvbkNvdW50ZXI+JiBj
b3VudGVyID0gbV9jb3VudGVycy5hZGQob3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgaWYgKCFjb3VudGVyKQotICAgICAgICBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxF
eGVjdXRpb25Db3VudGVyPigpOworICAgICAgICBjb3VudGVyID0gbWFrZVVuaXF1ZTxFeGVjdXRp
b25Db3VudGVyPigpOwogCiAgICAgcmV0dXJuIGNvdW50ZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggNzBjNzE0NzMzMjQ0NDA4MDc4NzkzNDAx
OTg2NjczYzk3ZTFlYTgzZC4uYTY0ZGUzZmRkNjYyNTUxOGFjNWQxMjZjZWFjNzhiNmYyMTI1YTRm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTc0LDcgKzE3
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IGdldFN0YWNrVHJhY2Uo
RXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IHVzZUN1cnJlbnRGcmFtZSA/IDAgOiAxOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RhY2tGcmFt
ZT4+KCk7CiAgICAgdm0uaW50ZXJwcmV0ZXItPmdldFN0YWNrVHJhY2Uob2JqLCAqc3RhY2tUcmFj
ZSwgZnJhbWVzVG9Ta2lwLCBnbG9iYWxPYmplY3QtPnN0YWNrVHJhY2VMaW1pdCgpLnZhbHVlKCkp
OwogICAgIGlmICghc3RhY2tUcmFjZS0+aXNFbXB0eSgpKQogICAgICAgICBBU1NFUlRfVU5VU0VE
KGV4ZWMsIGV4ZWMgPT0gdm0udG9wQ2FsbEZyYW1lIHx8IGV4ZWMtPmlzR2xvYmFsRXhlYygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCmluZGV4IDQzOWUyMDliMGE1ZjhmYjgyOWI3OTE5NzU3NDg4YzQxNTYzNDI3M2YuLmVm
MmU4MzA4NzQxYjg4NTJlNTYyMzI2Zjk2MjU3YzlkMDI5MzVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9t
R2xvYmFsQ29kZSgKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOwot
ICAgIGF1dG8gcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgIGF1
dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJhcmVEYXRhLT5tX2xp
bmVDb3VudCA9IGxpbmVDb3VudCgpOwogICAgIHJhcmVEYXRhLT5tX2VuZENvbHVtbiA9IGVuZENv
bHVtbigpOwogICAgIHJhcmVEYXRhLT5tX3BhcmFtZXRlcnNTdGFydE9mZnNldCA9IHBhcmFtZXRl
cnNTdGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5oCmluZGV4IDQ2MjM2NDFjNTk4ZTNlYmI1ZmJhNmJjMDIzNzI2NGU1MDUy
ZmQxNzkuLjUyYjI4YjEzYzdlMmUyNWQyMWJiYmFiM2FkMzFkNWI2YmMwY2RlZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKQEAgLTE1
Niw3ICsxNTYsNyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhOjpBbGxvY2F0aW9uUHJvZmlsZUNs
ZWFyaW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaAogaW5saW5lIFdhdGNocG9pbnQq
IEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBv
aW50KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaGFzQWxsb2NhdGlvblByb2ZpbGVDbGVhcmlu
Z1dhdGNocG9pbnQoKSk7Ci0gICAgbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+
KHRoaXMpOworICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgPSBtYWtl
VW5pcXVlPEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0aGlzKTsKICAgICBy
ZXR1cm4gbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludC5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDFhNTdlZjNkY2ZlOTE5ZTcwYjM3ZmE3ZTM0ODU0YTEzZTkwNTNmYWUuLmNjODc3NjdmMTA4
YmNjNDgzYjMxNWYxMTJmYTljNTM0N2Y1MjAxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ3Nyw4ICs0NzcsOCBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2RlYnVnZ2VyID0gMDsKIAogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI+KCp0aGlzKTsKLSAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZT4oKnRoaXMpOworICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXI+KCp0aGlzKTsKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBtYWtlVW5pcXVlPEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZT4oKnRoaXMpOwogICAgIG1faW5zcGVjdG9yRGVidWdnYWJs
ZS0+aW5pdCgpOwogICAgIG1fY29uc29sZUNsaWVudCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+
Y29uc29sZUNsaWVudCgpOwogI2VuZGlmCkBAIC0xMTQ1LDU3ICsxMTQ1LDU3IEBAIGNhcGl0YWxO
YW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxh
ZyA/IGNhcGl0YWxOYW1lCiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KGFycmF5SXRlcmF0b3JQcm90b3R5
cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fYXJyYXlJdGVyYXRvclBy
b3RvdHlwZU5leHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fYXJyYXlJdGVyYXRvclBy
b3RvdHlwZU5leHQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlw
ZU5leHQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5
UHJvdG90eXBlKCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAg
ICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnQpOworICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnQpOwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBv
aW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJhdG9y
UHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX21hcEl0ZXJh
dG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21h
cEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21h
cEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAg
ICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRh
cHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBv
aW50KHNldEl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAg
ICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQp
OworICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQp
OwogICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRp
dGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3Zt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVT
eW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuZ2V0KCksIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
dHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5n
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAg
IHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFw
dGl2ZVdhdGNocG9pbnQobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
dHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nUHJvdG90
eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJp
bmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0K
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlO
YW1lcy0+c2V0KTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOworICAg
ICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0
V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3Nl
dFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwotICAgICAgICBtX3Nl
dFByb3RvdHlwZUFkZFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0QWRkV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBv
aW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
ICAgICB9CiAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAg
ICAgICAgIHRoaXMtPnN5bWJvbFByb3RvdHlwZSgpOwogCiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3Rv
dHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZyk7Ci0gICAgICAgIG1fbnVtYmVyUHJv
dG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbnVtYmVyUHJv
dG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9u
LCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBl
VG9TdHJpbmdXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgbV9udW1iZXJQcm90b1Rv
U3RyaW5nRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclBy
b3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAg
ICB9CkBAIC0xOTMyLDEwICsxOTMyLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3Rh
bGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FT
U0VSVCghbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50LmlzQmVpbmdXYXRjaGVkKCkpOwogICAgIG1f
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludC50b3VjaCh2bSwgIlNldCB1cCBhcnJheSBzcGVjaWVzIHdh
dGNocG9pbnQuIik7CiAKLSAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludCk7CisgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3Rvcldh
dGNocG9pbnQtPmluc3RhbGwodm0pOwogCi0gICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBt
X2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJh
eVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hw
b2ludC0+aW5zdGFsbCh2bSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDA0N2MxNjY1M2U3MWIxYTgwNmJkOWZjN2Q1NjY0M2E1
Zjk4OGYxMWUuLjg0NTM1Y2E1YzYwMGNlY2JkOGI0NzhmNjViNTNjZDA3ZTM2YTgzOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTIx
LDcgKzUyMSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIHsKICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFs
T2JqZWN0UmFyZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPEpTR2xv
YmFsT2JqZWN0UmFyZURhdGE+KCk7CiAgICAgfQogICAgICAgICAKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCAxYWYw
MDM2NTNjYjhjM2RlNjQzZjhjNDkxMjdhYmIzZTU1MTNkNWFkLi4zMjdmZWQwNmM2N2E1YmYxMTI1
MWY5ZjRkZWQ4MzllNzAzM2M4YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSlNSdW5Mb29w
VGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6c2V0UnVuTG9vcChNYW5hZ2VyKiBtYW5hZ2VyLCBD
RlJ1bkxvb3BSCiAjZWxzZQogSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVy
Vk1EYXRhKE1hbmFnZXImIG1hbmFnZXIpCiAgICAgOiBydW5Mb29wKCZSdW5Mb29wOjpjdXJyZW50
KCkpCi0gICAgLCB0aW1lcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+
PigqcnVuTG9vcCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRG
aXJlQ2FsbGJhY2spKQorICAgICwgdGltZXIobWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5h
Z2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVy
RGlkRmlyZUNhbGxiYWNrKSkKIHsKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIHRpbWVy
LT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkphdmFzY3JpcHRUaW1lcik7CkBA
IC0xNzIsNyArMTcyLDcgQEAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXImIEpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpzaGFyZWQoKQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdp
c3RlclZNKFZNJiB2bSkKIHsKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlclZN
RGF0YT4oKnRoaXMpOworICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UGVyVk1EYXRhPigqdGhp
cyk7CiAjaWYgVVNFKENGKQogICAgIGRhdGEtPnNldFJ1bkxvb3AodGhpcywgdm0ucnVuTG9vcCgp
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggNWYwNzhkMmE1MDlkMmI0NDIwMGY3YTRhZjM4ODEyNDZj
YjJkNThhNy4uNTI5MDIwZGYwZjFkYzJhMjg2ZjgwMGFiYWQ5ZDdlYjdkM2Y4ZWU5NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFi
bGU6OmdldERlbGV0ZWRPZmZzZXQoKQogaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVs
ZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2RlbGV0ZWRP
ZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8UHJvcGVydHlPZmZzZXQ+PigpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFrZVVu
aXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+PigpOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFw
cGVuZChvZmZzZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5VGFibGUuY3BwCmluZGV4IDU5ZWM0MWM0OWFlODJmNDdmNjk4NjgwNmRkNjE0Mzk0NGE0
MmI1ZDYuLmIxYmI2NzkxOTkyNjVhZmNiY2NjODM2NTZkOGQ1NmZjNWI0YTM1NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCBjb25zdCBQcm9w
ZXJ0eVRhYmxlJiBvdGhlcikKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rv
ci4KICAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3Ro
ZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykK
LSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CiB9CiAKIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25l
ZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQpAQCAtMTA3LDcg
KzEwNyw3IEBAIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25lZCBp
bml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFiCiAgICAgLy8gQ29weSB0aGUgbV9kZWxl
dGVkT2Zmc2V0cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxl
dGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVy
RGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAg
ICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4o
Km90aGVyRGVsZXRlZE9mZnNldHMpOwogfQogCiB2b2lkIFByb3BlcnR5VGFibGU6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5k
ZXggMDcxYjFmNjYzMTVjZTNhZThkY2ZlMTc1ZmY2MzY2ZjVjNjMyYWZmYy4uNzBlNTkzZDUzZWJk
ZDgxZDhjMDgxM2EyOTc3MGU5NDBjZTA0MTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZWdFeHA6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIAogICAgIG1fbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3Vi
cGF0dGVybnM7CiAgICAgaWYgKCFwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMuaXNFbXB0eSgp
IHx8ICFwYXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgIG1f
cmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICBtX3JhcmVEYXRhLT5t
X2NhcHR1cmVHcm91cE5hbWVzLnN3YXAocGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzKTsKICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LnN3YXAocGF0dGVybi5t
X25hbWVkR3JvdXBUb1BhcmVuSW5kZXgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgKaW5kZXggMzljZGQ5MTE2ZTAyN2UzZGI2MDQwZGJkOGZlNTI3MGQyZTk5NWQ4
ZC4uZThkYTg1MjZlN2M3ZTgxZmJlYTc1Yzg4OTg4MTYxYjlhZjg5MTcxMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBjbGFzcyBSZWdF
eHAgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBlbnN1
cmVSZWdFeHBKSVRDb2RlKCkKICAgICB7CiAgICAgICAgIGlmICghbV9yZWdFeHBKSVRDb2RlKQot
ICAgICAgICAgICAgbV9yZWdFeHBKSVRDb2RlID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyOjpZYXJy
Q29kZUJsb2NrPigpOworICAgICAgICAgICAgbV9yZWdFeHBKSVRDb2RlID0gbWFrZVVuaXF1ZTxZ
YXJyOjpZYXJyQ29kZUJsb2NrPigpOwogICAgICAgICByZXR1cm4gKm1fcmVnRXhwSklUQ29kZS5n
ZXQoKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggMjM3ZDdkZTY4OGRkMjA3NjUwMjAxMjE2Y2Qw
ZDU0NjgwYzQ5NmVhYS4uZWU2ZTE4Y2VmZGJlNzlmNGJjMmViMjE5N2ZmNTM5MTA0ZTFmNzk5OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJs
ZS5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCBhdXRvIFNjcmlwdEV4ZWN1dGFibGU6OmVuc3VyZVRl
bXBsYXRlT2JqZWN0TWFwSW1wbChzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplYwogewogICAg
IGlmIChkZXN0KQogICAgICAgICByZXR1cm4gKmRlc3Q7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRlbXBsYXRlT2JqZWN0TWFwPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OwogICAgIGRlc3QgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuICpkZXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMjkzYzQ2NDcyZTc0
ODk0MWNhOWNjMmFkYWMxNmEzZDJkYzVkZWVlYy4uMDFjZDJiZDU0N2ZlMDJiNTA0N2E2ZDQ1YjNj
OGFkNmZkNTJiZGI0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCkBAIC04NTYsNyArODU2LDcgQEAgV2F0Y2hwb2ludFNldCogU3RydWN0dXJlOjplbnN1
cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChWTSYgdm0sIFByb3BlcnQKICAgICBT
dHJ1Y3R1cmVSYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzLT5yYXJlRGF0YSgpOwogICAgIGlmICgh
cmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cykgewogICAgICAgICByYXJlRGF0
YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91
bmlxdWU8U3RydWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1hcD4oKTsKKyAgICAg
ICAgICAgIG1ha2VVbmlxdWU8U3RydWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1h
cD4oKTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICB9CiAgICAgYXV0byBy
ZXN1bHQgPSByYXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzLT5hZGQob2Zmc2V0
LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmNwcAppbmRleCA5OWE4ZDlmN2RhYWMyMTdlNGM4MWU3ZTcxMjZlOWMwMmIz
NzRlZDNmLi5kM2NmMTgzYjBmNmQ3YzQ4OTg4MDBhYjY4ZWU0OGNkMTI4ZjdmZTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9T
dHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXIKICAgICBBU1NFUlQo
Y29uZGl0aW9uU2V0LnN0cnVjdHVyZXNFbnN1cmVWYWxpZGl0eSgpKTsKICAgICBmb3IgKE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA6IGNvbmRpdGlvblNldCkgewogICAgICAgICBp
ZiAoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJl
c2VuY2UpIHsKLSAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFs
dWVXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOworICAg
ICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQg
PSBtYWtlVW5pcXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CiAgICAgICAgICAgICBtX29iamVjdFRv
U3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlV2F0Y2hwb2lu
dFNldC5hZGQoY29uZGl0aW9uLCB0aGlzKS0+aW5zdGFsbCh2bSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggMzkyZjIxN2MxNGVmYWViNTQ1
YmYwZDRmNzc5MGMxMTI3OTMyYmM4NS4uYTRhODcwZmMxZmNhZDM1YzQzOTVmMTA5YjIyYTk5YzQy
MGQ3NDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIGNvbnN0IFN5bWJvbFRhYmxlOjpMb2NhbFRvRW50cnlW
ZWMmIFN5bWJvbFRhYmxlOjpsb2NhbFRvRW50cnkoY29uc3QgQ29uY3VycmVudEpTCiAgICAgICAg
ICAgICAgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG9mZnNldC5zY29wZU9mZnNldCgpLm9mZnNl
dCgpICsgMSk7CiAgICAgICAgIH0KICAgICAKLSAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CisgICAgICAgIG1f
bG9jYWxUb0VudHJ5ID0gbWFrZVVuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIp
OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9tYXApIHsKICAgICAgICAgICAgIFZhck9m
ZnNldCBvZmZzZXQgPSBlbnRyeS52YWx1ZS52YXJPZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChv
ZmZzZXQuaXNTY29wZSgpKQpAQCAtMTU5LDcgKzE1OSw3IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xU
YWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogICAgICAgICByZXN1bHQtPm1fYXJndW1lbnRz
LnNldCh2bSwgcmVzdWx0LCBhcmd1bWVudHMpOwogICAgIAogICAgIGlmIChtX3JhcmVEYXRhKSB7
Ci0gICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFi
bGVSYXJlRGF0YT4oKTsKKyAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxT
eW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXRl
ciA9IG1fcmFyZURhdGEtPm1fdW5pcXVlSURNYXAuYmVnaW4oKTsKQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIFN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImKQogICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwor
ICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAg
ICBmb3IgKGF1dG8gaXRlciA9IG1fbWFwLmJlZ2luKCksIGVuZCA9IG1fbWFwLmVuZCgpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fdW5pcXVlSURNYXAuc2V0
KGl0ZXItPmtleSwgVHlwZVByb2ZpbGVyTmVlZHNVbmlxdWVJREdlbmVyYXRpb24pOwpAQCAtMjEw
LDcgKzIxMCw3IEBAIENvZGVCbG9jayogU3ltYm9sVGFibGU6OnJhcmVEYXRhQ29kZUJsb2NrKCkK
IHZvaWQgU3ltYm9sVGFibGU6OnNldFJhcmVEYXRhQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJs
b2NrKQogewogICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIEFTU0VSVCghbV9yYXJl
RGF0YS0+bV9jb2RlQmxvY2spOwogICAgIG1fcmFyZURhdGEtPm1fY29kZUJsb2NrLnNldCgqY29k
ZUJsb2NrLT52bSgpLCB0aGlzLCBjb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmNwcAppbmRleCA0MTBlYjZkNWFlMTZmMzYwMjI2ZGIzODIzZjdlZTgyOGVj
Y2FiMzgzLi40MWFjYTlkM2Q0ZDliOGE1NmFlNjg1MjMwZThkNjY3NTJhYzBkMDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtMzYyLDcgKzM2Miw3IEBA
IFN0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKCkKICAgICAgICAgYnVpbGRlci5h
cHBlbmQobV9wcm90by0+cHJvcGVydHlIYXNoKCkpOwogICAgIH0KIAotICAgIG1fcHJvcGVydHlI
YXNoID0gc3RkOjptYWtlX3VuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAg
bV9wcm9wZXJ0eUhhc2ggPSBtYWtlVW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsK
ICAgICByZXR1cm4gKm1fcHJvcGVydHlIYXNoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggNGUyZDBkMzI0YTI0ZTIzMmNkMTk1Mzg5MmVkOGIwYTMzYjBiMDVlZS4u
YjcwOTJjMDhlZjcyYjBlY2E4OWZmMGI1YzRiZTFhZTU5YWExZGJiNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjUyLDE4ICsyNTIsMTggQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1
cnJlbnQoKSkKICNlbmRpZiAvLyBVU0UoQ0YpCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBUeXBlKQot
ICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yPigpKQotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3Io
c3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdl
OjpQcmltaXRpdmUpKQotICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0ZDo6bWFrZV91
bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkp
Ci0gICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5
cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhp
bGlhcnkpKSkKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShzdGQ6Om1ha2Vf
dW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlv
biwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCi0gICAgLCBjZWxsSGVh
cENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhE
b2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxs
QXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBz
dHJpbmdIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4o
KSkKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVl
PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQorICAgICwgZmFzdE1hbGxvY0Fs
bG9jYXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQor
ICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQorICAgICwganNWYWx1ZUdp
Z2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
PihHaWdhY2FnZTo6SlNWYWx1ZSkpCisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUobWFrZVVu
aXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpBdXhpbGlhcnkpKSkKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxs
VHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWRE
ZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCisgICAg
LCBjZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRl
cyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0
cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBzdHJp
bmdIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4oKSkKKyAgICAs
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlPigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAsIHdl
YkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNXZWJBc3Nl
bWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25I
ZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxU
eXBlPigpKQorICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUobWFrZVVuaXF1
ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlPigpKQorICAgICwgd2ViQXNzZW1i
bHlGdW5jdGlvbkhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGU+KCkpCiAjZW5kaWYKICAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGUuZ2V0KCksIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4
M2U3Y2Q3NjIKICAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwganNW
YWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgpAQCAtMjk2LDcg
KzI5Niw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAs
IG1fYXRvbVN0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCku
YXRvbVN0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbVN0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlO
YW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQotICAgICwgbWFjaGlu
ZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKHN0ZDo6bWFrZV91bmlxdWU8
U2ltcGxlU3RhdHM+KCkpCisgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9y
QmFzZWxpbmVKSVQobWFrZVVuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKICAgICAsIGN1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uTWFwKCp0aGlzKQogICAgICwgc3RyaW5nQ2FjaGUoKnRoaXMpCiAgICAg
LCBzeW1ib2xJbXBsVG9TeW1ib2xNYXAoKnRoaXMpCkBAIC0zMTIsOCArMzEyLDggQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbml0aWFsaXppbmdP
YmplY3RDbGFzcygwKQogI2VuZGlmCiAgICAgLCBtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeSgwKQot
ICAgICwgbV9jb2RlQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxDb2RlQ2FjaGU+KCkpCi0gICAgLCBt
X2J1aWx0aW5FeGVjdXRhYmxlcyhzdGQ6Om1ha2VfdW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4o
KnRoaXMpKQorICAgICwgbV9jb2RlQ2FjaGUobWFrZVVuaXF1ZTxDb2RlQ2FjaGU+KCkpCisgICAg
LCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhtYWtlVW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRo
aXMpKQogICAgICwgbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQoMCkKICAgICAsIG1fcHJpbWl0
aXZlR2lnYWNhZ2VFbmFibGVkKElzV2F0Y2hlZCkKICAgICAsIG1fY29udHJvbEZsb3dQcm9maWxl
ckVuYWJsZWRDb3VudCgwKQpAQCAtNDA3LDcgKzQwNyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMo
KnRoaXMpOwogICAgIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VQcm9maWxlcigpKSkg
ewotICAgICAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Zp
bGVyOjpEYXRhYmFzZT4oKnRoaXMpOworICAgICAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBt
YWtlVW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4oKnRoaXMpOwogCiAgICAgICAgIFN0cmluZ1By
aW50U3RyZWFtIHBhdGhPdXQ7CiAgICAgICAgIGNvbnN0IGNoYXIqIHByb2ZpbGVyUGF0aCA9IGdl
dGVudigiSlNDX1BST0ZJTEVSX1BBVEgiKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMuCiAg
ICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFycmF5
Q29udHJvbGxlcigpKTsKIAotICAgIG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeT4oKnRoaXMpOworICAgIG1fYnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeT4oKnRoaXMpOwogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVR5cGVQcm9maWxlcigpKQogICAg
ICAgICBlbmFibGVUeXBlUHJvZmlsZXIoKTsKQEAgLTQ0Miw5ICs0NDIsOSBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5H
X1BST0ZJTEVSKQogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVJhbmRvbWl6aW5nRnV6emVyQWdlbnQo
KSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxSYW5kb21pemluZ0Z1
enplckFnZW50PigqdGhpcykpOworICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFJh
bmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAgZWxzZSBpZiAoT3B0aW9uczo6dXNl
RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50KHN0
ZDo6bWFrZV91bmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOworICAg
ICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dD4oKnRoaXMpKTsKIAogICAgIGlmIChPcHRpb25zOjphbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3Jp
Z2luTWFwKCkpCiAgICAgICAgIHNldFNob3VsZEJ1aWxkUENUb0NvZGVPcmlnaW5NYXBwaW5nKCk7
CkBAIC00NTcsOSArNDU3LDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRo
YXQgdGhlIEpJVCBpcyBnb2luZyB0byB1c2UgYXJlIGluaXRpYWxpemVkIGluIG5vbi1jb21waWxh
dGlvbiB0aHJlYWRzLgogICAgIGlmIChjYW5Vc2VKSVQoKSkgewotICAgICAgICBqaXRTdHVicyA9
IHN0ZDo6bWFrZV91bmlxdWU8SklUVGh1bmtzPigpOworICAgICAgICBqaXRTdHVicyA9IG1ha2VV
bmlxdWU8SklUVGh1bmtzPigpOwogI2lmIEVOQUJMRShGVExfSklUKQotICAgICAgICBmdGxUaHVu
a3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZUTDo6VGh1bmtzPigpOworICAgICAgICBmdGxUaHVua3Mg
PSBtYWtlVW5pcXVlPEZUTDo6VGh1bmtzPigpOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQog
ICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ2FsbCk7
CiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDb25z
dHJ1Y3QpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIFdhdGNoZG9nJiBWTTo6ZW5zdXJlV2F0Y2hkb2co
KQogSGVhcFByb2ZpbGVyJiBWTTo6ZW5zdXJlSGVhcFByb2ZpbGVyKCkKIHsKICAgICBpZiAoIW1f
aGVhcFByb2ZpbGVyKQotICAgICAgICBtX2hlYXBQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SGVhcFByb2ZpbGVyPigqdGhpcyk7CisgICAgICAgIG1faGVhcFByb2ZpbGVyID0gbWFrZVVuaXF1
ZTxIZWFwUHJvZmlsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faGVhcFByb2ZpbGVyOwogfQog
CkBAIC0xMDQxLDggKzEwNDEsOCBAQCBzdGF0aWMgYm9vbCBkaXNhYmxlUHJvZmlsZXJXaXRoUmVz
cGVjdFRvQ291bnQodW5zaWduZWQmIGNvdW50ZXIsIGNvbnN0IEZ1bmMmIGRvRAogYm9vbCBWTTo6
ZW5hYmxlVHlwZVByb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZVR5cGVQcm9maWxlciA9IFt0
aGlzXSAoKSB7Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUeXBlUHJvZmlsZXI+KCk7Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gc3Rk
OjptYWtlX3VuaXF1ZTxUeXBlUHJvZmlsZXJMb2c+KCp0aGlzKTsKKyAgICAgICAgdGhpcy0+bV90
eXBlUHJvZmlsZXIgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+
bV90eXBlUHJvZmlsZXJMb2cgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlckxvZz4oKnRoaXMpOwog
ICAgIH07CiAKICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQobV90
eXBlUHJvZmlsZXJFbmFibGVkQ291bnQsIGVuYWJsZVR5cGVQcm9maWxlcik7CkBAIC0xMDYxLDcg
KzEwNjEsNyBAQCBib29sIFZNOjpkaXNhYmxlVHlwZVByb2ZpbGVyKCkKIGJvb2wgVk06OmVuYWJs
ZUNvbnRyb2xGbG93UHJvZmlsZXIoKQogewogICAgIGF1dG8gZW5hYmxlQ29udHJvbEZsb3dQcm9m
aWxlciA9IFt0aGlzXSAoKSB7Ci0gICAgICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEZsb3dQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+
bV9jb250cm9sRmxvd1Byb2ZpbGVyID0gbWFrZVVuaXF1ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigp
OwogICAgIH07CiAKICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQo
bV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyKTsKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHZvaWQgVk06OmR1bXBUeXBlUHJvZmlsZXJEYXRh
KCkKIAogdm9pZCBWTTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogewotICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZnbG9iYWxPYmplY3QsIFdURk1v
dmUodGFzaykpKTsKKyAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFF1ZXVl
ZFRhc2s+KCp0aGlzLCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQg
Vk06OmRyYWluTWljcm90YXNrcygpCkBAIC0xMjMwLDE0ICsxMjMwLDE0IEBAIHZvaWQgVk06OmVu
c3VyZVNoYWRvd0NoaWNrZW4oKQogewogICAgIGlmIChtX3NoYWRvd0NoaWNrZW4pCiAgICAgICAg
IHJldHVybjsKLSAgICBtX3NoYWRvd0NoaWNrZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0No
aWNrZW4+KCk7CisgICAgbV9zaGFkb3dDaGlja2VuID0gbWFrZVVuaXF1ZTxTaGFkb3dDaGlja2Vu
PigpOwogfQogCiAjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKICAgICBJc29TdWJzcGFjZSogVk06Om5hbWUj
I1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAg
IGF1dG8gc3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAgICAgICAg
bV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0
KCk7IFwKQEAgLTEyNjgsNyArMTI2OCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhCiAgICAg
SXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQo
IW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGFj
ZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAor
ICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAg
ICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDI0ZjE4YWQwMmRlMmZlZjkwMDkz
NDQ4NjQzMGM5OGZlOTQ5NDI0ZWYuLjUzMzkzY2IyNThmNzQyYzZhY2ZkZGVhZWM2YzcxNzU2NDRk
Nzk0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsKICAg
ICB2b2lkIGVtaXRQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJhc2ljQmxvY2ssIEIzOjpQYXRjaHBv
aW50VmFsdWUqIHBhdGNoLCBUbXAgcmVzdWx0LCBWZWN0b3I8Q29uc3RyYWluZWRUbXAsIGlubGlu
ZVNpemU+JiYgYXJncykKICAgICB7CiAgICAgICAgIGlmICghbV9wYXRjaHBvaW50U3BlY2lhbCkK
LSAgICAgICAgICAgIG1fcGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hw
b2ludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRj
aHBvaW50U3BlY2lhbD4oKSkpOworICAgICAgICAgICAgbV9wYXRjaHBvaW50U3BlY2lhbCA9IHN0
YXRpY19jYXN0PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VV
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKSk7CiAKICAgICAgICAgSW5zdCBpbnN0KFBh
dGNoLCBwYXRjaCwgQXJnOjpzcGVjaWFsKG1fcGF0Y2hwb2ludFNwZWNpYWwpKTsKICAgICAgICAg
SW5zdCByZXN1bHRNb3Y7CkBAIC00ODcsNyArNDg3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3Ig
ewogCiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIGEgaGFzaG1hcCBvZiB0aGVzZS4KICAgICAgICAg
QjM6OkNoZWNrU3BlY2lhbDo6S2V5IGtleShicmFuY2gpOwotICAgICAgICBCMzo6Q2hlY2tTcGVj
aWFsKiBzcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lhbCo+KG1fY29kZS5hZGRT
cGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkpOworICAgICAg
ICBCMzo6Q2hlY2tTcGVjaWFsKiBzcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lh
bCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgZm9yIGR1bW15IHZhbHVlcwog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQw
CkBAIC0yMTM5LDEwICsyMTM5LDEwIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6Om9yaWdpbigpIC0+
IEIzOjpPcmlnaW4KIAogRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+
LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZUFpcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0
aW9uQ29udGV4dCwgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9u
TGVuZ3RoLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIGluZm8sIE1lbW9yeU1vZGUgbW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVw
Q291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIAotICAg
IGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9p
bnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlv
bkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+
KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gbWFrZVVuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBCMzo6UHJvY2VkdXJlIHByb2NlZHVyZTsKICAgICBD
b2RlJiBjb2RlID0gcHJvY2VkdXJlLmNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAyMDk0MTc3ZWQ2ZjE4M2FiNGQ4NjJl
YzIyNjdkMzBmMjhiN2RlNWI2Li4xNThkZjlmYTlmMGM5ZjcyMWFjMjkyNzc4MTg4ZGNmMjhlNzA3
ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCkBAIC0xNTUxLDEwICsxNTUxLDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6b3JpZ2lu
KCkgLT4gT3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9u
PiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxl
bmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIENvbXBpbGF0aW9uTW9kZSBjb21waWxhdGlvbk1vZGUs
IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4
Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5p
cXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRk
ZXJFbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAg
Y29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxD
Q2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2lu
dEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4
dC53YXNtRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAg
UHJvY2VkdXJlIHByb2NlZHVyZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uY3BwCmluZGV4IGY5ODVkNTIzYzJlOTNmM2JkMjNmYjdjNTcxMmI1ODY4Y2MxNmE2ODUu
LjUwNmRmNGJlZmQwZDU2NDE4NDRjZTUyNzk1MTE1ZjYxMjg3MTYxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lk
IEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5jb21w
aWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAgICAgICAg
ICAgICBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5j
b21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgICAgICAg
ICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2Vi
QXNzZW1ibHkgQkJRIGZ1bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRleCwgc2ln
bmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUo
ZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0
KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAgICAgICAg
ICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAg
ICAgIH0KQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVu
Y3Rpb24tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21w
aWxhdGlvbj4oCisgICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9u
LT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAog
ICAgICAgICAgICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRp
b25QdHJUYWcsICJFbWJlZGRlci0+V2ViQXNzZW1ibHkgZW50cnlwb2ludFslaV0gJXMgbmFtZSAl
cyIsIGZ1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBt
YWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1h
dGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRh
KCkpLAogICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQuZW1iZWRkZXJFbnRyeXBv
aW50Qnlwcm9kdWN0cykpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IGM1MTNmZDJmNTBlZDZmYjE3YzMzODVlZjI5MDUyNzgx
NzM5MjEwMzcuLjBkN2EwM2MzNjEyOWNkMWRlMmM1NGZmY2Q1MDI5NWI1NmM1Yjg5OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgb21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICBvbWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFr
ZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBPTUcgZnVuY3Rpb25bJWldICVz
IG5hbWUgJXMiLCBtX2Z1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCku
ZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1
bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNj
aWkoKS5kYXRhKCkpLAogICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXBy
b2R1Y3RzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21X
b3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3Bw
CmluZGV4IDM2ZDc0YzE0YjE4YzcwN2I4MTJhMDQ4N2Y5MWUyOWMzODUzOTFkZTIuLjY2MGY5NTY1
NzM4YjEwYTMwZjNlN2NjODE4YTMyYzg1ODc4MjEyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIFdvcmtsaXN0OjpX
b3JrbGlzdCgpCiAgICAgbV90aHJlYWRzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkNvbXBpbGF0
aW9uVGhyZWFkcyk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzOyBpKyspCi0gICAg
ICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGlzdDo6
VGhyZWFkPihsb2NrZXIsICp0aGlzKSk7CisgICAgICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBl
bmQobWFrZVVuaXF1ZTxXb3JrbGlzdDo6VGhyZWFkPihsb2NrZXIsICp0aGlzKSk7CiB9CiAKIFdv
cmtsaXN0Ojp+V29ya2xpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dh
c20uY3BwCmluZGV4IDVkZDQ1MWJlYTg0ZDU5MGJiZjBmY2IwNzZlMjZmZmQzY2M3YjgxYWMuLjcz
NTIyMDI4OTM3YzZkYWMxZmM0NzNjN2U0Y2RjNjQ5NThjZThlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEludGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlv
bkNvbnRleHQmIGNvbXAKIHsKICAgICBDQ2FsbEhlbHBlcnMmIGppdCA9ICpjb21waWxhdGlvbkNv
bnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5p
cXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7
CiAKICAgICAvLyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXggN2YwMzNmZWMxYzM2OWE5NDIzYjMz
Y2Y4ZWIzMzM0YzUxY2UwODA4Yi4uYzRiNzdjYWRiZTVlZWE1NzNlYzg1MmI5NWVmNmE3ODliODI4
NTM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIu
Y3BwCkBAIC0xNzA2LDcgKzE3MDYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICAg
ICAgZHVtcERpc2p1bmN0aW9uKG1fYm9keURpc2p1bmN0aW9uLmdldCgpKTsKICNlbmRpZgogCi0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4oV1RGTW92ZSht
X2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRlcm4sIGFsbG9j
YXRvciwgbG9jayk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4o
V1RGTW92ZShtX2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRl
cm4sIGFsbG9jYXRvciwgbG9jayk7CiAgICAgfQogCiAgICAgdm9pZCBjaGVja0lucHV0KHVuc2ln
bmVkIGNvdW50KQpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAg
ICAgICAgdW5zaWduZWQgc3VicGF0dGVybklkID0gcGFyZW50aGVzZXNCZWdpbi5hdG9tLnN1YnBh
dHRlcm5JZDsKIAogICAgICAgICB1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IGxhc3RTdWJwYXR0
ZXJuSWQgLSBzdWJwYXR0ZXJuSWQgKyAxOwotICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVu
Y3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMs
IGNhbGxGcmFtZVNpemUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBt
YWtlVW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUp
OwogCiAgICAgICAgIHVuc2lnbmVkIGZpcnN0VGVybUluUGFyZW50aGVzZXMgPSBiZWdpblRlcm0g
KyAxOwogICAgICAgICBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT50ZXJtcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGVuZFRlcm0gLSBmaXJzdFRlcm1JblBhcmVudGhlc2VzICsgMik7CkBAIC0xOTk3
LDcgKzE5OTcsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogCiAgICAgdm9pZCByZWdleEJlZ2lu
KHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zLCB1bnNpZ25lZCBjYWxsRnJhbWVTaXplLCBib29sIG9u
Y2VUaHJvdWdoKQogICAgIHsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwor
ICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihu
dW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm06OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKG9uY2VUaHJvdWdo
KSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1swXS5mcmFtZUxvY2F0aW9uID0g
MDsKICAgICAgICAgbV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IDdhN2MyMDZjN2U0MzU5N2NmZTRjNGQ0ZGNhOGEw
N2FjNWFjMWY2NjAuLjhhYjYyYjdiYTM5ODEwNTFlYmJkYWNkNmU0N2EwNThhYWRkM2Q5YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0zODk5LDcgKzM4OTksNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpk
dW1wRGlzYXNzZW1ibHkoKSB8fCBPcHRpb25zOjpkdW1wUmVnRXhwRGlzYXNzZW1ibHkoKSkpCi0g
ICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8WWFyckRpc2Fzc2Vt
Ymxlcj4odGhpcyk7CisgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8WWFy
ckRpc2Fzc2VtYmxlcj4odGhpcyk7CiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAg
ICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldFN0YXJ0T2ZDb2RlKGxhYmVsKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IDQ5Zjc3ZjY5YzY4NWM2
NTIwM2RmM2YwMzRjOTBkMTg3N2M5MmRjOWIuLmZjYzUxYjI3N2Y1MDExMDNiN2M2NWJiZDMzYTVj
YTQxMGQ4MWMwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5j
cHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBjbGFzcyBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yIHsK
ICAgICB7CiAgICAgICAgIGNvYWxlc2NlVGFibGVzKCk7CiAKLSAgICAgICAgYXV0byBjaGFyYWN0
ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAgICAgIGF1
dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwogCiAgICAg
ICAgIGNoYXJhY3RlckNsYXNzLT5tX21hdGNoZXMuc3dhcChtX21hdGNoZXMpOwogICAgICAgICBj
aGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuc3dhcChtX3Jhbmdlcyk7CkBAIC00NDEsNyArNDQxLDcg
QEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICwgbV9jaGFyYWN0ZXJD
bGFzc0NvbnN0cnVjdG9yKHBhdHRlcm4uaWdub3JlQ2FzZSgpLCBwYXR0ZXJuLnVuaWNvZGUoKSA/
IENhbm9uaWNhbE1vZGU6OlVuaWNvZGUgOiBDYW5vbmljYWxNb2RlOjpVQ1MyKQogICAgICAgICAs
IG1fc3RhY2tMaW1pdChzdGFja0xpbWl0KQogICAgIHsKLSAgICAgICAgYXV0byBib2R5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgIGF1dG8gYm9keSA9
IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4ubV9i
b2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0Fs
dGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RG
TW92ZShib2R5KSk7CkBAIC00NTYsNyArNDU2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciB7CiAgICAgICAgIG1fcGF0dGVybi5yZXNldEZvclJlcGFyc2luZygpOwogICAgICAgICBt
X2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IucmVzZXQoKTsKIAotICAgICAgICBhdXRvIGJvZHkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBi
b2R5ID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVy
bi5tX2JvZHkgPSBib2R5LmdldCgpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRk
TmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVu
ZChXVEZNb3ZlKGJvZHkpKTsKQEAgLTYwOCw3ICs2MDgsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNv
bnN0cnVjdG9yIHsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NFUlQoIW9wdEdyb3Vw
TmFtZSk7CiAKLSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRv
IHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4o
bV9hbHRlcm5hdGl2ZSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBh
dHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0
ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGZhbHNlKSk7CiAg
ICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRl
cm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1v
dmUocGFyZW50aGVzZXNEaXNqdW5jdGlvbikpOwpAQCAtNjE2LDcgKzYxNiw3IEBAIGNsYXNzIFlh
cnJQYXR0ZXJuQ29uc3RydWN0b3IgewogCiAgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkJlZ2luKGJvb2wgaW52ZXJ0ID0gZmFsc2UpCiAgICAgewotICAgICAgICBhdXRvIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4o
bV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1h
a2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKICAgICAgICAgbV9h
bHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQ
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uLCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDEsIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGZhbHNlLCBpbnZlcnQpKTsKICAgICAgICAgbV9h
bHRlcm5hdGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7
CiAgICAgICAgIG1faW52ZXJ0UGFyZW50aGV0aWNhbEFzc2VydGlvbiA9IGludmVydDsKQEAgLTcw
Nyw3ICs3MDcsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAg
IFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5h
dGl2ZXNbYWx0XS5nZXQoKTsKICAgICAgICAgICAgIGlmICghZmlsdGVyU3RhcnRzV2l0aEJPTCB8
fCAhYWx0ZXJuYXRpdmUtPm1fc3RhcnRzV2l0aEJPTCkgewogICAgICAgICAgICAgICAgIGlmICgh
bmV3RGlzanVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgICAgICAgICAg
ICAgbmV3RGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAg
ICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24tPm1fcGFyZW50ID0gZGlzanVuY3Rpb24t
Pm1fcGFyZW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0
ZXJuYXRpdmUqIG5ld0FsdGVybmF0aXZlID0gbmV3RGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0
aXZlKCk7CkBAIC0xNDczLDcgKzE0NzMsNyBAQCB2b2lkIFlhcnJQYXR0ZXJuOjpkdW1wUGF0dGVy
bihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxDaGFyYWN0ZXJDbGFzcz4gYW55Y2hhckNyZWF0ZSgpCiB7Ci0gICAgYXV0byBj
aGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAg
YXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAgICAg
Y2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwLCAweDdm
KSk7CiAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVy
UmFuZ2UoMHgwMDgwLCAweDEwZmZmZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX2NoYXJhY3Rl
cldpZHRocyA9IENoYXJhY3RlckNsYXNzV2lkdGhzOjpIYXNCb3RoQk1QQW5kTm9uQk1QOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggMGI3ZGIyZWJhOGFkNTJk
ZWQyYjVmN2U2N2U1NDViOGMxNmM5NDVjNy4uN2U4MmM4NTVhODc4ZTZjMTgwZWQ1MjFmMWY3YWQ0
OGQ4YzFmYmFjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCkBA
IC0zNDEsNyArMzQxLDcgQEAgc3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbiB7CiAgICAgCiAgICAg
UGF0dGVybkFsdGVybmF0aXZlKiBhZGROZXdBbHRlcm5hdGl2ZSgpCiAgICAgewotICAgICAgICBt
X2FsdGVybmF0aXZlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+
KHRoaXMpKTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGF0dGVy
bkFsdGVybmF0aXZlPih0aGlzKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYXR0ZXJu
QWx0ZXJuYXRpdmUqPihtX2FsdGVybmF0aXZlcy5sYXN0KCkuZ2V0KCkpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKaW5kZXggYzFm
OWY5OWRlMDkxY2VjYjJlMWRiNTVjMzhmYTM2MDMxMWVlMzdmNC4uNjljZDg4ODY1Nzg1NGNkNTQ0
NWY4NjNlMjJkNTVmZmI5YzQwZWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9jcmVhdGVfcmVnZXhfdGFibGVzCkBAIC05NSwxMSArOTUsMTEgQEAgZm9yIG5hbWUsIGNsYXNz
ZXMgaW4gdHlwZXMuaXRlbXMoKToKICAgICBmdW5jdGlvbiArPSAoIntcbiIpCiAgICAgaWYgZW1p
dFRhYmxlcyBhbmQgY2xhc3Nlc1siVXNlVGFibGUiXToKICAgICAgICAgaWYgIkludmVyc2UiIGlu
IGNsYXNzZXM6Ci0gICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgdHJ1ZSk7XG4i
ICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBh
dXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwg
dHJ1ZSk7XG4iICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkKKyAgICAg
ICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVl
PENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQogICAgIGVsc2U6
Ci0gICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1h
a2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpO1xuIikKKyAgICAgICAgZnVuY3Rpb24gKz0gKCIg
ICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7XG4i
KQogICAgIGhhc0JNUENoYXJhY3RlcnMgPSBGYWxzZQogICAgIGhhc05vbkJNUENoYXJhY3RlcnMg
PSBGYWxzZQogICAgIGZvciAobWluLCBtYXgpIGluIHJhbmdlczoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0
eVRhYmxlcy5weQppbmRleCBmOWZlZjQ2OGQyYjVkZGE2YWFlZWFiMGIzZmMwNThjZDNlZWNlYWMx
Li41MjZmYjZlN2FjM2EyMjdhNmQ0M2NiYmVmZDI3MDJkMWEwYzU0Y2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJs
ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29k
ZVByb3BlcnR5VGFibGVzLnB5CkBAIC01MjksNyArNTI5LDcgQEAgZGVmIGR1bXBNYXRjaERhdGEo
c2VsZiwgZmlsZSwgdmFsdWVzUGVyTGluZSwgZGF0YUxpc3QsIGZvcm1hdHRlcik6CiAgICAgZGVm
IGR1bXAoc2VsZiwgZmlsZSwgY29tbWFBZnRlcik6CiAgICAgICAgIGZpbGUud3JpdGUoInN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IHt9KClcbnt7XG4iLmZvcm1hdChzZWxm
LmdldENyZWF0ZUZ1bmNOYW1lKCkpKQogICAgICAgICBmaWxlLndyaXRlKCIgICAgLy8gTmFtZSA9
IHt9LCBudW1iZXIgb2YgY29kZVBvaW50czoge31cbiIuZm9ybWF0KHNlbGYubmFtZSwgc2VsZi5j
b2RlUG9pbnRDb3VudCkpCi0gICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQorICAgICAgICBmaWxl
LndyaXRlKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xh
c3M+KFxuIikKICAgICAgICAgZmlsZS53cml0ZSgiICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VUNoYXIzMj4oIikKICAgICAgICAgc2VsZi5kdW1wTWF0Y2hEYXRhKGZpbGUsIDgsIHNlbGYu
bWF0Y2hlcywgbGFtYmRhIGZpbGUsIG1hdGNoOiAoZmlsZS53cml0ZSgiezA6MD0jNHh9Ii5mb3Jt
YXQobWF0Y2gpKSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiksXG4iKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwIGIvU291cmNlL1dURi9iZW5j
aG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCmluZGV4IGNjNzA3ZGUzZmY0ZWMxMzhjZmE0NmFi
NGM4ZTEzYWJiNjU5M2NiYTEuLjhjOTdjMWEyNDFiNzI5YWY4ZjMxZjM1OWM3ZjUxNzdhNjM0MDlk
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAKQEAgLTYx
LDggKzYxLDggQEAgc3RydWN0IEJlbmNobWFyayB7CiAgICAgc3RhdGljIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIG5hbWUpCiAgICAgewogICAgICAgICBMb2NrVHlwZSBsb2NrOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dW5zaWduZWRbXT4gY291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25l
ZFtdPihudW1UaHJlYWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+
W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVh
ZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWRbXT4gY291bnRzID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CiAg
ICAgCiAgICAgICAgIHZvbGF0aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1ZTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcCBiL1NvdXJjZS9X
VEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAppbmRleCBmMTU2NTBkNGM5YzhmYTY3NzBm
ODkxMmYwOWRmZTM5MjkxMzA3YzM0Li5iZTdhYmEzOTBlYjUzZTM1ODFlMzZmNGE4Yjk1MDBkMGUy
OTlmOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5j
cHAKKysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCkBAIC03NCw5
ICs3NCw5IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tU
eXBlPgogICAgIHN0YXRpYyB2b2lkIHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPiBsb2NrcyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxkb3VibGU+W10+IHdvcmRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxXaXRoUGFkZGluZzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRz
UGVyR3JvdXApOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+
W10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2l0aFBhZGRpbmc8
TG9ja1R5cGU+W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxX
aXRoUGFkZGluZzxkb3VibGU+W10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51
bVRocmVhZHNQZXJHcm91cCk7CiAKICAgICAgICAgdm9sYXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0
cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmggYi9T
b3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKaW5kZXggMGI1NDFiOGM3M2QwZjU5ODY1
MWJmOTVlNzY5M2I4MDdjOTk5Zjc4YS4uODg0ZWQ3MzIzMzc2MWEyOWZiNDk2ZjBhZDA5ODk2NzU0
NWU3MDM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaApAQCAtMjU0LDcgKzI1NCw3IEBA
IGNsYXNzIENvbmN1cnJlbnRWZWN0b3IgZmluYWwgewogICAgIHZvaWQgYWxsb2NhdGVTZWdtZW50
KCkKICAgICB7CiAgICAgICAgIG1fc2VnbWVudHMuZ3JvdyhtX251bVNlZ21lbnRzICsgMSk7Ci0g
ICAgICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vn
bWVudD4oKTsKKyAgICAgICAgbV9zZWdtZW50c1ttX251bVNlZ21lbnRzKytdID0gbWFrZVVuaXF1
ZTxTZWdtZW50PigpOwogICAgIH0KIAogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCmluZGV4IDgzYzIwNzUxZjg1ZjRlNGQy
MDE1NjE0NDFjYTgzMTQxY2I1YzM3ZmYuLmM2M2MwNTVhMGEwMzQxZGY2YTVhZjI3MGE0YWNjYjhk
NTdkNzg0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3Ao
KQogCiAgICAgd2hpbGUgKCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKSB7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9kcmFpbmVkUG9v
bCA9IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpV
c2UpID8gc3RkOjptYWtlX3VuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOworICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29s
ID0gKG1fdXNlQXV0b2RyYWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVz
ZSkgPyBtYWtlVW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CiAKICAgICAgICAg
ICAgIG1fdGFza1F1ZXVlLndhaXRGb3JNZXNzYWdlKCkucGVyZm9ybVRhc2soKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93
dGYvRmFzdE1hbGxvYy5oCmluZGV4IGVmZWZiM2EzMTMzZTgzZjY0MzM2ZmQyZWMyZGE1MmE1NDgz
MmU2MjEuLjk1YjY3NTk3MmQzMTBlM2RkYmQ0MTNkNGE4ZjhkMTI4OGYyMGZhZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmgKQEAgLTMwMSw5ICszMDEsMTEgQEAgdXNpbmcgV1RGOjpmYXN0QWxpZ25lZEZyZWU7
CiAjZGVmaW5lIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIFwKIHB1YmxpYzogXAogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xh
c3M7IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm8KIAogI2RlZmluZSBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQgXAogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19m
YXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2Vt
aWNvbG9uQWZ0ZXJUaGlzTWFjcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmlu
dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCmluZGV4IDNl
MjUzY2YyYWMyMTljYzg1NTg0ZDQyYzQ1MWVmYzdjYTc5YjY0ZWEuLjcwNzRjMDNhYmFmOGZjZjM5
NzdmMmIxMWFiOWMzZDZlMzgxNjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQ
cmludFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcApA
QCAtNDcsNyArNDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVByaW50U3RyZWFtPiBGaWxlUHJp
bnRTdHJlYW06Om9wZW4oY29uc3QgY2hhciogZmlsZW5hbWUsIGNvbgogICAgIGlmICghZmlsZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlUHJpbnRTdHJlYW0+KGZpbGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpbGVQcmludFN0
cmVhbT4oZmlsZSk7CiB9CiAKIHZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKGNvbnN0IGNo
YXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RnVuY3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKaW5kZXggMDVlMzY5NzgyNWJj
M2QzNDlmNDhkNjhjMzJhNjg2MjI1NWZiNTgzZS4uMGI3OTU4Njc0ODBmZDAzMjI0MTI0NTRlN2Qw
YWY4MzM4ZDZlM2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCkBAIC02NywxMSArNjcsMTEgQEAgY2xhc3MgRnVu
Y3Rpb248T3V0KEluLi4uKT4gewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBl
LCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCEoc3RkOjppc19wb2ludGVyPENhbGxh
YmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVf
cG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0eXBlPjo6dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVlX3Jl
ZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbihDYWxs
YWJsZVR5cGUmJiBjYWxsYWJsZSkKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6Om1h
a2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4u
Lj4+KFdURk1vdmUoY2FsbGFibGUpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIo
bWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxGdW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBG
dW5jdGlvbihGdW5jdGlvblR5cGUgZikKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6
Om1ha2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJ
bi4uLj4+KFdURk1vdmUoZikpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtl
VW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+
KFdURk1vdmUoZikpKSB7IH0KIAogICAgIE91dCBvcGVyYXRvcigpKEluLi4uIGluKSBjb25zdAog
ICAgIHsKQEAgLTg0LDE0ICs4NCwxNCBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4pPiB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCEoc3RkOjppc19wb2ludGVyPENhbGxhYmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6
aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0
eXBlPjo6dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46
OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlwZSYmIGNh
bGxhYmxlKQogICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdU
Rk1vdmUoY2FsbGFibGUpKTsKKyAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVl
PERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1v
dmUoY2FsbGFibGUpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlv
bjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1
ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShGdW5jdGlvblR5cGUgZikKICAgICB7
Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNh
bGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKKyAg
ICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFw
cGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDNiMWU5NTMwM2RlNTQwNTE0M2Zi
NTYzY2NiODA0N2U1YWNlYWQwYjMuLmE0ZDA3N2Y4NGYwMmExZmExYzFiZTAzNGE4NmViMzUwZDZk
N2Y0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5oCkBAIC01ODgsMTAgKzU4OCwxMCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVS
QVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9ycygwKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjpt
YWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigp
KQogI2VuZGlmCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwg
bV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigpKQorICAgICAgICAsIG1fc3RhdHMobWFr
ZVVuaXF1ZTxTdGF0cz4oKSkKICNlbmRpZgogICAgIHsKICAgICB9CkBAIC0xMzM0LDEwICsxMzM0
LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCiAjaWYg
Q0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKG51bGxwdHIp
Ci0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwg
bV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICNpZiBEVU1QX0hBU0hUQUJMRV9T
VEFUU19QRVJfVEFCTEUKLSAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFrZV91bmlxdWU8U3RhdHM+
KCpvdGhlci5tX3N0YXRzKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCpv
dGhlci5tX3N0YXRzKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgdW5zaWduZWQgb3RoZXJLZXlD
b3VudCA9IG90aGVyLnNpemUoKTsKQEAgLTEzODIsNyArMTM4Miw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgIGlubGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShIYXNoVGFibGUmJiBvdGhlcikKICNp
ZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgIDogbV9pdGVyYXRvcnMobnVsbHB0
cikKLSAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAg
LCBtX211dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgb3Ro
ZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAKaW5kZXggOWU4NzIwZjZkOWE3OTgwYjk1ZTViMTNjNWU2NTVjMzg5NDkzMDRiNS4u
NTM3OWMwYTRkNWM4YzZmMzY3ZDkxNjk2ZTBkNmExOGM1ZDlmZWMwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1
c2UpCiAgICAgfQogCiAgICAgaWYgKHVzZSkgewotICAgICAgICBtX21lYXN1cmVtZW50VGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4+
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1l
bnRUaW1lckZpcmVkKTsKKyAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbWFrZVVuaXF1ZTxS
dW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CiAgICAg
ICAgIG1fbWVhc3VyZW1lbnRUaW1lci0+c3RhcnRSZXBlYXRpbmcoMzBfcyk7CiAgICAgfSBlbHNl
CiAgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5o
CmluZGV4IGFmNjVlMDhjYTg4MDI0MGVhOWYxOWMzYzFmYzFmZGM1N2FiNGQ0YWIuLmRlZjgzNDBl
M2M4YWNjODU4NmRhNGYwMGJiOGU5ZGM1NmUwMTNlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBA
IC01NjUsNiArNTY1LDI0IEBAIGNvbnN0ZXhwciBzaXplX3QgY2x6KHVpbnQzMl90IHZhbHVlLCBa
ZXJvU3RhdHVzIG1pZ2h0QmVaZXJvID0gWmVyb1N0YXR1czo6TWF5QmVaCiAKIH0gLy8gbmFtZXNw
YWNlIHN0ZAogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4g
QXJncz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZShBcmdzJiYuLi4g
YXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zh
c3RBbGxvY2F0ZWRDbGFzcywgaW50Pjo6dmFsdWUpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IFQsIGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKICNkZWZpbmUgV1RGTW92ZSh2YWx1ZSkgc3RkOjptb3ZlPFdU
Rjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSkKIAogdXNpbmcgV1RGOjpLQjsKQEAgLTU4NSwz
ICs2MDMsNSBAQCB1c2luZyBXVEY6Om1lcmdlRGVkdXBsaWNhdGVkU29ydGVkOwogdXNpbmcgV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mOwogdXNpbmcgV1RGOjpzYWZlQ2FzdDsKIHVzaW5nIFdURjo6
dHJ5QmluYXJ5U2VhcmNoOwordXNpbmcgV1RGOjptYWtlVW5pcXVlOwordXNpbmcgV1RGOjptYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1N0cmVhbUJ1ZmZlci5oIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKaW5kZXggMjZi
YmM4ZmQ2N2E0OTM0NjMyMjFkNjE5NjE4ZWI3YzY0Njg2NDAzMC4uY2EzM2Y4NjdkMzhiNTc1OTIw
MTQxZDUyM2MzMDdhYWU3YzgyMGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RyZWFt
QnVmZmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKQEAgLTYwLDcgKzYw
LDcgQEAgY2xhc3MgU3RyZWFtQnVmZmVyIHsKICAgICAgICAgbV9zaXplICs9IHNpemU7CiAgICAg
ICAgIHdoaWxlIChzaXplKSB7CiAgICAgICAgICAgICBpZiAoIW1fYnVmZmVyLnNpemUoKSB8fCBt
X2J1ZmZlci5sYXN0KCktPnNpemUoKSA9PSBCbG9ja1NpemUpCi0gICAgICAgICAgICAgICAgbV9i
dWZmZXIuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCkpOworICAgICAgICAgICAgICAg
IG1fYnVmZmVyLmFwcGVuZChtYWtlVW5pcXVlPEJsb2NrPigpKTsKICAgICAgICAgICAgIHNpemVf
dCBhcHBlbmRTaXplID0gc3RkOjptaW4oQmxvY2tTaXplIC0gbV9idWZmZXIubGFzdCgpLT5zaXpl
KCksIHNpemUpOwogICAgICAgICAgICAgbV9idWZmZXIubGFzdCgpLT5hcHBlbmQoZGF0YSwgYXBw
ZW5kU2l6ZSk7CiAgICAgICAgICAgICBkYXRhICs9IGFwcGVuZFNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCmlu
ZGV4IDczZTlkZmVjMDZmZDc4N2YzYjA2YjNkYzlkYTY1YTU1MDRkMWMwMjkuLjY1OTEyNTFiODYy
N2RmMzZjZjJlYjlmNzQ3OTNlZjQ4OWNhMWU5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZVJlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCkBAIC0zMywxMSAr
MzMsMTggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBVbmlx
dWVSZWY7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+Ci1VbmlxdWVSZWY8
VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVl
UmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKIHsKICAgICByZXR1cm4g
VW5pcXVlUmVmPFQ+KCpuZXcgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KK1VuaXF1ZVJlZjxUPiBtYWtlVW5p
cXVlUmVmKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PHR5cGVuYW1lIFQ6Ol9fZmFzdEFsbG9jYXRlZENsYXNzLCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFQ+KHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBVbmlxdWVS
ZWYgewogcHVibGljOgpAQCAtNjMsNyArNzAsNyBAQCBjbGFzcyBVbmlxdWVSZWYgewogICAgIHN0
ZDo6dW5pcXVlX3B0cjxUPiBtb3ZlVG9VbmlxdWVQdHIoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVm
KTsgfQogCiBwcml2YXRlOgotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZy
aWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOworICAgIHRlbXBsYXRl
PGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBV
PiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5pcXVlUmVmKFQmIG90aGVyKQpAQCAt
NzksMyArODYsNCBAQCBjbGFzcyBVbmlxdWVSZWYgewogCiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsK
IHVzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZjsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxv
b3BHTGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCmluZGV4IDVl
NWJhOGFiZWJkYmQ0OWJiYjgzN2RkNGM0ZmQ2OWJkNmZmYzM2MWYuLmZiMjExZDBhMjk2MWRmYzE2
YWE2ZTIxYTIxYTk3NGRmZjE1MjY5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
UnVuTG9vcEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMg
ZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBnX3NvdXJjZV9zZXRf
bmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKICAg
ICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190
aW1lKCkgKyBkdXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGF0
Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBnX3NvdXJjZV9zZXRfY2Fs
bGJhY2soc291cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQoc3Rh
dGljX2Nhc3Q8RGlzcGF0Y2hBZnRlckNvbnRleHQqPih1c2VyRGF0YSkpOwogICAgICAgICBjb250
ZXh0LT5kaXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZGNiYTA2
MDgyYzVmNjZlMzE5YTE1ZWU1OTdmYzY0OTc2NmIwNWU2Yy4uNWJmNGU2ZDAxZGU4NDNlZDI4Nzg4
M2VhM2EwM2U4NDk0OTNiZWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0x
NzksNyArMTc5LDcgQEAgY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0
b3I6OkltcGwgewogfTsKIAogU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6
Okl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQot
ICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmll
dy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJy
ZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykp
LCBpbmRleCkpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJp
bmdWaWV3LmlzTnVsbCgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdW
aWV3KSksIGluZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZl
c3RQYXJzZXIuY3BwCmluZGV4IGZkYjhjZTI5MmQ3MzhkYTQyMDM4YWE5NjVhZjNhY2ExNzhhODBj
ZWIuLjhkYzc2ZmEyZTU5ZWE2N2UwMjE3MzhjMzExYTM1NzdmNGQzNmU2OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1h
bmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
dm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFByb3BlcnR5SW52YWxp
ZFVSTChjb25zdCBTdHJpbmcmIHByb3AKIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6
bG9nRGV2ZWxvcGVyV2FybmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1f
Y29uc29sZUNvbnRleHQpCi0gICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNz
YWdlU291cmNlOjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZl
bDo6V2FybmluZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3Ms
IG1fbWFuaWZlc3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVzc2FnZSkpKTsKKyAgICAgICAgbV9j
b25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBKU0M6Ok1lc3NhZ2VUeXBl
OjpMb2csIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJQYXJzaW5nIGFw
cGxpY2F0aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5zdHJpbmcoKSwgIjogIl9zLCBt
ZXNzYWdlKSkpOwogfQogCiBVUkwgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VTdGFy
dFVSTChjb25zdCBKU09OOjpPYmplY3QmIG1hbmlmZXN0LCBjb25zdCBVUkwmIGRvY3VtZW50VVJM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVh
Y29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5j
cHAKaW5kZXggOWJmYTVmOTQ5OTRiMDU0NTA2YjgyNmEzMTRiODI1ODI3ZWE0MWFkYi4uN2U0Zjc5
NDcxZTJjNTlmZTcxYzE0ODEzMmY0YjU1MWQ4ZmZjNzkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC01Miw3ICs1Miw3IEBA
IE5hdmlnYXRvckJlYWNvbiogTmF2aWdhdG9yQmVhY29uOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdh
dG9yKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JCZWFj
b24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmln
YXRvcik7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAg
ICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01XaW5kb3dDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01X
aW5kb3dDYWNoZXMuY3BwCmluZGV4IDVlZDFmNWNjYTY0MWViMDRlYzBlMGEwY2UwNmM4MzcyNDU2
OGEyZmYuLjYxNTM5NDMwZGZiOTYxNmZkMjg4ZmVkOTJjYjk0NGZmNDQ2YjAxMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgRE9NV2luZG93Q2FjaGVzKiBET01XaW5kb3dDYWNoZXM6OmZyb20oRE9NV2lu
ZG93KiB3aW5kb3cpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdp
bmRvd0NhY2hlcyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5k
b3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dv
cmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcAppbmRleCAwNjU2YmVmMGIxNzE4ZTMzZGJjN2ZhMGVl
NjBjNTdkNDhlMzhkNGU4Li41MTE4YTQ4ODUwZjI0MmQwNDRkM2I0MGZmMGUzYjIzYmI5NmUyOGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNj
b3BlQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckds
b2JhbFNjb3BlQ2FjaGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBXb3JrZXJHbG9iYWxTY29wZUNh
Y2hlcyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20oV29ya2VyR2xvYmFsU2NvcGUmIHNj
b3BlKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlcyo+KFN1cHBsZW1lbnQ8V29ya2VyR2xvYmFsU2NvcGU+Ojpmcm9tKCZzY29wZSwg
c3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVz
PihzY29wZSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXM+KHNjb3BlKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JD
cmVkZW50aWFscy5jcHAKaW5kZXggNzFmNDM4Y2Y3ODZjNzZkN2I1ODcyMTU1OTc2NjhiNjIzNjFi
NTk5My4uMTE4MWJkOTg1YTIyYmE0OTNmODM2MzFkN2U0MWZlZTg3OWI1NmIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JD
cmVkZW50aWFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFu
YWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTmF2aWdh
dG9yQ3JlZGVudGlhbHMqIE5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKE5hdmlnYXRvciogbmF2
aWdhdG9yKQogewogICAgIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8TmF2aWdhdG9yQ3JlZGVudGlhbHMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yQ3Jl
ZGVudGlhbHM+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2
aWdhdG9yQ3JlZGVudGlhbHM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCBi
NmZkNjhkNjcyZWRlMzg3NzhjMTVjNmZlYWFmNDZiNDU1ZTVhMWNkLi43NWVkYjZhOTM2Mzg4MGU1
ODdjMzU3NTZiMTRkZWM5ZjliNDVlNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTEzMyw3
ICsxMzMsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgICAgICBhdXRvIHN5c3RlbUlE
ID0gSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVrU3lzdGVtSUQodmll
dywgb2Zmc2V0KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAg
ICAgICAgIGlmIChzeXN0ZW1JRCA9PSBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6OmZhaXJQ
bGF5U3lzdGVtSUQoKSkgewotICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gc3RkOjptYWtlX3Vu
aXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CisgICAgICAgICAgICBhdXRvIGZw
c1Bzc2ggPSBtYWtlVW5pcXVlPElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveD4oKTsKICAgICAg
ICAgICAgIGlmICghZnBzUHNzaC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBwc3NoQm94ZXMuYXBwZW5kKFdURk1v
dmUoZnBzUHNzaCkpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRh
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oc3lzdGVtSUQpOwogI2VuZGlmCi0gICAgICAg
IGF1dG8gcHNzaEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94PigpOworICAgICAgICBhdXRvIHBzc2hCb3ggPSBtYWtlVW5pcXVlPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKICAgICAgICAgaWYgKCFwc3NoQm94
LT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmNwcAppbmRleCA4MjYyODkzZmUwYWY5OTkxNGVkMzllOTYwY2YxMGE3
NTM0MDcwNWI2Li44MzdkZjEyM2FlNTk2ZjM1MzdjOTE1MjcwM2UzZDI3MWIzNDZlYjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHAKQEAgLTYxLDE1ICs2MSwxNSBAQCBzdHJ1Y3QgQ0RNRmFjdG9yeSB7
CiBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCkKIHsK
ICAgICBzdGF0aWMgYXV0byBjZG1zID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxDRE1GYWN0
b3J5Kj4gewotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCisg
ICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5p
cXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKICAgICAgICAgICAgIExlZ2Fj
eUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeUNETVByaXZhdGVD
bGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICAgICAgICAgLy8gRklY
TUU6IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkz
MTgsIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtd
KExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRp
YVBsYXllcj4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBj
ZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LAog
ICAgICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RN
UHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogI2lm
IChIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pIHx8IEhBVkUoQVZTVFJFQU1TRVNTSU9OKSkgJiYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RN
KiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQz4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2RtKTsg
fSwKICAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5
U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbUFu
ZE1pbWVUeXBlKSwKICNlbmRpZgogICAgIH0pOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE0+IExlZ2FjeUNETTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKQogICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE0+KGtl
eVN5c3RlbSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNPihrZXlTeXN0ZW0pOwog
fQogCiBMZWdhY3lDRE06OkxlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNLmgKaW5kZXggNDU4ZWM1M2I0MzM3YjE3MTA1NTZmOGExN2I0ZWYwMWVmY2UxNTY0ZS4u
ZmI1ZGExZjE2ZGEwMmVjODRjMzQ3N2QzNTVmZTBhNWU4OTY0MDZhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RN
LmgKQEAgLTUwLDcgKzUwLDggQEAgY2xhc3MgTGVnYWN5Q0RNQ2xpZW50IHsKICAgICB2aXJ0dWFs
IFJlZlB0cjxNZWRpYVBsYXllcj4gY2RtTWVkaWFQbGF5ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29u
c3QgPSAwOwogfTsKIAotY2xhc3MgTGVnYWN5Q0RNIHsKK2NsYXNzIExlZ2FjeUNETSBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVn
YWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggYzkzMTZkZmQ4YWJiNDA1NDkyZjU1NWVi
M2QxYjNkMDkxN2NlZmY1MC4uM2E4YzAwZjUyMzFmNTJhNmU4OWQxODNkMTUxMWMzYWM4NzczYTFm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lD
RE1TZXNzaW9uPiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENETVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1T
ZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKaW5kZXggNjYwMmViZmU5MDQ0NWM1NTkzYzZlNWZm
OGYxYTViMmUyZGQ5MmMxNy4uY2ZiMDI2YzIwMmRhNmZlMDlmYzhkY2I0NGZmYmJhY2I4YTlkYzky
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgK
QEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwog
CiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIgOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFj
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
Q0RNUHJpdmF0ZU1lZGlhUGxheWVyKExlZ2FjeUNETSogY2RtKQogICAgICAgICA6IG1fY2RtKGNk
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMmY3
YjAzNTM5ZWY4ZWE0NzRlMjM2ZDA1ZDllMTdmZWM0ODRlNjI3ZS4uYmM3NzdmMGNiYzhjZTdiODll
OTQzYjhhNjNlNGU2ZTgyODliMzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vz
c2lvbkNsZWFyS2V5LmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBDRE1TZXNzaW9uQ2xlYXJLZXkgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7Citj
bGFzcyBDRE1TZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkNs
ZWFyS2V5KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
Q2xlYXJLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKaW5kZXggYWRkYzU0ODk2YjhhNDQzOGNmYmZkMDY1ODBhZGJjODYwYTgxZjg2NC4u
ZGI2MzkwZTdmOTkyNTk3N2I4N2NhMDA5ZWRhYmQ1MWNkYjY2NzMzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI0NCw3ICsyNDQs
NyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRj
aEJvZHlDb25zdW1lciogY29uc3VtZXIpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyLmVtcGxh
Y2UoKnRoaXMpOwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
ZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOworICAgIG1fYmxvYkxvYWRlci0+
bG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIp
OwogCiAgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGJsb2IpOwogICAgIGlmICghbV9ibG9iTG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApp
bmRleCBjZDM0NWViOWVjMzQwYzM2ZTBmMGE2ZWVkODJkZDk4OGI0Zjk3ZDM5Li45NDAxM2NmNGVh
NjUyMzhkODNiOWI0YzgxZGI3ZDE4MTY1MzI0NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNo
UmVxdWVzdCYgcmVxdWVzdAogCiAgICAgcmVzcG9uc2UtPmFkZEFib3J0U3RlcHMocmVxdWVzdC5z
aWduYWwoKSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxCb2R5TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNrKSk7
CisgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG1ha2VVbmlxdWU8Qm9keUxvYWRlcj4ocmVz
cG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwogICAgIGlmICghcmVzcG9u
c2UtPm1fYm9keUxvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3Bv
bnNlLT5tX2JvZHlMb2FkZXIgPSBudWxscHRyOwogfQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCiAKIGJvb2wgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRo
aXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7CisgICAgbV9sb2FkZXIgPSBtYWtl
VW5pcXVlPEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigp
KTsKICAgICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIG1f
bG9hZGVyLT5pc1N0YXJ0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAppbmRleCA2MTAyMDg5OWNiYzRhN2U0MzNiMTUx
ZGNjYWViZmU5MDc2NGQzZTJkLi44NTBkMjJkZTI4NWJiMzM1ZDIyZThjMmUyNTNiN2FiNmUwYzYw
MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9y
R2FtZXBhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRv
ckdhbWVwYWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvckdhbWVwYWQqIE5hdmlnYXRv
ckdhbWVwYWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2Ft
ZXBhZCogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdhbWVwYWQqPihTdXBwbGVt
ZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOwogICAgICAgICBzdXBwbGVtZW50ID0g
bmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxl
bWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IGIwOWZjMzQzM2JiZmJiNzI4ZjMxNWMxNTMzYTZmMmM5ZTRmYzAwNzEu
LmNkODA3MGIyMDdkYjhhMzQ0MDI2Y2ZmNjEwNWI4NWVlMTliYzUyNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFn
ZSogcGFnZSwgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQocGFnZSk7
Ci0gICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvbkNvbnRy
b2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8o
cGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVl
PEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCBiMzRmNDlhNjcxZDg1
ZjUxNDJiOGJhZjBmNTJiYTk5MWFjNDM1OWRjLi4zNWRmYmY4ZjNmMjU2OWMwMTM1MzU2NjMwMGY1
Yjc4MzdkZTI4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCBO
YXZpZ2F0b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20oTmF2aWdhdG9y
JiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxOYXZpZ2F0b3JHZW9sb2NhdGlvbio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6
ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50
KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdh
dG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdp
bmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYzcyMDNhOWE4NjQwOTcwNTBkM2RjMDA3OTJm
N2E2YjU4MWZhYTI1ZS4uNWU5ZDk3OTY2YmZkZTU4ZTY2MDk5YTUwOWU2MThiODRjMThkMDVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9E
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKERPTVdpbmRvdyog
d2luZG93KQogewogICAgIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93
Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5k
b3dJbmRleGVkRGF0YWJhc2U+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRv
dywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CmluZGV4IGY0MzA5MGM0ZGNjM2VkZTVlMjdkMWFhNDQzODQ0NDdkODQ5YzY0MGIuLjlhNzgxMjc4
NDYzZWQwYTRhMGFkZGQzZjdkYjBjNTY1Njk2MmI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTUxNyw3ICs1MTcs
NyBAQCBFeGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmRleCcgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIHNwZWNpZmllZCBpbmRleCB3YXMgbm90IGZvdW5kLiJfcyB9Owog
Ci0gICAgYXV0byBpbmRleCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBpbmRleCA9IG1ha2VVbmlx
dWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CiAK
ICAgICBSZWY8SURCSW5kZXg+IHJlZmVyZW5jZWRJbmRleCB7ICppbmRleCB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggZmEyY2Q3ZWFkMDliNjA1NTI1YjhjYjQ0MWVmNzAwMWQ4MzM1MDEwMC4uNDIyNDNmYmE1NzMx
Mjk1NDE4ODk0YTMyMDQzZTg5ZTBiMmMxYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYgKCFpbmZvIHx8ICghZm91bmQgJiYgIWlz
VmVyc2lvbkNoYW5nZSgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJy
b3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3RvcmUnIG9uICdJREJUcmFuc2FjdGlvbic6
IFRoZSBzcGVjaWZpZWQgb2JqZWN0IHN0b3JlIHdhcyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBh
dXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBhdXRvIG9iamVjdFN0b3Jl
ID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
KmluZm8sICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdl
dCgpOwogICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmVOYW1lLCBX
VEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBSZWY8SURCT2JqZWN0
U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RT
dG9yZUluZm8mCiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNlZE9iamVjdFN0
b3JlTG9jayk7CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJP
YmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOworICAg
IGF1dG8gb2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUg
PSBvYmplY3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KGlu
Zm8ubmFtZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJP
YmplY3RTdG9yZSYgb2JqZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jcmVhdGVJbmRl
eE9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7CiAgICAgfSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9i
amVjdFN0b3JlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpjcmVhdGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2Nv
cGVJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGE0ODUwM2I0ZDJkODA0Mjk0Njg0YTY1YTY1ZWJk
NjRmMjMzY2Q3YjkuLjliNzU3NzQ5MjFiNDY1MDZmNTgzZGU3ZmVjNDI1MGU4NTRhY2U1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNj
b3BlSW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcg
QEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlOjpmcm9tKFdvcmtlckcKICAgICAgICAgaWYgKCFjb25uZWN0aW9uUHJveHkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihz
Y29wZSwgKmNvbm5lY3Rpb25Qcm94eSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVj
dGlvblByb3h5KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3Vw
cGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXgg
OTQ4Y2Y3NDY2M2FlNjljODJkYTQ0NGUwOTM0NzNkZDg1NmQ0ZGU5My4uMzc3MTFkYzEwM2RiNmM5
YTliODEzZGJjOWRmNzk5YjdlMjZhNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gSURCQ29u
bmVjdGlvblRvU2VydmVyOjpjcmVhdGUoSURCQ29ubmVjdGlvblRvU2VydmVyRGUKIAogSURCQ29u
bmVjdGlvblRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIoSURCQ29ubmVjdGlvblRvU2Vy
dmVyRGVsZWdhdGUmIGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShtYWtlV2Vha1B0cihkZWxl
Z2F0ZSkpCi0gICAgLCBtX3Byb3h5KHN0ZDo6bWFrZV91bmlxdWU8SURCQ29ubmVjdGlvblByb3h5
PigqdGhpcykpCisgICAgLCBtX3Byb3h5KG1ha2VVbmlxdWU8SURCQ29ubmVjdGlvblByb3h5Pigq
dGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDI3NTNm
ZDBjMjQ1N2I5YzA5ZDlkODllNGY3NjJiNDc5ZjhiNDQwYjEuLjhlMWRlMDZkNzFlOGYwYjIyM2Q2
ODZlNWUxYThhMjIwOWI3NDM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApA
QCAtNDIsNyArNDIsNyBAQCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRp
b24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChtX2luZGV4
SWRlbnRpZmllcikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1ZXN0LnJlcXVlc3Rl
ZEluZGV4UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0LnBlbmRp
bmdDdXJzb3IoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7Cisg
ICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlm
aWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCiAgICAgbV9pZGJSZXF1ZXN0ID0g
JnJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGY2YWI0ZjNhYjJjMjhiMGVlMjI0Njg5NGEwZGU1
ODRiZDA4NzUxZmQuLmY1NTY4ZTMyNWQzNzAxMWEyNzVlMDFkZjk2NmRmZGY1OTUyZThiMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVW5pcXVlSURCRGF0YWJhc2UmIElEQlNlcnZl
cjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW4KIAog
ICAgIGF1dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLmFkZChp
ZGVudGlmaWVyLCBudWxscHRyKTsKICAgICBpZiAodW5pcXVlSURCRGF0YWJhc2UuaXNOZXdFbnRy
eSkKLSAgICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworICAgICAgICB1
bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFVuaXF1ZUlEQkRh
dGFiYXNlPigqdGhpcywgaWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gKnVuaXF1ZUlEQkRhdGFi
YXNlLml0ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJ
REJEYXRhYmFzZQogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9z
ZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdT
dG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJ
REJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0
b3J5UGF0aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcik7CiB9CiAKIHZvaWQg
SURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
KQpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgSURCU2VydmVyOjpRdW90YVVzZXI6OmluaXRpYWxp
emVTcGFjZVVzZWQodWludDY0X3Qgc3BhY2VVc2VkKQogSURCU2VydmVyOjpRdW90YVVzZXImIElE
QlNlcnZlcjo6ZW5zdXJlUXVvdGFVc2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewog
ICAgIHJldHVybiAqbV9xdW90YVVzZXJzLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAmb3JpZ2luXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVv
dGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmln
aW4gfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVv
dGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmln
aW4gfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3Bw
CmluZGV4IDY5ODNjOWQ3ZWFmZjU2MTY3MjA0ZDk1MmYxZjIyNjdiYjQwY2E0YmEuLjhkOTIxZDhl
ZmU2YmE4NDBhMzBkNjFkZmRjNmE3MjFlODI4YTQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3Bw
CkBAIC05Miw3ICs5Miw3IEBAIElEQkVycm9yIEluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKGNv
bnN0IElEQktleURhdGEmIGluZGV4S2V5LCBjb25zdCBJREJLZXlEYXRhCiAgICAgICAgIHJldHVy
biBJREJFcnJvcihDb25zdHJhaW50RXJyb3IpOwogCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRl
eFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZUVudHJ5PihtX3VuaXF1ZSk7CiAKICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5hZGRLZXkodmFsdWVLZXkpOwogICAgIG1fb3JkZXJlZEtleXMuaW5zZXJ0
KGluZGV4S2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDQ3Y2M0MmZkMjZkNjQ3M2M2NDE5MjdlOTkyZDRlYzZlOGQ3YmY4ZWUuLjVlNzE0
NDk3ODRhMGRhMDc2Nzc4OWE4ZGVkYzUyMjY4OWY0ZDhkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3Bh
Y2UgSURCU2VydmVyIHsKIAogc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uPiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6Y3JlYXRlKE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8p
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7CiB9CiAKIE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihN
ZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJiBpbmZvKQpAQCAtNTIsNyArNTIsNyBAQCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oTWVtb3J5SURCQmFja2luZ1N0bwogICAg
ICAgICBJREJEYXRhYmFzZUluZm8gaW5mbzsKICAgICAgICAgYXV0byBlcnJvciA9IG1fYmFja2lu
Z1N0b3JlLmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGluZm8pOwogICAgICAgICBpZiAoZXJy
b3IuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgICAgICAgICAgbV9vcmlnaW5h
bERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICB9
CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdAogCiAgICAg
YXV0byBvcmlnaW5hbEFkZFJlc3VsdCA9IG1fb3JpZ2luYWxWYWx1ZXMuYWRkKCZvYmplY3RTdG9y
ZSwgbnVsbHB0cik7CiAgICAgaWYgKG9yaWdpbmFsQWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+KCk7CiAKICAgICBhdXRvKiBtYXAgPSBvcmlnaW5h
bEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggN2QxNDJiMDA1MGFiNjA4ODFlMzg3YmU4YzE5ODk0N2FjNmU4ZGQ4
MS4uY2ZmZTMzMzdmNzk0NDhiOGMyMTNkYmJlNWZhMzViNGQzYTcwZjJmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHVpbnQ2NF90
IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsKIAogc3RkOjp1bmlxdWVf
cHRyPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIH0K
IAogTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURC
RGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtNjEsNyArNjEsNyBAQCBNZW1vcnlJ
REJCYWNraW5nU3RvcmU6On5NZW1vcnlJREJCYWNraW5nU3RvcmUoKSA9IGRlZmF1bHQ7CiBJREJF
cnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElE
QkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VJbmZvKQotICAgICAg
ICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lk
ZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDAp
OwogCiAgICAgaW5mbyA9ICptX2RhdGFiYXNlSW5mbzsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9
OwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJh
c2VJbmZvKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbykKICAgICAvLyBJdCBpcyBub3QgdmFs
aWQgdG8gZGlyZWN0bHkgc2V0IGRhdGFiYXNlIGluZm8gb24gYSBiYWNraW5nIHN0b3JlIHRoYXQg
aGFzbid0IGFscmVhZHkgc2V0IGl0cyBvd24gZGF0YWJhc2UgaW5mby4KICAgICBBU1NFUlQobV9k
YXRhYmFzZUluZm8pOwogCi0gICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oaW5mbyk7CiB9CiAKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlu
ZGV4LmNwcAppbmRleCA0OWRkY2E2YmQ0MGQyOWQ0MmUzOGI4NTEzMWM4OWZkZmU3ZDQ3OTJkLi44
NTk1ZGJiOGY0YTdlZTNkMTkxZTMxZmI2MTBiMDQ5NzViODc0NjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAK
QEAgLTE5NCw3ICsxOTQsNyBAQCBJREJFcnJvciBNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkoY29u
c3QgSURCS2V5RGF0YSYgdmFsdWVLZXksIGNvbnN0IEluZGV4S2V5JiBpbgogICAgIExPRyhJbmRl
eGVkREIsICJNZW1vcnlJbmRleDo6cHJvdmlzaW9uYWxQdXRJbmRleEtleSIpOwogCiAgICAgaWYg
KCFtX3JlY29yZHMpIHsKLSAgICAgICAgbV9yZWNvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRl
eFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUoKSk7CisgICAgICAgIG1fcmVjb3JkcyA9IG1ha2VV
bmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOwogICAgICAgICBub3RpZnlD
dXJzb3JzT2ZBbGxSZWNvcmRzQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBA
IE1lbW9yeUluZGV4Q3Vyc29yKiBNZW1vcnlJbmRleDo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1lbW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7
CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuY3BwCmluZGV4IGVkNmViYTkyN2YxZjRmNmI5YzMwNjhmNmI1ZDg4ZGUyOTk3
MjY3ZWIuLjViNDRhNzM4NzhjOWZkZDdhMWUwNWE5NWI3NjU3ZWJlNjM2MzUxNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMjU5LDggKzI1OSw4IEBAIElEQkVycm9yIE1lbW9yeU9i
amVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uCiAKICAgICBpZiAoIW1fa2V5VmFsdWVTdG9yZSkgewogICAgICAgICBBU1NFUlQoIW1f
b3JkZXJlZEtleXMpOwotICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PEtleVZhbHVlTWFwPigpOwotICAgICAgICBtX29yZGVyZWRLZXlzID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJLZXlEYXRhU2V0PigpOworICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBtYWtlVW5pcXVl
PEtleVZhbHVlTWFwPigpOworICAgICAgICBtX29yZGVyZWRLZXlzID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8SURCS2V5RGF0YVNldD4oKTsKICAgICB9CiAKICAgICBhdXRvIG1h
cFJlc3VsdCA9IG1fa2V5VmFsdWVTdG9yZS0+c2V0KGtleURhdGEsIHZhbHVlLmRhdGEoKSk7CkBA
IC00OTcsNyArNDk3LDcgQEAgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IqIE1lbW9yeU9iamVjdFN0
b3JlOjptYXliZU9wZW5DdXJzb3IoY29uc3QgSURCQ3Vyc29ySW5mbyYKICAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigq
dGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVt
b3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0aGlzLCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cAppbmRleCA0ZjIwOGU0ZDA2MDRiODc3ZGQxZDc0ODY3YjhlM2UyODcyN2FjMDQ0Li42ZTg5M2Y5
ODQ0ZTcwOGVkMTk3MmI0YTJjMThiMTU5ZmE3MGI1OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFs
CiAgICAgfQogCiAgICAgLy8gVGhpcyBpbml0aWFsIGRhdGFiYXNlIGluZm8gbWF0Y2hlcyB0aGUg
ZGVmYXVsdCB2YWx1ZXMgd2UganVzdCBwdXQgaW50byB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIu
ZGF0YWJhc2VOYW1lKCksIDApOworICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdE
YXRhYmFzZUluZm8oKQpAQCAtNjU4LDcgKzY1OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJ
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGRhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7Cisg
ICAgYXV0byBkYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJh
c2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOwogCiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1l
bnQgc3FsKCptX3NxbGl0ZURCLCAiU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jLCBt
YXhJbmRleElEIEZST00gT2JqZWN0U3RvcmVJbmZvOyJfcyk7CkBAIC04MjAsNyArODIwLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5m
byhJREJEYXRhYmFzZUluZm8mIGluZm8KIAogICAgIFN0cmluZyBkYkZpbGVuYW1lID0gZnVsbERh
dGFiYXNlUGF0aCgpOwogCi0gICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRl
RGF0YWJhc2U+KCk7CisgICAgbV9zcWxpdGVEQiA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+
KCk7CiAgICAgaWYgKCFtX3NxbGl0ZURCLT5vcGVuKGRiRmlsZW5hbWUpKSB7CiAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRi
RmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKQEAgLTkw
MywxMSArOTAzLDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFu
c2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZXN0YWJsaXNoIHRyYW5zYWN0aW9u
IGlkZW50aWZpZXIgdGhhdCBhbHJlYWR5IGV4aXN0cyJfcyB9OwogICAgIH0KIAotICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0
aW9uPigqdGhpcywgaW5mbyk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rpb24+KCp0aGlzLCBpbmZvKTsKIAogICAgIGF1dG8gZXJy
b3IgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5iZWdpbigqbV9zcWxpdGVEQik7CiAgICAg
aWYgKGVycm9yLmlzTnVsbCgpICYmIGluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6
VmVyc2lvbmNoYW5nZSkgewotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVy
c2lvbkNoYW5nZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFz
ZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5n
ZSA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8pOwogCiAgICAg
ICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsICJVUERBVEUgSURCRGF0YWJhc2VJ
bmZvIFNFVCB2YWx1ZSA9ID8gd2hlcmUga2V5ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKICAg
ICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC0yNjExLDcgKzI2MTEsNyBA
QCBTUUxpdGVTdGF0ZW1lbnQqIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50
KFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6UwogICAgIH0KIAogICAgIGlmIChtX3NxbGl0ZURCKSB7
Ci0gICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0g
c3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQp
OworICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9
IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKICAg
ICAgICAgaWYgKG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldLT5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0
YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKaW5kZXggZjg0MDVhNzk4YTM2ODEwZGM1NzZhZjFlNzNiY2FmNTMxMDIzN2JhZi4uYzZi
M2ZkOTUzYTBkNTNhYzE1NjhlMjg0OGNiYzc4YTEyZjE5NTc1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0
ID0gODsKIAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29y
OjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8pOworICAgIGF1dG8gY3Vyc29yID0g
bWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKIAogICAgIGlm
ICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC01OSw3ICs1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0
ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3RpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5n
U3RvcmVDdXJzb3IoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50
NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCB1aW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIHJhbmdlKQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxT
UUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5n
ZSk7CisgICAgYXV0byBjdXJzb3IgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNh
Y3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIHJhbmdlKTsKIAogICAgIGlmICghY3Vyc29y
LT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTks
NyArMTk5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChj
b25zdCBTdHJpbmcmIHNxbCkKICAgICBBU1NFUlQoIW1fY3VycmVudFVwcGVyS2V5LmlzTnVsbCgp
KTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKSk7CiAKLSAg
ICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5z
YWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOworICAgIG1fc3Rh
dGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0
ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7CiAKICAgICBpZiAobV9zdGF0ZW1lbnQt
PnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
Y3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKHByZXBhcmUvaWQpIC0gJyVzJyIsIG1fdHJhbnNhY3Rp
b24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwpAQCAt
NDY0LDcgKzQ2NCw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vy
c29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFs
dWUpCi0gICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwg
YmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1
ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0
YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJpbWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGls
ZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7CkBAIC00ODYsNyArNDg2LDcgQEAgU1FMaXRlSURC
Q3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVj
b3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAg
ICAgICAgICAgIG9iamVjdFN0b3JlU3RhdGVtZW50LmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBr
ZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0
YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZh
bHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8v
IFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBT
a2lwIG92ZXIgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBhNmEzYzVm
ZmYzMzgwYzI1ZWY3MzYxZTY4OGJlZjM2YzA2MTVmYzgzLi5kMjEyZGUyYjZiODhhZmZlMGEzNWIw
ZmQwZmQzM2ZjODY3Y2VjYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKFNRTGl0
ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24p
OwogCi0gICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJh
bnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6
UmVhZG9ubHkpOworICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRy
YW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6
OlJlYWRvbmx5KTsKICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgaWYg
KG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCmluZGV4IDFlYmMwODE4Zjg5ZWYzZjc2YjQ2YjI3ZGU3NGYzMWNjYzNlNDZjY2YuLmJlNTkx
Yjk4ODQwZWRhZDY0ODBhZjBjNDFiN2M4ZTkyYzVmMTJhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERl
bGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBkZWxldGVkVmVyc2lvbikKICAgICAvLyB3ZSB3b24n
dCBoYXZlIGEgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mby4gSW4gdGhhdCBjYXNlLCB3
ZSdsbCBtYW51ZmFjdHVyZSBvbmUgdXNpbmcgdGhlCiAgICAgLy8gcGFzc2VkIGluIGRlbGV0ZWRW
ZXJzaW9uIGFyZ3VtZW50LgogICAgIGlmICghbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5m
bykKLSAgICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0
ZWRWZXJzaW9uKTsKKyAgICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRl
bGV0ZWRWZXJzaW9uKTsKIAogICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0KSB7CiAgICAg
ICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPm5vdGlmeURpZERlbGV0ZURhdGFiYXNlKCptX21v
c3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5m
byYgaW5mbywgY29uc3QgSQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIp
OwogICAgIAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGluZm8pOwogICAgIG1fYmFja2luZ1N0b3JlT3BlbkVycm9yID0gZXJyb3I7CiAKICAg
ICBBU1NFUlQobV9pc09wZW5pbmdCYWNraW5nU3RvcmUpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5n
ZURhdGFiYXNlQ29ubmVjdGlvbiB8fCAmbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmRhdGFi
YXNlQ29ubmVjdGlvbigpID09IG1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CiAg
ICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFz
ZUluZm8oKSk7Ci0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFz
ZUluZm8oKSk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8o
KSk7CiAgICAgfQogCiAgICAgSURCRXJyb3IgcmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkg
PT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2Fj
dGlvbi0+cmVzdWx0KCkgOiBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcAppbmRleCBhZjkyZWJjNjM2ODg1YzY5YzI1ZTUwMjk5Y2U2YzRhY2VhYTY1
OWM4Li5lNGQ2NjlkYThhYzYyOTE2ZjdiY2UwMzI4MDlhNTU5ZTg1M2NjODJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC01MSw3ICs1MSw3IEBA
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKIAogICAgIGlm
IChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9u
Y2hhbmdlKQotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOworICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZv
KCkpOwogCiAgICAgYXV0byYgc2VydmVyID0gZGF0YWJhc2UtPnNlcnZlcigpOwogICAgIG1fc2Vy
dmVyID0gbWFrZVdlYWtQdHIoc2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCmluZGV4IGIxMGQ4
NDA5OWIyNTI4ZTZmNzNjMjhiMTUwNGE4YTkzMjRkMGIyMWEuLjIxNjQxNmFmYTExY2YyNTVkMzZk
ZWZiM2VmZjM2ZWZhZjE5NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoKQogCiBJREJSZXF1ZXN0RGF0YTo6
SURCUmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5l
Y3Rpb25Qcm94eSwgY29uc3QgSURCT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvblByb3h5LnNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQorICAgICwg
bV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29u
bmVjdGlvblByb3h5LCByZXF1ZXN0KSkKICAgICAsIG1fZGF0YWJhc2VJZGVudGlmaWVyKHJlcXVl
c3QuZGF0YWJhc2VJZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3RlZFZlcnNpb24ocmVxdWVz
dC52ZXJzaW9uKCkpCiAgICAgLCBtX3JlcXVlc3RUeXBlKHJlcXVlc3QucmVxdWVzdFR5cGUoKSkK
QEAgLTQ5LDggKzQ5LDggQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHIKIAogSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbikKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIob3BlcmF0aW9uLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5jb25uZWN0aW9uUHJveHkoKS5zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCi0gICAgLCBtX3Ry
YW5zYWN0aW9uSWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmll
cj4ob3BlcmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAsIG1fcmVxdWVzdElk
ZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVu
dGlmaWVyKCkpKQorICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCiAg
ICAgLCBtX29iamVjdFN0b3JlSWRlbnRpZmllcihvcGVyYXRpb24ub2JqZWN0U3RvcmVJZGVudGlm
aWVyKCkpCiAgICAgLCBtX2luZGV4SWRlbnRpZmllcihvcGVyYXRpb24uaW5kZXhJZGVudGlmaWVy
KCkpCiB7CkBAIC01OCw3ICs1OCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIG1faW5k
ZXhSZWNvcmRUeXBlID0gb3BlcmF0aW9uLmluZGV4UmVjb3JkVHlwZSgpOwogCiAgICAgaWYgKG9w
ZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNv
cklkZW50aWZpZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CiB9
CiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
b3RoZXIpCkBAIC03MSwxMSArNzEsMTEgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRh
KGNvbnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKICAgICAsIG1fcmVxdWVzdFR5cGUob3RoZXIu
bV9yZXF1ZXN0VHlwZSkKIHsKICAgICBpZiAob3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAg
ICAgICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVxdWVz
dElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1f
cmVxdWVzdElkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmll
cikKLSAgICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAg
ICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIu
bV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmll
cik7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiB0aGF0LCBJc29sYXRlZENv
cHlUYWcpCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCB2b2lkIElEQlJlcXVlc3REYXRhOjppc29sYXRl
ZENvcHkoY29uc3QgSURCUmVxdWVzdERhdGEmIHNvdXJjZSwgSURCUmVxdWVzdERhdGEmCiAgICAg
ICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJZGVudGlmaWVyID0gc291cmNlLm1fZGF0YWJhc2VJ
ZGVudGlmaWVyLT5pc29sYXRlZENvcHkoKTsKIAogICAgIGlmIChzb3VyY2UubV9yZXF1ZXN0SWRl
bnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50
aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7
CiAgICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgZGVzdGlu
YXRpb24ubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291
cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAg
IGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlm
IChzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNv
cklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNv
dXJjZS5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1
cnNvcklkZW50aWZpZXIpOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0RGF0YTo6c2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA0NWNmZmFlYTYw
M2E1M2I1OTkwNGM4YjE0YjdhMWRlZjdkMjVmMzEwLi40MDhiNGU0NjI4NzMzN2I5YWMzNDRhZmJm
NDY5MTU4NjhlODBmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGJv
b2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3JlcXVlc3RJZGVudGlmaWVyID0gV1RGTW92
ZShvYmplY3QpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
aGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVx
dWVzdC5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE3NCw3
ICsxNzQsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmpl
Y3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9jdXJzb3JJZGVudGlm
aWVyID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCmluZGV4IGE4OTQ1NGU2ZTYz
ZjZlYjdjYjUwMzhiOWM5MzJmYTIxODYzM2VkYzYuLjRjYmQ1ZDliZGYwYTg1MjNiZjdmNTJhYzVi
YzVjYjRiN2VkMTA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBJ
REJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIG90aGVyKQog
ICAgICwgbV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKIHsKICAgICBpZiAo
b3RoZXIubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CisgICAgICAg
IG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2Rh
dGFiYXNlSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBt
X3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigq
b3RoZXIubV90cmFuc2FjdGlvbkluZm8pOworICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IG1h
a2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOwog
ICAgIGlmIChvdGhlci5tX3Jlc3VsdEtleSkKLSAgICAgICAgbV9yZXN1bHRLZXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtleSk7CisgICAgICAgIG1fcmVz
dWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOwogICAg
IGlmIChvdGhlci5tX2dldFJlc3VsdCkKLSAgICAgICAgbV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKKyAgICAgICAgbV9nZXRS
ZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKICAg
ICBpZiAob3RoZXIubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7Cisg
ICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhl
ci5tX2dldEFsbFJlc3VsdCk7CiB9CiAKIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29u
c3QgSURCUmVzdWx0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtODcsMTUgKzg3LDE1
IEBAIHZvaWQgSURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlc3VsdERhdGEm
IHNvdXJjZSwgSURCUmVzdWx0RGF0YSYgZGVzCiAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRJbnRl
Z2VyID0gc291cmNlLm1fcmVzdWx0SW50ZWdlcjsKIAogICAgIGlmIChzb3VyY2UubV9kYXRhYmFz
ZUluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNl
SW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUluZm8g
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURC
RGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlv
bkluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElE
QlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90
cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJjZS5t
X3RyYW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwogICAg
IGlmIChzb3VyY2UubV9yZXN1bHRLZXkpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJL
ZXlEYXRhOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9
IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6
SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fZ2V0UmVzdWx0KQotICAgICAgICBkZXN0
aW5hdGlvbi5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqc291
cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2Uu
bV9nZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNl
Lm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJ
REJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0
QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxS
ZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogSURCUmVzdWx0RGF0
YSBJREJSZXN1bHREYXRhOjplcnJvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCkBAIC0xMTEsNyArMTExLDcgQEAg
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmUKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVl
c3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5E
YXRhYmFzZVN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCkt
PmluZm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERh
dGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQog
ICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1
bHQubV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZDsKICAg
ICByZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uZGF0
YWJhc2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFz
ZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOwotICAgIHJlc3VsdC5tX3RyYW5zYWN0
aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlv
bi5pbmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0
YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5p
bmZvKCkpOworICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJh
bnNhY3Rpb25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7SURCUmVzdWx0
VHlwZTo6RGVsZXRlRGF0YWJhc2VTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJl
c3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihp
bmZvKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTcxLDIxICsxNzEsMjEg
QEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpyZW5hbWVJbmRleFN1Y2Nlc3MoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXEKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6
cHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsKICAgICBJREJSZXN1bHREYXRh
IHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OlB1dE9yQWRkU3VjY2VzcywgcmVxdWVzdElkZW50aWZp
ZXIgfTsKLSAgICByZXN1bHQubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURh
dGE+KHJlc3VsdEtleSk7CisgICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJL
ZXlEYXRhPihyZXN1bHRLZXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERh
dGEgSURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkK
IHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1
Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0
UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRz
U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBJREJHZXRBbGxSZXN1bHQmIGdldEFsbFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRh
IHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzLCByZXF1ZXN0SWRl
bnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldEFsbFJlc3Vs
dCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTIwNCwxNCArMjA0LDE0IEBAIElEQlJlc3VsdERhdGEgSURCUmVz
dWx0RGF0YTo6ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJl
c3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0
VHlwZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0
Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7
CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHRE
YXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJ
REJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNz
LCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3Vs
dCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDcxN2IzZTJkZTUzYjM1M2ZlYjZkZDc1NTAwYTBl
NWU2OGM5NDdhM2YuLjYyMDYyYTFlMjk1ZjdiNTk4MTU4OTViNTdiZWMwMDhlNWIxODc2YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1
bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBk
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3Qg
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAg
IHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE5Myw3ICsxOTMs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJS
ZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFz
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0
KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV90cmFuc2FjdGlvbklu
Zm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERl
Y29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKTsKKyAgICAgICAgYXV0byBvYmpl
Y3QgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElEQktleURh
dGE+IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAo
IW9wdGlvbmFsKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQkdldFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2Jq
ZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5t
X2dldFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAg
IGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CisgICAg
ICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgICAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
VHJhbnNhY3Rpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCmluZGV4IDk4M2MxYzExYzk5YjQ1YjZjZTU0NGRm
Y2FjMDM3ZTRjNzM3Mjk1YzMuLjRmYjk5OTE5ZjY3ZDVmN2M5YWJjMTA5ZTJlMzAwMGNjZTRjNDQw
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJUcmFuc2FjdGlvbkluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCkBAIC01NSw3ICs1NSw3IEBAIElEQlRy
YW5zYWN0aW9uSW5mbyBJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UoY29uc3QgSURC
U2VydmVyOjpJREJDb25uZWN0CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIHJlc3VsdCgoSURCUmVz
b3VyY2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pKSk7CiAgICAgcmVzdWx0Lm1fbW9kZSA9IElEQlRy
YW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZTsKICAgICByZXN1bHQubV9uZXdWZXJzaW9uID0g
bmV3VmVyc2lvbjsKLSAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CisgICAgcmVz
dWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
b3JpZ2luYWxEYXRhYmFzZUluZm8pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3LDcg
KzY3LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICwgbV9vYmplY3RTdG9yZXMoaW5mby5tX29iamVj
dFN0b3JlcykKIHsKICAgICBpZiAoaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAg
ICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxE
YXRhYmFzZUluZm8pOwogfQogCiBJREJUcmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0aW9uSW5m
byhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTkx
LDcgKzkxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkluZm86Omlzb2xhdGVkQ29weShjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mIHNvdXJjZSwgSURCVHJhbnMKICAgICAgICAgZGVzdGluYXRpb24u
bV9vYmplY3RTdG9yZXMudW5jaGVja2VkQXBwZW5kKG9iamVjdFN0b3JlLmlzb2xhdGVkQ29weSgp
KTsKIAogICAgIGlmIChzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgZGVz
dGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5m
bzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNl
SW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogI2lmICFMT0df
RElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAppbmRleCA5MzBkODAyMzYxODIzMmFiZjZj
MDgxZGYyMTI5NThmZjYyYTU1NWVkLi43Yjk0NzdlOGVjNTU0YzkxM2QyYTQ4YmU1NThlMTYzM2Q5
M2ZjZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCkBAIC0xMTksNyArMTE5LDcgQEAgYm9v
bCBJREJUcmFuc2FjdGlvbkluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJUcmFuc2Fj
dGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNPYmpl
Y3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZv
PigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBXVEZN
b3ZlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDg3YjFhZGNkOTY2
NjIwNmVjOTcxNjYwMzYyYjQwZTVhZDdkODAxZDEuLmM5Njg5NDQ0ZmQyMjQwMmNlZDIxMTNiM2Jm
YTBiOWE1MjZjNjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblBy
b2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikK
IHsKICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1
b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CiAg
ICAgICAgIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9O
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5kZXggZjg3MjU3NGU4NWMyNDA4NzcyYjFk
MTFhMmU4YmNiNmRkNjBkYTI5Ny4uYTMxYmFkYjU0YWM5ODFlMGUzYmFkYWZlMjA5ODc4MjlkM2Y3
NDAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGll
cy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMmIE5hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG8KIHsKICAgICBOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGll
cz4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllcz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CmluZGV4IDUwZDBiYjBiMWVkNTNhNDMyNDU4ZDlmYjcxMzU3MGFlMGVjYTBkMDYuLmI5NzQzNGM0
ZTYyNDVkNzNjY2YyZDYyNWEwYTFiMDNlMTI5MGNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlj
a2VyKCkKIHsKICAgICBpZiAoIW1fcGlja2VyT3ZlcnJpZGUpCi0gICAgICAgIG1fcGlja2VyT3Zl
cnJpZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigq
dGhpcyk7CisgICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fcGlja2VyT3ZlcnJp
ZGUuZ2V0KCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdWludDY0X3QgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWEK
IAogICAgIExPRyhNZWRpYSwgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFy
Z2V0UGlja2VyQ2xpZW50KCVwICsgJWxsdSkiLCAmY2xpZW50LCBjb250ZXh0SWQpOwogCi0gICAg
bV9jbGllbnRTdGF0ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50
LCBjb250ZXh0SWQpKTsKKyAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVu
dFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJh
dGlvblRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcAppbmRleCBkNDE3YTEyMTY5MTExMjE1ZDU0MjI5MWUwM2M1OWQ1ZDZlN2Vi
M2Y0Li43Y2JjNmExMzM1MWUwZDMyY2UyNTVhOWJhZGNiOTc0NGRhZjRkNDQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAt
MTc4LDkgKzE3OCw5IEBAIE1lZGlhVGltZSBNZWRpYVNvdXJjZTo6Y3VycmVudFRpbWUoKSBjb25z
dAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZl
cmVkKCkgY29uc3QKIHsKICAgICBpZiAobV9idWZmZXJlZCAmJiBtX2FjdGl2ZVNvdXJjZUJ1ZmZl
cnMtPmxlbmd0aCgpICYmIHN0ZDo6YWxsX29mKG1fYWN0aXZlU291cmNlQnVmZmVycy0+YmVnaW4o
KSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5lbmQoKSwgW10oYXV0byYgYnVmZmVyKSB7IHJldHVy
biAhYnVmZmVyLT5pc0J1ZmZlcmVkRGlydHkoKTsgfSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAotICAgIG1f
YnVmZmVyZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBt
X2J1ZmZlcmVkID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgZm9yIChh
dXRvJiBzb3VyY2VCdWZmZXIgOiAqbV9hY3RpdmVTb3VyY2VCdWZmZXJzKQogICAgICAgICBzb3Vy
Y2VCdWZmZXItPnNldEJ1ZmZlcmVkRGlydHkoZmFsc2UpOwogCkBAIC0xOTAsNyArMTkwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVk
KCkgY29uc3QKIAogICAgIC8vIDEuIElmIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMubGVuZ3RoIGVxdWFs
cyAwIHRoZW4gcmV0dXJuIGFuIGVtcHR5IFRpbWVSYW5nZXMgb2JqZWN0IGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KICAgICBpZiAoYWN0aXZlUmFuZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwog
CiAgICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5lZCBieSBi
dWZmZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJjZUJ1ZmZl
cnMuCiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3QgcmFuZ2Ug
ZW5kIHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29u
c3QKIAogICAgIC8vIFJldHVybiBhbiBlbXB0eSByYW5nZSBpZiBhbGwgcmFuZ2VzIGFyZSBlbXB0
eS4KICAgICBpZiAoIWhpZ2hlc3RFbmRUaW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyA0LiBM
ZXQgaW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmlu
ZyBhIHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBtX2J1ZmZl
cmVkLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBoaWdoZXN0RW5kVGltZSk7CkBAIC0yMjEs
NyArMjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3Vy
Y2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChz
b3VyY2VSYW5nZXMpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzZWVr
VG9UaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0
LCBkb3VibGUgZW5kKQogCiAgICAgLy8gU2V0IGxpdmUgc2Vla2FibGUgcmFuZ2UgdG8gYmUgYSBu
ZXcgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdl
CiAgICAgLy8gd2hvc2Ugc3RhcnQgcG9zaXRpb24gaXMgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBp
cyBlbmQuCi0gICAgbV9saXZlU2Vla2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKGVuZCkpOworICAgIG1fbGl2ZVNlZWthYmxlID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1l
ZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5jcHAKaW5kZXggZTQxODI3ODM4ZDYyY2EzOGZjM2JmM2JlNzhmOGY0
YWE4YWU1MjU5Ni4uN2IzNThmNWUwZGU0MmZiMjI2OGQzNjkwM2U1OGRiNWViNzhlOTBkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApAQCAtNTEsNyArNTEsNyBAQCBOYXZpZ2F0b3JNZWRpYURl
dmljZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxO
YXZpZ2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdh
dG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZp
Y2VzPihuYXZpZ2F0b3ItPndpbmRvdygpKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
bWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKaW5kZXggOGQ3ZTYzY2M2MDZkNmRhMTlmYmRiMTJk
ZTU0ZmI4NTVmZGY2MmM5OS4uMTRkZjExNjFkYWU2OGNjNDZjYjQ5ZWFhZTIxZjVlZjk4OWUyYWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFVzZXJNZWRpYUNvbnRy
b2xsZXI6On5Vc2VyTWVkaWFDb250cm9sbGVyKCkKIAogdm9pZCBwcm92aWRlVXNlck1lZGlhVG8o
UGFnZSogcGFnZSwgVXNlck1lZGlhQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgVXNlck1lZGlhQ29u
dHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7Cisg
ICAgVXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xp
ZW50KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlY3VyZShEb2N1bWVudExvYWRlciYg
ZG9jdW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCBhYWE0MDAwMjA3MzY1ZmZjYmU1MjgxMjhlMjhjZTAyZjZjNjA3
Y2RkLi5jOTg1YmMxOWEzMWQwMTE0NTY1YWJhYmE1ZjA2MGVlNTBkYTYxMTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IExpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjo6Y2hhbm5lbEV2ZW50KFNjcmlwdEV4ZWN1dGkKICAgICBpbml0Lm5lZ290aWF0ZWQgPSBk
YXRhQ2hhbm5lbC0+bmVnb3RpYXRlZCgpOwogICAgIGluaXQuaWQgPSBkYXRhQ2hhbm5lbC0+aWQo
KTsKIAotICAgIGF1dG8gaGFuZGxlciA9ICBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOworICAgIGF1dG8gaGFuZGxlciA9
ICBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hh
bm5lbCkpOwogICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoY29udGV4
dCwgV1RGTW92ZShoYW5kbGVyKSwgZnJvbVN0ZFN0cmluZyhsYWJlbCksIFdURk1vdmUoaW5pdCkp
OwogCiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZGF0YWNoYW5uZWxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vLCBXVEZNb3ZlKGNoYW5uZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKaW5kZXggNDViZjRhOTNkMjUwMGZlODlhM2ViZTc3ZWMxY2Q4ZWRlMTA1
YTJmOS4uNzI2MmQxODJjNTI3YzM1MGJhZjQ4MWY0YzY0ZGI5NmY4YjU5MWY5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTM5Myw3ICszOTMsNyBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+
c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4o
V1RGTW92ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+c2V0QmFja2VuZChtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsK
ICAgICBhdXRvJiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwogICAgIGFkZFBlbmRpbmdUcmFj
a0V2ZW50KHJlY2VpdmVyLnJlbGVhc2VOb25OdWxsKCksIHRyYWNrLCBydGNTdHJlYW1zLCBudWxs
cHRyKTsKIH0KQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNvbGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFu
c2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4o
V1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlx
dWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVy
KSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiB9CiAKQEAgLTQ5NSw3ICs0OTUs
NyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zYwogICAgIGlmICghc291cmNlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKIAogICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KG1ha2VSZWYobmV3VHJhbnNjZWl2
ZXIucmVjZWl2ZXIoKSksIG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkudHJhY2soKSwgcnRjUmVj
ZWl2ZXItPnN0cmVhbXMoKSwgbWFrZVJlZihuZXdUcmFuc2NlaXZlcikpOwogfQpAQCAtNTMwLDcg
KzUzMCw3IEBAIE9wdGlvbmFsPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzPiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVUcmFuc2NlCiAgICAgaWYgKCFyZXN1bHQub2soKSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1v
dmVWYWx1ZSgpKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CiAgICAgcmV0dXJuIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzIHsgdHJhbnNjZWl2ZXItPmNyZWF0ZVNlbmRl
ckJhY2tlbmQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQsIFdURk1vdmUoc291cmNlKSksIHRyYW5z
Y2VpdmVyLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikgfTsK
IH0KIApAQCAtNTgxLDcgKzU4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQ+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnRyYW5zY2VpCiB7CiAgICAg
Zm9yIChhdXRvJiB0cmFuc2NlaXZlciA6IG1fYmFja2VuZC0+R2V0VHJhbnNjZWl2ZXJzKCkpIHsK
ICAgICAgICAgaWYgKHRyYW5zY2VpdmVyLT5zZW5kZXIoKS5nZXQoKSA9PSBiYWNrZW5kLnJ0Y1Nl
bmRlcigpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2Nl
aXZlckludGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CiAgICAgfQogICAg
IHJldHVybiBudWxscHRyOwogfQpAQCAtNjUwLDcgKzY1MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
VENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFD
aGFubmVsCiB7CiAgICAgYXV0byBpbml0ID0gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpm
cm9tUlRDRGF0YUNoYW5uZWxJbml0KG9wdGlvbnMpOwogICAgIGF1dG8gY2hhbm5lbCA9IG1fYmFj
a2VuZC0+Q3JlYXRlRGF0YUNoYW5uZWwobGFiZWwudXRmOCgpLmRhdGEoKSwgJmluaXQpOwotICAg
IHJldHVybiBjaGFubmVsID8gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gY2hhbm5lbCA/
IG1ha2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwp
KSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hh
bm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0
YUNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcAppbmRleCAyMDdmMTVlNjQ1N2I5ZGZjYWMxYzMzOWVhMzlmZWExZDc3ODU5
ZDhiLi5mYzkxY2NkMGJiZDFmZGJiYTc2NDJlNzA0ZjM3ZmU4NWNjNzJmZDVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ+IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2UKIAogICAgIHBhZ2UtPmxpYldl
YlJUQ1Byb3ZpZGVyKCkuc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihwYWdlLT5zZXR0aW5ncygp
LndlYlJUQ0VuY3J5cHRpb25FbmFibGVkKCkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+
bGliV2ViUlRDUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlk
ZXIoKSk7CiB9CiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKQEAg
LTMxMSw3ICszMTEsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlZpZGVvUmVj
ZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aQogICAgIGF1dG8gc291cmNl
ID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0
cmFja0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNv
dXJjZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7
CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRy
YW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywg
eyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRy
KTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3Bl
ZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTMz
NCw3ICszMzQsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2
ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdQogICAgIGF1dG8gc291cmNlID0g
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFj
a0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJj
ZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJhdWRpbyJfcywgeyB9
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsK
ICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJD
b25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTQwMCw3
ICs0MDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRFeGlzdGlu
Z1NlbmRlcihjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFT
dHJlYW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5p
ZmllZFBsYW5FbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRy
YWNrKCpzZW5kZXJCYWNrZW5kLCB0cmFjaywgbWVkaWFTdHJlYW1JZHMpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsK
IApAQCAtNDM4LDcgKzQzOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyCiAgICAgICAgIGNv
bnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgpOwogICAgICAgICBTdHJpbmcgdHJh
Y2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIHNlbmRl
ckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0
aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGF1dG8g
bmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIG1ha2VSZWYodHJhY2spLCBW
ZWN0b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkp
OwogICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXIodHJhY2tLaW5kLCB0cmFj
a0lkKTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVh
dGUoV1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSwgbnVsbHB0cik7CkBAIC00
NzIsNyArNDcyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoU3RyaW5nIHsgdHJh
Y2tLaW5kIH0sIGluaXQpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0
byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigq
dGhpcywgbnVsbHB0cik7CiAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0
ZSgqdGhpcywgU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2Vu
ZGVyQmFja2VuZCkpOwogICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUo
bmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQp
OwogfQpAQCAtNDgyLDcgKzQ4Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZl
cj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBs
YW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFdU
Rk1vdmUodHJhY2spLCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8mIGJhY2tlbmQgPSAqc2VuZGVyQmFja2VuZDsK
ICAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCB0cmFjay5jb3B5
UmVmKCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIGlm
ICghbV9lbmRwb2ludC0+YWRkVHJhY2soYmFja2VuZCwgdHJhY2ssIFZlY3RvcjxTdHJpbmc+IHsg
fSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmlu
ZGV4IDY4NTBlNmE4NWU5MDI0YmIxMTQ1YjZiOTQyMjljMGY2MTQyZGY3YWEuLjZhZWVhMTMzODky
ZDIwNjNmMDM1MzliOGVlYzRkYjliY2U2NGQ3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJh
bWV0ZXJzJiBwYXJhbWUKIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2Vu
ZGVyLT5HZXREdG1mU2VuZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ0RU
TUZTZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKaW5kZXggZWI4NzFlYjdkYjAzODg0ZjRjYzdlMGFkZWY2
ODc4MmUxYzA5NzJkNy4uNWMwZDdlOTVlMmZkMTJlM2Y4NGYxN2NmYmViNmQ4NjdhNTFmMmU0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVy
LT5yZWNlaXZlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOwogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZCYgYmFja2VuZCwgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6U291cmNlJiYgc291cmNlKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+
KGJhY2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQs
IG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiBSVENS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRp
cmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDBjMzI4ZmFlNDQyMzU5OTI1MzMwNzJjODVk
NmIzMmZkYzZjMTM4MzguLjBlYmFmZjg5ZmZiYzUwMDNlMjQ2MWJhZGVlNTIwMzkxMTcxY2JkM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9uCiAg
ICAgLCBtX2JvZHkob3B0aW9ucy5ib2R5KQogICAgICwgbV90YWcob3B0aW9ucy50YWcpCiAgICAg
LCBtX3N0YXRlKElkbGUpCi0gICAgLCBtX3Rhc2tUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVy
PihbdGhpc10gKCkgeyBzaG93KCk7IH0pKQorICAgICwgbV90YXNrVGltZXIobWFrZVVuaXF1ZTxU
aW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKIHsKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5p
c0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBpY29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwo
b3B0aW9ucy5pY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBhNjIwMzUz
OTNjN2ZiM2Y2ZGRmMDFjNWM4OWQ3NGYzYjVlZGQyZDQ0Li5kNDhmMjA1YTllMjQxNGUwN2Q3MjJm
OTAzMjVhN2MzNjRkNDg5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIGNvbnN0IGNoYXIqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1l
bnROYW1lKCkKIAogdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNh
dGlvbkNsaWVudCogY2xpZW50KQogewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3Zp
ZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6
Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNs
aWVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCmluZGV4IDAzZmU5ZTM4Njc4ZjQwNTA3
MzI1NTA5YzIwMzg2N2M5Y2Y4MjBmZjEuLmM5OGM5OTg2ZGVkNmNkMjA1NDI2MTcyMTVmNjUzNmNl
NThmMjc5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2lu
ZG93UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIERPTVdpbmRvd1F1b3RhKiBET01XaW5kb3dRdW90
YTo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dRdW90YSogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1F1b3RhKj4oU3VwcGxlbWVudDxET01XaW5kb3c+
Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRv
d1F1b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PERPTVdpbmRvd1F1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDdiYTFkM2Q0
YjM2OTQ0MGM2NGUxN2RkMjBjYTk0NTM4YjhhZDliNzQuLjdhMDgwNDU5NTY5ODNhMzFmNmQ4MzRl
ZjdlYTc3MmZhNjY3MzZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVv
dGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdh
dG9yU3RvcmFnZVF1b3RhKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oTmF2aWdhdG9yKiBu
YXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpm
cm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRv
clN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBz
dXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VR
dW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0
b3JhZ2VRdW90YS5jcHAKaW5kZXggOTVjM2U0MzY0NzMxNjJhNTBkNjFiNWNlNzUxNjVlZTY4YjIx
YjcyNy4uMWExYzg0N2RjNDk3ZGM2NDg0NWY1NmVjZTU5MjYzYTQyNmFmNjMwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9y
U3RvcmFnZVF1b3RhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdl
UXVvdGEqIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3Iq
CiB7CiAgICAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZp
Z2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3Vw
cGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRv
dyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1l
bnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9E
T01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCAzNzk1NjUyNmZiZjI4NjkwZWNm
MDM5OTUyYzUyZjZlMDQ0NmJjYjRjLi45NjljMjM3ZjdjODE1NTE1M2RlMDcxZWM5NmE2MWE0YTQ2
MmQzZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgRE9NV2luZG93
U3BlZWNoU3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20oRE9NV2luZG93
KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzKj4oU3VwcGxlbWVudDxET01XaW5k
b3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2lu
ZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApp
bmRleCA3MmI1NjNlNGJiZjdkY2UwM2ZhMzA4ODBkMmZhNzcwYjg5ODY5M2E0Li5lN2I2MmExYTE3
YmQ5NmE5ZjVhMTNmZDA5ZTc0OWFiNGJjZTE5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9p
ZCBTcGVlY2hTeW50aGVzaXM6OnZvaWNlc0RpZENoYW5nZSgpCiBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyJiBTcGVlY2hTeW50aGVzaXM6OmVuc3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIo
KQogewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQotICAgICAgICBtX3Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI+KHRoaXMpOworICAgICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIg
PSBtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpOwogICAgIHJldHVy
biAqbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDYyZjY4
ZWM2NjNhODAyMTJjNmYzYWY3Yjg1ZTIzYzZiNGY3NDJhMGEuLjJmNTQyNzJhYzVjMDFkMGEyMzBl
NWMwZGYwNDUyNGFmYjJhNGUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQg
QXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0Rh
dGEsIGZsb2F0IHNhbXBsZVJhCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IGF1dG8gZGVjb2RpbmdUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1v
dmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spKTsKKyAgICBhdXRvIGRlY29kaW5nVGFzayA9IG1ha2VVbmlxdWU8
RGVjb2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CiAgICAgbV9xdWV1ZS5hcHBl
bmQoV1RGTW92ZShkZWNvZGluZ1Rhc2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUg
dGFzayBpcyBlZmZlY3RpdmVseSB0YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAppbmRleCBi
YzAwZWI5Zjg3ZDFiY2Q1OGNiZjc0OWI3ZGE3YzQ5M2NmN2U4ODc2Li5jZjkyNjljMzA0NGM0MzIy
ZDc0NGQwNjI5ZGRhMGZhODk0OTNlY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw4IEBAIGNsYXNz
IEF1ZGlvQnVmZmVyQ2FsbGJhY2s7CiAvLyBBc3luY0F1ZGlvRGVjb2RlciBhc3luY2hyb25vdXNs
eSBkZWNvZGVzIGF1ZGlvIGZpbGUgZGF0YSBmcm9tIGFuIEFycmF5QnVmZmVyIGluIGEgd29ya2Vy
IHRocmVhZC4KIC8vIFVwb24gc3VjY2Vzc2Z1bCBkZWNvZGluZywgYSBjb21wbGV0aW9uIGNhbGxi
YWNrIHdpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBkZWNvZGVkIFBDTSBkYXRhIGluIGFuIEF1ZGlv
QnVmZmVyLgogCi1jbGFzcyBBc3luY0F1ZGlvRGVjb2RlciB7CitjbGFzcyBBc3luY0F1ZGlvRGVj
b2RlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXN5bmNBdWRpb0RlY29kZXIpOwogcHVibGljOgogICAgIEFzeW5jQXVkaW9E
ZWNvZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IGJhOGMyNTVhZTdkN2RhNzNiYzlm
ZjY1NTQzZjFlMzdiYzk1NDA0YjMuLjBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2Uz
NDZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
YXNpY0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsK
ICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKLSAgICBhZGRJbnB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQp
KTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAg
YWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVs
Q291bnQpKTsKIH0KIAogLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpIGFzIGFuIG9wdGltaXph
dGlvbiBhbGxvd2luZyB0aGlzIG5vZGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW4tcGxhY2UgcHJv
Y2Vzc2luZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYmMxODljMDhjYmVmYzdjMTk2MDY0
NjZjMDc2OGI4ZmE2MzRiMTZhYi4uMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZlNzkwYWJmYmU2
ZTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQyLDggKzQyLDggQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlz
KSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAxKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwor
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAg
ICAgLy8gVGhlIHN1YmNsYXNzIG11c3QgY3JlYXRlIG1fcHJvY2Vzc29yLgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCmluZGV4IDQwYWMzMmM1YzU1YzNkMzJkMGUxNGI2YTdkMjJiMjQ2NzM5MGY0YmYuLjI1
MTBjNDBhN2Y2MTIzZDRjN2ZjMmQ2NDBhOTBiNGYwYTk4ZTZmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAKQEAgLTczLDcgKzczLDcgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNv
dXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGUKICAgICBtX3BsYXli
YWNrUmF0ZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicGxheWJhY2tSYXRlIiwgMS4w
LCAtTWF4UmF0ZSwgTWF4UmF0ZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIG1vbm8uICBBIGNhbGwg
dG8gc2V0QnVmZmVyKCkgd2lsbCBzZXQgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMgdG8g
dGhhdCBvZiB0aGUgYnVmZmVyLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5NTZjMTU4
NjIxODljNzE0MjljYmNmZDYwMDQyZjAwYzk4YmFlZjYuLmQ0Y2RiNzY1OGMwZjM1YjVmYzlhMjJj
ZTg5OGJjYjJiOTllZTRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5p
cXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1h
a2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUo
bWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAgIC8vIEFjY29yZGlu
ZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVyIHBhZ2UgbmF2aWdhdGUu
CiAgICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0
aXZpdHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCkBAIC0xNjYsNyArMTY2LDcgQEAg
QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVDb250ZXh0
KHRydWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRl
KCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVu
dFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZl
bnRRdWV1ZT4oKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC00MzIsNyAr
NDMyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gQXVkaW9Db250ZXh0OjpjcmVh
dGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmUKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWNv
ZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVm
ZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4mJiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICghbV9hdWRpb0RlY29kZXIpCi0gICAgICAg
IG1fYXVkaW9EZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsK
KyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigp
OwogICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0YSksIHNh
bXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA5NzU4ODc1NDc0N2UxNTI0ODE4OWY0OTcw
YzZkMzNlM2M2YWUxZTExLi5kOWFiYjk3NzdhOWQyNWVlYWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYQogICAgICwgbV9tdXRlZChmYWxzZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURl
c3RpbmF0aW9uKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykp
OwogfQogCiBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUu
Y3BwCmluZGV4IDE2MzczY2U5Mzc4ZDMyMmZkZDljMjUzZjljNzZkOTYzZTYxM2NkM2IuLjRhODI1
NWU2ZjBhZjA3NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzksNyAr
MzksNyBAQCBCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVh
ZEZpbHRlcik7CiAKICAgICAvLyBJbml0aWFsbHkgc2V0dXAgYXMgbG93cGFzcyBmaWx0ZXIuCi0g
ICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4
dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2UpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxC
aXF1YWRQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKIH0KIAogQmlx
dWFkRmlsdGVyVHlwZSBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCAw
ZTRlMzY4NWI4MmNlNDc3ZWM0ZTU4NTQ3ZjE2YWQ4YjcwZmM3OTA0Li5lODRiOTgwMzU2NzBmYjFk
Y2MzMjcwOTY2M2QyYjM5MDU1MmU2NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEJpcXVh
ZFByb2Nlc3Nvcjo6fkJpcXVhZFByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RT
UEtlcm5lbD4gQmlxdWFkUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6
OmNoZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlx
dWFkUHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lSZXNwb25zZShpbnQgbkZyZXF1ZW5jaWVzLCBjb25z
dCBmbG9hdCogZnJlcXVlCiAgICAgLy8gdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgcHJv
Y2Vzc2luZyBydW5uaW5nIGluIHRoZSBhdWRpbwogICAgIC8vIHRocmVhZCBvbiB0aGUgbWFpbiBr
ZXJuZWxzLgogICAgIAotICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgYXV0byByZXNwb25zZUtlcm5lbCA9IG1ha2VV
bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIAogICAgIHJlc3BvbnNlS2VybmVsLT5nZXRG
cmVxdWVuY3lSZXNwb25zZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5jeUh6LCBtYWdSZXNwb25zZSwg
cGhhc2VSZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IDIwYjhkYTE5ZTVmNDM5Y2ZlNTQ1NWYw
MWRjMjkwODc0NDZiMjNjMDguLmRmNTBmMjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMy
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1l
cmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bE1lcmdlck5vZGUuY3BwCkBAIC01OSw5ICs1OSw5IEBAIENoYW5uZWxNZXJnZXJOb2RlOjpDaGFu
bmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVu
CiAKICAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5wdXRzLgogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQotICAgICAgICBhZGRJ
bnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgICAgIGFk
ZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAotICAgIGFkZE91dHB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91
dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGlu
aXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDQ2MzU0OThjMDM0YzU5MzBiNGU4ZjIy
MDg2ZTE0YjJiNGJkMjkxMTcuLjgyZjY5YTA0Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkx
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNw
bGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIENoYW5uZWxTcGxpdHRlck5v
ZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwogCi0g
ICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAogICAgIC8vIENy
ZWF0ZSBhIGZpeGVkIG51bWJlciBvZiBvdXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11
bSBudW1iZXIgb2YgY2hhbm5lbHMgZmVkIHRvIGFuIGlucHV0KS4KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCi0gICAgICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgICAgICBhZGRPdXRw
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0
aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmNwcAppbmRleCAyMzgyZGFiY2M5Yzk5MjdjYWMzMWQzMjc1ZjIyMDNjYzhmNThh
MDkzLi5lMzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTUy
LDggKzUyLDggQEAgQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDb252
b2x2ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMp
KTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsK
IAogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFu
bmVsQ291bnQgPSAyOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZv
bHZlck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgLy8gQ3JlYXRl
IHRoZSByZXZlcmIgd2l0aCB0aGUgZ2l2ZW4gaW1wdWxzZSByZXNwb25zZS4KICAgICBib29sIHVz
ZUJhY2tncm91bmRUaHJlYWRzID0gIWNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCk7Ci0gICAg
YXV0byByZXZlcmIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBB
dWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tn
cm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CisgICAgYXV0byByZXZlcmIgPSBtYWtlVW5pcXVl
PFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFt
ZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CiAK
ICAgICB7CiAgICAgICAgIC8vIFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDQyNjVhMDA3NDll
YWZmZjZhOWUxYjlkMWRkYTYwZDRkYjcwMjhiMDMuLjgxYmQ3ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUx
ZjdjZTI1NTc4MDJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
bGF5Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2Rl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heEQKICAg
ICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAg
c2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRp
bWUpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4
dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPERl
bGF5Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggYTc1YmE2YjdjOTJlNzQ0
NGM2NTYwOGU4YWUxOGY5ZDUwMDAyNmEwNC4uMTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5
ZTZkMmFjYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGVsYXlQcm9jZXNzb3I6On5EZWxh
eVByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gRGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVs
YXlEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlbGF5RFNQS2VybmVs
Pih0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAK
aW5kZXggYWEwZTRhODAxMTllYmVkOWRkMzY5NmIzZmExMzA1ZGRmMzJiZDA1Mi4uMTQwOTZkOGYw
YzU5NmE1Mjk3MTY2NmVmODI2N2EwMjNmZGI0NGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBA
IC00Niw4ICs0Niw4IEBAIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Cisg
ICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgbV90aHJlc2hvbGQgPSBBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CiAgICAgbV9rbmVlID0g
QXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJrbmVlIiwgMzAsIDAsIDQwKTsKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7ICAgIAotICAgIG1fZHlu
YW1pY3NDb21wcmVzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNh
bXBsZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIG1fZHluYW1p
Y3NDb21wcmVzc29yID0gbWFrZVVuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUo
KSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogfQogCiB2b2lkIER5bmFtaWNzQ29t
cHJlc3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDZjOTRhNTIzYzNiMmEwMjEyYjJhNTRhMWE5YzhmMDI2
YmJkMWRiNWYuLjI1N2RmMmVjZTIzMzhjYmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC00Niw4ICs0
Niw4IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCiAKICAgICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImdh
aW4iLCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5jcHAKaW5kZXggMzgxYWU3Mjc5NGZiMGU3ZmVhNjMzMWFiZDMzYjIwYzE1ODQ1ZmY5Yi4u
OTEyZTZlYjIzMjE0NTY0M2Q2ZmRhZmJjMTFlOTY3NjRjM2QyZjVkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZSk7CiAKICAg
ICAvLyBEZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdo
YXQgdGhlIG1lZGlhIGVsZW1lbnQgLnNyYyBpcyBzZXQgdG8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7
CiB9CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpz
ZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAKICAgICAgICAg
aWYgKHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAgICAgICBkb3Vi
bGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgpOwotICAgICAg
ICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hh
bm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICAg
ICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2Ft
cGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gQnlwYXNzIHJlc2FtcGxpbmcuCiAgICAgICAgICAgICBtX211bHRpQ2hh
bm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4
IDViMmE1MDBkZDI5NGQxMDU1OGJjN2EwOGNmNzcxNmU0MjZiNWMyYWMuLmU0M2Y1NDQ4YmMyNmI4
NmFmNjkzZDAwOTk5NWM2NzM0ZjY5NTVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
CkBAIC01Niw3ICs1Niw3IEBAIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lCiAgICAgYXVkaW9Tb3Vy
Y2VQcm92aWRlci0+c2V0Q2xpZW50KHRoaXMpOwogICAgIAogICAgIC8vIERlZmF1bHQgdG8gc3Rl
cmVvLiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIGZvcm1hdCBvZiB0aGUgTWVk
aWFTdHJlYW0ncyBhdWRpbyB0cmFjay4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UKICAgICAgICAgbV9tdWx0aUNoYW5uZWxS
ZXNhbXBsZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAgICBkb3VibGUgc2NhbGVGYWN0
b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZTsKLSAgICAgICAgbV9tdWx0aUNoYW5u
ZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2Nh
bGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2Ft
cGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVt
YmVyT2ZDaGFubmVscyk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0g
bnVtYmVyT2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggNWI1MDI5YmZiY2U3N2FkNWI2YzNjODgzMjYwZGI5
ZGVmZGY2MTA0Yi4uYTk5Y2VhYWQ2YjVjMjFlMDlkZDIyNTNjMmFjZjMwNDU1NDc1M2U3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXRUeXBlKG1fdHlwZSk7
CiAKICAgICAvLyBBbiBvc2NpbGxhdG9yIGlzIGFsd2F5cyBtb25vLgotICAgIGFkZE91dHB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5j
cHAKaW5kZXggZjY0NzQ2OWUyMzU1ZWIzYTBjMDliM2IwODUyYmZiZWM2ZTQ4ZDI4ZC4uNTFjNjk5
MTZmZmRlNzBmNWU2ODBhYTkyN2NlZmVmN2NhNzMyYzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFBhbm5l
ck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9u
J3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRh
dGFiYXNlLgogICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpj
cmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUo
KSk7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlz
KSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAyKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwor
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAg
ICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxD
b3VudCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bl
cmlvZGljV2F2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGlj
V2F2ZS5jcHAKaW5kZXggYmIyYTA3ZDIzNTRlYmFmOTRkMDA0NjVhNGI0MWQ4NjA1NTU5OTg2Yi4u
ZWM5YTE3YzRmNTZlYjk5NjZkYzE3NjI3ZTkzNDA1YmExZmQ0OGM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcApAQCAtMTkyLDcgKzE5
Miw3IEBAIHZvaWQgUGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyhjb25zdCBm
bG9hdCogcmVhbERhdGEsIGNvbnN0IGZsb2F0KiBpCiAgICAgICAgIHJlYWxQWzBdID0gMDsKIAog
ICAgICAgICAvLyBDcmVhdGUgdGhlIGJhbmQtbGltaXRlZCB0YWJsZS4KLSAgICAgICAgbV9iYW5k
TGltaXRlZFRhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1f
cGVyaW9kaWNXYXZlU2l6ZSkpOworICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZCht
YWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CiAKICAgICAg
ICAgLy8gQXBwbHkgYW4gaW52ZXJzZSBGRlQgdG8gZ2VuZXJhdGUgdGhlIHRpbWUtZG9tYWluIHRh
YmxlIGRhdGEuCiAgICAgICAgIGZsb2F0KiBkYXRhID0gbV9iYW5kTGltaXRlZFRhYmxlc1tyYW5n
ZUluZGV4XS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggM2I2MjgxZDFlODQzZWQyOTljZjYxNTNjNzMy
Nzk3MDc0MTgwNjc3OC4uODAyMzczNDA3Zjc1ZDQ3ZTI1OWViNjA1NjM4MGY2MzVmMTNhY2VmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5h
bHlzZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5h
bHlzZXIoKQogICAgICwgbV9taW5EZWNpYmVscyhEZWZhdWx0TWluRGVjaWJlbHMpCiAgICAgLCBt
X21heERlY2liZWxzKERlZmF1bHRNYXhEZWNpYmVscykKIHsKLSAgICBtX2FuYWx5c2lzRnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CisgICAgbV9hbmFs
eXNpc0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOwogfQogCiBS
ZWFsdGltZUFuYWx5c2VyOjp+UmVhbHRpbWVBbmFseXNlcigpID0gZGVmYXVsdDsKQEAgLTgzLDcg
KzgzLDcgQEAgYm9vbCBSZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mZnRTaXplICE9IHNpemUpIHsKLSAg
ICAgICAgbV9hbmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7
CisgICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KHNpemUpOwog
ICAgICAgICAvLyBtX21hZ25pdHVkZUJ1ZmZlciBoYXMgc2l6ZSA9IGZmdFNpemUgLyAyIGJlY2F1
c2UgaXQgY29udGFpbnMgZmxvYXRzIHJlZHVjZWQgZnJvbSBjb21wbGV4IHZhbHVlcyBpbiBtX2Fu
YWx5c2lzRnJhbWUuCiAgICAgICAgIG1fbWFnbml0dWRlQnVmZmVyLmFsbG9jYXRlKHNpemUgLyAy
KTsKICAgICAgICAgbV9mZnRTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGQ1OWRlY2Y5
OTUxNmY2ZDAxYWY5YzFkOWZkYmYxZDBiMTAxOWU0MGYuLmQ1YjNhZmJmMjcxMDE0NTE0OTRiMTg5
Mzc3NjhiNjA1ZjZhM2I0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNjgsOCArNjgsOCBAQCBTY3Jp
cHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZQogICAgIEFTU0VSVChudW1iZXJPZklucHV0Q2hhbm5lbHMgPD0g
QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwogCiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVKYXZhU2NyaXB0KTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQo
bWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAg
ICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNDEwZDFkYWY1Yzg5NTQwMDlm
ZjA2MzZhODI5MDBiZjk0YWY0ZjhmMS4uZjNkMjEyMmRmNTFjNGYxYTI5MjI0ZTY5M2FiNDk1YmJj
MmI5MzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZl
U2hhcGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBXYXZlU2hh
cGVyRFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpCiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAogICAgIGlmICghbV90ZW1wQnVmZmVyKSB7Ci0gICAgICAgIG1fdGVt
cEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFu
dHVtICogMik7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwotICAgICAgICBtX3VwU2FtcGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKLSAgICAgICAg
bV9kb3duU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1
YW50dW0gKiAyKTsKLSAgICAgICAgbV91cFNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBz
dGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CisgICAg
ICAgIG1fdGVtcEJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdR
dWFudHVtICogMik7CisgICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAgICBtX3VwU2FtcGxlciA9IG1h
a2VVbmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKKyAgICAgICAgbV9kb3duU2Ft
cGxlciA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAg
ICAgICAgbV91cFNhbXBsZXIyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50
dW0gKiAyKTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVy
PihSZW5kZXJpbmdRdWFudHVtICogNCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDg0ODY5OTNmMjEw
ODRjY2M2MWNjZDgwYjJjMTg3ZTA4YzE1NWZkMDEuLjZlN2U4ZGQxYzljMTlmYTNjODVlM2Q5ZDg1
NWFiOWY0NTc4NWI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFdhdmVTaGFwZXJOb2RlOjpX
YXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsKICAgICBzZXROb2Rl
VHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3Vu
aXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CisgICAg
bV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2Ft
cGxlUmF0ZSgpLCAxKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4
IDI4OWMzOWY1ZjNmOWY3YTc5ZTlhNWI2YTZkODMxNWI1OTFmNDMyZGEuLmJmZTVlMGU0N2ZiODRh
MjhjNjNjNmUyOGIzMmUwZmMxMWU1YzY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtNDYsNyArNDYs
NyBAQCBXYXZlU2hhcGVyUHJvY2Vzc29yOjp+V2F2ZVNoYXBlclByb2Nlc3NvcigpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVs
Pih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlz
KTsKIH0KIAogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkq
IGN1cnZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggYjFjNDlkYjUyM2I5MzZiMGE0ZWMyMjEw
NDFiNzdkYTdjYzE0NzhmZC4uMjBkNjA2OTcyNDI4OTczNzc5ODJiODRlZTczZDRkYTYzNGVkOGZj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiB1c2luZyBDcmVkZW50aWFsUHJvbWlzZSA9IERP
TVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8QmFzaWNDcmVkZW50aWFs
Pj4+OwogCiBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKaW5kZXggOGMzZDEzNDZjNDAzMGNmYjNkODI3NzM3YTBh
MTVmM2YxY2I5YmFkNy4uMWI5MTJkOThkOWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQyZmFmMzU3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRN
ZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b0hpZE1lc3NhZ2UuY3BwCkBAIC0xNTAsOSArMTUwLDkgQEAgRmlkb0hpZE1lc3NhZ2U6OkZpZG9I
aWRNZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwg
Y28KICAgICB1aW50OF90IHNlcXVlbmNlID0gMDsKIAogICAgIHNpemVfdCBwb3MgPSBkYXRhLnNp
emUoKSA+IGtIaWRJbml0UGFja2V0RGF0YVNpemUgPyBrSGlkSW5pdFBhY2tldERhdGFTaXplIDog
ZGF0YS5zaXplKCk7Ci0gICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9I
aWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBk
YXRhLnNpemUoKSkpOworICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkSW5p
dFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5z
aXplKCkpKTsKICAgICBmb3IgKDsgcG9zIDwgZGF0YS5zaXplKCk7IHBvcyArPSBrSGlkQ29udGlu
dWF0aW9uUGFja2V0RGF0YVNpemUpCi0gICAgICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyss
IGdldENvbnRpbnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOworICAgICAgICBtX3BhY2tl
dHMuYXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElk
LCBzZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKIH0K
IAogRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlk
SW5pdFBhY2tldD4gaW5pdFBhY2tldCwgc2l6ZV90IHJlbWFpbmluZ1NpemUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAK
aW5kZXggNTViN2IyZDcxNTM2YTIzNTQ5MTNhZTM2ZTlmYjkxZWYwMGE4ZjA4My4uMjZiODBhYThh
NWYxMzk2M2M3NjhlN2U5MjNiYmFhYjJiODdiNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNzAsNyAr
NzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFj
a2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoYwogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1
aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBk
YXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tl
dD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwg
V1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCiAvLyBVMkYgSW5pdGlhbGl6YXRpb24g
cGFja2V0IGlzIGRlZmluZWQgYXM6CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNy
ZWF0ZUZyb20KICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFw
cGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBz
ZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENv
bnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9
CiAKIC8vIFUyRiBDb250aW51YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDAyMTQ1ZDBj
YzJlOGM5ZWFkYjBjODgyOTQxYjg1OWZjMGFlODA1MmQuLjViNjRhMDg3NDZhZjgwODBjZDJlNzI1
MDNmYTAwZDNjOTQ5ZmIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJh
c2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVzdWx0OwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91
bmlxdWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBz
eW5jaHJvbml6ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFz
ZU9wZW5UYXNrPigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwg
cmVzdWx0KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykp
OwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxEYXRh
YmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOworICAgIHRocmVhZC5zY2hlZHVs
ZUltbWVkaWF0ZVRhc2sobWFrZVVuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNo
cm9uaXplcikpOwogCiAgICAgLy8gRklYTUU6IGlPUyBkZXBlbmRzIG9uIHRoaXMgZnVuY3Rpb24g
YmxvY2tpbmcgdW50aWwgdGhlIGRhdGFiYXNlIGlzIGNsb3NlZCBhcyBwYXJ0CiAgICAgLy8gb2Yg
Y2xvc2luZyBhbGwgb3BlbiBkYXRhYmFzZXMgZnJvbSBhIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGly
YXRpb24gaGFuZGxlci4KQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVs
ZVRyYW5zYWN0aW9uKCkKICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7CiAKICAg
ICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwotICAg
IGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdU
Rk1vdmUodHJhbnNhY3Rpb24pKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNl
VHJhbnNhY3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiAgICAgTE9HKFN0b3JhZ2VB
UEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0cmFuc2FjdGlv
biAlcFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAgICAgZGF0YWJhc2VU
aHJlYWQoKS5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC01NDEsNyArNTQxLDcg
QEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQogewogICAgIGF1dG8mIHRocmVhZCA9IGRhdGFiYXNlVGhyZWFkKCk7CiAK
LSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNr
PigmdHJhbnNhY3Rpb24pOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFu
c2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVs
aW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxu
IiwgdGFzay5nZXQoKSk7CiAgICAgdGhyZWFkLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsK
IH0KQEAgLTc2Myw3ICs3NjMsNyBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1l
cygpCiAgICAgaWYgKHRocmVhZC50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsK
KyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlz
LCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFz
ayhXVEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9u
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5jcHAKaW5kZXggM2JhYmQ0OTU2NmYxNGExYjNjMGQzYjE3YmY0YzdmMzJjNWUz
ZDVmNy4uZDY0OTdjMzk3ZmE0NzQyODU5ZTA1ODYyMjM2ZWRlZTQzZDRlZjM5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VUaHJl
YWQ6OkRhdGFiYXNlVGhyZWFkKCkKLSAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihzdGQ6
Om1ha2VfdW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCisgICAgOiBtX3RyYW5z
YWN0aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigp
KQogewogICAgIG1fc2VsZlJlZiA9IHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDhkZGNjNTk4
NTUxNTc2ZDJhMmMxMGY0MmU0YWQxMmE4MjU5YjUxOS4uYzI4YTk2ZjQ1ODM5ZWY1NGRhZjFmOTlh
MWFkNThkN2VjZDRhNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQg
RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAg
IExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsK
IAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCi0gICAgICAgIG1fb3BlbkRhdGFiYXNlTWFw
ID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKKyAgICAgICAgbV9vcGVu
RGF0YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0
byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCkBAIC05NTYsNyArOTU2LDcg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6
ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdp
biBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nQ3JlYXRlZC5nZXQob3Jp
Z2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6
bWFrZV91bmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25l
ZFNldCA9IG1ha2VVbmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFt
ZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nQ3JlYXRlZC5hZGQob3JpZ2lu
Lmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAgfQpAQCAtMTAwMiw3ICsx
MDAyLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFz
aE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhl
IG9yaWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5n
ZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVk
U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVTZXQgPSBv
d25lZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi5pc29sYXRl
ZENvcHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCmluZGV4IDg1ZjFiNjM1YzNlNDli
M2ZlMWE4MWY5NDg3ODI0ODBlMWRlNDhmYjUuLjhhNTRhMzY2N2EwN2FhY2UwM2E5NjBmYjI1NjRm
N2ViZGYzYmQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxTdGF0ZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQ7CiBj
bGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ7CiAKIGNsYXNzIFNRTFN0YXRlbWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1FMU3RhdGVtZW50KERhdGFi
YXNlJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNRTFZhbHVlPiYmLCBSZWZQdHI8U1FMU3RhdGVt
ZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmLCBpbnQg
cGVybWlzc2lvbnMpOwogICAgIH5TUUxTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjBkNjk3
MzQ3NzRkYmZiZjMwYmQ4ZjM5Y2U0YzU5NTcyMTRlOTAwYy4uNGNiMDQxZTQ1MmM4MGY1ZjU5YmIy
NzIxZWFiOGVjMWE4ZjYxODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxT
dGF0ZW1lbnQsIE9wdGlvbmEKICAgICBlbHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJt
aXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8g
c3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNx
bFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAg
IGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNx
bFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOwogCiAg
ICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50LT5zZXREYXRh
YmFzZURlbGV0ZWRFcnJvcigpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rp
b246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAgICAgfQogCiAgICAgQVNTRVJUKCFt
X3NxbGl0ZVRyYW5zYWN0aW9uKTsKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwg
bV9yZWFkT25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRl
VHJhbnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOwog
CiAgICAgbV9kYXRhYmFzZS0+cmVzZXREZWxldGVzKCk7CiAgICAgbV9kYXRhYmFzZS0+ZGlzYWJs
ZUF1dGhvcml6ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJp
dmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRy
aXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCmluZGV4IDc5YWE1NjE4MWZmZWYzYWIxYTkyYWE1
N2ZlY2RiNmZiYTU5ZTZmMGIuLjEyOWQ4NmZmY2ZiZDE1N2E4MGIwMTkyZTNiNDk5NzEzM2JlYjc4
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRv
cldlYkRyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2
aWdhdG9yV2ViRHJpdmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBOYXZpZ2F0b3JXZWJEcml2ZXIq
IE5hdmlnYXRvcldlYkRyaXZlcjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBO
YXZpZ2F0b3JXZWJEcml2ZXIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJE
cml2ZXIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOworICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKICAg
ICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVU
byhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRv
ckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3Bw
CmluZGV4IDg4YTk3ODA0NGJjMWU3MDg5MzM1NjVkYzYyZDBhMzE0NmIzOGI0MjYuLjM3NmQxNTVj
YTliMmY1ZDJhNGFiMTg1MmM3NzZkOWMxOGYyZTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBOYXZpZ2F0
b3JHUFUqIE5hdmlnYXRvckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBO
YXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHUFUqPihTdXBw
bGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAg
ICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8TmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1
cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgKaW5kZXggMWIzNDI1MDRkNjk1NTA4ZjA4MTZjY2I1NTgyZjVi
ZDlhYTc2MWE2Yi4uNWY1N2VmMTE3NzUzMWEwYWMzZDk2MGRlYjFkNDM4NzExYTRmMDViZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAg
Y2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAK
ICAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKICAgICB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1ha2VfdW5p
cXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51bWVyYXRp
b25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3
RW50cnk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcu
aAppbmRleCAwZTMxZmZiZGUwYjE0ODZmNmM2ZjY1ZTIwZWI2MzhhZTg4MWI4N2Y4Li5jYmNjNDg0
YjY4MjUwYzBhYTA5YjU5OTQzYWRjNzllODEwMDkyNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RW50cnlQb2ludFNjYWZmb2xkaW5nLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIE1ldGFs
IHsKIGNsYXNzIFR5cGVOYW1lcjsKIAogY2xhc3MgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbnRyeVBv
aW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRl
ci5jcHAKaW5kZXggY2EzNDZlMzJiMjk5YTEwY2VkMjU2NWQwMWQ4NTQ1M2JkODBkMTQ3NC4uNDdi
MDYwYTdjNWFhZmMzMmU4ODg3NWZmYzRhZjg5ODk2ODk2MjU3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHAKQEAgLTc2NCw5ICs3NjQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnlQb2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0
ZUVudAogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAg
ICAgfTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3Mu
dmVydGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywg
bV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywg
bV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMpOwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0
Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwg
bV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hh
ZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNv
dXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9t
YXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5p
dGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdt
ZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFk
ZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
KSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtNzkwLDcgKzc5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eVBvaW50U2NhZmZvbGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0
ZUVuCiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAg
ICB9OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5z
aGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVFbnRyeVBvaW50
U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1l
ciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNz
LnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGlu
Zz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNo
ZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VN
YXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggMTg1YmEwYjA4
OGE1Y2VkNGM1YjY2MzZmYTk0NDJjMDAzNDBkZDAyYS4uNDBiNjJjMzdkYmUyNTgwZTIzZDU5MGMw
OTFlYmI0MTdjYTliODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjcyLDE5ICsy
NzIsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3Jl
YXRlTmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICBzd2l0Y2ggKHVubmFtZWRUeXBl
LmtpbmQoKSkgewogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5j
ZTogewogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVm
ZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
ZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBl
UmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVm
ZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVS
ZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2Fz
dDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5h
bWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCks
IHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFt
ZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVy
ZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUp
OwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1l
Tm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUu
YWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVJlZmVyZW5j
ZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVy
ZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFT
VDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFy
cmF5VHlwZS5udW1FbGVtZW50cygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlU
eXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51
bUVsZW1lbnRzKCkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggMzMzYmRmNjJjMDI5ODY2YTc0OWEzYzYxMmU1
ZTRkYmExNmIyNmE3ZS4uYmRlZDUzZTE4YWZjOGE0ODE3NTgxZmEzYWRjMjI3ODU2ZWJkNDg5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwCkBAIC05NjYsMTQgKzk2NiwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKIAogdm9pZCBDaGVja2Vy
Ojphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNU
OjpVbm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90
YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlw
ZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RG
TW92ZSh1bm5hbWVkVHlwZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQo
JmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlw
ZSkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlv
bikpOwogfQogCiB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZh
bHVlKCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9u
LCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNz
aW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90
YXRpb24pKTsKIH0KQEAgLTk4MSwxMCArOTgxLDEwIEBAIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlw
ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
CiB2b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwg
UmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5u
b3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewogICAgIHJlc29sdmluZ1R5cGUudmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1h
a2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29s
dmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90
eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihy
ZXN1bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFk
ZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigp
KSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CiAgICAgfSkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0
eXBlQW5ub3RhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IDdjYWI2Yzk1ZWMzNTZlNzZhYzVmYzRmNzAyYmRj
YzFlYWNjOWY4NzAuLmU2OGU0ODZlNzg1YjRjYzdlNzNhNGIxZDg0Nzc4ODg1MDFlZTkyZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5jcHAKQEAgLTc0MCwxOSArNzQwLDE5IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGljKCkg
LT4gRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KICAgICBz
d2l0Y2ggKHRva2VuLT50eXBlKSB7CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7
CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0
dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9
OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJl
c3VsdCkpIH07CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlNwZWNpYWxpemVkOiAgewog
ICAgICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0g
ICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgq
cmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihX
VEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpSZWdpc3Rl
cjogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFudGljKTsKLSAgICAgICAg
cmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQp
KSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUo
KnJlc3VsdCkpIH07CiAgICAgfQogICAgIGRlZmF1bHQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3Vs
dCwgQnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVzb2x2aW5nVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZpbmdUeXBlLmgKaW5kZXggNTU5Y2U4YmE5M2IyOWQ1MTdmYTc3M2Y2YTVmNTI3ZGRm
NGE4NWIwMS4uNDU3MDBjZWQ4ZmQzNDQ5YzRkYTQ5NTlmNzFhNDAyYWEwMmQ2ZTQzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNv
bHZpbmdUeXBlLmgKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewogLy8gSXQg
ZXhpc3RzIHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBk
b2VzIHRoZSByaWdodCB0aGluZy4KIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5
LgogY2xhc3MgUmVzb2x2aW5nVHlwZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVzb2x2aW5nVHlwZSgpCiAgICAgICAgIDogbV9pbm5lcihSZWZQdHI8UmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2U+KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAppbmRleCBiZjkwZjZjMzYwNTQ4ZDUyYzhm
ZDhlZWVjNzUzYzc4ZDhmYTliZjFjLi5kOTUyMjMwNWFkYTFlZTk3MWYxNjUyOGRlMDY2MDRiYjZh
OTZiMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJO
YXZpZ2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtl
ck5hdmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgV29ya2VyTmF2aWdhdG9yR1BVKiBX
b3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20oV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAg
ICAgV29ya2VyTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2
aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsK
KyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JH
UFU+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAg
ICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwCmluZGV4IGVkNWEzY2M4MzRmZTE5ZDQ4ODhiODU1NTA0YmExNTVkNDgz
ZmM0MDcuLmMxYmFjODZkM2FiMmIwZDkxM2ZjZTc0MjE0MzFhOTQ0NTllZWQyZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmNsZWFyQ2xpZW50KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZENvbm5lY3QoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkQ29ubmVjdCgpOwogICAgIH0pKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFw
cGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0p
KTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogCiB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShi
aW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RG
TW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5h
cnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0pKTsKQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnVmZmVy
ZWRBbW91bnQpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewor
ICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVk
QW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50
KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVk
QW1vdW50KTsKICAgICB9KSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2ln
bmVkIGIKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Cisg
ICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAgICB9KSk7CkBAIC0yMDgsNyAr
MjA4LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0
dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNo
YWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9z
aW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKICAgICAgICAgfSkpOwpAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlCiAKIHZvaWQgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkK
IHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQo
bWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdl
RXJyb3IoKTsKICAgICB9KSk7CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogCiB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBncmFkZVVS
TCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGdyYWRlVVJM
KCk7CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDYwNzE0NDA5MjRmYjJjZTY3ZjUzNDA2MmQ3
OWU4ZTNiMDRlZTFjNTAuLmEwN2E4NzYzYWZiOTY5YjQyMDcwYmM0OWE4NjIzOWI3ODNkNmViYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVj
dFN0YXR1cyBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgcmVxdWVzdGVkVVIK
ICAgICBtX2FsbG93Q29va2llcyA9IHZhbGlkYXRlZFVSTC0+YXJlQ29va2llc0FsbG93ZWQ7CiAg
ICAgU3RyaW5nIHVzZXJBZ2VudCA9IG1fZG9jdW1lbnQtPnVzZXJBZ2VudChtX2RvY3VtZW50LT51
cmwoKSk7CiAgICAgU3RyaW5nIGNsaWVudE9yaWdpbiA9IG1fZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkudG9TdHJpbmcoKTsKLSAgICBtX2hhbmRzaGFrZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
U29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwg
Y2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CisgICAgbV9oYW5kc2hha2UgPSBtYWtlVW5p
cXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2Vy
QWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwogICAgIG1faGFuZHNoYWtlLT5y
ZXNldCgpOwogICAgIGlmIChtX2RlZmxhdGVGcmFtZXIuY2FuRGVmbGF0ZSgpKQogICAgICAgICBt
X2hhbmRzaGFrZS0+YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKG1fZGVmbGF0ZUZyYW1lci5jcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoKSk7CkBAIC03MDMsNyArNzAzLDcgQEAgYm9vbCBXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzRnJhbWUoKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4
dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0Zy
YW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1h
a2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IFdlYlNvY2tldEZy
YW1lOjpPcENvZGVUZXh0OwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVT
dHJpbmc7CiAgICAgZnJhbWUtPnN0cmluZ0RhdGEgPSBzdHJpbmc7CkBAIC03MTMsNyArNzEzLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcm
IHN0cmluZykKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdG
cmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVk
RnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAg
ICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVk
RnJhbWVUeXBlVmVjdG9yOwogICAgIGZyYW1lLT52ZWN0b3JEYXRhLnJlc2l6ZShkYXRhTGVuZ3Ro
KTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhcgogdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BD
b2RlLCBCbG9iJiBibG9iKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1
cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtl
X3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1
ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5mcmFt
ZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVCbG9iOwogICAgIGZyYW1lLT5ibG9iRGF0YSA9ICZibG9i
OwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdv
aW5nRnJhbWVRdWV1ZSgpCiAgICAgICAgICAgICAgICAgcmVmKCk7IC8vIFdpbGwgYmUgZGVyZWZl
ZCBhZnRlciBkaWRGaW5pc2hMb2FkaW5nKCkgb3IgZGlkRmFpbCgpLgogICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9ibG9iTG9hZGVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmJs
b2JEYXRhKTsKLSAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0
aGlzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFk
ZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKICAg
ICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKICAg
ICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KG1fZG9jdW1lbnQuZ2V0KCksICpmcmFt
ZS0+YmxvYkRhdGEpOwogICAgICAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBl
bmQoV1RGTW92ZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCmluZGV4IGYyZmE2MjA5
YzA0OGY1MTUxOGEyNWVlYzEzYWVmMjU2NGM5ZjRlN2IuLmVlMzNlYTBmZTVjZjFkNWJmNzlhMmRh
MDY3MDdiNzNjZDNhNzhjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTE1NSw3ICsx
NTUsNyBAQCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkK
IAogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0
RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhp
cyk7CiB9CiAKIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0
CkBAIC0xNzAsOCArMTcwLDggQEAgYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZs
YXRlKCkgY29uc3QKICNpZiBVU0UoWkxJQikKIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRU
YWtlT3Zlck1vZGUgbW9kZSkKIHsKLSAgICBtX2RlZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJTb2NrZXREZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7Ci0gICAgbV9pbmZsYXRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0SW5mbGF0ZXI+KCk7CisgICAgbV9kZWZsYXRlciA9IG1h
a2VVbmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOworICAgIG1faW5m
bGF0ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOwogICAgIGlmICghbV9kZWZs
YXRlci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2luZmxhdGVyLT5pbml0aWFsaXplKCkpIHsKICAgICAg
ICAgbV9kZWZsYXRlciA9IG51bGxwdHI7CiAgICAgICAgIG1faW5mbGF0ZXIgPSBudWxscHRyOwpA
QCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVm
bGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvCiBzdGQ6OnVuaXF1ZV9w
dHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7CiAjaWYgVVNFKFpMSUIpCi0gICAgYXV0byByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBpZiAo
IWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5v
cENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9h
ZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBAIC0xOTYsNyArMTk2LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmRlZmxhdGUoV2ViU29ja2V0RnIKICAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9kZWZs
YXRlci0+c2l6ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTIxMCw3
ICsyMTAsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRl
eHQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAg
IGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAg
ICBpZiAoIWVuYWJsZWQoKSAmJiBmcmFtZS5jb21wcmVzcykgewogICAgICAgICByZXN1bHQtPmZh
aWwoIkNvbXByZXNzZWQgYml0IG11c3QgYmUgMCBpZiBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJh
bWUgZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAppbmRl
eCAxZDZmMTc4MjJjODA1MjgxYjcwYTQxNjIwZGNkZWU2YWQyYWI4ODljLi40YTQ4NjVmODQ5NGQw
NjEzZWFjMzIxYTU5NGY4YmFlMTk5OTZiYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgV2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKGludCB3aW5kb3dCaXRz
LCBDb250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHQKIHsKICAgICBBU1NFUlQobV93aW5kb3dCaXRz
ID49IDgpOwogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPD0gMTUpOwotICAgIG1fc3RyZWFtID0g
c3RkOjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5n
ZXQoKSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lk
IFdlYlNvY2tldERlZmxhdGVyOjpyZXNldCgpCiBXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0
SW5mbGF0ZXIoaW50IHdpbmRvd0JpdHMpCiAgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykK
IHsKLSAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9z
dHJlYW0gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAg
ICBtZW1zZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5OTQwNzNlYWE1ZThi
MjMwZDFjOGIwMGMxNmM1OTY0M2U5Nzg0MjY4Li5kYzZmNjYwZmQzODhjZWZmYWYwZWJlZjZlNjYw
ZTZiNjk1YmI2MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAogCiAgICAgYm9v
bCBzZW50ID0gbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh7
CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLAotICAg
ICAgICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJv
eHksIHBlZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigp
LCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFtjbGllbnRX
cmFwcGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IG1h
a2VVbmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250
ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKGNsaWVudFdy
YXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJsaWVyLCB3ZSBuZWVkIHRv
IGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBlZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCmluZGV4IGQ5N2I1YzJh
ODVhOWQyMzI4Zjk4NDBmNDRkM2QxZTk2MzJjODJkOWUuLjc3NmM0M2FlYzBiOWI1YmRlYWRjM2Rk
ODkxMjZhY2VkNmJhNzUxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvTmF2aWdhdG9yV2ViVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
TmF2aWdhdG9yV2ViVlIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIE5hdmlnYXRvcldlYlZSKiBOYXZp
Z2F0b3JXZWJWUjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JX
ZWJWUiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYlZSKj4oU3VwcGxlbWVu
dDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNT
TC5jcHAKaW5kZXggYmMyM2Q1OWNjMzEyMzdiMTQ5N2E3NmFjYzU5ZDNlYWY1ZDJiNTg0MC4uNmNh
NjdmMzkxYTMxZmNkMzg2OTI1NWIyMWYyZmNiN2YzZmJmOWJiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9w
ZW5TU0wuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0SW1w
bCA6IHB1YmxpYyBDcnlwdG9EaWdlc3RDb250ZXh0IHsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHRJbXBsPigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4oKTsKICAgICB9CiAKICAg
ICBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
eXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCAzMTUzMTY4MDgwN2I3MmQ1ZWY5MzgwOTE0ZTdh
ZTI0MGFkOWQwMzk3Li5lNTNlMTk1YjM1ZjQ5OGY3OTUyNTE1MWViYzJhY2ViNWZhZmNkMjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFBBTCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4g
Q2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tHZW5l
cmljPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrR2VuZXJpYz4oKTsKIH0KIAogQ2xv
Y2tHZW5lcmljOjpDbG9ja0dlbmVyaWMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9tYWMvQ2xvY2tDTS5tbQppbmRleCBjNjg5MzIxNWYwNmIwYzY3NGQ1NDYwODMzYjFhNGQ1MWNj
MzJiNjE0Li45ZTA3MWI3ODE0ZTQ0ZmUwMDQ0MmU2NmM3MjBiMmJmYjMxMzA2OWExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQpAQCAtMzksNyArMzks
NyBAQCBzdGF0aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDsKIAogc3Rk
Ojp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDbG9ja0NNPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrQ00+KCk7
CiB9CiAKIENsb2NrQ006OkNsb2NrQ00oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggY2FjYWI4NTY4Yzg2MTEyZDljZGZlZmMzMDkwMjZh
ZDljODE1MzNlNS4uYjM1ZmMxNTY0MzdmMWNhMDlkNjQyMmJkNTljNzEzM2ZhYzJjNjBhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0x
NTc1LDcgKzE1NzUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogdm9pZCBBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdD
b21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKCkKIHsKICAgICBpZiAoIW1f
Y29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSkKLSAgICAgICAgbV9jb21wdXRlZE9iamVjdEF0
dHJpYnV0ZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRl
Q2FjaGU+KCk7CisgICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IG1ha2VV
bmlxdWU8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlPigpOwogfQogCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggZWRmZGJiMGEwNmZkNmVkYTI1
MDQ4Yjk3MTliOWVmMWJhOWUxMzQ0My4uZTZkZWE5NjExZjliNDg4MGE1YTE5YjlhZDFlMWJkZTcx
YzE4NDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAg
LTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShE
aWRTZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlOb3RpZnkgc3luYwogICAgICAgICAgICAgLy8g
T3RoZXJ3aXNlLCBpZiBzeW5jaHJvbm91c2x5IG5vdGlmeSBpcyBmYWxzZSwgcXVldWUgYSBtaWNy
b3Rhc2sgdG8gcnVuIGZpbmlzaCBub3RpZmljYXRpb24gc3RlcHMgZm9yIGFuaW1hdGlvbiB1bmxl
c3MgdGhlcmUKICAgICAgICAgICAgIC8vIGlzIGFscmVhZHkgYSBtaWNyb3Rhc2sgcXVldWVkIHRv
IHJ1biB0aG9zZSBzdGVwcyBmb3IgYW5pbWF0aW9uLgogICAgICAgICAgICAgbV9maW5pc2hOb3Rp
ZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSB0cnVlOwotICAgICAgICAgICAgTWljcm90
YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRN
aWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKKyAg
ICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVu
aXF1ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNy
b3Rhc2tQZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZmluaXNoTm90aWZpY2F0aW9u
U3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGZpbmlz
aE5vdGlmaWNhdGlvblN0ZXBzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01Qcm9taXNlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVBy
b21pc2VQcm94eS5oCmluZGV4IDdkYTQ2YTYxNTA0ZWYyNDgxNWE2OTRkZmJhMTJjMjhiMWVmNGZl
NjYuLjYyMWI4OTA1MWJiNDhkYjAzMDFlYTgwNDdjN2FmZWZmYjY4Y2RlNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCkBAIC02MCw2ICs2MCw3IEBA
IGNsYXNzIERPTVByb21pc2VQcm94eSB7CiAKIHRlbXBsYXRlPD4KIGNsYXNzIERPTVByb21pc2VQ
cm94eTxJRExWb2lkPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRE9NUHJvbWlzZVByb3h5KCkgPSBkZWZhdWx0OwogICAgIH5ET01Qcm9taXNlUHJveHkoKSA9
IGRlZmF1bHQ7CkBAIC04NCw2ICs4NSw3IEBAIGNsYXNzIERPTVByb21pc2VQcm94eTxJRExWb2lk
PiB7CiAvLyBGb250RmFjZSBhbmQgRm9udEZhY2VTZXQuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExU
eXBlPgogY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjayB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlICgpPjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXgg
ZGIwYzFkYzc2ZjhhMjg5NzA0NWVlMmNmYzkxOTIzZDU4ZGYxYjZmOS4uYzVjNDcwNjFiZmFjYTFm
Y2E3MjhiZTI3YjBhMmI0YTlmMGIzMDI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBKU0RPTVdp
bmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJl
ZjxKU0M6Ok1pY3IKICAgICBKU0RPTVdpbmRvd0Jhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWlj
cm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBh
dXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Qu
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRl
eCA2Mjk1ZjU4NGNmZThhMTcyOWRkZjZiMThkNzc1NDlmZDQ0YzlhMGJlLi5kYjVlNzczNDkwYmVk
ZmJmM2UwYzEwY2YyM2QwYTM2YzhhM2JkYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIEV2
ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQogc3RkOjp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRXcmFwcGVyPiBqc0V2ZW50VGFyZ2V0Q2Fz
dChWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBq
c0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBl
ZCgpLCAqdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdy
YXBwZXI+KHRhcmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKICAgICBpZiAoYXV0byogd2luZG93
ID0gdG9KU0RPTVdpbmRvdyh2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRv
dy0+d3JhcHBlZCgpLCAqd2luZG93KTsKICAgICBpZiAoYXV0byogc2NvcGUgPSB0b0pTV29ya2Vy
R2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBw
ZWQoKSwgKnNjb3BlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4
IGQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcwYmI0MDIuLjliZDY2NDQ2MDE3MDU0
OTVhOTRlN2IzZmFkZjA0OGYzYzdiMDQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChK
U0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SgogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWlj
cm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBh
dXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBtaWNyb3Rhc2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1p
Y3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxs
YmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNh
bGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMWQwMDU0YzI4OTJkNTAxM2RmMjZhYmZmYTNl
MWMyZjY3ZGVlNDgxOS4uYTM1Mzc4NTVlN2E3ZDRmZDJiZDJjNGM4OGI3ZmE3YjYyOTU1NGJiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4+IHRyYW5zZmVyQXJyYXlCdWZmZQog
ICAgIGlmIChhcnJheUJ1ZmZlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CisgICAgYXV0byBjb250ZW50cyA9IG1ha2VV
bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1ZmZlcnMuc2l6ZSgpKTsKIAog
ICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3Qg
YXJyYXlCdWZmZXJJbmRleCA9IDA7IGFycmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6
ZSgpOyBhcnJheUJ1ZmZlckluZGV4KyspIHsKQEAgLTM0NTEsNyArMzQ1MSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShFeGVjU3RhdGUmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVB
cnJheSB3YXNtTW9kdWxlczsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250
ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+KCk7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJnN0
YXRlLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1bGVzLCAKQEAgLTM0NjksNyAr
MzQ2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJy
YXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNl
cmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVm
ZmVycykgOiBudWxscHRyLCBXVEZNb3ZlKGltYWdlQnVmZmVycykKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCi0gICAgICAgICAgICAgICAgLCBzdGQ6Om1ha2VfdW5pcXVlPFdhc21Nb2R1bGVBcnJh
eT4od2FzbU1vZHVsZXMpCisgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21Nb2R1bGVB
cnJheT4od2FzbU1vZHVsZXMpCiAjZW5kaWYKICAgICAgICAgICAgICAgICApKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5k
ZXggNWM0NjYyOTRiZWU1NmMyMWJmMGY2M2QxNWIwZjhkZjBmMjdhM2EwZS4uNGY0YjBjZjNiN2Vl
Y2RkZDA3ODcwMjU1MjA4ODk1ZTQ1ZmEyYTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQo
YXJyYXlMZW5ndGgpOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBhdXRvIGFycmF5
QnVmZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
PigpOwogICAgIHdoaWxlIChhcnJheUxlbmd0aC0tKSB7CiAgICAgICAgIHVuc2lnbmVkIGJ1ZmZl
clNpemU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCmluZGV4
IDI0NmY2NGE5ZjYzMjJiNTg3MGNiYjY4MmVkYjJkNGVkYjk1M2VjN2MuLjNiMTEyNTJhZTY0Y2Fm
MmU0ZmU3MzllMzFlZTEwOTk1NGQ1NmE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQg
SlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0pCiAgICAgSlNWTUNsaWVudERh
dGEqIGNsaWVudERhdGEgPSBuZXcgSlNWTUNsaWVudERhdGEoKnZtKTsKICAgICB2bS0+Y2xpZW50
RGF0YSA9IGNsaWVudERhdGE7IC8vIH5WTSBkZWxldGVzIHRoaXMgcG9pbnRlci4KICAgICAKLSAg
ICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChzdGQ6Om1ha2VfdW5pcXVlPERPTUdDT3V0
cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOworICAgIHZtLT5oZWFwLmFkZE1hcmtp
bmdDb25zdHJhaW50KG1ha2VVbmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGll
bnREYXRhKSk7CiAgICAgICAgIAogICAgIGNsaWVudERhdGEtPm1fbm9ybWFsV29ybGQgPSBET01X
cmFwcGVyV29ybGQ6OmNyZWF0ZSgqdm0sIHRydWUpOwogICAgIHZtLT5tX3R5cGVkQXJyYXlDb250
cm9sbGVyID0gYWRvcHRSZWYobmV3IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggMTZhNzZjNDk1MjlhNGJiODcxY2I2NmNhM2FkNzVhMmQ3NmE4MDY1NS4uZDIz
OTg1N2FhM2JkZGU5ZmViOWNiODc0MGZjZjVkNjQ5ZTM1MGRiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQog
ICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9i
amVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKIAotICAgIG1fY29uc29sZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xv
YmFsU2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29s
ZUNsaWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKaW5kZXggMjljODE4NjgzNmVhMDU0MTFlOGYxZWQ2
NDFjMDU3MGNlODE3NjgxNS4uYWE1NmUyZmRlODU1NzdhY2Y5YzA0NzRjODk4NzdmNGUwZDVjNTEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgTWV0
aG9kKiBDQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3Rh
bmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGlu
c3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzTWV0aG9kICYmIG1faXNhLT5oYXNN
ZXRob2Qob2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5p
cXVlPENNZXRob2Q+KGlkZW50KTsKKyAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPENN
ZXRob2Q+KGlkZW50KTsKICAgICAgICAgQ01ldGhvZCogcmV0ID0gbWV0aG9kLmdldCgpOwogICAg
ICAgICBtX21ldGhvZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAg
ICByZXR1cm4gcmV0OwpAQCAtMTAzLDcgKzEwMyw3IEBAIEZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAog
ICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+
KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAg
aWYgKG1faXNhLT5oYXNQcm9wZXJ0eSAmJiBtX2lzYS0+aGFzUHJvcGVydHkob2JqLCBpZGVudCkp
IHsKLSAgICAgICAgYXV0byBmaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0ZpZWxkPihpZGVudCk7
CisgICAgICAgIGF1dG8gZmllbGQgPSBtYWtlVW5pcXVlPENGaWVsZD4oaWRlbnQpOwogICAgICAg
ICBDRmllbGQqIHJldCA9IGZpZWxkLmdldCgpOwogICAgICAgICBtX2ZpZWxkcy5zZXQobmFtZS5p
bXBsKCksIFdURk1vdmUoZmllbGQpKTsKICAgICAgICAgcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IGYyZjYyMDgyYTgwOGExOWYxMGE1ZDkzNWQ5MjJi
NzczYzEyMjFjMjguLjA0Y2RkY2QyNGNhYTgyOWMzMmU1NmVjMjczYWZiZDM1MWYyNTRlMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAtNDksNiArNDksNyBAQCBjbGFz
cyBSb290T2JqZWN0OwogY2xhc3MgUnVudGltZU9iamVjdDsKIAogY2xhc3MgRmllbGQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2
YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IElu
c3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KaW5kZXggYjg2Zjc1MWEwYTcxMzhiZTAwNzc2YTc4Y2JjMmE2ZDQ1ZGQzNzUw
Mi4uYTNkOGQzMmYyOGRkODA1OGE0YWI0NDI3Mzk1MzQ0MDc0ZjI2Yzc1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgTWV0aG9k
KiBPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3Rh
bmNlKikgY29uc3QKICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJT
Y3JpcHROYW1lRm9yU2VsZWN0b3I6b2JqY01ldGhvZFNlbGVjdG9yXTsKIAogICAgICAgICAgICAg
aWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5n
KiltZXRob2ROYW1lLmdldCgpXSkgfHwgIXN0cmNtcChvYmpjTWV0aG9kU2VsZWN0b3JOYW1lLCBi
dWZmZXIuZGF0YSgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CisgICAg
ICAgICAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPE9iamNNZXRob2Q+KHRoaXNDbGFz
cywgb2JqY01ldGhvZFNlbGVjdG9yKTsKICAgICAgICAgICAgICAgICBtZXRob2RQdHIgPSBtZXRo
b2QuZ2V0KCk7CiAgICAgICAgICAgICAgICAgbV9tZXRob2RDYWNoZS5hZGQobmFtZS5pbXBsKCks
IFdURk1vdmUobWV0aG9kKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODksNyArMTg5
LDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAgICAgICBtYXBwZWROYW1l
ID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5OlVURjhLZXlOYW1lXTsKIAogICAgICAg
ICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5T
U3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgW2tleU5hbWUgaXNFcXVhbDooX19icmlkZ2Ug
TlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuZXdG
aWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
a2V5TmFtZSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IG1ha2VVbmlxdWU8T2Jq
Y0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5TmFtZSk7CiAgICAgICAgICAgICAgICAg
ZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtX2ZpZWxkQ2FjaGUuYWRk
KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0yMjAsNyArMjIwLDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAg
ICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktleTpvYmpj
SXZhck5hbWVdOwogCiAgICAgICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWRO
YW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgIXN0
cmNtcChvYmpjSXZhck5hbWUsIGpzTmFtZS5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gbWFrZVVuaXF1ZTxPYmpjRmllbGQ+
KG9iamNJVmFyKTsKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92
ZShuZXdGaWVsZCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCBlMDhiMDQ4ZTNiNTY4NDI5OGNkZWZk
OTNlYjkxODgzODkxNTZmNDM4Li4zYjkzZTE4NzgzODU0YzI0NDQ2ZTFjZmE1NzU4NDY2ZjBmMGE3
ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0y
NjcsNyArMjY3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9i
akNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgaWYgKFt0YXJnZXRP
YmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RG
cm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBPYmpjQ2xhc3MqIG9iamND
bGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0Q2xhc3MoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChzdGQ6
Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZv
a2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QobWFrZVVuaXF1ZTxP
YmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0
aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKICAgICAgICAgY29uc3QgU3RyaW5n
JiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4
ZWMtPmpzQ2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKICAgICAgICAgZmFsbGJhY2tNZXRob2Qt
PnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmludm9rZU9iamNNZXRob2QoZXhlYywg
ZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKaW5kZXggODNkNDRlMDY3ZmJkZjU0
N2Y2Yzg4YjY3YTM2ZWI1M2Y2OTE0NjZlZS4uZjE3MWE1ODIwM2Y5OGFmMTU1NDc4MGUwNTE5ZTA0
YTFlNTNhMGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29tYmluZWRVUkxGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBDb21i
aW5lZFVSTEZpbHRlcnM6OnByaW50KCkgY29uc3QKICNlbmRpZgogCiBDb21iaW5lZFVSTEZpbHRl
cnM6OkNvbWJpbmVkVVJMRmlsdGVycygpCi0gICAgOiBtX3ByZWZpeFRyZWVSb290KHN0ZDo6bWFr
ZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKKyAgICA6IG1fcHJlZml4VHJlZVJvb3QobWFr
ZVVuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpKQogewogfQogCkBAIC0yMDksNyArMjA5LDcgQEAg
dm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4odWludDY0X3QgYWN0aW9uSWQsIGNv
bnN0IFZlY3RvcjxUZXJtPiYgcGF0dGUKICAgICAgICAgaWYgKG5leHRFbnRyeUluZGV4ICE9IFdU
Rjo6bm90Rm91bmQpCiAgICAgICAgICAgICBsYXN0UHJlZml4VHJlZSA9IGxhc3RQcmVmaXhUcmVl
LT5lZGdlc1tuZXh0RW50cnlJbmRleF0uY2hpbGQuZ2V0KCk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhUcmVlRWRnZSh7bV9h
bHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVydGV4
PigpfSkpOworICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhU
cmVlRWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgbWFrZVVuaXF1ZTxQcmVmaXhUcmVl
VmVydGV4PigpfSkpOwogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJl
ZS0+ZWRnZXMubGFzdCgpLmNoaWxkLmdldCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaAppbmRleCA4YzdlM2Y3ZDdmMWUwZDU1YWFkODkzNGFiYmE1YWE3MGZiOGY4NWNm
Li43N2ZlYjYwYzUwYmM4YTRmMjRiMjc2OTZhZDExMGQxZWRhNzQyODA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaApAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKIC8v
IDEpIEl0IHN0b3JlcyB0aGUgcnVsZXMgZm9yIGVhY2ggY29udGVudCBleHRlbnNpb24uCiAvLyAy
KSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZhY2VzIHRvIHVzZSB0aG9z
ZSBydWxlcyBlZmZpY2llbnRseS4KIGNsYXNzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gLSBSdWxlIG1hbmFn
ZW1lbnQgaW50ZXJmYWNlLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHVwcGVyIGxheWVyLgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IDk2ZTJkNjM0Yjg5M2IzOTkzMDRh
OGIyYjI4NWU2MWY0ZTQ2OWRjMGMuLmIyYTlhNzgzNTIyNzcyODNmOTVkODQ5ZDAzYjE1NmZjZGM3
MjFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC0xMTUsMzEg
KzExNSwzMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6
RGVjcnlwdDoKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMg
PSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzoKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFt
cyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4oc3Rh
dGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVz
Q2JjQ2ZiUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOiB7CiAgICAgICAg
ICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0N0
clBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bUFlc0djbVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFl
c0djbVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkVDRFNBOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0
KCkpOwpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAg
cGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVl
KCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bUVjZHNhUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BT
UzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9B
bGdvcml0aG1Sc2FQc3NQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xODAsNyArMTgwLDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMjU2OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8zODQ6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yIH07CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bVJzYUtleUdlblBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FTU0FfUEtDUzFfdjFfNToKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOworICAgICAgICAg
ICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yMTMsNyArMjEzLDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rp
b25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkhNQUM6IHsKQEAgLTIyMywxNCArMjIzLDE0IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6
ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5
PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI0OSw3ICsyNDksNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogCiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNv
bnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHN0YXRl
LCBuZXdWYWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2Ro
S2V5RGVyaXZlUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOiB7CkBAIC0yNTks
NyArMjU5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNo
SWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElk
ZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVu
dGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBh
cmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhr
ZGZQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjogewpAQCAtMjY5LDcgKzI2
OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50
aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlm
aWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmll
ciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBia2Rm
MlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGRlZmF1bHQ6CkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAg
ICBjYXNlIE9wZXJhdGlvbnM6OkltcG9ydEtleToKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmll
cikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1Mx
X3YxXzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFf
NToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOgpAQCAt
MjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAo
aGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhh
c2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNo
SWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJ
bXBvcnRQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NUUjoKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpITUFDOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0
aW9uYXJ5PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CkBAIC0zMDcsMTkgKzMwNywxOSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAg
ICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJh
bXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1h
Y0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAg
ICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tl
eVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFy
YW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzI5LDcg
KzMyOSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpV
bndyYXBLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzQ0LDcgKzM0NCw3
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnRE
aWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgp
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0zNTQsMTIgKzM1NCwxMiBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtNTIwLDE2ICs1MjAsMTYgQEAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcm9zc1RocmVhZENvcHlJbXBv
cnRQYXJhbXMoY28KIHsKICAgICBzd2l0Y2ggKGltcG9ydFBhcmFtcy5wYXJhbWV0ZXJzQ2xhc3Mo
KSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6Ok5vbmU6IHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPigpOwogICAgICAgICByZXN1bHQtPmlkZW50aWZpZXIgPSBpbXBvcnRQ
YXJhbXMuaWRlbnRpZmllcjsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6RWNLZXlQYXJhbXM6Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9z
c1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBh
cmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQ
YXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFt
cz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6
Q2xhc3M6OkhtYWNLZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29w
eShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6UnNhSGFzaGVkSW1w
b3J0UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihj
cm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFy
YW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGRiY2NjOTAwZjMzNzQ4Y2QyMDY3ZjYwY2IyOTBj
MGJkNjAwNjU1MzMuLmE0MmY1NjRmODFmZTFmMGVhMDk0NDNkMWYxMDUzYzFjM2NkMGNmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTIxNywxMiAr
MjE3LDEyIEBAIGNsYXNzIENTU0NhbGNQcmltaXRpdmVWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1ND
YWxjRXhwcmVzc2lvbk5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChjYXRlZ29yeSgpKSB7
CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZs
b2F0VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lv
bk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlv
bkNhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+
KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxl
bmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkpOwogICAgICAgICBj
YXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRp
b25DYXRlZ29yeTo6UGVyY2VudExlbmd0aDogewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1f
dmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAgICAgICB9CiAgICAgICAgIC8vIE9ubHkgdHlw
ZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVuZ3RoIGV4cHJlc3Npb24gY2FuIGJlIGNvbnZl
cnRlZAogICAgICAgICAvLyB0byBhIENhbGNFeHByZXNzaW9uTm9kZS4gQ2FsY3VsYXRpb25DYXRl
Z29yeTo6UGVyY2VudE51bWJlciBtYWtlcyBubyBzZW5zZSBhcyBhIExlbmd0aC4KQEAgLTUyMCw3
ICs1MjAsNyBAQCBjbGFzcyBDU1NDYWxjT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENTU0NhbGNF
eHByZXNzaW9uTm9kZSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICBub2Rlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShub2RlKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdU
Rk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
Y0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKICAgICB9
CiAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBmaW5hbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAppbmRleCBjNDRjZWJjNTEyMGVkODMyNmQ5
YTFiMmE2NTZiOTM2N2I2ZTE5MTI4Li5lNWFlOGI3N2E1MTRmMDljM2I0OTQ0MWI1NjJmNWMyYTFl
Yzc1MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNw
cApAQCAtMTY3LDExICsxNjcsMTEgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRG
dWxsRGVmYXVsdFN0eWxlKCkKICAgICAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBudWxs
cHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKLSAgICAg
ICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVh
c2UoKTsKKyAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0Pigp
LnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwotICAgIGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5p
cXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQcmludFN0eWxlID0gbWFrZVVu
aXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSku
bGVha1JlZigpOwogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCkBAIC0xOTAsMTAgKzE5MCwx
MCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSgp
CiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwogICAgIEFTU0VSVCghc2ltcGxlRGVmYXVsdFN0
eWxlU2hlZXQpOwogCi0gICAgZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCku
cmVsZWFzZSgpOwogICAgIC8vIFRoZXJlIGFyZSBubyBtZWRpYS1zcGVjaWZpYyBydWxlcyBpbiB0
aGUgc2ltcGxlIGRlZmF1bHQgc3R5bGUuCiAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBkZWZhdWx0
U3R5bGU7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVT
ZXQ+KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVB
U2hlZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwgc3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0
eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzaW1wbGVE
ZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
Y3BwCmluZGV4IDc3MDliNWRlYWZiZmU5ZjlhYjExYWMwNzdjNjE5ZDc5NGQxNjQyZjIuLjY0NmMx
NGExMWFjNjQ1Yjk5MjYxNDlmMjllOTgwMGM0YzcyNjdiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNv
dXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAg
ICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRp
bmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoKSk7CiAgICAg
ICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9ybWF0KCkg
JiYgZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoQ2FjaGVkRm9udCogY2FjaGVkRm9u
dCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdF
bGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAgICAgICAgICAgICAgICAgICAgc291cmNl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVz
b3VyY2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VV
bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hl
ZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNvdXJj
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJl
c291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxlbWVudCk7CisgICAgICAgICAgICBzb3VyY2Ug
PSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgp
LCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwogCiAgICAgICAgIGlmIChzb3VyY2UpCiAgICAg
ICAgICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggMDVlM2EzZjZlMjFiYzkyODE3ODU1NjlhMTRh
YTUwZmY1MmU0YTI3MC4uMThlODM0ZDY5MGE2ZWI1MTAxZGM5MGM4ZGU1ZGI1ZTdhMWIwYzVkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
dm9pZCBDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3Rl
cmVkKGNvbnN0IFN0cmluZyYgZmFtaWwKICAgICAgICAgZmFtaWx5TGlzdC0+YXBwZW5kKENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhbWlseVZhbHVlKGZhbWlseU5hbWUpKTsK
ICAgICAgICAgZmFjZS0+c2V0RmFtaWxpZXMoZmFtaWx5TGlzdC5nZXQoKSk7CiAgICAgICAgIGZh
Y2UtPnNldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMoaXRlbSk7Ci0gICAgICAgIGZhY2UtPmFk
b3B0U291cmNlKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCks
IGZhbWlseU5hbWUpKTsKKyAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2UobWFrZVVuaXF1ZTxDU1NG
b250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOwogICAgICAgICBBU1NFUlQo
IWZhY2UtPmNvbXB1dGVGYWlsdXJlU3RhdGUoKSk7CiAgICAgICAgIGZhY2VzLmFwcGVuZChXVEZN
b3ZlKGZhY2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jv
dXBpbmdSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCmlu
ZGV4IGRlNmYzOWQzZjVkODczMWQ5OWU1ZWIzYzk2OGUyOWFkMWVhY2JmZTYuLmM2YzVjMzk1NDBh
NWM1MDVjZGY0ZDU5Yzc0NmMzOTE4NWM5ZTAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91
cGluZ1J1bGUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQ1NTUnVsZSogQ1NTR3JvdXBpbmdSdWxl
OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENTU0dyb3VwaW5nUnVs
ZTo6Y3NzUnVsZXMoKSBjb25zdAogewogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikK
LSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNT
U1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4o
KnRoaXMpKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2
ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxl
Jj4oKnRoaXMpKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCBmZmRk
M2QwYWE2NTdmMjVlYWYzMWQ1NzBjNTg2OGVkNTMwOWUyZWZkLi41NTUxZjJjNjkxN2QwMzMwNzI2
YWNkZjgxMDkxYTkxZmFiNGUwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgR2VuZXJhdGVkSW1hZ2UqIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSkK
IHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9h
dFNpemUgc2l6ZSwgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKQogewogICAgIEFTU0VSVCghbV9pbWFn
ZXMuY29udGFpbnMoc2l6ZSkpOwotICAgIG1faW1hZ2VzLmFkZChzaXplLCBzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKKyAgICBtX2lt
YWdlcy5hZGQoc2l6ZSwgbWFrZVVuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNp
emUsIGltYWdlKSk7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNo
ZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlm
cmFtZXNSdWxlLmNwcAppbmRleCBjOTA5ODMyZGEwZTUxOTAyNTM1MTNhMzk4MzE5MWE3YzJmMzkz
MDA1Li42ZjFlYjMzODZkOWZiYzcyZDQ0Mzc4NWQxZDE5YzRkZDhjNWMzN2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgQ1NTS2V5
ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAog
Q1NTUnVsZUxpc3QmIENTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKCkKIHsKICAgICBpZiAoIW1f
cnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMp
OworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVs
ZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RD
U1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA0
ODBhODk4NTIzN2FkYTkwYTExNzhlMGIyNzllMGU2NjgwN2UzMzQxLi5jODhkMWVkYzkzYjdhNmM4
M2YyMTc3YmFjNzY3ZjliNzgyZWU3NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVs
ZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlz
dD4odGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPFN0
eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CiAgICAgcmV0dXJuIG1fcnVsZUxpc3RDU1NPTVdy
YXBwZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQ
YWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5j
cHAKaW5kZXggNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MC4uOTE0YmRl
NGEyZGU5YWEyMTA2YzAxMDYzYjgwOGQ5Y2E0ZmZmNmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRE9NQ1NTUGFpbnRXb3Jr
bGV0KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCiB7CiAg
ICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1BhaW50V29ya2xldCo+KFN1
cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3MpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1BhaW50V29ya2xldD4oY3NzKTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygm
Y3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5j
cHAKaW5kZXggN2VjZDkzZDdkYzNkNDMyZWFmODJiYzk1NmU2MWQ0ODlhNTEwNjI1Yi4uMGRmNmFh
ZTk2ZjBlMWM3MGIzNzU1NjE2NDllZTM1ZDI4ZWI0YzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcApAQCAtODQsNyArODQs
NyBAQCBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5KiBET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5Ojpmcm9tKERPTUNTU05hbWVzcGFjZQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Kj4oU3VwcGxlbWVudDxET01D
U1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNzcyk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCmluZGV4IGQ4NTk2ZmQx
YjI0NTlkZTA3ZTFjODk5Y2MwNzlmYzE5ODUxMTY1ZTkuLjgyYjdmY2MzMGU1ODI3NDk5MjAyZTI4
YjgzMDg2Y2YwZmE0NGFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBEb2N1bWVudFJ1bGVTZXRzOjpzX2lzSW52YWxpZGF0
aW5nU3R5bGVXaXRoUnVsZVNldHMgeyBmYWxzZSB9OwogRG9jdW1lbnRSdWxlU2V0czo6RG9jdW1l
bnRSdWxlU2V0cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAgIDogbV9zdHlsZVJl
c29sdmVyKHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgbV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0
PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIApA
QCAtNzgsNyArNzgsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZUlmTmVlZGVkKCkgY29uc3QKIAogICAgIC8vIE1lZGlhIHF1ZXJpZXMgb24g
dXNlciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRlZCBpbiBkb2N1bWVudCBjb250ZXh0LiBU
aGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4gdGhpcyByZXNwZWN0LgogICAgIGF1dG8m
IG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRv
cigpOwotICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlU2V0PigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gbWFrZVVuaXF1ZTxS
dWxlU2V0PigpOwogICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlLT5hZGRSdWxlc0Zyb21T
aGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRpYVF1ZXJ5U3R5bGVTaGVldCwgbWVkaWFR
dWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAKICAgICAvLyBWaWV3cG9ydCBkZXBl
bmRlbnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBpbmVmZmljaWVudCB0byBhbGxvdyBvbiBV
QSBzaGVldC4KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFs
aXplVXNlclN0eWxlKCkKIHsKICAgICBhdXRvJiBleHRlbnNpb25TdHlsZVNoZWV0cyA9IG1fc3R5
bGVSZXNvbHZlci5kb2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hlZXRzKCk7CiAgICAgYXV0byYg
bWVkaWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9y
KCk7Ci0gICAgYXV0byB0ZW1wVXNlclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0Pigp
OworICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBp
ZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBh
Z2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
cGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVS
ZXNvbHZlcik7CiAgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25T
dHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSwgbWVk
aWFRdWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29sdmVyKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxS
dWxlRmVhdHVyZT4mIHJ1bGVzKQogICAgIHNpemVfdCBzaXplID0gcnVsZXMuc2l6ZSgpOwogICAg
IGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBydWxlU2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8gcnVsZVNldCA9IG1ha2VVbmlx
dWU8UnVsZVNldD4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAg
ICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3Rvcklu
ZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgcnVsZVNldC0+c2hyaW5rVG9G
aXQoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+
IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogdm9pZCBEb2N1
bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2lzQXV0aG9yU3R5bGVE
ZWZpbmVkID0gdHJ1ZTsKLSAgICBtX2F1dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxl
U2V0PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAg
bV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC0xOTUsMTIg
KzE5NSwxMiBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZh
bGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJgogICAgICAgICAgICAgYXV0byBhcnJh
eUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpmZWF0dXJlLm1hdGNoRWxlbWVudCk7CiAg
ICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50QXJyYXlbYXJyYXlJbmRleF07
CiAgICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCi0gICAgICAgICAgICAgICAgcnVsZVNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICAgICAgICAgICAgICBydWxlU2V0ID0gbWFr
ZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShmZWF0dXJl
LnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7
CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICAgICAg
ICAgICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLmFwcGVuZChmZWF0
dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGludmFs
aWRhdGlvblJ1bGVTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVs
ZVNldD4+KCk7CisgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMgPSBtYWtlVW5pcXVl
PFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBp
ZiAobWF0Y2hFbGVtZW50QXJyYXlbaV0pCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uUnVs
ZVNldHMtPmFwcGVuZCh7IHN0YXRpY19jYXN0PE1hdGNoRWxlbWVudD4oaSksIFdURk1vdmUobWF0
Y2hFbGVtZW50QXJyYXlbaV0pLCBXVEZNb3ZlKGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlbaV0p
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXgg
MDVkMzg1YTU1OGM0OGM0OGVlOGRhOTBmNmExOGNiNGU3NWE2YTk1YS4uMDViNDU3ZmQ2ODIwYzY3
ZjBlMGZiZTkzMDg3YjhjZWYwODI5ZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ1
bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0
ZWRQc2UKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBydWxlRGF0YVZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNl
dDo6UnVsZURhdGFWZWN0b3I+KCk7CisgICAgYXV0byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlx
dWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZURhdGFWZWN0b3ItPnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkUnVsZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8m
IG1hdGNoZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMpCiAgICAgICAgIHJ1bGVEYXRhVmVjdG9yLT51
bmNoZWNrZWRBcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
Y3BwCmluZGV4IDIxMjI0NWRlZGNhZmY5NTZhZDQ0MTA3YjllYjQ0Y2I0MTMyOGFhZGIuLmUxYjFh
ZjIwZmIxMWFlM2RmZWUxOTJjYWM5MmU2MmNkZWE1NTdkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29s
IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBS
ZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJWaWV3KQogewotICAgIGF1dG8g
c291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOworICAg
IGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAg
IGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCAzYjIwZDQxMzMzNzUzM2Q2Y2IzYzU4Y2IzZDEwNGYwZjA0YjVl
NjE5Li5lMWUxZDcyMTIxMWU2ZGUwMWE4YTg2ZTBkNDBkODUyODk5N2IzNTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNw
cApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTCiAgICAgLy8gVGhl
IG1hcCBpcyBoZXJlIHRvIG1haW50YWluIHRoZSBvYmplY3QgaWRlbnRpdHkgb2YgdGhlIENTU1Zh
bHVlcyBvdmVyIG11bHRpcGxlIGludm9jYXRpb25zLgogICAgIC8vIEZJWE1FOiBJdCBpcyBsaWtl
bHkgdGhhdCB0aGUgaWRlbnRpdHkgaXMgbm90IGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxp
dHkgYW5kIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZC4KICAgICBpZiAoIW1fY3Nzb21WYWx1
ZVdyYXBwZXJzKQotICAgICAgICBtX2Nzc29tVmFsdWVXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKTsK
KyAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8Q1NTVmFs
dWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CiAgICAgCiAgICAgYXV0byYg
Y2xvbmVkVmFsdWUgPSBtX2Nzc29tVmFsdWVXcmFwcGVycy0+YWRkKGludGVybmFsVmFsdWUsIFdl
YWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+KCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
Y2xvbmVkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRleCBkZmZkYTZmNTFk
Zjk1NGQyMDZmMDNkMGM3MzU2MGRkYTM5MmQxNDMwLi40NGVlYjFkNzAyZDJmOWRjYjZiMTJiNTUy
NzgxNTY3ZmQwMGQyZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVs
ZURhdGEmIHJ1bGVEYXRhKQogCiAgICAgZm9yIChhdXRvJiBuYW1lQW5kTWF0Y2ggOiBzZWxlY3Rv
ckZlYXR1cmVzLmNsYXNzZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUobmFtZUFuZE1h
dGNoLmZpcnN0LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9y
PFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVs
ZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVE
YXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKICAgICAgICAg
aWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAg
ICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVBbmRNYXRjaC5maXJzdCk7CkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0byogc2VsZWN0b3IgPSBzZWxlY3RvckFuZE1h
dGNoLmZpcnN0OwogICAgICAgICBhdXRvIG1hdGNoRWxlbWVudCA9IHNlbGVjdG9yQW5kTWF0Y2gu
c2Vjb25kOwogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoc2VsZWN0b3ItPmF0dHJpYnV0
ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIFtdIHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAg
ICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwg
bWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOwogICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1h
dGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFk
ZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29u
c3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBw
ZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogICAgIGZvciAoYXV0byYg
a2V5VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVu
c3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGNsYXNzZXNB
ZmZlY3RpbmdIb3N0LmFkZChvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhl
ci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGtleVZhbHVl
UGFpciA6IG90aGVyLmF0dHJpYnV0ZVJ1bGVzKSB7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVu
c3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGF0dHJpYnV0
ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5iZWdpbigp
LCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKaW5kZXggZmE2YjkxMjAyMTNlYzU0YmI2NTkwM2NmYWU2NjliZDQ2NmZiYjAyNy4uM2JiYmJm
ZWJjYTAwOTk3ODJhZjM5ODFlYjg2NzM2Y2U2ODAzNmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNw
cApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KGNvbnN0IEF0
b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhCiAgICAgICAgIHJl
dHVybjsKICAgICBhdXRvJiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFydWxlcykKLSAgICAgICAgcnVsZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVEYXRhVmVjdG9yPigpOworICAgICAgICBydWxlcyA9IG1ha2VVbmlxdWU8UnVsZURhdGFW
ZWN0b3I+KCk7CiAgICAgcnVsZXMtPmFwcGVuZChydWxlRGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA2OWFmNTU4MTU2NTRiZTMyMGYx
YTlmZDcxYTc3NjY3ZDkyOTNmYTk3Li44ODc3NWFkN2JhOGFhNTkwYWQ3YmY3MmEzN2QzYjVmNjVi
NWQyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBA
IC0zNDgsOSArMzQ4LDkgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgKICAgICAvLyBUdXJuIHRo
aXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5n
dGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVy
Y2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENh
bGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJh
dG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhz
LnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgp
KTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RG
TW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0
aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDlhMTkxZDE3
ZGQ4ZTNlZGNjMWMxMzBjMjY1OTBlMGNhNmY0ZTM2YTMuLmM1YzJiZjVkMGY1ZmM3OTEwYWZmMTYy
NTk5OTBjNDM4NjYwYzE0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKQEAgLTgxMyw3ICs4MTMsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICAg
ICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpzaGFkb3dW
YWx1ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRv
d1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNW
YWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBhdXRvIHNoYWRv
d0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJl
YWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywg
Y29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICBp
ZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0Zp
cnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVu
dHJ5CiAgICAgICAgIGVsc2UKQEAgLTgyOSw3ICs4MjksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbAogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRT
aGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0
U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0
U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC04NDQsNyArODQ0LDcgQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVy
aXRCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkt
PmJveFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZl
ci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJv
eFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEzNTksNyArMTM1OSw3IEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3Vu
dGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRl
bnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0
aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0g
ICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50
Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVl
LT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENv
dW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwg
Y291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAg
IGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnRpZXMuY3BwCmluZGV4IDRjZjZjNmY3YWI3ZGY5ZmMwNDMzNGJiZThkZDA1YTNiNTU5ZTkz
NWMuLjE5Y2IwMzNkNzBiYjVhODk2ODY1NTcyNzU1Yjk2Yjk3NzA1MWNiNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0xNTMwLDcgKzE1MzAsNyBAQCBDU1NTdHls
ZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xh
cmF0aW9uKCkKICAgICAgICAgQVNTRVJUKCFtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgp
KTsKICAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdy
YXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4o
KnRoaXMpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVuaXF1ZTxQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQog
CkBAIC0xNTQwLDcgKzE1NDAsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eQogICAgICAgICBB
U1NFUlQobV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSA9PSAmcGFyZW50RWxlbWVudCk7
CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywg
cGFyZW50RWxlbWVudCk7CisgICAgbV9jc3NvbVdyYXBwZXIgPSBtYWtlVW5pcXVlPElubGluZUNT
U1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKICAgICByZXR1cm4gKm1f
Y3Nzb21XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
M2E1MmMzNjE5OWE3OWEyNWUwOWMwMWQ4ZmEwYzUwYWVmZjY4MmJiNS4uZGU0ZGE1ZjU1MTI5OTA5
MzFkYTg2YzVjN2U4M2JjYjEwMTgwOGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMTcxNSw3ICsxNzE1LDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0
aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAg
ICAgaWYgKGF1dGhvclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIGF1dGhvclJvbGxiYWNr
OwogCi0gICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNj
YWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBu
ZXdBdXRob3JSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNj
YWRlIGNvbnRhaW5zIFVBIHJ1bGVzIGFuZCB1c2VyIHJ1bGVzIGJ1dCBubyBhdXRob3IgcnVsZXMu
CiAgICAgICAgIG5ld0F1dGhvclJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVzKG1hdGNoUmVzdWx0
LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0
VUFSdWxlLCBmYWxzZSk7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxi
YWNrKAogICAgICAgICBpZiAodXNlclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIHVzZXJS
b2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVl
PENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOworICAgICAgICBh
dXRvIG5ld1VzZXJSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0
aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBj
YXNjYWRlIGNvbnRhaW5zIG9ubHkgVUEgcnVsZXMuCiAgICAgICAgIG5ld1VzZXJSb2xsYmFjay0+
YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFS
dWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vw
cm9wLnBsCmluZGV4IDk5N2M0YzAzNjdkZDVkMGQ2NDVkNWVkZjUxZWVjNGJmYjBjMzIxMDUuLjAy
YTM2ZWZlMDVkM2NjOWZlOTdkZDVjMGUyNTkzYWU3OWZkNmMyYzYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXBy
b3AucGwKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUlu
aGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExh
eWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiZm9yIChhdXRvKiBwYXJlbnQgPSAmc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgp
LT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBwYXJlbnQgJiYgcGFyZW50LT4i
IC4gJHRlc3RGdW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50LT5uZXh0KCkpIHtcbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0
KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkg
LiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlv
dXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5
cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
ICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgfVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgY2hpbGQtPiIgLiAkc2V0dGVyIC4gIihwYXJlbnQtPiIgLiAkZ2V0dGVyIC4gIigpKTtcbiI7
CkBAIC04MzcsNyArODM3LDcgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNl
dHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2
YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVk
ZWQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250
ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6
Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikp
O1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBwcmV2aW91
c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlw
ZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAg
ICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIH1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlTWFwKCktPiIgLiBnZXRGaWxsTGF5ZXJN
YXBmdW5jdGlvbigkbmFtZSkgLiAiKCIgLiAkQ1NTUHJvcGVydHlJZCAuICIsICpjaGlsZCwgaXRl
bSk7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5k
ZXggNjdjZmRmNTZkNjI1MDUzYTAxMTE5OTJkNzExZjhjOGZmZGI5NWRjMi4uZDc1ZTRmYzkyYzc3
YjA3YjFlNTNkYWQzMzg3ZTU1MWEzOTBjMjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1BhcnNlckltcGw6OkNT
U1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBzdHJpCiAgICAgLCBtX3N0eWxlU2hlZXQoc3R5bGVTaGVldCkKICAgICAsIG1fb2JzZXJ2ZXJX
cmFwcGVyKHdyYXBwZXIpCiB7Ci0gICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gc3RkOjptYWtl
X3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogc3RkOjptYWtlX3VuaXF1
ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CisgICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gbWFr
ZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogbWFrZVVuaXF1ZTxDU1NU
b2tlbml6ZXI+KHN0cmluZyk7CiAgICAgaWYgKGNvbnRleHQuZGVmZXJyZWRDU1NQYXJzZXJFbmFi
bGVkICYmICF3cmFwcGVyICYmIHN0eWxlU2hlZXQgJiYgcnVsZVBhcnNpbmcgPT0gQ1NTUGFyc2Vy
OjpSdWxlUGFyc2luZzo6RGVmZXJyZWQpCiAgICAgICAgIG1fZGVmZXJyZWRQYXJzZXIgPSBDU1NE
ZWZlcnJlZFBhcnNlcjo6Y3JlYXRlKGNvbnRleHQsIHN0cmluZywgKnN0eWxlU2hlZXQpOwogfQpA
QCAtMjgyLDkgKzI4Miw5IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBh
Z2VTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsCiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yOwogICAgIGlmICghdHlwZVNlbGVj
dG9yLmlzTnVsbCgpICYmIHBzZXVkby5pc051bGwoKSkKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCks
IHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CisgICAgICAg
IHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkp
OwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKICAgICAgICAgaWYgKCFwc2V1ZG8uaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IHNlbGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPihDU1NQYXJzZXJT
ZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IocHNldWRvKSk7CiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9yLT5tYXRjaCgpICE9IENTU1NlbGVjdG9yOjpQYWdlUHNl
dWRvQ2xhc3MpCkBAIC01MzUsNyArNTM1LDcgQEAgUmVmUHRyPFN0eWxlUnVsZU5hbWVzcGFjZT4g
Q1NTUGFyc2VySW1wbDo6Y29uc3VtZU5hbWVzcGFjZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW4KIFJl
ZlB0cjxTdHlsZVJ1bGVNZWRpYT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZShDU1NQ
YXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spCiB7CiAg
ICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6
Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgc3RkOjpt
YWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVk
UGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVl
cnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29u
dGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0
eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKIApAQCAtNTYzLDcgKzU2Myw3IEBAIFJl
ZlB0cjxTdHlsZVJ1bGVTdXBwb3J0cz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1cHBvcnRzUnVs
ZShDU1NQYXJzZXJUb2tlblJhbmdlCiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBl
cnJvciwgaW52YWxpZCBAc3VwcG9ydHMgY29uZGl0aW9uCiAKICAgICBpZiAobV9kZWZlcnJlZFBh
cnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5z
ZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBzdGQ6Om1ha2VfdW5pcXVl
PERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsK
KyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5zZXJpYWxp
emUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5
bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIGlmICht
X29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIo
KS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpTdXBwb3J0cywgbV9vYnNlcnZlcldyYXBwZXIt
PnN0YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBSZWZQdHI8U3R5bGVS
dWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5ZnJhbWVzUnVsZShib29sIHdl
YmtpdFByZWZpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3I7IGV4cGVj
dGVkIGlkZW50IHRva2VuIGluIEBrZXlmcmFtZXMgaGVhZGVyCiAKICAgICBpZiAobV9kZWZlcnJl
ZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUs
IHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9k
ZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVh
dGUobmFtZSwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICpt
X2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAg
ICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVs
ZTo6S2V5ZnJhbWVzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZzZXQocmFuZ2VDb3B5KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCmlu
ZGV4IDRkYmVmNDA1OGM3MTYyY2Q5NjQ2ZWE3NjRkY2JiOWJiY2YzMWU0NTkuLmEwODcwZDM3NjJj
ZWE0MmY1YjVlYWJkMDVlYTc0NGYyZDlkNmIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBz
ZXVkb1NlbGVjdG9yKFN0CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwor
ICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAg
IHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0Ns
YXNzKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UGFnZVBzZXVkb1R5cGUocHNldWRv
VHlwZSk7CiAgICAgcmV0dXJuIHNlbGVjdG9yOwpAQCAtNjMsNyArNjMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0Vs
ZW1lbnRTZWxlY3RvcgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
YXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7Cisg
ICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAg
c2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
KTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRv
VHlwZSk7CiAgICAgQXRvbVN0cmluZyBuYW1lOwpAQCAtODQsMTMgKzg0LDEzIEBAIHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRv
Q2xhc3NTZWxlY3RvcihTCiB7CiAgICAgYXV0byBwc2V1ZG9UeXBlID0gcGFyc2VQc2V1ZG9DbGFz
c0FuZENvbXBhdGliaWxpdHlFbGVtZW50U3RyaW5nKHBzZXVkb1R5cGVTdHJpbmcpOwogICAgIGlm
IChwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Vua25v
d24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNl
clNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dFBzZXVkb0NsYXNzVHlwZShwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzKTsKICAgICAgICAgcmV0dXJu
IHNlbGVjdG9yOwogICAgIH0KICAgICBpZiAocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRv
RWxlbWVudCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd24pIHsKLSAgICAgICAg
YXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7Cisg
ICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwog
ICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVu
dFR5cGUocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNl
bGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRWYWx1ZShwc2V1ZG9UeXBlU3RyaW5nLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkpOwpAQCAtMTAwLDEyICsxMDAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPENT
U1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVj
dG9yKFMKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKLSAgICA6
IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKKyAgICA6IG1fc2Vs
ZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKIHsKIH0KIAogQ1NTUGFyc2VyU2VsZWN0
b3I6OkNTU1BhcnNlclNlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKQotICAg
IDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCisg
ICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lKSkKIHsKIH0K
IApAQCAtMTI2LDcgKzEyNiw3IEBAIENTU1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFyc2VyU2VsZWN0
b3IoKQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiYmIHNlbGVjdG9yVmVjdG9yKQog
ewotICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChzdGQ6Om1ha2VfdW5pcXVlPENTU1Nl
bGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsKKyAgICBtX3NlbGVjdG9yLT5z
ZXRTZWxlY3Rvckxpc3QobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0
b3JWZWN0b3IpKSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnNldExhbmdBcmd1bWVu
dExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9tU3RyaW5nPj4gYXJndW1lbnRMaXN0KQpA
QCAtMjA5LDEyICsyMDksMTIgQEAgdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YXBwZW5kVGFnSGlz
dG9yeShDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3IgcmVsYXRpb24sIHMKIAogdm9pZCBDU1NQ
YXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z1FOYW1lLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKIHsKLSAgICBhdXRvIHNlY29uZCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWNvbmQg
PSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlY29uZC0+bV9zZWxlY3Rv
ciA9IFdURk1vdmUobV9zZWxlY3Rvcik7CiAgICAgc2Vjb25kLT5tX3RhZ0hpc3RvcnkgPSBXVEZN
b3ZlKG1fdGFnSGlzdG9yeSk7CiAgICAgbV90YWdIaXN0b3J5ID0gV1RGTW92ZShzZWNvbmQpOwog
Ci0gICAgbV9zZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1l
LCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOworICAgIG1fc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENT
U1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKICAgICBtX3NlbGVj
dG9yLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ4OGU2
MDIzZjIwMDI0YWZmZWY4NjE3YTUxNGM0MDliZjQ5ZDFlZjMuLjcwOGVjNzc3M2MxOGQ2ZTA4ZTAw
MWNhZmEzZDI4YzgwZDlmODcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBzdGF0aWMgUmVmUHRy
PENTU0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncwogICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gYnl0ZVN0cmVhbSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CisgICAgYXV0byBieXRlU3RyZWFtID0g
bWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBpZiAoIWJ1aWxkU1ZHUGF0aEJ5
dGVTdHJlYW1Gcm9tU3RyaW5nKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1
ZSgpLnRvU3RyaW5nKCksICpieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5nKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4IDZiM2FjYzg1ZTZmYzVlNWNiYjk1YWI5ZmUxYTZjN2Nh
OWVmODEwNDcuLmYzMzIzYjIyNmI0YjAxMDBjOTgzYzQ4NjYzNzVmMWU2NTdiMTczOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC01
NjQsNyArNTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxl
Y3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyhDU1NQYXJzZXJUb2sKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhbmc6IHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBDU1MgU2VsZWN0b3JzIExldmVsIDQgYWxsb3dzIDpsYW5nKCotZm9vKQotICAgICAgICAg
ICAgYXV0byBhcmd1bWVudExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5n
Pj4oKTsKKyAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8
QXRvbVN0cmluZz4+KCk7CiAgICAgICAgICAgICBpZiAoIWNvbnN1bWVMYW5nQXJndW1lbnRMaXN0
KGFyZ3VtZW50TGlzdCwgYmxvY2spKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICAgICAgc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RGTW92ZShhcmd1bWVu
dExpc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuY3BwCmluZGV4IDllYjVkN2U0OWY1NmExZTk4ZDFmYmI5YjIzZTZlYTcyZTIyNjE1OGYu
Ljg4MTE3ZjE5ZTRiMjZiYTI1YmZmMjVhODU1OTE3MzJiYjdhM2U3ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcApAQCAtMzM0LDcg
KzMzNCw3IEBAIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjpFbGVtZW50UXVldWUmIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVCYWNrCiB7CiAgICAgaWYgKCFzX3Byb2Nlc3Np
bmdCYWNrdXBFbGVtZW50UXVldWUpIHsKICAgICAgICAgc19wcm9jZXNzaW5nQmFja3VwRWxlbWVu
dFF1ZXVlID0gdHJ1ZTsKLSAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgp
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJhY2t1cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4oKSk7
CisgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVu
aXF1ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOwogICAgIH0KICAgICByZXR1cm4g
YmFja3VwRWxlbWVudFF1ZXVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmlu
ZGV4IGNiNzUyMzI4MGM3YjMyNWM2NmNkZTY0NmMxNWJmNWE5MTMxNzQ1YmMuLmMwOWI4NDM2MzU1
MzQxYThlZDQwYTVhOGI4NTE2YjZkOTdiYTZkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OmRpZEFkZEZpbGVU
b0l0ZW1MaXN0KCkKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKCkK
IHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxpc3Qg
PSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X2l0ZW1MaXN0OwogfQogCkBAIC00MTYsNyArNDE2LDcgQEAgYm9vbCBEYXRhVHJhbnNmZXI6Omhh
c1N0cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0bWxUZXh0KQogewotICAg
IGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsK
KyAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAg
ICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CiAg
ICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRtbFRleHQpOwogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpS
ZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRFdmVudCkpOwpAQCAtNDcx
LDcgKzQ3MSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJh
Zyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9j
dW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3Rl
Ym9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdy
aXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0
YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3Jp
Z2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwog
fQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UoRWxl
bWVudCogZWxlbWVudCwgaW50IHgsIGludCB5KQogICAgIG1fZHJhZ0ltYWdlID0gaW1hZ2U7CiAg
ICAgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIGlmICghbV9kcmFnSW1hZ2VMb2FkZXIpCi0g
ICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0ltYWdl
TG9hZGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyID0gbWFrZVVuaXF1
ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOwogICAgICAgICBtX2RyYWdJbWFnZUxvYWRlci0+c3Rh
cnRMb2FkaW5nKG1fZHJhZ0ltYWdlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMzM2MjIzMTA4MWIxM2Y3
MmRjMThkYWM1ZjM5MDdhNWU3YzE3YjBiZi4uZjIxMTMxZmY4Mjc4MjFkYzc0ZTg1MGE5OGYxYmIy
MzA5OWUwMjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChQYWdlKiBwYWdlKQogCiB2b2lkIHByb3ZpZGVEZXZp
Y2VPcmllbnRhdGlvblRvKFBhZ2UmIHBhZ2UsIERldmljZU9yaWVudGF0aW9uQ2xpZW50JiBjbGll
bnQpCiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8oJnBhZ2Us
IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtl
X3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZDE3ZmYyY2ZlYzE4NzhlNjdjNTgxMDc5MjgwYjQ5MWI4
ODU5M2U1OS4uZWQ0ODQ4OTdmYWQxOTk3NzhlODgzOTM5ZGQxMjNhZTJkNmM2YzIzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjEsMTkgKzUyMSwxOSBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2Vz
LCB1bnNpZwogICAgICwgbV9xdWlya3MobWFrZVVuaXF1ZVJlZjxRdWlya3M+KCp0aGlzKSkKICAg
ICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIobV9mcmFtZSA/IFJlZjxDYWNoZWRSZXNvdXJjZUxv
YWRlcj4obV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKSkgOiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG51bGxwdHIpKQog
ICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNpb24pCi0gICAgLCBtX3N0
eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKLSAgICAsIG1f
ZXh0ZW5zaW9uU3R5bGVTaGVldHMoc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0
cz4oKnRoaXMpKQotICAgICwgbV92aXNpdGVkTGlua1N0YXRlKHN0ZDo6bWFrZV91bmlxdWU8Vmlz
aXRlZExpbmtTdGF0ZT4oKnRoaXMpKQotICAgICwgbV9tYXJrZXJzKHN0ZDo6bWFrZV91bmlxdWU8
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFr
ZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVl
dHMobWFrZVVuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4oKnRoaXMpKQorICAgICwgbV92aXNp
dGVkTGlua1N0YXRlKG1ha2VVbmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQorICAgICwg
bV9tYXJrZXJzKG1ha2VVbmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCiAg
ICAgLCBtX3N0eWxlUmVjYWxjVGltZXIoW3RoaXNdIHsgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOyB9
KQogICAgICwgbV9kb2N1bWVudENyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAg
ICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykp
Ci0gICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRl
cj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxTY3JpcHRSdW5uZXI+
KCp0aGlzKSkKKyAgICAsIG1fbW9kdWxlTG9hZGVyKG1ha2VVbmlxdWU8U2NyaXB0TW9kdWxlTG9h
ZGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRy
YW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1z
VGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV94bWxWZXJzaW9uKCIxLjAiX3MpCi0gICAgLCBt
X2NvbnN0YW50UHJvcGVydHlNYXAoc3RkOjptYWtlX3VuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFw
PigqdGhpcykpCisgICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAobWFrZVVuaXF1ZTxDb25zdGFu
dFByb3BlcnR5TWFwPigqdGhpcykpCiAgICAgLCBtX2RvY3VtZW50Q2xhc3Nlcyhkb2N1bWVudENs
YXNzZXMpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQpAQCAtNTQ1LDEwICs1NDUsMTAgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICNlbmRp
ZgogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVu
dERlbGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCi0gICAgLCBtX2RldmljZU1vdGlvbkNvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VN
b3Rpb25DbGllbnQpKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TPigpKQotICAgICwgbV9kZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlTW90aW9u
Q2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQorICAgICwgbV9kZXZp
Y2VNb3Rpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4oKm1f
ZGV2aWNlTW90aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQobWFr
ZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
PigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCiAjZW5kaWYKICAgICAsIG1fcGVuZGluZ1Rh
c2tzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCkKICAgICAs
IG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFs
VXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKQEAgLTc1Nyw3ICs3NTcsNyBAQCBFbGVtZW50
KiBEb2N1bWVudDo6ZWxlbWVudEZvckFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkKIAogdm9p
ZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlDYWNoZSgpCiB7Ci0gICAgbV9hY2Nlc3NLZXlDYWNo
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+PihbdGhpc10geworICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBtYWtlVW5p
cXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4o
W3RoaXNdIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVl
RGVzY2VuZGFudHMoKnRoaXMpKSB7CiAgICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUp
KQpAQCAtNzgyLDcgKzc4Miw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBEb2N1bWVu
dDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVjCiAgICAgaWYgKHNl
bGVjdG9yU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRh
eEVycm9yIH07CiAgICAgaWYgKCFtX3NlbGVjdG9yUXVlcnlDYWNoZSkKLSAgICAgICAgbV9zZWxl
Y3RvclF1ZXJ5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsK
KyAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnlD
YWNoZT4oKTsKICAgICByZXR1cm4gbV9zZWxlY3RvclF1ZXJ5Q2FjaGUtPmFkZChzZWxlY3RvclN0
cmluZywgKnRoaXMpOwogfQogCkBAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVz
ZXRBY3RpdmVMaW5rQ29sb3IoKQogRE9NSW1wbGVtZW50YXRpb24mIERvY3VtZW50OjppbXBsZW1l
bnRhdGlvbigpCiB7CiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uKQotICAgICAgICBtX2ltcGxl
bWVudGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOwor
ICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gbWFrZVVuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9pbXBsZW1lbnRhdGlvbjsKIH0KIApAQCAtMTc2Miw3ICsx
NzYyLDcgQEAgTm9kZTo6Tm9kZVR5cGUgRG9jdW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKIEZvcm1D
b250cm9sbGVyJiBEb2N1bWVudDo6Zm9ybUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9mb3Jt
Q29udHJvbGxlcikKLSAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Rm9ybUNvbnRyb2xsZXI+KCk7CisgICAgICAgIG1fZm9ybUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PEZvcm1Db250cm9sbGVyPigpOwogICAgIHJldHVybiAqbV9mb3JtQ29udHJvbGxlcjsKIH0KIApA
QCAtMTk4Nyw3ICsxOTg3LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRl
eHQmIHRleHQsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWRUZXh0LCB1bnMKICAgICBBU1NFUlQo
IW1faW5SZW5kZXJUcmVlVXBkYXRlKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBpblJlbmRlclRy
ZWVVcGRhdGUobV9pblJlbmRlclRyZWVVcGRhdGUsIHRydWUpOwogCi0gICAgYXV0byB0ZXh0VXBk
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CisgICAgYXV0byB0
ZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CiAgICAgdGV4dFVw
ZGF0ZS0+YWRkVGV4dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRUZXh0LCBsZW5ndGhPZlJlcGxh
Y2VkVGV4dCwgV1RGOjpudWxsb3B0IH0pOwogCiAgICAgUmVuZGVyVHJlZVVwZGF0ZXIgcmVuZGVy
VHJlZVVwZGF0ZXIoKnRoaXMpOwpAQCAtMjI2OSw3ICsyMjY5LDcgQEAgdm9pZCBEb2N1bWVudDo6
cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNp
emUsIGludCYKIFN0eWxlUmVzb2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5
bGVSZXNvbHZlcigpCiB7CiAgICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyKQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CisgICAgICAgIG1fdXNlckFnZW50U2hh
ZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsK
ICAgICByZXR1cm4gKm1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7CiB9CiAKQEAg
LTI2NzIsNyArMjY3Miw3IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3VtZW50OjpheE9iamVjdENhY2hl
KCkgY29uc3QKIAogICAgIEFTU0VSVCgmdG9wRG9jdW1lbnQgPT0gdGhpcyB8fCAhbV9heE9iamVj
dENhY2hlKTsKICAgICBpZiAoIXRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSkgewotICAgICAg
ICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFYT2JqZWN0
Q2FjaGU+KHRvcERvY3VtZW50KTsKKyAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hl
ID0gbWFrZVVuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CiAgICAgICAgIGhhc0V2
ZXJDcmVhdGVkQW5BWE9iamVjdENhY2hlID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIHRvcERv
Y3VtZW50Lm1fYXhPYmplY3RDYWNoZS5nZXQoKTsKQEAgLTMwMzYsNyArMzAzNiw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnNldFBhcnNpbmcoYm9vbCBiKQogICAgIG1fYlBhcnNpbmcgPSBiOwogCiAgICAg
aWYgKG1fYlBhcnNpbmcgJiYgIW1fc2hhcmVkT2JqZWN0UG9vbCkKLSAgICAgICAgbV9zaGFyZWRP
YmplY3RQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7
CisgICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTaGFyZWRP
YmplY3RQb29sPigpOwogCiAgICAgaWYgKCFtX2JQYXJzaW5nICYmIHZpZXcoKSAmJiAhdmlldygp
LT5uZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3KCktPmZpcmVMYXlvdXRSZWxhdGVkTWlsZXN0
b25lc0lmTmVlZGVkKCk7CkBAIC01NTY2LDcgKzU1NjYsNyBAQCBjb25zdCBTVkdEb2N1bWVudEV4
dGVuc2lvbnMqIERvY3VtZW50OjpzdmdFeHRlbnNpb25zKCkKIFNWR0RvY3VtZW50RXh0ZW5zaW9u
cyYgRG9jdW1lbnQ6OmFjY2Vzc1NWR0V4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9zdmdFeHRl
bnNpb25zKQotICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOworICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBtYWtl
VW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zdmdF
eHRlbnNpb25zOwogfQogCkBAIC01NzcxLDcgKzU3NzEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0
U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50
LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAgICAgIHNldENvb2tpZVVSTChV
UkwoeyB9LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5
KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1
ZSgpKSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlz
KSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlzKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3OTAsNyArNTc5MCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICBpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID0g
ZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkudGFpbnRpbmcoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlOwogCiAgICAgc2V0U2VjdXJpdHlP
cmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShpc1NlY3VyaXR5T3JpZ2lu
VW5pcXVlID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3VybCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5ID0gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkub3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3koKTsKICAgICBpZiAoIW92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5LmlzTnVsbCgpKQpAQCAtNjAyOCw3ICs2MDI4LDcgQEAgU3RyaW5nIERvY3VtZW50OjpuYW1l
Rm9yQ1NTQ2FudmFzRWxlbWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVu
dCkKIFRleHRBdXRvU2l6aW5nJiBEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcoKQogewogICAgIGlm
ICghbV90ZXh0QXV0b1NpemluZykKLSAgICAgICAgbV90ZXh0QXV0b1NpemluZyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7CisgICAgICAgIG1fdGV4dEF1dG9TaXppbmcgPSBt
YWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwogICAgIHJldHVybiAqbV90ZXh0QXV0b1Npemlu
ZzsKIH0KICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAtNjM5NSw3ICs2Mzk1
LDcgQEAgdm9pZCBEb2N1bWVudDo6d2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCgpCiB2b2lkIERv
Y3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcihOb2RlJiBub2RlKQogewogICAgIGlmICgh
bV93aGVlbEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAgIG1fd2hlZWxFdmVudFRhcmdl
dHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAgICAgbV93aGVlbEV2ZW50VGFy
Z2V0cy0+YWRkKCZub2RlKTsKIApAQCAtNjQ1NSw3ICs2NDU1LDcgQEAgdm9pZCBEb2N1bWVudDo6
ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoTm9kZSYgaGFuZGxlcikKIHsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIGlmICghbV90b3VjaEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV90b3Vj
aEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAg
ICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwog
CiAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cy0+YWRkKCZoYW5kbGVyKTsKIApAQCAtODA0Myw3ICs4
MDQzLDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dDaGFubmVs
JiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgVmUKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IG1lc3NhZ2VMZXZlbEZyb21XVEZMb2dMZXZlbChs
ZXZlbCk7Ci0gICAgICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2Fn
ZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKCkp
KTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdU
Rk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOwogCiAgICAg
ICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogICAgIH0pOwpAQCAtODA3
OCw3ICs4MDc4LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdAogCiBib29sIERvY3VtZW50Ojpy
ZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSYmIHByb3ApCiB7
Ci0gICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIHN0
ZDo6bWFrZV91bmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3Ap
KSkuaXNOZXdFbnRyeTsKKyAgICByZXR1cm4gbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRk
KHByb3AubmFtZSwgbWFrZVVuaXF1ZTxDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1v
dmUocHJvcCkpKS5pc05ld0VudHJ5OwogfQogCiB2b2lkIERvY3VtZW50OjpkZXRhY2hGcm9tRnJh
bWUoKQpAQCAtODE3Miw3ICs4MTcyLDcgQEAgRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb24KICAgICAg
ICAgcmV0dXJuIHRvcERvY3VtZW50KCkuZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyKCk7CiAKICAgICBpZiAoIW1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyKQotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOwogfQogCkBAIC04MjAzLDcgKzgyMDMsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBSZWY8UGFpbnRXbwogQ29udGVudENoYW5nZU9ic2VydmVyJiBEb2N1bWVu
dDo6Y29udGVudENoYW5nZU9ic2VydmVyKCkKIHsKICAgICBpZiAoIW1fY29udGVudENoYW5nZU9i
c2VydmVyKQotICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CisgICAgICAgIG1fY29udGVudENoYW5n
ZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fY29udGVudENoYW5nZU9ic2VydmVyOyAKIH0KIApAQCAtODIxMSw3ICs4MjEx
LDcgQEAgRE9NVGltZXJIb2xkaW5nVGFuayYgRG9jdW1lbnQ6OmRvbVRpbWVySG9sZGluZ1Rhbmso
KQogewogICAgIGlmIChtX2RvbVRpbWVySG9sZGluZ1RhbmspCiAgICAgICAgIHJldHVybiAqbV9k
b21UaW1lckhvbGRpbmdUYW5rOwotICAgIG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4oKTsKKyAgICBtX2RvbVRpbWVySG9sZGluZ1Rh
bmsgPSBtYWtlVW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7CiAgICAgcmV0dXJuICptX2Rv
bVRpbWVySG9sZGluZ1Rhbms7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZjk3ZGJlNzUx
YmQ1MDQzNjI3M2MwNzhmNzBlZWExNWI2NWM3NjJhOS4uYTVlMzIwMzkyNTk0OTU1NTNjNTkzNmM1
YjgwNzFlNDBlMGY4ZTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyODQsNyArMTI4NCw3
IEBAIGNsYXNzIERvY3VtZW50CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRQYXJzZXJZ
aWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsK
ICAgICB9CiAKICAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSBjb25zdCB7IHJl
dHVybiBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcAppbmRleCAwMWM3Zjk2ZTAyZTllYmQ1ODg1M2ZiNWRiMWM0Yjg4MjFl
MmY5NzI4Li4wMzcwM2I2MmJjNjUwNTU3OGIzODliOTk5MzhhNGRhYWI2ZDc2YzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtNTksNyArNTksNyBAQCBj
bGFzcyBEb2N1bWVudEV2ZW50UXVldWU6OlRpbWVyIGZpbmFsIDogcHVibGljIFN1c3BlbmRhYmxl
VGltZXIgewogCiBEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9wZW5kaW5n
RXZlbnRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcykpCisgICAgLCBtX3BlbmRp
bmdFdmVudFRpbWVyKG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzKSkKICAgICAsIG1faXNDbG9zZWQo
ZmFsc2UpCiB7CiAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4
IDcyOTFkNGFkZWU5ZjQxNzdmZGJmZWZlZWZkZGYyNjcwNTRhOWM0ZjAuLmU3NjQxYWY2MjE4YmYx
M2FiMGUzYzY4OTIwMjBkZTg4OWM0ZTkwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihOb2RlJiBub2RlLCBjb25zdCBEb2N1bWVu
dE1hcmtlciYgbmV3TWEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFya2VyTGlzdD4mIGxpc3QgPSBt
X21hcmtlcnMuYWRkKCZub2RlLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBpZiAo
IWxpc3QpIHsKLSAgICAgICAgbGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyTGlzdD4oKTsK
KyAgICAgICAgbGlzdCA9IG1ha2VVbmlxdWU8TWFya2VyTGlzdD4oKTsKICAgICAgICAgbGlzdC0+
YXBwZW5kKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIobmV3TWFya2VyKSk7CiAgICAgfSBlbHNlIGlm
IChzaG91bGRJbnNlcnRBc1NlcGFyYXRlTWFya2VyKG5ld01hcmtlcikpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbWVyZ2UgZGljdGF0aW9uIG1hcmtlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4IDgxZWZiMTBkNWU3NmVkYjZmNmQzODM1MzAw
NTFkMjljMzg4ZWFmZGIuLjg1NWEyYTA2NTZmNzFiNDVlZThkNGZmZjI4NGE1MzUzNzlhMzg3OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCkBAIC00
OCw3ICs0OCw3IEBAIERvY3VtZW50U3RvcmFnZUFjY2VzcyogRG9jdW1lbnRTdG9yYWdlQWNjZXNz
Ojpmcm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNzKj4oU3VwcGxlbWVudDxEb2N1bWVudD46OmZy
b20oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRT
dG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CiAgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmRvY3VtZW50
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CkBAIC0x
ODMsNyArMTgzLDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgYm9vbCBzaG91
bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6WWVzIHx8IHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bjo6Tm87CiAKICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigq
ZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1
ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNl
ID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAg
ICB9KSk7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVu
dFJlZmVyZW5jZSldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFk
UXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVu
Y2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgewogICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC0+Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOwogICAg
ICAgICAgICAgfSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
CiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3JhcnlUaW1lVXNlckdl
c3R1cmUoKQogewotICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50
KTsKKyAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gbWFrZVVuaXF1ZTxVc2VyR2VzdHVyZUlu
ZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA3MTIwMDhmMjFiMjMxYzRkZTIxYzQxM2I1ZDEwODVk
OTNmMjVkYWYzLi5iMGQ4YWQ1ZDE2NDA5YTdiZTU2YmMzYzEwYjY5ZDMyYmE3NTBkYzIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00NzcsNyArNDc3LDcgQEAgTmFtZWROb2RlTWFwJiBFbGVt
ZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVN
YXAgPSByYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKSkKICAgICAgICAgcmV0dXJuICphdHRyaWJ1dGVN
YXA7CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAoc3RkOjptYWtlX3VuaXF1ZTxOYW1l
ZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOworICAgIHJhcmVEYXRhLnNl
dEF0dHJpYnV0ZU1hcChtYWtlVW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3RfY2FzdDxFbGVtZW50
Jj4oKnRoaXMpKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKTsKIH0KIApA
QCAtMjMwNyw3ICsyMzA3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVt
ZW50KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVyZmEKICAgICBzZXRGbGFn
KElzQ3VzdG9tRWxlbWVudCk7CiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpOwogICAgIGlmICghZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKQotICAgICAg
ICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0
YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9y
U3VidHJlZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9t
RWxlbWVudFN0YXRlKCp0aGlzKTsKIH0KQEAgLTIzNDQsNyArMjM0NCw3IEBAIHZvaWQgRWxlbWVu
dDo6ZW5xdWV1ZVRvVXBncmFkZShKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRl
cmZhY2UpCiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGJv
b2wgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSA9IGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUoKTsKICAgICBpZiAoIWFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpCi0gICAgICAgIGRh
dGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAgICAgICBkYXRhLnNl
dEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKICAgICBkYXRhLmN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlKCktPmVucXVldWVFbGVtZW50VXBncmFkZSgqdGhpcywgYWxyZWFkeVNjaGVkdWxl
ZFRvVXBncmFkZSk7CiB9CiAKQEAgLTM0ODAsNyArMzQ4MCw3IEBAIERPTVRva2VuTGlzdCYgRWxl
bWVudDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY2xhc3NMaXN0KCkpCi0gICAgICAgIGRh
dGEuc2V0Q2xhc3NMaXN0KHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRN
TE5hbWVzOjpjbGFzc0F0dHIpKTsKKyAgICAgICAgZGF0YS5zZXRDbGFzc0xpc3QobWFrZVVuaXF1
ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwogICAgIHJldHVy
biAqZGF0YS5jbGFzc0xpc3QoKTsKIH0KIApAQCAtMzQ4OCw3ICszNDg4LDcgQEAgRGF0YXNldERP
TVN0cmluZ01hcCYgRWxlbWVudDo6ZGF0YXNldCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBk
YXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmRhdGFzZXQoKSkK
LSAgICAgICAgZGF0YS5zZXREYXRhc2V0KHN0ZDo6bWFrZV91bmlxdWU8RGF0YXNldERPTVN0cmlu
Z01hcD4oKnRoaXMpKTsKKyAgICAgICAgZGF0YS5zZXREYXRhc2V0KG1ha2VVbmlxdWU8RGF0YXNl
dERPTVN0cmluZ01hcD4oKnRoaXMpKTsKICAgICByZXR1cm4gKmRhdGEuZGF0YXNldCgpOwogfQog
CkBAIC0zNjMyLDcgKzM2MzIsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEmIEVsZW1lbnQ6
OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEg
PSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLmludGVyc2VjdGlv
bk9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZl
ckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOworICAg
ICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEobWFrZVVuaXF1ZTxJbnRl
cnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEuaW50ZXJzZWN0
aW9uT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKQEAgLTM2NTgsNyArMzY1OCw3IEBAIFJlc2l6ZU9ic2Vy
dmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlUmVzaXplT2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRv
JiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEu
cmVzaXplT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVy
RGF0YShzdGQ6Om1ha2VfdW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJh
cmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YShtYWtlVW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0
YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRhdGEoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IGQ5ZTY2MzQ5Y2JkYmEw
YmI4MWQyYWNmYmZkYzBkNDMzNzhjNjU4ZGIuLjBiMDlkMDgyYzM2ZWRkZDg0YjljZGU5ODgyNTI3
MmRiNWY5NmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpcwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvIGxpc3RlbmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZl
bnRMaXN0ZW5lclZlY3Rvcj4oKTsKKyAgICBhdXRvIGxpc3RlbmVycyA9IG1ha2VVbmlxdWU8RXZl
bnRMaXN0ZW5lclZlY3Rvcj4oKTsKICAgICBsaXN0ZW5lcnMtPnVuY2hlY2tlZEFwcGVuZChSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKSk7
CiAgICAgbV9lbnRyaWVzLmFwcGVuZCh7IGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lcnMpIH0p
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggOWU5MzA4YmI1
ZGExNDYxZTM1OGUzY2M2MmZlYWZkY2ZjZDBjYzdhZC4uNWI2YWI2ODc1NWI2MWJmZTJkNGE2OGJj
YmU3NTI0ZmQwZGRhYmI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0zMzksMTMgKzMz
OSwxMyBAQCBzdHJ1Y3QgRXZlbnROYW1lcyB7CiAgICAgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNI
KERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKQogI3VuZGVmIERPTV9FVkVOVF9OQU1FU19ERUNMQVJF
CiAKLSAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBzdGQ6Om1ha2VfdW5p
cXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgorICAgIC8vIEZJWE1FOiBU
aGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIG1ha2VVbmlxdWUgYmVsb3cgZG9lcyBub3Qgd29yayBp
biB3aW5kb3dzIHBvcnQuCiAgICAgLy8KICAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4u
LiBBcmdzPgotICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5n
bGVfb2JqZWN0IHN0ZDo6bWFrZV91bmlxdWUoQXJncyYmLi4uKTsKKyAgICAvLyBmcmllbmQgdHlw
ZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBtYWtlVW5pcXVlKEFyZ3Mm
Ji4uLik7CiAgICAgLy8KICAgICAvLyBUaGlzIGNyZWF0ZSBmdW5jdGlvbiBzaG91bGQgYmUgZGVs
ZXRlZCBsYXRlciBhbmQgaXMgb25seSBmb3Iga2VlcGluZyBFdmVudE5hbWVzIGFzIHByaXZhdGUu
Ci0gICAgLy8gc3RkOjptYWtlX3VuaXF1ZSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorICAgIC8v
IG1ha2VVbmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KICAgICAvLwogICAgIHRlbXBsYXRl
PGNsYXNzLi4uIEFyZ3M+CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVzPiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCmluZGV4IGRiMTQy
OGQxZDQyNjA1OGNiNjViMWViNmZhY2EyM2RiOTg5MjgyYmQuLmEwYWQwYWQ3YzQ4MjY5MmU2Mzhl
NTcyODBmMWEyOTI0N2FjZWMxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCkBAIC0xMTUs
MTcgKzExNSwxNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFy
Z2V0LCBFdmVudCYgZXZlbnQpCiB7CiAgICAgdXNpbmcgTWFrZUV2ZW50Q29udGV4dCA9IHN0ZDo6
dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+ICgqKShOb2RlJiwgRXZlbnRUYXJnZXQqLCBFdmVudFRh
cmdldCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgTWFrZUV2ZW50Q29udGV4dCBtYWtl
RXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0
LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdl
dCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93
RGVwdGgpOwogICAgIH07CiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSB8fCBldmVudC5p
c0ZvY3VzRXZlbnQoKSkgewogICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5v
ZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQg
Y2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4
dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUs
IGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9Owog
ICAgIH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChpczxUb3VjaEV2ZW50Pihl
dmVudCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVu
dFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNo
YWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVu
dFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0
LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2VuZGlmCkBAIC0xNDks
NyArMTQ5LDcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdl
dCwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pigqbm9kZSkuZG9tV2luZG93KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNsb3NlZFNo
YWRvd0RlcHRoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZCht
YWtlVW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNs
b3NlZFNoYWRvd0RlcHRoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEV2ZW50UGF0
aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIHRhcmdldHMpCiAgICAgICAgIEFT
U0VSVCh0YXJnZXQpOwogICAgICAgICBOb2RlKiBvcmlnaW4gPSAqdGFyZ2V0cy5iZWdpbigpOwog
ICAgICAgICBpZiAoIXRhcmdldC0+aXNDbG9zZWRTaGFkb3dIaWRkZW4oKm9yaWdpbikpCi0gICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJn
ZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CisgICAgICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VV
bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CiAgICAgfQog
fQogCkBAIC0zMTcsNyArMzE3LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9y
PEV2ZW50VGFyZ2V0Kj4mIHRhcmdldHMpCiAgICAgZm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRz
KSB7CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBBU1NFUlQoIWlzPE5vZGU+KHRh
cmdldCkpOwotICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250
ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsKKyAgICAgICAgbV9w
YXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFy
Z2V0cy5iZWdpbigpLCAwKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVu
TWFuYWdlci5oCmluZGV4IGVkZDljYTI4ZWE0OTNhYzdjOTRjOGJkZTI4NWIxNjY2YzM4ODI1NTku
LmE3MGJjYWVjY2M4Nzk1YTRmNGJhNDI2ZTI1MTNkZmY3YTBmNzRiMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFJlbmRlclRy
ZWVCdWlsZGVyOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIEZ1bGxzY3JlZW5NYW5hZ2Vy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVu
TWFuYWdlcihEb2N1bWVudCYpOwogICAgIH5GdWxsc2NyZWVuTWFuYWdlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAppbmRleCBiM2EwNmU0
N2IwNzAwZjdjNDdkM2Q5YWVmMzNmNDQzNzI0ZTBjNTVlLi45NDBlZmNhZWQ4MzA5MWMyNTgzZmE5
ZTMzNmVmM2Q3OGM1NGFhM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQCB2b2lkIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbVN0cmluZyYgaWQsIElkVGFyZ2V0T2Jz
ZXJ2ZQogICAgIAogICAgIElkVG9PYnNlcnZlclNldE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
cmVnaXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxP
YnNlcnZlclNldD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8T2JzZXJ2ZXJTZXQ+KCk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQob2Jz
ZXJ2ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDdlN2EzNDc5
N2I4NjI5ZjYyZjdmNzg2YWIxNGM1YzZmNWJkOTBiMTQuLmNlODU2YmI1NWQ1YmQ5OWU2NmY1MGNi
NTViMGJlNDc5MGUwOTg0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoKSA9IGRl
ZmF1bHQ7CiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQmIGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCiAgICAgOiBV
SUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKGtleS50eXBl
KCkpLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMsIElzQ29tcG9zZWQ6OlllcywK
ICAgICAgICAga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3
LmNvcHlSZWYoKSwgMCwga2V5Lm1vZGlmaWVycygpLCBJc1RydXN0ZWQ6OlllcykKLSAgICAsIG1f
dW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ+KGtleSkpCisgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KG1ha2VVbmlxdWU8
UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRU
UklCVVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFz
a3MuaAppbmRleCBiNjMxODQxNTBmNWEzOTE0MjUyYjg0MmVkOWQwN2RlYWFmNmI0MDM2Li41ZDUw
YjdkNWQ3YjIzYTYxZGNiYmNjNWY4YjVmMWZiYWIyYmI0YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWljcm90YXNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rh
c2tzLmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgVm9pZE1pY3JvdGFzayBmaW5hbCA6IHB1Ymxp
YyBNaWNyb3Rhc2sgewogfTsKIAogY2xhc3MgTWljcm90YXNrUXVldWUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNaWNyb3Rhc2tRdWV1
ZT47CiAgICAgZnJpZW5kIGNsYXNzIE1pY3JvdGFzazsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA2NmM1ZWEwYjlkNjM0NTQ0MzgxMmZiMTMxZmZl
NWRiZTZjYTFkZGYzLi4xOTNmMjc4MDVhNWFlZDRiNjA2ZTljZWVhM2E5YTM1ZDhiMWU5OTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcg
QEAgc3RhdGljIHZvaWQgcXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2soKQog
ICAgIGlmIChtdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnKQogICAg
ICAgICByZXR1cm47CiAgICAgbXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVk
RmxhZyA9IHRydWU7Ci0gICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkpOworICAgIE1p
Y3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxNdXRhdGlv
bk9ic2VydmVyTWljcm90YXNrPigpKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1
ZXVlTXV0YXRpb25SZWNvcmQoUmVmPE11dGF0aW9uUmVjb3JkPiYmIG11dGF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAK
aW5kZXggNTJkYTYxZjc0ZjFmNTdhZjY4NTQ5ZjM2NjU2MzA2ZDhkMTcwM2M3OS4uMDI3NmU0MmJl
NWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5Y2JkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyCiAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFs
dWVGbGFnKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOwogfQogCiBib29sIE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNw
cAppbmRleCBjOGZjMDEwNjcyNDVlNGUzNjE5N2EyZjZkNGQxZTQ1NzU0N2JiYzhhLi5lNWM2ZGQx
NmE0ZGI2MDliYTUyNzNhNDdhZjdmYTY4MjY2MmEyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC02OCw3ICs2OCw3
IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6b2JzZXJ2ZWRTdWJ0cmVlTm9k
ZVdpbGxEZXRhY2goTm9kZSYgbm9kZSkKICAgICBtX29ic2VydmVyLT5zZXRIYXNUcmFuc2llbnRS
ZWdpc3RyYXRpb24oKTsKIAogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcykg
ewotICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKKyAgICAgICAgbV90cmFuc2llbnRS
ZWdpc3RyYXRpb25Ob2RlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2Rl
Pj4+KCk7CiAKICAgICAgICAgQVNTRVJUKCFtX25vZGVLZXB0QWxpdmUpOwogICAgICAgICBtX25v
ZGVLZXB0QWxpdmUgPSAmbV9ub2RlOyAvLyBCYWxhbmNlZCBpbiB0YWtlVHJhbnNpZW50UmVnaXN0
cmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3NmQ0ZWE5ZDczMGE5MjM3MmE5ZjhlN2E2ZDhm
NjdkMDBmZDNkYmY1Li5jYWJmMWViNThjOWMyM2NhZDg4NWJkMDFkZjEyMmI2NTFhZTAyYmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC0zOTgsOSArMzk4LDkgQEAgdm9pZCBOb2RlOjptYXRlcmlhbGl6
ZVJhcmVEYXRhKCkKIHsKICAgICBOb2RlUmFyZURhdGEqIGRhdGE7CiAgICAgaWYgKGlzPEVsZW1l
bnQ+KCp0aGlzKSkKLSAgICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJhcmVE
YXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2Uo
KTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKICAgICBlbHNlCi0g
ICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVu
ZGVyZXIpLnJlbGVhc2UoKTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8Tm9kZVJhcmVEYXRh
PihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOwogICAgIEFTU0VSVChkYXRhKTsKIAogICAg
IG1fZGF0YS5tX3JhcmVEYXRhID0gZGF0YTsKQEAgLTIyMTUsNyArMjIxNSw3IEBAIEV2ZW50VGFy
Z2V0RGF0YSYgTm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKIAogICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soc19ldmVudFRhcmdldERhdGFNYXBMb2NrKTsKICAgICBzZXRIYXNFdmVudFRh
cmdldERhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhp
cywgc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICByZXR1cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBtYWtlVW5pcXVlPEV2
ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIE5vZGU6OmNsZWFy
RXZlbnRUYXJnZXREYXRhKCkKQEAgLTIyODcsNyArMjI4Nyw3IEBAIHZvaWQgTm9kZTo6cmVnaXN0
ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9i
c2VydmVyCiAgICAgfQogCiAgICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKLSAgICAgICAgcmVnaXN0
cnkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4o
b2JzZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKKyAgICAgICAgcmVn
aXN0cnkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4ob2Jz
ZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKICAgICAgICAgcmVnaXN0
cmF0aW9uID0gcmVnaXN0cnkubGFzdCgpLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCmluZGV4IDc2OTBkNTk5ZmNhN2RjOTljYjQ5ZTE2MGZiZTJhZmFkZGYwMGNkZjQu
Ljc2NmQ2N2YzZjZkNjI5YWYwODk0MmFkYzIzZTJjMjJjMjlmM2U0NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKQEAgLTI4MSw3ICsyODEsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBw
dWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgTm9kZUxpc3RzTm9kZURhdGEmIGVuc3VyZU5v
ZGVMaXN0cygpCiAgICAgewogICAgICAgICBpZiAoIW1fbm9kZUxpc3RzKQotICAgICAgICAgICAg
bV9ub2RlTGlzdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOworICAg
ICAgICAgICAgbV9ub2RlTGlzdHMgPSBtYWtlVW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOwog
ICAgICAgICByZXR1cm4gKm1fbm9kZUxpc3RzOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OSw3IEBA
IGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsKICAgICBOb2Rl
TXV0YXRpb25PYnNlcnZlckRhdGEmIGVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkKICAgICB7
CiAgICAgICAgIGlmICghbV9tdXRhdGlvbk9ic2VydmVyRGF0YSkKLSAgICAgICAgICAgIG1fbXV0
YXRpb25PYnNlcnZlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVy
RGF0YT4oKTsKKyAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBtYWtlVW5pcXVl
PE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICptX211dGF0aW9u
T2JzZXJ2ZXJEYXRhOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
ZGlvQnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vw
cy5jcHAKaW5kZXggNTMzN2M1OGNkZmJiYWFiMjMwMTg0NTAyNjM4ZGM2MzQ0OWY3OTZhYy4uNjFi
YmM0ZWRmZjkzNGE2NDQ2ZWEyNTY3NTU2NjNmZDU0Njg3N2UzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCkBAIC0xOTgsMTEgKzE5OCwxMSBAQCB2b2lkIFJhZGlv
QnV0dG9uR3JvdXBzOjphZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQotICAgICAgICBtX25hbWVU
b0dyb3VwTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKKyAgICAgICAg
bV9uYW1lVG9Hcm91cE1hcCA9IG1ha2VVbmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CiAKICAgICBh
dXRvJiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50Lm5hbWUoKS5pbXBsKCks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWdyb3VwKQotICAgICAgICBncm91
cCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFkaW9CdXR0b25Hcm91cD4oKTsKKyAgICAgICAgZ3JvdXAg
PSBtYWtlVW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CmluZGV4IGM4MjVhN2VkZWU2YmIyZDVmNTE2YzZkM2U2ZWE3NDEwZTZlY2M3NTYuLjA0YWZlOWQ3
OGFkMGJkMTAyOGE2NzAzYzBmYzNkNGY2NTNiMTNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM3OSw4ICszNzksOCBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbgogewogICAgIGlmIChtX2luRGlzcGF0Y2hFcnJvckV2ZW50KSB7CiAg
ICAgICAgIGlmICghbV9wZW5kaW5nRXhjZXB0aW9ucykKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4
Y2VwdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGlu
Z0V4Y2VwdGlvbj4+PigpOwotICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAg
ICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBtYWtlVW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOworICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5h
cHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE0LDkgKzQxNCw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihKU0M6OkV4ZWNTdGF0
ZSYgc3RhCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogIiwgcmVzdWx0TWVzc2FnZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykK
LSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAg
ICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgZWxzZQotICAgICAgICBt
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7CiAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92
ZShtZXNzYWdlKSk7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBSZWplY3RlZFByb21pc2VUcmFj
a2VyJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2Vy
U2xvdwogICAgIC8vIFdoZW4gaW5pdGlhbGl6aW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHZt
KCkgaXMgbm90IHJlYWR5LgogCiAgICAgQVNTRVJUKCFtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIp
OwotICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVqZWN0
ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOworICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJh
Y2tlciA9IG1ha2VVbmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOwog
ICAgIHJldHVybiAqbV9yZWplY3RlZFByb21pc2VUcmFja2VyLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggNTVkYzJjODdhNGFjMjAyZDcxYWRkYTY2ZDU5
NmI1ZmVhMGJjODg1Ni4uMjEwOWNlNGEyMjhjM2U3YmE4N2E0YmE1MmIyZGIyODIzNjA4NzEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIEV4
Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBTZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBT
dHJpbmcmIHNlbGVjdG9ycywgRG9jCiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbWF4aW11
bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUpCiAgICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRy
aWVzLnJhbmRvbSgpKTsKIAotICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIHN0
ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIG1ha2VV
bmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjk2M2I2ODM3OWQ4
OGYyN2E4NGUyZjFkYTY1MTUzODE4MDViMjkzYy4uNjc4NmMwZDIxZTFiMmMyYTU3ODUxYmQwODUx
NjRjMWExZTkyYzk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNTgsNyArNTgs
NyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93Um9v
dE1vZGUgdHlwZSkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRv
d1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50KQogICAgICwgbV90eXBlKHR5
cGUpCi0gICAgLCBtX3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0
aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMp
KQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYgc2xvCiAgICAg
OiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJl
ZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShTaGFkb3dSb290TW9kZTo6VXNl
ckFnZW50KQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3Bl
PigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0
aGlzKSkKICAgICAsIG1fc2xvdEFzc2lnbm1lbnQoV1RGTW92ZShzbG90QXNzaWdubWVudCkpCiB7
CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXBhcmVudFRyZWVTY29wZSgpIHx8ICZwYXJlbnRUcmVl
U2NvcGUoKS0+ZG9jdW1lbnRTY29wZSgpID09ICZuZXdEb2N1bWVudCk7CiAKICAgICAvLyBTdHls
ZSBzY29wZXMgYXJlIGRvY3VtZW50IHNwZWNpZmljLgotICAgIG1fc3R5bGVTY29wZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CisgICAgbV9zdHlsZVNjb3BlID0gbWFr
ZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkgPT0gJm5ld0RvY3Vt
ZW50KTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6YWRkU2xvdEVs
ZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzCiB7
CiAgICAgQVNTRVJUKCZzbG90LnJvb3ROb2RlKCkgPT0gdGhpcyk7CiAgICAgaWYgKCFtX3Nsb3RB
c3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxT
bG90QXNzaWdubWVudD4oKTsKKyAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IG1ha2VVbmlxdWU8
U2xvdEFzc2lnbm1lbnQ+KCk7CiAKICAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+YWRkU2xv
dEVsZW1lbnRCeU5hbWUobmFtZSwgc2xvdCwgKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90
QXNzaWdubWVudC5jcHAKaW5kZXggYTQxOWRkYTUyOGFjY2JkYTZkZTlkZGYxYTU0ODY0Y2ZkZjkx
NjBlZi4uNDVjMDhlYTM2YWZlMTM5N2JlMGVjYmZiMjllMjI4ZWNkMGM5OTA3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTbG90
QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwg
SFRNTFNsb3RFbGVtZW4KICAgICAgICAgLy8gdG8gYXZvaWQgYWx3YXlzIGhhdmluZyBhIHZlY3Rv
ciBvZiBhbGwgY2hpbGQgbm9kZXMgb2YgYSBzaGFkb3cgaG9zdC4KICAgICAgICAgaWYgKHNsb3RO
YW1lID09IGRlZmF1bHRTbG90TmFtZSgpKQogICAgICAgICAgICAgbV9zbG90QXNzaWdubWVudHNJ
c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYXV0byYg
c2xvdCA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIGJvb2wgbmVlZHNTbG90Y2hh
bmdlRXZlbnQgPSBzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNB
c3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsIHNsb3QpOwpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQg
U2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbVN0cmlu
ZyYgc2xvdE5hbWUpCiAgICAgfQogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nsb3RzLmVuc3Vy
ZShzbG90TmFtZSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90Pigp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwogICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPmFzc2lnbmVkTm9kZXMuYXBwZW5kKCZjaGlsZCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDJmMjg3MGQxNjY5ZDQ0YmM2MTg0YTcyZWM2M2Vi
MzIzZjUyN2QzOWYuLjUzMWFjZGY0ZGQ2NTY4ZTBmNDYyMWViNTBkODlkZWU0NjdkNTVhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFRyZWVTY29wZTo6VHJl
ZVNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fcm9vdE5vZGUoc2hhZG93Um9vdCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkK
ICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKCZkb2N1bWVudCkKLSAgICAsIG1faWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Pigp
KQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgc2hhZG93Um9vdC5zZXRUcmVlU2NvcGUoKnRoaXMp
OwogfQpAQCAtNzMsNyArNzMsNyBAQCBUcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKGRvY3VtZW50KQogICAgICwgbV9kb2N1bWVudFNjb3Bl
KGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUobnVsbHB0cikKLSAgICAsIG1faWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgZG9jdW1lbnQuc2V0VHJlZVNjb3Bl
KCp0aGlzKTsKIH0KQEAgLTE0MSw3ICsxNDEsNyBAQCBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBU
cmVlU2NvcGU6OmdldEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50SQog
dm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBlbGVt
ZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgbm90aWZ5T2JzZXJ2ZXJzKQogewogICAgIGlm
ICghbV9lbGVtZW50c0J5SWQpCi0gICAgICAgIG1fZWxlbWVudHNCeUlkID0gc3RkOjptYWtlX3Vu
aXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IG1h
a2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlJZC0+YWRk
KGVsZW1lbnRJZCwgZWxlbWVudCwgKnRoaXMpOwogICAgIGlmIChub3RpZnlPYnNlcnZlcnMpCiAg
ICAgICAgIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVu
dElkKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRC
eU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNjb3BlOjphZGRF
bGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50JiBlbGVtZW50
KQogewogICAgIGlmICghbV9lbGVtZW50c0J5TmFtZSkKLSAgICAgICAgbV9lbGVtZW50c0J5TmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9l
bGVtZW50c0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBt
X2VsZW1lbnRzQnlOYW1lLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0yMzks
NyArMjM5LDcgQEAgdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50JiBp
bWFnZU1hcCkKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1faW1h
Z2VNYXBzQnlOYW1lKQotICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBt
YWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9pbWFnZU1hcHNCeU5hbWUt
PmFkZCgqbmFtZSwgaW1hZ2VNYXAsICp0aGlzKTsKIH0KIApAQCAtMjYzLDcgKzI2Myw3IEBAIEhU
TUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoY29uc3Qg
QXRvbVN0cmluZ0ltcGwmIG5hbWUsIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAg
aWYgKCFtX2ltYWdlc0J5VXNlbWFwKQotICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gc3RkOjpt
YWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2ltYWdlc0J5VXNl
bWFwID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIHJldHVybiBtX2lt
YWdlc0J5VXNlbWFwLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0zMDAsNyAr
MzAwLDcgQEAgSFRNTExhYmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJlbEVsZW1lbnRGb3JJZChj
b25zdCBBdG9tU3RyaW5nJiBmb3JBdHRyaWJ1dGVWYWwKIAogICAgIGlmICghbV9sYWJlbHNCeUZv
ckF0dHJpYnV0ZSkgewogICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgbWFwIG9uIGZpcnN0IGFjY2Vz
cy4KLSAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJl
ZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IG1h
a2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGxh
YmVsIDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTExhYmVsRWxlbWVudD4obV9yb290Tm9kZSkpIHsK
ICAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvclZhbHVlID0gbGFiZWwuYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCA3OTM0MmM0OTc3NTNkOWExNTI2ZTA1NTU0OWZjNzc5NzIxNGJmNmU0Li44OTFjMTI4
OGM2ZTMxNGFjY2FlOWI2MjcxOTc4MTg4MWU3NDJkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC0zODAsMTIgKzM4MCwxMiBAQCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAg
IHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5OgogICAg
IGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDdXQ6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1v
ZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCkpOwogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUGxhaW5U
ZXh0OgogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSkgewogICAgICAgICAgICAgYXV0byBwbGFp
blRleHRUeXBlID0gInRleHQvcGxhaW4iX3M7CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dCA9
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT5yZWFkU3RyaW5nKHBsYWluVGV4
dFR5cGUpOwotICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxT
dGF0aWNQYXN0ZWJvYXJkPigpOworICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAgICAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVT
dHJpbmcocGxhaW5UZXh0VHlwZSwgcGxhaW5UZXh0KTsKICAgICAgICAgICAgIHJldHVybiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpT
dG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpKTsKICAgICAgICAgfQpAQCAt
Mzk2LDEwICszOTYsMTAgQEAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFu
c2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCwKICAgICBjYXNlIENsaXBi
b2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6
QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVQYXN0ZToKLSAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0
aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwg
bWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3Vu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZh
bGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogfQogCiAvLyBSZXR1cm5zIHdo
ZXRoZXIgY2FsbGVyIHNob3VsZCBjb250aW51ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5n
Iiwgd2hpY2ggaXMgdGhlIHNhbWUgYXMKQEAgLTExODMsOSArMTE4Myw5IEBAIHZvaWQgRWRpdG9y
OjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQog
CiBFZGl0b3I6OkVkaXRvcihGcmFtZSYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAg
ICwgbV9raWxsUmluZyhzdGQ6Om1ha2VfdW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCi0gICAgLCBt
X3NwZWxsQ2hlY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQotICAg
ICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQorICAgICwgbV9raWxsUmluZyhtYWtlVW5pcXVlPFBB
TDo6S2lsbFJpbmc+KCkpCisgICAgLCBtX3NwZWxsQ2hlY2tlcihtYWtlVW5pcXVlPFNwZWxsQ2hl
Y2tlcj4oZnJhbWUpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKG1ha2VVbmlx
dWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQogICAgICwgbV9lZGl0b3JVSVVw
ZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjplZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpCiAjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAsIG1fdGVsZXBob25lTnVtYmVyRGV0ZWN0aW9uVXBkYXRlVGltZXIoKnRoaXMsICZF
ZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAwZGRjMTVi
ZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3NjQ1ZjU0Nzk0Li4yYzIwMjhjYzYzYzFiOTM4YmM2NmZm
NGJlYTU4OTkyNThlOWE0YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTYzMSw3ICsxNjMxLDcgQEAgdm9pZCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6dXBkYXRlTm9kZXNJbnNlcnRlZChOb2RlICpub2RlKQogUmVw
bGFjZW1lbnRGcmFnbWVudCogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2Vt
ZW50RnJhZ21lbnQoKQogewogICAgIGlmICghbV9yZXBsYWNlbWVudEZyYWdtZW50KQotICAgICAg
ICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VtZW50RnJh
Z21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOworICAg
ICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBtYWtlVW5pcXVlPFJlcGxhY2VtZW50RnJhZ21l
bnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIHJl
dHVybiBtX3JlcGxhY2VtZW50RnJhZ21lbnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAppbmRleCAzYjQwNjg4Y2I0ZGE2
NTZiMzQ0NTg3YzA4ODg2MzZjMGFiMTU2NmNmLi5mOWI2NGM1YzhjODk2YmYzMjI2MzA4NzA5ZjI2
YWE2NjdlMWVkOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
blJlY3RHYXRoZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25S
ZWN0R2F0aGVyZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZWxlY3Rp
b25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyPiBTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5k
CiAgICAgbV9nYXBSZWN0cy5jbGVhcigpOwogICAgIG1faXNUZXh0T25seSA9IHRydWU7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPE5vdGlmaWVyPigqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCAxODk2ZTFhMjI4MWMx
YTliMDQ2ZThlZmFjZDkxMTlhZjVlMjc3ZDU2Li5mMWQxOWMxMDExNGMxYTk4NWI4YjQyNmZhNjhm
ZGI4MTIyYTYwYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBA
IC02NTAsNyArNjUwLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAg
ICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9mZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3Ro
KCk7CiAgICAgICAgIGlmICghbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSB8fCAmbV9mbG93UnVuUmVz
b2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZibG9ja0Zsb3cpIHsKICAgICAgICAgICAgIG1fYWNjdW11
bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93ID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA/IDAg
OiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBtX2Zsb3dSdW5S
ZXNvbHZlckNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNv
bHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKKyAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVy
Q2FjaGUgPSBtYWtlVW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zs
b3csICpsYXlvdXQpOwogICAgICAgICB9CiAgICAgICAgIC8vIFNraXAgdG8gbV9vZmZzZXQgcG9z
aXRpb24uCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5yYW5n
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCAwYTgzYWMwOTU5Mjc0YzA3ODBkNWQ3YjM4NWYwMTljMGU4
NmUzYzc0Li45Y2Y4NmE0YTE1ZjFjN2M2ZjAyODE1NTY0N2FmYTAwNTlhZTNiNmZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0zODAsNyAr
MzgwLDcgQEAgSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcihjb25zdCBQb3NpdGlvbiYgc3Rh
cnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiAgICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9IGZhbHNl
OwogICAgIF9mbGFncy5yZWFjaGVkRW5kID0gZmFsc2U7CiAgICAgCi0gICAgX2NhY2hlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTENvbnZlcnRlckNhY2hlcz4oKTsKKyAgICBfY2FjaGVzID0gbWFr
ZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVzPigpOwogfQogCiBIVE1MQ29udmVydGVyOjp+SFRN
TENvbnZlcnRlcigpCkBAIC01NTEsNyArNTUxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBIVE1MQ29u
dmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KEVsZW1lbnQmIGUK
IAogICAgIGF1dG8gcmVzdWx0ID0gbV9jb21wdXRlZFN0eWxlcy5hZGQoJmVsZW1lbnQsIG51bGxw
dHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1l
bnQsIHRydWUpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxD
b21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxlbWVudCwgdHJ1ZSk7CiAgICAgQ29tcHV0ZWRTdHls
ZUV4dHJhY3RvciYgY29tcHV0ZWRTdHlsZSA9ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAg
IHJldHVybiBjb21wdXRlZFN0eWxlLnByb3BlcnR5VmFsdWUocHJvcGVydHlJZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5oCmluZGV4IDI1NzdkNWE3Njk2ODE2MjJmNWQwYTdiNjNmZjRkMDlkODhjOTVkYzEu
LjI5YzVhOGRhN2VlMzI1NTYxMjY1NjkwNTRlMzAyMjI4YTUzMDE4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNfQ0xBU1MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cigpIHsgfQogICAgIC8vIFJldHVybnMgYSBjb250ZXh0IElELgpAQCAtNTIsNiArNTMsNyBAQCBj
bGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgewogICAgIHZvaWQgZGlzbWlzc0FsdGVy
bmF0aXZlcygpOwogCiAgICAgY2xhc3MgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcigpIHsgfQogICAgICAgICB1aW50NjRfdCBh
ZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmYjQzNzE2MzAzYWUyNWI4MTkyOTJkMjcxY2Ey
Y2FlNjg0YjljMDJlLi5jM2M4ZjhiMzI0YmZlY2RjZTllNWM0ZWIxOWI1Yjc0NjA4OTI4YzNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpCiB7CiAgICAg
YXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50
cygpOwogICAgIAotICAgIGF1dG8gcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4o
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgIHBhZ2UtPnNldElzRm9yU2FuaXRpemlu
Z1dlYkNvbnRlbnQoKTsKICAgICBwYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxz
ZSk7CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCBhMDk1ZWVhZTliMmE3
OTdiZGFiYWUzNDk0MGZkYzZhM2NlMzA0MjRiLi5kNTgxMTJmZjliZGY2Y2Q3ZDE5ODU1MmQ4NjY5
OTFmODViN2ExYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwCkBAIC05NCwxMSArOTQsMTEgQEAgc3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChGdW5j
dGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1
ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZN
b3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1ZXVlLmdldCgpLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0
aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogfQogCiBBc3luY0ZpbGVTdHJlYW06
OkFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2ludGVy
bmFscyhzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFscz4oY2xpZW50KSkKKyAgICA6IG1faW50ZXJu
YWxzKG1ha2VVbmlxdWU8SW50ZXJuYWxzPihjbGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCA5YWQz
ZGE5ZWZmZjBmM2E3MDdhMDYwMWY3ODYwMWQ1ZDg2ODI1OGY1Li45OWE3YjVjNmY5ODdhMTRiYTE5
MDk0NTg5ODdhZTg0ZWNmYzRmMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5j
cHAKQEAgLTEzOSw3ICsxMzksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGaWxlUmVhZGVyOjpyZWFk
SW50ZXJuYWwoQmxvYiYgYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cAogICAgIG1fc3Rh
dGUgPSBMT0FESU5HOwogICAgIG1fZXJyb3IgPSBudWxscHRyOwogCi0gICAgbV9sb2FkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0
PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0aGlzKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5p
cXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJM
b2FkZXJDbGllbnQqPih0aGlzKSk7CiAgICAgbV9sb2FkZXItPnNldEVuY29kaW5nKG1fZW5jb2Rp
bmcpOwogICAgIG1fbG9hZGVyLT5zZXREYXRhVHlwZShtX2Jsb2ItPnR5cGUoKSk7CiAgICAgbV9s
b2FkZXItPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDZhZTU1MmNiY2VmYmEzNWFmNTQ5NGFkODBh
MTQ3MzFkMDBhY2EzZDEuLjVjOGYxOGUzZGFiMGViMjU5N2FkNWU4MjIxMzliZDg4ZmYzMjRlMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0xNjMsNyArMTYzLDcg
QEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFtZSkKIAogICAgIC8vIENyZWF0
ZSB0aGUgQ2FjaGVkRnJhbWVzIGZvciBhbGwgRnJhbWVzIGluIHRoZSBGcmFtZVRyZWUuCiAgICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG1fY2hpbGRGcmFtZXMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkRnJhbWU+KCpjaGlsZCkpOworICAgICAgICBt
X2NoaWxkRnJhbWVzLmFwcGVuZChtYWtlVW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKIAog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpKTsKICAgICBSRUxFQVNF
X0FTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBDYWNoZWRG
cmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUmIGZyYW1lKQogICAgIC8vIEFjdGl2ZSBET00gb2JqZWN0
cyBtdXN0IGJlIHN1c3BlbmRlZCBiZWZvcmUgd2UgY2FjaGUgdGhlIGZyYW1lIHNjcmlwdCBkYXRh
LgogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hl
KTsKIAotICAgIG1fY2FjaGVkRnJhbWVTY3JpcHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3Jp
cHRDYWNoZWRGcmFtZURhdGE+KGZyYW1lKTsKKyAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9
IG1ha2VVbmlxdWU8U2NyaXB0Q2FjaGVkRnJhbWVEYXRhPihmcmFtZSk7CiAKICAgICBtX2RvY3Vt
ZW50LT5kb21XaW5kb3coKS0+c3VzcGVuZEZvclBhZ2VDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRQYWdlLmNwcAppbmRleCAwNjg2YWU4ZmVjZTQ0ZjFlZjY5MGU1ZjhmNmFiZTg0
NjE0NjNkZjdkLi45NzQ3YTQwNDAxNmFjODY4ZDJmNzc5NmU1MzMwNDM2ZmZhNTg3NDlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgREVGSU5F
X0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRQYWdl
Q291bnRlciwgKCJDYWNoZWQKIENhY2hlZFBhZ2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSkKICAg
ICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9leHBpcmF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpu
b3coKSArIFNlY29uZHMocGFnZS5zZXR0aW5ncygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9u
SW50ZXJ2YWwoKSkpCi0gICAgLCBtX2NhY2hlZE1haW5GcmFtZShzdGQ6Om1ha2VfdW5pcXVlPENh
Y2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgpKSkKKyAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKG1h
a2VVbmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2UubWFpbkZyYW1lKCkpKQogewogI2lmbmRlZiBOREVC
VUcKICAgICBjYWNoZWRQYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAppbmRleCAwMDI5NjU1ODkyZDE1NGNiNTA0M2UxZGEyMjgyNTg3OWY2M2Vk
ZGU1Li4zYmEyNGI5ZGUyZTk5NDE5NmEwZGY5MmZjMzY2M2NlZWE1YmY0Yjk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBAIC00NzgsNyArNDc4LDcgQEAgYm9vbCBQYWdlQ2Fj
aGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAg
ICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUu
CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2Fs
bG93ZWRTY29wZTsKIAotICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOworICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VV
bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9
IFBydW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCA3YTk5MWYxN2IwM2Q4M2U5
MDVmN2QzZTA2MDdiZjUyYTk5YjgwZTQ1Li5iMTRkMzEwMTU4YjY0NWZlODY5OWY3Zjk5ZjQxODU4
YmQ1NWFlMjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMzMiw3
ICszMzIsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXRocykKICAgICAgICAgbV9maWxlSWNvbkxvYWRlci0+aW52YWxpZGF0ZSgpOwog
CiAgICAgRmlsZUljb25Mb2FkZXJDbGllbnQmIGNsaWVudCA9ICp0aGlzOwotICAgIG1fZmlsZUlj
b25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOworICAg
IG1fZmlsZUljb25Mb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOwog
CiAgICAgY2hyb21lLT5sb2FkSWNvbkZvckZpbGVzKHBhdGhzLCAqbV9maWxlSWNvbkxvYWRlcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5k
ZXggODA2ZTVmM2RhZWJlMjk0ZTMzMDIzMGRmYTVlZGU4YzkyZDU4YzMxOC4uMTdjMDI3Y2ZkZmEx
YmI0M2I2NDVlZTYyZDU4YzhhYzMyMDZkODc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRm9ybUFz
c29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQog
dm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyKCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihhc0hUTUxFbGVt
ZW50KCkuaXNDb25uZWN0ZWQoKSk7Ci0gICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxl
bWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7
CisgICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRF
bGVtZW50Ojpmb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuY3BwCmluZGV4IGVhNWIwOWFhYTA4ZGIyNzM5NjFiOTUzNDIyZjAzZGQ3YWQ2
ZTQ2NzEuLmQwZTAzZjU2Y2IwNjNlMjdmMTEzNDBhMjcxM2Q0Zjk2MWI1YWU2NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNhdmVkRm9ybVN0YXRlPiBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29u
c3QgVmVjdG9yPFN0cmluZz4KICAgICBzaXplX3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5k
ZXgrK10udG9VSW50KCk7CiAgICAgaWYgKCFpdGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9y
bVN0YXRlPigpOworICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9y
bVN0YXRlPigpOwogICAgIHdoaWxlIChpdGVtQ291bnQtLSkgewogICAgICAgICBpZiAoaW5kZXgg
KyAxID49IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMzY1LDEzICszNjUsMTMgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQog
c3RkOjp1bmlxdWVfcHRyPEZvcm1Db250cm9sbGVyOjpTYXZlZEZvcm1TdGF0ZU1hcD4gRm9ybUNv
bnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKGNvbnN0IEZvcm1FbGVtZW50TGlzdEhh
c2hTZXQmIGNvbnRyb2xMaXN0KQogewogICAgIEZvcm1LZXlHZW5lcmF0b3Iga2V5R2VuZXJhdG9y
OwotICAgIGF1dG8gc3RhdGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFw
PigpOworICAgIGF1dG8gc3RhdGVNYXAgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigp
OwogICAgIGZvciAoYXV0byYgY29udHJvbCA6IGNvbnRyb2xMaXN0KSB7CiAgICAgICAgIGlmICgh
Y29udHJvbC0+c2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgYXV0byYgZm9ybVN0YXRlID0gc3RhdGVNYXAtPmFkZChr
ZXlHZW5lcmF0b3IuZm9ybUtleSgqY29udHJvbCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgICAgIGlmICghZm9ybVN0YXRlKQotICAgICAgICAgICAgZm9ybVN0YXRlID0g
c3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKKyAgICAgICAgICAgIGZvcm1TdGF0
ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CiAgICAgICAgIGZvcm1TdGF0ZS0+YXBw
ZW5kQ29udHJvbFN0YXRlKGNvbnRyb2wtPm5hbWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9s
LT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFwOwpA
QCAtNDAzLDcgKzQwMyw3IEBAIEZvcm1Db250cm9sU3RhdGUgRm9ybUNvbnRyb2xsZXI6OnRha2VT
dGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsCiAgICAgaWYgKG1fc2F2
ZWRGb3JtU3RhdGVNYXAuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0
ZSgpOwogICAgIGlmICghbV9mb3JtS2V5R2VuZXJhdG9yKQotICAgICAgICBtX2Zvcm1LZXlHZW5l
cmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1LZXlHZW5lcmF0b3I+KCk7CisgICAgICAgIG1f
Zm9ybUtleUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKICAgICBT
YXZlZEZvcm1TdGF0ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQo
bV9mb3JtS2V5R2VuZXJhdG9yLT5mb3JtS2V5KGNvbnRyb2wpLmltcGwoKSk7CiAgICAgaWYgKGl0
ID09IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJv
bFN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4
IDEwNDdjNThlZWMzNTM2ZTNkMzk5M2E3YjZlNTg2MjViMDE1OTUyZjEuLmViOWJkMDY4NWQ1OTJl
YTY5MjMxM2FkNDE2YzI3ZDdmMjgyNjFmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVu
dDo6aGFzUmVsKFJlbGF0aW9uIHJlbGF0aW9uKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MQW5j
aG9yRWxlbWVudDo6cmVsTGlzdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIHsKLSAg
ICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nh
c3Q8SFRNTEFuY2hvckVsZW1lbnQmPigqdGhpcyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9j
dW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlx
dWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBI
VE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogI2lm
IFVTRShTWVNURU1fUFJFVklFVykKICAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKHRva2VuLCAibm9yZWZlcnJlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9r
ZW4sICJub29wZW5lciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJhciIpOwog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCBhYzA3NThk
ZTgzYjA0ODgyYTVkODkyMmZkNDA1NTQ4ZWY5NTZkY2EyLi40OWFiZmE1ZjcwYTdhYjk3ZDczZTJj
ODJiNzY3YjA1MzUxYWRlZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
Y3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgSFRNTEFyZWFFbGVtZW50OjppbnZhbGlkYXRlQ2Fj
aGVkUmVnaW9uKCkKIGJvb2wgSFRNTEFyZWFFbGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBv
aW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBzaXplLCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQpCiB7CiAgICAgaWYgKG1fbGFzdFNpemUgIT0gc2l6ZSkgewotICAgICAgICBtX3JlZ2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4oZ2V0UmVnaW9uKHNpemUpKTsKKyAgICAgICAgbV9yZWdp
b24gPSBtYWtlVW5pcXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7CiAgICAgICAgIG1fbGFzdFNp
emUgPSBzaXplOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAppbmRleCBhOWJiNGZiOGUwNjNlNzAxNWYxYTY0ZTdkODZmZWIzNThmZmMyN2NkLi44OTRl
NjM5OGI4YTRlY2RkZWRmOWUxOTg4YTQxNGMxNzFiMjg2OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4m
JiBidWZmZXIpIGNvCiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKHRydWUpOwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KGRlZmF1bHRJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAg
bV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2Nv
bnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIg
PSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNv
bnRleHQoKSk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKEhUTUxFbGVtZW50OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIEhUTUxFbGVtZW50OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtZW1v
cnlDb3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA5NzZj
OGUwYTlhMDZhOWI4M2Q2Y2E5NDFiZDVkZDM3YjlmMzM4NWM1Li4zMjgxNzZiNjllOGNkMWJmMjJk
NGU3NjMyN2U5ZjI5Mjk2OGFiNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVk
RWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVj
dGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBsZW5n
dGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggZjE1Nzg3NGU2ZDUzNGUz
ZjYxMzRlNGE1ZGY0ZjUxYmUyZjY3YTMxYS4uNjBkZDFmYjI1MjAzODYwZDNkOTJhN2E1YWNiMzMx
YzJhYjA0YjU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNw
cApAQCAtODgsNyArODgsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBEZXRhaWxzU2xvdEFzc2lnbm1l
bnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5vZGUmIGNoaWxkKQogUmVmPEhUTUxEZXRh
aWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGF1dG8gZGV0YWlscyA9IGFk
b3B0UmVmKCpuZXcgSFRNTERldGFpbHNFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAg
ZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6
bWFrZV91bmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7CisgICAgZGV0YWlscy0+YWRk
U2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8RGV0YWls
c1Nsb3RBc3NpZ25tZW50PigpKSk7CiAgICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ4ODkzYjFm
MDk0OWVmMTAyZTI5ZDAzYzU4OTY3YzRkZDRmM2ZkNWEuLmUxNTMxNmExOWVlZmI0NzdlM2YzNjdj
ODBmN2MzYzFhMmE2MzRiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcApAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkKICAgICBpZiAocmVuZGVy
ZXIoKSAmJiB3aWxsVmFsaWRhdGUoKSkKICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNz
YWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgaWYgKCFtX3ZhbGlkYXRpb25NZXNzYWdlKQot
ICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxWYWxpZGF0aW9u
TWVzc2FnZT4odGhpcyk7CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBtYWtlVW5pcXVl
PFZhbGlkYXRpb25NZXNzYWdlPih0aGlzKTsKICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT51cGRh
dGVWYWxpZGF0aW9uTWVzc2FnZShtZXNzYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCA2ZWMyMmQ3NzQ5ZjJm
NzhiZDMxZWY3N2VhNjM2MDczYjcxYzU5ZmYyLi5hMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZl
Njg5YzNiMWM2OGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAo
aGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNo
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAg
IGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsK
IAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZ0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBjNzZkNDkzYTYyY2VkODMw
ODgwMWI2YjAxZDMzMjFlMGEzMzNmNTFkLi40MzVkOTUxNGRkMjlkZGQxZjZkZmIxZDE2OWUzNDdl
MzE1YTMwMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03
OTEsNyArNzkxLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKEZv
cm1OYW1lZEl0ZW0qIGl0ZW0sIGNvbnN0IEF0b21TdHJpbmcmIHAKICAgICBpZiAocGFzdE5hbWUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX3Bhc3ROYW1lc01hcCkKLSAg
ICAgICAgbV9wYXN0TmFtZXNNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhc3ROYW1lc01hcD4oKTsK
KyAgICAgICAgbV9wYXN0TmFtZXNNYXAgPSBtYWtlVW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKICAg
ICBtX3Bhc3ROYW1lc01hcC0+c2V0KHBhc3ROYW1lLmltcGwoKSwgaXRlbSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMDJkN2Q0ZTRmYmU4NmY1
MjcwZjU4NGI2YThkZWI5YmU0NmY5N2FhOS4uYjFjODIxZGQ5YmFiYTJhMjBjYjI5ZTFjMWNmZDkw
ZDcxZmVjNThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxJRnJhbWVFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIERPTVRva2VuTGlzdCYg
SFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3goKQogewogICAgIGlmICghbV9zYW5kYm94KSB7Ci0g
ICAgICAgIG1fc2FuZGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywg
c2FuZGJveEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBt
X3NhbmRib3ggPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBb
XShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiBTZWN1
cml0eUNvbnRleHQ6OmlzU3VwcG9ydGVkU2FuZGJveFBvbGljeSh0b2tlbik7CiAgICAgICAgIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBj
MjVjZGQ4MGQ1ZjhhNzcwYTFkOTcwMDU3ODQ3YTg5YzU2ODNkYmQuLjM3NmM1MjE5NjRlMGY3MWI2
ZmQ5YzIxNzJkNjIwMWMyOTI1N2ExYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBI
VE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKIHsK
ICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlTG9hZGVy
ID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1h
Z2VMb2FkZXI7CiB9CiAKQEAgLTE2NDEsNyArMTY0MSw3IEBAIFJlZlB0cjxIVE1MRGF0YUxpc3RF
bGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpkYXRhTGlzdCgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBpZiAo
aXNDb25uZWN0ZWQoKSkKLSAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0ciksIHRoaXMpOworICAgICAgICBtX2xpc3RBdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1ha2VVbmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyPihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CiAg
ICAgZWxzZQogICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjg2MzRjYWRh
ZmExOGEwYTI3Y2NmNzI4ZjliYmY1NmNiN2Y3OGQxNi4uZjZhN2JjODAyNGZmYTVlNGJkNzFmNjlh
MjdjOTdjOGM5MzZiYjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cApAQCAtNDgxLDcgKzQ4MSw3IEBAIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzdHlsZVNoZWV0SXNM
b2FkaW5nKCkgY29uc3QKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpzaXplcygpCiB7
CiAgICAgaWYgKCFtX3NpemVzKQotICAgICAgICBtX3NpemVzID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXplc0F0dHIpOworICAgICAgICBtX3NpemVzID0gbWFrZVVu
aXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXplc0F0dHIpOwogICAgIHJldHVybiAqbV9zaXpl
czsKIH0KIApAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRj
aFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQogRE9NVG9rZW5MaXN0
JiBIVE1MTGlua0VsZW1lbnQ6OnJlbExpc3QoKQogewogICAgIGlmICghbV9yZWxMaXN0KSAKLSAg
ICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBI
VE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tl
bikgeworICAgICAgICBtX3JlbExpc3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMs
IEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRv
a2VuKSB7CiAgICAgICAgICAgICByZXR1cm4gTGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQo
ZG9jdW1lbnQsIHRva2VuKTsKICAgICAgICAgfSk7CiAgICAgcmV0dXJuICptX3JlbExpc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBmNzQwY2NhYzI0MmU5
ZTBmM2JjOGRkYzk1NzVmYjMyYTRlZjE5OGFmLi5mM2FjZmNkZTAwMDdhMjRmMjc1YTRjOTU0ZDUy
NTEyMDgzNzgyOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTQ4MSw3ICs0ODEsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKCkKIHsKLSAgICBtX21lZGlhU2Vzc2lv
biA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOworICAgIG1f
bWVkaWFTZXNzaW9uID0gbWFrZVVuaXF1ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CiAK
ICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuKTsKICAgICBtX21lZGlhU2Vz
c2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJl
UGFnZUNvbnNlbnRUb0xvYWRNZWRpYSk7CkBAIC0zMDI3LDcgKzMwMjcsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBj
b25zdCBNZWRpYVRpbQogCiAgICAgLy8gNSAtIElmIHRoZSBzZWVrIHdhcyBpbiByZXNwb25zZSB0
byBhIERPTSBtZXRob2QgY2FsbCBvciBzZXR0aW5nIG9mIGFuIElETCBhdHRyaWJ1dGUsIHRoZW4g
Y29udGludWUKICAgICAvLyB0aGUgc2NyaXB0LiBUaGUgcmVtYWluZGVyIG9mIHRoZXNlIHN0ZXBz
IG11c3QgYmUgcnVuIGFzeW5jaHJvbm91c2x5LgotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3Np
dGl2ZVRvbGVyYW5jZSk7CisgICAgbV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1Nl
ZWs+KG5vdywgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAg
ICBpZiAoZnJvbURPTSkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1
aW5nIHNlZWsgZnJvbSAiLCBub3csICIgdG8gIiwgdGltZSk7CiAgICAgICAgIG1fc2Vla1Rhc2tR
dWV1ZS5zY2hlZHVsZVRhc2soc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywg
dGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMGJhYjlm
YzlkNmVkYTFjMWJjMmE2MDk2ODNmMjc2ZmU3NjAzY2Y4Li5mMjRlODc2YTEzYjYxNTU5ZTJjOTk1
YmJhNGE1ZTQ1MjM0OTcwMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtOTkwLDYgKzk5MCw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICBSZWZQdHI8
TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAogICAgIHN0cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29u
c3QgTWVkaWFUaW1lJiBub3csIGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVk
aWFUaW1lJiBuZWdhdGl2ZVRvbGVyYW5jZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVy
YW5jZSkKICAgICAgICAgICAgIDogbm93KG5vdykKICAgICAgICAgICAgICwgdGFyZ2V0VGltZSh0
YXJnZXRUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRl
eCBkZDRmYTJkNzBlNGY0M2Y0MmI4MjIyZDM3ZDQ0MThmMWExMzFlZDg3Li41NmI3MjA2YWUzYmU4
ZjEwYTg4MTRhZTlhZmFjNjJiZmViNTYwOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1l
bnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogRE9NVG9rZW5MaXN0JiBI
VE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcigpCiB7CiAgICAgaWYgKCFtX3Rva2VucykKLSAgICAg
ICAgbV90b2tlbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0
dHIpOworICAgICAgICBtX3Rva2VucyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywg
Zm9yQXR0cik7CiAgICAgcmV0dXJuICptX3Rva2VuczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggZGRhOTQ0OWQ1N2FkNDIwODU4
NjI3ZGVkM2ZkZDkxODEzMjE1ZmUyYi4uNWI5OWQ1NTU1MzA0OTcwOTNjNmJjYTk5NTg3YzdhMmY3
MjU1OTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1
cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbigpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgIXVzZUZh
bGxiYWNrQ29udGVudCgpKSB7CiAgICAgICAgIGlmIChpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAg
ICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAg
ICAgICAgICAgICBpZiAobV9uZWVkc0ltYWdlUmVsb2FkKQogICAgICAgICAgICAgICAgIG1faW1h
Z2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAg
ICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAK
aW5kZXggMTBiYzA5ZmYwOTljODg4YjIyNjI2OTM5MGI4ZTFmOGJlNGNlMzk2Ny4uYjA0OTM5Yjlj
MmQ3MjcwMjEzNzljNWE0ZGQzNDA0N2Q4MTJhZDk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBTdW1tYXJ5U2xv
dEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU2xvdEFzc2lnbm1lbnQgewogUmVmPEhUTUxTdW1tYXJ5
RWxlbWVudD4gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIFJlZjxIVE1MU3VtbWFyeUVsZW1l
bnQ+IHN1bW1hcnkgPSBhZG9wdFJlZigqbmV3IEhUTUxTdW1tYXJ5RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwotICAgIHN1bW1hcnktPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRl
KGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOworICAg
IHN1bW1hcnktPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtl
VW5pcXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOwogICAgIHJldHVybiBzdW1tYXJ5OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBhNWU3NWFhZmY1
MmRkZjlmNTc1NDViYTA2N2VlYzc4OTg4OGRkOWFiLi42N2ZmMjEyNTJmMWI4ZTgzMTBhMWQ3Y2Ji
MjMyZWE4YzczOTM4YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5k
ZXJlcnMoKQogICAgIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwogICAgIGlmIChzaG91bGREaXNwbGF5
UG9zdGVySW1hZ2UoKSkgewogICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlz
KTsKKyAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRl
cj4oKnRoaXMpOwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwog
ICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgcmVuZGVyZXItPmltYWdlUmVzb3VyY2UoKS5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVy
LT5pbWFnZSgpKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgog
CiAgICAgICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAgICAgICAg
aWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1f
aW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAg
ICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJy
b3IoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNw
cAppbmRleCBkNWI5YmVkYmFkMDQ3MDQ2MWE1OGFiNWNiMDE0YTY4YzA0N2Q3ZmIwLi44NTQ1MWQx
NDM3MGUyNGNkN2Q0ZGQ1NjkwMTQ2MzczNWFkNjgzMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGQ6OnVuaXF1ZV9wdHI8UHVibGljVVJMTWFuYWdlcj4gUHVibGljVVJMTWFuYWdlcjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBwdWJs
aWNVUkxNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0
KTsKKyAgICBhdXRvIHB1YmxpY1VSTE1hbmFnZXIgPSBtYWtlVW5pcXVlPFB1YmxpY1VSTE1hbmFn
ZXI+KGNvbnRleHQpOwogICAgIHB1YmxpY1VSTE1hbmFnZXItPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcAppbmRleCA4YWY3M2E4YTAwNTQ5ODBhZDE3OTA2OTU2YTg0MzJhNmY5
Y2RiMTRiLi5mNWRhYjBmNDJmMmQwNTNlNzAzYzZjNTcyM2NhMTYwMzcxZDFhMmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcApAQCAtMTE1LDkgKzExNSw5IEBA
IHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIG1fbWVzc2FnZSA9IG1lc3Nh
Z2U7CiAgICAgaWYgKCFtX2J1YmJsZSkKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7Cisg
ICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNz
YWdlOjpidWlsZEJ1YmJsZVRyZWUpOwogICAgIGVsc2UKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VE
T01BbmRTdGFydFRpbWVyKTsKKyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0
aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKICAg
ICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKIH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZv
aWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKCkKICAgICBp
ZiAobWFnbmlmaWNhdGlvbiA8PSAwKQogICAgICAgICBtX3RpbWVyID0gbnVsbHB0cjsKICAgICBl
bHNlIHsKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAm
VmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0g
bWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxl
VHJlZSk7CiAgICAgICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdChzdGQ6Om1heCg1X3MsIDFfbXMg
KiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9u
KSk7CiAgICAgfQogfQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6
OnJlcXVlc3RUb0hpZGVNZXNzYWdlKCkKICAgICB9CiAKICAgICAvLyBXZSBtdXN0IG5vdCBtb2Rp
ZnkgdGhlIERPTSB0cmVlIGluIHRoaXMgY29udGV4dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0
TWVzc2FnZSgpLgotICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywg
JlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKKyAgICBtX3RpbWVyID0gbWFr
ZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJl
ZSk7CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKaW5kZXggYjE2Nzc4NDQyOGMzYmZlOWU2ZjE2YTc3ODQwZDNmM2JiOTcwNWI5Ni4uNTNj
OWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRjY2M1NmMwMjhhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RydWN0IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQg
ewogCiAgICAgRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKICAgICAgICAgOiBjb250ZXh0KFsm
XShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENv
bnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5
TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkp
OwogICAgICAgICB9KQogICAgIHsKICAgICB9CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBHcmFwaGlj
c0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdpbmdDb250ZXh0KCkg
Y29uc3QKIHsKICAgICBpZiAoVU5MSUtFTFkobV91c2VzRGlzcGxheUxpc3REcmF3aW5nKSkgewog
ICAgICAgICBpZiAoIW1fcmVjb3JkaW5nQ29udGV4dCkKLSAgICAgICAgICAgIG1fcmVjb3JkaW5n
Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3Jh
cGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFz
QmFzZSgpLnNpemUoKSkpOworICAgICAgICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAg
ICAgIHJldHVybiAmbV9yZWNvcmRpbmdDb250ZXh0LT5jb250ZXh0OwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCA2MzExOTE3NTcwZjJkYjI4NTk0Y2JiMzQ5MDI0Njk5N2I1ODNmYmUwLi5jZDQ3MjEy
NjFiMmUwMjJiNTUyNWRkM2QzY2E1NDY5ZjljMGIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTM1OSw3
ICsxMzU5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQo
dHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZh
cmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1h
a2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxl
ID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAg
ICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBc
CiAgICAgICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZTA2YmY5OWQ1OTE1OTYzOTgwYTYxMWMzMmE4Mzll
Mjk3ZjEyODA0NS4uZTVmZGU3MDMzNzQ1NmEzMWUxNTcxZWUxMGYzZmQyNjQyZGIwMzZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxF
X0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAog
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAg
ICAgICAgIGlmICghdmFyaWFibGUpIHsgXAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5h
YmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAg
ICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDog
bnVsbHB0cjsgXAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigq
dGhpcywgbmFtZSk7IFwKICAgICAgICAgfSBcCkBAIC0xMzIsNyArMTMyLDcgQEAgV2ViR0xFeHRl
bnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBudWxscHRyOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAg
ICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRT
aGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0
dXJlTE9EID0gbWFrZVVuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRo
aXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTksNyArMTU5LDcgQEAg
V2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBudWxs
cHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAg
ICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERy
YXdCdWZmZXJzPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0g
bWFrZVVuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzEsNyArMTcxLDcgQEAgV2ViR0xFeHRlbnNp
b24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwotICAgICAg
ICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xF
SW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNl
ZEFycmF5cyA9IG1ha2VVbmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigq
dGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggM2VjZTdlZWI3NDJmYWRiNmZlMThiMzNlYjVhNjEzOWNlZDQxYmE1Ni4uZDE2NmZiMjM5MDc2
ZDM2MjY1ZDk2YzY0NWYwNzE4NzVhYzgyYmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc5OSw4
ICs3OTksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdD
b250ZXh0KCkKICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIGNhbnZhc1NpemUud2lkdGgo
KSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CiAgICAgbV9jb250ZXh0LT5zY2lzc29yKDAsIDAsIGNh
bnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQt
PnNldENvbnRleHRMb3N0Q2FsbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0Nv
bnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsKLSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2Fn
ZUNhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNz
YWdlQ2FsbGJhY2s+KHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJh
Y2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsK
KyAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KHRoaXMpKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKCkKQEAgLTE1NzksNyArMTU3OSw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNo
YWRlciogc2hhZGVyKQogICAgICAgICBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0
YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6
Y3VycmVudFN0YXRlKCkpOwogCiAgICAgICAgIGZvciAoYXV0byYgZXJyb3IgOiBnZXRTaGFkZXJJ
bmZvTG9nKHNoYWRlcikuc3BsaXQoJ1xuJykpCi0gICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkp
OworICAgICAgICAgICAgY2FudmFzLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJv
ciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsKICAgICB9CiB9CiAKQEAgLTU4MDgsOSArNTgwOCw5
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmCiAgICAgLy8gRXJyb3IgbWVzc2FnZXMgY2FuIG9j
Y3VyIGR1cmluZyBmdW5jdGlvbiBjYWxscywgc28gc2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZW0u
CiAgICAgaWYgKGxldmVsID09IE1lc3NhZ2VMZXZlbDo6RXJyb3IpIHsKICAgICAgICAgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVT
Y3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpKTsKLSAgICAgICAgY29u
c29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3Nh
Z2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3Nh
Z2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRl
cmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UpOwogCiAgICAgYXV0byogY2Fu
dmFzID0gaHRtbENhbnZhcygpOwogICAgIGlmIChjYW52YXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggZTg1OTBjY2M2OTcyOGFm
MzkzMDFkM2FlOGQ4OTg4ZjVjMTVhNGIyYS4uYWVmZTQ1N2Y0ZWZmMDQzNjU3NjNjYjI2ZjcxNzg0
NjNlMzJlMWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJl
bG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxv
YWRTY2FubmVyLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6
OmVtaXRSdWxlKCkKICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBV
UkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJv
bSB0aGUgSFRNTFByZWxvYWRTY2FubmVyIHZpYSBzY2FuKCk6IHdpdGhvdXQgaXQgd2Ugd2lsbCBn
ZXQgcmVsYXRpdmUgVVJMcyB3cm9uZy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJzZXQgaW4gdGhlIHByZWxvYWQgcmVxdWVzdD8KLSAgICAg
ICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0
PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVudFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0
eWxlU2hlZXQsIFN0cmluZygpLCBQcmVsb2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVm
ZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSk7CisgICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBl
bmQobWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkws
IENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJl
cXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwog
ICAgICAgICB9CiAgICAgICAgIG1fc3RhdGUgPSBJbml0aWFsOwogICAgIH0gZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocnVsZSwgImNoYXJzZXQiKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA1
MWJhZTRjMjFjZjk0MGRjZDhjNmQzMjBiYzRkYmQ2NjI2YmU3ZDlmLi45YWM0NDRlZjBhNjcxZjhh
NDc2OTk1N2FlMzIyMmJkOGQxMDA3ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPiBIVE1MQ29uc3RydWN0
aW9uU2l0ZTo6aW5zZXJ0SFRNTEUKICAgICBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGVsZW1l
bnRJbnRlcmZhY2UgPSBudWxscHRyOwogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3Jl
YXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKHRva2VuLCAmZWxlbWVu
dEludGVyZmFjZSk7CiAgICAgaWYgKFVOTElLRUxZKGVsZW1lbnRJbnRlcmZhY2UpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4o
KmVsZW1lbnRJbnRlcmZhY2UsIHRva2VuLm5hbWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVz
KCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlv
bkRhdGE+KCplbGVtZW50SW50ZXJmYWNlLCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0
cmlidXRlcygpKSk7CiAgICAgYXR0YWNoTGF0ZXIoY3VycmVudE5vZGUoKSwgKmVsZW1lbnQpOwog
ICAgIG1fb3BlbkVsZW1lbnRzLnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZSh0b2tlbikpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmlu
ZGV4IDRmZjRlMmI4Nzg4YTkxOWJmNDJkMTdhZDlmZDY1MWI5YjAzYWQxOWIuLmRkOWVhMDRjNmY1
MDBjODY0YjhjOTRjMTkzODM3ODc3YWZmZGU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEhU
TUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX29w
dGlvbnMoZG9jdW1lbnQpCiAgICAgLCBtX3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3Nj
cmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBz
dGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVubmVySG9zdCY+KCp0aGlzKSkpCi0gICAgLCBtX3RyZWVC
dWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQs
IHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKLSAgICAsIG1fcGFyc2VyU2NoZWR1
bGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQorICAgICwg
bV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3Rh
dGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhvc3QmPigqdGhpcykpKQorICAgICwgbV90cmVlQnVp
bGRlcihtYWtlVW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJD
b250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCisgICAgLCBtX3BhcnNlclNjaGVkdWxlcihtYWtl
VW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+KCp0aGlzKSkKICAgICAsIG1feHNzQXVkaXRvckRl
bGVnYXRlKGRvY3VtZW50KQotICAgICwgbV9wcmVsb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1M
UmVzb3VyY2VQcmVsb2FkZXI+KGRvY3VtZW50KSkKKyAgICAsIG1fcHJlbG9hZGVyKG1ha2VVbmlx
dWU8SFRNTFJlc291cmNlUHJlbG9hZGVyPihkb2N1bWVudCkpCiB7CiB9CiAKQEAgLTcwLDcgKzcw
LDcgQEAgaW5saW5lIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3Vt
ZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW4KICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlcihmcmFnbWVudC5kb2N1bWVudCgpLCByYXdQb2xpY3kpCiAgICAgLCBtX29wdGlvbnMoZnJh
Z21lbnQuZG9jdW1lbnQoKSkKICAgICAsIG1fdG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1f
dHJlZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFn
bWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkK
KyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBm
cmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25z
KSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGZyYWdtZW50LmRvY3VtZW50KCkpCiB7CiAg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwj
cGFyc2luZy1odG1sLWZyYWdtZW50cwpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChp
c1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKICAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLmlzSW5E
YXRhU3RhdGUoKSk7CiAgICAgICAgIGlmICghbV9wcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAg
ICAgbV9wcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVy
PihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKKyAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQ
cmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBl
bmRUb0VuZChtX2lucHV0LmN1cnJlbnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9wcmVsb2Fk
U2Nhbm5lci0+c2NhbigqbV9wcmVsb2FkZXIsICpkb2N1bWVudCgpKTsKQEAgLTM3NCw3ICszNzQs
NyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmIHNv
dXJjZSkKICAgICAgICAgLy8gQ2hlY2sgdGhlIGRvY3VtZW50LndyaXRlKCkgb3V0cHV0IHdpdGgg
YSBzZXBhcmF0ZSBwcmVsb2FkIHNjYW5uZXIgYXMKICAgICAgICAgLy8gdGhlIG1haW4gc2Nhbm5l
ciBjYW4ndCBkZWFsIHdpdGggaW5zZXJ0aW9ucy4KICAgICAgICAgaWYgKCFtX2luc2VydGlvblBy
ZWxvYWRTY2FubmVyKQotICAgICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCkt
PnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1f
aW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4o
bV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKHNv
dXJjZSk7CiAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9h
ZGVyLCAqZG9jdW1lbnQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCAzMGM1YjQ2ZGYxMDNkYmRmNmY0YjdjZTQwOWNj
M2FhMTZjNTQ2MDEyLi42ZWYxNzEyYjlkNjNiNzFhY2I3YzE2OWY2MmI0OWM4MmYzMTA1ODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApA
QCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUoUmVm
PEhUTUxTdGFja0l0ZW0+JiYgaXRlbSwgRWxlbWVudFJlY29yZCYgcmVjCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICArK21fc3RhY2tEZXB0aDsKLSAgICAgICAgcmVjb3JkQWJvdmUt
PnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBy
ZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkpOworICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4
dChtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5y
ZWxlYXNlTmV4dCgpKSk7CiAgICAgICAgIHJlY29yZEFib3ZlLT5uZXh0KCktPmVsZW1lbnQoKS5i
ZWdpblBhcnNpbmdDaGlsZHJlbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcg
KzUzMyw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaENvbW1vbihSZWY8SFRNTFN0YWNr
SXRlbT4mJiBpdGVtKQogICAgIEFTU0VSVChtX3Jvb3ROb2RlKTsKIAogICAgICsrbV9zdGFja0Rl
cHRoOwotICAgIG1fdG9wID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3Zl
KGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CisgICAgbV90b3AgPSBtYWtlVW5pcXVlPEVsZW1lbnRS
ZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdURk1vdmUobV90b3ApKTsKIH0KIAogdm9pZCBIVE1MRWxl
bWVudFN0YWNrOjpwb3BDb21tb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggNTNhMTcyZDMzYWZjZGE4ZmY4OGQzNDRkOWMw
ZWYwOTAzY2RlY2M5Mi4uMzNkN2IzYmIwOGI2NTJkMGNkNjliY2VkZjFmODYwNjMxYWZhYTE0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRU
YWdTY2FubmVyIHsKICAgICAgICAgaWYgKCFMaW5rTG9hZGVyOjppc1N1cHBvcnRlZFR5cGUodHlw
ZS52YWx1ZSgpLCBtX3R5cGVBdHRyaWJ1dGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICAgICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVz
dD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwg
dHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0cmlidXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJl
clBvbGljeSk7CisgICAgICAgIGF1dG8gcmVxdWVzdCA9IG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVl
c3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkws
IHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJy
ZXJQb2xpY3kpOwogICAgICAgICByZXF1ZXN0LT5zZXRDcm9zc09yaWdpbk1vZGUobV9jcm9zc09y
aWdpbk1vZGUpOwogICAgICAgICByZXF1ZXN0LT5zZXROb25jZShtX25vbmNlQXR0cmlidXRlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCBmNzFiMjFkMjc4OTVl
NTc4YWI0N2Y1Y2Y1NDAyNTgzZTM2MTIxZDAyLi4zZjc0NmRjNmQ2NjdjNDM3MTFiNjhkMDliNDIw
MmQyM2ZmMGMwODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAt
MjA5LDcgKzIwOSw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKCkKIHsK
ICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IERPQ1RZ
UEU7Ci0gICAgbV9kb2N0eXBlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdHlwZURhdGE+KCk7
CisgICAgbV9kb2N0eXBlRGF0YSA9IG1ha2VVbmlxdWU8RG9jdHlwZURhdGE+KCk7CiB9CiAKIGlu
bGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggYWM2ZTc5NDQzMDA3MDM2
NDIxZWIxNmRmODNhOTBkM2QyNzcyZjg1Ni4uMDYxZDk1NjdiNzg0ZDliMGJhY2YzZjZkYjljZGU1
YTgwNmIwMWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAK
QEAgLTM3Niw3ICszNzYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8WFNTSW5mbz4gWFNTQXVkaXRvcjo6
ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlID0gbV94c3NQcm90ZWN0
aW9uID09IFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbjo6QmxvY2tFbmFibGVkOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFhTU0luZm8+KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJl
UGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQcm90ZWN0aW9uSGVhZGVyKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlk
U2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6Zmls
dGVyU3RhcnRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC03MTIs
NyArNzEyLDcgQEAgU3VmZml4VHJlZTxBU0NJSUNvZGVib29rPiogWFNTQXVkaXRvcjo6ZGVjb2Rl
ZEhUVFBCb2R5U3VmZml4VHJlZSgpCiAgICAgY29uc3QgdW5zaWduZWQgc3VmZml4VHJlZURlcHRo
ID0gNTsKIAogICAgIGlmICghbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlICYmIG1fZGVjb2Rl
ZEhUVFBCb2R5Lmxlbmd0aCgpID49IG1pbmltdW1MZW5ndGhGb3JTdWZmaXhUcmVlKQotICAgICAg
ICBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZmZpeFRy
ZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwor
ICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUgPSBtYWtlVW5pcXVlPFN1ZmZpeFRy
ZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwog
ICAgIHJldHVybiBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUuZ2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwCmluZGV4IDNhNjM3ZGFlZjAxMjRlMmU0ZWQzMzZiNjYzNzUyZDAwMjJiNWJlMDEuLmQ1
NjZiY2M3OTRhYTcyNGFiZTYwYTA4MGEzZjJjZjk1MWY0NTM3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApA
QCAtMTc0LDcgKzE3NCw3IEBAIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50OjpyZW5kZXJlcigpIGNvbnN0CiBPcHRpb25hbDxFbGVtZW50U3R5
bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAg
ICBhdXRvIHN0eWxlID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFk
b3dIb3N0KCkpLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOwotICAgIHJl
dHVybiBFbGVtZW50U3R5bGUoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShz
dHlsZSkpKTsKKyAgICByZXR1cm4gRWxlbWVudFN0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+
KFdURk1vdmUoc3R5bGUpKSk7CiB9CiAKIC8vIE1BUks6IFRleHRDb250cm9sUGxhY2Vob2xkZXJF
bGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVy
aWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmlj
VGV4dFRyYWNrLmNwcAppbmRleCBlNDAyMDBhOWE3YTIyNWRkZmQ4NzQ0ZDhjOTNiZGU2OTA5NjQ3
MDA5Li40OTM0ZDcyOWMxOThkMDgwNTlhYzhjOWYwYjE3NGE5NWU3NmY3MmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAK
QEAgLTE3NCw3ICsxNzQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbmJhbmRHZW5lcmljVGV4dFRy
YWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJiBjdWUpCiBXZWJWVFRQYXJzZXImIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OnBhcnNlcigpCiB7CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAg
ICAgICAgbV93ZWJWVFRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3Rh
dGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgICAgIG1fd2ViVlRUUGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+
KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIHJldHVybiAqbV93ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCA4
NTViYjIzOTI3ZWIxMGEzNWE1OWQxMmJlMGQyMzVhNzNjYWJjMTBlLi4xMGZhYTEyZjkwYjQ2MGI1
MDU2ZjI1NjdjYzJkOTgxMjdkOGZhYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluYmFu
ZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdlYlZUVFRleHRUcmFjaygpID0gZGVmYXVsdDsKIFdl
YlZUVFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICgh
bV93ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VV
bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlz
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2Vy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4
dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2su
Y3BwCmluZGV4IDhmMjljN2YxNjc5YTBmYTI5MThkZWNmYTUxM2UyZDgwMjcxYTM1ZTIuLjdhMWUx
YmM0NjkxYjIxMTY4OGMzY2Y1ZGE2MTlhYzYxZGJkNmZlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKCkKICAgICAvLyA0LiBEb3dubG9h
ZDogSWYgVVJMIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLCBwZXJmb3JtIGEgcG90ZW50aWFsbHkg
Q09SUy1lbmFibGVkIGZldGNoIG9mIFVSTCwgd2l0aCB0aGUKICAgICAvLyBtb2RlIGJlaW5nIHRo
ZSBzdGF0ZSBvZiB0aGUgbWVkaWEgZWxlbWVudCdzIGNyb3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmli
dXRlLCB0aGUgb3JpZ2luIGJlaW5nIHRoZQogICAgIC8vIG9yaWdpbiBvZiB0aGUgbWVkaWEgZWxl
bWVudCdzIERvY3VtZW50LCBhbmQgdGhlIGRlZmF1bHQgb3JpZ2luIGJlaGF2aW91ciBzZXQgdG8g
ZmFpbC4KLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrTG9hZGVyPihz
dGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJDbGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKKyAg
ICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0
VHJhY2tMb2FkZXJDbGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqPigmbV90cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKICAgICBpZiAoIW1fbG9hZGVy
LT5sb2FkKG1fdXJsLCAqbV90cmFja0VsZW1lbnQpKQogICAgICAgICBtX3RyYWNrRWxlbWVudC0+
ZGlkQ29tcGxldGVMb2FkKEhUTUxUcmFja0VsZW1lbnQ6OkZhaWx1cmUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAppbmRleCAwMzEwODBl
MWFiNjZkMzJjYzljMDcxNzhmMDJmOTM1MjNiYzcwNmIwLi45MDI5YjkyZDhiODNmMmQ3YmVkNmQ4
ZTU0NTc2YzBhMTY4Y2E1MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElIb3N0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8Q29tbWFuZExpbmVBUElI
b3N0PiBDb21tYW5kTGluZUFQSUhvc3Q6OmNyZWF0ZSgpCiB9CiAKIENvbW1hbmRMaW5lQVBJSG9z
dDo6Q29tbWFuZExpbmVBUElIb3N0KCkKLSAgICA6IG1faW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCkpCisgICAgOiBtX2luc3BlY3RlZE9iamVjdCht
YWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpKQogewogfQogCkBAIC0xOTYsNyArMTk2LDcg
QEAgSlNWYWx1ZSBDb21tYW5kTGluZUFQSUhvc3Q6OndyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVh
ckFsbFdyYXBwZXJzKCkKIHsKICAgICBtX3dyYXBwZXJzLmNsZWFyQWxsV3JhcHBlcnMoKTsKLSAg
ICBtX2luc3BlY3RlZE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+
KCk7CisgICAgbV9pbnNwZWN0ZWRPYmplY3QgPSBtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0
PigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01FZGl0b3IuY3BwCmluZGV4IDZjMzFlNDk4ZTQzNGQzMDBiMGYxYzZlYWI4NDM0Njc3NmNmMGEy
ZmMuLjgzODkwOGRjOTM2ZWZhNmJhMjZjNzkxNjcxNDRkYjdkZTllMmFlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIERPTUVk
aXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbiB7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGVyZm9ybSgpIGZpbmFsCiAgICAgewog
ICAgICAgICBpZiAobV9ub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIG1fcmVtb3Zl
Q2hpbGRBY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2Rl
LT5wYXJlbnROb2RlKCksIG1fbm9kZSk7CisgICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9u
ID0gbWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBt
X25vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX3JlbW92ZUNoaWxkQWN0aW9uLT5w
ZXJmb3JtKCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwpAQCAtMzg1LDI3ICsz
ODUsMjcgQEAgRE9NRWRpdG9yOjp+RE9NRWRpdG9yKCkgPSBkZWZhdWx0OwogCiBFeGNlcHRpb25P
cjx2b2lkPiBET01FZGl0b3I6Omluc2VydEJlZm9yZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9k
ZT4mJiBub2RlLCBOb2RlKiBhbmNob3JOb2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RG
TW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybSht
YWtlVW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwg
YW5jaG9yTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUNo
aWxkKE5vZGUmIHBhcmVudE5vZGUsIE5vZGUmIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9y
eS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUs
IG5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVD
aGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwgbm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBE
T01FZGl0b3I6OnNldEF0dHJpYnV0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3Jt
KHN0ZDo6bWFrZV91bmlxdWU8U2V0QXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1
ZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFNldEF0dHJpYnV0
ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwgdmFsdWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5n
JiBuYW1lKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVl
PFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSkpOworICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwg
bmFtZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE91dGVySFRNTChO
b2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqJiBuZXdOb2RlKQogewotICAgIGF1
dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0
bWwpOworICAgIGF1dG8gYWN0aW9uID0gbWFrZVVuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5v
ZGUsIGh0bWwpOwogICAgIGF1dG8mIHJhd0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byByZXN1
bHQgPSBtX2hpc3RvcnkucGVyZm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmICghcmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNDE1LDIyICs0MTUsMjIgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBO
b2RlKiYKIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1s
KQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2Vy
dEFkamFjZW50SFRNTEFjdGlvbj4oZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsKKyAgICByZXR1cm4g
bV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVs
ZW1lbnQsIHdoZXJlLCBodG1sKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6
cmVwbGFjZVdob2xlVGV4dChUZXh0JiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewot
ICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9s
ZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0KSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJm
b3JtKG1ha2VVbmlxdWU8UmVwbGFjZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSYgcGFy
ZW50Tm9kZSwgUmVmPE5vZGU+JiYgbmV3Tm9kZSwgTm9kZSYgb2xkTm9kZSkKIHsKLSAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0
aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5ld05vZGUpLCBvbGROb2RlKSk7CisgICAgcmV0dXJu
IG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFy
ZW50Tm9kZSwgV1RGTW92ZShuZXdOb2RlKSwgb2xkTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBET01FZGl0b3I6OnNldE5vZGVWYWx1ZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNl
dE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwgdmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBl
cmZvcm0obWFrZVVuaXF1ZTxTZXROb2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CiB9CiAK
IHN0YXRpYyBib29sIHBvcHVsYXRlRXJyb3JTdHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1
bHQsIEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMjBkYTM0MzBjMTVjODU1MTQ4NWM1NzM4YzU0N2Zh
MGMzNDMxYTFiYS4uMmU5ZDc1NTY1NWM4M2VmODgxNTk2YWFkMjBjOTZlMTBlNjg4MjZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTQwMiw3
ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAKIHN0ZDo6dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2Vz
dD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNN
YXAqIHVudXNlZE5vZGVzTWFwKQogewotICAgIGF1dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxEaWdlc3Q+KCk7CisgICAgYXV0byBkaWdlc3QgPSBtYWtlVW5pcXVlPERpZ2VzdD4oKTsKICAg
ICBkaWdlc3QtPm5vZGUgPSAmbm9kZTsKICAgICBTSEExIHNoYTE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1MjAzNzA2YjUz
YjMyYjBiYTRmMGVkNGQ0YmE0MDBiNmM3OWI1ZTE1Li42M2ZmM2FiNjIzYTQ0NmNkNjIwZWU0N2Uz
OTIwNTVjZWE1MWE4NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC05MywxMCArOTMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdl
JiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zy
b250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlS
ZWYoKSkpCi0gICAgLCBtX292ZXJsYXkoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5
PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV9vdmVybGF5KG1ha2VVbmlxdWU8SW5z
cGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9u
U3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVy
KHBhZ2UpCiAgICAgLCBtX3BhZ2UocGFnZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBJbnNwZWN0b3JD
b250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVu
dCogaW5zcGVjdG9yQwogCiAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQo
KTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29s
ZUFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVl
PFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogfQpAQCAtMTUzLDM3ICsxNTMsMzcgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBlbnN1cmVJ
bnNwZWN0b3JBZ2VudCgpOwogICAgIGVuc3VyZVBhZ2VBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29u
dGV4dCkpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
RGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1h
a2VVbmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBhdXRvIGRlYnVn
Z2VyQWdlbnRQdHIgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChX
VEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4o
cGFnZUNvbnRleHQpKTsKICAgICBlbnN1cmVET01BZ2VudCgpOwotICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0
LCBkZWJ1Z2dlckFnZW50UHRyKSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50Pihw
YWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtl
VW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50
PihwYWdlQ29udGV4dCkpOwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdl
Q29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckluZGV4
ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOwogI2VuZGlmCiAKLSAgICBhdXRvIHNjcmlwdFByb2Zp
bGVyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtl
VW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2Ny
aXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUo
c2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVy
QWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFn
ZUNvbnRleHQpKTsKICNlbmRpZgotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8UGFnZUF1ZGl0QWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxp
bmVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQ
YWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5p
cXVlPFBhZ2VBdWRpdEFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZCht
YWtlVW5pcXVlPEluc3BlY3RvckNhbnZhc0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQSUhv
c3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmNvcHlSZWYoKSk7CkBAIC00MjEsNyArNDIx
LDcgQEAgSW5zcGVjdG9yQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3Rv
ckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBw
YWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAg
ICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBh
Z2VDb250ZXh0KTsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Lmdl
dCgpOwogICAgICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1f
aW5zcGVjdG9yQWdlbnQpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0
b3JBZ2VudCkpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIEluc3BlY3RvckRPTUFnZW50JiBJbnNwZWN0
b3JDb250cm9sbGVyOjplbnN1cmVET01BZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckRP
TUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7
Ci0gICAgICAgIGF1dG8gZG9tQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFn
ZW50PihwYWdlQ29udGV4dCwgbV9vdmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBkb21BZ2Vu
dCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXku
Z2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvckRPTUFnZW50ID0gZG9tQWdlbnQuZ2V0KCk7CiAg
ICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRvbUFnZW50KSk7CiAgICAgfQpAQCAtNDQ0
LDcgKzQ0NCw3IEBAIEluc3BlY3RvclBhZ2VBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5z
dXJlUGFnZUFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZUFnZW50KSB7CiAgICAg
ICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8g
cGFnZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250
ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBw
YWdlQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1f
aW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvclBh
Z2VBZ2VudCA9IHBhZ2VBZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1v
dmUocGFnZUFnZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggMjhlZTcyN2EzNmQ2NmNl
MjEwOTY5NzgzMWFlMGE4YWFjNDIzODU3NS4uNmMxYjUxYWRlZTlhMzg0MjYzMzM4ZjQ1ZDg4ODRh
NmQ5YzM3ZWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFNldHRpbmdzIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgogICAgICAgICBTZXR0aW5ncygpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVh
bCB+U2V0dGluZ3MoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGlzdG9yeS5jcHAKaW5kZXggMDBkNWYxODUyY2ViYTI3MGMzYWY4MWMxMzIwOTAwNWRh
N2IxMThhOC4uYzgxMDNkZDdkYmI4MzIwZWFiMmU2YWQ1ZTMyYzJkNTJkNzJiMDYzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6
dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlvbikKIAogdm9pZCBJbnNwZWN0b3JIaXN0b3J5OjptYXJr
VW5kb2FibGVTdGF0ZSgpCiB7Ci0gICAgcGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFVuZG9hYmxl
U3RhdGVNYXJrPigpKTsKKyAgICBwZXJmb3JtKG1ha2VVbmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+
KCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJbnNwZWN0b3JIaXN0b3J5Ojp1bmRvKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCBjYTMwZTFhMjdiZjQwNjE4NWE0ODMyMGEyNjMxODNlYTdlNmU0N2UzLi4yMjljOThhNDQ3ZDIy
MjQ4ZGRlZjNiYTM0YjM3YzVjNGMwNDc1OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBQ
YXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291cmNl
RGF0YUxpc3Q+IHNvdXJjZUQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc291cmNl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIG1fc291
cmNlRGF0YSA9IG1ha2VVbmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwogCiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc29sdXRpb24gdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBm
bGF0IHNvdXJjZURhdGEgc3RydWN0dXJlCiAgICAgLy8gY29udGFpbmluZyBvbmx5IHN0eWxlIHJ1
bGVzLCBldmVuIHRob3VnaCBDU1NQYXJzZXIgbm93IHByb3ZpZGVzIHRoZSBmdWxsIHJ1bGUgc291
cmNlIGRhdGEgdHJlZS4KQEAgLTEzMzQsNyArMTMzNCw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVT
aGVldDo6ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1
dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7Ci0gICAgYXV0
byBydWxlU291cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFM
aXN0PigpOworICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBtYWtlVW5pcXVlPFJ1bGVT
b3VyY2VEYXRhTGlzdD4oKTsKICAgICAKICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQocGFy
c2VyQ29udGV4dEZvckRvY3VtZW50KG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSkp
OwogICAgIFN0eWxlU2hlZXRIYW5kbGVyIGhhbmRsZXIobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0
KCksIG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSwgcnVsZVNvdXJjZURhdGFSZXN1
bHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKaW5kZXggZDNiNzU5ZjI5Y2NmMWFlMTgwMjgwZDVlMTczNjcwZDI5YzRmOGNj
MS4uZmQ3Y2FkMzA3NjdlNzc1YjE2NzVlYzQ1NGVmN2EwOGJiMDM2ZDU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xMzYs
NyArMTM2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFG
b3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8g
cmVzb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVy
SWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0VHlwZSh0eXBlKTsKICAgICBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9
CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VD
cmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1
cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwor
ICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJ
ZCwgbG9hZGVySWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoJmNhY2hl
ZFJlc291cmNlKTsKICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0
SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNDM1MWU4NzJh
OWU1YTM2NDcyOWY1YjRmYjI2MjE2YzczMzAyYzhkZC4uMzY0YWVhN2Q0YjVkOTExNzkzMjc1ZDY0
NmYyOTVlNjdiZjBlZWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkK
ICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUo
KnRoaXMpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNy
ZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUo
KSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250
ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0
Y2g6OmNyZWF0ZSgpKQpAQCAtNjksNyArNjksNyBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
OjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAog
CiAgICAgYXV0byB3b3JrZXJDb250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBh
dXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3
b3JrZXJDb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8V29ya2Vy
Q29uc29sZUFnZW50Pih3b3JrZXJDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogfQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQg
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX2V4ZWN1
dGlvblN0b3B3YXRjaC0+cmVzZXQoKTsKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQo
KTsKIAotICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRv
UGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9mb3J3YXJk
aW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dv
cmtlckdsb2JhbFNjb3BlKTsKICAgICBtX2Zyb250ZW5kUm91dGVyLT5jb25uZWN0RnJvbnRlbmQo
Km1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCkpOwogfQpAQCAtMTY0LDE4ICsxNjQsMTggQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9
IHdvcmtlckFnZW50Q29udGV4dCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8V29ya2VyUnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMu
YXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyUnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4obV93b3JrZXJHbG9iYWxTY29wZSkpIHsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0g
ICAgICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5ldHdvcmtBZ2Vu
dD4od29ya2VyQ29udGV4dCkpOworICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxT
ZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8V29ya2VyTmV0d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAg
fQogI2VuZGlmCiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXZWJIZWFw
QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29u
dGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdl
bnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3Jr
ZXJBdWRpdEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExp
bmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgp
KQogICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYThk
M2M4OTljMzI4MGEyOGU2NzMyY2Y4OGFiODRkMDAwZDQ1ZWQyZC4uZmRmMDQ0YzU3OWIzNjhjMzIw
NTFiNjVkYzQ0MGUzODdmNjAxOGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJB
cHBsaWNhdGlvbkNhY2hlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRl
eHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRl
eHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGNmOTRj
YTgwOTZmZjU3MWQ3NGQ3NzNiMWYwMDI3NTA1NGMwY2UxZjkuLjExNjI0ZTI0MDk0NjRmYzFlMWU2
NWE2OTk4ZGJkMWIwNjgyZjBiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcApAQCAtMzks
NyArMzksNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDUFVQcm9m
aWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNQVVByb2ZpbGVyIl9zLCBjb250ZXh0
KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
KyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9m
aWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cAppbmRleCA0YjY5OTQ1ZWM3MDY3Zjk2NDNlNDgwNzMwMzQ4NDI2ODZkNjE5ZmI4Li40NGU5YzVh
YmViNGM5NjZhYmFlYTk0NGE0MGQ1ZTAzZDQ3MmQxMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjk3LDcg
KzI5Nyw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxl
KENTU1J1bGUmIHJ1bGUpCiAKIEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChX
ZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNTUyJf
cywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8
Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQ1NTQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsK
IH0KQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNo
ZWV0VGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5w
ZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3Rv
clN0eWxlU2hlZXQsIHRleHQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5
KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9y
U3R5bGVTaGVldCwgdGV4dCkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiB9CkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
SlNPTjo6T2JqZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJl
c3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRT
dHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsK
KyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1h
a2VVbmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3Vu
ZElkLCB0ZXh0KSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJm
b3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3
ICs2NzAsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVT
aGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBk
b21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0
aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOwogICAgIGlm
IChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
SW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgc3R5bGVTaGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWN0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBz
ZWxlY3Rvcik7CisgICAgYXV0byBhY3Rpb24gPSBtYWtlVW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGlu
c3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0
aW9uOwogICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZv
cm0oV1RGTW92ZShhY3Rpb24pKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcAppbmRleCA5YmUwNjExOWZiMzIxOTcwMDcyOTcyMmQ4MzZhODE2
YjI1ZjFjMDE1Li4wZTUwYzc1YmE0ODc1MTU1NmU0MTJkY2I5N2FkMTk2Njk2NWE5OTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ2FudmFzIl9zLCBj
b250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFz
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3BlY3Rl
ZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250
ZXh0JiBjYW52YXNSZW5kCiAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMtPmN1cnJlbnRGcmFtZUhh
c0RhdGEoKSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGlu
c3BlY3RvckNhbnZhcy0+Y29udGV4dCgpLmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIHF1ZXVlID0gTWljcm90YXNrUXVldWU6Om1haW5U
aHJlYWRRdWV1ZSgpOwotICAgICAgICAgICAgcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgWyYsIHByb3RlY3RlZEluc3BlY3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVm
KCldIHsKKyAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxi
YWNrTWljcm90YXNrPihxdWV1ZSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0
ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpXSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52
YXMtPmNhbnZhc0VsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzRWxl
bWVudC0+aXNEZXNjZW5kYW50T2YoY2FudmFzRWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDZjMTk2ZTBjYzY4MmI0NDI1
NmM3ZGRhYWUwOTBhYTBhYWQ1NTMxN2QuLmYwYTI4YzEzMzFjNWJiMzA4OGQ1M2U3MjQzZGJhZjRl
ZWI2M2U3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgU3RyaW5nIEluc3BlY3Rv
ckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIEluc3BlY3Rv
ckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJ
bnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET00i
X3MsIGNvbnRleHQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVj
dGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTMw
MSw4ICszMDEsOCBAQCBJbnNwZWN0b3JET01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsK
LSAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7Ci0g
ICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7
CisgICAgbV9oaXN0b3J5ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOworICAgIG1f
ZG9tRWRpdG9yID0gbWFrZVVuaXF1ZTxET01FZGl0b3I+KCptX2hpc3RvcnkpOwogCiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRPTUFnZW50KHRoaXMpOwogICAgIG1fZG9j
dW1lbnQgPSBtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKQEAgLTY1Myw3
ICs2NTMsNyBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
Tm9kZSogbm9kZVRvUHVzaCkKICAgICAgICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2Rl
KG5vZGUpOwogICAgICAgICBpZiAoIXBhcmVudCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWlu
ZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4gcHVzaCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBh
dXRvIG5ld01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CisgICAgICAgICAg
ICBhdXRvIG5ld01hcCA9IG1ha2VVbmlxdWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBk
YW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9J
ZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgYXV0byBjaGlsZHJl
biA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRl
KCk7CkBAIC0xMTc3LDcgKzExNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmln
PiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3RvcgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29u
ZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgYm9vbCBzaG93SW5mbyA9
IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxzZSAoZG8gbm90IHNob3cgYSB0b29sdGlwKS4KICAgICBo
aWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oInNob3dJbmZvIiwgc2hvd0luZm8p
OwogICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSBzaG93SW5mbzsKQEAgLTExOTYsMTMg
KzExOTYsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVk
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCBlbmEKIAogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmpl
Y3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAg
IGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwg
d2lkdGgsIGhlaWdodCkpOworICAgIGF1dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihG
bG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgIGlubmVySGlnaGxpZ2h0UXVhZChX
VEZNb3ZlKHF1YWQpLCBjb2xvciwgb3V0bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwog
fQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIHF1YWRBcnJheSwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wq
IHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZsb2F0UXVhZD4oKTsKKyAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKTsK
ICAgICBpZiAoIXBhcnNlUXVhZChxdWFkQXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkludmFsaWQgUXVhZCBmb3JtYXQiX3M7CiAgICAgICAgIHJldHVybjsKQEAg
LTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJhCiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFk
PiBxdWFkLCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91
dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8g
aGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7Cisg
ICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsK
ICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3Ip
OwogICAgIGhpZ2hsaWdodENvbmZpZy0+dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3Jk
aW5hdGVzID8gKnVzZVBhZ2VDb29yZGluYXRlcyA6IGZhbHNlOwpAQCAtMTMxNiw3ICsxMzE2LDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGZy
YW1lLT5vd25lckVsZW1lbnQoKSkgewotICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgICAgICBhdXRvIGhpZ2hsaWdo
dENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgICAgICBoaWdobGln
aHRDb25maWctPnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZy
YW1lcy4KICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xv
cik7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9y
KG91dGxpbmVDb2xvcik7CkBAIC0xMzk4LDcgKzEzOTgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpzZXRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCkKICAgICBtX2luc3BlY3RlZE5vZGUgPSBub2RlOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRM
aW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciY+KG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKS5jb21tYW5kTGluZUFQSUhvc3QoKSkKLSAgICAgICAgY29tbWFu
ZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
YWJsZU5vZGU+KG5vZGUpKTsKKyAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0
ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKIAogICAgIG1fc3Vw
cHJlc3NFdmVudExpc3RlbmVyQ2hhbmdlZEV2ZW50ID0gZmFsc2U7CiB9CkBAIC0yMzE0LDcgKzIz
MTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZXZhbGlkYXRl
U3R5bGVBdHRyVGFzaykKLSAgICAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IHN0ZDo6
bWFrZV91bmlxdWU8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7CisgICAgICAg
IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sgPSBtYWtlVW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0
dHJpYnV0ZVRhc2s+KHRoaXMpOwogICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnNjaGVk
dWxlRm9yKCZlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGU5NzFh
OTlmNzA1MjRkODMxODFhZTcxNWQ4MjY1ODgxMWZlMDg4MDguLjgxZjE0ZGMxN2JmYTA0NzQ3ZTNk
MjNlNDUzZjVlNGFmOGQwOWZkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRE9NU3RvcmFnZSJfcywgY29udGV4dCkKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01T
dG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiMzdh
NTYwY2U4MDc2OGM2NjQ0MDg1MTVmYjA1NTEyNjE2NWJlZDgyLi4zNThhODU2NTEyZWE0ZDcxOTYz
MzJhMjA2OTkwZGUzMjUwMDQxMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTIxNyw3ICsy
MTcsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShEYXRh
YmFzZSYgZGF0YWJhc2UpCiAKIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFi
YXNlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJEYXRhYmFzZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggZTFlMDgyZTQxYWQyZDUyNGY1N2Vm
MTA2NDAyODg3NjExNTY4MjRiOS4uYjU5ODJjZWUzN2UzNzQ0NzA1Mzk0NmJjZjRjNDM0YjQzMWVm
OWE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiTGF5ZXJUcmVlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpM
YXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAyOWM3NmQwYzdmZWE5MjJjMmEz
ZDk5NDE0Yzk4NmVhOGQyOGQ3N2I1Li4yODMyOTUxZjUzODAxMjFmYTQ1MmJmYThkNDcwZjRkMzVl
Nzg5YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdl
bnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
TWVtb3J5Il9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3Bl
Y3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpNZW1vcnlCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDNlNGU5NmViMjMxYTA1NGIyMTIxMjQ3YmMyY2IwOTE2NWYwMjY1
YjMuLjVkMDgxNjM4MGNkYzY2YzdkNzk2MGMxMmQzNDhhMGZiZjNmN2IxMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTE3MiwxMCArMTcyLDEwIEBAIGNsYXNzIEluc3BlY3RvclRocmVhZGFibGVM
b2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAKIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6SW5zcGVjdG9yTmV0d29ya0FnZW50KFdlYkFnZW50Q29udGV4
dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTmV0d29yayJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9yZXNvdXJjZXNE
YXRhKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+KCkpCisgICAgLCBtX3Jl
c291cmNlc0RhdGEobWFrZVVuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IDMyOWUxYjBjNWFkOTJmYjQ1MWRmMTc2NzMzYWUyYWUzNThmYjQ5Mzcu
LmM2NDFhNmEwNDg0MTkzMjY4ZTI5ZTkwZmYwMTI2YWI5MTFjOTMwZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
QEAgLTMzMyw3ICszMzMsNyBAQCBEb2N1bWVudExvYWRlciogSW5zcGVjdG9yUGFnZUFnZW50Ojph
c3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogCiBJbnNwZWN0b3JQ
YWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJ
bnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiUGFnZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpQYWdl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCAzYTM2MWU5MWU2ZjJkZWIw
MDQyZTE4YTdjNjRjN2I1MTZmOWI4MGM1Li4zMGQ4NmM3NDYzYzQ3ZjViM2FkMmIzOGNmNWRlMjQ5
ZDQ0ZWI5YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGlj
IENGUnVuTG9vcFJlZiBjdXJyZW50UnVuTG9vcCgpCiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiVGltZWxpbmUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5z
cGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQogewpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIC8vIEZJ
WE1FOiBBYnN0cmFjdCBhd2F5IHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgb25jZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNzQ4IGlzIGZpeGVkLgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpX
ZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgewor
ICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0
YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVy
czo6SW5zcGVjdG9yRnJhbWVCZWdpbiksIFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNr
aW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAg
ICAgICAgIG1fcnVuTG9vcE5lc3RpbmdMZXZlbCsrOwogICAgIH0pOwogCi0gICAgbV9mcmFtZVN0
b3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2Fz
dDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3Bl
Y3RvckZyYW1lRW5kKSwgW3RoaXNdKCkgeworICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBtYWtl
VW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2Vy
dmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgp
IHsKICAgICAgICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdT
ZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yODAsNyArMjgw
LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgICAgICBpZiAoV2ViQ29u
c29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29s
ZUFnZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0
byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkg
ZXhpc3RzIl9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBl
eGlzdHMiKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdh
cm5pbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3Rv
cEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgaWYg
KFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndl
YkNvbnNvbGVBZ2VudCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhl
IGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0
bGUuaXNFbXB0eSgpID8gIk5vIHByb2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmls
ZSBcIiIsIHRpdGxlLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgY29uc29sZUFnZW50
LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggOTE2MWQ4NDNjZDM4
ZTRkOTY2MTI2YWNkZDM2ZTgzZGQxOGY1MTAwMi4uMWUzOThlZGQxYTllYTNlZjI2YmUwOWVjMDNk
NmM2YzJjZDM5OGRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3Rvcldv
cmtlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIldvcmtlciJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJv
dXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6V29ya2VyQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAg
ICAsIG1fcGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMmVlZDFjZTYw
YjMwMjJhZDk4MjRmYTYyOGEzNWRkYzU0NDQ5NjBkOS4uYzIwOTRiOTkyZDM1NDE2MGYxN2VlMjhm
NjQxMGE3OTNkY2RlOWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvV2ViQ29uc29sZUFnZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkNvbnNv
bGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0CiAKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsK
ICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNv
dXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpLCAiICgiLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwot
ICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRy
LCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VV
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBl
OjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmlu
ZygpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogICAgIH0KIH0KIApAQCAt
OTIsNyArOTIsNyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzbwogICAgICAgICBtZXNzYWdlLmFw
cGVuZChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKICAgICB9CiAKLSAgICBhZGRNZXNz
YWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3Nh
Z2UudG9TdHJpbmcoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0
SWRlbnRpZmllcikpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAs
IDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVh
cEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50
LmNwcAppbmRleCBiYjVkMWJlYzZjNjMyMjM5YmVlNjQ2MzQzN2FlZmVkMTJiYTQ3MWQ1Li4wOWNi
NmY0NjY2YWI0YzkxY2JlZTJkMGZjZmRkNGJhNmE2MWExMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBA
IHN0cnVjdCBHYXJiYWdlQ29sbGVjdGlvbkRhdGEgewogfTsKIAogY2xhc3MgU2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmKTsK
ICAgICB2b2lkIGFkZEdhcmJhZ2VDb2xsZWN0aW9uKEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSYmKTsK
QEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrOjp0
aW1lckZpcmVkKCkKIFdlYkhlYXBBZ2VudDo6V2ViSGVhcEFnZW50KFdlYkFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckhlYXBBZ2VudChjb250ZXh0KQogICAgICwgbV9pbnN0
cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2Vu
ZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNlbmRHYXJiYWdl
Q29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlzKSkKKyAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0
aW9uRXZlbnRzVGFzayhtYWtlVW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+
KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDVlYWZiNmEzMjg0NmU3MDAx
NTNhYzgyNjgxYjdiZTUwZDNhZmU0OGMuLjg5ODViYzk0NWZlNzVlMGU4NTFhMzZkZTM1ODRhYjA0
NzFjMGZkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChQ
YWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNv
bnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UnVudGlt
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3RydW1lbnRp
bmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggYjIwY2JiYzk1MDcwMjgxMWI2NTg5YWMxZGZiZDU3MzM5MTkzZDMzNy4uODA4MmVlMzFlZWM2
MGEyZjYwMzI5ZGJhYmQ0ZDk4NDJmNmE1NWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgV29ya2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2Vy
QWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2lu
dEFjdGlvbkxvZyhFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVz
c2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7
CisgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CiB9
CiAKIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9y
RXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4
dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggYmQ5ZDRjYWRlZmIy
ZmFhMWYyZTBiMjU3OTU1YWQ1MTI0ZTE3OTRlZS4uMWYzZmFiYTMxMjZmMmU5YjM2Yjg0ZDEzZTcz
YmYxZmRhMzE3NTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgTGF5b3V0U3RhdGU6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3Vi
dHJlZShjb25zdCBCb3gmIGxheW91dFJvb3QpCiBEaXNwbGF5OjpCb3gmIExheW91dFN0YXRlOjpk
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAg
IHJldHVybiAqbV9sYXlvdXRUb0Rpc3BsYXlCb3guZW5zdXJlKCZsYXlvdXRCb3gsIFsmbGF5b3V0
Qm94XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OkJveD4obGF5
b3V0Qm94LnN0eWxlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+
KGxheW91dEJveC5zdHlsZSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTE0
MCwxMyArMTQwLDEzIEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1h
dHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgICAgICAvLyBz
aG91bGQgbm90IGludGVyZmVyZSB3aXRoIHRoZSBjb250ZW50IGluc2lkZS4KICAgICAgICAgICAg
IC8vIDxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzog
aGlkZGVuIj4gPC0gaXMgYSBub24taW50cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBo
aWRkZW4gdHJpZ2dlcnMgbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4KICAgICAg
ICAgICAgIGlmIChmb3JtYXR0aW5nUm9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3Qp
LCAqdGhpcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0
dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwg
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBmb3JtYXR0aW5nIGNvbnRl
eHQgaW5oZXJpdHMgdGhlIGZsb2F0cyBmcm9tIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0
LgogICAgICAgICAgICAgLy8gRmluZCB0aGUgZm9ybWF0dGluZyBzdGF0ZSBpbiB3aGljaCB0aGlz
IGZvcm1hdHRpbmcgcm9vdCBsaXZlcywgbm90IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQgdXNlIGl0
cyBmbG9hdGluZyBzdGF0ZS4KICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZvcm1hdHRpbmdTdGF0
ZSA9IGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0
dGluZ1Jvb3QuZm9ybWF0dGluZ0NvbnRleHRSb290KCkpOyAKICAgICAgICAgICAgIGF1dG8mIHBh
cmVudEZsb2F0aW5nU3RhdGUgPSBwYXJlbnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgp
OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRlLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlz
KTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw3
IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZv
ckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5n
U3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIEJs
b2NrIGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcg
c3RhdGUuCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRp
bmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0
aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRl
PihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwog
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcgQEAg
Rm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9y
bWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0
ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwgWyZdIHsKIAogICAgICAgICAgICAgLy8gVGFibGUg
Zm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0
ZSAtYW5kIGl0IHN0YXlzIGVtcHR5LgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9y
bWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJs
ZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5n
Um9vdCksICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAt
MTc0LDE4ICsxNzQsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlv
dXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm8KICAgICBBU1NFUlQoZm9y
bWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAg
aWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250
ZXh0KCkpIHsKICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8
SW5saW5lRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5n
Um9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRS
b290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0
YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkp
OwogICAgICAgICBhdXRvJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9y
bWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVl
ZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2Nr
Rm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0
aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7
CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBhdXRvJiB0YWJsZUZvcm1hdHRpbmdTdGF0
ZSA9IGRvd25jYXN0PFRhYmxlRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVG
b3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0
YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCmluZGV4IDdhZTNiNDA5ZDc2
MTE2ZjJlOWQxM2NjMzFlYjZlNTYwNjNiMTA3NmYuLjc5OTE2Mjc1NzQwMTgzZjM1M2Y1YWZkNWIx
NTIyZTU2NTNmYzg5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlSdW4uaApAQCAtMzYsNyArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgRGlzcGxheSB7CiAKIHN0cnVjdCBSdW4geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICBzdHJ1Y3QgVGV4dENvbnRleHQgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0Q29udGV4dCh1
bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IGExY2Q2ZDZmMWI3ZWI5MGZjYzc5MDVlMzFlOWYwNGZlM2Jm
ODI2MGIuLjUwOGQ2NjEyOWQxNDg3YzRlODQ0MDkzOTNkYTMzNDA5MTllYTdmODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAg
ICAgICAgICBpZiAoIXRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGFuIGlu
bGluZSBjb250YWluZXIgKGUuZy4gPHNwYW4+KS4KLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJ
bmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCkpOworICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0YXJ0KSk7CiAgICAgICAgICAgICBhdXRvJiBjb250
YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CiAgICAgICAgICAgICBpZiAo
IWNvbnRhaW5lci5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTI5MiwxNyArMjkyLDE3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbGxlY3RJbmxpbmVDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJv
eCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFzdCgpOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUg
ZW5kIG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4gPC9zcGFuPikuCiAgICAgICAgICAgICBp
ZiAodHJlYXRBc0lubGluZUNvbnRhaW5lcihsYXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4o
bGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJFbmQpKTsKKyAgICAgICAgICAg
ICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+
KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSkKLSAgICAgICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+
KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhaykpOworICAgICAgICAg
ICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRl
bT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElu
bGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsKKyAgICAgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0
ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgp
KTsKICAgICAgICAgICAgICAgICBpZiAobGF5b3V0Qm94Lmhhc1RleHRDb250ZW50KCkpCiAgICAg
ICAgICAgICAgICAgICAgIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMo
Zm9ybWF0dGluZ1N0YXRlLmlubGluZUl0ZW1zKCksIGxheW91dEJveCk7CiAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRl
bShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlw
ZTo6Qm94KSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJ
dGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpC
b3gpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5n
ID0gbGF5b3V0Qm94Lm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcAppbmRleCBmNzQxZGU0
ODllOTQyNDYxZDc2OTJlMmU0MDQxNTkzODNiMGM4MTYwLi4wYTIxMzAyMTNmMTI0ZWViNWY3Zjcx
MTJlODg2ZDcxMmM1MzFkYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0TGluZUxheW91dC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6
OkNvbnRlbgogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRv
cExlZnQoKSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChsb2dp
Y2FsUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhl
aWdodChsb2dpY2FsUmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkp
OworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERp
c3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAg
ICAgICAgICAgIHRvcExlZnQgKz0gR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9m
ZnNldChsYXlvdXRTdGF0ZSgpLCBsYXlvdXRCb3gpOwogICAgICAgICAgICAgZGlzcGxheUJveC5z
ZXRUb3BMZWZ0KHRvcExlZnQpOwogICAgICAgICAgICAgbGluZUJveFJlY3QuZXhwYW5kSG9yaXpv
bnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRl
LmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3Qp
KTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxE
aXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAg
ICAgICAgIGF1dG8gcHJldmlvdXNSdW5DYW5CZUV4dGVuZGVkID0gcHJldmlvdXNMaW5lUnVuICYm
IHByZXZpb3VzTGluZVJ1bi0+dGV4dENvbnRleHQoKSA/IHByZXZpb3VzTGluZVJ1bi0+dGV4dENv
bnRleHQoKS0+Y2FuQmVFeHRlbmRlZCA6IGZhbHNlOwogICAgICAgICAgICAgYXV0byByZXF1aXJl
c05ld1J1biA9ICFpbmRleCB8fCAhcHJldmlvdXNSdW5DYW5CZUV4dGVuZGVkIHx8ICZsYXlvdXRC
b3ggIT0gJnByZXZpb3VzTGluZVJ1bi0+bGF5b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAocmVx
dWlyZXNOZXdSdW4pCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1
bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1
bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29udGV4dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5ndGgg
fSkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVu
aXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0
IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGF1dG8mIGxhc3REaXNwbGF5UnVuID0gZm9ybWF0
dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5sYXN0KCk7CiAgICAgICAgICAgICAgICAgbGFzdERpc3Bs
YXlSdW4tPmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVjdC53aWR0aCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRl
eCBiMDAxM2I2ZWQ1NjNiY2JmODI4MTM5MTM0MWYyZGQ1NjE1ZWM1M2VmLi43OTA2MTk2ODFlNjc1
MmQyODcyNDkzODYyMmUzYTc0YmUwMzNmZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCkBAIC0zNCw2ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVt
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPElubGluZUl0ZW0+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBIYXJkTGlu
ZUJyZWFrLCBCb3gsIEZsb2F0LCBDb250YWluZXJTdGFydCwgQ29udGFpbmVyRW5kIH07CiAgICAg
SW5saW5lSXRlbShjb25zdCBCb3gmIGxheW91dEJveCwgVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDRm
MjBhNmZmMWQ3MGNlMzQ5YmRlMGViZWRmZThmODBhMzVlODVhMjguLmVkNjUyMDViN2RiOTliMGY2
YWIxMGYzZWVlYWEwN2M0NDZiN2Y4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIExp
bmU6OkNvbnRlbnQ6OlJ1bjo6UnVuKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0
IFRleHRDb250ZXh0JiB0ZXh0Q29uCiAKIExpbmU6OkxpbmUoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywg
U2tpcFZlcnRpY2FsQWxpZ21lbnQgc2tpcFZlcnRpY2FsQWxpZ21lbnQpCiAgICAgOiBtX2xheW91
dFN0YXRlKGxheW91dFN0YXRlKQotICAgICwgbV9jb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8TGlu
ZTo6Q29udGVudD4oKSkKKyAgICAsIG1fY29udGVudChtYWtlVW5pcXVlPExpbmU6OkNvbnRlbnQ+
KCkpCiAgICAgLCBtX2xvZ2ljYWxUb3BMZWZ0KGluaXRpYWxDb25zdHJhaW50cy5sb2dpY2FsVG9w
TGVmdCkKICAgICAsIG1fYmFzZWxpbmUoeyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFz
ZWxpbmUuYmFzZWxpbmVPZmZzZXQsIGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGlu
ZS5oZWlnaHQgLSBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVP
ZmZzZXQgfSkKICAgICAsIG1faW5pdGlhbFN0cnV0KGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRB
bmRCYXNlbGluZS5zdHJ1dCkKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIAog
dm9pZCBMaW5lOjphcHBlbmROb25CcmVha2FibGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2NvbnRl
bnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0
ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlx
dWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVu
dExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsUmVjdC53aWR0aCgpOwogfQogCkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYg
aW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICB9CiAKICAgICBhdXRvIHRleHRDb250
ZXh0ID0gQ29udGVudDo6UnVuOjpUZXh0Q29udGV4dCB7IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5s
aW5lSXRlbS5pc0NvbGxhcHNlZCgpID8gMSA6IGlubGluZUl0ZW0ubGVuZ3RoKCksIGlzQ29tcGxl
dGVseUNvbGxhcHNlZCwgaW5saW5lSXRlbS5pc1doaXRlc3BhY2UoKSwgY2FuQmVFeHRlbmRlZCB9
OwotICAgIGF1dG8gbGluZUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5s
aW5lSXRlbSwgdGV4dENvbnRleHQsIGxvZ2ljYWxSZWN0KTsKKyAgICBhdXRvIGxpbmVJdGVtID0g
bWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2Fs
UmVjdCk7CiAgICAgaWYgKGlzVHJpbW1hYmxlICYmICFpc0NvbXBsZXRlbHlDb2xsYXBzZWQpCiAg
ICAgICAgIG1fdHJpbW1hYmxlQ29udGVudC5hZGQobGluZUl0ZW0uZ2V0KCkpOwogCkBAIC0zMDMs
NyArMzAzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGwKICAgICAgICAgbG9naWNhbFJlY3Qu
c2V0SGVpZ2h0KGlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGlubGluZUl0ZW0pKTsKICAgICB9CiAK
LSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpS
dW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBw
ZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwog
ICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSAobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1h
cmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRl
bnQuY2xlYXIoKTsKIH0KQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZEhhcmRM
aW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICAgICAgYWRqdXN0QmFz
ZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGluZUl0ZW0sIHsgfSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0
LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KLSAgICBtX2NvbnRlbnQtPnJ1bnMo
KS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2lj
YWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVu
dDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogfQogCiB2b2lkIExpbmU6OmFkanVz
dEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlv
dXRVbml0IHJ1bkhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuaAppbmRleCBmYWYwNTQ3NTNkMzcyMmFiYzAxZDhhNzNmNDc5
OTM0OWJjYjFhYTExLi43MzdhMDdiMDMyYWY2ZmYxMTk5MDk2ZjdhMzc1NzU3ZTZkYTlmMWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZS5oCkBAIC01Miw4ICs1MiwxMCBAQCBjbGFzcyBMaW5lIHsKICAgICBMaW5lKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiwgU2tpcFZlcnRpY2FsQWxpZ21l
bnQpOwogCiAgICAgY2xhc3MgQ29udGVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgc3RydWN0IFJ1biB7CisgICAgICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgICAgICBzdHJ1Y3QgVGV4dENvbnRl
eHQgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAppbmRleCBmMTMwODlh
NzA4ZjNmZTNmZjliNzdmNzIwOTZjZGE0MmVmMzZlMjIyLi41ZTZjMjU2ZGIwYjMwOWFhZjFlMjU4
MjFmMGUxZTE4ZTU2NDUyZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVt
cyYgaW5saW5lQ29udGVudCwgY29uc3QKIHsKICAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4
dENvbnRlbnQoKTsKICAgICBpZiAoIXRleHQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBpbmxp
bmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVC
b3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5h
cHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwg
ZmFsc2UpKTsKIAogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lQm94LnN0eWxlKCk7CiAgICAgYXV0
byBwcmVzZXJ2ZU5ld2xpbmUgPSBzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKTsKQEAgLTk5LDIwICs5
OSwyMCBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5s
aW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlv
biA8IHRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgLy8gU29mdCBsaW5lYnJlYWs/CiAgICAgICAg
IGlmIChpc1NvZnRMaW5lQnJlYWsodGV4dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xp
bmUpKSB7Ci0gICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFs
c2UpKTsKKyAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOwog
ICAgICAgICAgICAgKytjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRbY3VycmVudFBv
c2l0aW9uXSwgcHJlc2VydmVOZXdsaW5lKSkgewogICAgICAgICAgICAgYXV0byBsZW5ndGggPSBt
b3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHRleHQsIGN1cnJlbnRQb3NpdGlvbiwgcHJl
c2VydmVOZXdsaW5lKTsKICAgICAgICAgICAgIGF1dG8gaXNDb2xsYXBzZWQgPSBjb2xsYXBzZVdo
aXRlU3BhY2UgJiYgbGVuZ3RoID4gMTsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0
aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFwc2VkKSk7CisgICAgICAgICAgICBpbmxpbmVDb250
ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQ
b3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBpc0NvbGxhcHNlZCkpOwogICAgICAgICAgICAgY3VycmVu
dFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgYXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uLCBsaW5lQnJlYWtJdGVyYXRvciwgc3R5bGUpOwotICAgICAgICBpbmxpbmVDb250
ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1
cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgaW5saW5lQ29u
dGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50
UG9zaXRpb24sIGxlbmd0aCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIGN1cnJlbnRQb3NpdGlv
biArPSBsZW5ndGg7CiAgICAgfQogfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbmxpbmVUZXh0SXRlbT4gSW5saW5lVGV4dEl0ZW06OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9z
aXRpb24sIHVuCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiA+PSB0aGlzLT5z
dGFydCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0aW9uICsgbGVuZ3RoIDw9IGVu
ZCgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0
Qm94KCksIHNwbGl0UG9zaXRpb24sIGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2Vk
KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwg
c3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3Bw
CmluZGV4IGVkZjJkNGIyNzY2MjJjODk1ZDE3Nzk3MTRjZjdjZjIwOGFjZDljNDIuLmY1NmUxYTYx
NmEyZGY1NzcxYmI0OGE3NTgwM2FlNTczZmNmOGM3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtNDUsNyArNDUsNyBAQCBCb3g6OkJv
eChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgQmFzZVR5cGVGbAogICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKIHsKICAgICBpZiAo
aXNSZXBsYWNlZCgpKQotICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXBsYWNlZD4oKnRoaXMpOworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJl
cGxhY2VkID0gbWFrZVVuaXF1ZTxSZXBsYWNlZD4oKnRoaXMpOwogfQogCiBCb3g6OkJveChPcHRp
b25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
QEAgLTQyMyw3ICs0MjMsNyBAQCBjb25zdCBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OnJhcmVEYXRh
KCkgY29uc3QKIEJveDo6Qm94UmFyZURhdGEmIEJveDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAg
IHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUo
dGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10g
eyByZXR1cm4gbWFrZVVuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwog
fQogCiB2b2lkIEJveDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDVmZWVjZWU3
MmYwOGM0ODUwODhlZTQ4NTE5NDVjNjY0MGNmZTU3ZDMuLmJjMmJiZWU3OGEzNjg2ODI2YjIwNGRm
YjVmNjk2MjVmOTU2ZjJiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTEyOCwyNSArMTI4LDI1IEBAIHN0
ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVu
ZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVy
ZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDbGVhcmx5IHRoZXJlIG11c3QgYmUgYSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIHRoaXMuCiAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJlci5zdHlsZSgpLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5k
ZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5z
dHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihk
b3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVy
U3R5bGU6OmNsb25lKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8
UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERp
c3BsYXlUeXBlOjpJbmxpbmUpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRS
ZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CiAgICAgICAgIHJldHVybiBj
aGlsZExheW91dEJveDsKICAgICB9CiAKICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVyZXIpOwogICAgIGF1dG8gZGlzcGxheVR5cGUgPSByZW5k
ZXJlci5zdHlsZSgpLmRpc3BsYXkoKTsKICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5k
ZXJlcikpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVy
KSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKIAogICAgIGlmIChpczxS
ZW5kZXJUYWJsZT4ocmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgcHJpbmNp
cGFsIHRhYmxlIHdyYXBwZXIgYm94IChhbmQgbm90IHRoZSB0YWJsZSBib3ggaXRzZWxmKS4KLSAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpF
bGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICBjaGlsZExheW91
dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94
OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVy
ZXIpKSB7CiAgICAgICAgIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spCi0g
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFr
ZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHlldCBz
dXBwb3J0IGFsbCByZXBsYWNlZCBlbGVtZW50cyBhbmQgdGhpcyBpcyB0ZW1wb3JhcnkgYW55d2F5
LgogICAgICAgICBpZiAoY2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCkpCiAgICAgICAgICAgICBj
aGlsZExheW91dEJveC0+cmVwbGFjZWQoKS0+c2V0SW50cmluc2ljU2l6ZShkb3duY2FzdDxSZW5k
ZXJSZXBsYWNlZD4ocmVuZGVyZXIpLmludHJpbnNpY1NpemUoKSk7CkBAIC0xNjEsMTggKzE2MSwx
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNv
bnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICAg
ICAgc3R5bGUtPnNldFRvcCh7IG9mZnNldC0+aGVpZ2h0KCksIEZpeGVkIH0pOwogICAgICAgICAg
ICAgICAgIHN0eWxlLT5zZXRMZWZ0KHsgb2Zmc2V0LT53aWR0aCgpLCBGaXhlZCB9KTsKLSAgICAg
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihl
bGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7CisgICAgICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKCpzdHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5l
cj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1
ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9
PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5k
ZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlm
IChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spCi0gICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmli
dXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7Cisg
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CiAgICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNh
cHRpb24gfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkgewotICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUo
KSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4o
ZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIu
c3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBl
OjpUYWJsZVJvd0dyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRl
ckdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCiAg
ICAgICAgICAgICB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgZGlz
cGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAgfHwgZGlzcGxheVR5cGUg
PT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJl
ciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhy
ZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFRyZWVCdWlsZGVy
OjpjcmVhdGVUYWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwg
Q29udGFpbgogICAgICAgICB0YWJsZUNoaWxkID0gdGFibGVDaGlsZC0+bmV4dFNpYmxpbmcoKTsK
ICAgICB9CiAKLSAgICBhdXRvIHRhYmxlQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+
KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBS
ZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgYXV0byB0YWJs
ZUJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94
OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVy
ZXIuc3R5bGUoKSkpOwogICAgIGFwcGVuZENoaWxkKHRhYmxlV3JhcHBlckJveCwgKnRhYmxlQm94
KTsKICAgICB3aGlsZSAodGFibGVDaGlsZCkgewogICAgICAgICBUcmVlQnVpbGRlcjo6Y3JlYXRl
U3ViVHJlZShkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGFibGVDaGlsZCksICp0YWJsZUJveCk7
CkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRz
KCkKICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBvdXRwdXQgZ2VvbWV0
cnkgd2l0aG91dCBsYXlvdXQgY29udGV4dC4KICAgICAgICAgYXV0byYgcmVuZGVyVmlldyA9ICpk
b2N1bWVudC0+cmVuZGVyVmlldygpOwogICAgICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxv
Y2sgPSBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAg
YXV0byBsYXlvdXRTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4o
KmluaXRpYWxDb250YWluaW5nQmxvY2spOworICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gbWFr
ZVVuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAg
ICAgICAgIGxheW91dFN0YXRlLT5zZXRRdWlya3NNb2RlKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5p
bkxpbWl0ZWRRdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6TGltaXRlZCA6
IChyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVp
cmtzTW9kZTo6WWVzIDogTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6Ok5vKSk7CiAgICAgICAgIGxh
eW91dFN0YXRlLT51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgc2hvd0xheW91dFRyZWUoKmluaXRp
YWxDb250YWluaW5nQmxvY2ssIGxheW91dFN0YXRlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA1MWQ3N2U0YWYxZGJkZGYwNDVhOTJjMWM4YWQzYjk5
ZWFjZWI5N2I1Li5iNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGUoRG9jdW1l
bnRMb2FkZXImIGRvY3VtZW50TG9hCiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRG
aWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7
CiB9CiAKIENvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVudEZp
bHRlcnMsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggZDBkNTRiOTdl
YWU3MjA0MjZmOTYxYzhkYWU4OTVlMjAzNjljZWRjYy4uYzRjZTVmNTUyMTcwYjNjZmM4Yjg0MWI1
OWE1MTBmZDc1YWE4M2ZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIHZhbGlkYXRl
UHJlZmxpZ2h0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlcwogICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24p
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICBpZiAo
IXJlc3VsdC0+cGFyc2UocmVzcG9uc2UpCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3Nz
T3JpZ2luTWV0aG9kKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgZXJyb3JEZXNjcmlwdGlvbikKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmln
aW5IZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpLCBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgZXJyb3JEZXNjcmlwdGlvbikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IGRlMDllNzAzOTljYzc0N2U4ODczNjk3ODM3MjRlNmRhYTlmYzc4OGIu
LjA0NTVjYWZjNTlmZjdiNmVhMWY5YTJjZDM5MzFhNjllOWY2OTQ0NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIERvY3VtZW50
TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN1YnN0aXR1dGVECiAgICAgLCBtX29yaWdpbmFsU3Vic3RpdHV0ZURhdGFXYXNWYWxpZChz
dWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2
ZXJ5VGltZXIoKnRoaXMsICZEb2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZl
cnlUaW1lckZpcmVkKQogICAgICwgbV9kYXRhTG9hZFRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2Fk
ZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdykKLSAgICAsIG1fYXBwbGljYXRpb25DYWNo
ZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQorICAg
ICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0
PigqdGhpcykpCiB7CiB9CiAKQEAgLTEzMzYsNyArMTMzNiw3IEBAIHVpbnQ2NF90IERvY3VtZW50
TG9hZGVyOjpsb2FkQXBwbGljYXRpb25NYW5pZmVzdCgpCiAgICAgaWYgKG1hbmlmZXN0VVJMLmlz
RW1wdHkoKSB8fCAhbWFuaWZlc3RVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOworICAgIGF1
dG8gbWFuaWZlc3RMb2FkZXIgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+
KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOwogICAgIGF1dG8qIHJhd01hbmlm
ZXN0TG9hZGVyID0gbWFuaWZlc3RMb2FkZXIuZ2V0KCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0g
bmV4dENhbGxiYWNrSUQrKzsKICAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChX
VEZNb3ZlKG1hbmlmZXN0TG9hZGVyKSwgY2FsbGJhY2tJRCk7CkBAIC0xNDI3LDcgKzE0MjcsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmIGFyY2hpdmUp
CiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFy
Y2hpdmUpCiB7CiAgICAgaWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAg
IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbj4oKTsKKyAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
ID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkQWxsUmVzb3VyY2VzKGFyY2hpdmUpOwogfQogCkBAIC0x
NDM2LDcgKzE0MzYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3Vy
Y2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVz
b3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAoIW1fYXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAg
ICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRS
ZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiB9CiAKQEAgLTE5NjMsNyArMTk2Myw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKICAgICAgICAgLy8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9y
ZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdAogICAgICAgICAv
LyBpcyBub3cgaW4gYSBzdGF0ZSB3aGVyZSBzdGFydGluZyBhbiBlbXB0eSBsb2FkIHdpbGwgYmUg
aW5jb25zaXN0ZW50LiBSZXBsYWNlIGl0IHdpdGgKICAgICAgICAgLy8gYSBuZXcgQXBwbGljYXRp
b25DYWNoZUhvc3QuCi0gICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CisgICAgICAgIG1fYXBwbGljYXRp
b25DYWNoZUhvc3QgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CiAg
ICAgICAgIG1heWJlTG9hZEVtcHR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTIy
LDcgKzIxMjIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBpY29uTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGVy
PigqdGhpcywgaWNvbi51cmwpOworICAgIGF1dG8gaWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8SWNv
bkxvYWRlcj4oKnRoaXMsIGljb24udXJsKTsKICAgICBhdXRvKiByYXdJY29uTG9hZGVyID0gaWNv
bkxvYWRlci5nZXQoKTsKICAgICBtX2ljb25Mb2FkZXJzLnNldChXVEZNb3ZlKGljb25Mb2FkZXIp
LCBuZXdDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApp
bmRleCBjNDUwYzA4NzBjMGRiOTAwMmI5MDRjN2I2Y2JjZTRjOTY5MDJjNmRjLi5hY2EzNDUyOTg1
YjczMTE5YmNiMjNjNDNiYTIzZWVmYjc1YTdhMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcApAQCAtNTgyLDcgKzU4Miw3IEBAIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VD
b25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEVtcHR5UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiBkdW1teVByb2dyZXNzVHJhY2tlckNsaWVudDsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSAmZHVtbXlQcm9n
cmVzc1RyYWNrZXJDbGllbnQuZ2V0KCk7CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudD4oKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dCA9IG1ha2VVbmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKIAogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmNyZWF0ZSh7IH0sIHsgfSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJh
c2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgRW1wdHlEYXRhYmFzZVByb3ZpZGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGUwZjQ2MTQ4ZjJkZmFhODdmNmIyNDI2
MzdkNTA4OTE4NTIwYTYwYTIuLjgzYmViMjcxN2QzMzdjMzQxYzAxNWVjZjQ2ZDRmMzczZTA4YjE1
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjcwLDEwICsyNzAs
MTAgQEAgY2xhc3MgRnJhbWVMb2FkZXI6OkZyYW1lUHJvZ3Jlc3NUcmFja2VyIHsKIEZyYW1lTG9h
ZGVyOjpGcmFtZUxvYWRlcihGcmFtZSYgZnJhbWUsIEZyYW1lTG9hZGVyQ2xpZW50JiBjbGllbnQp
CiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9w
b2xpY3lDaGVja2VyKHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQotICAg
ICwgbV9oaXN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkK
KyAgICAsIG1fcG9saWN5Q2hlY2tlcihtYWtlVW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1lKSkK
KyAgICAsIG1faGlzdG9yeShtYWtlVW5pcXVlPEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCiAg
ICAgLCBtX25vdGlmaWVyKGZyYW1lKQotICAgICwgbV9zdWJmcmFtZUxvYWRlcihzdGQ6Om1ha2Vf
dW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFtZSkpCisgICAgLCBtX3N1YmZyYW1lTG9hZGVyKG1h
a2VVbmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKICAgICAsIG1fbWl4ZWRDb250ZW50Q2hl
Y2tlcihmcmFtZSkKICAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICwg
bV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZCkKQEAgLTMyMSw3ICszMjEsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkRpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAK
ICAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRl
eHQoKTsKLSAgICBtX3Byb2dyZXNzVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9n
cmVzc1RyYWNrZXI+KG1fZnJhbWUpOworICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1
ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KGNvbnN0IFVSTCYpCkBAIC0zNDYsNyArMzQ2LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJM
JikKICAgICBtX25lZWRzQ2xlYXIgPSB0cnVlOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9
IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNr
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAg
ICBtX3Byb2dyZXNzVHJhY2tlciA9IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1f
ZnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzKQpAQCAtMjY3OCw3ICsyNjc4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRy
ZW4oKQogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dz
aW5nLXRoZS13ZWIuaHRtbCNuYXZpZ2F0ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXZpZ2F0aW9u
RGlzYWJsZXI+IG5hdmlnYXRpb25EaXNhYmxlcjsKICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFt
ZSgpKQotICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmln
YXRpb25EaXNhYmxlcj4oJm1fZnJhbWUpOworICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBt
YWtlVW5pcXVlPE5hdmlnYXRpb25EaXNhYmxlcj4oJm1fZnJhbWUpOwogCiAgICAgLy8gQW55IHN1
YmZyYW1lIGluc2VydGVkIGJ5IHVubG9hZCBldmVudCBoYW5kbGVycyBleGVjdXRlZCBpbiB0aGUg
bG9vcCBiZWxvdyB3aWxsIG5vdCBnZXQgdW5sb2FkZWQKICAgICAvLyBiZWNhdXNlIHdlIGNyZWF0
ZSBhIGNvcHkgb2YgdGhlIHN1YmZyYW1lcyBsaXN0IGJlZm9yZSBsb29waW5nLiBUaGVyZWZvcmUs
IGl0IHdvdWxkIGJlIHVuc2FmZSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRl
eCA4ZTNhNDZiNTEwYTk5ODBjMmFmYjgwYTM0NDhhNDk4OWVhYzE5ZTE5Li41ZmZmNjdkOTQyZWJl
OTFlMDNhNTI5NmU2ZTlkYTI0ZGIzYjdjY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaApAQCAtOTYsNiArOTYsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGlzUmVsb2FkKEZyYW1l
TG9hZFR5cGUpOwogdXNpbmcgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPjsKIAogY2xh
c3MgRnJhbWVMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVyKTsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWRlcihG
cmFtZSYsIEZyYW1lTG9hZGVyQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKaW5kZXggY2RmNjQ5NTI2ZmUzZDFmMzMyOGQ2ZTM2YzIwMTA4N2MzMWYxNjU1Yi4uNDA4YzUz
NjQyOWUzYjA4Nzc5OGViOTdlNzY4NjRjYzk0ODY2NjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmNwcApAQCAtMTQyLDIyICsxNDIsMjIgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xp
ZW4KIHsKICAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNo
ZWRJbWFnZT4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxv
YWRJbWFnZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNv
dXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdDoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBk
b3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGlua1ByZWxvYWRTdHlsZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENT
U1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQ
cmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHls
ZVNoZWV0PihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRS
ZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRGb250
UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJl
c291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2Up
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VD
bGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwogI2Vu
ZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWVkaWFSZXNvdXJjZToKICAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWVkaWFQ
cmVsb2FkaW5nRW5hYmxlZCgpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6UmF3UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2Fj
aGVkUmF3UmVzb3VyY2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExp
bmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVz
b3VyY2U+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJl
c291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Okljb246CiAjaWYgRU5BQkxF
KFNWR19GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
RGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaApp
bmRleCAwMmNjN2QxMjBjYTRiY2ZmMzUyNWM4Zjc0OWNjNDE4MGZlNmQ0NWUyLi44YWU0YjMxYjhi
NjlmOThkMDFhZGE3ODg5OWE5OGJkMTFkZDQyNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25EaXNhYmxlci5oCkBAIC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE5hdmlnYXRpb25EaXNhYmxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkRpc2FibGVyKEZyYW1lKiBmcmFtZSkKICAg
ICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwCmluZGV4IDU1OGM3ODA0OTU3ZWM4ODI4ODE4ZWY1NjE5YmY5ODNkM2Y5
NDBhNTUuLjNjMmMyNTJhYTUxYjk2OTI5NWVjZjE0ODEyNTRhMzI0MGVjNDJhNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM5Nyw3ICsz
OTcsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoRG9jdW1l
bnQmIGluaXRpYXRpbmdEb2N1bWVudCwgZG91YmxlCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBiYWNr
L2ZvcndhcmQgbGlzdCBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4K
ICAgICBpZiAoIW1fcmVkaXJlY3QgfHwgZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkgewog
ICAgICAgICBhdXRvIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBkZWxheSA8PSAxID8gTG9ja0JhY2tG
b3J3YXJkTGlzdDo6WWVzIDogTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm87Ci0gICAgICAgIHNjaGVk
dWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVu
dCwgZGVsYXksICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9j
a0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJkTGlzdCkpOworICAgICAgICBzY2hlZHVsZSht
YWtlVW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAm
bV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZ
ZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKICAgICB9CiB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBA
QCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoRG9jdW1l
bnQmIGluaXRpYXRpbmdEb2N1bWVudCwgUwogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVuIGEg
ZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRpb24gb2YgYW5vdGhlciBmcmFtZS4KICAgICBib29sIGR1
cmluZ0xvYWQgPSAhbG9hZGVyLnN0YXRlTWFjaGluZSgpLmNvbW1pdHRlZEZpcnN0UmVhbERvY3Vt
ZW50TG9hZCgpOwogCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRMb2Nh
dGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVm
ZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1
bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1
cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9h
ZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2No
ZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJt
aXNzaW9uKQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvCiAgICAg
ICAgIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXM7CiAgICAg
fQogICAgIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1p
c3Npb24+KFdURk1vdmUoc3VibWlzc2lvbiksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xv
YWQpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihX
VEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CiB9
CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBp
bml0aWF0aW5nRG9jdW1lbnQpCkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2No
ZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2goRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkKICAg
ICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2Zy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5v
dXRnb2luZ1JlZmVycmVyKCkpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJl
ZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVudCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOwogfQog
CiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50
IHN0ZXBzKQpAQCAtNDk4LDEzICs0OTgsMTMgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKICAgICB9CiAKICAgICAvLyBJbiBh
bGwgb3RoZXIgY2FzZXMsIHNjaGVkdWxlIHRoZSBoaXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1ciBh
c3luY2hyb25vdXNseS4KLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEhp
c3RvcnlOYXZpZ2F0aW9uPihzdGVwcykpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1
bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0ZXBzKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVQYWdlQmxvY2soRG9jdW1lbnQmIG9yaWdpbkRvY3VtZW50KQogewogICAg
IGlmIChzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKLSAgICAgICAgc2NoZWR1bGUoc3RkOjpt
YWtlX3VuaXF1ZTxTY2hlZHVsZWRQYWdlQmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CisgICAgICAg
IHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkp
OwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnRpbWVyRmlyZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKaW5kZXggYTJkZGFjZTI4ZjA3YzM5
MWZlMjRlMTkxOGQyNTRhNTAwMmZhYjQ3Ni4uOTdjMjNiMTUwOTJiZjM5M2IzMWQyMGM4ZjM0ZDI1
NzcyNjMxY2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogZW51bSBjbGFzcyBO
ZXdMb2FkSW5Qcm9ncmVzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgCiBjbGFzcyBOYXZpZ2F0
aW9uU2NoZWR1bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBOYXZpZ2F0aW9uU2NoZWR1bGVyKEZyYW1lJik7CiAgICAgfk5hdmlnYXRpb25T
Y2hlZHVsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1Ry
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5k
ZXggZTE3YTlkYzcyZGUwMzdjOTYzNGJjMWNjOTNjMmMxYTc3YTg2YmZhMy4uMjgxN2E3NjY2NDU3
YjIzOTczYTY4ZmNmN2JjMDE4MGMxMmJmNWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
b2dyZXNzVHJhY2tlci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tl
cjo6aW5jcmVtZW50UHJvZ3Jlc3ModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZQogCiAgICAgYXV0byYgaXRlbSA9IG1fcHJvZ3Jlc3NJdGVtcy5hZGQoaWRlbnRpZmllciwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghaXRlbSkgewotICAgICAgICBpdGVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CisgICAg
ICAgIGl0ZW0gPSBtYWtlVW5pcXVlPFByb2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwCmluZGV4IGVhNWRiZmJhYWIyMGJmZDQzZGVhY2YxZTc3NjExYzM0MzNh
YmFiODMuLjgyNDZiYjA3MDZjZDBjMDcxZjg5OTYyODk4NmE1YmE1MWM0OGI2MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTUzNSw3ICs1
MzUsNyBAQCBib29sIFRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbiwgYm9vbAogICAgIGlmIChtX2NvbnRlbnRUeXBlID09
IFhNTCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2NoYXJzZXRQYXJzZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNlcj4oKTsKKyAgICBtX2NoYXJzZXRQYXJz
ZXIgPSBtYWtlVW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNlcj4oKTsKICAgICByZXR1cm4gY2hl
Y2tGb3JNZXRhQ2hhcnNldChkYXRhLCBsZW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGNhOWU2YzQzNDNkNzQwMTA1NTNhOWUxMGZhNjU2M2Vl
NTIzOTFiYmUuLmZhOTI2ZWEwNjJhZGZmMjA1NzBjOGEzNjkxMjQ2NzJiOWVmNTY2ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9jdWVQYXJzZXIpCi0gICAg
ICAgIG1fY3VlUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19j
YXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OworICAgICAgICBtX2N1ZVBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNf
Y2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKIAogICAgIHdoaWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAg
ICAgYXV0byBkYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBh
MTI2M2UyZjA0NTc0YjRmMGVlNzNjMDRlOGI2MmY1YzgwNzJhNzU4Li43NzUzMmY4NjEzNGUwNDNh
ZDM3ZDNmNTk5OThhNmY1N2E0MjQxNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVh
ZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCiAg
ICAgYXV0byBzZWN1cml0eU9yaWdpbkNvcHkgPSBzZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5
KCk7Ci0gICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgp
KTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBtYWtlVW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAg
IGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5
UG9saWN5KTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5VXBncmFkZUluc2Vj
dXJlUmVxdWVzdFN0YXRlRnJvbSgqY29udGVudFNlY3VyaXR5UG9saWN5KTsKIAotICAgIGF1dG8g
b3B0aW9uc0NvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRpb25z
LCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJl
cXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7CisgICAg
YXV0byBvcHRpb25zQ29weSA9IG1ha2VVbmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMs
IHJlcXVlc3QuaHR0cFJlZmVycmVyKCkuaXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDogcmVx
dWVzdC5odHRwUmVmZXJyZXIoKSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKIAogICAg
IC8vIEFsbCBsb2FkcyBzdGFydCBvdXQgYXMgRG9jdW1lbnQuIEluc2lkZSBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyIHdlIHVwZ3JhZGUgdGhpcyB0byBhIFdvcmtlciBsb2FkLgogICAgIEFTU0VSVChv
cHRpb25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6
OkRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZjk3ZWIwMDQyNWJkMjliM2NiNmJjYjM0NWZiZmQ2
NTIyNDA4ZjhjZS4uYmJhOTEwNDE5MTU0ZWNmNDNjMTIyZTJkOTBjZjg2NDU1OTdhOTlkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUmIG5vZGUsIFdURjo6RnVuY3Rpb248Ym9vbAogICAg
IC8vIGJ1dCB3ZSBjYW4gYXBwcm94aW1hdGUgdGhhdCBieSBjaGVja2luZyBpZiBzY3JpcHRpbmcg
aXMgZW5hYmxlZCByaWdodCBub3cuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxRdWFsaWZp
ZWROYW1lPj4gdGFnTmFtZXNUb0ZpbHRlcjsKICAgICBpZiAoZnJhbWUtPnBhZ2UoKSAmJiBmcmFt
ZS0+cGFnZSgpLT5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKSB7Ci0gICAgICAgIHRhZ05h
bWVzVG9GaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4oKTsK
KyAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9IG1ha2VVbmlxdWU8VmVjdG9yPFF1YWxpZmllZE5h
bWU+PigpOwogICAgICAgICB0YWdOYW1lc1RvRmlsdGVyLT5hcHBlbmQoSFRNTE5hbWVzOjpub3Nj
cmlwdFRhZyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAppbmRleCBmMzEyOTA3MjhmNjk5MGQ4MDA4YmEyNjQ0MDIxY2IxZDg4NWI5NDU3Li43
MGY1ODY4NDhlYWVlMjkxMjZjNGJhZTkxMDZjMTVlMjk2YTkwNzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lk
IENhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogICAgICAgICBtX2ltYWdlT2JzZXJ2ZXItPmNhY2hlZEltYWdlcygpLmFkZCh0aGlzKTsK
IAogICAgIGlmIChtX2ltYWdlICYmIGlzPFNWR0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAgIG1f
c3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0
PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5p
cXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIH0KIAog
dm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGll
bnQpCkBAIC0zNTcsNyArMzU3LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNyZWF0ZUlt
YWdlKCkKIAogICAgIGlmIChtX2ltYWdlKSB7CiAgICAgICAgIGlmIChpczxTVkdJbWFnZT4oKm1f
aW1hZ2UpKQotICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAgICAg
ICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxT
VkdJbWFnZT4oKm1faW1hZ2UpKTsKIAogICAgICAgICAvLyBTZW5kIHF1ZXVlZCBjb250YWluZXIg
c2l6ZSByZXF1ZXN0cy4KICAgICAgICAgaWYgKG1faW1hZ2UtPnVzZXNDb250YWluZXJTaXplKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCmluZGV4IGJlNjE4M2FiZmE1OWQ1YzhlMTYyZmVjMWQ2NTUyNDUyM2FkZTI3OGMuLmY5YTc1
ZjM1NDUyNzY5MDJhOWU0YTVjMzViNmFjNmIxZjE1MGMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMjA4LDcgKzIwOCw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRp
cmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQo
UmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJlc3BvbnNlKSk7Ci0gICAgICAgIGl0ZXJhdGVDbGllbnRz
KENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2Ns
aWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdU
Rk1vdmUocmVxdWVzdCksIHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9u
c2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsK
KyAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92ZShyZXF1ZXN0KSwgbWFrZVVuaXF1ZTxSZXNvdXJj
ZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNwb25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVj
ZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggZTQzMGU0NDdhYzQ5NDYzNmM5ODRlNzRkNDBiOTFl
NjVjZGViYjUwYi4uMDU2N2QxZDVkZThjNmYxM2UxODY4NDRhZWQ3NTU3NWNmMTdlMTcyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01
NDYsNyArNTQ2LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIgdGhh
biBpbW1lZGlhdGVseSBzZW5kaW5nIGNhbGxiYWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90aGVy
IENhY2hlZFJlc291cmNlcywKICAgICAgICAgLy8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBh
bmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlzaCBzeW5jaHJvbm91c2x5LgogICAgICAgICBBU1NFUlQo
IW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suY29udGFpbnMoJmNsaWVudCkpOwotICAgICAgICBt
X2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50LCBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrPigqdGhpcywgY2xpZW50KSk7CisgICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJh
Y2suYWRkKCZjbGllbnQsIG1ha2VVbmlxdWU8Q2FsbGJhY2s+KCp0aGlzLCBjbGllbnQpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODQzYTlkMWY5ZDZjODVm
MTAwMGEyYzQwZjE5NjRiNDdhMmViMWM3YS4uYjM0YjhmZDM1YzEwNzdhNTQ1MmFiYjM0MzIzNjFi
NGNjM2QxMWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXUKICAgICAvLyBFbnRyeSBwb2ludCB0byBodHRwczovL2ZldGNoLnNwZWMud2hhdHdn
Lm9yZy8jbWFpbi1mZXRjaC4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBv
cmlnaW5hbFJlcXVlc3Q7CiAgICAgaWYgKENhY2hlZFJlc291cmNlOjpzaG91bGRVc2VQaW5nTG9h
ZCh0eXBlKSB8fCByZXF1ZXN0Lm9wdGlvbnMoKS5kZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykgewotICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSk7CisgICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0
PihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5j
bGVhckhUVFBSZWZlcnJlcigpOwogICAgICAgICBvcmlnaW5hbFJlcXVlc3QtPmNsZWFySFRUUE9y
aWdpbigpOwogICAgIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmVsCiAgICAgICAgIHJlc291cmNlVmFsdWUtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CiAKICAg
ICAgICAgaWYgKCFtX3ByZWxvYWRzKQotICAgICAgICAgICAgbV9wcmVsb2FkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgIG1f
cHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAg
ICAgICAgIG1fcHJlbG9hZHMtPmFkZChyZXNvdXJjZVZhbHVlLmdldCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIHJlc291cmNlOwpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2xlYXJQcmVsb2FkcyhDbGVhclByZWxvYWRzTW9kZSBtb2RlKQogICAgICAgICBB
U1NFUlQocmVzb3VyY2UpOwogICAgICAgICBpZiAobW9kZSA9PSBDbGVhclByZWxvYWRzTW9kZTo6
Q2xlYXJTcGVjdWxhdGl2ZVByZWxvYWRzICYmIHJlc291cmNlLT5pc0xpbmtQcmVsb2FkKCkpIHsK
ICAgICAgICAgICAgIGlmICghcmVtYWluaW5nTGlua1ByZWxvYWRzKQotICAgICAgICAgICAgICAg
IHJlbWFpbmluZ0xpbmtQcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2Fj
aGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMg
PSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgICAg
ICByZW1haW5pbmdMaW5rUHJlbG9hZHMtPmFkZChyZXNvdXJjZSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAppbmRleCA3MGNiMWFmYTRjZjFkM2E2ZTY0
MmE4YWU5ZGI4NDQ4Zjg0ZDE0YmQ2Li4xNDQyNTc0YzNkYjhkNWVmYWQzZGM3NTIzNzlhZmNlMDI5
N2QwZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKIGNsYXNzIENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQyM2MzZmM1MjRiZDhiNmY1NWYz
NWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2FmZmNiZWYzOTI3ODI2M2M0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC04Niw3
ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAgQVNTRVJUKHNlc3Npb25JRC5p
c1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJlc291cmNlcy5hZGQoc2Vzc2lv
bklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1h
cCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CisgICAgICAgIG1hcCA9
IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAgcmV0dXJuICptYXA7CiB9CiAK
QEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0
aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmVtb3ZlSW1h
Z2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBjYWNo
ZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBhdXRvIGNh
Y2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFn
ZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsK
KyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRt
YXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJbWFnZUNsaWVu
dCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29k
ZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmxydUxpc3RG
b3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0JgogCiAgICAgbV9hbGxSZXNv
dXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsKICAgICB3aGlsZSAobV9hbGxS
ZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAgIG1fYWxsUmVzb3VyY2VzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+KCkpOworICAgICAgICBtX2Fs
bFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxMUlVMaXN0PigpKTsKICAgICBy
ZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvUHJldmlld0xvYWRlci5oCmluZGV4IDYxOGU5NDI5NTAxN2RjM2I4MzAzNjVjMTE2
NzYxNTM4YjFkYjYyMzguLjE1MDNkNzhlM2FmNTk5NDk1NGIzM2MyYTgwODRmNGZlYTYzMDA3MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCkBAIC0zOSw2ICsz
OSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFByZXZpZXdMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdMb2FkZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3
TG9hZGVyLm1tCmluZGV4IGY2YjgyMjE3OTE2Y2FkOTViZmU5NjBiYjNlMzc4NGEyNzBhOWJhNjcu
LmM1Y2E1YzI1ZjExYjRkOGE5Y2E5M2VmYzg4OTA5OTA3ZjZiNzY2MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTg2LDcgKzg2LDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJj
ZUxvYWRlciByZXNvdXJjZVIKIAogICAgIF9yZXNvdXJjZUxvYWRlciA9IG1ha2VXZWFrUHRyKHJl
c291cmNlTG9hZGVyKTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwotICAgIF9j
b252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNw
b25zZSk7CisgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2Vs
ZiwgX3Jlc3BvbnNlKTsKICAgICBfYnVmZmVyZWREYXRhQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZyA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9s
aWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBA
IC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWls
V2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgfQogCiAgICAgX2NsaWVudC0+ZGlkUmVxdWVz
dFBhc3N3b3JkKFtzZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChjb25zdCBT
dHJpbmcmIHBhc3N3b3JkKSB7Ci0gICAgICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOworICAgICAgICBf
Y29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2Us
IHBhc3N3b3JkKTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgYXBw
ZW5kRGF0YUFycmF5Ol9idWZmZXJlZERhdGFBcnJheS5nZXQoKV07CiAgICAgICAgIFtfY29udmVy
dGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZpbmlzaGVkQXBwZW5kaW5nRGF0YV07CiAgICAgfSk7
CkBAIC0yNjgsNyArMjY4LDcgQEAgUHJldmlld0xvYWRlcjo6flByZXZpZXdMb2FkZXIoKQogc3Rk
Ojp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2FkZXI6OmNyZWF0ZShSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAg
ICBBU1NFUlQoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShyZXNwb25zZS5taW1l
VHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0xvYWRlcj4obG9h
ZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UHJldmlld0xvYWRlcj4obG9h
ZGVyLCByZXNwb25zZSk7CiB9CiAKIGJvb2wgUHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGM0NzljYTFmOWNiMDdkNGFjN2I0YjlmYjIyODUx
ZjBjOTk0YjE3MTQuLjRjY2RhYjA0YjdiM2Y1NTM0Y2VjYzJhMTllYzBhNGJjYjdhYjE3ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE4
MCw3ICsxODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29u
dHJvbGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0TWVudShFdmVudAogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnU+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29udGV4dE1lbnU+KCk7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpzaG93Q29udGV4dE1lbnUoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcAppbmRleCBmNjNkYWE3ZjYzNDcyNTU4ODczZGIzYjU4M2JjMjUxMmEx
Nzc1MjdhLi5jZGM3NGY2ZGUwOWU5M2RlOWFhYjkyMzU2ZWYyZmJmNDRkZDJkMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtODgsNyArODgsNyBAQCBj
bGFzcyBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5
IHsKIAogYm9vbCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIHsKLSAg
ICBhdXRvIHJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgIGF1dG8gcmVn
aW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBGcmFtZSog
ZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUt
PmRvY3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNDhjMDcz
NDc3MGViMTEwYzFjNWQ4NDUzZGQwODc5OTJlNTY0OWExZS4uZDIwYjk4YzQxNWVlYzgyNzZmODkw
MGYyNGM2N2E5N2YxMDFkMGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMzg1LDcgKzM4NSw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFt
ZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3BlbmRpbmdNb21lbnR1bVdoZWVsRXZlbnRz
VGltZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmNsZWFyTGF0Y2hlZFN0YXRlKQogI2VuZGlmCi0g
ICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b3Njcm9sbENv
bnRyb2xsZXI+KCkpCisgICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKG1ha2VVbmlxdWU8QXV0
b3Njcm9sbENvbnRyb2xsZXI+KCkpCiAjaWYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAg
ICwgbV9mYWtlTW91c2VNb3ZlRXZlbnRUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1v
dXNlTW92ZUV2ZW50VGltZXJGaXJlZCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IDIzMzcyOTQyYjM3NjNkOTI5M2QyNjViMzVhY2MxNTI1ZTM0Y2MwMGYuLmE1ZTVlZGUw
YjRiNzQ3ZTQ3OTRkYzc5NDA2YWVmY2NiYjM4NWRkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTEyOTEsNyArMTI5MSw3IEBAIFJlbmRlckJveCogRnJhbWVWaWV3OjplbWJlZGRl
ZENvbnRlbnRCb3goKSBjb25zdAogdm9pZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9V
cGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogewogICAgIGlmICgh
bV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkKLSAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1Vw
ZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3Qq
Pj4oKTsKKyAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IG1ha2VVbmlxdWU8TGlz
dEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKIAogICAgIEhUTUxGcmFtZU93bmVy
RWxlbWVudCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZyYW1lT3duZXJFbGVtZW50KCk7CiAg
ICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVt
ZW50PihlbGVtZW50KSkgewpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFk
ZFNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIGJvb2wgaGFk
U2xvd1JlcGFpbnRPYmplY3RzID0gaGFzU2xvd1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBpZiAo
IW1fc2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CisgICAgICAg
IG1fc2xvd1JlcGFpbnRPYmplY3RzID0gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVs
ZW1lbnQqPj4oKTsKIAogICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzLT5hZGQoJnJlbmRlcmVyKTsK
ICAgICBpZiAoaGFkU2xvd1JlcGFpbnRPYmplY3RzKQpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyKQogdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogb2JqZWN0KQogewogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0cykKLSAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKKyAgICAgICAgbV92
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdFNldD4oKTsKIAogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+
Y29udGFpbnMob2JqZWN0KSkgewogICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
LT5hZGQob2JqZWN0KTsKQEAgLTQ4NjYsNyArNDg2Niw3IEBAIFN0cmluZyBGcmFtZVZpZXc6OnRy
YWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6OmFkZFNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICBpZiAoIW1f
c2Nyb2xsYWJsZUFyZWFzKQotICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0g
bWFrZVVuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKICAgICAKICAgICBpZiAobV9zY3JvbGxh
YmxlQXJlYXMtPmFkZChzY3JvbGxhYmxlQXJlYSkuaXNOZXdFbnRyeSkgewogICAgICAgICBzY3Jv
bGxhYmxlQXJlYVNldENoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
d0xheW91dENvbnRleHQuY3BwCmluZGV4IDczMDk4ZjFmYTFmMTA3MWU2MWZjZDNhYTY1MzUzMzBk
M2U4OWJmNTkuLmU4NThjOTJjYmY4YzMxYTMyMWJmMzgwMDk3YWJhNTVmMTU3MDAwYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtNTk2
LDE0ICs1OTYsMTQgQEAgdm9pZCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3Rh
dGUoUmVuZGVyRWxlbWVudCYgcm9vdCkKICAgICBBU1NFUlQoIW1fcGFpbnRPZmZzZXRDYWNoZURp
c2FibGVDb3VudCk7CiAgICAgQVNTRVJUKCFsYXlvdXRTdGF0ZSgpKTsKIAotICAgIG1fbGF5b3V0
U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9v
dCkpOworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlv
dXRTdGF0ZT4ocm9vdCkpOwogfQogCiBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hM
YXlvdXRTdGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZChSZW5kZXJCbG9ja0Zsb3cmIGxheW91dFJv
b3QpCiB7CiAgICAgaWYgKGxheW91dFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0
U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRlOjpJc1BhZ2luYXRlZDo6WWVzKSk7
CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0
YXRlPihsYXlvdXRSb290LCBSZW5kZXJMYXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOwog
ICAgIHJldHVybiB0cnVlOwogfQogICAgIApAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgRnJhbWVW
aWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKFJlbmRlckJveCYgcmVuZGVyZXIsIGNv
bnN0IExheW91dFNpCiAgICAgYXV0byogbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgp
OwogICAgIGlmICghbGF5b3V0U3RhdGUgfHwgIW5lZWRzRnVsbFJlcGFpbnQoKSB8fCBsYXlvdXRT
dGF0ZS0+aXNQYWdpbmF0ZWQoKSB8fCByZW5kZXJlci5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygp
CiAgICAgICAgIHx8IGxheW91dFN0YXRlLT5saW5lR3JpZCgpIHx8IChyZW5kZXJlci5zdHlsZSgp
LmxpbmVHcmlkKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpICYmIHJlbmRlcmVy
LmlzUmVuZGVyQmxvY2tGbG93KCkpKSB7Ci0gICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNr
LCByZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOworICAg
ICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3Rh
dGU+KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFn
ZUhlaWdodENoYW5nZWQpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCmluZGV4IDhjM2M1MmEw
NzM1MjI3OTBjZDBjNGE2MGRjMDVlNjE0MTJjMTlhZTkuLjUyMjdlNDJhYzA5NmNlNjkyNWQ3ZWM2
YTE4ZTUxOTI1ZDJlMDA2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApA
QCAtMTQ5LDcgKzE0OSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6
OnNlcnZpY2VXb3JrZXIoKQogewogICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkpOwogICAgIGlmICghbV9zZXJ2
aWNlV29ya2VyQ29udGFpbmVyKQotICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgKnRoaXMpOworICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBtYWtl
VW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
KnRoaXMpOwogICAgIHJldHVybiAqbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCBlZGE3YzVmYTVkNjQ3OWJhNzEwOTAyMGI1MjgzMmNlMjYxYmNkN2U5
Li4yOWEyYWY3NGJjYWRkNmIzMGM2YWZmNjBlYzRlMzFkMGI0NzJiZjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTIxMSwyNiArMjExLDI2IEBAIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU6OkZsYWc+IHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpCiB9CiAKIFBhZ2U6
OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2hy
b21lKHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNo
cm9tZUNsaWVudCkpCi0gICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQorICAgIDogbV9jaHJvbWUobWFrZVVuaXF1ZTxDaHJv
bWU+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKKyAgICAsIG1fZHJh
Z0NhcmV0Q29udHJvbGxlcihtYWtlVW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50
KSkKKyAgICAsIG1fZHJhZ0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRo
aXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkKICNlbmRpZgotICAgICwgbV9mb2N1
c0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdl
SW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCisgICAgLCBtX2ZvY3VzQ29udHJvbGxlcihtYWtlVW5p
cXVlPEZvY3VzQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVy
KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25m
aWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKKyAgICAsIG1fY29udGV4dE1lbnVDb250cm9s
bGVyKG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1
cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKICNlbmRpZgotICAgICwgbV91c2VySW5wdXRCcmlk
Z2Uoc3RkOjptYWtlX3VuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKLSAgICAsIG1faW5z
cGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0
aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV91c2VySW5w
dXRCcmlkZ2UobWFrZVVuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKKyAgICAsIG1faW5z
cGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBw
YWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQpKQogI2lmIEVOQUJMRShQT0lOVEVSX0VW
RU5UUykKLSAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
UG9pbnRlckNhcHR1cmVDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJDYXB0dXJl
Q29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQog
I2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICAsIG1fcG9pbnRlckxvY2tDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCisg
ICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJMb2NrQ29udHJv
bGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NldHRpbmdzKFNldHRpbmdzOjpjcmVhdGUo
dGhpcykpCi0gICAgLCBtX3Byb2dyZXNzKHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NUcmFja2Vy
PigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKLSAgICAsIG1fYmFj
a0ZvcndhcmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVy
PigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQor
ICAgICwgbV9wcm9ncmVzcyhtYWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1
cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCisgICAgLCBtX2JhY2tGb3J3YXJkQ29udHJv
bGxlcihtYWtlVW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKICAgICAsIG1fbWFpbkZyYW1lKEZy
YW1lOjpjcmVhdGUodGhpcywgbnVsbHB0ciwgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50
Rm9yTWFpbkZyYW1lKSkKICAgICAsIG1fZWRpdG9yQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24uZWRpdG9yQ2xpZW50KSkKICAgICAsIG1fcGx1Z0luQ2xpZW50KHBhZ2VDb25maWd1cmF0
aW9uLnBsdWdJbkNsaWVudCkKQEAgLTI1MCw5ICsyNTAsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2RvbVRpbWVyQWxpZ25tZW50
SW50ZXJ2YWxJbmNyZWFzZVRpbWVyKCp0aGlzLCAmUGFnZTo6ZG9tVGltZXJBbGlnbm1lbnRJbnRl
cnZhbEluY3JlYXNlVGltZXJGaXJlZCkKICAgICAsIG1fYWN0aXZpdHlTdGF0ZShwYWdlSW5pdGlh
bEFjdGl2aXR5U3RhdGUoKSkKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDb25m
aWd1cmF0aW9uLmFsdGVybmF0aXZlVGV4dENsaWVudCkKLSAgICAsIG1fY29uc29sZUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50PigqdGhpcykpCisgICAgLCBtX2NvbnNv
bGVDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRGVidWdn
YWJsZShtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1f
c29ja2V0UHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlcikp
CiAgICAgLCBtX2Nvb2tpZUphcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvb2tpZUphcikp
CkBAIC0yNjgsMTYgKzI2OCwxNiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGlt
ZXIoKnRoaXMsICZQYWdlOjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyRmlyZWQp
CiAjZW5kaWYKICAgICAsIG1faXNVdGlsaXR5UGFnZShpc1V0aWxpdHlQYWdlQ2hyb21lQ2xpZW50
KGNocm9tZSgpLmNsaWVudCgpKSkKLSAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0
eVBhZ2UoKSA/IG51bGxwdHIgOiBzdGQ6Om1ha2VfdW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4o
KnRoaXMpKQotICAgICwgbV9sb3dQb3dlck1vZGVOb3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPExv
d1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsg
aGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQotICAg
ICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmcoc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dp
bmc+KCp0aGlzKSkKKyAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/
IG51bGxwdHIgOiBtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQorICAgICwg
bV9sb3dQb3dlck1vZGVOb3RpZmllcihtYWtlVW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihb
dGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hh
bmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQorICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dp
bmcobWFrZVVuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+KCp0aGlzKSkKICNpZiBQTEFURk9STShN
QUMpICYmIChFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSkKLSAgICAsIG1fc2VydmljZXNPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXIo
V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGFnZU92ZXJsYXlDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisg
ICAgLCBtX3BhZ2VPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q29udHJv
bGxlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgLCBtX3BheW1lbnRDb29y
ZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1
cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCkpCisgICAgLCBtX3BheW1lbnRDb29yZGlu
YXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBh
eW1lbnRDb29yZGluYXRvckNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
ICAgICwgbV9hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50KSkpCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBQYWdlOjppbml0R3Jv
dXAoKQogewogICAgIEFTU0VSVCghbV9zaW5nbGVQYWdlR3JvdXApOwogICAgIEFTU0VSVCghbV9n
cm91cCk7Ci0gICAgbV9zaW5nbGVQYWdlR3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VHcm91
cD4oKnRoaXMpOworICAgIG1fc2luZ2xlUGFnZUdyb3VwID0gbWFrZVVuaXF1ZTxQYWdlR3JvdXA+
KCp0aGlzKTsKICAgICBtX2dyb3VwID0gbV9zaW5nbGVQYWdlR3JvdXAuZ2V0KCk7CiB9CiAKQEAg
LTI2NTQsNyArMjY1NCw3IEBAIHZvaWQgUGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNp
YmxlKGJvb2wgdmlzaWJsZSkKICAgICB9CiAKICAgICBpZiAoIW1fcmVzb3VyY2VVc2FnZU92ZXJs
YXkgJiYgbV9zZXR0aW5ncy0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkKLSAgICAg
ICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VVc2Fn
ZU92ZXJsYXk+KCp0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IG1ha2VV
bmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+KCp0aGlzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCmluZGV4IGQwMzJmY2Y3MGY4NmE2M2Fh
ZGQxMWYyMjdmYTk2ZGQwNjNjMWVhNjEuLjYzZjY1NmYxYTVhYjhlMjZmYjk1NWU2MzRlNDVhOWE4
YTEyZmRkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBA
IC0xNjAsOSArMTYwLDkgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKIAogICAgIGlmIChjYWxs
U3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0
LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAg
ICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2Us
IE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VO
b25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVz
c2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3Rl
ZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dl
c3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0
ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgYWRkTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdl
V2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogICAgIFN0
cmluZyBtZXNzYWdlVGV4dDsKICAgICBib29sIGdvdE1lc3NhZ2UgPSBhcmd1bWVudHMtPmdldEZp
cnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7CiAKLSAgICBhdXRvIG1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYo
KSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOwogCiAgICAgU3RyaW5nIHVybCA9IG1l
c3NhZ2UtPnVybCgpOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5lKCk7
CkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChkYXRhVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkTWVzc2Fn
ZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
IkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOwor
ICAgICAgICAgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUo
YXJndW1lbnRzKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAt
Mzg5LDcgKzM4OSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgZm9yIChzaXplX3Qg
aSA9ICghdGFyZ2V0ID8gMCA6IDEpOyBpIDwgYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsr
aSkKICAgICAgICAgYWRqdXN0ZWRBcmd1bWVudHMuYXBwZW5kKHsgc3RhdGUtPnZtKCksIGFyZ3Vt
ZW50cy0+YXJndW1lbnRBdChpKSB9KTsKICAgICBhcmd1bWVudHMgPSBTY3JpcHRBcmd1bWVudHM6
OmNyZWF0ZSgqc3RhdGUsIFdURk1vdmUoYWRqdXN0ZWRBcmd1bWVudHMpKTsKLSAgICBhZGRNZXNz
YWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywg
ZGF0YVVSTCwgV1RGTW92ZShhcmd1bWVudHMpKSk7CisgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJn
dW1lbnRzKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VH
cm91cC5jcHAKaW5kZXggOTE5MzYwNDVjMmZhZjc2Y2FjNWUyYzY5ZTYyMzNmMmNlMzBiZjliMS4u
MTI4YzE4ZjE0YjkwOGU3MWJjN2NlZmIzOTYyMDdmZWJiYzAwZjJhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUdyb3VwLmNwcApAQCAtMTE2LDkgKzExNiw5IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMm
IFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVuY2VzKCkKIHsKICAgICBpZiAoIW1fY2FwdGlvblBy
ZWZlcmVuY2VzKSB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJ
VFlfRlJBTUVXT1JLKQotICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKKyAgICAgICAgbV9j
YXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGPigqdGhpcyk7CiAjZWxzZQotICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRoaXMpOworICAgICAgICBtX2Nh
cHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRo
aXMpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4
IDZjMTViM2ZhYTgzZjVjYWUwZDkxNzZkMDBjOGFmYzE1Yjc2NjkzMTYuLmNiYmFjMjFkNDAwNWIx
YjBlMTE4MDIyZjdhYTE0YThiY2ZlZDg1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2Uu
Y3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdC
dWZmZXJGdWxsVGltZXJGaXJlZCgpCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFy
ayhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAg
ICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsK
KyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IG1fdXNlclRpbWluZy0+bWFyayhtYXJrTmFtZSk7CiAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTI3OSwxNCArMjc5LDE0IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB2b2lkIFBl
cmZvcm1hbmNlOjpjbGVhck1hcmtzKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYg
KCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8
VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVz
ZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmctPmNsZWFyTWFya3MobWFya05hbWUp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJp
bmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcmIHN0YXJ0TWFyaywgY29uc3QgU3RyaW5nJiBl
bmRNYXJrKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGlt
aW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9
IG1fdXNlclRpbWluZy0+bWVhc3VyZShtZWFzdXJlTmFtZSwgc3RhcnRNYXJrLCBlbmRNYXJrKTsK
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMzAwLDcgKzMwMCw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5h
bWUsIGNvbnN0IFN0cmluZyYKIHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMoY29uc3Qg
U3RyaW5nJiBtZWFzdXJlTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAg
bV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAg
ICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1f
dXNlclRpbWluZy0+Y2xlYXJNZWFzdXJlcyhtZWFzdXJlTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCmluZGV4IDk5YTQzNzJlNTRkODQwMjliYWZiZjli
OGY3YTU4MjAwMWZhNjNhMWIuLjE2YmNmMDQzOTBhMTcwZjNkZTc4MjY1MGMyZmMyNTIyY2Y1MDU0
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaApAQCAtMzIsNiAr
MzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUHJl
d2FybUluZm9ybWF0aW9uIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24gZm9udENhY2hlOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDAzNzBmMjg4N2Y2NWI1N2IzY2Q4OTdlNGZjNjll
OGEyZWZiODc1ZGYuLjQ0MjkxYWVmYTM3YzhhN2E4NDQ4YmVjMzlhZWVhYzI0MzllYzQ3NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lk
IFByaW50Q29udGV4dDo6b3V0cHV0TGlua2VkRGVzdGluYXRpb25zKEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBEbwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbGlua2Vk
RGVzdGluYXRpb25zKSB7Ci0gICAgICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4oKTsKKyAgICAgICAgbV9saW5r
ZWREZXN0aW5hdGlvbnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxlbWVudD4+
PigpOwogICAgICAgICBjb2xsZWN0TGlua2VkRGVzdGluYXRpb25zKGRvY3VtZW50KTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNw
cAppbmRleCA1NmEwMTFjNGNlZTk5Nzg5OTAxZmFkMzYzMDJiZTEwYzM0NTY2NTI3Li4zYjg4MWRm
YmIxNzE3ZjRlNDExYTZjNTM0NDU5NWZiZDNhYjQzMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGJv
b2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjppc1NjaGVkdWxlZCgpIGNvbnN0CiB2b2lkIFJl
bmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAg
IEFTU0VSVCghaXNTY2hlZHVsZWQoKSk7Ci0gICAgbV9yZWZyZXNoVGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJl
ZnJlc2hGaXJlZCk7CisgICAgbV9yZWZyZXNoVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhp
cywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CiAgICAg
bV9yZWZyZXNoVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCmluZGV4IGZhZGU2MmZjNzg3ZWU0
ODk3OWFmNmRkODI2NjI3Nzk4MDRkMzc1MTcuLjZmMDYwODE3ODI2ZWM1NmM2ZWU4YTVmOGNkMzk0
NGVjMmQ0MTkwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXIKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcj4gY3JlYXRlKFBhZ2UmIHBhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+KHBhZ2UpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+KHBhZ2UpOwogICAgIH0KIAog
ICAgIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcihQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6
ZU9ic2VydmVyLmgKaW5kZXggOTViMWM4YjViZTgzZDg5YjI0OTc5ZWFlZDliOWQ0ZTkwZDNmNGY4
Ny4uZWVlYmY5YjllNjFiZDU4OGZkM2JhOTlmYWIxNTAxOTFjYzhmNjcwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEVsZW1lbnQ7CiAKIHN0cnVjdCBSZXNpemVPYnNlcnZlckRhdGEgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBWZWN0b3I8V2Vha1B0cjxSZXNpemVPYnNl
cnZlcj4+IG9ic2VydmVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAKaW5kZXggNDIzNDE4MjgwZWEyZWUzYzliZmRmYzkxY2QxMjdiOTY4ZWIxZTFiZi4uMGRlYjA2
NDE0OGY5NzI2Y2QzOGI0MTAwNWQ1MjI5NzI2MGMxYzY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291
cmNlTwogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CiAgICAg
T3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRk
KHNvdXJjZVN0cmluZywgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5BY2Nl
c3NXaGl0ZUxpc3Q+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5p
cXVlPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4oKTsKIAogICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlz
dCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgbGlzdC0+YXBwZW5k
KE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWlu
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1
YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5B
Y2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzcykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5nc0Jhc2UuY3BwCmluZGV4IGI2ODQ4OTZmMzk4ODQ2MjU0YTE3OTdhZGNkZWQ2NjY2MDVl
ODVkNWMuLjI3ZWVhNmMwYWI5MzhlYmM4Zjk2NWRhY2I4MjAzMTE0NDMxNjBiOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0
IFNlY29uZHMgbGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgPSAyNTBfbXM7CiAKIFNldHRpbmdzQmFz
ZTo6U2V0dGluZ3NCYXNlKFBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UobnVsbHB0cikKLSAgICAs
IG1fZm9udEdlbmVyaWNGYW1pbGllcyhzdGQ6Om1ha2VfdW5pcXVlPEZvbnRHZW5lcmljRmFtaWxp
ZXM+KCkpCisgICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMobWFrZVVuaXF1ZTxGb250R2VuZXJp
Y0ZhbWlsaWVzPigpKQogICAgICwgbV9sYXlvdXRJbnRlcnZhbChsYXlvdXRTY2hlZHVsZVRocmVz
aG9sZCkKICAgICAsIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWwoRE9NVGltZXI6OmRlZmF1bHRN
aW5pbXVtSW50ZXJ2YWwoKSkKICAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcigq
dGhpcywgJlNldHRpbmdzQmFzZTo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRleCA1NTg0NDM0MDc4MzQ2ZmI5YjU3
YTZlYTU5YWZjZTI3YTYyNDBiNTVhLi4zYzNkNDllMDU4YWIxMzE3NDdlYjQ5YmIwYzkzYTBmZDI5
NDUxOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApAQCAtMzQsNiAr
MzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdXNwZW5kYWJsZVRpbWVyIDog
cHJpdmF0ZSBUaW1lckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFN1c3BlbmRhYmxlVGltZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgflN1c3BlbmRhYmxlVGltZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRl
eCBiOWNlOThjYzZjYTVjMjQ1NmNkYjk0ZjVkYzQxYjRkMmI1MGU5OGY2Li42NTIzMTFkN2E1NWY1
NTA3YTA1YWE0M2I2MmM4MDIwODcyMmRiYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgVXNlckNvbnRl
bnRDb250cm9sbGVyOjpmb3JFYWNoVXNlck1lc3NhZ2VIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoY29u
c3QgVXNlck1lCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0PiB1c2VyU2Ny
aXB0KQogewotICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUo
JndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigp
OyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJT
Y3JpcHRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPFVzZXJTY3JpcHRW
ZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5k
KFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBVc2Vy
Q29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRzKERPTVdyYXBwZXJXb3JsZCYgd29y
bGQpCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChET01X
cmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJT
dHlsZVNoZWV0LCBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAg
YXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3Js
ZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7
IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3Vz
ZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2Vy
U3R5bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHN0eWxlU2hlZXRz
SW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIAogICAgIGlmIChpbmpl
Y3Rpb25UaW1lID09IEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKaW5kZXggZjI1OWFlYjFhMGE5ZTVjZTdh
MTM0ZjBkMTI2OWVjMzE0YzlhOWMzMS4uMzA0ZDk0YTc1YmYzNjFkOGRkNDZmNmFmZmFmZTMxYzNl
ZjgyYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVy
LmNwcApAQCAtNDMsOSArNDMsOSBAQCBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6On5XaGVlbEV2ZW50
RGVsdGFGaWx0ZXIoKSA9IGRlZmF1bHQ7CiBzdGQ6OnVuaXF1ZV9wdHI8V2hlZWxFdmVudERlbHRh
RmlsdGVyPiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdoZWVsRXZlbnREZWx0YUZpbHRlck1h
Yz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7
CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRh
RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmls
dGVyPigpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMTQ0NjYzY2FlOTU5Nzlj
ZmNjN2M0YTIyNDJlMWQxNjFkNjEwMjkyNS4uMTNjMzFmNTc2NGI3YjIyNGEyYjdlYTU1YWUzM2E2
YjM5ODZiOTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIENT
U0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphbmltYXRpb25XaWxsQmVSZW1vdmVkKEFuaW1h
dGlvbkJhc2UmIGFuaW1hdAogfQogCiBDU1NBbmltYXRpb25Db250cm9sbGVyOjpDU1NBbmltYXRp
b25Db250cm9sbGVyKEZyYW1lJiBmcmFtZSkKLSAgICA6IG1fZGF0YShzdGQ6Om1ha2VfdW5pcXVl
PENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPihmcmFtZSkpCisgICAgOiBtX2RhdGEobWFr
ZVVuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKaW5kZXggNzRlZWRjOTk2NmU5ZjgxYWNiOTk2Y2YzNzY5ODNkYWI2ODU1NDBjNi4u
YmFlYjI0NzY1NzE2NzM3Yjg0YTFjYzhmMTlkZTAxNzNmMzY3ZTk5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApA
QCAtMTE3LDkgKzExNyw5IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0Rh
dGE+IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpCiB7CiAgICAgQVNTRVJU
KGZyb20gJiYgdG8pOwogICAgIGlmIChmcm9tLT5zdHlsZSgpICE9IHRvLT5zdHlsZSgpKQotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqdG8pOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqdG8pOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9u
KCksIHByb2dyZXNzKSwKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChm
cm9tLT5sb2NhdGlvbigpLCB0by0+bG9jYXRpb24oKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVu
ZChmcm9tLT5yYWRpdXMoKSwgdG8tPnJhZGl1cygpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5k
KGZyb20tPnNwcmVhZCgpLCB0by0+c3ByZWFkKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmRG
dW5jKGFuaW0sIGZyb20tPnN0eWxlKCksIHRvLT5zdHlsZSgpLCBwcm9ncmVzcyksCkBAIC05NzQs
MTUgKzk3NCwxNSBAQCBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvciA6
IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlCiAgICAgUHJvcGVydHlXcmFwcGVy
VmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBDb2xvciYgKFJl
bmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlciko
Y29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0
ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29u
c3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3Ap
Ci0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29s
b3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0
ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIs
IHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5
V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVk
V3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0
dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAgICAgfQogICAgIFByb3BlcnR5V3JhcHBlclZp
c2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgTWF5YmVJbnZhbGlkQ29sb3JU
YWcsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJl
bmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpLAogICAgICAgICBjb25zdCBDb2xvciYg
KFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6
Oip2aXNpdGVkU2V0dGVyKShjb25zdCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3Bl
cnR5V3JhcHBlckJhc2UocHJvcCkKLSAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1
ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIp
KQotICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdy
YXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRl
cikpCisgICAgICAgICwgbV93cmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJ
bnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRX
cmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3As
IHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgYm9vbCBl
cXVhbHMoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKSBjb25zdCBv
dmVycmlkZQpAQCAtMTIyOSwxOSArMTIyOSwxOSBAQCBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlX
cmFwcGVyIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewogICAgICAgICBz
d2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAg
ICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5k
WE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsK
KyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxs
TGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3Np
dGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9y
aWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6Ci0gICAg
ICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
bExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp5UG9z
aXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFlP
cmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRZT3JpZ2luLCBFZGdlOjpCb3R0b20pOwor
ICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxM
YXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0
aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3Jp
Z2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQ
cm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBl
cjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5
ZXI6OnNldFNpemVMZW5ndGgpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBw
ZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJv
cGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2U6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZG
aWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSk7CisgICAgICAgICAgICBtX2Zp
bGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVBy
b3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpz
ZXRJbWFnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTc3MCw3ICsxNzcwLDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFw
cGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAoKQogICAgICAgICAgICAgbG9u
Z2hhbmRXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQobV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJ
bmRleF0uZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4o
cHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdyYXBwZXJzKSkpOworICAgICAgICBtX3Byb3Bl
cnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8U2hvcnRoYW5kUHJvcGVydHlX
cmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3ZlKGxvbmdoYW5kV3JhcHBlcnMpKSk7CiAgICAgICAg
IGluZGV4RnJvbVByb3BlcnR5SUQocHJvcGVydHlJRCkgPSBhbmltYXRhYmxlTG9uZ2hhbmRQcm9w
ZXJ0aWVzQ291bnQgKyBpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDcwNDdlODNkZTc4NWRiODFiNmQ5OTBh
OTQ4MzdiYTcxZDcyODI5YTAuLjhmMGY2YmY1M2IwM2UwOGY3MDMzMTY2ZWI4Yzc0ZDZiZjk3Mjgz
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpk
aWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiB2b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZihjb25zdCBTZWN1cml0eU9y
aWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgbV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1
cml0eU9yaWdpbi5wcm90b2NvbCgpOwotICAgIG1fc2VsZlNvdXJjZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9j
b2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0
cmluZygpLCBmYWxzZSwgZmFsc2UpOworICAgIG1fc2VsZlNvdXJjZSA9IG1ha2VVbmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNl
Y3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygp
LCBmYWxzZSwgZmFsc2UpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQ
b2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaAppbmRleCBhOGYx
ZDRmMGJkZTE0ZjE0Yjg4YWEzOTQwZWRkOGM4OTYyNjFlM2RlLi5iYmQ5MTg5ZTI0ODM0ZGFjYzhk
N2JhZTE1Y2M1ODE2Y2EzMjBjZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaApAQCAtMzMsNiArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiBkaXJl
Y3RpdmVMaXN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
ICAgIDogbV9uYW1lKG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCmluZGV4IGRkYmQ4
Y2RlMjc4MGU5MmRiYTIwZTBhYmQ5OWNmMDQ5ODQzZjRjNGQuLmMwMTU2ZGRmMDFjOTQ3ZTUwNGI1
NjlkMGE0MTE2OThjNTU4ZjNlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Q29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdChDb250ZW50U2UKIAogc3RkOjp1bmlxdWVfcHRy
PENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29u
c3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUgdHlwZSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tIGZyb20pCiB7Ci0gICAgYXV0byBkaXJl
Y3RpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0Pihwb2xpY3ksIHR5cGUpOworICAgIGF1dG8gZGlyZWN0aXZlcyA9IG1ha2VVbmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsKICAgICBkaXJl
Y3RpdmVzLT5wYXJzZShoZWFkZXIsIGZyb20pOwogCiAgICAgaWYgKCFjaGVja0V2YWwoZGlyZWN0
aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRpcmVjdGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKSkp
IHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgogICAgICAgICBt
X3BvbGljeS5yZXBvcnREdXBsaWNhdGVEaXJlY3RpdmUobmFtZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgZGlyZWN0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1BEaXJlY3RpdmVUeXBl
PigqdGhpcywgbmFtZSwgdmFsdWUpOworICAgIGRpcmVjdGl2ZSA9IG1ha2VVbmlxdWU8Q1NQRGly
ZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphcHBseVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAppbmRleCA0ZmRm
NzU2YzAyMTk4ODUzM2IyZjEyNTVjOTFhNGVjYzkxNDg0ZmE0Li4yNmMyMTJiNDgyNGEwNDNjMjUz
YWYyNTc2NGUwYjlhMzgxMzA4YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xp
bnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBA
QCBjbGFzcyBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmluYWwgOiBwdWJsaWMgR3JhcGhp
Y3NMYXllckNsaWVudCB7CiAKIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5p
dGlhbGl6ZSgpCiB7Ci0gICAgbV9vdmVybGF5UGFpbnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVz
b3VyY2VVc2FnZU92ZXJsYXlQYWludGVyPigqdGhpcyk7CisgICAgbV9vdmVybGF5UGFpbnRlciA9
IG1ha2VVbmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyPigqdGhpcyk7CiAgICAgbV9w
YWludExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG92ZXJsYXkoKS5wYWdlKCktPmNocm9t
ZSgpLmNsaWVudCgpLmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICptX292ZXJsYXlQYWludGVyKTsK
ICAgICBtX3BhaW50TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBt
X3BhaW50TGF5ZXItPnNldFNpemUoeyBub3JtYWxXaWR0aCwgbm9ybWFsSGVpZ2h0IH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggZDdhZGZmZDcyZjlmYThmZTk3YWZjZGEwNzE4
ZDgzYzZlMDkwODUwYy4uMDg2M2FkMjY3MjVkNjU1NDc1MmI3YWMyMTQ4ZWVkMWM2ZGZjMjNiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUGFn
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxT
Y2hlZHVsZVBhaXI+JiYgcGFpcikKIHsKICAgICBpZiAoIW1fc2NoZWR1bGVkUnVuTG9vcFBhaXJz
KQotICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2No
ZWR1bGVQYWlySGFzaFNldD4oKTsKKyAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBt
YWtlVW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5Mb29w
UGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFp
bkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKaW5k
ZXggZGNkZDk1MDQ4YmQ5NThhYTc0NDBhMGZjM2Q5YmNlN2RmMmY1NDgwZi4uNjQ3NWNlNWViYzkw
N2FlMTg4MGFmMTcxYzA3MzZmZjNlY2I1MDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIFRl
eHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNzYWxBbmltYXRpb24gOiB1aW50OF90IHsKICNpZiBQTEFU
Rk9STShNQUMpCiAKIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3cgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRJbmRpY2F0b3JXaW5k
b3cpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDMwNmNmZWQxOWNlNmQw
MGI2MmE4NTI0OTcwMDI4YjgwNDVmYWQ4MjMuLjAwYWYzOTQ3OGRjNzVmNzAyOWMyNDg0NTRlZjAx
YWIwYzZjN2QxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC01OSw3ICs1OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IoUGFnZSogcGFnZSkKICAgICA6IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBh
Z2UpCiAgICAgLCBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyKCp0aGlzLCAmQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xs
VGltZXJGaXJlZCkKLSAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkKKyAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKG1h
a2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRl
eCA2M2JkOTYzOGI2M2ExYTExY2E0MGYzNjcyMTI5ZjcxNDEwYzZmZjJlLi4zYWI2NDA2ODI2NGM1
MDQwOGJhYjRlZTM4ZDJjY2Q0YTY0MWM3ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtMzcsNiArMzcsNyBA
QCBzdHJ1Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2UgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0
cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICBWZWN0b3I8VD4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIFZlY3Rv
cjxUPiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAppbmRl
eCA3NjQwZDU1ZDk2YTNmMDk1OWI5MzFlZjA0MzNlYzE1ZmEyMDdkYmQ0Li5jODkwZjllYmEwMDRj
YTg3ODAxNDFiODVjZWVlMDA1NTYyZTJlNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgRmxvYXRTaXplIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0
aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3
cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRp
YWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxl
ZChib29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaAppbmRleCBiZTk5ZDBlZTZhM2YwNzg5ZmM0ZDdk
YzY5Mjg4NWI1MjQwMDQzODAyLi4yMWMzMTFjZDg5Yjc5NDA4NGE4NDkwZDVmYzliYTU1YTkzYjlh
ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBGbG9h
dFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwogCiBjbGFzcyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNl
dCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bFZlbG9jaXR5KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVs
b2NpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5jcHAKaW5kZXggOTY4MmQyYzFiY2VlMzc1NzEzYzM0NmQzZTMzY2Q0ZGMxMzVh
ZmM3OC4uYmU1N2M5Yjg2OWQwY2M1MjM4NmIwMDQ2YTUwN2QzNGM4NDBjODE2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVuZENoaWxk
KFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+JiYgY2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0
UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVu
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+Pigp
OworICAgICAgICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGlu
Z1N0YXRlTm9kZT4+PigpOwogICAgIG1fY2hpbGRyZW4tPmFwcGVuZChXVEZNb3ZlKGNoaWxkTm9k
ZSkpOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZChDaGlsZE5vZGVzKTsKIH0KQEAgLTExMiw3ICsx
MTIsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hpbGQoUmVmPFNjcm9sbGlu
Z1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUsIHNpemVfdAogCiAgICAgaWYgKCFtX2NoaWxkcmVuKSB7
CiAgICAgICAgIEFTU0VSVCghaW5kZXgpOwotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOworICAgICAgICBt
X2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+
PigpOwogICAgIH0KIAogICAgIGlmIChpbmRleCA+IG1fY2hpbGRyZW4tPnNpemUoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5j
cHAKaW5kZXggZjYxZTI4ZTBlYzUwMzAxMmIzNzJmYjI1NTY5YThjYjdkZDUzYWE3MC4uNzE1N2Ux
Njg2MGY0OWM5MWRkYTM1YmJjNGVhZmU5ODE5ZWFjYmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0yOTMsNyAr
MjkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gU2Nyb2xsaW5nU3Rh
dGVUcmVlOjpjb21taXQoTGF5ZXJSZXByZXNlbnRhdGkKICAgICB9CiAKICAgICAvLyBUaGlzIGZ1
bmN0aW9uIGNsb25lcyBhbmQgcmVzZXRzIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUsIGJ1dCBsZWF2
ZXMgdGhlIHRyZWUgc3RydWN0dXJlIGludGFjdC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
aW5nU3RhdGVUcmVlPiB0cmVlU3RhdGVDbG9uZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5n
U3RhdGVUcmVlPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRy
ZWVTdGF0ZUNsb25lID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CiAgICAgdHJl
ZVN0YXRlQ2xvbmUtPnNldFByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24ocHJlZmVycmVkTGF5
ZXJSZXByZXNlbnRhdGlvbik7CiAKICAgICBpZiAobV9yb290U3RhdGVOb2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCmluZGV4
IGVhNzRlMmNhNDI0MjlhOGUyYmU5ZjlhMzc5ZTM2N2RhNGRkZGEzZDEuLjcyOTYxNWE2OWYwMTIy
NjMxNTE0N2VjZmRiNTUyOGIwMTk5ZjM4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1RyZWVOb2RlPiYm
IGNoaWxkTm9kZSkKICAgICBjaGlsZE5vZGUtPnNldFBhcmVudCh0aGlzKTsKIAogICAgIGlmICgh
bV9jaGlsZHJlbikKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4+PigpOworICAgICAgICBtX2NoaWxkcmVuID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7CiAgICAgbV9jaGls
ZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjLm1tCmluZGV4IDFjN2FiNzZhMTUxZTYzNTBkOGI2MTRjMzZkMDViY2U2
NWM2Yzk1ODQuLmI0M2VhOTk1ZmFmNmI0NzAzMzVmYmYwN2EyMDg2YTZiMzVmNzBlZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBzdGF0
aWMgYm9vbCBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSB0cnVl
OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlh
bE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlh
bE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250
ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwog
fQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1
bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NQVU1vbml0b3IuaAppbmRleCA3MWU0M2QzZjNiOTQ2MTA2MDhjYmYxMWRiNTExNWJjYmVj
MDU0ODkwLi4wODhkZjU0M2UwNDc5MTE3YzgzN2FmZTIyM2JiY2M1NTE0ODhhN2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENQVU1vbml0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHVzaW5nIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyID0gV1RGOjpG
dW5jdGlvbjx2b2lkKGRvdWJsZSk+OwogICAgIFdFQkNPUkVfRVhQT1JUIENQVU1vbml0b3IoU2Vj
b25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCmluZGV4IGU2MGY3NzEzZjYyYmIyNTYyYTg0Mjg4OGM3
ZmM2MjlmMmM1NDdmMzMuLjZiMjg4ZTFlMTdlNDQ4YmI4NmZiOWVjZTI5Y2M5ZTViZGI5ZGQ4ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaApAQCAtNDIsNiArNDIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxlTW9uaXRvciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGaWxlQ2hhbmdlVHlwZSB7
IE1vZGlmaWNhdGlvbiwgUmVtb3ZhbCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApp
bmRleCA0ZmY5ODA0ZWFlYzEzMDZiMjY4YTI0NWYyNzcxYTExMmUyOGQyYTFlLi4zZmM0MzFhNDc0
NjFkOGM0NDNkYjRiNjIyZDZlYTkwNjM0ZGEwZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5jcHAKQEAgLTI4OCw5ICsyODgsOSBAQCBMZW5ndGggY29udmVydFRvMTAwUGVyY2VudE1pbnVz
TGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2Fs
YyBleHByZXNzaW9uOiBjYWxjKDEwMCUgLSBsZW5ndGgpCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+PiBsZW5ndGhzOwogICAgIGxlbmd0aHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSgyKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOwotICAg
IGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25M
ZW5ndGg+KGxlbmd0aCkpOwotICAgIGF1dG8gb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHBy
ZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0
KTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9u
TGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBw
ZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOworICAgIGF1dG8g
b3AgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMp
LCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9u
VmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCkBAIC0zMDIs
NyArMzAyLDcgQEAgc3RhdGljIExlbmd0aCBibGVuZE1peGVkVHlwZXMoY29uc3QgTGVuZ3RoJiBm
cm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3IKICAgICBpZiAocHJvZ3Jlc3MgPj0g
MS4wKQogICAgICAgICByZXR1cm4gdG87CiAgICAgICAgIAotICAgIGF1dG8gYmxlbmQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGg+KGZyb20sIHRvLCBwcm9ncmVz
cyk7CisgICAgYXV0byBibGVuZCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0
aD4oZnJvbSwgdG8sIHByb2dyZXNzKTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFs
dWU6OmNyZWF0ZShXVEZNb3ZlKGJsZW5kKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAppbmRleCA1
NTJiMTJmNmMxZThjZGE2ZmZlYTY0Nzg2OTIyMjllYTkzZWQxN2NhLi44ZTM1ZTMwNGMxZTcyNTdi
YzY0YzZhZDEwZWRkZTk2NDIwNGU2NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2lmICghUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykp
IHx8ICFIQVZFKE1FRElBX1BMQVlFUikKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlz
dGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNv
bW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21t
YW5kTGlzdGVuZXI+KGNsaWVudCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGQ5MTU0ZDkzNTFhMmYzMzY2ZGRkMDVmZTYwZmRl
YmI5YzFhMWU3MzguLmY4ZWRjODgyZDdmMzYwMDJlMTk4NTEwZDgxYjhlYjM0YWE1MDA3YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFFTkFCTEUoU01PT1RIX1NDUk9MTElORykg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUMpCiBzdGQ6OnVuaXF1ZV9w
dHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFu
aW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5p
bWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggYzYyYWQ4MzRlNmIzODA4ZTFlY2RhOGJhMTMx
MmQzZDk1NzA1ZTk2YS4uOTZkMGYzMDBiMzQxOGU2MDgyMWRhMmRhMmE2NDE4OWM0ZGVlMGIzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtODAsNyAr
ODAsNyBAQCBTY3JvbGxBbmltYXRvciYgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbEFuaW1hdG9yKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fc2Nyb2xsQW5pbWF0b3IpIHsKICAgICAgICAgaWYgKHVzZXNN
b2NrU2Nyb2xsQW5pbWF0b3IoKSkgewotICAgICAgICAgICAgbV9zY3JvbGxBbmltYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25zdF9jYXN0PFNjcm9sbGFibGVB
cmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CisgICAgICAgICAg
ICBtX3Njcm9sbEFuaW1hdG9yID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+KGNvbnN0
X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIHsKICAgICAgICAgICAgICAgICBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKG1lc3Nh
Z2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZQpAQCAtNDM1LDcgKzQzNSw3IEBA
IGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhhc0xheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QKIFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNu
YXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKLSAgICAgICAg
bV9zbmFwT2Zmc2V0c0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVl
PFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKICAgICByZXR1cm4gKm1fc25h
cE9mZnNldHNJbmZvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dWRkZW5UZXJtaW5hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWlu
YXRpb24uaAppbmRleCA3MmIwMDQ1MTMxNDJjOGY0ZTk1ZGYyMjgxOGMzZGRjMTgwYWFlY2VkLi4w
ZDc0YjE2ZTU5MjU5OGFiODNiMGM4YzBlYjU0YjQ0NmRmZDM4ZDMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBjbGFzcyBTdWRkZW5UZXJtaW5hdGlvbkRpc2Fi
bGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIpOwogICAgIHB1YmxpYzoKICAg
ICAgICAgU3VkZGVuVGVybWluYXRpb25EaXNhYmxlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IGEyODAxMGVjZmU1YTM2N2FkOWQwYjI5YTIw
MDU2M2EwZjU2MWQ1NjAuLjI3YTczNjQxNmJhMDRjMDUzYzJlNzdkYjJjNTU4MTQ0NDBkMmYwZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCkBAIC00
MCwxNCArNDAsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGhyZWFkR2xvYmFsRGF0YTo6
VGhyZWFkR2xvYmFsRGF0YSgpCi0gICAgOiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQor
ICAgIDogbV9jYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKG1ha2VVbmlxdWU8Q2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKICAgICAsIG1fZXZlbnROYW1lcyhFdmVudE5h
bWVzOjpjcmVhdGUoKSkKLSAgICAsIG1fdGhyZWFkVGltZXJzKHN0ZDo6bWFrZV91bmlxdWU8VGhy
ZWFkVGltZXJzPigpKQotICAgICwgbV9xdWFsaWZpZWROYW1lQ2FjaGUoc3RkOjptYWtlX3VuaXF1
ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCisgICAgLCBtX3RocmVhZFRpbWVycyhtYWtlVW5pcXVl
PFRocmVhZFRpbWVycz4oKSkKKyAgICAsIG1fcXVhbGlmaWVkTmFtZUNhY2hlKG1ha2VVbmlxdWU8
UXVhbGlmaWVkTmFtZUNhY2hlPigpKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1faXNNYWluVGhy
ZWFkKGlzTWFpblRocmVhZCgpKQogI2VuZGlmCi0gICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShz
dGQ6Om1ha2VfdW5pcXVlPElDVUNvbnZlcnRlcldyYXBwZXI+KCkpCisgICAgLCBtX2NhY2hlZENv
bnZlcnRlcklDVShtYWtlVW5pcXVlPElDVUNvbnZlcnRlcldyYXBwZXI+KCkpCiB7CiAgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciB3aWxsIGhhdmUgYmVlbiBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
IGJlZm9yZSBiZWluZyBjYWxsZWQgb24KICAgICAvLyBhbnkgb3RoZXIgdGhyZWFkLCBhbmQgaXMg
b25seSBjYWxsZWQgb25jZSBwZXIgdGhyZWFkIC0gdGhpcyBtYWtlcyB0aGlzIGEgY29udmVuaWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCmluZGV4IDJmODky
ZDZiMTlhYmE0MjMwZTkyNGM3NjE4NzM4ZmM2Y2I0OGY3ZWMuLmU3MGQ0NmQwYjlmMjQwN2Y5MDg1
NDhmYThmMmU5OGM5ZGE0NTYzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQnVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgQXVkaW9CdXM6OkF1ZGlvQnVzKHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBsZW5ndGgsIGJvb2wgYWxsb2NhdGUpCiAgICAgbV9j
aGFubmVscy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAg
ICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVs
PihsZW5ndGgpIDogc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0
aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8gbWFrZVVuaXF1ZTxBdWRpb0No
YW5uZWw+KGxlbmd0aCkgOiBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obnVsbHB0ciwgbGVuZ3Ro
KTsKICAgICAgICAgbV9jaGFubmVscy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShjaGFubmVsKSk7
CiAgICAgfQogCkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBBdWRpb0J1czo6Y29weVdpdGhHYWlu
RnJvbShjb25zdCBBdWRpb0J1cyAmc291cmNlQnVzLCBmbG9hdCogbGFzdE1peEdhaW4sIGYKIAog
ICAgIGlmIChmcmFtZXNUb0RlemlwcGVyKSB7CiAgICAgICAgIGlmICghbV9kZXppcHBlckdhaW5W
YWx1ZXMuZ2V0KCkgfHwgbV9kZXppcHBlckdhaW5WYWx1ZXMtPnNpemUoKSA8IGZyYW1lc1RvRGV6
aXBwZXIpCi0gICAgICAgICAgICBtX2RlemlwcGVyR2FpblZhbHVlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0RlemlwcGVyKTsKKyAgICAgICAgICAgIG1fZGV6
aXBwZXJHYWluVmFsdWVzID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6
aXBwZXIpOwogCiAgICAgICAgIGZsb2F0KiBnYWluVmFsdWVzID0gbV9kZXppcHBlckdhaW5WYWx1
ZXMtPmRhdGEoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lc1RvRGV6
aXBwZXI7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9CdXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKaW5k
ZXggMjE3M2RjOTM4M2U0YTMzYzFiNTkzNDc2NWExZTViMTA3NDZmMDNhMS4uYmJiM2QyYWNkMjJj
NTcyYmM5MjNhNDhiMWY3MGFmODU0YzBjYjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IEFuIEF1ZGlvQnVzIHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIG9uZSBvciBtb3JlIEF1ZGlv
Q2hhbm5lbHMuCiAvLyBUaGUgZGF0YSBsYXlvdXQgaXMgInBsYW5hciIgYXMgb3Bwb3NlZCB0byAi
aW50ZXJsZWF2ZWQiLgogLy8gQW4gQXVkaW9CdXMgd2l0aCBvbmUgY2hhbm5lbCBpcyBtb25vLCBh
biBBdWRpb0J1cyB3aXRoIHR3byBjaGFubmVscyBpcyBzdGVyZW8sIGV0Yy4KLWNsYXNzIEF1ZGlv
QnVzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQnVzPiB7CitjbGFzcyBBdWRp
b0J1cyBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0J1cz4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvQnVzKTsKIHB1YmxpYzoKICAgICBlbnVtIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKaW5kZXggYmJjMTM1
N2EzZDUzZjA1NDhmODg3OGU1ODdkYjdkNmRkMWM0ZmFkOC4uN2I5ODkzZDM4YWM0MTc0NTMxNzQx
Yjc3MjRjNmZmMmFiZDAxZGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9DaGFubmVsLmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAv
LyBBbiBBdWRpb0NoYW5uZWwgcmVwcmVzZW50cyBhIGJ1ZmZlciBvZiBub24taW50ZXJsZWF2ZWQg
ZmxvYXRpbmctcG9pbnQgYXVkaW8gc2FtcGxlcy4KIC8vIFRoZSBQQ00gc2FtcGxlcyBhcmUgbm9y
bWFsbHkgYXNzdW1lZCB0byBiZSBpbiBhIG5vbWluYWwgcmFuZ2UgLTEuMCAtPiArMS4wCi1jbGFz
cyBBdWRpb0NoYW5uZWwgeworY2xhc3MgQXVkaW9DaGFubmVsIGZpbmFsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb0NoYW5uZWwp
OwogcHVibGljOgogICAgIC8vIE1lbW9yeSBjYW4gYmUgZXh0ZXJuYWxseSByZWZlcmVuY2VkLCBv
ciBjYW4gYmUgaW50ZXJuYWxseSBhbGxvY2F0ZWQgd2l0aCBhbiBBdWRpb0Zsb2F0QXJyYXkuCkBA
IC01Niw3ICs1Nyw3IEBAIGNsYXNzIEF1ZGlvQ2hhbm5lbCB7CiAgICAgICAgICwgbV9yYXdQb2lu
dGVyKDApCiAgICAgICAgICwgbV9zaWxlbnQodHJ1ZSkKICAgICB7Ci0gICAgICAgIG1fbWVtQnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CisgICAgICAg
IG1fbWVtQnVmZmVyID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CiAgICAg
fQogCiAgICAgLy8gQSAiYmxhbmsiIGF1ZGlvIGNoYW5uZWwgLS0gbXVzdCBjYWxsIHNldCgpIGJl
Zm9yZSBpdCdzIHVzZWZ1bC4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJ
Rk8uaAppbmRleCA3NWM5YWJkNzQ5NGQzNTgyMmY4MmFjZTdjY2QwZDg1Njg2MTFkN2VhLi4wZjQz
OGRkN2QwZmE1OWZiNjQ0ZDRkZjU3MmY1NTlmZDY2MzA4YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApAQCAtMzMsNyArMzMsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvRklGTyB7CitjbGFzcyBBdWRpb0ZJRk8gZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhIEZJ
Rk8gbGFyZ2UgZW5vdWdoIHRvIGhvbGQgfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxu
dW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4KICAgICBBdWRpb0ZJRk8odW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmluZGV4IGJmYmU5ODNhNTc1YTQ1NGFhYzJiMGMzY2Jl
NDU3NWVmYWY2Yjc4ZDcuLmQ3NDhmYTQxMzg3Mzc5ZGIzOTViZWFlNjVmODgyYmEyNThlOWZjMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKQEAg
LTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gdGhlIEZJRk8gd2lsbCBhc2sg
dGhlIHByb3ZpZGVyIGZvciBtb3JlIGRhdGEgd2hlbiBuZWNlc3NhcnkgdG8gZnVsZmlsbCBhIHJl
cXVlc3QuIENvbnRyYXN0IHRoaXMKIC8vIHdpdGggYSAicHVzaCIgRklGTywgd2hlcmUgdGhlIHNl
bmRlciBwdXNoZXMgZGF0YSB0byB0aGUgRklGTyB3aGljaCB3aWxsIGl0c2VsZiBwdXNoIHRoZSBk
YXRhIHRvCiAvLyB0aGUgcmVjZWl2ZXIgd2hlbiB0aGUgRklGTyBpcyBmdWxsLgotY2xhc3MgQXVk
aW9QdWxsRklGTyB7CitjbGFzcyBBdWRpb1B1bGxGSUZPIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBGSUZPIHRoYXQgZ2V0cyBk
YXRhIGZyb20gfHByb3ZpZGVyfC4gVGhlIEZJRk8gd2lsbCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9s
ZAogICAgIC8vIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVs
c3wgY2hhbm5lbHMuIFRoZSBBdWRpb1NvdXJjZVByb3ZpZGVyIHdpbGwgYmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAppbmRleCA4NjkwNmJh
NTEyNDc1ODY5MmM2ODNlMmJjOTAzODM1MDFlYWI4ZmQ5Li4yODRjMDU0OTQzMjU5MzQ0ZWFjZTMy
NDE4YWRhOWI4MzAzZGEyZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGNvbnN0IGRvdWJsZSBBdWRp
b1Jlc2FtcGxlcjo6TWF4UmF0ZSA9IDguMDsKIEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxl
cigpCiAgICAgOiBtX3JhdGUoMS4wKQogewotICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOworICAgIG1fa2VybmVscy5hcHBl
bmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwogICAgIG1fc291cmNl
QnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCAwLCBmYWxzZSk7CiB9CiAKQEAgLTQ3LDcgKzQ3LDcg
QEAgQXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMpCiAgICAgOiBtX3JhdGUoMS4wKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOworICAgICAgICBtX2tlcm5lbHMu
YXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKIAogICAgIG1f
c291cmNlQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCAwLCBmYWxzZSk7
CiB9CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQXVkaW9SZXNhbXBsZXI6OmNvbmZpZ3VyZUNoYW5u
ZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLy8gRmlyc3QgZGVhbCB3aXRoIGFk
ZGluZyBvciByZW1vdmluZyBrZXJuZWxzLgogICAgIGlmIChudW1iZXJPZkNoYW5uZWxzID4gY3Vy
cmVudFNpemUpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY3VycmVudFNpemU7IGkgPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICAgICAgICAgIG1f
a2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwog
ICAgIH0gZWxzZQogICAgICAgICBtX2tlcm5lbHMucmVzaXplKG51bWJlck9mQ2hhbm5lbHMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaAppbmRl
eCBkMTFmYTkzZWJhYWNiZDhlNTZiOThkYTMzNzVmYWUxNDA2OGUzYmM5Li4yMDE2YmFmZjdjODhk
ZjE4YWY1ZDM1MmMzMDFmNWZmNDM3Njg5ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogLy8gVGhlIGF1ZGlvIHN0cmVhbSBtYXkgYmUgc2luZ2xlIG9yIG11bHRpLWNoYW5u
ZWwuCiAvLyBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0cyB0byBzaW5nbGUtY2hhbm5l
bCAobW9ubykuCiAKLWNsYXNzIEF1ZGlvUmVzYW1wbGVyIHsKK2NsYXNzIEF1ZGlvUmVzYW1wbGVy
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBdWRp
b1Jlc2FtcGxlcigpOwogICAgIEF1ZGlvUmVzYW1wbGVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNh
bXBsZXJLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1w
bGVyS2VybmVsLmgKaW5kZXggOTlkODc3YmI3Y2Q2OGRiYjA1MzY3N2EwOTdjZDRlMGVhYzgzYjc4
Mi4uOGFjMmJhYTQyYzU4N2EzNDg1ZDUzNDAyM2FkZWUyNGY4ODMyNmVmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCkBA
IC0zNCw3ICszNCw5IEBAIGNsYXNzIEF1ZGlvUmVzYW1wbGVyOwogLy8gQXVkaW9SZXNhbXBsZXJL
ZXJuZWwgZG9lcyByZXNhbXBsaW5nIG9uIGEgc2luZ2xlIG1vbm8gY2hhbm5lbC4KIC8vIEl0IHVz
ZXMgYSBzaW1wbGUgbGluZWFyIGludGVycG9sYXRpb24gZm9yIGdvb2QgcGVyZm9ybWFuY2UuCiAK
LWNsYXNzIEF1ZGlvUmVzYW1wbGVyS2VybmVsIHsKK2NsYXNzIEF1ZGlvUmVzYW1wbGVyS2VybmVs
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBdWRpb1Jlc2FtcGxlcktlcm5lbCk7CiBwdWJsaWM6CiAgICAgQXVkaW9SZXNhbXBs
ZXJLZXJuZWwoQXVkaW9SZXNhbXBsZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKaW5kZXggNWMxYmYyYTMxNzM0MmVhM2U1MjkyYTc5N2U4
ZTY2ZTFhOGRhMzk3Yy4uYjVmYjU4MDY0OGY5Y2Y4ZWM0ZjE4NmZhZmE0OGUxM2ZkY2YyZjU3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCkBA
IC01MCw2ICs1MCw3IEBAIGJvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZShib29sIGFj
dGl2ZSkKIAogI2lmICFQTEFURk9STShDT0NPQSkKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogfTsKIAogQXVkaW9TZXNzaW9uOjpBdWRp
b1Nlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24u
aAppbmRleCAxN2RhODFiM2I3NWQ3YTVhYWI4MjE0ODZiN2MxZTMzZjFhOGRmNDY5Li5lNzAwODIy
ZmYxZmVlYmQ3ODI5YWVjNzUwY2NlNDBhNjBiOTI1NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNDQsNyArNDQsOCBAQCBlbnVtIGNsYXNz
IFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3QgewogICAgIExvbmdGb3JtVmlkZW8KIH07CiAK
LWNsYXNzIEF1ZGlvU2Vzc2lvbiB7CitjbGFzcyBBdWRpb1Nlc3Npb24gZmluYWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvU2Vz
c2lvbik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEF1ZGlvU2Vzc2lvbiYg
c2hhcmVkU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQmlxdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaAppbmRl
eCBiYjcyMWEyM2E3ZmNjNzc0YjYwOTNlNGVhOTA4YzYwZTg5MDgxMDdjLi43MTM0OTRjOTE0ZDMz
Nzg2NDNlMjlhODBiYzM5ZTc3MzY2ZGYxODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9CaXF1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9CaXF1YWQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyAgICBs
b3dwYXNzLCBoaWdocGFzcywgc2hlbHZpbmcsIHBhcmFtZXRlcmljLCBub3RjaCwgYWxscGFzcywg
Li4uCiAKIGNsYXNzIEJpcXVhZCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6ICAgCiAgICAgQmlxdWFkKCk7CiAgICAgfkJpcXVhZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQ29uZS5oCmluZGV4IGQ4MWMwNWRjNjhlNmUyZmEyMWQyNDVkZDEzN2I0ZjE3
OGEyMTIwYjQuLmE3YWNhM2E0YzU0ZDI3NGIzYWEzZDQwYWQ5ZDE0M2ViZGZjNDVmY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKQEAgLTM1LDcgKzM1LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAvLyBDb25lIGdhaW4gaXMgZGVmaW5lZCBhY2NvcmRpbmcgdG8gdGhlIE9w
ZW5BTCBzcGVjaWZpY2F0aW9uCiAKLWNsYXNzIENvbmVFZmZlY3QgeworY2xhc3MgQ29uZUVmZmVj
dCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29u
ZUVmZmVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
ZW5vcm1hbERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1h
bERpc2FibGVyLmgKaW5kZXggNmU5ZjRlMDFkYWU2ZDQ1ZDAyMTExZDVkNWIxMjhlZjM4ODZiMjI0
Mi4uZTBiM2VmZDgwZjc4ZmZhYTMwNjU3MzMyMzE0NzAyZGM3M2EyZjAwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaApAQCAtNDEsNyAr
NDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfREVOT1JN
QUwKLWNsYXNzIERlbm9ybWFsRGlzYWJsZXIgeworY2xhc3MgRGVub3JtYWxEaXNhYmxlciBmaW5h
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVub3JtYWxE
aXNhYmxlcigpCiAgICAgICAgICAgICA6IG1fc2F2ZWRDU1IoMCkKQEAgLTEwMyw3ICsxMDQsOCBA
QCBjbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKIAogI2Vsc2UKIC8vIEZJWE1FOiBhZGQgaW1wbGVt
ZW50YXRpb25zIGZvciBvdGhlciBhcmNoaXRlY3R1cmVzIGFuZCBjb21waWxlcnMKLWNsYXNzIERl
bm9ybWFsRGlzYWJsZXIgeworY2xhc3MgRGVub3JtYWxEaXNhYmxlciBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVub3JtYWxEaXNhYmxlcigpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5o
CmluZGV4IDZmMmZhZjQwZTYxYmY2ZTMyYTRmNDk5OTc2NWM5ZTFiYjUxOTQxYTguLjc4MzA4Y2Ux
OTk5OTliYjFkNjgwYmIzYjdlMjNhZTA0Y2Q3Y2IyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCkBAIC0zMyw3ICszMyw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGlyZWN0Q29udm9sdmVyIHsKK2NsYXNzIERpcmVj
dENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGlyZWN0Q29udm9sdmVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBEaXJlY3RDb252b2x2ZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKaW5kZXggOTFkMzQ5Yjk3ZTYyNzczMzJkNzYzMWE4
ODQ0MjZiMTY2OGRjZjI4My4uYjNlYjc3OTczY2ZhNDc5NWYxNTA1MzY5YjdlNGIyZjg5ZmZiNmM0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCkBAIC00MCw3ICs0
MCw4IEBAIGVudW0gY2xhc3MgRGlzdGFuY2VNb2RlbFR5cGUgewogICAgIEV4cG9uZW50aWFsCiB9
OwogCi1jbGFzcyBEaXN0YW5jZUVmZmVjdCB7CitjbGFzcyBEaXN0YW5jZUVmZmVjdCBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGlzdGFuY2VFZmZl
Y3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNh
bXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKaW5k
ZXggZjRiNDIwMTdlZTc2MjdjYWQ2NTZiZmY0NTdhYWU5ODk0ODAxNGJmMi4uOTU3MGI4OTFjOTdm
ZmE5MTFhMDExMzQwMDNiNGZkY2I1Zjc2ZjkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9Eb3duU2FtcGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gRG93blNhbXBsZXIgZG93bi1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEg
ZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBEb3duU2FtcGxlciB7CitjbGFzcyBEb3duU2FtcGxlciBm
aW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgRG93blNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IGIyNTUx
OGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIuLjUxMzc5OWE4NTEyZjQyN2I0ZTRi
OGQ5YjI5NDVhOTRkMzQ5MTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMjcxLDggKzI3MSw4IEBAIHZvaWQg
RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMpCiAgICAgbV9wcmVGaWx0ZXJQYWNrcy5jbGVhcigpOwogICAgIG1fcG9zdEZpbHRl
clBhY2tzLmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hh
bm5lbHM7ICsraSkgewotICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwotICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAgICAg
ICAgbV9wcmVGaWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0
PigpKTsKKyAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1Bv
bGVGaWx0ZXJQYWNrND4oKSk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VDaGFubmVscyA9IG1ha2VV
bmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRleCBlZjhj
MDkzYTFiOTY1MzIyOWQ3OTlmMWE2YjI5MmFmYWRiZGFiYWQxLi44MjJjOTMxZjM4Y2UwZWM4ZGM2
MjgyZjBmOGMzNDNhZjY3N2Y5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtNDMsOCArNDMsOSBAQCBjbGFzcyBBdWRp
b0J1czsKIC8vIG9mIHRoZSBsb3VkZXN0IHBhcnRzIG9mIHRoZSBzaWduYWwgYW5kIHJhaXNlcyB0
aGUgdm9sdW1lIG9mIHRoZSBzb2Z0ZXN0IHBhcnRzLAogLy8gbWFraW5nIHRoZSBzb3VuZCByaWNo
ZXIsIGZ1bGxlciwgYW5kIG1vcmUgY29udHJvbGxlZC4KIAotY2xhc3MgRHluYW1pY3NDb21wcmVz
c29yIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3NvciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHluYW1pY3NDb21wcmVzc29y
KTsKIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgUGFyYW1UaHJlc2hvbGQsCkBAIC05NSw5
ICs5NiwxMCBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgewogICAgIGZsb2F0IG1fbGFzdEFu
Y2hvcjsKICAgICBmbG9hdCBtX2xhc3RGaWx0ZXJTdGFnZUdhaW47CiAKLSAgICB0eXBlZGVmIHN0
cnVjdCB7CisgICAgc3RydWN0IFplcm9Qb2xlRmlsdGVyUGFjazQgeworICAgICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFplcm9Qb2xlIGZpbHRlcnNbNF07Ci0g
ICAgfSBaZXJvUG9sZUZpbHRlclBhY2s0OworICAgIH07CiAKICAgICAvLyBQZXItY2hhbm5lbCBl
bXBoYXNpcyBmaWx0ZXJzLgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0
ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCA3MzRi
MDY2Y2RhNDhiYzJjN2E3OWVkZjUwN2QwNmMwNTZjNzBhMDkwLi5hZmVkYjdiNGNkMGE1YTYxZDFh
OWZlMjc4YzM0MDM4M2Y5OGUyMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hhbm5lbHMo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKIAogICAgIG1fcHJlRGVsYXlCdWZmZXJzLmNsZWFy
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkK
LSAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9G
bG9hdEFycmF5PihNYXhQcmVEZWxheUZyYW1lcykpOworICAgICAgICBtX3ByZURlbGF5QnVmZmVy
cy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVzKSk7
CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXRQcmVEZWxheVRpbWUoZmxv
YXQgcHJlRGVsYXlUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAppbmRleCBiN2JjZWEyZmFmZDg5OTZjYTUy
OGIwYjVkYWI0OWNiODg5NThkY2M0Li5lMTFmNDdiYWFmMGJjNmM1ZDBjYTdlM2Q3MjAwODI2Mzlk
MjcwYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaApAQCAtMzUsNyArMzUsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCB7CitjbGFzcyBEeW5h
bWljc0NvbXByZXNzb3JLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IDhjZjU5OTE3OTVm
M2YxZjYzZTI4MWQ5ZTE2YWNhZjNkN2E1N2E1ZGEuLjRlNDYzYjEyODFhN2ZhM2JiMzk3YTZiMDY1
Y2UwMzNjY2JmOWFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0VxdWFsUG93ZXJQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9F
cXVhbFBvd2VyUGFubmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBDb21tb24gdHlwZSBvZiBzdGVyZW8gcGFubmVyIGFzIGZvdW5kIGluIG5vcm1hbCBhdWRp
byBtaXhpbmcgZXF1aXBtZW50LgogCi1jbGFzcyBFcXVhbFBvd2VyUGFubmVyIDogcHVibGljIFBh
bm5lciB7CitjbGFzcyBFcXVhbFBvd2VyUGFubmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgRXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAppbmRleCA0
NTQyYjZmYjI1Nzg1NDk1YWIyMDZhYmMzYzkwYzc1YmMyZjE2ZWEwLi4zODYyMjdmMTk3MDRhZmQ3
OTJlMzY2MjJiZGRhOWMxYWNlYTc1MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRDb252b2x2ZXIuaApAQCAtMzQsNyArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEZGVENvbnZvbHZlciB7CitjbGFzcyBGRlRDb252b2x2ZXIgZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZG
VENvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gZmZ0U2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2Yg
dHdvCiAgICAgRkZUQ29udm9sdmVyKHNpemVfdCBmZnRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCA0YzAyYjY5OTJiMDYzODNiODAzNTczNzg3
OGRiZjY1YTI2ZmI5YzMxLi40YzE1MjA2N2Q0NGFjNGI4NTQxOTIxYWFlZDI5NTk4MmI5NjkzNzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHZvaWQgRkZURnJhbWU6OmRvUGFkZGVkRkZUKGNvbnN0IGZsb2F0KiBkYXRhLCBz
aXplX3QgZGF0YVNpemUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGRlRGcmFtZT4gRkZURnJhbWU6OmNy
ZWF0ZUludGVycG9sYXRlZEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZGVEZy
YW1lJiBmcmFtZTIsIGRvdWJsZSB4KQogewotICAgIGF1dG8gbmV3RnJhbWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0g
bWFrZVVuaXF1ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CiAKICAgICBuZXdGcmFtZS0+
aW50ZXJwb2xhdGVGcmVxdWVuY3lDb21wb25lbnRzKGZyYW1lMSwgZnJhbWUyLCB4KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAppbmRleCA3NTdiY2Zh
NGI2YWVmZDcwZWJhZTg2NTQ4NzI1ZmE0MDYyOWM2ZTllLi5hNTE5MzQ5ODE1MDQ1MjZkNmZjNjRk
NDViOTc5MGIzNzgxMDNhNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEhSVEZLZXJuZWw7CiAKLWNsYXNzIEhSVEZEYXRhYmFzZSB7CitjbGFzcyBIUlRGRGF0YWJh
c2UgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEhSVEZEYXRhYmFzZSk7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBmNDViZTg0N2Nl
NzEwZGNlZGEyZTBlYzEwNmI3NWJmMjY4NTc4OWNkLi5hNDc0YTcwYzQwODUyYWUyZTFmOWY1OGE0
OWEwMDAzNjE1ODBiMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIUlRGRGF0
YWJhc2VMb2FkZXI6OmxvYWQoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlm
ICghbV9ocnRmRGF0YWJhc2UuZ2V0KCkpIHsKICAgICAgICAgLy8gTG9hZCB0aGUgZGVmYXVsdCBI
UlRGIGRhdGFiYXNlLgotICAgICAgICBtX2hydGZEYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8
SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CisgICAgICAgIG1faHJ0ZkRhdGFi
YXNlID0gbWFrZVVuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZF
bGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlv
bi5jcHAKaW5kZXggYzg0YWI5NzUxYTE0NTk4OWEwMzc3ZmFkMWY0YTc1ZThmMTdlMmIyNC4uNjA1
MjMyY2QxYTk5YzkyMzNkOWFkMTA0OWJhMzA3ZTIxNzczOGZjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTI0NCw4ICsyNDQsOCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9y
U3ViamVjdChjb25zdCBTdHJpbmcmIHN1YgogICAgIGlmICghaXNFbGV2YXRpb25Hb29kKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0
ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0g
ICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51
bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8
SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxM
aXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7
CiAKICAgICAvLyBMb2FkIGNvbnZvbHV0aW9uIGtlcm5lbHMgZnJvbSBIUlRGIGZpbGVzLgogICAg
IGludCBpbnRlcnBvbGF0ZWRJbmRleCA9IDA7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29u
c3QgU3RyaW5nJiBzdWIKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShr
ZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlz
dFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVs
ZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZF
bGV2YXRpb24qIGhydGZFbGV2YXRpb24xLCBIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMiwg
ZmxvYXQgeCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAgLTI4NSw4ICsyODUsOCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5n
U2xpY2VzKEhSVEZFbAogICAgICAgICAKICAgICBBU1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEuMCk7
CiAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5l
bExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0
ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Cisg
ICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9m
VG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktl
cm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICBIUlRGS2VybmVsTGlzdCog
a2VybmVsTGlzdEwxID0gaHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RMKCk7CiAgICAgSFJURktl
cm5lbExpc3QqIGtlcm5lbExpc3RSMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0UigpOwpA
QCAtMzAyLDcgKzMwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxl
dmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgLy8gSW50ZXJw
b2xhdGUgZWxldmF0aW9uIGFuZ2xlLgogICAgIGRvdWJsZSBhbmdsZSA9ICgxLjAgLSB4KSAqIGhy
dGZFbGV2YXRpb24xLT5lbGV2YXRpb25BbmdsZSgpICsgeCAqIGhydGZFbGV2YXRpb24yLT5lbGV2
YXRpb25BbmdsZSgpOwogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2
YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGlj
X2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhS
VEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwg
c3RhdGljX2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOwogfQogCiB2b2lkIEhSVEZFbGV2
YXRpb246OmdldEtlcm5lbHNGcm9tQXppbXV0aChkb3VibGUgYXppbXV0aEJsZW5kLCB1bnNpZ25l
ZCBhemltdXRoSW5kZXgsIEhSVEZLZXJuZWwqICZrZXJuZWxMLCBIUlRGS2VybmVsKiAma2VybmVs
UiwgZG91YmxlJiBmcmFtZURlbGF5TCwgZG91YmxlJiBmcmFtZURlbGF5UikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAppbmRleCAyYTk1OTA0NTUyMTg0
M2ExNTE2MmVjYzhlMzIxMTczOWUwNzA1M2Y3Li5lZjc1MmMzYzAxYmUzOWVjZGI3ZWY2NGRmNDM5
MDkyNjZkNmVkOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVs
ZXZhdGlvbi5oCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gSFJU
RkVsZXZhdGlvbiBjb250YWlucyBhbGwgb2YgdGhlIEhSVEZLZXJuZWxzIChvbmUgbGVmdCBlYXIg
YW5kIG9uZSByaWdodCBlYXIgcGVyIGF6aW11dGggYW5nbGUpIGZvciBhIHBhcnRpY3VsYXIgZWxl
dmF0aW9uLgogCi1jbGFzcyBIUlRGRWxldmF0aW9uIHsKK2NsYXNzIEhSVEZFbGV2YXRpb24gZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEhSVEZFbGV2YXRpb24pOwogcHVibGljOgogICAgIEhSVEZFbGV2YXRpb24oc3RkOjp1bmlx
dWVfcHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0TCwgc3RkOjp1bmlxdWVfcHRyPEhSVEZL
ZXJuZWxMaXN0PiBrZXJuZWxMaXN0UiwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKaW5kZXggZWRm
NmM2MGQwZGI4MTRkOTRjMGY3MWI2MzA2ZTQzODI2NTNhYTRjNy4uMzc1NTIxNmFlMjg3YTcxYzc0
MjkyOWE1M2M5NTkwOTZkYjFkYmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURktlcm5lbC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSFJURktlcm5lbDo6SFJURktlcm5l
bChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mZnRGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8
RkZURnJhbWU+KGZmdFNpemUpOworICAgIG1fZmZ0RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1l
PihmZnRTaXplKTsKICAgICBtX2ZmdEZyYW1lLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2Us
IHRydW5jYXRlZFJlc3BvbnNlTGVuZ3RoKTsKIH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHNpemVf
dCBIUlRGS2VybmVsOjpmZnRTaXplKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQ2hh
bm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKCkKIHsKLSAgICBhdXRvIGNo
YW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKKyAgICBh
dXRvIGNoYW5uZWwgPSBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKICAgICBG
RlRGcmFtZSBmZnRGcmFtZSgqbV9mZnRGcmFtZSk7CiAKICAgICAvLyBBZGQgbGVhZGluZyBkZWxh
eSBiYWNrIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RlBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCmlu
ZGV4IGJmNWVlZmFhNWU0YzZkMmJmMTdhOTkwMDMwNzQxNjVjNmU0MzNhZDcuLmNhYWE0NDFmMWQx
NGVhMzZmNWU5NjhhZDhhNzdkMGI3YTYwZGQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBIUlRGUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBIUlRGUGFu
bmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSFJURlBh
bm5lcihmbG9hdCBzYW1wbGVSYXRlLCBIUlRGRGF0YWJhc2VMb2FkZXIqKTsKICAgICB2aXJ0dWFs
IH5IUlRGUGFubmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAppbmRleCBiYmJmMTY0NDYyMDc2MzllMzVjZjc5
NTY0ODI4MjYzZDNlOTM3M2FlLi41YmY5YWI5NWQwMTU3NTAwODE1ZDYxMzFhYjFkODk3NDFiZTFm
ZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5u
ZWxSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRp
Q2hhbm5lbFJlc2FtcGxlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgTXVsdGlDaGFubmVsUmVzYW1w
bGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBu
dW1iZXIKIHsKICAgICAvLyBDcmVhdGUgZWFjaCBjaGFubmVsJ3MgcmVzYW1wbGVyLgogICAgIGZv
ciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFu
bmVsczsgKytjaGFubmVsSW5kZXgpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOworICAgICAgICBtX2tlcm5lbHMu
YXBwZW5kKG1ha2VVbmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKIH0KIAogdm9p
ZCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogcHJv
dmlkZXIsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2Ft
cGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmgKaW5kZXggNDQxNzU0NzYwNTgzZDI4MDM0YTQ1YjNiZDhhNjE4OGQ0NjVhMmYzNi4uNjE0
NmU5MjVjMDZhMmRkYTc2Y2I0MTJmMGNjMWUwYTI0NmFjODBkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKQEAgLTM3
LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKICAgICAK
LWNsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciB7CitjbGFzcyBNdWx0aUNoYW5uZWxSZXNhbXBs
ZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAg
IGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5l
ci5jcHAKaW5kZXggYWM3Mjg2YWM5YTA2MGI3NTM0Y2IyZWRlOTIxZDZjYmQ3N2E5N2E4OC4uNDBi
OWQwMWRjMTg0Yjk2ZDVkZjNhYjliN2Y0MDk0NjNhOTc4MzRkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCkBAIC00MywxMSArNDMsMTEgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhbm5lcj4gUGFubmVyOjpjcmVhdGUoUGFubmluZ01vZGVsVHlwZSBtb2RlbCwgZmxvYXQg
c2FtcGxlUmF0ZSwKIAogICAgIHN3aXRjaCAobW9kZWwpIHsKICAgICBjYXNlIFBhbm5pbmdNb2Rl
bFR5cGU6OkVxdWFscG93ZXI6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8RXF1
YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CisgICAgICAgIHBhbm5lciA9IG1ha2VVbmlxdWU8
RXF1YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKKyAgICAgICAgcGFu
bmVyID0gbWFrZVVuaXF1ZTxIUlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRlcik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IGUwMjM5NGFhNWIxNDlj
ZDE1OTY5MTJhMjU2ODFmZjVlYTQ0YWQ4ZDIuLmM4YmQ2NGE0MWJmNjEyZTg5ZTNjMjE0ZmEyMmRj
YzU5OTQ4ZTU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNs
aWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lv
bj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4o
Y2xpZW50KTsKIH0KIAogUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFTZXNzaW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiLmNwcAppbmRleCAzMDQzZmM4YTA0ZGYwZDc3YzEwYWEwMzc5YmQyNmEz
OWQ0NmNlNmJhLi44YTY3NTVjNTRhZDAwYTNhODEwMTg3NDIxNjJjY2QwNzRkZTEwZTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIFJldmVyYjo6aW5pdGlhbGl6ZShBdWRpb0J1cyogaW1wdWxzZVJlc3BvbnNlQnVmZmVy
LCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
UmVzcG9uc2VDaGFubmVsczsgKytpKSB7CiAgICAgICAgIEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCA9
IGltcHVsc2VSZXNwb25zZUJ1ZmZlci0+Y2hhbm5lbChpKTsKIAotICAgICAgICBtX2NvbnZvbHZl
cnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5k
ZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3Jv
dW5kVGhyZWFkcykpOworICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5kKG1ha2VVbmlxdWU8UmV2
ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZv
bHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcykpOwogCiAgICAgICAgIGNvbnZv
bHZlclJlbmRlclBoYXNlICs9IHJlbmRlclNsaWNlU2l6ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oCmluZGV4IDNlMjU3NmIzNTc1N2RiYTI0NzBjOGViN2RhM2Mx
N2JlZWJiZmRjZWQuLjIzNGUzMWRhZWJiZDRkZGFhMzZhMWU5MDUzMTFlYjk5MjJmYWE2N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIEF1ZGlvQnVzOwogICAgIAogLy8gTXVsdGktY2hhbm5lbCBjb252b2x1dGlvbiByZXZlcmIg
d2l0aCBjaGFubmVsIG1hdHJpeGluZyAtIG9uZSBvciBtb3JlIFJldmVyYkNvbnZvbHZlciBvYmpl
Y3RzIGFyZSB1c2VkIGludGVybmFsbHkuCiAKLWNsYXNzIFJldmVyYiB7CitjbGFzcyBSZXZlcmIg
ZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0g
eyBNYXhGcmFtZVNpemUgPSAyNTYgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKaW5kZXggNTEyYjZhZGUzNDFh
Mjg1Njk3MmVlM2Y3YmNiMjExNjZiYjcyMWExZi4uYTYyODM1ZjljMGQ3ZDc0M2M5ZTkyN2NlZGUy
ZDZhMWRhNDU1ODQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKQEAgLTM2LDcgKzM2LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIGlzIGEgY2lyY3VsYXIg
ZGVsYXkgYnVmZmVyIHdpdGggb25lIGNsaWVudCByZWFkaW5nIGZyb20gaXQgYW5kIG11bHRpcGxl
IGNsaWVudHMKIC8vIHdyaXRpbmcvYWNjdW11bGF0aW5nIHRvIGl0IGF0IGRpZmZlcmVudCBkZWxh
eSBvZmZzZXRzIGZyb20gdGhlIHJlYWQgcG9zaXRpb24uICBUaGUgcmVhZCBvcGVyYXRpb24gd2ls
bCB6ZXJvIHRoZSBtZW1vcnkKIC8vIGp1c3QgcmVhZCBmcm9tIHRoZSBidWZmZXIsIHNvIGl0IHdp
bGwgYmUgcmVhZHkgZm9yIGFjY3VtdWxhdGlvbiB0aGUgbmV4dCB0aW1lIGFyb3VuZC4KLWNsYXNz
IFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciB7CitjbGFzcyBSZXZlcmJBY2N1bXVsYXRpb25CdWZm
ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXgg
MTQ1ZGY4MWUyYTZiYTJjMmRhYTliYjQxZTZiNWNhYmFmMzg1ZjkxYy4uYTljOTM1YzFhMjg1YWIx
MzYyZDhmZjFkZjhjZWJhNWE3ZTVhYTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFJldmVyYkNv
bnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBz
aXplX3QgcmVuZGVyU2xpCiAKICAgICAgICAgYm9vbCB1c2VEaXJlY3RDb252b2x2ZXIgPSAhc3Rh
Z2VPZmZzZXQ7CiAKLSAgICAgICAgYXV0byBzdGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJi
Q29udm9sdmVyU3RhZ2U+KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZlcmJUb3Rh
bExhdGVuY3ksIHN0YWdlT2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBoYXNlLCBy
ZW5kZXJTbGljZVNpemUsICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVy
KTsKKyAgICAgICAgYXV0byBzdGFnZSA9IG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+
KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZlcmJUb3RhbExhdGVuY3ksIHN0YWdl
T2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBoYXNlLCByZW5kZXJTbGljZVNpemUs
ICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVyKTsKIAogICAgICAgICBi
b29sIGlzQmFja2dyb3VuZFN0YWdlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKaW5kZXggNWI4MTllMWEzZTZmNGZiMWY4ZGIw
YzU5Njk3MjYyYWFjMDljNmJkZS4uMzIwMGI0NWVhOGRmN2MyMWNlNmZhMzdlMDhiYjI3OTFmOGFl
NWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyLmgKQEAgLTQzLDggKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRp
b0NoYW5uZWw7CiAKLWNsYXNzIFJldmVyYkNvbnZvbHZlciB7CitjbGFzcyBSZXZlcmJDb252b2x2
ZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJldmVyYkNvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gbWF4RkZUU2l6ZSBj
YW4gYmUgYWRqdXN0ZWQgKGZyb20gc2F5IDIwNDggdG8gMzI3NjgpIGRlcGVuZGluZyBvbiBob3cg
bXVjaCBwcmVjaXNpb24gaXMgbmVjZXNzYXJ5LgogICAgIC8vIEZvciBjZXJ0YWluIHR3ZWFreSBk
ZS1jb252b2x2aW5nIGFwcGxpY2F0aW9ucyB0aGUgcGhhc2UgZXJyb3JzIGFkZCB1cCBxdWlja2x5
IGFuZCBsZWFkIHRvIG5vbi1zZW5zaWNhbCByZXN1bHRzIHdpdGgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAppbmRleCAw
ZmRlNDIxYWYyZjgyZmQ0ODc0ZDk0ZjZhZjFkNjM0NzIzOWM2NTZlLi40ZmY5NTNiMjYwNDkxN2Qz
NDUyMDM5NDA1YjY1ZGUyYmQ1YTFlYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCkBAIC01NSwxNiArNTUsMTYg
QEAgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKGNvbnN0IGZsb2F0
KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCwKICAgICBBU1NFUlQoYWNjdW11bGF0aW9uQnVmZmVy
KTsKIAogICAgIGlmICghbV9kaXJlY3RNb2RlKSB7Ci0gICAgICAgIG1fZmZ0S2VybmVsID0gc3Rk
OjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0S2VybmVsID0g
bWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CiAgICAgICAgIG1fZmZ0S2VybmVsLT5kb1Bh
ZGRlZEZGVChpbXB1bHNlUmVzcG9uc2UgKyBzdGFnZU9mZnNldCwgc3RhZ2VMZW5ndGgpOwotICAg
ICAgICBtX2ZmdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RkZUQ29udm9sdmVyPihmZnRT
aXplKTsKKyAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBtYWtlVW5pcXVlPEZGVENvbnZvbHZlcj4o
ZmZ0U2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFzdGFnZU9mZnNldCk7CiAg
ICAgICAgIEFTU0VSVChzdGFnZUxlbmd0aCA8PSBmZnRTaXplIC8gMik7CiAKLSAgICAgICAgbV9k
aXJlY3RLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAv
IDIpOworICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5
PihmZnRTaXplIC8gMik7CiAgICAgICAgIG1fZGlyZWN0S2VybmVsLT5jb3B5VG9SYW5nZShpbXB1
bHNlUmVzcG9uc2UsIDAsIHN0YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9kaXJlY3RDb252b2x2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERpcmVjdENvbnZvbHZlcj4ocmVuZGVyU2xpY2VTaXplKTsKKyAg
ICAgICAgbV9kaXJlY3RDb252b2x2ZXIgPSBtYWtlVW5pcXVlPERpcmVjdENvbnZvbHZlcj4ocmVu
ZGVyU2xpY2VTaXplKTsKICAgICB9CiAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYWxsb2NhdGUocmVu
ZGVyU2xpY2VTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlclN0YWdlLmgKaW5kZXggYTA0OTA5NzAzNDBhYjNiMzM2MDBiMDg5ZTU5
ODQ3NGZiM2Q0NTVlNi4uM2MwM2JlMzQxYjNiN2Q2NDYyMWRjODAzODE2NjkzNjBmNGRiNGM5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERpcmVjdENvbnZvbHZlcjsKICAgICAK
IC8vIEEgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgcmVwcmVzZW50cyB0aGUgY29udm9sdXRpb24gYXNz
b2NpYXRlZCB3aXRoIGEgc3ViLXNlY3Rpb24gb2YgYSBsYXJnZSBpbXB1bHNlIHJlc3BvbnNlLgog
Ly8gSXQgaW5jb3Jwb3JhdGVzIGEgZGVsYXkgbGluZSB0byBhY2NvdW50IGZvciB0aGUgb2Zmc2V0
IG9mIHRoZSBzdWItc2VjdGlvbiB3aXRoaW4gdGhlIGxhcmdlciBpbXB1bHNlIHJlc3BvbnNlLgot
Y2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgeworY2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2Ug
ZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIHJl
bmRlclBoYXNlIGlzIHVzZWZ1bCB0byBrbm93IHNvIHRoYXQgd2UgY2FuIG1hbmlwdWxhdGUgdGhl
IHByZSB2ZXJzdXMgcG9zdCBkZWxheSBzbyB0aGF0IHN0YWdlcyB3aWxsIHBlcmZvcm0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCmluZGV4
IGJiMDZlNGVlZDYzM2YwZTdjNjgyZTIwZTRlNmE1NzJhYTFmYWE5NjYuLmFmOWVkMDBkNzMzZTg0
MmI2ZWQzYTY0NzQ4NTQyMGQzYzc2Nzc1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaApAQCAtMzQsNyArMzQsOCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAvLyBSZXZlcmJJbnB1dEJ1ZmZlciBpcyB1c2VkIHRvIGJ1ZmZlciBp
bnB1dCBzYW1wbGVzIGZvciBkZWZlcnJlZCBwcm9jZXNzaW5nIGJ5IHRoZSBiYWNrZ3JvdW5kIHRo
cmVhZHMuCi1jbGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciB7CitjbGFzcyBSZXZlcmJJbnB1dEJ1ZmZl
ciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgUmV2ZXJiSW5wdXRCdWZmZXIoc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAppbmRleCAyZmNkODlmN2VjYTM3NTg1
ODYzMWE5YjI3NjVhMTBkMjAxYjM0MWM3Li5jMTMyZjVkOTc2MmM3NTY2YjIzMjVjMDY0YjI4ZGU4
YjZlMzkwMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5j
UmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2Ft
cGxlci5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gU2luY1Jl
c2FtcGxlciBpcyBhIGhpZ2gtcXVhbGl0eSBzYW1wbGUtcmF0ZSBjb252ZXJ0ZXIuCiAKLWNsYXNz
IFNpbmNSZXNhbXBsZXIgeworY2xhc3MgU2luY1Jlc2FtcGxlciBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAgLy8gc2NhbGVGYWN0b3IgPT0gc291
cmNlU2FtcGxlUmF0ZSAvIGRlc3RpbmF0aW9uU2FtcGxlUmF0ZQogICAgIC8vIGtlcm5lbFNpemUg
Y2FuIGJlIGFkanVzdGVkIGZvciBxdWFsaXR5IChoaWdoZXIgaXMgYmV0dGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaAppbmRleCAyNjZiY2FmOTgwZDcyNmZhMmY2
MzdjZmU5M2E1ZDRjMzhiMjRlZTA2Li42NzVlZTRhZDBjNDQ2N2NkMWRkNmQxZDUxNjExZTc3Yjk4
YzRjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaApAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVwU2FtcGxlciB1cC1zYW1w
bGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBVcFNhbXBs
ZXIgeworY2xhc3MgVXBTYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVcFNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCmluZGV4IDgzMWRlOTA5
M2IwMDU2MTZiNGJkNzdlYTdiMDc3OGMzN2RhYTdiNmUuLjAyZmZhY2Q1ZWFjYTdjZTI3NTg5MmJl
OGQ2NDM5NGM3MzNkYzdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1plcm9Qb2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1Bv
bGUuaApAQCAtMzMsNyArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFplcm9Qb2xl
IGlzIGEgc2ltcGxlIGZpbHRlciB3aXRoIG9uZSB6ZXJvIGFuZCBvbmUgcG9sZS4KIAotY2xhc3Mg
WmVyb1BvbGUgeworY2xhc3MgWmVyb1BvbGUgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFplcm9Qb2xlKCkKICAgICAgICAgOiBtX3plcm8oMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9C
dWZmZXJMaXN0LmgKaW5kZXggODZiNjVhMjI1M2FmMWFlYjJhMWNhOWNhYTM2Njc4NmNkN2Q2NTUy
MC4uNzZiNWJjNzUxZDYwNThmMTg3NzFiYTk1NTJhYWM0NmM2ZTJhZDZmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJM
aXN0LmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uOwogCiBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3QgOiBwdWJsaWMg
UGxhdGZvcm1BdWRpb0RhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgdWludDMyX3Qgc2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IDViZjhmZGE2YjI5MTJiMThmMTE5MGRjYmU3
MDgyYmY2ODRiZWU5OGYuLjFhNTQ5NWZkNzY0ZDljM2NjNmVkYjU4MWZhNDgwZWFlYWQxNDU5YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246
OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
JXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBz
YW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246
OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggOGFmODc3ZWMyYzRj
YTBhYmQzMDc0ODM1ZjU0YjM0YWViZjA0MzNhMi4uNGJkZTdlNDFlMmI2NDM3Y2QwZmY3MjVlNGQw
NzlkNjhmODllN2RjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAtODAsNyArODAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1
ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIp
CiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVm
KSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVS
YXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Np
b25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9u
SU9TLm1tCmluZGV4IGRjNmM4YmNjZTM2OWQwNmFlZGM4ZmQzMzNjNzM4YzBiZTk1NzVkZDQuLjYz
OTgyNDBiYmQ4ZDk2NzMwMmRmN2U5ZWNmZjQwNzUwMmRhNmUyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtNTks
NiArNTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKEF1ZGlvU2Vzc2lvbjo6
Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogI2VuZGlmCiAKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEF1ZGlvU2Vz
c2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKik7CiAgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5
cGUgbV9jYXRlZ29yeU92ZXJyaWRlOwpAQCAtNzEsNyArNzIsNyBAQCBBdWRpb1Nlc3Npb25Qcml2
YXRlOjpBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiopCiB9CiAKIEF1ZGlvU2Vzc2lv
bjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
U2Vzc2lvblByaXZhdGU+KHRoaXMpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9T
ZXNzaW9uUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCA3NjRh
MzQ3Zjk4MjllMWU4NDc1YmQyZWExMjgwYWExNzUwMjZlY2ZjLi45ZmU2NGJhYWE0Nzg0ZmVjZGFi
M2Q2ZGRiNWUyNzgzODFlMWUwNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpj
cmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1
LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ss
IHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBs
ZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggNzdkNDMxNjU2Njk5MGU5MDFiOTIwYmY3
NzhkOTY5ZTlmMThmMTg4YS4uNDFhZmUzOWYyMzJhZTU4ODA4NjBmMDg0ZDU1NmNiNGE1ZDhhZTI1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgT1NTdGF0dXMgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGYKIHsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAot
ICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihmb3JtYXQpOworICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOwogICAgIGlmIChtX291dHB1dERlc2Ny
aXB0aW9uKQogICAgICAgICByZXR1cm4gc2V0dXBDb252ZXJ0ZXIoKTsKIApAQCAtMTIwLDkgKzEy
MCw5IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYKICAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0
aW9uKTsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAotICAgIG1fb3V0
cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4oZm9ybWF0KTsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKCFtX3JpbmdCdWZmZXIpCi0gICAg
ICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAg
ICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKIAogICAgIG1f
cmluZ0J1ZmZlci0+YWxsb2NhdGUoZm9ybWF0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbWF4aW11
bVNhbXBsZUNvdW50KSk7CiAgICAgbV9zY3JhdGNoQnVmZmVyID0gQXVkaW9TYW1wbGVCdWZmZXJM
aXN0OjpjcmVhdGUobV9vdXRwdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24oKSwgbV9t
YXhpbXVtU2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAppbmRleCA3ZjZlZjlkMzNkYjFmYjQ3ZTdjZjE0
YzU5MDRhNDYxMTJiMTUyMjMyLi5jYzA0ZjBiZTMwOTc0OThiODM2NmU5MjQyMDczZWNlM2UxOTc1
YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
ZXNzaW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TZXNzaW9uTWFjLmNwcApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2
YXRlIHsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0
ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KGlzTXV0ZWQoKSkpCisgICAg
OiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FS
aW5nQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVm
ZmVyLmgKaW5kZXggMThhMjZhYjZkYzVjOGRkMDEyNTJkYjA2NDZkNGY1YjliNDdiNmZmNS4uNTE0
ZmY4NmY5ZDJjZGRhNDVlYTRmYTE2MjZmNDA5N2Q2M2E1MTEyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaApAQCAtNDcsNiArNDcsNyBA
QCBjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKIH07CiAKIGNsYXNzIENBUmluZ0J1ZmZlclN0
b3JhZ2VWZWN0b3IgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgfkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3Io
KSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRGVjb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2Rl
ckNGLmNwcAppbmRleCBiOTgwM2JmYTAyMzI0MzU3YzBkZmUwNDczMTNkMmMzZWMzMDRjYjkyLi43
YTQ3ZjU2MDhiYmI2ZGU5ZDM3NzNiMTdlOThlNDc2NGEyNDIyMmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWRE
ZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckNGPihkYXRhLCBzaXplKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJDRj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtl
eWVkRGVjb2RlckNGOjpLZXllZERlY29kZXJDRihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApp
bmRleCAxYTYyN2VhMDBiOTJjYmFhNmNmN2MzNTVkNWU0NDVlYzQ4NjFhNDEyLi40NDczZWMyOGQw
NGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJDRj4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJDRj4oKTsKIH0KIAogc3RhdGlj
IFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVEaWN0aW9uYXJ5KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1l
ckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1l
ckNGLmNwcAppbmRleCBiNjg5MjI4MDVlNWQzNzNkZTdmMGFlZDc4OTA4MjVhY2NjYzEyMDM5Li4w
N2E0NWNhZDc4YjZkNDM3ZmFhODQyNTI2OTljMGQ0ODZkNzhlZDZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9ic2VydmVyOwogICAg
IGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CisgICAg
ICAgIHBvd2VyT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFy
ZWRUaW1lcikucmVsZWFzZSgpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0
aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBmYWxzZTsKICAg
ICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5tbQppbmRleCA0NzA1ZWQxNWE1YzU4YzQxMWM0OWYzNGZhZjczZWViMzA3
YjJjOTQ4Li5hYjk1ZmZkMGY4NzFlYzA0NjA4ZDUwOTY0NmI0M2UzZDAzNDlmNTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtNjUsNyArNjUsNyBAQCBib29sIE5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6Y3Jl
YXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6
aW5pdGlhbGl6ZShjb25zdCBVUkwqIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5k
ZXggYWUwYmQyMDljY2Q2ZjMxN2M5MTkzMjVhMTZhMThhOTljZDE1NzJlNC4uMGQyYTYyMTg2YjVh
NTRlMmI4NTFmZjk2ZDUyODEwMWY4NDY2ZjQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIu
bW0KQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLm1tCmluZGV4IGU4MzY5YzZlNTAxNmUyM2NmODczYjk1MzdkMmFmYjRmMGJj
Njg1MjIuLjhmZTM4YWQwY2NlMmZkNTQyZDI5NzAxN2ZkYTJkMWNiMzU1Yjc3MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAt
NjIwLDcgKzYyMCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBv
aW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yCiAgICAgICAgIGlmIChzbmFw
UG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX3Njcm9s
bFNuYXBTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7
CisgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZT4oKTsKICAgICB9CiAKICAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkgJiYgbV9z
Y3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRzRm9yQXhpcyhvdGhlclNjcm9sbEV2ZW50QXhpcyhh
eGlzKSkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDUwM2Y5
N2I5MjAxOGRhODdjMjQ4ODkxYjIyNjc5YWJiNzAwNWIzMDAuLjk2Yzg1MTI5MzVhYjliNjk4ZTg5
ODU1MTYzYmI2ZDIyYWM5YjgyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAg
LTMwMyw3ICszMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9yeUNs
ZWFyS2V5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZQogI2Vsc2UKICAgICBBU1NF
UlQoc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOwogfQogCiBib29sIENETUZhY3RvcnlDbGVhcktleTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuaAppbmRleCBkNDczMDRjOTViMjZlZjIwNGY1ZGE0YWRjYmI4YTA4NjRkZTE4YmIz
Li4wYjkxMDY0OWNhNGE0N2E5MTVkNTQ4YzlkOTRhZmZmMzM1MzU5MjY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5
Q2xlYXJLZXkmIHNpbmdsZXRvbigpOwogCkBAIC01NCw2ICs1NSw3IEBAIGNsYXNzIENETUZhY3Rv
cnlDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAKIGNsYXNzIENETVBy
aXZhdGVDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2
aXJ0dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tCmluZGV4IGY3MjBjZmQzMzQzZjliYWQzM2E0OTE5YTc4Zjg2NmY5ZDg2
MmEwYWQuLjVhNmViNDA0MzllZjU5MDU3MmE3YzI5ZWZjMzM4ZDkyZjIzOWM1ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtNjEsNyArNjEsNyBAQCB2
b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChH
Q0NvbnRyb2xsZXIgKmNvbnRyb2xsZQogICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIgY29udHJvbGxlciAlcCBhZGRlZCIsIGNvbnRyb2xsZXIpOwogCiAgICAg
dW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgYXV0
byBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRy
b2xsZXIsIGluZGV4KTsKKyAgICBhdXRvIGdhbWVwYWQgPSBtYWtlVW5pcXVlPEdhbWVDb250cm9s
bGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rv
ci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsg
MSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
LmgKaW5kZXggMTVmMDRjNzA4ZTkwMDdiYjRkYWRlZTU0MzVjMzU3ZjAyZjUzMWM5My4uYTI1MjM0
ZmI4NzVhNzUxYzYzYzM3YmE2YTVjZWU3ZDQ1MzRkNWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMzYsNiArMzYsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgSElER2FtZXBhZEVsZW1lbnQgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBISURHYW1lcGFkRWxlbWVudChkb3Vi
bGUgdGhlTWluLCBkb3VibGUgdGhlTWF4LCBJT0hJREVsZW1lbnRSZWYgZWxlbWVudCkKICAgICAg
ICAgOiBtaW4odGhlTWluKQogICAgICAgICAsIG1heCh0aGVNYXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNw
cAppbmRleCA1NzQzOTFiNWMxMTFhMzJiZTkxMjVjYTZjZTA2MDBmNWQ2MzgyMjU3Li42ZDE0YjZi
MjE2MTBiODZjZTRjMDAxM2U1MDkxMWI4OGY5NWUxYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAK
QEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQo
SU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3Zp
ZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IGlu
ZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2Ft
ZXBhZD4gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8SElER2FtZXBhZD4oZGV2aWNlLCBpbmRl
eCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQgPSBtYWtlVW5pcXVl
PEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5z
aXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rl
ckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29k
ZXJHZW5lcmljLmNwcAppbmRleCBhNGEzMGI1MmFiZTQ4YWY4NTBkYzdjNzQ3YTNiY2RlMWQ1MWZk
YTVmLi4wZTU5NzIzMjFiNWY3M2Y1NzJiZDc5NjU4ODExZjAwM2E5NWVkNDkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJp
Yy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgS2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlv
bmFyeSB7CiAgICAgdXNpbmcgTm9kZSA9IFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBib29sLCB1
aW50MzJfdCwgdWludDY0X3QsIGludDMyX3QsIGludDY0X3QsIGZsb2F0LCBkb3VibGUsIFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+PjsK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYg
a2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxOb2RlPihz
dGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KKyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtl
eSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3
YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJl
dHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KIAogcHJpdmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAgc3Rh
dGljIGJvb2wgcmVhZFNpbXBsZVZhbHVlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29k
ZXIsIEtleWVkRGVjb2RlckdlbmUKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5
ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNp
emUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNp
emUpOwogfQogCiBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpAQCAtODYsNyArODYsNyBAQCBLZXllZERlY29k
ZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogICAgIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGUgdHlwZTsKICAgICBTdHJpbmcg
a2V5OwogCi0gICAgbV9yb290RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFy
eT4oKTsKKyAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwog
ICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChtX3Jvb3REaWN0aW9uYXJ5LmdldCgpKTsKIAog
ICAgIGJvb2wgb2sgPSB0cnVlOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEtleWVkRGVjb2RlckdlbmVy
aWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgYXV0byogY3VycmVudERpY3RpbmFyeSA9IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKLSAg
ICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFy
eT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlv
bmFyeT4oKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9u
YXJ5LmdldCgpKTsKICAgICAgICAgICAgIGN1cnJlbnREaWN0aW5hcnktPmFkZChrZXksIFdURk1v
dmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYsMTMgKzE1Niwx
MyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgb2sgPSByZWFkU3RyaW5nKGRlY29k
ZXIsIGtleSk7CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXk+KCk7Cisg
ICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheT4oKTsKICAgICAgICAg
ICAgIG1fYXJyYXlTdGFjay5hcHBlbmQobmV3QXJyYXkuZ2V0KCkpOwogICAgICAgICAgICAgbV9k
aWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0FycmF5KSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVy
aWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50OiB7Ci0gICAgICAgICAgICBhdXRvIG5ld0RpY3Rp
b25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICBhdXRv
IG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgICAgICAgICBt
X2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7CiAgICAgICAgICAg
ICBtX2FycmF5U3RhY2subGFzdCgpLT5hcHBlbmQoV1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7CiAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDJmODQxMDQ3NDYzOTU1OGYyOTVl
ODFhNTE3MTlhODczNGIzMmQ1OGEuLjIxY2MxZWJlNGE5MDFhMTNjNzQ0MDNkYzAxY2YyZmM4MTgx
MzAxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2Rl
cigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJpYz4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmljPigpOwogfQogCiB2
b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5p
bWF0b3JHZW5lcmljLmNwcAppbmRleCA3YWU2NWM1YThkMzA5ZTNkZWVmNTNjZThjZjFlMzAyNDI2
ZDI3YzE0Li4yMDhhZjdiODQ3OWVjYWVmNTUzMGNjYzU1N2I3MzZlYmFiY2JjYjhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc2Ny
b2xsQ2FwdHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
QW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAg
ICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fb3ZlcmxheVNjcm9s
bGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpvdmVybGF5
U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKLSAgICBtX2tpbmV0aWNBbmltYXRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFy
ZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX2tpbmV0aWNBbmltYXRp
b24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFyZWEs
IFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CkBAIC03Myw3ICs3Myw3
IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24oKQogICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9zbW9vdGhBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvblNt
b290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBv
aW50JiYgcG9zaXRpb24pIHsKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwg
W3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogICAgICAgICB1cGRhdGVQb3NpdGlvbihX
VEZNb3ZlKHBvc2l0aW9uKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAppbmRleCBlN2RkMTkxNDA0MTcxOTY4Zjkw
ZDZmZWEzMzU0ZTE0Y2VmNmY1NTY3Li4zNjFlOWRmMzI0NWJlNTY1YjBlMmE0MWRmMThiMjZmZmJj
NzE5Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVj
b2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNv
ZGVyR2xpYi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5
ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckdsaWI6OktleWVk
RGVjb2RlckdsaWIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3NDA0
YmNiZDQ0OWFhNDkyMWI4Y2UyYjdlMDE4NDQ5NTAxMDZmNjgwLi43MGQyNGMxMTkzZjhlNWM3MGQx
ZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVu
Y29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckdsaWI+
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyR2xpYj4oKTsKIH0KIAogS2V5
ZWRFbmNvZGVyR2xpYjo6S2V5ZWRFbmNvZGVyR2xpYigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYTIzZTIxOWQxYTY4NmRhNzMw
YzAxMWJlMGQxMjQ5Y2NlMGJhNDVjZC4uZWZjY2M1YzZmNzlhNWE5YTJlZTQ3NzBiZjVjYzk5NGY4
NDJiOTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNsZWFyVGlt
ZXIoKQogdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAg
IEFTU0VSVCghbV9mcmFtZVRpbWVyKTsKLSAgICBtX2ZyYW1lVGltZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKKyAgICBt
X2ZyYW1lVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZh
bmNlQW5pbWF0aW9uKTsKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9
CiAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigp
CiB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFtX2RlY29kaW5nQ2FsbGJhY2tzKQotICAgICAgICBtX2RlY29kaW5n
Q2FsbGJhY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+
KCk7CisgICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBtYWtlVW5pcXVlPFZlY3RvcjxGdW5j
dGlvbjx2b2lkKCk+LCAxPj4oKTsKIAogICAgIG1fZGVjb2RpbmdDYWxsYmFja3MtPmFwcGVuZChX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDBkMzU1NjE4OTcw
ZmIyNzdmNzJlNzg5OTBlM2Y0ZjJhMjE2ZmJjNjkuLjM1M2ZjYTY2MDEzMjY0YjAyNDYyYTU3MTIy
NGQwNWExODFkOTY4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBj
bGFzcyBUZXh0TGF5b3V0IHsKICAgICBUZXh0TGF5b3V0KFJlbmRlclRleHQmIHRleHQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB4UG9zKQogICAgICAgICA6IG1fZm9udChmb250KQog
ICAgICAgICAsIG1fcnVuKGNvbnN0cnVjdFRleHRSdW4odGV4dCwgeFBvcykpCi0gICAgICAgICwg
bV9jb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleFRleHRDb250cm9sbGVyPihtX2Zv
bnQsIG1fcnVuLCB0cnVlKSkKKyAgICAgICAgLCBtX2NvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb21w
bGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUpKQogICAgIHsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCA3
MjA0NTNkOWYwNDZkNzlmNDhhMDliODFhZjcwMDBmNGRlM2JlMDI1Li5jZWZkOGQ0MjI0NGQwNmZj
YjgyNGJlNWUzYjczNDE5Y2Q0OThhNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRQb2ludC5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIEludFBvaW50Owog
Y2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgRmxvYXRQb2ludCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCgpIHsgfQogICAgIEZsb2F0UG9pbnQo
ZmxvYXQgeCwgZmxvYXQgeSkgOiBtX3goeCksIG1feSh5KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTg0YjQ0YjA3YTQxMjIxNmI5ZWM1OTg0MjJm
MDc4N2YwZTZjN2FlYi4uZTBiNDlmMjQ3YzIwMDliZGQ1ZjFkMGM4ZWJhN2FkNmM3ZWI4Y2JkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTM5NCw3ICsz
OTQsNyBAQCBHbHlwaERhdGEgRm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hh
cmFjdGVyKSBjb25zdAogYXV0byBGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEoKSBjb25zdCAt
PiBEZXJpdmVkRm9udHMmCiB7CiAgICAgaWYgKCFtX2Rlcml2ZWRGb250RGF0YSkKLSAgICAgICAg
bV9kZXJpdmVkRm9udERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRGb250cz4oKTsKKyAg
ICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBtYWtlVW5pcXVlPERlcml2ZWRGb250cz4oKTsKICAg
ICByZXR1cm4gKm1fZGVyaXZlZEZvbnREYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmgKaW5kZXggMmU1OGJkNjllYmI1MzkxZTAzNmQyOGMyNzAyYzFmNDUwNTA4
YjMxMi4uZWY2MDUyMjAxOTcwOGVmMTVmMDgyOWZhN2Q5YzU2OTgxNTJjOTZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMzQ1LDcgKzM0NSw3IEBAIEFMV0FZ
U19JTkxJTkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25z
dAogCiAgICAgYm91bmRzID0gcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChnbHlwaCk7CiAgICAgaWYg
KCFtX2dseXBoVG9Cb3VuZHNNYXApCi0gICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IHN0ZDo6
bWFrZV91bmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7CisgICAgICAgIG1fZ2x5
cGhUb0JvdW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7
CiAgICAgbV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRyaWNzRm9yR2x5cGgoZ2x5cGgsIGJvdW5k
cyk7CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDBhNjJhMjc1YmM2OTJlZjM5OTExNDBlMDI4ZjU4
MDA0MjFkMGM3MTEuLjM3MDliNDFlYjJiN2JkMGJmN2IxMDJhYzVkYmVmZTJmNzc3M2FmMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAt
MjQ0LDcgKzI0NCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAgICAgICAgICAgICAgICAg
aXQgPSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5maW5kKGtleSk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGl0ICE9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgpLmVuZCgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpCi0gICAgICAgICAgICAg
ICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZv
bnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaXQt
PnZhbHVlID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZv
ckFsdGVybmF0ZU5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDcy
NzRkYjBkYjMyYjNiNDFiM2UwZTFiMWVkMGZiMmFlYThiMzZhM2IuLjY0ODE4ZjRiNTE1NWQ0MmJm
YWM4MWI2MWY0YjVmOWNkZWE1NDUyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgUmVm
PEZvbnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2Fz
Y2FkZURlc2NyaXB0aQogICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
Zm9udHMuZ2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7Ci0gICAgbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVF
bnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250
U2VsZWN0b3IpKSk7CisgICAgbmV3RW50cnkgPSBtYWtlVW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVF
bnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250
U2VsZWN0b3IpKSk7CiAgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGdseXBocyA9IG5ld0VudHJ5
LT5mb250cy5nZXQoKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQ
cnVuZUludGVydmFsID0gNTA7CkBAIC0zMjYsOSArMzI2LDkgQEAgc3RkOjp1bmlxdWVfcHRyPERp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1
bihHcmEKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
PiBkaXNwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3Bs
YXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CiAgICAgR3Jh
cGhpY3NDb250ZXh0IHJlY29yZGluZ0NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxh
eUxpc3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlM
aXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3QsIGNvbnRleHQu
c3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsICpk
aXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJhbnNmb3Jt
KCkpOwogICAgIH0pOwogICAgIAogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChzdGFydFgsIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGVGb250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZUZvbnRzLmNwcAppbmRleCBkYjc0MzAyZTlkYWE0ZWI1MmMwY2UwODFmZDU2MDUyNzk1NzhmYmY0
Li4xMmFjODM3ZmNkMjQ2NWY5ZjgxZGViMDY4N2FhNzc2ZDVlYTA2NDUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApA
QCAtODQsNyArODQsNyBAQCB2b2lkIEZvbnRDYXNjYWRlRm9udHM6OkdseXBoUGFnZUNhY2hlRW50
cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYQogewogICAgIEFTU0VSVCgh
Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlcikuZ2x5cGgpOwogICAgIGlmICghbV9taXhl
ZEZvbnQpIHsKLSAgICAgICAgbV9taXhlZEZvbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1peGVkRm9u
dEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKKyAgICAgICAgbV9taXhlZEZvbnQgPSBt
YWtlVW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKICAgICAg
ICAgbV9zaW5nbGVGb250ID0gbnVsbHB0cjsKICAgICB9CiAgICAgbV9taXhlZEZvbnQtPnNldEds
eXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGdseXBoRGF0YSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDI1OWU5
NzUzM2NhZWRjZmMxNDVmZjdhYjQyOGVhMTY5ZjY0YjE1OTQuLjc5ZTJmNTM4OGM0NmU1ODkyMzAx
NjFjNDc0NTI1NDE5MjQ3ZTgyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB0ZW1wbGF0
ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NNYXA8VD46OkdseXBoTWV0cmljc1BhZ2Um
IEdseXBoTWV0cmljc01hcAogICAgIH0KIAogICAgIGlmICghbV9wYWdlcykKLSAgICAgICAgbV9w
YWdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlw
aE1ldHJpY3NQYWdlPj4+KCk7CisgICAgICAgIG1fcGFnZXMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8
aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+PigpOwogCiAgICAgYXV0byYg
cGFnZSA9IG1fcGFnZXMtPmVuc3VyZShwYWdlTnVtYmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVua25vd25NZXRyaWNzKCkpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygp
KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuICpwYWdlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaAppbmRleCAxYjQyMjg2ZGRmNDY1YzBlMmIxMjRkOGFmZGYwZjdjZDY0Nzdj
YmI3Li5lMzNmOGZiZTczODkyZTM0YjhkZWY4MzZkNDZmNWM3MGM3OWM2MWRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCaXRtYXBUZXh0dXJlR0w7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0
eWxlKTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDk0YWFjMWRm
ODM1NmJkYjEwZGY3ZDA4NmZhY2UyNmMxZTM3MTgzMjYuLmM5NmVjYTNhMTVlZDY1MDU0OTRmMjMw
OGY1ZTU3Yzc5MGE3MWUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkK
ICAgICBpZiAobV90cmFuc2Zvcm0pCiAgICAgICAgICptX3RyYW5zZm9ybSA9IG1hdHJpeDsKICAg
ICBlbHNlCi0gICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgR3JhcGhpY3NMYXllcjo6Y2hpbGRyZW5UcmFuc2Zvcm0oKSBjb25zdApAQCAtMzU2LDcg
KzM1Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKICAgICBpZiAobV9jaGlsZHJlblRyYW5zZm9y
bSkKICAgICAgICAgKm1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQotICAg
ICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1ha2VVbmlx
dWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
cjo6c2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmIGxheWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDAwOWQ0
ODY4OTVkNTY4NjI1NDAxMWRmNTYwMGE3MjExMjQzMGU2MmYuLjdhMWZlYWFjNzllNzhiYTg4ZmNh
ZGNiODVlMzI5OWZkNzlhMDA0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBGbG9hdEFu
aW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAg
ICAgfQogCiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC0x
MzIsNyArMTMyLDcgQEAgY2xhc3MgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5p
bWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9u
ZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhlcikK
QEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBGaWx0ZXJBbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBB
bmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNs
b25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAgICAgRmlsdGVyQW5p
bWF0aW9uVmFsdWUoY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIG90aGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IGU0NGE2MWUyMjRjYTExOTRk
MDkxOGQ0NDQzYmVhN2MxZTdlNGEwZTEuLmMyMWZlMjlkMGYwNWZkZGUzOWUwYzRiZjRiNjFhMWM5
NzZjY2IxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
QEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9u
cyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpYwogdm9pZCBJbWFnZTo6
c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSgpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvblN0
YXJ0VGltZXIpCi0gICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKTsKKyAgICAgICAgbV9hbmlt
YXRpb25TdGFydFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3RhcnRB
bmltYXRpb24pOwogICAgIGlmIChtX2FuaW1hdGlvblN0YXJ0VGltZXItPmlzQWN0aXZlKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXItPnN0YXJ0T25lU2hvdCgw
X3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCmluZGV4IDc1N2YwOTU2N2RjNWRmZGY1YmUwMjYzOTYzOWQxZWZlYzcxOGMwZGIuLmFiZTg2
OTQxOTRmZjdjMTc1MTAwYjY5ODgwNGExMjQwYmQ2MmM4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBA
QCBjbGFzcyBOdWxsTWVkaWFQbGF5ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIDA7IH0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oKTsgfQogCiAgICAgZG91YmxlIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmll
ZFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxpdmVVcGRhdGVJ
bnRlcnZhbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBS
ZWY8TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNs
aWVudCkKIE1lZGlhUGxheWVyOjpNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYgY2xpZW50
KQogICAgIDogbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcmVsb2FkVGltZXIoKnRoaXMsICZN
ZWRpYVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2Vf
dW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1h
a2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKQEAgLTUxMSw3
ICs1MTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAjZW5kaWYKICAgICAgICAgbV9wcml2YXRl
LT5sb2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX3ByaXZhdGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOworICAgICAg
ICBtX3ByaXZhdGUgPSBtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOwog
ICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQodGhpcyk7CiAgICAgICAg
IGNsaWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQodGhpcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaAppbmRleCAwMGQ4NWE0OTk2NDJiM2Y1MjM3YjMwYmZmNWY0ZTZiNDI5MTMwZWNkLi4x
ZDJmYzAwOTIwNGE4YzAyNTU0MWIyYTJkN2M1ZjBkMGJlNWM5OWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAt
MTI5LDcgKzEyOSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAg
dmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2FibGUoKSA9PSBNZWRp
YVRpbWU6Onplcm9UaW1lKCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVr
YWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhN
ZWRpYVRpbWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSA/IG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1p
bk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmly
dHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBNZWRpYVRpbWUgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobWF4VGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmlydHVh
bCBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAppbmRleCAz
ZTY4ODA1NWJkY2MwYjEwZTQxNjBjZjE0MGQ0ZmFjZTkyMzIwYTY1Li41YWQ5MzM0OWJmYjQwZGE0
ZmYzMDhhZGE5ODQ5N2ZjMzc1ZTEwOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtODksNyArODksNyBAQCBGbG9hdFBv
aW50R3JhcGg6Ok5vZGUqIEZsb2F0UG9pbnRHcmFwaDo6ZmluZE9yQ3JlYXRlTm9kZShGbG9hdFBv
aW50IHBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHRlc3ROb2RlLmdldCgpOwogICAgIH0KIAot
ICAgIG1fYWxsTm9kZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRQb2ludEdyYXBoOjpO
b2RlPihwb2ludCkpOworICAgIG1fYWxsTm9kZXMuYXBwZW5kKG1ha2VVbmlxdWU8RmxvYXRQb2lu
dEdyYXBoOjpOb2RlPihwb2ludCkpOwogICAgIHJldHVybiBtX2FsbE5vZGVzLmxhc3QoKS5nZXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKaW5k
ZXggOWRjZWU4NzYxNjI1YzAxNDg4YjRkOTBkMWFmMjJlMzU0MzVkNGE1ZS4uNmE3MDFjMWExMjg5
NzlkNGM5NDhiMWE3YmFiNTY4ZjEwMjQ3Y2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZWdpb24uY3BwCkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBSZWdpb246OnNl
dFNoYXBlKFNoYXBlJiYgc2hhcGUpCiAgICAgfQogCiAgICAgaWYgKCFtX3NoYXBlKQotICAgICAg
ICBtX3NoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOworICAg
ICAgICBtX3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOwogICAgIGVs
c2UKICAgICAgICAgKm1fc2hhcGUgPSBXVEZNb3ZlKHNoYXBlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggNzk2MzNmZGI2YWRmMzRmZmZlZThmODI2
NzQ4M2I4Y2ZmNWNlMWYzYy4uYmMzOWMzMDAwMGVhOGI2YjVhOWU2MGNmMmJjNWFlMTg2NjY0YjZj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKQEAgLTkxLDYg
KzkxLDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICB9OwogCiAgICAgY2xhc3MgU2hhcGUgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFNoYXBl
KCkgPSBkZWZhdWx0OwogICAgICAgICBTaGFwZShjb25zdCBJbnRSZWN0Jik7CkBAIC0xNDgsNyAr
MTQ5LDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaGFwZSYsIGNvbnN0IFNoYXBlJik7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IHN0ZDo6bWFrZV91
bmlxdWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBtYWtlVW5pcXVlPFNo
YXBlPigqbV9zaGFwZSkgOiBudWxscHRyOyB9CiAgICAgdm9pZCBzZXRTaGFwZShTaGFwZSYmKTsK
IAogICAgIEludFJlY3QgbV9ib3VuZHM7CkBAIC0yODksNyArMjkwLDcgQEAgT3B0aW9uYWw8UmVn
aW9uPiBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBkZWNvZGVyID4+
IHNoYXBlOwogICAgICAgICBpZiAoIXNoYXBlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihX
VEZNb3ZlKCpzaGFwZSkpOworICAgICAgICByZWdpb24ubV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hh
cGU+KFdURk1vdmUoKnNoYXBlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgcmVnaW9uIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggMWU0ZTdmYWMzNmM3YzMwYTY1NmYxZWZkMDBhYWNl
NmQ0Yzk1Y2VkYS4uNjkzOWY5MTdhZTZmYWIxM2VjMWM5MWQ0YWE4MTU1NjZhOTE3MGRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRU
cmFja1JlcHJlc2VudGF0aW9uLmNwcApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBOdWxsVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24gOiBwdWJsaWMgVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gewogCiBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQmKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVs
b2NpdHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURh
dGEuaAppbmRleCA3YWViNzU5YjM0YjE4YTFlODQ2ODNmMjljNjE2YTZjZGIwMjU3NGQ4Li42YTA2
Y2M2ZWJhMzRiOTU5ZDJmMTg2MDIyOWUxZjJmMzhmZjMxOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaApAQCAtNjUsNiArNjUsNyBAQCBz
dHJ1Y3QgVmVsb2NpdHlEYXRhICB7CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBWZWxvY2l0eURhdGEmKTsKIAogY2xhc3MgSGlzdG9yaWNh
bFZlbG9jaXR5RGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHQzREFOR0xFLmNwcAppbmRleCA3N2EzZTE4YzFjNmMyZTI3ZGQ2M2FlMjk2ZjZlYzlhMWVh
MmZhZTFmLi42MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1YjE2Y2E0ZTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHQzREFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMz
RCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRl
bnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lv
bnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lv
bnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50
KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAppbmRleCBhOWVjZDMyMTM2ZGE4NzcwMmY0Nzhh
ZmNkOGFjYzhlYjk3YzIzOTQwLi45OWRkZGQ4Zjg1MDI3MzAzYmI4YTc2M2VjYWMyYjg2OTg4MmZh
OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgK
QEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTZWxlY3Rp
b25PcHRpb25BVkZPYmpDOwogCiBjbGFzcyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRyYWNrKik7CiAgICAgZXhwbGljaXQgQVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbChBVkFzc2V0VHJhY2sqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCA1Y2Q3NzcyYWMyZWUxY2Vh
OTAxMGU4MzM3MWVhNmFhZWY3ZjA2OTU4Li42YjNjOTIyZTZhZWJlNTkyMGFlNjVlNTdhZjA1ZWRl
NGFkMDM3NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLm1tCkBAIC0zMTMsMTIgKzMxMywxMiBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDOjpwcmVwYXJlKENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQog
ewogICAgIEFTU0VSVChtYXhGcmFtZXMgPj0gMCk7CiAKLSAgICBtX3RhcERlc2NyaXB0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpwcm9jZXNzaW5n
Rm9ybWF0KTsKKyAgICBtX3RhcERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zvcm1hdCk7
CiAgICAgaW50IG51bWJlck9mQ2hhbm5lbHMgPSBwcm9jZXNzaW5nRm9ybWF0LT5tQ2hhbm5lbHNQ
ZXJGcmFtZTsKICAgICBkb3VibGUgc2FtcGxlUmF0ZSA9IHByb2Nlc3NpbmdGb3JtYXQtPm1TYW1w
bGVSYXRlOwogICAgIEFTU0VSVChzYW1wbGVSYXRlID49IDApOwogCi0gICAgbV9vdXRwdXREZXNj
cmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigp
OworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CiAgICAgbV9vdXRwdXREZXNjcmlw
dGlvbi0+bVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24t
Pm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKICAgICBtX291dHB1dERlc2NyaXB0
aW9uLT5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkOwpA
QCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBh
cmUoQ01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0cmVhCiAgICAgLy8gTWFrZSB0
aGUgcmluZ2J1ZmZlciBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgYXQgbGVhc3QgdHdvIGNhbGxiYWNr
cyB3b3J0aCBvZiBhdWRpbywgb3IgMXMsIHdoaWNoZXZlciBpcyBsYXJnZXIuCiAgICAgc2l6ZV90
IGNhcGFjaXR5ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigyICogbWF4RnJhbWVzKSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihrUmluZ0J1ZmZlckR1cmF0aW9uICogc2FtcGxlUmF0ZSkpOwog
Ci0gICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7Cisg
ICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAgICAgbV9yaW5n
QnVmZmVyLT5hbGxvY2F0ZShDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnByb2Nlc3NpbmdGb3Jt
YXQpLCBjYXBhY2l0eSk7CiAKICAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJpYWJsZS1s
ZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMgbmV3KCkg
b3BlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4
IDM2MWE5OTJmMGM0NjUwY2YyYjk2MjhhNjQyZTk3YjVkYmEwZTJhM2MuLjRmYzY3ODdkZDhkOTA3
Y2FkNmEyNzdmMzliMWVkMzJlZDY3OWE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Q
cml2YXRlPiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OmNyZWF0ZUNETShjb25zdCBTdHJp
bmcmCiAgICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc+KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpz
dXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggODkxOGU4MGUwYzM5MGQ3ZThkYWNhMTkwMzk0
NzlhMGQwZjY5NWFkOC4uNTM4Njk2OWY5NDk3NmYzODM2ODAxODc0MWJhZmQxMjU1MWUyOGI4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTM1LDYgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEZvdXJDQzsKIAogY2xhc3MgQ0RNRmFjdG9y
eUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5RmFpclBs
YXlTdHJlYW1pbmcmIHNpbmdsZXRvbigpOwogCkBAIC00OSw2ICs1MCw3IEBAIGNsYXNzIENETUZh
Y3RvcnlGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAK
IGNsYXNzIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2
YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCmluZGV4IDRhNTBlYjQxYTU4MzY4M2Y2NmE2NzYyMjk1NDZjNTgwMWIyMGI1ODgu
LmQ4MWJjYTM1NDkwMzkxOGExYmRhMGFkZGQ5NThkNTk0M2Y3MDFiMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMzcsNiArMzcs
NyBAQCBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
OwogCiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIDogcHVibGljIENETVByaXZh
dGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTGVnYWN5Q0RNKiBjZG0pCiAg
ICAgICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyY2MwOGE5YTNiNTFjYmY3YWIxOTc0MjAyYTk4YjE2
OWRiNDNjMTAxLi4wY2QwMTI5YTNjZDllYWY4NjNhZDQ3ODk4Mzg1MDMxZDhiNzZlZjZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpA
QCAtMTQ3LDEwICsxNDcsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24oTGUKICNlbmRpZgogICAg
IAogICAgIGlmIChzaG91bGRVc2VBVkNvbnRlbnRLZXlTZXNzaW9uICYmIENETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKQotICAgICAgICBzZXNzaW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0
ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlz
LCBjbGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFy
YW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBjbGllbnQpOwogICAgIGVsc2UKICNpZiBI
QVZFKEFWU1RSRUFNU0VTU0lPTikKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJv
dG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3Rv
Y29scyksICp0aGlzLCBjbGllbnQpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3gu
aAppbmRleCBlNDYwMTQ4MzA1Y2VlZDFiNTY0ODQxOTk2Y2I5ZmMzNGNkYzNhYjUyLi4xNDdjMzc5
ZjEyNzA2ODJlNTVmZDIxNWNlMjNhMzllYTEyNDk1YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQ
c3NoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewog
cHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzaSI7
IH0KIApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAgICAgRm91ckNDIG1fc2NoZW1l
OwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1
ZXN0SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVs
bEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJu
ICJma3JpIjsgfQogCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAg
ICAgS2V5SUQgbV9rZXlJRDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5
U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IGZpbmFsIDogcHVibGljIElT
T0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJu
ICJma2FpIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhOyB9CkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rv
cjx1aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCBmaW5hbCA6IHB1YmxpYyBJ
U09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVy
biAiZmtjeCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQpAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09G
YWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0
b3I8dWludDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCBmaW5hbCA6
IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUo
KSB7IHJldHVybiAiZmt2bCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gdmVyc2lvbnMo
KSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb25zOyB9CkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggOiBwdWJs
aWMgSVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV92ZXJzaW9uczsKIH07CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCA6IHB1Ymxp
YyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXF1ZXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZv
dXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNrIjsgfQogCkBAIC0xMDYsNyArMTA2LDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94
IDogcHVibGljIElTT0JveCB7CiAgICAgT3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlW
ZXJzaW9uTGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggZmluYWwgOiBw
dWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkg
eyByZXR1cm4gImZwc2QiOyB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IDogcHVibGljIElTT0JveCB7CiAg
ICAgVmVjdG9yPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveD4gbV9yZXF1ZXN0czsK
IH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCA6
IHB1YmxpYyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggeworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94IGZpbmFsIDogcHVibGljIElT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZmFpclBsYXlTeXN0ZW1JRCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4
IDg1N2YzMWYyNzcyZjQwODFmYmE2MzhmODEwYzExNDk0Mjg1OGI5NGIuLjU5Y2Y4YmEyMTMxNmIz
MDdjMDUwMjNlZDU2ZDliMzlkMjU2MTdmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC0zODQsNyArMzg0LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpidWZmZXJlZCgpIGMKICAgICBpZiAoIW1fY2FjaGVkTG9hZGVkVGltZVJhbmdl
cykKICAgICAgICAgbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzID0gcGxhdGZvcm1CdWZmZXJlZFRp
bWVSYW5nZXMoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsKIH0KIAogTWVk
aWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJN
YWMuY3BwCmluZGV4IDM5NWNlNzgyZThjNTgwNDU5NjE2MjQ2OTgwZjMzZWFkZjAzYjc4YjIuLjVm
NWI2ZjY5NTJiNDkzYTk4ODdiYWZjN2YzMGI3YmVlNzMzNDE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMoKSA9
IGRlZmF1bHQ7CiBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcigpCiB7CiAgICAgaWYgKCFtX3RhcmdldFBp
Y2tlcikKLSAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKKyAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBt
YWtlVW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKIAogICAgIHJl
dHVybiAqbV90YXJnZXRQaWNrZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBhZjBh
N2NjNzdiZjI5MmNkZmQ2NmFiYzZlN2Y2M2E1MDkwMGFhZDY3Li41YTUxOGM1MTUxZDA1YzNlZjVi
MDk0MmM0MmUzYjI0MDIwMzYwYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTM0Myw3ICszNDMs
NyBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJs
ZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVy
KTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJu
IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0s
CiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCBz
dXBwb3J0c0tleVN5c3RlbSk7CiB9CiAKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgYm9vbCB0
aW1lUmFuZ2VJc1ZhbGlkQW5kTm90RW1wdHkoQ01UaW1lIHN0YXJ0LCBDTVRpbWUgZHVyYXRpb24p
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0g
ICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7CiAKICAgICBpZiAoIWF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1
cm4gdGltZVJhbmdlczsKQEAgLTExMzcsNyArMTEzNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdh
Y3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vz
c2lvCiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25B
VkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsKIH0KIAogI2VsaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCB2b2lkIEFWRldy
YXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lk
KiBvYnNlcnZlciwgQwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNh
bGxiYWNrKGlmPSVkKSAlcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihvYnNlcnZlciks
IG5vdGlmaWNhdGlvbk5hbWUpOwogI2VuZGlmCiAKLSAgICBhdXRvIG5vdGlmaWNhdGlvbkRhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4ocHJvcGVydHlOYW1l
LCBvYnNlcnZlcik7CisgICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gbWFrZVVuaXF1ZTxOb3Rp
ZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIpOwogCiAgICAgZGlz
cGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBub3RpZmljYXRpb25EYXRh
LnJlbGVhc2UoKSwgcHJvY2Vzc05vdGlmaWNhdGlvbik7CiB9CkBAIC0xODMzLDcgKzE4MzMsNyBA
QCB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBB
VkNGUGxheWVySXRlbUxlZ2libGVPdXRwdQogCiAgICAgQVNTRVJUKGxlZ2libGVPdXRwdXQgPT0g
c2VsZi0+bV9sZWdpYmxlT3V0cHV0KTsKIAotICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPExlZ2libGVPdXRwdXREYXRhPihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0
aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIGNvbnRleHQpOwor
ICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEgPSBtYWtlVW5pcXVlPExlZ2libGVPdXRwdXREYXRh
PihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0b01lZGlhVGlt
ZShpdGVtVGltZSksIGNvbnRleHQpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBsZWdpYmxlT3V0cHV0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NDdWUp
OwogfQpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgQm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxv
YWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXMKIAogICAg
IExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlcXVlc3RlZFJlc291cmNlKCVwKSIsIHNlbGYpOwogCi0gICAgYXV0byBsb2FkUmVxdWVz
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9hZGluZ1JlcXVlc3Qs
IGNvbnRleHQpOworICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0gbWFrZVVuaXF1ZTxMb2FkUmVx
dWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5j
X2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbG9hZFJlcXVlc3REYXRhLnJlbGVhc2UoKSwg
cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk7CiAKQEAgLTE5NTMsNyArMTk1
Myw3IEBAIFBsYXRmb3JtTGF5ZXIqIEFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIC8vIENyZWF0ZSBhIFBsYXRmb3JtQ0FMYXllciBzbyB3ZSBjYW4g
cmVzaXplIHRoZSB2aWRlbyBsYXllciB0byBtYXRjaCB0aGUgZWxlbWVudCBzaXplLgotICAgIG1f
bGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKTsKKyAgICBt
X2xheWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CiAgICAgaWYgKCFt
X2xheWVyQ2xpZW50KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUxNGFmMWEyN2YyNmJk
MWFkNjAyODYwNGE1NzUyZjBkZjlhOGRmNTIuLjdkZTE0YzI1NzFmN2QzOGVlY2JiMzQ4ZmRhM2M3
NGE0M2RlYjgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMubW0KQEAgLTMzLDEzICszMywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhB
VlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAg
IDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0
aW9uKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KG9wdGlvbikpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC01OSw3
ICs1OSw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNG
cm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRl
bVRyYWNrKEFWUGxheWVySXRlbVRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwg
PSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNl
dFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtNjksMTQgKzY5LDE0IEBAIEFWUGxheWVy
SXRlbVRyYWNrKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiB9
CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKEFW
QXNzZXRUcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJv
bVRyYWNrKCk7CiB9CiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRy
YWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgQVZBc3NldFRyYWNrKiBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakM6OmFzc2V0VHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24oTWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9t
VHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGVjMGQwZWRkYmY3
M2JlZWRhNjcxN2I3YTUxOGM3MzIxMjYwOTVhZTIuLmRmNTIyNmE0ZWEwMzZlNTZmYTI1MzlhNjI3
NjJhMjM4YWU3MGUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFj
ayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2lt
cGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisg
ICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykp
CiAgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCk7CkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykK
IHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgK
aW5kZXggMjJhYWZlYzdiODM0MjdiODEzMGE3YzA0M2Y4ZjY3MjA4MzRjY2E0Ny4uNWQ4ZTI1MDc0
NzBiYzdhNDk5OTU1Yzk4MWIxNzZmZjQ0NGZiYzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0zOSw3ICszOSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzsKIAotY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTGVn
YWN5Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDPiB7CitjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyBmaW5hbCA6IHB1Ymxp
YyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDKiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMmZlMjUyNDk5NGMzYjE5NDQ1OWVjMzMzMDI5YWJk
OWU5ODVjNzViNC4uYmIwNzc3NjEzODJjODgwODA3YmE1M2M4ZGFkYjI5NDU2ZTU2ZWI2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC00MTIs
NyArNDEyLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpyZWFkVHJhY2tNZXRhZGF0YSgp
CiAgICAgICAgIHx8ICFtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKQogICAgICAg
ICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKS52YWx1ZSgpICE9IGZpbmFs
VHJhbnNmb3JtCiAgICAgICAgIHx8IG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNpemUoKSAhPSBz
aXplKQotICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgc2l6ZSwga0NW
UGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdl
Q29tcGF0aWJsZTo6WWVzKTsKKyAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VV
bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNp
emUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6Oklz
Q0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CiAKICAgICBtX3NpemUgPSBleHBhbmRlZEludFNpemUo
bV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+cm90YXRlZFNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCBjNjU5MGJkZWU2N2I0ZTIwOTg4OGU5NmEyYzMzMGYyZmUyMzM4Njk3Li44
NDk5MDRhY2Y5MjljN2NmZTNmOTRiYzQxMGUwZDBiMmU4YjFiNDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYQogICAg
IGlmICghaXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtd
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgQVNT
RVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKIH0K
QEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJgogCiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24ocGxheWVyKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjpt
YWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXJPYmpDPigpKQogICAgICwgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxh
eWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpCiAgICAgLCBtX29iamNPYnNlcnZlcihhZG9w
dE5TKFtbV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVyOm1ha2VX
ZWFrUHRyKCp0aGlzKV0pKQogICAgICwgbV92aWRlb0ZyYW1lSGFzRHJhd24oZmFsc2UpCkBAIC0x
MzM3LDcgKzEzMzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5n
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRp
bWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIAogICAgIGlmICgh
bV9hdlBsYXllckl0ZW0pCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwpAQCAtMTg5Miw3ICsx
ODkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVS
b3RhdGlvblNlc3Npb24oKQogICAgICAgICAmJiBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXpl
KCkgPT0gbmF0dXJhbFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW1hZ2VSb3RhdGlv
blNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1v
dmUoZmluYWxUcmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdS
QSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKKyAg
ICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0
VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6
Olllcyk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0yMjE2LDcgKzIyMTYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFn
ZShVcGRhdGVUeXBlIHR5cGUpCiAjZWxzZQogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0
ZXMgPSBuaWw7CiAjZW5kaWYKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilhdHRyaWJ1dGVzKTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VV
bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilh
dHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTIyNjUs
NyArMjI2NSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgc2l6ZV90IGhlaWdodCA9
IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAg
aWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CisgICAg
ICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJD
Vj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1h
Z2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdo
dCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZv
cm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQpAQCAtMjMzMCw3ICsyMzMw
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3MKIHsKICAgICBpZiAoIWtleVN5c3RlbUlzU3Vw
cG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gc2Vz
c2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+KHRoaXMs
IGNsaWVudCk7CisgICAgYXV0byBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsKICAgICBtX3Nlc3Npb24gPSBtYWtlV2Vha1B0cigq
c2Vzc2lvbik7CiAgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lvbik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCmluZGV4IDczOTZlNWIxYjQzMTE5OGU1ZTYwZDhmY2QwNjM1OWJiMjdjZjQ5Zjcu
LmExZGQwZjkwOTFmYjI4NjQ2OGRiZTBhZTEwY2U4YjNjMTQyYzBiZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oCkBAIC0yNjgsNiArMjY4LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDCiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakM7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1NlZWsgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdTZWVrKGNvbnN0IE1lZGlhVGltZSYg
dGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9sZCwgY29uc3QgTWVk
aWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCkKICAgICAgICAgICAgIDogdGFyZ2V0VGltZSh0YXJn
ZXRUaW1lKQogICAgICAgICAgICAgLCBuZWdhdGl2ZVRocmVzaG9sZChuZWdhdGl2ZVRocmVzaG9s
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBmMTk1MTU2ZDhjZjIyNTZmNjBmOWY1
NTMyNDEyOWU4NTIzZDlkMzhiLi45YzBhZWY2MTlhZGMyYTMxOGYwZGI3ZDJlMzg2N2MyMWRmYzMx
ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMoTWVkaWEKICAgICAsIG1fcGxheWluZygwKQogICAgICwgbV9zZWVraW5n
KGZhbHNlKQogICAgICwgbV9sb2FkaW5nUHJvZ3Jlc3NlZChmYWxzZSkKLSAgICAsIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1h
a2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fZWZm
ZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcihFZmZlY3RpdmVSYXRlQ2hhbmdlZExpc3RlbmVyOjpj
cmVhdGUoKnRoaXMsIFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pKQogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQpA
QCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0CiAgICAgaWYgKCFpc0F2
YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5
ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3Vw
cG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6
OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrV2l0aFRvbGVyYW5jZShj
b25zdCBNZWRpYVRpbWUmIHRpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInRpbWUgPSAi
LCB0aW1lLCAiLCBuZWdhdGl2ZVRocmVzaG9sZCA9ICIsIG5lZ2F0aXZlVGhyZXNob2xkLCAiLCBw
b3NpdGl2ZVRocmVzaG9sZCA9ICIsIHBvc2l0aXZlVGhyZXNob2xkKTsKIAogICAgIG1fc2Vla2lu
ZyA9IHRydWU7Ci0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Nl
ZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CisgICAgbV9w
ZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNo
b2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBpZiAobV9zZWVrVGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgbV9zZWVrVGltZXIuc3RvcCgpOwpAQCAtNTQzLDcgKzU0Myw3IEBAIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdAog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVk
aWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhN
ZWRpYVRpbWVTZWVrYWJsZSgpKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdApAQCAtNTU4LDcg
KzU1OCw3IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpidWZmZXJl
ZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNv
dXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNl
UHJpdmF0ZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwog
fQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGlkTG9hZGlu
Z1Byb2dyZXNzKCkgY29uc3QKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKIAogICAgIGlmICghbV9y
Z2JDb25mb3JtZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gQHsgKF9fYnJpZGdlIE5T
U3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3Jt
YXRUeXBlXzMyQkdSQSkgfTsKLSAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0
cmlidXRlcyk7CisgICAgICAgIG1fcmdiQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAg
IH0KIAogICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBp
eGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKQEAgLTY0OSw3ICs2NDksNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAogICAgIGlmICghbV92aWRlb1Rl
eHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOworICAgICAgICBtX3ZpZGVvVGV4
dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsK
IAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRl
eHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1
cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHBy
ZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRl
eCBjYTNiMTEzNTUyYjM4ODVjOTk5NzdkYWUyYTIxZWExNjU3N2VkYTgwLi45ZGVlZTQ2ZjJjYTI0
NTI5NTNkZjVjYTg4YmI2OWY4MThlN2U0ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CkBAIC0xODMsNyArMTgzLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWEKICAgICA6IG1fcGxh
eWVyKHBsYXllcikKICAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFW
U2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRo
aXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3JlYXRlKCkpCi0gICAgLCBtX3ZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlciht
YWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2Vy
KCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ0lkZW50aWZp
ZXIoKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQot
ICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7
IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAgICAgICAgICAgc3Vw
cG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTA1NCwxMiArMTA1NCwxMiBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJhY2tzKCkKIAog
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMTA3Myw3ICsxMDczLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJl
bnRGcmFtZUltYWdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRl
ci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZm
ZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxC
dWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfSk7
CisgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1
ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChf
X2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtD
VlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCiAgICAgQVNTRVJUKG1faW1hZ2VQYWludGVy
LnBpeGVsQnVmZmVyQ29uZm9ybWVyKTsKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVm
ZmVyQ29uZm9ybWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQy5jcHAKaW5kZXggYzg3MWM1OTQ4MzU1MDg1NzE4MmM3YTI0ZDU1MzRiODVh
NWQ0ZWY3ZS4uMjk0ODNiYTVlOThkOTVmYThlNWVjOWE2YTEwYmY2NDFhYWUzNTU5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3Bw
CkBAIC0zNCwxOSArMzQsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sq
IHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwog
fQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zy
b21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1f
aW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikp
CisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRp
b24pKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjYsNyArNjYs
NyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRy
YWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFj
ayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3Vu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFr
ZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9w
ZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTc3LDcgKzc3LDcgQEAgQVZQbGF5ZXJJdGVtVHJh
Y2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRlbVRyYWNrKCkKIAogdm9pZCBW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFj
aykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApA
QCAtODgsNyArODgsNyBAQCBBVkFzc2V0VHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6
YXNzZXRUcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNl
bGVjdG9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQogewotICAg
IG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0
aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KaW5kZXggZmNjMjQ5NmExMzVhYTRmNzNhOGZlNTQ4ZDE0ZTBjODAwMDRh
ZDFiMC4uOTc1NmNmZmFmZDhjM2Y2ZmUzYjQ3YTIzMzM3MWI3NGRlYzk4ZDA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0KQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiAgICAgLCBtX3BhcmVudChwYXJlbnQpCiAg
ICAgLCBtX3RyYWNrSUQoLTEpCiAgICAgLCBtX3NlbGVjdGVkKGZhbHNlKQpAQCAtNTYsNyArNTYs
NyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZXNldFByb3Bl
cnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0g
c3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAg
bV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAg
ICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDE3
MWYyNzcyYzk0YTY5Y2RhNzM0OTNjYzljOGM3ODc4YjAwMTA4ZGQuLjg3NjUzNDQ1MjAyNGU2MTY1
MTQxN2EwNGEwZDk0NTA1OGE5NTQwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTYzNiwxMiArMTYz
NiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhDb21t
aXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgIGlmICh1c2VzRGlzcGxheUxpc3RE
cmF3aW5nKCkgJiYgbV9kcmF3c0NvbnRlbnQgJiYgKCFtX2hhc0V2ZXJQYWludGVkIHx8IGhhZERp
cnR5UmVjdHMpKSB7CiAgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKERpc3BsYXlMaXN0
UmVjb3JkU3RhcnQsIERpc3BsYXlMaXN0UmVjb3JkRW5kKTsKIAotICAgICAgICBtX2Rpc3BsYXlM
aXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisgICAg
ICAgIG1fZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4o
KTsKICAgICAgICAgCiAgICAgICAgIEZsb2F0UmVjdCBpbml0aWFsQ2xpcChib3VuZHNPcmlnaW4o
KSwgc2l6ZSgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChbJl0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlMaXN0LCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAq
bV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmlu
ZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHBhaW50R3JhcGhpY3NMYXllckNv
bnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSkpOwogICAgIH0K
QEAgLTI4NjcsNyArMjg2Nyw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjppc1J1bm5pbmdUcmFu
c2Zvcm1BbmltYXRpb24oKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVy
QW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvbnMpCi0gICAgICAgIG1fYW5pbWF0
aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOworICAgICAgICBtX2Fu
aW1hdGlvbnMgPSBtYWtlVW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYgY2FB
bmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIFNlY29uZHMgdGltZU9mZnNldCkKQEAgLTM5
MDMsNyArMzkwMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVDbG9uZUxheWVycyhD
bG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+CiAgICAgY29udGVudHNMYXll
ciA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fbGF5ZXJDbG9uZXMpCi0gICAgICAgIG1fbGF5ZXJD
bG9uZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xvbmVzPigpOworICAgICAgICBtX2xheWVy
Q2xvbmVzID0gbWFrZVVuaXF1ZTxMYXllckNsb25lcz4oKTsKIAogICAgIHByaW1hcnlMYXllciA9
IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLT5w
cmltYXJ5TGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwogICAgIHN0cnVjdHVyYWxMYXllciA9IGZp
bmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllckNs
b25lcy0+c3RydWN0dXJhbExheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXgg
M2FjNGMxZTMyYTE1NDhkNThjNjkxMTE3Y2M2OWEyOWM0ZGNmMGUxYS4uYzRiMmM5YzM0NzA4MGE2
YjdjOTZkNjcwMmY0YTRkOGEzMGM3ZjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1Nyw2ICsxNTcsNyBA
QCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBs
YXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgRmxvYXRTaXplIHBpeGVsQWxpZ25tZW50T2Zmc2V0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9waXhlbEFsaWdubWVudE9mZnNldDsgfQogCiAg
ICAgc3RydWN0IENvbW1pdFN0YXRlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICB1bnNpZ25lZCB0cmVlRGVwdGggeyAwIH07CiAgICAgICAgIHVuc2ln
bmVkIHRvdGFsQmFja2Ryb3BGaWx0ZXJBcmVhIHsgMCB9OwogICAgICAgICBib29sIGFuY2VzdG9y
SGFkQ2hhbmdlcyB7IGZhbHNlIH07CkBAIC0zMDksNiArMzEwLDcgQEAgY2xhc3MgR3JhcGhpY3NM
YXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQgewogICAgIHR5cGVkZWYgdW5zaWduZWQgQ29tcHV0ZVZpc2libGVSZWN0RmxhZ3M7CiAgICAg
CiAgICAgc3RydWN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzIHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3Q7CiAg
ICAgICAgIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3Q7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGFuaW1hdGluZ1RyYW5zZm9ybTsKQEAgLTMyOCw2ICszMzAsNyBAQCBjbGFzcyBHcmFwaGlj
c0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNs
aWVudCB7CiAKICAgICAvLyBVc2VkIHRvIHRyYWNrIHRoZSBwYXRoIGRvd24gdGhlIHRyZWUgZm9y
IHJlcGxpY2EgbGF5ZXJzLgogICAgIHN0cnVjdCBSZXBsaWNhU3RhdGUgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bWF4UmVwbGljYURlcHRoID0gMTY7CiAgICAgICAgIGVudW0gUmVwbGljYUJyYW5jaFR5cGUgeyBD
aGlsZEJyYW5jaCA9IDAsIFJlcGxpY2FCcmFuY2ggPSAxIH07CiAgICAgICAgIFJlcGxpY2FTdGF0
ZShSZXBsaWNhQnJhbmNoVHlwZSBmaXJzdEJyYW5jaCkKQEAgLTU3OSw2ICs1ODIsNyBAQCBjbGFz
cyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCB7CiAKICAgICAvLyBSZWZlcmVuY2VzIHRvIGNsb25lcyBvZiBvdXIgbGF5
ZXJzLCBmb3IgcmVwbGljYXRlZCBsYXllcnMuCiAgICAgc3RydWN0IExheWVyQ2xvbmVzIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllck1hcCBw
cmltYXJ5TGF5ZXJDbG9uZXM7CiAgICAgICAgIExheWVyTWFwIHN0cnVjdHVyYWxMYXllckNsb25l
czsKICAgICAgICAgTGF5ZXJNYXAgY29udGVudHNMYXllckNsb25lczsKQEAgLTYwOCw2ICs2MTIs
NyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGlj
IFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+PiBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOwog
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9u
Pj4gQW5pbWF0aW9uc01hcDsKICAgICBzdHJ1Y3QgTGF5ZXJBbmltYXRpb25zIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBWZWN0b3I8TGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbj4gdW5jb21pdHRlZEFuaW1hdGlvbnM7CiAgICAgICAgIEFuaW1hdGlvbnNU
b1Byb2Nlc3NNYXAgYW5pbWF0aW9uc1RvUHJvY2VzczsKICAgICAgICAgQW5pbWF0aW9uc01hcCBy
dW5uaW5nQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA0ZDY0YzJjNGIxOWIzMWI4MDU0YzFi
YzQxYWMwMjI1NzNiZWZmNTYyLi4zMDVlZmQzMzNiZDYxMWM2ZWY1ZTRjMWIyNjIyODg3NTI1NmYy
NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBUaWxlQ29udHJvbGxl
cjo6em9vbWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKQogVGlsZUNvbnRyb2xsZXI6
OlRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAg
OiBtX3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQogICAgICwgbV9kZXZpY2VTY2Fs
ZUZhY3Rvcihvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxl
RmFjdG9yKCkpCi0gICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdyaWQ+KCp0
aGlzKSkKKyAgICAsIG1fdGlsZUdyaWQobWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQogICAg
ICwgbV90aWxlUmV2YWxpZGF0aW9uVGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVJl
dmFsaWRhdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX3RpbGVTaXplQ2hhbmdlVGltZXIoKnRoaXMs
ICZUaWxlQ29udHJvbGxlcjo6dGlsZVNpemVDaGFuZ2VUaW1lckZpcmVkLCB0aWxlU2l6ZVVwZGF0
ZURlbGF5KQogICAgICwgbV9tYXJnaW5FZGdlcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK
QEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxl
KGZsb2F0IHNjYWxlKQogICAgIGlmIChtX3pvb21lZE91dENvbnRlbnRzU2NhbGUgJiYgbV96b29t
ZWRPdXRDb250ZW50c1NjYWxlID09IHRpbGVHcmlkKCkuc2NhbGUoKSAmJiB0aWxlR3JpZCgpLnNj
YWxlKCkgIT0gc2NhbGUgJiYgIW1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2NhbGVGYWN0b3IpIHsK
ICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZCA9IFdURk1vdmUobV90aWxlR3JpZCk7CiAgICAg
ICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPnNldElzWm9vbWVkT3V0VGlsZUdyaWQodHJ1ZSk7Ci0g
ICAgICAgIG1fdGlsZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7Cisg
ICAgICAgIG1fdGlsZUdyaWQgPSBtYWtlVW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7CiAgICAgICAg
IHRpbGVHcmlkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCBGbG9hdFJl
Y3QgVGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcoY29u
c3QgRmxvYXRSZWN0JiBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghbV9o
aXN0b3JpY2FsVmVsb2NpdHlEYXRhKQotICAgICAgICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlEYXRhPigpOworICAgICAg
ICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhID0gbWFrZVVuaXF1ZTxIaXN0b3JpY2FsVmVs
b2NpdHlEYXRhPigpOwogCiAgICAgICAgIG1fdmVsb2NpdHkgPSBtX2hpc3RvcmljYWxWZWxvY2l0
eURhdGEtPnZlbG9jaXR5Rm9yTmV3RGF0YShzY3JvbGxPZmZzZXQsIGNvbnRlbnRzU2NhbGUsIE1v
bm90b25pY1RpbWU6Om5vdygpKTsKICAgICB9OwpAQCAtNjg1LDcgKzY4NSw3IEBAIEludFJlY3Qg
VGlsZUNvbnRyb2xsZXI6OnRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdAogUGxhdGZvcm1DQUxheWVy
KiBUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllcigpCiB7CiAgICAg
aWYgKCFtX2NvdmVyYWdlTWFwKQotICAgICAgICBtX2NvdmVyYWdlTWFwID0gc3RkOjptYWtlX3Vu
aXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IG1h
a2VVbmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CiAKICAgICByZXR1cm4gJm1fY292ZXJh
Z2VNYXAtPmxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4
IGE0ODUyM2NmNTE3NmIzMWYyYWNjNDk4NGIyZWNkOGUyYzg3NGY2MDcuLjM2YWMyZjc4NGIwMDZm
ZjljNzAzZjQxZTdiZmY2ODdhMWFhNGM2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLm1tCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29t
bW9uSW5pdCgpCiAgICAgICAgIFdlYlRpbGVkQmFja2luZ0xheWVyKiB0aWxlZEJhY2tpbmdMYXll
ciA9IHN0YXRpY19jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyKj4obV9sYXllci5nZXQoKSk7CiAg
ICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IFt0aWxlZEJhY2tpbmdMYXll
ciBjcmVhdGVUaWxlQ29udHJvbGxlcjp0aGlzXTsKIAotICAgICAgICBtX2N1c3RvbVN1YmxheWVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXIt
PmNvbnRhaW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBtYWtlVW5p
cXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMo
KSk7CiAgICAgfQogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAtOTQ3LDcgKzk0
Nyw3IEBAIEZsb2F0Um91bmRlZFJlY3QgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNoYXBlUm91bmRl
ZFJlY3QoKSBjb25zdAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0U2hhcGVSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCkKIHsKICAgICBBU1NFUlQo
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVMYXllcik7Ci0gICAgbV9zaGFwZVJvdW5kZWRS
ZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7Cisg
ICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3Vu
ZGVkUmVjdCk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBQYXRoIHNo
YXBlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KaW5kZXggYzE5MWYzOTFj
NjQ1NzJjYzk5NTVhNDdjNmNiN2I5MDA3ODY3MjYzOS4uYjNlMjFmNjQwYWU5MWEwZDFmNTkzODQ2
YTg1MGZlYzIyZmE3OGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KQEAg
LTYyLDcgKzYyLDcgQEAgLSAoaWQpaW5pdFdpdGhMYXllcjooaWQpbGF5ZXIKIC0gKFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyKiljcmVhdGVUaWxlQ29udHJvbGxlcjooV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyKilyb290TGF5ZXIKIHsKICAgICBBU1NFUlQoIV90aWxlQ29udHJvbGxlcik7Ci0gICAg
X3RpbGVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUaWxlQ29udHJvbGxl
cj4ocm9vdExheWVyKTsKKyAgICBfdGlsZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOwogICAgIHJldHVybiBfdGlsZUNvbnRyb2xsZXIu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggMTVkNGU0NmIwNmM3
NmMxN2YzNDA1MTM5YzZjOTc5YzEwMTdiMzY5Ni4uZDZhN2MxNjhmMGU0NDFmZDdkMjkwZmM0ZmUz
MTM2MGM1ODVkNTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTE1Miw3ICsx
NTIsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbihMYXllclR5cGUg
bGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiBsYXllcgogICAgIGlmICh1c2VzVGlsZWRCYWNraW5n
TGF5ZXIoKSkgewogICAgICAgICBpbnRlcm4gPSBuZXcgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4o
dGhpcyk7CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4qPihpbnRlcm4pLT5jcmVhdGVUaWxlQ29u
dHJvbGxlcih0aGlzKTsKLSAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMo
KSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNBTGF5
ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOwogICAgIH0gZWxzZQog
ICAgICAgICBpbnRlcm4gPSBuZXcgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwodGhpcyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJU
aWxlZEJhY2tpbmdMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IDIyNGQ4YmJlZWQzOTky
YWVlZmM5MzJhMWJlZTgwZGM2M2ZjYTJmOGIuLmM1YTczZThkM2FlOWJiNDlhOTZiZTI3ZjUzMjdl
MDZjMDYyMTRmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OnNldEJvcmRlckNv
bG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIFRpbGVDb250cm9sbGVyKiBXZWJUaWxlZEJhY2tpbmdM
YXllcldpbjo6Y3JlYXRlVGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIp
CiB7CiAgICAgQVNTRVJUKCFtX3RpbGVDb250cm9sbGVyKTsKLSAgICBtX3RpbGVDb250cm9sbGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKKyAgICBtX3Rp
bGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAg
ICByZXR1cm4gbV90aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAKaW5kZXggNTBiN2Q5YzIzYzAxYWJmYzNhMDUxNzhjMTA1MjUxMDcw
ZjE1ZDZkYi4uMDRmMmE5ZmY1NDY5YWE1YmEyNGQxNDk1NjU0YjYwZjBiYzQzZDJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdyYXBo
aWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU0LDE0
ICs1NCwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbY2Fpcm9Db250ZXh0
XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fp
cm9Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKIEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkK
ICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5l
VHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAg
ICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUu
Z2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3Io
KSk7CkBAIC02OSw5ICs2OSw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhCiAKIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY2Fpcm9fdCogY2Fpcm9Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0
SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwg
bV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENh
aXJvPihjYWlyb0NvbnRleHQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5p
cXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQogICAgICwgbV9wbGF0Zm9y
bUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250
ZXh0KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNl
dEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUt
PnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cAppbmRleCAxODhlN2JjM2RiODU4Mjk2NWNhYmIyODliYzVjMDJiYzcxNjIzYWE1Li4xZjc2M2I1
MDc3M2JkZjVkMWU1MmU1ZDE5YzBiODBmYmFkMzdiNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lm
TmVlZGVkKCkKICAgICAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5JiBwcm94eSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGhv
bGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVy
KHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29t
cG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xf
UkdCQSkpOworICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1f
c2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOwogICAgICAgICAg
ICAgfTsKICNpZiBVU0UoTklDT1NJQSkKICAgICAgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8
Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5p
bXBsKCkpLnByb3h5KCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjCiAKICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9k
YXRhLm1fc3VyZmFjZS5nZXQoKSkpOwogICAgIG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRD
cihjci5nZXQoKSk7Ci0gICAgbV9kYXRhLm1fY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3Jh
cGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9k
YXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7CisgICAgbV9kYXRhLm1fY29udGV4dCA9IG1ha2VVbmlx
dWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3Rv
cnkobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKaW5kZXggODBiNWQ0ZmJkMjcyZGVlNDM1YjVjZTdjMDg0ZWUzNTlhNTAxZWQ2NC4u
ZDM1ZmYwZWZmOTcxOTUwZWVkMWUzZmQwMjZiY2RhOWVhZmEzNGU0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAg
LTE4Nyw3ICsxODcsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcAogICAgICAgICBpZiAoIWNn
Q29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2RhdGEuY29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOworICAg
ICAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRl
eHQuZ2V0KCkpOwogICAgIH0KIAogICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA3MjUyZTQ5NTI0ZjYwOTg2YjAzOGNhODdj
OGU3ZTI2NWQwNTc0NzBkLi5jMDE2MDFlMTAxMTEyNzk4YjI2OGRmYWYyNjkzODJiNjUzMTlkNWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMzcxLDcgKzEzNzEsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZQogCiAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhldGljT2Js
aXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnQuZ2V0KCksIGZvbnREZXNjcmlw
dGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
b250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9u
LndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwg
c3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0
aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRl
eHRSZW5kZXJpbmdNb2RlKCkpOwogfQogCiB0eXBlZGVmIEhhc2hTZXQ8UmV0YWluUHRyPENURm9u
dFJlZj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaDxDVEZvbnRSZWY+LCBXVEY6OlJldGFpblB0
ck9iamVjdEhhc2hUcmFpdHM8Q1RGb250UmVmPj4gRmFsbGJhY2tEZWR1cFNldDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKaW5kZXggMWNlMGM5NDdl
MTdlOWE2OGVlYWQzYTRkNTdiNTlkOGZhMTZjZWYyOS4uMGRlOTM0YTdiMzg0MTAwZWViNzZkNzdm
NDU2YTE4MmZiYmFiY2VjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
bwogCiAgICAgICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29t
cHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250Rm9yU3ludGhlc2lzQ29tcHV0YXRpb24uZ2V0KCks
IGZvbnREZXNjcmlwdGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgZmFsc2Us
IHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVz
Y3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9k
ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5n
ZXQoKSwgc2l6ZSwgZmFsc2UsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmll
bnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlv
bi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBB
U1NFUlQoZm9udFBsYXRmb3JtRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpp
bmRleCA4OTJiNGE5OGMwMDdiNmY5NzBhMzY4NjFiZTkxNzE0OGJiMDQ2NzJjLi41NzlmMWI5MThk
YmJlNzViODQxM2U2ZDZmZDE1ZGZhZjY0YTM1NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNE
Q29jb2EubW0KQEAgLTkyLDYgKzkyLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0YXR1c0No
ZWNrVGhyZXNob2xkID0gNTsKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIGlzIGN1cnJlbnRseSBlbXB0
eSBvbiBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1bGF0ZWQgYXMKIC8vIHRoZSByZXN0cnVjdHVyaW5n
IGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjkwMyBpcyBkb25l
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0Nv
bnRleHQzRCopIHsgfQogICAgIApAQCAtMjEyLDcgKzIxMyw3IEBAIHN0YXRpYyB2b2lkIHNldEdQ
VUJ5RGlzcGxheU1hc2soUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBjb250ZXh0T2JqLCBDR0xQ
aXhlbEZvCiAKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJlZENvbnRleHQp
CiAgICAgOiBtX2F0dHJzKGF0dHJzKQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5p
cXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCiB7CiAjaWYgIVVTRShBTkdMRSkK
ICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDVjNzMzZTNiYWQxZTlkM2QyNWMxZWQ1N2Y1
YWNkZmZmM2E0Y2I5OWYuLjM4NzVmY2ZkMzA2ZGY4NmQzNDc0ZWUxODYwYmE1OTBhM2E4YmMxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KQEAgLTMyNiw3ICszMjYsNyBAQCBHcmFwaGljc0NvbnRleHQmIElPU3VyZmFjZTo6
ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCkKICAgICBpZiAobV9ncmFwaGljc0NvbnRleHQpCiAgICAg
ICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CiAKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQo
KSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4o
ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5zZXRJc0Fj
Y2VsZXJhdGVkQ29udGV4dCh0cnVlKTsKIAogICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQppbmRleCA2ZTYwZWJm
MWZmYTY1OTBmNmYzNGU1MjhhM2UzMzU4MzE4YjVlYmRmLi4yNzg3NDY4MTY2ZmVmMWI1ZjY0NjIx
ZmViNWJiNWU1MGQ5ZDZkYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9u
Q29jb2EubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBAZW5kCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZShUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYT4oY2xpZW50KTsKIH0K
IAogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25W
VC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oCmluZGV4IGFkYzk3YWRjMWZhMjQ1ODA5OTAwM2MzZGU5YzBhYTM4ZDg3NjE4N2Qu
LjYwMDFiYjcwYTEwMDQxNzQ0MTA5MjEzNmYzZmU1YjYxNzYyY2IwY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9u
U2Vzc2lvblZULmgKQEAgLTM2LDcgKzM2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVlBpeGVsQnVm
ZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCB7CitjbGFzcyBJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dHJ1Y3QgUm90YXRpb25Qcm9wZXJ0aWVzIHsKICAgICAgICAgYm9vbCBmbGlwWCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1
ZmZlckNvbmZvcm1lckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKaW5kZXggZGQxMzU2OWUwODFhMWIzOTlkY2JhYmYzZjVl
ODgzN2Y4NGMyYWI0ZS4uY2Q1YjZmY2MwMGQ3NzQ2NGU2ZTZiZTc0NjMxMWUxM2QwZDI3ZTMyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaApAQCAtMzYsNiArMzYsNyBAQCB0eXBlZGVmIHN0cnVj
dCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWKENGRGljdGlvbmFyeVJlZiBh
dHRyaWJ1dGVzKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVydChDVlBp
eGVsQnVmZmVyUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L1RleHR1cmVDYWNoZUNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9UZXh0dXJlQ2FjaGVDVi5oCmluZGV4IDgxYWIyZjkyNGRhZjI2Y2RhMjJjNWUyMDA3NzZj
MjE4MDIwMjNhM2IuLmM5ZmY0MTlkNDNiZTQ1ZjQwNDQwMzA0MGFkZDhjNGQwNDQwMmJhMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNo
ZUNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNh
Y2hlQ1YuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKIAogY2xhc3MgVGV4dHVyZUNhY2hlQ1YgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8VGV4dHVyZUNhY2hlQ1Y+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVDYWNoZUNWPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0M0QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQppbmRleCA1NzdlYzI4NDYzOTJhNzIxNWQ5
OThhYTMxMGQzZDhkNjMzZjVmMWVjLi45ZjFmNjZiM2JkNTlmNTliMWFkM2NiNzA1Yzg1NjU0NDIy
N2VjMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9U
ZXh0dXJlQ2FjaGVDVi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9UZXh0dXJlQ2FjaGVDVi5tbQpAQCAtNTAsNyArNTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZUNhY2hlQ1Y+IFRleHR1cmVDYWNoZUNWOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QmIGNv
bnRleAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0cjxUZXh0dXJlQ2Fj
aGVUeXBlPiBzdHJvbmdDYWNoZSA9IGFkb3B0Q0YoY2FjaGUpOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0cm9uZ0NhY2hlKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZUNhY2hlQ1Y+KGNvbnRleHQsIFdURk1vdmUo
c3Ryb25nQ2FjaGUpKTsKIH0KIAogVGV4dHVyZUNhY2hlQ1Y6OlRleHR1cmVDYWNoZUNWKEdyYXBo
aWNzQ29udGV4dDNEJiBjb250ZXh0LCBSZXRhaW5QdHI8VGV4dHVyZUNhY2hlVHlwZT4mJiBjYWNo
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVv
VGV4dHVyZUNvcGllckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9W
aWRlb1RleHR1cmVDb3BpZXJDVi5oCmluZGV4IDQzYTk2ZGMxNDM2NTg0YWZhNzcxODc4YjE5N2Yy
YTk1NDdkY2NjZWUuLjlkMzkyZWEwNThiMzYwMDhjYTU2OWNhNDRmZDcxMjg4M2IwZDZmNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVy
ZUNvcGllckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9UZXh0dXJlQ29waWVyQ1YuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBUZXh0dXJlQ2FjaGVDVjsKIAogY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyQ1Ygewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZpZGVvVGV4dHVyZUNv
cGllckNWKEdyYXBoaWNzQ29udGV4dDNEJik7CiAgICAgflZpZGVvVGV4dHVyZUNvcGllckNWKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggOGZlYWEyZjVk
NzUzMjhlNDM2YmY5ZDg4YjhkYzA1YmFjMWMyZTFmMy4uYzU2MWY1ZjllYWI5OTYyMTFhOGIyMjIx
OTc3NmQ2OGYzOWUxNjQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcApAQCAtNDksNyArNDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IFJlcGxh
eWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbAogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiByZXBsYXlMaXN0OwogICAgIGlmIChVTkxJS0VMWSh0
cmFja1JlcGxheUxpc3QpKQotICAgICAgICByZXBsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxE
aXNwbGF5TGlzdD4oKTsKKyAgICAgICAgcmVwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxp
c3Q+KCk7CiAKICAgICBzaXplX3QgbnVtSXRlbXMgPSBtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtSXRlbXM7ICsraSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb24uY3BwCmluZGV4IDU1N2I4ZTAwODYyZDZhYmM1ODA0YjQxNDMyMTAwODBhODM1MTZk
MWUuLjMwYmI0OGNjOGYwYzQ5NTQ0OGFiNjVmNjgxMTcyY2NjNmJjYTUzNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb246OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghU1ZHVVJJUmVmZXJlbmNlOjppc0V4dGVybmFsVVJJ
UmVmZXJlbmNlKG1fdXJsLCAqY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1lbnQoKSkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91cmwpOworICAgIG1fY2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlVW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlPihtX3VybCk7CiAgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS0+bG9hZChjYWNo
ZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCA2NTYzYzhiZmVlYjM1YmE1MzI3ZjQ4OTYxZWQ2MjFmZTNkNTNhYTQxLi43MWE0
YWIyZjQ4MjVmMWE1NDMxOTE4MDM0YjM1MzFlY2RhOGEwZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwCkBAIC00NTUsNyArNDU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0
Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUK
ICAgICAgICAgICAgIEZjUGF0dGVybkFkZFN0cmluZyhyZXN1bHRQYXR0ZXJuLmdldCgpLCBGQ19G
T05UX1ZBUklBVElPTlMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KHZhcmlhbnRz
LnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAjZW5kaWYKLSAgICBhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2UuZ2V0KCksIHJlc3Vs
dFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBmaXhl
ZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24u
b3JpZW50YXRpb24oKSk7CisgICAgYXV0byBwbGF0Zm9ybURhdGEgPSBtYWtlVW5pcXVlPEZvbnRQ
bGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQYXR0ZXJuLmdldCgpLCBmb250RGVz
Y3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRXaWR0aCwgc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpOwogICAgIC8v
IFZlcmlmeSB0aGF0IHRoaXMgZm9udCBoYXMgYW4gZW5jb2RpbmcgY29tcGF0aWJsZSB3aXRoIEZv
bnRjb25maWcuIEZvbnRjb25maWcgY3VycmVudGx5CiAgICAgLy8gc3VwcG9ydHMgdGhyZWUgZW5j
b2RpbmdzIGluIEZjRnJlZVR5cGVDaGFySW5kZXg6IFVuaWNvZGUsIFN5bWJvbCBhbmQgQXBwbGVS
b21hbi4KICAgICAvLyBJZiB0aGlzIGZvbnQgZG9lc24ndCBoYXZlIG9uZSBvZiB0aGVzZSB0aHJl
ZSBlbmNvZGluZ3MsIGRvbid0IHNlbGVjdCBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDEzNzY1ZjQzZGE4NjY4ZDJkZTgyZTY3
MWQ4MTgwZDY4NDQyODQzYjAuLjU4OTQzZDJhOTBkZmM1NTAxZjJkY2FhOGVjZjBlOTBlMWFjN2Y3
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgRlRf
RmFjZSBmcmVlVHlwZUZhY2U7CiAgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNp
emUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFj
ZSwgYnVmZmVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggODY5ODEzNjQ1MTNi
OGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3Ni4uNzFmZGEwZDkyNGNkMjU1ZGIzZWYxMDc3Zjll
MTA3ODE0ZTI0M2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBSZWZQdHI8VGV4dHVyZT4gVGV4dHVy
ZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQg
dwogICAgICAgICBudW1UaWxlcyA9IDA7CiAgICAgfQogCi0gICAgYXV0byB0ZXh0dXJlSWRzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7CisgICAgYXV0byB0
ZXh0dXJlSWRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7CiAgICAg
dGV4dHVyZUlkcy0+ZmlsbCgwLCBudW1UaWxlcyk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bVRpbGVzOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggZjRhNGJhMWE4YWNhZDVlMjA1YTU5M2E0OGY3NDg2YjI4YzdiZTFk
NS4uZjZlMWUxNDY5M2M3OTg0MjUyZjc4ZWI3ODBkMDI0Y2Y2NDVlYTQ2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTExNiw3ICsxMTYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpcwogewogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiAgICAgaWYgKGlzQXZhaWxh
YmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIp
OyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
bWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCiAgICAg
ICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgfQogfQpAQCAtMTE0MCw3ICsxMTQw
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFByZXNlcnZlc1BpdGNo
KGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zdAogewotICAg
IGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OwogICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8fCBpc0xpdmVTdHJlYW0oKSkKICAgICAgICAgcmV0
dXJuIHRpbWVSYW5nZXM7CiAKQEAgLTIzNzYsNyArMjM3Niw3IEBAIEdzdEVsZW1lbnQqIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5rKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjplbnN1cmVBdWRpb1NvdXJjZVByb3ZpZGVyKCkKIHsKICAgICBp
ZiAoIW1fYXVkaW9Tb3VyY2VQcm92aWRlcikKLSAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpOworICAg
ICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXI+KCk7CiB9CiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggMDcyOGVlYjY0MjBh
ZmZiOTZjN2ExYTQ5ZjU1NTVkOWYzYjNkOThkNS4uYzdhYzViMmJlNzQ1MTgzNjk0MDMyNzBmNDZi
MmZmNmMxY2EzODc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzEwLDE5ICs3MTAsMTkgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAgICAgICAg
ICAgICBpZiAoIXByb3h5LmlzQWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgp
LCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CisgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIg
PSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1
cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CiAKICAgICAgICAgICAg
IEdMdWludCB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVy
QnVmZmVyOwogICAgICAgICAgICAgaWYgKHRleHR1cmVJRCkgewotICAgICAgICAgICAgICAgIGxh
eWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4odGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3Mo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICAgICAgICAgIGxheWVyQnVmZmVy
ID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4odGV4dHVyZUlE
LCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpOwogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRVbm1hbmFnZWRC
dWZmZXJEYXRhSG9sZGVyKFdURk1vdmUoZnJhbWVIb2xkZXIpKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBwcm94eS5nZXRBdmFpbGFibGVCdWZm
ZXIoZnJhbWVIb2xkZXItPnNpemUoKSwgR0xfRE9OVF9DQVJFKTsKICAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoIWxheWVyQnVmZmVyKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRl
eHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJp
YnV0ZXM6OmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoZnJhbWVI
b2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgpID8gQml0bWFwVGV4
dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSk7CisgICAgICAgICAgICAgICAgICAg
IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4oV1RGTW92ZSh0ZXh0dXJlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGZyYW1lSG9sZGVyLT51cGRhdGVUZXh0dXJlKGxheWVyQnVmZmVyLT50ZXh0dXJlR0woKSk7CiAg
ICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldEV4dHJhRmxhZ3MobV90ZXh0dXJlTWFwcGVy
RmxhZ3MgfCAoZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgpID8gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRCbGVuZCA6IDApKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljcwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVy
PiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9z
YW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZp
ZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1
ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAg
ICBpZiAoIXRleHR1cmVJRCkKQEAgLTkyMyw3ICs5MjMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aGljcwogICAgICAgICBzaXplID0gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogCiAgICAgaWYgKCFt
X3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJf
Q09MT1JfQ09OVkVSVF9GTEFHKTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtl
VW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1Jf
Q09OVkVSVF9GTEFHKTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgc2l6ZSwgb3V0cHV0VGV4dHVy
ZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxp
cFksIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CkBAIC05MzksNyArOTM5LDcgQEAgTmF0
aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9G
cmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVI
b2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVu
aXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVy
RmxhZ3MsIHRydWUpOwogCiAgICAgYXV0byB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVy
ZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlSUQpCkBAIC05NTMsNyArOTUzLDcgQEAgTmF0aXZlSW1h
Z2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpCiAgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBpZiAo
IW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0
ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElF
Ul9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1h
a2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xP
Ul9DT05WRVJUX0ZMQUcpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgc2l6ZSwgMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGZhbHNl
LCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTExNDcsOCArMTE0Nyw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xk
ZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJl
TWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOwotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4gaG9sZVB1bmNoQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+KG1fdmlkZW9TaW5rLmdl
dCgpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQs
IEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9s
ZVB1bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBtYWtlVW5pcXVlPEdTdHJlYW1lckhvbGVQ
dW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOwogICAgICAgICAgICAgbGF5ZXJCdWZmZXIt
PnNldEhvbGVQdW5jaENsaWVudChXVEZNb3ZlKGhvbGVQdW5jaENsaWVudCkpOwogICAgICAgICAg
ICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAgICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA5NzNm
NGQ0ZjAwMzIzNTZmMTc3ZWJkN2ZjNGI5ZTk0YTUyOTJmOTVhLi41ZmY5NzI4NjU2NjMxNjQzYjI5
MDNmYmVjOWUzOTQ1YmMyMzI5M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcApAQCAtNjMyLDcgKzYzMiw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChHc3RCYXNlU3JjKiBiYXNlU3JjLCBib29sIG5vdGlmeUFzeW5jQ29t
CiAgICAgICAgICAgICBsb2FkT3B0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6
OkxvYWRPcHRpb246OkJ1ZmZlckRhdGE7CiAgICAgICAgIHByaXYtPnJlc291cmNlID0gcHJpdi0+
bG9hZGVyLT5yZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBsb2FkT3B0
aW9ucyk7CiAgICAgICAgIGlmIChwcml2LT5yZXNvdXJjZSkgewotICAgICAgICAgICAgcHJpdi0+
cmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCksIFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSkpOwor
ICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCksIFJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KSkpOwogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwcm90ZWN0b3IuZ2V0KCks
ICJTdGFydGVkIHJlcXVlc3QiKTsKICAgICAgICAgICAgIGlmIChub3RpZnlBc3luY0NvbXBsZXRp
b24pCiAgICAgICAgICAgICAgICAgZ3N0X2Jhc2Vfc3JjX3N0YXJ0X2NvbXBsZXRlKEdTVF9CQVNF
X1NSQyhzcmMpLCBHU1RfRkxPV19PSyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggNGU5ZDE5ZDg1MjdkNjk2MjBj
ZjVhYTk0MTA3MzYyODM4MWIzYzlmMC4uZTY4ODBkOThlN2ZjYWQxZDA1M2Y4NGVkMzhhNmZkODE5
OGRlN2I4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZQogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKCk7
CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21zZV9kZWJ1ZywgIndlYmtpdG1z
ZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIpOwogICAgIGlmIChpc0F2YWlsYWJsZSgp
KSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsg
fSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1h
a2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAogICAg
ICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIH0KIH0KQEAgLTQ1OSw3ICs0NTks
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c2V0UmF0ZShmbG9hdCkK
IAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3Vy
Y2UgPyBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNl
LT5idWZmZXJlZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzb3VyY2VTZXR1cChHc3RFbGVtZW50
KiBzb3VyY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9s
ZVB1bmNoLmNwcAppbmRleCAxMTcyNDU4NDEwZTlhMTQ1M2I2MzViMGY4ZDkxYjlmYjRhNjk2YzU4
Li4wZjA4YzE5ZGJkYmU2OWIwNmY3Yjc1NTNmOGFiNDk3ZDQ3ZTM3N2E5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcApAQCAtNzYsNyArNzYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hCdWZm
ZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJv
eHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2so
KSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJs
ZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpT
aG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0
QnVmZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAgfTsKIApAQCAtMTQxLDcgKzE0
MSw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7IH0s
CisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRT
dXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aC5oCmluZGV4IGYwZDA0ZDRjNjNkOTMxMjBiY2U4MDVhYjhmZWEyODdhMDFlMDQ0MmEuLjJhZWYw
ZmU4NGE2NzFiNzIyYzRiNDUzZmNlNzE3YjY2YTk3ZTZjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gv
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSwgcHVibGljIEMKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsgfTsKICAgICBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVk
aWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKIAogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCBlMWEzYTg2NjMxNDc1Y2FiN2E5YjE3
MWI0MDYyZDM5M2Q4OTBlNjA2Li5lY2Y4OTY5M2RhMzM4NTIwMTJlNzUwMjExMjk5ODA5OWVjOGRh
YzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5o
CkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIERhdGFWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Cb3ggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfklTT0JveCgpID0gZGVmYXVsdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9y
bWF0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2lu
YWxGb3JtYXRCb3guaAppbmRleCA3MGJiODYxMTMxNmU2ODViNzZiNzg4MzhiNWVkMDYwMzc2Yjli
MWE5Li4xODgzYmE0N2JkZjNhNTJhZmIyZmY3ZDBkZDVjZDlkY2Q3Y2RkODcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2lu
YWxGb3JtYXRCb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0Qm94IDogcHVibGljIElTT0Jv
eCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09PcmlnaW5hbEZvcm1hdEJveCBmaW5hbCA6IHB1
YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7
IHJldHVybiAiZnJtYSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAK
aW5kZXggZDhkNzQwMWE3NTYwMDQ2Yzk4YWZmOGNiMTFlYjJlNzIyM2M5ODFjZS4uYmRmZGJkYzk2
Y2YwZTFiNTBhNzI4NTgyODhjOWIyZjQ3NGY3ZDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNj
aGVtZUluZm9Cb3guY3BwCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNjaGVt
ZUluZm9Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVlKCkuZmlyc3Qg
PT0gSVNPU2NoZW1lVHlwZUJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZVR5
cGVCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7CisgICAgICAgIG1f
c2NoZW1lVHlwZUJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lVHlwZUJveD4oKTsKICAgICAgICAg
aWYgKCFtX3NjaGVtZVR5cGVCb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNj
aGVtZUluZm9Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAg
IH0KIAogICAgIGlmIChvcHRpb25hbEJveFR5cGUudmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVJ
bmZvcm1hdGlvbkJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZUluZm9ybWF0
aW9uQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKKyAg
ICAgICAgbV9zY2hlbWVJbmZvcm1hdGlvbkJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lSW5mb3Jt
YXRpb25Cb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVJbmZvcm1hdGlvbkJveC0+cmVhZCh2
aWV3LCBsb2NhbE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2No
ZW1lSW5mb0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1By
b3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKaW5kZXggZjM3Yjc2MjQ5ZDhlMDBmYTE3YTA1NTkyOWU3
NzY2ODUxMzczMzM2Ni4uOGU1NjczZTA1MTZhNjUwMTRmNWNkNDlmNjFhYTdiNzUzOGQyY2FmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3Rl
Y3Rpb25TY2hlbWVJbmZvQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSVNPU2NoZW1lVHlwZUJveDsKIGNsYXNzIElTT1NjaGVt
ZUluZm9ybWF0aW9uQm94OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Qcm90ZWN0aW9uU2No
ZW1lSW5mb0JveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPUHJv
dGVjdGlvblNjaGVtZUluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNpbmYiOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZv
cm1hdGlvbkJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
U2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCmluZGV4IGI0ZjI3N2E2ODQ3Y2MyMGQ0ZmM5ZDYyNmY5
Y2FjYzc0MzBhZGFmNzAuLmM4M2M0ZmY3YjM4YWJmMWFlMjJmZmU1ZTcyYzdhMWY4NmEwOGViMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hl
bWVJbmZvcm1hdGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcApAQCAtNDcsNyArNDcsNyBAQCBib29s
IElTT1NjaGVtZUluZm9ybWF0aW9uQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQm
IG9mZnNldCkKICAgICAgICAgaWYgKGxvY2FsT2Zmc2V0ICsgc2NoZW1lU3BlY2lmaWNCb3hUeXBl
LnZhbHVlKCkuc2Vjb25kID4gb2Zmc2V0ICsgbV9zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxJ
U09UcmFja0VuY3J5cHRpb25Cb3g+KCk7CisgICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0g
bWFrZVVuaXF1ZTxJU09UcmFja0VuY3J5cHRpb25Cb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hl
bWVTcGVjaWZpY0RhdGEtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKaW5kZXggOWVkYjE4
NzhhOWJhOTE5YmViMTlkN2I2MjIzZDllN2U0NjRmNjg1OC4uZThlYzBjNGM2OWI3NGU4MzM0NDk4
OTQxZjI0ZWVlNDEwZjJjZGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKQEAgLTI5
LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNjaGki
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09TY2hlbWVUeXBlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPU2NoZW1lVHlwZUJveC5oCmluZGV4IDYxOTYxMDM5ZjQ4Y2YyYmM2ZWU3Yjg4NDgwNzNjODM3
NmU1ODMxMzAuLjRiOGYyNjMzNzUwZjhhZGY5MGJjMjdjMmQwY2YxNGVmOTgyYzE3M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBl
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVt
ZVR5cGVCb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVUeXBlQm94IGZpbmFsIDogcHVibGljIElT
T0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJl
dHVybiAic2NobSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCmluZGV4IGY0ZWZlMjgxMDUx
ZTNjN2IyOWRiZWY3OGU0NGRhM2IwMzg3ODAzZjMuLjQ3ZmE0OTcyNDZjNzE1YmUxZDJjZWY5YjBl
YTg3ZGQ3Zjc5ZWY1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09UcmFj
a0VuY3J5cHRpb25Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09UcmFja0VuY3J5cHRpb25Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJ0ZW5jIjsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRU
Q3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwCmluZGV4IDllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQuLjRiNTE2
ZWU4ZGQ3ZjdkMjM3ZThkNjI3Mjc5N2IwMzJkZDFmNWFjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBAIC0zNSw3ICszNSw3
IEBAIHVzaW5nIEpTQzo6RGF0YVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SVNPU3RyaW5nQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09TdHJpbmdCb3ggZmluYWwg
OiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRzKCkg
eyByZXR1cm4gbV9jb250ZW50czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKaW5kZXggYTYxNjBiNjZhZTk0NjgyMDY3N2FkMjkzNGIx
ODFkZWI5M2NjNGY0OS4uYWUyM2JlZmZmZWQ2NGE2ZGUyODkxNzZlNDE1MTAxMWYwNjdjOTg5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
aApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOIGJ5dGVzIDogQ3Vl
VGltZUJveCA6IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlU2V0dGluZ3NCb3ggOiBi
b3ggOiBvcHRpb25hbAogLy8gTiBieXRlcyA6IEN1ZVBheWxvYWRCb3ggOiBib3ggOiByZXF1aXJl
ZAotY2xhc3MgSVNPV2ViVlRUQ3VlIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09XZWJWVFRD
dWUgZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBJU09XZWJWVFRDdWUoY29u
c3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDNkNWVmMDliN2Q5NDAzMDU5
NzQxZDgwODI4ZjUxOGRlZmM4NDIzYjUuLmVmMTBiMzNhNTRiMzVkN2Q1NzFmMDZlNDE2ZjEyOTIy
MDg5YWMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5k
aWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
KGZvbnREZXNjcmlwdG9yLmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPihmb250RGVzY3JpcHRvci5nZXQoKSk7CiB9CiAKIGJvb2wgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFT
Y2VuZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDEwOWMyYzU3NzY3OWExMjE0
YWE2ZWExMDFjNmY0ODBmYmEyZWM2MDEuLjViZWU2MTNmY2Y2YjQ2YTA3YzYyOGU1ODAxNmY0OWJi
OTAyMWIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVxdWVzdFVwZGF0ZSgpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2NlbmVJbnRlZ3Jh
dGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VXBk
YXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKIH0KIAogU2NlbmVJbnRlZ3JhdGlvbjo6Q2xpZW50
Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAyYjFhZWNmMGQxYjdlNmEzNDFiZjk0
YmZmYWVkMjIwZjFhNDU4NjM4Li41MGUwYzNjN2Q5NzY4MjZiYTdiYjgxODVkMWVlMTQyMTI5YWRh
MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBhdXRvIGNyZWF0ZUNvbW1hbmQoQXJncyYm
Li4uIGFyZ3VtZW50cykgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8T3Blcgog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIGF1dG8gY3JlYXRlQ29tbWFuZCgpIC0+IHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXJhdGlvbkRhdGE8PiwgVD46OnZhbHVlLCBzdGQ6OnVu
aXF1ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+PgogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VD4oKTsKIH0KIAogQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0Nv
bnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKaW5kZXggMGM4YTY3MGUzYTBh
MzYzMDdlM2YyOTllY2RhMDI1NTJmZDc3NGVkMS4uYjM1MDhkNTE3YjI0ZTQ3NWMwOGFmNDhiMzNl
NDMxZmQyNzkyMDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50
aW5nQ29udGV4dENhaXJvLmNwcApAQCAtNzAsOCArNzAsOCBAQCBQYWludGluZ0NvbnRleHRDYWly
bzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICB9KTsK
IAogICAgIG1fY2Fpcm8uY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2NhaXJvLnN1
cmZhY2UuZ2V0KCkpKTsKLSAgICBtX3BsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4dC5nZXQoKSk7Ci0g
ICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5
KCptX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fcGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWlyby5jb250ZXh0LmdldCgpKTsK
KyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoKm1f
cGxhdGZvcm1Db250ZXh0KSk7CiB9CiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGlu
Zzo6fkZvclBhaW50aW5nKCkKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHZvaWQgUGFpbnRpbmdDb250
ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkoY29uc3QgUGFpbnRpbmdPcGVyYXRpb25zJiBw
YWludGluCiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OkZvclJlY29yZGlu
ZyhQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0aW9ucykKIHsKLSAgICBtX2dyYXBo
aWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PigK
KyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PigKICAgICAgICAgWyZwYWludGluZ09wZXJhdGlvbnNdKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRpbmdPcGVyYXRpb25z
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhaXJvT3BlcmF0aW9uUmVjb3JkZXI+
KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVN
YXBwZXJJbXBsLmNwcAppbmRleCBkNGM5YjYwNWI0Y2QyOGUzNDhlZmQ4NTMzNTAzOGI1OGM5YTRk
ZGZhLi44ZTM3OTBmN2FiNTRmNmIzZDk1NmYzMDcwNGM0MjljMmFjZGMzMTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJl
TWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBCYWNraW5nU3RvcmVUZXh0dXJl
TWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFj
dG9yeSgKICAgICAgICAgW10oQmFja2luZ1N0b3JlJikgewotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbD4oKTsK
ICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBl
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggMzhm
ZGQ5M2RhNmIxMzg4MzE0MDU5MTY1M2NkZjI5ZTA3ZGUzMjM5Ni4uNzU2OTJjN2M0YTdiZmRiMTg3
MWRmMTgwMmUzODc3NTM2YjYxNTUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgYXV0byBDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6
OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAg
ICAgIFtdKHVpbnQ2NF90LCBDb21wb3NpdGlvbkxheWVyJikgewotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsPigpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBw
ZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXgg
NTYxNzI4YjVlZjFmNDBkODBjNTM1OTkyNjcxMDY2YWQ4NzQ4MTlhNy4uMmZiMGVjOTU5MTVhZWIw
YmEwOTZmODBiYzY5MGQyZjNiMjg0OGM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIGF1dG8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZh
Y3RvcnkoQ2xpZW50JiBjbGllbnQpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgK
ICAgICAgICAgWyZjbGllbnRdKENvbnRlbnRMYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGw+KGNsaWVudCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFH
QzNETGF5ZXIuY3BwCmluZGV4IDUyZWM3MGI2ODFmN2JjNTYzYTY3NDc1NDM2MjM4NzZiMDMxMzlh
OWIuLjlhOWJkNDY4M2IyNjc0MmFmZWNiMTQ5MWY2MTQ0ZjJhNzhjNTk1MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFH
QzNETGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgR0Mz
RExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICAgICAgYXV0byYgcHJveHkgPSBkb3du
Y2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9jb250ZW50TGF5
ZXItPmltcGwoKSkucHJveHkoKTsKIAogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5s
b2NrKCkpOwotICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4
dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0
KSk7CisgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0
dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9
CiAKICAgICBtX2NvbnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bC5jcHAKaW5kZXggYTJhZTM0YTMxMzI3ZTg3MTU2NTQxNDZkMThmNzdjN2E2N2YyNDIxNi4uZDM1
M2M4YmUxYjViZmExMTZiNmNiODUyMDk3MDI3N2NjOTMyNDVjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFj
a2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlcklt
cGwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGF1dG8gSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlcklt
cGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAg
ICAgICAgIFtdKEltYWdlQmFja2luZyYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBlNjg0
OGZjZWNhNDFlOTczNmYyYTM4MTdhOWZkMDNjZWJhZTNhYzExLi5iOTYzNjNiNTUxOTM1NmM4Y2Rm
NDY1NDM2MzI2ZWQwNmNlY2VkODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRl
cHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRl
bnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xF
UzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAqbV9l
eHRlbnNpb25zOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAppbmRleCBiMjRkZjAzNWUyODhlMWViMmY4YWY5ZjdhYjkxZDc3OWQwYWNh
NDllLi4yYTBlNWI3NmU0ZDZiYWI3MGU5MGIyZjNkMjhlYjQzYzA3ZjQyNTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTY1Niw3ICs2NTYs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyKQogICAgIEFOR0xFUmVzb3VyY2VzLkhhc2hGdW5jdGlvbiA9IG5hbWVIYXNoRm9y
U2hhZGVyOwogCiAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgIG5hbWVI
YXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7Cisg
ICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+
KCk7CiAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFwRm9yU2hh
ZGVycy5nZXQoKSk7CiAgICAgbV9jb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJjZXMp
OwogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBl
ZFN5bWJvbE5hbWUoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBBTkdMRVNoYWRlcgogICAgICAg
ICAvLyBBdHRyaWJ1dGVzIGFyZSBhIHNwZWNpYWwgY2FzZTogdGhleSBtYXkgYmUgcmVxdWVzdGVk
IGJlZm9yZSBhbnkgc2hhZGVycyBoYXZlIGJlZW4gY29tcGlsZWQsCiAgICAgICAgIC8vIGFuZCBh
cmVuJ3QgZXZlbiByZXF1aXJlZCB0byBiZSB1c2VkIGluIGFueSBzaGFkZXIgcHJvZ3JhbS4KICAg
ICAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgICAgICBuYW1lSGFzaE1h
cEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAg
ICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gbWFrZVVuaXF1ZTxTaGFkZXJOYW1lSGFzaD4o
KTsKICAgICAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFwRm9y
U2hhZGVycy5nZXQoKSk7CiAKICAgICAgICAgYXV0byBnZW5lcmF0ZWROYW1lID0gZ2VuZXJhdGVI
YXNoZWROYW1lKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3Bw
CmluZGV4IDI0MzA0NmQ5ODlhZDczOGY3YzlmNzE0OTU1NjdjOTZiYjM0YzU2NDEuLjcwYTIwZDUw
YzM1MjFhNjEyM2U2ZWZhZjFmNDc2OGY2NDk1Y2RlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xFUy5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykK
LSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0g
bWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgp
KTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpAQCAtMjcxLDcgKzI3MSw3
IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRv
dyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSwgR3JhcGhpY3ND
b250ZXh0M0QqIHNoYXJlZENvbnRleHQpCiAgICAgOiBtX2F0dHJzKGF0dHJpYnV0ZXMpCiAgICAg
LCBtX2NvbXBpbGVyKGlzR0xFUzJDb21wbGlhbnQoKSA/IFNIX0VTU0xfT1VUUFVUIDogU0hfR0xT
TF9DT01QQVRJQklMSVRZX09VVFBVVCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQorICAgICwgbV9w
cml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJT
dHlsZSkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4
dCk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGVkNmNjZjE5NGJiZWUxZTAwZmQ0MzlmNjFh
NmRlNjJlNDAzMDJlYTMuLjhmZDNhZDRmNzJkNzY0YmQ5NWQyMjBmNTgxZWQyYjc5NjI4ODNjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCkBA
IC0xMDYsOSArMTA2LDkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdy
YXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3MKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsKICNpZiBVU0UoTklDT1NJQSkK
LSAgICBtX25pY29zaWFMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8Tmljb3NpYTo6R0MzRExheWVy
PigqdGhpcywgcmVuZGVyU3R5bGUpOworICAgIG1fbmljb3NpYUxheWVyID0gbWFrZVVuaXF1ZTxO
aWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAjZWxzZQotICAgIG1fdGV4
bWFwTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX3RleG1hcExheWVyID0gbWFrZVVuaXF1ZTxU
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAjZW5k
aWYKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMzI1LDEwICszMjUsMTAgQEAgRXh0
ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiAgICAgaWYgKCFt
X2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BFTkdMX0VTKQogICAgICAgICAvLyBnbEdldFN0cmlu
Z2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KLSAgICAgICAgbV9leHRlbnNpb25zID0gc3Rk
OjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKKyAgICAg
ICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywg
IGZhbHNlKTsKICNlbHNlCiAgICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhl
IENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KLSAgICAg
ICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRo
aXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICAgICAgbV9l
eHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIEdMQ29udGV4
dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgIH0KICAgICByZXR1
cm4gKm1fZXh0ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZv
cm1MYXllci5jcHAKaW5kZXggMTRmMWRiZjE4ZDkxYjM5MDc1ZTJkNTBmMjE0OWI3NzZiYmMxNzQ5
My4uNjYzMjMxNTY5NWJhMjFjMjY3ZDE1NTkzMmViYTkxNDdmYjY2YWUwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVk
ZWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX3BsYXRmb3JtTGF5ZXJQ
cm94eS0+bG9jaygpKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVm
ZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1f
Y29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4
dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHkt
PnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1f
Y29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQu
bWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA5NzRiODU3
OGI4OGFhNjQzNTA5MWU4YjBjMzhiYjJkYjcxMGVmMTAyLi5hMmY3NTg2NmUzMjNiOGZkYmE0M2Ew
MDdkNDQ3YWFhNDY1NzZiZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMTg2LDcgKzE4
Niw3IEBAIFRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKCkKIAogICAgIG1fZGF0YSA9
IG5ldyBUZXh0dXJlTWFwcGVyR0xEYXRhKHBsYXRmb3JtQ29udGV4dCk7CiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQotICAgIG1fdGV4dHVyZVBvb2wgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpdG1h
cFRleHR1cmVQb29sPihtX2NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBtX3RleHR1cmVQb29sID0g
bWFrZVVuaXF1ZTxCaXRtYXBUZXh0dXJlUG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7CiAjZW5k
aWYKIH0KIApAQCAtNzkwLDcgKzc5MCw3IEBAIFJlZjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFw
cGVyR0w6OmNyZWF0ZVRleHR1cmUoR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJh
dGVkKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOwogfQogCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXgg
N2FmZGYzMGEwNWJjYTUzOTdiODAxOGJmZWJkODllMGUxZGE1MDMzMy4uZTExYTBiYjI3YjgxMGMy
ZDUyNzZiMmE5YjBjNTA5Zjg4OTUwNjZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmCiAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUo
VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7
CiAgICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0
dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJ
RCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVy
ZSksIG1fZXh0cmFGbGFncyk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAppbmRleCBjNzE0ZjZkNzhjMWNmMWE2MWQ0ZGZm
NmI0MjA1MjFiMDJlY2Q3YzUwLi4zNzkzNjc1YWM4ZDZiM2MzMmEzYjMxODE5M2U0OWE3YjM3ZGM0
ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHku
Y3BwCkBAIC03MSw4ICs3MSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvCiAgICAgaWYgKG1f
dGFyZ2V0TGF5ZXIgJiYgbV9jdXJyZW50QnVmZmVyKQogICAgICAgICBtX3RhcmdldExheWVyLT5z
ZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKLSAgICBtX3JlbGVhc2VV
bnVzZWRCdWZmZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVy
RmlyZWQpOwotICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVu
TG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQpOworICAgIG1fcmVsZWFzZVVudXNlZEJ1
ZmZlcnNUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7CisgICAg
bV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRo
aXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBk
YXRlVGltZXJGaXJlZCk7CiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIG1fY29tcG9z
aXRvclRocmVhZFVwZGF0ZVRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6
OkNvbXBvc2l0aW5nVGhyZWFkVXBkYXRlVGltZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAzNjdkOGE1M2NmMzcw
ZDIyMDJkNmYzNDAxY2RjYjNhMDJmZjQyYzJiLi5kNDc1NzEwYmEwY2RkZmJjZGJkYTBjNjhjZTMw
YjgxZWZhYWQ2OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKICAgICAvLyBFbnN1cmUg
dGhlIFRpbGVkQmFja2luZ1N0b3JlIG9iamVjdCwgYW5kIGVuZm9yY2UgYSBjb21wbGV0ZSByZXBh
aW50IGlmIGl0J3Mgbm90IGJlZW4gcHJlc2VudCB5ZXQuCiAgICAgaWYgKCFsYXllclN0YXRlLm1h
aW5CYWNraW5nU3RvcmUpIHsKLSAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0g
c3RkOjptYWtlX3VuaXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVu
dHNTY2FsZSgpKTsKKyAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gbWFrZVVu
aXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsK
ICAgICAgICAgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50ID0gdHJ1ZTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNi
ZTQzMTFkZWFhMDI0OTdjN2VkMWNkY2ExMzQ1YmE1YTY4MDMxMDkuLjRhNjk3ODIyZTRkZTJjZGI4
YjY2ZjgxZDQwNGQ4ZGJlODJiNDk4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1Rp
bGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgVGlsZWRCYWNraW5n
U3RvcmU6OmNyZWF0ZVRpbGVzKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRS
ZWN0JiBzCiAgICAgdW5zaWduZWQgdGlsZXNUb0NyZWF0ZUNvdW50ID0gdGlsZXNUb0NyZWF0ZS5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHRpbGVzVG9DcmVhdGVDb3VudDsg
KytuKSB7CiAgICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgY29vcmRpbmF0ZSA9IHRpbGVzVG9DcmVh
dGVbbl07Ci0gICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIHN0ZDo6bWFrZV91bmlxdWU8
VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKKyAgICAgICAgbV90aWxlcy5hZGQoY29vcmRpbmF0
ZSwgbWFrZVVuaXF1ZTxUaWxlPigqdGhpcywgY29vcmRpbmF0ZSkpOwogICAgIH0KICAgICByZXF1
aXJlZFRpbGVDb3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1T
dGF0ZS5jcHAKaW5kZXggYzg4ZTliZWY5ZDY2Y2EyYjU1MDE4YzkwZjRiMGE0MjhiNDY4MmVmOC4u
NGVhZjAwMTEyMGM0N2ZmY2U1NWFiNGRmYTkyMTgzY2U4YjMxOTRmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1TdGF0ZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgVHJhbnNmb3JtU3RhdGUmIFRyYW5zZm9y
bVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVyKQogICAgIGlmICht
X21hcFF1YWQpIHsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IG90aGVyLm1fbGFzdFBsYW5h
clF1YWQ7CiAgICAgICAgIGlmIChvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKQotICAg
ICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRRdWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CisgICAgICAgICAgICBt
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpvdGhlci5t
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9s
YXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7CiAgICAgfQpAQCAtNTAsNyArNTAsNyBA
QCBUcmFuc2Zvcm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPShjb25zdCBUcmFuc2Zv
cm1TdGF0ZSYgb3RoZXIpCiAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG51bGxwdHI7CiAK
ICAgICBpZiAob3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkKLSAgICAgICAgbV9hY2N1bXVs
YXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpv
dGhlci5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5tX2FjY3VtdWxh
dGVkVHJhbnNmb3JtKTsKICAgICAgICAgCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMTI5LDEy
ICsxMjksMTIgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybUZyb21Db24KICAgICAvLyBJZiB3ZSBoYXZlIGFu
IGFjY3VtdWxhdGVkIHRyYW5zZm9ybSBmcm9tIGxhc3QgdGltZSwgbXVsdGlwbHkgaW4gdGhpcyB0
cmFuc2Zvcm0KICAgICBpZiAobV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAo
bV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCi0gICAgICAgICAgICBtX2Fj
Y3VtdWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAg
ICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0
aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyICogKm1fYWNjdW11bGF0ZWRUcmFuc2Zv
cm0pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5t
dWx0aXBseSh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKICAgICB9IGVsc2UgaWYgKGFjY3VtdWxh
dGUgPT0gQWNjdW11bGF0ZVRyYW5zZm9ybSkgewogICAgICAgICAvLyBNYWtlIG9uZSBpZiB3ZSBz
dGFydGVkIHRvIGFjY3VtdWxhdGUKLSAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0
ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWlu
ZXIpOworICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfQogICAgIAogICAg
IGlmIChhY2N1bXVsYXRlID09IEZsYXR0ZW5UcmFuc2Zvcm0pIHsKQEAgLTIwOCw3ICsyMDgsNyBA
QCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZChjb25zdCBG
bG9hdFF1YWQqIHF1YWQpCiAgICAgLy8gTWFwIHRoZSBxdWFkIGJhY2sgdGhyb3VnaCBhbnkgdHJh
bnNmb3JtIG9yIG9mZnNldCBiYWNrIGludG8gdGhlIGxhc3QgZmxhdHRlbmluZyBjb29yZGluYXRl
IHNwYWNlLgogICAgIEZsb2F0UXVhZCBiYWNrTWFwcGVkUXVhZCgqcXVhZCk7CiAgICAgbWFwUXVh
ZChiYWNrTWFwcGVkUXVhZCwgaW52ZXJzZURpcmVjdGlvbigpKTsKLSAgICBtX2xhc3RQbGFuYXJT
ZWNvbmRhcnlRdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KGJhY2tNYXBwZWRRdWFk
KTsKKyAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+
KGJhY2tNYXBwZWRRdWFkKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZChGbG9h
dFF1YWQmIHF1YWQsIFRyYW5zZm9ybURpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHdhc0NsYW1w
ZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKaW5kZXggMTA4NjM3NDAwYTIwZmEyZjA5
ZGY2YWQ0MzkzM2NhN2RhMTdmNDg2MS4uYjYyNTgzNmE1Y2UyMjViZjQ3ZjMzMGMwOGMyOWQ4Yzc1
NjUyZWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFz
cyBUcmFuc2Zvcm1TdGF0ZSB7CiAgICAgICAgIC8vIFdlIG11c3QgYmUgaW4gYSBmbGF0dGVuZWQg
c3RhdGUgKG5vIGFjY3VtdWxhdGVkIG9mZnNldCkgd2hlbiBzZXR0aW5nIHRoaXMgc2Vjb25kYXJ5
IHF1YWQuCiAgICAgICAgIEFTU0VSVChtX2FjY3VtdWxhdGVkT2Zmc2V0ID09IExheW91dFNpemUo
KSk7CiAgICAgICAgIGlmIChxdWFkKQotICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5
UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CisgICAgICAgICAgICBt
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpxdWFkKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG51
bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCBkMzFhMjU3OWZiMWUxYzc5NDI1ZDAyOTA1ZWJl
YmM4OGQxNGFkZDUwLi44Zjc3MDI3NWRlNjk5NTY4Yzg1MTVhZWEwZjJjZmEwZTUyMDU2NzI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENh
Y2hlV2luLmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZv
cm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAg
ICAgYm9vbCBzeW50aGVzaXplQm9sZCA9IGlzR0RJRm9udFdlaWdodEJvbGQod2VpZ2h0KSAmJiAh
aXNHRElGb250V2VpZ2h0Qm9sZChsb2dGb250LmxmV2VpZ2h0KTsKICAgICBib29sIHN5bnRoZXNp
emVJdGFsaWMgPSBpc0l0YWxpYyhmb250RGVzY3JpcHRpb24uaXRhbGljKCkpICYmICFsb2dGb250
LmxmSXRhbGljOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0
Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNp
emUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJdGFsaWMsIHVzZUdESSk7CisgICAgYXV0
byByZXN1bHQgPSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQpLCBm
b250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5bnRo
ZXNpemVJdGFsaWMsIHVzZUdESSk7CiAKICNpZiBVU0UoQ0cpCiAgICAgYm9vbCBmb250Q3JlYXRp
b25GYWlsZWQgPSAhcmVzdWx0LT5jZ0ZvbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAppbmRleCAzODdhMjM5ZjgyOWMyZDc4MDljMmM5NmQzZmUxMjRkZWUxNGJkM2Q3Li42NDg0ODVh
YzI2Y2IyMzc1Y2Y2NTc0ZjgxZmY0Y2Q2NTY3MmM1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAg
ICBmb250UmVmZXJlbmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUp
OwogICAgIGlmICghZm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVy
ZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggYWI3Yzc5MGQ2MGYyZThmNzRhZjAz
YzA2YWNmYzcyYzhlMzljMjJkOS4uZWVlYWZlYmQ5MzNjYTljNzhkZDA1MTQxM2QyMzM0NGNhODUz
YjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTkxLDcg
KzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBpZiAoIWZvbnRSZWZlcmVuY2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZv
bnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1h
dChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI5
NTM1NTAzYzMwNmM1MDFhYTM5M2YzMWZmZDkyODg1ZWRlOWJkZWYuLmY0YWFkM2I1NjNlM2QxNDM0
ZmYzMThlNGM2MjI3MzI1YzA1OWM0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIExSRVNVTFQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZhdGU6OmZ1
bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQgaHduZCwgVUlOVCBtCiB9CiAKIEZ1bGxTY3JlZW5D
b250cm9sbGVyOjpGdWxsU2NyZWVuQ29udHJvbGxlcihGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVu
dCogY2xpZW50KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UHJpdmF0ZT4odGhp
cywgY2xpZW50KSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFByaXZhdGU+KHRoaXMsIGNs
aWVudCkpCiB7CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CiB9CkBAIC0xMzEsMTMg
KzEzMSwxMyBAQCB2b2lkIEZ1bGxTY3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4oKQog
ICAgIG1fcHJpdmF0ZS0+bV9vcmlnaW5hbEZyYW1lID0gb3JpZ2luYWxGcmFtZTsKIAogICAgIEFT
U0VSVCghbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9i
YWNrZ3JvdW5kV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3Jv
dW5kV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5j
cmVhdGVXaW5kb3coMCk7CiAgICAgOjpBbmltYXRlV2luZG93KG1fcHJpdmF0ZS0+bV9iYWNrZ3Jv
dW5kV2luZG93LT5od25kKCksIGtGdWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24sIEFXX0JMRU5E
IHwgQVdfQUNUSVZBVEUpOwogCiAgICAgbV9wcml2YXRlLT5tX2NsaWVudC0+ZnVsbFNjcmVlbkNs
aWVudFdpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS0+bV9mdWxs
U2NyZWVuV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRl
LmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKICAg
ICBBU1NFUlQobV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwogICAgIG1fcHJpdmF0ZS0+
bV9mdWxsU2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
Q2Fpcm9XaW4uY3BwCmluZGV4IDEwNjdiOTYwOTNkYjJlZDU5MWEyMWEzMWQ5ZDAyNTZkYzEyOTNl
ODkuLmYxNDQyNTcyY2M2ZDFkNTRiYmVlNThiZGJjMzZlZGY3NzRhYWJiNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWly
b1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dENhaXJvV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9vbCBoYXNBbHBoYSkKIAogICAgIGNhaXJvX3Qq
IGNyID0gY3JlYXRlQ2Fpcm9Db250ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOwogCi0gICAgbV9k
YXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY3Ip
KTsKICAgICBtX2RhdGEtPnBsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRl
KG1fZGF0YSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNvbnRl
eHQoKS0+Y3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggYzJiYWZh
Zjk2YTE2MDcwODBiNzYzMzk1MjY2MmU3Njc3NjE0YjAwYy4uOTZjODI4MWFmNGIyMmM2Njg2YWNi
MTRjNWU4MmMxZDY5YjkwZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMs
IElEMkQxRENSZW5kZXJUYXJnZXQqKiByZW5kZXJUYXJnZXQsIFJFCiAKICAgICAoKnJlbmRlclRh
cmdldCktPkJpbmREQyhoZGMsICZyZWN0KTsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFy
Z2V0KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwg
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hk
YyA9IGhkYzsKIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1Jbml0KEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgaWYgKCFTVUNDRUVERUQoaHIp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgp
KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKICAgICBtX2RhdGEgPSBuZXcgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNvbnRleHQp
LCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1f
aGRjID0gaGRjOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4
IGJkNzZlZmJiYTlkMGU4OTdkM2QyODhlODVlOGQyNDQ0Y2M0ZjhmNGUuLjFlYmI1YjA5ZDM4NTM3
YzAxOTIyMGI5NDdkY2FkOTQ0ZDhlMTAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAg
ICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxh
dGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU1LDE0ICs1NSwxNCBAQCBHcmFw
aGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbcmVuZGVyVGFyZ2V0XShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkK
ICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5l
VHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVy
aW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGlj
c0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAg
IG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdl
dCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKQEAg
LTcwLDkgKzcwLDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXgKIAogR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIDogR3JhcGhp
Y3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9
KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29u
dGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQog
ICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBt
X3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+
KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0
OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRm
b3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAg
ICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRXaW4uY3BwCmluZGV4IDViZGU0Y2VkZjUxNmE5MTc5YTZkM2QzYjNlMzNkMTM0ZWQ1YWI1MTEu
LjFkODA0MjBjZjdlYzZjZDc3NWE2MmJhZWEyMmY5OTA2MDdlYjRjYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6V2luZG93c0JpdG1h
cDo6fldpbmRvd3NCaXRtYXAoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0OjpX
aW5kb3dzQml0bWFwPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXAoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dzQml0
bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaW5kb3dz
Qml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyRC5jcHAKaW5kZXggMDZjMTc0NTc5YTRiYzEzMDkxZjM0YjU3OTRhYWE5Mjk5M2JiYmEyNC4u
MzVhOWZmNjExMzUxYzMzYzcxNzRkOTJhMWZkY2Y0NDcwZTgxYTg4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJELmNwcApAQCAtMTEyLDggKzExMiw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vdGU6IFRoaXMgcGxhY2VzIHRoZSBiaXRtYXBjb250
ZXh0IGludG8gYSBsb2NrZWQgc3RhdGUgYmVjYXVzZSBvZiB0aGUgQmVnaW5EcmF3IGNhbGwgaW4g
dGhlIGNvbnN0cnVjdG9yLgotICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKLSAg
ICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2Rh
dGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmlu
Z0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOworICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsK
KyAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEu
cGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0Nv
bnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IDU4MzhlYzE1
N2EyYzdiNzE2M2I3MTY4MmE0ZWI4YzgwMzRlOTYzMjEuLjZkNjRhZTlhNmUzYTQxN2ZiMTRmMTIx
NjZmNjhkM2M5YTU1MjY2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsK
LSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9
LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCiAg
ICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsK
ICAgICB9CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmJ1
ZmZlcmVkKCkgY29uc3QKIHsgCi0gICAgYXV0byByYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpOwogICAgIGlmIChtX3ByZXNlbnRlciAmJiBtX3ByZXNlbnRlci0+bWF4
VGltZUxvYWRlZCgpID4gMCkKICAgICAgICAgcmFuZ2VzLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGlt
ZSgpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV9wcmVzZW50ZXItPm1heFRpbWVMb2Fk
ZWQoKSkpOwogICAgIHJldHVybiByYW5nZXM7CkBAIC04ODgsNyArODg4LDcgQEAgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6Q3VzdG9tVmlk
ZW9QcmVzZW50ZXIoTWUKICAgICBtX3NvdXJjZVJlY3QuYm90dG9tID0gMTsKICAgICBtX3NvdXJj
ZVJlY3QucmlnaHQgPSAxOwogCi0gICAgbV9wcmVzZW50ZXJFbmdpbmUgPSBzdGQ6Om1ha2VfdW5p
cXVlPERpcmVjdDNEUHJlc2VudGVyPigpOworICAgIG1fcHJlc2VudGVyRW5naW5lID0gbWFrZVVu
aXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKICAgICBpZiAoIW1fcHJlc2VudGVyRW5naW5lKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCmluZGV4IDMzN2ZhZjM3OGRhNzk1NWJlYTYx
MGFlYzkwNzU3OTY2ZDZjNDgyMDAuLjdlNDQ0ZDAyNzZkYjRiZGRhNjU4Nzk3YmQ1NDMwNmQ2ZmY5
Y2IyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
S0NBSW1hZ2VRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FJbWFnZVF1ZXVlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIHN0YXRpYyB2b2lkIFdL
Q0FJbWFnZVF1ZXVlUmVsZWFzZShDQUltYWdlUXVldWVSZWYgaXEpCiB9CiAKIFdLQ0FJbWFnZVF1
ZXVlOjpXS0NBSW1hZ2VRdWV1ZSh1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50
MzJfdCBjYXBhY2l0eSkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFn
ZVF1ZXVlUHJpdmF0ZT4oKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1
ZXVlUHJpdmF0ZT4oKSkKIHsKICAgICBtX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IGFkb3B0Q0Yo
d2tDQUltYWdlUXVldWVDcmVhdGUod2lkdGgsIGhlaWdodCwgY2FwYWNpdHkpKTsKIH0KIAogV0tD
QUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKGNvbnN0IFdLQ0FJbWFnZVF1ZXVlJiBvKQotICAg
IDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQor
ICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQogewog
ICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlID0gby5tX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRl
eCA3MWEwMGEzMGMwZmFlZGQ5YjQwZWM0ZmZhZGYxNzg2MzhmMjViODU0Li40MjI1MmQzNGI1NGZl
NmMyYzI2YjUyMmM2NjBlODYyZjA1NmVmMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC00MywyNCArNDMsMjQgQEAgZW51bSBDbGlwYm9h
cmREYXRhVHlwZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJk
PigiQ0xJUEJPQVJEIik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBhc3RlYm9hcmQ+KCJQUklNQVJZIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oIlBSSU1BUlkiKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Ao
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRh
dGE6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rp
b25EYXRhOjpjcmVhdGUoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
CiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRI
ZWxwZXIuY3BwCmluZGV4IDQ5MDM3MWFkODllZjJlNzk2ZTM0MDFhYWMxZGJiODA2ZWE5NjZlYjAu
LmI2ZTA1OGJlMzMwNjcyNTRiYmI2MzA1MzQ5ZWE4NmNhYWU1ZGEyNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKQEAgLTMwMCw3ICsz
MDAsNyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3Rr
Q2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IFNlbAogCiAgICAgaWYgKG51bWJlck9mVGFyZ2V0
cyA+IDAgJiYgdGFibGUpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8U2VsZWN0aW9uRGF0YSo+IGNo
YW5nZShzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBjb25zdF9jYXN0PFNlbGVjdGlvbkRhdGEq
Pigmc2VsZWN0aW9uKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xp
cGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJpbWFy
eVNlbGVjdGlvbkNsZWFyZWQpKTsKKyAgICAgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxDbGlw
Ym9hcmRTZXREYXRhPigqc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgV1RGTW92ZShwcmltYXJ5
U2VsZWN0aW9uQ2xlYXJlZCkpOwogICAgICAgICBpZiAoZ3RrX2NsaXBib2FyZF9zZXRfd2l0aF9k
YXRhKGNsaXBib2FyZCwgdGFibGUsIG51bWJlck9mVGFyZ2V0cywgZ2V0Q2xpcGJvYXJkQ29udGVu
dHNDYWxsYmFjaywgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLCBkYXRhLmdldCgpKSkg
ewogICAgICAgICAgICAgZ3RrX2NsaXBib2FyZF9zZXRfY2FuX3N0b3JlKGNsaXBib2FyZCwgbnVs
bHB0ciwgMCk7CiAgICAgICAgICAgICAvLyBXaGVuIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0
YSgpIHN1Y2NlZWRzIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayB0YWtlcyB0aGUgb3du
ZXJzaGlwIG9mIGRhdGEsIHNvIHdlIGxlYWsgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCmluZGV4IGJkY2M5OWU4NTlkNDk3
NTA3OGZmM2M1ZTJlYmMzODVkOWI5NWI5NTIuLjczZTA3NThhNmVkZDFlMTkzMjMxMDgzZjg5YTdl
N2ZkZjIwZDEzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUdhZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR2FkZ2V0LmNwcApAQCAtMzUsMjAgKzM1LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJUaGVtZUdhZGdldD4gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShjb25zdCBSZW5kZXJUaGVt
ZUdhCiB7CiAgICAgc3dpdGNoIChpbmZvLnR5cGUpIHsKICAgICBjYXNlIFJlbmRlclRoZW1lR2Fk
Z2V0OjpUeXBlOjpHZW5lcmljOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJs
aW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlRleHRG
aWVsZDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUZXh0Rmll
bGRHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVudCwg
c2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpS
YWRpbzoKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpDaGVjazoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBh
cmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsK
ICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpBcnJvdzoKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5mbywgcGFyZW50LCBz
aWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZUFycm93R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2Fz
ZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBw
b3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbkdhZGdl
dD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhl
bWVHYWRnZXQ6OlR5cGU6OlNjcm9sbGJhcjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBv
c2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJH
YWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRl
clRoZW1lR2FkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3Np
dGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0
PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgfQogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lV2lkZ2V0LmNwcAppbmRleCAwNWQxMmRkOWVhZmJlZjAyYTQ1OWNhNTI3NjQxN2E1Yjli
MGU4OTc2Li5jYTZlZDkxOGE1MDMzZTI5NzZkYjg0ZDg5YzIwNDg4NzAwZjAyYmNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKQEAg
LTQyLDQ5ICs0Miw0OSBAQCBSZW5kZXJUaGVtZVdpZGdldCYgUmVuZGVyVGhlbWVXaWRnZXQ6Omdl
dE9yQ3JlYXRlKFR5cGUgd2lkZ2V0VHlwZSkKICAgICBhdXRvIGFkZFJlc3VsdCA9IHdpZGdldE1h
cCgpLmVuc3VyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2lkZ2V0VHlwZSksIFt3aWRnZXRUeXBl
XSgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZVdpZGdldD4gewogICAgICAgICBzd2l0
Y2ggKHdpZGdldFR5cGUpIHsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
VmVydGljYWxTY3JvbGxiYXJSaWdodDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJU
SUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwsIFJlbmRlclRoZW1lU2Nyb2xs
YmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVydGlj
YWxQb3NpdGlvbjo6TGVmdCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6
Okhvcml6b250YWxTY3JvbGxiYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvclJpZ2h0OgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRB
VElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09S
SUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9y
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxJ
bmRpY2F0b3JMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9z
aXRpb246OkxlZnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVT
Y3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6
Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246
OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFs
U2Nyb2xsSW5kaWNhdG9yOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6OkNoZWNrQnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0
dG9uOjpUeXBlOjpDaGVjayk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OkNoZWNrKTsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6UmFkaW9CdXR0b246Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4o
UmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlvKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1
dHRvbjo6VHlwZTo6UmFkaW8pOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpCdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVt
ZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Ok5vKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVm
YXVsdDo6Tm8pOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0b25E
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVC
dXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZh
dWx0OjpZZXMpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpDb21ib0Jv
eDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQ29tYm9C
b3g+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUNvbWJvQm94
PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpFbnRyeToKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTZWxlY3RlZEVudHJ5OgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVyVGhlbWVFbnRy
eTo6U2VsZWN0ZWQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZUVudHJ5PihSZW5kZXJUaGVtZUVudHJ5OjpTZWxlY3RlZDo6WWVzKTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VhcmNoRW50cnk6Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNlYXJjaEVudHJ5PigpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U3BpbkJ1dHRvbjoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTbGlkZXI6Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1l
U2xpZGVyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogICAgICAgICBjYXNlIFJlbmRlclRo
ZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2xpZGVyOgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9O
VEFMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihH
VEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6OlByb2dyZXNzQmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6
RGV0ZXJtaW5hdGUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVQ
cm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJbmRldGVybWluYXRlUHJvZ3Jl
c3NCYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVBy
b2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJl
bmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkluZGV0ZXJtaW5hdGUpOwogICAgICAgICBjYXNl
IFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpMaXN0VmlldzoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lTGlzdFZpZXc+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpJY29uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVJY29uPigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpXaW5kb3c6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVt
ZVdpbmRvdz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lV2lu
ZG93PigpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZW5kZXJUaGVtZVNjcm9sbGJh
cjo6UmVuZGVyVGhlbWVTY3JvbGxiYXIoR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24sIE1vZGUg
bW9kZQogICAgIGluZm8udHlwZSA9IFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmljOwog
ICAgIGluZm8ubmFtZSA9ICJjb250ZW50cyI7CiAgICAgaW5mby5jbGFzc0xpc3QuY2xlYXIoKTsK
LSAgICBtX2NvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4o
aW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIuZ2V0
KCkpOworICAgIG1fY29udGVudHMgPSBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0Pihp
bmZvLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIGNoaWxkcmVuLCBtX3Njcm9sbGJhci5nZXQo
KSk7CiAgICAgaW5mby5uYW1lID0gInNsaWRlciI7CiAgICAgbV9zbGlkZXIgPSBSZW5kZXJUaGVt
ZUdhZGdldDo6Y3JlYXRlKGluZm8sIG1fY29udGVudHMtPmNoaWxkKG1fdHJvdWdoUG9zaXRpb24p
KTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBSZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVt
ZUNvbWJvQm94KCkKICAgICB9OwogICAgIGluZm8ubmFtZSA9ICJib3giOwogICAgIGluZm8uY2xh
c3NMaXN0ID0geyAiaG9yaXpvbnRhbCIsICJsaW5rZWQiIH07Ci0gICAgbV9ib3ggPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fSE9S
SVpPTlRBTCwgY2hpbGRyZW4sIG1fY29tYm9Cb3guZ2V0KCkpOworICAgIG1fYm94ID0gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKICAgICBSZW5kZXJUaGVtZUdhZGdldCog
YnV0dG9uID0gbV9ib3gtPmNoaWxkKDApOwogICAgIGluZm8uY2xhc3NMaXN0LnJlbW92ZUxhc3Qo
KTsKICAgICBtX2J1dHRvbkJveCA9IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoaW5mbywgYnV0
dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggODQwN2MxMTAxZGRkNmRiNmUz
NzhkZWZjYjNhYjgyNmJmNzI2NDU0ZC4uNzg2OTdlYjAwMDBmN2Y3YjgyYTdkMGVjZjVmOTg1YTFl
OTI4OWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
Ym9vbCBCTVBJbWFnZURlY29kZXI6OmRlY29kZUhlbHBlcihib29sIG9ubHlTaXplKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fcmVhZGVyKSB7Ci0gICAgICAgIG1fcmVhZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0
LCBpbWdEYXRhT2Zmc2V0LCBmYWxzZSk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxC
TVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBmYWxz
ZSk7CiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDdiYTdlZDkxMDFjZTI1YTliZjZlMjMxMDg3
YmYwYmMxMTRjYzIyZDYuLjRmMzQ4N2UzMzQ3NjQwNTQ3NGNmODZiNWM2MDZkMmMxOTg4YzdjYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBH
SUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVlcnkgcXVl
cnksIGJvb2wgYWxsRGF0YVIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikg
ewotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VSZWFkZXI+KHRo
aXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8R0lGSW1hZ2VSZWFkZXI+KHRoaXMp
OwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggMWNjYTVlNTllZWIzNTFiMDU4YTIxZGIxMzRmNjQz
NzkxZTUwNzdjYS4uZDc3MTg2ZWE5NzM5YmRmYjJjNTYyMjhlZTRjZjVlODgyOGQ4ODU5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgYm9vbCBHSUZGcmFt
ZUNvbnRleHQ6OmRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBXZWJDb3JlOjoKICAgICAgICAgaWYgKCFpc0RhdGFTaXplRGVmaW5lZCgpIHx8ICFpc0hlYWRl
ckRlZmluZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIG1fbHp3Q29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlzKTsKKyAg
ICAgICAgbV9sendDb250ZXh0ID0gbWFrZVVuaXF1ZTxHSUZMWldDb250ZXh0PihjbGllbnQsIHRo
aXMpOwogICAgICAgICBpZiAoIW1fbHp3Q29udGV4dC0+cHJlcGFyZVRvRGVjb2RlKCkpIHsKICAg
ICAgICAgICAgIG1fbHp3Q29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBHSUZJbWFnZVJlYWRlcjo6c2V0UmVtYWluaW5n
Qnl0ZXMoc2l6ZV90IHJlbWFpbmluZ0J5dGVzKQogdm9pZCBHSUZJbWFnZVJlYWRlcjo6YWRkRnJh
bWVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1fZnJhbWVzLmlzRW1wdHkoKSB8fCBtX2ZyYW1l
cy5sYXN0KCktPmlzQ29tcGxldGUoKSkKLSAgICAgICAgbV9mcmFtZXMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXplKCkpKTsKKyAgICAgICAgbV9m
cmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXplKCkp
KTsKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhpcyBtZXRob2QgdG8gY2xvc2UgdG8gZG9MWlcoKS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTg3MGJiMTYwYjg0OTQ4ZjBiNTlkZTQ1
MTE2MzZiYTRjMGYzOGYyZS4uZmY2YTFjODdhZTZmMDViNDljY2MxMjhhYmUwNWMzMDNkNmVlYmFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29s
IElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgICAgICAg
ICAvLyBXZSBuZWVkIHRvIGhhdmUgYWxyZWFkeSBzaXplZCBtX2ZyYW1lQnVmZmVyQ2FjaGUgYmVm
b3JlIHRoaXMsIGFuZAogICAgICAgICAgICAgLy8gd2UgbXVzdCBub3QgcmVzaXplIGl0IGFnYWlu
IGxhdGVyIChzZWUgY2F1dGlvbiBpbiBmcmFtZUNvdW50KCkpLgogICAgICAgICAgICAgQVNTRVJU
KG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPT0gbV9kaXJFbnRyaWVzLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJl
YWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CisgICAgICAgICAg
ICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywg
ZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CiAgICAgICAgICAgICBtX2JtcFJlYWRl
cnNbaW5kZXhdLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgICAgICAgICBtX2JtcFJlYWRl
cnNbaW5kZXhdLT5zZXRCdWZmZXIoJm1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0pOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiNzJjNTVhMmNiOTA5ZmEz
NDYxY2Y3OTVmMDRkY2VhZDUxMDRlOGVlLi5kMGI5MTZhNWRhZjhhM2FhMjU0ZjQ5NzM0NzNhODMx
NTU3MjlkYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTY1Myw3ICs2
NTMsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikK
LSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpQRUdJbWFnZVJlYWRlcj4odGhp
cyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRoaXMp
OwogCiAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVjb2RlIHRoZSBpbWFnZSBidXQgd2UndmUgcmVj
ZWl2ZWQgYWxsIHRoZSBkYXRhLCBkZWNvZGluZwogICAgIC8vIGhhcyBmYWlsZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGMxOGEzOWI1OTEzM2EzMThmMTUxMDU4MWU4ZjkxZWJk
ZDc2ODc5YWIuLjYyY2I5YjIyYTAxZjI2ZTlmMmNkNDFkZWEzODFiMzYzNjg5N2VlNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBQTkdJbWFn
ZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCB1bnNpZ25lZCBoYWx0QXRGcmFtZSwgYm9v
bCBhbGxEYXRhUmUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikKLSAgICAg
ICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsKKyAg
ICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsKIAogICAg
IC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVkIGFs
bCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggMjA5Zjg4ZjQ3YTNiN2Nk
YzAxNDNkZTkyZTI0YmFkZGY5NjY0YjVmNC4uY2FlM2RjZjE2NDc5NmNlZWNiNjhiMjQ0OGYxMTMz
YzEwZWM5YzIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUNhY2hlLm1tCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIExlZ2FjeVRp
bGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyogd2luZG93KQogICAgIDogbV93aW5k
b3cod2luZG93KQogICAgICwgbV90b21ic3RvbmUoYWRvcHROUyhbW0xlZ2FjeVRpbGVDYWNoZVRv
bWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV96b29tZWRPdXRUaWxlR3JpZChzdGQ6Om1h
a2VfdW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSkpCisgICAgLCBtX3pv
b21lZE91dFRpbGVHcmlkKG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVT
aXplKSkKICAgICAsIG1fdGlsZUNyZWF0aW9uVGltZXIoKnRoaXMsICZMZWdhY3lUaWxlQ2FjaGU6
OnRpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgW2hvc3RMYXllcigpIGluc2VydFN1Ymxh
eWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKSBhdEluZGV4OjBdOwpAQCAt
MjM2LDcgKzIzNiw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSgp
CiAKICAgICBpZiAobV9jdXJyZW50U2NhbGUgIT0gbV96b29tZWRPdXRUaWxlR3JpZC0+c2NhbGUo
KSkgewogICAgICAgICBpZiAoIW1fem9vbWVkSW5UaWxlR3JpZCkgewotICAgICAgICAgICAgbV96
b29tZWRJblRpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMs
IG1fdGlsZVNpemUpOworICAgICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkID0gbWFrZVVuaXF1
ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOwogICAgICAgICAgICAgW2hvc3RM
YXllcigpIGFkZFN1YmxheWVyOm1fem9vbWVkSW5UaWxlR3JpZC0+dGlsZUhvc3RMYXllcigpXTsK
ICAgICAgICAgICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMTkxYWM3Njk2MjE1
MTIxNTNkYmRjYjA3OGRkNjZmNDY1NTNiYzIxZC4uMDI3MWI5M2U3MDVjZTJjNDJkNjMyZmUyZGIy
OWFhNDZlODM2ZDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY2LDEyICs2NiwxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFn
ZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigiZGF0YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIik7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFz
dGVib2FyZCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1l
KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9h
cmROYW1lKCkpOwogfQogCiAjZW5kaWYKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9h
cmQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNv
bnRlbnQmIGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpp
bmRleCBhOWQ5ZTQ3MTA1MDE3ZDY0ZDgyZTM3YzhhYTMxY2U2NDY5MDI1Njg1Li5jMmI1YTBiMDhi
ZGY3NWU4YzAxY2Q5YmQyZDUxYzMxNDkzMDVmMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9RdWlja0xvb2subW0KQEAgLTg0LDcgKzg0LDcgQEAgUmV0YWluUHRyPE5TVVJMUmVxdWVz
dD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdXJsLCBOU1N0cmlu
ZwogICAgIGlmIChbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNP
YmplY3Q6dXBkYXRlZE1JTUVUeXBlLmdldCgpXSkgewogICAgICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IHV0aSA9IGFkb3B0TlMoUEFMOjpzb2Z0TGlua19RdWlja0xvb2tfUUxUeXBlQ29weVVUSUZv
clVSTEFuZE1pbWVUeXBlKHVybCwgdXBkYXRlZE1JTUVUeXBlLmdldCgpKSk7CiAKLSAgICAgICAg
YXV0byBjb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KGRhdGEs
IHV0aS5nZXQoKSk7CisgICAgICAgIGF1dG8gY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3
Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0KCkpOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcHJl
dmlld1JlcXVlc3QgPSBjb252ZXJ0ZXItPnByZXZpZXdSZXF1ZXN0KCk7CiAKICAgICAgICAgLy8g
V2UgdXNlIFtyZXF1ZXN0IFVSTF0gaGVyZSBpbnN0ZWFkIG9mIHVybCBzaW5jZSBpdCB3aWxsIGJl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lcklPUy5tbQppbmRleCAxMDdjNzdjNzUzZWFiN2Q5MmRhMjk0ODdjYTZmNjVmODA3MDQ4
MjEzLi42ZDljY2UxNWI4NzRmMTVmMTU0ODc1ZWEwZWU2YjlmMTAzNWE4MzYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJ
T1MubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWEKICAgICBpZiAo
IU1lZGlhUGxheWVyTGlicmFyeSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUz4oY2xpZW50KTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7
CiB9CiAKIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9T
KFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCmluZGV4IDAxZjBhOWJiMjBhMjQ4
YjY5OTg4NTY0NzBhZWUzNzRhOThjZmE1MWMuLmVkNjMyZWE1ZTNmNTU5N2U5ZDc2ZmQyZTU1Njk1
NjFmZTZjNGMyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3Jv
bGxBbmltYXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xs
QW5pbWF0b3JJT1MubW0KQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Ny
b2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Nyb2xsQW5p
bWF0b3JJT1M6OlNjcm9sbEFuaW1hdG9ySU9TKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAwNTQzZWQ1ZTlmYzlmY2ZlM2JiYWE0MDM1NWU0MDcyZjlmM2MzZjQwLi5m
OGE2MWVjNzBjMGMxYTRjZDM3N2YwZTdjZDY3NmVmYjlkZTViYzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0
ZWJvYXJkPigpOwogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNTE1MjBkY2JiZWE1OTIxODVj
MzI2NzAyY2JhNjlmZTg4YjRkNGRkZS4uOGViMTVjZjg4NTJkOTg1NzQ0N2UwNTljMzhhY2FlYmEy
MzQxNWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KQEAgLTEwMCw3ICsxMDAsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm9taQogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7
CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2FyZCk7CiAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKQEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQog
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oTlNEcmFnUGJvYXJkKTsKICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0
YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5w
YXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmls
ZU5hbWVzKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCmluZGV4IDA1Y2MwODk1N2UxZDUw
MTI0ZGQ2MzJlMmE0Yzg5MjEyOTg5Njk2MTEuLjFhYTJjZDgwMTMyZjJjMjFlZTM4YjlmZmJkYjgz
MzczYmJmNGMxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90
ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xp
ZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1hYz4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVu
ZXJNYWM+KGNsaWVudCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjp1cGRh
dGVTdXBwb3J0ZWRDb21tYW5kcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggYTgzMTc1MTIyZWMyZTRiNmI2ZGU1MWJlNmRmNTI2
NGI0MWExZjhjNC4uNjg2MGUzM2MzYTNiMjE1NjMwNWZiMzFhZjQyN2RjNDkwMjM1ODdhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpA
QCAtNjk3LDcgKzY5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmlt
YXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFu
aW1hdG9yTWFjPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yTWFjOjpTY3Jv
bGxBbmltYXRvck1hYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggMWI5ZGM1MzQ1Yjg4MWViMzZkOTZm
Y2UzNTgyZGYwZTU0YTEzODViYS4uZTI0NDViYzgyM2Y4NmUwNTViMGU1Nzg3N2Q2Y2Y1MzFhNGZm
Y2M5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgIGlmICghd3JpdGVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbD4od3JpdGVyLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUo
YXVkaW9UcmFja0lkKSwgV1RGTW92ZSh2aWRlb1RyYWNrSWQpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgp
LCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lkKSk7CiB9CiAKIE1l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsKFJl
ZjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4mJiB3cml0ZXIsIFN0cmluZyYmIGF1ZGlvVHJh
Y2tJZCwgU3RyaW5nJiYgdmlkZW9UcmFja0lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVB
VkZJbXBsLmgKaW5kZXggZDRhZGIxNTJiZDRiYWVmN2VmN2JmMDU1ZjZkOWE4M2Q4NjdlNjdlYi4u
YTIyZjU3MWJjNTE2MTFmNjE3NDQ5MTA0Y2Y1ZmM4NjBlNTJlOWFlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIAogY2xhc3MgTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsIGZpbmFsIDogcHVibGljIE1lZGlhUmVjb3JkZXJQcml2YXRlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFt
UHJpdmF0ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1
cmVTb3VyY2UuY3BwCmluZGV4IGRiOTRmZGFmODNhOGFiZDY3YWZjZmQ2ZWEzNjlmYWE4OWM0NmMz
ZTIuLjU5YWIzODQwZmQ3MzZjYTE0NTAxNmM3ZjY2MGVjYTNiMDkwMzI0ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC05MSwx
NCArOTEsMTQgQEAgQXVkaW9DYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlOjpmYWN0b3J5KCkKIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJB
dWRpb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZpY2UsIFN0cmluZyYm
IGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpBdWRpbywgU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7
IGRldmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihz
dGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBt
X2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsK
ICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyQXVkaW9DYXB0
dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQs
IFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNv
dXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgV1RGTW92ZShkZXZpY2VJRCks
IFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6
Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkpCisgICAgLCBtX2NhcHR1cmVy
KG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkKIHsKICAgICBpbml0aWFsaXpl
R1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaApp
bmRleCA5NTNmM2E4YTBlNGY2YTA2MmI5Yjk0YThmNDE1MWE0OWYxYTQzMDFkLi5kNGM5Mzc5Zjg0
ZGFkNmY2ODgxMTk4OWQxNDM0ZWZlMTZhZWZlYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckF1ZGlvRGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEdTdHJlYW1lckF1ZGlvRGF0YSA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyQXVkaW9EYXRh
KEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwgR3N0QXVkaW9JbmZvIGluZm8pCiAgICAgICAg
IDogbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggYjNhZjM1YWY4MjQ4OGRkNGNmODIxY2Qz
ZWVhZTYzZDljZjFhY2Q4NC4uNGE2ZDQxY2U0OGNmYTBiYjdkMGY4MjdiMTNkYzk5NDE3OThlZDNi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCkBAIC0zNTEsOCArMzUxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9z
cmNfY2xhc3NfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyY0NsYXNzKiBrbGFzcykKIAogc3RhdGlj
IHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyYyog
c2VsZikKIHsKLSAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4oc2VsZik7Ci0gICAgc2VsZi0+
bWVkaWFTdHJlYW1PYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1P
YnNlcnZlcj4oc2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0gbWFr
ZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNlbGYt
Pm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2
ZXI+KHNlbGYpOwogICAgIHNlbGYtPmZsb3dDb21iaW5lciA9IGdzdF9mbG93X2NvbWJpbmVyX25l
dygpOwogICAgIHNlbGYtPmZpcnN0QXVkaW9CdWZmZXJQdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05F
OwogICAgIHNlbGYtPmZpcnN0RnJhbWVQdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBl
NWQ5YjBlMDI3NmVkZGE1ZGJkNTIwYmMxMGYzNTE4MGQwMTVkNjliLi45N2JlMWYxMmZiYjIyZGMz
NThjOTljODM5Zjk4MWYxNjU2YThlMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTI3LDE0ICsxMjcsMTQgQEAgRGlzcGxh
eUNhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3BsYXlGYWN0
b3J5KCkKIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hT
YWx0LCBjb25zdCBnY2hhciAqc291cmNlX2ZhY3RvcnkpCiAgICAgOiBSZWFsdGltZVZpZGVvQ2Fw
dHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNo
U2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9D
YXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdT
dHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKIHsKICAgICBpbml0aWFsaXpl
R1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpHU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZpY2UsIFN0
cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5n
IHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFdU
Rk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJl
YW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8
R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVh
bWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0Vu
Y29kZXJGYWN0b3J5LmNwcAppbmRleCA2OTk1YzYwMmNiMTc0NDdmYTc0MWQzOWQ0NDk0YzM1NjFk
YzFiYjgyLi5mOTlkYmVjNTllMDQwYmI3ZmZjNTVlNzVjNmE5MTMxNWRkZWM5NDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVh
bWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCkBA
IC01MTIsMTQgKzUxMiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXI+
IEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRQogICAgICAgICBnX29i
amVjdF9nZXQod2VicnRjZW5jb2Rlci5nZXQoKSwgImVuY29kZXIiLCAmZW5jb2Rlci5vdXRQdHIo
KSwgTlVMTCk7CiAKICAgICAgICAgaWYgKGVuY29kZXIpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihmb3JtYXQpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4oZm9ybWF0KTsKIAogICAgICAg
ICBHU1RfSU5GTygiVXNpbmcgVlA4IEVuY29kZXIgZnJvbSBMaWJXZWJSVEMuIik7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6TGlidnB4VnA4RW5jb2Rlcj4oKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8d2VicnRjOjpMaWJ2cHhWcDhFbmNvZGVyPigpOwogICAg
IH0KIAogICAgIGlmIChmb3JtYXQubmFtZSA9PSBjcmlja2V0OjprSDI2NENvZGVjTmFtZSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1h
dCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lckgyNjRFbmNvZGVyPihmb3Jt
YXQpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCmluZGV4IGRjNmY4ZjNmYjA1N2ZiNTQwZDkwYzAwMjI2
OGE5OTc3NDQxMDI3N2YuLjRhMDYxZmNjOTUzYjEzZDU4M2JhZTU1NDUxNTViY2UwOGRmOGY5ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCkBA
IC00MCw2ICs0MCw3IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1Ymxp
YyBSVENEVE1GU2VuZGVyQmFja2VuZCwgcHJpdmF0ZSB3ZWJydGM6OkR0bWZTZW5kZXJPYnNlcnZl
ckludGVyZmFjZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNr
ZW5kPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
RHRtZlNlbmRlckludGVyZmFjZT4mJik7CiAgICAgfkxpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5k
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCAzYWE5MGNmYTQ2
YTdlYzAwZTc1NmRhM2ZiZWNkNTJhNjQzYzcyZWNlLi45MDI3Y2U4MGY4MTkzNTdkOTQ1YmJhOWZh
MjZkZGQyYjVhMWNkZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAK
QEAgLTc5LDkgKzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNzIHByZXBh
cmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIH0KIAogY2xhc3MgQmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0
b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQmIG5ldHdvcmtUaHJlYWQpCi0g
ICAgICAgIDogbV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNv
Y2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAgOiBtX3NvY2tldEZhY3Rvcnko
bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tl
dEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAgfQogCkBAIC0xNzksNyArMTgw
LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVh
ZHMoUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1bHQgPSBmYWN0b3J5QW5kVGhy
ZWFkcy5zaWduYWxpbmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAKLSAg
ICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZp
Y2VNb2R1bGUgPSBtYWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpOwogfQogCiBzdGF0
aWMgaW5saW5lIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHN0YXRpY0ZhY3RvcnlB
bmRUaHJlYWRzKCkKQEAgLTI4OCwxMCArMjg5LDEwIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVl
CiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFk
cyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKIAogICAgIGlmICghZmFjdG9y
eUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5l
dHdvcmtNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+
KCk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogCiAg
ICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5KQotICAgICAgICBm
YWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFk
KTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSA9IG1ha2VV
bmlxdWU8QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9yeUFuZFRocmVhZHMubmV0d29y
a1RocmVhZCk7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeS0+c2V0
RGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5l
Y3Rpb25zKTsKIAogICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKmZh
Y3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9yeUFuZFRocmVhZHMucGFja2V0
U29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbnVsbHB0cik7CkBAIC0zMTQs
NyArMzE1LDcgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7CiAgICAgZmFjdG9y
eUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwg
WyZdKCkgewotICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRT
b2NrZXRGYWN0b3J5KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRBbGxvY2F0b3IgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZu
ZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwogICAgICAgICBpZiAoIW1fZW5h
YmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAgICAgICAgICAgIGJhc2ljUG9y
dEFsbG9jYXRvci0+c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRvci0+ZmxhZ3MoKSB8IGNyaWNr
ZXQ6OlBPUlRBTExPQ0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1FUkFUSU9OKTsKICAgICAgICAg
cG9ydEFsbG9jYXRvciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2NhdG9yKTsKQEAgLTMzNSw3ICsz
MzYsNyBAQCBydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBMaWJXZWJSVENQcm92aWRlcjo6
Y2VydGlmaWNhdGVHZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0g
Z2V0U3RhdGljRmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNl
cnZlcik7CiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcikK
LSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+KGZhY3RvcnlBbmRUaHJlYWRz
LnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5n
ZXQoKSk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVy
YXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5k
VGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJldHVybiAqZmFjdG9yeUFuZFRo
cmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCAxNWUyYTg3ODljMDdmYjBkMGFlYzZm
NmMyMGY3YmIxN2ZhOGRiN2QyLi41YjgyNzNiMDg1MTk2ZmZkMzBlNGQ3YTdmNjU1MTBiZWMwODAz
MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1l
ci5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBib29sIExpYldlYlJUQ1Byb3ZpZGVyOjp3ZWJSVENB
dmFpbGFibGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5
PiBMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRGVjb2RlckZhY3RvcnkoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRGVjb2RlckZhY3Rvcnk+
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4o
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gTGli
V2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5PigpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKaW5kZXggODJjYmNiMWM2NmQzMmVhMThjZGViMTY3
OTM4ZDY4ZDNiMTJlNDE5YS4uZjdkODVkYzYwYTYxYTgxNDZkYmEwZDAzZTU1ZDc1NzYyZmU5MGY4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YS5jcHAKQEAgLTE4OCw4ICsxODgsOCBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgcwogICAgICAg
ICBpZiAoIXJlbW90ZUlPVW5pdCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2lu
cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4oaW5wdXREZXNjcmlwdGlvbik7Ci0gICAgICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4ob3V0cHV0RGVzY3JpcHRpb24p
OworICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbj4oaW5wdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fb3V0cHV0RGVzY3JpcHRp
b24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4ob3V0cHV0RGVzY3JpcHRp
b24pOwogCiAgICAgICAgIG1fZGF0YVNvdXJjZSA9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3Jl
YXRlKGRlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDIsIHN0cmVhbVRyYWNrKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KaW5kZXggZThlM2QzNDg2ZGE0M2Fh
YzFkZDU0Yjc4ZTZiNGRmNGRjOTgxNjc5MC4uNjExYWMxNmI5ZWNiODY4OThhMzcyNjQ3MWM3NjIw
NzEyZmI5YjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQpA
QCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29u
ZmlndXJlKCkKICAgICBjb25zdCBib29sIGlzTm9uSW50ZXJsZWF2ZWQgPSB0cnVlOwogICAgIEZp
bGxPdXRBU0JERm9yTFBDTShtX3N0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSgpLCBjaGFubmVsQ291
bnQsIGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZs
b2F0LCBpc0Zsb2F0LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7CiAKLSAgICBtX2F1
ZGlvQnVmZmVyTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX3N0
cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBtX21heGltaXVtRnJh
bWVDb3VudCk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVm
ZmVyTGlzdD4obV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lICog
bV9tYXhpbWl1bUZyYW1lQ291bnQpOwogCiAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3Jt
YXREZXNjcmlwdGlvbjsKICAgICBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoTlVMTCwg
Jm1fc3RyZWFtRm9ybWF0LCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0RGVzY3JpcHRp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1t
CmluZGV4IGY5ZGM0YTg0N2Y0YTM1NWQ5Y2NmZjRjZGUwMzA4ZDBkNWM1YzQ0NTYuLjM4OGQ3MWUy
NGIyNWViZjZkNzc4ODE0ZmRkMGE5NjYzYjE3MDU0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgUmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpj
b252ZXJ0VG9ZVVYoQ1ZQaXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1f
cGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1h
dFR5cGVLZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKSB9KTsKKyAgICAgICAgbV9w
aXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4o
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhl
bEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkp
IH0pOwogCiAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNvbnZlcnQocGl4ZWxC
dWZmZXIpOwogfQpAQCAtNzUsNyArNzUsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnJvdGF0ZVBpeGVsQnVmZmVyKAogICAg
ICAgICBJbnRTaXplIHNpemUgPSB7IChpbnQpQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVm
ZmVyKSAsIChpbnQpQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgfTsKICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZShy
b3RhdGlvblRvQW5nbGUocm90YXRpb24pKTsKLSAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUodHJhbnNmb3Jt
KSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlciksIElt
YWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKKyAgICAgICAg
bV9yb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdU
Rk1vdmUodHJhbnNmb3JtKSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShw
aXhlbEJ1ZmZlciksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6
Ok5vKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9yb3RhdGlvblNlc3Npb24tPnJvdGF0ZShwaXhl
bEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXggOGUyOWQ3YjgxYTE3M2RmYTUz
NzA1ZmExZTYyYzllODgzYzRmOTUwMi4uZDQ3NjlkNjllNGFmMDQ3MGQ2MmNlOTBiNzU0NDBlMjgy
NzY5ZTdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAtMzUsNiArMzUsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayBm
aW5hbCA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jayk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2soTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1v
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jay5oCmluZGV4IDNjNmRlMWM0ZWJlNGVjNzQ3MzU0MGFlY2NiODk3NjJiMTk1NTVjZDQuLjEz
ODhhZDA1MTMxMDhiMmViOTJlYzJiYmUyODkzMzY1MmU5OWEwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5o
CkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJUQ0RhdGFD
aGFubmVsSGFuZGxlck1vY2sgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyLCBw
dWJsaWMgVGltZXJFdmVudEJhc2VkTW9jayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayhjb25zdCBTdHJpbmcmLCBj
b25zdCBSVENEYXRhQ2hhbm5lbEluaXQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKaW5kZXggMmYxZmI1NWVlNjcxZjJmMjI4ZmM1
MTUxZDBkZDY5Y2Y4ZWM2OTVjYi4uMmM3YzQxYmQ2OTZmZjFmOWJhYjM4MzgxYTRiNTgzODU2OGIx
OGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmll
cnNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVy
c01vY2suY3BwCkBAIC05OCw3ICs5OCw3IEBAIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OlJl
bW90ZURhdGFDaGFubmVsTm90aWZpZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpCiAKIHZv
aWQgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSgpCiB7Ci0gICAgbV9jbGllbnQtPmRp
ZEFkZFJlbW90ZURhdGFDaGFubmVsKHN0ZDo6bWFrZV91bmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5k
bGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENEYXRhQ2hhbm5lbEluaXQo
KSkpOworICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChtYWtlVW5pcXVlPFJU
Q0RhdGFDaGFubmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRD
RGF0YUNoYW5uZWxJbml0KCkpKTsKIH0KIAogRGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyOjpEYXRh
Q2hhbm5lbFN0YXRlTm90aWZpZXIoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBjbGllbnQs
IFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2UuY3BwCmluZGV4IDU1OTkzMzgyYjNhMWRjMzZkODM1NmI2MWIyNWM3MDAyZTA3
MzQ3ZmUuLjM4N2EyMWRhZjQ1NTIzOTY4YWVlNGY3OTQxOWQzZDhiODg2OTBkN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE1lZGlhUGxheWVyIEVuaWduZSBTdXBwb3J0CiB2b2lk
IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5n
aW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10gKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgIHJlZ2lzdHJhcihbXSAo
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCiAgICAgICAgIHN1cHBv
cnRzVHlwZSwgMCwgMCwgMCwgMCk7CiB9CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVm
ZmVyZWQoKSBjb25zdAogICAgIGlmIChtX21lZGlhU291cmNlUHJpdmF0ZSkKICAgICAgICAgcmV0
dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpOwogCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogYm9vbCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZTo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCBjYzY3Y2U2
ODhmM2JjYTIyMjY5MGI0M2YxMDU4NzhiYTllM2MyOGY4Li45MDUxNDMxNjIxYThjMTA4YTZlZjBm
NTFlYjYwZjc3NGFmY2MwYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0xNTksOSArMTU5LDkgQEAgQmxv
YlJlc291cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoQmxvYkRhdGEqIGJsb2JEYXRhLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QKICAgICAsIG1fYXN5bmMgeyBhc3luYyB9CiB7CiAgICAgaWYg
KG1fYXN5bmMpCi0gICAgICAgIG1fYXN5bmNTdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5j
RmlsZVN0cmVhbT4oKnRoaXMpOworICAgICAgICBtX2FzeW5jU3RyZWFtID0gbWFrZVVuaXF1ZTxB
c3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyZWFtID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWxlU3RyZWFtPigpOworICAgICAgICBtX3N0cmVhbSA9IG1ha2VVbmlx
dWU8RmlsZVN0cmVhbT4oKTsKIH0KIAogQmxvYlJlc291cmNlSGFuZGxlOjp+QmxvYlJlc291cmNl
SGFuZGxlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCA4MTEyYjk3M2VlZjU0ZWQ3YTVjN2E1MTRjZjEw
MmFjOTkxZTc2NTMzLi5iNTQxZjYyZWUwMDUyMDM2MmMxNTU3ZjdjYTQ5NjRhMjM3Yjg3NDlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlciA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWNvZGluZ1Jlc3VsdERpc3BhCiAKIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4gY3JlYXRlRGVjb2RlVGFzayhjb25zdCBVUkwm
IHVybCwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiBzY2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RGVjb2RlVGFzaz4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2RlVGFzaz4o
CiAgICAgICAgIHVybC5zdHJpbmcoKSwKICAgICAgICAgc2NoZWR1bGVDb250ZXh0LAogICAgICAg
ICBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4IGE5ODQzZjUwZTVhNDM0MDNk
OGY1MmYwYTk2N2Y5MDI3ODY1ZThkNTYuLjhkYWVjNTRhMTM0MmRhYjU5YzM1Y2M0OTI3YTAwZmU2
MjI5NDk2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlRXJyb3JCYXNlLmgKQEAgLTM3LDYgKzM3LDcgQEAgV0VCQ09SRV9FWFBPUlQgZXh0ZXJu
IGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWw7IC8vIFVzZWQgZm9y
IGUKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldl
YktpdFNlcnZpY2VXb3JrZXI7IC8vIFVzZWQgZm9yIGVycm9ycyB0aGF0IGhhcHBlbiB3aGVuIGxv
YWRpbmcgYSByZXNvdXJjZSBmcm9tIGEgc2VydmljZSB3b3JrZXIuCiAKIGNsYXNzIFJlc291cmNl
RXJyb3JCYXNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmlu
ZGV4IDMwYzI3ZjU3NmExNzdlNmI2YWIxOTQ3NDBhN2Q5MDI1YjY1OWZjYWQuLjZhMzFlM2U1Mjdm
OGVjOTJkNmY2MmI5NmNkZDgxOTQ0MTRiNTVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGNvbnN0
IEF0b21TdHJpbmcmIHByb3RvY29sCiB9CiAKIFJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRs
ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50LCBib29sIGRlZmVyc0xvYWRpbmcsIGJv
b2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKQot
ICAgIDogZChzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlSGFuZGxlSW50ZXJuYWw+KHRoaXMsIGNv
bnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZm
ICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYpKQorICAgIDogZChtYWtlVW5pcXVlPFJlc291cmNlSGFuZGxlSW50ZXJuYWw+
KHRoaXMsIGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29u
dGVudFNuaWZmICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwgc2hvdWxk
Q29udGVudEVuY29kaW5nU25pZmYpKQogewogICAgIGlmICghcmVxdWVzdC51cmwoKS5pc1ZhbGlk
KCkpIHsKICAgICAgICAgc2NoZWR1bGVGYWlsdXJlKEludmFsaWRVUkxGYWlsdXJlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IGRhZDkwMTBmOTU3MGViYzU2NzYzMzU0
M2ZkMWZjNTAyZjg0NjliOTkuLjcxM2I0ZGZiMzBiMmFmZGZiZWFmZjRlZTUzNzBhMjU0NmZhZDNh
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTY5LDcgKzE2OSw3
IEBAIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VR
dWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1
bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUt
PmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAg
ICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9z
ZW1hcGhvcmUud2FpdCgpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdl
UXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUo
d29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMjI2
LDcgKzIyNiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAgICAgfTsKICAgICAKICAgICBp
ZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1f
bWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3Zl
KHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29y
aykpOwogfQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAg
fTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVl
LT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmsp
KSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2
b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbChD
RkVycm9yUmVmCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9t
ZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdU
Rk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVl
PEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zMTEsNyArMzExLDcgQEAgQ0ZD
YWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjoKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1
ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFw
cGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBl
bHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1h
cGhvcmUud2FpdCgpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5n
CiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVl
dWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRTZW5k
Qm9keURhdGEoQ0YKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBt
X21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4o
V1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlx
dWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM4MCw3ICszODAsNyBAQCBC
b29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmNhblJlc3BvbmRUb1BybwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAg
IGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3Nl
bWFwaG9yZS53YWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggYzliNTNlMzEyYWQ4
NTU3NmQzNjZlZjRkYzUzNzQzOTFmZThjNjkwYy4uYmE1NWYwMDQ4YjhlNGRkYzViMDczNGQ5OTNk
YzliMTNiOGNiMmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNTIzLDcgKzUyMyw3
IEBAIC0gKHZvaWQpX3Jlc3RhcnQKIAogICAgIF9yZXNvdXJjZSA9IHNlbGYuc2Vzc2lvbi5sb2Fk
ZXIucmVxdWVzdFJlc291cmNlKHNlbGYub3JpZ2luYWxSZXF1ZXN0LCBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGluZyk7CiAgICAgaWYgKF9yZXNv
dXJjZSkKLSAgICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3Jlc291cmNl
LT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ+
KHNlbGYpKTsKIH0KIAogLSAodm9pZClfY2FuY2VsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBhNDVhNWY0ZTRhMDI4
ZmU2ZTdmMmRmYjc1ZWMyYzhhZWM5M2VkMmJiLi4xMDE2MjRmMjkwMGE5NGNjN2QxYTg5OTg5Njc2
ZDZiNDVhYjdmYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBPcHRpb25hbDxWZWN0
b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdAogICAgICAgICAiQU5EICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9CID8p
KSAiXAogICAgICAgICAiT1JERVIgQlkgbGVuZ3RoKHBhdGgpIERFU0MsIGxhc3R1cGRhdGVkIjsK
IAotICAgIGF1dG8gcHN0bXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9k
YXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHBzdG10ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1l
bnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaWYgKCFwc3RtdCkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIApAQCAtNTY2LDcgKzU2Niw3IEBAIGJvb2wgQ29va2llSmFyREI6OmRlbGV0
ZUFsbENvb2tpZXMoKQogCiB2b2lkIENvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50
KGNvbnN0IFN0cmluZyYgc3FsKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0byBzdGF0ZW1l
bnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBp
bnQgcmV0ID0gc3RhdGVtZW50LT5wcmVwYXJlKCk7CiAgICAgQVNTRVJUKHJldCA9PSBTUUxJVEVf
T0spOwogICAgIG1fc3RhdGVtZW50cy5hZGQoc3FsLCBXVEZNb3ZlKHN0YXRlbWVudCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApp
bmRleCAwYzAzZTlkNjkyYzdmNmRjNjEzMDg2ZmYyNTVjMjBlNWM2YmJlOWU5Li4yNjg3YWU3NGZi
OWQ5OTQyOTcyYmVkY2FjNmFiOWIxMTU5YTdlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtNDEsNiArNDEsNyBAQCBl
bnVtIGNsYXNzIENvb2tpZUFjY2VwdFBvbGljeSB7CiB9OwogCiBjbGFzcyBDb29raWVKYXJEQiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q29va2llSmFyREIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggZmE1YzhkMmQy
MWI2MjczODE1ZDAyM2E0ZjIwNDU1MDE2ZTk2MzhhZi4uZTJiNGI1ZGZiZGE2MmEzYzBjYjZiZjkx
ODFiYmQ2OGZkN2E0YTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBA
IHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgLS1lbmQ7IC8vIExh
c3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5n
IHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0g
c3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGly
KTsKKyAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVVuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4o
dXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKIAogICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXND
YWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1fc3RvcmFnZVNpemVMaW1pdCkg
ewogICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50cnlT
aXplKCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYKIAogICAg
ICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOyAvLyBJbnZhbGlkYXRlIGV4aXN0aW5nIGVu
dHJ5IG9uIDIwMAogCi0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2Fj
aGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURp
cik7CiAgICAgICAgIGJvb2wgY2FjaGVhYmxlID0gY2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhl
YWRlcnMocmVzcG9uc2UpOwogICAgICAgICBpZiAoY2FjaGVhYmxlKSB7CiAgICAgICAgICAgICBj
YWNoZUVudHJ5LT5zZXRJc0xvYWRpbmcodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3ZDE3MjE3YzJlNDQy
YWM2ZjNkZThjNGI2MGE5NTI2YzlmNjU4NDJhLi43YjA0ZmEyNmE0MmFiOTc4YWUwN2JkMzFmMGU2
OTE1NTFiYmM0NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBDdXJsQ29udGV4dDo6
Q3VybENvbnRleHQoKQogICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+
KCJXRUJLSVRfQ1VSTF9NQVhfSE9TVF9DT05ORUNUSU9OUyIpKQogICAgICAgICBtYXhIb3N0Q29u
bmVjdGlvbnMgPSAqdmFsdWU7CiAKLSAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBt
YXhIb3N0Q29ubmVjdGlvbnMpOworICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxDdXJsUmVx
dWVzdFNjaGVkdWxlcj4obWF4Q29ubmVjdHMsIG1heFRvdGFsQ29ubmVjdGlvbnMsIG1heEhvc3RD
b25uZWN0aW9ucyk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0gZW52VmFyLmRl
ZmluZWQoIkRFQlVHX0NVUkwiKTsKQEAgLTMzNiw3ICszMzYsNyBAQCBDVVJMY29kZSBDdXJsSGFu
ZGxlOjp3aWxsU2V0dXBTc2xDdHgodm9pZCogc3NsQ3R4KQogICAgICAgICByZXR1cm4gQ1VSTEVf
QUJPUlRFRF9CWV9DQUxMQkFDSzsKIAogICAgIGlmICghbV9zc2xWZXJpZmllcikKLSAgICAgICAg
bV9zc2xWZXJpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgp
OworICAgICAgICBtX3NzbFZlcmlmaWVyID0gbWFrZVVuaXF1ZTxDdXJsU1NMVmVyaWZpZXI+KHNz
bEN0eCk7CiAKICAgICByZXR1cm4gQ1VSTEVfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmlu
ZGV4IGRkNjNhNGFiNDI3MDNmNmU5NDJmOGVmOTU1MTM2YTg2YmNkZjY2NTEuLjJiNDc3MzZmNmU3
MWYxYzQ5NzgxYmUxOTQ2YzBiOGUzNmJkNjc1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBA
IC03Niw3ICs3Niw3IEBAIGNvbnN0IFZlY3RvcjxjaGFyPiogQ3VybEZvcm1EYXRhU3RyZWFtOjpn
ZXRQb3N0RGF0YSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFtX3Bvc3RE
YXRhKQotICAgICAgICBtX3Bvc3REYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+
KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7CisgICAgICAgIG1fcG9zdERhdGEgPSBtYWtlVW5pcXVl
PFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsKIAogICAgIHJldHVybiBtX3Bv
c3REYXRhLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGE4YmI4ZDgxYTdh
YmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZkZTJkNTUuLmNjZGJiMjgyMzlmMjJjMzYzNmNhYzE0YjA3
ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aXBh
cnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXJs
TXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpib3VuZGFyeSk7CiB9CiAKIE9wdGlvbmFsPFN0cmlu
Zz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25z
ZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAxN2ZlZGRmMGUwODE0ZDVlYWQwNjgyZjZlZjE0Zjc2
NWM5MWU1OTA4Li5jMWQxNTdiZWZmOTQ0NTQ2MzFjZDA1OTYyZjIzMTEzMmZkOGRiOGRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjYWxsQ2xpZW50KEZ1
bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3QmLCBDdXJsUmVxdWVzdENsaWVudCYpPiYmCiB2b2lkIEN1
cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAg
ICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgICAg
ICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh0YXNrKSkpOwogICAgIGVsc2UgaWYgKGlzTWFpblRocmVhZCgpKQogICAgICAgICB0YXNr
KCk7CiAgICAgZWxzZQpAQCAtMjA1LDcgKzIwNSw3IEBAIENVUkwqIEN1cmxSZXF1ZXN0OjpzZXR1
cFRyYW5zZmVyKCkKICAgICBhdXRvIGh0dHBIZWFkZXJGaWVsZHMgPSBtX3JlcXVlc3QuaHR0cEhl
YWRlckZpZWxkcygpOwogICAgIGFwcGVuZEFjY2VwdExhbmd1YWdlSGVhZGVyKGh0dHBIZWFkZXJG
aWVsZHMpOwogCi0gICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsSGFuZGxl
PigpOworICAgIG1fY3VybEhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybEhhbmRsZT4oKTsKIAogICAg
IG1fY3VybEhhbmRsZS0+c2V0VXJsKG1fcmVxdWVzdC51cmwoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hl
ZHVsZXIuY3BwCmluZGV4IDkxODM3YWY5ZjNlNDc3M2I1YzcxYzFjMjYwZGI5NmY1ODZiMjExYWYu
LjNhYTVmNTJkYjYyN2FiYjBlY2NhZjI5MjEzZGNlMTJmYmM2ZmJjOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVs
ZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRpSGFuZGxlPigp
OworICAgIG1fY3VybE11bHRpSGFuZGxlID0gbWFrZVVuaXF1ZTxDdXJsTXVsdGlIYW5kbGU+KCk7
CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heENvbm5lY3RzKG1fbWF4Q29ubmVjdHMpOwog
ICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhUb3RhbENvbm5lY3Rpb25zKG1fbWF4VG90YWxD
b25uZWN0aW9ucyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heEhvc3RDb25uZWN0aW9u
cyhtX21heEhvc3RDb25uZWN0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDdiZTAw
YWQzNGI4ZTU5ODgyZGUwZjUxM2I2YzJkZGY5MDExZjk5ZTEuLjdkNGE3MmZkODc1NTc2ZDlhNTk4
YWExNTg0MDRlODlmMTI0ZDcwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0xNjIsNyAr
MTYyLDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ3VybFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmUKIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICghZC0+bV9kZWxlZ2F0
ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKKyAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IG1ha2VVbmlx
dWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKIAogICAgIHJldHVybiBkLT5t
X2RlbGVnYXRlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAK
aW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5NTVlNjg4OWM2NTcyMGM5ZWZhZjIxYi4uMTNhODMyYzI2
NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkwMmRmYTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9u
V29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgbV90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgIG1fdGFza1F1ZXVlLmFwcGVuZCht
YWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpleGVjdXRlVGFza3MoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDVh
MDZmMmVmODllZjVjMjFiZTE1N2M3MWRhMTQxOWVjODQ4MDllZjcuLjc2NTQzYWQxNmMxNDk0ODU4
ODIyOTkxZjMwNWZmN2EzM2UxN2FlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAg
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogY2xhc3Mg
UHJldmlld0NvbnZlcnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6CiAgICAgUHJldmll
d0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0
cmluZyYgcGFzc3dvcmQgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFmMTg3YjUw
NzY1YTlkMTdjMmVjNGVjODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdjZWMxZTJm
ZjZlNzNmMjRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClj
YWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogewog
ICAgIC8vIFN5bmMgeGhyIHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1fbWVzc2Fn
ZVF1ZXVlKQotICAgICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgICAgIHJl
dHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4o
V1RGTW92ZShmdW5jdGlvbikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlLgog
ICAgIGlmICghc2NoZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVkUGFpcnMp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jl
c29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3MTkzNGZl
YzM3NjNhNWE0YTgyZDkuLmVlNDRkODlkMTk5ODU0NjhiN2FlYTFlNzVhNDQyMzBlMjc2ODIwNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNv
bHZlUXVldWVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEROU1Jl
c29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3Qg
aWRlbnRpZmllciwgRAogCiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5n
ZXQoKSksICJpZGVudGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CiAKLSAg
ICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtl
X3VuaXF1ZTxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworICAg
IG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVl
PEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4oV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoY2FuY2VsbGFibGUpKSk7CiB9CiAKIHZvaWQg
RE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBlNGM4YjBmMTNlNmQwODlhNTg5
MmFhN2FlMGE5YjgyMTU4NWJiOWE0Li43YjI4ZjI2YjUzODRjYjRiZDViZmQ2NzU3MDdjZjJiZmZk
NWYwNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0xNzMsNyAr
MTczLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9tUGVy
c2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjcmV0U2VydmljZVNlYXJjaERh
dGE+KGNhbmNlbGxhYmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBk
YXRhID0gbWFrZVVuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBzZWNyZXRfc2VydmljZV9zZWFyY2gobnVs
bHB0ciwgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwKICAg
ICAgICAgc3RhdGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5MT0NL
IHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NFQ1JFVFMpLCBjYW5jZWxsYWJsZSwKICAgICAgICAgW10o
R09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCmluZGV4IDEw
ZmVjYmM0MTk0Nzk1ZjMyZDFjYTdlNzYwOWFjNGZmMjA5MmNkMjMuLmFhZmVkM2RlNzliOTlhYWM0
NzY5Yzc2YjU1ZjZjMWNiYjY2MWI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQmlkaVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9CaWRpUmVzb2x2ZXIuaApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyQmFz
ZTxJdGVyYXRvciwgUnVuLCBEZXJpdmVkQ2xhc3M+OjphcHBlbmRSdW5JbnRlcm5hbCgpCiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoZW5kT2Zmc2V0ID49IHN0YXJ0T2Zmc2V0KQotICAgICAgICAg
ICAgbV9ydW5zLmFwcGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKKyAgICAgICAgICAgIG1fcnVu
cy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxSdW4+KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgKyAxLCBj
b250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5jcmVtZW50KCk7CiAg
ICAgICAgIG1fc29yID0gbV9lb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2Fs
ZUlDVS5jcHAKaW5kZXggNTllMWZjNzJhMmJmMjk2OTQ1YTg2Zjg1NTJiODYzNzZhOWVhNTg2ZC4u
MmM4Y2NlNzMwODhmYTVhZDBjZjU5NTljY2U0Zjk2OTFiZjM1N2EwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBu
YW1lc3BhY2UgaWN1OwogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShj
b25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAK
IExvY2FsZUlDVTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAgLTE2MywyMiArMTYz
LDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29uc3QgVURhdGVGb3Jt
YXQqIGRhdGVGb3JtYXQpCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2FsZUlD
VTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQsIFVEYXRl
Rm9ybWF0U3ltYm9sVHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSkK
IHsKICAgICBpZiAoIWRhdGVGb3JtYXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oKTsKICAgICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSkgIT0g
c3RhcnRJbmRleCArIHNpemUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
KTsKIAotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
KTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAg
bGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgICAgICBpbnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0
eXBlLCBzdGFydEluZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChzdGF0dXMg
IT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihsZW5ndGgp
OwogICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIHVkYXRfZ2V0U3ltYm9s
cyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3Ro
LCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5hcHBl
bmQoU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICB9CiAgICAgcmV0dXJuIFdU
Rk1vdmUobGFiZWxzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQq
CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNr
TW9udGhMYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmlu
Zz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChXVEY6
Om1vbnRoRnVsbE5hbWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+YXBwZW5k
KFdURjo6bW9udGhGdWxsTmFtZVtpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQogCiBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMoKQogewotICAgIGF1
dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRv
IGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNl
cnZlQ2FwYWNpdHkoMik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIkFNIik7CiAgICAgbGFiZWxzLT5h
cHBlbmQoIlBNIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xv
Y2FsZU5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNw
cAppbmRleCBiYjZiMjZiYTU5Y2IzNmI5ODliN2U2ZjU4NjMwYzdhN2IzYjU2ZWE3Li43ODE1YTQ3
OGUwMjk3NDU1OTY1NzZjMmRlZDIyMTE5MzZhYTk2YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgTG9jYWxl
Tm9uZSA6IHB1YmxpYyBMb2NhbGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6
OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxMb2NhbGVOb25lPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZU5vbmU+KCk7CiB9
CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVOb25lKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmluZGV4IGY4ZTE2NzA4NDlhOTU4OThh
MTQ1N2JjOThkYTkxZTRiZGU3ODRjNzkuLmU1ZjI4MTY2YzZkZDM0YmM1MzUwOWI2YTAwMjBhODg4
OTA3YzJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjSUNVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lD
VS5jcHAKQEAgLTE1Niw0MyArMTU2LDQzIEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNv
ZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICAvLyBodHRwOi8vZGVt
by5pY3UtcHJvamVjdC5vcmcvaWN1LWJpbi9jb252ZXhwCiAgICAgICAgIGlmICghc3RyY21wKG5h
bWUsICJ3aW5kb3dzLTg3NCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVd
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+
KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0
cmNtcChuYW1lLCAid2luZG93cy05NDkiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUs
IFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
ZGVjSUNVPihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOworICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWN5cmlsbGljIikpIHsKICAgICAgICAgICAgIHJlZ2lz
dHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTdfMy0xMC4yIik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEwLjIi
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWdyZWVrIikpIHsKICAgICAgICAgICAgIHJl
Z2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTZfMi0xMC40Iik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8yLTEw
LjQiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWNlbnRyYWxldXJyb21hbiIpKSB7CiAg
ICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAi
bWFjb3MtMjktMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtdHVya2lzaCIpKSB7
CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4y
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1l
LCAibWFjb3MtMzUtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiRVVDLUtSIikpIHsKICAg
ICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5Iik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2lu
ZG93cy05NDkiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJDb2Rl
Y3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgY29uc3QgY2hhciogY2Fu
b25pY2FsQ29udmVydGVyTmFtZSA9IHVjbnZfZ2V0Q2Fub25pY2FsTmFtZShuYW1lLCAiSUFOQSIs
ICZlcnJvcik7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1MoZXJyb3IpKTsKICAgICAgICAgcmVn
aXN0cmFyKG5hbWUsIFtuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lXSB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENv
bnZlcnRlck5hbWUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNV
PihuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCmlu
ZGV4IDkzMTQ1MzMyOGE2ZjY2OTQ4NWVlMDFmOGE0ZTJjZWRlNTAyNjc3ZmYuLjkyYzY2MTNjYjFm
Y2MwZTMwOGE3M2MzNTBhOWUwN2VmNzczNDYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBU
ZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3Ry
YXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKFRleHRD
b2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ3aW5kb3dzLTEyNTIi
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0xhdGluMT4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y1JlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
UmVwbGFjZW1lbnQuY3BwCmluZGV4IDE3NjViZjc5MjE1OTc1YjE1N2M4YjNmNzRjNTU3MmM0NzFl
MjExNDEuLmM4YjU1OGM4Y2EyZDNhZmQzMDIxNGJjZmMzN2ExNDU3NzU2YTEzYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVy
RW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRleHRD
b2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0
cmFyKQogewogICAgIHJlZ2lzdHJhcigicmVwbGFjZW1lbnQiLCBbXSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCBi
ZTAwNjU2NDQ2NDhmY2UwYzM3OWQzYzc0M2VlMjI3ZWE5ZWRhNmY0Li45MGM0NDc1ZDAyMGI5ZjQ3
MWI1YmU3N2MzY2FhYzBmZGM5OGNiYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBAIHZvaWQgVGV4dENv
ZGVjVVRGMTY6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVn
aXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi0xNkxFIiwgW10gewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKICAgICB9KTsKICAg
ICByZWdpc3RyYXIoIlVURi0xNkJFIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
ZXh0Q29kZWNVVEYxNj4oZmFsc2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCBhM2RhZDRlOWQxNjM3Njg2MzA4
OGIxOTcxMGY4MzlkYmJmZmVhOGRkLi5lMWQwYTUzYzcxN2FhZTczOTkzOWY1MWM0ZDMyOTM0NWFm
ODljYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y1VURjguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRG
OC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckVuY29k
aW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVj
VVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAg
ICByZWdpc3RyYXIoIlVURi04IiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0Q29kZWNVVEY4PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNV
VEY4PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCmluZGV4IDI5NmM0NjlmMTY5ZmI5MTFkYzhk
YmQ3YTY0N2VhNTY0MWUyZmZlMTkuLjQ4YWRiYTlkNGIxYTdhOWE2NThhZWY5ZGZhZGY4NWFkZGU5
ZGNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VXNlckRlZmluZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjVXNlckRlZmluZWQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgVGV4dENvZGVjVXNlckRl
ZmluZWQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0
cmFyCiB2b2lkIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNS
ZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigieC11c2VyLWRlZmluZWQiLCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVk
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVc2VyRGVmaW5lZD4oKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvTG9jYWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxl
TWFjLm1tCmluZGV4IGE1MTdiZTM0MWY2YWM0YmU4ZTg5M2NmYWQ3YzIyODg0NWQ2YTgyODAuLjJi
M2QwM2EzOGE1ZDIwMWJiNmRjYjhlYmU0NGY0NmZlZWZjNjdlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTY3LDcgKzY3LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9j
YWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlTWFj
PihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQo
KSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVEYXRlVGlt
ZUZvcm1hdHRlcihOU0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFyKiBjYWxlbmRhciwgTlNEYXRl
Rm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSB0aW1lU3R5bGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRl
eCA2YTE2MGRlY2NmYzkyNmFlZjM3ZGUyM2U5N2Y2MmU4ZjVjNjc5MDZhLi5hYTAwYTRhZDZmNWI1
OTk4MmI2YjQ3NzMxNzFjOGJjN2MwMzM5MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIExDSUQg
TENJREZyb21Mb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlV2luPihMQ0lERnJvbUxvY2FsZShsb2Nh
bGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxv
Y2FsZSkpOwogfQogCiBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKaW5k
ZXggYWY0NjkxMzkwODFlODBjMTIwN2I4MmM5N2ZkZmEzYzc3MjFhNjUxMS4uMmNlYjQ3NWU1ZmFl
YmI2NzBjNzQxNDQ3NWE0NzI5MjQ5NTJkY2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3Rh
dGljIFVJTlQgZ2V0Q29kZVBhZ2UoY29uc3QgY2hhciogbmFtZSkKIAogc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2RpbmcmIGVu
Y29kaW5nLCBjb25zdCB2b2lkKikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CiB9CiAK
IFRleHRDb2RlY1dpbjo6VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2Vy
T3BlblZSLmNwcAppbmRleCBkMWRjNjczNjg2ZjY1MWUzZTAzMjkxYjdjMDJjMzFiMGMxNjliYmMy
Li5lN2NmNzEzN2UzM2FhNTViZjdlNTg1ZWUxNjRlNjczZDNhYWVlYzZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFu
YWdlck9wZW5WUi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZSUGxhdGZv
cm1NYW5hZ2VyT3BlblZSPiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Y3JlYXRlKCkKICAgICBp
ZiAoIXZyOjpWUl9Jc1J1bnRpbWVJbnN0YWxsZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4oKTsKIH0K
IAogVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6On5WUlBsYXRmb3JtTWFuYWdlck9wZW5WUigpCkBA
IC03OCw3ICs3OCw3IEBAIFZlY3RvcjxXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlI6OmdldFZSRGlzcGxheXMoKQogCiAgICAgVmVjdG9yPFdlYWtQdHI8
VlJQbGF0Zm9ybURpc3BsYXk+PiBkaXNwbGF5czsKICAgICBpZiAoIW1fZGlzcGxheSkKLSAgICAg
ICAgbV9kaXNwbGF5ID0gc3RkOjptYWtlX3VuaXF1ZTxWUlBsYXRmb3JtRGlzcGxheU9wZW5WUj4o
bV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CisgICAgICAgIG1fZGlzcGxheSA9IG1h
a2VVbmlxdWU8VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNv
bXBvc2l0b3IpOwogICAgIGRpc3BsYXlzLmFwcGVuZChtYWtlV2Vha1B0cigqbV9kaXNwbGF5KSk7
CiAgICAgcmV0dXJuIGRpc3BsYXlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGFiYWRkYzdmYmNhMjM1OWVmZjViOTgxMWMxOTVmNmI1
YWJjMWJhODMuLjE2OTc4NTVmZTcyZjYzN2U2NWFkNDc3NzJhZmE2MWM3NDcxOTI0NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTkzLDcg
KzkzLDcgQEAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgUGFzdGVib2FyZE93bmVyV25kUHJvYyhI
V05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHcKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgYXV0byBw
YXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIGF1dG8gcGFz
dGVib2FyZCA9IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKTsKICAgICBDT01QdHI8SURhdGFPYmpl
Y3Q+IGNsaXBib2FyZERhdGE7CiAgICAgaWYgKCFTVUNDRUVERUQoT2xlR2V0Q2xpcGJvYXJkKCZj
bGlwYm9hcmREYXRhKSkpCiAgICAgICAgIGNsaXBib2FyZERhdGEgPSAwOwpAQCAtMTA2LDE2ICsx
MDYsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckRyYWdBbmREcm9wKCkKIHsKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBkYXRhT2JqZWN0Owog
ICAgIFdDRGF0YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFPYmplY3QpOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRhdGFPYmplY3QuZ2V0KCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRhdGFPYmplY3QuZ2V0KCkpOwogfQogCiAvLyBz
dGF0aWMKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKGRyYWdEYXRh
LnBsYXRmb3JtRGF0YSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJv
YXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICAvLyBGSVhNRTogU2hv
dWxkIGFkZCBhIGNvbnN0IG92ZXJsb2FkIG9mIGRyYWdEYXRhTWFwIHNvIHdlIGRvbid0IG5lZWQg
YSBjb25zdF9jYXN0IGhlcmUuCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2Fy
ZD4oY29uc3RfY2FzdDxEcmFnRGF0YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjb25zdF9jYXN0PERyYWdEYXRhJj4oZHJhZ0Rh
dGEpLmRyYWdEYXRhTWFwKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCmluZGV4IDE5NjQ5YzU2NmNmY2Y1ZjQy
NDMwOWQxZDhkMTAwYjBiNGZmNzcwYTguLjZmN2Y0YmExNjYwYjRmN2E5NzcyMTJjODU2M2E0M2M2
NjVlMzBiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudURCLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIGludCBTZWFyY2hQb3B1cE1lbnVEQjo6
ZXhlY3V0ZVNpbXBsZVNxbChjb25zdCBTdHJpbmcmIHNxbCwgYm9vbCBpZ25vcmVFcnJvcikKIAog
c3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gU2VhcmNoUG9wdXBNZW51REI6OmNyZWF0
ZVByZXBhcmVkU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogewotICAgIGF1dG8gc3RhdGVt
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7
CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRh
YmFzZSwgc3FsKTsKICAgICBpbnQgcmV0ID0gc3RhdGVtZW50LT5wcmVwYXJlKCk7CiAgICAgQVNT
RVJUX1VOVVNFRChyZXQsIHJldCA9PSBTUUxJVEVfT0spOwogICAgIHJldHVybiBzdGF0ZW1lbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwCmluZGV4IGRi
Zjk5YTQ1Y2U3MDNhOWQ4NTdhMGU2MDE5ZDY4MDZkZDExZmExN2IuLmM5N2E3ZWJhYWFiZGQ4ZTI2
MjlhYTM3N2U3MjY3ZWJkN2M4NTEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9XQ0RhdGFPYmplY3QuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgU1RETUVUSE9ESU1QIFdDRGF0
YU9iamVjdDo6U2V0RGF0YShGT1JNQVRFVEMqIHBmb3JtYXRldGMsIFNUR01FRElVTSogcG1lZGl1
bSwgQk8KICAgICBpZiAoIXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAKLSAgICBhdXRvIGZldGMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZPUk1BVEVUQz4o
KTsKKyAgICBhdXRvIGZldGMgPSBtYWtlVW5pcXVlPEZPUk1BVEVUQz4oKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBwU3RnTWVkKG5ldyBTVEdNRURJ
VU0pOwogCiAgICAgWmVyb01lbW9yeShmZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IGMwMDRmYzllNzA0YTZhZDMy
MzQ5ZmI4MjRjZGM1ZGRkMDM2MDFiNWMuLjQ3OTgxYWU2OTkxZGM2NDkxNTIwZmM4MjQzMmVjYzQ5
NTg2NDQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0xMTEs
NyArMTExLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZmVyZW5j
ZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKIAogICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGVmZmVjdDsKIAotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
RmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKKyAgICBhdXRvIGJ1aWxkZXIgPSBtYWtl
VW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0VmZmVjdCk7CiAgICAgbV9zb3VyY2VB
bHBoYSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSk7
CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0ZXIpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAppbmRleCAwMTMzNzg3ZDlkMzA2
MmIxY2E3OWIxNjA3OTYzZjIwYzEwNzFlZDUzLi5iZDNjOWJlZTg3Mjk4NmVjNjFiMWEzMGEwNDk1
YjhjMGEyNmZkNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxl
eExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGlu
ZUxheW91dC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0
aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVyKQogCiBpbmxp
bmUgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGNyZWF0ZVJ1bihpbnQgc3RhcnQsIGludCBlbmQs
IFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2
ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qmlk
aVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigp
KTsKIH0KIAogdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5kUnVuc0Zvck9iamVjdChCaWRp
UnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3Qm
IG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKQEAgLTEzMCwxMiArMTMwLDEyIEBA
IHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNGb3JPYmplY3QoQmlkaVJ1bkxpc3Q8
QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFyCiBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4g
Q29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKQogewogICAgIGlmIChpczxS
ZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7Ci0gICAgICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdSb290SW5saW5lQm94Pihkb3duY2FzdDxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKTsK
KyAgICAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25jYXN0
PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOwogICAgICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBib3g7CiAgICAgfQogICAgICAgICAKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiB9CiAKIFJvb3RJbmxpbmVCb3gq
IENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkKQEAgLTEw
ODUsNyArMTA4NSw3IEBAIGlubGluZSBCaWRpUnVuKiBDb21wbGV4TGluZUxheW91dDo6aGFuZGxl
VHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpCiAgICAgICAgIHdoaWxlIChC
aWRpQ29udGV4dCogcGFyZW50ID0gYmFzZUNvbnRleHQtPnBhcmVudCgpKQogICAgICAgICAgICAg
YmFzZUNvbnRleHQgPSBwYXJlbnQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+
IG5ld1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNlLCB0
cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVyKCksIGJh
c2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qmlk
aVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRy
YWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFz
ZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1f
c3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4gPSBuZXdUcmFpbGlu
Z1J1bi5nZXQoKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjpsaW5rVG9FbmRM
aW5lSWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAgICAgICAgaWYgKGxh
eW91dFN0YXRlLmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKCkpIHsKICAgICAgICAgICAgIExh
eW91dFVuaXQgYm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90
dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tTGF5b3V0
T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3coKTsK
LSAgICAgICAgICAgIGF1dG8gbmV3TGluZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhaWxpbmdG
bG9hdHNSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94
ID0gbWFrZVVuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiAgICAg
ICAgICAgICBhdXRvIHRyYWlsaW5nRmxvYXRzTGluZUJveCA9IG5ld0xpbmVCb3guZ2V0KCk7CiAg
ICAgICAgICAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94KFdURk1vdmUobmV3TGluZUJveCkp
OwogICAgICAgICAgICAgdHJhaWxpbmdGbG9hdHNMaW5lQm94LT5zZXRDb25zdHJ1Y3RlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA0Y2Rk
MTM5YzQ4NzUxNmVhMGU3YjEyMTNiNzAzYmQzNDI3YWIwMThjLi5hNmM2NDgxOGM0OTc0NTYwOTBm
NjYyM2MzMDRiNWQ2Mjc3MDdhZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxv
YXRpbmdPYmplY3RzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBGbG9hdGluZ09iamVjdDo6RmxvYXRp
bmdPYmplY3QoUmVuZGVyQm94JiByZW5kZXJlciwgVHlwZSB0eXBlLCBjb25zdCBMYXlvdXRSZWN0
JgogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVh
dGUoUmVuZGVyQm94JiByZW5kZXJlcikKIHsKLSAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKKyAgICBhdXRvIG9iamVjdCA9IG1ha2VV
bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKICAgICBvYmplY3QtPnNldFNob3VsZFBh
aW50KCFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBleGlz
dHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxzZSB3
aWxsLgogICAgIG9iamVjdC0+c2V0SXNEZXNjZW5kYW50KHRydWUpOwogICAgIHJldHVybiBvYmpl
Y3Q7CkBAIC04MywxMiArODMsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBG
bG9hdGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVuZGVyZXIpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lcihM
YXlvdXRTaXplIG9mZnNldCwgYm9vbCBzaG91bGRQYWludCwgYm9vbCBpc0Rlc2NlbmRhbnQpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRl
cmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0
LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVz
Y2VuZGFudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVy
KCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBm
cmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVzY2Vu
ZGFudCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmpl
Y3Q6OmNsb25lRm9yTmV3UGFyZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNsb25lT2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2Zy
YW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsK
KyAgICBhdXRvIGNsb25lT2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVy
ZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQs
IG1faXNEZXNjZW5kYW50KTsKICAgICBjbG9uZU9iamVjdC0+bV9wYWdpbmF0aW9uU3RydXQgPSBt
X3BhZ2luYXRpb25TdHJ1dDsKICAgICBjbG9uZU9iamVjdC0+bV9pc1BsYWNlZCA9IG1faXNQbGFj
ZWQ7CiAgICAgcmV0dXJuIGNsb25lT2JqZWN0OwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgRmxv
YXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSgpCiAgICAgaWYgKG1fc2V0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CisgICAgbV9wbGFjZWRGbG9hdHNU
cmVlID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CiAgICAgZm9yIChhdXRvIGl0
ID0gbV9zZXQuYmVnaW4oKSwgZW5kID0gbV9zZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewog
ICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+Z2V0KCk7CiAgICAg
ICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmNwcAppbmRleCBjNzJkMDFkODFjN2Q3MTY2MTU3OWUzYmEwMTgzMGU0MjlkMzBmNjg4Li4xZTkx
MWFlNjBhNjEyNjg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4N2UyOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWQuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBH
cmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEKICAg
ICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09
IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7CiAgICAgZm9y
ICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5n
VHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93U3BhbiwgY29s
dW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0
ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRy
YW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBj
b2x1bW5TcGFuKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IHJlc3Vs
dCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlk
U3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xh
dGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1u
U3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4g
aW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92
ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4OwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRC
YXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggNWZjMzI4MTUzYTZkOGJmYzQ4ODNiYTUxMjFjY2Ew
YmY2ZjJlOTlkMC4uNjYwOTA5OGY5Yzg3MDQ2ODgxMTQxOGFiMTc4Mjk0MTdiZWUyZDE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5j
cHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdyaWRCYXNlbGluZUFsaWdubWVudDo6dXBkYXRl
QmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KEl0ZW1Qb3NpdGlvbiBwcmVmZXJlbgogCiAgICAgLy8g
TG9va2luZyBmb3IgYSBjb21wYXRpYmxlIGJhc2VsaW5lLXNoYXJpbmcgZ3JvdXAuCiAgICAgaWYg
KGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBh
c2NlbnQsIGRlc2NlbnQpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2Nl
bnQpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvKiBjb250ZXh0ID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5nZXQoKTsKICAgICAgICAgY29udGV4dC0+dXBkYXRlU2hhcmVkR3JvdXAoY2hp
bGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCmluZGV4IGFkZGVkYzQy
OGIxZjJmZGIzNTAzZTgxMjYyNmI5NzY5M2EzZTdiNWYuLmIyYjAxMWJkZjc0OTFiMzVhYjFkYmI3
YWM2YjI2Mzk2MTcyMWNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC02ODEsNyArNjgxLDcgQEAgZG91Ymxl
IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0U2l6ZShjb25z
dCBWZWN0b3I8R3JpZFRyYWMKICAgICAgICAgICAgIGxlZnRPdmVyU3BhY2UgLT0gYmFzZVNpemU7
CiAgICAgICAgICAgICBmbGV4RmFjdG9yU3VtIC09IGZsZXhGYWN0b3I7CiAgICAgICAgICAgICBp
ZiAoIXRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUpCi0gICAgICAgICAgICAgICAgdHJhY2tzVG9U
cmVhdEFzSW5mbGV4aWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tJbmRleFNldD4oKTsKKyAg
ICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gbWFrZVVuaXF1ZTxUcmFj
a0luZGV4U2V0PigpOwogICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZS0+YWRk
KGluZGV4KTsKICAgICAgICAgICAgIHZhbGlkRmxleEZhY3RvclVuaXQgPSBmYWxzZTsKICAgICAg
ICAgfQpAQCAtMTI2MCwxMCArMTI2MCwxMCBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZQogICAg
IG1fc2l6aW5nT3BlcmF0aW9uID0gc2l6aW5nT3BlcmF0aW9uOwogICAgIHN3aXRjaCAobV9zaXpp
bmdPcGVyYXRpb24pIHsKICAgICBjYXNlIEludHJpbnNpY1NpemVDb21wdXRhdGlvbjoKLSAgICAg
ICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZWZpbml0ZVNpemVTdHJhdGVneT4o
KnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVuaXF1ZTxJbmRlZmluaXRlU2l6ZVN0
cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHJhY2tTaXppbmc6Ci0g
ICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5
PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5pcXVlPERlZmluaXRlU2l6ZVN0
cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDczYjM2NTQ3NjcxNDBhMDM3MGU0ZDU2
OTU2ZTU0ZjI2NzRiNThiMzYuLmIzYzQwMDc5MDJkZjYwNDg2MmE1YWM3YzI5OThjYmFkNzNmMTEy
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVz
dWx0JiBvdGhlcikKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90aGVyLmlzT3ZlcldpZGdldCgpKQog
ewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIGxpc3QgaGl0IHRlc3Qu
Ci0gICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0
ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0
KSA6IG51bGxwdHI7CisgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFz
ZWRUZXN0UmVzdWx0ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0
UmVzdWx0KSA6IG51bGxwdHI7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6On5IaXRUZXN0UmVzdWx0KCkg
PSBkZWZhdWx0OwpAQCAtMTEzLDcgKzExMyw3IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1
bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICBtX2lzT3Zlcldp
ZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2Rl
U2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQg
PSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+
KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNl
ZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5v
ZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIAogICAgIHJl
dHVybiAqdGhpczsKIH0KQEAgLTY5MCwxNCArNjkwLDE0IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6
YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxCiBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjpsaXN0QmFz
ZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkK
LSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0
PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+
KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKIEhpdFRlc3RSZXN1
bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KCkK
IHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRU
ZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RC
YXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xp
c3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0
ZXJhdG9yLmgKaW5kZXggNDNjNjUzODc2Y2Y5ODRhNjJiNmZjOTI5NDVkM2RkNjkwY2EzZWRiOS4u
MTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhjb25zdCBJbmxpbmVJdGVy
YXRvciYgaXRlcikKIC8vIG9mIEJpZGlSZXNvbHZlciB3aGljaCBrbm93cyBub3RoaW5nIGFib3V0
IFJlbmRlck9iamVjdHMuCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGxhY2Vob2xkZXJSdW5Gb3JJ
c29sYXRlZElubGluZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBSZW5kZXJPYmplY3Qm
IG9iaiwgdW5zaWduZWQgcG9zLCBSZW5kZXJFbGVtZW50JiByb290KQogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4o
cG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0gbWFrZVVuaXF1ZTxCaWRpUnVu
Pihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKICAg
ICAvLyBGSVhNRTogaXNvbGF0ZWRSdW5zKCkgY291bGQgYmUgYSBoYXNoIG9mIG9iamVjdC0+cnVu
IGFuZCB0aGVuIHdlIGNvdWxkIGNoZWFwbHkKICAgICAvLyBBU1NFUlQgaGVyZSB0aGF0IHdlIGRp
ZG4ndCBjcmVhdGUgbXVsdGlwbGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgaW5saW5lLgogICAgIHJl
c29sdmVyLnNldFdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlvbkZvcklzb2xhdGVkUnVuKCpp
c29sYXRlZFJ1biwgcmVzb2x2ZXIud2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSgpLmN1cnJlbnRU
cmFuc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVy
T3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFw
LmNwcAppbmRleCAyODVhYTVmOWZlOWJhZTdkZmM4NTI4YzI0YzFkNTU2N2Q0MTI5ZmYzLi45NmFm
OTVhNDU1Njk1MGU4MTI2Yjk1MzczNTM0ZDQ3NmRhZTM1NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVjdExpc3QmIHJl
Y3RMaXN0KQogLy8gQ2hlY2tpbmcgZm9yIG92ZXJsYXAgaW52b2x2ZXMgZmluZGluZyB0aGUgbm9k
ZSBmb3IgdGhlIGNsaXBwaW5nIGxheWVyIGVuY2xvc2luZyB0aGUgZ2l2ZW4gbGF5ZXIgKG9yIHRo
ZSByb290KSwKIC8vIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgYm91bmRzIG9mIGVhcmxpZXIg
c2libGluZ3MuCiBjbGFzcyBPdmVybGFwTWFwQ29udGFpbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPdmVybGFwTWFwQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckxheWVyJiByb290TGF5ZXIpCiAgICAgICAgIDogbV9yb290U2NvcGUocm9vdExheWVyKQpAQCAt
Mjk2LDcgKzI5Nyw3IEBAIGJvb2wgTGF5ZXJPdmVybGFwTWFwOjpvdmVybGFwc0xheWVycyhjb25z
dCBSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IExheW91dFJlY3QmCiAKIHZvaWQgTGF5ZXJPdmVy
bGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKQogewotICAgIG1fb3ZlcmxhcFN0YWNr
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1fcm9vdExheWVy
KSk7CisgICAgbV9vdmVybGFwU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8T3ZlcmxhcE1hcENvbnRh
aW5lcj4obV9yb290TGF5ZXIpKTsKIH0KIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnBvcENvbXBv
c2l0aW5nQ29udGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IDRkYmEzZjFjNDEwNWFmYjBlOGU0Yzc2YTdjZmNiOWU1ZmZmNzE4NTQuLjAwMTkyNTg4
MmU1MDI4YzhhMjA5OWI0YmJkZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIGluc2Vy
dEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJl
bmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50SGVp
Z2h0RGVzY2VuZGFudHNNYXAtPmVuc3VyZSgmY29udGFpbmVyLCBbXSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRk
KCZkZXNjZW5kYW50KS5pc05ld0VudHJ5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lk
IGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWlu
ZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGNvbnRhaW5lclNldCA9IHBlcmNl
bnRIZWlnaHRDb250YWluZXJNYXAtPmVuc3VyZSgmZGVzY2VuZGFudCwgW10gewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIWNvbnRhaW5lclNldC0+Y29u
dGFpbnMoJmNvbnRhaW5lcikpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFBvc2l0aW9uZWRE
ZXNjZW5kYW50c01hcCB7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvJiBkZXNjZW5kYW50cyA9
IG1fZGVzY2VuZGFudHNNYXAuZW5zdXJlKCZjb250YWluaW5nQmxvY2ssIFtdIHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hT
ZXQ+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICBib29sIGlzTmV3
RW50cnkgPSBtb3ZlRGVzY2VuZGFudFRvRW5kID09IE1vdmVEZXNjZW5kYW50VG9FbmQ6OlllcyA/
IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5p
c05ld0VudHJ5CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGlubGluZSBVcGRhdGVTY3JvbGxJ
bmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbiogY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnQKIHZv
aWQgUmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b24oKQogewogICAgIGlmICghdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25T
dGFjaygpKQotICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0
YWNrKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7
CisgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9
IG1ha2VVbmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKICAgICBpZiAodXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkgfHwg
Y3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCktPnZpZXcgIT0g
JnZpZXcoKSkKICAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25T
dGFjaygpLT5hcHBlbmQoVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24odmll
dygpKSk7CiAgICAgKytjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b24oKS0+bmVzdGVkQ291bnQ7CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIFJlbmRlckJsb2Nr
UmFyZURhdGEmIGVuc3VyZUJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQog
ICAgIAogICAgIGF1dG8mIHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0YSkKLSAgICAgICAgcmFyZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CisgICAgICAgIHJh
cmVEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOwogICAgIHJldHVybiAq
cmFyZURhdGEuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggN2YxZTYzOTcwNjNiZTRmOGRmOWI1N2YxNzVkNmUyNmU3OGVmYjEz
NC4uYjg2NDJkMTcyMDNiZDRiZjI1YmRlMTcxZjk4NzBhZjdkNWE0M2E3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBA
QCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZQogICAgIG1fc2ltcGxlTGluZUxheW91dCA9IG51bGxw
dHI7CiAKICAgICBpZiAoIW1fY29tcGxleExpbmVMYXlvdXQpCi0gICAgICAgIG1fY29tcGxleExp
bmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7Cisg
ICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0
PigqdGhpcyk7CiAKICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0LT5sYXlvdXRMaW5lQm94ZXMocmVs
YXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsK
IH0KQEAgLTIwMTksNyArMjAxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5l
R3JpZEJveCgpCiAgICAgCiAgICAgc2V0TGluZUdyaWRCb3goMCk7CiAKLSAgICBhdXRvIGxpbmVH
cmlkQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PigqdGhpcyk7CisgICAgYXV0
byBsaW5lR3JpZEJveCA9IG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMpOwogICAgIGxp
bmVHcmlkQm94LT5zZXRIYXNUZXh0Q2hpbGRyZW4oKTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhlIGxp
bmUgYXNjZW50L2Rlc2NlbnQgYWN0dWFsbHkgYmUgaG9ub3JlZCBpbiBxdWlya3MgbW9kZS4KICAg
ICBsaW5lR3JpZEJveC0+c2V0Q29uc3RydWN0ZWQoKTsKICAgICBHbHlwaE92ZXJmbG93QW5kRmFs
bGJhY2tGb250c01hcCB0ZXh0Qm94RGF0YU1hcDsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiByb290
QmxvY2ssIGNvbnN0IFBhaW50CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGlu
Z09iamVjdHMoKQogewotICAgIG1fZmxvYXRpbmdPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxG
bG9hdGluZ09iamVjdHM+KCp0aGlzKTsKKyAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IG1ha2VVbmlx
dWU8RmxvYXRpbmdPYmplY3RzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpy
ZW1vdmVGbG9hdGluZ09iamVjdHMoKQpAQCAtMzY3Nyw3ICszNjc3LDcgQEAgdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VS
VCghbV9jb21wbGV4TGluZUxheW91dCk7Ci0gICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICBtX2NvbXBsZXhMaW5l
TGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAgaWYg
KFNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVM
aW5lTGF5b3V0KSkgewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hU
cmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KTsKQEAgLTM3MzUsNyArMzczNSw3IEBAIFJl
bmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIFJlbmRlckJsb2NrRmxvdzo6
ZW5zdXJlUmFyZUJsb2NrRmxvd0RhCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVS
YXJlQmxvY2tGbG93RGF0YSgpCiB7CiAgICAgQVNTRVJUKCFoYXNSYXJlQmxvY2tGbG93RGF0YSgp
KTsKLSAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9j
a0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CisgICAgbV9yYXJlQmxvY2tG
bG93RGF0YSA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJl
RGF0YT4oKnRoaXMpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZTIwZmMyMDcxNGExMGUxMjIwZDJlZmQw
YTljOGFhY2EyOTlkODU0MS4uYTQ2NzNkMTE4ODJiMzFlOTNmMmJhNzA5MGYyMmVlMzA2MDY4ZDEw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTExOCw3ICsxMTgs
NyBAQCBzdGF0aWMgQ29udHJvbFN0YXRlc1JlbmRlcmVyTWFwJiBjb250cm9sU3RhdGVzUmVuZGVy
ZXJNYXAoKQogc3RhdGljIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihj
b25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogewogICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVu
ZGVyZXJNYXAoKS5lbnN1cmUoJnJlbmRlcmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENv
bnRyb2xTdGF0ZXM+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCkBAIC0y
MTE1LDcgKzIxMTUsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5l
cihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91dAogCiBzdGQ6OnVuaXF1ZV9w
dHI8SW5saW5lRWxlbWVudEJveD4gUmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3goKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVu
ZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA0MjQzMGRmOGJh
N2I2YWI4NjMyMzI4ZTYyZWY5MjU3MDFhZjNiNzc4Li5jZGNhNDU4YTFjMWY0MGU5Njk2MjA0Y2Y0
NjhkOTkxNGVkYTI0ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI1MzgsNyArMjUzOCw3IEBAIGF1dG8gUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSgpIC0+IENvbnRpbnVhdGlv
bkNoYWluTm9kCiB7CiAgICAgc2V0SGFzQ29udGludWF0aW9uQ2hhaW5Ob2RlKHRydWUpOwogICAg
IHJldHVybiAqY29udGludWF0aW9uQ2hhaW5Ob2RlTWFwKCkuZW5zdXJlKHRoaXMsIFsmXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRo
aXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0
aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAyMjEwNDQzNGU0NWQ2Yzk4NDc2ZmZkMjlhYjU1
MGJkNjJhYzQwOGZlLi5jMWUwM2YwOTdlZjU5YWQ1YTE2YjE5NGM5YzA1ZDY0OWY3ZmYxNWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0zMTIsNyAr
MzEyLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICBpZiAocGxhY2UucGFyZW50KQog
ICAgICAgICBwbGFjZS5wYXJlbnQtPmluc2VydEFmdGVyKG5ld05vZGUsIHBsYWNlLnByZXZpb3Vz
U2libGluZy5nZXQoKSwgaWRlbnRpZmllcik7CiAKLSAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIHN0
ZDo6bWFrZV91bmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRp
ZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkpOworICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgbWFrZVVu
aXF1ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdO
b2RlLmNvcHlSZWYoKSk7CiAgICAgcmVuZGVyZXIuc2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7
CiAKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcAppbmRleCA1MWE5ZTQ2ODQzNDRk
MjYzN2QwNGE5MWZiNTlhM2NkNmVmOGYwNmVkLi43ZjZjYWJjMDU5MTIxMDgxYzRkNzI4NjAyMTli
ZDRiOWM4NWI5NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhZ21lbnRDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFnbWVudENvbnRhaW5lci5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJCb3hGcmFn
bWVudEluZm8qIFJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudElu
Zm8oY29uc3QgUgogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50
SW5mby5hZGQoYm94LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9n
aWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJ
bnNldCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJh
Z21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gsIG1h
a2VVbmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2Fs
UmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVl
OwogICAgIHJldHVybiBib3hJbmZvLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAppbmRleCA0NGY1NjM1YmE1M2FlM2Y3
ZTk0ZDdhYzhlNDk2NzM5MGY1OGMyZTU2Li44NDZkZDNhMDJhYTg2YWFmNzE1YzA5NGU4YzM1MGMx
NjZhODY3YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
Z21lbnRlZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFn
bWVudGVkRmxvdy5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIFJlbmRlckZyYWdtZW50Q29udGFp
bmVyKiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y3VycmVudEZyYWdtZW50KCkgY29uc3QKIENvbnRh
aW5pbmdGcmFnbWVudE1hcCYgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVu
dE1hcCgpCiB7CiAgICAgaWYgKCFtX2xpbmVUb0ZyYWdtZW50TWFwKQotICAgICAgICBtX2xpbmVU
b0ZyYWdtZW50TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+KCk7
CisgICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAgPSBtYWtlVW5pcXVlPENvbnRhaW5pbmdGcmFn
bWVudE1hcD4oKTsKIAogICAgIHJldHVybiAqbV9saW5lVG9GcmFnbWVudE1hcC5nZXQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4
IGI5MDQ1ZTY3OTA4NzNhYmY4MWE5MGRmYTViYmIxMTA5M2M2NzdiMDIuLjUyYzc5MGQ0ZTU3ODli
MTc4ZTI2YzhhYmQ4YmE3YjEzY2M1OTE1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVuZGVy
R2VvbWV0cnlNYXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NCiAgICAgCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9t
YXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xh
dGlvbigpKQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5p
cXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKICAgICBlbHNlCiAgICAgICAgIHN0ZXAubV9v
ZmZzZXQgPSBMYXlvdXRTaXplKHQuZSgpLCB0LmYoKSk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2
b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBj
b25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9
IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0ID0gc2Ny
b2xsT2Zmc2V0OwogICAgIGlmICh0KQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjpt
YWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOworICAgICAgICBzdGVwLm1fdHJh
bnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwogICAgIAogICAg
IHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcAppbmRleCBlMzVhMmMxMzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0Y2NjOWQwZjM0OTdmLi40OWFk
MDM1NTUzNzM0MjI1ZjFkZGQ2MzNiNDJjMTM4MzJjY2VmYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JB
dXRvUmVwZWEKICAgICB1bnNpZ25lZCBsYXN0QXV0b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVw
ZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBlYXRUcmFja3MoZGlyZWN0aW9uKTsKIAogICAgIGlmICgh
Z3JpZC5oYXNHcmlkSXRlbXMoKSkgewotICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgIGVtcHR5VHJhY2tJ
bmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCB0cmFja0luZGV4ID0gZmlyc3RBdXRvUmVwZWF0VHJhY2s7IHRyYWNrSW5kZXgg
PCBsYXN0QXV0b1JlcGVhdFRyYWNrOyArK3RyYWNrSW5kZXgpCiAgICAgICAgICAgICBlbXB0eVRy
YWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5kZXgpOwogICAgIH0gZWxzZSB7CkBAIC01NTIsNyArNTUy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpj
b21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBp
dGVyYXRvcihncmlkLCBkaXJlY3Rpb24sIHRyYWNrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFp
dGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgewogICAgICAgICAgICAgICAgIGlmICghZW1wdHlUcmFj
a0luZGV4ZXMpCi0gICAgICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwog
ICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTczMiw3ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0
aW9uc091dAogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51
bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFu
U2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShn
cmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9z
aXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NE
aXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0
aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlv
bnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3Jp
ZEFyZWE+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Q
b3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwog
fQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQo
R3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZjZjYjU2MTgx
MmQyMjI2ODY2OTgzZjNhYjljNzQwYTU2ZGIwMjZlOC4uYzM1NWZmMzcxYjQxMWE1OGU3OTA2Yzg3
N2VhZDRiNTM0NjcxNWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVu
ZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxS
YXRpbykKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRT
aXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShz
dHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0
eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9p
bWFnZURldmljZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0
ZUFsdFRleHQoKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2Uo
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bAog
CiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQo
ZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3Vy
Y2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJj
ZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5k
ZXJJbWFnZVJlc291cmNlPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCmluZGV4IDlkOGE2NTkzNGJhM2ZkMjU0NzRjMzljOTFmZWVjNDNhYTBjOWY5
ZjUuLjE1MzI1Y2RhMTY5MDY3YTU2OTFiODg1YThkZmRjN2FhOTAzNjQwNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2
b2lkIFJlbmRlcklubGluZTo6ZGVsZXRlTGluZXMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5l
Rmxvd0JveD4gUmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMpOwogfQogCiBJbmxpbmVGbG93Qm94KiBSZW5k
ZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjc2Y2U4MjcyYmNkYjMzNjQ1NDFkZTQ2MTEy
ZjJhM2Y5NzQxMDE3MS4uNjQwNjI4ZmQ2NGJkMWFkYjJiMjY5ODg5NWFmY2M5M2E0ODA4YWFjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03MDAsNyArNzAw
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgICAgICAv
LyBJZ25vcmUgbm9uLW92ZXJmbG93IGxheWVycyBhbmQgcmVmbGVjdGlvbnMuCiAgICAgICAgIGlm
IChjaGlsZC0+aXNOb3JtYWxGbG93T25seSgpICYmICFpc1JlZmxlY3Rpb25MYXllcigqY2hpbGQp
KSB7CiAgICAgICAgICAgICBpZiAoIW1fbm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICAgICAgICAg
bV9ub3JtYWxGbG93TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+
KCk7CisgICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9y
PFJlbmRlckxheWVyKj4+KCk7CiAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0LT5hcHBlbmQo
Y2hpbGQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yCiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93
T25seSgpKSB7CiAgICAgICAgIGF1dG8mIGxheWVyTGlzdCA9ICh6SW5kZXgoKSA+PSAwKSA/IHBv
c2l0aXZlWk9yZGVyTGlzdCA6IG5lZ2F0aXZlWk9yZGVyTGlzdDsKICAgICAgICAgaWYgKCFsYXll
ckxpc3QpCi0gICAgICAgICAgICBsYXllckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxS
ZW5kZXJMYXllcio+PigpOworICAgICAgICAgICAgbGF5ZXJMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0
b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAgbGF5ZXJMaXN0LT5hcHBlbmQodGhpcyk7CiAg
ICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFu
c2Zvcm0oKQogICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3RyYW5zZm9ybTsKICAgICBpZiAo
aGFzVHJhbnNmb3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNmb3Jt
KQotICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0
aW9uTWF0cml4PigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3RyYW5zZm9y
bSA9IG51bGxwdHI7CiAgICAgICAgIApAQCAtNTUxOSw3ICs1NTE5LDcgQEAgUmVmPENsaXBSZWN0
cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBj
bGlwUmVjdHNDb24KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2NsaXBSZWN0c0NhY2hlKQotICAg
ICAgICBtX2NsaXBSZWN0c0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNoZT4o
KTsKKyAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2FjaGU+
KCk7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9v
dFtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyOwogICAgIG1fY2xp
cFJlY3RzQ2FjaGUtPm1fc2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJl
Y3RzQ29udGV4dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeTsKQEAgLTYwOTcsNyArNjA5
Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKENsaXBSZWN0c1R5cGUgdHlw
ZVRvQ2xlYXIpCiBSZW5kZXJMYXllckJhY2tpbmcqIFJlbmRlckxheWVyOjplbnN1cmVCYWNraW5n
KCkKIHsKICAgICBpZiAoIW1fYmFja2luZykgewotICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOworICAgICAgICBtX2JhY2tpbmcg
PSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOwogICAgICAgICBjb21wb3Np
dG9yKCkubGF5ZXJCZWNhbWVDb21wb3NpdGVkKCp0aGlzKTsKIAogICAgICAgICB1cGRhdGVGaWx0
ZXJQYWludGluZ1N0cmF0ZWd5KCk7CkBAIC02NTE1LDcgKzY1MTUsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZQogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNIVE1MTWFycXVlZSgpICYmIHJlbmRl
cmVyKCkuc3R5bGUoKS5tYXJxdWVlQmVoYXZpb3IoKSAhPSBNYXJxdWVlQmVoYXZpb3I6Ok5vbmUg
JiYgcmVuZGVyZXIoKS5pc0JveCgpKSB7CiAgICAgICAgIGlmICghbV9tYXJxdWVlKQotICAgICAg
ICAgICAgbV9tYXJxdWVlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsK
KyAgICAgICAgICAgIG1fbWFycXVlZSA9IG1ha2VVbmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7
CiAgICAgICAgIG1fbWFycXVlZS0+dXBkYXRlTWFycXVlZVN0eWxlKCk7CiAgICAgfSBlbHNlIGlm
IChtX21hcnF1ZWUpCiAgICAgICAgIG1fbWFycXVlZSA9IG51bGxwdHI7CkBAIC02NzI3LDcgKzY3
MjcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjplbnN1cmVMYXllckZpbHRlcnMoKQogICAgIGlmICht
X2ZpbHRlcnMpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX2ZpbHRlcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOworICAgIG1fZmlsdGVycyA9IG1h
a2VVbmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5
ZXI6OmNsZWFyTGF5ZXJGaWx0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggN2YxNDM2NmE3ZTU2MTEwMzM3MjA3N2JlZmUyYTYw
ODM0MmY3YmE0OS4uNzVmOWViMGYyOTdhMjM2YzdhNzgyNTY4NjNkMDUyODU3YjRjZGNmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTE2MjcsNyArMTYyNyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3Rv
ckNsaXBwaW5nU3RhY2soVmVjdG9yPENvbXBvc2l0ZWRDbGlwRGF0YT4mCiAgICAgfQogICAgIAog
ICAgIGlmICghbV9hbmNlc3RvckNsaXBwaW5nU3RhY2spIHsKLSAgICAgICAgbV9hbmNlc3RvckNs
aXBwaW5nU3RhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNr
PihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkpOworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFj
ayA9IG1ha2VVbmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBp
bmdEYXRhKSk7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8
ICJsYXllciAiIDw8ICZtX293bmluZ0xheWVyIDw8ICIgYW5jZXN0b3JDbGlwcGluZ1N0YWNrICIg
PDwgKm1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMzE3OCwxNyArMzE3OCwxNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRB
bmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbQogICAgICAg
ICAKICAgICAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkg
PT0gMTsKICAgICAgICAgaWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1l
KSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9y
bSkpCi0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCks
IHRmKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRm
KSk7CiAKICAgICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkg
fHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkK
LSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CisgICAg
ICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFs
dWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgo
aGFzRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNv
bnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVj
dG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtl
eWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmlu
c2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUt
PmZpbHRlcigpLCB0ZikpOwogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICAgICAg
aWYgKChoYXNCYWNrZHJvcEZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJl
bnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0
ZXIpKQotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91
bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BG
aWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydCht
YWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tk
cm9wRmlsdGVyKCksIHRmKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTMyNDMsOCArMzI0Myw4IEBA
IGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZz
ZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogb3BhY2l0
eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5
KTsKICAgICAgICAgaWYgKG9wYWNpdHlBbmltICYmICFvcGFjaXR5QW5pbS0+aXNFbXB0eU9yWmVy
b0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0
b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5p
bnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGlu
Z09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVj
dG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBv
c2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5
VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0
aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlW
ZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRp
bmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAgIC8vIFRoZSBib3hT
aXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNh
biBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJl
LgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlW
ZWN0b3IsIEZsb2F0U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9u
TmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkg
ewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkg
aXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9w
YWNpdHkuCkBAIC0zMjU4LDggKzMyNTgsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAg
ICAgICBjb25zdCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9u
Rm9yUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAgICAgICBpZiAodHJhbnNmb3Jt
QW5pbSAmJiAhdHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAg
ICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5
VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtl
X3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0o
KSkpOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVl
PFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOworICAg
ICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFu
c2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEs
IHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVy
LT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJCb3go
KS0+Ym9yZGVyQm94UmVjdCgpKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6
OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pLCB0
aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3Jy
ZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNl
dCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgq
dG9TdHlsZSk7CkBAIC0zMjcyLDggKzMyNzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6
c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3Blcgog
ICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9u
Rm9yUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAm
JiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtl
eWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5RmlsdGVyKTsKLSAg
ICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmlt
YXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOwotICAgICAgICAgICAgZmlsdGVy
VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0
b1N0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtl
VW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7Cisg
ICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9u
VmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGlj
c0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgZmlsdGVyQW5p
bSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9w
ZXJ0eUZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJl
IHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVu
ZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlRmls
dGVycygqdG9TdHlsZSk7CkBAIC0zMjg3LDggKzMyODcsOCBAQCBib29sIFJlbmRlckxheWVyQmFj
a2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGJhY2tkcm9wRmlsdGVyQW5pbSA9IHRvU3R5
bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVy
KTsKICAgICAgICAgaWYgKGJhY2tkcm9wRmlsdGVyQW5pbSAmJiAhYmFja2Ryb3BGaWx0ZXJBbmlt
LT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxp
c3QgYmFja2Ryb3BGaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmls
dGVyKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2Vf
dW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVy
KCkpKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2Vf
dW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigp
KSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxG
aWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7Cisg
ICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwogICAgICAgICAg
ICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGJhY2tkcm9wRmlsdGVyVmVjdG9y
LCBGbG9hdFNpemUoKSwgYmFja2Ryb3BGaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRp
b25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIp
LCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBj
b3JyZWN0IGJhY2tkcm9wIGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRz
LCBhbHNvIHNldCB0aGUgZmluYWwgYmFja2Ryb3AgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVw
ZGF0ZUJhY2tkcm9wRmlsdGVycygqdG9TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGFiZTRkNGQ2NzVhMjIxODZl
MmVhODlkNDEyZmZhODE1MzhjNWM5MjkuLjMyMTIyOWQ2ZjIzY2ZhZTY2YTA1YTUyODA4ZGQwYjBj
YmE4YzE0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpSZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYgcmVuZGVyVmlldykKIHsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGxh
dGZvcm1XaWRnZXQoKSkKLSAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9y
PihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKKyAg
ICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxMZWdh
Y3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50
KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKICNlbmRpZgogfQogCkBAIC02MTIsNyArNjEy
LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxh
eVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllcioKIHsKICAgICBpZiAoIW1fbGF5ZXJVcGRhdGVy
KSB7CiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9IHBhZ2UoKS5jaHJvbWUo
KS5kaXNwbGF5SUQoKTsKLSAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKKyAgICAgICAgbV9sYXll
clVwZGF0ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxh
eUlEKTsKICAgICB9CiAgICAgCiAgICAgbV9sYXllclVwZGF0ZXItPnNjaGVkdWxlVXBkYXRlKCk7
CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29v
cmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogCiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBjb25zdHJhaW50czsKICAgICAg
ICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpIHsKLSAgICAg
ICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWlu
dHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8U3RpY2t5
UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3
cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAgICAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIq
IGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlm
IChjb21wb3NpdG9yLmlzQXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5ZXIoKmxheWVyLCAmZW5jbG9z
aW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpICYmIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVy
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVy
LT5pc0NvbXBvc2l0ZWQoKSk7CkBAIC00ODAwLDcgKzQ4MDAsNyBAQCB2b2lkIExlZ2FjeVdlYktp
dFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5l
ZExheWVycwogICAgICAgICAgICAgICAgIHN0aWNreUNvbnRhaW5lck1hcC5hZGQobGF5ZXItPmJh
Y2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGVuY2xvc2luZ1RvdWNo
U2Nyb2xsYWJsZUxheWVyLT5iYWNraW5nKCktPnNjcm9sbENvbnRhaW5lckxheWVyKCktPnBsYXRm
b3JtTGF5ZXIoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXItPnJl
bmRlcmVyKCkuaXNGaXhlZFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0g
c3RkOjptYWtlX3VuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9z
aXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAgICAg
ICAgY29uc3RyYWludHMgPSBtYWtlVW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggNGI4NmZl
MmFkMTc1ZGNlODZhZDM4NTJiZGZjMTUyZmQxMzA4ZDQ1ZS4uMTI4Yzk2ZGFlMGIzMTAwNmNhMjVk
NWE1NmM3MjBiYzg5MGQzNGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbmRl
ckxheWVyTW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCiB2b2lkIFJlbmRlckxheWVyTW9kZWxP
YmplY3Q6OmNyZWF0ZUxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXIpOwotICAgIG1fbGF5
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyPigqdGhpcyk7CisgICAgbV9sYXllciA9
IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKICAgICBzZXRIYXNMYXllcih0cnVlKTsK
ICAgICBtX2xheWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGJjNTUyN2I4YzQ2YTRkZTA2NmY2
OWU1YTMxMGM4ODY4MTk2ZmMyM2EuLjFhYWUwOWQwMGIyNmVhM2NhZGVhODY3MmUyNzc5MjliZmQx
N2E2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIGludCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsCiAKIHN0ZDo6dW5pcXVl
X3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAog
dm9pZCBSZW5kZXJMaW5lQnJlYWs6OnNldElubGluZUJveFdyYXBwZXIoSW5saW5lRWxlbWVudEJv
eCogaW5saW5lQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5GbG93LmNwcAppbmRleCA5YmI5YTUzOWQ2NjQyZGY5MDAyNmE3ODJhZjhjZjg0ZGM0
OWRhMmE5Li40MTAzZGFkNDg0NGRkMjRhMzAyYTczMmFmMjIxOWFjOTAwMDFjYmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcApA
QCAtNDIsNyArNDIsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVsdGlD
b2x1bW5GbG93KTsKIAogUmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZs
b3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
RnJhZ21lbnRlZEZsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zcGFubmVy
TWFwKHN0ZDo6bWFrZV91bmlxdWU8U3Bhbm5lck1hcD4oKSkKKyAgICAsIG1fc3Bhbm5lck1hcCht
YWtlVW5pcXVlPFNwYW5uZXJNYXA+KCkpCiAgICAgLCBtX2xhc3RTZXRXb3JrZWRPbihudWxscHRy
KQogICAgICwgbV9jb2x1bW5Db3VudCgxKQogICAgICwgbV9jb2x1bW5XaWR0aCgwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ZGEzYmQ3Mzc3MWJhMTcx
OTBlYWMzNWRhNjM4ZTI0M2YxOTAyOTA3Li4wYmY1MTkzZGU0ODQ0NWJjYzY3N2U5MTRlOGFkM2Rm
ODFjZWI4MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtMTg5Myw3ICsxODkzLDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJl
RGF0YSYgUmVuZGVyT2JqZWN0OjpyYXJlRGF0YSgpIGNvbnN0CiBSZW5kZXJPYmplY3Q6OlJlbmRl
ck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBz
ZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRo
aXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7
IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRo
aXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0
ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uY3BwCmluZGV4IDNmYWFmYTExMjA2NTI2MjNlMDY1ZTZhMjFjZTFjNzUxZGJhOTFhMzcuLjAz
ZGQwOGZlNmI3ZjBhNmRkMTVmMjFmMjMzNWNjYWJjNWFmMDJhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNTMs
NyArNTMsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4pOwogCiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
ICAgICA6IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAg
ICwgbV9zbmFwc2hvdFJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJj
ZT4oKSkKKyAgICAsIG1fc25hcHNob3RSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVz
b3VyY2U+KCkpCiB7CiAgICAgbV9zbmFwc2hvdFJlc291cmNlLT5pbml0aWFsaXplKCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDE4NmNhODcw
ZWQxMDkxM2Q1OGI4NTQ5ZWI5NmRlMzM2ZTM0NTUzNTkuLmU5MWExMzM3MTk5MTJkMThmYTU1ZTM2
ZDgzNTU4ODU3YzJkMThiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcApAQCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQgUmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5CiAgICAgICAg
IC8vIEFjY29yZGluZyB0byB0aGUgQ1NTMiBzcGVjLCB5b3Ugb25seSB1c2UgZml4ZWQgdGFibGUg
bGF5b3V0IGlmIGFuCiAgICAgICAgIC8vIGV4cGxpY2l0IHdpZHRoIGlzIHNwZWNpZmllZCBvbiB0
aGUgdGFibGUuICBBdXRvIHdpZHRoIGltcGxpZXMgYXV0byB0YWJsZSBsYXlvdXQuCiAgICAgICAg
IGlmIChzdHlsZSgpLnRhYmxlTGF5b3V0KCkgPT0gVGFibGVMYXlvdXRUeXBlOjpGaXhlZCAmJiAh
c3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIG1fdGFibGVMYXlv
dXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkVGFibGVMYXlvdXQ+KHRoaXMpOworICAgICAgICAg
ICAgbV90YWJsZUxheW91dCA9IG1ha2VVbmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEF1dG9UYWJsZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFr
ZVVuaXF1ZTxBdXRvVGFibGVMYXlvdXQ+KHRoaXMpOwogICAgIH0KIAogICAgIC8vIElmIGJvcmRl
ciB3YXMgY2hhbmdlZCwgaW52YWxpZGF0ZSBjb2xsYXBzZWQgYm9yZGVycyBjYWNoZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA2OGMzYTE1ZDk1MTZiNWIzYzdj
MmRkYWI0YWRhNDA5YTVkYzIwZGZhLi5hMDJkOWMxNmYzYTI3Y2M1MjIwOTcxMDJjMjY5Yjc1NTUw
OWQwMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMzEx
LDcgKzEzMTEsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExh
eW91dCkKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclRleHQ6OmNyZWF0
ZVRleHRCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRCb3g+
KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiB9
CiAKIHZvaWQgUmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gmIHRleHRC
b3gpCkBAIC0xNTQ1LDcgKzE1NDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2
ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogICAgICAg
ICByZXR1cm47CiAgICAgYXV0byYgc2VjdXJlVGV4dFRpbWVyID0gc2VjdXJlVGV4dFRpbWVycygp
LmFkZCh0aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzZWN1cmVUZXh0
VGltZXIpCi0gICAgICAgIHNlY3VyZVRleHRUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjdXJl
VGV4dFRpbWVyPigqdGhpcyk7CisgICAgICAgIHNlY3VyZVRleHRUaW1lciA9IG1ha2VVbmlxdWU8
U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7CiAgICAgc2VjdXJlVGV4dFRpbWVyLT5yZXN0YXJ0KG9m
ZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCmluZGV4IGMxNDQ1MWExOGVlYTdhNTcxYTI3Nzc4OThhNzljYzhiNDNm
ZjMxNDIuLjVmZWM2NzhjNmJiNWRmMGU0OTIyYjAxMmMzZjI2OGRiYWI0YTdiNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lk
IFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHJlcGFp
bnRSZWN0KSBjb25zdAogICAgIC8vIEZJWE1FOiBNYXliZSB0aGVyZSBzaG91bGQgYmUgYSByZWdp
b24gdHlwZSB0aGF0IGRvZXMgdGhpcyBhdXRvbWF0aWNhbGx5LgogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplID0gMTYgKiAxNjsKICAgICBpZiAo
bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24tPmdyaWRTaXplKCkgPiBtYXhpbXVtUmVwYWludFJl
Z2lvbkdyaWRTaXplKQotICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkp
OworICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9u
PihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOwogfQogCiB2b2lkIFJlbmRl
clZpZXc6OmZsdXNoQWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uKCkgY29uc3QKQEAgLTcyNCw3ICs3
MjQsNyBAQCBib29sIFJlbmRlclZpZXc6OnVzZXNDb21wb3NpdGluZygpIGNvbnN0CiBSZW5kZXJM
YXllckNvbXBvc2l0b3ImIFJlbmRlclZpZXc6OmNvbXBvc2l0b3IoKQogewogICAgIGlmICghbV9j
b21wb3NpdG9yKQotICAgICAgICBtX2NvbXBvc2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOworICAgICAgICBtX2NvbXBvc2l0b3IgPSBtYWtlVW5p
cXVlPFJlbmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX2NvbXBv
c2l0b3I7CiB9CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIElt
YWdlUXVhbGl0eUNvbnRyb2xsZXImIFJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIo
KQogewogICAgIGlmICghbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyKQotICAgICAgICBtX2ltYWdl
UXVhbGl0eUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXI+KCp0aGlzKTsKKyAgICAgICAgbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyID0gbWFrZVVuaXF1
ZTxJbWFnZVF1YWxpdHlDb250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlUXVh
bGl0eUNvbnRyb2xsZXI7CiB9CiAKQEAgLTgzNCw3ICs4MzQsNyBAQCBSZW5kZXJWaWV3OjpSZXBh
aW50UmVnaW9uQWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcihSZW5kZXJWaWV3
KiB2aWV3KQogCiAgICAgbV93YXNBY2N1bXVsYXRpbmdSZXBhaW50UmVnaW9uID0gISFyb290UmVu
ZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb247CiAgICAgaWYgKCFtX3dhc0FjY3Vt
dWxhdGluZ1JlcGFpbnRSZWdpb24pCi0gICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxh
dGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgICAgICBy
b290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBtYWtlVW5pcXVlPFJl
Z2lvbj4oKTsKICAgICBtX3Jvb3RWaWV3ID0gbWFrZVdlYWtQdHIoKnJvb3RSZW5kZXJWaWV3KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGZk
Y2Q1OWM1MmM1ZjMyOGY1MjA5ZjAwYzFmOGQ4MTZhZGM1Zjc2NjguLjQ0NTU4NDFhZjMyZmYxNTI1
MmNmYTI4ZWQ4YTY5YzNlNDlmMWYzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBmbG9hdCBSb290SW5saW5lQm94Ojpw
bGFjZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGZs
bwogICAgICAgICBnRWxsaXBzaXNCb3hNYXAgPSBuZXcgRWxsaXBzaXNCb3hNYXAoKTsKIAogICAg
IEFTU0VSVCghaGFzRWxsaXBzaXNCb3goKSk7Ci0gICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxs
aXBzaXNCb3hNYXAtPnNldCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEVsbGlwc2lzQm94PihibG9j
a0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8g
bWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXBy
ZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CisgICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlz
LCBtYWtlVW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMs
IGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6
IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgp
LCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgc2V0SGFzRWxsaXBzaXNC
b3godHJ1ZSk7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYW4gUlRMIHZlcnNpb24gb2YgdGhp
cz8KICAgICBpZiAobHRyICYmICh4KCkgKyBsb2dpY2FsV2lkdGgoKSArIGVsbGlwc2lzV2lkdGgp
IDw9IGJsb2NrUmlnaHRFZGdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guaAppbmRleCA3ZGYyODI4OGE0ZDU1YzJjN2QyNmFkNGJjMDE3NmQwYjc2MTc4MzY0Li4yNDdl
NTVjMDY5ZTlmZTg4MWNhZjRiZmJjMmI0YWVmMTllMzYxN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBSb290SW5s
aW5lQm94IDogcHVibGljIElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSb290
SW5saW5lQm94PgogICAgICAgICBpZiAobV9mbG9hdHMpCiAgICAgICAgICAgICBtX2Zsb2F0cy0+
YXBwZW5kKG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fZmxvYXRzID0gc3RkOjptYWtlX3VuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1h
a2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CisgICAgICAgICAgICBtX2Zsb2F0cyA9IG1ha2VVbmlx
dWU8Q2xlYW5MaW5lRmxvYXRMaXN0PigxLCBtYWtlV2Vha1B0cihmbG9hdGluZ0JveCkpOwogICAg
IH0KIAogICAgIHZvaWQgcmVtb3ZlRmxvYXQoUmVuZGVyQm94JiBmbG9hdGluZ0JveCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5kZXggZWM1
ZTczNTZhNjRkMTI0OWRkYTExNDdlOGJiYTMxZjQ3OTBiNGJmMi4uYjliYWQwYTA5ZjI5YmY3YWRj
OWQzMzNmNGU4MTFjM2VhMWI5M2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKQEAgLTEzMSwxMyArMTMxLDEzIEBAIHN0YXRpYyBTZWxl
Y3Rpb25EYXRhIGNvbGxlY3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxl
Y3Rpb24sIGJvb2wKICAgICB3aGlsZSAoc3RhcnQgJiYgc3RhcnQgIT0gc3RvcCkgewogICAgICAg
ICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpzdGFydCwgc2VsZWN0aW9uKSkgewog
ICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBn
YXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAg
ICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CisgICAgICAgICAgICBv
bGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVyU2Vs
ZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CiAgICAgICAgICAgICBpZiAocmVwYWludERpZmZl
cmVuY2UpIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGJsb2NrID0gY29udGFpbmluZ0Js
b2NrQmVsb3dWaWV3KCpzdGFydCk7IGJsb2NrOyBibG9jayA9IGNvbnRhaW5pbmdCbG9ja0JlbG93
VmlldygqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGJsb2NrSW5mbyA9IG9s
ZFNlbGVjdGlvbkRhdGEuYmxvY2tzLmFkZChibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwogICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOworICAgICAgICAgICAgICAg
ICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmJs
b2NrKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIx
MywxMyArMjEzLDEzIEBAIEludFJlY3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRz
KENsaXBUb1Zpc2libGVDb250ZW50IGNsaXBUb1Zpc2libGVDb250CiAgICAgICAgIGlmICgoc3Rh
cnQtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5z
dGFydCgpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKICAgICAgICAgICAg
ICYmIHN0YXJ0LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9u
ZSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcg
bGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwu
Ci0gICAgICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clNlbGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlz
aWJsZUNvbnRlbnQ6OlllcykpOworICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwgbWFr
ZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50
ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKICAgICAgICAgICAgIGF1dG8qIGJsb2Nr
ID0gc3RhcnQtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgd2hpbGUgKGJsb2NrICYm
ICFpczxSZW5kZXJWaWV3PigqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclNlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSByZW5kZXJlcnMuYWRkKGJsb2Nr
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5m
bykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zp
c2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOworICAgICAgICAgICAg
ICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2NrLCBj
bGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsKICAgICAg
ICAgICAgICAgICBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRh
OjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVw
CiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFy
dCk7CiAgICAgZm9yIChhdXRvKiBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsgY3Vy
cmVudFJlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJlbnRS
ZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICBpZiAoaXNWYWxp
ZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpjdXJyZW50UmVuZGVyZXIsIG1fc2VsZWN0aW9uQ29udGV4
dCkpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBz
ZWxlY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3Vy
cmVudFJlbmRlcmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
ZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25J
bmZvPigqY3VycmVudFJlbmRlcmVyLCB0cnVlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9M
UykKICAgICAgICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHNlbGVjdGlvbkluZm8tPmNvbGxlY3Rl
ZFNlbGVjdGlvblJlY3RzKCkpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVy
ZXIuYWRkUmVjdChzZWxlY3Rpb25JbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIHJlY3QpOwpAQCAt
Mjk0LDcgKzI5NCw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250
ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5l
d1NlbGVjdGVkQmxvY2tzLmFkZChjb250YWluaW5nQmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgICAgICAg
ICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpjb250
YWluaW5nQmxvY2spOwogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5p
bmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
CiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkR2FwUmVjdHMoYmxv
Y2tJbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIGJsb2NrSW5mby0+cmVjdHMoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggOGM3NjZlNmRl
MmM3NGFkMDM3OTczMzMxZmM3ZjVhNDc0OTAxNWI4ZS4uYzM2MmY0ZTU3YjAwZjljZTM5YTczZWNl
ODExYzJjODMyZDY1MGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0LmNwcApAQCAtOTk3LDcgKzk5Nyw3IEBAIExheW91dDo6TGF5b3V0KGNvbnN0IFJ1
blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQsIGNvbnN0IFJlbmRlckJsb2Nr
CiBjb25zdCBSdW5SZXNvbHZlciYgTGF5b3V0OjpydW5SZXNvbHZlcigpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX3J1blJlc29sdmVyKQotICAgICAgICBtX3J1blJlc29sdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOworICAgICAgICBt
X3J1blJlc29sdmVyID0gbWFrZVVuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJl
ciwgKnRoaXMpOwogICAgIHJldHVybiAqbV9ydW5SZXNvbHZlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmlu
ZGV4IDFiZjk4ZTRlZWI0M2JhMjJjZGE0ZTZmNWQzYmMyYTVmOWZjNGI0YjcuLjA2MjViMTZiZDU0
MzE5NzNlZDMxZGU5OThhZWQ4ODliMDEyYmEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0
IExheW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNo
YWRvd0RhdGE+IGRlYnVnU2hhZG93ID0gbnVsbHB0cjsKICAgICBpZiAoZmxvdy5zZXR0aW5ncygp
LnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpIHsKLSAgICAgICAgZGVidWdT
aGFkb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwg
MjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7Cisg
ICAgICAgIGRlYnVnU2hhZG93ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAw
KSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAsIDIw
MCkpOwogICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVidWdTaGFkb3cuZ2V0KCkpOwog
ICAgIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgZ2VuZXJhdGVMaW5lQm94VHJlZShSZW5k
ZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQogICAgICAgICBCaWRpUnVu
TGlzdDxCaWRpUnVuPiBiaWRpUnVuczsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gcmFuZ2UuYmVn
aW4oKTsgaXQgIT0gcmFuZ2UuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgIGF1dG8gcnVuID0g
Kml0OwotICAgICAgICAgICAgYmlkaVJ1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8Qmlk
aVJ1bj4ocnVuLmxvY2FsU3RhcnQoKSwgcnVuLmxvY2FsRW5kKCksIGNvbnN0X2Nhc3Q8UmVuZGVy
T2JqZWN0Jj4ocnVuLnJlbmRlcmVyKCkpLCBiaWRpQ29udGV4dC5wdHIoKSwgVV9MRUZUX1RPX1JJ
R0hUKSk7CisgICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxCaWRpUnVu
PihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmpl
Y3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQp
KTsKICAgICAgICAgfQogCiAgICAgICAgIExpbmVJbmZvIGxpbmVJbmZvOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKaW5kZXggM2JhMTMwZDQ1NTlkNzI5MmQ4
OTFmNTUzY2YxNDgwZjg2NmJiMmJhZC4uNGI0M2U2YWNiZTBlZWRhZjRlYWY0ZDJlNWQ1YTQ0NjM5
MDYwNTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3Bw
CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBUZXh0QXV0b1NpemluZzo6YWRkVGV4dE5vZGUoVGV4
dCYgbm9kZSwgZmxvYXQgY2FuZGlkYXRlU2l6ZSkKICAgICBMT0coVGV4dEF1dG9zaXppbmcsICIg
YWRkQXV0b1NpemVkTm9kZSAlcCBjYW5kaWRhdGVTaXplPSVmIiwgJm5vZGUsIGNhbmRpZGF0ZVNp
emUpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0Tm9kZXMuYWRkPFRleHRBdXRvU2l6aW5n
SGFzaFRyYW5zbGF0b3I+KG5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKSwgbnVsbHB0cik7CiAgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOworICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVl
PigpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZFRleHROb2RlKG5vZGUsIGNh
bmRpZGF0ZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
QnJlYWtlci5jcHAKaW5kZXggMmIxYzFmYTAzY2ExYzU3NTY5MDI3N2E1ZTgxMjg3MTAxMGQ0NDY3
ZS4uZDExNjYxNWE3MjZjNWEwYTk0M2Q5YjlmNmUwOTQwYjk1ZTY5MDkxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcApAQCAtNjIsNyArNjIsNyBA
QCB2b2lkIExpbmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29s
dmVyJiByZXNvbHZlciwgTGluZUluZm8mCiAgICAgICAgIGlmIChvYmplY3QuaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgIHNldFN0YXRpY1Bvc2l0aW9ucyhtX2Jsb2NrLCBk
b3duY2FzdDxSZW5kZXJCb3g+KG9iamVjdCksIHdpZHRoLnNob3VsZEluZGVudFRleHQoKSk7CiAg
ICAgICAgICAgICBpZiAob2JqZWN0LnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBl
KCkpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKHN0ZDo6bWFr
ZV91bmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29s
dmVyLmRpcigpKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1biht
YWtlVW5pcXVlPEJpZGlSdW4+KDAsIDEsIG9iamVjdCwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNv
bHZlci5kaXIoKSkpOwogICAgICAgICAgICAgICAgIGxpbmVJbmZvLmluY3JlbWVudFJ1bnNGcm9t
TGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChv
YmplY3QuaXNGbG9hdGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmNwcAppbmRleCA0YjE1OTdlOWYyMWM5Y2Q0YjJmMGQ4ODM0NzQ0Nzc1ZjFk
OGJkZTAxLi5kNTIwOTJiNjhlZDhlMmM4ZmRhNTE1YzkwY2Q1MjIzNTZkNjU1YzI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtNzYs
NyArNzYsNyBAQCBJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRl
cnZhbEF0KGludCB5KSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxz
PiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBz
aGFwZU1hcmdpbikgY29uc3QKIHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChvZmZz
ZXQoKSA+IHNoYXBlTWFyZ2luKSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiArIHNo
YXBlTWFyZ2luICogMjsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+KG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFyZ2lu
LCBvZmZzZXQoKSkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUlu
dGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNl
dCgpKSk7CiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0
b3Ioc2hhcGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJv
dW5kcygpLm1heFkoKTsgKyt5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwCmluZGV4IDMwMjMxYTBiZTFiYmM2M2U0YmUzZDI1MDUxMmJlZDNkMTk1OTQwOTkuLmY1
ZWZlZmRkMzJiMzA1NDdhZGJkOGViMDhmNTRlNjNiMDI0MGZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC00NiwyNCArNDYsMjQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlSW5zZXRTaGFw
ZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiB7CiAgICAgQVNTRVJUKGJvdW5kcy5y
ZWN0KCkud2lkdGgoKSA+PSAwICYmIGJvdW5kcy5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IGNyZWF0ZUNpcmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQg
cmFkaXVzKQogewogICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBj
ZW50ZXIueSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVz
LCByYWRpdXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRS
ZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCBy
YWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOwogfQogCiBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2Vu
dGVyLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChyYWRpaS53aWR0aCgp
ID49IDAgJiYgcmFkaWkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwg
Y2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdo
dCgpKjIpLCByYWRpaSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZs
b2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhl
aWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CiB9CiAK
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZl
cnRpY2VzKSwgZmlsbFJ1bGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBvbHlnb25TaGFwZT4o
V1RGTW92ZSh2ZXJ0aWNlcyksIGZpbGxSdWxlKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9hdFJl
Y3QgcGh5c2ljYWxSZWN0VG9Mb2dpY2FsKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbG9n
aWNhbEJveEhlaWdodCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCkBAIC0xMjgsNyArMTI4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNT
aGFwZSYgYmFzaWNTaGFwZSwgY29uc3QgTGEKICAgICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4m
IHZhbHVlcyA9IHBvbHlnb24udmFsdWVzKCk7CiAgICAgICAgIHNpemVfdCB2YWx1ZXNTaXplID0g
dmFsdWVzLnNpemUoKTsKICAgICAgICAgQVNTRVJUKCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IG1ha2VVbmlxdWU8
VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB2YWx1ZXNTaXplOyBpICs9IDIpIHsKICAgICAgICAgICAgIEZsb2F0UG9p
bnQgdmVydGV4KAogICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWVzLmF0
KGkpLCBib3hXaWR0aCksCkBAIC0xNzksNyArMTc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBl
PiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQs
IGMKIAogICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gc25hcHBlZEludFJlY3QoaW1hZ2VSKTsKICAg
ICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKLSAgICBhdXRv
IGludGVydmFscyA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdp
blJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CisgICAgYXV0byBpbnRlcnZhbHMgPSBt
YWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFy
Z2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQg
bm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVj
dC5zaXplKCksIFVuYWNjZWxlcmF0ZWQpOwogCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9h
dCB0aHJlc2hvbGQsIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gcmFzdGVyU2hhcGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdp
blJlY3Quc2l6ZSgpKTsKKyAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJT
aGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CiAgICAgcmFzdGVy
U2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9t
YXJnaW4gPSBtYXJnaW47CiAgICAgcmV0dXJuIHJhc3RlclNoYXBlOwpAQCAtMjMwLDcgKzIzMCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJv
dW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgV3JpCiAKICAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCBy
b3VuZGVkUmVjdC5yZWN0KCkud2lkdGgoKSwgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpKTsK
ICAgICBGbG9hdFJvdW5kZWRSZWN0IGJvdW5kcyhyZWN0LCByb3VuZGVkUmVjdC5yYWRpaSgpKTsK
LSAgICBhdXRvIHNoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAg
ICBhdXRvIHNoYXBlID0gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKICAgICBzaGFwZS0+
bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHNoYXBlLT5tX21hcmdpbiA9IG1hcmdp
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91
dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lk
ZUluZm8uaAppbmRleCBjZDk0Zjg5YzAyYjBiOGMxMzUxOTQ1N2U0NGQwZGRhZjZkODdmMWZhLi45
NDg0MzE3MTk0N2MwMjMwOWFiN2Y0ZmIxYjk3YzI2Mzg4MmVlMzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaApAQCAtMTEzLDcg
KzExMyw3IEBAIGNsYXNzIFNoYXBlT3V0c2lkZUluZm8gZmluYWwgewogICAgICAgICBJbmZvTWFw
JiBpbmZvTWFwID0gU2hhcGVPdXRzaWRlSW5mbzo6aW5mb01hcCgpOwogICAgICAgICBpZiAoU2hh
cGVPdXRzaWRlSW5mbyogaW5mbyA9IGluZm9NYXAuZ2V0KCZrZXkpKQogICAgICAgICAgICAgcmV0
dXJuICppbmZvOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGluZm9NYXAuYWRkKCZrZXksIHN0ZDo6
bWFrZV91bmlxdWU8U2hhcGVPdXRzaWRlSW5mbz4oa2V5KSk7CisgICAgICAgIGF1dG8gcmVzdWx0
ID0gaW5mb01hcC5hZGQoJmtleSwgbWFrZVVuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsK
ICAgICAgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KICAgICBzdGF0
aWMgdm9pZCByZW1vdmVJbmZvKGNvbnN0IFJlbmRlckJveCYga2V5KSB7IGluZm9NYXAoKS5yZW1v
dmUoJmtleSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9C
YXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwCmluZGV4IDBjOThmOTE2NmY3ZTE1Mjk3MDNiY2RiMmM4YzgzY2M4MGJiN2JmMjQuLjc0
NGM5MGI4ZmIzZjUyNzY4YTUzOGQyMTM1ODM2MmNhNjM0ODI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzU4LDcgKzM1OCw3IEBA
IFJlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlUGF0aDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYg
ZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjCiAKICAgICBhdXRvJiBmcm9tUGF0aCA9IGRvd25jYXN0
PEJhc2ljU2hhcGVQYXRoPihmcm9tKTsKIAotICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIHJlc3VsdGlu
Z1BhdGhCeXRlcyA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVpbGRB
bmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKCpmcm9tUGF0aC5tX2J5dGVTdHJlYW0sICptX2J5dGVT
dHJlYW0sICpyZXN1bHRpbmdQYXRoQnl0ZXMsIHByb2dyZXNzKTsKIAogICAgIGF1dG8gcmVzdWx0
ID0gQmFzaWNTaGFwZVBhdGg6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdGluZ1BhdGhCeXRlcykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCBlN2Ji
MDYxNjUwMmQ5OWQ2ZGI0MzkyYmI0NjhhOWFiNDY5Y2U0OTRhLi4yYzEyZGQ5YjQwZGQ0MGIzYzBi
ZjY3NDkzMjJhZTJiMGZkMWUwNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQ29udGVudERhdGEuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBJbWFnZUNvbnRlbnREYXRh
IGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0
PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNv
bnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5h
bCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBhdXRvIGltYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbWFnZUNvbnRlbnREYXRhPihtX2ltYWdlLmNvcHlSZWYoKSk7CisgICAgICAgIGF1dG8g
aW1hZ2UgPSBtYWtlVW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsK
ICAgICAgICAgaW1hZ2UtPnNldEFsdFRleHQoYWx0VGV4dCgpKTsKICAgICAgICAgcmV0dXJuIGlt
YWdlOwogICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBUZXh0Q29udGVudERhdGEgZmlu
YWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5k
ZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9u
ZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29u
dGVudERhdGE+KG1fdGV4dCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNs
b25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb250ZW50
RGF0YT4obV90ZXh0KTsgfQogCiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CkBAIC0xNjEsNyArMTYx
LDcgQEAgY2xhc3MgQ291bnRlckNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRh
IHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9j
dW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KHN0ZDo6bWFr
ZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNv
dW50ZXIoKSkpOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4g
bV9jb3VudGVyOwpAQCAtMTkwLDcgKzE5MCw3IEBAIGNsYXNzIFF1b3RlQ29udGVudERhdGEgZmlu
YWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5k
ZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9u
ZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNv
bnRlbnREYXRhPihxdW90ZSgpKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4g
Y2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGVDb250
ZW50RGF0YT4ocXVvdGUoKSk7IH0KIAogICAgIFF1b3RlVHlwZSBtX3F1b3RlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggZjNkOTFkYzhk
YmM4ZDllNDZjNjAxYjk1ODQzYjlhOTUyZjNiMmQxZC4uMzAwMTRkMDRmNzBmYjkxODE3NDI4NzYw
M2ZkZWFiNzIzOTU2MTRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgRmlsbExheWVyOjpGaWxsTGF5ZXIoRmlsbExh
eWVyVHlwZSB0eXBlKQogfQogCiBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25zdCBGaWxsTGF5ZXIm
IG8pCi0gICAgOiBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4o
Km8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgOiBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVl
PEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFn
ZSkKICAgICAsIG1feFBvc2l0aW9uKG8ubV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihv
Lm1feVBvc2l0aW9uKQpAQCAtMTE3LDcgKzExNyw3IEBAIEZpbGxMYXllcjo6fkZpbGxMYXllcigp
CiAKIEZpbGxMYXllciYgRmlsbExheWVyOjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQog
ewotICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpv
Lm1fbmV4dCkgOiBudWxscHRyOworICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxG
aWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOwogCiAgICAgbV9pbWFnZSA9IG8ubV9pbWFn
ZTsKICAgICBtX3hQb3NpdGlvbiA9IG8ubV94UG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAyNDliYTQ3ZTU4NDNlY2M2MmU2
ZmQ0ZjI2YWYxY2Y1MzhhMTYzZjljLi5mYjQzYzIwZTVjZTk5ZWNlMTlmNDUyZmQ5Zjg3OTY0ZDgx
NGJiN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xvbmUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+
IFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CiB9CiAKIFJlbmRl
clN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0
IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKQEAgLTQwOSw3
ICs0MDksNyBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxl
KHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldQogICAgIFJlbmRlclN0eWxlKiByZXN1
bHQgPSBwc2V1ZG8uZ2V0KCk7CiAKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzKQotICAg
ICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHNldWRvU3R5bGVD
YWNoZT4oKTsKKyAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMgPSBtYWtlVW5pcXVlPFBzZXVk
b1N0eWxlQ2FjaGU+KCk7CiAKICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+YXBwZW5kKFdURk1v
dmUocHNldWRvKSk7CiAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFk
ZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0
byYgZGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFkYXRh
LmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpCi0gICAgICAgIGRhdGEuY3VzdG9tUGFpbnRX
YXRjaGVkUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwor
ICAgICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEhh
c2hTZXQ8U3RyaW5nPj4oKTsKICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMt
PmFkZChuYW1lKTsKIH0KIApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Q29udGVudChSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAgICAg
aWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3Vu
aXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKKyAg
ICBzZXRDb250ZW50KG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5v
bk51bGwoKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQpAQCAtMTMxMCwxMyArMTMxMCwxMyBAQCB2b2lkIFJl
bmRlclN0eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkKICAg
ICBpZiAoYWRkICYmIGRhdGEuY29udGVudCkgewogICAgICAgICBhdXRvJiBsYXN0ID0gbGFzdENv
bnRlbnQoKmRhdGEuY29udGVudCk7CiAgICAgICAgIGlmICghaXM8VGV4dENvbnRlbnREYXRhPihs
YXN0KSkKLSAgICAgICAgICAgIGxhc3Quc2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250
ZW50RGF0YT4oc3RyaW5nKSk7CisgICAgICAgICAgICBsYXN0LnNldE5leHQobWFrZVVuaXF1ZTxU
ZXh0Q29udGVudERhdGE+KHN0cmluZykpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1
dG8mIHRleHRDb250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPihsYXN0KTsKICAgICAg
ICAgICAgIHRleHRDb250ZW50LnNldFRleHQodGV4dENvbnRlbnQudGV4dCgpICsgc3RyaW5nKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGEuY29udGVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOworICAgICAgICBkYXRhLmNvbnRlbnQg
PSBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKTsKICAgICAgICAgYXV0byYgYWx0
VGV4dCA9IGRhdGEuYWx0VGV4dDsKICAgICAgICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQogICAg
ICAgICAgICAgZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFsdFRleHQpOwpAQCAtMTMyNywxMiAr
MTMyNywxMiBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxD
b3VudGVyQ29udGVudD4gY291bnRlciwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFjb3VudGVyKQog
ICAgICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJD
b250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtl
VW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CiB9CiAK
IHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkK
IHsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVv
dGUpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihx
dW90ZSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnRBbHRUZXh0KGNv
bnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgQ291bnRlckRpcmVjdGl2
ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCkKIHsKICAgICBhdXRv
JiBtYXAgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvdW50ZXJEaXJlY3RpdmVz
OwogICAgIGlmICghbWFwKQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJE
aXJlY3RpdmVNYXA+KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2
ZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAtMTY3MSwxNCArMTY3MSwxNCBAQCB2
b2lkIFJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygpCiBBbmltYXRpb25MaXN0JiBSZW5k
ZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4o
KTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0g
bWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+YW5pbWF0aW9uczsKIH0KIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVu
c3VyZVRyYW5zaXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCkudHJhbnNpdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCkudHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAg
ICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBtYWtlVW5p
cXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT50cmFuc2l0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAppbmRleCAyMGIyYTgxMTRiMGM4ZTllYmQ0ODI3
MDc5YTk4MjBmMmVjMGRjZGMyLi42ZTM3Y2Y4ZmI4YWJhNTVlYzMzMGE5NjAzM2E4YTk1NGM3Y2Iw
NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGVEZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGVEZWZzLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIFN0eWxlU2hhZG93U1ZHRGF0YTo6
U3R5bGVTaGFkb3dTVkdEYXRhKCkKIAogaW5saW5lIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVT
aGFkb3dTVkdEYXRhKGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZD
b3VudGVkPFN0eWxlU2hhZG93U1ZHRGF0YT4oKQotICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/
IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQor
ICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm90aGVy
LnNoYWRvdykgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggM2Q2MWM5NGMwMTY2MTYwODU4ZGFiZDg0MDlmYzQw
ODY3MGU1MDFjYS4uYzE3ZWFmODU5YjBiZmFhN2RhYmMwMDhkNGU3NDBmYzYzMGE0YjgzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMzMs
NyArMzMsNyBAQCBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCiAg
ICAgLCBtX2NvbG9yKG8ubV9jb2xvcikKICAgICAsIG1fc3R5bGUoby5tX3N0eWxlKQogICAgICwg
bV9pc1dlYmtpdEJveFNoYWRvdyhvLm1faXNXZWJraXRCb3hTaGFkb3cpCi0gICAgLCBtX25leHQo
by5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxs
cHRyKQorICAgICwgbV9uZXh0KG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby5t
X25leHQpIDogbnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGFkMmNiZDk1
N2VlZjgyNTYwY2ZiMzUyZTlmNTBiMzllNjMzYTI2ZmYuLjk2ZGJiYTAwN2U2YTY0YTdkNjk3YTI5
YTIxZDYyMWFkNDQ3NTRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBA
QCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShj
b25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXND
b2xvcihvLnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IpCiAgICAgLCBjYXJldENvbG9yKG8u
Y2FyZXRDb2xvcikKICAgICAsIHZpc2l0ZWRMaW5rQ2FyZXRDb2xvcihvLnZpc2l0ZWRMaW5rQ2Fy
ZXRDb2xvcikKLSAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1
ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCB0ZXh0U2hhZG93
KG8udGV4dFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8udGV4dFNoYWRvdykgOiBu
dWxscHRyKQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5p
bmRlbnQpCiAgICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcAppbmRleCA2ZmJiMmI3YjBjM2ViMDNlODY5YTFlYWFjOTE2MTExOWM5YzYxZTli
Li5iZGQwMTkxNWFhMjc4ZGQ2YTY2NDhmZjRjM2ZiZGIzZmNjZDE0MmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuY3BwCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25J
bgogICAgICwgc2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgogICAgICwg
Y29udGVudChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAgICwg
Y291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IHN0ZDo6bWFrZV91bmlxdWU8
Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKKyAg
ICAsIGNvdW50ZXJEaXJlY3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBtYWtlVW5pcXVlPENv
dW50ZXJEaXJlY3RpdmVNYXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCiAgICAg
LCBhbHRUZXh0KG8uYWx0VGV4dCkKLSAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0ZDo6
bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBi
b3hTaGFkb3coby5ib3hTaGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLmJveFNoYWRv
dykgOiBudWxscHRyKQogICAgICwgd2lsbENoYW5nZShvLndpbGxDaGFuZ2UpCiAgICAgLCBib3hS
ZWZsZWN0KG8uYm94UmVmbGVjdCkKLSAgICAsIGFuaW1hdGlvbnMoby5hbmltYXRpb25zID8gc3Rk
OjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5hbmltYXRpb25zKSA6IG51bGxwdHIpCi0g
ICAgLCB0cmFuc2l0aW9ucyhvLnRyYW5zaXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRp
b25MaXN0Pigqby50cmFuc2l0aW9ucykgOiBudWxscHRyKQorICAgICwgYW5pbWF0aW9ucyhvLmFu
aW1hdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVs
bHB0cikKKyAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1h
dGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCiAgICAgLCBtYXNrKG8ubWFzaykK
ICAgICAsIG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJbWFnZSkKICAgICAsIHBhZ2VTaXplKG8ucGFn
ZVNpemUpCkBAIC0xNzAsNyArMTcwLDcgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAs
IGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKICAgICAsIGp1c3RpZnlTZWxmKG8uanVzdGlm
eVNlbGYpCiAgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykKLSAgICAs
IGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0
aWVzID8gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKKyAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gbWFrZVVuaXF1ZTxIYXNoU2V0
PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKICNp
ZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAgLCB0b3VjaEFjdGlvbnMoby50b3VjaEFjdGlv
bnMpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKaW5kZXggMmM2ZjMxNzhlZWIyNmM3YjJjMGQ5NWFlMTA4YjdlZmNjNmUyMmM0ZS4u
MjRjZGU0YmQ2MWU3MTRjMjMyM2I5ZTVjZDJjZjI2OWUyODQ1ZjlhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkK
ICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKLSAgICAsIG1faW1hZ2VSZXNvdXJj
ZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdl
UmVzb3VyY2UobWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogICAgIGltYWdl
UmVzb3VyY2UoKS5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAzYzMxMDU2ZDFjYWIxZmVhMTA0
OTA3ODBkMDBjOGRjZDJjNzk4MDY4Li5iYTFjZDA1MmRhZGFhMWNlMTg0MWM3YzIzY2FmMzNmYWE0
ZTM0N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5s
aW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsCiAKIHN0
ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGlu
ZUZsb3dCb3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVG
bG93Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZUZsb3dC
b3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAg
cmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IDY3ZTZmOTg5N2QyNzc0NGZkNDEzM2ZmMjc2NzE0
YzRlOWRhNjY1YjAuLmRiZjQ5MDNmODlmNGRjOTJlZGZmMzA1MzkyNTg2OWYzMmUyZDk5YzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAKIHN0
ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVU
ZXh0Qm94KCkKIHsKLSAgICBhdXRvIGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW5saW5lVGV4
dEJveD4oKnRoaXMpOworICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94
PigqdGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAgIHJl
dHVybiBib3g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDFiM2VmMjRjYzkyZDIwNTJhMzRhYWQy
MDg4MjMzMGUxYTEyM2I4NGYuLjFhZDI2NDk2NDY3MDljMjNmMGRiOWNmYWU0Yjg2M2MyNDdiMzY5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxT
VkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVz
KFNWR0ZpCiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gZmlsdGVyLnRhcmdldEJv
dW5kaW5nQm94KCk7CiAKICAgICAvLyBBZGQgZWZmZWN0cyB0byB0aGUgYnVpbGRlcgotICAgIGF1
dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3Jh
cGhpYzo6Y3JlYXRlKGZpbHRlcikpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZH
RmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOwogICAgIGJ1aWxk
ZXItPnNldFByaW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpKTsK
ICAgICBidWlsZGVyLT5zZXRUYXJnZXRCb3VuZGluZ0JveCh0YXJnZXRCb3VuZGluZ0JveCk7CiAg
ICAgCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBw
bHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyBBbHJlYWR5IGJ1aWx0LCBvciB3ZSdyZSBpbiBhIGN5Y2xlLCBvciB3
ZSdyZSBtYXJrZWQgZm9yIHJlbW92YWwuIFJlZ2FyZGxlc3MsIGp1c3QgZG8gbm90aGluZyBtb3Jl
IG5vdy4KICAgICB9CiAKLSAgICBhdXRvIGZpbHRlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlckRhdGE+KCk7CisgICAgYXV0byBmaWx0ZXJEYXRhID0gbWFrZVVuaXF1ZTxGaWx0ZXJEYXRh
PigpOwogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9IHJlbmRlcmVyLm9iamVjdEJv
dW5kaW5nQm94KCk7CiAKICAgICBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzID0gU1ZHTGVuZ3RoQ29u
dGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJFbGVtZW50PigmZmlsdGVyRWxlbWVudCgp
LCBmaWx0ZXJFbGVtZW50KCkuZmlsdGVyVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAKaW5kZXggZDhhZDA4MDQ2NmM1YzZkOWVlY2YwNzhjZGZmNjQyNmM2MTRh
MGNlMi4uNTUyY2U1YTMzYTgwNjJlNmJlZTBiMDRhZTNmMTYwZjA5OWViNTJmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4K
IAogICAgIGF1dG8mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKCZyZW5kZXJlciwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZ3JhZGllbnREYXRhKQotICAgICAg
ICBncmFkaWVudERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKKyAgICAg
ICAgZ3JhZGllbnREYXRhID0gbWFrZVVuaXF1ZTxHcmFkaWVudERhdGE+KCk7CiAKICAgICBib29s
IGlzUGFpbnRpbmdUZXh0ID0gcmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNl
TW9kZTo6QXBwbHlUb1RleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IGFhNTc2NWVkMzc5YjZh
YjFiOTQ0NzI2ZjViNWVlNDU0MzgzYzQ2NGUuLjRjODE5YjliYzU1ZGMyYmZhODJmYmJjMDk3ZjYz
NzU4NWI1YjEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlCiAKICAgICBib29sIG1pc3NpbmdNYXNrZXJEYXRhID0gIW1fbWFza2Vy
LmNvbnRhaW5zKCZyZW5kZXJlcik7CiAgICAgaWYgKG1pc3NpbmdNYXNrZXJEYXRhKQotICAgICAg
ICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBzdGQ6Om1ha2VfdW5pcXVlPE1hc2tlckRhdGE+KCkp
OworICAgICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPE1hc2tlckRhdGE+
KCkpOwogCiAgICAgTWFza2VyRGF0YSogbWFza2VyRGF0YSA9IG1fbWFza2VyLmdldCgmcmVuZGVy
ZXIpOwogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lz
dGVtKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCAyOWU4ZTdjMjQ3NTY1ODc5MmVlNGVkNGVk
MDgyMGZhZWVjOWJkYzBjLi5kZjAxN2JhMWJmYzBjY2Y3YWVhOTNhM2JiMmY3ZmM3ODhmNjk2Yzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKIAogc3RydWN0IE1hc2tlckRhdGEgeworICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IG1hc2tJbWFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBjYzJjYmZjZjBmZTlhNTll
Y2UxNWY1MmYzNTcyZGI1OWQxNjMyMGQ2Li4zMWJjNWYxOTMxYmRhZTUwYWFjNjYxMzU5ZmMwYTI2
ZjE3ODU4NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgUGF0dGVy
bkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBPcHQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBCdWls
ZCBwYXR0ZXJuLgotICAgIGF1dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRl
cm5EYXRhPigpOworICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRh
PigpOwogICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZElt
YWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgLy8gQ29tcHV0ZSBwYXR0
ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCAzNGIwYWU3NWJkYzAwNTY1NzZkNTEzODAxODVl
ZmU2YmM3MmM3MDZlLi42YTY3MTE4ZmYxYjI1OGIzMDNjOTU2Mzg1OTNmNDc0ZWU4OWJiZTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApA
QCAtNzksNyArNzksNyBAQCBSZW5kZXJTVkdTaGFwZTo6flJlbmRlclNWR1NoYXBlKCkgPSBkZWZh
dWx0OwogCiB2b2lkIFJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKIHsK
LSAgICBtX3BhdGggPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KHBhdGhGcm9tR3JhcGhpY3NFbGVt
ZW50KCZncmFwaGljc0VsZW1lbnQoKSkpOworICAgIG1fcGF0aCA9IG1ha2VVbmlxdWU8UGF0aD4o
cGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CiAgICAgcHJvY2Vz
c01hcmtlclBvc2l0aW9ucygpOwogCiAgICAgbV9maWxsQm91bmRpbmdCb3ggPSBjYWxjdWxhdGVP
YmplY3RCb3VuZGluZ0JveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZXNvdXJjZXMuY3BwCmluZGV4IGJmNzg2NDQzZGRkNjBkNjIxYmNkNTc5Yjg3NzBlZGNkOTFkMjlm
YTkuLjljNzM3Y2FmZjhiOTI3NmNjNDEwNjAyZjU3OWE5ZjM2NGU1YTA4YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTUwOCw3ICs1MDgs
NyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcihSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIqIGNsaXBwZXIpCiAgICAgQVNTRVJUKGNsaXBwZXItPnJlc291cmNlVHlwZSgpID09IENsaXBw
ZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQot
ICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlw
cGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0
YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyID0gY2xpcHBlcjsKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTUyOSw3ICs1MjksNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0RmlsdGVyKFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCiAgICAgQVNTRVJUKGZpbHRlci0+cmVzb3VyY2VUeXBl
KCkgPT0gRmlsdGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRl
ck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAg
ICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyID0gZmlsdGVyOwogICAgIHJldHVy
biB0cnVlOwpAQCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJT
dGFydChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQpCiAgICAgQVNTRVJUKG1h
cmtlclN0YXJ0LT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAg
aWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJr
ZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1hcmtlclN0YXJ0
OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2Vz
OjpzZXRNYXJrZXJNaWQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlck1pZCkKICAgICBB
U1NFUlQobWFya2VyTWlkLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwog
CiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1
ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSBtYXJrZXJN
aWQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01OTIsNyArNTkyLDcgQEAgYm9vbCBTVkdSZXNvdXJj
ZXM6OnNldE1hcmtlckVuZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyRW5kKQogICAg
IEFTU0VSVChtYXJrZXJFbmQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7
CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5p
cXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlckVuZCA9IG1hcmtl
ckVuZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFNWR1Jlc291
cmNlczo6c2V0TWFza2VyKFJlbmRlclNWR1Jlc291cmNlTWFza2VyKiBtYXNrZXIpCiAgICAgQVNT
RVJUKG1hc2tlci0+cmVzb3VyY2VUeXBlKCkgPT0gTWFza2VyUmVzb3VyY2VUeXBlKTsKIAogICAg
IGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7
CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFz
a2VyID0gbWFza2VyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wg
U1ZHUmVzb3VyY2VzOjpzZXRGaWxsKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKQog
ICAgICAgICAgICB8fCBmaWxsLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291
cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0
cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBt
X2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1f
ZmlsbFN0cm9rZURhdGEtPmZpbGwgPSBmaWxsOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjU5LDcg
KzY1OSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UoUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIqIHN0cm9rZSkKICAgICAgICAgICAgfHwgc3Ryb2tlLT5yZXNvdXJjZVR5cGUoKSA9
PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURh
dGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJv
a2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ry
b2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSA9IHN0cm9rZTsKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXggMTkxOTVhYTFkYWJjNjZlNGIzNTY1OTcyZWM5MWY4OTQ3
N2Y0MDM5Yi4uMWVlYjc4ZjU3YjNlYmIzMWI0Y2RlOGU1MzAyZGRlMDllMDQ4YzBiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJv
bVJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdAogICAgIEFTU0VSVCghbV9j
YWNoZS5jb250YWlucygmcmVuZGVyZXIpKTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBhbGwg
cmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFzc2VkIFJlbmRlck9iamVjdAotICAgIGF1
dG8gbmV3UmVzb3VyY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7CisgICAg
YXV0byBuZXdSZXNvdXJjZXMgPSBtYWtlVW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKICAgICBpZiAo
IW5ld1Jlc291cmNlcy0+YnVpbGRDYWNoZWRSZXNvdXJjZXMocmVuZGVyZXIsIHN0eWxlKSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggMzI0MTAyNTg0YzFmMTEzZDBlZWQzMzIx
NGE2N2Y1NTM0YWIwZjU5YS4uODEwYTBiODgwYThhYTRkYWUwMmZhYjQ0NmE5NDFlZGQ5YzVhNzFk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmlj
c0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1l
dHJpY3NCdWlsZGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lu
bGluCiAgICAgaWYgKG1faXNDb21wbGV4VGV4dCkKICAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJh
dG9yID0gbnVsbHB0cjsKICAgICBlbHNlCi0gICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2lkdGhJdGVyYXRvcj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsKKyAg
ICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXaWR0aEl0ZXJhdG9yPigm
c2NhbGVkRm9udCwgbV9ydW4pOwogfQogCiBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXIuY3BwCmluZGV4IGQzN2JlZThjYmNlNTU2MTUxMWIyNGUzNjRlMWFmNjRhYWQ3YWE3NWQuLmU2
YjI3MzIwZDkyZmU4NTZkODM3NDEwOGVkOTU0MmUwOTFlZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApA
QCAtMTIyLDIyICsxMjIsMjIgQEAgc3RhdGljIHZvaWQgZ2V0SW5saW5lUnVuKFJlbmRlck9iamVj
dCogc3RhcnQsIFJlbmRlck9iamVjdCogYm91bmRhcnksIFJlbmRlck9iamUKIAogUmVuZGVyVHJl
ZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKFJlbmRlclZpZXcmIHZpZXcpCiAgICAgOiBtX3Zp
ZXcodmlldykKLSAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rmly
c3RMZXR0ZXI+KCp0aGlzKSkKLSAgICAsIG1fbGlzdEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxM
aXN0PigqdGhpcykpCi0gICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVl
PE11bHRpQ29sdW1uPigqdGhpcykpCi0gICAgLCBtX3RhYmxlQnVpbGRlcihzdGQ6Om1ha2VfdW5p
cXVlPFRhYmxlPigqdGhpcykpCi0gICAgLCBtX3J1YnlCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8
UnVieT4oKnRoaXMpKQotICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKHN0ZDo6bWFrZV91bmlx
dWU8Rm9ybUNvbnRyb2xzPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrQnVpbGRlcihzdGQ6Om1ha2Vf
dW5pcXVlPEJsb2NrPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIoc3RkOjptYWtl
X3VuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKLSAgICAsIG1faW5saW5lQnVpbGRlcihzdGQ6Om1h
a2VfdW5pcXVlPElubGluZT4oKnRoaXMpKQotICAgICwgbV9zdmdCdWlsZGVyKHN0ZDo6bWFrZV91
bmlxdWU8U1ZHPigqdGhpcykpCisgICAgLCBtX2ZpcnN0TGV0dGVyQnVpbGRlcihtYWtlVW5pcXVl
PEZpcnN0TGV0dGVyPigqdGhpcykpCisgICAgLCBtX2xpc3RCdWlsZGVyKG1ha2VVbmlxdWU8TGlz
dD4oKnRoaXMpKQorICAgICwgbV9tdWx0aUNvbHVtbkJ1aWxkZXIobWFrZVVuaXF1ZTxNdWx0aUNv
bHVtbj4oKnRoaXMpKQorICAgICwgbV90YWJsZUJ1aWxkZXIobWFrZVVuaXF1ZTxUYWJsZT4oKnRo
aXMpKQorICAgICwgbV9ydWJ5QnVpbGRlcihtYWtlVW5pcXVlPFJ1Ynk+KCp0aGlzKSkKKyAgICAs
IG1fZm9ybUNvbnRyb2xzQnVpbGRlcihtYWtlVW5pcXVlPEZvcm1Db250cm9scz4oKnRoaXMpKQor
ICAgICwgbV9ibG9ja0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9jaz4oKnRoaXMpKQorICAgICwgbV9i
bG9ja0Zsb3dCdWlsZGVyKG1ha2VVbmlxdWU8QmxvY2tGbG93PigqdGhpcykpCisgICAgLCBtX2lu
bGluZUJ1aWxkZXIobWFrZVVuaXF1ZTxJbmxpbmU+KCp0aGlzKSkKKyAgICAsIG1fc3ZnQnVpbGRl
cihtYWtlVW5pcXVlPFNWRz4oKnRoaXMpKQogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgLCBtX21h
dGhNTEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxNYXRoTUw+KCp0aGlzKSkKKyAgICAsIG1fbWF0
aE1MQnVpbGRlcihtYWtlVW5pcXVlPE1hdGhNTD4oKnRoaXMpKQogI2VuZGlmCi0gICAgLCBtX2Nv
bnRpbnVhdGlvbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRpb24+KCp0aGlzKSkK
KyAgICAsIG1fY29udGludWF0aW9uQnVpbGRlcihtYWtlVW5pcXVlPENvbnRpbnVhdGlvbj4oKnRo
aXMpKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVsbFNjcmVlbkJ1aWxk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCisgICAgLCBtX2Z1bGxTY3Jl
ZW5CdWlsZGVyKG1ha2VVbmlxdWU8RnVsbFNjcmVlbj4oKnRoaXMpKQogI2VuZGlmCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIXNfY3VycmVudCB8fCAmbV92aWV3ICE9ICZzX2N1cnJlbnQtPm1fdmll
dyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVVcGRhdGVyLmNwcAppbmRleCBmNDJiY2EzYjM0NjllNmQ1NmU2YTRkN2I5NDQ1ZTE2N2Ix
MTExYjJiLi4yNjg1NDRhMWU2NWJmYTNkMzhmNDNlYjViYmNlNGVlZWNhYWM0NmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFy
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyoKIAogUmVu
ZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2dlbmVyYXRlZENvbnRlbnQoc3RkOjpt
YWtlX3VuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCisgICAgLCBtX2dlbmVyYXRlZENv
bnRlbnQobWFrZVVuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCiAgICAgLCBtX2J1aWxk
ZXIocmVuZGVyVmlldygpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1VzZXJJbnB1dEJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRn
ZS5oCmluZGV4IDdmZTdmNjg3MzIwNDEwZWYwNDgzODdkNDgxZjkyN2IxMmMyMzgzYWMuLmI5Yzcy
ZWI4ODBlOWJiODc1OThmNDE0NDA3N2QwMjMwMTY2NjViODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBs
YXkvVXNlcklucHV0QnJpZGdlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBjbGFzcyBJbnB1dFNv
dXJjZSB7CiB9OwogCiBjbGFzcyBVc2VySW5wdXRCcmlkZ2UgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJJbnB1dEJyaWRnZSk7CiBw
dWJsaWM6CiAgICAgVXNlcklucHV0QnJpZGdlKFBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggZGFlMTFjYjJmNjI4OTkxODQ1M2ExMjgwOWFlNDNi
ODEyNGI2YjEyYi4uNmQ2OTVhNjYwZDBlNGUwNDVhMjZkYWJlMzMzMWVjYTI2ZmFkMmViZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgc3RhdGljIGJvb2wgc2hvdWxkRGlydHlBbGxTdHlsZShjb25zdCBWZWN0b3I8U3R5bGVTaGVl
dENvbnRlbnRzKj4mIHNoZWV0cykKIH0KIAogSW52YWxpZGF0b3I6OkludmFsaWRhdG9yKGNvbnN0
IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzLCBjb25zdCBNZWRpYVF1ZXJ5RXZh
bHVhdG9yJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKQotICAgIDogbV9vd25lZFJ1bGVTZXQoc3RkOjpt
YWtlX3VuaXF1ZTxSdWxlU2V0PigpKQorICAgIDogbV9vd25lZFJ1bGVTZXQobWFrZVVuaXF1ZTxS
dWxlU2V0PigpKQogICAgICwgbV9ydWxlU2V0KCptX293bmVkUnVsZVNldCkKICAgICAsIG1fZGly
dGllc0FsbFN0eWxlKHNob3VsZERpcnR5QWxsU3R5bGUoc2hlZXRzKSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAppbmRleCA0ZDgxNDhiNGUzMWQ3NGQ2YTBhNTE3NTRk
ZWU1ZWFiODA3NTlhYmFhLi4wNjJkNTk2NGQ3N2VjNWRiODNiM2Y0MWFjYmFhODdlZmNlOThkZDZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZWxhdGlvbnM+IGNvbW1pdFJlbGF0aW9uc1RvUmVuZGVyU3R5
bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zCiAKICAgICBhdXRvIGFwcGVuZFN0eWxlUmVsYXRp
b24gPSBbJnJlbWFpbmluZ1JlbGF0aW9uc10gKGNvbnN0IFJlbGF0aW9uJiByZWxhdGlvbikgewog
ICAgICAgICBpZiAoIXJlbWFpbmluZ1JlbGF0aW9ucykKLSAgICAgICAgICAgIHJlbWFpbmluZ1Jl
bGF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVsYXRpb25zPigpOworICAgICAgICAgICAgcmVt
YWluaW5nUmVsYXRpb25zID0gbWFrZVVuaXF1ZTxSZWxhdGlvbnM+KCk7CiAgICAgICAgIHJlbWFp
bmluZ1JlbGF0aW9ucy0+YXBwZW5kKHJlbGF0aW9uKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlU2NvcGUuY3BwCmluZGV4IDlmMGQxYWQ3NDkwYmZlYWIyNDA3Y2U3YmM4OGIwOTUxMTZk
MGIyMjIuLmRjYjY1YmMwOWMzNDc3OWI2M2EyOTMyNGUyNGQzNzJiZmM2YTIzZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFN0eWxlUmVzb2x2ZXIm
IFNjb3BlOjpyZXNvbHZlcigpCiAgICAgaWYgKCFtX3Jlc29sdmVyKSB7CiAgICAgICAgIFNldEZv
clNjb3BlPGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5bGVS
ZXNvbHZlciwgdHJ1ZSB9OwogCi0gICAgICAgIG1fcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOworICAgICAgICBtX3Jlc29sdmVyID0gbWFrZVVu
aXF1ZTxTdHlsZVJlc29sdmVyPihtX2RvY3VtZW50KTsKIAogICAgICAgICBpZiAoIW1fc2hhZG93
Um9vdCkgewogICAgICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0
ZWQoKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+PiBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3IoKQogYm9vbCBTY29wZTo6
YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyhjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgY29u
c3QKIHsKICAgICBpZiAoIW1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExv
b2t1cCkgewotICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RM
b29rdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+Pigp
OworICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAg
PSBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOwogICAgICAgICBm
b3IgKGF1dG8mIGFjdGl2ZVN0eWxlU2hlZXQgOiBtX2FjdGl2ZVN0eWxlU2hlZXRzKQogICAgICAg
ICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwLT5hZGQo
YWN0aXZlU3R5bGVTaGVldC5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDg0NmEyMzFhZDJiMThiNWQ3ZjI5NDkwMTZkMDlmMjIz
ZGQ2OWU4OGIuLmEwMGY0ZmUwZjRjY2I1MmRkODMxYTk0ZTI2YTU4NjRlNWMxYjc5MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTU0OCw3ICs1NDgs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmUoKQogCiAg
ICAgbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9IG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLmhh
c1BlbmRpbmdTaGVldHNCZWZvcmVCb2R5KCk7CiAKLSAgICBtX3VwZGF0ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8VXBkYXRlPihtX2RvY3VtZW50KTsKKyAgICBtX3VwZGF0ZSA9IG1ha2VVbmlxdWU8VXBk
YXRlPihtX2RvY3VtZW50KTsKICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKGFkb3B0UmVmKCpuZXcg
U2NvcGUobV9kb2N1bWVudCkpKTsKICAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnQobV9k
b2N1bWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMu
Y3BwCmluZGV4IGJjNTE0MzRiMGIyYjhlMGJmNzdlNTdhNGE3NmU0ZDRiY2VlZTk5NjUuLjI1ZjM4
NjNkMDc5NTRhYzhkNmE2M2U2ODY0YTFmMDc2YjBkNTFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAs
IG1fcmVzb3VyY2VzQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkK
KyAgICAsIG1fcmVzb3VyY2VzQ2FjaGUobWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkK
ICAgICAsIG1fYXJlQW5pbWF0aW9uc1BhdXNlZCghZG9jdW1lbnQucGFnZSgpIHx8ICFkb2N1bWVu
dC5wYWdlKCktPmlzVmlzaWJsZSgpKQogewogfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYg
aWQsIEVsZW1lbnQmIGVsCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5h
ZGQoaWQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0VsZW1lbnRzPigp
OworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQZW5kaW5nRWxl
bWVudHM+KCk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZlbGVtZW50KTsKIAog
ICAgIGVsZW1lbnQuc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpOwpAQCAtMjc5LDcgKzI3OSw3IEBA
IEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNldE9mRWxlbWVu
dHNSZWZlcmVuY2luZ1RhcmdldChTVkdFCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRk
RWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQmIHJlZmVyZW5jaW5nRWxlbWVudCwg
U1ZHRWxlbWVudCYgcmVmZXJlbmNlZEVsZW1lbnQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2Vs
ZW1lbnREZXBlbmRlbmNpZXMuZW5zdXJlKCZyZWZlcmVuY2VkRWxlbWVudCwgWyZyZWZlcmVuY2lu
Z0VsZW1lbnRdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTVkdF
bGVtZW50Kj4+KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVmZXJlbmNp
bmdFbGVtZW50IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PFNWR0VsZW1l
bnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0Vs
ZW1lbnQgfSk7CiAgICAgfSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZyZWZlcmVuY2luZ0VsZW1lbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGE4MDk2ZGRhZGE4MWVhZDZhN2ExZWEzMjRjZDg1MDY3
ZjVjMGIyOGIuLmU0ZGUzYjc0OWYwYTAwMzliYzVjNGNmY2QwOGUxOTM5NmNkNjU2MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgTkVWRVJf
SU5MSU5FIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiBjcmVhdGVBdHRy
aWJ1dGVOYW1lVAogU1ZHRWxlbWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50LCBDcmVhdGVTVkdFbGVtZW50KQogICAgICwgU1ZHTGFuZ1NwYWNlKHRoaXMpCi0g
ICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJvcGVy
dHlBbmltYXRvckZhY3Rvcnk+KCkpCisgICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KG1h
a2VVbmlxdWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCiB7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5
bGU6OkNoYW5nZSBjaGFuZ2UpCiBTVkdFbGVtZW50UmFyZURhdGEmIFNWR0VsZW1lbnQ6OmVuc3Vy
ZVNWR1JhcmVEYXRhKCkKIHsKICAgICBpZiAoIW1fc3ZnUmFyZURhdGEpCi0gICAgICAgIG1fc3Zn
UmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0YT4oKTsKKyAgICAg
ICAgbV9zdmdSYXJlRGF0YSA9IG1ha2VVbmlxdWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOwogICAg
IHJldHVybiAqbV9zdmdSYXJlRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmNwcAppbmRleCBhNzU4OTBmMzE4MDQ2OGQxNTI0YmVlODU0MzU5ZDAzNTZlYjUy
MjJkLi44MGVjN2ZjODYyOTJiNjNiYmJhODUxZTExZTEwNmZhMTUyZjkxNDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEFm
ZmluZVRyYW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0o
KSBjb25zdAogQWZmaW5lVHJhbnNmb3JtKiBTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKLSAgICAg
ICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFmZmluZVRyYW5z
Zm9ybT4oKTsKKyAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPEFm
ZmluZVRyYW5zZm9ybT4oKTsKICAgICByZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVh
bS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKaW5kZXggNmYwYWNh
Y2YxOWVlODUwZGI0ZTY5MTBkM2U4M2QyNjQ5NGQ2N2ViMC4uNDM0ZDkxZWIzZGY4YWQ4NzlmODM5
YTQ4OTY2ODY3ODBiNDA5ZjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhCeXRlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFt
LmgKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW0gewogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5KCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CiAgICAg
fQogCiAgICAgRGF0YUl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmJlZ2lu
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVD
b250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRh
aW5lci5jcHAKaW5kZXggZTA0MjNjZTk4MTVmYTBmMjU1NjNhM2I1NDMxNDA4NmFjMzU2ZmY0NC4u
M2ViNTdhZDJmMjFkZmE2NGI5YjExODAxZjQyNzI4MzYwMmI3NWI3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUoU1ZHU01JTEVsZW1lbnQq
IGFuaW1hdGlvbiwgU1ZHRWxlbWVudCogdGFyZ2V0LAogICAgIEVsZW1lbnRBdHRyaWJ1dGVQYWly
IGtleSh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRp
b25zVmVjdG9yPiYgc2NoZWR1bGVkID0gbV9zY2hlZHVsZWRBbmltYXRpb25zLmFkZChrZXksIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNjaGVkdWxlZCkKLSAgICAgICAgc2No
ZWR1bGVkID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigpOworICAgICAgICBz
Y2hlZHVsZWQgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbnNWZWN0b3I+KCk7CiAgICAgQVNTRVJUKCFz
Y2hlZHVsZWQtPmNvbnRhaW5zKGFuaW1hdGlvbikpOwogICAgIHNjaGVkdWxlZC0+YXBwZW5kKGFu
aW1hdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4
IDQwZWU5OTE1NTg1ZWNhOWExMDA0NGI5ZTMzMGM4NzUyODBjMjUxZTcuLjNiMjdkMDYwOGJmOTBm
ZGFhMGU1YjE1NjAwZWE0YWQ1ZmUxMzRkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0lt
YWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIGlmIChhbGxEYXRh
UmVjZWl2ZWQpIHsKICAgICAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1
cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwotICAgICAgICBtX2Nocm9tZUNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOworICAgICAgICBtX2Nocm9t
ZUNsaWVudCA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOwogICAgICAg
ICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsK
IAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2FkaW5nIGl0c2VsZiwg
d2UgbWlnaHQgbGVhayB0aGUgd29ybGQuCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFT
dGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAg
ICAvLyBUaGlzIHdpbGwgYmVjb21lIGFuIGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxl
IHRvIGxvYWQgb3RoZXIKICAgICAgICAgLy8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNh
ZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdlIGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBi
eSBhIHRvcC1sZXZlbCBkb2N1bWVudC4KLSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgICAgIG1fcGFnZSA9IG1h
a2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgICAgICBtX3Bh
Z2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5z
ZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRp
bmdzKCkuc2V0UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IGQ5NzAzMDJh
ZGY4NjU4NTUwOWM2NTA4ZDUwNDk1MmEyNTUzMjM2MmIuLmM3N2FlMDhiYWM2NWMzYzJjZmM4OTc0
ZmEzM2U3NjQ2MGNlOTdmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3Mg
UmVuZGVyT2JqZWN0OwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVy
QnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBIYXNoU2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9w
ZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0
ZWRQcm9wZXJ0eS5oCmluZGV4IGU1ZWZhYWVhNzExMWJjNmM5NTdkOTcyZDc0NTQ4ZGU5MmQ4YTEz
M2UuLmNlYmFhMzYzYmY1MjdiYmIzOGU1NjdkM2UzZDQyYmY4NDMxMDJhNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVy
dHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWREZWNvcmF0
ZWRQcm9wZXJ0eSA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5IHsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmlt
YXRlZERlY29yYXRlZFByb3BlcnR5PgogICAgIHN0YXRpYyBSZWY8QW5pbWF0ZWRQcm9wZXJ0eT4g
Y3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgc3RkOjptYWtl
X3VuaXF1ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZSwgUHJvcGVydHlUeXBlPj4o
KSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRl
eHRFbGVtZW50LCBtYWtlVW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQ
cm9wZXJ0eVR5cGU+PigpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVy
dHlUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQ
cm9wZXJ0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXggYWE2MWJmZjQzNDQ4OGNhNjc0YjA0
ODg5ZWM3NDU4YTMzNjAyMGI4ZC4uZTAyMzRmMzU5MTI5Mjk1NzljZjNlMmIxNjgwOTQyNTI4ZjA3
YWExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgU1ZH
RWxlbWVudDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSwgdHlwZW5hbWUg
QW5pbWF0aW9uRnVuY3Rpb24+CiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IgOiBw
dWJsaWMgU1ZHQXR0cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHVzaW5nIEFuaW1hdG9yQW5pbWF0ZWRQcm9wZXJ0eSA9IEFuaW1hdGVk
UHJvcGVydHk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAyODg3NDFiMTI5
MDVjYjg1MTQzMDU0MDkwYzRlMmM5MTM5YjM1YmYzLi5kMDczN2FjYmEzMzFmZTEyMzQ3YjgzNGZm
N2FhMzAxMDBhZDE1NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC01MCw3
ICs1MCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmlt
YXRlZEFuZ2xlPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmlt
YXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQQogCiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdB
bmltYXRlZEJvb2xlYW4+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5B
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQog
CiBwcml2YXRlOgpAQCAtODksNyArODksNyBAQCBjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9u
QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVi
bGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4mIGFuaW1hdGVkLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
bmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdl
ckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4K
IAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxT
CiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0
aE1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE3Miw3ICsxNzIsNyBAQCBjbGFzcyBTVkdB
bmltYXRlZE51bWJlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjxTVkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRl
ZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBp
c0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE4OSw3ICsxODks
NyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNW
R0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
ICAgICAKIHByaXZhdGU6CkBAIC0yMDYsNyArMjA2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjwKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3Q+JiBhbmltYXRlZCwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMjQsNyAr
MjI0LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1YKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0
byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1h
dGVkUG9pbnRMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2Fs
Y01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9
CiAgICAgCiBwcml2YXRlOgpAQCAtMjQzLDcgKzI0Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkT3Jp
ZW50VHlwZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjxTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZCwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjYyLDcgKzI2
Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRp
dmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjgxLDcgKzI4MSw3
IEBAIGNsYXNzIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUmVjdD4mIGFu
aW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTgsNyArMjk4
LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdB
bmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
U3RyaW5nPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0zMzgsNyArMzM4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0
b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG8KIHB1YmxpYzoKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wg
aXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFu
aW1hdG9yLmgKaW5kZXggYzcyM2FjZmYyNjA2MDFhMWU1MGQzMjY5NWFlM2NlOGM5MjYwMjUxNS4u
Yzg5MDUwMTY5ZDNjMWE0MzNhYjdhMjdiYTFhZWNlYTMyZGJiNWY4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlQYWlyQW5pbWF0b3IuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBTVkdFbGVtZW50OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLCB0eXBlbmFtZSBBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3IyPgogY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmlt
YXRvciA6IHB1YmxpYyBTVkdBdHRyaWJ1dGVBbmltYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgQW5pbWF0ZWRQcm9wZXJ0eTEgPSB0eXBlbmFt
ZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxOjpBbmltYXRvckFuaW1hdGVkUHJvcGVydHk7CiAg
ICAgdXNpbmcgQW5pbWF0ZWRQcm9wZXJ0eTIgPSB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3IyOjpBbmltYXRvckFuaW1hdGVkUHJvcGVydHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJB
bmltYXRvckltcGwuaAppbmRleCA0ZWRhMzRjOWIxODg4ZmZkNmQzZDY2MzJjZjBjZjZkMzNhNmZh
OWUxLi4zOTdmZjA5MTU5NDAwZDMzYzA1MmIxMWQ4MjhjYjhlMzdiM2M4MDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFu
aW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU1ZH
QW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJv
cGVydHlQYWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRl
ZDEsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFu
aW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRv
ciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZEludGVn
ZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHlQYWlyQW5pbWF0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFu
aW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFu
aW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlclBhaXJBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVB
bmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5p
bWF0b3IuaAppbmRleCA2NGE2NWIxODYyZmZiOTY5NjAzYzcxNTYwN2I1NDRmNTU2ZTAwODNhLi4w
MjJlZGVkYTgyMWI1MzM1NWIzZmRkMzk1OGYyNDM2ODAxOWFhZDdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKQEAgLTUy
LDYgKzUyLDcgQEAgZW51bSBjbGFzcyBDYWxjTW9kZSA6IHVpbnQ4X3QgewogfTsKIAogY2xhc3Mg
U1ZHQXR0cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCiAgICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVy
YXRpb24uaAppbmRleCAyNjRjMzZiNjkwNzRjY2YzZTJlMjlkMjY3NzIxY2Y1Mzc0NTcwMzExLi5h
MzVlMjUwYTliMTUxZjllODk3Zjg1ZjYzNjdjMzg3ZGJiM2NhNTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24gOiBwdWJsaWMg
U1ZHRGVjb3JhdGVkUHJpbWl0aXZlPERlY29yYXRpb25UeXBlLCBFbnUKICAgICBzdGF0aWMgYXV0
byBjcmVhdGUoY29uc3QgRW51bVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX2ludGVncmFsPERlY29yYXRpb25UeXBlPjo6dmFsdWUsICJEZWNvcmF0aW9u
VHlwZSBmb3JtIGVudW0gc2hvdWxkIGJlIGludGVncmFsLiIpOwotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0RlY29yYXRlZFByaW1pdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
RGVjb3JhdGVkUHJpbWl0aXZlLmgKaW5kZXggZTJhNTI0MzEyNGYwNzNmODVhZDhkZDZhOTZkZjRh
NjUzNTBiNjdjOC4uOWI2NjEyN2JjNTllMmY1MWYwMTAxOTIxNmZhMmQ1NjIxNTNjYTdkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJpbWl0
aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJp
bWl0aXZlLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvcmF0aW9uVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlPgogY2xhc3Mg
U1ZHRGVjb3JhdGVkUHJpbWl0aXZlIDogcHVibGljIFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29y
YXRpb25UeXBlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgdXNpbmcgQmFz
ZSA9IFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlPjsKIAogcHVibGljOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZl
UHJvcGVydHlBbmltYXRvci5oCmluZGV4IDQxMjE3MjIwYmRmY2ZlZmY2N2MxNjA5MTNhZDE0ZDZi
OTliYTE0MmMuLjY4YjJlMGIxMTM3YWRlOGQzN2Y4MGUwZTI5OGI1ZGUyNGQwMWE4MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5
QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRp
dmVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU1ZHUHJpbWl0aXZl
UHJvcGVydHlBbmltYXRvciA6IHB1YmxpYyBTVkdQcm9wZXJ0eUFuaW1hdG9yPEFuaW1hdGlvbkZ1
bmN0aW8KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJv
cGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCmluZGV4IGFkNTBk
NDIzNjI5Njk0MmQxZGM4NzE4YTJkYThlNmFkZjhkMWJjY2IuLjVlMzAxOGY1YTQwMmE5YzdmMTI5
ZDQxZDQxOWFjNWU5NDlmZWUwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaApAQCAtMzQsNiArMzQs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFj
dG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHUHJv
cGVydHlBbmltYXRvckZhY3RvcnkoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwu
aAppbmRleCAxMTg4ODZjNGY4YmI3MjM2YTQ0NmZmYWQwMzg2OWZmMGIwZGNkZTk1Li5mZDNkYzk2
MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEyODc5YTdlZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1w
bC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUp
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhBbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RG
TW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9y
SW1wbC5oCmluZGV4IDVlZThhYzNkMGY0ZTEyYzYyYTVlZmMwMGZmNTNiNTkwZTQwMGYzNjguLmFl
OTRlMjllZDRiODYxM2I5OWNkOTc0ODZlZDBiMDYyODI2YzAyZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxp
c3RBbmltYXRvckltcGwuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0QW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcjxTVkdMZW5n
dAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
TGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1v
ZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aExpc3RBbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0K
IAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGMxMTMxZDI1
YjM4OGJiYTgzNjY1M2QyOTcwOGU2YTViYmU0YmRmYzQuLjI0Mzc4OWJiOWQyNzlhNmU4NTNlMDg2
NDRiNjRiZWU4NTFlNWVlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmNwcApAQCAtMjMxLDYgKzIzMSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFj
a3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogfQogCiBjbGFzcyBJbnRlcm5hbFNl
dHRpbmdzV3JhcHBlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzV3Jh
cHBlcihQYWdlKiBwYWdlKQogICAgICAgICA6IG1faW50ZXJuYWxTZXR0aW5ncyhJbnRlcm5hbFNl
dHRpbmdzOjpjcmVhdGUocGFnZSkpIHsgfQpAQCAtMjUyLDcgKzI1Myw3IEBAIGNvbnN0IGNoYXIq
IEludGVybmFsU2V0dGluZ3M6OnN1cHBsZW1lbnROYW1lKCkKIEludGVybmFsU2V0dGluZ3MqIElu
dGVybmFsU2V0dGluZ3M6OmZyb20oUGFnZSogcGFnZSkKIHsKICAgICBpZiAoIVN1cHBsZW1lbnQ8
UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpCi0gICAgICAgIFN1cHBsZW1lbnQ8
UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVl
PEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CisgICAgICAgIFN1cHBsZW1lbnQ8UGFn
ZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEludGVybmFs
U2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludGVybmFs
U2V0dGluZ3NXcmFwcGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50
TmFtZSgpKSktPmludGVybmFsU2V0dGluZ3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IGUxNzhiNDk2ODU4NzU1MWJmMDcwNGQ4MzAyMDU2MmRkMTJkZjRlYmIu
LjYyZTczNDlhMWNhMTY2MmQwNjJjNjA3OTM4OTJmYzcwZmY2MDU4MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCBjbGFzcyBJbnNwZWN0b3JT
dHViRnJvbnRlbmQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwg
cHVibGljCiB9OwogCiBJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVu
ZChQYWdlJiBpbnNwZWN0ZWRQYWdlLCBSZWZQdHI8RE9NV2luZG93PiYmIGZyb250ZW5kV2luZG93
KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkUGFnZS5pbnNw
ZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCksIHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+KCkp
CisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKICAgICAs
IG1fZnJvbnRlbmRXaW5kb3coZnJvbnRlbmRXaW5kb3cuY29weVJlZigpKQogewogICAgIEFTU0VS
VF9BUkcoZnJvbnRlbmRXaW5kb3csIGZyb250ZW5kV2luZG93KTsKQEAgLTU2Nyw3ICs1NjcsNyBA
QCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYm
IGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGF1dG8gbW9ja1BheW1lbnRDb29yZGlu
YXRvciA9IG5ldyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKCpmcmFtZS0+cGFnZSgpKTsKLSAgICAg
ICAgZnJhbWUtPnBhZ2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8
UGF5bWVudENvb3JkaW5hdG9yPigqbW9ja1BheW1lbnRDb29yZGluYXRvcikpOworICAgICAgICBm
cmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29v
cmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CiAgICAgfQogI2VuZGlmCiB9CkBA
IC0xNDE3LDcgKzE0MTcsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVjaFN5bnRo
ZXNpemVyKCkKICAgICBpZiAoIXN5bnRoZXNpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3lu
dGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOworICAgIHN5bnRoZXNpcy0+c2V0UGxh
dGZvcm1TeW50aGVzaXplcihtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
PihzeW50aGVzaXMpKTsKIH0KIAogI2VuZGlmCkBAIC0yNDg5LDcgKzI0ODksNyBAQCBSZWZQdHI8
V2luZG93UHJveHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiB1cmwpCiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9IGNvbnRleHREb2N1bWVudCgp
LT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0gaW5zcGVjdGVkUGFnZS0+bWFp
bkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgYXV0byBmcm9udGVuZFdpbmRv
d1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3csIHVybCwgIiIsICIiKS5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01X
aW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CisgICAgbV9pbnNwZWN0b3JG
cm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVjdGVkUGFn
ZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3coKSkpOwog
ICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQogCkBAIC0zMDA5LDcgKzMwMDksNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldFZpZXdFeHBvc2VkUmVjdChmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZgogCiB2b2lkIEludGVybmFsczo6c2V0UHJpbnRpbmco
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKKyAgICBwcmludENvbnRl
eHRGb3JUZXN0aW5nKCkgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oZnJhbWUoKSk7CiAgICAg
cHJpbnRDb250ZXh0Rm9yVGVzdGluZygpLT5iZWdpbih3aWR0aCwgaGVpZ2h0KTsKIH0KIApAQCAt
MzQ0OCw3ICszNDQ4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZUF1dG9TaXplTW9kZShib29s
IGVuYWJsZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogdm9pZCBJbnRlcm5hbHM6OmluaXRp
YWxpemVNb2NrQ0RNKCkKIHsKLSAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAo
TGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5TW9ja0NETT4o
Y2RtKTsgfSwKKyAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RN
KiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwKICAgICAg
ICAgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeU1vY2tDRE06OnN1cHBv
cnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpOwogfQogCkBAIC00MjQxLDcgKzQyNDEsNyBAQCB2b2lk
IEludGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCiAgICAgaWYgKCFkb2N1
bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRo
cmVhZFF1ZXVlKCksICpkb2N1bWVudCwgW2RvY3VtZW50LCB0ZXN0TnVtYmVyXSgpIHsKKyAgICBh
dXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1p
Y3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1lbnQsIHRl
c3ROdW1iZXJdKCkgewogICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1pY3JvVGFzayAj
IiwgdGVzdE51bWJlciwgIiBoYXMgcnVuLiIpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKaW5kZXggNjQyODdkMjM5YWY1NzNlOTIwM2QyNTg0MzFi
MjczYzdiODc0OTAwNi4uNjAyNzJkMzQ5N2Y0Yjg2NWNkYjAzNzBmZTQxZDNkNmZiZGU4YjdlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC0zOCw2ICszOCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDRE1TZXNzaW9uIDogcHVibGlj
IExlZ2FjeUNETVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIE1vY2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0
dWFsIH5Nb2NrQ0RNU2Vzc2lvbigpID0gZGVmYXVsdDsKQEAgLTczLDcgKzc0LDcgQEAgYm9vbCBM
ZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVT
ZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogc3RhdGljIFVpbnQ4QXJyYXkqIGlu
aXREYXRhUHJlZml4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5
TW9ja0NETS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKaW5kZXgg
MjRiOWI4MDA4YzRmNTE5YjRhNjY2ZWM2ZDE1MjVhYzYyZWMxYzMwYS4uYjkzYWViOTNmZjYzMjll
NTE1NDdjMTNmZjc2YTY5MmVlNmE3MTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9MZWdhY3lNb2NrQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lN
b2NrQ0RNLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVn
YWN5Q0RNOwogCiBjbGFzcyBMZWdhY3lNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGVJbnRlcmZh
Y2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IExlZ2FjeU1vY2tDRE0oTGVnYWN5Q0RNKiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2RtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA1Njc5NmVlOTAwYmJm
M2I2Y2MwNWNmNmEyMjk2ZWZkNDNiOWVmN2I2Li5jZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2
ZDcxYjM2OTY2MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZERh
dGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKIH0KIAogTW9j
a0NETTo6TW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDMzOTZjZDAyYWQwMmRkMTRlOTJmMTU3
OWUyNzUxNmU2YmMzZjQyOTguLjM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTEwMCw2ICsx
MDAsNyBAQCBjbGFzcyBNb2NrQ0RNRmFjdG9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDRE1G
YWN0b3J5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPAogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1
YmxpYyBDRE1Qcml2YXRlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9ja0NETT4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1vY2tDRE0oV2Vha1B0cjxNb2Nr
Q0RNRmFjdG9yeT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCmluZGV4IDUxMTgxZGFlNzJlMTNlMmJiZDE1M2U4MTFjMTQzNjRkMWNkOGExODcuLjc3
OGE5MThhNmI5MDc1NWNiODZkM2FhYTc0Zjc5YjNlNjE4ZDRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wg
TW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0NvbnRl
bnRGaWx0ZXI+IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PE1vY2tDb250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dh
bWVwYWRQcm92aWRlci5jcHAKaW5kZXggZDNhYzVkODdkMTllMmE4NTM2MWMxMTU3MmNmMzExZjBj
ODNiMjQ1Yi4uZDQwZGVkMWRhMTE5OGNhYTM0NTlkNjc3ZTFmZTg0ZjViZmI5NDZlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIHZvaWQgTW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxz
KHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGdhCiAgICAgaWYgKG1fbW9ja0dhbWVwYWRW
ZWN0b3JbaW5kZXhdKQogICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XS0+dXBkYXRl
RGV0YWlscyhnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tH
YW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKKyAgICAg
ICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBtYWtlVW5pcXVlPE1vY2tHYW1lcGFkPihp
bmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKIH0KIAogYm9vbCBNb2Nr
R2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQgaW5kZXgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAppbmRleCBkYmU5
MDczZDZhZGViZmM1MDE1OWNjMmVkYmIyMjgzY2NkMTdiYTg1Li44ZjE2NDdjMWYzMjI1MTgxNmM3
Y2YwODk2MTgyYWUzNDIzNWM1MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBXb3JrZXJDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZWwKIHsKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJz
dEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwotICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4
ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRk
Q29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCmluZGV4IGY0M2JkMmE3YTYwNTkzNzI3YWQwYTZh
OTFkZWNkNmViZWM3MjI2ODguLjY5MDNiZTVlYzI1ZmI5MWVmZjc3NzZlNDQ3NmFkNGVhMmJjZTcz
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAt
NDQsNiArNDQsNyBAQCBXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgpCiAKIGNs
YXNzIFdvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlcgogeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEV2ZW50RGlzcGF0Y2hlcihSZWZQdHI8RXZlbnQ+
JiYgZXZlbnQsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUpCiAgICAgICAgIDogbV9ldmVu
dChXVEZNb3ZlKGV2ZW50KSkKQEAgLTg0LDcgKzg1LDcgQEAgYm9vbCBXb3JrZXJFdmVudFF1ZXVl
OjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBhdXRvKiBldmVudFB0ciA9IGV2ZW50LnB0cigpOwotICAgIGF1dG8gZXZlbnREaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUoZXZlbnQp
LCAqdGhpcyk7CisgICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPEV2ZW50RGlz
cGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsKICAgICBtX2V2ZW50RGlzcGF0Y2hlck1h
cC5hZGQoZXZlbnRQdHIsIGV2ZW50RGlzcGF0Y2hlci5nZXQoKSk7CiAgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LnBvc3RUYXNrKFtldmVudERpc3BhdGNoZXIgPSBXVEZNb3ZlKGV2ZW50RGlz
cGF0Y2hlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBldmVudERpc3Bh
dGNoZXItPmRpc3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1
ZS5oCmluZGV4IDYxMTVlZjRhMTM2NTJhNmVhZDEwYWYzN2NmYjQ5NDI4MjBjM2NiMmIuLmQ4OTcz
ZDViY2FlMTdiOTU1MDA0NGM3ZTgwMTYwNWI5OWQ1NDlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFdvcmtlckV2ZW50
UXVldWUgZmluYWwgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+V29ya2VyRXZlbnRRdWV1ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3YmE2ZWRiNTIw
OGYyMmMzZjhmMTZkZTI5ZDgyNWI3NzFmNmMzZTllLi5iMTdkNjYzNjNhYzM1ODBlN2EzNDQwMDgx
YTJmN2M2M2EwNzM4NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcApAQCAtNjIsOSArNjIsOSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAg
ICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQp
CiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVl
PFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQot
ICAgICwgbV9taWNyb3Rhc2tRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPE1pY3JvdGFza1F1ZXVlPiht
X3NjcmlwdC0+dm0oKSkpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlclNjcmlwdENv
bnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9taWNyb3Rhc2tRdWV1
ZShtYWtlVW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCiAgICAgLCBtX2lz
T25saW5lKGlzT25saW5lKQogICAgICwgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3koc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KQog
ICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQpAQCAtODYsNyArODYsNyBAQCBXb3JrZXJHbG9iYWxT
Y29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiBvcmlnaQogICAgICAgICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJM
c1F1aXJrKCk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBv
bGljeTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBv
bGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwg
fSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250
ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtlckds
b2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQpAQCAtMzYyLDkgKzM2Miw5IEBAIHZvaWQg
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdl
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1l
c3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25O
dWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZl
bCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRp
Zmllcik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBt
ZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCBy
ZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3Nh
Z2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVl
c3RJZGVudGlmaWVyKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VU
b0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGE3NWMwMTU2YzU5ZTM4
ZGQ5OTlkNmNlYzFkZGVlZGUyM2JlMTg3YjMuLjRlOWY1MTlhZWZlZGQyNWY4ODNmNjNhY2EwYTQ3
ODlmZjAyN2U0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlUHJveHkmIFdv
cmtlckdsb2JhbFNjb3BlUHJveHk6OmNyZWF0ZShXb3JrZXImIHdvcmtlcikKIAogV29ya2VyTWVz
c2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciYgd29ya2VyT2JqZWN0KQog
ICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpCi0gICAgLCBtX2luc3BlY3RvclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8V29y
a2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQorICAgICwgbV9p
bnNwZWN0b3JQcm94eShtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmpl
Y3QuaWRlbnRpZmllcigpKSkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7
CiAgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYg
aXNNYWluVGhyZWFkKCkpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnQKICAgICAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwogICAgICAgICBtX3dvcmtl
clRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogICAgIH0gZWxzZQot
ICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX3F1ZXVl
ZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4oV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggYmNkOTRlNmFjMDQwM2FjZDZh
NTRiYWM0MWZhYjQxZTViZjU1MjdkYS4uYmZhYzk1OTJkZmFhNzkyMTAwNjViMzQ1OWJkMjIxNjE5
NTc4NDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC04
Niw3ICs4Niw3IEBAIGNsYXNzIE1vZGVQcmVkaWNhdGUgewogfTsKIAogV29ya2VyUnVuTG9vcDo6
V29ya2VyUnVuTG9vcCgpCi0gICAgOiBtX3NoYXJlZFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8V29y
a2VyU2hhcmVkVGltZXI+KCkpCisgICAgOiBtX3NoYXJlZFRpbWVyKG1ha2VVbmlxdWU8V29ya2Vy
U2hhcmVkVGltZXI+KCkpCiB7CiB9CiAKQEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQgV29ya2Vy
UnVuTG9vcDo6cG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAK
IHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmIHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2ls
bChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsK
KyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92
ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3Ry
aW5nJiBtb2RlKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQo
bWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2Vy
UnVuTG9vcDo6cG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYg
dGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApp
bmRleCAxOTkxMmYwMjc1ZmVhMTk0ODA1NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1Li4yMjhmM2QxN2Zm
MDAyMmU2MmU2MzY0NTMyZDU1NmI5NTA3YTAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRFeGVjdXQKIAogICAgIEFTU0VSVChzY3JpcHRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9
PSAiR0VUIik7CiAKLSAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNl
UmVxdWVzdD4oV1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFr
ZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOwogICAgIGlm
ICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3Qg
VVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKIAogc3RkOjp1bmlx
dWVfcHRyPFJlc291cmNlUmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJj
ZVJlcXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQogewotICAgIGF1dG8g
cmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7CisgICAg
YXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKICAgICBy
ZXF1ZXN0LT5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgIHJlcXVlc3QtPnNldEluaXRpYXRv
cklkZW50aWZpZXIoaW5pdGlhdG9ySWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggMWY3NTYxODZhMjBmMDE2
OWU0Nzg0Mzk1MWJlZTM2ODdlMDAyNGZiYS4uM2MzODU4YmRhOWI0NGI1N2ZhZGIzOWVmYTJlMGEw
ZjNhMzA0MTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAt
MTE0LDcgKzExNCw3IEBAIFdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAgLCBtX3dvcmtlckRl
YnVnZ2VyUHJveHkod29ya2VyRGVidWdnZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5n
UHJveHkod29ya2VyUmVwb3J0aW5nUHJveHkpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1l
RmxhZ3MpCi0gICAgLCBtX3N0YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFk
U3RhcnR1cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09u
bGluZSwgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9w
T3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQorICAgICwgbV9zdGFydHVwRGF0YShtYWtl
VW5pcXVlPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZp
ZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3ksIHRvcE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAsIG1faWRiQ29ubmVjdGlvblByb3h5KGNvbm5l
Y3Rpb25Qcm94eSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGIyZDI2MTVhMTI2M2Qx
NjI2NjE4MjAwNDY0OGY5MGVkYTY5MjA2YjUuLjU5YzcxYzRkMTQ3NjI3Y2ZkOWQzMWE0NWVhYmNj
Y2RhZTEwM2U3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXJlZkV2ZW50VGFyZ2V0KCkKIGF1dG8gU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6cmVhZHkoKSAtPiBSZWFkeVByb21pc2UmCiB7CiAgICAgaWYgKCFtX3Jl
YWR5UHJvbWlzZSkgewotICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVhZHlQcm9taXNlPigpOworICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWU8UmVh
ZHlQcm9taXNlPigpOwogCiAgICAgICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4g
Km1fcmVhZHlQcm9taXNlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkws
IGNvCiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOwog
ICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBzY2hlZHVs
ZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxT
ZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRh
KSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlv
bihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBA
IC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdp
c3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENPTlRBSU5F
Ul9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVnaXN0ZXJp
bmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIo
KS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtl
X3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpv
Yj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBz
Y29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25z
dCBVUkwmCiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVn
aXN0cmF0aW9uOiBVcGRhdGluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpv
YkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hl
ZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3Zl
KHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1
ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JE
YXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKHN0
ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYikKQEAgLTI2OSw3ICsyNjksNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJp
bmcmIGNsaWVudFVSTCwgUmVmPERlZmVycgogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQ
cm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAg
IGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihX
VEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBw
ZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlz
ZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5h
ZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAK
ICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsK
QEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lz
dHJhdGlvbnMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIHVp
bnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJ
ZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+
KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3Bl
bmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRp
bmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4
dElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdhYzljOTgzODNiMDRiNmViODljOTlm
MjIwODg1ZTc2NzM5NzZjM2YuLjNiZDZiOWIwNmU1NzM3NjY1YjU4Zjk2OWUyOTNkMGZlZDYyYzNj
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVi
bGljIEFjCiAjZW5kaWYKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7CisgICAgICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1Byb21pc2UoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VX
b3JrZXJDb250YWluZXI+PiYmIHBlbmRpbmdBY3Rpdml0eSkKICAgICAgICAgICAgIDogcHJvbWlz
ZShXVEZNb3ZlKHByb21pc2UpKQogICAgICAgICAgICAgLCBwZW5kaW5nQWN0aXZpdHkoV1RGTW92
ZShwZW5kaW5nQWN0aXZpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGJjOGY5MWVl
NDM0NjJhNTA0OWU4OGMxY2VmNWVmYTc2MmM5OGZmLi5jYjVjMjIxZmM5NDg4ZDdjMDA3Mjk4M2Ex
NTc4OTVkY2E4YzZjZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3
IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uCiAKICAgICBzZXJ2aWNlV29ya2VyLT5zZXRBc1Rl
cm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CiAKLSAgICBtX3BlbmRpbmdTZXJ2aWNlV29ya2VyVGVy
bWluYXRpb25SZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNl
V29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91dCkpOwor
ICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVudGlm
aWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBp
ZGVudGlmaWVyLCB0aW1lb3V0KSk7CiAKICAgICBhdXRvJiB0aHJlYWQgPSBzZXJ2aWNlV29ya2Vy
LT50aHJlYWQoKTsKICAgICB0aHJlYWQuc3RvcChbdGhpcywgaWRlbnRpZmllciwgc2VydmljZVdv
cmtlciA9IFdURk1vdmUoc2VydmljZVdvcmtlciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmNwcAppbmRleCBjNjE3MzYxM2NhY2I1NWQ2OTA1OGJlMmM3ZTJhNWZiZDg1Mjlj
Nzc2Li45ZTcyOGMzYTdhZmE0NmM5NDljZGNiZTBkNmZlYjA0YTk1MzFjY2Y5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJh
dGlvbiYmIHBhZ2VDb25maQogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkuYWRk
KHRoaXMpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9yZW1vdGVEZWJ1
Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMs
IGRhdGEpOworICAgIG1fcmVtb3RlRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtl
ckRlYnVnZ2FibGU+KCp0aGlzLCBkYXRhKTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPnNldFJl
bW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5pbml0
KCk7CiAjZW5kaWYKQEAgLTE2OCw3ICsxNjgsNyBAQCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlv
bj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aQog
CiBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
Y3JlYXRlQmxvYkxvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBVUkwmIGJs
b2JVUkwpCiB7Ci0gICAgYXV0byBsb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVy
PihjbGllbnQsIG51bGxwdHIpOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExv
YWRlcj4oY2xpZW50LCBudWxscHRyKTsKICAgICBsb2FkZXItPnN0YXJ0TG9hZGluZ0Jsb2JVUkwo
bV9kb2N1bWVudCwgYmxvYlVSTCk7CiAgICAgaWYgKCFsb2FkZXItPmlzU3RhcnRlZCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggMWM3
ODMxMmM4NTQ4MmY5ODY5YTVmYzBjNmQyY2M2YzZmZGZjMTBhMC4uZTRiODQzMTY4NGY3ZDg3ZDJi
ZmRlNmRkNDI3ZjMzOTAzMDM0YmFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAg
LTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0
YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUpCiAKICAgICBTUUxpdGVGaWxlU3lzdGVt
OjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhtX2RhdGFiYXNlRGlyZWN0b3J5KTsKIAot
ICAgIG1fZGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAg
IG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9k
YXRhYmFzZS0+b3BlbihmdWxsRmlsZW5hbWUpKSB7CiAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJG
YWlsZWQgdG8gb3BlbiByZWdpc3RyYXRpb24gZGF0YWJhc2UiOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IGZlNWNjODU5ZTY1YTZlMzJhNzhiNTI4OTc1YTEzMmU3NGJmMTc4N2UuLjkzMjZhM2Jh
YzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0ZDBlOTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcg
QEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmIGRhdGEpCiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJs
ZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGlsZSB0aGUgaW1wb3J0
IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCiAgICAgQVNTRVJUKCFtX3JlZ2lzdHJhdGlvbnMuY29u
dGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAKLSAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lz
dHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lz
dHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8gcmVnaXN0cmF0aW9u
ID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0
aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0
aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CiAgICAgcmVnaXN0cmF0aW9uLT5zZXRMYXN0
VXBkYXRlVGltZShkYXRhLnJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZSk7CiAgICAgYXV0byBy
ZWdpc3RyYXRpb25QdHIgPSByZWdpc3RyYXRpb24uZ2V0KCk7CiAgICAgYWRkUmVnaXN0cmF0aW9u
KFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgU1dTZXJ2ZXI6OlNX
U2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBTdHJpbmcmJiBy
ZWdpc3RyYXRpb24KIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5
LmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhYmFzZURpcmVjdG9yeSkpOworICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlID0gbWFr
ZVVuaXF1ZTxSZWdpc3RyYXRpb25TdG9yZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0
YWJhc2VEaXJlY3RvcnkpKTsKICAgICBlbHNlCiAgICAgICAgIHJlZ2lzdHJhdGlvblN0b3JlSW1w
b3J0Q29tcGxldGUoKTsKIApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjaGVk
dWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKICAgICAvLyBJZiBpdCBpcywg
c3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4KIAogICAgIGF1dG8mIGpvYlF1ZXVlID0gKm1f
am9iUXVldWVzLmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBbdGhpcywgJmpvYkRh
dGFdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4o
KnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgam9iUXVldWUuZW5xdWV1ZUpvYihqb2JE
YXRhKTsKQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogCiAgICAg
aWYgKGNsaWVudElkZW50aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoIWl0ZXJh
dG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyKTsKLSAgICAgICAgaXRlcmF0
b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRpbWVyPihbY2xpZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhpc10gewor
ICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IG1h
a2VVbmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0
aGlzXSB7CiAgICAgICAgICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJzVG9UZXJt
aW5hdGU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWlu
YXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNS
dW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcAppbmRleCA4YjY4YjcwZjAxZDI1Mjc4YWY1MzhhYmNlOTE0YjhjN2M2OGFiODM3Li5k
Y2FmNWE4YTcxMGY3OTQ0NjQ3ZGUzY2Q1ZTk4MDYzOTlhOGZkNTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lz
dGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAgICAgICAgICAgICByZWdp
c3RyYXRpb24tPnNldFVwZGF0ZVZpYUNhY2hlKGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0
ZVZpYUNhY2hlKTsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dT
ZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IEZvdW5kIHJlZ2lzdHJhdGlvbiAlbGx1IGZv
ciBqb2IgJXMgYnV0IGl0IG5lZWRzIHVwZGF0aW5nIiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSwgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdp
c3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iu
c2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOworICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9
IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlv
bktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVS
TCwgam9iLnNjcmlwdFVSTCk7CiAgICAgICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlvbihXVEZN
b3ZlKG5ld1JlZ2lzdHJhdGlvbikpOwogCiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iOiBObyBleGlzdGluZyBy
ZWdpc3RyYXRpb24gZm9yIGpvYiAlcywgY29uc3RydWN0aW5nIGEgbmV3IG9uZS4iLCB0aGlzLCBq
b2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRl
eCAyYjdhMmZlM2ZiYjU4ZDRjNGVlMzhmYzA0YjUzNmEzZTRlMGM3N2U3Li4zYmU3NTdlMDJhZTE5
ZDc1OTBlYzA3YjNmYTRjYmU3ZDYzY2U4MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogICAgICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNr
PiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+
PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAot
ICAgICAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGFpbnREZWZp
bml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVs
bCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsK
KyAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBtYWtlVW5pcXVlPFBhaW50RGVmaW5pdGlv
bj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CiAgICAg
ICAgIHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlv
bikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmgKaW5kZXggOTZjZjE4NTBiMGNhZTNhYWU5NjA3ZGIxMzQxNjczNThiNjcx
YzFkOS4uNjRmYzc4ZWVlNzg4MGVkOWJlZGNmYzJhNzAxMmNhNmVjM2NlMWMwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC00
OSw2ICs0OSw3IEBAIGNsYXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmts
ZXRHbG9iYWxTY29wZSB7CiAKICAgICAvLyBBbGwgcGFpbnQgZGVmaW5pdGlvbnMgbXVzdCBiZSBk
ZXN0cm95ZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRo
ZXkgd2lsbCBwb2ludCB0byBmcmVlZCBtZW1vcnkuCiAgICAgc3RydWN0IFBhaW50RGVmaW5pdGlv
biA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWludERlZmluaXRpb24+IHsKKyAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQYWludERlZmluaXRpb24oY29u
c3QgQXRvbVN0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvciwgUmVm
PENTU1BhaW50Q2FsbGJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRQcm9wZXJ0aWVzLCBW
ZWN0b3I8U3RyaW5nPiYmIGlucHV0QXJndW1lbnRzKTsKIAogICAgICAgICBjb25zdCBBdG9tU3Ry
aW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29u
c29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNs
aWVudC5jcHAKaW5kZXggOGU4YTJhNGNhMjNlMmI5M2RhMTM0YWZiNTJkMGU5NTc2YzQwMjE1OS4u
M2YwOTI1NjNiZDUyYWM0YTRiYmVkYTQxNWMyMzdhMmQxZGZkYWRiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApAQCAtNDgsNyArNDgs
NyBAQCB2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZQogewogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsK
ICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0g
ICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQs
IFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0
eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CiAgICAg
bV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmluZGV4IDRiYjc4OGVhNjNjZDZiYmRjNTMyNTg3ZTA1MTBkNTMyNTI2MDZmZmEuLmNlZjgyZjdi
NDExZDIxOGM3MzNkNjZmYTlkYmEyZDkzMTI1YWU4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNDksNyArNDksNyBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2xldEdsb2JhbFNjb3BlKTsKIFdvcmtsZXRHbG9iYWxT
Y29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNl
Q29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAg
ICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAgICwgbV9zY3JpcHQo
c3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBt
X3NjcmlwdChtYWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKICAgICAs
IG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAsIG1fZXZl
bnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQpAQCAtNjIsNyArNjIs
NyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9j
dW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjbwogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkp
OwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNy
ZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVmKCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xp
Y3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fY29kZS51
cmwoKSB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7CiB9
CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCkBAIC0xNDAsNyAr
MTQwLDcgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXMKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQg
fHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgp
LCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKKyAgICBtX2RvY3Vt
ZW50LT5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCks
IG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDFjZWU5ZWIzNDIxY2Q5OWE1NmM4ODYwYjhlY2RkNDU5NmY4MGQyZGUuLjcx
MzM5MDBmMTcxZWVmNDE1NjczZDRlOTBkNWNmNzdjZmViYzJiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEzNiw3
ICsxMzYsNyBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1
YmNsYXNzKCkKICAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09i
amVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92
bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogCi0g
ICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVu
dD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5p
cXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGll
bnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3Jz
LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYjAyMWNjZTE1M2MzMTky
OTUwYTJiZjc3ZDgwOWEyODQ3YWIwZjBjMS4uYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYwMzgxNTI0
MjhjNzFhYTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgWE1MRXJyb3JzIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBYTUxFcnJv
cnMoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXgg
ZjAxOTNkOGM5NmUzNWM5ZmY3NWU2YTYzYTM1MGM2NTVkY2E4NjBlZi4uZjg2NjMzYThkNmRiNzA1
NDMwMTg4Mjg1NzViNTlmMjY2N2M2NmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25z
ZVVSTCgpIGNvbnN0CiBYTUxIdHRwUmVxdWVzdFVwbG9hZCYgWE1MSHR0cFJlcXVlc3Q6OnVwbG9h
ZCgpCiB7CiAgICAgaWYgKCFtX3VwbG9hZCkKLSAgICAgICAgbV91cGxvYWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CisgICAgICAgIG1fdXBsb2FkID0g
bWFrZVVuaXF1ZTxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oKnRoaXMpOwogICAgIHJldHVybiAqbV91
cGxvYWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IGFkN2Ux
M2M4YTE5NGFkNTZkNjIzNDIwMDAxN2NiYTc3ZmU4MGI3NDIuLmE5MjQ0MDllZTQ2YzUzZTczYjI3
YTQ5YTE5ZWZlOTY5NzIxNjczYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNw
cApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFy
IGMpCiAgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicgfHwgYyA9
PSAnXHQnOwogfQogCi0jZGVmaW5lIERFRklORV9GVU5DVElPTl9DUkVBVE9SKFN1ZmZpeCkgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rpb24jI1N1ZmZpeCgpIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RnVuIyNTdWZmaXg+KCk7IH0KKyNkZWZpbmUgREVGSU5F
X0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9u
PiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxGdW4jI1N1ZmZp
eD4oKTsgfQogCiBjbGFzcyBJbnRlcnZhbCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
UHJlZGljYXRlLmNwcAppbmRleCAwNDYxNWMzZDVmMDMxMzEwNjkzOGZhYTA1ZmIzOWM5OWNlMTIz
YjVjLi5jMWJiYzU0ZWI4MzAxNjkxMTljODY4MzFhNGYyYTZlN2MwMDQ1NjhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIGV2YWx1
YXRlUHJlZGljYXRlKGNvbnN0IEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCiAKICAgICAvLyBmb29b
M10gbWVhbnMgZm9vW3Bvc2l0aW9uKCk9M10KICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpCi0g
ICAgICAgIHJldHVybiBFcVRlc3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1bmN0aW9uOjpjcmVhdGUo
InBvc2l0aW9uIl9zKSwgc3RkOjptYWtlX3VuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051bWJlcigp
KSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKKyAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVxVGVz
dE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBtYWtlVW5pcXVlPE51
bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOwogCiAgICAg
cmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5
bGVTaGVldExpYnhzbHQuY3BwCmluZGV4IGVjMmM2YWUwNDU5YTA2OTI1NmE2NjJmNzJjODcyNjdm
ZWExYTQ1YmQuLjYzMDRlOTI4MTFhOTM0ZjdkZTc0YzhjOTRiMmI2OWMwMDRlYTQ5NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtMjMxLDcgKzIz
MSw3IEBAIHZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXRzKCkKIAogdm9pZCBYU0xT
dHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldChjb25zdCBTdHJpbmcmIGhyZWYpCiB7Ci0gICAgYXV0
byBjaGlsZFJ1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYp
OworICAgIGF1dG8gY2hpbGRSdWxlID0gbWFrZVVuaXF1ZTxYU0xJbXBvcnRSdWxlPih0aGlzLCBo
cmVmKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZFJ1bGUucmVsZWFzZSgpKTsKICAgICBt
X2NoaWxkcmVuLmxhc3QoKS0+bG9hZFNoZWV0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGUwMjRlZmI1NmJmNjUyYjkwYTlh
MWQ0ZjgxMzA2NDkxODMwZDhlMGYuLjcwNDg4OTJhNWFhMGVmOWE1NWZiZDI0MDhjZDE3OTE0ZDAy
YTljODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5k
KFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogdm9pZCBYTUxEb2N1bWVudFBhcnNl
cjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwg
VGV4dFBvc2l0aW9uIHBvc2l0aW9uKQogewogICAgIGlmICghbV94bWxFcnJvcnMpCi0gICAgICAg
IG1feG1sRXJyb3JzID0gc3RkOjptYWtlX3VuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVudCgpKTsK
KyAgICAgICAgbV94bWxFcnJvcnMgPSBtYWtlVW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkp
OwogICAgIG1feG1sRXJyb3JzLT5oYW5kbGVFcnJvcih0eXBlLCBtLCBwb3NpdGlvbik7CiAgICAg
aWYgKHR5cGUgIT0gWE1MRXJyb3JzOjp3YXJuaW5nKQogICAgICAgICBtX3Nhd0Vycm9yID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAppbmRleCBiOTMxMDFiOGFhYzQ4MzlhMzliYjU0YjJiODlkZTg5OGM3OWI3
NWFiLi44OGRkNjAyZGE4ODNlN2ViYWE5NGE5NmFiNmEyOWVkZGIzZDgwMjU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwCkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogcHVibGljOgog
ICAgIHZvaWQgYXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayhjb25zdCB4bWxDaGFyKiB4bWxM
b2NhbE5hbWUsIGNvbnN0IHhtbENoYXIqIHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciogeG1sVVJJ
LCBpbnQgbnVtTmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhcioqIG5hbWVzcGFjZXMsIGludCBudW1B
dHRyaWJ1dGVzLCBpbnQgbnVtRGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyKiogYXR0cmlidXRlcykK
ICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdT
dGFydEVsZW1lbnROU0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVu
aXF1ZTxQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFj
ay0+eG1sTG9jYWxOYW1lID0geG1sU3RyZHVwKHhtbExvY2FsTmFtZSk7CiAgICAgICAgIGNhbGxi
YWNrLT54bWxQcmVmaXggPSB4bWxTdHJkdXAoeG1sUHJlZml4KTsKQEAgLTEyMiwxMiArMTIyLDEy
IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFbmRFbGVtZW50
TlNDYWxsYmFjaygpCiAgICAgewotICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOworICAgICAgICBtX2NhbGxi
YWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOwog
ICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyc0NhbGxiYWNrKGNvbnN0IHhtbENoYXIq
IHMsIGludCBsZW4pCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3Vu
aXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNr
ID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNh
bGxiYWNrLT5zID0geG1sU3RybmR1cChzLCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+bGVuID0g
bGVuOwpAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAg
dm9pZCBhcHBlbmRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjayhjb25zdCB4bWxDaGFyKiB0
YXJnZXQsIGNvbnN0IHhtbENoYXIqIGRhdGEpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNr
ID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2s+
KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+dGFyZ2V0ID0geG1s
U3RyZHVwKHRhcmdldCk7CiAgICAgICAgIGNhbGxiYWNrLT5kYXRhID0geG1sU3RyZHVwKGRhdGEp
OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9p
ZCBhcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAg
ICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDREFU
QUJsb2NrQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBl
bmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxT
dHJuZHVwKHMsIGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xNTcsNyAr
MTU3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZENvbW1l
bnRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFj
ayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKKyAgICAgICAg
YXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKIAog
ICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cmR1cChzKTsKIApAQCAtMTY2LDcgKzE2Niw3IEBA
IGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRJbnRlcm5hbFN1YnNl
dENhbGxiYWNrKGNvbnN0IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVybmFsSUQs
IGNvbnN0IHhtbENoYXIqIHN5c3RlbUlEKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9
IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7CisgICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxi
YWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5uYW1lID0geG1sU3RyZHVwKG5hbWUpOwogICAg
ICAgICBjYWxsYmFjay0+ZXh0ZXJuYWxJRCA9IHhtbFN0cmR1cChleHRlcm5hbElEKTsKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5k
RXJyb3JDYWxsYmFjayhYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCB4bWxDaGFyKiBt
ZXNzYWdlLCBPcmRpbmFsTnVtYmVyIGxpbmVOdW1iZXIsIE9yZGluYWxOdW1iZXIgY29sdW1uTnVt
YmVyKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ0Vycm9yQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVl
PFBlbmRpbmdFcnJvckNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5tZXNzYWdlID0g
eG1sU3RyZHVwKG1lc3NhZ2UpOwogICAgICAgICBjYWxsYmFjay0+dHlwZSA9IHR5cGU7CkBAIC0y
MDIsNiArMjAyLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0
cnVjdCBQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjayA6IHB1YmxpYyBQZW5kaW5nQ2FsbGJh
Y2sgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHZp
cnR1YWwgflBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrKCkKICAgICAgICAgewogICAgICAg
ICAgICAgeG1sRnJlZSh4bWxMb2NhbE5hbWUpOwpAQCAtMjMzLDYgKzIzNCw3IEBAIGNsYXNzIFBl
bmRpbmdDYWxsYmFja3MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0VuZEVsZW1lbnRO
U0NhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdm9pZCBjYWxsKFhNTERvY3VtZW50UGFyc2Vy
KiBwYXJzZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHBhcnNlci0+ZW5kRWxl
bWVudE5zKCk7CkBAIC0yNDAsNiArMjQyLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAg
ICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrIDogcHVibGljIFBl
bmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjaygpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHhtbEZyZWUocyk7CkBAIC0yNTUsNiArMjU4LDcgQEAgY2xhc3MgUGVuZGlu
Z0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nUHJvY2Vz
c2luZ0luc3RydWN0aW9uQ2FsbGJhY2soKQogICAgICAgICB7CiAgICAgICAgICAgICB4bWxGcmVl
KHRhcmdldCk7CkBAIC0yNzEsNiArMjc1LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAg
ICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nQ0RBVEFCbG9ja0NhbGxiYWNrIDogcHVibGljIFBl
bmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaygpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHhtbEZyZWUocyk7CkBAIC0yODYsNiArMjkxLDcgQEAgY2xhc3MgUGVuZGlu
Z0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nQ29tbWVudENhbGxiYWNr
IDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NvbW1lbnRDYWxsYmFjaygpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHhtbEZyZWUocyk7CkBAIC0zMDAsNiArMzA2LDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nSW50ZXJu
YWxTdWJzZXRDYWxsYmFjayA6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdJbnRl
cm5hbFN1YnNldENhbGxiYWNrKCkKICAgICAgICAgewogICAgICAgICAgICAgeG1sRnJlZShuYW1l
KTsKQEAgLTMxOCw2ICszMjUsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKICAgICB9Owog
CiAgICAgc3RydWN0IFBlbmRpbmdFcnJvckNhbGxiYWNrOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNr
IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0
dWFsIH5QZW5kaW5nRXJyb3JDYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHhtbEZy
ZWUobWVzc2FnZSk7CkBAIC01NjQsNyArNTcyLDcgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6
c3VwcG9ydHNYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIFhNTERvY3VtZW50UGFy
c2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQsIEZyYW1lVmlldyogZnJh
bWVWaWV3KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwg
bV92aWV3KGZyYW1lVmlldykKLSAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCisgICAgLCBtX3BlbmRpbmdDYWxsYmFja3MobWFrZVVu
aXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50Tm9kZSgmZG9jdW1lbnQp
CiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9z
aXRpb24oKSkKIHsKQEAgLTU3Miw3ICs1ODAsNyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9j
dW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIAog
WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZy
YWdtZW50LCBFbGVtZW50KiBwYXJlbnRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNl
ckNvbnRlbnRQb2xpY3kpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQu
ZG9jdW1lbnQoKSwgcGFyc2VyQ29udGVudFBvbGljeSkKLSAgICAsIG1fcGVuZGluZ0NhbGxiYWNr
cyhzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCisgICAgLCBtX3BlbmRpbmdD
YWxsYmFja3MobWFrZVVuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50
Tm9kZSgmZnJhZ21lbnQpCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9u
OjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKICAgICAsIG1fcGFyc2luZ0ZyYWdtZW50KHRydWUpCkBA
IC0xMzI4LDcgKzEzMzYsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCgpCiAgICAg
ICAgIHhtbFRyZWVWaWV3ZXIudHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KCk7CiAgICAgfSBl
bHNlIGlmIChtX3Nhd1hTTFRyYW5zZm9ybSkgewogICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1s
RG9jUHRyRm9yU3RyaW5nKGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIG1fb3Jp
Z2luYWxTb3VyY2VGb3JUcmFuc2Zvcm0udG9TdHJpbmcoKSwgZG9jdW1lbnQoKS0+dXJsKCkuc3Ry
aW5nKCkpOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRUcmFuc2Zvcm1Tb3VyY2Uoc3RkOjptYWtl
X3VuaXF1ZTxUcmFuc2Zvcm1Tb3VyY2U+KGRvYykpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRU
cmFuc2Zvcm1Tb3VyY2UobWFrZVVuaXF1ZTxUcmFuc2Zvcm1Tb3VyY2U+KGRvYykpOwogCiAgICAg
ICAgIGRvY3VtZW50KCktPnNldFBhcnNpbmcoZmFsc2UpOyAvLyBNYWtlIHRoZSBkb2N1bWVudCB0
aGluayBpdCdzIGRvbmUsIHNvIGl0IHdpbGwgYXBwbHkgWFNMIHN0eWxlc2hlZXRzLgogICAgICAg
ICBkb2N1bWVudCgpLT5hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZTY2hlZHVsZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDA1YmM5NTNmN2YwZGRjNzg3
YjFlNjMwNDg3Njk2YzIwODU5Y2FlMGYuLmQ2OWUxNDk5MmQ1ODY3NTFjYTA0MzQyNjM2MmE2ZjQx
YzI2OTlmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5j
cHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtNjU3LDcg
KzY1Nyw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3NlcihWZWN0b3I8
Q2FwYWJpbGl0aWVzPiYmIGNhcGFiaWxpdGllc0xpc3QsCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIHNlc3Npb25Ib3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXNzaW9uSG9zdD4o
Y2FwYWJpbGl0aWVzTGlzdC50YWtlTGFzdCgpKTsKKyAgICBhdXRvIHNlc3Npb25Ib3N0ID0gbWFr
ZVVuaXF1ZTxTZXNzaW9uSG9zdD4oY2FwYWJpbGl0aWVzTGlzdC50YWtlTGFzdCgpKTsKICAgICBh
dXRvKiBzZXNzaW9uSG9zdFB0ciA9IHNlc3Npb25Ib3N0LmdldCgpOwogICAgIHNlc3Npb25Ib3N0
UHRyLT5jb25uZWN0VG9Ccm93c2VyKFt0aGlzLCBjYXBhYmlsaXRpZXNMaXN0ID0gV1RGTW92ZShj
YXBhYmlsaXRpZXNMaXN0KSwgc2Vzc2lvbkhvc3QgPSBXVEZNb3ZlKHNlc3Npb25Ib3N0KSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8U3Ry
aW5nPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJp
dmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAppbmRleCA3YTIwYjg5NDFhZmY3MmE4NTJiNzZm
NWM1NTEwNjI2NTQ3NzRhMWNjLi4xNzdhYTU0ZjIyMjk3YWMzMTYxNGQzNTNiZTlmM2E3OWQxYWFi
MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApAQCAtMTEz
LDYgKzExMyw3IEBAIGJvb2wgU2Vzc2lvbkhvc3Q6OmlzQ29ubmVjdGVkKCkgY29uc3QKIH0KIAog
c3RydWN0IENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhKFNlc3Npb25Ib3N0
KiBzZXNzaW9uSG9zdCwgR1VuaXF1ZVB0cjxjaGFyPiYmIGRidXNBZGRyZXNzLCBHQ2FuY2VsbGFi
bGUqIGNhbmNlbGxhYmxlLCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBzZXNzaW9uSG9zdChzZXNzaW9uSG9zdCkK
ICAgICAgICAgLCBkYnVzQWRkcmVzcyhXVEZNb3ZlKGRidXNBZGRyZXNzKSkKQEAgLTE3Myw3ICsx
NzQsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9w
dGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZQogICAgIH0sIHRoaXMpOwogCiAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBkYnVzQWRkcmVzcyhnX3N0cmR1cF9wcmludGYoInRjcDpob3N0PSVzLHBv
cnQ9JXUiLCAiMTI3LjAuMC4xIiwgcG9ydCkpOwotICAgIGNvbm5lY3RUb0Jyb3dzZXIoc3RkOjpt
YWtlX3VuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPih0aGlzLCBXVEZNb3ZlKGRidXNB
ZGRyZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
KTsKKyAgICBjb25uZWN0VG9Ccm93c2VyKG1ha2VVbmlxdWU8Q29ubmVjdFRvQnJvd3NlckFzeW5j
RGF0YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFibGUuZ2V0KCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQgU2Vzc2lvbkhvc3Q6OmNvbm5l
Y3RUb0Jyb3dzZXIoc3RkOjp1bmlxdWVfcHRyPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+JiYg
ZGF0YSkKQEAgLTM3MSw2ICszNzIsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRv
RnJvbnRlbmQodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRAogfQogCiBz
dHJ1Y3QgTWVzc2FnZUNvbnRleHQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICBsb25nIG1lc3NhZ2VJRDsKICAgICBTZXNzaW9uSG9zdCogaG9zdDsKIH07CkBAIC0z
ODEsNyArMzgzLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQobG9u
ZyBtZXNzYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQobV9jb25uZWN0
aW9uSUQpOwogICAgIEFTU0VSVChtX3RhcmdldC5pZCk7CiAKLSAgICBhdXRvIG1lc3NhZ2VDb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2FnZUNvbnRleHQgeyBt
ZXNzYWdlSUQsIHRoaXMgfSk7CisgICAgYXV0byBtZXNzYWdlQ29udGV4dCA9IG1ha2VVbmlxdWU8
TWVzc2FnZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlELCB0aGlzIH0pOwogICAg
IGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9kYnVzQ29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwK
ICAgICAgICAgSU5TUEVDVE9SX0RCVVNfT0JKRUNUX1BBVEgsCiAgICAgICAgIElOU1BFQ1RPUl9E
QlVTX0lOVEVSRkFDRSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKaW5kZXggYjYyZjEyZTE4MmYyMWViOGQ1MTA3
NGNiMjU0ZDdiMjEyZTBjZWQxOS4uYjQ0NWU3YTY1YTQ4ZDA3NDhiZDdlOTIwNWEzNDQwZjdmMWE5
NTZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0
cmlidXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENs
aWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IDJlMjk2YjI5ZjQzYTRmYzg4
ZTcwMDkzMjRhNWUyM2IwYmU5Y2Q1MWMuLjkzMDNkMmFkYzE1ZWY2ZmIzMTBiNmZiMTZkMDcwY2M4
NTNmZGMzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2soKQog
ICAgIGlmIChyZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2ZpbGVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4ocmVzb3VyY2VM
b2dQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9m
aWxlTW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwgbV93
b3JrUXVldWUuY29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
IChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1v
bml0b3I+KHN0b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBtX2ZpbGVNb25pdG9yID0gbWFrZVVu
aXF1ZTxGaWxlTW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3Ro
aXNdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlOjpSZW1vdmFsKSB7CiAgICAgICAgICAgICAvLyBEaXJlY3Rvcnkgd2FzIHJl
bW92ZWQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmgKaW5kZXggNGMwMzNlMzUzZDRmMzA4ZjdmNzYwMDEyY2E5NjI5NjMwM2Mx
MDczMC4uNzFmMzRiZmEzZDZjMmI1Mjc2MTY4OTQ0ZWUzMzRjNzNkYWY1MDMyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
aApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU7CiAKIC8vIENhbiBvbmx5IGJlIGNvbnN0cnVjdGVkIC8gZGVzdHJveWVkIC8gdXNlZCBmcm9t
IHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWMgcXVldWUuCiBj
bGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZSYsIFdvcmtRdWV1ZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogICAg
IH5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBhZGVjMTRjZjljY2Q5NjRjMjkwMWNl
MmQ4NGVhMzU2ZGY2ZGIwZmYyLi41ZGM3ZDk5NDc4YjM0Y2EzMmI3NzIwZjA5NzQ1ZDAyMWE2ZWM0
MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC03Nyw2
ICs3Nyw3IEBAIGVudW0gY2xhc3MgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgOiBib29sIHsgTG9uZywg
U2hvcnQgfTsKIAogLy8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJv
eWVkIG9uIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1
ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9t
YWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRhODg2NmI2MWM4YjA1NzJjZGQ1MDhl
YjY5YTlkOGE5ODllNzVkMjEuLjhiNGE4ODIzOTc0ZDZjZjE1NTY5ZGNmOWZmZTk5MWMxZTFjMGZi
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CkBAIC0xNTksMTUgKzE1OSwxNSBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYgbgogICAgIAogICAg
IHBvc3RUYXNrKFt0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdF0gewogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5pc0lUUERhdGFiYXNlRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3Rp
Y3NTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3Rp
Y3NTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+
KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAKLSAgICAgICAgICAgIGF1dG8gbWVtb3J5U3Rv
cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4o
KnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAg
ICAgICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNz
UXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgYXV0
byBtZW1vcnlTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwor
ICAgICAgICAgICAgYXV0byBwZXJzaXN0ZW50U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBtX3N0YXRpc3RpY3NR
dWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAKICAgICAgICAgICAgIGRv
d25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqbV9zdGF0aXN0aWNz
U3RvcmUuZ2V0KCkpLnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKCptZW1vcnlTdG9yZSk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0
aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAgICAgICAgICAgbV9wZXJzaXN0
ZW50U3RvcmFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+
KCptX3N0YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gbWFrZVVu
aXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3Rp
Y3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CisgICAgICAgICAgICBtX3BlcnNpc3Rl
bnRTdG9yYWdlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U+KGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3Rh
dGlzdGljc1N0b3JlKSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUUoMTkzMjk3KTogVGhpcyBz
aG91bGQgYmUgcmV2aXNlZCBhZnRlciB0aGUgVUlQcm9jZXNzIHZlcnNpb24gZ29lcyBhd2F5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmgKaW5kZXggNjA1YWVmM2U2ZWU5NTBmMzk0ODNmY2Q4Y2M0ZDhlNjU4ZTAyY2Yw
Yy4uYmJlMzk4NDc1MmJlMTQ2MDUwZDUwMzU3MTM3MTU1MGZiMmNiNjNhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1By
b2Nlc3M7CiAKIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvb2tpZU1hbmFnZXIp
OwogcHVibGljOgogICAgIFdlYkNvb2tpZU1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZGM3OWVl
YmNmMThkYmY2N2I0NjRjMzU4NjEwZmIzY2U3Y2ZlOTBjYy4uMGUzOGU5NDMwZDJjYzlhMTQxYTk3
MjcwMzVkZDNkZmEwMjVmNGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7
CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQs
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoTmV0
d29ya1Byb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDJjNGQyZmY5NDgwOWM0MmE2MTE2
NzNiNWZiNWNhZGJmYTU5MTYwNGUuLmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0ZjM5ZmI1ZWZjZDc1
ZTcxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDdXN0b21Q
cm90b2NvbFJlcXVlc3RDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVlc3RHZW5l
cmljQ2xpZW50CiAgICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3Rv
Y29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2woc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2sp
LCByZXF1ZXN0KSk7CisgICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3Rv
Y29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1
ZXN0KSk7CiAgICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+c3RhcnRMb2FkaW5nKGN1c3Rv
bVByb3RvY29sSUQsIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVlc3QocmVxdWVzdCkp
OwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA4MGZlMWEyZGRjM2UxM2EwMjBi
MjU2NGE2MmRjNTUzZjBiNWQ0NGQwLi5iNGQyZGFjNWQwZGI1NzNiYzc1ZWVjZWVmOGZiMDYwZTgz
ZDYxNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBEb3du
bG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3du
bG9hZElEIGRvd25sb2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBj
bGllbnQoKS5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7
CiAgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxv
YWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25s
b2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5i
bG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5h
ZGQoZG93bmxvYWRJRCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRv
d25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnko
KS5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFu
YWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElELCBz
dGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBAIC05Miw3ICs5Miw3IEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24o
TmV0d29ya0RhdGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydE5ldHdv
cmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVCghbV9w
ZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX3BlbmRpbmdEb3du
bG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPiht
X2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKG5l
dHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25sb2FkSUQsIHJlcXVl
c3QsIHJlc3BvbnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBt
YWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiB2b2lkIERv
d25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihE
b3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkK
QEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogI2lmICFQTEFURk9S
TShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKLSAgICBhdXRvIGRvd25sb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIs
IHNlc3Npb25JRCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KCp0
aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwogCiAgICAgZG93bmxvYWQtPnJl
c3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsK
ICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNw
cAppbmRleCBhODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3YmJjNDMzZTY1Li5hZTNjYTdl
MGU0ZWU3ZWM4NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6OkFkZFJlc3VsdCBEb3dubG9h
ZE1hcDo6YWRkKERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBhdXRvIHJlc3VsdCA9IG1fZG93
bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgaWYgKG1fZG93
bmxvYWRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9hZEFzc2VydGlv
bik7Ci0gICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3Rh
dGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkQXNzZXJ0aW9uID0g
bWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldlYktpdCBkb3dubG9hZHMi
X3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKICAgICAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRp
b24gaW4gTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCmluZGV4
IGEyNzgyOGQ3YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5NmQuLjU5MTIzZjJjNDhmMWMx
ZTQxNzliYjFkNWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcApAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6OkNvbm5lY3Rpb24qIHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBE
b3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgV2Vi
Q29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZE5hbWUpCi0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xv
YWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNz
aW9uKSkKKyAgICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMs
IGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQogICAg
ICwgbV9wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbikKIHsK
ICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gcGFyYW1ldGVycy5jbGll
bnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVu
dEZvckNyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5YjFiOWI4
NjA0MzhkOWI2YTNmMTI2ODkxNDYyYjMzNmJjNTlmYzRkLi44MmExZTgzYmU5NWMzMDdmN2UwYTdl
MDcwNDE5YTk5NjU3ZDM0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODc5
LDcgKzg3OSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0
ZXJTV0Nvbm5lY3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQ
cm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBhdXRvIGNvbm5lY3Rp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJv
Y2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CisgICAgYXV0byBj
b25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1By
b2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOwogICAgIAogICAg
IFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
PSBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIC0g
JXMiLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4IDQ0NDIwZmY1ZmYyMjk5YmUz
NzU0Y2UzN2NkZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIxYWYwYmFkZTBjMDI3NWJlMmYw
OTVhMTY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBA
IHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZChVc2VyQ29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5h
Z2VyOjphZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAgICBhdXRvJiBiYWNrZW5kID0g
Km1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CiAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRvJiYgY29udGVudFJ1bGVMaXN0
IDogY29udGVudFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2Y2ExZjA5NWUxMDNjNTQyYWQ0
ZTQzMDAwYmNiNzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIyMTA0ZGYwOTQ2OTJjYzNmNjU1
MjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIjsKIAogTmV0
d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbiwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3JrRGF0YVRhc2tDbGll
bnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDb250ZW50U25pZmZp
bmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykKICAgICA6IE5ldHdvcmtE
YXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpEb05vdFVzZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJlYW0oc3RkOjptYWtlX3VuaXF1
ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3RyZWFtKG1ha2VVbmlxdWU8QXN5
bmNGaWxlU3RyZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGZpbGVSZWZlcmVu
Y2VzKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkpCiB7
CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgp
CiAgICAgfQogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+
ZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8
RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1f
c2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIGF1dG8gZG93
bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rv
d25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFt
ZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwogICAgIGRvd25s
b2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdEb3dubG9hZElE
LCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0
aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAppbmRl
eCBmNjU0Mjk1OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMxMTZjLi4xOTMyNmYyZjQ3ZGM5
ZjRmNjIyOGE0YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcApAQCAt
NjcsNyArNjcsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
bV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+KCk7
CisgICAgICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
PigpOwogICAgICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9kYXRhYmFzZS0+b3BlbihwYXRo
LCBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJlYWRPbmx5KTsKICAgICAgICAg
aWYgKCFpc0RhdGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODAsNyArODAs
NyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIoKQogICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1ZSwgdGhlIHNl
cXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVyZW50IHRocmVh
ZHMuCiAgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKIAotICAg
ICAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsKKyAgICAgICAgbV9z
dGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4oKm1fZGF0YWJh
c2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAgIGludCBpc1N0YXRlbWVudFBy
ZXBhcmVkID0gKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FMSVRFX09LKTsKICAgICAgICAg
QVNTRVJUKGlzU3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBpZiAoIWlzU3RhdGVtZW50UHJl
cGFyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKaW5kZXggZGNkNDZhNjAxYmU2MzA5ODZmYzJhZTBjMWM5
NjU1OGM5NTkyMjA4YS4uNTFkMjAzMTRlYWE0OWU5NmE0MWE1N2NlOGQ0MjIyNmJiZmIwNzIzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyKCk7CiAgICAgfk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDkxMDdmZWMx
ZTM0ZGI0NDg4MTYyMjg2ODYyMmM4ZmJlYjViMzg4M2MuLmVlODBhYzZlYTFhNzc5NzczYTA3MTBl
MTc4ODcwNjM3NjdjNTEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGUK
ICAgICB9CiAKICAgICBpZiAobV9sb2FkVGhyb3R0bGVMYXRlbmN5ID4gMF9zKSB7Ci0gICAgICAg
IG1fdGhyb3R0bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocm90dGxlPigqdGhpcywgbV9sb2FkVGhy
b3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgICAgICBtX3Rocm90dGxlID0gbWFrZVVuaXF1ZTxUaHJvdHRsZT4oKnRoaXMsIG1f
bG9hZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IDQwOTcxNGQ2
NjcyNmE4NDc0YWZmMjlhMTYwODE3ZjI0Nzk2N2IwMTYuLmUxYWUwMGJkOWQ5NTQ3Nzc4MTc0Mzk4
NWRmMDczYThiMWNkMjUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIE5ldHdv
cmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdAogICAgICAgICBtX2ZyYW1lSUQsCiAgICAgICAgIG1fc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5n
ZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdU
Rk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJy
b3IpIG11dGFibGUgeworICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBtYWtlVW5pcXVlPE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0
aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxl
ciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUg
ewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja0NPUlNSZXF1ZXN0V2l0aFBy
ZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0IHByZWZs
aWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwgZXJyb3IuaXNOdWxs
KCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewpAQCAt
NDQ2LDcgKzQ0Niw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2Vy
Ojpjb250ZW50U2VjdXJpdHlQb2xpY3koKQogewogICAgIGlmICghbV9jb250ZW50U2VjdXJpdHlQ
b2xpY3kgJiYgbV9jc3BSZXNwb25zZUhlYWRlcnMpIHsKICAgICAgICAgLy8gRklYTUU6IFBhc3Mg
dGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGluc3RlYWQgb2YgaXRzIG9yaWdpbi4K
LSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7
CisgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygpIH0pOwogICAg
ICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2ZUhlYWRlcnMoKm1fY3NwUmVz
cG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0KICAgICByZXR1cm4gbV9jb250ZW50
U2VjdXJpdHlQb2xpY3kuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDljYjRhOTI1MjIwOTA1YjRjMjFhNGY3NmFlNzc2YWUx
NDUwMjVmODcuLmJiYTdiYmUwMmI5ZTZiOTBjNGY5M2FmNTg4ZjI1MzNhYTU1Njk5ZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01
MDMsOSArNTAzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdl
U2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0
KCkpKTsKICAgICB9CiAKLSAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVT
dG9yYWdlKSk7CisgICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwog
I2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBtX2RlZmF1bHROZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAjZW5kaWYKIH0KIApA
QCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24oY29u
c3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICBj
b29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9y
YWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQog
Ci0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZN
b3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdl
U2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVT
RShTT1VQKQotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7
CiAjZW5kaWYKIH0KIApAQCAtMjQyOCw3ICsyNDI4LDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9j
ZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAg
ICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6OlNlc3Npb25JRCBj
b21lIGZyb20/CiAgICAgICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSB8fCAhcGF0
aC5pc0VtcHR5KCkpOwogICAgICAgICAKLSAgICAgICAgYXV0byB2YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92
ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IG1ha2VVbmlxdWU8U1dT
ZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwg
c2Vzc2lvbklEKTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzVGVybWluYXRpb25EZWxheSkKICAgICAgICAgICAgIHZhbHVlLT5kaXNhYmxlU2VydmljZVdv
cmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKQEAg
LTI1NDAsNiArMjU0MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3Bh
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPCiB9CiAKIGNsYXNzIFF1
b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VRdW90YVVz
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFF1b3RhVXNlckluaXRpYWxpemVyKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIpCiAgICAg
ICAgIDogbV9tYW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQpAQCAtMjU3NCw3ICsyNTc1LDcg
QEAgY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3Rv
cmFnZVF1b3RhVXNlciB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVz
ZXJzKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQsIG9y
aWdpbiwgdXNlciA9IHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6ZXI+KG1hbmFn
ZXIpXSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVzZXIgPSBtYWtl
VW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy0+aWRi
U2VydmVyKHNlc3Npb25JRCkuaW5pdGlhbGl6ZVF1b3RhVXNlcihvcmlnaW4pOwpAQCAtMjU4OCw3
ICsyNTg5LDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VR
dW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAgcmV0dXJuIFN0b3Jh
Z2VRdW90YU1hbmFnZXJzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJu
ICpzdG9yYWdlUXVvdGFNYW5hZ2Vycy5tYW5hZ2Vyc1Blck9yaWdpbigpLmVuc3VyZShvcmlnaW4s
IFt0aGlzLCAmc3RvcmFnZVF1b3RhTWFuYWdlcnMsIHNlc3Npb25JRCwgJm9yaWdpbl0gewotICAg
ICAgICBhdXRvIG1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+
KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBbdGhpcywgc2Vzc2lv
bklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2
NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAgYXV0byBtYW5hZ2Vy
ID0gbWFrZVVuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVvdGFNYW5hZ2Vycy5k
ZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3JpZ2luXSh1aW50NjRfdCBx
dW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRv
IGNhbGxiYWNrKSB7CiAgICAgICAgICAgICB0aGlzLT5yZXF1ZXN0U3RvcmFnZVNwYWNlKHNlc3Np
b25JRCwgb3JpZ2luLCBxdW90YSwgY3VycmVudFNwYWNlLCBzcGFjZUluY3JlYXNlLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiAgICAgICAgIH0pOwogICAgICAgICBpbml0aWFsaXplUXVvdGFVc2Vycygq
bWFuYWdlciwgc2Vzc2lvbklELCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGZiN2E2Y2QzNmVhOWYzNTk0YTdmYjlkZTg1NTM1
MzIzZmE4MjE3MDguLmM2ZTE2OGRkNDdmNjNmNDIyNmJmNjVkZjRmMzQ0YzQ5ZWRhMGUzNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE1
Myw3ICsxNTMsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBBdXhpbGlhcnlQcm9j
ZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBs
ZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlz
KSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VV
bmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZU5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggY2UwNmUzNjEzYWMyMGVmOGIzMzE0YzdlYjI2ZTJjNGFiYWZiNGU4OC4uZmY5OTJi
ZmYxYmNmZWZhNTA0MjhjNGZhMWEwYTlmMzY2M2NkYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTEx
LDcgKzExMSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVy
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAKICAgICBpZiAoc3luY2hyb25v
dXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzIHx8
IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUpIHsKICAgICAgICAgTmV0d29ya0xvYWRDaGVj
a2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBpc01haW5GcmFtZUxvYWQoKSA/IE5ldHdv
cmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok1haW5GcmFtZSA6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6
TG9hZFR5cGU6Ok90aGVyOwotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCks
IEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNz
aW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBI
VFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJM
IHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdp
bi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVz
dCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBz
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsK
KyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hl
Y2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFt
ZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRlck1hcCB7IG1fcGFyYW1l
dGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0
LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRl
cnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9w
YXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAgIGlmIChtX3BhcmFtZXRl
cnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIt
PnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7CiAjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTExOSw3ICsxMTksNyBAQCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmIHBhcgogI2VuZGlmCiAgICAgfQogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5KQotICAg
ICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3Vz
TG9hZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOworICAgICAgICBtX3N5bmNocm9u
b3VzTG9hZERhdGEgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3lu
Y2hyb25vdXNSZXBseSkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5OZXR3b3JrUmVz
b3VyY2VMb2FkZXIoKQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9h
CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAg
ICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZt
X2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29y
a1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigq
dGhpcywgJm1fY29ubmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyks
ICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5l
dHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRm
OCgpLmRhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKaW5kZXggYzJiZjQzZDI0ZTA5MWZmNzZkOWRiOGI3MGExNmFlM2ZhMTdiMmQ1MC4u
YTA0YWE5MzQ4ZjI0NzNiZjliNjcyNWIwYTM2NDg4YTdmYmMzMmZkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNjQsNiArNjQsNyBAQCBj
bGFzcyBDYWNoZTsKIH0KIAogY2xhc3MgTmV0d29ya1Nlc3Npb24gOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8TmV0d29ya1Nlc3Npb24+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUo
TmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAg
ICB2aXJ0dWFsIH5OZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRleCAwNGUzZDAyNTIyMGRl
NGM0M2M3MzYyZGExNDFkZjMyYmEyMDMwZmFmLi41OTE4ODU3NTdhODQ3NTFjODMxOGY3YmU1ZDI3
NWE3ZjExYzVhNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBOZXR3
b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBj
b25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3QgaWRlbnRpZmllcikK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1NvY2tldENoYW5u
ZWw+KGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7CisgICAgYXV0byBy
ZXN1bHQgPSBtYWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25u
ZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVz
dCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0LT5tX3NvY2tldCkgewog
ICAgICAgICByZXN1bHQtPmRpZENsb3NlKDAsICJDYW5ub3QgY3JlYXRlIGEgd2ViIHNvY2tldCB0
YXNrIl9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggNjcyYjM3ODFhNGQ0
YTM0YjljMWUxZTI0MTViZDQ5MTBlNzc5ZWQ3MS4uOWRmOWFhY2RjYjMzMmUwNDFkYjY5YmQwNjgx
MDIyOWNmOGJiNGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldENoYW5uZWwuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBOZXR3b3JrUHJv
Y2VzczsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5l
bCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmlu
ZGV4IGQ5MGNjY2E5ODBhOGVmZmMyZDRmMzhmNWUzZjZiYzBhYTJjMmU1NDYuLjJjNjQyN2U2NDgy
MmNlZjVkMWE4MTIwMjVlZmQ2Yzg1NDU0MWNlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC01Myw3ICs1Myw3IEBAIFByZWNvbm5l
Y3RUYXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5l
dHdvcmtMb2FkUGFyYW1lCiAgICAgfQogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMuc2hvdWxkUHJl
Y29ubmVjdE9ubHkgPT0gUHJlY29ubmVjdE9ubHk6Olllcyk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5p
cXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5l
dHdvcmtTZXNzaW9uKTsKIAogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdCg2MDAwMF9z
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IGJmNTE1NzhmYjE0N2Rk
ZGM4N2U2NmQ5MGE1ZWRkMDJhNGNkNzI2OTMuLmNjODc4NGQ0MjgzYTYyNWZjMGUxZDllZmFhNTI3
MDUyM2FjNzExODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjQ1LDcg
KzI0NSw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRh
dGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0
aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UpCi0gICAgICAgIG1fZGlzYWJsZVN1ZGRlblRl
cm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1
ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXI+KCk7CisgICAgICAgIG1fZGlzYWJsZVN1ZGRlblRlcm1p
bmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFN1ZGRlblRlcm1p
bmF0aW9uRGlzYWJsZXI+KCk7CiAKICAgICBtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUgPSB0
cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKaW5kZXggM2U5ZDE3ZDYwMmQzNDE3NzAzM2M5MzM4YjRiYmU2ZGEwYmFiYThh
NC4uYjA4M2Q1ZDMyYTUxZTYxZGE0Mzc2ZGY5NDQ2ZWYxMTE0ZWE2YmYxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAt
ODQsMTcgKzg0LDE3IEBAIENhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDCiB7CiAjaWYgRU5BQkxFKE5F
VFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNv
bnRhaW5zKENhY2hlT3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpIHsKLSAgICAgICAg
bV9sb3dQb3dlck1vZGVOb3RpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TG93UG93
ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeworICAg
ICAgICBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpMb3dQb3dl
ck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7CiAgICAg
ICAgICAgICBBU1NFUlQoV1RGOjpSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAo
aXNMb3dQb3dlck1vZGVFbmFibGVkKQogICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2Fk
TWFuYWdlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoIW1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlcik7Ci0gICAgICAgICAgICAgICAgbV9zcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX3NwZWN1bGF0
aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlz
LCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAg
aWYgKCFtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyLT5pc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSkKLSAg
ICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAg
ICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgIH0KICNlbmRpZgogCkBAIC0zNzUs
MTIgKzM3NSwxMiBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxl
dGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIAogc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNl
LCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhl
YWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwg
cmVzcG9uc2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJl
cXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0
VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
Q2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNl
LCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMo
bmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9u
c2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3Qp
LCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVl
c3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVl
c3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3Jl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hl
Ojp1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcQogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBleGlzdGluZ0VudHJ5LnJlc3Bv
bnNlKCk7CiAgICAgV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRp
b24ocmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKLSAgICBhdXRvIHVwZGF0ZUVudHJ5
ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2Us
IGV4aXN0aW5nRW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhl
YWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxS
ZXF1ZXN0LCByZXNwb25zZSkpOworICAgIGF1dG8gdXBkYXRlRW50cnkgPSBtYWtlVW5pcXVlPEVu
dHJ5PihleGlzdGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRyeS5idWZmZXIo
KSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2Vzcygp
LmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKSk7CiAg
ICAgYXV0byB1cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3Jk
KCk7CiAKICAgICBtX3N0b3JhZ2UtPnN0b3JlKHVwZGF0ZVJlY29yZCwgeyB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKaW5kZXggN2FlMWMyZmU3ZGNlNjA3YjlmOGE1M2Q5OWExYmQ3OTg1Mzk5YmNmMS4uMWY0
MTQ0YThmYWU4N2JmNWZjNWM4M2VkOTAyYjZmZjA4YTA2NGFlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFn
ZVJlY29yZCgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0
b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7Ci0gICAg
YXV0byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAg
YXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCks
IHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVu
dHJ5LT5tX3Jlc3BvbnNlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRl
eCBlN2ZjNWI4OTMyMmI5OTFjNzA5ZDA2OGJlMmRlNzc3MzgzY2I0YmMwLi4yMjAxOTQxN2E4YzUw
MWJmOTU1YmY1MzIyYzA2OWNiMDMyYTQxZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVM
b2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAg
cGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBDb250ZW50U25pZmZpbmdQb2xpY3k6
OkRvTm90U25pZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3kgPSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmY7CiAgICAgcGFy
YW1ldGVycy5yZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0gICAgbV9uZXR3b3JrTG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VV
bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAq
Y2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKSk7CiB9CiAKIFNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9h
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRl
eCAxY2Q2YjQ5MmY4MWE1YTgxZDI0Y2E3OTEwOGRhNmIxOWUwYzAwM2YxLi41N2U4ZTc1OTliMWNj
YTY1YjI2ZTA2ZWMzODcyZWUyZGQ5NDlkZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJlZkNvdW50ZWQ8UGVu
ZGluZ0ZyYW1lTAogICAgIHZvaWQgcmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHN1YnJlc291cmNlS2V5KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgbV9zdWJyZXNvdXJjZUxv
YWRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlTG9hZD4ocmVxdWVzdCwgc3Vi
cmVzb3VyY2VLZXkpKTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVuZChtYWtlVW5p
cXVlPFN1YnJlc291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VLZXkpKTsKICAgICAgICAg
bV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5LmltcHVsc2UoKTsKICAgICB9CiAKQEAgLTM1NSw3ICsz
NTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEtleSYg
c3RvcmFnZUtleSwgUmV0cmlldmVDb21wbGV0aW9uSAogICAgIEFTU0VSVChtX3BlbmRpbmdQcmVs
b2Fkcy5jb250YWlucyhzdG9yYWdlS2V5KSk7CiAgICAgLy8gRklYTUU6IFRoaXMgYnJlYWtzIGlu
Y3JlbWVudGFsIGxvYWRpbmcgd2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5vdCBzdWNjZXNzZnVs
LgogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmlldmVSZXF1ZXN0cy5lbnN1cmUo
c3RvcmFnZUtleSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKICAgICB9KTsKICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRk
UHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgY29uCiAgICAgQVNT
RVJUKGVudHJ5KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAg
YXV0byBrZXkgPSBlbnRyeS0+a2V5KCk7Ci0gICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXks
IHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBXVEZNb3Zl
KHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7CisgICAgbV9wcmVs
b2FkZWRFbnRyaWVzLmFkZChrZXksIG1ha2VVbmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUo
ZW50cnkpLCBXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlE
XSB7CiAgICAgICAgIGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRlZEVudHJpZXMudGFr
ZShrZXkpOwogICAgICAgICBBU1NFUlQocHJlbG9hZGVkRW50cnkpOwogICAgICAgICBpZiAocHJl
bG9hZGVkRW50cnktPndhc1JldmFsaWRhdGVkKCkpCkBAIC00NDksNyArNDQ5LDcgQEAgYm9vbCBT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0IEtleSYg
a2V5LCBFbnRyeSogZW50cnkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRv
JiBjb21wbGV0aW9uSGFuZGxlciA6ICpjb21wbGV0aW9uSGFuZGxlcnMpCi0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGVudHJ5ID8gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6IG51
bGxwdHIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IG1ha2VVbmlxdWU8RW50
cnk+KCplbnRyeSkgOiBudWxscHRyKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDY4LDcg
KzQ2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291
cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVzCiAKICAgICBMT0coTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVjdWxhdGl2ZWx5IHJl
dmFsaWRhdGluZyAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAg
ICBhdXRvIHJldmFsaWRhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1f
Y2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBbdGhp
cywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFsaWRhdG9yID0gbWFrZVVuaXF1
ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3Qs
IFdURk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlE
XShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKICAgICAgICAgQVNT
RVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVudHJ5LT5uZWVkc1ZhbGlkYXRp
b24oKSk7CiAgICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCByZXZhbGlkYXRlZEVu
dHJ5LT5rZXkoKSA9PSBrZXkpOwogCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZy
YW1lSUQmIGYKICAgICAgICAgICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJlc291cmNlSW5mbywg
ZnJhbWVJRCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgTm90IHByZWxvYWRpbmcgJyVz
JyBiZWNhdXNlIGl0IGlzIG1hcmtlZCBhcyB0cmFuc2llbnQiLCBrZXkuaWRlbnRpZmllcigpLnV0
ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXks
IHN0ZDo6bWFrZV91bmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwgZnJhbWVJRF0gewor
ICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1ha2VVbmlxdWU8RXhw
aXJpbmdFbnRyeT4oW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICAgICAgICAgIGxvZ1Nw
ZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKG1fY2FjaGUubmV0d29ya1Byb2Nlc3Mo
KSwgZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVJpZ2h0bHlOb3RXYXJtZWRV
cEtleSgpKTsKICAgICAgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMucmVtb3ZlKGtl
eSk7CiAgICAgICAgICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiYmZjNjQ5ODkw
Zjk1Y2M3ZTA0Y2U4MmE0ZmUzMjk0NGRjMWFiMWYwLi44MDRjNDI5OGNjM2UzYzI4MTRmZGJjMmJi
YjZjYmVlNTc1ODRhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTI5MCw4ICsyOTAsOCBA
QCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFn
ZSwgIihOZXR3b3JrUHJvY2Vzcykgc3luY2hyb25pemluZyBjYWNoZSIpOwogCiAgICAgYmFja2dy
b3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwotICAgICAgICBhdXRvIGJsb2JGaWx0ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRvIHJlY29yZEZpbHRl
ciA9IG1ha2VVbmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1dG8gYmxvYkZpbHRl
ciA9IG1ha2VVbmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CiAKICAgICAgICAgLy8gTW9zdCBvZiB0
aGUgZGlzayBzcGFjZSB1c2FnZSBpcyBpbiBibG9icyBpZiB3ZSBhcmUgdXNpbmcgdGhlbS4gQXBw
cm94aW1hdGUgcmVjb3JkcyBmaWxlIHNpemVzIHRvIGF2b2lkIGV4cGVuc2l2ZSBzdGF0KCkgY2Fs
bHMuCiAgICAgICAgIHNpemVfdCByZWNvcmRzU2l6ZSA9IDA7CkBAIC00ODksNyArNDg5LDcgQEAg
dm9pZCBTdG9yYWdlOjpyZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mIHJlYWRPcGVyYXRpb24sIGNv
bnN0IERhdGEmIHJlY29yZERhdGEpCiAgICAgfQogCiAgICAgcmVhZE9wZXJhdGlvbi5leHBlY3Rl
ZEJvZHlIYXNoID0gbWV0YURhdGEuYm9keUhhc2g7Ci0gICAgcmVhZE9wZXJhdGlvbi5yZXN1bHRS
ZWNvcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3Jk
IHsKKyAgICByZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IG1ha2VVbmlxdWU8U3RvcmFnZTo6
UmVjb3JkPihTdG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0YS5rZXksCiAgICAgICAg
IG1ldGFEYXRhLnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKQEAgLTc1OCw3ICs3NTgs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZyb21NZW1vcnkoY29uc3QgVCYg
b3BlcmF0aW9ucywgY29uc3QgS2V5JiBrZXksCiAgICAgICAgIGlmIChvcGVyYXRpb24tPnJlY29y
ZC5rZXkgPT0ga2V5KSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihO
ZXR3b3JrUHJvY2VzcykgZm91bmQgd3JpdGUgb3BlcmF0aW9uIGluIHByb2dyZXNzIik7CiAgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlY29yZCA9IG9wZXJhdGlvbi0+cmVj
b3JkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om1ha2VfdW5p
cXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTg2Miw3ICs4NjIsNyBAQCB2b2lkIFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IEtleSYga2V5LCB1
bnNpZ25lZCBwcmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZAogICAgIGlmIChyZXRyaWV2
ZUZyb21NZW1vcnkobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMsIGtleSwgY29tcGxldGlvbkhhbmRs
ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFJlYWRPcGVyYXRp
b24+KCp0aGlzLCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIHJlYWRP
cGVyYXRpb24tPnRpbWluZ3Muc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAg
cmVhZE9wZXJhdGlvbi0+dGltaW5ncy5kaXNwYXRjaENvdW50QXRTdGFydCA9IG1fcmVhZE9wZXJh
dGlvbkRpc3BhdGNoQ291bnQ7CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBTdG9yYWdlOjpzdG9y
ZShjb25zdCBSZWNvcmQmIHJlY29yZCwgTWFwcGVkQm9keUhhbmRsZXImJiBtYXBwZWRCb2R5SGFu
ZGxlciwKICAgICBpZiAoIW1fY2FwYWNpdHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
d3JpdGVPcGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhpcywg
cmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFdyaXRlT3BlcmF0
aW9uPigqdGhpcywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5wcmVwZW5k
KFdURk1vdmUod3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFkZCBrZXkgdG8gdGhlIGZpbHRl
ciBhbHJlYWR5IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRoZSBwZW5kaW5nIG9wZXJhdGlv
bnMgdG9vLgpAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3Qg
U3RyaW5nJiB0eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAg
QVNTRVJUKHRyYXZlcnNlSGFuZGxlcik7CiAgICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIEZ1
bmN0aW9uIGNvcGllcy4KIAotICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwgdHlwZSwgZmxhZ3Ms
IFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CisgICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0
ciA9IG1ha2VVbmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRoaXMpLCB0eXBlLCBm
bGFncywgV1RGTW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKICAgICBhdXRvJiB0cmF2ZXJzZU9wZXJh
dGlvbiA9ICp0cmF2ZXJzZU9wZXJhdGlvblB0cjsKICAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0
aW9ucy5hZGQoV1RGTW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IDdiODg5MjI5OTUzOWRiMzRjNWIzOTE0ZDNi
MjE0Y2U4YjgxNDNiOTguLjYzYWQwNDA5ZmRkMjM2ZjZlM2MyY2EzMGU4N2U0YTdjMGEyOTU5MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIFN0b3JhZ2U6OlJlY29yZCBTdWJyZXNvdXJjZXNFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVj
b3JkKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBTdWJyZXNv
dXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0
b3JhZ2VFbnRyeSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNv
dXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxT
dWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5
LmhlYWRlci5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fc3VicmVz
b3VyY2VzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1By
ZWZldGNoQ2FjaGUuY3BwCmluZGV4IGQ4YTA1OTQwZDcxOTdlYjMyMjVhMzZiYzUxM2EyZGI2MTBk
YjBjZDguLjcxMDRkMWY3NGNkNzAxY2JjZWNmYWI1N2QyNGViZmY4ZGFlYmVkYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNw
cApAQCAtNzMsOCArNzMsOCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0aW9uVGltZW91
dCB7IDVfcyB9Owogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RV
cmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVz
KQotICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRj
aEVudHJpZXNNYXA+KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25QcmVmZXRjaGVz
LT5hZGQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4o
V1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICBtX3Nlc3Npb25Q
cmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVybCwgbWFrZVVuaXF1
ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoYnVmZmVy
KSkpOwogICAgIC8vIExpbWl0IHByZWZldGNoZXMgZm9yIHNhbWUgdXJsIHRvIDEuCiAgICAgaWYg
KCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwpAQCAtODYsOSArODYsOSBA
QCB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGly
ZWN0KGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCkKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAgIG1fc2Vzc2lvblBy
ZWZldGNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKKyAgICAg
ICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigp
OwogICAgIHJlZGlyZWN0UmVxdWVzdC5jbGVhclB1cnBvc2UoKTsKLSAgICBtX3Nlc3Npb25QcmVm
ZXRjaGVzLT5zZXQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpF
bnRyeT4oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3Qp
KSk7CisgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmwsIG1ha2VVbmlxdWU8
UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUo
cmVkaXJlY3RSZXF1ZXN0KSkpOwogICAgIG1fc2Vzc2lvbkV4cGlyYXRpb25MaXN0LmFwcGVuZChz
dGQ6Om1ha2VfdHVwbGUocmVxdWVzdFVybCwgV2FsbFRpbWU6Om5vdygpKSk7CiAgICAgaWYgKCFt
X2V4cGlyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2V4cGlyYXRpb25UaW1lci5z
dGFydE9uZVNob3QoZXhwaXJhdGlvblRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMTcxMGJhZTllNWE4ODUy
NmNlZmEzYjM5YWE3ODhmYWFmMmNmYTBlLi5hMjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUxZDZkMjMx
YTFiZWQxMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBQcmVmZXRjaENhY2hlIHsK
ICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBzdHJ1Y3QgRW50cnkgeworICAgICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVu
dHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggMDc3ZjE2ZmE2NTA2NTJjNzg3YTZmMDMxNjA5
MDkwMjY4ZWJiOGFjMC4uY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjViYmM4ZTRhNWU5OGExNWM5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1By
b2Nlc3NDCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBOZXR3
b3JrUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdApAQCAtMjc2LDcg
KzI3Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRp
b25Ub0ZvcmVncm91bmQoKQogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXImIE5ldHdvcmtQcm9j
ZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyKQotICAgICAgICBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsKKyAgICAg
ICAgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXI+KCk7CiAgICAgcmV0dXJuICptX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMWY4ZDRjYmZjN2E1MzM4Y2YwZWY1MjRl
OWE2NzU0MzFiNDAxN2ZjOS4uMDliMjQzYTZkN2M4MTY4ZTc0NTk5NGNkZTg3Mzc0N2I2NzU1NDgz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODAwLDcgKzgwMCw3IEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKilkYXRhCiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4gcHJvdGVjdGVkTmV0
d29ya0RhdGFUYXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRvIGRvd25sb2FkSUQg
PSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CiAgICAgICAgIGF1dG8mIGRv
d25sb2FkTWFuYWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdl
cigpOwotICAgICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRv
d25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Np
b24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwor
ICAgICAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3du
bG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Npb25J
RCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgICAgICBuZXR3
b3JrRGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoKmRvd25sb2Fk
KTsKICAgICAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNr
LT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVh
dGVEZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkp
OwpAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0Q1REYXRh
Q29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1By
b2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Np
b25Db2NvYT4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFyeSAqcHJveHlEaWN0aW9uYXJ5
KGNvbnN0IFVSTCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkpCkBAIC0xMjQxLDcg
KzEyNDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25D
b2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrUwogewogICAgIC8vIEZJWE1FOiBVc2Ug
cHJvdG9jb2wuCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+IHRhc2sg
PSBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpIHdlYlNvY2tldFRhc2tXaXRo
UmVxdWVzdDogcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xp
Y3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smIHRhc2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1By
b2Nlc3NDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
UHJvY2Vzc0N1cmwuY3BwCmluZGV4IGJlNjgwMWYzMGNkZjQ5MDAyNTRjMjI0YjliMTFmYmRmNzNm
ZTJlMzEuLjViZTE3MDI2NmY0NWI4YmY3MmVmNTZiMTAwODdjYjU5YmI1NmRiYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vz
c0N1cmwuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9j
ZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRU
UFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAppbmRleCBkNDcwOWE1ZTRhYzhhMmZi
NmFjZWI1NmM1N2ViZjBiNWM3NDBkNDU2Li5lMThhNDM5MGIxODhhMjdlOTMxOGM1MjQwNDU1ZjA2
NGNmNmJkNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya1Nlc3Npb25DdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIE5ldHdvcmtT
ZXNzaW9uQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3Ms
IFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0
d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB+
TmV0d29ya1Nlc3Npb25DdXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9T
Lm1tCmluZGV4IDIzNzQ1Mjg4YTA2ZDAxMTQ1OTE5NjhiNTA4NmRlYjVmNDVhYTBhYzYuLmM4Yjg2
YzUxMTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpwYXltZW50Q29vcmRpbmF0b3IoKQogewogICAgIGlmICghbV9wYXltZW50Q29vcmRpbmF0
b3IpCi0gICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3BheW1lbnRDb29yZGlu
YXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fcGF5bWVudENvb3JkaW5hdG9yOwogfQogCkBAIC04Miw3ICs4Miw3IEBAIGNv
bnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGlu
YXRvclNvdXJjZUFwcGxpY2F0aW9uCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29y
ZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
IGNvb3JkaW5hdG9yLCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0
b3IsIHJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9u
Q29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIo
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCA4N2U4NWI1NWU5
MWVjNjk2YWMxNWIxYzVmMWExMTM1MWEzZTI2YWI3Li5jOTM2NGM1ZDA0YWIzNjMxNzAyMGIyY2Fl
MjlmMDdlYjdhOTViYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC04OTcsNyArODk3LDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAgbV9kb3dubG9hZE91dHB1
dFN0cmVhbSA9IGFkb3B0R1JlZihHX09VVFBVVF9TVFJFQU0ob3V0cHV0U3RyZWFtLmxlYWtSZWYo
KSkpOwogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9zZXNzaW9uLT5uZXR3b3JrUHJv
Y2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0
aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICBh
dXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3Bl
bmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVk
RmlsZW5hbWUoKSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9hZC5nZXQoKTsKICAg
ICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5nRG93
bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVE
ZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5k
ZXggODNjMmYyOGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFmOS4uN2E3NDgxZjdkNDI1
ZjAyMzM3YTBjMTBhZGY5ZDY1NGY3MGVjN2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTEzMyw3
ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3Jr
UHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVh
dGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExT
RXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCA3MzU1MjU3YmVkYTFlNWFkY2RlNTU0ZTZiZDMz
YmNlOWUyZjYwZDBkLi45YzhmYjhkNjkyOWQ4MTc3N2NkMTQ1MTE0ZWViZmYwZjgwMDhmNTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Np
b25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Nlc3Npb25Tb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVy
cykKLSAgICAsIG1fbmV0d29ya1Nlc3Npb24oc3RkOjptYWtlX3VuaXF1ZTxTb3VwTmV0d29ya1Nl
c3Npb24+KG1fc2Vzc2lvbklEKSkKKyAgICAsIG1fbmV0d29ya1Nlc3Npb24obWFrZVVuaXF1ZTxT
b3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKIHsKICAgICBhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIEFTU0VSVChzdG9yYWdlU2Vzc2lv
bik7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5l
dHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU28KICAgICByZXF1
ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpKTsKICAgICBpZiAocmVxdWVz
dC51cmwoKS5wcm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzb3Vw
TWVzc2FnZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKHdlYlNvY2tldE1lc3Nh
Z2VOZXR3b3JrRXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdl
LmdldCgpLCBwcm90b2NvbCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4o
Y2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggZjllZjRiYjU0MzBiYmY3
M2IwNGEwZTNiZWMyNDc5MjhkNTllNzE2Yi4uNDY2YjI3ODJiZjkzYzc3MDcwZjc5N2RkMzY1MjM0
Y2MxZGUzZmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtTZXNzaW9uU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBOZXR3b3Jr
U2Vzc2lvblNvdXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNz
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25Tb3VwKE5l
dHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAg
fk5ldHdvcmtTZXNzaW9uU291cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3Bw
CmluZGV4IDZkZGM4MWEzNmQ4NDljYmMyODM3OTNiNjE3MDY3YTI3ZTI5ZDkxZjAuLmMxOTM1MDAx
NTdhMmFmYjlkYTQ2ZTkzYWI0ZWY1NTA4NDY5NDY0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCB2b2kK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5j
UmVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVm
ZmVyLCBjb3VudCk7CisgICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkID0gbWFrZVVu
aXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIsIGNvdW50KTsKIH0KIAog
c3RhdGljIGdzc2l6ZSB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEZpbmlzaChHSW5w
dXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJy
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJX
ZWJSVENTb2NrZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ1NvY2tldENsaWVudC5oCmluZGV4IDhmMjA1Y2UwMjk3MTNkOGJhMjEzZjE0M2Jh
NzFiYjExNDc1MmRlZjUuLjIyYWJkZWM2OWRiMjQ1YTRjZjk4M2YyNDdiMzhmNzJkOTAwYTZmNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L0xpYldlYlJUQ1NvY2tldENsaWVudC5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgTmV0d29ya1JUQ1Byb3ZpZGVyOwogCiBjbGFzcyBMaWJXZWJSVENTb2NrZXRD
bGllbnQgZmluYWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFVEUCwgU2Vy
dmVyVENQLCBDbGllbnRUQ1AsIFNlcnZlckNvbm5lY3Rpb25UQ1AgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lz
dGVyLmNwcAppbmRleCBlNzg2NTY4ZmY1MDVhN2I4NzE3ODcwZGY1N2ZhNTdkMTVmNWQ3NzYzLi45
MjY2NjhjMzhmZmY3MDhhZTUwMmY1OGZkNDE1Mjg4MDNlYzU1NWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lz
dGVyLmNwcApAQCAtNjQsNiArNjQsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVn
aXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZQogfQogCiBz
dHJ1Y3QgUGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdChSZWY8SVBDOjpD
b25uZWN0aW9uPiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5n
JiYgbmFtZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICA6IGNvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAgICAgLCByZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0
SWRlbnRpZmllcikKQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6
OnJlZ2lzdGVyTUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2Vzcwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VSZWYobV9jb25uZWN0
aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBzZXNz
aW9uSUQpOworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdSZWdp
c3RyYXRpb25SZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1
ZXN0SWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKICAgICBhdXRvKiByZWNv
cmQgPSAmcGVuZGluZ1JlcXVlc3QtPnJlY29yZDsKICAgICBhdXRvIGVycm9yID0gRE5TU2Vydmlj
ZVJlZ2lzdGVyUmVjb3JkKHNlcnZpY2UsCiAgICAgICAgIHJlY29yZCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNw
cAppbmRleCAzNTNlYWM4Y2UxMWI2OTA2ZWZhZGQyZmQyNzE4Yjk3YWI1MmNkYTRkLi5hYjcwNmRj
MmU5MzRhOWE3ZWY5OTI2ODk3OTc0YmRjNzU0ZWEzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCkBA
IC00NCw3ICs0NCw3IEBAIHZvaWQgTmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQog
ewogICAgIG1faXNTdGFydGVkID0gdHJ1ZTsKICAgICBtX3J0Y1Byb3ZpZGVyLmNhbGxPblJUQ05l
dHdvcmtUaHJlYWQoW3RoaXNdKCkgewotICAgICAgICBtX21hbmFnZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgbV9tYW5hZ2VyID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigp
OwogICAgICAgICBtX21hbmFnZXItPlNpZ25hbE5ldHdvcmtzQ2hhbmdlZC5jb25uZWN0KHRoaXMs
ICZOZXR3b3JrUlRDTW9uaXRvcjo6b25OZXR3b3Jrc0NoYW5nZWQpOwogICAgICAgICBtX21hbmFn
ZXItPlN0YXJ0VXBkYXRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IDE2
YjdmYWUxOWY2MGJmODEzOTg0MTM1OWJkNjg3YzY0ZTQ5MzFmNDYuLmQyMmQyZGE4N2FkMTZjOTRh
NjZlNjI5ZDIyY2JhYjIwYmU2OTNkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNjAsNyAr
NjAsNyBAQCBOZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbgogICAgIDogbV9jb25uZWN0aW9uKCZjb25u
ZWN0aW9uKQogICAgICwgbV9ydGNNb25pdG9yKCp0aGlzKQogICAgICwgbV9ydGNOZXR3b3JrVGhy
ZWFkKGNyZWF0ZVRocmVhZCgpKQotICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlx
dWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5n
ZXQoKSkpCisgICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29y
a1RocmVhZC5nZXQoKSkpCiB7CiAjaWYgZGVmaW5lZChOREVCVUcpCiAgICAgcnRjOjpMb2dNZXNz
YWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfTk9ORSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBO
ZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjoKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0
Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CisgICAg
YWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50Pihp
ZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CiB9CiAKIHZvaWQgTmV0
d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgY29u
c3QgUlRDTmV0d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwg
dWludDE2X3QgbWF4UG9ydCkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92
aWRlcjo6d3JhcE5ld1RDUENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3Qg
bmV3QwogewogICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIG5l
d0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCA9IG1fcGVuZGluZ0luY29taW5nU29ja2V0
cy50YWtlKG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKTsKLSAgICAgICAgYWRkU29ja2V0
KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVu
dGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5
cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsKKyAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIs
IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RG
TW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rp
b25UQ1ApKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcAppbmRleCAzODM4MmIwOWQ0ZmIzYmUyNjRmODliNzc4NDFhNDFkN2MwOGNhYzA1Li5j
NWVmNmQ5OWE1NjBkZDE0ODhmMTg0OTk1YWU4YTdiMTZkOWFkMjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5
RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJl
cGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVl
PEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOwogCiAg
ICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBx
dWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci5kaWRS
ZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CkBAIC0zODgs
NyArMzg4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3Nh
Z2VBc0ludmFsaWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3Jl
YXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVp
bnQ2NF90JiBzeW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0
aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJl
Y2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPnNl
dElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJ
RC4KQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVz
c2FnZXNUaHJvdHRsaW5nKCkKICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNvbm5lY3Rpb246OmRpc3Bh
dGNoSW5jb21pbmdNZXNzYWdlcyk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyID0g
bWFrZVVuaXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0aW9uOjpkaXNwYXRj
aEluY29taW5nTWVzc2FnZXMpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBvc3RDb25uZWN0aW9u
RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOwor
ICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNN
ZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gIldyYXBw
ZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIikgewogICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJv
bm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgKaW5kZXggMjBmNWVjNWIyMDJiZWMyYmRmNThmMDIwZWJkZWVmODMxNDkzMTFi
Zi4uYWRjNGFhZDk4ODE4ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDMzLDcgKzQzMyw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9u
U2V0PFNlbmRPcHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNN
ZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxF
bmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFy
Z3VtZW50cygpKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVy
KSwgc2VuZE9wdGlvbnMpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2Vu
ZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2
NF90CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0
ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpy
ZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhh
bmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVy
LT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuY3BwCmluZGV4IGNjYTA3MzkwYWRlYzQ0NmRlNzQ2NmNmOGUxMDEyM2MyNzkzODUzNTIu
LmZkNTE3MDE3MTJiMDYyOWQ0NzI1MmQwNDA4OTZjNjRmY2JjYmIyYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+IERlY29kZXI6OnVud3JhcEZvclRlc3RpbmcoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdyYXBwZWRNZXNzYWdlKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPih3cmFwcGVk
TWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShh
dHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KHdyYXBwZWRNZXNz
YWdlLmRhdGEoKSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFj
aG1lbnRzKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhfdCogcm91bmRVcFRvQWxp
Z25tZW50KGNvbnN0IHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25tZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDg1NDUyY2RhN2UwNDVlNDQ1
NWUwN2I5M2JhZmNhMzViMTAyMDAxMWUuLmE3NDlhYWI4NzAwNTRjZWI2OTBlNWYxNGY0MDc1NjNm
ZmNkMGY5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgK
QEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAgICAgfQogCiAgICAg
dHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtsaXN0ZW5lcklEID0g
Kmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4u
IGFyZ3MpIG11dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOwor
ICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5Iiwg
VDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5jb2RlciA8PCBsaXN0
ZW5lcklEOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVj
dGlvbiksIGFyZ3MuLi4pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmgKaW5kZXggM2Q2ZjM0Mjg5MmJjODgzOTA2NzhlOGMzNjQ2MzkxMTBkZTRmNTcy
Ni4uNzcxNDQ4YTQ0ZDA4ODZkZDAxYmIwYzJkZTY0ZGM5YTQyODYyN2EyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFz
cyBNZXNzYWdlU2VuZGVyIHsKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6OmlzU3lu
YywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6OnJl
Y2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNvZGVy
LT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4g
c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDM3
MDJhY2M3ZGY1MWJkODQ2YjkzYWY2NGJmMDcwYTRjMTAwMzkxOWYuLjg3ZGQyOGY4MDg2NzgyY2Uy
YTNkZjc5MGY0YWMwZTZkNzQ5ZGFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikKICAgICAgICAgLCBt
X3dhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVjdGlvblRlcm1pbmF0
aW9uV2F0Y2hkb2c6OndhdGNoZG9nVGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgICAgICAsIG1fYXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQcm9jZXNz
QW5kVUlBc3NlcnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdl
dCgpKSwgIkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlv
blN0YXRlOjpCYWNrZ3JvdW5kKSkKKyAgICAgICAgLCBtX2Fzc2VydGlvbihtYWtlVW5pcXVlPFdl
YktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBj
Q29ubmVjdGlvbi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2Vi
S2l0OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAg
IG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpAQCAtMjIwLDcgKzIyMCw3
IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVl
OwogICAgICAgICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGlj
aCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICBh
dXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6
ZUNvbm5lY3Rpb24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CiAgICAgICAgIGVuY29kZXIt
PmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkp
OwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNo
X21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBib2R5ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9
IGhlYWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKIAotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0
ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERl
Y29kZXI+KGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsK
ICAgICB9CiAKICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgPT0g
b3V0T2ZMaW5lQm9keU1lc3NhZ2VJRDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90
KiBoZWFkZXIpCiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MpOwogICAgICAgICBzaXplX3Qg
bWVzc2FnZUJvZHlTaXplID0gZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuc2l6ZTsKIAotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJv
ZHlTaXplLCBbXShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6
ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7CiAgICAgICAgICAg
ICB2bV9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRk
cmVzc190PihidWZmZXIpLCBsZW5ndGgpOwogICAgICAgICB9LCBXVEZNb3ZlKGF0dGFjaG1lbnRz
KSk7CiAgICAgfQpAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAg
ICB1aW50OF90KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAgIHNpemVfdCBtZXNz
YWdlQm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9yRGF0YSAtIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgbnVsbHB0ciwgV1RG
TW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsK
IH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5cyBpbmNsdWRlIHRo
ZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIENvbm5lY3Rp
b246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1cm47CiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihzdGQ6Om1h
a2VfdW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOworICAgIGRlY29kZXItPnNl
dEltcG9ydGFuY2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFk
ZXIpKTsKICNlbmRpZgogCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXplQ29ubmVjdGlv
biIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9u
VW5peC5jcHAKaW5kZXggNjNiNmJlNzI3MWU0NDU4ODM5NTA1YWE5MTVlMzg3M2Y4NTE0ZGVkZC4u
NzdhZjliMjg1ODQ1MjZiYjcwYzdmZmM4ZTMyNTZhM2JhYTEzYTI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTIxNiw3
ICsyMTYsNyBAQCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKCkKICAgICBpZiAobWVz
c2FnZUluZm8uaXNCb2R5T3V0T2ZMaW5lKCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBhdXRv
IGRlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdl
SW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgYXV0
byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8u
Ym9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogCiAgICAgcHJvY2Vz
c0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIApAQCAtNDgyLDcgKzQ4Miw3IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1l
c3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJ
TiB8fCBlcnJubyA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElCKQotICAgICAgICAgICAg
bV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5peE1lc3NhZ2U+KFdU
Rk1vdmUob3V0cHV0TWVzc2FnZSkpOworICAgICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOwogICAg
ICAgICAgICAgbV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9zb2NrZXQuZ2V0KCksIEdfSU9f
T1VULCBtX2Nvbm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4gZ2Jvb2xlYW4gewog
ICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQobV9wZW5kaW5nT3V0cHV0TWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggNjQwZjQ1Mjk5ZTNi
MjY2ZTAyNjljY2NjYzk0NTJiM2JhNTc5ZWZiMS4uNWFkZmQ4MmJlY2E0NmRiMDI0NDdlOGJjYjZk
Mzg0YzJjMDE1NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2lu
L0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9D
b25uZWN0aW9uV2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVh
ZEV2ZW50SGFuZGxlcigpCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3BhdGNoIGl0LgogICAg
ICAgICAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKDApOwotICAgICAgICAgICAg
YXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0
YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7
CisgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29kZXI+KG1fcmVhZEJ1
ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNo
bWVudHMpKTsKICAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNv
ZGVyKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9N
b2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKaW5kZXggZGQyYjY2YTdj
YTE5NTkxYjZlZTY3YjhmMjg0ZmQyNTRhMzgyNzg1ZC4uNTY4MzcyMTNkZmJlYWViNGQ1OWU5M2Mz
ZDQ5ZjZjN2FjMmY1MzRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1
bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCkBAIC00NCw2ICs0NCw3
IEBAIHR5cGVkZWYgc3RydWN0IF9HTW9kdWxlIEdNb2R1bGU7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgTW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShNb2R1bGUpOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1vZHVsZShj
b25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9t
YWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xh
eWVySG9zdGluZ0NvbnRleHQubW0KaW5kZXggODIzMmRiNGViNTZlYWNiNmY4Y2U4NTU2NjRiOGI3
ODJhYjY1MGE5OC4uN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdmMDJiMDRjZjQ0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1t
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8
TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChj
b25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5n
Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBh
dXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+
KCk7CiAKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewogICAgICAgICBrQ0FDb250ZXh0
UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCkBAIC01Miw3ICs1Miw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0
OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hCiAjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9I
T1NUSU5HKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGlu
Z0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29uc3QgTGF5ZXJIb3N0
aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8g
bGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsK
ICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3Rp
bmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCkBAIC04Miw3ICs4Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXll
ckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhv
c3RpCiAjaWYgUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRl
eHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1By
b2Nlc3MoKQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQg
PSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29u
dGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNz
OwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4
dFdpdGhDR1NDb25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNv
bnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwogICAgIHJldHVybiBsYXllckhv
c3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDk3ZTJkZjM1M2IzNjgyMzkyOWEzMWFlOTU3YTFkZGNk
YzIxYzM3ZDYuLmI5OGNhOTRiYzllZmMyM2IyZWQ4MThhNWI3ODQzMzcyMzE3ZTljNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmgKQEAgLTQ5LDcgKzQ5LDggQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb247CiBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOwogCi1jbGFz
cyBQbHVnaW5Db250cm9sbGVyUHJveHkgOiBQbHVnaW5Db250cm9sbGVyIHsKK2NsYXNzIFBsdWdp
bkNvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBQbHVnaW5Db250cm9sbGVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5Db250cm9s
bGVyUHJveHkpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAzNjZiOTgzY2MwYmVhNTgzODYzYTdj
ZDYzMzNmOTQ4ZGY3NDg0NDM1Li5jZTgyNjdkMmVlNzhjYWNiM2RkYTBhOWIzNzViZmFhZmM2ODZl
ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0
aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJp
bgogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25z
dCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgYm9vbCYgcmVz
dWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJ
RCkKIHsKLSAgICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8
UGx1Z2luQ29udHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOworICAgIGF1
dG8gcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJv
eHk+KHRoaXMsIGNyZWF0aW9uUGFyYW1ldGVycyk7CiAKICAgICBQbHVnaW5Db250cm9sbGVyUHJv
eHkqIHBsdWdpbkNvbnRyb2xsZXJQcm94eVB0ciA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS5nZXQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IGJiZDQyM2JjZjU3MTVlNGFkNzBi
ZjUyZGVmOGMyYzMwYzQxYmYwZjYuLjNlNjFiYmQwMDBlMWY0Y2RiNmMyYTM2Y2E0Zjc1ZTkwNGY4
MzVjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xh
c3MgVVJMIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsKICAgICB7CiAg
ICAgICAgIEFTU0VSVChiYXNlVVJMKTsKICAgICAgICAgYmFzZVVSTC0+cGFyc2VVUkxJZk5lY2Vz
c2FyeSgpOwotICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6
OlVSTD4oKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CisgICAgICAg
IGF1dG8gYWJzb2x1dGVVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJz
ZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGFi
c29sdXRlVVJMU3RyaW5nID0gYWJzb2x1dGVVUkwtPnN0cmluZygpOwogCiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFQSTo6VVJMKFdURk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVS
TFN0cmluZykpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJ
bXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBpZiAobV9wYXJzZWRVUkwp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3Vu
aXF1ZTxXVEY6OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVS
TCA9IG1ha2VVbmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAK
ICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KaW5kZXggMjU5Mjg0N2Uz
NDFhM2I2ZjcyODc1NGJkNzg4YTY2NTNkZDIyMTViMC4uZDNmZjYyMWVjMGY0YTEwZDc1NjQ4N2Nj
MjE2ZjQ5NWNlODZkNzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KQEAgLTgzLDcgKzgzLDcgQEAgYm9v
bCBSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBS
ZW1vdGVPYmplY3RJbnZvY2F0aW8KICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibG9ja1Np
Z25hdHVyZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0Lm1f
cmVwbHlJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1vdmUo
YmxvY2tTaWduYXR1cmUpKTsKKyAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZvID0gbWFrZVVuaXF1
ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCA2NWRhOWVmZjAxYjQzZWE1
NzEwODAyZjZjNDZhNmQwMjAyNjU2OTNlLi40ODk5NzYyOTMyYjdhZjY5MjIxZDA1MGFmNjc0NTgz
NmZjMzg3YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgLSAoaWQp
X2luaXRXaXRoV2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlJilwYWdlCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0
UmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+
KHNlbGYsIHBhZ2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2Vi
S2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KQEAgLTExOSw3ICsxMTksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQYWdlUHJveHk6KFdl
YktpdDo6V2ViUGFnZVByb3h5JilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwor
ICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmpl
Y3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTE2MCw3
ICsxNjAsNyBAQCAtICh2b2lkKV9zZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2Nh
dGlvbiBpbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdEludAogICAgICAgICBpZiAoc3RyY21wKFtO
U01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5QmxvY2tTaWduYXR1
cmVdLm1ldGhvZFJldHVyblR5cGUsICJ2IikpCiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiUmV0dXJuIHZhbHVlIG9mIGJs
b2NrIGFyZ3VtZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMpIiwgc2VsX2dldE5hbWUoaW52b2NhdGlv
bi5zZWxlY3RvcildOwogCi0gICAgICAgIHJlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVu
dGlmaWVyKCksIHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAgICByZXBseUluZm8gPSBtYWtl
VW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0
ZVJlcGx5SWRlbnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKIAogICAgICAgICAvLyBS
ZXBsYWNlIHRoZSBibG9jayBvYmplY3Qgc28gd2Ugd29uJ3QgdHJ5IHRvIGVuY29kZSBpdC4KICAg
ICAgICAgaWQgbnVsbCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAppbmRleCA3ZWQxMWU2YzE3MWUy
MGJlMWU5ZWFkYjMwN2U3MWZjNDhiZmRlODQ5Li5mYWVmZWQyZGNjODM4ZWU5NTczOTA2NWRhYzYz
ZjEzNTYzZjBkM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9n
bGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0Q29u
dGV4dE1lbnVJdGVtKiB3ZWJraXRDb250ZXh0TWVudUl0ZW1DcmVhdGUoY29uc3QgV2ViQ29udGV4
dE1lbnVJdGVtRGF0YSYKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJL
SVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVO
VV9JVEVNLCBOVUxMKSk7CiAKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEpOworICAgIGl0ZW0tPnByaXYt
Pm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihpdGVtRGF0YSk7
CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBzdWJNZW51ID0gaXRl
bURhdGEuc3VibWVudSgpOwogICAgIGlmICghc3ViTWVudS5pc0VtcHR5KCkpCiAgICAgICAgIHdl
YmtpdENvbnRleHRNZW51SXRlbVNldFN1Yk1lbnUoaXRlbSwgYWRvcHRHUmVmKHdlYmtpdENvbnRl
eHRNZW51Q3JlYXRlKHN1Yk1lbnUpKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAgV2ViS2l0Q29udGV4
dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KEd0a0FjdGlvbiogYWN0aW9u
KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19BQ1RJT04oYWN0aW9uKSwgbnVsbHB0
cik7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9N
RU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxs
cHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
bnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBt
YWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CiAKICAgICByZXR1cm4g
aXRlbTsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtp
dF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKEdBY3Rpb24qIGFjdGlvbgogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCF0YXJnZXQgfHwgZ192YXJpYW50X2lzX29mX3R5cGUodGFy
Z2V0LCBnX2FjdGlvbl9nZXRfcGFyYW1ldGVyX3R5cGUoYWN0aW9uKSksIG51bGxwdHIpOwogCiAg
ICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVN
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwot
ICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVu
dUl0ZW1HbGliPihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOworICAg
IGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGli
PihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOwogCiAgICAgcmV0dXJu
IGl0ZW07CiB9CkBAIC0xOTQsNyArMTk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJr
aXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uKFdlYktpdENvbnQKIAog
ICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRF
TShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsK
ICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250ZXh0TWVudUFjdGlvbklz
Q2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZTsKLSAg
ICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJ
dGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9u
KSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsKKyAgICBpdGVtLT5w
cml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwg
d2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0Q29udGV4
dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAt
MjE2LDcgKzIxNiw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVu
dV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsCiAKICAgICBXZWJLaXRDb250
ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CiAgICAgQ29udGV4dE1l
bnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rp
b24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+
bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUs
IHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJv
bVVURjgobGFiZWwpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rp
b25UYWcoYWN0aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogCiAgICAgcmV0dXJuIGl0
ZW07CiB9CkBAIC0yMzksNyArMjM5LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBX
RUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRf
TUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbUJhc2VBcHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0
ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihB
Y3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJv
bVVURjgobGFiZWwpKTsKICAgICBpdGVtLT5wcml2LT5zdWJNZW51ID0gc3VibWVudTsKICAgICB3
ZWJraXRDb250ZXh0TWVudVNldFBhcmVudEl0ZW0oc3VibWVudSwgaXRlbSk7CiAKQEAgLTI1Niw3
ICsyNTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9uZXdfd2l0aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcih2b2lkKQogewogICAgIFdl
YktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVt
R2xpYj4oU2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygp
KTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJ
dGVtR2xpYj4oU2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmlu
ZygpKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggNWVk
MTQzYTk5ODU5MDQ5NmMzMzc2YTU2OTg4MTE1M2E2YTAyYjI4Yy4uZjMzY2FiMzA1ZmVlMTI3NGZh
YTdiMjE4MzhlOWJiN2VmNzZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC03Miw2ICs3
Miw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CiAgICAgLCBwcml2YXRlIElQ
Qzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5PgogICAgICwgcHVibGljIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0cnVjdCBDbGllbnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggN2FkMzMzMTQ1MzkxODg4OWZk
M2I5ODk2Mzg2YThiZWQxZjUxOWExNC4uMzkxNGE0YzIwMTRhOWE1NGE2MzQ4OGE0ZTc0MzgxOWM2
YThkYjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXlt
ZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFTU0VSVCh2aWV3Q29u
dHJvbGxlcik7CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXph
dGlvblByZXNlbnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdC5nZXQo
KSwgdmlld0NvbnRyb2xsZXIpOworICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9h
dXRob3JpemF0aW9uUHJlc2VudGVyID0gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0Lmdl
dCgpLCB2aWV3Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNTRVJUKCFwYXltZW50Q29vcmRpbmF0
b3JQcm94eS0+bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5
LT5tX3NoZWV0V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dpdGhDb250ZW50Vmlld0NvbnRyb2xs
ZXI6dmlld0NvbnRyb2xsZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRleCA4NmU3NDRjMTA4
ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2Li40ZjgzNzAyNGVlNWYzNGZmYTBlNjliYWY3
YjNiZmM4ODFhNTI4MDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtNTUsNiArNTUsNyBA
QCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gOiB1aW50OF90
OwogdXNpbmcgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNy
ZWRlbnRpYWwmKT47CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOZXR3
b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0aW9uTWFu
YWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKE5ldHdv
cmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5k
Ym94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94
RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggNTZhNzgzYTBiMjNiMjZhMjBjNWI4ZmE0YTU5ZjE1N2E0
YzAzN2JiNy4uMmQ1ZDFhZmMwODI3YTQxYTBiZDgzYmJhYTgwZjc4ZjYxNGY1YmQ3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5t
bQpAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNhbmRib3hF
eHRlbnNpb25JbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29u
c3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBPcHRpb25hbDxwaWRf
dD4gcGlkID0gV1RGOjpudWxsb3B0KQogICAgIHsKQEAgLTE2MCw3ICsxNjEsNyBAQCBhdXRvIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4g
T3B0aW9uYWw8SGFuZGxlPgogICAgICAgICByZXR1cm4ge3sgfX07CiAKICAgICBIYW5kbGUgaGFu
ZGxlOwotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNh
bmRib3hFeHRlbnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVm
ZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICBoYW5kbGUubV9zYW5k
Ym94RXh0ZW5zaW9uID0gbWFrZVVuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNl
LnNpemUoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgKaW5kZXgg
YzkzNGU5MDdmODk3ZjM3ZmUwZTA4ZjkwZjZmMTllMzQzZjIwZjVlZi4uMzlhZTBkNzdjZDBmYTAx
MTE3MWYxOTNhZDhiN2MwZjM4MTE5MTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oCkBAIC0zMyw2ICszMyw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UgOiBwdWJs
aWMgV2ViQ29yZTo6Q0FSaW5nQnVmZmVyU3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggMThkYzJmYjhlZDEzZDE1MzQx
MmVhMzBlMjkxMTE3OGVhY2VmYzVhZS4uNzA0MzBmNDQzMTJjOGE1NjJjZTE1ZmM3MzJmNjlkMzg3
NmZlOWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAt
MTI1LDcgKzEyNSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciYgdGV4bWFwTGF5ZXIoTmljb3NpYTo6
Q29tcG9zaXRpb25MYXllciYgY29tcG9zaXRpb25MYXllcikKIHsKICAgICBhdXRvJiBjb21wb3Np
dGlvblN0YXRlID0gY29tcG9zaXRpb25MYXllckltcGwoY29tcG9zaXRpb25MYXllcikuY29tcG9z
aXRpb25TdGF0ZSgpOwogICAgIGlmICghY29tcG9zaXRpb25TdGF0ZS5sYXllcikgewotICAgICAg
ICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVy
TGF5ZXI+KCk7CisgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBtYWtlVW5pcXVlPFRl
eHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXllci0+c2V0
SUQoY29tcG9zaXRpb25MYXllci5pZCgpKTsKICAgICB9CiAgICAgcmV0dXJuICpjb21wb3NpdGlv
blN0YXRlLmxheWVyOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjplbnN1cmVSb290TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXllcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9yb290TGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBw
ZXJMYXllcj4oKTsKKyAgICBtX3Jvb3RMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckxh
eWVyPigpOwogICAgIG1fcm9vdExheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKICAgICBt
X3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0
QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVh
ZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGNkM2U1
N2M2YmNiOWQ4ZGMxZmY5OWNhZDU5YzRlMTNmZjY2MDNhNmIuLmJjYjIzNTk3NWIxMzNkMmUyNzY3
NmQyODNmZTg5MTM4MWEwZDVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtNTMsNyArNTMsNyBAQCBSZWY8
VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZShDbGllbnQmIGNs
aWVudCwgVGhyZWFkZWREaXNwbAogVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0
b3IoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpDbGllbnQm
IGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWxlRmFjdG9yLCBUZXh0dXJl
TWFwcGVyOjpQYWludEZsYWdzIHBhaW50RmxhZ3MpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAg
ICAgLCBtX3BhaW50RmxhZ3MocGFpbnRGbGFncykKLSAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29w
KHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5kZXJMYXll
clRyZWUoKTsgfSkpCisgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChtYWtlVW5pcXVlPENvbXBv
c2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQogI2lmIFVTRShS
RVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgLCBtX2Rpc3BsYXlS
ZWZyZXNoTW9uaXRvcihUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3Bs
YXlJRCwgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCmlu
ZGV4IDFhMDU0NzUwN2VjMWMxYTgxMjQ3MmJiN2ViZDlmYTBkNGFkMTNhNDguLjA3ZThiYmM5YjVj
OWMzYzZjOWQ4ZDZjM2I5NDVlNTM5MzI3Yjg3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKQEAgLTM5LDYgKzM5
LDcgQEAgY2xhc3MgTlBWYXJpYW50RGF0YTsKIGNsYXNzIFBsdWdpbjsKIAogY2xhc3MgTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKTsKIAogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1h
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNw
cAppbmRleCA2MWUxZjk0MDI1MjM4NWRiODA1ZWMxMjJkZmYxYzllNGYxYjcyNTYzLi5kNGI1MjRj
ODI5ZWM2NjcyMWRmMWE3MGQyZDUxM2FlNGViM2YzZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIE5QUmVtb3RlT2JqZWN0TWFwOjpucE9iamVjdFByb3h5RGVzdHJveWVkKE5QT2JqZWN0
KiBucE9iamVjdCkKIHVpbnQ2NF90IE5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0
KE5QT2JqZWN0KiBucE9iamVjdCwgUGx1Z2luKiBwbHVnaW4pCiB7CiAgICAgdWludDY0X3QgbnBP
YmplY3RJRCA9IGdlbmVyYXRlTlBPYmplY3RJRCgpOwotICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0
cy5zZXQobnBPYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZl
cj4odGhpcywgcGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCkucmVsZWFzZSgpKTsKKyAgICBt
X3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIG1ha2VVbmlxdWU8TlBPYmplY3RN
ZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVh
c2UoKSk7CiAKICAgICByZXR1cm4gbnBPYmplY3RJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHAKaW5kZXggN2IwMmI1ZTEyZjMyYzcyZDM4ZjUyMDQ1YmI2ZDZhMjNiNjJhZTJlMS4uMjYx
ZDdhODk2OTMwNmE4OTI1YzRhYjM2ZTQ3OTQ3YjM5NmMxMjUyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk1vZHVsZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgYm9vbCBtb2R1bGVNaXhlc0d0
a1N5bWJvbHMoTW9kdWxlKiBtb2R1bGUpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRy
eUxvYWQoKQogewotICAgIG1fbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1fcGx1
Z2luUGF0aCk7CisgICAgbV9tb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obV9wbHVnaW5QYXRo
KTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCBlYTJiZTkzMDhjYmJlNmRkN2Vi
OGNmMmM1ODhjOGZmNjE5ZWE5OTNjLi45NTUxM2Y0Nzk4MmZkNjdlZTVmOThkZDc5OTZjODU5OGYx
ZjQ2M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApAQCAtNTEsNiArNTEs
NyBAQCBjbGFzcyBFbmNvZGVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBlbnVtIExheWVyQ2hhbmdlIHsKICAgICAgICAgTmFtZUNoYW5nZWQgICAgICAgICAg
ICAgICAgICAgICA9IDFMTFUgPDwgMSwKQEAgLTk0LDYgKzk1LDcgQEAgY2xhc3MgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJDcmVhdGlvblBy
b3BlcnRpZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ICAgIExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzKCk7CiAKICAgICAgICAgdm9pZCBlbmNvZGUoSVBD
OjpFbmNvZGVyJikgY29uc3Q7CkBAIC0xMDksNiArMTExLDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0aWVzIHsK
KyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllclBy
b3BlcnRpZXMoKTsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGll
cyYgb3RoZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggMWYy
ZGU0ZDAzN2VhM2U4MzAyODdhYjk4Y2IyYThmMjFjNGVjZWEyZS4uMGQyMjdmZmMxZDljNTU1NmFh
ZDkyZTdlZTE1NzY1ZTE2YjM0NDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbQpAQCAtMTUyLDEzICsxNTIsMTMgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okxh
eWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGkKICAgICAv
LyBGSVhNRTogTGF5ZXJQcm9wZXJ0aWVzIHNob3VsZG4ndCBiZSBjb3B5YWJsZTsgUGxhdGZvcm1D
QUxheWVyUmVtb3RlOjpjbG9uZSBzaG91bGQgY29weSB0aGUgcmVsZXZhbnQgcHJvcGVydGllcy4K
IAogICAgIGlmIChvdGhlci50cmFuc2Zvcm0pCi0gICAgICAgIHRyYW5zZm9ybSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci50cmFuc2Zvcm0p
OworICAgICAgICB0cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKIAogICAgIGlmIChvdGhlci5zdWJsYXllclRyYW5z
Zm9ybSkKLSAgICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOworICAg
ICAgICBzdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg+KCpvdGhlci5zdWJsYXllclRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuZmls
dGVycykKLSAgICAgICAgZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVy
T3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOworICAgICAgICBmaWx0ZXJzID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7CiB9CiAKIHZvaWQg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTM1NCw3ICszNTQsNyBAQCBib29sIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJlc3VsdC50cmFuc2Zvcm0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zv
cm0pOworICAgICAgICByZXN1bHQudHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNo
YW5nZWRQcm9wZXJ0aWVzICYgU3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKSB7CkBAIC0zNjIsNyAr
MzYyLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVz
dWx0LnN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNm
b3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3Jt
KTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgSGlkZGVuQ2hh
bmdlZCkgewpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyb3VuZGVkUmVjdCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAg
ICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmxvYXRS
b3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdl
ZFByb3BlcnRpZXMgJiBTaGFwZVBhdGhDaGFuZ2VkKSB7CkBAIC00NzEsNyArNDcxLDcgQEAgYm9v
bCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0Zyb250
QnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGhhc0Zyb250
QnVmZmVyKSB7Ci0gICAgICAgICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KG51bGxwdHIpOworICAgICAgICAgICAgYXV0byBi
YWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPihudWxscHRy
KTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmJhY2tpbmdTdG9yZSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCkBAIC00ODYsNyArNDg2LDcg
QEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdl
ZFByb3BlcnRpZXMgJiBGaWx0ZXJzQ2hhbmdlZCkgewotICAgICAgICBhdXRvIGZpbHRlcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7CisgICAgICAgIGF1
dG8gZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKTsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqZmlsdGVycykpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIHJlc3VsdC5maWx0ZXJzID0gV1RGTW92ZShmaWx0ZXJzKTsKQEAgLTYw
Miw3ICs2MDIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllclRyZWVUcgogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVydGllcyA9IHN0ZDo6
bWFrZV91bmlxdWU8TGF5ZXJQcm9wZXJ0aWVzPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPExheWVyUHJvcGVy
dGllcz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqbGF5ZXJQcm9wZXJ0aWVzKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IDk3OGM0YmJlZDdiNWNkOTFjYWFl
YzE1NGJjOGJhMTRiYWI3NTM0NjEuLmU4MjZhMzBiMTJlMjRlY2Y0MzBjNjliNzZiMWE2ZjI4ZjVi
Yjk4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFu
c2FjdGlvbi5jcHAKQEAgLTUyMiw3ICs1MjIsNyBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNOZXdSb290Tm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKLSAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xs
aW5nU3RhdGVUcmVlPigpOworICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0gbWFrZVVuaXF1ZTxT
Y3JvbGxpbmdTdGF0ZVRyZWU+KCk7CiAKICAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVzOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ2hhbmdlZFByb3BlcnRpZXMpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4
IGM3MzQ3Yzc5ZTY2OTM4Mzc4NWQwNWQyMjllNDdiNzQ3YzFmMGNhNTUuLmIyY2Q0ODQ2Njc3Y2U5
N2RmYWMyODU4NDkwYzFlYTQzNGY5NjI5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFw
aGljc0NvbnRleHQoKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlID0gY3Jl
YXRlQ2Fpcm9TdXJmYWNlKCk7CiAgICAgUmVmUHRyPGNhaXJvX3Q+IGJpdG1hcENvbnRleHQgPSBh
ZG9wdFJlZihjYWlyb19jcmVhdGUoaW1hZ2UuZ2V0KCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRl
RmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3Jh
cGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0
bWFwQ29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IElu
dFJlY3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFy
ZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRt
YXBDRy5jcHAKaW5kZXggOTJmMTA2MmIyOTBmNzc1ZGI1YWU3ZWQxOTUyYTljYTg1OGFiMzEyMi4u
MDE2YWJiZDk5M2UxOGE0NWMwMWE3ZjA0OTdkY2MzMWE1M2I0MzcwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KCkKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oYml0bWFwQ29udGV4
dC5nZXQoKSwgMCwgbV9zaXplLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShiaXRt
YXBDb250ZXh0LmdldCgpLCAxLCAtMSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CiB9CiAKIHZvaWQgU2hh
cmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAK
aW5kZXggNjBmOGYzY2I3MzI4OWI2YjBkMmY0YzM1MTQ2ZjFjZmVkNDAzNGE4MC4uMTAwMWVlM2U1
MjkyZWRjYjUzNmY4MjMzMDNjMmM3NGMyYjFlOTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCkBAIC03MCw3ICs3MCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBtX2JpdG1hcCA9IGNyZWF0ZURpcmVjdDJEU3Vy
ZmFjZSgpOwogICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gYml0bWFwQ29udGV4dCA9IERp
cmVjdDJEOjpjcmVhdGVSZW5kZXJUYXJnZXRGcm9tV0lDQml0bWFwKG1fYml0bWFwLmdldCgpKTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lk
IFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaAppbmRleCAyOTk1ODEw
OTVkZDFkMWIxNWFmZWFiYjRkYWNiZWQwNWQyYmRkMTE0Li41NDVhN2JlNGQ0ODE5NzEzMjhkMWMz
Zjc5ZDI3MWVkOWEyMWY4MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViUHJvY2Vz
c1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQXV0b21hdGlvbkNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXV0b21hdGlv
bkNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IDI4ZmFmNjg3MTlhOWQ3MjhkNTFi
NmM3NzJkODRlMTdiNjQ5MDk3Y2EuLjJhZTJhNTAzNGMzYTQxNzFjY2Y0NzdiOTc4NWI3M2E2ZjI0
ZGI4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gQXV0b21hdGlv
blNlc3Npb25Ccm93c2luZ0NvbnRleHRPcHRpb25zIDogdWludDE2X3QgewogfTsKIAogY2xhc3Mg
QXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGVudW0gY2xhc3MgSmF2YVNjcmlwdERpYWxvZ1R5cGUgewogICAgICAgICBB
bGVydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0
TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51
Q2xpZW50LmgKaW5kZXggYWYxMDljMWRmNjcwMGRjMjNlMmUzMzFiMGI1MGVmYmNmZjQyODY2Ny4u
ODE2ZjcxZTEyNjcwY2IzZDY1YjFlNjMyODAzYTZiNDBlZjdkYmZhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIENv
bnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmgKaW5kZXggMGY4Y2FiOTczMjlmMDk1N2YzMmI0N2MyNzc4MWQxZTc4NmZhMTQ3ZC4uOGI0
NGEzZjQ1NmM1MzJhZDMzODA2ZWY2OWI0N2VhZDA5NDFkZjdiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3Bh
Y2UgQVBJIHsKIAogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAppbmRleCA5MmIyZDY3NWRmY2Ey
Y2FmZGEyMTFiM2Y3MWM1Nzk4YWZkNDVkNjJhLi5iNGUyYWRlNzI5ZWE2NmQ4ZGRhOGRkNTAyMTE4
YWU0YWJkYjIxODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3Bh
Y2UgQVBJIHsKIGNsYXNzIERpY3Rpb25hcnk7CiAKIGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5EaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDAyMzc2ZTFlMTEwZDQ3NmViMmI5
MTg1ZTRlMmZjZDhkNmUxMzMyZTEuLmIyZWFjYzliODMyNTk4YjE3YTk5ZGJkOWQ2N2VmMjRlNDcz
YWVkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9h
ZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENs
aWVudC5oCkBAIC00Niw2ICs0Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywg
WWVzIH07CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRG93bmxvYWRDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xp
ZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
aW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5o
CmluZGV4IGYzMTIzYWYxOTUxNjVhNjY5ZDY2NjgzMThiODEyZTkzMzY1ZTZkYzIuLjZkMWUzYjIx
MWZlMGRkOTVhOTQ4NTA1ODQxN2RiNGRlMDgyNDBkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBXZWJQYWdl
UHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRmluZENsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZENsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNo
ZXNDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0Ns
aWVudC5oCmluZGV4IGM2ZjQ1NzM0MmQxMTE5MDFkY2E2ZDNjMzA5MDMzN2ZlZTdhMWZlYzIuLmZh
ZTFkY2QzY2Q2ODgzNTA3ZWZiZTNkOTVkNWQ2ZjcyYTAzNjlkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCkBAIC0zOCw2ICsz
OCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5k
TWF0Y2hlc0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RmluZE1hdGNoZXNDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKaW5kZXggNWIwYzZjY2EyNGVlZmMxYTk1ODE5MWUw
ZTI3OTRhNDdiNGY1NGU3Yy4uZjBjYTA2MDExMTk4MDJlZDM2OWI0ZDA3OGQ4M2M4NjJhNTE2MTJk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oCkBAIC0z
Nyw2ICszNyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBGb3Jt
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5Gb3JtQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCmluZGV4IDEzNzU1MjljZGEyNWYyNWNiYjE3OWJkYzg5
ODkxNzFjODllZTg4NTcuLjg5NzRjZDEzMzk0Nzc1MDI3M2Y0NTBmMGU4Mzk2YzBlNmIxMzIwMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGll
bnQuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgRnVsbHNjcmVlbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgQVBJVHlwZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCmlu
ZGV4IDUyNjZiYzJjYTU0Y2YwOTljMjM4Y2FjYzYyMTQ0Yzk3OTlhMDk3OTcuLjdjNmY1NjI5Y2I2
MGU1M2JjN2I4NWFhODg4OWY3MmU2OGQ3YTRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMzQsNiArMzQsNyBA
QCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBj
bGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvblByb3ZpZGVyKCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5k
ZXggOTgxYTk4NWJiZGU1ZjFjYjY1Zjk2Y2JiMjEzOWZiY2YxOWQ3ZGNlNS4uZTEyMmVlM2VkYjFj
NDIxOWQxZDg0MTk5MzIxYTgwMDNkNTJjODIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2
b2lkIEhUVFBDb29raWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIp
CiAKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHkpOwogCi0gICAgbV9j
b29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJV2ViQ29va2ll
TWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsKKyAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9i
c2VydmVyID0gbWFrZVVuaXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRo
aXMpOwogCiAgICAgYXV0byogcG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5wcm9jZXNzUG9vbEZv
ckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCmluZGV4IGZjZjQ2MDYxZjZiZmE2ZGNiNzYwZTEyYzY2
MzNiNmI0NWYxNTZkZDQuLjExODRhYTQzMmMzYjlmZmNiMTVkYTVmODI4ZWY0YWM0ZjFhZGIxZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaApA
QCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IaXN0b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaApp
bmRleCBlYTllYmE1MGUxZWZlOGYwMzIxYzRkZmUzYTQ0NmYwZGNiYjVkOGM5Li5iZTQzYWVlYzU0
ZmYyZDRhYmI1YTI4ZmYzNjMxNDVjNDkwYzdlODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBA
IGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJY29uRGF0
YWJhc2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4IDZmOWU3YWY5Yzk4
MDkyMzNiNmE1NjVlYzNlMzgwYmUwYWFjZDU2N2UuLjJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRm
ZWY1ZjgzOTM2YjBkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIERhdGFSZWZlcmVu
Y2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25Mb2FkaW5n
Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggYzM1ZTdiM2FlNDkzZDlhYzYzY2IzYTRiNTgx
ZmUzMmZjYjQwYWNlOC4uOWQ0MzQ4OWEyZDYyNTdjYjBjYWY5MjJiM2ZiMDkzMjk1Y2U5YmI5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVu
ZGxlQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1l
c3BhY2UgQVBJIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ2xp
ZW50KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCmluZGV4IGNiYjllMGE5NzE0
NWJkMTdkZGVmOGUwYmIxNGFmOGMzNzZkZmIzODguLmRiNWQ5MGMzMWY5Mjc2OWQzMDNhMDFhZDc4
YmRhN2ZiZDFhNGQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBA
IHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5k
ZXggMzQ4ZDZiZjc3MjkyNzJlOGYyYWJhZWMzNzU1YzIwZGU1NDJkNjQ1ZC4uYjJlYTQxZDllMmYy
ZTgxZTJjOWViM2I4Nzc5MWZjM2VmOGMzZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBOYXZpZ2F0
aW9uOwogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRlckNsaWVudCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9u
KiwgQVBJOjpPYmplY3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IGE2ZTAxOWNjNDUxODYzYTQxYWNmYzhiZWE3YmYz
MDI4OTZiMWJiNzMuLmNkMjJhMjY3NjQ2OGQxODIzNGE2MDg0MmZlOWQ5MTY3MWIyMGE4N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aApAQCAtNzMsNiArNzMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uUmVzcG9uc2U7CiBjbGFzcyBPYmpl
Y3Q7CiAKIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfk5hdmlnYXRpb25DbGllbnQoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCmluZGV4IDVlYmU0
NDA3NDJhNzY1NDFiMWQ5Y2NmMjk5NWM5YTk1ZmU4NGQ1YWQuLjZhZThlNzUyMDVmZmZjODY1MmY0
ZjliODNiYjNkZTMwZWU2Y2ZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUG9saWN5Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFz
cyBPYmplY3Q7CiAKIGNsYXNzIFBvbGljeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9saWN5Q2xpZW50KCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggZDlkZDBkYjQ2NjM3NzIy
YjYwMmIyMGRkZGY2NzM4MTM1ZjY0NmY2Mi4uNzcyZGE2ZTVhODY5NzdlYzhhZTJkYzA3NTQyZDhm
Y2YxZTE0OTYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJ
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
QEAgLTcxLDYgKzcxLDcgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogCiBjbGFzcyBVSUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggYWZjZTcwYjYyN2ZlZWY3YjVi
Zjg4Mjg5YWQ4MjJmMTljMTljZGI2Zi4uM2QwMTYxMWMwMjlmOTNmNWNlM2U1ZWIzZTMwNjQ3NDg4
OWFiOGYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiB3a0NsCiAKIHZvaWQgV0tDb250
ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0
IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50
KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xp
ZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdr
Q2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJhc2UqIHdrQ2xpZW50
KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsCiAgICAgfTsKIAog
ICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sID0gKldlYktpdDo6dG9JbXBs
KGNvbnRleHRSZWYpOwotICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHByb2Nlc3NQb29sLnNldEhp
c3RvcnlDbGllbnQobWFrZVVuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOwogCiAgICAg
Ym9vbCBhZGRzVmlzaXRlZExpbmtzID0gcHJvY2Vzc1Bvb2wuaGlzdG9yeUNsaWVudCgpLmFkZHNW
aXNpdGVkTGlua3MoKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93
bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dERvd25s
b2FkCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZikt
PnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xp
ZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50
KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250
ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tD
b250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDEx
YjgzNGI0ZWUyYTlhNjg3NjI2YzczMmJmNThhNDg4MjNmNjMzNGEuLjg4OGI3NWJjN2NlYzg5ZDE2
ZTA3ZjYxN2U3YmIyY2UyOTc5ZmE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
V0tUeXBlSUQgV0tHZW9sb2NhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQogCiB2b2lkIFdLR2VvbG9j
YXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRp
b25NYW5hZ2VyUmVmLCBjb25zdCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVy
KQogewotICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQcm92aWRlcihzdGQ6
Om1ha2VfdW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAgICB0
b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJH
ZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlv
bk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVm
IGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tHZW9sb2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9u
UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYjIyM2Q2Zjg3YmZhNWU5NmUzZTUwZGEyZGQ3OGZmMGQy
ZGQ0MTZjZS4uNzY5MjM5OTBhYjViOWVhMjEzODVmMWQzNTY5ZThiNTBhYTdmNjVlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLTm90aWZpY2F0aW9uTWFuYWdl
ckdldFR5cGVJRCgpCiAKIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tO
b3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdLTm90aWZpY2F0aW9uUHJv
dmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJv
dmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRl
cikpOworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJO
b3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdLTm90aWZpY2F0
aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0N2VjNzI2YjBjZTQ0MDU3ZjAwMmI1NDBi
ZWE3NjhlNDNiMTBhOGQ0Li42MWE2OWIxZjNhNmRhNzQ5NmFkNDcyNjk3MGI4NWYyYzkxMTgxM2Y1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTk0OCw3ICs5
NDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogICAgICAgICB9CiAgICAgfTsKIAotICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxD
b250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldENv
bnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0od2tD
bGllbnQpOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsCiAKIHZv
aWQgV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJhc2UqIHdrQ2xpZW50KQogewot
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChtYWtlVW5pcXVlPFdl
YlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1Bh
Z2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENs
aWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtOTk1LDcgKzk5NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNl
KiB3a0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5k
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxGaW5kQ2xpZW50Pih3a0NsaWVu
dCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAg
LTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAgICAgICAgIH0KICAg
ICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEZpbmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdl
UmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxGaW5kTWF0Y2hlc0NsaWVudD4o
d2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSog
d2tDbGllbnQpCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRCdQog
CiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRm9ybUNsaWVudD4od2tDbGllbnQpKTsK
KyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xp
ZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQpA
QCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogCiAgICAgV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0b0ltcGwocGFnZVJlZik7CiAKLSAgICBhdXRvIGxvYWRl
ckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyQ2xpZW50Pih3a0NsaWVudCk7CisgICAg
YXV0byBsb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPExvYWRlckNsaWVudD4od2tDbGllbnQpOwog
CiAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQgdHJh
bnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVhZCBvZgogICAgIC8v
IGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCkBAIC0xMjgxLDcgKzEy
ODEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgIH0KICAgICB9OwogCi0gICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lD
bGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQo
bWFrZVVuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMjA3NSw3ICsyMDc1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAg
ICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRV
SUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFn
ZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VO
YXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0yMjkzLDE2NCArMjI5MywxNjYgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICB3ZWJQYWdlUHJveHktPnNldE5hdmlnYXRpb25D
bGllbnQobWFrZVVuaXF1ZVJlZjxOYXZpZ2F0aW9uQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCi12
b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVD
bGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgY2xhc3MgU3RhdGVDbGllbnQgZmluYWwgOiBwdWJs
aWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VMb2FkU3Rh
dGU6Ok9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50
KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbml0aWFsaXplKGNsaWVudCk7Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAg
ICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CitjbGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUxv
YWRTdGF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSog
Y2xpZW50KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOworICAgIH0KK3ByaXZh
dGU6CisgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZykKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUlzTG9hZGluZygpIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSXNM
b2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZSht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdl
VGl0bGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VU
aXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRp
ZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVRpdGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFj
dGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3
aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZUFjdGl2ZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9j
bGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
IH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJMKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVS
TChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFu
Z2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRD
aGFuZ2VBY3RpdmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVD
b250ZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50Lndp
bGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3Vy
ZUNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFu
Z2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0K
IAotICAgICAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2Vj
dXJlQ29udGVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1
cmVDb250ZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFu
Z2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0K
IAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFBy
b2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50Lndp
bGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0
ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2
b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0
ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9p
ZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5H
b0JhY2soKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50Lndp
bGxDaGFuZ2VDYW5Hb0JhY2spCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjaykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNhbkdvQmFj
aygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hh
bmdlQ2FuR29CYWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2spCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VD
YW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNh
bkdvRm9yd2FyZCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9y
d2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdp
bGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9n
cmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxs
Q2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVz
cygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3
b3JrUmVxdWVzdHNJblByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0
c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Q
cm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBk
aWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVl
c3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAg
ICB2b2lkIHdpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRp
ZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9p
ZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlm
ICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNlcnRpZmlj
YXRlSW5mbygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8o
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZp
Y2F0ZUluZm8pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5n
ZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lz
UmVzcG9uc2l2ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VXZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVu
dC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNp
dmUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9j
ZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNz
ZXMoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN3
YXBXZWJQcm9jZXNzZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9j
bGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9Ci0gICAgfTsKKyAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQorfTsKKwordm9pZCBXS1BhZ2VTZXRQYWdlU3Rh
dGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQor
ewogICAgIGlmIChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0
ZU9ic2VydmVyKHN0ZDo6bWFrZV91bmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOworICAgICAg
ICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRl
Q2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCiAgICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFn
ZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQppbmRleCBmNzYzYWY2MDAz
ZGE0NjY3MzYzMWU5MWVhODFiODNiNWM5N2EwODdkLi4zNWVmOTIyMTU0ZTE5NjMwMGU0YjZlZTc1
ZDRjOTgxNzg1YmMzZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtNTIsNyArNTIsNyBAQCAtIChpZClpbml0
V2l0aFBhZ2U6KFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJilwYWdlCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICBfcGFnZSA9IFdURk1vdmUocGFnZSk7Ci0gICAgX29ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJV
UkwiKTsKKyAgICBfb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9i
c2VydmVyPihzZWxmLCBAIlVSTCIpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWRkT2Jz
ZXJ2ZXIoKl9vYnNlcnZlcik7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKaW5kZXggNzhiYmEzOTY3YjYxOTdjMGU4YTdj
MjNhYzNkYThjZDEzMmU3YzRiZS4uOTY0MDZkMGFhZmJjMzU1NTYwYjVkMzE5N2EwMGMyNWY1NzU5
YTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAK
QEAgLTY4LDUgKzY4LDUgQEAgdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3
LCBjb25zdCBXS1ZpZXdDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgICAgIH0KICAgICB9OwogCi0g
ICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxWaWV3Q2xpZW50Pihj
bGllbnQpKTsKKyAgICB0b0ltcGwodmlldyktPnNldENsaWVudChtYWtlVW5pcXVlPFZpZXdDbGll
bnQ+KGNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggMjY1
NTU0ZjNkN2YyZDdhZDI5NmU5ZjNmOWZhMTEzODhiNzhmZDU2NC4uNDk2Nzc4OGExMDU3ZmE4ODJh
MGEwMWM4ZGJmNTAwMmU5MjI2ZWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1t
CkBAIC02MDIsNyArNjAyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFBhZ2VSZWY6KFdL
UGFnZVJlZilwYWdlUmVmCiAKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpOwog
Ci0gICAgX3BhZ2VMb2FkU3RhdGVPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQ
YWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYpOworICAgIF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIg
PSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmKTsKICAgICBf
cGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfcGFnZUxvYWRTdGF0ZU9ic2VydmVy
KTsKIAogICAgIEFTU0VSVCghYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcCgpLmNvbnRhaW5z
KF9wYWdlLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggMTM3MmNhNDEwNmM3NmUxZDYyMzVkNjE0
YWQ1YzFlNmE1NmVhMDVhMS4uODFkMzcwM2IwZWVhODJlNWU2YzYyZjMyMjJhYzRlNjgxOWY2YjNh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hU
VFBDb29raWVTdG9yZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIC0gKHZvaWQpYWRkT2JzZXJ2ZXI6
KGlkPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KW9ic2VydmVyCiAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIp
OworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdLSFRUUENvb2tpZVN0
b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKICAgICBfY29va2llU3RvcmUtPnJlZ2lzdGVyT2JzZXJ2
ZXIoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGJhY2U1YWM3ZWMwMGIx
ODk4YWQyZGY3MmNiMWIxOTQ0NjdkY2VjOWQuLmViYWM1NjhlM2RkYjY4NzBmODViMDE1MDhlYzIw
ZmFhYjdmMjA0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zNzMsNyArMzczLDcgQEAgLSAoaWQgPF9XS0Rvd25sb2Fk
RGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiAtICh2b2lkKV9zZXREb3dubG9hZERlbGVnYXRl
OihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxvYWREZWxlZ2F0ZQogewogICAgIF9kb3du
bG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldERv
d25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93
bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobWFr
ZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CiB9CiAK
IC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKQEAgLTM4
NCw3ICszODQsNyBAQCAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRl
bGVnYXRlCiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9u
RGVsZWdhdGU+KWF1dG9tYXRpb25EZWxlZ2F0ZQogewogICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUg
PSBhdXRvbWF0aW9uRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRv
bWF0aW9uRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25DbGllbnQo
bWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxl
Z2F0ZSkpOwogfQogCiAtICh2b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlci5tbQppbmRleCA4YjZkZjI0Zjg5NTJkODRmNjA3NTQ0YzZhMzFhMmRkMWI4YWEzNTVkLi5h
MDBiMjAzY2M5MDU5MzAxYmVjYzQ2MWQ2MWI0NjczMmI4NTYxMmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCkBAIC0xMTgsNiArMTE4LDcgQEAgLSAodm9pZClyZW1vdmVBbGxDb250ZW50UnVs
ZUxpc3RzCiB9CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGUgZmluYWwgOiBw
dWJsaWMgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNzYWdlSGFuZGxlckRl
bGVnYXRlKFdLVXNlckNvbnRlbnRDb250cm9sbGVyICpjb250cm9sbGVyLCBpZCA8V0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcj4gaGFuZGxlciwgTlNTdHJpbmcgKm5hbWUpCiAgICAgICAgIDogbV9jb250
cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC0xNDUsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAogLSAodm9p
ZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNj
cmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIGF1dG8gaGFu
ZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VI
YW5kbGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3Jp
cHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9y
bWFsV29ybGQoKSk7CiAgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKSkKICAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8g
YWRkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFk
eSBleGlzdHMuIiwgbmFtZV07CiB9CkBAIC0yMjksNyArMjMwLDcgQEAgLSAodm9pZClfcmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2Vy
Q29udGVudFcKIAogLSAodm9pZClfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1Njcmlw
dE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5h
bWUgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29y
bGQKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
OjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihz
ZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxk
LT5fdXNlckNvbnRlbnRXb3JsZCk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJE
ZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNv
bnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOwogICAgIGlmICghX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkp
CiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBm
b3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAn
JUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDM5MWExOTkyZTM1MzJk
YmU1ZjIxZGI2OTFkZDgxMDhhYWUyYTY2Yy4uMDhmNDJlYzhiMTNiZjcwYmQyYjZiMzdiYzdkODE1
NjgyM2Q2YzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC03NTcsNyArNzU3LDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJhdGlv
bi5jb3B5UmVmKCkpOworICAgIF9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBs
PihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsK
ICAgICBfcGFnZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNldEF1dG9tYXRpY2Fs
bHlBZGp1c3RzQ29udGVudEluc2V0cyh0cnVlKTsKQEAgLTc2OSwxNCArNzY5LDE0IEBAIC0gKHZv
aWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
KWNvbmZpZ3VyYXRpb24KIAogICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9w
VXNlckFnZW50KGNvbmZpZ3VyYXRpb24uX2FwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdl
bnQpOwogCi0gICAgX25hdmlnYXRpb25TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpO
YXZpZ2F0aW9uU3RhdGU+KHNlbGYpOworICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBtYWtlVW5pcXVl
PFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKICAgICBfcGFnZS0+c2V0TmF2aWdhdGlv
bkNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkpOwogCi0g
ICAgX3VpRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2Vs
Zik7Ci0gICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZp
bmRDbGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7
CisgICAgX3VpRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7
CisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+
KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1
ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAKLSAgICBfaWNvbkxv
YWRpbmdEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVn
YXRlPihzZWxmKTsKKyAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKIAogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9
IFlFUzsKIApAQCAtMzQyNSw3ICszNDI1LDcgQEAgLSAodm9pZClzZXRBbGxvd3NCYWNrRm9yd2Fy
ZE5hdmlnYXRpb25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb24KICAg
ICBfYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2Fy
ZE5hdmlnYXRpb25HZXN0dXJlczsKIAogICAgIGlmIChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlcyAmJiAhX2dlc3R1cmVDb250cm9sbGVyKSB7Ci0gICAgICAgIF9nZXN0dXJlQ29u
dHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+
KCpfcGFnZSk7CisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CiAgICAgICAgIF9nZXN0dXJlQ29udHJv
bGxlci0+aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7CiAgICAg
ICAgIGlmIChXS1dlYlZpZXcgKmFsdGVybmF0ZVdlYlZpZXcgPSBbX2NvbmZpZ3VyYXRpb24gX2Fs
dGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXNdKQogICAgICAgICAgICAgX2dlc3R1
cmVDb250cm9sbGVyLT5zZXRBbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdlKGFsdGVy
bmF0ZVdlYlZpZXctPl9wYWdlLmdldCgpKTsKQEAgLTU2NzgsNyArNTY3OCw3IEBAIC0gKHZvaWQp
X3NldElucHV0RGVsZWdhdGU6KGlkIDxfV0tJbnB1dERlbGVnYXRlPilpbnB1dERlbGVnYXRlCiAg
ICAgfTsKIAogICAgIGlmIChpbnB1dERlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0Rm9ybUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2Ut
PnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQog
ICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5t
bQppbmRleCA3YWQwNzNiOGNkNmRkNDIwM2UxYTc2MDU4ZjdjN2RmMmE5ZjhhZDdiLi4yYWRlZWE3
NjBjNjk4YjE4YWU1OTFlNTcwNTcxMzI5NWYyNGM1NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCkBA
IC03Miw3ICs3Miw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxl
Z2F0ZQogLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdh
dGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3Nlc3Npb24t
PnNldENsaWVudChkZWxlZ2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CisgICAgX3Nlc3Npb24tPnNldENs
aWVudChkZWxlZ2F0ZSA/IG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CiB9CiAKIC0gKE5TU3RyaW5nICopc2Vzc2lvbklkZW50
aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRl
eCBiMzdiMDUwNTNmMTI0YWNiNzBmZDZhZGU2ZGY0MjBmZTgyNWQ1NGNmLi4wZGQ0MDlhNDNkZTY1
MzAwYzlmMGNjODU0NDdhYzJmNzEzZWM5NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0zOCw2ICszOCw3IEBAIEBlbmQKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCBmaW5hbCA6
IHB1YmxpYyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGll
bnQoX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCiAgICAg
ICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC03NSw3ICs3Niw3IEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBtX3JlbW90ZUluc3BlY3Rv
clByb3h5ID0gV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKCk7Ci0gICAg
bV9yZW1vdGVJbnNwZWN0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6X1dLUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQ+KHNlbGYpOworICAgIG1fcmVtb3RlSW5zcGVjdG9y
Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xp
ZW50PihzZWxmKTsKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXRDbGllbnQobV9yZW1v
dGVJbnNwZWN0b3JDbGllbnQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA4ZDJm
ODhhZTAwMzJhMGQ5MzQ1ZTY4MDBhOTc4NThiNDI4YTRkNmQ5Li4wNjg3MGQyMWRlZTdjYTRmODlk
YjllMzQyZjZmMGY1ZmQzZjU0YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3IEBAIGlubGluZSB2
b2lkIHJlYWR5U1FMaXRlU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+
JiBzdGF0ZW1lbnQsIFNRCiAgICAgICAgIHN0YXRlbWVudCA9IG51bGxwdHI7CiAgICAgfQogICAg
IGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlU3RhdGVtZW50PihkYiwgc3RyKTsKKyAgICAgICAgc3RhdGVtZW50ID0gbWFrZVVuaXF1
ZTxTUUxpdGVTdGF0ZW1lbnQ+KGRiLCBzdHIpOwogICAgICAgICBpZiAoc3RhdGVtZW50LT5wcmVw
YXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQcmVwYXJpbmcgc3Rh
dGVtZW50ICVzIGZhaWxlZCIsIHN0ci5hc2NpaSgpLmRhdGEoKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IGQyYWY2NGJhZDg2YThhMzNmMTMzNTQ3MjU4MWI3MDJlNDFhNjdl
YzIuLjIxODY2MDQ1MTkyNzY5YmU2ZGZmODU5YTYzMjA0M2Q1MTM1NjljMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIGd1aW50IHNpZ25hbHNbTEFT
VF9TSUdOQUxdID0geyAwLCB9OwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQogCiBjbGFz
cyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
biogc2Vzc2lvbikKICAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKQEAgLTIyMyw3ICsyMjQs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmpl
Y3QqIG9iamVjdCkKIAogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcg
V2ViQXV0b21hdGlvblNlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0
U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpmcm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRh
KCkpKTsKLSAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikpOworICAgIHNlc3Npb24tPnBy
aXYtPnNlc3Npb24tPnNldENsaWVudChtYWtlVW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
PihzZXNzaW9uKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlz
cG9zZShHT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggOTdlOTI1
NjAxNzczN2I3NjY1YWNjOGViMmYzNThlYjJlYzU5MDBiOS4uMjg1OGRmNmYzNGQ0ZmE2MjEyMDli
ZjFlYjFlMTA4ODVhZDA1ZTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNTYsNiAr
NTYsNiBAQCBjbGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbDogcHVibGljIEFQSTo6Q29udGV4
dE1lbnVDbGllbnQgewogCiB2b2lkIGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyku
c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4o
d2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldENvbnRleHRN
ZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKaW5kZXggZDMyYjU5YzU0
NzY2N2E3ZWM4NzcxODEwNTJiZDFhNzQ5YzBkYmMxYy4uYTM3M2IyOTQ1NzE2NzkxYTJkNGMzMDdi
ZDVlMGE5MjljODE0MGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQuY3BwCkBAIC01Niw1ICs1Niw1IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVuCiAKIHZvaWQg
YXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRl
eHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdl
YkNvbnRleHQpLnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdl
YmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlYWQ0ZjIzNDk5MTY3
MDRkMTdkMWYyMzA2NDA4OWY3YTFhMDQ1OTRmLi5lNzcxZGQ3MTg3ZTU4NTlhZGJkNWEwMTZmOGNh
OTM1ZDI4ZTg0YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC0xMTgsNSArMTE4LDUgQEAgY2xh
c3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7CiAK
IHZvaWQgYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2Vi
Q29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4
dCkuc2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4od2Vi
Q29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0
KS5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMTgwODNlNzY5N2E1MTM5OGYyZWUwOTRj
ZGIwNjhjMjA4MzdiMWZhLi45YjU4MThhOTgzNmYzNzYyZDg5NjIyZTM2MmMzZmM4YjJkM2ViZmQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZp
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCB2b2lkIHdlYmtpdEZh
dmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3Qg
U3RyaW5nJiBwYQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2VQ
cml2YXRlKiBwcml2ID0gZGF0YWJhc2UtPnByaXY7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlID0g
c3RkOjptYWtlX3VuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNl
LT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRh
dGFiYXNlKSk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbWFrZVVuaXF1ZTxJY29uRGF0YWJh
c2U+KCk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJL
aXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CiAgICAgSWNvbkRhdGFiYXNlOjpkZWxh
eURhdGFiYXNlQ2xlYW51cCgpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0
cnVlKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQo
V2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29u
dHJvbGxlci5jcHAKaW5kZXggNGY5ODBkNGVlMjU4YWNhYzQ1NTgzMjNjYTdiZDcxY2NkZjNiZWVi
MS4uNzY3NWM5Y2IzYTVlZGFmODg2NGQxN2ExNzkyMTdjYjk0MjMzNjViOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9s
bGVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9s
bGVyQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF9maW5kX2NvbnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAog
ICAgIFdlYktpdEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxlciA9IFdFQktJVF9GSU5EX0NP
TlRST0xMRVIob2JqZWN0KTsKLSAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKKyAgICBn
ZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVu
dD4oZmluZENvbnRyb2xsZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0RmluZENvbnRyb2xs
ZXJHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAppbmRleCAxMzRkMWM2Y2ViZTU2N2Zj
NTRkOTcwZjg3NmJlMDI5MzFkMzI4MjJkLi5iYzY3YTM1N2RjMDc0NDVhMzUyOGY4MGYwYWJkNzlk
MDdjM2JjMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRGb3JtQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGb3JtQ2xpZW50LmNwcApAQCAtNDgsNSArNDgsNSBAQCBjbGFzcyBGb3JtQ2xpZW50
IGZpbmFsIDogcHVibGljIEFQSTo6Rm9ybUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoRm9ybUNsaWVu
dFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQ
YWdlKHdlYlZpZXcpLnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50Pih3
ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Rm9ybUNsaWVu
dChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IDJlMTU5NDVkZmFkMjljMzE1NTBkMWFkM2M0ZGQxNDk4YmU3YjcyMDQuLjhj
YmE0MjJlZDVlMzhiZjg0Yzc2MDU5NGQ2Y2YwZjY1ODhjYmVhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25N
YW5hZ2VyLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0
aW9uTWFuYWdlclN0YXJ0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlcikKICAgICB9
CiAKICAgICBpZiAoIW1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlcikgewotICAgICAgICBt
YW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2NsdWVH
ZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJv
dmlkZXIgPSBtYWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgICAg
ICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeSht
YW5hZ2VyLT5wcml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAgICB9CiAgICAgbWFuYWdlci0+
cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9jYXRpb25Qb3NpdGlv
biYmIGNvcmVQb3NpdGlvbiwgT3B0aW9uYWw8Q1N0cmluZz4gZXJyb3IpIHsKQEAgLTMxMiw3ICsz
MTIsNyBAQCBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdl
ckNyZWF0ZShXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcgogewogICAgIGF1dG8qIG1hbmFnZXIgPSBX
RUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfR0VPTE9D
QVRJT05fTUFOQUdFUiwgbnVsbHB0cikpOwogICAgIG1hbmFnZXItPnByaXYtPm1hbmFnZXIgPSBw
cm94eTsKLSAgICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlv
blByb3ZpZGVyPihtYW5hZ2VyKSk7CisgICAgcHJveHktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8
R2VvbG9jYXRpb25Qcm92aWRlcj4obWFuYWdlcikpOwogICAgIHJldHVybiBtYW5hZ2VyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29u
TG9hZGluZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRJY29uTG9hZGluZ0NsaWVudC5jcHAKaW5kZXggYjhmMDFmYjI0ZmYyNzY1NGMwYWQ2MDlhZGQz
MjQxOTVlZTQxY2E1OS4uNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2RlYjI1ZmRhYTI3ZjY2YzUyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxv
YWRpbmdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29u
TG9hZGluZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgSWNvbkxvYWRpbmdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAg
ICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKQEAgLTYxLDUgKzYyLDUgQEAgY2xhc3MgSWNvbkxv
YWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CiAKIHZvaWQgYXR0
YWNoSWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAg
ICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2Vi
Vmlld0dldFBhZ2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJY29u
TG9hZGluZ0NsaWVudD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CmluZGV4IGE5M2ZmMjViMzlhMjkyNTYwMGQyYzRhZWNjZWNiYzc1NzBkNWRmM2QuLjkyNjJhODRk
ZWNlMjViZjBiZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAKQEAgLTE3OSw1ICsxNzksNSBAQCBjbGFzcyBXZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50IHsKIAogdm9pZCBh
dHRhY2hJbmplY3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJD
b250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0
KS5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluamVjdGVk
QnVuZGxlQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nl
c3NQb29sKHdlYkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2Vi
S2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyLmNwcAppbmRleCAyMzZlODFjMTM5MGIzZWMzYzE1NDkxODY4NmJhZmE1ZTUzODY0
Njg3Li41NTE2MzY0NDc3NTU3NDdiNzBhYzVlNzZiMWQxMDRkNjFjMGI1Y2E4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFdlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyOjpXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJvCiAgICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobm90aWZpY2F0aW9uTWFuYWdlcikK
IHsKICAgICBBU1NFUlQobV9ub3RpZmljYXRpb25NYW5hZ2VyKTsKLSAgICBtX25vdGlmaWNhdGlv
bk1hbmFnZXItPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlk
ZXI+KCp0aGlzKSk7CisgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihtYWtl
VW5pcXVlPE5vdGlmaWNhdGlvblByb3ZpZGVyPigqdGhpcykpOwogfQogCiBXZWJLaXROb3RpZmlj
YXRpb25Qcm92aWRlcjo6fldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCA1
YmNlZjY4ZjY1ZDIzMTg5ODBjZjkxZGFlNTkzZDc2NjcxNDhhOTg5Li44OTZlMTNkYWQ5N2JlN2Zm
Nzc2YzAzYmY2ZTdkMDI3ODJlMDMyMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMjUsNiArMjI1LDYgQEAgY2xh
c3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoVUlDbGll
bnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0
UGFnZSh3ZWJWaWV3KS5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50Pih3ZWJW
aWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0VUlDbGllbnQobWFr
ZVVuaXF1ZTxVSUNsaWVudD4od2ViVmlldykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNw
cAppbmRleCA0OGIzOGVhYzA4ZDkxMmM5NjM5ZWY1NTA5NGIxMGYxZmZhZDFkOWY5Li4yMzZmMmJm
YjUxN2U5NzQ5ODRhNWI5MDQ0MjhiNDEyZDQ3MmFmMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50X21h
bmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcihXZWJLaXRVc2VyQwogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBu
YW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3Jt
YWxXb3JsZCgpKTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtl
VW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZy
b21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAg
IHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApAQCAtMjg4LDcgKzI4OCw3IEBA
IGdib29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVz
c2FnZV9oYW5kbGVyX2luX3dvcmxkKFdlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod29ybGRO
YW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlx
dWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVU
RjgobmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgICAgIFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xp
ZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0VXNl
ckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5n
ZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggYmZjNTY3Y2VkNWJiMTcwMWQzYWM5Mjc2N2FlYmFh
NDJkYjJjMzk3YS4uNTQ0ZDllMjU1ODc1YTVmMDdlOTM1OWQ2NTdiNDUyYWE4YzdkYzQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKQEAgLTM2Nyw5ICszNjcsOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQod2Vi
Q29udGV4dCk7CiAKICAgICBwcml2LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBhZG9wdEdSZWYod2Vi
a2l0R2VvbG9jYXRpb25NYW5hZ2VyQ3JlYXRlKHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50
PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKSk7Ci0gICAgcHJpdi0+bm90aWZpY2F0aW9u
UHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihw
cml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+
KCksIHdlYkNvbnRleHQpOworICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0gbWFrZVVu
aXF1ZTxXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBs
ZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250ZXh0KTsKICNpZiBQ
TEFURk9STShHVEspICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIHByaXYtPnJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5yZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcj4od2ViQ29udGV4dCk7CiAjZW5kaWYKIH0KIApAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQg
d2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgZ2Jvb2xlCiAgICAgICAgICAgICBnX3dhcm5pbmcoIk5vdCBlbmFibGluZyBh
dXRvbWF0aW9uIG9uIFdlYktpdFdlYkNvbnRleHQgYmVjYXVzZSB0aGVyZSdzIGFub3RoZXIgY29u
dGV4dCB3aXRoIGF1dG9tYXRpb24gZW5hYmxlZCwgb25seSBvbmUgaXMgYWxsb3dlZCIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9t
YXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNv
bnRleHQpOworICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVu
aXF1ZTxXZWJLaXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKICAgICB9IGVsc2UKICAgICAg
ICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG51bGxwdHI7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAK
aW5kZXggYjIzOWFjNGUxOWU2M2QzM2E4NjlkZWZiNjZmYzNjMGI0NTAwYjc4NS4uZDMzNjRkYTZj
MDhhYTlhYzdhNDY1OGJlOThhZmM0ZTcyNjdmYTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTcyNSw3ICs3MjUsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQog
CiAgICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQu
Z2V0KCksIHdlYlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVs
YXRlZFZpZXcpOwogCi0gICAgcHJpdi0+bG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOworICAgIHByaXYtPmxvYWRPYnNlcnZlciA9
IG1ha2VVbmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdl
KHdlYlZpZXcpLnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVy
KTsKIAogICAgIC8vIFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNv
bnN0cnVjdGlvbi4KQEAgLTc0MSw3ICs3NDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3
Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAKICNpZiBQTEFURk9STShXUEUp
Ci0gICAgcHJpdi0+dmlldy0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViVmlld0NsaWVu
dD4od2ViVmlldykpOworICAgIHByaXYtPnZpZXctPnNldENsaWVudChtYWtlVW5pcXVlPFdlYlZp
ZXdDbGllbnQ+KHdlYlZpZXcpKTsKICNlbmRpZgogCiAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBh
ZnRlciBhdHRhY2hVSUNsaWVudFRvVmlldygpIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpzZXRVSUNs
aWVudCgpIGNhbGxzIHNldENhblJ1bk1vZGFsKCkgd2l0aCB0cnVlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBmMDlkNmM3
ZTkyMDY4M2E3NTY2NTI3Njk2N2U3NDdjYzZjZWViNDgxLi4wNmIzYjgzNjA2NWQ5ZjY2YTA3OThh
MjA5NTUxM2NhODY4YjMxYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYWdlQ2xpZW50SW1w
bDo6UGFnZUNsaWVudEltcGwoR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQogLy8gUGFnZUNsaWVudCdz
IHB1cmUgdmlydHVhbCBmdW5jdGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jh
c2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsK
IH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJD
b3JlOjpSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcAppbmRleCAzMWUwOTczZmUxMDAzYzZlYTY1
MjMwNjFhNjdjOTQ5ZDUzZWJkNmI3Li4yZDFjMmNiMzY4YTk5MzMxNjk3NDI0NmEwZWQ1OTljMjhk
Y2FlNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEVtb2ppQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRFbW9qaUNob29zZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0RW1vamlDaG9vc2VyU2V0dXBFbW9qaVNlY3Rpb25zKFdlYktpdEVtb2ppQ2hvb3NlciogY2hv
b3NlciwgR3QKICAgICAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0g
bnVsbHB0cjsKICAgICB9OwogCi0gICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1Rp
bWVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2Vj
dGlvbnMpKTsKKyAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBtYWtl
VW5pcXVlPENhbGxiYWNrVGltZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOwogICAgIGNo
b29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0UHJpb3JpdHkoR19QUklPUklU
WV9ERUZBVUxUX0lETEUpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1l
ci0+c2V0TmFtZSgiW1dlYktpdEVtb2ppQ2hvb3Nlcl0gcG9wdWxhdGUgc2VjdGlvbnMgdGltZXIi
KTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnN0YXJ0UmVwZWF0
aW5nKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAK
aW5kZXggMGY2NzQ4NjQ1MmNkMWZhODdhODI4NjJlN2U2MDU3MzRkZmMzNTk2OC4uZWEwYmMyZGVh
MWY0NWE4MjQyNGEzMmJjMzU4MzFjYWRhNDNhYmNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMTA1LDEzICsxMDUsMTMgQEAgdm9pZCBSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdCogcmVxdWUKICAgICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAgIGF1dG8gdXNlckNv
bnRlbnRNYW5hZ2VyUmVzdWx0ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFkZCh1c2VyQ29udGVu
dE1hbmFnZXIpOwogICAgIGlmICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQuaXNOZXdFbnRyeSkg
ewotICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9y
IiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3Js
ZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vha19y
ZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05v
dGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogCiAgICAg
YXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RB
bmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5k
YXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4
KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgR1N0cmluZyogaHRtbCA9IGdfc3RyaW5nX25ldygK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5z
cGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5z
cGVjdG9yLmNwcAppbmRleCAwZjAxNzExZTc5NjFlOGIwMGM1ZTU3NGQyODg1MGQwNWIyNDFmNmVj
Li5mMTBhMGRhNmQwMzNlOGZlMTI0ODdmNjgyNWY4YzBjNzg2ZDE4YmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3Bw
CkBAIC0zNjAsNyArMzYwLDcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRXZWJJbnNwZWN0
b3JDcmVhdGUoV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvcikKIHsKICAgICBXZWJLaXRX
ZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBOVUxMKSk7CiAgICAgaW5zcGVjdG9yLT5wcml2
LT53ZWJJbnNwZWN0b3IgPSB3ZWJJbnNwZWN0b3I7Ci0gICAgd2ViSW5zcGVjdG9yLT5zZXRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOwor
ICAgIHdlYkluc3BlY3Rvci0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xp
ZW50PihpbnNwZWN0b3IpKTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDFiOWRkOGQxZjQ2MDIxNGY1YTc3MjY3MmMyZmI2NTM3MGI1MjBjNWUuLjg4YjNjZjQzYmZl
NjhlZTk3YzczMWI3NjRkNDQ5OTBhN2JmYzVhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC01NjYsNyArNTY2
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBv
YmplY3QpCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmlld1dpZGdldCwgUGFz
dGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdCgpKTsKIAogICAgIFdlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKG9iamVjdCktPnBy
aXY7Ci0gICAgcHJpdi0+cGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudElt
cGw+KHZpZXdXaWRnZXQpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFBhZ2VD
bGllbnRJbXBsPih2aWV3V2lkZ2V0KTsKICAgICBwcml2LT5kaWFsb2cgPSBudWxscHRyOwogfQog
CkBAIC0xMjIwLDcgKzEyMjAsNyBAQCBHZXN0dXJlQ29udHJvbGxlciYgd2Via2l0V2ViVmlld0Jh
c2VHZXN0dXJlQ29udHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldwogewogICAgIFdl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlm
ICghcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9s
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJW
aWV3QmFzZSksIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmll
d0Jhc2UpKTsKKyAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEdl
c3R1cmVDb250cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgbWFrZVVuaXF1ZTxUb3Vj
aEdlc3R1cmVDb250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVybiAqcHJpdi0+Z2Vz
dHVyZUNvbnRyb2xsZXI7CiB9CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIERyYWdBbmREcm9wSGFu
ZGxlciYgd2Via2l0V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmll
d0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIpCi0gICAgICAg
IHByaXYtPmRyYWdBbmREcm9wSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0FuZERyb3BI
YW5kbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5k
bGVyID0gbWFrZVVuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOwog
ICAgIHJldHVybiAqcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyOwogfQogI2VuZGlmIC8vIEVOQUJM
RShEUkFHX1NVUFBPUlQpCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3
QmFzZQogICAgIGlmIChwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIpCiAgICAgICAgIHByaXYt
PnZpZXdHZXN0dXJlQ29udHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwogICAgIGVsc2Ugewot
ICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAg
cHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgICAgIHByaXYtPnZpZXdHZXN0
dXJlQ29udHJvbGxlci0+c2V0U3dpcGVHZXN0dXJlRW5hYmxlZChwcml2LT5pc0JhY2tGb3J3YXJk
TmF2aWdhdGlvbkdlc3R1cmVFbmFibGVkKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDJjYWIyZTA1Mzg2ZDQyYjM3MWY0NDA2YWI3MWE3
ZjY1OTMwZjdkNzcuLjE0NjAzZDVhZmViYWY2ZGVlMDExOTc5NTc3MDM4ODM0OWQ0ZTdiMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04OTUsNiArODk1
LDcgQEAgLSAodm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogewogICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGll
bnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdD
bGllbnQoV0tWaWV3ICp3a1ZpZXcpCiAgICAgICAgICAgICA6IG1fd2tWaWV3KHdrVmlldykKQEAg
LTkzMiw3ICs5MzMsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW3NlbGYgcmVz
cG9uZHNUb1NlbGVjdG9yOkljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNlbGVjdG9yKCldKQot
ICAgICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9kYXRhLT5faW1w
bC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGll
bnQ+KHNlbGYpKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29u
ZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbgpA
QCAtOTQ0LDcgKzk0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3Qp
ZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxsb2NdIGlu
aXRdOwotICAgIF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3
SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworICAgIF9kYXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2Vs
ZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCiAgICAg
W3NlbGYgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDg1MTI5YTU0
ODdjOWZmYmVkNTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3NTg4NTczZGZmNDM2
MDMzNzdlZjhkMTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6OlZpZXcmIHZpZXcp
CiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fc2Nyb2xs
R2VzdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkK
IHsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6
Omhvc3RGaWxlRGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcu
cGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRz
RGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkxMDlhYTI4NTViOGJi
NDE1NzE3MDQ0Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQwMzBjZTA0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC00Miw4ICs0
Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tXUEUgewogCiBWaWV3
OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VD
b25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xpZW50KG1ha2VVbmlx
dWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFn
ZUNsaWVudEltcGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAwIH0KICAgICAsIG1f
dmlld1N0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwg
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgfQogICAgICwg
bV9iYWNrZW5kKGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6flZpZXcoKQogdm9p
ZCBWaWV3OjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0NsaWVudD4mJiBjbGll
bnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OlZpZXdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUo
Y2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
cXQvV1BFUXRWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BF
UXRWaWV3LmNwcAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1YjEzNTYxY2IzNjZj
Li5iNGYyN2I2ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCkBAIC0xNTAsNyAr
MTUwLDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0
V2ViVmlldyosIFdlYktpdExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChzdGF0dXNTZXQpIHsK
ICAgICAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1ZXN0UHJpdmF0ZSh2
aWV3LT51cmwoKSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BF
UXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZp
ZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BFUXRW
aWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAgIFFfRU1JVCB2aWV3
LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQogfQpAQCAtMTY2LDcg
KzE2Niw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0
V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9hZFN0YXR1cyA9IFdQ
RVF0Vmlldzo6TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAgIFdQRVF0Vmlld0xv
YWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3RyaW5nKGZhaWxpbmdV
UkkpKSwgbG9hZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
UEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0
Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmll
d0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1JVCB2aWV3LT5sb2Fk
aW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBz
dGF0aWMgdm9pZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3OjpydW5KYXZhU2NyaXB0
KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxiYWNrKQogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BFUXRW
aWV3Pih0aGlzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+
IGRhdGEgPSBtYWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNrLCBRUG9p
bnRlcjxXUEVRdFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3Jp
cHQobV93ZWJWaWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRhKCksIG51bGxwdHIs
IGpzQXN5bmNSZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3Bw
CmluZGV4IGE4NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQxZjkuLjEzZmQzN2Fl
ZmYyYjY1MzVkNTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcApAQCAtNjUs
NyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4gV1BFUXRWaWV3QmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICghZWdsQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
UEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2
aWV3KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xE
aXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BFUXRWaWV3QmFja2Vu
ZDo6V1BFUXRWaWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERpc3BsYXkgZGlzcGxh
eSwgRUdMQ29udGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29udGV4dD4gY29udGV4
dCwgUVBvaW50ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBj
Y2U1YzQ4MTdhODA0OTE3Y2RjMTk5YzFiMDE2MGUyNTZlOWJlMjk3Li5hNTkxNTBkYjdhNDBkYzdi
YzE1ZGI1MWJlOGVmNGUxMTM1NmRjNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzMs
MTEgKzczLDExIEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQg
PSAzMDBfczsKIHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQ
YWdlTG9hZFN0cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwogCiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAgIDogbV9jbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQorICAgIDogbV9jbGll
bnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQogICAgICwgbV9m
cm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5
UmVmKCkpKQogICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9kb21haW5O
b3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1f
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmllcihtYWtlVW5pcXVlPEF1dG9t
YXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9sb2Fk
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21hdGlvblNlc3Npb246OmxvYWRU
aW1lckZpcmVkKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDZiMDli
YWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3ZTg3YzUxZGM0YWU5
ZDYzOWIxZDRmMzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9w
dGlvblNldDwKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VF
eHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5j
b2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdl
LmFyZ3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIp
LCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAxMGE4ZTQyNDEzYjI5YWZmYjYzNzdk
ODRhMDliZTUxMWJkMjUxZDVjLi5kZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFhNDAxNTdjOTRmMmZh
OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9t
YXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChpZCA8X1dLQXV0b21h
dGlvblNlc3Npb25EZWxlZ2F0ZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3MjM5NzMyMDVjYzZk
ZjRjYzY2YTY3OTA2YzAyOWIwZC4uMDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlkZjQyYzIzYzE0ZDYw
NWFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRp
bmdEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2Fk
aW5nRGVsZWdhdGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3ICopOwog
ICAgIH5JY29uTG9hZGluZ0RlbGVnYXRlKCk7CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNzIEljb25M
b2FkaW5nRGVsZWdhdGUgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50
IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xp
ZW50KEljb25Mb2FkaW5nRGVsZWdhdGUmKTsKICAgICAgICAgfkljb25Mb2FkaW5nQ2xpZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0Rl
bGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5tbQppbmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIyYmViNWJjYmQ3YzBkNzRjZmI0Li4x
NjNmYjk1MmVlMGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2OGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KQEAgLTQ0
LDcgKzQ0LDcgQEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fkljb25Mb2FkaW5nRGVsZWdhdGUoKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4gSWNvbkxvYWRpbmdEZWxl
Z2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
SWNvbkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tJY29uTG9h
ZGluZ0RlbGVnYXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmRlbGVnYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGE1MWEyMjM2MjM4NDE1
MWFiMTFkNDg5NDM2OWY4YTE4NTgwMDY3ZGEuLmY1MTM3ZjljYzczMTYzODhlNjFkZTEwNzczZmYz
NDI4NTYyNTA1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQpAQCAtNzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6On5VSURlbGVnYXRlKCkKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xp
ZW50PiBVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVudCgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOwogfQogI2VuZGlmCiAKIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPFdLVUlE
ZWxlZ2F0ZT4gPiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDQ4YzJiMmI0ZTA2MTA2OTI3MmFlYjhiOTRhMjM0ZWFhOTI2YWY3NmQuLjkxY2Y5
NDgwYzc1MThjZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNv
dXJjZVByb3h5IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyLCBwdWJsaWMg
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgU291cmNlUHJveHkodWludDY0X3QgaWQsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNl
KQogICAgICAgICA6IG1faWQoaWQpCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRo
Q29uc3RyYWkKICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsKICAgICAgICAgc2V0
dGluZ3MgPSBzb3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNv
bnRhaW5zKGlkKSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8
U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2Up
KSk7CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlk
LCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5lcnJv
ck1lc3NhZ2UpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwgaW52YWxpZENvbnN0
cmFpbnRzLCBXVEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXgg
OWNhNmZhMzUzNDk2MDE4MDNkZjVkM2QxYjJhYmEzMTY1NTc0MGMzOS4uOWJkZGI5OTA5ZGY3ZThm
ZWYxZTU0ODA2Y2JlNmJjNWM0MGNmYzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAt
MzksNiArMzksNyBAQCBjbGFzcyBTaGFyZWRNZW1vcnk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQcm94eSYp
OwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzMDcw
ZDU3NDQzZmRmNzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQyZmEyYTA4NjA0MTdj
NmNmODBkN2JjZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIGlmICghW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFN1cHByZXNz
TWVtb3J5UHJlc3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhh
bmRsZXIoKTsKIAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisgICAg
c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5
TGluayhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9ic2UKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlMaW5rID0gc3Rk
OjptYWtlX3VuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKKyAgICBhdXRvIGRpc3BsYXlM
aW5rID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKICAgICBkaXNwbGF5TGlu
ay0+YWRkT2JzZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAgbV9kaXNwbGF5TGlu
a3MuYXBwZW5kKFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggNWMyMWNh
NzVhMTgyOWM1MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3YjQ2MDU0OGNlMGY4
NmQ3YTVkMTE3YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhh
bmRsZXIgPSBbYWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1Vu
ZXhwZWN0ZWRseVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tncm91bmQgYWN0aXZpdHkgdGlt
ZWQgb3V0Iiwgd2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAgbV91bmV4cGVjdGVkQWN0aXZp
dHlUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1l
cj4oV1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRB
Y3Rpdml0eUR1cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRB
Y3Rpdml0eVRpbWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOwogICAg
IGNvbXBsZXRpb24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQppbmRleCBmMTc2ZjFhNjVhOTkyYzUxYWMzNDRlZDAwODg1N2UwMTNl
Zjk5NGIxLi4zN2Y1NGRhNGFkMmQ2YTI1NDdjMWRkMzU5Yjg5NWM4YTU0YTI1OTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTMzNCw3ICsx
MzM0LDcgQEAgc3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0cmFja2luZ0FyZWFPcHRpb25z
KCkKIAogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0
ZT4gKnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAg
OiBtX3ZpZXcodmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VD
bGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VV
bmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCiAgICAgLCBtX3BhZ2Uo
cHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKSkKICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKG1fcGFn
ZS0+cHJlZmVyZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAgICwgbV9pbnRyaW5zaWNDb250
ZW50U2l6ZShDR1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0cmljLCBOU1ZpZXdOb0ludHJp
bnNpY01ldHJpYykpCkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0lt
cGwoTlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldl
YgogICAgIHZpZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQ
bGFjZW1lbnRUb3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fcGFn
ZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVl
bkNsaWVudD4odmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5p
cXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwogI2VuZGlmCiAKICAgICBXZWJQ
cm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0xNzMwLDkgKzE3MzAs
OSBAQCBDR1NpemUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1wbDo6Y3JlYXRlRHJh
d2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgaWYgKFtbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXQy
VXNlUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFsdWVdKQotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3Bh
Z2UsIHByb2Nlc3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9j
ZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc1VzaW5n
VUlTaWRlQ29tcG9zaXRpbmcoKSBjb25zdApAQCAtMzM3NSw3ICszMzc1LDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGV4
dEluZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yLCBXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAgICAgaWYgKCFtX3Rl
eHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9y
ZWxlYXNlZCgpKTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOwog
CiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW1ttX3Zp
ZXcgd2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcgY29udmVydFJlY3Q6dGV4dElu
ZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5p
bF1dOwogICAgIG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5k
aWNhdG9yLCBOU1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRl
cyksIGxpZmV0aW1lKTsKQEAgLTQzNzcsNyArNDM3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNh
dmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVt
KQogVmlld0dlc3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRy
b2xsZXIoKQogewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgbV9nZXN0
dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPiht
X3BhZ2UpOworICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICptX2dlc3R1cmVDb250cm9sbGVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5ZTU4Y2NkYTEwZjNl
YTQ0NGMyNzYuLjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2NWQyODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXAKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNr
aW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3
U2l6ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAg
ICAgICBtX2JhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZv
LnZpZXdTaXplLCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7
CiAKICAgICBtX2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAK
QEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuYwogICAgIH0KIAogICAg
IGlmICghbV9kcmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdN
b25pdG9yPihtX3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBtYWtl
VW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRv
cj4obV93ZWJQYWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0b3ItPnN0YXJ0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJkMDM4NmFjZjVkOGFkNTM1Yzc5
MTJhODg2Y2JkMGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2NjVlZTFiNzg2OTZh
NmE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNh
bHRTdG9yYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9y
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGFzaFNhbHRGb3JP
cmlnaW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEu
dmFsdWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgIGF1dG8gaGFzaFNhbHRG
b3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5
T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFs
dWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgaGFzaFNhbHRGb3JPcmln
aW4tPmxhc3RUaW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0VGltZVVzZWQp
OwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29t
cGxldGVEZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKIAogICAgICAg
ICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgICAg
ICBhdXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZv
ck9yaWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwg
V1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JP
cmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3Jp
Z2luKSwgV1RGTW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsK
IAogICAgICAgICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47CiAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5OWE1MDM0NGYzMTI1
MWY1ZTk2ODQuLmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1Y2E3YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHAKQEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5
TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbAogCiAg
ICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hvdWxkVGFrZUFzc2VydGlvbikg
ewogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93
bmxvYWRVSUFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6
OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBt
YWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktp
dCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAog
ICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdB
c3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRl
OjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3Nl
cnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IlVJUHJvY2VzcyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb25zIGZvciBVSVByb2Nl
c3MgYW5kIE5ldHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDNkZWY1ZDc5ZjA3Y2I5MTQwYjgyNTYyZGI5ZjZmMmJj
NmQwZjcyZjYuLjU2MDZjNTExNjUzNGY0M2NmYzgwNmQ1MTFkNDFlZDk4Y2ZiMjUxNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTUyLDYgKzUyLDcg
QEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBE
cmF3aW5nQXJlYVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcm90ZWN0ZWQg
SVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEcmF3aW5nQXJlYVByb3h5KTsKIAogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cAppbmRleCBlY2FhYzMwMWI0YmRmNDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRmNjQwLi5mNGI3YmVh
NjU4NTA5OTFlOTQ5NGE2MjIzZDU0Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTEsNyAr
OTEsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBh
ZHMoY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZAogICAgIGZvciAoYXV0byogZ2FtZXBhZCA6
IGluaXRpYWxHYW1lcGFkcykgewogICAgICAgICBpZiAoIWdhbWVwYWQpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VUlHYW1lcGFkPigqZ2FtZXBhZCk7CisgICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBh
ZC0+aW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgcG9vbCA6IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcykKQEAgLTEw
Niw3ICsxMDYsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25u
ZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkKQogICAgICAgICBtX2dhbWVwYWRzLmdyb3co
Z2FtZXBhZC5pbmRleCgpICsgMSk7CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5p
bmRleCgpXSk7Ci0gICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3Vu
aXF1ZTxVSUdhbWVwYWQ+KGdhbWVwYWQpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgp
XSA9IG1ha2VVbmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKIAogICAgIHNjaGVkdWxlR2FtZXBh
ZFN0YXRlU3luYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdo
UGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAppbmRleCA3ZDU2YjBhMjQ2
M2RlZGYxNjY5NThjMjhmZmI3NWFhMGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVlZTJlZmExYmQwNWEy
YTc1NjExMWExNWQ5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdo
UGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKQEAgLTMyLDYgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3Mg
SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNz
VXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBkM2Qw
M2NlZWQ4MzEzYmNhMjdiMzkxNWFjMzdjZTZlM2VkNzMwOTkuLmVlYjQwOTg5NWNlMGUyM2M5ZmMz
ZTk1ZjM1ODE4MGZjOWFiMDQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29s
IGJhY2tncm91bmQpCiBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVE
b3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewog
ICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9k
b3dubG9hZFByb3h5TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CiAK
ICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJv
Y2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBXZQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2Fk
QXNzZXJ0aW9uKCkKIHsKICAgICBBU1NFUlQoIW1fdXBsb2FkQXNzZXJ0aW9uKTsKLSAgICBtX3Vw
bG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vz
c0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3Vu
ZGVkTmV0d29ya2luZyk7CisgICAgbV91cGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmNsZWFyVXBsb2FkQXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzViODIxM2My
OGZjYjZiOTQwYTEwOTliZTE0MDhmOTA2YTNiOTJiYi4uMWZkYjY2YzE1NWQ4N2IyMjYyZjJhM2Q1
ZTEwZGUyMzkxNDM4YTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxO
ZXR3b3JrUHJvY2Vzc1Byb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKICAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJhYWZm
MWVjMmE2NTQ5MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIuLjQ3YTNlOWIyM2JhMTI2NTE5OGI2
MGVkZGY2YzRkZDk4NmZjZDIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5jcHAKQEAgLTU2LDE0ICs1NiwxNCBAQCBSZWY8V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUAogCiBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShX
ZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChw
cm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlm
aWNhdGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90
aWZpY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92
aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVyKSB7Ci0gICAgICAgIG1fcHJv
dmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7Cisg
ICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCBlYzY0YmM5ZTE2MmNiN2NhMWU3NTM3ZTkzMzFkNGYxMzk1ODdlYzQxLi42Y2Y1
ZTE0ZWE1NjlmMjNkYTg0NzU0MDk2Y2E1MTE0NTNjMjk4YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgdXNpbmcgTGF5ZXJIb3N0aW5nQ29u
dGV4dElEID0gdWludDMyX3Q7CiAjZW5kaWYKIAogY2xhc3MgUGFnZUNsaWVudCA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxQYWdlQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
LmgKaW5kZXggMDFhN2RhN2I4OTFhOTAwNjZjOTBlODQyOWM2NTZiZDcwMGIxNjZiZC4uZWE0Mzky
N2Q0OGQ3NTJiZWI2NzI4MDk0OTljOWFkMGJmZTA3YmM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaApA
QCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKIAogY2xhc3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5QZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggZjZm
NDc5YjFlMDM5MmYzMjIxNjBhNjQ5NGFlYzYyZTBhMDY3OTZkZC4uODQzNjlkMzM0NDA3Y2ZiYzJl
ODNhYTgyN2M1Y2MwZTVkYjkxMjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApA
QCAtNjMsNyArNjMsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFs
aXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYQogI2lmIFBMQVRGT1JNKEdU
SykKIHN0YXRpYyBib29sIHBsdWdpblJlcXVpcmVzR3RrMihjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gc3RkOjptYWtlX3Vu
aXF1ZTxNb2R1bGU+KHBsdWdpblBhdGgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1v
ZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKICAgICBpZiAoIW1vZHVsZS0+
bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1vZHVsZS0+ZnVuY3Rp
b25Qb2ludGVyPGdwb2ludGVyPigiZ3RrX29iamVjdF9nZXRfdHlwZSIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAwMGE5OTE4ODYxNDg3Mzkz
OGE2Y2I0YWJkOTkxNGJjODYyOTQ1Y2Y3Li40Y2UyNjJlOWRjYmI0YjFiMGZmMGFkNWRiOTdlYjk3
ZjM2MDczNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVy
LmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVj
dFRvUHJvY2VzcyhQcm9jZXNzSUQgcGlkKQogCiAgICAgbV9zdXNwZW5kVGltZXIuc3RvcCgpOwog
ICAgIGlmIChtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCi0gICAgICAgIG1fYXNz
ZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldl
YiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fz
c2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29u
dGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJX
ZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9h
c3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50
IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwogICAgIG1fcHJvY2Vzcy5kaWRTZXRB
c3NlcnRpb25TdGF0ZShhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX2Fzc2VydGlvbi0+c2V0Q2xp
ZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkubW0KaW5kZXggNjBmMDJjNjEwZmNkOTg4MzA2MzljNTdiM2U5ZDYxZmYxZmQ1MjVmZC4u
Mjc0YWJkMzAyOWMwMDc3MzM5ZGZlMzc0OGZmMzA2OTdjOWI0OGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEwNyw3ICsxMDcsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcm94eSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIDogRHJhd2luZ0FyZWFQcm94
eShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBhZ2VQcm94eSwgcHJvY2VzcykK
LSAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
VHJlZUhvc3Q+KCp0aGlzKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChtYWtlVW5pcXVl
PFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKIHsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJIHByb2Nlc3MuCkBA
IC0zNzYsNyArMzc2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp1
cGRhdGVEZWJ1Z0luZGljYXRvcihJbnRTaXplIGNvbnRlbnRzU2l6ZSwKIAogdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKQogewot
ICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVMYXllclRyZWVIb3N0PigqdGhpcyk7CisgICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhv
c3QgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKICAgICBtX2RlYnVn
SW5kaWNhdG9yTGF5ZXJUcmVlSG9zdC0+c2V0SXNEZWJ1Z0xheWVyVHJlZUhvc3QodHJ1ZSk7CiAK
ICAgICBtX3RpbGVNYXBIb3N0TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCAzMDAyNWQ0Mjk5ZjNiY2EwNDg1ZDMw
NGQ4MzM1ODE3NjEwYmE1MGJkLi44YTRlNTA0ODE3ZWJjMTI1Y2U4OThjMWMyOTFkOWE2ZTRkNWY1
ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyQ3JlCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9k
ZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIGF1
dG8gbWFrZVdpdGhMYXllciA9IFsmXSAoUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyKSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRp
ZXMubGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsK
ICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENBTGF5ZXIqIGxheWVy
KSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMobGF5ZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVOb2RlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZU5vZGUubW0KaW5kZXggZTg4YmJjNjA4ZDRmYjA1ODM4NGQyOWIyNjk4MTU5
MmVkYTgxNGViYS4uNGZkNGVhMjY5ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBkODQyNDA2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KQEAgLTczLDcgKzczLDcgQEAgUmVtb3RlTGF5ZXJU
cmVlTm9kZTo6flJlbW90ZUxheWVyVHJlZU5vZGUoKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxh
eWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKQogewogICAgIFJl
dGFpblB0cjxDQUxheWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1BsYWluUmVtb3RlTGF5ZXIgYWxs
b2NdIGluaXRdKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVO
b2RlPihsYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVt
b3RlTGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwogfQogCiB2b2lkIFJl
bW90ZUxheWVyVHJlZU5vZGU6OmRldGFjaEZyb21QYXJlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCmluZGV4IGMyNzgx
ZGM4YWRhMzQzMzlmNzllZDg1YTdlM2U5ZmY3NjUyMjI1MjguLjI5ZGZlZmU2Y2I3MmMxMjBhNjFj
YzIyZDBkM2JhNjRhNmQ5NDQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OwogCiBj
bGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Jik7CiAgICAg
flJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5kZXggODZkMGRlZmM2OTY1ZTRm
YTZiYTExNjQ3NjFiYzlhYzcxOThjNzJlNi4uMWE3Njk0M2YyNDViZTFjZDgyMmYxOTYxM2NkZDM1
ZjU0MGE5NGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGluZ1RyZWU7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggNjI5YTljNjUwZDQzYzBkNTYx
YzgxOTMzYmEwZDE0ZThkMzNlYTQ0NC4uMGMxMjZhZTZhZjc1ZTQxMzhhZmQwMDg2ODM5NTY2Mjlm
ZjcwMDIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAt
NjEsNyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4gY3JlYXRlUmVtb3RlVmlldyhw
aWRfdCBwaWQsIHVpbnQzMl90IGNvbnRleHRJRCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXll
clRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7
CiAgICAgYXV0byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0cjxVSVZpZXc+IHZpZXcpIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJv
cGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcp
KTsKICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9IFsmXSAoVUlWaWV3KiB2aWV3
KSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVJT1MubW0KaW5kZXggODFhMmViOWE2MzVkNTk4NDE2MDBmNzgzNTIwNGFjODRiZDZkNWMy
OC4uYjg5MDY4MWU5ZTdhNTEzYmEzNDM2N2NlZjM5ODliZTNiMTlkOWNiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZUlPUy5tbQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgUwogCiAg
ICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAgICAgaWYgKHNjcm9sbENvbnRh
aW5lckxheWVyKCkpCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMp
OworICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUy5tbQppbmRleCBiNTZlMmVhNjRkYTUyMDMxZGZhZjEyOGVjMjQ4Y2QxNWM3MTAwOTI2
Li5kMGJkZDNjNTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFhYjU3ZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
Lm1tCkBAIC00Myw3ICs0Myw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TCiAKIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgV2ViQ29y
ZTo6U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxpbmdOb2Rl
RGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShtYWtlVW5pcXVl
PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2N2MwYjYxNjJlMDY3ODNjZjM3
NmNmNjE5MDdlMi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3OWM3NDUyOTQzNzI5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUs
IFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAg
IDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlVHlwZSwgbm9k
ZUlEKQotICAgICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJN
YWM+KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWly
TWFjPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFj
L1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IGQ4
OTYwY2VjMzBlNDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMuLmI2Y2EzY2JiYTgwODA3YWY3
YjlmNjk5YmU5YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZVJlbW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApA
QCAtNDEsNyArNDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTgogCiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjKHRyZWUs
IG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQ
YWlyTWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNjcm9sbGVy
UGFpck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApp
bmRleCBmNTA1ZTI4MGM0NDI5MGE4MDNkYmRiNjhjOThlZWE2MzBiMWM5YmI2Li44NjhiNTRlNzky
YWYyYWJkOTg2YmM4NjYwMDVjYjEyZjQ1NjgyNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKICAgICB+VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2
aWNlLm1tCmluZGV4IGNhMjZlNTFkN2E0MDY0YWEyODEyN2MwZjAxZDU0YTRlMGFjMjQ0NjMuLjM5
M2IxMzY3MWY2MDE0MTZhNmVkN2MyZmRhYjBjZDJlYjA4MWUzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlk
U2VydmljZS5tbQpAQCAtOTIsNyArOTIsNyBAQCBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlk
U2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZv
aWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAg
IGF1dG8gZHJpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRD
b25uZWN0aW9uKGRldmljZSkpOworICAgIGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlk
RHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwogICAgIC8vIEdldCBhdXRoZW50
aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgogICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2Rl
RW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNh
dG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVy
LmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewogICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5LmgKaW5kZXggODVjZTY5MDYxMTE0NDJiYzY3OWNjN2E3NzViODY4MmRkMTU3
MjhjOS4uZjg1MmJlZDIxMzBiNDdjMmY3ZGQyOThhZDM1NmFlYWM4N2MwMjY4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC00NCw2
ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFz
cyBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHJveHkm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmNwcAppbmRleCA5OWQ2ZWEzMzQxNTNlY2Y0OWQ0NTg0Yzc0M2RjNjgxNjg4NDE1
NTIwLi44NDZhNWFhMjdkZmFiM2QyNzRjZmZhNDg3Mzg2MWYyNTg3ZDE3ZmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vCiAKIFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNz
UG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9v
bCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJv
dmlkZXI+KCkpCisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblBy
b3ZpZGVyPigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KQEAgLTU0LDcgKzU0LDcgQEAgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nl
c3NQb29sKiBwcm9jZXNzUG8KIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFBy
b3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlk
ZXIpCiB7CiAgICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtX3Byb3ZpZGVy
ID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgZWxzZQogICAg
ICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAppbmRl
eCAyY2RjZDE3NjUyOTlmZTc3NjQ5YmFiZjlkZTNlNzRlOGIwZjAwZTM3Li4zMzY0YmNiY2M5MTE4
NGE2YmE3NTQxZWY5MGIwZjk2MDRjZGU0ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBkYXRlUGxheWJhY2tB
dHRyaWJ1dGVzRnJvbU1lZGlhU3RhdGUoV2ViUGFnZQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQYWdlUHJveHkmIHByb3h5LCB1
aW50NjRfdCBlbGVtZW50SUQpCiB7Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CisgICAg
bV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gbWFrZVVuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50Pigm
cHJveHksIGVsZW1lbnRJRCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
OjpjbGVhckZvY3VzZWRNZWRpYUVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJOYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5ZWI5ZDI4YWRkZDViNWIwMDZkNTBiMDhhM2Q3NGZi
NjlkMTYyMzkyLi4xNmE3NTlhYzhhMWZmMzE0NjA1YjA5NDZmZmM1YWE2NTgxOGUwNzQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaApAQCAtNDUsNiAr
NDUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OwogCiBjbGFzcyBXZWJOYXZpZ2F0aW9uU3RhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5hdmlnYXRpb25TdGF0ZSgpOwogICAgIH5X
ZWJOYXZpZ2F0aW9uU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggNjUyOTgyYTgxMmE5ZWZiZWY1MjFh
NmE5ODk5ZmE0YmVlNWZhZjM0Yy4uMWIyOWY3OWRkZmFlYTA3YjllNzI0OWJkNzcyMzg0ZWViZjUz
MGZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2U+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQ
STo6T2JqZWN0Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0Kiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4mJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggYzRiOTJjODNjZmVhMjliMzFlZGJiMzRhYTg0MDI1YmE1YzhiMDNiNy4uYmRhNTlj
ZDgwNTE1NzY0NmIzMDhkMmZkMjM2ZjNkMTE4MjcxZTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9u
dGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogewotICAgIGF1
dG8gdGFyZ2V0QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRB
Z2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CisgICAgYXV0byB0YXJnZXRBZ2VudCA9IG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdl
dEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgp
KTsKIAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2ZhMmI0ZDZkM2MxNjYxYTcwMDNi
Nzc4NTU4ZGE3YzJmZjI0ZjA3ZS4uMGI0MGRiMjc3ODNmZGU5ZDI1NmZmNTI5MmVlYTdlYmZlMzE2
Y2EwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zOTcs
MTUgKzM5NywxNSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdl
Q2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9jb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFr
ZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCiAgICAgLCBtX2hpc3RvcnlDbGll
bnQobWFrZVVuaXF1ZVJlZjxBUEk6Okhpc3RvcnlDbGllbnQ+KCkpCi0gICAgLCBtX2ljb25Mb2Fk
aW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKLSAg
ICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKLSAg
ICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQotICAgICwg
bV9maW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQotICAgICwg
bV9maW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGll
bnQ+KCkpCisgICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJY29uTG9h
ZGluZ0NsaWVudD4oKSkKKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Rm9ybUNs
aWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQor
ICAgICwgbV9maW5kQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQorICAgICwg
bV9maW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkp
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4
dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlm
Ci0gICAgLCBtX25hdmlnYXRpb25TdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYk5hdmlnYXRpb25T
dGF0ZT4oKSkKKyAgICAsIG1fbmF2aWdhdGlvblN0YXRlKG1ha2VVbmlxdWU8V2ViTmF2aWdhdGlv
blN0YXRlPigpKQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cCgq
bV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKICAgICAsIG1fcHJlZmVyZW5jZXMoKm1fY29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIFBhZwogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IG1f
Y29uZmlndXJhdGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSB9CiAgICAgLCBt
X3RyZWF0c1NIQTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1fY29uZmlndXJhdGlvbi0+dHJlYXRz
U0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkKICNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCi0gICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1
bGxzY3JlZW5DbGllbnQ+KCkpCisgICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxB
UEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCiAjZW5kaWYKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX25vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigqdGhpcykKQEAgLTQzNSw5ICs0MzUsOSBAQCBXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIFBhZwogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRoaXMpCiAgICAgLCBt
X2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZVZhbHVlcygpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29u
dHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUo
c3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorICAgICwgbV9pbnNw
ZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKICNl
bmRpZgogICAgICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKIHsKQEAgLTQ3Nyw3
ICs0NzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNl
cnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlz
XSB7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8UnVu
TG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxL
bm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10gewogICAgICAg
ICB0aGlzLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgpA
QCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQb2xpY3lDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmIHBvbGljeUNsCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZv
cm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAgICAgICBtX2Zvcm1D
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4m
JiB1aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7Ci0gICAgICAgIG1fdWlDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogewogICAgIGJvb2wg
aGFzQ2xpZW50ID0gaWNvbkxvYWRpbmdDbGllbnQuZ2V0KCk7CiAgICAgaWYgKCFpY29uTG9hZGlu
Z0NsaWVudCkKLSAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKKyAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAg
IG1faWNvbkxvYWRpbmdDbGllbnQgPSBXVEZNb3ZlKGljb25Mb2FkaW5nQ2xpZW50KTsKIApAQCAt
NjUwLDcgKzY1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2
ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VyCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRD
bGllbnQpCiB7CiAgICAgaWYgKCFmaW5kQ2xpZW50KSB7Ci0gICAgICAgIG1fZmluZENsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
RmluZE1hdGNoZXNDbGllbnQ+JiYgZmluZE1hdGNoZXNDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5k
TWF0Y2hlc0NsaWVudCkgewotICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRNYXRjaGVz
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRpYWdub3N0aWNM
b2cKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAgICBp
ZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29u
dGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnRCYXNlKgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbmplY3RlZEJ1bmRs
ZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Pigp
OworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudD4oKTsKICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5pbml0aWFsaXpl
KGNsaWVudCk7CiB9CiAKQEAgLTc3Niw3ICs3NzYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9w
dAogICAgIH0KIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9y
IHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBh
dXRvIHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4o
KnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKKyAgICBhdXRvIHN1
c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJv
Y2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRl
cmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAogICAgIExPRyhQcm9jZXNzU3dhcHBp
bmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBm
b3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgp
LnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJp
bmcoKSA6IDApOwogCkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0
dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAg
IEFTU0VSVCghbV9mdWxsU2NyZWVuTWFuYWdlcik7Ci0gICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VD
bGllbnQoKS5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOworICAgIG1fZnVsbFNjcmVl
bk1hbmFnZXIgPSBtYWtlVW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBw
YWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpIHx8IChQTEFURk9STShNQUMpICYm
IEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgQVNTRVJUKCFtX3BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIpOwpAQCAtODYwLDIyICs4NjAsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAg
ICBBU1NFUlQoIW1fcGF5bWVudENvb3JkaW5hdG9yKTsKLSAgICBtX3BheW1lbnRDb29yZGluYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsK
KyAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAg
IEFTU0VSVCghbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcik7Ci0gICAgbV9zeXN0ZW1QcmV2aWV3
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0
aGlzKTsKKyAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxTeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogICAgIEFTU0VSVCghbV9jcmVkZW50aWFsc01lc3Nlbmdlcik7Ci0gICAgbV9jcmVkZW50aWFs
c01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gbWFrZVVuaXF1ZTxX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBI
QVZFKFBFTkNJTEtJVCkKICAgICBBU1NFUlQoIW1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOwot
ICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRhYmxl
SW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlciA9
IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogfQog
CkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYXdpbmdBcmVhKHN0
ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmUKIAogI2lmIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX2RyYXdpbmdB
cmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlKSB7Ci0gICAgICAg
IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+
KCp0aGlzKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBPbiBpT1MsIG1h
aW4gZnJhbWUgc2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBvZiB2aXNpYmxlIHJlY3QgdXBkYXRl
cy4KICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LT5zZXRQcm9wYWdhdGVzTWFp
bkZyYW1lU2Nyb2xscyhmYWxzZSk7CkBAIC0xMDA2LDE3ICsxMDA2LDE3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpjbG9zZSgpCiAgICAgbV9sb2FkZXJDbGllbnQgPSBudWxscHRyOwogICAgIG1fbmF2
aWdhdGlvbkNsaWVudCA9IG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpOwog
ICAgIG1fcG9saWN5Q2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOwotICAgIG1fZm9ybUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOwotICAgIG1fdWlDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7Ci0gICAgbV9maW5kQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7Ci0gICAgbV9maW5kTWF0Y2hl
c0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAg
ICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50
PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOwor
ICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgbV9maW5k
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CisgICAgbV9maW5kTWF0Y2hl
c0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICBtX2Rp
YWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRl
eHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCi0gICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxz
Y3JlZW5DbGllbnQ+KCk7CisgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bv
b2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwpAQCAtMTIyNiw3ICsx
MjI2LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9KTsKIAotICAgIGF1dG8gbmF2aWdhdGlv
biA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24oc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5j
b2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhKSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZp
Z2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihtYWtlVW5pcXVlPEFQSTo6U3Vi
c3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwg
dXNlckRhdGEpKTsKICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwg
dXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCwg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9
CkBAIC0yNDE1LDcgKzI0MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVu
dChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVu
dCA9IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOwogICAgIGNvYWxl
c2NlZFdoZWVsRXZlbnQtPmFwcGVuZChldmVudCk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRX
aGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShjb2FsZXNjZWRXaGVlbEV2ZW50KSk7CiAgICAgc2Vu
ZFdoZWVsRXZlbnQoZXZlbnQpOwpAQCAtMjQyMyw3ICsyNDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQoKQogewotICAg
IGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZl
V2ViV2hlZWxFdmVudD4+KCk7CisgICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBtYWtlVW5p
cXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBXZWJXaGVlbEV2ZW50IG5l
eHRXaGVlbEV2ZW50ID0gY29hbGVzY2VkV2hlZWxFdmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5l
eHRDb2FsZXNjZWRFdmVudC5nZXQoKSk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2
ZW50cy5hcHBlbmQoV1RGTW92ZShuZXh0Q29hbGVzY2VkRXZlbnQpKTsKICAgICBzZW5kV2hlZWxF
dmVudChuZXh0V2hlZWxFdmVudCk7CkBAIC0yOTg0LDcgKzI5ODQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgcwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CiAgICAgfQog
Ci0gICAgbV9wcm92aXNpb25hbFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3Zpc2lvbmFsUGFn
ZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3VzcGVuZGVkUGFn
ZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVx
dWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50KTsKKyAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8
UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlSZWYoKSwgV1RGTW92
ZShzdXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0
aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0
KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwogCiAgICAgaWYgKGF1dG8qIGl0ZW0g
PSBuYXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgewogICAgICAgICBMT0coTG9hZGluZywgIldlYlBh
Z2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVS
TCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTcwMiw3ICs1NzAy
LDcgQEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpmdWxsU2NyZWVu
TWFuYWdlcigpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNs
aWVudCkgewotICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTc0MzcsNyArNzQzNyw3IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5JiBXZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgaWYg
KG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKQogICAgICAgICByZXR1cm4gKm1f
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogCi0gICAgbV91c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIgPSBtYWtlVW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjsKIH0KIApAQCAtODE0Myw3ICs4MTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkK
ICAgICBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkID0gZW5hYmxlZDsK
IAogICAgIGlmIChtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkICYmICFt
X3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSkKLSAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJh
d2luZ0FyZWEpKTsKKyAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBtYWtlVW5p
cXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKICAgICBlbHNl
IGlmICghbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCkKICAgICAgICAg
bV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBudWxscHRyOwogfQpAQCAtOTE5MCw3ICs5MTkw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKQogV2ViUGFn
ZVByb3h5OjpTcGVlY2hTeW50aGVzaXNEYXRhJiBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNp
c0RhdGEoKQogewogICAgIGlmICghbV9zcGVlY2hTeW50aGVzaXNEYXRhKQotICAgICAgICBtX3Nw
ZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEg
PSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgbWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9
OwogICAgIHJldHVybiAqbV9zcGVlY2hTeW50aGVzaXNEYXRhOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA4YmRmOGNmODM4OGNkYzdiZmFj
ZmYyYjdlNjA1ZDBhODE4ZGFhYzY0Li45NjJmM2JlZDJkODI1NjlhMDdkZDRlOWNkYWI4ZmNjNzIx
MTlmN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAK
QEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3Np
YmxlKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSBnZW5lcmF0ZUFkZFJlcXVlc3RJ
ZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlm
aWVyLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7
CisgICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5p
cXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CiAKICAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9z
c2libGUoKTogQ2hlY2tpbmcgaWYgcHJvY2VzcyAlaSBpcyByZXNwb25zaXZlIGJlZm9yZSBjYWNo
aW5nIGl0Li4uIiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgcHJv
Y2Vzcy0+aXNSZXNwb25zaXZlKFt0aGlzLCBwcm9jZXNzUG9vbCA9IG1ha2VSZWYocHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKSksIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGlzUmVzcG9uc2l2ZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGRiZTI1MzUy
YjUyNTg4ZDhhM2NjODY5NDg0NDQwZTc5ZTg1YTA5NmQuLmZlZGE4ZWU4ZThkMzBmMzk0ZmYxMDhm
YmZhODA0MTVkODEwNzdhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTIzMywxNSArMjMzLDE1IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90CiBX
ZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5j
b3B5KCkpCiAgICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3VwOjpjcmVhdGUoKSkK
LSAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlQ2xpZW50PigpKQotICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQotICAgICwgbV9kb3dubG9hZENsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCi0gICAgLCBtX2hpc3RvcnlD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pigp
KQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKKyAgICAsIG1faW5qZWN0ZWRCdW5k
bGVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQorICAgICwg
bV9hdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQor
ICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkp
CisgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50PigpKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAgICAsIG1fdmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91
bmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0aGlzKSkKLSAgICAs
IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1faGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGlj
c1VzYWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyKG1ha2VVbmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMp
KQogI2VuZGlmCiAgICAgLCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eShtX2NvbmZp
Z3VyYXRpb24tPmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQogICAgICwgbV9zaG91
bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkVGFrZVVJ
QmFja2dyb3VuZEFzc2VydGlvbigpKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50
KQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICgh
Y2xpZW50KQotICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgICAgICBtX2luamVjdGVkQnVuZGxl
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOwogICAgIGVs
c2UKICAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0K
QEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ29ubmVj
dGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Qgogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250
ZXh0SGlzdG9yeUNsaWVudD4mJiBoaXN0b3J5Q2xpZW50KQogewogICAgIGlmICghaGlzdG9yeUNs
aWVudCkKLSAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okxl
Z2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOworICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7CiAgICAgZWxzZQog
ICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGllbnQpOwogfQpAQCAt
Mzg1LDcgKzM4NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVu
dD4mJiBkb3dubG9hZENsaWVudCkKIHsKICAgICBpZiAoIWRvd25sb2FkQ2xpZW50KQotICAgICAg
ICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50
PigpOworICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkRvd25sb2Fk
Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUo
ZG93bmxvYWRDbGllbnQpOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50
PiYmIGRvCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKIHsKICAg
ICBpZiAoIWF1dG9tYXRpb25DbGllbnQpCi0gICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAgICAgICBtX2F1dG9t
YXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKICAgICBl
bHNlCiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1vdmUoYXV0b21hdGlvbkNsaWVu
dCk7CiB9CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkMKIHsKICNp
ZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIGlmICghY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQotICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+
KCk7CisgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1f
Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpOwogI2VuZGlmCkBAIC00OTIsNyArNDkyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUq
IHdpdGgKICAgICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogICAgIH0KIAotICAgIGF1
dG8gbmV0d29ya1Byb2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtQcm9jZXNzUHJveHk+
KCp0aGlzKTsKKyAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gbWFrZVVuaXF1ZTxOZXR3b3JrUHJv
Y2Vzc1Byb3h5PigqdGhpcyk7CiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwogCkBAIC0yNTEwLDcgKzI1MTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYQogICAgICAgICBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJl
bW92ZShtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJhbmRvbSgpKTsK
IAogICAgIGF1dG8mIHZhbHVlID0gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURv
bWFpbi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7CiAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOwogCiAgICAgKnZhbHVlID0gcHJld2FybUluZm9ybWF0aW9uOwpAQCAtMjU1
NywxMiArMjU1NywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBs
b2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnRha2VVcGxvYWRBc3NlcnRpb24oKTsKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCghbV91
aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vzc1VwbG9hZEFzc2Vy
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nl
c3NJRCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3
b3JraW5nKTsKKyAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRz
Il9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAgICAgfQogICAgIAog
ICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5hZGQocHJvY2Vzc0lELCBu
dWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6
OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtl
VW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJX
ZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKQEAgLTI1OTksMTIgKzI1OTksMTIgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJU
aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBwbGF5aW5nIGF1ZGlibGUgbWVkaWEgaXMgbm93IG9uZS4g
VGFraW5nIFVJIHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwogCiAgICAgICAgIEFTU0VSVCghbV91aVBy
b2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBs
YXliYWNrQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRD
dXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0
YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOworICAgICAg
ICBtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NB
c3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJf
cywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5
YmFjayk7CiAgICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nlc1BsYXlpbmdBdWRp
YmxlTWVkaWEuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05l
d0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1l
ZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVh
c29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2Vi
S2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0
aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xl
YXJXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDBiMjQyYTJiYjU4Njc0YzAzOGNmN2NmYTQ5MmRiN2Q5NWNhZTAwMWUuLmRhMzZm
NmJhNThhNTMwNTZlMDhjMmI2NmIyMzhlN2VlMzM4N2U3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIFdlYlByb2Nl
c3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vi
c2l0ZURhdGFTdG9yZSoKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3Vu
dGVyRXZlbnQpIHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKICAg
ICAsIG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4o
KnRoaXMpKQorICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2lz
UHJld2FybWVkKGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ2xpZW50LmgKaW5kZXggZTlmY2YwMDE1Mzk5NWRjMWNjZTEzNWY4YzA5MmU5MmU2NmRiZmYz
YS4uZDBiYmE1NjRjMjc1ODJkNzgyNmU5ZjJjMjA2MjIzNzAyMjcyOTUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRh
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYnNp
dGVEYXRhU3RvcmVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDE4Mjk0ZDM3ZmU0OWVlZDZkNjlk
ZmZmZjVmMmY2NTA3MGI2NmNkOTAuLjdiZGQwM2QzYzhlYzhlMDY2MmU3N2QwMTgyNTBiNTA4OGMy
NmNmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdT
dG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5n
U3RvcmVDYWlyby5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogICAgICAg
ICBHZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dlYlBhZ2VQcm94
eS52aWV3V2lkZ2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdka192aXN1YWxf
Z2V0X3NjcmVlbih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNw
bGF5WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVOX1hESVNQTEFZKHNj
cmVlbikpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNr
ZW5kQ2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNj
cmVlbikpLAorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikp
LAogICAgICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdka192aXN1YWxfZ2V0
X2RlcHRoKHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgfQogI2Vu
ZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm9JbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZh
Y3Rvcik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGI4NzRmYjBmYjJlMmE3ZTdlYzM2
Y2M0NGUzOWQ2MjQ5MDZhNGM1ZjEuLmY4ODhjMGY0NDZjNjI3MTI3YzgzNzViZTBkODFhNmEzZjJj
MDlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90
ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3RvckNsaWVudDo6Y29ubmVjdGlvbkNsb3NlZCgpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVu
dDo6aW5zcGVjdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKQogewog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtl
X3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdl
dElEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclBy
b3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJ
RCk7CiAgICAgfSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zaG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQu
Y3BwCmluZGV4IDM4MzEwMDA1ODg5NGRlYzBmYjdiNTFjYWEwOWEyMzlkNzdkMDhhOGIuLjg5MzI3
OWZiY2Y1OGFlYWYyYWZkNmIxYTQ3YzFjNzZjMjNkODJiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQuY3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kOjpjaGVja1JlcXVpcmVtZW50cygpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNE
T3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3Bl
bkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNp
b25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxF
eHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49
IDMyMCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0
ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRl
eHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGds
RXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVuc2lvbnMt
PnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAgICAgICAgICBnbElt
YWdlVGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VU
VEVYVFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0
dXJlMkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJh
Z0FuZERyb3BIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5k
RHJvcEhhbmRsZXIuY3BwCmluZGV4IGU5YWU2NTUyYTdhMmQ4NjJjNGJkNGVlMTBlZDJlYzM2ZTky
ZjgzMWQuLmNhNjUzZTVlYmE3MGM5NjE1NWZmNzY0ODhjM2VkZjQyODFmODU3MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCkBA
IC0yMDIsNyArMjAyLDcgQEAgU2VsZWN0aW9uRGF0YSogRHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFn
RGF0YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY28KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RHJvcHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0ID0gbV9kcm9wcGluZ0NvbnRl
eHRzLmFkZChjb250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFkcm9w
cGluZ0NvbnRleHQpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBtX3BhZ2Uudmlld1dp
ZGdldCgpOwotICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERyb3Bw
aW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOworICAgICAgICBkcm9wcGluZ0NvbnRleHQg
PSBtYWtlVW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOwogICAgICAg
ICBWZWN0b3I8R2RrQXRvbT4gYWNjZXB0YWJsZVRhcmdldHMoUGFzdGVib2FyZEhlbHBlcjo6c2lu
Z2xldG9uKCkuZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGRyb3BwaW5nQ29udGV4dC0+Z2Rr
Q29udGV4dCkpOwogICAgICAgICBkcm9wcGluZ0NvbnRleHQtPnBlbmRpbmdEYXRhUmVxdWVzdHMg
PSBhY2NlcHRhYmxlVGFyZ2V0cy5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0byYgdGFyZ2V0IDog
YWNjZXB0YWJsZVRhcmdldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dh
eWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCBjYmUzODBiMjQwZDk2MDExMTcyN2I3NzBhODI1ZTA5
ZTA1NDdjOWVkLi5jM2Q5OTczYzcwZGMyMDg5YzY4M2Q2NWE5MTNkYTI5NGQ1ZmZlYmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAK
QEAgLTQyMCw5ICs0MjAsOSBAQCBib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdM
KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5p
cXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOwogI2Vsc2UKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50
KCktPnZlcnNpb24oKSA+PSAzMjApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RP
cGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxs
cHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAg
ICBpZiAoZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0
ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKICAgICAgICAg
Z2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRB
UkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCmluZGV4IGMyMzQxMWMxZjA5YjAxMGE2NTI1NGIz
NjlkZDMxNjlkMzFmMGMwZTAuLjYxZTg1OTRkNWI3YzQxYWFmOWZjODJjNjUzOGRiOWFkNzE4NTYz
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIubW0KQEAgLTU4LDcgKzU4LDcgQEAgRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXI6On5FZGl0YWJsZUltYWdlQ29udHJvbGxlcigpCiBFZGl0YWJsZUltYWdlJiBFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1f
ZWRpdGFibGVJbWFnZXMuZW5zdXJlKGVtYmVkZGVkVmlld0lELCBbJl0gewotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRh
YmxlSW1hZ2U+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPiBpbWFn
ZSA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKICAgICAgICAgaW1hZ2UtPmRyYXdpbmdW
aWV3ID0gbV93ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5nVmlldyhlbWJl
ZGRlZFZpZXdJRCk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1Zp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJh
Y2tpbmdWaWV3Lm1tCmluZGV4IGQwM2ExNzI2YWIzMzRhMDBlNjBmYmMwNTBiNTBlNWMzMzc1YWY3
MjAuLjdmMGY5NDg0ZmQ3Nzc0ZGQxMTU3YWUyODg1YzkwYTNiZjJlZTc5YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0
ZVRyYWNraW5nVmlldy5tbQpAQCAtNjUsNyArNjUsNyBAQCAtICh2b2lkKWRpZE1vdmVUb1dpbmRv
dwogICAgIGlmICghc2VsZi5fY29udGVudFZpZXcud2luZG93IHx8IF9hcHBsaWNhdGlvblN0YXRl
VHJhY2tlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2Vy
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxm
LCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9h
cHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwg
QHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsKKyAgICBfYXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRy
YWNrZXI+KHNlbGYsIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBA
c2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0Jh
Y2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOwog
ICAgIAogICAgIGlmIChfbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kICYmICFbc2VsZiBp
c0JhY2tncm91bmRdKQogICAgICAgICBbc2VsZiBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5k
ZXggNjgxMWU4N2E0YTQyMTAwNWJkOTRhN2FjMjE2NTQzZWNjMDBhNzdmYy4uNDMxZmFjZDFlNjgz
OTdlYzg1NzM5MWFiMWNmODg4ZDM4NDE1N2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nl
c3NQb29sJilwcgogICAgIF9wYWdlLT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1ZSk7CiAKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7Cisg
ICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3Jl
ZW5DbGllbnQ+KF93ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMjM5LDcgKzIzOSw3IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wmCiAKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAK
LSAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1w
bD4oc2VsZiwgd2ViVmlldyk7CisgICAgX3BhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6
UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsK
IAogICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6
cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pXTsKQEAgLTU0
MSw3ICs1NDEsNyBAQCAtICh2b2lkKV93ZWJWaWV3RGVzdHJveWVkCiAKIC0gKHN0ZDo6dW5pcXVl
X3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5OihX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eSYpcHJvY2VzcwogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLCBw
cm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NE
aWRFeGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA5ZTE2Y2NiZmQ2YjIwMWNiNTlmNzM4N2FiYWZmODE4
YjU1NjA2OTcyLi5kM2VkYTM2OWMwMzcxYzFmMmMxM2ExZDA1OTkxNWRiNmRkNWU5MmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTgwNiw3ICs4MDYsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24K
ICAgICAKICAgICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tBY3Rpb25TaGVl
dEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBbX2FjdGlvblNoZWV0
QXNzaXN0YW50IHNldERlbGVnYXRlOnNlbGZdOwotICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXI+KHNlbGYpOworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0gbWFrZVVu
aXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOwogICAgIF9p
c0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQgPSBOTzsKICAgICBfcG90ZW50aWFsVGFwSW5Q
cm9ncmVzcyA9IE5POwogICAgIF9pc0RvdWJsZVRhcFBlbmRpbmcgPSBOTzsKQEAgLTgyMSw3ICs4
MjEsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBM
QVRGT1JNX0RSSVZFTl9URVhUX0NIRUNLSU5HKQotICAgIF90ZXh0Q2hlY2tpbmdDb250cm9sbGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFn
ZSk7CisgICAgX3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6VGV4
dENoZWNraW5nQ29udHJvbGxlcj4oKl9wYWdlKTsKICNlbmRpZgogCiAgICAgX2hhc1NldFVwSW50
ZXJhY3Rpb25zID0gWUVTOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgLSAoQk9PTCliZWNvbWVGaXJz
dFJlc3BvbmRlckZvcldlYlZpZXcKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYgKCFfaW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXIpCi0gICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7
CisgICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJ
bnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CiAKICAgICBCT09MIGRpZEJlY29tZUZpcnN0
UmVzcG9uZGVyOwogICAgIHsKQEAgLTUzMTEsNyArNTMxMSw3IEBAIC0gKHZvaWQpX2VsZW1lbnRE
aWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1h
dGlvbiB1CiAgICAgICAgIC8vIERlZmVyIHZpZXcgdXBkYXRlcyB1bnRpbCB0aGUgZW5kIG9mIHRo
aXMgZnVuY3Rpb24gdG8gYXZvaWQgYSBub3RpY2VhYmxlIGZsYXNoIHdoZW4gc3dpdGNoaW5nIGZv
Y3VzCiAgICAgICAgIC8vIGJldHdlZW4gZWxlbWVudHMgdGhhdCByZXF1aXJlIHRoZSBrZXlib2Fy
ZC4KICAgICAgICAgaWYgKCFpbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAgICAgICAgICAgIGlu
cHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmll
d1VwZGF0ZURlZmVycmVyPihzZWxmKTsKKyAgICAgICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVy
cmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsK
ICAgICAgICAgW3NlbGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGIwMjgyNDg5MjAwM2Ew
NDk4OTI5ZTcwNmE1OTA0NTlhNGY4NzFhY2QuLmMwOGY5Nzg2ZjBlYWFiNGE5NzViYjU2NDhjNzQy
N2M1NjM2ZGJlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtOTEyLDcgKzkxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbGVtZW50
RGlkRm9jdXMoY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24sCiAg
ICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2VzcygpLnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwogICAgIGlmIChtX2VkaXRvclN0
YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgdHJ5IHRvIGVsaW1pbmF0ZSBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIGFs
dG9nZXRoZXIsIGluIGZhdm9yIG9mIG9ubHkgZGVmZXJyaW5nIGFjdGlvbnMgdGhhdCBhcmUgZGVw
ZW5kZW50IG9uIHBvc3QtbGF5b3V0IGVkaXRvciBzdGF0ZSBpbmZvcm1hdGlvbi4KLSAgICAgICAg
bV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8RWxl
bWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1h
dGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVD
aGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKKyAgICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRG
b2N1c0FyZ3VtZW50cyA9IG1ha2VVbmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVt
ZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJs
dXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1OCw3ICsxMjU4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWVTaGFyZWQoUmVmPFcKIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyPiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVz
ZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29yZGluYXRvclByb3h5
LCBQS1BheW1lbnRSZXF1ZXN0ICpwYXltZW50UmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXltZW50Q29v
cmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGluYXRvclByb3h5
LCBwYXltZW50UmVxdWVzdCk7CiB9CiAKIFVJVmlld0NvbnRyb2xsZXIgKldlYlBhZ2VQcm94eTo6
cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIu
bW0KaW5kZXggOGIxMjNiMGE5N2MwMzBlOTQ1MGY1ZWQ0ZjhjMTc0YjMyMWJiNDA3Yi4uOGZmOGEw
YmY0NzViM2Y3YjIzNjIyOWY0MTJlM2YzMjY2Y2Y5NTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2Ny
ZWVuVmlld0NvbnRyb2xsZXIubW0KQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKIH07CiAKIGNs
YXNzIFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQg
OiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVuVmll
d0NvbnRyb2xsZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggODM0MzQ4
ODljZGNmMjQ5YzFjMjc5MWJkMDdiZmZmYTIwMWNmNDg3ZC4uYTkxMjk1M2VjOTFjMjczMzYyNjc2
M2RhZjlkYTI2YjI0OTMzYzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhZ2VDbGllbnRJbXBs
OjpQYWdlQ2xpZW50SW1wbChOU1ZpZXcqIHZpZXcsIFdLV2ViVmlldyAqd2ViVmlldykKICAgICA6
IFBhZ2VDbGllbnRJbXBsQ29jb2Eod2ViVmlldykKICAgICAsIG1fdmlldyh2aWV3KQogI2lmIFVT
RShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCisg
ICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlcj4oKSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpp
bmRleCA0M2U5Zjk2N2JjODk3N2ZiZmY4Yzg2NjhhNWNjYTFmMzgyNGMwODA5Li4zNGE2OWJiZTBi
YjBkMTc2YjU1MWJhZjJkN2EzNWMxZmFhYzAzN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpA
QCAtNTQsNiArNTQsNyBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgRGVmYXVsdFdhdGNo
ZG9nVGltZXJJbnRlcnZhbCA9IDE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29y
ZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCkBAIC0xNTAsNyArMTUxLDcg
QEAgLSAoaWQpaW5pdFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luZG93IHdlYlZpZXc6KE5TVmll
dyAqKXdlYlZpZXcgcGFnZTooV2ViS2l0OjoKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAg
X3BhZ2UgPSAmcGFnZTsKIAotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVl
bk1vZGVsQ2xpZW50PigpOworICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVl
PFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVs
Q2xpZW50PigpOwogICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldFBhcmVudChzZWxmKTsK
IAogICAgIFtzZWxmIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IDY2MDMx
N2MyZmJjNzliNjhiYjViNzM0NzZhNThiZWZlYTA5YjA2ZDMuLjY5ZDlkOWUyZDQ0NDg0M2QxNTI3
MGY1MTE3Zjc3NGNkMjM3ZDVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBUZXh0RmluZGVyRmluZENs
aWVudCA6IHB1YmxpYyBBUEk6OkZpbmRNYXRjaGVzQ2xpZW50LCBwdWJsaWMgQVBJOjpGaW5kQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBUZXh0RmluZGVyRmluZENsaWVudChXS1RleHRGaW5kZXJDbGllbnQgKnRleHRGaW5kZXJDbGll
bnQpCiAgICAgICAgIDogbV90ZXh0RmluZGVyQ2xpZW50KHRleHRGaW5kZXJDbGllbnQpCkBAIC0x
NjgsOCArMTY5LDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViS2l0OjpXZWJQ
YWdlUHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICopdmlldyB1c2UKICAgICBfdmlldyA9IHZpZXc7
CiAgICAgX3VzZVBsYXRmb3JtRmluZFVJID0gdXNlUGxhdGZvcm1GaW5kVUk7CiAgICAgCi0gICAg
X3BhZ2UtPnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0
RmluZGVyRmluZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOworICAgIF9w
YWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZp
bmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdl
YktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKIAogICAgIHJldHVybiBzZWxmOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcAppbmRleCBlZDBkNWZmZTk1ODlmOTVlNDRhMDdmMjIxOGVkODJjMDBm
MDE3ZDdlLi5lNzRhZGFjMWU2NWViZTVjOTliMzFkOTA2N2FlNjExNThmMzk4N2YxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50
OjpkaWRDbG9zZShDb25uZWN0aW9uSUQpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5z
cGVjdChDb25uZWN0aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJnZXRJRCwgY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1h
cC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBj
b25uZWN0aW9uSUQsIHRhcmdldElELCAmdHlwZV0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0
SUQsIHR5cGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94
eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwogICAgIH0pOwogCiAgICAg
aWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAppbmRleCAxYjZkOWNjNTRmYzYwYjUzZTQ0MDI3MWYyMzA4ZTdjMGY0N2M4NzRjLi5hODgz
M2Y2MjQ4N2Y5YTY3MjEwMzk5ZWM5ZjhmZjVlMDkyNzEyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94
eSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGll
bnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+
KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVl
KCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52
YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgLy8g
U2V0dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3Nh
Z2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9y
bWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6
OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3Rv
ciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcGFnZVByb3h5
LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbEJ1aWxkZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGly
ZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVj
dDJELmNwcAppbmRleCBiNjdkNzNhNGRjNDg4YjMxZmRjOWE0NzIxOTY5MTQwNDI3NDQ4ODI1Li41
ZDUwYWU1NTQ2ODBhNmU5ZTNkYTJjZTg0YmU1NjRkNWMzMjM3ZjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxC
YWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVj
dDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2Nh
bGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQyRDFSZW5kZXJUYXJn
ZXQqIHJlbmRlclRhcmdldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGNkNmYwOGZmMThiZDU1YzE1
NTQ0NjNkNGE0MGI1MWU0NWIyZWFiOWYuLjAzMDdjNGY5ZjE0M2Y4NmRjNjIwOGI0ODRiZThkYjQy
MmRjMGY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJ
bXBsLmNwcApAQCAtNDYsNyArNDYsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwo
V2ViVmlldyYgdmlldykKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBz
dGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURy
YXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqbV92
aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAog
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpS
ZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9X
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRl
eCBjZDUzNTJkZjdhYTA0ZTY5ZDliMGY5OGVkMDAxZTVjNjMzMmY3NTkzLi42N2U1ZTRiMjdhM2Fl
ODBhYjY2OGY2YzM0MTdjMGYwY2U2YjdmMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBXZWJWaWV3OjpyZWdpc3Rlcldl
YlZpZXdXaW5kb3dDbGFzcygpCiB9CiAKIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBjb25z
dCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBhcmVudFdpbmRv
dykKLSAgICA6IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPigq
dGhpcykpCisgICAgOiBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRo
aXMpKQogewogICAgIHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuaAppbmRleCBiNmQ0YTA0MjBkNWE1ZGJkNjQ2MDgzYWY2Nzg4MDUxYmY2Y2M0N2UwLi5mMmQ2
MmVhOTc5MGY4MDdhNjViNWQzZTU4ZjgwYjk3ZjA2YWRiZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5o
CkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNz
IFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOwogICAgIGV4cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvcihXZWJQYWdlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcAppbmRleCA0ZjgxMGNjZjM4ZWNmYTJjOTllY2JkYTg5ZDA0MWNlYjhkMjMzM2I4Li5h
YWIzNDU3Y2VkNjRhNWE5MTBjZGM1NjJhY2MwMTE1MDBkM2M2Y2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1l
cGFkcyhjb25zdCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGEKICAgICAgICAgaWYgKGdh
bWVwYWREYXRhc1tpXS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IG1fZ2FtZXBhZHNbaV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRh
c1tpXSk7CisgICAgICAgIG1fZ2FtZXBhZHNbaV0gPSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdh
bWVwYWREYXRhc1tpXSk7CiAgICAgICAgIG1fcmF3R2FtZXBhZHNbaV0gPSBtX2dhbWVwYWRzW2ld
LmdldCgpOwogICAgIH0KIH0KQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlk
ZXI6OmdhbWVwYWRDb25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmIGdhbWVwYWREYXRhKQogCiAg
ICAgQVNTRVJUKCFtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldKTsKIAotICAgIG1fZ2Ft
ZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+
KGdhbWVwYWREYXRhKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gbWFr
ZVVuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YSk7CiAgICAgbV9yYXdHYW1lcGFkc1tnYW1l
cGFkRGF0YS5pbmRleCgpXSA9IG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0uZ2V0KCk7
CiAKICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZmQ2NTIzZDZmYTdkNzU5M2Qx
YjhkM2IzMmJhYjQ2M2E5NjhlYWEyOC4uNjMzZjIyZmRmZTQyNzJiMzlkZTI1ZWEwZTRhMGEwNGQ3
Y2RlNmNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmgKaW5kZXggMGJiNGYyYjQyMWEzZWMyMjg3NTRlNjM4MjlkNDFhYmJlMmUwNmY4ZC4uYTZjMjg3
MTZhYjE2NzhhZmRkNTc0YzlkZjlmZTI4Njg2MzQ2MzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogY2xhc3MgV2ViUGFnZTsK
IAogY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVt
ZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0aW9uTWFuYWdlcik7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3Mm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGYzZWM3MjA4N2NhMjg4NjdmNTRkOWRmMGY1MGQ4
NzEwMmUwMTZmYTIuLmNhODVkNTg1ZGNmMWI3NmVmMGI4ZDExZDU5YWQ2NjA0YWMzZjE4NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZUdl
dFR5cGVJRCgpCiAKIHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5kbGVSZWYgYnVuZGxlUmVm
LCBXS0J1bmRsZUNsaWVudEJhc2UgKndrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKGJ1
bmRsZVJlZiktPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0
Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQp
KTsKIH0KIAogdm9pZCBXS0J1bmRsZVNldFNlcnZpY2VXb3JrZXJQcm94eUNyZWF0aW9uQ2FsbGJh
Y2soV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCB2b2lkICgqY2FsbGJhY2spKHVpbnQ2NF90KSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZjEyYTViYTc3NGQ2Y2M2OGQwODRmMWY2MDIx
Y2ViZjM4MWFhM2E1OC4uZGMwNzU4YWQ3NWFmMzYxZGZiZTgxNmViMTEzZjQxYzdmMDlkODFjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgV0tUeXBlSUQg
V0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkKIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50QmFzZSogd2tDbGllbnQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBAIC04NiwyMiArODYs
MjIgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGUKIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0
b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVudCA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50
ID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudD4oKndr
Q2xpZW50KSA6IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50Pigp
KTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudD4od2tDbGllbnQp
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xp
ZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0Ns
aWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50
KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQ
YWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRv
SW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4o
d2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5k
bGVSZXNvdXJjZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFn
ZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VT
ZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGlj
eUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV0tCdW5kbGVQ
YWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQ
b2xpY3lDbGllCiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOwor
ICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1h
a2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4od2tDbGllbnQpKTsK
IH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50QmFzZSogd2tDbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXggZWJkM2VmNWYyOTMw
OGMxNDE5M2ExODFiN2UxZTRhNDI1ZmQyMWRkMi4uNjlmN2FmMjJiNTY3NTA0ZDRmMzFmMGQ3YTcw
Yjg3NGUwOWZhNTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNw
cApAQCAtNTQsNiArNTQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5k
bGVQYWdlT3ZlcmxheUFjY2Vzc2liaWxpdHlDbGllbnRCYXNlPiB7CiB9CiAKIGNsYXNzIFBhZ2VP
dmVybGF5Q2xpZW50SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRC
YXNlPiwgcHVibGljIFdlYktpdDo6V2ViUGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGFnZU92ZXJsYXlDbGll
bnRJbXBsKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAt
MjE2LDcgKzIxNyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZU92ZXJsYXlHZXRUeXBlSUQoKQog
CiBXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5k
bGVQYWdlT3ZlcmxheUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIGF1dG8gY2xpZW50SW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7Cisg
ICAgYXV0byBjbGllbnRJbXBsID0gbWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdr
Q2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6V2ViUGFnZU92ZXJsYXk6OmNyZWF0
ZShXVEZNb3ZlKGNsaWVudEltcGwpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFn
ZUJhbm5lck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCmluZGV4IGFjYzM1YTIxYjU5ZjFhYTMx
ZTMzMDUxYTY2YmMxMzA1OTk2Njk5ZDMuLmQ2ZmZkMWNjYzA0YTkzYTdhMDlkMmIzNjU1OWE4ZjBj
MDk1MGZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVy
TWFjLm1tCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIGNsYXNzIFBhZ2VCYW5uZXJDbGllbnRJbXBsIDogQVBJOjpDbGllbnQ8
V0tCdW5kbGVQYWdlQmFubmVyQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlQmFubmVyOjpDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBh
Z2VCYW5uZXJDbGllbnRJbXBsKFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJhc2UqIGNsaWVudCkK
ICAgICB7CkBAIC0xMDMsNyArMTA0LDcgQEAgV0tCdW5kbGVQYWdlQmFubmVyUmVmIFdLQnVuZGxl
UGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKENBTGF5ZXIgKmxheWVyLAogICAgIGlm
ICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNs
aWVudEltcGw+KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBtYWtlVW5pcXVlPFdl
YktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1cm4gdG9BUEko
JldlYktpdDo6UGFnZUJhbm5lcjo6Y3JlYXRlKGxheWVyLCBoZWlnaHQsIGNsaWVudEltcGwucmVs
ZWFzZSgpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2Jq
ZWN0Q2FjaGUuY3BwCmluZGV4IDQyMTAxZjhjODJjYjJhNTQ4M2JhZTRkYzg0ODA3YjQxNjVhOTJk
ODYuLjA5NWYzNmZmYzYzZjk1YjQ3NTU4MWY1YjhlZDVlOTNmNDI3MzhiMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9N
T2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0
YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2Fj
aGVGcmFtZU9ic2VydmVyKFdlYkNvCiB7CiAgICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVy
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpLmFk
ZCgmZnJhbWUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVG
cmFtZU9ic2VydmVyPihmcmFtZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUpOwogICAgIHJldHVy
biAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNz
IERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlCiAgICAgICAgIGlmIChkb21XaW5kb3cgJiYgKCFtX2RvbVdpbmRv
d09ic2VydmVyIHx8IG1fZG9tV2luZG93T2JzZXJ2ZXItPndpbmRvdygpICE9IGRvbVdpbmRvdykp
IHsKICAgICAgICAgICAgIC8vIE5ldyBET01XaW5kb3csIGNsZWFyIHRoZSBjYWNoZSBhbmQgY3Jl
YXRlIGEgbmV3IERPTVdpbmRvd09ic2VydmVyLgogICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAg
ICAgICAgIG1fZG9tV2luZG93T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd09i
c2VydmVyPigqZG9tV2luZG93LCAqdGhpcyk7CisgICAgICAgICAgICBtX2RvbVdpbmRvd09ic2Vy
dmVyID0gbWFrZVVuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOwog
ICAgICAgICB9CiAKICAgICAgICAgbV9vYmplY3RzLmFwcGVuZCgmZGF0YSk7CkBAIC0yMTUsNyAr
MjE1LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6cHV0KHZvaWQqIG9iamVjdEhhbmRsZSwgdm9p
ZCogd3JhcHBlcikKIHsKICAgICBET01PYmplY3RNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21P
YmplY3RzKCkuYWRkKG9iamVjdEhhbmRsZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVD
VCh3cmFwcGVyKSk7CiB9CiAKIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2Rl
KiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBE
T01PYmplY3RDYWNoZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3Jh
cHBlcikKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNo
ZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
bWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKICAgICBp
ZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gb2JqZWN0SGFuZGxlLT5kb2N1bWVudCgpLmZyYW1l
KCkpCiAgICAgICAgIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKCpmcmFt
ZSkuYWRkT2JqZWN0Q2FjaGVEYXRhKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCA0Y2Nl
YzYyZWYwZTExMzFmYTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmLi40ZDc0MmU0MDliYmZjN2NmYWI0
MDhjZDY1MzhhZWY5ZjIyOGZkNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJLaXRFeHRl
bnNpb25NYW5hZ2VyOjppbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIEFQSTo6T2Jq
ZWN0KiB1c2UKICAgICBzY2FuTW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBtb2R1bGVQ
YXRocyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1v
ZHVsZVBhdGhzW2ldKTsKKyAgICAgICAgYXV0byBtb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4o
bW9kdWxlUGF0aHNbaV0pOwogICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGlmIChpbml0aWFsaXplV2ViRXh0ZW5zaW9uKG1vZHVsZS5n
ZXQoKSwgdXNlckRhdGEuZ2V0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9y
LmNwcAppbmRleCAwNDA3MmViODY0ZGJlMzVmODBkZmM4NmFkMGU4ODNjM2U5OWNlNDRmLi5jY2I1
MWUwZDk2NDBjNjZmODU5NmU0NzQxNzE0MDU4ZTkxMzk3Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0V2ViRWRpdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRXZWJFZGl0b3Iq
IHdlYmtpdFdlYkVkaXRvckNyZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIFdl
YktpdFdlYkVkaXRvciogZWRpdG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9FRElUT1IsIG51bGxwdHIpKTsKICAgICBlZGl0b3ItPnByaXYtPndlYlBh
Z2UgPSB3ZWJQYWdlOwotICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+
KGVkaXRvcikpOworICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikp
OwogICAgIHJldHVybiBlZGl0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdl
YkV4dGVuc2lvbi5jcHAKaW5kZXggNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5NjEyOTlhNzAxMDgx
NzUwMS4uZTMwNmUzZmVmMjYzMWQ1NDY2NTU3MTE2ZTVlNDg3ZDM3MWM3ODU3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYkV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTE5Niw3ICsxOTYsNyBA
QCBjbGFzcyBXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBB
UEk6OkluamVjdGVkQnVuZGxlOjpDbGllbgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJF
eHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBOVUxMKSk7Ci0gICAgYnVuZGxlLT5zZXRDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5z
aW9uKSk7CisgICAgYnVuZGxlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJFeHRlbnNpb25Jbmpl
Y3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGNmYzUwMzFlZDZlNGEy
OTU0ZmUwMmEwM2RhODdhMTYxY2QyZDMwODIuLjZkYjI5OWY0NzExMmExNDQ1ZjdlNjgzMzQ3MmQz
ZGI4ZDdkN2I5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTEy
OCw3ICsxMjgsNyBAQCBzdGF0aWMgV2ViS2l0RnJhbWUqIHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUo
V2ViRnJhbWUqIHdlYkZyYW1lKQogICAgIGlmICh3cmFwcGVyUHRyKQogICAgICAgICByZXR1cm4g
d3JhcHBlclB0ci0+d2Via2l0RnJhbWUoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRG
cmFtZVdyYXBwZXI+IHdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEZyYW1lV3JhcHBl
cj4oKndlYkZyYW1lKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3
cmFwcGVyID0gbWFrZVVuaXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CiAgICAg
d3JhcHBlclB0ciA9IHdyYXBwZXIuZ2V0KCk7CiAgICAgd2ViRnJhbWVNYXAoKS5zZXQod2ViRnJh
bWUsIFdURk1vdmUod3JhcHBlcikpOwogICAgIHJldHVybiB3cmFwcGVyUHRyLT53ZWJraXRGcmFt
ZSgpOwpAQCAtNjc4LDExICs2NzgsMTEgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNy
ZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSBXRUJLSVRf
V0VCX1BBR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QQUdFLCBOVUxMKSk7CiAgICAg
cGFnZS0+cHJpdi0+d2ViUGFnZSA9IHdlYlBhZ2U7CiAKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3Rl
ZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSZXNvdXJjZUxv
YWRDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7Ci0gICAg
d2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2VDb250ZXh0TWVudUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVj
dGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsK
LSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxl
UmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFn
ZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtl
VW5pcXVlPFBhZ2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50
PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5p
cXVlPFBhZ2VVSUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxl
Rm9ybUNsaWVudChtYWtlVW5pcXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7CiAKICAgICByZXR1
cm4gcGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KaW5kZXgg
ODEwNTVjZTdmZGViYTMxOGRhYjA2ODI2MzRjNmJkODRhMzdmYWU4Yy4uMDg0ZjMwMDVkNjEwM2Q0
ZTI1MDMzYzI1NmM3MGMwZTA2NDA0MWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0
SXRlcmF0b3IubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooV0tET01S
YW5nZSAqKXJhbmdlCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
X3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihX
ZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CisgICAgX3RleHRJdGVyYXRvciA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdl
KSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5t
bQppbmRleCA0ODgwMGJiMzE3OTA2NWU0ZTczMjkzMDY5MDU0NjgwZTQzNGFmMWZmLi40MjAyMzk2
YWJhZmFmMzBkNzE4OWFlYjY4NTA5ZWEyNzE3MWI5NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tCkBAIC01NDQsNyArNTQ0LDcgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRl
OihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4pZm9ybURlbGVnYXQK
ICAgICB9OwogCiAgICAgaWYgKGZvcm1EZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVj
dGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsK
KyAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPEZv
cm1DbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1
bmRsZUZvcm1DbGllbnQobnVsbHB0cik7CiB9CkBAIC02NzMsNyArNjczLDcgQEAgLSAodm9pZClf
c2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRl
PillZGl0aW5nRGVsZWcKICAgICB9OwogCiAgICAgaWYgKGVkaXRpbmdEZWxlZ2F0ZSkKLSAgICAg
ICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
Q2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudChtYWtlVW5pcXVlPENsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2Ut
PnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggMjBjZTU1OTExZDcwNjUxYzMzNWE3MGFjZjI0ZTViZGZjMjFiZDYzMS4uOTk3
OWQ2Mzg0ZGZmNWM5ODA1OTFmMjkwODNjOTM3Mjk2MzQ0YTkwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmplY3RlZEJ1
bmRsZTo6Y3JlYXRlKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIEluamVjdGVk
QnVuZGxlOjpJbmplY3RlZEJ1bmRsZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRo
KQogICAgICwgbV9wbGF0Zm9ybUJ1bmRsZSgwKQotICAgICwgbV9jbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCisgICAgLCBtX2NsaWVudChtYWtl
VW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKSkKIHsKIH0KIApAQCAtMTE0LDcg
KzExNCw3IEBAIEluamVjdGVkQnVuZGxlOjp+SW5qZWN0ZWRCdW5kbGUoKQogdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpD
bGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOworICAgICAg
ICBtX2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOwog
ICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMGNhNWVhNmQyYWJlNTcyMTU0ZDIxYmVkMGNjOWEw
NTNlN2Q2NmMxOC4uYmZiM2QwNDUxNDM3MzZjMzFkZjk4OGFiMWIwMGRlNDJiODUzMDg5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hl
L1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIo
V2ViUHJvY2VzcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oCmluZGV4IGQ3YzVjNjgzNDRiNzI3MzhkOTQ5N2RmMDEyY2EzNzZiYjg0MTg4ZGEuLmIw
YmQ1MzRjZTE5ZDczODYxZDgxNzZhODIwNWNkY2U2MTk1ZmQwNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyPiwgcHJpdmF0ZSBXZWJDb3JlOjpNZWRpYUNhblN0YXJ0TGlzdGVuZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAgICAgflVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzMz
NTI3NjU4NzFkODI1NWEyM2RiN2I1NWU2ZDQ0ZWU3MzM5MjJkNy4uMmU1N2FmMjQ4M2JkMzZiM2Rk
ODVlNGVjMThkZGUxMGY0NDM2ZTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMiwzOCArMTMyLDExIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZE1lc3NhZ2Uo
VCYmIG1lc3NhZ2UsIHNpemVfdCBieXRlCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKLXsKLSAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJbkJ5dGVzKCk7Ci0g
ICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1
cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAg
ICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJp
bmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9wZW5kaW5n
TWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1lc3NhZ2Up
KTsKLQotICAgIHJldHVybiBTZW5kU3VjY2VzczsKLX0KLQotV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJp
bmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCi17Ci0g
ICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1
cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAg
ICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRh
IHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFy
eURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7
Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KIGNsYXNzIEJsb2JMb2FkZXIgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmxvYkxvYWRlcihXZWJDb3JlOjpEb2N1bWVu
dCogZG9jdW1lbnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgOiBtX2xvYWRlcihzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6
OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKKyAgICAgICAgOiBtX2xvYWRlcihtYWtlVW5pcXVl
PFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJl
YWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsKICAgICAgICAgbV9sb2FkZXItPnN0YXJ0
KGRvY3VtZW50LCBibG9iKTsKQEAgLTIyNiw3ICsxOTksNyBAQCBjbGFzcyBQZW5kaW5nTWVzc2Fn
ZSB7CiAKICAgICBQZW5kaW5nTWVzc2FnZShXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQsIFdl
YkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6QmxvYikKLSAgICAgICAgLCBtX2Jsb2JM
b2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpKQorICAgICAgICAsIG1fYmxvYkxvYWRlcihtYWtlVW5pcXVl
PEJsb2JMb2FkZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkp
CiAgICAgewogICAgIH0KIApAQCAtMjQ0LDEzICsyMTcsNDAgQEAgY2xhc3MgUGVuZGluZ01lc3Nh
Z2UgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiB9Owog
CitXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGF1dG8gYnl0ZUxlbmd0aCA9IG1lc3NhZ2Uuc2l6
ZUluQnl0ZXMoKTsKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkp
CisgICAgICAgIHJldHVybiBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5p
c0VtcHR5KCkpCisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hh
bm5lbDo6U2VuZFN0cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0aCk7CisgICAgZWxzZQorICAg
ICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4o
bWVzc2FnZSkpOworCisgICAgcmV0dXJuIFNlbmRTdWNjZXNzOworfQorCitXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgSlNDOjpBcnJheUJ1
ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0
aCkKK3sKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAg
ICAgIHJldHVybiBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5
KCkpCisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6
U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVM
ZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VV
bmlxdWU8UGVuZGluZ01lc3NhZ2U+KGJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgp
KTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKwogV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKFdlYkNvcmU6OkJsb2ImIGJsb2IpCiB7CiAg
ICAgLy8gQXZvaWQgdGhlIEJsb2IgcXVldWUgYW5kIGxvYWRpbmcgZm9yIGVtcHR5IGJsb2JzLgog
ICAgIGlmICghYmxvYi5zaXplKCkpCiAgICAgICAgIHJldHVybiBzZW5kKEpTQzo6QXJyYXlCdWZm
ZXI6OmNyZWF0ZShibG9iLnNpemUoKSwgMSksIDAsIDApOwogCi0gICAgbV9wZW5kaW5nTWVzc2Fn
ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0
KCksIGJsb2IsIFt0aGlzXSB7CisgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlx
dWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0aGlzXSB7CiAgICAg
ICAgIHdoaWxlICghbV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBh
dXRvJiBtZXNzYWdlID0gbV9wZW5kaW5nTWVzc2FnZXMuZmlyc3QoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5jcHAKaW5kZXggYWZlMjQwODg0YzNjYmFhYTZhZDIzOGJiZTIzZjk1OTMxNTkxOTIx
ZC4uZTRlN2UzZjdjMDQ0MzdmNmQwYzc4NTRhYjg5ZDkxZWY1M2Y2NmQ1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIEFzeW5jUmVzb2x2ZXJGYWN0b3J5IDogcHVi
bGljIHdlYnJ0Yzo6QXN5bmNSZXNvbHZlckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHJpdmF0ZToKICAgICBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UqIENyZWF0
ZSgpIGZpbmFsCiAgICAgewpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBBc3luY1Jlc29sdmVyRmFj
dG9yeSA6IHB1YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKIAogcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3Zp
ZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIm
IG9ic2VydmVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0
aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJv
dmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5saWJXZWJSVENOZXR3b3JrKCkuc29ja2V0RmFjdG9yeSgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pLCBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2Vy
dmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigp
LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkuc29ja2V0RmFjdG9y
eSgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0
b3J5PigpKTsKIH0KIAogdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9z
dENvbm5lY3Rpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKaW5kZXggNWQ2MzgzZjZiNTA2NTNi
NWM2NzA3MDcwNWM2YzEwMjg3MGZhMDIzMS4uMzk5MDY5OWQwNzc4ZmViMTdiMGNhOGU2MDc4MTQx
MDhhNWMwMGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OwogCiBjbGFzcyBM
aWJXZWJSVENSZXNvbHZlciBmaW5hbCA6IHB1YmxpYyBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZh
Y2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJU
Q1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKaW5kZXggZDc3OGQ1Nzdl
YThlZmMxYjM1NmRmMWQ3YzAxN2VjZGYzMTg4MTA2YS4uN2ZlZjNiNmI4ZWM3YmU0NjY2MzI4MGNh
OTczOGI5OTEzY2U4MTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcApA
QCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29ja2V0QWRkcmVzcyBwcmVwYXJl
U29ja2V0QWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmCiAKIHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZlclRjcFNvY2tldChj
b25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQx
Nl90IG1heFBvcnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmll
ciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0
QWRkcmVzcygpKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0
PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlw
ZTo6U2VydmVyVENQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2Nr
ZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxP
bk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9
IHByZXBhcmVTb2NrZXRBZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5l
Y3Rpb25zKSwgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7CkBAIC02Niw3ICs2Niw3IEBA
IHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVNl
cnZlclRjcFNvY2tldChjb25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldl
YlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJl
c3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCiB7Ci0gICAg
YXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsr
c191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRk
cmVzcywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1
ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGli
V2ViUlRDU29ja2V0OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsK
ICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwog
CiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigp
LCBhZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9uTG9j
YWxob3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0XSgpIHsKQEAgLTgwLDcgKzgwLDcg
QEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRl
VWRwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2UKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGli
V2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29j
a2V0QWRkcmVzcyYgbG9jYWxBZGRyZXNzLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90
ZUFkZHJlc3MsIGNvbnN0IHJ0Yzo6UHJveHlJbmZvJiwgY29uc3Qgc3RkOjpzdHJpbmcmLCBpbnQg
b3B0aW9ucykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
U29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tl
dDo6VHlwZTo6Q2xpZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MpOworICAgIGF1
dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVl
U29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2Fs
QWRkcmVzcywgcmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENT
b2NrZXQ6OlNUQVRFX0NPTk5FQ1RJTkcpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVu
dGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgcnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlQ2xpZW50VGNwU29ja2V0
KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFj
dG9yeTo6Y3JlYXRlTmV3Q29ubmVjdGlvblNvY2tldChMaWJXZWJSVENTb2NrZXQmIHNlcnZlclNv
Y2tldCwgdWludDY0X3QgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXIsIGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgcmVtb3RlQWRkcmVzcykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50
aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVy
U29ja2V0LmxvY2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9
IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50
aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVy
U29ja2V0LmxvY2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNldFN0
YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVEVEKTsKICAgICBtX3NvY2tldHMuc2V0
KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCkBAIC0xMTcsNyArMTE3LDcg
QEAgdm9pZCBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpkZXRhY2goTGliV2ViUlRDU29ja2V0JiBz
b2NrZXQpCiAKIHJ0Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogTGliV2ViUlRDU29ja2V0RmFj
dG9yeTo6Q3JlYXRlQXN5bmNSZXNvbHZlcigpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZp
ZXIpOworICAgIGF1dG8gcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1Jlc29sdmVyPigr
K3NfdW5pcXVlUmVzb2x2ZXJJZGVudGlmaWVyKTsKICAgICBhdXRvKiByZXNvbHZlclBvaW50ZXIg
PSByZXNvbHZlci5nZXQoKTsKICAgICBtX3Jlc29sdmVycy5zZXQocmVzb2x2ZXJQb2ludGVyLT5p
ZGVudGlmaWVyKCksIFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4gcmVzb2x2ZXJQb2lu
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDJkMWU4NDI0N2JkMGEzMGM5
NGQxZjJlYTMwMWRkNTVkMDJhNmUwNzYuLmIyNzEzZjQ2YzFmYzEzYzlmMjdiYmUzOWNhNWRjNTE4
NTBiMTgzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViTm90aWZpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJG
dW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggMTZhMWE3ZjgzNDQ2MDUzZjMzZDY1NGU4MzMzMjI5
NTBlZTk5NGQ3Mi4uZDczZjFmMTZmODkwNzY5YzcyY2M5ZGQ0NDBkMjI5MjFmZjVmZmE5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjbGFz
cyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7CiAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1
Y3Rpb25Qcm90ZWN0b3IoTmV0c2NhcGVQbHVnaW4qIHBsdWdpbikKICAgICB7CiAgICAgICAgIGlm
IChwbHVnaW4pCi0gICAgICAgICAgICBtX3Byb3RlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1
Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBs
dWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CisgICAgICAgICAgICBtX3Byb3RlY3RvciA9
IG1ha2VVbmlxdWU8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+
KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CiAgICAgfQogICAg
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA2OWEzYzkzZjEzMjZmYTRj
NmY3ZmViZjhhYjFiMmNhNGM3NzZiYzBlLi41OWY0ODI1MWYyODg1NGM2ZDE2ODBiMWQ2NGRmYWE1
YTQ3YzY4MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAg
dWludDMyX3QgTmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIodW5zaWduZWQgaW50ZXJ2YWws
IGJvb2wgcmVwZWF0LCB2b2lkICgqdGkKICAgICAvLyBGSVhNRTogSGFuZGxlIHdyYXBwaW5nIGFy
b3VuZC4KICAgICB1bnNpZ25lZCB0aW1lcklEID0gKyttX25leHRUaW1lcklEOwogCi0gICAgYXV0
byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFs
LCByZXBlYXQsIHRpbWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+
KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAgICAgCiAgICAg
Ly8gRklYTUU6IEJhc2VkIG9uIHRoZSBwbHVnLWluIHZpc2liaWxpdHksIGZpZ3VyZSBvdXQgaWYg
d2Ugc2hvdWxkIHRocm90dGxlIHRoZSB0aW1lciwgb3IgaWYgd2Ugc2hvdWxkIHN0YXJ0IGl0IGF0
IGFsbC4KICAgICB0aW1lci0+c3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGUwYWJj
MmM3YjQxMjk5MzAwMmJiYWI4YmRmYWI3ZjI2NTFhZGM1N2YuLmI2Yzc2YjZlZDcxNGNhYWEzYTQx
ZGRlNDFjMWQ2YTEwNGZiN2FlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMzA4LDYgKzMw
OCw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiAgICAgVmVjdG9y
PGJvb2wsIDg+IG1fcG9wdXBFbmFibGVkU3RhdGVzOwogCiAgICAgY2xhc3MgVGltZXIgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVGltZXIpOwogCiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
Y3BwCmluZGV4IDA0OTYyOGY1YzYyNzAyZTRkNWQ0MTExODIwMTIzYmE1ZjRiOTY1MjQuLmJkYWEx
NDQ3ODQyMjY5NWQ1MGVhODQ4YWFmY2NiY2UxMmQyYWQ5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjpkZWxpdmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIAogICAg
IGlmIChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9k
ZWxpdmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPHVpbnQ4X3Q+PigpOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBtYWtl
VW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4oKTsKIAogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+cmVz
ZXJ2ZUNhcGFjaXR5KG1fZGVsaXZlcnlEYXRhLT5zaXplKCkgKyBsZW5ndGgpOwogICAgICAgICBt
X2RlbGl2ZXJ5RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRz
Y2FwZVBsdWdpblgxMS5jcHAKaW5kZXggNDRkMTFiNTdjM2VhNmQ1MThjMThkMDRiODIyZDI4NmQ1
M2U5NjhjZi4uMDdkNTU2YzNiN2ZjNjM3MTljMmEyNTU5ZTBhYWQ2YzIyNmMwN2NhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQbHVnaW5YMTE+IE5ldHNjYXBlUGx1Z2luWDExOjpjcmVh
dGUoTmV0c2NhcGVQbHVnaW4mIHBsdQogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChwbHVn
aW4uaXNXaW5kb3dlZCgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2Fw
ZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRvd0lEKTsK
ICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+
KHBsdWdpbiwgZGlzcGxheSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5Y
MTE+KHBsdWdpbiwgZGlzcGxheSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luWDExOjpOZXRzY2FwZVBs
dWdpblgxMShOZXRzY2FwZVBsdWdpbiYgcGx1Z2luLCBEaXNwbGF5KiBkaXNwbGF5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmlu
ZGV4IGExZjgwN2UxZTU1MDcyM2VmZWVhMTc3MTMzYjgxZGZmNGQxNzZiMzUuLmI1NzJhYTNhNTM2
ZDQ4NWNiOWI4MTdhMTZlMDJjMzMyYzRiYzIxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE1OSw2ICsxNTksNyBA
QCBjbGFzcyBQbHVnaW5Db250cm9sbGVyIHsKIAogICAgIC8vIEhlbHBlciBjbGFzcyBmb3IgZGVs
YXlpbmcgZGVzdHJ1Y3Rpb24gb2YgYSBwbHVnLWluLgogICAgIGNsYXNzIFBsdWdpbkRlc3RydWN0
aW9uUHJvdGVjdG9yIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgogICAgICAgICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihQbHVnaW5D
b250cm9sbGVyKiBwbHVnaW5Db250cm9sbGVyKQogICAgICAgICAgICAgOiBtX3BsdWdpbkNvbnRy
b2xsZXIocGx1Z2luQ29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBmMzdjMmNjMjRlM2RkOTc2M2YzZWJkZDYzMmQ4
YmZkYjc3MTQ0MzQ3Li45YWI1ODM3MzBiODlkYmQ5NjAxZDY1MjBlZjhmOWIwYmUwMDZkYzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
CkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFBsdWdpblByb3h5KHRo
aXMpOwogCiAgICAgLy8gQXNrIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRlIGEgcGx1Zy1p
bi4KLSAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMgPSBtYWtlVW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsK
IAogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGx1Z2luSW5zdGFuY2VJ
RCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMtPndpbmRvd05QT2JqZWN0SUQgPSB3aW5kb3dOUE9iamVjdElEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDdhYjg5NjZk
YjkwNWFkZDEyMzk0ODE2NTBiMTlkZTRhN2U3ZDIyM2YuLjExOWQyYjkwYzJiNDQyMzFmMjU2OTU3
ZTYyZGRjYThmMTMwZmM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC04OTgsNyArODk4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50JiBldmVudCkgY29u
c3QKICAgICBpZiAoZXZlbnQubWV0YUtleSgpKQogICAgICAgICBtb2RpZmllcnMuYWRkKFdlYkV2
ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNv
bnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgp
KSksIGV2ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVy
cywgV2FsbFRpbWUgeyB9LCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNb3VzZUV2ZW50
Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RW
aWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50LnNj
cmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWUg
eyB9LCAwKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCYgZXZlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmZjMDljNGY2NWIyNDVi
NjBiZjRkNGY1OTdhOWY5MGFkNGQwYWFmOS4uYTFmZjAzM2IyMDRlYWZhZGM4ODhhODIwOGE4OWY3
OWRhMDBiY2Y5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTUz
LDcgKzE1Myw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxT
ZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250CiAKICAgICAvLyBGSVhNRTogVGhp
cyBtZXRob2Qgc2hvdWxkIGJlIG1vdmVkIGRpcmVjdGx5IHRvIFdlYkNvcmU6OlNXQ29udGV4dE1h
bmFnZXI6OkNvbm5lY3Rpb24KICAgICAvLyBJZiBpdCB3ZXJlbid0IGZvciBTZXJ2aWNlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQncyBkZXBlbmRlbmNlIG9uIFdlYkRvY3VtZW50TG9hZGVyLCB0aGlz
IGNvdWxkIGFscmVhZHkgaGFwcGVuLgotICAgIGF1dG8gZnJhbWVMb2FkZXJDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4oKnRoaXMsIHNlc3Np
b25JRCwgbV9wYWdlSUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZmZWN0aXZlVXNl
ckFnZW50KTsKKyAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxTZXJ2aWNl
V29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQsIG1fcGFnZUlELCArK21f
cHJldmlvdXNTZXJ2aWNlV29ya2VySUQsIGVmZmVjdGl2ZVVzZXJBZ2VudCk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQu
Z2V0KCk7CiAgICAgbV9sb2FkZXJzLmFkZChXVEZNb3ZlKGZyYW1lTG9hZGVyQ2xpZW50KSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2lu
VGFibGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFi
bGUuaAppbmRleCA5MjBkZWQwNDBjZTU2MTgzMzk5ZjZjOTNiODJlYjM2ZGY3MzA0OTZhLi45MzBl
NDYxODE5ZTE4NmY1YTgwZDhmNjcxNmZiMTE4YzRkYzBlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCkBAIC0zNyw2ICsz
Nyw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViU1dPcmlnaW5UYWJsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViU1dPcmlnaW5UYWJsZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IDRkZjZmMDE5ZTU1ODU3NTUyYzg0ZGZhYjkyNTBj
NDAxYTg0Y2I4MzUuLmY0Y2YyOTFhNDAxMGIxZTdjMjQxNjdkNDU0YjU0ZWM0Yjg2NGM0ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4
dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAzYzg3MmY1YWRmMzliZWFjZDNh
NzA2NjdiMjY4OWQzOGM5YjExMTJlLi40ZDI3NDc2ODYyMGU1YTQ2ZWI5NTA4ZmRlNDdiNTcxZTc5
NmYxNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4sCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCYgY2xpZW50
LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwgaW5pdGlhbENvbG9yKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2UsICZjbGllbnQsIGlu
aXRpYWxDb2xvcik7CiB9CiAKICNlbmRpZgpAQCAtODAyLDcgKzgwMiw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENv
bG9yQ2hvb3NlckNsCiAKIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0
U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNs
aWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGNlZDM2YTZjMjViN2U0
ZjgzNDRhNTg5OTQwMDY3OTFmN2NjOTI3NmYuLmQ0NTU2ZDk4N2EzNjZkMTgxMTQwOGFkOTBiZjdh
MzQ3ZGQ1OThkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3Mg
V2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViUGFnZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oCmluZGV4IDZjMjliNGUwODEyNmU3Y2Q2Njc5Y2M0NzAyMzVjNTU3
NGRlNTBkMmUuLmMxYzg5Y2Q5OWU4N2FlZTg0ZWQ1NzQ2YzJlODFmNjQ3ZTgyZjFmYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAg
ICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCAxYWQ0YzNkZTJjYjdkMzhl
NjI2MmMxOTdhYWIyNGNjYTZmZWRhODIxLi5iMjRlY2Y3NmM0NTUyNGY2MGQ4NmFlZDZmYjFlY2Y2
ZjBmMzk0MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdl
YkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkRyYWdDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAyNjgxMDJmZWExYTc3NTdlZDdlMTZkZGVjY2UzY2Fk
OGVlNmJkNDM1Li5kMjJkNGNiNzNmMjk3M2Y1NjU1YTg3M2ViZDIyZDZiMDA2YWUwZjNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQo
V2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKaW5kZXggMzBmNWFkNmI0YmMyYTYzOGQ2MDM3ZjhlYzk3MzgwOWRmNmU1NmIxOC4u
MzVhMzFmYzJhMzQ0YjMxMjg3MzA1MDRiN2ZlN2ExMTVmMDExYjg4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlOwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgOiBt
X3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggN2NkYWFjZDFmYzFk
NDZkNjVlYWRjM2YzYTYxMzRhYTM1NThhMmQxMS4uZDY3YjYyYzAyZTY4ODNiNDQ4NjVmYmExNTg1
MTZlYTBjYmNiNWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE1MSw3ICsx
NTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiAgICAgfQogCiAgICAgaWYgKCFtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGll
bnQpCi0gICAgICAgIG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7CisgICAgICAgIG1fcGFpbnRJ
bmRpY2F0b3JMYXllckNsaWVudCA9IG1ha2VVbmlxdWU8UmVwYWludEluZGljYXRvckxheWVyQ2xp
ZW50PigqdGhpcyk7CiAKICAgICBhdXRvIHBhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVh
dGUobV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqbV9wYWlu
dEluZGljYXRvckxheWVyQ2xpZW50KTsKICAgICAKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAg
ICAgcGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKDEuMGYsIDAuMGYsIDAuMGYs
IDAuMmYpKTsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZhZGVLZXlmcmFtZXMoQW5pbWF0ZWRQ
cm9wZXJ0eU9wYWNpdHkpOwotICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlx
dWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0
KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOwogCi0gICAgZmFkZUtleWZy
YW1lcy5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1LCAw
KSk7CisgICAgZmFkZUtleWZyYW1lcy5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZh
bHVlPigwLjI1LCAwKSk7CiAgICAgCiAgICAgYXV0byBvcGFjaXR5QW5pbWF0aW9uID0gQW5pbWF0
aW9uOjpjcmVhdGUoKTsKICAgICBvcGFjaXR5QW5pbWF0aW9uLT5zZXREdXJhdGlvbigwLjI1KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBmNWVjYzY0YzkyM2YzODZjNTBlN2I1Mjk3N2Vm
YzA5OWUwYmNmYWQ2Li4yN2MzZWUxNDJlMTYxNmU0MzVmNDhkNDFmMjcyNzE1ZmU4ZTAzODJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFdlYlBhZ2U7
CiBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3BlY3Rv
ckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHByaXZhdGUgV2ViQ29y
ZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBm
cmllbmQgY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogcHVibGljOgogICAgIFdl
Ykluc3BlY3RvckNsaWVudChXZWJQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oCmluZGV4IDUzM2JlODQwY2FkNzE0NTU1ZGFmMGFhMjA3MjhhM2M5MzM1
NWM5YmUuLjRiYjM3ZmRkNjA3Nzc0ZWQ4MDlhOTY3YTc3NTE1ZmJhZmI2ZWY2YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0zMiw2ICszMiw3IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBXZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQuaAppbmRleCAxNjM3YWQxMDk3ZDc2NDllNTBkZjc0ZjVlMDYyMjcyNzFmYWI4NDVhLi4wMGNj
MGEwOGQ5MjYwNGZkZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5X
ZWJOb3RpZmljYXRpb25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNw
cAppbmRleCA3OTAwODRjZTQ4ZDIyNmIxMGU2NjViODI4NDQzNDlmZGFhZmZlZTQ2Li42OWYwYWU4
Mjc5NTA3YjcyOTY1ZjY1YzIxNjg3M2M0ODFhZGY0ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9h
cmRPdmVycmlkZXMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZE92ZXJy
aWRlczo6YWRkT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3Ry
CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX292ZXJyaWRlc01hcC5hZGQocGFzdGVib2FyZE5hbWUs
IG51bGxwdHIpOwogCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4g
dHlwZU1hcCA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7
CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKHR5cGVNYXApOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsdWdJbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCmluZGV4IGY2ZTAxNDk1N2VkYzI3N2RiOTgzNzMxMjdl
YzEwNjNlOTM1NThjYjguLmNmOTBhNWRmY2ZkYTYzZWNiOTg5N2NjNjZkMGQ0ODEyOTQ0ODEzYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bHVnSW5DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z0luQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQbHVnSW5DbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6UGx1Z0luQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBXZWJQbHVnSW5DbGllbnQoV2ViUGFnZSYpOwogICAgIHZpcnR1YWwgfldl
YlBsdWdJbkNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCmluZGV4
IDVkZDY1YmZhMGQ1MGNjZmRiMTQ2MWZlYjNmZTUyNDFmY2FhMGZiYTYuLjYzZDc3NGU1YTk0Mjdj
NzM1YjUyNDkwYmQwMWNkNzlhYjc0YTEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQ
YWdlOwogCiBjbGFzcyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQoV2ViUGFnZSYpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCmluZGV4IGVhZDE3ZDMwZjA1
OTBkNzQ0NjcyMDU1Y2FkNzdkOTVjNmQwYTQ3NzAuLjdiZDg3NTkwNWE2NWM3N2Q5NmMzZjc4ODQw
MDE4NTgyY2ZhZjc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKQEAg
LTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogICAgIAog
Y2xhc3MgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFN5
bnRoZXNpc0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIDogbV9w
YWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggMTA5MzA0NTNjZTc5N2VkZDkw
ZGU3NmYwMzU0YjlhMWQ0MDZmMmU2ZS4uNjk1MjE3NGI5MTJjOTcxZTM1Nzg2ZTI3YzQ4MjI1ZDJm
Y2ExNDAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMjksNiArMjksNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlVzZXJNZWRpYUNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlJik7CiAg
ICAgfldlYlVzZXJNZWRpYUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDlj
ZmZjYzlhOWZkMmI2NDQ0OTIyZjg1NGFkOTdkMWQzMzFlNzBiMGUuLmIyNDU4MWM5N2U3YTg4MTZm
NDZhZjkzMTlhOTFlYTIxYjcyYmQ2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTU1MCw3
ICs1NTAsNyBAQCB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZShHcmFwaGljc0xheQogICAgICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgfSBlbHNl
IHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9z
dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQYWdlKTsKKyAgICAgICAg
bV9sYXllclRyZWVIb3N0ID0gbWFrZVVuaXF1ZTxMYXllclRyZWVIb3N0PihtX3dlYlBhZ2UpOwog
I2Vsc2UKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3Bw
CmluZGV4IGMwNzM5NmYwMmYxZmE2NWY0NWFjZWU3MmYxMzRmNGZiMmQ5ZTg5MDkuLjUzNThjZDY4
NjNiMzIyNjk1OGVlMjc0ZWZkMDMyYWQyMDA2NGRkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmVhdGUoV2ViUGFnZSYg
d2ViUGFnZSwgY29uc3QgV2ViUGFnZQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9u
OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNl
bmRpZgogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFn
ZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbGlmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykgfHwgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIGNhc2UgRHJhd2luZ0FyZWFU
eXBlQ29vcmRpbmF0ZWRHcmFwaGljczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPih3
ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKaW5kZXggMGYyNjQwM2ViYjcw
YTgxMWIxOGU5ODc5NWUxOWRlNzc0MGJlODM2MC4uMWE1MzVmMTdkOTdmNjY2ODM5NzI2OWE4NmUy
ODU3YjI5Yjk3MmEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgRmluZENvbnRyb2xsZXIgOiBwcml2YXRlIFdlYkNvcmU6
OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEZpbmRDb250cm9sbGVyKTsKIAogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA0NTJmNTNi
Y2VkYzAwNDdmNzMzZDFjMzRiY2Q3NjUxMTkyY2I4YmU2Li40NmU4YWEwOTk4NjQ1YThjZTVkMmQ3
Yjk1N2Y5OWFmZGMzOGY0NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjplbnN1cmVCYWNraW5nU3RvcmUoKQogICAgIEFTU0VSVChtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlQXR0YWNoZWQpOwogCiAgICAgaWYgKCFtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3Jl
KQotICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZT4odGhpcyk7CisgICAgICAgIG1fcHJvcGVydGllcy5iYWNr
aW5nU3RvcmUgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPih0aGlzKTsKIAog
ICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogfQpAQCAtNTIxLDcgKzUyMSw3IEBAIFRyYW5zZm9y
bWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dHJhbnNmb3JtKCkgY29uc3QKIAog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IHN0ZDo6
bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRp
ZXMudHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOwog
ICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OlRyYW5zZm9ybUNoYW5nZWQpOwogfQogCkBAIC01MzIsNyArNTMyLDcgQEAgVHJh
bnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzdWJsYXllclRyYW5zZm9y
bSgpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0
aWVzLnN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1h
dHJpeD4odmFsdWUpOworICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90
ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTdWJsYXllclRy
YW5zZm9ybUNoYW5nZWQpOwogfQogCkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAKIHZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7
Ci0gICAgbV9wcm9wZXJ0aWVzLmZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlck9wZXJh
dGlvbnM+KGZpbHRlcnMpOworICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gbWFrZVVuaXF1ZTxG
aWx0ZXJPcGVyYXRpb25zPihmaWx0ZXJzKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRp
ZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpGaWx0ZXJzQ2hhbmdlZCk7CiB9
CiAKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hh
cGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUgogICAgIGlmICht
X3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCAmJiAqbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRl
ZFJlY3QgPT0gcm91bmRlZFJlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvcGVydGll
cy5zaGFwZVJvdW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihy
b3VuZGVkUmVjdCk7CisgICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5p
cXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKICAgICBtX3Byb3BlcnRpZXMubm90
ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTaGFwZVJvdW5k
ZWRSZWN0Q2hhbmdlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKaW5kZXggMWNiZDFiNGJhNzlh
N2RmOWNlNTVlMDQyMWQ0NGU2NWI0MDg4MjFjMi4uMDk5NTM2YjkzYzAxMWFjM2YyYTA3M2MzY2E0
NjRmMDcyNjQ2OWNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2lu
Zzo6UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nKExheWVyVHlwZSBsYXllclR5cGUs
IFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBlLCBvd25lciwgY29u
dGV4dCkKLSAgICAsIG1fdGlsZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJv
bGxlcj4odGhpcykpCisgICAgLCBtX3RpbGVDb250cm9sbGVyKG1ha2VVbmlxdWU8VGlsZUNvbnRy
b2xsZXI+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggNWU1MGUwYmExZWYxMjQ2YzZhZTA4ZjI5ZDky
YTgzMGUwZGI0ZjIzNy4uNDQ0NmYzNGQwNGNjZmJmYmViMzY5YmE0NGMzMjA2YmYwZGQyM2VjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbQpAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2Um
IHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAg
ICAgOiBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHBhcmFtZXRl
cnMuZHJhd2luZ0FyZWFJZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9yZW1vdGVMYXllclRy
ZWVDb250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFn
ZSkpCisgICAgLCBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQobWFrZVVuaXF1ZTxSZW1vdGVMYXll
clRyZWVDb250ZXh0Pih3ZWJQYWdlKSkKICAgICAsIG1fcm9vdExheWVyKEdyYXBoaWNzTGF5ZXI6
OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcykpCiAgICAgLCBtX2xheWVyRmx1
c2hUaW1lcigqdGhpcywgJlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycykK
IHsKQEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpm
bHVzaExheWVycygpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6V2lsbENvbW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uLnRyYW5zYWN0aW9u
SUQoKSkpOwogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
OkNvbW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5z
YWN0aW9uKTsKLSAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6
RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1p
dExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVy
PihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJU
cmVlOjpyZWNlaXZlck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7
CiAgICAgY29tbWl0RW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAg
Ly8gRklYTUU6IE1vdmUgYWxsIGJhY2tpbmcgc3RvcmUgZmx1c2hpbmcgbWFuYWdlbWVudCB0byBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmgKaW5kZXggYWFkZTNkOWYxODQ0ZDdmMDVjMDkyMThkOGUyMDQ0ZDU4YTJmMDVmOC4uYjJi
ZGM0MWI3MjMzNmJiNmU0ODQ5MGY3MzFiMjQ4NWQyNzA3ODJkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYlBhZ2U7CiAKIGNsYXNzIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgOiBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKFdlYlBhZ2UmKTsKICAgICB+
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDYwY2ZkOGQyYTE3NTRhN2FjZWQ1OGQ2MWRm
MTdiZTRjMTQzMTM2OTQuLmJkZDRiMzk1MjU0YTcxNjc2MzlhZWNkNzM4NjBlMDcyZDY5YzQyZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTEyMCw3ICsxMjAsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1h
aW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogCiBSZWY8V2ViRnJhbWU+
IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7Ci0gICAgYXV0
byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50Pigp
KTsKKyAgICBhdXRvIGZyYW1lID0gY3JlYXRlKG1ha2VVbmlxdWU8V2ViRnJhbWVMb2FkZXJDbGll
bnQ+KCkpOwogICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRl
U3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFt
ZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVM
b2FkZXJDbGllbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAxMzM2NTcwZDkzYWE1MTEwNjk3ODU2MTE3MDI2MDg5M2I4YTNjZGI0
Li5kYjMyZGE0ODEzOWUxOWY3MTQyMTI1NjU0MGEyMTYzMjM0Y2M5MTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzgzLDIxICszODMsMjEg
QEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV90ZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHkobWFrZVVuaXF1ZVJlZjxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk+KCp0aGlzKSkK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi0gICAgLCBtX3Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCisgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IobWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAj
ZWxpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQogICAgICwgbV9hY2Nl
c3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1fc2V0Q2FuU3RhcnRNZWRp
YVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENhblN0YXJ0TWVkaWFU
aW1lckZpcmVkKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVu
dUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0
TWVudUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAs
IG1fZWRpdG9yQ2xpZW50IHsgc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpF
ZGl0b3JDbGllbnQ+KCkgfQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fbG9hZGVyQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkK
LSAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpKQotICAgICwgbV91aUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkKKyAgICAsIG1f
ZWRpdG9yQ2xpZW50IHsgbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGll
bnQ+KCkgfQorICAgICwgbV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fbG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKKyAgICAsIG1fcmVzb3VyY2VMb2Fk
Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50
PigpKQorICAgICwgbV91aUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VVSUNsaWVudD4oKSkKICAgICAsIG1fZmluZENvbnRyb2xsZXIobWFrZVVuaXF1ZVJlZjxGaW5k
Q29udHJvbGxlcj4odGhpcykpCi0gICAgLCBtX2luc3BlY3RvclRhcmdldENvbnRyb2xsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRoaXMpKQor
ICAgICwgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3Bl
Y3RvclRhcmdldENvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9s
bGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVycy51c2Vy
Q29udGVudENvbnRyb2xsZXJJRCkpCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgICwgbV9n
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihtYWtlVW5pcXVlUmVmPEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPigqdGhpcykpCkBAIC00NjQsMjEgKzQ2NCwyMSBA
QCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGx1Z0luQ2xp
ZW50ID0gbmV3IFdlYlBsdWdJbkNsaWVudCgqdGhpcyk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
bG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwogICAg
IHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVz
c1RyYWNrZXJDbGllbnQoKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dD4oKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7
CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5p
cXVlPFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24ucGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQZXJmb3JtYW5j
ZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xTdGF0
ZVRyYWNrZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkgeworICAg
IHBhZ2VDb25maWd1cmF0aW9uLndlYkdMU3RhdGVUcmFja2VyID0gbWFrZVVuaXF1ZTxXZWJHTFN0
YXRlVHJhY2tlcj4oW3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSB7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SXNVc2luZ0hpZ2hQZXJmb3Jt
YW5jZVdlYkdMKGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkpOwogICAgIH0pOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5z
cGVlY2hTeW50aGVzaXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNp
c0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRoZXNpc0Ns
aWVudCA9IG1ha2VVbmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50PigqdGhpcyk7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRp
b25NZXNzYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNs
aWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMpOwogI2Vu
ZGlmCiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9ICZX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpAQCAtNDkz
LDE0ICs0OTMsMTQgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9y
Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmFwcGxpY2F0aW9uTWFuaWZlc3QgPSBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTWFu
aWZlc3Q7CiAjZW5kaWYKIAotICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4o
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgLy8gU2V0IHRoZSBzZXNzaW9uSUQg
KmJlZm9yZSogdXBkYXRpbmcgdGhlIHByZWZlcmVuY2VzIGFzIHRoZSBwcml2YXRlQnJvd3NpbmdF
bmFibGVkIHByZWZlcmVuY2VzIG1heSBuZWVkIHRvIG92ZXJyaWRlIGl0LgogICAgIGlmIChwYXJh
bWV0ZXJzLnNlc3Npb25JRC5pc1ZhbGlkKCkpCkBAIC04NTMsNyArODUzLDcgQEAgdWludDY0X3Qg
V2ViUGFnZTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogdm9pZCBXZWJQYWdl
OjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGll
bnQpCiB7CiAgICAgaWYgKCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRN
ZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29u
dGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmpl
Y3RlZEJ1CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xp
ZW50KQogewogICAgIGlmICghZWRpdG9yQ2xpZW50KSB7Ci0gICAgICAgIG1fZWRpdG9yQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7
CisgICAgICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpFZGl0b3JDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3NCw3ICs4
NzQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZv
cm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGllbnQpIHsKLSAgICAg
ICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpG
b3JtQ2xpZW50PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTg4NCw3ICs4ODQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rgogdm9pZCBXZWJQYWdlOjpz
ZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50KQogewogICAgIGlm
ICghbG9hZGVyQ2xpZW50KSB7Ci0gICAgICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAgICAgICBt
X2xvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRl
ckNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTA1LDcgKzkwNSw3IEBA
IHZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KFdLQnVu
ZGxlUGFnZVBvbGljeUNsaWVudEJhc2UqCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxl
UmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghbV9yZXNvdXJjZUxvYWRD
bGllbnQpCi0gICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAgICAgIG1fcmVz
b3VyY2VMb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJj
ZUxvYWRDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9
IFdURk1vdmUoY2xpZW50KTsKIH0KQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNl
dEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklu
amVjdGVkQgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+JiYgdWlDbGllbnQpCiB7
CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQxMCwxNCArMTQxMCwxNCBAQCB2b2lkIFdl
YlBhZ2U6OmNsb3NlKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
bV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsK
ICNlbmRpZgotICAgIG1fZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwotICAgIG1fbG9hZGVy
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVy
Q2xpZW50PigpOworICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOworICAgIG1fbG9hZGVyQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOwogICAg
IG1fcG9saWN5Q2xpZW50LmluaXRpYWxpemUoMCk7Ci0gICAgbV9yZXNvdXJjZUxvYWRDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVu
dD4oKTsKLSAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKKyAgICBtX3Vp
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbkNsaWVudC5pbml0
aWFsaXplKDApOwogI2VuZGlmCkBAIC00Njk2LDcgKzQ2OTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmJl
Z2luUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8p
CiAjZW5kaWYKIAogICAgIGlmICghbV9wcmludENvbnRleHQpIHsKLSAgICAgICAgbV9wcmludENv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKKyAgICAg
ICAgbV9wcmludENvbnRleHQgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsK
ICAgICAgICAgbV9wYWdlLT5kaXNwYXRjaEJlZm9yZVByaW50RXZlbnQoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuY3BwCmluZGV4IDczNTY2YTEzMzg1ZGUzYWFjNjQ2ZmI5NDk2YmRk
YWZjYjVhZjQ2YjYuLjQ2NzM0ZmZmMjY5MWVhNjVhYmRmZjRmZTUwNDcwZmNjNGUzNGQxZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgV2ViUHJp
bnRPcGVyYXRpb25HdGs6OnByaW50KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgZG91YmxlIHhE
UEksIGRvdWJsZSB5CiB7CiAgICAgQVNTRVJUKG1fcHJpbnRDb250ZXh0KTsKIAotICAgIGF1dG8g
ZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOworICAgIGF1dG8g
ZGF0YSA9IG1ha2VVbmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOwogICAgIGlmICghZGF0YS0+
aXNWYWxpZCkgewogICAgICAgICBjYWlyb19zdXJmYWNlX2ZpbmlzaChzdXJmYWNlKTsKICAgICAg
ICAgcHJpbnREb25lKGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGZyYW1lVVJMKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxl
cklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJv
bGxlcklPUy5tbQppbmRleCA5YWJiMmE3OTI5OWQ1OTZiOTFlNmVmNjFjYTQzZWY4NjE5MGE5MDQ5
Li45MzQxOGFiMjFkNzRmYzk0NThhMDIyNGU0Y2I0OGE3MzQxNzgwOWY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVy
SU9TLm1tCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJ
bmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlCiAgICAgaWYg
KCF0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ZpbmRJbmRp
Y2F0b3JPdmVybGF5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGaW5kSW5kaWNhdG9yT3Zlcmxh
eUNsaWVudElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4dEluZGljYXRvci5nZXQoKSk7CisgICAgbV9m
aW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudCA9IG1ha2VVbmlxdWU8RmluZEluZGljYXRvck92ZXJs
YXlDbGllbnRJT1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOwogICAgIG1f
ZmluZEluZGljYXRvclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRJbmRpY2F0b3ItPnNlbGVj
dGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSk7CiAgICAgbV9maW5kSW5kaWNhdG9yT3Zl
cmxheSA9IFBhZ2VPdmVybGF5OjpjcmVhdGUoKm1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQs
IFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpOwogICAgIG1fd2ViUGFnZS0+Y29y
ZVBhZ2UoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KCptX2Zp
bmRJbmRpY2F0b3JPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0Fy
ZWFNYWMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdB
cmVhTWFjLmNwcAppbmRleCA5MDY4N2M5NzRhY2YzM2Q4MmI4YzY0Yjk0OGU2ZWU5YTMwZWUyZTlj
Li4wNmZjYzQ3MTU5M2ViNzhlZGViZmNjNjNmODk0NGIzZGZhZTlkYWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5j
cHAKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVl
c3RSZWZyZXNoQ2FsbGJhY2soKQogICAgIGlmICghbV9oYXNTZW50TWVzc2FnZSkgewogICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklE
LCBkaXNwbGF5SUQoKSksIDApOwogICAgICAgICBtX2hhc1NlbnRNZXNzYWdlID0gdHJ1ZTsKLSAg
ICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZl
cj4oa0NGUnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7CisgICAgICAgIG1fcnVuTG9vcE9ic2VydmVy
ID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3RoaXNdKCkg
ewogICAgICAgICAgICAgdGhpcy0+bV9maXJzdENhbGxiYWNrSW5DdXJyZW50UnVubG9vcCA9IHRy
dWU7CiAgICAgICAgIH0pOwogICAgICAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQppbmRleCBkZjYwMDM2NDU5OGYxMzQ2MjlkYWI2MjcwNmVhZjY4NjFlNWZmMzNkLi40Y2Iz
ZGY5YWVhNTI5ZWZmNTI2MzM2YzgxZjEzMDIwNDViYTNlMGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYShXZWJQYWdlJiB3
ZWJQYWdlLCBjCiAgICAgW21faG9zdGluZ0xheWVyIHNldE9wYXF1ZTpZRVNdOwogICAgIFttX2hv
c3RpbmdMYXllciBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKIAotICAgIG1fbGF5ZXJGbHVzaFJ1
bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVy
PihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BP
cmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9sYXllckZsdXNoUnVuTG9vcE9i
c2VydmVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0
PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJG
bHVzaCksIFt0aGlzXSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaFJ1bkxvb3BDYWxsYmFj
aygpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggYTJkYTEyYzYwMjI5MzczY2Y4Nzg5MmI4M2RhYTU3NzM1MDBhNzdmMi4uYTllMzc0NDRmYmQz
Njg0NGE0OTI4Yzk2MTIyZDc0ZWQxZjBmYmI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtMTU3Myw3ICsxNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjptYXJr
QWxsTGF5ZXJzVm9sYXRpbGUoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW4KICAgICBBU1NFUlQoIW1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlcik7CiAg
ICAgbV9jb3VudE9mUGFnZXNGYWlsaW5nVG9NYXJrVm9sYXRpbGUgPSAwOwogCi0gICAgbV9wYWdl
TWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTWFy
a2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyPihbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50ZXJFdmVudCkgeworICAgIG1fcGFn
ZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlciA9IG1ha2VVbmlxdWU8UGFnZU1hcmtpbmdM
YXllcnNBc1ZvbGF0aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKICAgICAgICAgaWYgKG1f
cGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlci0+dmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMTgzOCw3ICsxODM4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmFi
bGVkU2VydmljZXMoYm9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnYK
IAogdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkZW50aWZpZXIpCiB7Ci0gICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PihzZXNzaW9uSWRl
bnRpZmllcik7CisgICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gbWFrZVVuaXF1ZTxXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5PihzZXNzaW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzczo6ZGVzdHJveUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQpAQCAtMTg3MSw3ICsxODcx
LDcgQEAgYm9vbCBXZWJQcm9jZXNzOjpoYXNWaXNpYmxlV2ViUGFnZSgpIGNvbnN0CiBMaWJXZWJS
VENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIHsKICAgICBpZiAoIW1f
bGliV2ViUlRDTmV0d29yaykKLSAgICAgICAgbV9saWJXZWJSVENOZXR3b3JrID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENOZXR3b3JrPigpOworICAgICAgICBtX2xpYldlYlJUQ05ldHdvcmsg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ05ldHdvcms+KCk7CiAgICAgcmV0dXJuICptX2xpYldlYlJU
Q05ldHdvcms7CiB9CiAKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBh
Z2VHCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNX
Q29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25u
ZWN0aW9uIGFzIHRoZQogICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hy
b25pemF0aW9uIHB1cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBz
dG9yZSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24o
bWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwg
cGFnZUdyb3VwSUQsIHBhZ2VJRCwgc3RvcmUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCmluZGV4IGQ0YzAxYmFiMWY5M2RhOTA4NWIwZjIxOTRjZDMyN2Q0NzE4NjUwYjIuLjJmNGZi
NTMwYWJjZWQ3ZWZjNzM3NjQyMjMwOWZkMzE4ODdhNDdiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaApAQCAtMTMzLDYgKzEzMyw3IEBAIGNsYXNzIFdlYlByb2Nlc3MKICAg
ICAsIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlcjo6Q2xpZW50CiAjZW5kaWYKIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUHJvY2VzcyYgc2lu
Z2xldG9uKCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSA9
IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50OwpAQCAtMTQ2LDcgKzE0Nyw3IEBAIGNsYXNzIFdlYlBy
b2Nlc3MKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZFN1cHBsZW1lbnQo
KQogICAgIHsKLSAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwg
c3RkOjptYWtlX3VuaXF1ZTxUPigqdGhpcykpOworICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChU
OjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFQ+KCp0aGlzKSk7CiAgICAgfQogCiAgICAg
V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKiB3ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25z
dCB7IHJldHVybiBtX3dlYkNvbm5lY3Rpb24uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmlu
ZGV4IDI3MjBiODZmY2QyZmZlZTYwMjJmNWFkNWVlZDUwYmNmMzY5MmQ3ZjguLjlhZjAwZWU4YWEw
ZjFjZDg0MGE4MTczNzkwZmEwNjIzMDA0NmZkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlIDogcHVi
bGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogICAgIHsKICAgICAgICAgQVNTRVJUKGRldmljZVR5
cGUgIT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bik7CiAgICAgICAgIGlmICh0
eXBlID09IFR5cGU6OkF1ZGlvKQotICAgICAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2U+KG51bGxwdHIpKTsKKyAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FS
aW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRy
KSk7CiAgICAgfQogCiAgICAgflNvdXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmluZGV4IGJhZWQwY2Q5
ZTA5YjQ5ZDIyMWU5NDAxOGY2NDlmZTZkYmNmOTI1MTkuLmMxZDQzZmNiM2FmNTg0MTQ1M2FkMzQz
NGM3Y2Y5M2ViZmM5ZTdlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC00Niw2ICs0Niw3IEBAIGNs
YXNzIENyb3NzUHJvY2Vzc1JlYWx0aW1lQXVkaW9Tb3VyY2U7CiBjbGFzcyBXZWJQcm9jZXNzOwog
CiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxl
bWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9D
YXB0dXJlRmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OlZpZGVvQ2FwdHVyZUZhY3RvcnksIHB1Ymxp
YyBXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdl
YlByb2Nlc3MmKTsKICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGI0N2Qx
ZDhhZmEwM2ZlZDM2ZGVjYWQ5ODlkNzJkYmM0MTg0ODdmNTkuLjNiOTA2YTgwYzVhZDhmNjliZWY3
N2Y5YThjNzY0YWY4MDlmNDk1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZShQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXI6
OlRhc2tTdGF0ZSB0CiAKICAgICAvLyBXZSB3ZXJlIGF3YWtlbmVkIGZyb20gc3VzcGVuc2lvbiB1
bmV4cGVjdGVkbHkuIE5vdGlmeSB0aGUgV2ViUHJvY2Vzc1Byb3h5LCBidXQgdGFrZSBhIHByb2Nl
c3MgYXNzZXJ0aW9uIG9uIG91ciBwYXJlbnQgUElECiAgICAgLy8gdG8gZW5zdXJlIHRoYXQgaXQg
dG9vIGlzIGF3YWtlbmVkLgotICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1v
dGVQcm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0aW9uU3RhdGU6OkJh
Y2tncm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CisgICAgYXV0byB1aVByb2Nl
c3NBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5IHJlc3VtZWQiLCBB
c3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5pc2hUYXNrKTsK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlByb2Nlc3NQcm94eTo6UHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKCks
IFt1aVByb2Nlc3NBc3NlcnRpb24gPSBXVEZNb3ZlKHVpUHJvY2Vzc0Fzc2VydGlvbildIHsgfSk7
CiB9CiAjZW5kaWYKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUNQ
VU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uIHJlYXNvbikKICAgICB9CiAKICAg
ICBpZiAoIW1fY3B1TW9uaXRvcikgewotICAgICAgICBtX2NwdU1vbml0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENQVU1vbml0b3I+KGNwdU1vbml0b3JpbmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJsZSBj
cHVVc2FnZSkgeworICAgICAgICBtX2NwdU1vbml0b3IgPSBtYWtlVW5pcXVlPENQVU1vbml0b3I+
KGNwdU1vbml0b3JpbmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2FnZSkgewogICAgICAg
ICAgICAgaWYgKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlNlcnZpY2VXb3JrZXIpCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAg
LSBTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGV4Y2VlZGVkIENQVSBsaW1pdCBvZiAlLjFmJSUgKHdh
cyB1c2luZyAlLjFmJSUpIiwgdGhpcywgbV9jcHVMaW1pdC52YWx1ZSgpICogMTAwLCBjcHVVc2Fn
ZSAqIDEwMCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDM2OTA5NWNkYWQxZDM0NzExYTA2
NzZkODczNmE5MGUxOTNlMjkwNWUuLjIyOGY0YTM2ZDRiMGYyMjJjMTc4NjBkMGJjNDk4YzFmOWUw
ODlhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3lu
Y01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3lu
Y01hbmFnZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlZjxTdG9yYWdlU3luY01hbmFnZXI+IFN0
b3JhZ2VTeW5jTWFuYWdlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKIH0KIAogU3RvcmFn
ZVN5bmNNYW5hZ2VyOjpTdG9yYWdlU3luY01hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoKQotICAg
IDogbV90aHJlYWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQorICAgIDogbV90
aHJlYWQobWFrZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9wYXRoKHBhdGguaXNv
bGF0ZWRDb3B5KCkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAppbmRleCA0NDM5MzgyOTVmNGUx
YzI5ZGQwNDg2YjQzMWJhN2ZlYTM1MjlkMTZkLi45Yzc1MTRlMzQ2MmM0YjRkOGE4NTYwNWVkMDI5
ZGJkMTkyNWQ2YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VU
aHJlYWQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2go
RnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIEFTU0VSVCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVhZCk7Ci0gICAgbV9x
dWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShm
dW5jdGlvbikpKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQg
KCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogfQogCiB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1p
bmF0ZSgpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkK
ICAgICBpZiAoIW1fdGhyZWFkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3F1ZXVlLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10geworICAgIG1fcXVl
dWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CiAgICAgICAg
IHBlcmZvcm1UZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAgbV90aHJlYWQtPndhaXRGb3JDb21w
bGV0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2Vy
LmNwcAppbmRleCBiOTM0ZDFhM2IxYmFhODMxYWRkZjNhYmU1ZTA3NzBhYjFjZjc3ZmEyLi44MDZj
YjA5OTVkMGEwN2M3MTgyNzFkMjEwNTA3MDM5OGM0MDNiYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgU3Rv
cmFnZVRyYWNrZXImIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkKIFN0b3JhZ2VUcmFja2VyOjpT
dG9yYWdlVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKQogICAgIDogbV9zdG9yYWdl
RGlyZWN0b3J5UGF0aChzdG9yYWdlUGF0aC5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fY2xpZW50
KDApCi0gICAgLCBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCisg
ICAgLCBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAgICAgLCBtX2lzQWN0
aXZlKGZhbHNlKQogICAgICwgbV9uZWVkc0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwgbV9T
dG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZGVmYXVsdFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRl
cnZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAppbmRleCA0M2VhNDVkYWU4OTIwNmM4
MjlhNTE0ZDRkYThlM2QxYzk3Y2MxMjg0Li44NTFjYzEwMTdkZWQwMGMwNmQ0NmQyYzg1OWQ3MDAw
MGI2ZDcyZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjpzdG9yYWdlU2Vzc2lvbihjb25zdCBQCiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKIHsK
ICAgICBpZiAoIWRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgZGVmYXVs
dE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwor
ICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7CiAgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAK
QEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKQogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0Yo
X0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBzZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdU
Rk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24o
KSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tp
ZVN0b3JhZ2UpKTsKICNlbmRpZgogfQogCkBAIC0xMDAsMTEgKzEwMCwxMSBAQCB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYg
c2Vzc2lvbklELCBjbwogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJM
U3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9y
YWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vz
c2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7
CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBX
VEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKIAogI2VsaWYgVVNFKENVUkwpCiAgICAgZ2xvYmFsU2Vz
c2lvbk1hcCgpLmVuc3VyZShzZXNzaW9uSUQsIFtzZXNzaW9uSURdIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9u
SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KHNlc3Npb25JRCk7CiAgICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAKaW5kZXggMTg3NmI5NjBiOTQ3MDgxNGMzNTBiYzU5MjZhNGM4MWFlZGYzOTAyMy4u
N2I4Njk4MWEzZjQ4ZTUwZjhiM2NjYWMzNzA2OTE3ZDRhZjFmZGJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAKQEAgLTE1OSw1ICsxNTksNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IFdlYkluc3BlY3RvckNs
aQogICAgICAgICAgICAgZGVsZXRlU2V0dGluZyhuYW1lKTsKICAgICAgICAgfQogICAgIH07Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudElPUy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKaW5kZXggM2IxYTQ1MDcwNzhmYTRjYzA2OGU3NDAzMDMy
MjEyMzliMmFkNzEyMy4uMTQ1NzcyMjJhOWUxM2U2M2U0OTFkNmQzYjkyY2ExYmM4OWU3Y2IwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIldlYkNo
cm9tZUNsaWVudC5oIgogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnRJT1MgZmluYWwgOiBwdWJsaWMg
V2ViQ2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJDaHJvbWVDbGllbnRJT1MoV2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBXZWJD
aHJvbWVDbGllbnQod2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KaW5k
ZXggMjE3YTRlZDBhODVhNmJiNDE0ZDMxOTRjYjdiZmFlZmRlMDM2ZDQ3YS4uOGRhZDYwNDQ2MmY4
Mzc2NDU3M2YwMDYyOWVhMTA0OWVlYjg2ZGMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnQubW0KQEAgLTE3OCw3ICsxNzgsNyBAQCAtICh2b2lkKXNldFZpZXdwb3J0Q29uc3RyYWlu
ZWRMYXllcnM6KFdURjo6SGFzaE1hcDxDQUxheWVyICosIHN0ZDo6dW5pcXVlX3B0cjxXZQogCiAg
ICAgZm9yIChhdXRvJiBsYXllckFuZENvbnN0cmFpbnRzIDogbGF5ZXJNYXApIHsKICAgICAgICAg
Q0FMYXllciogbGF5ZXIgPSBsYXllckFuZENvbnN0cmFpbnRzLmtleTsKLSAgICAgICAgYXV0byBs
YXllckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+
KCk7CisgICAgICAgIGF1dG8gbGF5ZXJEYXRhID0gbWFrZVVuaXF1ZTxWaWV3cG9ydENvbnN0cmFp
bmVkTGF5ZXJEYXRhPigpOwogCiAgICAgICAgIGxheWVyRGF0YS0+bV9lbmNsb3NpbmdBY2NlbGVy
YXRlZFNjcm9sbExheWVyID0gc3RpY2t5Q29udGFpbmVycy5nZXQobGF5ZXIpOwogICAgICAgICBs
YXllckRhdGEtPm1fdmlld3BvcnRDb25zdHJhaW50cyA9IFdURk1vdmUobGF5ZXJBbmRDb25zdHJh
aW50cy52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5
L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnkubW0KaW5kZXggYThiNmEwNDM5M2VjMDAwMTQ2NTM4ZDRjZjY1YmQ2NDBjNzRiZDkwMS4uNWFk
ODFiNGEzYjQ5YjVkMDYzOTM2NTY4M2ExYmNmNWQ1N2VmMzg2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtMTMzLDcgKzEzMyw3IEBAIC0g
KGlkKWluaXQKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBfZW50cmllc0J5VVJMID0g
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBfZW50cmllc0J5RGF0ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKKyAgICBfZW50cmllc0J5RGF0
ZSA9IG1ha2VVbmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKIAogICAgIHJldHVybiBzZWxmOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5
SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0u
bW0KaW5kZXggYjczOTU5MzVlNTEwYmYzYjdmMGM0OGVkZDQzNmM1OGJiYzQ4MWQ4ZS4uODZmOWQz
ZDQyMjM4NDZiYzk1Y2JjOTU2NDVhMWNhNzMyMGFmZTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0zNDgsNyArMzQ4LDcg
QEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5TRGljdGlvbmFyeSAq
KWRpY3QKICAgICAgICAgY29yZShfcHJpdmF0ZSktPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1
ZSk7CiAgICAgCiAgICAgaWYgKE5TQXJyYXkgKnJlZGlyZWN0VVJMcyA9IFtkaWN0IF93ZWJraXRf
YXJyYXlGb3JLZXk6cmVkaXJlY3RVUkxzS2V5XSkgewotICAgICAgICBhdXRvIHJlZGlyZWN0VVJM
c1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIGF1
dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAg
ICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtyZWRpcmVj
dFVSTHMgY291bnRdKTsKIAogICAgICAgICBmb3IgKGlkIHJlZGlyZWN0VVJMIGluIHJlZGlyZWN0
VVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRleCBlMTdjNzg4MWE1
MTdmMGMzNTVmODc1NjliNjBkYTNmMjE1YTFlYmE3Li5mNWU3ZmJjZjEyZTQ3ZjkwZGVlZjFlYTJj
ZmViNzE3NDI2ODgwYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAt
NDkzLDcgKzQ5Myw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0dldFNjcmlwdGFibGVOUE9iamVjdFJl
cGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsCiAgICAgaWYgKCFpbnN0YW5j
ZVByb3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAgaW5zdGFuY2VQcm94
eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmplY3RJRCkp
OworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlx
dWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBs
eT4ob2JqZWN0SUQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCkBAIC01MDksNyAr
NTA5LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhblJlcGx5KG1hY2hfcG9ydF90IGNsaWVu
dFBvcnQsIHVpbnQzMl90IHBsdWdpbklELCB1aW50MzIKICAgICBpZiAoIWluc3RhbmNlUHJveHkp
CiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAgICAgCi0gICAgaW5zdGFuY2VQcm94eS0+
c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CisgICAgaW5zdGFuY2VQcm94
eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CiAgICAgcmV0dXJuIEtFUk5fU1VD
Q0VTUzsKIH0KIApAQCAtNTI4LDcgKzUyOCw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5B
bmREYXRhUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQsCiAg
ICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBy
ZXN1bHQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4o
cmVzdWx0RGF0YSksIHJlc3VsdExlbmd0aCkpOwotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJl
bnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwgcmVzdWx0KSk7CisgICAg
aW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJldHVyblZhbHVl
LCByZXN1bHQpKTsKICAgICAKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQpAQCAtNTQ1LDcg
KzU0NSw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0luc3RhbnRpYXRlUGx1Z2luUmVwbHkobWFjaF9w
b3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5
KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0
Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwgcmVuZGVyQ29udGV4
dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkpKTsKKyAgICBpbnN0
YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBseT4ocmVzdWx0LCByZW5k
ZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4ocmVuZGVyZXJUeXBlKSkpOwog
ICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5LmgKaW5kZXggMTBhMDhlOTUwYTNkYzBjOTM2NzFmMWZjMWM3NGM5NDc3OTNhMDdl
OC4uZTU2YTEwM2EyOGE3NjBmOWNlMGI5N2U3MWRkNmIyM2E2MGM1M2U4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBjbGFzcyBO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveAogCiAgICAgLy8gUmVwbHkgc3RydWN0cwogICAgIHN0cnVjdCBSZXBs
eSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZW51
bSBUeXBlIHsKICAgICAgICAgICAgIEluc3RhbnRpYXRlUGx1Z2luLAogICAgICAgICAgICAgR2V0
U2NyaXB0YWJsZU5QT2JqZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMjAyYzZkZWFmMTNkMDdjNmUz
YTU2OThiMWNkYjU5YTE5YjVkYTAzOS4uNTJiZjdiZDEyZTRlMzcxMmQzMTQ3NWUyYTUzOWE0Mjhj
ZmY4ZmE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgTWV0aG9kKiBQcm94
eUluc3RhbmNlOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8v
IEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hp
bGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX21l
dGhvZHMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAobWFwQWRkUmVzdWx0Lmlz
TmV3RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm94eU1ldGhvZD4obWV0aG9kTmFtZSk7Cisg
ICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5TWV0
aG9kPihtZXRob2ROYW1lKTsKIAogICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmdldCgpOwogfQpAQCAtMzk3LDcgKzM5Nyw3IEBAIEZpZWxkKiBQcm94eUluc3RhbmNlOjpm
aWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEgbmV3IGVu
dHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGlu
IHdhaXRGb3JSZXBseS4KICAgICBhdXRvIG1hcEFkZFJlc3VsdCA9IG1fZmllbGRzLmFkZChuYW1l
LmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJl
cGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CisgICAgICAgIG1hcEFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIp
OwogICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWM3MWEzY2M5MjNm
MzNkMmUwYWIzOWExYmY2YjE0YjQ0M2U5NGQ0Yi4uZWUxOWM1NjdjMDFmYTE4YzVlOGRjNjFiMDhj
ODk0ZTUyMDAyZGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5t
bQpAQCAtNjAsNiArNjAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogbmFtZXNwYWNlIFdl
YktpdCB7CiAgICAgCiBjbGFzcyBTb2Z0d2FyZUNBUmVuZGVyZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFNvZnR3YXJlQ0FSZW5kZXJlcih1
aW50MzJfdCBjb250ZXh0SUQpCiAgICAgICAgIDogbV9jb250ZXh0IHsgW0NBQ29udGV4dCBsb2Nh
bENvbnRleHRdIH0KQEAgLTE2OCw3ICsxNjksNyBAQCAtIChCT09MKWNyZWF0ZVBsdWdpbgogICAg
ICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoX3Byb3h5LT5yZW5kZXJlclR5cGUoKSA9PSBVc2VT
b2Z0d2FyZVJlbmRlcmVyKQotICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9IHN0ZDo6bWFrZV91
bmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRleHRJRCgpKTsKKyAg
ICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBtYWtlVW5pcXVlPFNvZnR3YXJlQ0FSZW5kZXJlcj4o
X3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CiAgICAgZWxzZQogICAgICAgICBbc2VsZiBjcmVh
dGVQbHVnaW5MYXllcl07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQppbmRl
eCBmN2FlZGJjZWQ0ZDdmNWM0YmEzZTk2ZTM1NjFjYTdmMGIyNjVjOGFjLi44ZWMxYmY3OWVlMzJh
MmFjMWJiY2Y3YTIxZTczZTdlMWUwMWRiMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXIubW0KQEAgLTM1LDcgKzM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3IKIHsKICAgICBz
d2l0Y2ggKFtwbHVnaW5WaWV3IGV2ZW50TW9kZWxdKSB7CiAgICAgY2FzZSBOUEV2ZW50TW9kZWxD
b2NvYToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmlldyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdpblZpZXcpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKaW5kZXggNzA4Mzc3
NmQyOGE3NWNmYjU0MjUzM2Q5MGYzNzc4ZTg1YWJjZDFkMi4uYmJkOWM1ZDU4MjFmODVmNjVlYmM4
Zjc3N2VjNjU1MjI5ZDVlODlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNv
Y29hLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50
SGFuZGxlci5oIgogCiBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hIDog
cHVibGljIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNv
Y29hKFdlYk5ldHNjYXBlUGx1Z2luVmlldyopOyAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAwMmZm
MjE4NmRmODRhOWE5MGQ3ZTljMjZjMDc2Mjc5ZTMyMjExMzc4Li4xNjA2NjNlODYxZjcxMGViZmVk
MWQ3Njg1NjVkZDIyYTExNGU4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTY1NSw3ICsxNjU1
LDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoodWludDMyX3QpaW50
ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0IHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAg
ICAgaWYgKCF0aW1lcnMpCi0gICAgICAgIHRpbWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1h
cDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7CisgICAgICAgIHRp
bWVycyA9IG1ha2VVbmlxdWU8SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdp
blRpbWVyPj4+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+KiBzbG90Owog
ICAgIHVpbnQzMl90IHRpbWVySUQ7CkBAIC0xNjYzLDcgKzE2NjMsNyBAQCAtICh1aW50MzJfdClz
Y2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCByZXBlYXQ6KE5QQm9v
bClyZXBlYXQgdAogICAgICAgICB0aW1lcklEID0gKytjdXJyZW50VGltZXJJRDsKICAgICB3aGls
ZSAoIXRpbWVycy0+aXNWYWxpZEtleSh0aW1lcklEKSB8fCAqKHNsb3QgPSAmdGltZXJzLT5hZGQo
dGltZXJJRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlKSk7CiAKLSAgICBhdXRvIHRpbWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1Z2luLCB0aW1lcklELCBpbnRlcnZhbCwg
cmVwZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFBsdWdpblRp
bWVyPihwbHVnaW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAKICAg
ICBpZiAoX3Nob3VsZEZpcmVUaW1lcnMpCiAgICAgICAgIHRpbWVyLT5zdGFydChfaXNDb21wbGV0
ZWx5T2JzY3VyZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9T
dG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQppbmRleCA3MDRjZDA5NWU4OGZlMWEy
MzgxMTg2YzZiZmYxMzBmYzkwMjA0MWViLi41N2ZiYmZhZDllNjRiNzY3OGFkM2FjY2U4MDc3OGJh
Y2YwMzc4MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9T
dG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQpAQCAtOTQsMTAgKzk0LDExIEBAIFdl
YkRhdGFiYXNlTWFuYWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpCiB9CiAK
IGNsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFi
YXNlTWFuYWdlckNsaWVudCYgY2xpZW50LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
bikKICAgICB7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlkTW9k
aWZ5T3JpZ2luRGF0YT4oY2xpZW50LCBvcmlnaW4pOworICAgICAgICBhdXRvIGNvbnRleHQgPSBt
YWtlVW5pcXVlPERpZE1vZGlmeU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2luKTsKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbY29udGV4dCA9IFdURk1vdmUoY29udGV4dCldIHsKICAgICAgICAg
ICAgIGNvbnRleHQtPmNsaWVudC5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihjb250ZXh0LT5vcmln
aW4pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXgg
YTNiMTU5OGVlMzUzZDY3ZTIzYWY4MDk1OGViN2Y3NWViMTY3ZjRkOC4uY2Q3MjY0MjY4MjViYTcy
MjE1NTdlMDU2NmZhOTJlYzA4MTExNDVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmlldyopOwogICAgIHZpcnR1YWwgfldlYkFsdGVy
bmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgK
aW5kZXggNzhiNTM5ZTM3MmI4NjVjNTk0ZmMwNzZmNWExZmM4NGFhZmU5OGJmMC4uMjcxNDI3ZTJk
NDZlZTNhMjk3ZDA1NDAxMmE3YTg1YWI4YjNlMWIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIDogcHVibGljIFdlYkNvcmU6
OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShpZCB3ZWJEb2N1bWVudFZp
ZXcpIDogbV93ZWJEb2N1bWVudFZpZXcod2ViRG9jdW1lbnRWaWV3KSB7IH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggZmRjNGNjNzgxOTZmY2JjZjMyNjAyZDE4ZTI4OWYwN2ExMTU0Y2M5NS4u
YzBmYmRhOWIyZGExZGQ0NTEwZmZlMDg5YmY2OGY1YTc2N2RkNDE2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIC8vIGJhc2UgY2xh
c3Mgb2YgdGhlIGNvbmNyZXRlIGNsYXNzLCBXZWJDaHJvbWVDbGllbnRJT1MuIEJlY2F1c2Ugb2Yg
dGhhdCwgdGhpcyBjbGFzcyBhbmQKIC8vIG1hbnkgb2YgaXRzIGZ1bmN0aW9ucyBhcmUgbm90IG1h
cmtlZCBmaW5hbC4gVGhhdCBpcyBtZXNzeSB3YXkgdG8gb3JnYW5pemUgdGhpbmdzLgogY2xhc3Mg
V2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZp
ZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMTg4NWYwMzEzMTM1YjgxN2Iz
MGY5NDU3NzdkOGUyNGIxNTM5YmY5MC4uYTdmNjZlZWVmMzA2YTY4NjA1NDIwZTc5ODc2MjAyNTdi
ZTA2YjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC00NCw2ICs0NCw3IEBAIGNs
YXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xp
ZW50CiAgICAgLCBwdWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKICNlbmRpZgog
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRN
ZW51Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpOwogICAgIHZpcnR1YWwgfldlYkNvbnRleHRNZW51
Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggODQ3YTczYjE3YTQ2MTdiZDU0YThkMjhhOTIzYzFk
NGE2M2JkZDEyZS4uMzBkZjNmNzNkODUwZWE3NjljNzEzNTIyMWQyZTg4NjVlYTY3ZTAzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdl
YkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJWaWV3Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKaW5kZXggZjA1OWUwNTllMTE4N2EzYmM1YmQyNDdjYzI0MWY1OWFkZDQ1
MDk1MC4uYjUxMDc4N2Q4MDliY2Y5N2I3Njg5ZTc0MDkzMjgzNzVhYTBiMGIzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIEBjbGFzcyBXZWJFZGl0b3JVbmRvVGFyZ2V0Owog
CiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxXZWJFZGl0b3JDbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViVmlldyAqKTsKICAgICB2aXJ0dWFsIH5XZWJF
ZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggM2RkNTBlN2Iz
YjljZjk5MzM0OWM5YWJiNGNiNDk3ODM3ZWVjMzUzZS4uOTQwYjBmZjk2M2E4NWNlOWQ4OGQ3YmM1
NmZmNmIzZWViMmUzZDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEwNjcs
NyArMTA2Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3Rv
cnkoKQogc3RhdGljIHZvaWQgYWRkUmVkaXJlY3RVUkwoV2ViSGlzdG9yeUl0ZW0gKml0ZW0sIGNv
bnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICghaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVS
THMpCi0gICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVj
dFVSTHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogCiAgICAgLy8gT3VyIEFQSSBh
bGxvd3MgdXMgdG8gc3RvcmUgYWxsIHRoZSBVUkxzIGluIHRoZSByZWRpcmVjdCBjaGFpbiwgYnV0
IGZvcgogICAgIC8vIG5vdyB3ZSBvbmx5IGhhdmUgYSB1c2UgZm9yIHRoZSBmaW5hbCBVUkwuCkBA
IC0xMzgwLDcgKzEzODAsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKiBj
YWNoZWRGcmFtZSkKIHsKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4obV93ZWJGcmFt
ZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldy5kb2N1bWVudFZpZXcpKTsKKyAgICBjYWNoZWRGcmFt
ZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldy5kb2N1bWVudFZp
ZXcpKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3
ZSBrbm93IHRoaXMgZnJhbWUgaXMgZ29pbmcgdG8gYmUgY2FjaGVkLiBTdG9wIGFsbCBwbHVnaW5z
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggZmZlMjk5MzEyZWI0ODBiYWZiNWYwZWFj
NDM1MmYyNDNmOTZlMDBmNy4uZmZkYmFjZmMyNzQyMWU4ZDM1ODg4ZjJjZTZiMTgwNzdhMTZlMzNm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIEdl
b2xvY2F0aW9uUG9zaXRpb247CiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViR2VvbG9jYXRp
b25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdl
YlZpZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBiZDdmNjJmYzg1ZGM5OWMzODcxNmYwNzY2NjQ2MzE4
MjUxMWM1NGE1Li4wYzk0OGIzYWVmOTg3NjA5NjMwMzUxZDU5YWM3OTBiMmFiZWFkYTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBQYWdlOwogY2xhc3Mg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKmluc3BlY3RlZFdlYlZp
ZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggMWMwMDgwOTc2OTJmZjliMDcxZmNl
NWFjNGE0YjQ2OTJkMTM3ZWQ5NS4uN2QzZTVlYzllNjE1ZTFkNDhjM2QwNWQ3MWE1OWM0NTFmZWI3
NjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIEZyb250
ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwCiAgICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVj
dG9yQ2xpZW50OnRoaXNdOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250
cm9sbGVyLmdldCgpIGZyb250ZW5kV2ViVmlld10pOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdl
YlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBt
X2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5k
Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0
ZWRXZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxl
ciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAKICAgICBSZXRh
aW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHRO
UyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50Om1f
ZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21faW5zcGVjdGVkV2ViVmlldyBpbnNwZWN0
b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmgKaW5kZXggMTViNDE4MDQ4ZTRmMWQ0NjI0YzMwM2RjYmJmZWQxNjk3OTY0
NDg2MS4uOTRlZDYxOGFjNzhlZThiY2Y1NzE1NWM5YWRhYmNiZGFkZjY4YzczNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIEBjbGFzcyBXZWJWaWV3Owog
CiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBX
ZWJOb3RpZmljYXRpb25DbGllbnQoV2ViVmlldyAqKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkg
eyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRy
b2xsZXIuaAppbmRleCBhM2Q2YWU2MzYzNjQ3YzVmMzBjYzc5ZmJkNjM1ZjY2NGJjYTAxMjNjLi5k
YzlkMTFhMzU4N2VlMDRmNTAxNTFiZTg4YmM1ZDRiMTQ4YmNkZTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgSW50
UG9pbnQ7CiB9CiAKIGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyIDogcHVibGlj
IFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcihXZWJWaWV3
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCmluZGV4IDI1MzY0OGQ4
ZTg0NTkxMWUyYWUyOGMwYmI4NjNjYjU3ZjdjMzAwMzkuLjI3NmQ5ZjE1ZWY4ZmE1ZTFmZWQ0Mzhl
ZDljMWQyNTlhNzg1ODM1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5t
bQpAQCAtMzYsNyArMzYsNyBAQCAtIChpZClpbml0CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsK
ICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgbV9jb3JlID0gc3RkOjpt
YWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CisgICAgbV9jb3JlID0g
bWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IGE5MDYyMmMyMDc0ZTBjZGNlY2VmMmM2YzFjODQ5NDVkNGU5ZGZmYWIuLjNhOTRiYjkxMGQy
NTllZmFhODkxZDUyOWU4MGQyYjViMDAyMGI0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMzc4LDcgKzM3OCw3IEBAIC0gKHZvaWQpX2F0dGFj
aFNjcmlwdERlYnVnZ2VyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfcHJpdmF0ZS0+
c2NyaXB0RGVidWdnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNjcmlwdERlYnVnZ2VyPihnbG9i
YWxPYmplY3QpOworICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IG1ha2VVbmlxdWU8V2Vi
U2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVjdCk7CiB9CiAKIC0gKHZvaWQpX2RldGFjaFNjcmlw
dERlYnVnZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCmluZGV4IGRmYTdlZmQwNjA2YWRj
NDlmZTI5MWQwNTIxZDEzMmU2ZTE5YzUwNzMuLmEwNzJlODE5NTI0OTM5YWUwZjIyYmI5ODM2ZDNh
YzcwNWQ4NTc5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCkBAIC0zNyw2ICszNyw3
IEBAIGNsYXNzIFBhZ2U7CiB9CiAKIGNsYXNzIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIg
OiBwdWJsaWMgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBjcmVhdGUoV2ViQ29yZTo6UGFnZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KaW5kZXggNzJjMjBjNjkzZmVjYmE5NzEwNDYz
NDE2NDFjY2UxMTQ5NGRlNGE2OS4uNjAyNDAyOTk2MmVjMzRmMDBmNGFhZDk0MzJhN2ZjNDJiYTFk
MTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQpAQCAtMzMsNyArMzMsNyBAQAog
CiBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4gV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4ocGFn
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4o
cGFnZSk7CiB9CiAKIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OldlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGFnZSYgcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KaW5kZXggMWE3MjU4YjQyM2E4
NDU3ODkxZTQxNWUxMGQwMDI1NjczMGFhMmJkZS4uZTM2M2I4NWIyYjNkNWFlMTQ3M2M4MzcyNzE4
NTgzNGQ1MTc4N2IxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJUZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJUZXh0SXRlcmF0b3IubW0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5n
ZTooRE9NUmFuZ2UgKilyYW5nZQogICAgICAgICByZXR1cm4gc2VsZjsKICAgICAKICAgICBfcHJp
dmF0ZSA9IFtbV2ViVGV4dEl0ZXJhdG9yUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgX3ByaXZh
dGUtPl90ZXh0SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRv
cj4oY29yZShyYW5nZSkpOworICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUocmFuZ2UpKTsKICAgICByZXR1cm4gc2VsZjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGJj
Y2M2NGIwN2EzZDA1ZjliZTg0NWZkMTZhOGE0ZTE1OGI1NjQ3NWQuLjEwZjIxODg0ZWI0YTljOTg0
YWMzMmU2MDE0MTQ5ODUwYjhjMTlhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KQEAgLTEyMjksNyArMTIyOSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVh
a091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKQogLSh2b2lkKV9pbmplY3RPdXRsb29r
UXVpcmtzU2NyaXB0CiB7CiAgICAgc3RhdGljIE5TU3RyaW5nICpvdXRsb29rUXVpcmtzU2NyaXB0
Q29udGVudHMgPSBsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpOwotICAgIF9w
cml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29y
ZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwgc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihv
dXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0
b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcykpOwor
ICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlw
dCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihv
dXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0
b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcykpOwog
CiB9CiAjZW5kaWYKQEAgLTE0NDMsNyArMTQ0Myw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxp
emF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVu
dChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBX
ZWJDb250ZXh0TWVudUNsaWVudChzZWxmKTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuYWJs
ZSB0aGlzIG9uIGlPUyBhcyB3ZWxsLgotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVu
dD4oc2VsZik7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQg
PSBtYWtlVW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxmKTsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNl
bGYpOwogI2Vsc2UKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2Vi
Q2hyb21lQ2xpZW50SU9TKHNlbGYpOwpAQCAtNDYzMyw3ICs0NjMzLDcgQEAgKyAodm9pZClfYWRk
VXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRX
b3JsZCAqKXdvcmwKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IHVzZXJTY3JpcHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0
b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmpl
Y3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRT
dGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdElu
QWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7Cisg
ICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50
U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJ
bkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwog
ICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29y
ZSh3b3JsZCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC00NjU2LDcgKzQ2NTYsNyBA
QCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1l
IHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gc3R5bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hl
ZXQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3Rv
cihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IElu
amVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZl
bCk7CisgICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291
cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5B
bGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKICAg
ICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KCpj
b3JlKHdvcmxkKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50
cyk7CiB9CiAKQEAgLTk0MTYsNyArOTQxNiw3IEBAIC0gKFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRp
b25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKIC0gKFdlYlNlbGVjdGlv
blNlcnZpY2VDb250cm9sbGVyJilfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIKIHsKICAgICBp
ZiAoIV9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIpCi0gICAgICAgIF9wcml2
YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyPihzZWxmKTsKKyAgICAgICAgX3ByaXZhdGUtPl9zZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViU2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXI+KHNlbGYpOwogICAgIHJldHVybiAqX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlcjsKIH0KICNlbmRpZgpAQCAtOTQ3NSw3ICs5NDc1LDcgQEAgLSAodm9pZClfc2V0
VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvcgogLSAodm9pZClfc2V0
VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6
KFRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSlsaWZldGltZQogewogICAgIGlmICghX3ByaXZh
dGUtPnRleHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9y
V2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5kaWNhdG9yV2luZG93PihzZWxmKTsKKyAg
ICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBtYWtlVW5pcXVlPFRleHRJbmRp
Y2F0b3JXaW5kb3c+KHNlbGYpOwogCiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJbldpbmRv
d0Nvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJv
b3RWaWV3OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cygpXSB0b1ZpZXc6bmlsXTsKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29v
cmRpbmF0ZXMgPSBbc2VsZi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjp0ZXh0Qm91bmRpbmdS
ZWN0SW5XaW5kb3dDb29yZGluYXRlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAxMDYwYzJkODU0YWRhMGRjYWZiMzM1NTljODExZTRl
ZTQ5NGNjNmUwLi44MjM4YTRlYzVmZWUxNjgzNjRlZDEzMDRiYzc1MTVmNTUxN2ZlODkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTk2
LDcgKzk2LDcgQEAgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OkxheWVyRmx1c2hDb250cm9sbGVyKFdl
YlZpZXcqIHdlYlZpZXcpCiBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVy
Rmx1c2hTY2hlZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdXNoQ29udHJvbGxlcikKICAg
ICA6IG1fZmx1c2hDb250cm9sbGVyKGZsdXNoQ29udHJvbGxlcikKIHsKLSAgICBtX3J1bkxvb3BP
YnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0
aWNfY2FzdDxDRkluZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxv
b3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9ydW5Mb29wT2JzZXJ2ZXIg
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRl
eD4oV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXll
ckZsdXNoKSwgW3RoaXNdKCkgewogICAgICAgICB0aGlzLT5sYXllckZsdXNoQ2FsbGJhY2soKTsK
ICAgICB9KTsKIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtIChpZClpbml0CiAgICAgcGx1Z2luRGF0
YWJhc2VDbGllbnRDb3VudCsrOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0g
ICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyPigpOwogI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKaW5kZXggNjQ2
ZTZhZWY5MzJmMWM5OTI5ODUzNmM4MmYyYzk1NWE3MWExOTJjZi4uZmU0NGU3NTFjYzExYzBlYWFm
ZTI4MTgxNzllZGNmNjVhN2YxYzcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTI0NiwxMCArMjQ2LDEwIEBA
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQog
ICAgICwgbV9tb3ZpbmdXaW5kb3coZmFsc2UpCiAgICAgLCBtX3RpbWVyKCp0aGlzLCAmRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKICNpZiBVU0UoQ0EpCi0gICAgLCBtX2xh
eWVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQorICAgICwgbV9s
YXllckNsaWVudChtYWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKICAgICAsIG1fcm9vdENo
aWxkKFBsYXRmb3JtQ0FMYXllcldpbjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
TGF5ZXIsIG1fbGF5ZXJDbGllbnQuZ2V0KCkpKQogI2VuZGlmCi0gICAgLCBtX2Z1bGxzY3JlZW5X
aW5kb3coc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
PihzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhpcykp
KQorICAgICwgbV9mdWxsc2NyZWVuV2luZG93KG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bkNsaWVudCo+KHRoaXMpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IGFiYTYzZGFiOGIzMWU0N2FiZDgwODhiMzc4
M2E4MGVjNTRjMTAyMTguLjBmNmJlZWZmYWQxZGMwMTVjOGE0NzdlN2ZiZTVjOWI2YWFmYWZmMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5j
cHAKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogCiAgICAgaWYg
KG1fdHJhbnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAgICAgICAgaWYgKCFtX2RlbGl2
ZXJ5RGF0YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8Y2hhcj4+KCk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8
VmVjdG9yPGNoYXI+PigpOwogCiAgICAgICAgIGludCBvbGRTaXplID0gbV9kZWxpdmVyeURhdGEt
PnNpemUoKTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2l6ZShvbGRTaXplICsgbGVuZ3Ro
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IDIxMzYzMTdmMjk5OWQ1ZTEzNzQ5ZGYzOGUxOWE4ZjRkMmYyNWJkNjAuLjU0NzE2YTBiYjJi
MWZhYjc1ZDgxZGU0MmFlZTk2ZWVhMmY2YjEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNTEwLDcgKzUxMCw3IEBAIE5QRXJyb3Ig
UGx1Z2luVmlldzo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgYm9v
bCBzZW5kTm90aWZpY2F0CiAgICAgfSBlbHNlIGlmICghbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpCiAgICAgICAgIHJldHVybiBOUEVS
Ul9HRU5FUklDX0VSUk9SOwogCi0gICAgc2NoZWR1bGVSZXF1ZXN0KHN0ZDo6bWFrZV91bmlxdWU8
UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlmaWNhdGlv
biwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CisgICAgc2NoZWR1bGVSZXF1ZXN0
KG1ha2VVbmlxdWU8UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2Vu
ZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CiAKICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAwNTcyOGYzZWQzNzIwNTA0YWY1NWY5ODc3
Zjg2MjFiZGMwNWNlNjIyLi41MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQyOTgxYzNmNTYzZWRmZjNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dp
bi5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCBQbHVnaW5WaWV3Ojp3bmRQcm9jKEhXTkQgaFduZCwg
VUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGlmIChtZXNz
YWdlID09IFdNX1VTRVIgKyAxICYmCiAgICAgICAgIG1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlu
cyhQbHVnaW5RdWlya1Rocm90dGxlV01Vc2VyUGx1c09uZU1lc3NhZ2VzKSkgewogICAgICAgICBp
ZiAoIW1fbWVzc2FnZVRocm90dGxlcikKLSAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CisgICAg
ICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJv
dHRsZXJXaW4+KHRoaXMpOwogCiAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlci0+YXBwZW5kTWVz
c2FnZShoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhLmgKaW5kZXggNTMwYjY5ZWQ3MTljMjdhY2M2YjA3ZTM1MTU5MjIxZjU1MjZjNTMwNS4uM2Jm
NDRkODdkMThkNWYyNzNjZDI5NTM1Njc2YjI0MDhmMmM5MTRlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oPgog
CiBjbGFzcyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoSVdlYkRhdGFTb3VyY2UqIHdlYkRh
dGFTb3VyY2UpIDogbV93ZWJEYXRhU291cmNlKHdlYkRhdGFTb3VyY2UpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCA0YTQ5Yjk0YmJhNThkMGM1NDYzMzI5YzNmNmVmMjNlODQ4OGI3YWYz
Li43YjI5OWNlZTI1ZWNkMTBiYmE2MjFjODU4MWIwNmFlMDZjNWExZDE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGaWxlUGF0
aHNMaXN0U2l6ZSA9IFVTSFJUX01BWDsKIFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50
KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKLSAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKHN0ZDo6bWFrZV91
bmlxdWU8V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCisgICAgLCBt
X25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShtYWtlVW5pcXVlPFdlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGU+KHdlYlZpZXcpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDQx
ZDVmMDZhZWFjYjdlMTQxN2Q0YjcwMjQwMDYwYmJlNTdmNjkzMGYuLjc4NzU0MzI1M2Q1ZGZmNGVj
NjY4ZWJlODhmMDg4NWQwYmFkYjY1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zOCw2ICszOCw3
IEBAIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiBpbnRlcmZhY2UgSVdl
YlVJRGVsZWdhdGU7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkNocm9tZUNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oCmluZGV4IGM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQuLmY0OGVl
NzMwZWVmNzE5NzllNGQ4ZDJjMzI3ZWQxYmExN2I5NGZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQ29u
dGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xp
ZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGI1OTg5MzMyOTEwMDllMjg1MWVkNzU0
MTVlYzRhYTBmZTQwM2Q2MTEuLjQ1ZTNjYTcyNzUzYWQxYWMxMTUzYmU5NjE5M2Y2ZWQ2MjFmZjg5
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNs
YXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJWaWV3
Kik7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJveWVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCmluZGV4IGRiNjM1MmQ2MzgxNmY3YzlhZWVlOWY3NDRlNDhlMzgxZTg1NmQyYjUuLjY5
ZDdlZDNlMGFhMzFmMTNiZWE2NGNmMGMyNzY1ZTI1NGZiZjhlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYkVkaXRv
clVuZG9UYXJnZXQ7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50
KFdlYlZpZXcqKTsKICAgICB+V2ViRWRpdG9yQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggOGUzNTRiNzFjZGZkMmE1ZjliOGIwMTFhMDMyOWQ3NDI0YmM5MGJiYy4u
NzcxZjhlYTZmNzE2ODA5Y2RmYWRkN2UzOGM2MGRjN2EwM2UwMWZhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZSB7CiB9OwogCiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQoV2ViRnJhbWUqIHdlYkZyYW1lKQotICAg
IDogbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJpdmF0ZT4oKSkKKyAgICA6IG1fcG9saWN5TGlzdGVuZXJQcml2YXRlKG1ha2VV
bmlxdWU8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+KCkpCiAgICAgLCBtX3dlYkZyYW1l
KHdlYkZyYW1lKQogICAgICwgbV9tYW51YWxMb2FkZXIoMCkKICAgICAsIG1faGFzU2VudFJlc3Bv
bnNlVG9QbHVnaW4oZmFsc2UpIApAQCAtOTczLDcgKzk3Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKiBjYWNo
ZWRGcmFtCiAKICAgICBBU1NFUlQoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
ID09IGNhY2hlZEZyYW1lLT5kb2N1bWVudExvYWRlcigpKTsKIAotICAgIGNhY2hlZEZyYW1lLT5z
ZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhPihzdGF0aWNfY2FzdDxJV2ViRGF0YVNvdXJjZSo+KGdldFdlYkRhdGFTb3Vy
Y2UoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkpKTsKKyAgICBjYWNoZWRG
cmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291
cmNlKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CiAjZWxzZQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4
IGViOTc1OGJkNDIxMDdkMmY5YTg1NGU0ZTY4ODE2NmE2ZjUxNWZiOWYuLmJiYTljOWY0NDUzNThk
N2NlM2VhMDNmODk2NjQxYmQ2ZTVlMDQwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApA
QCAtMzYsNiArMzYsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2ViVmll
dzsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9j
YXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHAKaW5kZXggNzU2OTU5MGMxYjNjZjM4MTZmYzQyYTM1YmYzZjY2YmZkNzg5MDIyNC4uZjgwYWUw
NDhiODJkYmRiMjM0NjU0NjhkOTMzYzYwYTcwOTcyYzdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdl
Ykluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHIKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3
LmdldCgpKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZp
ZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdI
d25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGll
bnQgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdl
YlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdl
YlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3Mo
KSk7CiAgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKICAgICBtX2Zyb250ZW5k
SGFuZGxlID0gZnJvbnRlbmRId25kOwogICAgIHJldHVybiB0aGlzOwpAQCAtMTg1LDcgKzE4NSw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQoKQogICAgIGJvb2wgY3JlYXRp
bmdIaWdobGlnaHQgPSAhbV9oaWdobGlnaHQ7CiAKICAgICBpZiAoY3JlYXRpbmdIaWdobGlnaHQp
Ci0gICAgICAgIG1faGlnaGxpZ2h0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0
PihtX2luc3BlY3RlZFdlYlZpZXcpOworICAgICAgICBtX2hpZ2hsaWdodCA9IG1ha2VVbmlxdWU8
V2ViTm9kZUhpZ2hsaWdodD4obV9pbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGlmIChtX2hpZ2hs
aWdodC0+aXNTaG93aW5nKCkpCiAgICAgICAgIG1faGlnaGxpZ2h0LT51cGRhdGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKaW5kZXggOTVjOWFmYTg1MDAyYTU0MzI3MGI3Y2U2YjM4OGM3MGQ0ODkx
ODUxOC4uZjIwZWFlYmQ2NjFmOTEyYmFjZjJkOTlmNDQwOWRiY2Q3YTk3MWU1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsK
IGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjhjNmJkNDkzOWNmOWIwNDg5NTdi
Yzc1MDBiZDg1NDhhMDFlZTNiMi4uMTYyN2VjNWZhMjZiZjU5MDFkMDU5M2I1YTE4Mzk2OTQ3OTIx
OTBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCkBAIC0zNDcsNiArMzQ3LDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0
ZUFsbEluZGV4ZWREYXRhYmFzZXMoKQogfQogCiBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
aWRNb2RpZnlPcmlnaW5EYXRhKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRv
TWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFuYWdlciwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCAyN2FmMWJhZTY1M2VmZjAyZjY3MDRmN2Uz
OWFkMGUxYWM1MGFkNzBiLi44YWZiYTBmNmQ1M2FmZDU1NTg0NWMxOTUzNmMyYTljMWVjNWYzN2Qw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlC
YWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJh
Zy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdl
YkVsZW1lbnRQcm9wZXJ0eUJhZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWco
Y29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQotICAgIDogbV9yZXN1bHQoc3RkOjptYWtlX3Vu
aXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQorICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxI
aXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBhODFjMDBlNTZjNWRlMmFlYmMxMmFi
OGI2ZGIxMWJjOTM0ZWJiYmRhLi5mYjg4ZTM5ZTdiNTZhYzMyZGNmNWNmNTAxMWMzNTQ4MTcxYTZj
M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0x
MTUsNyArMTE1LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6aW5pdEZyb21EaWN0aW9uYXJ5
UmVwcmVzZW50YXRpb24oX0luX29wdF8gdm9pZCogZGljdGlvbmEKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPFN0cmluZz4+IHJlZGlyZWN0VVJMc1ZlY3RvcjsKICAgICBpZiAoQ0ZBcnJheVJl
ZiByZWRpcmVjdFVSTHNSZWYgPSBzdGF0aWNfY2FzdDxDRkFycmF5UmVmPihDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShkaWN0aW9uYXJ5UmVmLCByZWRpcmVjdFVSTHNLZXkpKSkgewogICAgICAgICBDRklu
ZGV4IHNpemUgPSBDRkFycmF5R2V0Q291bnQocmVkaXJlY3RVUkxzUmVmKTsKLSAgICAgICAgcmVk
aXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oc2l6ZSk7
CisgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+
KHNpemUpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAg
ICAgICAgICAoKnJlZGlyZWN0VVJMc1ZlY3RvcilbaV0gPSBTdHJpbmcoc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVkaXJlY3RVUkxzUmVmLCBpKSkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCmluZGV4IDJmMWYyZjQ4
MDdlYjljNGZlNzA4MzVkYjc4ZTM0YTM0YmNmZjM2ZDAuLmQ2NWRlMTllZTk5YzQ1MTQ0NWRmYmYx
YjEzNTlkYzJhOGJhMzhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNw
cApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEM0RQb3N0UHJvY2Vzc2luZ0Nv
bnRleHQ+IENBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5nCiAgICAgbWVtY3B5
KG92ZXJsYXlRdWFkQnVmZmVyLCBvdmVybGF5UXVhZFZlcnRpY2VzLCBzaXplb2Yob3ZlcmxheVF1
YWRWZXJ0aWNlcykpOwogICAgIG92ZXJsYXlRdWFkLT5VbmxvY2soKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4oc2NlbmVUZXh0dXJlLCBv
dmVybGF5UXVhZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RDNEUG9zdFByb2Nlc3NpbmdDb250
ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKIH0KIAogLy8gRklYTUU6IDxyZGFyOi8v
NjUwNzg1MT4gU2hhcmUgdGhpcyBjb2RlIHdpdGggQ29yZUFuaW1hdGlvbidzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA3YmQ5
ODg5NjExMWMzYjNmZTZmZTU0ZjBhMjQ3OTY2MDZiMjJhNzVmLi5iMjBiYWNkNjI5ZWI1YWMwZDI3
MjA0MmQ4NzhiMTYwZTg0NWFjMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IFdlYk5v
dGlmaWNhdGlvbkNlbnRlclByaXZhdGUgewogSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90
aWZpY2F0aW9uQ2VudGVyOjptX2RlZmF1bHRDZW50ZXIgPSAwOwogCiBXZWJOb3RpZmljYXRpb25D
ZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCi0gICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8
V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKKyAgICA6IGQobWFrZVVuaXF1ZTxXZWJO
b3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggOTc2MTQ4ZTMzZjc0NDZkN2MzODQ5OTU5ZDZjZjcz
ZGVmNDhmNjdmZi4uOTJkMzlhYzRiYzVhMDVlZWMxNGRkMWVhYjQwOTUxNmY0NDQ2NGQ5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE4ODAsNyArMTg4MCw3IEBAIGJvb2wg
V2ViVmlldzo6aGFuZGxlTW91c2VFdmVudChVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQ
QVJBTSBsUGFyYW0pCiAgICAgICAgIG1vdXNlRXZlbnQuc2V0Q2xpY2tDb3VudChnbG9iYWxDbGlj
a0NvdW50KTsKICAgICAgICAgaGFuZGxlZCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5k
bGVyKCkubW91c2VNb3ZlZChtb3VzZUV2ZW50KTsKICAgICAgICAgaWYgKCFtX21vdXNlT3V0VHJh
Y2tlcikgewotICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRSQUNLTU9VU0VFVkVOVD4oKTsKKyAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyID0gbWFr
ZVVuaXF1ZTxUUkFDS01PVVNFRVZFTlQ+KCk7CiAgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tl
ci0+Y2JTaXplID0gc2l6ZW9mKFRSQUNLTU9VU0VFVkVOVCk7CiAgICAgICAgICAgICBtX21vdXNl
T3V0VHJhY2tlci0+ZHdGbGFncyA9IFRNRV9MRUFWRTsKICAgICAgICAgICAgIG1fbW91c2VPdXRU
cmFja2VyLT5od25kVHJhY2sgPSBtX3ZpZXdXaW5kb3c7CkBAIC02Nzk0LDcgKzY3OTQsNyBAQCBI
UkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUoX0luXyBCU1RSIG1p
bWVUeXBlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYgKCFtX2VtYmVkZGVk
Vmlld01JTUVUeXBlcykKLSAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1F
VHlwZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKIAogICAgIG1fZW1iZWRkZWRW
aWV3TUlNRVR5cGVzLT5hZGQodG9TdHJpbmcobWltZVR5cGUpKTsKICAgICByZXR1cm4gU19PSzsK
QEAgLTY4OTQsNyArNjg5NCw3IEBAIHZvaWQgV2ViVmlldzo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50CiAgICAgICAgIEFT
U0VSVCghbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyKTsKICAgICB9CiAKLSAgICBtX2Z1bGxT
Y3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI+KCk7CisgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyID0gbWFrZVVuaXF1
ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyPigpOwogICAgIG1fZnVsbFNjcmVlblZpZGVvQ29u
dHJvbGxlci0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwogICAgIG1fZnVsbFNjcmVl
blZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYKQEAgLTY5NDYsNyAr
Njk0Niw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXAoX0luXyBCU1RS
IGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0PFdlYlNj
cmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVs
aXN0LCB3aGl0ZWxpc3RDb3VudCksCisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxV
c2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwg
d2hpdGVsaXN0Q291bnQpLAogICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNr
bGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJ
bmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLAogICAgICAgICBpbmpl
Y3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDog
SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclNjcmlwdCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7
CkBAIC02OTczLDcgKzY5NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0
VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0gcmVpbnRlcnBy
ZXRfY2FzdDxXZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7Ci0gICAgYXV0byBzdHlsZVNoZWV0ID0g
c3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0
cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxh
Y2tsaXN0LCBibGFja2xpc3RDb3VudCksCisgICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1
ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0
ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xp
c3RDb3VudCksCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVz
ID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNl
ckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
dHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4
aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTcyMzcsNyArNzIzNyw3IEBA
IHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVk
KQogICAgIH0KICNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBpZiAoYWNjZWxlcmF0
ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAgIG1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQgPSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhp
cyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRlZDsKICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAppbmRleCBlZWNhNzM5ZDJiMzk0ZTg2MDM1MWJh
MWI0NjRkZTU0NzhiOWJiMTY3Li5kYjM2ZWI5ZGVkMmI5ZTBmNWY2ZWY0MGRiNmM2OTkxOWE3MzA2
ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6
IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRl
OyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0ZTsgXAordHlw
ZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50
IF9fbWFrZUJpc29NYWxsb2NlZE1hY3JvU2VtaWNvbG9uaWZpZXIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29IZWFwSW5saW5lcy5oCmluZGV4IGMwNDRkNzczYjg3OWE2NmRmYWRkMmUyY2EzMTVl
ZWVhMzc2ZmZhNGEuLjNhYTFkMjA5NTFkYmYzMzY0ZTdkMTZkZDIzNjQzZDBjZDk3ZjZmNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKQEAgLTEyMyw2ICsxMjMsNyBA
QCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
ID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0
ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwKIHR5
cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1hY3JvU2VtaWNvbG9uaWZpZXIKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYyZmYz
ZWViMmQ3MGMwOTgwMTE0ZGMxODdjNzBmOTgwM2YxY2U5MDguLjBiYTc1OWU0NmZlNDFjMjhhMjlj
NWI0Y2YxYWU0YWY4ZjI2ZWMzZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzMgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxU
Piwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoYWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKToKKyAgICAgICAgKHNldFdp
bGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCk6CisgICAgICAgIChUZXN0UnVubmVyOjpydW5V
SVNjcmlwdCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVt
cEZyYW1lc0FzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW06CisgICAgICAgIChldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxl
ckZvclZpZXdBbmRFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFP
YmplY3QuY3BwOgorICAgICAgICAoRFJURGF0YU9iamVjdDo6U2V0RGF0YSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKEZyYW1l
TG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAgICAgICAoRFJUVW5kb01hbmFnZXI6OkRSVFVuZG9N
YW5hZ2VyKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUpOgorICAgICAgICAoVUlE
ZWxlZ2F0ZTo6cmVzZXRVbmRvTWFuYWdlcik6CisgICAgICAgICogTWluaUJyb3dzZXIvd3BlL21h
aW4uY3BwOgorICAgICAgICAoY3JlYXRlVmlld0JhY2tlbmQpOgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0
Lmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVy
Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db3VudGVycy5oOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVu
SlNUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0V4cGVjdGVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdFbnN1cmUpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6dGVzdE1vdmluZ1VzaW5nQWRkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xv
Y2suY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuTG9ja1Rlc3QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9XZWFrUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q0FSaW5nQnVmZmVyVGVzdDo6U2V0VXApOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVRlc3RWYWx1ZSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQ
YWdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHA6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdDo6U2V0VXAp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdDJXaWxsTG9hZFRlc3Q6OlNldFVwKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJ
bkJ1bmRsZV9CdW5kbGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGb3JjZUxpZ2h0QXBw
ZWFyYW5jZUluQnVuZGxlVGVzdDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwOgorICAgICAg
ICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblBy
b3h5SFRUUFMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQ
cm9jZXNzVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RP
TURPTVdpbmRvd1Rlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVzdDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29j
b2EubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoYXBwbHlXb3Jr
YXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycyk6Cisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOmFkZFRv
V2luZG93Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktp
dFRlc3RTZXJ2ZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlv
bnMubW06CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBpbml0V2l0aEZvbnRPcHRpb25zOl0p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlk
Q3JlYXRlUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRPcGVu
UGFuZWxGaWxlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1N0cmlu
Z0Z1bmN0aW9ucy5oOgorICAgICAgICAoV1RSOjp0b1NURCk6CisgICAgICAgIChXVFI6OnRvV1RG
U3RyaW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAg
ICAgKFdUUjo6Y3JlYXRlVGVzdFVSTCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpy
dW5UZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2Vi
Vmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OmdldEdES0tl
eVN5bUZvcktleVJlZik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRy
b2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0
U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5Ojptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVVw
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwOgorICAgICAg
ICAoV1RSOjp3cGVLZXlTeW1Gb3JLZXlSZWYpOgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9y
aSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVt
b3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdlYWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCmluZGV4IGU4MTdhNTczYTU4ZDE1OWQ0Y2YyMzQ5ODJjY2EwNGRjZDY0YjYw
NGEuLjhmMTNlZTAwM2EzZGUwYTBkOTQ4NjExOTEzMjJmMzRmOGFkZWVkMjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0zNjMsMTEgKzM2MywxMSBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBhZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bgogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVu
Z3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKG9yaWdpbi5nZXQoKSk7Ci0g
ICAgYXV0byBvcmlnaW5CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3Ro
ICsgMSk7CisgICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJp
bmcob3JpZ2luLmdldCgpLCBvcmlnaW5CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAg
ICAgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGRlc3RpbmF0
aW9uLmdldCgpKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwog
ICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCksIGRlc3RpbmF0aW9u
QnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xs
ZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmpl
Y3QpKTsKQEAgLTEzMDQsNyArMTMwNCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFdpbGxTZW5k
UmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAg
QVNTRVJUKCEqZXhjZXB0aW9uKTsKIAogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dl
dE1heGltdW1VVEY4Q1N0cmluZ1NpemUoaGVhZGVyLmdldCgpKTsKLSAgICBhdXRvIGhlYWRlckJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRv
IGhlYWRlckJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4o
bWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhoZWFkZXIuZ2V0KCks
IGhlYWRlckJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CkBAIC0yMzc5LDcgKzIzNzksNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNo
b3VsZFBhaW50QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKQogdm9pZCBU
ZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5u
ZWwpCiB7CiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShjaGFubmVsKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hh
cltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRV
VEY4Q1N0cmluZyhjaGFubmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAg
V2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKHsgYnVmZmVyLmdl
dCgpIH0pOwpAQCAtMjQ0OSw3ICsyNDQ5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpydW5VSVNjcmlw
dChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1ZhbHVlUmUKICAg
ICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhjYWxsYmFja0lELCBjYWxsYmFjayk7CiAKICAgICBp
ZiAoIW1fVUlTY3JpcHRDb250ZXh0KQotICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNj
cmlwdENvbnRleHQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXVFI6OlVJU2Ny
aXB0Q29udGV4dD4oKnRoaXMpOwogCiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyhKU1N0cmluZ0dl
dENoYXJhY3RlcnNQdHIoc2NyaXB0KSwgSlNTdHJpbmdHZXRMZW5ndGgoc2NyaXB0KSk7CiAgICAg
bV9VSVNjcmlwdENvbnRleHQtPnJ1blVJU2NyaXB0KHNjcmlwdFN0cmluZywgY2FsbGJhY2tJRCk7
CkBAIC0yNTA2LDcgKzI1MDYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVz
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAg
YXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUs
IG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxl
QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAg
ICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hh
cltdPihmaWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmls
ZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIG1f
b3BlblBhbmVsRmlsZXMucHVzaF9iYWNrKGZpbGVCdWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDY0ZGIxZDE3ZjliYzljYjhjZTZk
ODJmOWI3N2RiZjM4NzVhY2EwY2EuLjk1N2M0ZTYzOTU5MTE4NjM1ZDcyMjE1ZTBjYWM3Y2I2ZmQ3
MjBjZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAg
LTE1MzUsNyArMTUzNSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJG
cmFtZSAqZnJhbWUpCiAgICAgLy8gdGhlIHJlc3VsdCB3aXRob3V0IGFueSBjb252ZXJzaW9uLgog
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpbm5lclRleHQpKTsKICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShz
dHJpbmdSZWYuZ2V0KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3Ro
ID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmdSZWYuZ2V0KCksIGJ1ZmZl
ci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwg
U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xl
bmd0aCAtIDEpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDQ2MWJkM2RmM2Vi
YjI2MDNhYzMyMTgyODgyMThkZDhmNjkxNjhmZmQuLjNiZTMzMjIxZDZiM2ViYzM1NmQ1MWUzMzRh
MjRkOTI5YWUyNTNhOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLm1tCkBAIC01NjgsNyArNTY4LDcgQEAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6
emxlckZvclYKIHsKICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xh
c3NdXSkKICAgICAgICAgdmlldyA9IFsoV2ViSFRNTFZpZXcgKil2aWV3IF9oaXRWaWV3Rm9yRXZl
bnQ6ZXZlbnRdOwotICAgIHJldHVybiAhW3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBj
bGFzc11dID8gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBj
bGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSkgOiBOVUxMOworICAgIHJldHVy
biAhW3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11dID8gbWFrZVVuaXF1ZTxD
bGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91
c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91
c2VCdXR0b25zKSkgOiBOVUxMOwogfQogCiBzdGF0aWMgTlNVSW50ZWdlciBzd2l6emxlZEV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRFJURGF0YU9iamVjdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9i
amVjdC5jcHAKaW5kZXggZWYyZDJlZmI4NTlmNGI4YTIyZjMwYzQ2N2FjZTFmOGFhZDE1N2E0ZC4u
NzZhMjFhNThhOWY2NmRkZTE2MDcyOWY4ZmVlMWUxNWY5NDllNjYyNCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIFNURE1F
VEhPRElNUCBEUlREYXRhT2JqZWN0OjpTZXREYXRhKF9Jbl8gRk9STUFURVRDKiBwZm9ybWF0ZXRj
LCBfSW5fIFNUR01FRElVTSoKICAgICBpZiAoIXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBhdXRvIGZvcm1hdGV0YyA9IHN0ZDo6bWFrZV91
bmlxdWU8Rk9STUFURVRDPigpOworICAgIGF1dG8gZm9ybWF0ZXRjID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdN
RURJVU0sIFN0Z01lZGl1bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBa
ZXJvTWVtb3J5KGZvcm1hdGV0Yy5nZXQoKSwgc2l6ZW9mKEZPUk1BVEVUQykpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggYzgwZGYxYmU1
ZjJkZTQ3ZDNiODMxNjM3ZWY2ZTlmYmNkOTM0YzhlNi4uMTFjOTMzOWIxNmQ4MDRkMmMyMDFjOTMy
OWY0YThjMzU0NDJhODNjYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Zy
YW1lTG9hZERlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuY3BwCkBAIC03Miw5ICs3Miw5IEBAIHN0cmluZyBkZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdChJV2ViRnJhbWUqIHdlYkZyYW1lKQogfQogCiBGcmFtZUxvYWREZWxl
Z2F0ZTo6RnJhbWVMb2FkRGVsZWdhdGUoKQotICAgIDogbV9nY0NvbnRyb2xsZXIoc3RkOjptYWtl
X3VuaXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCi0gICAgLCBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVy
KHN0ZDo6bWFrZV91bmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+KCkpCi0gICAgLCBtX3Rl
eHRJbnB1dENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5wdXRDb250cm9sbGVyPigp
KQorICAgIDogbV9nY0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCisgICAg
LCBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKG1ha2VVbmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI+KCkpCisgICAgLCBtX3RleHRJbnB1dENvbnRyb2xsZXIobWFrZVVuaXF1ZTxUZXh0SW5w
dXRDb250cm9sbGVyPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vVUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0
ZS5jcHAKaW5kZXggZjBhZGJjZTQ3OTZmYWJmNGYwZDQyYjI3MTE2MzM3MDFhYzc4MTMxNC4uNDdh
YTI3MmJmMTk1Y2Q5YTI1YWYyODY1NWQzNzFmNDE2MDBmNDU5OCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9VSURlbGVnYXRlLmNwcApAQCAtMTAxLDggKzEwMSw4IEBAIGNsYXNzIERSVFVuZG9N
YW5hZ2VyIHsKIH07CiAKIERSVFVuZG9NYW5hZ2VyOjpEUlRVbmRvTWFuYWdlcigpCi0gICAgOiBt
X3JlZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKLSAgICAsIG1fdW5k
b1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb1N0YWNrPigpKQorICAgIDogbV9yZWRvU3Rh
Y2sobWFrZVVuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCisgICAgLCBtX3VuZG9TdGFjayhtYWtlVW5p
cXVlPERSVFVuZG9TdGFjaz4oKSkKIHsKIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgRFJU
VW5kb01hbmFnZXI6OnVuZG8oKQogfQogCiBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkKLSAgICA6
IG1fdW5kb01hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKKyAgICA6
IG1fdW5kb01hbmFnZXIobWFrZVVuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKICAgICAsIG1fZGVz
a3RvcE5vdGlmaWNhdGlvbnMobmV3IERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIpCiB7
CiAgICAgbV9mcmFtZS5ib3R0b20gPSAwOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIFVJRGVsZWdhdGU6
OlVJRGVsZWdhdGUoKQogCiB2b2lkIFVJRGVsZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIoKQogewot
ICAgIG1fdW5kb01hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOwor
ICAgIG1fdW5kb01hbmFnZXIgPSBtYWtlVW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOwogfQogCiBI
UkVTVUxUIFVJRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01f
T3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
d3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmluZGV4IGJlNjQ2
MGU1NmI3YjcwY2QyNDgwZmM4N2RlMmI5YmE5NzBlNThjMzguLjQzOTE5Mjk3OTFkZDY3MTMxYzg1
OGExNjY4OWM1MmJhZGMxZGQ4NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9t
YWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAgLTEyOSw4ICsx
MjksOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gZGVjaWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2Vi
VmlldyAqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxX
UEVUb29saW5nQmFja2VuZHM6OlZpZXdCYWNrZW5kPiBjcmVhdGVWaWV3QmFja2VuZCh1aW50MzJf
dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQogewogICAgIGlmIChoZWFkbGVzc01vZGUpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NW
aWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
V1BFVG9vbGluZ0JhY2tlbmRzOjpXaW5kb3dWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3
QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFVG9vbGlu
Z0JhY2tlbmRzOjpXaW5kb3dWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CiB9CiAKIHR5cGVk
ZWYgc3RydWN0IHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
YXJndltdKQogICAgICAgICBudWxscHRyKSk7CiAgICAgZ19vYmplY3RfdW5yZWYoc2V0dGluZ3Mp
OwogCi0gICAgYmFja2VuZFB0ci0+c2V0SW5wdXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJbnB1
dENsaWVudD4obG9vcCwgd2ViVmlldykpOworICAgIGJhY2tlbmRQdHItPnNldElucHV0Q2xpZW50
KG1ha2VVbmlxdWU8SW5wdXRDbGllbnQ+KGxvb3AsIHdlYlZpZXcpKTsKICNpZiBkZWZpbmVkKEhB
VkVfQUNDRVNTSUJJTElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCiAgICAgYXV0byogYWNjZXNz
aWJsZSA9IHdwZV92aWV3X2JhY2tlbmRfZGlzcGF0Y2hfZ2V0X2FjY2Vzc2libGUod3BlQmFja2Vu
ZCk7CiAgICAgaWYgKEFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaCBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCmlu
ZGV4IDRlMDIwZjE5NmNkMDMzZDYxZWUwZTYyOGY2YTFlNTljYTFjMzM0NTguLjBiODRkMmQ0NTQ1
NTgzZGU5ZmMwZGVjMTJhNGFhODhhNjU5ZWQxOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCisrKyBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCkBAIC02OCw2
ICs2OCw3IEBAIHR5cGVkZWYgZW51bSAgewogfSBDYWxsYmFja1R5cGU7CiAKIGNsYXNzIFVJU2Ny
aXB0Q29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVUlTY3JpcHRDb250ZXh0KTsKIHB1YmxpYzoKICAgICBVSVNjcmlwdENvbnRl
eHQoVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKaW5kZXggMjhkYjEwYTQ3OTk2MzBjNjRj
NTVkMDc4NmMwMGVlMDk0ODkxNDVlMi4uMzliNGU1ZWE3MTgzNjg4Y2RlYzliZWZjYzk2NGNlODkz
YTU0M2YwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01l
dGhvZFN3aXp6bGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01l
dGhvZFN3aXp6bGVyLmgKQEAgLTI2LDkgKzI2LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgPG9iamMvcnVudGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIGNsYXNzIENsYXNzTWV0aG9kU3dpenpsZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsYXNz
TWV0aG9kU3dpenpsZXIpOwogcHVibGljOgogICAgIENsYXNzTWV0aG9kU3dpenpsZXIoQ2xhc3Ms
IFNFTCwgSU1QKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaAppbmRleCBmOWVhMjI0MDI2MTUwZDhlMWFj
NmJiNzYxNWI2ZGUzODkwYWY2NzBlLi5hYjVjNTJmNzVkMWFjNmFmOTYwYWMxNGNhNzBiNWNiNzRm
YTM2Mjg4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCkBAIC0yNyw2ICsyNyw4IEBACiAjaWZuZGVm
IENvdW50ZXJzX2gKICNkZWZpbmUgQ291bnRlcnNfaAogCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KKwogc3RydWN0IENvcHlNb3ZlQ291bnRlciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNv
bnN0cnVjdGlvbkNvdW50OwogICAgIHN0YXRpYyB1bnNpZ25lZCBjb3B5Q291bnQ7CkBAIC01MCw2
ICs1Miw3IEBAIHN0cnVjdCBDb3B5TW92ZUNvdW50ZXIgewogCiAKIHN0cnVjdCBDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkNvdW50OwogICAgIHN0YXRpYyB1bnNp
Z25lZCBkZXN0cnVjdGlvbkNvdW50OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0phdmFTY3JpcHRUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3Qu
Y3BwCmluZGV4IDIxMzZlOThkOGViYjg3NWQ1OTdmYzZlMDdjN2IwMWVkNWI4NGFlMTYuLjZhMjMz
NjMyOTQxYWNmNjA3MDU5NDk0MjY0MDFiMzI3MzM3YzcwODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
SmF2YVNjcmlwdFRlc3QuY3BwCkBAIC03NSw3ICs3NSw3IEBAIDo6dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IHJ1bkpTVGVzdChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBX
S1BhCiAgICAgVXRpbDo6cnVuKCZjb250ZXh0LmRpZEZpbmlzaCk7CiAKICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShjb250ZXh0LmFjdHVh
bFN0cmluZy5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJp
bmcoY29udGV4dC5hY3R1YWxTdHJpbmcuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7
CiAgICAgCiAgICAgcmV0dXJuIGNvbXBhcmVKU1Jlc3VsdChzY3JpcHQsIGJ1ZmZlci5nZXQoKSwg
ZXhwZWN0ZWRSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVV0aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNw
cAppbmRleCA4ZjhkNzY4YTUzYzI3NTFhMjQzZTA1OTVlMmMwYzBmNDQ1ZGQ5NmM4Li5iYmJmZjcw
OWU2N2QzNTliNGU0ODE3MWVkN2M0YzI0MDA4YTU2N2Y0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtVXRpbGl0aWVzLmNwcApAQCAtNjksNyArNjksNyBAQCBXS0NvbnRleHRSZWYgY3Jl
YXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdE5h
bWUsIFdLVAogc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIHNp
emVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmlu
Zyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6
ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxj
aGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dl
dFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICByZXR1
cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGFkMmE3MzJkNTE5NDdiYmM3YWZjNjRl
MjdkNDIxNWNlMzI4N2RkZWUuLjBjMjdhNDYxNjQ1ZmJhMTJhNWM2OTVkOTMyNjQzMDUyNmM0ZWYx
MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiArMjYsOCBA
QAogI2lmbmRlZiBQbGF0Zm9ybVdlYlZpZXdfaAogI2RlZmluZSBQbGF0Zm9ybVdlYlZpZXdfaAog
CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKwogI2lmIFVTRShDRykKICNpbmNsdWRlIDxD
b3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgogI2VuZGlmCkBAIC02Myw2ICs2NSw3IEBAIHR5cGVk
ZWYgdWludDMyX3QgV0tFdmVudE1vZGlmaWVyczsKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlv
blJlZik7CiAgICAgZXhwbGljaXQgUGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiwgV0tQYWdl
R3JvdXBSZWYgPSAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0V4cGVjdGVkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNw
cAppbmRleCA0YjEwYzg2YTJhYjczMmUxZWE2Mjc0ODRjYzc4OTQwZmI2Y2Q2ZTk2Li4yYTA2Zjhi
YTVjYTlmZWI0OTJhMzUyMmM1YzY1NTAxMzhkMjIzN2U1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCkBAIC00MDcsNiArNDA3LDcgQEAgVEVTVChXVEZfRXhw
ZWN0ZWQsIGRlc3RydWN0b3JzKQogc3RhdGljIGludCBzbm93Zmxha2VzID0gMDsKIHN0YXRpYyBp
bnQgbWVsdGVkID0gMDsKIHN0cnVjdCBzbm93Zmxha2UgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdm9pZCByZXNldCgpIHsgc25vd2ZsYWtlcyA9IG1l
bHRlZCA9IDA7IH0KICAgICBzbm93Zmxha2UoKSB7ICsrc25vd2ZsYWtlczsgfQogICAgIH5zbm93
Zmxha2UoKSB7ICsrbWVsdGVkOyB9CkBAIC00MTYsNyArNDE3LDcgQEAgVEVTVChXVEZfRXhwZWN0
ZWQsIHVuaXF1ZV9wdHIpCiB7CiAgICAgLy8gVW5pcXVlIHNub3dmbGFrZXMgY2Fubm90IGJlIGNv
cGllZC4KICAgICB7Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91
bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQobWFr
ZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7
CiAgICAgICAgIEVYUEVDVF9FUShtZWx0ZWQsIDApOwogICAgIH0KQEAgLTQyNSw3ICs0MjYsNyBA
QCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7
CiAKICAgICB7Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlx
dWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQobWFrZVVu
aXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBVbmV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxz
bm93Zmxha2U+PiBjKFdURk1vdmUocykpOwogICAgICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywg
MSk7CiAgICAgICAgIEVYUEVDVF9FUShtZWx0ZWQsIDApOwpAQCAtNDQ2LDcgKzQ0Nyw3IEBAIFRF
U1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIH07CiAKICAgICB7Ci0gICAgICAgIEV4
cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMoc3RkOjptYWtlX3VuaXF1
ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2Zs
YWtlPiwgaW50PiBzKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAgcGxvdyhXVEZN
b3ZlKHMpLnZhbHVlKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CkBA
IC00NTQsNyArNDU1LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25v
d2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDxpbnQsIHN0ZDo6dW5p
cXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25v
d2ZsYWtlPigpKSk7CisgICAgICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dm
bGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpKTsKICAgICAg
ICAgcGxvdyhXVEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2Zs
YWtlcywgMSk7CkBAIC00NjIsNyArNDYzLDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9w
dHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDx2
b2lkLCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChzdGQ6Om1h
a2VfdW5pcXVlPHNub3dmbGFrZT4oKSkpOworICAgICAgICBFeHBlY3RlZDx2b2lkLCBzdGQ6OnVu
aXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFr
ZT4oKSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAgICAgfQogICAgIEVY
UEVDVF9FUShzbm93Zmxha2VzLCAxKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hDb3VudGVkU2V0LmNwcAppbmRleCA4NGRhNWVjM2ZmYzI0OGFjZGQ5ZTM2MzMwMzhj
NjlkYWU4OTEyMDk5Li43YjhmYWYyODhhYmMwN2NmYWY4YjUyNzEyMzhmNzZkMDEzMDEyZWU2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3Bw
CkBAIC0yNDEsNyArMjQxLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktl
eSkKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRv
IHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsK
ICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVD
VF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQp
OwpAQCAtMjU5LDcgKzI1OSw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJL
ZXlJbml0aWFsQ291bnQpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwg
MTIpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpj
b25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yOTgsNyArMjk4LDcgQEAgVEVTVChXVEZfSGFzaENvdW50
ZWRTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3Vu
dGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0
ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBV
bmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRT
ZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0g
dW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0
cikpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1
ZVB0cktleV9HZXRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1
bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRy
LmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBA
IC0zMzcsNyArMzM3LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9S
ZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9w
dHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAg
YXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRy
ID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1
ZVB0cikpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNo
TWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCmluZGV4
IDFlMTYzZDM4OTk4ZTZiYWJmZmY1Mzg0MTNjY2EyOGFhNmQyOTg5ODIuLmE4MGNhNzQ5NGE4Zjlh
Nzk2N2UxZTQ5NDZmZThjY2E2MzljYmI1OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hNYXAuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5p
cXVlUHRyS2V5KQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlx
dWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAg
bWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yMzAsNyAr
MjMwLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50
ZXIpCiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAg
aW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0
ciksIDIpOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRy
S2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVf
cHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAg
IG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjU1LDcgKzI1NSw3IEBAIFRF
U1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9HZXRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAg
SGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1
ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1
bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBA
IC0yNjksNyArMjY5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVz
aW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8g
dW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwog
ICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsK
ICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI4OSw3ICsyODksNyBA
QCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfVGFrZVVzaW5nUmF3UG9pbnRlcikKIAog
ICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVu
aXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTU2MywxMiArNTYzLDEyIEBAIFRFU1QoV1RGX0hhc2hN
YXAsIEVuc3VyZV9VbmlxdWVQb2ludGVyKQogewogICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6
dW5pcXVlX3B0cjx1bnNpZ25lZD4+IG1hcDsKICAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkPigx
KTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVy
biBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZD4oMSk7IH0pOwogICAg
ICAgICBFWFBFQ1RfRVEoMXUsICptYXAuZ2V0KDEpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAq
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
YWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXkpOwogICAgICAgICBFWFBFQ1RfVFJVRShhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwgW10g
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMik7IH0pOworICAgICAgICBhdXRv
IGFkZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkPigyKTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
Km1hcC5nZXQoMSkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQyLml0ZXJhdG9y
LT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgYWRkUmVzdWx0Mi5pdGVyYXRv
ci0+a2V5KTsKQEAgLTU5MCw2ICs1OTAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfUmVm
UHRyKQogfQogCiBjbGFzcyBPYmplY3RXaXRoUmVmTG9nZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmplY3RXaXRoUmVmTG9nZ2VyKFJlZjxSZWZMb2dn
ZXI+JiYgbG9nZ2VyKQogICAgICAgICA6IG1fbG9nZ2VyKFdURk1vdmUobG9nZ2VyKSkKQEAgLTYw
NCw3ICs2MDUsNyBAQCB2b2lkIHRlc3RNb3ZpbmdVc2luZ0Vuc3VyZShSZWY8UmVmTG9nZ2VyPiYm
IGxvZ2dlcikKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0
V2l0aFJlZkxvZ2dlcj4+IG1hcDsKICAgICAKLSAgICBtYXAuZW5zdXJlKDEsIFsmXSB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7
IH0pOworICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8T2JqZWN0V2l0
aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CiB9CiAKIHZvaWQgdGVzdE1vdmluZ1Vz
aW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQpAQCAtNjEyLDcgKzYxMyw3IEBAIHZvaWQg
dGVzdE1vdmluZ1VzaW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogICAgIEhhc2hNYXA8
dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogCiAg
ICAgYXV0byYgc2xvdCA9IG1hcC5hZGQoMSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAg
IHNsb3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9n
Z2VyKSk7CisgICAgc2xvdCA9IG1ha2VVbmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92
ZShsb2dnZXIpKTsKIH0KIAogVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX0xhbWJkYXNDYXB0dXJp
bmdCeVJlZmVyZW5jZSkKQEAgLTY4Myw2ICs2ODQsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBWYWx1
ZUlzRGVzdHJ1Y3RlZE9uUmVtb3ZlKQogVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyTm90WmVyb2Vk
QmVmb3JlRGVyZWYpCiB7CiAgICAgc3RydWN0IERlcmVmT2JzZXJ2ZXIgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIHJl
ZigpCiAgICAgICAgIHsKICAgICAgICAgICAgICsrY291bnQ7CkBAIC02OTcsNyArNjk5LDcgQEAg
VEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiAgICAgICAgIGNv
bnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2VydmVkQnVja2V0IHsgbnVsbHB0ciB9OwogICAgIH07CiAK
LSAgICBhdXRvIG9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwor
ICAgIGF1dG8gb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CiAKICAgICBI
YXNoTWFwPFJlZlB0cjxEZXJlZk9ic2VydmVyPiwgaW50PiBtYXA7CiAgICAgbWFwLmFkZChhZG9w
dFJlZihvYnNlcnZlci5nZXQoKSksIDUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoU2V0LmNwcAppbmRleCA3MWVjZmRkYjg0MmI2YmQ1MTY0MWNhMDViNjEwOGFkNDhmNjJiYjdk
Li44NzI2OGM3NGYwY2I4ZmMxNDllYmY2MGM4NTg4ZmNlZDM1ODFhMjA1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIFRFU1Qo
V1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleSkKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRy
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4oKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEo
MXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAg
LTE0NCw3ICsxNDQsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5n
UmF3UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBzZXQ7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRv
IHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAg
ICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1
ZVB0cikpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRy
S2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVf
cHRyPGludD4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxp
bnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBURVNUKFdURl9I
YXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaFNl
dDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAot
ICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIq
IHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7
CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfVGFr
ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAg
ICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAg
ICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0yODMsNiArMjgzLDcgQEAgVEVT
VChXVEZfSGFzaFNldCwgQ29weUNhcGFjaXR5SXNOb3RPbkJvdW5kYXJ5KQogVEVTVChXVEZfSGFz
aFNldCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiB7CiAgICAgc3RydWN0IERlcmVmT2Jz
ZXJ2ZXIgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IE5FVkVSX0lOTElORSB2b2lkIHJlZigpCiAgICAgICAgIHsKICAgICAgICAgICAgICsrY291bnQ7
CkBAIC0yOTcsNyArMjk4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgUmVmUHRyTm90WmVyb2VkQmVm
b3JlRGVyZWYpCiAgICAgICAgIGNvbnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2VydmVkQnVja2V0IHsg
bnVsbHB0ciB9OwogICAgIH07CiAKLSAgICBhdXRvIG9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxEZXJlZk9ic2VydmVyPigpOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERlcmVm
T2JzZXJ2ZXI+KCk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxEZXJlZk9ic2VydmVyPj4gc2V0Owog
ICAgIHNldC5hZGQoYWRvcHRSZWYob2JzZXJ2ZXIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcAppbmRleCA2NTdiZTQxZDYyMDcyNDQ2N2E1
NTQ5ZTJhYjVhMTk0MWM0ZTM3M2MxLi5iNzcwYTViMjdjMWQyYjA5NWE1YmI1OWQ2NWFjM2Y0ZGM0
ZTRlNjhlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFz
aFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQu
Y3BwCkBAIC0zODAsNyArMzgwLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktl
eSkKIAogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0g
bWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGxpc3QuYWRk
KFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTM5Niw3ICszOTYsNyBAQCBU
RVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7
CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRv
IHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgYXV0byBw
dHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsK
IApAQCAtNDEwLDcgKzQxMCw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlf
Q29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVf
cHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPGludD4oNSk7CiAgICAgYXV0byBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbGlz
dC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtNDIxLDkgKzQyMSw5IEBAIFRFU1QoV1RG
X0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfSW5zZXJ0QmVmb3JlVXNpbmdSYXdQb2ludGVyKQog
ewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0
byB1bmlxdWVQdHJXaXRoMiA9IHN0ZDo6bWFrZV91bmlxdWU8aW50PigyKTsKKyAgICBhdXRvIHVu
aXF1ZVB0cldpdGgyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50PigyKTsK
ICAgICBhdXRvIHB0cldpdGgyID0gdW5pcXVlUHRyV2l0aDIuZ2V0KCk7Ci0gICAgYXV0byB1bmlx
dWVQdHJXaXRoNCA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig0KTsKKyAgICBhdXRvIHVuaXF1ZVB0
cldpdGg0ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig0KTsKICAgICBh
dXRvIHB0cldpdGg0ID0gdW5pcXVlUHRyV2l0aDQuZ2V0KCk7CiAKICAgICBsaXN0LmFkZChXVEZN
b3ZlKHVuaXF1ZVB0cldpdGgyKSk7CkBAIC00MzUsNyArNDM1LDcgQEAgVEVTVChXVEZfTGlzdEhh
c2hTZXQsIFVuaXF1ZVB0cktleV9JbnNlcnRCZWZvcmVVc2luZ1Jhd1BvaW50ZXIpCiAgICAgQVNT
RVJUX0VRKHB0cldpdGg0LCBsaXN0Lmxhc3QoKS5nZXQoKSk7CiAgICAgQVNTRVJUX0VRKDQsICps
aXN0Lmxhc3QoKS5nZXQoKSk7CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgzID0gc3RkOjptYWtl
X3VuaXF1ZTxpbnQ+KDMpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDMgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDMpOwogICAgIGF1dG8gcHRyV2l0aDMgPSB1bmlxdWVQ
dHJXaXRoMy5nZXQoKTsKIAogICAgIGxpc3QuaW5zZXJ0QmVmb3JlKHB0cldpdGg0LCBXVEZNb3Zl
KHVuaXF1ZVB0cldpdGgzKSk7CkBAIC00NjIsNyArNDYyLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hT
ZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBMaXN0SGFzaFNl
dDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGxpc3Q7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBhdXRvKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7
CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Mb2NrLmNwcAppbmRleCAyZGNjZWRjYWRjYzZjMjIyNzNkZWJjMjBmM2ZmNjc3Yzg3
MzI5MDI3Li41ZmQzMWJmMWM5YWJlY2ZiOGFiZTczNTYwOGE0N2M1NjA0MzA0NzcyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcApAQCAtNDIsOSArNDIsOSBAQCBzdHJ1Y3Qg
TG9ja0luc3BlY3RvciB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KIHZvaWQgcnVuTG9j
a1Rlc3QodW5zaWduZWQgbnVtVGhyZWFkR3JvdXBzLCB1bnNpZ25lZCBudW1UaHJlYWRzUGVyR3Jv
dXAsIHVuc2lnbmVkIHdvcmtQZXJDcml0aWNhbFNlY3Rpb24sIHVuc2lnbmVkIG51bUl0ZXJhdGlv
bnMpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExvY2tUeXBlW10+IGxvY2tzID0gc3RkOjptYWtl
X3VuaXF1ZTxMb2NrVHlwZVtdPihudW1UaHJlYWRHcm91cHMpOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxkb3VibGVbXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGRvdWJsZVtdPihudW1UaHJlYWRH
cm91cHMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0g
c3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1U
aHJlYWRzUGVyR3JvdXApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPExvY2tUeXBlW10+KG51bVRocmVhZEdy
b3Vwcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGRvdWJsZVtdPihudW1UaHJlYWRHcm91cHMpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVt
VGhyZWFkc1Blckdyb3VwKTsKIAogICAgIGZvciAodW5zaWduZWQgdGhyZWFkR3JvdXBJbmRleCA9
IG51bVRocmVhZEdyb3VwczsgdGhyZWFkR3JvdXBJbmRleC0tOykgewogICAgICAgICB3b3Jkc1t0
aHJlYWRHcm91cEluZGV4XSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9QYXJraW5nTG90LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bh
cmtpbmdMb3QuY3BwCmluZGV4IDQ1MmUyMjc3MWRjMDY0YWRhYWZlNjIwZWIzM2U4MDEzMGY3OWYx
OTcuLmUwMGEwOWIyYTE3YWE3MzQ4NTZlNDJjMTE0NWNiZTYwODYzZjBhMDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCkBAIC0xODIsNyArMTgyLDcg
QEAgc3RydWN0IFNpbmdsZUxhdGNoVGVzdCB7CiAKIHZvaWQgcnVuUGFya2luZ1Rlc3QodW5zaWdu
ZWQgbnVtTGF0Y2hlcywgdW5zaWduZWQgZGVsYXksIHVuc2lnbmVkIG51bVRocmVhZHMsIHVuc2ln
bmVkIG51bVNpbmdsZVVucGFya3MpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNpbmdsZUxhdGNo
VGVzdFtdPiB0ZXN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8U2luZ2xlTGF0Y2hUZXN0W10+KG51bUxh
dGNoZXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRjaFRlc3RbXT4gdGVzdHMgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxTaW5nbGVMYXRjaFRlc3RbXT4obnVtTGF0
Y2hlcyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGxhdGNoSW5kZXggPSBudW1MYXRjaGVzOyBsYXRj
aEluZGV4LS07KQogICAgICAgICB0ZXN0c1tsYXRjaEluZGV4XS5pbml0aWFsaXplKG51bVRocmVh
ZHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRl
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcAppbmRl
eCAwODFkZjllNGZjMWQyNTFkODE0YjIyNjRiZDJkMGUwNTJjMGJkNDFmLi5mNGVmOTgzYjFhOWZi
ZTg5ODA3Yzc1YWMyOGZkYjYyNmQ5YTk2YTExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SZWZDb3VudGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIFRFU1QoV1RGLCBSZWZD
b3VudGVyKQogVEVTVChXVEYsIFJlZkNvdW50ZXJEZWxldGVDb3VudGVyV2l0aE91dHN0YW5kaW5n
VG9rZW5zKQogewogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBj
b3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0Q291bnRlcj4oWyZdKFJlZkNvdW50ZXJFdmVu
dCBldmVudCkgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdENvdW50ZXI+IGNvdW50ZXIg
PSBtYWtlVW5pcXVlPFRlc3RDb3VudGVyPihbJl0oUmVmQ291bnRlckV2ZW50IGV2ZW50KSB7CiAg
ICAgICAgICAgICBpZiAoIWNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY291bnRl
ciA9IG51bGxwdHI7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9W
YXJpYW50LmNwcAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1NGZmZmQzMzIxMzk1ZTlmMWUyZDJhN2My
Li41MWVjYTA3NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5ZmY0ZmQ1NmJiIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFRFU1Qo
V1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKICAgICBDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7CiAKICAgICB7Ci0gICAgICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PigpOworICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4oKTsKICAgICAgICAgVmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gdiA9IFdURk1vdmUodW5pcXVlUHRyKTsKIAog
ICAgICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0
cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAK
aW5kZXggMTUwYjliNzZjOGE1NjVlMzY1NTQ4MzZlMGJiZWMwNTA1Yzc4NDhmMi4uN2U2MzA2OTNl
ZWM2MDQxYTM3NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IEludCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxJbnQ+IHsKIH07CiAKIGNsYXNzIEJhc2UgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEJhc2UoKSB7IH0KIApAQCAtNTc4LDEwICs1NzksMTAgQEAgVEVTVChXVEZfV2Vha1B0ciwg
V2Vha0hhc2hTZXRFeHBhbnNpb24pCiAgICAgICAgIEVYUEVDVF9FUSh3ZWFrSGFzaFNldC5jYXBh
Y2l0eSgpLCAwdSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGluaXRpYWxDYXBhY2l0eSAvIG1heExv
YWRDYXApOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdGlhbENhcGFjaXR5
IC8gbWF4TG9hZENhcDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxC
YXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAg
ICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAgICAgIG90aGVyT2Jq
ZWN0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpKTsKKyAgICAgICAgICAgIG90aGVy
T2JqZWN0cy5hcHBlbmQobWFrZVVuaXF1ZTxCYXNlPigpKTsKICAgICAgICAgICAgIHdlYWtIYXNo
U2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoc19i
YXNlV2Vha1JlZmVyZW5jZXMsIG90aGVyT2JqZWN0cy5zaXplKCkpOwpAQCAtNjE1LDcgKzYxNiw3
IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBF
Q1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICB1bnNpZ25lZCBvYmpl
Y3RDb3VudCA9IGluaXRpYWxDYXBhY2l0eSAqIDI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBvYmplY3RDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVu
aXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAg
ICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAgICAgIHdl
YWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTY2NywxMCArNjY4LDEwIEBAIFRFU1Qo
V1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZXNFbXB0eSkKICAgICB7CiAgICAgICAgIFdl
YWtIYXNoU2V0PEJhc2U+IHdlYWtIYXNoU2V0OwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJhc2U+PiBvYmplY3RzOwotICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxC
YXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAg
ZG8gewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7
CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAg
ICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5k
KFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgIH0gd2hpbGUgKHdlYWtIYXNoU2V0LmJlZ2luKCku
Z2V0KCkgPT0gZmlyc3RPYmplY3QuZ2V0KCkpOwpAQCAtNzM0LDggKzczNSw4IEBAIFRFU1QoV1RG
X1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAKICAgICB3aGlsZSAoMSkgewogICAg
ICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKLSAgICAgICAgYXV0byBmaXJzdE9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKLSAgICAgICAgYXV0byBsYXN0T2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0g
bWFrZVVuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGxhc3RPYmplY3QgPSBtYWtlVW5pcXVl
PEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqZmlyc3RPYmplY3QpOwogICAgICAg
ICB3ZWFrSGFzaFNldC5hZGQoKmxhc3RPYmplY3QpOwogICAgICAgICBpZiAod2Vha0hhc2hTZXQu
YmVnaW4oKS5nZXQoKSAhPSBmaXJzdE9iamVjdC5nZXQoKSkKQEAgLTc1OSwxMCArNzYwLDEwIEBA
IFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAgICAgewogICAgICAg
ICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9IG1h
a2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpub25GaXJzdE9iamVj
dCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+
KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBv
YmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFz
aFNldC5iZWdpbigpLmdldCgpID09IG5vbkZpcnN0T2JqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggMmFh
YjY1ZGQ4ZmQ3ZWYwNzA1MWZiNmY3NTY3NThjZGU3MDJlMDdhMS4uODFkN2JhMjkxYWU5ZjRhYjdj
ZjJlNWY5YWFkNjJjOTQyNDM1MzY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQ0FS
aW5nQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB2aXJ0dWFsIHZvaWQg
U2V0VXAoKQogICAgIHsKICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAg
ICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAg
ICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Q0FS
aW5nQnVmZmVyPigpOwogICAgIH0KIAogICAgIC8vIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihk
b3VibGUgc2FtcGxlUmF0ZSwgVUludDMyIG51bUNoYW5uZWxzLCBQQ01Gb3JtYXQgZm9ybWF0LCBi
b29sIGlzSW50ZXJsZWF2ZWQsIHNpemVfdCBjYXBhY2l0eSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA3Nzhl
NjE1NWYwNmNjMTI4Mzk3OTc1ZjA0NTg3MTJhMmM3MTA0MGZhLi5kY2E0NjM2MDJlOTZkNjBhMDQ1
MTM4MTIxY2JiZGNlZmJlZTllNWMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHN0YXRpYyB1bnNpZ25lZCBkZWxldGlvbkNvdW50Owog
CiBjbGFzcyBDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2Fs
Y0V4cHJlc3Npb25Ob2RlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUoKQogICAgIHsKQEAgLTUy
LDcgKzUzLDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdl
YkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CiAKIHN0YXRpYyBSZWY8V2ViQ29yZTo6Q2FsY3Vs
YXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsKLSAgICBhdXRvIG5vZGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKKyAgICBhdXRvIG5vZGUg
PSBtYWtlVW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKICAgICByZXR1cm4g
V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUobm9kZSksIFdlYkNvcmU6
OlZhbHVlUmFuZ2VBbGwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCmluZGV4IGY1OGRhOGE0MjA3M2Vj
OTliYmVlMzRhODViZWMzNGMwODVjNTJhNjQuLjBjMWEwNjlmMTNjMzljNDA5ZTVkNWUxYjAzYTdl
OTJiZjliMzY2YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgVEVTVChG
aWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRTaXplKQogICAgIHVpbnQzMl90IGNoYW5uZWxJ
ZCA9IDB4MDUwNjA3MDg7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAKLSAgICBhdXRvIGlu
aXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQs
IEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRh
LnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBh
Y2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50
OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGluaXRQYWNrZXQt
PmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKIAotICAgIGF1dG8gY29udGludWF0aW9uUGFj
a2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVs
SWQsIDAsIFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gbWFr
ZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUo
ZGF0YSkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGNvbnRpbnVhdGlvblBhY2tldC0+Z2V0U2VyaWFs
aXplZERhdGEoKS5zaXplKCkpOwogfQogCkBAIC03MCw3ICs3MCw3IEBAIFRFU1QoRmlkb0hpZE1l
c3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweEY1
MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWRE
ZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsKLSAgICBhdXRv
IGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVs
SWQsIGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBp
bml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQs
IFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIHNpemVfdCBpbmRleCA9
IDA7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZCA9IGluaXRQYWNrZXQtPmdldFNl
cmlhbGl6ZWREYXRhKCk7CkBAIC05NCw3ICs5NCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0
LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwg
MTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5k
OjprV2luazsKICAgICBzaXplX3QgbGVuZ3RoID0gZGF0YS5zaXplKCk7Ci0gICAgYXV0byBvcmln
UGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBj
bWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CisgICAgYXV0byBvcmlnUGFja2V0ID0gbWFrZVVu
aXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxl
bmd0aCk7CiAKICAgICBzaXplX3QgcGF5bG9hZExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4o
b3JpZ1BhY2tldC0+cGF5bG9hZExlbmd0aCgpKTsKICAgICBWZWN0b3I8dWludDhfdD4gb3JpZ0Rh
dGEgPSBvcmlnUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggMWVkMTMyOGY4MTMw
OWUxMmUxMzcxY2IzYWRmZTZiMGE5NzgzZWViNi4uMjI4MzgzYTBmMzBhOWIxMzlmNmFhZjQzZjk1
Y2VkZDgwOTE2NmU2YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9y
VGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNy
ZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwg
W10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9y
ID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5
UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
ICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0x
OTAsNyArMTkwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVDaGFu
Z2VzKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3Jr
IFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25p
dG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9y
OjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxG
aWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxl
TW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yNTAsNyArMjUwLDcgQEAg
VEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRpb24pCiAKICAgICBhdXRvIHRlc3RR
dWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8g
bW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0
ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUp
IHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBh
dGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlw
ZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6
Ok1vZGlmaWNhdGlvbjoKQEAgLTI4OSw3ICsyODksNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0
LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3Jr
UXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNv
cHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0
byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RR
dWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewog
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZp
Y2F0aW9uOgpAQCAtMzQ2LDcgKzM0Niw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdv
cmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUu
Y29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBh
dXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVz
dFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7
CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2Rp
ZmljYXRpb246CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJs
L0Nvb2tpZXMuY3BwCmluZGV4IDkyZDhhMTkyY2E3YjJhMTA4MTU2NTk5N2IwZWE1YjFmOWFlYThm
NjUuLjIxOWU5NjZkYmViYWE4NGQzNjAyNzIyZTk1OWUzMmY2NGZiNGRiMmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC00
NCw3ICs0NCw3IEBAIGNsYXNzIEN1cmxDb29raWVzOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAg
ICAgewogICAgICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeSgpOwogCi0gICAgICAgIG1fY29va2llSmFyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOworICAgICAgICBtX2Nvb2tp
ZUphciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsK
ICAgICAgICAgbV9jb29raWVKYXItPm9wZW4oKTsKICAgICAgICAgbV9jb29raWVKYXItPnNldEFj
Y2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5cyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRl
UGFnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRo
aW5DcmVhdGVQYWdlLmNwcAppbmRleCA1YzBhZTMzMTMyOGIzNmIwYmE3MGExOGQ5OTM2Njk0MTJh
Y2EyOWE5Li5iM2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5ZGRhMTIxMmYxOTMyYTBkMjBmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVh
dGVQYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZy
b21XaXRoaW5DcmVhdGVQYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgV0tQYWdlUmVm
IGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0
LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAK
LSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBh
Z2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFn
ZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGll
bnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCmluZGV4IGE0ZmJhMTI3YzZlNGQwM2U2M2Q5
YTgxNzJhMzliM2NiOGIxNDcyYzcuLjdiYzM1MjRmMmJkYjlkYmQ3YTQzNWEzY2M2YWQzODMyZTk0
NGVkZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFs
QWxlcnRzU1BJLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2Rh
bEFsZXJ0c1NQSS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0
ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0Rp
YwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBv
cGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwor
ICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAK
ICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAs
IHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAK
aW5kZXggMGY3ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4MDM4ZDE5MjIxZWRiZjdkNS4uY2QxOWQ3Y2Rl
NTg4OTYyNWYxMjIxMmZjNzUzY2ZkNTVlMjc4ZDkyMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFu
ZEVuZEVkaXRpbmcuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBXZWJLaXQyVGV4dEZpZWxk
QmVnaW5BbmRFZGl0RWRpdGluZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAg
ICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVh
dGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVk
aXRpbmdFdmVudHNUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250
ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBzZXRQYWdlTG9h
ZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAgZGlkRmluaXNoTG9h
ZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
VXNlck1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1l
c3NhZ2UuY3BwCmluZGV4IGM3YjAyNTFiZmNmMjFhYTRhYmQxMTRjODU1MDc5MjQxZDY2MTc0ZTku
LjlkYzNhNmRhOTk1MDljMjcxMTIxZDRjM2E0NTMwODRmZWU5ODliZDcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKQEAgLTkzLDcgKzkz
LDcgQEAgY2xhc3MgV2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJVc2VyTWVzc2FnZVRlc3QiKSk7CiAgICAgICAgIHNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdl
YlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7
CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5n
ZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy0+cGFnZSgpLCB0aGlz
KTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKaW5kZXggZWQ5ZjBmZmM3MDI1YWIxMmNiNTM5
NjdmNzIwNWZmOTZjODliZTY5OS4uNTJmMThkY2ViNDJkNTFhYzA4Mzk1YjYyMDAxZDRhOTU0MGY3
NDUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExv
YWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNw
cApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBXZWJLaXQyV2lsbExvYWRUZXN0IDogcHVibGljIDo6
dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIldpbGxMb2FkVGVzdCIpKTsKICAgICAgICAgc2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2Vi
VmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsK
KyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0Lmdl
dCgpKTsKIAogICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZhbHNlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBw
ZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQppbmRleCBhZWJh
MWMzNDhmYmM2NmExNzBlNTM5ZTBhNzI4NmFlZTkxNTNlNjA0Li4yOTFhNDc4YTI3ODQyNDJkYWQ0
NWEzYThmMTczOTA1ZDdkM2IyZjIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJh
bmNlSW5CdW5kbGVfQnVuZGxlLm1tCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
YXV0byByZXN1bHRTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KHNjcmlwdENvbnRl
eHQsIHJlc3VsdCwgbnVsbHB0cikpOwogCiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IEpTU3Ry
aW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShyZXN1bHRTdHJpbmcuZ2V0KCkpOwotICAgICAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFy
W10+KGJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHJlc3VsdFN0
cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAgICAgICBXS0J1bmRs
ZVBhZ2VTZXRVc2VEYXJrQXBwZWFyYW5jZShtX3BhZ2UsIHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9u
LmNwcAppbmRleCBkNmNjMmZiMjQ3ZTU2MjA2Njk3NzYxMGIyNTY3OWI3ZWQxZGNjOGJhLi43Yzhj
OGI1MjE1NGFjNGViMDk4ZTY5NTE3OTA2OWEwNWViZGM2NmFjIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9u
LmNwcApAQCAtMjU2LDYgKzI1Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGlj
YXRpb25FbXB0eVJlYWxtKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0CiB9CiAKIGNs
YXNzIFR1bm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
VHVubmVsKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAg
IDogbV9zZXJ2ZXIoc2VydmVyKQpAQCAtMjk5LDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHNlcnZl
ckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0
IGNoYXIqCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9DT05ORUNU
KSB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVy
KSwgPT0sIGdQcm94eVNlcnZlclBvcnQpOwotICAgICAgICBhdXRvIHR1bm5lbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOworICAgICAgICBhdXRvIHR1bm5lbCA9
IG1ha2VVbmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOwogICAgICAgICBhdXRvKiB0dW5u
ZWxQdHIgPSB0dW5uZWwuZ2V0KCk7CiAgICAgICAgIHR1bm5lbFB0ci0+Y29ubmVjdChbdHVubmVs
ID0gV1RGTW92ZSh0dW5uZWwpXShjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAg
ICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKQEAgLTM5NCw3ICszOTUsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHkoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRl
c3QsIGdjb25zdAogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlI
VFRQUyhQcm94eUF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAg
ICBhdXRvIGh0dHBzU2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRUZXN0U2VydmVyPihX
ZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7CisgICAgYXV0byBodHRwc1NlcnZlciA9IG1h
a2VVbmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMp
OwogICAgIGh0dHBzU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOwogCiAgICAgdGVzdC0+bG9h
ZFVSSShodHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Byb3h5L2F1dGgtdGVzdC5odG1sIiku
ZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNiMDVjZDRiYzAyN2UxMmQxMTAzZmFmNmEwMDdh
YzZmNDBmMy4uYjZiNzI4ZTQ1ZTA5YzUxYTZkNmJhOTliZjcxN2UxOTVlOWEwZTBjMSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NU
ZXN0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNlbmRpZgogCiBjbGFzcyBXZWJQcm9jZXNzVGVzdCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
UHJvY2Vzc1Rlc3QoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0
ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSopID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKaW5kZXggMTI1NjI0
MTk2YTcxYzZkM2FkNWJjZGQyOWYxNDJiODZhYmI5ZmQxMS4uZTQwMDA3NjMzZjIzNjI0MDUyOWRm
NTRhZTg2MzIwODdiZDM2OTUyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAg
c3RhdGljIGdib29sZWFuIGNsaWNrZWRDYWxsYmFjayhXZWJLaXRET01ET01XaW5kb3cqLCBXZWJL
aXRET01FdmVudCosIFdlYktpdERPTUQKIAogY2xhc3MgV2ViS2l0RE9NRE9NV2luZG93VGVzdCA6
IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXRET01ET01X
aW5kb3dUZXN0PigpOyB9CiAKIHByaXZhdGU6CiAgICAgZ3VpbnQ2NCB3ZWJQYWdlRnJvbUFyZ3Mo
R1ZhcmlhbnQqIGFyZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Bs
YXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRm
b3JtVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggOGQyZWU4YWQxNmNhZDY3OTU2OGVkOWI2ZDc1Y2Vj
ZDgyMTUwZmVkYi4uMzQ5MGVmMWNlYjZmMTc4MDUwMmYwY2RjOTE5Yzk3MWUyOTJiZTkwNSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29h
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2Nv
YS5tbQpAQCAtMzgsNyArMzgsNyBAQCBzdGQ6OnN0cmluZyB0b1NURChOU1N0cmluZyAqc3RyaW5n
KQogICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXpl
ID0gW3N0cmluZyBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z107Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6
ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxj
aGFyW10+KGJ1ZmZlclNpemUpOwogICAgIE5TVUludGVnZXIgc3RyaW5nTGVuZ3RoOwogICAgIFtz
dHJpbmcgZ2V0Qnl0ZXM6YnVmZmVyLmdldCgpIG1heExlbmd0aDpidWZmZXJTaXplIHVzZWRMZW5n
dGg6JnN0cmluZ0xlbmd0aCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBvcHRpb25zOjAg
cmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSByZW1haW5pbmdSYW5nZTowXTsK
ICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDU0NmNhNmUyMjJk
OWZlYTgxY2U3YmU0ZTJjMmQzOTg1YzViNDRmMGYuLjI0NzU3Mjg5OGI2YTg3OWM3YTM2YjRmYzY1
YjkxNTMzMDQ3MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVdvcmthcm91bmRUb0Fs
bG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCkKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IHN3aXp6bGVyOwogICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tl
biwgXnsKLSAgICAgICAgc3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dp
enpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlk
ZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxl
VHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKKyAgICAg
ICAgc3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRl
ZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVBy
b3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9y
SXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKICAgICB9KTsKIH0KIApAQCAtMzQ3LDcg
KzM0Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29u
ZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9uY2UgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE3NTIwND4gaXMgZml4ZWQuCi0gICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6
emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJh
ciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CisgICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxl
ciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10s
IEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHBy
ZXNzVUlDYWxsb3V0QmFyKSk7CiAgICAgX2lucHV0U2Vzc2lvbkNoYW5nZUNvdW50ID0gMDsKICAg
ICBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJv
dmlkZXJzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaAppbmRleCA2OTBmMGE3NzU2Y2ZlM2FmYjA3ZDkw
YmVlZmYwOTU3OGIyZmM1NWRlLi4yODE0NTI3ZjE5Yjk1NGY4MmFlYjg3YmMwZTRjOGRjMGI5YTdm
NWI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJL
aXRUZXN0U2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViS2l0VGVzdFNlcnZlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogCiBjbGFzcyBXZWJLaXRUZXN0U2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIGVudW0gU2VydmVyT3B0aW9ucyB7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KaW5kZXggODYyNjM1NDQzMzVhN2Y1
ZDk3MWI1ZGMwZDI1OWU1NWRjMGQ3M2M2Ni4uNGJkZTZjNTEwMGQyYmQ2ZmU0YmI5MGZhY2JlMjVk
MzM5YTUwNTRiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRP
cHRpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5t
bQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczoo
TlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCiAKICAgICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXpl
WmVybzsKICAgICBfc2hhZG93Qmx1clJhZGl1cyA9IDA7Ci0gICAgX3JlcGxhY2VGb250T3B0aW9u
c1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNz
RnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25z
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNoYXJlZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOwor
ICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RT
d2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3Rvcihz
aGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9u
c0ZvclRlc3RpbmcpKTsKICAgICBfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMgPSBOTzsKICAgICBf
aGFzTXVsdGlwbGVGb250cyA9IE5POwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5k
ZXJQcm94eS5oCmluZGV4IDE1MzIyMTgyNjk5ZTBlYTMwNzU0YTAyMjZjM2E3YjYyOTU5NzZkMDAu
LjExMzk5YjM5MGZlOTE3MGY2YzUyNTI3NWFjMjM0NTgyZGFmNzUwZjggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBX
VFJFdmVudFF1ZXVlSXRlbTsKICNlbmRpZgogCiBjbGFzcyBFdmVudFNlbmRlclByb3h5IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFdmVudFNl
bmRlclByb3h5KFRlc3RDb250cm9sbGVyKik7CiAgICAgfkV2ZW50U2VuZGVyUHJveHkoKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2su
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaAppbmRl
eCA3ZDk0NWQ2N2VjNjc1MGJlNzA2NDM1YTJhNmIzYzc0ZDFhZDE3NDNjLi4xZWQ0YWRmOWIzOTM5
M2EzMzNhYTMyNTEwOTdiOWUzYWE0MmNjMzZiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCkBAIC0yNywxMCArMjcsMTIgQEAKICNkZWZp
bmUgR2VvbG9jYXRpb25Qcm92aWRlck1vY2tfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAK
IGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayhXS0NvbnRleHRSZWYp
OwogICAgIH5HZW9sb2NhdGlvblByb3ZpZGVyTW9jaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5jcHAKaW5kZXggMWY5ZDNlZmM5NjRmYjEzNzdiYzY2M2MwMTYwYzM0YTg4YjIzMjhhNi4u
YzlhNTJjMTVmNzcwODMwNjgzYzhlZmY2ODk0MjliZDBiYzFmNTY0NSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuY3BwCkBAIC02MTIsNiArNjEyLDcgQEAgdm9pZCBFdmVudFNlbmRpbmdD
b250cm9sbGVyOjptb25pdG9yV2hlZWxFdmVudHMoKQogfQogCiBzdHJ1Y3QgU2Nyb2xsQ29tcGxl
dGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIEpTQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAgICAgSlNPYmplY3RSZWYgbV9mdW5jdGlvbjsK
IApAQCAtNjQ3LDcgKzY0OCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsCiAgICAgCiAgICAg
SlNWYWx1ZVByb3RlY3QoY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAKLSAgICBh
dXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3Qp
OworICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSA9IG1ha2VVbmlxdWU8U2Ny
b2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YT4oY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVj
dCk7CiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyID0gc2Nyb2xsQ29t
cGxldGlvbkNhbGxiYWNrRGF0YS5yZWxlYXNlKCk7CiAgICAgYm9vbCBjYWxsYmFja1dpbGxCZUNh
bGxlZCA9IFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxi
YWNrKHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0
cik7CiAgICAgaWYgKCFjYWxsYmFja1dpbGxCZUNhbGxlZCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRl
eCA3MTE2Y2M5ODE1NjY5ZDk0OTRkYmY4ZGU0OGJhZWVjZDYzNzRjMzc2Li44M2IyYjMwYjEzMzJl
Yzc3YmZlZmNjMjlmZGQxYTJlNDgzY2I1ZjIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTExLDcg
KzExMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVu
ZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiB2b2lkIEluamVjdGVkQnVuZGxlOjpk
aWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewogICAgIGJvb2wgaXNNYWluUGFn
ZSA9IG1fcGFnZXMuaXNFbXB0eSgpOwotICAgIG1fcGFnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7CisgICAgbV9wYWdlcy5hcHBlbmQobWFrZVVu
aXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+KHBhZ2UpKTsKIAogICAgIHNldFVwSW5qZWN0ZWRCdW5k
bGVDbGllbnRzKHBhZ2UpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA1OWQzZTFiMGQwMmUy
MmM1MmZhNzY1NDMzMjljMjNmNmI2MmEzODlhLi5iMzIzYzI1MDQ0ZjU1MDM2MDc2ZjQ4ZWRkZDQ3
YmNlYWEzZTIwZjE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5h
bWVzcGFjZSBXVFIgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2UgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRs
ZVBhZ2VSZWYpOwogICAgIH5JbmplY3RlZEJ1bmRsZVBhZ2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDU5ZjI1
YzFiYmFjNmVkODllOTRjZmE4OGE5YWZmYzAzZmI3MjRhMTguLjNiMGVkNmFhY2E3NTk5NTVlZDE1
Y2U4YjBjMTBjZjM3MmM5OTFkMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjM3NCw3ICsyMzc0LDcgQEAgdm9p
ZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAK
ICAgICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBm
aWxlVmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNT
dHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAg
YXV0byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXpl
KTsKKyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENT
dHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAg
ICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGZpbGVVUkxzLmdldCgpLCBhZG9wdFdLKFdLVVJMQ3Jl
YXRlV2l0aEJhc2VVUkwobV90ZXN0VVJMLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpKSkuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCAwZTVj
MDdjYTcyOWI2ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMyYzAwMTdjLi4xOGU1N2QyZmNmNjI5NzY3YTcz
Mjk3OWJjMmVkYzU3YWNmMTA5Y2UyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRrLmNwcApAQCAtNzMwLDcgKzczMCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZl
cnRUb0pTT2JqZWN0QXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
CiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENv
bnRleHQobWFpbkZyYW1lKTsKIAogICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBjaGlsZHJlbi5z
aXplKCk7Ci0gICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ZhbHVl
UmVmW10+KGVsZW1lbnRDb3VudCk7CisgICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyBpKyspCiAgICAgICAgIHZhbHVl
RWxlbWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29udGV4dCwgY2hpbGRyZW5baV0tPndyYXBwZXJD
bGFzcygpLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtV2ViVmlldy5oCmluZGV4IGY3NGNjMmQzOTNkNTMwNWZkMzY2NWJiMGUwYTM1NTE4NDQ3MzEw
OWYuLmNhNGZkYmQ3MjIxNWFmNDhiZGE5NjdkNWJjYWI0ODE1NmJhZGNjNzEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgIWRlZmluZWQoQlVJTERJTkdfR1RLX18p
CiAjaW5jbHVkZSA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgpAQCAtNjQsNiArNjUsNyBAQCB0eXBl
ZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1JbWFnZTsKIG5hbWVzcGFjZSBXVFIgewogCiBj
bGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtV2ViVmlldyhXS1dlYlZpZXdD
b25maWd1cmF0aW9uKiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1N0cmluZ0Z1bmN0aW9ucy5oCmluZGV4IGRhZjE0Y2E3MDU0ODZiZmMyMDY0MzEyM2RlNTA5MWI3
OWU1ZDAxMzEuLmJiYTE3YzJlZmZiMDk2NjVlZmMyOGVlYjY5ZTcyMzI5YjFkNjliNzQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaApAQCAtNzMsNyArNzMsNyBAQCBp
bmxpbmUgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRvSlMoY29uc3QgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+JiBzdHJpbmcpCiBpbmxpbmUgc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYg
c3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRG
OENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdM
ZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZm
ZXJTaXplKTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5n
dGggLSAxKTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKGNv
bnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIFdURjo6U3RyaW5n
IHRvV1RGU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6
ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8g
YnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8g
YnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJT
aXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05v
blN0cmljdChzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmlu
Z0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAppbmRleCAxNjU0NjI5Y2FhNmY2ZDhjODk0NTQ4MzUxYzBjOGZiMGEzMzMzNzJhLi5mOTdmMTVl
NjEyYzBiMWE0NzAzOGRkYmQzNzhiNjZkMGU3YWM0Mjc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllciA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdFRlc3RSdW5uZXJQYWdlR3JvdXAiKSk7CiAg
ICAgbV9wYWdlR3JvdXAuYWRvcHQoV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihwYWdl
R3JvdXBJZGVudGlmaWVyLmdldCgpKSk7CiAKLSAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBzdGQ6
Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOworICAgIG1fZXZlbnRTZW5kZXJQ
cm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CiB9CiAKIFdLUmV0YWlu
UHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZUNv
bnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zOjpDb250ZXh0T3B0aW9ucyYgb3B0
aW9ucykgY29uc3QKQEAgLTUyMSw3ICs1MjEsNyBAQCBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1
cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjbwog
ICAgICAgICBtX2NvbnRleHQgPSBwbGF0Zm9ybUFkanVzdENvbnRleHQoYWRvcHRXSyhXS0NvbnRl
eHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSkpLmdl
dCgpLCBjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fY29udGV4dE9wdGlv
bnMgPSBvcHRpb25zLmNvbnRleHRPcHRpb25zOwogCi0gICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92
aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4
dC5nZXQoKSk7CisgICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8R2Vv
bG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgaWYgKGNv
bnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7
CiAgICAgICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChk
dW1wUmVuZGVyVHJlZVRlbXApOwpAQCAtOTUxLDcgKzk1MSw3IEBAIGJvb2wgVGVzdENvbnRyb2xs
ZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlv
bnMsIFJlCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsc28gZW5zdXJlIHRo
YXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVzZXQgdGhlIEV2ZW50
U2VuZGVyIGZvciBlYWNoIHRlc3QuCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtl
X3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkg
PSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogCiAgICAgLy8gRklYTUU6IElz
IHRoaXMgbmVlZGVkPyBOb3RoaW5nIGluIFRlc3RDb250cm9sbGVyIGNoYW5nZXMgcHJlZmVyZW5j
ZXMgZHVyaW5nIHRlc3RzLCBhbmQgaWYgdGhlcmUgaXMKICAgICAvLyBzb21lIG90aGVyIGNvZGUg
ZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVhbnVw
IHRvby4KQEAgLTEyMzQsMTEgKzEyMzQsMTEgQEAgc3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RV
UkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4g
YnVmZmVyOwogICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAg
IGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4ocHJlZml4
TGVuZ3RoICsgbGVuZ3RoICsgMSk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQ
cmVmaXgpOwogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRo
T3JVUkwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0
aGUgcGF0aFNlcGFyYXRvcgorICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0aCArIFBBVEhfTUFYICsgbGVuZ3RoICsgMik7
IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCks
IGZpbGVQcmVmaXgpOwogICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhM
ZW5ndGgsIFBBVEhfTUFYKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY0OCw3ICsxNjQ4
LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cnVuVGVzdChjb25zdCBjaGFyKiBpbnB1dExpbmUp
CiAgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21tYW5kKTsK
IAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0soY3JlYXRlVGVzdFVS
TChjb21tYW5kLnBhdGhPclVSTC5jX3N0cigpKSk7Ci0gICAgbV9jdXJyZW50SW52b2NhdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsK
KyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gbWFrZVVuaXF1ZTxUZXN0SW52b2NhdGlvbj4od2tV
UkwuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8
fCBtX3Nob3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50SW52b2Nh
dGlvbi0+c2V0SXNQaXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CkBAIC0yOTYw
LDcgKzI5NjAsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5UZXN0KGNv
bnN0IFRlc3RJbnZvY2F0aW9uJikKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVh
dGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKKyAgICBtX21haW5X
ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlv
bnMpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0
ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDEwNzNhYjE1MWEwZTM1NDlh
NDEyYTVkMjVmNTRmN2IxYjRlOWRjYjguLjA5MTA4YjBlNTIyNDQzYTY3NWI1MTE0ZjQyOGM3OWFh
MTBkMjgzZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBA
IC0xNjY5LDcgKzE2NjksNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQo
V0tTdHJpbmdSZWYgc2NyaXB0LCB1bnNpZ25lZCBzY3JpcHRDYWxsYmFjawogICAgIG1fcGVuZGlu
Z1VJU2NyaXB0SW52b2NhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0
Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVJ
U2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VV
bmlxdWU8VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAgICAgCiAgICAgbV9VSVNjcmlwdENvbnRl
eHQtPnJ1blVJU2NyaXB0KHRvV1RGU3RyaW5nKHNjcmlwdCksIHNjcmlwdENhbGxiYWNrSUQpOwog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDc4ODBkZDhkZjU1
MmZjOWQ4MmI5NGQxZDJmMmRkZmQ2ZGY4MmVjMmIuLjg1YjFiMDIwNmViODkyMjZlODZjNmI0MWFi
OTNlNWRiOTVlYmZkOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgK
QEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0SW52b2NhdGlv
biBmaW5hbCA6IHB1YmxpYyBVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGVzdEludm9jYXRpb24p
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFRlc3RJbnZvY2F0aW9uKFdLVVJMUmVmLCBjb25zdCBU
ZXN0T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDBmYmY4ZWE1MjNkMzQ4ZDI1NmVjYzUyMzA0MmRlYTAy
ZmVjZGQxZGMuLjBlYmY3YmZkMDAzOWY0ZWY4MDkzMmMxZWI1MTkyZmY1NGVlM2M0YTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2Eu
bW0KQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0
ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAgICAgICBb
Y29waWVkQ29uZmlndXJhdGlvbiBfc2V0QXBwbGljYXRpb25NYW5pZmVzdDpbX1dLQXBwbGljYXRp
b25NYW5pZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046dGV4dCBtYW5pZmVzdFVSTDpu
aWwgZG9jdW1lbnRVUkw6bmlsXV07CiAgICAgfQogCi0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBv
cHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+
KGNvcGllZENvbmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwogICAgIGZpbmlzaENyZWF0aW5n
UGxhdGZvcm1XZWJWaWV3KG1fbWFpbldlYlZpZXcuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYg
KG9wdGlvbnMucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSkKQEAgLTIyNiw3ICsy
MjYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKE5TU3Ry
aW5nICppZGVudGlmaWVyKQogewogICAgIG1fb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRpZmllciA9
IGlkZW50aWZpZXI7CiAgICAgaWYgKCFtX2NhbGVuZGFyU3dpenpsZXIpCi0gICAgICAgIG1fY2Fs
ZW5kYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05T
Q2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsKKyAgICAgICAgbV9jYWxlbmRhclN3aXp6bGVy
ID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNDYWxlbmRhciBjbGFzc10sIEBz
ZWxlY3RvcihjdXJyZW50Q2FsZW5kYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRD
YWxlbmRhcikpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldENvbnRlbnRFeHRlbnNp
b25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVy
UHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94
eUd0ay5jcHAKaW5kZXggZGU1NzhmNzNmYzM2ZWNkMTU4OWM5OWY4ZGJmOGZjY2MzOTg3YjQyZS4u
ZWY5ZTM4ZTcyM2JhYTk1ZGZmZTcwZWM1YTg3NWNmZWM4NGUzMjg3NyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTI3MSw3
ICsyNzEsNyBAQCBpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwg
dW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2RpZmllcgogICAgICAgICByZXR1cm4gR0RLX0tF
WV9GMTI7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShrZXlSZWYpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxj
aGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBXS1N0cmluZ0dldFVURjhD
U3RyaW5nKGtleVJlZiwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBjaGFyIGNoYXJD
b2RlID0gYnVmZmVyLmdldCgpWzBdOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IDZhNjFkZjhlMzVkNmZhMDhjOGIxNGM1MWE4MjNj
NjJkMDgwNWQ0ZDIuLmYzYzQxN2M3ZmI3Y2FhNGRlNDc3N2M3YTQ5NGY1M2FmMzJhMThiZmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBA
IC0xNTEsOCArMTUxLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRl
VG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKIAogICAgIG1fcHJlc2Vu
dFBvcG92ZXJTd2l6emxlcnMuY2xlYXIoKTsKICAgICBpZiAoIW9wdGlvbnMuc2hvdWxkUHJlc2Vu
dFBvcG92ZXJzKSB7Ci0gICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIg
Y2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRp
b246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVy
T3JQb3BvdmVyKSkpOwotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9s
bGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1p
dHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CisgICAgICAgIG1fcHJlc2Vu
dFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxl
cj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9s
bGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
UHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQb3Bv
dmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtV
SVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJl
Y3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJl
dF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CiAg
ICAgfQogICAgIAogICAgIEJPT0wgc2hvdWxkUmVzdG9yZUZpcnN0UmVzcG9uZGVyID0gTk87CkBA
IC0yNjksOSArMjY5LDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1v
ZGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogICAgIGF1dG8gY29udHJv
bGxlckNsYXNzID0gVUlLZXlib2FyZElucHV0TW9kZUNvbnRyb2xsZXIuY2xhc3M7CiAgICAgbV9p
bnB1dE1vZGVTd2l6emxlcnMucmVzZXJ2ZUNhcGFjaXR5KDMpOwotICAgIG1faW5wdXRNb2RlU3dp
enpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dp
enpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1
dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VN
ZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9k
ZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0
TW9kZSkpKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxl
Y3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3Rp
dmVJbnB1dE1vZGVzKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVu
ZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNl
bGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1
cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBw
ZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBA
c2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVy
cy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250
cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkpOwogICAgIFtVSUtleWJvYXJkSW1wbC5z
aGFyZWRJbnN0YW5jZSBwcmVwYXJlS2V5Ym9hcmRJbnB1dE1vZGVGcm9tUHJlZmVyZW5jZXM6bmls
XTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5k
ZXJQcm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHku
bW0KaW5kZXggZDFjZmM2YTMzMjFlMDI5YzhiYTgxMTVmNGE2ZDkyMDdmOGU3MTg0Zi4uODljZTRl
ZjEyNmMxNWQ5MmRjZjc2NjUwY2U2ZWVmNWI4OTIzMTcyZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9p
ZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWUKIAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RD
b250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBs
b2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBl
dmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NN
ZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0
dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0
dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0g
bWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3Rv
cihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
OmV2ZW50XTsKICAgICAgICAgW3RhcmdldFZpZXcgbW91c2VEb3duOmV2ZW50XTsKICAgICAgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIEV2
ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycwogICAgICAgICB0YXJnZXRWaWV3ID0gbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAKICAgICBBU1NFUlQodGFyZ2V0Vmlldyk7
Ci0gICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJl
c3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9ucykpOworICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dp
enpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwg
QHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dp
enpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKICAgICBbTlNBcHAgX3NldEN1cnJlbnRF
dmVudDpldmVudF07CiAgICAgW3RhcmdldFZpZXcgbW91c2VVcDpldmVudF07CiAgICAgW05TQXBw
IF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEV2ZW50U2Vu
ZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICAvLyBBbHdheXMg
dGFyZ2V0IGRyYWdzIGF0IHRoZSBXS1dlYlZpZXcgdG8gYWxsb3cgZm9yIGRyYWctc2Nyb2xsaW5n
IG91dHNpZGUgdGhlIHZpZXcuCiAgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gaXNEcmFnID8gbV90
ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgOiBbbV90ZXN0Q29u
dHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDp3aW5kb3dMb2Nh
dGlvbl07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNzZWRN
b3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxl
cj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAg
ICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxD
bGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91
c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91
c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAg
ICAgICAgaWYgKGlzRHJhZykKICAgICAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRHJhZ2dlZDpl
dmVudF07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRl
clByb3h5V1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJv
eHlXUEUuY3BwCmluZGV4IDQ2OWJmYWYwZThjZjI5MDczMGJhYmZhMDc4MzZkODc3ZWM3MGU4ZjUu
LjY5NmY0NTU3NTg5NmZlODI2NjQ4N2QwOThlOGZlOGVlNjFlNTRkNTYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCkBAIC0yNzks
NyArMjc5LDcgQEAgc3RhdGljIHVpbnQzMl90IHdwZUtleVN5bUZvcktleVJlZihXS1N0cmluZ1Jl
ZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1aW50MzIKICAgICAgICAgcmV0dXJuIFdQRV9L
RVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4
Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4
Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFy
Q29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376151</attachid>
            <date>2019-08-13 01:57:18 -0700</date>
            <delta_ts>2019-08-13 02:19:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190813015716.patch</filename>
            <type>text/plain</type>
            <size>1726819</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDkyMDFmZjM5Y2JiMDFhNDJhYWQ1MTg2YzRkZWIxMDgzYWZiOWZhLi42NDFhZDIzY2U3MzZiZDFi
Mzk0ZmQzMGEzYTZjMDFhNjNhNGZjY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgbXVs
dGlwYXJhbWV0ZXIgb3ZlcmxvYWRzIG9mIGFwcGVuZCgpIGluIFN0cmluZ0J1aWxkZXIgYXMgYSBm
aXJzdCBzdGVwIHRvd2FyZCBzdGFuZGFyZGl6aW5naW5nIG9uIHRoZSBmbGV4aWJsZUFwcGVuZCgp
IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZmUzNjczMjEwMThkZDVhMWQ0N2Y1NWMxYTcxZjBhODJm
OGM1NzIuLjBjMDY1NzVlZDQ2ZTFiN2Y5MDU4YzQ3M2U5MTZlMjU5NjdlZDAwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAgICAgICogYmVu
Y2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFZlY3Rv
ci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAgICAgICAqIHd0
Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9u
Lmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICog
d3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9T
dHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAg
ICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3Ip
OgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29t
PgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdl
YWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUwZWJmYzEwNDczZDliY2U5NzM0ODNkMmY4M2Zi
OTEyMGFmZjY5OC4uMWVjYWZhYjc1YWFiNWVjZTU5ZDczYTc1NTA0NGQyYjM3MTRhZTc2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4MjUgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcpOgorICAgICAgICAqIE1vZHVsZXMv
YmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JC
ZWFjb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUNETTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lz
dGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y2xpZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6c2V0Q2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9s
b2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJl
Y29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5k
ZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVP
cGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRl
U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9w
ZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFu
c2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2
ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURC
VHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFu
YWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2
ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tl
bmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
OjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRl
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJl
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rh
c2s6OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVj
b2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2Rp
bmdUYXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
YW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNl
dEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBh
bm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2Fn
ZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVG
cm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5k
VmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVh
dGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50
cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29t
cHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFt
ZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlBhcnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJ
bml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRl
cyk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRo
b2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFt
ZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0Ns
YXNzOjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29t
YmluZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1
bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRz
Ojpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAg
KiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9E
T01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNl
dEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAg
ICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNl
dDo6YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNj
YWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgor
ICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6Cisg
ICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJJbXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6
OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNv
bnN1bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZVN1cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1l
S2V5ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRv
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvRWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
U2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hh
cGVQYXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2Up
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhP
YmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0
ZXJDU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvbVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRF
dmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAg
ICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAg
KiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRv
bS9NaWNyb3Rhc2tzLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdyk6Cisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFn
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNl
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURh
dGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNl
bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kQ3Jl
YXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhU
TUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHls
ZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAg
KiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25G
aWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxl
U3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6
CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjptYXBN
b3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRU
b1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAg
ICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVx
dWVzdFRvSGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0
VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpp
bnNlcnRBZGphY2VudEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNl
V2hvbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNo
U3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJs
ZVN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEluc3BlY3RlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9y
eUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0
b3JQYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dl
YkhlYXBBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uTG9nKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBs
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0
ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25E
aXNhYmxlci5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNj
aGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5l
Y3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRl
eHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpp
bml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJs
YXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9u
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAgICAg
ICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0
aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdl
L1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0
ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJzUHJv
cGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBwYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUp
OgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVu
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNaXhlZFR5cGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJlck9m
Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNo
YW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bGVu
Z3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bXV0
YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpkYXRh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVybyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50Rmxh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2Ft
cGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6
OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGVu
b3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1plcm8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NSKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVm
ZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZl
Y3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNl
RWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0
YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6RHlu
YW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2FpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5l
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJPZkF6
aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNl
UmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkVGltZUZyYW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2
ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5w
dXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6
d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6CisgICAgICAgIChXZWJDb3JlOjpaZXJv
UG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJl
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRQb2xlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYVBsYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNo
YXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lvbjo6Y29weVNoYXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lv
bjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpu
b3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3Vy
Y2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0
QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
Um90YXRpb25TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVr
YWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1l
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVj
dG9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNv
bW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNo
YXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlRpbGVkQmFja2luZ0xheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBj
cmVhdGVUaWxlQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6
UGxhdGZvcm1DQUxheWVyV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnN3YXBC
dWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZv
bnRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90
YXRpb25Qcm9wZXJ0aWVzOjppc0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3Bl
cnRpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpyb3RhdGVkU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YubW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3Bp
ZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXll
cjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNl
UHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1
bmNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6
OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1
ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3Vl
OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRlQ29tbWFuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6OnNldFNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
bkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldL
Q0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6
OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2Fj
aGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1f
Y2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1
cmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVh
dGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRvWVVWKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlh
RW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0ZURlY29kZVRhc2spOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxDYWNoZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
X3Jlc3RhcnRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJjaENvb2tpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4
dDo6Q3VybENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6d2lsbFNldHVw
U3NsQ3R4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0
aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNS
ZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVudDo6
cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
ZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAgICAg
KiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6
OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NEYXRh
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxl
eExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRp
bmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
bG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0
RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0ZUJh
c2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2Vk
VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjphZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0SW50b1RyYWNr
ZWRSZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25lZERlc2NlbmRhbnRz
TWFwOjphZGREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWdp
blVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZUJsb2NrUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExp
bmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxv
YXRpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJl
TGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxp
emVSYXJlQmxvY2tGbG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJh
Z21lbnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFn
bWVudE1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5
VHJhY2tzRm9yQXV0b1JlcGVhdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGlu
ZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVBbmNlc3RvckNsaXBwaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OlJlbmRlckxheWVyQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdl
UXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWlu
dFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVj
dEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFw
cGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRv
U2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50
ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJh
c3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2lj
U2hhcGVQYXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93
U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5k
ZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0
ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21S
ZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXpl
TWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0
ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdl
Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OkludmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRp
b25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAg
ICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NW
R1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6
Y29weSBjb25zdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5UGFpckFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQ
cmltaXRpdmUuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFu
aW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlM
aXN0QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJG
cm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9j
a1NwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQ
cmludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RN
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAg
ICAqIHRlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lN
b2NrQ0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0u
aDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2Ft
ZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVu
cXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrQW5kVGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrRm9yTW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtl
clRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25E
YXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICog
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGll
bnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OmV2YWx1YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5k
aW5nQ2FsbGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xMiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBGcmFtZUxvYWRlcjo6b3BlbiBj
YW4gZXhlY3V0ZSBzY3JpdHBzIHZpYSBzdHlsZSByZWNhbGMgaW4gRnJhbWU6OnNldERvY3VtZW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCAwZTFiZmU3MzU0MTQyNGMwZDE5ZGI5MThjNDUyZmUwNWY5
ZTY3NWFmLi4xMjgxZDMyNTgzNjcyMDRlMTJkNjI3NWZmZTE5OWU1M2JlYzg2YjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3
aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2Vz
dE9wZW5TU0wuY3BwOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3RDb250ZXh0SW1wbDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChQ
QUw6OkNsb2NrOjpjcmVhdGUpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW06
CisgICAgICAgIChDbG9jazo6Y3JlYXRlKToKKwogMjAxOS0wOC0wOSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBUYXBwaW5nIGJ1dHRvbnMgaW4gRGF0
YSBEZXRlY3RvcnMgbG9va3VwIHByZXZpZXdzIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRl
eCAzNThmMmJmMDA1YWU2NDRkODEyMzI4ZDVkZWRlNDE5YzhiYTAxY2ZiLi5hM2YyYjc2NjhjNWJj
MmNlY2QyY2Y1NjI4ZGY1NWM3M2RkMTQzMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2Vy
dmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6CisgICAgICAgICogZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3Nlcik6Cisg
ICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisK
IDIwMTktMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04ocjI0NTU2Nyk6IFtHVEtdW1dQRV0gWzIuMjUuMV0gV2ViS2l0
V2ViRHJpdmVyIGdldHMgaW5zdGFsbGVkIGFzIFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2YTRhODE3
ZjA5YjI0YmQ4YjcyNDkxMzhmY2M5Yjc0N2YxMDU1OGQyLi44MjFmMzgxOGNlYzUzZGYxZDhiZWNj
YjcwYTc2NzgzMzZhODUzYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyMSBAQAorMjAxOS0wOC0x
MyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFk
ZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
OjpzdGFydE1vbml0b3JpbmdEaXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGlj
cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMv
V2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3Vw
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9h
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYXA6OmFkZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBl
bmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24p
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFk
ZENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3
b3JrRGF0YVRhc2tCbG9iKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6
ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6
Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0
V2l0aFByZWZsaWdodCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29u
dGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNl
c3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVz
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFn
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRD
aGFubmVsOjpjcmVhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRh
YmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6Q2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlRW50cnkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlUmVkaXJlY3RFbnRyeSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdpc3RlclN1YnJlc291cmNlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdl
cjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5bmNocm9uaXplKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFkUmVjb3JkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2ZUZyb21NZW1vcnkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hD
YWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNy
ZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3
b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRU
YXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRT
dG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9y
aXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6
ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRl
RGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNz
aW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgICh3ZWJraXRTb3Vw
UmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQ
cm92aWRlcjo6TmV0d29ya1JUQ1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JU
Q1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJv
dmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVl
TWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0
ZVN5bmNNZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUlu
Y29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlz
cGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNz
YWdlQXN5bmMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldh
dGNoZG9nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6
OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2
ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRl
cm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlUGx1Z2luSW50ZXJuYWwpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAg
ICAgIChBUEk6OlVSTDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6VVJMOjpwYXJzZVVSTElmTmVj
ZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdElu
dm9jYXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFn
ZTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFn
ZVByb3h5Ol0pOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9j
YXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAod2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKToK
KyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAgICAgICAod2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24pOgorICAgICAgICAod2Via2l0X2Nv
bnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbik6CisgICAgICAgICh3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uX3dpdGhfbGFiZWwpOgorICAg
ICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUpOgorICAgICAg
ICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3IpOgorICAgICAgICAqIFNo
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFNo
YXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXlt
ZW50VUkpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmg6CisgICAgICAg
ICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6dGV4bWFwTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RMYXllcik6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21w
b3NpdG9yKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TlBSZW1vdGVPYmplY3RNYXA6OnJlZ2lzdGVyTlBPYmplY3QpOgorICAg
ICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAg
ICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBD
YWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6
CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElI
VFRQQ29va2llU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OnJlZ2lz
dGVyT2JzZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldEluamVj
dGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQpOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9u
TWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3Zp
ZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgIChXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW06CisgICAg
ICAgICgtW1dLT2JzZXJ2YWJsZVBhZ2VTdGF0ZSBpbml0V2l0aFBhZ2U6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2V0Vmlld0Ns
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfaW5p
dFdpdGhQYWdlUmVmOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29v
a2llU3RvcmUubW06CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JlIGFkZE9ic2VydmVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAg
ICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0RG93bmxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1b
V0tQcm9jZXNzUG9vbCBfc2V0QXV0b21hdGlvbkRlbGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dL
VXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6XSk6Cisg
ICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxl
cjpuYW1lOnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmRO
YXZpZ2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0SW5wdXREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNz
aW9uLm1tOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBzZXREZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlciBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWR5U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAo
d2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaENv
bnRleHRNZW51Q2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaERvd25sb2Fk
Q2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgICh3ZWJraXRGaW5kQ29udHJvbGxlckNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hGb3Jt
Q2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50
LmNwcDoKKyAgICAgICAgKGF0dGFjaEljb25Mb2FkaW5nQ2xpZW50VG9WaWV3KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAg
ICAgICAoYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAg
ICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcik6CisgICAgICAgICh3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxl
cl9pbl93b3JsZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAg
KHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdB
cmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nl
ci5jcHA6CisgICAgICAgICh3ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2ppU2VjdGlvbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkluc3BlY3RvckNyZWF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0Fu
ZERyb3BIYW5kbGVyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQ
cm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06CisgICAgICAg
ICgtW1dLVmlldyBtYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAgICAoLVtX
S1ZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvd3BlL1dQRVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6OlZpZXc6OlZpZXcpOgorICAg
ICAgICAoV0tXUEU6OlZpZXc6OnNldENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvcXQvV1BFUXRWaWV3LmNwcDoKKyAgICAgICAgKFdQRVF0Vmlldzo6bm90aWZ5TG9hZENoYW5n
ZWRDYWxsYmFjayk6CisgICAgICAgIChXUEVRdFZpZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFj
ayk6CisgICAgICAgIChXUEVRdFZpZXc6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwOgorICAgICAgICAoV1BFUXRWaWV3
QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW06CisgICAgICAgIChX
ZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
VUlEZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VX
aXRoQ29uc3RyYWludHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5
TGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVk
bHlVbnN1c3BlbmRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRUZXh0SW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2
aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlN
YXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5l
Y3RlZEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRm
b3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cGx1Z2luUmVxdWlyZXNHdGsyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RU
b1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmluaXRpYWxp
emVEZWJ1Z0luZGljYXRvcik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVI
b3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVOb2RlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2Rl
OjpjcmVhdGVXaXRoUGxhaW5MYXllcik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0Ojpt
YWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRDcmFz
aENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvcm1DbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjptYXli
ZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjph
ZGRQcm9jZXNzSWZQb3NzaWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFBy
ZXdhcm1JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRX
ZWJQcm9jZXNzSGFzVXBsb2Fkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5n
U3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFj
a2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tS
ZXF1aXJlbWVudHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVj
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tOgorICAgICAgICAo
V2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW06
CisgICAgICAgICgtW1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldyBkaWRNb3ZlVG9XaW5k
b3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNv
bmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpw
cm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
c2V0dXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGJlY29tZUZpcnN0
UmVzcG9uZGVyRm9yV2ViVmlld10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50
RGlkRm9jdXM6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clByZXZpb3VzTm9kZTphY3Rpdml0eVN0YXRl
Q2hhbmdlczp1c2VyT2JqZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0
aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQ
YWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
IGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGlu
aXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmluZFVJOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAg
ICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy93
aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRDb25uZWN0ZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
OgorICAgICAgICAoV0tCdW5kbGVTZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZVNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEVkaXRvckNs
aWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdL
QnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0
UmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlT3ZlcmxheUNyZWF0ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVy
TWFjLm1tOgorICAgICAgICAoV0tCdW5kbGVQYWdlQmFubmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RP
TU9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0T3JDcmVhdGVET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4
dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLaXRFeHRlbnNpb25NYW5h
Z2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFZGl0b3JDcmVh
dGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdl
LmNwcDoKKyAgICAgICAgKHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUpOgorICAgICAgICAod2Via2l0
V2ViUGFnZUNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBp
bml0V2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0Rm9y
bURlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGU6OnNldENsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGlu
Z01lc3NhZ2U6OlBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hh
bm5lbDo6c2VuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENSZXNvbHZlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Nv
Y2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZlclRjcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVVkcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6
OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZUNsaWVudFRjcFNvY2tldCk6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZU5ld0Nvbm5lY3Rpb25Tb2Nr
ZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVBc3lu
Y1Jlc29sdmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkRlc3RydWN0
aW9uUHJvdGVjdG9yOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0
YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojpj
cmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJp
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVy
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRG
aWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFw
ZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6UGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdGV4dEF1dG9TaXpp
bmdBZGp1c3RtZW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luUHJpbnRp
bmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxi
YWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om1hcmtB
bGxMYXllcnNWb2xhdGlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUF1
dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpsaWJX
ZWJSVENOZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6
OlNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKToKKwog
MjAxOS0wOC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBiYWQgUkVMRUFTRV9MT0dfRVJST1IgdW5kZXIgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zp
c2lvbmFsUGFnZVByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNGM1MWU5NjVmNjgyNmJl
YzNlZTkyZTc1Mjk1ODdlMWIxYjJkMDQzYS4uODJiNjAzMWIxYjliNDY5YmFhOTBiNGFkYTg4YzEz
NzA0YzU0MjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0w
OC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZd
IEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9T
dG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5h
Z2VyOjpTdG9yYWdlU3luY01hbmFnZXIpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgorICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6
U3RvcmFnZVRyYWNrZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcC5jcHA6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjplbnN1cmVTZXNzaW9uKToKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2NmL0NoYW5nZUxvZwppbmRleCBjNjNlZmFiYTVkODg2ODNiZWZiZjE2OTU4ZmYxZmUwMDA0
ZWE5YzZiLi41ZGVkMjM2NmIzYWVlMTFjODMzYTg2NzlhYjhmNTgxOGJhYWE3ZjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTEzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZy
b250ZW5kU2V0dGluZ3MpOgorCiAyMDE5LTA4LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNDg0NTQpOiBX
SzEgaW5zcGVjdG9yIGZyb250ZW5kIGNsaWVudCBkb2Vzbid0IHF1ZXVlIG1lc3NhZ2VzIHRvIHRo
ZSBmcm9udGVuZCBiZWZvcmUgaXQncyBsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpp
bmRleCA4NWJmZTdmZTdhYTRjM2Y3ZmNiYjJkNzI4ZGI1ZGVhN2FkYWJhOGZmLi4yMjNjOWYwNmRj
MzBlZGUxMDIxNTE4NDkzNGViZGYxMjU5YWIzNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAg
ICAgICAoLVtXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5
ZXJzOnN0aWNreUNvbnRhaW5lck1hcDpdKToKKwogMjAxOS0wNy0yOSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJdIGRpZEZp
bmlzaENvbnRlbnRDaGFuZ2VPYnNlcnZpbmcgc2hvdWxkIGluY2x1ZGUgdGhlIHR5cGUgb2YgY29u
dGVudCBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjg1NTM1NjYyODgx
ZTcxMjc4NzY5ZTQxNmI0OWU5ODFmYTk1N2YyYi4uNGZlOTcxYzllZDQxYmJiNjA3N2M1ZmM4NmU5
ZTc1OGY1NWQzNjk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGlu
aXRdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoLVtX
ZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpdKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAg
KFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhblJl
cGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuQW5kRGF0YVJlcGx5KToKKyAgICAgICAgKFdLUENJ
bnN0YW50aWF0ZVBsdWdpblJlcGx5KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZCk6
CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgorICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAg
KC1bV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdpbl0pOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW06CisgICAgICAgIChXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaDoKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3
IHNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6cmVwZWF0OnRpbWVyRnVuYzpdKToKKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlm
eU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoYWRkUmVkaXJl
Y3RVUkwpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFU
b0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0YWNoU2NyaXB0RGVidWdnZXJdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaDoKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06CisgICAgICAgIChX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgaW5pdFdpdGhS
YW5nZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHRdKToKKyAgICAgICAgKC1bV2ViVmlldyBfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKCtb
V2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6
YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgrW1dl
YlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlz
dDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRp
Y2F0b3I6d2l0aExpZmV0aW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06
CisgICAgICAgIChXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hT
Y2hlZHVsZXIpOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisKIDIwMTktMDgt
MTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGhyZWFk
aW5nIGFzc2VydGlvbnMgdG8gUmVmQ291bnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGY1MWUwNDQyZTU2YmY3MjNhMDFiMzBkZTg4ZmJjODE1ODMxODQ0MDkuLjJlYmE2MTM5MDA3
ZTIxMzYyMWVhMTAyNDIzNWYzYTIzMDcxZTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToK
KyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6bG9hZCk6CisgICAgICAgICog
UGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OnduZFByb2MpOgorICAgICAgICAqIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNo
cm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5Mb2NhbEZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxp
Z2h0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZy5jcHA6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQ
cm9wZXJ0eUJhZyk6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAgICAgICAoV2Vi
SGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwOgorICAgICAgICAo
V0tRQ0E6OkNBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dCk6Cisg
ICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYk5vdGlmaWNh
dGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKToKKyAgICAgICAgKiBXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViVmll
dzo6cmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlwZSk6CisgICAgICAgIChXZWJWaWV3OjplbnRl
clZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJWaWV3OjphZGRV
c2VyU2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRv
R3JvdXApOgorICAgICAgICAoV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyk6CisK
IDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBJREItc3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCAzZjBmYjJlMWNlZWFlZjA2
NTljMzRjODI3MWJlZWMxMDgyMzc1NmVkLi4wZDU1ZmU3ZTFiYjY1MWU5ODEwY2M4YjIzOTgxODdm
NjdlOTk3ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTMgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcC5oOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcElubGluZXMuaDoKKwogMjAxOS0wNy0yNCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBBZGQgSXNv
SGVhcCB0ZXN0IHRvIGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0aW5n
IHRvbyBsYXJnZSBWQQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuaAppbmRleCAwN2Q3MDliYTEyYzgyYzg1NDgyZDczYzcyMzc3ZjUxOWU3ZmMyYTVjLi5kMGU2
MjUyODJhODRmNGYzNWVlZGVkMTk1ZWRiOGRjODk3YjFhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3Qg
SlNDYWxsYmFja09iamVjdERhdGEgewogICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KFZNJiB2
bSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFtX3ByaXZhdGVQcm9wZXJ0aWVzKQotICAgICAg
ICAgICAgbV9wcml2YXRlUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNQcml2YXRlUHJv
cGVydHlNYXA+KCk7CisgICAgICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1
ZTxKU1ByaXZhdGVQcm9wZXJ0eU1hcD4oKTsKICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcy0+
c2V0UHJpdmF0ZVByb3BlcnR5KHZtLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAppbmRleCBhZTNhNmZlM2FjZjljNmE4MDM5NGUxZDczNGZhMzE3ZDkw
OGZhZTJjLi45Y2EzYjRiZjQwODUwNzUwYjhiYzQxOTQ5Zjc1MDQyYjM1NzIzMWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaApAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmFzQ2FsbGJhY2tPYmplY3QoRW5jbwogdGVtcGxhdGUg
PGNsYXNzIFBhcmVudD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xh
c3MsIHZvaWQqIGRhdGEpCiAgICAgOiBQYXJlbnQoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQotICAg
ICwgbV9jYWxsYmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0
RGF0YT4oZGF0YSwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtlVW5p
cXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0NsYXNzKSkKIHsKIH0KIApAQCAtNjcs
NyArNjcsNyBAQCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChWTSYgdm0sIEpT
Q2xhc3NSZWYganNDbGFzcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBQYXJlbnQodm0s
IHN0cnVjdHVyZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8
SlNDYWxsYmFja09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFj
a09iamVjdERhdGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4obnVsbHB0ciwganND
bGFzcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
bGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCmlu
ZGV4IGYxYzlkNTcwMmE4YWE2OTA0NGRmYjI5NWI0NzFmY2ZjYmM4OTBiNmIuLjdlZWMyYTkwYTQ0
Zjg2MGJhYTIyNzZiOTZkNDVmMmJkNjg2MTcwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NsYXNzUmVmLmNwcApAQCAtNTksMjEgKzU5LDIxIEBAIE9wYXF1ZUpTQ2xhc3M6Ok9wYXF1
ZUpTQ2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpTQ2xh
c3MqCiAgICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGlj
VmFsdWUqIHN0YXRpY1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGljVmFsdWVzKSB7Ci0gICAgICAg
IG1fc3RhdGljVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFs
dWVzVGFibGU+KCk7CisgICAgICAgIG1fc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVK
U0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNWYWx1ZS0+
bmFtZSkgewogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgo
c3RhdGljVmFsdWUtPm5hbWUpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZU5hbWUuaXNOdWxsKCkp
Ci0gICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0
eSwgc3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFs
dWVOYW1lKSk7CisgICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUu
aW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9w
ZXJ0eSwgc3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywg
dmFsdWVOYW1lKSk7CiAgICAgICAgICAgICArK3N0YXRpY1ZhbHVlOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9uID0gZGVm
aW5pdGlvbi0+c3RhdGljRnVuY3Rpb25zKSB7Ci0gICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0g
c3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7Cisg
ICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGlj
RnVuY3Rpb25zVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNGdW5jdGlvbi0+bmFtZSkg
ewogICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3Rh
dGljRnVuY3Rpb24tPm5hbWUpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUu
aW1wbCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0
aW9uLT5jYWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKKyAgICAg
ICAgICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIG1h
a2VVbmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0
aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOwogICAgICAgICAgICAgKytzdGF0aWNG
dW5jdGlvbjsKICAgICAgICAgfQogICAgIH0KQEAgLTEyOCwyMSArMTI4LDIxIEBAIE9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6Vk0mLCBPcGFx
dWVKU0NsYXNzKiBqc0NsCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xh
c3MtPm1fc3RhdGljVmFsdWVzKSB7Ci0gICAgICAgIHN0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBzdGF0aWNW
YWx1ZXMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKICAg
ICAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlND
bGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3Rh
dGljVmFsdWVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFTU0VS
VCghaXQtPmtleS0+aXNBdG9tKCkpOwogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IGl0
LT5rZXktPmlzb2xhdGVkQ29weSgpOwotICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFs
dWVOYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFs
dWUtPmdldFByb3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJp
YnV0ZXMsIHZhbHVlTmFtZSkpOworICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVO
YW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFBy
b3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZh
bHVlTmFtZSkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGlj
RnVuY3Rpb25zKSB7Ci0gICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAgICAgICBzdGF0aWNGdW5j
dGlvbnMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsK
ICAgICAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgIGZvciAo
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpz
Q2xhc3MtPm1fc3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAg
ICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwotICAgICAgICAgICAgc3RhdGlj
RnVuY3Rpb25zLT5hZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIHN0ZDo6bWFrZV91bmlxdWU8
U3RhdGljRnVuY3Rpb25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVl
LT5hdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChpdC0+a2V5
LT5pc29sYXRlZENvcHkoKSwgbWFrZVVuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihpdC0+dmFs
dWUtPmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQog
ICAgIH0KIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIE9w
YXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9wYXF1ZUpTQ2xhc3NEYXRhKCkuYWRkKHRoaXMsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICBjb250
ZXh0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPihleGVj
LT52bSgpLCB0aGlzKTsKKyAgICAgICAgY29udGV4dERhdGEgPSBtYWtlVW5pcXVlPE9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CiAgICAgcmV0dXJuICpjb250ZXh0
RGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFy
a2luZ0NvbnN0cmFpbnRQcml2YXRlLmNwcAppbmRleCBkOWVlNjc0MDM0OWNmZWZkZmJjYzBkMzEw
OTRmMWY0ZGU1YTUyYzFlLi5iYTRhNWExNjY5N2FmNWY4YTk3MjJlNTc0NjllMzk0ZDk3OTA0MmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFp
bnRQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0Nv
bnN0cmFpbnRQcml2YXRlLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEpTQ29udGV4dEdyb3Vw
QWRkTWFya2luZ0NvbnN0cmFpbnQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTTWFya2luZ0Nv
bnN0cgogICAgIC8vIGVsc2UgZ2V0cyBtYXJrZWQuCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkg
dm9sYXRpbGl0eSA9IENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmc7CiAgICAg
Ci0gICAgYXV0byBjb25zdHJhaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29u
c3RyYWludD4oCisgICAgYXV0byBjb25zdHJhaW50ID0gbWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5n
Q29uc3RyYWludD4oCiAgICAgICAgIHRvQ1N0cmluZygiQW1jIiwgY29uc3RyYWludEluZGV4LCAi
KCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2spKSwg
IikiKSwKICAgICAgICAgdG9DU3RyaW5nKCJBUEkgTWFya2luZyBDb25zdHJhaW50ICMiLCBjb25z
dHJhaW50SW5kZXgsICIgKCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJh
aW50Q2FsbGJhY2spKSwgIiwgIiwgUmF3UG9pbnRlcih1c2VyRGF0YSksICIpIiksCiAgICAgICAg
IFtjb25zdHJhaW50Q2FsbGJhY2ssIHVzZXJEYXRhXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV3JhcHBlck1hcC5tbQppbmRleCBkNDY5Yjc1YTMxZjBlZmNhOWQwN2FiYjAzYjBiZTY2MTYx
YjM5NTY3Li40YjU5OTA3M2ZlNzZiNDg2NDQzNjk5YWJkY2IzNGM0MTY0YmMyZTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpAQCAtNjA2LDcgKzYwNiw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4
dFJlZiljb250ZXh0CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0
UGVyc29uYWxpdHk7CiAgICAgbV9jYWNoZWRPYmpDV3JhcHBlcnMgPSBbW05TTWFwVGFibGUgYWxs
b2NdIGluaXRXaXRoS2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlv
bnMgY2FwYWNpdHk6MF07CiAKLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+
Pih0b0pTKGNvbnRleHQpLT52bSgpKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBtYWtlVW5p
cXVlPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+
Pih0b0pTKGNvbnRleHQpLT52bSgpKTsKIAogICAgIEFTU0VSVCghdG9KU0dsb2JhbE9iamVjdChj
b250ZXh0KS0+d3JhcHBlck1hcCgpKTsKICAgICB0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5z
ZXRXcmFwcGVyTWFwKHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2Jq
Q0NhbGxiYWNrRnVuY3Rpb24ubW0KaW5kZXggZWU5MzI4MjFlZjc0YmQ2ODkxYWU4ZjI5ZmFkN2Ji
YTVhZmVhMGNiYy4uNzNjYjQyNzA0MzgxODMxZTgxOWQ5ZDk0M2ViOWU1NDQwMzA5NmY4YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1t
CkBAIC0xOTUsMTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBl
RG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
QXJndW1lbnREb3VibGU8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNr
QXJndW1lbnREb3VibGU8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUJvb2woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tB
cmd1bWVudEJvb2xlYW4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRCb29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lk
KCkKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0
eXBlSWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tB
cmd1bWVudElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50
SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3Qg
Y2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkKQEAgLTIyOCwxOSArMjI4LDE5IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmIChjbHMgPT0gW0pT
VmFsdWUgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudEpTVmFsdWU+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxs
YmFja0FyZ3VtZW50SlNWYWx1ZT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNTdHJpbmcgY2xh
c3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVu
dE5TU3RyaW5nPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1
bWVudE5TU3RyaW5nPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU051bWJlciBjbGFzc10pCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1i
ZXI+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNO
dW1iZXI+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGF0ZSBjbGFzc10pCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKICAg
ICAgICAgaWYgKGNscyA9PSBbTlNBcnJheSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0FycmF5PigpOwogICAgICAgICBpZiAo
Y2xzID09IFtOU0RpY3Rpb25hcnkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CiAKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMp
OwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCbG9jayhjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciopCkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
U3RyaW5nUmFuZ2UgY29weShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAq
aW52b2NhdGlvbiA9IHZhbHVlVG9UeXBlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRp
b24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVu
dFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIH07CkBAIC0zMzUsNDUgKzMzNSw0NSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5
cGVEb3VibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJh
Y2tSZXN1bHROdW1lcmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFj
a1Jlc3VsdE51bWVyaWM8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUJvb2woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tS
ZXN1bHRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3Vs
dEJvb2xlYW4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lk
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJl
c3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBz
dGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlU3RydWN0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25z
dCBjaGFyKiBlbmQpCiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5KGJlZ2luLCBlbmQp
OwogICAgICAgICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdHlwZVRvVmFsdWVJbnZv
Y2F0aW9uRm9yKGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9OwpAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRp
YyBKU09iamVjdFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24oSlNDb250ZXh0
ICpjb250ZXh0LCBOU0ludm9jCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFtjb250
ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAgIGF1dG8gaW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5
cGUsIGluc3RhbmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsK
KyAgICBhdXRvIGltcGwgPSBtYWtlVW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBs
PihpbnZvY2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gaW1wbC0+bmFtZSgpOwog
ICAgIHJldHVybiB0b1JlZihKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbmFtZSwgV1RGTW92ZShpbXBsKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGUwMWU5
NzBjN2Y1ODAzNjU2MThlZjFkYWI4NTU0NGQ3MDRmOWI0N2EuLjc4ZDc2NTVmZjgwNzc2MGQ0NjA4
YTYxN2U1N2M5MGYxNTQyNzk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDQ29udGV4dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBqc2NDb250
ZXh0U2V0VmlydHVhbE1hY2hpbmUoSlNDQ29udGV4dCogY29udGV4dCwgR1JlZlB0cjxKU0NWaXJ0
dWFsTQogICAgICAgICAgICAgcHJpdi0+anNDb250ZXh0ID0gSlNSZXRhaW5QdHI8SlNHbG9iYWxD
b250ZXh0UmVmPihBZG9wdCwgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqc2NWaXJ0dWFs
TWFjaGluZUdldENvbnRleHRHcm91cChwcml2LT52bS5nZXQoKSksIG51bGxwdHIpKTsKICAgICAg
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KU0dsb2JhbE9iamVjdChwcml2LT5qc0NvbnRleHQu
Z2V0KCkpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+d3JhcHBlck1hcCgpKQotICAgICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRXcmFwcGVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpX
cmFwcGVyTWFwPihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+c2V0V3JhcHBlck1hcChtYWtlVW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anND
b250ZXh0LmdldCgpKSk7CiAgICAgICAgIGpzY1ZpcnR1YWxNYWNoaW5lQWRkQ29udGV4dChwcml2
LT52bS5nZXQoKSwgY29udGV4dCk7CiAgICAgfSBlbHNlIGlmIChwcml2LT52bSkgewogICAgICAg
ICBBU1NFUlQocHJpdi0+anNDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcAppbmRleCAxMWJiN2MwYjg3MzdkYjY3ZGQxN2RjZDI0
ZjcwMjk0MzQ0NjlhODAzLi5mNTIzZWE0MTk5ZjhhYmQ3MzJmNzdiNjI4MTQxMjAxMzRiYjhiZWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1h
cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogV3JhcHBlck1hcDo6V3Jh
cHBlck1hcChKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0KQotICAgIDogbV9jYWNoZWRKU1dy
YXBwZXJzKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNP
YmplY3Q+Pih0b0pTKGpzQ29udGV4dCktPnZtKCkpKQorICAgIDogbV9jYWNoZWRKU1dyYXBwZXJz
KG1ha2VVbmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pT
KGpzQ29udGV4dCktPnZtKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Qcm9iZVN0YWNrLmNwcAppbmRleCBhNzVmNThkYzE0NmIzYjY0OTVjZWIxNjdhZGY0
ZGFiZmYwNmIwYzg5Li5kYTQ3NzA1MWYzNDVlMDcxNjhmYzdkMDZlMGM3ZjUyNjMxMTg2ZTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKQEAg
LTEzNCw3ICsxMzQsNyBAQCBQYWdlKiBTdGFjazo6ZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNz
KQogICAgIGlmIChMSUtFTFkoaXQgIT0gbV9wYWdlcy5lbmQoKSkpCiAgICAgICAgIG1fbGFzdEFj
Y2Vzc2VkUGFnZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+
KGJhc2VBZGRyZXNzKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2VzLmFkZChiYXNlQWRk
cmVzcywgV1RGTW92ZShwYWdlKSk7CiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcAppbmRleCAyYzljM2IwZGU4OWViM2UzODNmNGNiZGNmMjEyZDI2OGMx
YzE5ZGJhLi43ZjY4NTg2YzFjMDI4OWMwYTMyNTIyZmRlOWUwNjdkZjFmNDFlMjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTI0MSw3ICsxMjQxLDcg
QEAgY2xhc3MgTG93ZXJUb0FpciB7CiAgICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9IFBy
aW50ZXI6Om1ha2VQcmludFJlY29yZExpc3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0byBw
cmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRT
cGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsK
KyAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lh
bCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50
TGlzdCkpKTsKICAgICAgICAgSW5zdCBpbnN0KEFpcjo6UGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVj
aWFsKHByaW50U3BlY2lhbCkpOwogICAgICAgICBQcmludGVyOjphcHBlbmRBaXJBcmdzKGluc3Qs
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBhcHBlbmQo
V1RGTW92ZShpbnN0KSk7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsK
ICAgICB7CiAgICAgICAgIGlmICghZmllbGQpIHsKICAgICAgICAgICAgIGZpZWxkID0gc3RhdGlj
X2Nhc3Q8VCo+KAotICAgICAgICAgICAgICAgIG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91
bmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpKTsKKyAgICAg
ICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxB
cmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZp
ZWxkOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2Nl
ZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4
IGZmY2IyZDRlMjcxNDQyOTcwZTU0NjQzNjY3MGY3ZjI5ZGViMWFiMWMuLjJlY2NkYWMwNDllNjhk
MTEzZTIzZjk3ZjI0MzUzYTVkNGFhYTNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIFByb2NlZHVyZTo6UHJvY2VkdXJlKCkKICAgICA6IG1fY2ZnKG5ldyBDRkcoKnRoaXMp
KQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKLSAgICAsIG1fYnlwcm9kdWN0cyhz
dGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUJ5cHJvZHVjdHM+KCkpCisgICAgLCBtX2J5cHJvZHVjdHMo
bWFrZVVuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQogICAgICwgbV9jb2RlKG5ldyBBaXI6OkNv
ZGUoKnRoaXMpKQogewogICAgIG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobV9udW1FbnRyeXBv
aW50cyk7CkBAIC0zMTEsMjggKzMxMSwyOCBAQCB2b2lkIFByb2NlZHVyZTo6ZGVsZXRlT3JwaGFu
cygpCiBEb21pbmF0b3JzJiBQcm9jZWR1cmU6OmRvbWluYXRvcnMoKQogewogICAgIGlmICghbV9k
b21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWlu
YXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9kb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxEb21pbmF0
b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2RvbWluYXRvcnM7CiB9CiAKIE5hdHVyYWxMb29w
cyYgUHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMoKQogewogICAgIGlmICghbV9uYXR1cmFsTG9vcHMp
Ci0gICAgICAgIG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxOYXR1cmFsTG9vcHM+
KCp0aGlzKTsKKyAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPE5hdHVyYWxMb29w
cz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJkc0NG
RyYgUHJvY2VkdXJlOjpiYWNrd2FyZHNDRkcoKQogewogICAgIGlmICghbV9iYWNrd2FyZHNDRkcp
Ci0gICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+
KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0NG
Rz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKIEJhY2t3YXJkc0Rv
bWluYXRvcnMmIFByb2NlZHVyZTo6YmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFt
X2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2Jh
Y2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlz
KTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMzU4LDcgKzM1
OCw3IEBAIHZvaWQqIFByb2NlZHVyZTo6YWRkRGF0YVNlY3Rpb24oc2l6ZV90IHNpemUpCiB7CiAg
ICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhU2VjdGlv
bj4oc2l6ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9
IG1ha2VVbmlxdWU8RGF0YVNlY3Rpb24+KHNpemUpOwogICAgIHZvaWQqIHJlc3VsdCA9IGRhdGFT
ZWN0aW9uLT5kYXRhKCk7CiAgICAgbV9ieXByb2R1Y3RzLT5hZGQoV1RGTW92ZShkYXRhU2VjdGlv
bikpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmNwcAppbmRleCAzM2Y4YWJmZWZiYzFmOGY5MTY1NDVhM2JkY2ExOTZiMGNjNjZjMzk4Li5k
NWQ2OWMzMGE1OTkxNzVmMjgxNDgzNjI4NjM2ZmNiNzcwNjgwMTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBDQ2FsbFNwZWNp
YWwqIENvZGU6OmNDYWxsU3BlY2lhbCgpCiB7CiAgICAgaWYgKCFtX2NDYWxsU3BlY2lhbCkgewog
ICAgICAgICBtX2NDYWxsU3BlY2lhbCA9IHN0YXRpY19jYXN0PENDYWxsU3BlY2lhbCo+KAotICAg
ICAgICAgICAgYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwor
ICAgICAgICAgICAgYWRkU3BlY2lhbChtYWtlVW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwogICAg
IH0KIAogICAgIHJldHVybiBtX2NDYWxsU3BlY2lhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKaW5kZXggZjM2YjliMmZlNjY4MTYwYjg4OTliMGM1MGIz
MTk3ZDc1ODgyNGY4MC4uOTVjYWEwMDRkOGViMzkyMzMwZTFjY2JiNjM5YTVjZWU3OWNiYzc5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKQEAgLTEw
MCw3ICsxMDAsNyBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAg
ICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgY29kZS5tX2dlbmVy
YXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlQW5kQWxs
b2NhdGVSZWdpc3RlcnM+KGNvZGUpOworICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0
ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4oY29k
ZSk7CiAgICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzLT5wcmVwYXJl
Rm9yR2VuZXJhdGlvbigpOwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL3Rlc3RhaXIuY3BwCmluZGV4IGVmMTU0NGMwN2JiMzJhOTAzN2YyY2I3MWUxNWU3NGE5
YmU2MWJmOTQuLjNkY2EyOTY3ODhiMDAxMDY4ZTAxZjQyM2UxMTZjN2MyYTRlN2RhNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBjb21waWxlKEIzOjpQcm9jZWR1cmUmIHBy
b2MpCiAgICAgZ2VuZXJhdGUocHJvYy5jb2RlKCksIGppdCk7CiAgICAgTGlua0J1ZmZlciBsaW5r
QnVmZmVyKGppdCwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCMzo6
Q29tcGlsYXRpb24+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAg
ICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRl
c3RhaXIgY29tcGlsYXRpb24iKSwgcHJvYy5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIH0KIApAQCAt
MTg1NSw3ICsxODU1LDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNhY2hlZFRlbXBSZWdpc3RlcnMo
KQogICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCBBcmc6OmJpZ0ltbShiaXR3aXNlX2Nh
c3Q8aW50cHRyX3Q+KCZ0aGluZ3MpKSwgYmFzZSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogcGF0
Y2hQb2ludDFSb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBh
dGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBh
dGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3Bl
Y2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4o
KSk7CiAKICAgICAvLyBJbiBQYXRjaHBvaW50LCBMb2FkIHRoaW5nc1swXSAtPiB0bXAuIFRoaXMg
d2lsbCBtYXRlcmlhbGl6ZSB0aGUgYWRkcmVzcyBpbiB4MTcgKGRhdGFNZW1vcnlSZWdpc3Rlciku
CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDEgPSBwYXRjaFBvaW50MVJvb3Qt
PmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdp
bigpKTsKQEAgLTE5MzAsNyArMTkzMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkKCkK
ICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGlu
UmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVj
aWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVj
aWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUu
YWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBC
Mzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZh
bHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5NjIsNyArMTk2Miw3IEBA
IHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkMigpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBC
Mzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6
Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3Bl
Y2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6
UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNS
b290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpP
cmlnaW4oKSk7CkBAIC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5l
ZDMoKQogICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJv
Yy5waW5SZWdpc3RlcihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2lu
dFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2lu
dFNwZWNpYWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0g
Y29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAog
ICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBv
aW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5oCmluZGV4IDE1NWNhNGFiNDcwYjAxNDQyYWQ5NTQzYThhZTFmYzFmYzU5ZjdlM2Eu
LjFjN2FkMGY5NGUwNmI4YzMxYmZlN2NjOTRkMDU1MmM0Nzc5NjA3ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmgKQEAgLTE4OSw3ICsxODksNyBAQCBleHRlcm4gTG9jayBjcmFzaExvY2s7
CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjb21waWxlUHJvYyhQcm9jZWR1
cmUmIHByb2NlZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwgPSBPcHRpb25zOjpkZWZhdWx0QjNPcHRM
ZXZlbCgpKQogewogICAgIHByb2NlZHVyZS5zZXRPcHRMZXZlbChvcHRMZXZlbCk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1
cmUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGMx
MDg1OWFjZWQzZGI3OGI2NjQ5NzZhMDhiOGU1YjQ4ZDY1MmIyZjMuLjc3ZmI2NWRhMGI3YTA2Yzdk
NjU4YmFiZGI0ZTUxMDhhNzkxN2VlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6
OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAg
c3RhdGUuc2V0U3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKHNwaWxsU3RhdGUpOwogCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghYWNjZXNzLmNhbGxMaW5rSW5mbygpKTsKLSAgICAgICAg
ICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtJbmZv
PigpOworICAgICAgICAgICAgYWNjZXNzLm1fY2FsbExpbmtJbmZvID0gbWFrZVVuaXF1ZTxDYWxs
TGlua0luZm8+KCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZW5lcmF0ZWQgYSBw
b2x5bW9ycGhpYyBjYWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0byB0aGUgZ2V0dGVyCiAgICAg
ICAgICAgICAvLyBzdHViLCB3aGljaCB0aGVuIGp1bXBlZCBiYWNrIHRvIHRoZSBtYWluIGNvZGUs
IHRoZW4gd2UnZCBoYXZlIGEgcmVhY2hhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAppbmRleCAy
YmQ5ZmU2NTE5OWQwN2YxNzNlMzgzMGRjNzRlNDY3ZWI5ZDU0MWZjLi45MjU3ZmMyMjY2NTI5Zjg2
MTM3ZDVkYWQ4YzkyNDk3MTgzOTA0NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVi
bGljIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjpTbG93UAogICAgIHZvaWQgQWNjZXNzQ2FzZVNu
aXBwZXRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBm
cm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5
cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAg
ICAgIENDYWxsSGVscGVyczo6TGFiZWwgdG8gPSBqaXQubGFiZWwoKTsgXAotICAgICAgICBtX2dl
bmVyYXRvcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0
aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRU
eXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBc
CisgICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQobWFrZVVuaXF1ZTxTbG93UGF0aENhbGxHZW5l
cmF0b3JXaXRoQXJndW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUs
IFJlc3VsdFR5cGUsIF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBh
cmdzKSk7IFwKICAgICB9IFwKIAogU05JUFBFVF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RFRklORV9D
QUxMX09QRVJBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDMzYmIwYzA2NjM1MzgxZTg5OGY2NWE4NzRm
MWYzNmE4Yzk0ODIzYWYuLjEwYzY1YmI5ZGQ3MDlhOWFmN2FiYTZjZWI4YTliNzM1OTc3MTY0MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwCkBAIC02NSwxNSArNjUsMTUgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgog
ICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2lj
QmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKIAotICAgIGF1
dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKLSAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2Nr
KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVj
b2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7CisgICAgYXV0byBmaXJzdEJsb2NrID0gbWFrZVVu
aXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7
CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKICAgICBh
cHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJy
ZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0Qmxv
Y2spKTsKIAotICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CisgICAgYXV0byBleGl0ID0gbWFr
ZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2Nr
KTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIApAQCAtODQs
NyArODQsNyBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgICAgIGJvb2wgY3JlYXRlZEJs
b2NrID0gZmFsc2U7CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEganVt
cCB0YXJnZXQsIHRoZW4gaXQncyB0aGUgbGVhZGVyIG9mIGl0cyBvd24gYmFzaWMgYmxvY2suCiAg
ICAgICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9m
ZnNldCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKLSAgICAgICAgICAgIGF1dG8gbmV3
QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24p
OworICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPihpbnN0cnVjdGlvbik7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7
CiAgICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAg
ICBjcmVhdGVkQmxvY2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBkOGRhYzE1ODVmYWIyYjk5OGMxZTVkODg3NTJiYTEy
ZGY2ZGFkYmRlLi4zOTNmMTgyNGU0MWE0YmViNTE0YzYyYTY5NmYzM2E4MzcyNDk1Y2RkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAt
MjY1LDcgKzI2NSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogCiB2
b2lkIENhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVm
ZmxlRGF0YSYgc2h1ZmZsZURhdGEpCiB7Ci0gICAgbV9mcmFtZVNodWZmbGVEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJh
bWVTaHVmZmxlRGF0YSA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVE
YXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGVmMWNhYmZhNzE4YjA4MGQ3ZjNlODYzN2Y5Zjk0
ZjYwNTg2ZWU0ZTguLjM5YTIzYjRjN2Y0N2Q4ZmNlNWUzMGVlY2E1NTBlNzdkYWQzMTU4NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMzM3
LDcgKzEzMzcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygp
CiBDb2RlQmxvY2s6OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNsb3coY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJikKIHsKICAgICBBU1NFUlQoIW1faml0RGF0YSk7Ci0gICAgbV9q
aXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKSVREYXRhPigpOworICAgIG1faml0RGF0YSA9IG1h
a2VVbmlxdWU8SklURGF0YT4oKTsKICAgICByZXR1cm4gKm1faml0RGF0YTsKIH0KIApAQCAtMTU1
MCw3ICsxNTUwLDcgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudEZv
ckJ5dGVjb2RlT2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2sKIHZvaWQgQ29kZUJsb2NrOjpz
ZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGVuc3VyZUpJVERh
dGEobG9ja2VyKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKKyAgICBlbnN1cmVKSVREYXRh
KGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zm
c2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRD
YWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4g
cmVnaXN0ZXJBdE9mZnNldExpc3QpCkBAIC0xNzkwLDcgKzE3OTAsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3coY29u
c3QgT3BDYXRjaAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kp
CiAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
aSkpOwogCi0gICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgYXV0byBwcm9maWxl
cyA9IG1ha2VVbmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRz
LnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmlsZXMtPm1f
c2l6ZTsgKytpKQogICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5k
ID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IDg3MDY4YmE2NWRkODVjMjNmYmU0YTQ5MGU5NzRhNzI4MWYy
NTYwNGMuLjMxNDM4ZTBhYzUwNjliMjc0OTY5ODg4NmFiMTEyMDA3NmJjYjczYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTk0Myw3ICs5NDMsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNyZWF0ZVJhcmVE
YXRhSWZOZWNlc3NhcnkoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7Ci0gICAg
ICAgICAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAg
ICAgICAgICAgIGF1dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRjaFByb2ZpbGVzIGNhbiBiZSB0
b3VjaGVkIGZyb20gY29tcGlsZXIgdGhyZWFkcy4KICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBX
VEZNb3ZlKHJhcmVEYXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKaW5kZXggMmQ5NDMxY2YwYjE0NGZhM2EyYzIy
MWE2NmU5NDA3MGM3NzUwZTBlMC4uYjFhMDFmZmE0ZDkzNDhmZWNiMjRjOTY4OGJjODAwNTJmOTM4
ODZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQ
cm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxv
Y2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgIC8vIElmIHdlJ3Zl
IG5ldmVyIHNlZW4gYW55IGZyZXF1ZW50IGV4aXRzIHRoZW4gY3JlYXRlIHRoZSBsaXN0IGFuZCBw
dXQgdGhpcyBzaXRlCiAgICAgLy8gaW50byBpdC4KICAgICBpZiAoIXByb2ZpbGUubV9mcmVxdWVu
dEV4aXRTaXRlcykgewotICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKKyAgICAgICAgcHJvZmls
ZS5tX2ZyZXF1ZW50RXhpdFNpdGVzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0
ZT4+KCk7CiAgICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcy0+YXBwZW5kKHNpdGUp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3Bw
CmluZGV4IDRmNDhhMWQ2Yzk4NzIyZTVhYzJlY2U4N2U1MDQwMjMyZjlhNWQ2YjEuLjRmYjExNTcz
MDAzYjUyZWZkOWE4NjZmYjNiZGY3NzUwOThjZWZhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJh
Y2suY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
Ojpjb21waWxhdGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvZGVCbG9jayosCiBWZWN0b3I8
RGVmZXJyZWRTb3VyY2VEdW1wPiYgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjplbnN1cmVE
ZWZlcnJlZFNvdXJjZUR1bXAoKQogewogICAgIGlmICghbV9kZWZlcnJlZFNvdXJjZUR1bXApCi0g
ICAgICAgIG1fZGVmZXJyZWRTb3VyY2VEdW1wID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RGVm
ZXJyZWRTb3VyY2VEdW1wPj4oKTsKKyAgICAgICAgbV9kZWZlcnJlZFNvdXJjZUR1bXAgPSBtYWtl
VW5pcXVlPFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+PigpOwogICAgIHJldHVybiAqbV9kZWZl
cnJlZFNvdXJjZUR1bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcAppbmRleCBkYjlhZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJi
NjgzZGRlYWQ2Li5kZjRkNzdjZTNmNjNiNTIwMDc1NTQ0YzQxYTE2Y2IyMzFkN2RmYTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBA
IC0yNDMsNyArMjQzLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
U3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6
R2V0dGVyOiB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtT
dGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
KmNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBj
YWxsRXhpdFNpdGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuY3BwCmluZGV4IGZjMWY0NjBkZTk2NTQxZDhmYTA5OWNiYjQ1ZjIzMDlj
MmEzMzM4MGYuLmVkOGQ0OTNmN2VlNmYxZGEyYjkwOWFkNTdjNjI3NzE4MTNjMmQ2YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApA
QCAtNzIsNyArNzIsNyBAQCBHZXRCeUlkVmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9y
PShjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jdXN0b21BY2Nlc3NvckdldHRl
ciA9IG90aGVyLm1fY3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgbV9kb21BdHRyaWJ1dGUgPSBv
dGhlci5tX2RvbUF0dHJpYnV0ZTsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykKLSAg
ICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+
KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG1h
a2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAgICBl
bHNlCiAgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAqdGhp
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDA5MjlkNmZiNDEyNjc0ZWQ3ZjIwNDA0NWZiNDI1
ZWI3ZDM4ZDNjOTMuLjZlZWIxNDViMzM3OTY2MmFmMWMxNTAwMTkwNzY3MjdhMzllZTJiZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCiAgICAg
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVL
ZXkmIGtleSkKIHsKICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKKyAgICAgICAgbV9kYXRh
ID0gbWFrZVVuaXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKICAgICBlbHNl
IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGlmIChtX2RhdGEtPmF0KGkpLmtleSgpID09IGtleSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgK
aW5kZXggYjQ5ZTRlMjQyZTUyZjA4MTMxNWU0OGZiMWUxYmNjMjk3ZTUyOGFlMC4uYTFlY2I5NGRk
MGQxODY3MDg2MzUyZjUyYjViNThjMzE5M2VlY2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgY2xhc3MgUG9seVByb3RvQWNjZXNzQ2hhaW4gewogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjbG9uZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOwogICAgIH0KIAogICAg
IGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWlu
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcAppbmRleCAyMmY0NTU4MTRiODRhZjRmZTc0Y2FmMjM0MDFkMzBhZGFkYWU1YzZl
Li4zYjMwMjMzOWYwMzUwZGFjNDI4ZjNmMDRjYzczNTJhM2FlNTIxYjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAg
LTYxNiw3ICs2MTYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNz
OjpyZWdlbmVyYXRlKAogICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShj
b2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBjb2RlQmxvY2tUaGF0
T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcp
OwogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBp
ZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWFrUmVmZXJl
bmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RG
TW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOworICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0g
bWFrZVVuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndl
YWtSZWZlcmVuY2VzKSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCmluZGV4IGMyZDk1MzIwY2ViZDU2ZGJkYzkzZWViZDZjMzE0MGE3ZGY3Y2MyMDkuLmQ2NDJi
Y2NmZTc5NzY2YzUyNzliYmM4MTA4NzAxZWI3Zjg1ODI0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTIwMiw3ICsyMDIsNyBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJ
bmxpbmVhYmxlOiB7CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlu
a1N0YXR1cz4gY2FsbExpbmtTdGF0dXMgPQotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1h
a2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
PigpLmNhbGxMaW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtT
dGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0
ZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFy
aWFudC5jcHAKaW5kZXggNWQ2YjI5MDQ1Y2E2NzVjNTZmYTcxZDU0NzVhMTE1YjJkZjZmM2M1ZS4u
NzJjNmNhYzg0ZmIyN2JjZjVlNDE3YzQ5NmU2MzYyZjcyZTZjMGEyOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIFB1dEJ5SWRWYXJpYW50JiBQdXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IFB1
dEJ5SWRWYXJpYW50JiBvdGhlcikKICAgICBtX2NvbmRpdGlvblNldCA9IG90aGVyLm1fY29uZGl0
aW9uU2V0OwogICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CiAgICAgaWYgKG90aGVyLm1f
Y2FsbExpbmtTdGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1f
Y2FsbExpbmtTdGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxs
TGlua1N0YXR1cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0
cjsKICAgICByZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKaW5kZXggOTZkMjJlY2ZhMGE0Yzc1NmVkZmY2MWYw
MDEzZjcyNThlN2QzZmJkNS4uNTNmMjA4YmNhZGVkM2RlYTJkZWUxOGEwZTg5NjA1YzQ5MGExOTVi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmNwcApAQCAtNDUsNyArNDUsNyBAQCBSZWNvcmRlZFN0YXR1c2VzOjpSZWNvcmRlZFN0
YXR1c2VzKFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKIAogQ2FsbExpbmtTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3Rh
dHVzUHRyID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKICAgICBDYWxsTGlu
a1N0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGNhbGxzLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtNTMsNyArNTMsNyBAQCBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogCiBHZXRC
eUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVP
cmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBh
dXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsK
KyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsK
ICAgICBHZXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgZ2V0cy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYxLDcgKzYxLDcgQEAgR2V0QnlJZFN0YXR1cyogUmVjb3Jk
ZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LAogICAgIAogUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1
cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0
dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0
dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFB1dEJ5SWRTdGF0
dXM+KHN0YXR1cyk7CiAgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgp
OwogICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw3ICs2OSw3IEBAIFB1dEJ5SWRT
dGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdp
biYgY29kZU9yaWdpbiwKIAogSW5CeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRJbkJ5
SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgSW5CeUlkU3RhdHVz
JiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluQnlJ
ZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8SW5CeUlk
U3RhdHVzPihzdGF0dXMpOwogICAgIEluQnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdl
dCgpOwogICAgIGlucy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShz
dGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRj
aHBvaW50LmNwcAppbmRleCAzMGExZjA1NTI1OWUzZGVkMWE3MTY4ZWUzNTI2ZjcyYzA4NGJlZTVh
Li5mY2MyOTExODAyNDRlMGIzMjI5ZTJmZDc2MzAwN2JlNzlhODc0MWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQqIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJl
UmVmZXJlbmNlCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiYga2V5KQogewogICAgIGlmICghaG9sZGVyUmVmKQotICAgICAgICBo
b2xkZXJSZWYgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5m
bz4oY29kZUJsb2NrLCBzdHViSW5mbyk7CisgICAgICAgIGhvbGRlclJlZiA9IG1ha2VVbmlxdWU8
V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAg
ICBlbHNlIHsKICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9jb2RlQmxvY2sgPT0gY29kZUJs
b2NrKTsKICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9zdHViSW5mbyA9PSBzdHViSW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAppbmRleCA3MjIyZDQ4MmFkMWU1ZTI4NmNlZjU5ZDRmZjFlMWY1ZWIwNzEwNzhkLi40
OTE5NWQxNTcyMWQyY2RhNGY3NDhhZThkYmUyYWYwMDlhMjhhN2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTE2
MCw3ICsxNjAsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjph
ZGRBY2Nlc3NDYXNlKAogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1v
cnBoaWNBY2Nlc3M+IGFjY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+
KCk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2Vz
cyA9IG1ha2VVbmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2Vz
OwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBlMDA2ZDE2YjliOGEwZmMzMGYwNDMzY2RlNjAy
ZWNjM2IxNjhkNDJlLi4yYzlhMGIzMDFlYjA5OGUxMTVlZjFlMzZiMTI3YmUyOWUzYWJkYTIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIFVu
bGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxvY2sqIGNvZAogICAg
ICAgICBpZiAoIW1fbGl2ZW5lc3MpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgY2hhbmNl
IHR3byBjb21waWxlciB0aHJlYWRzIHJhY2VkIHRvIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAg
ICAvLyBHcmFiYmluZyB0aGUgbG9jayBhYm92ZSBkZWZlbmRzIGFnYWluc3QgY29tcHV0aW5nIGxp
dmVuZXNzIHR3aWNlLgotICAgICAgICAgICAgbV9saXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOworICAgICAgICAgICAgbV9saXZl
bmVzcyA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOwog
ICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0MzcwOTUxOWViNjE2ZTI2NTEwNmVmMWQ1
NTI5NjE3ZDY0NWM5YmM5Li41MTI1MzZjMGQ0NDg1N2E0Y2E3NmU4MTNmZTE0ODAzYTk3M2ZmYTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaApAQCAtNDAyLDcgKzQwMiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKICAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcoKmhlYXAoKSwgY2VsbExvY2soKSk7
Ci0gICAgICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsK
KyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBmYmVjOWY3MmNhMmZk
MWExOGJhY2IwNzNlNjg3MjU0YjcwYjllYmUxLi40OWQ5ZDJmZDNlNmZlOWZiNGI1MjdmNjc3YWJk
NWJkNGE1MTIyNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI3NSw3ICsyNzUs
NyBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxv
Y2tzKFZNJiB2bSkKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJU
KCFtX3JhcmVEYXRhKTsKLSAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0
YT4oKTsKKyAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByZXR1
cm4gKm1fcmFyZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlOTc2ODZhYTNlZGNkZDhkM2Y5
YjU3YzRhNmQxMjNiYWM5Y2IzOTg3Li4xNzhhNjFkZjY5MTMzYWZkY2MxMjcyOGNiZmQ5NmViMzlm
NDJhZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAg
ICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNv
ZGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9k
ZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOwor
ICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVH
ZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2Rl
LCBlbnZpcm9ubWVudCk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJh
dG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVw
b3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmgKaW5kZXggYmNkNzJlYTA5ZjVmNzE3YTY1ZjY1ZDdkMmVmYzE3NWUwMjNl
Njk5MC4uZWJhYmI1OWQ0MzU5YTllMzY0ZjJjYTNhZjZhZmQwZWZkMDM5MGIzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xh
c3MgVk07CiB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CiAKIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIERlYnVnZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBEZWJ1Z2dlcihWTSYpOwogICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggZjIwYTM1N2VjYjczYWE3ZWZlNGNiMTA3ZDFjY2I3ZTlkYzkwMDMzOS4uMjc2
NTY5MjZhOGQyOWQyN2ViZWVhYTlmZmRjYTIwM2NjMjVmYTBmNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtNTgsNyArNTgsNyBAQCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6QWJzdHJhY3RJbnRlcnByZXRlcihHcmFwaCYgZ3JhcGgsIEFic3RyYQogICAgICwgbV9zdGF0
ZShzdGF0ZSkKIHsKICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQotICAgICAgICBtX3Bo
aUNoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxQaGlDaGlsZHJlbj4obV9ncmFwaCk7CisgICAg
ICAgIG1fcGhpQ2hpbGRyZW4gPSBtYWtlVW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDMyYTJjOTA0OWZlZDZmODJjNmFiYTQwNzY3NjZiZjQy
OWIxMzkzODMuLjA4NzRlYTcxY2JkZWI3YzYxZmU1YTA4ZTA1NTJiMGIzN2I0YjEzNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC03NCw3ICs3NCw3IEBAIEdyYXBo
OjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1f
Y29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2soKSkKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2Nv
ZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlxdWU8
U1NBQ0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhtYWtlVW5pcXVlPFNTQUNGRz4oKnRoaXMp
KQogICAgICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVm
b3JlRml4cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RT
dGFydGVkUmVnaXN0ZXJpbmcpCkBAIC04Niw4ICs4Niw4IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0s
IFBsYW4mIHBsYW4pCiAgICAgCiAgICAgbV9oYXNEZWJ1Z2dlckVuYWJsZWQgPSBtX3Byb2ZpbGVk
QmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSB8fCBPcHRpb25zOjpmb3Jj
ZURlYnVnZ2VyQnl0ZWNvZGVHZW5lcmF0aW9uKCk7CiAgICAgCi0gICAgbV9pbmRleGluZ0NhY2hl
ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlzKTsKLSAgICBtX2Fic3RyYWN0
VmFsdWVzQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0
aGlzKTsKKyAgICBtX2luZGV4aW5nQ2FjaGUgPSBtYWtlVW5pcXVlPEZsb3dJbmRleGluZz4oKnRo
aXMpOworICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd01hcDxBYnN0
cmFjdFZhbHVlPj4oKnRoaXMpOwogCiAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RydWN0dXJl
U3RydWN0dXJlLmdldCgpKTsKICAgICB0aGlzLT5zdHJpbmdTdHJ1Y3R1cmUgPSByZWdpc3RlclN0
cnVjdHVyZSh2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAg
RnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxvY2sqIGNvZGVC
bG9jaykKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlTGl2ZW5lc3MuZW5kKCkpCiAgICAgICAg
IHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRl
Y29kZUxpdmVuZXNzPiBsaXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8RnVsbEJ5dGVjb2RlTGl2
ZW5lc3M+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPiBsaXZl
bmVzcyA9IG1ha2VVbmlxdWU8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+KCk7CiAgICAgY29kZUJsb2Nr
LT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0ZUZ1bGxMaXZlbmVzcyhjb2RlQmxvY2ssICpsaXZl
bmVzcyk7CiAgICAgRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCA9ICpsaXZlbmVzczsKICAg
ICBtX2J5dGVjb2RlTGl2ZW5lc3MuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShsaXZlbmVzcykpOwpA
QCAtMTA5OCw3ICsxMDk4LDcgQEAgQnl0ZWNvZGVLaWxscyYgR3JhcGg6OmtpbGxzRm9yKENvZGVC
bG9jayogY29kZUJsb2NrKQogICAgIGlmIChpdGVyICE9IG1fYnl0ZWNvZGVLaWxscy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuICppdGVyLT52YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVLaWxscz4ga2lsbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gbWFrZVVuaXF1ZTxC
eXRlY29kZUtpbGxzPigpOwogICAgIGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1
dGVLaWxscyhjb2RlQmxvY2ssICpraWxscyk7CiAgICAgQnl0ZWNvZGVLaWxscyYgcmVzdWx0ID0g
KmtpbGxzOwogICAgIG1fYnl0ZWNvZGVLaWxscy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGtpbGxz
KSk7CkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBDUFNDRkcmIEdyYXBoOjplbnN1cmVDUFNDRkcoKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNp
b24pOwogICAgIGlmICghbV9jcHNDRkcpCi0gICAgICAgIG1fY3BzQ0ZHID0gc3RkOjptYWtlX3Vu
aXF1ZTxDUFNDRkc+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNDRkcgPSBtYWtlVW5pcXVlPENQU0NG
Rz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNDRkc7CiB9CiAKQEAgLTE1NDQsNyArMTU0NCw3
IEBAIENQU0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKCkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAg
ICBpZiAoIW1fY3BzRG9taW5hdG9ycykKLSAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fY3BzRG9taW5hdG9y
cyA9IG1ha2VVbmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNE
b21pbmF0b3JzOwogfQogCkBAIC0xNTUyLDcgKzE1NTIsNyBAQCBTU0FEb21pbmF0b3JzJiBHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fc3NhRG9taW5hdG9ycykK
LSAgICAgICAgbV9zc2FEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FEb21pbmF0b3Jz
PigqdGhpcyk7CisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8U1NBRG9taW5h
dG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCkBAIC0xNTYx
LDcgKzE1NjEsNyBAQCBDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9v
cHMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZl
cnNpb24pOwogICAgIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fY3BzTmF0dXJh
bExvb3BzKQotICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BT
TmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbWFrZVVu
aXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExv
b3BzOwogfQogCkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjpl
bnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0Ep
OwogICAgIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fc3NhTmF0dXJhbExvb3Bz
KQotICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBTmF0dXJh
bExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxT
U0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwog
fQogCkBAIC0xNTc5LDcgKzE1NzksNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNr
d2FyZHNDRkcoKQogICAgIC8vIFdlIGNvdWxkIGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBmdXR1
cmUgdG8gd29yayBvdmVyIENQUywgYnV0IHRvZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EuCiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2FyZHND
RkcpCi0gICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHND
Rkc+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJk
c0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKQEAgLTE1ODcs
NyArMTU4Nyw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNE
b21pbmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBp
ZiAoIW1fYmFja3dhcmRzRG9taW5hdG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3Jz
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAg
IG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0xNTk1
LDcgKzE1OTUsNyBAQCBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0g
PT0gU1NBKTsKICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCi0gICAgICAg
IG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CisgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMgPSBtYWtlVW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDYzOTA0M2U5ZTI3
ZmJlMGUwYjkyYWI0NmE2NjliZTE0MTA1MDMzNzAuLmYyYjY2NDAyZTNhZDBlNzJkZmNlMDViNjVh
ZjNmYzkyNmQwMDlkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEpJVENvbXBpbGVyOjpKSVRDb21waWxlcihHcmFw
aCYgZGZnKQogICAgICwgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIoZGZnLm1fdm0pCiB7CiAg
ICAgaWYgKFVOTElLRUxZKHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IG1fZ3JhcGgubV92bS5t
X3BlckJ5dGVjb2RlUHJvZmlsZXIpKQotICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGlzYXNzZW1ibGVyPihkZmcpOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1h
a2VVbmlxdWU8RGlzYXNzZW1ibGVyPihkZmcpOwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIG1f
aml0Q29kZS0+dGllclVwSW5Mb29wSGllcmFyY2h5ID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi50
aWVyVXBJbkxvb3BIaWVyYXJjaHkoKSk7CiAgICAgZm9yICh1bnNpZ25lZCB0aWVyVXBCeXRlY29k
ZSA6IG1fZ3JhcGgubV9wbGFuLnRpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzKCkpCkBAIC0zNDMs
NyArMzQzLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KQogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1h
cHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6
bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1h
cEJ1aWxkZXIpLCBsaW5rQnVmZmVyKSk7CisgICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29k
ZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOwogfQogCiBzdGF0aWMgdm9pZCBlbWl0
U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvbXBpbGVyJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCYgc3RhY2tPdmVyZmxvdykKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIAogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7
Ci0gICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0
aGlzKTsKKyAgICBtX3NwZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRo
aXMpOwogCiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZh
aWxhYmxlIGluIHRoZSBKU1N0YWNrLgogICAgIEp1bXBMaXN0IHN0YWNrT3ZlcmZsb3c7CkBAIC00
MDIsOSArNDAyLDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxh
dGl2ZS0+Y3JlYXRlT1NSRW50cmllcygpOwogICAgIHNldEVuZE9mQ29kZSgpOwogCi0gICAgYXV0
byBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgYXV0byBsaW5rQnVmZmVyID0gbWFr
ZVVuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKLSAgICAg
ICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmlu
YWxpemVyPihtX2dyYXBoLm1fcGxhbikpOworICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5h
bGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZSgpCiAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAKLSAgICBt
X2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+
KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEpJVEZpbmFsaXpl
cj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSwg
V1RGTW92ZShsaW5rQnVmZmVyKSkpOwogfQogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBKSVRD
b21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBjb21waWxlRW50cnlFeGVjdXRpb25GbGFn
KCk7CiAKICAgICAvLyA9PT0gRnVuY3Rpb24gYm9keSBjb2RlIGdlbmVyYXRpb24gPT09Ci0gICAg
bV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsK
KyAgICBtX3NwZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwog
ICAgIGNvbXBpbGVCb2R5KCk7CiAgICAgc2V0RW5kT2ZNYWluUGF0aCgpOwogCkBAIC01MDcsOSAr
NTA3LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBzZXRFbmRP
ZkNvZGUoKTsKIAogICAgIC8vID09PSBMaW5rID09PQotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxh
dGlvbkNhbkZhaWwpOworICAgIGF1dG8gbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZl
cj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChs
aW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFu
LnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5t
X3BsYW4pKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8
RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGxpbmsoKmxpbmtCdWZmZXIpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4gd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50
cnlQdHJUYWc+KGFyaXR5Q2hlY2spOwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVy
KHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRG
aW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxh
biwgbV9qaXRDb2RlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhB
cml0eUNoZWNrKSk7CiB9CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkKiBKSVRDb21waWxlcjo6
YWRkcmVzc09mRG91YmxlQ29uc3RhbnQoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQ7CiAKICAgICBpZiAoIW1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMpCi0gICAgICAgIG1f
Z3JhcGgubV9kb3VibGVDb25zdGFudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhZzxkb3VibGU+Pigp
OworICAgICAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gbWFrZVVuaXF1ZTxCYWc8ZG91
YmxlPj4oKTsKIAogICAgIGRvdWJsZSogYWRkcmVzc0luQ29uc3RhbnRQb29sID0gbV9ncmFwaC5t
X2RvdWJsZUNvbnN0YW50cy0+YWRkKCk7CiAgICAgKmFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IHZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuY3BwCmluZGV4IGJiODAwMjc0ZGRjYjYzMDM0NzgzNzM3ZTM4YWQxZTYxZTlj
NWVhMDQuLmE5NDQwNDc0NTkyNTIxODQ1YmEzMTg4MzdiMTNiOWY0YTMxN2VmMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFz
ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgTGl2ZW5lc3NBbmFseXNpc1BoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgLCBtX2xpdmVBdFRhaWwobV9ncmFwaCkKICAgICB7CiAgICAg
ICAgIG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5yZWNvbXB1dGUoKTsKLSAgICAgICAgbV93b3Jr
c2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jrc2V0PihtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+
bnVtSW5kaWNlcygpKTsKKyAgICAgICAgbV93b3Jrc2V0ID0gbWFrZVVuaXF1ZTxXb3Jrc2V0Piht
X2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+bnVtSW5kaWNlcygpKTsKICAgICB9CiAKICAgICBib29s
IHJ1bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCA0ZGJjZWU4YTZi
YjJkYzM4ZGZjNTA1ZGJjYWI2ZTM5ZmMwZTI3NmYyLi4wNzgzMGVkMmY1ZTgxNjY0ODhiOTFhZGM1
MmE3MTkyZGIyOGMxMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAg
LTI5Niw3ICsyOTYsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhy
ZWFkSW1wbCgpCiAgICAgaWYgKG1fbW9kZSA9PSBGVExGb3JPU1JFbnRyeU1vZGUpIHsKICAgICAg
ICAgYm9vbCByZXN1bHQgPSBwZXJmb3JtT1NSRW50cnlwb2ludENyZWF0aW9uKGRmZyk7CiAgICAg
ICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9
IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4g
RmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1DUFNSZXRocmVh
ZGluZyk7CkBAIC0zOTcsNyArMzk3LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNv
bXBpbGVJblRocmVhZEltcGwoKQogICAgIGNhc2UgRlRMRm9yT1NSRW50cnlNb2RlOiB7CiAjaWYg
RU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6
OkNhbm5vdENvbXBpbGUpIHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0g
bWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBG
YWlsUGF0aDsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBQbGFuOjpD
b21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgICAgIFJVTl9Q
SEFTRShwZXJmb3JtV2F0Y2hwb2ludENvbGxlY3Rpb24pOwogICAgICAgICAKICAgICAgICAgaWYg
KEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgewotICAgICAgICAg
ICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMp
OworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4o
KnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApp
bmRleCA4NzE1OTViMWZmMjU5YmVlNDRjNzFjZTAzZDdkOGU4YmQ2NDM2NTM3Li41MzRkNjRiNTM4
ZmExODBhZjQ4ZTg5ZDRmODI2MDJmYjQ1YzkyMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCkBAIC00NDgsNyArNDQ4LDcg
QEAgY2xhc3MgU1NBQ29udmVyc2lvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1
ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIo
KTsKLSAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6
OlNTQURhdGE+KGJsb2NrKTsKKyAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBtYWtlVW5pcXVlPEJh
c2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0
byYgcGFpciA6IGVudHJ5cG9pbnRJbmRleFRvQXJndW1lbnRzQmxvY2spIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCA3Y2Y0MjUy
MWE2MjExNzhmZjg1MTJhZmY5ZmZmYTMyNTIwMDIyNGQ2Li5jZGNkYWE2MGQ4OThhM2I2NmQ3YjI5
OGY2NjgxOGM3OWRjNDhjODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0xOTMsNyArMTkzLDcgQEAgaW5saW5lIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIFNwaWxsUmVnaXN0
ZXJzTW9kZSBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQs
CiAgICAgUmVzdWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2Vu
ZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+
KAorICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+
PigKICAgICAgICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwg
cmVzdWx0LCBhcmd1bWVudHMuLi4pOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgSnVtcFR5cGUsIHR5cGVuYW1lIERlc3RpbmF0aW9uVHlwZSwgdHlwZW5hbWUgU291
cmNlVHlwZSwgdW5zaWcKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoTW92ZSgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBT
b3VyY2VUeXBlIHNvdXJjZVtudW1iZXJPZkFzc2lnbm1lbnRzXSwgRGVzdGluYXRpb25UeXBlIGRl
c3RpbmF0aW9uW251bWJlck9mQXNzaWdubWVudHNdKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5
cGUsIFNvdXJjZVR5cGUsIG51bWJlck9mQXNzaWdubWVudHM+PigKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBl
LCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCiAgICAgICAgIGZyb20sIGppdCwg
ZGVzdGluYXRpb24sIHNvdXJjZSk7CiB9CiAKQEAgLTI0OSw3ICsyNDksNyBAQCBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291
cmNlVHlwZSBzb3VyY2VBcnJheVsxXSA9IHsgc291cmNlIH07CiAgICAgRGVzdGluYXRpb25UeXBl
IGRlc3RpbmF0aW9uQXJyYXlbMV0gPSB7IGRlc3RpbmF0aW9uIH07Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0
aW9uVHlwZSwgU291cmNlVHlwZSwgMT4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmlu
Z1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUs
IDE+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7
CiB9CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291cmNlVHlwZSBzb3VyY2VBcnJheVsy
XSA9IHsgc291cmNlMSwgc291cmNlMiB9OwogICAgIERlc3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlv
bkFycmF5WzJdID0geyBkZXN0aW5hdGlvbjEsIGRlc3RpbmF0aW9uMiB9OwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0
aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDI+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3Np
Z25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VU
eXBlLCAyPj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJy
YXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDJhYmNkYjNmZDVmOTcwZjNmYmI5MGQzYjBmNmUzY2Q5ZDQwZmNlMzcuLjAz
OWE0NmE3NTg2MTA0OGM4NWYwMzI4MmEyNmZlYWZiN2VmOWJlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNDEsNyArMTQxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1
bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUKICAgICAvLyBJIHdhbnQgYSBzbG93IHBhdGggdGhh
dCBhbHNvIGxvYWRzIG91dCB0aGUgc3RvcmFnZSBwb2ludGVyLCBhbmQgdGhhdCdzCiAgICAgLy8g
d2hhdCB0aGlzIGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZl
cyBtZS4gSXQncyBhIGxvdAogICAgIC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBv
ZiBmdW5jdGlvbmFsaXR5LiA6LS8KLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJl
c3VsdEdQUiwgc3RvcmFnZUdQUiwKICAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpKTsK
IApAQCAtODk5LDcgKzg5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUq
IG5vZGUsIEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgcHJvcGVydHlSZWcpCiAgICAgICAgIHNsb3dQ
YXRoLmFwcGVuZChqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUtPmFy
cmF5TW9kZSgpKSk7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6
bWFrZV91bmlxdWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IobWFrZVVuaXF1ZTxBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAg
c2xvd1BhdGgsIHRoaXMsIG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB0ZW1wR1BSLCBzdHJ1
Y3R1cmVHUFIpKTsKICAgICAKICAgICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKQEAgLTIyNDIs
MTAgKzIyNDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJp
bmcoTm9kZSogbm9kZSkKICAgICAgICAgfQogICAgICAgICBpZiAocHJvdG90eXBlQ2hhaW5Jc1Nh
bmUpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc3RkOjptYWtlX3VuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4o
CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywg
dGhpcywgSlNWYWx1ZVJlZ3Moc2NyYXRjaFJlZyksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAj
ZWxzZQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxT
YW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJh
dG9yPigKICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhpcywgSlNWYWx1ZVJlZ3MocmVz
dWx0VGFnUmVnLCBzY3JhdGNoUmVnKSwKICAgICAgICAgICAgICAgICBiYXNlUmVnLCBwcm9wZXJ0
eVJlZykpOwogI2VuZGlmCkBAIC03NjE5LDcgKzc2MTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cywgcmVzdWx0
R1BSLCBzdHJ1Y3R1cmUsCiAgICAgICAgICAgICAgICAga25vd25MZW5ndGgsIG1pbkNhcGFjaXR5
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xv
d1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHJlc3VsdEdQUiwg
c3RydWN0dXJlLCBsZW5ndGhHUFIsIG1pbkNhcGFjaXR5KTsKICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoV1RGTW92ZShnZW5lcmF0b3IpKTsKICAgICB9CkBAIC04NDM5LDcgKzg0MzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxv
Y2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4o
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2Nh
dG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAog
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCBy
ZXN1bHRHUFIsIHRlbXBWYWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAgIH0K
IApAQCAtOTEzNSw3ICs5MTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0cnVjdHVy
ZUNoZWNrKE5vZGUqIG5vZGUsIEdQUlJlZyBjZWxsR1BSLCBHUFJSZWcgdGVtcEcKICAgICAgICAg
R1BSUmVnIHN0cnVjdHVyZUdQUjsKICAgICAgICAgCiAgICAgICAgIGlmICh0ZW1wR1BSID09IElu
dmFsaWRHUFJSZWcpIHsKLSAgICAgICAgICAgIHN0cnVjdHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8
R1BSVGVtcG9yYXJ5Pih0aGlzKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZSA9IG1ha2VVbmlxdWU8
R1BSVGVtcG9yYXJ5Pih0aGlzKTsKICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVy
ZS0+Z3ByKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gdGVt
cEdQUjsKQEAgLTEzMTc2LDcgKzEzMTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAog
ICAgIG1faml0Lm11dGF0b3JGZW5jZSgqbV9qaXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNp
emVTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1
ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAog
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3Vs
dEdQUiwKICAgICAgICAgc3RydWN0dXJlLAogICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXpl
VG9BcnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRl
eCBmYTM5NmY0ZjE5MmE4YmI0YWVmOTlkMDM3MTkyNGEyYTM4YzY0NWU4Li5iYTYxMjhlZmU5YmIz
NjhmZTNiMDY2MjNiNTFlZTNlZWFkM2M0ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAt
OTUsOCArOTUsOCBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgIGNhc2UgUGhhc2VNb2RlOjpHbG9iYWw6IHsKICAgICAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKIAotICAg
ICAgICAgICAgbV9zdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+
KG1fZ3JhcGgpOwotICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0
YXRlKTsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBtYWtlVW5pcXVlPEluUGxhY2VBYnN0cmFjdFN0
YXRlPihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBtYWtlVW5pcXVlPEFi
c3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0
ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faXNDb252ZXJnZWQgPSBmYWxzZTsKICAg
ICAgICAgICAgIApAQCAtMTA3LDggKzEwNyw4IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIC8vIHRvd2FyZHMgYmVsaWV2aW5n
IHRoYXQgYWxsIG5vZGVzIG5lZWQgYmFycmllcnMuICJOZWVkaW5nIGEgYmFycmllciIgaXMgbGlr
ZQogICAgICAgICAgICAgLy8gc2F5aW5nIHRoYXQgdGhlIG5vZGUgaXMgaW4gYSBwYXN0IGVwb2No
LiAiTm90IG5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlIHNheWluZwogICAgICAgICAgICAgLy8g
dGhhdCB0aGUgbm9kZSBpcyBpbiB0aGUgY3VycmVudCBlcG9jaC4KLSAgICAgICAgICAgIG1fc3Rh
dGVBdEhlYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9n
cmFwaCk7Ci0gICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9j
a01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0SGVh
ZCA9IG1ha2VVbmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAg
ICAgICAgIG1fc3RhdGVBdFRhaWwgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+
Pj4obV9ncmFwaCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJsb2NrTGlzdCBwb3N0T3Jk
ZXIgPSBtX2dyYXBoLmJsb2Nrc0luUG9zdE9yZGVyKCk7CiAgICAgICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggZTZjMjIyMWVlMzAxNTQ0Yzcy
YTljZTgzNWY5ODBmZjM2ZjAyNGI3ZC4uOGY5MzAzNGIwYzZmOTBiYTY2ZjRiZjVjNTNiZTFiNGYw
ZmJhNzRlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlz
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAg
LTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBXb3JrbGlzdDo6VGhyZWFkQm9keSA6IHB1YmxpYyBBdXRv
bWF0aWNUaHJlYWQgewogICAgICAgICBpZiAobV9yZWxhdGl2ZVByaW9yaXR5KQogICAgICAgICAg
ICAgVGhyZWFkOjpjdXJyZW50KCkuY2hhbmdlUHJpb3JpdHkobV9yZWxhdGl2ZVByaW9yaXR5KTsK
ICAgICAgICAgCi0gICAgICAgIG1fY29tcGlsYXRpb25TY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29tcGlsYXRpb25TY29wZT4oKTsKKyAgICAgICAgbV9jb21waWxhdGlvblNjb3BlID0gbWFrZVVu
aXF1ZTxDb21waWxhdGlvblNjb3BlPigpOwogICAgIH0KICAgICAKICAgICB2b2lkIHRocmVhZElz
U3RvcHBpbmcoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlkZQpAQCAtMjE0LDcgKzIxNCw3
IEBAIHZvaWQgV29ya2xpc3Q6OmZpbmlzaENyZWF0aW9uKHVuc2lnbmVkIG51bWJlck9mVGhyZWFk
cywgaW50IHJlbGF0aXZlUHJpb3JpdHkpCiAKIHZvaWQgV29ya2xpc3Q6OmNyZWF0ZU5ld1RocmVh
ZChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
VGhyZWFkRGF0YT4odGhpcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEg
PSBtYWtlVW5pcXVlPFRocmVhZERhdGE+KHRoaXMpOwogICAgIGRhdGEtPm1fdGhyZWFkID0gYWRv
cHRSZWYobmV3IFRocmVhZEJvZHkobG9ja2VyLCAqdGhpcywgKmRhdGEsIG1fbG9jaywgbV9wbGFu
RW5xdWV1ZWQuY29weVJlZigpLCByZWxhdGl2ZVByaW9yaXR5KSk7CiAgICAgbV90aHJlYWRzLmFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
aXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAppbmRleCAxOWIxMTVjOWZkZDY3Y2JjOGFlMTA5
YzY0NDU3NDI4YmEzYWRmYTUzLi4wMGJkYTY1NzI3OWNmN2E5OWRiYWIxNDliMDljNzAzZDY4YjM1
YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgQXN5bmNocm9ub3VzRGlzYXNzZW1ibGVy
JiBhc3luY2hyb25vdXNEaXNhc3NlbWJsZXIoKQogdm9pZCBkaXNhc3NlbWJsZUFzeW5jaHJvbm91
c2x5KAogICAgIGNvbnN0IENTdHJpbmcmIGhlYWRlciwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPERpc2Fzc2VtYmx5UHRyVGFnPiYgY29kZVJlZiwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIq
IHByZWZpeCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IG1ha2VVbmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOwog
ICAgIHRhc2stPmhlYWRlciA9IHN0cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVjayEgV2UgbmVl
ZCB0aGlzIGJlY2F1c2UgQ1N0cmluZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCiAgICAgdGFzay0+
Y29kZVJlZiA9IGNvZGVSZWY7CiAgICAgdGFzay0+c2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKaW5kZXggOTBhZTJmNGZlMDZhMTUy
Y2FlNTc4NWUyYzAzYzk5OWI2ODMyYmMxYi4uZWM4MGVhNjdiMjU2Zjg5MThkNDg4M2E4YzUyYjhm
Mzc5NTgzYWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwLmNwcApAQCAtMTU3LDExICsxNTcsMTEgQEAgY29uc3QgQWJzdHJhY3RIZWFwJiBJbmRleGVk
QWJzdHJhY3RIZWFwOjphdFNsb3cocHRyZGlmZl90IGluZGV4KQogICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGluZGV4KSA+PSBtX3NtYWxsSW5kaWNlcy5zaXplKCkpOwogICAgIAogICAg
IGlmIChVTkxJS0VMWSghbV9sYXJnZUluZGljZXMpKQotICAgICAgICBtX2xhcmdlSW5kaWNlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8TWFwVHlwZT4oKTsKKyAgICAgICAgbV9sYXJnZUluZGljZXMgPSBt
YWtlVW5pcXVlPE1hcFR5cGU+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWJzdHJhY3RIZWFw
PiYgZmllbGQgPSBtX2xhcmdlSW5kaWNlcy0+YWRkKGluZGV4LCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFmaWVsZCkgewotICAgICAgICBmaWVsZCA9IHN0ZDo6bWFrZV91bmlx
dWU8QWJzdHJhY3RIZWFwPigpOworICAgICAgICBmaWVsZCA9IG1ha2VVbmlxdWU8QWJzdHJhY3RI
ZWFwPigpOwogICAgICAgICBpbml0aWFsaXplKCpmaWVsZCwgaW5kZXgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggNWQwNGI3MmYwNDgzMWQw
NjMwMjMwNGQxZWI3ZTQ5MjlkNDgwNDI3Zi4uNDYzNWNjOTZmOTEwOTFmNzNmMDhkMWY3NTJiMDQ3
ZDEwNTNiZmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVz
dWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKIAogICAgIGlm
IChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKLSAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNl
dERpc2Fzc2VtYmxlcihzdGQ6Om1ha2VfdW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7
CisgICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXREaXNhc3NlbWJsZXIobWFrZVVuaXF1ZTxC
Mzo6QWlyOjpEaXNhc3NlbWJsZXI+KCkpOwogCiAgICAgewogICAgICAgICBHcmFwaFNhZmVwb2lu
dCBzYWZlcG9pbnQoc3RhdGUuZ3JhcGgsIHNhZmVwb2ludFJlc3VsdCk7CkBAIC03OCw3ICs3OCw3
IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9p
bnRSZXN1bHQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyT2Zmc2V0cyA9Ci0gICAgICAgIHN0ZDo6bWFrZV91
bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3Rl
ckF0T2Zmc2V0TGlzdCgpKTsKKyAgICAgICAgbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwogICAgIGlm
IChzaG91bGREdW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgZGF0YUxvZygiVW53aW5kIGluZm8g
Zm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwg
IjogIiwgKnJlZ2lzdGVyT2Zmc2V0cywgIlxuIik7CiAgICAgY29kZUJsb2NrLT5zZXRDYWxsZWVT
YXZlUmVnaXN0ZXJzKFdURk1vdmUocmVnaXN0ZXJPZmZzZXRzKSk7CkBAIC0xNDIsNyArMTQyLDcg
QEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2lu
dFJlc3VsdCkKICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxP
cGVyYXRpb25QdHJUYWc+KGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAK
LSAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAg
IHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZl
cj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAKICAgICBpZiAoc3Rh
dGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAg
ICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwpAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRS
ZXN1bHQpCiAgICAgCiAgICAgQjM6OlBDVG9PcmlnaW5NYXAgb3JpZ2luTWFwID0gc3RhdGUucHJv
Yy0+cmVsZWFzZVBDVG9PcmlnaW5NYXAoKTsKICAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9D
b2RlT3JpZ2luTWFwcGluZygpKQotICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2lu
TWFwKHN0ZDo6bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFw
QnVpbGRlcih2bSwgV1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlcikpOworICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1h
a2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2bSwg
V1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlcikp
OwogCiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gbGFiZWwgPSBzdGF0ZS5m
aW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oc3Rh
dGUucHJvYy0+ZW50cnlwb2ludExhYmVsKDApKTsKICAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlv
biA9IGxhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWls
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKaW5kZXggMTY1MzM1
MDljZDBiNDgyYzc0YmNhNjczMTg3NjNmMmUwZjA5ZGRmMS4uYzNmOTMzOTJmMjZlNmZjOTVmOWMy
Y2M1OTI5ZWQzNGM2YmMzMGMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExGYWlsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKIHZvaWQgZmFpbChTdGF0
ZSYgc3RhdGUpCiB7Ci0gICAgc3RhdGUuZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1h
a2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oc3RhdGUuZ3JhcGgubV9wbGFuKSk7CisgICAgc3Rh
dGUuZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4o
c3RhdGUuZ3JhcGgubV9wbGFuKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDA4NTQwNTZlYzdkMTYyYjExY2Rj
MjFjZDc4ZmUxNTE3ZjdhY2YzZWIuLjk1ZGI2OTYxZThlOTA3NzBjZDZlNTU2NzMwMjJiNDQ3NjNi
NTgwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMTY2LDcgKzE2
Niw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQudW50YWdSZXR1
cm5BZGRyZXNzKCk7CiAgICAgICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuanVtcCgp
KTsKIAotICAgICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZl
cj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgICAgICBs
aW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9B
bGxvY2F0ZSgpKSB7CiAgICAgICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgbGlu
ayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG1haW5QYXRoSnVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAg
IAotICAgICAgICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQs
IGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgbGlua0J1ZmZlciA9
IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CiAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAg
ICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCBhZjFiYTRiZjkwYThmZDBiYTI1MDJjNjQ3ZTJjMTcxNDEyMmRlN2Q0Li4wOWIzNDI3M2Ni
YjdjYWI0NGNkODYzZTk5YjI4NTkwZTg3Yzk0YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNTA4MCw3ICsxNTA4MCw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZm
ZXIubGluayhnZW5lcmF0b3JKdW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29kZUxvY2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHZtLT5nZXRDVElTdHViKGxhenlT
bG93UGF0aEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF6eVNsb3dQYXRoPiBsYXp5U2xvd1BhdGggPSBzdGQ6Om1ha2VfdW5pcXVl
PExhenlTbG93UGF0aD4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gbWFrZVVuaXF1ZTxMYXp5U2xv
d1BhdGg+KCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rZWRQ
YXRjaGFibGVKdW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihsaW5rQnVm
ZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlSnVtcCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCmluZGV4IDY1M2VjNmY2OTYwNDliNzUyYWMy
NGE3NzkzMTBkNGFkOTdiYjAzZGIuLjRhNDg0ZmE2ZDQ2NDMwZDcxZTU3MDA4YmYxZTk5ZjZjMjVi
ODQ4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC02MCwxMCAr
NjAsMTAgQEAgU3RhdGU6OlN0YXRlKEdyYXBoJiBncmFwaCkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZp
bmFsaXplcj4oZ3JhcGgubV9wbGFuKSk7CisgICAgZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplciht
YWtlVW5pcXVlPEpJVEZpbmFsaXplcj4oZ3JhcGgubV9wbGFuKSk7CiAgICAgZmluYWxpemVyID0g
c3RhdGljX2Nhc3Q8SklURmluYWxpemVyKj4oZ3JhcGgubV9wbGFuLmZpbmFsaXplcigpKTsKIAot
ICAgIHByb2MgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2NlZHVyZT4oKTsKKyAgICBwcm9jID0gbWFr
ZVVuaXF1ZTxQcm9jZWR1cmU+KCk7CiAKICAgICBwcm9jLT5zZXRPcmlnaW5QcmludGVyKAogICAg
ICAgICBbXSAoUHJpbnRTdHJlYW0mIG91dCwgQjM6Ok9yaWdpbiBvcmlnaW4pIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKaW5kZXggMjJkN2Zk
NjVkNWExNzU1YjViMmQzYjc4ZGRhNTVjMGQwMDdlMWNjYi4uMDIxYjBjZGI5ZGZhYzE4YjM2ODY0
MjhhOTgyM2YyODExMGJiNzlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29tcGxldGVTdWJzcGFjZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQWxsb2NhdG9yIENvbXBsZXRl
U3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgICAgIGRhdGFMb2co
IkNyZWF0aW5nIEJsb2NrRGlyZWN0b3J5L0xvY2FsQWxsb2NhdG9yIGZvciAiLCBtX25hbWUsICIs
ICIsIGF0dHJpYnV0ZXMoKSwgIiwgIiwgc2l6ZUNsYXNzLCAiLlxuIik7CiAgICAgCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlxdWVEaXJlY3RvcnkgPQotICAgICAgICBz
dGQ6Om1ha2VfdW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNz
KTsKKyAgICAgICAgbWFrZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNp
emVDbGFzcyk7CiAgICAgQmxvY2tEaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9y
eS5nZXQoKTsKICAgICBtX2RpcmVjdG9yaWVzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9y
eSkpOwogICAgIApAQCAtODgsNyArODgsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6
YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICBtX3NwYWNlLmFkZEJsb2NrRGlyZWN0
b3J5KGxvY2tlciwgZGlyZWN0b3J5KTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxB
bGxvY2F0b3I+IHVuaXF1ZUxvY2FsQWxsb2NhdG9yID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1
ZTxMb2NhbEFsbG9jYXRvcj4oZGlyZWN0b3J5KTsKKyAgICAgICAgbWFrZVVuaXF1ZTxMb2NhbEFs
bG9jYXRvcj4oZGlyZWN0b3J5KTsKICAgICBMb2NhbEFsbG9jYXRvciogbG9jYWxBbGxvY2F0b3Ig
PSB1bmlxdWVMb2NhbEFsbG9jYXRvci5nZXQoKTsKICAgICBtX2xvY2FsQWxsb2NhdG9ycy5hcHBl
bmQoV1RGTW92ZSh1bmlxdWVMb2NhbEFsbG9jYXRvcikpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAppbmRleCBhMDFiNWEyYjRhZWZkM2U1Mjk2OTc3YTVjODM4NDA0MmU1YTI5
NTZhLi45NzE5OWUxODZkZTcyZDc3Mjc5NzM1YzlkM2M5OTQwYzg1YzQ4YWY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMjg5LDE1ICsyODksMTUgQEAgSGVhcDo6SGVhcChW
TSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9tYXhFZGVuU2l6ZShtX21pbkJ5dGVz
UGVyQ3ljbGUpCiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAs
IG1fb2JqZWN0U3BhY2UodGhpcykKLSAgICAsIG1fbWFjaGluZVRocmVhZHMoc3RkOjptYWtlX3Vu
aXF1ZTxNYWNoaW5lVGhyZWFkcz4oKSkKLSAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCi0gICAgLCBtX211dGF0b3JT
bG90VmlzaXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKLSAg
ICAsIG1fbXV0YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQotICAgICwgbV9yYWNlTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+
KCkpCi0gICAgLCBtX2NvbnN0cmFpbnRTZXQoc3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3Ry
YWludFNldD4oKnRoaXMpKQorICAgICwgbV9tYWNoaW5lVGhyZWFkcyhtYWtlVW5pcXVlPE1hY2hp
bmVUaHJlYWRzPigpKQorICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihtYWtlVW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgIkMiKSkKKyAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKG1ha2VV
bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQorICAgICwgbV9tdXRhdG9yTWFya1N0YWNr
KG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3JhY2VNYXJrU3RhY2sobWFr
ZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fY29uc3RyYWludFNldChtYWtlVW5p
cXVlPE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykpCiAgICAgLCBtX2hhbmRsZVNldCh2bSkK
LSAgICAsIG1fY29kZUJsb2NrcyhzdGQ6Om1ha2VfdW5pcXVlPENvZGVCbG9ja1NldD4oKSkKLSAg
ICAsIG1faml0U3R1YlJvdXRpbmVzKHN0ZDo6bWFrZV91bmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+
KCkpCisgICAgLCBtX2NvZGVCbG9ja3MobWFrZVVuaXF1ZTxDb2RlQmxvY2tTZXQ+KCkpCisgICAg
LCBtX2ppdFN0dWJSb3V0aW5lcyhtYWtlVW5pcXVlPEpJVFN0dWJSb3V0aW5lU2V0PigpKQogICAg
ICwgbV92bSh2bSkKICAgICAvLyBXZSBzZWVkIHdpdGggMTBtcyBzbyB0aGF0IEdDQWN0aXZpdHlD
YWxsYmFjazo6ZGlkQWxsb2NhdGUgZG9lc24ndCBjb250aW51b3VzbHkgCiAgICAgLy8gc2NoZWR1
bGUgdGhlIHRpbWVyIGlmIHdlJ3ZlIG5ldmVyIGRvbmUgYSBjb2xsZWN0aW9uLgpAQCAtMzA1LDgg
KzMwNSw4IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
ZWRlbkFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVFZGVuVGlt
ZXIodGhpcykpCiAgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNyZW1lbnRhbFN3ZWVw
ZXIodGhpcykpKQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9wdFJlZigqbmV3IFN0
b3BJZk5lY2Vzc2FyeVRpbWVyKHZtKSkpCi0gICAgLCBtX3NoYXJlZENvbGxlY3Rvck1hcmtTdGFj
ayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQotICAgICwgbV9zaGFyZWRNdXRh
dG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBt
X3NoYXJlZENvbGxlY3Rvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQor
ICAgICwgbV9zaGFyZWRNdXRhdG9yTWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+
KCkpCiAgICAgLCBtX2hlbHBlckNsaWVudCgmaGVhcEhlbHBlclBvb2woKSkKICAgICAsIG1fdGhy
ZWFkTG9jayhCb3g8TG9jaz46OmNyZWF0ZSgpKQogICAgICwgbV90aHJlYWRDb25kaXRpb24oQXV0
b21hdGljVGhyZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkKQEAgLTMxNCw3ICszMTQsNyBAQCBIZWFw
OjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgbV93b3JsZFN0YXRlLnN0b3Jl
KDApOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbnVtYmVyT2ZQYXJhbGxlbFRocmVhZHMg
PSBoZWFwSGVscGVyUG9vbCgpLm51bWJlck9mVGhyZWFkcygpOyBpIDwgbnVtYmVyT2ZQYXJhbGxl
bFRocmVhZHM7ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZp
c2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQ
IiwgaSArIDEpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNpdG9y
ID0gbWFrZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRvQ1N0cmluZygiUCIsIGkgKyAxKSk7
CiAgICAgICAgIGlmIChPcHRpb25zOjpvcHRpbWl6ZVBhcmFsbGVsU2xvdFZpc2l0b3JzRm9yU3Rv
cHBlZE11dGF0b3IoKSkKICAgICAgICAgICAgIHZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11
dGF0b3IoKTsKICAgICAgICAgbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy5hcHBlbmQo
dmlzaXRvci5nZXQoKSk7CkBAIC0zMjMsMTcgKzMyMywxNyBAQCBIZWFwOjpIZWFwKFZNKiB2bSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRH
QygpKSB7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VTdG9jaGFzdGljTXV0YXRvclNjaGVkdWxl
cigpKQotICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b2NoYXN0
aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX3NjaGVk
dWxlciA9IG1ha2VVbmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0
aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1f
c2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2Ugc2ltdWxhdGUgdHVybmluZyBvZmYgY29uY3Vy
cmVudCBHQyBieSBtYWtpbmcgdGhlIHNjaGVkdWxlciBzYXkgdGhhdCB0aGUgd29ybGQKICAgICAg
ICAgLy8gc2hvdWxkIGFsd2F5cyBiZSBzdG9wcGVkIHdoZW4gdGhlIGNvbGxlY3RvciBpcyBydW5u
aW5nLgotICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNT
dG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyPigpOworICAgICAgICBtX3NjaGVkdWxlciA9IG1h
a2VVbmlxdWU8U3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyPigpOwogICAg
IH0KICAgICAKICAgICBpZiAoT3B0aW9uczo6dmVyaWZ5SGVhcCgpKQotICAgICAgICBtX3Zlcmlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJl
ck9mR0NDeWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbigpKTsKKyAgICAgICAgbV92ZXJpZmll
ciA9IG1ha2VVbmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRpb25zOjpudW1iZXJPZkdDQ3lj
bGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24oKSk7CiAgICAgCiAgICAgbV9jb2xsZWN0b3JTbG90
VmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogCkBAIC04OTksNyArODk5LDcg
QEAgc2l6ZV90IEhlYXA6OnByb3RlY3RlZE9iamVjdENvdW50KCkKIAogc3RkOjp1bmlxdWVfcHRy
PFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxU
eXBlQ291bnRTZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgZm9yRWFjaFByb3RlY3RlZENlbGwo
CiAgICAgICAgIFsmXSAoSlNDZWxsKiBjZWxsKSB7CiAgICAgICAgICAgICByZWNvcmRUeXBlKCp2
bSgpLCAqcmVzdWx0LCBjZWxsKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiBIZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIAogc3RkOjp1
bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6b2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxU
eXBlQ291bnRTZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0
ZXJhdGlvblNjb3BlKCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgK
ICAgICAgICAgaXRlcmF0aW9uU2NvcGUsCkBAIC0yODU2LDcgKzI4NTYsNyBAQCB2b2lkIEhlYXA6
OmFkZENvcmVDb25zdHJhaW50cygpCiAgICAgICAgIH0sCiAgICAgICAgIENvbnN0cmFpbnRWb2xh
dGlsaXR5OjpTZWxkb21HcmV5ZWQpOwogICAgIAotICAgIG1fY29uc3RyYWludFNldC0+YWRkKHN0
ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+KCp0aGlzKSk7CisgICAg
bV9jb25zdHJhaW50U2V0LT5hZGQobWFrZVVuaXF1ZTxNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWlu
dD4oKnRoaXMpKTsKIH0KIAogdm9pZCBIZWFwOjphZGRNYXJraW5nQ29uc3RyYWludChzdGQ6OnVu
aXF1ZV9wdHI8TWFya2luZ0NvbnN0cmFpbnQ+IGNvbnN0cmFpbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcElubGluZXMuaAppbmRleCA1YjY5Y2Q1ZTM1ZjYyYjUwNjYzYTljYmRjNzM5
NGQxYmQ2N2FkMWQ4Li5lMWViNmM3ODMzZDQ4NTg3MWE5YzUzM2NmZDQ3MzFjNzVmOWIxMWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTIxNyw3ICsyMTcs
NyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZWNyZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRl
ZCgpCiBpbmxpbmUgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBIZWFwOjptYXJrTGlz
dFNldCgpCiB7CiAgICAgaWYgKCFtX21hcmtMaXN0U2V0KQotICAgICAgICBtX21hcmtMaXN0U2V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7Cisg
ICAgICAgIG1fbWFya0xpc3RTZXQgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRC
dWZmZXIqPj4oKTsKICAgICByZXR1cm4gKm1fbWFya0xpc3RTZXQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggNWI5
YWM4OWRhYmYwNGEwNjE0ZGMxMGZiYmFmMTZjMGY0YTQ5OWY3ZS4uMmQyYmM4ZmI5YjI3ZmU5Zjli
MWI1YmU1NGNiNzUxZjgzZTBkM2QwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBIZWFw
U25hcHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KCkKIAogICAgIFByZXZlbnRDb2xsZWN0aW9u
U2NvcGUgcHJldmVudENvbGxlY3Rpb25TY29wZShtX3Byb2ZpbGVyLnZtKCkuaGVhcCk7CiAKLSAg
ICBtX3NuYXBzaG90ID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIu
bW9zdFJlY2VudFNuYXBzaG90KCkpOworICAgIG1fc25hcHNob3QgPSBtYWtlVW5pcXVlPEhlYXBT
bmFwc2hvdD4obV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNob3QoKSk7CiAgICAgewogICAgICAg
ICBtX3Byb2ZpbGVyLnNldEFjdGl2ZVNuYXBzaG90QnVpbGRlcih0aGlzKTsKICAgICAgICAgbV9w
cm9maWxlci52bSgpLmhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAppbmRleCBiOGU0MzAx
OTFlNmIxZGMyOWFhNWMwZjEwY2RkNmU5YmIxOThmZGE5Li43YzJlZDI0MDJmZDczMDFmYzA5OWE4
ZGZiNWQzYzMzNmFlYWQxMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0LmNwcApAQCAtODcsNyArODcsNyBAQCBORVZFUl9JTkxJTkUgQml0bWFwPE1hcmtlZEJsb2Nr
OjphdG9tc1BlckJsb2NrPiogSXNvQ2VsbFNldDo6YWRkU2xvdyhzaXplX3QgYmxvYwogICAgIGF1
dG8mIGJpdHNQdHJSZWYgPSBtX2JpdHNbYmxvY2tJbmRleF07CiAgICAgYXV0byogYml0cyA9IGJp
dHNQdHJSZWYuZ2V0KCk7CiAgICAgaWYgKCFiaXRzKSB7Ci0gICAgICAgIGJpdHNQdHJSZWYgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4+KCk7Cisg
ICAgICAgIGJpdHNQdHJSZWYgPSBtYWtlVW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQ
ZXJCbG9jaz4+KCk7CiAgICAgICAgIGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgICAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgICAgICBtX2Jsb2Nrc1dpdGhCaXRzW2Jsb2NrSW5k
ZXhdID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1
YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcApp
bmRleCBkNTEwMDBlYmE4N2YzMWRlNDgxYmVkMDhhNWYyZmVkOGE2MzlmZjk5Li5jZDNlN2U1NjE1
NDU2NmRjZjhjMTUxNjNhMTViNzJmMjc2OGYyOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIElzb1N1YnNwYWNlOjpJc29T
dWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxU
eXBlLCBzCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fZGlyZWN0b3J5KCZoZWFwLCBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKICAgICAs
IG1fbG9jYWxBbGxvY2F0b3IoJm1fZGlyZWN0b3J5KQotICAgICwgbV9pc29BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkK
KyAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihtYWtlVW5pcXVlPElzb0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3I+KCkpCiB7CiAgICAgaW5pdGlhbGl6ZShoZWFwQ2VsbFR5cGUsIG1faXNv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCBiM2FiZDJjNTIyNGZj
ZTNlNWNlMTJjNGYxNjNlZDQ4MjNkYWU2OThlLi4xNzgwYzA4YTQ3MGYyNzYyMzE2MzdlZjY4MTE3
YzlhNGUzMmMxZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
aW5nQ29uc3RyYWludFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTZXQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTWFya2luZ0NvbnN0
cmFpbnRTZXQ6OmRpZFN0YXJ0TWFya2luZygpCiAKIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6
OmFkZChDU3RyaW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZv
aWQoU2xvdFZpc2l0b3ImKT4gZnVuY3Rpb24sIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxp
dHksIENvbnN0cmFpbnRDb25jdXJyZW5jeSBjb25jdXJyZW5jeSwgQ29uc3RyYWludFBhcmFsbGVs
aXNtIHBhcmFsbGVsaXNtKQogewotICAgIGFkZChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtp
bmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdURk1vdmUobmFtZSksIFdU
Rk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20pKTsK
KyAgICBhZGQobWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJy
ZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0
eSwgY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtKSk7CiB9CiAKIHZvaWQgTWFya2luZ0NvbnN0cmFp
bnRTZXQ6OmFkZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4MmJlM2JiYjQ0
Y2I2YzU3NzZiOGVjZjdmYTBjOTQwZDVkNWE1ODI1Li41M2E5MWEyM2MxZDg5MjkxOGVlNDI5NDFh
NjVmNTI3ODY3ZDQzMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5
cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzCiAKICAgICBTdHJpbmcgbWVzc2FnZTsK
ICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKLSAgICBt
X2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhl
YykpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6Y291bnQoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYgdGl0bGUpCiAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUaXRsZSA9PSB0aXRsZSkg
ewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5k
IGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRs
ZS5pc0VtcHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0
cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAg
ICAgICAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgICAg
ICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2Zp
bGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgU3RyaW5nJiB0aXRsCiAKICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBm
cm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNF
bXB0eSgpID8gIk5vIHByb2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIs
IHRpdGxlLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCB3YXJuaW5nKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykp
OwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c3RhcnRDb25zb2xlUHJv
ZmlsZSgpCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGll
bnQ6OnNjcmVlbnNob3QoRXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp3YXJuVW5pbXBsZW1lbnRlZChjb25zdCBTdHJp
bmcmIG1ldGhvZCkKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ldGhvZCArICIgaXMgY3VycmVu
dGx5IGlnbm9yZWQgaW4gSmF2YVNjcmlwdCBjb250ZXh0IGluc3BlY3Rpb24uIjsKLSAgICBtX2Nv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3Nh
Z2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYzhkYTUyZWZkMTNjNDkxY2NhZTYzOTVlMDc0YzQ2
NDRlNzBjYzBhNy4uYmRiZDMxZDYzMTJiMmMwNTZkN2M0NzgxNWRjNjE1ZDEyMjZkOTI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjMsNyArNjMsNyBA
QCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKLSAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMs
IEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0
Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIoZ2xvYmFs
T2JqZWN0KQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkp
CkBAIC03MSwxMSArNzEsMTEgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoKIHsKICAgICBhdXRv
IGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4dCk7CisgICAgYXV0
byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4
dCk7CiAgICAgbV9jb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xl
QWdlbnQpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50PihtX2NvbnNvbGVBZ2VudCk7CiAKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRj
aC0+c3RhcnQoKTsKIH0KQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6cmVwb3J0QVBJRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhj
ZQogICAgICAgICAgICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBTdHJpbmcoKSwgMCwgMCk7CiAgICAgfQogCi0gICAgbV9jb25zb2xlQWdlbnQtPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9y
TWVzc2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
V1RGTW92ZShjYWxsU3RhY2spKSk7CiB9CiAKIENvbnNvbGVDbGllbnQqIEpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29uc29sZUNsaWVudCgpIGNvbnN0CkBAIC0yODAsNyArMjgw
LDcgQEAgSW5zcGVjdG9yQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5zdXJlSW5zcGVjdG9yQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkgewog
ICAgICAgICBhdXRvIGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGlu
c3BlY3RvckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oY29udGV4dCk7
CisgICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckFnZW50
Pihjb250ZXh0KTsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Lmdl
dCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwog
ICAgIH0KQEAgLTI5MSw3ICsyOTEsNyBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50JiBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQoKQogewogICAg
IGlmICghbV9kZWJ1Z2dlckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGpzQWdlbnRD
b250ZXh0KCk7Ci0gICAgICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7Cisg
ICAgICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7CiAgICAgICAgIG1fZGVidWdnZXJB
Z2VudCA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fY29uc29sZUNsaWVudC0+c2V0
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChtX2RlYnVnZ2VyQWdlbnQpOwogICAgICAgICBtX2FnZW50
cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CkBAIC0zMjcsMjAgKzMyNywyMCBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygp
CiAKICAgICBlbnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNvbnRleHQpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4o
Y29udGV4dCkpOwogCiAgICAgZW5zdXJlRGVidWdnZXJBZ2VudCgpOwogCi0gICAgYXV0byBzY3Jp
cHRQcm9maWxlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBt
YWtlVW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRleHQpOwogICAgIG1f
Y29uc29sZUNsaWVudC0+c2V0SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChzY3JpcHRQcm9m
aWxlckFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShzY3JpcHRQ
cm9maWxlckFnZW50UHRyKSk7CiAKLSAgICBhdXRvIGhlYXBBZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9ySGVhcEFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGhlYXBBZ2VudCA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9ySGVhcEFnZW50Pihjb250ZXh0KTsKICAgICBpZiAobV9jb25zb2xl
QWdlbnQpCiAgICAgICAgIG1fY29uc29sZUFnZW50LT5zZXRJbnNwZWN0b3JIZWFwQWdlbnQoaGVh
cEFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShoZWFwQWdlbnQpKTsK
IAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0QXVk
aXRBZ2VudD4oY29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEpTR2xv
YmFsT2JqZWN0QXVkaXRBZ2VudD4oY29udGV4dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCBjMGI1YzlhYWQxOGMwOGNlZGRjMzY5NjZiZjA0
Njg1MTQxNzYyNjQzLi40MTdlNzc1ZmI4MDI0OWMwNDAzMTM3YTgyNzgyMTM3MzI3ZDMzMmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQWdlbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkK
ICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSW5zcGVjdG9yIl9zKQogICAgICwgbV9lbnZpcm9u
bWVudChjb250ZXh0LmVudmlyb25tZW50KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRl
eHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAKaW5kZXggN2VkYmM4MDY2MGYzNmQ2YTgxYWE5MWZiOGZhM2ZkZGRlZGFlNmYyNi4u
NWQyNGM2OWU2YmY0NWQ3MmZiMGJkYTUzYjRjNDU3NTk4NjEzY2JjYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZXhw
aXJlQ29uc29sZU1lc3NhZ2VzU3RlcCA9IDEwOwogSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJDb25zb2xlIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29u
dGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDb25zb2xl
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0YXJ0VGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmUKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/
CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwg
IlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjpt
YWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5n
LCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgfQogfQog
CkBAIC0xNTksMTQgKzE1OSwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6bG9nVGlt
aW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLAogICAgIGlmIChp
dCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8g
dGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0g
bWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAg
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgYWRk
TWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25kcyBl
bGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lk
dGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBhZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3Nh
Z2UsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMTg0LDE0ICsxODQsMTQgQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwKICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhN
RTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAg
ICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2Vz
IG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3Rh
Y2spKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZh
bHVlOwogICAgIFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRU
aW1lOwogICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsK
LSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VM
ZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAKICAgICBtX3RpbWVzLnJlbW92ZShpdCk7CiB9CkBA
IC0yMjQsNyArMjI0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIC8vIEZJWE1FOiBXZWIg
SW5zcGVjdG9yIHNob3VsZCBoYXZlIGEgYmV0dGVyIFVJIGZvciBjb3VudGVycywgYnV0IGZvciBu
b3cgd2UganVzdCBsb2cgYW4gdXBkYXRlZCBjb3VudGVyIHZhbHVlLgogCiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
LSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RGVidWcsIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywg
MSkpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RGVidWcsIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywg
MSkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0yMzYsNyArMjM2LDcgQEAg
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwKICAgICBpZiAoaXQgPT0gbV9jb3VudHMuZW5kKCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2Fs
aXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJDb3VudGVyIFwi
IiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywg
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fy
bmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IGU1ZjI0ODJhM2NhYTA4YWE4MTY0NWZhOGM3OWM1MjliYTQzODBkMGEuLjI1ZjFkM2U3MjgxYzZi
MGZiODMzMGZmMTM3ODczNjQzZWJjNjBlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVh
a3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvCiAKIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEZWJ1Z2dlciJfcykKLSAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKERlYnVnZ2VyQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1f
c2NyaXB0RGVidWdTZXJ2ZXIoY29udGV4dC5lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigp
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1h
bmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCBiNTM1ZmY2MTkyYWFjZWZjNzli
NGY2Y2Q5M2RmMTIwMWEzNzE0OGFjLi41ODJjMzVkMzY3ZGZlMWU0ZjdkYzRlOWE1Njg0ZGNhMmE0
ZTNiNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiBJbnNwZWN0b3JIZWFwQWdlbnQ6Okluc3BlY3RvckhlYXBBZ2Vu
dChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkhlYXAi
X3MpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0
TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SGVh
cEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihIZWFwQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAg
ICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggNTZmYzFiNzk4ZGEwZWVlZWEwMjMz
MWVkNTI1NGE5NTAyMTAwNTg3NC4uY2JhZDgxZDY5OTQ0MGE3MzNiMGFmMDQxNjk0YTg2Y2E5ZTZl
OGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQ6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJTY3JpcHRQcm9maWxlciJfcykKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UHJvZmlsZXJG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFNj
cmlwdFByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKICAgICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcAppbmRleCAzYWNhNDEwNTEwZmU1MDBmMDVi
ZmJhYWM0NjdmZmRhY2NiMjFjNTI0Li45MzUwNjhjN2FlMTE5NzEwNTQ0YzFmNzY3OTgyMmRmYjY2
ZTU2Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6SW5zcGVjdG9y
VGFyZ2V0QWdlbnQoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0
Y2hlciYgYmFja2VuZERpc3BhdGNoZXIpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdl
dCJfcykKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFyZ2V0
RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGUzMjlhM2I0M2NkNjA5NjVkOWY3Nzg1YTQ4
MjIwMTFhYjM2NmZhNTMuLjliM2YzNzlkNWU1YTQ5MGRiZTM3NWM3MmFjOTlmYTcyMGI5YWNjZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtNTgsNyAr
NTgsNyBAQCBJbmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNj
cmlwdENhbGxTdGFjaygmc3RhdGUpLCAwKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAppbmRleCAxNDVkMDUxNmI4
ZTM5Njg4NzhkOTJjYjU5NGFhNTk5YmFmYTM5ZDMyLi4zYjdjM2UyMWQzMWMxYzJmNWI2ZDFiYTBj
MTZmNDg4ODNlNmNmMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQu
Y3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudDo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSlNBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkKLSAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVudGltZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1f
Z2xvYmFsT2JqZWN0KGNvbnRleHQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXgg
NzEwMTY2OGE5N2M4NzQ0ODEyZjQ2NTZmMTZlMGI3ZGQ1OTRmMWE2MC4uY2M5NjQwMDU2NzlkYmZj
ZDRmZTAyOTA2YmM5M2MyM2IyYzgyZWNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC0xNDQsMTEgKzE0NCwxMSBAQCBP
cHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVh
dGVDbGllbnQoUGxhdGZvcm1Tb2NrZQogCiAgICAgU29ja2V0OjpzZXR1cChzb2NrZXQpOwogCi0g
ICAgYXV0byBjb25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+
KCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+
KCk7CiAKICAgICBjb25uZWN0aW9uLT5wb2xsID0gU29ja2V0OjpwcmVwYXJlUG9sbGluZyhzb2Nr
ZXQpOwogICAgIGNvbm5lY3Rpb24tPnNvY2tldCA9IHNvY2tldDsKLSAgICBjb25uZWN0aW9uLT5w
YXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZl
clNpemUpOworICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IG1ha2VVbmlxdWU8TWVzc2FnZVBhcnNl
cj4oaWQsIFNvY2tldDo6QnVmZmVyU2l6ZSk7CiAgICAgY29ubmVjdGlvbi0+cGFyc2VyLT5zZXRE
aWRQYXJzZU1lc3NhZ2VMaXN0ZW5lcihbdGhpc10oQ29ubmVjdGlvbklEIGlkLCBWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKSB7CiAgICAgICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKICAgICAgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoaWQsIFdU
Rk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQuaAppbmRleCA3MGYyZDdhNDgxMzQ3MGY4MTM3MzJiM2I5NzdiNWI3M2E0MTk2
MGI1Li4zMjA0MDBmZDViM2NkYjJjNGIxNWRiZGM5MzA0NmJiZmQwMGNhZGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludD4gY3JlYXRlKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGll
bnQqIGluc3BlY3RvckNsaWVudCwgY29uc3QgY2hhciogbmFtZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PihpbnNw
ZWN0b3JDbGllbnQsIG5hbWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKICAgICB9CiAKICAg
ICBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludChSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9u
Q2xpZW50KiwgY29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5l
cmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IDUwYzhmNmZkZTdjZTY4OThiMDgyODE0OTk3YmU1N2Q3
MzAxOWIyNTMuLjEwMTc4OWUxZGY3NTQ4MWY2MWU4YzAwZjIxMWFjYTc0OWI1MDU4ZWEgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29i
amNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTEz
Niw4ICsxMzYsOCBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzOgogICAgIFtfJHt2YXJp
YWJsZU5hbWVQcmVmaXh9SGFuZGxlciByZWxlYXNlXTsKICAgICBfJHt2YXJpYWJsZU5hbWVQcmVm
aXh9SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7
ZG9tYWluTmFtZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVj
dG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2Rv
bWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0
ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdU
Rk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13
aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxh
dGZvcm0uanNvbi1yZXN1bHQKaW5kZXggM2U5OTE0NzFkMzI0YTM1NTE2OTI4ZTQzZTk0MTA4YjQ0
ODczMTIwOC4uYjA0YTg1MGRmMTE1MmQ2ZmRhNTk2MmRmMzdjMmU0OWUxZWJkOTVlYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9l
eHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC03NzEsOCArNzcx
LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmtIYW5kbGVyIHJl
bGVhc2VdOwogICAgIF9uZXR3b3JrSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5l
dHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7Cisg
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0
d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9z
LCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250
cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRl
eCBhNzE0ZmIxMzE4MzI5M2QxODMyZmM1ODFlNmM1MzM3ODY4MDJkNTcyLi5jMGUxNzMzN2ZkNGE3
OTg4MzBlODVkMjllODVkOGVkMzAyMGNhNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTE4OSw4ICsxMTg5LDggQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsKICAg
ICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2Ui
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0
byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1h
a2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJv
bGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1
cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA1M2JkNTUzYjdiYTc0ZGRkMjllMjU1MWNj
MGI4NGZhNDMwNzE0Y2FlLi5hZWQwN2I3NWU4Yjg4OGRkNTkzMzkwYWZhMjFkMmM4OTBkZGZjNTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1j
YWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0xMDY4LDggKzEwNjgsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2Vd
OwogICAgIF9kYXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRh
YmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNl
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKaW5kZXggNjc4YzZhYWE4NWFjYTM4
NDI0OGI5OTI5MDM0Y2NmMDk0MTE4ZGVlNy4uMWFkY2JkM2ZkMmFjYjljYTE0NjFjMzA4ZTQ1YzQ5
MmVjM2UwMzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CkBAIC03ODIs
OCArNzgyLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkFIYW5k
bGVyIHJlbGVhc2VdOwogICAgIF9kb21haW5BSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAK
LSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNw
ZWN0b3JEb21haW5BQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERv
bWFpbkFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVy
Pj4oIkRvbWFpbkEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVj
dG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5BQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21h
aW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAg
IF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsK
IH0KIApAQCAtODAwLDggKzgwMCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAg
W19kb21haW5CSGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWluQkhhbmRsZXIgPSBbaGFuZGxl
ciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAg
ICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRj
aGFibGVBZ2VudDxEb21haW5CQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNr
ZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5CIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlx
dWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAg
YXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5CQmFja2VuZERpc3Bh
dGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3Bh
dGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVy
bmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5n
LWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4IGY2YzVlZGNjYjkyODVhZjQ4YzZkZWI5ODQy
MmE3MjM2Yjg3MDJkNGUuLmEzZTI3ZGYzOGNlYWZiYjNjNDUxZTEzYjYxMTllMmU1NGMzZDJhOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdApAQCAtMTAzOSw4ICsxMDM5LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKICAgICBbX25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0
ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwg
V1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRj
aGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0
d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFB
Z2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKQEAgLTEwNTcsOCArMTA1Nyw4IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrM0hhbmRsZXIgcmVsZWFz
ZV07CiAgICAgX25ldHdvcmszSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRv
IGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0Jh
Y2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oIk5l
dHdvcmszIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwor
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29y
azMiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAg
X2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Vu
dW0tdmFsdWVzLmpzb24tcmVzdWx0CmluZGV4IDRkOTRhZDk0YWQ4NTFmNTg1ZjQ4ZTkxMTVlM2Jl
Y2NmOTdiN2FkNWYuLmJkNmI5ODE1Zjc2MDFhZTFkMGZlZGMyNmM0NTQzNWJhNDNmNjFlNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0t
dmFsdWVzLmpzb24tcmVzdWx0CkBAIC04MTUsOCArODE1LDggQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKICAgICBbX2NvbW1hbmREb21haW5IYW5kbGVyIHJlbGVhc2VdOwogICAgIF9jb21t
YW5kRG9tYWluSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
Pj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpD
SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFn
ZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDZmNmJm
MzYyNTdhZTllZWYwNWYxYmYyNjczZTYxMTNmM2JjZTg5ODAuLjVjYmNjYmZlZDUzYzRiZjM0MTM2
Zjc2OGVkYTU5ZmZiNDkwNzBiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMt
d2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21h
aW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTc5OCw4ICs3OTgsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazFIYW5kbGVyIHJlbGVhc2Vd
OwogICAgIF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsx
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhw
ZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggM2U5
OTE0NzFkMzI0YTM1NTE2OTI4ZTQzZTk0MTA4YjQ0ODczMTIwOC4uYjA0YTg1MGRmMTE1MmQ2ZmRh
NTk2MmRmMzdjMmU0OWUxZWJkOTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1h
Yy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRm
b3JtLmpzb24tcmVzdWx0CkBAIC03NzEsOCArNzcxLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKICAgICBbX25ldHdvcmtIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrSGFuZGxl
ciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRl
TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RG
TW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVy
ID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0
ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdU
Rk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmlu
ZGV4IDA1ZjcwZjFhZWFmNGM0ZDlmNTJjMTA2YWI2NmRiOWVjZDJlYWI4YmUuLjk5ZThhNDdmZDVl
MGMyMDdlNzI3Yjg2ZmUyMzYxOTA1N2I2NTAyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKQEAgLTY1NCw3ICs2NTQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJ
VENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICB9CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkgfHwgKG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAm
JiBPcHRpb25zOjpkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJvZmlsZXIoKSkpKQotICAgICAgICBt
X2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGlzYXNzZW1ibGVyPihtX2NvZGVC
bG9jayk7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxKSVREaXNhc3NlbWJs
ZXI+KG1fY29kZUJsb2NrKTsKICAgICBpZiAoVU5MSUtFTFkobV92bS0+bV9wZXJCeXRlY29kZVBy
b2ZpbGVyKSkgewogICAgICAgICBtX2NvbXBpbGF0aW9uID0gYWRvcHRSZWYoCiAgICAgICAgICAg
ICBuZXcgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKApAQCAtOTAxLDcgKzkwMSw3IEBAIENvbXBpbGF0
aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENU
b0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92
ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKSk7CisgICAgICAgIG1f
Y29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2lu
TWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsK
ICAgICAKICAgICBDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJlc3VsdCA9IEZJTkFMSVpFX0NPREUo
CiAgICAgICAgIHBhdGNoQnVmZmVyLCBKU0VudHJ5UHRyVGFnLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDE2YmY3MGQ4MDE3NDQyMzA1MDJhMmQ4YjE5N2NkNDAx
YzgwMjRmMzguLjViZGY4MzA0NjUwNDM5OTRlMTFiYWZmZWQ1MmJiNzg1YzFiYTBhNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBKSVRUaHVua3M6OkpJVFRodW5rcygpCi0gICAgOiBtX2hvc3RGdW5j
dGlvblN0dWJNYXAoc3RkOjptYWtlX3VuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQorICAg
IDogbV9ob3N0RnVuY3Rpb25TdHViTWFwKG1ha2VVbmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4o
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZTM4OGZi
MGU2MjcwOGIzNGVjYjk3MWU5NDZiNDZiMTkzYzRjYWUzYi4uOGY5YTg2NGU0ZmU4NjI2YTFmZWZj
MGMzMDdjOWU0NjU2NjJmNWE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC0xMDkyLDcgKzEwOTIsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENhbGxGcmFtZVNodWZmbGVyPiBmcmFtZVNodWZmbGVyOwogICAgIGlmIChj
YWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVChjYWxsTGlu
a0luZm8uaXNUYWlsQ2FsbCgpKTsKLSAgICAgICAgZnJhbWVTaHVmZmxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZXI+KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVm
ZmxlRGF0YSgpKTsKKyAgICAgICAgZnJhbWVTaHVmZmxlciA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1l
U2h1ZmZsZXI+KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKTsKICNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICAvLyBXZSB3b3VsZCBoYXZlIGFscmVhZHkgY2hl
Y2tlZCB0aGF0IHRoZSBjYWxsZWUgaXMgYSBjZWxsLCBhbmQgd2UgY2FuCiAgICAgICAgIC8vIHVz
ZSB0aGUgYWRkaXRpb25hbCByZWdpc3RlciB0aGlzIGJ1eXMgdXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IDQxMjJmYmVkMjJlZTE1NTIzZDE0ZTRhODc5YWJhMWFiODQ3ODZhMDcuLjcwMmQzNjk0
ZDlmNzY4ODQyMGYwY2RhYmQxMGU4ODhhNzMzZjI4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC0yOTY5LDcgKzI5NjksNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25z
LCBib29sIGlzV29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAgICBKU0xvY2tIb2xkZXIg
bG9ja2VyKHZtKTsKIAogICAgICAgICBpZiAob3B0aW9ucy5tX3Byb2ZpbGUgJiYgIXZtLm1fcGVy
Qnl0ZWNvZGVQcm9maWxlcikKLSAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CisgICAgICAgICAgICB2
bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBtYWtlVW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4o
dm0pOwogCiAgICAgICAgIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBH
bG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBvcHRpb25zLm1fYXJn
dW1lbnRzKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVk
KG9wdGlvbnMubV9lbmFibGVSZW1vdGVEZWJ1Z2dpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCmluZGV4IGY4ZGJlNzE5NmYxMTE3MTZkMGE1OGY3ZjU3ZTNmOGY2N2I3
YTJhY2YuLmExNjRmZDkwM2YzNmU5NDIwYTczNjRlZjQyN2M2YzJmZmUzMjJjZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlCiAgICAgLCBtX2ltbWVkaWF0ZVBhcmVudEFsbG93c0Z1bmN0aW9u
RGVjbGFyYXRpb25JblN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fZGVidWdnZXJQYXJzZURhdGEo
ZGVidWdnZXJQYXJzZURhdGEpCiB7Ci0gICAgbV9sZXhlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGV4
ZXJUeXBlPih2bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOworICAgIG1fbGV4ZXIgPSBtYWtl
VW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKICAgICBtX2xl
eGVyLT5zZXRDb2RlKHNvdXJjZSwgJm1fcGFyc2VyQXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2Nh
dGlvbi5saW5lID0gc291cmNlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCk7CiAgICAgbV90b2tl
bi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA2OWFhMGJjMTkwYWY2NzgzZDg5MjhjMzU5
YWEzYjEwYmIxZmJkODczLi4wYTVlZGU0Yjg0MjVjZmQxYjMxN2M3NmM1MWVhNzM3ODE3ODBiNTIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIwNCw3ICsyMDQsNyBA
QCBzdHJ1Y3QgU2NvcGUgewogICAgIHZvaWQgcHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxh
YmVsLCBib29sIGlzTG9vcCkKICAgICB7CiAgICAgICAgIGlmICghbV9sYWJlbHMpCi0gICAgICAg
ICAgICBtX2xhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8TGFiZWxTdGFjaz4oKTsKKyAgICAgICAg
ICAgIG1fbGFiZWxzID0gbWFrZVVuaXF1ZTxMYWJlbFN0YWNrPigpOwogICAgICAgICBtX2xhYmVs
cy0+YXBwZW5kKFNjb3BlTGFiZWxJbmZvIHsgbGFiZWwtPmltcGwoKSwgaXNMb29wIH0pOwogICAg
IH0KIApAQCAtMTk0MSw3ICsxOTQxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICAg
ICAgZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudExpbmVTdGFy
dE9mZnNldCgpOwogICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1
cnJlbnRPZmZzZXQoKTsKICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gZW5kTG9jYXRpb24u
c3RhcnRPZmZzZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0gICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwKKyAgICAgICAg
cmVzdWx0ID0gbWFrZVVuaXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuZExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhcnRDb2x1bW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckFyZW5hLmgKaW5kZXggZGYxN2JlNTM2NjNlN2NiN2I3MGM0ODc3MGY5YTA1MjljZjMz
YTdlZS4uNDEwMDA2ZDkyNzUxY2U5NmI5MmNiOTYyNTYzNWVhN2NmNzhlYzRkOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtMTgwLDcgKzE4MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyQXJlbmEmIGlkZW50aWZpZXJBcmVu
YSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSAoIW1faWRlbnRpZmllckFy
ZW5hKSkKLSAgICAgICAgICAgICAgICBtX2lkZW50aWZpZXJBcmVuYSA9IHN0ZDo6bWFrZV91bmlx
dWU8SWRlbnRpZmllckFyZW5hPigpOworICAgICAgICAgICAgICAgIG1faWRlbnRpZmllckFyZW5h
ID0gbWFrZVVuaXF1ZTxJZGVudGlmaWVyQXJlbmE+KCk7CiAgICAgICAgICAgICByZXR1cm4gKm1f
aWRlbnRpZmllckFyZW5hOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAppbmRleCAwNTAzMmI1ZDEz
MTA4YzBlYjYyMGU5ZGFlODIwY2VmN2FjNzUzMThjLi4zNTcxMWI1ZmE2NDI2OWU2Nzc0YWI3MGUy
MWRkNTAyNTE2OWM4ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCkBAIC03OSw3ICs3OSw3IEBAIEV4ZWN1dGlv
bkNvdW50ZXIqIENvbXBpbGF0aW9uOjpleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0
YWNrJiBvcmlnaW4pCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4ZWN1dGlvbkNvdW50ZXI+JiBj
b3VudGVyID0gbV9jb3VudGVycy5hZGQob3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgaWYgKCFjb3VudGVyKQotICAgICAgICBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxF
eGVjdXRpb25Db3VudGVyPigpOworICAgICAgICBjb3VudGVyID0gbWFrZVVuaXF1ZTxFeGVjdXRp
b25Db3VudGVyPigpOwogCiAgICAgcmV0dXJuIGNvdW50ZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggNzBjNzE0NzMzMjQ0NDA4MDc4NzkzNDAx
OTg2NjczYzk3ZTFlYTgzZC4uYTY0ZGUzZmRkNjYyNTUxOGFjNWQxMjZjZWFjNzhiNmYyMTI1YTRm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTc0LDcgKzE3
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IGdldFN0YWNrVHJhY2Uo
RXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2JqCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgc2l6ZV90IGZyYW1lc1RvU2tpcCA9IHVzZUN1cnJlbnRGcmFtZSA/IDAgOiAxOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RhY2tGcmFt
ZT4+KCk7CiAgICAgdm0uaW50ZXJwcmV0ZXItPmdldFN0YWNrVHJhY2Uob2JqLCAqc3RhY2tUcmFj
ZSwgZnJhbWVzVG9Ta2lwLCBnbG9iYWxPYmplY3QtPnN0YWNrVHJhY2VMaW1pdCgpLnZhbHVlKCkp
OwogICAgIGlmICghc3RhY2tUcmFjZS0+aXNFbXB0eSgpKQogICAgICAgICBBU1NFUlRfVU5VU0VE
KGV4ZWMsIGV4ZWMgPT0gdm0udG9wQ2FsbEZyYW1lIHx8IGV4ZWMtPmlzR2xvYmFsRXhlYygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCmluZGV4IDQzOWUyMDliMGE1ZjhmYjgyOWI3OTE5NzU3NDg4YzQxNTYzNDI3M2YuLmVm
MmU4MzA4NzQxYjg4NTJlNTYyMzI2Zjk2MjU3YzlkMDI5MzVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9t
R2xvYmFsQ29kZSgKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOwot
ICAgIGF1dG8gcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgIGF1
dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJhcmVEYXRhLT5tX2xp
bmVDb3VudCA9IGxpbmVDb3VudCgpOwogICAgIHJhcmVEYXRhLT5tX2VuZENvbHVtbiA9IGVuZENv
bHVtbigpOwogICAgIHJhcmVEYXRhLT5tX3BhcmFtZXRlcnNTdGFydE9mZnNldCA9IHBhcmFtZXRl
cnNTdGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5oCmluZGV4IDQ2MjM2NDFjNTk4ZTNlYmI1ZmJhNmJjMDIzNzI2NGU1MDUy
ZmQxNzkuLjUyYjI4YjEzYzdlMmUyNWQyMWJiYmFiM2FkMzFkNWI2YmMwY2RlZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKQEAgLTE1
Niw3ICsxNTYsNyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhOjpBbGxvY2F0aW9uUHJvZmlsZUNs
ZWFyaW5nV2F0Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaAogaW5saW5lIFdhdGNocG9pbnQq
IEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBv
aW50KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaGFzQWxsb2NhdGlvblByb2ZpbGVDbGVhcmlu
Z1dhdGNocG9pbnQoKSk7Ci0gICAgbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+
KHRoaXMpOworICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgPSBtYWtl
VW5pcXVlPEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0aGlzKTsKICAgICBy
ZXR1cm4gbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludC5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDFhNTdlZjNkY2ZlOTE5ZTcwYjM3ZmE3ZTM0ODU0YTEzZTkwNTNmYWUuLmNjODc3NjdmMTA4
YmNjNDgzYjMxNWYxMTJmYTljNTM0N2Y1MjAxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ3Nyw4ICs0NzcsOCBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2RlYnVnZ2VyID0gMDsKIAogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI+KCp0aGlzKTsKLSAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZT4oKnRoaXMpOworICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXI+KCp0aGlzKTsKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBtYWtlVW5pcXVlPEpT
R2xvYmFsT2JqZWN0RGVidWdnYWJsZT4oKnRoaXMpOwogICAgIG1faW5zcGVjdG9yRGVidWdnYWJs
ZS0+aW5pdCgpOwogICAgIG1fY29uc29sZUNsaWVudCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+
Y29uc29sZUNsaWVudCgpOwogI2VuZGlmCkBAIC0xMTQ1LDU3ICsxMTQ1LDU3IEBAIGNhcGl0YWxO
YW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxh
ZyA/IGNhcGl0YWxOYW1lCiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KGFycmF5SXRlcmF0b3JQcm90b3R5
cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fYXJyYXlJdGVyYXRvclBy
b3RvdHlwZU5leHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJy
YXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fYXJyYXlJdGVyYXRvclBy
b3RvdHlwZU5leHQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlw
ZU5leHQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5
UHJvdG90eXBlKCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAg
ICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnQpOworICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdh
dGNocG9pbnQpOwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBv
aW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJhdG9y
UHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX21hcEl0ZXJh
dG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21h
cEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21h
cEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAg
ICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRh
cHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAg
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBv
aW50KHNldEl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAg
ICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQp
OworICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQp
OwogICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRp
dGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3Zt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVT
eW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuZ2V0KCksIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
dHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5n
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAg
IHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFw
dGl2ZVdhdGNocG9pbnQobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
dHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nUHJvdG90
eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJp
bmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0K
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlO
YW1lcy0+c2V0KTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOworICAg
ICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0
V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3Nl
dFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwotICAgICAgICBtX3Nl
dFByb3RvdHlwZUFkZFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0QWRkV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBv
aW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
ICAgICB9CiAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAg
ICAgICAgIHRoaXMtPnN5bWJvbFByb3RvdHlwZSgpOwogCiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3Rv
dHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZyk7Ci0gICAgICAgIG1fbnVtYmVyUHJv
dG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbnVtYmVyUHJv
dG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9u
LCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBl
VG9TdHJpbmdXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgbV9udW1iZXJQcm90b1Rv
U3RyaW5nRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclBy
b3RvdHlwZS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAg
ICB9CkBAIC0xOTMyLDEwICsxOTMyLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3Rh
bGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FT
U0VSVCghbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50LmlzQmVpbmdXYXRjaGVkKCkpOwogICAgIG1f
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludC50b3VjaCh2bSwgIlNldCB1cCBhcnJheSBzcGVjaWVzIHdh
dGNocG9pbnQuIik7CiAKLSAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludCk7CisgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3Rvcldh
dGNocG9pbnQtPmluc3RhbGwodm0pOwogCi0gICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBt
X2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJh
eVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hw
b2ludC0+aW5zdGFsbCh2bSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDA0N2MxNjY1M2U3MWIxYTgwNmJkOWZjN2Q1NjY0M2E1
Zjk4OGYxMWUuLjg0NTM1Y2E1YzYwMGNlY2JkOGI0NzhmNjViNTNjZDA3ZTM2YTgzOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTIx
LDcgKzUyMSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIHsKICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFs
T2JqZWN0UmFyZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPEpTR2xv
YmFsT2JqZWN0UmFyZURhdGE+KCk7CiAgICAgfQogICAgICAgICAKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCAxYWYw
MDM2NTNjYjhjM2RlNjQzZjhjNDkxMjdhYmIzZTU1MTNkNWFkLi4zMjdmZWQwNmM2N2E1YmYxMTI1
MWY5ZjRkZWQ4MzllNzAzM2M4YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSlNSdW5Mb29w
VGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6c2V0UnVuTG9vcChNYW5hZ2VyKiBtYW5hZ2VyLCBD
RlJ1bkxvb3BSCiAjZWxzZQogSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVy
Vk1EYXRhKE1hbmFnZXImIG1hbmFnZXIpCiAgICAgOiBydW5Mb29wKCZSdW5Mb29wOjpjdXJyZW50
KCkpCi0gICAgLCB0aW1lcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+
PigqcnVuTG9vcCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRG
aXJlQ2FsbGJhY2spKQorICAgICwgdGltZXIobWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5h
Z2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVy
RGlkRmlyZUNhbGxiYWNrKSkKIHsKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIHRpbWVy
LT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkphdmFzY3JpcHRUaW1lcik7CkBA
IC0xNzIsNyArMTcyLDcgQEAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXImIEpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpzaGFyZWQoKQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdp
c3RlclZNKFZNJiB2bSkKIHsKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlclZN
RGF0YT4oKnRoaXMpOworICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UGVyVk1EYXRhPigqdGhp
cyk7CiAjaWYgVVNFKENGKQogICAgIGRhdGEtPnNldFJ1bkxvb3AodGhpcywgdm0ucnVuTG9vcCgp
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggNWYwNzhkMmE1MDlkMmI0NDIwMGY3YTRhZjM4ODEyNDZj
YjJkNThhNy4uNTI5MDIwZGYwZjFkYzJhMjg2ZjgwMGFiYWQ5ZDdlYjdkM2Y4ZWU5NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCkBAIC00NDgsNyArNDQ4LDcgQEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFi
bGU6OmdldERlbGV0ZWRPZmZzZXQoKQogaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVs
ZXRlZE9mZnNldChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2RlbGV0ZWRP
ZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8UHJvcGVydHlPZmZzZXQ+PigpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFrZVVu
aXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+PigpOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFw
cGVuZChvZmZzZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5VGFibGUuY3BwCmluZGV4IDU5ZWM0MWM0OWFlODJmNDdmNjk4NjgwNmRkNjE0Mzk0NGE0
MmI1ZDYuLmIxYmI2NzkxOTkyNjVhZmNiY2NjODM2NTZkOGQ1NmZjNWI0YTM1NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCBjb25zdCBQcm9w
ZXJ0eVRhYmxlJiBvdGhlcikKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rv
ci4KICAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3Ro
ZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykK
LSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CiB9CiAKIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25l
ZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQpAQCAtMTA3LDcg
KzEwNyw3IEBAIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25lZCBp
bml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFiCiAgICAgLy8gQ29weSB0aGUgbV9kZWxl
dGVkT2Zmc2V0cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxl
dGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVy
RGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAg
ICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4o
Km90aGVyRGVsZXRlZE9mZnNldHMpOwogfQogCiB2b2lkIFByb3BlcnR5VGFibGU6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5k
ZXggMDcxYjFmNjYzMTVjZTNhZThkY2ZlMTc1ZmY2MzY2ZjVjNjMyYWZmYy4uNzBlNTkzZDUzZWJk
ZDgxZDhjMDgxM2EyOTc3MGU5NDBjZTA0MTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZWdFeHA6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIAogICAgIG1fbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3Vi
cGF0dGVybnM7CiAgICAgaWYgKCFwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMuaXNFbXB0eSgp
IHx8ICFwYXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgIG1f
cmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICBtX3JhcmVEYXRhLT5t
X2NhcHR1cmVHcm91cE5hbWVzLnN3YXAocGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzKTsKICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LnN3YXAocGF0dGVybi5t
X25hbWVkR3JvdXBUb1BhcmVuSW5kZXgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgKaW5kZXggMzljZGQ5MTE2ZTAyN2UzZGI2MDQwZGJkOGZlNTI3MGQyZTk5NWQ4
ZC4uZThkYTg1MjZlN2M3ZTgxZmJlYTc1Yzg4OTg4MTYxYjlhZjg5MTcxMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBjbGFzcyBSZWdF
eHAgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBlbnN1
cmVSZWdFeHBKSVRDb2RlKCkKICAgICB7CiAgICAgICAgIGlmICghbV9yZWdFeHBKSVRDb2RlKQot
ICAgICAgICAgICAgbV9yZWdFeHBKSVRDb2RlID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyOjpZYXJy
Q29kZUJsb2NrPigpOworICAgICAgICAgICAgbV9yZWdFeHBKSVRDb2RlID0gbWFrZVVuaXF1ZTxZ
YXJyOjpZYXJyQ29kZUJsb2NrPigpOwogICAgICAgICByZXR1cm4gKm1fcmVnRXhwSklUQ29kZS5n
ZXQoKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggMjM3ZDdkZTY4OGRkMjA3NjUwMjAxMjE2Y2Qw
ZDU0NjgwYzQ5NmVhYS4uZWU2ZTE4Y2VmZGJlNzlmNGJjMmViMjE5N2ZmNTM5MTA0ZTFmNzk5OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJs
ZS5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCBhdXRvIFNjcmlwdEV4ZWN1dGFibGU6OmVuc3VyZVRl
bXBsYXRlT2JqZWN0TWFwSW1wbChzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplYwogewogICAg
IGlmIChkZXN0KQogICAgICAgICByZXR1cm4gKmRlc3Q7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRlbXBsYXRlT2JqZWN0TWFwPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OwogICAgIGRlc3QgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuICpkZXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMjkzYzQ2NDcyZTc0
ODk0MWNhOWNjMmFkYWMxNmEzZDJkYzVkZWVlYy4uMDFjZDJiZDU0N2ZlMDJiNTA0N2E2ZDQ1YjNj
OGFkNmZkNTJiZGI0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCkBAIC04NTYsNyArODU2LDcgQEAgV2F0Y2hwb2ludFNldCogU3RydWN0dXJlOjplbnN1
cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChWTSYgdm0sIFByb3BlcnQKICAgICBT
dHJ1Y3R1cmVSYXJlRGF0YSogcmFyZURhdGEgPSB0aGlzLT5yYXJlRGF0YSgpOwogICAgIGlmICgh
cmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cykgewogICAgICAgICByYXJlRGF0
YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91
bmlxdWU8U3RydWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1hcD4oKTsKKyAgICAg
ICAgICAgIG1ha2VVbmlxdWU8U3RydWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1h
cD4oKTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICB9CiAgICAgYXV0byBy
ZXN1bHQgPSByYXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzLT5hZGQob2Zmc2V0
LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVJhcmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmNwcAppbmRleCA5OWE4ZDlmN2RhYWMyMTdlNGM4MWU3ZTcxMjZlOWMwMmIz
NzRlZDNmLi5kM2NmMTgzYjBmNmQ3YzQ4OTg4MDBhYjY4ZWU0OGNkMTI4ZjdmZTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9T
dHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXIKICAgICBBU1NFUlQo
Y29uZGl0aW9uU2V0LnN0cnVjdHVyZXNFbnN1cmVWYWxpZGl0eSgpKTsKICAgICBmb3IgKE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA6IGNvbmRpdGlvblNldCkgewogICAgICAgICBp
ZiAoY29uZGl0aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJl
c2VuY2UpIHsKLSAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFs
dWVXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOworICAg
ICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQg
PSBtYWtlVW5pcXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CiAgICAgICAgICAgICBtX29iamVjdFRv
U3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlV2F0Y2hwb2lu
dFNldC5hZGQoY29uZGl0aW9uLCB0aGlzKS0+aW5zdGFsbCh2bSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggMzkyZjIxN2MxNGVmYWViNTQ1
YmYwZDRmNzc5MGMxMTI3OTMyYmM4NS4uYTRhODcwZmMxZmNhZDM1YzQzOTVmMTA5YjIyYTk5YzQy
MGQ3NDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIGNvbnN0IFN5bWJvbFRhYmxlOjpMb2NhbFRvRW50cnlW
ZWMmIFN5bWJvbFRhYmxlOjpsb2NhbFRvRW50cnkoY29uc3QgQ29uY3VycmVudEpTCiAgICAgICAg
ICAgICAgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG9mZnNldC5zY29wZU9mZnNldCgpLm9mZnNl
dCgpICsgMSk7CiAgICAgICAgIH0KICAgICAKLSAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CisgICAgICAgIG1f
bG9jYWxUb0VudHJ5ID0gbWFrZVVuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIp
OwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9tYXApIHsKICAgICAgICAgICAgIFZhck9m
ZnNldCBvZmZzZXQgPSBlbnRyeS52YWx1ZS52YXJPZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChv
ZmZzZXQuaXNTY29wZSgpKQpAQCAtMTU5LDcgKzE1OSw3IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xU
YWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogICAgICAgICByZXN1bHQtPm1fYXJndW1lbnRz
LnNldCh2bSwgcmVzdWx0LCBhcmd1bWVudHMpOwogICAgIAogICAgIGlmIChtX3JhcmVEYXRhKSB7
Ci0gICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFi
bGVSYXJlRGF0YT4oKTsKKyAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxT
eW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXRl
ciA9IG1fcmFyZURhdGEtPm1fdW5pcXVlSURNYXAuYmVnaW4oKTsKQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIFN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImKQogICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwor
ICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAg
ICBmb3IgKGF1dG8gaXRlciA9IG1fbWFwLmJlZ2luKCksIGVuZCA9IG1fbWFwLmVuZCgpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fdW5pcXVlSURNYXAuc2V0
KGl0ZXItPmtleSwgVHlwZVByb2ZpbGVyTmVlZHNVbmlxdWVJREdlbmVyYXRpb24pOwpAQCAtMjEw
LDcgKzIxMCw3IEBAIENvZGVCbG9jayogU3ltYm9sVGFibGU6OnJhcmVEYXRhQ29kZUJsb2NrKCkK
IHZvaWQgU3ltYm9sVGFibGU6OnNldFJhcmVEYXRhQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJs
b2NrKQogewogICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIEFTU0VSVCghbV9yYXJl
RGF0YS0+bV9jb2RlQmxvY2spOwogICAgIG1fcmFyZURhdGEtPm1fY29kZUJsb2NrLnNldCgqY29k
ZUJsb2NrLT52bSgpLCB0aGlzLCBjb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlU2V0LmNwcAppbmRleCA0MTBlYjZkNWFlMTZmMzYwMjI2ZGIzODIzZjdlZTgyOGVj
Y2FiMzgzLi40MWFjYTlkM2Q0ZDliOGE1NmFlNjg1MjMwZThkNjY3NTJhYzBkMDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtMzYyLDcgKzM2Miw3IEBA
IFN0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKCkKICAgICAgICAgYnVpbGRlci5h
cHBlbmQobV9wcm90by0+cHJvcGVydHlIYXNoKCkpOwogICAgIH0KIAotICAgIG1fcHJvcGVydHlI
YXNoID0gc3RkOjptYWtlX3VuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAg
bV9wcm9wZXJ0eUhhc2ggPSBtYWtlVW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsK
ICAgICByZXR1cm4gKm1fcHJvcGVydHlIYXNoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggNGUyZDBkMzI0YTI0ZTIzMmNkMTk1Mzg5MmVkOGIwYTMzYjBiMDVlZS4u
YjcwOTJjMDhlZjcyYjBlY2E4OWZmMGI1YzRiZTFhZTU5YWExZGJiNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjUyLDE4ICsyNTIsMTggQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1
cnJlbnQoKSkKICNlbmRpZiAvLyBVU0UoQ0YpCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBUeXBlKQot
ICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEZhc3RNYWxsb2NBbGln
bmVkTWVtb3J5QWxsb2NhdG9yPigpKQotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3Io
c3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdl
OjpQcmltaXRpdmUpKQotICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0ZDo6bWFrZV91
bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkp
Ci0gICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5
cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhp
bGlhcnkpKSkKLSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShzdGQ6Om1ha2Vf
dW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlv
biwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCi0gICAgLCBjZWxsSGVh
cENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhE
b2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBkZXN0cnVj
dGlibGVDZWxsSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxs
QXR0cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBz
dHJpbmdIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4o
KSkKLSAgICAsIGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVl
PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQorICAgICwgZmFzdE1hbGxvY0Fs
bG9jYXRvcihtYWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQor
ICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQorICAgICwganNWYWx1ZUdp
Z2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
PihHaWdhY2FnZTo6SlNWYWx1ZSkpCisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUobWFrZVVu
aXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpBdXhpbGlhcnkpKSkKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxs
VHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWRE
ZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCisgICAg
LCBjZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRl
cyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBkZXN0
cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0
cmlidXRlcyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBzdHJp
bmdIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4oKSkKKyAgICAs
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0SGVhcENlbGxUeXBlPigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAsIHdl
YkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNXZWJBc3Nl
bWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25I
ZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxU
eXBlPigpKQorICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUobWFrZVVuaXF1
ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlPigpKQorICAgICwgd2ViQXNzZW1i
bHlGdW5jdGlvbkhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFw
Q2VsbFR5cGU+KCkpCiAjZW5kaWYKICAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoIlByaW1pdGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2Vs
bFR5cGUuZ2V0KCksIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4
M2U3Y2Q3NjIKICAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwganNW
YWx1ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgpAQCAtMjk2LDcg
KzI5Niw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAs
IG1fYXRvbVN0cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCku
YXRvbVN0cmluZ1RhYmxlKCkgOiBuZXcgQXRvbVN0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlO
YW1lcyhudWxscHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQotICAgICwgbWFjaGlu
ZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKHN0ZDo6bWFrZV91bmlxdWU8
U2ltcGxlU3RhdHM+KCkpCisgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9y
QmFzZWxpbmVKSVQobWFrZVVuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKICAgICAsIGN1c3RvbUdldHRl
clNldHRlckZ1bmN0aW9uTWFwKCp0aGlzKQogICAgICwgc3RyaW5nQ2FjaGUoKnRoaXMpCiAgICAg
LCBzeW1ib2xJbXBsVG9TeW1ib2xNYXAoKnRoaXMpCkBAIC0zMTIsOCArMzEyLDggQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbml0aWFsaXppbmdP
YmplY3RDbGFzcygwKQogI2VuZGlmCiAgICAgLCBtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeSgwKQot
ICAgICwgbV9jb2RlQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxDb2RlQ2FjaGU+KCkpCi0gICAgLCBt
X2J1aWx0aW5FeGVjdXRhYmxlcyhzdGQ6Om1ha2VfdW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4o
KnRoaXMpKQorICAgICwgbV9jb2RlQ2FjaGUobWFrZVVuaXF1ZTxDb2RlQ2FjaGU+KCkpCisgICAg
LCBtX2J1aWx0aW5FeGVjdXRhYmxlcyhtYWtlVW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRo
aXMpKQogICAgICwgbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQoMCkKICAgICAsIG1fcHJpbWl0
aXZlR2lnYWNhZ2VFbmFibGVkKElzV2F0Y2hlZCkKICAgICAsIG1fY29udHJvbEZsb3dQcm9maWxl
ckVuYWJsZWRDb3VudCgwKQpAQCAtNDA3LDcgKzQwNyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMo
KnRoaXMpOwogICAgIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VQcm9maWxlcigpKSkg
ewotICAgICAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Zp
bGVyOjpEYXRhYmFzZT4oKnRoaXMpOworICAgICAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBt
YWtlVW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4oKnRoaXMpOwogCiAgICAgICAgIFN0cmluZ1By
aW50U3RyZWFtIHBhdGhPdXQ7CiAgICAgICAgIGNvbnN0IGNoYXIqIHByb2ZpbGVyUGF0aCA9IGdl
dGVudigiSlNDX1BST0ZJTEVSX1BBVEgiKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMuCiAg
ICAgbV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFycmF5
Q29udHJvbGxlcigpKTsKIAotICAgIG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeT4oKnRoaXMpOworICAgIG1fYnl0
ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeT4oKnRoaXMpOwogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVR5cGVQcm9maWxlcigpKQogICAg
ICAgICBlbmFibGVUeXBlUHJvZmlsZXIoKTsKQEAgLTQ0Miw5ICs0NDIsOSBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5H
X1BST0ZJTEVSKQogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVJhbmRvbWl6aW5nRnV6emVyQWdlbnQo
KSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxSYW5kb21pemluZ0Z1
enplckFnZW50PigqdGhpcykpOworICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFJh
bmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAgZWxzZSBpZiAoT3B0aW9uczo6dXNl
RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50KHN0
ZDo6bWFrZV91bmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOworICAg
ICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dD4oKnRoaXMpKTsKIAogICAgIGlmIChPcHRpb25zOjphbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3Jp
Z2luTWFwKCkpCiAgICAgICAgIHNldFNob3VsZEJ1aWxkUENUb0NvZGVPcmlnaW5NYXBwaW5nKCk7
CkBAIC00NTcsOSArNDU3LDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRo
YXQgdGhlIEpJVCBpcyBnb2luZyB0byB1c2UgYXJlIGluaXRpYWxpemVkIGluIG5vbi1jb21waWxh
dGlvbiB0aHJlYWRzLgogICAgIGlmIChjYW5Vc2VKSVQoKSkgewotICAgICAgICBqaXRTdHVicyA9
IHN0ZDo6bWFrZV91bmlxdWU8SklUVGh1bmtzPigpOworICAgICAgICBqaXRTdHVicyA9IG1ha2VV
bmlxdWU8SklUVGh1bmtzPigpOwogI2lmIEVOQUJMRShGVExfSklUKQotICAgICAgICBmdGxUaHVu
a3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZUTDo6VGh1bmtzPigpOworICAgICAgICBmdGxUaHVua3Mg
PSBtYWtlVW5pcXVlPEZUTDo6VGh1bmtzPigpOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQog
ICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ2FsbCk7
CiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDb25z
dHJ1Y3QpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIFdhdGNoZG9nJiBWTTo6ZW5zdXJlV2F0Y2hkb2co
KQogSGVhcFByb2ZpbGVyJiBWTTo6ZW5zdXJlSGVhcFByb2ZpbGVyKCkKIHsKICAgICBpZiAoIW1f
aGVhcFByb2ZpbGVyKQotICAgICAgICBtX2hlYXBQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SGVhcFByb2ZpbGVyPigqdGhpcyk7CisgICAgICAgIG1faGVhcFByb2ZpbGVyID0gbWFrZVVuaXF1
ZTxIZWFwUHJvZmlsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faGVhcFByb2ZpbGVyOwogfQog
CkBAIC0xMDQxLDggKzEwNDEsOCBAQCBzdGF0aWMgYm9vbCBkaXNhYmxlUHJvZmlsZXJXaXRoUmVz
cGVjdFRvQ291bnQodW5zaWduZWQmIGNvdW50ZXIsIGNvbnN0IEZ1bmMmIGRvRAogYm9vbCBWTTo6
ZW5hYmxlVHlwZVByb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZVR5cGVQcm9maWxlciA9IFt0
aGlzXSAoKSB7Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUeXBlUHJvZmlsZXI+KCk7Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gc3Rk
OjptYWtlX3VuaXF1ZTxUeXBlUHJvZmlsZXJMb2c+KCp0aGlzKTsKKyAgICAgICAgdGhpcy0+bV90
eXBlUHJvZmlsZXIgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+
bV90eXBlUHJvZmlsZXJMb2cgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlckxvZz4oKnRoaXMpOwog
ICAgIH07CiAKICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQobV90
eXBlUHJvZmlsZXJFbmFibGVkQ291bnQsIGVuYWJsZVR5cGVQcm9maWxlcik7CkBAIC0xMDYxLDcg
KzEwNjEsNyBAQCBib29sIFZNOjpkaXNhYmxlVHlwZVByb2ZpbGVyKCkKIGJvb2wgVk06OmVuYWJs
ZUNvbnRyb2xGbG93UHJvZmlsZXIoKQogewogICAgIGF1dG8gZW5hYmxlQ29udHJvbEZsb3dQcm9m
aWxlciA9IFt0aGlzXSAoKSB7Ci0gICAgICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEZsb3dQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+
bV9jb250cm9sRmxvd1Byb2ZpbGVyID0gbWFrZVVuaXF1ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigp
OwogICAgIH07CiAKICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQo
bV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyKTsKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHZvaWQgVk06OmR1bXBUeXBlUHJvZmlsZXJEYXRh
KCkKIAogdm9pZCBWTTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgUmVmPE1pY3JvdGFzaz4mJiB0YXNrKQogewotICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZnbG9iYWxPYmplY3QsIFdURk1v
dmUodGFzaykpKTsKKyAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFF1ZXVl
ZFRhc2s+KCp0aGlzLCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQg
Vk06OmRyYWluTWljcm90YXNrcygpCkBAIC0xMjMwLDE0ICsxMjMwLDE0IEBAIHZvaWQgVk06OmVu
c3VyZVNoYWRvd0NoaWNrZW4oKQogewogICAgIGlmIChtX3NoYWRvd0NoaWNrZW4pCiAgICAgICAg
IHJldHVybjsKLSAgICBtX3NoYWRvd0NoaWNrZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0No
aWNrZW4+KCk7CisgICAgbV9zaGFkb3dDaGlja2VuID0gbWFrZVVuaXF1ZTxTaGFkb3dDaGlja2Vu
PigpOwogfQogCiAjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhuYW1lLCBoZWFwQ2VsbFR5cGUsIHR5cGUpIFwKICAgICBJc29TdWJzcGFjZSogVk06Om5hbWUj
I1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAg
IGF1dG8gc3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5
cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAgICAgICAg
bV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0
KCk7IFwKQEAgLTEyNjgsNyArMTI2OCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhCiAgICAg
SXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQo
IW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGFj
ZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAor
ICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAg
ICAgcmV0dXJuICZtXyMjbmFtZS0+c3BhY2U7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDI0ZjE4YWQwMmRlMmZlZjkwMDkz
NDQ4NjQzMGM5OGZlOTQ5NDI0ZWYuLjUzMzkzY2IyNThmNzQyYzZhY2ZkZGVhZWM2YzcxNzU2NDRk
Nzk0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsKICAg
ICB2b2lkIGVtaXRQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJhc2ljQmxvY2ssIEIzOjpQYXRjaHBv
aW50VmFsdWUqIHBhdGNoLCBUbXAgcmVzdWx0LCBWZWN0b3I8Q29uc3RyYWluZWRUbXAsIGlubGlu
ZVNpemU+JiYgYXJncykKICAgICB7CiAgICAgICAgIGlmICghbV9wYXRjaHBvaW50U3BlY2lhbCkK
LSAgICAgICAgICAgIG1fcGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hw
b2ludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRj
aHBvaW50U3BlY2lhbD4oKSkpOworICAgICAgICAgICAgbV9wYXRjaHBvaW50U3BlY2lhbCA9IHN0
YXRpY19jYXN0PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VV
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKSk7CiAKICAgICAgICAgSW5zdCBpbnN0KFBh
dGNoLCBwYXRjaCwgQXJnOjpzcGVjaWFsKG1fcGF0Y2hwb2ludFNwZWNpYWwpKTsKICAgICAgICAg
SW5zdCByZXN1bHRNb3Y7CkBAIC00ODcsNyArNDg3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3Ig
ewogCiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIGEgaGFzaG1hcCBvZiB0aGVzZS4KICAgICAgICAg
QjM6OkNoZWNrU3BlY2lhbDo6S2V5IGtleShicmFuY2gpOwotICAgICAgICBCMzo6Q2hlY2tTcGVj
aWFsKiBzcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lhbCo+KG1fY29kZS5hZGRT
cGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkpOworICAgICAg
ICBCMzo6Q2hlY2tTcGVjaWFsKiBzcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lh
bCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgZm9yIGR1bW15IHZhbHVlcwog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQw
CkBAIC0yMTM5LDEwICsyMTM5LDEwIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6Om9yaWdpbigpIC0+
IEIzOjpPcmlnaW4KIAogRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+
LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZUFpcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0
aW9uQ29udGV4dCwgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9u
TGVuZ3RoLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIGluZm8sIE1lbW9yeU1vZGUgbW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVw
Q291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIAotICAg
IGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9p
bnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlv
bkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+
KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gbWFrZVVuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBCMzo6UHJvY2VkdXJlIHByb2NlZHVyZTsKICAgICBD
b2RlJiBjb2RlID0gcHJvY2VkdXJlLmNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAyMDk0MTc3ZWQ2ZjE4M2FiNGQ4NjJl
YzIyNjdkMzBmMjhiN2RlNWI2Li4xNThkZjlmYTlmMGM5ZjcyMWFjMjkyNzc4MTg4ZGNmMjhlNzA3
ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCkBAIC0xNTUxLDEwICsxNTUxLDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6b3JpZ2lu
KCkgLT4gT3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9u
PiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxl
bmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIENvbXBpbGF0aW9uTW9kZSBjb21waWxhdGlvbk1vZGUs
IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4
Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5p
cXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRk
ZXJFbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAg
Y29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxD
Q2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2lu
dEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4
dC53YXNtRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAg
UHJvY2VkdXJlIHByb2NlZHVyZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uY3BwCmluZGV4IGY5ODVkNTIzYzJlOTNmM2JkMjNmYjdjNTcxMmI1ODY4Y2MxNmE2ODUu
LjUwNmRmNGJlZmQwZDU2NDE4NDRjZTUyNzk1MTE1ZjYxMjg3MTYxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lk
IEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5jb21w
aWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAgICAgICAg
ICAgICBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5j
b21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgICAgICAg
ICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2Vi
QXNzZW1ibHkgQkJRIGZ1bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRleCwgc2ln
bmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUo
ZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0
KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAgICAgICAg
ICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAg
ICAgIH0KQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFi
c3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVu
Y3Rpb24tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21w
aWxhdGlvbj4oCisgICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9u
LT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAog
ICAgICAgICAgICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRp
b25QdHJUYWcsICJFbWJlZGRlci0+V2ViQXNzZW1ibHkgZW50cnlwb2ludFslaV0gJXMgbmFtZSAl
cyIsIGZ1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBt
YWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1h
dGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRh
KCkpLAogICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQuZW1iZWRkZXJFbnRyeXBv
aW50Qnlwcm9kdWN0cykpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IGM1MTNmZDJmNTBlZDZmYjE3YzMzODVlZjI5MDUyNzgx
NzM5MjEwMzcuLjBkN2EwM2MzNjEyOWNkMWRlMmM1NGZmY2Q1MDI5NWI1NmM1Yjg5OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgb21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICBvbWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFr
ZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBPTUcgZnVuY3Rpb25bJWldICVz
IG5hbWUgJXMiLCBtX2Z1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCku
ZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1
bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNj
aWkoKS5kYXRhKCkpLAogICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXBy
b2R1Y3RzKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21X
b3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3Bw
CmluZGV4IDM2ZDc0YzE0YjE4YzcwN2I4MTJhMDQ4N2Y5MWUyOWMzODUzOTFkZTIuLjY2MGY5NTY1
NzM4YjEwYTMwZjNlN2NjODE4YTMyYzg1ODc4MjEyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIFdvcmtsaXN0OjpX
b3JrbGlzdCgpCiAgICAgbV90aHJlYWRzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkNvbXBpbGF0
aW9uVGhyZWFkcyk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzOyBpKyspCi0gICAg
ICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGlzdDo6
VGhyZWFkPihsb2NrZXIsICp0aGlzKSk7CisgICAgICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBl
bmQobWFrZVVuaXF1ZTxXb3JrbGlzdDo6VGhyZWFkPihsb2NrZXIsICp0aGlzKSk7CiB9CiAKIFdv
cmtsaXN0Ojp+V29ya2xpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dh
c20uY3BwCmluZGV4IDVkZDQ1MWJlYTg0ZDU5MGJiZjBmY2IwNzZlMjZmZmQzY2M3YjgxYWMuLjcz
NTIyMDI4OTM3YzZkYWMxZmM0NzNjN2U0Y2RjNjQ5NThjZThlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEludGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlv
bkNvbnRleHQmIGNvbXAKIHsKICAgICBDQ2FsbEhlbHBlcnMmIGppdCA9ICpjb21waWxhdGlvbkNv
bnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5p
cXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7
CiAKICAgICAvLyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXggN2YwMzNmZWMxYzM2OWE5NDIzYjMz
Y2Y4ZWIzMzM0YzUxY2UwODA4Yi4uYzRiNzdjYWRiZTVlZWE1NzNlYzg1MmI5NWVmNmE3ODliODI4
NTM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJl
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIu
Y3BwCkBAIC0xNzA2LDcgKzE3MDYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICAg
ICAgZHVtcERpc2p1bmN0aW9uKG1fYm9keURpc2p1bmN0aW9uLmdldCgpKTsKICNlbmRpZgogCi0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4oV1RGTW92ZSht
X2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRlcm4sIGFsbG9j
YXRvciwgbG9jayk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4o
V1RGTW92ZShtX2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRl
cm4sIGFsbG9jYXRvciwgbG9jayk7CiAgICAgfQogCiAgICAgdm9pZCBjaGVja0lucHV0KHVuc2ln
bmVkIGNvdW50KQpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAg
ICAgICAgdW5zaWduZWQgc3VicGF0dGVybklkID0gcGFyZW50aGVzZXNCZWdpbi5hdG9tLnN1YnBh
dHRlcm5JZDsKIAogICAgICAgICB1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IGxhc3RTdWJwYXR0
ZXJuSWQgLSBzdWJwYXR0ZXJuSWQgKyAxOwotICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVu
Y3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMs
IGNhbGxGcmFtZVNpemUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBt
YWtlVW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUp
OwogCiAgICAgICAgIHVuc2lnbmVkIGZpcnN0VGVybUluUGFyZW50aGVzZXMgPSBiZWdpblRlcm0g
KyAxOwogICAgICAgICBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT50ZXJtcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGVuZFRlcm0gLSBmaXJzdFRlcm1JblBhcmVudGhlc2VzICsgMik7CkBAIC0xOTk3
LDcgKzE5OTcsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogCiAgICAgdm9pZCByZWdleEJlZ2lu
KHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zLCB1bnNpZ25lZCBjYWxsRnJhbWVTaXplLCBib29sIG9u
Y2VUaHJvdWdoKQogICAgIHsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwor
ICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihu
dW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9u
LT50ZXJtcy5hcHBlbmQoQnl0ZVRlcm06OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKG9uY2VUaHJvdWdo
KSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1swXS5mcmFtZUxvY2F0aW9uID0g
MDsKICAgICAgICAgbV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IDdhN2MyMDZjN2U0MzU5N2NmZTRjNGQ0ZGNhOGEw
N2FjNWFjMWY2NjAuLjhhYjYyYjdiYTM5ODEwNTFlYmJkYWNkNmU0N2EwNThhYWRkM2Q5YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0zODk5LDcgKzM4OTksNyBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpk
dW1wRGlzYXNzZW1ibHkoKSB8fCBPcHRpb25zOjpkdW1wUmVnRXhwRGlzYXNzZW1ibHkoKSkpCi0g
ICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8WWFyckRpc2Fzc2Vt
Ymxlcj4odGhpcyk7CisgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8WWFy
ckRpc2Fzc2VtYmxlcj4odGhpcyk7CiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAg
ICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldFN0YXJ0T2ZDb2RlKGxhYmVsKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IDQ5Zjc3ZjY5YzY4NWM2
NTIwM2RmM2YwMzRjOTBkMTg3N2M5MmRjOWIuLmZjYzUxYjI3N2Y1MDExMDNiN2M2NWJiZDMzYTVj
YTQxMGQ4MWMwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5j
cHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBjbGFzcyBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yIHsK
ICAgICB7CiAgICAgICAgIGNvYWxlc2NlVGFibGVzKCk7CiAKLSAgICAgICAgYXV0byBjaGFyYWN0
ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAgICAgIGF1
dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwogCiAgICAg
ICAgIGNoYXJhY3RlckNsYXNzLT5tX21hdGNoZXMuc3dhcChtX21hdGNoZXMpOwogICAgICAgICBj
aGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuc3dhcChtX3Jhbmdlcyk7CkBAIC00NDEsNyArNDQxLDcg
QEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICwgbV9jaGFyYWN0ZXJD
bGFzc0NvbnN0cnVjdG9yKHBhdHRlcm4uaWdub3JlQ2FzZSgpLCBwYXR0ZXJuLnVuaWNvZGUoKSA/
IENhbm9uaWNhbE1vZGU6OlVuaWNvZGUgOiBDYW5vbmljYWxNb2RlOjpVQ1MyKQogICAgICAgICAs
IG1fc3RhY2tMaW1pdChzdGFja0xpbWl0KQogICAgIHsKLSAgICAgICAgYXV0byBib2R5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgIGF1dG8gYm9keSA9
IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4ubV9i
b2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0Fs
dGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RG
TW92ZShib2R5KSk7CkBAIC00NTYsNyArNDU2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciB7CiAgICAgICAgIG1fcGF0dGVybi5yZXNldEZvclJlcGFyc2luZygpOwogICAgICAgICBt
X2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IucmVzZXQoKTsKIAotICAgICAgICBhdXRvIGJvZHkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBi
b2R5ID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVy
bi5tX2JvZHkgPSBib2R5LmdldCgpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRk
TmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVu
ZChXVEZNb3ZlKGJvZHkpKTsKQEAgLTYwOCw3ICs2MDgsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNv
bnN0cnVjdG9yIHsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NFUlQoIW9wdEdyb3Vw
TmFtZSk7CiAKLSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRv
IHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4o
bV9hbHRlcm5hdGl2ZSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBh
dHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0
ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGZhbHNlKSk7CiAg
ICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRl
cm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1v
dmUocGFyZW50aGVzZXNEaXNqdW5jdGlvbikpOwpAQCAtNjE2LDcgKzYxNiw3IEBAIGNsYXNzIFlh
cnJQYXR0ZXJuQ29uc3RydWN0b3IgewogCiAgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2Vy
dGlvbkJlZ2luKGJvb2wgaW52ZXJ0ID0gZmFsc2UpCiAgICAgewotICAgICAgICBhdXRvIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4o
bV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1h
a2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKICAgICAgICAgbV9h
bHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQ
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uLCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDEsIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGZhbHNlLCBpbnZlcnQpKTsKICAgICAgICAgbV9h
bHRlcm5hdGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7
CiAgICAgICAgIG1faW52ZXJ0UGFyZW50aGV0aWNhbEFzc2VydGlvbiA9IGludmVydDsKQEAgLTcw
Nyw3ICs3MDcsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAg
IFBhdHRlcm5BbHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5h
dGl2ZXNbYWx0XS5nZXQoKTsKICAgICAgICAgICAgIGlmICghZmlsdGVyU3RhcnRzV2l0aEJPTCB8
fCAhYWx0ZXJuYXRpdmUtPm1fc3RhcnRzV2l0aEJPTCkgewogICAgICAgICAgICAgICAgIGlmICgh
bmV3RGlzanVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgICAgICAgICAg
ICAgbmV3RGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAg
ICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24tPm1fcGFyZW50ID0gZGlzanVuY3Rpb24t
Pm1fcGFyZW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0
ZXJuYXRpdmUqIG5ld0FsdGVybmF0aXZlID0gbmV3RGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0
aXZlKCk7CkBAIC0xNDczLDcgKzE0NzMsNyBAQCB2b2lkIFlhcnJQYXR0ZXJuOjpkdW1wUGF0dGVy
bihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxDaGFyYWN0ZXJDbGFzcz4gYW55Y2hhckNyZWF0ZSgpCiB7Ci0gICAgYXV0byBj
aGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAg
YXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAgICAg
Y2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwLCAweDdm
KSk7CiAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVy
UmFuZ2UoMHgwMDgwLCAweDEwZmZmZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX2NoYXJhY3Rl
cldpZHRocyA9IENoYXJhY3RlckNsYXNzV2lkdGhzOjpIYXNCb3RoQk1QQW5kTm9uQk1QOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggMGI3ZGIyZWJhOGFkNTJk
ZWQyYjVmN2U2N2U1NDViOGMxNmM5NDVjNy4uN2U4MmM4NTVhODc4ZTZjMTgwZWQ1MjFmMWY3YWQ0
OGQ4YzFmYmFjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCkBA
IC0zNDEsNyArMzQxLDcgQEAgc3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbiB7CiAgICAgCiAgICAg
UGF0dGVybkFsdGVybmF0aXZlKiBhZGROZXdBbHRlcm5hdGl2ZSgpCiAgICAgewotICAgICAgICBt
X2FsdGVybmF0aXZlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+
KHRoaXMpKTsKKyAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGF0dGVy
bkFsdGVybmF0aXZlPih0aGlzKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYXR0ZXJu
QWx0ZXJuYXRpdmUqPihtX2FsdGVybmF0aXZlcy5sYXN0KCkuZ2V0KCkpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKaW5kZXggYzFm
OWY5OWRlMDkxY2VjYjJlMWRiNTVjMzhmYTM2MDMxMWVlMzdmNC4uNjljZDg4ODY1Nzg1NGNkNTQ0
NWY4NjNlMjJkNTVmZmI5YzQwZWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9jcmVhdGVfcmVnZXhfdGFibGVzCkBAIC05NSwxMSArOTUsMTEgQEAgZm9yIG5hbWUsIGNsYXNz
ZXMgaW4gdHlwZXMuaXRlbXMoKToKICAgICBmdW5jdGlvbiArPSAoIntcbiIpCiAgICAgaWYgZW1p
dFRhYmxlcyBhbmQgY2xhc3Nlc1siVXNlVGFibGUiXToKICAgICAgICAgaWYgIkludmVyc2UiIGlu
IGNsYXNzZXM6Ci0gICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgdHJ1ZSk7XG4i
ICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBh
dXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwg
dHJ1ZSk7XG4iICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkKKyAgICAg
ICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVl
PENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQogICAgIGVsc2U6
Ci0gICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1h
a2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpO1xuIikKKyAgICAgICAgZnVuY3Rpb24gKz0gKCIg
ICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7XG4i
KQogICAgIGhhc0JNUENoYXJhY3RlcnMgPSBGYWxzZQogICAgIGhhc05vbkJNUENoYXJhY3RlcnMg
PSBGYWxzZQogICAgIGZvciAobWluLCBtYXgpIGluIHJhbmdlczoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0
eVRhYmxlcy5weQppbmRleCBmOWZlZjQ2OGQyYjVkZGE2YWFlZWFiMGIzZmMwNThjZDNlZWNlYWMx
Li41MjZmYjZlN2FjM2EyMjdhNmQ0M2NiYmVmZDI3MDJkMWEwYzU0Y2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJs
ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29k
ZVByb3BlcnR5VGFibGVzLnB5CkBAIC01MjksNyArNTI5LDcgQEAgZGVmIGR1bXBNYXRjaERhdGEo
c2VsZiwgZmlsZSwgdmFsdWVzUGVyTGluZSwgZGF0YUxpc3QsIGZvcm1hdHRlcik6CiAgICAgZGVm
IGR1bXAoc2VsZiwgZmlsZSwgY29tbWFBZnRlcik6CiAgICAgICAgIGZpbGUud3JpdGUoInN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IHt9KClcbnt7XG4iLmZvcm1hdChzZWxm
LmdldENyZWF0ZUZ1bmNOYW1lKCkpKQogICAgICAgICBmaWxlLndyaXRlKCIgICAgLy8gTmFtZSA9
IHt9LCBudW1iZXIgb2YgY29kZVBvaW50czoge31cbiIuZm9ybWF0KHNlbGYubmFtZSwgc2VsZi5j
b2RlUG9pbnRDb3VudCkpCi0gICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQorICAgICAgICBmaWxl
LndyaXRlKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xh
c3M+KFxuIikKICAgICAgICAgZmlsZS53cml0ZSgiICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VUNoYXIzMj4oIikKICAgICAgICAgc2VsZi5kdW1wTWF0Y2hEYXRhKGZpbGUsIDgsIHNlbGYu
bWF0Y2hlcywgbGFtYmRhIGZpbGUsIG1hdGNoOiAoZmlsZS53cml0ZSgiezA6MD0jNHh9Ii5mb3Jt
YXQobWF0Y2gpKSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiksXG4iKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwIGIvU291cmNlL1dURi9iZW5j
aG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCmluZGV4IGNjNzA3ZGUzZmY0ZWMxMzhjZmE0NmFi
NGM4ZTEzYWJiNjU5M2NiYTEuLjhjOTdjMWEyNDFiNzI5YWY4ZjMxZjM1OWM3ZjUxNzdhNjM0MDlk
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAKQEAgLTYx
LDggKzYxLDggQEAgc3RydWN0IEJlbmNobWFyayB7CiAgICAgc3RhdGljIHZvaWQgcnVuKGNvbnN0
IGNoYXIqIG5hbWUpCiAgICAgewogICAgICAgICBMb2NrVHlwZSBsb2NrOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dW5zaWduZWRbXT4gY291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25l
ZFtdPihudW1UaHJlYWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+
W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVh
ZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWRbXT4gY291bnRzID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CiAg
ICAgCiAgICAgICAgIHZvbGF0aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1ZTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcCBiL1NvdXJjZS9X
VEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAppbmRleCBmMTU2NTBkNGM5YzhmYTY3NzBm
ODkxMmYwOWRmZTM5MjkxMzA3YzM0Li5iZTdhYmEzOTBlYjUzZTM1ODFlMzZmNGE4Yjk1MDBkMGUy
OTlmOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5j
cHAKKysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCkBAIC03NCw5
ICs3NCw5IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tU
eXBlPgogICAgIHN0YXRpYyB2b2lkIHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPiBsb2NrcyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxkb3VibGU+W10+IHdvcmRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxXaXRoUGFkZGluZzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRz
UGVyR3JvdXApOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+
W10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2l0aFBhZGRpbmc8
TG9ja1R5cGU+W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxX
aXRoUGFkZGluZzxkb3VibGU+W10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51
bVRocmVhZHNQZXJHcm91cCk7CiAKICAgICAgICAgdm9sYXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0
cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmggYi9T
b3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKaW5kZXggMGI1NDFiOGM3M2QwZjU5ODY1
MWJmOTVlNzY5M2I4MDdjOTk5Zjc4YS4uODg0ZWQ3MzIzMzc2MWEyOWZiNDk2ZjBhZDA5ODk2NzU0
NWU3MDM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaApAQCAtMjU0LDcgKzI1NCw3IEBA
IGNsYXNzIENvbmN1cnJlbnRWZWN0b3IgZmluYWwgewogICAgIHZvaWQgYWxsb2NhdGVTZWdtZW50
KCkKICAgICB7CiAgICAgICAgIG1fc2VnbWVudHMuZ3JvdyhtX251bVNlZ21lbnRzICsgMSk7Ci0g
ICAgICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vn
bWVudD4oKTsKKyAgICAgICAgbV9zZWdtZW50c1ttX251bVNlZ21lbnRzKytdID0gbWFrZVVuaXF1
ZTxTZWdtZW50PigpOwogICAgIH0KIAogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCmluZGV4IDgzYzIwNzUxZjg1ZjRlNGQy
MDE1NjE0NDFjYTgzMTQxY2I1YzM3ZmYuLmM2M2MwNTVhMGEwMzQxZGY2YTVhZjI3MGE0YWNjYjhk
NTdkNzg0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3Ao
KQogCiAgICAgd2hpbGUgKCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKSB7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9kcmFpbmVkUG9v
bCA9IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpV
c2UpID8gc3RkOjptYWtlX3VuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOworICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29s
ID0gKG1fdXNlQXV0b2RyYWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVz
ZSkgPyBtYWtlVW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CiAKICAgICAgICAg
ICAgIG1fdGFza1F1ZXVlLndhaXRGb3JNZXNzYWdlKCkucGVyZm9ybVRhc2soKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93
dGYvRmFzdE1hbGxvYy5oCmluZGV4IGVmZWZiM2EzMTMzZTgzZjY0MzM2ZmQyZWMyZGE1MmE1NDgz
MmU2MjEuLjk1YjY3NTk3MmQzMTBlM2RkYmQ0MTNkNGE4ZjhkMTI4OGYyMGZhZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmgKQEAgLTMwMSw5ICszMDEsMTEgQEAgdXNpbmcgV1RGOjpmYXN0QWxpZ25lZEZyZWU7
CiAjZGVmaW5lIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIFwKIHB1YmxpYzogXAogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xh
c3M7IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNv
bG9uQWZ0ZXJUaGlzTWFjcm8KIAogI2RlZmluZSBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQgXAogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19m
YXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2Vt
aWNvbG9uQWZ0ZXJUaGlzTWFjcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmlu
dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCmluZGV4IDNl
MjUzY2YyYWMyMTljYzg1NTg0ZDQyYzQ1MWVmYzdjYTc5YjY0ZWEuLjcwNzRjMDNhYmFmOGZjZjM5
NzdmMmIxMWFiOWMzZDZlMzgxNjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQ
cmludFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcApA
QCAtNDcsNyArNDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVByaW50U3RyZWFtPiBGaWxlUHJp
bnRTdHJlYW06Om9wZW4oY29uc3QgY2hhciogZmlsZW5hbWUsIGNvbgogICAgIGlmICghZmlsZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlUHJpbnRTdHJlYW0+KGZpbGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpbGVQcmludFN0
cmVhbT4oZmlsZSk7CiB9CiAKIHZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKGNvbnN0IGNo
YXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RnVuY3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKaW5kZXggMDVlMzY5NzgyNWJj
M2QzNDlmNDhkNjhjMzJhNjg2MjI1NWZiNTgzZS4uMGI3OTU4Njc0ODBmZDAzMjI0MTI0NTRlN2Qw
YWY4MzM4ZDZlM2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCkBAIC02NywxMSArNjcsMTEgQEAgY2xhc3MgRnVu
Y3Rpb248T3V0KEluLi4uKT4gewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBl
LCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCEoc3RkOjppc19wb2ludGVyPENhbGxh
YmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVf
cG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0eXBlPjo6dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVlX3Jl
ZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbihDYWxs
YWJsZVR5cGUmJiBjYWxsYWJsZSkKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6Om1h
a2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4u
Lj4+KFdURk1vdmUoY2FsbGFibGUpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIo
bWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxGdW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBG
dW5jdGlvbihGdW5jdGlvblR5cGUgZikKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6
Om1ha2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJ
bi4uLj4+KFdURk1vdmUoZikpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtl
VW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+
KFdURk1vdmUoZikpKSB7IH0KIAogICAgIE91dCBvcGVyYXRvcigpKEluLi4uIGluKSBjb25zdAog
ICAgIHsKQEAgLTg0LDE0ICs4NCwxNCBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4pPiB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCEoc3RkOjppc19wb2ludGVyPENhbGxhYmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6
aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0
eXBlPjo6dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46
OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlwZSYmIGNh
bGxhYmxlKQogICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdU
Rk1vdmUoY2FsbGFibGUpKTsKKyAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVl
PERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1v
dmUoY2FsbGFibGUpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlv
bjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1
ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShGdW5jdGlvblR5cGUgZikKICAgICB7
Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNh
bGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKKyAg
ICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFw
cGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDNiMWU5NTMwM2RlNTQwNTE0M2Zi
NTYzY2NiODA0N2U1YWNlYWQwYjMuLmE0ZDA3N2Y4NGYwMmExZmExYzFiZTAzNGE4NmViMzUwZDZk
N2Y0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5oCkBAIC01ODgsMTAgKzU4OCwxMCBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVS
QVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9ycygwKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjpt
YWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigp
KQogI2VuZGlmCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwg
bV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigpKQorICAgICAgICAsIG1fc3RhdHMobWFr
ZVVuaXF1ZTxTdGF0cz4oKSkKICNlbmRpZgogICAgIHsKICAgICB9CkBAIC0xMzM0LDEwICsxMzM0
LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCiAjaWYg
Q0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKG51bGxwdHIp
Ci0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwg
bV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICNpZiBEVU1QX0hBU0hUQUJMRV9T
VEFUU19QRVJfVEFCTEUKLSAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFrZV91bmlxdWU8U3RhdHM+
KCpvdGhlci5tX3N0YXRzKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCpv
dGhlci5tX3N0YXRzKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgdW5zaWduZWQgb3RoZXJLZXlD
b3VudCA9IG90aGVyLnNpemUoKTsKQEAgLTEzODIsNyArMTM4Miw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgIGlubGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShIYXNoVGFibGUmJiBvdGhlcikKICNp
ZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgIDogbV9pdGVyYXRvcnMobnVsbHB0
cikKLSAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAg
LCBtX211dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgb3Ro
ZXIuaW52YWxpZGF0ZUl0ZXJhdG9ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAKaW5kZXggOWU4NzIwZjZkOWE3OTgwYjk1ZTViMTNjNWU2NTVjMzg5NDkzMDRiNS4u
NTM3OWMwYTRkNWM4YzZmMzY3ZDkxNjk2ZTBkNmExOGM1ZDlmZWMwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1
c2UpCiAgICAgfQogCiAgICAgaWYgKHVzZSkgewotICAgICAgICBtX21lYXN1cmVtZW50VGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4+
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1l
bnRUaW1lckZpcmVkKTsKKyAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbWFrZVVuaXF1ZTxS
dW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CiAgICAg
ICAgIG1fbWVhc3VyZW1lbnRUaW1lci0+c3RhcnRSZXBlYXRpbmcoMzBfcyk7CiAgICAgfSBlbHNl
CiAgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5o
CmluZGV4IGFmNjVlMDhjYTg4MDI0MGVhOWYxOWMzYzFmYzFmZGM1N2FiNGQ0YWIuLmRlZjgzNDBl
M2M4YWNjODU4NmRhNGYwMGJiOGU5ZGM1NmUwMTNlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBA
IC01NjUsNiArNTY1LDI0IEBAIGNvbnN0ZXhwciBzaXplX3QgY2x6KHVpbnQzMl90IHZhbHVlLCBa
ZXJvU3RhdHVzIG1pZ2h0QmVaZXJvID0gWmVyb1N0YXR1czo6TWF5QmVaCiAKIH0gLy8gbmFtZXNw
YWNlIHN0ZAogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4g
QXJncz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZShBcmdzJiYuLi4g
YXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zh
c3RBbGxvY2F0ZWRDbGFzcywgaW50Pjo6dmFsdWUpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IFQsIGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKICNkZWZpbmUgV1RGTW92ZSh2YWx1ZSkgc3RkOjptb3ZlPFdU
Rjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSkKIAogdXNpbmcgV1RGOjpLQjsKQEAgLTU4NSwz
ICs2MDMsNSBAQCB1c2luZyBXVEY6Om1lcmdlRGVkdXBsaWNhdGVkU29ydGVkOwogdXNpbmcgV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mOwogdXNpbmcgV1RGOjpzYWZlQ2FzdDsKIHVzaW5nIFdURjo6
dHJ5QmluYXJ5U2VhcmNoOwordXNpbmcgV1RGOjptYWtlVW5pcXVlOwordXNpbmcgV1RGOjptYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1N0cmVhbUJ1ZmZlci5oIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKaW5kZXggMjZi
YmM4ZmQ2N2E0OTM0NjMyMjFkNjE5NjE4ZWI3YzY0Njg2NDAzMC4uY2EzM2Y4NjdkMzhiNTc1OTIw
MTQxZDUyM2MzMDdhYWU3YzgyMGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RyZWFt
QnVmZmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKQEAgLTYwLDcgKzYw
LDcgQEAgY2xhc3MgU3RyZWFtQnVmZmVyIHsKICAgICAgICAgbV9zaXplICs9IHNpemU7CiAgICAg
ICAgIHdoaWxlIChzaXplKSB7CiAgICAgICAgICAgICBpZiAoIW1fYnVmZmVyLnNpemUoKSB8fCBt
X2J1ZmZlci5sYXN0KCktPnNpemUoKSA9PSBCbG9ja1NpemUpCi0gICAgICAgICAgICAgICAgbV9i
dWZmZXIuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCkpOworICAgICAgICAgICAgICAg
IG1fYnVmZmVyLmFwcGVuZChtYWtlVW5pcXVlPEJsb2NrPigpKTsKICAgICAgICAgICAgIHNpemVf
dCBhcHBlbmRTaXplID0gc3RkOjptaW4oQmxvY2tTaXplIC0gbV9idWZmZXIubGFzdCgpLT5zaXpl
KCksIHNpemUpOwogICAgICAgICAgICAgbV9idWZmZXIubGFzdCgpLT5hcHBlbmQoZGF0YSwgYXBw
ZW5kU2l6ZSk7CiAgICAgICAgICAgICBkYXRhICs9IGFwcGVuZFNpemU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCmlu
ZGV4IDczZTlkZmVjMDZmZDc4N2YzYjA2YjNkYzlkYTY1YTU1MDRkMWMwMjkuLjY1OTEyNTFiODYy
N2RmMzZjZjJlYjlmNzQ3OTNlZjQ4OWNhMWU5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZVJlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCkBAIC0zMywxMSAr
MzMsMTggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBVbmlx
dWVSZWY7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+Ci1VbmlxdWVSZWY8
VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVl
UmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKIHsKICAgICByZXR1cm4g
VW5pcXVlUmVmPFQ+KCpuZXcgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KK1VuaXF1ZVJlZjxUPiBtYWtlVW5p
cXVlUmVmKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PHR5cGVuYW1lIFQ6Ol9fZmFzdEFsbG9jYXRlZENsYXNzLCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFQ+KHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBVbmlxdWVS
ZWYgewogcHVibGljOgpAQCAtNjMsNyArNzAsNyBAQCBjbGFzcyBVbmlxdWVSZWYgewogICAgIHN0
ZDo6dW5pcXVlX3B0cjxUPiBtb3ZlVG9VbmlxdWVQdHIoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVm
KTsgfQogCiBwcml2YXRlOgotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZy
aWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOworICAgIHRlbXBsYXRl
PGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBV
PiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5pcXVlUmVmKFQmIG90aGVyKQpAQCAt
NzksMyArODYsNCBAQCBjbGFzcyBVbmlxdWVSZWYgewogCiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsK
IHVzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZjsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxv
b3BHTGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCmluZGV4IDVl
NWJhOGFiZWJkYmQ0OWJiYjgzN2RkNGM0ZmQ2OWJkNmZmYzM2MWYuLmZiMjExZDBhMjk2MWRmYzE2
YWE2ZTIxYTIxYTk3NGRmZjE1MjY5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
UnVuTG9vcEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMg
ZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBnX3NvdXJjZV9zZXRf
bmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKICAg
ICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190
aW1lKCkgKyBkdXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGF0
Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBnX3NvdXJjZV9zZXRfY2Fs
bGJhY2soc291cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewog
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQoc3Rh
dGljX2Nhc3Q8RGlzcGF0Y2hBZnRlckNvbnRleHQqPih1c2VyRGF0YSkpOwogICAgICAgICBjb250
ZXh0LT5kaXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZGNiYTA2
MDgyYzVmNjZlMzE5YTE1ZWU1OTdmYzY0OTc2NmIwNWU2Yy4uNWJmNGU2ZDAxZGU4NDNlZDI4Nzg4
M2VhM2EwM2U4NDk0OTNiZWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0x
NzksNyArMTc5LDcgQEAgY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0
b3I6OkltcGwgewogfTsKIAogU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6
Okl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQot
ICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmll
dy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJy
ZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykp
LCBpbmRleCkpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJp
bmdWaWV3LmlzTnVsbCgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdW
aWV3KSksIGluZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZl
c3RQYXJzZXIuY3BwCmluZGV4IGZkYjhjZTI5MmQ3MzhkYTQyMDM4YWE5NjVhZjNhY2ExNzhhODBj
ZWIuLjhkYzc2ZmEyZTU5ZWE2N2UwMjE3MzhjMzExYTM1NzdmNGQzNmU2OTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1h
bmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
dm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFByb3BlcnR5SW52YWxp
ZFVSTChjb25zdCBTdHJpbmcmIHByb3AKIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6
bG9nRGV2ZWxvcGVyV2FybmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1f
Y29uc29sZUNvbnRleHQpCi0gICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNz
YWdlU291cmNlOjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZl
bDo6V2FybmluZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3Ms
IG1fbWFuaWZlc3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVzc2FnZSkpKTsKKyAgICAgICAgbV9j
b25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBKU0M6Ok1lc3NhZ2VUeXBl
OjpMb2csIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJQYXJzaW5nIGFw
cGxpY2F0aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5zdHJpbmcoKSwgIjogIl9zLCBt
ZXNzYWdlKSkpOwogfQogCiBVUkwgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VTdGFy
dFVSTChjb25zdCBKU09OOjpPYmplY3QmIG1hbmlmZXN0LCBjb25zdCBVUkwmIGRvY3VtZW50VVJM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVh
Y29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5j
cHAKaW5kZXggOWJmYTVmOTQ5OTRiMDU0NTA2YjgyNmEzMTRiODI1ODI3ZWE0MWFkYi4uN2U0Zjc5
NDcxZTJjNTlmZTcxYzE0ODEzMmY0YjU1MWQ4ZmZjNzkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC01Miw3ICs1Miw3IEBA
IE5hdmlnYXRvckJlYWNvbiogTmF2aWdhdG9yQmVhY29uOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdh
dG9yKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JCZWFj
b24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmln
YXRvcik7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAg
ICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01XaW5kb3dDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01X
aW5kb3dDYWNoZXMuY3BwCmluZGV4IDVlZDFmNWNjYTY0MWViMDRlYzBlMGEwY2UwNmM4MzcyNDU2
OGEyZmYuLjYxNTM5NDMwZGZiOTYxNmZkMjg4ZmVkOTJjYjk0NGZmNDQ2YjAxMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKQEAgLTQ5
LDcgKzQ5LDcgQEAgRE9NV2luZG93Q2FjaGVzKiBET01XaW5kb3dDYWNoZXM6OmZyb20oRE9NV2lu
ZG93KiB3aW5kb3cpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdp
bmRvd0NhY2hlcyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5k
b3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dv
cmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcAppbmRleCAwNjU2YmVmMGIxNzE4ZTMzZGJjN2ZhMGVl
NjBjNTdkNDhlMzhkNGU4Li41MTE4YTQ4ODUwZjI0MmQwNDRkM2I0MGZmMGUzYjIzYmI5NmUyOGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNj
b3BlQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckds
b2JhbFNjb3BlQ2FjaGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBXb3JrZXJHbG9iYWxTY29wZUNh
Y2hlcyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20oV29ya2VyR2xvYmFsU2NvcGUmIHNj
b3BlKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlcyo+KFN1cHBsZW1lbnQ8V29ya2VyR2xvYmFsU2NvcGU+Ojpmcm9tKCZzY29wZSwg
c3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVz
PihzY29wZSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXM+KHNjb3BlKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JD
cmVkZW50aWFscy5jcHAKaW5kZXggNzFmNDM4Y2Y3ODZjNzZkN2I1ODcyMTU1OTc2NjhiNjIzNjFi
NTk5My4uMTE4MWJkOTg1YTIyYmE0OTNmODM2MzFkN2U0MWZlZTg3OWI1NmIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JD
cmVkZW50aWFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFu
YWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTmF2aWdh
dG9yQ3JlZGVudGlhbHMqIE5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKE5hdmlnYXRvciogbmF2
aWdhdG9yKQogewogICAgIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8TmF2aWdhdG9yQ3JlZGVudGlhbHMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yQ3Jl
ZGVudGlhbHM+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2
aWdhdG9yQ3JlZGVudGlhbHM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCBi
NmZkNjhkNjcyZWRlMzg3NzhjMTVjNmZlYWFmNDZiNDU1ZTVhMWNkLi43NWVkYjZhOTM2Mzg4MGU1
ODdjMzU3NTZiMTRkZWM5ZjliNDVlNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTEzMyw3
ICsxMzMsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgICAgICBhdXRvIHN5c3RlbUlE
ID0gSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVrU3lzdGVtSUQodmll
dywgb2Zmc2V0KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAg
ICAgICAgIGlmIChzeXN0ZW1JRCA9PSBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6OmZhaXJQ
bGF5U3lzdGVtSUQoKSkgewotICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gc3RkOjptYWtlX3Vu
aXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CisgICAgICAgICAgICBhdXRvIGZw
c1Bzc2ggPSBtYWtlVW5pcXVlPElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveD4oKTsKICAgICAg
ICAgICAgIGlmICghZnBzUHNzaC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBwc3NoQm94ZXMuYXBwZW5kKFdURk1v
dmUoZnBzUHNzaCkpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRh
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oc3lzdGVtSUQpOwogI2VuZGlmCi0gICAgICAg
IGF1dG8gcHNzaEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94PigpOworICAgICAgICBhdXRvIHBzc2hCb3ggPSBtYWtlVW5pcXVlPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKICAgICAgICAgaWYgKCFwc3NoQm94
LT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmNwcAppbmRleCA4MjYyODkzZmUwYWY5OTkxNGVkMzllOTYwY2YxMGE3
NTM0MDcwNWI2Li44MzdkZjEyM2FlNTk2ZjM1MzdjOTE1MjcwM2UzZDI3MWIzNDZlYjUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHAKQEAgLTYxLDE1ICs2MSwxNSBAQCBzdHJ1Y3QgQ0RNRmFjdG9yeSB7
CiBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCkKIHsK
ICAgICBzdGF0aWMgYXV0byBjZG1zID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxDRE1GYWN0
b3J5Kj4gewotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCisg
ICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5p
cXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKICAgICAgICAgICAgIExlZ2Fj
eUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeUNETVByaXZhdGVD
bGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICAgICAgICAgLy8gRklY
TUU6IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkz
MTgsIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtd
KExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRp
YVBsYXllcj4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBj
ZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LAog
ICAgICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RN
UHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogI2lm
IChIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pIHx8IEhBVkUoQVZTVFJFQU1TRVNTSU9OKSkgJiYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RN
KiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQz4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2RtKTsg
fSwKICAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5
U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbUFu
ZE1pbWVUeXBlKSwKICNlbmRpZgogICAgIH0pOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE0+IExlZ2FjeUNETTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKQogICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE0+KGtl
eVN5c3RlbSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNPihrZXlTeXN0ZW0pOwog
fQogCiBMZWdhY3lDRE06OkxlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNLmgKaW5kZXggNDU4ZWM1M2I0MzM3YjE3MTA1NTZmOGExN2I0ZWYwMWVmY2UxNTY0ZS4u
ZmI1ZGExZjE2ZGEwMmVjODRjMzQ3N2QzNTVmZTBhNWU4OTY0MDZhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RN
LmgKQEAgLTUwLDcgKzUwLDggQEAgY2xhc3MgTGVnYWN5Q0RNQ2xpZW50IHsKICAgICB2aXJ0dWFs
IFJlZlB0cjxNZWRpYVBsYXllcj4gY2RtTWVkaWFQbGF5ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29u
c3QgPSAwOwogfTsKIAotY2xhc3MgTGVnYWN5Q0RNIHsKK2NsYXNzIExlZ2FjeUNETSBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVn
YWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggYzkzMTZkZmQ4YWJiNDA1NDkyZjU1NWVi
M2QxYjNkMDkxN2NlZmY1MC4uM2E4YzAwZjUyMzFmNTJhNmU4OWQxODNkMTUxMWMzYWM4NzczYTFm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lD
RE1TZXNzaW9uPiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENETVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1T
ZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKaW5kZXggNjYwMmViZmU5MDQ0NWM1NTkzYzZlNWZm
OGYxYTViMmUyZGQ5MmMxNy4uY2ZiMDI2YzIwMmRhNmZlMDlmYzhkY2I0NGZmYmJhY2I4YTlkYzky
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgK
QEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwog
CiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFQbGF5ZXIgOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFj
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
Q0RNUHJpdmF0ZU1lZGlhUGxheWVyKExlZ2FjeUNETSogY2RtKQogICAgICAgICA6IG1fY2RtKGNk
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMmY3
YjAzNTM5ZWY4ZWE0NzRlMjM2ZDA1ZDllMTdmZWM0ODRlNjI3ZS4uYmM3NzdmMGNiYzhjZTdiODll
OTQzYjhhNjNlNGU2ZTgyODliMzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vz
c2lvbkNsZWFyS2V5LmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBDRE1TZXNzaW9uQ2xlYXJLZXkgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7Citj
bGFzcyBDRE1TZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkNs
ZWFyS2V5KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9u
Q2xlYXJLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKaW5kZXggYWRkYzU0ODk2YjhhNDQzOGNmYmZkMDY1ODBhZGJjODYwYTgxZjg2NC4u
ZGI2MzkwZTdmOTkyNTk3N2I4N2NhMDA5ZWRhYmQ1MWNkYjY2NzMzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI0NCw3ICsyNDQs
NyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRj
aEJvZHlDb25zdW1lciogY29uc3VtZXIpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyLmVtcGxh
Y2UoKnRoaXMpOwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
ZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOworICAgIG1fYmxvYkxvYWRlci0+
bG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIp
OwogCiAgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGJsb2IpOwogICAgIGlmICghbV9ibG9iTG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApp
bmRleCBjZDM0NWViOWVjMzQwYzM2ZTBmMGE2ZWVkODJkZDk4OGI0Zjk3ZDM5Li45NDAxM2NmNGVh
NjUyMzhkODNiOWI0YzgxZGI3ZDE4MTY1MzI0NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNo
UmVxdWVzdCYgcmVxdWVzdAogCiAgICAgcmVzcG9uc2UtPmFkZEFib3J0U3RlcHMocmVxdWVzdC5z
aWduYWwoKSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxCb2R5TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNrKSk7
CisgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG1ha2VVbmlxdWU8Qm9keUxvYWRlcj4ocmVz
cG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwogICAgIGlmICghcmVzcG9u
c2UtPm1fYm9keUxvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3Bv
bnNlLT5tX2JvZHlMb2FkZXIgPSBudWxscHRyOwogfQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCiAKIGJvb2wgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRo
aXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7CisgICAgbV9sb2FkZXIgPSBtYWtl
VW5pcXVlPEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigp
KTsKICAgICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIG1f
bG9hZGVyLT5pc1N0YXJ0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAppbmRleCA2MTAyMDg5OWNiYzRhN2U0MzNiMTUx
ZGNjYWViZmU5MDc2NGQzZTJkLi44NTBkMjJkZTI4NWJiMzM1ZDIyZThjMmUyNTNiN2FiNmUwYzYw
MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9y
R2FtZXBhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRv
ckdhbWVwYWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvckdhbWVwYWQqIE5hdmlnYXRv
ckdhbWVwYWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2Ft
ZXBhZCogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdhbWVwYWQqPihTdXBwbGVt
ZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOwogICAgICAgICBzdXBwbGVtZW50ID0g
bmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxl
bWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IGIwOWZjMzQzM2JiZmJiNzI4ZjMxNWMxNTMzYTZmMmM5ZTRmYzAwNzEu
LmNkODA3MGIyMDdkYjhhMzQ0MDI2Y2ZmNjEwNWI4NWVlMTliYzUyNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFn
ZSogcGFnZSwgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQocGFnZSk7
Ci0gICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvbkNvbnRy
b2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8o
cGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVl
PEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCBiMzRmNDlhNjcxZDg1
ZjUxNDJiOGJhZjBmNTJiYTk5MWFjNDM1OWRjLi4zNWRmYmY4ZjNmMjU2OWMwMTM1MzU2NjMwMGY1
Yjc4MzdkZTI4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCBO
YXZpZ2F0b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20oTmF2aWdhdG9y
JiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxOYXZpZ2F0b3JHZW9sb2NhdGlvbio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6
ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50
KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdh
dG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdp
bmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYzcyMDNhOWE4NjQwOTcwNTBkM2RjMDA3OTJm
N2E2YjU4MWZhYTI1ZS4uNWU5ZDk3OTY2YmZkZTU4ZTY2MDk5YTUwOWU2MThiODRjMThkMDVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9E
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKERPTVdpbmRvdyog
d2luZG93KQogewogICAgIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93
Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5k
b3dJbmRleGVkRGF0YWJhc2U+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRv
dywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CmluZGV4IGY0MzA5MGM0ZGNjM2VkZTVlMjdkMWFhNDQzODQ0NDdkODQ5YzY0MGIuLjlhNzgxMjc4
NDYzZWQwYTRhMGFkZGQzZjdkYjBjNTY1Njk2MmI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTUxNyw3ICs1MTcs
NyBAQCBFeGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29u
c3QgU3RyaW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmRleCcgb24gJ0lE
Qk9iamVjdFN0b3JlJzogVGhlIHNwZWNpZmllZCBpbmRleCB3YXMgbm90IGZvdW5kLiJfcyB9Owog
Ci0gICAgYXV0byBpbmRleCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBpbmRleCA9IG1ha2VVbmlx
dWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CiAK
ICAgICBSZWY8SURCSW5kZXg+IHJlZmVyZW5jZWRJbmRleCB7ICppbmRleCB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggZmEyY2Q3ZWFkMDliNjA1NTI1YjhjYjQ0MWVmNzAwMWQ4MzM1MDEwMC4uNDIyNDNmYmE1NzMx
Mjk1NDE4ODk0YTMyMDQzZTg5ZTBiMmMxYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYgKCFpbmZvIHx8ICghZm91bmQgJiYgIWlz
VmVyc2lvbkNoYW5nZSgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJy
b3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3RvcmUnIG9uICdJREJUcmFuc2FjdGlvbic6
IFRoZSBzcGVjaWZpZWQgb2JqZWN0IHN0b3JlIHdhcyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBh
dXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBhdXRvIG9iamVjdFN0b3Jl
ID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
KmluZm8sICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdl
dCgpOwogICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmVOYW1lLCBX
VEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBSZWY8SURCT2JqZWN0
U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RT
dG9yZUluZm8mCiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNlZE9iamVjdFN0
b3JlTG9jayk7CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJP
YmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOworICAg
IGF1dG8gb2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUg
PSBvYmplY3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KGlu
Zm8ubmFtZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJP
YmplY3RTdG9yZSYgb2JqZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jcmVhdGVJbmRl
eE9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7CiAgICAgfSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9i
amVjdFN0b3JlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpjcmVhdGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24m
IG9wZXJhdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2Nv
cGVJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGE0ODUwM2I0ZDJkODA0Mjk0Njg0YTY1YTY1ZWJk
NjRmMjMzY2Q3YjkuLjliNzU3NzQ5MjFiNDY1MDZmNTgzZGU3ZmVjNDI1MGU4NTRhY2U1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNj
b3BlSW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcg
QEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlOjpmcm9tKFdvcmtlckcKICAgICAgICAgaWYgKCFjb25uZWN0aW9uUHJveHkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihz
Y29wZSwgKmNvbm5lY3Rpb25Qcm94eSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVj
dGlvblByb3h5KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3Vw
cGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXgg
OTQ4Y2Y3NDY2M2FlNjljODJkYTQ0NGUwOTM0NzNkZDg1NmQ0ZGU5My4uMzc3MTFkYzEwM2RiNmM5
YTliODEzZGJjOWRmNzk5YjdlMjZhNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gSURCQ29u
bmVjdGlvblRvU2VydmVyOjpjcmVhdGUoSURCQ29ubmVjdGlvblRvU2VydmVyRGUKIAogSURCQ29u
bmVjdGlvblRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIoSURCQ29ubmVjdGlvblRvU2Vy
dmVyRGVsZWdhdGUmIGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShtYWtlV2Vha1B0cihkZWxl
Z2F0ZSkpCi0gICAgLCBtX3Byb3h5KHN0ZDo6bWFrZV91bmlxdWU8SURCQ29ubmVjdGlvblByb3h5
PigqdGhpcykpCisgICAgLCBtX3Byb3h5KG1ha2VVbmlxdWU8SURCQ29ubmVjdGlvblByb3h5Pigq
dGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDI3NTNm
ZDBjMjQ1N2I5YzA5ZDlkODllNGY3NjJiNDc5ZjhiNDQwYjEuLjhlMWRlMDZkNzFlOGYwYjIyM2Q2
ODZlNWUxYThhMjIwOWI3NDM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApA
QCAtNDIsNyArNDIsNyBAQCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRp
b24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChtX2luZGV4
SWRlbnRpZmllcikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1ZXN0LnJlcXVlc3Rl
ZEluZGV4UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0LnBlbmRp
bmdDdXJzb3IoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7Cisg
ICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlm
aWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCiAgICAgbV9pZGJSZXF1ZXN0ID0g
JnJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGY2YWI0ZjNhYjJjMjhiMGVlMjI0Njg5NGEwZGU1
ODRiZDA4NzUxZmQuLmY1NTY4ZTMyNWQzNzAxMWEyNzVlMDFkZjk2NmRmZGY1OTUyZThiMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVW5pcXVlSURCRGF0YWJhc2UmIElEQlNlcnZl
cjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW4KIAog
ICAgIGF1dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLmFkZChp
ZGVudGlmaWVyLCBudWxscHRyKTsKICAgICBpZiAodW5pcXVlSURCRGF0YWJhc2UuaXNOZXdFbnRy
eSkKLSAgICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworICAgICAgICB1
bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFVuaXF1ZUlEQkRh
dGFiYXNlPigqdGhpcywgaWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gKnVuaXF1ZUlEQkRhdGFi
YXNlLml0ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJ
REJEYXRhYmFzZQogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9z
ZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdT
dG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJ
REJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0
b3J5UGF0aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcik7CiB9CiAKIHZvaWQg
SURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
KQpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgSURCU2VydmVyOjpRdW90YVVzZXI6OmluaXRpYWxp
emVTcGFjZVVzZWQodWludDY0X3Qgc3BhY2VVc2VkKQogSURCU2VydmVyOjpRdW90YVVzZXImIElE
QlNlcnZlcjo6ZW5zdXJlUXVvdGFVc2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewog
ICAgIHJldHVybiAqbV9xdW90YVVzZXJzLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAmb3JpZ2luXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVv
dGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmln
aW4gfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVv
dGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmln
aW4gfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3Bw
CmluZGV4IDY5ODNjOWQ3ZWFmZjU2MTY3MjA0ZDk1MmYxZjIyNjdiYjQwY2E0YmEuLjhkOTIxZDhl
ZmU2YmE4NDBhMzBkNjFkZmRjNmE3MjFlODI4YTQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3Bw
CkBAIC05Miw3ICs5Miw3IEBAIElEQkVycm9yIEluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKGNv
bnN0IElEQktleURhdGEmIGluZGV4S2V5LCBjb25zdCBJREJLZXlEYXRhCiAgICAgICAgIHJldHVy
biBJREJFcnJvcihDb25zdHJhaW50RXJyb3IpOwogCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRl
eFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZUVudHJ5PihtX3VuaXF1ZSk7CiAKICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5hZGRLZXkodmFsdWVLZXkpOwogICAgIG1fb3JkZXJlZEtleXMuaW5zZXJ0
KGluZGV4S2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDQ3Y2M0MmZkMjZkNjQ3M2M2NDE5MjdlOTkyZDRlYzZlOGQ3YmY4ZWUuLjVlNzE0
NDk3ODRhMGRhMDc2Nzc4OWE4ZGVkYzUyMjY4OWY0ZDhkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3Bh
Y2UgSURCU2VydmVyIHsKIAogc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uPiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6Y3JlYXRlKE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8p
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7CiB9CiAKIE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihN
ZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJiBpbmZvKQpAQCAtNTIsNyArNTIsNyBAQCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oTWVtb3J5SURCQmFja2luZ1N0bwogICAg
ICAgICBJREJEYXRhYmFzZUluZm8gaW5mbzsKICAgICAgICAgYXV0byBlcnJvciA9IG1fYmFja2lu
Z1N0b3JlLmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGluZm8pOwogICAgICAgICBpZiAoZXJy
b3IuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgICAgICAgICAgbV9vcmlnaW5h
bERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICB9
CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdAogCiAgICAg
YXV0byBvcmlnaW5hbEFkZFJlc3VsdCA9IG1fb3JpZ2luYWxWYWx1ZXMuYWRkKCZvYmplY3RTdG9y
ZSwgbnVsbHB0cik7CiAgICAgaWYgKG9yaWdpbmFsQWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+KCk7CiAKICAgICBhdXRvKiBtYXAgPSBvcmlnaW5h
bEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggN2QxNDJiMDA1MGFiNjA4ODFlMzg3YmU4YzE5ODk0N2FjNmU4ZGQ4
MS4uY2ZmZTMzMzdmNzk0NDhiOGMyMTNkYmJlNWZhMzViNGQzYTcwZjJmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHVpbnQ2NF90
IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsKIAogc3RkOjp1bmlxdWVf
cHRyPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIH0K
IAogTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURC
RGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtNjEsNyArNjEsNyBAQCBNZW1vcnlJ
REJCYWNraW5nU3RvcmU6On5NZW1vcnlJREJCYWNraW5nU3RvcmUoKSA9IGRlZmF1bHQ7CiBJREJF
cnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElE
QkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VJbmZvKQotICAgICAg
ICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lk
ZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDAp
OwogCiAgICAgaW5mbyA9ICptX2RhdGFiYXNlSW5mbzsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9
OwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJh
c2VJbmZvKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbykKICAgICAvLyBJdCBpcyBub3QgdmFs
aWQgdG8gZGlyZWN0bHkgc2V0IGRhdGFiYXNlIGluZm8gb24gYSBiYWNraW5nIHN0b3JlIHRoYXQg
aGFzbid0IGFscmVhZHkgc2V0IGl0cyBvd24gZGF0YWJhc2UgaW5mby4KICAgICBBU1NFUlQobV9k
YXRhYmFzZUluZm8pOwogCi0gICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oaW5mbyk7CiB9CiAKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlu
ZGV4LmNwcAppbmRleCA0OWRkY2E2YmQ0MGQyOWQ0MmUzOGI4NTEzMWM4OWZkZmU3ZDQ3OTJkLi44
NTk1ZGJiOGY0YTdlZTNkMTkxZTMxZmI2MTBiMDQ5NzViODc0NjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAK
QEAgLTE5NCw3ICsxOTQsNyBAQCBJREJFcnJvciBNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkoY29u
c3QgSURCS2V5RGF0YSYgdmFsdWVLZXksIGNvbnN0IEluZGV4S2V5JiBpbgogICAgIExPRyhJbmRl
eGVkREIsICJNZW1vcnlJbmRleDo6cHJvdmlzaW9uYWxQdXRJbmRleEtleSIpOwogCiAgICAgaWYg
KCFtX3JlY29yZHMpIHsKLSAgICAgICAgbV9yZWNvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRl
eFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUoKSk7CisgICAgICAgIG1fcmVjb3JkcyA9IG1ha2VV
bmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOwogICAgICAgICBub3RpZnlD
dXJzb3JzT2ZBbGxSZWNvcmRzQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBA
IE1lbW9yeUluZGV4Q3Vyc29yKiBNZW1vcnlJbmRleDo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1lbW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7
CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
T2JqZWN0U3RvcmUuY3BwCmluZGV4IGVkNmViYTkyN2YxZjRmNmI5YzMwNjhmNmI1ZDg4ZGUyOTk3
MjY3ZWIuLjViNDRhNzM4NzhjOWZkZDdhMWUwNWE5NWI3NjU3ZWJlNjM2MzUxNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMjU5LDggKzI1OSw4IEBAIElEQkVycm9yIE1lbW9yeU9i
amVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uCiAKICAgICBpZiAoIW1fa2V5VmFsdWVTdG9yZSkgewogICAgICAgICBBU1NFUlQoIW1f
b3JkZXJlZEtleXMpOwotICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PEtleVZhbHVlTWFwPigpOwotICAgICAgICBtX29yZGVyZWRLZXlzID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJLZXlEYXRhU2V0PigpOworICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBtYWtlVW5pcXVl
PEtleVZhbHVlTWFwPigpOworICAgICAgICBtX29yZGVyZWRLZXlzID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8SURCS2V5RGF0YVNldD4oKTsKICAgICB9CiAKICAgICBhdXRvIG1h
cFJlc3VsdCA9IG1fa2V5VmFsdWVTdG9yZS0+c2V0KGtleURhdGEsIHZhbHVlLmRhdGEoKSk7CkBA
IC00OTcsNyArNDk3LDcgQEAgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IqIE1lbW9yeU9iamVjdFN0
b3JlOjptYXliZU9wZW5DdXJzb3IoY29uc3QgSURCQ3Vyc29ySW5mbyYKICAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigq
dGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVt
b3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0aGlzLCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cAppbmRleCA0ZjIwOGU0ZDA2MDRiODc3ZGQxZDc0ODY3YjhlM2UyODcyN2FjMDQ0Li42ZTg5M2Y5
ODQ0ZTcwOGVkMTk3MmI0YTJjMThiMTU5ZmE3MGI1OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFs
CiAgICAgfQogCiAgICAgLy8gVGhpcyBpbml0aWFsIGRhdGFiYXNlIGluZm8gbWF0Y2hlcyB0aGUg
ZGVmYXVsdCB2YWx1ZXMgd2UganVzdCBwdXQgaW50byB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIu
ZGF0YWJhc2VOYW1lKCksIDApOworICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdE
YXRhYmFzZUluZm8oKQpAQCAtNjU4LDcgKzY1OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRh
YmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJ
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGRhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7Cisg
ICAgYXV0byBkYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJh
c2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOwogCiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1l
bnQgc3FsKCptX3NxbGl0ZURCLCAiU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jLCBt
YXhJbmRleElEIEZST00gT2JqZWN0U3RvcmVJbmZvOyJfcyk7CkBAIC04MjAsNyArODIwLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5m
byhJREJEYXRhYmFzZUluZm8mIGluZm8KIAogICAgIFN0cmluZyBkYkZpbGVuYW1lID0gZnVsbERh
dGFiYXNlUGF0aCgpOwogCi0gICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRl
RGF0YWJhc2U+KCk7CisgICAgbV9zcWxpdGVEQiA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+
KCk7CiAgICAgaWYgKCFtX3NxbGl0ZURCLT5vcGVuKGRiRmlsZW5hbWUpKSB7CiAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRi
RmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKQEAgLTkw
MywxMSArOTAzLDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFu
c2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZXN0YWJsaXNoIHRyYW5zYWN0aW9u
IGlkZW50aWZpZXIgdGhhdCBhbHJlYWR5IGV4aXN0cyJfcyB9OwogICAgIH0KIAotICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0
aW9uPigqdGhpcywgaW5mbyk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rpb24+KCp0aGlzLCBpbmZvKTsKIAogICAgIGF1dG8gZXJy
b3IgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5iZWdpbigqbV9zcWxpdGVEQik7CiAgICAg
aWYgKGVycm9yLmlzTnVsbCgpICYmIGluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6
VmVyc2lvbmNoYW5nZSkgewotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVy
c2lvbkNoYW5nZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFz
ZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5n
ZSA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8pOwogCiAgICAg
ICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsICJVUERBVEUgSURCRGF0YWJhc2VJ
bmZvIFNFVCB2YWx1ZSA9ID8gd2hlcmUga2V5ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKICAg
ICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC0yNjExLDcgKzI2MTEsNyBA
QCBTUUxpdGVTdGF0ZW1lbnQqIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50
KFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6UwogICAgIH0KIAogICAgIGlmIChtX3NxbGl0ZURCKSB7
Ci0gICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0g
c3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQp
OworICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9
IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKICAg
ICAgICAgaWYgKG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldLT5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0
YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKaW5kZXggZjg0MDVhNzk4YTM2ODEwZGM1NzZhZjFlNzNiY2FmNTMxMDIzN2JhZi4uYzZi
M2ZkOTUzYTBkNTNhYzE1NjhlMjg0OGNiYzc4YTEyZjE5NTc1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0
ID0gODsKIAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29y
OjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElE
QkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8pOworICAgIGF1dG8gY3Vyc29yID0g
bWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKIAogICAgIGlm
ICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC01OSw3ICs1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0
ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3RpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5n
U3RvcmVDdXJzb3IoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50
NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCB1aW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIHJhbmdlKQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxT
UUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5n
ZSk7CisgICAgYXV0byBjdXJzb3IgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNh
Y3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIHJhbmdlKTsKIAogICAgIGlmICghY3Vyc29y
LT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTks
NyArMTk5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChj
b25zdCBTdHJpbmcmIHNxbCkKICAgICBBU1NFUlQoIW1fY3VycmVudFVwcGVyS2V5LmlzTnVsbCgp
KTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKSk7CiAKLSAg
ICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5z
YWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOworICAgIG1fc3Rh
dGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0
ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7CiAKICAgICBpZiAobV9zdGF0ZW1lbnQt
PnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
Y3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKHByZXBhcmUvaWQpIC0gJyVzJyIsIG1fdHJhbnNhY3Rp
b24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwpAQCAt
NDY0LDcgKzQ2NCw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vy
c29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFs
dWUpCi0gICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwg
YmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1
ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0
YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJpbWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGls
ZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7CkBAIC00ODYsNyArNDg2LDcgQEAgU1FMaXRlSURC
Q3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVj
b3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAg
ICAgICAgICAgIG9iamVjdFN0b3JlU3RhdGVtZW50LmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBr
ZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0
YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZh
bHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8v
IFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBT
a2lwIG92ZXIgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBhNmEzYzVm
ZmYzMzgwYzI1ZWY3MzYxZTY4OGJlZjM2YzA2MTVmYzgzLi5kMjEyZGUyYjZiODhhZmZlMGEzNWIw
ZmQwZmQzM2ZjODY3Y2VjYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKFNRTGl0
ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24p
OwogCi0gICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJh
bnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6
UmVhZG9ubHkpOworICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRy
YW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6
OlJlYWRvbmx5KTsKICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgaWYg
KG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCmluZGV4IDFlYmMwODE4Zjg5ZWYzZjc2YjQ2YjI3ZGU3NGYzMWNjYzNlNDZjY2YuLmJlNTkx
Yjk4ODQwZWRhZDY0ODBhZjBjNDFiN2M4ZTkyYzVmMTJhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERl
bGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBkZWxldGVkVmVyc2lvbikKICAgICAvLyB3ZSB3b24n
dCBoYXZlIGEgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mby4gSW4gdGhhdCBjYXNlLCB3
ZSdsbCBtYW51ZmFjdHVyZSBvbmUgdXNpbmcgdGhlCiAgICAgLy8gcGFzc2VkIGluIGRlbGV0ZWRW
ZXJzaW9uIGFyZ3VtZW50LgogICAgIGlmICghbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5m
bykKLSAgICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0
ZWRWZXJzaW9uKTsKKyAgICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRl
bGV0ZWRWZXJzaW9uKTsKIAogICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0KSB7CiAgICAg
ICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPm5vdGlmeURpZERlbGV0ZURhdGFiYXNlKCptX21v
c3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5m
byYgaW5mbywgY29uc3QgSQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIp
OwogICAgIAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGluZm8pOwogICAgIG1fYmFja2luZ1N0b3JlT3BlbkVycm9yID0gZXJyb3I7CiAKICAg
ICBBU1NFUlQobV9pc09wZW5pbmdCYWNraW5nU3RvcmUpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5n
ZURhdGFiYXNlQ29ubmVjdGlvbiB8fCAmbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmRhdGFi
YXNlQ29ubmVjdGlvbigpID09IG1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CiAg
ICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFz
ZUluZm8oKSk7Ci0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFz
ZUluZm8oKSk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8o
KSk7CiAgICAgfQogCiAgICAgSURCRXJyb3IgcmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkg
PT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2Fj
dGlvbi0+cmVzdWx0KCkgOiBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcAppbmRleCBhZjkyZWJjNjM2ODg1YzY5YzI1ZTUwMjk5Y2U2YzRhY2VhYTY1
OWM4Li5lNGQ2NjlkYThhYzYyOTE2ZjdiY2UwMzI4MDlhNTU5ZTg1M2NjODJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC01MSw3ICs1MSw3IEBA
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKIAogICAgIGlm
IChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9u
Y2hhbmdlKQotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOworICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZv
KCkpOwogCiAgICAgYXV0byYgc2VydmVyID0gZGF0YWJhc2UtPnNlcnZlcigpOwogICAgIG1fc2Vy
dmVyID0gbWFrZVdlYWtQdHIoc2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCmluZGV4IGIxMGQ4
NDA5OWIyNTI4ZTZmNzNjMjhiMTUwNGE4YTkzMjRkMGIyMWEuLjIxNjQxNmFmYTExY2YyNTVkMzZk
ZWZiM2VmZjM2ZWZhZjE5NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoKQogCiBJREJSZXF1ZXN0RGF0YTo6
SURCUmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5l
Y3Rpb25Qcm94eSwgY29uc3QgSURCT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvblByb3h5LnNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQorICAgICwg
bV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29u
bmVjdGlvblByb3h5LCByZXF1ZXN0KSkKICAgICAsIG1fZGF0YWJhc2VJZGVudGlmaWVyKHJlcXVl
c3QuZGF0YWJhc2VJZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3RlZFZlcnNpb24ocmVxdWVz
dC52ZXJzaW9uKCkpCiAgICAgLCBtX3JlcXVlc3RUeXBlKHJlcXVlc3QucmVxdWVzdFR5cGUoKSkK
QEAgLTQ5LDggKzQ5LDggQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHIKIAogSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbikKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIob3BlcmF0aW9uLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5jb25uZWN0aW9uUHJveHkoKS5zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCi0gICAgLCBtX3Ry
YW5zYWN0aW9uSWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmll
cj4ob3BlcmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAsIG1fcmVxdWVzdElk
ZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVu
dGlmaWVyKCkpKQorICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCiAg
ICAgLCBtX29iamVjdFN0b3JlSWRlbnRpZmllcihvcGVyYXRpb24ub2JqZWN0U3RvcmVJZGVudGlm
aWVyKCkpCiAgICAgLCBtX2luZGV4SWRlbnRpZmllcihvcGVyYXRpb24uaW5kZXhJZGVudGlmaWVy
KCkpCiB7CkBAIC01OCw3ICs1OCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIG1faW5k
ZXhSZWNvcmRUeXBlID0gb3BlcmF0aW9uLmluZGV4UmVjb3JkVHlwZSgpOwogCiAgICAgaWYgKG9w
ZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNv
cklkZW50aWZpZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CiB9
CiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
b3RoZXIpCkBAIC03MSwxMSArNzEsMTEgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRh
KGNvbnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKICAgICAsIG1fcmVxdWVzdFR5cGUob3RoZXIu
bV9yZXF1ZXN0VHlwZSkKIHsKICAgICBpZiAob3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAg
ICAgICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVxdWVz
dElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1f
cmVxdWVzdElkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmll
cikKLSAgICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAg
ICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIu
bV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmll
cik7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiB0aGF0LCBJc29sYXRlZENv
cHlUYWcpCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCB2b2lkIElEQlJlcXVlc3REYXRhOjppc29sYXRl
ZENvcHkoY29uc3QgSURCUmVxdWVzdERhdGEmIHNvdXJjZSwgSURCUmVxdWVzdERhdGEmCiAgICAg
ICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJZGVudGlmaWVyID0gc291cmNlLm1fZGF0YWJhc2VJ
ZGVudGlmaWVyLT5pc29sYXRlZENvcHkoKTsKIAogICAgIGlmIChzb3VyY2UubV9yZXF1ZXN0SWRl
bnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50
aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7
CiAgICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgZGVzdGlu
YXRpb24ubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291
cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAg
IGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlm
IChzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNv
cklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNv
dXJjZS5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1
cnNvcklkZW50aWZpZXIpOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0RGF0YTo6c2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA0NWNmZmFlYTYw
M2E1M2I1OTkwNGM4YjE0YjdhMWRlZjdkMjVmMzEwLi40MDhiNGU0NjI4NzMzN2I5YWMzNDRhZmJm
NDY5MTU4NjhlODBmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGJv
b2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3JlcXVlc3RJZGVudGlmaWVyID0gV1RGTW92
ZShvYmplY3QpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
aGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVx
dWVzdC5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE3NCw3
ICsxNzQsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmpl
Y3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9jdXJzb3JJZGVudGlm
aWVyID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCmluZGV4IGE4OTQ1NGU2ZTYz
ZjZlYjdjYjUwMzhiOWM5MzJmYTIxODYzM2VkYzYuLjRjYmQ1ZDliZGYwYTg1MjNiZjdmNTJhYzVi
YzVjYjRiN2VkMTA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBJ
REJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIG90aGVyKQog
ICAgICwgbV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKIHsKICAgICBpZiAo
b3RoZXIubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CisgICAgICAg
IG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2Rh
dGFiYXNlSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBt
X3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigq
b3RoZXIubV90cmFuc2FjdGlvbkluZm8pOworICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IG1h
a2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOwog
ICAgIGlmIChvdGhlci5tX3Jlc3VsdEtleSkKLSAgICAgICAgbV9yZXN1bHRLZXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtleSk7CisgICAgICAgIG1fcmVz
dWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOwogICAg
IGlmIChvdGhlci5tX2dldFJlc3VsdCkKLSAgICAgICAgbV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKKyAgICAgICAgbV9nZXRS
ZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKICAg
ICBpZiAob3RoZXIubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7Cisg
ICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhl
ci5tX2dldEFsbFJlc3VsdCk7CiB9CiAKIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29u
c3QgSURCUmVzdWx0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtODcsMTUgKzg3LDE1
IEBAIHZvaWQgSURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlc3VsdERhdGEm
IHNvdXJjZSwgSURCUmVzdWx0RGF0YSYgZGVzCiAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRJbnRl
Z2VyID0gc291cmNlLm1fcmVzdWx0SW50ZWdlcjsKIAogICAgIGlmIChzb3VyY2UubV9kYXRhYmFz
ZUluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNl
SW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUluZm8g
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURC
RGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlv
bkluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElE
QlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90
cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJjZS5t
X3RyYW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwogICAg
IGlmIChzb3VyY2UubV9yZXN1bHRLZXkpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJL
ZXlEYXRhOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9
IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6
SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fZ2V0UmVzdWx0KQotICAgICAgICBkZXN0
aW5hdGlvbi5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqc291
cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2Uu
bV9nZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNl
Lm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJ
REJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0
QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxS
ZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogSURCUmVzdWx0RGF0
YSBJREJSZXN1bHREYXRhOjplcnJvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCkBAIC0xMTEsNyArMTExLDcgQEAg
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmUKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVl
c3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5E
YXRhYmFzZVN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCkt
PmluZm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERh
dGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQog
ICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1
bHQubV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZDsKICAg
ICByZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uZGF0
YWJhc2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFz
ZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOwotICAgIHJlc3VsdC5tX3RyYW5zYWN0
aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlv
bi5pbmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0
YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5p
bmZvKCkpOworICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJh
bnNhY3Rpb25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7SURCUmVzdWx0
VHlwZTo6RGVsZXRlRGF0YWJhc2VTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJl
c3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihp
bmZvKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTcxLDIxICsxNzEsMjEg
QEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpyZW5hbWVJbmRleFN1Y2Nlc3MoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXEKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6
cHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsKICAgICBJREJSZXN1bHREYXRh
IHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OlB1dE9yQWRkU3VjY2VzcywgcmVxdWVzdElkZW50aWZp
ZXIgfTsKLSAgICByZXN1bHQubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURh
dGE+KHJlc3VsdEtleSk7CisgICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJL
ZXlEYXRhPihyZXN1bHRLZXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERh
dGEgSURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkK
IHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1
Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0
UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRz
U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBJREJHZXRBbGxSZXN1bHQmIGdldEFsbFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRh
IHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzLCByZXF1ZXN0SWRl
bnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldEFsbFJlc3Vs
dCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTIwNCwxNCArMjA0LDE0IEBAIElEQlJlc3VsdERhdGEgSURCUmVz
dWx0RGF0YTo6ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJl
c3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0
VHlwZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0
Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7
CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHRE
YXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJ
REJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNz
LCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3Vs
dCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDcxN2IzZTJkZTUzYjM1M2ZlYjZkZDc1NTAwYTBl
NWU2OGM5NDdhM2YuLjYyMDYyYTFlMjk1ZjdiNTk4MTU4OTViNTdiZWMwMDhlNWIxODc2YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1
bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBk
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3Qg
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAg
IHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE5Myw3ICsxOTMs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJS
ZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFz
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0
KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV90cmFuc2FjdGlvbklu
Zm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERl
Y29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKTsKKyAgICAgICAgYXV0byBvYmpl
Y3QgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElEQktleURh
dGE+IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAo
IW9wdGlvbmFsKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQkdldFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2Jq
ZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5t
X2dldFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAg
IGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CisgICAg
ICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgICAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
VHJhbnNhY3Rpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCmluZGV4IDk4M2MxYzExYzk5YjQ1YjZjZTU0NGRm
Y2FjMDM3ZTRjNzM3Mjk1YzMuLjRmYjk5OTE5ZjY3ZDVmN2M5YWJjMTA5ZTJlMzAwMGNjZTRjNDQw
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJUcmFuc2FjdGlvbkluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCkBAIC01NSw3ICs1NSw3IEBAIElEQlRy
YW5zYWN0aW9uSW5mbyBJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UoY29uc3QgSURC
U2VydmVyOjpJREJDb25uZWN0CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIHJlc3VsdCgoSURCUmVz
b3VyY2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pKSk7CiAgICAgcmVzdWx0Lm1fbW9kZSA9IElEQlRy
YW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZTsKICAgICByZXN1bHQubV9uZXdWZXJzaW9uID0g
bmV3VmVyc2lvbjsKLSAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CisgICAgcmVz
dWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
b3JpZ2luYWxEYXRhYmFzZUluZm8pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3LDcg
KzY3LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICwgbV9vYmplY3RTdG9yZXMoaW5mby5tX29iamVj
dFN0b3JlcykKIHsKICAgICBpZiAoaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAg
ICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxE
YXRhYmFzZUluZm8pOwogfQogCiBJREJUcmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0aW9uSW5m
byhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTkx
LDcgKzkxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkluZm86Omlzb2xhdGVkQ29weShjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mIHNvdXJjZSwgSURCVHJhbnMKICAgICAgICAgZGVzdGluYXRpb24u
bV9vYmplY3RTdG9yZXMudW5jaGVja2VkQXBwZW5kKG9iamVjdFN0b3JlLmlzb2xhdGVkQ29weSgp
KTsKIAogICAgIGlmIChzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgZGVz
dGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5m
bzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNl
SW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogI2lmICFMT0df
RElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAppbmRleCA5MzBkODAyMzYxODIzMmFiZjZj
MDgxZGYyMTI5NThmZjYyYTU1NWVkLi43Yjk0NzdlOGVjNTU0YzkxM2QyYTQ4YmU1NThlMTYzM2Q5
M2ZjZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCkBAIC0xMTksNyArMTE5LDcgQEAgYm9v
bCBJREJUcmFuc2FjdGlvbkluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJUcmFuc2Fj
dGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNPYmpl
Y3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZv
PigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBXVEZN
b3ZlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDg3YjFhZGNkOTY2
NjIwNmVjOTcxNjYwMzYyYjQwZTVhZDdkODAxZDEuLmM5Njg5NDQ0ZmQyMjQwMmNlZDIxMTNiM2Jm
YTBiOWE1MjZjNjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblBy
b2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikK
IHsKICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1
b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CiAg
ICAgICAgIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9O
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5kZXggZjg3MjU3NGU4NWMyNDA4NzcyYjFk
MTFhMmU4YmNiNmRkNjBkYTI5Ny4uYTMxYmFkYjU0YWM5ODFlMGUzYmFkYWZlMjA5ODc4MjlkM2Y3
NDAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGll
cy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMmIE5hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG8KIHsKICAgICBOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGll
cz4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllcz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CmluZGV4IDUwZDBiYjBiMWVkNTNhNDMyNDU4ZDlmYjcxMzU3MGFlMGVjYTBkMDYuLmI5NzQzNGM0
ZTYyNDVkNzNjY2YyZDYyNWEwYTFiMDNlMTI5MGNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlj
a2VyKCkKIHsKICAgICBpZiAoIW1fcGlja2VyT3ZlcnJpZGUpCi0gICAgICAgIG1fcGlja2VyT3Zl
cnJpZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigq
dGhpcyk7CisgICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fcGlja2VyT3ZlcnJp
ZGUuZ2V0KCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdWludDY0X3QgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWEK
IAogICAgIExPRyhNZWRpYSwgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFy
Z2V0UGlja2VyQ2xpZW50KCVwICsgJWxsdSkiLCAmY2xpZW50LCBjb250ZXh0SWQpOwogCi0gICAg
bV9jbGllbnRTdGF0ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50
LCBjb250ZXh0SWQpKTsKKyAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVu
dFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJh
dGlvblRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcAppbmRleCBkNDE3YTEyMTY5MTExMjE1ZDU0MjI5MWUwM2M1OWQ1ZDZlN2Vi
M2Y0Li43Y2JjNmExMzM1MWUwZDMyY2UyNTVhOWJhZGNiOTc0NGRhZjRkNDQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAt
MTc4LDkgKzE3OCw5IEBAIE1lZGlhVGltZSBNZWRpYVNvdXJjZTo6Y3VycmVudFRpbWUoKSBjb25z
dAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZl
cmVkKCkgY29uc3QKIHsKICAgICBpZiAobV9idWZmZXJlZCAmJiBtX2FjdGl2ZVNvdXJjZUJ1ZmZl
cnMtPmxlbmd0aCgpICYmIHN0ZDo6YWxsX29mKG1fYWN0aXZlU291cmNlQnVmZmVycy0+YmVnaW4o
KSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5lbmQoKSwgW10oYXV0byYgYnVmZmVyKSB7IHJldHVy
biAhYnVmZmVyLT5pc0J1ZmZlcmVkRGlydHkoKTsgfSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAotICAgIG1f
YnVmZmVyZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBt
X2J1ZmZlcmVkID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgZm9yIChh
dXRvJiBzb3VyY2VCdWZmZXIgOiAqbV9hY3RpdmVTb3VyY2VCdWZmZXJzKQogICAgICAgICBzb3Vy
Y2VCdWZmZXItPnNldEJ1ZmZlcmVkRGlydHkoZmFsc2UpOwogCkBAIC0xOTAsNyArMTkwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVk
KCkgY29uc3QKIAogICAgIC8vIDEuIElmIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMubGVuZ3RoIGVxdWFs
cyAwIHRoZW4gcmV0dXJuIGFuIGVtcHR5IFRpbWVSYW5nZXMgb2JqZWN0IGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KICAgICBpZiAoYWN0aXZlUmFuZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwog
CiAgICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5lZCBieSBi
dWZmZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJjZUJ1ZmZl
cnMuCiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3QgcmFuZ2Ug
ZW5kIHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29u
c3QKIAogICAgIC8vIFJldHVybiBhbiBlbXB0eSByYW5nZSBpZiBhbGwgcmFuZ2VzIGFyZSBlbXB0
eS4KICAgICBpZiAoIWhpZ2hlc3RFbmRUaW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyA0LiBM
ZXQgaW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmlu
ZyBhIHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBtX2J1ZmZl
cmVkLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBoaWdoZXN0RW5kVGltZSk7CkBAIC0yMjEs
NyArMjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3Vy
Y2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChz
b3VyY2VSYW5nZXMpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzZWVr
VG9UaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0
LCBkb3VibGUgZW5kKQogCiAgICAgLy8gU2V0IGxpdmUgc2Vla2FibGUgcmFuZ2UgdG8gYmUgYSBu
ZXcgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdl
CiAgICAgLy8gd2hvc2Ugc3RhcnQgcG9zaXRpb24gaXMgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBp
cyBlbmQuCi0gICAgbV9saXZlU2Vla2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKGVuZCkpOworICAgIG1fbGl2ZVNlZWthYmxlID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1l
ZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5jcHAKaW5kZXggZTQxODI3ODM4ZDYyY2EzOGZjM2JmM2JlNzhmOGY0
YWE4YWU1MjU5Ni4uN2IzNThmNWUwZGU0MmZiMjI2OGQzNjkwM2U1OGRiNWViNzhlOTBkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApAQCAtNTEsNyArNTEsNyBAQCBOYXZpZ2F0b3JNZWRpYURl
dmljZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxO
YXZpZ2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdh
dG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZp
Y2VzPihuYXZpZ2F0b3ItPndpbmRvdygpKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
bWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKaW5kZXggOGQ3ZTYzY2M2MDZkNmRhMTlmYmRiMTJk
ZTU0ZmI4NTVmZGY2MmM5OS4uMTRkZjExNjFkYWU2OGNjNDZjYjQ5ZWFhZTIxZjVlZjk4OWUyYWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFVzZXJNZWRpYUNvbnRy
b2xsZXI6On5Vc2VyTWVkaWFDb250cm9sbGVyKCkKIAogdm9pZCBwcm92aWRlVXNlck1lZGlhVG8o
UGFnZSogcGFnZSwgVXNlck1lZGlhQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgVXNlck1lZGlhQ29u
dHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7Cisg
ICAgVXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xp
ZW50KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlY3VyZShEb2N1bWVudExvYWRlciYg
ZG9jdW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCBhYWE0MDAwMjA3MzY1ZmZjYmU1MjgxMjhlMjhjZTAyZjZjNjA3
Y2RkLi5jOTg1YmMxOWEzMWQwMTE0NTY1YWJhYmE1ZjA2MGVlNTBkYTYxMTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IExpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjo6Y2hhbm5lbEV2ZW50KFNjcmlwdEV4ZWN1dGkKICAgICBpbml0Lm5lZ290aWF0ZWQgPSBk
YXRhQ2hhbm5lbC0+bmVnb3RpYXRlZCgpOwogICAgIGluaXQuaWQgPSBkYXRhQ2hhbm5lbC0+aWQo
KTsKIAotICAgIGF1dG8gaGFuZGxlciA9ICBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOworICAgIGF1dG8gaGFuZGxlciA9
ICBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hh
bm5lbCkpOwogICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoY29udGV4
dCwgV1RGTW92ZShoYW5kbGVyKSwgZnJvbVN0ZFN0cmluZyhsYWJlbCksIFdURk1vdmUoaW5pdCkp
OwogCiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZGF0YWNoYW5uZWxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vLCBXVEZNb3ZlKGNoYW5uZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKaW5kZXggNDViZjRhOTNkMjUwMGZlODlhM2ViZTc3ZWMxY2Q4ZWRlMTA1
YTJmOS4uNzI2MmQxODJjNTI3YzM1MGJhZjQ4MWY0YzY0ZGI5NmY4YjU5MWY5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTM5Myw3ICszOTMsNyBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+
c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4o
V1RGTW92ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+c2V0QmFja2VuZChtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsK
ICAgICBhdXRvJiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwogICAgIGFkZFBlbmRpbmdUcmFj
a0V2ZW50KHJlY2VpdmVyLnJlbGVhc2VOb25OdWxsKCksIHRyYWNrLCBydGNTdHJlYW1zLCBudWxs
cHRyKTsKIH0KQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNvbGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFu
c2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4o
V1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlx
dWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVy
KSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiB9CiAKQEAgLTQ5NSw3ICs0OTUs
NyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zYwogICAgIGlmICghc291cmNlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKIAogICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KG1ha2VSZWYobmV3VHJhbnNjZWl2
ZXIucmVjZWl2ZXIoKSksIG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkudHJhY2soKSwgcnRjUmVj
ZWl2ZXItPnN0cmVhbXMoKSwgbWFrZVJlZihuZXdUcmFuc2NlaXZlcikpOwogfQpAQCAtNTMwLDcg
KzUzMCw3IEBAIE9wdGlvbmFsPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzPiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVUcmFuc2NlCiAgICAgaWYgKCFyZXN1bHQub2soKSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1v
dmVWYWx1ZSgpKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CiAgICAgcmV0dXJuIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzIHsgdHJhbnNjZWl2ZXItPmNyZWF0ZVNlbmRl
ckJhY2tlbmQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQsIFdURk1vdmUoc291cmNlKSksIHRyYW5z
Y2VpdmVyLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikgfTsK
IH0KIApAQCAtNTgxLDcgKzU4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQ+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnRyYW5zY2VpCiB7CiAgICAg
Zm9yIChhdXRvJiB0cmFuc2NlaXZlciA6IG1fYmFja2VuZC0+R2V0VHJhbnNjZWl2ZXJzKCkpIHsK
ICAgICAgICAgaWYgKHRyYW5zY2VpdmVyLT5zZW5kZXIoKS5nZXQoKSA9PSBiYWNrZW5kLnJ0Y1Nl
bmRlcigpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2Nl
aXZlckludGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CiAgICAgfQogICAg
IHJldHVybiBudWxscHRyOwogfQpAQCAtNjUwLDcgKzY1MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
VENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFD
aGFubmVsCiB7CiAgICAgYXV0byBpbml0ID0gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpm
cm9tUlRDRGF0YUNoYW5uZWxJbml0KG9wdGlvbnMpOwogICAgIGF1dG8gY2hhbm5lbCA9IG1fYmFj
a2VuZC0+Q3JlYXRlRGF0YUNoYW5uZWwobGFiZWwudXRmOCgpLmRhdGEoKSwgJmluaXQpOwotICAg
IHJldHVybiBjaGFubmVsID8gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gY2hhbm5lbCA/
IG1ha2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwp
KSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hh
bm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0
YUNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcAppbmRleCAyMDdmMTVlNjQ1N2I5ZGZjYWMxYzMzOWVhMzlmZWExZDc3ODU5
ZDhiLi5mYzkxY2NkMGJiZDFmZGJiYTc2NDJlNzA0ZjM3ZmU4NWNjNzJmZDVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ+IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2UKIAogICAgIHBhZ2UtPmxpYldl
YlJUQ1Byb3ZpZGVyKCkuc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihwYWdlLT5zZXR0aW5ncygp
LndlYlJUQ0VuY3J5cHRpb25FbmFibGVkKCkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+
bGliV2ViUlRDUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlk
ZXIoKSk7CiB9CiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKQEAg
LTMxMSw3ICszMTEsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlZpZGVvUmVj
ZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aQogICAgIGF1dG8gc291cmNl
ID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0
cmFja0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNv
dXJjZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7
CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRy
YW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywg
eyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRy
KTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3Bl
ZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTMz
NCw3ICszMzQsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2
ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdQogICAgIGF1dG8gc291cmNlID0g
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFj
a0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJj
ZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJhdWRpbyJfcywgeyB9
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsK
ICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJD
b25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTQwMCw3
ICs0MDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRFeGlzdGlu
Z1NlbmRlcihjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFT
dHJlYW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5p
ZmllZFBsYW5FbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRy
YWNrKCpzZW5kZXJCYWNrZW5kLCB0cmFjaywgbWVkaWFTdHJlYW1JZHMpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsK
IApAQCAtNDM4LDcgKzQzOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyCiAgICAgICAgIGNv
bnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgpOwogICAgICAgICBTdHJpbmcgdHJh
Y2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIHNlbmRl
ckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0
aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGF1dG8g
bmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIG1ha2VSZWYodHJhY2spLCBW
ZWN0b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkp
OwogICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXIodHJhY2tLaW5kLCB0cmFj
a0lkKTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVh
dGUoV1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSwgbnVsbHB0cik7CkBAIC00
NzIsNyArNDcyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoU3RyaW5nIHsgdHJh
Y2tLaW5kIH0sIGluaXQpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0
byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigq
dGhpcywgbnVsbHB0cik7CiAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0
ZSgqdGhpcywgU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2Vu
ZGVyQmFja2VuZCkpOwogICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUo
bmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQp
OwogfQpAQCAtNDgyLDcgKzQ4Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZl
cj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBs
YW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFdU
Rk1vdmUodHJhY2spLCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8mIGJhY2tlbmQgPSAqc2VuZGVyQmFja2VuZDsK
ICAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCB0cmFjay5jb3B5
UmVmKCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIGlm
ICghbV9lbmRwb2ludC0+YWRkVHJhY2soYmFja2VuZCwgdHJhY2ssIFZlY3RvcjxTdHJpbmc+IHsg
fSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmlu
ZGV4IDY4NTBlNmE4NWU5MDI0YmIxMTQ1YjZiOTQyMjljMGY2MTQyZGY3YWEuLjZhZWVhMTMzODky
ZDIwNjNmMDM1MzliOGVlYzRkYjliY2U2NGQ3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJh
bWV0ZXJzJiBwYXJhbWUKIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2Vu
ZGVyLT5HZXREdG1mU2VuZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ0RU
TUZTZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKaW5kZXggZWI4NzFlYjdkYjAzODg0ZjRjYzdlMGFkZWY2
ODc4MmUxYzA5NzJkNy4uNWMwZDdlOTVlMmZkMTJlM2Y4NGYxN2NmYmViNmQ4NjdhNTFmMmU0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVy
LT5yZWNlaXZlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOwogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZCYgYmFja2VuZCwgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6U291cmNlJiYgc291cmNlKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+
KGJhY2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQs
IG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiBSVENS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRp
cmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDBjMzI4ZmFlNDQyMzU5OTI1MzMwNzJjODVk
NmIzMmZkYzZjMTM4MzguLjBlYmFmZjg5ZmZiYzUwMDNlMjQ2MWJhZGVlNTIwMzkxMTcxY2JkM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9uCiAg
ICAgLCBtX2JvZHkob3B0aW9ucy5ib2R5KQogICAgICwgbV90YWcob3B0aW9ucy50YWcpCiAgICAg
LCBtX3N0YXRlKElkbGUpCi0gICAgLCBtX3Rhc2tUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVy
PihbdGhpc10gKCkgeyBzaG93KCk7IH0pKQorICAgICwgbV90YXNrVGltZXIobWFrZVVuaXF1ZTxU
aW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKIHsKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5p
c0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBpY29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwo
b3B0aW9ucy5pY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBhNjIwMzUz
OTNjN2ZiM2Y2ZGRmMDFjNWM4OWQ3NGYzYjVlZGQyZDQ0Li5kNDhmMjA1YTllMjQxNGUwN2Q3MjJm
OTAzMjVhN2MzNjRkNDg5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIGNvbnN0IGNoYXIqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1l
bnROYW1lKCkKIAogdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNh
dGlvbkNsaWVudCogY2xpZW50KQogewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3Zp
ZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6
Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNs
aWVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCmluZGV4IDAzZmU5ZTM4Njc4ZjQwNTA3
MzI1NTA5YzIwMzg2N2M5Y2Y4MjBmZjEuLmM5OGM5OTg2ZGVkNmNkMjA1NDI2MTcyMTVmNjUzNmNl
NThmMjc5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2lu
ZG93UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIERPTVdpbmRvd1F1b3RhKiBET01XaW5kb3dRdW90
YTo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dRdW90YSogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1F1b3RhKj4oU3VwcGxlbWVudDxET01XaW5kb3c+
Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRv
d1F1b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PERPTVdpbmRvd1F1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDdiYTFkM2Q0
YjM2OTQ0MGM2NGUxN2RkMjBjYTk0NTM4YjhhZDliNzQuLjdhMDgwNDU5NTY5ODNhMzFmNmQ4MzRl
ZjdlYTc3MmZhNjY3MzZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVv
dGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdh
dG9yU3RvcmFnZVF1b3RhKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oTmF2aWdhdG9yKiBu
YXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpm
cm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRv
clN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBz
dXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VR
dW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0
b3JhZ2VRdW90YS5jcHAKaW5kZXggOTVjM2U0MzY0NzMxNjJhNTBkNjFiNWNlNzUxNjVlZTY4YjIx
YjcyNy4uMWExYzg0N2RjNDk3ZGM2NDg0NWY1NmVjZTU5MjYzYTQyNmFmNjMwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9y
U3RvcmFnZVF1b3RhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdl
UXVvdGEqIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3Iq
CiB7CiAgICAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZp
Z2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3Vw
cGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRv
dyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1l
bnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9E
T01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCAzNzk1NjUyNmZiZjI4NjkwZWNm
MDM5OTUyYzUyZjZlMDQ0NmJjYjRjLi45NjljMjM3ZjdjODE1NTE1M2RlMDcxZWM5NmE2MWE0YTQ2
MmQzZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgRE9NV2luZG93
U3BlZWNoU3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20oRE9NV2luZG93
KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzKj4oU3VwcGxlbWVudDxET01XaW5k
b3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2lu
ZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApp
bmRleCA3MmI1NjNlNGJiZjdkY2UwM2ZhMzA4ODBkMmZhNzcwYjg5ODY5M2E0Li5lN2I2MmExYTE3
YmQ5NmE5ZjVhMTNmZDA5ZTc0OWFiNGJjZTE5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9p
ZCBTcGVlY2hTeW50aGVzaXM6OnZvaWNlc0RpZENoYW5nZSgpCiBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyJiBTcGVlY2hTeW50aGVzaXM6OmVuc3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIo
KQogewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQotICAgICAgICBtX3Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI+KHRoaXMpOworICAgICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIg
PSBtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpOwogICAgIHJldHVy
biAqbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDYyZjY4
ZWM2NjNhODAyMTJjNmYzYWY3Yjg1ZTIzYzZiNGY3NDJhMGEuLjJmNTQyNzJhYzVjMDFkMGEyMzBl
NWMwZGYwNDUyNGFmYjJhNGUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQg
QXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0Rh
dGEsIGZsb2F0IHNhbXBsZVJhCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IGF1dG8gZGVjb2RpbmdUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1v
dmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spKTsKKyAgICBhdXRvIGRlY29kaW5nVGFzayA9IG1ha2VVbmlxdWU8
RGVjb2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CiAgICAgbV9xdWV1ZS5hcHBl
bmQoV1RGTW92ZShkZWNvZGluZ1Rhc2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUg
dGFzayBpcyBlZmZlY3RpdmVseSB0YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAppbmRleCBi
YzAwZWI5Zjg3ZDFiY2Q1OGNiZjc0OWI3ZGE3YzQ5M2NmN2U4ODc2Li5jZjkyNjljMzA0NGM0MzIy
ZDc0NGQwNjI5ZGRhMGZhODk0OTNlY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw4IEBAIGNsYXNz
IEF1ZGlvQnVmZmVyQ2FsbGJhY2s7CiAvLyBBc3luY0F1ZGlvRGVjb2RlciBhc3luY2hyb25vdXNs
eSBkZWNvZGVzIGF1ZGlvIGZpbGUgZGF0YSBmcm9tIGFuIEFycmF5QnVmZmVyIGluIGEgd29ya2Vy
IHRocmVhZC4KIC8vIFVwb24gc3VjY2Vzc2Z1bCBkZWNvZGluZywgYSBjb21wbGV0aW9uIGNhbGxi
YWNrIHdpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBkZWNvZGVkIFBDTSBkYXRhIGluIGFuIEF1ZGlv
QnVmZmVyLgogCi1jbGFzcyBBc3luY0F1ZGlvRGVjb2RlciB7CitjbGFzcyBBc3luY0F1ZGlvRGVj
b2RlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXN5bmNBdWRpb0RlY29kZXIpOwogcHVibGljOgogICAgIEFzeW5jQXVkaW9E
ZWNvZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IGJhOGMyNTVhZTdkN2RhNzNiYzlm
ZjY1NTQzZjFlMzdiYzk1NDA0YjMuLjBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2Uz
NDZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
YXNpY0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsK
ICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKLSAgICBhZGRJbnB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQp
KTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAg
YWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVs
Q291bnQpKTsKIH0KIAogLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpIGFzIGFuIG9wdGltaXph
dGlvbiBhbGxvd2luZyB0aGlzIG5vZGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW4tcGxhY2UgcHJv
Y2Vzc2luZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYmMxODljMDhjYmVmYzdjMTk2MDY0
NjZjMDc2OGI4ZmE2MzRiMTZhYi4uMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZlNzkwYWJmYmU2
ZTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQyLDggKzQyLDggQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlz
KSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAxKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwor
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAg
ICAgLy8gVGhlIHN1YmNsYXNzIG11c3QgY3JlYXRlIG1fcHJvY2Vzc29yLgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCmluZGV4IDQwYWMzMmM1YzU1YzNkMzJkMGUxNGI2YTdkMjJiMjQ2NzM5MGY0YmYuLjI1
MTBjNDBhN2Y2MTIzZDRjN2ZjMmQ2NDBhOTBiNGYwYTk4ZTZmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAKQEAgLTczLDcgKzczLDcgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNv
dXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGUKICAgICBtX3BsYXli
YWNrUmF0ZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicGxheWJhY2tSYXRlIiwgMS4w
LCAtTWF4UmF0ZSwgTWF4UmF0ZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIG1vbm8uICBBIGNhbGwg
dG8gc2V0QnVmZmVyKCkgd2lsbCBzZXQgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMgdG8g
dGhhdCBvZiB0aGUgYnVmZmVyLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5NTZjMTU4
NjIxODljNzE0MjljYmNmZDYwMDQyZjAwYzk4YmFlZjYuLmQ0Y2RiNzY1OGMwZjM1YjVmYzlhMjJj
ZTg5OGJjYjJiOTllZTRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5p
cXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1h
a2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUo
bWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAgIC8vIEFjY29yZGlu
ZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVyIHBhZ2UgbmF2aWdhdGUu
CiAgICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0
aXZpdHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCkBAIC0xNjYsNyArMTY2LDcgQEAg
QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVDb250ZXh0
KHRydWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRl
KCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVu
dFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZl
bnRRdWV1ZT4oKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC00MzIsNyAr
NDMyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gQXVkaW9Db250ZXh0OjpjcmVh
dGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmUKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWNv
ZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVm
ZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4mJiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICghbV9hdWRpb0RlY29kZXIpCi0gICAgICAg
IG1fYXVkaW9EZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsK
KyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigp
OwogICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0YSksIHNh
bXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA5NzU4ODc1NDc0N2UxNTI0ODE4OWY0OTcw
YzZkMzNlM2M2YWUxZTExLi5kOWFiYjk3NzdhOWQyNWVlYWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYQogICAgICwgbV9tdXRlZChmYWxzZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURl
c3RpbmF0aW9uKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykp
OwogfQogCiBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUu
Y3BwCmluZGV4IDE2MzczY2U5Mzc4ZDMyMmZkZDljMjUzZjljNzZkOTYzZTYxM2NkM2IuLjRhODI1
NWU2ZjBhZjA3NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzksNyAr
MzksNyBAQCBCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVh
ZEZpbHRlcik7CiAKICAgICAvLyBJbml0aWFsbHkgc2V0dXAgYXMgbG93cGFzcyBmaWx0ZXIuCi0g
ICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4
dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2UpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxC
aXF1YWRQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKIH0KIAogQmlx
dWFkRmlsdGVyVHlwZSBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCAw
ZTRlMzY4NWI4MmNlNDc3ZWM0ZTU4NTQ3ZjE2YWQ4YjcwZmM3OTA0Li5lODRiOTgwMzU2NzBmYjFk
Y2MzMjcwOTY2M2QyYjM5MDU1MmU2NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEJpcXVh
ZFByb2Nlc3Nvcjo6fkJpcXVhZFByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RT
UEtlcm5lbD4gQmlxdWFkUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6
OmNoZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlx
dWFkUHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lSZXNwb25zZShpbnQgbkZyZXF1ZW5jaWVzLCBjb25z
dCBmbG9hdCogZnJlcXVlCiAgICAgLy8gdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgcHJv
Y2Vzc2luZyBydW5uaW5nIGluIHRoZSBhdWRpbwogICAgIC8vIHRocmVhZCBvbiB0aGUgbWFpbiBr
ZXJuZWxzLgogICAgIAotICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgYXV0byByZXNwb25zZUtlcm5lbCA9IG1ha2VV
bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIAogICAgIHJlc3BvbnNlS2VybmVsLT5nZXRG
cmVxdWVuY3lSZXNwb25zZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5jeUh6LCBtYWdSZXNwb25zZSwg
cGhhc2VSZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IDIwYjhkYTE5ZTVmNDM5Y2ZlNTQ1NWYw
MWRjMjkwODc0NDZiMjNjMDguLmRmNTBmMjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMy
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1l
cmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bE1lcmdlck5vZGUuY3BwCkBAIC01OSw5ICs1OSw5IEBAIENoYW5uZWxNZXJnZXJOb2RlOjpDaGFu
bmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVu
CiAKICAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5wdXRzLgogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQotICAgICAgICBhZGRJ
bnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgICAgIGFk
ZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAotICAgIGFkZE91dHB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91
dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGlu
aXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDQ2MzU0OThjMDM0YzU5MzBiNGU4ZjIy
MDg2ZTE0YjJiNGJkMjkxMTcuLjgyZjY5YTA0Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkx
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNw
bGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIENoYW5uZWxTcGxpdHRlck5v
ZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwogCi0g
ICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAogICAgIC8vIENy
ZWF0ZSBhIGZpeGVkIG51bWJlciBvZiBvdXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11
bSBudW1iZXIgb2YgY2hhbm5lbHMgZmVkIHRvIGFuIGlucHV0KS4KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCi0gICAgICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgICAgICBhZGRPdXRw
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0
aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmNwcAppbmRleCAyMzgyZGFiY2M5Yzk5MjdjYWMzMWQzMjc1ZjIyMDNjYzhmNThh
MDkzLi5lMzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTUy
LDggKzUyLDggQEAgQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDb252
b2x2ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMp
KTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsK
IAogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFu
bmVsQ291bnQgPSAyOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZv
bHZlck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgLy8gQ3JlYXRl
IHRoZSByZXZlcmIgd2l0aCB0aGUgZ2l2ZW4gaW1wdWxzZSByZXNwb25zZS4KICAgICBib29sIHVz
ZUJhY2tncm91bmRUaHJlYWRzID0gIWNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCk7Ci0gICAg
YXV0byByZXZlcmIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBB
dWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tn
cm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CisgICAgYXV0byByZXZlcmIgPSBtYWtlVW5pcXVl
PFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFt
ZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CiAK
ICAgICB7CiAgICAgICAgIC8vIFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDQyNjVhMDA3NDll
YWZmZjZhOWUxYjlkMWRkYTYwZDRkYjcwMjhiMDMuLjgxYmQ3ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUx
ZjdjZTI1NTc4MDJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
bGF5Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2Rl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heEQKICAg
ICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAg
c2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRp
bWUpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4
dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPERl
bGF5Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggYTc1YmE2YjdjOTJlNzQ0
NGM2NTYwOGU4YWUxOGY5ZDUwMDAyNmEwNC4uMTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5
ZTZkMmFjYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGVsYXlQcm9jZXNzb3I6On5EZWxh
eVByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gRGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVs
YXlEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlbGF5RFNQS2VybmVs
Pih0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAK
aW5kZXggYWEwZTRhODAxMTllYmVkOWRkMzY5NmIzZmExMzA1ZGRmMzJiZDA1Mi4uMTQwOTZkOGYw
YzU5NmE1Mjk3MTY2NmVmODI2N2EwMjNmZGI0NGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBA
IC00Niw4ICs0Niw4IEBAIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Cisg
ICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgbV90aHJlc2hvbGQgPSBBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CiAgICAgbV9rbmVlID0g
QXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJrbmVlIiwgMzAsIDAsIDQwKTsKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7ICAgIAotICAgIG1fZHlu
YW1pY3NDb21wcmVzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNh
bXBsZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIG1fZHluYW1p
Y3NDb21wcmVzc29yID0gbWFrZVVuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUo
KSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogfQogCiB2b2lkIER5bmFtaWNzQ29t
cHJlc3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDZjOTRhNTIzYzNiMmEwMjEyYjJhNTRhMWE5YzhmMDI2
YmJkMWRiNWYuLjI1N2RmMmVjZTIzMzhjYmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC00Niw4ICs0
Niw4IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCiAKICAgICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImdh
aW4iLCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5jcHAKaW5kZXggMzgxYWU3Mjc5NGZiMGU3ZmVhNjMzMWFiZDMzYjIwYzE1ODQ1ZmY5Yi4u
OTEyZTZlYjIzMjE0NTY0M2Q2ZmRhZmJjMTFlOTY3NjRjM2QyZjVkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZSk7CiAKICAg
ICAvLyBEZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdo
YXQgdGhlIG1lZGlhIGVsZW1lbnQgLnNyYyBpcyBzZXQgdG8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7
CiB9CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpz
ZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAKICAgICAgICAg
aWYgKHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAgICAgICBkb3Vi
bGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgpOwotICAgICAg
ICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hh
bm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICAg
ICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2Ft
cGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gQnlwYXNzIHJlc2FtcGxpbmcuCiAgICAgICAgICAgICBtX211bHRpQ2hh
bm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4
IDViMmE1MDBkZDI5NGQxMDU1OGJjN2EwOGNmNzcxNmU0MjZiNWMyYWMuLmU0M2Y1NDQ4YmMyNmI4
NmFmNjkzZDAwOTk5NWM2NzM0ZjY5NTVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
CkBAIC01Niw3ICs1Niw3IEBAIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lCiAgICAgYXVkaW9Tb3Vy
Y2VQcm92aWRlci0+c2V0Q2xpZW50KHRoaXMpOwogICAgIAogICAgIC8vIERlZmF1bHQgdG8gc3Rl
cmVvLiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIGZvcm1hdCBvZiB0aGUgTWVk
aWFTdHJlYW0ncyBhdWRpbyB0cmFjay4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UKICAgICAgICAgbV9tdWx0aUNoYW5uZWxS
ZXNhbXBsZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAgICBkb3VibGUgc2NhbGVGYWN0
b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZTsKLSAgICAgICAgbV9tdWx0aUNoYW5u
ZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2Nh
bGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2Ft
cGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVt
YmVyT2ZDaGFubmVscyk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0g
bnVtYmVyT2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggNWI1MDI5YmZiY2U3N2FkNWI2YzNjODgzMjYwZGI5
ZGVmZGY2MTA0Yi4uYTk5Y2VhYWQ2YjVjMjFlMDlkZDIyNTNjMmFjZjMwNDU1NDc1M2U3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXRUeXBlKG1fdHlwZSk7
CiAKICAgICAvLyBBbiBvc2NpbGxhdG9yIGlzIGFsd2F5cyBtb25vLgotICAgIGFkZE91dHB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5j
cHAKaW5kZXggZjY0NzQ2OWUyMzU1ZWIzYTBjMDliM2IwODUyYmZiZWM2ZTQ4ZDI4ZC4uNTFjNjk5
MTZmZmRlNzBmNWU2ODBhYTkyN2NlZmVmN2NhNzMyYzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFBhbm5l
ck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9u
J3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRh
dGFiYXNlLgogICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpj
cmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUo
KSk7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlz
KSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAyKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwor
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAg
ICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxD
b3VudCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bl
cmlvZGljV2F2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGlj
V2F2ZS5jcHAKaW5kZXggYmIyYTA3ZDIzNTRlYmFmOTRkMDA0NjVhNGI0MWQ4NjA1NTU5OTg2Yi4u
ZWM5YTE3YzRmNTZlYjk5NjZkYzE3NjI3ZTkzNDA1YmExZmQ0OGM0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcApAQCAtMTkyLDcgKzE5
Miw3IEBAIHZvaWQgUGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyhjb25zdCBm
bG9hdCogcmVhbERhdGEsIGNvbnN0IGZsb2F0KiBpCiAgICAgICAgIHJlYWxQWzBdID0gMDsKIAog
ICAgICAgICAvLyBDcmVhdGUgdGhlIGJhbmQtbGltaXRlZCB0YWJsZS4KLSAgICAgICAgbV9iYW5k
TGltaXRlZFRhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1f
cGVyaW9kaWNXYXZlU2l6ZSkpOworICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZCht
YWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CiAKICAgICAg
ICAgLy8gQXBwbHkgYW4gaW52ZXJzZSBGRlQgdG8gZ2VuZXJhdGUgdGhlIHRpbWUtZG9tYWluIHRh
YmxlIGRhdGEuCiAgICAgICAgIGZsb2F0KiBkYXRhID0gbV9iYW5kTGltaXRlZFRhYmxlc1tyYW5n
ZUluZGV4XS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggM2I2MjgxZDFlODQzZWQyOTljZjYxNTNjNzMy
Nzk3MDc0MTgwNjc3OC4uODAyMzczNDA3Zjc1ZDQ3ZTI1OWViNjA1NjM4MGY2MzVmMTNhY2VmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5h
bHlzZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5h
bHlzZXIoKQogICAgICwgbV9taW5EZWNpYmVscyhEZWZhdWx0TWluRGVjaWJlbHMpCiAgICAgLCBt
X21heERlY2liZWxzKERlZmF1bHRNYXhEZWNpYmVscykKIHsKLSAgICBtX2FuYWx5c2lzRnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CisgICAgbV9hbmFs
eXNpc0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOwogfQogCiBS
ZWFsdGltZUFuYWx5c2VyOjp+UmVhbHRpbWVBbmFseXNlcigpID0gZGVmYXVsdDsKQEAgLTgzLDcg
KzgzLDcgQEAgYm9vbCBSZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mZnRTaXplICE9IHNpemUpIHsKLSAg
ICAgICAgbV9hbmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7
CisgICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KHNpemUpOwog
ICAgICAgICAvLyBtX21hZ25pdHVkZUJ1ZmZlciBoYXMgc2l6ZSA9IGZmdFNpemUgLyAyIGJlY2F1
c2UgaXQgY29udGFpbnMgZmxvYXRzIHJlZHVjZWQgZnJvbSBjb21wbGV4IHZhbHVlcyBpbiBtX2Fu
YWx5c2lzRnJhbWUuCiAgICAgICAgIG1fbWFnbml0dWRlQnVmZmVyLmFsbG9jYXRlKHNpemUgLyAy
KTsKICAgICAgICAgbV9mZnRTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGQ1OWRlY2Y5
OTUxNmY2ZDAxYWY5YzFkOWZkYmYxZDBiMTAxOWU0MGYuLmQ1YjNhZmJmMjcxMDE0NTE0OTRiMTg5
Mzc3NjhiNjA1ZjZhM2I0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNjgsOCArNjgsOCBAQCBTY3Jp
cHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZQogICAgIEFTU0VSVChudW1iZXJPZklucHV0Q2hhbm5lbHMgPD0g
QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwogCiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVKYXZhU2NyaXB0KTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQo
bWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAg
ICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNDEwZDFkYWY1Yzg5NTQwMDlm
ZjA2MzZhODI5MDBiZjk0YWY0ZjhmMS4uZjNkMjEyMmRmNTFjNGYxYTI5MjI0ZTY5M2FiNDk1YmJj
MmI5MzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZl
U2hhcGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBXYXZlU2hh
cGVyRFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpCiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAogICAgIGlmICghbV90ZW1wQnVmZmVyKSB7Ci0gICAgICAgIG1fdGVt
cEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFu
dHVtICogMik7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwotICAgICAgICBtX3VwU2FtcGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKLSAgICAgICAg
bV9kb3duU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1
YW50dW0gKiAyKTsKLSAgICAgICAgbV91cFNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBz
dGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CisgICAg
ICAgIG1fdGVtcEJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdR
dWFudHVtICogMik7CisgICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAgICBtX3VwU2FtcGxlciA9IG1h
a2VVbmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKKyAgICAgICAgbV9kb3duU2Ft
cGxlciA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAg
ICAgICAgbV91cFNhbXBsZXIyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50
dW0gKiAyKTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVy
PihSZW5kZXJpbmdRdWFudHVtICogNCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDg0ODY5OTNmMjEw
ODRjY2M2MWNjZDgwYjJjMTg3ZTA4YzE1NWZkMDEuLjZlN2U4ZGQxYzljMTlmYTNjODVlM2Q5ZDg1
NWFiOWY0NTc4NWI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFdhdmVTaGFwZXJOb2RlOjpX
YXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsKICAgICBzZXROb2Rl
VHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3Vu
aXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CisgICAg
bV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2Ft
cGxlUmF0ZSgpLCAxKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4
IDI4OWMzOWY1ZjNmOWY3YTc5ZTlhNWI2YTZkODMxNWI1OTFmNDMyZGEuLmJmZTVlMGU0N2ZiODRh
MjhjNjNjNmUyOGIzMmUwZmMxMWU1YzY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtNDYsNyArNDYs
NyBAQCBXYXZlU2hhcGVyUHJvY2Vzc29yOjp+V2F2ZVNoYXBlclByb2Nlc3NvcigpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVs
Pih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlz
KTsKIH0KIAogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkq
IGN1cnZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggYjFjNDlkYjUyM2I5MzZiMGE0ZWMyMjEw
NDFiNzdkYTdjYzE0NzhmZC4uMjBkNjA2OTcyNDI4OTczNzc5ODJiODRlZTczZDRkYTYzNGVkOGZj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiB1c2luZyBDcmVkZW50aWFsUHJvbWlzZSA9IERP
TVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8QmFzaWNDcmVkZW50aWFs
Pj4+OwogCiBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JD
bGllbnQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKaW5kZXggOGMzZDEzNDZjNDAzMGNmYjNkODI3NzM3YTBh
MTVmM2YxY2I5YmFkNy4uMWI5MTJkOThkOWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQyZmFmMzU3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRN
ZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b0hpZE1lc3NhZ2UuY3BwCkBAIC0xNTAsOSArMTUwLDkgQEAgRmlkb0hpZE1lc3NhZ2U6OkZpZG9I
aWRNZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwg
Y28KICAgICB1aW50OF90IHNlcXVlbmNlID0gMDsKIAogICAgIHNpemVfdCBwb3MgPSBkYXRhLnNp
emUoKSA+IGtIaWRJbml0UGFja2V0RGF0YVNpemUgPyBrSGlkSW5pdFBhY2tldERhdGFTaXplIDog
ZGF0YS5zaXplKCk7Ci0gICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9I
aWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBk
YXRhLnNpemUoKSkpOworICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkSW5p
dFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5z
aXplKCkpKTsKICAgICBmb3IgKDsgcG9zIDwgZGF0YS5zaXplKCk7IHBvcyArPSBrSGlkQ29udGlu
dWF0aW9uUGFja2V0RGF0YVNpemUpCi0gICAgICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyss
IGdldENvbnRpbnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOworICAgICAgICBtX3BhY2tl
dHMuYXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElk
LCBzZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKIH0K
IAogRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlk
SW5pdFBhY2tldD4gaW5pdFBhY2tldCwgc2l6ZV90IHJlbWFpbmluZ1NpemUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAK
aW5kZXggNTViN2IyZDcxNTM2YTIzNTQ5MTNhZTM2ZTlmYjkxZWYwMGE4ZjA4My4uMjZiODBhYThh
NWYxMzk2M2M3NjhlN2U5MjNiYmFhYjJiODdiNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNzAsNyAr
NzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFj
a2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoYwogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1
aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBk
YXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tl
dD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwg
V1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCiAvLyBVMkYgSW5pdGlhbGl6YXRpb24g
cGFja2V0IGlzIGRlZmluZWQgYXM6CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNy
ZWF0ZUZyb20KICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFw
cGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBz
ZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENv
bnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9
CiAKIC8vIFUyRiBDb250aW51YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDAyMTQ1ZDBj
YzJlOGM5ZWFkYjBjODgyOTQxYjg1OWZjMGFlODA1MmQuLjViNjRhMDg3NDZhZjgwODBjZDJlNzI1
MDNmYTAwZDNjOTQ5ZmIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJh
c2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVzdWx0OwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91
bmlxdWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBz
eW5jaHJvbml6ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFz
ZU9wZW5UYXNrPigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwg
cmVzdWx0KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykp
OwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxEYXRh
YmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOworICAgIHRocmVhZC5zY2hlZHVs
ZUltbWVkaWF0ZVRhc2sobWFrZVVuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNo
cm9uaXplcikpOwogCiAgICAgLy8gRklYTUU6IGlPUyBkZXBlbmRzIG9uIHRoaXMgZnVuY3Rpb24g
YmxvY2tpbmcgdW50aWwgdGhlIGRhdGFiYXNlIGlzIGNsb3NlZCBhcyBwYXJ0CiAgICAgLy8gb2Yg
Y2xvc2luZyBhbGwgb3BlbiBkYXRhYmFzZXMgZnJvbSBhIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGly
YXRpb24gaGFuZGxlci4KQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVs
ZVRyYW5zYWN0aW9uKCkKICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7CiAKICAg
ICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwotICAg
IGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdU
Rk1vdmUodHJhbnNhY3Rpb24pKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNl
VHJhbnNhY3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiAgICAgTE9HKFN0b3JhZ2VB
UEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0cmFuc2FjdGlv
biAlcFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAgICAgZGF0YWJhc2VU
aHJlYWQoKS5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC01NDEsNyArNTQxLDcg
QEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQogewogICAgIGF1dG8mIHRocmVhZCA9IGRhdGFiYXNlVGhyZWFkKCk7CiAK
LSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNr
PigmdHJhbnNhY3Rpb24pOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFu
c2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVs
aW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxu
IiwgdGFzay5nZXQoKSk7CiAgICAgdGhyZWFkLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsK
IH0KQEAgLTc2Myw3ICs3NjMsNyBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1l
cygpCiAgICAgaWYgKHRocmVhZC50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsK
KyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlz
LCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFz
ayhXVEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9u
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5jcHAKaW5kZXggM2JhYmQ0OTU2NmYxNGExYjNjMGQzYjE3YmY0YzdmMzJjNWUz
ZDVmNy4uZDY0OTdjMzk3ZmE0NzQyODU5ZTA1ODYyMjM2ZWRlZTQzZDRlZjM5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VUaHJl
YWQ6OkRhdGFiYXNlVGhyZWFkKCkKLSAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihzdGQ6
Om1ha2VfdW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCisgICAgOiBtX3RyYW5z
YWN0aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigp
KQogewogICAgIG1fc2VsZlJlZiA9IHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDhkZGNjNTk4
NTUxNTc2ZDJhMmMxMGY0MmU0YWQxMmE4MjU5YjUxOS4uYzI4YTk2ZjQ1ODM5ZWY1NGRhZjFmOTlh
MWFkNThkN2VjZDRhNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQg
RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAg
IExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsK
IAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCi0gICAgICAgIG1fb3BlbkRhdGFiYXNlTWFw
ID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKKyAgICAgICAgbV9vcGVu
RGF0YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0
byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCkBAIC05NTYsNyArOTU2LDcg
QEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6
ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdp
biBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nQ3JlYXRlZC5nZXQob3Jp
Z2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6
bWFrZV91bmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25l
ZFNldCA9IG1ha2VVbmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFt
ZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nQ3JlYXRlZC5hZGQob3JpZ2lu
Lmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAgfQpAQCAtMTAwMiw3ICsx
MDAyLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFz
aE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhl
IG9yaWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5n
ZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVk
U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVTZXQgPSBv
d25lZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi5pc29sYXRl
ZENvcHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCmluZGV4IDg1ZjFiNjM1YzNlNDli
M2ZlMWE4MWY5NDg3ODI0ODBlMWRlNDhmYjUuLjhhNTRhMzY2N2EwN2FhY2UwM2E5NjBmYjI1NjRm
N2ViZGYzYmQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxTdGF0ZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQ7CiBj
bGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ7CiAKIGNsYXNzIFNRTFN0YXRlbWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1FMU3RhdGVtZW50KERhdGFi
YXNlJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNRTFZhbHVlPiYmLCBSZWZQdHI8U1FMU3RhdGVt
ZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmLCBpbnQg
cGVybWlzc2lvbnMpOwogICAgIH5TUUxTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjBkNjk3
MzQ3NzRkYmZiZjMwYmQ4ZjM5Y2U0YzU5NTcyMTRlOTAwYy4uNGNiMDQxZTQ1MmM4MGY1ZjU5YmIy
NzIxZWFiOGVjMWE4ZjYxODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxT
dGF0ZW1lbnQsIE9wdGlvbmEKICAgICBlbHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJt
aXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8g
c3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNx
bFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAg
IGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNx
bFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOwogCiAg
ICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50LT5zZXREYXRh
YmFzZURlbGV0ZWRFcnJvcigpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rp
b246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAgICAgfQogCiAgICAgQVNTRVJUKCFt
X3NxbGl0ZVRyYW5zYWN0aW9uKTsKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwg
bV9yZWFkT25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRl
VHJhbnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOwog
CiAgICAgbV9kYXRhYmFzZS0+cmVzZXREZWxldGVzKCk7CiAgICAgbV9kYXRhYmFzZS0+ZGlzYWJs
ZUF1dGhvcml6ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJp
dmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRy
aXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCmluZGV4IDc5YWE1NjE4MWZmZWYzYWIxYTkyYWE1
N2ZlY2RiNmZiYTU5ZTZmMGIuLjEyOWQ4NmZmY2ZiZDE1N2E4MGIwMTkyZTNiNDk5NzEzM2JlYjc4
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRv
cldlYkRyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2
aWdhdG9yV2ViRHJpdmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBOYXZpZ2F0b3JXZWJEcml2ZXIq
IE5hdmlnYXRvcldlYkRyaXZlcjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBO
YXZpZ2F0b3JXZWJEcml2ZXIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJE
cml2ZXIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOworICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKICAg
ICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVU
byhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRv
ckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3Bw
CmluZGV4IDg4YTk3ODA0NGJjMWU3MDg5MzM1NjVkYzYyZDBhMzE0NmIzOGI0MjYuLjM3NmQxNTVj
YTliMmY1ZDJhNGFiMTg1MmM3NzZkOWMxOGYyZTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBOYXZpZ2F0
b3JHUFUqIE5hdmlnYXRvckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBO
YXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHUFUqPihTdXBw
bGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAg
ICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8TmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1
cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgKaW5kZXggMWIzNDI1MDRkNjk1NTA4ZjA4MTZjY2I1NTgyZjVi
ZDlhYTc2MWE2Yi4uNWY1N2VmMTE3NzUzMWEwYWMzZDk2MGRlYjFkNDM4NzExYTRmMDViZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAg
Y2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAK
ICAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKICAgICB7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1ha2VfdW5p
cXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51bWVyYXRp
b25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3
RW50cnk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcu
aAppbmRleCAwZTMxZmZiZGUwYjE0ODZmNmM2ZjY1ZTIwZWI2MzhhZTg4MWI4N2Y4Li5jYmNjNDg0
YjY4MjUwYzBhYTA5YjU5OTQzYWRjNzllODEwMDkyNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RW50cnlQb2ludFNjYWZmb2xkaW5nLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIE1ldGFs
IHsKIGNsYXNzIFR5cGVOYW1lcjsKIAogY2xhc3MgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbnRyeVBv
aW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRl
ci5jcHAKaW5kZXggY2EzNDZlMzJiMjk5YTEwY2VkMjU2NWQwMWQ4NTQ1M2JkODBkMTQ3NC4uNDdi
MDYwYTdjNWFhZmMzMmU4ODg3NWZmYzRhZjg5ODk2ODk2MjU3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHAKQEAgLTc2NCw5ICs3NjQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnlQb2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0
ZUVudAogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAg
ICAgfTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3Mu
dmVydGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywg
bV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywg
bV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMpOwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0
Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwg
bV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hh
ZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNv
dXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9t
YXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5p
dGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdt
ZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFk
ZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
KSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtNzkwLDcgKzc5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eVBvaW50U2NhZmZvbGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0
ZUVuCiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAg
ICB9OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5z
aGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVFbnRyeVBvaW50
U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1l
ciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNz
LnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGlu
Zz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNo
ZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VN
YXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggMTg1YmEwYjA4
OGE1Y2VkNGM1YjY2MzZmYTk0NDJjMDAzNDBkZDAyYS4uNDBiNjJjMzdkYmUyNTgwZTIzZDU5MGMw
OTFlYmI0MTdjYTliODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjcyLDE5ICsy
NzIsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3Jl
YXRlTmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICBzd2l0Y2ggKHVubmFtZWRUeXBl
LmtpbmQoKSkgewogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5j
ZTogewogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVm
ZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
ZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBl
UmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVm
ZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVS
ZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2Fz
dDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5h
bWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCks
IHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFt
ZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVy
ZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUp
OwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1l
Tm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUu
YWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVJlZmVyZW5j
ZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVy
ZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFT
VDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFy
cmF5VHlwZS5udW1FbGVtZW50cygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlU
eXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51
bUVsZW1lbnRzKCkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggMzMzYmRmNjJjMDI5ODY2YTc0OWEzYzYxMmU1
ZTRkYmExNmIyNmE3ZS4uYmRlZDUzZTE4YWZjOGE0ODE3NTgxZmEzYWRjMjI3ODU2ZWJkNDg5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwCkBAIC05NjYsMTQgKzk2NiwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKIAogdm9pZCBDaGVja2Vy
Ojphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNU
OjpVbm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90
YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlw
ZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RG
TW92ZSh1bm5hbWVkVHlwZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQo
JmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlw
ZSkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlv
bikpOwogfQogCiB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZh
bHVlKCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9u
LCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNz
aW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90
YXRpb24pKTsKIH0KQEAgLTk4MSwxMCArOTgxLDEwIEBAIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlw
ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
CiB2b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwg
UmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5u
b3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewogICAgIHJlc29sdmluZ1R5cGUudmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1h
a2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29s
dmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90
eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihy
ZXN1bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFk
ZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigp
KSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CiAgICAgfSkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0
eXBlQW5ub3RhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IDdjYWI2Yzk1ZWMzNTZlNzZhYzVmYzRmNzAyYmRj
YzFlYWNjOWY4NzAuLmU2OGU0ODZlNzg1YjRjYzdlNzNhNGIxZDg0Nzc4ODg1MDFlZTkyZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5jcHAKQEAgLTc0MCwxOSArNzQwLDE5IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGljKCkg
LT4gRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KICAgICBz
d2l0Y2ggKHRva2VuLT50eXBlKSB7CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7
CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0
dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9
OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJl
c3VsdCkpIH07CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlNwZWNpYWxpemVkOiAgewog
ICAgICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0g
ICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgq
cmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihX
VEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpSZWdpc3Rl
cjogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFudGljKTsKLSAgICAgICAg
cmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQp
KSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUo
KnJlc3VsdCkpIH07CiAgICAgfQogICAgIGRlZmF1bHQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3Vs
dCwgQnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVzb2x2aW5nVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZpbmdUeXBlLmgKaW5kZXggNTU5Y2U4YmE5M2IyOWQ1MTdmYTc3M2Y2YTVmNTI3ZGRm
NGE4NWIwMS4uNDU3MDBjZWQ4ZmQzNDQ5YzRkYTQ5NTlmNzFhNDAyYWEwMmQ2ZTQzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNv
bHZpbmdUeXBlLmgKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewogLy8gSXQg
ZXhpc3RzIHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBk
b2VzIHRoZSByaWdodCB0aGluZy4KIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5
LgogY2xhc3MgUmVzb2x2aW5nVHlwZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVzb2x2aW5nVHlwZSgpCiAgICAgICAgIDogbV9pbm5lcihSZWZQdHI8UmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2U+KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAppbmRleCBiZjkwZjZjMzYwNTQ4ZDUyYzhm
ZDhlZWVjNzUzYzc4ZDhmYTliZjFjLi5kOTUyMjMwNWFkYTFlZTk3MWYxNjUyOGRlMDY2MDRiYjZh
OTZiMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJO
YXZpZ2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtl
ck5hdmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgV29ya2VyTmF2aWdhdG9yR1BVKiBX
b3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20oV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAg
ICAgV29ya2VyTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2
aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsK
KyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JH
UFU+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAg
ICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwCmluZGV4IGVkNWEzY2M4MzRmZTE5ZDQ4ODhiODU1NTA0YmExNTVkNDgz
ZmM0MDcuLmMxYmFjODZkM2FiMmIwZDkxM2ZjZTc0MjE0MzFhOTQ0NTllZWQyZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmNsZWFyQ2xpZW50KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZENvbm5lY3QoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkQ29ubmVjdCgpOwogICAgIH0pKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFw
cGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0p
KTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogCiB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShi
aW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RG
TW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5h
cnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0pKTsKQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnVmZmVy
ZWRBbW91bnQpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewor
ICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVk
QW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50
KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVk
QW1vdW50KTsKICAgICB9KSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2ln
bmVkIGIKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Cisg
ICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAgICB9KSk7CkBAIC0yMDgsNyAr
MjA4LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0
dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNo
YWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9z
aW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKICAgICAgICAgfSkpOwpAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlCiAKIHZvaWQgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkK
IHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQo
bWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdl
RXJyb3IoKTsKICAgICB9KSk7CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogCiB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBncmFkZVVS
TCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGdyYWRlVVJM
KCk7CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDYwNzE0NDA5MjRmYjJjZTY3ZjUzNDA2MmQ3
OWU4ZTNiMDRlZTFjNTAuLmEwN2E4NzYzYWZiOTY5YjQyMDcwYmM0OWE4NjIzOWI3ODNkNmViYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVj
dFN0YXR1cyBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgcmVxdWVzdGVkVVIK
ICAgICBtX2FsbG93Q29va2llcyA9IHZhbGlkYXRlZFVSTC0+YXJlQ29va2llc0FsbG93ZWQ7CiAg
ICAgU3RyaW5nIHVzZXJBZ2VudCA9IG1fZG9jdW1lbnQtPnVzZXJBZ2VudChtX2RvY3VtZW50LT51
cmwoKSk7CiAgICAgU3RyaW5nIGNsaWVudE9yaWdpbiA9IG1fZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkudG9TdHJpbmcoKTsKLSAgICBtX2hhbmRzaGFrZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
U29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwg
Y2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CisgICAgbV9oYW5kc2hha2UgPSBtYWtlVW5p
cXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2Vy
QWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwogICAgIG1faGFuZHNoYWtlLT5y
ZXNldCgpOwogICAgIGlmIChtX2RlZmxhdGVGcmFtZXIuY2FuRGVmbGF0ZSgpKQogICAgICAgICBt
X2hhbmRzaGFrZS0+YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKG1fZGVmbGF0ZUZyYW1lci5jcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoKSk7CkBAIC03MDMsNyArNzAzLDcgQEAgYm9vbCBXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzRnJhbWUoKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4
dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0Zy
YW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1h
a2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IFdlYlNvY2tldEZy
YW1lOjpPcENvZGVUZXh0OwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVT
dHJpbmc7CiAgICAgZnJhbWUtPnN0cmluZ0RhdGEgPSBzdHJpbmc7CkBAIC03MTMsNyArNzEzLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcm
IHN0cmluZykKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdG
cmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVk
RnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAg
ICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVk
RnJhbWVUeXBlVmVjdG9yOwogICAgIGZyYW1lLT52ZWN0b3JEYXRhLnJlc2l6ZShkYXRhTGVuZ3Ro
KTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhcgogdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BD
b2RlLCBCbG9iJiBibG9iKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1
cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtl
X3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1
ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5mcmFt
ZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVCbG9iOwogICAgIGZyYW1lLT5ibG9iRGF0YSA9ICZibG9i
OwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdv
aW5nRnJhbWVRdWV1ZSgpCiAgICAgICAgICAgICAgICAgcmVmKCk7IC8vIFdpbGwgYmUgZGVyZWZl
ZCBhZnRlciBkaWRGaW5pc2hMb2FkaW5nKCkgb3IgZGlkRmFpbCgpLgogICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9ibG9iTG9hZGVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmJs
b2JEYXRhKTsKLSAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0
aGlzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFk
ZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKICAg
ICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKICAg
ICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KG1fZG9jdW1lbnQuZ2V0KCksICpmcmFt
ZS0+YmxvYkRhdGEpOwogICAgICAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBl
bmQoV1RGTW92ZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCmluZGV4IGYyZmE2MjA5
YzA0OGY1MTUxOGEyNWVlYzEzYWVmMjU2NGM5ZjRlN2IuLmVlMzNlYTBmZTVjZjFkNWJmNzlhMmRh
MDY3MDdiNzNjZDNhNzhjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTE1NSw3ICsx
NTUsNyBAQCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkK
IAogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0
RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhp
cyk7CiB9CiAKIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0
CkBAIC0xNzAsOCArMTcwLDggQEAgYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZs
YXRlKCkgY29uc3QKICNpZiBVU0UoWkxJQikKIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRU
YWtlT3Zlck1vZGUgbW9kZSkKIHsKLSAgICBtX2RlZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJTb2NrZXREZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7Ci0gICAgbV9pbmZsYXRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0SW5mbGF0ZXI+KCk7CisgICAgbV9kZWZsYXRlciA9IG1h
a2VVbmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOworICAgIG1faW5m
bGF0ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOwogICAgIGlmICghbV9kZWZs
YXRlci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2luZmxhdGVyLT5pbml0aWFsaXplKCkpIHsKICAgICAg
ICAgbV9kZWZsYXRlciA9IG51bGxwdHI7CiAgICAgICAgIG1faW5mbGF0ZXIgPSBudWxscHRyOwpA
QCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVm
bGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvCiBzdGQ6OnVuaXF1ZV9w
dHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7CiAjaWYgVVNFKFpMSUIpCi0gICAgYXV0byByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBpZiAo
IWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5v
cENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9h
ZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBAIC0xOTYsNyArMTk2LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmRlZmxhdGUoV2ViU29ja2V0RnIKICAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9kZWZs
YXRlci0+c2l6ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTIxMCw3
ICsyMTAsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRl
eHQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAg
IGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAg
ICBpZiAoIWVuYWJsZWQoKSAmJiBmcmFtZS5jb21wcmVzcykgewogICAgICAgICByZXN1bHQtPmZh
aWwoIkNvbXByZXNzZWQgYml0IG11c3QgYmUgMCBpZiBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJh
bWUgZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAppbmRl
eCAxZDZmMTc4MjJjODA1MjgxYjcwYTQxNjIwZGNkZWU2YWQyYWI4ODljLi40YTQ4NjVmODQ5NGQw
NjEzZWFjMzIxYTU5NGY4YmFlMTk5OTZiYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgV2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKGludCB3aW5kb3dCaXRz
LCBDb250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHQKIHsKICAgICBBU1NFUlQobV93aW5kb3dCaXRz
ID49IDgpOwogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPD0gMTUpOwotICAgIG1fc3RyZWFtID0g
c3RkOjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5n
ZXQoKSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lk
IFdlYlNvY2tldERlZmxhdGVyOjpyZXNldCgpCiBXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0
SW5mbGF0ZXIoaW50IHdpbmRvd0JpdHMpCiAgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykK
IHsKLSAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9z
dHJlYW0gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAg
ICBtZW1zZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5OTQwNzNlYWE1ZThi
MjMwZDFjOGIwMGMxNmM1OTY0M2U5Nzg0MjY4Li5kYzZmNjYwZmQzODhjZWZmYWYwZWJlZjZlNjYw
ZTZiNjk1YmI2MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAogCiAgICAgYm9v
bCBzZW50ID0gbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh7
CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLAotICAg
ICAgICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJv
eHksIHBlZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigp
LCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFtjbGllbnRX
cmFwcGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IG1h
a2VVbmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250
ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKGNsaWVudFdy
YXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJsaWVyLCB3ZSBuZWVkIHRv
IGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBlZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCmluZGV4IGQ5N2I1YzJh
ODVhOWQyMzI4Zjk4NDBmNDRkM2QxZTk2MzJjODJkOWUuLjc3NmM0M2FlYzBiOWI1YmRlYWRjM2Rk
ODkxMjZhY2VkNmJhNzUxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvTmF2aWdhdG9yV2ViVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
TmF2aWdhdG9yV2ViVlIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIE5hdmlnYXRvcldlYlZSKiBOYXZp
Z2F0b3JXZWJWUjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JX
ZWJWUiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYlZSKj4oU3VwcGxlbWVu
dDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNT
TC5jcHAKaW5kZXggYmMyM2Q1OWNjMzEyMzdiMTQ5N2E3NmFjYzU5ZDNlYWY1ZDJiNTg0MC4uNmNh
NjdmMzkxYTMxZmNkMzg2OTI1NWIyMWYyZmNiN2YzZmJmOWJiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9w
ZW5TU0wuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0SW1w
bCA6IHB1YmxpYyBDcnlwdG9EaWdlc3RDb250ZXh0IHsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHRJbXBsPigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4oKTsKICAgICB9CiAKICAg
ICBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
eXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCAzMTUzMTY4MDgwN2I3MmQ1ZWY5MzgwOTE0ZTdh
ZTI0MGFkOWQwMzk3Li5lNTNlMTk1YjM1ZjQ5OGY3OTUyNTE1MWViYzJhY2ViNWZhZmNkMjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFBBTCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4g
Q2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tHZW5l
cmljPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrR2VuZXJpYz4oKTsKIH0KIAogQ2xv
Y2tHZW5lcmljOjpDbG9ja0dlbmVyaWMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9tYWMvQ2xvY2tDTS5tbQppbmRleCBjNjg5MzIxNWYwNmIwYzY3NGQ1NDYwODMzYjFhNGQ1MWNj
MzJiNjE0Li45ZTA3MWI3ODE0ZTQ0ZmUwMDQ0MmU2NmM3MjBiMmJmYjMxMzA2OWExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQpAQCAtMzksNyArMzks
NyBAQCBzdGF0aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDsKIAogc3Rk
Ojp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDbG9ja0NNPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrQ00+KCk7
CiB9CiAKIENsb2NrQ006OkNsb2NrQ00oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggY2FjYWI4NTY4Yzg2MTEyZDljZGZlZmMzMDkwMjZh
ZDljODE1MzNlNS4uYjM1ZmMxNTY0MzdmMWNhMDlkNjQyMmJkNTljNzEzM2ZhYzJjNjBhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0x
NTc1LDcgKzE1NzUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogdm9pZCBBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdD
b21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKCkKIHsKICAgICBpZiAoIW1f
Y29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSkKLSAgICAgICAgbV9jb21wdXRlZE9iamVjdEF0
dHJpYnV0ZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRl
Q2FjaGU+KCk7CisgICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IG1ha2VV
bmlxdWU8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlPigpOwogfQogCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggZWRmZGJiMGEwNmZkNmVkYTI1
MDQ4Yjk3MTliOWVmMWJhOWUxMzQ0My4uZTZkZWE5NjExZjliNDg4MGE1YTE5YjlhZDFlMWJkZTcx
YzE4NDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAg
LTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShE
aWRTZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlOb3RpZnkgc3luYwogICAgICAgICAgICAgLy8g
T3RoZXJ3aXNlLCBpZiBzeW5jaHJvbm91c2x5IG5vdGlmeSBpcyBmYWxzZSwgcXVldWUgYSBtaWNy
b3Rhc2sgdG8gcnVuIGZpbmlzaCBub3RpZmljYXRpb24gc3RlcHMgZm9yIGFuaW1hdGlvbiB1bmxl
c3MgdGhlcmUKICAgICAgICAgICAgIC8vIGlzIGFscmVhZHkgYSBtaWNyb3Rhc2sgcXVldWVkIHRv
IHJ1biB0aG9zZSBzdGVwcyBmb3IgYW5pbWF0aW9uLgogICAgICAgICAgICAgbV9maW5pc2hOb3Rp
ZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSB0cnVlOwotICAgICAgICAgICAgTWljcm90
YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRN
aWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKKyAg
ICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVu
aXF1ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNy
b3Rhc2tQZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZmluaXNoTm90aWZpY2F0aW9u
U3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGZpbmlz
aE5vdGlmaWNhdGlvblN0ZXBzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01Qcm9taXNlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVBy
b21pc2VQcm94eS5oCmluZGV4IDdkYTQ2YTYxNTA0ZWYyNDgxNWE2OTRkZmJhMTJjMjhiMWVmNGZl
NjYuLjYyMWI4OTA1MWJiNDhkYjAzMDFlYTgwNDdjN2FmZWZmYjY4Y2RlNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCkBAIC02MCw2ICs2MCw3IEBA
IGNsYXNzIERPTVByb21pc2VQcm94eSB7CiAKIHRlbXBsYXRlPD4KIGNsYXNzIERPTVByb21pc2VQ
cm94eTxJRExWb2lkPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRE9NUHJvbWlzZVByb3h5KCkgPSBkZWZhdWx0OwogICAgIH5ET01Qcm9taXNlUHJveHkoKSA9
IGRlZmF1bHQ7CkBAIC04NCw2ICs4NSw3IEBAIGNsYXNzIERPTVByb21pc2VQcm94eTxJRExWb2lk
PiB7CiAvLyBGb250RmFjZSBhbmQgRm9udEZhY2VTZXQuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExU
eXBlPgogY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjayB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlICgpPjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXgg
ZGIwYzFkYzc2ZjhhMjg5NzA0NWVlMmNmYzkxOTIzZDU4ZGYxYjZmOS4uYzVjNDcwNjFiZmFjYTFm
Y2E3MjhiZTI3YjBhMmI0YTlmMGIzMDI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBKU0RPTVdp
bmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJl
ZjxKU0M6Ok1pY3IKICAgICBKU0RPTVdpbmRvd0Jhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWlj
cm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBh
dXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Qu
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRl
eCA2Mjk1ZjU4NGNmZThhMTcyOWRkZjZiMThkNzc1NDlmZDQ0YzlhMGJlLi5kYjVlNzczNDkwYmVk
ZmJmM2UwYzEwY2YyM2QwYTM2YzhhM2JkYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIEV2
ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVl
KQogc3RkOjp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRXcmFwcGVyPiBqc0V2ZW50VGFyZ2V0Q2Fz
dChWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBq
c0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBl
ZCgpLCAqdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdy
YXBwZXI+KHRhcmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKICAgICBpZiAoYXV0byogd2luZG93
ID0gdG9KU0RPTVdpbmRvdyh2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRv
dy0+d3JhcHBlZCgpLCAqd2luZG93KTsKICAgICBpZiAoYXV0byogc2NvcGUgPSB0b0pTV29ya2Vy
R2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBw
ZWQoKSwgKnNjb3BlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4
IGQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcwYmI0MDIuLjliZDY2NDQ2MDE3MDU0
OTVhOTRlN2IzZmFkZjA0OGYzYzdiMDQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChK
U0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SgogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWlj
cm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBh
dXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBtaWNyb3Rhc2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1p
Y3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxs
YmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNh
bGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMWQwMDU0YzI4OTJkNTAxM2RmMjZhYmZmYTNl
MWMyZjY3ZGVlNDgxOS4uYTM1Mzc4NTVlN2E3ZDRmZDJiZDJjNGM4OGI3ZmE3YjYyOTU1NGJiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4+IHRyYW5zZmVyQXJyYXlCdWZmZQog
ICAgIGlmIChhcnJheUJ1ZmZlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CisgICAgYXV0byBjb250ZW50cyA9IG1ha2VV
bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1ZmZlcnMuc2l6ZSgpKTsKIAog
ICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3Qg
YXJyYXlCdWZmZXJJbmRleCA9IDA7IGFycmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6
ZSgpOyBhcnJheUJ1ZmZlckluZGV4KyspIHsKQEAgLTM0NTEsNyArMzQ1MSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShFeGVjU3RhdGUmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVB
cnJheSB3YXNtTW9kdWxlczsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250
ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+KCk7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJnN0
YXRlLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1bGVzLCAKQEAgLTM0NjksNyAr
MzQ2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJy
YXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNl
cmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVm
ZmVycykgOiBudWxscHRyLCBXVEZNb3ZlKGltYWdlQnVmZmVycykKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCi0gICAgICAgICAgICAgICAgLCBzdGQ6Om1ha2VfdW5pcXVlPFdhc21Nb2R1bGVBcnJh
eT4od2FzbU1vZHVsZXMpCisgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21Nb2R1bGVB
cnJheT4od2FzbU1vZHVsZXMpCiAjZW5kaWYKICAgICAgICAgICAgICAgICApKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5k
ZXggNWM0NjYyOTRiZWU1NmMyMWJmMGY2M2QxNWIwZjhkZjBmMjdhM2EwZS4uNGY0YjBjZjNiN2Vl
Y2RkZDA3ODcwMjU1MjA4ODk1ZTQ1ZmEyYTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQo
YXJyYXlMZW5ndGgpOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBhdXRvIGFycmF5
QnVmZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
PigpOwogICAgIHdoaWxlIChhcnJheUxlbmd0aC0tKSB7CiAgICAgICAgIHVuc2lnbmVkIGJ1ZmZl
clNpemU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCmluZGV4
IDI0NmY2NGE5ZjYzMjJiNTg3MGNiYjY4MmVkYjJkNGVkYjk1M2VjN2MuLjNiMTEyNTJhZTY0Y2Fm
MmU0ZmU3MzllMzFlZTEwOTk1NGQ1NmE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQg
SlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0pCiAgICAgSlNWTUNsaWVudERh
dGEqIGNsaWVudERhdGEgPSBuZXcgSlNWTUNsaWVudERhdGEoKnZtKTsKICAgICB2bS0+Y2xpZW50
RGF0YSA9IGNsaWVudERhdGE7IC8vIH5WTSBkZWxldGVzIHRoaXMgcG9pbnRlci4KICAgICAKLSAg
ICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChzdGQ6Om1ha2VfdW5pcXVlPERPTUdDT3V0
cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOworICAgIHZtLT5oZWFwLmFkZE1hcmtp
bmdDb25zdHJhaW50KG1ha2VVbmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGll
bnREYXRhKSk7CiAgICAgICAgIAogICAgIGNsaWVudERhdGEtPm1fbm9ybWFsV29ybGQgPSBET01X
cmFwcGVyV29ybGQ6OmNyZWF0ZSgqdm0sIHRydWUpOwogICAgIHZtLT5tX3R5cGVkQXJyYXlDb250
cm9sbGVyID0gYWRvcHRSZWYobmV3IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggMTZhNzZjNDk1MjlhNGJiODcxY2I2NmNhM2FkNzVhMmQ3NmE4MDY1NS4uZDIz
OTg1N2FhM2JkZGU5ZmViOWNiODc0MGZjZjVkNjQ5ZTM1MGRiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQog
ICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0g
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9i
amVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKIAotICAgIG1fY29uc29sZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xv
YmFsU2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29s
ZUNsaWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKaW5kZXggMjljODE4NjgzNmVhMDU0MTFlOGYxZWQ2
NDFjMDU3MGNlODE3NjgxNS4uYWE1NmUyZmRlODU1NzdhY2Y5YzA0NzRjODk4NzdmNGUwZDVjNTEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgTWV0
aG9kKiBDQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3Rh
bmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGlu
c3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzTWV0aG9kICYmIG1faXNhLT5oYXNN
ZXRob2Qob2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5p
cXVlPENNZXRob2Q+KGlkZW50KTsKKyAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPENN
ZXRob2Q+KGlkZW50KTsKICAgICAgICAgQ01ldGhvZCogcmV0ID0gbWV0aG9kLmdldCgpOwogICAg
ICAgICBtX21ldGhvZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAg
ICByZXR1cm4gcmV0OwpAQCAtMTAzLDcgKzEwMyw3IEBAIEZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAog
ICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+
KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAg
aWYgKG1faXNhLT5oYXNQcm9wZXJ0eSAmJiBtX2lzYS0+aGFzUHJvcGVydHkob2JqLCBpZGVudCkp
IHsKLSAgICAgICAgYXV0byBmaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0ZpZWxkPihpZGVudCk7
CisgICAgICAgIGF1dG8gZmllbGQgPSBtYWtlVW5pcXVlPENGaWVsZD4oaWRlbnQpOwogICAgICAg
ICBDRmllbGQqIHJldCA9IGZpZWxkLmdldCgpOwogICAgICAgICBtX2ZpZWxkcy5zZXQobmFtZS5p
bXBsKCksIFdURk1vdmUoZmllbGQpKTsKICAgICAgICAgcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IGYyZjYyMDgyYTgwOGExOWYxMGE1ZDkzNWQ5MjJi
NzczYzEyMjFjMjguLjA0Y2RkY2QyNGNhYTgyOWMzMmU1NmVjMjczYWZiZDM1MWYyNTRlMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAtNDksNiArNDksNyBAQCBjbGFz
cyBSb290T2JqZWN0OwogY2xhc3MgUnVudGltZU9iamVjdDsKIAogY2xhc3MgRmllbGQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2
YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IElu
c3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KaW5kZXggYjg2Zjc1MWEwYTcxMzhiZTAwNzc2YTc4Y2JjMmE2ZDQ1ZGQzNzUw
Mi4uYTNkOGQzMmYyOGRkODA1OGE0YWI0NDI3Mzk1MzQ0MDc0ZjI2Yzc1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgTWV0aG9k
KiBPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3Rh
bmNlKikgY29uc3QKICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJT
Y3JpcHROYW1lRm9yU2VsZWN0b3I6b2JqY01ldGhvZFNlbGVjdG9yXTsKIAogICAgICAgICAgICAg
aWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5n
KiltZXRob2ROYW1lLmdldCgpXSkgfHwgIXN0cmNtcChvYmpjTWV0aG9kU2VsZWN0b3JOYW1lLCBi
dWZmZXIuZGF0YSgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CisgICAg
ICAgICAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPE9iamNNZXRob2Q+KHRoaXNDbGFz
cywgb2JqY01ldGhvZFNlbGVjdG9yKTsKICAgICAgICAgICAgICAgICBtZXRob2RQdHIgPSBtZXRo
b2QuZ2V0KCk7CiAgICAgICAgICAgICAgICAgbV9tZXRob2RDYWNoZS5hZGQobmFtZS5pbXBsKCks
IFdURk1vdmUobWV0aG9kKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODksNyArMTg5
LDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAgICAgICBtYXBwZWROYW1l
ID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5OlVURjhLZXlOYW1lXTsKIAogICAgICAg
ICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5T
U3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgW2tleU5hbWUgaXNFcXVhbDooX19icmlkZ2Ug
TlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuZXdG
aWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
a2V5TmFtZSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IG1ha2VVbmlxdWU8T2Jq
Y0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5TmFtZSk7CiAgICAgICAgICAgICAgICAg
ZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtX2ZpZWxkQ2FjaGUuYWRk
KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0yMjAsNyArMjIwLDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAg
ICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktleTpvYmpj
SXZhck5hbWVdOwogCiAgICAgICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWRO
YW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgIXN0
cmNtcChvYmpjSXZhck5hbWUsIGpzTmFtZS5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gbWFrZVVuaXF1ZTxPYmpjRmllbGQ+
KG9iamNJVmFyKTsKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92
ZShuZXdGaWVsZCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCBlMDhiMDQ4ZTNiNTY4NDI5OGNkZWZk
OTNlYjkxODgzODkxNTZmNDM4Li4zYjkzZTE4NzgzODU0YzI0NDQ2ZTFjZmE1NzU4NDY2ZjBmMGE3
ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0y
NjcsNyArMjY3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9i
akNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgaWYgKFt0YXJnZXRP
YmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RG
cm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBPYmpjQ2xhc3MqIG9iamND
bGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0Q2xhc3MoKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChzdGQ6
Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZv
a2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QobWFrZVVuaXF1ZTxP
YmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0
aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKICAgICAgICAgY29uc3QgU3RyaW5n
JiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4
ZWMtPmpzQ2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKICAgICAgICAgZmFsbGJhY2tNZXRob2Qt
PnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmludm9rZU9iamNNZXRob2QoZXhlYywg
ZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKaW5kZXggODNkNDRlMDY3ZmJkZjU0
N2Y2Yzg4YjY3YTM2ZWI1M2Y2OTE0NjZlZS4uZjE3MWE1ODIwM2Y5OGFmMTU1NDc4MGUwNTE5ZTA0
YTFlNTNhMGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29tYmluZWRVUkxGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBDb21i
aW5lZFVSTEZpbHRlcnM6OnByaW50KCkgY29uc3QKICNlbmRpZgogCiBDb21iaW5lZFVSTEZpbHRl
cnM6OkNvbWJpbmVkVVJMRmlsdGVycygpCi0gICAgOiBtX3ByZWZpeFRyZWVSb290KHN0ZDo6bWFr
ZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKKyAgICA6IG1fcHJlZml4VHJlZVJvb3QobWFr
ZVVuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpKQogewogfQogCkBAIC0yMDksNyArMjA5LDcgQEAg
dm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4odWludDY0X3QgYWN0aW9uSWQsIGNv
bnN0IFZlY3RvcjxUZXJtPiYgcGF0dGUKICAgICAgICAgaWYgKG5leHRFbnRyeUluZGV4ICE9IFdU
Rjo6bm90Rm91bmQpCiAgICAgICAgICAgICBsYXN0UHJlZml4VHJlZSA9IGxhc3RQcmVmaXhUcmVl
LT5lZGdlc1tuZXh0RW50cnlJbmRleF0uY2hpbGQuZ2V0KCk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhUcmVlRWRnZSh7bV9h
bHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVydGV4
PigpfSkpOworICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhU
cmVlRWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgbWFrZVVuaXF1ZTxQcmVmaXhUcmVl
VmVydGV4PigpfSkpOwogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJl
ZS0+ZWRnZXMubGFzdCgpLmNoaWxkLmdldCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaAppbmRleCA4YzdlM2Y3ZDdmMWUwZDU1YWFkODkzNGFiYmE1YWE3MGZiOGY4NWNm
Li43N2ZlYjYwYzUwYmM4YTRmMjRiMjc2OTZhZDExMGQxZWRhNzQyODA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuaApAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKIC8v
IDEpIEl0IHN0b3JlcyB0aGUgcnVsZXMgZm9yIGVhY2ggY29udGVudCBleHRlbnNpb24uCiAvLyAy
KSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZhY2VzIHRvIHVzZSB0aG9z
ZSBydWxlcyBlZmZpY2llbnRseS4KIGNsYXNzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gLSBSdWxlIG1hbmFn
ZW1lbnQgaW50ZXJmYWNlLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHVwcGVyIGxheWVyLgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IDk2ZTJkNjM0Yjg5M2IzOTkzMDRh
OGIyYjI4NWU2MWY0ZTQ2OWRjMGMuLmIyYTlhNzgzNTIyNzcyODNmOTVkODQ5ZDAzYjE1NmZjZGM3
MjFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC0xMTUsMzEg
KzExNSwzMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6
RGVjcnlwdDoKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMg
PSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzoKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFt
cyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4oc3Rh
dGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVz
Q2JjQ2ZiUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOiB7CiAgICAgICAg
ICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0N0
clBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bUFlc0djbVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFl
c0djbVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkVDRFNBOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0
KCkpOwpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAg
cGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVl
KCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bUVjZHNhUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BT
UzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9B
bGdvcml0aG1Sc2FQc3NQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xODAsNyArMTgwLDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMjU2OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8zODQ6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yIH07CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bVJzYUtleUdlblBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FTU0FfUEtDUzFfdjFfNToKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOworICAgICAgICAg
ICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yMTMsNyArMjEzLDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rp
b25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkhNQUM6IHsKQEAgLTIyMywxNCArMjIzLDE0IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6
ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5
PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI0OSw3ICsyNDksNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogCiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNv
bnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHN0YXRl
LCBuZXdWYWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2Ro
S2V5RGVyaXZlUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOiB7CkBAIC0yNTks
NyArMjU5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNo
SWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElk
ZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVu
dGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBh
cmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhr
ZGZQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjogewpAQCAtMjY5LDcgKzI2
OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50
aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlm
aWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmll
ciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBia2Rm
MlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGRlZmF1bHQ6CkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAg
ICBjYXNlIE9wZXJhdGlvbnM6OkltcG9ydEtleToKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmll
cikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1Mx
X3YxXzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFf
NToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOgpAQCAt
MjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAo
aGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhh
c2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNo
SWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJ
bXBvcnRQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NUUjoKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpITUFDOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0
aW9uYXJ5PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CkBAIC0zMDcsMTkgKzMwNywxOSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAg
ICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJh
bXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1h
Y0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAg
ICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tl
eVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFy
YW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzI5LDcg
KzMyOSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpV
bndyYXBLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzQ0LDcgKzM0NCw3
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnRE
aWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgp
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0zNTQsMTIgKzM1NCwxMiBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtNTIwLDE2ICs1MjAsMTYgQEAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcm9zc1RocmVhZENvcHlJbXBv
cnRQYXJhbXMoY28KIHsKICAgICBzd2l0Y2ggKGltcG9ydFBhcmFtcy5wYXJhbWV0ZXJzQ2xhc3Mo
KSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6Ok5vbmU6IHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPigpOwogICAgICAgICByZXN1bHQtPmlkZW50aWZpZXIgPSBpbXBvcnRQ
YXJhbXMuaWRlbnRpZmllcjsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6RWNLZXlQYXJhbXM6Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9z
c1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBh
cmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQ
YXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFt
cz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6
Q2xhc3M6OkhtYWNLZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29w
eShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6UnNhSGFzaGVkSW1w
b3J0UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihj
cm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFy
YW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGRiY2NjOTAwZjMzNzQ4Y2QyMDY3ZjYwY2IyOTBj
MGJkNjAwNjU1MzMuLmE0MmY1NjRmODFmZTFmMGVhMDk0NDNkMWYxMDUzYzFjM2NkMGNmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTIxNywxMiAr
MjE3LDEyIEBAIGNsYXNzIENTU0NhbGNQcmltaXRpdmVWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1ND
YWxjRXhwcmVzc2lvbk5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChjYXRlZ29yeSgpKSB7
CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZs
b2F0VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lv
bk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlv
bkNhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+
KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxl
bmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkpOwogICAgICAgICBj
YXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRp
b25DYXRlZ29yeTo6UGVyY2VudExlbmd0aDogewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1f
dmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAgICAgICB9CiAgICAgICAgIC8vIE9ubHkgdHlw
ZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVuZ3RoIGV4cHJlc3Npb24gY2FuIGJlIGNvbnZl
cnRlZAogICAgICAgICAvLyB0byBhIENhbGNFeHByZXNzaW9uTm9kZS4gQ2FsY3VsYXRpb25DYXRl
Z29yeTo6UGVyY2VudE51bWJlciBtYWtlcyBubyBzZW5zZSBhcyBhIExlbmd0aC4KQEAgLTUyMCw3
ICs1MjAsNyBAQCBjbGFzcyBDU1NDYWxjT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENTU0NhbGNF
eHByZXNzaW9uTm9kZSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICBub2Rlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShub2RlKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdU
Rk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
Y0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKICAgICB9
CiAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBmaW5hbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAppbmRleCBjNDRjZWJjNTEyMGVkODMyNmQ5
YTFiMmE2NTZiOTM2N2I2ZTE5MTI4Li5lNWFlOGI3N2E1MTRmMDljM2I0OTQ0MWI1NjJmNWMyYTFl
Yzc1MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNw
cApAQCAtMTY3LDExICsxNjcsMTEgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRG
dWxsRGVmYXVsdFN0eWxlKCkKICAgICAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBudWxs
cHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKLSAgICAg
ICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVh
c2UoKTsKKyAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0Pigp
LnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwotICAgIGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5p
cXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQcmludFN0eWxlID0gbWFrZVVu
aXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSku
bGVha1JlZigpOwogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCkBAIC0xOTAsMTAgKzE5MCwx
MCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSgp
CiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwogICAgIEFTU0VSVCghc2ltcGxlRGVmYXVsdFN0
eWxlU2hlZXQpOwogCi0gICAgZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCku
cmVsZWFzZSgpOwogICAgIC8vIFRoZXJlIGFyZSBubyBtZWRpYS1zcGVjaWZpYyBydWxlcyBpbiB0
aGUgc2ltcGxlIGRlZmF1bHQgc3R5bGUuCiAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBkZWZhdWx0
U3R5bGU7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVT
ZXQ+KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVB
U2hlZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwgc3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0
eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzaW1wbGVE
ZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
Y3BwCmluZGV4IDc3MDliNWRlYWZiZmU5ZjlhYjExYWMwNzdjNjE5ZDc5NGQxNjQyZjIuLjY0NmMx
NGExMWFjNjQ1Yjk5MjYxNDlmMjllOTgwMGM0YzcyNjdiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNv
dXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAg
ICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRp
bmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoKSk7CiAgICAg
ICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9ybWF0KCkg
JiYgZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoQ2FjaGVkRm9udCogY2FjaGVkRm9u
dCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdF
bGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAgICAgICAgICAgICAgICAgICAgc291cmNl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVz
b3VyY2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VV
bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hl
ZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNvdXJj
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJl
c291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxlbWVudCk7CisgICAgICAgICAgICBzb3VyY2Ug
PSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgp
LCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwogCiAgICAgICAgIGlmIChzb3VyY2UpCiAgICAg
ICAgICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggMDVlM2EzZjZlMjFiYzkyODE3ODU1NjlhMTRh
YTUwZmY1MmU0YTI3MC4uMThlODM0ZDY5MGE2ZWI1MTAxZGM5MGM4ZGU1ZGI1ZTdhMWIwYzVkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
dm9pZCBDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3Rl
cmVkKGNvbnN0IFN0cmluZyYgZmFtaWwKICAgICAgICAgZmFtaWx5TGlzdC0+YXBwZW5kKENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhbWlseVZhbHVlKGZhbWlseU5hbWUpKTsK
ICAgICAgICAgZmFjZS0+c2V0RmFtaWxpZXMoZmFtaWx5TGlzdC5nZXQoKSk7CiAgICAgICAgIGZh
Y2UtPnNldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMoaXRlbSk7Ci0gICAgICAgIGZhY2UtPmFk
b3B0U291cmNlKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCks
IGZhbWlseU5hbWUpKTsKKyAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2UobWFrZVVuaXF1ZTxDU1NG
b250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOwogICAgICAgICBBU1NFUlQo
IWZhY2UtPmNvbXB1dGVGYWlsdXJlU3RhdGUoKSk7CiAgICAgICAgIGZhY2VzLmFwcGVuZChXVEZN
b3ZlKGZhY2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jv
dXBpbmdSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCmlu
ZGV4IGRlNmYzOWQzZjVkODczMWQ5OWU1ZWIzYzk2OGUyOWFkMWVhY2JmZTYuLmM2YzVjMzk1NDBh
NWM1MDVjZGY0ZDU5Yzc0NmMzOTE4NWM5ZTAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91
cGluZ1J1bGUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQ1NTUnVsZSogQ1NTR3JvdXBpbmdSdWxl
OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENTU0dyb3VwaW5nUnVs
ZTo6Y3NzUnVsZXMoKSBjb25zdAogewogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikK
LSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNT
U1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4o
KnRoaXMpKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2
ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxl
Jj4oKnRoaXMpKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCBmZmRk
M2QwYWE2NTdmMjVlYWYzMWQ1NzBjNTg2OGVkNTMwOWUyZWZkLi41NTUxZjJjNjkxN2QwMzMwNzI2
YWNkZjgxMDkxYTkxZmFiNGUwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgR2VuZXJhdGVkSW1hZ2UqIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSkK
IHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9h
dFNpemUgc2l6ZSwgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKQogewogICAgIEFTU0VSVCghbV9pbWFn
ZXMuY29udGFpbnMoc2l6ZSkpOwotICAgIG1faW1hZ2VzLmFkZChzaXplLCBzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKKyAgICBtX2lt
YWdlcy5hZGQoc2l6ZSwgbWFrZVVuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNp
emUsIGltYWdlKSk7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNo
ZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlm
cmFtZXNSdWxlLmNwcAppbmRleCBjOTA5ODMyZGEwZTUxOTAyNTM1MTNhMzk4MzE5MWE3YzJmMzkz
MDA1Li42ZjFlYjMzODZkOWZiYzcyZDQ0Mzc4NWQxZDE5YzRkZDhjNWMzN2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgQ1NTS2V5
ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAog
Q1NTUnVsZUxpc3QmIENTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKCkKIHsKICAgICBpZiAoIW1f
cnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMp
OworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVs
ZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RD
U1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA0
ODBhODk4NTIzN2FkYTkwYTExNzhlMGIyNzllMGU2NjgwN2UzMzQxLi5jODhkMWVkYzkzYjdhNmM4
M2YyMTc3YmFjNzY3ZjliNzgyZWU3NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVs
ZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlz
dD4odGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPFN0
eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CiAgICAgcmV0dXJuIG1fcnVsZUxpc3RDU1NPTVdy
YXBwZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQ
YWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5j
cHAKaW5kZXggNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MC4uOTE0YmRl
NGEyZGU5YWEyMTA2YzAxMDYzYjgwOGQ5Y2E0ZmZmNmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRE9NQ1NTUGFpbnRXb3Jr
bGV0KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCiB7CiAg
ICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1BhaW50V29ya2xldCo+KFN1
cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3MpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1BhaW50V29ya2xldD4oY3NzKTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygm
Y3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5j
cHAKaW5kZXggN2VjZDkzZDdkYzNkNDMyZWFmODJiYzk1NmU2MWQ0ODlhNTEwNjI1Yi4uMGRmNmFh
ZTk2ZjBlMWM3MGIzNzU1NjE2NDllZTM1ZDI4ZWI0YzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcApAQCAtODQsNyArODQs
NyBAQCBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5KiBET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5Ojpmcm9tKERPTUNTU05hbWVzcGFjZQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Kj4oU3VwcGxlbWVudDxET01D
U1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNzcyk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCmluZGV4IGQ4NTk2ZmQx
YjI0NTlkZTA3ZTFjODk5Y2MwNzlmYzE5ODUxMTY1ZTkuLjgyYjdmY2MzMGU1ODI3NDk5MjAyZTI4
YjgzMDg2Y2YwZmE0NGFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBEb2N1bWVudFJ1bGVTZXRzOjpzX2lzSW52YWxpZGF0
aW5nU3R5bGVXaXRoUnVsZVNldHMgeyBmYWxzZSB9OwogRG9jdW1lbnRSdWxlU2V0czo6RG9jdW1l
bnRSdWxlU2V0cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAgIDogbV9zdHlsZVJl
c29sdmVyKHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgbV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0
PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIApA
QCAtNzgsNyArNzgsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZUlmTmVlZGVkKCkgY29uc3QKIAogICAgIC8vIE1lZGlhIHF1ZXJpZXMgb24g
dXNlciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRlZCBpbiBkb2N1bWVudCBjb250ZXh0LiBU
aGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4gdGhpcyByZXNwZWN0LgogICAgIGF1dG8m
IG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRv
cigpOwotICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlU2V0PigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gbWFrZVVuaXF1ZTxS
dWxlU2V0PigpOwogICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlLT5hZGRSdWxlc0Zyb21T
aGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRpYVF1ZXJ5U3R5bGVTaGVldCwgbWVkaWFR
dWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAKICAgICAvLyBWaWV3cG9ydCBkZXBl
bmRlbnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBpbmVmZmljaWVudCB0byBhbGxvdyBvbiBV
QSBzaGVldC4KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFs
aXplVXNlclN0eWxlKCkKIHsKICAgICBhdXRvJiBleHRlbnNpb25TdHlsZVNoZWV0cyA9IG1fc3R5
bGVSZXNvbHZlci5kb2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hlZXRzKCk7CiAgICAgYXV0byYg
bWVkaWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9y
KCk7Ci0gICAgYXV0byB0ZW1wVXNlclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0Pigp
OworICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBp
ZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBh
Z2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
cGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVS
ZXNvbHZlcik7CiAgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25T
dHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSwgbWVk
aWFRdWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29sdmVyKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxS
dWxlRmVhdHVyZT4mIHJ1bGVzKQogICAgIHNpemVfdCBzaXplID0gcnVsZXMuc2l6ZSgpOwogICAg
IGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBydWxlU2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8gcnVsZVNldCA9IG1ha2VVbmlx
dWU8UnVsZVNldD4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAg
ICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3Rvcklu
ZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgcnVsZVNldC0+c2hyaW5rVG9G
aXQoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+
IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogdm9pZCBEb2N1
bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2lzQXV0aG9yU3R5bGVE
ZWZpbmVkID0gdHJ1ZTsKLSAgICBtX2F1dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxl
U2V0PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAg
bV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC0xOTUsMTIg
KzE5NSwxMiBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZh
bGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJgogICAgICAgICAgICAgYXV0byBhcnJh
eUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpmZWF0dXJlLm1hdGNoRWxlbWVudCk7CiAg
ICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50QXJyYXlbYXJyYXlJbmRleF07
CiAgICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCi0gICAgICAgICAgICAgICAgcnVsZVNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICAgICAgICAgICAgICBydWxlU2V0ID0gbWFr
ZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShmZWF0dXJl
LnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7
CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICAgICAg
ICAgICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLmFwcGVuZChmZWF0
dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGludmFs
aWRhdGlvblJ1bGVTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVs
ZVNldD4+KCk7CisgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMgPSBtYWtlVW5pcXVl
PFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBp
ZiAobWF0Y2hFbGVtZW50QXJyYXlbaV0pCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uUnVs
ZVNldHMtPmFwcGVuZCh7IHN0YXRpY19jYXN0PE1hdGNoRWxlbWVudD4oaSksIFdURk1vdmUobWF0
Y2hFbGVtZW50QXJyYXlbaV0pLCBXVEZNb3ZlKGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlbaV0p
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXgg
MDVkMzg1YTU1OGM0OGM0OGVlOGRhOTBmNmExOGNiNGU3NWE2YTk1YS4uMDViNDU3ZmQ2ODIwYzY3
ZjBlMGZiZTkzMDg3YjhjZWYwODI5ZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ1
bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0
ZWRQc2UKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBydWxlRGF0YVZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNl
dDo6UnVsZURhdGFWZWN0b3I+KCk7CisgICAgYXV0byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlx
dWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZURhdGFWZWN0b3ItPnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkUnVsZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8m
IG1hdGNoZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMpCiAgICAgICAgIHJ1bGVEYXRhVmVjdG9yLT51
bmNoZWNrZWRBcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
Y3BwCmluZGV4IDIxMjI0NWRlZGNhZmY5NTZhZDQ0MTA3YjllYjQ0Y2I0MTMyOGFhZGIuLmUxYjFh
ZjIwZmIxMWFlM2RmZWUxOTJjYWM5MmU2MmNkZWE1NTdkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29s
IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBS
ZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJWaWV3KQogewotICAgIGF1dG8g
c291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOworICAg
IGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAg
IGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCAzYjIwZDQxMzMzNzUzM2Q2Y2IzYzU4Y2IzZDEwNGYwZjA0YjVl
NjE5Li5lMWUxZDcyMTIxMWU2ZGUwMWE4YTg2ZTBkNDBkODUyODk5N2IzNTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNw
cApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTCiAgICAgLy8gVGhl
IG1hcCBpcyBoZXJlIHRvIG1haW50YWluIHRoZSBvYmplY3QgaWRlbnRpdHkgb2YgdGhlIENTU1Zh
bHVlcyBvdmVyIG11bHRpcGxlIGludm9jYXRpb25zLgogICAgIC8vIEZJWE1FOiBJdCBpcyBsaWtl
bHkgdGhhdCB0aGUgaWRlbnRpdHkgaXMgbm90IGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxp
dHkgYW5kIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZC4KICAgICBpZiAoIW1fY3Nzb21WYWx1
ZVdyYXBwZXJzKQotICAgICAgICBtX2Nzc29tVmFsdWVXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKTsK
KyAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8Q1NTVmFs
dWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CiAgICAgCiAgICAgYXV0byYg
Y2xvbmVkVmFsdWUgPSBtX2Nzc29tVmFsdWVXcmFwcGVycy0+YWRkKGludGVybmFsVmFsdWUsIFdl
YWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+KCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
Y2xvbmVkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRleCBkZmZkYTZmNTFk
Zjk1NGQyMDZmMDNkMGM3MzU2MGRkYTM5MmQxNDMwLi40NGVlYjFkNzAyZDJmOWRjYjZiMTJiNTUy
NzgxNTY3ZmQwMGQyZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVs
ZURhdGEmIHJ1bGVEYXRhKQogCiAgICAgZm9yIChhdXRvJiBuYW1lQW5kTWF0Y2ggOiBzZWxlY3Rv
ckZlYXR1cmVzLmNsYXNzZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUobmFtZUFuZE1h
dGNoLmZpcnN0LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9y
PFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVs
ZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVE
YXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKICAgICAgICAg
aWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAg
ICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVBbmRNYXRjaC5maXJzdCk7CkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0byogc2VsZWN0b3IgPSBzZWxlY3RvckFuZE1h
dGNoLmZpcnN0OwogICAgICAgICBhdXRvIG1hdGNoRWxlbWVudCA9IHNlbGVjdG9yQW5kTWF0Y2gu
c2Vjb25kOwogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoc2VsZWN0b3ItPmF0dHJpYnV0
ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIFtdIHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAg
ICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwg
bWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOwogICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1h
dGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFk
ZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29u
c3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBw
ZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogICAgIGZvciAoYXV0byYg
a2V5VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVu
c3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGNsYXNzZXNB
ZmZlY3RpbmdIb3N0LmFkZChvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhl
ci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGtleVZhbHVl
UGFpciA6IG90aGVyLmF0dHJpYnV0ZVJ1bGVzKSB7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVu
c3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGF0dHJpYnV0
ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5iZWdpbigp
LCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKaW5kZXggZmE2YjkxMjAyMTNlYzU0YmI2NTkwM2NmYWU2NjliZDQ2NmZiYjAyNy4uM2JiYmJm
ZWJjYTAwOTk3ODJhZjM5ODFlYjg2NzM2Y2U2ODAzNmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNw
cApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KGNvbnN0IEF0
b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhCiAgICAgICAgIHJl
dHVybjsKICAgICBhdXRvJiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFydWxlcykKLSAgICAgICAgcnVsZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVEYXRhVmVjdG9yPigpOworICAgICAgICBydWxlcyA9IG1ha2VVbmlxdWU8UnVsZURhdGFW
ZWN0b3I+KCk7CiAgICAgcnVsZXMtPmFwcGVuZChydWxlRGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA2OWFmNTU4MTU2NTRiZTMyMGYx
YTlmZDcxYTc3NjY3ZDkyOTNmYTk3Li44ODc3NWFkN2JhOGFhNTkwYWQ3YmY3MmEzN2QzYjVmNjVi
NWQyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBA
IC0zNDgsOSArMzQ4LDkgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgKICAgICAvLyBUdXJuIHRo
aXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5n
dGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVy
Y2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENh
bGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJh
dG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhz
LnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgp
KTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RG
TW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0
aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDlhMTkxZDE3
ZGQ4ZTNlZGNjMWMxMzBjMjY1OTBlMGNhNmY0ZTM2YTMuLmM1YzJiZjVkMGY1ZmM3OTEwYWZmMTYy
NTk5OTBjNDM4NjYwYzE0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKQEAgLTgxMyw3ICs4MTMsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICAg
ICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpzaGFkb3dW
YWx1ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRv
d1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNW
YWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBhdXRvIHNoYWRv
d0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJl
YWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywg
Y29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICBp
ZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0Zp
cnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVu
dHJ5CiAgICAgICAgIGVsc2UKQEAgLTgyOSw3ICs4MjksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbAogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRT
aGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0
U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0
U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC04NDQsNyArODQ0LDcgQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVy
aXRCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkt
PmJveFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZl
ci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJv
eFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEzNTksNyArMTM1OSw3IEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3Vu
dGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRl
bnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0
aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0g
ICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50
Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVl
LT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENv
dW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwg
Y291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAg
IGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnRpZXMuY3BwCmluZGV4IDRjZjZjNmY3YWI3ZGY5ZmMwNDMzNGJiZThkZDA1YTNiNTU5ZTkz
NWMuLjE5Y2IwMzNkNzBiYjVhODk2ODY1NTcyNzU1Yjk2Yjk3NzA1MWNiNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0xNTMwLDcgKzE1MzAsNyBAQCBDU1NTdHls
ZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xh
cmF0aW9uKCkKICAgICAgICAgQVNTRVJUKCFtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgp
KTsKICAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdy
YXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4o
KnRoaXMpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVuaXF1ZTxQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQog
CkBAIC0xNTQwLDcgKzE1NDAsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eQogICAgICAgICBB
U1NFUlQobV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSA9PSAmcGFyZW50RWxlbWVudCk7
CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywg
cGFyZW50RWxlbWVudCk7CisgICAgbV9jc3NvbVdyYXBwZXIgPSBtYWtlVW5pcXVlPElubGluZUNT
U1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKICAgICByZXR1cm4gKm1f
Y3Nzb21XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
M2E1MmMzNjE5OWE3OWEyNWUwOWMwMWQ4ZmEwYzUwYWVmZjY4MmJiNS4uZGU0ZGE1ZjU1MTI5OTA5
MzFkYTg2YzVjN2U4M2JjYjEwMTgwOGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMTcxNSw3ICsxNzE1LDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0
aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAg
ICAgaWYgKGF1dGhvclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIGF1dGhvclJvbGxiYWNr
OwogCi0gICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNj
YWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBu
ZXdBdXRob3JSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNj
YWRlIGNvbnRhaW5zIFVBIHJ1bGVzIGFuZCB1c2VyIHJ1bGVzIGJ1dCBubyBhdXRob3IgcnVsZXMu
CiAgICAgICAgIG5ld0F1dGhvclJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVzKG1hdGNoUmVzdWx0
LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0
VUFSdWxlLCBmYWxzZSk7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxi
YWNrKAogICAgICAgICBpZiAodXNlclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIHVzZXJS
b2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVl
PENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOworICAgICAgICBh
dXRvIG5ld1VzZXJSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0
aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBj
YXNjYWRlIGNvbnRhaW5zIG9ubHkgVUEgcnVsZXMuCiAgICAgICAgIG5ld1VzZXJSb2xsYmFjay0+
YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFS
dWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vw
cm9wLnBsCmluZGV4IDk5N2M0YzAzNjdkZDVkMGQ2NDVkNWVkZjUxZWVjNGJmYjBjMzIxMDUuLjAy
YTM2ZWZlMDVkM2NjOWZlOTdkZDVjMGUyNTkzYWU3OWZkNmMyYzYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXBy
b3AucGwKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUlu
aGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExh
eWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiZm9yIChhdXRvKiBwYXJlbnQgPSAmc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgp
LT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBwYXJlbnQgJiYgcGFyZW50LT4i
IC4gJHRlc3RGdW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50LT5uZXh0KCkpIHtcbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0
KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkg
LiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlv
dXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5
cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
ICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgfVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgY2hpbGQtPiIgLiAkc2V0dGVyIC4gIihwYXJlbnQtPiIgLiAkZ2V0dGVyIC4gIigpKTtcbiI7
CkBAIC04MzcsNyArODM3LDcgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNl
dHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2
YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVk
ZWQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250
ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6
Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikp
O1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBwcmV2aW91
c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlw
ZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAg
ICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIH1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlTWFwKCktPiIgLiBnZXRGaWxsTGF5ZXJN
YXBmdW5jdGlvbigkbmFtZSkgLiAiKCIgLiAkQ1NTUHJvcGVydHlJZCAuICIsICpjaGlsZCwgaXRl
bSk7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5k
ZXggNjdjZmRmNTZkNjI1MDUzYTAxMTE5OTJkNzExZjhjOGZmZGI5NWRjMi4uZDc1ZTRmYzkyYzc3
YjA3YjFlNTNkYWQzMzg3ZTU1MWEzOTBjMjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1BhcnNlckltcGw6OkNT
U1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBzdHJpCiAgICAgLCBtX3N0eWxlU2hlZXQoc3R5bGVTaGVldCkKICAgICAsIG1fb2JzZXJ2ZXJX
cmFwcGVyKHdyYXBwZXIpCiB7Ci0gICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gc3RkOjptYWtl
X3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogc3RkOjptYWtlX3VuaXF1
ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CisgICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gbWFr
ZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogbWFrZVVuaXF1ZTxDU1NU
b2tlbml6ZXI+KHN0cmluZyk7CiAgICAgaWYgKGNvbnRleHQuZGVmZXJyZWRDU1NQYXJzZXJFbmFi
bGVkICYmICF3cmFwcGVyICYmIHN0eWxlU2hlZXQgJiYgcnVsZVBhcnNpbmcgPT0gQ1NTUGFyc2Vy
OjpSdWxlUGFyc2luZzo6RGVmZXJyZWQpCiAgICAgICAgIG1fZGVmZXJyZWRQYXJzZXIgPSBDU1NE
ZWZlcnJlZFBhcnNlcjo6Y3JlYXRlKGNvbnRleHQsIHN0cmluZywgKnN0eWxlU2hlZXQpOwogfQpA
QCAtMjgyLDkgKzI4Miw5IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBh
Z2VTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsCiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yOwogICAgIGlmICghdHlwZVNlbGVj
dG9yLmlzTnVsbCgpICYmIHBzZXVkby5pc051bGwoKSkKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCks
IHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CisgICAgICAg
IHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkp
OwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKICAgICAgICAgaWYgKCFwc2V1ZG8uaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IHNlbGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPihDU1NQYXJzZXJT
ZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IocHNldWRvKSk7CiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9yLT5tYXRjaCgpICE9IENTU1NlbGVjdG9yOjpQYWdlUHNl
dWRvQ2xhc3MpCkBAIC01MzUsNyArNTM1LDcgQEAgUmVmUHRyPFN0eWxlUnVsZU5hbWVzcGFjZT4g
Q1NTUGFyc2VySW1wbDo6Y29uc3VtZU5hbWVzcGFjZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW4KIFJl
ZlB0cjxTdHlsZVJ1bGVNZWRpYT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZShDU1NQ
YXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spCiB7CiAg
ICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6
Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgc3RkOjpt
YWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVk
UGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVl
cnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29u
dGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0
eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKIApAQCAtNTYzLDcgKzU2Myw3IEBAIFJl
ZlB0cjxTdHlsZVJ1bGVTdXBwb3J0cz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1cHBvcnRzUnVs
ZShDU1NQYXJzZXJUb2tlblJhbmdlCiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBl
cnJvciwgaW52YWxpZCBAc3VwcG9ydHMgY29uZGl0aW9uCiAKICAgICBpZiAobV9kZWZlcnJlZFBh
cnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5z
ZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBzdGQ6Om1ha2VfdW5pcXVl
PERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsK
KyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5zZXJpYWxp
emUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5
bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIGlmICht
X29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIo
KS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpTdXBwb3J0cywgbV9vYnNlcnZlcldyYXBwZXIt
PnN0YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBSZWZQdHI8U3R5bGVS
dWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5ZnJhbWVzUnVsZShib29sIHdl
YmtpdFByZWZpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3I7IGV4cGVj
dGVkIGlkZW50IHRva2VuIGluIEBrZXlmcmFtZXMgaGVhZGVyCiAKICAgICBpZiAobV9kZWZlcnJl
ZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUs
IHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9k
ZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVh
dGUobmFtZSwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICpt
X2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAg
ICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVs
ZTo6S2V5ZnJhbWVzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZzZXQocmFuZ2VDb3B5KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCmlu
ZGV4IDRkYmVmNDA1OGM3MTYyY2Q5NjQ2ZWE3NjRkY2JiOWJiY2YzMWU0NTkuLmEwODcwZDM3NjJj
ZWE0MmY1YjVlYWJkMDVlYTc0NGYyZDlkNmIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBz
ZXVkb1NlbGVjdG9yKFN0CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwor
ICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAg
IHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0Ns
YXNzKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UGFnZVBzZXVkb1R5cGUocHNldWRv
VHlwZSk7CiAgICAgcmV0dXJuIHNlbGVjdG9yOwpAQCAtNjMsNyArNjMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0Vs
ZW1lbnRTZWxlY3RvcgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
YXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7Cisg
ICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAg
c2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
KTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRv
VHlwZSk7CiAgICAgQXRvbVN0cmluZyBuYW1lOwpAQCAtODQsMTMgKzg0LDEzIEBAIHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRv
Q2xhc3NTZWxlY3RvcihTCiB7CiAgICAgYXV0byBwc2V1ZG9UeXBlID0gcGFyc2VQc2V1ZG9DbGFz
c0FuZENvbXBhdGliaWxpdHlFbGVtZW50U3RyaW5nKHBzZXVkb1R5cGVTdHJpbmcpOwogICAgIGlm
IChwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Vua25v
d24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNl
clNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dFBzZXVkb0NsYXNzVHlwZShwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzKTsKICAgICAgICAgcmV0dXJu
IHNlbGVjdG9yOwogICAgIH0KICAgICBpZiAocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRv
RWxlbWVudCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd24pIHsKLSAgICAgICAg
YXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7Cisg
ICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwog
ICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVu
dFR5cGUocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNl
bGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRWYWx1ZShwc2V1ZG9UeXBlU3RyaW5nLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkpOwpAQCAtMTAwLDEyICsxMDAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPENT
U1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVj
dG9yKFMKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKLSAgICA6
IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKKyAgICA6IG1fc2Vs
ZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKIHsKIH0KIAogQ1NTUGFyc2VyU2VsZWN0
b3I6OkNTU1BhcnNlclNlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKQotICAg
IDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCisg
ICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lKSkKIHsKIH0K
IApAQCAtMTI2LDcgKzEyNiw3IEBAIENTU1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFyc2VyU2VsZWN0
b3IoKQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiYmIHNlbGVjdG9yVmVjdG9yKQog
ewotICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChzdGQ6Om1ha2VfdW5pcXVlPENTU1Nl
bGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsKKyAgICBtX3NlbGVjdG9yLT5z
ZXRTZWxlY3Rvckxpc3QobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0
b3JWZWN0b3IpKSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnNldExhbmdBcmd1bWVu
dExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9tU3RyaW5nPj4gYXJndW1lbnRMaXN0KQpA
QCAtMjA5LDEyICsyMDksMTIgQEAgdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YXBwZW5kVGFnSGlz
dG9yeShDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3IgcmVsYXRpb24sIHMKIAogdm9pZCBDU1NQ
YXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z1FOYW1lLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKIHsKLSAgICBhdXRvIHNlY29uZCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWNvbmQg
PSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlY29uZC0+bV9zZWxlY3Rv
ciA9IFdURk1vdmUobV9zZWxlY3Rvcik7CiAgICAgc2Vjb25kLT5tX3RhZ0hpc3RvcnkgPSBXVEZN
b3ZlKG1fdGFnSGlzdG9yeSk7CiAgICAgbV90YWdIaXN0b3J5ID0gV1RGTW92ZShzZWNvbmQpOwog
Ci0gICAgbV9zZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1l
LCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOworICAgIG1fc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENT
U1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKICAgICBtX3NlbGVj
dG9yLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ4OGU2
MDIzZjIwMDI0YWZmZWY4NjE3YTUxNGM0MDliZjQ5ZDFlZjMuLjcwOGVjNzc3M2MxOGQ2ZTA4ZTAw
MWNhZmEzZDI4YzgwZDlmODcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBzdGF0aWMgUmVmUHRy
PENTU0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncwogICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gYnl0ZVN0cmVhbSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CisgICAgYXV0byBieXRlU3RyZWFtID0g
bWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBpZiAoIWJ1aWxkU1ZHUGF0aEJ5
dGVTdHJlYW1Gcm9tU3RyaW5nKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1
ZSgpLnRvU3RyaW5nKCksICpieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5nKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4IDZiM2FjYzg1ZTZmYzVlNWNiYjk1YWI5ZmUxYTZjN2Nh
OWVmODEwNDcuLmYzMzIzYjIyNmI0YjAxMDBjOTgzYzQ4NjYzNzVmMWU2NTdiMTczOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC01
NjQsNyArNTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxl
Y3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyhDU1NQYXJzZXJUb2sKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhbmc6IHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBDU1MgU2VsZWN0b3JzIExldmVsIDQgYWxsb3dzIDpsYW5nKCotZm9vKQotICAgICAgICAg
ICAgYXV0byBhcmd1bWVudExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5n
Pj4oKTsKKyAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8
QXRvbVN0cmluZz4+KCk7CiAgICAgICAgICAgICBpZiAoIWNvbnN1bWVMYW5nQXJndW1lbnRMaXN0
KGFyZ3VtZW50TGlzdCwgYmxvY2spKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICAgICAgc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RGTW92ZShhcmd1bWVu
dExpc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuY3BwCmluZGV4IDllYjVkN2U0OWY1NmExZTk4ZDFmYmI5YjIzZTZlYTcyZTIyNjE1OGYu
Ljg4MTE3ZjE5ZTRiMjZiYTI1YmZmMjVhODU1OTE3MzJiYjdhM2U3ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcApAQCAtMzM0LDcg
KzMzNCw3IEBAIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjpFbGVtZW50UXVldWUmIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVCYWNrCiB7CiAgICAgaWYgKCFzX3Byb2Nlc3Np
bmdCYWNrdXBFbGVtZW50UXVldWUpIHsKICAgICAgICAgc19wcm9jZXNzaW5nQmFja3VwRWxlbWVu
dFF1ZXVlID0gdHJ1ZTsKLSAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgp
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJhY2t1cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4oKSk7
CisgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVu
aXF1ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOwogICAgIH0KICAgICByZXR1cm4g
YmFja3VwRWxlbWVudFF1ZXVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmlu
ZGV4IGNiNzUyMzI4MGM3YjMyNWM2NmNkZTY0NmMxNWJmNWE5MTMxNzQ1YmMuLmMwOWI4NDM2MzU1
MzQxYThlZDQwYTVhOGI4NTE2YjZkOTdiYTZkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OmRpZEFkZEZpbGVU
b0l0ZW1MaXN0KCkKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKCkK
IHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxpc3Qg
PSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X2l0ZW1MaXN0OwogfQogCkBAIC00MTYsNyArNDE2LDcgQEAgYm9vbCBEYXRhVHJhbnNmZXI6Omhh
c1N0cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0bWxUZXh0KQogewotICAg
IGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsK
KyAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAg
ICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CiAg
ICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRtbFRleHQpOwogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpS
ZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRFdmVudCkpOwpAQCAtNDcx
LDcgKzQ3MSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJh
Zyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9j
dW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3Rl
Ym9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdy
aXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0
YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3Jp
Z2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwog
fQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UoRWxl
bWVudCogZWxlbWVudCwgaW50IHgsIGludCB5KQogICAgIG1fZHJhZ0ltYWdlID0gaW1hZ2U7CiAg
ICAgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIGlmICghbV9kcmFnSW1hZ2VMb2FkZXIpCi0g
ICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0ltYWdl
TG9hZGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyID0gbWFrZVVuaXF1
ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOwogICAgICAgICBtX2RyYWdJbWFnZUxvYWRlci0+c3Rh
cnRMb2FkaW5nKG1fZHJhZ0ltYWdlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMzM2MjIzMTA4MWIxM2Y3
MmRjMThkYWM1ZjM5MDdhNWU3YzE3YjBiZi4uZjIxMTMxZmY4Mjc4MjFkYzc0ZTg1MGE5OGYxYmIy
MzA5OWUwMjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChQYWdlKiBwYWdlKQogCiB2b2lkIHByb3ZpZGVEZXZp
Y2VPcmllbnRhdGlvblRvKFBhZ2UmIHBhZ2UsIERldmljZU9yaWVudGF0aW9uQ2xpZW50JiBjbGll
bnQpCiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8oJnBhZ2Us
IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtl
X3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZDE3ZmYyY2ZlYzE4NzhlNjdjNTgxMDc5MjgwYjQ5MWI4
ODU5M2U1OS4uZWQ0ODQ4OTdmYWQxOTk3NzhlODgzOTM5ZGQxMjNhZTJkNmM2YzIzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjEsMTkgKzUyMSwxOSBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2Vz
LCB1bnNpZwogICAgICwgbV9xdWlya3MobWFrZVVuaXF1ZVJlZjxRdWlya3M+KCp0aGlzKSkKICAg
ICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIobV9mcmFtZSA/IFJlZjxDYWNoZWRSZXNvdXJjZUxv
YWRlcj4obV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKSkgOiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG51bGxwdHIpKQog
ICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNpb24pCi0gICAgLCBtX3N0
eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKLSAgICAsIG1f
ZXh0ZW5zaW9uU3R5bGVTaGVldHMoc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0
cz4oKnRoaXMpKQotICAgICwgbV92aXNpdGVkTGlua1N0YXRlKHN0ZDo6bWFrZV91bmlxdWU8Vmlz
aXRlZExpbmtTdGF0ZT4oKnRoaXMpKQotICAgICwgbV9tYXJrZXJzKHN0ZDo6bWFrZV91bmlxdWU8
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFr
ZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVl
dHMobWFrZVVuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4oKnRoaXMpKQorICAgICwgbV92aXNp
dGVkTGlua1N0YXRlKG1ha2VVbmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQorICAgICwg
bV9tYXJrZXJzKG1ha2VVbmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCiAg
ICAgLCBtX3N0eWxlUmVjYWxjVGltZXIoW3RoaXNdIHsgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOyB9
KQogICAgICwgbV9kb2N1bWVudENyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAg
ICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykp
Ci0gICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRl
cj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxTY3JpcHRSdW5uZXI+
KCp0aGlzKSkKKyAgICAsIG1fbW9kdWxlTG9hZGVyKG1ha2VVbmlxdWU8U2NyaXB0TW9kdWxlTG9h
ZGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRy
YW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1z
VGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV94bWxWZXJzaW9uKCIxLjAiX3MpCi0gICAgLCBt
X2NvbnN0YW50UHJvcGVydHlNYXAoc3RkOjptYWtlX3VuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFw
PigqdGhpcykpCisgICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAobWFrZVVuaXF1ZTxDb25zdGFu
dFByb3BlcnR5TWFwPigqdGhpcykpCiAgICAgLCBtX2RvY3VtZW50Q2xhc3Nlcyhkb2N1bWVudENs
YXNzZXMpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQpAQCAtNTQ1LDEwICs1NDUsMTAgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICNlbmRp
ZgogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVu
dERlbGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCi0gICAgLCBtX2RldmljZU1vdGlvbkNvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VN
b3Rpb25DbGllbnQpKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TPigpKQotICAgICwgbV9kZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlTW90aW9u
Q2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQorICAgICwgbV9kZXZp
Y2VNb3Rpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4oKm1f
ZGV2aWNlTW90aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQobWFr
ZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
PigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCiAjZW5kaWYKICAgICAsIG1fcGVuZGluZ1Rh
c2tzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCkKICAgICAs
IG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFs
VXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKQEAgLTc1Nyw3ICs3NTcsNyBAQCBFbGVtZW50
KiBEb2N1bWVudDo6ZWxlbWVudEZvckFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkKIAogdm9p
ZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlDYWNoZSgpCiB7Ci0gICAgbV9hY2Nlc3NLZXlDYWNo
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+PihbdGhpc10geworICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBtYWtlVW5p
cXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4o
W3RoaXNdIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVl
RGVzY2VuZGFudHMoKnRoaXMpKSB7CiAgICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUp
KQpAQCAtNzgyLDcgKzc4Miw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBEb2N1bWVu
dDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVjCiAgICAgaWYgKHNl
bGVjdG9yU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRh
eEVycm9yIH07CiAgICAgaWYgKCFtX3NlbGVjdG9yUXVlcnlDYWNoZSkKLSAgICAgICAgbV9zZWxl
Y3RvclF1ZXJ5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsK
KyAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnlD
YWNoZT4oKTsKICAgICByZXR1cm4gbV9zZWxlY3RvclF1ZXJ5Q2FjaGUtPmFkZChzZWxlY3RvclN0
cmluZywgKnRoaXMpOwogfQogCkBAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVz
ZXRBY3RpdmVMaW5rQ29sb3IoKQogRE9NSW1wbGVtZW50YXRpb24mIERvY3VtZW50OjppbXBsZW1l
bnRhdGlvbigpCiB7CiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uKQotICAgICAgICBtX2ltcGxl
bWVudGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOwor
ICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gbWFrZVVuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9pbXBsZW1lbnRhdGlvbjsKIH0KIApAQCAtMTc2Miw3ICsx
NzYyLDcgQEAgTm9kZTo6Tm9kZVR5cGUgRG9jdW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKIEZvcm1D
b250cm9sbGVyJiBEb2N1bWVudDo6Zm9ybUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9mb3Jt
Q29udHJvbGxlcikKLSAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Rm9ybUNvbnRyb2xsZXI+KCk7CisgICAgICAgIG1fZm9ybUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PEZvcm1Db250cm9sbGVyPigpOwogICAgIHJldHVybiAqbV9mb3JtQ29udHJvbGxlcjsKIH0KIApA
QCAtMTk4Nyw3ICsxOTg3LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRl
eHQmIHRleHQsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWRUZXh0LCB1bnMKICAgICBBU1NFUlQo
IW1faW5SZW5kZXJUcmVlVXBkYXRlKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBpblJlbmRlclRy
ZWVVcGRhdGUobV9pblJlbmRlclRyZWVVcGRhdGUsIHRydWUpOwogCi0gICAgYXV0byB0ZXh0VXBk
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CisgICAgYXV0byB0
ZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CiAgICAgdGV4dFVw
ZGF0ZS0+YWRkVGV4dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRUZXh0LCBsZW5ndGhPZlJlcGxh
Y2VkVGV4dCwgV1RGOjpudWxsb3B0IH0pOwogCiAgICAgUmVuZGVyVHJlZVVwZGF0ZXIgcmVuZGVy
VHJlZVVwZGF0ZXIoKnRoaXMpOwpAQCAtMjI2OSw3ICsyMjY5LDcgQEAgdm9pZCBEb2N1bWVudDo6
cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNp
emUsIGludCYKIFN0eWxlUmVzb2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5
bGVSZXNvbHZlcigpCiB7CiAgICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyKQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CisgICAgICAgIG1fdXNlckFnZW50U2hh
ZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsK
ICAgICByZXR1cm4gKm1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7CiB9CiAKQEAg
LTI2NzIsNyArMjY3Miw3IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3VtZW50OjpheE9iamVjdENhY2hl
KCkgY29uc3QKIAogICAgIEFTU0VSVCgmdG9wRG9jdW1lbnQgPT0gdGhpcyB8fCAhbV9heE9iamVj
dENhY2hlKTsKICAgICBpZiAoIXRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSkgewotICAgICAg
ICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFYT2JqZWN0
Q2FjaGU+KHRvcERvY3VtZW50KTsKKyAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hl
ID0gbWFrZVVuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CiAgICAgICAgIGhhc0V2
ZXJDcmVhdGVkQW5BWE9iamVjdENhY2hlID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIHRvcERv
Y3VtZW50Lm1fYXhPYmplY3RDYWNoZS5nZXQoKTsKQEAgLTMwMzYsNyArMzAzNiw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnNldFBhcnNpbmcoYm9vbCBiKQogICAgIG1fYlBhcnNpbmcgPSBiOwogCiAgICAg
aWYgKG1fYlBhcnNpbmcgJiYgIW1fc2hhcmVkT2JqZWN0UG9vbCkKLSAgICAgICAgbV9zaGFyZWRP
YmplY3RQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7
CisgICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTaGFyZWRP
YmplY3RQb29sPigpOwogCiAgICAgaWYgKCFtX2JQYXJzaW5nICYmIHZpZXcoKSAmJiAhdmlldygp
LT5uZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3KCktPmZpcmVMYXlvdXRSZWxhdGVkTWlsZXN0
b25lc0lmTmVlZGVkKCk7CkBAIC01NTY2LDcgKzU1NjYsNyBAQCBjb25zdCBTVkdEb2N1bWVudEV4
dGVuc2lvbnMqIERvY3VtZW50OjpzdmdFeHRlbnNpb25zKCkKIFNWR0RvY3VtZW50RXh0ZW5zaW9u
cyYgRG9jdW1lbnQ6OmFjY2Vzc1NWR0V4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9zdmdFeHRl
bnNpb25zKQotICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOworICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBtYWtl
VW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zdmdF
eHRlbnNpb25zOwogfQogCkBAIC01NzcxLDcgKzU3NzEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0
U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50
LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAgICAgIHNldENvb2tpZVVSTChV
UkwoeyB9LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5
KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1
ZSgpKSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlz
KSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlzKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3OTAsNyArNTc5MCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICBpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID0g
ZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkudGFpbnRpbmcoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlOwogCiAgICAgc2V0U2VjdXJpdHlP
cmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShpc1NlY3VyaXR5T3JpZ2lu
VW5pcXVlID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3VybCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5ID0gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkub3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3koKTsKICAgICBpZiAoIW92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5LmlzTnVsbCgpKQpAQCAtNjAyOCw3ICs2MDI4LDcgQEAgU3RyaW5nIERvY3VtZW50OjpuYW1l
Rm9yQ1NTQ2FudmFzRWxlbWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVu
dCkKIFRleHRBdXRvU2l6aW5nJiBEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcoKQogewogICAgIGlm
ICghbV90ZXh0QXV0b1NpemluZykKLSAgICAgICAgbV90ZXh0QXV0b1NpemluZyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7CisgICAgICAgIG1fdGV4dEF1dG9TaXppbmcgPSBt
YWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwogICAgIHJldHVybiAqbV90ZXh0QXV0b1Npemlu
ZzsKIH0KICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAtNjM5NSw3ICs2Mzk1
LDcgQEAgdm9pZCBEb2N1bWVudDo6d2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCgpCiB2b2lkIERv
Y3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcihOb2RlJiBub2RlKQogewogICAgIGlmICgh
bV93aGVlbEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAgIG1fd2hlZWxFdmVudFRhcmdl
dHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAgICAgbV93aGVlbEV2ZW50VGFy
Z2V0cy0+YWRkKCZub2RlKTsKIApAQCAtNjQ1NSw3ICs2NDU1LDcgQEAgdm9pZCBEb2N1bWVudDo6
ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoTm9kZSYgaGFuZGxlcikKIHsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIGlmICghbV90b3VjaEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV90b3Vj
aEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAg
ICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwog
CiAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cy0+YWRkKCZoYW5kbGVyKTsKIApAQCAtODA0Myw3ICs4
MDQzLDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dDaGFubmVs
JiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgVmUKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IG1lc3NhZ2VMZXZlbEZyb21XVEZMb2dMZXZlbChs
ZXZlbCk7Ci0gICAgICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2Fn
ZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKCkp
KTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdU
Rk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOwogCiAgICAg
ICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogICAgIH0pOwpAQCAtODA3
OCw3ICs4MDc4LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdAogCiBib29sIERvY3VtZW50Ojpy
ZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSYmIHByb3ApCiB7
Ci0gICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIHN0
ZDo6bWFrZV91bmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3Ap
KSkuaXNOZXdFbnRyeTsKKyAgICByZXR1cm4gbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRk
KHByb3AubmFtZSwgbWFrZVVuaXF1ZTxDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1v
dmUocHJvcCkpKS5pc05ld0VudHJ5OwogfQogCiB2b2lkIERvY3VtZW50OjpkZXRhY2hGcm9tRnJh
bWUoKQpAQCAtODE3Miw3ICs4MTcyLDcgQEAgRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb24KICAgICAg
ICAgcmV0dXJuIHRvcERvY3VtZW50KCkuZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyKCk7CiAKICAgICBpZiAoIW1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyKQotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOwogfQogCkBAIC04MjAzLDcgKzgyMDMsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBSZWY8UGFpbnRXbwogQ29udGVudENoYW5nZU9ic2VydmVyJiBEb2N1bWVu
dDo6Y29udGVudENoYW5nZU9ic2VydmVyKCkKIHsKICAgICBpZiAoIW1fY29udGVudENoYW5nZU9i
c2VydmVyKQotICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CisgICAgICAgIG1fY29udGVudENoYW5n
ZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fY29udGVudENoYW5nZU9ic2VydmVyOyAKIH0KIApAQCAtODIxMSw3ICs4MjEx
LDcgQEAgRE9NVGltZXJIb2xkaW5nVGFuayYgRG9jdW1lbnQ6OmRvbVRpbWVySG9sZGluZ1Rhbmso
KQogewogICAgIGlmIChtX2RvbVRpbWVySG9sZGluZ1RhbmspCiAgICAgICAgIHJldHVybiAqbV9k
b21UaW1lckhvbGRpbmdUYW5rOwotICAgIG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4oKTsKKyAgICBtX2RvbVRpbWVySG9sZGluZ1Rh
bmsgPSBtYWtlVW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7CiAgICAgcmV0dXJuICptX2Rv
bVRpbWVySG9sZGluZ1Rhbms7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZjk3ZGJlNzUx
YmQ1MDQzNjI3M2MwNzhmNzBlZWExNWI2NWM3NjJhOS4uYTVlMzIwMzkyNTk0OTU1NTNjNTkzNmM1
YjgwNzFlNDBlMGY4ZTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyODQsNyArMTI4NCw3
IEBAIGNsYXNzIERvY3VtZW50CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRQYXJzZXJZ
aWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsK
ICAgICB9CiAKICAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSBjb25zdCB7IHJl
dHVybiBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcAppbmRleCAwMWM3Zjk2ZTAyZTllYmQ1ODg1M2ZiNWRiMWM0Yjg4MjFl
MmY5NzI4Li4wMzcwM2I2MmJjNjUwNTU3OGIzODliOTk5MzhhNGRhYWI2ZDc2YzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtNTksNyArNTksNyBAQCBj
bGFzcyBEb2N1bWVudEV2ZW50UXVldWU6OlRpbWVyIGZpbmFsIDogcHVibGljIFN1c3BlbmRhYmxl
VGltZXIgewogCiBEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9wZW5kaW5n
RXZlbnRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcykpCisgICAgLCBtX3BlbmRp
bmdFdmVudFRpbWVyKG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzKSkKICAgICAsIG1faXNDbG9zZWQo
ZmFsc2UpCiB7CiAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4
IDcyOTFkNGFkZWU5ZjQxNzdmZGJmZWZlZWZkZGYyNjcwNTRhOWM0ZjAuLmU3NjQxYWY2MjE4YmYx
M2FiMGUzYzY4OTIwMjBkZTg4OWM0ZTkwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihOb2RlJiBub2RlLCBjb25zdCBEb2N1bWVu
dE1hcmtlciYgbmV3TWEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFya2VyTGlzdD4mIGxpc3QgPSBt
X21hcmtlcnMuYWRkKCZub2RlLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBpZiAo
IWxpc3QpIHsKLSAgICAgICAgbGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyTGlzdD4oKTsK
KyAgICAgICAgbGlzdCA9IG1ha2VVbmlxdWU8TWFya2VyTGlzdD4oKTsKICAgICAgICAgbGlzdC0+
YXBwZW5kKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIobmV3TWFya2VyKSk7CiAgICAgfSBlbHNlIGlm
IChzaG91bGRJbnNlcnRBc1NlcGFyYXRlTWFya2VyKG5ld01hcmtlcikpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbWVyZ2UgZGljdGF0aW9uIG1hcmtlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4IDgxZWZiMTBkNWU3NmVkYjZmNmQzODM1MzAw
NTFkMjljMzg4ZWFmZGIuLjg1NWEyYTA2NTZmNzFiNDVlZThkNGZmZjI4NGE1MzUzNzlhMzg3OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCkBAIC00
OCw3ICs0OCw3IEBAIERvY3VtZW50U3RvcmFnZUFjY2VzcyogRG9jdW1lbnRTdG9yYWdlQWNjZXNz
Ojpmcm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNzKj4oU3VwcGxlbWVudDxEb2N1bWVudD46OmZy
b20oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRT
dG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CiAgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmRvY3VtZW50
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CkBAIC0x
ODMsNyArMTgzLDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgYm9vbCBzaG91
bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6WWVzIHx8IHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bjo6Tm87CiAKICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigq
ZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1
ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNl
ID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAg
ICB9KSk7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVu
dFJlZmVyZW5jZSldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFk
UXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVu
Y2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgewogICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC0+Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOwogICAg
ICAgICAgICAgfSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
CiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3JhcnlUaW1lVXNlckdl
c3R1cmUoKQogewotICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50
KTsKKyAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gbWFrZVVuaXF1ZTxVc2VyR2VzdHVyZUlu
ZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA3MTIwMDhmMjFiMjMxYzRkZTIxYzQxM2I1ZDEwODVk
OTNmMjVkYWYzLi5iMGQ4YWQ1ZDE2NDA5YTdiZTU2YmMzYzEwYjY5ZDMyYmE3NTBkYzIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00NzcsNyArNDc3LDcgQEAgTmFtZWROb2RlTWFwJiBFbGVt
ZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVN
YXAgPSByYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKSkKICAgICAgICAgcmV0dXJuICphdHRyaWJ1dGVN
YXA7CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAoc3RkOjptYWtlX3VuaXF1ZTxOYW1l
ZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOworICAgIHJhcmVEYXRhLnNl
dEF0dHJpYnV0ZU1hcChtYWtlVW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3RfY2FzdDxFbGVtZW50
Jj4oKnRoaXMpKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKTsKIH0KIApA
QCAtMjMwNyw3ICsyMzA3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVt
ZW50KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVyZmEKICAgICBzZXRGbGFn
KElzQ3VzdG9tRWxlbWVudCk7CiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpOwogICAgIGlmICghZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKQotICAgICAg
ICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0
YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9y
U3VidHJlZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9t
RWxlbWVudFN0YXRlKCp0aGlzKTsKIH0KQEAgLTIzNDQsNyArMjM0NCw3IEBAIHZvaWQgRWxlbWVu
dDo6ZW5xdWV1ZVRvVXBncmFkZShKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRl
cmZhY2UpCiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGJv
b2wgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSA9IGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUoKTsKICAgICBpZiAoIWFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpCi0gICAgICAgIGRh
dGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAgICAgICBkYXRhLnNl
dEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKICAgICBkYXRhLmN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlKCktPmVucXVldWVFbGVtZW50VXBncmFkZSgqdGhpcywgYWxyZWFkeVNjaGVkdWxl
ZFRvVXBncmFkZSk7CiB9CiAKQEAgLTM0ODAsNyArMzQ4MCw3IEBAIERPTVRva2VuTGlzdCYgRWxl
bWVudDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY2xhc3NMaXN0KCkpCi0gICAgICAgIGRh
dGEuc2V0Q2xhc3NMaXN0KHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRN
TE5hbWVzOjpjbGFzc0F0dHIpKTsKKyAgICAgICAgZGF0YS5zZXRDbGFzc0xpc3QobWFrZVVuaXF1
ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwogICAgIHJldHVy
biAqZGF0YS5jbGFzc0xpc3QoKTsKIH0KIApAQCAtMzQ4OCw3ICszNDg4LDcgQEAgRGF0YXNldERP
TVN0cmluZ01hcCYgRWxlbWVudDo6ZGF0YXNldCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBk
YXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmRhdGFzZXQoKSkK
LSAgICAgICAgZGF0YS5zZXREYXRhc2V0KHN0ZDo6bWFrZV91bmlxdWU8RGF0YXNldERPTVN0cmlu
Z01hcD4oKnRoaXMpKTsKKyAgICAgICAgZGF0YS5zZXREYXRhc2V0KG1ha2VVbmlxdWU8RGF0YXNl
dERPTVN0cmluZ01hcD4oKnRoaXMpKTsKICAgICByZXR1cm4gKmRhdGEuZGF0YXNldCgpOwogfQog
CkBAIC0zNjMyLDcgKzM2MzIsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEmIEVsZW1lbnQ6
OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEg
PSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLmludGVyc2VjdGlv
bk9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZl
ckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOworICAg
ICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEobWFrZVVuaXF1ZTxJbnRl
cnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEuaW50ZXJzZWN0
aW9uT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKQEAgLTM2NTgsNyArMzY1OCw3IEBAIFJlc2l6ZU9ic2Vy
dmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlUmVzaXplT2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRv
JiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEu
cmVzaXplT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVy
RGF0YShzdGQ6Om1ha2VfdW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJh
cmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YShtYWtlVW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0
YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRhdGEoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IGQ5ZTY2MzQ5Y2JkYmEw
YmI4MWQyYWNmYmZkYzBkNDMzNzhjNjU4ZGIuLjBiMDlkMDgyYzM2ZWRkZDg0YjljZGU5ODgyNTI3
MmRiNWY5NmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpcwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvIGxpc3RlbmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZl
bnRMaXN0ZW5lclZlY3Rvcj4oKTsKKyAgICBhdXRvIGxpc3RlbmVycyA9IG1ha2VVbmlxdWU8RXZl
bnRMaXN0ZW5lclZlY3Rvcj4oKTsKICAgICBsaXN0ZW5lcnMtPnVuY2hlY2tlZEFwcGVuZChSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKSk7
CiAgICAgbV9lbnRyaWVzLmFwcGVuZCh7IGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lcnMpIH0p
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggOWU5MzA4YmI1
ZGExNDYxZTM1OGUzY2M2MmZlYWZkY2ZjZDBjYzdhZC4uNWI2YWI2ODc1NWI2MWJmZTJkNGE2OGJj
YmU3NTI0ZmQwZGRhYmI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0zMzksMTMgKzMz
OSwxMyBAQCBzdHJ1Y3QgRXZlbnROYW1lcyB7CiAgICAgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNI
KERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKQogI3VuZGVmIERPTV9FVkVOVF9OQU1FU19ERUNMQVJF
CiAKLSAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBzdGQ6Om1ha2VfdW5p
cXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgorICAgIC8vIEZJWE1FOiBU
aGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIG1ha2VVbmlxdWUgYmVsb3cgZG9lcyBub3Qgd29yayBp
biB3aW5kb3dzIHBvcnQuCiAgICAgLy8KICAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4u
LiBBcmdzPgotICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5n
bGVfb2JqZWN0IHN0ZDo6bWFrZV91bmlxdWUoQXJncyYmLi4uKTsKKyAgICAvLyBmcmllbmQgdHlw
ZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBtYWtlVW5pcXVlKEFyZ3Mm
Ji4uLik7CiAgICAgLy8KICAgICAvLyBUaGlzIGNyZWF0ZSBmdW5jdGlvbiBzaG91bGQgYmUgZGVs
ZXRlZCBsYXRlciBhbmQgaXMgb25seSBmb3Iga2VlcGluZyBFdmVudE5hbWVzIGFzIHByaXZhdGUu
Ci0gICAgLy8gc3RkOjptYWtlX3VuaXF1ZSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorICAgIC8v
IG1ha2VVbmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KICAgICAvLwogICAgIHRlbXBsYXRl
PGNsYXNzLi4uIEFyZ3M+CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVzPiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCmluZGV4IGRiMTQy
OGQxZDQyNjA1OGNiNjViMWViNmZhY2EyM2RiOTg5MjgyYmQuLmEwYWQwYWQ3YzQ4MjY5MmU2Mzhl
NTcyODBmMWEyOTI0N2FjZWMxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCkBAIC0xMTUs
MTcgKzExNSwxNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFy
Z2V0LCBFdmVudCYgZXZlbnQpCiB7CiAgICAgdXNpbmcgTWFrZUV2ZW50Q29udGV4dCA9IHN0ZDo6
dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+ICgqKShOb2RlJiwgRXZlbnRUYXJnZXQqLCBFdmVudFRh
cmdldCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgTWFrZUV2ZW50Q29udGV4dCBtYWtl
RXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0
LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdl
dCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93
RGVwdGgpOwogICAgIH07CiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSB8fCBldmVudC5p
c0ZvY3VzRXZlbnQoKSkgewogICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5v
ZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQg
Y2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4
dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUs
IGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9Owog
ICAgIH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChpczxUb3VjaEV2ZW50Pihl
dmVudCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVu
dFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNo
YWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVu
dFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0
LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2VuZGlmCkBAIC0xNDks
NyArMTQ5LDcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdl
dCwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pigqbm9kZSkuZG9tV2luZG93KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNsb3NlZFNo
YWRvd0RlcHRoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZCht
YWtlVW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNs
b3NlZFNoYWRvd0RlcHRoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEV2ZW50UGF0
aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIHRhcmdldHMpCiAgICAgICAgIEFT
U0VSVCh0YXJnZXQpOwogICAgICAgICBOb2RlKiBvcmlnaW4gPSAqdGFyZ2V0cy5iZWdpbigpOwog
ICAgICAgICBpZiAoIXRhcmdldC0+aXNDbG9zZWRTaGFkb3dIaWRkZW4oKm9yaWdpbikpCi0gICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJn
ZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CisgICAgICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VV
bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CiAgICAgfQog
fQogCkBAIC0zMTcsNyArMzE3LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9y
PEV2ZW50VGFyZ2V0Kj4mIHRhcmdldHMpCiAgICAgZm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRz
KSB7CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBBU1NFUlQoIWlzPE5vZGU+KHRh
cmdldCkpOwotICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250
ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsKKyAgICAgICAgbV9w
YXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFy
Z2V0cy5iZWdpbigpLCAwKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVu
TWFuYWdlci5oCmluZGV4IGVkZDljYTI4ZWE0OTNhYzdjOTRjOGJkZTI4NWIxNjY2YzM4ODI1NTku
LmE3MGJjYWVjY2M4Nzk1YTRmNGJhNDI2ZTI1MTNkZmY3YTBmNzRiMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFJlbmRlclRy
ZWVCdWlsZGVyOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIEZ1bGxzY3JlZW5NYW5hZ2Vy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVu
TWFuYWdlcihEb2N1bWVudCYpOwogICAgIH5GdWxsc2NyZWVuTWFuYWdlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAppbmRleCBiM2EwNmU0
N2IwNzAwZjdjNDdkM2Q5YWVmMzNmNDQzNzI0ZTBjNTVlLi45NDBlZmNhZWQ4MzA5MWMyNTgzZmE5
ZTMzNmVmM2Q3OGM1NGFhM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQCB2b2lkIElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbVN0cmluZyYgaWQsIElkVGFyZ2V0T2Jz
ZXJ2ZQogICAgIAogICAgIElkVG9PYnNlcnZlclNldE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
cmVnaXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxP
YnNlcnZlclNldD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8T2JzZXJ2ZXJTZXQ+KCk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQob2Jz
ZXJ2ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDdlN2EzNDc5
N2I4NjI5ZjYyZjdmNzg2YWIxNGM1YzZmNWJkOTBiMTQuLmNlODU2YmI1NWQ1YmQ5OWU2NmY1MGNi
NTViMGJlNDc5MGUwOTg0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoKSA9IGRl
ZmF1bHQ7CiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQmIGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCiAgICAgOiBV
SUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKGtleS50eXBl
KCkpLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMsIElzQ29tcG9zZWQ6OlllcywK
ICAgICAgICAga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3
LmNvcHlSZWYoKSwgMCwga2V5Lm1vZGlmaWVycygpLCBJc1RydXN0ZWQ6OlllcykKLSAgICAsIG1f
dW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ+KGtleSkpCisgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KG1ha2VVbmlxdWU8
UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRU
UklCVVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFz
a3MuaAppbmRleCBiNjMxODQxNTBmNWEzOTE0MjUyYjg0MmVkOWQwN2RlYWFmNmI0MDM2Li41ZDUw
YjdkNWQ3YjIzYTYxZGNiYmNjNWY4YjVmMWZiYWIyYmI0YjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWljcm90YXNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rh
c2tzLmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgVm9pZE1pY3JvdGFzayBmaW5hbCA6IHB1Ymxp
YyBNaWNyb3Rhc2sgewogfTsKIAogY2xhc3MgTWljcm90YXNrUXVldWUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNaWNyb3Rhc2tRdWV1
ZT47CiAgICAgZnJpZW5kIGNsYXNzIE1pY3JvdGFzazsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA2NmM1ZWEwYjlkNjM0NTQ0MzgxMmZiMTMxZmZl
NWRiZTZjYTFkZGYzLi4xOTNmMjc4MDVhNWFlZDRiNjA2ZTljZWVhM2E5YTM1ZDhiMWU5OTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcg
QEAgc3RhdGljIHZvaWQgcXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2soKQog
ICAgIGlmIChtdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnKQogICAg
ICAgICByZXR1cm47CiAgICAgbXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVk
RmxhZyA9IHRydWU7Ci0gICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkpOworICAgIE1p
Y3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxNdXRhdGlv
bk9ic2VydmVyTWljcm90YXNrPigpKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1
ZXVlTXV0YXRpb25SZWNvcmQoUmVmPE11dGF0aW9uUmVjb3JkPiYmIG11dGF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAK
aW5kZXggNTJkYTYxZjc0ZjFmNTdhZjY4NTQ5ZjM2NjU2MzA2ZDhkMTcwM2M3OS4uMDI3NmU0MmJl
NWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5Y2JkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyCiAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFs
dWVGbGFnKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOwogfQogCiBib29sIE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNw
cAppbmRleCBjOGZjMDEwNjcyNDVlNGUzNjE5N2EyZjZkNGQxZTQ1NzU0N2JiYzhhLi5lNWM2ZGQx
NmE0ZGI2MDliYTUyNzNhNDdhZjdmYTY4MjY2MmEyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC02OCw3ICs2OCw3
IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6b2JzZXJ2ZWRTdWJ0cmVlTm9k
ZVdpbGxEZXRhY2goTm9kZSYgbm9kZSkKICAgICBtX29ic2VydmVyLT5zZXRIYXNUcmFuc2llbnRS
ZWdpc3RyYXRpb24oKTsKIAogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcykg
ewotICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKKyAgICAgICAgbV90cmFuc2llbnRS
ZWdpc3RyYXRpb25Ob2RlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2Rl
Pj4+KCk7CiAKICAgICAgICAgQVNTRVJUKCFtX25vZGVLZXB0QWxpdmUpOwogICAgICAgICBtX25v
ZGVLZXB0QWxpdmUgPSAmbV9ub2RlOyAvLyBCYWxhbmNlZCBpbiB0YWtlVHJhbnNpZW50UmVnaXN0
cmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3NmQ0ZWE5ZDczMGE5MjM3MmE5ZjhlN2E2ZDhm
NjdkMDBmZDNkYmY1Li5jYWJmMWViNThjOWMyM2NhZDg4NWJkMDFkZjEyMmI2NTFhZTAyYmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC0zOTgsOSArMzk4LDkgQEAgdm9pZCBOb2RlOjptYXRlcmlhbGl6
ZVJhcmVEYXRhKCkKIHsKICAgICBOb2RlUmFyZURhdGEqIGRhdGE7CiAgICAgaWYgKGlzPEVsZW1l
bnQ+KCp0aGlzKSkKLSAgICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJhcmVE
YXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2Uo
KTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKICAgICBlbHNlCi0g
ICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVu
ZGVyZXIpLnJlbGVhc2UoKTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8Tm9kZVJhcmVEYXRh
PihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOwogICAgIEFTU0VSVChkYXRhKTsKIAogICAg
IG1fZGF0YS5tX3JhcmVEYXRhID0gZGF0YTsKQEAgLTIyMTUsNyArMjIxNSw3IEBAIEV2ZW50VGFy
Z2V0RGF0YSYgTm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKIAogICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soc19ldmVudFRhcmdldERhdGFNYXBMb2NrKTsKICAgICBzZXRIYXNFdmVudFRh
cmdldERhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhp
cywgc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICByZXR1cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBtYWtlVW5pcXVlPEV2
ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIE5vZGU6OmNsZWFy
RXZlbnRUYXJnZXREYXRhKCkKQEAgLTIyODcsNyArMjI4Nyw3IEBAIHZvaWQgTm9kZTo6cmVnaXN0
ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9i
c2VydmVyCiAgICAgfQogCiAgICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKLSAgICAgICAgcmVnaXN0
cnkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4o
b2JzZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKKyAgICAgICAgcmVn
aXN0cnkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4ob2Jz
ZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKICAgICAgICAgcmVnaXN0
cmF0aW9uID0gcmVnaXN0cnkubGFzdCgpLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCmluZGV4IDc2OTBkNTk5ZmNhN2RjOTljYjQ5ZTE2MGZiZTJhZmFkZGYwMGNkZjQu
Ljc2NmQ2N2YzZjZkNjI5YWYwODk0MmFkYzIzZTJjMjJjMjlmM2U0NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKQEAgLTI4MSw3ICsyODEsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBw
dWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgTm9kZUxpc3RzTm9kZURhdGEmIGVuc3VyZU5v
ZGVMaXN0cygpCiAgICAgewogICAgICAgICBpZiAoIW1fbm9kZUxpc3RzKQotICAgICAgICAgICAg
bV9ub2RlTGlzdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOworICAg
ICAgICAgICAgbV9ub2RlTGlzdHMgPSBtYWtlVW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOwog
ICAgICAgICByZXR1cm4gKm1fbm9kZUxpc3RzOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OSw3IEBA
IGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsKICAgICBOb2Rl
TXV0YXRpb25PYnNlcnZlckRhdGEmIGVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkKICAgICB7
CiAgICAgICAgIGlmICghbV9tdXRhdGlvbk9ic2VydmVyRGF0YSkKLSAgICAgICAgICAgIG1fbXV0
YXRpb25PYnNlcnZlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVy
RGF0YT4oKTsKKyAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBtYWtlVW5pcXVl
PE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICptX211dGF0aW9u
T2JzZXJ2ZXJEYXRhOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
ZGlvQnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vw
cy5jcHAKaW5kZXggNTMzN2M1OGNkZmJiYWFiMjMwMTg0NTAyNjM4ZGM2MzQ0OWY3OTZhYy4uNjFi
YmM0ZWRmZjkzNGE2NDQ2ZWEyNTY3NTU2NjNmZDU0Njg3N2UzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCkBAIC0xOTgsMTEgKzE5OCwxMSBAQCB2b2lkIFJhZGlv
QnV0dG9uR3JvdXBzOjphZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQotICAgICAgICBtX25hbWVU
b0dyb3VwTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKKyAgICAgICAg
bV9uYW1lVG9Hcm91cE1hcCA9IG1ha2VVbmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CiAKICAgICBh
dXRvJiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50Lm5hbWUoKS5pbXBsKCks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWdyb3VwKQotICAgICAgICBncm91
cCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFkaW9CdXR0b25Hcm91cD4oKTsKKyAgICAgICAgZ3JvdXAg
PSBtYWtlVW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CmluZGV4IGM4MjVhN2VkZWU2YmIyZDVmNTE2YzZkM2U2ZWE3NDEwZTZlY2M3NTYuLjA0YWZlOWQ3
OGFkMGJkMTAyOGE2NzAzYzBmYzNkNGY2NTNiMTNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM3OSw4ICszNzksOCBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbgogewogICAgIGlmIChtX2luRGlzcGF0Y2hFcnJvckV2ZW50KSB7CiAg
ICAgICAgIGlmICghbV9wZW5kaW5nRXhjZXB0aW9ucykKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4
Y2VwdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGlu
Z0V4Y2VwdGlvbj4+PigpOwotICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAg
ICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBtYWtlVW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOworICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5h
cHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE0LDkgKzQxNCw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihKU0M6OkV4ZWNTdGF0
ZSYgc3RhCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlVuaGFuZGxlZCBQ
cm9taXNlIFJlamVjdGlvbjogIiwgcmVzdWx0TWVzc2FnZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykK
LSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAg
ICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgZWxzZQotICAgICAgICBt
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7CiAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92
ZShtZXNzYWdlKSk7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBSZWplY3RlZFByb21pc2VUcmFj
a2VyJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2Vy
U2xvdwogICAgIC8vIFdoZW4gaW5pdGlhbGl6aW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHZt
KCkgaXMgbm90IHJlYWR5LgogCiAgICAgQVNTRVJUKCFtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIp
OwotICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVqZWN0
ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOworICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJh
Y2tlciA9IG1ha2VVbmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOwog
ICAgIHJldHVybiAqbV9yZWplY3RlZFByb21pc2VUcmFja2VyLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggNTVkYzJjODdhNGFjMjAyZDcxYWRkYTY2ZDU5
NmI1ZmVhMGJjODg1Ni4uMjEwOWNlNGEyMjhjM2U3YmE4N2E0YmE1MmIyZGIyODIzNjA4NzEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIEV4
Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBTZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBT
dHJpbmcmIHNlbGVjdG9ycywgRG9jCiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbWF4aW11
bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUpCiAgICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRy
aWVzLnJhbmRvbSgpKTsKIAotICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIHN0
ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIG1ha2VV
bmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjk2M2I2ODM3OWQ4
OGYyN2E4NGUyZjFkYTY1MTUzODE4MDViMjkzYy4uNjc4NmMwZDIxZTFiMmMyYTU3ODUxYmQwODUx
NjRjMWExZTkyYzk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNTgsNyArNTgs
NyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93Um9v
dE1vZGUgdHlwZSkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRv
d1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50KQogICAgICwgbV90eXBlKHR5
cGUpCi0gICAgLCBtX3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0
aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMp
KQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYgc2xvCiAgICAg
OiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJl
ZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShTaGFkb3dSb290TW9kZTo6VXNl
ckFnZW50KQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3Bl
PigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0
aGlzKSkKICAgICAsIG1fc2xvdEFzc2lnbm1lbnQoV1RGTW92ZShzbG90QXNzaWdubWVudCkpCiB7
CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXBhcmVudFRyZWVTY29wZSgpIHx8ICZwYXJlbnRUcmVl
U2NvcGUoKS0+ZG9jdW1lbnRTY29wZSgpID09ICZuZXdEb2N1bWVudCk7CiAKICAgICAvLyBTdHls
ZSBzY29wZXMgYXJlIGRvY3VtZW50IHNwZWNpZmljLgotICAgIG1fc3R5bGVTY29wZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CisgICAgbV9zdHlsZVNjb3BlID0gbWFr
ZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkgPT0gJm5ld0RvY3Vt
ZW50KTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6YWRkU2xvdEVs
ZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzCiB7
CiAgICAgQVNTRVJUKCZzbG90LnJvb3ROb2RlKCkgPT0gdGhpcyk7CiAgICAgaWYgKCFtX3Nsb3RB
c3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxT
bG90QXNzaWdubWVudD4oKTsKKyAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IG1ha2VVbmlxdWU8
U2xvdEFzc2lnbm1lbnQ+KCk7CiAKICAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+YWRkU2xv
dEVsZW1lbnRCeU5hbWUobmFtZSwgc2xvdCwgKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90
QXNzaWdubWVudC5jcHAKaW5kZXggYTQxOWRkYTUyOGFjY2JkYTZkZTlkZGYxYTU0ODY0Y2ZkZjkx
NjBlZi4uNDVjMDhlYTM2YWZlMTM5N2JlMGVjYmZiMjllMjI4ZWNkMGM5OTA3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTbG90
QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwg
SFRNTFNsb3RFbGVtZW4KICAgICAgICAgLy8gdG8gYXZvaWQgYWx3YXlzIGhhdmluZyBhIHZlY3Rv
ciBvZiBhbGwgY2hpbGQgbm9kZXMgb2YgYSBzaGFkb3cgaG9zdC4KICAgICAgICAgaWYgKHNsb3RO
YW1lID09IGRlZmF1bHRTbG90TmFtZSgpKQogICAgICAgICAgICAgbV9zbG90QXNzaWdubWVudHNJ
c1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYXV0byYg
c2xvdCA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIGJvb2wgbmVlZHNTbG90Y2hh
bmdlRXZlbnQgPSBzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNB
c3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsIHNsb3QpOwpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQg
U2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbVN0cmlu
ZyYgc2xvdE5hbWUpCiAgICAgfQogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nsb3RzLmVuc3Vy
ZShzbG90TmFtZSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90Pigp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwogICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPmFzc2lnbmVkTm9kZXMuYXBwZW5kKCZjaGlsZCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDJmMjg3MGQxNjY5ZDQ0YmM2MTg0YTcyZWM2M2Vi
MzIzZjUyN2QzOWYuLjUzMWFjZGY0ZGQ2NTY4ZTBmNDYyMWViNTBkODlkZWU0NjdkNTVhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFRyZWVTY29wZTo6VHJl
ZVNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fcm9vdE5vZGUoc2hhZG93Um9vdCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkK
ICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKCZkb2N1bWVudCkKLSAgICAsIG1faWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Pigp
KQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgc2hhZG93Um9vdC5zZXRUcmVlU2NvcGUoKnRoaXMp
OwogfQpAQCAtNzMsNyArNzMsNyBAQCBUcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKGRvY3VtZW50KQogICAgICwgbV9kb2N1bWVudFNjb3Bl
KGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUobnVsbHB0cikKLSAgICAsIG1faWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgZG9jdW1lbnQuc2V0VHJlZVNjb3Bl
KCp0aGlzKTsKIH0KQEAgLTE0MSw3ICsxNDEsNyBAQCBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBU
cmVlU2NvcGU6OmdldEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50SQog
dm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBlbGVt
ZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgbm90aWZ5T2JzZXJ2ZXJzKQogewogICAgIGlm
ICghbV9lbGVtZW50c0J5SWQpCi0gICAgICAgIG1fZWxlbWVudHNCeUlkID0gc3RkOjptYWtlX3Vu
aXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IG1h
a2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlJZC0+YWRk
KGVsZW1lbnRJZCwgZWxlbWVudCwgKnRoaXMpOwogICAgIGlmIChub3RpZnlPYnNlcnZlcnMpCiAg
ICAgICAgIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVu
dElkKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRC
eU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNjb3BlOjphZGRF
bGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50JiBlbGVtZW50
KQogewogICAgIGlmICghbV9lbGVtZW50c0J5TmFtZSkKLSAgICAgICAgbV9lbGVtZW50c0J5TmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9l
bGVtZW50c0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBt
X2VsZW1lbnRzQnlOYW1lLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0yMzks
NyArMjM5LDcgQEAgdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50JiBp
bWFnZU1hcCkKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1faW1h
Z2VNYXBzQnlOYW1lKQotICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBt
YWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9pbWFnZU1hcHNCeU5hbWUt
PmFkZCgqbmFtZSwgaW1hZ2VNYXAsICp0aGlzKTsKIH0KIApAQCAtMjYzLDcgKzI2Myw3IEBAIEhU
TUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoY29uc3Qg
QXRvbVN0cmluZ0ltcGwmIG5hbWUsIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAg
aWYgKCFtX2ltYWdlc0J5VXNlbWFwKQotICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gc3RkOjpt
YWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2ltYWdlc0J5VXNl
bWFwID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIHJldHVybiBtX2lt
YWdlc0J5VXNlbWFwLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0zMDAsNyAr
MzAwLDcgQEAgSFRNTExhYmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJlbEVsZW1lbnRGb3JJZChj
b25zdCBBdG9tU3RyaW5nJiBmb3JBdHRyaWJ1dGVWYWwKIAogICAgIGlmICghbV9sYWJlbHNCeUZv
ckF0dHJpYnV0ZSkgewogICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgbWFwIG9uIGZpcnN0IGFjY2Vz
cy4KLSAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJl
ZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IG1h
a2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGxh
YmVsIDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTExhYmVsRWxlbWVudD4obV9yb290Tm9kZSkpIHsK
ICAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvclZhbHVlID0gbGFiZWwuYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCA3OTM0MmM0OTc3NTNkOWExNTI2ZTA1NTU0OWZjNzc5NzIxNGJmNmU0Li44OTFjMTI4
OGM2ZTMxNGFjY2FlOWI2MjcxOTc4MTg4MWU3NDJkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC0zODAsMTIgKzM4MCwxMiBAQCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAg
IHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5OgogICAg
IGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDdXQ6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1v
ZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCkpOwogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUGxhaW5U
ZXh0OgogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSkgewogICAgICAgICAgICAgYXV0byBwbGFp
blRleHRUeXBlID0gInRleHQvcGxhaW4iX3M7CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dCA9
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT5yZWFkU3RyaW5nKHBsYWluVGV4
dFR5cGUpOwotICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxT
dGF0aWNQYXN0ZWJvYXJkPigpOworICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAgICAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVT
dHJpbmcocGxhaW5UZXh0VHlwZSwgcGxhaW5UZXh0KTsKICAgICAgICAgICAgIHJldHVybiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpT
dG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpKTsKICAgICAgICAgfQpAQCAt
Mzk2LDEwICszOTYsMTAgQEAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFu
c2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCwKICAgICBjYXNlIENsaXBi
b2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6
QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVQYXN0ZToKLSAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0
aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwg
bWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3Vu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZh
bGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogfQogCiAvLyBSZXR1cm5zIHdo
ZXRoZXIgY2FsbGVyIHNob3VsZCBjb250aW51ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5n
Iiwgd2hpY2ggaXMgdGhlIHNhbWUgYXMKQEAgLTExODMsOSArMTE4Myw5IEBAIHZvaWQgRWRpdG9y
OjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQog
CiBFZGl0b3I6OkVkaXRvcihGcmFtZSYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAg
ICwgbV9raWxsUmluZyhzdGQ6Om1ha2VfdW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCi0gICAgLCBt
X3NwZWxsQ2hlY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQotICAg
ICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQorICAgICwgbV9raWxsUmluZyhtYWtlVW5pcXVlPFBB
TDo6S2lsbFJpbmc+KCkpCisgICAgLCBtX3NwZWxsQ2hlY2tlcihtYWtlVW5pcXVlPFNwZWxsQ2hl
Y2tlcj4oZnJhbWUpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKG1ha2VVbmlx
dWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQogICAgICwgbV9lZGl0b3JVSVVw
ZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjplZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpCiAjaWYg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAsIG1fdGVsZXBob25lTnVtYmVyRGV0ZWN0aW9uVXBkYXRlVGltZXIoKnRoaXMsICZF
ZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAwZGRjMTVi
ZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3NjQ1ZjU0Nzk0Li4yYzIwMjhjYzYzYzFiOTM4YmM2NmZm
NGJlYTU4OTkyNThlOWE0YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTYzMSw3ICsxNjMxLDcgQEAgdm9pZCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6dXBkYXRlTm9kZXNJbnNlcnRlZChOb2RlICpub2RlKQogUmVw
bGFjZW1lbnRGcmFnbWVudCogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2Vt
ZW50RnJhZ21lbnQoKQogewogICAgIGlmICghbV9yZXBsYWNlbWVudEZyYWdtZW50KQotICAgICAg
ICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VtZW50RnJh
Z21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOworICAg
ICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBtYWtlVW5pcXVlPFJlcGxhY2VtZW50RnJhZ21l
bnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIHJl
dHVybiBtX3JlcGxhY2VtZW50RnJhZ21lbnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAppbmRleCAzYjQwNjg4Y2I0ZGE2
NTZiMzQ0NTg3YzA4ODg2MzZjMGFiMTU2NmNmLi5mOWI2NGM1YzhjODk2YmYzMjI2MzA4NzA5ZjI2
YWE2NjdlMWVkOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
blJlY3RHYXRoZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25S
ZWN0R2F0aGVyZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZWxlY3Rp
b25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyPiBTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5k
CiAgICAgbV9nYXBSZWN0cy5jbGVhcigpOwogICAgIG1faXNUZXh0T25seSA9IHRydWU7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPE5vdGlmaWVyPigqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCAxODk2ZTFhMjI4MWMx
YTliMDQ2ZThlZmFjZDkxMTlhZjVlMjc3ZDU2Li5mMWQxOWMxMDExNGMxYTk4NWI4YjQyNmZhNjhm
ZGI4MTIyYTYwYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBA
IC02NTAsNyArNjUwLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAg
ICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9mZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3Ro
KCk7CiAgICAgICAgIGlmICghbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSB8fCAmbV9mbG93UnVuUmVz
b2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZibG9ja0Zsb3cpIHsKICAgICAgICAgICAgIG1fYWNjdW11
bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93ID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA/IDAg
OiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBtX2Zsb3dSdW5S
ZXNvbHZlckNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNv
bHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKKyAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVy
Q2FjaGUgPSBtYWtlVW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zs
b3csICpsYXlvdXQpOwogICAgICAgICB9CiAgICAgICAgIC8vIFNraXAgdG8gbV9vZmZzZXQgcG9z
aXRpb24uCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5yYW5n
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCAwYTgzYWMwOTU5Mjc0YzA3ODBkNWQ3YjM4NWYwMTljMGU4
NmUzYzc0Li45Y2Y4NmE0YTE1ZjFjN2M2ZjAyODE1NTY0N2FmYTAwNTlhZTNiNmZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0zODAsNyAr
MzgwLDcgQEAgSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcihjb25zdCBQb3NpdGlvbiYgc3Rh
cnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiAgICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9IGZhbHNl
OwogICAgIF9mbGFncy5yZWFjaGVkRW5kID0gZmFsc2U7CiAgICAgCi0gICAgX2NhY2hlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTENvbnZlcnRlckNhY2hlcz4oKTsKKyAgICBfY2FjaGVzID0gbWFr
ZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVzPigpOwogfQogCiBIVE1MQ29udmVydGVyOjp+SFRN
TENvbnZlcnRlcigpCkBAIC01NTEsNyArNTUxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBIVE1MQ29u
dmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KEVsZW1lbnQmIGUK
IAogICAgIGF1dG8gcmVzdWx0ID0gbV9jb21wdXRlZFN0eWxlcy5hZGQoJmVsZW1lbnQsIG51bGxw
dHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1l
bnQsIHRydWUpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxD
b21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxlbWVudCwgdHJ1ZSk7CiAgICAgQ29tcHV0ZWRTdHls
ZUV4dHJhY3RvciYgY29tcHV0ZWRTdHlsZSA9ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAg
IHJldHVybiBjb21wdXRlZFN0eWxlLnByb3BlcnR5VmFsdWUocHJvcGVydHlJZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5oCmluZGV4IDI1NzdkNWE3Njk2ODE2MjJmNWQwYTdiNjNmZjRkMDlkODhjOTVkYzEu
LjI5YzVhOGRhN2VlMzI1NTYxMjY1NjkwNTRlMzAyMjI4YTUzMDE4MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNfQ0xBU1MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cigpIHsgfQogICAgIC8vIFJldHVybnMgYSBjb250ZXh0IElELgpAQCAtNTIsNiArNTMsNyBAQCBj
bGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgewogICAgIHZvaWQgZGlzbWlzc0FsdGVy
bmF0aXZlcygpOwogCiAgICAgY2xhc3MgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlcigpIHsgfQogICAgICAgICB1aW50NjRfdCBh
ZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmYjQzNzE2MzAzYWUyNWI4MTkyOTJkMjcxY2Ey
Y2FlNjg0YjljMDJlLi5jM2M4ZjhiMzI0YmZlY2RjZTllNWM0ZWIxOWI1Yjc0NjA4OTI4YzNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpCiB7CiAgICAg
YXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50
cygpOwogICAgIAotICAgIGF1dG8gcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4o
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgIHBhZ2UtPnNldElzRm9yU2FuaXRpemlu
Z1dlYkNvbnRlbnQoKTsKICAgICBwYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxz
ZSk7CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCBhMDk1ZWVhZTliMmE3
OTdiZGFiYWUzNDk0MGZkYzZhM2NlMzA0MjRiLi5kNTgxMTJmZjliZGY2Y2Q3ZDE5ODU1MmQ4NjY5
OTFmODViN2ExYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwCkBAIC05NCwxMSArOTQsMTEgQEAgc3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChGdW5j
dGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1
ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZN
b3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1ZXVlLmdldCgpLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0
aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogfQogCiBBc3luY0ZpbGVTdHJlYW06
OkFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2ludGVy
bmFscyhzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFscz4oY2xpZW50KSkKKyAgICA6IG1faW50ZXJu
YWxzKG1ha2VVbmlxdWU8SW50ZXJuYWxzPihjbGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCA5YWQz
ZGE5ZWZmZjBmM2E3MDdhMDYwMWY3ODYwMWQ1ZDg2ODI1OGY1Li45OWE3YjVjNmY5ODdhMTRiYTE5
MDk0NTg5ODdhZTg0ZWNmYzRmMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5j
cHAKQEAgLTEzOSw3ICsxMzksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGaWxlUmVhZGVyOjpyZWFk
SW50ZXJuYWwoQmxvYiYgYmxvYiwgRmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cAogICAgIG1fc3Rh
dGUgPSBMT0FESU5HOwogICAgIG1fZXJyb3IgPSBudWxscHRyOwogCi0gICAgbV9sb2FkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0
PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0aGlzKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5p
cXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJM
b2FkZXJDbGllbnQqPih0aGlzKSk7CiAgICAgbV9sb2FkZXItPnNldEVuY29kaW5nKG1fZW5jb2Rp
bmcpOwogICAgIG1fbG9hZGVyLT5zZXREYXRhVHlwZShtX2Jsb2ItPnR5cGUoKSk7CiAgICAgbV9s
b2FkZXItPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDZhZTU1MmNiY2VmYmEzNWFmNTQ5NGFkODBh
MTQ3MzFkMDBhY2EzZDEuLjVjOGYxOGUzZGFiMGViMjU5N2FkNWU4MjIxMzliZDg4ZmYzMjRlMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0xNjMsNyArMTYzLDcg
QEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFtZSkKIAogICAgIC8vIENyZWF0
ZSB0aGUgQ2FjaGVkRnJhbWVzIGZvciBhbGwgRnJhbWVzIGluIHRoZSBGcmFtZVRyZWUuCiAgICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG1fY2hpbGRGcmFtZXMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkRnJhbWU+KCpjaGlsZCkpOworICAgICAgICBt
X2NoaWxkRnJhbWVzLmFwcGVuZChtYWtlVW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKIAog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpKTsKICAgICBSRUxFQVNF
X0FTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBDYWNoZWRG
cmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUmIGZyYW1lKQogICAgIC8vIEFjdGl2ZSBET00gb2JqZWN0
cyBtdXN0IGJlIHN1c3BlbmRlZCBiZWZvcmUgd2UgY2FjaGUgdGhlIGZyYW1lIHNjcmlwdCBkYXRh
LgogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hl
KTsKIAotICAgIG1fY2FjaGVkRnJhbWVTY3JpcHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3Jp
cHRDYWNoZWRGcmFtZURhdGE+KGZyYW1lKTsKKyAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9
IG1ha2VVbmlxdWU8U2NyaXB0Q2FjaGVkRnJhbWVEYXRhPihmcmFtZSk7CiAKICAgICBtX2RvY3Vt
ZW50LT5kb21XaW5kb3coKS0+c3VzcGVuZEZvclBhZ2VDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRQYWdlLmNwcAppbmRleCAwNjg2YWU4ZmVjZTQ0ZjFlZjY5MGU1ZjhmNmFiZTg0
NjE0NjNkZjdkLi45NzQ3YTQwNDAxNmFjODY4ZDJmNzc5NmU1MzMwNDM2ZmZhNTg3NDlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgREVGSU5F
X0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRQYWdl
Q291bnRlciwgKCJDYWNoZWQKIENhY2hlZFBhZ2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSkKICAg
ICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9leHBpcmF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpu
b3coKSArIFNlY29uZHMocGFnZS5zZXR0aW5ncygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9u
SW50ZXJ2YWwoKSkpCi0gICAgLCBtX2NhY2hlZE1haW5GcmFtZShzdGQ6Om1ha2VfdW5pcXVlPENh
Y2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgpKSkKKyAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKG1h
a2VVbmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2UubWFpbkZyYW1lKCkpKQogewogI2lmbmRlZiBOREVC
VUcKICAgICBjYWNoZWRQYWdlQ291bnRlci5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAppbmRleCAwMDI5NjU1ODkyZDE1NGNiNTA0M2UxZGEyMjgyNTg3OWY2M2Vk
ZGU1Li4zYmEyNGI5ZGUyZTk5NDE5NmEwZGY5MmZjMzY2M2NlZWE1YmY0Yjk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBAIC00NzgsNyArNDc4LDcgQEAgYm9vbCBQYWdlQ2Fj
aGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAg
ICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUu
CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2Fs
bG93ZWRTY29wZTsKIAotICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOworICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VV
bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9
IFBydW5pbmdSZWFzb246Ok5vbmU7CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAppbmRleCA3YTk5MWYxN2IwM2Q4M2U5
MDVmN2QzZTA2MDdiZjUyYTk5YjgwZTQ1Li5iMTRkMzEwMTU4YjY0NWZlODY5OWY3Zjk5ZjQxODU4
YmQ1NWFlMjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMzMiw3
ICszMzIsNyBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXRocykKICAgICAgICAgbV9maWxlSWNvbkxvYWRlci0+aW52YWxpZGF0ZSgpOwog
CiAgICAgRmlsZUljb25Mb2FkZXJDbGllbnQmIGNsaWVudCA9ICp0aGlzOwotICAgIG1fZmlsZUlj
b25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOworICAg
IG1fZmlsZUljb25Mb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOwog
CiAgICAgY2hyb21lLT5sb2FkSWNvbkZvckZpbGVzKHBhdGhzLCAqbV9maWxlSWNvbkxvYWRlcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5k
ZXggODA2ZTVmM2RhZWJlMjk0ZTMzMDIzMGRmYTVlZGU4YzkyZDU4YzMxOC4uMTdjMDI3Y2ZkZmEx
YmI0M2I2NDVlZTYyZDU4YzhhYzMyMDZkODc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRm9ybUFz
c29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQog
dm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyKCkKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihhc0hUTUxFbGVt
ZW50KCkuaXNDb25uZWN0ZWQoKSk7Ci0gICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxl
bWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7
CisgICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRF
bGVtZW50Ojpmb3JtQXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuY3BwCmluZGV4IGVhNWIwOWFhYTA4ZGIyNzM5NjFiOTUzNDIyZjAzZGQ3YWQ2
ZTQ2NzEuLmQwZTAzZjU2Y2IwNjNlMjdmMTEzNDBhMjcxM2Q0Zjk2MWI1YWU2NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNhdmVkRm9ybVN0YXRlPiBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29u
c3QgVmVjdG9yPFN0cmluZz4KICAgICBzaXplX3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5k
ZXgrK10udG9VSW50KCk7CiAgICAgaWYgKCFpdGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9y
bVN0YXRlPigpOworICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9y
bVN0YXRlPigpOwogICAgIHdoaWxlIChpdGVtQ291bnQtLSkgewogICAgICAgICBpZiAoaW5kZXgg
KyAxID49IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMzY1LDEzICszNjUsMTMgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQog
c3RkOjp1bmlxdWVfcHRyPEZvcm1Db250cm9sbGVyOjpTYXZlZEZvcm1TdGF0ZU1hcD4gRm9ybUNv
bnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKGNvbnN0IEZvcm1FbGVtZW50TGlzdEhh
c2hTZXQmIGNvbnRyb2xMaXN0KQogewogICAgIEZvcm1LZXlHZW5lcmF0b3Iga2V5R2VuZXJhdG9y
OwotICAgIGF1dG8gc3RhdGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFw
PigpOworICAgIGF1dG8gc3RhdGVNYXAgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigp
OwogICAgIGZvciAoYXV0byYgY29udHJvbCA6IGNvbnRyb2xMaXN0KSB7CiAgICAgICAgIGlmICgh
Y29udHJvbC0+c2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgYXV0byYgZm9ybVN0YXRlID0gc3RhdGVNYXAtPmFkZChr
ZXlHZW5lcmF0b3IuZm9ybUtleSgqY29udHJvbCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgICAgIGlmICghZm9ybVN0YXRlKQotICAgICAgICAgICAgZm9ybVN0YXRlID0g
c3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKKyAgICAgICAgICAgIGZvcm1TdGF0
ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CiAgICAgICAgIGZvcm1TdGF0ZS0+YXBw
ZW5kQ29udHJvbFN0YXRlKGNvbnRyb2wtPm5hbWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9s
LT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFwOwpA
QCAtNDAzLDcgKzQwMyw3IEBAIEZvcm1Db250cm9sU3RhdGUgRm9ybUNvbnRyb2xsZXI6OnRha2VT
dGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsCiAgICAgaWYgKG1fc2F2
ZWRGb3JtU3RhdGVNYXAuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0
ZSgpOwogICAgIGlmICghbV9mb3JtS2V5R2VuZXJhdG9yKQotICAgICAgICBtX2Zvcm1LZXlHZW5l
cmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1LZXlHZW5lcmF0b3I+KCk7CisgICAgICAgIG1f
Zm9ybUtleUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKICAgICBT
YXZlZEZvcm1TdGF0ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQo
bV9mb3JtS2V5R2VuZXJhdG9yLT5mb3JtS2V5KGNvbnRyb2wpLmltcGwoKSk7CiAgICAgaWYgKGl0
ID09IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJv
bFN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4
IDEwNDdjNThlZWMzNTM2ZTNkMzk5M2E3YjZlNTg2MjViMDE1OTUyZjEuLmViOWJkMDY4NWQ1OTJl
YTY5MjMxM2FkNDE2YzI3ZDdmMjgyNjFmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVu
dDo6aGFzUmVsKFJlbGF0aW9uIHJlbGF0aW9uKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MQW5j
aG9yRWxlbWVudDo6cmVsTGlzdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIHsKLSAg
ICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nh
c3Q8SFRNTEFuY2hvckVsZW1lbnQmPigqdGhpcyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9j
dW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlx
dWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBI
VE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogI2lm
IFVTRShTWVNURU1fUFJFVklFVykKICAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKHRva2VuLCAibm9yZWZlcnJlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9r
ZW4sICJub29wZW5lciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJhciIpOwog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCBhYzA3NThk
ZTgzYjA0ODgyYTVkODkyMmZkNDA1NTQ4ZWY5NTZkY2EyLi40OWFiZmE1ZjcwYTdhYjk3ZDczZTJj
ODJiNzY3YjA1MzUxYWRlZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
Y3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgSFRNTEFyZWFFbGVtZW50OjppbnZhbGlkYXRlQ2Fj
aGVkUmVnaW9uKCkKIGJvb2wgSFRNTEFyZWFFbGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBv
aW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBzaXplLCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQpCiB7CiAgICAgaWYgKG1fbGFzdFNpemUgIT0gc2l6ZSkgewotICAgICAgICBtX3JlZ2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4oZ2V0UmVnaW9uKHNpemUpKTsKKyAgICAgICAgbV9yZWdp
b24gPSBtYWtlVW5pcXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7CiAgICAgICAgIG1fbGFzdFNp
emUgPSBzaXplOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcAppbmRleCBhOWJiNGZiOGUwNjNlNzAxNWYxYTY0ZTdkODZmZWIzNThmZmMyN2NkLi44OTRl
NjM5OGI4YTRlY2RkZWRmOWUxOTg4YTQxNGMxNzFiMjg2OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4m
JiBidWZmZXIpIGNvCiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKHRydWUpOwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KGRlZmF1bHRJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAg
bV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2Nv
bnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIg
PSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNv
bnRleHQoKSk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKEhUTUxFbGVtZW50OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIEhUTUxFbGVtZW50OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtZW1v
cnlDb3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA5NzZj
OGUwYTlhMDZhOWI4M2Q2Y2E5NDFiZDVkZDM3YjlmMzM4NWM1Li4zMjgxNzZiNjllOGNkMWJmMjJk
NGU3NjMyN2U5ZjI5Mjk2OGFiNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVk
RWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVj
dGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBsZW5n
dGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggZjE1Nzg3NGU2ZDUzNGUz
ZjYxMzRlNGE1ZGY0ZjUxYmUyZjY3YTMxYS4uNjBkZDFmYjI1MjAzODYwZDNkOTJhN2E1YWNiMzMx
YzJhYjA0YjU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNw
cApAQCAtODgsNyArODgsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBEZXRhaWxzU2xvdEFzc2lnbm1l
bnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5vZGUmIGNoaWxkKQogUmVmPEhUTUxEZXRh
aWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGF1dG8gZGV0YWlscyA9IGFk
b3B0UmVmKCpuZXcgSFRNTERldGFpbHNFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAg
ZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6
bWFrZV91bmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7CisgICAgZGV0YWlscy0+YWRk
U2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8RGV0YWls
c1Nsb3RBc3NpZ25tZW50PigpKSk7CiAgICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ4ODkzYjFm
MDk0OWVmMTAyZTI5ZDAzYzU4OTY3YzRkZDRmM2ZkNWEuLmUxNTMxNmExOWVlZmI0NzdlM2YzNjdj
ODBmN2MzYzFhMmE2MzRiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcApAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCkKICAgICBpZiAocmVuZGVy
ZXIoKSAmJiB3aWxsVmFsaWRhdGUoKSkKICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNz
YWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgaWYgKCFtX3ZhbGlkYXRpb25NZXNzYWdlKQot
ICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxWYWxpZGF0aW9u
TWVzc2FnZT4odGhpcyk7CisgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBtYWtlVW5pcXVl
PFZhbGlkYXRpb25NZXNzYWdlPih0aGlzKTsKICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT51cGRh
dGVWYWxpZGF0aW9uTWVzc2FnZShtZXNzYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCA2ZWMyMmQ3NzQ5ZjJm
NzhiZDMxZWY3N2VhNjM2MDczYjcxYzU5ZmYyLi5hMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZl
Njg5YzNiMWM2OGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAo
aGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNo
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAg
IGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsK
IAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZ0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCBjNzZkNDkzYTYyY2VkODMw
ODgwMWI2YjAxZDMzMjFlMGEzMzNmNTFkLi40MzVkOTUxNGRkMjlkZGQxZjZkZmIxZDE2OWUzNDdl
MzE1YTMwMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03
OTEsNyArNzkxLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKEZv
cm1OYW1lZEl0ZW0qIGl0ZW0sIGNvbnN0IEF0b21TdHJpbmcmIHAKICAgICBpZiAocGFzdE5hbWUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX3Bhc3ROYW1lc01hcCkKLSAg
ICAgICAgbV9wYXN0TmFtZXNNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhc3ROYW1lc01hcD4oKTsK
KyAgICAgICAgbV9wYXN0TmFtZXNNYXAgPSBtYWtlVW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKICAg
ICBtX3Bhc3ROYW1lc01hcC0+c2V0KHBhc3ROYW1lLmltcGwoKSwgaXRlbSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggMDJkN2Q0ZTRmYmU4NmY1
MjcwZjU4NGI2YThkZWI5YmU0NmY5N2FhOS4uYjFjODIxZGQ5YmFiYTJhMjBjYjI5ZTFjMWNmZDkw
ZDcxZmVjNThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxJRnJhbWVFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIEQKIERPTVRva2VuTGlzdCYg
SFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3goKQogewogICAgIGlmICghbV9zYW5kYm94KSB7Ci0g
ICAgICAgIG1fc2FuZGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywg
c2FuZGJveEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBt
X3NhbmRib3ggPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBb
XShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiBTZWN1
cml0eUNvbnRleHQ6OmlzU3VwcG9ydGVkU2FuZGJveFBvbGljeSh0b2tlbik7CiAgICAgICAgIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBj
MjVjZGQ4MGQ1ZjhhNzcwYTFkOTcwMDU3ODQ3YTg5YzU2ODNkYmQuLjM3NmM1MjE5NjRlMGY3MWI2
ZmQ5YzIxNzJkNjIwMWMyOTI1N2ExYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBI
VE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKIHsK
ICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlTG9hZGVy
ID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1h
Z2VMb2FkZXI7CiB9CiAKQEAgLTE2NDEsNyArMTY0MSw3IEBAIFJlZlB0cjxIVE1MRGF0YUxpc3RF
bGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpkYXRhTGlzdCgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBpZiAo
aXNDb25uZWN0ZWQoKSkKLSAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0ciksIHRoaXMpOworICAgICAgICBtX2xpc3RBdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1ha2VVbmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyPihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CiAg
ICAgZWxzZQogICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjg2MzRjYWRh
ZmExOGEwYTI3Y2NmNzI4ZjliYmY1NmNiN2Y3OGQxNi4uZjZhN2JjODAyNGZmYTVlNGJkNzFmNjlh
MjdjOTdjOGM5MzZiYjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cApAQCAtNDgxLDcgKzQ4MSw3IEBAIGJvb2wgSFRNTExpbmtFbGVtZW50OjpzdHlsZVNoZWV0SXNM
b2FkaW5nKCkgY29uc3QKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpzaXplcygpCiB7
CiAgICAgaWYgKCFtX3NpemVzKQotICAgICAgICBtX3NpemVzID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXplc0F0dHIpOworICAgICAgICBtX3NpemVzID0gbWFrZVVu
aXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXplc0F0dHIpOwogICAgIHJldHVybiAqbV9zaXpl
czsKIH0KIApAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRj
aFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQogRE9NVG9rZW5MaXN0
JiBIVE1MTGlua0VsZW1lbnQ6OnJlbExpc3QoKQogewogICAgIGlmICghbV9yZWxMaXN0KSAKLSAg
ICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBI
VE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tl
bikgeworICAgICAgICBtX3JlbExpc3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMs
IEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRv
a2VuKSB7CiAgICAgICAgICAgICByZXR1cm4gTGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQo
ZG9jdW1lbnQsIHRva2VuKTsKICAgICAgICAgfSk7CiAgICAgcmV0dXJuICptX3JlbExpc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBmNzQwY2NhYzI0MmU5
ZTBmM2JjOGRkYzk1NzVmYjMyYTRlZjE5OGFmLi5mM2FjZmNkZTAwMDdhMjRmMjc1YTRjOTU0ZDUy
NTEyMDgzNzgyOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTQ4MSw3ICs0ODEsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKCkKIHsKLSAgICBtX21lZGlhU2Vzc2lv
biA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOworICAgIG1f
bWVkaWFTZXNzaW9uID0gbWFrZVVuaXF1ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CiAK
ICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuKTsKICAgICBtX21lZGlhU2Vz
c2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJl
UGFnZUNvbnNlbnRUb0xvYWRNZWRpYSk7CkBAIC0zMDI3LDcgKzMwMjcsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBj
b25zdCBNZWRpYVRpbQogCiAgICAgLy8gNSAtIElmIHRoZSBzZWVrIHdhcyBpbiByZXNwb25zZSB0
byBhIERPTSBtZXRob2QgY2FsbCBvciBzZXR0aW5nIG9mIGFuIElETCBhdHRyaWJ1dGUsIHRoZW4g
Y29udGludWUKICAgICAvLyB0aGUgc2NyaXB0LiBUaGUgcmVtYWluZGVyIG9mIHRoZXNlIHN0ZXBz
IG11c3QgYmUgcnVuIGFzeW5jaHJvbm91c2x5LgotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3Np
dGl2ZVRvbGVyYW5jZSk7CisgICAgbV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1Nl
ZWs+KG5vdywgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAg
ICBpZiAoZnJvbURPTSkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1
aW5nIHNlZWsgZnJvbSAiLCBub3csICIgdG8gIiwgdGltZSk7CiAgICAgICAgIG1fc2Vla1Rhc2tR
dWV1ZS5zY2hlZHVsZVRhc2soc3RkOjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywg
dGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMGJhYjlm
YzlkNmVkYTFjMWJjMmE2MDk2ODNmMjc2ZmU3NjAzY2Y4Li5mMjRlODc2YTEzYjYxNTU5ZTJjOTk1
YmJhNGE1ZTQ1MjM0OTcwMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aApAQCAtOTkwLDYgKzk5MCw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICBSZWZQdHI8
TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAogICAgIHN0cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29u
c3QgTWVkaWFUaW1lJiBub3csIGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVk
aWFUaW1lJiBuZWdhdGl2ZVRvbGVyYW5jZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVy
YW5jZSkKICAgICAgICAgICAgIDogbm93KG5vdykKICAgICAgICAgICAgICwgdGFyZ2V0VGltZSh0
YXJnZXRUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRl
eCBkZDRmYTJkNzBlNGY0M2Y0MmI4MjIyZDM3ZDQ0MThmMWExMzFlZDg3Li41NmI3MjA2YWUzYmU4
ZjEwYTg4MTRhZTlhZmFjNjJiZmViNTYwOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1l
bnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogRE9NVG9rZW5MaXN0JiBI
VE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcigpCiB7CiAgICAgaWYgKCFtX3Rva2VucykKLSAgICAg
ICAgbV90b2tlbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0
dHIpOworICAgICAgICBtX3Rva2VucyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywg
Zm9yQXR0cik7CiAgICAgcmV0dXJuICptX3Rva2VuczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggZGRhOTQ0OWQ1N2FkNDIwODU4
NjI3ZGVkM2ZkZDkxODEzMjE1ZmUyYi4uNWI5OWQ1NTU1MzA0OTcwOTNjNmJjYTk5NTg3YzdhMmY3
MjU1OTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1
cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbigpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgIXVzZUZh
bGxiYWNrQ29udGVudCgpKSB7CiAgICAgICAgIGlmIChpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAg
ICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAg
ICAgICAgICAgICBpZiAobV9uZWVkc0ltYWdlUmVsb2FkKQogICAgICAgICAgICAgICAgIG1faW1h
Z2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAg
ICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAK
aW5kZXggMTBiYzA5ZmYwOTljODg4YjIyNjI2OTM5MGI4ZTFmOGJlNGNlMzk2Ny4uYjA0OTM5Yjlj
MmQ3MjcwMjEzNzljNWE0ZGQzNDA0N2Q4MTJhZDk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBTdW1tYXJ5U2xv
dEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU2xvdEFzc2lnbm1lbnQgewogUmVmPEhUTUxTdW1tYXJ5
RWxlbWVudD4gSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIFJlZjxIVE1MU3VtbWFyeUVsZW1l
bnQ+IHN1bW1hcnkgPSBhZG9wdFJlZigqbmV3IEhUTUxTdW1tYXJ5RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwotICAgIHN1bW1hcnktPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRl
KGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOworICAg
IHN1bW1hcnktPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtl
VW5pcXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOwogICAgIHJldHVybiBzdW1tYXJ5OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBhNWU3NWFhZmY1
MmRkZjlmNTc1NDViYTA2N2VlYzc4OTg4OGRkOWFiLi42N2ZmMjEyNTJmMWI4ZTgzMTBhMWQ3Y2Ji
MjMyZWE4YzczOTM4YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5k
ZXJlcnMoKQogICAgIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwogICAgIGlmIChzaG91bGREaXNwbGF5
UG9zdGVySW1hZ2UoKSkgewogICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlz
KTsKKyAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRl
cj4oKnRoaXMpOwogICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwog
ICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgcmVuZGVyZXItPmltYWdlUmVzb3VyY2UoKS5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVy
LT5pbWFnZSgpKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgog
CiAgICAgICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAgICAgICAg
aWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1f
aW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAg
ICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJy
b3IoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNw
cAppbmRleCBkNWI5YmVkYmFkMDQ3MDQ2MWE1OGFiNWNiMDE0YTY4YzA0N2Q3ZmIwLi44NTQ1MWQx
NDM3MGUyNGNkN2Q0ZGQ1NjkwMTQ2MzczNWFkNjgzMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGQ6OnVuaXF1ZV9wdHI8UHVibGljVVJMTWFuYWdlcj4gUHVibGljVVJMTWFuYWdlcjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBwdWJs
aWNVUkxNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0
KTsKKyAgICBhdXRvIHB1YmxpY1VSTE1hbmFnZXIgPSBtYWtlVW5pcXVlPFB1YmxpY1VSTE1hbmFn
ZXI+KGNvbnRleHQpOwogICAgIHB1YmxpY1VSTE1hbmFnZXItPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcAppbmRleCA4YWY3M2E4YTAwNTQ5ODBhZDE3OTA2OTU2YTg0MzJhNmY5
Y2RiMTRiLi5mNWRhYjBmNDJmMmQwNTNlNzAzYzZjNTcyM2NhMTYwMzcxZDFhMmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcApAQCAtMTE1LDkgKzExNSw5IEBA
IHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwogICAgIG1fbWVzc2FnZSA9IG1lc3Nh
Z2U7CiAgICAgaWYgKCFtX2J1YmJsZSkKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7Cisg
ICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNz
YWdlOjpidWlsZEJ1YmJsZVRyZWUpOwogICAgIGVsc2UKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VE
T01BbmRTdGFydFRpbWVyKTsKKyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0
aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKICAg
ICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKIH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZv
aWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKCkKICAgICBp
ZiAobWFnbmlmaWNhdGlvbiA8PSAwKQogICAgICAgICBtX3RpbWVyID0gbnVsbHB0cjsKICAgICBl
bHNlIHsKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAm
VmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0g
bWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxl
VHJlZSk7CiAgICAgICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdChzdGQ6Om1heCg1X3MsIDFfbXMg
KiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9u
KSk7CiAgICAgfQogfQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6
OnJlcXVlc3RUb0hpZGVNZXNzYWdlKCkKICAgICB9CiAKICAgICAvLyBXZSBtdXN0IG5vdCBtb2Rp
ZnkgdGhlIERPTSB0cmVlIGluIHRoaXMgY29udGV4dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0
TWVzc2FnZSgpLgotICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywg
JlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKKyAgICBtX3RpbWVyID0gbWFr
ZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJl
ZSk7CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKaW5kZXggYjE2Nzc4NDQyOGMzYmZlOWU2ZjE2YTc3ODQwZDNmM2JiOTcwNWI5Ni4uNTNj
OWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRjY2M1NmMwMjhhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RydWN0IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQg
ewogCiAgICAgRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcCkKICAgICAgICAgOiBjb250ZXh0KFsm
XShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENv
bnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5
TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkp
OwogICAgICAgICB9KQogICAgIHsKICAgICB9CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBHcmFwaGlj
c0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdpbmdDb250ZXh0KCkg
Y29uc3QKIHsKICAgICBpZiAoVU5MSUtFTFkobV91c2VzRGlzcGxheUxpc3REcmF3aW5nKSkgewog
ICAgICAgICBpZiAoIW1fcmVjb3JkaW5nQ29udGV4dCkKLSAgICAgICAgICAgIG1fcmVjb3JkaW5n
Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3Jh
cGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFz
QmFzZSgpLnNpemUoKSkpOworICAgICAgICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAg
ICAgIHJldHVybiAmbV9yZWNvcmRpbmdDb250ZXh0LT5jb250ZXh0OwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCA2MzExOTE3NTcwZjJkYjI4NTk0Y2JiMzQ5MDI0Njk5N2I1ODNmYmUwLi5jZDQ3MjEy
NjFiMmUwMjJiNTUyNWRkM2QzY2E1NDY5ZjljMGIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTM1OSw3
ICsxMzU5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQo
dHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZh
cmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1h
a2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxl
ID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAg
ICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBc
CiAgICAgICAgIH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZTA2YmY5OWQ1OTE1OTYzOTgwYTYxMWMzMmE4Mzll
Mjk3ZjEyODA0NS4uZTVmZGU3MDMzNzQ1NmEzMWUxNTcxZWUxMGYzZmQyNjQyZGIwMzZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxF
X0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAog
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAg
ICAgICAgIGlmICghdmFyaWFibGUpIHsgXAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5h
YmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAg
ICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDog
bnVsbHB0cjsgXAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigq
dGhpcywgbmFtZSk7IFwKICAgICAgICAgfSBcCkBAIC0xMzIsNyArMTMyLDcgQEAgV2ViR0xFeHRl
bnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBudWxscHRyOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAg
ICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRT
aGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0
dXJlTE9EID0gbWFrZVVuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRo
aXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTksNyArMTU5LDcgQEAg
V2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBudWxs
cHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAg
ICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERy
YXdCdWZmZXJzPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0g
bWFrZVVuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzEsNyArMTcxLDcgQEAgV2ViR0xFeHRlbnNp
b24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwotICAgICAg
ICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xF
SW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNl
ZEFycmF5cyA9IG1ha2VVbmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigq
dGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggM2VjZTdlZWI3NDJmYWRiNmZlMThiMzNlYjVhNjEzOWNlZDQxYmE1Ni4uZDE2NmZiMjM5MDc2
ZDM2MjY1ZDk2YzY0NWYwNzE4NzVhYzgyYmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc5OSw4
ICs3OTksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdD
b250ZXh0KCkKICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIGNhbnZhc1NpemUud2lkdGgo
KSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CiAgICAgbV9jb250ZXh0LT5zY2lzc29yKDAsIDAsIGNh
bnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQt
PnNldENvbnRleHRMb3N0Q2FsbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0Nv
bnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsKLSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2Fn
ZUNhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNz
YWdlQ2FsbGJhY2s+KHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJh
Y2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsK
KyAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KHRoaXMpKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKCkKQEAgLTE1NzksNyArMTU3OSw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNo
YWRlciogc2hhZGVyKQogICAgICAgICBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0
YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6
Y3VycmVudFN0YXRlKCkpOwogCiAgICAgICAgIGZvciAoYXV0byYgZXJyb3IgOiBnZXRTaGFkZXJJ
bmZvTG9nKHNoYWRlcikuc3BsaXQoJ1xuJykpCi0gICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkp
OworICAgICAgICAgICAgY2FudmFzLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJv
ciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsKICAgICB9CiB9CiAKQEAgLTU4MDgsOSArNTgwOCw5
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmCiAgICAgLy8gRXJyb3IgbWVzc2FnZXMgY2FuIG9j
Y3VyIGR1cmluZyBmdW5jdGlvbiBjYWxscywgc28gc2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZW0u
CiAgICAgaWYgKGxldmVsID09IE1lc3NhZ2VMZXZlbDo6RXJyb3IpIHsKICAgICAgICAgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVT
Y3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpKTsKLSAgICAgICAgY29u
c29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3Nh
Z2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3Nh
Z2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRl
cmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UpOwogCiAgICAgYXV0byogY2Fu
dmFzID0gaHRtbENhbnZhcygpOwogICAgIGlmIChjYW52YXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggZTg1OTBjY2M2OTcyOGFm
MzkzMDFkM2FlOGQ4OTg4ZjVjMTVhNGIyYS4uYWVmZTQ1N2Y0ZWZmMDQzNjU3NjNjYjI2ZjcxNzg0
NjNlMzJlMWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJl
bG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxv
YWRTY2FubmVyLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6
OmVtaXRSdWxlKCkKICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBV
UkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJv
bSB0aGUgSFRNTFByZWxvYWRTY2FubmVyIHZpYSBzY2FuKCk6IHdpdGhvdXQgaXQgd2Ugd2lsbCBn
ZXQgcmVsYXRpdmUgVVJMcyB3cm9uZy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJzZXQgaW4gdGhlIHByZWxvYWQgcmVxdWVzdD8KLSAgICAg
ICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0
PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVudFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0
eWxlU2hlZXQsIFN0cmluZygpLCBQcmVsb2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVm
ZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSk7CisgICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBl
bmQobWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkws
IENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJl
cXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwog
ICAgICAgICB9CiAgICAgICAgIG1fc3RhdGUgPSBJbml0aWFsOwogICAgIH0gZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocnVsZSwgImNoYXJzZXQiKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA1
MWJhZTRjMjFjZjk0MGRjZDhjNmQzMjBiYzRkYmQ2NjI2YmU3ZDlmLi45YWM0NDRlZjBhNjcxZjhh
NDc2OTk1N2FlMzIyMmJkOGQxMDA3ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPiBIVE1MQ29uc3RydWN0
aW9uU2l0ZTo6aW5zZXJ0SFRNTEUKICAgICBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGVsZW1l
bnRJbnRlcmZhY2UgPSBudWxscHRyOwogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3Jl
YXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKHRva2VuLCAmZWxlbWVu
dEludGVyZmFjZSk7CiAgICAgaWYgKFVOTElLRUxZKGVsZW1lbnRJbnRlcmZhY2UpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4o
KmVsZW1lbnRJbnRlcmZhY2UsIHRva2VuLm5hbWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVz
KCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlv
bkRhdGE+KCplbGVtZW50SW50ZXJmYWNlLCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0
cmlidXRlcygpKSk7CiAgICAgYXR0YWNoTGF0ZXIoY3VycmVudE5vZGUoKSwgKmVsZW1lbnQpOwog
ICAgIG1fb3BlbkVsZW1lbnRzLnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZSh0b2tlbikpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmlu
ZGV4IDRmZjRlMmI4Nzg4YTkxOWJmNDJkMTdhZDlmZDY1MWI5YjAzYWQxOWIuLmRkOWVhMDRjNmY1
MDBjODY0YjhjOTRjMTkzODM3ODc3YWZmZGU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEhU
TUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX29w
dGlvbnMoZG9jdW1lbnQpCiAgICAgLCBtX3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3Nj
cmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBz
dGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVubmVySG9zdCY+KCp0aGlzKSkpCi0gICAgLCBtX3RyZWVC
dWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQs
IHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKLSAgICAsIG1fcGFyc2VyU2NoZWR1
bGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQorICAgICwg
bV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3Rh
dGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhvc3QmPigqdGhpcykpKQorICAgICwgbV90cmVlQnVp
bGRlcihtYWtlVW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJD
b250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCisgICAgLCBtX3BhcnNlclNjaGVkdWxlcihtYWtl
VW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+KCp0aGlzKSkKICAgICAsIG1feHNzQXVkaXRvckRl
bGVnYXRlKGRvY3VtZW50KQotICAgICwgbV9wcmVsb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1M
UmVzb3VyY2VQcmVsb2FkZXI+KGRvY3VtZW50KSkKKyAgICAsIG1fcHJlbG9hZGVyKG1ha2VVbmlx
dWU8SFRNTFJlc291cmNlUHJlbG9hZGVyPihkb2N1bWVudCkpCiB7CiB9CiAKQEAgLTcwLDcgKzcw
LDcgQEAgaW5saW5lIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3Vt
ZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW4KICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlcihmcmFnbWVudC5kb2N1bWVudCgpLCByYXdQb2xpY3kpCiAgICAgLCBtX29wdGlvbnMoZnJh
Z21lbnQuZG9jdW1lbnQoKSkKICAgICAsIG1fdG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1f
dHJlZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFn
bWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkK
KyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBm
cmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25z
KSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGZyYWdtZW50LmRvY3VtZW50KCkpCiB7CiAg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwj
cGFyc2luZy1odG1sLWZyYWdtZW50cwpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChp
c1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKICAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLmlzSW5E
YXRhU3RhdGUoKSk7CiAgICAgICAgIGlmICghbV9wcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAg
ICAgbV9wcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVy
PihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKKyAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQ
cmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBl
bmRUb0VuZChtX2lucHV0LmN1cnJlbnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9wcmVsb2Fk
U2Nhbm5lci0+c2NhbigqbV9wcmVsb2FkZXIsICpkb2N1bWVudCgpKTsKQEAgLTM3NCw3ICszNzQs
NyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmIHNv
dXJjZSkKICAgICAgICAgLy8gQ2hlY2sgdGhlIGRvY3VtZW50LndyaXRlKCkgb3V0cHV0IHdpdGgg
YSBzZXBhcmF0ZSBwcmVsb2FkIHNjYW5uZXIgYXMKICAgICAgICAgLy8gdGhlIG1haW4gc2Nhbm5l
ciBjYW4ndCBkZWFsIHdpdGggaW5zZXJ0aW9ucy4KICAgICAgICAgaWYgKCFtX2luc2VydGlvblBy
ZWxvYWRTY2FubmVyKQotICAgICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCkt
PnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1f
aW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4o
bV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CiAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKHNv
dXJjZSk7CiAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9h
ZGVyLCAqZG9jdW1lbnQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCAzMGM1YjQ2ZGYxMDNkYmRmNmY0YjdjZTQwOWNj
M2FhMTZjNTQ2MDEyLi42ZWYxNzEyYjlkNjNiNzFhY2I3YzE2OWY2MmI0OWM4MmYzMTA1ODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApA
QCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUoUmVm
PEhUTUxTdGFja0l0ZW0+JiYgaXRlbSwgRWxlbWVudFJlY29yZCYgcmVjCiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICArK21fc3RhY2tEZXB0aDsKLSAgICAgICAgcmVjb3JkQWJvdmUt
PnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBy
ZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkpOworICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4
dChtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5y
ZWxlYXNlTmV4dCgpKSk7CiAgICAgICAgIHJlY29yZEFib3ZlLT5uZXh0KCktPmVsZW1lbnQoKS5i
ZWdpblBhcnNpbmdDaGlsZHJlbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcg
KzUzMyw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaENvbW1vbihSZWY8SFRNTFN0YWNr
SXRlbT4mJiBpdGVtKQogICAgIEFTU0VSVChtX3Jvb3ROb2RlKTsKIAogICAgICsrbV9zdGFja0Rl
cHRoOwotICAgIG1fdG9wID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3Zl
KGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CisgICAgbV90b3AgPSBtYWtlVW5pcXVlPEVsZW1lbnRS
ZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdURk1vdmUobV90b3ApKTsKIH0KIAogdm9pZCBIVE1MRWxl
bWVudFN0YWNrOjpwb3BDb21tb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggNTNhMTcyZDMzYWZjZGE4ZmY4OGQzNDRkOWMw
ZWYwOTAzY2RlY2M5Mi4uMzNkN2IzYmIwOGI2NTJkMGNkNjliY2VkZjFmODYwNjMxYWZhYTE0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRU
YWdTY2FubmVyIHsKICAgICAgICAgaWYgKCFMaW5rTG9hZGVyOjppc1N1cHBvcnRlZFR5cGUodHlw
ZS52YWx1ZSgpLCBtX3R5cGVBdHRyaWJ1dGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICAgICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVz
dD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwg
dHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0cmlidXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJl
clBvbGljeSk7CisgICAgICAgIGF1dG8gcmVxdWVzdCA9IG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVl
c3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkws
IHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJy
ZXJQb2xpY3kpOwogICAgICAgICByZXF1ZXN0LT5zZXRDcm9zc09yaWdpbk1vZGUobV9jcm9zc09y
aWdpbk1vZGUpOwogICAgICAgICByZXF1ZXN0LT5zZXROb25jZShtX25vbmNlQXR0cmlidXRlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCBmNzFiMjFkMjc4OTVl
NTc4YWI0N2Y1Y2Y1NDAyNTgzZTM2MTIxZDAyLi4zZjc0NmRjNmQ2NjdjNDM3MTFiNjhkMDliNDIw
MmQyM2ZmMGMwODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAt
MjA5LDcgKzIwOSw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKCkKIHsK
ICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IERPQ1RZ
UEU7Ci0gICAgbV9kb2N0eXBlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdHlwZURhdGE+KCk7
CisgICAgbV9kb2N0eXBlRGF0YSA9IG1ha2VVbmlxdWU8RG9jdHlwZURhdGE+KCk7CiB9CiAKIGlu
bGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggYWM2ZTc5NDQzMDA3MDM2
NDIxZWIxNmRmODNhOTBkM2QyNzcyZjg1Ni4uMDYxZDk1NjdiNzg0ZDliMGJhY2YzZjZkYjljZGU1
YTgwNmIwMWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAK
QEAgLTM3Niw3ICszNzYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8WFNTSW5mbz4gWFNTQXVkaXRvcjo6
ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlID0gbV94c3NQcm90ZWN0
aW9uID09IFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbjo6QmxvY2tFbmFibGVkOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFhTU0luZm8+KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJl
UGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQcm90ZWN0aW9uSGVhZGVyKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlk
U2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6Zmls
dGVyU3RhcnRUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC03MTIs
NyArNzEyLDcgQEAgU3VmZml4VHJlZTxBU0NJSUNvZGVib29rPiogWFNTQXVkaXRvcjo6ZGVjb2Rl
ZEhUVFBCb2R5U3VmZml4VHJlZSgpCiAgICAgY29uc3QgdW5zaWduZWQgc3VmZml4VHJlZURlcHRo
ID0gNTsKIAogICAgIGlmICghbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlICYmIG1fZGVjb2Rl
ZEhUVFBCb2R5Lmxlbmd0aCgpID49IG1pbmltdW1MZW5ndGhGb3JTdWZmaXhUcmVlKQotICAgICAg
ICBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZmZpeFRy
ZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwor
ICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUgPSBtYWtlVW5pcXVlPFN1ZmZpeFRy
ZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwog
ICAgIHJldHVybiBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUuZ2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwCmluZGV4IDNhNjM3ZGFlZjAxMjRlMmU0ZWQzMzZiNjYzNzUyZDAwMjJiNWJlMDEuLmQ1
NjZiY2M3OTRhYTcyNGFiZTYwYTA4MGEzZjJjZjk1MWY0NTM3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApA
QCAtMTc0LDcgKzE3NCw3IEBAIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRy
b2xJbm5lclRleHRFbGVtZW50OjpyZW5kZXJlcigpIGNvbnN0CiBPcHRpb25hbDxFbGVtZW50U3R5
bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAg
ICBhdXRvIHN0eWxlID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFk
b3dIb3N0KCkpLmNyZWF0ZUlubmVyVGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOwotICAgIHJl
dHVybiBFbGVtZW50U3R5bGUoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShz
dHlsZSkpKTsKKyAgICByZXR1cm4gRWxlbWVudFN0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+
KFdURk1vdmUoc3R5bGUpKSk7CiB9CiAKIC8vIE1BUks6IFRleHRDb250cm9sUGxhY2Vob2xkZXJF
bGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVy
aWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmlj
VGV4dFRyYWNrLmNwcAppbmRleCBlNDAyMDBhOWE3YTIyNWRkZmQ4NzQ0ZDhjOTNiZGU2OTA5NjQ3
MDA5Li40OTM0ZDcyOWMxOThkMDgwNTlhYzhjOWYwYjE3NGE5NWU3NmY3MmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAK
QEAgLTE3NCw3ICsxNzQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbmJhbmRHZW5lcmljVGV4dFRy
YWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJiBjdWUpCiBXZWJWVFRQYXJzZXImIEluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OnBhcnNlcigpCiB7CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAg
ICAgICAgbV93ZWJWVFRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3Rh
dGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgICAgIG1fd2ViVlRUUGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+
KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIHJldHVybiAqbV93ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCA4
NTViYjIzOTI3ZWIxMGEzNWE1OWQxMmJlMGQyMzVhNzNjYWJjMTBlLi4xMGZhYTEyZjkwYjQ2MGI1
MDU2ZjI1NjdjYzJkOTgxMjdkOGZhYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluYmFu
ZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdlYlZUVFRleHRUcmFjaygpID0gZGVmYXVsdDsKIFdl
YlZUVFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICgh
bV93ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VV
bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlz
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2Vy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4
dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2su
Y3BwCmluZGV4IDhmMjljN2YxNjc5YTBmYTI5MThkZWNmYTUxM2UyZDgwMjcxYTM1ZTIuLjdhMWUx
YmM0NjkxYjIxMTY4OGMzY2Y1ZGE2MTlhYzYxZGJkNmZlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKCkKICAgICAvLyA0LiBEb3dubG9h
ZDogSWYgVVJMIGlzIG5vdCB0aGUgZW1wdHkgc3RyaW5nLCBwZXJmb3JtIGEgcG90ZW50aWFsbHkg
Q09SUy1lbmFibGVkIGZldGNoIG9mIFVSTCwgd2l0aCB0aGUKICAgICAvLyBtb2RlIGJlaW5nIHRo
ZSBzdGF0ZSBvZiB0aGUgbWVkaWEgZWxlbWVudCdzIGNyb3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmli
dXRlLCB0aGUgb3JpZ2luIGJlaW5nIHRoZQogICAgIC8vIG9yaWdpbiBvZiB0aGUgbWVkaWEgZWxl
bWVudCdzIERvY3VtZW50LCBhbmQgdGhlIGRlZmF1bHQgb3JpZ2luIGJlaGF2aW91ciBzZXQgdG8g
ZmFpbC4KLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrTG9hZGVyPihz
dGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJDbGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKKyAg
ICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0
VHJhY2tMb2FkZXJDbGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqPigmbV90cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKICAgICBpZiAoIW1fbG9hZGVy
LT5sb2FkKG1fdXJsLCAqbV90cmFja0VsZW1lbnQpKQogICAgICAgICBtX3RyYWNrRWxlbWVudC0+
ZGlkQ29tcGxldGVMb2FkKEhUTUxUcmFja0VsZW1lbnQ6OkZhaWx1cmUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAppbmRleCAwMzEwODBl
MWFiNjZkMzJjYzljMDcxNzhmMDJmOTM1MjNiYzcwNmIwLi45MDI5YjkyZDhiODNmMmQ3YmVkNmQ4
ZTU0NTc2YzBhMTY4Y2E1MjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElIb3N0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8Q29tbWFuZExpbmVBUElI
b3N0PiBDb21tYW5kTGluZUFQSUhvc3Q6OmNyZWF0ZSgpCiB9CiAKIENvbW1hbmRMaW5lQVBJSG9z
dDo6Q29tbWFuZExpbmVBUElIb3N0KCkKLSAgICA6IG1faW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCkpCisgICAgOiBtX2luc3BlY3RlZE9iamVjdCht
YWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpKQogewogfQogCkBAIC0xOTYsNyArMTk2LDcg
QEAgSlNWYWx1ZSBDb21tYW5kTGluZUFQSUhvc3Q6OndyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVh
ckFsbFdyYXBwZXJzKCkKIHsKICAgICBtX3dyYXBwZXJzLmNsZWFyQWxsV3JhcHBlcnMoKTsKLSAg
ICBtX2luc3BlY3RlZE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+
KCk7CisgICAgbV9pbnNwZWN0ZWRPYmplY3QgPSBtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0
PigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01FZGl0b3IuY3BwCmluZGV4IDZjMzFlNDk4ZTQzNGQzMDBiMGYxYzZlYWI4NDM0Njc3NmNmMGEy
ZmMuLjgzODkwOGRjOTM2ZWZhNmJhMjZjNzkxNjcxNDRkYjdkZTllMmFlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIERPTUVk
aXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbiB7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGVyZm9ybSgpIGZpbmFsCiAgICAgewog
ICAgICAgICBpZiAobV9ub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIG1fcmVtb3Zl
Q2hpbGRBY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2Rl
LT5wYXJlbnROb2RlKCksIG1fbm9kZSk7CisgICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9u
ID0gbWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBt
X25vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX3JlbW92ZUNoaWxkQWN0aW9uLT5w
ZXJmb3JtKCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwpAQCAtMzg1LDI3ICsz
ODUsMjcgQEAgRE9NRWRpdG9yOjp+RE9NRWRpdG9yKCkgPSBkZWZhdWx0OwogCiBFeGNlcHRpb25P
cjx2b2lkPiBET01FZGl0b3I6Omluc2VydEJlZm9yZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9k
ZT4mJiBub2RlLCBOb2RlKiBhbmNob3JOb2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RG
TW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybSht
YWtlVW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwg
YW5jaG9yTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUNo
aWxkKE5vZGUmIHBhcmVudE5vZGUsIE5vZGUmIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9y
eS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUs
IG5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVD
aGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwgbm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBE
T01FZGl0b3I6OnNldEF0dHJpYnV0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3Jt
KHN0ZDo6bWFrZV91bmlxdWU8U2V0QXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1
ZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFNldEF0dHJpYnV0
ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwgdmFsdWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5n
JiBuYW1lKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVl
PFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSkpOworICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwg
bmFtZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE91dGVySFRNTChO
b2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqJiBuZXdOb2RlKQogewotICAgIGF1
dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0
bWwpOworICAgIGF1dG8gYWN0aW9uID0gbWFrZVVuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5v
ZGUsIGh0bWwpOwogICAgIGF1dG8mIHJhd0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byByZXN1
bHQgPSBtX2hpc3RvcnkucGVyZm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmICghcmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNDE1LDIyICs0MTUsMjIgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBO
b2RlKiYKIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1s
KQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2Vy
dEFkamFjZW50SFRNTEFjdGlvbj4oZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsKKyAgICByZXR1cm4g
bV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVs
ZW1lbnQsIHdoZXJlLCBodG1sKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6
cmVwbGFjZVdob2xlVGV4dChUZXh0JiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewot
ICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9s
ZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0KSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJm
b3JtKG1ha2VVbmlxdWU8UmVwbGFjZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSYgcGFy
ZW50Tm9kZSwgUmVmPE5vZGU+JiYgbmV3Tm9kZSwgTm9kZSYgb2xkTm9kZSkKIHsKLSAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0
aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5ld05vZGUpLCBvbGROb2RlKSk7CisgICAgcmV0dXJu
IG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFy
ZW50Tm9kZSwgV1RGTW92ZShuZXdOb2RlKSwgb2xkTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBET01FZGl0b3I6OnNldE5vZGVWYWx1ZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNl
dE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwgdmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBl
cmZvcm0obWFrZVVuaXF1ZTxTZXROb2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CiB9CiAK
IHN0YXRpYyBib29sIHBvcHVsYXRlRXJyb3JTdHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1
bHQsIEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMjBkYTM0MzBjMTVjODU1MTQ4NWM1NzM4YzU0N2Zh
MGMzNDMxYTFiYS4uMmU5ZDc1NTY1NWM4M2VmODgxNTk2YWFkMjBjOTZlMTBlNjg4MjZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTQwMiw3
ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAKIHN0ZDo6dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2Vz
dD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNN
YXAqIHVudXNlZE5vZGVzTWFwKQogewotICAgIGF1dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxEaWdlc3Q+KCk7CisgICAgYXV0byBkaWdlc3QgPSBtYWtlVW5pcXVlPERpZ2VzdD4oKTsKICAg
ICBkaWdlc3QtPm5vZGUgPSAmbm9kZTsKICAgICBTSEExIHNoYTE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1MjAzNzA2YjUz
YjMyYjBiYTRmMGVkNGQ0YmE0MDBiNmM3OWI1ZTE1Li42M2ZmM2FiNjIzYTQ0NmNkNjIwZWU0N2Uz
OTIwNTVjZWE1MWE4NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC05MywxMCArOTMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdl
JiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zy
b250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlS
ZWYoKSkpCi0gICAgLCBtX292ZXJsYXkoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5
PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV9vdmVybGF5KG1ha2VVbmlxdWU8SW5z
cGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9u
U3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVy
KHBhZ2UpCiAgICAgLCBtX3BhZ2UocGFnZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBJbnNwZWN0b3JD
b250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVu
dCogaW5zcGVjdG9yQwogCiAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQo
KTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29s
ZUFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVl
PFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogfQpAQCAtMTUzLDM3ICsxNTMsMzcgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBlbnN1cmVJ
bnNwZWN0b3JBZ2VudCgpOwogICAgIGVuc3VyZVBhZ2VBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29u
dGV4dCkpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
RGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1h
a2VVbmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBhdXRvIGRlYnVn
Z2VyQWdlbnRQdHIgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChX
VEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4o
cGFnZUNvbnRleHQpKTsKICAgICBlbnN1cmVET01BZ2VudCgpOwotICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0
LCBkZWJ1Z2dlckFnZW50UHRyKSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50Pihw
YWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtl
VW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50
PihwYWdlQ29udGV4dCkpOwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdl
Q29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckluZGV4
ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOwogI2VuZGlmCiAKLSAgICBhdXRvIHNjcmlwdFByb2Zp
bGVyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtl
VW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2Ny
aXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUo
c2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVy
QWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFn
ZUNvbnRleHQpKTsKICNlbmRpZgotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8UGFnZUF1ZGl0QWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxp
bmVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQ
YWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5p
cXVlPFBhZ2VBdWRpdEFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZCht
YWtlVW5pcXVlPEluc3BlY3RvckNhbnZhc0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQSUhv
c3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmNvcHlSZWYoKSk7CkBAIC00MjEsNyArNDIx
LDcgQEAgSW5zcGVjdG9yQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3Rv
ckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBw
YWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAg
ICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBh
Z2VDb250ZXh0KTsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50Lmdl
dCgpOwogICAgICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1f
aW5zcGVjdG9yQWdlbnQpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0
b3JBZ2VudCkpOwpAQCAtNDMzLDcgKzQzMyw3IEBAIEluc3BlY3RvckRPTUFnZW50JiBJbnNwZWN0
b3JDb250cm9sbGVyOjplbnN1cmVET01BZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckRP
TUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7
Ci0gICAgICAgIGF1dG8gZG9tQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFn
ZW50PihwYWdlQ29udGV4dCwgbV9vdmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBkb21BZ2Vu
dCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXku
Z2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvckRPTUFnZW50ID0gZG9tQWdlbnQuZ2V0KCk7CiAg
ICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRvbUFnZW50KSk7CiAgICAgfQpAQCAtNDQ0
LDcgKzQ0NCw3IEBAIEluc3BlY3RvclBhZ2VBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5z
dXJlUGFnZUFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZUFnZW50KSB7CiAgICAg
ICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8g
cGFnZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250
ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBw
YWdlQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1f
aW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvclBh
Z2VBZ2VudCA9IHBhZ2VBZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1v
dmUocGFnZUFnZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggMjhlZTcyN2EzNmQ2NmNl
MjEwOTY5NzgzMWFlMGE4YWFjNDIzODU3NS4uNmMxYjUxYWRlZTlhMzg0MjYzMzM4ZjQ1ZDg4ODRh
NmQ5YzM3ZWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFNldHRpbmdzIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgogICAgICAgICBTZXR0aW5ncygpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVh
bCB+U2V0dGluZ3MoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGlzdG9yeS5jcHAKaW5kZXggMDBkNWYxODUyY2ViYTI3MGMzYWY4MWMxMzIwOTAwNWRh
N2IxMThhOC4uYzgxMDNkZDdkYmI4MzIwZWFiMmU2YWQ1ZTMyYzJkNTJkNzJiMDYzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6
dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlvbikKIAogdm9pZCBJbnNwZWN0b3JIaXN0b3J5OjptYXJr
VW5kb2FibGVTdGF0ZSgpCiB7Ci0gICAgcGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFVuZG9hYmxl
U3RhdGVNYXJrPigpKTsKKyAgICBwZXJmb3JtKG1ha2VVbmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+
KCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBJbnNwZWN0b3JIaXN0b3J5Ojp1bmRvKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRl
eCBjYTMwZTFhMjdiZjQwNjE4NWE0ODMyMGEyNjMxODNlYTdlNmU0N2UzLi4yMjljOThhNDQ3ZDIy
MjQ4ZGRlZjNiYTM0YjM3YzVjNGMwNDc1OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBQ
YXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291cmNl
RGF0YUxpc3Q+IHNvdXJjZUQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc291cmNl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIG1fc291
cmNlRGF0YSA9IG1ha2VVbmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwogCiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc29sdXRpb24gdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBm
bGF0IHNvdXJjZURhdGEgc3RydWN0dXJlCiAgICAgLy8gY29udGFpbmluZyBvbmx5IHN0eWxlIHJ1
bGVzLCBldmVuIHRob3VnaCBDU1NQYXJzZXIgbm93IHByb3ZpZGVzIHRoZSBmdWxsIHJ1bGUgc291
cmNlIGRhdGEgdHJlZS4KQEAgLTEzMzQsNyArMTMzNCw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVT
aGVldDo6ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1
dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7Ci0gICAgYXV0
byBydWxlU291cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFM
aXN0PigpOworICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBtYWtlVW5pcXVlPFJ1bGVT
b3VyY2VEYXRhTGlzdD4oKTsKICAgICAKICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQocGFy
c2VyQ29udGV4dEZvckRvY3VtZW50KG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSkp
OwogICAgIFN0eWxlU2hlZXRIYW5kbGVyIGhhbmRsZXIobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0
KCksIG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSwgcnVsZVNvdXJjZURhdGFSZXN1
bHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKaW5kZXggZDNiNzU5ZjI5Y2NmMWFlMTgwMjgwZDVlMTczNjcwZDI5YzRmOGNj
MS4uZmQ3Y2FkMzA3NjdlNzc1YjE2NzVlYzQ1NGVmN2EwOGJiMDM2ZDU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xMzYs
NyArMTM2LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFG
b3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8g
cmVzb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVy
SWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0VHlwZSh0eXBlKTsKICAgICBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9
CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VD
cmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1
cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwor
ICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJ
ZCwgbG9hZGVySWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoJmNhY2hl
ZFJlc291cmNlKTsKICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0
SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNDM1MWU4NzJh
OWU1YTM2NDcyOWY1YjRmYjI2MjE2YzczMzAyYzhkZC4uMzY0YWVhN2Q0YjVkOTExNzkzMjc1ZDY0
NmYyOTVlNjdiZjBlZWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkK
ICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUo
KnRoaXMpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNy
ZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUo
KSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250
ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0
Y2g6OmNyZWF0ZSgpKQpAQCAtNjksNyArNjksNyBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
OjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAog
CiAgICAgYXV0byB3b3JrZXJDb250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBh
dXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3
b3JrZXJDb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8V29ya2Vy
Q29uc29sZUFnZW50Pih3b3JrZXJDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogfQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQg
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX2V4ZWN1
dGlvblN0b3B3YXRjaC0+cmVzZXQoKTsKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQo
KTsKIAotICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRv
UGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9mb3J3YXJk
aW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dv
cmtlckdsb2JhbFNjb3BlKTsKICAgICBtX2Zyb250ZW5kUm91dGVyLT5jb25uZWN0RnJvbnRlbmQo
Km1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCkpOwogfQpAQCAtMTY0LDE4ICsxNjQsMTggQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9
IHdvcmtlckFnZW50Q29udGV4dCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8V29ya2VyUnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMu
YXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyUnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4obV93b3JrZXJHbG9iYWxTY29wZSkpIHsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0g
ICAgICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5ldHdvcmtBZ2Vu
dD4od29ya2VyQ29udGV4dCkpOworICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxT
ZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8V29ya2VyTmV0d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAg
fQogI2VuZGlmCiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXZWJIZWFw
QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29u
dGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdl
bnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3Jr
ZXJBdWRpdEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExp
bmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgp
KQogICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYThk
M2M4OTljMzI4MGEyOGU2NzMyY2Y4OGFiODRkMDAwZDQ1ZWQyZC4uZmRmMDQ0YzU3OWIzNjhjMzIw
NTFiNjVkYzQ0MGUzODdmNjAxOGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJB
cHBsaWNhdGlvbkNhY2hlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRl
eHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRl
eHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGNmOTRj
YTgwOTZmZjU3MWQ3NGQ3NzNiMWYwMDI3NTA1NGMwY2UxZjkuLjExNjI0ZTI0MDk0NjRmYzFlMWU2
NWE2OTk4ZGJkMWIwNjgyZjBiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcApAQCAtMzks
NyArMzksNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDUFVQcm9m
aWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNQVVByb2ZpbGVyIl9zLCBjb250ZXh0
KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
KyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9m
aWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cAppbmRleCA0YjY5OTQ1ZWM3MDY3Zjk2NDNlNDgwNzMwMzQ4NDI2ODZkNjE5ZmI4Li40NGU5YzVh
YmViNGM5NjZhYmFlYTk0NGE0MGQ1ZTAzZDQ3MmQxMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjk3LDcg
KzI5Nyw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxl
KENTU1J1bGUmIHJ1bGUpCiAKIEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChX
ZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNTUyJf
cywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8
Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQ1NTQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsK
IH0KQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNo
ZWV0VGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5w
ZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3Rv
clN0eWxlU2hlZXQsIHRleHQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5
KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9y
U3R5bGVTaGVldCwgdGV4dCkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKSk7CiB9CkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
SlNPTjo6T2JqZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJl
c3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRT
dHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsK
KyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1h
a2VVbmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3Vu
ZElkLCB0ZXh0KSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJm
b3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3
ICs2NzAsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVT
aGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBk
b21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0
aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOwogICAgIGlm
IChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
SW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgc3R5bGVTaGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWN0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBz
ZWxlY3Rvcik7CisgICAgYXV0byBhY3Rpb24gPSBtYWtlVW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGlu
c3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0
aW9uOwogICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZv
cm0oV1RGTW92ZShhY3Rpb24pKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcAppbmRleCA5YmUwNjExOWZiMzIxOTcwMDcyOTcyMmQ4MzZhODE2
YjI1ZjFjMDE1Li4wZTUwYzc1YmE0ODc1MTU1NmU0MTJkY2I5N2FkMTk2Njk2NWE5OTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ2FudmFzIl9zLCBj
b250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFz
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3BlY3Rl
ZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgSW5z
cGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250
ZXh0JiBjYW52YXNSZW5kCiAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMtPmN1cnJlbnRGcmFtZUhh
c0RhdGEoKSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGlu
c3BlY3RvckNhbnZhcy0+Y29udGV4dCgpLmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIHF1ZXVlID0gTWljcm90YXNrUXVldWU6Om1haW5U
aHJlYWRRdWV1ZSgpOwotICAgICAgICAgICAgcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgWyYsIHByb3RlY3RlZEluc3BlY3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVm
KCldIHsKKyAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxi
YWNrTWljcm90YXNrPihxdWV1ZSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0
ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpXSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0VsZW1lbnQgPSBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52
YXMtPmNhbnZhc0VsZW1lbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzRWxl
bWVudC0+aXNEZXNjZW5kYW50T2YoY2FudmFzRWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDZjMTk2ZTBjYzY4MmI0NDI1
NmM3ZGRhYWUwOTBhYTBhYWQ1NTMxN2QuLmYwYTI4YzEzMzFjNWJiMzA4OGQ1M2U3MjQzZGJhZjRl
ZWI2M2U3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgU3RyaW5nIEluc3BlY3Rv
ckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIEluc3BlY3Rv
ckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJ
bnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET00i
X3MsIGNvbnRleHQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVj
dGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTMw
MSw4ICszMDEsOCBAQCBJbnNwZWN0b3JET01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3Bl
Y3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsK
LSAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7Ci0g
ICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7
CisgICAgbV9oaXN0b3J5ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOworICAgIG1f
ZG9tRWRpdG9yID0gbWFrZVVuaXF1ZTxET01FZGl0b3I+KCptX2hpc3RvcnkpOwogCiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckRPTUFnZW50KHRoaXMpOwogICAgIG1fZG9j
dW1lbnQgPSBtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKQEAgLTY1Myw3
ICs2NTMsNyBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
Tm9kZSogbm9kZVRvUHVzaCkKICAgICAgICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2Rl
KG5vZGUpOwogICAgICAgICBpZiAoIXBhcmVudCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWlu
ZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4gcHVzaCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBh
dXRvIG5ld01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CisgICAgICAgICAg
ICBhdXRvIG5ld01hcCA9IG1ha2VVbmlxdWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBk
YW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9J
ZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgYXV0byBjaGlsZHJl
biA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRl
KCk7CkBAIC0xMTc3LDcgKzExNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmln
PiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3RvcgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29u
ZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgYm9vbCBzaG93SW5mbyA9
IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxzZSAoZG8gbm90IHNob3cgYSB0b29sdGlwKS4KICAgICBo
aWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oInNob3dJbmZvIiwgc2hvd0luZm8p
OwogICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSBzaG93SW5mbzsKQEAgLTExOTYsMTMg
KzExOTYsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVk
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCBlbmEKIAogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmpl
Y3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAg
IGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwg
d2lkdGgsIGhlaWdodCkpOworICAgIGF1dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihG
bG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogICAgIGlubmVySGlnaGxpZ2h0UXVhZChX
VEZNb3ZlKHF1YWQpLCBjb2xvciwgb3V0bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwog
fQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYXkmIHF1YWRBcnJheSwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wq
IHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZsb2F0UXVhZD4oKTsKKyAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKTsK
ICAgICBpZiAoIXBhcnNlUXVhZChxdWFkQXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkludmFsaWQgUXVhZCBmb3JtYXQiX3M7CiAgICAgICAgIHJldHVybjsKQEAg
LTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJhCiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFk
PiBxdWFkLCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91
dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8g
aGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7Cisg
ICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsK
ICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3Ip
OwogICAgIGhpZ2hsaWdodENvbmZpZy0+dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3Jk
aW5hdGVzID8gKnVzZVBhZ2VDb29yZGluYXRlcyA6IGZhbHNlOwpAQCAtMTMxNiw3ICsxMzE2LDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGZy
YW1lLT5vd25lckVsZW1lbnQoKSkgewotICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgICAgICBhdXRvIGhpZ2hsaWdo
dENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgICAgICBoaWdobGln
aHRDb25maWctPnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZy
YW1lcy4KICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xv
cik7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9y
KG91dGxpbmVDb2xvcik7CkBAIC0xMzk4LDcgKzEzOTgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpzZXRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCkKICAgICBtX2luc3BlY3RlZE5vZGUgPSBub2RlOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRM
aW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciY+KG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKS5jb21tYW5kTGluZUFQSUhvc3QoKSkKLSAgICAgICAgY29tbWFu
ZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
YWJsZU5vZGU+KG5vZGUpKTsKKyAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0
ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKIAogICAgIG1fc3Vw
cHJlc3NFdmVudExpc3RlbmVyQ2hhbmdlZEV2ZW50ID0gZmFsc2U7CiB9CkBAIC0yMzE0LDcgKzIz
MTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZXZhbGlkYXRl
U3R5bGVBdHRyVGFzaykKLSAgICAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IHN0ZDo6
bWFrZV91bmlxdWU8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7CisgICAgICAg
IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sgPSBtYWtlVW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0
dHJpYnV0ZVRhc2s+KHRoaXMpOwogICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnNjaGVk
dWxlRm9yKCZlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGU5NzFh
OTlmNzA1MjRkODMxODFhZTcxNWQ4MjY1ODgxMWZlMDg4MDguLjgxZjE0ZGMxN2JmYTA0NzQ3ZTNk
MjNlNDUzZjVlNGFmOGQwOWZkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRE9NU3RvcmFnZSJfcywgY29udGV4dCkKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01T
dG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiMzdh
NTYwY2U4MDc2OGM2NjQ0MDg1MTVmYjA1NTEyNjE2NWJlZDgyLi4zNThhODU2NTEyZWE0ZDcxOTYz
MzJhMjA2OTkwZGUzMjUwMDQxMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTIxNyw3ICsy
MTcsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShEYXRh
YmFzZSYgZGF0YWJhc2UpCiAKIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFi
YXNlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJEYXRhYmFzZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKaW5kZXggZTFlMDgyZTQxYWQyZDUyNGY1N2Vm
MTA2NDAyODg3NjExNTY4MjRiOS4uYjU5ODJjZWUzN2UzNzQ0NzA1Mzk0NmJjZjRjNDM0YjQzMWVm
OWE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiTGF5ZXJUcmVlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpM
YXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAyOWM3NmQwYzdmZWE5MjJjMmEz
ZDk5NDE0Yzk4NmVhOGQyOGQ3N2I1Li4yODMyOTUxZjUzODAxMjFmYTQ1MmJmYThkNDcwZjRkMzVl
Nzg5YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdl
bnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
TWVtb3J5Il9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3Bl
Y3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpNZW1vcnlCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDNlNGU5NmViMjMxYTA1NGIyMTIxMjQ3YmMyY2IwOTE2NWYwMjY1
YjMuLjVkMDgxNjM4MGNkYzY2YzdkNzk2MGMxMmQzNDhhMGZiZjNmN2IxMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTE3MiwxMCArMTcyLDEwIEBAIGNsYXNzIEluc3BlY3RvclRocmVhZGFibGVM
b2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAKIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6SW5zcGVjdG9yTmV0d29ya0FnZW50KFdlYkFnZW50Q29udGV4
dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTmV0d29yayJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9yZXNvdXJjZXNE
YXRhKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+KCkpCisgICAgLCBtX3Jl
c291cmNlc0RhdGEobWFrZVVuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IDMyOWUxYjBjNWFkOTJmYjQ1MWRmMTc2NzMzYWUyYWUzNThmYjQ5Mzcu
LmM2NDFhNmEwNDg0MTkzMjY4ZTI5ZTkwZmYwMTI2YWI5MTFjOTMwZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
QEAgLTMzMyw3ICszMzMsNyBAQCBEb2N1bWVudExvYWRlciogSW5zcGVjdG9yUGFnZUFnZW50Ojph
c3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogCiBJbnNwZWN0b3JQ
YWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJ
bnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiUGFnZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpQYWdl
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBt
X2NsaWVudChjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCAzYTM2MWU5MWU2ZjJkZWIw
MDQyZTE4YTdjNjRjN2I1MTZmOWI4MGM1Li4zMGQ4NmM3NDYzYzQ3ZjViM2FkMmIzOGNmNWRlMjQ5
ZDQ0ZWI5YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGlj
IENGUnVuTG9vcFJlZiBjdXJyZW50UnVuTG9vcCgpCiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
Okluc3BlY3RvclRpbWVsaW5lQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiVGltZWxpbmUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5z
cGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQogewpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIC8vIEZJ
WE1FOiBBYnN0cmFjdCBhd2F5IHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgb25jZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNzQ4IGlzIGZpeGVkLgogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpX
ZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgewor
ICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0
YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVy
czo6SW5zcGVjdG9yRnJhbWVCZWdpbiksIFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNr
aW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAg
ICAgICAgIG1fcnVuTG9vcE5lc3RpbmdMZXZlbCsrOwogICAgIH0pOwogCi0gICAgbV9mcmFtZVN0
b3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2Fz
dDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3Bl
Y3RvckZyYW1lRW5kKSwgW3RoaXNdKCkgeworICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBtYWtl
VW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2Vy
dmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgp
IHsKICAgICAgICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdT
ZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yODAsNyArMjgw
LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgICAgICBpZiAoV2ViQ29u
c29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29s
ZUFnZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0
byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkg
ZXhpc3RzIl9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBl
eGlzdHMiKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdh
cm5pbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3Rv
cEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgaWYg
KFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndl
YkNvbnNvbGVBZ2VudCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhl
IGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0
bGUuaXNFbXB0eSgpID8gIk5vIHByb2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmls
ZSBcIiIsIHRpdGxlLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgY29uc29sZUFnZW50
LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggOTE2MWQ4NDNjZDM4
ZTRkOTY2MTI2YWNkZDM2ZTgzZGQxOGY1MTAwMi4uMWUzOThlZGQxYTllYTNlZjI2YmUwOWVjMDNk
NmM2YzJjZDM5OGRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3Rvcldv
cmtlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIldvcmtlciJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJv
dXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6V29ya2VyQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAg
ICAsIG1fcGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMmVlZDFjZTYw
YjMwMjJhZDk4MjRmYTYyOGEzNWRkYzU0NDQ5NjBkOS4uYzIwOTRiOTkyZDM1NDE2MGYxN2VlMjhm
NjQxMGE3OTNkY2RlOWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvV2ViQ29uc29sZUFnZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkNvbnNv
bGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0CiAKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsK
ICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNv
dXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpLCAiICgiLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwot
ICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRy
LCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VV
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBl
OjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmlu
ZygpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogICAgIH0KIH0KIApAQCAt
OTIsNyArOTIsNyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzbwogICAgICAgICBtZXNzYWdlLmFw
cGVuZChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKICAgICB9CiAKLSAgICBhZGRNZXNz
YWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3Nh
Z2UudG9TdHJpbmcoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0
SWRlbnRpZmllcikpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAs
IDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVh
cEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50
LmNwcAppbmRleCBiYjVkMWJlYzZjNjMyMjM5YmVlNjQ2MzQzN2FlZmVkMTJiYTQ3MWQ1Li4wOWNi
NmY0NjY2YWI0YzkxY2JlZTJkMGZjZmRkNGJhNmE2MWExMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBA
IHN0cnVjdCBHYXJiYWdlQ29sbGVjdGlvbkRhdGEgewogfTsKIAogY2xhc3MgU2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmKTsK
ICAgICB2b2lkIGFkZEdhcmJhZ2VDb2xsZWN0aW9uKEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSYmKTsK
QEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrOjp0
aW1lckZpcmVkKCkKIFdlYkhlYXBBZ2VudDo6V2ViSGVhcEFnZW50KFdlYkFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckhlYXBBZ2VudChjb250ZXh0KQogICAgICwgbV9pbnN0
cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2Vu
ZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNlbmRHYXJiYWdl
Q29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlzKSkKKyAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0
aW9uRXZlbnRzVGFzayhtYWtlVW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+
KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDVlYWZiNmEzMjg0NmU3MDAx
NTNhYzgyNjgxYjdiZTUwZDNhZmU0OGMuLjg5ODViYzk0NWZlNzVlMGU4NTFhMzZkZTM1ODRhYjA0
NzFjMGZkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChQ
YWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNv
bnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UnVudGlt
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3RydW1lbnRp
bmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggYjIwY2JiYzk1MDcwMjgxMWI2NTg5YWMxZGZiZDU3MzM5MTkzZDMzNy4uODA4MmVlMzFlZWM2
MGEyZjYwMzI5ZGJhYmQ0ZDk4NDJmNmE1NWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgV29ya2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2Vy
QWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2lu
dEFjdGlvbkxvZyhFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVz
c2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7
CisgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CiB9
CiAKIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9y
RXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4
dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggYmQ5ZDRjYWRlZmIy
ZmFhMWYyZTBiMjU3OTU1YWQ1MTI0ZTE3OTRlZS4uMWYzZmFiYTMxMjZmMmU5YjM2Yjg0ZDEzZTcz
YmYxZmRhMzE3NTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgTGF5b3V0U3RhdGU6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3Vi
dHJlZShjb25zdCBCb3gmIGxheW91dFJvb3QpCiBEaXNwbGF5OjpCb3gmIExheW91dFN0YXRlOjpk
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAg
IHJldHVybiAqbV9sYXlvdXRUb0Rpc3BsYXlCb3guZW5zdXJlKCZsYXlvdXRCb3gsIFsmbGF5b3V0
Qm94XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OkJveD4obGF5
b3V0Qm94LnN0eWxlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+
KGxheW91dEJveC5zdHlsZSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTE0
MCwxMyArMTQwLDEzIEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1h
dHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgICAgICAvLyBz
aG91bGQgbm90IGludGVyZmVyZSB3aXRoIHRoZSBjb250ZW50IGluc2lkZS4KICAgICAgICAgICAg
IC8vIDxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzog
aGlkZGVuIj4gPC0gaXMgYSBub24taW50cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBo
aWRkZW4gdHJpZ2dlcnMgbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4KICAgICAg
ICAgICAgIGlmIChmb3JtYXR0aW5nUm9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3Qp
LCAqdGhpcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0
dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwg
KnRoaXMpOwogCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBmb3JtYXR0aW5nIGNvbnRl
eHQgaW5oZXJpdHMgdGhlIGZsb2F0cyBmcm9tIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0
LgogICAgICAgICAgICAgLy8gRmluZCB0aGUgZm9ybWF0dGluZyBzdGF0ZSBpbiB3aGljaCB0aGlz
IGZvcm1hdHRpbmcgcm9vdCBsaXZlcywgbm90IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQgdXNlIGl0
cyBmbG9hdGluZyBzdGF0ZS4KICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZvcm1hdHRpbmdTdGF0
ZSA9IGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0
dGluZ1Jvb3QuZm9ybWF0dGluZ0NvbnRleHRSb290KCkpOyAKICAgICAgICAgICAgIGF1dG8mIHBh
cmVudEZsb2F0aW5nU3RhdGUgPSBwYXJlbnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgp
OwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRlLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlz
KTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw3
IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZv
ckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5n
U3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIEJs
b2NrIGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcg
c3RhdGUuCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRp
bmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0
aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRl
PihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwog
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcgQEAg
Rm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9y
bWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0
ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwgWyZdIHsKIAogICAgICAgICAgICAgLy8gVGFibGUg
Zm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0
ZSAtYW5kIGl0IHN0YXlzIGVtcHR5LgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9y
bWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJs
ZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5n
Um9vdCksICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAt
MTc0LDE4ICsxNzQsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlv
dXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm8KICAgICBBU1NFUlQoZm9y
bWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAg
aWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250
ZXh0KCkpIHsKICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8
SW5saW5lRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5n
Um9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRS
b290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0
YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkp
OwogICAgICAgICBhdXRvJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9y
bWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVl
ZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2Nr
Rm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0
aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7
CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBhdXRvJiB0YWJsZUZvcm1hdHRpbmdTdGF0
ZSA9IGRvd25jYXN0PFRhYmxlRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVG
b3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0
YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCmluZGV4IDdhZTNiNDA5ZDc2
MTE2ZjJlOWQxM2NjMzFlYjZlNTYwNjNiMTA3NmYuLjc5OTE2Mjc1NzQwMTgzZjM1M2Y1YWZkNWIx
NTIyZTU2NTNmYzg5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlSdW4uaApAQCAtMzYsNyArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgRGlzcGxheSB7CiAKIHN0cnVjdCBSdW4geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICBzdHJ1Y3QgVGV4dENvbnRleHQgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0Q29udGV4dCh1
bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IGExY2Q2ZDZmMWI3ZWI5MGZjYzc5MDVlMzFlOWYwNGZlM2Jm
ODI2MGIuLjUwOGQ2NjEyOWQxNDg3YzRlODQ0MDkzOTNkYTMzNDA5MTllYTdmODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAg
ICAgICAgICBpZiAoIXRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGFuIGlu
bGluZSBjb250YWluZXIgKGUuZy4gPHNwYW4+KS4KLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJ
bmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCkpOworICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0YXJ0KSk7CiAgICAgICAgICAgICBhdXRvJiBjb250
YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CiAgICAgICAgICAgICBpZiAo
IWNvbnRhaW5lci5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTI5MiwxNyArMjkyLDE3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbGxlY3RJbmxpbmVDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJv
eCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFzdCgpOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUg
ZW5kIG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4gPC9zcGFuPikuCiAgICAgICAgICAgICBp
ZiAodHJlYXRBc0lubGluZUNvbnRhaW5lcihsYXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4o
bGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJFbmQpKTsKKyAgICAgICAgICAg
ICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+
KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSkKLSAgICAgICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+
KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhaykpOworICAgICAgICAg
ICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRl
bT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElu
bGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsKKyAgICAgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0
ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgp
KTsKICAgICAgICAgICAgICAgICBpZiAobGF5b3V0Qm94Lmhhc1RleHRDb250ZW50KCkpCiAgICAg
ICAgICAgICAgICAgICAgIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMo
Zm9ybWF0dGluZ1N0YXRlLmlubGluZUl0ZW1zKCksIGxheW91dEJveCk7CiAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRl
bShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlw
ZTo6Qm94KSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJ
dGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpC
b3gpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5n
ID0gbGF5b3V0Qm94Lm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcAppbmRleCBmNzQxZGU0
ODllOTQyNDYxZDc2OTJlMmU0MDQxNTkzODNiMGM4MTYwLi4wYTIxMzAyMTNmMTI0ZWViNWY3Zjcx
MTJlODg2ZDcxMmM1MzFkYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0TGluZUxheW91dC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6
OkNvbnRlbgogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRv
cExlZnQoKSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChsb2dp
Y2FsUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhl
aWdodChsb2dpY2FsUmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkp
OworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERp
c3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAg
ICAgICAgICAgIHRvcExlZnQgKz0gR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9m
ZnNldChsYXlvdXRTdGF0ZSgpLCBsYXlvdXRCb3gpOwogICAgICAgICAgICAgZGlzcGxheUJveC5z
ZXRUb3BMZWZ0KHRvcExlZnQpOwogICAgICAgICAgICAgbGluZUJveFJlY3QuZXhwYW5kSG9yaXpv
bnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRl
LmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3Qp
KTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxE
aXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAg
ICAgICAgIGF1dG8gcHJldmlvdXNSdW5DYW5CZUV4dGVuZGVkID0gcHJldmlvdXNMaW5lUnVuICYm
IHByZXZpb3VzTGluZVJ1bi0+dGV4dENvbnRleHQoKSA/IHByZXZpb3VzTGluZVJ1bi0+dGV4dENv
bnRleHQoKS0+Y2FuQmVFeHRlbmRlZCA6IGZhbHNlOwogICAgICAgICAgICAgYXV0byByZXF1aXJl
c05ld1J1biA9ICFpbmRleCB8fCAhcHJldmlvdXNSdW5DYW5CZUV4dGVuZGVkIHx8ICZsYXlvdXRC
b3ggIT0gJnByZXZpb3VzTGluZVJ1bi0+bGF5b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAocmVx
dWlyZXNOZXdSdW4pCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1
bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1
bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29udGV4dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5ndGgg
fSkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVu
aXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0
IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGF1dG8mIGxhc3REaXNwbGF5UnVuID0gZm9ybWF0
dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5sYXN0KCk7CiAgICAgICAgICAgICAgICAgbGFzdERpc3Bs
YXlSdW4tPmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVjdC53aWR0aCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRl
eCBiMDAxM2I2ZWQ1NjNiY2JmODI4MTM5MTM0MWYyZGQ1NjE1ZWM1M2VmLi43OTA2MTk2ODFlNjc1
MmQyODcyNDkzODYyMmUzYTc0YmUwMzNmZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCkBAIC0zNCw2ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVt
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPElubGluZUl0ZW0+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBIYXJkTGlu
ZUJyZWFrLCBCb3gsIEZsb2F0LCBDb250YWluZXJTdGFydCwgQ29udGFpbmVyRW5kIH07CiAgICAg
SW5saW5lSXRlbShjb25zdCBCb3gmIGxheW91dEJveCwgVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDRm
MjBhNmZmMWQ3MGNlMzQ5YmRlMGViZWRmZThmODBhMzVlODVhMjguLmVkNjUyMDViN2RiOTliMGY2
YWIxMGYzZWVlYWEwN2M0NDZiN2Y4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIExp
bmU6OkNvbnRlbnQ6OlJ1bjo6UnVuKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0
IFRleHRDb250ZXh0JiB0ZXh0Q29uCiAKIExpbmU6OkxpbmUoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywg
U2tpcFZlcnRpY2FsQWxpZ21lbnQgc2tpcFZlcnRpY2FsQWxpZ21lbnQpCiAgICAgOiBtX2xheW91
dFN0YXRlKGxheW91dFN0YXRlKQotICAgICwgbV9jb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8TGlu
ZTo6Q29udGVudD4oKSkKKyAgICAsIG1fY29udGVudChtYWtlVW5pcXVlPExpbmU6OkNvbnRlbnQ+
KCkpCiAgICAgLCBtX2xvZ2ljYWxUb3BMZWZ0KGluaXRpYWxDb25zdHJhaW50cy5sb2dpY2FsVG9w
TGVmdCkKICAgICAsIG1fYmFzZWxpbmUoeyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFz
ZWxpbmUuYmFzZWxpbmVPZmZzZXQsIGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGlu
ZS5oZWlnaHQgLSBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVP
ZmZzZXQgfSkKICAgICAsIG1faW5pdGlhbFN0cnV0KGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRB
bmRCYXNlbGluZS5zdHJ1dCkKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIAog
dm9pZCBMaW5lOjphcHBlbmROb25CcmVha2FibGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2NvbnRl
bnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0
ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlx
dWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVu
dExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsUmVjdC53aWR0aCgpOwogfQogCkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYg
aW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICB9CiAKICAgICBhdXRvIHRleHRDb250
ZXh0ID0gQ29udGVudDo6UnVuOjpUZXh0Q29udGV4dCB7IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5s
aW5lSXRlbS5pc0NvbGxhcHNlZCgpID8gMSA6IGlubGluZUl0ZW0ubGVuZ3RoKCksIGlzQ29tcGxl
dGVseUNvbGxhcHNlZCwgaW5saW5lSXRlbS5pc1doaXRlc3BhY2UoKSwgY2FuQmVFeHRlbmRlZCB9
OwotICAgIGF1dG8gbGluZUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5s
aW5lSXRlbSwgdGV4dENvbnRleHQsIGxvZ2ljYWxSZWN0KTsKKyAgICBhdXRvIGxpbmVJdGVtID0g
bWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2Fs
UmVjdCk7CiAgICAgaWYgKGlzVHJpbW1hYmxlICYmICFpc0NvbXBsZXRlbHlDb2xsYXBzZWQpCiAg
ICAgICAgIG1fdHJpbW1hYmxlQ29udGVudC5hZGQobGluZUl0ZW0uZ2V0KCkpOwogCkBAIC0zMDMs
NyArMzAzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGwKICAgICAgICAgbG9naWNhbFJlY3Qu
c2V0SGVpZ2h0KGlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGlubGluZUl0ZW0pKTsKICAgICB9CiAK
LSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpS
dW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBw
ZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwog
ICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSAobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1h
cmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRl
bnQuY2xlYXIoKTsKIH0KQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZEhhcmRM
aW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICAgICAgYWRqdXN0QmFz
ZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGluZUl0ZW0sIHsgfSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0
LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KLSAgICBtX2NvbnRlbnQtPnJ1bnMo
KS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2lj
YWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVu
dDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogfQogCiB2b2lkIExpbmU6OmFkanVz
dEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlv
dXRVbml0IHJ1bkhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuaAppbmRleCBmYWYwNTQ3NTNkMzcyMmFiYzAxZDhhNzNmNDc5
OTM0OWJjYjFhYTExLi43MzdhMDdiMDMyYWY2ZmYxMTk5MDk2ZjdhMzc1NzU3ZTZkYTlmMWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZS5oCkBAIC01Miw4ICs1MiwxMCBAQCBjbGFzcyBMaW5lIHsKICAgICBMaW5lKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiwgU2tpcFZlcnRpY2FsQWxpZ21l
bnQpOwogCiAgICAgY2xhc3MgQ29udGVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgc3RydWN0IFJ1biB7CisgICAgICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgICAgICBzdHJ1Y3QgVGV4dENvbnRl
eHQgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAppbmRleCBmMTMwODlh
NzA4ZjNmZTNmZjliNzdmNzIwOTZjZGE0MmVmMzZlMjIyLi41ZTZjMjU2ZGIwYjMwOWFhZjFlMjU4
MjFmMGUxZTE4ZTU2NDUyZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVt
cyYgaW5saW5lQ29udGVudCwgY29uc3QKIHsKICAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4
dENvbnRlbnQoKTsKICAgICBpZiAoIXRleHQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBpbmxp
bmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVC
b3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5h
cHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwg
ZmFsc2UpKTsKIAogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lQm94LnN0eWxlKCk7CiAgICAgYXV0
byBwcmVzZXJ2ZU5ld2xpbmUgPSBzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKTsKQEAgLTk5LDIwICs5
OSwyMCBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5s
aW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlv
biA8IHRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgLy8gU29mdCBsaW5lYnJlYWs/CiAgICAgICAg
IGlmIChpc1NvZnRMaW5lQnJlYWsodGV4dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xp
bmUpKSB7Ci0gICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFs
c2UpKTsKKyAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOwog
ICAgICAgICAgICAgKytjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRbY3VycmVudFBv
c2l0aW9uXSwgcHJlc2VydmVOZXdsaW5lKSkgewogICAgICAgICAgICAgYXV0byBsZW5ndGggPSBt
b3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHRleHQsIGN1cnJlbnRQb3NpdGlvbiwgcHJl
c2VydmVOZXdsaW5lKTsKICAgICAgICAgICAgIGF1dG8gaXNDb2xsYXBzZWQgPSBjb2xsYXBzZVdo
aXRlU3BhY2UgJiYgbGVuZ3RoID4gMTsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0
aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFwc2VkKSk7CisgICAgICAgICAgICBpbmxpbmVDb250
ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQ
b3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBpc0NvbGxhcHNlZCkpOwogICAgICAgICAgICAgY3VycmVu
dFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgYXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uLCBsaW5lQnJlYWtJdGVyYXRvciwgc3R5bGUpOwotICAgICAgICBpbmxpbmVDb250
ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1
cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgaW5saW5lQ29u
dGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50
UG9zaXRpb24sIGxlbmd0aCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIGN1cnJlbnRQb3NpdGlv
biArPSBsZW5ndGg7CiAgICAgfQogfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbmxpbmVUZXh0SXRlbT4gSW5saW5lVGV4dEl0ZW06OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9z
aXRpb24sIHVuCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiA+PSB0aGlzLT5z
dGFydCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0aW9uICsgbGVuZ3RoIDw9IGVu
ZCgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0
Qm94KCksIHNwbGl0UG9zaXRpb24sIGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2Vk
KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwg
c3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3Bw
CmluZGV4IGVkZjJkNGIyNzY2MjJjODk1ZDE3Nzk3MTRjZjdjZjIwOGFjZDljNDIuLmY1NmUxYTYx
NmEyZGY1NzcxYmI0OGE3NTgwM2FlNTczZmNmOGM3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtNDUsNyArNDUsNyBAQCBCb3g6OkJv
eChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBz
dHlsZSwgQmFzZVR5cGVGbAogICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKIHsKICAgICBpZiAo
aXNSZXBsYWNlZCgpKQotICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXBsYWNlZD4oKnRoaXMpOworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJl
cGxhY2VkID0gbWFrZVVuaXF1ZTxSZXBsYWNlZD4oKnRoaXMpOwogfQogCiBCb3g6OkJveChPcHRp
b25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkK
QEAgLTQyMyw3ICs0MjMsNyBAQCBjb25zdCBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OnJhcmVEYXRh
KCkgY29uc3QKIEJveDo6Qm94UmFyZURhdGEmIEJveDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAg
IHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUo
dGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10g
eyByZXR1cm4gbWFrZVVuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwog
fQogCiB2b2lkIEJveDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDVmZWVjZWU3
MmYwOGM0ODUwODhlZTQ4NTE5NDVjNjY0MGNmZTU3ZDMuLmJjMmJiZWU3OGEzNjg2ODI2YjIwNGRm
YjVmNjk2MjVmOTU2ZjJiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTEyOCwyNSArMTI4LDI1IEBAIHN0
ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVu
ZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVy
ZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDbGVhcmx5IHRoZXJlIG11c3QgYmUgYSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIHRoaXMuCiAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJlci5zdHlsZSgpLmRp
c3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5k
ZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5z
dHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihk
b3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVy
U3R5bGU6OmNsb25lKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8
UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERp
c3BsYXlUeXBlOjpJbmxpbmUpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4
dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRS
ZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CiAgICAgICAgIHJldHVybiBj
aGlsZExheW91dEJveDsKICAgICB9CiAKICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVyZXIpOwogICAgIGF1dG8gZGlzcGxheVR5cGUgPSByZW5k
ZXJlci5zdHlsZSgpLmRpc3BsYXkoKTsKICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5k
ZXJlcikpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVy
KSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKIAogICAgIGlmIChpczxS
ZW5kZXJUYWJsZT4ocmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgcHJpbmNp
cGFsIHRhYmxlIHdyYXBwZXIgYm94IChhbmQgbm90IHRoZSB0YWJsZSBib3ggaXRzZWxmKS4KLSAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpF
bGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICBjaGlsZExheW91
dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94
OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVy
ZXIpKSB7CiAgICAgICAgIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spCi0g
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFr
ZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHlldCBz
dXBwb3J0IGFsbCByZXBsYWNlZCBlbGVtZW50cyBhbmQgdGhpcyBpcyB0ZW1wb3JhcnkgYW55d2F5
LgogICAgICAgICBpZiAoY2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCkpCiAgICAgICAgICAgICBj
aGlsZExheW91dEJveC0+cmVwbGFjZWQoKS0+c2V0SW50cmluc2ljU2l6ZShkb3duY2FzdDxSZW5k
ZXJSZXBsYWNlZD4ocmVuZGVyZXIpLmludHJpbnNpY1NpemUoKSk7CkBAIC0xNjEsMTggKzE2MSwx
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNv
bnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUg
PSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICAg
ICAgc3R5bGUtPnNldFRvcCh7IG9mZnNldC0+aGVpZ2h0KCksIEZpeGVkIH0pOwogICAgICAgICAg
ICAgICAgIHN0eWxlLT5zZXRMZWZ0KHsgb2Zmc2V0LT53aWR0aCgpLCBGaXhlZCB9KTsKLSAgICAg
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihl
bGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7CisgICAgICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKCpzdHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5l
cj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1
ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9
PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5k
ZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlm
IChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spCi0gICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmli
dXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7Cisg
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CiAgICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNh
cHRpb24gfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkgewotICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUo
KSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4o
ZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIu
c3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBl
OjpUYWJsZVJvd0dyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRl
ckdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCiAg
ICAgICAgICAgICB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgZGlz
cGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAgfHwgZGlzcGxheVR5cGUg
PT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJl
ciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhy
ZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFRyZWVCdWlsZGVy
OjpjcmVhdGVUYWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwg
Q29udGFpbgogICAgICAgICB0YWJsZUNoaWxkID0gdGFibGVDaGlsZC0+bmV4dFNpYmxpbmcoKTsK
ICAgICB9CiAKLSAgICBhdXRvIHRhYmxlQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+
KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBS
ZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgYXV0byB0YWJs
ZUJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94
OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVy
ZXIuc3R5bGUoKSkpOwogICAgIGFwcGVuZENoaWxkKHRhYmxlV3JhcHBlckJveCwgKnRhYmxlQm94
KTsKICAgICB3aGlsZSAodGFibGVDaGlsZCkgewogICAgICAgICBUcmVlQnVpbGRlcjo6Y3JlYXRl
U3ViVHJlZShkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGFibGVDaGlsZCksICp0YWJsZUJveCk7
CkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRz
KCkKICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBvdXRwdXQgZ2VvbWV0
cnkgd2l0aG91dCBsYXlvdXQgY29udGV4dC4KICAgICAgICAgYXV0byYgcmVuZGVyVmlldyA9ICpk
b2N1bWVudC0+cmVuZGVyVmlldygpOwogICAgICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxv
Y2sgPSBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAg
YXV0byBsYXlvdXRTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4o
KmluaXRpYWxDb250YWluaW5nQmxvY2spOworICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gbWFr
ZVVuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAg
ICAgICAgIGxheW91dFN0YXRlLT5zZXRRdWlya3NNb2RlKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5p
bkxpbWl0ZWRRdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6TGltaXRlZCA6
IChyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVp
cmtzTW9kZTo6WWVzIDogTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6Ok5vKSk7CiAgICAgICAgIGxh
eW91dFN0YXRlLT51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgc2hvd0xheW91dFRyZWUoKmluaXRp
YWxDb250YWluaW5nQmxvY2ssIGxheW91dFN0YXRlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA1MWQ3N2U0YWYxZGJkZGYwNDVhOTJjMWM4YWQzYjk5
ZWFjZWI5N2I1Li5iNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGUoRG9jdW1l
bnRMb2FkZXImIGRvY3VtZW50TG9hCiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRG
aWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7
CiB9CiAKIENvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVudEZp
bHRlcnMsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggZDBkNTRiOTdl
YWU3MjA0MjZmOTYxYzhkYWU4OTVlMjAzNjljZWRjYy4uYzRjZTVmNTUyMTcwYjNjZmM4Yjg0MWI1
OWE1MTBmZDc1YWE4M2ZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIHZhbGlkYXRl
UHJlZmxpZ2h0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlcwogICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24p
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICBpZiAo
IXJlc3VsdC0+cGFyc2UocmVzcG9uc2UpCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3Nz
T3JpZ2luTWV0aG9kKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgZXJyb3JEZXNjcmlwdGlvbikKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmln
aW5IZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpLCBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgZXJyb3JEZXNjcmlwdGlvbikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IGRlMDllNzAzOTljYzc0N2U4ODczNjk3ODM3MjRlNmRhYTlmYzc4OGIu
LjA0NTVjYWZjNTlmZjdiNmVhMWY5YTJjZDM5MzFhNjllOWY2OTQ0NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIERvY3VtZW50
TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN1YnN0aXR1dGVECiAgICAgLCBtX29yaWdpbmFsU3Vic3RpdHV0ZURhdGFXYXNWYWxpZChz
dWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2
ZXJ5VGltZXIoKnRoaXMsICZEb2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZl
cnlUaW1lckZpcmVkKQogICAgICwgbV9kYXRhTG9hZFRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2Fk
ZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdykKLSAgICAsIG1fYXBwbGljYXRpb25DYWNo
ZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQorICAg
ICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0
PigqdGhpcykpCiB7CiB9CiAKQEAgLTEzMzYsNyArMTMzNiw3IEBAIHVpbnQ2NF90IERvY3VtZW50
TG9hZGVyOjpsb2FkQXBwbGljYXRpb25NYW5pZmVzdCgpCiAgICAgaWYgKG1hbmlmZXN0VVJMLmlz
RW1wdHkoKSB8fCAhbWFuaWZlc3RVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uTWFu
aWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOworICAgIGF1
dG8gbWFuaWZlc3RMb2FkZXIgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+
KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOwogICAgIGF1dG8qIHJhd01hbmlm
ZXN0TG9hZGVyID0gbWFuaWZlc3RMb2FkZXIuZ2V0KCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0g
bmV4dENhbGxiYWNrSUQrKzsKICAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChX
VEZNb3ZlKG1hbmlmZXN0TG9hZGVyKSwgY2FsbGJhY2tJRCk7CkBAIC0xNDI3LDcgKzE0MjcsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmIGFyY2hpdmUp
CiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFy
Y2hpdmUpCiB7CiAgICAgaWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAg
IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbj4oKTsKKyAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
ID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkQWxsUmVzb3VyY2VzKGFyY2hpdmUpOwogfQogCkBAIC0x
NDM2LDcgKzE0MzYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3Vy
Y2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVz
b3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAoIW1fYXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAg
ICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRS
ZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiB9CiAKQEAgLTE5NjMsNyArMTk2Myw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKICAgICAgICAgLy8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9y
ZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdAogICAgICAgICAv
LyBpcyBub3cgaW4gYSBzdGF0ZSB3aGVyZSBzdGFydGluZyBhbiBlbXB0eSBsb2FkIHdpbGwgYmUg
aW5jb25zaXN0ZW50LiBSZXBsYWNlIGl0IHdpdGgKICAgICAgICAgLy8gYSBuZXcgQXBwbGljYXRp
b25DYWNoZUhvc3QuCi0gICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CisgICAgICAgIG1fYXBwbGljYXRp
b25DYWNoZUhvc3QgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CiAg
ICAgICAgIG1heWJlTG9hZEVtcHR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTIy
LDcgKzIxMjIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBpY29uTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGVy
PigqdGhpcywgaWNvbi51cmwpOworICAgIGF1dG8gaWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8SWNv
bkxvYWRlcj4oKnRoaXMsIGljb24udXJsKTsKICAgICBhdXRvKiByYXdJY29uTG9hZGVyID0gaWNv
bkxvYWRlci5nZXQoKTsKICAgICBtX2ljb25Mb2FkZXJzLnNldChXVEZNb3ZlKGljb25Mb2FkZXIp
LCBuZXdDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApp
bmRleCBjNDUwYzA4NzBjMGRiOTAwMmI5MDRjN2I2Y2JjZTRjOTY5MDJjNmRjLi5hY2EzNDUyOTg1
YjczMTE5YmNiMjNjNDNiYTIzZWVmYjc1YTdhMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcApAQCAtNTgyLDcgKzU4Miw3IEBAIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VD
b25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEVtcHR5UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiBkdW1teVByb2dyZXNzVHJhY2tlckNsaWVudDsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSAmZHVtbXlQcm9n
cmVzc1RyYWNrZXJDbGllbnQuZ2V0KCk7CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudD4oKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dCA9IG1ha2VVbmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKIAogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmNyZWF0ZSh7IH0sIHsgfSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJh
c2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgRW1wdHlEYXRhYmFzZVByb3ZpZGVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGUwZjQ2MTQ4ZjJkZmFhODdmNmIyNDI2
MzdkNTA4OTE4NTIwYTYwYTIuLjgzYmViMjcxN2QzMzdjMzQxYzAxNWVjZjQ2ZDRmMzczZTA4YjE1
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjcwLDEwICsyNzAs
MTAgQEAgY2xhc3MgRnJhbWVMb2FkZXI6OkZyYW1lUHJvZ3Jlc3NUcmFja2VyIHsKIEZyYW1lTG9h
ZGVyOjpGcmFtZUxvYWRlcihGcmFtZSYgZnJhbWUsIEZyYW1lTG9hZGVyQ2xpZW50JiBjbGllbnQp
CiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9w
b2xpY3lDaGVja2VyKHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQotICAg
ICwgbV9oaXN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkK
KyAgICAsIG1fcG9saWN5Q2hlY2tlcihtYWtlVW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1lKSkK
KyAgICAsIG1faGlzdG9yeShtYWtlVW5pcXVlPEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCiAg
ICAgLCBtX25vdGlmaWVyKGZyYW1lKQotICAgICwgbV9zdWJmcmFtZUxvYWRlcihzdGQ6Om1ha2Vf
dW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFtZSkpCisgICAgLCBtX3N1YmZyYW1lTG9hZGVyKG1h
a2VVbmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKICAgICAsIG1fbWl4ZWRDb250ZW50Q2hl
Y2tlcihmcmFtZSkKICAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICwg
bV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZCkKQEAgLTMyMSw3ICszMjEsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkRpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAK
ICAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRl
eHQoKTsKLSAgICBtX3Byb2dyZXNzVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9n
cmVzc1RyYWNrZXI+KG1fZnJhbWUpOworICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1
ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KGNvbnN0IFVSTCYpCkBAIC0zNDYsNyArMzQ2LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJM
JikKICAgICBtX25lZWRzQ2xlYXIgPSB0cnVlOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9
IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNr
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAg
ICBtX3Byb2dyZXNzVHJhY2tlciA9IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1f
ZnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVm
ZXJzKQpAQCAtMjY3OCw3ICsyNjc4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRy
ZW4oKQogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dz
aW5nLXRoZS13ZWIuaHRtbCNuYXZpZ2F0ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXZpZ2F0aW9u
RGlzYWJsZXI+IG5hdmlnYXRpb25EaXNhYmxlcjsKICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFt
ZSgpKQotICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmln
YXRpb25EaXNhYmxlcj4oJm1fZnJhbWUpOworICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBt
YWtlVW5pcXVlPE5hdmlnYXRpb25EaXNhYmxlcj4oJm1fZnJhbWUpOwogCiAgICAgLy8gQW55IHN1
YmZyYW1lIGluc2VydGVkIGJ5IHVubG9hZCBldmVudCBoYW5kbGVycyBleGVjdXRlZCBpbiB0aGUg
bG9vcCBiZWxvdyB3aWxsIG5vdCBnZXQgdW5sb2FkZWQKICAgICAvLyBiZWNhdXNlIHdlIGNyZWF0
ZSBhIGNvcHkgb2YgdGhlIHN1YmZyYW1lcyBsaXN0IGJlZm9yZSBsb29waW5nLiBUaGVyZWZvcmUs
IGl0IHdvdWxkIGJlIHVuc2FmZSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRl
eCA4ZTNhNDZiNTEwYTk5ODBjMmFmYjgwYTM0NDhhNDk4OWVhYzE5ZTE5Li41ZmZmNjdkOTQyZWJl
OTFlMDNhNTI5NmU2ZTlkYTI0ZGIzYjdjY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaApAQCAtOTYsNiArOTYsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGlzUmVsb2FkKEZyYW1l
TG9hZFR5cGUpOwogdXNpbmcgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPjsKIAogY2xh
c3MgRnJhbWVMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVyKTsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWRlcihG
cmFtZSYsIEZyYW1lTG9hZGVyQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKaW5kZXggY2RmNjQ5NTI2ZmUzZDFmMzMyOGQ2ZTM2YzIwMTA4N2MzMWYxNjU1Yi4uNDA4YzUz
NjQyOWUzYjA4Nzc5OGViOTdlNzY4NjRjYzk0ODY2NjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmNwcApAQCAtMTQyLDIyICsxNDIsMjIgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xp
ZW4KIHsKICAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNo
ZWRJbWFnZT4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxv
YWRJbWFnZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNv
dXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdDoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBk
b3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGlua1ByZWxvYWRTdHlsZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENT
U1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQ
cmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHls
ZVNoZWV0PihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRS
ZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRGb250
UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJl
c291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2Up
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VD
bGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwogI2Vu
ZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWVkaWFSZXNvdXJjZToKICAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWVkaWFQ
cmVsb2FkaW5nRW5hYmxlZCgpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6UmF3UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2Fj
aGVkUmF3UmVzb3VyY2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExp
bmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVz
b3VyY2U+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJl
c291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Okljb246CiAjaWYgRU5BQkxF
KFNWR19GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
RGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaApp
bmRleCAwMmNjN2QxMjBjYTRiY2ZmMzUyNWM4Zjc0OWNjNDE4MGZlNmQ0NWUyLi44YWU0YjMxYjhi
NjlmOThkMDFhZGE3ODg5OWE5OGJkMTFkZDQyNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25EaXNhYmxlci5oCkBAIC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE5hdmlnYXRpb25EaXNhYmxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkRpc2FibGVyKEZyYW1lKiBmcmFtZSkKICAg
ICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwCmluZGV4IDU1OGM3ODA0OTU3ZWM4ODI4ODE4ZWY1NjE5YmY5ODNkM2Y5
NDBhNTUuLjNjMmMyNTJhYTUxYjk2OTI5NWVjZjE0ODEyNTRhMzI0MGVjNDJhNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM5Nyw3ICsz
OTcsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoRG9jdW1l
bnQmIGluaXRpYXRpbmdEb2N1bWVudCwgZG91YmxlCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBiYWNr
L2ZvcndhcmQgbGlzdCBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4K
ICAgICBpZiAoIW1fcmVkaXJlY3QgfHwgZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkgewog
ICAgICAgICBhdXRvIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBkZWxheSA8PSAxID8gTG9ja0JhY2tG
b3J3YXJkTGlzdDo6WWVzIDogTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm87Ci0gICAgICAgIHNjaGVk
dWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVu
dCwgZGVsYXksICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9j
a0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJkTGlzdCkpOworICAgICAgICBzY2hlZHVsZSht
YWtlVW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAm
bV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZ
ZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKICAgICB9CiB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBA
QCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoRG9jdW1l
bnQmIGluaXRpYXRpbmdEb2N1bWVudCwgUwogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVuIGEg
ZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRpb24gb2YgYW5vdGhlciBmcmFtZS4KICAgICBib29sIGR1
cmluZ0xvYWQgPSAhbG9hZGVyLnN0YXRlTWFjaGluZSgpLmNvbW1pdHRlZEZpcnN0UmVhbERvY3Vt
ZW50TG9hZCgpOwogCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRMb2Nh
dGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVm
ZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1
bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1
cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9h
ZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2No
ZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJt
aXNzaW9uKQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvCiAgICAg
ICAgIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXM7CiAgICAg
fQogICAgIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1p
c3Npb24+KFdURk1vdmUoc3VibWlzc2lvbiksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xv
YWQpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihX
VEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CiB9
CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBp
bml0aWF0aW5nRG9jdW1lbnQpCkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2No
ZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2goRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkKICAg
ICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2Zy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5v
dXRnb2luZ1JlZmVycmVyKCkpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJl
ZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVudCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOwogfQog
CiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50
IHN0ZXBzKQpAQCAtNDk4LDEzICs0OTgsMTMgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKICAgICB9CiAKICAgICAvLyBJbiBh
bGwgb3RoZXIgY2FzZXMsIHNjaGVkdWxlIHRoZSBoaXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1ciBh
c3luY2hyb25vdXNseS4KLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEhp
c3RvcnlOYXZpZ2F0aW9uPihzdGVwcykpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1
bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0ZXBzKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVQYWdlQmxvY2soRG9jdW1lbnQmIG9yaWdpbkRvY3VtZW50KQogewogICAg
IGlmIChzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKLSAgICAgICAgc2NoZWR1bGUoc3RkOjpt
YWtlX3VuaXF1ZTxTY2hlZHVsZWRQYWdlQmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CisgICAgICAg
IHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkp
OwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnRpbWVyRmlyZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKaW5kZXggYTJkZGFjZTI4ZjA3YzM5
MWZlMjRlMTkxOGQyNTRhNTAwMmZhYjQ3Ni4uOTdjMjNiMTUwOTJiZjM5M2IzMWQyMGM4ZjM0ZDI1
NzcyNjMxY2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogZW51bSBjbGFzcyBO
ZXdMb2FkSW5Qcm9ncmVzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgCiBjbGFzcyBOYXZpZ2F0
aW9uU2NoZWR1bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBOYXZpZ2F0aW9uU2NoZWR1bGVyKEZyYW1lJik7CiAgICAgfk5hdmlnYXRpb25T
Y2hlZHVsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1Ry
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5k
ZXggZTE3YTlkYzcyZGUwMzdjOTYzNGJjMWNjOTNjMmMxYTc3YTg2YmZhMy4uMjgxN2E3NjY2NDU3
YjIzOTczYTY4ZmNmN2JjMDE4MGMxMmJmNWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
b2dyZXNzVHJhY2tlci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tl
cjo6aW5jcmVtZW50UHJvZ3Jlc3ModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZQogCiAgICAgYXV0byYgaXRlbSA9IG1fcHJvZ3Jlc3NJdGVtcy5hZGQoaWRlbnRpZmllciwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghaXRlbSkgewotICAgICAgICBpdGVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CisgICAg
ICAgIGl0ZW0gPSBtYWtlVW5pcXVlPFByb2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwCmluZGV4IGVhNWRiZmJhYWIyMGJmZDQzZGVhY2YxZTc3NjExYzM0MzNh
YmFiODMuLjgyNDZiYjA3MDZjZDBjMDcxZjg5OTYyODk4NmE1YmE1MWM0OGI2MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTUzNSw3ICs1
MzUsNyBAQCBib29sIFRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbiwgYm9vbAogICAgIGlmIChtX2NvbnRlbnRUeXBlID09
IFhNTCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2NoYXJzZXRQYXJzZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNlcj4oKTsKKyAgICBtX2NoYXJzZXRQYXJz
ZXIgPSBtYWtlVW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNlcj4oKTsKICAgICByZXR1cm4gY2hl
Y2tGb3JNZXRhQ2hhcnNldChkYXRhLCBsZW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGNhOWU2YzQzNDNkNzQwMTA1NTNhOWUxMGZhNjU2M2Vl
NTIzOTFiYmUuLmZhOTI2ZWEwNjJhZGZmMjA1NzBjOGEzNjkxMjQ2NzJiOWVmNTY2ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9jdWVQYXJzZXIpCi0gICAg
ICAgIG1fY3VlUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19j
YXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OworICAgICAgICBtX2N1ZVBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNf
Y2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKIAogICAgIHdoaWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAg
ICAgYXV0byBkYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBh
MTI2M2UyZjA0NTc0YjRmMGVlNzNjMDRlOGI2MmY1YzgwNzJhNzU4Li43NzUzMmY4NjEzNGUwNDNh
ZDM3ZDNmNTk5OThhNmY1N2E0MjQxNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBXb3JrZXJU
aHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVh
ZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCiAg
ICAgYXV0byBzZWN1cml0eU9yaWdpbkNvcHkgPSBzZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5
KCk7Ci0gICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgp
KTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBtYWtlVW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAg
IGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5
UG9saWN5KTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5VXBncmFkZUluc2Vj
dXJlUmVxdWVzdFN0YXRlRnJvbSgqY29udGVudFNlY3VyaXR5UG9saWN5KTsKIAotICAgIGF1dG8g
b3B0aW9uc0NvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRpb25z
LCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJl
cXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7CisgICAg
YXV0byBvcHRpb25zQ29weSA9IG1ha2VVbmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMs
IHJlcXVlc3QuaHR0cFJlZmVycmVyKCkuaXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDogcmVx
dWVzdC5odHRwUmVmZXJyZXIoKSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKIAogICAg
IC8vIEFsbCBsb2FkcyBzdGFydCBvdXQgYXMgRG9jdW1lbnQuIEluc2lkZSBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyIHdlIHVwZ3JhZGUgdGhpcyB0byBhIFdvcmtlciBsb2FkLgogICAgIEFTU0VSVChv
cHRpb25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6
OkRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZjk3ZWIwMDQyNWJkMjliM2NiNmJjYjM0NWZiZmQ2
NTIyNDA4ZjhjZS4uYmJhOTEwNDE5MTU0ZWNmNDNjMTIyZTJkOTBjZjg2NDU1OTdhOTlkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUmIG5vZGUsIFdURjo6RnVuY3Rpb248Ym9vbAogICAg
IC8vIGJ1dCB3ZSBjYW4gYXBwcm94aW1hdGUgdGhhdCBieSBjaGVja2luZyBpZiBzY3JpcHRpbmcg
aXMgZW5hYmxlZCByaWdodCBub3cuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxRdWFsaWZp
ZWROYW1lPj4gdGFnTmFtZXNUb0ZpbHRlcjsKICAgICBpZiAoZnJhbWUtPnBhZ2UoKSAmJiBmcmFt
ZS0+cGFnZSgpLT5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKSB7Ci0gICAgICAgIHRhZ05h
bWVzVG9GaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4oKTsK
KyAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9IG1ha2VVbmlxdWU8VmVjdG9yPFF1YWxpZmllZE5h
bWU+PigpOwogICAgICAgICB0YWdOYW1lc1RvRmlsdGVyLT5hcHBlbmQoSFRNTE5hbWVzOjpub3Nj
cmlwdFRhZyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAppbmRleCBmMzEyOTA3MjhmNjk5MGQ4MDA4YmEyNjQ0MDIxY2IxZDg4NWI5NDU3Li43
MGY1ODY4NDhlYWVlMjkxMjZjNGJhZTkxMDZjMTVlMjk2YTkwNzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lk
IENhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlKQogICAgICAgICBtX2ltYWdlT2JzZXJ2ZXItPmNhY2hlZEltYWdlcygpLmFkZCh0aGlzKTsK
IAogICAgIGlmIChtX2ltYWdlICYmIGlzPFNWR0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAgIG1f
c3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0
PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5p
cXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIH0KIAog
dm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGll
bnQpCkBAIC0zNTcsNyArMzU3LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNyZWF0ZUlt
YWdlKCkKIAogICAgIGlmIChtX2ltYWdlKSB7CiAgICAgICAgIGlmIChpczxTVkdJbWFnZT4oKm1f
aW1hZ2UpKQotICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAgICAg
ICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxT
VkdJbWFnZT4oKm1faW1hZ2UpKTsKIAogICAgICAgICAvLyBTZW5kIHF1ZXVlZCBjb250YWluZXIg
c2l6ZSByZXF1ZXN0cy4KICAgICAgICAgaWYgKG1faW1hZ2UtPnVzZXNDb250YWluZXJTaXplKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCmluZGV4IGJlNjE4M2FiZmE1OWQ1YzhlMTYyZmVjMWQ2NTUyNDUyM2FkZTI3OGMuLmY5YTc1
ZjM1NDUyNzY5MDJhOWU0YTVjMzViNmFjNmIxZjE1MGMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMjA4LDcgKzIwOCw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRp
cmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQo
UmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJlc3BvbnNlKSk7Ci0gICAgICAgIGl0ZXJhdGVDbGllbnRz
KENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2Ns
aWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdU
Rk1vdmUocmVxdWVzdCksIHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9u
c2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsK
KyAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92ZShyZXF1ZXN0KSwgbWFrZVVuaXF1ZTxSZXNvdXJj
ZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNwb25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVj
ZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggZTQzMGU0NDdhYzQ5NDYzNmM5ODRlNzRkNDBiOTFl
NjVjZGViYjUwYi4uMDU2N2QxZDVkZThjNmYxM2UxODY4NDRhZWQ3NTU3NWNmMTdlMTcyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01
NDYsNyArNTQ2LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIgdGhh
biBpbW1lZGlhdGVseSBzZW5kaW5nIGNhbGxiYWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90aGVy
IENhY2hlZFJlc291cmNlcywKICAgICAgICAgLy8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBh
bmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlzaCBzeW5jaHJvbm91c2x5LgogICAgICAgICBBU1NFUlQo
IW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suY29udGFpbnMoJmNsaWVudCkpOwotICAgICAgICBt
X2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50LCBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrPigqdGhpcywgY2xpZW50KSk7CisgICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJh
Y2suYWRkKCZjbGllbnQsIG1ha2VVbmlxdWU8Q2FsbGJhY2s+KCp0aGlzLCBjbGllbnQpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODQzYTlkMWY5ZDZjODVm
MTAwMGEyYzQwZjE5NjRiNDdhMmViMWM3YS4uYjM0YjhmZDM1YzEwNzdhNTQ1MmFiYjM0MzIzNjFi
NGNjM2QxMWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXUKICAgICAvLyBFbnRyeSBwb2ludCB0byBodHRwczovL2ZldGNoLnNwZWMud2hhdHdn
Lm9yZy8jbWFpbi1mZXRjaC4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBv
cmlnaW5hbFJlcXVlc3Q7CiAgICAgaWYgKENhY2hlZFJlc291cmNlOjpzaG91bGRVc2VQaW5nTG9h
ZCh0eXBlKSB8fCByZXF1ZXN0Lm9wdGlvbnMoKS5kZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykgewotICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSk7CisgICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0
PihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5j
bGVhckhUVFBSZWZlcnJlcigpOwogICAgICAgICBvcmlnaW5hbFJlcXVlc3QtPmNsZWFySFRUUE9y
aWdpbigpOwogICAgIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmVsCiAgICAgICAgIHJlc291cmNlVmFsdWUtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CiAKICAg
ICAgICAgaWYgKCFtX3ByZWxvYWRzKQotICAgICAgICAgICAgbV9wcmVsb2FkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgIG1f
cHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAg
ICAgICAgIG1fcHJlbG9hZHMtPmFkZChyZXNvdXJjZVZhbHVlLmdldCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIHJlc291cmNlOwpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2xlYXJQcmVsb2FkcyhDbGVhclByZWxvYWRzTW9kZSBtb2RlKQogICAgICAgICBB
U1NFUlQocmVzb3VyY2UpOwogICAgICAgICBpZiAobW9kZSA9PSBDbGVhclByZWxvYWRzTW9kZTo6
Q2xlYXJTcGVjdWxhdGl2ZVByZWxvYWRzICYmIHJlc291cmNlLT5pc0xpbmtQcmVsb2FkKCkpIHsK
ICAgICAgICAgICAgIGlmICghcmVtYWluaW5nTGlua1ByZWxvYWRzKQotICAgICAgICAgICAgICAg
IHJlbWFpbmluZ0xpbmtQcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2Fj
aGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMg
PSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgICAg
ICByZW1haW5pbmdMaW5rUHJlbG9hZHMtPmFkZChyZXNvdXJjZSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAppbmRleCA3MGNiMWFmYTRjZjFkM2E2ZTY0
MmE4YWU5ZGI4NDQ4Zjg0ZDE0YmQ2Li4xNDQyNTc0YzNkYjhkNWVmYWQzZGM3NTIzNzlhZmNlMDI5
N2QwZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKIGNsYXNzIENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQyM2MzZmM1MjRiZDhiNmY1NWYz
NWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2FmZmNiZWYzOTI3ODI2M2M0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC04Niw3
ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAgQVNTRVJUKHNlc3Npb25JRC5p
c1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJlc291cmNlcy5hZGQoc2Vzc2lv
bklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1h
cCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CisgICAgICAgIG1hcCA9
IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAgcmV0dXJuICptYXA7CiB9CiAK
QEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0
aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmVtb3ZlSW1h
Z2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBjYWNo
ZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBhdXRvIGNh
Y2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFn
ZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsK
KyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRt
YXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJbWFnZUNsaWVu
dCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29k
ZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmxydUxpc3RG
b3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0JgogCiAgICAgbV9hbGxSZXNv
dXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsKICAgICB3aGlsZSAobV9hbGxS
ZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAgIG1fYWxsUmVzb3VyY2VzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+KCkpOworICAgICAgICBtX2Fs
bFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxMUlVMaXN0PigpKTsKICAgICBy
ZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvUHJldmlld0xvYWRlci5oCmluZGV4IDYxOGU5NDI5NTAxN2RjM2I4MzAzNjVjMTE2
NzYxNTM4YjFkYjYyMzguLjE1MDNkNzhlM2FmNTk5NDk1NGIzM2MyYTgwODRmNGZlYTYzMDA3MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCkBAIC0zOSw2ICsz
OSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFByZXZpZXdMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdMb2FkZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3
TG9hZGVyLm1tCmluZGV4IGY2YjgyMjE3OTE2Y2FkOTViZmU5NjBiYjNlMzc4NGEyNzBhOWJhNjcu
LmM1Y2E1YzI1ZjExYjRkOGE5Y2E5M2VmYzg4OTA5OTA3ZjZiNzY2MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTg2LDcgKzg2LDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJj
ZUxvYWRlciByZXNvdXJjZVIKIAogICAgIF9yZXNvdXJjZUxvYWRlciA9IG1ha2VXZWFrUHRyKHJl
c291cmNlTG9hZGVyKTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwotICAgIF9j
b252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNw
b25zZSk7CisgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2Vs
ZiwgX3Jlc3BvbnNlKTsKICAgICBfYnVmZmVyZWREYXRhQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZyA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9s
aWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBA
IC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWls
V2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgfQogCiAgICAgX2NsaWVudC0+ZGlkUmVxdWVz
dFBhc3N3b3JkKFtzZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChjb25zdCBT
dHJpbmcmIHBhc3N3b3JkKSB7Ci0gICAgICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOworICAgICAgICBf
Y29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2Us
IHBhc3N3b3JkKTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgYXBw
ZW5kRGF0YUFycmF5Ol9idWZmZXJlZERhdGFBcnJheS5nZXQoKV07CiAgICAgICAgIFtfY29udmVy
dGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZpbmlzaGVkQXBwZW5kaW5nRGF0YV07CiAgICAgfSk7
CkBAIC0yNjgsNyArMjY4LDcgQEAgUHJldmlld0xvYWRlcjo6flByZXZpZXdMb2FkZXIoKQogc3Rk
Ojp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2FkZXI6OmNyZWF0ZShSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAg
ICBBU1NFUlQoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShyZXNwb25zZS5taW1l
VHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0xvYWRlcj4obG9h
ZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UHJldmlld0xvYWRlcj4obG9h
ZGVyLCByZXNwb25zZSk7CiB9CiAKIGJvb2wgUHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGM0NzljYTFmOWNiMDdkNGFjN2I0YjlmYjIyODUx
ZjBjOTk0YjE3MTQuLjRjY2RhYjA0YjdiM2Y1NTM0Y2VjYzJhMTllYzBhNGJjYjdhYjE3ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE4
MCw3ICsxODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29u
dHJvbGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0TWVudShFdmVudAogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnU+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29udGV4dE1lbnU+KCk7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpzaG93Q29udGV4dE1lbnUoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcAppbmRleCBmNjNkYWE3ZjYzNDcyNTU4ODczZGIzYjU4M2JjMjUxMmEx
Nzc1MjdhLi5jZGM3NGY2ZGUwOWU5M2RlOWFhYjkyMzU2ZWYyZmJmNDRkZDJkMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtODgsNyArODgsNyBAQCBj
bGFzcyBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5
IHsKIAogYm9vbCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIHsKLSAg
ICBhdXRvIHJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgIGF1dG8gcmVn
aW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBGcmFtZSog
ZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUt
PmRvY3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNDhjMDcz
NDc3MGViMTEwYzFjNWQ4NDUzZGQwODc5OTJlNTY0OWExZS4uZDIwYjk4YzQxNWVlYzgyNzZmODkw
MGYyNGM2N2E5N2YxMDFkMGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMzg1LDcgKzM4NSw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFt
ZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3BlbmRpbmdNb21lbnR1bVdoZWVsRXZlbnRz
VGltZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmNsZWFyTGF0Y2hlZFN0YXRlKQogI2VuZGlmCi0g
ICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b3Njcm9sbENv
bnRyb2xsZXI+KCkpCisgICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKG1ha2VVbmlxdWU8QXV0
b3Njcm9sbENvbnRyb2xsZXI+KCkpCiAjaWYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAg
ICwgbV9mYWtlTW91c2VNb3ZlRXZlbnRUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1v
dXNlTW92ZUV2ZW50VGltZXJGaXJlZCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IDIzMzcyOTQyYjM3NjNkOTI5M2QyNjViMzVhY2MxNTI1ZTM0Y2MwMGYuLmE1ZTVlZGUw
YjRiNzQ3ZTQ3OTRkYzc5NDA2YWVmY2NiYjM4NWRkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTEyOTEsNyArMTI5MSw3IEBAIFJlbmRlckJveCogRnJhbWVWaWV3OjplbWJlZGRl
ZENvbnRlbnRCb3goKSBjb25zdAogdm9pZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9V
cGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogewogICAgIGlmICgh
bV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkKLSAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1Vw
ZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3Qq
Pj4oKTsKKyAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IG1ha2VVbmlxdWU8TGlz
dEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKIAogICAgIEhUTUxGcmFtZU93bmVy
RWxlbWVudCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZyYW1lT3duZXJFbGVtZW50KCk7CiAg
ICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVt
ZW50PihlbGVtZW50KSkgewpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFk
ZFNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIGJvb2wgaGFk
U2xvd1JlcGFpbnRPYmplY3RzID0gaGFzU2xvd1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBpZiAo
IW1fc2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CisgICAgICAg
IG1fc2xvd1JlcGFpbnRPYmplY3RzID0gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVs
ZW1lbnQqPj4oKTsKIAogICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzLT5hZGQoJnJlbmRlcmVyKTsK
ICAgICBpZiAoaGFkU2xvd1JlcGFpbnRPYmplY3RzKQpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyKQogdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogb2JqZWN0KQogewogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0cykKLSAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKKyAgICAgICAgbV92
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdFNldD4oKTsKIAogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+
Y29udGFpbnMob2JqZWN0KSkgewogICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
LT5hZGQob2JqZWN0KTsKQEAgLTQ4NjYsNyArNDg2Niw3IEBAIFN0cmluZyBGcmFtZVZpZXc6OnRy
YWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6OmFkZFNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICBpZiAoIW1f
c2Nyb2xsYWJsZUFyZWFzKQotICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0g
bWFrZVVuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKICAgICAKICAgICBpZiAobV9zY3JvbGxh
YmxlQXJlYXMtPmFkZChzY3JvbGxhYmxlQXJlYSkuaXNOZXdFbnRyeSkgewogICAgICAgICBzY3Jv
bGxhYmxlQXJlYVNldENoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
d0xheW91dENvbnRleHQuY3BwCmluZGV4IDczMDk4ZjFmYTFmMTA3MWU2MWZjZDNhYTY1MzUzMzBk
M2U4OWJmNTkuLmU4NThjOTJjYmY4YzMxYTMyMWJmMzgwMDk3YWJhNTVmMTU3MDAwYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtNTk2
LDE0ICs1OTYsMTQgQEAgdm9pZCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3Rh
dGUoUmVuZGVyRWxlbWVudCYgcm9vdCkKICAgICBBU1NFUlQoIW1fcGFpbnRPZmZzZXRDYWNoZURp
c2FibGVDb3VudCk7CiAgICAgQVNTRVJUKCFsYXlvdXRTdGF0ZSgpKTsKIAotICAgIG1fbGF5b3V0
U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9v
dCkpOworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlv
dXRTdGF0ZT4ocm9vdCkpOwogfQogCiBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hM
YXlvdXRTdGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZChSZW5kZXJCbG9ja0Zsb3cmIGxheW91dFJv
b3QpCiB7CiAgICAgaWYgKGxheW91dFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0
U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRlOjpJc1BhZ2luYXRlZDo6WWVzKSk7
CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0
YXRlPihsYXlvdXRSb290LCBSZW5kZXJMYXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOwog
ICAgIHJldHVybiB0cnVlOwogfQogICAgIApAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgRnJhbWVW
aWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKFJlbmRlckJveCYgcmVuZGVyZXIsIGNv
bnN0IExheW91dFNpCiAgICAgYXV0byogbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgp
OwogICAgIGlmICghbGF5b3V0U3RhdGUgfHwgIW5lZWRzRnVsbFJlcGFpbnQoKSB8fCBsYXlvdXRT
dGF0ZS0+aXNQYWdpbmF0ZWQoKSB8fCByZW5kZXJlci5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygp
CiAgICAgICAgIHx8IGxheW91dFN0YXRlLT5saW5lR3JpZCgpIHx8IChyZW5kZXJlci5zdHlsZSgp
LmxpbmVHcmlkKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpICYmIHJlbmRlcmVy
LmlzUmVuZGVyQmxvY2tGbG93KCkpKSB7Ci0gICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNr
LCByZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOworICAg
ICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3Rh
dGU+KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFn
ZUhlaWdodENoYW5nZWQpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCmluZGV4IDhjM2M1MmEw
NzM1MjI3OTBjZDBjNGE2MGRjMDVlNjE0MTJjMTlhZTkuLjUyMjdlNDJhYzA5NmNlNjkyNWQ3ZWM2
YTE4ZTUxOTI1ZDJlMDA2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApA
QCAtMTQ5LDcgKzE0OSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6
OnNlcnZpY2VXb3JrZXIoKQogewogICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkpOwogICAgIGlmICghbV9zZXJ2
aWNlV29ya2VyQ29udGFpbmVyKQotICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgKnRoaXMpOworICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBtYWtl
VW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
KnRoaXMpOwogICAgIHJldHVybiAqbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCBlZGE3YzVmYTVkNjQ3OWJhNzEwOTAyMGI1MjgzMmNlMjYxYmNkN2U5
Li4yOWEyYWY3NGJjYWRkNmIzMGM2YWZmNjBlYzRlMzFkMGI0NzJiZjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTIxMSwyNiArMjExLDI2IEBAIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU6OkZsYWc+IHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpCiB9CiAKIFBhZ2U6
OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2hy
b21lKHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNo
cm9tZUNsaWVudCkpCi0gICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQorICAgIDogbV9jaHJvbWUobWFrZVVuaXF1ZTxDaHJv
bWU+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKKyAgICAsIG1fZHJh
Z0NhcmV0Q29udHJvbGxlcihtYWtlVW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50
KSkKKyAgICAsIG1fZHJhZ0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRo
aXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkKICNlbmRpZgotICAgICwgbV9mb2N1
c0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdl
SW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCisgICAgLCBtX2ZvY3VzQ29udHJvbGxlcihtYWtlVW5p
cXVlPEZvY3VzQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVy
KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25m
aWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKKyAgICAsIG1fY29udGV4dE1lbnVDb250cm9s
bGVyKG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1
cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKICNlbmRpZgotICAgICwgbV91c2VySW5wdXRCcmlk
Z2Uoc3RkOjptYWtlX3VuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKLSAgICAsIG1faW5z
cGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0
aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV91c2VySW5w
dXRCcmlkZ2UobWFrZVVuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKKyAgICAsIG1faW5z
cGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBw
YWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQpKQogI2lmIEVOQUJMRShQT0lOVEVSX0VW
RU5UUykKLSAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
UG9pbnRlckNhcHR1cmVDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJDYXB0dXJl
Q29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQog
I2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICAsIG1fcG9pbnRlckxvY2tDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCisg
ICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJMb2NrQ29udHJv
bGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NldHRpbmdzKFNldHRpbmdzOjpjcmVhdGUo
dGhpcykpCi0gICAgLCBtX3Byb2dyZXNzKHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NUcmFja2Vy
PigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKLSAgICAsIG1fYmFj
a0ZvcndhcmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVy
PigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQor
ICAgICwgbV9wcm9ncmVzcyhtYWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1
cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCisgICAgLCBtX2JhY2tGb3J3YXJkQ29udHJv
bGxlcihtYWtlVW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKICAgICAsIG1fbWFpbkZyYW1lKEZy
YW1lOjpjcmVhdGUodGhpcywgbnVsbHB0ciwgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50
Rm9yTWFpbkZyYW1lKSkKICAgICAsIG1fZWRpdG9yQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24uZWRpdG9yQ2xpZW50KSkKICAgICAsIG1fcGx1Z0luQ2xpZW50KHBhZ2VDb25maWd1cmF0
aW9uLnBsdWdJbkNsaWVudCkKQEAgLTI1MCw5ICsyNTAsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2RvbVRpbWVyQWxpZ25tZW50
SW50ZXJ2YWxJbmNyZWFzZVRpbWVyKCp0aGlzLCAmUGFnZTo6ZG9tVGltZXJBbGlnbm1lbnRJbnRl
cnZhbEluY3JlYXNlVGltZXJGaXJlZCkKICAgICAsIG1fYWN0aXZpdHlTdGF0ZShwYWdlSW5pdGlh
bEFjdGl2aXR5U3RhdGUoKSkKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDb25m
aWd1cmF0aW9uLmFsdGVybmF0aXZlVGV4dENsaWVudCkKLSAgICAsIG1fY29uc29sZUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50PigqdGhpcykpCisgICAgLCBtX2NvbnNv
bGVDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRGVidWdn
YWJsZShtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1f
c29ja2V0UHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlcikp
CiAgICAgLCBtX2Nvb2tpZUphcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvb2tpZUphcikp
CkBAIC0yNjgsMTYgKzI2OCwxNiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGlt
ZXIoKnRoaXMsICZQYWdlOjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyRmlyZWQp
CiAjZW5kaWYKICAgICAsIG1faXNVdGlsaXR5UGFnZShpc1V0aWxpdHlQYWdlQ2hyb21lQ2xpZW50
KGNocm9tZSgpLmNsaWVudCgpKSkKLSAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0
eVBhZ2UoKSA/IG51bGxwdHIgOiBzdGQ6Om1ha2VfdW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4o
KnRoaXMpKQotICAgICwgbV9sb3dQb3dlck1vZGVOb3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPExv
d1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsg
aGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQotICAg
ICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmcoc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dp
bmc+KCp0aGlzKSkKKyAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/
IG51bGxwdHIgOiBtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQorICAgICwg
bV9sb3dQb3dlck1vZGVOb3RpZmllcihtYWtlVW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihb
dGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hh
bmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQorICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dp
bmcobWFrZVVuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+KCp0aGlzKSkKICNpZiBQTEFURk9STShN
QUMpICYmIChFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSkKLSAgICAsIG1fc2VydmljZXNPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXIo
V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGFnZU92ZXJsYXlDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisg
ICAgLCBtX3BhZ2VPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q29udHJv
bGxlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgLCBtX3BheW1lbnRDb29y
ZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1
cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCkpCisgICAgLCBtX3BheW1lbnRDb29yZGlu
YXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBh
eW1lbnRDb29yZGluYXRvckNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
ICAgICwgbV9hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50KSkpCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBQYWdlOjppbml0R3Jv
dXAoKQogewogICAgIEFTU0VSVCghbV9zaW5nbGVQYWdlR3JvdXApOwogICAgIEFTU0VSVCghbV9n
cm91cCk7Ci0gICAgbV9zaW5nbGVQYWdlR3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VHcm91
cD4oKnRoaXMpOworICAgIG1fc2luZ2xlUGFnZUdyb3VwID0gbWFrZVVuaXF1ZTxQYWdlR3JvdXA+
KCp0aGlzKTsKICAgICBtX2dyb3VwID0gbV9zaW5nbGVQYWdlR3JvdXAuZ2V0KCk7CiB9CiAKQEAg
LTI2NTQsNyArMjY1NCw3IEBAIHZvaWQgUGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNp
YmxlKGJvb2wgdmlzaWJsZSkKICAgICB9CiAKICAgICBpZiAoIW1fcmVzb3VyY2VVc2FnZU92ZXJs
YXkgJiYgbV9zZXR0aW5ncy0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkKLSAgICAg
ICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VVc2Fn
ZU92ZXJsYXk+KCp0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IG1ha2VV
bmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+KCp0aGlzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCmluZGV4IGQwMzJmY2Y3MGY4NmE2M2Fh
ZGQxMWYyMjdmYTk2ZGQwNjNjMWVhNjEuLjYzZjY1NmYxYTVhYjhlMjZmYjk1NWU2MzRlNDVhOWE4
YTEyZmRkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBA
IC0xNjAsOSArMTYwLDkgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKIAogICAgIGlmIChjYWxs
U3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0
LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAg
ICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2Us
IE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VO
b25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVz
c2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3Rl
ZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dl
c3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0
ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgYWRkTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KTsKIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdl
V2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogICAgIFN0
cmluZyBtZXNzYWdlVGV4dDsKICAgICBib29sIGdvdE1lc3NhZ2UgPSBhcmd1bWVudHMtPmdldEZp
cnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7CiAKLSAgICBhdXRvIG1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYo
KSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOwogCiAgICAgU3RyaW5nIHVybCA9IG1l
c3NhZ2UtPnVybCgpOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5lKCk7
CkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChkYXRhVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkTWVzc2Fn
ZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
IkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOwor
ICAgICAgICAgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUo
YXJndW1lbnRzKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAt
Mzg5LDcgKzM4OSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgZm9yIChzaXplX3Qg
aSA9ICghdGFyZ2V0ID8gMCA6IDEpOyBpIDwgYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsr
aSkKICAgICAgICAgYWRqdXN0ZWRBcmd1bWVudHMuYXBwZW5kKHsgc3RhdGUtPnZtKCksIGFyZ3Vt
ZW50cy0+YXJndW1lbnRBdChpKSB9KTsKICAgICBhcmd1bWVudHMgPSBTY3JpcHRBcmd1bWVudHM6
OmNyZWF0ZSgqc3RhdGUsIFdURk1vdmUoYWRqdXN0ZWRBcmd1bWVudHMpKTsKLSAgICBhZGRNZXNz
YWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywg
ZGF0YVVSTCwgV1RGTW92ZShhcmd1bWVudHMpKSk7CisgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJn
dW1lbnRzKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VH
cm91cC5jcHAKaW5kZXggOTE5MzYwNDVjMmZhZjc2Y2FjNWUyYzY5ZTYyMzNmMmNlMzBiZjliMS4u
MTI4YzE4ZjE0YjkwOGU3MWJjN2NlZmIzOTYyMDdmZWJiYzAwZjJhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUdyb3VwLmNwcApAQCAtMTE2LDkgKzExNiw5IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMm
IFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVuY2VzKCkKIHsKICAgICBpZiAoIW1fY2FwdGlvblBy
ZWZlcmVuY2VzKSB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJ
VFlfRlJBTUVXT1JLKQotICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKKyAgICAgICAgbV9j
YXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGPigqdGhpcyk7CiAjZWxzZQotICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRoaXMpOworICAgICAgICBtX2Nh
cHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRo
aXMpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4
IDZjMTViM2ZhYTgzZjVjYWUwZDkxNzZkMDBjOGFmYzE1Yjc2NjkzMTYuLmNiYmFjMjFkNDAwNWIx
YjBlMTE4MDIyZjdhYTE0YThiY2ZlZDg1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2Uu
Y3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdC
dWZmZXJGdWxsVGltZXJGaXJlZCgpCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFy
ayhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAg
ICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsK
KyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IG1fdXNlclRpbWluZy0+bWFyayhtYXJrTmFtZSk7CiAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTI3OSwxNCArMjc5LDE0IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB2b2lkIFBl
cmZvcm1hbmNlOjpjbGVhck1hcmtzKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYg
KCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8
VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVz
ZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmctPmNsZWFyTWFya3MobWFya05hbWUp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJp
bmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcmIHN0YXJ0TWFyaywgY29uc3QgU3RyaW5nJiBl
bmRNYXJrKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGlt
aW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9
IG1fdXNlclRpbWluZy0+bWVhc3VyZShtZWFzdXJlTmFtZSwgc3RhcnRNYXJrLCBlbmRNYXJrKTsK
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMzAwLDcgKzMwMCw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5h
bWUsIGNvbnN0IFN0cmluZyYKIHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMoY29uc3Qg
U3RyaW5nJiBtZWFzdXJlTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAg
bV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAg
ICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1f
dXNlclRpbWluZy0+Y2xlYXJNZWFzdXJlcyhtZWFzdXJlTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCmluZGV4IDk5YTQzNzJlNTRkODQwMjliYWZiZjli
OGY3YTU4MjAwMWZhNjNhMWIuLjE2YmNmMDQzOTBhMTcwZjNkZTc4MjY1MGMyZmMyNTIyY2Y1MDU0
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaApAQCAtMzIsNiAr
MzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUHJl
d2FybUluZm9ybWF0aW9uIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24gZm9udENhY2hlOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDAzNzBmMjg4N2Y2NWI1N2IzY2Q4OTdlNGZjNjll
OGEyZWZiODc1ZGYuLjQ0MjkxYWVmYTM3YzhhN2E4NDQ4YmVjMzlhZWVhYzI0MzllYzQ3NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lk
IFByaW50Q29udGV4dDo6b3V0cHV0TGlua2VkRGVzdGluYXRpb25zKEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBEbwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbGlua2Vk
RGVzdGluYXRpb25zKSB7Ci0gICAgICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4oKTsKKyAgICAgICAgbV9saW5r
ZWREZXN0aW5hdGlvbnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxlbWVudD4+
PigpOwogICAgICAgICBjb2xsZWN0TGlua2VkRGVzdGluYXRpb25zKGRvY3VtZW50KTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNw
cAppbmRleCA1NmEwMTFjNGNlZTk5Nzg5OTAxZmFkMzYzMDJiZTEwYzM0NTY2NTI3Li4zYjg4MWRm
YmIxNzE3ZjRlNDExYTZjNTM0NDU5NWZiZDNhYjQzMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGJv
b2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjppc1NjaGVkdWxlZCgpIGNvbnN0CiB2b2lkIFJl
bmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAg
IEFTU0VSVCghaXNTY2hlZHVsZWQoKSk7Ci0gICAgbV9yZWZyZXNoVGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJl
ZnJlc2hGaXJlZCk7CisgICAgbV9yZWZyZXNoVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhp
cywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CiAgICAg
bV9yZWZyZXNoVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCmluZGV4IGZhZGU2MmZjNzg3ZWU0
ODk3OWFmNmRkODI2NjI3Nzk4MDRkMzc1MTcuLjZmMDYwODE3ODI2ZWM1NmM2ZWU4YTVmOGNkMzk0
NGVjMmQ0MTkwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXIKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcj4gY3JlYXRlKFBhZ2UmIHBhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+KHBhZ2UpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+KHBhZ2UpOwogICAgIH0KIAog
ICAgIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcihQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6
ZU9ic2VydmVyLmgKaW5kZXggOTViMWM4YjViZTgzZDg5YjI0OTc5ZWFlZDliOWQ0ZTkwZDNmNGY4
Ny4uZWVlYmY5YjllNjFiZDU4OGZkM2JhOTlmYWIxNTAxOTFjYzhmNjcwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEVsZW1lbnQ7CiAKIHN0cnVjdCBSZXNpemVPYnNlcnZlckRhdGEgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBWZWN0b3I8V2Vha1B0cjxSZXNpemVPYnNl
cnZlcj4+IG9ic2VydmVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAKaW5kZXggNDIzNDE4MjgwZWEyZWUzYzliZmRmYzkxY2QxMjdiOTY4ZWIxZTFiZi4uMGRlYjA2
NDE0OGY5NzI2Y2QzOGI0MTAwNWQ1MjI5NzI2MGMxYzY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291
cmNlTwogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CiAgICAg
T3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRk
KHNvdXJjZVN0cmluZywgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5BY2Nl
c3NXaGl0ZUxpc3Q+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5p
cXVlPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4oKTsKIAogICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlz
dCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgbGlzdC0+YXBwZW5k
KE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWlu
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1
YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5B
Y2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzcykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5nc0Jhc2UuY3BwCmluZGV4IGI2ODQ4OTZmMzk4ODQ2MjU0YTE3OTdhZGNkZWQ2NjY2MDVl
ODVkNWMuLjI3ZWVhNmMwYWI5MzhlYmM4Zjk2NWRhY2I4MjAzMTE0NDMxNjBiOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0
IFNlY29uZHMgbGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgPSAyNTBfbXM7CiAKIFNldHRpbmdzQmFz
ZTo6U2V0dGluZ3NCYXNlKFBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UobnVsbHB0cikKLSAgICAs
IG1fZm9udEdlbmVyaWNGYW1pbGllcyhzdGQ6Om1ha2VfdW5pcXVlPEZvbnRHZW5lcmljRmFtaWxp
ZXM+KCkpCisgICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMobWFrZVVuaXF1ZTxGb250R2VuZXJp
Y0ZhbWlsaWVzPigpKQogICAgICwgbV9sYXlvdXRJbnRlcnZhbChsYXlvdXRTY2hlZHVsZVRocmVz
aG9sZCkKICAgICAsIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWwoRE9NVGltZXI6OmRlZmF1bHRN
aW5pbXVtSW50ZXJ2YWwoKSkKICAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcigq
dGhpcywgJlNldHRpbmdzQmFzZTo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRleCA1NTg0NDM0MDc4MzQ2ZmI5YjU3
YTZlYTU5YWZjZTI3YTYyNDBiNTVhLi4zYzNkNDllMDU4YWIxMzE3NDdlYjQ5YmIwYzkzYTBmZDI5
NDUxOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApAQCAtMzQsNiAr
MzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdXNwZW5kYWJsZVRpbWVyIDog
cHJpdmF0ZSBUaW1lckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFN1c3BlbmRhYmxlVGltZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgflN1c3BlbmRhYmxlVGltZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRl
eCBiOWNlOThjYzZjYTVjMjQ1NmNkYjk0ZjVkYzQxYjRkMmI1MGU5OGY2Li42NTIzMTFkN2E1NWY1
NTA3YTA1YWE0M2I2MmM4MDIwODcyMmRiYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgVXNlckNvbnRl
bnRDb250cm9sbGVyOjpmb3JFYWNoVXNlck1lc3NhZ2VIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoY29u
c3QgVXNlck1lCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0PiB1c2VyU2Ny
aXB0KQogewotICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUo
JndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigp
OyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJT
Y3JpcHRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPFVzZXJTY3JpcHRW
ZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5k
KFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBVc2Vy
Q29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRzKERPTVdyYXBwZXJXb3JsZCYgd29y
bGQpCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChET01X
cmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJT
dHlsZVNoZWV0LCBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAg
YXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3Js
ZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7
IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3Vz
ZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2Vy
U3R5bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHN0eWxlU2hlZXRz
SW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIAogICAgIGlmIChpbmpl
Y3Rpb25UaW1lID09IEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKaW5kZXggZjI1OWFlYjFhMGE5ZTVjZTdh
MTM0ZjBkMTI2OWVjMzE0YzlhOWMzMS4uMzA0ZDk0YTc1YmYzNjFkOGRkNDZmNmFmZmFmZTMxYzNl
ZjgyYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVy
LmNwcApAQCAtNDMsOSArNDMsOSBAQCBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6On5XaGVlbEV2ZW50
RGVsdGFGaWx0ZXIoKSA9IGRlZmF1bHQ7CiBzdGQ6OnVuaXF1ZV9wdHI8V2hlZWxFdmVudERlbHRh
RmlsdGVyPiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdoZWVsRXZlbnREZWx0YUZpbHRlck1h
Yz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7
CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRh
RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmls
dGVyPigpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMTQ0NjYzY2FlOTU5Nzlj
ZmNjN2M0YTIyNDJlMWQxNjFkNjEwMjkyNS4uMTNjMzFmNTc2NGI3YjIyNGEyYjdlYTU1YWUzM2E2
YjM5ODZiOTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIENT
U0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphbmltYXRpb25XaWxsQmVSZW1vdmVkKEFuaW1h
dGlvbkJhc2UmIGFuaW1hdAogfQogCiBDU1NBbmltYXRpb25Db250cm9sbGVyOjpDU1NBbmltYXRp
b25Db250cm9sbGVyKEZyYW1lJiBmcmFtZSkKLSAgICA6IG1fZGF0YShzdGQ6Om1ha2VfdW5pcXVl
PENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPihmcmFtZSkpCisgICAgOiBtX2RhdGEobWFr
ZVVuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKaW5kZXggNzRlZWRjOTk2NmU5ZjgxYWNiOTk2Y2YzNzY5ODNkYWI2ODU1NDBjNi4u
YmFlYjI0NzY1NzE2NzM3Yjg0YTFjYzhmMTlkZTAxNzNmMzY3ZTk5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApA
QCAtMTE3LDkgKzExNyw5IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0Rh
dGE+IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpCiB7CiAgICAgQVNTRVJU
KGZyb20gJiYgdG8pOwogICAgIGlmIChmcm9tLT5zdHlsZSgpICE9IHRvLT5zdHlsZSgpKQotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqdG8pOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqdG8pOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9u
KCksIHByb2dyZXNzKSwKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChm
cm9tLT5sb2NhdGlvbigpLCB0by0+bG9jYXRpb24oKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVu
ZChmcm9tLT5yYWRpdXMoKSwgdG8tPnJhZGl1cygpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5k
KGZyb20tPnNwcmVhZCgpLCB0by0+c3ByZWFkKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmRG
dW5jKGFuaW0sIGZyb20tPnN0eWxlKCksIHRvLT5zdHlsZSgpLCBwcm9ncmVzcyksCkBAIC05NzQs
MTUgKzk3NCwxNSBAQCBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvciA6
IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlCiAgICAgUHJvcGVydHlXcmFwcGVy
VmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBDb2xvciYgKFJl
bmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlciko
Y29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0
ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29u
c3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3Ap
Ci0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29s
b3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0
ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIs
IHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5
V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVk
V3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0
dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAgICAgfQogICAgIFByb3BlcnR5V3JhcHBlclZp
c2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgTWF5YmVJbnZhbGlkQ29sb3JU
YWcsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJl
bmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpLAogICAgICAgICBjb25zdCBDb2xvciYg
KFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6
Oip2aXNpdGVkU2V0dGVyKShjb25zdCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3Bl
cnR5V3JhcHBlckJhc2UocHJvcCkKLSAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1
ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIp
KQotICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdy
YXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRl
cikpCisgICAgICAgICwgbV93cmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJ
bnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRX
cmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3As
IHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgYm9vbCBl
cXVhbHMoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKSBjb25zdCBv
dmVycmlkZQpAQCAtMTIyOSwxOSArMTIyOSwxOSBAQCBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlX
cmFwcGVyIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewogICAgICAgICBz
d2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAg
ICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5k
WE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsK
KyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxs
TGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3Np
dGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9y
aWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6Ci0gICAg
ICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
bExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp5UG9z
aXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFlP
cmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRZT3JpZ2luLCBFZGdlOjpCb3R0b20pOwor
ICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxM
YXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0
aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3Jp
Z2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQ
cm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBl
cjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5
ZXI6OnNldFNpemVMZW5ndGgpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBw
ZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJv
cGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2U6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZG
aWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSk7CisgICAgICAgICAgICBtX2Zp
bGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVBy
b3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpz
ZXRJbWFnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTc3MCw3ICsxNzcwLDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFw
cGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAoKQogICAgICAgICAgICAgbG9u
Z2hhbmRXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQobV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJ
bmRleF0uZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4o
cHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdyYXBwZXJzKSkpOworICAgICAgICBtX3Byb3Bl
cnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8U2hvcnRoYW5kUHJvcGVydHlX
cmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3ZlKGxvbmdoYW5kV3JhcHBlcnMpKSk7CiAgICAgICAg
IGluZGV4RnJvbVByb3BlcnR5SUQocHJvcGVydHlJRCkgPSBhbmltYXRhYmxlTG9uZ2hhbmRQcm9w
ZXJ0aWVzQ291bnQgKyBpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDcwNDdlODNkZTc4NWRiODFiNmQ5OTBh
OTQ4MzdiYTcxZDcyODI5YTAuLjhmMGY2YmY1M2IwM2UwOGY3MDMzMTY2ZWI4Yzc0ZDZiZjk3Mjgz
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpk
aWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiB2b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZihjb25zdCBTZWN1cml0eU9y
aWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgbV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1
cml0eU9yaWdpbi5wcm90b2NvbCgpOwotICAgIG1fc2VsZlNvdXJjZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9j
b2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0
cmluZygpLCBmYWxzZSwgZmFsc2UpOworICAgIG1fc2VsZlNvdXJjZSA9IG1ha2VVbmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNl
Y3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygp
LCBmYWxzZSwgZmFsc2UpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQ
b2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaAppbmRleCBhOGYx
ZDRmMGJkZTE0ZjE0Yjg4YWEzOTQwZWRkOGM4OTYyNjFlM2RlLi5iYmQ5MTg5ZTI0ODM0ZGFjYzhk
N2JhZTE1Y2M1ODE2Y2EzMjBjZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaApAQCAtMzMsNiArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiBkaXJl
Y3RpdmVMaXN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
ICAgIDogbV9uYW1lKG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCmluZGV4IGRkYmQ4
Y2RlMjc4MGU5MmRiYTIwZTBhYmQ5OWNmMDQ5ODQzZjRjNGQuLmMwMTU2ZGRmMDFjOTQ3ZTUwNGI1
NjlkMGE0MTE2OThjNTU4ZjNlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Q29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdChDb250ZW50U2UKIAogc3RkOjp1bmlxdWVfcHRy
PENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29u
c3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUgdHlwZSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tIGZyb20pCiB7Ci0gICAgYXV0byBkaXJl
Y3RpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0Pihwb2xpY3ksIHR5cGUpOworICAgIGF1dG8gZGlyZWN0aXZlcyA9IG1ha2VVbmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsKICAgICBkaXJl
Y3RpdmVzLT5wYXJzZShoZWFkZXIsIGZyb20pOwogCiAgICAgaWYgKCFjaGVja0V2YWwoZGlyZWN0
aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRpcmVjdGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKSkp
IHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgogICAgICAgICBt
X3BvbGljeS5yZXBvcnREdXBsaWNhdGVEaXJlY3RpdmUobmFtZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgZGlyZWN0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1BEaXJlY3RpdmVUeXBl
PigqdGhpcywgbmFtZSwgdmFsdWUpOworICAgIGRpcmVjdGl2ZSA9IG1ha2VVbmlxdWU8Q1NQRGly
ZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphcHBseVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAppbmRleCA0ZmRm
NzU2YzAyMTk4ODUzM2IyZjEyNTVjOTFhNGVjYzkxNDg0ZmE0Li4yNmMyMTJiNDgyNGEwNDNjMjUz
YWYyNTc2NGUwYjlhMzgxMzA4YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xp
bnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBA
QCBjbGFzcyBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmluYWwgOiBwdWJsaWMgR3JhcGhp
Y3NMYXllckNsaWVudCB7CiAKIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5p
dGlhbGl6ZSgpCiB7Ci0gICAgbV9vdmVybGF5UGFpbnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVz
b3VyY2VVc2FnZU92ZXJsYXlQYWludGVyPigqdGhpcyk7CisgICAgbV9vdmVybGF5UGFpbnRlciA9
IG1ha2VVbmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyPigqdGhpcyk7CiAgICAgbV9w
YWludExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG92ZXJsYXkoKS5wYWdlKCktPmNocm9t
ZSgpLmNsaWVudCgpLmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICptX292ZXJsYXlQYWludGVyKTsK
ICAgICBtX3BhaW50TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBt
X3BhaW50TGF5ZXItPnNldFNpemUoeyBub3JtYWxXaWR0aCwgbm9ybWFsSGVpZ2h0IH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggZDdhZGZmZDcyZjlmYThmZTk3YWZjZGEwNzE4
ZDgzYzZlMDkwODUwYy4uMDg2M2FkMjY3MjVkNjU1NDc1MmI3YWMyMTQ4ZWVkMWM2ZGZjMjNiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUGFn
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxT
Y2hlZHVsZVBhaXI+JiYgcGFpcikKIHsKICAgICBpZiAoIW1fc2NoZWR1bGVkUnVuTG9vcFBhaXJz
KQotICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2No
ZWR1bGVQYWlySGFzaFNldD4oKTsKKyAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBt
YWtlVW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5Mb29w
UGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFp
bkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKaW5k
ZXggZGNkZDk1MDQ4YmQ5NThhYTc0NDBhMGZjM2Q5YmNlN2RmMmY1NDgwZi4uNjQ3NWNlNWViYzkw
N2FlMTg4MGFmMTcxYzA3MzZmZjNlY2I1MDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIFRl
eHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNzYWxBbmltYXRpb24gOiB1aW50OF90IHsKICNpZiBQTEFU
Rk9STShNQUMpCiAKIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3cgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRJbmRpY2F0b3JXaW5k
b3cpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDMwNmNmZWQxOWNlNmQw
MGI2MmE4NTI0OTcwMDI4YjgwNDVmYWQ4MjMuLjAwYWYzOTQ3OGRjNzVmNzAyOWMyNDg0NTRlZjAx
YWIwYzZjN2QxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC01OSw3ICs1OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IoUGFnZSogcGFnZSkKICAgICA6IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBh
Z2UpCiAgICAgLCBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyKCp0aGlzLCAmQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xs
VGltZXJGaXJlZCkKLSAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkKKyAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKG1h
a2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRl
eCA2M2JkOTYzOGI2M2ExYTExY2E0MGYzNjcyMTI5ZjcxNDEwYzZmZjJlLi4zYWI2NDA2ODI2NGM1
MDQwOGJhYjRlZTM4ZDJjY2Q0YTY0MWM3ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtMzcsNiArMzcsNyBA
QCBzdHJ1Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2UgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0
cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICBWZWN0b3I8VD4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIFZlY3Rv
cjxUPiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAppbmRl
eCA3NjQwZDU1ZDk2YTNmMDk1OWI5MzFlZjA0MzNlYzE1ZmEyMDdkYmQ0Li5jODkwZjllYmEwMDRj
YTg3ODAxNDFiODVjZWVlMDA1NTYyZTJlNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgRmxvYXRTaXplIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0
aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3
cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRp
YWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxl
ZChib29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaAppbmRleCBiZTk5ZDBlZTZhM2YwNzg5ZmM0ZDdk
YzY5Mjg4NWI1MjQwMDQzODAyLi4yMWMzMTFjZDg5Yjc5NDA4NGE4NDkwZDVmYzliYTU1YTkzYjlh
ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBGbG9h
dFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwogCiBjbGFzcyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNl
dCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bFZlbG9jaXR5KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVs
b2NpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5jcHAKaW5kZXggOTY4MmQyYzFiY2VlMzc1NzEzYzM0NmQzZTMzY2Q0ZGMxMzVh
ZmM3OC4uYmU1N2M5Yjg2OWQwY2M1MjM4NmIwMDQ2YTUwN2QzNGM4NDBjODE2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVuZENoaWxk
KFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+JiYgY2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0
UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVu
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+Pigp
OworICAgICAgICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGlu
Z1N0YXRlTm9kZT4+PigpOwogICAgIG1fY2hpbGRyZW4tPmFwcGVuZChXVEZNb3ZlKGNoaWxkTm9k
ZSkpOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZChDaGlsZE5vZGVzKTsKIH0KQEAgLTExMiw3ICsx
MTIsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hpbGQoUmVmPFNjcm9sbGlu
Z1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUsIHNpemVfdAogCiAgICAgaWYgKCFtX2NoaWxkcmVuKSB7
CiAgICAgICAgIEFTU0VSVCghaW5kZXgpOwotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOworICAgICAgICBt
X2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+
PigpOwogICAgIH0KIAogICAgIGlmIChpbmRleCA+IG1fY2hpbGRyZW4tPnNpemUoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5j
cHAKaW5kZXggZjYxZTI4ZTBlYzUwMzAxMmIzNzJmYjI1NTY5YThjYjdkZDUzYWE3MC4uNzE1N2Ux
Njg2MGY0OWM5MWRkYTM1YmJjNGVhZmU5ODE5ZWFjYmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0yOTMsNyAr
MjkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gU2Nyb2xsaW5nU3Rh
dGVUcmVlOjpjb21taXQoTGF5ZXJSZXByZXNlbnRhdGkKICAgICB9CiAKICAgICAvLyBUaGlzIGZ1
bmN0aW9uIGNsb25lcyBhbmQgcmVzZXRzIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUsIGJ1dCBsZWF2
ZXMgdGhlIHRyZWUgc3RydWN0dXJlIGludGFjdC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
aW5nU3RhdGVUcmVlPiB0cmVlU3RhdGVDbG9uZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5n
U3RhdGVUcmVlPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRy
ZWVTdGF0ZUNsb25lID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CiAgICAgdHJl
ZVN0YXRlQ2xvbmUtPnNldFByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24ocHJlZmVycmVkTGF5
ZXJSZXByZXNlbnRhdGlvbik7CiAKICAgICBpZiAobV9yb290U3RhdGVOb2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCmluZGV4
IGVhNzRlMmNhNDI0MjlhOGUyYmU5ZjlhMzc5ZTM2N2RhNGRkZGEzZDEuLjcyOTYxNWE2OWYwMTIy
NjMxNTE0N2VjZmRiNTUyOGIwMTk5ZjM4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1RyZWVOb2RlPiYm
IGNoaWxkTm9kZSkKICAgICBjaGlsZE5vZGUtPnNldFBhcmVudCh0aGlzKTsKIAogICAgIGlmICgh
bV9jaGlsZHJlbikKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4+PigpOworICAgICAgICBtX2NoaWxkcmVuID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7CiAgICAgbV9jaGls
ZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjLm1tCmluZGV4IDFjN2FiNzZhMTUxZTYzNTBkOGI2MTRjMzZkMDViY2U2
NWM2Yzk1ODQuLmI0M2VhOTk1ZmFmNmI0NzAzMzVmYmYwN2EyMDg2YTZiMzVmNzBlZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBzdGF0
aWMgYm9vbCBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSB0cnVl
OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlh
bE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlh
bE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250
ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwog
fQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1
bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NQVU1vbml0b3IuaAppbmRleCA3MWU0M2QzZjNiOTQ2MTA2MDhjYmYxMWRiNTExNWJjYmVj
MDU0ODkwLi4wODhkZjU0M2UwNDc5MTE3YzgzN2FmZTIyM2JiY2M1NTE0ODhhN2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENQVU1vbml0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHVzaW5nIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyID0gV1RGOjpG
dW5jdGlvbjx2b2lkKGRvdWJsZSk+OwogICAgIFdFQkNPUkVfRVhQT1JUIENQVU1vbml0b3IoU2Vj
b25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCmluZGV4IGU2MGY3NzEzZjYyYmIyNTYyYTg0Mjg4OGM3
ZmM2MjlmMmM1NDdmMzMuLjZiMjg4ZTFlMTdlNDQ4YmI4NmZiOWVjZTI5Y2M5ZTViZGI5ZGQ4ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaApAQCAtNDIsNiArNDIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxlTW9uaXRvciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGaWxlQ2hhbmdlVHlwZSB7
IE1vZGlmaWNhdGlvbiwgUmVtb3ZhbCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApp
bmRleCA0ZmY5ODA0ZWFlYzEzMDZiMjY4YTI0NWYyNzcxYTExMmUyOGQyYTFlLi4zZmM0MzFhNDc0
NjFkOGM0NDNkYjRiNjIyZDZlYTkwNjM0ZGEwZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5jcHAKQEAgLTI4OCw5ICsyODgsOSBAQCBMZW5ndGggY29udmVydFRvMTAwUGVyY2VudE1pbnVz
TGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2Fs
YyBleHByZXNzaW9uOiBjYWxjKDEwMCUgLSBsZW5ndGgpCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+PiBsZW5ndGhzOwogICAgIGxlbmd0aHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSgyKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOwotICAg
IGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25M
ZW5ndGg+KGxlbmd0aCkpOwotICAgIGF1dG8gb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHBy
ZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0
KTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9u
TGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBw
ZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOworICAgIGF1dG8g
b3AgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMp
LCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9u
VmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCkBAIC0zMDIs
NyArMzAyLDcgQEAgc3RhdGljIExlbmd0aCBibGVuZE1peGVkVHlwZXMoY29uc3QgTGVuZ3RoJiBm
cm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3IKICAgICBpZiAocHJvZ3Jlc3MgPj0g
MS4wKQogICAgICAgICByZXR1cm4gdG87CiAgICAgICAgIAotICAgIGF1dG8gYmxlbmQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGg+KGZyb20sIHRvLCBwcm9ncmVz
cyk7CisgICAgYXV0byBibGVuZCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0
aD4oZnJvbSwgdG8sIHByb2dyZXNzKTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFs
dWU6OmNyZWF0ZShXVEZNb3ZlKGJsZW5kKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAppbmRleCA1
NTJiMTJmNmMxZThjZGE2ZmZlYTY0Nzg2OTIyMjllYTkzZWQxN2NhLi44ZTM1ZTMwNGMxZTcyNTdi
YzY0YzZhZDEwZWRkZTk2NDIwNGU2NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2lmICghUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykp
IHx8ICFIQVZFKE1FRElBX1BMQVlFUikKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlz
dGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNv
bW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21t
YW5kTGlzdGVuZXI+KGNsaWVudCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGQ5MTU0ZDkzNTFhMmYzMzY2ZGRkMDVmZTYwZmRl
YmI5YzFhMWU3MzguLmY4ZWRjODgyZDdmMzYwMDJlMTk4NTEwZDgxYjhlYjM0YWE1MDA3YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFFTkFCTEUoU01PT1RIX1NDUk9MTElORykg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUMpCiBzdGQ6OnVuaXF1ZV9w
dHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFu
aW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5p
bWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggYzYyYWQ4MzRlNmIzODA4ZTFlY2RhOGJhMTMx
MmQzZDk1NzA1ZTk2YS4uOTZkMGYzMDBiMzQxOGU2MDgyMWRhMmRhMmE2NDE4OWM0ZGVlMGIzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtODAsNyAr
ODAsNyBAQCBTY3JvbGxBbmltYXRvciYgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbEFuaW1hdG9yKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fc2Nyb2xsQW5pbWF0b3IpIHsKICAgICAgICAgaWYgKHVzZXNN
b2NrU2Nyb2xsQW5pbWF0b3IoKSkgewotICAgICAgICAgICAgbV9zY3JvbGxBbmltYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25zdF9jYXN0PFNjcm9sbGFibGVB
cmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CisgICAgICAgICAg
ICBtX3Njcm9sbEFuaW1hdG9yID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+KGNvbnN0
X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIHsKICAgICAgICAgICAgICAgICBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKG1lc3Nh
Z2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZQpAQCAtNDM1LDcgKzQzNSw3IEBA
IGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhhc0xheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QKIFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNu
YXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKLSAgICAgICAg
bV9zbmFwT2Zmc2V0c0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVl
PFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKICAgICByZXR1cm4gKm1fc25h
cE9mZnNldHNJbmZvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dWRkZW5UZXJtaW5hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWlu
YXRpb24uaAppbmRleCA3MmIwMDQ1MTMxNDJjOGY0ZTk1ZGYyMjgxOGMzZGRjMTgwYWFlY2VkLi4w
ZDc0YjE2ZTU5MjU5OGFiODNiMGM4YzBlYjU0YjQ0NmRmZDM4ZDMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBjbGFzcyBTdWRkZW5UZXJtaW5hdGlvbkRpc2Fi
bGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIpOwogICAgIHB1YmxpYzoKICAg
ICAgICAgU3VkZGVuVGVybWluYXRpb25EaXNhYmxlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IGEyODAxMGVjZmU1YTM2N2FkOWQwYjI5YTIw
MDU2M2EwZjU2MWQ1NjAuLjI3YTczNjQxNmJhMDRjMDUzYzJlNzdkYjJjNTU4MTQ0NDBkMmYwZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCkBAIC00
MCwxNCArNDAsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGhyZWFkR2xvYmFsRGF0YTo6
VGhyZWFkR2xvYmFsRGF0YSgpCi0gICAgOiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQor
ICAgIDogbV9jYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKG1ha2VVbmlxdWU8Q2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKICAgICAsIG1fZXZlbnROYW1lcyhFdmVudE5h
bWVzOjpjcmVhdGUoKSkKLSAgICAsIG1fdGhyZWFkVGltZXJzKHN0ZDo6bWFrZV91bmlxdWU8VGhy
ZWFkVGltZXJzPigpKQotICAgICwgbV9xdWFsaWZpZWROYW1lQ2FjaGUoc3RkOjptYWtlX3VuaXF1
ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCisgICAgLCBtX3RocmVhZFRpbWVycyhtYWtlVW5pcXVl
PFRocmVhZFRpbWVycz4oKSkKKyAgICAsIG1fcXVhbGlmaWVkTmFtZUNhY2hlKG1ha2VVbmlxdWU8
UXVhbGlmaWVkTmFtZUNhY2hlPigpKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1faXNNYWluVGhy
ZWFkKGlzTWFpblRocmVhZCgpKQogI2VuZGlmCi0gICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShz
dGQ6Om1ha2VfdW5pcXVlPElDVUNvbnZlcnRlcldyYXBwZXI+KCkpCisgICAgLCBtX2NhY2hlZENv
bnZlcnRlcklDVShtYWtlVW5pcXVlPElDVUNvbnZlcnRlcldyYXBwZXI+KCkpCiB7CiAgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciB3aWxsIGhhdmUgYmVlbiBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
IGJlZm9yZSBiZWluZyBjYWxsZWQgb24KICAgICAvLyBhbnkgb3RoZXIgdGhyZWFkLCBhbmQgaXMg
b25seSBjYWxsZWQgb25jZSBwZXIgdGhyZWFkIC0gdGhpcyBtYWtlcyB0aGlzIGEgY29udmVuaWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCmluZGV4IDJmODky
ZDZiMTlhYmE0MjMwZTkyNGM3NjE4NzM4ZmM2Y2I0OGY3ZWMuLmU3MGQ0NmQwYjlmMjQwN2Y5MDg1
NDhmYThmMmU5OGM5ZGE0NTYzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQnVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgQXVkaW9CdXM6OkF1ZGlvQnVzKHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBsZW5ndGgsIGJvb2wgYWxsb2NhdGUpCiAgICAgbV9j
aGFubmVscy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAg
ICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVs
PihsZW5ndGgpIDogc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0
aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8gbWFrZVVuaXF1ZTxBdWRpb0No
YW5uZWw+KGxlbmd0aCkgOiBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obnVsbHB0ciwgbGVuZ3Ro
KTsKICAgICAgICAgbV9jaGFubmVscy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShjaGFubmVsKSk7
CiAgICAgfQogCkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBBdWRpb0J1czo6Y29weVdpdGhHYWlu
RnJvbShjb25zdCBBdWRpb0J1cyAmc291cmNlQnVzLCBmbG9hdCogbGFzdE1peEdhaW4sIGYKIAog
ICAgIGlmIChmcmFtZXNUb0RlemlwcGVyKSB7CiAgICAgICAgIGlmICghbV9kZXppcHBlckdhaW5W
YWx1ZXMuZ2V0KCkgfHwgbV9kZXppcHBlckdhaW5WYWx1ZXMtPnNpemUoKSA8IGZyYW1lc1RvRGV6
aXBwZXIpCi0gICAgICAgICAgICBtX2RlemlwcGVyR2FpblZhbHVlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0RlemlwcGVyKTsKKyAgICAgICAgICAgIG1fZGV6
aXBwZXJHYWluVmFsdWVzID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6
aXBwZXIpOwogCiAgICAgICAgIGZsb2F0KiBnYWluVmFsdWVzID0gbV9kZXppcHBlckdhaW5WYWx1
ZXMtPmRhdGEoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lc1RvRGV6
aXBwZXI7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9CdXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKaW5k
ZXggMjE3M2RjOTM4M2U0YTMzYzFiNTkzNDc2NWExZTViMTA3NDZmMDNhMS4uYmJiM2QyYWNkMjJj
NTcyYmM5MjNhNDhiMWY3MGFmODU0YzBjYjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IEFuIEF1ZGlvQnVzIHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIG9uZSBvciBtb3JlIEF1ZGlv
Q2hhbm5lbHMuCiAvLyBUaGUgZGF0YSBsYXlvdXQgaXMgInBsYW5hciIgYXMgb3Bwb3NlZCB0byAi
aW50ZXJsZWF2ZWQiLgogLy8gQW4gQXVkaW9CdXMgd2l0aCBvbmUgY2hhbm5lbCBpcyBtb25vLCBh
biBBdWRpb0J1cyB3aXRoIHR3byBjaGFubmVscyBpcyBzdGVyZW8sIGV0Yy4KLWNsYXNzIEF1ZGlv
QnVzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQnVzPiB7CitjbGFzcyBBdWRp
b0J1cyBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0J1cz4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvQnVzKTsKIHB1YmxpYzoKICAgICBlbnVtIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKaW5kZXggYmJjMTM1
N2EzZDUzZjA1NDhmODg3OGU1ODdkYjdkNmRkMWM0ZmFkOC4uN2I5ODkzZDM4YWM0MTc0NTMxNzQx
Yjc3MjRjNmZmMmFiZDAxZGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9DaGFubmVsLmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAv
LyBBbiBBdWRpb0NoYW5uZWwgcmVwcmVzZW50cyBhIGJ1ZmZlciBvZiBub24taW50ZXJsZWF2ZWQg
ZmxvYXRpbmctcG9pbnQgYXVkaW8gc2FtcGxlcy4KIC8vIFRoZSBQQ00gc2FtcGxlcyBhcmUgbm9y
bWFsbHkgYXNzdW1lZCB0byBiZSBpbiBhIG5vbWluYWwgcmFuZ2UgLTEuMCAtPiArMS4wCi1jbGFz
cyBBdWRpb0NoYW5uZWwgeworY2xhc3MgQXVkaW9DaGFubmVsIGZpbmFsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb0NoYW5uZWwp
OwogcHVibGljOgogICAgIC8vIE1lbW9yeSBjYW4gYmUgZXh0ZXJuYWxseSByZWZlcmVuY2VkLCBv
ciBjYW4gYmUgaW50ZXJuYWxseSBhbGxvY2F0ZWQgd2l0aCBhbiBBdWRpb0Zsb2F0QXJyYXkuCkBA
IC01Niw3ICs1Nyw3IEBAIGNsYXNzIEF1ZGlvQ2hhbm5lbCB7CiAgICAgICAgICwgbV9yYXdQb2lu
dGVyKDApCiAgICAgICAgICwgbV9zaWxlbnQodHJ1ZSkKICAgICB7Ci0gICAgICAgIG1fbWVtQnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CisgICAgICAg
IG1fbWVtQnVmZmVyID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CiAgICAg
fQogCiAgICAgLy8gQSAiYmxhbmsiIGF1ZGlvIGNoYW5uZWwgLS0gbXVzdCBjYWxsIHNldCgpIGJl
Zm9yZSBpdCdzIHVzZWZ1bC4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJ
Rk8uaAppbmRleCA3NWM5YWJkNzQ5NGQzNTgyMmY4MmFjZTdjY2QwZDg1Njg2MTFkN2VhLi4wZjQz
OGRkN2QwZmE1OWZiNjQ0ZDRkZjU3MmY1NTlmZDY2MzA4YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApAQCAtMzMsNyArMzMsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvRklGTyB7CitjbGFzcyBBdWRpb0ZJRk8gZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhIEZJ
Rk8gbGFyZ2UgZW5vdWdoIHRvIGhvbGQgfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxu
dW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4KICAgICBBdWRpb0ZJRk8odW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmluZGV4IGJmYmU5ODNhNTc1YTQ1NGFhYzJiMGMzY2Jl
NDU3NWVmYWY2Yjc4ZDcuLmQ3NDhmYTQxMzg3Mzc5ZGIzOTViZWFlNjVmODgyYmEyNThlOWZjMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKQEAg
LTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gdGhlIEZJRk8gd2lsbCBhc2sg
dGhlIHByb3ZpZGVyIGZvciBtb3JlIGRhdGEgd2hlbiBuZWNlc3NhcnkgdG8gZnVsZmlsbCBhIHJl
cXVlc3QuIENvbnRyYXN0IHRoaXMKIC8vIHdpdGggYSAicHVzaCIgRklGTywgd2hlcmUgdGhlIHNl
bmRlciBwdXNoZXMgZGF0YSB0byB0aGUgRklGTyB3aGljaCB3aWxsIGl0c2VsZiBwdXNoIHRoZSBk
YXRhIHRvCiAvLyB0aGUgcmVjZWl2ZXIgd2hlbiB0aGUgRklGTyBpcyBmdWxsLgotY2xhc3MgQXVk
aW9QdWxsRklGTyB7CitjbGFzcyBBdWRpb1B1bGxGSUZPIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBGSUZPIHRoYXQgZ2V0cyBk
YXRhIGZyb20gfHByb3ZpZGVyfC4gVGhlIEZJRk8gd2lsbCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9s
ZAogICAgIC8vIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVs
c3wgY2hhbm5lbHMuIFRoZSBBdWRpb1NvdXJjZVByb3ZpZGVyIHdpbGwgYmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAppbmRleCA4NjkwNmJh
NTEyNDc1ODY5MmM2ODNlMmJjOTAzODM1MDFlYWI4ZmQ5Li4yODRjMDU0OTQzMjU5MzQ0ZWFjZTMy
NDE4YWRhOWI4MzAzZGEyZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGNvbnN0IGRvdWJsZSBBdWRp
b1Jlc2FtcGxlcjo6TWF4UmF0ZSA9IDguMDsKIEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxl
cigpCiAgICAgOiBtX3JhdGUoMS4wKQogewotICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOworICAgIG1fa2VybmVscy5hcHBl
bmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwogICAgIG1fc291cmNl
QnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCAwLCBmYWxzZSk7CiB9CiAKQEAgLTQ3LDcgKzQ3LDcg
QEAgQXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMpCiAgICAgOiBtX3JhdGUoMS4wKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOworICAgICAgICBtX2tlcm5lbHMu
YXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKIAogICAgIG1f
c291cmNlQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCAwLCBmYWxzZSk7
CiB9CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQXVkaW9SZXNhbXBsZXI6OmNvbmZpZ3VyZUNoYW5u
ZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLy8gRmlyc3QgZGVhbCB3aXRoIGFk
ZGluZyBvciByZW1vdmluZyBrZXJuZWxzLgogICAgIGlmIChudW1iZXJPZkNoYW5uZWxzID4gY3Vy
cmVudFNpemUpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY3VycmVudFNpemU7IGkgPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICAgICAgICAgIG1f
a2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwog
ICAgIH0gZWxzZQogICAgICAgICBtX2tlcm5lbHMucmVzaXplKG51bWJlck9mQ2hhbm5lbHMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaAppbmRl
eCBkMTFmYTkzZWJhYWNiZDhlNTZiOThkYTMzNzVmYWUxNDA2OGUzYmM5Li4yMDE2YmFmZjdjODhk
ZjE4YWY1ZDM1MmMzMDFmNWZmNDM3Njg5ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogLy8gVGhlIGF1ZGlvIHN0cmVhbSBtYXkgYmUgc2luZ2xlIG9yIG11bHRpLWNoYW5u
ZWwuCiAvLyBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0cyB0byBzaW5nbGUtY2hhbm5l
bCAobW9ubykuCiAKLWNsYXNzIEF1ZGlvUmVzYW1wbGVyIHsKK2NsYXNzIEF1ZGlvUmVzYW1wbGVy
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBdWRp
b1Jlc2FtcGxlcigpOwogICAgIEF1ZGlvUmVzYW1wbGVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNh
bXBsZXJLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1w
bGVyS2VybmVsLmgKaW5kZXggOTlkODc3YmI3Y2Q2OGRiYjA1MzY3N2EwOTdjZDRlMGVhYzgzYjc4
Mi4uOGFjMmJhYTQyYzU4N2EzNDg1ZDUzNDAyM2FkZWUyNGY4ODMyNmVmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCkBA
IC0zNCw3ICszNCw5IEBAIGNsYXNzIEF1ZGlvUmVzYW1wbGVyOwogLy8gQXVkaW9SZXNhbXBsZXJL
ZXJuZWwgZG9lcyByZXNhbXBsaW5nIG9uIGEgc2luZ2xlIG1vbm8gY2hhbm5lbC4KIC8vIEl0IHVz
ZXMgYSBzaW1wbGUgbGluZWFyIGludGVycG9sYXRpb24gZm9yIGdvb2QgcGVyZm9ybWFuY2UuCiAK
LWNsYXNzIEF1ZGlvUmVzYW1wbGVyS2VybmVsIHsKK2NsYXNzIEF1ZGlvUmVzYW1wbGVyS2VybmVs
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBdWRpb1Jlc2FtcGxlcktlcm5lbCk7CiBwdWJsaWM6CiAgICAgQXVkaW9SZXNhbXBs
ZXJLZXJuZWwoQXVkaW9SZXNhbXBsZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKaW5kZXggNWMxYmYyYTMxNzM0MmVhM2U1MjkyYTc5N2U4
ZTY2ZTFhOGRhMzk3Yy4uYjVmYjU4MDY0OGY5Y2Y4ZWM0ZjE4NmZhZmE0OGUxM2ZkY2YyZjU3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCkBA
IC01MCw2ICs1MCw3IEBAIGJvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZShib29sIGFj
dGl2ZSkKIAogI2lmICFQTEFURk9STShDT0NPQSkKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogfTsKIAogQXVkaW9TZXNzaW9uOjpBdWRp
b1Nlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24u
aAppbmRleCAxN2RhODFiM2I3NWQ3YTVhYWI4MjE0ODZiN2MxZTMzZjFhOGRmNDY5Li5lNzAwODIy
ZmYxZmVlYmQ3ODI5YWVjNzUwY2NlNDBhNjBiOTI1NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNDQsNyArNDQsOCBAQCBlbnVtIGNsYXNz
IFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3QgewogICAgIExvbmdGb3JtVmlkZW8KIH07CiAK
LWNsYXNzIEF1ZGlvU2Vzc2lvbiB7CitjbGFzcyBBdWRpb1Nlc3Npb24gZmluYWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvU2Vz
c2lvbik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEF1ZGlvU2Vzc2lvbiYg
c2hhcmVkU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQmlxdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaAppbmRl
eCBiYjcyMWEyM2E3ZmNjNzc0YjYwOTNlNGVhOTA4YzYwZTg5MDgxMDdjLi43MTM0OTRjOTE0ZDMz
Nzg2NDNlMjlhODBiYzM5ZTc3MzY2ZGYxODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9CaXF1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9CaXF1YWQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyAgICBs
b3dwYXNzLCBoaWdocGFzcywgc2hlbHZpbmcsIHBhcmFtZXRlcmljLCBub3RjaCwgYWxscGFzcywg
Li4uCiAKIGNsYXNzIEJpcXVhZCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6ICAgCiAgICAgQmlxdWFkKCk7CiAgICAgfkJpcXVhZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQ29uZS5oCmluZGV4IGQ4MWMwNWRjNjhlNmUyZmEyMWQyNDVkZDEzN2I0ZjE3
OGEyMTIwYjQuLmE3YWNhM2E0YzU0ZDI3NGIzYWEzZDQwYWQ5ZDE0M2ViZGZjNDVmY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKQEAgLTM1LDcgKzM1LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAvLyBDb25lIGdhaW4gaXMgZGVmaW5lZCBhY2NvcmRpbmcgdG8gdGhlIE9w
ZW5BTCBzcGVjaWZpY2F0aW9uCiAKLWNsYXNzIENvbmVFZmZlY3QgeworY2xhc3MgQ29uZUVmZmVj
dCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29u
ZUVmZmVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
ZW5vcm1hbERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1h
bERpc2FibGVyLmgKaW5kZXggNmU5ZjRlMDFkYWU2ZDQ1ZDAyMTExZDVkNWIxMjhlZjM4ODZiMjI0
Mi4uZTBiM2VmZDgwZjc4ZmZhYTMwNjU3MzMyMzE0NzAyZGM3M2EyZjAwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaApAQCAtNDEsNyAr
NDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfREVOT1JN
QUwKLWNsYXNzIERlbm9ybWFsRGlzYWJsZXIgeworY2xhc3MgRGVub3JtYWxEaXNhYmxlciBmaW5h
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVub3JtYWxE
aXNhYmxlcigpCiAgICAgICAgICAgICA6IG1fc2F2ZWRDU1IoMCkKQEAgLTEwMyw3ICsxMDQsOCBA
QCBjbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKIAogI2Vsc2UKIC8vIEZJWE1FOiBhZGQgaW1wbGVt
ZW50YXRpb25zIGZvciBvdGhlciBhcmNoaXRlY3R1cmVzIGFuZCBjb21waWxlcnMKLWNsYXNzIERl
bm9ybWFsRGlzYWJsZXIgeworY2xhc3MgRGVub3JtYWxEaXNhYmxlciBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVub3JtYWxEaXNhYmxlcigpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5o
CmluZGV4IDZmMmZhZjQwZTYxYmY2ZTMyYTRmNDk5OTc2NWM5ZTFiYjUxOTQxYTguLjc4MzA4Y2Ux
OTk5OTliYjFkNjgwYmIzYjdlMjNhZTA0Y2Q3Y2IyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCkBAIC0zMyw3ICszMyw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGlyZWN0Q29udm9sdmVyIHsKK2NsYXNzIERpcmVj
dENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGlyZWN0Q29udm9sdmVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBEaXJlY3RDb252b2x2ZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKaW5kZXggOTFkMzQ5Yjk3ZTYyNzczMzJkNzYzMWE4
ODQ0MjZiMTY2OGRjZjI4My4uYjNlYjc3OTczY2ZhNDc5NWYxNTA1MzY5YjdlNGIyZjg5ZmZiNmM0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCkBAIC00MCw3ICs0
MCw4IEBAIGVudW0gY2xhc3MgRGlzdGFuY2VNb2RlbFR5cGUgewogICAgIEV4cG9uZW50aWFsCiB9
OwogCi1jbGFzcyBEaXN0YW5jZUVmZmVjdCB7CitjbGFzcyBEaXN0YW5jZUVmZmVjdCBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGlzdGFuY2VFZmZl
Y3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNh
bXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKaW5k
ZXggZjRiNDIwMTdlZTc2MjdjYWQ2NTZiZmY0NTdhYWU5ODk0ODAxNGJmMi4uOTU3MGI4OTFjOTdm
ZmE5MTFhMDExMzQwMDNiNGZkY2I1Zjc2ZjkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9Eb3duU2FtcGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gRG93blNhbXBsZXIgZG93bi1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEg
ZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBEb3duU2FtcGxlciB7CitjbGFzcyBEb3duU2FtcGxlciBm
aW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgRG93blNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IGIyNTUx
OGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIuLjUxMzc5OWE4NTEyZjQyN2I0ZTRi
OGQ5YjI5NDVhOTRkMzQ5MTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMjcxLDggKzI3MSw4IEBAIHZvaWQg
RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMpCiAgICAgbV9wcmVGaWx0ZXJQYWNrcy5jbGVhcigpOwogICAgIG1fcG9zdEZpbHRl
clBhY2tzLmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hh
bm5lbHM7ICsraSkgewotICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwotICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAgICAg
ICAgbV9wcmVGaWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0
PigpKTsKKyAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1Bv
bGVGaWx0ZXJQYWNrND4oKSk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VDaGFubmVscyA9IG1ha2VV
bmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRleCBlZjhj
MDkzYTFiOTY1MzIyOWQ3OTlmMWE2YjI5MmFmYWRiZGFiYWQxLi44MjJjOTMxZjM4Y2UwZWM4ZGM2
MjgyZjBmOGMzNDNhZjY3N2Y5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtNDMsOCArNDMsOSBAQCBjbGFzcyBBdWRp
b0J1czsKIC8vIG9mIHRoZSBsb3VkZXN0IHBhcnRzIG9mIHRoZSBzaWduYWwgYW5kIHJhaXNlcyB0
aGUgdm9sdW1lIG9mIHRoZSBzb2Z0ZXN0IHBhcnRzLAogLy8gbWFraW5nIHRoZSBzb3VuZCByaWNo
ZXIsIGZ1bGxlciwgYW5kIG1vcmUgY29udHJvbGxlZC4KIAotY2xhc3MgRHluYW1pY3NDb21wcmVz
c29yIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3NvciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHluYW1pY3NDb21wcmVzc29y
KTsKIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgUGFyYW1UaHJlc2hvbGQsCkBAIC05NSw5
ICs5NiwxMCBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgewogICAgIGZsb2F0IG1fbGFzdEFu
Y2hvcjsKICAgICBmbG9hdCBtX2xhc3RGaWx0ZXJTdGFnZUdhaW47CiAKLSAgICB0eXBlZGVmIHN0
cnVjdCB7CisgICAgc3RydWN0IFplcm9Qb2xlRmlsdGVyUGFjazQgeworICAgICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFplcm9Qb2xlIGZpbHRlcnNbNF07Ci0g
ICAgfSBaZXJvUG9sZUZpbHRlclBhY2s0OworICAgIH07CiAKICAgICAvLyBQZXItY2hhbm5lbCBl
bXBoYXNpcyBmaWx0ZXJzLgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0
ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCA3MzRi
MDY2Y2RhNDhiYzJjN2E3OWVkZjUwN2QwNmMwNTZjNzBhMDkwLi5hZmVkYjdiNGNkMGE1YTYxZDFh
OWZlMjc4YzM0MDM4M2Y5OGUyMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hhbm5lbHMo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKIAogICAgIG1fcHJlRGVsYXlCdWZmZXJzLmNsZWFy
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkK
LSAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9G
bG9hdEFycmF5PihNYXhQcmVEZWxheUZyYW1lcykpOworICAgICAgICBtX3ByZURlbGF5QnVmZmVy
cy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVzKSk7
CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXRQcmVEZWxheVRpbWUoZmxv
YXQgcHJlRGVsYXlUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAppbmRleCBiN2JjZWEyZmFmZDg5OTZjYTUy
OGIwYjVkYWI0OWNiODg5NThkY2M0Li5lMTFmNDdiYWFmMGJjNmM1ZDBjYTdlM2Q3MjAwODI2Mzlk
MjcwYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaApAQCAtMzUsNyArMzUsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCB7CitjbGFzcyBEeW5h
bWljc0NvbXByZXNzb3JLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IDhjZjU5OTE3OTVm
M2YxZjYzZTI4MWQ5ZTE2YWNhZjNkN2E1N2E1ZGEuLjRlNDYzYjEyODFhN2ZhM2JiMzk3YTZiMDY1
Y2UwMzNjY2JmOWFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0VxdWFsUG93ZXJQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9F
cXVhbFBvd2VyUGFubmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBDb21tb24gdHlwZSBvZiBzdGVyZW8gcGFubmVyIGFzIGZvdW5kIGluIG5vcm1hbCBhdWRp
byBtaXhpbmcgZXF1aXBtZW50LgogCi1jbGFzcyBFcXVhbFBvd2VyUGFubmVyIDogcHVibGljIFBh
bm5lciB7CitjbGFzcyBFcXVhbFBvd2VyUGFubmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgRXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAppbmRleCA0
NTQyYjZmYjI1Nzg1NDk1YWIyMDZhYmMzYzkwYzc1YmMyZjE2ZWEwLi4zODYyMjdmMTk3MDRhZmQ3
OTJlMzY2MjJiZGRhOWMxYWNlYTc1MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRDb252b2x2ZXIuaApAQCAtMzQsNyArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEZGVENvbnZvbHZlciB7CitjbGFzcyBGRlRDb252b2x2ZXIgZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZG
VENvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gZmZ0U2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2Yg
dHdvCiAgICAgRkZUQ29udm9sdmVyKHNpemVfdCBmZnRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCA0YzAyYjY5OTJiMDYzODNiODAzNTczNzg3
OGRiZjY1YTI2ZmI5YzMxLi40YzE1MjA2N2Q0NGFjNGI4NTQxOTIxYWFlZDI5NTk4MmI5NjkzNzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHZvaWQgRkZURnJhbWU6OmRvUGFkZGVkRkZUKGNvbnN0IGZsb2F0KiBkYXRhLCBz
aXplX3QgZGF0YVNpemUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGRlRGcmFtZT4gRkZURnJhbWU6OmNy
ZWF0ZUludGVycG9sYXRlZEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZGVEZy
YW1lJiBmcmFtZTIsIGRvdWJsZSB4KQogewotICAgIGF1dG8gbmV3RnJhbWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0g
bWFrZVVuaXF1ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CiAKICAgICBuZXdGcmFtZS0+
aW50ZXJwb2xhdGVGcmVxdWVuY3lDb21wb25lbnRzKGZyYW1lMSwgZnJhbWUyLCB4KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAppbmRleCA3NTdiY2Zh
NGI2YWVmZDcwZWJhZTg2NTQ4NzI1ZmE0MDYyOWM2ZTllLi5hNTE5MzQ5ODE1MDQ1MjZkNmZjNjRk
NDViOTc5MGIzNzgxMDNhNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEhSVEZLZXJuZWw7CiAKLWNsYXNzIEhSVEZEYXRhYmFzZSB7CitjbGFzcyBIUlRGRGF0YWJh
c2UgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEhSVEZEYXRhYmFzZSk7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBmNDViZTg0N2Nl
NzEwZGNlZGEyZTBlYzEwNmI3NWJmMjY4NTc4OWNkLi5hNDc0YTcwYzQwODUyYWUyZTFmOWY1OGE0
OWEwMDAzNjE1ODBiMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIUlRGRGF0
YWJhc2VMb2FkZXI6OmxvYWQoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlm
ICghbV9ocnRmRGF0YWJhc2UuZ2V0KCkpIHsKICAgICAgICAgLy8gTG9hZCB0aGUgZGVmYXVsdCBI
UlRGIGRhdGFiYXNlLgotICAgICAgICBtX2hydGZEYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8
SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CisgICAgICAgIG1faHJ0ZkRhdGFi
YXNlID0gbWFrZVVuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZF
bGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlv
bi5jcHAKaW5kZXggYzg0YWI5NzUxYTE0NTk4OWEwMzc3ZmFkMWY0YTc1ZThmMTdlMmIyNC4uNjA1
MjMyY2QxYTk5YzkyMzNkOWFkMTA0OWJhMzA3ZTIxNzczOGZjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTI0NCw4ICsyNDQsOCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9y
U3ViamVjdChjb25zdCBTdHJpbmcmIHN1YgogICAgIGlmICghaXNFbGV2YXRpb25Hb29kKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0
ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0g
ICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51
bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8
SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxM
aXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7
CiAKICAgICAvLyBMb2FkIGNvbnZvbHV0aW9uIGtlcm5lbHMgZnJvbSBIUlRGIGZpbGVzLgogICAg
IGludCBpbnRlcnBvbGF0ZWRJbmRleCA9IDA7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29u
c3QgU3RyaW5nJiBzdWIKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShr
ZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlz
dFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVs
ZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZF
bGV2YXRpb24qIGhydGZFbGV2YXRpb24xLCBIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMiwg
ZmxvYXQgeCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAgLTI4NSw4ICsyODUsOCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5n
U2xpY2VzKEhSVEZFbAogICAgICAgICAKICAgICBBU1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEuMCk7
CiAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5l
bExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0
ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Cisg
ICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9m
VG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktl
cm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICBIUlRGS2VybmVsTGlzdCog
a2VybmVsTGlzdEwxID0gaHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RMKCk7CiAgICAgSFJURktl
cm5lbExpc3QqIGtlcm5lbExpc3RSMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0UigpOwpA
QCAtMzAyLDcgKzMwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxl
dmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgLy8gSW50ZXJw
b2xhdGUgZWxldmF0aW9uIGFuZ2xlLgogICAgIGRvdWJsZSBhbmdsZSA9ICgxLjAgLSB4KSAqIGhy
dGZFbGV2YXRpb24xLT5lbGV2YXRpb25BbmdsZSgpICsgeCAqIGhydGZFbGV2YXRpb24yLT5lbGV2
YXRpb25BbmdsZSgpOwogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2
YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGlj
X2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhS
VEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwg
c3RhdGljX2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOwogfQogCiB2b2lkIEhSVEZFbGV2
YXRpb246OmdldEtlcm5lbHNGcm9tQXppbXV0aChkb3VibGUgYXppbXV0aEJsZW5kLCB1bnNpZ25l
ZCBhemltdXRoSW5kZXgsIEhSVEZLZXJuZWwqICZrZXJuZWxMLCBIUlRGS2VybmVsKiAma2VybmVs
UiwgZG91YmxlJiBmcmFtZURlbGF5TCwgZG91YmxlJiBmcmFtZURlbGF5UikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAppbmRleCAyYTk1OTA0NTUyMTg0
M2ExNTE2MmVjYzhlMzIxMTczOWUwNzA1M2Y3Li5lZjc1MmMzYzAxYmUzOWVjZGI3ZWY2NGRmNDM5
MDkyNjZkNmVkOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVs
ZXZhdGlvbi5oCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gSFJU
RkVsZXZhdGlvbiBjb250YWlucyBhbGwgb2YgdGhlIEhSVEZLZXJuZWxzIChvbmUgbGVmdCBlYXIg
YW5kIG9uZSByaWdodCBlYXIgcGVyIGF6aW11dGggYW5nbGUpIGZvciBhIHBhcnRpY3VsYXIgZWxl
dmF0aW9uLgogCi1jbGFzcyBIUlRGRWxldmF0aW9uIHsKK2NsYXNzIEhSVEZFbGV2YXRpb24gZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEhSVEZFbGV2YXRpb24pOwogcHVibGljOgogICAgIEhSVEZFbGV2YXRpb24oc3RkOjp1bmlx
dWVfcHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0TCwgc3RkOjp1bmlxdWVfcHRyPEhSVEZL
ZXJuZWxMaXN0PiBrZXJuZWxMaXN0UiwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKaW5kZXggZWRm
NmM2MGQwZGI4MTRkOTRjMGY3MWI2MzA2ZTQzODI2NTNhYTRjNy4uMzc1NTIxNmFlMjg3YTcxYzc0
MjkyOWE1M2M5NTkwOTZkYjFkYmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURktlcm5lbC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSFJURktlcm5lbDo6SFJURktlcm5l
bChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mZnRGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8
RkZURnJhbWU+KGZmdFNpemUpOworICAgIG1fZmZ0RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1l
PihmZnRTaXplKTsKICAgICBtX2ZmdEZyYW1lLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2Us
IHRydW5jYXRlZFJlc3BvbnNlTGVuZ3RoKTsKIH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHNpemVf
dCBIUlRGS2VybmVsOjpmZnRTaXplKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQ2hh
bm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKCkKIHsKLSAgICBhdXRvIGNo
YW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKKyAgICBh
dXRvIGNoYW5uZWwgPSBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKICAgICBG
RlRGcmFtZSBmZnRGcmFtZSgqbV9mZnRGcmFtZSk7CiAKICAgICAvLyBBZGQgbGVhZGluZyBkZWxh
eSBiYWNrIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RlBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCmlu
ZGV4IGJmNWVlZmFhNWU0YzZkMmJmMTdhOTkwMDMwNzQxNjVjNmU0MzNhZDcuLmNhYWE0NDFmMWQx
NGVhMzZmNWU5NjhhZDhhNzdkMGI3YTYwZGQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBIUlRGUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBIUlRGUGFu
bmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSFJURlBh
bm5lcihmbG9hdCBzYW1wbGVSYXRlLCBIUlRGRGF0YWJhc2VMb2FkZXIqKTsKICAgICB2aXJ0dWFs
IH5IUlRGUGFubmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAppbmRleCBiYmJmMTY0NDYyMDc2MzllMzVjZjc5
NTY0ODI4MjYzZDNlOTM3M2FlLi41YmY5YWI5NWQwMTU3NTAwODE1ZDYxMzFhYjFkODk3NDFiZTFm
ZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5u
ZWxSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRp
Q2hhbm5lbFJlc2FtcGxlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgTXVsdGlDaGFubmVsUmVzYW1w
bGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBu
dW1iZXIKIHsKICAgICAvLyBDcmVhdGUgZWFjaCBjaGFubmVsJ3MgcmVzYW1wbGVyLgogICAgIGZv
ciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFu
bmVsczsgKytjaGFubmVsSW5kZXgpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOworICAgICAgICBtX2tlcm5lbHMu
YXBwZW5kKG1ha2VVbmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKIH0KIAogdm9p
ZCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogcHJv
dmlkZXIsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2Ft
cGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmgKaW5kZXggNDQxNzU0NzYwNTgzZDI4MDM0YTQ1YjNiZDhhNjE4OGQ0NjVhMmYzNi4uNjE0
NmU5MjVjMDZhMmRkYTc2Y2I0MTJmMGNjMWUwYTI0NmFjODBkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKQEAgLTM3
LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKICAgICAK
LWNsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciB7CitjbGFzcyBNdWx0aUNoYW5uZWxSZXNhbXBs
ZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAg
IGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5l
ci5jcHAKaW5kZXggYWM3Mjg2YWM5YTA2MGI3NTM0Y2IyZWRlOTIxZDZjYmQ3N2E5N2E4OC4uNDBi
OWQwMWRjMTg0Yjk2ZDVkZjNhYjliN2Y0MDk0NjNhOTc4MzRkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCkBAIC00MywxMSArNDMsMTEgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhbm5lcj4gUGFubmVyOjpjcmVhdGUoUGFubmluZ01vZGVsVHlwZSBtb2RlbCwgZmxvYXQg
c2FtcGxlUmF0ZSwKIAogICAgIHN3aXRjaCAobW9kZWwpIHsKICAgICBjYXNlIFBhbm5pbmdNb2Rl
bFR5cGU6OkVxdWFscG93ZXI6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8RXF1
YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CisgICAgICAgIHBhbm5lciA9IG1ha2VVbmlxdWU8
RXF1YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKKyAgICAgICAgcGFu
bmVyID0gbWFrZVVuaXF1ZTxIUlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRlcik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IGUwMjM5NGFhNWIxNDlj
ZDE1OTY5MTJhMjU2ODFmZjVlYTQ0YWQ4ZDIuLmM4YmQ2NGE0MWJmNjEyZTg5ZTNjMjE0ZmEyMmRj
YzU5OTQ4ZTU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdHJpbmcgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRy
b2xDb21tYW5kVHlwZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNs
aWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lv
bj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4o
Y2xpZW50KTsKIH0KIAogUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFTZXNzaW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiLmNwcAppbmRleCAzMDQzZmM4YTA0ZGYwZDc3YzEwYWEwMzc5YmQyNmEz
OWQ0NmNlNmJhLi44YTY3NTVjNTRhZDAwYTNhODEwMTg3NDIxNjJjY2QwNzRkZTEwZTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCB2b2lkIFJldmVyYjo6aW5pdGlhbGl6ZShBdWRpb0J1cyogaW1wdWxzZVJlc3BvbnNlQnVmZmVy
LCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVt
UmVzcG9uc2VDaGFubmVsczsgKytpKSB7CiAgICAgICAgIEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCA9
IGltcHVsc2VSZXNwb25zZUJ1ZmZlci0+Y2hhbm5lbChpKTsKIAotICAgICAgICBtX2NvbnZvbHZl
cnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5k
ZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3Jv
dW5kVGhyZWFkcykpOworICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5kKG1ha2VVbmlxdWU8UmV2
ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZv
bHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcykpOwogCiAgICAgICAgIGNvbnZv
bHZlclJlbmRlclBoYXNlICs9IHJlbmRlclNsaWNlU2l6ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oCmluZGV4IDNlMjU3NmIzNTc1N2RiYTI0NzBjOGViN2RhM2Mx
N2JlZWJiZmRjZWQuLjIzNGUzMWRhZWJiZDRkZGFhMzZhMWU5MDUzMTFlYjk5MjJmYWE2N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIEF1ZGlvQnVzOwogICAgIAogLy8gTXVsdGktY2hhbm5lbCBjb252b2x1dGlvbiByZXZlcmIg
d2l0aCBjaGFubmVsIG1hdHJpeGluZyAtIG9uZSBvciBtb3JlIFJldmVyYkNvbnZvbHZlciBvYmpl
Y3RzIGFyZSB1c2VkIGludGVybmFsbHkuCiAKLWNsYXNzIFJldmVyYiB7CitjbGFzcyBSZXZlcmIg
ZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0g
eyBNYXhGcmFtZVNpemUgPSAyNTYgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKaW5kZXggNTEyYjZhZGUzNDFh
Mjg1Njk3MmVlM2Y3YmNiMjExNjZiYjcyMWExZi4uYTYyODM1ZjljMGQ3ZDc0M2M5ZTkyN2NlZGUy
ZDZhMWRhNDU1ODQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKQEAgLTM2LDcgKzM2LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIGlzIGEgY2lyY3VsYXIg
ZGVsYXkgYnVmZmVyIHdpdGggb25lIGNsaWVudCByZWFkaW5nIGZyb20gaXQgYW5kIG11bHRpcGxl
IGNsaWVudHMKIC8vIHdyaXRpbmcvYWNjdW11bGF0aW5nIHRvIGl0IGF0IGRpZmZlcmVudCBkZWxh
eSBvZmZzZXRzIGZyb20gdGhlIHJlYWQgcG9zaXRpb24uICBUaGUgcmVhZCBvcGVyYXRpb24gd2ls
bCB6ZXJvIHRoZSBtZW1vcnkKIC8vIGp1c3QgcmVhZCBmcm9tIHRoZSBidWZmZXIsIHNvIGl0IHdp
bGwgYmUgcmVhZHkgZm9yIGFjY3VtdWxhdGlvbiB0aGUgbmV4dCB0aW1lIGFyb3VuZC4KLWNsYXNz
IFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciB7CitjbGFzcyBSZXZlcmJBY2N1bXVsYXRpb25CdWZm
ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXgg
MTQ1ZGY4MWUyYTZiYTJjMmRhYTliYjQxZTZiNWNhYmFmMzg1ZjkxYy4uYTljOTM1YzFhMjg1YWIx
MzYyZDhmZjFkZjhjZWJhNWE3ZTVhYTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFJldmVyYkNv
bnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBz
aXplX3QgcmVuZGVyU2xpCiAKICAgICAgICAgYm9vbCB1c2VEaXJlY3RDb252b2x2ZXIgPSAhc3Rh
Z2VPZmZzZXQ7CiAKLSAgICAgICAgYXV0byBzdGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJi
Q29udm9sdmVyU3RhZ2U+KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZlcmJUb3Rh
bExhdGVuY3ksIHN0YWdlT2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBoYXNlLCBy
ZW5kZXJTbGljZVNpemUsICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVy
KTsKKyAgICAgICAgYXV0byBzdGFnZSA9IG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+
KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZlcmJUb3RhbExhdGVuY3ksIHN0YWdl
T2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBoYXNlLCByZW5kZXJTbGljZVNpemUs
ICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVyKTsKIAogICAgICAgICBi
b29sIGlzQmFja2dyb3VuZFN0YWdlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKaW5kZXggNWI4MTllMWEzZTZmNGZiMWY4ZGIw
YzU5Njk3MjYyYWFjMDljNmJkZS4uMzIwMGI0NWVhOGRmN2MyMWNlNmZhMzdlMDhiYjI3OTFmOGFl
NWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyLmgKQEAgLTQzLDggKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRp
b0NoYW5uZWw7CiAKLWNsYXNzIFJldmVyYkNvbnZvbHZlciB7CitjbGFzcyBSZXZlcmJDb252b2x2
ZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJldmVyYkNvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gbWF4RkZUU2l6ZSBj
YW4gYmUgYWRqdXN0ZWQgKGZyb20gc2F5IDIwNDggdG8gMzI3NjgpIGRlcGVuZGluZyBvbiBob3cg
bXVjaCBwcmVjaXNpb24gaXMgbmVjZXNzYXJ5LgogICAgIC8vIEZvciBjZXJ0YWluIHR3ZWFreSBk
ZS1jb252b2x2aW5nIGFwcGxpY2F0aW9ucyB0aGUgcGhhc2UgZXJyb3JzIGFkZCB1cCBxdWlja2x5
IGFuZCBsZWFkIHRvIG5vbi1zZW5zaWNhbCByZXN1bHRzIHdpdGgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAppbmRleCAw
ZmRlNDIxYWYyZjgyZmQ0ODc0ZDk0ZjZhZjFkNjM0NzIzOWM2NTZlLi40ZmY5NTNiMjYwNDkxN2Qz
NDUyMDM5NDA1YjY1ZGUyYmQ1YTFlYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCkBAIC01NSwxNiArNTUsMTYg
QEAgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKGNvbnN0IGZsb2F0
KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCwKICAgICBBU1NFUlQoYWNjdW11bGF0aW9uQnVmZmVy
KTsKIAogICAgIGlmICghbV9kaXJlY3RNb2RlKSB7Ci0gICAgICAgIG1fZmZ0S2VybmVsID0gc3Rk
OjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0S2VybmVsID0g
bWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CiAgICAgICAgIG1fZmZ0S2VybmVsLT5kb1Bh
ZGRlZEZGVChpbXB1bHNlUmVzcG9uc2UgKyBzdGFnZU9mZnNldCwgc3RhZ2VMZW5ndGgpOwotICAg
ICAgICBtX2ZmdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RkZUQ29udm9sdmVyPihmZnRT
aXplKTsKKyAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBtYWtlVW5pcXVlPEZGVENvbnZvbHZlcj4o
ZmZ0U2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFzdGFnZU9mZnNldCk7CiAg
ICAgICAgIEFTU0VSVChzdGFnZUxlbmd0aCA8PSBmZnRTaXplIC8gMik7CiAKLSAgICAgICAgbV9k
aXJlY3RLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAv
IDIpOworICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5
PihmZnRTaXplIC8gMik7CiAgICAgICAgIG1fZGlyZWN0S2VybmVsLT5jb3B5VG9SYW5nZShpbXB1
bHNlUmVzcG9uc2UsIDAsIHN0YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9kaXJlY3RDb252b2x2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERpcmVjdENvbnZvbHZlcj4ocmVuZGVyU2xpY2VTaXplKTsKKyAg
ICAgICAgbV9kaXJlY3RDb252b2x2ZXIgPSBtYWtlVW5pcXVlPERpcmVjdENvbnZvbHZlcj4ocmVu
ZGVyU2xpY2VTaXplKTsKICAgICB9CiAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYWxsb2NhdGUocmVu
ZGVyU2xpY2VTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlclN0YWdlLmgKaW5kZXggYTA0OTA5NzAzNDBhYjNiMzM2MDBiMDg5ZTU5
ODQ3NGZiM2Q0NTVlNi4uM2MwM2JlMzQxYjNiN2Q2NDYyMWRjODAzODE2NjkzNjBmNGRiNGM5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERpcmVjdENvbnZvbHZlcjsKICAgICAK
IC8vIEEgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgcmVwcmVzZW50cyB0aGUgY29udm9sdXRpb24gYXNz
b2NpYXRlZCB3aXRoIGEgc3ViLXNlY3Rpb24gb2YgYSBsYXJnZSBpbXB1bHNlIHJlc3BvbnNlLgog
Ly8gSXQgaW5jb3Jwb3JhdGVzIGEgZGVsYXkgbGluZSB0byBhY2NvdW50IGZvciB0aGUgb2Zmc2V0
IG9mIHRoZSBzdWItc2VjdGlvbiB3aXRoaW4gdGhlIGxhcmdlciBpbXB1bHNlIHJlc3BvbnNlLgot
Y2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgeworY2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2Ug
ZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIHJl
bmRlclBoYXNlIGlzIHVzZWZ1bCB0byBrbm93IHNvIHRoYXQgd2UgY2FuIG1hbmlwdWxhdGUgdGhl
IHByZSB2ZXJzdXMgcG9zdCBkZWxheSBzbyB0aGF0IHN0YWdlcyB3aWxsIHBlcmZvcm0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCmluZGV4
IGJiMDZlNGVlZDYzM2YwZTdjNjgyZTIwZTRlNmE1NzJhYTFmYWE5NjYuLmFmOWVkMDBkNzMzZTg0
MmI2ZWQzYTY0NzQ4NTQyMGQzYzc2Nzc1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaApAQCAtMzQsNyArMzQsOCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAvLyBSZXZlcmJJbnB1dEJ1ZmZlciBpcyB1c2VkIHRvIGJ1ZmZlciBp
bnB1dCBzYW1wbGVzIGZvciBkZWZlcnJlZCBwcm9jZXNzaW5nIGJ5IHRoZSBiYWNrZ3JvdW5kIHRo
cmVhZHMuCi1jbGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciB7CitjbGFzcyBSZXZlcmJJbnB1dEJ1ZmZl
ciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgUmV2ZXJiSW5wdXRCdWZmZXIoc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAppbmRleCAyZmNkODlmN2VjYTM3NTg1
ODYzMWE5YjI3NjVhMTBkMjAxYjM0MWM3Li5jMTMyZjVkOTc2MmM3NTY2YjIzMjVjMDY0YjI4ZGU4
YjZlMzkwMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5j
UmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2Ft
cGxlci5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gU2luY1Jl
c2FtcGxlciBpcyBhIGhpZ2gtcXVhbGl0eSBzYW1wbGUtcmF0ZSBjb252ZXJ0ZXIuCiAKLWNsYXNz
IFNpbmNSZXNhbXBsZXIgeworY2xhc3MgU2luY1Jlc2FtcGxlciBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAgLy8gc2NhbGVGYWN0b3IgPT0gc291
cmNlU2FtcGxlUmF0ZSAvIGRlc3RpbmF0aW9uU2FtcGxlUmF0ZQogICAgIC8vIGtlcm5lbFNpemUg
Y2FuIGJlIGFkanVzdGVkIGZvciBxdWFsaXR5IChoaWdoZXIgaXMgYmV0dGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaAppbmRleCAyNjZiY2FmOTgwZDcyNmZhMmY2
MzdjZmU5M2E1ZDRjMzhiMjRlZTA2Li42NzVlZTRhZDBjNDQ2N2NkMWRkNmQxZDUxNjExZTc3Yjk4
YzRjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaApAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVwU2FtcGxlciB1cC1zYW1w
bGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBVcFNhbXBs
ZXIgeworY2xhc3MgVXBTYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVcFNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCmluZGV4IDgzMWRlOTA5
M2IwMDU2MTZiNGJkNzdlYTdiMDc3OGMzN2RhYTdiNmUuLjAyZmZhY2Q1ZWFjYTdjZTI3NTg5MmJl
OGQ2NDM5NGM3MzNkYzdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1plcm9Qb2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1Bv
bGUuaApAQCAtMzMsNyArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFplcm9Qb2xl
IGlzIGEgc2ltcGxlIGZpbHRlciB3aXRoIG9uZSB6ZXJvIGFuZCBvbmUgcG9sZS4KIAotY2xhc3Mg
WmVyb1BvbGUgeworY2xhc3MgWmVyb1BvbGUgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFplcm9Qb2xlKCkKICAgICAgICAgOiBtX3plcm8oMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9C
dWZmZXJMaXN0LmgKaW5kZXggODZiNjVhMjI1M2FmMWFlYjJhMWNhOWNhYTM2Njc4NmNkN2Q2NTUy
MC4uNzZiNWJjNzUxZDYwNThmMTg3NzFiYTk1NTJhYWM0NmM2ZTJhZDZmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJM
aXN0LmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uOwogCiBjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3QgOiBwdWJsaWMg
UGxhdGZvcm1BdWRpb0RhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgdWludDMyX3Qgc2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IDViZjhmZGE2YjI5MTJiMThmMTE5MGRjYmU3
MDgyYmY2ODRiZWU5OGYuLjFhNTQ5NWZkNzY0ZDljM2NjNmVkYjU4MWZhNDgwZWFlYWQxNDU5YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246
OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
JXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBz
YW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246
OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggOGFmODc3ZWMyYzRj
YTBhYmQzMDc0ODM1ZjU0YjM0YWViZjA0MzNhMi4uNGJkZTdlNDFlMmI2NDM3Y2QwZmY3MjVlNGQw
NzlkNjhmODllN2RjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAtODAsNyArODAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1
ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIp
CiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVm
KSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVS
YXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Np
b25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9u
SU9TLm1tCmluZGV4IGRjNmM4YmNjZTM2OWQwNmFlZGM4ZmQzMzNjNzM4YzBiZTk1NzVkZDQuLjYz
OTgyNDBiYmQ4ZDk2NzMwMmRmN2U5ZWNmZjQwNzUwMmRhNmUyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtNTks
NiArNTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKEF1ZGlvU2Vzc2lvbjo6
Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogI2VuZGlmCiAKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEF1ZGlvU2Vz
c2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKik7CiAgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5
cGUgbV9jYXRlZ29yeU92ZXJyaWRlOwpAQCAtNzEsNyArNzIsNyBAQCBBdWRpb1Nlc3Npb25Qcml2
YXRlOjpBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiopCiB9CiAKIEF1ZGlvU2Vzc2lv
bjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
U2Vzc2lvblByaXZhdGU+KHRoaXMpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9T
ZXNzaW9uUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCA3NjRh
MzQ3Zjk4MjllMWU4NDc1YmQyZWExMjgwYWExNzUwMjZlY2ZjLi45ZmU2NGJhYWE0Nzg0ZmVjZGFi
M2Q2ZGRiNWUyNzgzODFlMWUwNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpj
cmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1
LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ss
IHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBs
ZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggNzdkNDMxNjU2Njk5MGU5MDFiOTIwYmY3
NzhkOTY5ZTlmMThmMTg4YS4uNDFhZmUzOWYyMzJhZTU4ODA4NjBmMDg0ZDU1NmNiNGE1ZDhhZTI1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgT1NTdGF0dXMgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGYKIHsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAot
ICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihmb3JtYXQpOworICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOwogICAgIGlmIChtX291dHB1dERlc2Ny
aXB0aW9uKQogICAgICAgICByZXR1cm4gc2V0dXBDb252ZXJ0ZXIoKTsKIApAQCAtMTIwLDkgKzEy
MCw5IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYKICAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0
aW9uKTsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAotICAgIG1fb3V0
cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4oZm9ybWF0KTsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKCFtX3JpbmdCdWZmZXIpCi0gICAg
ICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAg
ICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKIAogICAgIG1f
cmluZ0J1ZmZlci0+YWxsb2NhdGUoZm9ybWF0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbWF4aW11
bVNhbXBsZUNvdW50KSk7CiAgICAgbV9zY3JhdGNoQnVmZmVyID0gQXVkaW9TYW1wbGVCdWZmZXJM
aXN0OjpjcmVhdGUobV9vdXRwdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24oKSwgbV9t
YXhpbXVtU2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAppbmRleCA3ZjZlZjlkMzNkYjFmYjQ3ZTdjZjE0
YzU5MDRhNDYxMTJiMTUyMjMyLi5jYzA0ZjBiZTMwOTc0OThiODM2NmU5MjQyMDczZWNlM2UxOTc1
YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
ZXNzaW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TZXNzaW9uTWFjLmNwcApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2
YXRlIHsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0
ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KGlzTXV0ZWQoKSkpCisgICAg
OiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FS
aW5nQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVm
ZmVyLmgKaW5kZXggMThhMjZhYjZkYzVjOGRkMDEyNTJkYjA2NDZkNGY1YjliNDdiNmZmNS4uNTE0
ZmY4NmY5ZDJjZGRhNDVlYTRmYTE2MjZmNDA5N2Q2M2E1MTEyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaApAQCAtNDcsNiArNDcsNyBA
QCBjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKIH07CiAKIGNsYXNzIENBUmluZ0J1ZmZlclN0
b3JhZ2VWZWN0b3IgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgfkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3Io
KSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRGVjb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2Rl
ckNGLmNwcAppbmRleCBiOTgwM2JmYTAyMzI0MzU3YzBkZmUwNDczMTNkMmMzZWMzMDRjYjkyLi43
YTQ3ZjU2MDhiYmI2ZGU5ZDM3NzNiMTdlOThlNDc2NGEyNDIyMmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWRE
ZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckNGPihkYXRhLCBzaXplKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJDRj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtl
eWVkRGVjb2RlckNGOjpLZXllZERlY29kZXJDRihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApp
bmRleCAxYTYyN2VhMDBiOTJjYmFhNmNmN2MzNTVkNWU0NDVlYzQ4NjFhNDEyLi40NDczZWMyOGQw
NGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJDRj4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJDRj4oKTsKIH0KIAogc3RhdGlj
IFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVEaWN0aW9uYXJ5KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1l
ckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1l
ckNGLmNwcAppbmRleCBiNjg5MjI4MDVlNWQzNzNkZTdmMGFlZDc4OTA4MjVhY2NjYzEyMDM5Li4w
N2E0NWNhZDc4YjZkNDM3ZmFhODQyNTI2OTljMGQ0ODZkNzhlZDZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9ic2VydmVyOwogICAg
IGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CisgICAg
ICAgIHBvd2VyT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFy
ZWRUaW1lcikucmVsZWFzZSgpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0
aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBmYWxzZTsKICAg
ICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5tbQppbmRleCA0NzA1ZWQxNWE1YzU4YzQxMWM0OWYzNGZhZjczZWViMzA3
YjJjOTQ4Li5hYjk1ZmZkMGY4NzFlYzA0NjA4ZDUwOTY0NmI0M2UzZDAzNDlmNTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtNjUsNyArNjUsNyBAQCBib29sIE5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6Y3Jl
YXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6
aW5pdGlhbGl6ZShjb25zdCBVUkwqIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5k
ZXggYWUwYmQyMDljY2Q2ZjMxN2M5MTkzMjVhMTZhMThhOTljZDE1NzJlNC4uMGQyYTYyMTg2YjVh
NTRlMmI4NTFmZjk2ZDUyODEwMWY4NDY2ZjQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIu
bW0KQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLm1tCmluZGV4IGU4MzY5YzZlNTAxNmUyM2NmODczYjk1MzdkMmFmYjRmMGJj
Njg1MjIuLjhmZTM4YWQwY2NlMmZkNTQyZDI5NzAxN2ZkYTJkMWNiMzU1Yjc3MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAt
NjIwLDcgKzYyMCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBv
aW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yCiAgICAgICAgIGlmIChzbmFw
UG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX3Njcm9s
bFNuYXBTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7
CisgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZT4oKTsKICAgICB9CiAKICAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkgJiYgbV9z
Y3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRzRm9yQXhpcyhvdGhlclNjcm9sbEV2ZW50QXhpcyhh
eGlzKSkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDUwM2Y5
N2I5MjAxOGRhODdjMjQ4ODkxYjIyNjc5YWJiNzAwNWIzMDAuLjk2Yzg1MTI5MzVhYjliNjk4ZTg5
ODU1MTYzYmI2ZDIyYWM5YjgyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAg
LTMwMyw3ICszMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9yeUNs
ZWFyS2V5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZQogI2Vsc2UKICAgICBBU1NF
UlQoc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOwogfQogCiBib29sIENETUZhY3RvcnlDbGVhcktleTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuaAppbmRleCBkNDczMDRjOTViMjZlZjIwNGY1ZGE0YWRjYmI4YTA4NjRkZTE4YmIz
Li4wYjkxMDY0OWNhNGE0N2E5MTVkNTQ4YzlkOTRhZmZmMzM1MzU5MjY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5
Q2xlYXJLZXkmIHNpbmdsZXRvbigpOwogCkBAIC01NCw2ICs1NSw3IEBAIGNsYXNzIENETUZhY3Rv
cnlDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAKIGNsYXNzIENETVBy
aXZhdGVDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2
aXJ0dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tCmluZGV4IGY3MjBjZmQzMzQzZjliYWQzM2E0OTE5YTc4Zjg2NmY5ZDg2
MmEwYWQuLjVhNmViNDA0MzllZjU5MDU3MmE3YzI5ZWZjMzM4ZDkyZjIzOWM1ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtNjEsNyArNjEsNyBAQCB2
b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChH
Q0NvbnRyb2xsZXIgKmNvbnRyb2xsZQogICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIgY29udHJvbGxlciAlcCBhZGRlZCIsIGNvbnRyb2xsZXIpOwogCiAgICAg
dW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgYXV0
byBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRy
b2xsZXIsIGluZGV4KTsKKyAgICBhdXRvIGdhbWVwYWQgPSBtYWtlVW5pcXVlPEdhbWVDb250cm9s
bGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rv
ci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsg
MSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
LmgKaW5kZXggMTVmMDRjNzA4ZTkwMDdiYjRkYWRlZTU0MzVjMzU3ZjAyZjUzMWM5My4uYTI1MjM0
ZmI4NzVhNzUxYzYzYzM3YmE2YTVjZWU3ZDQ1MzRkNWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMzYsNiArMzYsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgSElER2FtZXBhZEVsZW1lbnQgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBISURHYW1lcGFkRWxlbWVudChkb3Vi
bGUgdGhlTWluLCBkb3VibGUgdGhlTWF4LCBJT0hJREVsZW1lbnRSZWYgZWxlbWVudCkKICAgICAg
ICAgOiBtaW4odGhlTWluKQogICAgICAgICAsIG1heCh0aGVNYXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNw
cAppbmRleCA1NzQzOTFiNWMxMTFhMzJiZTkxMjVjYTZjZTA2MDBmNWQ2MzgyMjU3Li42ZDE0YjZi
MjE2MTBiODZjZTRjMDAxM2U1MDkxMWI4OGY5NWUxYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAK
QEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQo
SU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3Zp
ZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IGlu
ZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2Ft
ZXBhZD4gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8SElER2FtZXBhZD4oZGV2aWNlLCBpbmRl
eCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQgPSBtYWtlVW5pcXVl
PEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5z
aXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rl
ckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29k
ZXJHZW5lcmljLmNwcAppbmRleCBhNGEzMGI1MmFiZTQ4YWY4NTBkYzdjNzQ3YTNiY2RlMWQ1MWZk
YTVmLi4wZTU5NzIzMjFiNWY3M2Y1NzJiZDc5NjU4ODExZjAwM2E5NWVkNDkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJp
Yy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgS2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlv
bmFyeSB7CiAgICAgdXNpbmcgTm9kZSA9IFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBib29sLCB1
aW50MzJfdCwgdWludDY0X3QsIGludDMyX3QsIGludDY0X3QsIGZsb2F0LCBkb3VibGUsIFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+PjsK
IAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYg
a2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxOb2RlPihz
dGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KKyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtl
eSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3
YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJl
dHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KIAogcHJpdmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAgc3Rh
dGljIGJvb2wgcmVhZFNpbXBsZVZhbHVlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29k
ZXIsIEtleWVkRGVjb2RlckdlbmUKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5
ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNp
emUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNp
emUpOwogfQogCiBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpAQCAtODYsNyArODYsNyBAQCBLZXllZERlY29k
ZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogICAgIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGUgdHlwZTsKICAgICBTdHJpbmcg
a2V5OwogCi0gICAgbV9yb290RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFy
eT4oKTsKKyAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwog
ICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChtX3Jvb3REaWN0aW9uYXJ5LmdldCgpKTsKIAog
ICAgIGJvb2wgb2sgPSB0cnVlOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEtleWVkRGVjb2RlckdlbmVy
aWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgYXV0byogY3VycmVudERpY3RpbmFyeSA9IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKLSAg
ICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFy
eT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlv
bmFyeT4oKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9u
YXJ5LmdldCgpKTsKICAgICAgICAgICAgIGN1cnJlbnREaWN0aW5hcnktPmFkZChrZXksIFdURk1v
dmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYsMTMgKzE1Niwx
MyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgb2sgPSByZWFkU3RyaW5nKGRlY29k
ZXIsIGtleSk7CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXk+KCk7Cisg
ICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheT4oKTsKICAgICAgICAg
ICAgIG1fYXJyYXlTdGFjay5hcHBlbmQobmV3QXJyYXkuZ2V0KCkpOwogICAgICAgICAgICAgbV9k
aWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0FycmF5KSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVy
aWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50OiB7Ci0gICAgICAgICAgICBhdXRvIG5ld0RpY3Rp
b25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICBhdXRv
IG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgICAgICAgICBt
X2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7CiAgICAgICAgICAg
ICBtX2FycmF5U3RhY2subGFzdCgpLT5hcHBlbmQoV1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7CiAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDJmODQxMDQ3NDYzOTU1OGYyOTVl
ODFhNTE3MTlhODczNGIzMmQ1OGEuLjIxY2MxZWJlNGE5MDFhMTNjNzQ0MDNkYzAxY2YyZmM4MTgx
MzAxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2Rl
cigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJpYz4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmljPigpOwogfQogCiB2
b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5p
bWF0b3JHZW5lcmljLmNwcAppbmRleCA3YWU2NWM1YThkMzA5ZTNkZWVmNTNjZThjZjFlMzAyNDI2
ZDI3YzE0Li4yMDhhZjdiODQ3OWVjYWVmNTUzMGNjYzU1N2I3MzZlYmFiY2JjYjhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc2Ny
b2xsQ2FwdHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
QW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvckdlbmVyaWM6
OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAg
ICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fb3ZlcmxheVNjcm9s
bGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpvdmVybGF5
U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKLSAgICBtX2tpbmV0aWNBbmltYXRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFy
ZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX2tpbmV0aWNBbmltYXRp
b24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFyZWEs
IFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CkBAIC03Myw3ICs3Myw3
IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24oKQogICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9zbW9vdGhBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvblNt
b290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBv
aW50JiYgcG9zaXRpb24pIHsKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwg
W3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogICAgICAgICB1cGRhdGVQb3NpdGlvbihX
VEZNb3ZlKHBvc2l0aW9uKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAppbmRleCBlN2RkMTkxNDA0MTcxOTY4Zjkw
ZDZmZWEzMzU0ZTE0Y2VmNmY1NTY3Li4zNjFlOWRmMzI0NWJlNTY1YjBlMmE0MWRmMThiMjZmZmJj
NzE5Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVj
b2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNv
ZGVyR2xpYi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5
ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckdsaWI6OktleWVk
RGVjb2RlckdsaWIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3NDA0
YmNiZDQ0OWFhNDkyMWI4Y2UyYjdlMDE4NDQ5NTAxMDZmNjgwLi43MGQyNGMxMTkzZjhlNWM3MGQx
ZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVu
Y29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckdsaWI+
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyR2xpYj4oKTsKIH0KIAogS2V5
ZWRFbmNvZGVyR2xpYjo6S2V5ZWRFbmNvZGVyR2xpYigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYTIzZTIxOWQxYTY4NmRhNzMw
YzAxMWJlMGQxMjQ5Y2NlMGJhNDVjZC4uZWZjY2M1YzZmNzlhNWE5YTJlZTQ3NzBiZjVjYzk5NGY4
NDJiOTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNsZWFyVGlt
ZXIoKQogdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAg
IEFTU0VSVCghbV9mcmFtZVRpbWVyKTsKLSAgICBtX2ZyYW1lVGltZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKKyAgICBt
X2ZyYW1lVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZh
bmNlQW5pbWF0aW9uKTsKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9
CiAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigp
CiB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFtX2RlY29kaW5nQ2FsbGJhY2tzKQotICAgICAgICBtX2RlY29kaW5n
Q2FsbGJhY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+
KCk7CisgICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBtYWtlVW5pcXVlPFZlY3RvcjxGdW5j
dGlvbjx2b2lkKCk+LCAxPj4oKTsKIAogICAgIG1fZGVjb2RpbmdDYWxsYmFja3MtPmFwcGVuZChX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDBkMzU1NjE4OTcw
ZmIyNzdmNzJlNzg5OTBlM2Y0ZjJhMjE2ZmJjNjkuLjM1M2ZjYTY2MDEzMjY0YjAyNDYyYTU3MTIy
NGQwNWExODFkOTY4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBj
bGFzcyBUZXh0TGF5b3V0IHsKICAgICBUZXh0TGF5b3V0KFJlbmRlclRleHQmIHRleHQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB4UG9zKQogICAgICAgICA6IG1fZm9udChmb250KQog
ICAgICAgICAsIG1fcnVuKGNvbnN0cnVjdFRleHRSdW4odGV4dCwgeFBvcykpCi0gICAgICAgICwg
bV9jb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleFRleHRDb250cm9sbGVyPihtX2Zv
bnQsIG1fcnVuLCB0cnVlKSkKKyAgICAgICAgLCBtX2NvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb21w
bGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUpKQogICAgIHsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCA3
MjA0NTNkOWYwNDZkNzlmNDhhMDliODFhZjcwMDBmNGRlM2JlMDI1Li5jZWZkOGQ0MjI0NGQwNmZj
YjgyNGJlNWUzYjczNDE5Y2Q0OThhNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRQb2ludC5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIEludFBvaW50Owog
Y2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgRmxvYXRQb2ludCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCgpIHsgfQogICAgIEZsb2F0UG9pbnQo
ZmxvYXQgeCwgZmxvYXQgeSkgOiBtX3goeCksIG1feSh5KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTg0YjQ0YjA3YTQxMjIxNmI5ZWM1OTg0MjJm
MDc4N2YwZTZjN2FlYi4uZTBiNDlmMjQ3YzIwMDliZGQ1ZjFkMGM4ZWJhN2FkNmM3ZWI4Y2JkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTM5NCw3ICsz
OTQsNyBAQCBHbHlwaERhdGEgRm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hh
cmFjdGVyKSBjb25zdAogYXV0byBGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEoKSBjb25zdCAt
PiBEZXJpdmVkRm9udHMmCiB7CiAgICAgaWYgKCFtX2Rlcml2ZWRGb250RGF0YSkKLSAgICAgICAg
bV9kZXJpdmVkRm9udERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRGb250cz4oKTsKKyAg
ICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBtYWtlVW5pcXVlPERlcml2ZWRGb250cz4oKTsKICAg
ICByZXR1cm4gKm1fZGVyaXZlZEZvbnREYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmgKaW5kZXggMmU1OGJkNjllYmI1MzkxZTAzNmQyOGMyNzAyYzFmNDUwNTA4
YjMxMi4uZWY2MDUyMjAxOTcwOGVmMTVmMDgyOWZhN2Q5YzU2OTgxNTJjOTZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMzQ1LDcgKzM0NSw3IEBAIEFMV0FZ
U19JTkxJTkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25z
dAogCiAgICAgYm91bmRzID0gcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChnbHlwaCk7CiAgICAgaWYg
KCFtX2dseXBoVG9Cb3VuZHNNYXApCi0gICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IHN0ZDo6
bWFrZV91bmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7CisgICAgICAgIG1fZ2x5
cGhUb0JvdW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7
CiAgICAgbV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRyaWNzRm9yR2x5cGgoZ2x5cGgsIGJvdW5k
cyk7CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDBhNjJhMjc1YmM2OTJlZjM5OTExNDBlMDI4ZjU4
MDA0MjFkMGM3MTEuLjM3MDliNDFlYjJiN2JkMGJmN2IxMDJhYzVkYmVmZTJmNzc3M2FmMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAt
MjQ0LDcgKzI0NCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAgICAgICAgICAgICAgICAg
aXQgPSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5maW5kKGtleSk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGl0ICE9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgpLmVuZCgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpCi0gICAgICAgICAgICAg
ICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZv
bnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaXQt
PnZhbHVlID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZv
ckFsdGVybmF0ZU5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDcy
NzRkYjBkYjMyYjNiNDFiM2UwZTFiMWVkMGZiMmFlYThiMzZhM2IuLjY0ODE4ZjRiNTE1NWQ0MmJm
YWM4MWI2MWY0YjVmOWNkZWE1NDUyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgUmVm
PEZvbnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2Fz
Y2FkZURlc2NyaXB0aQogICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
Zm9udHMuZ2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7Ci0gICAgbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVF
bnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250
U2VsZWN0b3IpKSk7CisgICAgbmV3RW50cnkgPSBtYWtlVW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVF
bnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250
U2VsZWN0b3IpKSk7CiAgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGdseXBocyA9IG5ld0VudHJ5
LT5mb250cy5nZXQoKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQ
cnVuZUludGVydmFsID0gNTA7CkBAIC0zMjYsOSArMzI2LDkgQEAgc3RkOjp1bmlxdWVfcHRyPERp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1
bihHcmEKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
PiBkaXNwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3Bs
YXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CiAgICAgR3Jh
cGhpY3NDb250ZXh0IHJlY29yZGluZ0NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxh
eUxpc3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlM
aXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3QsIGNvbnRleHQu
c3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsICpk
aXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJhbnNmb3Jt
KCkpOwogICAgIH0pOwogICAgIAogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChzdGFydFgsIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGVGb250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZUZvbnRzLmNwcAppbmRleCBkYjc0MzAyZTlkYWE0ZWI1MmMwY2UwODFmZDU2MDUyNzk1NzhmYmY0
Li4xMmFjODM3ZmNkMjQ2NWY5ZjgxZGViMDY4N2FhNzc2ZDVlYTA2NDUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApA
QCAtODQsNyArODQsNyBAQCB2b2lkIEZvbnRDYXNjYWRlRm9udHM6OkdseXBoUGFnZUNhY2hlRW50
cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYQogewogICAgIEFTU0VSVCgh
Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlcikuZ2x5cGgpOwogICAgIGlmICghbV9taXhl
ZEZvbnQpIHsKLSAgICAgICAgbV9taXhlZEZvbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1peGVkRm9u
dEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKKyAgICAgICAgbV9taXhlZEZvbnQgPSBt
YWtlVW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKICAgICAg
ICAgbV9zaW5nbGVGb250ID0gbnVsbHB0cjsKICAgICB9CiAgICAgbV9taXhlZEZvbnQtPnNldEds
eXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGdseXBoRGF0YSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDI1OWU5
NzUzM2NhZWRjZmMxNDVmZjdhYjQyOGVhMTY5ZjY0YjE1OTQuLjc5ZTJmNTM4OGM0NmU1ODkyMzAx
NjFjNDc0NTI1NDE5MjQ3ZTgyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB0ZW1wbGF0
ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NNYXA8VD46OkdseXBoTWV0cmljc1BhZ2Um
IEdseXBoTWV0cmljc01hcAogICAgIH0KIAogICAgIGlmICghbV9wYWdlcykKLSAgICAgICAgbV9w
YWdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlw
aE1ldHJpY3NQYWdlPj4+KCk7CisgICAgICAgIG1fcGFnZXMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8
aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+PigpOwogCiAgICAgYXV0byYg
cGFnZSA9IG1fcGFnZXMtPmVuc3VyZShwYWdlTnVtYmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVua25vd25NZXRyaWNzKCkpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygp
KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuICpwYWdlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaAppbmRleCAxYjQyMjg2ZGRmNDY1YzBlMmIxMjRkOGFmZGYwZjdjZDY0Nzdj
YmI3Li5lMzNmOGZiZTczODkyZTM0YjhkZWY4MzZkNDZmNWM3MGM3OWM2MWRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCaXRtYXBUZXh0dXJlR0w7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0
eWxlKTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDk0YWFjMWRm
ODM1NmJkYjEwZGY3ZDA4NmZhY2UyNmMxZTM3MTgzMjYuLmM5NmVjYTNhMTVlZDY1MDU0OTRmMjMw
OGY1ZTU3Yzc5MGE3MWUxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkK
ICAgICBpZiAobV90cmFuc2Zvcm0pCiAgICAgICAgICptX3RyYW5zZm9ybSA9IG1hdHJpeDsKICAg
ICBlbHNlCi0gICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgR3JhcGhpY3NMYXllcjo6Y2hpbGRyZW5UcmFuc2Zvcm0oKSBjb25zdApAQCAtMzU2LDcg
KzM1Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKICAgICBpZiAobV9jaGlsZHJlblRyYW5zZm9y
bSkKICAgICAgICAgKm1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQotICAg
ICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1ha2VVbmlx
dWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
cjo6c2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmIGxheWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDAwOWQ0
ODY4OTVkNTY4NjI1NDAxMWRmNTYwMGE3MjExMjQzMGU2MmYuLjdhMWZlYWFjNzllNzhiYTg4ZmNh
ZGNiODVlMzI5OWZkNzlhMDA0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBGbG9hdEFu
aW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAg
ICAgfQogCiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC0x
MzIsNyArMTMyLDcgQEAgY2xhc3MgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5p
bWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9u
ZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhlcikK
QEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBGaWx0ZXJBbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBB
bmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNs
b25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAgICAgRmlsdGVyQW5p
bWF0aW9uVmFsdWUoY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIG90aGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IGU0NGE2MWUyMjRjYTExOTRk
MDkxOGQ0NDQzYmVhN2MxZTdlNGEwZTEuLmMyMWZlMjlkMGYwNWZkZGUzOWUwYzRiZjRiNjFhMWM5
NzZjY2IxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
QEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9u
cyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpYwogdm9pZCBJbWFnZTo6
c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSgpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvblN0
YXJ0VGltZXIpCi0gICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKTsKKyAgICAgICAgbV9hbmlt
YXRpb25TdGFydFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3RhcnRB
bmltYXRpb24pOwogICAgIGlmIChtX2FuaW1hdGlvblN0YXJ0VGltZXItPmlzQWN0aXZlKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXItPnN0YXJ0T25lU2hvdCgw
X3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCmluZGV4IDc1N2YwOTU2N2RjNWRmZGY1YmUwMjYzOTYzOWQxZWZlYzcxOGMwZGIuLmFiZTg2
OTQxOTRmZjdjMTc1MTAwYjY5ODgwNGExMjQwYmQ2MmM4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBA
QCBjbGFzcyBOdWxsTWVkaWFQbGF5ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIDA7IH0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oKTsgfQogCiAgICAgZG91YmxlIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmll
ZFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxpdmVVcGRhdGVJ
bnRlcnZhbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBS
ZWY8TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNs
aWVudCkKIE1lZGlhUGxheWVyOjpNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYgY2xpZW50
KQogICAgIDogbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcmVsb2FkVGltZXIoKnRoaXMsICZN
ZWRpYVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2Vf
dW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1h
a2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKQEAgLTUxMSw3
ICs1MTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAjZW5kaWYKICAgICAgICAgbV9wcml2YXRl
LT5sb2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX3ByaXZhdGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOworICAgICAg
ICBtX3ByaXZhdGUgPSBtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOwog
ICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQodGhpcyk7CiAgICAgICAg
IGNsaWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQodGhpcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaAppbmRleCAwMGQ4NWE0OTk2NDJiM2Y1MjM3YjMwYmZmNWY0ZTZiNDI5MTMwZWNkLi4x
ZDJmYzAwOTIwNGE4YzAyNTU0MWIyYTJkN2M1ZjBkMGJlNWM5OWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAt
MTI5LDcgKzEyOSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAg
dmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2FibGUoKSA9PSBNZWRp
YVRpbWU6Onplcm9UaW1lKCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVr
YWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhN
ZWRpYVRpbWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSA/IG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1p
bk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmly
dHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBNZWRpYVRpbWUgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobWF4VGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmlydHVh
bCBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAppbmRleCAz
ZTY4ODA1NWJkY2MwYjEwZTQxNjBjZjE0MGQ0ZmFjZTkyMzIwYTY1Li41YWQ5MzM0OWJmYjQwZGE0
ZmYzMDhhZGE5ODQ5N2ZjMzc1ZTEwOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtODksNyArODksNyBAQCBGbG9hdFBv
aW50R3JhcGg6Ok5vZGUqIEZsb2F0UG9pbnRHcmFwaDo6ZmluZE9yQ3JlYXRlTm9kZShGbG9hdFBv
aW50IHBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHRlc3ROb2RlLmdldCgpOwogICAgIH0KIAot
ICAgIG1fYWxsTm9kZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRQb2ludEdyYXBoOjpO
b2RlPihwb2ludCkpOworICAgIG1fYWxsTm9kZXMuYXBwZW5kKG1ha2VVbmlxdWU8RmxvYXRQb2lu
dEdyYXBoOjpOb2RlPihwb2ludCkpOwogICAgIHJldHVybiBtX2FsbE5vZGVzLmxhc3QoKS5nZXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKaW5k
ZXggOWRjZWU4NzYxNjI1YzAxNDg4YjRkOTBkMWFmMjJlMzU0MzVkNGE1ZS4uNmE3MDFjMWExMjg5
NzlkNGM5NDhiMWE3YmFiNTY4ZjEwMjQ3Y2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZWdpb24uY3BwCkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBSZWdpb246OnNl
dFNoYXBlKFNoYXBlJiYgc2hhcGUpCiAgICAgfQogCiAgICAgaWYgKCFtX3NoYXBlKQotICAgICAg
ICBtX3NoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOworICAg
ICAgICBtX3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOwogICAgIGVs
c2UKICAgICAgICAgKm1fc2hhcGUgPSBXVEZNb3ZlKHNoYXBlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggNzk2MzNmZGI2YWRmMzRmZmZlZThmODI2
NzQ4M2I4Y2ZmNWNlMWYzYy4uYmMzOWMzMDAwMGVhOGI2YjVhOWU2MGNmMmJjNWFlMTg2NjY0YjZj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKQEAgLTkxLDYg
KzkxLDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICB9OwogCiAgICAgY2xhc3MgU2hhcGUgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFNoYXBl
KCkgPSBkZWZhdWx0OwogICAgICAgICBTaGFwZShjb25zdCBJbnRSZWN0Jik7CkBAIC0xNDgsNyAr
MTQ5LDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaGFwZSYsIGNvbnN0IFNoYXBlJik7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IHN0ZDo6bWFrZV91
bmlxdWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBtYWtlVW5pcXVlPFNo
YXBlPigqbV9zaGFwZSkgOiBudWxscHRyOyB9CiAgICAgdm9pZCBzZXRTaGFwZShTaGFwZSYmKTsK
IAogICAgIEludFJlY3QgbV9ib3VuZHM7CkBAIC0yODksNyArMjkwLDcgQEAgT3B0aW9uYWw8UmVn
aW9uPiBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBkZWNvZGVyID4+
IHNoYXBlOwogICAgICAgICBpZiAoIXNoYXBlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihX
VEZNb3ZlKCpzaGFwZSkpOworICAgICAgICByZWdpb24ubV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hh
cGU+KFdURk1vdmUoKnNoYXBlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgcmVnaW9uIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggMWU0ZTdmYWMzNmM3YzMwYTY1NmYxZWZkMDBhYWNl
NmQ0Yzk1Y2VkYS4uNjkzOWY5MTdhZTZmYWIxM2VjMWM5MWQ0YWE4MTU1NjZhOTE3MGRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRU
cmFja1JlcHJlc2VudGF0aW9uLmNwcApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBOdWxsVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24gOiBwdWJsaWMgVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gewogCiBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQmKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVs
b2NpdHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURh
dGEuaAppbmRleCA3YWViNzU5YjM0YjE4YTFlODQ2ODNmMjljNjE2YTZjZGIwMjU3NGQ4Li42YTA2
Y2M2ZWJhMzRiOTU5ZDJmMTg2MDIyOWUxZjJmMzhmZjMxOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaApAQCAtNjUsNiArNjUsNyBAQCBz
dHJ1Y3QgVmVsb2NpdHlEYXRhICB7CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBjb25zdCBWZWxvY2l0eURhdGEmKTsKIAogY2xhc3MgSGlzdG9yaWNh
bFZlbG9jaXR5RGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHQzREFOR0xFLmNwcAppbmRleCA3N2EzZTE4YzFjNmMyZTI3ZGQ2M2FlMjk2ZjZlYzlhMWVh
MmZhZTFmLi42MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1YjE2Y2E0ZTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHQzREFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMz
RCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRl
bnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lv
bnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lv
bnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50
KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAppbmRleCBhOWVjZDMyMTM2ZGE4NzcwMmY0Nzhh
ZmNkOGFjYzhlYjk3YzIzOTQwLi45OWRkZGQ4Zjg1MDI3MzAzYmI4YTc2M2VjYWMyYjg2OTg4MmZh
OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgK
QEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTZWxlY3Rp
b25PcHRpb25BVkZPYmpDOwogCiBjbGFzcyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRyYWNrKik7CiAgICAgZXhwbGljaXQgQVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbChBVkFzc2V0VHJhY2sqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCA1Y2Q3NzcyYWMyZWUxY2Vh
OTAxMGU4MzM3MWVhNmFhZWY3ZjA2OTU4Li42YjNjOTIyZTZhZWJlNTkyMGFlNjVlNTdhZjA1ZWRl
NGFkMDM3NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLm1tCkBAIC0zMTMsMTIgKzMxMywxMiBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDOjpwcmVwYXJlKENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQog
ewogICAgIEFTU0VSVChtYXhGcmFtZXMgPj0gMCk7CiAKLSAgICBtX3RhcERlc2NyaXB0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpwcm9jZXNzaW5n
Rm9ybWF0KTsKKyAgICBtX3RhcERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zvcm1hdCk7
CiAgICAgaW50IG51bWJlck9mQ2hhbm5lbHMgPSBwcm9jZXNzaW5nRm9ybWF0LT5tQ2hhbm5lbHNQ
ZXJGcmFtZTsKICAgICBkb3VibGUgc2FtcGxlUmF0ZSA9IHByb2Nlc3NpbmdGb3JtYXQtPm1TYW1w
bGVSYXRlOwogICAgIEFTU0VSVChzYW1wbGVSYXRlID49IDApOwogCi0gICAgbV9vdXRwdXREZXNj
cmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigp
OworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CiAgICAgbV9vdXRwdXREZXNjcmlw
dGlvbi0+bVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24t
Pm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKICAgICBtX291dHB1dERlc2NyaXB0
aW9uLT5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkOwpA
QCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBh
cmUoQ01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0cmVhCiAgICAgLy8gTWFrZSB0
aGUgcmluZ2J1ZmZlciBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgYXQgbGVhc3QgdHdvIGNhbGxiYWNr
cyB3b3J0aCBvZiBhdWRpbywgb3IgMXMsIHdoaWNoZXZlciBpcyBsYXJnZXIuCiAgICAgc2l6ZV90
IGNhcGFjaXR5ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigyICogbWF4RnJhbWVzKSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihrUmluZ0J1ZmZlckR1cmF0aW9uICogc2FtcGxlUmF0ZSkpOwog
Ci0gICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7Cisg
ICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAgICAgbV9yaW5n
QnVmZmVyLT5hbGxvY2F0ZShDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnByb2Nlc3NpbmdGb3Jt
YXQpLCBjYXBhY2l0eSk7CiAKICAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJpYWJsZS1s
ZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMgbmV3KCkg
b3BlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4
IDM2MWE5OTJmMGM0NjUwY2YyYjk2MjhhNjQyZTk3YjVkYmEwZTJhM2MuLjRmYzY3ODdkZDhkOTA3
Y2FkNmEyNzdmMzliMWVkMzJlZDY3OWE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Q
cml2YXRlPiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OmNyZWF0ZUNETShjb25zdCBTdHJp
bmcmCiAgICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc+KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpz
dXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggODkxOGU4MGUwYzM5MGQ3ZThkYWNhMTkwMzk0
NzlhMGQwZjY5NWFkOC4uNTM4Njk2OWY5NDk3NmYzODM2ODAxODc0MWJhZmQxMjU1MWUyOGI4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTM1LDYgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEZvdXJDQzsKIAogY2xhc3MgQ0RNRmFjdG9y
eUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5RmFpclBs
YXlTdHJlYW1pbmcmIHNpbmdsZXRvbigpOwogCkBAIC00OSw2ICs1MCw3IEBAIGNsYXNzIENETUZh
Y3RvcnlGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAK
IGNsYXNzIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2
YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCmluZGV4IDRhNTBlYjQxYTU4MzY4M2Y2NmE2NzYyMjk1NDZjNTgwMWIyMGI1ODgu
LmQ4MWJjYTM1NDkwMzkxOGExYmRhMGFkZGQ5NThkNTk0M2Y3MDFiMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMzcsNiArMzcs
NyBAQCBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
OwogCiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIDogcHVibGljIENETVByaXZh
dGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTGVnYWN5Q0RNKiBjZG0pCiAg
ICAgICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyY2MwOGE5YTNiNTFjYmY3YWIxOTc0MjAyYTk4YjE2
OWRiNDNjMTAxLi4wY2QwMTI5YTNjZDllYWY4NjNhZDQ3ODk4Mzg1MDMxZDhiNzZlZjZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpA
QCAtMTQ3LDEwICsxNDcsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24oTGUKICNlbmRpZgogICAg
IAogICAgIGlmIChzaG91bGRVc2VBVkNvbnRlbnRLZXlTZXNzaW9uICYmIENETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKQotICAgICAgICBzZXNzaW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0
ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlz
LCBjbGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFy
YW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBjbGllbnQpOwogICAgIGVsc2UKICNpZiBI
QVZFKEFWU1RSRUFNU0VTU0lPTikKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJv
dG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3Rv
Y29scyksICp0aGlzLCBjbGllbnQpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3gu
aAppbmRleCBlNDYwMTQ4MzA1Y2VlZDFiNTY0ODQxOTk2Y2I5ZmMzNGNkYzNhYjUyLi4xNDdjMzc5
ZjEyNzA2ODJlNTVmZDIxNWNlMjNhMzllYTEyNDk1YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQ
c3NoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewog
cHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzaSI7
IH0KIApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAgICAgRm91ckNDIG1fc2NoZW1l
OwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1
ZXN0SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVs
bEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJu
ICJma3JpIjsgfQogCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAg
ICAgS2V5SUQgbV9rZXlJRDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5
U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IGZpbmFsIDogcHVibGljIElT
T0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJu
ICJma2FpIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhOyB9CkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rv
cjx1aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCBmaW5hbCA6IHB1YmxpYyBJ
U09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVy
biAiZmtjeCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQpAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09G
YWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0
b3I8dWludDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCBmaW5hbCA6
IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUo
KSB7IHJldHVybiAiZmt2bCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gdmVyc2lvbnMo
KSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb25zOyB9CkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggOiBwdWJs
aWMgSVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV92ZXJzaW9uczsKIH07CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCA6IHB1Ymxp
YyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXF1ZXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZv
dXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNrIjsgfQogCkBAIC0xMDYsNyArMTA2LDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94
IDogcHVibGljIElTT0JveCB7CiAgICAgT3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlW
ZXJzaW9uTGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggZmluYWwgOiBw
dWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkg
eyByZXR1cm4gImZwc2QiOyB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IDogcHVibGljIElTT0JveCB7CiAg
ICAgVmVjdG9yPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveD4gbV9yZXF1ZXN0czsK
IH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCA6
IHB1YmxpYyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggeworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94IGZpbmFsIDogcHVibGljIElT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZmFpclBsYXlTeXN0ZW1JRCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4
IDg1N2YzMWYyNzcyZjQwODFmYmE2MzhmODEwYzExNDk0Mjg1OGI5NGIuLjU5Y2Y4YmEyMTMxNmIz
MDdjMDUwMjNlZDU2ZDliMzlkMjU2MTdmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC0zODQsNyArMzg0LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpidWZmZXJlZCgpIGMKICAgICBpZiAoIW1fY2FjaGVkTG9hZGVkVGltZVJhbmdl
cykKICAgICAgICAgbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzID0gcGxhdGZvcm1CdWZmZXJlZFRp
bWVSYW5nZXMoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsKIH0KIAogTWVk
aWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJN
YWMuY3BwCmluZGV4IDM5NWNlNzgyZThjNTgwNDU5NjE2MjQ2OTgwZjMzZWFkZjAzYjc4YjIuLjVm
NWI2ZjY5NTJiNDkzYTk4ODdiYWZjN2YzMGI3YmVlNzMzNDE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMoKSA9
IGRlZmF1bHQ7CiBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcigpCiB7CiAgICAgaWYgKCFtX3RhcmdldFBp
Y2tlcikKLSAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKKyAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBt
YWtlVW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKIAogICAgIHJl
dHVybiAqbV90YXJnZXRQaWNrZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBhZjBh
N2NjNzdiZjI5MmNkZmQ2NmFiYzZlN2Y2M2E1MDkwMGFhZDY3Li41YTUxOGM1MTUxZDA1YzNlZjVi
MDk0MmM0MmUzYjI0MDIwMzYwYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTM0Myw3ICszNDMs
NyBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJs
ZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVy
KTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJu
IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0s
CiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCBz
dXBwb3J0c0tleVN5c3RlbSk7CiB9CiAKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgYm9vbCB0
aW1lUmFuZ2VJc1ZhbGlkQW5kTm90RW1wdHkoQ01UaW1lIHN0YXJ0LCBDTVRpbWUgZHVyYXRpb24p
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0g
ICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7CiAKICAgICBpZiAoIWF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1
cm4gdGltZVJhbmdlczsKQEAgLTExMzcsNyArMTEzNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdh
Y3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vz
c2lvCiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25B
VkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsKIH0KIAogI2VsaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCB2b2lkIEFWRldy
YXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lk
KiBvYnNlcnZlciwgQwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNh
bGxiYWNrKGlmPSVkKSAlcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihvYnNlcnZlciks
IG5vdGlmaWNhdGlvbk5hbWUpOwogI2VuZGlmCiAKLSAgICBhdXRvIG5vdGlmaWNhdGlvbkRhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4ocHJvcGVydHlOYW1l
LCBvYnNlcnZlcik7CisgICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gbWFrZVVuaXF1ZTxOb3Rp
ZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIpOwogCiAgICAgZGlz
cGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBub3RpZmljYXRpb25EYXRh
LnJlbGVhc2UoKSwgcHJvY2Vzc05vdGlmaWNhdGlvbik7CiB9CkBAIC0xODMzLDcgKzE4MzMsNyBA
QCB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBB
VkNGUGxheWVySXRlbUxlZ2libGVPdXRwdQogCiAgICAgQVNTRVJUKGxlZ2libGVPdXRwdXQgPT0g
c2VsZi0+bV9sZWdpYmxlT3V0cHV0KTsKIAotICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPExlZ2libGVPdXRwdXREYXRhPihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0
aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIGNvbnRleHQpOwor
ICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEgPSBtYWtlVW5pcXVlPExlZ2libGVPdXRwdXREYXRh
PihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0b01lZGlhVGlt
ZShpdGVtVGltZSksIGNvbnRleHQpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBsZWdpYmxlT3V0cHV0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NDdWUp
OwogfQpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgQm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxv
YWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXMKIAogICAg
IExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlcXVlc3RlZFJlc291cmNlKCVwKSIsIHNlbGYpOwogCi0gICAgYXV0byBsb2FkUmVxdWVz
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9hZGluZ1JlcXVlc3Qs
IGNvbnRleHQpOworICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0gbWFrZVVuaXF1ZTxMb2FkUmVx
dWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5j
X2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbG9hZFJlcXVlc3REYXRhLnJlbGVhc2UoKSwg
cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk7CiAKQEAgLTE5NTMsNyArMTk1
Myw3IEBAIFBsYXRmb3JtTGF5ZXIqIEFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIC8vIENyZWF0ZSBhIFBsYXRmb3JtQ0FMYXllciBzbyB3ZSBjYW4g
cmVzaXplIHRoZSB2aWRlbyBsYXllciB0byBtYXRjaCB0aGUgZWxlbWVudCBzaXplLgotICAgIG1f
bGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKTsKKyAgICBt
X2xheWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CiAgICAgaWYgKCFt
X2xheWVyQ2xpZW50KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUxNGFmMWEyN2YyNmJk
MWFkNjAyODYwNGE1NzUyZjBkZjlhOGRmNTIuLjdkZTE0YzI1NzFmN2QzOGVlY2JiMzQ4ZmRhM2M3
NGE0M2RlYjgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMubW0KQEAgLTMzLDEzICszMywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhB
VlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAg
IDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0
aW9uKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KG9wdGlvbikpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC01OSw3
ICs1OSw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNG
cm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRl
bVRyYWNrKEFWUGxheWVySXRlbVRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwg
PSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNl
dFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtNjksMTQgKzY5LDE0IEBAIEFWUGxheWVy
SXRlbVRyYWNrKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiB9
CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKEFW
QXNzZXRUcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJv
bVRyYWNrKCk7CiB9CiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRy
YWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgQVZBc3NldFRyYWNrKiBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakM6OmFzc2V0VHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24oTWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9t
VHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGVjMGQwZWRkYmY3
M2JlZWRhNjcxN2I3YTUxOGM3MzIxMjYwOTVhZTIuLmRmNTIyNmE0ZWEwMzZlNTZmYTI1MzlhNjI3
NjJhMjM4YWU3MGUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFj
ayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2lt
cGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisg
ICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykp
CiAgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCk7CkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykK
IHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgK
aW5kZXggMjJhYWZlYzdiODM0MjdiODEzMGE3YzA0M2Y4ZjY3MjA4MzRjY2E0Ny4uNWQ4ZTI1MDc0
NzBiYzdhNDk5OTU1Yzk4MWIxNzZmZjQ0NGZiYzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0zOSw3ICszOSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzsKIAotY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTGVn
YWN5Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDPiB7CitjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyBmaW5hbCA6IHB1Ymxp
YyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDKiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMmZlMjUyNDk5NGMzYjE5NDQ1OWVjMzMzMDI5YWJk
OWU5ODVjNzViNC4uYmIwNzc3NjEzODJjODgwODA3YmE1M2M4ZGFkYjI5NDU2ZTU2ZWI2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC00MTIs
NyArNDEyLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpyZWFkVHJhY2tNZXRhZGF0YSgp
CiAgICAgICAgIHx8ICFtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKQogICAgICAg
ICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKS52YWx1ZSgpICE9IGZpbmFs
VHJhbnNmb3JtCiAgICAgICAgIHx8IG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNpemUoKSAhPSBz
aXplKQotICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgc2l6ZSwga0NW
UGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdl
Q29tcGF0aWJsZTo6WWVzKTsKKyAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VV
bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNp
emUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6Oklz
Q0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CiAKICAgICBtX3NpemUgPSBleHBhbmRlZEludFNpemUo
bV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+cm90YXRlZFNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCBjNjU5MGJkZWU2N2I0ZTIwOTg4OGU5NmEyYzMzMGYyZmUyMzM4Njk3Li44
NDk5MDRhY2Y5MjljN2NmZTNmOTRiYzQxMGUwZDBiMmU4YjFiNDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYQogICAg
IGlmICghaXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtd
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgQVNT
RVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKIH0K
QEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJgogCiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24ocGxheWVyKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjpt
YWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXJPYmpDPigpKQogICAgICwgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxh
eWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpCiAgICAgLCBtX29iamNPYnNlcnZlcihhZG9w
dE5TKFtbV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVyOm1ha2VX
ZWFrUHRyKCp0aGlzKV0pKQogICAgICwgbV92aWRlb0ZyYW1lSGFzRHJhd24oZmFsc2UpCkBAIC0x
MzM3LDcgKzEzMzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5n
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRp
bWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIAogICAgIGlmICgh
bV9hdlBsYXllckl0ZW0pCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwpAQCAtMTg5Miw3ICsx
ODkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVS
b3RhdGlvblNlc3Npb24oKQogICAgICAgICAmJiBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXpl
KCkgPT0gbmF0dXJhbFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW1hZ2VSb3RhdGlv
blNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1v
dmUoZmluYWxUcmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdS
QSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKKyAg
ICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0
VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6
Olllcyk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0yMjE2LDcgKzIyMTYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFn
ZShVcGRhdGVUeXBlIHR5cGUpCiAjZWxzZQogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0
ZXMgPSBuaWw7CiAjZW5kaWYKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilhdHRyaWJ1dGVzKTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VV
bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilh
dHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTIyNjUs
NyArMjI2NSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgc2l6ZV90IGhlaWdodCA9
IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAg
aWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CisgICAg
ICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJD
Vj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1h
Z2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdo
dCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZv
cm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQpAQCAtMjMzMCw3ICsyMzMw
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3MKIHsKICAgICBpZiAoIWtleVN5c3RlbUlzU3Vw
cG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gc2Vz
c2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+KHRoaXMs
IGNsaWVudCk7CisgICAgYXV0byBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsKICAgICBtX3Nlc3Npb24gPSBtYWtlV2Vha1B0cigq
c2Vzc2lvbik7CiAgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lvbik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCmluZGV4IDczOTZlNWIxYjQzMTE5OGU1ZTYwZDhmY2QwNjM1OWJiMjdjZjQ5Zjcu
LmExZGQwZjkwOTFmYjI4NjQ2OGRiZTBhZTEwY2U4YjNjMTQyYzBiZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oCkBAIC0yNjgsNiArMjY4LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDCiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakM7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1NlZWsgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdTZWVrKGNvbnN0IE1lZGlhVGltZSYg
dGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9sZCwgY29uc3QgTWVk
aWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCkKICAgICAgICAgICAgIDogdGFyZ2V0VGltZSh0YXJn
ZXRUaW1lKQogICAgICAgICAgICAgLCBuZWdhdGl2ZVRocmVzaG9sZChuZWdhdGl2ZVRocmVzaG9s
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBmMTk1MTU2ZDhjZjIyNTZmNjBmOWY1
NTMyNDEyOWU4NTIzZDlkMzhiLi45YzBhZWY2MTlhZGMyYTMxOGYwZGI3ZDJlMzg2N2MyMWRmYzMx
ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMoTWVkaWEKICAgICAsIG1fcGxheWluZygwKQogICAgICwgbV9zZWVraW5n
KGZhbHNlKQogICAgICwgbV9sb2FkaW5nUHJvZ3Jlc3NlZChmYWxzZSkKLSAgICAsIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1h
a2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fZWZm
ZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcihFZmZlY3RpdmVSYXRlQ2hhbmdlZExpc3RlbmVyOjpj
cmVhdGUoKnRoaXMsIFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pKQogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQpA
QCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0CiAgICAgaWYgKCFpc0F2
YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5
ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3Vw
cG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6
OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrV2l0aFRvbGVyYW5jZShj
b25zdCBNZWRpYVRpbWUmIHRpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInRpbWUgPSAi
LCB0aW1lLCAiLCBuZWdhdGl2ZVRocmVzaG9sZCA9ICIsIG5lZ2F0aXZlVGhyZXNob2xkLCAiLCBw
b3NpdGl2ZVRocmVzaG9sZCA9ICIsIHBvc2l0aXZlVGhyZXNob2xkKTsKIAogICAgIG1fc2Vla2lu
ZyA9IHRydWU7Ci0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Nl
ZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CisgICAgbV9w
ZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNo
b2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBpZiAobV9zZWVrVGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgbV9zZWVrVGltZXIuc3RvcCgpOwpAQCAtNTQzLDcgKzU0Myw3IEBAIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdAog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVk
aWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhN
ZWRpYVRpbWVTZWVrYWJsZSgpKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdApAQCAtNTU4LDcg
KzU1OCw3IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpidWZmZXJl
ZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNv
dXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNl
UHJpdmF0ZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwog
fQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGlkTG9hZGlu
Z1Byb2dyZXNzKCkgY29uc3QKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKIAogICAgIGlmICghbV9y
Z2JDb25mb3JtZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gQHsgKF9fYnJpZGdlIE5T
U3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3Jt
YXRUeXBlXzMyQkdSQSkgfTsKLSAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0
cmlidXRlcyk7CisgICAgICAgIG1fcmdiQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAg
IH0KIAogICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBp
eGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKQEAgLTY0OSw3ICs2NDksNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAogICAgIGlmICghbV92aWRlb1Rl
eHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOworICAgICAgICBtX3ZpZGVvVGV4
dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsK
IAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRl
eHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1
cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHBy
ZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRl
eCBjYTNiMTEzNTUyYjM4ODVjOTk5NzdkYWUyYTIxZWExNjU3N2VkYTgwLi45ZGVlZTQ2ZjJjYTI0
NTI5NTNkZjVjYTg4YmI2OWY4MThlN2U0ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CkBAIC0xODMsNyArMTgzLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWEKICAgICA6IG1fcGxh
eWVyKHBsYXllcikKICAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFW
U2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRo
aXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3JlYXRlKCkpCi0gICAgLCBtX3ZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlciht
YWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2Vy
KCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ0lkZW50aWZp
ZXIoKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQot
ICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7
IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAgICAgICAgICAgc3Vw
cG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTA1NCwxMiArMTA1NCwxMiBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJhY2tzKCkKIAog
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMTA3Myw3ICsxMDczLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJl
bnRGcmFtZUltYWdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRl
ci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZm
ZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxC
dWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfSk7
CisgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1
ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChf
X2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtD
VlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCiAgICAgQVNTRVJUKG1faW1hZ2VQYWludGVy
LnBpeGVsQnVmZmVyQ29uZm9ybWVyKTsKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVm
ZmVyQ29uZm9ybWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQy5jcHAKaW5kZXggYzg3MWM1OTQ4MzU1MDg1NzE4MmM3YTI0ZDU1MzRiODVh
NWQ0ZWY3ZS4uMjk0ODNiYTVlOThkOTVmYThlNWVjOWE2YTEwYmY2NDFhYWUzNTU5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3Bw
CkBAIC0zNCwxOSArMzQsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sq
IHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwog
fQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zy
b21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1f
aW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikp
CisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRp
b24pKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjYsNyArNjYs
NyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRy
YWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFj
ayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3Vu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFr
ZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9w
ZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTc3LDcgKzc3LDcgQEAgQVZQbGF5ZXJJdGVtVHJh
Y2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRlbVRyYWNrKCkKIAogdm9pZCBW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFj
aykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApA
QCAtODgsNyArODgsNyBAQCBBVkFzc2V0VHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6
YXNzZXRUcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNl
bGVjdG9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQogewotICAg
IG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0
aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KaW5kZXggZmNjMjQ5NmExMzVhYTRmNzNhOGZlNTQ4ZDE0ZTBjODAwMDRh
ZDFiMC4uOTc1NmNmZmFmZDhjM2Y2ZmUzYjQ3YTIzMzM3MWI3NGRlYzk4ZDA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0KQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiAgICAgLCBtX3BhcmVudChwYXJlbnQpCiAg
ICAgLCBtX3RyYWNrSUQoLTEpCiAgICAgLCBtX3NlbGVjdGVkKGZhbHNlKQpAQCAtNTYsNyArNTYs
NyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZXNldFByb3Bl
cnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0g
c3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAg
bV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAg
ICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDE3
MWYyNzcyYzk0YTY5Y2RhNzM0OTNjYzljOGM3ODc4YjAwMTA4ZGQuLjg3NjUzNDQ1MjAyNGU2MTY1
MTQxN2EwNGEwZDk0NTA1OGE5NTQwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTYzNiwxMiArMTYz
NiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhDb21t
aXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgIGlmICh1c2VzRGlzcGxheUxpc3RE
cmF3aW5nKCkgJiYgbV9kcmF3c0NvbnRlbnQgJiYgKCFtX2hhc0V2ZXJQYWludGVkIHx8IGhhZERp
cnR5UmVjdHMpKSB7CiAgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKERpc3BsYXlMaXN0
UmVjb3JkU3RhcnQsIERpc3BsYXlMaXN0UmVjb3JkRW5kKTsKIAotICAgICAgICBtX2Rpc3BsYXlM
aXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisgICAg
ICAgIG1fZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4o
KTsKICAgICAgICAgCiAgICAgICAgIEZsb2F0UmVjdCBpbml0aWFsQ2xpcChib3VuZHNPcmlnaW4o
KSwgc2l6ZSgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChbJl0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlMaXN0LCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAq
bV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmlu
ZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHBhaW50R3JhcGhpY3NMYXllckNv
bnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSkpOwogICAgIH0K
QEAgLTI4NjcsNyArMjg2Nyw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjppc1J1bm5pbmdUcmFu
c2Zvcm1BbmltYXRpb24oKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVy
QW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvbnMpCi0gICAgICAgIG1fYW5pbWF0
aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOworICAgICAgICBtX2Fu
aW1hdGlvbnMgPSBtYWtlVW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYgY2FB
bmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIFNlY29uZHMgdGltZU9mZnNldCkKQEAgLTM5
MDMsNyArMzkwMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVDbG9uZUxheWVycyhD
bG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+CiAgICAgY29udGVudHNMYXll
ciA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fbGF5ZXJDbG9uZXMpCi0gICAgICAgIG1fbGF5ZXJD
bG9uZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xvbmVzPigpOworICAgICAgICBtX2xheWVy
Q2xvbmVzID0gbWFrZVVuaXF1ZTxMYXllckNsb25lcz4oKTsKIAogICAgIHByaW1hcnlMYXllciA9
IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLT5w
cmltYXJ5TGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwogICAgIHN0cnVjdHVyYWxMYXllciA9IGZp
bmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllckNs
b25lcy0+c3RydWN0dXJhbExheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXgg
M2FjNGMxZTMyYTE1NDhkNThjNjkxMTE3Y2M2OWEyOWM0ZGNmMGUxYS4uYzRiMmM5YzM0NzA4MGE2
YjdjOTZkNjcwMmY0YTRkOGEzMGM3ZjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1Nyw2ICsxNTcsNyBA
QCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBs
YXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgRmxvYXRTaXplIHBpeGVsQWxpZ25tZW50T2Zmc2V0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9waXhlbEFsaWdubWVudE9mZnNldDsgfQogCiAg
ICAgc3RydWN0IENvbW1pdFN0YXRlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICB1bnNpZ25lZCB0cmVlRGVwdGggeyAwIH07CiAgICAgICAgIHVuc2ln
bmVkIHRvdGFsQmFja2Ryb3BGaWx0ZXJBcmVhIHsgMCB9OwogICAgICAgICBib29sIGFuY2VzdG9y
SGFkQ2hhbmdlcyB7IGZhbHNlIH07CkBAIC0zMDksNiArMzEwLDcgQEAgY2xhc3MgR3JhcGhpY3NM
YXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQgewogICAgIHR5cGVkZWYgdW5zaWduZWQgQ29tcHV0ZVZpc2libGVSZWN0RmxhZ3M7CiAgICAg
CiAgICAgc3RydWN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzIHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3Q7CiAg
ICAgICAgIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3Q7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGFuaW1hdGluZ1RyYW5zZm9ybTsKQEAgLTMyOCw2ICszMzAsNyBAQCBjbGFzcyBHcmFwaGlj
c0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNs
aWVudCB7CiAKICAgICAvLyBVc2VkIHRvIHRyYWNrIHRoZSBwYXRoIGRvd24gdGhlIHRyZWUgZm9y
IHJlcGxpY2EgbGF5ZXJzLgogICAgIHN0cnVjdCBSZXBsaWNhU3RhdGUgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bWF4UmVwbGljYURlcHRoID0gMTY7CiAgICAgICAgIGVudW0gUmVwbGljYUJyYW5jaFR5cGUgeyBD
aGlsZEJyYW5jaCA9IDAsIFJlcGxpY2FCcmFuY2ggPSAxIH07CiAgICAgICAgIFJlcGxpY2FTdGF0
ZShSZXBsaWNhQnJhbmNoVHlwZSBmaXJzdEJyYW5jaCkKQEAgLTU3OSw2ICs1ODIsNyBAQCBjbGFz
cyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCB7CiAKICAgICAvLyBSZWZlcmVuY2VzIHRvIGNsb25lcyBvZiBvdXIgbGF5
ZXJzLCBmb3IgcmVwbGljYXRlZCBsYXllcnMuCiAgICAgc3RydWN0IExheWVyQ2xvbmVzIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllck1hcCBw
cmltYXJ5TGF5ZXJDbG9uZXM7CiAgICAgICAgIExheWVyTWFwIHN0cnVjdHVyYWxMYXllckNsb25l
czsKICAgICAgICAgTGF5ZXJNYXAgY29udGVudHNMYXllckNsb25lczsKQEAgLTYwOCw2ICs2MTIs
NyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGlj
IFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+PiBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOwog
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9u
Pj4gQW5pbWF0aW9uc01hcDsKICAgICBzdHJ1Y3QgTGF5ZXJBbmltYXRpb25zIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBWZWN0b3I8TGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbj4gdW5jb21pdHRlZEFuaW1hdGlvbnM7CiAgICAgICAgIEFuaW1hdGlvbnNU
b1Byb2Nlc3NNYXAgYW5pbWF0aW9uc1RvUHJvY2VzczsKICAgICAgICAgQW5pbWF0aW9uc01hcCBy
dW5uaW5nQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA0ZDY0YzJjNGIxOWIzMWI4MDU0YzFi
YzQxYWMwMjI1NzNiZWZmNTYyLi4zMDVlZmQzMzNiZDYxMWM2ZWY1ZTRjMWIyNjIyODg3NTI1NmYy
NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBUaWxlQ29udHJvbGxl
cjo6em9vbWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKQogVGlsZUNvbnRyb2xsZXI6
OlRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAg
OiBtX3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQogICAgICwgbV9kZXZpY2VTY2Fs
ZUZhY3Rvcihvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxl
RmFjdG9yKCkpCi0gICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdyaWQ+KCp0
aGlzKSkKKyAgICAsIG1fdGlsZUdyaWQobWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQogICAg
ICwgbV90aWxlUmV2YWxpZGF0aW9uVGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVJl
dmFsaWRhdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX3RpbGVTaXplQ2hhbmdlVGltZXIoKnRoaXMs
ICZUaWxlQ29udHJvbGxlcjo6dGlsZVNpemVDaGFuZ2VUaW1lckZpcmVkLCB0aWxlU2l6ZVVwZGF0
ZURlbGF5KQogICAgICwgbV9tYXJnaW5FZGdlcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK
QEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxl
KGZsb2F0IHNjYWxlKQogICAgIGlmIChtX3pvb21lZE91dENvbnRlbnRzU2NhbGUgJiYgbV96b29t
ZWRPdXRDb250ZW50c1NjYWxlID09IHRpbGVHcmlkKCkuc2NhbGUoKSAmJiB0aWxlR3JpZCgpLnNj
YWxlKCkgIT0gc2NhbGUgJiYgIW1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2NhbGVGYWN0b3IpIHsK
ICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZCA9IFdURk1vdmUobV90aWxlR3JpZCk7CiAgICAg
ICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPnNldElzWm9vbWVkT3V0VGlsZUdyaWQodHJ1ZSk7Ci0g
ICAgICAgIG1fdGlsZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7Cisg
ICAgICAgIG1fdGlsZUdyaWQgPSBtYWtlVW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7CiAgICAgICAg
IHRpbGVHcmlkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCBGbG9hdFJl
Y3QgVGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcoY29u
c3QgRmxvYXRSZWN0JiBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghbV9o
aXN0b3JpY2FsVmVsb2NpdHlEYXRhKQotICAgICAgICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlEYXRhPigpOworICAgICAg
ICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhID0gbWFrZVVuaXF1ZTxIaXN0b3JpY2FsVmVs
b2NpdHlEYXRhPigpOwogCiAgICAgICAgIG1fdmVsb2NpdHkgPSBtX2hpc3RvcmljYWxWZWxvY2l0
eURhdGEtPnZlbG9jaXR5Rm9yTmV3RGF0YShzY3JvbGxPZmZzZXQsIGNvbnRlbnRzU2NhbGUsIE1v
bm90b25pY1RpbWU6Om5vdygpKTsKICAgICB9OwpAQCAtNjg1LDcgKzY4NSw3IEBAIEludFJlY3Qg
VGlsZUNvbnRyb2xsZXI6OnRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdAogUGxhdGZvcm1DQUxheWVy
KiBUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllcigpCiB7CiAgICAg
aWYgKCFtX2NvdmVyYWdlTWFwKQotICAgICAgICBtX2NvdmVyYWdlTWFwID0gc3RkOjptYWtlX3Vu
aXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IG1h
a2VVbmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CiAKICAgICByZXR1cm4gJm1fY292ZXJh
Z2VNYXAtPmxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4
IGE0ODUyM2NmNTE3NmIzMWYyYWNjNDk4NGIyZWNkOGUyYzg3NGY2MDcuLjM2YWMyZjc4NGIwMDZm
ZjljNzAzZjQxZTdiZmY2ODdhMWFhNGM2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLm1tCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29t
bW9uSW5pdCgpCiAgICAgICAgIFdlYlRpbGVkQmFja2luZ0xheWVyKiB0aWxlZEJhY2tpbmdMYXll
ciA9IHN0YXRpY19jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyKj4obV9sYXllci5nZXQoKSk7CiAg
ICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IFt0aWxlZEJhY2tpbmdMYXll
ciBjcmVhdGVUaWxlQ29udHJvbGxlcjp0aGlzXTsKIAotICAgICAgICBtX2N1c3RvbVN1YmxheWVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXIt
PmNvbnRhaW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBtYWtlVW5p
cXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMo
KSk7CiAgICAgfQogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAtOTQ3LDcgKzk0
Nyw3IEBAIEZsb2F0Um91bmRlZFJlY3QgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNoYXBlUm91bmRl
ZFJlY3QoKSBjb25zdAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0U2hhcGVSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCkKIHsKICAgICBBU1NFUlQo
bV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVMYXllcik7Ci0gICAgbV9zaGFwZVJvdW5kZWRS
ZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7Cisg
ICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3Vu
ZGVkUmVjdCk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBQYXRoIHNo
YXBlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KaW5kZXggYzE5MWYzOTFj
NjQ1NzJjYzk5NTVhNDdjNmNiN2I5MDA3ODY3MjYzOS4uYjNlMjFmNjQwYWU5MWEwZDFmNTkzODQ2
YTg1MGZlYzIyZmE3OGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KQEAg
LTYyLDcgKzYyLDcgQEAgLSAoaWQpaW5pdFdpdGhMYXllcjooaWQpbGF5ZXIKIC0gKFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyKiljcmVhdGVUaWxlQ29udHJvbGxlcjooV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyKilyb290TGF5ZXIKIHsKICAgICBBU1NFUlQoIV90aWxlQ29udHJvbGxlcik7Ci0gICAg
X3RpbGVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUaWxlQ29udHJvbGxl
cj4ocm9vdExheWVyKTsKKyAgICBfdGlsZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOwogICAgIHJldHVybiBfdGlsZUNvbnRyb2xsZXIu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggMTVkNGU0NmIwNmM3
NmMxN2YzNDA1MTM5YzZjOTc5YzEwMTdiMzY5Ni4uZDZhN2MxNjhmMGU0NDFmZDdkMjkwZmM0ZmUz
MTM2MGM1ODVkNTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTE1Miw3ICsx
NTIsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbihMYXllclR5cGUg
bGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiBsYXllcgogICAgIGlmICh1c2VzVGlsZWRCYWNraW5n
TGF5ZXIoKSkgewogICAgICAgICBpbnRlcm4gPSBuZXcgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4o
dGhpcyk7CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4qPihpbnRlcm4pLT5jcmVhdGVUaWxlQ29u
dHJvbGxlcih0aGlzKTsKLSAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMo
KSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNBTGF5
ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOwogICAgIH0gZWxzZQog
ICAgICAgICBpbnRlcm4gPSBuZXcgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwodGhpcyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJU
aWxlZEJhY2tpbmdMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IDIyNGQ4YmJlZWQzOTky
YWVlZmM5MzJhMWJlZTgwZGM2M2ZjYTJmOGIuLmM1YTczZThkM2FlOWJiNDlhOTZiZTI3ZjUzMjdl
MDZjMDYyMTRmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OnNldEJvcmRlckNv
bG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIFRpbGVDb250cm9sbGVyKiBXZWJUaWxlZEJhY2tpbmdM
YXllcldpbjo6Y3JlYXRlVGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIp
CiB7CiAgICAgQVNTRVJUKCFtX3RpbGVDb250cm9sbGVyKTsKLSAgICBtX3RpbGVDb250cm9sbGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKKyAgICBtX3Rp
bGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAg
ICByZXR1cm4gbV90aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAKaW5kZXggNTBiN2Q5YzIzYzAxYWJmYzNhMDUxNzhjMTA1MjUxMDcw
ZjE1ZDZkYi4uMDRmMmE5ZmY1NDY5YWE1YmEyNGQxNDk1NjU0YjYwZjBiYzQzZDJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdyYXBo
aWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU0LDE0
ICs1NCwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbY2Fpcm9Db250ZXh0
XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fp
cm9Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKIEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkK
ICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5l
VHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAg
ICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUu
Z2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3Io
KSk7CkBAIC02OSw5ICs2OSw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhCiAKIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY2Fpcm9fdCogY2Fpcm9Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0
SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwg
bV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENh
aXJvPihjYWlyb0NvbnRleHQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5p
cXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQogICAgICwgbV9wbGF0Zm9y
bUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250
ZXh0KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNl
dEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUt
PnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cAppbmRleCAxODhlN2JjM2RiODU4Mjk2NWNhYmIyODliYzVjMDJiYzcxNjIzYWE1Li4xZjc2M2I1
MDc3M2JkZjVkMWU1MmU1ZDE5YzBiODBmYmFkMzdiNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lm
TmVlZGVkKCkKICAgICAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5JiBwcm94eSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGhv
bGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVy
KHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29t
cG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xf
UkdCQSkpOworICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1f
c2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOwogICAgICAgICAg
ICAgfTsKICNpZiBVU0UoTklDT1NJQSkKICAgICAgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8
Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5p
bXBsKCkpLnByb3h5KCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjCiAKICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9k
YXRhLm1fc3VyZmFjZS5nZXQoKSkpOwogICAgIG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRD
cihjci5nZXQoKSk7Ci0gICAgbV9kYXRhLm1fY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3Jh
cGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9k
YXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7CisgICAgbV9kYXRhLm1fY29udGV4dCA9IG1ha2VVbmlx
dWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3Rv
cnkobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKaW5kZXggODBiNWQ0ZmJkMjcyZGVlNDM1YjVjZTdjMDg0ZWUzNTlhNTAxZWQ2NC4u
ZDM1ZmYwZWZmOTcxOTUwZWVkMWUzZmQwMjZiY2RhOWVhZmEzNGU0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAg
LTE4Nyw3ICsxODcsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcAogICAgICAgICBpZiAoIWNn
Q29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2RhdGEuY29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOworICAg
ICAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRl
eHQuZ2V0KCkpOwogICAgIH0KIAogICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA3MjUyZTQ5NTI0ZjYwOTg2YjAzOGNhODdj
OGU3ZTI2NWQwNTc0NzBkLi5jMDE2MDFlMTAxMTEyNzk4YjI2OGRmYWYyNjkzODJiNjUzMTlkNWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMzcxLDcgKzEzNzEsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZQogCiAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhldGljT2Js
aXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnQuZ2V0KCksIGZvbnREZXNjcmlw
dGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
b250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9u
LndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwg
c3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0
aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRl
eHRSZW5kZXJpbmdNb2RlKCkpOwogfQogCiB0eXBlZGVmIEhhc2hTZXQ8UmV0YWluUHRyPENURm9u
dFJlZj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaDxDVEZvbnRSZWY+LCBXVEY6OlJldGFpblB0
ck9iamVjdEhhc2hUcmFpdHM8Q1RGb250UmVmPj4gRmFsbGJhY2tEZWR1cFNldDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKaW5kZXggMWNlMGM5NDdl
MTdlOWE2OGVlYWQzYTRkNTdiNTlkOGZhMTZjZWYyOS4uMGRlOTM0YTdiMzg0MTAwZWViNzZkNzdm
NDU2YTE4MmZiYmFiY2VjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
bwogCiAgICAgICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29t
cHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250Rm9yU3ludGhlc2lzQ29tcHV0YXRpb24uZ2V0KCks
IGZvbnREZXNjcmlwdGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgZmFsc2Us
IHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVz
Y3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9k
ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5n
ZXQoKSwgc2l6ZSwgZmFsc2UsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmll
bnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlv
bi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBB
U1NFUlQoZm9udFBsYXRmb3JtRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpp
bmRleCA4OTJiNGE5OGMwMDdiNmY5NzBhMzY4NjFiZTkxNzE0OGJiMDQ2NzJjLi41NzlmMWI5MThk
YmJlNzViODQxM2U2ZDZmZDE1ZGZhZjY0YTM1NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNE
Q29jb2EubW0KQEAgLTkyLDYgKzkyLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0YXR1c0No
ZWNrVGhyZXNob2xkID0gNTsKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIGlzIGN1cnJlbnRseSBlbXB0
eSBvbiBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1bGF0ZWQgYXMKIC8vIHRoZSByZXN0cnVjdHVyaW5n
IGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjkwMyBpcyBkb25l
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0Nv
bnRleHQzRCopIHsgfQogICAgIApAQCAtMjEyLDcgKzIxMyw3IEBAIHN0YXRpYyB2b2lkIHNldEdQ
VUJ5RGlzcGxheU1hc2soUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBjb250ZXh0T2JqLCBDR0xQ
aXhlbEZvCiAKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJlZENvbnRleHQp
CiAgICAgOiBtX2F0dHJzKGF0dHJzKQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5p
cXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCiB7CiAjaWYgIVVTRShBTkdMRSkK
ICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDVjNzMzZTNiYWQxZTlkM2QyNWMxZWQ1N2Y1
YWNkZmZmM2E0Y2I5OWYuLjM4NzVmY2ZkMzA2ZGY4NmQzNDc0ZWUxODYwYmE1OTBhM2E4YmMxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KQEAgLTMyNiw3ICszMjYsNyBAQCBHcmFwaGljc0NvbnRleHQmIElPU3VyZmFjZTo6
ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCkKICAgICBpZiAobV9ncmFwaGljc0NvbnRleHQpCiAgICAg
ICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CiAKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQo
KSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4o
ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5zZXRJc0Fj
Y2VsZXJhdGVkQ29udGV4dCh0cnVlKTsKIAogICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQppbmRleCA2ZTYwZWJm
MWZmYTY1OTBmNmYzNGU1MjhhM2UzMzU4MzE4YjVlYmRmLi4yNzg3NDY4MTY2ZmVmMWI1ZjY0NjIx
ZmViNWJiNWU1MGQ5ZDZkYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9u
Q29jb2EubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBAZW5kCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZShUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYT4oY2xpZW50KTsKIH0K
IAogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25W
VC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oCmluZGV4IGFkYzk3YWRjMWZhMjQ1ODA5OTAwM2MzZGU5YzBhYTM4ZDg3NjE4N2Qu
LjYwMDFiYjcwYTEwMDQxNzQ0MTA5MjEzNmYzZmU1YjYxNzYyY2IwY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9u
U2Vzc2lvblZULmgKQEAgLTM2LDcgKzM2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVlBpeGVsQnVm
ZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCB7CitjbGFzcyBJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dHJ1Y3QgUm90YXRpb25Qcm9wZXJ0aWVzIHsKICAgICAgICAgYm9vbCBmbGlwWCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1
ZmZlckNvbmZvcm1lckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKaW5kZXggZGQxMzU2OWUwODFhMWIzOTlkY2JhYmYzZjVl
ODgzN2Y4NGMyYWI0ZS4uY2Q1YjZmY2MwMGQ3NzQ2NGU2ZTZiZTc0NjMxMWUxM2QwZDI3ZTMyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaApAQCAtMzYsNiArMzYsNyBAQCB0eXBlZGVmIHN0cnVj
dCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWKENGRGljdGlvbmFyeVJlZiBh
dHRyaWJ1dGVzKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVydChDVlBp
eGVsQnVmZmVyUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L1RleHR1cmVDYWNoZUNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9UZXh0dXJlQ2FjaGVDVi5oCmluZGV4IDgxYWIyZjkyNGRhZjI2Y2RhMjJjNWUyMDA3NzZj
MjE4MDIwMjNhM2IuLmM5ZmY0MTlkNDNiZTQ1ZjQwNDQwMzA0MGFkZDhjNGQwNDQwMmJhMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNo
ZUNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNh
Y2hlQ1YuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKIAogY2xhc3MgVGV4dHVyZUNhY2hlQ1YgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8VGV4dHVyZUNhY2hlQ1Y+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVDYWNoZUNWPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0M0QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQppbmRleCA1NzdlYzI4NDYzOTJhNzIxNWQ5
OThhYTMxMGQzZDhkNjMzZjVmMWVjLi45ZjFmNjZiM2JkNTlmNTliMWFkM2NiNzA1Yzg1NjU0NDIy
N2VjMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9U
ZXh0dXJlQ2FjaGVDVi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9UZXh0dXJlQ2FjaGVDVi5tbQpAQCAtNTAsNyArNTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZUNhY2hlQ1Y+IFRleHR1cmVDYWNoZUNWOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QmIGNv
bnRleAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0cjxUZXh0dXJlQ2Fj
aGVUeXBlPiBzdHJvbmdDYWNoZSA9IGFkb3B0Q0YoY2FjaGUpOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0cm9uZ0NhY2hlKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZUNhY2hlQ1Y+KGNvbnRleHQsIFdURk1vdmUo
c3Ryb25nQ2FjaGUpKTsKIH0KIAogVGV4dHVyZUNhY2hlQ1Y6OlRleHR1cmVDYWNoZUNWKEdyYXBo
aWNzQ29udGV4dDNEJiBjb250ZXh0LCBSZXRhaW5QdHI8VGV4dHVyZUNhY2hlVHlwZT4mJiBjYWNo
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVv
VGV4dHVyZUNvcGllckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9W
aWRlb1RleHR1cmVDb3BpZXJDVi5oCmluZGV4IDQzYTk2ZGMxNDM2NTg0YWZhNzcxODc4YjE5N2Yy
YTk1NDdkY2NjZWUuLjlkMzkyZWEwNThiMzYwMDhjYTU2OWNhNDRmZDcxMjg4M2IwZDZmNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVy
ZUNvcGllckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9UZXh0dXJlQ29waWVyQ1YuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBUZXh0dXJlQ2FjaGVDVjsKIAogY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyQ1Ygewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZpZGVvVGV4dHVyZUNv
cGllckNWKEdyYXBoaWNzQ29udGV4dDNEJik7CiAgICAgflZpZGVvVGV4dHVyZUNvcGllckNWKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggOGZlYWEyZjVk
NzUzMjhlNDM2YmY5ZDg4YjhkYzA1YmFjMWMyZTFmMy4uYzU2MWY1ZjllYWI5OTYyMTFhOGIyMjIx
OTc3NmQ2OGYzOWUxNjQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcApAQCAtNDksNyArNDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IFJlcGxh
eWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbAogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiByZXBsYXlMaXN0OwogICAgIGlmIChVTkxJS0VMWSh0
cmFja1JlcGxheUxpc3QpKQotICAgICAgICByZXBsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxE
aXNwbGF5TGlzdD4oKTsKKyAgICAgICAgcmVwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxp
c3Q+KCk7CiAKICAgICBzaXplX3QgbnVtSXRlbXMgPSBtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtSXRlbXM7ICsraSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb24uY3BwCmluZGV4IDU1N2I4ZTAwODYyZDZhYmM1ODA0YjQxNDMyMTAwODBhODM1MTZk
MWUuLjMwYmI0OGNjOGYwYzQ5NTQ0OGFiNjVmNjgxMTcyY2NjNmJjYTUzNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb246OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghU1ZHVVJJUmVmZXJlbmNlOjppc0V4dGVybmFsVVJJ
UmVmZXJlbmNlKG1fdXJsLCAqY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1lbnQoKSkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91cmwpOworICAgIG1fY2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlVW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlPihtX3VybCk7CiAgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS0+bG9hZChjYWNo
ZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCA2NTYzYzhiZmVlYjM1YmE1MzI3ZjQ4OTYxZWQ2MjFmZTNkNTNhYTQxLi43MWE0
YWIyZjQ4MjVmMWE1NDMxOTE4MDM0YjM1MzFlY2RhOGEwZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwCkBAIC00NTUsNyArNDU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0
Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUK
ICAgICAgICAgICAgIEZjUGF0dGVybkFkZFN0cmluZyhyZXN1bHRQYXR0ZXJuLmdldCgpLCBGQ19G
T05UX1ZBUklBVElPTlMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KHZhcmlhbnRz
LnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAjZW5kaWYKLSAgICBhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2UuZ2V0KCksIHJlc3Vs
dFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBmaXhl
ZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24u
b3JpZW50YXRpb24oKSk7CisgICAgYXV0byBwbGF0Zm9ybURhdGEgPSBtYWtlVW5pcXVlPEZvbnRQ
bGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQYXR0ZXJuLmdldCgpLCBmb250RGVz
Y3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRXaWR0aCwgc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpOwogICAgIC8v
IFZlcmlmeSB0aGF0IHRoaXMgZm9udCBoYXMgYW4gZW5jb2RpbmcgY29tcGF0aWJsZSB3aXRoIEZv
bnRjb25maWcuIEZvbnRjb25maWcgY3VycmVudGx5CiAgICAgLy8gc3VwcG9ydHMgdGhyZWUgZW5j
b2RpbmdzIGluIEZjRnJlZVR5cGVDaGFySW5kZXg6IFVuaWNvZGUsIFN5bWJvbCBhbmQgQXBwbGVS
b21hbi4KICAgICAvLyBJZiB0aGlzIGZvbnQgZG9lc24ndCBoYXZlIG9uZSBvZiB0aGVzZSB0aHJl
ZSBlbmNvZGluZ3MsIGRvbid0IHNlbGVjdCBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDEzNzY1ZjQzZGE4NjY4ZDJkZTgyZTY3
MWQ4MTgwZDY4NDQyODQzYjAuLjU4OTQzZDJhOTBkZmM1NTAxZjJkY2FhOGVjZjBlOTBlMWFjN2Y3
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgRlRf
RmFjZSBmcmVlVHlwZUZhY2U7CiAgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNp
emUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFj
ZSwgYnVmZmVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggODY5ODEzNjQ1MTNi
OGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3Ni4uNzFmZGEwZDkyNGNkMjU1ZGIzZWYxMDc3Zjll
MTA3ODE0ZTI0M2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBSZWZQdHI8VGV4dHVyZT4gVGV4dHVy
ZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQg
dwogICAgICAgICBudW1UaWxlcyA9IDA7CiAgICAgfQogCi0gICAgYXV0byB0ZXh0dXJlSWRzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7CisgICAgYXV0byB0
ZXh0dXJlSWRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7CiAgICAg
dGV4dHVyZUlkcy0+ZmlsbCgwLCBudW1UaWxlcyk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bVRpbGVzOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggZjRhNGJhMWE4YWNhZDVlMjA1YTU5M2E0OGY3NDg2YjI4YzdiZTFk
NS4uZjZlMWUxNDY5M2M3OTg0MjUyZjc4ZWI3ODBkMDI0Y2Y2NDVlYTQ2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTExNiw3ICsxMTYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpcwogewogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiAgICAgaWYgKGlzQXZhaWxh
YmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIp
OyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
bWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCiAgICAg
ICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgfQogfQpAQCAtMTE0MCw3ICsxMTQw
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFByZXNlcnZlc1BpdGNo
KGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zdAogewotICAg
IGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OwogICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8fCBpc0xpdmVTdHJlYW0oKSkKICAgICAgICAgcmV0
dXJuIHRpbWVSYW5nZXM7CiAKQEAgLTIzNzYsNyArMjM3Niw3IEBAIEdzdEVsZW1lbnQqIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5rKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjplbnN1cmVBdWRpb1NvdXJjZVByb3ZpZGVyKCkKIHsKICAgICBp
ZiAoIW1fYXVkaW9Tb3VyY2VQcm92aWRlcikKLSAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpOworICAg
ICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXI+KCk7CiB9CiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggMDcyOGVlYjY0MjBh
ZmZiOTZjN2ExYTQ5ZjU1NTVkOWYzYjNkOThkNS4uYzdhYzViMmJlNzQ1MTgzNjk0MDMyNzBmNDZi
MmZmNmMxY2EzODc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzEwLDE5ICs3MTAsMTkgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAgICAgICAg
ICAgICBpZiAoIXByb3h5LmlzQWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgp
LCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CisgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIg
PSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1
cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CiAKICAgICAgICAgICAg
IEdMdWludCB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVy
QnVmZmVyOwogICAgICAgICAgICAgaWYgKHRleHR1cmVJRCkgewotICAgICAgICAgICAgICAgIGxh
eWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4odGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3Mo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICAgICAgICAgIGxheWVyQnVmZmVy
ID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4odGV4dHVyZUlE
LCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpOwogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRVbm1hbmFnZWRC
dWZmZXJEYXRhSG9sZGVyKFdURk1vdmUoZnJhbWVIb2xkZXIpKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBwcm94eS5nZXRBdmFpbGFibGVCdWZm
ZXIoZnJhbWVIb2xkZXItPnNpemUoKSwgR0xfRE9OVF9DQVJFKTsKICAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoIWxheWVyQnVmZmVyKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRl
eHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJp
YnV0ZXM6OmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoZnJhbWVI
b2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgpID8gQml0bWFwVGV4
dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSk7CisgICAgICAgICAgICAgICAgICAg
IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4oV1RGTW92ZSh0ZXh0dXJlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGZyYW1lSG9sZGVyLT51cGRhdGVUZXh0dXJlKGxheWVyQnVmZmVyLT50ZXh0dXJlR0woKSk7CiAg
ICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldEV4dHJhRmxhZ3MobV90ZXh0dXJlTWFwcGVy
RmxhZ3MgfCAoZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgpID8gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRCbGVuZCA6IDApKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljcwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVy
PiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9z
YW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZp
ZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1
ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAg
ICBpZiAoIXRleHR1cmVJRCkKQEAgLTkyMyw3ICs5MjMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aGljcwogICAgICAgICBzaXplID0gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogCiAgICAgaWYgKCFt
X3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJf
Q09MT1JfQ09OVkVSVF9GTEFHKTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtl
VW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1Jf
Q09OVkVSVF9GTEFHKTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgc2l6ZSwgb3V0cHV0VGV4dHVy
ZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxp
cFksIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CkBAIC05MzksNyArOTM5LDcgQEAgTmF0
aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9G
cmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVI
b2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVu
aXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVy
RmxhZ3MsIHRydWUpOwogCiAgICAgYXV0byB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVy
ZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlSUQpCkBAIC05NTMsNyArOTUzLDcgQEAgTmF0aXZlSW1h
Z2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpCiAgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBpZiAo
IW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0
ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElF
Ul9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1h
a2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xP
Ul9DT05WRVJUX0ZMQUcpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgc2l6ZSwgMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGZhbHNl
LCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTExNDcsOCArMTE0Nyw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xk
ZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJl
TWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOwotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4gaG9sZVB1bmNoQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+KG1fdmlkZW9TaW5rLmdl
dCgpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQs
IEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9s
ZVB1bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBtYWtlVW5pcXVlPEdTdHJlYW1lckhvbGVQ
dW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOwogICAgICAgICAgICAgbGF5ZXJCdWZmZXIt
PnNldEhvbGVQdW5jaENsaWVudChXVEZNb3ZlKGhvbGVQdW5jaENsaWVudCkpOwogICAgICAgICAg
ICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAgICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA5NzNm
NGQ0ZjAwMzIzNTZmMTc3ZWJkN2ZjNGI5ZTk0YTUyOTJmOTVhLi41ZmY5NzI4NjU2NjMxNjQzYjI5
MDNmYmVjOWUzOTQ1YmMyMzI5M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcApAQCAtNjMyLDcgKzYzMiw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChHc3RCYXNlU3JjKiBiYXNlU3JjLCBib29sIG5vdGlmeUFzeW5jQ29t
CiAgICAgICAgICAgICBsb2FkT3B0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6
OkxvYWRPcHRpb246OkJ1ZmZlckRhdGE7CiAgICAgICAgIHByaXYtPnJlc291cmNlID0gcHJpdi0+
bG9hZGVyLT5yZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBsb2FkT3B0
aW9ucyk7CiAgICAgICAgIGlmIChwcml2LT5yZXNvdXJjZSkgewotICAgICAgICAgICAgcHJpdi0+
cmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCksIFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSkpOwor
ICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCksIFJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KSkpOwogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwcm90ZWN0b3IuZ2V0KCks
ICJTdGFydGVkIHJlcXVlc3QiKTsKICAgICAgICAgICAgIGlmIChub3RpZnlBc3luY0NvbXBsZXRp
b24pCiAgICAgICAgICAgICAgICAgZ3N0X2Jhc2Vfc3JjX3N0YXJ0X2NvbXBsZXRlKEdTVF9CQVNF
X1NSQyhzcmMpLCBHU1RfRkxPV19PSyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggNGU5ZDE5ZDg1MjdkNjk2MjBj
ZjVhYTk0MTA3MzYyODM4MWIzYzlmMC4uZTY4ODBkOThlN2ZjYWQxZDA1M2Y4NGVkMzhhNmZkODE5
OGRlN2I4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZQogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKCk7
CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21zZV9kZWJ1ZywgIndlYmtpdG1z
ZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIpOwogICAgIGlmIChpc0F2YWlsYWJsZSgp
KSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsg
fSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1h
a2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAogICAg
ICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIH0KIH0KQEAgLTQ1OSw3ICs0NTks
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c2V0UmF0ZShmbG9hdCkK
IAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3Vy
Y2UgPyBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNl
LT5idWZmZXJlZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzb3VyY2VTZXR1cChHc3RFbGVtZW50
KiBzb3VyY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9s
ZVB1bmNoLmNwcAppbmRleCAxMTcyNDU4NDEwZTlhMTQ1M2I2MzViMGY4ZDkxYjlmYjRhNjk2YzU4
Li4wZjA4YzE5ZGJkYmU2OWIwNmY3Yjc1NTNmOGFiNDk3ZDQ3ZTM3N2E5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcApAQCAtNzYsNyArNzYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hCdWZm
ZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJv
eHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2so
KSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJs
ZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpT
aG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0
QnVmZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAgfTsKIApAQCAtMTQxLDcgKzE0
MSw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7IH0s
CisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRT
dXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aC5oCmluZGV4IGYwZDA0ZDRjNjNkOTMxMjBiY2U4MDVhYjhmZWEyODdhMDFlMDQ0MmEuLjJhZWYw
ZmU4NGE2NzFiNzIyYzRiNDUzZmNlNzE3YjY2YTk3ZTZjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gv
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSwgcHVibGljIEMKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsgfTsKICAgICBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVk
aWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKIAogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCBlMWEzYTg2NjMxNDc1Y2FiN2E5YjE3
MWI0MDYyZDM5M2Q4OTBlNjA2Li5lY2Y4OTY5M2RhMzM4NTIwMTJlNzUwMjExMjk5ODA5OWVjOGRh
YzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5o
CkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIERhdGFWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Cb3ggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfklTT0JveCgpID0gZGVmYXVsdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9y
bWF0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2lu
YWxGb3JtYXRCb3guaAppbmRleCA3MGJiODYxMTMxNmU2ODViNzZiNzg4MzhiNWVkMDYwMzc2Yjli
MWE5Li4xODgzYmE0N2JkZjNhNTJhZmIyZmY3ZDBkZDVjZDlkY2Q3Y2RkODcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2lu
YWxGb3JtYXRCb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0Qm94IDogcHVibGljIElTT0Jv
eCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09PcmlnaW5hbEZvcm1hdEJveCBmaW5hbCA6IHB1
YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7
IHJldHVybiAiZnJtYSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAK
aW5kZXggZDhkNzQwMWE3NTYwMDQ2Yzk4YWZmOGNiMTFlYjJlNzIyM2M5ODFjZS4uYmRmZGJkYzk2
Y2YwZTFiNTBhNzI4NTgyODhjOWIyZjQ3NGY3ZDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNj
aGVtZUluZm9Cb3guY3BwCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNjaGVt
ZUluZm9Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVlKCkuZmlyc3Qg
PT0gSVNPU2NoZW1lVHlwZUJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZVR5
cGVCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7CisgICAgICAgIG1f
c2NoZW1lVHlwZUJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lVHlwZUJveD4oKTsKICAgICAgICAg
aWYgKCFtX3NjaGVtZVR5cGVCb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNj
aGVtZUluZm9Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAg
IH0KIAogICAgIGlmIChvcHRpb25hbEJveFR5cGUudmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVJ
bmZvcm1hdGlvbkJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZUluZm9ybWF0
aW9uQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKKyAg
ICAgICAgbV9zY2hlbWVJbmZvcm1hdGlvbkJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lSW5mb3Jt
YXRpb25Cb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVJbmZvcm1hdGlvbkJveC0+cmVhZCh2
aWV3LCBsb2NhbE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2No
ZW1lSW5mb0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1By
b3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKaW5kZXggZjM3Yjc2MjQ5ZDhlMDBmYTE3YTA1NTkyOWU3
NzY2ODUxMzczMzM2Ni4uOGU1NjczZTA1MTZhNjUwMTRmNWNkNDlmNjFhYTdiNzUzOGQyY2FmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3Rl
Y3Rpb25TY2hlbWVJbmZvQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSVNPU2NoZW1lVHlwZUJveDsKIGNsYXNzIElTT1NjaGVt
ZUluZm9ybWF0aW9uQm94OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Qcm90ZWN0aW9uU2No
ZW1lSW5mb0JveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPUHJv
dGVjdGlvblNjaGVtZUluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNpbmYiOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZv
cm1hdGlvbkJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
U2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCmluZGV4IGI0ZjI3N2E2ODQ3Y2MyMGQ0ZmM5ZDYyNmY5
Y2FjYzc0MzBhZGFmNzAuLmM4M2M0ZmY3YjM4YWJmMWFlMjJmZmU1ZTcyYzdhMWY4NmEwOGViMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hl
bWVJbmZvcm1hdGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcApAQCAtNDcsNyArNDcsNyBAQCBib29s
IElTT1NjaGVtZUluZm9ybWF0aW9uQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQm
IG9mZnNldCkKICAgICAgICAgaWYgKGxvY2FsT2Zmc2V0ICsgc2NoZW1lU3BlY2lmaWNCb3hUeXBl
LnZhbHVlKCkuc2Vjb25kID4gb2Zmc2V0ICsgbV9zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxJ
U09UcmFja0VuY3J5cHRpb25Cb3g+KCk7CisgICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0g
bWFrZVVuaXF1ZTxJU09UcmFja0VuY3J5cHRpb25Cb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hl
bWVTcGVjaWZpY0RhdGEtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKaW5kZXggOWVkYjE4
NzhhOWJhOTE5YmViMTlkN2I2MjIzZDllN2U0NjRmNjg1OC4uZThlYzBjNGM2OWI3NGU4MzM0NDk4
OTQxZjI0ZWVlNDEwZjJjZGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKQEAgLTI5
LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNjaGki
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09TY2hlbWVUeXBlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPU2NoZW1lVHlwZUJveC5oCmluZGV4IDYxOTYxMDM5ZjQ4Y2YyYmM2ZWU3Yjg4NDgwNzNjODM3
NmU1ODMxMzAuLjRiOGYyNjMzNzUwZjhhZGY5MGJjMjdjMmQwY2YxNGVmOTgyYzE3M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBl
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVt
ZVR5cGVCb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVUeXBlQm94IGZpbmFsIDogcHVibGljIElT
T0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJl
dHVybiAic2NobSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCmluZGV4IGY0ZWZlMjgxMDUx
ZTNjN2IyOWRiZWY3OGU0NGRhM2IwMzg3ODAzZjMuLjQ3ZmE0OTcyNDZjNzE1YmUxZDJjZWY5YjBl
YTg3ZGQ3Zjc5ZWY1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09UcmFj
a0VuY3J5cHRpb25Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09UcmFja0VuY3J5cHRpb25Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJ0ZW5jIjsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRU
Q3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwCmluZGV4IDllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQuLjRiNTE2
ZWU4ZGQ3ZjdkMjM3ZThkNjI3Mjc5N2IwMzJkZDFmNWFjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBAIC0zNSw3ICszNSw3
IEBAIHVzaW5nIEpTQzo6RGF0YVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SVNPU3RyaW5nQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09TdHJpbmdCb3ggZmluYWwg
OiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRzKCkg
eyByZXR1cm4gbV9jb250ZW50czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKaW5kZXggYTYxNjBiNjZhZTk0NjgyMDY3N2FkMjkzNGIx
ODFkZWI5M2NjNGY0OS4uYWUyM2JlZmZmZWQ2NGE2ZGUyODkxNzZlNDE1MTAxMWYwNjdjOTg5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
aApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOIGJ5dGVzIDogQ3Vl
VGltZUJveCA6IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlU2V0dGluZ3NCb3ggOiBi
b3ggOiBvcHRpb25hbAogLy8gTiBieXRlcyA6IEN1ZVBheWxvYWRCb3ggOiBib3ggOiByZXF1aXJl
ZAotY2xhc3MgSVNPV2ViVlRUQ3VlIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09XZWJWVFRD
dWUgZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBJU09XZWJWVFRDdWUoY29u
c3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDNkNWVmMDliN2Q5NDAzMDU5
NzQxZDgwODI4ZjUxOGRlZmM4NDIzYjUuLmVmMTBiMzNhNTRiMzVkN2Q1NzFmMDZlNDE2ZjEyOTIy
MDg5YWMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5k
aWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
KGZvbnREZXNjcmlwdG9yLmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPihmb250RGVzY3JpcHRvci5nZXQoKSk7CiB9CiAKIGJvb2wgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFT
Y2VuZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDEwOWMyYzU3NzY3OWExMjE0
YWE2ZWExMDFjNmY0ODBmYmEyZWM2MDEuLjViZWU2MTNmY2Y2YjQ2YTA3YzYyOGU1ODAxNmY0OWJi
OTAyMWIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVxdWVzdFVwZGF0ZSgpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2NlbmVJbnRlZ3Jh
dGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VXBk
YXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKIH0KIAogU2NlbmVJbnRlZ3JhdGlvbjo6Q2xpZW50
Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAyYjFhZWNmMGQxYjdlNmEzNDFiZjk0
YmZmYWVkMjIwZjFhNDU4NjM4Li41MGUwYzNjN2Q5NzY4MjZiYTdiYjgxODVkMWVlMTQyMTI5YWRh
MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBhdXRvIGNyZWF0ZUNvbW1hbmQoQXJncyYm
Li4uIGFyZ3VtZW50cykgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8T3Blcgog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIGF1dG8gY3JlYXRlQ29tbWFuZCgpIC0+IHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXJhdGlvbkRhdGE8PiwgVD46OnZhbHVlLCBzdGQ6OnVu
aXF1ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+PgogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VD4oKTsKIH0KIAogQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0Nv
bnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKaW5kZXggMGM4YTY3MGUzYTBh
MzYzMDdlM2YyOTllY2RhMDI1NTJmZDc3NGVkMS4uYjM1MDhkNTE3YjI0ZTQ3NWMwOGFmNDhiMzNl
NDMxZmQyNzkyMDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50
aW5nQ29udGV4dENhaXJvLmNwcApAQCAtNzAsOCArNzAsOCBAQCBQYWludGluZ0NvbnRleHRDYWly
bzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICB9KTsK
IAogICAgIG1fY2Fpcm8uY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2NhaXJvLnN1
cmZhY2UuZ2V0KCkpKTsKLSAgICBtX3BsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4dC5nZXQoKSk7Ci0g
ICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5
KCptX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fcGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWlyby5jb250ZXh0LmdldCgpKTsK
KyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoKm1f
cGxhdGZvcm1Db250ZXh0KSk7CiB9CiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGlu
Zzo6fkZvclBhaW50aW5nKCkKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHZvaWQgUGFpbnRpbmdDb250
ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkoY29uc3QgUGFpbnRpbmdPcGVyYXRpb25zJiBw
YWludGluCiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OkZvclJlY29yZGlu
ZyhQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0aW9ucykKIHsKLSAgICBtX2dyYXBo
aWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PigK
KyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PigKICAgICAgICAgWyZwYWludGluZ09wZXJhdGlvbnNdKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRpbmdPcGVyYXRpb25z
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhaXJvT3BlcmF0aW9uUmVjb3JkZXI+
KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVN
YXBwZXJJbXBsLmNwcAppbmRleCBkNGM5YjYwNWI0Y2QyOGUzNDhlZmQ4NTMzNTAzOGI1OGM5YTRk
ZGZhLi44ZTM3OTBmN2FiNTRmNmIzZDk1NmYzMDcwNGM0MjljMmFjZGMzMTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJl
TWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBCYWNraW5nU3RvcmVUZXh0dXJl
TWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFj
dG9yeSgKICAgICAgICAgW10oQmFja2luZ1N0b3JlJikgewotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbD4oKTsK
ICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBl
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggMzhm
ZGQ5M2RhNmIxMzg4MzE0MDU5MTY1M2NkZjI5ZTA3ZGUzMjM5Ni4uNzU2OTJjN2M0YTdiZmRiMTg3
MWRmMTgwMmUzODc3NTM2YjYxNTUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgYXV0byBDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6
OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAg
ICAgIFtdKHVpbnQ2NF90LCBDb21wb3NpdGlvbkxheWVyJikgewotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsPigpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBw
ZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXgg
NTYxNzI4YjVlZjFmNDBkODBjNTM1OTkyNjcxMDY2YWQ4NzQ4MTlhNy4uMmZiMGVjOTU5MTVhZWIw
YmEwOTZmODBiYzY5MGQyZjNiMjg0OGM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIGF1dG8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZh
Y3RvcnkoQ2xpZW50JiBjbGllbnQpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgK
ICAgICAgICAgWyZjbGllbnRdKENvbnRlbnRMYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGw+KGNsaWVudCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFH
QzNETGF5ZXIuY3BwCmluZGV4IDUyZWM3MGI2ODFmN2JjNTYzYTY3NDc1NDM2MjM4NzZiMDMxMzlh
OWIuLjlhOWJkNDY4M2IyNjc0MmFmZWNiMTQ5MWY2MTQ0ZjJhNzhjNTk1MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFH
QzNETGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgR0Mz
RExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICAgICAgYXV0byYgcHJveHkgPSBkb3du
Y2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9jb250ZW50TGF5
ZXItPmltcGwoKSkucHJveHkoKTsKIAogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5s
b2NrKCkpOwotICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4
dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0
KSk7CisgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0
dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9
CiAKICAgICBtX2NvbnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bC5jcHAKaW5kZXggYTJhZTM0YTMxMzI3ZTg3MTU2NTQxNDZkMThmNzdjN2E2N2YyNDIxNi4uZDM1
M2M4YmUxYjViZmExMTZiNmNiODUyMDk3MDI3N2NjOTMyNDVjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFj
a2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlcklt
cGwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGF1dG8gSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlcklt
cGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAg
ICAgICAgIFtdKEltYWdlQmFja2luZyYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBlNjg0
OGZjZWNhNDFlOTczNmYyYTM4MTdhOWZkMDNjZWJhZTNhYzExLi5iOTYzNjNiNTUxOTM1NmM4Y2Rm
NDY1NDM2MzI2ZWQwNmNlY2VkODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRl
cHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRl
bnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xF
UzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAqbV9l
eHRlbnNpb25zOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAppbmRleCBiMjRkZjAzNWUyODhlMWViMmY4YWY5ZjdhYjkxZDc3OWQwYWNh
NDllLi4yYTBlNWI3NmU0ZDZiYWI3MGU5MGIyZjNkMjhlYjQzYzA3ZjQyNTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTY1Niw3ICs2NTYs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyKQogICAgIEFOR0xFUmVzb3VyY2VzLkhhc2hGdW5jdGlvbiA9IG5hbWVIYXNoRm9y
U2hhZGVyOwogCiAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgIG5hbWVI
YXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7Cisg
ICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+
KCk7CiAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFwRm9yU2hh
ZGVycy5nZXQoKSk7CiAgICAgbV9jb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJjZXMp
OwogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBl
ZFN5bWJvbE5hbWUoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBBTkdMRVNoYWRlcgogICAgICAg
ICAvLyBBdHRyaWJ1dGVzIGFyZSBhIHNwZWNpYWwgY2FzZTogdGhleSBtYXkgYmUgcmVxdWVzdGVk
IGJlZm9yZSBhbnkgc2hhZGVycyBoYXZlIGJlZW4gY29tcGlsZWQsCiAgICAgICAgIC8vIGFuZCBh
cmVuJ3QgZXZlbiByZXF1aXJlZCB0byBiZSB1c2VkIGluIGFueSBzaGFkZXIgcHJvZ3JhbS4KICAg
ICAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgICAgICBuYW1lSGFzaE1h
cEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAg
ICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gbWFrZVVuaXF1ZTxTaGFkZXJOYW1lSGFzaD4o
KTsKICAgICAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFwRm9y
U2hhZGVycy5nZXQoKSk7CiAKICAgICAgICAgYXV0byBnZW5lcmF0ZWROYW1lID0gZ2VuZXJhdGVI
YXNoZWROYW1lKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3Bw
CmluZGV4IDI0MzA0NmQ5ODlhZDczOGY3YzlmNzE0OTU1NjdjOTZiYjM0YzU2NDEuLjcwYTIwZDUw
YzM1MjFhNjEyM2U2ZWZhZjFmNDc2OGY2NDk1Y2RlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xFUy5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykK
LSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0g
bWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgp
KTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpAQCAtMjcxLDcgKzI3MSw3
IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRv
dyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSwgR3JhcGhpY3ND
b250ZXh0M0QqIHNoYXJlZENvbnRleHQpCiAgICAgOiBtX2F0dHJzKGF0dHJpYnV0ZXMpCiAgICAg
LCBtX2NvbXBpbGVyKGlzR0xFUzJDb21wbGlhbnQoKSA/IFNIX0VTU0xfT1VUUFVUIDogU0hfR0xT
TF9DT01QQVRJQklMSVRZX09VVFBVVCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQorICAgICwgbV9w
cml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJT
dHlsZSkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4
dCk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGVkNmNjZjE5NGJiZWUxZTAwZmQ0MzlmNjFh
NmRlNjJlNDAzMDJlYTMuLjhmZDNhZDRmNzJkNzY0YmQ5NWQyMjBmNTgxZWQyYjc5NjI4ODNjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCkBA
IC0xMDYsOSArMTA2LDkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdy
YXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3MKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsKICNpZiBVU0UoTklDT1NJQSkK
LSAgICBtX25pY29zaWFMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8Tmljb3NpYTo6R0MzRExheWVy
PigqdGhpcywgcmVuZGVyU3R5bGUpOworICAgIG1fbmljb3NpYUxheWVyID0gbWFrZVVuaXF1ZTxO
aWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAjZWxzZQotICAgIG1fdGV4
bWFwTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX3RleG1hcExheWVyID0gbWFrZVVuaXF1ZTxU
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAjZW5k
aWYKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMzI1LDEwICszMjUsMTAgQEAgRXh0
ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiAgICAgaWYgKCFt
X2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BFTkdMX0VTKQogICAgICAgICAvLyBnbEdldFN0cmlu
Z2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KLSAgICAgICAgbV9leHRlbnNpb25zID0gc3Rk
OjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKKyAgICAg
ICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywg
IGZhbHNlKTsKICNlbHNlCiAgICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhl
IENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KLSAgICAg
ICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRo
aXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICAgICAgbV9l
eHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIEdMQ29udGV4
dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgIH0KICAgICByZXR1
cm4gKm1fZXh0ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZv
cm1MYXllci5jcHAKaW5kZXggMTRmMWRiZjE4ZDkxYjM5MDc1ZTJkNTBmMjE0OWI3NzZiYmMxNzQ5
My4uNjYzMjMxNTY5NWJhMjFjMjY3ZDE1NTkzMmViYTkxNDdmYjY2YWUwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVk
ZWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX3BsYXRmb3JtTGF5ZXJQ
cm94eS0+bG9jaygpKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVm
ZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1f
Y29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4
dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHkt
PnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1f
Y29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQu
bWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA5NzRiODU3
OGI4OGFhNjQzNTA5MWU4YjBjMzhiYjJkYjcxMGVmMTAyLi5hMmY3NTg2NmUzMjNiOGZkYmE0M2Ew
MDdkNDQ3YWFhNDY1NzZiZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMTg2LDcgKzE4
Niw3IEBAIFRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKCkKIAogICAgIG1fZGF0YSA9
IG5ldyBUZXh0dXJlTWFwcGVyR0xEYXRhKHBsYXRmb3JtQ29udGV4dCk7CiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQotICAgIG1fdGV4dHVyZVBvb2wgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpdG1h
cFRleHR1cmVQb29sPihtX2NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBtX3RleHR1cmVQb29sID0g
bWFrZVVuaXF1ZTxCaXRtYXBUZXh0dXJlUG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7CiAjZW5k
aWYKIH0KIApAQCAtNzkwLDcgKzc5MCw3IEBAIFJlZjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFw
cGVyR0w6OmNyZWF0ZVRleHR1cmUoR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJh
dGVkKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOwogfQogCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXgg
N2FmZGYzMGEwNWJjYTUzOTdiODAxOGJmZWJkODllMGUxZGE1MDMzMy4uZTExYTBiYjI3YjgxMGMy
ZDUyNzZiMmE5YjBjNTA5Zjg4OTUwNjZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmCiAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUo
VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7
CiAgICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0
dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJ
RCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVy
ZSksIG1fZXh0cmFGbGFncyk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAppbmRleCBjNzE0ZjZkNzhjMWNmMWE2MWQ0ZGZm
NmI0MjA1MjFiMDJlY2Q3YzUwLi4zNzkzNjc1YWM4ZDZiM2MzMmEzYjMxODE5M2U0OWE3YjM3ZGM0
ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHku
Y3BwCkBAIC03MSw4ICs3MSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvCiAgICAgaWYgKG1f
dGFyZ2V0TGF5ZXIgJiYgbV9jdXJyZW50QnVmZmVyKQogICAgICAgICBtX3RhcmdldExheWVyLT5z
ZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKLSAgICBtX3JlbGVhc2VV
bnVzZWRCdWZmZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVy
RmlyZWQpOwotICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVu
TG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQpOworICAgIG1fcmVsZWFzZVVudXNlZEJ1
ZmZlcnNUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7CisgICAg
bV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRo
aXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBk
YXRlVGltZXJGaXJlZCk7CiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIG1fY29tcG9z
aXRvclRocmVhZFVwZGF0ZVRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6
OkNvbXBvc2l0aW5nVGhyZWFkVXBkYXRlVGltZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAzNjdkOGE1M2NmMzcw
ZDIyMDJkNmYzNDAxY2RjYjNhMDJmZjQyYzJiLi5kNDc1NzEwYmEwY2RkZmJjZGJkYTBjNjhjZTMw
YjgxZWZhYWQ2OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKICAgICAvLyBFbnN1cmUg
dGhlIFRpbGVkQmFja2luZ1N0b3JlIG9iamVjdCwgYW5kIGVuZm9yY2UgYSBjb21wbGV0ZSByZXBh
aW50IGlmIGl0J3Mgbm90IGJlZW4gcHJlc2VudCB5ZXQuCiAgICAgaWYgKCFsYXllclN0YXRlLm1h
aW5CYWNraW5nU3RvcmUpIHsKLSAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0g
c3RkOjptYWtlX3VuaXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVu
dHNTY2FsZSgpKTsKKyAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gbWFrZVVu
aXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsK
ICAgICAgICAgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50ID0gdHJ1ZTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNi
ZTQzMTFkZWFhMDI0OTdjN2VkMWNkY2ExMzQ1YmE1YTY4MDMxMDkuLjRhNjk3ODIyZTRkZTJjZGI4
YjY2ZjgxZDQwNGQ4ZGJlODJiNDk4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1Rp
bGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgVGlsZWRCYWNraW5n
U3RvcmU6OmNyZWF0ZVRpbGVzKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRS
ZWN0JiBzCiAgICAgdW5zaWduZWQgdGlsZXNUb0NyZWF0ZUNvdW50ID0gdGlsZXNUb0NyZWF0ZS5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHRpbGVzVG9DcmVhdGVDb3VudDsg
KytuKSB7CiAgICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgY29vcmRpbmF0ZSA9IHRpbGVzVG9DcmVh
dGVbbl07Ci0gICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIHN0ZDo6bWFrZV91bmlxdWU8
VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKKyAgICAgICAgbV90aWxlcy5hZGQoY29vcmRpbmF0
ZSwgbWFrZVVuaXF1ZTxUaWxlPigqdGhpcywgY29vcmRpbmF0ZSkpOwogICAgIH0KICAgICByZXF1
aXJlZFRpbGVDb3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1T
dGF0ZS5jcHAKaW5kZXggYzg4ZTliZWY5ZDY2Y2EyYjU1MDE4YzkwZjRiMGE0MjhiNDY4MmVmOC4u
NGVhZjAwMTEyMGM0N2ZmY2U1NWFiNGRmYTkyMTgzY2U4YjMxOTRmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1TdGF0ZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgVHJhbnNmb3JtU3RhdGUmIFRyYW5zZm9y
bVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVyKQogICAgIGlmICht
X21hcFF1YWQpIHsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IG90aGVyLm1fbGFzdFBsYW5h
clF1YWQ7CiAgICAgICAgIGlmIChvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKQotICAg
ICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRRdWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CisgICAgICAgICAgICBt
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpvdGhlci5t
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9s
YXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7CiAgICAgfQpAQCAtNTAsNyArNTAsNyBA
QCBUcmFuc2Zvcm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPShjb25zdCBUcmFuc2Zv
cm1TdGF0ZSYgb3RoZXIpCiAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG51bGxwdHI7CiAK
ICAgICBpZiAob3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkKLSAgICAgICAgbV9hY2N1bXVs
YXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpv
dGhlci5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5tX2FjY3VtdWxh
dGVkVHJhbnNmb3JtKTsKICAgICAgICAgCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMTI5LDEy
ICsxMjksMTIgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybUZyb21Db24KICAgICAvLyBJZiB3ZSBoYXZlIGFu
IGFjY3VtdWxhdGVkIHRyYW5zZm9ybSBmcm9tIGxhc3QgdGltZSwgbXVsdGlwbHkgaW4gdGhpcyB0
cmFuc2Zvcm0KICAgICBpZiAobV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAo
bV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCi0gICAgICAgICAgICBtX2Fj
Y3VtdWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAg
ICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0
aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyICogKm1fYWNjdW11bGF0ZWRUcmFuc2Zv
cm0pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5t
dWx0aXBseSh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKICAgICB9IGVsc2UgaWYgKGFjY3VtdWxh
dGUgPT0gQWNjdW11bGF0ZVRyYW5zZm9ybSkgewogICAgICAgICAvLyBNYWtlIG9uZSBpZiB3ZSBz
dGFydGVkIHRvIGFjY3VtdWxhdGUKLSAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0
ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWlu
ZXIpOworICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfQogICAgIAogICAg
IGlmIChhY2N1bXVsYXRlID09IEZsYXR0ZW5UcmFuc2Zvcm0pIHsKQEAgLTIwOCw3ICsyMDgsNyBA
QCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZChjb25zdCBG
bG9hdFF1YWQqIHF1YWQpCiAgICAgLy8gTWFwIHRoZSBxdWFkIGJhY2sgdGhyb3VnaCBhbnkgdHJh
bnNmb3JtIG9yIG9mZnNldCBiYWNrIGludG8gdGhlIGxhc3QgZmxhdHRlbmluZyBjb29yZGluYXRl
IHNwYWNlLgogICAgIEZsb2F0UXVhZCBiYWNrTWFwcGVkUXVhZCgqcXVhZCk7CiAgICAgbWFwUXVh
ZChiYWNrTWFwcGVkUXVhZCwgaW52ZXJzZURpcmVjdGlvbigpKTsKLSAgICBtX2xhc3RQbGFuYXJT
ZWNvbmRhcnlRdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KGJhY2tNYXBwZWRRdWFk
KTsKKyAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+
KGJhY2tNYXBwZWRRdWFkKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZChGbG9h
dFF1YWQmIHF1YWQsIFRyYW5zZm9ybURpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHdhc0NsYW1w
ZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKaW5kZXggMTA4NjM3NDAwYTIwZmEyZjA5
ZGY2YWQ0MzkzM2NhN2RhMTdmNDg2MS4uYjYyNTgzNmE1Y2UyMjViZjQ3ZjMzMGMwOGMyOWQ4Yzc1
NjUyZWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFz
cyBUcmFuc2Zvcm1TdGF0ZSB7CiAgICAgICAgIC8vIFdlIG11c3QgYmUgaW4gYSBmbGF0dGVuZWQg
c3RhdGUgKG5vIGFjY3VtdWxhdGVkIG9mZnNldCkgd2hlbiBzZXR0aW5nIHRoaXMgc2Vjb25kYXJ5
IHF1YWQuCiAgICAgICAgIEFTU0VSVChtX2FjY3VtdWxhdGVkT2Zmc2V0ID09IExheW91dFNpemUo
KSk7CiAgICAgICAgIGlmIChxdWFkKQotICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5
UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CisgICAgICAgICAgICBt
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpxdWFkKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG51
bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCBkMzFhMjU3OWZiMWUxYzc5NDI1ZDAyOTA1ZWJl
YmM4OGQxNGFkZDUwLi44Zjc3MDI3NWRlNjk5NTY4Yzg1MTVhZWEwZjJjZmEwZTUyMDU2NzI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENh
Y2hlV2luLmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZv
cm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAg
ICAgYm9vbCBzeW50aGVzaXplQm9sZCA9IGlzR0RJRm9udFdlaWdodEJvbGQod2VpZ2h0KSAmJiAh
aXNHRElGb250V2VpZ2h0Qm9sZChsb2dGb250LmxmV2VpZ2h0KTsKICAgICBib29sIHN5bnRoZXNp
emVJdGFsaWMgPSBpc0l0YWxpYyhmb250RGVzY3JpcHRpb24uaXRhbGljKCkpICYmICFsb2dGb250
LmxmSXRhbGljOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0
Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNp
emUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJdGFsaWMsIHVzZUdESSk7CisgICAgYXV0
byByZXN1bHQgPSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQpLCBm
b250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5bnRo
ZXNpemVJdGFsaWMsIHVzZUdESSk7CiAKICNpZiBVU0UoQ0cpCiAgICAgYm9vbCBmb250Q3JlYXRp
b25GYWlsZWQgPSAhcmVzdWx0LT5jZ0ZvbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAppbmRleCAzODdhMjM5ZjgyOWMyZDc4MDljMmM5NmQzZmUxMjRkZWUxNGJkM2Q3Li42NDg0ODVh
YzI2Y2IyMzc1Y2Y2NTc0ZjgxZmY0Y2Q2NTY3MmM1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAg
ICBmb250UmVmZXJlbmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUp
OwogICAgIGlmICghZm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVy
ZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggYWI3Yzc5MGQ2MGYyZThmNzRhZjAz
YzA2YWNmYzcyYzhlMzljMjJkOS4uZWVlYWZlYmQ5MzNjYTljNzhkZDA1MTQxM2QyMzM0NGNhODUz
YjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTkxLDcg
KzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBpZiAoIWZvbnRSZWZlcmVuY2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZv
bnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1h
dChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI5
NTM1NTAzYzMwNmM1MDFhYTM5M2YzMWZmZDkyODg1ZWRlOWJkZWYuLmY0YWFkM2I1NjNlM2QxNDM0
ZmYzMThlNGM2MjI3MzI1YzA1OWM0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIExSRVNVTFQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZhdGU6OmZ1
bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQgaHduZCwgVUlOVCBtCiB9CiAKIEZ1bGxTY3JlZW5D
b250cm9sbGVyOjpGdWxsU2NyZWVuQ29udHJvbGxlcihGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVu
dCogY2xpZW50KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UHJpdmF0ZT4odGhp
cywgY2xpZW50KSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFByaXZhdGU+KHRoaXMsIGNs
aWVudCkpCiB7CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CiB9CkBAIC0xMzEsMTMg
KzEzMSwxMyBAQCB2b2lkIEZ1bGxTY3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4oKQog
ICAgIG1fcHJpdmF0ZS0+bV9vcmlnaW5hbEZyYW1lID0gb3JpZ2luYWxGcmFtZTsKIAogICAgIEFT
U0VSVCghbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9i
YWNrZ3JvdW5kV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3Jv
dW5kV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5j
cmVhdGVXaW5kb3coMCk7CiAgICAgOjpBbmltYXRlV2luZG93KG1fcHJpdmF0ZS0+bV9iYWNrZ3Jv
dW5kV2luZG93LT5od25kKCksIGtGdWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24sIEFXX0JMRU5E
IHwgQVdfQUNUSVZBVEUpOwogCiAgICAgbV9wcml2YXRlLT5tX2NsaWVudC0+ZnVsbFNjcmVlbkNs
aWVudFdpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS0+bV9mdWxs
U2NyZWVuV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRl
LmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKICAg
ICBBU1NFUlQobV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwogICAgIG1fcHJpdmF0ZS0+
bV9mdWxsU2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
Q2Fpcm9XaW4uY3BwCmluZGV4IDEwNjdiOTYwOTNkYjJlZDU5MWEyMWEzMWQ5ZDAyNTZkYzEyOTNl
ODkuLmYxNDQyNTcyY2M2ZDFkNTRiYmVlNThiZGJjMzZlZGY3NzRhYWJiNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWly
b1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dENhaXJvV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9vbCBoYXNBbHBoYSkKIAogICAgIGNhaXJvX3Qq
IGNyID0gY3JlYXRlQ2Fpcm9Db250ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOwogCi0gICAgbV9k
YXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY3Ip
KTsKICAgICBtX2RhdGEtPnBsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRl
KG1fZGF0YSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNvbnRl
eHQoKS0+Y3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggYzJiYWZh
Zjk2YTE2MDcwODBiNzYzMzk1MjY2MmU3Njc3NjE0YjAwYy4uOTZjODI4MWFmNGIyMmM2Njg2YWNi
MTRjNWU4MmMxZDY5YjkwZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMs
IElEMkQxRENSZW5kZXJUYXJnZXQqKiByZW5kZXJUYXJnZXQsIFJFCiAKICAgICAoKnJlbmRlclRh
cmdldCktPkJpbmREQyhoZGMsICZyZWN0KTsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFy
Z2V0KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwg
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hk
YyA9IGhkYzsKIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1Jbml0KEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgaWYgKCFTVUNDRUVERUQoaHIp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgp
KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKICAgICBtX2RhdGEgPSBuZXcgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNvbnRleHQp
LCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1f
aGRjID0gaGRjOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4
IGJkNzZlZmJiYTlkMGU4OTdkM2QyODhlODVlOGQyNDQ0Y2M0ZjhmNGUuLjFlYmI1YjA5ZDM4NTM3
YzAxOTIyMGI5NDdkY2FkOTQ0ZDhlMTAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAg
ICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxh
dGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU1LDE0ICs1NSwxNCBAQCBHcmFw
aGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbcmVuZGVyVGFyZ2V0XShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkK
ICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5l
VHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVy
aW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGlj
c0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAg
IG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdl
dCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKQEAg
LTcwLDkgKzcwLDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXgKIAogR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIDogR3JhcGhp
Y3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9
KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29u
dGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQog
ICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBt
X3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+
KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0
OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRm
b3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAg
ICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRXaW4uY3BwCmluZGV4IDViZGU0Y2VkZjUxNmE5MTc5YTZkM2QzYjNlMzNkMTM0ZWQ1YWI1MTEu
LjFkODA0MjBjZjdlYzZjZDc3NWE2MmJhZWEyMmY5OTA2MDdlYjRjYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6V2luZG93c0JpdG1h
cDo6fldpbmRvd3NCaXRtYXAoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0OjpX
aW5kb3dzQml0bWFwPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXAoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dzQml0
bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaW5kb3dz
Qml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyRC5jcHAKaW5kZXggMDZjMTc0NTc5YTRiYzEzMDkxZjM0YjU3OTRhYWE5Mjk5M2JiYmEyNC4u
MzVhOWZmNjExMzUxYzMzYzcxNzRkOTJhMWZkY2Y0NDcwZTgxYTg4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJELmNwcApAQCAtMTEyLDggKzExMiw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vdGU6IFRoaXMgcGxhY2VzIHRoZSBiaXRtYXBjb250
ZXh0IGludG8gYSBsb2NrZWQgc3RhdGUgYmVjYXVzZSBvZiB0aGUgQmVnaW5EcmF3IGNhbGwgaW4g
dGhlIGNvbnN0cnVjdG9yLgotICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKLSAg
ICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2Rh
dGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmlu
Z0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOworICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsK
KyAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEu
cGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0Nv
bnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IDU4MzhlYzE1
N2EyYzdiNzE2M2I3MTY4MmE0ZWI4YzgwMzRlOTYzMjEuLjZkNjRhZTlhNmUzYTQxN2ZiMTRmMTIx
NjZmNjhkM2M5YTU1MjY2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsK
LSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9
LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCiAg
ICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsK
ICAgICB9CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmJ1
ZmZlcmVkKCkgY29uc3QKIHsgCi0gICAgYXV0byByYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpOwogICAgIGlmIChtX3ByZXNlbnRlciAmJiBtX3ByZXNlbnRlci0+bWF4
VGltZUxvYWRlZCgpID4gMCkKICAgICAgICAgcmFuZ2VzLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGlt
ZSgpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV9wcmVzZW50ZXItPm1heFRpbWVMb2Fk
ZWQoKSkpOwogICAgIHJldHVybiByYW5nZXM7CkBAIC04ODgsNyArODg4LDcgQEAgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6Q3VzdG9tVmlk
ZW9QcmVzZW50ZXIoTWUKICAgICBtX3NvdXJjZVJlY3QuYm90dG9tID0gMTsKICAgICBtX3NvdXJj
ZVJlY3QucmlnaHQgPSAxOwogCi0gICAgbV9wcmVzZW50ZXJFbmdpbmUgPSBzdGQ6Om1ha2VfdW5p
cXVlPERpcmVjdDNEUHJlc2VudGVyPigpOworICAgIG1fcHJlc2VudGVyRW5naW5lID0gbWFrZVVu
aXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKICAgICBpZiAoIW1fcHJlc2VudGVyRW5naW5lKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCmluZGV4IDMzN2ZhZjM3OGRhNzk1NWJlYTYx
MGFlYzkwNzU3OTY2ZDZjNDgyMDAuLjdlNDQ0ZDAyNzZkYjRiZGRhNjU4Nzk3YmQ1NDMwNmQ2ZmY5
Y2IyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
S0NBSW1hZ2VRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FJbWFnZVF1ZXVlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIHN0YXRpYyB2b2lkIFdL
Q0FJbWFnZVF1ZXVlUmVsZWFzZShDQUltYWdlUXVldWVSZWYgaXEpCiB9CiAKIFdLQ0FJbWFnZVF1
ZXVlOjpXS0NBSW1hZ2VRdWV1ZSh1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50
MzJfdCBjYXBhY2l0eSkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFn
ZVF1ZXVlUHJpdmF0ZT4oKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1
ZXVlUHJpdmF0ZT4oKSkKIHsKICAgICBtX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IGFkb3B0Q0Yo
d2tDQUltYWdlUXVldWVDcmVhdGUod2lkdGgsIGhlaWdodCwgY2FwYWNpdHkpKTsKIH0KIAogV0tD
QUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKGNvbnN0IFdLQ0FJbWFnZVF1ZXVlJiBvKQotICAg
IDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQor
ICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQogewog
ICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlID0gby5tX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRl
eCA3MWEwMGEzMGMwZmFlZGQ5YjQwZWM0ZmZhZGYxNzg2MzhmMjViODU0Li40MjI1MmQzNGI1NGZl
NmMyYzI2YjUyMmM2NjBlODYyZjA1NmVmMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC00MywyNCArNDMsMjQgQEAgZW51bSBDbGlwYm9h
cmREYXRhVHlwZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJk
PigiQ0xJUEJPQVJEIik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBhc3RlYm9hcmQ+KCJQUklNQVJZIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oIlBSSU1BUlkiKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Ao
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRh
dGE6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rp
b25EYXRhOjpjcmVhdGUoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
CiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRI
ZWxwZXIuY3BwCmluZGV4IDQ5MDM3MWFkODllZjJlNzk2ZTM0MDFhYWMxZGJiODA2ZWE5NjZlYjAu
LmI2ZTA1OGJlMzMwNjcyNTRiYmI2MzA1MzQ5ZWE4NmNhYWU1ZGEyNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKQEAgLTMwMCw3ICsz
MDAsNyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3Rr
Q2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IFNlbAogCiAgICAgaWYgKG51bWJlck9mVGFyZ2V0
cyA+IDAgJiYgdGFibGUpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8U2VsZWN0aW9uRGF0YSo+IGNo
YW5nZShzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBjb25zdF9jYXN0PFNlbGVjdGlvbkRhdGEq
Pigmc2VsZWN0aW9uKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xp
cGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJpbWFy
eVNlbGVjdGlvbkNsZWFyZWQpKTsKKyAgICAgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxDbGlw
Ym9hcmRTZXREYXRhPigqc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgV1RGTW92ZShwcmltYXJ5
U2VsZWN0aW9uQ2xlYXJlZCkpOwogICAgICAgICBpZiAoZ3RrX2NsaXBib2FyZF9zZXRfd2l0aF9k
YXRhKGNsaXBib2FyZCwgdGFibGUsIG51bWJlck9mVGFyZ2V0cywgZ2V0Q2xpcGJvYXJkQ29udGVu
dHNDYWxsYmFjaywgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLCBkYXRhLmdldCgpKSkg
ewogICAgICAgICAgICAgZ3RrX2NsaXBib2FyZF9zZXRfY2FuX3N0b3JlKGNsaXBib2FyZCwgbnVs
bHB0ciwgMCk7CiAgICAgICAgICAgICAvLyBXaGVuIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0
YSgpIHN1Y2NlZWRzIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayB0YWtlcyB0aGUgb3du
ZXJzaGlwIG9mIGRhdGEsIHNvIHdlIGxlYWsgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCmluZGV4IGJkY2M5OWU4NTlkNDk3
NTA3OGZmM2M1ZTJlYmMzODVkOWI5NWI5NTIuLjczZTA3NThhNmVkZDFlMTkzMjMxMDgzZjg5YTdl
N2ZkZjIwZDEzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUdhZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR2FkZ2V0LmNwcApAQCAtMzUsMjAgKzM1LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJUaGVtZUdhZGdldD4gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShjb25zdCBSZW5kZXJUaGVt
ZUdhCiB7CiAgICAgc3dpdGNoIChpbmZvLnR5cGUpIHsKICAgICBjYXNlIFJlbmRlclRoZW1lR2Fk
Z2V0OjpUeXBlOjpHZW5lcmljOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJs
aW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlRleHRG
aWVsZDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUZXh0Rmll
bGRHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVudCwg
c2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpS
YWRpbzoKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpDaGVjazoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBh
cmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsK
ICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpBcnJvdzoKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5mbywgcGFyZW50LCBz
aWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZUFycm93R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2Fz
ZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBw
b3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbkdhZGdl
dD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhl
bWVHYWRnZXQ6OlR5cGU6OlNjcm9sbGJhcjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBv
c2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJH
YWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRl
clRoZW1lR2FkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3Np
dGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0
PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgfQogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lV2lkZ2V0LmNwcAppbmRleCAwNWQxMmRkOWVhZmJlZjAyYTQ1OWNhNTI3NjQxN2E1Yjli
MGU4OTc2Li5jYTZlZDkxOGE1MDMzZTI5NzZkYjg0ZDg5YzIwNDg4NzAwZjAyYmNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKQEAg
LTQyLDQ5ICs0Miw0OSBAQCBSZW5kZXJUaGVtZVdpZGdldCYgUmVuZGVyVGhlbWVXaWRnZXQ6Omdl
dE9yQ3JlYXRlKFR5cGUgd2lkZ2V0VHlwZSkKICAgICBhdXRvIGFkZFJlc3VsdCA9IHdpZGdldE1h
cCgpLmVuc3VyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2lkZ2V0VHlwZSksIFt3aWRnZXRUeXBl
XSgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZVdpZGdldD4gewogICAgICAgICBzd2l0
Y2ggKHdpZGdldFR5cGUpIHsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
VmVydGljYWxTY3JvbGxiYXJSaWdodDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJU
SUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwsIFJlbmRlclRoZW1lU2Nyb2xs
YmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVydGlj
YWxQb3NpdGlvbjo6TGVmdCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6
Okhvcml6b250YWxTY3JvbGxiYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvclJpZ2h0OgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRB
VElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09S
SUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9y
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxJ
bmRpY2F0b3JMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9z
aXRpb246OkxlZnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVT
Y3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6
Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246
OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFs
U2Nyb2xsSW5kaWNhdG9yOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6OkNoZWNrQnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0
dG9uOjpUeXBlOjpDaGVjayk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OkNoZWNrKTsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6UmFkaW9CdXR0b246Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4o
UmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlvKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1
dHRvbjo6VHlwZTo6UmFkaW8pOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpCdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVt
ZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Ok5vKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVm
YXVsdDo6Tm8pOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0b25E
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVC
dXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZh
dWx0OjpZZXMpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpDb21ib0Jv
eDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQ29tYm9C
b3g+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUNvbWJvQm94
PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpFbnRyeToKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTZWxlY3RlZEVudHJ5OgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVyVGhlbWVFbnRy
eTo6U2VsZWN0ZWQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZUVudHJ5PihSZW5kZXJUaGVtZUVudHJ5OjpTZWxlY3RlZDo6WWVzKTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VhcmNoRW50cnk6Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNlYXJjaEVudHJ5PigpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U3BpbkJ1dHRvbjoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTbGlkZXI6Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1l
U2xpZGVyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogICAgICAgICBjYXNlIFJlbmRlclRo
ZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2xpZGVyOgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9O
VEFMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihH
VEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6OlByb2dyZXNzQmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6
RGV0ZXJtaW5hdGUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVQ
cm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJbmRldGVybWluYXRlUHJvZ3Jl
c3NCYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVBy
b2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJl
bmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkluZGV0ZXJtaW5hdGUpOwogICAgICAgICBjYXNl
IFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpMaXN0VmlldzoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lTGlzdFZpZXc+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpJY29uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVJY29uPigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpXaW5kb3c6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVt
ZVdpbmRvdz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lV2lu
ZG93PigpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZW5kZXJUaGVtZVNjcm9sbGJh
cjo6UmVuZGVyVGhlbWVTY3JvbGxiYXIoR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24sIE1vZGUg
bW9kZQogICAgIGluZm8udHlwZSA9IFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmljOwog
ICAgIGluZm8ubmFtZSA9ICJjb250ZW50cyI7CiAgICAgaW5mby5jbGFzc0xpc3QuY2xlYXIoKTsK
LSAgICBtX2NvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4o
aW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIuZ2V0
KCkpOworICAgIG1fY29udGVudHMgPSBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0Pihp
bmZvLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIGNoaWxkcmVuLCBtX3Njcm9sbGJhci5nZXQo
KSk7CiAgICAgaW5mby5uYW1lID0gInNsaWRlciI7CiAgICAgbV9zbGlkZXIgPSBSZW5kZXJUaGVt
ZUdhZGdldDo6Y3JlYXRlKGluZm8sIG1fY29udGVudHMtPmNoaWxkKG1fdHJvdWdoUG9zaXRpb24p
KTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBSZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVt
ZUNvbWJvQm94KCkKICAgICB9OwogICAgIGluZm8ubmFtZSA9ICJib3giOwogICAgIGluZm8uY2xh
c3NMaXN0ID0geyAiaG9yaXpvbnRhbCIsICJsaW5rZWQiIH07Ci0gICAgbV9ib3ggPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fSE9S
SVpPTlRBTCwgY2hpbGRyZW4sIG1fY29tYm9Cb3guZ2V0KCkpOworICAgIG1fYm94ID0gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKICAgICBSZW5kZXJUaGVtZUdhZGdldCog
YnV0dG9uID0gbV9ib3gtPmNoaWxkKDApOwogICAgIGluZm8uY2xhc3NMaXN0LnJlbW92ZUxhc3Qo
KTsKICAgICBtX2J1dHRvbkJveCA9IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoaW5mbywgYnV0
dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggODQwN2MxMTAxZGRkNmRiNmUz
NzhkZWZjYjNhYjgyNmJmNzI2NDU0ZC4uNzg2OTdlYjAwMDBmN2Y3YjgyYTdkMGVjZjVmOTg1YTFl
OTI4OWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
Ym9vbCBCTVBJbWFnZURlY29kZXI6OmRlY29kZUhlbHBlcihib29sIG9ubHlTaXplKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fcmVhZGVyKSB7Ci0gICAgICAgIG1fcmVhZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0
LCBpbWdEYXRhT2Zmc2V0LCBmYWxzZSk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxC
TVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBmYWxz
ZSk7CiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDdiYTdlZDkxMDFjZTI1YTliZjZlMjMxMDg3
YmYwYmMxMTRjYzIyZDYuLjRmMzQ4N2UzMzQ3NjQwNTQ3NGNmODZiNWM2MDZkMmMxOTg4YzdjYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBH
SUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVlcnkgcXVl
cnksIGJvb2wgYWxsRGF0YVIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikg
ewotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VSZWFkZXI+KHRo
aXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8R0lGSW1hZ2VSZWFkZXI+KHRoaXMp
OwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggMWNjYTVlNTllZWIzNTFiMDU4YTIxZGIxMzRmNjQz
NzkxZTUwNzdjYS4uZDc3MTg2ZWE5NzM5YmRmYjJjNTYyMjhlZTRjZjVlODgyOGQ4ODU5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgYm9vbCBHSUZGcmFt
ZUNvbnRleHQ6OmRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBXZWJDb3JlOjoKICAgICAgICAgaWYgKCFpc0RhdGFTaXplRGVmaW5lZCgpIHx8ICFpc0hlYWRl
ckRlZmluZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIG1fbHp3Q29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlzKTsKKyAg
ICAgICAgbV9sendDb250ZXh0ID0gbWFrZVVuaXF1ZTxHSUZMWldDb250ZXh0PihjbGllbnQsIHRo
aXMpOwogICAgICAgICBpZiAoIW1fbHp3Q29udGV4dC0+cHJlcGFyZVRvRGVjb2RlKCkpIHsKICAg
ICAgICAgICAgIG1fbHp3Q29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBHSUZJbWFnZVJlYWRlcjo6c2V0UmVtYWluaW5n
Qnl0ZXMoc2l6ZV90IHJlbWFpbmluZ0J5dGVzKQogdm9pZCBHSUZJbWFnZVJlYWRlcjo6YWRkRnJh
bWVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1fZnJhbWVzLmlzRW1wdHkoKSB8fCBtX2ZyYW1l
cy5sYXN0KCktPmlzQ29tcGxldGUoKSkKLSAgICAgICAgbV9mcmFtZXMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXplKCkpKTsKKyAgICAgICAgbV9m
cmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXplKCkp
KTsKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhpcyBtZXRob2QgdG8gY2xvc2UgdG8gZG9MWlcoKS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTg3MGJiMTYwYjg0OTQ4ZjBiNTlkZTQ1
MTE2MzZiYTRjMGYzOGYyZS4uZmY2YTFjODdhZTZmMDViNDljY2MxMjhhYmUwNWMzMDNkNmVlYmFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29s
IElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgICAgICAg
ICAvLyBXZSBuZWVkIHRvIGhhdmUgYWxyZWFkeSBzaXplZCBtX2ZyYW1lQnVmZmVyQ2FjaGUgYmVm
b3JlIHRoaXMsIGFuZAogICAgICAgICAgICAgLy8gd2UgbXVzdCBub3QgcmVzaXplIGl0IGFnYWlu
IGxhdGVyIChzZWUgY2F1dGlvbiBpbiBmcmFtZUNvdW50KCkpLgogICAgICAgICAgICAgQVNTRVJU
KG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPT0gbV9kaXJFbnRyaWVzLnNpemUoKSk7Ci0gICAg
ICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJl
YWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CisgICAgICAgICAg
ICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywg
ZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CiAgICAgICAgICAgICBtX2JtcFJlYWRl
cnNbaW5kZXhdLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgICAgICAgICBtX2JtcFJlYWRl
cnNbaW5kZXhdLT5zZXRCdWZmZXIoJm1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0pOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiNzJjNTVhMmNiOTA5ZmEz
NDYxY2Y3OTVmMDRkY2VhZDUxMDRlOGVlLi5kMGI5MTZhNWRhZjhhM2FhMjU0ZjQ5NzM0NzNhODMx
NTU3MjlkYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTY1Myw3ICs2
NTMsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikK
LSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpQRUdJbWFnZVJlYWRlcj4odGhp
cyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRoaXMp
OwogCiAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVjb2RlIHRoZSBpbWFnZSBidXQgd2UndmUgcmVj
ZWl2ZWQgYWxsIHRoZSBkYXRhLCBkZWNvZGluZwogICAgIC8vIGhhcyBmYWlsZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGMxOGEzOWI1OTEzM2EzMThmMTUxMDU4MWU4ZjkxZWJk
ZDc2ODc5YWIuLjYyY2I5YjIyYTAxZjI2ZTlmMmNkNDFkZWEzODFiMzYzNjg5N2VlNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBQTkdJbWFn
ZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCB1bnNpZ25lZCBoYWx0QXRGcmFtZSwgYm9v
bCBhbGxEYXRhUmUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikKLSAgICAg
ICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsKKyAg
ICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsKIAogICAg
IC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVkIGFs
bCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggMjA5Zjg4ZjQ3YTNiN2Nk
YzAxNDNkZTkyZTI0YmFkZGY5NjY0YjVmNC4uY2FlM2RjZjE2NDc5NmNlZWNiNjhiMjQ0OGYxMTMz
YzEwZWM5YzIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGls
ZUNhY2hlLm1tCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIExlZ2FjeVRp
bGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyogd2luZG93KQogICAgIDogbV93aW5k
b3cod2luZG93KQogICAgICwgbV90b21ic3RvbmUoYWRvcHROUyhbW0xlZ2FjeVRpbGVDYWNoZVRv
bWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV96b29tZWRPdXRUaWxlR3JpZChzdGQ6Om1h
a2VfdW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSkpCisgICAgLCBtX3pv
b21lZE91dFRpbGVHcmlkKG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVT
aXplKSkKICAgICAsIG1fdGlsZUNyZWF0aW9uVGltZXIoKnRoaXMsICZMZWdhY3lUaWxlQ2FjaGU6
OnRpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgW2hvc3RMYXllcigpIGluc2VydFN1Ymxh
eWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKSBhdEluZGV4OjBdOwpAQCAt
MjM2LDcgKzIzNiw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSgp
CiAKICAgICBpZiAobV9jdXJyZW50U2NhbGUgIT0gbV96b29tZWRPdXRUaWxlR3JpZC0+c2NhbGUo
KSkgewogICAgICAgICBpZiAoIW1fem9vbWVkSW5UaWxlR3JpZCkgewotICAgICAgICAgICAgbV96
b29tZWRJblRpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMs
IG1fdGlsZVNpemUpOworICAgICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkID0gbWFrZVVuaXF1
ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOwogICAgICAgICAgICAgW2hvc3RM
YXllcigpIGFkZFN1YmxheWVyOm1fem9vbWVkSW5UaWxlR3JpZC0+dGlsZUhvc3RMYXllcigpXTsK
ICAgICAgICAgICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKaW5kZXggNjY0N2VjM2EzNmQx
NTg3ODY5NGYwN2QwMmIxZmIxZThjMzUwZDUzZi4uMzBlZjlmYzMxYzg3ZjExYmZhZmU0Y2E2YTll
YTgxMjRkNWZjM2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVHcmlkLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVn
YWN5VGlsZUdyaWRUaWxlOwogCiBjbGFzcyBMZWdhY3lUaWxlR3JpZCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBUaWxlSW5kZXg7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXgg
MTkxYWM3Njk2MjE1MTIxNTNkYmRjYjA3OGRkNjZmNDY1NTNiYzIxZC4uMDI3MWI5M2U3MDVjZTJj
NDJkNjMyZmUyZGIyOWFhNDZlODM2ZDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY2LDEyICs2NiwxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6
OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigiZGF0YSBpbnRlcmFjdGlvbiBw
YXN0ZWJvYXJkIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50
ZXJhY3Rpb24gcGFzdGVib2FyZCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBh
c3RlYm9hcmROYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdE
YXRhLnBhc3RlYm9hcmROYW1lKCkpOwogfQogCiAjZW5kaWYKQEAgLTEwMSw3ICsxMDEsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGNoYW5nZUNvdW50Rm9yUGFz
dGVib2FyZCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3Vu
dEZvclBhc3RlYm9hcmQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1
aWNrTG9vay5tbQppbmRleCBhOWQ5ZTQ3MTA1MDE3ZDY0ZDgyZTM3YzhhYTMxY2U2NDY5MDI1Njg1
Li5jMmI1YTBiMDhiZGY3NWU4YzAxY2Q5YmQyZDUxYzMxNDkzMDVmMzg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KQEAgLTg0LDcgKzg0LDcgQEAgUmV0YWluUHRy
PE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAq
dXJsLCBOU1N0cmluZwogICAgIGlmIChbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0
KCkgY29udGFpbnNPYmplY3Q6dXBkYXRlZE1JTUVUeXBlLmdldCgpXSkgewogICAgICAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IHV0aSA9IGFkb3B0TlMoUEFMOjpzb2Z0TGlua19RdWlja0xvb2tfUUxU
eXBlQ29weVVUSUZvclVSTEFuZE1pbWVUeXBlKHVybCwgdXBkYXRlZE1JTUVUeXBlLmdldCgpKSk7
CiAKLSAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252
ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQoKSk7CisgICAgICAgIGF1dG8gY29udmVydGVyID0gbWFrZVVu
aXF1ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0KCkpOwogICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QgcHJldmlld1JlcXVlc3QgPSBjb252ZXJ0ZXItPnByZXZpZXdSZXF1ZXN0KCk7CiAK
ICAgICAgICAgLy8gV2UgdXNlIFtyZXF1ZXN0IFVSTF0gaGVyZSBpbnN0ZWFkIG9mIHVybCBzaW5j
ZSBpdCB3aWxsIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVt
b3RlQ29tbWFuZExpc3RlbmVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQppbmRleCAxMDdjNzdjNzUzZWFiN2Q5MmRhMjk0ODdj
YTZmNjVmODA3MDQ4MjEzLi42ZDljY2UxNWI4NzRmMTVmMTU0ODc1ZWEwZWU2YjlmMTAzNWE4MzYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21t
YW5kTGlzdGVuZXJJT1MubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29t
bWEKICAgICBpZiAoIU1lZGlhUGxheWVyTGlicmFyeSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklP
Uz4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJJ
T1M+KGNsaWVudCk7CiB9CiAKIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFu
ZExpc3RlbmVySU9TKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCmluZGV4IDAx
ZjBhOWJiMjBhMjQ4YjY5OTg4NTY0NzBhZWUzNzRhOThjZmE1MWMuLmVkNjMyZWE1ZTNmNTU5N2U5
ZDc2ZmQyZTU1Njk1NjFmZTZjNGMyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9y
OjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFibGVBcmVhKTsKIH0K
IAogU2Nyb2xsQW5pbWF0b3JJT1M6OlNjcm9sbEFuaW1hdG9ySU9TKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9Q
YXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCAwNTQzZWQ1ZTlmYzlmY2ZlM2JiYWE0MDM1NWU0MDcy
ZjlmM2MzZjQwLi5mOGE2MWVjNzBjMGMxYTRjZDM3N2YwZTdjZDY3NmVmYjlkZTViYzhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUu
Y3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOwogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNTE1MjBk
Y2JiZWE1OTIxODVjMzI2NzAyY2JhNjlmZTg4YjRkNGRkZS4uOGViMTVjZjg4NTJkOTg1NzQ0N2Uw
NTljMzhhY2FlYmEyMzQxNWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTEwMCw3ICsxMDAsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm9t
aQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2FyZCk7CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKQEAgLTEwOCwxMyArMTA4LDEz
IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoKQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2Fy
ZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oTlNEcmFnUGJvYXJkKTsKICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwg
ZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCmluZGV4IDA1
Y2MwODk1N2UxZDUwMTI0ZGQ2MzJlMmE0Yzg5MjEyOTg5Njk2MTEuLjFhYTJjZDgwMTMyZjJjMjFl
ZTM4YjlmZmJkYjgzMzczYmJmNGMxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQpAQCAtMzcsNyArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlz
dGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNv
bW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZExpc3Rl
bmVyTWFjOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggYTgzMTc1MTIyZWMyZTRiNmI2
ZGU1MWJlNmRmNTI2NGI0MWExZjhjNC4uNjg2MGUzM2MzYTNiMjE1NjMwNWZiMzFhZjQyN2RjNDkw
MjM1ODdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbQpAQCAtNjk3LDcgKzY5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rk
Ojp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFNjcm9sbEFuaW1hdG9yTWFjPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1h
dG9yTWFjOjpTY3JvbGxBbmltYXRvck1hYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggMWI5ZGM1MzQ1
Yjg4MWViMzZkOTZmY2UzNTgyZGYwZTU0YTEzODViYS4uZTI0NDViYzgyM2Y4NmUwNTViMGU1Nzg3
N2Q2Y2Y1MzFhNGZmY2M5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
LmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgIGlmICgh
d3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4od3JpdGVyLnJlbGVhc2VOb25OdWxs
KCksIFdURk1vdmUoYXVkaW9UcmFja0lkKSwgV1RGTW92ZSh2aWRlb1RyYWNrSWQpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxl
YXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lk
KSk7CiB9CiAKIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6TWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsKFJlZjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4mJiB3cml0ZXIsIFN0cmlu
ZyYmIGF1ZGlvVHJhY2tJZCwgU3RyaW5nJiYgdmlkZW9UcmFja0lkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmgKaW5kZXggZDRhZGIxNTJiZDRiYWVmN2VmN2JmMDU1ZjZkOWE4
M2Q4NjdlNjdlYi4uYTIyZjU3MWJjNTE2MTFmNjE3NDQ5MTA0Y2Y1ZmM4NjBlNTJlOWFlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCkBAIC0zNCw2ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIAogY2xhc3MgTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsIGZpbmFsIDogcHVibGljIE1lZGlhUmVjb3JkZXJQcml2
YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gY3JlYXRlKGNvbnN0
IE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGRiOTRmZGFmODNhOGFiZDY3YWZjZmQ2ZWEz
NjlmYWE4OWM0NmMzZTIuLjU5YWIzODQwZmQ3MzZjYTE0NTAxNmM3ZjY2MGVjYTNiMDkwMzI0ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2Uu
Y3BwCkBAIC05MSwxNCArOTEsMTQgQEAgQXVkaW9DYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyQXVk
aW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZp
Y2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgp
IH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwg
bV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KGRldmlj
ZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4o
ZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVh
bWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoU3RyaW5n
JiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVh
bHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgV1RGTW92
ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9j
YXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkpCisgICAg
LCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkKIHsKICAg
ICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0RhdGEuaAppbmRleCA5NTNmM2E4YTBlNGY2YTA2MmI5Yjk0YThmNDE1MWE0OWYxYTQzMDFk
Li5kNGM5Mzc5Zjg0ZGFkNmY2ODgxMTk4OWQxNDM0ZWZlMTZhZWZlYzU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEdTdHJlYW1lckF1ZGlvRGF0YSA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlv
RGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVh
bWVyQXVkaW9EYXRhKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwgR3N0QXVkaW9JbmZvIGlu
Zm8pCiAgICAgICAgIDogbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlh
U3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggYjNhZjM1YWY4MjQ4
OGRkNGNmODIxY2QzZWVhZTYzZDljZjFhY2Q4NC4uNGE2ZDQxY2U0OGNmYTBiYjdkMGY4MjdiMTNk
Yzk5NDE3OThlZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwCkBAIC0zNTEsOCArMzUxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X21l
ZGlhX3N0cmVhbV9zcmNfY2xhc3NfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyY0NsYXNzKiBrbGFz
cykKIAogc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdChXZWJLaXRNZWRp
YVN0cmVhbVNyYyogc2VsZikKIHsKLSAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4oc2VsZik7
Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1PYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
TWVkaWFTdHJlYW1PYnNlcnZlcj4oc2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09i
c2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYp
OworICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE1lZGlh
U3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOwogICAgIHNlbGYtPmZsb3dDb21iaW5lciA9IGdzdF9mbG93
X2NvbWJpbmVyX25ldygpOwogICAgIHNlbGYtPmZpcnN0QXVkaW9CdWZmZXJQdHMgPSBHU1RfQ0xP
Q0tfVElNRV9OT05FOwogICAgIHNlbGYtPmZpcnN0RnJhbWVQdHMgPSBHU1RfQ0xPQ0tfVElNRV9O
T05FOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
LmNwcAppbmRleCBlNWQ5YjBlMDI3NmVkZGE1ZGJkNTIwYmMxMGYzNTE4MGQwMTVkNjliLi45N2Jl
MWYxMmZiYjIyZGMzNThjOTljODM5Zjk4MWYxNjU2YThlMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTI3LDE0ICsxMjcs
MTQgQEAgRGlzcGxheUNhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OmRpc3BsYXlGYWN0b3J5KCkKIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0
cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciAqc291cmNlX2ZhY3RvcnkpCiAgICAgOiBSZWFs
dGltZVZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwg
V1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0
cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQorICAgICwgbV9jYXB0dXJlciht
YWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKIHsKICAg
ICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmlj
ZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVT
b3VyY2UoU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5s
YWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2Vf
dW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVy
KG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0
aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3Ry
ZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA2OTk1YzYwMmNiMTc0NDdmYTc0MWQz
OWQ0NDk0YzM1NjFkYzFiYjgyLi5mOTlkYmVjNTllMDQwYmI3ZmZjNTVlNzVjNmE5MTMxNWRkZWM5
NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZh
Y3RvcnkuY3BwCkBAIC01MTIsMTQgKzUxMiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0VuY29kZXI+IEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRQog
ICAgICAgICBnX29iamVjdF9nZXQod2VicnRjZW5jb2Rlci5nZXQoKSwgImVuY29kZXIiLCAmZW5j
b2Rlci5vdXRQdHIoKSwgTlVMTCk7CiAKICAgICAgICAgaWYgKGVuY29kZXIpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihmb3JtYXQpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4oZm9ybWF0
KTsKIAogICAgICAgICBHU1RfSU5GTygiVXNpbmcgVlA4IEVuY29kZXIgZnJvbSBMaWJXZWJSVEMu
Iik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6TGlidnB4VnA4RW5j
b2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8d2VicnRjOjpMaWJ2cHhWcDhFbmNv
ZGVyPigpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXQubmFtZSA9PSBjcmlja2V0OjprSDI2NENv
ZGVjTmFtZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVySDI2NEVu
Y29kZXI+KGZvcm1hdCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lckgyNjRF
bmNvZGVyPihmb3JtYXQpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRN
RlNlbmRlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCmluZGV4IGRjNmY4ZjNmYjA1N2Zi
NTQwZDkwYzAwMjI2OGE5OTc3NDQxMDI3N2YuLjRhMDYxZmNjOTUzYjEzZDU4M2JhZTU1NDUxNTVi
Y2UwOGRmOGY5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVy
QmFja2VuZC5oCkBAIC00MCw2ICs0MCw3IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZCBm
aW5hbCA6IHB1YmxpYyBSVENEVE1GU2VuZGVyQmFja2VuZCwgcHJpdmF0ZSB3ZWJydGM6OkR0bWZT
ZW5kZXJPYnNlcnZlckludGVyZmFjZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPExpYldlYlJUQ0RU
TUZTZW5kZXJCYWNrZW5kPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQocnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6RHRtZlNlbmRlckludGVyZmFjZT4mJik7CiAgICAgfkxpYldlYlJUQ0RUTUZT
ZW5kZXJCYWNrZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRl
eCAzYWE5MGNmYTQ2YTdlYzAwZTc1NmRhM2ZiZWNkNTJhNjQzYzcyZWNlLi45MDI3Y2U4MGY4MTkz
NTdkOTQ1YmJhOWZhMjZkZGQyYjVhMWNkZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5jcHAKQEAgLTc5LDkgKzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRB
ZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIH0K
IAogY2xhc3MgQmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFzaWNQYWNr
ZXRTb2NrZXRGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQmIG5ldHdv
cmtUaHJlYWQpCi0gICAgICAgIDogbV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpC
YXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAgOiBtX3Nv
Y2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNp
Y1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAgfQogCkBA
IC0xNzksNyArMTgwLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFj
dG9yeUFuZFRocmVhZHMoUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1bHQgPSBm
YWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNTRVJUKHJl
c3VsdCk7CiAKLSAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFuZFRocmVh
ZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBtYWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigp
OwogfQogCiBzdGF0aWMgaW5saW5lIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHN0
YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkKQEAgLTI4OCwxMCArMjg5LDEwIEBAIHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRl
cjo6Y3JlYXRlUGVlCiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0
b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKIAogICAg
IGlmICghZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZhY3RvcnlB
bmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0
d29ya01hbmFnZXI+KCk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2Vy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5h
Z2VyPigpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5
KQotICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5u
ZXR3b3JrVGhyZWFkKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFj
dG9yeSA9IG1ha2VVbmlxdWU8QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9yeUFuZFRo
cmVhZHMubmV0d29ya1RocmVhZCk7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0
RmFjdG9yeS0+c2V0RGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJsZU5vbkxv
Y2FsaG9zdENvbm5lY3Rpb25zKTsKIAogICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVjdGlvbihv
YnNlcnZlciwgKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9yeUFuZFRo
cmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbnVsbHB0
cik7CkBAIC0zMTQsNyArMzE1LDcgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7
CiAgICAgZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRD
X0ZST01fSEVSRSwgWyZdKCkgewotICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29ya01hbmFn
ZXIsICZwYWNrZXRTb2NrZXRGYWN0b3J5KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRBbGxvY2F0
b3IgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNpY1BvcnRB
bGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwogICAgICAg
ICBpZiAoIW1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAgICAgICAg
ICAgIGJhc2ljUG9ydEFsbG9jYXRvci0+c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRvci0+Zmxh
Z3MoKSB8IGNyaWNrZXQ6OlBPUlRBTExPQ0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1FUkFUSU9O
KTsKICAgICAgICAgcG9ydEFsbG9jYXRvciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2NhdG9yKTsK
QEAgLTMzNSw3ICszMzYsNyBAQCBydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBMaWJXZWJS
VENQcm92aWRlcjo6Y2VydGlmaWNhdGVHZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZhY3RvcnlB
bmRUaHJlYWRzID0gZ2V0U3RhdGljRmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3JrVGhyZWFk
V2l0aFNvY2tldFNlcnZlcik7CiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0
ZUdlbmVyYXRvcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+KGZhY3Rv
cnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMubmV0
d29ya1RocmVhZC5nZXQoKSk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRl
R2VuZXJhdG9yID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpSVENDZXJ0
aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgp
LCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJldHVybiAq
ZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCAxNWUyYTg3ODlj
MDdmYjBkMGFlYzZmNmMyMGY3YmIxN2ZhOGRiN2QyLi41YjgyNzNiMDg1MTk2ZmZkMzBlNGQ3YTdm
NjU1MTBiZWMwODAzMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlckdTdHJlYW1lci5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBib29sIExpYldlYlJUQ1Byb3Zp
ZGVyOjp3ZWJSVENBdmFpbGFibGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0Rl
Y29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRGVjb2RlckZh
Y3RvcnkoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRGVj
b2RlckZhY3Rvcnk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNv
ZGVyRmFjdG9yeT4oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVy
RmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0VuY29kZXJG
YWN0b3J5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZh
Y3Rvcnk+KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKaW5kZXggODJjYmNiMWM2NmQz
MmVhMThjZGViMTY3OTM4ZDY4ZDNiMTJlNDE5YS4uZjdkODVkYzYwYTYxYTgxNDZkYmEwZDAzZTU1
ZDc1NzYyZmU5MGY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYS5jcHAKQEAgLTE4OCw4ICsxODgsOCBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGlt
ZSYgcwogICAgICAgICBpZiAoIXJlbW90ZUlPVW5pdCkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbj4oaW5wdXREZXNjcmlwdGlvbik7Ci0gICAgICAgIG1fb3V0cHV0RGVzY3Jp
cHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4ob3V0cHV0
RGVzY3JpcHRpb24pOworICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oaW5wdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fb3V0
cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4ob3V0
cHV0RGVzY3JpcHRpb24pOwogCiAgICAgICAgIG1fZGF0YVNvdXJjZSA9IEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6Y3JlYXRlKGRlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDIsIHN0cmVhbVRyYWNr
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KaW5kZXggZThl
M2QzNDg2ZGE0M2FhYzFkZDU0Yjc4ZTZiNGRmNGRjOTgxNjc5MC4uNjExYWMxNmI5ZWNiODY4OThh
MzcyNjQ3MWM3NjIwNzEyZmI5YjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYy5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWM6OnJlY29uZmlndXJlKCkKICAgICBjb25zdCBib29sIGlzTm9uSW50ZXJsZWF2ZWQgPSB0
cnVlOwogICAgIEZpbGxPdXRBU0JERm9yTFBDTShtX3N0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSgp
LCBjaGFubmVsQ291bnQsIGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdCwgYml0c1BlckJ5dGUg
KiBieXRlc1BlckZsb2F0LCBpc0Zsb2F0LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7
CiAKLSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXVkaW9CdWZm
ZXJMaXN0PihtX3N0cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBt
X21heGltaXVtRnJhbWVDb3VudCk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVl
PFdlYkF1ZGlvQnVmZmVyTGlzdD4obV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRl
c1BlckZyYW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQpOwogCiAgICAgQ01Gb3JtYXREZXNjcmlw
dGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKICAgICBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25D
cmVhdGUoTlVMTCwgJm1fc3RyZWFtRm9ybWF0LCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9y
bWF0RGVzY3JpcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUNvY29hLm1tCmluZGV4IGY5ZGM0YTg0N2Y0YTM1NWQ5Y2NmZjRjZGUwMzA4ZDBkNWM1YzQ0
NTYuLjM4OGQ3MWUyNGIyNWViZjZkNzc4ODE0ZmRkMGE5NjYzYjE3MDU0NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTQ2LDcgKzQ2
LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUNvY29hOjpjb252ZXJ0VG9ZVVYoQ1ZQaXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJD
b25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZm
ZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKSB9KTsK
KyAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJD
b25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChwcmVmZXJlZFBpeGVsQnVm
ZmVyRm9ybWF0KCkpIH0pOwogCiAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNv
bnZlcnQocGl4ZWxCdWZmZXIpOwogfQpAQCAtNzUsNyArNzUsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnJvdGF0ZVBpeGVs
QnVmZmVyKAogICAgICAgICBJbnRTaXplIHNpemUgPSB7IChpbnQpQ1ZQaXhlbEJ1ZmZlckdldFdp
ZHRoKHBpeGVsQnVmZmVyKSAsIChpbnQpQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZl
cikgfTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNm
b3JtLnJvdGF0ZShyb3RhdGlvblRvQW5nbGUocm90YXRpb24pKTsKLSAgICAgICAgbV9yb3RhdGlv
blNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1v
dmUodHJhbnNmb3JtKSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhl
bEJ1ZmZlciksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5v
KTsKKyAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25T
ZXNzaW9uVlQ+KFdURk1vdmUodHJhbnNmb3JtKSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVs
Rm9ybWF0VHlwZShwaXhlbEJ1ZmZlciksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFn
ZUNvbXBhdGlibGU6Ok5vKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9yb3RhdGlvblNlc3Npb24t
PnJvdGF0ZShwaXhlbEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXggOGUyOWQ3
YjgxYTE3M2RmYTUzNzA1ZmExZTYyYzllODgzYzRmOTUwMi4uZDQ3NjlkNjllNGFmMDQ3MGQ2MmNl
OTBiNzU0NDBlMjgyNzY5ZTdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAtMzUsNiAr
MzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jayBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2soTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jay5oCmluZGV4IDNjNmRlMWM0ZWJlNGVjNzQ3MzU0MGFlY2NiODk3NjJi
MTk1NTVjZDQuLjEzODhhZDA1MTMxMDhiMmViOTJlYzJiYmUyODkzMzY1MmU5OWEwOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxI
YW5kbGVyTW9jay5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2sgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLCBwdWJsaWMgVGltZXJFdmVudEJhc2VkTW9jayB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayhjb25z
dCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKaW5kZXggMmYxZmI1NWVl
NjcxZjJmMjI4ZmM1MTUxZDBkZDY5Y2Y4ZWM2OTVjYi4uMmM3YzQxYmQ2OTZmZjFmOWJhYjM4Mzgx
YTRiNTgzODU2OGIxOGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9SVENOb3RpZmllcnNNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1JUQ05vdGlmaWVyc01vY2suY3BwCkBAIC05OCw3ICs5OCw3IEBAIFJlbW90ZURhdGFDaGFubmVs
Tm90aWZpZXI6OlJlbW90ZURhdGFDaGFubmVsTm90aWZpZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpCiAKIHZvaWQgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSgpCiB7Ci0gICAg
bV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKHN0ZDo6bWFrZV91bmlxdWU8UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENEYXRh
Q2hhbm5lbEluaXQoKSkpOworICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbCht
YWtlVW5pcXVlPFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrIiwgUlRDRGF0YUNoYW5uZWxJbml0KCkpKTsKIH0KIAogRGF0YUNoYW5uZWxTdGF0ZU5v
dGlmaWVyOjpEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXIoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50KiBjbGllbnQsIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCmluZGV4IDU1OTkzMzgyYjNhMWRjMzZkODM1NmI2
MWIyNWM3MDAyZTA3MzQ3ZmUuLjM4N2EyMWRhZjQ1NTIzOTY4YWVlNGY3OTQxOWQzZDhiODg2OTBk
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE1lZGlhUGxheWVyIEVuaWduZSBT
dXBwb3J0CiB2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10g
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgIHJl
Z2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCiAg
ICAgICAgIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiB9CiAKQEAgLTE2Niw3ICsxNjYsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogICAgIGlmIChtX21lZGlhU291cmNlUHJpdmF0ZSkK
ICAgICAgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpOwogCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogYm9vbCBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApp
bmRleCBjYzY3Y2U2ODhmM2JjYTIyMjY5MGI0M2YxMDU4NzhiYTllM2MyOGY4Li45MDUxNDMxNjIx
YThjMTA4YTZlZjBmNTFlYjYwZjc3NGFmY2MwYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0xNTksOSAr
MTU5LDkgQEAgQmxvYlJlc291cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoQmxvYkRhdGEq
IGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QKICAgICAsIG1fYXN5bmMgeyBhc3luYyB9
CiB7CiAgICAgaWYgKG1fYXN5bmMpCi0gICAgICAgIG1fYXN5bmNTdHJlYW0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpOworICAgICAgICBtX2FzeW5jU3RyZWFtID0g
bWFrZVVuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIG1f
c3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlU3RyZWFtPigpOworICAgICAgICBtX3N0cmVh
bSA9IG1ha2VVbmlxdWU8RmlsZVN0cmVhbT4oKTsKIH0KIAogQmxvYlJlc291cmNlSGFuZGxlOjp+
QmxvYlJlc291cmNlSGFuZGxlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCA4MTEyYjk3M2VlZjU0ZWQ3
YTVjN2E1MTRjZjEwMmFjOTkxZTc2NTMzLi5iNTQxZjYyZWUwMDUyMDM2MmMxNTU3ZjdjYTQ5NjRh
MjM3Yjg3NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIERlY29kaW5nUmVzdWx0
RGlzcGF0Y2hlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWNvZGluZ1Jlc3VsdERp
c3BhCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4gY3JlYXRlRGVjb2RlVGFz
ayhjb25zdCBVUkwmIHVybCwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiBzY2hlZHVsZUNvbnRleHQs
IERlY29kZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2RlVGFzaz4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RGVjb2RlVGFzaz4oCiAgICAgICAgIHVybC5zdHJpbmcoKSwKICAgICAgICAgc2NoZWR1bGVDb250
ZXh0LAogICAgICAgICBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4IGE5ODQz
ZjUwZTVhNDM0MDNkOGY1MmYwYTk2N2Y5MDI3ODY1ZThkNTYuLjhkYWVjNTRhMTM0MmRhYjU5YzM1
Y2M0OTI3YTAwZmU2MjI5NDk2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKQEAgLTM3LDYgKzM3LDcgQEAgV0VCQ09SRV9F
WFBPUlQgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWw7
IC8vIFVzZWQgZm9yIGUKIFdFQkNPUkVfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBl
cnJvckRvbWFpbldlYktpdFNlcnZpY2VXb3JrZXI7IC8vIFVzZWQgZm9yIGVycm9ycyB0aGF0IGhh
cHBlbiB3aGVuIGxvYWRpbmcgYSByZXNvdXJjZSBmcm9tIGEgc2VydmljZSB3b3JrZXIuCiAKIGNs
YXNzIFJlc291cmNlRXJyb3JCYXNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGlzb2xhdGVkQ29weSgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwCmluZGV4IDMwYzI3ZjU3NmExNzdlNmI2YWIxOTQ3NDBhN2Q5MDI1YjY1OWZjYWQu
LjZhMzFlM2U1MjdmOGVjOTJkNmY2MmI5NmNkZDgxOTQ0MTRiNTVjNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC03NCw3
ICs3NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3Vz
TG9hZGVyKGNvbnN0IEF0b21TdHJpbmcmIHByb3RvY29sCiB9CiAKIFJlc291cmNlSGFuZGxlOjpS
ZXNvdXJjZUhhbmRsZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50LCBib29sIGRlZmVy
c0xvYWRpbmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNv
ZGluZ1NuaWZmKQotICAgIDogZChzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlSGFuZGxlSW50ZXJu
YWw+KHRoaXMsIGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxk
Q29udGVudFNuaWZmICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwgc2hv
dWxkQ29udGVudEVuY29kaW5nU25pZmYpKQorICAgIDogZChtYWtlVW5pcXVlPFJlc291cmNlSGFu
ZGxlSW50ZXJuYWw+KHRoaXMsIGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGlu
Zywgc2hvdWxkQ29udGVudFNuaWZmICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVy
bCgpKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpKQogewogICAgIGlmICghcmVxdWVzdC51
cmwoKS5pc1ZhbGlkKCkpIHsKICAgICAgICAgc2NoZWR1bGVGYWlsdXJlKEludmFsaWRVUkxGYWls
dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IGRhZDkwMTBmOTU3
MGViYzU2NzYzMzU0M2ZkMWZjNTAyZjg0NjliOTkuLjcxM2I0ZGZiMzBiMmFmZGZiZWFmZjRlZTUz
NzBhMjU0NmZhZDNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAt
MTY5LDcgKzE2OSw3IEBAIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuCiAgICAgfTsKIAogICAgIGlm
IChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9t
ZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUo
d29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3Jr
KSk7CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAg
ICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtl
VW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2Fp
dCgpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAgICAgfTsK
ICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7
CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFdURk1vdmUod29yaykpOwogfQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9h
ZGluZygpCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1f
bWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihX
VEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMjc2LDcgKzI3Niw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6ZGlkRmFpbChDRkVycm9yUmVmCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkK
LSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVu
ZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNl
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zMTEsNyAr
MzExLDcgQEAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjoKICAgICB9OwogICAgIAogICAgIGlmICht
X21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNz
YWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7
CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAg
bV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+
KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5p
cXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zNDksNyArMzQ5LDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlOjpkaWRTZW5kQm9keURhdGEoQ0YKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVl
KQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVs
c2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM4MCw3
ICszODAsNyBAQCBCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1BybwogICAgIH07CiAgICAgCiAgICAgaWYg
KG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmsp
KTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXgg
YzliNTNlMzEyYWQ4NTU3NmQzNjZlZjRkYzUzNzQzOTFmZThjNjkwYy4uYmE1NWYwMDQ4YjhlNGRk
YzViMDczNGQ5OTNkYzliMTNiOGNiMmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAt
NTIzLDcgKzUyMyw3IEBAIC0gKHZvaWQpX3Jlc3RhcnQKIAogICAgIF9yZXNvdXJjZSA9IHNlbGYu
c2Vzc2lvbi5sb2FkZXIucmVxdWVzdFJlc291cmNlKHNlbGYub3JpZ2luYWxSZXF1ZXN0LCBQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGluZyk7CiAg
ICAgaWYgKF9yZXNvdXJjZSkKLSAgICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ+KHNlbGYpKTsKKyAgICAg
ICAgX3Jlc291cmNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQ+KHNlbGYpKTsKIH0KIAogLSAodm9pZClfY2FuY2VsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBh
NDVhNWY0ZTRhMDI4ZmU2ZTdmMmRmYjc1ZWMyYzhhZWM5M2VkMmJiLi4xMDE2MjRmMjkwMGE5NGNj
N2QxYTg5OTg5Njc2ZDZiNDVhYjdmYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBP
cHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdAogICAgICAgICAiQU5EICgoZG9tYWluID0gPykgT1IgKGRv
bWFpbiBHTE9CID8pKSAiXAogICAgICAgICAiT1JERVIgQlkgbGVuZ3RoKHBhdGgpIERFU0MsIGxh
c3R1cGRhdGVkIjsKIAotICAgIGF1dG8gcHN0bXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0
YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHBzdG10ID0gbWFrZVVuaXF1ZTxT
UUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaWYgKCFwc3RtdCkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtNTY2LDcgKzU2Niw3IEBAIGJvb2wgQ29va2ll
SmFyREI6OmRlbGV0ZUFsbENvb2tpZXMoKQogCiB2b2lkIENvb2tpZUphckRCOjpjcmVhdGVQcmVw
YXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAg
YXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwg
c3FsKTsKICAgICBpbnQgcmV0ID0gc3RhdGVtZW50LT5wcmVwYXJlKCk7CiAgICAgQVNTRVJUKHJl
dCA9PSBTUUxJVEVfT0spOwogICAgIG1fc3RhdGVtZW50cy5hZGQoc3FsLCBXVEZNb3ZlKHN0YXRl
bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuaAppbmRleCAwYzAzZTlkNjkyYzdmNmRjNjEzMDg2ZmYyNTVjMjBlNWM2YmJlOWU5
Li4yNjg3YWU3NGZiOWQ5OTQyOTcyYmVkY2FjNmFiOWIxMTU5YTdlNTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtNDEs
NiArNDEsNyBAQCBlbnVtIGNsYXNzIENvb2tpZUFjY2VwdFBvbGljeSB7CiB9OwogCiBjbGFzcyBD
b29raWVKYXJEQiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ29va2llSmFyREIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5k
ZXggZmE1YzhkMmQyMWI2MjczODE1ZDAyM2E0ZjIwNDU1MDE2ZTk2MzhhZi4uZTJiNGI1ZGZiZGE2
MmEzYzBjYjZiZjkxODFiYmQ2OGZkN2E0YTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAg
LS1lbmQ7IC8vIExhc3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAg
ICAgICAgU3RyaW5nIHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgYXV0byBj
YWNoZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRy
LCBtX2NhY2hlRGlyKTsKKyAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVVuaXF1ZTxDdXJs
Q2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKIAogICAgICAgICBpZiAoY2Fj
aGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1fc3RvcmFn
ZVNpemVMaW1pdCkgewogICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gY2FjaGVF
bnRyeS0+ZW50cnlTaXplKCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmIGpvYiwgUmVzb3VyY2VSZXNw
b25zZSYKIAogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOyAvLyBJbnZhbGlkYXRl
IGV4aXN0aW5nIGVudHJ5IG9uIDIwMAogCi0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CisgICAg
ICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpv
YiwgbV9jYWNoZURpcik7CiAgICAgICAgIGJvb2wgY2FjaGVhYmxlID0gY2FjaGVFbnRyeS0+cGFy
c2VSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOwogICAgICAgICBpZiAoY2FjaGVhYmxlKSB7CiAg
ICAgICAgICAgICBjYWNoZUVudHJ5LT5zZXRJc0xvYWRpbmcodHJ1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3
ZDE3MjE3YzJlNDQyYWM2ZjNkZThjNGI2MGE5NTI2YzlmNjU4NDJhLi43YjA0ZmEyNmE0MmFiOTc4
YWUwN2JkMzFmMGU2OTE1NTFiYmM0NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBD
dXJsQ29udGV4dDo6Q3VybENvbnRleHQoKQogICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJl
YWRBczxzaWduZWQ+KCJXRUJLSVRfQ1VSTF9NQVhfSE9TVF9DT05ORUNUSU9OUyIpKQogICAgICAg
ICBtYXhIb3N0Q29ubmVjdGlvbnMgPSAqdmFsdWU7CiAKLSAgICBtX3NjaGVkdWxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENv
bm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOworICAgIG1fc2NoZWR1bGVyID0gbWFrZVVu
aXF1ZTxDdXJsUmVxdWVzdFNjaGVkdWxlcj4obWF4Q29ubmVjdHMsIG1heFRvdGFsQ29ubmVjdGlv
bnMsIG1heEhvc3RDb25uZWN0aW9ucyk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3Nl
ID0gZW52VmFyLmRlZmluZWQoIkRFQlVHX0NVUkwiKTsKQEAgLTMzNiw3ICszMzYsNyBAQCBDVVJM
Y29kZSBDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xDdHgodm9pZCogc3NsQ3R4KQogICAgICAgICBy
ZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKIAogICAgIGlmICghbV9zc2xWZXJpZmll
cikKLSAgICAgICAgbV9zc2xWZXJpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFNTTFZlcmlm
aWVyPihzc2xDdHgpOworICAgICAgICBtX3NzbFZlcmlmaWVyID0gbWFrZVVuaXF1ZTxDdXJsU1NM
VmVyaWZpZXI+KHNzbEN0eCk7CiAKICAgICByZXR1cm4gQ1VSTEVfT0s7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFT
dHJlYW0uY3BwCmluZGV4IGRkNjNhNGFiNDI3MDNmNmU5NDJmOGVmOTU1MTM2YTg2YmNkZjY2NTEu
LjJiNDc3MzZmNmU3MWYxYzQ5NzgxYmUxOTQ2YzBiOGUzNmJkNjc1MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFT
dHJlYW0uY3BwCkBAIC03Niw3ICs3Niw3IEBAIGNvbnN0IFZlY3RvcjxjaGFyPiogQ3VybEZvcm1E
YXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
aWYgKCFtX3Bvc3REYXRhKQotICAgICAgICBtX3Bvc3REYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7CisgICAgICAgIG1fcG9zdERhdGEg
PSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsKIAogICAg
IHJldHVybiBtX3Bvc3REYXRhLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4
IGE4YmI4ZDgxYTdhYmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZkZTJkNTUuLmNjZGJiMjgyMzlmMjJj
MzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+IEN1cmxN
dWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwKICAgICBpZiAoIWJvdW5kYXJ5
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5KTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpib3VuZGFyeSk7CiB9CiAKIE9w
dGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0
IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAxN2ZlZGRmMGUwODE0ZDVlYWQw
NjgyZjZlZjE0Zjc2NWM5MWU1OTA4Li5jMWQxNTdiZWZmOTQ0NTQ2MzFjZDA1OTYyZjIzMTEzMmZk
OGRiOGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojpj
YWxsQ2xpZW50KEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3QmLCBDdXJsUmVxdWVzdENsaWVudCYp
PiYmCiB2b2lkIEN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYm
IHRhc2spCiB7CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNr
KSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248
dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogICAgIGVsc2UgaWYgKGlzTWFpblRocmVhZCgpKQog
ICAgICAgICB0YXNrKCk7CiAgICAgZWxzZQpAQCAtMjA1LDcgKzIwNSw3IEBAIENVUkwqIEN1cmxS
ZXF1ZXN0OjpzZXR1cFRyYW5zZmVyKCkKICAgICBhdXRvIGh0dHBIZWFkZXJGaWVsZHMgPSBtX3Jl
cXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwogICAgIGFwcGVuZEFjY2VwdExhbmd1YWdlSGVhZGVy
KGh0dHBIZWFkZXJGaWVsZHMpOwogCi0gICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtlX3VuaXF1
ZTxDdXJsSGFuZGxlPigpOworICAgIG1fY3VybEhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybEhhbmRs
ZT4oKTsKIAogICAgIG1fY3VybEhhbmRsZS0+c2V0VXJsKG1fcmVxdWVzdC51cmwoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDkxODM3YWY5ZjNlNDc3M2I1YzcxYzFjMjYwZGI5
NmY1ODZiMjExYWYuLjNhYTVmNTJkYjYyN2FiYjBlY2NhZjI5MjEzZGNlMTJmYmM2ZmJjOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgQ3VybFJl
cXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAKLSAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11
bHRpSGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFuZGxlID0gbWFrZVVuaXF1ZTxDdXJsTXVs
dGlIYW5kbGU+KCk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heENvbm5lY3RzKG1fbWF4
Q29ubmVjdHMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhUb3RhbENvbm5lY3Rpb25z
KG1fbWF4VG90YWxDb25uZWN0aW9ucyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heEhv
c3RDb25uZWN0aW9ucyhtX21heEhvc3RDb25uZWN0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CmluZGV4IDdiZTAwYWQzNGI4ZTU5ODgyZGUwZjUxM2I2YzJkZGY5MDExZjk5ZTEuLjdkNGE3MmZk
ODc1NTc2ZDlhNTk4YWExNTg0MDRlODlmMTI0ZDcwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CkBAIC0xNjIsNyArMTYyLDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmUKIEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICgh
ZC0+bV9kZWxlZ2F0ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKKyAgICAgICAgZC0+bV9kZWxlZ2F0
ZSA9IG1ha2VVbmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKIAogICAg
IHJldHVybiBkLT5tX2RlbGVnYXRlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsQ3VybC5jcHAKaW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5NTVlNjg4OWM2NTcyMGM5ZWZhZjIx
Yi4uMTNhODMyYzI2NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkwMmRmYTk0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgIG1fdGFza1F1
ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsK
IH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpleGVjdXRlVGFza3MoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRl
ci5oCmluZGV4IDVhMDZmMmVmODllZjVjMjFiZTE1N2M3MWRhMTQxOWVjODQ4MDllZjcuLjc2NTQz
YWQxNmMxNDk0ODU4ODIyOTkxZjMwNWZmN2EzM2UxN2FlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTM2
LDYgKzM2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIAogY2xhc3MgUHJldmlld0NvbnZlcnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6
CiAgICAgUHJldmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRl
MGI3ZTFmMTg3YjUwNzY1YTlkMTdjMmVjNGVjODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5
Mjc4MDdjZWMxZTJmZjZlNzNmMjRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcg
QEAgLSAodm9pZCljYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilm
dW5jdGlvbgogewogICAgIC8vIFN5bmMgeGhyIHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAg
aWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7
CisgICAgICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNv
bW1vbiBjYXNlLgogICAgIGlmICghc2NoZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2No
ZWR1bGVkUGFpcnMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcw
MzliN2I3MTkzNGZlYzM3NjNhNWE0YTgyZDkuLmVlNDRkODlkMTk5ODU0NjhiN2FlYTFlNzVhNDQy
MzBlMjc2ODIwNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSwgdWludDY0X3QgaWRlbnRpZmllciwgRAogCiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpF
Q1QoYWRkcmVzcy5nZXQoKSksICJpZGVudGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlm
aWVyKSk7CiAKLSAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmll
ciwgc3RkOjptYWtlX3VuaXF1ZTxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2Fu
Y2VsSGFuZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxh
YmxlKSkpOworICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVy
LCBtYWtlVW5pcXVlPEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNvbXBsZXRpb25BbmRDYW5jZWxIYW5k
bGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoY2FuY2VsbGFibGUpKSk7
CiB9CiAKIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29sdmUodWludDY0X3QgaWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBlNGM4YjBm
MTNlNmQwODlhNTg5MmFhN2FlMGE5YjgyMTU4NWJiOWE0Li43YjI4ZjI2YjUzODRjYjRiZDViZmQ2
NzU3MDdjZjJiZmZkNWYwNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENyZWRl
bnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjcmV0U2Vy
dmljZVNlYXJjaERhdGE+KGNhbmNlbGxhYmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2Fu
Y2VsbGFibGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBzZWNyZXRfc2Vydmlj
ZV9zZWFyY2gobnVsbHB0ciwgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRl
cy5nZXQoKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9T
RUFSQ0hfVU5MT0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NFQ1JFVFMpLCBjYW5jZWxsYWJsZSwK
ICAgICAgICAgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50
ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZl
ci5oCmluZGV4IDEwZmVjYmM0MTk0Nzk1ZjMyZDFjYTdlNzYwOWFjNGZmMjA5MmNkMjMuLmFhZmVk
M2RlNzliOTlhYWM0NzY5Yzc2YjU1ZjZjMWNiYjY2MWI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmlk
aVJlc29sdmVyQmFzZTxJdGVyYXRvciwgUnVuLCBEZXJpdmVkQ2xhc3M+OjphcHBlbmRSdW5JbnRl
cm5hbCgpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZW5kT2Zmc2V0ID49IHN0YXJ0T2Zmc2V0
KQotICAgICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPFJ1bj4oc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKKyAgICAg
ICAgICAgIG1fcnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxSdW4+KHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5j
cmVtZW50KCk7CiAgICAgICAgIG1fc29yID0gbV9lb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZUlDVS5jcHAKaW5kZXggNTllMWZjNzJhMmJmMjk2OTQ1YTg2Zjg1NTJiODYz
NzZhOWVhNTg2ZC4uMmM4Y2NlNzMwODhmYTVhZDBjZjU5NTljY2U0Zjk2OTFiZjM1N2EwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtNDQsNyArNDQs
NyBAQCB1c2luZyBuYW1lc3BhY2UgaWN1OwogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2Nh
bGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiB9CiAKIExvY2FsZUlDVTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAg
LTE2MywyMiArMTYzLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29u
c3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQpCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmlu
Zz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVG
b3JtYXQsIFVEYXRlRm9ybWF0U3ltYm9sVHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGlu
dDMyX3Qgc2l6ZSkKIHsKICAgICBpZiAoIWRhdGVGb3JtYXQpCi0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1h
dCwgdHlwZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKIAotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmlu
Zz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQz
Ml90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOwogICAgICAgICBpbnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhk
YXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAg
IGlmIChzdGF0dXMgIT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1
ZmZlcihsZW5ndGgpOwogICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIHVk
YXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgYnVmZmVyLmRh
dGEoKSwgbGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAg
bGFiZWxzLT5hcHBlbmQoU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICB9CiAg
ICAgcmV0dXJuIFdURk1vdmUobGFiZWxzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3Qg
VURhdGVGb3JtYXQqCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNy
ZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8
VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZ
X0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxh
YmVscy0+YXBwZW5kKFdURjo6bW9udGhGdWxsTmFtZVtpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQogCiBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMo
KQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
KTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAg
bGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIkFNIik7CiAg
ICAgbGFiZWxzLT5hcHBlbmQoIlBNIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGVOb25lLmNwcAppbmRleCBiYjZiMjZiYTU5Y2IzNmI5ODliN2U2ZjU4NjMwYzdhN2IzYjU2
ZWE3Li43ODE1YTQ3OGUwMjk3NDU1OTY1NzZjMmRlZDIyMTE5MzZhYTk2YTFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
Y2xhc3MgTG9jYWxlTm9uZSA6IHB1YmxpYyBMb2NhbGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9j
YWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJikKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxMb2NhbGVOb25lPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2Fs
ZU5vbmU+KCk7CiB9CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVOb25lKCkgPSBkZWZhdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmluZGV4IGY4ZTE2
NzA4NDlhOTU4OThhMTQ1N2JjOThkYTkxZTRiZGU3ODRjNzkuLmU1ZjI4MTY2YzZkZDM0YmM1MzUw
OWI2YTAwMjBhODg4OTA3YzJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjSUNVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY0lDVS5jcHAKQEAgLTE1Niw0MyArMTU2LDQzIEBAIHZvaWQgVGV4dENvZGVjSUNV
OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICAv
LyBodHRwOi8vZGVtby5pY3UtcHJvamVjdC5vcmcvaWN1LWJpbi9jb252ZXhwCiAgICAgICAgIGlm
ICghc3RyY21wKG5hbWUsICJ3aW5kb3dzLTg3NCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIo
bmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoIXN0cmNtcChuYW1lLCAid2luZG93cy05NDkiKSkgewogICAgICAgICAgICAgcmVn
aXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5
LTIwMDAiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWN5cmlsbGljIikpIHsKICAgICAg
ICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTdfMy0xMC4yIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFj
b3MtN18zLTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWdyZWVrIikpIHsKICAg
ICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTZfMi0xMC40Iik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAi
bWFjb3MtNl8yLTEwLjQiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWNlbnRyYWxldXJy
b21hbiIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNv
cy0yOS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVj
SUNVPihuYW1lLCAibWFjb3MtMjktMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMt
dHVya2lzaCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJt
YWNvcy0zNS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENv
ZGVjSUNVPihuYW1lLCAibWFjb3MtMzUtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiRVVD
LUtSIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRv
d3MtOTQ5Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNV
PihuYW1lLCAid2luZG93cy05NDkiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6
cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgY29u
c3QgY2hhciogY2Fub25pY2FsQ29udmVydGVyTmFtZSA9IHVjbnZfZ2V0Q2Fub25pY2FsTmFtZShu
YW1lLCAiSUFOQSIsICZlcnJvcik7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1MoZXJyb3IpKTsK
ICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lXSB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUs
IGNhbm9uaWNhbENvbnZlcnRlck5hbWUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VGV4dENvZGVjSUNVPihuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lKTsKICAgICAgICAgfSk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNMYXRpbjEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNM
YXRpbjEuY3BwCmluZGV4IDkzMTQ1MzMyOGE2ZjY2OTQ4NWVlMDFmOGE0ZTJjZWRlNTAyNjc3ZmYu
LjkyYzY2MTNjYjFmY2MwZTMwOGE3M2MzNTBhOWUwN2VmNzczNDYyZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGlu
Z05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVy
Q29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ3
aW5kb3dzLTEyNTIiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY0xhdGluMT4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjTGF0aW4x
PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCmluZGV4IDE3NjViZjc5MjE1OTc1YjE1N2M4YjNm
NzRjNTU3MmM0NzFlMjExNDEuLmM4YjU1OGM4Y2EyZDNhZmQzMDIxNGJjZmMzN2ExNDU3NzU2YTEz
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVw
bGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
UmVwbGFjZW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1l
bnQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFy
CiB2b2lkIFRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdp
c3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigicmVwbGFjZW1lbnQiLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNVVEYxNi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2
LmNwcAppbmRleCBiZTAwNjU2NDQ2NDhmY2UwYzM3OWQzYzc0M2VlMjI3ZWE5ZWRhNmY0Li45MGM0
NDc1ZDAyMGI5ZjQ3MWI1YmU3N2MzY2FhYzBmZGM5OGNiYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBA
IHZvaWQgVGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVS
ZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3Mo
VGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi0xNkxF
IiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4o
dHJ1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsK
ICAgICB9KTsKICAgICByZWdpc3RyYXIoIlVURi0xNkJFIiwgW10gewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCBhM2RhZDRl
OWQxNjM3Njg2MzA4OGIxOTcxMGY4MzlkYmJmZmVhOGRkLi5lMWQwYTUzYzcxN2FhZTczOTkzOWY1
MWM0ZDMyOTM0NWFmODljYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VURjguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjVVRGOC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4Ojpy
ZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZv
aWQgVGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi04IiwgW10gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUZXh0Q29kZWNVVEY4PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCmluZGV4IDI5NmM0Njlm
MTY5ZmI5MTFkYzhkYmQ3YTY0N2VhNTY0MWUyZmZlMTkuLjQ4YWRiYTlkNGIxYTdhOWE2NThhZWY5
ZGZhZGY4NWFkZGU5ZGNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgVGV4
dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdp
c3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVj
cyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigieC11c2Vy
LWRlZmluZWQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2Rl
Y1VzZXJEZWZpbmVkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVc2Vy
RGVmaW5lZD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvTG9jYWxlTWFjLm1tCmluZGV4IGE1MTdiZTM0MWY2YWM0YmU4ZTg5M2NmYWQ3YzIyODg0
NWQ2YTgyODAuLjJiM2QwM2EzOGE1ZDIwMWJiNmRjYjhlYmU0NGY0NmZlZWZjNjdlMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTY3LDcg
KzY3LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9jYWxlKGNvbnN0
IFN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0
cmluZygpKS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBj
cmVhdGVEYXRlVGltZUZvcm1hdHRlcihOU0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFyKiBjYWxl
bmRhciwgTlNEYXRlRm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0ZXJTdHls
ZSB0aW1lU3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dp
bi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxl
V2luLmNwcAppbmRleCA2YTE2MGRlY2NmYzkyNmFlZjM3ZGUyM2U5N2Y2MmU4ZjVjNjc5MDZhLi5h
YTAwYTRhZDZmNWI1OTk4MmI2YjQ3NzMxNzFjOGJjN2MwMzM5MDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
c3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBs
b2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlV2luPihMQ0lERnJv
bUxvY2FsZShsb2NhbGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVXaW4+KExDSURG
cm9tTG9jYWxlKGxvY2FsZSkpOwogfQogCiBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJ
RCBsY2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4
dENvZGVjV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2Rl
Y1dpbi5jcHAKaW5kZXggYWY0NjkxMzkwODFlODBjMTIwN2I4MmM5N2ZkZmEzYzc3MjFhNjUxMS4u
MmNlYjQ3NWU1ZmFlYmI2NzBjNzQxNDQ3NWE0NzI5MjQ5NTJkY2E5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMzEsNyAr
MTMxLDcgQEAgc3RhdGljIFVJTlQgZ2V0Q29kZVBhZ2UoY29uc3QgY2hhciogbmFtZSkKIAogc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0
RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFt
ZSgpKSk7CiB9CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1h
bmFnZXJPcGVuVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxh
dGZvcm1NYW5hZ2VyT3BlblZSLmNwcAppbmRleCBkMWRjNjczNjg2ZjY1MWUzZTAzMjkxYjdjMDJj
MzFiMGMxNjliYmMyLi5lN2NmNzEzN2UzM2FhNTViZjdlNTg1ZWUxNjRlNjczZDNhYWVlYzZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1h
bmFnZXJPcGVuVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9W
UlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Y3Jl
YXRlKCkKICAgICBpZiAoIXZyOjpWUl9Jc1J1bnRpbWVJbnN0YWxsZWQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWUlBsYXRmb3JtTWFu
YWdlck9wZW5WUj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxWUlBsYXRmb3JtTWFuYWdlck9w
ZW5WUj4oKTsKIH0KIAogVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6On5WUlBsYXRmb3JtTWFuYWdl
ck9wZW5WUigpCkBAIC03OCw3ICs3OCw3IEBAIFZlY3RvcjxXZWFrUHRyPFZSUGxhdGZvcm1EaXNw
bGF5Pj4gVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmdldFZSRGlzcGxheXMoKQogCiAgICAgVmVj
dG9yPFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBkaXNwbGF5czsKICAgICBpZiAoIW1fZGlz
cGxheSkKLSAgICAgICAgbV9kaXNwbGF5ID0gc3RkOjptYWtlX3VuaXF1ZTxWUlBsYXRmb3JtRGlz
cGxheU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CisgICAgICAgIG1f
ZGlzcGxheSA9IG1ha2VVbmlxdWU8VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI+KG1fc3lzdGVtLCBj
aGFwZXJvbmUsIGNvbXBvc2l0b3IpOwogICAgIGRpc3BsYXlzLmFwcGVuZChtYWtlV2Vha1B0cigq
bV9kaXNwbGF5KSk7CiAgICAgcmV0dXJuIGRpc3BsYXlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGFiYWRkYzdmYmNhMjM1OWVmZjVi
OTgxMWMxOTVmNmI1YWJjMWJhODMuLjE2OTc4NTVmZTcyZjYzN2U2NWFkNDc3NzJhZmE2MWM3NDcx
OTI0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgUGFzdGVib2FyZE93
bmVyV25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHcKIAogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7
Ci0gICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigpOwor
ICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKTsKICAgICBDT01Q
dHI8SURhdGFPYmplY3Q+IGNsaXBib2FyZERhdGE7CiAgICAgaWYgKCFTVUNDRUVERUQoT2xlR2V0
Q2xpcGJvYXJkKCZjbGlwYm9hcmREYXRhKSkpCiAgICAgICAgIGNsaXBib2FyZERhdGEgPSAwOwpA
QCAtMTA2LDE2ICsxMDYsMTYgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBk
YXRhT2JqZWN0OwogICAgIFdDRGF0YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFPYmplY3Qp
OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRhdGFPYmplY3QuZ2V0
KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRhdGFPYmplY3QuZ2V0KCkp
OwogfQogCiAvLyBzdGF0aWMKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAg
aWYgKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICAv
LyBGSVhNRTogU2hvdWxkIGFkZCBhIGNvbnN0IG92ZXJsb2FkIG9mIGRyYWdEYXRhTWFwIHNvIHdl
IGRvbid0IG5lZWQgYSBjb25zdF9jYXN0IGhlcmUuCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGFzdGVib2FyZD4oY29uc3RfY2FzdDxEcmFnRGF0YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1h
cCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjb25zdF9jYXN0PERyYWdE
YXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCmluZGV4IDE5NjQ5
YzU2NmNmY2Y1ZjQyNDMwOWQxZDhkMTAwYjBiNGZmNzcwYTguLjZmN2Y0YmExNjYwYjRmN2E5Nzcy
MTJjODU2M2E0M2M2NjVlMzBiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudURCLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIGludCBTZWFyY2hQ
b3B1cE1lbnVEQjo6ZXhlY3V0ZVNpbXBsZVNxbChjb25zdCBTdHJpbmcmIHNxbCwgYm9vbCBpZ25v
cmVFcnJvcikKIAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gU2VhcmNoUG9wdXBN
ZW51REI6OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogewotICAg
IGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0
YWJhc2UsIHNxbCk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRl
bWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpbnQgcmV0ID0gc3RhdGVtZW50LT5wcmVwYXJl
KCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBTUUxJVEVfT0spOwogICAgIHJldHVy
biBzdGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NE
YXRhT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3Qu
Y3BwCmluZGV4IGRiZjk5YTQ1Y2U3MDNhOWQ4NTdhMGU2MDE5ZDY4MDZkZDExZmExN2IuLmM5N2E3
ZWJhYWFiZGQ4ZTI2MjlhYTM3N2U3MjY3ZWJkN2M4NTEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgU1RETUVU
SE9ESU1QIFdDRGF0YU9iamVjdDo6U2V0RGF0YShGT1JNQVRFVEMqIHBmb3JtYXRldGMsIFNUR01F
RElVTSogcG1lZGl1bSwgQk8KICAgICBpZiAoIXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAg
ICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBhdXRvIGZldGMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZPUk1BVEVUQz4oKTsKKyAgICBhdXRvIGZldGMgPSBtYWtlVW5pcXVlPEZPUk1BVEVUQz4oKTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBwU3RnTWVk
KG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmZXRjLmdldCgpLCBzaXplb2YoRk9S
TUFURVRDKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IGMwMDRm
YzllNzA0YTZhZDMyMzQ5ZmI4MjRjZGM1ZGRkMDM2MDFiNWMuLjQ3OTgxYWU2OTkxZGM2NDkxNTIw
ZmM4MjQzMmVjYzQ5NTg2NDQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwCkBAIC0xMTEsNyArMTExLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpi
dWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKIAogICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKIAotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKKyAgICBhdXRvIGJ1
aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0VmZmVjdCk7CiAg
ICAgbV9zb3VyY2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNlQWxwaGE6OmVm
ZmVjdE5hbWUoKSk7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9m
VHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0ZXIpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAppbmRleCAw
MTMzNzg3ZDlkMzA2MmIxY2E3OWIxNjA3OTYzZjIwYzEwNzFlZDUzLi5iZDNjOWJlZTg3Mjk4NmVj
NjFiMWEzMGEwNDk1YjhjMGEyNmZkNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Db21wbGV4TGluZUxheW91dC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgZGV0
ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBp
dGVyKQogCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGNyZWF0ZVJ1bihpbnQgc3Rh
cnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
dmVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHN0YXJ0LCBlbmQs
IG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJl
c29sdmVyLmRpcigpKTsKIH0KIAogdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5kUnVuc0Zv
ck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXJ0LCBpbnQgZW5kLCBS
ZW5kZXJPYmplY3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKQEAgLTEzMCwx
MiArMTMwLDEyIEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNGb3JPYmplY3Qo
QmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFyCiBzdGQ6OnVuaXF1ZV9wdHI8Um9v
dElubGluZUJveD4gQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKQogewog
ICAgIGlmIChpczxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7Ci0gICAgICAgIGF1dG8gYm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdSb290SW5saW5lQm94Pihkb3duY2FzdDxSZW5kZXJTVkdUZXh0
PihtX2Zsb3cpKTsKKyAgICAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR1Jvb3RJbmxpbmVC
b3g+KGRvd25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOwogICAgICAgICBib3gtPnNldEhh
c1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBib3g7CiAgICAgfQogICAg
ICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PihtX2Zsb3cp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiB9CiAKIFJv
b3RJbmxpbmVCb3gqIENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5l
Qm94KCkKQEAgLTEwODUsNyArMTA4NSw3IEBAIGlubGluZSBCaWRpUnVuKiBDb21wbGV4TGluZUxh
eW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpCiAgICAg
ICAgIHdoaWxlIChCaWRpQ29udGV4dCogcGFyZW50ID0gYmFzZUNvbnRleHQtPnBhcmVudCgpKQog
ICAgICAgICAgICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEJpZGlSdW4+IG5ld1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihm
aXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJl
bmRlcmVyKCksIGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KGZp
cnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1bi0+cmVu
ZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAgIHRyYWlsaW5n
U3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4g
PSBuZXdUcmFpbGluZ1J1bi5nZXQoKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2b2lkIENvbXBsZXhMaW5lTGF5b3V0
OjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAg
ICAgICAgaWYgKGxheW91dFN0YXRlLmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKCkpIHsKICAg
ICAgICAgICAgIExheW91dFVuaXQgYm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgp
LT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAgICAgIExheW91dFVuaXQg
Ym90dG9tTGF5b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tTGF5b3V0
T3ZlcmZsb3coKTsKLSAgICAgICAgICAgIGF1dG8gbmV3TGluZUJveCA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgICAgICAgICAgYXV0
byBuZXdMaW5lQm94ID0gbWFrZVVuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1f
Zmxvdyk7CiAgICAgICAgICAgICBhdXRvIHRyYWlsaW5nRmxvYXRzTGluZUJveCA9IG5ld0xpbmVC
b3guZ2V0KCk7CiAgICAgICAgICAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94KFdURk1vdmUo
bmV3TGluZUJveCkpOwogICAgICAgICAgICAgdHJhaWxpbmdGbG9hdHNMaW5lQm94LT5zZXRDb25z
dHJ1Y3RlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5n
T2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNw
cAppbmRleCA0Y2RkMTM5YzQ4NzUxNmVhMGU3YjEyMTNiNzAzYmQzNDI3YWIwMThjLi5hNmM2NDgx
OGM0OTc0NTYwOTBmNjYyM2MzMDRiNWQ2Mjc3MDdhZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBGbG9hdGluZ09i
amVjdDo6RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94JiByZW5kZXJlciwgVHlwZSB0eXBlLCBjb25z
dCBMYXlvdXRSZWN0JgogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5n
T2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikKIHsKLSAgICBhdXRvIG9iamVjdCA9
IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKKyAgICBhdXRvIG9i
amVjdCA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKICAgICBvYmplY3Qt
PnNldFNob3VsZFBhaW50KCFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsgLy8gSWYg
YSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNv
bWVvbmUgZWxzZSB3aWxsLgogICAgIG9iamVjdC0+c2V0SXNEZXNjZW5kYW50KHRydWUpOwogICAg
IHJldHVybiBvYmplY3Q7CkBAIC04MywxMiArODMsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0
aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVuZGVyZXIpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNvcHlUb05l
d0NvbnRhaW5lcihMYXlvdXRTaXplIG9mZnNldCwgYm9vbCBzaG91bGRQYWludCwgYm9vbCBpc0Rl
c2NlbmRhbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdP
YmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlv
bigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxk
UGFpbnQsIGlzRGVzY2VuZGFudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRpbmdPYmpl
Y3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigp
IC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFp
bnQsIGlzRGVzY2VuZGFudCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4g
RmxvYXRpbmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNs
b25lT2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwg
dHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNE
ZXNjZW5kYW50KTsKKyAgICBhdXRvIGNsb25lT2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09i
amVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1f
c2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKICAgICBjbG9uZU9iamVjdC0+bV9wYWdpbmF0
aW9uU3RydXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBjbG9uZU9iamVjdC0+bV9pc1BsYWNl
ZCA9IG1faXNQbGFjZWQ7CiAgICAgcmV0dXJuIGNsb25lT2JqZWN0OwpAQCAtMzcyLDcgKzM3Miw3
IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSgpCiAgICAg
aWYgKG1fc2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGFjZWRGbG9h
dHNUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CisgICAgbV9w
bGFjZWRGbG9hdHNUcmVlID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CiAgICAg
Zm9yIChhdXRvIGl0ID0gbV9zZXQuYmVnaW4oKSwgZW5kID0gbV9zZXQuZW5kKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewogICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+
Z2V0KCk7CiAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HcmlkLmNwcAppbmRleCBjNzJkMDFkODFjN2Q3MTY2MTU3OWUzYmEwMTgzMGU0Mjlk
MzBmNjg4Li4xZTkxMWFlNjBhNjEyNjg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4N2UyOTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVk
VHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1f
ZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXpl
KCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRl
eDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2go
cm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlk
QXJlYT4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5z
bGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwg
R3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29s
dW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3Jp
ZEFyZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFuc2xhdGVk
RGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRT
cGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbklu
ZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3Ig
dG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUg
Z3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggNWZjMzI4MTUzYTZkOGJmYzQ4
ODNiYTUxMjFjY2EwYmY2ZjJlOTlkMC4uNjYwOTA5OGY5Yzg3MDQ2ODgxMTQxOGFiMTc4Mjk0MTdi
ZWUyZDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGlu
ZUFsaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGlu
ZUFsaWdubWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdyaWRCYXNlbGluZUFsaWdu
bWVudDo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KEl0ZW1Qb3NpdGlvbiBwcmVmZXJl
bgogCiAgICAgLy8gTG9va2luZyBmb3IgYSBjb21wYXRpYmxlIGJhc2VsaW5lLXNoYXJpbmcgZ3Jv
dXAuCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBw
cmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBh
c2NlbnQsIGRlc2NlbnQpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvKiBjb250ZXh0ID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICAgICAgY29udGV4dC0+dXBkYXRlU2hh
cmVkR3JvdXAoY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCmlu
ZGV4IGFkZGVkYzQyOGIxZjJmZGIzNTAzZTgxMjYyNmI5NzY5M2EzZTdiNWYuLmIyYjAxMWJkZjc0
OTFiMzVhYjFkYmI3YWM2YjI2Mzk2MTcyMWNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC02ODEsNyArNjgx
LDcgQEAgZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JV
bml0U2l6ZShjb25zdCBWZWN0b3I8R3JpZFRyYWMKICAgICAgICAgICAgIGxlZnRPdmVyU3BhY2Ug
LT0gYmFzZVNpemU7CiAgICAgICAgICAgICBmbGV4RmFjdG9yU3VtIC09IGZsZXhGYWN0b3I7CiAg
ICAgICAgICAgICBpZiAoIXRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUpCi0gICAgICAgICAgICAg
ICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tJbmRl
eFNldD4oKTsKKyAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gbWFr
ZVVuaXF1ZTxUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5m
bGV4aWJsZS0+YWRkKGluZGV4KTsKICAgICAgICAgICAgIHZhbGlkRmxleEZhY3RvclVuaXQgPSBm
YWxzZTsKICAgICAgICAgfQpAQCAtMTI2MCwxMCArMTI2MCwxMCBAQCB2b2lkIEdyaWRUcmFja1Np
emluZ0FsZ29yaXRobTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwg
dW5zaWduZQogICAgIG1fc2l6aW5nT3BlcmF0aW9uID0gc2l6aW5nT3BlcmF0aW9uOwogICAgIHN3
aXRjaCAobV9zaXppbmdPcGVyYXRpb24pIHsKICAgICBjYXNlIEludHJpbnNpY1NpemVDb21wdXRh
dGlvbjoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZWZpbml0ZVNp
emVTdHJhdGVneT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVuaXF1ZTxJbmRl
ZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHJh
Y2tTaXppbmc6Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVlPERlZmluaXRl
U2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5pcXVlPERl
ZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDczYjM2NTQ3Njcx
NDBhMDM3MGU0ZDU2OTU2ZTU0ZjI2NzRiNThiMzYuLmIzYzQwMDc5MDJkZjYwNDg2MmE1YWM3YzI5
OThjYmFkNzNmMTEyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25z
dCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90aGVyLmlzT3Zl
cldpZGdldCgpKQogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIGxp
c3QgaGl0IHRlc3QuCi0gICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFz
ZWRUZXN0UmVzdWx0ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFz
ZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CisgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3Ro
ZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9s
aXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6On5IaXRU
ZXN0UmVzdWx0KCkgPSBkZWZhdWx0OwpAQCAtMTEzLDcgKzExMyw3IEBAIEhpdFRlc3RSZXN1bHQm
IEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAg
ICBtX2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAgLy8gT25seSBj
b3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNl
ZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAg
ICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBt
YWtlVW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0
cjsKIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTY5MCwxNCArNjkwLDE0IEBAIHZvaWQgSGl0
VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxCiBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVz
dWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5p
cXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAK
IEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0QmFzZWRU
ZXN0UmVzdWx0KCkKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAg
bV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAg
ICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAg
cmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggNDNjNjUzODc2Y2Y5ODRhNjJiNmZjOTI5NDVkM2Rk
NjkwY2EzZWRiOS4uMTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3ICs0OTMs
NyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhjb25z
dCBJbmxpbmVJdGVyYXRvciYgaXRlcikKIC8vIG9mIEJpZGlSZXNvbHZlciB3aGljaCBrbm93cyBu
b3RoaW5nIGFib3V0IFJlbmRlck9iamVjdHMuCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGxhY2Vo
b2xkZXJSdW5Gb3JJc29sYXRlZElubGluZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBS
ZW5kZXJPYmplY3QmIG9iaiwgdW5zaWduZWQgcG9zLCBSZW5kZXJFbGVtZW50JiByb290KQogewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IHN0ZDo6bWFrZV91bmlx
dWU8QmlkaVJ1bj4ocG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5k
aXIoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0gbWFrZVVu
aXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVy
LmRpcigpKTsKICAgICAvLyBGSVhNRTogaXNvbGF0ZWRSdW5zKCkgY291bGQgYmUgYSBoYXNoIG9m
IG9iamVjdC0+cnVuIGFuZCB0aGVuIHdlIGNvdWxkIGNoZWFwbHkKICAgICAvLyBBU1NFUlQgaGVy
ZSB0aGF0IHdlIGRpZG4ndCBjcmVhdGUgbXVsdGlwbGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgaW5s
aW5lLgogICAgIHJlc29sdmVyLnNldFdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlvbkZvcklz
b2xhdGVkUnVuKCppc29sYXRlZFJ1biwgcmVzb2x2ZXIud2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0
ZSgpLmN1cnJlbnRUcmFuc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5
ZXJPdmVybGFwTWFwLmNwcAppbmRleCAyODVhYTVmOWZlOWJhZTdkZmM4NTI4YzI0YzFkNTU2N2Q0
MTI5ZmYzLi45NmFmOTVhNDU1Njk1MGU4MTI2Yjk1MzczNTM0ZDQ3NmRhZTM1NjNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtNzEsNiArNzEs
NyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVjdExpc3QmIHJlY3RMaXN0KQogLy8gQ2hlY2tpbmcgZm9yIG92ZXJsYXAgaW52b2x2ZXMgZmlu
ZGluZyB0aGUgbm9kZSBmb3IgdGhlIGNsaXBwaW5nIGxheWVyIGVuY2xvc2luZyB0aGUgZ2l2ZW4g
bGF5ZXIgKG9yIHRoZSByb290KSwKIC8vIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgYm91bmRz
IG9mIGVhcmxpZXIgc2libGluZ3MuCiBjbGFzcyBPdmVybGFwTWFwQ29udGFpbmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPdmVybGFwTWFwQ29udGFpbmVy
KGNvbnN0IFJlbmRlckxheWVyJiByb290TGF5ZXIpCiAgICAgICAgIDogbV9yb290U2NvcGUocm9v
dExheWVyKQpAQCAtMjk2LDcgKzI5Nyw3IEBAIGJvb2wgTGF5ZXJPdmVybGFwTWFwOjpvdmVybGFw
c0xheWVycyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IExheW91dFJlY3QmCiAKIHZv
aWQgTGF5ZXJPdmVybGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKQogewotICAgIG1f
b3ZlcmxhcFN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+
KG1fcm9vdExheWVyKSk7CisgICAgbV9vdmVybGFwU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8T3Zl
cmxhcE1hcENvbnRhaW5lcj4obV9yb290TGF5ZXIpKTsKIH0KIAogdm9pZCBMYXllck92ZXJsYXBN
YXA6OnBvcENvbXBvc2l0aW5nQ29udGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDRkYmEzZjFjNDEwNWFmYjBlOGU0Yzc2YTdjZmNiOWU1ZmZmNzE4
NTQuLjAwMTkyNTg4MmU1MDI4YzhhMjA5OWI0YmJkZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRp
YyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBj
b250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGRlc2NlbmRhbnRTZXQg
PSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAtPmVuc3VyZSgmY29udGFpbmVyLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNl
dD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBib29sIGFkZGVkID0gZGVzY2Vu
ZGFudFNldC0+YWRkKCZkZXNjZW5kYW50KS5pc05ld0VudHJ5OwpAQCAtMTE1LDcgKzExNSw3IEBA
IHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJs
b2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGNvbnRhaW5l
clNldCA9IHBlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmVuc3VyZSgmZGVzY2VuZGFudCwgW10g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJs
b2NrKj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVy
QmxvY2sqPj4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIWNvbnRh
aW5lclNldC0+Y29udGFpbnMoJmNvbnRhaW5lcikpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNz
IFBvc2l0aW9uZWREZXNjZW5kYW50c01hcCB7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvJiBk
ZXNjZW5kYW50cyA9IG1fZGVzY2VuZGFudHNNYXAuZW5zdXJlKCZjb250YWluaW5nQmxvY2ssIFtd
IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxp
c3RIYXNoU2V0PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRl
cmVyTGlzdEhhc2hTZXQ+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAg
ICBib29sIGlzTmV3RW50cnkgPSBtb3ZlRGVzY2VuZGFudFRvRW5kID09IE1vdmVEZXNjZW5kYW50
VG9FbmQ6OlllcyA/IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0aW9uZWRE
ZXNjZW5kYW50KS5pc05ld0VudHJ5CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGlubGluZSBV
cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbiogY3VycmVudFVwZGF0ZVNjcm9s
bEluZm9BZnQKIHZvaWQgUmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5
b3V0VHJhbnNhY3Rpb24oKQogewogICAgIGlmICghdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0
VHJhbnNhY3Rpb25TdGFjaygpKQotICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRU
cmFuc2FjdGlvblN0YWNrKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJ
bmZvU3RhY2s+KCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0
aW9uU3RhY2soKSA9IG1ha2VVbmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsK
ICAgICBpZiAodXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5p
c0VtcHR5KCkgfHwgY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9u
KCktPnZpZXcgIT0gJnZpZXcoKSkKICAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0
VHJhbnNhY3Rpb25TdGFjaygpLT5hcHBlbmQoVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJh
bnNhY3Rpb24odmlldygpKSk7CiAgICAgKytjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5
b3V0VHJhbnNhY3Rpb24oKS0+bmVzdGVkQ291bnQ7CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGlj
IFJlbmRlckJsb2NrUmFyZURhdGEmIGVuc3VyZUJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxv
Y2smIGJsb2NrKQogICAgIAogICAgIGF1dG8mIHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFwLT5hZGQo
JmJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0YSkKLSAg
ICAgICAgcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7
CisgICAgICAgIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOwog
ICAgIHJldHVybiAqcmFyZURhdGEuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggN2YxZTYzOTcwNjNiZTRmOGRmOWI1N2YxNzVk
NmUyNmU3OGVmYjEzNC4uYjg2NDJkMTcyMDNiZDRiZjI1YmRlMTcxZjk4NzBhZjdkNWE0M2E3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTY3
OCw3ICs2NzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4o
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZQogICAgIG1fc2ltcGxlTGluZUxh
eW91dCA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fY29tcGxleExpbmVMYXlvdXQpCi0gICAgICAg
IG1fY29tcGxleExpbmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0
PigqdGhpcyk7CisgICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBs
ZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0LT5sYXlvdXRM
aW5lQm94ZXMocmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dp
Y2FsQm90dG9tKTsKIH0KQEAgLTIwMTksNyArMjAxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjpsYXlvdXRMaW5lR3JpZEJveCgpCiAgICAgCiAgICAgc2V0TGluZUdyaWRCb3goMCk7CiAKLSAg
ICBhdXRvIGxpbmVHcmlkQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PigqdGhp
cyk7CisgICAgYXV0byBsaW5lR3JpZEJveCA9IG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4oKnRo
aXMpOwogICAgIGxpbmVHcmlkQm94LT5zZXRIYXNUZXh0Q2hpbGRyZW4oKTsgLy8gTmVlZGVkIHRv
IG1ha2UgdGhlIGxpbmUgYXNjZW50L2Rlc2NlbnQgYWN0dWFsbHkgYmUgaG9ub3JlZCBpbiBxdWly
a3MgbW9kZS4KICAgICBsaW5lR3JpZEJveC0+c2V0Q29uc3RydWN0ZWQoKTsKICAgICBHbHlwaE92
ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0ZXh0Qm94RGF0YU1hcDsKQEAgLTIyNjAsNyArMjI2
MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRl
ckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBhaW50CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpj
cmVhdGVGbG9hdGluZ09iamVjdHMoKQogewotICAgIG1fZmxvYXRpbmdPYmplY3RzID0gc3RkOjpt
YWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsKKyAgICBtX2Zsb2F0aW5nT2JqZWN0
cyA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3RzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVy
QmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVjdHMoKQpAQCAtMzY3Nyw3ICszNjc3LDcgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcygpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEFTU0VSVCghbV9jb21wbGV4TGluZUxheW91dCk7Ci0gICAgbV9jb21wbGV4TGluZUxh
eW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICBt
X2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMp
OwogCiAgICAgaWYgKFNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckxpbmVCb3hUcmVlKCp0aGlz
LCAqbV9zaW1wbGVMaW5lTGF5b3V0KSkgewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpnZW5l
cmF0ZUxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KTsKQEAgLTM3MzUsNyAr
MzczNSw3IEBAIFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIFJlbmRl
ckJsb2NrRmxvdzo6ZW5zdXJlUmFyZUJsb2NrRmxvd0RhCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0YSgpCiB7CiAgICAgQVNTRVJUKCFoYXNSYXJlQmxv
Y2tGbG93RGF0YSgpKTsKLSAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CisgICAg
bV9yYXJlQmxvY2tGbG93RGF0YSA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJC
bG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklO
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZTIwZmMyMDcxNGEx
MGUxMjIwZDJlZmQwYTljOGFhY2EyOTlkODU0MS4uYTQ2NzNkMTE4ODJiMzFlOTNmMmJhNzA5MGYy
MmVlMzA2MDY4ZDEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgQ29udHJvbFN0YXRlc1JlbmRlcmVyTWFwJiBjb250cm9s
U3RhdGVzUmVuZGVyZXJNYXAoKQogc3RhdGljIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXNG
b3JSZW5kZXJlcihjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogewogICAgIHJldHVybiBjb250
cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5lbnN1cmUoJnJlbmRlcmVyLCBbXSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogfQogCkBAIC0yMTE1LDcgKzIxMTUsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0
RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91dAogCiBz
dGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gUmVuZGVyQm94OjpjcmVhdGVJbmxpbmVC
b3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CiB9
CiAKIHZvaWQgUmVuZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRl
eCA0MjQzMGRmOGJhN2I2YWI4NjMyMzI4ZTYyZWY5MjU3MDFhZjNiNzc4Li5jZGNhNDU4YTFjMWY0
MGU5Njk2MjA0Y2Y0NjhkOTkxNGVkYTI0ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI1MzgsNyArMjUzOCw3IEBAIGF1
dG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSgpIC0+
IENvbnRpbnVhdGlvbkNoYWluTm9kCiB7CiAgICAgc2V0SGFzQ29udGludWF0aW9uQ2hhaW5Ob2Rl
KHRydWUpOwogICAgIHJldHVybiAqY29udGludWF0aW9uQ2hhaW5Ob2RlTWFwKCkuZW5zdXJlKHRo
aXMsIFsmXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbkNo
YWluTm9kZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250aW51YXRpb25D
aGFpbk5vZGU+KCp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAyMjEwNDQzNGU0NWQ2Yzk4
NDc2ZmZkMjlhYjU1MGJkNjJhYzQwOGZlLi5jMWUwM2YwOTdlZjU5YWQ1YTE2YjE5NGM5YzA1ZDY0
OWY3ZmYxNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICBpZiAocGxh
Y2UucGFyZW50KQogICAgICAgICBwbGFjZS5wYXJlbnQtPmluc2VydEFmdGVyKG5ld05vZGUsIHBs
YWNlLnByZXZpb3VzU2libGluZy5nZXQoKSwgaWRlbnRpZmllcik7CiAKLSAgICBtYXBzLmFkZCgm
cmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVl
LT5hZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkpOworICAgIG1hcHMuYWRkKCZyZW5k
ZXJlciwgbWFrZVVuaXF1ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVu
dGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7CiAgICAgcmVuZGVyZXIuc2V0SGFzQ291bnRlck5v
ZGVNYXAodHJ1ZSk7CiAKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcAppbmRleCA1
MWE5ZTQ2ODQzNDRkMjYzN2QwNGE5MWZiNTlhM2NkNmVmOGYwNmVkLi43ZjZjYWJjMDU5MTIxMDgx
YzRkNzI4NjAyMTliZDRiOWM4NWI5NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBS
ZW5kZXJCb3hGcmFnbWVudEluZm8qIFJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJC
b3hGcmFnbWVudEluZm8oY29uc3QgUgogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRl
ckJveEZyYWdtZW50SW5mby5hZGQoYm94LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJveEZyYWdt
ZW50SW5mbz4obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdC
bG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZv
LmFkZChib3gsIG1ha2VVbmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdElu
c2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRl
cmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBib3hJbmZvLmdldCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAppbmRleCA0NGY1
NjM1YmE1M2FlM2Y3ZTk0ZDdhYzhlNDk2NzM5MGY1OGMyZTU2Li44NDZkZDNhMDJhYTg2YWFmNzE1
YzA5NGU4YzM1MGMxNjZhODY3YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIFJlbmRlckZy
YWdtZW50Q29udGFpbmVyKiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y3VycmVudEZyYWdtZW50KCkg
Y29uc3QKIENvbnRhaW5pbmdGcmFnbWVudE1hcCYgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRh
aW5pbmdGcmFnbWVudE1hcCgpCiB7CiAgICAgaWYgKCFtX2xpbmVUb0ZyYWdtZW50TWFwKQotICAg
ICAgICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluaW5nRnJh
Z21lbnRNYXA+KCk7CisgICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAgPSBtYWtlVW5pcXVlPENv
bnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKIAogICAgIHJldHVybiAqbV9saW5lVG9GcmFnbWVudE1h
cC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
ZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlN
YXAuY3BwCmluZGV4IGI5MDQ1ZTY3OTA4NzNhYmY4MWE5MGRmYTViYmIxMTA5M2M2NzdiMDIuLjUy
Yzc5MGQ0ZTU3ODliMTc4ZTI2YzhhYmQ4YmE3YjEzY2M1OTE1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBA
IHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgY29uc3QgVHJhbnNmb3JtYXRpb25NCiAgICAgCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVw
JiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIGlmICghdC5pc0lu
dGVnZXJUcmFuc2xhdGlvbigpKQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtl
X3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zv
cm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKICAgICBlbHNlCiAgICAg
ICAgIHN0ZXAubV9vZmZzZXQgPSBMYXlvdXRTaXplKHQuZSgpLCB0LmYoKSk7CiAKQEAgLTIzNSw3
ICsyMzUsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJW
aWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIFJlbmRlckdlb21ldHJ5TWFw
U3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1f
b2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OwogICAgIGlmICh0KQotICAgICAgICBzdGVwLm1fdHJhbnNm
b3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOworICAgICAg
ICBzdGVwLm1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQp
OwogICAgIAogICAgIHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAppbmRleCBlMzVhMmMxMzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0Y2NjOWQw
ZjM0OTdmLi40OWFkMDM1NTUzNzM0MjI1ZjFkZGQ2MzNiNDJjMTM4MzJjY2VmYmYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1w
dHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICB1bnNpZ25lZCBsYXN0QXV0b1JlcGVhdFRyYWNrID0g
Zmlyc3RBdXRvUmVwZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBlYXRUcmFja3MoZGlyZWN0aW9uKTsK
IAogICAgIGlmICghZ3JpZC5oYXNHcmlkSXRlbXMoKSkgewotICAgICAgICBlbXB0eVRyYWNrSW5k
ZXhlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAg
IGVtcHR5VHJhY2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFja0luZGV4ID0gZmlyc3RBdXRvUmVwZWF0VHJhY2s7
IHRyYWNrSW5kZXggPCBsYXN0QXV0b1JlcGVhdFRyYWNrOyArK3RyYWNrSW5kZXgpCiAgICAgICAg
ICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5kZXgpOwogICAgIH0gZWxzZSB7CkBA
IC01NTIsNyArNTUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBS
ZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICAgICAgICAgIEdy
aWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBkaXJlY3Rpb24sIHRyYWNrSW5kZXgpOwogICAgICAg
ICAgICAgaWYgKCFpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgewogICAgICAgICAgICAgICAgIGlm
ICghZW1wdHlUcmFja0luZGV4ZXMpCi0gICAgICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRl
eGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAg
ICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0lu
ZGV4U2V0PigpOwogICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJ
bmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTczMiw3ICs3MzIsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNw
ZWNpZmllZFBvc2l0aW9uc091dAogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rp
b24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQgY3Jvc3NE
aXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRv
UGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFuIGNyb3Nz
RGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFu
KGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVjdGlv
blNwYW5TaXplKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oc3BlY2lm
aWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNw
ZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVj
aWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8R3JpZEFyZWE+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jv
c3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVj
dGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Q
b3NpdGlvbnMpOwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlz
SXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3Jp
ZEl0ZW1zKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5k
ZXggZjZjYjU2MTgxMmQyMjI2ODY2OTgzZjNhYjljNzQwYTU2ZGIwMjZlOC4uYzM1NWZmMzcxYjQx
MWE1OGU3OTA2Yzg3N2VhZDRiNTM0NjcxNWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRl
clN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdl
RGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUo
c3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdl
KSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1h
Z2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigp
KQogICAgICwgbV9pbWFnZURldmljZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQog
ewogICAgIHVwZGF0ZUFsdFRleHQoKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBSZW5kZXJJbWFnZTo6
UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJ
bWFnZSogc3R5bAogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQogICAgIDogUmVu
ZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBt
X2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFr
ZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFr
ZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDlkOGE2NTkzNGJhM2ZkMjU0NzRjMzljOTFm
ZWVjNDNhYTBjOWY5ZjUuLjE1MzI1Y2RhMTY5MDY3YTU2OTFiODg1YThkZmRjN2FhOTAzNjQwNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTAwLDcg
KzExMDAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6ZGVsZXRlTGluZXMoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8SW5saW5lRmxvd0JveD4gUmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMpOwogfQogCiBJbmxpbmVG
bG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjc2Y2U4MjcyYmNkYjMz
NjQ1NDFkZTQ2MTEyZjJhM2Y5NzQxMDE3MS4uNjQwNjI4ZmQ2NGJkMWFkYjJiMjY5ODg5NWFmY2M5
M2E0ODA4YWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC03MDAsNyArNzAwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3Qo
KQogICAgICAgICAvLyBJZ25vcmUgbm9uLW92ZXJmbG93IGxheWVycyBhbmQgcmVmbGVjdGlvbnMu
CiAgICAgICAgIGlmIChjaGlsZC0+aXNOb3JtYWxGbG93T25seSgpICYmICFpc1JlZmxlY3Rpb25M
YXllcigqY2hpbGQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fbm9ybWFsRmxvd0xpc3QpCi0gICAg
ICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJl
bmRlckxheWVyKj4+KCk7CisgICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IG1ha2VV
bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CiAgICAgICAgICAgICBtX25vcm1hbEZsb3dM
aXN0LT5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzU2LDcgKzc1Niw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJz
LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yCiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAh
aXNOb3JtYWxGbG93T25seSgpKSB7CiAgICAgICAgIGF1dG8mIGxheWVyTGlzdCA9ICh6SW5kZXgo
KSA+PSAwKSA/IHBvc2l0aXZlWk9yZGVyTGlzdCA6IG5lZ2F0aXZlWk9yZGVyTGlzdDsKICAgICAg
ICAgaWYgKCFsYXllckxpc3QpCi0gICAgICAgICAgICBsYXllckxpc3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOworICAgICAgICAgICAgbGF5ZXJMaXN0ID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAgbGF5ZXJMaXN0LT5hcHBl
bmQodGhpcyk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3RyYW5zZm9y
bTsKICAgICBpZiAoaGFzVHJhbnNmb3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAo
aGFzVHJhbnNmb3JtKQotICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtl
VW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3RyYW5zZm9ybSA9IG51bGxwdHI7CiAgICAgICAgIApAQCAtNTUxOSw3ICs1NTE5LDcgQEAg
UmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVj
dHNDb250ZXh0JiBjbGlwUmVjdHNDb24KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2NsaXBSZWN0
c0NhY2hlKQotICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlw
UmVjdHNDYWNoZT4oKTsKKyAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8Q2xp
cFJlY3RzQ2FjaGU+KCk7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1f
Y2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVy
OwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fc2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5
cGVdID0gY2xpcFJlY3RzQ29udGV4dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeTsKQEAg
LTYwOTcsNyArNjA5Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKENsaXBS
ZWN0c1R5cGUgdHlwZVRvQ2xlYXIpCiBSZW5kZXJMYXllckJhY2tpbmcqIFJlbmRlckxheWVyOjpl
bnN1cmVCYWNraW5nKCkKIHsKICAgICBpZiAoIW1fYmFja2luZykgewotICAgICAgICBtX2JhY2tp
bmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOworICAgICAg
ICBtX2JhY2tpbmcgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOwogICAg
ICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVDb21wb3NpdGVkKCp0aGlzKTsKIAogICAgICAg
ICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CkBAIC02NTE1LDcgKzY1MTUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNIVE1MTWFycXVl
ZSgpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5tYXJxdWVlQmVoYXZpb3IoKSAhPSBNYXJxdWVlQmVo
YXZpb3I6Ok5vbmUgJiYgcmVuZGVyZXIoKS5pc0JveCgpKSB7CiAgICAgICAgIGlmICghbV9tYXJx
dWVlKQotICAgICAgICAgICAgbV9tYXJxdWVlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJNYXJx
dWVlPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWFycXVlZSA9IG1ha2VVbmlxdWU8UmVuZGVyTWFy
cXVlZT4odGhpcyk7CiAgICAgICAgIG1fbWFycXVlZS0+dXBkYXRlTWFycXVlZVN0eWxlKCk7CiAg
ICAgfSBlbHNlIGlmIChtX21hcnF1ZWUpCiAgICAgICAgIG1fbWFycXVlZSA9IG51bGxwdHI7CkBA
IC02NzI3LDcgKzY3MjcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjplbnN1cmVMYXllckZpbHRlcnMo
KQogICAgIGlmIChtX2ZpbHRlcnMpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX2ZpbHRl
cnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOworICAgIG1f
ZmlsdGVycyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CiB9CiAKIHZv
aWQgUmVuZGVyTGF5ZXI6OmNsZWFyTGF5ZXJGaWx0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggN2YxNDM2NmE3ZTU2MTEwMzM3
MjA3N2JlZmUyYTYwODM0MmY3YmE0OS4uNzVmOWViMGYyOTdhMjM2YzdhNzgyNTY4NjNkMDUyODU3
YjRjZGNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKQEAgLTE2MjcsNyArMTYyNyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVBbmNlc3RvckNsaXBwaW5nU3RhY2soVmVjdG9yPENvbXBvc2l0ZWRDbGlwRGF0YT4mCiAg
ICAgfQogICAgIAogICAgIGlmICghbV9hbmNlc3RvckNsaXBwaW5nU3RhY2spIHsKLSAgICAgICAg
bV9hbmNlc3RvckNsaXBwaW5nU3RhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5jZXN0b3JD
bGlwcGluZ1N0YWNrPihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkpOworICAgICAgICBtX2FuY2VzdG9y
Q2xpcHBpbmdTdGFjayA9IG1ha2VVbmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdU
Rk1vdmUoY2xpcHBpbmdEYXRhKSk7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGlu
Zywgc3RyZWFtIDw8ICJsYXllciAiIDw8ICZtX293bmluZ0xheWVyIDw8ICIgYW5jZXN0b3JDbGlw
cGluZ1N0YWNrICIgPDwgKm1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzE3OCwxNyArMzE3OCwxNyBAQCBib29sIFJlbmRlckxheWVyQmFj
a2luZzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYg
YW5pbQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkg
PT0gMCB8fCBrZXkgPT0gMTsKICAgICAgICAgaWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9y
TGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVRyYW5zZm9ybSkpCi0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6
bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+
dHJhbnNmb3JtKCksIHRmKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1h
a2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJh
bnNmb3JtKCksIHRmKSk7CiAKICAgICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxh
c3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVy
dHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91
bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCks
IHRmKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0
QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAg
ICAgICAgIGlmICgoaGFzRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVu
dEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpKQotICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZh
bHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOworICAgICAgICAgICAgZmls
dGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtl
eWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxf
MikKICAgICAgICAgaWYgKChoYXNCYWNrZHJvcEZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJh
bWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
QmFja2Ryb3BGaWx0ZXIpKQotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0
KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHls
ZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVj
dG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1l
U3R5bGUtPmJhY2tkcm9wRmlsdGVyKCksIHRmKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTMyNDMs
OCArMzI0Myw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91
YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1h
dGlvbiogb3BhY2l0eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJv
cGVydHlPcGFjaXR5KTsKICAgICAgICAgaWYgKG9wYWNpdHlBbmltICYmICFvcGFjaXR5QW5pbS0+
aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0
IG9wYWNpdHlWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgICAgICAgICAgb3Bh
Y2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigw
LCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7Ci0gICAgICAgICAg
ICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFs
dWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAg
ICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+
KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAg
ICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4o
MSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAg
IC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlv
bnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1w
dHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0
aW9uKG9wYWNpdHlWZWN0b3IsIEZsb2F0U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXll
cjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0
aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3Jy
ZWN0IG9wYWNpdHkgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQg
dGhlIGZpbmFsIG9wYWNpdHkuCkBAIC0zMjU4LDggKzMyNTgsOCBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlE
IHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxl
LT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAgICAgICBp
ZiAodHJhbnNmb3JtQW5pbSAmJiAhdHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9u
KCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmlt
YXRlZFByb3BlcnR5VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNl
cnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxl
LT50cmFuc2Zvcm0oKSkpOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6
Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zv
cm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0
aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9n
cmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCBzbmFwcGVkSW50UmVj
dChyZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdy
YXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlU
cmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0
aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBl
bmRzLCBhbHNvIHNldCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0
ZVRyYW5zZm9ybSgqdG9TdHlsZSk7CkBAIC0zMjcyLDggKzMyNzIsOCBAQCBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0
eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0gPSB0b1N0eWxl
LT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpOwogICAgICAgICBpZiAo
ZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAg
ICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5
RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1
ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOwotICAgICAg
ICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlv
blZhbHVlPigxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9y
Lmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZp
bHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8Rmls
dGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAgICAgICBp
ZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBGbG9hdFNpemUo
KSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24o
QW5pbWF0ZWRQcm9wZXJ0eUZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUg
YW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAg
ICAgdXBkYXRlRmlsdGVycygqdG9TdHlsZSk7CkBAIC0zMjg3LDggKzMyODcsOCBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGJhY2tkcm9wRmlsdGVy
QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tkcm9wRmlsdGVyKTsKICAgICAgICAgaWYgKGJhY2tkcm9wRmlsdGVyQW5pbSAmJiAhYmFja2Ry
b3BGaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5
ZnJhbWVWYWx1ZUxpc3QgYmFja2Ryb3BGaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dEJhY2tkcm9wRmlsdGVyKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJh
Y2tkcm9wRmlsdGVyKCkpKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNr
ZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQo
bWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZp
bHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVu
aXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkp
OwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGJhY2tkcm9w
RmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgYmFja2Ryb3BGaWx0ZXJBbmltLCBHcmFwaGljc0xh
eWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFj
a2Ryb3BGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3Vy
ZSB0aGF0IHRoZSBjb3JyZWN0IGJhY2tkcm9wIGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFu
aW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgYmFja2Ryb3AgZmlsdGVyLgogICAgICAg
ICAgICAgICAgIHVwZGF0ZUJhY2tkcm9wRmlsdGVycygqdG9TdHlsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGFiZTRk
NGQ2NzVhMjIxODZlMmVhODlkNDEyZmZhODE1MzhjNWM5MjkuLjMyMTIyOWQ2ZjIzY2ZhZTY2YTA1
YTUyODA4ZGQwYjBjYmE4YzE0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYgcmVuZGVyVmll
dykKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCkucGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXll
ckNvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXll
ckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9z
aXRvcigpKTsKKyAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gbWFr
ZVVuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hy
b21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKICNlbmRpZgogfQogCkBA
IC02MTIsNyArNjEyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNo
QmVmb3JlRGlzcGxheVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllcioKIHsKICAgICBpZiAoIW1f
bGF5ZXJVcGRhdGVyKSB7CiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9IHBh
Z2UoKS5jaHJvbWUoKS5kaXNwbGF5SUQoKTsKLSAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKKyAg
ICAgICAgbV9sYXllclVwZGF0ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigq
dGhpcywgZGlzcGxheUlEKTsKICAgICB9CiAgICAgCiAgICAgbV9sYXllclVwZGF0ZXItPnNjaGVk
dWxlVXBkYXRlKCk7CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9s
bGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVy
cwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBjb25zdHJh
aW50czsKICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmlzU3RpY2tpbHlQb3NpdGlvbmVk
KCkpIHsKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQ
b3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdw
b3J0Q29uc3RyYWludHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VV
bmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1
dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAgICAgICAgICAgY29uc3Qg
UmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGlmIChjb21wb3NpdG9yLmlzQXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5ZXIoKmxh
eWVyLCAmZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpICYmIGVuY2xvc2luZ1RvdWNoU2Ny
b2xsYWJsZUxheWVyKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVuY2xvc2luZ1RvdWNoU2Ny
b2xsYWJsZUxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CkBAIC00ODAwLDcgKzQ4MDAsNyBAQCB2b2lk
IExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3Bv
cnRDb25zdHJhaW5lZExheWVycwogICAgICAgICAgICAgICAgIHN0aWNreUNvbnRhaW5lck1hcC5h
ZGQobGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGVu
Y2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5iYWNraW5nKCktPnNjcm9sbENvbnRhaW5lckxh
eWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNGaXhlZFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNv
bnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50cz4oY29tcG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikp
OworICAgICAgICAgICAgY29uc3RyYWludHMgPSBtYWtlVW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3
cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWlu
dHMoKmxheWVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAK
aW5kZXggNGI4NmZlMmFkMTc1ZGNlODZhZDM4NTJiZGZjMTUyZmQxMzA4ZDQ1ZS4uMTI4Yzk2ZGFl
MGIzMTAwNmNhMjVkNWE1NmM3MjBiYzg5MGQzNGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtOTUsNyArOTUsNyBA
QCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCiB2b2lkIFJlbmRl
ckxheWVyTW9kZWxPYmplY3Q6OmNyZWF0ZUxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXIp
OwotICAgIG1fbGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyPigqdGhpcyk7Cisg
ICAgbV9sYXllciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKICAgICBzZXRIYXNM
YXllcih0cnVlKTsKICAgICBtX2xheWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGJjNTUyN2I4
YzQ2YTRkZTA2NmY2OWU1YTMxMGM4ODY4MTk2ZmMyM2EuLjFhYWUwOWQwMGIyNmVhM2NhZGVhODY3
MmUyNzc5MjliZmQxN2E2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQnJlYWsuY3BwCkBAIC04OSw3ICs4OSw3IEBAIGludCBSZW5kZXJMaW5lQnJlYWs6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsCiAK
IHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0
ZUlubGluZUJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRWxlbWVu
dEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0
aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OnNldElubGluZUJveFdyYXBwZXIoSW5s
aW5lRWxlbWVudEJveCogaW5saW5lQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAppbmRleCA5YmI5YTUzOWQ2NjQyZGY5MDAyNmE3
ODJhZjhjZjg0ZGM0OWRhMmE5Li40MTAzZGFkNDg0NGRkMjRhMzAyYTczMmFmMjIxOWFjOTAwMDFj
YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5GbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5GbG93LmNwcApAQCAtNDIsNyArNDIsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
UmVuZGVyTXVsdGlDb2x1bW5GbG93KTsKIAogUmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJN
dWx0aUNvbHVtbkZsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogUmVuZGVyRnJhZ21lbnRlZEZsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAg
ICwgbV9zcGFubmVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8U3Bhbm5lck1hcD4oKSkKKyAgICAsIG1f
c3Bhbm5lck1hcChtYWtlVW5pcXVlPFNwYW5uZXJNYXA+KCkpCiAgICAgLCBtX2xhc3RTZXRXb3Jr
ZWRPbihudWxscHRyKQogICAgICwgbV9jb2x1bW5Db3VudCgxKQogICAgICwgbV9jb2x1bW5XaWR0
aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ZGEz
YmQ3Mzc3MWJhMTcxOTBlYWMzNWRhNjM4ZTI0M2YxOTAyOTA3Li4wYmY1MTkzZGU0ODQ0NWJjYzY3
N2U5MTRlOGFkM2RmODFjZWI4MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcApAQCAtMTg5Myw3ICsxODkzLDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0OjpSZW5k
ZXJPYmplY3RSYXJlRGF0YSYgUmVuZGVyT2JqZWN0OjpyYXJlRGF0YSgpIGNvbnN0CiBSZW5kZXJP
YmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRh
KCkKIHsKICAgICBzZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFw
KCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyT2JqZWN0
UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFw
KCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyT2JqZWN0UmFyZURh
dGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92
ZVJhcmVEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDNmYWFmYTExMjA2NTI2MjNlMDY1ZTZhMjFjZTFjNzUx
ZGJhOTFhMzcuLjAzZGQwOGZlNmI3ZjBhNmRkMTVmMjFmMjMzNWNjYWJjNWFmMDJhNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0lu
LmNwcApAQCAtNTMsNyArNTMsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4pOwogCiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUo
c3R5bGUpKQotICAgICwgbV9zbmFwc2hvdFJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1fc25hcHNob3RSZXNvdXJjZShtYWtlVW5pcXVlPFJl
bmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiAgICAgbV9zbmFwc2hvdFJlc291cmNlLT5pbml0aWFs
aXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmlu
ZGV4IDE4NmNhODcwZWQxMDkxM2Q1OGI4NTQ5ZWI5NmRlMzM2ZTM0NTUzNTkuLmU5MWExMzM3MTk5
MTJkMThmYTU1ZTM2ZDgzNTU4ODU3YzJkMThiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcApAQCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQgUmVuZGVyVGFibGU6OnN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5CiAgICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NTMiBzcGVjLCB5b3Ugb25seSB1c2Ug
Zml4ZWQgdGFibGUgbGF5b3V0IGlmIGFuCiAgICAgICAgIC8vIGV4cGxpY2l0IHdpZHRoIGlzIHNw
ZWNpZmllZCBvbiB0aGUgdGFibGUuICBBdXRvIHdpZHRoIGltcGxpZXMgYXV0byB0YWJsZSBsYXlv
dXQuCiAgICAgICAgIGlmIChzdHlsZSgpLnRhYmxlTGF5b3V0KCkgPT0gVGFibGVMYXlvdXRUeXBl
OjpGaXhlZCAmJiAhc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgICAg
IG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkVGFibGVMYXlvdXQ+KHRoaXMp
OworICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IG1ha2VVbmlxdWU8Rml4ZWRUYWJsZUxheW91
dD4odGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxl
TGF5b3V0ID0gbWFrZVVuaXF1ZTxBdXRvVGFibGVMYXlvdXQ+KHRoaXMpOwogICAgIH0KIAogICAg
IC8vIElmIGJvcmRlciB3YXMgY2hhbmdlZCwgaW52YWxpZGF0ZSBjb2xsYXBzZWQgYm9yZGVycyBj
YWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA2OGMzYTE1
ZDk1MTZiNWIzYzdjMmRkYWI0YWRhNDA5YTVkYzIwZGZhLi5hMDJkOWMxNmYzYTI3Y2M1MjIwOTcx
MDJjMjY5Yjc1NTUwOWQwMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmRpcnR5TGluZUJveGVz
KGJvb2wgZnVsbExheW91dCkKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRl
clRleHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElu
bGluZVRleHRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0Qm94
PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KElubGluZVRl
eHRCb3gmIHRleHRCb3gpCkBAIC0xNTQ1LDcgKzE1NDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1v
bWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFz
dFR5cAogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgc2VjdXJlVGV4dFRpbWVyID0gc2VjdXJl
VGV4dFRpbWVycygpLmFkZCh0aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KCFzZWN1cmVUZXh0VGltZXIpCi0gICAgICAgIHNlY3VyZVRleHRUaW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7CisgICAgICAgIHNlY3VyZVRleHRUaW1lciA9
IG1ha2VVbmlxdWU8U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7CiAgICAgc2VjdXJlVGV4dFRpbWVy
LT5yZXN0YXJ0KG9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGMxNDQ1MWExOGVlYTdhNTcxYTI3Nzc4
OThhNzljYzhiNDNmZjMxNDIuLjVmZWM2NzhjNmJiNWRmMGU0OTIyYjAxMmMzZjI2OGRiYWI0YTdi
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTQ5Miw3ICs0
OTIsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0IExheW91
dFJlY3QmIHJlcGFpbnRSZWN0KSBjb25zdAogICAgIC8vIEZJWE1FOiBNYXliZSB0aGVyZSBzaG91
bGQgYmUgYSByZWdpb24gdHlwZSB0aGF0IGRvZXMgdGhpcyBhdXRvbWF0aWNhbGx5LgogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplID0gMTYgKiAx
NjsKICAgICBpZiAobV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24tPmdyaWRTaXplKCkgPiBtYXhp
bXVtUmVwYWludFJlZ2lvbkdyaWRTaXplKQotICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJl
Z2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lv
bi0+Ym91bmRzKCkpOworICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VV
bmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOwogfQog
CiB2b2lkIFJlbmRlclZpZXc6OmZsdXNoQWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uKCkgY29uc3QK
QEAgLTcyNCw3ICs3MjQsNyBAQCBib29sIFJlbmRlclZpZXc6OnVzZXNDb21wb3NpdGluZygpIGNv
bnN0CiBSZW5kZXJMYXllckNvbXBvc2l0b3ImIFJlbmRlclZpZXc6OmNvbXBvc2l0b3IoKQogewog
ICAgIGlmICghbV9jb21wb3NpdG9yKQotICAgICAgICBtX2NvbXBvc2l0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOworICAgICAgICBtX2NvbXBvc2l0
b3IgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOwogCiAgICAgcmV0
dXJuICptX2NvbXBvc2l0b3I7CiB9CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJWaWV3
OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWwKIEltYWdlUXVhbGl0eUNvbnRyb2xsZXImIFJlbmRlclZpZXc6OmltYWdlUXVhbGl0
eUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyKQotICAg
ICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUXVh
bGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICAgICAgbV9pbWFnZVF1YWxpdHlDb250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxJbWFnZVF1YWxpdHlDb250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CiB9CiAKQEAgLTgzNCw3ICs4MzQsNyBAQCBSZW5k
ZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRv
cihSZW5kZXJWaWV3KiB2aWV3KQogCiAgICAgbV93YXNBY2N1bXVsYXRpbmdSZXBhaW50UmVnaW9u
ID0gISFyb290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb247CiAgICAgaWYg
KCFtX3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRSZWdpb24pCi0gICAgICAgIHJvb3RSZW5kZXJWaWV3
LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigp
OworICAgICAgICByb290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBt
YWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICBtX3Jvb3RWaWV3ID0gbWFrZVdlYWtQdHIoKnJvb3RS
ZW5kZXJWaWV3KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwCmluZGV4IGZkY2Q1OWM1MmM1ZjMyOGY1MjA5ZjAwYzFmOGQ4MTZhZGM1Zjc2NjguLjQ0NTU4
NDFhZjMyZmYxNTI1MmNmYTI4ZWQ4YTY5YzNlNDlmMWYzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBmbG9hdCBSb290
SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAg
Ym9vbCBsdHIsIGZsbwogICAgICAgICBnRWxsaXBzaXNCb3hNYXAgPSBuZXcgRWxsaXBzaXNCb3hN
YXAoKTsKIAogICAgIEFTU0VSVCghaGFzRWxsaXBzaXNCb3goKSk7Ci0gICAgYXV0byogZWxsaXBz
aXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEVsbGlw
c2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAo
bWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0
KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CisgICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hN
YXAtPnNldCh0aGlzLCBtYWtlVW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBz
aXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dp
Y2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlz
SG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgc2V0
SGFzRWxsaXBzaXNCb3godHJ1ZSk7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYW4gUlRMIHZl
cnNpb24gb2YgdGhpcz8KICAgICBpZiAobHRyICYmICh4KCkgKyBsb2dpY2FsV2lkdGgoKSArIGVs
bGlwc2lzV2lkdGgpIDw9IGJsb2NrUmlnaHRFZGdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guaAppbmRleCA3ZGYyODI4OGE0ZDU1YzJjN2QyNmFkNGJjMDE3NmQwYjc2
MTc4MzY0Li4yNDdlNTVjMDY5ZTlmZTg4MWNhZjRiZmJjMmI0YWVmMTllMzYxN2EzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBj
bGFzcyBSb290SW5saW5lQm94IDogcHVibGljIElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxSb290SW5saW5lQm94PgogICAgICAgICBpZiAobV9mbG9hdHMpCiAgICAgICAgICAg
ICBtX2Zsb2F0cy0+YXBwZW5kKG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fZmxvYXRzID0gc3RkOjptYWtlX3VuaXF1ZTxDbGVhbkxpbmVGbG9h
dExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CisgICAgICAgICAgICBtX2Zsb2F0
cyA9IG1ha2VVbmlxdWU8Q2xlYW5MaW5lRmxvYXRMaXN0PigxLCBtYWtlV2Vha1B0cihmbG9hdGlu
Z0JveCkpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlRmxvYXQoUmVuZGVyQm94JiBmbG9hdGlu
Z0JveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5n
ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5j
cHAKaW5kZXggZWM1ZTczNTZhNjRkMTI0OWRkYTExNDdlOGJiYTMxZjQ3OTBiNGJmMi4uYjliYWQw
YTA5ZjI5YmY3YWRjOWQzMzNmNGU4MTFjM2VhMWI5M2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKQEAgLTEzMSwxMyArMTMxLDEzIEBA
IHN0YXRpYyBTZWxlY3Rpb25EYXRhIGNvbGxlY3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpD
b250ZXh0JiBzZWxlY3Rpb24sIGJvb2wKICAgICB3aGlsZSAoc3RhcnQgJiYgc3RhcnQgIT0gc3Rv
cCkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpzdGFydCwgc2Vs
ZWN0aW9uKSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFp
bnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFz
IHdlbGwuCi0gICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQs
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7Cisg
ICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIG1ha2VVbmlx
dWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CiAgICAgICAgICAgICBpZiAo
cmVwYWludERpZmZlcmVuY2UpIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGJsb2NrID0g
Y29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpzdGFydCk7IGJsb2NrOyBibG9jayA9IGNvbnRhaW5p
bmdCbG9ja0JlbG93VmlldygqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGJs
b2NrSW5mbyA9IG9sZFNlbGVjdGlvbkRhdGEuYmxvY2tzLmFkZChibG9jaywgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOworICAg
ICAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0
aW9uSW5mbz4oKmJsb2NrKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTIxMywxMyArMjEzLDEzIEBAIEludFJlY3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpj
b2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50IGNsaXBUb1Zpc2libGVDb250CiAgICAg
ICAgIGlmICgoc3RhcnQtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IHN0YXJ0ID09IG1fc2VsZWN0
aW9uQ29udGV4dC5zdGFydCgpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkK
ICAgICAgICAgICAgICYmIHN0YXJ0LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6
U2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBm
b3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1p
bmVkIGFzIHdlbGwuCi0gICAgICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQg
PT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOworICAgICAgICAgICAgcmVuZGVyZXJzLnNl
dChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zp
c2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKICAgICAgICAgICAg
IGF1dG8qIGJsb2NrID0gc3RhcnQtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgd2hp
bGUgKGJsb2NrICYmICFpczxSZW5kZXJWaWV3PigqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSByZW5kZXJl
cnMuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAg
aWYgKGJsb2NrSW5mbykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxv
Y2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOwor
ICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5m
bz4oKmJsb2NrLCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6
WWVzKTsKICAgICAgICAgICAgICAgICBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgU2VsZWN0
aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRN
b2RlIGJsb2NrUmVwCiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihz
ZWxlY3Rpb25TdGFydCk7CiAgICAgZm9yIChhdXRvKiBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rp
b25TdGFydDsgY3VycmVudFJlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAhPSBzZWxlY3Rpb25F
bmQ7IGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgewogICAgICAg
ICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpjdXJyZW50UmVuZGVyZXIsIG1fc2Vs
ZWN0aW9uQ29udGV4dCkpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxl
Y3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rp
b25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxSZW5k
ZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0cnVlKTsKICNpZiBFTkFCTEUoU0VS
VklDRV9DT05UUk9MUykKICAgICAgICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHNlbGVjdGlvbklu
Zm8tPmNvbGxlY3RlZFNlbGVjdGlvblJlY3RzKCkpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rp
b25SZWN0R2F0aGVyZXIuYWRkUmVjdChzZWxlY3Rpb25JbmZvLT5yZXBhaW50Q29udGFpbmVyKCks
IHJlY3QpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBs
eShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAg
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJs
b2NrSW5mbyA9IG5ld1NlbGVjdGVkQmxvY2tzLmFkZChjb250YWluaW5nQmxvY2ssIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7Cisg
ICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlv
bkluZm8+KCpjb250YWluaW5nQmxvY2spOwogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9j
ayA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfQ09OVFJPTFMpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRk
R2FwUmVjdHMoYmxvY2tJbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIGJsb2NrSW5mby0+cmVjdHMo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5k
ZXggOGM3NjZlNmRlMmM3NGFkMDM3OTczMzMxZmM3ZjVhNDc0OTAxNWI4ZS4uYzM2MmY0ZTU3YjAw
ZjljZTM5YTczZWNlODExYzJjODMyZDY1MGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtOTk3LDcgKzk5Nyw3IEBAIExheW91dDo6TGF5
b3V0KGNvbnN0IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQsIGNvbnN0
IFJlbmRlckJsb2NrCiBjb25zdCBSdW5SZXNvbHZlciYgTGF5b3V0OjpydW5SZXNvbHZlcigpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3J1blJlc29sdmVyKQotICAgICAgICBtX3J1blJlc29sdmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMp
OworICAgICAgICBtX3J1blJlc29sdmVyID0gbWFrZVVuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9j
a0Zsb3dSZW5kZXJlciwgKnRoaXMpOwogICAgIHJldHVybiAqbV9ydW5SZXNvbHZlcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwCmluZGV4IDFiZjk4ZTRlZWI0M2JhMjJjZGE0ZTZmNWQzYmMyYTVmOWZjNGI0Yjcu
LjA2MjViMTZiZDU0MzE5NzNlZDMxZGU5OThhZWQ4ODliMDEyYmEzYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaQogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGRlYnVnU2hhZG93ID0gbnVsbHB0cjsKICAgICBpZiAoZmxv
dy5zZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpIHsKLSAg
ICAgICAgZGVidWdTaGFkb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50
KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwg
MCwgMjAwKSk7CisgICAgICAgIGRlYnVnU2hhZG93ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJ
bnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcigw
LCAyNTUsIDAsIDIwMCkpOwogICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVidWdTaGFk
b3cuZ2V0KCkpOwogICAgIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgZ2VuZXJhdGVMaW5l
Qm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQogICAg
ICAgICBCaWRpUnVuTGlzdDxCaWRpUnVuPiBiaWRpUnVuczsKICAgICAgICAgZm9yIChhdXRvIGl0
ID0gcmFuZ2UuYmVnaW4oKTsgaXQgIT0gcmFuZ2UuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAg
IGF1dG8gcnVuID0gKml0OwotICAgICAgICAgICAgYmlkaVJ1bnMuYXBwZW5kUnVuKHN0ZDo6bWFr
ZV91bmlxdWU8QmlkaVJ1bj4ocnVuLmxvY2FsU3RhcnQoKSwgcnVuLmxvY2FsRW5kKCksIGNvbnN0
X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4ocnVuLnJlbmRlcmVyKCkpLCBiaWRpQ29udGV4dC5wdHIoKSwg
VV9MRUZUX1RPX1JJR0hUKSk7CisgICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4obWFrZVVu
aXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2Fz
dDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xF
RlRfVE9fUklHSFQpKTsKICAgICAgICAgfQogCiAgICAgICAgIExpbmVJbmZvIGxpbmVJbmZvOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKaW5kZXggM2JhMTMw
ZDQ1NTlkNzI5MmQ4OTFmNTUzY2YxNDgwZjg2NmJiMmJhZC4uNGI0M2U2YWNiZTBlZWRhZjRlYWY0
ZDJlNWQ1YTQ0NjM5MDYwNTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRBdXRvU2l6aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1
dG9TaXppbmcuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBUZXh0QXV0b1NpemluZzo6YWRk
VGV4dE5vZGUoVGV4dCYgbm9kZSwgZmxvYXQgY2FuZGlkYXRlU2l6ZSkKICAgICBMT0coVGV4dEF1
dG9zaXppbmcsICIgYWRkQXV0b1NpemVkTm9kZSAlcCBjYW5kaWRhdGVTaXplPSVmIiwgJm5vZGUs
IGNhbmRpZGF0ZVNpemUpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0Tm9kZXMuYWRkPFRl
eHRBdXRvU2l6aW5nSGFzaFRyYW5zbGF0b3I+KG5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKSwgbnVs
bHB0cik7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigp
OworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxUZXh0QXV0
b1NpemluZ1ZhbHVlPigpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZFRleHRO
b2RlKG5vZGUsIGNhbmRpZGF0ZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lQnJlYWtlci5jcHAKaW5kZXggMmIxYzFmYTAzY2ExYzU3NTY5MDI3N2E1ZTgx
Mjg3MTAxMGQ0NDY3ZS4uZDExNjYxNWE3MjZjNWEwYTk0M2Q5YjlmNmUwOTQwYjk1ZTY5MDkxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcApAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIExpbmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5s
aW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mCiAgICAgICAgIGlmIChvYmplY3Qu
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgIHNldFN0YXRpY1Bvc2l0aW9u
cyhtX2Jsb2NrLCBkb3duY2FzdDxSZW5kZXJCb3g+KG9iamVjdCksIHdpZHRoLnNob3VsZEluZGVu
dFRleHQoKSk7CiAgICAgICAgICAgICBpZiAob2JqZWN0LnN0eWxlKCkuaXNPcmlnaW5hbERpc3Bs
YXlJbmxpbmVUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5k
UnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250
ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIucnVucygp
LmFwcGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlSdW4+KDAsIDEsIG9iamVjdCwgcmVzb2x2ZXIuY29u
dGV4dCgpLCByZXNvbHZlci5kaXIoKSkpOwogICAgICAgICAgICAgICAgIGxpbmVJbmZvLmluY3Jl
bWVudFJ1bnNGcm9tTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIGlmIChvYmplY3QuaXNGbG9hdGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAppbmRleCA0YjE1OTdlOWYyMWM5Y2Q0YjJmMGQ4
ODM0NzQ0Nzc1ZjFkOGJkZTAxLi5kNTIwOTJiNjhlZDhlMmM4ZmRhNTE1YzkwY2Q1MjIzNTZkNjU1
YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmNwcApAQCAtNzYsNyArNzYsNyBAQCBJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2Vu
ZXJhdG9yOjppbnRlcnZhbEF0KGludCB5KSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNo
YXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50
ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3QKIHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxz
U2l6ZSA9IChvZmZzZXQoKSA+IHNoYXBlTWFyZ2luKSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNl
dCgpICogMiArIHNoYXBlTWFyZ2luICogMjsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4
KHNoYXBlTWFyZ2luLCBvZmZzZXQoKSkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxS
YXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVN
YXJnaW4sIG9mZnNldCgpKSk7CiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50
ZXJ2YWxHZW5lcmF0b3Ioc2hhcGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygp
LnkoKTsgeSA8IGJvdW5kcygpLm1heFkoKTsgKyt5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDMwMjMxYTBiZTFiYmM2M2U0YmUzZDI1MDUxMmJlZDNk
MTk1OTQwOTkuLmY1ZWZlZmRkMzJiMzA1NDdhZGJkOGViMDhmNTRlNjNiMDI0MGZkOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC00NiwyNCArNDYsMjQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3Jl
YXRlSW5zZXRTaGFwZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiB7CiAgICAgQVNT
RVJUKGJvdW5kcy5yZWN0KCkud2lkdGgoKSA+PSAwICYmIGJvdW5kcy5yZWN0KCkuaGVpZ2h0KCkg
Pj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CiB9CiAKIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUNpcmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNl
bnRlciwgZmxvYXQgcmFkaXVzKQogewogICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgp
IC0gcmFkaXVzLCBjZW50ZXIueSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9h
dFNpemUocmFkaXVzLCByYWRpdXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVT
aGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMs
IHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOwogfQogCiBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxv
YXRQb2ludCYgY2VudGVyLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChy
YWRpaS53aWR0aCgpID49IDAgJiYgcmFkaWkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFk
aWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIs
IHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjdGFu
Z2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnko
KSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCBy
YWRpaSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25T
aGFwZShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1
bGUgZmlsbFJ1bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seWdvblNoYXBl
PihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBv
bHlnb25TaGFwZT4oV1RGTW92ZSh2ZXJ0aWNlcyksIGZpbGxSdWxlKTsKIH0KIAogc3RhdGljIGlu
bGluZSBGbG9hdFJlY3QgcGh5c2ljYWxSZWN0VG9Mb2dpY2FsKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgbG9naWNhbEJveEhlaWdodCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCkBAIC0x
MjgsNyArMTI4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUo
Y29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFwZSwgY29uc3QgTGEKICAgICAgICAgY29uc3QgVmVj
dG9yPExlbmd0aD4mIHZhbHVlcyA9IHBvbHlnb24udmFsdWVzKCk7CiAgICAgICAgIHNpemVfdCB2
YWx1ZXNTaXplID0gdmFsdWVzLnNpemUoKTsKICAgICAgICAgQVNTRVJUKCEodmFsdWVzU2l6ZSAl
IDIpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGlj
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9
IG1ha2VVbmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZXNTaXplOyBpICs9IDIpIHsKICAgICAgICAg
ICAgIEZsb2F0UG9pbnQgdmVydGV4KAogICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5n
dGgodmFsdWVzLmF0KGkpLCBib3hXaWR0aCksCkBAIC0xNzksNyArMTc5LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9h
dCB0aHJlc2hvbGQsIGMKIAogICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gc25hcHBlZEludFJlY3Qo
aW1hZ2VSKTsKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChtYXJnaW5S
KTsKLSAgICBhdXRvIGludGVydmFscyA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CisgICAgYXV0byBp
bnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0Lmhl
aWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1
ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGltYWdlUmVjdC5zaXplKCksIFVuYWNjZWxlcmF0ZWQpOwogCkBAIC0yMTgsNyArMjE4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2Uq
IGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8g
cmFzdGVyU2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVy
dmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKKyAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVu
aXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7
CiAgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKICAgICByYXN0
ZXJTaGFwZS0+bV9tYXJnaW4gPSBtYXJnaW47CiAgICAgcmV0dXJuIHJhc3RlclNoYXBlOwpAQCAt
MjMwLDcgKzIzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNo
YXBlKGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgV3JpCiAKICAgICBGbG9hdFJlY3Qg
cmVjdCgwLCAwLCByb3VuZGVkUmVjdC5yZWN0KCkud2lkdGgoKSwgcm91bmRlZFJlY3QucmVjdCgp
LmhlaWdodCgpKTsKICAgICBGbG9hdFJvdW5kZWRSZWN0IGJvdW5kcyhyZWN0LCByb3VuZGVkUmVj
dC5yYWRpaSgpKTsKLSAgICBhdXRvIHNoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4o
Ym91bmRzKTsKKyAgICBhdXRvIHNoYXBlID0gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsK
ICAgICBzaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHNoYXBlLT5tX21h
cmdpbiA9IG1hcmdpbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlT3V0c2lkZUluZm8uaAppbmRleCBjZDk0Zjg5YzAyYjBiOGMxMzUxOTQ1N2U0NGQwZGRh
ZjZkODdmMWZhLi45NDg0MzE3MTk0N2MwMjMwOWFiN2Y0ZmIxYjk3YzI2Mzg4MmVlMzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
aApAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNoYXBlT3V0c2lkZUluZm8gZmluYWwgewogICAg
ICAgICBJbmZvTWFwJiBpbmZvTWFwID0gU2hhcGVPdXRzaWRlSW5mbzo6aW5mb01hcCgpOwogICAg
ICAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogaW5mbyA9IGluZm9NYXAuZ2V0KCZrZXkpKQogICAg
ICAgICAgICAgcmV0dXJuICppbmZvOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGluZm9NYXAuYWRk
KCZrZXksIHN0ZDo6bWFrZV91bmlxdWU8U2hhcGVPdXRzaWRlSW5mbz4oa2V5KSk7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQoJmtleSwgbWFrZVVuaXF1ZTxTaGFwZU91dHNpZGVJ
bmZvPihrZXkpKTsKICAgICAgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAg
IH0KICAgICBzdGF0aWMgdm9pZCByZW1vdmVJbmZvKGNvbnN0IFJlbmRlckJveCYga2V5KSB7IGlu
Zm9NYXAoKS5yZW1vdmUoJmtleSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4IDBjOThmOTE2NmY3ZTE1Mjk3MDNiY2RiMmM4YzgzY2M4
MGJiN2JmMjQuLjc0NGM5MGI4ZmIzZjUyNzY4YTUzOGQyMTM1ODM2MmNhNjM0ODI3ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzU4
LDcgKzM1OCw3IEBAIFJlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlUGF0aDo6YmxlbmQoY29uc3Qg
QmFzaWNTaGFwZSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjCiAKICAgICBhdXRvJiBmcm9tUGF0
aCA9IGRvd25jYXN0PEJhc2ljU2hhcGVQYXRoPihmcm9tKTsKIAotICAgIGF1dG8gcmVzdWx0aW5n
UGF0aEJ5dGVzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKKyAgICBh
dXRvIHJlc3VsdGluZ1BhdGhCeXRlcyA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7
CiAgICAgYnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKCpmcm9tUGF0aC5tX2J5dGVTdHJl
YW0sICptX2J5dGVTdHJlYW0sICpyZXN1bHRpbmdQYXRoQnl0ZXMsIHByb2dyZXNzKTsKIAogICAg
IGF1dG8gcmVzdWx0ID0gQmFzaWNTaGFwZVBhdGg6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdGluZ1Bh
dGhCeXRlcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Nv
bnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
aAppbmRleCBlN2JiMDYxNjUwMmQ5OWQ2ZGI0MzkyYmI0NjhhOWFiNDY5Y2U0OTRhLi4yYzEyZGQ5
YjQwZGQ0MGIzYzBiZjY3NDkzMjJhZTJiMGZkMWUwNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBJbWFn
ZUNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8
UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4g
Y2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBhdXRvIGltYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihtX2ltYWdlLmNvcHlSZWYoKSk7Cisg
ICAgICAgIGF1dG8gaW1hZ2UgPSBtYWtlVW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2Uu
Y29weVJlZigpKTsKICAgICAgICAgaW1hZ2UtPnNldEFsdFRleHQoYWx0VGV4dCgpKTsKICAgICAg
ICAgcmV0dXJuIGltYWdlOwogICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBUZXh0Q29u
dGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJl
bmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29udGVudERhdGE+KG1fdGV4dCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29u
dGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVl
PFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQogCiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CkBA
IC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgQ291bnRlckNvbnRlbnREYXRhIGZpbmFsIDogcHVibGlj
IENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50
UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFs
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERh
dGE+KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KG1ha2VVbmlxdWU8Q291bnRl
ckNvbnRlbnQ+KGNvdW50ZXIoKSkpOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3Vu
dGVyQ29udGVudD4gbV9jb3VudGVyOwpAQCAtMTkwLDcgKzE5MCw3IEBAIGNsYXNzIFF1b3RlQ29u
dGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJl
bmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlx
dWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUoKSk7IH0KIAogICAgIFF1b3RlVHlwZSBtX3F1b3Rl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5k
ZXggZjNkOTFkYzhkYmM4ZDllNDZjNjAxYjk1ODQzYjlhOTUyZjNiMmQxZC4uMzAwMTRkMDRmNzBm
YjkxODE3NDI4NzYwM2ZkZWFiNzIzOTU2MTRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgRmlsbExheWVyOjpGaWxs
TGF5ZXIoRmlsbExheWVyVHlwZSB0eXBlKQogfQogCiBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25z
dCBGaWxsTGF5ZXImIG8pCi0gICAgOiBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVl
PEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgOiBtX25leHQoby5tX25leHQg
PyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCiAgICAgLCBtX2lt
YWdlKG8ubV9pbWFnZSkKICAgICAsIG1feFBvc2l0aW9uKG8ubV94UG9zaXRpb24pCiAgICAgLCBt
X3lQb3NpdGlvbihvLm1feVBvc2l0aW9uKQpAQCAtMTE3LDcgKzExNyw3IEBAIEZpbGxMYXllcjo6
fkZpbGxMYXllcigpCiAKIEZpbGxMYXllciYgRmlsbExheWVyOjpvcGVyYXRvcj0oY29uc3QgRmls
bExheWVyJiBvKQogewotICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxG
aWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOworICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8g
bWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOwogCiAgICAgbV9pbWFn
ZSA9IG8ubV9pbWFnZTsKICAgICBtX3hQb3NpdGlvbiA9IG8ubV94UG9zaXRpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAyNDliYTQ3
ZTU4NDNlY2M2MmU2ZmQ0ZjI2YWYxY2Y1MzhhMTYzZjljLi5mYjQzYzIwZTVjZTk5ZWNlMTlmNDUy
ZmQ5Zjg3OTY0ZDgxNGJiN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBSZW5kZXJTdHlsZSBSZW5kZXJT
dHlsZTo6Y2xvbmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBD
bG9uZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7
CiB9CiAKIFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxh
eSkKQEAgLTQwOSw3ICs0MDksNyBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hl
ZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldQogICAgIFJlbmRl
clN0eWxlKiByZXN1bHQgPSBwc2V1ZG8uZ2V0KCk7CiAKICAgICBpZiAoIW1fY2FjaGVkUHNldWRv
U3R5bGVzKQotICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
UHNldWRvU3R5bGVDYWNoZT4oKTsKKyAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMgPSBtYWtl
VW5pcXVlPFBzZXVkb1N0eWxlQ2FjaGU+KCk7CiAKICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+
YXBwZW5kKFdURk1vdmUocHNldWRvKSk7CiAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgUmVu
ZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUp
CiB7CiAgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAg
ICAgaWYgKCFkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpCi0gICAgICAgIGRhdGEu
Y3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxT
dHJpbmc+PigpOworICAgICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPSBt
YWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hl
ZFByb3BlcnRpZXMtPmFkZChuYW1lKTsKIH0KIApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgdm9pZCBS
ZW5kZXJTdHlsZTo6c2V0Q29udGVudChSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBh
ZGQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENvbnRlbnQo
c3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgp
KSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1h
Z2UucmVsZWFzZU5vbk51bGwoKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENv
bnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQpAQCAtMTMxMCwxMyArMTMxMCwx
MyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBi
b29sIGFkZCkKICAgICBpZiAoYWRkICYmIGRhdGEuY29udGVudCkgewogICAgICAgICBhdXRvJiBs
YXN0ID0gbGFzdENvbnRlbnQoKmRhdGEuY29udGVudCk7CiAgICAgICAgIGlmICghaXM8VGV4dENv
bnRlbnREYXRhPihsYXN0KSkKLSAgICAgICAgICAgIGxhc3Quc2V0TmV4dChzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CisgICAgICAgICAgICBsYXN0LnNldE5leHQo
bWFrZVVuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGF1dG8mIHRleHRDb250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPihs
YXN0KTsKICAgICAgICAgICAgIHRleHRDb250ZW50LnNldFRleHQodGV4dENvbnRlbnQudGV4dCgp
ICsgc3RyaW5nKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGEuY29udGVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOworICAgICAgICBk
YXRhLmNvbnRlbnQgPSBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKTsKICAgICAg
ICAgYXV0byYgYWx0VGV4dCA9IGRhdGEuYWx0VGV4dDsKICAgICAgICAgaWYgKCFhbHRUZXh0Lmlz
TnVsbCgpKQogICAgICAgICAgICAgZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFsdFRleHQpOwpA
QCAtMTMyNywxMiArMTMyNywxMiBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KHN0ZDo6
dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gY291bnRlciwgYm9vbCBhZGQpCiB7CiAgICAgaWYg
KCFjb3VudGVyKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5p
cXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CisgICAgc2V0
Q29udGVudChtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSks
IGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3Rl
LCBib29sIGFkZCkKIHsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250
ZW50RGF0YT4ocXVvdGUpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxRdW90ZUNv
bnRlbnREYXRhPihxdW90ZSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRl
bnRBbHRUZXh0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgQ291
bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCkK
IHsKICAgICBhdXRvJiBtYXAgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvdW50
ZXJEaXJlY3RpdmVzOwogICAgIGlmICghbWFwKQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q291
bnRlckRpcmVjdGl2ZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAtMTY3MSwxNCAr
MTY3MSwxNCBAQCB2b2lkIFJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygpCiBBbmltYXRp
b25MaXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMpCi0gICAgICAgIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5p
bWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5h
bmltYXRpb25zID0gbWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJldHVybiAqbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9uczsKIH0KIAogQW5pbWF0aW9uTGlzdCYgUmVu
ZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxp
c3Q+KCk7CisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlv
bnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25J
bmhlcml0ZWREYXRhLT50cmFuc2l0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAppbmRleCAyMGIyYTgxMTRi
MGM4ZTllYmQ0ODI3MDc5YTk4MjBmMmVjMGRjZGMyLi42ZTM3Y2Y4ZmI4YWJhNTVlYzMzMGE5NjAz
M2E4YTk1NGM3Y2IwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIFN0eWxlU2hh
ZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKCkKIAogaW5saW5lIFN0eWxlU2hhZG93U1ZH
RGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYgb3RoZXIp
CiAgICAgOiBSZWZDb3VudGVkPFN0eWxlU2hhZG93U1ZHRGF0YT4oKQotICAgICwgc2hhZG93KG90
aGVyLnNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykg
OiBudWxscHRyKQorICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93
RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggM2Q2MWM5NGMwMTY2MTYwODU4
ZGFiZDg0MDlmYzQwODY3MGU1MDFjYS4uYzE3ZWFmODU5YjBiZmFhN2RhYmMwMDhkNGU3NDBmYzYz
MGE0YjgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRv
d0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRh
LmNwcApAQCAtMzMsNyArMzMsNyBAQCBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRv
d0RhdGEmIG8pCiAgICAgLCBtX2NvbG9yKG8ubV9jb2xvcikKICAgICAsIG1fc3R5bGUoby5tX3N0
eWxlKQogICAgICwgbV9pc1dlYmtpdEJveFNoYWRvdyhvLm1faXNXZWJraXRCb3hTaGFkb3cpCi0g
ICAgLCBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1f
bmV4dCkgOiBudWxscHRyKQorICAgICwgbV9uZXh0KG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxTaGFk
b3dEYXRhPigqby5tX25leHQpIDogbnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmlu
ZGV4IGFkMmNiZDk1N2VlZjgyNTYwY2ZiMzUyZTlmNTBiMzllNjMzYTI2ZmYuLjk2ZGJiYTAwN2U2
YTY0YTdkNjk3YTI5YTIxZDYyMWFkNDQ3NTRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTE3
Miw3ICsxNzIsNyBAQCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwgdmlzaXRlZExpbmtU
ZXh0RW1waGFzaXNDb2xvcihvLnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IpCiAgICAgLCBj
YXJldENvbG9yKG8uY2FyZXRDb2xvcikKICAgICAsIHZpc2l0ZWRMaW5rQ2FyZXRDb2xvcihvLnZp
c2l0ZWRMaW5rQ2FyZXRDb2xvcikKLSAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gc3Rk
OjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCisgICAg
LCB0ZXh0U2hhZG93KG8udGV4dFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8udGV4
dFNoYWRvdykgOiBudWxscHRyKQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAg
LCBpbmRlbnQoby5pbmRlbnQpCiAgICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA2ZmJiMmI3YjBjM2ViMDNlODY5YTFlYWFjOTE2
MTExOWM5YzYxZTliLi5iZGQwMTkxNWFhMjc4ZGQ2YTY2NDhmZjRjM2ZiZGIzZmNjZDE0MmEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBpbmxpbmUgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZVJhcmVOb25JbgogICAgICwgc2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKICNl
bmRpZgogICAgICwgY29udGVudChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxs
cHRyKQotICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IHN0ZDo6
bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDog
bnVsbHB0cikKKyAgICAsIGNvdW50ZXJEaXJlY3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBt
YWtlVW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51
bGxwdHIpCiAgICAgLCBhbHRUZXh0KG8uYWx0VGV4dCkKLSAgICAsIGJveFNoYWRvdyhvLmJveFNo
YWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxw
dHIpCisgICAgLCBib3hTaGFkb3coby5ib3hTaGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+
KCpvLmJveFNoYWRvdykgOiBudWxscHRyKQogICAgICwgd2lsbENoYW5nZShvLndpbGxDaGFuZ2Up
CiAgICAgLCBib3hSZWZsZWN0KG8uYm94UmVmbGVjdCkKLSAgICAsIGFuaW1hdGlvbnMoby5hbmlt
YXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5hbmltYXRpb25zKSA6
IG51bGxwdHIpCi0gICAgLCB0cmFuc2l0aW9ucyhvLnRyYW5zaXRpb25zID8gc3RkOjptYWtlX3Vu
aXF1ZTxBbmltYXRpb25MaXN0Pigqby50cmFuc2l0aW9ucykgOiBudWxscHRyKQorICAgICwgYW5p
bWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1h
dGlvbnMpIDogbnVsbHB0cikKKyAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBtYWtl
VW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCiAgICAgLCBt
YXNrKG8ubWFzaykKICAgICAsIG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJbWFnZSkKICAgICAsIHBh
Z2VTaXplKG8ucGFnZVNpemUpCkBAIC0xNzAsNyArMTcwLDcgQEAgaW5saW5lIFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJl
Tm9uSW4KICAgICAsIGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKICAgICAsIGp1c3RpZnlT
ZWxmKG8uanVzdGlmeVNlbGYpCiAgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVy
dGllcykKLSAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdh
dGNoZWRQcm9wZXJ0aWVzID8gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKKyAgICAsIGN1c3RvbVBhaW50
V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gbWFrZVVu
aXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDog
bnVsbHB0cikKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAgLCB0b3VjaEFjdGlvbnMo
by50b3VjaEFjdGlvbnMpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMmM2ZjMxNzhlZWIyNmM3YjJjMGQ5NWFlMTA4Yjdl
ZmNjNmUyMmM0ZS4uMjRjZGU0YmQ2MWU3MTRjMjMyM2I5ZTVjZDJjZjI2OWUyODQ1ZjlhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxl
bWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVs
T2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNV
cGRhdGUodHJ1ZSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKLSAgICAsIG1f
aW1hZ2VSZXNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisg
ICAgLCBtX2ltYWdlUmVzb3VyY2UobWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQog
ewogICAgIGltYWdlUmVzb3VyY2UoKS5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAzYzMxMDU2
ZDFjYWIxZmVhMTA0OTA3ODBkMDBjOGRjZDJjNzk4MDY4Li5iYTFjZDA1MmRhZGFhMWNlMTg0MWM3
YzIzY2FmMzNmYWE0ZTM0N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlbmRlclNWR0lubGluZTo6
UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJTVkdJbmxpbmU6
OmNyZWF0ZUlubGluZUZsb3dCb3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxTVkdJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNW
R0lubGluZUZsb3dCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVp
Z2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IDY3ZTZmOTg5N2QyNzc0NGZk
NDEzM2ZmMjc2NzE0YzRlOWRhNjY1YjAuLmRiZjQ5MDNmODlmNGRjOTJlZGZmMzA1MzkyNTg2OWYz
MmUyZDk5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5s
aW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRl
clN0eWxlCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJTVkdJbmxpbmVU
ZXh0OjpjcmVhdGVUZXh0Qm94KCkKIHsKLSAgICBhdXRvIGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8
U1ZHSW5saW5lVGV4dEJveD4oKnRoaXMpOworICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdJ
bmxpbmVUZXh0Qm94PigqdGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdo
dCgpOwogICAgIHJldHVybiBib3g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDFiM2VmMjRjYzky
ZDIwNTJhMzRhYWQyMDg4MjMzMGUxYTEyM2I4NGYuLjFhZDI2NDk2NDY3MDljMjNmMGRiOWNmYWU0
Yjg2M2MyNDdiMzY5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVp
bGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gZmls
dGVyLnRhcmdldEJvdW5kaW5nQm94KCk7CiAKICAgICAvLyBBZGQgZWZmZWN0cyB0byB0aGUgYnVp
bGRlcgotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRl
cj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOworICAgIGF1dG8gYnVpbGRlciA9IG1h
a2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikp
OwogICAgIGJ1aWxkZXItPnNldFByaW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQoKS5wcmltaXRp
dmVVbml0cygpKTsKICAgICBidWlsZGVyLT5zZXRUYXJnZXRCb3VuZGluZ0JveCh0YXJnZXRCb3Vu
ZGluZ0JveCk7CiAgICAgCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVu
ZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBbHJlYWR5IGJ1aWx0LCBvciB3ZSdyZSBpbiBh
IGN5Y2xlLCBvciB3ZSdyZSBtYXJrZWQgZm9yIHJlbW92YWwuIFJlZ2FyZGxlc3MsIGp1c3QgZG8g
bm90aGluZyBtb3JlIG5vdy4KICAgICB9CiAKLSAgICBhdXRvIGZpbHRlckRhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZpbHRlckRhdGE+KCk7CisgICAgYXV0byBmaWx0ZXJEYXRhID0gbWFrZVVuaXF1
ZTxGaWx0ZXJEYXRhPigpOwogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9IHJlbmRl
cmVyLm9iamVjdEJvdW5kaW5nQm94KCk7CiAKICAgICBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzID0g
U1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJFbGVtZW50PigmZmls
dGVyRWxlbWVudCgpLCBmaWx0ZXJFbGVtZW50KCkuZmlsdGVyVW5pdHMoKSwgdGFyZ2V0Qm91bmRp
bmdCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggZDhhZDA4MDQ2NmM1YzZkOWVlY2YwNzhj
ZGZmNjQyNmM2MTRhMGNlMi4uNTUyY2U1YTMzYTgwNjJlNmJlZTBiMDRhZTNmMTYwZjA5OWViNTJm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBSZW4KIAogICAgIGF1dG8mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRk
KCZyZW5kZXJlciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZ3JhZGllbnRE
YXRhKQotICAgICAgICBncmFkaWVudERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYWRpZW50RGF0
YT4oKTsKKyAgICAgICAgZ3JhZGllbnREYXRhID0gbWFrZVVuaXF1ZTxHcmFkaWVudERhdGE+KCk7
CiAKICAgICBib29sIGlzUGFpbnRpbmdUZXh0ID0gcmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRl
clNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1RleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IGFh
NTc2NWVkMzc5YjZhYjFiOTQ0NzI2ZjViNWVlNDU0MzgzYzQ2NGUuLjRjODE5YjliYzU1ZGMyYmZh
ODJmYmJjMDk3ZjYzNzU4NWI1YjEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBib29sIG1pc3NpbmdNYXNrZXJEYXRh
ID0gIW1fbWFza2VyLmNvbnRhaW5zKCZyZW5kZXJlcik7CiAgICAgaWYgKG1pc3NpbmdNYXNrZXJE
YXRhKQotICAgICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBzdGQ6Om1ha2VfdW5pcXVlPE1h
c2tlckRhdGE+KCkpOworICAgICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBtYWtlVW5pcXVl
PE1hc2tlckRhdGE+KCkpOwogCiAgICAgTWFza2VyRGF0YSogbWFza2VyRGF0YSA9IG1fbWFza2Vy
LmdldCgmcmVuZGVyZXIpOwogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RD
b29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCAyOWU4ZTdjMjQ3NTY1
ODc5MmVlNGVkNGVkMDgyMGZhZWVjOWJkYzBjLi5kZjAxN2JhMWJmYzBjY2Y3YWVhOTNhM2JiMmY3
ZmM3ODhmNjk2Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogc3RydWN0IE1hc2tlckRhdGEgewor
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBjYzJj
YmZjZjBmZTlhNTllY2UxNWY1MmYzNTcyZGI1OWQxNjMyMGQ2Li4zMWJjNWYxOTMxYmRhZTUwYWFj
NjYxMzU5ZmMwYTI2ZjE3ODU4NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTcsNyArMTE3
LDcgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJu
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIGF1dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhdHRlcm5EYXRhPigpOworICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVl
PFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3Jl
YXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgLy8g
Q29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCAzNGIwYWU3NWJkYzAwNTY1
NzZkNTEzODAxODVlZmU2YmM3MmM3MDZlLi42YTY3MTE4ZmYxYjI1OGIzMDNjOTU2Mzg1OTNmNDc0
ZWU4OWJiZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmNwcApAQCAtNzksNyArNzksNyBAQCBSZW5kZXJTVkdTaGFwZTo6flJlbmRlclNWR1No
YXBlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21F
bGVtZW50KCkKIHsKLSAgICBtX3BhdGggPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KHBhdGhGcm9t
R3JhcGhpY3NFbGVtZW50KCZncmFwaGljc0VsZW1lbnQoKSkpOworICAgIG1fcGF0aCA9IG1ha2VV
bmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7
CiAgICAgcHJvY2Vzc01hcmtlclBvc2l0aW9ucygpOwogCiAgICAgbV9maWxsQm91bmRpbmdCb3gg
PSBjYWxjdWxhdGVPYmplY3RCb3VuZGluZ0JveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4IGJmNzg2NDQzZGRkNjBkNjIxYmNkNTc5Yjg3
NzBlZGNkOTFkMjlmYTkuLjljNzM3Y2FmZjhiOTI3NmNjNDEwNjAyZjU3OWE5ZjM2NGU1YTA4Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAg
LTUwOCw3ICs1MDgsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcihSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIpCiAgICAgQVNTRVJUKGNsaXBwZXItPnJlc291cmNlVHlw
ZSgpID09IENsaXBwZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJN
YXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmls
dGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAK
ICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyID0gY2xpcHBlcjsKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTUyOSw3ICs1MjksNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0Rmls
dGVyKFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCiAgICAgQVNTRVJUKGZpbHRlci0+
cmVzb3VyY2VUeXBlKCkgPT0gRmlsdGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1f
Y2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyID0gZmlsdGVy
OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2Vz
OjpzZXRNYXJrZXJTdGFydChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQpCiAg
ICAgQVNTRVJUKG1hcmtlclN0YXJ0LT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5
cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFr
ZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9
IG1hcmtlclN0YXJ0OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wg
U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJNaWQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtl
ck1pZCkKICAgICBBU1NFUlQobWFya2VyTWlkLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNv
dXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRh
ID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJN
aWQgPSBtYXJrZXJNaWQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01OTIsNyArNTkyLDcgQEAgYm9v
bCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFy
a2VyRW5kKQogICAgIEFTU0VSVChtYXJrZXJFbmQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJl
c291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRh
dGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtl
ckVuZCA9IG1hcmtlckVuZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBi
b29sIFNWR1Jlc291cmNlczo6c2V0TWFza2VyKFJlbmRlclNWR1Jlc291cmNlTWFza2VyKiBtYXNr
ZXIpCiAgICAgQVNTRVJUKG1hc2tlci0+cmVzb3VyY2VUeXBlKCkgPT0gTWFza2VyUmVzb3VyY2VU
eXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1h
c2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5p
cXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YS0+bWFza2VyID0gbWFza2VyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjM2LDcgKzYz
Niw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWxsKFJlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyKiBmaWxsKQogICAgICAgICAgICB8fCBmaWxsLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxH
cmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAg
ICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigp
OworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4o
KTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPmZpbGwgPSBmaWxsOwogICAgIHJldHVybiB0cnVl
OwpAQCAtNjU5LDcgKzY1OSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UoUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIqIHN0cm9rZSkKICAgICAgICAgICAgfHwgc3Ryb2tlLT5yZXNv
dXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1f
ZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVu
aXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSA9
IHN0cm9rZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXggMTkxOTVhYTFkYWJjNjZlNGIzNTY1
OTcyZWM5MWY4OTQ3N2Y0MDM5Yi4uMWVlYjc4ZjU3YjNlYmIzMWI0Y2RlOGU1MzAyZGRlMDllMDQ4
YzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJj
ZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJj
ZXNDYWNoZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6YWRk
UmVzb3VyY2VzRnJvbVJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdAogICAg
IEFTU0VSVCghbV9jYWNoZS5jb250YWlucygmcmVuZGVyZXIpKTsKIAogICAgIC8vIEJ1aWxkIGEg
bGlzdCBvZiBhbGwgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFzc2VkIFJlbmRlck9i
amVjdAotICAgIGF1dG8gbmV3UmVzb3VyY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJj
ZXM+KCk7CisgICAgYXV0byBuZXdSZXNvdXJjZXMgPSBtYWtlVW5pcXVlPFNWR1Jlc291cmNlcz4o
KTsKICAgICBpZiAoIW5ld1Jlc291cmNlcy0+YnVpbGRDYWNoZWRSZXNvdXJjZXMocmVuZGVyZXIs
IHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggMzI0MTAyNTg0YzFm
MTEzZDBlZWQzMzIxNGE2N2Y1NTM0YWIwZjU5YS4uODEwYTBiODgwYThhYTRkYWUwMmZhYjQ0NmE5
NDFlZGQ5YzVhNzFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZH
VGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVy
KFJlbmRlclNWR0lubGluCiAgICAgaWYgKG1faXNDb21wbGV4VGV4dCkKICAgICAgICAgbV9zaW1w
bGVXaWR0aEl0ZXJhdG9yID0gbnVsbHB0cjsKICAgICBlbHNlCi0gICAgICAgIG1fc2ltcGxlV2lk
dGhJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2lkdGhJdGVyYXRvcj4oJnNjYWxlZEZvbnQs
IG1fcnVuKTsKKyAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXaWR0
aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4pOwogfQogCiBzdHJ1Y3QgTWVhc3VyZVRleHRE
YXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGQzN2JlZThjYmNlNTU2MTUxMWIyNGUzNjRlMWFmNjRh
YWQ3YWE3NWQuLmU2YjI3MzIwZDkyZmU4NTZkODM3NDEwOGVkOTU0MmUwOTFlZWFmNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyLmNwcApAQCAtMTIyLDIyICsxMjIsMjIgQEAgc3RhdGljIHZvaWQgZ2V0SW5saW5lUnVu
KFJlbmRlck9iamVjdCogc3RhcnQsIFJlbmRlck9iamVjdCogYm91bmRhcnksIFJlbmRlck9iamUK
IAogUmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKFJlbmRlclZpZXcmIHZpZXcp
CiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKLSAgICAsIG1fbGlzdEJ1aWxkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxMaXN0PigqdGhpcykpCi0gICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihzdGQ6
Om1ha2VfdW5pcXVlPE11bHRpQ29sdW1uPigqdGhpcykpCi0gICAgLCBtX3RhYmxlQnVpbGRlcihz
dGQ6Om1ha2VfdW5pcXVlPFRhYmxlPigqdGhpcykpCi0gICAgLCBtX3J1YnlCdWlsZGVyKHN0ZDo6
bWFrZV91bmlxdWU8UnVieT4oKnRoaXMpKQotICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKHN0
ZDo6bWFrZV91bmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrQnVpbGRl
cihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrRmxvd0J1aWxk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKLSAgICAsIG1faW5saW5lQnVp
bGRlcihzdGQ6Om1ha2VfdW5pcXVlPElubGluZT4oKnRoaXMpKQotICAgICwgbV9zdmdCdWlsZGVy
KHN0ZDo6bWFrZV91bmlxdWU8U1ZHPigqdGhpcykpCisgICAgLCBtX2ZpcnN0TGV0dGVyQnVpbGRl
cihtYWtlVW5pcXVlPEZpcnN0TGV0dGVyPigqdGhpcykpCisgICAgLCBtX2xpc3RCdWlsZGVyKG1h
a2VVbmlxdWU8TGlzdD4oKnRoaXMpKQorICAgICwgbV9tdWx0aUNvbHVtbkJ1aWxkZXIobWFrZVVu
aXF1ZTxNdWx0aUNvbHVtbj4oKnRoaXMpKQorICAgICwgbV90YWJsZUJ1aWxkZXIobWFrZVVuaXF1
ZTxUYWJsZT4oKnRoaXMpKQorICAgICwgbV9ydWJ5QnVpbGRlcihtYWtlVW5pcXVlPFJ1Ynk+KCp0
aGlzKSkKKyAgICAsIG1fZm9ybUNvbnRyb2xzQnVpbGRlcihtYWtlVW5pcXVlPEZvcm1Db250cm9s
cz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9jaz4oKnRoaXMp
KQorICAgICwgbV9ibG9ja0Zsb3dCdWlsZGVyKG1ha2VVbmlxdWU8QmxvY2tGbG93PigqdGhpcykp
CisgICAgLCBtX2lubGluZUJ1aWxkZXIobWFrZVVuaXF1ZTxJbmxpbmU+KCp0aGlzKSkKKyAgICAs
IG1fc3ZnQnVpbGRlcihtYWtlVW5pcXVlPFNWRz4oKnRoaXMpKQogI2lmIEVOQUJMRShNQVRITUwp
Ci0gICAgLCBtX21hdGhNTEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxNYXRoTUw+KCp0aGlzKSkK
KyAgICAsIG1fbWF0aE1MQnVpbGRlcihtYWtlVW5pcXVlPE1hdGhNTD4oKnRoaXMpKQogI2VuZGlm
Ci0gICAgLCBtX2NvbnRpbnVhdGlvbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRp
b24+KCp0aGlzKSkKKyAgICAsIG1fY29udGludWF0aW9uQnVpbGRlcihtYWtlVW5pcXVlPENvbnRp
bnVhdGlvbj4oKnRoaXMpKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVs
bFNjcmVlbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCisgICAg
LCBtX2Z1bGxTY3JlZW5CdWlsZGVyKG1ha2VVbmlxdWU8RnVsbFNjcmVlbj4oKnRoaXMpKQogI2Vu
ZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNfY3VycmVudCB8fCAmbV92aWV3ICE9ICZzX2N1
cnJlbnQtPm1fdmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCBmNDJiY2EzYjM0NjllNmQ1NmU2YTRk
N2I5NDQ1ZTE2N2IxMTExYjJiLi4yNjg1NDRhMWU2NWJmYTNkMzhmNDNlYjViYmNlNGVlZWNhYWM0
NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUmVuZGVyVHJlZVVwZGF0ZXI6
OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBk
YXRlcyoKIAogUmVuZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKERvY3VtZW50JiBk
b2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2dlbmVyYXRlZENv
bnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCisgICAgLCBt
X2dlbmVyYXRlZENvbnRlbnQobWFrZVVuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCiAg
ICAgLCBtX2J1aWxkZXIocmVuZGVyVmlldygpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Vz
ZXJJbnB1dEJyaWRnZS5oCmluZGV4IDdmZTdmNjg3MzIwNDEwZWYwNDgzODdkNDgxZjkyN2IxMmMy
MzgzYWMuLmI5YzcyZWI4ODBlOWJiODc1OThmNDE0NDA3N2QwMjMwMTY2NjViODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBj
bGFzcyBJbnB1dFNvdXJjZSB7CiB9OwogCiBjbGFzcyBVc2VySW5wdXRCcmlkZ2UgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJJbnB1
dEJyaWRnZSk7CiBwdWJsaWM6CiAgICAgVXNlcklucHV0QnJpZGdlKFBhZ2UmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggZGFlMTFjYjJmNjI4OTkxODQ1
M2ExMjgwOWFlNDNiODEyNGI2YjEyYi4uNmQ2OTVhNjYwZDBlNGUwNDVhMjZkYWJlMzMzMWVjYTI2
ZmFkMmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkRGlydHlBbGxTdHlsZShjb25zdCBWZWN0
b3I8U3R5bGVTaGVldENvbnRlbnRzKj4mIHNoZWV0cykKIH0KIAogSW52YWxpZGF0b3I6OkludmFs
aWRhdG9yKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzLCBjb25zdCBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKQotICAgIDogbV9vd25lZFJ1
bGVTZXQoc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpKQorICAgIDogbV9vd25lZFJ1bGVTZXQo
bWFrZVVuaXF1ZTxSdWxlU2V0PigpKQogICAgICwgbV9ydWxlU2V0KCptX293bmVkUnVsZVNldCkK
ICAgICAsIG1fZGlydGllc0FsbFN0eWxlKHNob3VsZERpcnR5QWxsU3R5bGUoc2hlZXRzKSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAppbmRleCA0ZDgxNDhiNGUzMWQ3
NGQ2YTBhNTE3NTRkZWU1ZWFiODA3NTlhYmFhLi4wNjJkNTk2NGQ3N2VjNWRiODNiM2Y0MWFjYmFh
ODdlZmNlOThkZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCkBA
IC00MCw3ICs0MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZWxhdGlvbnM+IGNvbW1pdFJlbGF0aW9u
c1RvUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zCiAKICAgICBhdXRvIGFwcGVu
ZFN0eWxlUmVsYXRpb24gPSBbJnJlbWFpbmluZ1JlbGF0aW9uc10gKGNvbnN0IFJlbGF0aW9uJiBy
ZWxhdGlvbikgewogICAgICAgICBpZiAoIXJlbWFpbmluZ1JlbGF0aW9ucykKLSAgICAgICAgICAg
IHJlbWFpbmluZ1JlbGF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVsYXRpb25zPigpOworICAg
ICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gbWFrZVVuaXF1ZTxSZWxhdGlvbnM+KCk7CiAg
ICAgICAgIHJlbWFpbmluZ1JlbGF0aW9ucy0+YXBwZW5kKHJlbGF0aW9uKTsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCmluZGV4IDlmMGQxYWQ3NDkwYmZlYWIyNDA3Y2U3
YmM4OGIwOTUxMTZkMGIyMjIuLmRjYjY1YmMwOWMzNDc3OWI2M2EyOTMyNGUyNGQzNzJiZmM2YTIz
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFN0
eWxlUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCiAgICAgaWYgKCFtX3Jlc29sdmVyKSB7CiAg
ICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHsgbV9pc1Vw
ZGF0aW5nU3R5bGVSZXNvbHZlciwgdHJ1ZSB9OwogCi0gICAgICAgIG1fcmVzb2x2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOworICAgICAgICBtX3Jlc29s
dmVyID0gbWFrZVVuaXF1ZTxTdHlsZVJlc29sdmVyPihtX2RvY3VtZW50KTsKIAogICAgICAgICBp
ZiAoIW1fc2hhZG93Um9vdCkgewogICAgICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3Io
KS5idWlsZFN0YXJ0ZWQoKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+PiBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3IoKQog
Ym9vbCBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyhjb25zdCBDU1NTdHlsZVNoZWV0
KiBzaGVldCkgY29uc3QKIHsKICAgICBpZiAoIW1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRM
aXN0Rm9yRmFzdExvb2t1cCkgewotICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0
TGlzdEZvckZhc3RMb29rdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5
bGVTaGVldCo+PigpOworICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZv
ckZhc3RMb29rdXAgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+Pigp
OwogICAgICAgICBmb3IgKGF1dG8mIGFjdGl2ZVN0eWxlU2hlZXQgOiBtX2FjdGl2ZVN0eWxlU2hl
ZXRzKQogICAgICAgICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0
TG9va3VwLT5hZGQoYWN0aXZlU3R5bGVTaGVldC5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDg0NmEyMzFhZDJiMThiNWQ3ZjI5
NDkwMTZkMDlmMjIzZGQ2OWU4OGIuLmEwMGY0ZmUwZjRjY2I1MmRkODMxYTk0ZTI2YTU4NjRlNWMx
Yjc5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAg
LTU0OCw3ICs1NDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJl
c29sdmUoKQogCiAgICAgbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9IG1fZG9jdW1lbnQuc3R5
bGVTY29wZSgpLmhhc1BlbmRpbmdTaGVldHNCZWZvcmVCb2R5KCk7CiAKLSAgICBtX3VwZGF0ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlPihtX2RvY3VtZW50KTsKKyAgICBtX3VwZGF0ZSA9IG1h
a2VVbmlxdWU8VXBkYXRlPihtX2RvY3VtZW50KTsKICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKGFk
b3B0UmVmKCpuZXcgU2NvcGUobV9kb2N1bWVudCkpKTsKICAgICBtX3BhcmVudFN0YWNrLmFwcGVu
ZChQYXJlbnQobV9kb2N1bWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuY3BwCmluZGV4IGJjNTE0MzRiMGIyYjhlMGJmNzdlNTdhNGE3NmU0ZDRiY2Vl
ZTk5NjUuLjI1ZjM4NjNkMDc5NTRhYzhkNmE2M2U2ODY0YTFmMDc2YjBkNTFhZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1
bWVudEV4dGVuc2lvbnMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1
bWVudCkKLSAgICAsIG1fcmVzb3VyY2VzQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJj
ZXNDYWNoZT4oKSkKKyAgICAsIG1fcmVzb3VyY2VzQ2FjaGUobWFrZVVuaXF1ZTxTVkdSZXNvdXJj
ZXNDYWNoZT4oKSkKICAgICAsIG1fYXJlQW5pbWF0aW9uc1BhdXNlZCghZG9jdW1lbnQucGFnZSgp
IHx8ICFkb2N1bWVudC5wYWdlKCktPmlzVmlzaWJsZSgpKQogewogfQpAQCAtMTQ2LDcgKzE0Niw3
IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3Qg
QXRvbVN0cmluZyYgaWQsIEVsZW1lbnQmIGVsCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGlu
Z1Jlc291cmNlcy5hZGQoaWQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkK
LSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGlu
Z0VsZW1lbnRzPigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxQZW5kaW5nRWxlbWVudHM+KCk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZl
bGVtZW50KTsKIAogICAgIGVsZW1lbnQuc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpOwpAQCAtMjc5
LDcgKzI3OSw3IEBAIEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OnNldE9mRWxlbWVudHNSZWZlcmVuY2luZ1RhcmdldChTVkdFCiB2b2lkIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQmIHJlZmVyZW5j
aW5nRWxlbWVudCwgU1ZHRWxlbWVudCYgcmVmZXJlbmNlZEVsZW1lbnQpCiB7CiAgICAgYXV0byBy
ZXN1bHQgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZW5zdXJlKCZyZWZlcmVuY2VkRWxlbWVudCwg
WyZyZWZlcmVuY2luZ0VsZW1lbnRdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNldDxTVkdFbGVtZW50Kj4+KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4g
eyAmcmVmZXJlbmNpbmdFbGVtZW50IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNo
U2V0PFNWR0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZy
ZWZlcmVuY2luZ0VsZW1lbnQgfSk7CiAgICAgfSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZyZWZlcmVuY2luZ0VsZW1l
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGE4MDk2ZGRhZGE4MWVhZDZhN2Ex
ZWEzMjRjZDg1MDY3ZjVjMGIyOGIuLmU0ZGUzYjc0OWYwYTAwMzliYzVjNGNmY2QwOGUxOTM5NmNk
NjU2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBz
dGF0aWMgTkVWRVJfSU5MSU5FIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlE
PiBjcmVhdGVBdHRyaWJ1dGVOYW1lVAogU1ZHRWxlbWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTdHlsZWRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVTVkdFbGVtZW50KQogICAgICwgU1ZHTGFuZ1Nw
YWNlKHRoaXMpCi0gICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KHN0ZDo6bWFrZV91bmlx
dWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCisgICAgLCBtX3Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5KG1ha2VVbmlxdWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCiB7CiAg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VGbGFnLCBbXSB7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdFbGVtZW50Ojp3aWxsUmVj
YWxjU3R5bGUoU3R5bGU6OkNoYW5nZSBjaGFuZ2UpCiBTVkdFbGVtZW50UmFyZURhdGEmIFNWR0Vs
ZW1lbnQ6OmVuc3VyZVNWR1JhcmVEYXRhKCkKIHsKICAgICBpZiAoIW1fc3ZnUmFyZURhdGEpCi0g
ICAgICAgIG1fc3ZnUmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0
YT4oKTsKKyAgICAgICAgbV9zdmdSYXJlRGF0YSA9IG1ha2VVbmlxdWU8U1ZHRWxlbWVudFJhcmVE
YXRhPigpOwogICAgIHJldHVybiAqbV9zdmdSYXJlRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBhNzU4OTBmMzE4MDQ2OGQxNTI0YmVlODU0
MzU5ZDAzNTZlYjUyMjJkLi44MGVjN2ZjODYyOTJiNjNiYmJhODUxZTExZTEwNmZhMTUyZjkxNDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTE5LDcg
KzExOSw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9j
YWxUcmFuc2Zvcm0oKSBjb25zdAogQWZmaW5lVHJhbnNmb3JtKiBTVkdHcmFwaGljc0VsZW1lbnQ6
OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1lbnRhbFRyYW5z
Zm9ybSkKLSAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PEFmZmluZVRyYW5zZm9ybT4oKTsKKyAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBt
YWtlVW5pcXVlPEFmZmluZVRyYW5zZm9ybT4oKTsKICAgICByZXR1cm4gbV9zdXBwbGVtZW50YWxU
cmFuc2Zvcm0uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoQnl0ZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgK
aW5kZXggNmYwYWNhY2YxOWVlODUwZGI0ZTY5MTBkM2U4M2QyNjQ5NGQ2N2ViMC4uNDM0ZDkxZWIz
ZGY4YWQ4NzlmODM5YTQ4OTY2ODY3ODBiNDA5ZjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhCeXRlU3RyZWFtLmgKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW0g
ewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5KCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFt
PigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigq
dGhpcyk7CiAgICAgfQogCiAgICAgRGF0YUl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmJlZ2luKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU01JTFRpbWVDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
TUlMVGltZUNvbnRhaW5lci5jcHAKaW5kZXggZTA0MjNjZTk4MTVmYTBmMjU1NjNhM2I1NDMxNDA4
NmFjMzU2ZmY0NC4uM2ViNTdhZDJmMjFkZmE2NGI5YjExODAxZjQyNzI4MzYwMmI3NWI3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUoU1ZH
U01JTEVsZW1lbnQqIGFuaW1hdGlvbiwgU1ZHRWxlbWVudCogdGFyZ2V0LAogICAgIEVsZW1lbnRB
dHRyaWJ1dGVQYWlyIGtleSh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUpOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBbmltYXRpb25zVmVjdG9yPiYgc2NoZWR1bGVkID0gbV9zY2hlZHVsZWRBbmltYXRpb25z
LmFkZChrZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNjaGVkdWxlZCkK
LSAgICAgICAgc2NoZWR1bGVkID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigp
OworICAgICAgICBzY2hlZHVsZWQgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbnNWZWN0b3I+KCk7CiAg
ICAgQVNTRVJUKCFzY2hlZHVsZWQtPmNvbnRhaW5zKGFuaW1hdGlvbikpOwogICAgIHNjaGVkdWxl
ZC0+YXBwZW5kKGFuaW1hdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCmluZGV4IDQwZWU5OTE1NTg1ZWNhOWExMDA0NGI5ZTMzMGM4NzUyODBjMjUxZTcuLjNi
MjdkMDYwOGJmOTBmZGFhMGU1YjE1NjAwZWE0YWQ1ZmUxMzRkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVuY29kZWREYXRh
U3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAg
IGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9
IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwotICAgICAgICBtX2Nocm9tZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOworICAg
ICAgICBtX2Nocm9tZUNsaWVudCA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRo
aXMpOwogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBtX2Nocm9tZUNs
aWVudC5nZXQoKTsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2Fk
aW5nIGl0c2VsZiwgd2UgbWlnaHQgbGVhayB0aGUgd29ybGQuCkBAIC00NjYsNyArNDY2LDcgQEAg
RW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogICAgICAgICAvLyBUaGlzIHdpbGwgYmVjb21lIGFuIGlzc3VlIHdoZW4gU1ZHSW1hZ2Ug
d2lsbCBiZSBhYmxlIHRvIGxvYWQgb3RoZXIKICAgICAgICAgLy8gU1ZHSW1hZ2Ugb2JqZWN0cywg
YnV0IHdlJ3JlIHNhZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdlIGNhbiBvbmx5IGJlCiAgICAgICAg
IC8vIGxvYWRlZCBieSBhIHRvcC1sZXZlbCBkb2N1bWVudC4KLSAgICAgICAgbV9wYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgICAg
IG1fcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwog
ICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICAg
ICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBt
X3BhZ2UtPnNldHRpbmdzKCkuc2V0UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmlu
ZGV4IGQ5NzAzMDJhZGY4NjU4NTUwOWM2NTA4ZDUwNDk1MmEyNTUzMjM2MmIuLmM3N2FlMDhiYWM2
NWMzYzJjZmM4OTc0ZmEzM2U3NjQ2MGNlOTdmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTMzLDYgKzMz
LDcgQEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xh
c3MgU1ZHRmlsdGVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBIYXNoU2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRE
ZWNvcmF0ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IGU1ZWZhYWVhNzExMWJjNmM5NTdkOTcyZDc0
NTQ4ZGU5MmQ4YTEzM2UuLmNlYmFhMzYzYmY1MjdiYmIzOGU1NjdkM2UzZDQyYmY4NDMxMDJhNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVj
b3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU1ZHQW5p
bWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eSA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5IHsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVy
dHkgPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PgogICAgIHN0YXRpYyBSZWY8QW5pbWF0
ZWRQcm9wZXJ0eT4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVu
dCwgc3RkOjptYWtlX3VuaXF1ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZSwgUHJv
cGVydHlUeXBlPj4oKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFBy
b3BlcnR5KGNvbnRleHRFbGVtZW50LCBtYWtlVW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29y
YXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgUHJvcGVydHlUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0
ZWREZWNvcmF0ZWRQcm9wZXJ0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXggYWE2MWJmZjQz
NDQ4OGNhNjc0YjA0ODg5ZWM3NDU4YTMzNjAyMGI4ZC4uZTAyMzRmMzU5MTI5Mjk1NzljZjNlMmIx
NjgwOTQyNTI4ZjA3YWExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTMzLDYgKzMzLDcg
QEAgY2xhc3MgU1ZHRWxlbWVudDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0
eSwgdHlwZW5hbWUgQW5pbWF0aW9uRnVuY3Rpb24+CiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5
QW5pbWF0b3IgOiBwdWJsaWMgU1ZHQXR0cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIEFuaW1hdG9yQW5pbWF0ZWRQcm9wZXJ0
eSA9IEFuaW1hdGVkUHJvcGVydHk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRl
eCAyODg3NDFiMTI5MDVjYjg1MTQzMDU0MDkwYzRlMmM5MTM5YjM1YmYzLi5kMDczN2FjYmEzMzFm
ZTEyMzQ3YjgzNGZmN2FhMzAxMDBhZDE1NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1w
bC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZEFuZ2xlPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0
aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRB
bmdsZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5B
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQQog
CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmlt
YXRlZEJvb2xlYW5BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODksNyArODksNyBAQCBjbGFzcyBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG9yPAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4mIGFuaW1hdGVk
LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlz
QWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVk
RW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdl
ckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdB
CiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wg
aXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Fu
aW1hdGVkSW50ZWdlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgU1ZHQW5p
bWF0ZWRMZW5ndGhBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3I8U1ZHQW4KIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3Ro
TW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNzIFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjxTCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE3Miw3ICsxNzIsNyBA
QCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1i
ZXI+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51
bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTE4OSw3ICsxODksNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0
aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yMDYsNyArMjA2LDcgQEAgY2xhc3MgU1ZH
QW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvcjwKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3Q+JiBh
bmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwg
Ym9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUGF0
aFNlZ0xpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0yMjQsNyArMjI0LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1YKIHB1YmxpYzoKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR0FuaW1hdGVkUG9pbnRMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjQzLDcgKzI0Myw3IEBAIGNsYXNzIFNW
R0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvcjxTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBh
bmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwg
Ym9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRPcmll
bnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpA
QCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0Fu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBCiBwdWJsaWM6CiAgICAg
c3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJl
ZjxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
MjgxLDcgKzI4MSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltCiAKICAgICBzdGF0aWMgYXV0
byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1h
dGVkUmVjdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRl
ZFJlY3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC0yOTgsNyArMjk4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoKICAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR0FuaW1hdGVkU3RyaW5nPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9k
ZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRTdHJp
bmdBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC0zMzgsNyArMzM4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG8K
IHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4mIGFuaW1hdGVkLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFp
ckFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5UGFpckFuaW1hdG9yLmgKaW5kZXggYzcyM2FjZmYyNjA2MDFhMWU1MGQzMjY5NWFlM2Nl
OGM5MjYwMjUxNS4uYzg5MDUwMTY5ZDNjMWE0MzNhYjdhMjdiYTFhZWNlYTMyZGJiNWY4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVBhaXJBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3IuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBTVkdF
bGVtZW50OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLCB0
eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyPgogY2xhc3MgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVBhaXJBbmltYXRvciA6IHB1YmxpYyBTVkdBdHRyaWJ1dGVBbmltYXRvciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgQW5pbWF0ZWRQcm9wZXJ0
eTEgPSB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxOjpBbmltYXRvckFuaW1hdGVk
UHJvcGVydHk7CiAgICAgdXNpbmcgQW5pbWF0ZWRQcm9wZXJ0eTIgPSB0eXBlbmFtZSBBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3IyOjpBbmltYXRvckFuaW1hdGVkUHJvcGVydHk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFu
aW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaAppbmRleCA0ZWRhMzRjOWIxODg4ZmZkNmQzZDY2MzJj
ZjBjZjZkMzNhNmZhOWUxLi4zOTdmZjA5MTU5NDAwZDMzYzA1MmIxMWQ4MjhjYjhlMzdiM2M4MDUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKQEAgLTQwLDcgKzQwLDcg
QEAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNW
R0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5n
bGU+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZDIsIEFu
aW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1
bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFu
Z2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdl
clBhaXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1h
CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdB
bmltYXRlZEludGVnZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2Vy
UGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTU2LDcgKzE1
Niw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZE51bWJlcj4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQyLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51
bWJlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuaAppbmRleCA2NGE2NWIxODYyZmZiOTY5NjAzYzcxNTYwN2I1NDRm
NTU2ZTAwODNhLi4wMjJlZGVkYTgyMWI1MzM1NWIzZmRkMzk1OGYyNDM2ODAxOWFhZDdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1h
dG9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBDYWxjTW9kZSA6IHVpbnQ4X3Qgewog
fTsKIAogY2xhc3MgU1ZHQXR0cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0
ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNv
cmF0ZWRFbnVtZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVj
b3JhdGVkRW51bWVyYXRpb24uaAppbmRleCAyNjRjMzZiNjkwNzRjY2YzZTJlMjlkMjY3NzIxY2Y1
Mzc0NTcwMzExLi5hMzVlMjUwYTliMTUxZjllODk3Zjg1ZjYzNjdjMzg3ZGJiM2NhNTU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVu
dW1lcmF0aW9uLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHRGVjb3JhdGVkRW51bWVyYXRp
b24gOiBwdWJsaWMgU1ZHRGVjb3JhdGVkUHJpbWl0aXZlPERlY29yYXRpb25UeXBlLCBFbnUKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRW51bVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPERlY29yYXRpb25UeXBlPjo6dmFsdWUs
ICJEZWNvcmF0aW9uVHlwZSBmb3JtIGVudW0gc2hvdWxkIGJlIGludGVncmFsLiIpOwotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFs
dWUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByaW1pdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmgKaW5kZXggZTJhNTI0MzEyNGYwNzNmODVh
ZDhkZDZhOTZkZjRhNjUzNTBiNjdjOC4uOWI2NjEyN2JjNTllMmY1MWYwMTAxOTIxNmZhMmQ1NjIx
NTNjYTdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVj
b3JhdGVkUHJpbWl0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
RGVjb3JhdGVkUHJpbWl0aXZlLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvcmF0aW9uVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlU
eXBlPgogY2xhc3MgU1ZHRGVjb3JhdGVkUHJpbWl0aXZlIDogcHVibGljIFNWR0RlY29yYXRlZFBy
b3BlcnR5PERlY29yYXRpb25UeXBlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgdXNpbmcgQmFzZSA9IFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlPjsKIAog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCmluZGV4IDQxMjE3MjIwYmRmY2ZlZmY2N2Mx
NjA5MTNhZDE0ZDZiOTliYTE0MmMuLjY4YjJlMGIxMTM3YWRlOGQzN2Y4MGUwZTI5OGI1ZGUyNGQw
MWE4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1p
dGl2ZVByb3BlcnR5QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3Mg
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvciA6IHB1YmxpYyBTVkdQcm9wZXJ0eUFuaW1hdG9y
PEFuaW1hdGlvbkZ1bmN0aW8KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5
LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlz
QWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1ByaW1pdGl2ZVBy
b3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5o
CmluZGV4IGFkNTBkNDIzNjI5Njk0MmQxZGM4NzE4YTJkYThlNmFkZjhkMWJjY2IuLjVlMzAxOGY1
YTQwMmE5YzdmMTI5ZDQxZDQxOWFjNWU5NDlmZWUwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaApA
QCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQcm9wZXJ0
eUFuaW1hdG9yRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRv
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlB
bmltYXRvckltcGwuaAppbmRleCAxMTg4ODZjNGY4YmI3MjM2YTQ0NmZmYWQwMzg2OWZmMGIwZGNk
ZTk1Li5mZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEyODc5YTdlZGJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0
eUFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aEFuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0Fu
CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBh
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29s
IGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdM
ZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3Ro
ZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZv
aWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0
b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5
TGlzdEFuaW1hdG9ySW1wbC5oCmluZGV4IDVlZThhYzNkMGY0ZTEyYzYyYTVlZmMwMGZmNTNiNTkw
ZTQwMGYzNjguLmFlOTRlMjllZDRiODYxM2I5OWNkOTc0ODZlZDBiMDYyODI2YzAyZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0
QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFs
dWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdM
ZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmlt
YXRvcjxTVkdMZW5ndAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFu
aW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1
bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHBy
b3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0
aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3Ro
ZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkg
b3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmlu
ZGV4IGMxMTMxZDI1YjM4OGJiYTgzNjY1M2QyOTcwOGU2YTViYmU0YmRmYzQuLjI0Mzc4OWJiOWQy
NzlhNmU4NTNlMDg2NDRiNjRiZWU4NTFlNWVlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMjMxLDYgKzIzMSw3IEBAIHZvaWQgSW50ZXJuYWxT
ZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogfQogCiBjbGFz
cyBJbnRlcm5hbFNldHRpbmdzV3JhcHBlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnRlcm5h
bFNldHRpbmdzV3JhcHBlcihQYWdlKiBwYWdlKQogICAgICAgICA6IG1faW50ZXJuYWxTZXR0aW5n
cyhJbnRlcm5hbFNldHRpbmdzOjpjcmVhdGUocGFnZSkpIHsgfQpAQCAtMjUyLDcgKzI1Myw3IEBA
IGNvbnN0IGNoYXIqIEludGVybmFsU2V0dGluZ3M6OnN1cHBsZW1lbnROYW1lKCkKIEludGVybmFs
U2V0dGluZ3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFnZSogcGFnZSkKIHsKICAgICBpZiAo
IVN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpCi0gICAgICAg
IFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBzdGQ6
Om1ha2VfdW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CisgICAgICAgIFN1
cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5p
cXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEludGVybmFsU2V0dGluZ3NXcmFwcGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdl
LCBzdXBwbGVtZW50TmFtZSgpKSktPmludGVybmFsU2V0dGluZ3MoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUxNzhiNDk2ODU4NzU1MWJmMDcwNGQ4MzAyMDU2
MmRkMTJkZjRlYmIuLjYyZTczNDlhMWNhMTY2MmQwNjJjNjA3OTM4OTJmYzcwZmY2MDU4MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCBjbGFz
cyBJbnNwZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbCwgcHVibGljCiB9OwogCiBJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3Rv
clN0dWJGcm9udGVuZChQYWdlJiBpbnNwZWN0ZWRQYWdlLCBSZWZQdHI8RE9NV2luZG93PiYmIGZy
b250ZW5kV2luZG93KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVj
dGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kV2luZG93LT5kb2N1bWVudCgp
LT5wYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
U2V0dGluZ3M+KCkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0
ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCkt
PnBhZ2UoKSwgbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5n
cz4oKSkKICAgICAsIG1fZnJvbnRlbmRXaW5kb3coZnJvbnRlbmRXaW5kb3cuY29weVJlZigpKQog
ewogICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRXaW5kb3csIGZyb250ZW5kV2luZG93KTsKQEAgLTU2
Nyw3ICs1NjcsNyBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFt
ZS0+cGFnZSgpICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGF1dG8gbW9ja1Bh
eW1lbnRDb29yZGluYXRvciA9IG5ldyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKCpmcmFtZS0+cGFn
ZSgpKTsKLSAgICAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6
bWFrZV91bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqbW9ja1BheW1lbnRDb29yZGluYXRvcikp
OworICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1
ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CiAgICAgfQog
I2VuZGlmCiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxlTW9j
a1NwZWVjaFN5bnRoZXNpemVyKCkKICAgICBpZiAoIXN5bnRoZXNpcykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOworICAgIHN5bnRo
ZXNpcy0+c2V0UGxhdGZvcm1TeW50aGVzaXplcihtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNb2NrPihzeW50aGVzaXMpKTsKIH0KIAogI2VuZGlmCkBAIC0yNDg5LDcgKzI0ODks
NyBAQCBSZWZQdHI8V2luZG93UHJveHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJv
bnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9IGNvbnRl
eHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0gaW5zcGVj
dGVkUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgYXV0byBm
cm9udGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3csIHVybCwg
IiIsICIiKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBk
b3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CisgICAg
bV9pbnNwZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigq
aW5zcGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53
aW5kb3coKSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQogCkBAIC0zMDA5
LDcgKzMwMDksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldFZpZXdFeHBvc2Vk
UmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZgogCiB2b2lkIEludGVybmFsczo6
c2V0UHJpbnRpbmcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIHByaW50Q29udGV4dEZv
clRlc3RpbmcoKSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKKyAg
ICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oZnJh
bWUoKSk7CiAgICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpLT5iZWdpbih3aWR0aCwgaGVpZ2h0
KTsKIH0KIApAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZUF1dG9T
aXplTW9kZShib29sIGVuYWJsZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogdm9pZCBJbnRl
cm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKIHsKLSAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RN
RmFjdG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVn
YWN5TW9ja0NETT4oY2RtKTsgfSwKKyAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShb
XSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5TW9ja0NETT4oY2Rt
KTsgfSwKICAgICAgICAgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeU1v
Y2tDRE06OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpOwogfQogCkBAIC00MjQxLDcgKzQy
NDEsNyBAQCB2b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCiAg
ICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBtaWNyb3Rhc2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tR
dWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICpkb2N1bWVudCwgW2RvY3VtZW50LCB0ZXN0TnVtYmVy
XSgpIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBb
ZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgewogICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmco
Ik1pY3JvVGFzayAjIiwgdGVzdE51bWJlciwgIiBoYXMgcnVuLiIpKTsKICAgICB9KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKaW5kZXggNjQyODdkMjM5YWY1NzNl
OTIwM2QyNTg0MzFiMjczYzdiODc0OTAwNi4uNjAyNzJkMzQ5N2Y0Yjg2NWNkYjAzNzBmZTQxZDNk
NmZiZGU4YjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2Nr
Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBA
IC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDRE1TZXNz
aW9uIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIE1vY2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KTsKICAgICB2aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lvbigpID0gZGVmYXVsdDsKQEAgLTczLDcgKzc0
LDcgQEAgYm9vbCBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2Nr
Q0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogc3RhdGljIFVp
bnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTGVnYWN5TW9ja0NETS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2Nr
Q0RNLmgKaW5kZXggMjRiOWI4MDA4YzRmNTE5YjRhNjY2ZWM2ZDE1MjVhYzYyZWMxYzMwYS4uYjkz
YWViOTNmZjYzMjllNTE1NDdjMTNmZjc2YTY5MmVlNmE3MTg2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9MZWdhY3lNb2NrQ0RNLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTGVnYWN5Q0RNOwogCiBjbGFzcyBMZWdhY3lNb2NrQ0RNIDogcHVibGljIENETVBy
aXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IExlZ2FjeU1vY2tDRE0oTGVnYWN5Q0RNKiBjZG0pCiAgICAgICAgIDogbV9j
ZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA1
Njc5NmVlOTAwYmJmM2I2Y2MwNWNmNmEyMjk2ZWZkNDNiOWVmN2I2Li5jZTVkOGY3ZDZiZGYzOGI1
OTIyMDkzMDJhNmU2ZDcxYjM2OTY2MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNl
dFN1cHBvcnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcm
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0
aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMp
KTsKIH0KIAogTW9ja0NETTo6TW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDMzOTZjZDAyYWQw
MmRkMTRlOTJmMTU3OWUyNzUxNmU2YmMzZjQyOTguLjM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1
ZjRiNjdlNTI1MDU5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgK
QEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBNb2NrQ0RNRmFjdG9yeSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1vY2tDRE1GYWN0b3J5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPAogfTsKIAogY2xhc3Mg
TW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9ja0NE
TT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1vY2tDRE0o
V2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxMTgxZGFlNzJlMTNlMmJiZDE1M2U4MTFjMTQzNjRk
MWNkOGExODcuLjc3OGE5MThhNmI5MDc1NWNiODZkM2FhYTc0Zjc5YjNlNjE4ZDRjOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8TW9ja0NvbnRlbnRGaWx0ZXI+IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE1vY2tDb250ZW50
RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZDNhYzVkODdkMTllMmE4NTM2MWMx
MTU3MmNmMzExZjBjODNiMjQ1Yi4uZDQwZGVkMWRhMTE5OGNhYTM0NTlkNjc3ZTFmZTg0ZjViZmI5
NDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3Zp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgTW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dh
bWVwYWREZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGdhCiAgICAgaWYgKG1f
bW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdKQogICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2lu
ZGV4XS0+dXBkYXRlRGV0YWlscyhnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwog
ICAgIGVsc2UKLSAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNv
dW50KTsKKyAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBtYWtlVW5pcXVlPE1v
Y2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKIH0K
IAogYm9vbCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQg
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNw
cAppbmRleCBkYmU5MDczZDZhZGViZmM1MDE1OWNjMmVkYmIyMjgzY2NkMTdiYTg1Li44ZjE2NDdj
MWYzMjI1MTgxNmM3Y2YwODk2MTgyYWUzNDIzNWM1MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBX
b3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwKIHsKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYXJndW1l
bnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwotICAgIGF1dG8gbWVz
c2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFy
Z3VtZW50cyksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWws
IG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwogICAgIG1fd29ya2VyR2xv
YmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCmluZGV4IGY0M2JkMmE3YTYw
NTkzNzI3YWQwYTZhOTFkZWNkNmViZWM3MjI2ODguLjY5MDNiZTVlYzI1ZmI5MWVmZjc3NzZlNDQ3
NmFkNGVhMmJjZTczMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmNwcApAQCAtNDQsNiArNDQsNyBAQCBXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZlbnRR
dWV1ZSgpCiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlcgogeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEV2ZW50RGlzcGF0Y2hlcihS
ZWZQdHI8RXZlbnQ+JiYgZXZlbnQsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUpCiAgICAg
ICAgIDogbV9ldmVudChXVEZNb3ZlKGV2ZW50KSkKQEAgLTg0LDcgKzg1LDcgQEAgYm9vbCBXb3Jr
ZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvKiBldmVudFB0ciA9IGV2ZW50LnB0cigpOwotICAgIGF1
dG8gZXZlbnREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudERpc3BhdGNoZXI+KFdU
Rk1vdmUoZXZlbnQpLCAqdGhpcyk7CisgICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBtYWtlVW5p
cXVlPEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsKICAgICBtX2V2ZW50
RGlzcGF0Y2hlck1hcC5hZGQoZXZlbnRQdHIsIGV2ZW50RGlzcGF0Y2hlci5nZXQoKSk7CiAgICAg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnBvc3RUYXNrKFtldmVudERpc3BhdGNoZXIgPSBXVEZN
b3ZlKGV2ZW50RGlzcGF0Y2hlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAg
ICBldmVudERpc3BhdGNoZXItPmRpc3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRXZlbnRRdWV1ZS5oCmluZGV4IDYxMTVlZjRhMTM2NTJhNmVhZDEwYWYzN2NmYjQ5NDI4MjBj
M2NiMmIuLmQ4OTczZDViY2FlMTdiOTU1MDA0NGM3ZTgwMTYwNWI5OWQ1NDlhZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNz
IFdvcmtlckV2ZW50UXVldWUgZmluYWwgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV29ya2VyRXZlbnRRdWV1
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+V29ya2VyRXZlbnRRdWV1
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRl
eCA3YmE2ZWRiNTIwOGYyMmMzZjhmMTZkZTI5ZDgyNWI3NzFmNmMzZTllLi5iMTdkNjYzNjNhYzM1
ODBlN2EzNDQwMDgxYTJmN2M2M2EwNzM4NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjIsOSArNjIsOSBAQCBXb3JrZXJHbG9iYWxTY29w
ZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiBvcmlnaQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2Vu
dCh1c2VyQWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNw
ZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cj4oKnRoaXMpKQotICAgICwgbV9taWNyb3Rhc2tRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPE1pY3Jv
dGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdv
cmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVy
KG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9t
aWNyb3Rhc2tRdWV1ZShtYWtlVW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkp
CiAgICAgLCBtX2lzT25saW5lKGlzT25saW5lKQogICAgICwgbV9zaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3koc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5KQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQpAQCAtODYsNyArODYsNyBAQCBX
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxT
ZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICAgICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vz
c0Zyb21GaWxlVVJMc1F1aXJrKCk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1
cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSkpOwotICAgIHNldENvbnRl
bnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4o
VVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFr
ZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiB9
CiAKIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQpAQCAtMzYyLDkgKzM2
Miw5IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAg
ICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
Pihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNr
LnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlw
ZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCBy
ZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpM
b2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywg
bGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
c3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGE3
NWMwMTU2YzU5ZTM4ZGQ5OTlkNmNlYzFkZGVlZGUyM2JlMTg3YjMuLjRlOWY1MTlhZWZlZGQyNWY4
ODNmNjNhY2EwYTQ3ODlmZjAyN2U0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdvcmtlckdsb2JhbFNj
b3BlUHJveHkmIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OmNyZWF0ZShXb3JrZXImIHdvcmtlcikK
IAogV29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciYgd29y
a2VyT2JqZWN0KQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtlck9iamVjdC5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2luc3BlY3RvclByb3h5KHN0ZDo6bWFr
ZV91bmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkp
KQorICAgICwgbV9pbnNwZWN0b3JQcm94eShtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5
Pih3b3JrZXJPYmplY3QuaWRlbnRpZmllcigpKSkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3Jr
ZXJPYmplY3QpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnQKICAgICAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwogICAg
ICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwog
ICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAg
ICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggYmNkOTRl
NmFjMDQwM2FjZDZhNTRiYWM0MWZhYjQxZTViZjU1MjdkYS4uYmZhYzk1OTJkZmFhNzkyMTAwNjVi
MzQ1OWJkMjIxNjE5NTc4NDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxv
b3AuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIE1vZGVQcmVkaWNhdGUgewogfTsKIAogV29y
a2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCgpCi0gICAgOiBtX3NoYXJlZFRpbWVyKHN0ZDo6bWFr
ZV91bmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCisgICAgOiBtX3NoYXJlZFRpbWVyKG1ha2VV
bmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCiB7CiB9CiAKQEAgLTI1MCwxMiArMjUwLDEyIEBA
IHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmIHRhc2spCiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUu
YXBwZW5kQW5kS2lsbChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIGRlZmF1
bHRNb2RlKCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlxdWU8
VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1
bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFz
aywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsKKyAgICBtX21lc3NhZ2VR
dWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9CiAK
IHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrJiYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcAppbmRleCAxOTkxMmYwMjc1ZmVhMTk0ODA1NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1
Li4yMjhmM2QxN2ZmMDAyMmU2MmU2MzY0NTMyZDU1NmI5NTA3YTAxOGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcg
QEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXQKIAogICAgIEFTU0VSVChzY3JpcHRSZXF1ZXN0Lmh0
dHBNZXRob2QoKSA9PSAiR0VUIik7CiAKLSAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CisgICAgYXV0byBy
ZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVz
dCkpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDcsNyArMTQ3
LDcgQEAgY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QK
IAogc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpj
cmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQog
ewotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0Piht
X3VybCk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1f
dXJsKTsKICAgICByZXF1ZXN0LT5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgIHJlcXVlc3Qt
PnNldEluaXRpYXRvcklkZW50aWZpZXIoaW5pdGlhdG9ySWRlbnRpZmllcik7CiAgICAgcmV0dXJu
IHJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggMWY3
NTYxODZhMjBmMDE2OWU0Nzg0Mzk1MWJlZTM2ODdlMDAyNGZiYS4uM2MzODU4YmRhOWI0NGI1N2Zh
ZGIzOWVmYTJlMGEwZjNhMzA0MTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNv
bnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAg
LCBtX3dvcmtlckRlYnVnZ2VyUHJveHkod29ya2VyRGVidWdnZXJQcm94eSkKICAgICAsIG1fd29y
a2VyUmVwb3J0aW5nUHJveHkod29ya2VyUmVwb3J0aW5nUHJveHkpCiAgICAgLCBtX3J1bnRpbWVG
bGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX3N0YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNl
ckFnZW50LCBpc09ubGluZSwgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQorICAgICwgbV9zdGFy
dHVwRGF0YShtYWtlVW5pcXVlPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5h
bWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9k
ZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIHRvcE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lv
bklEKSkKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAsIG1faWRiQ29ubmVjdGlv
blByb3h5KGNvbm5lY3Rpb25Qcm94eSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGIy
ZDI2MTVhMTI2M2QxNjI2NjE4MjAwNDY0OGY5MGVkYTY5MjA2YjUuLjU5YzcxYzRkMTQ3NjI3Y2Zk
OWQzMWE0NWVhYmNjY2RhZTEwM2U3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTg4LDcgKzg4
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXJlZkV2ZW50VGFyZ2V0KCkKIGF1
dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkoKSAtPiBSZWFkeVByb21pc2UmCiB7CiAg
ICAgaWYgKCFtX3JlYWR5UHJvbWlzZSkgewotICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVhZHlQcm9taXNlPigpOworICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IG1h
a2VVbmlxdWU8UmVhZHlQcm9taXNlPigpOwogCiAgICAgICAgIGlmIChtX2lzU3RvcHBlZCB8fCAh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gKm1fcmVhZHlQcm9taXNlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6
OlJlZ2lzdGVyOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAK
LSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlz
LCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2Io
bWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RG
TW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92
ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAog
ICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246
IFVucmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRh
LmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVK
b2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9t
aXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2Vy
dmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkp
KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24o
Y29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlclR5cGUsIFJl
ZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNj
b3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBVcGRhdGluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAl
IiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7
CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0
aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVK
b2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNj
aGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYikKQEAgLTI2
OSw3ICsyNjksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlv
bihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycgogICAgIH0KIAogICAgIHVpbnQ2
NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVu
dGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7
CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdU
Rk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRp
bmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQ
cm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElk
ZW50aWZpZXIoKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAg
IH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVu
ZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0Fj
dGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVu
ZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMp
KTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBX
VEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0g
dGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdhYzljOTgzODNi
MDRiNmViODljOTlmMjIwODg1ZTc2NzM5NzZjM2YuLjNiZDZiOWIwNmU1NzM3NjY1YjU4Zjk2OWUy
OTNkMGZlZDYyYzNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGNsYXNz
IFNlcnZpY2VXb3JrZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5s
aW5lRGF0YSwgcHVibGljIEFjCiAjZW5kaWYKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGlu
Z1Byb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8UGVuZGluZ0FjdGl2
aXR5PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiYmIHBlbmRpbmdBY3Rpdml0eSkKICAgICAgICAg
ICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogICAgICAgICAgICAgLCBwZW5kaW5nQWN0
aXZpdHkoV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRl
eCBlZGJjOGY5MWVlNDM0NjJhNTA0OWU4OGMxY2VmNWVmYTc2MmM5OGZmLi5jYjVjMjIxZmM5NDg4
ZDdjMDA3Mjk4M2ExNTc4OTVkY2E4YzZjZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uCiAKICAgICBzZXJ2aWNlV29y
a2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CiAKLSAgICBtX3BlbmRpbmdTZXJ2
aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3Vu
aXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywgaWRlbnRpZmllciwg
dGltZW91dCkpOworICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Rz
LmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVl
c3Q+KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CiAKICAgICBhdXRvJiB0aHJlYWQgPSBz
ZXJ2aWNlV29ya2VyLT50aHJlYWQoKTsKICAgICB0aHJlYWQuc3RvcChbdGhpcywgaWRlbnRpZmll
ciwgc2VydmljZVdvcmtlciA9IFdURk1vdmUoc2VydmljZVdvcmtlciksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBjNjE3MzYxM2NhY2I1NWQ2OTA1OGJlMmM3
ZTJhNWZiZDg1MjljNzc2Li45ZTcyOGMzYTdhZmE0NmM5NDljZGNiZTBkNmZlYjA0YTk1MzFjY2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTExNCw3ICsxMTQs
NyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQ
YWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94aWVzKCkuYWRkKHRoaXMpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAg
bV9yZW1vdGVEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdn
YWJsZT4oKnRoaXMsIGRhdGEpOworICAgIG1fcmVtb3RlRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8
U2VydmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBkYXRhKTsKICAgICBtX3JlbW90ZURlYnVn
Z2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1ZSk7CiAgICAgbV9yZW1vdGVEZWJ1
Z2dhYmxlLT5pbml0KCk7CiAjZW5kaWYKQEAgLTE2OCw3ICsxNjgsNyBAQCBSZWY8Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3Jh
Z2VDb25uZWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6Y3JlYXRlQmxvYkxvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xpZW50LCBj
b25zdCBVUkwmIGJsb2JVUkwpCiB7Ci0gICAgYXV0byBsb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVu
aXF1ZTxGZXRjaExvYWRlcj4oY2xpZW50LCBudWxscHRyKTsKICAgICBsb2FkZXItPnN0YXJ0TG9h
ZGluZ0Jsb2JVUkwobV9kb2N1bWVudCwgYmxvYlVSTCk7CiAgICAgaWYgKCFsb2FkZXItPmlzU3Rh
cnRlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKaW5kZXggMWM3ODMxMmM4NTQ4MmY5ODY5YTVmYzBjNmQyY2M2YzZmZGZjMTBhMC4uZTRiODQz
MTY4NGY3ZDg3ZDJiZmRlNmRkNDI3ZjMzOTAzMDM0YmFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRh
YmFzZS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpv
cGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUpCiAKICAgICBTUUxp
dGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhtX2RhdGFiYXNlRGly
ZWN0b3J5KTsKIAotICAgIG1fZGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFi
YXNlPigpOworICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwog
ICAgIGlmICghbV9kYXRhYmFzZS0+b3BlbihmdWxsRmlsZW5hbWUpKSB7CiAgICAgICAgIGVycm9y
TWVzc2FnZSA9ICJGYWlsZWQgdG8gb3BlbiByZWdpc3RyYXRpb24gZGF0YWJhc2UiOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwCmluZGV4IGZlNWNjODU5ZTY1YTZlMzJhNzhiNTI4OTc1YTEzMmU3NGJmMTc4
N2UuLjkzMjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0ZDBlOTY5YjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0x
NDQsNyArMTQ0LDcgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGls
ZSB0aGUgaW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCiAgICAgQVNTRVJUKCFtX3JlZ2lz
dHJhdGlvbnMuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAKLSAgICBhdXRvIHJl
Z2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlz
LCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hl
LCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8g
cmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRh
dGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRh
dGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CiAgICAgcmVnaXN0cmF0
aW9uLT5zZXRMYXN0VXBkYXRlVGltZShkYXRhLnJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZSk7
CiAgICAgYXV0byByZWdpc3RyYXRpb25QdHIgPSByZWdpc3RyYXRpb24uZ2V0KCk7CiAgICAgYWRk
UmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CkBAIC0zMDQsNyArMzA0LDcgQEAg
U1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3Jl
LCBTdHJpbmcmJiByZWdpc3RyYXRpb24KIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFi
YXNlRGlyZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAg
ICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIG1fcmVnaXN0cmF0aW9u
U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92
ZShyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOworICAgICAgICBtX3JlZ2lzdHJhdGlv
blN0b3JlID0gbWFrZVVuaXF1ZTxSZWdpc3RyYXRpb25TdG9yZT4oKnRoaXMsIFdURk1vdmUocmVn
aXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsKICAgICBlbHNlCiAgICAgICAgIHJlZ2lzdHJh
dGlvblN0b3JlSW1wb3J0Q29tcGxldGUoKTsKIApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgU1dT
ZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKICAgICAv
LyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4KIAogICAgIGF1dG8mIGpv
YlF1ZXVlID0gKm1fam9iUXVldWVzLmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBb
dGhpcywgJmpvYkRhdGFdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2
ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3Ry
YXRpb25LZXkoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgam9iUXVldWUuZW5x
dWV1ZUpvYihqb2JEYXRhKTsKQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdp
biwgUwogCiAgICAgaWYgKGNsaWVudElkZW50aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBB
U1NFUlQoIWl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyKTsKLSAg
ICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRpbWVyPihbY2xpZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFp
biwgdGhpc10geworICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtl
cnNUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJh
YmxlRG9tYWluLCB0aGlzXSB7CiAgICAgICAgICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3
b3JrZXJzVG9UZXJtaW5hdGU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVu
bmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA4YjY4YjcwZjAxZDI1Mjc4YWY1MzhhYmNlOTE0Yjhj
N2M2OGFiODM3Li5kY2FmNWE4YTcxMGY3OTQ0NjQ3ZGUzY2Q1ZTk4MDYzOTlhOGZkNTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVl
dWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAgICAg
ICAgICAgICByZWdpc3RyYXRpb24tPnNldFVwZGF0ZVZpYUNhY2hlKGpvYi5yZWdpc3RyYXRpb25P
cHRpb25zLnVwZGF0ZVZpYUNhY2hlKTsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IEZvdW5kIHJlZ2lzdHJh
dGlvbiAlbGx1IGZvciBqb2IgJXMgYnV0IGl0IG5lZWRzIHVwZGF0aW5nIiwgdGhpcywgcmVnaXN0
cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdS
ZWdpc3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3Nl
cnZlciwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZp
YUNhY2hlLCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOworICAgICAgICBhdXRvIG5ld1Jl
Z2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBt
X3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUs
IGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CiAgICAgICAgIG1fc2VydmVyLmFkZFJlZ2lz
dHJhdGlvbihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlvbikpOwogCiAgICAgICAgIFJFTEVBU0VfTE9H
KFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iOiBO
byBleGlzdGluZyByZWdpc3RyYXRpb24gZm9yIGpvYiAlcywgY29uc3RydWN0aW5nIGEgbmV3IG9u
ZS4iLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmNwcAppbmRleCAyYjdhMmZlM2ZiYjU4ZDRjNGVlMzhmYzA0YjUzNmEzZTRlMGM3N2U3Li4z
YmU3NTdlMDJhZTE5ZDc1OTBlYzA3YjNmYTRjYmU3ZDYzY2U4MWY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMzUs
NyArMTM1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJl
Z2lzdGVyUGFpbnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogICAgICAgICBSZWZQdHI8SlNDU1NQ
YWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1Bh
aW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9KTsKIAotICAgICAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5y
ZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRB
cmd1bWVudHMpKTsKKyAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBtYWtlVW5pcXVlPFBh
aW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFz
ZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1l
bnRzKSk7CiAgICAgICAgIHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBh
aW50RGVmaW5pdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggOTZjZjE4NTBiMGNhZTNhYWU5NjA3ZGIx
MzQxNjczNThiNjcxYzFkOS4uNjRmYzc4ZWVlNzg4MGVkOWJlZGNmYzJhNzAxMmNhNmVjM2NlMWMw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDog
cHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CiAKICAgICAvLyBBbGwgcGFpbnQgZGVmaW5pdGlv
bnMgbXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQsIGJlY2F1c2Ug
b3RoZXJ3aXNlIHRoZXkgd2lsbCBwb2ludCB0byBmcmVlZCBtZW1vcnkuCiAgICAgc3RydWN0IFBh
aW50RGVmaW5pdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWludERlZmluaXRpb24+IHsK
KyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQYWludERl
ZmluaXRpb24oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25z
dHJ1Y3RvciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRQ
cm9wZXJ0aWVzLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0QXJndW1lbnRzKTsKIAogICAgICAgICBj
b25zdCBBdG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5jcHAKaW5kZXggOGU4YTJhNGNhMjNlMmI5M2RhMTM0YWZiNTJkMGU5
NTc2YzQwMjE1OS4uM2YwOTI1NjNiZDUyYWM0YTRiYmVkYTQxNWMyMzdhMmQxZGZkYWRiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApA
QCAtNDgsNyArNDgsNyBAQCB2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5
cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZQogewogICAgIFN0cmluZyBt
ZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNz
YWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwg
bWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdl
ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwg
ZXhlYyk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92
ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCmluZGV4IDRiYjc4OGVhNjNjZDZiYmRjNTMyNTg3ZTA1MTBkNTMyNTI2MDZm
ZmEuLmNlZjgyZjdiNDExZDIxOGM3MzNkNjZmYTlkYmEyZDkzMTI1YWU4MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNDksNyArNDks
NyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2xldEdsb2JhbFNjb3BlKTsKIFdv
cmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwg
U2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRv
Y3VtZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAg
ICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhp
cykpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0
aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkK
ICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQpA
QCAtNjIsNyArNjIsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShE
b2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjbwogICAgIEFTU0VSVChkb2N1
bWVudC5wYWdlKCkpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmln
aW5Qb2xpY3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVmKCkpKTsKLSAgICBzZXRDb250ZW50
U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVS
TCB7IG1fY29kZS51cmwoKSB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGlj
eShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0s
ICp0aGlzKSk7CiB9CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgp
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVN
ZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXMKIHsKICAgICBpZiAo
IW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVz
c2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsK
KyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3Nh
Z2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOwogfQogCiB2b2lkIFdvcmtsZXRH
bG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDFjZWU5ZWIzNDIxY2Q5OWE1NmM4ODYwYjhlY2RkNDU5
NmY4MGQyZGUuLjcxMzM5MDBmMTcxZWVmNDE1NjczZDRlOTBkNWNmNzdjZmViYzJiYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0
U2NyaXB0V2l0aFN1YmNsYXNzKCkKICAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogICAg
IEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlw
ZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0
Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGll
bnQgPSBtYWtlVW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2Nv
cGUpOwogICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudCht
X2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MRXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYjAy
MWNjZTE1M2MzMTkyOTUwYTJiZjc3ZDgwOWEyODQ3YWIwZjBjMS4uYTYzMjdiOWRmZjFiNzZiYjU4
MmM2MzYwMzgxNTI0MjhjNzFhYTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApAQCAtMzcsNiAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgWE1M
RXJyb3JzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBYTUxFcnJvcnMoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKaW5kZXggZjAxOTNkOGM5NmUzNWM5ZmY3NWU2YTYzYTM1MGM2NTVkY2E4NjBlZi4uZjg2
NjMzYThkNmRiNzA1NDMwMTg4Mjg1NzViNTlmMjY2N2M2NmVkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1
ZXN0OjpyZXNwb25zZVVSTCgpIGNvbnN0CiBYTUxIdHRwUmVxdWVzdFVwbG9hZCYgWE1MSHR0cFJl
cXVlc3Q6OnVwbG9hZCgpCiB7CiAgICAgaWYgKCFtX3VwbG9hZCkKLSAgICAgICAgbV91cGxvYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CisgICAgICAg
IG1fdXBsb2FkID0gbWFrZVVuaXF1ZTxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oKnRoaXMpOwogICAg
IHJldHVybiAqbV91cGxvYWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3Bw
CmluZGV4IGFkN2UxM2M4YTE5NGFkNTZkNjIzNDIwMDAxN2NiYTc3ZmU4MGI3NDIuLmE5MjQ0MDll
ZTQ2YzUzZTczYjI3YTQ5YTE5ZWZlOTY5NzIxNjczYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
RnVuY3Rpb25zLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0
ZXNwYWNlKFVDaGFyIGMpCiAgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09
ICdccicgfHwgYyA9PSAnXHQnOwogfQogCi0jZGVmaW5lIERFRklORV9GVU5DVElPTl9DUkVBVE9S
KFN1ZmZpeCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rpb24j
I1N1ZmZpeCgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RnVuIyNTdWZmaXg+KCk7IH0KKyNk
ZWZpbmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gbWFrZVVuaXF1
ZTxGdW4jI1N1ZmZpeD4oKTsgfQogCiBjbGFzcyBJbnRlcnZhbCB7CiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAppbmRleCAwNDYxNWMzZDVmMDMxMzEwNjkzOGZhYTA1
ZmIzOWM5OWNlMTIzYjVjLi5jMWJiYzU0ZWI4MzAxNjkxMTljODY4MzFhNGYyYTZlN2MwMDQ1Njhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI2Myw3ICsyNjMsNyBA
QCBib29sIGV2YWx1YXRlUHJlZGljYXRlKGNvbnN0IEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCiAK
ICAgICAvLyBmb29bM10gbWVhbnMgZm9vW3Bvc2l0aW9uKCk9M10KICAgICBpZiAocmVzdWx0Lmlz
TnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBFcVRlc3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1bmN0
aW9uOjpjcmVhdGUoInBvc2l0aW9uIl9zKSwgc3RkOjptYWtlX3VuaXF1ZTxOdW1iZXI+KHJlc3Vs
dC50b051bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKKyAgICAgICAgcmV0dXJuIEVx
VGVzdE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBt
YWtlVW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVh
bigpOwogCiAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCmluZGV4IGVjMmM2YWUwNDU5YTA2OTI1NmE2
NjJmNzJjODcyNjdmZWExYTQ1YmQuLjYzMDRlOTI4MTFhOTM0ZjdkZTc0YzhjOTRiMmI2OWMwMDRl
YTQ5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNs
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApA
QCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXRzKCkK
IAogdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldChjb25zdCBTdHJpbmcmIGhyZWYp
CiB7Ci0gICAgYXV0byBjaGlsZFJ1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFhTTEltcG9ydFJ1bGU+
KHRoaXMsIGhyZWYpOworICAgIGF1dG8gY2hpbGRSdWxlID0gbWFrZVVuaXF1ZTxYU0xJbXBvcnRS
dWxlPih0aGlzLCBocmVmKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZFJ1bGUucmVsZWFz
ZSgpKTsKICAgICBtX2NoaWxkcmVuLmxhc3QoKS0+bG9hZFNoZWV0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGUwMjRlZmI1
NmJmNjUyYjkwYTlhMWQ0ZjgxMzA2NDkxODMwZDhlMGYuLjcwNDg4OTJhNWFhMGVmOWE1NWZiZDI0
MDhjZDE3OTE0ZDAyYTljODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBh
cnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29u
c3QgY2hhciogbSwgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKQogewogICAgIGlmICghbV94bWxFcnJv
cnMpCi0gICAgICAgIG1feG1sRXJyb3JzID0gc3RkOjptYWtlX3VuaXF1ZTxYTUxFcnJvcnM+KCpk
b2N1bWVudCgpKTsKKyAgICAgICAgbV94bWxFcnJvcnMgPSBtYWtlVW5pcXVlPFhNTEVycm9ycz4o
KmRvY3VtZW50KCkpOwogICAgIG1feG1sRXJyb3JzLT5oYW5kbGVFcnJvcih0eXBlLCBtLCBwb3Np
dGlvbik7CiAgICAgaWYgKHR5cGUgIT0gWE1MRXJyb3JzOjp3YXJuaW5nKQogICAgICAgICBtX3Nh
d0Vycm9yID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBiOTMxMDFiOGFhYzQ4MzlhMzliYjU0YjJi
ODlkZTg5OGM3OWI3NWFiLi44OGRkNjAyZGE4ODNlN2ViYWE5NGE5NmFiNmEyOWVkZGIzZDgwMjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3Mg
ewogcHVibGljOgogICAgIHZvaWQgYXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayhjb25zdCB4
bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIqIHhtbFByZWZpeCwgY29uc3QgeG1s
Q2hhciogeG1sVVJJLCBpbnQgbnVtTmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhcioqIG5hbWVzcGFj
ZXMsIGludCBudW1BdHRyaWJ1dGVzLCBpbnQgbnVtRGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyKiog
YXR0cmlidXRlcykKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxi
YWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjaz4oKTsKIAogICAg
ICAgICBjYWxsYmFjay0+eG1sTG9jYWxOYW1lID0geG1sU3RyZHVwKHhtbExvY2FsTmFtZSk7CiAg
ICAgICAgIGNhbGxiYWNrLT54bWxQcmVmaXggPSB4bWxTdHJkdXAoeG1sUHJlZml4KTsKQEAgLTEy
MiwxMiArMTIyLDEyIEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBl
bmRFbmRFbGVtZW50TlNDYWxsYmFjaygpCiAgICAgewotICAgICAgICBtX2NhbGxiYWNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOworICAg
ICAgICBtX2NhbGxiYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2Fs
bGJhY2s+KCkpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyc0NhbGxiYWNrKGNv
bnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0g
c3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOworICAgICAgICBh
dXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOwog
CiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1cChzLCBsZW4pOwogICAgICAgICBjYWxs
YmFjay0+bGVuID0gbGVuOwpAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFj
a3MgewogCiAgICAgdm9pZCBhcHBlbmRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjayhjb25z
dCB4bWxDaGFyKiB0YXJnZXQsIGNvbnN0IHhtbENoYXIqIGRhdGEpCiAgICAgewotICAgICAgICBh
dXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0
aW9uQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRp
bmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+
dGFyZ2V0ID0geG1sU3RyZHVwKHRhcmdldCk7CiAgICAgICAgIGNhbGxiYWNrLT5kYXRhID0geG1s
U3RyZHVwKGRhdGEpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3Mg
ewogCiAgICAgdm9pZCBhcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywg
aW50IGxlbikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBt
YWtlVW5pcXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJh
Y2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47
CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lk
IGFwcGVuZENvbW1lbnRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzKQogICAgIHsKLSAgICAgICAg
YXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4o
KTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxs
YmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cmR1cChzKTsKIApAQCAtMTY2
LDcgKzE2Niw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRJ
bnRlcm5hbFN1YnNldENhbGxiYWNrKGNvbnN0IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIq
IGV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIqIHN5c3RlbUlEKQogICAgIHsKLSAgICAgICAgYXV0
byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJh
Y2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcm5h
bFN1YnNldENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5uYW1lID0geG1sU3RyZHVw
KG5hbWUpOwogICAgICAgICBjYWxsYmFjay0+ZXh0ZXJuYWxJRCA9IHhtbFN0cmR1cChleHRlcm5h
bElEKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAg
IHZvaWQgYXBwZW5kRXJyb3JDYWxsYmFjayhYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25z
dCB4bWxDaGFyKiBtZXNzYWdlLCBPcmRpbmFsTnVtYmVyIGxpbmVOdW1iZXIsIE9yZGluYWxOdW1i
ZXIgY29sdW1uTnVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sg
PSBtYWtlVW5pcXVlPFBlbmRpbmdFcnJvckNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNr
LT5tZXNzYWdlID0geG1sU3RyZHVwKG1lc3NhZ2UpOwogICAgICAgICBjYWxsYmFjay0+dHlwZSA9
IHR5cGU7CkBAIC0yMDIsNiArMjAyLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAg
fTsKIAogICAgIHN0cnVjdCBQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjayA6IHB1YmxpYyBQ
ZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrKCkKICAgICAg
ICAgewogICAgICAgICAgICAgeG1sRnJlZSh4bWxMb2NhbE5hbWUpOwpAQCAtMjMzLDYgKzIzNCw3
IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUGVuZGlu
Z0VuZEVsZW1lbnROU0NhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdm9pZCBjYWxsKFhNTERv
Y3VtZW50UGFyc2VyKiBwYXJzZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHBh
cnNlci0+ZW5kRWxlbWVudE5zKCk7CkBAIC0yNDAsNiArMjQyLDcgQEAgY2xhc3MgUGVuZGluZ0Nh
bGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNr
IDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjaygp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHhtbEZyZWUocyk7CkBAIC0yNTUsNiArMjU4LDcgQEAg
Y2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJv
Y2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5Q
ZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2soKQogICAgICAgICB7CiAgICAgICAg
ICAgICB4bWxGcmVlKHRhcmdldCk7CkBAIC0yNzEsNiArMjc1LDcgQEAgY2xhc3MgUGVuZGluZ0Nh
bGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nQ0RBVEFCbG9ja0NhbGxiYWNr
IDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaygp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHhtbEZyZWUocyk7CkBAIC0yODYsNiArMjkxLDcgQEAg
Y2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nQ29t
bWVudENhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NvbW1lbnRD
YWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHhtbEZyZWUocyk7CkBAIC0zMDAsNiAr
MzA2LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQ
ZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjayA6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgewor
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwg
flBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrKCkKICAgICAgICAgewogICAgICAgICAgICAg
eG1sRnJlZShuYW1lKTsKQEAgLTMxOCw2ICszMjUsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tz
IHsKICAgICB9OwogCiAgICAgc3RydWN0IFBlbmRpbmdFcnJvckNhbGxiYWNrOiBwdWJsaWMgUGVu
ZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nRXJyb3JDYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHhtbEZyZWUobWVzc2FnZSk7CkBAIC01NjQsNyArNTcyLDcgQEAgYm9vbCBYTUxEb2N1
bWVudFBhcnNlcjo6c3VwcG9ydHNYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIFhN
TERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQsIEZy
YW1lVmlldyogZnJhbWVWaWV3KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3Vt
ZW50KQogICAgICwgbV92aWV3KGZyYW1lVmlldykKLSAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhz
dGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCisgICAgLCBtX3BlbmRpbmdDYWxs
YmFja3MobWFrZVVuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50Tm9k
ZSgmZG9jdW1lbnQpCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpi
ZWxvd1JhbmdlUG9zaXRpb24oKSkKIHsKQEAgLTU3Miw3ICs1ODAsNyBAQCBYTUxEb2N1bWVudFBh
cnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZy
YW1lVmlldykKIAogWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50
RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBwYXJlbnRFbGVtZW50LCBQYXJzZXJDb250ZW50
UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIoZnJhZ21lbnQuZG9jdW1lbnQoKSwgcGFyc2VyQ29udGVudFBvbGljeSkKLSAgICAsIG1fcGVu
ZGluZ0NhbGxiYWNrcyhzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCisgICAg
LCBtX3BlbmRpbmdDYWxsYmFja3MobWFrZVVuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQogICAg
ICwgbV9jdXJyZW50Tm9kZSgmZnJhZ21lbnQpCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24o
VGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKICAgICAsIG1fcGFyc2luZ0ZyYWdt
ZW50KHRydWUpCkBAIC0xMzI4LDcgKzEzMzYsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpk
b0VuZCgpCiAgICAgICAgIHhtbFRyZWVWaWV3ZXIudHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3
KCk7CiAgICAgfSBlbHNlIGlmIChtX3Nhd1hTTFRyYW5zZm9ybSkgewogICAgICAgICB4bWxEb2NQ
dHIgZG9jID0geG1sRG9jUHRyRm9yU3RyaW5nKGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCksIG1fb3JpZ2luYWxTb3VyY2VGb3JUcmFuc2Zvcm0udG9TdHJpbmcoKSwgZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCkpOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRUcmFuc2Zvcm1Tb3Vy
Y2Uoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1Tb3VyY2U+KGRvYykpOworICAgICAgICBkb2N1
bWVudCgpLT5zZXRUcmFuc2Zvcm1Tb3VyY2UobWFrZVVuaXF1ZTxUcmFuc2Zvcm1Tb3VyY2U+KGRv
YykpOwogCiAgICAgICAgIGRvY3VtZW50KCktPnNldFBhcnNpbmcoZmFsc2UpOyAvLyBNYWtlIHRo
ZSBkb2N1bWVudCB0aGluayBpdCdzIGRvbmUsIHNvIGl0IHdpbGwgYXBwbHkgWFNMIHN0eWxlc2hl
ZXRzLgogICAgICAgICBkb2N1bWVudCgpLT5hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZT
Y2hlZHVsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vydmlj
ZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDA1YmM5
NTNmN2YwZGRjNzg3YjFlNjMwNDg3Njk2YzIwODU5Y2FlMGYuLmQ2OWUxNDk5MmQ1ODY3NTFjYTA0
MzQyNjM2MmE2ZjQxYzI2OTlmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJp
dmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNw
cApAQCAtNjU3LDcgKzY1Nyw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJv
d3NlcihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYmIGNhcGFiaWxpdGllc0xpc3QsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNlc3Npb25Ib3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxT
ZXNzaW9uSG9zdD4oY2FwYWJpbGl0aWVzTGlzdC50YWtlTGFzdCgpKTsKKyAgICBhdXRvIHNlc3Np
b25Ib3N0ID0gbWFrZVVuaXF1ZTxTZXNzaW9uSG9zdD4oY2FwYWJpbGl0aWVzTGlzdC50YWtlTGFz
dCgpKTsKICAgICBhdXRvKiBzZXNzaW9uSG9zdFB0ciA9IHNlc3Npb25Ib3N0LmdldCgpOwogICAg
IHNlc3Npb25Ib3N0UHRyLT5jb25uZWN0VG9Ccm93c2VyKFt0aGlzLCBjYXBhYmlsaXRpZXNMaXN0
ID0gV1RGTW92ZShjYXBhYmlsaXRpZXNMaXN0KSwgc2Vzc2lvbkhvc3QgPSBXVEZNb3ZlKHNlc3Np
b25Ib3N0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
T3B0aW9uYWw8U3RyaW5nPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAgYi9T
b3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAppbmRleCA3YTIwYjg5NDFh
ZmY3MmE4NTJiNzZmNWM1NTEwNjI2NTQ3NzRhMWNjLi4xNzdhYTU0ZjIyMjk3YWMzMTYxNGQzNTNi
ZTlmM2E3OWQxYWFiMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lv
bkhvc3RHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGli
LmNwcApAQCAtMTEzLDYgKzExMyw3IEBAIGJvb2wgU2Vzc2lvbkhvc3Q6OmlzQ29ubmVjdGVkKCkg
Y29uc3QKIH0KIAogc3RydWN0IENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRh
KFNlc3Npb25Ib3N0KiBzZXNzaW9uSG9zdCwgR1VuaXF1ZVB0cjxjaGFyPiYmIGRidXNBZGRyZXNz
LCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJp
bmc+IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBzZXNzaW9uSG9zdChz
ZXNzaW9uSG9zdCkKICAgICAgICAgLCBkYnVzQWRkcmVzcyhXVEZNb3ZlKGRidXNBZGRyZXNzKSkK
QEAgLTE3Myw3ICsxNzQsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKEZ1bmN0
aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZQogICAgIH0sIHRoaXMp
OwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkYnVzQWRkcmVzcyhnX3N0cmR1cF9wcmludGYoInRj
cDpob3N0PSVzLHBvcnQ9JXUiLCAiMTI3LjAuMC4xIiwgcG9ydCkpOwotICAgIGNvbm5lY3RUb0Jy
b3dzZXIoc3RkOjptYWtlX3VuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPih0aGlzLCBX
VEZNb3ZlKGRidXNBZGRyZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpKTsKKyAgICBjb25uZWN0VG9Ccm93c2VyKG1ha2VVbmlxdWU8Q29ubmVjdFRv
QnJvd3NlckFzeW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFi
bGUuZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQgU2Vzc2lv
bkhvc3Q6OmNvbm5lY3RUb0Jyb3dzZXIoc3RkOjp1bmlxdWVfcHRyPENvbm5lY3RUb0Jyb3dzZXJB
c3luY0RhdGE+JiYgZGF0YSkKQEAgLTM3MSw2ICszNzIsNyBAQCB2b2lkIFNlc3Npb25Ib3N0Ojpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJn
ZXRJRAogfQogCiBzdHJ1Y3QgTWVzc2FnZUNvbnRleHQgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBsb25nIG1lc3NhZ2VJRDsKICAgICBTZXNzaW9uSG9zdCogaG9z
dDsKIH07CkBAIC0zODEsNyArMzgzLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VU
b0JhY2tlbmQobG9uZyBtZXNzYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NF
UlQobV9jb25uZWN0aW9uSUQpOwogICAgIEFTU0VSVChtX3RhcmdldC5pZCk7CiAKLSAgICBhdXRv
IG1lc3NhZ2VDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2Fn
ZUNvbnRleHQgeyBtZXNzYWdlSUQsIHRoaXMgfSk7CisgICAgYXV0byBtZXNzYWdlQ29udGV4dCA9
IG1ha2VVbmlxdWU8TWVzc2FnZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlELCB0
aGlzIH0pOwogICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9kYnVzQ29ubmVjdGlvbi5nZXQo
KSwgbnVsbHB0ciwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfT0JKRUNUX1BBVEgsCiAgICAgICAg
IElOU1BFQ1RPUl9EQlVTX0lOVEVSRkFDRSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKaW5kZXggYjYyZjEyZTE4
MmYyMWViOGQ1MTA3NGNiMjU0ZDdiMjEyZTBjZWQxOS4uYjQ0NWU3YTY1YTQ4ZDA3NDhiZDdlOTIw
NWEzNDQwZjdmMWE5NTZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9t
YWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IDJlMjk2
YjI5ZjQzYTRmYzg4ZTcwMDkzMjRhNWUyM2IwYmU5Y2Q1MWMuLjkzMDNkMmFkYzE1ZWY2ZmIzMTBi
NmZiMTZkMDcwY2M4NTNmZGMzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRv
cmluZ0Rpc2soKQogICAgIGlmIChyZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2ZpbGVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRv
cj4ocmVzb3VyY2VMb2dQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBl
KSB7CisgICAgbV9maWxlTW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNl
TG9nUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3Rp
Y3MoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmlsZU1vbml0b3I+KHN0b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0
aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBtX2ZpbGVNb25p
dG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1ZXVlLmNv
cHlSZWYoKSwgW3RoaXNdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAg
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gRmls
ZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpSZW1vdmFsKSB7CiAgICAgICAgICAgICAvLyBEaXJl
Y3Rvcnkgd2FzIHJlbW92ZWQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKaW5kZXggNGMwMzNlMzUzZDRmMzA4ZjdmNzYwMDEy
Y2E5NjI5NjMwM2MxMDczMC4uNzFmMzRiZmEzZDZjMmI1Mjc2MTY4OTQ0ZWUzMzRjNzNkYWY1MDMy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU7CiAKIC8vIENhbiBvbmx5IGJlIGNvbnN0cnVjdGVkIC8gZGVzdHJveWVk
IC8gdXNlZCBmcm9tIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0
aWMgcXVldWUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Ug
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZSYsIFdvcmtRdWV1ZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9y
eVBhdGgpOwogICAgIH5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBhZGVjMTRjZjlj
Y2Q5NjRjMjkwMWNlMmQ4NGVhMzU2ZGY2ZGIwZmYyLi41ZGM3ZDk5NDc4YjM0Y2EzMmI3NzIwZjA5
NzQ1ZDAyMWE2ZWM0MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCkBAIC03Nyw2ICs3Nyw3IEBAIGVudW0gY2xhc3MgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgOiBi
b29sIHsgTG9uZywgU2hvcnQgfTsKIAogLy8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1
c2VkIC8gZGVzdHJveWVkIG9uIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBz
dGF0aXN0aWNzIHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIHVzaW5nIFJl
Z2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRhODg2NmI2MWM4
YjA1NzJjZGQ1MDhlYjY5YTlkOGE5ODllNzVkMjEuLjhiNGE4ODIzOTc0ZDZjZjE1NTY5ZGNmOWZm
ZTk5MWMxZTFjMGZiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC0xNTksMTUgKzE1OSwxNSBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYg
bgogICAgIAogICAgIHBvc3RUYXNrKFt0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5ID0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdF0gewogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5pc0lUUERhdGFiYXNlRW5hYmxlZCgpKSB7Ci0gICAgICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdCwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAKLSAgICAgICAgICAgIGF1
dG8gbWVtb3J5U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0KTsKLSAgICAgICAgICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwg
bV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAg
ICAgICAgICAgYXV0byBtZW1vcnlTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QpOworICAgICAgICAgICAgYXV0byBwZXJzaXN0ZW50U3RvcmUgPSBtYWtlVW5pcXVl
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBt
X3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAKICAg
ICAgICAgICAgIGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigq
bV9zdGF0aXN0aWNzU3RvcmUuZ2V0KCkpLnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKCptZW1vcnlT
dG9yZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhp
cywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAgICAgICAg
ICAgbV9wZXJzaXN0ZW50U3RvcmFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0
b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlz
LCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CisgICAgICAgICAg
ICBtX3BlcnNpc3RlbnRTdG9yYWdlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2U+KGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUUoMTkz
Mjk3KTogVGhpcyBzaG91bGQgYmUgcmV2aXNlZCBhZnRlciB0aGUgVUlQcm9jZXNzIHZlcnNpb24g
Z29lcyBhd2F5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmgKaW5kZXggNjA1YWVmM2U2ZWU5NTBmMzk0ODNmY2Q4Y2M0
ZDhlNjU4ZTAyY2YwYy4uYmJlMzk4NDc1MmJlMTQ2MDUwZDUwMzU3MTM3MTU1MGZiMmNiNjNhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTmV0d29ya1Byb2Nlc3M7CiAKIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNv
b2tpZU1hbmFnZXIpOwogcHVibGljOgogICAgIFdlYkNvb2tpZU1hbmFnZXIoTmV0d29ya1Byb2Nl
c3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgK
aW5kZXggZGM3OWVlYmNmMThkYmY2N2I0NjRjMzU4NjEwZmIzY2U3Y2ZlOTBjYy4uMGUzOGU5NDMw
ZDJjYzlhMTQxYTk3MjcwMzVkZDNkZmEwMjVmNGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgTmV0
d29ya1Byb2Nlc3M7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAK
IGNsYXNzIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDJjNGQyZmY5
NDgwOWM0MmE2MTE2NzNiNWZiNWNhZGJmYTU5MTYwNGUuLmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0
ZjM5ZmI1ZWZjZDc1ZTcxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291
cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBj
bGFzcyBDdXN0b21Qcm90b2NvbFJlcXVlc3RDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291
cFJlcXVlc3RHZW5lcmljQ2xpZW50CiAgICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9
IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2woc3RkOjptYWtlX3VuaXF1
ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihX
VEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CisgICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9
IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3Zl
KHRhc2spLCByZXF1ZXN0KSk7CiAgICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+c3RhcnRM
b2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVl
c3QocmVxdWVzdCkpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA4MGZlMWEy
ZGRjM2UxM2EwMjBiMjU2NGE2MmRjNTUzZjBiNWQ0NGQwLi5iNGQyZGFjNWQwZGI1NzNiYzc1ZWVj
ZWVmOGZiMDYwZTgzZDYxNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBEb3dubG9hZElEIGRvd25sb2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJl
ZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVx
dWVzdC51cmwoKSk7CiAgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNl
IDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fk
cy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xp
ZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1l
dGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9i
UmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGlu
Z0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1f
Y2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFy
YW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtC
bG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCiB2b2lk
IERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBk
b3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2Fk
RGVzdGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6
Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IEFTU0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBt
X3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGlu
Z0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2Fkcygp
LCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25s
b2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChk
b3dubG9hZElELCBtYWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOwog
fQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRE
ZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxv
d092ZXJ3cml0ZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVz
dW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwog
I2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKLSAgICBh
dXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2Fk
SUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8
RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwogCiAgICAg
ZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFwLmNwcAppbmRleCBhODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3YmJjNDMz
ZTY1Li5hZTNjYTdlMGU0ZWU3ZWM4NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6OkFkZFJl
c3VsdCBEb3dubG9hZE1hcDo6YWRkKERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBhdXRvIHJl
c3VsdCA9IG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAg
ICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbV9kb3du
bG9hZEFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywg
QXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2Fk
QXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldlYktp
dCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKICAg
ICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQgZG93bmxv
YWRzJyBhc3NlcnRpb24gaW4gTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuY3BwCmluZGV4IGEyNzgyOGQ3YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5NmQuLjU5
MTIzZjJjNDhmMWMxZTQxNzliYjFkNWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6OkNvbm5l
Y3Rpb24qIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3Jr
U2Vzc2lvbiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVycyks
IG5ldHdvcmtTZXNzaW9uKSkKKyAgICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3Jr
TG9hZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nl
c3Npb24pKQogICAgICwgbV9wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbikKIHsKICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gcGFy
YW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6
Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCA5YjFiOWI4NjA0MzhkOWI2YTNmMTI2ODkxNDYyYjMzNmJjNTlmYzRkLi44MmExZTgzYmU5
NWMzMDdmN2UwYTdlMDcwNDE5YTk5NjU3ZDM0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBzZXJ2ZXIg
PSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBh
dXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4o
bV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+
KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQp
OwogICAgIAogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uIC0gJXMiLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4IDQ0NDIw
ZmY1ZmYyMjk5YmUzNzU0Y2UzN2NkZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIxYWYwYmFk
ZTBjMDI3NWJlMmYwOTVhMTY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCkBAIC02
OSw3ICs2OSw3IEBAIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRF
eHRlbnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAgICBhdXRv
JiBiYWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVudGlmaWVy
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRvJiYgY29u
dGVudFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2Y2ExZjA5
NWUxMDNjNTQyYWQ0ZTQzMDAwYmNiNzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIyMTA0ZGYw
OTQ2OTJjYzNmNjU1MjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291
cmNlIjsKIAogTmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBD
b250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykKICAg
ICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJlYW0oc3Rk
OjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3RyZWFtKG1h
a2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZlcmVuY2Vz
KGZpbGVSZWZlcmVuY2VzKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5ldHdvcmtQ
cm9jZXNzKCkpCiB7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9i
Ojpkb3dubG9hZCgpCiAgICAgfQogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9uZXR3
b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6
bWFrZV91bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJ
RCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOwor
ICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIs
IG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdn
ZXN0ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgp
OwogICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRp
bmdEb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENy
ZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyLmNwcAppbmRleCBmNjU0Mjk1OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMxMTZjLi4x
OTMyNmYyZjQ3ZGM5ZjRmNjIyOGE0YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U+KCk7CisgICAgICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlPigpOwogICAgICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9kYXRhYmFz
ZS0+b3BlbihwYXRoLCBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJlYWRPbmx5
KTsKICAgICAgICAgaWYgKCFpc0RhdGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtODAsNyArODAsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIoKQogICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJR
dWV1ZSwgdGhlIHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlm
ZmVyZW50IHRocmVhZHMuCiAgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVj
a3MoKTsKIAotICAgICAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsK
KyAgICAgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4oKm1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAgIGludCBp
c1N0YXRlbWVudFByZXBhcmVkID0gKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FMSVRFX09L
KTsKICAgICAgICAgQVNTRVJUKGlzU3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBpZiAoIWlz
U3RhdGVtZW50UHJlcGFyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKaW5kZXggZGNkNDZhNjAxYmU2MzA5
ODZmYzJhZTBjMWM5NjU1OGM5NTkyMjA4YS4uNTFkMjAzMTRlYWE0OWU5NmE0MWE1N2NlOGQ0MjIy
NmJiZmIwNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBT
ZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CiAgICAgfk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmlu
ZGV4IDkxMDdmZWMxZTM0ZGI0NDg4MTYyMjg2ODYyMmM4ZmJlYjViMzg4M2MuLmVlODBhYzZlYTFh
Nzc5NzczYTA3MTBlMTc4ODcwNjM3NjdjNTEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVz
cG9uc2VDb21wbGUKICAgICB9CiAKICAgICBpZiAobV9sb2FkVGhyb3R0bGVMYXRlbmN5ID4gMF9z
KSB7Ci0gICAgICAgIG1fdGhyb3R0bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocm90dGxlPigqdGhp
cywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX3Rocm90dGxlID0gbWFrZVVuaXF1ZTxUaHJvdHRs
ZT4oKnRoaXMsIG1fbG9hZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmlu
ZGV4IDQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlhMTYwODE3ZjI0Nzk2N2IwMTYuLmUxYWUwMGJkOWQ5
NTQ3Nzc4MTc0Mzk4NWRmMDczYThiMWNkMjUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBA
QCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogICAgICAgICBtX2ZyYW1lSUQsCiAgICAgICAgIG1f
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1fY29yc1ByZWZsaWdodENoZWNr
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3
b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
aGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgp
XShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBt
YWtlVW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5n
ZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdU
Rk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJy
b3IpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja0NPUlNS
ZXF1ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJl
ZmxpZ2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwg
ZXJyb3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFlcnJvci5pc051
bGwoKSkgewpAQCAtNDQ2LDcgKzQ0Niw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeSogTmV0d29y
a0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3koKQogewogICAgIGlmICghbV9jb250
ZW50U2VjdXJpdHlQb2xpY3kgJiYgbV9jc3BSZXNwb25zZUhlYWRlcnMpIHsKICAgICAgICAgLy8g
RklYTUU6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGluc3RlYWQgb2Yg
aXRzIG9yaWdpbi4KLSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRv
U3RyaW5nKCkgfSk7CisgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmlu
ZygpIH0pOwogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2ZUhlYWRl
cnMoKm1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0KICAgICByZXR1
cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDljYjRhOTI1MjIwOTA1YjRjMjFh
NGY3NmFlNzc2YWUxNDUwMjVmODcuLmJiYTdiYmUwMmI5ZTZiOTBjNGY5M2FmNTg4ZjI1MzNhYTU1
Njk5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC01MDMsOSArNTAzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihf
Q0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4o
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RG
TW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2ll
U3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIG1fZGVmYXVsdE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBt
X2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAj
ZW5kaWYKIH0KIApAQCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3Vy
ZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAg
ICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNv
cHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgp
KSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNl
c3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RG
TW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNF
KENVUkwpIHx8IFVTRShTT1VQKQotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KHNlc3Npb25JRCk7CiAjZW5kaWYKIH0KIApAQCAtMjQyOCw3ICsyNDI4LDcgQEAgU1dTZXJ2ZXIm
IE5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6
OlNlc3Npb25JRCBjb21lIGZyb20/CiAgICAgICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSB8fCAhcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICAKLSAgICAgICAgYXV0byB2YWx1ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9y
ZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IG1h
a2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RG
TW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKICAgICAgICAgICAgIHZhbHVlLT5kaXNh
YmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgICAgIHJldHVy
biB2YWx1ZTsKQEAgLTI1NDAsNiArMjU0MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVl
c3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPCiB9
CiAKIGNsYXNzIFF1b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0
b3JhZ2VRdW90YVVzZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFF1b3RhVXNlckluaXRpYWxpemVyKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1h
bmFnZXIpCiAgICAgICAgIDogbV9tYW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQpAQCAtMjU3
NCw3ICsyNTc1LDcgQEAgY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U3RvcmFnZVF1b3RhVXNlciB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRp
YWxpemVRdW90YVVzZXJzKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBz
ZXNzaW9uSUQsIG9yaWdpbiwgdXNlciA9IHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VySW5pdGlh
bGl6ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4s
IHVzZXIgPSBtYWtlVW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgdGhpcy0+aWRiU2VydmVyKHNlc3Npb25JRCkuaW5pdGlhbGl6ZVF1b3RhVXNlcihvcmlnaW4p
OwpAQCAtMjU4OCw3ICsyNTg5LDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nl
c3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAg
cmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXJzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgcmV0dXJuICpzdG9yYWdlUXVvdGFNYW5hZ2Vycy5tYW5hZ2Vyc1Blck9yaWdpbigpLmVu
c3VyZShvcmlnaW4sIFt0aGlzLCAmc3RvcmFnZVF1b3RhTWFuYWdlcnMsIHNlc3Npb25JRCwgJm9y
aWdpbl0gewotICAgICAgICBhdXRvIG1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VR
dW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBb
dGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50
U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAg
YXV0byBtYW5hZ2VyID0gbWFrZVVuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVv
dGFNYW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3JpZ2lu
XSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUlu
Y3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAgICB0aGlzLT5yZXF1ZXN0U3RvcmFn
ZVNwYWNlKHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwgY3VycmVudFNwYWNlLCBzcGFjZUluY3Jl
YXNlLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIH0pOwogICAgICAgICBpbml0aWFsaXpl
UXVvdGFVc2VycygqbWFuYWdlciwgc2Vzc2lvbklELCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGZiN2E2Y2QzNmVhOWYzNTk0
YTdmYjlkZTg1NTM1MzIzZmE4MjE3MDguLmM2ZTE2OGRkNDdmNjNmNDIyNmJmNjVkZjRmMzQ0YzQ5
ZWRhMGUzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBB
dXhpbGlhcnlQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAg
ICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5p
cXVlPFQ+KCp0aGlzKSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnRO
YW1lKCksIG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggY2UwNmUzNjEzYWMyMGVmOGIzMzE0YzdlYjI2ZTJjNGFiYWZi
NGU4OC4uZmY5OTJiZmYxYmNmZWZhNTA0MjhjNGZhMWEwYTlmMzY2M2NkYTFmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jl
c291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAKICAgICBp
ZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3Bv
bnNlQWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUpIHsKICAgICAgICAgTmV0
d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBpc01haW5GcmFtZUxv
YWQoKSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok1haW5GcmFtZSA6IE5ldHdvcmtM
b2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFy
YW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJz
LnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9y
aWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVz
dExvYWRUeXBlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5l
dHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlv
bnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRlck1h
cCB7IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigp
LCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVm
ZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAgIGlm
IChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3b3Jr
TG9hZENoZWNrZXItPnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkg
fSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTExOSw3ICsxMTksNyBAQCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmIHBhcgogI2VuZGlmCiAgICAgfQogICAgIGlmIChzeW5jaHJvbm91
c1JlcGx5KQotICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN5bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOworICAgICAg
ICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+
KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
On5OZXR3b3JrUmVzb3VyY2VMb2FkZXIoKQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIEZpcnN0TG9hCiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KTsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9h
ZD4oKnRoaXMsICZtX2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5l
dHdvcmtMb2FkPigqdGhpcywgJm1fY29ubmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUo
cGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVi
bGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggYzJiZjQzZDI0ZTA5MWZmNzZkOWRiOGI3MGExNmFl
M2ZhMTdiMmQ1MC4uYTA0YWE5MzQ4ZjI0NzNiZjliNjcyNWIwYTM2NDg4YTdmYmMzMmZkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNjQs
NiArNjQsNyBAQCBjbGFzcyBDYWNoZTsKIH0KIAogY2xhc3MgTmV0d29ya1Nlc3Npb24gOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNz
aW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycyYmKTsKICAgICB2aXJ0dWFsIH5OZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRleCAw
NGUzZDAyNTIyMGRlNGM0M2M3MzYyZGExNDFkZjMyYmEyMDMwZmFmLi41OTE4ODU3NTdhODQ3NTFj
ODMxOGY3YmU1ZDI3NWE3ZjExYzVhNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRD
aGFubmVsPiBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3Qg
aWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1NvY2tldENoYW5uZWw+KGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7
CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25u
ZWN0aW9uLCBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0LT5t
X3NvY2tldCkgewogICAgICAgICByZXN1bHQtPmRpZENsb3NlKDAsICJDYW5ub3QgY3JlYXRlIGEg
d2ViIHNvY2tldCB0YXNrIl9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXgg
NjcyYjM3ODFhNGQ0YTM0YjljMWUxZTI0MTViZDQ5MTBlNzc5ZWQ3MS4uOWRmOWFhY2RjYjMzMmUw
NDFkYjY5YmQwNjgxMDIyOWNmOGJiNGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFz
cyBOZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3Jr
U29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gY3JlYXRlKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlk
ZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCmluZGV4IGQ5MGNjY2E5ODBhOGVmZmMyZDRmMzhmNWUzZjZiYzBhYTJjMmU1NDYu
LjJjNjQyN2U2NDgyMmNlZjVkMWE4MTIwMjVlZmQ2Yzg1NDU0MWNlODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC01Myw3ICs1Myw3
IEBAIFByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIE5ldHdvcmtMb2FkUGFyYW1lCiAgICAgfQogCiAgICAgQVNTRVJUKHBhcmFtZXRl
cnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPT0gUHJlY29ubmVjdE9ubHk6Olllcyk7Ci0gICAgbV9u
ZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRy
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xv
YWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25l
U2hvdCg2MDAwMF9zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IGJm
NTE1NzhmYjE0N2RkZGM4N2U2NmQ5MGE1ZWRkMDJhNGNkNzI2OTMuLmNjODc4NGQ0MjgzYTYyNWZj
MGUxZDllZmFhNTI3MDUyM2FjNzExODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxl
RGF0YWJhc2VVcGRhdGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGlzYWJsZVN1
ZGRlblRlcm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UpCi0gICAgICAgIG1fZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXI+KCk7CisgICAgICAgIG1fZGlzYWJs
ZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBtYWtlVW5pcXVl
PFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXI+KCk7CiAKICAgICBtX2RpZFNjaGVkdWxlRGF0YWJh
c2VVcGRhdGUgPSB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggM2U5ZDE3ZDYwMmQzNDE3NzAzM2M5MzM4YjRi
YmU2ZGEwYmFiYThhNC4uYjA4M2Q1ZDMyYTUxZTYxZGE0Mzc2ZGY5NDQ2ZWYxMTE0ZWE2YmYxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcApAQCAtODQsMTcgKzg0LDE3IEBAIENhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDCiB7CiAj
aWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlm
IChvcHRpb25zLmNvbnRhaW5zKENhY2hlT3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikp
IHsKLSAgICAgICAgbV9sb3dQb3dlck1vZGVOb3RpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5h
YmxlZCkgeworICAgICAgICBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFi
bGVkKSB7CiAgICAgICAgICAgICBBU1NFUlQoV1RGOjpSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgICAgICBpZiAoaXNMb3dQb3dlck1vZGVFbmFibGVkKQogICAgICAgICAgICAgICAgIG1fc3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIW1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlcik7Ci0gICAgICAgICAg
ICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
KTsKICAgICAgICAgaWYgKCFtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyLT5pc0xvd1Bvd2VyTW9kZUVu
YWJsZWQoKSkKLSAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7
CisgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgIH0KICNlbmRp
ZgogCkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIAog
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVz
dCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFr
ZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJD
b3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVz
dCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVx
dWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVx
dWVzdCwgcmVzcG9uc2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hl
S2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0
VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
Q2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IENhY2hlOjp1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBleGlzdGlu
Z0VudHJ5LnJlc3BvbnNlKCk7CiAgICAgV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0
ZXJSZXZhbGlkYXRpb24ocmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKLSAgICBhdXRv
IHVwZGF0ZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXko
KSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSwgb3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSkpOworICAgIGF1dG8gdXBkYXRlRW50cnkgPSBt
YWtlVW5pcXVlPEVudHJ5PihleGlzdGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdF
bnRyeS5idWZmZXIoKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3
b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJl
c3BvbnNlKSk7CiAgICAgYXV0byB1cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRyeS0+ZW5jb2RlQXNT
dG9yYWdlUmVjb3JkKCk7CiAKICAgICBtX3N0b3JhZ2UtPnN0b3JlKHVwZGF0ZVJlY29yZCwgeyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggN2FlMWMyZmU3ZGNlNjA3YjlmOGE1M2Q5OWExYmQ3OTg1
Mzk5YmNmMS4uMWY0MTQ0YThmYWU4N2JmNWZjNWM4M2VkOTAyYjZmZjA4YTA2NGFlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50
cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50
cnkpCiB7Ci0gICAgYXV0byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KHN0b3JhZ2VF
bnRyeSk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7
CiAKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5Lmhl
YWRlci5kYXRhKCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGVudHJ5LT5tX3Jlc3BvbnNlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcAppbmRleCBlN2ZjNWI4OTMyMmI5OTFjNzA5ZDA2OGJlMmRlNzc3MzgzY2I0YmMwLi4y
MjAxOTQxN2E4YzUwMWJmOTU1YmY1MzIyYzA2OWNiMDMyYTQxZTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6
U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFs
RnJhbWVJCiAgICAgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBDb250ZW50U25p
ZmZpbmdQb2xpY3k6OkRvTm90U25pZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29udGVudEVu
Y29kaW5nU25pZmZpbmdQb2xpY3kgPSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25p
ZmY7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0gICAgbV9u
ZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRy
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisgICAgbV9uZXR3b3Jr
TG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CiB9CiAKIFNwZWN1bGF0aXZlTG9hZDo6flNw
ZWN1bGF0aXZlTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyLmNwcAppbmRleCAxY2Q2YjQ5MmY4MWE1YTgxZDI0Y2E3OTEwOGRhNmIxOWUwYzAwM2YxLi41
N2U4ZTc1OTliMWNjYTY1YjI2ZTA2ZWMzODcyZWUyZGQ5NDlkZjY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBj
bGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJl
ZkNvdW50ZWQ8UGVuZGluZ0ZyYW1lTAogICAgIHZvaWQgcmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHN1YnJlc291cmNlS2V5
KQogICAgIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgbV9z
dWJyZXNvdXJjZUxvYWRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlTG9hZD4o
cmVxdWVzdCwgc3VicmVzb3VyY2VLZXkpKTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFw
cGVuZChtYWtlVW5pcXVlPFN1YnJlc291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VLZXkp
KTsKICAgICAgICAgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5LmltcHVsc2UoKTsKICAgICB9CiAK
QEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZl
KGNvbnN0IEtleSYgc3RvcmFnZUtleSwgUmV0cmlldmVDb21wbGV0aW9uSAogICAgIEFTU0VSVCht
X3BlbmRpbmdQcmVsb2Fkcy5jb250YWlucyhzdG9yYWdlS2V5KSk7CiAgICAgLy8gRklYTUU6IFRo
aXMgYnJlYWtzIGluY3JlbWVudGFsIGxvYWRpbmcgd2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5v
dCBzdWNjZXNzZnVsLgogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmlldmVSZXF1
ZXN0cy5lbnN1cmUoc3RvcmFnZUtleSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKICAgICB9
KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwg
Y29uCiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRp
b24oKSk7CiAgICAgYXV0byBrZXkgPSBlbnRyeS0+a2V5KCk7Ci0gICAgbV9wcmVsb2FkZWRFbnRy
aWVzLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50
cnkpLCBXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7
CisgICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1ha2VVbmlxdWU8UHJlbG9hZGVkRW50
cnk+KFdURk1vdmUoZW50cnkpLCBXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywg
a2V5LCBmcmFtZUlEXSB7CiAgICAgICAgIGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRl
ZEVudHJpZXMudGFrZShrZXkpOwogICAgICAgICBBU1NFUlQocHJlbG9hZGVkRW50cnkpOwogICAg
ICAgICBpZiAocHJlbG9hZGVkRW50cnktPndhc1JldmFsaWRhdGVkKCkpCkBAIC00NDksNyArNDQ5
LDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3Rz
KGNvbnN0IEtleSYga2V5LCBFbnRyeSogZW50cnkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgZm9yIChhdXRvJiBjb21wbGV0aW9uSGFuZGxlciA6ICpjb21wbGV0aW9uSGFuZGxlcnMpCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVudHJ5ID8gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4o
KmVudHJ5KSA6IG51bGxwdHIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IG1h
a2VVbmlxdWU8RW50cnk+KCplbnRyeSkgOiBudWxscHRyKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxp
ZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVzCiAKICAgICBMT0co
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVj
dWxhdGl2ZWx5IHJldmFsaWRhdGluZyAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBhdXRvIHJldmFsaWRhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUo
ZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFsaWRhdG9y
ID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRh
dGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1
ZXN0LCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsK
ICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVudHJ5LT5u
ZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCBy
ZXZhbGlkYXRlZEVudHJ5LT5rZXkoKSA9PSBrZXkpOwogCkBAIC01NTksNyArNTU5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGYKICAgICAgICAgICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJl
c291cmNlSW5mbywgZnJhbWVJRCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTE9HKE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgTm90IHBy
ZWxvYWRpbmcgJyVzJyBiZWNhdXNlIGl0IGlzIG1hcmtlZCBhcyB0cmFuc2llbnQiLCBrZXkuaWRl
bnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRy
aWVzLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwg
ZnJhbWVJRF0geworICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1h
a2VVbmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICAg
ICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKG1fY2FjaGUubmV0
d29ya1Byb2Nlc3MoKSwgZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVJpZ2h0
bHlOb3RXYXJtZWRVcEtleSgpKTsKICAgICAgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJp
ZXMucmVtb3ZlKGtleSk7CiAgICAgICAgICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRl
eCBiYmZjNjQ5ODkwZjk1Y2M3ZTA0Y2U4MmE0ZmUzMjk0NGRjMWFiMWYwLi44MDRjNDI5OGNjM2Uz
YzI4MTRmZGJjMmJiYjZjYmVlNTc1ODRhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTI5
MCw4ICsyOTAsOCBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICBMT0coTmV0d29y
a0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vzcykgc3luY2hyb25pemluZyBjYWNoZSIpOwog
CiAgICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwotICAgICAgICBhdXRvIGJsb2JG
aWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRv
IHJlY29yZEZpbHRlciA9IG1ha2VVbmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1
dG8gYmxvYkZpbHRlciA9IG1ha2VVbmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CiAKICAgICAgICAg
Ly8gTW9zdCBvZiB0aGUgZGlzayBzcGFjZSB1c2FnZSBpcyBpbiBibG9icyBpZiB3ZSBhcmUgdXNp
bmcgdGhlbS4gQXBwcm94aW1hdGUgcmVjb3JkcyBmaWxlIHNpemVzIHRvIGF2b2lkIGV4cGVuc2l2
ZSBzdGF0KCkgY2FsbHMuCiAgICAgICAgIHNpemVfdCByZWNvcmRzU2l6ZSA9IDA7CkBAIC00ODks
NyArNDg5LDcgQEAgdm9pZCBTdG9yYWdlOjpyZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mIHJlYWRP
cGVyYXRpb24sIGNvbnN0IERhdGEmIHJlY29yZERhdGEpCiAgICAgfQogCiAgICAgcmVhZE9wZXJh
dGlvbi5leHBlY3RlZEJvZHlIYXNoID0gbWV0YURhdGEuYm9keUhhc2g7Ci0gICAgcmVhZE9wZXJh
dGlvbi5yZXN1bHRSZWNvcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3Rv
cmFnZTo6UmVjb3JkIHsKKyAgICByZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IG1ha2VVbmlx
dWU8U3RvcmFnZTo6UmVjb3JkPihTdG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0YS5r
ZXksCiAgICAgICAgIG1ldGFEYXRhLnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKQEAg
LTc1OCw3ICs3NTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZyb21NZW1v
cnkoY29uc3QgVCYgb3BlcmF0aW9ucywgY29uc3QgS2V5JiBrZXksCiAgICAgICAgIGlmIChvcGVy
YXRpb24tPnJlY29yZC5rZXkgPT0ga2V5KSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hl
U3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgZm91bmQgd3JpdGUgb3BlcmF0aW9uIGluIHByb2dy
ZXNzIik7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlY29yZCA9IG9w
ZXJhdGlvbi0+cmVjb3JkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVj
b3JkKSwgeyB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0
IEtleSYga2V5LCB1bnNpZ25lZCBwcmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZAogICAg
IGlmIChyZXRyaWV2ZUZyb21NZW1vcnkobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMsIGtleSwgY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlYWRPcGVyYXRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBtYWtlVW5pcXVl
PFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IAogICAgIHJlYWRPcGVyYXRpb24tPnRpbWluZ3Muc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CiAgICAgcmVhZE9wZXJhdGlvbi0+dGltaW5ncy5kaXNwYXRjaENvdW50QXRTdGFydCA9
IG1fcmVhZE9wZXJhdGlvbkRpc3BhdGNoQ291bnQ7CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBT
dG9yYWdlOjpzdG9yZShjb25zdCBSZWNvcmQmIHJlY29yZCwgTWFwcGVkQm9keUhhbmRsZXImJiBt
YXBwZWRCb2R5SGFuZGxlciwKICAgICBpZiAoIW1fY2FwYWNpdHkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRlT3BlcmF0
aW9uPigqdGhpcywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBtYWtlVW5pcXVl
PFdyaXRlT3BlcmF0aW9uPigqdGhpcywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVy
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0
aW9ucy5wcmVwZW5kKFdURk1vdmUod3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFkZCBrZXkg
dG8gdGhlIGZpbHRlciBhbHJlYWR5IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRoZSBwZW5k
aW5nIG9wZXJhdGlvbnMgdG9vLgpAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgU3RvcmFnZTo6dHJh
dmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywg
VHJhdmVyCiAgICAgQVNTRVJUKHRyYXZlcnNlSGFuZGxlcik7CiAgICAgLy8gQXZvaWQgbm9uLXRo
cmVhZCBzYWZlIEZ1bmN0aW9uIGNvcGllcy4KIAotICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25Q
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwg
dHlwZSwgZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CisgICAgYXV0byB0cmF2ZXJz
ZU9wZXJhdGlvblB0ciA9IG1ha2VVbmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRo
aXMpLCB0eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKICAgICBhdXRvJiB0
cmF2ZXJzZU9wZXJhdGlvbiA9ICp0cmF2ZXJzZU9wZXJhdGlvblB0cjsKICAgICBtX2FjdGl2ZVRy
YXZlcnNlT3BlcmF0aW9ucy5hZGQoV1RGTW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN1YnJlc291cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IDdiODg5MjI5OTUzOWRi
MzRjNWIzOTE0ZDNiMjE0Y2U4YjgxNDNiOTguLjYzYWQwNDA5ZmRkMjM2ZjZlM2MyY2EzMGU4N2U0
YTdjMGEyOTU5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBA
IC05Myw3ICs5Myw3IEBAIFN0b3JhZ2U6OlJlY29yZCBTdWJyZXNvdXJjZXNFbnRyeTo6ZW5jb2Rl
QXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0Vu
dHJ5PiBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdl
OjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0g
bWFrZVVuaXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwg
c3RvcmFnZUVudHJ5LmhlYWRlci5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50
cnktPm1fc3VicmVzb3VyY2VzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IGQ4YTA1OTQwZDcxOTdlYjMyMjVhMzZi
YzUxM2EyZGI2MTBkYjBjZDguLjcxMDRkMWY3NGNkNzAxY2JjZWNmYWI1N2QyNGViZmY4ZGFlYmVk
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmNwcApAQCAtNzMsOCArNzMsOCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBp
cmF0aW9uVGltZW91dCB7IDVfcyB9Owogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBV
UkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Np
b25QcmVmZXRjaGVzKQotICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Np
b25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENh
Y2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOworICAgICAg
ICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVy
bCwgbWFrZVVuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdU
Rk1vdmUoYnVmZmVyKSkpOwogICAgIC8vIExpbWl0IHByZWZldGNoZXMgZm9yIHNhbWUgdXJsIHRv
IDEuCiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwpAQCAt
ODYsOSArODYsOSBAQCB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVz
dFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBQcmVmZXRjaENhY2hl
OjpzdG9yZVJlZGlyZWN0KGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCkKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAg
IG1fc2Vzc2lvblByZWZldGNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50cmllc01h
cD4oKTsKKyAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hF
bnRyaWVzTWFwPigpOwogICAgIHJlZGlyZWN0UmVxdWVzdC5jbGVhclB1cnBvc2UoKTsKLSAgICBt
X3Nlc3Npb25QcmVmZXRjaGVzLT5zZXQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVm
ZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZWRp
cmVjdFJlcXVlc3QpKSk7CisgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmws
IG1ha2VVbmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25z
ZSksIFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSkpOwogICAgIG1fc2Vzc2lvbkV4cGlyYXRpb25M
aXN0LmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUocmVxdWVzdFVybCwgV2FsbFRpbWU6Om5vdygpKSk7
CiAgICAgaWYgKCFtX2V4cGlyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2V4cGly
YXRpb25UaW1lci5zdGFydE9uZVNob3QoZXhwaXJhdGlvblRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMTcx
MGJhZTllNWE4ODUyNmNlZmEzYjM5YWE3ODhmYWFmMmNmYTBlLi5hMjUxNTIwYjMxZWFjOTIxYzIy
ZDMxMTUxZDZkMjMxYTFiZWQxMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBQcmVm
ZXRjaENhY2hlIHsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBzdHJ1Y3QgRW50cnkgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEVudHJ5KFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7
CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggMDc3ZjE2ZmE2NTA2NTJj
Nzg3YTZmMDMxNjA5MDkwMjY4ZWJiOGFjMC4uY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjViYmM4ZTRh
NWU5OGExNWM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29u
c3QgTmV0d29ya1Byb2Nlc3NDCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBOZXR3b3JrUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25z
dApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vz
c0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIm
IE5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiB7CiAgICAgaWYg
KCFtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKQotICAgICAgICBtX25ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
cj4oKTsKKyAgICAgICAgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IG1ha2VVbmlxdWU8
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI+KCk7CiAgICAgcmV0dXJuICptX25ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMWY4ZDRjYmZjN2E1
MzM4Y2YwZWY1MjRlOWE2NzU0MzFiNDAxN2ZjOS4uMDliMjQzYTZkN2M4MTY4ZTc0NTk5NGNkZTg3
Mzc0N2I2NzU1NDgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODAwLDcgKzgwMCw3IEBAIC0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4g
cHJvdGVjdGVkTmV0d29ya0RhdGFUYXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRv
IGRvd25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CiAgICAg
ICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRv
d25sb2FkTWFuYWdlcigpOwotICAgICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2Fk
VGFzaywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZp
bGVuYW1lKCkpOworICAgICAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkRv
d25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Np
b24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
ICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxv
YWQoKmRvd25sb2FkKTsKICAgICAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0
d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25s
b2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9h
ZExvY2F0aW9uKCkpOwpAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2Nv
YTo6c2V0Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVh
dGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya1Nlc3Npb25Db2NvYT4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9j
ZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFyeSAqcHJv
eHlEaWN0aW9uYXJ5KGNvbnN0IFVSTCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkp
CkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0
d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrUwogewogICAgIC8v
IEZJWE1FOiBVc2UgcHJvdG9jb2wuCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tl
dFRhc2s+IHRhc2sgPSBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpIHdlYlNv
Y2tldFRhc2tXaXRoUmVxdWVzdDogcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJv
ZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsK
IH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tl
dFRhc2smIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCmluZGV4IGJlNjgwMWYzMGNkZjQ5MDAyNTRjMjI0
YjliMTFmYmRmNzNmZTJlMzEuLjViZTE3MDI2NmY0NWI4YmY3MmVmNTZiMTAwODdjYjU5YmI1NmRi
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
UHJvY2Vzc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphbGxv
d1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAppbmRleCBkNDcw
OWE1ZTRhYzhhMmZiNmFjZWI1NmM1N2ViZjBiNWM3NDBkNDU2Li5lMThhNDM5MGIxODhhMjdlOTMx
OGM1MjQwNDU1ZjA2NGNmNmJkNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCkBAIC0zNSw3ICszNSw3IEBAIGNs
YXNzIE5ldHdvcmtTZXNzaW9uQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRl
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0
d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vz
c2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25DdXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzSU9TLm1tCmluZGV4IDIzNzQ1Mjg4YTA2ZDAxMTQ1OTE5NjhiNTA4NmRlYjVmNDVh
YTBhYzYuLmM4Yjg2YzUxMTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IoKQogewogICAgIGlmICghbV9wYXlt
ZW50Q29vcmRpbmF0b3IpCi0gICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3Bh
eW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcGF5bWVudENvb3JkaW5hdG9yOwogfQogCkBAIC04Miw3
ICs4Miw3IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBh
eW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmIGNvb3JkaW5hdG9yLCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxl
cj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRB
dXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRl
eCA4N2U4NWI1NWU5MWVjNjk2YWMxNWIxYzVmMWExMTM1MWEzZTI2YWI3Li5jOTM2NGM1ZDA0YWIz
NjMxNzAyMGIyY2FlMjlmMDdlYjdhOTViYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC04OTcs
NyArODk3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAgbV9k
b3dubG9hZE91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihHX09VVFBVVF9TVFJFQU0ob3V0cHV0U3Ry
ZWFtLmxlYWtSZWYoKSkpOwogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9zZXNzaW9u
LT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rv
d25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFt
ZSgpKTsKKyAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRN
YW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQo
KSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9h
ZC5nZXQoKTsKICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2so
bV9wZW5kaW5nRG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRy
LT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAKaW5kZXggODNjMmYyOGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFmOS4u
N2E3NDgxZjdkNDI1ZjAyMzM3YTBjMTBhZGY5ZDY1NGY3MGVjN2RkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJv
b2wgaWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCA3MzU1MjU3YmVkYTFlNWFk
Y2RlNTU0ZTZiZDMzYmNlOWUyZjYwZDBkLi45YzhmYjhkNjkyOWQ4MTc3N2NkMTQ1MTE0ZWViZmYw
ZjgwMDhmNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAo
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycykKLSAgICAsIG1fbmV0d29ya1Nlc3Npb24oc3RkOjptYWtlX3VuaXF1ZTxT
b3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKKyAgICAsIG1fbmV0d29ya1Nlc3Npb24o
bWFrZVVuaXF1ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKIHsKICAgICBhdXRv
KiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIEFTU0VSVChz
dG9yYWdlU2Vzc2lvbik7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3Jr
U28KICAgICByZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpKTsKICAg
ICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChzb3VwTWVzc2FnZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKHdl
YlNvY2tldE1lc3NhZ2VOZXR3b3JrRXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCks
IHNvdXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
U29ja2V0VGFzaz4oY2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHBy
b3RvY29sKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggZjll
ZjRiYjU0MzBiYmY3M2IwNGEwZTNiZWMyNDc5MjhkNTllNzE2Yi4uNDY2YjI3ODJiZjkzYzc3MDcw
Zjc5N2RkMzY1MjM0Y2MxZGUzZmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBj
bGFzcyBOZXR3b3JrU2Vzc2lvblNvdXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewog
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHdvcmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1l
dGVycykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5l
dHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nl
c3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMmJik7CiAgICAgfk5ldHdvcmtTZXNzaW9uU291cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5w
dXRTdHJlYW0uY3BwCmluZGV4IDZkZGM4MWEzNmQ4NDljYmMyODM3OTNiNjE3MDY3YTI3ZTI5ZDkx
ZjAuLmMxOTM1MDAxNTdhMmFmYjlkYTQ2ZTkzYWI0ZWY1NTA4NDY5NDY0N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0
U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlucHV0
U3RyZWFtLCB2b2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0cmVhbS0+cHJpdi0+
cGVuZGluZ0FzeW5jUmVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92
ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7CisgICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNS
ZWFkID0gbWFrZVVuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIsIGNv
dW50KTsKIH0KIAogc3RhdGljIGdzc2l6ZSB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVh
ZEZpbmlzaChHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
R0Vycm9yKiogZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCmluZGV4IDhmMjA1Y2UwMjk3MTNk
OGJhMjEzZjE0M2JhNzFiYjExNDc1MmRlZjUuLjIyYWJkZWM2OWRiMjQ1YTRjZjk4M2YyNDdiMzhm
NzJkOTAwYTZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCkBAIC00OCw2ICs0OCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1JUQ1Byb3ZpZGVyOwogCiBjbGFzcyBMaWJX
ZWJSVENTb2NrZXRDbGllbnQgZmluYWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlw
ZSB7IFVEUCwgU2VydmVyVENQLCBDbGllbnRUQ1AsIFNlcnZlckNvbm5lY3Rpb25UQ1AgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01E
TlNSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrTUROU1JlZ2lzdGVyLmNwcAppbmRleCBlNzg2NTY4ZmY1MDVhN2I4NzE3ODcwZGY1N2ZhNTdk
MTVmNWQ3NzYzLi45MjY2NjhjMzhmZmY3MDhhZTUwMmY1OGZkNDE1Mjg4MDNlYzU1NWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1Jl
Z2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrTUROU1JlZ2lzdGVyLmNwcApAQCAtNjQsNiArNjQsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVn
aXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRv
Y3VtZQogfQogCiBzdHJ1Y3QgUGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVz
dChSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICA6
IGNvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAgICAgLCByZXF1ZXN0SWRlbnRp
ZmllcihyZXF1ZXN0SWRlbnRpZmllcikKQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtN
RE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFBBTDo6U2VzcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZW5kaW5nUmVx
dWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VS
ZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3Zl
KG5hbWUpLCBzZXNzaW9uSUQpOworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVl
PFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKICAg
ICBhdXRvKiByZWNvcmQgPSAmcGVuZGluZ1JlcXVlc3QtPnJlY29yZDsKICAgICBhdXRvIGVycm9y
ID0gRE5TU2VydmljZVJlZ2lzdGVyUmVjb3JkKHNlcnZpY2UsCiAgICAgICAgIHJlY29yZCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENN
b25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENNb25pdG9yLmNwcAppbmRleCAzNTNlYWM4Y2UxMWI2OTA2ZWZhZGQyZmQyNzE4Yjk3YWI1MmNk
YTRkLi5hYjcwNmRjMmU5MzRhOWE3ZWY5OTI2ODk3OTc0YmRjNzU0ZWEzZGY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01v
bml0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgTmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0
VXBkYXRpbmcoKQogewogICAgIG1faXNTdGFydGVkID0gdHJ1ZTsKICAgICBtX3J0Y1Byb3ZpZGVy
LmNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdKCkgewotICAgICAgICBtX21hbmFnZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgbV9t
YW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdv
cmtNYW5hZ2VyPigpOwogICAgICAgICBtX21hbmFnZXItPlNpZ25hbE5ldHdvcmtzQ2hhbmdlZC5j
b25uZWN0KHRoaXMsICZOZXR3b3JrUlRDTW9uaXRvcjo6b25OZXR3b3Jrc0NoYW5nZWQpOwogICAg
ICAgICBtX21hbmFnZXItPlN0YXJ0VXBkYXRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCmluZGV4IDE2YjdmYWUxOWY2MGJmODEzOTg0MTM1OWJkNjg3YzY0ZTQ5MzFmNDYuLmQyMmQy
ZGE4N2FkMTZjOTRhNjZlNjI5ZDIyY2JhYjIwYmU2OTNkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cApAQCAtNjAsNyArNjAsNyBAQCBOZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRl
cihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbgogICAgIDogbV9jb25u
ZWN0aW9uKCZjb25uZWN0aW9uKQogICAgICwgbV9ydGNNb25pdG9yKCp0aGlzKQogICAgICwgbV9y
dGNOZXR3b3JrVGhyZWFkKGNyZWF0ZVRocmVhZCgpKQotICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0
b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0
d29ya1RocmVhZC5nZXQoKSkpCisgICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+
KG1fcnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCiB7CiAjaWYgZGVmaW5lZChOREVCVUcpCiAgICAg
cnRjOjpMb2dNZXNzYWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfTk9ORSk7CkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNvY2tldCh1aW50NjRfdCBpZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjoKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0
eXBlKSk7CisgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29j
a2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQodWludDY0X3QgaWRl
bnRpZmllciwgY29uc3QgUlRDTmV0d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2
X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIE5l
dHdvcmtSVENQcm92aWRlcjo6d3JhcE5ld1RDUENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmll
ciwgdWludDY0X3QgbmV3QwogewogICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlk
ZW50aWZpZXIsIG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCA9IG1fcGVuZGluZ0lu
Y29taW5nU29ja2V0cy50YWtlKG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKTsKLSAgICAg
ICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0
Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2Nr
ZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsKKyAgICAgICAgYWRkU29ja2V0
KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVy
LCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNl
cnZlckNvbm5lY3Rpb25UQ1ApKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCAzODM4MmIwOWQ0ZmIzYmUyNjRmODliNzc4NDFhNDFk
N2MwOGNhYzA1Li5jNWVmNmQ5OWE1NjBkZDE0ODhmMTg0OTk1YWU4YTdiMTZkOWFkMjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNz
YWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIHJlcGx5RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJT
eW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1
ZXN0SUQpOwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0
byB0aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rl
cik7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlz
cGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29u
bmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5h
bWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAg
IGVuY29kZXItPnNldElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5
bmMgcmVxdWVzdCBJRC4KQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVuYWJs
ZUluY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKCkKICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2Vz
VGhyb3R0bGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luY29taW5nTWVzc2FnZXNUaHJv
dHRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNvbm5l
Y3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2Vz
VGhyb3R0bGVyID0gbWFrZVVuaXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0
aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBv
c3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtODQzLDcgKzg0
Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNS
ZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigi
SVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gIldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIikgewogICAgICAgICBpZiAoIW1f
ZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggMjBmNWVjNWIyMDJiZWMyYmRmNThmMDIwZWJk
ZWVmODMxNDkzMTFiZi4uYWRjNGFhZDk4ODE4ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDMzLDcgKzQzMyw3
IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6Omlz
U3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5h
dGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2Vp
dmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29k
ZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RG
TW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhh
bmRsZXIsIHVpbnQ2NF90CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNN
ZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxF
bmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0
QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsK
ICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IGNjYTA3MzkwYWRlYzQ0NmRlNzQ2NmNmOGUxMDEy
M2MyNzkzODUzNTIuLmZkNTE3MDE3MTJiMDYyOWQ0NzI1MmQwNDA4OTZjNjRmY2JjYmIyYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IERlY29kZXI6OnVud3JhcEZvclRlc3RpbmcoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdyYXBwZWRNZXNzYWdlKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNv
ZGVyPih3cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0
ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+
KHdyYXBwZWRNZXNzYWdlLmRhdGEoKSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBX
VEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhfdCog
cm91bmRVcFRvQWxpZ25tZW50KGNvbnN0IHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25tZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDg1NDUy
Y2RhN2UwNDVlNDQ1NWUwN2I5M2JhZmNhMzViMTAyMDAxMWUuLmE3NDlhYWI4NzAwNTRjZWI2OTBl
NWYxNGY0MDc1NjNmZmNkMGY5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAg
ICAgfQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFts
aXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24p
XSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlO
YW1lKCksIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJB
c3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5j
b2RlciA8PCBsaXN0ZW5lcklEOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdU
Rk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggM2Q2ZjM0Mjg5MmJjODgzOTA2NzhlOGMzNjQ2
MzkxMTBkZTRmNTcyNi4uNzcxNDQ4YTQ0ZDA4ODZkZDAxYmIwYzJkZTY0ZGM5YTQyODYyN2EyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDMsNyAr
NDMsNyBAQCBjbGFzcyBNZXNzYWdlU2VuZGVyIHsKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoIVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29k
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVu
Y29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAg
ICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAg
ICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29h
Lm1tCmluZGV4IDM3MDJhY2M3ZGY1MWJkODQ2YjkzYWY2NGJmMDcwYTRjMTAwMzkxOWYuLjg3ZGQy
OGY4MDg2NzgyY2UyYTNkZjc5MGY0YWMwZTZkNzQ5ZGFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikK
ICAgICAgICAgLCBtX3dhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVj
dGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OndhdGNoZG9nVGltZXJGaXJlZCkKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgICAgICAsIG1fYXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGND
b25uZWN0aW9uLmdldCgpKSwgIkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJL
aXQ6OkFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kKSkKKyAgICAgICAgLCBtX2Fzc2VydGlvbiht
YWtlVW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9n
ZXRfcGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRj
aGRvZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCiAjZW5kaWYKICAg
ICB7CiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpAQCAt
MjIwLDcgKzIyMCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25u
ZWN0ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBt
ZXNzYWdlLCB3aGljaCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNl
LgotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMi
LCAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CiAgICAg
ICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBF
X01BS0VfU0VORCkpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC00MTIs
NyArNDEyLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdl
RGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBib2R5
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVf
dCBib2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90
KTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5
U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPERlY29kZXI+KGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNo
bWVudD4geyB9KTsKICAgICB9CiAKICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXIt
Pm1zZ2hfaWQgPT0gb3V0T2ZMaW5lQm9keU1lc3NhZ2VJRDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hf
bXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MpOwogICAg
ICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuc2l6
ZTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9k
eSwgbWVzc2FnZUJvZHlTaXplLCBbXShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5n
dGgpIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1l
c3NhZ2VCb2R5U2l6ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7
CiAgICAgICAgICAgICB2bV9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm1fYWRkcmVzc190PihidWZmZXIpLCBsZW5ndGgpOwogICAgICAgICB9LCBXVEZNb3Zl
KGF0dGFjaG1lbnRzKSk7CiAgICAgfQpAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3Qq
IGhlYWRlcikKICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAg
IHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9y
RGF0YSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwg
bnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERl
Y29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0
YWNobWVudHMpKTsKIH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5
cyBpbmNsdWRlIHRoZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KQEAgLTUyNiw3ICs1MjYsNyBAQCB2
b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1
cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2Vy
dGlvbihzdGQ6Om1ha2VfdW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOworICAg
IGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNz
ZXJ0aW9uPihoZWFkZXIpKTsKICNlbmRpZgogCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFs
aXplQ29ubmVjdGlvbiIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjNiNmJlNzI3MWU0NDU4ODM5NTA1YWE5MTVlMzg3
M2Y4NTE0ZGVkZC4uNzdhZjliMjg1ODQ1MjZiYjcwYzdmZmM4ZTMyNTZhM2JhYTEzYTI4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKCkK
ICAgICBpZiAobWVzc2FnZUluZm8uaXNCb2R5T3V0T2ZMaW5lKCkpCiAgICAgICAgIG1lc3NhZ2VC
b2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7
CiAKLSAgICBhdXRvIGRlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VC
b2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRz
KSk7CisgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwg
bWVzc2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwog
CiAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIApAQCAtNDgy
LDcgKzQ4Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3Nh
Z2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVy
cm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElCKQot
ICAgICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5p
eE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOworICAgICAgICAgICAgbV9wZW5kaW5n
T3V0cHV0TWVzc2FnZSA9IG1ha2VVbmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVz
c2FnZSkpOwogICAgICAgICAgICAgbV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9zb2NrZXQu
Z2V0KCksIEdfSU9fT1VULCBtX2Nvbm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4g
Z2Jvb2xlYW4gewogICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkgewog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9wZW5kaW5nT3V0cHV0TWVzc2FnZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXgg
NjQwZjQ1Mjk5ZTNiMjY2ZTAyNjljY2NjYzk0NTJiM2JhNTc5ZWZiMS4uNWFkZmQ4MmJlY2E0NmRi
MDI0NDdlOGJjYjZkMzg0YzJjMDE1NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3Bh
dGNoIGl0LgogICAgICAgICAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKDApOwot
ICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtX3Jl
YWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0
dGFjaG1lbnRzKSk7CisgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29k
ZXI+KG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIFdU
Rk1vdmUoYXR0YWNobWVudHMpKTsKICAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uo
V1RGTW92ZShkZWNvZGVyKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKaW5k
ZXggZGQyYjY2YTdjYTE5NTkxYjZlZTY3YjhmMjg0ZmQyNTRhMzgyNzg1ZC4uNTY4MzcyMTNkZmJl
YWViNGQ1OWU5M2MzZDQ5ZjZjN2FjMmY1MzRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCkBA
IC00NCw2ICs0NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9HTW9kdWxlIEdNb2R1bGU7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgTW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGUpOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IE1vZHVsZShjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KaW5kZXggODIzMmRiNGViNTZlYWNiNmY4
Y2U4NTU2NjRiOGI3ODJhYjY1MGE5OC4uN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdmMDJi
MDRjZjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0
aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3Rp
bmdDb250ZXh0Lm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yUG9ydChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQogewotICAgIGF1dG8g
bGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4
dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9z
dGluZ0NvbnRleHQ+KCk7CiAKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewogICAgICAg
ICBrQ0FDb250ZXh0UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCkBAIC01
Miw3ICs1Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhv
c3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hCiAjaWYgSEFWRShPVVRfT0ZfUFJP
Q0VTU19MQVlFUl9IT1NUSU5HKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+
IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29u
c3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsYXll
ckhvc3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0Pigp
OworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5n
Q29udGV4dD4oKTsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUg
PSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCkBAIC04Miw3ICs4Miw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVG
b3JFeHRlcm5hbEhvc3RpCiAjaWYgUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPExheWVy
SG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsUGx1
Z2luSG9zdGluZ1Byb2Nlc3MoKQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9z
dGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5
ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6
T3V0T2ZQcm9jZXNzOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNv
bnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRp
b25zOkB7IGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwogICAgIHJl
dHVybiBsYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDk3ZTJkZjM1M2IzNjgyMzkyOWEz
MWFlOTU3YTFkZGNkYzIxYzM3ZDYuLmI5OGNhOTRiYzllZmMyM2IyZWQ4MThhNWI3ODQzMzcyMzE3
ZTljNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmgKQEAgLTQ5LDcgKzQ5LDggQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwog
Y2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzOwogCi1jbGFzcyBQbHVnaW5Db250cm9sbGVyUHJveHkgOiBQbHVnaW5Db250cm9sbGVyIHsK
K2NsYXNzIFBsdWdpbkNvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBQbHVnaW5Db250cm9sbGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
bHVnaW5Db250cm9sbGVyUHJveHkpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAzNjZiOTgzY2Mw
YmVhNTgzODYzYTdjZDYzMzNmOTQ4ZGY3NDg0NDM1Li5jZTgyNjdkMmVlNzhjYWNiM2RkYTBhOWIz
NzViZmFhZmM2ODZlZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpTdHJpbgogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5J
bnRlcm5hbChjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVy
cywgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3Rl
TGF5ZXJDbGllbnRJRCkKIHsKLSAgICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGx1Z2luQ29udHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRl
cnMpOworICAgIGF1dG8gcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbWFrZVVuaXF1ZTxQbHVnaW5D
b250cm9sbGVyUHJveHk+KHRoaXMsIGNyZWF0aW9uUGFyYW1ldGVycyk7CiAKICAgICBQbHVnaW5D
b250cm9sbGVyUHJveHkqIHBsdWdpbkNvbnRyb2xsZXJQcm94eVB0ciA9IHBsdWdpbkNvbnRyb2xs
ZXJQcm94eS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IGJiZDQyM2Jj
ZjU3MTVlNGFkNzBiZjUyZGVmOGMyYzMwYzQxYmYwZjYuLjNlNjFiYmQwMDBlMWY0Y2RiNmMyYTM2
Y2E0Zjc1ZTkwNGY4MzVjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgY2xhc3MgVVJMIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+
IHsKICAgICB7CiAgICAgICAgIEFTU0VSVChiYXNlVVJMKTsKICAgICAgICAgYmFzZVVSTC0+cGFy
c2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gc3RkOjptYWtl
X3VuaXF1ZTxXVEY6OlVSTD4oKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVS
TCk7CisgICAgICAgIGF1dG8gYWJzb2x1dGVVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPigqYmFz
ZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKICAgICAgICAgY29uc3QgV1RG
OjpTdHJpbmcmIGFic29sdXRlVVJMU3RyaW5nID0gYWJzb2x1dGVVUkwtPnN0cmluZygpOwogCiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFQSTo6VVJMKFdURk1vdmUoYWJzb2x1dGVVUkwp
LCBhYnNvbHV0ZVVSTFN0cmluZykpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFVSTCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBpZiAo
bV9wYXJzZWRVUkwpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkVVJMID0g
c3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOworICAgICAg
ICBtX3BhcnNlZFVSTCA9IG1ha2VVbmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5n
KTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KaW5k
ZXggMjU5Mjg0N2UzNDFhM2I2ZjcyODc1NGJkNzg4YTY2NTNkZDIyMTViMC4uZDNmZjYyMWVjMGY0
YTEwZDc1NjQ4N2NjMjE2ZjQ5NWNlODZkNzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KQEAgLTgzLDcg
KzgzLDcgQEAgYm9vbCBSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBSZW1vdGVPYmplY3RJbnZvY2F0aW8KICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShibG9ja1NpZ25hdHVyZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgcmVzdWx0Lm1fcmVwbHlJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBseUluZm8+KHJlcGx5
SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUpKTsKKyAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZv
ID0gbWFrZVVuaXF1ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUp
KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCA2NWRh
OWVmZjAxYjQzZWE1NzEwODAyZjZjNDZhNmQwMjAyNjU2OTNlLi40ODk5NzYyOTMyYjdhZjY5MjIx
ZDA1MGFmNjc0NTgzNmZjMzg3YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xMDksNyArMTA5
LDcgQEAgLSAoaWQpX2luaXRXaXRoV2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlJilwYWdlCiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBf
cmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2Jq
ZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1h
a2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAg
ICByZXR1cm4gc2VsZjsKIH0KQEAgLTExOSw3ICsxMTksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQ
YWdlUHJveHk6KFdlYktpdDo6V2ViUGFnZVByb3h5JilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVn
aXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNl
bGYsIHBhZ2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsK
IH0KQEAgLTE2MCw3ICsxNjAsNyBAQCAtICh2b2lkKV9zZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0
aW9uICopaW52b2NhdGlvbiBpbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdEludAogICAgICAgICBp
ZiAoc3RyY21wKFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5
QmxvY2tTaWduYXR1cmVdLm1ldGhvZFJldHVyblR5cGUsICJ2IikpCiAgICAgICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiUmV0dXJu
IHZhbHVlIG9mIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMpIiwgc2VsX2dldE5h
bWUoaW52b2NhdGlvbi5zZWxlY3RvcildOwogCi0gICAgICAgIHJlcGx5SW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVy
YXRlUmVwbHlJZGVudGlmaWVyKCksIHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAgICByZXBs
eUluZm8gPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJ
bmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKIAog
ICAgICAgICAvLyBSZXBsYWNlIHRoZSBibG9jayBvYmplY3Qgc28gd2Ugd29uJ3QgdHJ5IHRvIGVu
Y29kZSBpdC4KICAgICAgICAgaWQgbnVsbCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAppbmRleCA3
ZWQxMWU2YzE3MWUyMGJlMWU5ZWFkYjMwN2U3MWZjNDhiZmRlODQ5Li5mYWVmZWQyZGNjODM4ZWU5
NTczOTA2NWRhYzYzZjEzNTYzZjBkM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRDb250ZXh0TWVudUl0ZW1DcmVhdGUoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0q
IGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X0NPTlRFWFRfTUVOVV9JVEVNLCBOVUxMKSk7CiAKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEpOworICAg
IGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGli
PihpdGVtRGF0YSk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBz
dWJNZW51ID0gaXRlbURhdGEuc3VibWVudSgpOwogICAgIGlmICghc3ViTWVudS5pc0VtcHR5KCkp
CiAgICAgICAgIHdlYmtpdENvbnRleHRNZW51SXRlbVNldFN1Yk1lbnUoaXRlbSwgYWRvcHRHUmVm
KHdlYmtpdENvbnRleHRNZW51Q3JlYXRlKHN1Yk1lbnUpKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAg
V2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KEd0a0Fj
dGlvbiogYWN0aW9uKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19BQ1RJT04oYWN0
aW9uKSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJL
SVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVO
VV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CisgICAgaXRlbS0+cHJpdi0+
bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CiAK
ICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJLaXRDb250ZXh0TWVu
dUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKEdBY3Rpb24q
IGFjdGlvbgogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCF0YXJnZXQgfHwgZ192YXJpYW50X2lz
X29mX3R5cGUodGFyZ2V0LCBnX2FjdGlvbl9nZXRfcGFyYW1ldGVyX3R5cGUoYWN0aW9uKSksIG51
bGxwdHIpOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRF
WFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwg
bnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0
YXJnZXQpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0
TWVudUl0ZW1HbGliPihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOwog
CiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0xOTQsNyArMTk0LDcgQEAgV2ViS2l0Q29udGV4dE1l
bnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uKFdl
YktpdENvbnQKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05U
RVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0s
IG51bGxwdHIpKTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250ZXh0
TWVudUFjdGlvbklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0
aW9uVHlwZTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rp
b25UYWcoYWN0aW9uKSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsK
KyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVt
R2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwg
d2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsKIAogICAgIHJldHVybiBp
dGVtOwogfQpAQCAtMjE2LDcgKzIxNiw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsCiAKICAg
ICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0o
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CiAg
ICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0No
ZWNrYWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAg
aXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRl
bUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiks
IFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1h
a2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVB
Y3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogCiAg
ICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0yMzksNyArMjM5LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hh
ciogbGEKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0
ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUs
IENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJl
bCkpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVu
dUl0ZW1HbGliPihBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcs
IFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKICAgICBpdGVtLT5wcml2LT5zdWJNZW51ID0gc3Vi
bWVudTsKICAgICB3ZWJraXRDb250ZXh0TWVudVNldFBhcmVudEl0ZW0oc3VibWVudSwgaXRlbSk7
CiAKQEAgLTI1Niw3ICsyNTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250
ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogV2ViS2l0Q29u
dGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcih2b2lk
KQogewogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01F
TlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxw
dHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29u
dGV4dE1lbnVJdGVtR2xpYj4oU2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rp
b24sIFN0cmluZygpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oU2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9B
Y3Rpb24sIFN0cmluZygpKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKaW5kZXggNWVkMTQzYTk5ODU5MDQ5NmMzMzc2YTU2OTg4MTE1M2E2YTAyYjI4Yy4uZjMzY2Fi
MzA1ZmVlMTI3NGZhYTdiMjE4MzhlOWJiN2VmNzZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CiAgICAg
LCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PgogICAgICwgcHVibGljIFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0cnVjdCBDbGllbnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggN2FkMzMz
MTQ1MzkxODg4OWZkM2I5ODk2Mzg2YThiZWQxZjUxOWExNC4uMzkxNGE0YzIwMTRhOWE1NGE2MzQ4
OGE0ZTc0MzgxOWM2YThkYjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bQpAQCAtNzksNyArNzksNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFT
U0VSVCh2aWV3Q29udHJvbGxlcik7CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHkt
Pm1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50
UmVxdWVzdC5nZXQoKSwgdmlld0NvbnRyb2xsZXIpOworICAgICAgICBwYXltZW50Q29vcmRpbmF0
b3JQcm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbWFrZVVuaXF1ZTxQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1l
bnRSZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNTRVJUKCFwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBheW1lbnRDb29y
ZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dpdGhDb250ZW50
Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRl
eCA4NmU3NDRjMTA4ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2Li40ZjgzNzAyNGVlNWYz
NGZmYTBlNjliYWY3YjNiZmM4ODFhNTI4MDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAt
NTUsNiArNTUsNyBAQCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24gOiB1aW50OF90OwogdXNpbmcgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT47CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciA6
IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhl
bnRpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25N
YW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggNTZhNzgzYTBiMjNiMjZhMjBjNWI4
ZmE0YTU5ZjE1N2E0YzAzN2JiNy4uMmQ1ZDFhZmMwODI3YTQxYTBiZDgzYmJhYTgwZjc4ZjYxNGY1
YmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVu
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRl
bnNpb25Db2NvYS5tbQpAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFNhbmRib3hFeHRlbnNpb25JbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBs
PiBjcmVhdGUoY29uc3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBP
cHRpb25hbDxwaWRfdD4gcGlkID0gV1RGOjpudWxsb3B0KQogICAgIHsKQEAgLTE2MCw3ICsxNjEs
NyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikgLT4gT3B0aW9uYWw8SGFuZGxlPgogICAgICAgICByZXR1cm4ge3sgfX07CiAKICAg
ICBIYW5kbGUgaGFuZGxlOwotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICBo
YW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gbWFrZVVuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1w
bD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBk
YXRhUmVmZXJlbmNlLnNpemUoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmgKaW5kZXggYzkzNGU5MDdmODk3ZjM3ZmUwZTA4ZjkwZjZmMTllMzQzZjIwZjVlZi4uMzlh
ZTBkNzdjZDBmYTAxMTE3MWYxOTNhZDhiN2MwZjM4MTE5MTY3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oCkBAIC0zMyw2
ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2UgOiBwdWJsaWMgV2ViQ29yZTo6Q0FSaW5nQnVmZmVyU3RvcmFnZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggMThkYzJm
YjhlZDEzZDE1MzQxMmVhMzBlMjkxMTE3OGVhY2VmYzVhZS4uNzA0MzBmNDQzMTJjOGE1NjJjZTE1
ZmM3MzJmNjlkMzg3NmZlOWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciYgdGV4bWFwTGF5
ZXIoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllciYgY29tcG9zaXRpb25MYXllcikKIHsKICAgICBh
dXRvJiBjb21wb3NpdGlvblN0YXRlID0gY29tcG9zaXRpb25MYXllckltcGwoY29tcG9zaXRpb25M
YXllcikuY29tcG9zaXRpb25TdGF0ZSgpOwogICAgIGlmICghY29tcG9zaXRpb25TdGF0ZS5sYXll
cikgewotICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBt
YWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICAgICAgY29tcG9zaXRpb25TdGF0
ZS5sYXllci0+c2V0SUQoY29tcG9zaXRpb25MYXllci5pZCgpKTsKICAgICB9CiAgICAgcmV0dXJu
ICpjb21wb3NpdGlvblN0YXRlLmxheWVyOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXll
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yb290TGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJMYXllcj4oKTsKKyAgICBtX3Jvb3RMYXllciA9IG1ha2VVbmlxdWU8VGV4
dHVyZU1hcHBlckxheWVyPigpOwogICAgIG1fcm9vdExheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZh
bHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBtX3Jv
b3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
CmluZGV4IGNkM2U1N2M2YmNiOWQ4ZGMxZmY5OWNhZDU5YzRlMTNmZjY2MDNhNmIuLmJjYjIzNTk3
NWIxMzNkMmUyNzY3NmQyODNmZTg5MTM4MWEwZDVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0
ZShDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbAogVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJl
YWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25p
dG9yOjpDbGllbnQmIGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCwgUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlELCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWxlRmFj
dG9yLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIHBhaW50RmxhZ3MpCiAgICAgOiBtX2NsaWVu
dChjbGllbnQpCiAgICAgLCBtX3BhaW50RmxhZ3MocGFpbnRGbGFncykKLSAgICAsIG1fY29tcG9z
aXRpbmdSdW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10g
eyByZW5kZXJMYXllclRyZWUoKTsgfSkpCisgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChtYWtl
VW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0p
KQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAg
LCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
Y3JlYXRlKGRpc3BsYXlJRCwgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KSkKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5oCmluZGV4IDFhMDU0NzUwN2VjMWMxYTgxMjQ3MmJiN2ViZDlmYTBkNGFkMTNhNDgu
LjA3ZThiYmM5YjVjOWMzYzZjOWQ4ZDZjM2I5NDVlNTM5MzI3Yjg3NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgK
QEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgTlBWYXJpYW50RGF0YTsKIGNsYXNzIFBsdWdpbjsKIAog
Y2xhc3MgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKTsK
IAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJl
bW90ZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3Rl
T2JqZWN0TWFwLmNwcAppbmRleCA2MWUxZjk0MDI1MjM4NWRiODA1ZWMxMjJkZmYxYzllNGYxYjcy
NTYzLi5kNGI1MjRjODI5ZWM2NjcyMWRmMWE3MGQyZDUxM2FlNGViM2YzZDJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAt
NzcsNyArNzcsNyBAQCB2b2lkIE5QUmVtb3RlT2JqZWN0TWFwOjpucE9iamVjdFByb3h5RGVzdHJv
eWVkKE5QT2JqZWN0KiBucE9iamVjdCkKIHVpbnQ2NF90IE5QUmVtb3RlT2JqZWN0TWFwOjpyZWdp
c3Rlck5QT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCwgUGx1Z2luKiBwbHVnaW4pCiB7CiAgICAg
dWludDY0X3QgbnBPYmplY3RJRCA9IGdlbmVyYXRlTlBPYmplY3RJRCgpOwotICAgIG1fcmVnaXN0
ZXJlZE5QT2JqZWN0cy5zZXQobnBPYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOUE9iamVjdE1l
c3NhZ2VSZWNlaXZlcj4odGhpcywgcGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCkucmVsZWFz
ZSgpKTsKKyAgICBtX3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIG1ha2VVbmlx
dWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBP
YmplY3QpLnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gbnBPYmplY3RJRDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5jcHAKaW5kZXggN2IwMmI1ZTEyZjMyYzcyZDM4ZjUyMDQ1YmI2ZDZhMjNi
NjJhZTJlMS4uMjYxZDdhODk2OTMwNmE4OTI1YzRhYjM2ZTQ3OTQ3YjM5NmMxMjUyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgYm9vbCBt
b2R1bGVNaXhlc0d0a1N5bWJvbHMoTW9kdWxlKiBtb2R1bGUpCiAKIGJvb2wgTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnRyeUxvYWQoKQogewotICAgIG1fbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxN
b2R1bGU+KG1fcGx1Z2luUGF0aCk7CisgICAgbV9tb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4o
bV9wbHVnaW5QYXRoKTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCBlYTJiZTkz
MDhjYmJlNmRkN2ViOGNmMmM1ODhjOGZmNjE5ZWE5OTNjLi45NTUxM2Y0Nzk4MmZkNjdlZTVmOThk
ZDc5OTZjODU5OGYxZjQ2M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApA
QCAtNTEsNiArNTEsNyBAQCBjbGFzcyBFbmNvZGVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIExheWVyQ2hhbmdlIHsKICAgICAgICAgTmFtZUNoYW5n
ZWQgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMSwKQEAgLTk0LDYgKzk1LDcgQEAgY2xh
c3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5
ZXJDcmVhdGlvblByb3BlcnRpZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgICAgIExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzKCk7CiAKICAgICAgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CkBAIC0xMDksNiArMTExLDcgQEAgY2xhc3Mg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJQ
cm9wZXJ0aWVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBMYXllclByb3BlcnRpZXMoKTsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExh
eWVyUHJvcGVydGllcyYgb3RoZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0KaW5kZXggMWYyZGU0ZDAzN2VhM2U4MzAyODdhYjk4Y2IyYThmMjFjNGVjZWEyZS4uMGQyMjdm
ZmMxZDljNTU1NmFhZDkyZTdlZTE1NzY1ZTE2YjM0NDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTUyLDEzICsxNTIsMTMgQEAgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJv
cGVydGkKICAgICAvLyBGSVhNRTogTGF5ZXJQcm9wZXJ0aWVzIHNob3VsZG4ndCBiZSBjb3B5YWJs
ZTsgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZSBzaG91bGQgY29weSB0aGUgcmVsZXZhbnQg
cHJvcGVydGllcy4KIAogICAgIGlmIChvdGhlci50cmFuc2Zvcm0pCi0gICAgICAgIHRyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhl
ci50cmFuc2Zvcm0pOworICAgICAgICB0cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKIAogICAgIGlmIChvdGhlci5z
dWJsYXllclRyYW5zZm9ybSkKLSAgICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFu
c2Zvcm0pOworICAgICAgICBzdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXllclRyYW5zZm9ybSk7CiAKICAgICBp
ZiAob3RoZXIuZmlsdGVycykKLSAgICAgICAgZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOworICAgICAgICBmaWx0ZXJz
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7
CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTM1NCw3ICszNTQsNyBAQCBi
b29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNm
b3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJlc3Vs
dC50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1bHQudHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBp
ZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgU3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKSB7
CkBAIC0zNjIsNyArMzYyLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAgcmVzdWx0LnN1
YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVz
ICYgSGlkZGVuQ2hhbmdlZCkgewpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyb3VuZGVkUmVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVk
UmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRl
ZFJlY3QpOworICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwogICAgIH0KIAogICAgIGlmIChy
ZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBTaGFwZVBhdGhDaGFuZ2VkKSB7CkBAIC00NzEsNyAr
NDcxLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc0Zyb250QnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aWYgKGhhc0Zyb250QnVmZmVyKSB7Ci0gICAgICAgICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KG51bGxwdHIpOworICAgICAg
ICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlPihudWxscHRyKTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmJhY2tpbmdT
dG9yZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCkBAIC00
ODYsNyArNDg2LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgIH0KIAogICAgIGlmIChy
ZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBGaWx0ZXJzQ2hhbmdlZCkgewotICAgICAgICBhdXRv
IGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7
CisgICAgICAgIGF1dG8gZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0
aW9ucz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqZmlsdGVycykpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlc3VsdC5maWx0ZXJzID0gV1RGTW92ZShmaWx0
ZXJzKTsKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllclRyZWVUcgogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVy
dGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJQcm9wZXJ0aWVzPigpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBtYWtlVW5pcXVl
PExheWVyUHJvcGVydGllcz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqbGF5ZXJQ
cm9wZXJ0aWVzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IDk3OGM0YmJl
ZDdiNWNkOTFjYWFlYzE1NGJjOGJhMTRiYWI3NTM0NjEuLmU4MjZhMzBiMTJlMjRlY2Y0MzBjNjli
NzZiMWE2ZjI4ZjViYjk4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTUyMiw3ICs1MjIsNyBAQCBib29sIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNOZXdSb290Tm9kZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOworICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0g
bWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CiAKICAgICBib29sIGhhc0NoYW5nZWRQ
cm9wZXJ0aWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ2hhbmdlZFByb3BlcnRpZXMp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFw
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwCmluZGV4IGM3MzQ3Yzc5ZTY2OTM4Mzc4NWQwNWQyMjllNDdiNzQ3YzFmMGNhNTUuLmIy
Y2Q0ODQ2Njc3Y2U5N2RmYWMyODU4NDkwYzFlYTQzNGY5NjI5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKQEAgLTYwLDcg
KzYwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IGltYWdlID0gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CiAgICAgUmVmUHRyPGNhaXJvX3Q+IGJpdG1h
cENvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoaW1hZ2UuZ2V0KCkpKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0
ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1h
cDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9p
bnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9T
aGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggOTJmMTA2MmIyOTBmNzc1ZGI1YWU3ZWQxOTUyYTlj
YTg1OGFiMzEyMi4uMDE2YWJiZDk5M2UxOGE0NWMwMWE3ZjA0OTdkY2MzMWE1M2I0MzcwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTAw
LDcgKzEwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0o
Yml0bWFwQ29udGV4dC5nZXQoKSwgMCwgbV9zaXplLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRT
Y2FsZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAxLCAtMSk7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CiB9
CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291
cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1h
cERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBE
aXJlY3QyRC5jcHAKaW5kZXggNjBmOGYzY2I3MzI4OWI2YjBkMmY0YzM1MTQ2ZjFjZmVkNDAzNGE4
MC4uMTAwMWVlM2U1MjkyZWRjYjUzNmY4MjMzMDNjMmM3NGMyYjFlOTI5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCkBA
IC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBtX2JpdG1hcCA9IGNyZWF0
ZURpcmVjdDJEU3VyZmFjZSgpOwogICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gYml0bWFw
Q29udGV4dCA9IERpcmVjdDJEOjpjcmVhdGVSZW5kZXJUYXJnZXRGcm9tV0lDQml0bWFwKG1fYml0
bWFwLmdldCgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+
KEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0
LmdldCgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkp
OwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaApp
bmRleCAyOTk1ODEwOTVkZDFkMWIxNWFmZWFiYjRkYWNiZWQwNWQyYmRkMTE0Li41NDVhN2JlNGQ0
ODE5NzEzMjhkMWMzZjc5ZDI3MWVkOWEyMWY4MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xh
c3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQXV0b21hdGlvbkNs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+QXV0b21hdGlvbkNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IDI4ZmFmNjg3
MTlhOWQ3MjhkNTFiNmM3NzJkODRlMTdiNjQ5MDk3Y2EuLjJhZTJhNTAzNGMzYTQxNzFjY2Y0Nzdi
OTc4NWI3M2E2ZjI0ZGI4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGVu
dW0gQXV0b21hdGlvblNlc3Npb25Ccm93c2luZ0NvbnRleHRPcHRpb25zIDogdWludDE2X3Qgewog
fTsKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgSmF2YVNjcmlwdERpYWxvZ1R5cGUg
ewogICAgICAgICBBbGVydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggYWYxMDljMWRmNjcwMGRjMjNlMmUzMzFiMGI1MGVm
YmNmZjQyODY2Ny4uODE2ZjcxZTEyNjcwY2IzZDY1YjFlNjMyODAzYTZiNDBlZjdkYmZhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7
CiAKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggMGY4Y2FiOTczMjlmMDk1N2YzMmI0N2MyNzc4MWQxZTc4
NmZhMTQ3ZC4uOGI0NGEzZjQ1NmM1MzJhZDMzODA2ZWY2OWI0N2VhZDA5NDFkZjdiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAppbmRleCA5
MmIyZDY3NWRmY2EyY2FmZGEyMTFiM2Y3MWM1Nzk4YWZkNDVkNjJhLi5iNGUyYWRlNzI5ZWE2NmQ4
ZGRhOGRkNTAyMTE4YWU0YWJkYjIxODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaApAQCAtMzcsNiArMzcs
NyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIERpY3Rpb25hcnk7CiAKIGNsYXNzIERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5EaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDAyMzc2ZTFl
MTEwZDQ3NmViMmI5MTg1ZTRlMmZjZDhkNmUxMzMyZTEuLmIyZWFjYzliODMyNTk4YjE3YTk5ZGJk
OWQ2N2VmMjRlNDczYWVkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEb3dubG9hZENsaWVudC5oCkBAIC00Niw2ICs0Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVy
d3JpdGUgeyBObywgWWVzIH07CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRG93bmxvYWRDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGaW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RmluZENsaWVudC5oCmluZGV4IGYzMTIzYWYxOTUxNjVhNjY5ZDY2NjgzMThiODEyZTkzMzY1ZTZk
YzIuLjZkMWUzYjIxMWZlMGRkOTVhOTQ4NTA1ODQxN2RiNGRlMDgyNDBkNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaApAQCAtMzksNiArMzksNyBAQCBj
bGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRmluZENsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rmlu
ZENsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRmluZE1hdGNoZXNDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
aW5kTWF0Y2hlc0NsaWVudC5oCmluZGV4IGM2ZjQ1NzM0MmQxMTE5MDFkY2E2ZDNjMzA5MDMzN2Zl
ZTdhMWZlYzIuLmZhZTFkY2QzY2Q2ODgzNTA3ZWZiZTNkOTVkNWQ2ZjcyYTAzNjlkZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5o
CkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewog
CiBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZE1hdGNoZXNDbGllbnQoKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKaW5kZXggNWIwYzZjY2EyNGVl
ZmMxYTk1ODE5MWUwZTI3OTRhNDdiNGY1NGU3Yy4uZjBjYTA2MDExMTk4MDJlZDM2OWI0ZDA3OGQ4
M2M4NjJhNTE2MTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNs
aWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0Owog
CiBjbGFzcyBGb3JtQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Gb3JtQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCmluZGV4IDEzNzU1MjljZGEyNWYy
NWNiYjE3OWJkYzg5ODkxNzFjODllZTg4NTcuLjg5NzRjZDEzMzk0Nzc1MDI3M2Y0NTBmMGU4Mzk2
YzBlNmIxMzIwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
dWxsc2NyZWVuQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1
bGxzY3JlZW5DbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRnVsbHNjcmVlbkNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgQVBJVHlw
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlv
blByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Q
cm92aWRlci5oCmluZGV4IDUyNjZiYzJjYTU0Y2YwOTljMjM4Y2FjYzYyMTQ0Yzk3OTlhMDk3OTcu
LjdjNmY1NjI5Y2I2MGU1M2JjN2I4NWFhODg4OWY3MmU2OGQ3YTRjMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAt
MzQsNiArMzQsNyBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTsKIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvblByb3ZpZGVyKCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29v
a2llU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5jcHAKaW5kZXggOTgxYTk4NWJiZGU1ZjFjYjY1Zjk2Y2JiMjEzOWZiY2YxOWQ3ZGNlNS4u
ZTEyMmVlM2VkYjFjNDIxOWQxZDg0MTk5MzIxYTgwMDNkNTJjODIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTE0OCw3
ICsxNDgsNyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZl
ciYgb2JzZXJ2ZXIpCiAKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHkp
OwogCi0gICAgbV9jb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsKKyAgICBtX2Nvb2tpZU1h
bmFnZXJQcm94eU9ic2VydmVyID0gbWFrZVVuaXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlP
YnNlcnZlcj4oKnRoaXMpOwogCiAgICAgYXV0byogcG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5w
cm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCmluZGV4IGZjZjQ2MDYxZjZiZmE2
ZGNiNzYwZTEyYzY2MzNiNmI0NWYxNTZkZDQuLjExODRhYTQzMmMzYjlmZmNiMTVkYTVmODI4ZWY0
YWM0ZjFhZGIxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElI
aXN0b3J5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3Rv
cnlDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IaXN0b3J5Q2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0
YWJhc2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJh
c2VDbGllbnQuaAppbmRleCBlYTllYmE1MGUxZWZlOGYwMzIxYzRkZmUzYTQ0NmYwZGNiYjVkOGM5
Li5iZTQzYWVlYzU0ZmYyZDRhYmI1YTI4ZmYzNjMxNDVjNDkwYzdlODU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCkBAIC0z
NCw2ICszNCw3IEBAIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIG5hbWVzcGFjZSBBUEkgewogCiBj
bGFzcyBJY29uRGF0YWJhc2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4
IDZmOWU3YWY5Yzk4MDkyMzNiNmE1NjVlYzNlMzgwYmUwYWFjZDU2N2UuLjJmZTM4NjI1OTQ2M2Jm
YjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkljb25Mb2FkaW5nQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggYzM1ZTdiM2FlNDkzZDlh
YzYzY2IzYTRiNTgxZmUzMmZjYjQwYWNlOC4uOWQ0MzQ4OWEyZDYyNTdjYjBjYWY5MjJiM2ZiMDkz
Mjk1Y2U5YmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUlu
amVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgV2ViUHJvY2Vz
c1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluamVj
dGVkQnVuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCmluZGV4
IGNiYjllMGE5NzE0NWJkMTdkZGVmOGUwYmIxNGFmOGMzNzZkZmIzODguLmRiNWQ5MGMzMWY5Mjc2
OWQzMDNhMDFhZDc4YmRhN2ZiZDFhNGQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCkBAIC0z
OCw2ICszOCw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogbmFtZXNwYWNlIEFQ
SSB7CiAKIGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVy
Q2xpZW50LmgKaW5kZXggMzQ4ZDZiZjc3MjkyNzJlOGYyYWJhZWMzNzU1YzIwZGU1NDJkNjQ1ZC4u
YjJlYTQxZDllMmYyZTgxZTJjOWViM2I4Nzc5MWZjM2VmOGMzZjBkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaApAQCAtNTMsNiArNTMsNyBAQCBj
bGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBMb2FkZXJDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRl
ckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IGE2ZTAxOWNjNDUxODYzYTQx
YWNmYzhiZWE3YmYzMDI4OTZiMWJiNzMuLmNkMjJhMjY3NjQ2OGQxODIzNGE2MDg0MmZlOWQ5MTY3
MWIyMGE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaApAQCAtNzMsNiArNzMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uUmVzcG9uc2U7
CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfk5hdmlnYXRpb25DbGllbnQo
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGlj
eUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5o
CmluZGV4IDVlYmU0NDA3NDJhNzY1NDFiMWQ5Y2NmMjk5NWM5YTk1ZmU4NGQ1YWQuLjZhZThlNzUy
MDVmZmZjODY1MmY0ZjliODNiYjNkZTMwZWU2Y2ZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNl
IEFQSSB7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIFBvbGljeUNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9saWN5Q2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggZDlk
ZDBkYjQ2NjM3NzIyYjYwMmIyMGRkZGY2NzM4MTM1ZjY0NmY2Mi4uNzcyZGE2ZTVhODY5NzdlYzhh
ZTJkYzA3NTQyZDhmY2YxZTE0OTYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVVJQ2xpZW50LmgKQEAgLTcxLDYgKzcxLDcgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBVSUNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlDbGllbnQoKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggYWZjZTcw
YjYyN2ZlZWY3YjViZjg4Mjg5YWQ4MjJmMTljMTljZGI2Zi4uM2QwMTYxMWMwMjlmOTNmNWNlM2U1
ZWIzZTMwNjQ3NDg4OWFiOGYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiB3a0NsCiAK
IHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVj
dGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVu
dChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2UqIHdrQ2xpZW50KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9y
eUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNs
CiAgICAgfTsKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sID0gKldl
YktpdDo6dG9JbXBsKGNvbnRleHRSZWYpOwotICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHByb2Nl
c3NQb29sLnNldEhpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVu
dCkpOwogCiAgICAgYm9vbCBhZGRzVmlzaXRlZExpbmtzID0gcHJvY2Vzc1Bvb2wuaGlzdG9yeUNs
aWVudCgpLmFkZHNWaXNpdGVkTGlua3MoKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV0tD
b250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdL
Q29udGV4dERvd25sb2FkCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRD
bGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERv
d25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAK
IHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwCmluZGV4IDExYjgzNGI0ZWUyYTlhNjg3NjI2YzczMmJmNThhNDg4MjNmNjMzNGEuLjg4OGI3
NWJjN2NlYzg5ZDE2ZTA3ZjYxN2U3YmIyY2UyOTc5ZmE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tHZW9sb2NhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQogCiB2
b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tHZW9sb2NhdGlvbk1hbmFnZXJS
ZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBjb25zdCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNl
KiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQ
cm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlk
ZXIpKTsKKyAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFr
ZVVuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAKIHZvaWQg
V0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdLR2VvbG9jYXRp
b25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tHZW9sb2NhdGlvblBvc2l0aW9u
UmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYjIyM2Q2Zjg3YmZhNWU5NmUzZTUw
ZGEyZGQ3OGZmMGQyZGQ0MTZjZS4uNzY5MjM5OTBhYjViOWVhMjEzODVmMWQzNTY5ZThiNTBhYTdm
NjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLTm90aWZp
Y2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0
UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdLTm90
aWZpY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChtYW5hZ2Vy
UmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRl
cj4od2tQcm92aWRlcikpOworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFr
ZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lk
IFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihXS05vdGlm
aWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0N2VjNzI2YjBjZTQ0
MDU3ZjAwMmI1NDBiZWE3NjhlNDNiMTBhOGQ0Li42MWE2OWIxZjNhNmRhNzQ5NmFkNDcyNjk3MGI4
NWYyYzkxMTgxM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
QEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogICAgICAgICB9CiAg
ICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+
KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVT
RURfUEFSQU0od2tDbGllbnQpOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0
TWVudUNsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJhc2UqIHdr
Q2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xp
ZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudCht
YWtlVW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4od2tDbGllbnQpKTsKIH0K
IAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtOTk1LDcgKzk5NSw3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZp
bmRDbGllbnRCYXNlKiB3a0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4od2tDbGllbnQp
KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxGaW5kQ2xp
ZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiB3
a0NsaWVudCkKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRj
aGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAg
ICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hlc0Ns
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVudCkpOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxGaW5kTWF0
Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
SW5qZWN0ZWRCdQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRm9ybUNsaWVudD4o
d2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQobWFrZVVuaXF1
ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMb2Fk
ZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2Uq
IHdrQ2xpZW50KQpAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVy
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgog
CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0b0ltcGwocGFnZVJlZik7CiAKLSAg
ICBhdXRvIGxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyQ2xpZW50Pih3a0Ns
aWVudCk7CisgICAgYXV0byBsb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPExvYWRlckNsaWVudD4o
d2tDbGllbnQpOwogCiAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMg
Y29kZSBhbmQgdHJhbnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVh
ZCBvZgogICAgIC8vIGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCkBA
IC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgIH0KICAg
ICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQ
b2xpY3lDbGllbnQobWFrZVVuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMjA3NSw3ICsyMDc1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tD
bGllbnQKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0yMjkzLDE2NCAr
MjI5MywxNjYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICB3ZWJQYWdlUHJveHktPnNl
dE5hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxOYXZpZ2F0aW9uQ2xpZW50Pih3a0NsaWVu
dCkpOwogfQogCi12b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwg
V0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgY2xhc3MgU3RhdGVDbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGlj
IFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0
IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7Ci0gICAgICAgIH0KLSAgICBwcml2
YXRlOgotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9h
ZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CitjbGFzcyBTdGF0ZUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBw
dWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRl
Q2xpZW50QmFzZSogY2xpZW50KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOwor
ICAgIH0KK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUlz
TG9hZGluZygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgpIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVRp
dGxlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9p
ZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVu
dC53aWxsQ2hhbmdlVGl0bGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50
LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVRpdGxlKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VB
Y3RpdmVVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZl
VVJMKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENo
YW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAg
dm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhh
c09ubHlTZWN1cmVDb250ZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNv
bnRlbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdl
SGFzT25seVNlY3VyZUNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xp
ZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFu
Z2VIYXNPbmx5U2VjdXJlQ29udGVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJl
Q29udGVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5n
ZUhhc09ubHlTZWN1cmVDb250ZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5n
ZUVzdGltYXRlZFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0K
IAotICAgICAgICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRD
aGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdp
bGxDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjaykK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFj
ayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENo
YW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9j
bGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2spCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5H
b0ZvcndhcmQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2Fy
ZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdv
Rm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IGRpZENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0Zv
cndhcmQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VD
YW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENo
YW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1Jl
cXVlc3RzSW5Qcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29ya1JlcXVl
c3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50Lndp
bGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZU5l
dHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Q
cm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdl
TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
IH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0
ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2ls
bENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5m
byhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENo
YW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0
aWZpY2F0ZUluZm8oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRD
aGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdl
V2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vz
c0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50Lndp
bGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVdlYlByb2Nl
c3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9u
c2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRD
aGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZFN3
YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0gICAgfTsKKyAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vz
c2VzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRTd2FwV2ViUHJv
Y2Vzc2VzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQorfTsKKwordm9pZCBXS1Bh
Z2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFz
ZSogY2xpZW50KQorewogICAgIGlmIChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0
UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6bWFrZV91bmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVu
dCkpOworICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtl
VW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCiAgICAgICAgIHRvSW1wbChw
YWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQppbmRl
eCBmNzYzYWY2MDAzZGE0NjY3MzYzMWU5MWVhODFiODNiNWM5N2EwODdkLi4zNWVmOTIyMTU0ZTE5
NjMwMGU0YjZlZTc1ZDRjOTgxNzg1YmMzZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtNTIsNyArNTIsNyBA
QCAtIChpZClpbml0V2l0aFBhZ2U6KFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJilwYWdl
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfcGFnZSA9IFdURk1vdmUocGFnZSk7Ci0gICAg
X29ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZl
cj4oc2VsZiwgQCJVUkwiKTsKKyAgICBfb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFn
ZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmLCBAIlVSTCIpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0
YXRlKCkuYWRkT2JzZXJ2ZXIoKl9vYnNlcnZlcik7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKaW5kZXggNzhiYmEzOTY3
YjYxOTdjMGU4YTdjMjNhYzNkYThjZDEzMmU3YzRiZS4uOTY0MDZkMGFhZmJjMzU1NTYwYjVkMzE5
N2EwMGMyNWY1NzU5YTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0Mvd3BlL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3Bl
L1dLVmlldy5jcHAKQEAgLTY4LDUgKzY4LDUgQEAgdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdL
Vmlld1JlZiB2aWV3LCBjb25zdCBXS1ZpZXdDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgICAgIH0K
ICAgICB9OwogCi0gICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxW
aWV3Q2xpZW50PihjbGllbnQpKTsKKyAgICB0b0ltcGwodmlldyktPnNldENsaWVudChtYWtlVW5p
cXVlPFZpZXdDbGllbnQ+KGNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
bW0KaW5kZXggMjY1NTU0ZjNkN2YyZDdhZDI5NmU5ZjNmOWZhMTEzODhiNzhmZDU2NC4uNDk2Nzc4
OGExMDU3ZmE4ODJhMGEwMWM4ZGJmNTAwMmU5MjI2ZWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyLm1tCkBAIC02MDIsNyArNjAyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aFBhZ2VSZWY6KFdLUGFnZVJlZilwYWdlUmVmCiAKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBs
KHBhZ2VSZWYpOwogCi0gICAgX3BhZ2VMb2FkU3RhdGVPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYpOworICAgIF9wYWdlTG9hZFN0
YXRlT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihz
ZWxmKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfcGFnZUxvYWRT
dGF0ZU9ic2VydmVyKTsKIAogICAgIEFTU0VSVCghYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1h
cCgpLmNvbnRhaW5zKF9wYWdlLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggMTM3MmNhNDEwNmM3
NmUxZDYyMzVkNjE0YWQ1YzFlNmE1NmVhMDVhMS4uODFkMzcwM2IwZWVhODJlNWU2YzYyZjMyMjJh
YzRlNjgxOWY2YjNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIC0gKHZvaWQp
YWRkT2JzZXJ2ZXI6KGlkPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KW9ic2VydmVyCiAgICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZl
cj4ob2JzZXJ2ZXIpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdL
SFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKICAgICBfY29va2llU3RvcmUtPnJl
Z2lzdGVyT2JzZXJ2ZXIoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGJh
Y2U1YWM3ZWMwMGIxODk4YWQyZGY3MmNiMWIxOTQ0NjdkY2VjOWQuLmViYWM1NjhlM2RkYjY4NzBm
ODViMDE1MDhlYzIwZmFhYjdmMjA0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zNzMsNyArMzczLDcgQEAgLSAoaWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiAtICh2b2lkKV9zZXREb3du
bG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxvYWREZWxlZ2F0ZQog
ewogICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsKLSAgICBfcHJvY2Vz
c1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9h
ZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0RG93bmxv
YWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVn
YXRlKSk7CiB9CiAKIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9hdXRvbWF0aW9uRGVs
ZWdhdGUKQEAgLTM4NCw3ICszODQsNyBAQCAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilf
YXV0b21hdGlvbkRlbGVnYXRlCiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxf
V0tBdXRvbWF0aW9uRGVsZWdhdGU+KWF1dG9tYXRpb25EZWxlZ2F0ZQogewogICAgIF9hdXRvbWF0
aW9uRGVsZWdhdGUgPSBhdXRvbWF0aW9uRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRB
dXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50
PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9t
YXRpb25DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1
dG9tYXRpb25EZWxlZ2F0ZSkpOwogfQogCiAtICh2b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5tbQppbmRleCA4YjZkZjI0Zjg5NTJkODRmNjA3NTQ0YzZhMzFhMmRk
MWI4YWEzNTVkLi5hMDBiMjAzY2M5MDU5MzAxYmVjYzQ2MWQ2MWI0NjczMmI4NTYxMmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0xMTgsNiArMTE4LDcgQEAgLSAodm9pZClyZW1vdmVB
bGxDb250ZW50UnVsZUxpc3RzCiB9CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdh
dGUgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNz
YWdlSGFuZGxlckRlbGVnYXRlKFdLVXNlckNvbnRlbnRDb250cm9sbGVyICpjb250cm9sbGVyLCBp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciwgTlNTdHJpbmcgKm5hbWUpCiAgICAg
ICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC0xNDUsNyArMTQ2LDcgQEAgcHJpdmF0
ZToKIAogLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewot
ICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0
ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNj
cmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpu
b3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRl
PihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRl
bnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKSkKICAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
IkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hl
biBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFtZV07CiB9CkBAIC0yMjksNyArMjMwLDcgQEAgLSAo
dm9pZClfcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdv
cmxkOihfV0tVc2VyQ29udGVudFcKIAogLSAodm9pZClfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihO
U1N0cmluZyAqKW5hbWUgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVz
ZXJDb250ZW50V29ybGQKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxl
ckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp1c2Vy
Q29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CisgICAgYXV0byBoYW5kbGVyID0gV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVz
c2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBu
YW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOwogICAgIGlmICghX3Vz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFu
ZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVu
dEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVy
IHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDM5
MWExOTkyZTM1MzJkYmU1ZjIxZGI2OTFkZDgxMDhhYWUyYTY2Yy4uMDhmNDJlYzhiMTNiZjcwYmQy
YjZiMzdiYzdkODE1NjgyM2Q2YzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03NTcsNyArNzU3LDcgQEAgLSAodm9pZClfaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJh
dGlvbgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgX2ltcGwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdl
Q29uZmlndXJhdGlvbi5jb3B5UmVmKCkpOworICAgIF9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6
OldlYlZpZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24u
Y29weVJlZigpKTsKICAgICBfcGFnZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNl
dEF1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2V0cyh0cnVlKTsKQEAgLTc2OSwxNCArNzY5
LDE0IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIAogICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5h
bWVGb3JEZXNrdG9wVXNlckFnZW50KGNvbmZpZ3VyYXRpb24uX2FwcGxpY2F0aW9uTmFtZUZvckRl
c2t0b3BVc2VyQWdlbnQpOwogCi0gICAgX25hdmlnYXRpb25TdGF0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNlbGYpOworICAgIF9uYXZpZ2F0aW9uU3RhdGUg
PSBtYWtlVW5pcXVlPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKICAgICBfcGFnZS0+
c2V0TmF2aWdhdGlvbkNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xp
ZW50KCkpOwogCi0gICAgX3VpRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlE
ZWxlZ2F0ZT4oc2VsZik7Ci0gICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50PihzZWxmKSk7CisgICAgX3VpRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6VUlEZWxl
Z2F0ZT4oc2VsZik7CisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAK
LSAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJY29u
TG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKKyAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKIAogICAgIF91c2VQbGF0
Zm9ybUZpbmRVSSA9IFlFUzsKIApAQCAtMzQyNSw3ICszNDI1LDcgQEAgLSAodm9pZClzZXRBbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5h
dmlnYXRpb24KICAgICBfYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsKIAogICAgIGlmIChhbGxvd3NCYWNrRm9y
d2FyZE5hdmlnYXRpb25HZXN0dXJlcyAmJiAhX2dlc3R1cmVDb250cm9sbGVyKSB7Ci0gICAgICAg
IF9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CiAgICAgICAgIF9n
ZXN0dXJlQ29udHJvbGxlci0+aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxW
aWV3XSk7CiAgICAgICAgIGlmIChXS1dlYlZpZXcgKmFsdGVybmF0ZVdlYlZpZXcgPSBbX2NvbmZp
Z3VyYXRpb24gX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXNdKQogICAgICAg
ICAgICAgX2dlc3R1cmVDb250cm9sbGVyLT5zZXRBbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3Vy
Y2VQYWdlKGFsdGVybmF0ZVdlYlZpZXctPl9wYWdlLmdldCgpKTsKQEAgLTU2NzgsNyArNTY3OCw3
IEBAIC0gKHZvaWQpX3NldElucHV0RGVsZWdhdGU6KGlkIDxfV0tJbnB1dERlbGVnYXRlPilpbnB1
dERlbGVnYXRlCiAgICAgfTsKIAogICAgIGlmIChpbnB1dERlbGVnYXRlKQotICAgICAgICBfcGFn
ZS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAg
ICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7
CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChudWxscHRyKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9u
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0
aW9uU2Vzc2lvbi5tbQppbmRleCA3YWQwNzNiOGNkNmRkNDIwM2UxYTc2MDU4ZjdjN2RmMmE5Zjhh
ZDdiLi4yYWRlZWE3NjBjNjk4YjE4YWU1OTFlNTcwNTcxMzI5NWYyNGM1NmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25T
ZXNzaW9uLm1tCkBAIC03Miw3ICs3Miw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRl
bGVnYXRlPilkZWxlZ2F0ZQogLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25T
ZXNzaW9uRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0g
ICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CisgICAgX3Nl
c3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CiB9CiAKIC0gKE5TU3RyaW5nICop
c2Vzc2lvbklkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbQppbmRleCBiMzdiMDUwNTNmMTI0YWNiNzBmZDZhZGU2ZGY0MjBmZTgyNWQ1NGNmLi4w
ZGQ0MDlhNDNkZTY1MzAwYzlmMGNjODU0NDdhYzJmNzEzZWM5NDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0zOCw2ICszOCw3IEBAIEBlbmQK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgX1dLUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlDbGllbnQoX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKmNvbnRy
b2xsZXIpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC03NSw3ICs3Niw3
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBtX3Jl
bW90ZUluc3BlY3RvclByb3h5ID0gV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3Jl
YXRlKCk7Ci0gICAgbV9yZW1vdGVJbnNwZWN0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQ+KHNlbGYpOworICAgIG1fcmVt
b3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5Q2xpZW50PihzZWxmKTsKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXRD
bGllbnQobV9yZW1vdGVJbnNwZWN0b3JDbGllbnQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cAppbmRleCA4ZDJmODhhZTAwMzJhMGQ5MzQ1ZTY4MDBhOTc4NThiNDI4YTRkNmQ5Li4wNjg3MGQy
MWRlZTdjYTRmODlkYjllMzQyZjZmMGY1ZmQzZjU0YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3
IEBAIGlubGluZSB2b2lkIHJlYWR5U1FMaXRlU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxp
dGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIFNRCiAgICAgICAgIHN0YXRlbWVudCA9IG51bGxwdHI7
CiAgICAgfQogICAgIGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYiwgc3RyKTsKKyAgICAgICAgc3RhdGVtZW50
ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KGRiLCBzdHIpOwogICAgICAgICBpZiAoc3Rh
dGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQ
cmVwYXJpbmcgc3RhdGVtZW50ICVzIGZhaWxlZCIsIHN0ci5hc2NpaSgpLmRhdGEoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0
b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGQyYWY2NGJhZDg2YThhMzNmMTMzNTQ3MjU4
MWI3MDJlNDFhNjdlYzIuLjIxODY2MDQ1MTkyNzY5YmU2ZGZmODU5YTYzMjA0M2Q1MTM1NjljMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIGd1aW50
IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JK
RUNUKQogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6
OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKICAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKQEAg
LTIyMyw3ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24gPSBh
ZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+cHJpdi0+
c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpmcm9tVVRGOChzZXNzaW9uLT5w
cml2LT5pZC5kYXRhKCkpKTsKLSAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikpOworICAg
IHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENsaWVudChtYWtlVW5pcXVlPEF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAK
aW5kZXggOTdlOTI1NjAxNzczN2I3NjY1YWNjOGViMmYzNThlYjJlYzU5MDBiOS4uMjg1OGRmNmYz
NGQ0ZmE2MjEyMDliZjFlYjFlMTA4ODVhZDA1ZTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNw
cApAQCAtNTYsNiArNTYsNiBAQCBjbGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbDogcHVibGlj
IEFQSTo6Q29udGV4dE1lbnVDbGllbnQgewogCiB2b2lkIGF0dGFjaENvbnRleHRNZW51Q2xpZW50
VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBh
Z2Uod2ViVmlldykuc2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0
TWVudUNsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcp
LnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZp
ZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKaW5k
ZXggZDMyYjU5YzU0NzY2N2E3ZWM4NzcxODEwNTJiZDFhNzQ5YzBkYmMxYy4uYTM3M2IyOTQ1NzE2
NzkxYTJkNGMzMDdiZDVlMGE5MjljODE0MGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuY3BwCkBAIC01Niw1ICs1Niw1IEBAIGNsYXNzIEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVuCiAKIHZvaWQgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdl
YktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFBy
b2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4
dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBl
YWQ0ZjIzNDk5MTY3MDRkMTdkMWYyMzA2NDA4OWY3YTFhMDQ1OTRmLi5lNzcxZGQ3MTg3ZTU4NTlh
ZGJkNWEwMTZmOGNhOTM1ZDI4ZTg0YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC0xMTgsNSAr
MTE4LDUgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9h
ZENsaWVudCB7CiAKIHZvaWQgYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2ViS2l0V2Vi
Q29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bv
b2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9h
ZENsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bCh3ZWJDb250ZXh0KS5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50
Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMTgwODNlNzY5N2E1
MTM5OGYyZWUwOTRjZGIwNjhjMjA4MzdiMWZhLi45YjU4MThhOTgzNmYzNzYyZDg5NjIyZTM2MmMz
ZmM4YjJkM2ViZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCB2
b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRh
YmFzZSwgY29uc3QgU3RyaW5nJiBwYQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRGYXZp
Y29uRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gZGF0YWJhc2UtPnByaXY7Ci0gICAgcHJpdi0+aWNv
bkRhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Ci0gICAgcHJpdi0+
aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJY29uRGF0YWJh
c2VDbGllbnQ+KGRhdGFiYXNlKSk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbWFrZVVuaXF1
ZTxJY29uRGF0YWJhc2U+KCk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQobWFr
ZVVuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CiAgICAgSWNvbkRh
dGFiYXNlOjpkZWxheURhdGFiYXNlQ2xlYW51cCgpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+
c2V0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3Np
bmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNGY5ODBkNGVlMjU4YWNhYzQ1NTgzMjNjYTdi
ZDcxY2NkZjNiZWViMS4uNzY3NWM5Y2IzYTVlZGFmODg2NGQxN2ExNzkyMTdjYjk0MjMzNjViOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZpbmRDb250cm9sbGVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQo
b2JqZWN0KTsKIAogICAgIFdlYktpdEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxlciA9IFdF
QktJVF9GSU5EX0NPTlRST0xMRVIob2JqZWN0KTsKLSAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVy
KS5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xs
ZXIpKTsKKyAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KG1ha2VVbmlx
dWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0
RmluZENvbnRyb2xsZXJHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAppbmRleCAxMzRk
MWM2Y2ViZTU2N2ZjNTRkOTcwZjg3NmJlMDI5MzFkMzI4MjJkLi5iYzY3YTM1N2RjMDc0NDVhMzUy
OGY4MGYwYWJkNzlkMDdjM2JjMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcApAQCAtNDgsNSArNDgsNSBAQCBjbGFz
cyBGb3JtQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Rm9ybUNsaWVudCB7CiAKIHZvaWQgYXR0
YWNoRm9ybUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtp
dFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxG
b3JtQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyku
c2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9u
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDJlMTU5NDVkZmFkMjljMzE1NTBkMWFkM2M0ZGQxNDk4
YmU3YjcyMDQuLjhjYmE0MjJlZDVlMzhiZjg0Yzc2MDU5NGQ2Y2YwZjY1ODhjYmVhNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9u
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdEdlb2xvY2F0aW9uTWFuYWdlclN0YXJ0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFu
YWdlcikKICAgICB9CiAKICAgICBpZiAoIW1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlcikg
ewotICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtYW5hZ2VyLT5wcml2
LT5nZW9jbHVlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVy
PigpOwogICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVuYWJsZUhp
Z2hBY2N1cmFjeShtYW5hZ2VyLT5wcml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAgICB9CiAg
ICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9j
YXRpb25Qb3NpdGlvbiYmIGNvcmVQb3NpdGlvbiwgT3B0aW9uYWw8Q1N0cmluZz4gZXJyb3IpIHsK
QEAgLTMxMiw3ICszMTIsNyBAQCBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xv
Y2F0aW9uTWFuYWdlckNyZWF0ZShXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcgogewogICAgIGF1dG8q
IG1hbmFnZXIgPSBXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfR0VPTE9DQVRJT05fTUFOQUdFUiwgbnVsbHB0cikpOwogICAgIG1hbmFnZXItPnByaXYt
Pm1hbmFnZXIgPSBwcm94eTsKLSAgICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1
ZTxHZW9sb2NhdGlvblByb3ZpZGVyPihtYW5hZ2VyKSk7CisgICAgcHJveHktPnNldFByb3ZpZGVy
KG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlcj4obWFuYWdlcikpOwogICAgIHJldHVybiBt
YW5hZ2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKaW5kZXggYjhmMDFmYjI0ZmYyNzY1
NGMwYWQ2MDlhZGQzMjQxOTVlZTQxY2E1OS4uNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2RlYjI1ZmRh
YTI3ZjY2YzUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJs
aWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdDbGllbnQoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKICAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKQEAgLTYxLDUgKzYyLDUgQEAg
Y2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7
CiAKIHZvaWQgYXR0YWNoSWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGlu
Z0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7Cisg
ICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQobWFr
ZVVuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwCmluZGV4IGE5M2ZmMjViMzlhMjkyNTYwMGQyYzRhZWNjZWNiYzc1NzBkNWRm
M2QuLjkyNjJhODRkZWNlMjViZjBiZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAgLTE3OSw1ICsxNzksNSBAQCBjbGFzcyBXZWJLaXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50
IHsKIAogdm9pZCBhdHRhY2hJbmplY3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJD
b250ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bCh3ZWJDb250ZXh0KS5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdEluamVjdGVkQnVuZGxlQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29u
dGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1h
a2VVbmlxdWU8V2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCAyMzZlODFjMTM5MGIzZWMzYzE1NDkxODY4
NmJhZmE1ZTUzODY0Njg3Li41NTE2MzY0NDc3NTU3NDdiNzBhYzVlNzZiMWQxMDRkNjFjMGI1Y2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFdlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJvCiAgICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobm90aWZpY2F0
aW9uTWFuYWdlcikKIHsKICAgICBBU1NFUlQobV9ub3RpZmljYXRpb25NYW5hZ2VyKTsKLSAgICBt
X25vdGlmaWNhdGlvbk1hbmFnZXItPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZp
Y2F0aW9uUHJvdmlkZXI+KCp0aGlzKSk7CisgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQ
cm92aWRlcihtYWtlVW5pcXVlPE5vdGlmaWNhdGlvblByb3ZpZGVyPigqdGhpcykpOwogfQogCiBX
ZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6fldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50
LmNwcAppbmRleCA1YmNlZjY4ZjY1ZDIzMTg5ODBjZjkxZGFlNTkzZDc2NjcxNDhhOTg5Li44OTZl
MTNkYWQ5N2JlN2ZmNzc2YzAzYmY2ZTdkMDI3ODJlMDMyMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMjUsNiAr
MjI1LDYgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAKIHZvaWQg
YXR0YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJr
aXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJ
Q2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0
VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2ViVmlldykpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmNwcAppbmRleCA0OGIzOGVhYzA4ZDkxMmM5NjM5ZWY1NTA5NGIxMGYxZmZhZDFk
OWY5Li4yMzZmMmJmYjUxN2U5NzQ5ODRhNWI5MDQ0MjhiNDEyZDQ3MmFmMDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJD
b250ZW50TWFuYWdlci5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNl
cl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcihXZWJLaXRV
c2VyQwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3Rr
PihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVu
dFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6
OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUp
LCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdv
cmxkKCkpOwogICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXIt
PmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApAQCAtMjg4
LDcgKzI4OCw3IEBAIGdib29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rl
cl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyX2luX3dvcmxkKFdlCiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwod29ybGROYW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI+IGhhbmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0
cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7
CisgICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3Jp
cHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1l
KSwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gbWFuYWdl
ci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoaGFuZGxlci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggYmZjNTY3Y2VkNWJiMTcwMWQz
YWM5Mjc2N2FlYmFhNDJkYjJjMzk3YS4uNTQ0ZDllMjU1ODc1YTVmMDdlOTM1OWQ2NTdiNDUyYWE4
YzdkYzQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM2Nyw5ICszNjcsOSBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRU
b0NvbnRleHQod2ViQ29udGV4dCk7CiAKICAgICBwcml2LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBh
ZG9wdEdSZWYod2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyQ3JlYXRlKHByaXYtPnByb2Nlc3NQb29s
LT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKSk7Ci0gICAgcHJpdi0+
bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk+KCksIHdlYkNvbnRleHQpOworICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3Zp
ZGVyID0gbWFrZVVuaXF1ZTxXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vz
c1Bvb2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250
ZXh0KTsKICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IHByaXYtPnJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5y
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcj4od2ViQ29udGV4dCk7CiAjZW5kaWYKIH0KIApAQCAtNjc4LDcgKzY3
OCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgZ2Jvb2xlCiAgICAgICAgICAgICBnX3dhcm5pbmcoIk5v
dCBlbmFibGluZyBhdXRvbWF0aW9uIG9uIFdlYktpdFdlYkNvbnRleHQgYmVjYXVzZSB0aGVyZSdz
IGFub3RoZXIgY29udGV4dCB3aXRoIGF1dG9tYXRpb24gZW5hYmxlZCwgb25seSBvbmUgaXMgYWxs
b3dlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQt
PnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEF1dG9tYXRp
b25DbGllbnQ+KGNvbnRleHQpOworICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKICAgICB9
IGVsc2UKICAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG51bGxwdHI7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlldy5jcHAKaW5kZXggYjIzOWFjNGUxOWU2M2QzM2E4NjlkZWZiNjZmYzNjMGI0NTAwYjc4
NS4uZDMzNjRkYTZjMDhhYTlhYzdhNDY1OGJlOThhZmM0ZTcyNjdmYTUwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTcy
NSw3ICs3MjUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVj
dCogb2JqZWN0KQogCiAgICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHBy
aXYtPmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQo
KSwgcHJpdi0+cmVsYXRlZFZpZXcpOwogCi0gICAgcHJpdi0+bG9hZE9ic2VydmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOworICAgIHByaXYtPmxv
YWRPYnNlcnZlciA9IG1ha2VVbmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsK
ICAgICBnZXRQYWdlKHdlYlZpZXcpLnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+
bG9hZE9ic2VydmVyKTsKIAogICAgIC8vIFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBk
dXJpbmcgdGhlIGNvbnN0cnVjdGlvbi4KQEAgLTc0MSw3ICs3NDEsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShXUEUpCi0gICAgcHJpdi0+dmlldy0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViVmlld0NsaWVudD4od2ViVmlldykpOworICAgIHByaXYtPnZpZXctPnNldENsaWVudChtYWtl
VW5pcXVlPFdlYlZpZXdDbGllbnQ+KHdlYlZpZXcpKTsKICNlbmRpZgogCiAgICAgLy8gVGhpcyBu
ZWVkcyB0byBiZSBhZnRlciBhdHRhY2hVSUNsaWVudFRvVmlldygpIGJlY2F1c2UgV2ViUGFnZVBy
b3h5OjpzZXRVSUNsaWVudCgpIGNhbGxzIHNldENhblJ1bk1vZGFsKCkgd2l0aCB0cnVlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApp
bmRleCBmMDlkNmM3ZTkyMDY4M2E3NTY2NTI3Njk2N2U3NDdjYzZjZWViNDgxLi4wNmIzYjgzNjA2
NWQ5ZjY2YTA3OThhMjA5NTUxM2NhODY4YjMxYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQ
YWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQogLy8g
UGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5jdGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3
aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBh
Z2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSksIHByb2Nlc3MpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Vi
a2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkp
LCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxh
eShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcAppbmRleCAzMWUwOTcz
ZmUxMDAzYzZlYTY1MjMwNjFhNjdjOTQ5ZDUzZWJkNmI3Li4yZDFjMmNiMzY4YTk5MzMxNjk3NDI0
NmEwZWQ1OTljMjhkY2FlNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0RW1vamlDaG9vc2VyU2V0dXBFbW9qaVNlY3Rpb25zKFdlYktpdEVtb2pp
Q2hvb3NlciogY2hvb3NlciwgR3QKICAgICAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0
aW9uc1RpbWVyID0gbnVsbHB0cjsKICAgICB9OwogCi0gICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxh
dGVTZWN0aW9uc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3Zl
KHBvcHVsYXRlU2VjdGlvbnMpKTsKKyAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25z
VGltZXIgPSBtYWtlVW5pcXVlPENhbGxiYWNrVGltZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9u
cykpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0UHJpb3Jp
dHkoR19QUklPUklUWV9ERUZBVUxUX0lETEUpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRl
U2VjdGlvbnNUaW1lci0+c2V0TmFtZSgiW1dlYktpdEVtb2ppQ2hvb3Nlcl0gcG9wdWxhdGUgc2Vj
dGlvbnMgdGltZXIiKTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIt
PnN0YXJ0UmVwZWF0aW5nKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAKaW5kZXggMGY2NzQ4NjQ1MmNkMWZhODdhODI4NjJlN2U2MDU3MzRkZmMzNTk2
OC4uZWEwYmMyZGVhMWY0NWE4MjQyNGEzMmJjMzU4MzFjYWRhNDNhYmNhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMTA1LDEzICsxMDUsMTMg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWUKICAgICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAg
IGF1dG8gdXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFk
ZCh1c2VyQ29udGVudE1hbmFnZXIpOwogICAgIGlmICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQu
aXNOZXdFbnRyeSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMp
LCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAg
ICAgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtl
VW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNl
ckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50
TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikt
PmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19v
YmplY3Rfd2Vha19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRf
Y2FzdDxHV2Vha05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAg
ICAgfQogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1
ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9z
dCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJM
Lmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgR1N0cmluZyogaHRtbCA9IGdf
c3RyaW5nX25ldygKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViSW5zcGVjdG9yLmNwcAppbmRleCAwZjAxNzExZTc5NjFlOGIwMGM1ZTU3NGQyODg1
MGQwNWIyNDFmNmVjLi5mMTBhMGRhNmQwMzNlOGZlMTI0ODdmNjgyNWY4YzBjNzg2ZDE4YmM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3Bl
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJ
bnNwZWN0b3IuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJr
aXRXZWJJbnNwZWN0b3JDcmVhdGUoV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvcikKIHsK
ICAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9S
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBOVUxMKSk7CiAgICAgaW5z
cGVjdG9yLT5wcml2LT53ZWJJbnNwZWN0b3IgPSB3ZWJJbnNwZWN0b3I7Ci0gICAgd2ViSW5zcGVj
dG9yLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGlu
c3BlY3RvcikpOworICAgIHdlYkluc3BlY3Rvci0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
SW5zcGVjdG9yQ2xpZW50PihpbnNwZWN0b3IpKTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCmluZGV4IDFiOWRkOGQxZjQ2MDIxNGY1YTc3MjY3MmMyZmI2NTM3MGI1MjBjNWUu
Ljg4YjNjZjQzYmZlNjhlZTk3YzczMWI3NjRkNDQ5OTBhN2JmYzVhOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBA
IC01NjYsNyArNTY2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3Rl
ZChHT2JqZWN0KiBvYmplY3QpCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmll
d1dpZGdldCwgUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdCgpKTsKIAog
ICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNF
KG9iamVjdCktPnByaXY7Ci0gICAgcHJpdi0+cGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUNsaWVudEltcGw+KHZpZXdXaWRnZXQpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBtYWtl
VW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3V2lkZ2V0KTsKICAgICBwcml2LT5kaWFsb2cgPSBu
dWxscHRyOwogfQogCkBAIC0xMjIwLDcgKzEyMjAsNyBAQCBHZXN0dXJlQ29udHJvbGxlciYgd2Vi
a2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
dwogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5w
cml2OwogICAgIGlmICghcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdl
c3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RL
X1dJREdFVCh3ZWJWaWV3QmFzZSksIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJv
bGxlcj4od2ViVmlld0Jhc2UpKTsKKyAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBt
YWtlVW5pcXVlPEdlc3R1cmVDb250cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgbWFr
ZVVuaXF1ZTxUb3VjaEdlc3R1cmVDb250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVy
biAqcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXI7CiB9CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIERy
YWdBbmREcm9wSGFuZGxlciYgd2Via2l0V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBw
cml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5kcmFnQW5kRHJvcEhhbmRs
ZXIpCi0gICAgICAgIHByaXYtPmRyYWdBbmREcm9wSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RHJhZ0FuZERyb3BIYW5kbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+ZHJh
Z0FuZERyb3BIYW5kbGVyID0gbWFrZVVuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5w
YWdlUHJveHkpOwogICAgIHJldHVybiAqcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJraXRXZWJWaWV3QmFzZQogICAgIGlmIChwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIpCiAg
ICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwog
ICAgIGVsc2UgewotICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5
KTsKKyAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJL
aXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgICAgIHBy
aXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlci0+c2V0U3dpcGVHZXN0dXJlRW5hYmxlZChwcml2LT5p
c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVFbmFibGVkKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDJjYWIyZTA1Mzg2ZDQyYjM3
MWY0NDA2YWI3MWE3ZjY1OTMwZjdkNzcuLjE0NjAzZDVhZmViYWY2ZGVlMDExOTc5NTc3MDM4ODM0
OWQ0ZTdiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBA
IC04OTUsNiArODk1LDcgQEAgLSAodm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAog
ewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgY2xhc3MgSWNv
bkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQg
SWNvbkxvYWRpbmdDbGllbnQoV0tWaWV3ICp3a1ZpZXcpCiAgICAgICAgICAgICA6IG1fd2tWaWV3
KHdrVmlldykKQEAgLTkzMiw3ICs5MzMsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2Fk
aW5nQ2xpZW50CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBp
ZiAoW3NlbGYgcmVzcG9uZHNUb1NlbGVjdG9yOkljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNl
bGVjdG9yKCldKQotICAgICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0Ns
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAg
IF9kYXRhLT5faW1wbC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNv
bkxvYWRpbmdDbGllbnQ+KHNlbGYpKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJv
Y2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29u
ZmlndXJhdGlvbgpAQCAtOTQ0LDcgKzk0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAg
ICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0Rh
dGEgYWxsb2NdIGluaXRdOwotICAgIF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOworICAgIF9kYXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJW
aWV3SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogCiAgICAgW3NlbGYgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmlu
ZGV4IDg1MTI5YTU0ODdjOWZmYmVkNTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3
NTg4NTczZGZmNDM2MDMzNzdlZjhkMTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6
OlZpZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAg
ICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29u
dHJvbGxlcj4oKSkKIHsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFn
ZUNsaWVudEltcGw6Omhvc3RGaWxlRGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3
aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3Mp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzPihtX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkx
MDlhYTI4NTViOGJiNDE1NzE3MDQ0Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQw
MzBjZTA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3Bw
CkBAIC00Miw4ICs0Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tX
UEUgewogCiBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25z
dCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1h
a2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAw
IH0KICAgICAsIG1fdmlld1N0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5k
b3dJc0FjdGl2ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5k
b3cgfQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6
flZpZXcoKQogdm9pZCBWaWV3OjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0Ns
aWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVu
dCA9IFdURk1vdmUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvcXQvV1BFUXRWaWV3LmNwcAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1
YjEzNTYxY2IzNjZjLi5iNGYyN2I2ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3Bw
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2Fs
bGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChz
dGF0dXNTZXQpIHsKICAgICAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1
ZXN0UHJpdmF0ZSh2aWV3LT51cmwoKSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VV
bmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAg
IFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQog
fQpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2Fs
bGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9h
ZFN0YXR1cyA9IFdQRVF0Vmlldzo6TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAg
IFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3Ry
aW5nKGZhaWxpbmdVUkkpKSwgbG9hZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5p
cXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1J
VCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3
ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmpl
Y3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3Ojpy
dW5KYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxi
YWNrKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBv
aW50ZXI8V1BFUXRWaWV3Pih0aGlzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRD
YWxsYmFja0RhdGE+IGRhdGEgPSBtYWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNh
bGxiYWNrLCBRUG9pbnRlcjxXUEVRdFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdf
cnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRh
KCksIG51bGxwdHIsIGpzQXN5bmNSZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmll
d0JhY2tlbmQuY3BwCmluZGV4IGE4NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQx
ZjkuLjEzZmQzN2FlZmYyYjY1MzVkNTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5k
LmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4g
V1BFUXRWaWV3QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICgh
ZWdsQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0
LCBjb250ZXh0LCB2aWV3KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5k
PihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BF
UXRWaWV3QmFja2VuZDo6V1BFUXRWaWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERp
c3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29u
dGV4dD4gY29udGV4dCwgUVBvaW50ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcAppbmRleCBjY2U1YzQ4MTdhODA0OTE3Y2RjMTk5YzFiMDE2MGUyNTZlOWJlMjk3Li5hNTkx
NTBkYjdhNDBkYzdiYzE1ZGI1MWJlOGVmNGUxMTM1NmRjNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcApAQCAtNzMsMTEgKzczLDExIEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRQYWdl
TG9hZFRpbWVvdXQgPSAzMDBfczsKIHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwog
CiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAgIDogbV9j
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQor
ICAgIDogbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Pigp
KQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVu
ZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9tYXRpb25C
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAg
ICwgbV9kb21haW5Ob3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERp
c3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmllcihtYWtl
VW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQog
ICAgICwgbV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21hdGlvblNl
c3Npb246OmxvYWRUaW1lckZpcmVkKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19B
UEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
CmluZGV4IDZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3
ZTg3YzUxZGM0YWU5ZDYzOWIxZDRmMzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9v
bCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIE9wdGlvblNldDwKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBB
c3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRp
b25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJl
Y2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVu
Y29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZN
b3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAxMGE4ZTQyNDEz
YjI5YWZmYjYzNzdkODRhMDliZTUxMWJkMjUxZDVjLi5kZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFh
NDAxNTdjOTRmMmZhOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1
YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChp
ZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3
MjM5NzMyMDVjYzZkZjRjYzY2YTY3OTA2YzAyOWIwZC4uMDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlk
ZjQyYzIzYzE0ZDYwNWFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tX
ZWJWaWV3ICopOwogICAgIH5JY29uTG9hZGluZ0RlbGVnYXRlKCk7CkBAIC00OCw2ICs0OSw3IEBA
IGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25M
b2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IElj
b25Mb2FkaW5nQ2xpZW50KEljb25Mb2FkaW5nRGVsZWdhdGUmKTsKICAgICAgICAgfkljb25Mb2Fk
aW5nQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9J
Y29uTG9hZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tbQppbmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIyYmViNWJjYmQ3
YzBkNzRjZmI0Li4xNjNmYjk1MmVlMGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2OGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdh
dGUubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fkljb25Mb2FkaW5n
RGVsZWdhdGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4gSWNv
bkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlk
IDxfV0tJY29uTG9hZGluZ0RlbGVnYXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmRlbGVnYXRl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGE1
MWEyMjM2MjM4NDE1MWFiMTFkNDg5NDM2OWY4YTE4NTgwMDY3ZGEuLmY1MTM3ZjljYzczMTYzODhl
NjFkZTEwNzczZmYzNDI4NTYyNTA1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQpAQCAtNzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6On5VSURlbGVn
YXRlKCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNv
bnRleHRNZW51Q2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVudCgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOwogfQogI2Vu
ZGlmCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVV
SUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KCp0aGlz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQogCiBSZXRhaW5Q
dHI8aWQgPFdLVUlEZWxlZ2F0ZT4gPiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwCmluZGV4IDQ4YzJiMmI0ZTA2MTA2OTI3MmFlYjhiOTRhMjM0ZWFhOTI2
YWY3NmQuLjkxY2Y5NDgwYzc1MThjZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk6OlNvdXJjZVByb3h5IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2Vy
dmVyLCBwdWJsaWMgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU291cmNlUHJveHkodWludDY0X3QgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYgc291cmNlKQogICAgICAgICA6IG1faWQoaWQpCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9p
ZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1
cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsK
ICAgICAgICAgc2V0dGluZ3MgPSBzb3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VSVCgh
bV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6
bWFrZV91bmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RG
TW92ZShzb3VyY2UpKSk7CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291
cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNl
T3JFcnJvci5lcnJvck1lc3NhZ2UpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwg
aW52YWxpZENvbnN0cmFpbnRzLCBXVEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmgKaW5kZXggOWNhNmZhMzUzNDk2MDE4MDNkZjVkM2QxYjJhYmEzMTY1NTc0MGMzOS4uOWJk
ZGI5OTA5ZGY3ZThmZWYxZTU0ODA2Y2JlNmJjNWM0MGNmYzU4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBTaGFyZWRNZW1vcnk7CiBjbGFzcyBXZWJQ
cm9jZXNzUHJveHk7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KFdlYlBy
b2Nlc3NQcm94eSYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQppbmRleCAzMDcwZDU3NDQzZmRmNzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQy
ZmEyYTA4NjA0MTdjNmNmODBkN2JjZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEzNSw3ICsx
MzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIGlm
ICghW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldl
YktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3RhbGxNZW1v
cnlQcmVzc3VyZUhhbmRsZXIoKTsKIAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dD4oKSk7CisgICAgc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlx
dWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c3RhcnREaXNwbGF5TGluayhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9i
c2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIGRpc3Bs
YXlMaW5rID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKKyAgICBh
dXRvIGRpc3BsYXlMaW5rID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKICAg
ICBkaXNwbGF5TGluay0+YWRkT2JzZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAg
bV9kaXNwbGF5TGlua3MuYXBwZW5kKFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0K
aW5kZXggNWMyMWNhNzVhMTgyOWM1MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3
YjQ2MDU0OGNlMGY4NmQ3YTVkMTE3YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIwNSw3ICsy
MDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3Vz
cGVuZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2
aXR5VGltZW91dEhhbmRsZXIgPSBbYWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6
cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tncm91bmQg
YWN0aXZpdHkgdGltZWQgb3V0Iiwgd2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAgbV91bmV4
cGVjdGVkQWN0aXZpdHlUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJs
ZU9uZVNob3RUaW1lcj4oV1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciks
IHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRp
bWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3Zl
KGJhY2tncm91bmRBY3Rpdml0eVRpbWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVy
YXRpb24pOwogICAgIGNvbXBsZXRpb24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBmMTc2ZjFhNjVhOTkyYzUxYWMzNDRl
ZDAwODg1N2UwMTNlZjk5NGIxLi4zN2Y1NGRhNGFkMmQ2YTI1NDdjMWRkMzU5Yjg5NWM4YTU0YTI1
OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpA
QCAtMTMzNCw3ICsxMzM0LDcgQEAgc3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0cmFja2lu
Z0FyZWFPcHRpb25zKCkKIAogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmll
d0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNz
UG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3Vy
YXRpb24pCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwgbV9wYWdl
Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCiAg
ICAgLCBtX3BhZ2UocHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKSkKICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3Jk
aW5hdGVzKG1fcGFnZS0+cHJlZmVyZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAgICwgbV9p
bnRyaW5zaWNDb250ZW50U2l6ZShDR1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0cmljLCBO
U1ZpZXdOb0ludHJpbnNpY01ldHJpYykpCkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwoTlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJW
aWV3ICpvdXRlcldlYgogICAgIHZpZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5TVmlld0xh
eWVyQ29udGVudHNQbGFjZW1lbnRUb3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNs
aWVudChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwogI2VuZGlm
CiAKICAgICBXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0x
NzMwLDkgKzE3MzAsOSBAQCBDR1NpemUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNv
bnN0CiBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1w
bDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAg
ICAgaWYgKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JL
ZXk6QCJXZWJLaXQyVXNlUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFsdWVdKQot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4o
bV9wYWdlLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdlYlZpZXdJ
bXBsOjppc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcoKSBjb25zdApAQCAtMzM3NSw3ICszMzc1LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3
SW1wbDo6c2V0VGV4dEluZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNh
dG9yLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAg
ICAgaWYgKCFtX3RleHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGljYXRvcldp
bmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92
aWV3LmdldEF1dG9yZWxlYXNlZCgpKTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCkpOwogCiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5h
dGVzID0gW1ttX3ZpZXcgd2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcgY29udmVy
dFJlY3Q6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCkgdG9WaWV3Om5pbF1dOwogICAgIG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGlj
YXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3Jl
ZW5Db29yZGluYXRlcyksIGxpZmV0aW1lKTsKQEAgLTQzNzcsNyArNDM3Nyw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJiBpdGVtKQogVmlld0dlc3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJl
R2VzdHVyZUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKLSAg
ICAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVD
b250cm9sbGVyPihtX3BhZ2UpOworICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVu
aXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICptX2dlc3R1
cmVDb250cm9sbGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5
ZTU4Y2NkYTEwZjNlYTQ0NGMyNzYuLjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2
NWQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRl
SW5mbyYgdXAKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAg
ICAgICAgbV9iYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZT4odXBk
YXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdl
UHJveHkpOworICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2luZ1N0b3Jl
Pih1cGRhdGVJbmZvLnZpZXdTaXplLCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dl
YlBhZ2VQcm94eSk7CiAKICAgICBtX2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBk
YXRlSW5mbyk7CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuYwog
ICAgIH0KIAogICAgIGlmICghbV9kcmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3aW5nTW9u
aXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OkRyYXdpbmdNb25pdG9yPihtX3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJhd2luZ01v
bml0b3IgPSBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpE
cmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0b3ItPnN0
YXJ0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJkMDM4NmFj
ZjVkOGFkNTM1Yzc5MTJhODg2Y2JkMGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2
NjVlZTFiNzg2OTZhNmE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rl
dmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlk
SGFzaFNhbHRTdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8g
aGFzaFNhbHRGb3JPcmlnaW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0
eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgIGF1
dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZN
b3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9y
aWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgaGFz
aFNhbHRGb3JPcmlnaW4tPmxhc3RUaW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhs
YXN0VGltZVVzZWQpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9y
aWcKIAogICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJpbmco
KTsKIAotICAgICAgICBhdXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFy
ZW50T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1dG8gbmV3
SGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3Zl
KGRvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlk
SGFzaFNhbHQpKTsKIAogICAgICAgICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47CiAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5
OWE1MDM0NGYzMTI1MWY1ZTk2ODQuLmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1
Y2E3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eU1hcC5jcHAKQEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFByb3h5JiBE
b3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbAogCiAgICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hvdWxkVGFr
ZUFzc2VydGlvbikgewogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlvbik7Ci0g
ICAgICAgIG1fZG93bmxvYWRVSUFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fz
c2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkVUlB
c3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNz
SUQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3
b3JraW5nKTsKIAogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9u
KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9kb3dubG9h
ZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+
KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFz
c2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZE5l
dHdvcmtpbmdBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0
YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgIlVJUHJvY2VzcyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb25z
IGZvciBVSVByb2Nlc3MgYW5kIE5ldHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDNkZWY1ZDc5ZjA3Y2I5MTQwYjgy
NTYyZGI5ZjZmMmJjNmQwZjcyZjYuLjU2MDZjNTExNjUzNGY0M2NmYzgwNmQ1MTFkNDFlZDk4Y2Zi
MjUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAg
LTUyLDYgKzUyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5
OwogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwcm90ZWN0ZWQgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmF3aW5nQXJlYVByb3h5KTsKIAogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVw
YWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBh
ZFByb3ZpZGVyLmNwcAppbmRleCBlY2FhYzMwMWI0YmRmNDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRm
NjQwLi5mNGI3YmVhNjU4NTA5OTFlOTQ5NGE2MjIzZDU0Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29u
bmVjdGVkR2FtZXBhZHMoY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZAogICAgIGZvciAoYXV0
byogZ2FtZXBhZCA6IGluaXRpYWxHYW1lcGFkcykgewogICAgICAgICBpZiAoIWdhbWVwYWQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRleCgp
XSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPigqZ2FtZXBhZCk7CisgICAgICAgIG1fZ2Ft
ZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQp
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcG9vbCA6IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1l
cGFkcykKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9y
bUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkKQogICAgICAgICBtX2dh
bWVwYWRzLmdyb3coZ2FtZXBhZC5pbmRleCgpICsgMSk7CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBh
ZHNbZ2FtZXBhZC5pbmRleCgpXSk7Ci0gICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldID0g
c3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVwYWQpOworICAgIG1fZ2FtZXBhZHNbZ2Ft
ZXBhZC5pbmRleCgpXSA9IG1ha2VVbmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKIAogICAgIHNj
aGVkdWxlR2FtZXBhZFN0YXRlU3luYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAppbmRl
eCA3ZDU2YjBhMjQ2M2RlZGYxNjY5NThjMjhmZmI3NWFhMGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVl
ZTJlZmExYmQwNWEyYTc1NjExMWExNWQ5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgK
QEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKIAogY2xhc3MgSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3Jt
YW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDBkM2QwM2NlZWQ4MzEzYmNhMjdiMzkxNWFjMzdjZTZlM2VkNzMwOTkuLmVlYjQwOTg5
NWNlMGUyM2M5ZmMzZTk1ZjM1ODE4MGZjOWFiMDQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0
LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcElzQmFj
a2dyb3VuZChib29sIGJhY2tncm91bmQpCiBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQotICAgICAgICBtX2Rvd25s
b2FkUHJveHlNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsK
KyAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFw
PigqdGhpcyk7CiAKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9h
ZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CkBAIC0xMjAxLDcgKzEy
MDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKCkKIHsKICAgICBBU1NFUlQoIW1fdXBsb2FkQXNzZXJ0aW9u
KTsKLSAgICBtX3VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2Vy
dGlvbj4ocHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25T
dGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgbV91cGxvYWRBc3NlcnRpb24gPSBtYWtl
VW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBs
b2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyVXBsb2FkQXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggMzViODIxM2MyOGZjYjZiOTQwYTEwOTliZTE0MDhmOTA2YTNiOTJiYi4uMWZkYjY2YzE1NWQ4
N2IyMjYyZjJhM2Q1ZTEwZGUyMzkxNDM4YTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcg
QEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURh
dGE7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IDJhYWZmMWVjMmE2NTQ5MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIuLjQ3YTNlOWIy
M2JhMTI2NTE5OGI2MGVkZGY2YzRkZDk4NmZjZDIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTU2LDE0ICs1NiwxNCBAQCBSZWY8V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQ
cm9jZXNzUAogCiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0
U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5p
cXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiB9CiAKIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3Rp
ZmljYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVyKSB7Ci0g
ICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJv
dmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0
aW9uUHJvdmlkZXI+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlYzY0YmM5ZTE2MmNiN2NhMWU3NTM3ZTkzMzFkNGYxMzk1
ODdlYzQxLi42Y2Y1ZTE0ZWE1NjlmMjNkYTg0NzU0MDk2Y2E1MTE0NTNjMjk4YjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgdXNpbmcgTGF5
ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7CiAjZW5kaWYKIAogY2xhc3MgUGFnZUNsaWVu
dCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWdlQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BV
VXNhZ2VTYW1wbGVyLmgKaW5kZXggMDFhN2RhN2I4OTFhOTAwNjZjOTBlODQyOWM2NTZiZDcwMGIx
NjZiZC4uZWE0MzkyN2Q0OGQ3NTJiZWI2NzI4MDk0OTljOWFkMGJmZTA3YmM1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2Fn
ZVNhbXBsZXIuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBX
ZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5QZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAKaW5kZXggZjZmNDc5YjFlMDM5MmYzMjIxNjBhNjQ5NGFlYzYyZTBhMDY3OTZkZC4uODQzNjlk
MzM0NDA3Y2ZiYzJlODNhYTgyN2M1Y2MwZTVkYjkxMjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxh
dGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYQogI2lm
IFBMQVRGT1JNKEdUSykKIHN0YXRpYyBib29sIHBsdWdpblJlcXVpcmVzR3RrMihjb25zdCBTdHJp
bmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KHBsdWdpblBhdGgpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNb2R1bGU+IG1vZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKICAgICBp
ZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1v
ZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPGdwb2ludGVyPigiZ3RrX29iamVjdF9nZXRfdHlwZSIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAwMGE5
OTE4ODYxNDg3MzkzOGE2Y2I0YWJkOTkxNGJjODYyOTQ1Y2Y3Li40Y2UyNjJlOWRjYmI0YjFiMGZm
MGFkNWRiOTdlYjk3ZjM2MDczNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxl
cjo6ZGlkQ29ubmVjdFRvUHJvY2VzcyhQcm9jZXNzSUQgcGlkKQogCiAgICAgbV9zdXNwZW5kVGlt
ZXIuc3RvcCgpOwogICAgIGlmIChtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCi0g
ICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRp
b24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwor
ICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihw
aWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0
aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsK
KyAgICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwg
IldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwogICAgIG1fcHJv
Y2Vzcy5kaWRTZXRBc3NlcnRpb25TdGF0ZShhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX2Fzc2Vy
dGlvbi0+c2V0Q2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggNjBmMDJjNjEwZmNkOTg4MzA2MzljNTdiM2U5ZDYx
ZmYxZmQ1MjVmZC4uMjc0YWJkMzAyOWMwMDc3MzM5ZGZlMzc0OGZmMzA2OTdjOWI0OGI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEw
Nyw3ICsxMDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdl
UHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIDogRHJh
d2luZ0FyZWFQcm94eShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBhZ2VQcm94
eSwgcHJvY2VzcykKLSAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChzdGQ6Om1ha2VfdW5pcXVl
PFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9z
dChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKIHsKICNpZiBIQVZFKElP
U1VSRkFDRSkKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJ
IHByb2Nlc3MuCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Ojp1cGRhdGVEZWJ1Z0luZGljYXRvcihJbnRTaXplIGNvbnRlbnRzU2l6ZSwKIAog
dm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRp
Y2F0b3IoKQogewotICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcyk7CisgICAgbV9kZWJ1Z0luZGljYXRv
ckxheWVyVHJlZUhvc3QgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsK
ICAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdC0+c2V0SXNEZWJ1Z0xheWVyVHJlZUhv
c3QodHJ1ZSk7CiAKICAgICBtX3RpbGVNYXBIb3N0TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBh
bGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCAzMDAyNWQ0Mjk5
ZjNiY2EwNDg1ZDMwNGQ4MzM1ODE3NjEwYmE1MGJkLi44YTRlNTA0ODE3ZWJjMTI1Y2U4OThjMWMy
OTFkOWE2ZTRkNWY1ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjUyLDcg
KzI1Miw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVz
KQogewogICAgIGF1dG8gbWFrZVdpdGhMYXllciA9IFsmXSAoUmV0YWluUHRyPENBTGF5ZXI+IGxh
eWVyKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5v
ZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1v
dmUobGF5ZXIpKTsKICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENB
TGF5ZXIqIGxheWVyKSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMobGF5
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KaW5kZXggZTg4YmJjNjA4ZDRmYjA1ODM4
NGQyOWIyNjk4MTU5MmVkYTgxNGViYS4uNGZkNGVhMjY5ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBk
ODQyNDA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KQEAgLTczLDcgKzczLDcgQEAg
UmVtb3RlTGF5ZXJUcmVlTm9kZTo6flJlbW90ZUxheWVyVHJlZU5vZGUoKQogc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklE
KQogewogICAgIFJldGFpblB0cjxDQUxheWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1BsYWluUmVt
b3RlTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVMYXllclRyZWVOb2RlPihsYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwog
fQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZU5vZGU6OmRldGFjaEZyb21QYXJlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5o
CmluZGV4IGMyNzgxZGM4YWRhMzQzMzlmNzllZDg1YTdlM2U5ZmY3NjUyMjI1MjguLjI5ZGZlZmU2
Y2I3MmMxMjBhNjFjYzIyZDBkM2JhNjRhNmQ5NDQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJm
b3JtYW5jZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTMzLDYgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OwogCiBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Jik7CiAgICAgflJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5kZXggODZk
MGRlZmM2OTY1ZTRmYTZiYTExNjQ3NjFiYzlhYzcxOThjNzJlNi4uMWE3Njk0M2YyNDViZTFjZDgy
MmYxOTYxM2NkZDM1ZjU0MGE5NGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGlu
Z1RyZWU7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggNjI5YTlj
NjUwZDQzYzBkNTYxYzgxOTMzYmEwZDE0ZThkMzNlYTQ0NC4uMGMxMjZhZTZhZjc1ZTQxMzhhZmQw
MDg2ODM5NTY2MjlmZjcwMDIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4gY3JlYXRl
UmVtb3RlVmlldyhwaWRfdCBwaWQsIHVpbnQzMl90IGNvbnRleHRJRCkKIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25z
dCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHBy
b3BlcnRpZXMpCiB7CiAgICAgYXV0byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0cjxVSVZp
ZXc+IHZpZXcpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJU
cmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBX
VEZNb3ZlKHZpZXcpKTsKICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9IFsmXSAo
VUlWaWV3KiB2aWV3KSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVSZW1vdGVJT1MubW0KaW5kZXggODFhMmViOWE2MzVkNTk4NDE2MDBmNzgzNTIw
NGFjODRiZDZkNWMyOC4uYjg5MDY4MWU5ZTdhNTEzYmEzNDM2N2NlZjM5ODliZTNiMTlkOWNiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZVJlbW90ZUlPUy5tbQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4o
Y29uc3QgUwogCiAgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAgICAgaWYg
KHNjcm9sbENvbnRhaW5lckxheWVyKCkpCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxl
Z2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUz4oKnRoaXMpOworICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBtYWtl
VW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRy
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5tbQppbmRleCBiNTZlMmVhNjRkYTUyMDMxZGZhZjEyOGVjMjQ4
Y2QxNWM3MTAwOTI2Li5kMGJkZDNjNTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFhYjU3ZDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tCkBAIC00Myw3ICs0Myw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
CiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5n
VHJlZSwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAgICwgbV9z
Y3JvbGxpbmdOb2RlRGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0
ZShtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlz
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2N2MwYjYx
NjJlMDY3ODNjZjM3NmNmNjE5MDdlMi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3OWM3NDUy
OTQzNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlTWFjOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGlu
Z1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQg
bm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBu
b2RlVHlwZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8
U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMu
Y3BwCmluZGV4IGQ4OTYwY2VjMzBlNDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMuLmI2Y2Ez
Y2JiYTgwODA3YWY3YjlmNjk5YmU5YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVt
b3RlTWFjLmNwcApAQCAtNDEsNyArNDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZVJlbW90ZU1hYz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTgogCiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9s
bGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjKHRyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5p
cXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaAppbmRleCBmNTA1ZTI4MGM0NDI5MGE4MDNkYmRiNjhjOThlZWE2MzBiMWM5YmI2
Li44NjhiNTRlNzkyYWYyYWJkOTg2YmM4NjYwMDVjYjEyZjQ1NjgyNDI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAj
ZW5kaWYKIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkm
KTsKICAgICB+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRTZXJ2aWNlLm1tCmluZGV4IGNhMjZlNTFkN2E0MDY0YWEyODEyN2MwZjAxZDU0YTRl
MGFjMjQ0NjMuLjM5M2IxMzY3MWY2MDE0MTZhNmVkN2MyZmRhYjBjZDJlYjA4MWUzYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvSGlkU2VydmljZS5tbQpAQCAtOTIsNyArOTIsNyBAQCBVbmlxdWVSZWY8SGlkQ29u
bmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBk
ZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2
aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdGFwSGlkRHJpdmVy
PihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOworICAgIGF1dG8gZHJpdmVyID0gbWFrZVVu
aXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwogICAgIC8v
IEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgogICAgIGRyaXZlci0+dHJh
bnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6
OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
cHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewogICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKaW5kZXggODVjZTY5MDYxMTE0NDJiYzY3OWNjN2E3
NzViODY4MmRkMTU3MjhjOS4uZjg1MmJlZDIxMzBiNDdjMmY3ZGQyOThhZDM1NmFlYWM4N2MwMjY4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVBy
b3h5OwogCiBjbGFzcyBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KTsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eShX
ZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA5OWQ2ZWEzMzQxNTNlY2Y0OWQ0NTg0Yzc0
M2RjNjgxNjg4NDE1NTIwLi44NDZhNWFhMjdkZmFiM2QyNzRjZmZhNDg3Mzg2MWYyNTg3ZDE3ZmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9v
CiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVu
dChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdl
b2xvY2F0aW9uUHJvdmlkZXI+KCkpCisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpH
ZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9j
ZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KQEAgLTU0LDcgKzU0
LDcgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG8KIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlk
ZXI+JiYgcHJvdmlkZXIpCiB7CiAgICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAg
ICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAg
ICAgZWxzZQogICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyLmNwcAppbmRleCAyY2RjZDE3NjUyOTlmZTc3NjQ5YmFiZjlkZTNlNzRlOGIwZjAwZTM3Li4z
MzY0YmNiY2M5MTE4NGE2YmE3NTQxZWY5MGIwZjk2MDRjZGU0ZGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBk
YXRlUGxheWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlhU3RhdGUoV2ViUGFnZQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQYWdlUHJv
eHkmIHByb3h5LCB1aW50NjRfdCBlbGVtZW50SUQpCiB7Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVt
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1l
bnRJRCk7CisgICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gbWFrZVVuaXF1ZTxGb2N1c2VkTWVk
aWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyOjpjbGVhckZvY3VzZWRNZWRpYUVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5ZWI5ZDI4YWRkZDViNWIwMDZk
NTBiMDhhM2Q3NGZiNjlkMTYyMzkyLi4xNmE3NTlhYzhhMWZmMzE0NjA1YjA5NDZmZmM1YWE2NTgx
OGUwNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9u
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUu
aApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOwogCiBjbGFzcyBXZWJOYXZpZ2F0aW9uU3RhdGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5hdmlnYXRpb25TdGF0
ZSgpOwogICAgIH5XZWJOYXZpZ2F0aW9uU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggNjUyOTgyYTgx
MmE5ZWZiZWY1MjFhNmE5ODk5ZmE0YmVlNWZhZjM0Yy4uMWIyOWY3OWRkZmFlYTA3YjllNzI0OWJk
NzcyMzg0ZWViZjUzMGZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYlBhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dEJhc2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFN0cmluZyYsIEFQSTo6T2JqZWN0Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQ
STo6T2JqZWN0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggYzRiOTJjODNjZmVhMjliMzFlZGJiMzRhYTg0MDI1YmE1Yzhi
MDNiNy4uYmRhNTljZDgwNTE1NzY0NmIzMDhkMmZkMjM2ZjNkMTE4MjcxZTBiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgICwgbV9mcm9udGVu
ZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRj
aGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkp
KQogewotICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKSk7CisgICAgYXV0byB0YXJnZXRBZ2VudCA9IG1ha2VVbmlxdWU8V2ViUGFnZUlu
c3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNw
YXRjaGVyLmdldCgpKTsKIAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2ZhMmI0ZDZk
M2MxNjYxYTcwMDNiNzc4NTU4ZGE3YzJmZjI0ZjA3ZS4uMGI0MGRiMjc3ODNmZGU5ZDI1NmZmNTI5
MmVlYTdlYmZlMzE2Y2EwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0zOTcsMTUgKzM5NywxNSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwg
bV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX25hdmlnYXRp
b25DbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCiAgICAgLCBt
X2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Okhpc3RvcnlDbGllbnQ+KCkpCi0gICAg
LCBtX2ljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0Ns
aWVudD4oKSkKLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNs
aWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50
PigpKQotICAgICwgbV9maW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50
PigpKQotICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rmlu
ZE1hdGNoZXNDbGllbnQ+KCkpCisgICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVl
PEFQSTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OlVJ
Q2xpZW50PigpKQorICAgICwgbV9maW5kQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50
PigpKQorICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNo
ZXNDbGllbnQ+KCkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRN
ZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKKyAg
ICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50
PigpKQogI2VuZGlmCi0gICAgLCBtX25hdmlnYXRpb25TdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdl
Yk5hdmlnYXRpb25TdGF0ZT4oKSkKKyAgICAsIG1fbmF2aWdhdGlvblN0YXRlKG1ha2VVbmlxdWU8
V2ViTmF2aWdhdGlvblN0YXRlPigpKQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBt
X3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKICAgICAsIG1fcHJlZmVy
ZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKQEAgLTQxNiw3ICs0MTYsNyBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeSB7IG1fY29uZmlndXJhdGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3ko
KSB9CiAgICAgLCBtX3RyZWF0c1NIQTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1fY29uZmlndXJh
dGlvbi0+dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCisgICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQo
bWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCiAjZW5kaWYKICAgICAsIG1fZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX25vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKQEAgLTQzNSw5ICs0MzUsOSBAQCBX
ZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRo
aXMpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6
bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1f
aW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
PigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3Rv
ckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQor
ICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+
KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkK
IHsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+
KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNo
YW5nZSksIFt0aGlzXSB7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IG1h
a2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhp
c10gewogICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB9
KTsKICNlbmRpZgpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQb2xp
Y3lDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmIHBvbGljeUNsCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3Jt
Q2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0gICAgICAg
IG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAg
ICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNs
aWVudCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpVSUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7Ci0gICAgICAg
IG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgICAg
IG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNv
bkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+Jgog
ewogICAgIGJvb2wgaGFzQ2xpZW50ID0gaWNvbkxvYWRpbmdDbGllbnQuZ2V0KCk7CiAgICAgaWYg
KCFpY29uTG9hZGluZ0NsaWVudCkKLSAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKKyAgICAgICAgbV9pY29uTG9h
ZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKICAgICBl
bHNlCiAgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBXVEZNb3ZlKGljb25Mb2FkaW5nQ2xp
ZW50KTsKIApAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTG9h
ZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VyCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xp
ZW50PiYmIGZpbmRDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kQ2xpZW50KSB7Ci0gICAgICAgIG1f
ZmluZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgICAg
ICBtX2ZpbmRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRD
bGllbnQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+JiYgZmluZE1hdGNoZXNDbGllbnQpCiB7CiAg
ICAgaWYgKCFmaW5kTWF0Y2hlc0NsaWVudCkgewotICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgICAgICBt
X2ZpbmRNYXRjaGVzQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50Pigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkRpYWdub3N0aWNMb2cKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0TWVudUNsaWVu
dCkKIHsKICAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1fY29udGV4dE1l
bnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7Cisg
ICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVD
bGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnRCYXNlKgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9p
bmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50PigpOworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50
LT5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKQEAgLTc3Niw3ICs3NzYsNyBAQCBib29sIFdlYlBh
Z2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIE9wdAogICAgIH0KIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJy
ZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKLSAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1c3BlbmRl
ZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hv
dWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsK
KyAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4o
KnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAogICAgIExPRyhQ
cm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5k
ZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1
NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVt
SUQoKS5sb2dTdHJpbmcoKSA6IDApOwogCkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuTWFuYWdlcik7Ci0gICAgbV9mdWxsU2Ny
ZWVuTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4o
KnRoaXMsIHBhZ2VDbGllbnQoKS5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOworICAg
IG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk+KCp0aGlzLCBwYWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgQVNTRVJU
KCFtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOwpAQCAtODYwLDIyICs4NjAsMjIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWSkKICAgICBBU1NFUlQoIW1fcGF5bWVudENvb3JkaW5hdG9yKTsKLSAgICBtX3BheW1l
bnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk+KCp0aGlzKTsKKyAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9Q
UkVWSUVXKQogICAgIEFTU0VSVCghbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcik7Ci0gICAgbV9z
eXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3lzdGVtUHJldmlld0Nv
bnRyb2xsZXI+KCp0aGlzKTsKKyAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gbWFrZVVu
aXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQogICAgIEFTU0VSVCghbV9jcmVkZW50aWFsc01lc3Nlbmdlcik7Ci0gICAg
bV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0g
bWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2Vu
ZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICBBU1NFUlQoIW1fZWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIpOwotICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9lZGl0YWJsZUltYWdl
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+KCp0aGlzKTsK
ICNlbmRpZgogfQogCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERy
YXdpbmdBcmVhKHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmUK
IAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGlm
IChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVl
KSB7Ci0gICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3Nj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk+KCp0aGlzKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAv
LyBPbiBpT1MsIG1haW4gZnJhbWUgc2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBvZiB2aXNpYmxl
IHJlY3QgdXBkYXRlcy4KICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LT5zZXRQ
cm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xscyhmYWxzZSk7CkBAIC0xMDA2LDE3ICsxMDA2LDE3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgbV9sb2FkZXJDbGllbnQgPSBudWxscHRy
OwogICAgIG1fbmF2aWdhdGlvbkNsaWVudCA9IG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9u
Q2xpZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2ljb25Mb2Fk
aW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOwot
ICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOwot
ICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7Ci0gICAg
bV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7Ci0gICAg
bV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0Ns
aWVudD4oKTsKKyAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25M
b2FkaW5nQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGb3Jt
Q2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7
CisgICAgbV9maW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CisgICAg
bV9maW5kTWF0Y2hlc0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4o
KTsKICAgICBtX2RpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCi0gICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwpA
QCAtMTIyNiw3ICsxMjI2LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9KTsKIAotICAgIGF1
dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRp
b24oc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3RvcigpLCBN
SU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhKSk7CisgICAgYXV0byBuYXZpZ2F0
aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihtYWtlVW5p
cXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdU
Rjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5h
dmlnYXRpb247CiB9CkBAIC0yNDE1LDcgKzI0MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1dG8gY29hbGVz
Y2VkV2hlZWxFdmVudCA9IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+Pigp
OwogICAgIGNvYWxlc2NlZFdoZWVsRXZlbnQtPmFwcGVuZChldmVudCk7CiAgICAgbV9jdXJyZW50
bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShjb2FsZXNjZWRXaGVlbEV2ZW50
KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQoZXZlbnQpOwpAQCAtMjQyMyw3ICsyNDIzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVu
dCYgZXZlbnQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZl
bnQoKQogewotICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CisgICAgYXV0byBuZXh0Q29hbGVzY2VkRXZl
bnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBXZWJX
aGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50ID0gY29hbGVzY2VkV2hlZWxFdmVudChtX3doZWVsRXZl
bnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRFdmVudC5nZXQoKSk7CiAgICAgbV9jdXJyZW50bHlQcm9j
ZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShuZXh0Q29hbGVzY2VkRXZlbnQpKTsKICAg
ICBzZW5kV2hlZWxFdmVudChuZXh0V2hlZWxFdmVudCk7CkBAIC0yOTg0LDcgKzI5ODQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxw
dHI7CiAgICAgfQogCi0gICAgbV9wcm92aXNpb25hbFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBy
b3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUo
c3VzcGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlv
bi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgp
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKKyAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9
IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlS
ZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1
cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwogCiAgICAgaWYg
KGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgewogICAgICAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8g
YmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAt
NTcwMiw3ICs1NzAyLDcgQEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5
OjpmdWxsU2NyZWVuTWFuYWdlcigpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RnVsbHNjcmVlbkNs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiYmIGNsaWVudCkKIHsK
ICAgICBpZiAoIWNsaWVudCkgewotICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICAgICAgbV9mdWxsc2NyZWVu
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTc0MzcsNyArNzQzNyw3IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0CiAgICAgaWYgKG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKQogICAgICAg
ICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogCi0gICAgbV91
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CisgICAgbV91c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBtYWtlVW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIH0KIApAQCAtODE0Myw3ICs4MTQzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVk
ID0gZW5hYmxlZDsKIAogICAgIGlmIChtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25F
bmFibGVkICYmICFtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSkKLSAgICAgICAgbV9zY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKKyAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4o
ZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEp
KTsKICAgICBlbHNlIGlmICghbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxl
ZCkKICAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBudWxscHRyOwogfQpAQCAt
OTE5MCw3ICs5MTkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNoU3ludGhlc2l6
ZXIoKQogV2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVzaXNEYXRhJiBXZWJQYWdlUHJveHk6OnNw
ZWVjaFN5bnRoZXNpc0RhdGEoKQogewogICAgIGlmICghbV9zcGVlY2hTeW50aGVzaXNEYXRhKQot
ICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgICAgICBtX3NwZWVjaFN5
bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgbWFrZVVuaXF1ZTxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciB9OwogICAgIHJldHVybiAqbV9zcGVlY2hTeW50aGVzaXNEYXRhOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA4YmRmOGNm
ODM4OGNkYzdiZmFjZmYyYjdlNjA1ZDBhODE4ZGFhYzY0Li45NjJmM2JlZDJkODI1NjlhMDdkZDRl
OWNkYWI4ZmNjNzIxMTlmN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NDYWNoZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmFkZFBy
b2Nlc3NJZlBvc3NpYmxlKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSBnZW5lcmF0
ZUFkZFJlcXVlc3RJZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJl
cXVlc3RJZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3Mu
Y29weVJlZigpKSk7CisgICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlm
aWVyLCBtYWtlVW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CiAKICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6YWRk
UHJvY2Vzc0lmUG9zc2libGUoKTogQ2hlY2tpbmcgaWYgcHJvY2VzcyAlaSBpcyByZXNwb25zaXZl
IGJlZm9yZSBjYWNoaW5nIGl0Li4uIiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7CiAgICAgcHJvY2Vzcy0+aXNSZXNwb25zaXZlKFt0aGlzLCBwcm9jZXNzUG9vbCA9IG1ha2VS
ZWYocHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKSksIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGlzUmVz
cG9uc2l2ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGRiZTI1MzUyYjUyNTg4ZDhhM2NjODY5NDg0NDQwZTc5ZTg1YTA5NmQuLmZlZGE4ZWU4ZThk
MzBmMzk0ZmYxMDhmYmZhODA0MTVkODEwNzdhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIzMywxNSArMjMzLDE1IEBAIHN0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhD
dXN0b21Qcm90CiBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbi5jb3B5KCkpCiAgICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3Vw
OjpjcmVhdGUoKSkKLSAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQotICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQotICAgICwgbV9kb3du
bG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCi0gICAg
LCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50PigpKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKKyAgICAsIG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50
PigpKQorICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50PigpKQorICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RG93bmxv
YWRDbGllbnQ+KCkpCisgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQobWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAg
ICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVy
KHN0ZDo6bWFrZV91bmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0
aGlzKSkKLSAgICAsIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1f
aGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlv
cml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQog
ICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKG1fY29uZmlndXJhdGlvbi0+
c2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbigpKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50
QmFzZSogY2xpZW50KQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYgY2xpZW50KQog
ewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgICAgICBtX2lu
amVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50
PigpOwogICAgIGVsc2UKICAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IFdURk1vdmUo
Y2xpZW50KTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0
aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Qgog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4mJiBoaXN0b3J5Q2xpZW50KQogewogICAgIGlm
ICghaGlzdG9yeUNsaWVudCkKLSAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOworICAgICAgICBtX2hpc3Rv
cnlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7
CiAgICAgZWxzZQogICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGll
bnQpOwogfQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3Rv
cnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpE
b3dubG9hZENsaWVudD4mJiBkb3dubG9hZENsaWVudCkKIHsKICAgICBpZiAoIWRvd25sb2FkQ2xp
ZW50KQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRv
d25sb2FkQ2xpZW50PigpOworICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkRvd25sb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9kb3dubG9hZENsaWVu
dCA9IFdURk1vdmUoZG93bmxvYWRDbGllbnQpOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRv
d25sb2FkQ2xpZW50PiYmIGRvCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+JiYgYXV0b21hdGlvbkNs
aWVudCkKIHsKICAgICBpZiAoIWF1dG9tYXRpb25DbGllbnQpCi0gICAgICAgIG1fYXV0b21hdGlv
bkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAg
ICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVu
dD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1vdmUoYXV0
b21hdGlvbkNsaWVudCk7CiB9CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkMKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAg
IGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQotICAgICAgICBtX2N1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ+KCk7CisgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQpOwogI2VuZGlmCkBAIC00OTIsNyArNDkyLDcgQEAgTmV0d29y
a1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNp
dGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogICAg
IH0KIAotICAgIGF1dG8gbmV0d29ya1Byb2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtQ
cm9jZXNzUHJveHk+KCp0aGlzKTsKKyAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gbWFrZVVuaXF1
ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5PigqdGhpcyk7CiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCkBAIC0yNTEwLDcgKzI1MTAsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYQogICAgICAgICBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJh
YmxlRG9tYWluLnJlbW92ZShtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWlu
LnJhbmRvbSgpKTsKIAogICAgIGF1dG8mIHZhbHVlID0gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJS
ZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgKnZhbHVlID0gcHJld2FybUluZm9ybWF0
aW9uOwpAQCAtMjU1NywxMiArMjU1NywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQ
cm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnRha2VVcGxvYWRBc3NlcnRpb24oKTsKICAgICAgICAgCiAgICAgICAg
IEFTU0VSVCghbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vz
c1VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpV
bmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldl
YktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAg
ICAgfQogICAgIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5hZGQo
cHJvY2Vzc0lELCBudWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5l
dHdvcmtpbmcpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NIYXNV
cGxvYWRzKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKQEAgLTI1OTksMTIgKzI1OTksMTIg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRp
YShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJUaGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBwbGF5aW5nIGF1ZGlibGUgbWVkaWEg
aXMgbm93IG9uZS4gVGFraW5nIFVJIHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwogCiAgICAgICAgIEFT
U0VSVCghbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVBy
b2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNz
ZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3Ms
IEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJh
Y2spOworICAgICAgICBtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBtYWtlVW5p
cXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRp
YSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNv
bjo6TWVkaWFQbGF5YmFjayk7CiAgICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nl
c1BsYXlpbmdBdWRpYmxlTWVkaWEuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJU
KHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwg
QXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdy
b3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDBiMjQyYTJiYjU4Njc0YzAzOGNmN2NmYTQ5MmRiN2Q5NWNh
ZTAwMWUuLmRhMzZmNmJhNThhNTMwNTZlMDhjMmI2NmIyMzhlN2VlMzM4N2U3M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUxLDcgKzE1MSw3
IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSoKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0
aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGlt
ZXIoKTsgfSkKICAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwgbV91c2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eT4oKnRoaXMpKQorICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
KG1ha2VVbmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQogI2VuZGlm
CiAgICAgLCBtX2lzUHJld2FybWVkKGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKaW5kZXggZTlmY2YwMDE1Mzk5NWRjMWNjZTEzNWY4YzA5
MmU5MmU2NmRiZmYzYS4uZDBiYmE1NjRjMjc1ODJkNzgyNmU5ZjJjMjA2MjIzNzAyMjcyOTUzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYnNpdGVEYXRhU3Rv
cmVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfldlYnNpdGVEYXRhU3RvcmVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDE4Mjk0ZDM3
ZmU0OWVlZDZkNjlkZmZmZjVmMmY2NTA3MGI2NmNkOTAuLjdiZGQwM2QzYzhlYzhlMDY2MmU3N2Qw
MTgyNTBiNTA4OGMyNmNmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2Nh
aXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9j
YWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tl
bmQoKQogICAgICAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbCht
X3dlYlBhZ2VQcm94eS52aWV3V2lkZ2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9
IGdka192aXN1YWxfZ2V0X3NjcmVlbih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVO
X1hESVNQTEFZKHNjcmVlbikpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jv
b3Rfd2luZG93KHNjcmVlbikpLAorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3Rv
cmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2lu
ZG93KHNjcmVlbikpLAogICAgICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdk
a192aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7
CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3Rv
cmVCYWNrZW5kQ2Fpcm9JbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9k
ZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGI4NzRmYjBm
YjJlMmE3ZTdlYzM2Y2M0NGUzOWQ2MjQ5MDZhNGM1ZjEuLmY4ODhjMGY0NDZjNjI3MTI3YzgzNzVi
ZTBkODFhNmEzZjJjMDlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvckNsaWVudDo6Y29ubmVjdGlvbkNsb3NlZCgpCiB2b2lkIFJlbW90ZUlu
c3BlY3RvckNsaWVudDo6aW5zcGVjdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRh
cmdldElEKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1
cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0
aW9uSUQsIHRhcmdldElEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90
ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlv
bklELCB0YXJnZXRJRCk7CiAgICAgfSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkg
ewogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zaG93KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVdheWxhbmQuY3BwCmluZGV4IDM4MzEwMDA1ODg5NGRlYzBmYjdiNTFjYWEwOWEyMzlkNzdk
MDhhOGIuLjg5MzI3OWZiY2Y1OGFlYWYyYWZkNmIxYTQ3YzFjNzZjMjNkODJiZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVdheWxhbmQuY3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVXYXlsYW5kOjpjaGVja1JlcXVpcmVtZW50cygpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0
ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRl
bnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+
dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RP
cGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxs
cHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAg
ICAgICAgaWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBn
bEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAg
ICAgICAgICBnbEltYWdlVGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVH
TElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCmluZGV4IGU5YWU2NTUyYTdhMmQ4NjJjNGJkNGVl
MTBlZDJlYzM2ZTkyZjgzMWQuLmNhNjUzZTVlYmE3MGM5NjE1NWZmNzY0ODhjM2VkZjQyODFmODU3
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgU2VsZWN0aW9uRGF0YSogRHJhZ0FuZERyb3BI
YW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY28KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RHJvcHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0ID0gbV9k
cm9wcGluZ0NvbnRleHRzLmFkZChjb250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgaWYgKCFkcm9wcGluZ0NvbnRleHQpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBt
X3BhZ2Uudmlld1dpZGdldCgpOwotICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOworICAgICAgICBkcm9w
cGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRp
b24pOwogICAgICAgICBWZWN0b3I8R2RrQXRvbT4gYWNjZXB0YWJsZVRhcmdldHMoUGFzdGVib2Fy
ZEhlbHBlcjo6c2luZ2xldG9uKCkuZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGRyb3BwaW5n
Q29udGV4dC0+Z2RrQ29udGV4dCkpOwogICAgICAgICBkcm9wcGluZ0NvbnRleHQtPnBlbmRpbmdE
YXRhUmVxdWVzdHMgPSBhY2NlcHRhYmxlVGFyZ2V0cy5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0
byYgdGFyZ2V0IDogYWNjZXB0YWJsZVRhcmdldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCBjYmUzODBiMjQwZDk2MDExMTcy
N2I3NzBhODI1ZTA5ZTA1NDdjOWVkLi5jM2Q5OTczYzcwZGMyMDg5YzY4M2Q2NWE5MTNkYTI5NGQ1
ZmZlYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENv
bXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29t
cG9zaXRvci5jcHAKQEAgLTQyMCw5ICs0MjAsOSBAQCBib29sIFdheWxhbmRDb21wb3NpdG9yOjpp
bml0aWFsaXplRUdMKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9F
UykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9u
cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxz
ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lv
bnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOwog
I2Vsc2UKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lv
bnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250
ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxF
eHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNE
T3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7
CiAjZW5kaWYKICAgICBpZiAoZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFn
ZSIpIHx8IGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwi
KSkKICAgICAgICAgZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
R0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVH
TEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCmluZGV4IGMyMzQxMWMxZjA5
YjAxMGE2NTI1NGIzNjlkZDMxNjlkMzFmMGMwZTAuLjYxZTg1OTRkNWI3YzQxYWFmOWZjODJjNjUz
OGRiOWFkNzE4NTYzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9F
ZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KQEAgLTU4LDcgKzU4LDcgQEAgRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXI6On5FZGl0YWJsZUltYWdlQ29udHJvbGxlcigpCiBFZGl0YWJsZUltYWdl
JiBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZShXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKIHsKICAgICBhdXRv
IHJlc3VsdCA9IG1fZWRpdGFibGVJbWFnZXMuZW5zdXJlKGVtYmVkZGVkVmlld0lELCBbJl0gewot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEVkaXRhYmxlSW1hZ2U+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJs
ZUltYWdlPiBpbWFnZSA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKICAgICAgICAgaW1h
Z2UtPmRyYXdpbmdWaWV3ID0gbV93ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3
aW5nVmlldyhlbWJlZGRlZFZpZXdJRCk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3Rh
dGVUcmFja2luZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCmluZGV4IGQwM2ExNzI2YWIzMzRhMDBlNjBmYmMwNTBi
NTBlNWMzMzc1YWY3MjAuLjdmMGY5NDg0ZmQ3Nzc0ZGQxMTU3YWUyODg1YzkwYTNiZjJlZTc5YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3Rh
dGVUcmFja2luZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBw
bGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQpAQCAtNjUsNyArNjUsNyBAQCAtICh2b2lkKWRp
ZE1vdmVUb1dpbmRvdwogICAgIGlmICghc2VsZi5fY29udGVudFZpZXcud2luZG93IHx8IF9hcHBs
aWNhdGlvblN0YXRlVHJhY2tlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX2FwcGxpY2F0aW9u
U3RhdGVUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVU
cmFja2VyPihzZWxmLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwg
QHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdC
YWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsK
KyAgICBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6QXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXI+KHNlbGYsIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0
ZXJFbnRlcmluZ0JhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9y
ZWdyb3VuZCkpOwogICAgIAogICAgIGlmIChfbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5k
ICYmICFbc2VsZiBpc0JhY2tncm91bmRdKQogICAgICAgICBbc2VsZiBfYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcubW0KaW5kZXggNjgxMWU4N2E0YTQyMTAwNWJkOTRhN2FjMjE2NTQzZWNjMDBhNzdmYy4u
NDMxZmFjZDFlNjgzOTdlYzg1NzM5MWFiMWNmODg4ZDM4NDE1N2E0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCAt
IChpbnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJL
aXQ6OldlYlByb2Nlc3NQb29sJilwcgogICAgIF9wYWdlLT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmco
dHJ1ZSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgX3BhZ2UtPnNldEZ1bGxz
Y3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93
ZWJWaWV3KSk7CisgICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJL
aXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMjM5LDcgKzIz
OSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vz
c1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAKICAgICBXZWJLaXQ6OkluaXRpYWxpemVX
ZWJLaXQyKCk7CiAKLSAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CisgICAgX3BhZ2VDbGllbnQgPSBtYWtlVW5p
cXVlPFdlYktpdDo6UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwogICAgIF93ZWJWaWV3
ID0gd2ViVmlldzsKIAogICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
UHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pXTsKQEAgLTU0MSw3ICs1NDEsNyBAQCAtICh2b2lkKV93ZWJWaWV3RGVzdHJveWVkCiAKIC0g
KHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5n
QXJlYVByb3h5OihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eSYpcHJvY2VzcwogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eT4oKl9wYWdlLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7CiB9CiAKIC0gKHZv
aWQpX3Byb2Nlc3NEaWRFeGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA5ZTE2Y2NiZmQ2YjIwMWNiNTlm
NzM4N2FiYWZmODE4YjU1NjA2OTcyLi5kM2VkYTM2OWMwMzcxYzFmMmMxM2ExZDA1OTkxNWRiNmRk
NWU5MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTgwNiw3ICs4MDYsNyBAQCAtICh2b2lkKXNldHVw
SW50ZXJhY3Rpb24KICAgICAKICAgICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtb
V0tBY3Rpb25TaGVldEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBb
X2FjdGlvblNoZWV0QXNzaXN0YW50IHNldERlbGVnYXRlOnNlbGZdOwotICAgIF9zbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNl
bGYpOwogICAgIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQgPSBOTzsKICAgICBfcG90
ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POwogICAgIF9pc0RvdWJsZVRhcFBlbmRpbmcgPSBOTzsK
QEAgLTgyMSw3ICs4MjEsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICNlbmRpZgogCiAj
aWYgRU5BQkxFKFBMQVRGT1JNX0RSSVZFTl9URVhUX0NIRUNLSU5HKQotICAgIF90ZXh0Q2hlY2tp
bmdDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRy
b2xsZXI+KCpfcGFnZSk7CisgICAgX3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlcj4oKl9wYWdlKTsKICNlbmRpZgogCiAgICAg
X2hhc1NldFVwSW50ZXJhY3Rpb25zID0gWUVTOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgLSAoQk9P
TCliZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXcKICAgICAgICAgcmV0dXJuIE5POwogCiAg
ICAgaWYgKCFfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIpCi0gICAgICAgIF9pbnB1dFZpZXdVcGRh
dGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZl
cnJlcj4oc2VsZik7CisgICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlx
dWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CiAKICAgICBCT09MIGRp
ZEJlY29tZUZpcnN0UmVzcG9uZGVyOwogICAgIHsKQEAgLTUzMTEsNyArNTMxMSw3IEBAIC0gKHZv
aWQpX2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uJilpbmZvcm1hdGlvbiB1CiAgICAgICAgIC8vIERlZmVyIHZpZXcgdXBkYXRlcyB1bnRpbCB0
aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgYSBub3RpY2VhYmxlIGZsYXNoIHdoZW4g
c3dpdGNoaW5nIGZvY3VzCiAgICAgICAgIC8vIGJldHdlZW4gZWxlbWVudHMgdGhhdCByZXF1aXJl
IHRoZSBrZXlib2FyZC4KICAgICAgICAgaWYgKCFpbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAg
ICAgICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKKyAgICAgICAgICAgIGlucHV0Vmll
d1VwZGF0ZURlZmVycmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVy
cmVyPihzZWxmKTsKICAgICAgICAgW3NlbGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGIw
MjgyNDg5MjAwM2EwNDk4OTI5ZTcwNmE1OTA0NTlhNGY4NzFhY2QuLmMwOGY5Nzg2ZjBlYWFiNGE5
NzViYjU2NDhjNzQyN2M1NjM2ZGJlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtOTEyLDcgKzkxMiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjplbGVtZW50RGlkRm9jdXMoY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5m
b3JtYXRpb24sCiAgICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2VzcygpLnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwogICAgIGlm
IChtX2VkaXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgdHJ5IHRvIGVsaW1pbmF0ZSBtX2RlZmVycmVkRWxlbWVudERpZEZvY3Vz
QXJndW1lbnRzIGFsdG9nZXRoZXIsIGluIGZhdm9yIG9mIG9ubHkgZGVmZXJyaW5nIGFjdGlvbnMg
dGhhdCBhcmUgZGVwZW5kZW50IG9uIHBvc3QtbGF5b3V0IGVkaXRvciBzdGF0ZSBpbmZvcm1hdGlv
bi4KLSAgICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVu
dHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFj
dGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKKyAgICAgICAgbV9kZWZlcnJl
ZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IG1ha2VVbmlxdWU8RWxlbWVudERpZEZvY3VzQXJn
dW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50
ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0
YU9iamVjdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1OCw3ICsxMjU4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyPiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhv
cml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29y
ZGluYXRvclByb3h5LCBQS1BheW1lbnRSZXF1ZXN0ICpwYXltZW50UmVxdWVzdCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
PihwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29y
ZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdCk7CiB9CiAKIFVJVmlld0NvbnRyb2xsZXIgKldl
YlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNv
bnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmll
d0NvbnRyb2xsZXIubW0KaW5kZXggOGIxMjNiMGE5N2MwMzBlOTQ1MGY1ZWQ0ZjhjMTc0YjMyMWJi
NDA3Yi4uOGZmOGEwYmY0NzViM2Y3YjIzNjIyOWY0MTJlM2YzMjY2Y2Y5NTk2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmll
d0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3Jl
ZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0
ZToKIH07CiAKIGNsYXNzIFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tG
dWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0K
aW5kZXggODM0MzQ4ODljZGNmMjQ5YzFjMjc5MWJkMDdiZmZmYTIwMWNmNDg3ZC4uYTkxMjk1M2Vj
OTFjMjczMzYyNjc2M2RhZjlkYTI2YjI0OTMzYzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBh
Z2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChOU1ZpZXcqIHZpZXcsIFdLV2ViVmlldyAqd2Vi
VmlldykKICAgICA6IFBhZ2VDbGllbnRJbXBsQ29jb2Eod2ViVmlldykKICAgICAsIG1fdmlldyh2
aWV3KQogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgICwgbV9hbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI+KCkpCisgICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihtYWtlVW5pcXVl
PEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbQppbmRleCA0M2U5Zjk2N2JjODk3N2ZiZmY4Yzg2NjhhNWNjYTFmMzgyNGMwODA5
Li4zNGE2OWJiZTBiYjBkMTc2YjU1MWJhZjJkN2EzNWMxZmFhYzAzN2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbQpAQCAtNTQsNiArNTQsNyBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwg
RGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCA9IDE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xp
ZW50IDogV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCkBAIC0x
NTAsNyArMTUxLDcgQEAgLSAoaWQpaW5pdFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luZG93IHdl
YlZpZXc6KE5TVmlldyAqKXdlYlZpZXcgcGFnZTooV2ViS2l0OjoKICAgICBfd2ViVmlldyA9IHdl
YlZpZXc7CiAgICAgX3BhZ2UgPSAmcGFnZTsKIAotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PigpOworICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQg
PSBtYWtlVW5pcXVlPFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50PigpOwogICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldFBh
cmVudChzZWxmKTsKIAogICAgIFtzZWxmIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1t
CmluZGV4IDY2MDMxN2MyZmJjNzliNjhiYjViNzM0NzZhNThiZWZlYTA5YjA2ZDMuLjY5ZDlkOWUy
ZDQ0NDg0M2QxNTI3MGY1MTE3Zjc3NGNkMjM3ZDVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAtNTUsNiArNTUsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBUZXh0
RmluZGVyRmluZENsaWVudCA6IHB1YmxpYyBBUEk6OkZpbmRNYXRjaGVzQ2xpZW50LCBwdWJsaWMg
QVBJOjpGaW5kQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBUZXh0RmluZGVyRmluZENsaWVudChXS1RleHRGaW5kZXJDbGllbnQgKnRl
eHRGaW5kZXJDbGllbnQpCiAgICAgICAgIDogbV90ZXh0RmluZGVyQ2xpZW50KHRleHRGaW5kZXJD
bGllbnQpCkBAIC0xNjgsOCArMTY5LDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZToo
V2ViS2l0OjpXZWJQYWdlUHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICopdmlldyB1c2UKICAgICBf
dmlldyA9IHZpZXc7CiAgICAgX3VzZVBsYXRmb3JtRmluZFVJID0gdXNlUGxhdGZvcm1GaW5kVUk7
CiAgICAgCi0gICAgX3BhZ2UtPnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXRGaW5k
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2Vs
ZikpOworICAgIF9wYWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6
VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudCht
YWtlVW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKIAogICAgIHJl
dHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlZDBkNWZmZTk1ODlmOTVlNDRhMDdm
MjIxOGVkODJjMDBmMDE3ZDdlLi5lNzRhZGFjMWU2NWViZTVjOTliMzFkOTA2N2FlNjExNThmMzk4
N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yQ2xpZW50OjpkaWRDbG9zZShDb25uZWN0aW9uSUQpCiB2b2lkIFJlbW90ZUluc3BlY3Rv
ckNsaWVudDo6aW5zcGVjdChDb25uZWN0aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJn
ZXRJRCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNw
ZWN0b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJ
RCksIFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCAmdHlwZV0gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rp
b25JRCwgdGFyZ2V0SUQsIHR5cGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJ
bnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwogICAg
IH0pOwogCiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcAppbmRleCAxYjZkOWNjNTRmYzYwYjUzZTQ0MDI3MWYyMzA4ZTdjMGY0
N2M4NzRjLi5hODgzM2Y2MjQ4N2Y5YTY3MjEwMzk5ZWM5ZjhmZjVlMDkyNzEyZWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJv
eHkmIHBhZ2VQcm94eSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogY2xpZW50ID0gbV9p
bnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAm
cmVxdWVzdFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNw
ZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwu
cG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
SW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogCiAgICAgLy8gU2V0dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRl
bnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlz
KSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAg
ICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIg
aHRtbEJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFj
a2luZ1N0b3JlRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tp
bmdTdG9yZURpcmVjdDJELmNwcAppbmRleCBiNjdkNzNhNGRjNDg4YjMxZmRjOWE0NzIxOTY5MTQw
NDI3NDQ4ODI1Li41ZDUwYWU1NTQ2ODBhNmU5ZTNkYTJjZTg0YmU1NjRkNWMzMjM3ZjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3Qy
RC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9yZTo6Y3Jl
YXRlQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3Jl
QmFja2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUs
IG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQy
RDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGNkNmYw
OGZmMThiZDU1YzE1NTQ0NjNkNGE0MGI1MWU0NWIyZWFiOWYuLjAzMDdjNGY5ZjE0M2Y4NmRjNjIw
OGI0ODRiZThkYjQyMmRjMGY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDYsNyArNDYsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFn
ZUNsaWVudEltcGwoV2ViVmlldyYgdmlldykKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwg
ZnVuY3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzPigqbV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9j
ZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25z
dCBXZWJDb3JlOjpSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAppbmRleCBjZDUzNTJkZjdhYTA0ZTY5ZDliMGY5OGVkMDAxZTVjNjMzMmY3NTkzLi42
N2U1ZTRiMjdhM2FlODBhYjY2OGY2YzM0MTdjMGYwY2U2YjdmMDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBXZWJWaWV3
OjpyZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpCiB9CiAKIFdlYlZpZXc6OldlYlZpZXcoUkVD
VCByZWN0LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05E
IHBhcmVudFdpbmRvdykKLSAgICA6IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VD
bGllbnRJbXBsPigqdGhpcykpCisgICAgOiBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xp
ZW50SW1wbD4oKnRoaXMpKQogewogICAgIHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuaAppbmRleCBiNmQ0YTA0MjBkNWE1ZGJkNjQ2MDgzYWY2Nzg4MDUxYmY2
Y2M0N2UwLi5mMmQ2MmVhOTc5MGY4MDdhNjViNWQzZTU4ZjgwYjk3ZjA2YWRiZjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQsIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOwogICAgIGV4cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvcihXZWJQ
YWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJH
YW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2Vi
R2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCA0ZjgxMGNjZjM4ZWNmYTJjOTllY2JkYTg5ZDA0MWNl
YjhkMjMzM2I4Li5hYWIzNDU3Y2VkNjRhNWE5MTBjZGM1NjJhY2MwMTE1MDBkM2M2Y2M5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQ
cm92aWRlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnNl
dEluaXRpYWxHYW1lcGFkcyhjb25zdCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGEKICAg
ICAgICAgaWYgKGdhbWVwYWREYXRhc1tpXS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIG1fZ2FtZXBhZHNbaV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+
KGdhbWVwYWREYXRhc1tpXSk7CisgICAgICAgIG1fZ2FtZXBhZHNbaV0gPSBtYWtlVW5pcXVlPFdl
YkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7CiAgICAgICAgIG1fcmF3R2FtZXBhZHNbaV0gPSBt
X2dhbWVwYWRzW2ldLmdldCgpOwogICAgIH0KIH0KQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXZWJH
YW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRDb25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmIGdhbWVw
YWREYXRhKQogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldKTsK
IAotICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmlu
ZGV4KCldID0gbWFrZVVuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YSk7CiAgICAgbV9yYXdH
YW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5k
ZXgoKV0uZ2V0KCk7CiAKICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZmQ2NTIz
ZDZmYTdkNzU5M2QxYjhkM2IzMmJhYjQ2M2E5NjhlYWEyOC4uNjMzZjIyZmRmZTQyNzJiMzlkZTI1
ZWEwZTRhMGEwNGQ3Y2RlNmNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLmgKaW5kZXggMGJiNGYyYjQyMWEzZWMyMjg3NTRlNjM4MjlkNDFhYmJlMmUw
NmY4ZC4uYTZjMjg3MTZhYjE2NzhhZmRkNTc0YzlkZjlmZTI4Njg2MzQ2MzAxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9s
b2NhdGlvbk1hbmFnZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogY2xh
c3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlBy
b2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0
aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
KFdlYlByb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGYzZWM3MjA4N2NhMjg4Njdm
NTRkOWRmMGY1MGQ4NzEwMmUwMTZmYTIuLmNhODVkNTg1ZGNmMWI3NmVmMGI4ZDExZDU5YWQ2NjA0
YWMzZjE4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXS1R5cGVJ
RCBXS0J1bmRsZUdldFR5cGVJRCgpCiAKIHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmLCBXS0J1bmRsZUNsaWVudEJhc2UgKndrQ2xpZW50KQogewotICAgIFdlYktp
dDo6dG9JbXBsKGJ1bmRsZVJlZiktPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVu
ZGxlUmVmKS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVu
dD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVNldFNlcnZpY2VXb3JrZXJQcm94eUNy
ZWF0aW9uQ2FsbGJhY2soV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCB2b2lkICgqY2FsbGJhY2spKHVp
bnQ2NF90KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZjEyYTViYTc3NGQ2Y2M2
OGQwODRmMWY2MDIxY2ViZjM4MWFhM2E1OC4uZGMwNzU4YWQ3NWFmMzYxZGZiZTgxNmViMTEzZjQx
YzdmMDlkODFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTc3LDcgKzc3LDcg
QEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkKIHZvaWQgV0tCdW5kbGVQYWdlU2V0
Q29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4
dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYp
LT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBA
IC04NiwyMiArODYsMjIgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGUKIAogdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFn
ZUVkaXRvckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VS
ZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVudCA/IHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkg
OiBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KHdrQ2xpZW50ID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudD4oKndrQ2xpZW50KSA6IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRp
dG9yQ2xpZW50PigpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVu
dD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRC
dW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3Jt
Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJh
c2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChw
YWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8V2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tCdW5kbGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAg
ICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNl
TG9hZENsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0
SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBX
S0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVu
ZGxlUGFnZVBvbGljeUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTExLDcgKzExMSw3IEBAIHZv
aWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZVBhZ2VQb2xpY3lDbGllCiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3
a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZVVJQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4o
d2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50QmFzZSog
d2tDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXgg
ZWJkM2VmNWYyOTMwOGMxNDE5M2ExODFiN2UxZTRhNDI1ZmQyMWRkMi4uNjlmN2FmMjJiNTY3NTA0
ZDRmMzFmMGQ3YTcwYjg3NGUwOWZhNTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcApAQCAtNTQsNiArNTQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRU
cmFpdHM8V0tCdW5kbGVQYWdlT3ZlcmxheUFjY2Vzc2liaWxpdHlDbGllbnRCYXNlPiB7CiB9CiAK
IGNsYXNzIFBhZ2VPdmVybGF5Q2xpZW50SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZU92
ZXJsYXlDbGllbnRCYXNlPiwgcHVibGljIFdlYktpdDo6V2ViUGFnZU92ZXJsYXk6OkNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGFn
ZU92ZXJsYXlDbGllbnRJbXBsKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiBjbGllbnQp
CiAgICAgewpAQCAtMjE2LDcgKzIxNyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZU92ZXJsYXlH
ZXRUeXBlSUQoKQogCiBXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlD
cmVhdGUoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIGF1
dG8gY2xpZW50SW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3
a0NsaWVudCk7CisgICAgYXV0byBjbGllbnRJbXBsID0gbWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNs
aWVudEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6V2ViUGFnZU92
ZXJsYXk6OmNyZWF0ZShXVEZNb3ZlKGNsaWVudEltcGwpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFj
L1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCmluZGV4IGFjYzM1
YTIxYjU5ZjFhYTMxZTMzMDUxYTY2YmMxMzA1OTk2Njk5ZDMuLmQ2ZmZkMWNjYzA0YTkzYTdhMDlk
MmIzNjU1OWE4ZjBjMDk1MGZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5k
bGVQYWdlQmFubmVyTWFjLm1tCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFBhZ2VCYW5uZXJDbGllbnRJbXBsIDog
QVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlQmFubmVyQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlQmFu
bmVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFBhZ2VCYW5uZXJDbGllbnRJbXBsKFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJh
c2UqIGNsaWVudCkKICAgICB7CkBAIC0xMDMsNyArMTA0LDcgQEAgV0tCdW5kbGVQYWdlQmFubmVy
UmVmIFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKENBTGF5ZXIgKmxh
eWVyLAogICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
UGFnZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBt
YWtlVW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAgICBy
ZXR1cm4gdG9BUEkoJldlYktpdDo6UGFnZUJhbm5lcjo6Y3JlYXRlKGxheWVyLCBoZWlnaHQsIGNs
aWVudEltcGwucmVsZWFzZSgpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDQyMTAxZjhjODJjYjJhNTQ4M2JhZTRkYzg0
ODA3YjQxNjVhOTJkODYuLjA5NWYzNmZmYzYzZjk1YjQ3NTU4MWY1YjhlZDVlOTNmNDI3MzhiMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIHN0YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRl
RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvCiB7CiAgICAgRE9NT2JqZWN0Q2FjaGVG
cmFtZU9ic2VydmVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9i
c2VydmVycygpLmFkZCgmZnJhbWUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9N
T2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyPihmcmFtZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUp
OwogICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMTA1LDcgKzEw
NSw3IEBAIGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdl
YkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlCiAgICAgICAgIGlmIChkb21XaW5kb3cgJiYg
KCFtX2RvbVdpbmRvd09ic2VydmVyIHx8IG1fZG9tV2luZG93T2JzZXJ2ZXItPndpbmRvdygpICE9
IGRvbVdpbmRvdykpIHsKICAgICAgICAgICAgIC8vIE5ldyBET01XaW5kb3csIGNsZWFyIHRoZSBj
YWNoZSBhbmQgY3JlYXRlIGEgbmV3IERPTVdpbmRvd09ic2VydmVyLgogICAgICAgICAgICAgY2xl
YXIoKTsKLSAgICAgICAgICAgIG1fZG9tV2luZG93T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PERPTVdpbmRvd09ic2VydmVyPigqZG9tV2luZG93LCAqdGhpcyk7CisgICAgICAgICAgICBtX2Rv
bVdpbmRvd09ic2VydmVyID0gbWFrZVVuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRv
dywgKnRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgbV9vYmplY3RzLmFwcGVuZCgmZGF0YSk7
CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6cHV0KHZvaWQqIG9iamVj
dEhhbmRsZSwgdm9pZCogd3JhcHBlcikKIHsKICAgICBET01PYmplY3RNYXA6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBkb21PYmplY3RzKCkuYWRkKG9iamVjdEhhbmRsZSwgbnVsbHB0cik7CiAgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVE
YXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CiB9CiAKIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChX
ZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCkBAIC0yMjQsNyArMjI0
LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRs
ZSwgdm9pZCogd3JhcHBlcikKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBw
ZXIpKTsKICAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gb2JqZWN0SGFuZGxlLT5kb2N1
bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9i
c2VydmVyKCpmcmFtZSkuYWRkT2JqZWN0Q2FjaGVEYXRhKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNw
cAppbmRleCA0Y2NlYzYyZWYwZTExMzFmYTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmLi40ZDc0MmU0
MDliYmZjN2NmYWI0MDhjZDY1MzhhZWY5ZjIyOGZkNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9p
ZCBXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiBidW5k
bGUsIEFQSTo6T2JqZWN0KiB1c2UKICAgICBzY2FuTW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0
b3J5LCBtb2R1bGVQYXRocyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBh
dGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1
ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKKyAgICAgICAgYXV0byBtb2R1bGUgPSBtYWtlVW5p
cXVlPE1vZHVsZT4obW9kdWxlUGF0aHNbaV0pOwogICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChpbml0aWFsaXplV2ViRXh0ZW5z
aW9uKG1vZHVsZS5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0V2ViRWRpdG9yLmNwcAppbmRleCAwNDA3MmViODY0ZGJlMzVmODBkZmM4NmFkMGU4ODNjM2U5
OWNlNDRmLi5jY2I1MWUwZDk2NDBjNjZmODU5NmU0NzQxNzE0MDU4ZTkxMzk3Njg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0V2ViRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJL
aXRXZWJFZGl0b3IqIHdlYmtpdFdlYkVkaXRvckNyZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdl
KQogewogICAgIFdlYktpdFdlYkVkaXRvciogZWRpdG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FRElUT1IsIG51bGxwdHIpKTsKICAgICBlZGl0b3It
PnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwotICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBh
Z2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VF
ZGl0b3JDbGllbnQ+KGVkaXRvcikpOworICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2Up
LT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVlPFBhZ2VFZGl0b3JDbGll
bnQ+KGVkaXRvcikpOwogICAgIHJldHVybiBlZGl0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRl
bnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKaW5kZXggNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5
NjEyOTlhNzAxMDgxNzUwMS4uZTMwNmUzZmVmMjYzMWQ1NDY2NTU3MTE2ZTVlNDg3ZDM3MWM3ODU3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTE5
Niw3ICsxOTYsNyBAQCBjbGFzcyBXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5h
bCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbgogV2ViS2l0V2ViRXh0ZW5zaW9u
KiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAg
ICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBOVUxMKSk7Ci0gICAgYnVuZGxl
LT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNs
aWVudD4oZXh0ZW5zaW9uKSk7CisgICAgYnVuZGxlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJF
eHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4
dGVuc2lvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGNm
YzUwMzFlZDZlNGEyOTU0ZmUwMmEwM2RhODdhMTYxY2QyZDMwODIuLjZkYjI5OWY0NzExMmExNDQ1
ZjdlNjgzMzQ3MmQzZGI4ZDdkN2I5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFn
ZS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgV2ViS2l0RnJhbWUqIHdlYmtpdEZyYW1l
R2V0T3JDcmVhdGUoV2ViRnJhbWUqIHdlYkZyYW1lKQogICAgIGlmICh3cmFwcGVyUHRyKQogICAg
ICAgICByZXR1cm4gd3JhcHBlclB0ci0+d2Via2l0RnJhbWUoKTsKIAotICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+IHdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dEZyYW1lV3JhcHBlcj4oKndlYkZyYW1lKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJh
bWVXcmFwcGVyPiB3cmFwcGVyID0gbWFrZVVuaXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJG
cmFtZSk7CiAgICAgd3JhcHBlclB0ciA9IHdyYXBwZXIuZ2V0KCk7CiAgICAgd2ViRnJhbWVNYXAo
KS5zZXQod2ViRnJhbWUsIFdURk1vdmUod3JhcHBlcikpOwogICAgIHJldHVybiB3cmFwcGVyUHRy
LT53ZWJraXRGcmFtZSgpOwpAQCAtNjc4LDExICs2NzgsMTEgQEAgV2ViS2l0V2ViUGFnZSogd2Vi
a2l0V2ViUGFnZUNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogICAgIFdlYktpdFdlYlBhZ2UqIHBh
Z2UgPSBXRUJLSVRfV0VCX1BBR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QQUdFLCBO
VUxMKSk7CiAgICAgcGFnZS0+cHJpdi0+d2ViUGFnZSA9IHdlYlBhZ2U7CiAKLSAgICB3ZWJQYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50Pihw
YWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb250ZXh0TWVudUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBh
Z2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVUlDbGll
bnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldElu
amVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8UGFnZVJlc291cmNlTG9h
ZENsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudChtYWtlVW5pcXVlPFBhZ2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnRl
eHRNZW51Q2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNs
aWVudChtYWtlVW5pcXVlPFBhZ2VVSUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldElu
amVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7
CiAKICAgICByZXR1cm4gcGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0
b3IubW0KaW5kZXggODEwNTVjZTdmZGViYTMxOGRhYjA2ODI2MzRjNmJkODRhMzdmYWU4Yy4uMDg0
ZjMwMDVkNjEwM2Q0ZTI1MDMzYzI1NmM3MGMwZTA2NDA0MWNkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0
b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tET01UZXh0SXRlcmF0b3IubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgLSAoaWQpaW5pdFdpdGhS
YW5nZTooV0tET01SYW5nZSAqKXJhbmdlCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgX3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4
dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CisgICAgX3RleHRJdGVy
YXRvciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29y
ZVJhbmdlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbQppbmRleCA0ODgwMGJiMzE3OTA2NWU0ZTczMjkzMDY5MDU0NjgwZTQzNGFm
MWZmLi40MjAyMzk2YWJhZmFmMzBkNzE4OWFlYjY4NTA5ZWEyNzE3MWI5NzQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC01NDQsNyArNTQ0LDcgQEAgLSAodm9pZClfc2V0
Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4p
Zm9ybURlbGVnYXQKICAgICB9OwogCiAgICAgaWYgKGZvcm1EZWxlZ2F0ZSkKLSAgICAgICAgX3Bh
Z2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGll
bnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudCht
YWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5z
ZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobnVsbHB0cik7CiB9CkBAIC02NzMsNyArNjczLDcg
QEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRp
dGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICB9OwogCiAgICAgaWYgKGVkaXRpbmdEZWxl
Z2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8Q2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVlPENsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAg
ICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG51bGxwdHIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMjBjZTU1OTExZDcwNjUxYzMzNWE3MGFjZjI0ZTViZGZj
MjFiZDYzMS4uOTk3OWQ2Mzg0ZGZmNWM5ODA1OTFmMjkwODNjOTM3Mjk2MzQ0YTkwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgUmVmUHRyPEluamVjdGVkQnVuZGxl
PiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmEKIEluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYXRoKHBhcmFtZXRlcnMuaW5qZWN0
ZWRCdW5kbGVQYXRoKQogICAgICwgbV9wbGF0Zm9ybUJ1bmRsZSgwKQotICAgICwgbV9jbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCisgICAgLCBt
X2NsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKSkKIHsKIH0K
IApAQCAtMTE0LDcgKzExNCw3IEBAIEluamVjdGVkQnVuZGxlOjp+SW5qZWN0ZWRCdW5kbGUoKQog
dm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVj
dGVkQnVuZGxlOjpDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAg
ICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50
PigpOworICAgICAgICBtX2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFD
YWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMGNhNWVhNmQyYWJlNTcyMTU0
ZDIxYmVkMGNjOWEwNTNlN2Q2NmMxOC4uYmZiM2QwNDUxNDM3MzZjMzFkZjk4OGFiMWIwMGRlNDJi
ODUzMDg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUv
V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaApAQCAtMzksNiArMzksNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIoV2ViUHJvY2VzcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oCmluZGV4IGQ3YzVjNjgzNDRiNzI3MzhkOTQ5N2RmMDEyY2EzNzZi
Yjg0MTg4ZGEuLmIwYmQ1MzRjZTE5ZDczODYxZDgxNzZhODIwNWNkY2U2MTk1ZmQwNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM2LDYgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiwgcHJpdmF0ZSBXZWJDb3JlOjpNZWRpYUNhblN0
YXJ0TGlzdGVuZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAg
ICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggNzMzNTI3NjU4NzFkODI1NWEyM2RiN2I1NWU2ZDQ0ZWU3MzM5MjJkNy4uMmU1N2Fm
MjQ4M2JkMzZiM2RkODVlNGVjMThkZGUxMGY0NDM2ZTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMiwz
OCArMTMyLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
c2VuZE1lc3NhZ2UoVCYmIG1lc3NhZ2UsIHNpemVfdCBieXRlCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJ
bkJ5dGVzKCk7Ci0gICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQot
ICAgICAgICByZXR1cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNF
bXB0eSgpKQotICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5u
ZWw6OlNlbmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3Nh
Z2U+KG1lc3NhZ2UpKTsKLQotICAgIHJldHVybiBTZW5kU3VjY2VzczsKLX0KLQotV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJy
YXlCdWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgpCi17Ci0gICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQot
ICAgICAgICByZXR1cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNF
bXB0eSgpKQotICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5u
ZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBi
eXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBi
eXRlTGVuZ3RoKSk7Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KIGNsYXNzIEJsb2JM
b2FkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmxvYkxvYWRlcihXZWJD
b3JlOjpEb2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgOiBtX2xvYWRlcihz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKKyAgICAgICAgOiBtX2xvYWRl
cihtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFk
ZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKICAgICAgICAgLCBtX2NvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsKICAgICAgICAgbV9s
b2FkZXItPnN0YXJ0KGRvY3VtZW50LCBibG9iKTsKQEAgLTIyNiw3ICsxOTksNyBAQCBjbGFzcyBQ
ZW5kaW5nTWVzc2FnZSB7CiAKICAgICBQZW5kaW5nTWVzc2FnZShXZWJDb3JlOjpEb2N1bWVudCog
ZG9jdW1lbnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6QmxvYikKLSAgICAg
ICAgLCBtX2Jsb2JMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwg
YmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKQorICAgICAgICAsIG1fYmxvYkxvYWRl
cihtYWtlVW5pcXVlPEJsb2JMb2FkZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkpCiAgICAgewogICAgIH0KIApAQCAtMjQ0LDEzICsyMTcsNDAgQEAgY2xhc3Mg
UGVuZGluZ01lc3NhZ2UgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPiBtX2Jsb2JM
b2FkZXI7CiB9OwogCitXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5u
ZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGF1dG8gYnl0ZUxlbmd0aCA9
IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMoKTsKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQo
Ynl0ZUxlbmd0aCkpCisgICAgICAgIHJldHVybiBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRp
bmdNZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3
b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0aCk7Cisg
ICAgZWxzZQorICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5k
aW5nTWVzc2FnZT4obWVzc2FnZSkpOworCisgICAgcmV0dXJuIFNlbmRTdWNjZXNzOworfQorCitX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3Qg
SlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCkKK3sKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxl
bmd0aCkpCisgICAgICAgIHJldHVybiBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNz
YWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29j
a2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCB9IH0sIGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMu
YXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KGJpbmFyeURhdGEsIGJ5dGVPZmZzZXQs
IGJ5dGVMZW5ndGgpKTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKwogV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKFdlYkNvcmU6OkJsb2Im
IGJsb2IpCiB7CiAgICAgLy8gQXZvaWQgdGhlIEJsb2IgcXVldWUgYW5kIGxvYWRpbmcgZm9yIGVt
cHR5IGJsb2JzLgogICAgIGlmICghYmxvYi5zaXplKCkpCiAgICAgICAgIHJldHVybiBzZW5kKEpT
Qzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShibG9iLnNpemUoKSwgMSksIDAsIDApOwogCi0gICAgbV9w
ZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1f
ZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0aGlzXSB7CisgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBw
ZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0
aGlzXSB7CiAgICAgICAgIHdoaWxlICghbV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICBhdXRvJiBtZXNzYWdlID0gbV9wZW5kaW5nTWVzc2FnZXMuZmlyc3QoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggYWZlMjQwODg0YzNjYmFhYTZhZDIzOGJiZTIz
Zjk1OTMxNTkxOTIxZC4uZTRlN2UzZjdjMDQ0MzdmNmQwYzc4NTRhYjg5ZDkxZWY1M2Y2NmQ1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIEFzeW5jUmVzb2x2ZXJG
YWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6QXN5bmNSZXNvbHZlckZhY3RvcnkgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKICAgICBydGM6OkFzeW5jUmVzb2x2ZXJJbnRl
cmZhY2UqIENyZWF0ZSgpIGZpbmFsCiAgICAgewpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBBc3lu
Y1Jlc29sdmVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsK
IAogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExp
YldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0
aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpS
VENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkuc29ja2V0RmFjdG9yeSgpLCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5Pigp
KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25u
ZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3Jr
KCkubW9uaXRvcigpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCku
c29ja2V0RmFjdG9yeSgpLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5j
UmVzb2x2ZXJGYWN0b3J5PigpKTsKIH0KIAogdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJs
ZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKaW5kZXggNWQ2
MzgzZjZiNTA2NTNiNWM2NzA3MDcwNWM2YzEwMjg3MGZhMDIzMS4uMzk5MDY5OWQwNzc4ZmViMTdi
MGNhOGU2MDc4MTQxMDhhNWMwMGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKQEAgLTQwLDYg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBMaWJXZWJSVENTb2NrZXRGYWN0b3J5
OwogCiBjbGFzcyBMaWJXZWJSVENSZXNvbHZlciBmaW5hbCA6IHB1YmxpYyBydGM6OkFzeW5jUmVz
b2x2ZXJJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIExpYldlYlJUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpIDogbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKaW5k
ZXggZDc3OGQ1NzdlYThlZmMxYjM1NmRmMWQ3YzAxN2VjZGYzMTg4MTA2YS4uN2ZlZjNiNmI4ZWM3
YmU0NjY2MzI4MGNhOTczOGI5OTEzY2U4MTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRG
YWN0b3J5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29ja2V0QWRk
cmVzcyBwcmVwYXJlU29ja2V0QWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmCiAKIHJ0
Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZl
clRjcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1p
blBvcnQsIHVpbnQxNl90IG1heFBvcnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29j
a2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3Ms
IHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGli
V2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJU
Q1NvY2tldDo6VHlwZTo6U2VydmVyVENQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7
CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsK
IAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIo
KSwgYWRkcmVzcyA9IHByZXBhcmVTb2NrZXRBZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxv
Y2FsaG9zdENvbm5lY3Rpb25zKSwgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7CkBAIC02
Niw3ICs2Niw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rv
cnk6OkNyZWF0ZVNlcnZlclRjcFNvY2tldChjb25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6
OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBv
cnQpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tl
dD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5
cGU6OlVEUCwgYWRkcmVzcywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0
ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRl
bnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0
QWRkcmVzcygpKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2Nr
ZXQuZ2V0KCkpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+
aWRlbnRpZmllcigpLCBhZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9k
aXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0XSgpIHsKQEAg
LTgwLDcgKzgwLDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFj
dG9yeTo6Q3JlYXRlVWRwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2UKIAogcnRjOjpBc3luY1BhY2tl
dFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlQ2xpZW50VGNwU29ja2V0KGNv
bnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgbG9jYWxBZGRyZXNzLCBjb25zdCBydGM6OlNvY2tldEFk
ZHJlc3MmIHJlbW90ZUFkZHJlc3MsIGNvbnN0IHJ0Yzo6UHJveHlJbmZvJiwgY29uc3Qgc3RkOjpz
dHJpbmcmLCBpbnQgb3B0aW9ucykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExp
YldlYlJUQ1NvY2tldDo6VHlwZTo6Q2xpZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJl
c3MpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlz
LCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGll
bnRUQ1AsIGxvY2FsQWRkcmVzcywgcmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0
ZShMaWJXZWJSVENTb2NrZXQ6OlNUQVRFX0NPTk5FQ1RJTkcpOwogICAgIG1fc29ja2V0cy5zZXQo
c29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAg
cnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlQ2xp
ZW50VGNwU29ja2V0KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2Vi
UlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlTmV3Q29ubmVjdGlvblNvY2tldChMaWJXZWJSVENTb2Nr
ZXQmIHNlcnZlclNvY2tldCwgdWludDY0X3QgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXIs
IGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlQWRkcmVzcykKIHsKLSAgICBhdXRvIHNv
Y2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1
ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlv
blRDUCwgc2VydmVyU29ja2V0LmxvY2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKKyAgICBh
dXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1
ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlv
blRDUCwgc2VydmVyU29ja2V0LmxvY2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKICAgICBz
b2NrZXQtPnNldFN0YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVEVEKTsKICAgICBt
X3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCkBAIC0x
MTcsNyArMTE3LDcgQEAgdm9pZCBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpkZXRhY2goTGliV2Vi
UlRDU29ja2V0JiBzb2NrZXQpCiAKIHJ0Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogTGliV2Vi
UlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlQXN5bmNSZXNvbHZlcigpCiB7Ci0gICAgYXV0byByZXNv
bHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNv
bHZlcklkZW50aWZpZXIpOworICAgIGF1dG8gcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPExpYldlYlJU
Q1Jlc29sdmVyPigrK3NfdW5pcXVlUmVzb2x2ZXJJZGVudGlmaWVyKTsKICAgICBhdXRvKiByZXNv
bHZlclBvaW50ZXIgPSByZXNvbHZlci5nZXQoKTsKICAgICBtX3Jlc29sdmVycy5zZXQocmVzb2x2
ZXJQb2ludGVyLT5pZGVudGlmaWVyKCksIFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4g
cmVzb2x2ZXJQb2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDJkMWU4
NDI0N2JkMGEzMGM5NGQxZjJlYTMwMWRkNTVkMDJhNmUwNzYuLmIyNzEzZjQ2YzFmYzEzYzlmMjdi
YmUzOWNhNWRjNTE4NTBiMTgzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAg
LTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViTm90aWZpY2F0aW9uTWFuYWdlcik7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZUJyb3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggMTZhMWE3ZjgzNDQ2MDUzZjMz
ZDY1NGU4MzMzMjI5NTBlZTk5NGQ3Mi4uZDczZjFmMTZmODkwNzY5YzcyY2M5ZGQ0NDBkMjI5MjFm
ZjVmZmE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTgsNyAr
NTgsNyBAQCBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7CiAgICAgZXhwbGljaXQg
UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoTmV0c2NhcGVQbHVnaW4qIHBsdWdpbikKICAgICB7
CiAgICAgICAgIGlmIChwbHVnaW4pCi0gICAgICAgICAgICBtX3Byb3RlY3RvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0
YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CisgICAgICAgICAgICBt
X3Byb3RlY3RvciA9IG1ha2VVbmlxdWU8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rp
b25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7
CiAgICAgfQogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA2OWEz
YzkzZjEzMjZmYTRjNmY3ZmViZjhhYjFiMmNhNGM3NzZiYzBlLi41OWY0ODI1MWYyODg1NGM2ZDE2
ODBiMWQ2NGRmYWE1YTQ3YzY4MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0zNTAs
NyArMzUwLDcgQEAgdWludDMyX3QgTmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIodW5zaWdu
ZWQgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCB2b2lkICgqdGkKICAgICAvLyBGSVhNRTogSGFuZGxl
IHdyYXBwaW5nIGFyb3VuZC4KICAgICB1bnNpZ25lZCB0aW1lcklEID0gKyttX25leHRUaW1lcklE
OwogCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KHRoaXMsIHRpbWVy
SUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VV
bmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7
CiAgICAgCiAgICAgLy8gRklYTUU6IEJhc2VkIG9uIHRoZSBwbHVnLWluIHZpc2liaWxpdHksIGZp
Z3VyZSBvdXQgaWYgd2Ugc2hvdWxkIHRocm90dGxlIHRoZSB0aW1lciwgb3IgaWYgd2Ugc2hvdWxk
IHN0YXJ0IGl0IGF0IGFsbC4KICAgICB0aW1lci0+c3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CmluZGV4IGUwYWJjMmM3YjQxMjk5MzAwMmJiYWI4YmRmYWI3ZjI2NTFhZGM1N2YuLmI2Yzc2YjZl
ZDcxNGNhYWEzYTQxZGRlNDFjMWQ2YTEwNGZiN2FlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApA
QCAtMzA4LDYgKzMwOCw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7
CiAgICAgVmVjdG9yPGJvb2wsIDg+IG1fcG9wdXBFbmFibGVkU3RhdGVzOwogCiAgICAgY2xhc3Mg
VGltZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVGltZXIpOwogCiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uY3BwCmluZGV4IDA0OTYyOGY1YzYyNzAyZTRkNWQ0MTExODIwMTIzYmE1ZjRi
OTY1MjQuLmJkYWExNDQ3ODQyMjY5NWQ1MGVhODQ4YWFmY2NiY2UxMmQyYWQ5MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCkKIAogICAgIGlmIChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAg
ICAgIGlmICghbV9kZWxpdmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHVpbnQ4X3Q+PigpOworICAgICAgICAgICAgbV9kZWxpdmVy
eURhdGEgPSBtYWtlVW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4oKTsKIAogICAgICAgICBtX2RlbGl2
ZXJ5RGF0YS0+cmVzZXJ2ZUNhcGFjaXR5KG1fZGVsaXZlcnlEYXRhLT5zaXplKCkgKyBsZW5ndGgp
OwogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggNDRkMTFiNTdjM2VhNmQ1MThjMThk
MDRiODIyZDI4NmQ1M2U5NjhjZi4uMDdkNTU2YzNiN2ZjNjM3MTljMmEyNTU5ZTBhYWQ2YzIyNmMw
N2NhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0xMzYsMTAg
KzEzNiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQbHVnaW5YMTE+IE5ldHNjYXBlUGx1
Z2luWDExOjpjcmVhdGUoTmV0c2NhcGVQbHVnaW4mIHBsdQogCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIGlmIChwbHVnaW4uaXNXaW5kb3dlZCgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXks
IHdpbmRvd0lEKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2Nh
cGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxheSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0
c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxheSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luWDEx
OjpOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYgcGx1Z2luLCBEaXNwbGF5KiBkaXNw
bGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29u
dHJvbGxlci5oCmluZGV4IGExZjgwN2UxZTU1MDcyM2VmZWVhMTc3MTMzYjgxZGZmNGQxNzZiMzUu
LmI1NzJhYTNhNTM2ZDQ4NWNiOWI4MTdhMTZlMDJjMzMyYzRiYzIxMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE1
OSw2ICsxNTksNyBAQCBjbGFzcyBQbHVnaW5Db250cm9sbGVyIHsKIAogICAgIC8vIEhlbHBlciBj
bGFzcyBmb3IgZGVsYXlpbmcgZGVzdHJ1Y3Rpb24gb2YgYSBwbHVnLWluLgogICAgIGNsYXNzIFBs
dWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3Rl
Y3RvcihQbHVnaW5Db250cm9sbGVyKiBwbHVnaW5Db250cm9sbGVyKQogICAgICAgICAgICAgOiBt
X3BsdWdpbkNvbnRyb2xsZXIocGx1Z2luQ29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBmMzdjMmNjMjRlM2RkOTc2
M2YzZWJkZDYzMmQ4YmZkYjc3MTQ0MzQ3Li45YWI1ODM3MzBiODlkYmQ5NjAxZDY1MjBlZjhmOWIw
YmUwMDZkYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxp
emUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFBs
dWdpblByb3h5KHRoaXMpOwogCiAgICAgLy8gQXNrIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3Jl
YXRlIGEgcGx1Zy1pbi4KLSAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKKyAgICBtX3BlbmRp
bmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBtYWtlVW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycz4oKTsKIAogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGx1
Z2luSW5zdGFuY2VJRCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsKICAgICBtX3BlbmRpbmdQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMtPndpbmRvd05QT2JqZWN0SUQgPSB3aW5kb3dOUE9iamVjdElEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IDdhYjg5NjZkYjkwNWFkZDEyMzk0ODE2NTBiMTlkZTRhN2U3ZDIyM2YuLjExOWQyYjkwYzJi
NDQyMzFmMjU2OTU3ZTYyZGRjYThmMTMwZmM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC04OTgsNyArODk4LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFdlYkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50
JiBldmVudCkgY29uc3QKICAgICBpZiAoZXZlbnQubWV0YUtleSgpKQogICAgICAgICBtb2RpZmll
cnMuYWRkKFdlYkV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwg
bV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZl
bnQub2Zmc2V0WSgpKSksIGV2ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291
bnQsIG1vZGlmaWVycywgV2FsbFRpbWUgeyB9LCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxX
ZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNv
bnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgp
KSksIGV2ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVy
cywgV2FsbFRpbWUgeyB9LCAwKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChF
dmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmZj
MDljNGY2NWIyNDViNjBiZjRkNGY1OTdhOWY5MGFkNGQwYWFmOS4uYTFmZjAzM2IyMDRlYWZhZGM4
ODhhODIwOGE4OWY3OWRhMDBiY2Y5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246Omluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250CiAKICAgICAv
LyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIG1vdmVkIGRpcmVjdGx5IHRvIFdlYkNvcmU6
OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24KICAgICAvLyBJZiBpdCB3ZXJlbid0IGZvciBT
ZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQncyBkZXBlbmRlbmNlIG9uIFdlYkRvY3VtZW50
TG9hZGVyLCB0aGlzIGNvdWxkIGFscmVhZHkgaGFwcGVuLgotICAgIGF1dG8gZnJhbWVMb2FkZXJD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4o
KnRoaXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCwg
ZWZmZWN0aXZlVXNlckFnZW50KTsKKyAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gbWFrZVVu
aXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQsIG1f
cGFnZUlELCArK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQsIGVmZmVjdGl2ZVVzZXJBZ2VudCk7
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gZnJhbWVM
b2FkZXJDbGllbnQuZ2V0KCk7CiAgICAgbV9sb2FkZXJzLmFkZChXVEZNb3ZlKGZyYW1lTG9hZGVy
Q2xpZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXT3JpZ2luVGFibGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXT3JpZ2luVGFibGUuaAppbmRleCA5MjBkZWQwNDBjZTU2MTgzMzk5ZjZjOTNiODJlYjM2ZGY3
MzA0OTZhLi45MzBlNDYxODE5ZTE4NmY1YTgwZDhmNjcxNmZiMTE4YzRkYzBlYTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5o
CkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViU1dPcmlnaW5UYWJsZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU1dPcmlnaW5UYWJsZSgpID0gZGVmYXVsdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IDRkZjZmMDE5ZTU1ODU3NTUy
Yzg0ZGZhYjkyNTBjNDAxYTg0Y2I4MzUuLmY0Y2YyOTFhNDAxMGIxZTdjMjQxNjdkNDU0YjU0ZWM0
Yjg2NGM0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMyLDYg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfldlYkFs
dGVybmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAzYzg3MmY1
YWRmMzliZWFjZDNhNzA2NjdiMjY4OWQzOGM5YjExMTJlLi40ZDI3NDc2ODYyMGU1YTQ2ZWI5NTA4
ZmRlNDdiNTcxZTc5NmYxNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzkzLDcgKzc5
Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNo
b29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNs
aWVudCYgY2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwgaW5pdGlh
bENvbG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2Us
ICZjbGllbnQsIGluaXRpYWxDb2xvcik7CiB9CiAKICNlbmRpZgpAQCAtODAyLDcgKzgwMiw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29s
b3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsCiAKIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGll
bnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4o
Jm1fcGFnZSwgJmNsaWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGNl
ZDM2YTZjMjViN2U0ZjgzNDRhNTg5OTQwMDY3OTFmN2NjOTI3NmYuLmQ0NTU2ZDk4N2EzNjZkMTgx
MTQwOGFkOTBiZjdhMzQ3ZGQ1OThkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQxLDYgKzQx
LDcgQEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJDaHJvbWVD
bGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViUGFnZSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDZjMjliNGUwODEyNmU3Y2Q2Njc5
Y2M0NzAyMzVjNTU3NGRlNTBkMmUuLmMxYzg5Y2Q5OWU4N2FlZTg0ZWQ1NzQ2YzJlODFmNjQ3ZTgy
ZjFmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlBh
Z2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCAxYWQ0
YzNkZTJjYjdkMzhlNjI2MmMxOTdhYWIyNGNjYTZmZWRhODIxLi5iMjRlY2Y3NmM0NTUyNGY2MGQ4
NmFlZDZmYjFlY2Y2ZjBmMzk0MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJEcmFnQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAg
OiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAyNjgxMDJmZWExYTc3NTdlZDdl
MTZkZGVjY2UzY2FkOGVlNmJkNDM1Li5kMjJkNGNiNzNmMjk3M2Y1NjU1YTg3M2ViZDIyZDZiMDA2
YWUwZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2Vy
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJF
ZGl0b3JDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMzBmNWFkNmI0YmMyYTYzOGQ2MDM3ZjhlYzk3Mzgw
OWRmNmU1NmIxOC4uMzVhMzFmYzJhMzQ0YjMxMjg3MzA1MDRiN2ZlN2ExMTVmMDExYjg4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkK
ICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXgg
N2NkYWFjZDFmYzFkNDZkNjVlYWRjM2YzYTYxMzRhYTM1NThhMmQxMS4uZDY3YjYyYzAyZTY4ODNi
NDQ4NjVmYmExNTg1MTZlYTBjYmNiNWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
QEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfQogCiAgICAgaWYgKCFtX3BhaW50SW5kaWNh
dG9yTGF5ZXJDbGllbnQpCi0gICAgICAgIG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7CisgICAg
ICAgIG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IG1ha2VVbmlxdWU8UmVwYWludEluZGlj
YXRvckxheWVyQ2xpZW50PigqdGhpcyk7CiAKICAgICBhdXRvIHBhaW50TGF5ZXIgPSBHcmFwaGlj
c0xheWVyOjpjcmVhdGUobV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5ncmFwaGljc0xheWVyRmFjdG9y
eSgpLCAqbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50KTsKICAgICAKQEAgLTE2Miw5ICsxNjIs
OSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgcGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKDEuMGYs
IDAuMGYsIDAuMGYsIDAuMmYpKTsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZhZGVLZXlmcmFt
ZXMoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KHN0
ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOworICAgIGZhZGVLZXlm
cmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOwogCi0g
ICAgZmFkZUtleWZyYW1lcy5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZh
bHVlPigwLjI1LCAwKSk7CisgICAgZmFkZUtleWZyYW1lcy5pbnNlcnQobWFrZVVuaXF1ZTxGbG9h
dEFuaW1hdGlvblZhbHVlPigwLjI1LCAwKSk7CiAgICAgCiAgICAgYXV0byBvcGFjaXR5QW5pbWF0
aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKICAgICBvcGFjaXR5QW5pbWF0aW9uLT5zZXREdXJh
dGlvbigwLjI1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBmNWVjYzY0YzkyM2YzODZj
NTBlN2I1Mjk3N2VmYzA5OWUwYmNmYWQ2Li4yN2MzZWUxNDJlMTYxNmU0MzVmNDhkNDFmMjcyNzE1
ZmU4ZTAzODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIFdlYlBhZ2U7CiBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiAKIGNsYXNz
IFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHBy
aXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBmcmllbmQgY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogcHVi
bGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IDUzM2JlODQwY2FkNzE0NTU1ZGFmMGFh
MjA3MjhhM2M5MzM1NWM5YmUuLjRiYjM3ZmRkNjA3Nzc0ZWQ4MDlhOTY3YTc3NTE1ZmJhZmI2ZWY2
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0z
Miw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBX
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQuaAppbmRleCAxNjM3YWQxMDk3ZDc2NDllNTBkZjc0ZjVlMDYyMjcyNzFm
YWI4NDVhLi4wMGNjMGEwOGQ5MjYwNGZkZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVi
bGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlBhZ2UqKTsKICAg
ICB2aXJ0dWFsIH5XZWJOb3RpZmljYXRpb25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJk
T3ZlcnJpZGVzLmNwcAppbmRleCA3OTAwODRjZTQ4ZDIyNmIxMGU2NjViODI4NDQzNDlmZGFhZmZl
ZTQ2Li42OWYwYWU4Mjc5NTA3YjcyOTY1ZjY1YzIxNjg3M2M0ODFhZGY0ZDYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92
ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgV2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX292ZXJyaWRlc01hcC5hZGQocGFz
dGVib2FyZE5hbWUsIG51bGxwdHIpOwogCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+
Pj4gdHlwZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50
OF90Pj4+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9y
PHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1
aW50OF90Pj4+KCk7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3Zl
KHR5cGVNYXApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCmluZGV4IGY2ZTAxNDk1N2VkYzI3
N2RiOTgzNzMxMjdlYzEwNjNlOTM1NThjYjguLmNmOTBhNWRmY2ZkYTYzZWNiOTg5N2NjNjZkMGQ0
ODEyOTQ0ODEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQbHVnSW5DbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6UGx1Z0luQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQbHVnSW5DbGllbnQoV2ViUGFnZSYpOwogICAg
IHZpcnR1YWwgfldlYlBsdWdJbkNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNs
aWVudC5oCmluZGV4IDVkZDY1YmZhMGQ1MGNjZmRiMTQ2MWZlYjNmZTUyNDFmY2FhMGZiYTYuLjYz
ZDc3NGU1YTk0MjdjNzM1YjUyNDkwYmQwMWNkNzlhYjc0YTEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQo
V2ViUGFnZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCmluZGV4
IGVhZDE3ZDMwZjA1OTBkNzQ0NjcyMDU1Y2FkNzdkOTVjNmQwYTQ3NzAuLjdiZDg3NTkwNWE2NWM3
N2Q5NmMzZjc4ODQwMDE4NTgyY2ZhZjc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQ
YWdlOwogICAgIAogY2xhc3MgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6OlNwZWVjaFN5bnRoZXNpc0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCiAg
ICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggMTA5MzA0
NTNjZTc5N2VkZDkwZGU3NmYwMzU0YjlhMWQ0MDZmMmU2ZS4uNjk1MjE3NGI5MTJjOTcxZTM1Nzg2
ZTI3YzQ4MjI1ZDJmY2ExNDAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMjksNiAr
MjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlVz
ZXJNZWRpYUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlVzZXJNZWRpYUNsaWVudChX
ZWJQYWdlJik7CiAgICAgfldlYlVzZXJNZWRpYUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3Mu
Y3BwCmluZGV4IDljZmZjYzlhOWZkMmI2NDQ0OTIyZjg1NGFkOTdkMWQzMzFlNzBiMGUuLmIyNDU4
MWM5N2U3YTg4MTZmNDZhZjkzMTlhOTFlYTIxYjcyYmQ2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFD
b29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5j
cHAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGlj
czo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShHcmFwaGljc0xheQogICAgICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRMYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQodHJ1ZSk7
CiAgICAgfSBlbHNlIHsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIG1f
bGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQYWdl
KTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gbWFrZVVuaXF1ZTxMYXllclRyZWVIb3N0Piht
X3dlYlBhZ2UpOwogI2Vsc2UKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gbnVsbHB0cjsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuY3BwCmluZGV4IGMwNzM5NmYwMmYxZmE2NWY0NWFjZWU3MmYxMzRmNGZiMmQ5ZTg5
MDkuLjUzNThjZDY4NjNiMzIyNjk1OGVlMjc0ZWZkMDMyYWQyMDA2NGRkNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTUwLDEz
ICs1MCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmVh
dGUoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZQogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlVGlsZWRD
b3JlQW5pbWF0aW9uOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJh
bWV0ZXJzKTsKICNlbmRpZgogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVl
OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbGlmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykgfHwgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIGNhc2Ug
RHJhd2luZ0FyZWFUeXBlQ29vcmRpbmF0ZWRHcmFwaGljczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJh
bWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKaW5kZXgg
MGYyNjQwM2ViYjcwYTgxMWIxOGU5ODc5NWUxOWRlNzc0MGJlODM2MC4uMWE1MzVmMTdkOTdmNjY2
ODM5NzI2OWE4NmUyODU3YjI5Yjk3MmEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgRmluZENvbnRyb2xsZXIgOiBwcml2
YXRlIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZpbmRDb250cm9sbGVyKTsKIAogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApp
bmRleCA0NTJmNTNiY2VkYzAwNDdmNzMzZDFjMzRiY2Q3NjUxMTkyY2I4YmU2Li40NmU4YWEwOTk4
NjQ1YThjZTVkMmQ3Yjk1N2Y5OWFmZGMzOGY0NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjplbnN1cmVCYWNraW5nU3RvcmUoKQogICAgIEFTU0VSVChtX3By
b3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNoZWQpOwogCiAgICAgaWYgKCFtX3Byb3BlcnRpZXMu
YmFja2luZ1N0b3JlKQotICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4odGhpcyk7CisgICAgICAgIG1fcHJv
cGVydGllcy5iYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Pih0aGlzKTsKIAogICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogfQpAQCAtNTIxLDcgKzUyMSw3
IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dHJhbnNmb3Jt
KCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnRyYW5z
Zm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAg
ICBtX3Byb3BlcnRpZXMudHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odmFsdWUpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OlRyYW5zZm9ybUNoYW5nZWQpOwogfQogCkBAIC01MzIsNyAr
NTMyLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzdWJs
YXllclRyYW5zZm9ybSgpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRT
dWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7Ci0g
ICAgbV9wcm9wZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOworICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5z
Zm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3By
b3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpOwogfQogCkBAIC03MzgsNyArNzM4LDcgQEAgdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAKIHZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLmZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbHRlck9wZXJhdGlvbnM+KGZpbHRlcnMpOworICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0g
bWFrZVVuaXF1ZTxGaWx0ZXJPcGVyYXRpb25zPihmaWx0ZXJzKTsKICAgICBtX3Byb3BlcnRpZXMu
bm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpGaWx0ZXJz
Q2hhbmdlZCk7CiB9CiAKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVk
UgogICAgIGlmIChtX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCAmJiAqbV9wcm9wZXJ0aWVz
LnNoYXBlUm91bmRlZFJlY3QgPT0gcm91bmRlZFJlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJv
dW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CisgICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJl
Y3QgPSBtYWtlVW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKICAgICBtX3By
b3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpTaGFwZVJvdW5kZWRSZWN0Q2hhbmdlZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVUaWxlZEJhY2tpbmcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKaW5kZXgg
MWNiZDFiNGJhNzlhN2RmOWNlNTVlMDQyMWQ0NGU2NWI0MDg4MjFjMi4uMDk5NTM2YjkzYzAxMWFj
M2YyYTA3M2MzY2E0NjRmMDcyNjQ2OWNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFBsYXRmb3JtQ0FMYXllclJlbW90
ZVRpbGVkQmFja2luZzo6UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nKExheWVyVHlw
ZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJl
ZUNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBl
LCBvd25lciwgY29udGV4dCkKLSAgICAsIG1fdGlsZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxUaWxlQ29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX3RpbGVDb250cm9sbGVyKG1ha2VVbmlx
dWU8VGlsZUNvbnRyb2xsZXI+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggNWU1MGUwYmExZWYxMjQ2
YzZhZTA4ZjI5ZDkyYTgzMGUwZGI0ZjIzNy4uNDQ0NmYzNGQwNGNjZmJmYmViMzY5YmE0NGMzMjA2
YmYwZGQyM2VjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbQpAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiAgICAgOiBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRy
ZWUsIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFJZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9y
ZW1vdGVMYXllclRyZWVDb250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dD4od2ViUGFnZSkpCisgICAgLCBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQobWFrZVVuaXF1
ZTxSZW1vdGVMYXllclRyZWVDb250ZXh0Pih3ZWJQYWdlKSkKICAgICAsIG1fcm9vdExheWVyKEdy
YXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcykpCiAgICAg
LCBtX2xheWVyRmx1c2hUaW1lcigqdGhpcywgJlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpm
bHVzaExheWVycykKIHsKQEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6V2lsbENvbW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9u
LnRyYW5zYWN0aW9uSUQoKSkpOwogCiAgICAgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNj
cm9sbGluZ1RyYW5zYWN0aW9uKTsKLSAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OkNvbW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8
SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiAgICAgY29tbWl0RW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRz
KCkpOwogCiAgICAgLy8gRklYTUU6IE1vdmUgYWxsIGJhY2tpbmcgc3RvcmUgZmx1c2hpbmcgbWFu
YWdlbWVudCB0byBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggYWFkZTNkOWYxODQ0ZDdmMDVjMDkyMThkOGUyMDQ0ZDU4
YTJmMDVmOC4uYjJiZGM0MWI3MjMzNmJiNmU0ODQ5MGY3MzFiMjQ4NWQyNzA3ODJkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKFdlYlBh
Z2UmKTsKICAgICB+Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDYwY2ZkOGQyYTE3NTRh
N2FjZWQ1OGQ2MWRmMTdiZTRjMTQzMTM2OTQuLmJkZDRiMzk1MjU0YTcxNjc2MzlhZWNkNzM4NjBl
MDcyZDY5YzQyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVh
dGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogCiBS
ZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQp
CiB7Ci0gICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9h
ZGVyQ2xpZW50PigpKTsKKyAgICBhdXRvIGZyYW1lID0gY3JlYXRlKG1ha2VVbmlxdWU8V2ViRnJh
bWVMb2FkZXJDbGllbnQ+KCkpOwogICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3Jl
RnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJh
bWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxMzM2NTcwZDkzYWE1MTEwNjk3ODU2MTE3MDI2
MDg5M2I4YTNjZGI0Li5kYjMyZGE0ODEzOWUxOWY3MTQyMTI1NjU0MGEyMTYzMjM0Y2M5MTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzgz
LDIxICszODMsMjEgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV90ZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHkobWFrZVVuaXF1ZVJlZjxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJv
eHk+KCp0aGlzKSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEsp
Ci0gICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCisgICAgLCBtX3ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IobWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
PigqdGhpcykpCiAjZWxpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQog
ICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1fc2V0
Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENh
blN0YXJ0TWVkaWFUaW1lckZpcmVkKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwg
bV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCiAj
ZW5kaWYKLSAgICAsIG1fZWRpdG9yQ2xpZW50IHsgc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkgfQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fbG9h
ZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRl
ckNsaWVudD4oKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpKQotICAgICwgbV91aUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4o
KSkKKyAgICAsIG1fZWRpdG9yQ2xpZW50IHsgbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpFZGl0b3JDbGllbnQ+KCkgfQorICAgICwgbV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fbG9hZGVyQ2xpZW50KG1ha2VV
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKKyAgICAsIG1f
cmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3Vy
Y2VMb2FkQ2xpZW50PigpKQorICAgICwgbV91aUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkKICAgICAsIG1fZmluZENvbnRyb2xsZXIobWFrZVVu
aXF1ZVJlZjxGaW5kQ29udHJvbGxlcj4odGhpcykpCi0gICAgLCBtX2luc3BlY3RvclRhcmdldENv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxl
cj4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8
V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFy
YW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCkpCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihtYWtlVW5pcXVl
UmVmPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPigqdGhpcykpCkBAIC00NjQs
MjEgKzQ2NCwyMSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24ucGx1Z0luQ2xpZW50ID0gbmV3IFdlYlBsdWdJbkNsaWVudCgqdGhpcyk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5l
dyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQoKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9u
LmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudD4oKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNl
TG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xp
ZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQgPSBtYWtlVW5pcXVlPFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxX
ZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKIAogI2lmIEVOQUJMRShXRUJHTCkK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VX
ZWJHTCkgeworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkdMU3RhdGVUcmFja2VyID0gbWFrZVVu
aXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4oW3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5j
ZVdlYkdMKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SXNVc2lu
Z0hpZ2hQZXJmb3JtYW5jZVdlYkdMKGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkpOwogICAg
IH0pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi5zcGVlY2hTeW50aGVzaXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVj
aFN5bnRoZXNpc0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Pigq
dGhpcyk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHBhZ2VDb25maWd1cmF0
aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0
aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRp
b25NZXNzYWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4o
KnRoaXMpOwogI2VuZGlmCiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSA9ICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZSgpOwpAQCAtNDkzLDE0ICs0OTMsMTQgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yPigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uTWFuaWZlc3QgPSBwYXJhbWV0ZXJzLmFw
cGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKIAotICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIG1fcGFnZSA9IG1ha2VV
bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgLy8gU2V0IHRo
ZSBzZXNzaW9uSUQgKmJlZm9yZSogdXBkYXRpbmcgdGhlIHByZWZlcmVuY2VzIGFzIHRoZSBwcml2
YXRlQnJvd3NpbmdFbmFibGVkIHByZWZlcmVuY2VzIG1heSBuZWVkIHRvIG92ZXJyaWRlIGl0Lgog
ICAgIGlmIChwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc1ZhbGlkKCkpCkBAIC04NTMsNyArODUzLDcg
QEAgdWludDY0X3QgV2ViUGFnZTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAog
dm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+JiYgY29u
dGV4dE1lbnVDbGllbnQpCiB7CiAgICAgaWYgKCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAg
ICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVu
dD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQg
V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpJbmplY3RlZEJ1CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+
JiYgZWRpdG9yQ2xpZW50KQogewogICAgIGlmICghZWRpdG9yQ2xpZW50KSB7Ci0gICAgICAgIG1f
ZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ+KCk7CisgICAgICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOgogdm9pZCBXZWJQYWdl
OjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGll
bnQpIHsKLSAgICAgICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVu
ZGxlRm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rgogdm9p
ZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50
KQogewogICAgIGlmICghbG9hZGVyQ2xpZW50KSB7Ci0gICAgICAgIG1fbG9hZGVyQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50Pigp
OworICAgICAgICBtX2xvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTA1
LDcgKzkwNSw3IEBAIHZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5
Q2xpZW50KFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJhc2UqCiB2b2lkIFdlYlBhZ2U6OnNldElu
amVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVj
dGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghbV9y
ZXNvdXJjZUxvYWRDbGllbnQpCi0gICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7Cisg
ICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNl
TG9hZENsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkluamVjdGVkQgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVVJQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+JiYg
dWlDbGllbnQpCiB7CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7Cisg
ICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VV
SUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQxMCwxNCArMTQxMCwx
NCBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1l
bnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVu
dUNsaWVudD4oKTsKICNlbmRpZgotICAgIG1fZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwot
ICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOworICAgIG1fbG9h
ZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xp
ZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50LmluaXRpYWxpemUoMCk7Ci0gICAgbV9yZXNvdXJj
ZUxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291
cmNlTG9hZENsaWVudD4oKTsKLSAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgbV9yZXNvdXJjZUxvYWRDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4o
KTsKKyAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
VUlDbGllbnQ+KCk7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVl
bkNsaWVudC5pbml0aWFsaXplKDApOwogI2VuZGlmCkBAIC00Njk2LDcgKzQ2OTYsNyBAQCB2b2lk
IFdlYlBhZ2U6OmJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiBwcmludEluZm8pCiAjZW5kaWYKIAogICAgIGlmICghbV9wcmludENvbnRleHQpIHsKLSAgICAg
ICAgbV9wcmludENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZy
YW1lKTsKKyAgICAgICAgbV9wcmludENvbnRleHQgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4o
Y29yZUZyYW1lKTsKICAgICAgICAgbV9wYWdlLT5kaXNwYXRjaEJlZm9yZVByaW50RXZlbnQoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCmluZGV4IDczNTY2YTEzMzg1ZGUzYWFj
NjQ2ZmI5NDk2YmRkYWZjYjVhZjQ2YjYuLjQ2NzM0ZmZmMjY5MWVhNjVhYmRmZjRmZTUwNDcwZmNj
NGUzNGQxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtNzI2LDcgKzcyNiw3IEBA
IHZvaWQgV2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSwgZG91YmxlIHhEUEksIGRvdWJsZSB5CiB7CiAgICAgQVNTRVJUKG1fcHJpbnRDb250ZXh0KTsK
IAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMp
OworICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOwogICAg
IGlmICghZGF0YS0+aXNWYWxpZCkgewogICAgICAgICBjYWlyb19zdXJmYWNlX2ZpbmlzaChzdXJm
YWNlKTsKICAgICAgICAgcHJpbnREb25lKGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGZyYW1lVVJM
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCA5YWJiMmE3OTI5OWQ1OTZiOTFlNmVmNjFjYTQz
ZWY4NjE5MGE5MDQ5Li45MzQxOGFiMjFkNzRmYzk0NThhMDIyNGU0Y2I0OGE3MzQxNzgwOWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRy
b2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0Zp
bmRDb250cm9sbGVySU9TLm1tCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6
OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5n
T3ZlCiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4dEluZGljYXRvci5nZXQo
KSk7CisgICAgbV9maW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudCA9IG1ha2VVbmlxdWU8RmluZElu
ZGljYXRvck92ZXJsYXlDbGllbnRJT1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0
KCkpOwogICAgIG1fZmluZEluZGljYXRvclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRJbmRp
Y2F0b3ItPnNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSk7CiAgICAgbV9maW5k
SW5kaWNhdG9yT3ZlcmxheSA9IFBhZ2VPdmVybGF5OjpjcmVhdGUoKm1fZmluZEluZGljYXRvck92
ZXJsYXlDbGllbnQsIFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpOwogICAgIG1f
d2ViUGFnZS0+Y29yZVBhZ2UoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VP
dmVybGF5KCptX2ZpbmRJbmRpY2F0b3JPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRv
Tm90RmFkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvRHJhd2luZ0FyZWFNYWMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL0RyYXdpbmdBcmVhTWFjLmNwcAppbmRleCA5MDY4N2M5NzRhY2YzM2Q4MmI4YzY0Yjk0OGU2
ZWU5YTMwZWUyZTljLi4wNmZjYzQ3MTU5M2ViNzhlZGViZmNjNjNmODk0NGIzZGZhZTlkYWI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0Fy
ZWFNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3
aW5nQXJlYU1hYy5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQogICAgIGlmICghbV9oYXNTZW50TWVzc2Fn
ZSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmso
bV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSksIDApOwogICAgICAgICBtX2hhc1NlbnRNZXNzYWdl
ID0gdHJ1ZTsKLSAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7CisgICAgICAgIG1fcnVu
TG9vcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRy
eSwgW3RoaXNdKCkgewogICAgICAgICAgICAgdGhpcy0+bV9maXJzdENhbGxiYWNrSW5DdXJyZW50
UnVubG9vcCA9IHRydWU7CiAgICAgICAgIH0pOwogICAgICAgICBtX3J1bkxvb3BPYnNlcnZlci0+
c2NoZWR1bGUoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQppbmRleCBkZjYwMDM2NDU5OGYxMzQ2MjlkYWI2MjcwNmVhZjY4NjFl
NWZmMzNkLi40Y2IzZGY5YWVhNTI5ZWZmNTI2MzM2YzgxZjEzMDIwNDViYTNlMGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YShXZWJQYWdlJiB3ZWJQYWdlLCBjCiAgICAgW21faG9zdGluZ0xheWVyIHNldE9wYXF1ZTpZRVNd
OwogICAgIFttX2hvc3RpbmdMYXllciBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKIAotICAgIG1f
bGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVu
TG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxL
bm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9sYXllckZs
dXNoUnVuTG9vcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+
KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9y
ZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaFJ1
bkxvb3BDYWxsYmFjaygpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggYTJkYTEyYzYwMjI5MzczY2Y4Nzg5MmI4M2RhYTU3NzM1MDBhNzdmMi4u
YTllMzc0NDRmYmQzNjg0NGE0OTI4Yzk2MTIyZDc0ZWQxZjBmYmI3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTU3Myw3ICsxNTczLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW4KICAgICBBU1NFUlQoIW1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxl
Q291bnRlcik7CiAgICAgbV9jb3VudE9mUGFnZXNGYWlsaW5nVG9NYXJrVm9sYXRpbGUgPSAwOwog
Ci0gICAgbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyPihbdGhpcywgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50ZXJFdmVudCkg
eworICAgIG1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlciA9IG1ha2VVbmlxdWU8
UGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKICAg
ICAgICAgaWYgKG1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlci0+dmFsdWUoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTgzOCw3ICsxODM4LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpzZXRFbmFibGVkU2VydmljZXMoYm9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1Nl
bGVjdGlvblNlcnYKIAogdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZpZXIpCiB7Ci0gICAgbV9hdXRvbWF0aW9u
U2Vzc2lvblByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
PihzZXNzaW9uSWRlbnRpZmllcik7CisgICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gbWFr
ZVVuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PihzZXNzaW9uSWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQpAQCAt
MTg3MSw3ICsxODcxLDcgQEAgYm9vbCBXZWJQcm9jZXNzOjpoYXNWaXNpYmxlV2ViUGFnZSgpIGNv
bnN0CiBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIHsK
ICAgICBpZiAoIW1fbGliV2ViUlRDTmV0d29yaykKLSAgICAgICAgbV9saWJXZWJSVENOZXR3b3Jr
ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENOZXR3b3JrPigpOworICAgICAgICBtX2xpYldl
YlJUQ05ldHdvcmsgPSBtYWtlVW5pcXVlPExpYldlYlJUQ05ldHdvcms+KCk7CiAgICAgcmV0dXJu
ICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KHVpbnQ2NF90IHBhZ2VHCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlp
bmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQogICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
biBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24g
PSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihzdGQ6Om1ha2VfdW5pcXVl
PFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJ
RCwgcGFnZUlELCBzdG9yZSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNl
dENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBj
Q29ubmVjdGlvbiwgcGFnZUdyb3VwSUQsIHBhZ2VJRCwgc3RvcmUpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IGQ0YzAxYmFiMWY5M2RhOTA4NWIwZjIxOTRjZDMyN2Q0NzE4
NjUwYjIuLjJmNGZiNTMwYWJjZWQ3ZWZjNzM3NjQyMjMwOWZkMzE4ODdhNDdiMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTMzLDYgKzEzMyw3IEBAIGNsYXNzIFdl
YlByb2Nlc3MKICAgICAsIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlcjo6Q2xpZW50CiAjZW5kaWYK
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
UHJvY2VzcyYgc2luZ2xldG9uKCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBQcm9jZXNzVHlwZSBw
cm9jZXNzVHlwZSA9IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50OwpAQCAtMTQ2LDcgKzE0Nyw3IEBA
IGNsYXNzIFdlYlByb2Nlc3MKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFk
ZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxl
bWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPigqdGhpcykpOworICAgICAgICBtX3N1cHBs
ZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFQ+KCp0aGlzKSk7CiAg
ICAgfQogCiAgICAgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKiB3ZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbm5lY3Rpb24uZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuY3BwCmluZGV4IDI3MjBiODZmY2QyZmZlZTYwMjJmNWFkNWVlZDUwYmNmMzY5MmQ3Zjgu
LjlhZjAwZWU4YWEwZjFjZDg0MGE4MTczNzkwZmEwNjIzMDA0NmZkZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmNwcApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6
U291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogICAgIHsKICAgICAgICAgQVNT
RVJUKGRldmljZVR5cGUgIT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bik7CiAg
ICAgICAgIGlmICh0eXBlID09IFR5cGU6OkF1ZGlvKQotICAgICAgICAgICAgbV9yaW5nQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKTsKKyAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1h
a2VVbmlxdWU8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlPihudWxscHRyKSk7CiAgICAgfQogCiAgICAgflNvdXJjZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmlu
ZGV4IGJhZWQwY2Q5ZTA5YjQ5ZDIyMWU5NDAxOGY2NDlmZTZkYmNmOTI1MTkuLmMxZDQzZmNiM2Fm
NTg0MTQ1M2FkMzQzNGM3Y2Y5M2ViZmM5ZTdlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC00Niw2
ICs0Niw3IEBAIGNsYXNzIENyb3NzUHJvY2Vzc1JlYWx0aW1lQXVkaW9Tb3VyY2U7CiBjbGFzcyBX
ZWJQcm9jZXNzOwogCiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciA6IHB1YmxpYyBXZWJQ
cm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2Vi
Q29yZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OlZpZGVvQ2FwdHVyZUZh
Y3RvcnksIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZUZhY3RvcnkgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyKFdlYlByb2Nlc3MmKTsKICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CmluZGV4IGI0N2QxZDhhZmEwM2ZlZDM2ZGVjYWQ5ODlkNzJkYmM0MTg0ODdmNTkuLjNiOTA2YTgw
YzVhZDhmNjliZWY3N2Y5YThjNzY0YWY4MDlmNDk1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMzEwLDcgKzMxMCw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZShQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXI6OlRhc2tTdGF0ZSB0CiAKICAgICAvLyBXZSB3ZXJlIGF3YWtlbmVkIGZyb20g
c3VzcGVuc2lvbiB1bmV4cGVjdGVkbHkuIE5vdGlmeSB0aGUgV2ViUHJvY2Vzc1Byb3h5LCBidXQg
dGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIG9uIG91ciBwYXJlbnQgUElECiAgICAgLy8gdG8gZW5z
dXJlIHRoYXQgaXQgdG9vIGlzIGF3YWtlbmVkLgotICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0
aW9uU3RhdGU6OkJhY2tncm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CisgICAg
YXV0byB1aVByb2Nlc3NBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5
IHJlc3VtZWQiLCBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpG
aW5pc2hUYXNrKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVu
c3VzcGVuZGVkKCksIFt1aVByb2Nlc3NBc3NlcnRpb24gPSBXVEZNb3ZlKHVpUHJvY2Vzc0Fzc2Vy
dGlvbildIHsgfSk7CiB9CiAjZW5kaWYKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uIHJlYXNvbikK
ICAgICB9CiAKICAgICBpZiAoIW1fY3B1TW9uaXRvcikgewotICAgICAgICBtX2NwdU1vbml0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPENQVU1vbml0b3I+KGNwdU1vbml0b3JpbmdJbnRlcnZhbCwgW3Ro
aXNdKGRvdWJsZSBjcHVVc2FnZSkgeworICAgICAgICBtX2NwdU1vbml0b3IgPSBtYWtlVW5pcXVl
PENQVU1vbml0b3I+KGNwdU1vbml0b3JpbmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2Fn
ZSkgewogICAgICAgICAgICAgaWYgKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlNlcnZp
Y2VXb3JrZXIpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VM
b2dnaW5nLCAiJXAgLSBTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGV4Y2VlZGVkIENQVSBsaW1pdCBv
ZiAlLjFmJSUgKHdhcyB1c2luZyAlLjFmJSUpIiwgdGhpcywgbV9jcHVMaW1pdC52YWx1ZSgpICog
MTAwLCBjcHVVc2FnZSAqIDEwMCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDM2OTA5NWNk
YWQxZDM0NzExYTA2NzZkODczNmE5MGUxOTNlMjkwNWUuLjIyOGY0YTM2ZDRiMGYyMjJjMTc4NjBk
MGJjNDk4YzFmOWUwODlhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlZjxTdG9yYWdlU3lu
Y01hbmFnZXI+IFN0b3JhZ2VTeW5jTWFuYWdlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCkK
IH0KIAogU3RvcmFnZVN5bmNNYW5hZ2VyOjpTdG9yYWdlU3luY01hbmFnZXIoY29uc3QgU3RyaW5n
JiBwYXRoKQotICAgIDogbV90aHJlYWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigp
KQorICAgIDogbV90aHJlYWQobWFrZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9w
YXRoKHBhdGguaXNvbGF0ZWRDb3B5KCkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAppbmRleCA0
NDM5MzgyOTVmNGUxYzI5ZGQwNDg2YjQzMWJhN2ZlYTM1MjlkMTZkLi45Yzc1MTRlMzQ2MmM0YjRk
OGE4NTYwNWVkMDI5ZGJkMTkyNWQ2YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUaHJlYWQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU3RvcmFnZVRocmVh
ZDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVh
ZCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgp
Pj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1
bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogfQogCiB2b2lkIFN0b3JhZ2VU
aHJlYWQ6OnRlcm1pbmF0ZSgpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6
dGVybWluYXRlKCkKICAgICBpZiAoIW1fdGhyZWFkKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10g
eworICAgIG1fcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlz
XSB7CiAgICAgICAgIHBlcmZvcm1UZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAgbV90aHJlYWQt
PndhaXRGb3JDb21wbGV0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcAppbmRleCBiOTM0ZDFhM2IxYmFhODMxYWRkZjNhYmU1ZTA3NzBhYjFj
Zjc3ZmEyLi44MDZjYjA5OTVkMGEwN2M3MTgyNzFkMjEwNTA3MDM5OGM0MDNiYzgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgU3RvcmFnZVRyYWNrZXImIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkKIFN0b3Jh
Z2VUcmFja2VyOjpTdG9yYWdlVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKQogICAg
IDogbV9zdG9yYWdlRGlyZWN0b3J5UGF0aChzdG9yYWdlUGF0aC5pc29sYXRlZENvcHkoKSkKICAg
ICAsIG1fY2xpZW50KDApCi0gICAgLCBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VU
aHJlYWQ+KCkpCisgICAgLCBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAg
ICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAgICwgbV9uZWVkc0luaXRpYWxpemF0aW9uKGZhbHNl
KQogICAgICwgbV9TdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZGVmYXVsdFN0b3JhZ2VEYXRh
YmFzZUlkbGVJbnRlcnZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAppbmRleCA0M2Vh
NDVkYWU4OTIwNmM4MjlhNTE0ZDRkYThlM2QxYzk3Y2MxMjg0Li44NTFjYzEwMTdkZWQwMGMwNmQ0
NmQyYzg1OWQ3MDAwMGI2ZDcyZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwOjpzdG9yYWdlU2Vzc2lvbihjb25zdCBQCiBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkKIHsKICAgICBpZiAoIWRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKLSAg
ICAgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOworICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCk7CiB9CiAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25N
YXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQogICAgICAgICAgICAgY29va2llU3RvcmFn
ZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgZGVmYXVsdE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUo
c2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGRlZmF1bHROZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBX
VEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKICNlbmRpZgogfQogCkBAIC0xMDAsMTEgKzEwMCwxMSBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6
OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjbwogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFk
b3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29r
aWVTdG9yYWdlKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFn
ZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKIAogI2VsaWYgVVNFKENVUkwpCiAg
ICAgZ2xvYmFsU2Vzc2lvbk1hcCgpLmVuc3VyZShzZXNzaW9uSUQsIFtzZXNzaW9uSURdIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPihzZXNzaW9uSUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CiAgICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Q0YuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnRDRi5jcHAKaW5kZXggMTg3NmI5NjBiOTQ3MDgxNGMzNTBiYzU5MjZhNGM4
MWFlZGYzOTAyMy4uN2I4Njk4MWEzZjQ4ZTUwZjhiM2NjYWMzNzA2OTE3ZDRhZjFmZGJkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTE1OSw1ICsxNTksNSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IFdl
Ykluc3BlY3RvckNsaQogICAgICAgICAgICAgZGVsZXRlU2V0dGluZyhuYW1lKTsKICAgICAgICAg
fQogICAgIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRT
ZXR0aW5nc0NGPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0
dGluZ3NDRj4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKaW5kZXggM2IxYTQ1MDcwNzhmYTRj
YzA2OGU3NDAzMDMyMjEyMzliMmFkNzEyMy4uMTQ1NzcyMjJhOWUxM2U2M2U0OTFkNmQzYjkyY2Ex
YmM4OWU3Y2IwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bXBvcnQgIldlYkNocm9tZUNsaWVudC5oIgogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnRJT1MgZmlu
YWwgOiBwdWJsaWMgV2ViQ2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnRJT1MoV2ViVmlldyogd2ViVmlldykKICAg
ICAgICAgOiBXZWJDaHJvbWVDbGllbnQod2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnQubW0KaW5kZXggMjE3YTRlZDBhODVhNmJiNDE0ZDMxOTRjYjdiZmFlZmRlMDM2ZDQ3YS4u
OGRhZDYwNDQ2MmY4Mzc2NDU3M2YwMDYyOWVhMTA0OWVlYjg2ZGMwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRl
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4
ZWRQb3NpdGlvbkNvbnRlbnQubW0KQEAgLTE3OCw3ICsxNzgsNyBAQCAtICh2b2lkKXNldFZpZXdw
b3J0Q29uc3RyYWluZWRMYXllcnM6KFdURjo6SGFzaE1hcDxDQUxheWVyICosIHN0ZDo6dW5pcXVl
X3B0cjxXZQogCiAgICAgZm9yIChhdXRvJiBsYXllckFuZENvbnN0cmFpbnRzIDogbGF5ZXJNYXAp
IHsKICAgICAgICAgQ0FMYXllciogbGF5ZXIgPSBsYXllckFuZENvbnN0cmFpbnRzLmtleTsKLSAg
ICAgICAgYXV0byBsYXllckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3RyYWlu
ZWRMYXllckRhdGE+KCk7CisgICAgICAgIGF1dG8gbGF5ZXJEYXRhID0gbWFrZVVuaXF1ZTxWaWV3
cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPigpOwogCiAgICAgICAgIGxheWVyRGF0YS0+bV9lbmNs
b3NpbmdBY2NlbGVyYXRlZFNjcm9sbExheWVyID0gc3RpY2t5Q29udGFpbmVycy5nZXQobGF5ZXIp
OwogICAgICAgICBsYXllckRhdGEtPm1fdmlld3BvcnRDb25zdHJhaW50cyA9IFdURk1vdmUobGF5
ZXJBbmRDb25zdHJhaW50cy52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggYThiNmEwNDM5M2VjMDAwMTQ2NTM4ZDRjZjY1YmQ2NDBj
NzRiZDkwMS4uNWFkODFiNGEzYjQ5YjVkMDYzOTM2NTY4M2ExYmNmNWQ1N2VmMzg2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtMTMzLDcg
KzEzMyw3IEBAIC0gKGlkKWluaXQKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBfZW50
cmllc0J5VVJMID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBfZW50
cmllc0J5RGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKKyAgICBf
ZW50cmllc0J5RGF0ZSA9IG1ha2VVbmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKIAogICAgIHJl
dHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KaW5kZXggYjczOTU5MzVlNTEwYmYzYjdmMGM0OGVkZDQzNmM1OGJiYzQ4
MWQ4ZS4uODZmOWQzZDQyMjM4NDZiYzk1Y2JjOTU2NDVhMWNhNzMyMGFmZTE5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0z
NDgsNyArMzQ4LDcgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5T
RGljdGlvbmFyeSAqKWRpY3QKICAgICAgICAgY29yZShfcHJpdmF0ZSktPnNldExhc3RWaXNpdFdh
c0ZhaWx1cmUodHJ1ZSk7CiAgICAgCiAgICAgaWYgKE5TQXJyYXkgKnJlZGlyZWN0VVJMcyA9IFtk
aWN0IF93ZWJraXRfYXJyYXlGb3JLZXk6cmVkaXJlY3RVUkxzS2V5XSkgewotICAgICAgICBhdXRv
IHJlZGlyZWN0VVJMc1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7
CisgICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oKTsKICAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KFtyZWRpcmVjdFVSTHMgY291bnRdKTsKIAogICAgICAgICBmb3IgKGlkIHJlZGlyZWN0VVJM
IGluIHJlZGlyZWN0VVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRl
eCBlMTdjNzg4MWE1MTdmMGMzNTVmODc1NjliNjBkYTNmMjE1YTFlYmE3Li5mNWU3ZmJjZjEyZTQ3
ZjkwZGVlZjFlYTJjZmViNzE3NDI2ODgwYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQ
cm94eS5tbQpAQCAtNDkzLDcgKzQ5Myw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0dldFNjcmlwdGFi
bGVOUE9iamVjdFJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsCiAgICAg
aWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAg
aW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1
ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5
PihvYmplY3RJRCkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0
SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxl
TlBPYmplY3RSZXBseT4ob2JqZWN0SUQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQog
CkBAIC01MDksNyArNTA5LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhblJlcGx5KG1hY2hf
cG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELCB1aW50MzIKICAgICBpZiAoIWlu
c3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAgICAgCi0gICAgaW5z
dGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CisgICAg
aW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CiAgICAgcmV0
dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApAQCAtNTI4LDcgKzUyOCw3IEBAIGtlcm5fcmV0dXJuX3Qg
V0tQQ0Jvb2xlYW5BbmREYXRhUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3Qg
cGx1Z2luSUQsCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiByZXN1bHQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCByZWludGVycHJldF9j
YXN0PFVJbnQ4Kj4ocmVzdWx0RGF0YSksIHJlc3VsdExlbmd0aCkpOwotICAgIGluc3RhbmNlUHJv
eHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwgcmVz
dWx0KSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFr
ZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVwbHk+
KHJldHVyblZhbHVlLCByZXN1bHQpKTsKICAgICAKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwog
fQpAQCAtNTQ1LDcgKzU0NSw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0luc3RhbnRpYXRlUGx1Z2lu
UmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luCiAgICAgaWYgKCFp
bnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAgaW5zdGFu
Y2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwg
cmVuZGVyQ29udGV4dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkp
KTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5p
cXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBseT4o
cmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4ocmVuZGVy
ZXJUeXBlKSkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKaW5kZXggMTBhMDhlOTUwYTNkYzBjOTM2NzFmMWZjMWM3
NGM5NDc3OTNhMDdlOC4uZTU2YTEwM2EyOGE3NjBmOWNlMGI5N2U3MWRkNmIyM2E2MGM1M2U4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKQEAgLTE3MSw2ICsxNzEs
NyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveAogCiAgICAgLy8gUmVwbHkgc3RydWN0cwogICAg
IHN0cnVjdCBSZXBseSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAgICAgIEluc3RhbnRpYXRlUGx1Z2luLAogICAg
ICAgICAgICAgR2V0U2NyaXB0YWJsZU5QT2JqZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMjAyYzZk
ZWFmMTNkMDdjNmUzYTU2OThiMWNkYjU5YTE5YjVkYTAzOS4uNTJiZjdiZDEyZTRlMzcxMmQzMTQ3
NWUyYTUzOWE0MjhjZmY4ZmE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAg
TWV0aG9kKiBQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3
YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBtYXBBZGRS
ZXN1bHQgPSBtX21ldGhvZHMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAobWFw
QWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm94eU1ldGhvZD4obWV0
aG9kTmFtZSk7CisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5p
cXVlPFByb3h5TWV0aG9kPihtZXRob2ROYW1lKTsKIAogICAgIHJldHVybiBtYXBBZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQpAQCAtMzk3LDcgKzM5Nyw3IEBAIEZpZWxkKiBQcm94
eUluc3RhbmNlOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8g
QWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGls
ZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBhdXRvIG1hcEFkZFJlc3VsdCA9IG1fZmll
bGRzLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05l
d0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CisgICAg
ICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5RmllbGQ+
KGlkZW50aWZpZXIpOwogICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXgg
OWM3MWEzY2M5MjNmMzNkMmUwYWIzOWExYmY2YjE0YjQ0M2U5NGQ0Yi4uZWUxOWM1NjdjMDFmYTE4
YzVlOGRjNjFiMDhjODk0ZTUyMDAyZGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldy5tbQpAQCAtNjAsNiArNjAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
bmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCiBjbGFzcyBTb2Z0d2FyZUNBUmVuZGVyZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFNvZnR3YXJl
Q0FSZW5kZXJlcih1aW50MzJfdCBjb250ZXh0SUQpCiAgICAgICAgIDogbV9jb250ZXh0IHsgW0NB
Q29udGV4dCBsb2NhbENvbnRleHRdIH0KQEAgLTE2OCw3ICsxNjksNyBAQCAtIChCT09MKWNyZWF0
ZVBsdWdpbgogICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoX3Byb3h5LT5yZW5kZXJlclR5
cGUoKSA9PSBVc2VTb2Z0d2FyZVJlbmRlcmVyKQotICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9
IHN0ZDo6bWFrZV91bmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRl
eHRJRCgpKTsKKyAgICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBtYWtlVW5pcXVlPFNvZnR3YXJl
Q0FSZW5kZXJlcj4oX3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CiAgICAgZWxzZQogICAgICAg
ICBbc2VsZiBjcmVhdGVQbHVnaW5MYXllcl07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlci5tbQppbmRleCBmN2FlZGJjZWQ0ZDdmNWM0YmEzZTk2ZTM1NjFjYTdmMGIyNjVjOGFjLi44
ZWMxYmY3OWVlMzJhMmFjMWJiY2Y3YTIxZTczZTdlMWUwMWRiMWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXIubW0KQEAgLTM1LDcgKzM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYk5l
dHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6
Y3IKIHsKICAgICBzd2l0Y2ggKFtwbHVnaW5WaWV3IGV2ZW50TW9kZWxdKSB7CiAgICAgY2FzZSBO
UEV2ZW50TW9kZWxDb2NvYToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmlldyk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdpblZp
ZXcpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgK
aW5kZXggNzA4Mzc3NmQyOGE3NWNmYjU0MjUzM2Q5MGYzNzc4ZTg1YWJjZDFkMi4uYmJkOWM1ZDU4
MjFmODVmNjVlYmM4Zjc3N2VjNjU1MjI5ZDVlODlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlckNvY29hLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJOZXRzY2Fw
ZVBsdWdpbkV2ZW50SGFuZGxlci5oIgogCiBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNvY29hIDogcHVibGljIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlckNvY29hKFdlYk5ldHNjYXBlUGx1Z2luVmlldyopOyAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5t
bQppbmRleCAwMmZmMjE4NmRmODRhOWE5MGQ3ZTljMjZjMDc2Mjc5ZTMyMjExMzc4Li4xNjA2NjNl
ODYxZjcxMGViZmVkMWQ3Njg1NjVkZDIyYTExNGU4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAt
MTY1NSw3ICsxNjU1LDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoo
dWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0IHQKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgCiAgICAgaWYgKCF0aW1lcnMpCi0gICAgICAgIHRpbWVycyA9IHN0ZDo6bWFrZV91
bmlxdWU8SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7
CisgICAgICAgIHRpbWVycyA9IG1ha2VVbmlxdWU8SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlx
dWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGlt
ZXI+KiBzbG90OwogICAgIHVpbnQzMl90IHRpbWVySUQ7CkBAIC0xNjYzLDcgKzE2NjMsNyBAQCAt
ICh1aW50MzJfdClzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCBy
ZXBlYXQ6KE5QQm9vbClyZXBlYXQgdAogICAgICAgICB0aW1lcklEID0gKytjdXJyZW50VGltZXJJ
RDsKICAgICB3aGlsZSAoIXRpbWVycy0+aXNWYWxpZEtleSh0aW1lcklEKSB8fCAqKHNsb3QgPSAm
dGltZXJzLT5hZGQodGltZXJJRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlKSk7CiAKLSAgICBh
dXRvIHRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1Z2luLCB0aW1lcklE
LCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5p
cXVlPFBsdWdpblRpbWVyPihwbHVnaW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVy
RnVuYyk7CiAKICAgICBpZiAoX3Nob3VsZEZpcmVUaW1lcnMpCiAgICAgICAgIHRpbWVyLT5zdGFy
dChfaXNDb21wbGV0ZWx5T2JzY3VyZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQppbmRleCA3MDRj
ZDA5NWU4OGZlMWEyMzgxMTg2YzZiZmYxMzBmYzkwMjA0MWViLi41N2ZiYmZhZDllNjRiNzY3OGFk
M2FjY2U4MDc3OGJhY2YwMzc4MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQpAQCAtOTQsMTAg
Kzk0LDExIEBAIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFuYWdlckNs
aWVudCgpCiB9CiAKIGNsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhy
ZWFkKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCYgY2xpZW50LCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIG9yaWdpbikKICAgICB7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8RGlkTW9kaWZ5T3JpZ2luRGF0YT4oY2xpZW50LCBvcmlnaW4pOworICAgICAgICBhdXRv
IGNvbnRleHQgPSBtYWtlVW5pcXVlPERpZE1vZGlmeU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2lu
KTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dCA9IFdURk1vdmUoY29udGV4dCld
IHsKICAgICAgICAgICAgIGNvbnRleHQtPmNsaWVudC5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihj
b250ZXh0LT5vcmlnaW4pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmgKaW5kZXggYTNiMTU5OGVlMzUzZDY3ZTIzYWY4MDk1OGViN2Y3NWViMTY3ZjRkOC4uY2Q3
MjY0MjY4MjViYTcyMjE1NTdlMDU2NmZhOTJlYzA4MTExNDVjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBj
bGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmlldyopOwogICAgIHZpcnR1
YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmgKaW5kZXggNzhiNTM5ZTM3MmI4NjVjNTk0ZmMwNzZmNWExZmM4NGFhZmU5OGJm
MC4uMjcxNDI3ZTJkNDZlZTNhMjk3ZDA1NDAxMmE3YTg1YWI4YjNlMWIwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIDogcHVi
bGljIFdlYkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShpZCB3
ZWJEb2N1bWVudFZpZXcpIDogbV93ZWJEb2N1bWVudFZpZXcod2ViRG9jdW1lbnRWaWV3KSB7IH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZmRjNGNjNzgxOTZmY2JjZjMyNjAyZDE4ZTI4OWYw
N2ExMTU0Y2M5NS4uYzBmYmRhOWIyZGExZGQ0NTEwZmZlMDg5YmY2OGY1YTc2N2RkNDE2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsK
IC8vIGJhc2UgY2xhc3Mgb2YgdGhlIGNvbmNyZXRlIGNsYXNzLCBXZWJDaHJvbWVDbGllbnRJT1Mu
IEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBjbGFzcyBhbmQKIC8vIG1hbnkgb2YgaXRzIGZ1bmN0aW9u
cyBhcmUgbm90IG1hcmtlZCBmaW5hbC4gVGhhdCBpcyBtZXNzeSB3YXkgdG8gb3JnYW5pemUgdGhp
bmdzLgogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21l
Q2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMTg4NWYw
MzEzMTM1YjgxN2IzMGY5NDU3NzdkOGUyNGIxNTM5YmY5MC4uYTdmNjZlZWVmMzA2YTY4NjA1NDIw
ZTc5ODc2MjAyNTdiZTA2YjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC00NCw2
ICs0NCw3IEBAIGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNv
bnRleHRNZW51Q2xpZW50CiAgICAgLCBwdWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGll
bnQKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpOwogICAgIHZpcnR1YWwgfldl
YkNvbnRleHRNZW51Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggODQ3YTczYjE3YTQ2MTdiZDU0
YThkMjhhOTIzYzFkNGE2M2JkZDEyZS4uMzBkZjNmNzNkODUwZWE3NjljNzEzNTIyMWQyZTg4NjVl
YTY3ZTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogQGNsYXNzIFdlYlZpZXc7
CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0NsaWVudChX
ZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZjA1OWUwNTllMTE4N2EzYmM1YmQyNDdj
YzI0MWY1OWFkZDQ1MDk1MC4uYjUxMDc4N2Q4MDliY2Y5N2I3Njg5ZTc0MDkzMjgzNzVhYTBiMGIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIEBjbGFzcyBXZWJFZGl0b3JV
bmRvVGFyZ2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJFZGl0b3JDbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViVmlldyAqKTsKICAgICB2
aXJ0dWFsIH5XZWJFZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5k
ZXggM2RkNTBlN2IzYjljZjk5MzM0OWM5YWJiNGNiNDk3ODM3ZWVjMzUzZS4uOTQwYjBmZjk2M2E4
NWNlOWQ4OGQ3YmM1NmZmNmIzZWViMmUzZDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0
ZUdsb2JhbEhpc3RvcnkoKQogc3RhdGljIHZvaWQgYWRkUmVkaXJlY3RVUkwoV2ViSGlzdG9yeUl0
ZW0gKml0ZW0sIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICghaXRlbS0+X3ByaXZhdGUt
Pl9yZWRpcmVjdFVSTHMpCi0gICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgaXRlbS0+X3ByaXZh
dGUtPl9yZWRpcmVjdFVSTHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogCiAgICAg
Ly8gT3VyIEFQSSBhbGxvd3MgdXMgdG8gc3RvcmUgYWxsIHRoZSBVUkxzIGluIHRoZSByZWRpcmVj
dCBjaGFpbiwgYnV0IGZvcgogICAgIC8vIG5vdyB3ZSBvbmx5IGhhdmUgYSB1c2UgZm9yIHRoZSBm
aW5hbCBVUkwuCkBAIC0xMzgwLDcgKzEzODAsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENh
Y2hlZEZyYW1lKiBjYWNoZWRGcmFtZSkKIHsKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldy5kb2N1bWVudFZpZXcpKTsKKyAg
ICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJD
YWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmll
dy5kb2N1bWVudFZpZXcpKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQXQg
dGhpcyBwb2ludCB3ZSBrbm93IHRoaXMgZnJhbWUgaXMgZ29pbmcgdG8gYmUgY2FjaGVkLiBTdG9w
IGFsbCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggZmZlMjk5MzEyZWI0
ODBiYWZiNWYwZWFjNDM1MmYyNDNmOTZlMDBmNy4uZmZkYmFjZmMyNzQyMWU4ZDM1ODg4ZjJjZTZi
MTgwNzdhMTZlMzNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMyw2ICszMyw3
IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3Mg
V2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0
aW9uQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0dXJuIG1f
d2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBiZDdmNjJmYzg1ZGM5OWMzODcx
NmYwNzY2NjQ2MzE4MjUxMWM1NGE1Li4wYzk0OGIzYWVmOTg3NjA5NjMwMzUxZDU5YWM3OTBiMmFi
ZWFkYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBQ
YWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3Bl
Y3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1Ymxp
YyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKmlu
c3BlY3RlZFdlYlZpZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggMWMwMDgwOTc2
OTJmZjliMDcxZmNlNWFjNGE0YjQ2OTJkMTM3ZWQ5NS4uN2QzZTVlYzllNjE1ZTFkNDhjM2QwNWQ3
MWE1OWM0NTFmZWI3NjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTA5LDcgKzEw
OSw3IEBAIEZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9u
dGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwCiAgICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0
KCkgc2V0SW5zcGVjdG9yQ2xpZW50OnRoaXNdOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3Jl
KFt3aW5kb3dDb250cm9sbGVyLmdldCgpIGZyb250ZW5kV2ViVmlld10pOwotICAgIG1fZnJvbnRl
bmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Piht
X2luc3BlY3RlZFdlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RlZFBhZ2VD
b250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAg
ICBtX2Zyb250ZW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dD4obV9pbnNwZWN0ZWRXZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQ
YWdlQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7
CiAKICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250
ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250
ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21faW5zcGVjdGVkV2Vi
VmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggMTViNDE4MDQ4ZTRmMWQ0NjI0YzMwM2Rj
YmJmZWQxNjk3OTY0NDg2MS4uOTRlZDYxOGFjNzhlZThiY2Y1NzE1NWM5YWRhYmNiZGFkZjY4Yzcz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIEBjbGFz
cyBXZWJWaWV3OwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJOb3RpZmljYXRpb25DbGllbnQoV2ViVmlldyAqKTsKICAgICBXZWJWaWV3
ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXIuaAppbmRleCBhM2Q2YWU2MzYzNjQ3YzVmMzBjYzc5ZmJkNjM1ZjY2
NGJjYTAxMjNjLi5kYzlkMTFhMzU4N2VlMDRmNTAxNTFiZTg4YmM1ZDRiMTQ4YmNkZTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDcg
QEAgY2xhc3MgSW50UG9pbnQ7CiB9CiAKIGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyIDogcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlcihXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCmlu
ZGV4IDI1MzY0OGQ4ZTg0NTkxMWUyYWUyOGMwYmI4NjNjYjU3ZjdjMzAwMzkuLjI3NmQ5ZjE1ZWY4
ZmE1ZTFmZWQ0MzhlZDljMWQyNTlhNzg1ODM1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyTW9jay5tbQpAQCAtMzYsNyArMzYsNyBAQCAtIChpZClpbml0CiAgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgbV9j
b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7Cisg
ICAgbV9jb3JlID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCmluZGV4IGE5MDYyMmMyMDc0ZTBjZGNlY2VmMmM2YzFjODQ5NDVkNGU5ZGZmYWIu
LjNhOTRiYjkxMGQyNTllZmFhODkxZDUyOWU4MGQyYjViMDAyMGI0ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMzc4LDcgKzM3OCw3IEBAIC0g
KHZvaWQpX2F0dGFjaFNjcmlwdERlYnVnZ2VyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNjcmlwdERl
YnVnZ2VyPihnbG9iYWxPYmplY3QpOworICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IG1h
a2VVbmlxdWU8V2ViU2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVjdCk7CiB9CiAKIC0gKHZvaWQp
X2RldGFjaFNjcmlwdERlYnVnZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCmluZGV4IGRm
YTdlZmQwNjA2YWRjNDlmZTI5MWQwNTIxZDEzMmU2ZTE5YzUwNzMuLmEwNzJlODE5NTI0OTM5YWUw
ZjIyYmI5ODM2ZDNhYzcwNWQ4NTc5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCkBA
IC0zNyw2ICszNyw3IEBAIGNsYXNzIFBhZ2U7CiB9CiAKIGNsYXNzIFdlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIgOiBwdWJsaWMgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBjcmVhdGUoV2ViQ29y
ZTo6UGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KaW5kZXggNzJjMjBjNjkz
ZmVjYmE5NzEwNDYzNDE2NDFjY2UxMTQ5NGRlNGE2OS4uNjAyNDAyOTk2MmVjMzRmMDBmNGFhZDk0
MzJhN2ZjNDJiYTFkMTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQpAQCAtMzMs
NyArMzMsNyBAQAogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
cj4gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2UmIHBh
Z2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlcj4ocGFnZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlcj4ocGFnZSk7CiB9CiAKIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6Oldl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGFnZSYgcGFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KaW5kZXgg
MWE3MjU4YjQyM2E4NDU3ODkxZTQxNWUxMGQwMDI1NjczMGFhMmJkZS4uZTM2M2I4NWIyYjNkNWFl
MTQ3M2M4MzcyNzE4NTgzNGQ1MTc4N2IxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaWQp
aW5pdFdpdGhSYW5nZTooRE9NUmFuZ2UgKilyYW5nZQogICAgICAgICByZXR1cm4gc2VsZjsKICAg
ICAKICAgICBfcHJpdmF0ZSA9IFtbV2ViVGV4dEl0ZXJhdG9yUHJpdmF0ZSBhbGxvY10gaW5pdF07
Ci0gICAgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
OlRleHRJdGVyYXRvcj4oY29yZShyYW5nZSkpOworICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9y
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUocmFuZ2UpKTsKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IGJjY2M2NGIwN2EzZDA1ZjliZTg0NWZkMTZhOGE0ZTE1OGI1NjQ3NWQuLjEwZjIx
ODg0ZWI0YTljOTg0YWMzMmU2MDE0MTQ5ODUwYjhjMTlhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEyMjksNyArMTIyOSw3IEBAIHN0YXRpYyBO
U1N0cmluZyAqbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKQogLSh2b2lkKV9p
bmplY3RPdXRsb29rUXVpcmtzU2NyaXB0CiB7CiAgICAgc3RhdGljIE5TU3RyaW5nICpvdXRsb29r
UXVpcmtzU2NyaXB0Q29udGVudHMgPSBsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50
cygpOwotICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNl
clNjcmlwdCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwgc3RkOjptYWtlX3VuaXF1ZTxV
c2VyU2NyaXB0PihvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3Ry
aW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFs
bEZyYW1lcykpOworICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCku
YWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxV
c2VyU2NyaXB0PihvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3Ry
aW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFs
bEZyYW1lcykpOwogCiB9CiAjZW5kaWYKQEAgLTE0NDMsNyArMTQ0Myw3IEBAIC0gKHZvaWQpX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3Jv
dXBOYW1lOihOU1N0CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdl
YkNocm9tZUNsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNs
aWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKTsKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGVuYWJsZSB0aGlzIG9uIGlPUyBhcyB3ZWxsLgotICAgIHBhZ2VDb25maWd1cmF0aW9u
LnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9u
TWVzc2FnZUNsaWVudD4oc2VsZik7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1l
c3NhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxm
KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVj
dG9yQ2xpZW50KHNlbGYpOwogI2Vsc2UKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGll
bnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNlbGYpOwpAQCAtNDYzMyw3ICs0NjMzLDcgQEAg
KyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxk
OihXZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNv
dXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFj
a2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVj
dEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09
IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZy
YW1lT25seSk7CisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihz
b3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxh
Y2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmpl
Y3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9
PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BG
cmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNl
clNjcmlwdCgqY29yZSh3b3JsZCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC00NjU2
LDcgKzQ2NTYsNyBAQCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5n
ICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgIGlmICghd29ybGQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc3R5bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8
VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0
b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFs
bEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJT
dHlsZVVzZXJMZXZlbCk7CisgICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxVc2VyU3R5
bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5n
VmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVz
ID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNl
ckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
dHlsZVNoZWV0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlz
dGluZ0RvY3VtZW50cyk7CiB9CiAKQEAgLTk0MTYsNyArOTQxNiw3IEBAIC0gKFZlY3RvcjxTdHJp
bmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKIC0g
KFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyJilfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xs
ZXIKIHsKICAgICBpZiAoIV9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIpCi0g
ICAgICAgIF9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyPihzZWxmKTsKKyAgICAgICAgX3By
aXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOwogICAgIHJldHVybiAqX3ByaXZhdGUtPl9zZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIH0KICNlbmRpZgpAQCAtOTQ3NSw3ICs5NDc1LDcgQEAg
LSAodm9pZClfc2V0VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvcgog
LSAodm9pZClfc2V0VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvciB3
aXRoTGlmZXRpbWU6KFRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSlsaWZldGltZQogewogICAg
IGlmICghX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIF9wcml2YXRlLT50
ZXh0SW5kaWNhdG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5kaWNhdG9yV2luZG93
PihzZWxmKTsKKyAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBtYWtlVW5p
cXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+KHNlbGYpOwogCiAgICAgTlNSZWN0IHRleHRCb3VuZGlu
Z1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6W3NlbGYgX2NvbnZl
cnRSZWN0RnJvbVJvb3RWaWV3OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlcygpXSB0b1ZpZXc6bmlsXTsKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVj
dEluU2NyZWVuQ29vcmRpbmF0ZXMgPSBbc2VsZi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjp0
ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlc107CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAxMDYwYzJkODU0YWRhMGRjYWZi
MzM1NTljODExZTRlZTQ5NGNjNmUwLi44MjM4YTRlYzVmZWUxNjgzNjRlZDEzMDRiYzc1MTVmNTUx
N2ZlODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0Rh
dGEubW0KQEAgLTk2LDcgKzk2LDcgQEAgTGF5ZXJGbHVzaENvbnRyb2xsZXI6OkxheWVyRmx1c2hD
b250cm9sbGVyKFdlYlZpZXcqIHdlYlZpZXcpCiBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6
V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdXNoQ29u
dHJvbGxlcikKICAgICA6IG1fZmx1c2hDb250cm9sbGVyKGZsdXNoQ29udHJvbGxlcikKIHsKLSAg
ICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9i
c2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6Oldl
bGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9ydW5M
b29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgewogICAgICAgICB0aGlzLT5sYXllckZsdXNo
Q2FsbGJhY2soKTsKICAgICB9KTsKIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtIChpZClpbml0CiAg
ICAgcGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCi0gICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKTsKKyAgICBtX2Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyPigpOwogI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAKaW5kZXggNjQ2ZTZhZWY5MzJmMWM5OTI5ODUzNmM4MmYyYzk1NWE3MWExOTJjZi4uZmU0NGU3
NTFjYzExYzBlYWFmZTI4MTgxNzllZGNmNjVhN2YxYzcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTI0Niwx
MCArMjQ2LDEwIEBAIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIoKQogICAgICwgbV9tb3ZpbmdXaW5kb3coZmFsc2UpCiAgICAgLCBtX3RpbWVyKCp0
aGlzLCAmRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKICNpZiBVU0UoQ0Ep
Ci0gICAgLCBtX2xheWVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMp
KQorICAgICwgbV9sYXllckNsaWVudChtYWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKICAg
ICAsIG1fcm9vdENoaWxkKFBsYXRmb3JtQ0FMYXllcldpbjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlTGF5ZXIsIG1fbGF5ZXJDbGllbnQuZ2V0KCkpKQogI2VuZGlmCi0gICAgLCBt
X2Z1bGxzY3JlZW5XaW5kb3coc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93PihzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xp
ZW50Kj4odGhpcykpKQorICAgICwgbV9mdWxsc2NyZWVuV2luZG93KG1ha2VVbmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRoaXMpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IGFiYTYzZGFiOGIzMWU0
N2FiZDgwODhiMzc4M2E4MGVjNTRjMTAyMTguLjBmNmJlZWZmYWQxZGMwMTVjOGE0NzdlN2ZiZTVj
OWI2YWFmYWZmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblN0cmVhbS5jcHAKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlk
UmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hh
cgogCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAgICAgICAg
aWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KCk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9
IG1ha2VVbmlxdWU8VmVjdG9yPGNoYXI+PigpOwogCiAgICAgICAgIGludCBvbGRTaXplID0gbV9k
ZWxpdmVyeURhdGEtPnNpemUoKTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2l6ZShvbGRT
aXplICsgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IDIxMzYzMTdmMjk5OWQ1ZTEzNzQ5ZGYzOGUxOWE4ZjRkMmYyNWJkNjAu
LjU0NzE2YTBiYjJiMWZhYjc1ZDgxZGU0MmFlZTk2ZWVhMmY2YjEzZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNTEwLDcgKzUxMCw3
IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2Fk
UmVxdWVzdCwgYm9vbCBzZW5kTm90aWZpY2F0CiAgICAgfSBlbHNlIGlmICghbV9wYXJlbnRGcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpCiAgICAgICAg
IHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwogCi0gICAgc2NoZWR1bGVSZXF1ZXN0KHN0ZDo6
bWFrZV91bmlxdWU8UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2Vu
ZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CisgICAgc2No
ZWR1bGVSZXF1ZXN0KG1ha2VVbmlxdWU8UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRS
ZXF1ZXN0KSwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgp
KSk7CiAKICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAwNTcyOGYzZWQzNzIw
NTA0YWY1NWY5ODc3Zjg2MjFiZGMwNWNlNjIyLi41MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQyOTgx
YzNmNTYzZWRmZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlld1dpbi5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCBQbHVnaW5WaWV3Ojp3bmRQcm9j
KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQog
ICAgIGlmIChtZXNzYWdlID09IFdNX1VTRVIgKyAxICYmCiAgICAgICAgIG1fcGx1Z2luLT5xdWly
a3MoKS5jb250YWlucyhQbHVnaW5RdWlya1Rocm90dGxlV01Vc2VyUGx1c09uZU1lc3NhZ2VzKSkg
ewogICAgICAgICBpZiAoIW1fbWVzc2FnZVRocm90dGxlcikKLSAgICAgICAgICAgIG1fbWVzc2Fn
ZVRocm90dGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4o
dGhpcyk7CisgICAgICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPFBsdWdp
bk1lc3NhZ2VUaHJvdHRsZXJXaW4+KHRoaXMpOwogCiAgICAgICAgIG1fbWVzc2FnZVRocm90dGxl
ci0+YXBwZW5kTWVzc2FnZShoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhLmgKaW5kZXggNTMwYjY5ZWQ3MTljMjdhY2M2YjA3ZTM1MTU5MjIxZjU1
MjZjNTMwNS4uM2JmNDRkODdkMThkNWYyNzNjZDI5NTM1Njc2YjI0MDhmMmM5MTRlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oPgogCiBjbGFzcyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBX
ZWJDb3JlOjpDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoSVdlYkRhdGFT
b3VyY2UqIHdlYkRhdGFTb3VyY2UpIDogbV93ZWJEYXRhU291cmNlKHdlYkRhdGFTb3VyY2UpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0YTQ5Yjk0YmJhNThkMGM1NDYzMzI5YzNmNmVm
MjNlODQ4OGI3YWYzLi43YjI5OWNlZTI1ZWNkMTBiYmE2MjFjODU4MWIwNmFlMDZjNWExZDE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhGaWxlUGF0aHNMaXN0U2l6ZSA9IFVTSFJUX01BWDsKIFdlYkNocm9tZUNsaWVudDo6V2Vi
Q2hyb21lQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRl
KHN0ZDo6bWFrZV91bmlxdWU8V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmll
dykpCisgICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShtYWtlVW5pcXVlPFdlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZpZXcpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCmluZGV4IDQxZDVmMDZhZWFjYjdlMTQxN2Q0YjcwMjQwMDYwYmJlNTdmNjkzMGYuLjc4NzU0
MzI1M2Q1ZGZmNGVjNjY4ZWJlODhmMDg4NWQwYmFkYjY1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBA
IC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiBp
bnRlcmZhY2UgSVdlYlVJRGVsZWdhdGU7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCmluZGV4IGM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkx
NThiZDQuLmY0OGVlNzMwZWVmNzE5NzllNGQ4ZDJjMzI3ZWQxYmExN2I5NGZmYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogY2xhc3MgV2ViVmlldzsKIAog
Y2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNv
bnRleHRNZW51Q2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGI1OTg5MzMyOTEw
MDllMjg1MWVkNzU0MTVlYzRhYTBmZTQwM2Q2MTEuLjQ1ZTNjYTcyNzUzYWQxYWMxMTUzYmU5NjE5
M2Y2ZWQ2MjFmZjg5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0Ns
aWVudChXZWJWaWV3Kik7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJveWVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGRiNjM1MmQ2MzgxNmY3YzlhZWVlOWY3NDRlNDhlMzgx
ZTg1NmQyYjUuLjY5ZDdlZDNlMGFhMzFmMTNiZWE2NGNmMGMyNzY1ZTI1NGZiZjhlNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNs
YXNzIFdlYkVkaXRvclVuZG9UYXJnZXQ7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tl
ckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
RWRpdG9yQ2xpZW50KFdlYlZpZXcqKTsKICAgICB+V2ViRWRpdG9yQ2xpZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGUzNTRiNzFjZGZkMmE1ZjliOGIwMTFhMDMyOWQ3
NDI0YmM5MGJiYy4uNzcxZjhlYTZmNzE2ODA5Y2RmYWRkN2UzOGM2MGRjN2EwM2UwMWZhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIGNsYXNzIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZSB7CiB9Owog
CiBXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQoV2ViRnJhbWUqIHdl
YkZyYW1lKQotICAgIDogbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZT4oKSkKKyAgICA6IG1fcG9saWN5TGlzdGVuZXJQ
cml2YXRlKG1ha2VVbmlxdWU8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+KCkpCiAgICAg
LCBtX3dlYkZyYW1lKHdlYkZyYW1lKQogICAgICwgbV9tYW51YWxMb2FkZXIoMCkKICAgICAsIG1f
aGFzU2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpIApAQCAtOTczLDcgKzk3Myw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hl
ZEZyYW1lKiBjYWNoZWRGcmFtCiAKICAgICBBU1NFUlQoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpID09IGNhY2hlZEZyYW1lLT5kb2N1bWVudExvYWRlcigpKTsKIAotICAgIGNh
Y2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihzdGF0aWNfY2FzdDxJV2ViRGF0YVNvdXJjZSo+KGdl
dFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkpKTsK
KyAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxX
ZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihn
ZXRXZWJEYXRhU291cmNlKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7
CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oCmluZGV4IGViOTc1OGJkNDIxMDdkMmY5YTg1NGU0ZTY4ODE2NmE2ZjUxNWZiOWYuLmJi
YTljOWY0NDUzNThkN2NlM2VhMDNmODk2NjQxYmQ2ZTVlMDQwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwog
Y2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKaW5kZXggNzU2OTU5MGMxYjNjZjM4MTZmYzQyYTM1YmYzZjY2YmZkNzg5
MDIyNC4uZjgwYWUwNDhiODJkYmRiMjM0NjU0NjhkOTMzYzYwYTcwOTcyYzdmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9y
Q29udHIKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoZnJv
bnRlbmRXZWJWaWV3LmdldCgpKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2lu
c3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9u
dGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1f
ZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Piht
X2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25k
LCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250
ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKICAg
ICBtX2Zyb250ZW5kSGFuZGxlID0gZnJvbnRlbmRId25kOwogICAgIHJldHVybiB0aGlzOwpAQCAt
MTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQoKQogICAg
IGJvb2wgY3JlYXRpbmdIaWdobGlnaHQgPSAhbV9oaWdobGlnaHQ7CiAKICAgICBpZiAoY3JlYXRp
bmdIaWdobGlnaHQpCi0gICAgICAgIG1faGlnaGxpZ2h0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJO
b2RlSGlnaGxpZ2h0PihtX2luc3BlY3RlZFdlYlZpZXcpOworICAgICAgICBtX2hpZ2hsaWdodCA9
IG1ha2VVbmlxdWU8V2ViTm9kZUhpZ2hsaWdodD4obV9pbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAg
IGlmIChtX2hpZ2hsaWdodC0+aXNTaG93aW5nKCkpCiAgICAgICAgIG1faGlnaGxpZ2h0LT51cGRh
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggOTVjOWFmYTg1MDAyYTU0MzI3MGI3Y2U2
YjM4OGM3MGQ0ODkxODUxOC4uZjIwZWFlYmQ2NjFmOTEyYmFjZjJkOTlmNDQwOWRiY2Q3YTk3MWU1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgV2ViTm9k
ZUhpZ2hsaWdodDsKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjhjNmJkNDkz
OWNmOWIwNDg5NTdiYzc1MDBiZDg1NDhhMDFlZTNiMi4uMTYyN2VjNWZhMjZiZjU5MDFkMDU5M2I1
YTE4Mzk2OTQ3OTIxOTBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
YmFzZU1hbmFnZXIuY3BwCkBAIC0zNDcsNiArMzQ3LDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1h
bmFnZXI6OmRlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZXMoKQogfQogCiBjbGFzcyBEaWRNb2RpZnlP
cmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEaWRNb2RpZnlPcmlnaW5EYXRhKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFuYWdl
ciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCAyN2FmMWJhZTY1M2Vm
ZjAyZjY3MDRmN2UzOWFkMGUxYWM1MGFkNzBiLi44YWZiYTBmNmQ1M2FmZDU1NTg0NWMxOTUzNmMy
YTljMWVjNWYzN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVt
ZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIC8vIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50
UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQotICAgIDogbV9yZXN1bHQo
c3RkOjptYWtlX3VuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQorICAgIDogbV9yZXN1bHQo
bWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7
CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBhODFjMDBlNTZj
NWRlMmFlYmMxMmFiOGI2ZGIxMWJjOTM0ZWJiYmRhLi5mYjg4ZTM5ZTdiNTZhYzMyZGNmNWNmNTAx
MWMzNTQ4MTcxYTZjM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
aXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6aW5pdEZy
b21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oX0luX29wdF8gdm9pZCogZGljdGlvbmEKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IHJlZGlyZWN0VVJMc1ZlY3RvcjsKICAgICBp
ZiAoQ0ZBcnJheVJlZiByZWRpcmVjdFVSTHNSZWYgPSBzdGF0aWNfY2FzdDxDRkFycmF5UmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5UmVmLCByZWRpcmVjdFVSTHNLZXkpKSkgewog
ICAgICAgICBDRkluZGV4IHNpemUgPSBDRkFycmF5R2V0Q291bnQocmVkaXJlY3RVUkxzUmVmKTsK
LSAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oc2l6ZSk7CisgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVj
dG9yPFN0cmluZz4+KHNpemUpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBzaXpl
OyArK2kpCiAgICAgICAgICAgICAoKnJlZGlyZWN0VVJMc1ZlY3RvcilbaV0gPSBTdHJpbmcoc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVkaXJlY3RVUkxz
UmVmLCBpKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCmlu
ZGV4IDJmMWYyZjQ4MDdlYjljNGZlNzA4MzVkYjc4ZTM0YTM0YmNmZjM2ZDAuLmQ2NWRlMTllZTk5
YzQ1MTQ0NWRmYmYxYjEzNTlkYzJhOGJhMzhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEM0RQb3N0
UHJvY2Vzc2luZ0NvbnRleHQ+IENBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5n
CiAgICAgbWVtY3B5KG92ZXJsYXlRdWFkQnVmZmVyLCBvdmVybGF5UXVhZFZlcnRpY2VzLCBzaXpl
b2Yob3ZlcmxheVF1YWRWZXJ0aWNlcykpOwogICAgIG92ZXJsYXlRdWFkLT5VbmxvY2soKTsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4oc2Nl
bmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RDNEUG9zdFBy
b2Nlc3NpbmdDb250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKIH0KIAogLy8gRklY
TUU6IDxyZGFyOi8vNjUwNzg1MT4gU2hhcmUgdGhpcyBjb2RlIHdpdGggQ29yZUFuaW1hdGlvbidz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNw
cAppbmRleCA3YmQ5ODg5NjExMWMzYjNmZTZmZTU0ZjBhMjQ3OTY2MDZiMjJhNzVmLi5iMjBiYWNk
NjI5ZWI1YWMwZDI3MjA0MmQ4NzhiMTYwZTg0NWFjMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
c3RydWN0IFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGUgewogSVdlYk5vdGlmaWNhdGlvbkNl
bnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjptX2RlZmF1bHRDZW50ZXIgPSAwOwogCiBXZWJO
b3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCi0gICAgOiBkKHN0ZDo6
bWFrZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKKyAgICA6IGQobWFr
ZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0Nv
dW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggOTc2MTQ4ZTMzZjc0NDZkN2Mz
ODQ5OTU5ZDZjZjczZGVmNDhmNjdmZi4uOTJkMzlhYzRiYzVhMDVlZWMxNGRkMWVhYjQwOTUxNmY0
NDQ2NGQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE4ODAsNyArMTg4
MCw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlTW91c2VFdmVudChVSU5UIG1lc3NhZ2UsIFdQQVJB
TSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgICAgIG1vdXNlRXZlbnQuc2V0Q2xpY2tDb3Vu
dChnbG9iYWxDbGlja0NvdW50KTsKICAgICAgICAgaGFuZGxlZCA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkuZXZlbnRIYW5kbGVyKCkubW91c2VNb3ZlZChtb3VzZUV2ZW50KTsKICAgICAgICAgaWYgKCFt
X21vdXNlT3V0VHJhY2tlcikgewotICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRSQUNLTU9VU0VFVkVOVD4oKTsKKyAgICAgICAgICAgIG1fbW91c2VPdXRU
cmFja2VyID0gbWFrZVVuaXF1ZTxUUkFDS01PVVNFRVZFTlQ+KCk7CiAgICAgICAgICAgICBtX21v
dXNlT3V0VHJhY2tlci0+Y2JTaXplID0gc2l6ZW9mKFRSQUNLTU9VU0VFVkVOVCk7CiAgICAgICAg
ICAgICBtX21vdXNlT3V0VHJhY2tlci0+ZHdGbGFncyA9IFRNRV9MRUFWRTsKICAgICAgICAgICAg
IG1fbW91c2VPdXRUcmFja2VyLT5od25kVHJhY2sgPSBtX3ZpZXdXaW5kb3c7CkBAIC02Nzk0LDcg
KzY3OTQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUo
X0luXyBCU1RSIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYg
KCFtX2VtYmVkZGVkVmlld01JTUVUeXBlcykKLSAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlw
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgbV9lbWJl
ZGRlZFZpZXdNSU1FVHlwZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKIAogICAg
IG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzLT5hZGQodG9TdHJpbmcobWltZVR5cGUpKTsKICAgICBy
ZXR1cm4gU19PSzsKQEAgLTY4OTQsNyArNjg5NCw3IEBAIHZvaWQgV2ViVmlldzo6ZW50ZXJWaWRl
b0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50
CiAgICAgICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyKTsKICAgICB9CiAK
LSAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI+KCk7CisgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyPigpOwogICAgIG1fZnVsbFNj
cmVlblZpZGVvQ29udHJvbGxlci0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwogICAg
IG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYK
QEAgLTY5NDYsNyArNjk0Niw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3Jv
dXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJl
dF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdW
ZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCisgICAgYXV0byB1c2VyU2NyaXB0ID0g
bWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9y
KHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLAogICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFj
a2xpc3QsIGJsYWNrbGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3Vt
ZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLAog
ICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdElu
QWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNv
bnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZSh1
c2VyU2NyaXB0KSk7CkBAIC02OTczLDcgKzY5NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVz
ZXJTdHlsZVNoZWV0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2Ny
aQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxk
ID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7Ci0gICAgYXV0byBz
dHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VS
TCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJp
bmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksCisgICAgYXV0byBzdHlsZVNoZWV0
ID0gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmlu
Z1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2ts
aXN0LCBibGFja2xpc3RDb3VudCksCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVj
dEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwg
VXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxl
cigpLmFkZFVzZXJTdHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHN0eWxlU2hlZXQp
LCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTcyMzcs
NyArNzIzNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29s
IGFjY2VsZXJhdGVkKQogICAgIH0KICNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBp
ZiAoYWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAg
ICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVy
YXRlZDsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29I
ZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAppbmRleCBlZWNhNzM5ZDJi
Mzk0ZTg2MDM1MWJhMWI0NjRkZTU0NzhiOWJiMTY3Li5kYjM2ZWI5ZGVkMmI5ZTBmNWY2ZWY0MGRi
NmM2OTkxOWE3MzA2ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hl
YXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaApAQCAtODIsNiArODIs
NyBAQCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNp
emUpID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRl
bGV0ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwK
IHR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZE1hY3JvU2VtaWNvbG9uaWZpZXIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oCmluZGV4IGMwNDRkNzczYjg3OWE2NmRm
YWRkMmUyY2EzMTVlZWVhMzc2ZmZhNGEuLjNhYTFkMjA5NTFkYmYzMzY0ZTdkMTZkZDIzNjQzZDBj
ZDk3ZjZmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKQEAgLTEy
Myw2ICsxMjMsNyBAQCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90IHNpemUpID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSA9IGRlbGV0ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHBy
aXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1hY3JvU2VtaWNv
bG9uaWZpZXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDYyZmYzZWViMmQ3MGMwOTgwMTE0ZGMxODdjNzBmOTgwM2YxY2U5MDguLjBiYTc1OWU0
NmZlNDFjMjhhMjljNWI0Y2YxYWU0YWY4ZjI2ZWMzZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzMgQEAKKzIwMTktMDgtMTMg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQg
bWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoYWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKToKKyAg
ICAgICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAo
VGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCk6CisgICAgICAgIChUZXN0
UnVubmVyOjpydW5VSVNjcmlwdCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxG
aWxlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgIChldmVudFByZXNzZWRNb3VzZUJ1
dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0RSVERhdGFPYmplY3QuY3BwOgorICAgICAgICAoRFJURGF0YU9iamVjdDo6U2V0RGF0YSk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAg
ICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAgICAgICAoRFJUVW5kb01hbmFn
ZXI6OkRSVFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUpOgor
ICAgICAgICAoVUlEZWxlZ2F0ZTo6cmVzZXRVbmRvTWFuYWdlcik6CisgICAgICAgICogTWluaUJy
b3dzZXIvd3BlL21haW4uY3BwOgorICAgICAgICAoY3JlYXRlVmlld0JhY2tlbmQpOgorICAgICAg
ICAobWFpbik6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250ZXh0Lmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01l
dGhvZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db3VudGVycy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6cnVuSlNUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdFbnN1cmUpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdE1vdmluZ1VzaW5nQWRkKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0xvY2suY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuTG9ja1Rlc3Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VmFyaWFudC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdC
dWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q0FSaW5nQnVmZmVyVGVzdDo6U2V0
VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZh
bHVlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVRlc3RWYWx1ZSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29r
aWVzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21X
aXRoaW5DcmVhdGVQYWdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1Bh
Z2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJ
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGlu
Zy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2Uu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlw
VGVzdDo6U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxM
b2FkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdDJXaWxsTG9hZFRlc3Q6OlNl
dFVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdo
dEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpG
b3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlVGVzdDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24u
Y3BwOgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRo
ZW50aWNhdGlvblByb3h5SFRUUFMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2lu
ZG93VGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3Jt
VXRpbGl0aWVzQ29jb2EubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAg
ICAoYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVBy
b3ZpZGVycyk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1
cmF0aW9uOmFkZFRvV2luZG93Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9U
ZXN0Rm9udE9wdGlvbnMubW06CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBpbml0V2l0aEZv
bnRPcHRpb25zOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94
eS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2su
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpj
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpzZXRPcGVuUGFuZWxGaWxlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oOgorICAgICAgICAoV1RSOjp0b1NURCk6CisgICAgICAg
IChXVFI6OnRvV1RGU3RyaW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFs
dWVzKToKKyAgICAgICAgKFdUUjo6Y3JlYXRlVGVzdFVSTCk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpydW5UZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtQ3JlYXRlV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChX
VFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVGVzdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5Ojptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5Ojptb3VzZVVwKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3Zl
VG8pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUu
Y3BwOgorICAgICAgICAoV1RSOjp3cGVLZXlTeW1Gb3JLZXlSZWYpOgorCiAyMDE5LTA4LTEyICBU
YWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29tPgogCiAgICAgICAgIFtXVEZd
IFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdlYWsgcG9pbnRlcnMuCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGU4MTdhNTczYTU4ZDE1OWQ0Y2YyMzQ5ODJj
Y2EwNGRjZDY0YjYwNGEuLjhmMTNlZTAwM2EzZGUwYTBkOTQ4NjExOTEzMjJmMzRmOGFkZWVkMjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0zNjMsMTEgKzM2MywxMSBAQCBz
dGF0aWMgSlNWYWx1ZVJlZiBhZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bgogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBz
aXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKG9yaWdp
bi5nZXQoKSk7Ci0gICAgYXV0byBvcmlnaW5CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5n
R2V0VVRGOENTdHJpbmcob3JpZ2luLmdldCgpLCBvcmlnaW5CdWZmZXIuZ2V0KCksIG1heExlbmd0
aCArIDEpOwogCiAgICAgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKGRlc3RpbmF0aW9uLmdldCgpKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gZGVzdGluYXRp
b25CdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExl
bmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCks
IGRlc3RpbmF0aW9uQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFRlc3RSdW5u
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2
YXRlKHRoaXNPYmplY3QpKTsKQEAgLTEzMDQsNyArMTMwNCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTCiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAogICAgIHNpemVfdCBtYXhMZW5ndGgg
PSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoaGVhZGVyLmdldCgpKTsKLSAgICBh
dXRvIGhlYWRlckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAx
KTsKKyAgICBhdXRvIGhlYWRlckJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyho
ZWFkZXIuZ2V0KCksIGhlYWRlckJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBU
ZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0yMzc5LDcgKzIzNzksNyBAQCB2b2lkIFRlc3RS
dW5uZXI6OnNldFNob3VsZFBhaW50QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbklt
YWdlKQogdm9pZCBUZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3Ry
aW5nUmVmIGNoYW5uZWwpCiB7CiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShjaGFubmVsKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAg
SlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhjaGFubmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCAr
IDEpOwogCiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRl
KHsgYnVmZmVyLmdldCgpIH0pOwpAQCAtMjQ0OSw3ICsyNDQ5LDcgQEAgdm9pZCBUZXN0UnVubmVy
OjpydW5VSVNjcmlwdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBK
U1ZhbHVlUmUKICAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhjYWxsYmFja0lELCBjYWxsYmFj
ayk7CiAKICAgICBpZiAoIW1fVUlTY3JpcHRDb250ZXh0KQotICAgICAgICBtX1VJU2NyaXB0Q29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAg
ICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxXVFI6OlVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOwogCiAgICAgU3RyaW5nIHNjcmlwdFN0cmlu
ZyhKU1N0cmluZ0dldENoYXJhY3RlcnNQdHIoc2NyaXB0KSwgSlNTdHJpbmdHZXRMZW5ndGgoc2Ny
aXB0KSk7CiAgICAgbV9VSVNjcmlwdENvbnRleHQtPnJ1blVJU2NyaXB0KHNjcmlwdFN0cmluZywg
Y2FsbGJhY2tJRCk7CkBAIC0yNTA2LDcgKzI1MDYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9w
ZW5QYW5lbEZpbGVzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGZpbGVzVmFsdWUp
CiAKICAgICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBmaWxlVmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0g
SlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAg
ICAgYXV0byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJT
aXplKTsKKyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRG
OENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwog
CiAgICAgICAgIG1fb3BlblBhbmVsRmlsZXMucHVzaF9iYWNrKGZpbGVCdWZmZXIuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDY0ZGIxZDE3
ZjliYzljYjhjZTZkODJmOWI3N2RiZjM4NzVhY2EwY2EuLjk1N2M0ZTYzOTU5MTE4NjM1ZDcyMjE1
ZTBjYWM3Y2I2ZmQ3MjBjZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KQEAgLTE1MzUsNyArMTUzNSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1l
c0FzVGV4dChXZWJGcmFtZSAqZnJhbWUpCiAgICAgLy8gdGhlIHJlc3VsdCB3aXRob3V0IGFueSBj
b252ZXJzaW9uLgogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpbm5l
clRleHQpKTsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShzdHJpbmdSZWYuZ2V0KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qg
c3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmdSZWYu
Z2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgW3Jlc3VsdCBhcHBlbmRGb3Jt
YXQ6QCIlQFxuIiwgU3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0
KCksIHN0cmluZ0xlbmd0aCAtIDEpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4
IDQ2MWJkM2RmM2ViYjI2MDNhYzMyMTgyODgyMThkZDhmNjkxNjhmZmQuLjNiZTMzMjIxZDZiM2Vi
YzM1NmQ1MWUzMzRhMjRkOTI5YWUyNTNhOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCkBAIC01NjgsNyArNTY4LDcgQEAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBldmVudFByZXNzZWRNb3Vz
ZUJ1dHRvbnNTd2l6emxlckZvclYKIHsKICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2Vi
SFRNTFZpZXcgY2xhc3NdXSkKICAgICAgICAgdmlldyA9IFsoV2ViSFRNTFZpZXcgKil2aWV3IF9o
aXRWaWV3Rm9yRXZlbnQ6ZXZlbnRdOwotICAgIHJldHVybiAhW3ZpZXcgaXNLaW5kT2ZDbGFzczpb
TlNTY3JvbGxlciBjbGFzc11dID8gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVy
PihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSkgOiBOVUxM
OworICAgIHJldHVybiAhW3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11dID8g
bWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3Rv
cihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zKSkgOiBOVUxMOwogfQogCiBzdGF0aWMgTlNVSW50ZWdlciBz
d2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRFJURGF0YU9iamVjdC5jcHAKaW5kZXggZWYyZDJlZmI4NTlmNGI4YTIyZjMwYzQ2N2FjZTFm
OGFhZDE1N2E0ZC4uNzZhMjFhNThhOWY2NmRkZTE2MDcyOWY4ZmVlMWUxNWY5NDllNjYyNCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcApAQCAtMjQ5LDcgKzI0
OSw3IEBAIFNURE1FVEhPRElNUCBEUlREYXRhT2JqZWN0OjpTZXREYXRhKF9Jbl8gRk9STUFURVRD
KiBwZm9ybWF0ZXRjLCBfSW5fIFNUR01FRElVTSoKICAgICBpZiAoIXBmb3JtYXRldGMgfHwgIXBt
ZWRpdW0pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBhdXRvIGZvcm1hdGV0YyA9
IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFURVRDPigpOworICAgIGF1dG8gZm9ybWF0ZXRjID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTVEdNRURJVU0sIFN0Z01lZGl1bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElV
TSk7CiAKICAgICBaZXJvTWVtb3J5KGZvcm1hdGV0Yy5nZXQoKSwgc2l6ZW9mKEZPUk1BVEVUQykp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRl
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKaW5k
ZXggYzgwZGYxYmU1ZjJkZTQ3ZDNiODMxNjM3ZWY2ZTlmYmNkOTM0YzhlNi4uMTFjOTMzOWIxNmQ4
MDRkMmMyMDFjOTMyOWY0YThjMzU0NDJhODNjYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCkBAIC03Miw5ICs3Miw5IEBAIHN0cmluZyBkZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChJV2ViRnJhbWUqIHdlYkZyYW1lKQogfQogCiBG
cmFtZUxvYWREZWxlZ2F0ZTo6RnJhbWVMb2FkRGVsZWdhdGUoKQotICAgIDogbV9nY0NvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCi0gICAgLCBtX2FjY2Vzc2liaWxp
dHlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+KCkp
Ci0gICAgLCBtX3RleHRJbnB1dENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5wdXRD
b250cm9sbGVyPigpKQorICAgIDogbV9nY0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxHQ0NvbnRyb2xs
ZXI+KCkpCisgICAgLCBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKG1ha2VVbmlxdWU8QWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX3RleHRJbnB1dENvbnRyb2xsZXIobWFrZVVu
aXF1ZTxUZXh0SW5wdXRDb250cm9sbGVyPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVUlEZWxlZ2F0ZS5jcHAKaW5kZXggZjBhZGJjZTQ3OTZmYWJmNGYwZDQyYjI3MTE2MzM3MDFh
Yzc4MTMxNC4uNDdhYTI3MmJmMTk1Y2Q5YTI1YWYyODY1NWQzNzFmNDE2MDBmNDU5OCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcApAQCAtMTAxLDggKzEwMSw4IEBAIGNs
YXNzIERSVFVuZG9NYW5hZ2VyIHsKIH07CiAKIERSVFVuZG9NYW5hZ2VyOjpEUlRVbmRvTWFuYWdl
cigpCi0gICAgOiBtX3JlZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9TdGFjaz4oKSkK
LSAgICAsIG1fdW5kb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb1N0YWNrPigpKQorICAg
IDogbV9yZWRvU3RhY2sobWFrZVVuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCisgICAgLCBtX3VuZG9T
dGFjayhtYWtlVW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKIHsKIH0KIApAQCAtMTQ2LDcgKzE0Niw3
IEBAIHZvaWQgRFJUVW5kb01hbmFnZXI6OnVuZG8oKQogfQogCiBVSURlbGVnYXRlOjpVSURlbGVn
YXRlKCkKLSAgICA6IG1fdW5kb01hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdl
cj4oKSkKKyAgICA6IG1fdW5kb01hbmFnZXIobWFrZVVuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkK
ICAgICAsIG1fZGVza3RvcE5vdGlmaWNhdGlvbnMobmV3IERSVERlc2t0b3BOb3RpZmljYXRpb25Q
cmVzZW50ZXIpCiB7CiAgICAgbV9mcmFtZS5ib3R0b20gPSAwOwpAQCAtMTU3LDcgKzE1Nyw3IEBA
IFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUoKQogCiB2b2lkIFVJRGVsZWdhdGU6OnJlc2V0VW5kb01h
bmFnZXIoKQogewotICAgIG1fdW5kb01hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9N
YW5hZ2VyPigpOworICAgIG1fdW5kb01hbmFnZXIgPSBtYWtlVW5pcXVlPERSVFVuZG9NYW5hZ2Vy
PigpOwogfQogCiBIUkVTVUxUIFVJRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3Bw
CmluZGV4IGJlNjQ2MGU1NmI3YjcwY2QyNDgwZmM4N2RlMmI5YmE5NzBlNThjMzguLjQzOTE5Mjk3
OTFkZDY3MTMxYzg1OGExNjY4OWM1MmJhZGMxZGQ4NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAK
QEAgLTEyOSw4ICsxMjksOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gZGVjaWRlUGVybWlzc2lvblJlcXVl
c3QoV2ViS2l0V2ViVmlldyAqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdAogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxXUEVUb29saW5nQmFja2VuZHM6OlZpZXdCYWNrZW5kPiBjcmVhdGVWaWV3QmFj
a2VuZCh1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQogewogICAgIGlmIChoZWFkbGVz
c01vZGUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5k
czo6SGVhZGxlc3NWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpXaW5kb3dWaWV3QmFja2VuZD4od2lkdGgs
IGhlaWdodCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6
SGVhZGxlc3NWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpXaW5kb3dWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7
CiB9CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTI1MSw3ICsyNTEsNyBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciAqYXJndltdKQogICAgICAgICBudWxscHRyKSk7CiAgICAgZ19vYmplY3RfdW5y
ZWYoc2V0dGluZ3MpOwogCi0gICAgYmFja2VuZFB0ci0+c2V0SW5wdXRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxJbnB1dENsaWVudD4obG9vcCwgd2ViVmlldykpOworICAgIGJhY2tlbmRQdHItPnNl
dElucHV0Q2xpZW50KG1ha2VVbmlxdWU8SW5wdXRDbGllbnQ+KGxvb3AsIHdlYlZpZXcpKTsKICNp
ZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCiAgICAg
YXV0byogYWNjZXNzaWJsZSA9IHdwZV92aWV3X2JhY2tlbmRfZGlzcGF0Y2hfZ2V0X2FjY2Vzc2li
bGUod3BlQmFja2VuZCk7CiAgICAgaWYgKEFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRleHQuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udGV4dC5oCmluZGV4IDRlMDIwZjE5NmNkMDMzZDYxZWUwZTYyOGY2YTFlNTljYTFjMzM0NTgu
LjBiODRkMmQ0NTQ1NTgzZGU5ZmMwZGVjMTJhNGFhODhhNjU5ZWQxOTggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCisr
KyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4
dC5oCkBAIC02OCw2ICs2OCw3IEBAIHR5cGVkZWYgZW51bSAgewogfSBDYWxsYmFja1R5cGU7CiAK
IGNsYXNzIFVJU2NyaXB0Q29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVUlTY3JpcHRDb250ZXh0KTsKIHB1YmxpYzoKICAgICBV
SVNjcmlwdENvbnRleHQoVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUmKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oIGIvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKaW5kZXggMjhkYjEw
YTQ3OTk2MzBjNjRjNTVkMDc4NmMwMGVlMDk0ODkxNDVlMi4uMzliNGU1ZWE3MTgzNjg4Y2RlYzli
ZWZjYzk2NGNlODkzYTU0M2YwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9j
b2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9j
b2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKQEAgLTI2LDkgKzI2LDExIEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPG9iamMvcnVudGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIGNsYXNzIENsYXNzTWV0aG9kU3dp
enpsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENsYXNzTWV0aG9kU3dpenpsZXIpOwogcHVibGljOgogICAgIENsYXNzTWV0aG9kU3dp
enpsZXIoQ2xhc3MsIFNFTCwgSU1QKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q291bnRlcnMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaAppbmRleCBmOWVhMjI0
MDI2MTUwZDhlMWFjNmJiNzYxNWI2ZGUzODkwYWY2NzBlLi5hYjVjNTJmNzVkMWFjNmFmOTYwYWMx
NGNhNzBiNWNiNzRmYTM2Mjg4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50
ZXJzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCkBAIC0yNyw2ICsyNyw4
IEBACiAjaWZuZGVmIENvdW50ZXJzX2gKICNkZWZpbmUgQ291bnRlcnNfaAogCisjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KKwogc3RydWN0IENvcHlNb3ZlQ291bnRlciB7CiAgICAgc3RhdGlj
IHVuc2lnbmVkIGNvbnN0cnVjdGlvbkNvdW50OwogICAgIHN0YXRpYyB1bnNpZ25lZCBjb3B5Q291
bnQ7CkBAIC01MCw2ICs1Miw3IEBAIHN0cnVjdCBDb3B5TW92ZUNvdW50ZXIgewogCiAKIHN0cnVj
dCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkNvdW50OwogICAg
IHN0YXRpYyB1bnNpZ25lZCBkZXN0cnVjdGlvbkNvdW50OwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2
YVNjcmlwdFRlc3QuY3BwCmluZGV4IDIxMzZlOThkOGViYjg3NWQ1OTdmYzZlMDdjN2IwMWVkNWI4
NGFlMTYuLjZhMjMzNjMyOTQxYWNmNjA3MDU5NDk0MjY0MDFiMzI3MzM3YzcwODEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwCkBAIC03NSw3ICs3NSw3IEBAIDo6dGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0IHJ1bkpTVGVzdChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqLCBXS1BhCiAgICAgVXRpbDo6cnVuKCZjb250ZXh0LmRpZEZpbmlzaCk7CiAKICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShj
b250ZXh0LmFjdHVhbFN0cmluZy5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIEpTU3RyaW5n
R2V0VVRGOENTdHJpbmcoY29udGV4dC5hY3R1YWxTdHJpbmcuZ2V0KCksIGJ1ZmZlci5nZXQoKSwg
YnVmZmVyU2l6ZSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbXBhcmVKU1Jlc3VsdChzY3JpcHQsIGJ1
ZmZlci5nZXQoKSwgZXhwZWN0ZWRSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
VXRpbGl0aWVzLmNwcAppbmRleCA4ZjhkNzY4YTUzYzI3NTFhMjQzZTA1OTVlMmMwYzBmNDQ1ZGQ5
NmM4Li5iYmJmZjcwOWU2N2QzNTliNGU0ODE3MWVkN2M0YzI0MDA4YTU2N2Y0IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcApAQCAtNjksNyArNjksNyBAQCBXS0Nv
bnRleHRSZWYgY3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0
cmluZyYgdGVzdE5hbWUsIFdLVAogc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5n
KQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJp
bmdTaXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGgg
PSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXpl
KTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAx
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmgg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGFkMmE3MzJkNTE5
NDdiYmM3YWZjNjRlMjdkNDIxNWNlMzI4N2RkZWUuLjBjMjdhNDYxNjQ1ZmJhMTJhNWM2OTVkOTMy
NjQzMDUyNmM0ZWYxMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1X
ZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaApAQCAt
MjYsNiArMjYsOCBAQAogI2lmbmRlZiBQbGF0Zm9ybVdlYlZpZXdfaAogI2RlZmluZSBQbGF0Zm9y
bVdlYlZpZXdfaAogCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKwogI2lmIFVTRShDRykK
ICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgogI2VuZGlmCkBAIC02Myw2ICs2
NSw3IEBAIHR5cGVkZWYgdWludDMyX3QgV0tFdmVudE1vZGlmaWVyczsKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdl
Q29uZmlndXJhdGlvblJlZik7CiAgICAgZXhwbGljaXQgUGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4
dFJlZiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0V4cGVjdGVkLmNwcAppbmRleCA0YjEwYzg2YTJhYjczMmUxZWE2Mjc0ODRjYzc4OTQwZmI2Y2Q2
ZTk2Li4yYTA2ZjhiYTVjYTlmZWI0OTJhMzUyMmM1YzY1NTAxMzhkMjIzN2U1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCkBAIC00MDcsNiArNDA3LDcgQEAg
VEVTVChXVEZfRXhwZWN0ZWQsIGRlc3RydWN0b3JzKQogc3RhdGljIGludCBzbm93Zmxha2VzID0g
MDsKIHN0YXRpYyBpbnQgbWVsdGVkID0gMDsKIHN0cnVjdCBzbm93Zmxha2UgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdm9pZCByZXNldCgpIHsgc25v
d2ZsYWtlcyA9IG1lbHRlZCA9IDA7IH0KICAgICBzbm93Zmxha2UoKSB7ICsrc25vd2ZsYWtlczsg
fQogICAgIH5zbm93Zmxha2UoKSB7ICsrbWVsdGVkOyB9CkBAIC00MTYsNyArNDE3LDcgQEAgVEVT
VChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiB7CiAgICAgLy8gVW5pcXVlIHNub3dmbGFrZXMg
Y2Fubm90IGJlIGNvcGllZC4KICAgICB7Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVk
KHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVu
ZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBFWFBFQ1RfRVEoc25v
d2ZsYWtlcywgMSk7CiAgICAgICAgIEVYUEVDVF9FUShtZWx0ZWQsIDApOwogICAgIH0KQEAgLTQy
NSw3ICs0MjYsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxh
a2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKHN0
ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVuZXhw
ZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBVbmV4cGVjdGVkPHN0ZDo6
dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBjKFdURk1vdmUocykpOwogICAgICAgICBFWFBFQ1RfRVEo
c25vd2ZsYWtlcywgMSk7CiAgICAgICAgIEVYUEVDVF9FUShtZWx0ZWQsIDApOwpAQCAtNDQ2LDcg
KzQ0Nyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIH07CiAKICAgICB7
Ci0gICAgICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMoc3Rk
OjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBFeHBlY3RlZDxzdGQ6OnVuaXF1
ZV9wdHI8c25vd2ZsYWtlPiwgaW50PiBzKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAg
ICAgcGxvdyhXVEZNb3ZlKHMpLnZhbHVlKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2Zs
YWtlcywgMSk7CkBAIC00NTQsNyArNDU1LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9w
dHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDxp
bnQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFr
ZV91bmlxdWU8c25vd2ZsYWtlPigpKSk7CisgICAgICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlx
dWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+
KCkpKTsKICAgICAgICAgcGxvdyhXVEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAgICBFWFBF
Q1RfRVEoc25vd2ZsYWtlcywgMSk7CkBAIC00NjIsNyArNDYzLDcgQEAgVEVTVChXVEZfRXhwZWN0
ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAg
ICBFeHBlY3RlZDx2b2lkLCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBl
Y3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSkpOworICAgICAgICBFeHBlY3RlZDx2
b2lkLCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5p
cXVlPHNub3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAg
ICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAppbmRleCA4NGRhNWVjM2ZmYzI0OGFj
ZGQ5ZTM2MzMwMzhjNjlkYWU4OTEyMDk5Li43YjhmYWYyODhhYmMwN2NmYWY4YjUyNzEyMzhmNzZk
MDEzMDEyZWU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNo
Q291bnRlZFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENv
dW50ZWRTZXQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQs
IFVuaXF1ZVB0cktleSkKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcj4oKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsK
IAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3Ry
dWN0aW9uQ291bnQpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0
LCBVbmlxdWVQdHJLZXlJbml0aWFsQ291bnQpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVu
aXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0Owog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUo
dW5pcXVlUHRyKSwgMTIpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yOTgsNyArMjk4LDcgQEAgVEVTVChX
VEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewog
ICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsK
IAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1
dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsK
ICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQo
V1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIFRFU1QoV1RGX0hhc2hD
b3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAg
SGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0g
ICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1
bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAg
IGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZN
b3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgVEVTVChXVEZfSGFzaENvdW50
ZWRTZXQsIFVuaXF1ZVB0cktleV9HZXRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50
ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRy
ID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1
ZVB0cikpOwogCkBAIC0zMzcsNyArMzM3LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVu
aXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoQ291bnRlZFNldDxz
dGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVk
U2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChX
VEZNb3ZlKHVuaXF1ZVB0cikpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9IYXNoTWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hN
YXAuY3BwCmluZGV4IDFlMTYzZDM4OTk4ZTZiYWJmZmY1Mzg0MTNjY2EyOGFhNmQyOTg5ODIuLmE4
MGNhNzQ5NGE4ZjlhNzk2N2UxZTQ5NDZmZThjY2E2MzljYmI1OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChXVEZf
SGFzaE1hcCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7Cisg
ICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCiAgICAgRVhQRUNU
X0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7
CkBAIC0yMzAsNyArMjMwLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0ZpbmRV
c2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50
PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsK
KyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGlu
dD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZN
b3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChXVEZfSGFzaE1h
cCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8
c3RkOjp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRy
LmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjU1LDcg
KzI1NSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9HZXRVc2luZ1Jhd1BvaW50
ZXIpCiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAg
aW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0
ciksIDIpOwogCkBAIC0yNjksNyArMjY5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRy
S2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRy
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5p
cXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1
ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI4
OSw3ICsyODksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfVGFrZVVzaW5nUmF3
UG9pbnRlcikKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVl
UHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBt
YXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTU2MywxMiArNTYzLDEyIEBAIFRF
U1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9VbmlxdWVQb2ludGVyKQogewogICAgIEhhc2hNYXA8dW5z
aWduZWQsIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZD4+IG1hcDsKICAgICB7Ci0gICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PHVuc2lnbmVkPigxKTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmVuc3VyZSgx
LCBbXSB7IHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZD4o
MSk7IH0pOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICptYXAuZ2V0KDEpKTsKICAgICAgICAgRVhQ
RUNUX0VRKDF1LCAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgxdSwgYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXkpOwogICAgICAgICBFWFBFQ1RfVFJV
RShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5l
bnN1cmUoMSwgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMik7IH0pOwor
ICAgICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkPigyKTsgfSk7CiAgICAgICAgIEVY
UEVDVF9FUSgxdSwgKm1hcC5nZXQoMSkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1
bHQyLml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgYWRkUmVz
dWx0Mi5pdGVyYXRvci0+a2V5KTsKQEAgLTU5MCw2ICs1OTAsNyBAQCBURVNUKFdURl9IYXNoTWFw
LCBFbnN1cmVfUmVmUHRyKQogfQogCiBjbGFzcyBPYmplY3RXaXRoUmVmTG9nZ2VyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmplY3RXaXRoUmVmTG9nZ2Vy
KFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogICAgICAgICA6IG1fbG9nZ2VyKFdURk1vdmUobG9n
Z2VyKSkKQEAgLTYwNCw3ICs2MDUsNyBAQCB2b2lkIHRlc3RNb3ZpbmdVc2luZ0Vuc3VyZShSZWY8
UmVmTG9nZ2VyPiYmIGxvZ2dlcikKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1
ZV9wdHI8T2JqZWN0V2l0aFJlZkxvZ2dlcj4+IG1hcDsKICAgICAKLSAgICBtYXAuZW5zdXJlKDEs
IFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1v
dmUobG9nZ2VyKSk7IH0pOworICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIG1ha2VVbmlx
dWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CiB9CiAKIHZvaWQg
dGVzdE1vdmluZ1VzaW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQpAQCAtNjEyLDcgKzYx
Myw3IEBAIHZvaWQgdGVzdE1vdmluZ1VzaW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQog
ICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2Vy
Pj4gbWFwOwogCiAgICAgYXV0byYgc2xvdCA9IG1hcC5hZGQoMSwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOwotICAgIHNsb3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+
KFdURk1vdmUobG9nZ2VyKSk7CisgICAgc2xvdCA9IG1ha2VVbmlxdWU8T2JqZWN0V2l0aFJlZkxv
Z2dlcj4oV1RGTW92ZShsb2dnZXIpKTsKIH0KIAogVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX0xh
bWJkYXNDYXB0dXJpbmdCeVJlZmVyZW5jZSkKQEAgLTY4Myw2ICs2ODQsNyBAQCBURVNUKFdURl9I
YXNoTWFwLCBWYWx1ZUlzRGVzdHJ1Y3RlZE9uUmVtb3ZlKQogVEVTVChXVEZfSGFzaE1hcCwgUmVm
UHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiB7CiAgICAgc3RydWN0IERlcmVmT2JzZXJ2ZXIgewor
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIE5FVkVSX0lO
TElORSB2b2lkIHJlZigpCiAgICAgICAgIHsKICAgICAgICAgICAgICsrY291bnQ7CkBAIC02OTcs
NyArNjk5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYp
CiAgICAgICAgIGNvbnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2VydmVkQnVja2V0IHsgbnVsbHB0ciB9
OwogICAgIH07CiAKLSAgICBhdXRvIG9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJlZk9i
c2VydmVyPigpOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERlcmVmT2JzZXJ2ZXI+
KCk7CiAKICAgICBIYXNoTWFwPFJlZlB0cjxEZXJlZk9ic2VydmVyPiwgaW50PiBtYXA7CiAgICAg
bWFwLmFkZChhZG9wdFJlZihvYnNlcnZlci5nZXQoKSksIDUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoU2V0LmNwcAppbmRleCA3MWVjZmRkYjg0MmI2YmQ1MTY0MWNhMDViNjEw
OGFkNDhmNjJiYjdkLi44NzI2OGM3NGYwY2I4ZmMxNDllYmY2MGM4NTg4ZmNlZDM1ODFhMjA1IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcApAQCAtMTI4LDcgKzEy
OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleSkKIAogICAgIEhhc2hTZXQ8c3Rk
Ojp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBh
dXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4oKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAg
ICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlv
bkNvdW50KTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJL
ZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxp
bnQ+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChX
VEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgVEVTVChXVEZfSGFzaFNl
dCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8
c3RkOjp1bmlxdWVfcHRyPGludD4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQo
KTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE3MSw3ICsxNzEsNyBA
QCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQog
CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUo
dW5pcXVlUHRyKSk7CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlx
dWVQdHJLZXlfVGFrZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVf
cHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1
ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsK
KyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQ
dHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0yODMsNiAr
MjgzLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgQ29weUNhcGFjaXR5SXNOb3RPbkJvdW5kYXJ5KQog
VEVTVChXVEZfSGFzaFNldCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiB7CiAgICAgc3Ry
dWN0IERlcmVmT2JzZXJ2ZXIgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIHJlZigpCiAgICAgICAgIHsKICAgICAgICAg
ICAgICsrY291bnQ7CkBAIC0yOTcsNyArMjk4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgUmVmUHRy
Tm90WmVyb2VkQmVmb3JlRGVyZWYpCiAgICAgICAgIGNvbnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2Vy
dmVkQnVja2V0IHsgbnVsbHB0ciB9OwogICAgIH07CiAKLSAgICBhdXRvIG9ic2VydmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxEZXJlZk9ic2VydmVyPigpOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBtYWtl
VW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxEZXJlZk9ic2Vy
dmVyPj4gc2V0OwogICAgIHNldC5hZGQoYWRvcHRSZWYob2JzZXJ2ZXIuZ2V0KCkpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcAppbmRleCA2NTdiZTQx
ZDYyMDcyNDQ2N2E1NTQ5ZTJhYjVhMTk0MWM0ZTM3M2MxLi5iNzcwYTViMjdjMWQyYjA5NWE1YmI1
OWQ2NWFjM2Y0ZGM0ZTRlNjhlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9MaXN0SGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
TGlzdEhhc2hTZXQuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQs
IFVuaXF1ZVB0cktleSkKIAogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8g
dW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwog
ICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTM5Niw3
ICszOTYsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jh
d1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBh
dXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7
CiAgICAgYXV0byBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1
bmlxdWVQdHIpKTsKIApAQCAtNDEwLDcgKzQxMCw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBV
bmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8
c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgYXV0byBwdHIgPSB1bmlxdWVQdHIuZ2V0
KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtNDIxLDkgKzQyMSw5
IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfSW5zZXJ0QmVmb3JlVXNpbmdS
YXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0
OwogCi0gICAgYXV0byB1bmlxdWVQdHJXaXRoMiA9IHN0ZDo6bWFrZV91bmlxdWU8aW50PigyKTsK
KyAgICBhdXRvIHVuaXF1ZVB0cldpdGgyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8aW50PigyKTsKICAgICBhdXRvIHB0cldpdGgyID0gdW5pcXVlUHRyV2l0aDIuZ2V0KCk7Ci0g
ICAgYXV0byB1bmlxdWVQdHJXaXRoNCA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig0KTsKKyAgICBh
dXRvIHVuaXF1ZVB0cldpdGg0ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50
Pig0KTsKICAgICBhdXRvIHB0cldpdGg0ID0gdW5pcXVlUHRyV2l0aDQuZ2V0KCk7CiAKICAgICBs
aXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cldpdGgyKSk7CkBAIC00MzUsNyArNDM1LDcgQEAgVEVT
VChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9JbnNlcnRCZWZvcmVVc2luZ1Jhd1BvaW50
ZXIpCiAgICAgQVNTRVJUX0VRKHB0cldpdGg0LCBsaXN0Lmxhc3QoKS5nZXQoKSk7CiAgICAgQVNT
RVJUX0VRKDQsICpsaXN0Lmxhc3QoKS5nZXQoKSk7CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgz
ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDMpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDMgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDMpOwogICAgIGF1dG8gcHRyV2l0
aDMgPSB1bmlxdWVQdHJXaXRoMy5nZXQoKTsKIAogICAgIGxpc3QuaW5zZXJ0QmVmb3JlKHB0cldp
dGg0LCBXVEZNb3ZlKHVuaXF1ZVB0cldpdGgzKSk7CkBAIC00NjIsNyArNDYyLDcgQEAgVEVTVChX
VEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAg
ICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBhdXRvKiBwdHIgPSB1bmlx
dWVQdHIuZ2V0KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcAppbmRleCAyZGNjZWRjYWRjYzZjMjIyNzNkZWJj
MjBmM2ZmNjc3Yzg3MzI5MDI3Li41ZmQzMWJmMWM5YWJlY2ZiOGFiZTczNTYwOGE0N2M1NjA0MzA0
NzcyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcApAQCAtNDIsOSArNDIs
OSBAQCBzdHJ1Y3QgTG9ja0luc3BlY3RvciB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4K
IHZvaWQgcnVuTG9ja1Rlc3QodW5zaWduZWQgbnVtVGhyZWFkR3JvdXBzLCB1bnNpZ25lZCBudW1U
aHJlYWRzUGVyR3JvdXAsIHVuc2lnbmVkIHdvcmtQZXJDcml0aWNhbFNlY3Rpb24sIHVuc2lnbmVk
IG51bUl0ZXJhdGlvbnMpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExvY2tUeXBlW10+IGxvY2tz
ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2NrVHlwZVtdPihudW1UaHJlYWRHcm91cHMpOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGRvdWJsZVtd
PihudW1UaHJlYWRHcm91cHMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltd
PiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRH
cm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NrVHlw
ZVtdPiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPExvY2tUeXBlW10+
KG51bVRocmVhZEdyb3Vwcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGRvdWJsZVtdPihudW1UaHJlYWRHcm91
cHMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFk
R3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3VwKTsKIAogICAgIGZvciAodW5zaWduZWQgdGhyZWFk
R3JvdXBJbmRleCA9IG51bVRocmVhZEdyb3VwczsgdGhyZWFkR3JvdXBJbmRleC0tOykgewogICAg
ICAgICB3b3Jkc1t0aHJlYWRHcm91cEluZGV4XSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCmluZGV4IDQ1MmUyMjc3MWRjMDY0YWRhYWZlNjIwZWIz
M2U4MDEzMGY3OWYxOTcuLmUwMGEwOWIyYTE3YWE3MzQ4NTZlNDJjMTE0NWNiZTYwODYzZjBhMDUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCkBAIC0x
ODIsNyArMTgyLDcgQEAgc3RydWN0IFNpbmdsZUxhdGNoVGVzdCB7CiAKIHZvaWQgcnVuUGFya2lu
Z1Rlc3QodW5zaWduZWQgbnVtTGF0Y2hlcywgdW5zaWduZWQgZGVsYXksIHVuc2lnbmVkIG51bVRo
cmVhZHMsIHVuc2lnbmVkIG51bVNpbmdsZVVucGFya3MpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFNpbmdsZUxhdGNoVGVzdFtdPiB0ZXN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8U2luZ2xlTGF0Y2hU
ZXN0W10+KG51bUxhdGNoZXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRjaFRlc3Rb
XT4gdGVzdHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxTaW5nbGVMYXRjaFRl
c3RbXT4obnVtTGF0Y2hlcyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGxhdGNoSW5kZXggPSBudW1M
YXRjaGVzOyBsYXRjaEluZGV4LS07KQogICAgICAgICB0ZXN0c1tsYXRjaEluZGV4XS5pbml0aWFs
aXplKG51bVRocmVhZHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVmQ291bnRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3Vu
dGVyLmNwcAppbmRleCAwODFkZjllNGZjMWQyNTFkODE0YjIyNjRiZDJkMGUwNTJjMGJkNDFmLi5m
NGVmOTgzYjFhOWZiZTg5ODA3Yzc1YWMyOGZkYjYyNmQ5YTk2YTExIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIFRF
U1QoV1RGLCBSZWZDb3VudGVyKQogVEVTVChXVEYsIFJlZkNvdW50ZXJEZWxldGVDb3VudGVyV2l0
aE91dHN0YW5kaW5nVG9rZW5zKQogewogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRl
c3RDb3VudGVyPiBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0Q291bnRlcj4oWyZdKFJl
ZkNvdW50ZXJFdmVudCBldmVudCkgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdENvdW50
ZXI+IGNvdW50ZXIgPSBtYWtlVW5pcXVlPFRlc3RDb3VudGVyPihbJl0oUmVmQ291bnRlckV2ZW50
IGV2ZW50KSB7CiAgICAgICAgICAgICBpZiAoIWNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAgICAg
ICAgICAgY291bnRlciA9IG51bGxwdHI7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKaW5kZXggNGQyYjIyYWE1NGY4YjAyNTQ4MGY1OWU1
NjFhM2NjZTcxNTUwMjMxMi4uMWFmZTNlOTc3OWJiODQ4ODdlOTQzMGRlNDE3MjZjNzQzODUzMmZk
YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwCkBAIC0z
MCw4ICszMCwxMSBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAgICAgCi1jbGFzcyBB
IHsgfTsKK2NsYXNzIEEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworfTsKIGNsYXNz
IEIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEIoaW50IGEs
IGludCBiLCBpbnQgYykKICAgICAgICAgOiBhKGEpCkBAIC00Myw2ICs0Niw3IEBAIGNsYXNzIEIg
ewogICAgIGludCBjOwogfTsKIGNsYXNzIEMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEMoVW5pcXVlUmVmPEE+JiYgYSkKICAgICAgICAgOiBhKFdURk1vdmUo
YSkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwCmluZGV4IDBlZjFm
MWRhNDRiYWM1MTU0ZmZmZDMzMjEzOTVlOWYxZTJkMmE3YzIuLjUxZWNhMDc2OGQyY2NlMWM5YTMy
OTU1NTJkMzUwMDlmZjRmZDU2YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1ZhcmlhbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Zh
cmlhbnQuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgVEVTVChXVEZfVmFyaWFudCwgQ29uc3RydWN0
b3JEZXN0cnVjdG9yKQogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OlRlc3RpbmdT
Y29wZSBzY29wZTsKIAogICAgIHsKLSAgICAgICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgICAgIGF1dG8gdW5p
cXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAg
ICAgICBWYXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PiwgaW50PiB2ID0gV1RGTW92ZSh1bmlxdWVQdHIpOwogCiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcAppbmRleCAxNTBiOWI3NmM4YTU2NWUz
NjU1NDgzNmUwYmJlYzA1MDVjNzg0OGYyLi43ZTYzMDY5M2VlYzYwNDFhMzc1MDQ0YWY5NDlkODc0
NmI2OTVjYTZiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFr
UHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcApA
QCAtNTAsNiArNTAsNyBAQCBzdHJ1Y3QgSW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEludD4g
ewogfTsKIAogY2xhc3MgQmFzZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxCYXNlPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFzZSgpIHsgfQogCkBAIC01
NzgsMTAgKzU3OSwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldEV4cGFuc2lvbikK
ICAgICAgICAgRVhQRUNUX0VRKHdlYWtIYXNoU2V0LmNhcGFjaXR5KCksIDB1KTsKICAgICAgICAg
RVhQRUNUX1RSVUUoaW5pdGlhbENhcGFjaXR5IC8gbWF4TG9hZENhcCk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBpbml0aWFsQ2FwYWNpdHkgLyBtYXhMb2FkQ2FwOyArK2kpIHsK
LSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAg
ICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3
ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZN
b3ZlKG9iamVjdCkpOwotICAgICAgICAgICAgb3RoZXJPYmplY3RzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEJhc2U+KCkpOworICAgICAgICAgICAgb3RoZXJPYmplY3RzLmFwcGVuZChtYWtlVW5p
cXVlPEJhc2U+KCkpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuY2hlY2tDb25zaXN0ZW5jeSgp
OwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShzX2Jhc2VXZWFrUmVmZXJlbmNlcywgb3Ro
ZXJPYmplY3RzLnNpemUoKSk7CkBAIC02MTUsNyArNjE2LDcgQEAgVEVTVChXVEZfV2Vha1B0ciwg
V2Vha0hhc2hTZXRFeHBhbnNpb24pCiAgICAgICAgIEVYUEVDVF9FUSh3ZWFrSGFzaFNldC5jYXBh
Y2l0eSgpLCAwdSk7CiAgICAgICAgIHVuc2lnbmVkIG9iamVjdENvdW50ID0gaW5pdGlhbENhcGFj
aXR5ICogMjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9iamVjdENvdW50OyAr
K2kpIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigp
OworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAg
ICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVu
ZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuY2hlY2tDb25zaXN0
ZW5jeSgpOwpAQCAtNjY3LDEwICs2NjgsMTAgQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hhc2hT
ZXRDb21wdXRlc0VtcHR5KQogICAgIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hh
c2hTZXQ7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzZT4+IG9iamVjdHM7Ci0g
ICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAg
ICAgIGF1dG8gZmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtI
YXNoU2V0LmFkZCgqZmlyc3RPYmplY3QpOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhdXRv
IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2Jq
ZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpv
YmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAg
ICAgICAgfSB3aGlsZSAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSA9PSBmaXJzdE9iamVjdC5n
ZXQoKSk7CkBAIC03MzQsOCArNzM1LDggQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hhc2hTZXRD
b21wdXRlU2l6ZSkKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIFdlYWtIYXNoU2V0PEJhc2U+
IHdlYWtIYXNoU2V0OwotICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxCYXNlPigpOwotICAgICAgICBhdXRvIGxhc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
c2U+KCk7CisgICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7Cisg
ICAgICAgIGF1dG8gbGFzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vh
a0hhc2hTZXQuYWRkKCpmaXJzdE9iamVjdCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqbGFz
dE9iamVjdCk7CiAgICAgICAgIGlmICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpICE9IGZpcnN0
T2JqZWN0LmdldCgpKQpAQCAtNzU5LDEwICs3NjAsMTAgQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vh
a0hhc2hTZXRDb21wdXRlU2l6ZSkKICAgICB7CiAgICAgICAgIFdlYWtIYXNoU2V0PEJhc2U+IHdl
YWtIYXNoU2V0OwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2U+PiBvYmplY3Rz
OwotICAgICAgICBhdXRvIG5vbkZpcnN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigp
OworICAgICAgICBhdXRvIG5vbkZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAg
ICAgICB3ZWFrSGFzaFNldC5hZGQoKm5vbkZpcnN0T2JqZWN0KTsKICAgICAgICAgZG8gewotICAg
ICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAg
ICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtI
YXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUo
b2JqZWN0KSk7CiAgICAgICAgIH0gd2hpbGUgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgPT0g
bm9uRmlyc3RPYmplY3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcAppbmRleCAyYWFiNjVkZDhmZDdlZjA3MDUxZmI2Zjc1
Njc1OGNkZTcwMmUwN2ExLi44MWQ3YmEyOTFhZTlmNGFiN2NmMmU1ZjlhYWQ2MmM5NDI0MzUzNjcy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVm
ZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVm
ZmVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBDQVJpbmdCdWZmZXJUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewogICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCiAgICAgewogICAgICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAgICAgICBtX3JpbmdCdWZmZXIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxDQVJpbmdCdWZmZXI+KCk7CiAgICAgfQog
CiAgICAgLy8gQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKGRvdWJsZSBzYW1wbGVSYXRlLCBVSW50
MzIgbnVtQ2hhbm5lbHMsIFBDTUZvcm1hdCBmb3JtYXQsIGJvb2wgaXNJbnRlcmxlYXZlZCwgc2l6
ZV90IGNhcGFjaXR5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDc3OGU2MTU1ZjA2Y2MxMjgzOTc5NzVmMDQ1
ODcxMmEyYzcxMDQwZmEuLmRjYTQ2MzYwMmU5NmQ2MGEwNDUxMzgxMjFjYmJkY2VmYmVlOWU1YzIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlv
blZhbHVlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogc3RhdGljIHVuc2lnbmVkIGRlbGV0aW9uQ291bnQ7CiAKIGNsYXNzIENhbGN1bGF0aW9uRGVs
ZXRpb25UZXN0Tm9kZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbk5vZGUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkNhbGN1bGF0
aW9uRGVsZXRpb25UZXN0Tm9kZSgpCiAgICAgewpAQCAtNTIsNyArNTMsNyBAQCBjbGFzcyBDYWxj
dWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25O
b2RlIHsKIAogc3RhdGljIFJlZjxXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlPiBjcmVhdGVUZXN0
VmFsdWUoKQogewotICAgIGF1dG8gbm9kZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY3VsYXRpb25E
ZWxldGlvblRlc3ROb2RlPigpOworICAgIGF1dG8gbm9kZSA9IG1ha2VVbmlxdWU8Q2FsY3VsYXRp
b25EZWxldGlvblRlc3ROb2RlPigpOwogICAgIHJldHVybiBXZWJDb3JlOjpDYWxjdWxhdGlvblZh
bHVlOjpjcmVhdGUoV1RGTW92ZShub2RlKSwgV2ViQ29yZTo6VmFsdWVSYW5nZUFsbCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVz
c2FnZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRN
ZXNzYWdlVGVzdC5jcHAKaW5kZXggZjU4ZGE4YTQyMDczZWM5OWJiZWUzNGE4NWJlYzM0YzA4NWM1
MmE2NC4uMGMxYTA2OWYxM2MzOWM0MDllNWQ1ZTFiMDNhN2U5MmJmOWIzNjZjMiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdl
VGVzdC5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVz
dFBhY2tldFNpemUpCiAgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHgwNTA2MDcwODsKICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKIAotICAgIGF1dG8gaW5pdFBhY2tldCA9IHN0ZDo6bWFrZV91
bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6
OmtJbml0LCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGlu
aXRQYWNrZXQgPSBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9I
aWREZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUo
KSk7CiAgICAgRVhQRUNUX0VRKDY0dSwgaW5pdFBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKS5z
aXplKCkpOwogCi0gICAgYXV0byBjb250aW51YXRpb25QYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgMCwgV1RGTW92ZShkYXRhKSk7
CisgICAgYXV0byBjb250aW51YXRpb25QYWNrZXQgPSBtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51
YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgMCwgV1RGTW92ZShkYXRhKSk7CiAgICAgRVhQRUNUX0VR
KDY0dSwgY29udGludWF0aW9uUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpLnNpemUoKSk7CiB9
CiAKQEAgLTcwLDcgKzcwLDcgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRE
YXRhKQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4RjUwNjA3MDg7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGEgezEwLCAxMX07CiAgICAgRmlkb0hpZERldmljZUNvbW1hbmQgY21kID0gRmlk
b0hpZERldmljZUNvbW1hbmQ6OmtXaW5rOwotICAgIGF1dG8gaW5pdFBhY2tldCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBWZWN0b3I8dWludDhf
dD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGluaXRQYWNrZXQgPSBtYWtlVW5pcXVl
PEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEp
LCBkYXRhLnNpemUoKSk7CiAgICAgc2l6ZV90IGluZGV4ID0gMDsKIAogICAgIFZlY3Rvcjx1aW50
OF90PiBzZXJpYWxpemVkID0gaW5pdFBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKTsKQEAgLTk0
LDcgKzk0LDcgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRDb25zdHJ1Y3Rv
cnMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgezEwLCAxMX07CiAgICAgRmlkb0hpZERldmlj
ZUNvbW1hbmQgY21kID0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtXaW5rOwogICAgIHNpemVfdCBs
ZW5ndGggPSBkYXRhLnNpemUoKTsKLSAgICBhdXRvIG9yaWdQYWNrZXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgV1RGTW92ZShkYXRhKSwgbGVu
Z3RoKTsKKyAgICBhdXRvIG9yaWdQYWNrZXQgPSBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0
PihjaGFubmVsSWQsIGNtZCwgV1RGTW92ZShkYXRhKSwgbGVuZ3RoKTsKIAogICAgIHNpemVfdCBw
YXlsb2FkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihvcmlnUGFja2V0LT5wYXlsb2FkTGVu
Z3RoKCkpOwogICAgIFZlY3Rvcjx1aW50OF90PiBvcmlnRGF0YSA9IG9yaWdQYWNrZXQtPmdldFNl
cmlhbGl6ZWREYXRhKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpbGVNb25pdG9yLmNwcAppbmRleCAxZWQxMzI4ZjgxMzA5ZTEyZTEzNzFjYjNhZGZlNmIwYTk3
ODNlZWI2Li4yMjgzODNhMGYzMGE5YjEzOWY2YWFmNDNmOTVjZWRkODA5MTY2ZTZhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKQEAg
LTE0OCw3ICsxNDgsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2UpCiAK
ICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUi
KTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRl
bXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVD
aGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25p
dG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9y
OjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTE5MCw3ICsxOTAsNyBAQCBURVNUX0Yo
RmlsZU1vbml0b3JUZXN0LCBEZXRlY3RNdWx0aXBsZUNoYW5nZXMpCiAKICAgICBhdXRvIHRlc3RR
dWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8g
bW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0
ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUp
IHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBh
dGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlw
ZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6
Ok1vZGlmaWNhdGlvbjoKQEAgLTI1MCw3ICsyNTAsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0
LCBEZXRlY3REZWxldGlvbikKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVh
dGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtd
IChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9
IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJl
ZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAg
ICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMjg5
LDcgKzI4OSw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZUFuZFRoZW5E
ZWxldGUpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdv
cmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1v
bml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0
b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVl
PEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZp
bGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgIGNhc2Ug
RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0zNDYsNyArMzQ2
LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRlQnV0Tm90U3Vic2VxdWVu
dENoYW5nZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3Qg
V29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxl
TW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9u
aXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlx
dWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAo
RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgY2Fz
ZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKaW5kZXggOTJk
OGExOTJjYTdiMmExMDgxNTY1OTk3YjBlYTViMWY5YWVhOGY2NS4uMjE5ZTk2NmRiZWJhYTg0ZDM2
MDI3MjJlOTU5ZTMyZjY0ZmI0ZGIyZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgQ3Vy
bENvb2tpZXM6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB7CiAgICAgICAgIG1fY29va2ll
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KCk7CiAKLSAg
ICAgICAgbV9jb29raWVKYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvb2tpZUphckRC
PihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jb29raWVEaXJlY3Rvcnks
ICJjb29raWVkYi5zcWwiKSk7CisgICAgICAgIG1fY29va2llSmFyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
Y29va2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOwogICAgICAgICBtX2Nvb2tpZUphci0+
b3BlbigpOwogICAgICAgICBtX2Nvb2tpZUphci0+c2V0QWNjZXB0UG9saWN5KENvb2tpZUFjY2Vw
dFBvbGljeTo6QWx3YXlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwCmluZGV4
IDVjMGFlMzMxMzI4YjM2YjBiYTcwYTE4ZDk5MzY2OTQxMmFjYTI5YTkuLmIzYjNiYzNjZjQ5ZDc4
NTQzMDU4NDlkZGExMjEyZjE5MzJhMGQyMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VS
ZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3QsIFdLRGljCiB7CiAgICAgRVhQRUNU
X1RSVUUob3BlbmVkV2ViVmlldyA9PSBudWxscHRyKTsKIAotICAgIG9wZW5lZFdlYlZpZXcgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CisgICAgb3BlbmVkV2ViVmll
dyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKIAogICAgIFdLUGFnZVVJQ2xp
ZW50VjUgdWlDbGllbnQ7CiAgICAgbWVtc2V0KCZ1aUNsaWVudCwgMCwgc2l6ZW9mKHVpQ2xpZW50
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFs
ZXJ0c1NQSS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0
c1NQSS5jcHAKaW5kZXggYTRmYmExMjdjNmU0ZDAzZTYzZDlhODE3MmEzOWIzY2I4YjE0NzJjNy4u
N2JjMzUyNGYyYmRiOWRiZDdhNDM1YTNjYzZhZDM4MzJlOTQ0ZWRkNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcApAQCAtMTAz
LDcgKzEwMyw3IEBAIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYgcGFn
ZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3QsIFdLRGljCiB7CiAgICAgRVhQRUNUX1RSVUUo
b3BlbmVkV2ViVmlldyA9PSBudWxscHRyKTsKIAotICAgIG9wZW5lZFdlYlZpZXcgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CisgICAgb3BlbmVkV2ViVmlldyA9IG1h
a2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50VjUg
dWlDbGllbnQ7CiAgICAgbWVtc2V0KCZ1aUNsaWVudCwgMCwgc2l6ZW9mKHVpQ2xpZW50KSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRC
ZWdpbkFuZEVuZEVkaXRpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
VGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcAppbmRleCAwZjdmZDQwYTYzZTVlY2Y3
OGM5NjhkZjgwMzhkMTkyMjFlZGJmN2Q1Li5jZDE5ZDdjZGU1ODg5NjI1ZjEyMjEyZmM3NTNjZmQ1
NWUyNzhkOTIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9U
ZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKQEAgLTk3
LDcgKzk3LDcgQEAgc3RydWN0IFdlYktpdDJUZXh0RmllbGRCZWdpbkFuZEVkaXRFZGl0aW5nVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1
bmRsZVRlc3QoIlRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZ0V2ZW50c1Rlc3QiKSk7CiAg
ICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0g
ICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4
dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4o
Y29udGV4dC5nZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy0+cGFn
ZSgpLCB0aGlzKTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKaW5kZXggYzdiMDI1
MWJmY2YyMWFhNGFiZDExNGM4NTUwNzkyNDFkNjYxNzRlOS4uOWRjM2E2ZGE5OTUwOWMyNzExMjFk
NGMzYTQ1MzA4NGZlZTk4OWJkNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L1VzZXJNZXNzYWdlLmNwcApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBXZWJLaXQyVXNl
ck1lc3NhZ2VSb3VuZFRyaXBUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAg
IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRl
c3QoIlVzZXJNZXNzYWdlVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQo
Y29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1h
a2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKICAgICAgICAgc2V0UGFn
ZUxvYWRlckNsaWVudCh3ZWJWaWV3LT5wYWdlKCksIHRoaXMpOwogCiAgICAgICAgIGRpZEZpbmlz
aExvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L1dpbGxMb2FkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxM
b2FkLmNwcAppbmRleCBlZDlmMGZmYzcwMjVhYjEyY2I1Mzk2N2Y3MjA1ZmY5NmM4OWJlNjk5Li41
MmYxOGRjZWI0MmQ1MWFjMDgzOTViNjIwMDFkNGE5NTQwZjc0NTJkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGNs
YXNzIFdlYktpdDJXaWxsTG9hZFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAg
ICAgY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxl
VGVzdCgiV2lsbExvYWRUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChj
b250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgICAgIGRpZFJl
Y2VpdmVNZXNzYWdlID0gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBl
YXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCmluZGV4IGFlYmExYzM0OGZiYzY2YTE3MGU1MzllMGE3
Mjg2YWVlOTE1M2U2MDQuLjI5MWE0NzhhMjc4NDI0MmRhZDQ1YTNhOGYxNzM5MDVkN2QzYjJmMjEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxp
Z2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0K
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IGFk
b3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoc2NyaXB0Q29udGV4dCwgcmVzdWx0LCBudWxscHRyKSk7
CiAKICAgICAgICAgYXV0byBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJp
bmdTaXplKHJlc3VsdFN0cmluZy5nZXQoKSk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAg
ICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcocmVzdWx0U3RyaW5nLmdldCgpLCBidWZmZXIuZ2V0
KCksIGJ1ZmZlclNpemUpOwogCiAgICAgICAgIFdLQnVuZGxlUGFnZVNldFVzZURhcmtBcHBlYXJh
bmNlKG1fcGFnZSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwCmluZGV4IGQ2Y2MyZmIyNDdl
NTYyMDY2OTc3NjEwYjI1Njc5YjdlZDFkY2M4YmEuLjdjOGM4YjUyMTU0YWM0ZWIwOThlNjk1MTc5
MDY5YTA1ZWJkYzY2YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwCkBAIC0yNTYsNiArMjU2LDcg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkVtcHR5UmVhbG0oQXV0aGVu
dGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3QKIH0KIAogY2xhc3MgVHVubmVsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUdW5uZWwoU291cFNlcnZlciogc2Vy
dmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgOiBtX3NlcnZlcihzZXJ2ZXIpCkBA
IC0yOTksNyArMzAwLDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKIHsKICAgICBpZiAobWVz
c2FnZS0+bWV0aG9kID09IFNPVVBfTUVUSE9EX0NPTk5FQ1QpIHsKICAgICAgICAgZ19hc3NlcnRf
Y21wdWludChzb3VwX3NlcnZlcl9nZXRfcG9ydChzZXJ2ZXIpLCA9PSwgZ1Byb3h5U2VydmVyUG9y
dCk7Ci0gICAgICAgIGF1dG8gdHVubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxUdW5uZWw+KHNlcnZl
ciwgbWVzc2FnZSk7CisgICAgICAgIGF1dG8gdHVubmVsID0gbWFrZVVuaXF1ZTxUdW5uZWw+KHNl
cnZlciwgbWVzc2FnZSk7CiAgICAgICAgIGF1dG8qIHR1bm5lbFB0ciA9IHR1bm5lbC5nZXQoKTsK
ICAgICAgICAgdHVubmVsUHRyLT5jb25uZWN0KFt0dW5uZWwgPSBXVEZNb3ZlKHR1bm5lbCldKGNv
bnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgewogICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkg
ewpAQCAtMzk0LDcgKzM5NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRp
b25Qcm94eShQcm94eUF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0CiAKIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Qcm94eUhUVFBTKFByb3h5QXV0aGVudGljYXRp
b25UZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdFRlc3RTZXJ2ZXI+KFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZl
ckhUVFBTKTsKKyAgICBhdXRvIGh0dHBzU2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRUZXN0U2Vy
dmVyPihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7CiAgICAgaHR0cHNTZXJ2ZXItPnJ1
bihzZXJ2ZXJDYWxsYmFjayk7CiAKICAgICB0ZXN0LT5sb2FkVVJJKGh0dHBzU2VydmVyLT5nZXRV
UklGb3JQYXRoKCIvcHJveHkvYXV0aC10ZXN0Lmh0bWwiKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaAppbmRl
eCA3YTQ0Y2IwNWNkNGJjMDI3ZTEyZDExMDNmYWY2YTAwN2FjNmY0MGYzLi5iNmI3MjhlNDVlMDlj
NTFhNmQ2YmE5OWJmNzE3ZTE5NWU5YTBlMGMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaApAQCAtMzAsNiArMzAsNyBA
QAogI2VuZGlmCiAKIGNsYXNzIFdlYlByb2Nlc3NUZXN0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJQcm9jZXNzVGVzdCgpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHRlc3ROYW1lLCBXZWJLaXRXZWJQYWdl
KikgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
RE9NRE9NV2luZG93VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9ET01ET01XaW5kb3dUZXN0LmNwcAppbmRleCAxMjU2MjQxOTZhNzFjNmQzYWQ1YmNkZDI5ZjE0
MmI4NmFiYjlmZDExLi5lNDAwMDc2MzNmMjM2MjQwNTI5ZGY1NGFlODYzMjA4N2JkMzY5NTJmIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5k
b3dUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01E
T01XaW5kb3dUZXN0LmNwcApAQCAtMzAsNyArMzAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gY2xpY2tl
ZENhbGxiYWNrKFdlYktpdERPTURPTVdpbmRvdyosIFdlYktpdERPTUV2ZW50KiwgV2ViS2l0RE9N
RAogCiBjbGFzcyBXZWJLaXRET01ET01XaW5kb3dUZXN0IDogcHVibGljIFdlYlByb2Nlc3NUZXN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBj
cmVhdGUoKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdERPTURPTVdpbmRvd1Rlc3Q+
KCk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUo
KSB7IHJldHVybiBtYWtlVW5pcXVlPFdlYktpdERPTURPTVdpbmRvd1Rlc3Q+KCk7IH0KIAogcHJp
dmF0ZToKICAgICBndWludDY0IHdlYlBhZ2VGcm9tQXJncyhHVmFyaWFudCogYXJncykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpp
bmRleCA4ZDJlZThhZDE2Y2FkNjc5NTY4ZWQ5YjZkNzVjZWNkODIxNTBmZWRiLi4zNDkwZWYxY2Vi
NmYxNzgwNTAyZjBjZGM5MTljOTcxZTI5MmJlOTA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCkBAIC0zOCw3ICszOCw3IEBA
IHN0ZDo6c3RyaW5nIHRvU1REKE5TU3RyaW5nICpzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6
OnN0cmluZygpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBbc3RyaW5nIGxlbmd0aE9mQnl0
ZXNVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBhdXRvIGJ1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAg
ICAgTlNVSW50ZWdlciBzdHJpbmdMZW5ndGg7CiAgICAgW3N0cmluZyBnZXRCeXRlczpidWZmZXIu
Z2V0KCkgbWF4TGVuZ3RoOmJ1ZmZlclNpemUgdXNlZExlbmd0aDomc3RyaW5nTGVuZ3RoIGVuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIG9wdGlvbnM6MCByYW5nZTpOU01ha2VSYW5nZSgwLCBb
c3RyaW5nIGxlbmd0aF0pIHJlbWFpbmluZ1JhbmdlOjBdOwogICAgIHJldHVybiBzdGQ6OnN0cmlu
ZyhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggNTQ2Y2E2ZTIyMmQ5ZmVhODFjZTdiZTRlMmMyZDM5ODVj
NWI0NGYwZi4uMjQ3NTcyODk4YjZhODc5YzdhMzZiNGZjNjViOTE1MzMwNDcwZmZkMCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMjk0LDcgKzI5NCw3
IEBAIHN0YXRpYyB2b2lkIGFwcGx5V29ya2Fyb3VuZFRvQWxsb3dXcml0aW5nQXR0cmlidXRlZFN0
cmluZ3NUb0l0ZW1Qcm92aWRlcnMoKQogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2xhc3NN
ZXRob2RTd2l6emxlcj4gc3dpenpsZXI7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBzd2l6emxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNBdHRyaWJ1dGVkU3Ry
aW5nLmNsYXNzLCBAc2VsZWN0b3Iod3JpdGFibGVUeXBlSWRlbnRpZmllcnNGb3JJdGVtUHJvdmlk
ZXIpLCByZWludGVycHJldF9jYXN0PElNUD4od3JpdGFibGVUeXBlSWRlbnRpZmllcnNGb3JJdGVt
UHJvdmlkZXJXaXRob3V0UHVibGljUlRGRCkpOworICAgICAgICBzd2l6emxlciA9IG1ha2VVbmlx
dWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzLCBAc2VsZWN0
b3Iod3JpdGFibGVUeXBlSWRlbnRpZmllcnNGb3JJdGVtUHJvdmlkZXIpLCByZWludGVycHJldF9j
YXN0PElNUD4od3JpdGFibGVUeXBlSWRlbnRpZmllcnNGb3JJdGVtUHJvdmlkZXJXaXRob3V0UHVi
bGljUlRGRCkpOwogICAgIH0pOwogfQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dlYlZpZXdD
b25maWd1cmF0aW8KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFJl
bW92ZSB0aGlzIHdvcmthcm91bmQgb25jZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTc1MjA0PiBp
cyBmaXhlZC4KLSAgICBfc2hhcmVkQ2FsbG91dEJhclN3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbVUlDYWxsb3V0QmFyIGNsYXNzXSwgQHNlbGVjdG9yKHNo
YXJlZENhbGxvdXRCYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3VwcHJlc3NVSUNhbGxvdXRC
YXIpKTsKKyAgICBfc2hhcmVkQ2FsbG91dEJhclN3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01l
dGhvZFN3aXp6bGVyPihbVUlDYWxsb3V0QmFyIGNsYXNzXSwgQHNlbGVjdG9yKHNoYXJlZENhbGxv
dXRCYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3VwcHJlc3NVSUNhbGxvdXRCYXIpKTsKICAg
ICBfaW5wdXRTZXNzaW9uQ2hhbmdlQ291bnQgPSAwOwogICAgIGFwcGx5V29ya2Fyb3VuZFRvQWxs
b3dXcml0aW5nQXR0cmlidXRlZFN0cmluZ3NUb0l0ZW1Qcm92aWRlcnMoKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNl
cnZlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNl
cnZlci5oCmluZGV4IDY5MGYwYTc3NTZjZmUzYWZiMDdkOTBiZWVmZjA5NTc4YjJmYzU1ZGUuLjI4
MTQ1MjdmMTliOTU0ZjgyYWViODdiYzBlNGM4ZGMwYjlhN2Y1YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIGNsYXNzIFdl
YktpdFRlc3RTZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
CiAgICAgZW51bSBTZXJ2ZXJPcHRpb25zIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RG
b250T3B0aW9ucy5tbQppbmRleCA4NjI2MzU0NDMzNWE3ZjVkOTcxYjVkYzBkMjU5ZTU1ZGMwZDcz
YzY2Li40YmRlNmM1MTAwZDJiZDZmZTRiYjkwZmFjYmUyNWQzMzlhNTA1NGJiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCkBAIC04NCw3ICs4NCw3IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEZvbnRPcHRpb25zOihOU0ZvbnRPcHRpb25zICopZm9udE9w
dGlvbnMKIAogICAgIF9zaGFkb3dPZmZzZXQgPSBDR1NpemVaZXJvOwogICAgIF9zaGFkb3dCbHVy
UmFkaXVzID0gMDsKLSAgICBfcmVwbGFjZUZvbnRPcHRpb25zU3dpenpsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0
aW9ucyIpLCBAc2VsZWN0b3Ioc2hhcmVkRm9udE9wdGlvbnMpLCByZWludGVycHJldF9jYXN0PElN
UD4oc2hhcmVkRm9udE9wdGlvbnNGb3JUZXN0aW5nKSk7CisgICAgX3JlcGxhY2VGb250T3B0aW9u
c1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0
cmluZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHNoYXJlZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOwogICAgIF9o
YXNQZW5kaW5nU2hhZG93Q2hhbmdlcyA9IE5POwogICAgIF9oYXNNdWx0aXBsZUZvbnRzID0gTk87
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmgKaW5kZXggMTUzMjIx
ODI2OTllMGVhMzA3NTRhMDIyNmMzYTdiNjI5NTk3NmQwMC4uMTEzOTliMzkwZmU5MTcwZjZjNTI1
Mjc1YWMyMzQ1ODJkYWY3NTBmOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9F
dmVudFNlbmRlclByb3h5LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRl
clByb3h5LmgKQEAgLTU0LDYgKzU0LDcgQEAgc3RydWN0IFdUUkV2ZW50UXVldWVJdGVtOwogI2Vu
ZGlmCiAKIGNsYXNzIEV2ZW50U2VuZGVyUHJveHkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEV2ZW50U2VuZGVyUHJveHkoVGVzdENvbnRyb2xs
ZXIqKTsKICAgICB+RXZlbnRTZW5kZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCmluZGV4IDdkOTQ1ZDY3ZWM2NzUwYmU3MDY0
MzVhMmE2YjNjNzRkMWFkMTc0M2MuLjFlZDRhZGY5YjM5MzkzYTMzM2FhMzI1MTA5N2I5ZTNhYTQy
Y2MzNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92
aWRlck1vY2suaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlk
ZXJNb2NrLmgKQEAgLTI3LDEwICsyNywxMiBAQAogI2RlZmluZSBHZW9sb2NhdGlvblByb3ZpZGVy
TW9ja19oCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgR2VvbG9jYXRpb25Qcm92
aWRlck1vY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdl
b2xvY2F0aW9uUHJvdmlkZXJNb2NrKFdLQ29udGV4dFJlZik7CiAgICAgfkdlb2xvY2F0aW9uUHJv
dmlkZXJNb2NrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRleCAxZjlkM2Vm
Yzk2NGZiMTM3N2JjNjYzYzAxNjBjMzRhODhiMjMyOGE2Li5jOWE1MmMxNWY3NzA4MzA2ODNjOGVm
ZjY4OTQyOWJkMGJjMWY1NjQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKQEAg
LTYxMiw2ICs2MTIsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vbml0b3JXaGVl
bEV2ZW50cygpCiB9CiAKIHN0cnVjdCBTY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhIHsKKyAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgSlNDb250ZXh0UmVmIG1fY29u
dGV4dDsKICAgICBKU09iamVjdFJlZiBtX2Z1bmN0aW9uOwogCkBAIC02NDcsNyArNjQ4LDcgQEAg
dm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
SlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGwKICAgICAKICAgICBKU1ZhbHVlUHJvdGVjdChjb250ZXh0
LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsKIAotICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNh
bGxiYWNrRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0
YT4oY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CisgICAgYXV0byBzY3JvbGxDb21w
bGV0aW9uQ2FsbGJhY2tEYXRhID0gbWFrZVVuaXF1ZTxTY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tE
YXRhPihjb250ZXh0LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsKICAgICBhdXRvIHNjcm9sbENv
bXBsZXRpb25DYWxsYmFja0RhdGFQdHIgPSBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhLnJl
bGVhc2UoKTsKICAgICBib29sIGNhbGxiYWNrV2lsbEJlQ2FsbGVkID0gV0tCdW5kbGVQYWdlUmVn
aXN0ZXJTY3JvbGxPcGVyYXRpb25Db21wbGV0aW9uQ2FsbGJhY2socGFnZSwgZXhlY3V0ZUNhbGxi
YWNrLCBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyKTsKICAgICBpZiAoIWNhbGxiYWNr
V2lsbEJlQ2FsbGVkKSB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDcxMTZjYzk4MTU2NjlkOTQ5NGRi
ZjhkZTQ4YmFlZWNkNjM3NGMzNzYuLjgzYjJiMzBiMTMzMmVjNzdiZmVmY2MyOWZkZDFhMmU0ODNj
YjVmMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6aW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiBpbml0aWFs
aXphdGlvblVzZXIKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UpCiB7CiAgICAgYm9vbCBpc01haW5QYWdlID0gbV9wYWdlcy5pc0VtcHR5KCk7
Ci0gICAgbV9wYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+
KHBhZ2UpKTsKKyAgICBtX3BhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPEluamVjdGVkQnVuZGxlUGFn
ZT4ocGFnZSkpOwogCiAgICAgc2V0VXBJbmplY3RlZEJ1bmRsZUNsaWVudHMocGFnZSk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5oCmluZGV4IDU5ZDNlMWIwZDAyZTIyYzUyZmE3NjU0MzMyOWMyM2Y2YjYy
YTM4OWEuLmIzMjNjMjUwNDRmNTUwMzYwNzZmNDhlZGRkNDdiY2VhYTNlMjBmMTggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNz
IEluamVjdGVkQnVuZGxlUGFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgSW5qZWN0ZWRCdW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJlZik7CiAgICAgfkluamVj
dGVkQnVuZGxlUGFnZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNTlmMjVjMWJiYWM2ZWQ4OWU5NGNmYTg4YTlh
ZmZjMDNmYjcyNGExOC4uM2IwZWQ2YWFjYTc1OTk1NWVkMTVjZThiMGMxMGNmMzcyYzk5MWQzMSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCkBAIC0yMzc0LDcgKzIzNzQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5Q
YW5lbEZpbGVzKEpTVmFsdWVSZWYgZmlsZXNWYWx1ZSkKIAogICAgICAgICBhdXRvIGZpbGUgPSBh
ZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGZpbGVWYWx1ZSwgbnVsbHB0cikpOwog
ICAgICAgICBzaXplX3QgZmlsZUJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0
cmluZ1NpemUoZmlsZS5nZXQoKSkgKyAxOwotICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGZpbGVC
dWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGZpbGVCdWZm
ZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhmaWxlLmdldCgpLCBmaWxl
QnVmZmVyLmdldCgpLCBmaWxlQnVmZmVyU2l6ZSk7CiAKICAgICAgICAgV0tBcnJheUFwcGVuZEl0
ZW0oZmlsZVVSTHMuZ2V0KCksIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoQmFzZVVSTChtX3Rlc3RV
UkwuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCkpKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDBlNWMwN2NhNzI5YjZkZmNiMzhjODA0MjZk
MzkyNDRlMzJjMDAxN2MuLjE4ZTU3ZDJmY2Y2Mjk3NjdhNzMyOTc5YmMyZWRjNTdhY2YxMDljZTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC03MzAs
NyArNzMwLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgY29udmVydFRvSlNPYmplY3RBcnJheShjb25z
dCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW0KICAgICBKU0NvbnRleHRSZWYgY29u
dGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwogCiAg
ICAgc2l6ZV90IGVsZW1lbnRDb3VudCA9IGNoaWxkcmVuLnNpemUoKTsKLSAgICBhdXRvIHZhbHVl
RWxlbWVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTVmFsdWVSZWZbXT4oZWxlbWVudENvdW50KTsK
KyAgICBhdXRvIHZhbHVlRWxlbWVudHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxKU1ZhbHVlUmVmW10+KGVsZW1lbnRDb3VudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBlbGVtZW50Q291bnQ7IGkrKykKICAgICAgICAgdmFsdWVFbGVtZW50c1tpXSA9IEpTT2JqZWN0
TWFrZShjb250ZXh0LCBjaGlsZHJlbltpXS0+d3JhcHBlckNsYXNzKCksIGNoaWxkcmVuW2ldLmdl
dCgpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZp
ZXcuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggZjc0
Y2MyZDM5M2Q1MzA1ZmQzNjY1YmIwZTBhMzU1MTg0NDczMTA5Zi4uY2E0ZmRiZDcyMjE1YWY0OGJk
YTk2N2Q1YmNhYjQ4MTU2YmFkY2M3MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3Jt
V2ViVmlldy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRl
c3RPcHRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiAhZGVmaW5lZChCVUlMRElOR19HVEtfXykKICNpbmNsdWRlIDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+CkBAIC02NCw2ICs2NSw3IEBAIHR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBQ
bGF0Zm9ybUltYWdlOwogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIFBsYXRmb3JtV2ViVmlldyB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgUGxhdGZvcm1XZWJWaWV3KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24qLCBjb25zdCBU
ZXN0T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdG
dW5jdGlvbnMuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKaW5k
ZXggZGFmMTRjYTcwNTQ4NmJmYzIwNjQzMTIzZGU1MDkxYjc5ZTVkMDEzMS4uYmJhMTdjMmVmZmIw
OTY2NWVmYzI4ZWViNjllNzIzMjliMWQ2OWI3NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0
cmluZ0Z1bmN0aW9ucy5oCkBAIC03Myw3ICs3Myw3IEBAIGlubGluZSBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gdG9KUyhjb25zdCBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4mIHN0cmluZykKIGlu
bGluZSBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90
IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJb
XT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRG
OENTdHJpbmcoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBz
dGQ6OnN0cmluZyhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpAQCAtODYsNyAr
ODYsNyBAQCBpbmxpbmUgc3RkOjpzdHJpbmcgdG9TVEQoY29uc3QgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+JiBzdHJpbmcpCiBpbmxpbmUgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmcoV0tTdHJpbmdS
ZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJp
bmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KHN0cmluZywgYnVmZmVy
LmdldCgpLCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gV1RGOjpTdHJpbmc6OmZyb21VVEY4V2l0
aExhdGluMUZhbGxiYWNrKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDE2NTQ2MjljYWE2ZjZk
OGM4OTQ1NDgzNTFjMGM4ZmIwYTMzMzM3MmEuLmY5N2YxNWU2MTJjMGIxYTQ3MDM4ZGRiZDM3OGI2
NmQwZTdhYzQyNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZShpbnQg
YXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBw
YWdlR3JvdXBJZGVudGlmaWVyID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiV2ViS2l0VGVzdFJ1bm5lclBhZ2VHcm91cCIpKTsKICAgICBtX3BhZ2VHcm91cC5hZG9wdChX
S1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKHBhZ2VHcm91cElkZW50aWZpZXIuZ2V0KCkp
KTsKIAotICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRTZW5k
ZXJQcm94eT4odGhpcyk7CisgICAgbV9ldmVudFNlbmRlclByb3h5ID0gbWFrZVVuaXF1ZTxFdmVu
dFNlbmRlclByb3h5Pih0aGlzKTsKIH0KIAogV0tSZXRhaW5QdHI8V0tDb250ZXh0Q29uZmlndXJh
dGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29u
c3QgVGVzdE9wdGlvbnM6OkNvbnRleHRPcHRpb25zJiBvcHRpb25zKSBjb25zdApAQCAtNTIxLDcg
KzUyMSw3IEBAIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9s
bGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvCiAgICAgICAgIG1fY29udGV4dCA9IHBs
YXRmb3JtQWRqdXN0Q29udGV4dChhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0
aW9uKGNvbnRleHRDb25maWd1cmF0aW9uLmdldCgpKSkuZ2V0KCksIGNvbnRleHRDb25maWd1cmF0
aW9uLmdldCgpKTsKICAgICAgICAgbV9jb250ZXh0T3B0aW9ucyA9IG9wdGlvbnMuY29udGV4dE9w
dGlvbnM7CiAKLSAgICAgICAgbV9nZW9sb2NhdGlvblByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxHZW9sb2NhdGlvblByb3ZpZGVyTW9jaz4obV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9n
ZW9sb2NhdGlvblByb3ZpZGVyID0gbWFrZVVuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyTW9jaz4o
bV9jb250ZXh0LmdldCgpKTsKIAogICAgICAgICBpZiAoY29uc3QgY2hhciogZHVtcFJlbmRlclRy
ZWVUZW1wID0gbGlicmFyeVBhdGhGb3JUZXN0aW5nKCkpIHsKICAgICAgICAgICAgIFN0cmluZyB0
ZW1wb3JhcnlGb2xkZXIgPSBTdHJpbmc6OmZyb21VVEY4KGR1bXBSZW5kZXJUcmVlVGVtcCk7CkBA
IC05NTEsNyArOTUxLDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKICAgICAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBzaG91bGQgYWxzbyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBw
YWdlIG9wZW4uCiAKICAgICAvLyBSZXNldCB0aGUgRXZlbnRTZW5kZXIgZm9yIGVhY2ggdGVzdC4K
LSAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJv
eHk+KHRoaXMpOworICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5k
ZXJQcm94eT4odGhpcyk7CiAKICAgICAvLyBGSVhNRTogSXMgdGhpcyBuZWVkZWQ/IE5vdGhpbmcg
aW4gVGVzdENvbnRyb2xsZXIgY2hhbmdlcyBwcmVmZXJlbmNlcyBkdXJpbmcgdGVzdHMsIGFuZCBp
ZiB0aGVyZSBpcwogICAgIC8vIHNvbWUgb3RoZXIgY29kZSBkb2luZyB0aGlzLCBpdCBzaG91bGQg
cHJvYmFibHkgYmUgcmVzcG9uc2libGUgZm9yIGNsZWFudXAgdG9vLgpAQCAtMTIzNCwxMSArMTIz
NCwxMSBAQCBzdGF0aWMgV0tVUkxSZWYgY3JlYXRlVGVzdFVSTChjb25zdCBjaGFyKiBwYXRoT3JV
UkwpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBidWZmZXI7CiAgICAgaWYgKGlzQWJz
b2x1dGVQYXRoKSB7Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihw
cmVmaXhMZW5ndGggKyBsZW5ndGggKyAxKTsKKyAgICAgICAgYnVmZmVyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBsZW5ndGggKyAxKTsK
ICAgICAgICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSwgZmlsZVByZWZpeCk7CiAgICAgICAgIHN0cmNw
eShidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIHBhdGhPclVSTCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCAr
IFBBVEhfTUFYICsgbGVuZ3RoICsgMik7IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCisgICAg
ICAgIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4ocHJl
Zml4TGVuZ3RoICsgUEFUSF9NQVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHBhdGhTZXBh
cmF0b3IKICAgICAgICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSwgZmlsZVByZWZpeCk7CiAgICAgICAg
IGlmICghZ2V0Y3dkKGJ1ZmZlci5nZXQoKSArIHByZWZpeExlbmd0aCwgUEFUSF9NQVgpKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCBib29sIFRlc3RDb250cm9s
bGVyOjpydW5UZXN0KGNvbnN0IGNoYXIqIGlucHV0TGluZSkKICAgICBUZXN0T3B0aW9ucyBvcHRp
b25zID0gdGVzdE9wdGlvbnNGb3JUZXN0KGNvbW1hbmQpOwogCiAgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IHdrVVJMID0gYWRvcHRXSyhjcmVhdGVUZXN0VVJMKGNvbW1hbmQucGF0aE9yVVJMLmNf
c3RyKCkpKTsKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0
SW52b2NhdGlvbj4od2tVUkwuZ2V0KCksIG9wdGlvbnMpOworICAgIG1fY3VycmVudEludm9jYXRp
b24gPSBtYWtlVW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9ucyk7CiAK
ICAgICBpZiAoY29tbWFuZC5zaG91bGREdW1wUGl4ZWxzIHx8IG1fc2hvdWxkRHVtcFBpeGVsc0Zv
ckFsbFRlc3RzKQogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5zZXRJc1BpeGVsVGVzdChj
b21tYW5kLmV4cGVjdGVkUGl4ZWxIYXNoKTsKQEAgLTI5NjAsNyArMjk2MCw3IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKQog
CiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICBtX21haW5XZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNv
bmZpZ3VyYXRpb24sIG9wdGlvbnMpOworICAgIG1fbWFpbldlYlZpZXcgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtV2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CiB9CiAKIFBsYXRmb3JtV2Vi
VmlldyogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2Vi
VmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBj
b25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKaW5kZXggMTA3M2FiMTUxYTBlMzU0OWE0MTJhNWQyNWY1NGY3YjFiNGU5ZGNi
OC4uMDkxMDhiMGU1MjI0NDNhNjc1YjUxMTRmNDI4Yzc5YWExMGQyODNmYyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2NjksNyArMTY2OSw3IEBAIHZv
aWQgVGVzdEludm9jYXRpb246OnJ1blVJU2lkZVNjcmlwdChXS1N0cmluZ1JlZiBzY3JpcHQsIHVu
c2lnbmVkIHNjcmlwdENhbGxiYWNrCiAgICAgbV9wZW5kaW5nVUlTY3JpcHRJbnZvY2F0aW9uRGF0
YSA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fVUlTY3JpcHRDb250ZXh0KQotICAgICAgICBtX1VJ
U2NyaXB0Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7
CisgICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gbWFrZVVuaXF1ZTxVSVNjcmlwdENvbnRleHQ+
KCp0aGlzKTsKICAgICAKICAgICBtX1VJU2NyaXB0Q29udGV4dC0+cnVuVUlTY3JpcHQodG9XVEZT
dHJpbmcoc2NyaXB0KSwgc2NyaXB0Q2FsbGJhY2tJRCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggNzg4MGRkOGRmNTUyZmM5ZDgyYjk0ZDFkMmYyZGRmZDZk
ZjgyZWMyYi4uODViMWIwMjA2ZWI4OTIyNmU4NmM2YjQxYWI5M2U1ZGI5NWViZmQ5MiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNDAsNiArNDAsNyBAQAogbmFt
ZXNwYWNlIFdUUiB7CiAKIGNsYXNzIFRlc3RJbnZvY2F0aW9uIGZpbmFsIDogcHVibGljIFVJU2Ny
aXB0Q29udGV4dERlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShUZXN0SW52b2NhdGlvbik7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgVGVzdEludm9jYXRpb24oV0tVUkxSZWYsIGNvbnN0IFRlc3RPcHRpb25zJik7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5k
ZXggMGZiZjhlYTUyM2QzNDhkMjU2ZWNjNTIzMDQyZGVhMDJmZWNkZDFkYy4uMGViZjdiZmQwMDM5
ZjRlZjgwOTMyYzFlYjUxOTJmZjU0ZWUzYzRhMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMTY4LDcgKzE2OCw3IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1
cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0CiAgICAgICAgIFtjb3BpZWRDb25maWd1cmF0aW9uIF9z
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0OltfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9u
TWFuaWZlc3RGcm9tSlNPTjp0ZXh0IG1hbmlmZXN0VVJMOm5pbCBkb2N1bWVudFVSTDpuaWxdXTsK
ICAgICB9CiAKLSAgICBtX21haW5XZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KGNvcGllZENvbmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOworICAgIG1fbWFpbldl
YlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29waWVkQ29uZmlndXJhdGlvbi5n
ZXQoKSwgb3B0aW9ucyk7CiAgICAgZmluaXNoQ3JlYXRpbmdQbGF0Zm9ybVdlYlZpZXcobV9tYWlu
V2ViVmlldy5nZXQoKSwgb3B0aW9ucyk7CiAKICAgICBpZiAob3B0aW9ucy5wdW5jaE91dFdoaXRl
QmFja2dyb3VuZHNJbkRhcmtNb2RlKQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldERlZmF1bHRDYWxlbmRhclR5cGUoTlNTdHJpbmcgKmlkZW50aWZpZXIpCiB7CiAg
ICAgbV9vdmVycmlkZGVuQ2FsZW5kYXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICBpZiAo
IW1fY2FsZW5kYXJTd2l6emxlcikKLSAgICAgICAgbV9jYWxlbmRhclN3aXp6bGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNDYWxlbmRhciBjbGFzc10sIEBzZWxl
Y3RvcihjdXJyZW50Q2FsZW5kYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRDYWxl
bmRhcikpOworICAgICAgICBtX2NhbGVuZGFyU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0
aG9kU3dpenpsZXI+KFtOU0NhbGVuZGFyIGNsYXNzXSwgQHNlbGVjdG9yKGN1cnJlbnRDYWxlbmRh
ciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZENhbGVuZGFyKSk7CiB9CiAKIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnJlc2V0Q29udGVudEV4dGVuc2lvbnMoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAppbmRleCBkZTU3OGY3
M2ZjMzZlY2QxNTg5Yzk5ZjhkYmY4ZmNjYzM5ODdiNDJlLi5lZjllMzhlNzIzYmFhOTVkZmZlNzBl
YzVhODc1Y2ZlYzg0ZTMyODc3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0
ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0
ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIGludCBnZXRHREtL
ZXlTeW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3Vp
bnQqIG1vZGlmaWVyCiAgICAgICAgIHJldHVybiBHREtfS0VZX0YxMjsKIAogICAgIHNpemVfdCBi
dWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGtleVJlZik7Ci0g
ICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7Cisg
ICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+
KGJ1ZmZlclNpemUpOwogICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIu
Z2V0KCksIGJ1ZmZlclNpemUpOwogICAgIGNoYXIgY2hhckNvZGUgPSBidWZmZXIuZ2V0KClbMF07
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVy
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggNmE2MWRmOGUzNWQ2ZmEwOGM4YjE0YzUxYTgyM2M2MmQwODA1ZDRkMi4uZjNjNDE3Yzdm
YjdjYWE0ZGU0Nzc3YzdhNDk0ZjUzYWYzMmExOGJmZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KQEAgLTE1MSw4ICsxNTEsOCBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29u
c3QgVGVzdE9wdGlvbnMmIG9wdAogCiAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5jbGVh
cigpOwogICAgIGlmICghb3B0aW9ucy5zaG91bGRQcmVzZW50UG9wb3ZlcnMpIHsKLSAgICAgICAg
bV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyPihbVUlWaWV3Q29udHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVz
ZW50Vmlld0NvbnRyb2xsZXI6YW5pbWF0ZWQ6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0
PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7Ci0gICAgICAg
IG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFu
Y2VNZXRob2RTd2l6emxlcj4oW1VJUG9wb3ZlckNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3Io
cHJlc2VudFBvcG92ZXJGcm9tUmVjdDppblZpZXc6cGVybWl0dGVkQXJyb3dEaXJlY3Rpb25zOmFu
aW1hdGVkOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJv
bGxlck9yUG9wb3ZlcikpKTsKKyAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBl
bmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlWaWV3Q29udHJvbGxlciBj
bGFzc10sIEBzZWxlY3RvcihwcmVzZW50Vmlld0NvbnRyb2xsZXI6YW5pbWF0ZWQ6Y29tcGxldGlv
bjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJP
clBvcG92ZXIpKSk7CisgICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKG1h
a2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJUG9wb3ZlckNvbnRyb2xsZXIgY2xh
c3NdLCBAc2VsZWN0b3IocHJlc2VudFBvcG92ZXJGcm9tUmVjdDppblZpZXc6cGVybWl0dGVkQXJy
b3dEaXJlY3Rpb25zOmFuaW1hdGVkOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVBy
ZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKICAgICB9CiAgICAgCiAgICAgQk9PTCBz
aG91bGRSZXN0b3JlRmlyc3RSZXNwb25kZXIgPSBOTzsKQEAgLTI2OSw5ICsyNjksOSBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyKQogCiAgICAgYXV0byBjb250cm9sbGVyQ2xhc3MgPSBVSUtleWJvYXJk
SW5wdXRNb2RlQ29udHJvbGxlci5jbGFzczsKICAgICBtX2lucHV0TW9kZVN3aXp6bGVycy5yZXNl
cnZlQ2FwYWNpdHkoMyk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNz
LCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6
emxlQ3VycmVudElucHV0TW9kZSkpKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNr
ZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9s
bGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlSW5QcmVmZXJlbmNlKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOwotICAgIG1faW5wdXRN
b2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0
aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGFjdGl2ZUlucHV0TW9kZXMp
LCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUFjdGl2ZUlucHV0TW9kZXMpKSk7CisgICAg
bV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VN
ZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9k
ZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKKyAg
ICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRN
b2RlSW5QcmVmZXJlbmNlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5w
dXRNb2RlKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtl
VW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9y
KGFjdGl2ZUlucHV0TW9kZXMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUFjdGl2ZUlu
cHV0TW9kZXMpKSk7CiAgICAgW1VJS2V5Ym9hcmRJbXBsLnNoYXJlZEluc3RhbmNlIHByZXBhcmVL
ZXlib2FyZElucHV0TW9kZUZyb21QcmVmZXJlbmNlczpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQppbmRleCBkMWNmYzZhMzMyMWUw
MjljOGJhODExNWY0YTZkOTIwN2Y4ZTcxODRmLi44OWNlNGVmMTI2YzE1ZDkyZGNmNzY2NTBjZTZl
ZWY1Yjg5MjMxNzJlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVu
dFNlbmRlclByb3h5Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2Vu
ZGVyUHJveHkubW0KQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlRG93bih1bnNpZ25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZQog
CiAgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKICAg
ICBpZiAodGFyZ2V0VmlldykgewotICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9u
c1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVu
dCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CisgICAgICAgIGF1dG8g
ZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9k
U3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMp
LCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMp
KTsKICAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgICAgICBbdGFy
Z2V0VmlldyBtb3VzZURvd246ZXZlbnRdOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpuaWxdOwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VV
cCh1bnNpZ25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzCiAgICAg
ICAgIHRhcmdldFZpZXcgPSBtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVZpZXcoKTsKIAogICAgIEFTU0VSVCh0YXJnZXRWaWV3KTsKLSAgICBhdXRvIGV2ZW50UHJlc3Nl
ZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6
bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7Cisg
ICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xh
c3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNl
QnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9ucykpOwogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICBbdGFy
Z2V0VmlldyBtb3VzZVVwOmV2ZW50XTsKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxd
OwpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8o
ZG91YmxlIHgsIGRvdWJsZSB5KQogICAgIC8vIEFsd2F5cyB0YXJnZXQgZHJhZ3MgYXQgdGhlIFdL
V2ViVmlldyB0byBhbGxvdyBmb3IgZHJhZy1zY3JvbGxpbmcgb3V0c2lkZSB0aGUgdmlldy4KICAg
ICBOU1ZpZXcgKnRhcmdldFZpZXcgPSBpc0RyYWcgPyBtX3Rlc3RDb250cm9sbGVyLT5tYWluV2Vi
VmlldygpLT5wbGF0Zm9ybVZpZXcoKSA6IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygp
LT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OndpbmRvd0xvY2F0aW9uXTsKICAgICBpZiAodGFyZ2V0
VmlldykgewotICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBz
ZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CisgICAgICAgIGF1dG8gZXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtO
U0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJl
dF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKICAgICAgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgICAgICBpZiAoaXNEcmFnKQogICAg
ICAgICAgICAgW3RhcmdldFZpZXcgbW91c2VEcmFnZ2VkOmV2ZW50XTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAKaW5kZXggNDY5YmZh
ZjBlOGNmMjkwNzMwYmFiZmEwNzgzNmQ4NzdlYzcwZThmNS4uNjk2ZjQ1NTc1ODk2ZmU4MjY2NDg3
ZDA5OGU4ZmU4ZWU2MWU1NGQ1NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93
cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93
cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgdWlu
dDMyX3Qgd3BlS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9j
YXRpb24sIHVpbnQzMgogICAgICAgICByZXR1cm4gV1BFX0tFWV9GMTI7CiAKICAgICBzaXplX3Qg
YnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShrZXlSZWYpOwot
ICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOwor
ICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltd
PihidWZmZXJTaXplKTsKICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtleVJlZiwgYnVmZmVy
LmdldCgpLCBidWZmZXJTaXplKTsKICAgICBjaGFyIGNoYXJDb2RlID0gYnVmZmVyLmdldCgpWzBd
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376153</attachid>
            <date>2019-08-13 02:19:57 -0700</date>
            <delta_ts>2019-08-13 02:43:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190813021954.patch</filename>
            <type>text/plain</type>
            <size>1726830</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDkyMDFmZjM5Y2JiMDFhNDJhYWQ1MTg2YzRkZWIxMDgzYWZiOWZhLi42NDFhZDIzY2U3MzZiZDFi
Mzk0ZmQzMGEzYTZjMDFhNjNhNGZjY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgbXVs
dGlwYXJhbWV0ZXIgb3ZlcmxvYWRzIG9mIGFwcGVuZCgpIGluIFN0cmluZ0J1aWxkZXIgYXMgYSBm
aXJzdCBzdGVwIHRvd2FyZCBzdGFuZGFyZGl6aW5naW5nIG9uIHRoZSBmbGV4aWJsZUFwcGVuZCgp
IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZmUzNjczMjEwMThkZDVhMWQ0N2Y1NWMxYTcxZjBhODJm
OGM1NzIuLjBjMDY1NzVlZDQ2ZTFiN2Y5MDU4YzQ3M2U5MTZlMjU5NjdlZDAwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAgICAgICogYmVu
Y2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFZlY3Rv
ci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAgICAgICAqIHd0
Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9u
Lmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICog
d3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9T
dHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAg
ICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3Ip
OgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29t
PgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdl
YWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTExY2FkMjk0OThjYTNlMDc4ZDllZjgyZTBkMzA4
MGMxOWMwMmEwYy4uMmI2ZjdmOTVkODkzZDEyMmUzZTcwYjFhZjg2OGY2ZGM1Yzk0ZjBmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4MjUgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcpOgorICAgICAgICAqIE1vZHVsZXMv
YmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JC
ZWFjb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUNETTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lz
dGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y2xpZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6c2V0Q2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9s
b2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJl
Y29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5k
ZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVP
cGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRl
U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9w
ZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFu
c2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2
ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURC
VHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFu
YWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2
ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tl
bmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
OjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRl
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJl
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rh
c2s6OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVj
b2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2Rp
bmdUYXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
YW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNl
dEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBh
bm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2Fn
ZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVG
cm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5k
VmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVh
dGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50
cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29t
cHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFt
ZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlBhcnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJ
bml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRl
cyk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRo
b2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFt
ZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0Ns
YXNzOjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29t
YmluZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1
bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRz
Ojpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAg
KiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9E
T01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNl
dEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAg
ICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNl
dDo6YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNj
YWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgor
ICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6Cisg
ICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJJbXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6
OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNv
bnN1bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZVN1cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1l
S2V5ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRv
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvRWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
U2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hh
cGVQYXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2Up
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhP
YmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0
ZXJDU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvbVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRF
dmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAg
ICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAg
KiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRv
bS9NaWNyb3Rhc2tzLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdyk6Cisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFn
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNl
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURh
dGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNl
bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kQ3Jl
YXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhU
TUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHls
ZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAg
KiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25G
aWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxl
U3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6
CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjptYXBN
b3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRU
b1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAg
ICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVx
dWVzdFRvSGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0
VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpp
bnNlcnRBZGphY2VudEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNl
V2hvbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNo
U3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJs
ZVN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEluc3BlY3RlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9y
eUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0
b3JQYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dl
YkhlYXBBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uTG9nKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBs
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0
ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25E
aXNhYmxlci5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNj
aGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5l
Y3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRl
eHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpp
bml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJs
YXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9u
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAgICAg
ICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0
aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdl
L1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0
ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJzUHJv
cGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBwYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUp
OgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVu
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNaXhlZFR5cGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJlck9m
Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNo
YW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bGVu
Z3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bXV0
YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpkYXRh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVybyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50Rmxh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2Ft
cGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6
OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGVu
b3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1plcm8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NSKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVm
ZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZl
Y3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNl
RWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0
YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6RHlu
YW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2FpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5l
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJPZkF6
aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNl
UmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkVGltZUZyYW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2
ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5w
dXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6
d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6CisgICAgICAgIChXZWJDb3JlOjpaZXJv
UG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJl
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRQb2xlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYVBsYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNo
YXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lvbjo6Y29weVNoYXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lv
bjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpu
b3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3Vy
Y2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0
QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
Um90YXRpb25TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVr
YWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1l
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVj
dG9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNv
bW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNo
YXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlRpbGVkQmFja2luZ0xheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBj
cmVhdGVUaWxlQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6
UGxhdGZvcm1DQUxheWVyV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnN3YXBC
dWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZv
bnRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90
YXRpb25Qcm9wZXJ0aWVzOjppc0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3Bl
cnRpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpyb3RhdGVkU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YubW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3Bp
ZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXll
cjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNl
UHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1
bmNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6
OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1
ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3Vl
OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRlQ29tbWFuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6OnNldFNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
bkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldL
Q0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6
OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2Fj
aGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1f
Y2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1
cmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVh
dGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRvWVVWKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlh
RW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0ZURlY29kZVRhc2spOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxDYWNoZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
X3Jlc3RhcnRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJjaENvb2tpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4
dDo6Q3VybENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6d2lsbFNldHVw
U3NsQ3R4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0
aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNS
ZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVudDo6
cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
ZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAgICAg
KiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6
OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NEYXRh
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxl
eExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRp
bmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
bG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0
RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0ZUJh
c2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2Vk
VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjphZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0SW50b1RyYWNr
ZWRSZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25lZERlc2NlbmRhbnRz
TWFwOjphZGREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWdp
blVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZUJsb2NrUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExp
bmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxv
YXRpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJl
TGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxp
emVSYXJlQmxvY2tGbG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJh
Z21lbnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFn
bWVudE1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5
VHJhY2tzRm9yQXV0b1JlcGVhdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGlu
ZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVBbmNlc3RvckNsaXBwaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OlJlbmRlckxheWVyQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdl
UXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWlu
dFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVj
dEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFw
cGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRv
U2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50
ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJh
c3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2lj
U2hhcGVQYXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93
U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5k
ZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0
ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21S
ZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXpl
TWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0
ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdl
Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OkludmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRp
b25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAg
ICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NW
R1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6
Y29weSBjb25zdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5UGFpckFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQ
cmltaXRpdmUuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFu
aW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlM
aXN0QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJG
cm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9j
a1NwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQ
cmludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RN
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAg
ICAqIHRlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lN
b2NrQ0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0u
aDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2Ft
ZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVu
cXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrQW5kVGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrRm9yTW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtl
clRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25E
YXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICog
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGll
bnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OmV2YWx1YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5k
aW5nQ2FsbGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xMyAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlciBBZ2VudCBhbmQgU2Vz
c2lvbklEIHNob3VsZCBiZSBnaXZlbiB0byBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gc2V0IHVwIHRo
ZSBjb3JyZWN0IHByb3h5IGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwZTFiZmU3
MzU0MTQyNGMwZDE5ZGI5MThjNDUyZmUwNWY5ZTY3NWFmLi4xMjgxZDMyNTgzNjcyMDRlMTJkNjI3
NWZmZTE5OWU1M2JlYzg2YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwOgorICAgICAgICAoUEFMOjpD
cnlwdG9EaWdlc3RDb250ZXh0SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL0Ns
b2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChQQUw6OkNsb2NrOjpjcmVhdGUpOgorICAgICAgICAq
IHBhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW06CisgICAgICAgIChDbG9jazo6Y3JlYXRlKToKKwog
MjAxOS0wOC0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUYXBwaW5nIGJ1dHRvbnMgaW4gRGF0YSBEZXRlY3RvcnMgbG9va3VwIHByZXZpZXdzIGRv
ZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCAzNThmMmJmMDA1YWU2NDRkODEyMzI4ZDVkZWRl
NDE5YzhiYTAxY2ZiLi5hM2YyYjc2NjhjNWJjMmNlY2QyY2Y1NjI4ZGY1NWM3M2RkMTQzMTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4s
IHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAg
ICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6CisgICAg
ICAgICogZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNz
aW9uSG9zdDo6bGF1bmNoQnJvd3Nlcik6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0
OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisKIDIwMTktMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0NTU2Nyk6
IFtHVEtdW1dQRV0gWzIuMjUuMV0gV2ViS2l0V2ViRHJpdmVyIGdldHMgaW5zdGFsbGVkIGFzIFdl
YkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAyYjgwYzhjODA5ZjQ3ZmI2MWZlMWZmYTUwYjc3N2QwZjY0NGFj
NjVmLi5lMjk4OGE1YTQwOTJjMWI1MDlmOTBiZGI1MWY1Zjc0MDNiMGNkYWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDYyMSBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVz
IFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25p
dG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYXA6
OmFkZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpl
c3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVzZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRT
dXBwbGVtZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0
b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpDYWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNh
Y2hlOjptYWtlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpt
YWtlUmVkaXJlY3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OnVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9y
YWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVM
b2FkOjpyZWdpc3RlclN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
OjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3Bl
Y3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjpyZWFkUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2
ZUZyb21NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJl
dHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6
ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246
ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29v
cmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bS5jcHA6CisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1l
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6TmV0d29ya1JUQ1Byb3ZpZGVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2Rlcik6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp1
bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
OgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmMpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5l
Y3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hk
b2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nKToKKyAgICAgICAgKElQQzo6Q29ubmVj
dGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNl
bmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25X
aW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhv
c3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwpOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAgICAgIChBUEk6OlVSTDo6Y3JlYXRlKToKKyAgICAg
ICAgKEFQSTo6VVJMOjpwYXJzZVVSTElmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU9iamVjdEludm9jYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFnZTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFnZVByb3h5Ol0pOgorICAgICAgICAoLVtfV0tSZW1v
dGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9jYXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAq
IFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAod2Vi
a2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVf
aXRlbV9uZXcpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dh
Y3Rpb24pOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2Nr
X2FjdGlvbik6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3Rv
Y2tfYWN0aW9uX3dpdGhfbGFiZWwpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X25ld193aXRoX3N1Ym1lbnUpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19zZXBhcmF0b3IpOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOgorICAgICAgICAqIFNoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlLmg6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGV4bWFwTGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJv
b3RMYXllcik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKToKKyAgICAgICAgKiBTaGFyZWQvUGx1
Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5z
L05QUmVtb3RlT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSZW1vdGVPYmplY3RN
YXA6OnJlZ2lzdGVyTlBPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFyZWFi
bGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9t
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElG
b3JtQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAgICAo
QVBJOjpIVFRQQ29va2llU3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
SWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9h
ZGluZ0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdL
Q29udGV4dFNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5j
cHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdL
Tm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6
CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQpOgorICAgICAg
ICAoV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRN
YXRjaGVzQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBv
bGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFj
L1dLUGFnZVByaXZhdGVNYWMubW06CisgICAgICAgICgtW1dLT2JzZXJ2YWJsZVBhZ2VTdGF0ZSBp
bml0V2l0aFBhZ2U6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3Bw
OgorICAgICAgICAoV0tWaWV3U2V0Vmlld0NsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciBfaW5pdFdpdGhQYWdlUmVmOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgICgtW1dLSFRU
UENvb2tpZVN0b3JlIGFkZE9ic2VydmVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0RG93bmxv
YWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0QXV0b21hdGlvbkRl
bGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOm5hbWU6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9s
bGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOnVzZXJDb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoLVtfV0tBdXRvbWF0
aW9uU2Vzc2lvbiBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWR5U1FM
aXRlU3RhdGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwOgorICAgICAgICAod2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1
Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xp
ZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmNwcDoKKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNw
cDoKKyAgICAgICAgKGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdl
YmtpdEZhdmljb25EYXRhYmFzZU9wZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgICh3ZWJraXRGaW5kQ29udHJvbGxlckNv
bnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVu
dC5jcHA6CisgICAgICAgIChhdHRhY2hGb3JtQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdl
YmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEljb25Mb2Fk
aW5nQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGll
bnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmlj
YXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6
CisgICAgICAgICh3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21l
c3NhZ2VfaGFuZGxlcik6CisgICAgICAgICh3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9pbl93b3JsZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29u
dGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21h
dGlvbl9hbGxvd2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHA6CisgICAgICAgICh3ZWJraXRFbW9qaUNo
b29zZXJTZXR1cEVtb2ppU2VjdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYkluc3BlY3RvckNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5kbGVyKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYXliZUluc3RhbGxJY29uTG9h
ZGluZ0NsaWVudF0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9v
bDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVh
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwOgorICAgICAg
ICAoV0tXUEU6OlZpZXc6OlZpZXcpOgorICAgICAgICAoV0tXUEU6OlZpZXc6OnNldENsaWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcDoKKyAgICAgICAg
KFdQRVF0Vmlldzo6bm90aWZ5TG9hZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChXUEVRdFZp
ZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFjayk6CisgICAgICAgIChXUEVRdFZpZXc6OnJ1bkph
dmFTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tl
bmQuY3BwOgorICAgICAgICAoV1BFUXRWaWV3QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9J
Y29uTG9hZGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2Fk
aW5nRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6OmNy
ZWF0ZUljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVN
ZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlRHJh
d2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRUZXh0SW5k
aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1cmVDb250
cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRj
aEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZTo6Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVw
YWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5lY3RlZEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktp
dDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGx1Z2luUmVxdWlyZXNHdGsyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RUb1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OmluaXRpYWxpemVEZWJ1Z0luZGljYXRvcik6CisgICAgICAgICog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQ
ZXJmb3JtYW5jZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAg
KFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpz
ZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6
c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRp
b25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldFVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJ
Y29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Rmlu
ZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXND
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdl
SWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9S
dW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2lu
Z0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
c2V0QXV0b21hdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fkcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1l
ZGlhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2ds
aWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5z
cGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Fu
ZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3Np
dG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1h
Z2VDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJvbGxl
cjo6ZW5zdXJlRWRpdGFibGVJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FwcGxp
Y2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW06CisgICAgICAgICgtW1dLQXBwbGljYXRpb25TdGF0
ZVRyYWNraW5nVmlldyBkaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRp
YWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZp
ZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyRm9yV2ViVmlld10pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50RGlkRm9jdXM6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1
clByZXZpb3VzTm9kZTphY3Rpdml0eVN0YXRlQ2hhbmdlczp1c2VyT2JqZWN0Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAg
ICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGluaXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmlu
ZFVJOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3Jl
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tl
bmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6V2ViVmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFs
R2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRD
b25uZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVTZXRDbGllbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAg
ICAgKFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VT
ZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQp
OgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAg
KFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV0tCdW5kbGVQ
YWdlT3ZlcmxheUNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tOgorICAgICAgICAoV0tCdW5kbGVQYWdl
QmFubmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Z2V0T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHA6Cisg
ICAgICAgICh3ZWJraXRXZWJFZGl0b3JDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcDoKKyAgICAgICAgKHdlYmtpdEZyYW1lR2V0
T3JDcmVhdGUpOgorICAgICAgICAod2Via2l0V2ViUGFnZUNyZWF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tOgorICAg
ICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBpbml0V2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlciBfc2V0Rm9ybURlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0
ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldENsaWVudCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ01lc3NhZ2U6OlBlbmRpbmdNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZlclRjcFNv
Y2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVVk
cFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0
ZUNsaWVudFRjcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rv
cnk6OmNyZWF0ZU5ld0Nvbm5lY3Rpb25Tb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJS
VENTb2NrZXRGYWN0b3J5OjpDcmVhdGVBc3luY1Jlc29sdmVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yOjpQbHVnaW5EZXN0cnVjdGlv
blByb3RlY3Rvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxl
VGltZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
ZWxpdmVyRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9O
ZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDEx
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZzo6UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1
YmZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1fdGV4dEF1dG9TaXppbmdBZGp1c3RtZW50VGltZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNl
TG9hZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxl
VUlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmJlZ2luUHJpbnRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmludE9wZXJhdGlvbkd0azo6cHJpbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVy
Ojp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0RyYXdpbmdBcmVhTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OlNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpw
cm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
dXBkYXRlQ1BVTW9uaXRvclN0YXRlKToKKwogMjAxOS0wOC0xMyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlciBBZ2VudCBhbmQgU2Vzc2lvbklEIHNob3Vs
ZCBiZSBnaXZlbiB0byBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gc2V0IHVwIHRoZSBjb3JyZWN0IHBy
b3h5IGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDRjNTFlOTY1ZjY4MjZiZWMz
ZWU5MmU3NTI5NTg3ZTFiMWIyZDA0M2EuLjgyYjYwMzFiMWI5YjQ2OWJhYTkwYjRhZGE4OGMxMzcw
NGM1NDI0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTktMDgt
MTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBB
ZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdl
cjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVybWluYXRlKToKKyAgICAgICAgKiBTdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OlN0
b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXAuY3BwOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREItc3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9jZi9DaGFuZ2VMb2cKaW5kZXggYzYzZWZhYmE1ZDg4NjgzYmVmYmYxNjk1OGZmMWZlMDAwNGVh
OWM2Yi4uNWRlZDIzNjZiM2FlZTExYzgzM2E4Njc5YWI4ZjU4MThiYWFhN2Y1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVl
PFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVGcm9u
dGVuZFNldHRpbmdzKToKKwogMjAxOS0wOC0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihyMjQ4NDU0KTogV0sx
IGluc3BlY3RvciBmcm9udGVuZCBjbGllbnQgZG9lc24ndCBxdWV1ZSBtZXNzYWdlcyB0byB0aGUg
ZnJvbnRlbmQgYmVmb3JlIGl0J3MgbG9hZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5k
ZXggODViZmU3ZmU3YWE0YzNmN2ZjYmIyZDcyOGRiNWRlYTdhZGFiYThmZi4uMjIzYzlmMDZkYzMw
ZWRlMTAyMTUxODQ5MzRlYmRmMTI1OWFiMzY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3Vy
ZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbToKKyAgICAg
ICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVy
czpzdGlja3lDb250YWluZXJNYXA6XSk6CisKIDIwMTktMDctMjkgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBkaWRGaW5p
c2hDb250ZW50Q2hhbmdlT2JzZXJ2aW5nIHNob3VsZCBpbmNsdWRlIHRoZSB0eXBlIG9mIGNvbnRl
bnQgY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDY4NTUzNTY2Mjg4MWU3
MTI3ODc2OWU0MTZiNDllOTgxZmE5NTdmMmIuLjRmZTk3MWM5ZWQ0MWJiYjYwNzdjNWZjODZlOWU3
NThmNTVkMzY5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBA
QAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxv
Y2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
SGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBpbml0
XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKC1bV2Vi
SGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChX
S1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkpOgorICAgICAgICAoV0tQQ0Jvb2xlYW5SZXBs
eSk6CisgICAgICAgIChXS1BDQm9vbGVhbkFuZERhdGFSZXBseSk6CisgICAgICAgIChXS1BDSW5z
dGFudGlhdGVQbHVnaW5SZXBseSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQpOgor
ICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgt
W1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBjcmVhdGVQbHVnaW5dKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tOgorICAgICAgICAoV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZSk6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmg6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBz
Y2hlZHVsZVRpbWVyV2l0aEludGVydmFsOnJlcGVhdDp0aW1lckZ1bmM6XSk6CisgICAgICAgICog
U3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW06CisgICAgICAgIChEaWRNb2RpZnlP
cmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKGFkZFJlZGlyZWN0
VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06CisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2F0dGFjaFNjcmlwdERlYnVnZ2VyXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmg6CisgICAgICAg
ICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tOgorICAgICAgICAoV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFu
Z2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgrW1dl
YlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJs
YWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJW
aWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6
YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRUZXh0SW5kaWNh
dG9yOndpdGhMaWZldGltZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgor
ICAgICAgICAoV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2No
ZWR1bGVyKToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5pdF0pOgorCiAyMDE5LTA4LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRocmVhZGlu
ZyBhc3NlcnRpb25zIHRvIFJlZkNvdW50ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRl
eCBmNTFlMDQ0MmU1NmJmNzIzYTAxYjMwZGU4OGZiYzgxNTgzMTg0NDA5Li4yZWJhNjEzOTAwN2Uy
MTM2MjFlYTEwMjQyMzVmM2EyMzA3MWU0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6Cisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmxvYWQpOgorICAgICAgICAqIFBs
dWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojp3
bmRQcm9jKToKKyAgICAgICAgKiBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJv
bWVDbGllbnQ6OldlYkNocm9tZUNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpv
cGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdo
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVy
dHlCYWcuY3BwOgorICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJv
cGVydHlCYWcpOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhp
c3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdL
UUNBOjpDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQpOgorICAg
ICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHA6CisgICAgICAgIChXZWJOb3RpZmljYXRp
b25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6
OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUpOgorICAgICAgICAoV2ViVmlldzo6ZW50ZXJW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNl
clNjcmlwdFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dy
b3VwKToKKyAgICAgICAgKFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorCiAy
MDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggM2YwZmIyZTFjZWVhZWYwNjU5
YzM0YzgyNzFiZWVjMTA4MjM3NTZlZC4uMGQ1NWZlN2UxYmI2NTFlOTgxMGNjOGIyMzk4MTg3ZjY3
ZTk5N2VmMCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTEzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXAuaDoKKyAg
ICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg6CisKIDIwMTktMDctMjQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbYm1hbGxvY10gQWRkIElzb0hl
YXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBub3QgYWxsb2NhdGluZyB0
b28gbGFyZ2UgVkEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKaW5kZXggMDdkNzA5YmExMmM4MmM4NTQ4MmQ3M2M3MjM3N2Y1MTllN2ZjMmE1Yy4uZDBlNjI1
MjgyYTg0ZjRmMzVlZWRlZDE5NWVkYjhkYzg5N2IxYTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IEpT
Q2FsbGJhY2tPYmplY3REYXRhIHsKICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKLSAgICAgICAg
ICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTUHJpdmF0ZVByb3Bl
cnR5TWFwPigpOworICAgICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8
SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7CiAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPnNl
dFByaXZhdGVQcm9wZXJ0eSh2bSwgb3duZXIsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKaW5kZXggYWUzYTZmZTNhY2Y5YzZhODAzOTRlMWQ3MzRmYTMxN2Q5MDhm
YWUyYy4uOWNhM2I0YmY0MDg1MDc1MGI4YmM0MTk0OWY3NTA0MmIzNTcyMzFlYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PiogSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+Ojphc0NhbGxiYWNrT2JqZWN0KEVuY28KIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNz
LCB2b2lkKiBkYXRhKQogICAgIDogUGFyZW50KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKLSAgICAs
IG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxsYmFja09iamVjdERh
dGE+KGRhdGEsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVjdERhdGEobWFrZVVuaXF1
ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwganNDbGFzcykpCiB7CiB9CiAKQEAgLTY3LDcg
KzY3LDcgQEAgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+
CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoVk0mIHZtLCBKU0Ns
YXNzUmVmIGpzQ2xhc3MsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogUGFyZW50KHZtLCBz
dHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpT
Q2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKKyAgICAsIG1fY2FsbGJhY2tP
YmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xh
c3MpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAppbmRl
eCBmMWM5ZDU3MDJhOGFhNjkwNDRkZmIyOTViNDcxZmNmY2JjODkwYjZiLi43ZWVjMmE5MGE0NGY4
NjBiYWEyMjc2Yjk2ZDQ1ZjJiZDY4NjE3MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDbGFzc1JlZi5jcHAKQEAgLTU5LDIxICs1OSwyMSBAQCBPcGFxdWVKU0NsYXNzOjpPcGFxdWVK
U0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBPcGFxdWVKU0NsYXNz
KgogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogICAgIGlmIChjb25zdCBKU1N0YXRpY1Zh
bHVlKiBzdGF0aWNWYWx1ZSA9IGRlZmluaXRpb24tPnN0YXRpY1ZhbHVlcykgewotICAgICAgICBt
X3N0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVl
c1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IG1ha2VVbmlxdWU8T3BhcXVlSlND
bGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3RhdGljVmFsdWUtPm5h
bWUpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0
YXRpY1ZhbHVlLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghdmFsdWVOYW1lLmlzTnVsbCgpKQot
ICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1lLmltcGwoKSwgc3Rk
OjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVydHks
IHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVl
TmFtZSkpOworICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1lLmlt
cGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVy
dHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJpYnV0ZXMsIHZh
bHVlTmFtZSkpOwogICAgICAgICAgICAgKytzdGF0aWNWYWx1ZTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGlmIChjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5jdGlvbiA9IGRlZmlu
aXRpb24tPnN0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IHN0
ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAg
ICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1
bmN0aW9uc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3RhdGljRnVuY3Rpb24tPm5hbWUpIHsK
ICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRp
Y0Z1bmN0aW9uLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghZnVuY3Rpb25OYW1lLmlzTnVsbCgp
KQotICAgICAgICAgICAgICAgIG1fc3RhdGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmlt
cGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihzdGF0aWNGdW5jdGlv
bi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0aW9uLT5hdHRyaWJ1dGVzKSk7CisgICAgICAg
ICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBtYWtl
VW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5jYWxsQXNGdW5jdGlv
biwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgICAgICsrc3RhdGljRnVu
Y3Rpb247CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjgsMjEgKzEyOCwyMSBAQCBPcGFxdWVKU0Ns
YXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShKU0M6OlZNJiwgT3BhcXVl
SlNDbGFzcyoganNDbAogICAgIDogbV9jbGFzcyhqc0NsYXNzKQogewogICAgIGlmIChqc0NsYXNz
LT5tX3N0YXRpY1ZhbHVlcykgewotICAgICAgICBzdGF0aWNWYWx1ZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAgICAgICAgc3RhdGljVmFs
dWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CiAgICAg
ICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
anNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmVuZCgpOwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xh
c3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRp
Y1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQo
IWl0LT5rZXktPmlzQXRvbSgpKTsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBpdC0+
a2V5LT5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKHZhbHVl
TmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQtPnZhbHVl
LT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5hdHRyaWJ1
dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKHZhbHVlTmFt
ZS5pbXBsKCksIG1ha2VVbmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQtPnZhbHVlLT5nZXRQcm9w
ZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1
ZU5hbWUpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChqc0NsYXNzLT5tX3N0YXRpY0Z1
bmN0aW9ucykgewotICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9w
YXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAgICAgc3RhdGljRnVuY3Rp
b25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CiAg
ICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0ganNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMtPmVuZCgpOwogICAgICAgICBmb3IgKE9w
YXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0Ns
YXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKLSAgICAgICAgICAgIHN0YXRpY0Z1
bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0
YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rpb24sIGl0LT52YWx1ZS0+
YXR0cmlidXRlcykpOworICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5hZGQoaXQtPmtleS0+
aXNvbGF0ZWRDb3B5KCksIG1ha2VVbmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oaXQtPnZhbHVl
LT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzKSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBPcGFx
dWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHREYXRhID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5vcGFxdWVKU0NsYXNzRGF0YSgpLmFkZCh0aGlzLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFjb250ZXh0RGF0YSkKLSAgICAgICAgY29udGV4
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4oZXhlYy0+
dm0oKSwgdGhpcyk7CisgICAgICAgIGNvbnRleHREYXRhID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0Ns
YXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwogICAgIHJldHVybiAqY29udGV4dERh
dGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5n
Q29uc3RyYWludFByaXZhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKaW5kZXggZDllZTY3NDAzNDljZmVmZGZiY2MwZDMxMDk0
ZjFmNGRlNWE1MmMxZS4uYmE0YTVhMTY2OTdhZjVmOGE5NzIyZTU3NDY5ZTM5NGQ5NzkwNDJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25z
dHJhaW50UHJpdmF0ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU0NvbnRleHRHcm91cEFk
ZE1hcmtpbmdDb25zdHJhaW50KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBKU01hcmtpbmdDb25z
dHIKICAgICAvLyBlbHNlIGdldHMgbWFya2VkLgogICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZv
bGF0aWxpdHkgPSBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVkQnlNYXJraW5nOwogICAgIAot
ICAgIGF1dG8gY29uc3RyYWludCA9IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0
cmFpbnQ+KAorICAgIGF1dG8gY29uc3RyYWludCA9IG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0Nv
bnN0cmFpbnQ+KAogICAgICAgICB0b0NTdHJpbmcoIkFtYyIsIGNvbnN0cmFpbnRJbmRleCwgIigi
LCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWludENhbGxiYWNrKSksICIp
IiksCiAgICAgICAgIHRvQ1N0cmluZygiQVBJIE1hcmtpbmcgQ29uc3RyYWludCAjIiwgY29uc3Ry
YWludEluZGV4LCAiICgiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWlu
dENhbGxiYWNrKSksICIsICIsIFJhd1BvaW50ZXIodXNlckRhdGEpLCAiKSIpLAogICAgICAgICBb
Y29uc3RyYWludENhbGxiYWNrLCB1c2VyRGF0YV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1dyYXBwZXJNYXAubW0KaW5kZXggZDQ2OWI3NWEzMWYwZWZjYTlkMDdhYmIwM2IwYmU2NjE2MWIz
OTU2Ny4uNGI1OTkwNzNmZTc2YjQ4NjQ0MzY5OWFiZGNiMzRjNDE2NGJjMmUzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYwNiw3ICs2MDYsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRS
ZWYpY29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0g
TlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBl
cnNvbmFsaXR5OwogICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9j
XSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25z
IGNhcGFjaXR5OjBdOwogCi0gICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4o
dG9KUyhjb250ZXh0KS0+dm0oKSk7CisgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gbWFrZVVuaXF1
ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4o
dG9KUyhjb250ZXh0KS0+dm0oKSk7CiAKICAgICBBU1NFUlQoIXRvSlNHbG9iYWxPYmplY3QoY29u
dGV4dCktPndyYXBwZXJNYXAoKSk7CiAgICAgdG9KU0dsb2JhbE9iamVjdChjb250ZXh0KS0+c2V0
V3JhcHBlck1hcChzZWxmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakND
YWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IGVlOTMyODIxZWY3NGJkNjg5MWFlOGYyOWZhZDdiYmE1
YWZlYTBjYmMuLjczY2I0MjcwNDM4MTgzMWU4MTlkOWQ5NDNlYjllNTQ0MDMwOTZmOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQpA
QCAtMTk1LDE4ICsxOTUsMTggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZURv
dWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50RG91YmxlPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50RG91YmxlPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVC
b29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3Vt
ZW50Qm9vbGVhbj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgp
CkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudElk
PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNo
YXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpCkBAIC0yMjgsMTkgKzIyOCwxOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAoY2xzID09IFtKU1Zh
bHVlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
QXJndW1lbnRKU1ZhbHVlPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudEpTVmFsdWU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TU3RyaW5nIGNsYXNz
XSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRO
U1N0cmluZz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1l
bnROU1N0cmluZz4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNOdW1iZXIgY2xhc3NdKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TTnVtYmVy
PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TTnVt
YmVyPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0RhdGUgY2xhc3NdKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RhdGU+KCk7CiAgICAg
ICAgIGlmIChjbHMgPT0gW05TQXJyYXkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKICAgICAgICAgaWYgKGNs
cyA9PSBbTlNEaWN0aW9uYXJ5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEaWN0aW9uYXJ5PigpOwogCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqKQpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFN0
cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChOU0ludm9jYXRpb24gKmlu
dm9jYXRpb24gPSB2YWx1ZVRvVHlwZUludm9jYXRpb25Gb3IoY29weSkpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3RydWN0PihpbnZvY2F0aW9u
LCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRT
dHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiB9OwpAQCAtMzM1LDQ1ICszMzUsNDUgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBl
RG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
UmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tS
ZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVC
b29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVz
dWx0Qm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRC
b29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lkKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lkPigpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVN0cnVjdChjb25zdCBjaGFyKiBiZWdpbiwgY29uc3Qg
Y2hhciogZW5kKQogICAgIHsKICAgICAgICAgU3RyaW5nUmFuZ2UgY29weShiZWdpbiwgZW5kKTsK
ICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IHR5cGVUb1ZhbHVlSW52b2Nh
dGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxi
YWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMg
SlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JJbnZvY2F0aW9uKEpTQ29udGV4dCAq
Y29udGV4dCwgTlNJbnZvYwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKICAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKLSAgICBhdXRvIGltcGwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihpbnZvY2F0aW9uLCB0eXBl
LCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUocmVzdWx0KSk7Cisg
ICAgYXV0byBpbXBsID0gbWFrZVVuaXF1ZTxKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4o
aW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZN
b3ZlKHJlc3VsdCkpOwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IGltcGwtPm5hbWUoKTsKICAg
ICByZXR1cm4gdG9SZWYoSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG5hbWUsIFdURk1vdmUoaW1wbCkpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCBlMDFlOTcw
YzdmNTgwMzY1NjE4ZWYxZGFiODU1NDRkNzA0ZjliNDdhLi43OGQ3NjU1ZmY4MDc3NjBkNDYwOGE2
MTdlNTdjOTBmMTU0Mjc5OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ0NvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHZvaWQganNjQ29udGV4
dFNldFZpcnR1YWxNYWNoaW5lKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdSZWZQdHI8SlNDVmlydHVh
bE0KICAgICAgICAgICAgIHByaXYtPmpzQ29udGV4dCA9IEpTUmV0YWluUHRyPEpTR2xvYmFsQ29u
dGV4dFJlZj4oQWRvcHQsIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoanNjVmlydHVhbE1h
Y2hpbmVHZXRDb250ZXh0R3JvdXAocHJpdi0+dm0uZ2V0KCkpLCBudWxscHRyKSk7CiAgICAgICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlNHbG9iYWxPYmplY3QocHJpdi0+anNDb250ZXh0Lmdl
dCgpKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPndyYXBwZXJNYXAoKSkKLSAgICAgICAg
ICAgIGdsb2JhbE9iamVjdC0+c2V0V3JhcHBlck1hcChzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V3Jh
cHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgpKSk7CisgICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldFdyYXBwZXJNYXAobWFrZVVuaXF1ZTxKU0M6OldyYXBwZXJNYXA+KHByaXYtPmpzQ29u
dGV4dC5nZXQoKSkpOwogICAgICAgICBqc2NWaXJ0dWFsTWFjaGluZUFkZENvbnRleHQocHJpdi0+
dm0uZ2V0KCksIGNvbnRleHQpOwogICAgIH0gZWxzZSBpZiAocHJpdi0+dm0pIHsKICAgICAgICAg
QVNTRVJUKHByaXYtPmpzQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKaW5kZXggMTFiYjdjMGI4NzM3ZGI2N2RkMTdkY2QyNGY3
MDI5NDM0NDY5YTgwMy4uZjUyM2VhNDE5OWY4YWJkNzMyZjc3YjYyODE0MTIwMTM0YmI4YmVhOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFdyYXBwZXJNYXA6OldyYXBw
ZXJNYXAoSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCkKLSAgICA6IG1fY2FjaGVkSlNXcmFw
cGVycyhzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpTT2Jq
ZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKKyAgICA6IG1fY2FjaGVkSlNXcmFwcGVycyht
YWtlVW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhq
c0NvbnRleHQpLT52bSgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHAKaW5kZXggYTc1ZjU4ZGMxNDZiM2I2NDk1Y2ViMTY3YWRmNGRh
YmZmMDZiMGM4OS4uZGE0NzcwNTFmMzQ1ZTA3MTY4ZmM3ZDA2ZTBjN2Y1MjYzMTE4NmU2MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCkBAIC0x
MzQsNyArMTM0LDcgQEAgUGFnZSogU3RhY2s6OmVuc3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcykK
ICAgICBpZiAoTElLRUxZKGl0ICE9IG1fcGFnZXMuZW5kKCkpKQogICAgICAgICBtX2xhc3RBY2Nl
c3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYWdlPiBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihi
YXNlQWRkcmVzcyk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFzZUFkZHJl
c3MsIFdURk1vdmUocGFnZSkpOwogICAgICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKaW5kZXggMmM5YzNiMGRlODllYjNlMzgzZjRjYmRjZjIxMmQyNjhjMWMx
OWRiYS4uN2Y2ODU4NmMxYzAyODljMGEzMjUyMmZkZTllMDY3ZGYxZjQxZTIxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTEyNDEsNyArMTI0MSw3IEBA
IGNsYXNzIExvd2VyVG9BaXIgewogICAgIHZvaWQgcHJpbnQoVmFsdWUqIG9yaWdpbiwgQXJndW1l
bnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgYXV0byBwcmludExpc3QgPSBQcmlu
dGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0KGFyZ3VtZW50cy4uLik7Ci0gICAgICAgIGF1dG8gcHJp
bnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3Bl
Y2lhbChzdGQ6Om1ha2VfdW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmludExpc3QpKSk7Cisg
ICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwq
PihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmludExp
c3QpKSk7CiAgICAgICAgIEluc3QgaW5zdChBaXI6OlBhdGNoLCBvcmlnaW4sIEFyZzo6c3BlY2lh
bChwcmludFNwZWNpYWwpKTsKICAgICAgICAgUHJpbnRlcjo6YXBwZW5kQWlyQXJncyhpbnN0LCBz
dGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKICAgICAgICAgYXBwZW5kKFdU
Rk1vdmUoaW5zdCkpOwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgY2xhc3MgTG93ZXJUb0FpciB7CiAg
ICAgewogICAgICAgICBpZiAoIWZpZWxkKSB7CiAgICAgICAgICAgICBmaWVsZCA9IHN0YXRpY19j
YXN0PFQqPigKLSAgICAgICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5p
cXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKSk7CisgICAgICAg
ICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJn
dW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmaWVs
ZDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAppbmRleCBm
ZmNiMmQ0ZTI3MTQ0Mjk3MGU1NDY0MzY2NzBmN2YyOWRlYjFhYjFjLi4yZWNjZGFjMDQ5ZTY4ZDEx
M2UyM2Y5N2YyNDM1M2E1ZDRhYWEzYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CiBQcm9jZWR1cmU6OlByb2NlZHVyZSgpCiAgICAgOiBtX2NmZyhuZXcgQ0ZHKCp0aGlzKSkK
ICAgICAsIG1fbGFzdFBoYXNlTmFtZSgiaW5pdGlhbCIpCi0gICAgLCBtX2J5cHJvZHVjdHMoc3Rk
OjptYWtlX3VuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQorICAgICwgbV9ieXByb2R1Y3RzKG1h
a2VVbmlxdWU8T3BhcXVlQnlwcm9kdWN0cz4oKSkKICAgICAsIG1fY29kZShuZXcgQWlyOjpDb2Rl
KCp0aGlzKSkKIHsKICAgICBtX2NvZGUtPnNldE51bUVudHJ5cG9pbnRzKG1fbnVtRW50cnlwb2lu
dHMpOwpAQCAtMzExLDI4ICszMTEsMjggQEAgdm9pZCBQcm9jZWR1cmU6OmRlbGV0ZU9ycGhhbnMo
KQogRG9taW5hdG9ycyYgUHJvY2VkdXJlOjpkb21pbmF0b3JzKCkKIHsKICAgICBpZiAoIW1fZG9t
aW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxEb21pbmF0
b3JzPigqdGhpcyk7CisgICAgICAgIG1fZG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8RG9taW5hdG9y
cz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9kb21pbmF0b3JzOwogfQogCiBOYXR1cmFsTG9vcHMm
IFByb2NlZHVyZTo6bmF0dXJhbExvb3BzKCkKIHsKICAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQot
ICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigq
dGhpcyk7CisgICAgICAgIG1fbmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxOYXR1cmFsTG9vcHM+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOwogfQogCiBCYWNrd2FyZHNDRkcm
IFByb2NlZHVyZTo6YmFja3dhcmRzQ0ZHKCkKIHsKICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZHKQot
ICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZHPigq
dGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNDRkc+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQogCiBCYWNrd2FyZHNEb21p
bmF0b3JzJiBQcm9jZWR1cmU6OmJhY2t3YXJkc0RvbWluYXRvcnMoKQogewogICAgIGlmICghbV9i
YWNrd2FyZHNEb21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNr
d2FyZHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTM1OCw3ICszNTgs
NyBAQCB2b2lkKiBQcm9jZWR1cmU6OmFkZERhdGFTZWN0aW9uKHNpemVfdCBzaXplKQogewogICAg
IGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YVNlY3Rpb24+
KHNpemUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4gZGF0YVNlY3Rpb24gPSBt
YWtlVW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKICAgICB2b2lkKiByZXN1bHQgPSBkYXRhU2Vj
dGlvbi0+ZGF0YSgpOwogICAgIG1fYnlwcm9kdWN0cy0+YWRkKFdURk1vdmUoZGF0YVNlY3Rpb24p
KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29k
ZS5jcHAKaW5kZXggMzNmOGFiZmVmYmMxZjhmOTE2NTQ1YTNiZGNhMTk2YjBjYzY2YzM5OC4uZDVk
NjljMzBhNTk5MTc1ZjI4MTQ4MzYyODYzNmZjYjc3MDY4MDE2NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgQ0NhbGxTcGVjaWFs
KiBDb2RlOjpjQ2FsbFNwZWNpYWwoKQogewogICAgIGlmICghbV9jQ2FsbFNwZWNpYWwpIHsKICAg
ICAgICAgbV9jQ2FsbFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxDQ2FsbFNwZWNpYWwqPigKLSAgICAg
ICAgICAgIGFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbFNwZWNpYWw+KCkpKTsKKyAg
ICAgICAgICAgIGFkZFNwZWNpYWwobWFrZVVuaXF1ZTxDQ2FsbFNwZWNpYWw+KCkpKTsKICAgICB9
CiAKICAgICByZXR1cm4gbV9jQ2FsbFNwZWNpYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGYzNmI5YjJmZTY2ODE2MGI4ODk5YjBjNTBiMzE5
N2Q3NTg4MjRmODAuLjk1Y2FhMDA0ZDhlYjM5MjMzMGUxY2NiYjYzOWE1Y2VlNzljYmM3OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCkBAIC0xMDAs
NyArMTAwLDcgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAg
ICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvZGUubV9nZW5lcmF0
ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9j
YXRlUmVnaXN0ZXJzPihjb2RlKTsKKyAgICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVS
ZWdpc3RlcnMgPSBtYWtlVW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM+KGNvZGUp
OwogICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycy0+cHJlcGFyZUZv
ckdlbmVyYXRpb24oKTsKIAogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci90ZXN0YWlyLmNwcAppbmRleCBlZjE1NDRjMDdiYjMyYTkwMzdmMmNiNzFlMTVlNzRhOWJl
NjFiZjk0Li4zZGNhMjk2Nzg4YjAwMTA2OGUwMWY0MjNlMTE2YzdjMmE0ZTdkYTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gY29tcGlsZShCMzo6UHJvY2VkdXJlJiBwcm9j
KQogICAgIGdlbmVyYXRlKHByb2MuY29kZSgpLCBqaXQpOwogICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcihqaXQsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNv
bXBpbGF0aW9uPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAg
ICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0
YWlyIGNvbXBpbGF0aW9uIiksIHByb2MucmVsZWFzZUJ5cHJvZHVjdHMoKSk7CiB9CiAKQEAgLTE4
NTUsNyArMTg1NSw3IEBAIHZvaWQgdGVzdEludmFsaWRhdGVDYWNoZWRUZW1wUmVnaXN0ZXJzKCkK
ICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjpiaWdJbW0oYml0d2lzZV9jYXN0
PGludHB0cl90PigmdGhpbmdzKSksIGJhc2UpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIHBhdGNo
UG9pbnQxUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRj
aHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRj
aHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNp
YWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkp
OwogCiAgICAgLy8gSW4gUGF0Y2hwb2ludCwgTG9hZCB0aGluZ3NbMF0gLT4gdG1wLiBUaGlzIHdp
bGwgbWF0ZXJpYWxpemUgdGhlIGFkZHJlc3MgaW4geDE3IChkYXRhTWVtb3J5UmVnaXN0ZXIpLgog
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQxID0gcGF0Y2hQb2ludDFSb290LT5h
cHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4o
KSk7CkBAIC0xOTMwLDcgKzE5MzAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZCgpCiAg
ICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJl
Z2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lh
bCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFk
ZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6
OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1
ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2
b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDIoKQogICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZv
Ojphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQpOwogCi0gICAgQjM6
OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjpt
YWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNp
YWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBh
dGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9v
dC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3Jp
Z2luKCkpOwpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQz
KCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2Mu
cGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRT
cGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRT
cGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNv
ZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAg
ICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuaAppbmRleCAxNTVjYTRhYjQ3MGIwMTQ0MmFkOTU0M2E4YWUxZmMxZmM1OWY3ZTNhLi4x
YzdhZDBmOTRlMDZiOGMzMWJmZTdjYzk0ZDA1NTJjNDc3OTYwN2U3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiMy5oCkBAIC0xODksNyArMTg5LDcgQEAgZXh0ZXJuIExvY2sgY3Jhc2hMb2NrOwog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY29tcGlsZVByb2MoUHJvY2VkdXJl
JiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsID0gT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2
ZWwoKSkKIHsKICAgICBwcm9jZWR1cmUuc2V0T3B0TGV2ZWwob3B0TGV2ZWwpOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1cmUpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJl
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBjMTA4
NTlhY2VkM2RiNzhiNjY0OTc2YTA4YjhlNWI0OGQ2NTJiMmYzLi43N2ZiNjVkYTBiN2EwNmM3ZDY1
OGJhYmRiNGU1MTA4YTc5MTdlZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC04NTMsNyArODUzLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIHN0
YXRlLnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcihzcGlsbFN0YXRlKTsKIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWFjY2Vzcy5jYWxsTGlua0luZm8oKSk7Ci0gICAgICAgICAg
ICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rSW5mbz4o
KTsKKyAgICAgICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IG1ha2VVbmlxdWU8Q2FsbExp
bmtJbmZvPigpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2VuZXJhdGVkIGEgcG9s
eW1vcnBoaWMgY2FsbCBzdHViIHRoYXQganVtcGVkIGJhY2sgdG8gdGhlIGdldHRlcgogICAgICAg
ICAgICAgLy8gc3R1Yiwgd2hpY2ggdGhlbiBqdW1wZWQgYmFjayB0byB0aGUgbWFpbiBjb2RlLCB0
aGVuIHdlJ2QgaGF2ZSBhIHJlYWNoYWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKaW5kZXggMmJk
OWZlNjUxOTlkMDdmMTczZTM4MzBkYzc0ZTQ2N2ViOWQ1NDFmYy4uOTI1N2ZjMjI2NjUyOWY4NjEz
N2Q1ZGFkOGM5MjQ5NzE4MzkwNDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCkBAIC0xMDMsNyAr
MTAzLDcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyA6IHB1Ymxp
YyBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6U2xvd1AKICAgICB2b2lkIEFjY2Vzc0Nhc2VTbmlw
cGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJv
bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBl
IHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvID0gaml0LmxhYmVsKCk7IFwKLSAgICAgICAgbV9nZW5l
cmF0b3JzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhB
cmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlw
ZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAor
ICAgICAgICBtX2dlbmVyYXRvcnMuYXBwZW5kKG1ha2VVbmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJh
dG9yV2l0aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBS
ZXN1bHRUeXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJn
cykpOyBcCiAgICAgfSBcCiAKIFNOSVBQRVRfU0xPV19QQVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FM
TF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCAzM2JiMGMwNjYzNTM4MWU4OThmNjVhODc0ZjFm
MzZhOGM5NDgyM2FmLi4xMGM2NWJiOWRkNzA5YTlhZjdhYmE2Y2ViOGE5YjczNTk3NzE2NDFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcApAQCAtNjUsMTUgKzY1LDE1IEBAIHZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAg
ICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Js
b2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CiAKLSAgICBhdXRv
IGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFz
aWNCbG9jazo6RW50cnlCbG9jayk7Ci0gICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7
CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29k
ZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZmlyc3RCbG9jayA9IG1ha2VVbmlx
dWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOwog
ICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCiAgICAgYXBw
ZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVu
dCA9IGZpcnN0QmxvY2suZ2V0KCk7CiAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2Nr
KSk7CiAKLSAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9j
az4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOworICAgIGF1dG8gZXhpdCA9IG1ha2VV
bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7
CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAKQEAgLTg0LDcg
Kzg0LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBib29sIGNyZWF0ZWRCbG9j
ayA9IGZhbHNlOwogICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29kZSBpcyBhIGp1bXAg
dGFyZ2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgogICAg
ICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZz
ZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7Ci0gICAgICAgICAgICBhdXRvIG5ld0Js
b2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGluc3RydWN0aW9uKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9j
az4oaW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwog
ICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAg
Y3JlYXRlZEJsb2NrID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDhkYWMxNTg1ZmFiMmI5OThjMWU1ZDg4NzUyYmExMmRm
NmRhZGJkZS4uMzkzZjE4MjRlNDFhNGJlYjUxNGM2MmE2OTZmMzNhODM3MjQ5NWNkZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTI2
NSw3ICsyNjUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKIAogdm9p
ZCBDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEmIHNodWZmbGVEYXRhKQogewotICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKKyAgICBtX2ZyYW1l
U2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0
YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBlZjFjYWJmYTcxOGIwODBkN2YzZTg2MzdmOWY5NGY2
MDU4NmVlNGU4Li4zOWEyM2I0YzdmNDdkOGZjZTVlMzBlZWNhNTUwZTc3ZGFkMzE1ODZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTMzNyw3
ICsxMzM3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQog
Q29kZUJsb2NrOjpKSVREYXRhJiBDb2RlQmxvY2s6OmVuc3VyZUpJVERhdGFTbG93KGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYpCiB7CiAgICAgQVNTRVJUKCFtX2ppdERhdGEpOwotICAgIG1faml0
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGF0YT4oKTsKKyAgICBtX2ppdERhdGEgPSBtYWtl
VW5pcXVlPEpJVERhdGE+KCk7CiAgICAgcmV0dXJuICptX2ppdERhdGE7CiB9CiAKQEAgLTE1NTAs
NyArMTU1MCw3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6cmFyZUNhc2VQcm9maWxlQ291bnRGb3JC
eXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrCiB2b2lkIENvZGVCbG9jazo6c2V0
Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogewog
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBlbnN1cmVKSVREYXRh
KGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3Rl
ckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CisgICAgZW5zdXJlSklURGF0YShs
b2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8UmVnaXN0ZXJBdE9mZnNl
dExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOwogfQogCiB2b2lkIENvZGVCbG9jazo6c2V0Q2Fs
bGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJl
Z2lzdGVyQXRPZmZzZXRMaXN0KQpAQCAtMTc5MCw3ICsxNzkwLDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXRTbG93KGNvbnN0
IE9wQ2F0Y2gKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytpKQog
ICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
KTsKIAotICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgIGF1dG8gcHJvZmlsZXMg
PSBtYWtlVW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5z
aXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5tX3NpemUgPT0gbGl2ZU9wZXJh
bmRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3Np
emU7ICsraSkKICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9
IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCA4NzA2OGJhNjVkZDg1YzIzZmJlNGE0OTBlOTc0YTcyODFmMjU2
MDRjLi4zMTQzOGUwYWM1MDY5YjI3NDk2OTg4ODZhYjExMjAwNzZiY2I3M2IxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC05NDMsNyArOTQzLDcgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0
YUlmTmVjZXNzYXJ5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkgewotICAgICAg
ICAgICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAg
ICAgICAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAg
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIG1fY2F0Y2hQcm9maWxlcyBjYW4gYmUgdG91
Y2hlZCBmcm9tIGNvbXBpbGVyIHRocmVhZHMuCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RG
TW92ZShyYXJlRGF0YSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4IDJkOTQzMWNmMGIxNDRmYTNhMmMyMjFh
NjZlOTQwNzBjNzc1MGUwZTAuLmIxYTAxZmZhNGQ5MzQ4ZmVjYjI0Yzk2ODhiYzgwMDUyZjkzODg2
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9m
aWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIEV4aXRQcm9maWxlOjphZGQoQ29kZUJsb2Nr
KiBvd25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAvLyBJZiB3ZSd2ZSBu
ZXZlciBzZWVuIGFueSBmcmVxdWVudCBleGl0cyB0aGVuIGNyZWF0ZSB0aGUgbGlzdCBhbmQgcHV0
IHRoaXMgc2l0ZQogICAgIC8vIGludG8gaXQuCiAgICAgaWYgKCFwcm9maWxlLm1fZnJlcXVlbnRF
eGl0U2l0ZXMpIHsKLSAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CisgICAgICAgIHByb2ZpbGUu
bV9mcmVxdWVudEV4aXRTaXRlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+
PigpOwogICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMtPmFwcGVuZChzaXRlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcApp
bmRleCA0ZjQ4YTFkNmM5ODcyMmU1YWMyZWNlODdlNTA0MDIzMmY5YTVkNmIxLi40ZmIxMTU3MzAw
M2I1MmVmZDlhODY2ZmIzYmRmNzc1MDk4Y2VmYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6
Y29tcGlsYXRpb25EaWRDb21wbGV0ZShDb2RlQmxvY2sqLCBDb2RlQmxvY2sqLAogVmVjdG9yPERl
ZmVycmVkU291cmNlRHVtcD4mIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6ZW5zdXJlRGVm
ZXJyZWRTb3VyY2VEdW1wKCkKIHsKICAgICBpZiAoIW1fZGVmZXJyZWRTb3VyY2VEdW1wKQotICAg
ICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPERlZmVy
cmVkU291cmNlRHVtcD4+KCk7CisgICAgICAgIG1fZGVmZXJyZWRTb3VyY2VEdW1wID0gbWFrZVVu
aXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPj4oKTsKICAgICByZXR1cm4gKm1fZGVmZXJy
ZWRTb3VyY2VEdW1wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggZGI5YWQxNjBhYzI4MTMwZjM5ODQxZmYzYmZlYjMyYjY4
M2RkZWFkNi4uZGY0ZDc3Y2UzZjYzYjUyMDA3NTU0NGM0MWExNmNiMjMxZDdkZmE2NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcApAQCAt
MjQzLDcgKzI0Myw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6Okdl
dHRlcjogewotICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3Rh
dHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gYWNjZXNzLmFzPEdldHRlclNldHRlckFj
Y2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZvKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpj
YWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgY2Fs
bEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRWYXJpYW50LmNwcAppbmRleCBmYzFmNDYwZGU5NjU0MWQ4ZmEwOTljYmI0NWYyMzA5YzJh
MzMzODBmLi5lZDhkNDkzZjdlZTZmMWRhMmI5MDlhZDU3YzYyNzcxODEzYzJkNmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgR2V0QnlJZFZhcmlhbnQmIEdldEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0o
Y29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQogICAgIG1fY3VzdG9tQWNjZXNzb3JHZXR0ZXIg
PSBvdGhlci5tX2N1c3RvbUFjY2Vzc29yR2V0dGVyOwogICAgIG1fZG9tQXR0cmlidXRlID0gb3Ro
ZXIubV9kb21BdHRyaWJ1dGU7CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtTdGF0dXMpCi0gICAg
ICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPigq
b3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBtYWtl
VW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CiAgICAgZWxz
ZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICByZXR1cm4gKnRoaXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcAppbmRleCAwOTI5ZDZmYjQxMjY3NGVkN2YyMDQwNDVmYjQyNWVi
N2QzOGQzYzkzLi42ZWViMTQ1YjMzNzk2NjJhZjFjMTUwMDE5MDc2NzI3YTM5ZWUyYmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUqIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKAogICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
JiBrZXkpCiB7CiAgICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7CisgICAgICAgIG1fZGF0YSA9
IG1ha2VVbmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICBpZiAobV9kYXRhLT5hdChpKS5rZXkoKSA9PSBrZXkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCmlu
ZGV4IGI0OWU0ZTI0MmU1MmYwODEzMTVlNDhmYjFlMWJjYzI5N2U1MjhhZTAuLmExZWNiOTRkZDBk
MTg2NzA4NjM1MmY1MmI1YjU4YzMxOTNlZWNmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4gY2xvbmUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKICAgICB9CiAKICAgICBj
b25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jaGFpbjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHAKaW5kZXggMjJmNDU1ODE0Yjg0YWY0ZmU3NGNhZjIzNDAxZDMwYWRhZGFlNWM2ZS4u
M2IzMDIzMzlmMDM1MGRhYzQyOGYzZjA0Y2M3MzUyYTNhZTUyMWI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC02
MTYsNyArNjE2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6
cmVnZW5lcmF0ZSgKICAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgY29kZUJsb2NrVGhhdE93
bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsK
ICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CiAgICAgaWYg
KCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5j
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1v
dmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IG1h
a2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFr
UmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAppbmRleCBjMmQ5NTMyMGNlYmQ1NmRiZGM5M2VlYmQ2YzMxNDBhN2RmN2NjMjA5Li5kNjQyYmNj
ZmU3OTc2NmM1Mjc5YmJjODEwODcwMWViN2Y4NTgyNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxleEdldFN0YXR1czo6SW5s
aW5lYWJsZTogewogICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtT
dGF0dXM+IGNhbGxMaW5rU3RhdHVzID0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtl
VW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4o
KS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxMaW5rU3Rh
dHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVE
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
VmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCmluZGV4IDVkNmIyOTA0NWNhNjc1YzU2ZmE3MWQ1NDc1YTExNWIyZGY2ZjNjNWUuLjcy
YzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZlNjM2MmY3MmU2YzBhMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcApAQCAtNDYsNyArNDYs
NyBAQCBQdXRCeUlkVmFyaWFudCYgUHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBQdXRC
eUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jb25kaXRpb25TZXQgPSBvdGhlci5tX2NvbmRpdGlv
blNldDsKICAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zmc2V0OwogICAgIGlmIChvdGhlci5tX2Nh
bGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOworICAgICAgICBtX2Nh
bGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExp
bmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG51bGxwdHI7
CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IDk2ZDIyZWNmYTBhNGM3NTZlZGZmNjFmMDAx
M2Y3MjU4ZTdkM2ZiZDUuLjUzZjIwOGJjYWRlZDNkZWEyZGVlMThhMGU4OTYwNWM0OTBhMTk1YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0
dXNlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0
dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAKIENhbGxMaW5rU3RhdHVzKiBSZWNvcmRl
ZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1
c1B0ciA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CiAgICAgQ2FsbExpbmtT
dGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBjYWxscy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTUzLDcgKzUzLDcgQEAgQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6
OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4KIAogR2V0QnlJ
ZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0
byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7Cisg
ICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7CiAg
ICAgR2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGdldHMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAg
IHJldHVybiByZXN1bHQ7CkBAIC02MSw3ICs2MSw3IEBAIEdldEJ5SWRTdGF0dXMqIFJlY29yZGVk
U3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwK
ICAgICAKIFB1dEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgUHV0QnlJZFN0YXR1cyYgc3RhdHVz
KQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQdXRCeUlkU3RhdHVz
PihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxQdXRCeUlkU3RhdHVz
PihzdGF0dXMpOwogICAgIFB1dEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsK
ICAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1
c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjksNyArNjksNyBAQCBQdXRCeUlkU3Rh
dHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sCiAKIEluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlk
U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEluQnlJZFN0YXR1cyYg
c3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbkJ5SWRT
dGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEluQnlJZFN0
YXR1cz4oc3RhdHVzKTsKICAgICBJbkJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQo
KTsKICAgICBpbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKaW5kZXggMzBhMWYwNTUyNTllM2RlZDFhNzE2OGVlMzUyNmY3MmMwODRiZWU1YS4u
ZmNjMjkxMTgwMjQ0ZTBiMzIyOWUyZmQ3NjMwMDdiZTc5YTg3NDFjZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJ1Y3R1cmVTdHViQ2xl
YXJpbmdXYXRjaHBvaW50KiBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJl
ZmVyZW5jZQogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24mIGtleSkKIHsKICAgICBpZiAoIWhvbGRlclJlZikKLSAgICAgICAgaG9s
ZGVyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+
KGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBob2xkZXJSZWYgPSBtYWtlVW5pcXVlPFdh
dGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJsb2NrLCBzdHViSW5mbyk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fY29kZUJsb2NrID09IGNvZGVCbG9j
ayk7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fc3R1YkluZm8gPT0gc3R1YkluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKaW5kZXggNzIyMmQ0ODJhZDFlNWUyODZjZWY1OWQ0ZmYxZTFmNWViMDcxMDc4ZC4uNDkx
OTVkMTU3MjFkMmNkYTRmNzQ4YWU4ZGJlMmFmMDA5YTI4YTdhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0xNjAs
NyArMTYwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3Jw
aGljQWNjZXNzPiBhY2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigp
OworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3Mg
PSBtYWtlVW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsK
ICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggZTAwNmQxNmI5YjhhMGZjMzBmMDQzM2NkZTYwMmVj
YzNiMTY4ZDQyZS4uMmM5YTBiMzAxZWIwOThlMTE1ZWYxZTM2YjEyN2JlMjllM2FiZGEyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBVbmxp
bmtlZENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coQ29kZUJsb2NrKiBjb2QKICAgICAg
ICAgaWYgKCFtX2xpdmVuZXNzKSB7CiAgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIGNoYW5jZSB0
d28gY29tcGlsZXIgdGhyZWFkcyByYWNlZCB0byB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAg
Ly8gR3JhYmJpbmcgdGhlIGxvY2sgYWJvdmUgZGVmZW5kcyBhZ2FpbnN0IGNvbXB1dGluZyBsaXZl
bmVzcyB0d2ljZS4KLSAgICAgICAgICAgIG1fbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKKyAgICAgICAgICAgIG1fbGl2ZW5l
c3MgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKICAg
ICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNDM3MDk1MTllYjYxNmUyNjUxMDZlZjFkNTUy
OTYxN2Q2NDVjOWJjOS4uNTEyNTM2YzBkNDQ4NTdhNGNhNzZlODEzZmUxNDgwM2E5NzNmZmE1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKQEAgLTQwMiw3ICs0MDIsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7CiAgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKCpoZWFwKCksIGNlbGxMb2NrKCkpOwot
ICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7Cisg
ICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggZmJlYzlmNzJjYTJmZDFh
MThiYWNiMDczZTY4NzI1NGI3MGI5ZWJlMS4uNDlkOWQyZmQzZTZmZTlmYjRiNTI3ZjY3N2FiZDVi
ZDRhNTEyMjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0yNzUsNyArMjc1LDcg
QEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2Nr
cyhWTSYgdm0pCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQogewogICAgIEFTU0VSVCgh
bV9yYXJlRGF0YSk7Ci0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+
KCk7CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmV0dXJu
ICptX3JhcmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTk3Njg2YWEzZWRjZGQ4ZDNmOWI1
N2M0YTZkMTIzYmFjOWNiMzk4Ny4uMTc4YTYxZGY2OTEzM2FmZGNjMTI3MjhjYmZkOTZlYjM5ZjQy
YWViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDAxLDcgKzQwMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAg
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUs
IHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2Vu
ZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwg
ZW52aXJvbm1lbnQpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRv
ci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9y
dEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5oCmluZGV4IGJjZDcyZWEwOWY1ZjcxN2E2NWY2NWQ3ZDJlZmMxNzVlMDIzZTY5
OTAuLmViYWJiNTlkNDM1OWE5ZTM2NGYyY2EzYWY2YWZkMGVmZDAzOTBiMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNz
IFZNOwogdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwogCiBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBEZWJ1Z2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRGVidWdnZXIoVk0mKTsKICAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCmluZGV4IGYyMGEzNTdlY2I3M2FhN2VmZTRjYjEwN2QxY2NiN2U5ZGM5MDAzMzkuLjI3NjU2
OTI2YThkMjlkMjdlYmVlYWE5ZmZkY2EyMDNjYzI1ZmEwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTU4LDcgKzU4LDcgQEAgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OkFic3RyYWN0SW50ZXJwcmV0ZXIoR3JhcGgmIGdyYXBoLCBBYnN0cmEKICAgICAsIG1fc3RhdGUo
c3RhdGUpCiB7CiAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgbV9waGlD
aGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOworICAgICAg
ICBtX3BoaUNoaWxkcmVuID0gbWFrZVVuaXF1ZTxQaGlDaGlsZHJlbj4obV9ncmFwaCk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAppbmRleCAzMmEyYzkwNDlmZWQ2ZjgyYzZhYmE0MDc2NzY2YmY0Mjli
MTM5MzgzLi4wODc0ZWE3MWNiZGViN2M2MWZlNWEwOGUwNTUyYjBiMzdiNGIxMzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtNzQsNyArNzQsNyBAQCBHcmFwaDo6
R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2Nv
ZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKCkpCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2sobV9jb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNT
QUNGRz4oKnRoaXMpKQorICAgICwgbV9zc2FDRkcobWFrZVVuaXF1ZTxTU0FDRkc+KCp0aGlzKSkK
ICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9y
ZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZlTm90U3Rh
cnRlZFJlZ2lzdGVyaW5nKQpAQCAtODYsOCArODYsOCBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQ
bGFuJiBwbGFuKQogICAgIAogICAgIG1faGFzRGVidWdnZXJFbmFibGVkID0gbV9wcm9maWxlZEJs
b2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgT3B0aW9uczo6Zm9yY2VE
ZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwogICAgIAotICAgIG1faW5kZXhpbmdDYWNoZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7Ci0gICAgbV9hYnN0cmFjdFZh
bHVlc0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhp
cyk7CisgICAgbV9pbmRleGluZ0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlz
KTsKKyAgICBtX2Fic3RyYWN0VmFsdWVzQ2FjaGUgPSBtYWtlVW5pcXVlPEZsb3dNYXA8QWJzdHJh
Y3RWYWx1ZT4+KCp0aGlzKTsKIAogICAgIHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cnVjdHVyZVN0
cnVjdHVyZS5nZXQoKSk7CiAgICAgdGhpcy0+c3RyaW5nU3RydWN0dXJlID0gcmVnaXN0ZXJTdHJ1
Y3R1cmUodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKQEAgLTEwODAsNyArMTA4MCw3IEBAIEZ1
bGxCeXRlY29kZUxpdmVuZXNzJiBHcmFwaDo6bGl2ZW5lc3NGb3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUxpdmVuZXNzLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gKml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNv
ZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVu
ZXNzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5l
c3MgPSBtYWtlVW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVuZXNzPigpOwogICAgIGNvZGVCbG9jay0+
bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVGdWxsTGl2ZW5lc3MoY29kZUJsb2NrLCAqbGl2ZW5l
c3MpOwogICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQgPSAqbGl2ZW5lc3M7CiAgICAg
bV9ieXRlY29kZUxpdmVuZXNzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUobGl2ZW5lc3MpKTsKQEAg
LTEwOTgsNyArMTA5OCw3IEBAIEJ5dGVjb2RlS2lsbHMmIEdyYXBoOjpraWxsc0ZvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlS2lsbHMuZW5kKCkpCiAg
ICAgICAgIHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlS2lsbHM+IGtpbGxzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzPigpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBraWxscyA9IG1ha2VVbmlxdWU8Qnl0
ZWNvZGVLaWxscz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlzaXMoKS5jb21wdXRl
S2lsbHMoY29kZUJsb2NrLCAqa2lsbHMpOwogICAgIEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCA9ICpr
aWxsczsKICAgICBtX2J5dGVjb2RlS2lsbHMuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShraWxscykp
OwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgQ1BTQ0ZHJiBHcmFwaDo6ZW5zdXJlQ1BTQ0ZHKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9u
KTsKICAgICBpZiAoIW1fY3BzQ0ZHKQotICAgICAgICBtX2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q1BTQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fY3BzQ0ZHID0gbWFrZVVuaXF1ZTxDUFNDRkc+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzQ0ZHOwogfQogCkBAIC0xNTQ0LDcgKzE1NDQsNyBA
QCBDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAg
aWYgKCFtX2Nwc0RvbWluYXRvcnMpCi0gICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2Nwc0RvbWluYXRvcnMg
PSBtYWtlVW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzRG9t
aW5hdG9yczsKIH0KIApAQCAtMTU1Miw3ICsxNTUyLDcgQEAgU1NBRG9taW5hdG9ycyYgR3JhcGg6
OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBT
U0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX3NzYURvbWluYXRvcnMpCi0g
ICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBRG9taW5hdG9ycz4o
KnRoaXMpOworICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBtYWtlVW5pcXVlPFNTQURvbWluYXRv
cnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0KIApAQCAtMTU2MSw3
ICsxNTYxLDcgQEAgQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3Bz
KCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJz
aW9uKTsKICAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFtX2Nwc05hdHVyYWxM
b29wcykKLSAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU05h
dHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG1ha2VVbmlx
dWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc05hdHVyYWxMb29w
czsKIH0KIApAQCAtMTU3MCw3ICsxNTcwLDcgQEAgU1NBTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5z
dXJlU1NBTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsK
ICAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykK
LSAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxM
b29wcz4oKnRoaXMpOworICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8U1NB
TmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3NzYU5hdHVyYWxMb29wczsKIH0K
IApAQCAtMTU3OSw3ICsxNTc5LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dh
cmRzQ0ZHKCkKICAgICAvLyBXZSBjb3VsZCBlYXNpbHkgcmVsYXggdGhpcyBpbiB0aGUgZnV0dXJl
IHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0b2RheSwgaXQncyBvbmx5IHVzZWQgaW4gU1NBLgogICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAKICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZH
KQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZH
PigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHND
Rkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQogCkBAIC0xNTg3LDcg
KzE1ODcsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9t
aW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYg
KCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9
IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBt
X2JhY2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0
aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMTU5NSw3
ICsxNTk1LDcgQEAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjplbnN1cmVDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKQotICAgICAgICBt
X2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOworICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzID0gbWFrZVVuaXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA2MzkwNDNlOWUyN2Zi
ZTBlMGI5MmFiNDZhNjY5YmUxNDEwNTAzMzcwLi5mMmI2NjQwMmUzYWQwZTcyZGZjZTA1YjY1YWYz
ZmM5MjZkMDA5ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCBKSVRDb21waWxlcjo6SklUQ29tcGlsZXIoR3JhcGgm
IGRmZykKICAgICAsIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKGRmZy5tX3ZtKQogewogICAg
IGlmIChVTkxJS0VMWShzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBtX2dyYXBoLm1fdm0ubV9w
ZXJCeXRlY29kZVByb2ZpbGVyKSkKLSAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKKyAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtl
VW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBtX2pp
dENvZGUtPnRpZXJVcEluTG9vcEhpZXJhcmNoeSA9IFdURk1vdmUobV9ncmFwaC5tX3BsYW4udGll
clVwSW5Mb29wSGllcmFyY2h5KCkpOwogICAgIGZvciAodW5zaWduZWQgdGllclVwQnl0ZWNvZGUg
OiBtX2dyYXBoLm1fcGxhbi50aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlcygpKQpAQCAtMzQzLDcg
KzM0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikK
ICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVpbGRNYXBw
aW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1h
a2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyKSwgbGlua0J1ZmZlcikpOworICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVP
cmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2Rl
T3JpZ2luTWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgZW1pdFN0
YWNrT3ZlcmZsb3dDaGVjayhKSVRDb21waWxlciYgaml0LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QmIHN0YWNrT3ZlcmZsb3cpCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZSgpCiAKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwot
ICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhp
cyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlz
KTsKIAogICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWls
YWJsZSBpbiB0aGUgSlNTdGFjay4KICAgICBKdW1wTGlzdCBzdGFja092ZXJmbG93OwpAQCAtNDAy
LDkgKzQwMiw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIG1fc3BlY3VsYXRp
dmUtPmNyZWF0ZU9TUkVudHJpZXMoKTsKICAgICBzZXRFbmRPZkNvZGUoKTsKIAotICAgIGF1dG8g
bGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJs
b2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIGF1dG8gbGlua0J1ZmZlciA9IG1ha2VV
bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAg
IG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFs
aXplcj4obV9ncmFwaC5tX3BsYW4pKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxp
emVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGUoKQogCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwogCi0gICAgbV9n
cmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigK
KyAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+
KAogICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVhc2VOb25OdWxsKCksIFdU
Rk1vdmUobGlua0J1ZmZlcikpKTsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgY29tcGlsZUVudHJ5RXhlY3V0aW9uRmxhZygp
OwogCiAgICAgLy8gPT09IEZ1bmN0aW9uIGJvZHkgY29kZSBnZW5lcmF0aW9uID09PQotICAgIG1f
c3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7Cisg
ICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKICAg
ICBjb21waWxlQm9keSgpOwogICAgIHNldEVuZE9mTWFpblBhdGgoKTsKIApAQCAtNTA3LDkgKzUw
Nyw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgc2V0RW5kT2ZD
b2RlKCk7CiAKICAgICAvLyA9PT0gTGluayA9PT0KLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRp
b25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+
KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlu
a0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxhbi5z
ZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9w
bGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZh
aWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBsaW5rKCpsaW5rQnVmZmVyKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24oKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50
cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5
UHRyVGFnPihhcml0eUNoZWNrKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihz
dGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5tX3BsYW4uc2V0Rmlu
YWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJp
dHlDaGVjaykpOwogfQogCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCogSklUQ29tcGlsZXI6OmFk
ZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOwogCiAgICAgaWYgKCFtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzKQotICAgICAgICBtX2dy
YXBoLm1fZG91YmxlQ29uc3RhbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxCYWc8ZG91YmxlPj4oKTsK
KyAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IG1ha2VVbmlxdWU8QmFnPGRvdWJs
ZT4+KCk7CiAKICAgICBkb3VibGUqIGFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IG1fZ3JhcGgubV9k
b3VibGVDb25zdGFudHMtPmFkZCgpOwogICAgICphZGRyZXNzSW5Db25zdGFudFBvb2wgPSB2YWx1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcAppbmRleCBiYjgwMDI3NGRkY2I2MzAzNDc4MzczN2UzOGFkMWU2MWU5YzVl
YTA0Li5hOTQ0MDQ3NDU5MjUyMTg0NWJhMzE4ODM3YjEzYjlmNGEzMTdlZjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2Uu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIExpdmVuZXNzQW5hbHlzaXNQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICwgbV9saXZlQXRUYWlsKG1fZ3JhcGgpCiAgICAgewogICAgICAg
ICBtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+cmVjb21wdXRlKCk7Ci0gICAgICAgIG1fd29ya3Nl
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya3NldD4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51
bUluZGljZXMoKSk7CisgICAgICAgIG1fd29ya3NldCA9IG1ha2VVbmlxdWU8V29ya3NldD4obV9n
cmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CiAgICAgfQogCiAgICAgYm9vbCBy
dW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggNGRiY2VlOGE2YmIy
ZGMzOGRmYzUwNWRiY2FiNmUzOWZjMGUyNzZmMi4uMDc4MzBlZDJmNWU4MTY2NDg4YjkxYWRjNTJh
NzE5MmRiMjhjMTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC0y
OTYsNyArMjk2LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVh
ZEltcGwoKQogICAgIGlmIChtX21vZGUgPT0gRlRMRm9yT1NSRW50cnlNb2RlKSB7CiAgICAgICAg
IGJvb2wgcmVzdWx0ID0gcGVyZm9ybU9TUkVudHJ5cG9pbnRDcmVhdGlvbihkZmcpOwogICAgICAg
ICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBt
YWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZh
aWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIFJVTl9QSEFTRShwZXJmb3JtQ1BTUmV0aHJlYWRp
bmcpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21w
aWxlSW5UaHJlYWRJbXBsKCkKICAgICBjYXNlIEZUTEZvck9TUkVudHJ5TW9kZTogewogI2lmIEVO
QUJMRShGVExfSklUKQogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxlKGRmZykgPT0gRlRMOjpD
YW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlx
dWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9IG1h
a2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gRmFp
bFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NzcsNyArNDc3LDcgQEAgUGxhbjo6Q29t
cGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAgICAgICBSVU5fUEhB
U0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlmIChG
VEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6OkNhbm5vdENvbXBpbGUpIHsKLSAgICAgICAgICAg
IG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsK
KyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0
aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKaW5k
ZXggODcxNTk1YjFmZjI1OWJlZTQ0YzcxY2UwM2Q3ZDhlOGJkNjQzNjUzNy4uNTM0ZDY0YjUzOGZh
MTgwYWY0OGU4OWQ0ZjgyNjAyZmI0NWM5MjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBA
IGNsYXNzIFNTQUNvbnZlcnNpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBi
bG9jay0+dmFyaWFibGVzQXRUYWlsLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVz
QXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7
Ci0gICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpT
U0FEYXRhPihibG9jayk7CisgICAgICAgICAgICBibG9jay0+c3NhID0gbWFrZVVuaXF1ZTxCYXNp
Y0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBlbnRyeXBvaW50SW5kZXhUb0FyZ3VtZW50c0Jsb2NrKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggN2NmNDI1MjFh
NjIxMTc4ZmY4NTEyYWZmOWZmZmEzMjUyMDAyMjRkNi4uY2RjZGFhNjBkODk4YTNiNjZkN2IyOThm
NjY4MThjNzlkYzQ4Yzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTkzLDcgKzE5Myw3IEBAIGlubGluZSBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAog
ICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVy
YXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+PigK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4o
CiAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJl
c3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBEZXN0aW5hdGlvblR5cGUsIHR5cGVuYW1lIFNvdXJj
ZVR5cGUsIHVuc2lnCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aE1vdmUoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU291
cmNlVHlwZSBzb3VyY2VbbnVtYmVyT2ZBc3NpZ25tZW50c10sIERlc3RpbmF0aW9uVHlwZSBkZXN0
aW5hdGlvbltudW1iZXJPZkFzc2lnbm1lbnRzXSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBl
LCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwg
U291cmNlVHlwZSwgbnVtYmVyT2ZBc3NpZ25tZW50cz4+KAogICAgICAgICBmcm9tLCBqaXQsIGRl
c3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCkBAIC0yNDksNyArMjQ5LDcgQEAgaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJj
ZVR5cGUgc291cmNlQXJyYXlbMV0gPSB7IHNvdXJjZSB9OwogICAgIERlc3RpbmF0aW9uVHlwZSBk
ZXN0aW5hdGlvbkFycmF5WzFdID0geyBkZXN0aW5hdGlvbiB9OwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlv
blR5cGUsIFNvdXJjZVR5cGUsIDE+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3NpZ25pbmdT
bG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAx
Pj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwog
fQogCkBAIC0yNTksNyArMjU5LDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJjZVR5cGUgc291cmNlQXJyYXlbMl0g
PSB7IHNvdXJjZTEsIHNvdXJjZTIgfTsKICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25B
cnJheVsyXSA9IHsgZGVzdGluYXRpb24xLCBkZXN0aW5hdGlvbjIgfTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGlu
YXRpb25UeXBlLCBTb3VyY2VUeXBlLCAyPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWdu
aW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlw
ZSwgMj4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCAyYWJjZGIzZmQ1Zjk3MGYzZmJiOTBkM2IwZjZlM2NkOWQ0MGZjZTM3Li4wMzlh
NDZhNzU4NjEwNDhjODVmMDMyODJhMjZmZWFmYjdlZjliZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQxLDcgKzE0MSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0
R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiAgICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRoYXQg
YWxzbyBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQncwogICAgIC8vIHdo
YXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMg
bWUuIEl0J3MgYSBsb3QKICAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2Yg
ZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
cj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3UmF3T2JqZWN0LCByZXN1
bHRHUFIsIHN0b3JhZ2VHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoKSk7CiAK
QEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBu
b2RlLCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAgICAgICBzbG93UGF0
aC5hcHBlbmQoanVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2RlLT5hcnJh
eU1vZGUoKSkpOwogICAgIH0KICAgICAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1h
a2VfdW5pcXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKG1ha2VVbmlxdWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNs
b3dQYXRoLCB0aGlzLCBub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdGVtcEdQUiwgc3RydWN0
dXJlR1BSKSk7CiAgICAgCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CkBAIC0yMjQyLDEw
ICsyMjQyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5n
KE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb3RvdHlwZUNoYWluSXNTYW5l
KSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAor
ICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0
QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRo
aXMsIEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogI2Vs
c2UKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2Fu
ZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRv
cj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ1JlZywgc2NyYXRjaFJlZyksCiAgICAgICAgICAgICAgICAgYmFzZVJlZywgcHJvcGVydHlS
ZWcpKTsKICNlbmRpZgpAQCAtNzYxOSw3ICs3NjE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgICAgICAgICAgICAg
IHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMsIHJlc3VsdEdQ
Uiwgc3RydWN0dXJlLAogICAgICAgICAgICAgICAgIGtub3duTGVuZ3RoLCBtaW5DYXBhY2l0eSkp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICBh
dXRvIGdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQ
YXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCByZXN1bHRHUFIsIHN0
cnVjdHVyZSwgbGVuZ3RoR1BSLCBtaW5DYXBhY2l0eSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURk1vdmUoZ2VuZXJhdG9yKSk7CiAgICAgfQpAQCAtODQzOSw3ICs4NDM5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2Nh
dG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAor
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRv
cldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVz
dWx0R1BSLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIpKTsKICAgICB9CiAK
QEAgLTkxMzUsNyArOTEzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJ1Y3R1cmVD
aGVjayhOb2RlKiBub2RlLCBHUFJSZWcgY2VsbEdQUiwgR1BSUmVnIHRlbXBHCiAgICAgICAgIEdQ
UlJlZyBzdHJ1Y3R1cmVHUFI7CiAgICAgICAgIAogICAgICAgICBpZiAodGVtcEdQUiA9PSBJbnZh
bGlkR1BSUmVnKSB7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdQ
UlRlbXBvcmFyeT4odGhpcyk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBtYWtlVW5pcXVlPEdQ
UlRlbXBvcmFyeT4odGhpcyk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUt
PmdwcigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHRlbXBH
UFI7CkBAIC0xMzE3Niw3ICsxMzE3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
bGxvY2F0ZU5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAg
ICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXpl
U2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8
Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRH
UFIsCiAgICAgICAgIHN0cnVjdHVyZSwKICAgICAgICAgc2hvdWxkQ29udmVydExhcmdlU2l6ZVRv
QXJyYXlTdG9yYWdlID8gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdp
dGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVjdHVyZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXgg
ZmEzOTZmNGYxOTJhOGJiNGFlZjk5ZDAzNzE5MjRhMmEzOGM2NDVlOC4uYmE2MTI4ZWZlOWJiMzY4
ZmUzYjA2NjIzYjUxZWUzZWVhZDNjNGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTk1
LDggKzk1LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICBjYXNlIFBoYXNlTW9kZTo6R2xvYmFsOiB7CiAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAKLSAgICAg
ICAgICAgIG1fc3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluUGxhY2VBYnN0cmFjdFN0YXRlPiht
X2dyYXBoKTsKLSAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFi
c3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0
ZSk7CisgICAgICAgICAgICBtX3N0YXRlID0gbWFrZVVuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0
ZT4obV9ncmFwaCk7CisgICAgICAgICAgICBtX2ludGVycHJldGVyID0gbWFrZVVuaXF1ZTxBYnN0
cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2lzQ29udmVyZ2VkID0gZmFsc2U7CiAgICAg
ICAgICAgICAKQEAgLTEwNyw4ICsxMDcsOCBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyB0b3dhcmRzIGJlbGlldmluZyB0
aGF0IGFsbCBub2RlcyBuZWVkIGJhcnJpZXJzLiAiTmVlZGluZyBhIGJhcnJpZXIiIGlzIGxpa2UK
ICAgICAgICAgICAgIC8vIHNheWluZyB0aGF0IHRoZSBub2RlIGlzIGluIGEgcGFzdCBlcG9jaC4g
Ik5vdCBuZWVkaW5nIGEgYmFycmllciIgaXMgbGlrZSBzYXlpbmcKICAgICAgICAgICAgIC8vIHRo
YXQgdGhlIG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgZXBvY2guCi0gICAgICAgICAgICBtX3N0YXRl
QXRIZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3Jh
cGgpOwotICAgICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tN
YXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1fc3RhdGVBdEhlYWQg
PSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFwaCk7CisgICAgICAg
ICAgICBtX3N0YXRlQXRUYWlsID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+
KG1fZ3JhcGgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCbG9ja0xpc3QgcG9zdE9yZGVy
ID0gbV9ncmFwaC5ibG9ja3NJblBvc3RPcmRlcigpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IGU2YzIyMjFlZTMwMTU0NGM3MmE5
Y2U4MzVmOTgwZmYzNmYwMjRiN2QuLjhmOTMwMzRiMGM2ZjkwYmE2NmY0YmY1YzUzYmUxYjRmMGZi
YTc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCkBAIC0x
NTAsNyArMTUwLDcgQEAgY2xhc3MgV29ya2xpc3Q6OlRocmVhZEJvZHkgOiBwdWJsaWMgQXV0b21h
dGljVGhyZWFkIHsKICAgICAgICAgaWYgKG1fcmVsYXRpdmVQcmlvcml0eSkKICAgICAgICAgICAg
IFRocmVhZDo6Y3VycmVudCgpLmNoYW5nZVByaW9yaXR5KG1fcmVsYXRpdmVQcmlvcml0eSk7CiAg
ICAgICAgIAotICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bXBpbGF0aW9uU2NvcGU+KCk7CisgICAgICAgIG1fY29tcGlsYXRpb25TY29wZSA9IG1ha2VVbmlx
dWU8Q29tcGlsYXRpb25TY29wZT4oKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB0aHJlYWRJc1N0
b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKQEAgLTIxNCw3ICsyMTQsNyBA
QCB2b2lkIFdvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMs
IGludCByZWxhdGl2ZVByaW9yaXR5KQogCiB2b2lkIFdvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQo
Y29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgaW50IHJlbGF0aXZlUHJpb3JpdHkpCiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFRo
cmVhZERhdGE+KHRoaXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWREYXRhPiBkYXRhID0g
bWFrZVVuaXF1ZTxUaHJlYWREYXRhPih0aGlzKTsKICAgICBkYXRhLT5tX3RocmVhZCA9IGFkb3B0
UmVmKG5ldyBUaHJlYWRCb2R5KGxvY2tlciwgKnRoaXMsICpkYXRhLCBtX2xvY2ssIG1fcGxhbkVu
cXVldWVkLmNvcHlSZWYoKSwgcmVsYXRpdmVQcmlvcml0eSkpOwogICAgIG1fdGhyZWFkcy5hcHBl
bmQoV1RGTW92ZShkYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggMTliMTE1YzlmZGQ2N2NiYzhhZTEwOWM2
NDQ1NzQyOGJhM2FkZmE1My4uMDBiZGE2NTcyNzljZjdhOTlkYmFiMTQ5YjA5YzcwM2Q2OGIzNWJl
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNz
ZW1ibGVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIEFzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlciYg
YXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHZvaWQgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNs
eSgKICAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVSZWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBw
cmVmaXgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IHN0
ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aXNhc3NlbWJseVRhc2s+IHRhc2sgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmx5VGFzaz4oKTsKICAg
ICB0YXNrLT5oZWFkZXIgPSBzdHJkdXAoaGVhZGVyLmRhdGEoKSk7IC8vIFl1Y2shIFdlIG5lZWQg
dGhpcyBiZWNhdXNlIENTdHJpbmcgZG9lcyByYWN5IHJlZmNvdW50aW5nLgogICAgIHRhc2stPmNv
ZGVSZWYgPSBjb2RlUmVmOwogICAgIHRhc2stPnNpemUgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDkwYWUyZjRmZTA2YTE1MmNh
ZTU3ODVlMmMwM2M5OTliNjgzMmJjMWIuLmVjODBlYTY3YjI1NmY4OTE4ZDQ4ODNhOGM1MmI4ZjM3
OTU4M2FiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cC5jcHAKQEAgLTE1NywxMSArMTU3LDExIEBAIGNvbnN0IEFic3RyYWN0SGVhcCYgSW5kZXhlZEFi
c3RyYWN0SGVhcDo6YXRTbG93KHB0cmRpZmZfdCBpbmRleCkKICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihpbmRleCkgPj0gbV9zbWFsbEluZGljZXMuc2l6ZSgpKTsKICAgICAKICAgICBp
ZiAoVU5MSUtFTFkoIW1fbGFyZ2VJbmRpY2VzKSkKLSAgICAgICAgbV9sYXJnZUluZGljZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1hcFR5cGU+KCk7CisgICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gbWFr
ZVVuaXF1ZTxNYXBUeXBlPigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFic3RyYWN0SGVhcD4m
IGZpZWxkID0gbV9sYXJnZUluZGljZXMtPmFkZChpbmRleCwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghZmllbGQpIHsKLSAgICAgICAgZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFic3RyYWN0SGVhcD4oKTsKKyAgICAgICAgZmllbGQgPSBtYWtlVW5pcXVlPEFic3RyYWN0SGVh
cD4oKTsKICAgICAgICAgaW5pdGlhbGl6ZSgqZmllbGQsIGluZGV4KTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDVkMDRiNzJmMDQ4MzFkMDYz
MDIzMDRkMWViN2U0OTI5ZDQ4MDQyN2YuLjQ2MzVjYzk2ZjkxMDkxZjczZjA4ZDFmNzUyYjA0N2Qx
MDUzYmZiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGls
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3Vs
dCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07CiAKICAgICBpZiAo
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCi0gICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXRE
aXNhc3NlbWJsZXIoc3RkOjptYWtlX3VuaXF1ZTxCMzo6QWlyOjpEaXNhc3NlbWJsZXI+KCkpOwor
ICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKG1ha2VVbmlxdWU8QjM6
OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAogICAgIHsKICAgICAgICAgR3JhcGhTYWZlcG9pbnQg
c2FmZXBvaW50KHN0YXRlLmdyYXBoLCBzYWZlcG9pbnRSZXN1bHQpOwpAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50
UmVzdWx0KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rlck9mZnNldHMgPQotICAgICAgICBzdGQ6Om1ha2VfdW5p
cXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5jYWxsZWVTYXZlUmVnaXN0ZXJB
dE9mZnNldExpc3QoKSk7CisgICAgICAgIG1ha2VVbmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKICAgICBpZiAo
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2coIlVud2luZCBpbmZvIGZv
ciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVFR5cGU6OkZUTEpJVCksICI6
ICIsICpyZWdpc3Rlck9mZnNldHMsICJcbiIpOwogICAgIGNvZGVCbG9jay0+c2V0Q2FsbGVlU2F2
ZVJlZ2lzdGVycyhXVEZNb3ZlKHJlZ2lzdGVyT2Zmc2V0cykpOwpAQCAtMTQyLDcgKzE0Miw3IEBA
IHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRS
ZXN1bHQpCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihsb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogCi0g
ICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxM
aW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBz
dGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+
KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCiAgICAgaWYgKHN0YXRl
LmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAg
ICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2
b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVz
dWx0KQogICAgIAogICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9IHN0YXRlLnByb2Mt
PnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7CiAgICAgaWYgKHZtLnNob3VsZEJ1aWxkZXJQQ1RvQ29k
ZU9yaWdpbk1hcHBpbmcoKSkKLSAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1h
cChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxp
bmtCdWZmZXIpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtl
VW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdU
Rk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsK
IAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IGxhYmVsID0gc3RhdGUuZmlu
YWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KHN0YXRl
LnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSk7CiAgICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24g
PSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCmluZGV4IDE2NTMzNTA5
Y2QwYjQ4MmM3NGJjYTY3MzE4NzYzZjJlMGYwOWRkZjEuLmMzZjkzMzkyZjI2ZTZmYzk1ZjljMmNj
NTkyOWVkMzRjNmJjMzBjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMRmFpbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcApA
QCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogCiB2b2lkIGZhaWwoU3RhdGUm
IHN0YXRlKQogewotICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtl
X3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikpOworICAgIHN0YXRl
LmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0
YXRlLmdyYXBoLm1fcGxhbikpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAwODU0MDU2ZWM3ZDE2MmIxMWNkYzIx
Y2Q3OGZlMTUxN2Y3YWNmM2ViLi45NWRiNjk2MWU4ZTkwNzcwY2Q2ZTU1NjczMDIyYjQ0NzYzYjU4
MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTE2Niw3ICsxNjYs
NyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0LnVudGFnUmV0dXJu
QWRkcmVzcygpOwogICAgICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7
CiAKLSAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+
KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgICAgICAgICAgbGlu
a0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBp
bGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxs
b2NhdGUoKSkgewogICAgICAgICAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIGxpbmso
U3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAK
LSAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgIGxpbmtCdWZmZXIgPSBt
YWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAg
ICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5k
ZXggYWYxYmE0YmY5MGE4ZmQwYmEyNTAyYzY0N2UyYzE3MTQxMjJkZTdkNC4uMDliMzQyNzNjYmI3
Y2FiNDRjZDg2M2U5OWIyODU5MGU4N2M5NGIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTUwODAsNyArMTUwODAsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
LmxpbmsoZ2VuZXJhdG9ySnVtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2bS0+Z2V0Q1RJU3R1YihsYXp5U2xv
d1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gc3RkOjptYWtlX3VuaXF1ZTxM
YXp5U2xvd1BhdGg+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IG1ha2VVbmlxdWU8TGF6eVNsb3dQ
YXRoPigpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua2VkUGF0
Y2hhYmxlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4obGlua0J1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZUp1bXApKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCA2NTNlYzZmNjk2MDQ5Yjc1MmFjMjRh
Nzc5MzEwZDRhZDk3YmIwM2RiLi40YTQ4NGZhNmQ0NjQzMGQ3MWU1NzAwOGJmMWU5OWY2YzI1Yjg0
ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApAQCAtNjAsMTAgKzYw
LDEwIEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5h
bGl6ZXI+KGdyYXBoLm1fcGxhbikpOworICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFr
ZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOwogICAgIGZpbmFsaXplciA9IHN0
YXRpY19jYXN0PEpJVEZpbmFsaXplcio+KGdyYXBoLm1fcGxhbi5maW5hbGl6ZXIoKSk7CiAKLSAg
ICBwcm9jID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZWR1cmU+KCk7CisgICAgcHJvYyA9IG1ha2VV
bmlxdWU8UHJvY2VkdXJlPigpOwogCiAgICAgcHJvYy0+c2V0T3JpZ2luUHJpbnRlcigKICAgICAg
ICAgW10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2luKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCmluZGV4IDIyZDdmZDY1
ZDVhMTc1NWI1YjJkM2I3OGRkYTU1YzBkMDA3ZTFjY2IuLjAyMWIwY2RiOWRmYWMxOGIzNjg2NDI4
YTk4MjNmMjgxMTBiYjc5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
bXBsZXRlU3Vic3BhY2UuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1
YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgICAgICBkYXRhTG9nKCJD
cmVhdGluZyBCbG9ja0RpcmVjdG9yeS9Mb2NhbEFsbG9jYXRvciBmb3IgIiwgbV9uYW1lLCAiLCAi
LCBhdHRyaWJ1dGVzKCksICIsICIsIHNpemVDbGFzcywgIi5cbiIpOwogICAgIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVlRGlyZWN0b3J5ID0KLSAgICAgICAgc3Rk
OjptYWtlX3VuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNpemVDbGFzcyk7
CisgICAgICAgIG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXpl
Q2xhc3MpOwogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSB1bmlxdWVEaXJlY3Rvcnku
Z2V0KCk7CiAgICAgbV9kaXJlY3Rvcmllcy5hcHBlbmQoV1RGTW92ZSh1bmlxdWVEaXJlY3Rvcnkp
KTsKICAgICAKQEAgLTg4LDcgKzg4LDcgQEAgQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6OmFs
bG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgbV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9y
eShsb2NrZXIsIGRpcmVjdG9yeSk7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPExvY2FsQWxs
b2NhdG9yPiB1bmlxdWVMb2NhbEFsbG9jYXRvciA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8
TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CisgICAgICAgIG1ha2VVbmlxdWU8TG9jYWxBbGxv
Y2F0b3I+KGRpcmVjdG9yeSk7CiAgICAgTG9jYWxBbGxvY2F0b3IqIGxvY2FsQWxsb2NhdG9yID0g
dW5pcXVlTG9jYWxBbGxvY2F0b3IuZ2V0KCk7CiAgICAgbV9sb2NhbEFsbG9jYXRvcnMuYXBwZW5k
KFdURk1vdmUodW5pcXVlTG9jYWxBbGxvY2F0b3IpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKaW5kZXggYTAxYjVhMmI0YWVmZDNlNTI5Njk3N2E1YzgzODQwNDJlNWEyOTU2
YS4uOTcxOTllMTg2ZGU3MmQ3NzI3OTczNWM5ZDNjOTk0MGM4NWM0OGFmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTI4OSwxNSArMjg5LDE1IEBAIEhlYXA6OkhlYXAoVk0q
IHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4RWRlblNpemUobV9taW5CeXRlc1Bl
ckN5Y2xlKQogICAgICwgbV9tYXhIZWFwU2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBt
X29iamVjdFNwYWNlKHRoaXMpCi0gICAgLCBtX21hY2hpbmVUaHJlYWRzKHN0ZDo6bWFrZV91bmlx
dWU8TWFjaGluZVRocmVhZHM+KCkpCi0gICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKHN0ZDo6
bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiQyIpKQotICAgICwgbV9tdXRhdG9yU2xv
dFZpc2l0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJNIikpCi0gICAg
LCBtX211dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkK
LSAgICAsIG1fcmFjZU1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQotICAgICwgbV9jb25zdHJhaW50U2V0KHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFp
bnRTZXQ+KCp0aGlzKSkKKyAgICAsIG1fbWFjaGluZVRocmVhZHMobWFrZVVuaXF1ZTxNYWNoaW5l
VGhyZWFkcz4oKSkKKyAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90
VmlzaXRvcj4oKnRoaXMsICJDIikpCisgICAgLCBtX211dGF0b3JTbG90VmlzaXRvcihtYWtlVW5p
cXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKKyAgICAsIG1fbXV0YXRvck1hcmtTdGFjayht
YWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9yYWNlTWFya1N0YWNrKG1ha2VV
bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX2NvbnN0cmFpbnRTZXQobWFrZVVuaXF1
ZTxNYXJraW5nQ29uc3RyYWludFNldD4oKnRoaXMpKQogICAgICwgbV9oYW5kbGVTZXQodm0pCi0g
ICAgLCBtX2NvZGVCbG9ja3Moc3RkOjptYWtlX3VuaXF1ZTxDb2RlQmxvY2tTZXQ+KCkpCi0gICAg
LCBtX2ppdFN0dWJSb3V0aW5lcyhzdGQ6Om1ha2VfdW5pcXVlPEpJVFN0dWJSb3V0aW5lU2V0Pigp
KQorICAgICwgbV9jb2RlQmxvY2tzKG1ha2VVbmlxdWU8Q29kZUJsb2NrU2V0PigpKQorICAgICwg
bV9qaXRTdHViUm91dGluZXMobWFrZVVuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKICAgICAs
IG1fdm0odm0pCiAgICAgLy8gV2Ugc2VlZCB3aXRoIDEwbXMgc28gdGhhdCBHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNuJ3QgY29udGludW91c2x5IAogICAgIC8vIHNjaGVkdWxl
IHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlvbi4KQEAgLTMwNSw4ICsz
MDUsOCBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2Vk
ZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVy
KHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKCpuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KHRoaXMpKSkKICAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYoKm5ldyBTdG9w
SWZOZWNlc3NhcnlUaW1lcih2bSkpKQotICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJrU3RhY2so
c3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fc2hhcmVkTXV0YXRv
ck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9z
aGFyZWRDb2xsZWN0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAg
ICAsIG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkpCiAgICAgLCBtX3RocmVh
ZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fdGhyZWFkQ29uZGl0aW9uKEF1dG9t
YXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCkBAIC0zMTQsNyArMzE0LDcgQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG1fd29ybGRTdGF0ZS5zdG9yZSgw
KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIG51bWJlck9mUGFyYWxsZWxUaHJlYWRzID0g
aGVhcEhlbHBlclBvb2woKS5udW1iZXJPZlRocmVhZHMoKTsgaSA8IG51bWJlck9mUGFyYWxsZWxU
aHJlYWRzOyArK2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNp
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRvQ1N0cmluZygiUCIs
IGkgKyAxKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9
IG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOwog
ICAgICAgICBpZiAoT3B0aW9uczo6b3B0aW1pemVQYXJhbGxlbFNsb3RWaXNpdG9yc0ZvclN0b3Bw
ZWRNdXRhdG9yKCkpCiAgICAgICAgICAgICB2aXNpdG9yLT5vcHRpbWl6ZUZvclN0b3BwZWRNdXRh
dG9yKCk7CiAgICAgICAgIG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRvcnMuYXBwZW5kKHZp
c2l0b3IuZ2V0KCkpOwpAQCAtMzIzLDE3ICszMjMsMTcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgIAogICAgIGlmIChPcHRpb25zOjp1c2VDb25jdXJyZW50R0Mo
KSkgewogICAgICAgICBpZiAoT3B0aW9uczo6dXNlU3RvY2hhc3RpY011dGF0b3JTY2hlZHVsZXIo
KSkKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9jaGFzdGlj
U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVs
ZXIgPSBtYWtlVW5pcXVlPFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhp
cyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX3Nj
aGVkdWxlciA9IG1ha2VVbmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHNpbXVsYXRlIHR1cm5pbmcgb2ZmIGNvbmN1cnJl
bnQgR0MgYnkgbWFraW5nIHRoZSBzY2hlZHVsZXIgc2F5IHRoYXQgdGhlIHdvcmxkCiAgICAgICAg
IC8vIHNob3VsZCBhbHdheXMgYmUgc3RvcHBlZCB3aGVuIHRoZSBjb2xsZWN0b3IgaXMgcnVubmlu
Zy4KLSAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzU3Rv
cFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKKyAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtl
VW5pcXVlPFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmlmeUhlYXAoKSkKLSAgICAgICAgbV92ZXJpZmll
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRpb25zOjpudW1iZXJP
ZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24oKSk7CisgICAgICAgIG1fdmVyaWZpZXIg
PSBtYWtlVW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xl
c1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uKCkpOwogICAgIAogICAgIG1fY29sbGVjdG9yU2xvdFZp
c2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11dGF0b3IoKTsKIApAQCAtODk5LDcgKzg5OSw3IEBA
IHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmplY3RDb3VudCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlw
ZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9
IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIGZvckVhY2hQcm90ZWN0ZWRDZWxsKAog
ICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgewogICAgICAgICAgICAgcmVjb3JkVHlwZSgqdm0o
KSwgKnJlc3VsdCwgY2VsbCk7CkBAIC05MDksNyArOTA5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFR5
cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlw
ZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9
IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVy
YXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCiAg
ICAgICAgIGl0ZXJhdGlvblNjb3BlLApAQCAtMjg1Niw3ICsyODU2LDcgQEAgdm9pZCBIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICB9LAogICAgICAgICBDb25zdHJhaW50Vm9sYXRp
bGl0eTo6U2VsZG9tR3JleWVkKTsKICAgICAKLSAgICBtX2NvbnN0cmFpbnRTZXQtPmFkZChzdGQ6
Om1ha2VfdW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhpcykpOworICAgIG1f
Y29uc3RyYWludFNldC0+YWRkKG1ha2VVbmlxdWU8TWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+
KCp0aGlzKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWRkTWFya2luZ0NvbnN0cmFpbnQoc3RkOjp1bmlx
dWVfcHRyPE1hcmtpbmdDb25zdHJhaW50PiBjb25zdHJhaW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5kZXggNWI2OWNkNWUzNWY2MmI1MDY2M2E5Y2JkYzczOTRk
MWJkNjdhZDFkOC4uZTFlYjZjNzgzM2Q0ODU4NzFhOWM1MzNjZmQ0NzMxYzc1ZjliMTFmZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBAIC0yMTcsNyArMjE3LDcg
QEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQo
KQogaW5saW5lIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYgSGVhcDo6bWFya0xpc3RT
ZXQoKQogewogICAgIGlmICghbV9tYXJrTGlzdFNldCkKLSAgICAgICAgbV9tYXJrTGlzdFNldCA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOworICAg
ICAgICBtX21hcmtMaXN0U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVm
ZmVyKj4+KCk7CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmluZGV4IDViOWFj
ODlkYWJmMDRhMDYxNGRjMTBmYmJhZjE2YzBmNGE0OTlmN2UuLjJkMmJjOGZiOWIyN2ZlOWY5YjFi
NWJlNTRjYjc1MWY4M2UwZDNkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSGVhcFNu
YXBzaG90QnVpbGRlcjo6YnVpbGRTbmFwc2hvdCgpCiAKICAgICBQcmV2ZW50Q29sbGVjdGlvblNj
b3BlIHByZXZlbnRDb2xsZWN0aW9uU2NvcGUobV9wcm9maWxlci52bSgpLmhlYXApOwogCi0gICAg
bV9zbmFwc2hvdCA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2ZpbGVyLm1v
c3RSZWNlbnRTbmFwc2hvdCgpKTsKKyAgICBtX3NuYXBzaG90ID0gbWFrZVVuaXF1ZTxIZWFwU25h
cHNob3Q+KG1fcHJvZmlsZXIubW9zdFJlY2VudFNuYXBzaG90KCkpOwogICAgIHsKICAgICAgICAg
bV9wcm9maWxlci5zZXRBY3RpdmVTbmFwc2hvdEJ1aWxkZXIodGhpcyk7CiAgICAgICAgIG1fcHJv
ZmlsZXIudm0oKS5oZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5kZXggYjhlNDMwMTkx
ZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOS4uN2MyZWQyNDAyZmQ3MzAxZmMwOTlhOGRm
YjVkM2MzMzZhZWFkMTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNl
dC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgTkVWRVJfSU5MSU5FIEJpdG1hcDxNYXJrZWRCbG9jazo6
YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6ZV90IGJsb2MKICAgICBhdXRv
JiBiaXRzUHRyUmVmID0gbV9iaXRzW2Jsb2NrSW5kZXhdOwogICAgIGF1dG8qIGJpdHMgPSBiaXRz
UHRyUmVmLmdldCgpOwogICAgIGlmICghYml0cykgewotICAgICAgICBiaXRzUHRyUmVmID0gc3Rk
OjptYWtlX3VuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+PigpOworICAg
ICAgICBiaXRzUHRyUmVmID0gbWFrZVVuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVy
QmxvY2s+PigpOwogICAgICAgICBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsKICAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICAgICAgbV9ibG9ja3NXaXRoQml0c1tibG9ja0luZGV4
XSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKaW5k
ZXggZDUxMDAwZWJhODdmMzFkZTQ4MWJlZDA4YTVmMmZlZDhhNjM5ZmY5OS4uY2QzZTdlNTYxNTQ1
NjZkY2Y4YzE1MTYzYTE1YjcyZjI3NjhmMjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlLmNwcApAQCAtMzksNyArMzksNyBAQCBJc29TdWJzcGFjZTo6SXNvU3Vi
c3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlw
ZSwgcwogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2RpcmVjdG9yeSgmaGVhcCwgV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCiAgICAgLCBt
X2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9yeSkKLSAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisg
ICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJc29BbGlnbmVkTWVt
b3J5QWxsb2NhdG9yPigpKQogewogICAgIGluaXRpYWxpemUoaGVhcENlbGxUeXBlLCBtX2lzb0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKaW5kZXggYjNhYmQyYzUyMjRmY2Uz
ZTVjZTEyYzRmMTYzZWQ0ODIzZGFlNjk4ZS4uMTc4MGMwOGE0NzBmMjc2MjMxNjM3ZWY2ODExN2M5
YTRlMzJjMWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2lu
Z0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtp
bmdDb25zdHJhaW50U2V0LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1hcmtpbmdDb25zdHJh
aW50U2V0OjpkaWRTdGFydE1hcmtpbmcoKQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0Ojph
ZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgOjpGdW5jdGlvbjx2b2lk
KFNsb3RWaXNpdG9yJik+IGZ1bmN0aW9uLCBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5
LCBDb25zdHJhaW50Q29uY3VycmVuY3kgY29uY3VycmVuY3ksIENvbnN0cmFpbnRQYXJhbGxlbGlz
bSBwYXJhbGxlbGlzbSkKIHsKLSAgICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5n
Q29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSwgY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtKSk7Cisg
ICAgYWRkKG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2
aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHks
IGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOwogfQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50
U2V0OjphZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKaW5kZXggODJiZTNiYmI0NGNi
NmM1Nzc2YjhlY2Y3ZmEwYzk0MGQ1ZDVhNTgyNS4uNTNhOTFhMjNjMWQ4OTI5MThlZTQyOTQxYTY1
ZjUyNzg2N2Q0MzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcApAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBl
QW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzcwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CiAg
ICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7Ci0gICAgbV9j
b25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2Us
IFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMp
KTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OmNvdW50KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGl0bGUgPT0gdGl0bGUpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBm
b3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUu
aXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJp
bmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgICAg
ICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICAgICAg
ICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxl
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYgdGl0bAogCiAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJv
bnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1w
dHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0
aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgd2FybmluZykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsK
IH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnN0YXJ0Q29uc29sZVByb2Zp
bGUoKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
OjpzY3JlZW5zaG90KEV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpCiB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6d2FyblVuaW1wbGVtZW50ZWQoY29uc3QgU3RyaW5n
JiBtZXRob2QpCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtZXRob2QgKyAiIGlzIGN1cnJlbnRs
eSBpZ25vcmVkIGluIEphdmFTY3JpcHQgY29udGV4dCBpbnNwZWN0aW9uLiI7Ci0gICAgbV9jb25z
b2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdl
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZGE1MmVmZDEzYzQ5MWNjYWU2Mzk1ZTA3NGM0NjQ0
ZTcwY2MwYTcuLmJkYmQzMWQ2MzEyYjJjMDU2ZDdjNDc4MTVkYzYxNWQxMjI2ZDkyNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAg
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCi0gICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdl
cj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJ
bmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNo
KFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGdsb2JhbE9i
amVjdCkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQpA
QCAtNzEsMTEgKzcxLDExIEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqCiB7CiAgICAgYXV0byBj
b250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8g
Y29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQp
OwogICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50LmdldCgpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1fY29uc29sZUFn
ZW50KTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29u
c29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwogCiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gt
PnN0YXJ0KCk7CiB9CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2UK
ICAgICAgICAgICAgIENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVz
c2FnZSwgU3RyaW5nKCksIDAsIDApOwogICAgIH0KIAotICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1l
c3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFdU
Rk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiBDb25zb2xlQ2xpZW50KiBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbnNvbGVDbGllbnQoKSBjb25zdApAQCAtMjgwLDcgKzI4MCw3
IEBAIEluc3BlY3RvckFnZW50JiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVu
c3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpIHsKICAg
ICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNw
ZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOwor
ICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JBZ2VudD4o
Y29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQo
KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKICAg
ICB9CkBAIC0yOTEsNyArMjkxLDcgQEAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCYgSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVEZWJ1Z2dlckFnZW50KCkKIHsKICAgICBp
ZiAoIW1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBhdXRvIGNvbnRleHQgPSBqc0FnZW50Q29u
dGV4dCgpOwotICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpT
R2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOworICAg
ICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOwogICAgICAgICBtX2RlYnVnZ2VyQWdl
bnQgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgICAgICBtX2NvbnNvbGVDbGllbnQtPnNldElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQobV9kZWJ1Z2dlckFnZW50KTsKICAgICAgICAgbV9hZ2VudHMu
YXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwpAQCAtMzI3LDIwICszMjcsMjAgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQog
CiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNv
bnRleHQpKTsKIAogICAgIGVuc3VyZURlYnVnZ2VyQWdlbnQoKTsKIAotICAgIGF1dG8gc2NyaXB0
UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Pihjb250ZXh0KTsKICAgICBtX2Nv
bnNvbGVDbGllbnQtPnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmls
ZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJv
ZmlsZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBoZWFwQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBoZWFwQWdlbnQgPSBtYWtl
VW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CiAgICAgaWYgKG1fY29uc29sZUFn
ZW50KQogICAgICAgICBtX2NvbnNvbGVBZ2VudC0+c2V0SW5zcGVjdG9ySGVhcEFnZW50KGhlYXBB
Z2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaGVhcEFnZW50KSk7CiAK
LSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0
QWdlbnQ+KGNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxKU0dsb2Jh
bE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzBiNWM5YWFkMThjMDhjZWRkYzM2OTY2YmYwNDY4
NTE0MTc2MjY0My4uNDE3ZTc3NWZiODAyNDljMDQwMzEzN2E4Mjc4MjEzNzMyN2QzMzJiNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkluc3BlY3RvciJfcykKICAgICAsIG1fZW52aXJvbm1l
bnQoY29udGV4dC5lbnZpcm9ubWVudCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9y
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuY3BwCmluZGV4IDdlZGJjODA2NjBmMzZkNmE4MWFhOTFmYjhmYTNmZGRkZWRhZTZmMjYuLjVk
MjRjNjllNmJmNDVkNzJmYjBiZGE1M2I0YzQ1NzU5ODYxM2NiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29uc3QgaW50IGV4cGly
ZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDsKIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVj
dG9yQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiQ29uc29sZSJfcykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRl
eHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8Q29uc29sZUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBsYWJlCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAv
LyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwog
ICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJc
IiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywg
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogICAgIH0KIH0KIApA
QCAtMTU5LDE0ICsxNTksMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWlu
ZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwKICAgICBpZiAoaXQg
PT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRo
ZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1h
a2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwogICAgIFNlY29uZHMgZWxh
cHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwogICAgIFN0cmluZyBtZXNz
YWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRo
KGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKLSAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2Us
IFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2Fn
ZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdl
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiB2b2lkIElu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE4NCwxNCArMTg0LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IGxhYmVsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkpIHsKICAgICAgICAgLy8gRklYTUU6
IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAg
U3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBu
b3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6
VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNr
KSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1
ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGlt
ZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6ICIsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAzKSwgIm1zIik7Ci0g
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2
ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBhZGRNZXNzYWdl
VG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2Us
IFdURk1vdmUoY2FsbFN0YWNrKSkpOwogCiAgICAgbV90aW1lcy5yZW1vdmUoaXQpOwogfQpAQCAt
MjI0LDcgKzIyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudChKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICAvLyBGSVhNRTogV2ViIElu
c3BlY3RvciBzaG91bGQgaGF2ZSBhIGJldHRlciBVSSBmb3IgY291bnRlcnMsIGJ1dCBmb3Igbm93
IHdlIGp1c3QgbG9nIGFuIHVwZGF0ZWQgY291bnRlciB2YWx1ZS4KIAogICAgIFN0cmluZyBtZXNz
YWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0g
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEp
KSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEp
KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZv
aWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fY291bnRzLmVuZCgpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6
YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiQ291bnRlciBcIiIs
IGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29s
ZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNy
ZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5p
bmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBl
NWYyNDgyYTNjYWEwOGFhODE2NDVmYThjNzljNTI5YmE0MzgwZDBhLi4yNWYxZDNlNzI4MWM2YjBm
YjgzMzBmZjEzNzg3MzY0M2ViYzYwZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9yQnJlYWtw
b2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3RpbwogCiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGVidWdnZXIiX3MpCi0gICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihEZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3Nj
cmlwdERlYnVnU2VydmVyKGNvbnRleHQuZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKSkK
ICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggYjUzNWZmNjE5MmFhY2VmYzc5YjRm
NmNkOTNkZjEyMDFhMzcxNDhhYy4uNTgyYzM1ZDM2N2RmZTFlNGY3ZGM0ZTlhNTY4NGRjYTJhNGUz
YjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogSW5zcGVjdG9ySGVhcEFnZW50OjpJbnNwZWN0b3JIZWFwQWdlbnQo
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJIZWFwIl9z
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1h
bmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEhlYXBG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSGVhcEJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDU2ZmMxYjc5OGRhMGVlZWVhMDIzMzFl
ZDUyNTRhOTUwMjEwMDU4NzQuLmNiYWQ4MWQ2OTk0NDBhNzMzYjBhZjA0MTY5NGE4NmNhOWU2ZThl
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KEFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiU2NyaXB0UHJvZmlsZXIiX3MpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8U2NyaXB0UHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+
KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihTY3Jp
cHRQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKaW5kZXggM2FjYTQxMDUxMGZlNTAwZjA1YmZi
YWFjNDY3ZmZkYWNjYjIxYzUyNC4uOTM1MDY4YzdhZTExOTcxMDU0NGMxZjc2Nzk4MjJkZmI2NmU1
NmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRh
cmdldEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNo
ZXImIGJhY2tlbmREaXNwYXRjaGVyKQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUYXJnZXQi
X3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFRhcmdldEZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVy
KSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVGFyZ2V0QmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlMzI5YTNiNDNjZDYwOTY1ZDlmNzc4NWE0ODIy
MDExYWIzNjZmYTUzLi45YjNmMzc5ZDVlNWE0OTBkYmUzNzVjNzJhYzk5ZmE3MjBiOWFjY2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGUKIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdl
VG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMTQ1ZDA1MTZiOGUz
OTY4ODc4ZDkyY2I1OTRhYTU5OWJhZmEzOWQzMi4uM2I3YzNlMjFkMzFjMWMyZjViNmQxYmEwYzE2
ZjQ4ODgzZTZjZjMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNw
cApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEpTQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCi0gICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoUnVudGltZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2ds
b2JhbE9iamVjdChjb250ZXh0Lmluc3BlY3RlZEdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCmluZGV4IDcx
MDE2NjhhOTdjODc0NDgxMmY0NjU2ZjE2ZTBiN2RkNTk0ZjFhNjAuLmNjOTY0MDA1Njc5ZGJmY2Q0
ZmUwMjkwNmJjOTNjMjNiMmM4MmVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtMTQ0LDExICsxNDQsMTEgQEAgT3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KFBsYXRmb3JtU29ja2UKIAogICAgIFNvY2tldDo6c2V0dXAoc29ja2V0KTsKIAotICAg
IGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U29ja2V0OjpDb25uZWN0aW9uPigp
OworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8U29ja2V0OjpDb25uZWN0aW9uPigp
OwogCiAgICAgY29ubmVjdGlvbi0+cG9sbCA9IFNvY2tldDo6cHJlcGFyZVBvbGxpbmcoc29ja2V0
KTsKICAgICBjb25uZWN0aW9uLT5zb2NrZXQgPSBzb2NrZXQ7Ci0gICAgY29ubmVjdGlvbi0+cGFy
c2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpCdWZmZXJT
aXplKTsKKyAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBtYWtlVW5pcXVlPE1lc3NhZ2VQYXJzZXI+
KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwogICAgIGNvbm5lY3Rpb24tPnBhcnNlci0+c2V0RGlk
UGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNdKENvbm5lY3Rpb25JRCBpZCwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkgewogICAgICAgICBpZiAobV9pbnNwZWN0b3JDbGllbnQpCiAgICAgICAgICAg
ICBtX2luc3BlY3RvckNsaWVudC0+ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KGlkLCBXVEZN
b3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50LmgKaW5kZXggNzBmMmQ3YTQ4MTM0NzBmODEzNzMyYjNiOTc3YjViNzNhNDE5NjBi
NS4uMzIwNDAwZmQ1YjNjZGIyYzRiMTVkYmRjOTMwNDZiYmZkMDBjYWRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQ+IGNyZWF0ZShSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50
KiBpbnNwZWN0b3JDbGllbnQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludD4oaW5zcGVj
dG9yQ2xpZW50LCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFtZSk7CiAgICAgfQogCiAgICAg
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudCosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weQppbmRleCA1MGM4ZjZmZGU3Y2U2ODk4YjA4MjgxNDk5N2JlNTdkNzMw
MTliMjUzLi4xMDE3ODllMWRmNzU0ODFmNjFlOGMwMGYyMTFhY2E3NDliNTA1OGVhIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpj
X2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC0xMzYs
OCArMTM2LDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvclRlbXBsYXRlczoKICAgICBbXyR7dmFyaWFi
bGVOYW1lUHJlZml4fUhhbmRsZXIgcmVsZWFzZV07CiAgICAgXyR7dmFyaWFibGVOYW1lUHJlZml4
fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4+KCIke2Rv
bWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikp
OworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRm
b3JtLmpzb24tcmVzdWx0CmluZGV4IDNlOTkxNDcxZDMyNGEzNTUxNjkyOGU0M2U5NDEwOGI0NDg3
MzEyMDguLmIwNGE4NTBkZjExNTJkNmZkYTU5NjJkZjM3YzJlNDllMWViZDk1ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhw
ZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9k
ZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxl
YXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0
byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0
d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdv
cmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJv
bGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXgg
YTcxNGZiMTMxODMyOTNkMTgzMmZjNTgxZTZjNTMzNzg2ODAyZDU3Mi4uYzBlMTczMzdmZDRhNzk4
ODMwZTg1ZDI5ZTg1ZDhlZDMwMjBjYTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTExODksOCArMTE4OSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAg
X2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9z
LCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8g
YWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtl
VW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpf
Y29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xs
ZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggNTNiZDU1M2I3YmE3NGRkZDI5ZTI1NTFjYzBi
ODRmYTQzMDcxNGNhZS4uYWVkMDdiNzVlOGI4ODhkZDU5MzM5MGFmYTIxZDJjODkwZGRmYzU4MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2Fs
bC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTA2OCw4ICsxMDY4LDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsK
ICAgICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0
ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJh
c2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29u
dHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CmluZGV4IDY3OGM2YWFhODVhY2EzODQy
NDhiOTkyOTAzNGNjZjA5NDExOGRlZTcuLjFhZGNiZDNmZDJhY2I5Y2ExNDYxYzMwOGU0NWM0OTJl
YzNlMDMyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdApAQCAtNzgyLDgg
Kzc4Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kb21haW5BSGFuZGxl
ciByZWxlYXNlXTsKICAgICBfZG9tYWluQUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0g
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVj
dG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21h
aW5BQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJEb21haW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikp
OworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rv
ckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWlu
QSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBf
Y29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9
CiAKQEAgLTgwMCw4ICs4MDAsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
ZG9tYWluQkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkJIYW5kbGVyID0gW2hhbmRsZXIg
cmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAg
YXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5CQmFja2Vu
ZERpc3BhdGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVl
PE9iakNJbnNwZWN0b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1
dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRj
aGVyPj4oIkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRj
aGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5h
dGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29t
bWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCBmNmM1ZWRjY2I5Mjg1YWY0OGM2ZGViOTg0MjJh
NzIzNmI4NzAyZDRlLi5hM2UyN2RmMzhjZWFmYmIzYzQ1MWUxM2I2MTE5ZTJlNTRjM2QyYThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKQEAgLTEwMzksOCArMTAzOSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmsxSGFuZGxlciA9
IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdU
Rk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hl
ciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURp
c3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92
ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdl
bnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC0xMDU3LDggKzEwNTcsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazNIYW5kbGVyIHJlbGVhc2Vd
OwogICAgIF9uZXR3b3JrM0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsz
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVt
LXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCA0ZDk0YWQ5NGFkODUxZjU4NWY0OGU5MTE1ZTNiZWNj
Zjk3YjdhZDVmLi5iZDZiOTgxNWY3NjAxYWUxZDBmZWRjMjZjNDU0MzViYTQzZjYxZTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdApAQCAtODE1LDggKzgxNSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAgICAgW19jb21tYW5kRG9tYWluSGFuZGxlciByZWxlYXNlXTsKICAgICBfY29tbWFu
ZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4+
KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0
Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0lu
c3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3Zl
KGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2Vu
dChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCA2ZjZiZjM2
MjU3YWU5ZWVmMDVmMWJmMjY3M2U2MTEzZjNiY2U4OTgwLi41Y2JjY2JmZWQ1M2M0YmYzNDEzNmY3
NjhlZGE1OWZmYjQ5MDcwYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlu
cy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC03OTgsOCArNzk4LDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsK
ICAgICBfbmV0d29yazFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0
ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29y
azEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29u
dHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVj
dGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDNlOTkx
NDcxZDMyNGEzNTUxNjkyOGU0M2U5NDEwOGI0NDg3MzEyMDguLmIwNGE4NTBkZjExNTJkNmZkYTU5
NjJkZjM3YzJlNDllMWViZDk1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMt
cGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxl
cik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFj
a2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCAwNWY3MGYxYWVhZjRjNGQ5ZjUyYzEwNmFiNjZkYjllY2QyZWFiOGJlLi45OWU4YTQ3ZmQ1ZTBj
MjA3ZTcyN2I4NmZlMjM2MTkwNTdiNjUwMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgfQogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYg
T3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpKSkKLSAgICAgICAgbV9k
aXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxv
Y2spOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8SklURGlzYXNzZW1ibGVy
PihtX2NvZGVCbG9jayk7CiAgICAgaWYgKFVOTElLRUxZKG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9m
aWxlcikpIHsKICAgICAgICAgbV9jb21waWxhdGlvbiA9IGFkb3B0UmVmKAogICAgICAgICAgICAg
bmV3IFByb2ZpbGVyOjpDb21waWxhdGlvbigKQEAgLTkwMSw3ICs5MDEsNyBAQCBDb21waWxhdGlv
blJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFw
QnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9D
b2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUo
bV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOworICAgICAgICBtX2Nv
ZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1h
cD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKSk7CiAg
ICAgCiAgICAgQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXN1bHQgPSBGSU5BTElaRV9DT0RFKAog
ICAgICAgICBwYXRjaEJ1ZmZlciwgSlNFbnRyeVB0clRhZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmNwcAppbmRleCAxNmJmNzBkODAxNzQ0MjMwNTAyYTJkOGIxOTdjZDQwMWM4
MDI0ZjM4Li41YmRmODMwNDY1MDQzOTk0ZTExYmFmZmVkNTJiYjc4NWMxYmEwYTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogSklUVGh1bmtzOjpKSVRUaHVua3MoKQotICAgIDogbV9ob3N0RnVuY3Rp
b25TdHViTWFwKHN0ZDo6bWFrZV91bmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4oKSkKKyAgICA6
IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChtYWtlVW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGUzODhmYjBl
NjI3MDhiMzRlY2I5NzFlOTQ2YjQ2YjE5M2M0Y2FlM2IuLjhmOWE4NjRlNGZlODYyNmExZmVmYzBj
MzA3YzllNDY1NjYyZjVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApA
QCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsRnJhbWVTaHVmZmxlcj4gZnJhbWVTaHVmZmxlcjsKICAgICBpZiAoY2Fs
bExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSkgewogICAgICAgICBBU1NFUlQoY2FsbExpbmtJ
bmZvLmlzVGFpbENhbGwoKSk7Ci0gICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZs
ZURhdGEoKSk7CisgICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNo
dWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSk7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgLy8gV2Ugd291bGQgaGF2ZSBhbHJlYWR5IGNoZWNr
ZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbCwgYW5kIHdlIGNhbgogICAgICAgICAvLyB1c2Ug
dGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIgdGhpcyBidXlzIHVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApp
bmRleCA0MTIyZmJlZDIyZWUxNTUyM2QxNGU0YTg3OWFiYTFhYjg0Nzg2YTA3Li43MDJkMzY5NGQ5
Zjc2ODg0MjBmMGNkYWJkMTBlODg4YTczM2YyODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAt
Mjk2OSw3ICsyOTY5LDcgQEAgaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGluZSYgb3B0aW9ucywg
Ym9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykKICAgICAgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcih2bSk7CiAKICAgICAgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlICYmICF2bS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXIpCi0gICAgICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOworICAgICAgICAgICAgdm0u
bV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZt
KTsKIAogICAgICAgICBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3Vt
ZW50cyk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChv
cHRpb25zLm1fZW5hYmxlUmVtb3RlRGVidWdnaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCBmOGRiZTcxOTZmMTExNzE2ZDBhNThmN2Y1N2UzZjhmNjdiN2Ey
YWNmLi5hMTY0ZmQ5MDNmMzZlOTQyMGE3MzY0ZWY0MjdjNmMyZmZlMzIyY2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUGFyc2Vy
PExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQ
YXJzZXJCdWlsdGluTW9kZQogICAgICwgbV9pbW1lZGlhdGVQYXJlbnRBbGxvd3NGdW5jdGlvbkRl
Y2xhcmF0aW9uSW5TdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX2RlYnVnZ2VyUGFyc2VEYXRhKGRl
YnVnZ2VyUGFyc2VEYXRhKQogewotICAgIG1fbGV4ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExleGVy
VHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKKyAgICBtX2xleGVyID0gbWFrZVVu
aXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2NyaXB0TW9kZSk7CiAgICAgbV9sZXhl
ci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRp
b24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpOwogICAgIG1fdG9rZW4u
bV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNjlhYTBiYzE5MGFmNjc4M2Q4OTI4YzM1OWFh
M2IxMGJiMWZiZDg3My4uMGE1ZWRlNGI4NDI1Y2ZkMWIzMTdjNzZjNTFlYTczNzgxNzgwYjUyMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMDQsNyArMjA0LDcgQEAg
c3RydWN0IFNjb3BlIHsKICAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyKiBsYWJl
bCwgYm9vbCBpc0xvb3ApCiAgICAgewogICAgICAgICBpZiAoIW1fbGFiZWxzKQotICAgICAgICAg
ICAgbV9sYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExhYmVsU3RhY2s+KCk7CisgICAgICAgICAg
ICBtX2xhYmVscyA9IG1ha2VVbmlxdWU8TGFiZWxTdGFjaz4oKTsKICAgICAgICAgbV9sYWJlbHMt
PmFwcGVuZChTY29wZUxhYmVsSW5mbyB7IGxhYmVsLT5pbXBsKCksIGlzTG9vcCB9KTsKICAgICB9
CiAKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAgICAgICAg
IGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1cnJlbnRMaW5lU3RhcnRP
ZmZzZXQoKTsKICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJy
ZW50T2Zmc2V0KCk7CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IGVuZExvY2F0aW9uLnN0
YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwotICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEsCisgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmRMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0Q29sdW1uLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oCmluZGV4IGRmMTdiZTUzNjYzZTdjYjdiNzBjNDg3NzBmOWEwNTI5Y2YzM2E3
ZWUuLjQxMDAwNmQ5Mjc1MWNlOTZiOTJjYjk2MjU2MzVlYTdjZjc4ZWM0ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllckFyZW5hJiBpZGVudGlmaWVyQXJlbmEo
KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkgKCFtX2lkZW50aWZpZXJBcmVu
YSkpCi0gICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBzdGQ6Om1ha2VfdW5pcXVl
PElkZW50aWZpZXJBcmVuYT4oKTsKKyAgICAgICAgICAgICAgICBtX2lkZW50aWZpZXJBcmVuYSA9
IG1ha2VVbmlxdWU8SWRlbnRpZmllckFyZW5hPigpOwogICAgICAgICAgICAgcmV0dXJuICptX2lk
ZW50aWZpZXJBcmVuYTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKaW5kZXggMDUwMzJiNWQxMzEw
OGMwZWI2MjBlOWRhZTgyMGNlZjdhYzc1MzE4Yy4uMzU3MTFiNWZhNjQyNjllNjc3NGFiNzBlMjFk
ZDUwMjUxNjljOGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcApAQCAtNzksNyArNzksNyBAQCBFeGVjdXRpb25D
b3VudGVyKiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZvcihjb25zdCBPcmlnaW5TdGFj
ayYgb3JpZ2luKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGVjdXRpb25Db3VudGVyPiYgY291
bnRlciA9IG1fY291bnRlcnMuYWRkKG9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghY291bnRlcikKLSAgICAgICAgY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXhl
Y3V0aW9uQ291bnRlcj4oKTsKKyAgICAgICAgY291bnRlciA9IG1ha2VVbmlxdWU8RXhlY3V0aW9u
Q291bnRlcj4oKTsKIAogICAgIHJldHVybiBjb3VudGVyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDcwYzcxNDczMzI0NDQwODA3ODc5MzQwMTk4
NjY3M2M5N2UxZWE4M2QuLmE2NGRlM2ZkZDY2MjU1MThhYzVkMTI2Y2VhYzc4YjZmMjEyNWE0ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTE3NCw3ICsxNzQs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBnZXRTdGFja1RyYWNlKEV4
ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iagogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIHNpemVfdCBmcmFtZXNUb1NraXAgPSB1c2VDdXJyZW50RnJhbWUgPyAwIDogMTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0YWNrRnJhbWU+
PigpOwogICAgIHZtLmludGVycHJldGVyLT5nZXRTdGFja1RyYWNlKG9iaiwgKnN0YWNrVHJhY2Us
IGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2JqZWN0LT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZSgpKTsK
ICAgICBpZiAoIXN0YWNrVHJhY2UtPmlzRW1wdHkoKSkKICAgICAgICAgQVNTRVJUX1VOVVNFRChl
eGVjLCBleGVjID09IHZtLnRvcENhbGxGcmFtZSB8fCBleGVjLT5pc0dsb2JhbEV4ZWMoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcAppbmRleCA0MzllMjA5YjBhNWY4ZmI4MjliNzkxOTc1NzQ4OGM0MTU2MzQyNzNmLi5lZjJl
ODMwODc0MWI4ODUyZTU2MjMyNmY5NjI1N2M5ZDAyOTM1ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTExMCw3
ICsxMTAsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUds
b2JhbENvZGUoCiBGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhKTsKLSAg
ICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICBhdXRv
IHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByYXJlRGF0YS0+bV9saW5l
Q291bnQgPSBsaW5lQ291bnQoKTsKICAgICByYXJlRGF0YS0+bV9lbmRDb2x1bW4gPSBlbmRDb2x1
bW4oKTsKICAgICByYXJlRGF0YS0+bV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJz
U3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUmFyZURhdGEuaAppbmRleCA0NjIzNjQxYzU5OGUzZWJiNWZiYTZiYzAyMzcyNjRlNTA1MmZk
MTc5Li41MmIyOGIxM2M3ZTJlMjVkMjFiYmJhYjNhZDMxZDViNmJjMGNkZWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCkBAIC0xNTYs
NyArMTU2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlvblByb2ZpbGVDbGVh
cmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2gKIGlubGluZSBXYXRjaHBvaW50KiBG
dW5jdGlvblJhcmVEYXRhOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWhhc0FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdX
YXRjaHBvaW50KCkpOwotICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0
aGlzKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CiAgICAgcmV0
dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQuZ2V0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAxYTU3ZWYzZGNmZTkxOWU3MGIzN2ZhN2UzNDg1NGExM2U5MDUzZmFlLi5jYzg3NzY3ZjEwOGJj
YzQ4M2IzMTVmMTEyZmE5YzUzNDdmNTIwMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NzcsOCArNDc3LDggQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9kZWJ1Z2dlciA9IDA7CiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
PigqdGhpcyk7Ci0gICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKKyAgICBtX2luc3BlY3RvckNvbnRyb2xs
ZXIgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gbWFrZVVuaXF1ZTxKU0ds
b2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKICAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUt
PmluaXQoKTsKICAgICBtX2NvbnNvbGVDbGllbnQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNv
bnNvbGVDbGllbnQoKTsKICNlbmRpZgpAQCAtMTE0NSw1NyArMTE0NSw1NyBAQCBjYXBpdGFsTmFt
ZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcg
PyBjYXBpdGFsTmFtZQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBj
b25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0ZXJhdG9yUHJvdG90eXBl
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90
b3R5cGVOZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90
b3R5cGVOZXh0ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVO
ZXh0LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLT5hcnJheVBy
b3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAg
bV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
KTsKKyAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1h
a2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2lu
dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtYXBJdGVyYXRvclBy
b3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9tYXBJdGVyYXRv
clByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBJ
dGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBJ
dGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAg
ewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0
aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVy
YXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dChzZXRJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAg
ICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
KyAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
ICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90
b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldFBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAg
ICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFk
YXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpLCBtX3ZtLnBy
b3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4
dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7
CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRp
dmVXYXRjaHBvaW50KG1fc3RyaW5nUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0cmluZ1Byb3RvdHlw
ZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5n
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFt
ZXMtPnNldCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludCA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50KTsKKyAgICAg
ICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFByb3RvdHlwZVNldFdh
dGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQ
cm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKLSAgICAgICAgbV9zZXRQ
cm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNo
cG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hwb2lu
dCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAg
ICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rvciog
bG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAg
ICAgICB0aGlzLT5zeW1ib2xQcm90b3R5cGUoKTsKIAogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChudW1iZXJQcm90b3R5
cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpOwotICAgICAgICBtX251bWJlclByb3Rv
dHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRp
dGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOworICAgICAgICBtX251bWJlclByb3Rv
dHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwg
bV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOwogICAgICAgICBtX251bWJlclByb3RvdHlwZVRv
U3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG9Ub1N0
cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihudW1iZXJQcm90
b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpKSk7CiAgICAg
fQpAQCAtMTkzMiwxMCArMTkzMiwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxs
QXJyYXlTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludC5pc0JlaW5nV2F0Y2hlZCgpKTsKICAgICBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnQudG91Y2godm0sICJTZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRj
aHBvaW50LiIpOwogCi0gICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5
U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNo
cG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJh
eVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKIAotICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9h
cnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlT
cGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCAwNDdjMTY2NTNlNzFiMWE4MDZiZDlmYzdkNTY2NDNhNWY5
ODhmMTFlLi44NDUzNWNhNWM2MDBjZWNiZDhiNDc4ZjY1YjUzY2QwN2UzNmE4MzlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTUyMSw3
ICs1MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICB7CiAgICAgICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9i
amVjdFJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxKU0dsb2Jh
bE9iamVjdFJhcmVEYXRhPigpOwogICAgIH0KICAgICAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKaW5kZXggMWFmMDAz
NjUzY2I4YzNkZTY0M2Y4YzQ5MTI3YWJiM2U1NTEzZDVhZC4uMzI3ZmVkMDZjNjdhNWJmMTEyNTFm
OWY0ZGVkODM5ZTcwMzNjOGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUnVuTG9vcFRpbWVyLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIEpTUnVuTG9vcFRp
bWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OnNldFJ1bkxvb3AoTWFuYWdlciogbWFuYWdlciwgQ0ZS
dW5Mb29wUgogI2Vsc2UKIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBlclZN
RGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQogICAgIDogcnVuTG9vcCgmUnVuTG9vcDo6Y3VycmVudCgp
KQotICAgICwgdGltZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5hZ2VyPj4o
KnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmly
ZUNhbGxiYWNrKSkKKyAgICAsIHRpbWVyKG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdl
cj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRp
ZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICB0aW1lci0+
c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpKYXZhc2NyaXB0VGltZXIpOwpAQCAt
MTcyLDcgKzE3Miw3IEBAIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyJiBKU1J1bkxvb3BUaW1lcjo6
TWFuYWdlcjo6c2hhcmVkKCkKIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6cmVnaXN0
ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQZXJWTURh
dGE+KCp0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFBlclZNRGF0YT4oKnRoaXMp
OwogI2lmIFVTRShDRikKICAgICBkYXRhLT5zZXRSdW5Mb29wKHRoaXMsIHZtLnJ1bkxvb3AoKSk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCmluZGV4IDVmMDc4ZDJhNTA5ZDJiNDQyMDBmN2E0YWYzODgxMjQ2Y2Iy
ZDU4YTcuLjUyOTAyMGRmMGYxZGMyYTI4NmY4MDBhYmFkOWQ3ZWI3ZDNmOGVlOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxl
OjpnZXREZWxldGVkT2Zmc2V0KCkKIGlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0
ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICghbV9kZWxldGVkT2Zm
c2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFByb3BlcnR5T2Zmc2V0Pj4oKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlx
dWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBl
bmQob2Zmc2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVRhYmxlLmNwcAppbmRleCA1OWVjNDFjNDlhZTgyZjQ3ZjY5ODY4MDZkZDYxNDM5NDRhNDJi
NWQ2Li5iMWJiNjc5MTk5MjY1YWZjYmNjYzgzNjU2ZDhkNTZmYzViNGEzNTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgY29uc3QgUHJvcGVy
dHlUYWJsZSYgb3RoZXIpCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3Iu
CiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVy
Lm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0g
ICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0
cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNl
dHMpOwogfQogCiBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgdW5zaWduZWQg
aW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTEwNyw3ICsx
MDcsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgdW5zaWduZWQgaW5p
dGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYgogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRl
ZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRl
ZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRl
bGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAg
IG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpv
dGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogdm9pZCBQcm9wZXJ0eVRhYmxlOjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4
IDA3MWIxZjY2MzE1Y2UzYWU4ZGNmZTE3NWZmNjM2NmY1YzYzMmFmZmMuLjcwZTU5M2Q1M2ViZGQ4
MWQ4YzA4MTNhMjk3NzBlOTQwY2UwNDExM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVnRXhwOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAKICAgICBtX251bVN1YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBh
dHRlcm5zOwogICAgIGlmICghcGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzLmlzRW1wdHkoKSB8
fCAhcGF0dGVybi5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICBtX3Jh
cmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9j
YXB0dXJlR3JvdXBOYW1lcy5zd2FwKHBhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcyk7CiAgICAg
ICAgIG1fcmFyZURhdGEtPm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5zd2FwKHBhdHRlcm4ubV9u
YW1lZEdyb3VwVG9QYXJlbkluZGV4KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5oCmluZGV4IDM5Y2RkOTExNmUwMjdlM2RiNjA0MGRiZDhmZTUyNzBkMmU5OTVkOGQu
LmU4ZGE4NTI2ZTdjN2U4MWZiZWE3NWM4ODk4ODE2MWI5YWY4OTE3MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0xNjQsNyArMTY0LDcgQEAgY2xhc3MgUmVnRXhw
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgWWFycjo6WWFyckNvZGVCbG9jayYgZW5zdXJl
UmVnRXhwSklUQ29kZSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcmVnRXhwSklUQ29kZSkKLSAg
ICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8WWFycjo6WWFyckNv
ZGVCbG9jaz4oKTsKKyAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IG1ha2VVbmlxdWU8WWFy
cjo6WWFyckNvZGVCbG9jaz4oKTsKICAgICAgICAgcmV0dXJuICptX3JlZ0V4cEpJVENvZGUuZ2V0
KCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDIzN2Q3ZGU2ODhkZDIwNzY1MDIwMTIxNmNkMGQ1
NDY4MGM0OTZlYWEuLmVlNmUxOGNlZmRiZTc5ZjRiYzJlYjIxOTdmZjUzOTEwNGUxZjc5OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
Y3BwCkBAIC00NjksNyArNDY5LDcgQEAgYXV0byBTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1w
bGF0ZU9iamVjdE1hcEltcGwoc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWMKIHsKICAgICBp
ZiAoZGVzdCkKICAgICAgICAgcmV0dXJuICpkZXN0OwotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VV
bmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+KCk7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsK
ICAgICBkZXN0ID0gV1RGTW92ZShyZXN1bHQpOwogICAgIHJldHVybiAqZGVzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDI5M2M0NjQ3MmU3NDg5
NDFjYTljYzJhZGFjMTZhM2QyZGM1ZGVlZWMuLjAxY2QyYmQ1NDdmZTAyYjUwNDdhNmQ0NWIzYzhh
ZDZmZDUyYmRiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIFdhdGNocG9pbnRTZXQqIFN0cnVjdHVyZTo6ZW5zdXJl
UHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQoVk0mIHZtLCBQcm9wZXJ0CiAgICAgU3Ry
dWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+cmFyZURhdGEoKTsKICAgICBpZiAoIXJh
cmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMpIHsKICAgICAgICAgcmFyZURhdGEt
Pm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5p
cXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+KCk7CisgICAgICAg
ICAgICBtYWtlVW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+
KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgfQogICAgIGF1dG8gcmVz
dWx0ID0gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cy0+YWRkKG9mZnNldCwg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YS5jcHAKaW5kZXggOTlhOGQ5ZjdkYWFjMjE3ZTRjODFlN2U3MTI2ZTljMDJiMzc0
ZWQzZi4uZDNjZjE4M2IwZjZkN2M0ODk4ODAwYWI2OGVlNDhjZDEyOGY3ZmUyNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3Ry
aW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyCiAgICAgQVNTRVJUKGNv
bmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHkoKSk7CiAgICAgZm9yIChPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgaWYg
KGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNl
bmNlKSB7Ci0gICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVl
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0aGlzKTsKKyAgICAg
ICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOwogICAgICAgICAgICAgbV9vYmplY3RUb1N0
cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVdhdGNocG9pbnRT
ZXQuYWRkKGNvbmRpdGlvbiwgdGhpcyktPmluc3RhbGwodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDM5MmYyMTdjMTRlZmFlYjU0NWJm
MGQ0Zjc3OTBjMTEyNzkzMmJjODUuLmE0YTg3MGZjMWZjYWQzNWM0Mzk1ZjEwOWIyMmE5OWM0MjBk
NzQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCBjb25zdCBTeW1ib2xUYWJsZTo6TG9jYWxUb0VudHJ5VmVj
JiBTeW1ib2xUYWJsZTo6bG9jYWxUb0VudHJ5KGNvbnN0IENvbmN1cnJlbnRKUwogICAgICAgICAg
ICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBvZmZzZXQuc2NvcGVPZmZzZXQoKS5vZmZzZXQo
KSArIDEpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIG1fbG9jYWxUb0VudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIpOworICAgICAgICBtX2xv
Y2FsVG9FbnRyeSA9IG1ha2VVbmlxdWU8TG9jYWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsK
ICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbWFwKSB7CiAgICAgICAgICAgICBWYXJPZmZz
ZXQgb2Zmc2V0ID0gZW50cnkudmFsdWUudmFyT2Zmc2V0KCk7CiAgICAgICAgICAgICBpZiAob2Zm
c2V0LmlzU2NvcGUoKSkKQEAgLTE1OSw3ICsxNTksNyBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFi
bGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgcmVzdWx0LT5tX2FyZ3VtZW50cy5z
ZXQodm0sIHJlc3VsdCwgYXJndW1lbnRzKTsKICAgICAKICAgICBpZiAobV9yYXJlRGF0YSkgewot
ICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxl
UmFyZURhdGE+KCk7CisgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8U3lt
Ym9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLmJlZ2luKCk7CkBAIC0xOTEsNyArMTkxLDcgQEAg
dm9pZCBTeW1ib2xUYWJsZTo6cHJlcGFyZUZvclR5cGVQcm9maWxpbmcoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAg
ICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAg
Zm9yIChhdXRvIGl0ZXIgPSBtX21hcC5iZWdpbigpLCBlbmQgPSBtX21hcC5lbmQoKTsgaXRlciAh
PSBlbmQ7ICsraXRlcikgewogICAgICAgICBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLnNldChp
dGVyLT5rZXksIFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKTsKQEAgLTIxMCw3
ICsyMTAsNyBAQCBDb2RlQmxvY2sqIFN5bWJvbFRhYmxlOjpyYXJlRGF0YUNvZGVCbG9jaygpCiB2
b2lkIFN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBt
YWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICBBU1NFUlQoIW1fcmFyZURh
dGEtPm1fY29kZUJsb2NrKTsKICAgICBtX3JhcmVEYXRhLT5tX2NvZGVCbG9jay5zZXQoKmNvZGVC
bG9jay0+dm0oKSwgdGhpcywgY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5jcHAKaW5kZXggNDEwZWI2ZDVhZTE2ZjM2MDIyNmRiMzgyM2Y3ZWU4MjhlY2Nh
YjM4My4uNDFhY2E5ZDNkNGQ5YjhhNTZhZTY4NTIzMGU4ZDY2NzUyYWMwZDAyOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCgpCiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fcHJvdG8tPnByb3BlcnR5SGFzaCgpKTsKICAgICB9CiAKLSAgICBtX3Byb3BlcnR5SGFz
aCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIG1f
cHJvcGVydHlIYXNoID0gbWFrZVVuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAg
ICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDRlMmQwZDMyNGEyNGUyMzJjZDE5NTM4OTJlZDhiMGEzM2IwYjA1ZWUuLmI3
MDkyYzA4ZWY3MmIwZWNhODlmZjBiNWM0YmUxYWU1OWFhMWRiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTI1MiwxOCArMjUyLDE4IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcnVuTG9vcChDRlJ1bkxvb3BHZXRDdXJy
ZW50KCkpCiAjZW5kaWYgLy8gVVNFKENGKQogICAgICwgaGVhcCh0aGlzLCBoZWFwVHlwZSkKLSAg
ICAsIGZhc3RNYWxsb2NBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxGYXN0TWFsbG9jQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0
ZDo6bWFrZV91bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6
UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQot
ICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBl
PihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxp
YXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3Vu
aXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQotICAgICwgY2VsbEhlYXBD
ZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9l
c05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0
dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgc3Ry
aW5nSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkp
Ci0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIGZhc3RNYWxsb2NBbGxv
Y2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAg
ICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKKyAgICAsIGpzVmFsdWVHaWdh
Y2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4o
R2lnYWNhZ2U6OkpTVmFsdWUpKQorICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlx
dWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5
cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQorICAgICwg
Y2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMo
RG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQorICAgICwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJp
YnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQorICAgICwgc3RyaW5n
SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBk
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZT4oKSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJB
c3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVh
cENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlw
ZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5
RnVuY3Rpb25IZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxXZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlPigpKQogI2VuZGlmCiAgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNl
N2NkNzYyCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdh
Y2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFs
dWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYKQEAgLTI5Niw3ICsy
OTYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBt
X2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0
b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFt
ZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKLSAgICAsIG1hY2hpbmVD
b2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNp
bXBsZVN0YXRzPigpKQorICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJh
c2VsaW5lSklUKG1ha2VVbmlxdWU8U2ltcGxlU3RhdHM+KCkpCiAgICAgLCBjdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykKICAgICAsIHN0cmluZ0NhY2hlKCp0aGlzKQogICAgICwg
c3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0aGlzKQpAQCAtMzEyLDggKzMxMiw4IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faW5pdGlhbGl6aW5nT2Jq
ZWN0Q2xhc3MoMCkKICNlbmRpZgogICAgICwgbV9zdGFja1BvaW50ZXJBdFZNRW50cnkoMCkKLSAg
ICAsIG1fY29kZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUNhY2hlPigpKQotICAgICwgbV9i
dWlsdGluRXhlY3V0YWJsZXMoc3RkOjptYWtlX3VuaXF1ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0
aGlzKSkKKyAgICAsIG1fY29kZUNhY2hlKG1ha2VVbmlxdWU8Q29kZUNhY2hlPigpKQorICAgICwg
bV9idWlsdGluRXhlY3V0YWJsZXMobWFrZVVuaXF1ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0aGlz
KSkKICAgICAsIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50KDApCiAgICAgLCBtX3ByaW1pdGl2
ZUdpZ2FjYWdlRW5hYmxlZChJc1dhdGNoZWQpCiAgICAgLCBtX2NvbnRyb2xGbG93UHJvZmlsZXJF
bmFibGVkQ291bnQoMCkKQEAgLTQwNyw3ICs0MDcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKCp0
aGlzKTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlUHJvZmlsZXIoKSkpIHsK
LSAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxl
cjo6RGF0YWJhc2U+KCp0aGlzKTsKKyAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFr
ZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKIAogICAgICAgICBTdHJpbmdQcmlu
dFN0cmVhbSBwYXRoT3V0OwogICAgICAgICBjb25zdCBjaGFyKiBwcm9maWxlclBhdGggPSBnZXRl
bnYoIkpTQ19QUk9GSUxFUl9QQVRIIik7CkBAIC00MjMsNyArNDIzLDcgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIC8vIHdvbid0IHVzZSB0aGlzLgogICAg
IG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgU2ltcGxlVHlwZWRBcnJheUNv
bnRyb2xsZXIoKSk7CiAKLSAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsKKyAgICBtX2J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnk+KCp0aGlzKTsKIAogICAgIGlmIChPcHRpb25zOjp1c2VUeXBlUHJvZmlsZXIoKSkKICAgICAg
ICAgZW5hYmxlVHlwZVByb2ZpbGVyKCk7CkBAIC00NDIsOSArNDQyLDkgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19Q
Uk9GSUxFUikKIAogICAgIGlmIChPcHRpb25zOjp1c2VSYW5kb21pemluZ0Z1enplckFnZW50KCkp
Ci0gICAgICAgIHNldEZ1enplckFnZW50KHN0ZDo6bWFrZV91bmlxdWU8UmFuZG9taXppbmdGdXp6
ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxSYW5k
b21pemluZ0Z1enplckFnZW50PigqdGhpcykpOwogICAgIGVsc2UgaWYgKE9wdGlvbnM6OnVzZURv
dWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRGdXp6ZXJBZ2VudChzdGQ6
Om1ha2VfdW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAg
ICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+
KCp0aGlzKSk7CiAKICAgICBpZiAoT3B0aW9uczo6YWx3YXlzR2VuZXJhdGVQQ1RvQ29kZU9yaWdp
bk1hcCgpKQogICAgICAgICBzZXRTaG91bGRCdWlsZFBDVG9Db2RlT3JpZ2luTWFwcGluZygpOwpA
QCAtNDU3LDkgKzQ1Nyw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0
IHRoZSBKSVQgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZCBpbiBub24tY29tcGlsYXRp
b24gdGhyZWFkcy4KICAgICBpZiAoY2FuVXNlSklUKCkpIHsKLSAgICAgICAgaml0U3R1YnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKKyAgICAgICAgaml0U3R1YnMgPSBtYWtlVW5p
cXVlPEpJVFRodW5rcz4oKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICAgICAgZnRsVGh1bmtz
ID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKKyAgICAgICAgZnRsVGh1bmtzID0g
bWFrZVVuaXF1ZTxGVEw6OlRodW5rcz4oKTsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAg
ICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwog
ICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3Ry
dWN0KTsKQEAgLTYxOSw3ICs2MTksNyBAQCBXYXRjaGRvZyYgVk06OmVuc3VyZVdhdGNoZG9nKCkK
IEhlYXBQcm9maWxlciYgVk06OmVuc3VyZUhlYXBQcm9maWxlcigpCiB7CiAgICAgaWYgKCFtX2hl
YXBQcm9maWxlcikKLSAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhl
YXBQcm9maWxlcj4oKnRoaXMpOworICAgICAgICBtX2hlYXBQcm9maWxlciA9IG1ha2VVbmlxdWU8
SGVhcFByb2ZpbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2hlYXBQcm9maWxlcjsKIH0KIApA
QCAtMTA0MSw4ICsxMDQxLDggQEAgc3RhdGljIGJvb2wgZGlzYWJsZVByb2ZpbGVyV2l0aFJlc3Bl
Y3RUb0NvdW50KHVuc2lnbmVkJiBjb3VudGVyLCBjb25zdCBGdW5jJiBkb0QKIGJvb2wgVk06OmVu
YWJsZVR5cGVQcm9maWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVUeXBlUHJvZmlsZXIgPSBbdGhp
c10gKCkgewotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
VHlwZVByb2ZpbGVyPigpOwotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlckxvZyA9IHN0ZDo6
bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CisgICAgICAgIHRoaXMtPm1fdHlw
ZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXI+KCk7CisgICAgICAgIHRoaXMtPm1f
dHlwZVByb2ZpbGVyTG9nID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXJMb2c+KCp0aGlzKTsKICAg
ICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KG1fdHlw
ZVByb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVUeXBlUHJvZmlsZXIpOwpAQCAtMTA2MSw3ICsx
MDYxLDcgQEAgYm9vbCBWTTo6ZGlzYWJsZVR5cGVQcm9maWxlcigpCiBib29sIFZNOjplbmFibGVD
b250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93UHJvZmlsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CisgICAgICAgIHRoaXMtPm1f
Y29udHJvbEZsb3dQcm9maWxlciA9IG1ha2VVbmlxdWU8Q29udHJvbEZsb3dQcm9maWxlcj4oKTsK
ICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KG1f
Y29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudCwgZW5hYmxlQ29udHJvbEZsb3dQcm9maWxl
cik7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFZNOjpkdW1wVHlwZVByb2ZpbGVyRGF0YSgp
CiAKIHZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKIHsKLSAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0aGlzLCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHRhc2spKSk7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxRdWV1ZWRU
YXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFZN
OjpkcmFpbk1pY3JvdGFza3MoKQpAQCAtMTIzMCwxNCArMTIzMCwxNCBAQCB2b2lkIFZNOjplbnN1
cmVTaGFkb3dDaGlja2VuKCkKIHsKICAgICBpZiAobV9zaGFkb3dDaGlja2VuKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9zaGFkb3dDaGlja2VuID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dDaGlj
a2VuPigpOworICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8U2hhZG93Q2hpY2tlbj4o
KTsKIH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
bmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCiAgICAgSXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNT
bG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBh
dXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBl
LCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCiAgICAgICAgIG1f
IyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgp
OyBcCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYQogICAgIElz
b1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7IFwKICAgICAgICAgQVNTRVJUKCFt
XyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VB
bmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAg
ICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAgICAgICAgV1RGOjpzdG9yZVN0b3Jl
RmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCiAgICAgICAg
IHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAyNGYxOGFkMDJkZTJmZWY5MDA5MzQ0
ODY0MzBjOThmZTk0OTQyNGVmLi41MzM5M2NiMjU4Zjc0MmM2YWNmZGRlYWVjNmM3MTc1NjQ0ZDc5
NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVy
YXRvci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAgICAg
dm9pZCBlbWl0UGF0Y2hwb2ludChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrLCBCMzo6UGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaCwgVG1wIHJlc3VsdCwgVmVjdG9yPENvbnN0cmFpbmVkVG1wLCBpbmxpbmVT
aXplPiYmIGFyZ3MpCiAgICAgewogICAgICAgICBpZiAoIW1fcGF0Y2hwb2ludFNwZWNpYWwpCi0g
ICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBhdGNocG9p
bnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hw
b2ludFNwZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIG1fcGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0
aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5p
cXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSkpOwogCiAgICAgICAgIEluc3QgaW5zdChQYXRj
aCwgcGF0Y2gsIEFyZzo6c3BlY2lhbChtX3BhdGNocG9pbnRTcGVjaWFsKSk7CiAgICAgICAgIElu
c3QgcmVzdWx0TW92OwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsK
IAogICAgICAgICAvLyBGSVhNRTogTWFrZSBhIGhhc2htYXAgb2YgdGhlc2UuCiAgICAgICAgIEIz
OjpDaGVja1NwZWNpYWw6OktleSBrZXkoYnJhbmNoKTsKLSAgICAgICAgQjM6OkNoZWNrU3BlY2lh
bCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwqPihtX2NvZGUuYWRkU3Bl
Y2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtleSkpKTsKKyAgICAgICAg
QjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwq
PihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtleSkpKTsK
IAogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBkdW1teSB2YWx1ZXMKICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0MApA
QCAtMjEzOSwxMCArMjEzOSwxMCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBC
Mzo6T3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwg
U3RyaW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxl
bmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENv
dW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7Cisg
ICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAKLSAgICBj
b21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50
SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25D
b250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigp
OworICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8
Q0NhbGxIZWxwZXJzPigpOwogCiAgICAgQjM6OlByb2NlZHVyZSBwcm9jZWR1cmU7CiAgICAgQ29k
ZSYgY29kZSA9IHByb2NlZHVyZS5jb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMjA5NDE3N2VkNmYxODNhYjRkODYyZWMy
MjY3ZDMwZjI4YjdkZTViNi4uMTU4ZGY5ZmE5ZjBjOWY3MjFhYzI5Mjc3ODE4OGRjZjI4ZTcwN2Zm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcApAQCAtMTU1MSwxMCArMTU1MSwxMCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6Om9yaWdpbigp
IC0+IE9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4s
IFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25D
b250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5n
dGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNt
Q2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYg
aW5mbywgTWVtb3J5TW9kZSBtb2RlLCBDb21waWxhdGlvbk1vZGUgY29tcGlsYXRpb25Nb2RlLCB1
aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNl
cHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVy
RW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOwotICAgIGNv
bXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0Nh
bGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRK
SVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQu
d2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKIAogICAgIFBy
b2NlZHVyZSBwcm9jZWR1cmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQ
bGFuLmNwcAppbmRleCBmOTg1ZDUyM2MyZTkzZjNiZDIzZmI3YzU3MTJiNTg2OGNjMTZhNjg1Li41
MDZkZjRiZWZkMGQ1NjQxODQ0Y2U1Mjc5NTExNWY2MTI4NzE2MWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBC
QlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
bV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVudHJ5cG9pbnQuY29tcGls
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisgICAgICAgICAgICAg
ICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVudHJ5cG9pbnQuY29t
cGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAg
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIldlYkFz
c2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIGZ1bmN0aW9uSW5kZXgsIHNpZ25h
dHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1
bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChm
dW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLAogICAgICAgICAgICAgICAgICAg
ICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7CiAgICAgICAgICAg
ICB9CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0
aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGls
YXRpb24+KAorICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+
ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAg
ICAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9u
UHRyVGFnLCAiRW1iZWRkZXItPldlYkFzc2VtYmx5IGVudHJ5cG9pbnRbJWldICVzIG5hbWUgJXMi
LCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFr
ZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRp
b24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgp
KSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250ZXh0LmVtYmVkZGVyRW50cnlwb2lu
dEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdQbGFuLmNwcAppbmRleCBjNTEzZmQyZjUwZWQ2ZmIxN2MzMzg1ZWYyOTA1Mjc4MTcz
OTIxMDM3Li4wZDdhMDNjMzYxMjljZDFkZTJjNTRmZmNkNTAyOTViNTZjNWI4OTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEIzOjpDb21waWxhdGlvbj4oCisgICAgb21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VV
bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVy
LCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2ViQXNzZW1ibHkgT01HIGZ1bmN0aW9uWyVpXSAlcyBu
YW1lICVzIiwgbV9mdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxl
SW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lp
KCkuZGF0YSgpKSwKICAgICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9k
dWN0cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29y
a2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApp
bmRleCAzNmQ3NGMxNGIxOGM3MDdiODEyYTA0ODdmOTFlMjljMzg1MzkxZGUyLi42NjBmOTU2NTcz
OGIxMGEzMGYzZTdjYzgxOGEzMmM4NTg3ODIxMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBXb3JrbGlzdDo6V29y
a2xpc3QoKQogICAgIG1fdGhyZWFkcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDb21waWxhdGlv
blRocmVhZHMpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNvbXBpbGF0aW9uVGhyZWFkczsgaSsrKQotICAgICAg
ICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2xpc3Q6OlRo
cmVhZD4obG9ja2VyLCAqdGhpcykpOworICAgICAgICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5k
KG1ha2VVbmlxdWU8V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykpOwogfQogCiBXb3Jr
bGlzdDo6fldvcmtsaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNt
LmNwcAppbmRleCA1ZGQ0NTFiZWE4NGQ1OTBiYmYwZmNiMDc2ZTI2ZmZkM2NjN2I4MWFjLi43MzUy
MjAyODkzN2M2ZGFjMWZjNDczYzdlNGNkYzY0OTU4Y2U4ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25D
b250ZXh0JiBjb21wCiB7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29tcGlsYXRpb25Db250
ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVDsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwog
CiAgICAgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFzIGNvZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdmMDMzZmVjMWMzNjlhOTQyM2IzM2Nm
OGViMzMzNGM1MWNlMDgwOGIuLmM0Yjc3Y2FkYmU1ZWVhNTczZWM4NTJiOTVlZjZhNzg5YjgyODUz
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cApAQCAtMTcwNiw3ICsxNzA2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgICAg
IGR1bXBEaXNqdW5jdGlvbihtX2JvZHlEaXNqdW5jdGlvbi5nZXQoKSk7CiAjZW5kaWYKIAotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9i
b2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0
b3IsIGxvY2spOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdU
Rk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJu
LCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tJbnB1dCh1bnNpZ25l
ZCBjb3VudCkKQEAgLTE5MjYsNyArMTkyNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAg
ICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCA9IHBhcmVudGhlc2VzQmVnaW4uYXRvbS5zdWJwYXR0
ZXJuSWQ7CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBsYXN0U3VicGF0dGVy
bklkIC0gc3VicGF0dGVybklkICsgMTsKLSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBj
YWxsRnJhbWVTaXplKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFr
ZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsK
IAogICAgICAgICB1bnNpZ25lZCBmaXJzdFRlcm1JblBhcmVudGhlc2VzID0gYmVnaW5UZXJtICsg
MTsKICAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+dGVybXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShlbmRUZXJtIC0gZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyArIDIpOwpAQCAtMTk5Nyw3
ICsxOTk3LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKIAogICAgIHZvaWQgcmVnZXhCZWdpbih1
bnNpZ25lZCBudW1TdWJwYXR0ZXJucywgdW5zaWduZWQgY2FsbEZyYW1lU2l6ZSwgYm9vbCBvbmNl
VGhyb3VnaCkKICAgICB7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAg
ICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVt
U3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbihvbmNlVGhyb3VnaCkp
OwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbMF0uZnJhbWVMb2NhdGlvbiA9IDA7
CiAgICAgICAgIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcAppbmRleCA3YTdjMjA2YzdlNDM1OTdjZmU0YzRkNGRjYThhMDdh
YzVhYzFmNjYwLi44YWI2MmI3YmEzOTgxMDUxZWJiZGFjZDZlNDdhMDU4YWFkZDNkOWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMzg5OSw3ICszODk5LDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6ZHVtcFJlZ0V4cERpc2Fzc2VtYmx5KCkpKQotICAg
ICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnJEaXNhc3NlbWJs
ZXI+KHRoaXMpOworICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPFlhcnJE
aXNhc3NlbWJsZXI+KHRoaXMpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAg
ICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRTdGFydE9mQ29kZShsYWJlbCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCA0OWY3N2Y2OWM2ODVjNjUy
MDNkZjNmMDM0YzkwZDE4NzdjOTJkYzliLi5mY2M1MWIyNzdmNTAxMTAzYjdjNjViYmQzM2E1Y2E0
MTBkODFjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CkBAIC0yNDAsNyArMjQwLDcgQEAgY2xhc3MgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvciB7CiAg
ICAgewogICAgICAgICBjb2FsZXNjZVRhYmxlcygpOwogCi0gICAgICAgIGF1dG8gY2hhcmFjdGVy
Q2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpOworICAgICAgICBhdXRv
IGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKIAogICAgICAg
ICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLnN3YXAobV9tYXRjaGVzKTsKICAgICAgICAgY2hh
cmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLnN3YXAobV9yYW5nZXMpOwpAQCAtNDQxLDcgKzQ0MSw3IEBA
IGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAsIG1fY2hhcmFjdGVyQ2xh
c3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2UoKSwgcGF0dGVybi51bmljb2RlKCkgPyBD
YW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNTMikKICAgICAgICAgLCBt
X3N0YWNrTGltaXQoc3RhY2tMaW1pdCkKICAgICB7Ci0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBt
YWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9k
eSA9IGJvZHkuZ2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRl
cm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1v
dmUoYm9keSkpOwpAQCAtNDU2LDcgKzQ1Niw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0
b3IgewogICAgICAgICBtX3BhdHRlcm4ucmVzZXRGb3JSZXBhcnNpbmcoKTsKICAgICAgICAgbV9j
aGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnJlc2V0KCk7CiAKLSAgICAgICAgYXV0byBib2R5ID0g
c3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgIGF1dG8gYm9k
eSA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4u
bV9ib2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5l
d0FsdGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQo
V1RGTW92ZShib2R5KSk7CkBAIC02MDgsNyArNjA4LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25z
dHJ1Y3RvciB7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUKCFvcHRHcm91cE5h
bWUpOwogCi0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKKyAgICAgICAgYXV0byBw
YXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1f
YWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0
ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiwgc3VicGF0dGVy
bklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBjYXB0dXJlLCBmYWxzZSkpOwogICAg
ICAgICBtX2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJu
YXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3Zl
KHBhcmVudGhlc2VzRGlzanVuY3Rpb24pKTsKQEAgLTYxNiw3ICs2MTYsNyBAQCBjbGFzcyBZYXJy
UGF0dGVybkNvbnN0cnVjdG9yIHsKIAogICAgIHZvaWQgYXRvbVBhcmVudGhldGljYWxBc3NlcnRp
b25CZWdpbihib29sIGludmVydCA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgYXV0byBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1f
YWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBtYWtl
VW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CiAgICAgICAgIG1fYWx0
ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFy
ZW50aGV0aWNhbEFzc2VydGlvbiwgbV9wYXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgKyAxLCBwYXJl
bnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBmYWxzZSwgaW52ZXJ0KSk7CiAgICAgICAgIG1fYWx0
ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgpOwog
ICAgICAgICBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb24gPSBpbnZlcnQ7CkBAIC03MDcs
NyArNzA3LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICBQ
YXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRp
dmVzW2FsdF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWZpbHRlclN0YXJ0c1dpdGhCT0wgfHwg
IWFsdGVybmF0aXZlLT5tX3N0YXJ0c1dpdGhCT0wpIHsKICAgICAgICAgICAgICAgICBpZiAoIW5l
d0Rpc2p1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgICAgICAgICAgICAg
IG5ld0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAg
ICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uLT5tX3BhcmVudCA9IGRpc2p1bmN0aW9uLT5t
X3BhcmVudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVy
bmF0aXZlKiBuZXdBbHRlcm5hdGl2ZSA9IG5ld0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2
ZSgpOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBZYXJyUGF0dGVybjo6ZHVtcFBhdHRlcm4o
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGFueWNoYXJDcmVhdGUoKQogewotICAgIGF1dG8gY2hh
cmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpOworICAgIGF1
dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwogICAgIGNo
YXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgwMCwgMHg3Zikp
OwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBwZW5kKENoYXJhY3RlclJh
bmdlKDB4MDA4MCwgMHgxMGZmZmYpKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9jaGFyYWN0ZXJX
aWR0aHMgPSBDaGFyYWN0ZXJDbGFzc1dpZHRoczo6SGFzQm90aEJNUEFuZE5vbkJNUDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4IDBiN2RiMmViYThhZDUyZGVk
MmI1ZjdlNjdlNTQ1YjhjMTZjOTQ1YzcuLjdlODJjODU1YTg3OGU2YzE4MGVkNTIxZjFmN2FkNDhk
OGMxZmJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0
ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaApAQCAt
MzQxLDcgKzM0MSw3IEBAIHN0cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb24gewogICAgIAogICAgIFBh
dHRlcm5BbHRlcm5hdGl2ZSogYWRkTmV3QWx0ZXJuYXRpdmUoKQogICAgIHsKLSAgICAgICAgbV9h
bHRlcm5hdGl2ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkFsdGVybmF0aXZlPih0
aGlzKSk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChtYWtlVW5pcXVlPFBhdHRlcm5B
bHRlcm5hdGl2ZT4odGhpcykpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGF0dGVybkFs
dGVybmF0aXZlKj4obV9hbHRlcm5hdGl2ZXMubGFzdCgpLmdldCgpKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzCmluZGV4IGMxZjlm
OTlkZTA5MWNlY2IyZTFkYjU1YzM4ZmEzNjAzMTFlZTM3ZjQuLjY5Y2Q4ODg2NTc4NTRjZDU0NDVm
ODYzZTIyZDU1ZmZiOWM0MGVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
Y3JlYXRlX3JlZ2V4X3RhYmxlcwpAQCAtOTUsMTEgKzk1LDExIEBAIGZvciBuYW1lLCBjbGFzc2Vz
IGluIHR5cGVzLml0ZW1zKCk6CiAgICAgZnVuY3Rpb24gKz0gKCJ7XG4iKQogICAgIGlmIGVtaXRU
YWJsZXMgYW5kIGNsYXNzZXNbIlVzZVRhYmxlIl06CiAgICAgICAgIGlmICJJbnZlcnNlIiBpbiBj
bGFzc2VzOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIHRydWUpO1xuIiAl
IChjbGFzc2VzWyJJbnZlcnNlIl0pKQorICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0
byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIHRy
dWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQogICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCisgICAgICAg
ICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxD
aGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkKICAgICBlbHNlOgot
ICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtl
X3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCisgICAgICAgIGZ1bmN0aW9uICs9ICgiICAg
IGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpO1xuIikK
ICAgICBoYXNCTVBDaGFyYWN0ZXJzID0gRmFsc2UKICAgICBoYXNOb25CTVBDaGFyYWN0ZXJzID0g
RmFsc2UKICAgICBmb3IgKG1pbiwgbWF4KSBpbiByYW5nZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlU
YWJsZXMucHkKaW5kZXggZjlmZWY0NjhkMmI1ZGRhNmFhZWVhYjBiM2ZjMDU4Y2QzZWVjZWFjMS4u
NTI2ZmI2ZTdhYzNhMjI3YTZkNDNjYmJlZmQyNzAyZDFhMGM1NGNlOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVz
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQ
cm9wZXJ0eVRhYmxlcy5weQpAQCAtNTI5LDcgKzUyOSw3IEBAIGRlZiBkdW1wTWF0Y2hEYXRhKHNl
bGYsIGZpbGUsIHZhbHVlc1BlckxpbmUsIGRhdGFMaXN0LCBmb3JtYXR0ZXIpOgogICAgIGRlZiBk
dW1wKHNlbGYsIGZpbGUsIGNvbW1hQWZ0ZXIpOgogICAgICAgICBmaWxlLndyaXRlKCJzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiB7fSgpXG57e1xuIi5mb3JtYXQoc2VsZi5n
ZXRDcmVhdGVGdW5jTmFtZSgpKSkKICAgICAgICAgZmlsZS53cml0ZSgiICAgIC8vIE5hbWUgPSB7
fSwgbnVtYmVyIG9mIGNvZGVQb2ludHM6IHt9XG4iLmZvcm1hdChzZWxmLm5hbWUsIHNlbGYuY29k
ZVBvaW50Q291bnQpKQotICAgICAgICBmaWxlLndyaXRlKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KFxuIikKKyAgICAgICAgZmlsZS53
cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNz
PihcbiIpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0
PFVDaGFyMzI+KCIpCiAgICAgICAgIHNlbGYuZHVtcE1hdGNoRGF0YShmaWxlLCA4LCBzZWxmLm1h
dGNoZXMsIGxhbWJkYSBmaWxlLCBtYXRjaDogKGZpbGUud3JpdGUoInswOjA9IzR4fSIuZm9ybWF0
KG1hdGNoKSkpKQogICAgICAgICBmaWxlLndyaXRlKCIpLFxuIikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcCBiL1NvdXJjZS9XVEYvYmVuY2ht
YXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcAppbmRleCBjYzcwN2RlM2ZmNGVjMTM4Y2ZhNDZhYjRj
OGUxM2FiYjY1OTNjYmExLi44Yzk3YzFhMjQxYjcyOWFmOGYzMWYzNTljN2Y1MTc3YTYzNDA5ZGFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAK
KysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCkBAIC02MSw4
ICs2MSw4IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHN0YXRpYyB2b2lkIHJ1bihjb25zdCBj
aGFyKiBuYW1lKQogICAgIHsKICAgICAgICAgTG9ja1R5cGUgbG9jazsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWRb
XT4obnVtVGhyZWFkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltd
PiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkW10+KG51bVRocmVhZHMpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZHMpOwogICAg
IAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAgYi9Tb3VyY2UvV1RG
L2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggZjE1NjUwZDRjOWM4ZmE2NzcwZjg5
MTJmMDlkZmUzOTI5MTMwN2MzNC4uYmU3YWJhMzkwZWI1M2UzNTgxZTM2ZjRhOGI5NTAwZDBlMjk5
Zjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcApAQCAtNzQsOSAr
NzQsOSBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlw
ZT4KICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Bl
ckdyb3VwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPExvY2tUeXBlPltd
PiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdpdGhQYWRkaW5nPExv
Y2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0
aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1U
aHJlYWRzUGVyR3JvdXApOwogCiAgICAgICAgIHZvbGF0aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oIGIvU291
cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCmluZGV4IDBiNTQxYjhjNzNkMGY1OTg2NTFi
Zjk1ZTc2OTNiODA3Yzk5OWY3OGEuLjg4NGVkNzMyMzM3NjFhMjlmYjQ5NmYwYWQwOTg5Njc1NDVl
NzAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKQEAgLTI1NCw3ICsyNTQsNyBAQCBj
bGFzcyBDb25jdXJyZW50VmVjdG9yIGZpbmFsIHsKICAgICB2b2lkIGFsbG9jYXRlU2VnbWVudCgp
CiAgICAgewogICAgICAgICBtX3NlZ21lbnRzLmdyb3cobV9udW1TZWdtZW50cyArIDEpOwotICAg
ICAgICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBzdGQ6Om1ha2VfdW5pcXVlPFNlZ21l
bnQ+KCk7CisgICAgICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9IG1ha2VVbmlxdWU8
U2VnbWVudD4oKTsKICAgICB9CiAKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAppbmRleCA4M2MyMDc1MWY4NWY0ZTRkMjAx
NTYxNDQxY2E4MzE0MWNiNWMzN2ZmLi5jNjNjMDU1YTBhMDM0MWRmNmE1YWYyNzBhNGFjY2I4ZDU3
ZDc4NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApAQCAt
NzMsNyArNzMsNyBAQCB2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnRhc2tSdW5Mb29wKCkK
IAogICAgIHdoaWxlICghbV90YXNrUXVldWUuaXNLaWxsZWQoKSkgewogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wg
PSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNl
KSA/IHN0ZDo6bWFrZV91bmlxdWU8QXV0b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKKyAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9kcmFpbmVkUG9vbCA9
IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpVc2Up
ID8gbWFrZVVuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOwogCiAgICAgICAgICAg
ICBtX3Rhc2tRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBlcmZvcm1UYXNrKCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RNYWxsb2MuaAppbmRleCBlZmVmYjNhMzEzM2U4M2Y2NDMzNmZkMmVjMmRhNTJhNTQ4MzJl
NjIxLi45NWI2NzU5NzJkMzEwZTNkZGJkNDEzZDRhOGY4ZDEyODhmMjBmYWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1h
bGxvYy5oCkBAIC0zMDEsOSArMzAxLDExIEBAIHVzaW5nIFdURjo6ZmFzdEFsaWduZWRGcmVlOwog
I2RlZmluZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBcCiBwdWJsaWM6IFwKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNz
OyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xv
bkFmdGVyVGhpc01hY3JvCiAKICNkZWZpbmUgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
IFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFz
dEFsbG9jYXRlZENsYXNzOyBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWlj
b2xvbkFmdGVyVGhpc01hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRT
dHJlYW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAppbmRleCAzZTI1
M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFlZmM3Y2E3OWI2NGVhLi43MDc0YzAzYWJhZjhmY2YzOTc3
ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJp
bnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVhbT4gRmlsZVByaW50
U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb24KICAgICBpZiAoIWZpbGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmls
ZVByaW50U3RyZWFtPihmaWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWxlUHJpbnRTdHJl
YW0+KGZpbGUpOwogfQogCiB2b2lkIEZpbGVQcmludFN0cmVhbTo6dnByaW50Zihjb25zdCBjaGFy
KiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmluZGV4IDA1ZTM2OTc4MjViYzNk
MzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4M2UuLjBiNzk1ODY3NDgwZmQwMzIyNDEyNDU0ZTdkMGFm
ODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKKysrIGIv
U291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtNjcsMTEgKzY3LDExIEBAIGNsYXNzIEZ1bmN0
aW9uPE91dChJbi4uLik+IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwg
Y2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJs
ZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Bv
aW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZl
cmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24oQ2FsbGFi
bGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjptYWtl
X3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+
PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1h
a2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4u
Pj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8
RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVu
Y3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjpt
YWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGYpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIobWFrZVVu
aXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihX
VEZNb3ZlKGYpKSkgeyB9CiAKICAgICBPdXQgb3BlcmF0b3IoKShJbi4uLiBpbikgY29uc3QKICAg
ICB7CkBAIC04NCwxNCArODQsMTQgQEAgY2xhc3MgRnVuY3Rpb248T3V0KEluLi4uKT4gewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6Omlz
X2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlw
ZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2
YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxs
YWJsZSkKICAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZN
b3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxE
ZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3Zl
KGNhbGxhYmxlKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+
Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oRnVuY3Rpb25UeXBlIGYpCiAgICAgewot
ICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxs
YWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CisgICAg
ICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBl
cjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAzYjFlOTUzMDNkZTU0MDUxNDNmYjU2
M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQwNzdmODRmMDJhMWZhMWMxYmUwMzRhODZlYjM1MGQ2ZDdm
NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNTg4LDEwICs1ODgsMTAgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKLSAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFr
ZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkK
ICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQotICAgICAgICAsIG1f
c3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VV
bmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTMzNCwxMCArMTMzNCwx
MCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENI
RUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9ycyhudWxscHRyKQot
ICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1f
bXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlmCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RB
VFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigq
b3RoZXIubV9zdGF0cykpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigqb3Ro
ZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG90aGVyS2V5Q291
bnQgPSBvdGhlci5zaXplKCk7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYgb3RoZXIpCiAjaWYg
Q0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0b3JzKG51bGxwdHIp
Ci0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwg
bV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG90aGVy
LmludmFsaWRhdGVJdGVyYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwCmluZGV4IDllODcyMGY2ZDlhNzk4MGI5NWU1YjEzYzVlNjU1YzM4OTQ5MzA0YjUuLjUz
NzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUwZDZhMThjNWQ5ZmVjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKGJvb2wgdXNl
KQogICAgIH0KIAogICAgIGlmICh1c2UpIHsKLSAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50
VGltZXJGaXJlZCk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG1ha2VVbmlxdWU8UnVu
TG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwogICAgICAg
ICBtX21lYXN1cmVtZW50VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3MpOwogICAgIH0gZWxzZQog
ICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApp
bmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlmMTljM2MxZmMxZmRjNTdhYjRkNGFiLi5kZWY4MzQwZTNj
OGFjYzg1ODZkYTRmMDBiYjhlOWRjNTZlMDEzZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAt
NTY1LDYgKzU2NSwyNCBAQCBjb25zdGV4cHIgc2l6ZV90IGNseih1aW50MzJfdCB2YWx1ZSwgWmVy
b1N0YXR1cyBtaWdodEJlWmVybyA9IFplcm9TdGF0dXM6Ok1heUJlWgogCiB9IC8vIG5hbWVzcGFj
ZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFy
Z3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWUoQXJncyYmLi4uIGFy
Z3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6X19mYXN0
QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCit0ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lOTElORSBkZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKK3sKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCiAjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCiAKIHVzaW5nIFdURjo6S0I7CkBAIC01ODUsMyAr
NjAzLDUgQEAgdXNpbmcgV1RGOjptZXJnZURlZHVwbGljYXRlZFNvcnRlZDsKIHVzaW5nIFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZjsKIHVzaW5nIFdURjo6c2FmZUNhc3Q7CiB1c2luZyBXVEY6OnRy
eUJpbmFyeVNlYXJjaDsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZTsKK3VzaW5nIFdURjo6bWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
dHJlYW1CdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCmluZGV4IDI2YmJj
OGZkNjdhNDkzNDYzMjIxZDYxOTYxOGViN2M2NDY4NjQwMzAuLmNhMzNmODY3ZDM4YjU3NTkyMDE0
MWQ1MjNjMzA3YWFlN2M4MjBiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCkBAIC02MCw3ICs2MCw3
IEBAIGNsYXNzIFN0cmVhbUJ1ZmZlciB7CiAgICAgICAgIG1fc2l6ZSArPSBzaXplOwogICAgICAg
ICB3aGlsZSAoc2l6ZSkgewogICAgICAgICAgICAgaWYgKCFtX2J1ZmZlci5zaXplKCkgfHwgbV9i
dWZmZXIubGFzdCgpLT5zaXplKCkgPT0gQmxvY2tTaXplKQotICAgICAgICAgICAgICAgIG1fYnVm
ZmVyLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigpKTsKKyAgICAgICAgICAgICAgICBt
X2J1ZmZlci5hcHBlbmQobWFrZVVuaXF1ZTxCbG9jaz4oKSk7CiAgICAgICAgICAgICBzaXplX3Qg
YXBwZW5kU2l6ZSA9IHN0ZDo6bWluKEJsb2NrU2l6ZSAtIG1fYnVmZmVyLmxhc3QoKS0+c2l6ZSgp
LCBzaXplKTsKICAgICAgICAgICAgIG1fYnVmZmVyLmxhc3QoKS0+YXBwZW5kKGRhdGEsIGFwcGVu
ZFNpemUpOwogICAgICAgICAgICAgZGF0YSArPSBhcHBlbmRTaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRl
eCA3M2U5ZGZlYzA2ZmQ3ODdmM2IwNmIzZGM5ZGE2NWE1NTA0ZDFjMDI5Li42NTkxMjUxYjg2Mjdk
ZjM2Y2YyZWI5Zjc0NzkzZWY0ODljYTFlOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9V
bmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApAQCAtMzMsMTEgKzMz
LDE4IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVl
UmVmOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgotVW5pcXVlUmVmPFQ+
IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCiB7CiAgICAgcmV0dXJuIFVu
aXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1
ZVJlZihBcmdzJiYuLi4gYXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0
eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0ZWRDbGFzcywgaW50Pjo6dmFsdWUpOworICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxUPihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgVW5pcXVlUmVm
IHsKIHB1YmxpYzoKQEAgLTYzLDcgKzcwLDcgQEAgY2xhc3MgVW5pcXVlUmVmIHsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5pcXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7
IH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmll
bmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZX
aXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4g
ZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAogICAgIFVuaXF1ZVJlZihUJiBvdGhlcikKQEAgLTc5
LDMgKzg2LDQgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAogdXNpbmcgV1RGOjpVbmlxdWVSZWY7CiB1
c2luZyBXVEY6Om1ha2VVbmlxdWVSZWY7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0
RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29w
R0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAppbmRleCA1ZTVi
YThhYmViZGJkNDliYmI4MzdkZDRjNGZkNjliZDZmZmMzNjFmLi5mYjIxMWQwYTI5NjFkZmMxNmFh
NmUyMWEyMWE5NzRkZmYxNTI2OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcApA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1
cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgZ19zb3VyY2Vfc2V0X25h
bWUoc291cmNlLmdldCgpLCAiW1dlYktpdF0gUnVuTG9vcCBkaXNwYXRjaEFmdGVyIik7CiAgICAg
Z19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUoc291cmNlLmdldCgpLCBnX2dldF9tb25vdG9uaWNfdGlt
ZSgpICsgZHVyYXRpb24ubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlzcGF0Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BhdGNo
QWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZ19zb3VyY2Vfc2V0X2NhbGxi
YWNrKHNvdXJjZS5nZXQoKSwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0KHN0YXRp
Y19jYXN0PERpc3BhdGNoQWZ0ZXJDb250ZXh0Kj4odXNlckRhdGEpKTsKICAgICAgICAgY29udGV4
dC0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IGRjYmEwNjA4
MmM1ZjY2ZTMxOWExNWVlNTk3ZmM2NDk3NjZiMDVlNmMuLjViZjRlNmQwMWRlODQzZWQyODc4ODNl
YTNhMDNlODQ5NDkzYmVjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMTc5
LDcgKzE3OSw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9y
OjpJbXBsIHsKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJ
dGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKLSAg
ICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcu
aXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwg
aW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5n
Vmlldy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmll
dykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmNwcAppbmRleCBmZGI4Y2UyOTJkNzM4ZGE0MjAzOGFhOTY1YWYzYWNhMTc4YTgwY2Vi
Li44ZGM3NmZhMmU1OWVhNjdlMDIxNzM4YzMxMWEzNTc3ZjRkMzZlNjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1h
bmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZv
aWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eUludmFsaWRV
UkwoY29uc3QgU3RyaW5nJiBwcm9wCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6Omxv
Z0RldmVsb3Blcldhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX2Nv
bnNvbGVDb250ZXh0KQotICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KEpTQzo6TWVzc2Fn
ZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFuaWZlc3QgIl9zLCBt
X21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7CisgICAgICAgIG1fY29u
c29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNlOjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6
TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBs
aWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZlc3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVz
c2FnZSkpKTsKIH0KIAogVVJMIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlU3RhcnRV
UkwoY29uc3QgSlNPTjo6T2JqZWN0JiBtYW5pZmVzdCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3Bw
CmluZGV4IDliZmE1Zjk0OTk0YjA1NDUwNmI4MjZhMzE0YjgyNTgyN2VhNDFhZGIuLjdlNGY3OTQ3
MWUyYzU5ZmU3MWMxNDgxMzJmNGI1NTFkOGZmYzc5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcApAQCAtNTIsNyArNTIsNyBAQCBO
YXZpZ2F0b3JCZWFjb24qIE5hdmlnYXRvckJlYWNvbjo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRv
cikKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yQmVhY29u
Kj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmlnYXRvcik7CisgICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0
b3IpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NV2luZG93Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2lu
ZG93Q2FjaGVzLmNwcAppbmRleCA1ZWQxZjVjY2E2NDFlYjA0ZWMwZTBhMGNlMDZjODM3MjQ1Njhh
MmZmLi42MTUzOTQzMGRmYjk2MTZmZDI4OGZlZDkyY2I5NDRmZjQ0NmIwMTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIERPTVdpbmRvd0NhY2hlcyogRE9NV2luZG93Q2FjaGVzOjpmcm9tKERPTVdpbmRv
dyogd2luZG93KQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5k
b3dDYWNoZXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5kb3cpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93
KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHBy
b3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKaW5kZXggMDY1NmJlZjBiMTcxOGUzM2RiYzdmYTBlZTYw
YzU3ZDQ4ZTM4ZDRlOC4uNTExOGE0ODg1MGYyNDJkMDQ0ZDNiNDBmZjBlM2IyM2JiOTZlMjhmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29w
ZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9i
YWxTY29wZUNhY2hlcy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV29ya2VyR2xvYmFsU2NvcGVDYWNo
ZXMqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKFdvcmtlckdsb2JhbFNjb3BlJiBzY29w
ZSkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2Nv
cGVDYWNoZXMqPihTdXBwbGVtZW50PFdvcmtlckdsb2JhbFNjb3BlPjo6ZnJvbSgmc2NvcGUsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUNhY2hlcz4o
c2NvcGUpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlckds
b2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3Jl
ZGVudGlhbHMuY3BwCmluZGV4IDcxZjQzOGNmNzg2Yzc2ZDdiNTg3MjE1NTk3NjY4YjYyMzYxYjU5
OTMuLjExODFiZDk4NWEyMmJhNDkzZjgzNjMxZDdlNDFmZWU4NzliNTZiM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3Jl
ZGVudGlhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5hdmlnYXRv
ckNyZWRlbnRpYWxzKiBOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmln
YXRvcikKIHsKICAgICBOYXZpZ2F0b3JDcmVkZW50aWFscyogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PE5hdmlnYXRvckNyZWRlbnRpYWxzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5h
dmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckNyZWRl
bnRpYWxzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmln
YXRvckNyZWRlbnRpYWxzPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5n
ZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggYjZm
ZDY4ZDY3MmVkZTM4Nzc4YzE1YzZmZWFhZjQ2YjQ1NWU1YTFjZC4uNzVlZGI2YTkzNjM4ODBlNTg3
YzM1NzU2YjE0ZGVjOWY5YjQ1ZTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC0xMzMsNyAr
MTMzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lz
dGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICAgICAgICAgYXV0byBzeXN0ZW1JRCA9
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGVla1N5c3RlbUlEKHZpZXcs
IG9mZnNldCk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAg
ICAgICBpZiAoc3lzdGVtSUQgPT0gSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94OjpmYWlyUGxh
eVN5c3RlbUlEKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IHN0ZDo6bWFrZV91bmlx
dWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOworICAgICAgICAgICAgYXV0byBmcHNQ
c3NoID0gbWFrZVVuaXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CiAgICAgICAg
ICAgICBpZiAoIWZwc1Bzc2gtPnJlYWQodmlldywgb2Zmc2V0KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgcHNzaEJveGVzLmFwcGVuZChXVEZNb3Zl
KGZwc1Bzc2gpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHN5c3RlbUlEKTsKICNlbmRpZgotICAgICAgICBh
dXRvIHBzc2hCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveD4oKTsKKyAgICAgICAgYXV0byBwc3NoQm94ID0gbWFrZVVuaXF1ZTxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7CiAgICAgICAgIGlmICghcHNzaEJveC0+
cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggODI2Mjg5M2ZlMGFmOTk5MTRlZDM5ZTk2MGNmMTBhNzUz
NDA3MDViNi4uODM3ZGYxMjNhZTU5NmYzNTM3YzkxNTI3MDNlM2QyNzFiMzQ2ZWI1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE0uY3BwCkBAIC02MSwxNSArNjEsMTUgQEAgc3RydWN0IENETUZhY3Rvcnkgewog
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGluc3RhbGxlZENETUZhY3RvcmllcygpCiB7CiAg
ICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8Q0RNRmFjdG9y
eSo+IHsKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5PihjZG0pOyB9LAorICAg
ICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1
ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCiAgICAgICAgICAgICBMZWdhY3lD
RE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtLCBMZWdhY3lDRE1Qcml2YXRlQ2xl
YXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAgICAgICAgIC8vIEZJWE1F
OiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMuIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzE4
LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMyMAotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShM
ZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQ
bGF5ZXI+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2Rt
KSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXllcj4oY2RtKTsgfSwKICAg
ICAgICAgICAgIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVBy
aXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICNpZiAo
SEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKSB8fCBIQVZFKEFWU1RSRUFNU0VTU0lPTikpICYmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSog
Y2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7
IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KGNkbSk7IH0s
CiAgICAgICAgICAgICBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5
c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRN
aW1lVHlwZSksCiAjZW5kaWYKICAgICB9KTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5Q0RNPiBMZWdhY3lDRE06OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNPihrZXlT
eXN0ZW0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeUNETT4oa2V5U3lzdGVtKTsKIH0K
IAogTGVnYWN5Q0RNOjpMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5oCmluZGV4IDQ1OGVjNTNiNDMzN2IxNzEwNTU2ZjhhMTdiNGVmMDFlZmNlMTU2NGUuLmZi
NWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1ZmUwYTVlODk2NDA2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5o
CkBAIC01MCw3ICs1MCw4IEBAIGNsYXNzIExlZ2FjeUNETUNsaWVudCB7CiAgICAgdmlydHVhbCBS
ZWZQdHI8TWVkaWFQbGF5ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNETSopIGNvbnN0
ID0gMDsKIH07CiAKLWNsYXNzIExlZ2FjeUNETSB7CitjbGFzcyBMZWdhY3lDRE0gZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2Fj
eUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCmluZGV4IGM5MzE2ZGZkOGFiYjQwNTQ5MmY1NTVlYjNk
MWIzZDA5MTdjZWZmNTAuLjNhOGMwMGY1MjMxZjUyYTZlODlkMTgzZDE1MTFjM2FjODc3M2ExZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcApAQCAt
NjAsNyArNjAsNyBAQCBib29sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RN
U2Vzc2lvbj4gTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
RE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNU2Vz
c2lvbkNsZWFyS2V5PihjbGllbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETVByaXZhdGVNZWRpYVBsYXllci5oCmluZGV4IDY2MDJlYmZlOTA0NDVjNTU5M2M2ZTVmZjhm
MWE1YjJlMmRkOTJjMTcuLmNmYjAyNmMyMDJkYTZmZTA5ZmM4ZGNiNDRmZmJiYWNiOGE5ZGM5MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCkBA
IC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeUNETTsKIAog
Y2xhc3MgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyIDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2Ug
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENE
TVByaXZhdGVNZWRpYVBsYXllcihMZWdhY3lDRE0qIGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCmluZGV4IDJmN2Iw
MzUzOWVmOGVhNDc0ZTIzNmQwNWQ5ZTE3ZmVjNDg0ZTYyN2UuLmJjNzc3ZjBjYmM4Y2U3Yjg5ZTk0
M2I4YTYzZTRlNmU4Mjg5YjM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5oCkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IDogcHVibGljIExlZ2FjeUNETVNlc3Npb24geworY2xh
c3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25DbGVh
cktleShMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkNs
ZWFyS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwCmluZGV4IGFkZGM1NDg5NmI4YTQ0MzhjZmJmZDA2NTgwYWRiYzg2MGE4MWY4NjQuLmRi
NjM5MGU3Zjk5MjU5NzdiODdjYTAwOWVkYWJkNTFjZGI2NjczMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yNDQsNyArMjQ0LDcg
QEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0Y2hC
b2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgIH0KIAogICAgIG1fYmxvYkxvYWRlci5lbXBsYWNl
KCp0aGlzKTsKLSAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0
Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKKyAgICBtX2Jsb2JMb2FkZXItPmxv
YWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsK
IAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5k
ZXggY2QzNDVlYjllYzM0MGMzNmUwZjBhNmVlZDgyZGQ5ODhiNGY5N2QzOS4uOTQwMTNjZjRlYTY1
MjM4ZDgzYjliNGM4MWRiN2QxODE2NTMyNDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRjaFJl
cXVlc3QmIHJlcXVlc3QKIAogICAgIHJlc3BvbnNlLT5hZGRBYm9ydFN0ZXBzKHJlcXVlc3Quc2ln
bmFsKCkpOwogCi0gICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Qm9keUxvYWRlcj4ocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwor
ICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBtYWtlVW5pcXVlPEJvZHlMb2FkZXI+KHJlc3Bv
bnNlLmdldCgpLCBXVEZNb3ZlKHJlc3BvbnNlQ2FsbGJhY2spKTsKICAgICBpZiAoIXJlc3BvbnNl
LT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpKQogICAgICAgICByZXNwb25z
ZS0+bV9ib2R5TG9hZGVyID0gbnVsbHB0cjsKIH0KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKQogCiBib29sIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlz
LCAmbV9yZXNwb25zZS5tX2JvZHktPmNvbnN1bWVyKCkpOworICAgIG1fbG9hZGVyID0gbWFrZVVu
aXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7
CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwogICAgIHJldHVybiBtX2xv
YWRlci0+aXNTdGFydGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dh
bWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKaW5kZXggNjEwMjA4OTljYmM0YTdlNDMzYjE1MWRj
Y2FlYmZlOTA3NjRkM2UyZC4uODUwZDIyZGUyODViYjMzNWQyMmU4YzJlMjUzYjdhYjZlMGM2MDM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdh
bWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JH
YW1lcGFkLmNwcApAQCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JHYW1lcGFkKiBOYXZpZ2F0b3JH
YW1lcGFkOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdhbWVw
YWQqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHYW1lcGFkKj4oU3VwcGxlbWVu
dDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5l
d1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1l
bnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmNwcAppbmRleCBiMDlmYzM0MzNiYmZiYjcyOGYzMTVjMTUzM2E2ZjJjOWU0ZmMwMDcxLi5j
ZDgwNzBiMjA3ZGI4YTM0NDAyNmNmZjYxMDViODVlZTE5YmM1MjRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgY29uc3QgY2hhciogR2VvbG9jYXRpb25Db250
cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBhZ2Uq
IHBhZ2UsIEdlb2xvY2F0aW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKHBhZ2UpOwot
ICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Db250cm9s
bGVyPigqcGFnZSwgY2xpZW50KSk7CisgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBh
Z2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKIH0KICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKaW5kZXggYjM0ZjQ5YTY3MWQ4NWY1
MTQyYjhiYWYwZjUyYmE5OTFhYzQzNTlkYy4uMzVkZmJmOGYzZjI1NjljMDEzNTM1NjYzMDBmNWI3
ODM3ZGUyOGZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTmF2
aWdhdG9yR2VvbG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpmcm9tKE5hdmlnYXRvciYg
bmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yR2VvbG9jYXRpb24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZy
b20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRv
ckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0
b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4
ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5k
b3dJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGM3MjAzYTlhODY0MDk3MDUwZDNkYzAwNzkyZjdh
NmI1ODFmYWEyNWUuLjVlOWQ5Nzk2NmJmZGU1OGU2NjA5OWE1MDllNjE4Yjg0YzE4ZDA1YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4
ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9N
V2luZG93SW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2UqIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6ZnJvbShET01XaW5kb3cqIHdp
bmRvdykKIHsKICAgICBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIHN1cHBsZW1lbnQgPSBzdGF0
aWNfY2FzdDxET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqPihTdXBwbGVtZW50PERPTVdpbmRvdz46
OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93
SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93KTsKICAgICAgICAgc3Vw
cGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3cs
IHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApp
bmRleCBmNDMwOTBjNGRjYzNlZGU1ZTI3ZDFhYTQ0Mzg0NDQ3ZDg0OWM2NDBiLi45YTc4MTI3ODQ2
M2VkMGE0YTBhZGRkM2Y3ZGIwYzU2NTY5NjJiOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC01MTcsNyArNTE3LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lKQogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdEZvdW5kRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnaW5kZXgnIG9uICdJREJP
YmplY3RTdG9yZSc6IFRoZSBzcGVjaWZpZWQgaW5kZXggd2FzIG5vdCBmb3VuZC4iX3MgfTsKIAot
ICAgIGF1dG8gaW5kZXggPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOworICAgIGF1dG8gaW5kZXggPSBtYWtlVW5pcXVl
PElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwogCiAg
ICAgUmVmPElEQkluZGV4PiByZWZlcmVuY2VkSW5kZXggeyAqaW5kZXggfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4
IGZhMmNkN2VhZDA5YjYwNTUyNWI4Y2I0NDFlZjcwMDFkODMzNTAxMDAuLjQyMjQzZmJhNTczMTI5
NTQxODg5NGEzMjA0M2U4OWUwYjJjMWE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBvYmplYwogICAgIGlmICghaW5mbyB8fCAoIWZvdW5kICYmICFpc1Zl
cnNpb25DaGFuZ2UoKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9y
LCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29iamVjdFN0b3JlJyBvbiAnSURCVHJhbnNhY3Rpb24nOiBU
aGUgc3BlY2lmaWVkIG9iamVjdCBzdG9yZSB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAgYXV0
byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9yZSA9
IG1ha2VVbmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpp
bmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZS5nZXQo
KTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KG9iamVjdFN0b3JlTmFtZSwgV1RG
TW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC02NjcsNyArNjY3LDcgQEAgUmVmPElEQk9iamVjdFN0
b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJgogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3JlZmVyZW5jZWRPYmplY3RTdG9y
ZUxvY2spOwogCi0gICAgYXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCT2Jq
ZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0aGlzKTsKKyAgICBh
dXRvIG9iamVjdFN0b3JlID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJhd09iamVjdFN0b3JlID0g
b2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChpbmZv
Lm5hbWUoKSwgV1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC03NTUsNyArNzU1LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3IKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3JlYXRlSW5kZXhP
blNlcnZlcihvcGVyYXRpb24sIGluZm8pOwogICAgIH0pKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmpl
Y3RTdG9yZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0b3JlKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlv
bjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBv
cGVyYXRpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3Bl
SW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBhNDg1MDNiNGQyZDgwNDI5NDY4NGE2NWE2NWViZDY0
ZjIzM2NkN2I5Li45Yjc1Nzc0OTIxYjQ2NTA2ZjU4M2RlN2ZlYzQyNTBlODU0YWNlNTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29w
ZUluZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKiBXb3JrZXJHbG9iYWxTY29wZUluZGV4
ZWREYXRhYmFzZTo6ZnJvbShXb3JrZXJHCiAgICAgICAgIGlmICghY29ubmVjdGlvblByb3h5KQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZT4oc2Nv
cGUsICpjb25uZWN0aW9uUHJveHkpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwgKmNvbm5lY3Rp
b25Qcm94eSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAg
ICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDk0
OGNmNzQ2NjNhZTY5YzgyZGE0NDRlMDkzNDczZGQ4NTZkNGRlOTMuLjM3NzExZGMxMDNkYjZjOWE5
YjgxM2RiYzlkZjc5OWI3ZTI2YTZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IElEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlCiAKIElEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6SURCQ29ubmVjdGlvblRvU2VydmVyKElEQkNvbm5lY3Rpb25Ub1NlcnZl
ckRlbGVnYXRlJiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUobWFrZVdlYWtQdHIoZGVsZWdh
dGUpKQotICAgICwgbV9wcm94eShzdGQ6Om1ha2VfdW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94eT4o
KnRoaXMpKQorICAgICwgbV9wcm94eShtYWtlVW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94eT4oKnRo
aXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCAyNzUzZmQw
YzI0NTdiOWMwOWQ5ZDg5ZTRmNzYyYjQ3OWY4YjQ0MGIxLi44ZTFkZTA2ZDcxZThmMGIyMjNkNjg2
ZTVlMWE4YTIyMDliNzQzODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgVHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICBpZiAobV9pbmRleElk
ZW50aWZpZXIpCiAgICAgICAgIG1faW5kZXhSZWNvcmRUeXBlID0gcmVxdWVzdC5yZXF1ZXN0ZWRJ
bmRleFJlY29yZFR5cGUoKTsKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5kaW5n
Q3Vyc29yKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOworICAg
ICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmll
cj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKIAogICAgIG1faWRiUmVxdWVzdCA9ICZy
ZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCBmNmFiNGYzYWIyYzI4YjBlZTIyNDY4OTRhMGRlNTg0
YmQwODc1MWZkLi5mNTU2OGUzMjVkMzcwMTFhMjc1ZTAxZGY5NjZkZmRmNTk1MmU4YjMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTZXJ2ZXI6
OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVuCiAKICAg
ICBhdXRvIHVuaXF1ZUlEQkRhdGFiYXNlID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC5hZGQoaWRl
bnRpZmllciwgbnVsbHB0cik7CiAgICAgaWYgKHVuaXF1ZUlEQkRhdGFiYXNlLmlzTmV3RW50cnkp
Ci0gICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKKyAgICAgICAgdW5p
cXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxVbmlxdWVJREJEYXRh
YmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOwogCiAgICAgcmV0dXJuICp1bmlxdWVJREJEYXRhYmFz
ZS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURC
RGF0YWJhc2UKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmllcik7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vz
c2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9iYWNraW5nU3Rv
cmVUZW1wb3JhcnlGaWxlSGFuZGxlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURC
QmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9y
eVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIpOwogfQogCiB2b2lkIElE
QlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
QEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIElEQlNlcnZlcjo6UXVvdGFVc2VyOjppbml0aWFsaXpl
U3BhY2VVc2VkKHVpbnQ2NF90IHNwYWNlVXNlZCkKIElEQlNlcnZlcjo6UXVvdGFVc2VyJiBJREJT
ZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAg
ICByZXR1cm4gKm1fcXVvdGFVc2Vycy5lbnN1cmUob3JpZ2luLCBbdGhpcywgJm9yaWdpbl0gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90YVVzZXI+KCp0aGlzLCBtX3F1b3Rh
TWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50T3JpZ2luIHsgb3JpZ2lu
IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxRdW90YVVzZXI+KCp0aGlzLCBtX3F1b3Rh
TWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50T3JpZ2luIHsgb3JpZ2lu
IH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcApp
bmRleCA2OTgzYzlkN2VhZmY1NjE2NzIwNGQ5NTJmMWYyMjY3YmI0MGNhNGJhLi44ZDkyMWQ4ZWZl
NmJhODQwYTMwZDYxZGZkYzZhNzIxZTgyOGE0M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcApA
QCAtOTIsNyArOTIsNyBAQCBJREJFcnJvciBJbmRleFZhbHVlU3RvcmU6OmFkZFJlY29yZChjb25z
dCBJREJLZXlEYXRhJiBpbmRleEtleSwgY29uc3QgSURCS2V5RGF0YQogICAgICAgICByZXR1cm4g
SURCRXJyb3IoQ29uc3RyYWludEVycm9yKTsKIAogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkK
LSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZXhW
YWx1ZUVudHJ5PihtX3VuaXF1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPEluZGV4VmFsdWVFbnRyeT4obV91bmlxdWUpOwogCiAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS0+YWRkS2V5KHZhbHVlS2V5KTsKICAgICBtX29yZGVyZWRLZXlzLmluc2VydChp
bmRleEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNw
cAppbmRleCA0N2NjNDJmZDI2ZDY0NzNjNjQxOTI3ZTk5MmQ0ZWM2ZThkN2JmOGVlLi41ZTcxNDQ5
Nzg0YTBkYTA3Njc3ODlhOGRlZGM1MjI2ODlmNGQ4ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNl
IElEQlNlcnZlciB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbj4gTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNyZWF0ZShNZW1vcnlJREJCYWNr
aW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uPihiYWNraW5nU3RvcmUsIGluZm8pOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uPihiYWNraW5nU3RvcmUsIGluZm8pOwogfQogCiBNZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oTWVt
b3J5SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYgaW5mbykKQEAgLTUyLDcgKzUyLDcgQEAgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246
Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG8KICAgICAg
ICAgSURCRGF0YWJhc2VJbmZvIGluZm87CiAgICAgICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdT
dG9yZS5nZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhpbmZvKTsKICAgICAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKQotICAgICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICAgICAgICAgIG1fb3JpZ2luYWxE
YXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAgfQog
fQogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bjo6cmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3QKIAogICAgIGF1
dG8gb3JpZ2luYWxBZGRSZXN1bHQgPSBtX29yaWdpbmFsVmFsdWVzLmFkZCgmb2JqZWN0U3RvcmUs
IG51bGxwdHIpOwogICAgIGlmIChvcmlnaW5hbEFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAg
ICBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtl
eVZhbHVlTWFwPigpOworICAgICAgICBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOwogCiAgICAgYXV0byogbWFwID0gb3JpZ2luYWxB
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDdkMTQyYjAwNTBhYjYwODgxZTM4N2JlOGMxOTg5NDdhYzZlOGRkODEu
LmNmZmUzMzM3Zjc5NDQ4YjhjMjEzZGJiZTVmYTM1YjRkM2E3MGYyZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB1aW50NjRfdCBt
YXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAwMDA7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CiB9CiAK
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAgLTYxLDcgKzYxLDcgQEAgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjp+TWVtb3J5SURCQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0OwogSURCRXJy
b3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJE
YXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgaWYgKCFtX2RhdGFiYXNlSW5mbykKLSAgICAgICAg
bV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVu
dGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsK
IAogICAgIGluZm8gPSAqbV9kYXRhYmFzZUluZm87CiAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnNldERhdGFiYXNl
SW5mbyhjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCiAgICAgLy8gSXQgaXMgbm90IHZhbGlk
IHRvIGRpcmVjdGx5IHNldCBkYXRhYmFzZSBpbmZvIG9uIGEgYmFja2luZyBzdG9yZSB0aGF0IGhh
c24ndCBhbHJlYWR5IHNldCBpdHMgb3duIGRhdGFiYXNlIGluZm8uCiAgICAgQVNTRVJUKG1fZGF0
YWJhc2VJbmZvKTsKIAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KGluZm8pOwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRl
eC5jcHAKaW5kZXggNDlkZGNhNmJkNDBkMjlkNDJlMzhiODUxMzFjODlmZGZlN2Q0NzkyZC4uODU5
NWRiYjhmNGE3ZWUzZDE5MWUzMWZiNjEwYjA0OTc1Yjg3NDYwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCkBA
IC0xOTQsNyArMTk0LDcgQEAgSURCRXJyb3IgTWVtb3J5SW5kZXg6OnB1dEluZGV4S2V5KGNvbnN0
IElEQktleURhdGEmIHZhbHVlS2V5LCBjb25zdCBJbmRleEtleSYgaW4KICAgICBMT0coSW5kZXhl
ZERCLCAiTWVtb3J5SW5kZXg6OnByb3Zpc2lvbmFsUHV0SW5kZXhLZXkiKTsKIAogICAgIGlmICgh
bV9yZWNvcmRzKSB7Ci0gICAgICAgIG1fcmVjb3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZXhW
YWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOworICAgICAgICBtX3JlY29yZHMgPSBtYWtlVW5p
cXVlPEluZGV4VmFsdWVTdG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKICAgICAgICAgbm90aWZ5Q3Vy
c29yc09mQWxsUmVjb3Jkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBN
ZW1vcnlJbmRleEN1cnNvciogTWVtb3J5SW5kZXg6Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvKQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8pOwog
ICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcAppbmRleCBlZDZlYmE5MjdmMWY0ZjZiOWMzMDY4ZjZiNWQ4OGRlMjk5NzI2
N2ViLi41YjQ0YTczODc4YzlmZGQ3YTFlMDVhOTViNzY1N2ViZTYzNjM1MTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlPYmplY3RTdG9yZS5jcHAKQEAgLTI1OSw4ICsyNTksOCBAQCBJREJFcnJvciBNZW1vcnlPYmpl
Y3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbgogCiAgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpIHsKICAgICAgICAgQVNTRVJUKCFtX29y
ZGVyZWRLZXlzKTsKLSAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxL
ZXlWYWx1ZU1hcD4oKTsKLSAgICAgICAgbV9vcmRlcmVkS2V5cyA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCS2V5RGF0YVNldD4oKTsKKyAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gbWFrZVVuaXF1ZTxL
ZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgbV9vcmRlcmVkS2V5cyA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPElEQktleURhdGFTZXQ+KCk7CiAgICAgfQogCiAgICAgYXV0byBtYXBS
ZXN1bHQgPSBtX2tleVZhbHVlU3RvcmUtPnNldChrZXlEYXRhLCB2YWx1ZS5kYXRhKCkpOwpAQCAt
NDk3LDcgKzQ5Nyw3IEBAIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yKiBNZW1vcnlPYmplY3RTdG9y
ZTo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNvckluZm8mCiAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4oKnRo
aXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1lbW9y
eU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggNGYyMDhlNGQwNjA0Yjg3N2RkMWQ3NDg2N2I4ZTNlMjg3MjdhYzA0NC4uNmU4OTNmOTg0
NGU3MDhlZDE5NzJiNGEyYzE4YjE1OWZhNzBiNTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTYyMyw3ICs2MjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJh
c2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbAog
ICAgIH0KIAogICAgIC8vIFRoaXMgaW5pdGlhbCBkYXRhYmFzZSBpbmZvIG1hdGNoZXMgdGhlIGRl
ZmF1bHQgdmFsdWVzIHdlIGp1c3QgcHV0IGludG8gdGhlIG1ldGFkYXRhIGRhdGFiYXNlLgotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRh
dGFiYXNlTmFtZSgpLCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
REJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0
YWJhc2VJbmZvKCkKQEAgLTY1OCw3ICs2NTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJh
c2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBkYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOworICAg
IGF1dG8gZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNl
TmFtZSwgZGF0YWJhc2VWZXJzaW9uKTsKIAogICAgIHsKICAgICAgICAgU1FMaXRlU3RhdGVtZW50
IHNxbCgqbV9zcWxpdGVEQiwgIlNFTEVDVCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYywgbWF4
SW5kZXhJRCBGUk9NIE9iamVjdFN0b3JlSW5mbzsiX3MpOwpAQCAtODIwLDcgKzgyMCw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8o
SURCRGF0YWJhc2VJbmZvJiBpbmZvCiAKICAgICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxEYXRh
YmFzZVBhdGgoKTsKIAotICAgIG1fc3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURh
dGFiYXNlPigpOworICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigp
OwogICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZp
bGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CkBAIC05MDMs
MTEgKzkwMywxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNh
Y3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGVzdGFibGlzaCB0cmFuc2FjdGlvbiBp
ZGVudGlmaWVyIHRoYXQgYWxyZWFkeSBleGlzdHMiX3MgfTsKICAgICB9CiAKLSAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJUcmFuc2FjdGlv
bj4oKnRoaXMsIGluZm8pOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5p
cXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CiAKICAgICBhdXRvIGVycm9y
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKm1fc3FsaXRlREIpOwogICAgIGlm
IChlcnJvci5pc051bGwoKSAmJiBpbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZl
cnNpb25jaGFuZ2UpIHsKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNp
b25DaGFuZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJ
bmZvKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2Ug
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJbmZvKTsKIAogICAgICAg
ICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiVVBEQVRFIElEQkRhdGFiYXNlSW5m
byBTRVQgdmFsdWUgPSA/IHdoZXJlIGtleSA9ICdEYXRhYmFzZVZlcnNpb24nOyJfcyk7CiAgICAg
ICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMjYxMSw3ICsyNjExLDcgQEAg
U1FMaXRlU3RhdGVtZW50KiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNhY2hlZFN0YXRlbWVudChT
UUxpdGVJREJCYWNraW5nU3RvcmU6OlMKICAgICB9CiAKICAgICBpZiAobV9zcWxpdGVEQikgewot
ICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IHN0
ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsK
KyAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBt
YWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0YXRlbWVudCk7CiAgICAg
ICAgIGlmIChtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXS0+cHJl
cGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0
aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCmluZGV4IGY4NDA1YTc5OGEzNjgxMGRjNTc2YWYxZTczYmNhZjUzMTAyMzdiYWYuLmM2YjNm
ZDk1M2EwZDUzYWMxNTY4ZTI4NDhjYmM3OGExMmYxOTU3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZmV0Y2hMaW1pdCA9
IDg7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6
bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvKQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxT
UUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKKyAgICBhdXRvIGN1cnNvciA9IG1h
a2VVbmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7CiAKICAgICBpZiAo
IWN1cnNvci0+ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNTksNyArNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJ
REJDdXJzb3I6Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aQogCiBzdGQ6OnVuaXF1ZV9w
dHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlQmFja2luZ1N0
b3JlQ3Vyc29yKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgdWludDY0
X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgdWludDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiByYW5nZSkKIHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6bWFrZV91bmlxdWU8U1FM
aXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFuZ2Up
OworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0
aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7CiAKICAgICBpZiAoIWN1cnNvci0+
ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk5LDcg
KzE5OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoY29u
c3QgU3RyaW5nJiBzcWwpCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRVcHBlcktleS5pc051bGwoKSk7
CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCkpOwogCi0gICAg
bV9zdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV90cmFuc2Fj
dGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsKKyAgICBtX3N0YXRl
bWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9uLT5zcWxpdGVU
cmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOwogCiAgICAgaWYgKG1fc3RhdGVtZW50LT5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNy
ZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChwcmVwYXJlL2lkKSAtICclcyciLCBtX3RyYW5zYWN0aW9u
LT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKQEAgLTQ2
NCw3ICs0NjQsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNv
cjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZhbHVl
KQotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
VmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJs
b2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUg
PSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YS5kYXRhKCksIGtleURhdGEu
c2l6ZSgpLCByZWNvcmQucmVjb3JkLnByaW1hcnlLZXkpKSB7CiAgICAgICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB2YWx1ZSBkYXRhIGZyb20gZGF0YWJhc2Ugd2hpbGUg
YWR2YW5jaW5nIGluZGV4IGN1cnNvciIpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIFNRTGl0ZUlEQkN1
cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29y
ZChTUUxpdGVDdXJzCiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7CiAgICAg
ICAgICAgICBvYmplY3RTdG9yZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5
RGF0YSk7Ci0gICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEp
KSk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1
ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICAvLyBU
aGlzIGluZGljYXRlcyB0aGF0IHRoZSByZWNvcmQgd2UncmUgdHJ5aW5nIHRvIHJldHJpZXZlIGhh
cyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlLgogICAgICAgICAgICAgLy8gU2tp
cCBvdmVyIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYTZhM2M1ZmZm
MzM4MGMyNWVmNzM2MWU2ODhiZWYzNmMwNjE1ZmM4My4uZDIxMmRlMmI2Yjg4YWZmZTBhMzViMGZk
MGZkMzNmYzg2N2NlY2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC01
OCw3ICs1OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpiZWdpbihTUUxpdGVE
YXRhYmFzZSYgZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9uKTsK
IAotICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5z
YWN0aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJl
YWRvbmx5KTsKKyAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVUcmFu
c2FjdGlvbj4oZGF0YWJhc2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpS
ZWFkb25seSk7CiAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4oKTsKIAogICAgIGlmICht
X3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cAppbmRleCAxZWJjMDgxOGY4OWVmM2Y3NmI0NmIyN2RlNzRmMzFjY2MzZTQ2Y2NmLi5iZTU5MWI5
ODg0MGVkYWQ2NDgwYWYwYzQxYjdjOGU5MmM1ZjEyYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxl
dGVCYWNraW5nU3RvcmUodWludDY0X3QgZGVsZXRlZFZlcnNpb24pCiAgICAgLy8gd2Ugd29uJ3Qg
aGF2ZSBhIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8uIEluIHRoYXQgY2FzZSwgd2Un
bGwgbWFudWZhY3R1cmUgb25lIHVzaW5nIHRoZQogICAgIC8vIHBhc3NlZCBpbiBkZWxldGVkVmVy
c2lvbiBhcmd1bWVudC4KICAgICBpZiAoIW1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8p
Ci0gICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBkZWxldGVk
VmVyc2lvbik7CisgICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBkZWxl
dGVkVmVyc2lvbik7CiAKICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdCkgewogICAgICAg
ICBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5ub3RpZnlEaWREZWxldGVEYXRhYmFzZSgqbV9tb3N0
UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyk7CkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUluZm8m
IGluZm8sIGNvbnN0IEkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRl
eGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUiKTsK
ICAgICAKLSAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJ
bmZvPihpbmZvKTsKKyAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPihpbmZvKTsKICAgICBtX2JhY2tpbmdTdG9yZU9wZW5FcnJvciA9IGVycm9yOwogCiAgICAg
QVNTRVJUKG1faXNPcGVuaW5nQmFja2luZ1N0b3JlKTsKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uID09IHRyYW5zYWN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VE
YXRhYmFzZUNvbm5lY3Rpb24gfHwgJm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5kYXRhYmFz
ZUNvbm5lY3Rpb24oKSA9PSBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24pOwogICAg
ICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJ
bmZvKCkpOwotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJ
bmZvKCkpOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkp
OwogICAgIH0KIAogICAgIElEQkVycm9yIHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5zdGF0ZSgpID09
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkID8gdHJhbnNhY3Rp
b24tPnJlc3VsdCgpIDogZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5jcHAKaW5kZXggYWY5MmViYzYzNjg4NWM2OWMyNWU1MDI5OWNlNmM0YWNlYWE2NTlj
OC4uZTRkNjY5ZGE4YWM2MjkxNmY3YmNlMDMyODA5YTU1OWU4NTNjYzgyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNTEsNyArNTEsNyBAQCBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgogICAgIEFTU0VSVChkYXRhYmFzZSk7CiAKICAgICBpZiAo
bV90cmFuc2FjdGlvbkluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNo
YW5nZSkKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygpKTsKKyAgICAgICAgbV9vcmlnaW5hbERh
dGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygp
KTsKIAogICAgIGF1dG8mIHNlcnZlciA9IGRhdGFiYXNlLT5zZXJ2ZXIoKTsKICAgICBtX3NlcnZl
ciA9IG1ha2VXZWFrUHRyKHNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAppbmRleCBiMTBkODQw
OTliMjUyOGU2ZjczYzI4YjE1MDRhOGE5MzI0ZDBiMjFhLi4yMTY0MTZhZmExMWNmMjU1ZDM2ZGVm
YjNlZmYzNmVmYWYxOTU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKCkKIAogSURCUmVxdWVzdERhdGE6OklE
QlJlcXVlc3REYXRhKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0
aW9uUHJveHksIGNvbnN0IElEQk9wZW5EQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgOiBtX3NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25Qcm94eS5zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVjdGlvblByb3h5LCByZXF1ZXN0KSkKKyAgICAsIG1f
cmVxdWVzdElkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGNvbm5l
Y3Rpb25Qcm94eSwgcmVxdWVzdCkpCiAgICAgLCBtX2RhdGFiYXNlSWRlbnRpZmllcihyZXF1ZXN0
LmRhdGFiYXNlSWRlbnRpZmllcigpKQogICAgICwgbV9yZXF1ZXN0ZWRWZXJzaW9uKHJlcXVlc3Qu
dmVyc2lvbigpKQogICAgICwgbV9yZXF1ZXN0VHlwZShyZXF1ZXN0LnJlcXVlc3RUeXBlKCkpCkBA
IC00OSw4ICs0OSw4IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByCiAKIElEQlJlcXVlc3REYXRh
OjpJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRp
b24pCiAgICAgOiBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKG9wZXJhdGlvbi50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkuY29ubmVjdGlvblByb3h5KCkuc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIoKSkKLSAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpKQotICAgICwgbV90cmFu
c2FjdGlvbklkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgLCBtX3JlcXVlc3RJZGVu
dGlmaWVyKG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24uaWRlbnRp
ZmllcigpKSkKKyAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKG1ha2VVbmlxdWU8SURCUmVz
b3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQogICAg
ICwgbV9vYmplY3RTdG9yZUlkZW50aWZpZXIob3BlcmF0aW9uLm9iamVjdFN0b3JlSWRlbnRpZmll
cigpKQogICAgICwgbV9pbmRleElkZW50aWZpZXIob3BlcmF0aW9uLmluZGV4SWRlbnRpZmllcigp
KQogewpAQCAtNTgsNyArNTgsNyBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoSURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgICAgICBtX2luZGV4
UmVjb3JkVHlwZSA9IG9wZXJhdGlvbi5pbmRleFJlY29yZFR5cGUoKTsKIAogICAgIGlmIChvcGVy
YXRpb24uY3Vyc29ySWRlbnRpZmllcigpKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlvbi5jdXJzb3JJ
ZGVudGlmaWVyKCkpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpOwogfQog
CiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEmIG90
aGVyKQpAQCAtNzEsMTEgKzcxLDExIEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgb3RoZXIpCiAgICAgLCBtX3JlcXVlc3RUeXBlKG90aGVyLm1f
cmVxdWVzdFR5cGUpCiB7CiAgICAgaWYgKG90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpCi0gICAg
ICAgIG1fcmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtX3JlcXVlc3RJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3Jl
cXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIubV90cmFuc2FjdGlvbklkZW50aWZpZXIp
Ci0gICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAg
ICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50
aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKG90aGVyLm1f
Y3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1cnNvcklkZW50aWZpZXIp
OworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAKIElEQlJlcXVlc3REYXRh
OjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5
VGFnKQpAQCAtMTAyLDExICsxMDIsMTEgQEAgdm9pZCBJREJSZXF1ZXN0RGF0YTo6aXNvbGF0ZWRD
b3B5KGNvbnN0IElEQlJlcXVlc3REYXRhJiBzb3VyY2UsIElEQlJlcXVlc3REYXRhJgogICAgICAg
ICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSWRlbnRpZmllciA9IHNvdXJjZS5tX2RhdGFiYXNlSWRl
bnRpZmllci0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBpZiAoc291cmNlLm1fcmVxdWVzdElkZW50
aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3JlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50aWZpZXIpOwog
ICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0
aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBk
ZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPigqc291cmNlLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAo
c291cmNlLm1fY3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9jdXJzb3JJ
ZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3Vy
Y2UubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9jdXJzb3JJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9jdXJz
b3JJZGVudGlmaWVyKTsKIH0KIAogdWludDY0X3QgSURCUmVxdWVzdERhdGE6OnNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKaW5kZXggNDVjZmZhZWE2MDNh
NTNiNTk5MDRjOGIxNGI3YTFkZWY3ZDI1ZjMxMC4uNDA4YjRlNDYyODczMzdiOWFjMzQ0YWZiZjQ2
OTE1ODY4ZTgwZjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKQEAgLTE1Niw3ICsxNTYsNyBAQCBib29s
IElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNl
SWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9yZXF1ZXN0SWRlbnRpZmllciA9IFdURk1vdmUo
b2JqZWN0KTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhh
c09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVy
PiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFr
ZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVl
c3QubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xNzQsNyAr
MTc0LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fY3Vyc29ySWRlbnRpZmll
ciA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAppbmRleCBhODk0NTRlNmU2M2Y2
ZWI3Y2I1MDM4YjljOTMyZmEyMTg2MzNlZGM2Li40Y2JkNWQ5YmRmMGE4NTIzYmY3ZjUyYWM1YmM1
Y2I0YjdlZDEwNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC01NywxNSArNTcsMTUgQEAgSURC
UmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiBvdGhlcikKICAg
ICAsIG1fcmVzdWx0SW50ZWdlcihvdGhlci5tX3Jlc3VsdEludGVnZXIpCiB7CiAgICAgaWYgKG90
aGVyLm1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIubV9kYXRhYmFzZUluZm8pOworICAgICAgICBt
X2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIubV9kYXRh
YmFzZUluZm8pOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSW5mbykKLSAgICAgICAgbV90
cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90
aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbkluZm8gPSBtYWtl
VW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKICAg
ICBpZiAob3RoZXIubV9yZXN1bHRLZXkpCi0gICAgICAgIG1fcmVzdWx0S2V5ID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOworICAgICAgICBtX3Jlc3Vs
dEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKm90aGVyLm1fcmVzdWx0S2V5KTsKICAgICBp
ZiAob3RoZXIubV9nZXRSZXN1bHQpCi0gICAgICAgIG1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3VsdCk7CisgICAgICAgIG1fZ2V0UmVz
dWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3VsdCk7CiAgICAg
aWYgKG90aGVyLm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBtX2dldEFsbFJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqb3RoZXIubV9nZXRBbGxSZXN1bHQpOworICAg
ICAgICBtX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqb3RoZXIu
bV9nZXRBbGxSZXN1bHQpOwogfQogCiBJREJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0
IElEQlJlc3VsdERhdGEmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTg3LDE1ICs4NywxNSBA
QCB2b2lkIElEQlJlc3VsdERhdGE6Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXN1bHREYXRhJiBz
b3VyY2UsIElEQlJlc3VsdERhdGEmIGRlcwogICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0SW50ZWdl
ciA9IHNvdXJjZS5tX3Jlc3VsdEludGVnZXI7CiAKICAgICBpZiAoc291cmNlLm1fZGF0YWJhc2VJ
bmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fZGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUlu
Zm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0g
bWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRh
dGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fdHJhbnNhY3Rpb25J
bmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvLCBJREJU
cmFuc2FjdGlvbkluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fdHJh
bnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90
cmFuc2FjdGlvbkluZm8sIElEQlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAgICBp
ZiAoc291cmNlLm1fcmVzdWx0S2V5KQotICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5
RGF0YTo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRLZXkgPSBt
YWtlVW5pcXVlPElEQktleURhdGE+KCpzb3VyY2UubV9yZXN1bHRLZXksIElEQktleURhdGE6Oklz
b2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX2dldFJlc3VsdCkKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKnNvdXJj
ZS5tX2dldFJlc3VsdCwgSURCR2V0UmVzdWx0OjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0
aW5hdGlvbi5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigqc291cmNlLm1f
Z2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5t
X2dldEFsbFJlc3VsdCkKLSAgICAgICAgZGVzdGluYXRpb24ubV9nZXRBbGxSZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKnNvdXJjZS5tX2dldEFsbFJlc3VsdCwgSURC
R2V0QWxsUmVzdWx0OjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFs
bFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVz
dWx0LCBJREJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiB9CiAKIElEQlJlc3VsdERhdGEg
SURCUmVzdWx0RGF0YTo6ZXJyb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQpAQCAtMTExLDcgKzExMSw3IEBAIElE
QlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vzcyhjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlCiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyByZXF1ZXN0
SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRUeXBlOjpPcGVuRGF0
YWJhc2VTdWNjZXNzOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIg
PSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlvbi5kYXRhYmFzZSgpLT5p
bmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCktPmluZm8oKSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtMTIxLDE1ICsxMjEsMTUgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRh
OjpvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAg
ICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVlc3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0
Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQ7CiAgICAg
cmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmRhdGFi
YXNlQ29ubmVjdGlvbigpLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VD
b25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5mbygpKTsKLSAgICByZXN1bHQubV90cmFuc2FjdGlv
bkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4odHJhbnNhY3Rpb24u
aW5mbygpKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5m
bygpKTsKKyAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5z
YWN0aW9uSW5mbz4odHJhbnNhY3Rpb24uaW5mbygpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFiYXNlU3VjY2Vzcyhjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJEYXRh
YmFzZUluZm8mIGluZm8pCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQge0lEQlJlc3VsdFR5
cGU6OkRlbGV0ZURhdGFiYXNlU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1
bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5m
byk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KGluZm8pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3MSwyMSArMTcxLDIxIEBA
IElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cmVuYW1lSW5kZXhTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OnB1
dE9yQWRkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBJREJLZXlEYXRhJiByZXN1bHRLZXkpCiB7CiAgICAgSURCUmVzdWx0RGF0YSBy
ZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpQdXRPckFkZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVy
IH07Ci0gICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRh
PihyZXN1bHRLZXkpOworICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5
RGF0YT4ocmVzdWx0S2V5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRh
IElEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7
CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRSZWNvcmRTdWNj
ZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJl
c3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1
Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgSURCR2V0QWxsUmVzdWx0JiBnZXRBbGxSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSBy
ZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcywgcmVxdWVzdElkZW50
aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQg
PSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC0yMDQsMTQgKzIwNCwxNCBAQCBJREJSZXN1bHREYXRhIElEQlJlc3Vs
dERhdGE6OmRlbGV0ZVJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZQogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vzcyhjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1
bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5
cGU6Ok9wZW5DdXJzb3JTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5t
X2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwor
ICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1
bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0
YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgSURC
UmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29yU3VjY2Vzcywg
cmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQg
PSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVzdWx0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlc3VsdERhdGEuaAppbmRleCA3MTdiM2UyZGU1M2IzNTNmZWI2ZGQ3NTUwMGEwZTVl
NjhjOTQ3YTNmLi42MjA2MmExZTI5NWY3YjU5ODE1ODk1YjU3YmVjMDA4ZTViMTg3NmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXN1bHREYXRhLmgKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBP
cHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0g
bWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBy
ZXN1bHQubV9kYXRhYmFzZUluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xOTMsNyArMTkzLDcg
QEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVz
dWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09i
amVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkg
ewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25J
bmZvPigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25J
bmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZv
ID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNv
ZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0
ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigpOwogICAgICAgICBPcHRpb25hbDxJREJLZXlEYXRh
PiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsKICAgICAgICAgaWYgKCFv
cHRpb25hbCkKQEAgLTIxNCw3ICsyMTQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRp
b25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVu
aXF1ZTxJREJHZXRSZXN1bHQ+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVj
dCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV9n
ZXRSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMjMsNyArMjIzLDcgQEAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVj
b2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBh
dXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOworICAgICAg
ICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRy
YW5zYWN0aW9uSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAppbmRleCA5ODNjMWMxMWM5OWI0NWI2Y2U1NDRkZmNh
YzAzN2U0YzczNzI5NWMzLi40ZmI5OTkxOWY2N2Q1ZjdjOWFiYzEwOWUyZTMwMDBjY2U0YzQ0MDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
VHJhbnNhY3Rpb25JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcApAQCAtNTUsNyArNTUsNyBAQCBJREJUcmFu
c2FjdGlvbkluZm8gSURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlNl
cnZlcjo6SURCQ29ubmVjdAogICAgIElEQlRyYW5zYWN0aW9uSW5mbyByZXN1bHQoKElEQlJlc291
cmNlSWRlbnRpZmllcihjb25uZWN0aW9uKSkpOwogICAgIHJlc3VsdC5tX21vZGUgPSBJREJUcmFu
c2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2U7CiAgICAgcmVzdWx0Lm1fbmV3VmVyc2lvbiA9IG5l
d1ZlcnNpb247Ci0gICAgcmVzdWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgIHJlc3Vs
dC5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG9y
aWdpbmFsRGF0YWJhc2VJbmZvKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02Nyw3ICs2
Nyw3IEBAIElEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRy
YW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAsIG1fb2JqZWN0U3RvcmVzKGluZm8ubV9vYmplY3RT
dG9yZXMpCiB7CiAgICAgaWYgKGluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAg
bV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZv
PigqaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFi
YXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqaW5mby5tX29yaWdpbmFsRGF0
YWJhc2VJbmZvKTsKIH0KIAogSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8o
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiB0aGF0LCBJc29sYXRlZENvcHlUYWcpCkBAIC05MSw3
ICs5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25JbmZvOjppc29sYXRlZENvcHkoY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJiBzb3VyY2UsIElEQlRyYW5zCiAgICAgICAgIGRlc3RpbmF0aW9uLm1f
b2JqZWN0U3RvcmVzLnVuY2hlY2tlZEFwcGVuZChvYmplY3RTdG9yZS5pc29sYXRlZENvcHkoKSk7
CiAKICAgICBpZiAoc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pCi0gICAgICAgIGRlc3Rp
bmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86
Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0YWJh
c2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CiB9CiAKICNpZiAhTE9HX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKaW5kZXggOTMwZDgwMjM2MTgyMzJhYmY2YzA4
MWRmMjEyOTU4ZmY2MmE1NTVlZC4uN2I5NDc3ZThlYzU1NGM5MTNkMmE0OGJlNTU4ZTE2MzNkOTNm
Y2U5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlRyYW5zYWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wg
SURCVHJhbnNhY3Rpb25JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCVHJhbnNhY3Rp
b25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzT2JqZWN0
KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCRGF0YWJhc2VJbmZvPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gV1RGTW92
ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCA4N2IxYWRjZDk2NjYy
MDZlYzk3MTY2MDM2MmI0MGU1YWQ3ZDgwMWQxLi5jOTY4OTQ0NGZkMjI0MDJjZWQyMTEzYjNiZmEw
YjlhNTI2YzY3M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtNjEsNyArNjEs
NyBAQCBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogU3RvcmFnZVF1b3RhTWFuYWdlciogSW5Qcm9j
ZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7
CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0b3JhZ2VRdW90
YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3Vy
cmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0b3JhZ2VRdW90YU1h
bmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVu
dFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAg
ICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOwogICAg
ICAgICB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2
aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY4NzI1NzRlODVjMjQwODc3MmIxZDEx
YTJlOGJjYjZkZDYwZGEyOTcuLmEzMWJhZGI1NGFjOTgxZTBlM2JhZGFmZTIwOTg3ODI5ZDNmNzQw
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMv
TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzJiBOYXZpZ2F0b3JNZWRpYUNh
cGFiaWxpdGllczo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvCiB7CiAgICAgTmF2aWdhdG9yTWVk
aWFDYXBhYmlsaXRpZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JNZWRpYUNh
cGFiaWxpdGllcyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM+
KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yTWVk
aWFDYXBhYmlsaXRpZXM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50Lmdl
dCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApp
bmRleCA1MGQwYmIwYjFlZDUzYTQzMjQ1OGQ5ZmI3MTM1NzBhZTBlY2EwZDA2Li5iOTc0MzRjNGU2
MjQ1ZDczY2NmMmQ2MjVhMGExYjAzZTEyOTBjYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmCiBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja1BpY2tl
cigpCiB7CiAgICAgaWYgKCFtX3BpY2tlck92ZXJyaWRlKQotICAgICAgICBtX3BpY2tlck92ZXJy
aWRlID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRo
aXMpOworICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX3BpY2tlck92ZXJyaWRl
LmdldCgpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHVpbnQ2NF90IFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hCiAK
ICAgICBMT0coTWVkaWEsICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1Rhcmdl
dFBpY2tlckNsaWVudCglcCArICVsbHUpIiwgJmNsaWVudCwgY29udGV4dElkKTsKIAotICAgIG1f
Y2xpZW50U3RhdGUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwg
Y29udGV4dElkKSk7CisgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVuaXF1ZTxDbGllbnRT
dGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCiAgICAgICAgIHNjaGVkdWxlRGVsYXll
ZFRhc2soSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRp
b25UYXNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZS5jcHAKaW5kZXggZDQxN2ExMjE2OTExMTIxNWQ1NDIyOTFlMDNjNTlkNWQ2ZTdlYjNm
NC4uN2NiYzZhMTMzNTFlMGQzMmNlMjU1YTliYWRjYjk3NDRkYWY0ZDQ0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTE3
OCw5ICsxNzgsOSBAQCBNZWRpYVRpbWUgTWVkaWFTb3VyY2U6OmN1cnJlbnRUaW1lKCkgY29uc3QK
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJl
ZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYnVmZmVyZWQgJiYgbV9hY3RpdmVTb3VyY2VCdWZmZXJz
LT5sZW5ndGgoKSAmJiBzdGQ6OmFsbF9vZihtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmJlZ2luKCks
IG1fYWN0aXZlU291cmNlQnVmZmVycy0+ZW5kKCksIFtdKGF1dG8mIGJ1ZmZlcikgeyByZXR1cm4g
IWJ1ZmZlci0+aXNCdWZmZXJlZERpcnR5KCk7IH0pKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKLSAgICBtX2J1
ZmZlcmVkID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgbV9i
dWZmZXJlZCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGZvciAoYXV0
byYgc291cmNlQnVmZmVyIDogKm1fYWN0aXZlU291cmNlQnVmZmVycykKICAgICAgICAgc291cmNl
QnVmZmVyLT5zZXRCdWZmZXJlZERpcnR5KGZhbHNlKTsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgp
IGNvbnN0CiAKICAgICAvLyAxLiBJZiBhY3RpdmVTb3VyY2VCdWZmZXJzLmxlbmd0aCBlcXVhbHMg
MCB0aGVuIHJldHVybiBhbiBlbXB0eSBUaW1lUmFuZ2VzIG9iamVjdCBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCiAgICAgaWYgKGFjdGl2ZVJhbmdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAog
ICAgIC8vIDIuIExldCBhY3RpdmUgcmFuZ2VzIGJlIHRoZSByYW5nZXMgcmV0dXJuZWQgYnkgYnVm
ZmVyZWQgZm9yIGVhY2ggU291cmNlQnVmZmVyIG9iamVjdCBpbiBhY3RpdmVTb3VyY2VCdWZmZXJz
LgogICAgIC8vIDMuIExldCBoaWdoZXN0IGVuZCB0aW1lIGJlIHRoZSBsYXJnZXN0IHJhbmdlIGVu
ZCB0aW1lIGluIHRoZSBhY3RpdmUgcmFuZ2VzLgpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0
CiAKICAgICAvLyBSZXR1cm4gYW4gZW1wdHkgcmFuZ2UgaWYgYWxsIHJhbmdlcyBhcmUgZW1wdHku
CiAgICAgaWYgKCFoaWdoZXN0RW5kVGltZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCiAgICAgLy8gNC4gTGV0
IGludGVyc2VjdGlvbiByYW5nZXMgZXF1YWwgYSBUaW1lUmFuZ2Ugb2JqZWN0IGNvbnRhaW5pbmcg
YSBzaW5nbGUgcmFuZ2UgZnJvbSAwIHRvIGhpZ2hlc3QgZW5kIHRpbWUuCiAgICAgbV9idWZmZXJl
ZC0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgaGlnaGVzdEVuZFRpbWUpOwpAQCAtMjIxLDcg
KzIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNl
OjpidWZmZXJlZCgpIGNvbnN0CiAgICAgICAgIG1fYnVmZmVyZWQtPmludGVyc2VjdFdpdGgoc291
cmNlUmFuZ2VzKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZTo6c2Vla1Rv
VGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCkBAIC0zNDQsNyArMzQ0LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFTb3VyY2U6OnNldExpdmVTZWVrYWJsZVJhbmdlKGRvdWJsZSBzdGFydCwg
ZG91YmxlIGVuZCkKIAogICAgIC8vIFNldCBsaXZlIHNlZWthYmxlIHJhbmdlIHRvIGJlIGEgbmV3
IG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgY29udGFpbmluZyBhIHNpbmdsZSByYW5nZQog
ICAgIC8vIHdob3NlIHN0YXJ0IHBvc2l0aW9uIGlzIHN0YXJ0IGFuZCBlbmQgcG9zaXRpb24gaXMg
ZW5kLgotICAgIG1fbGl2ZVNlZWthYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZShlbmQpKTsKKyAgICBtX2xpdmVTZWVrYWJsZSA9IG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JNZWRpYURldmljZXMuY3BwCmluZGV4IGU0MTgyNzgzOGQ2MmNhMzhmYzNiZjNiZTc4ZjhmNGFh
OGFlNTI1OTYuLjdiMzU4ZjVlMGRlNDJmYjIyNjhkMzY5MDNlNThkYjVlYjc4ZTkwZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFE
ZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgTmF2aWdhdG9yTWVkaWFEZXZp
Y2VzKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7
CiAgICAgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yTWVkaWFEZXZpY2VzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRv
ciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvck1lZGlhRGV2aWNl
cz4obmF2aWdhdG9yLT53aW5kb3coKSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3ItPndpbmRvdygpKTsKICAg
ICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVU
byhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDhkN2U2M2NjNjA2ZDZkYTE5ZmJkYjEyZGU1
NGZiODU1ZmRmNjJjOTkuLjE0ZGYxMTYxZGFlNjhjYzQ2Y2I0OWVhYWUyMWY1ZWY5ODllMmFjYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFDb250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBVc2VyTWVkaWFDb250cm9s
bGVyOjp+VXNlck1lZGlhQ29udHJvbGxlcigpCiAKIHZvaWQgcHJvdmlkZVVzZXJNZWRpYVRvKFBh
Z2UqIHBhZ2UsIFVzZXJNZWRpYUNsaWVudCogY2xpZW50KQogewotICAgIFVzZXJNZWRpYUNvbnRy
b2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFDb250cm9sbGVyOjpzdXBwbGVtZW50TmFt
ZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xsZXI+KGNsaWVudCkpOworICAg
IFVzZXJNZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFDb250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xsZXI+KGNsaWVu
dCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTZWN1cmUoRG9jdW1lbnRMb2FkZXImIGRv
Y3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5jcHAKaW5kZXggYWFhNDAwMDIwNzM2NWZmY2JlNTI4MTI4ZTI4Y2UwMmY2YzYwN2Nk
ZC4uYzk4NWJjMTlhMzFkMDExNDU2NWFiYWJhNWYwNjBlZTUwZGE2MTE0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIFJlZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OmNoYW5uZWxFdmVudChTY3JpcHRFeGVjdXRpCiAgICAgaW5pdC5uZWdvdGlhdGVkID0gZGF0
YUNoYW5uZWwtPm5lZ290aWF0ZWQoKTsKICAgICBpbml0LmlkID0gZGF0YUNoYW5uZWwtPmlkKCk7
CiAKLSAgICBhdXRvIGhhbmRsZXIgPSAgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5uZWwpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSAg
bWFrZVVuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5u
ZWwpKTsKICAgICBhdXRvIGNoYW5uZWwgPSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQs
IFdURk1vdmUoaGFuZGxlciksIGZyb21TdGRTdHJpbmcobGFiZWwpLCBXVEZNb3ZlKGluaXQpKTsK
IAogICAgIHJldHVybiBSVENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRh
dGFjaGFubmVsRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObywgV1RGTW92ZShjaGFubmVsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwCmluZGV4IGRlZjFmOTFlZWU5ZWQ2ZWM3OGQxM2M2OWVjNDM0OGYwYWE2OGQz
NjcuLmQxYTc0Yjg1NzFiZWU3ZWU1ZTljMzE2MmVjYTJmNGQ2ZmY0MWU0NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAg
dm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpSdHBSZWNlaXYKICAgICB9CiAgICAgfQogCi0gICAgcmVjZWl2ZXItPnNl
dEJhY2tlbmQoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdU
Rk1vdmUocnRjUmVjZWl2ZXIpKSk7CisgICAgcmVjZWl2ZXItPnNldEJhY2tlbmQobWFrZVVuaXF1
ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CiAg
ICAgYXV0byYgdHJhY2sgPSByZWNlaXZlci0+dHJhY2soKTsKICAgICBhZGRQZW5kaW5nVHJhY2tF
dmVudChyZWNlaXZlci5yZWxlYXNlTm9uTnVsbCgpLCB0cmFjaywgcnRjU3RyZWFtcywgbnVsbHB0
cik7CiB9CkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpj
b2xsZWN0VHJhbnNjZWl2ZXJzKCkKICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNj
ZWl2ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdU
Rk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAg
ICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikp
LCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogfQogCkBAIC00OTksNyArNDk5LDcg
QEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFuc2NlaXZlcihydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2MKICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFj
a2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2Vp
dmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSk7CiAKICAgICBhZGRQZW5kaW5nVHJhY2tFdmVudChtYWtlUmVmKG5ld1RyYW5zY2VpdmVy
LnJlY2VpdmVyKCkpLCBuZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpLnRyYWNrKCksIHJ0Y1JlY2Vp
dmVyLT5zdHJlYW1zKCksIG1ha2VSZWYobmV3VHJhbnNjZWl2ZXIpKTsKIH0KQEAgLTUzNCw3ICs1
MzQsNyBAQCBPcHRpb25hbDxMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcz4gTGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZQogICAgIGlmICghcmVzdWx0Lm9rKCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHRyYW5zY2VpdmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3Zl
VmFsdWUoKSk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92ZVZhbHVlKCkpOwogICAgIHJldHVybiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcyB7IHRyYW5zY2VpdmVyLT5jcmVhdGVTZW5kZXJC
YWNrZW5kKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLCBXVEZNb3ZlKHNvdXJjZSkpLCB0cmFuc2Nl
aXZlci0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCksIFdURk1vdmUodHJhbnNjZWl2ZXIpIH07CiB9
CiAKQEAgLTU4NSw3ICs1ODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaQogewogICAgIGZv
ciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX2JhY2tlbmQtPkdldFRyYW5zY2VpdmVycygpKSB7CiAg
ICAgICAgIGlmICh0cmFuc2NlaXZlci0+c2VuZGVyKCkuZ2V0KCkgPT0gYmFja2VuZC5ydGNTZW5k
ZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjZWl2
ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2NlaXZlcikpOwogICAgIH0KICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTY1NCw3ICs2NTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVEYXRhQ2hh
bm5lbAogewogICAgIGF1dG8gaW5pdCA9IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6ZnJv
bVJUQ0RhdGFDaGFubmVsSW5pdChvcHRpb25zKTsKICAgICBhdXRvIGNoYW5uZWwgPSBtX2JhY2tl
bmQtPkNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLnV0ZjgoKS5kYXRhKCksICZpbml0KTsKLSAgICBy
ZXR1cm4gY2hhbm5lbCA/IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGNoYW5uZWwgPyBt
YWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFubmVsKSkg
OiBudWxscHRyOwogfQogCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5u
ZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+IGRhdGFD
aGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKaW5kZXggMjA3ZjE1ZTY0NTdiOWRmY2FjMWMzMzllYTM5ZmVhMWQ3Nzg1OWQ4
Yi4uZmM5MWNjZDBiYmQxZmRiYmE3NjQyZTcwNGYzN2ZlODVjYzcyZmQ1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5k
PiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlCiAKICAgICBwYWdlLT5saWJXZWJS
VENQcm92aWRlcigpLnNldEVuYWJsZVdlYlJUQ0VuY3J5cHRpb24ocGFnZS0+c2V0dGluZ3MoKS53
ZWJSVENFbmNyeXB0aW9uRW5hYmxlZCgpKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24sIHBhZ2UtPmxp
YldlYlJUQ1Byb3ZpZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24sIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVy
KCkpOwogfQogCiBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpjcmVhdGUgPSBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CkBAIC0z
MTEsNyArMzExLDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpWaWRlb1JlY2Vp
dmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmkKICAgICBhdXRvIHNvdXJjZSA9
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJh
Y2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShzb3Vy
Y2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwor
ICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFu
c2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAidmlkZW8iX3MsIHsg
fSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7
CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgbV9wZWVy
Q29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBAIC0zMzQs
NyArMzM0LDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVy
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXUKICAgICBhdXRvIHNvdXJjZSA9IFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJ
ZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShzb3VyY2Uu
Y29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2Nl
aXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAiYXVkaW8iX3MsIHsgfSwg
V1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAg
ICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgbV9wZWVyQ29u
bmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBAIC00MDAsNyAr
NDAwLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8UlRDUnRwU2VuZGVyPiBmaW5kRXhpc3RpbmdT
ZW5kZXIoY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHAKIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBT
ZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3Ry
ZWFtVHJhY2smIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzKQogewogICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZp
ZWRQbGFuRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
ICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFj
aygqc2VuZGVyQmFja2VuZCwgdHJhY2ssIG1lZGlhU3RyZWFtSWRzKSkKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07CiAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cgogICAgICAgICBjb25z
dCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLmtpbmQoKTsKICAgICAgICAgU3RyaW5nIHRyYWNr
SWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBzZW5kZXJC
YWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhp
cywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBhdXRvIG5l
d1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBtYWtlUmVmKHRyYWNrKSwgVmVj
dG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsK
ICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYWNrS2luZCwgdHJhY2tJ
ZCk7CiAgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRl
KFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShyZWNlaXZlciksIG51bGxwdHIpOwpAQCAtNDcy
LDcgKzQ3Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5FbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFN0cmluZyB7IHRyYWNr
S2luZCB9LCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8g
c2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRo
aXMsIG51bGxwdHIpOwogICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUo
KnRoaXMsIFN0cmluZyh0cmFja0tpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRl
ckJhY2tlbmQpKTsKICAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihXVEZNb3ZlKG5l
d1NlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgdHJhY2tLaW5kKTsK
IH0KQEAgLTQ4Miw3ICs0ODIsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+
PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdgogICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQbGFu
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRkVW5pZmllZFBsYW5UcmFuc2NlaXZlcihXVEZN
b3ZlKHRyYWNrKSwgaW5pdCk7CiAKLSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBh
dXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+
KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvJiBiYWNrZW5kID0gKnNlbmRlckJhY2tlbmQ7CiAg
ICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgdHJhY2suY29weVJl
ZigpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICBpZiAo
IW1fZW5kcG9pbnQtPmFkZFRyYWNrKGJhY2tlbmQsIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiB7IH0p
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAppbmRl
eCA2ODUwZTZhODVlOTAyNGJiMTE0NWI2Yjk0MjI5YzBmNjE0MmRmN2FhLi42YWVlYTEzMzg5MmQy
MDYzZjAzNTM5YjhlZWM0ZGI5YmNlNjRkN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBTZW5kUGFyYW1l
dGVycyYgcGFyYW1lCiAKIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVyQmFja2VuZD4gTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRNRkJhY2tlbmQoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRl
ci0+R2V0RHRtZlNlbmRlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IGViODcxZWI3ZGIwMzg4NGY0Y2M3ZTBhZGVmNjg3
ODJlMWMwOTcyZDcuLjVjMGQ3ZTk1ZTJmZDEyZTNmODRmMTdjZmJlYjZkODY3YTUxZjJlNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
LmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kOjpjcmVhdGVSZWNlaXZlckJhY2tlbmQoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFuc2NlaXZlci0+
cmVjZWl2ZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJC
YWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5yZWNlaXZlcigpKTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFj
a2VuZDo6Y3JlYXRlU2VuZGVyQmFja2VuZChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQm
IGJhY2tlbmQsIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OlNvdXJjZSYmIHNvdXJjZSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPihi
YWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3VyY2UpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPihiYWNrZW5kLCBt
X3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3VyY2UpKTsKIH0KIAogUlRDUnRw
VHJhbnNjZWl2ZXJEaXJlY3Rpb24gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpkaXJl
Y3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAwYzMyOGZhZTQ0MjM1OTkyNTMzMDcyYzg1ZDZi
MzJmZGM2YzEzODM4Li4wZWJhZmY4OWZmYmM1MDAzZTI0NjFiYWRlZTUyMDM5MTE3MWNiZDNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbgogICAg
ICwgbV9ib2R5KG9wdGlvbnMuYm9keSkKICAgICAsIG1fdGFnKG9wdGlvbnMudGFnKQogICAgICwg
bV9zdGF0ZShJZGxlKQotICAgICwgbV90YXNrVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4o
W3RoaXNdICgpIHsgc2hvdygpOyB9KSkKKyAgICAsIG1fdGFza1RpbWVyKG1ha2VVbmlxdWU8VGlt
ZXI+KFt0aGlzXSAoKSB7IHNob3coKTsgfSkpCiB7CiAgICAgaWYgKCFvcHRpb25zLmljb24uaXNF
bXB0eSgpKSB7CiAgICAgICAgIGF1dG8gaWNvblVSTCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKG9w
dGlvbnMuaWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYTYyMDM1Mzkz
YzdmYjNmNmRkZjAxYzVjODlkNzRmM2I1ZWRkMmQ0NC4uZDQ4ZjIwNWE5ZTI0MTRlMDdkNzIyZjkw
MzI1YTdjMzY0ZDQ4OTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBjb25zdCBjaGFyKiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50
TmFtZSgpCiAKIHZvaWQgcHJvdmlkZU5vdGlmaWNhdGlvbihQYWdlKiBwYWdlLCBOb3RpZmljYXRp
b25DbGllbnQqIGNsaWVudCkKIHsKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRl
VG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjpt
YWtlX3VuaXF1ZTxOb3RpZmljYXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKKyAgICBOb3RpZmlj
YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6
c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxOb3RpZmljYXRpb25Db250cm9sbGVyPihjbGll
bnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcAppbmRleCAwM2ZlOWUzODY3OGY0MDUwNzMy
NTUwOWMyMDM4NjdjOWNmODIwZmYxLi5jOThjOTk4NmRlZDZjZDIwNTQyNjE3MjE1ZjY1MzZjZTU4
ZjI3OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRv
d1F1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1
b3RhLmNwcApAQCAtNTcsNyArNTcsNyBAQCBET01XaW5kb3dRdW90YSogRE9NV2luZG93UXVvdGE6
OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93UXVvdGEqIHN1cHBsZW1l
bnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dRdW90YSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6
ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dR
dW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxE
T01XaW5kb3dRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1l
bnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdU
Rk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA3YmExZDNkNGIz
Njk0NDBjNjRlMTdkZDIwY2E5NDUzOGI4YWQ5Yjc0Li43YTA4MDQ1OTU2OTgzYTMxZjZkODM0ZWY3
ZWE3NzJmYTY2NzM2YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3Rh
L05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9x
dW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRv
clN0b3JhZ2VRdW90YSogTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKE5hdmlnYXRvciogbmF2
aWdhdG9yKQogewogICAgIE5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3VwcGxlbWVudCA9IHN0YXRp
Y19jYXN0PE5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJv
bShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JT
dG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50
ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3Vw
cGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9y
YWdlUXVvdGEuY3BwCmluZGV4IDk1YzNlNDM2NDczMTYyYTUwZDYxYjVjZTc1MTY1ZWU2OGIyMWI3
MjcuLjFhMWM4NDdkYzQ5N2RjNjQ4NDVmNTZlY2U1OTI2M2E0MjZhZjYzMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0
b3JhZ2VRdW90YS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1
b3RhKiBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oV29ya2VyTmF2aWdhdG9yKgog
ewogICAgIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdh
dG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBs
ZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
b3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cp
OwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJv
dmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggMzc5NTY1MjZmYmYyODY5MGVjZjAz
OTk1MmM1MmY2ZTA0NDZiY2I0Yy4uOTY5YzIzN2Y3YzgxNTUxNTNkZTA3MWVjOTZhNjFhNGE0NjJk
M2Y5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93
U3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9E
T01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIERPTVdpbmRvd1Nw
ZWVjaFN5bnRoZXNpcyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpmcm9tKERPTVdpbmRvdyog
d2luZG93KQogewogICAgIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93
Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5k
b3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3aW5kb3cpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRv
dywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5k
ZXggNzJiNTYzZTRiYmY3ZGNlMDNmYTMwODgwZDJmYTc3MGI4OTg2OTNhNC4uZTdiNjJhMWExN2Jk
OTZhOWY1YTEzZmQwOWU3NDlhYjRiY2UxOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
U3BlZWNoU3ludGhlc2lzOjp2b2ljZXNEaWRDaGFuZ2UoKQogUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplciYgU3BlZWNoU3ludGhlc2lzOjplbnN1cmVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkK
IHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcikKLSAgICAgICAgbV9wbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyPih0aGlzKTsKKyAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKICAgICByZXR1cm4g
Km1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCA2MmY2OGVj
NjYzYTgwMjEyYzZmM2FmN2I4NWUyM2M2YjRmNzQyYTBhLi4yZjU0MjcyYWM1YzAxZDBhMjMwZTVj
MGRmMDQ1MjRhZmIyYTRlMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEFz
eW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyhSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRh
LCBmbG9hdCBzYW1wbGVSYQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBh
dXRvIGRlY29kaW5nVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2RpbmdUYXNrPihXVEZNb3Zl
KGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92
ZShlcnJvckNhbGxiYWNrKSk7CisgICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBtYWtlVW5pcXVlPERl
Y29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHN1Y2Nl
c3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogICAgIG1fcXVldWUuYXBwZW5k
KFdURk1vdmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5vdGUgdGhhdCBvd25lcnNoaXAgb2YgdGhlIHRh
c2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1ZXVlLgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKaW5kZXggYmMw
MGViOWY4N2QxYmNkNThjYmY3NDliN2RhN2M0OTNjZjdlODg3Ni4uY2Y5MjY5YzMwNDRjNDMyMmQ3
NDRkMDYyOWRkYTBmYTg5NDkzZWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaApAQCAtNDIsNyArNDIsOCBAQCBjbGFzcyBB
dWRpb0J1ZmZlckNhbGxiYWNrOwogLy8gQXN5bmNBdWRpb0RlY29kZXIgYXN5bmNocm9ub3VzbHkg
ZGVjb2RlcyBhdWRpbyBmaWxlIGRhdGEgZnJvbSBhbiBBcnJheUJ1ZmZlciBpbiBhIHdvcmtlciB0
aHJlYWQuCiAvLyBVcG9uIHN1Y2Nlc3NmdWwgZGVjb2RpbmcsIGEgY29tcGxldGlvbiBjYWxsYmFj
ayB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgZGVjb2RlZCBQQ00gZGF0YSBpbiBhbiBBdWRpb0J1
ZmZlci4KIAotY2xhc3MgQXN5bmNBdWRpb0RlY29kZXIgeworY2xhc3MgQXN5bmNBdWRpb0RlY29k
ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEFzeW5jQXVkaW9EZWNvZGVyKTsKIHB1YmxpYzoKICAgICBBc3luY0F1ZGlvRGVj
b2RlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAppbmRleCBiYThjMjU1YWU3ZDdkYTczYmM5ZmY2
NTU0M2YxZTM3YmM5NTQwNGIzLi4wZmI1NWIwOGYwYzFhMmJlMmQwNzBjNGUwZDhkOGY0NjdlMzQ2
YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcApAQCAtNDAsOCArNDAsOCBAQCBBdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAg
ICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCYXNpY0luc3BlY3Rvcik7Ci0gICAgYWRkSW5wdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgb3V0cHV0Q2hhbm5lbENvdW50KSk7
CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFk
ZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgb3V0cHV0Q2hhbm5lbENv
dW50KSk7CiB9CiAKIC8vIFdlIG92ZXJyaWRlIHB1bGxJbnB1dHMoKSBhcyBhbiBvcHRpbWl6YXRp
b24gYWxsb3dpbmcgdGhpcyBub2RlIHRvIHRha2UgYWR2YW50YWdlIG9mIGluLXBsYWNlIHByb2Nl
c3NpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGJjMTg5YzA4Y2JlZmM3YzE5NjA2NDY2
YzA3NjhiOGZhNjM0YjE2YWIuLjBiOWYxY2VkODc0NWI1ZDk5OGRjMzhkNjM2ZTc5MGFiZmJlNmU5
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCkBAIC00Miw4ICs0Miw4IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiBBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiB7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykp
OwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MSkpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAg
ICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAg
IC8vIFRoZSBzdWJjbGFzcyBtdXN0IGNyZWF0ZSBtX3Byb2Nlc3Nvci4KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcAppbmRleCA0MGFjMzJjNWM1NWMzZDMyZDBlMTRiNmE3ZDIyYjI0NjczOTBmNGJmLi4yNTEw
YzQwYTdmNjEyM2Q0YzdmYzJkNjQwYTkwYjRmMGE5OGU2ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CkBAIC03Myw3ICs3Myw3IEBAIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlCiAgICAgbV9wbGF5YmFj
a1JhdGUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInBsYXliYWNrUmF0ZSIsIDEuMCwg
LU1heFJhdGUsIE1heFJhdGUpOwogCiAgICAgLy8gRGVmYXVsdCB0byBtb25vLiAgQSBjYWxsIHRv
IHNldEJ1ZmZlcigpIHdpbGwgc2V0IHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzIHRvIHRo
YXQgb2YgdGhlIGJ1ZmZlci4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5OTU2YzE1ODYy
MTg5YzcxNDI5Y2JjZmQ2MDA0MmYwMGM5OGJhZWY2Li5kNGNkYjc2NThjMGYzNWI1ZmM5YTIyY2U4
OThiY2IyYjk5ZWU0ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtl
X3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKG1h
a2VVbmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKIHsKICAgICAvLyBBY2NvcmRpbmcg
dG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgog
ICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2
aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0aG9kLgpAQCAtMTY2LDcgKzE2Niw3IEBAIEF1
ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscywgc2l6ZV90CiAjZW5kaWYKICAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0
cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgq
dGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRR
dWV1ZT4oKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8R2VuZXJpY0V2ZW50
UXVldWU+KCp0aGlzKSkKIHsKICAgICBjb25zdHJ1Y3RDb21tb24oKTsKIApAQCAtNDMyLDcgKzQz
Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlCiB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVjb2Rl
QXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0cjxBdWRpb0J1ZmZl
ckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+
JiYgZXJyb3JDYWxsYmFjaykKIHsKICAgICBpZiAoIW1fYXVkaW9EZWNvZGVyKQotICAgICAgICBt
X2F1ZGlvRGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7Cisg
ICAgICAgIG1fYXVkaW9EZWNvZGVyID0gbWFrZVVuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsK
ICAgICBtX2F1ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1w
bGVSYXRlKCksIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNr
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggOTc1ODg3NTQ3NDdlMTUyNDgxODlmNDk3MGM2
ZDMzZTNjNmFlMWUxMS4uZDlhYmI5Nzc3YTlkMjVlZWFmMjQyZmY0ZmZmYzVlYzVlZjQ4NmM0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQXVkaW9EZXN0aW5hdGlvbk5vZGU6
OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmEKICAgICAsIG1fbXV0ZWQoZmFsc2UpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZXN0
aW5hdGlvbik7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsK
IH0KIAogQXVkaW9EZXN0aW5hdGlvbk5vZGU6On5BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNw
cAppbmRleCAxNjM3M2NlOTM3OGQzMjJmZGQ5YzI1M2Y5Yzc2ZDk2M2U2MTNjZDNiLi40YTgyNTVl
NmYwYWYwNzY3MTM4ZTQ2ODk4ZjhiNjM2YWIyZDc1NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCaXF1YWRG
aWx0ZXIpOwogCiAgICAgLy8gSW5pdGlhbGx5IHNldHVwIGFzIGxvd3Bhc3MgZmlsdGVyLgotICAg
IG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxCaXF1YWRQcm9jZXNzb3I+KGNvbnRleHQs
IHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8Qmlx
dWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxzZSk7CiB9CiAKIEJpcXVh
ZEZpbHRlclR5cGUgQmlxdWFkRmlsdGVyTm9kZTo6dHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKaW5kZXggMGU0
ZTM2ODViODJjZTQ3N2VjNGU1ODU0N2YxNmFkOGI3MGZjNzkwNC4uZTg0Yjk4MDM1NjcwZmIxZGNj
MzI3MDk2NjNkMmIzOTA1NTJlNjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtNjIsNyArNjIsNyBAQCBCaXF1YWRQ
cm9jZXNzb3I6On5CaXF1YWRQcm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BL
ZXJuZWw+IEJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiB9CiAKIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpj
aGVja0ZvckRpcnR5Q29lZmZpY2llbnRzKCkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEJpcXVh
ZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVzcG9uc2UoaW50IG5GcmVxdWVuY2llcywgY29uc3Qg
ZmxvYXQqIGZyZXF1ZQogICAgIC8vIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggdGhlIHByb2Nl
c3NpbmcgcnVubmluZyBpbiB0aGUgYXVkaW8KICAgICAvLyB0aHJlYWQgb24gdGhlIG1haW4ga2Vy
bmVscy4KICAgICAKLSAgICBhdXRvIHJlc3BvbnNlS2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxC
aXF1YWREU1BLZXJuZWw+KHRoaXMpOworICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBtYWtlVW5p
cXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiAKICAgICByZXNwb25zZUtlcm5lbC0+Z2V0RnJl
cXVlbmN5UmVzcG9uc2UobkZyZXF1ZW5jaWVzLCBmcmVxdWVuY3lIeiwgbWFnUmVzcG9uc2UsIHBo
YXNlUmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAppbmRleCAyMGI4ZGExOWU1ZjQzOWNmZTU0NTVmMDFk
YzI5MDg3NDQ2YjIzYzA4Li5kZjUwZjI2ODczNjhhYTVjMzI5NTQxNDgxNTA3NzdhMDI5MTczMmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJn
ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmNwcApAQCAtNTksOSArNTksOSBAQCBDaGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5l
bE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bgog
CiAgICAgLy8gQ3JlYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlucHV0cy4KICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkKLSAgICAgICAgYWRkSW5w
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgICAgICBhZGRJ
bnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiAKLSAgICBhZGRPdXRwdXQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRw
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0
aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA0NjM1NDk4YzAzNGM1OTMwYjRlOGYyMjA4
NmUxNGIyYjRiZDI5MTE3Li44MmY2OWEwNGY5OTkyNjFkNThjMTUyYmZjNjAyYTM2NjA5NjA5MWI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxp
dHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bFNwbGl0dGVyTm9kZS5jcHAKQEAgLTUwLDExICs1MCwxMSBAQCBDaGFubmVsU3BsaXR0ZXJOb2Rl
OjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNwbGl0dGVyKTsKIAotICAg
IGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBh
ZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiAKICAgICAvLyBDcmVh
dGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAoYWJsZSB0byBoYW5kbGUgdGhlIG1heGltdW0g
bnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBpbnB1dCkuCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQotICAgICAgICBhZGRPdXRwdXQoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICAgICAgYWRkT3V0cHV0
KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAgICAgCiAgICAgaW5pdGlh
bGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5jcHAKaW5kZXggMjM4MmRhYmNjOWM5OTI3Y2FjMzFkMzI3NWYyMjAzY2M4ZjU4YTA5
My4uZTM2Njc3Y2ZkNzQ1ZThiYmUwMmRhM2RjNGRkN2JhMWYxYTUzZGQ0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC01Miw4
ICs1Miw4IEBAIENvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ29udm9s
dmVyKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRo
aXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIDIpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAK
ICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgogICAgIG1fY2hhbm5l
bENvdW50ID0gMjsKQEAgLTE0Niw3ICsxNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb252b2x2
ZXJOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIqIGJ1ZmZlcikKIAogICAgIC8vIENyZWF0ZSB0
aGUgcmV2ZXJiIHdpdGggdGhlIGdpdmVuIGltcHVsc2UgcmVzcG9uc2UuCiAgICAgYm9vbCB1c2VC
YWNrZ3JvdW5kVGhyZWFkcyA9ICFjb250ZXh0KCkuaXNPZmZsaW5lQ29udGV4dCgpOwotICAgIGF1
dG8gcmV2ZXJiID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmI+KGJ1ZmZlckJ1cy5nZXQoKSwgQXVk
aW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzLCBNYXhGRlRTaXplLCAyLCB1c2VCYWNrZ3Jv
dW5kVGhyZWFkcywgbV9ub3JtYWxpemUpOworICAgIGF1dG8gcmV2ZXJiID0gbWFrZVVuaXF1ZTxS
ZXZlcmI+KGJ1ZmZlckJ1cy5nZXQoKSwgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVz
LCBNYXhGRlRTaXplLCAyLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcywgbV9ub3JtYWxpemUpOwogCiAg
ICAgewogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRoIHByb2Nlc3MoKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAppbmRleCA0MjY1YTAwNzQ5ZWFm
ZmY2YTllMWI5ZDFkZGE2MGQ0ZGI3MDI4YjAzLi44MWJkN2QxOWIyN2U3NDFiNTBmNmY4NGU1MWY3
Y2UyNTU3ODAyYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eU5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGlubGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhECiAgICAg
OiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3Vu
aXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1l
KTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQs
IHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxEZWxh
eU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCmluZGV4IGE3NWJhNmI3YzkyZTc0NDRj
NjU2MDhlOGFlMThmOWQ1MDAwMjZhMDQuLjEwMzY2ZWY2ZWFmYjZjNDRkYjE5MTI3MWE5OTVkOWU2
ZDJhY2JhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIERlbGF5UHJvY2Vzc29yOjp+RGVsYXlQ
cm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IERlbGF5UHJvY2Vz
c29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5
RFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWxheURTUEtlcm5lbD4o
dGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmlu
ZGV4IGFhMGU0YTgwMTE5ZWJlZDlkZDM2OTZiM2ZhMTMwNWRkZjMyYmQwNTIuLjE0MDk2ZDhmMGM1
OTZhNTI5NzE2NjZlZjgyNjdhMDIzZmRiNDRiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAt
NDYsOCArNDYsOCBAQCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JO
b2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcAogewogICAgIHNldE5vZGVUeXBl
KE5vZGVUeXBlRHluYW1pY3NDb21wcmVzc29yKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxz
KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpKTsKIAogICAgIG1fdGhyZXNob2xkID0gQXVkaW9QYXJhbTo6Y3Jl
YXRlKGNvbnRleHQsICJ0aHJlc2hvbGQiLCAtMjQsIC0xMDAsIDApOwogICAgIG1fa25lZSA9IEF1
ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAia25lZSIsIDMwLCAwLCA0MCk7CkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOyAgICAKLSAgICBtX2R5bmFt
aWNzQ29tcHJlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8RHluYW1pY3NDb21wcmVzc29yPihzYW1w
bGVSYXRlKCksIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBtX2R5bmFtaWNz
Q29tcHJlc3NvciA9IG1ha2VVbmlxdWU8RHluYW1pY3NDb21wcmVzc29yPihzYW1wbGVSYXRlKCks
IGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIH0KIAogdm9pZCBEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlOjp1bmluaXRpYWxpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCA2Yzk0YTUyM2MzYjJhMDIxMmIyYTU0YTFhOWM4ZjAyNmJi
ZDFkYjVmLi4yNTdkZjJlY2UyMzM4Y2JjYmFiOWVkMDUxMjMzYzY0YjFjNTdmMjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcApAQCAtNDYsOCArNDYs
OCBAQCBHYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQogCiAgICAgbV9nYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJnYWlu
IiwgMS4wLCAwLjAsIDEuMCk7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJ
bnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuY3BwCmluZGV4IDM4MWFlNzI3OTRmYjBlN2ZlYTYzMzFhYmQzM2IyMGMxNTg0NWZmOWIuLjkx
MmU2ZWIyMzIxNDU2NDNkNmZkYWZiYzExZTk2NzY0YzNkMmY1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LAog
ICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2UpOwogCiAgICAg
Ly8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdlIGRlcGVuZGluZyBvbiB3aGF0
IHRoZSBtZWRpYSBlbGVtZW50IC5zcmMgaXMgc2V0IHRvLgotICAgIGFkZE91dHB1dChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFkZE91dHB1dChtYWtl
VW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwog
fQpAQCAtODksNyArODksNyBAQCB2b2lkIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0
Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyYwogCiAgICAgICAgIGlm
IChzb3VyY2VTYW1wbGVSYXRlICE9IHNhbXBsZVJhdGUoKSkgewogICAgICAgICAgICAgZG91Ymxl
IHNjYWxlRmFjdG9yID0gc291cmNlU2FtcGxlUmF0ZSAvIHNhbXBsZVJhdGUoKTsKLSAgICAgICAg
ICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNdWx0aUNoYW5u
ZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgICAg
IG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBs
ZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIEJ5cGFzcyByZXNhbXBsaW5nLgogICAgICAgICAgICAgbV9tdWx0aUNoYW5u
ZWxSZXNhbXBsZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCA1
YjJhNTAwZGQyOTRkMTA1NThiYzdhMDhjZjc3MTZlNDI2YjVjMmFjLi5lNDNmNTQ0OGJjMjZiODZh
ZjY5M2QwMDk5OTVjNjczNGY2OTU1ZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZQogICAgIGF1ZGlvU291cmNl
UHJvdmlkZXItPnNldENsaWVudCh0aGlzKTsKICAgICAKICAgICAvLyBEZWZhdWx0IHRvIHN0ZXJl
by4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSBmb3JtYXQgb2YgdGhlIE1lZGlh
U3RyZWFtJ3MgYXVkaW8gdHJhY2suCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CkBAIC05Myw3ICs5
Myw3IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmNlCiAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVz
YW1wbGVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKICAgICAgICAgZG91YmxlIHNjYWxlRmFjdG9y
ID0gc291cmNlU2FtcGxlUmF0ZSAvIHNhbXBsZVJhdGU7Ci0gICAgICAgIG1fbXVsdGlDaGFubmVs
UmVzYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxl
RmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBs
ZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJl
ck9mQ2hhbm5lbHMpOwogICAgIH0KIAogICAgIG1fc291cmNlTnVtYmVyT2ZDaGFubmVscyA9IG51
bWJlck9mQ2hhbm5lbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDViNTAyOWJmYmNlNzdhZDViNmMzYzg4MzI2MGRiOWRl
ZmRmNjEwNGIuLmE5OWNlYWFkNmI1YzIxZTA5ZGQyMjUzYzJhY2YzMDQ1NTQ3NTNlN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIE9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgc2V0VHlwZShtX3R5cGUpOwog
CiAgICAgLy8gQW4gb3NjaWxsYXRvciBpcyBhbHdheXMgbW9uby4KLSAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRwdXQo
bWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3Bw
CmluZGV4IGY2NDc0NjllMjM1NWViM2EwYzA5YjNiMDg1MmJmYmVjNmU0OGQyOGQuLjUxYzY5OTE2
ZmZkZTcwZjVlNjgwYWE5MjdjZWZlZjdjYTczMmMzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtNTgsOCArNTgsOCBAQCBQYW5uZXJO
b2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICAvLyBMb2FkIHRoZSBIUlRGIGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5IHNvIHdlIGRvbid0
IGJsb2NrIHRoZSBKYXZhc2NyaXB0IHRocmVhZCB3aGlsZSBjcmVhdGluZyB0aGUgSFJURiBkYXRh
YmFzZS4KICAgICBtX2hydGZEYXRhYmFzZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3Jl
YXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoY29udGV4dC5zYW1wbGVSYXRlKCkp
OwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykp
OwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAg
ICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAg
IC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFubmVsQ291
bnQgPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJp
b2RpY1dhdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuY3BwCmluZGV4IGJiMmEwN2QyMzU0ZWJhZjk0ZDAwNDY1YTRiNDFkODYwNTU1OTk4NmIuLmVj
OWExN2M0ZjU2ZWI5OTY2ZGMxNzYyN2U5MzQwNWJhMWZkNDhjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKQEAgLTE5Miw3ICsxOTIs
NyBAQCB2b2lkIFBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMoY29uc3QgZmxv
YXQqIHJlYWxEYXRhLCBjb25zdCBmbG9hdCogaQogICAgICAgICByZWFsUFswXSA9IDA7CiAKICAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBiYW5kLWxpbWl0ZWQgdGFibGUuCi0gICAgICAgIG1fYmFuZExp
bWl0ZWRUYWJsZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihtX3Bl
cmlvZGljV2F2ZVNpemUpKTsKKyAgICAgICAgbV9iYW5kTGltaXRlZFRhYmxlcy5hcHBlbmQobWFr
ZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVyaW9kaWNXYXZlU2l6ZSkpOwogCiAgICAgICAg
IC8vIEFwcGx5IGFuIGludmVyc2UgRkZUIHRvIGdlbmVyYXRlIHRoZSB0aW1lLWRvbWFpbiB0YWJs
ZSBkYXRhLgogICAgICAgICBmbG9hdCogZGF0YSA9IG1fYmFuZExpbWl0ZWRUYWJsZXNbcmFuZ2VJ
bmRleF0tPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDNiNjI4MWQxZTg0M2VkMjk5Y2Y2MTUzYzczMjc5
NzA3NDE4MDY3NzguLjgwMjM3MzQwN2Y3NWQ0N2UyNTllYjYwNTYzODBmNjM1ZjEzYWNlZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5
c2VyKCkKICAgICAsIG1fbWluRGVjaWJlbHMoRGVmYXVsdE1pbkRlY2liZWxzKQogICAgICwgbV9t
YXhEZWNpYmVscyhEZWZhdWx0TWF4RGVjaWJlbHMpCiB7Ci0gICAgbV9hbmFseXNpc0ZyYW1lID0g
c3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOworICAgIG1fYW5hbHlz
aXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KERlZmF1bHRGRlRTaXplKTsKIH0KIAogUmVh
bHRpbWVBbmFseXNlcjo6flJlYWx0aW1lQW5hbHlzZXIoKSA9IGRlZmF1bHQ7CkBAIC04Myw3ICs4
Myw3IEBAIGJvb2wgUmVhbHRpbWVBbmFseXNlcjo6c2V0RmZ0U2l6ZShzaXplX3Qgc2l6ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fZmZ0U2l6ZSAhPSBzaXplKSB7Ci0gICAg
ICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KHNpemUpOwor
ICAgICAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihzaXplKTsKICAg
ICAgICAgLy8gbV9tYWduaXR1ZGVCdWZmZXIgaGFzIHNpemUgPSBmZnRTaXplIC8gMiBiZWNhdXNl
IGl0IGNvbnRhaW5zIGZsb2F0cyByZWR1Y2VkIGZyb20gY29tcGxleCB2YWx1ZXMgaW4gbV9hbmFs
eXNpc0ZyYW1lLgogICAgICAgICBtX21hZ25pdHVkZUJ1ZmZlci5hbGxvY2F0ZShzaXplIC8gMik7
CiAgICAgICAgIG1fZmZ0U2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCBkNTlkZWNmOTk1
MTZmNmQwMWFmOWMxZDlmZGJmMWQwYjEwMTllNDBmLi5kNWIzYWZiZjI3MTAxNDUxNDk0YjE4OTM3
NzY4YjYwNWY2YTNiNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTY4LDggKzY4LDggQEAgU2NyaXB0
UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUKICAgICBBU1NFUlQobnVtYmVyT2ZJbnB1dENoYW5uZWxzIDw9IEF1
ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKIAogICAgIHNldE5vZGVUeXBlKE5v
ZGVUeXBlSmF2YVNjcmlwdCk7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOworICAgIGFkZElucHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKIAogICAg
IGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCmluZGV4IDQxMGQxZGFmNWM4OTU0MDA5ZmYw
NjM2YTgyOTAwYmY5NGFmNGY4ZjEuLmYzZDIxMjJkZjUxYzRmMWEyOTIyNGU2OTNhYjQ5NWJiYzJi
OTM4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlckRTUEtlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyRFNQS2VybmVsLmNwcApAQCAtNDksMTIgKzQ5LDEyIEBAIHZvaWQgV2F2ZVNoYXBl
ckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcoKQogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdGVtcEJ1ZmZlcikgewotICAgICAgICBtX3RlbXBC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1
bSAqIDIpOwotICAgICAgICBtX3RlbXBCdWZmZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zs
b2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKLSAgICAgICAgbV91cFNhbXBsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSk7Ci0gICAgICAgIG1f
ZG93blNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFu
dHVtICogMik7Ci0gICAgICAgIG1fdXBTYW1wbGVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1w
bGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fZG93blNhbXBsZXIyID0gc3Rk
OjptYWtlX3VuaXF1ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAg
ICBtX3RlbXBCdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVh
bnR1bSAqIDIpOworICAgICAgICBtX3RlbXBCdWZmZXIyID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0
QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKKyAgICAgICAgbV91cFNhbXBsZXIgPSBtYWtl
VW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSk7CisgICAgICAgIG1fZG93blNhbXBs
ZXIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7CisgICAg
ICAgIG1fdXBTYW1wbGVyMiA9IG1ha2VVbmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVt
ICogMik7CisgICAgICAgIG1fZG93blNhbXBsZXIyID0gbWFrZVVuaXF1ZTxEb3duU2FtcGxlcj4o
UmVuZGVyaW5nUXVhbnR1bSAqIDQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAppbmRleCA4NDg2OTkzZjIxMDg0
Y2NjNjFjY2Q4MGIyYzE4N2UwOGMxNTVmZDAxLi42ZTdlOGRkMWM5YzE5ZmEzYzg1ZTNkOWQ4NTVh
YjlmNDU3ODViNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBXYXZlU2hhcGVyTm9kZTo6V2F2
ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQogICAgIDogQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2F2ZVNoYXBlclByb2Nlc3Nvcj4oY29udGV4dC5zYW1wbGVSYXRlKCksIDEpOworICAgIG1f
cHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBs
ZVJhdGUoKSwgMSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCAy
ODljMzlmNWYzZjlmN2E3OWU5YTViNmE2ZDgzMTViNTkxZjQzMmRhLi5iZmU1ZTBlNDdmYjg0YTI4
YzYzYzZlMjhiMzJlMGZjMTFlNWM2N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6fldhdmVTaGFwZXJQcm9jZXNzb3IoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IFdhdmVTaGFwZXJQcm9jZXNzb3I6OmNyZWF0ZUtlcm5l
bCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2F2ZVNoYXBlckRTUEtlcm5lbD4o
dGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2F2ZVNoYXBlckRTUEtlcm5lbD4odGhpcyk7
CiB9CiAKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBj
dXJ2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IGIxYzQ5ZGI1MjNiOTM2YjBhNGVjMjIxMDQx
Yjc3ZGE3Y2MxNDc4ZmQuLjIwZDYwNjk3MjQyODk3Mzc3OTgyYjg0ZWU3M2Q0ZGE2MzRlZDhmYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBzdHJ1Y3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwogdXNpbmcgQ3JlZGVudGlhbFByb21pc2UgPSBET01Q
cm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEJhc2ljQ3JlZGVudGlhbD4+
PjsKIAogY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IpOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xp
ZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvSGlkTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCmluZGV4IDhjM2QxMzQ2YzQwMzBjZmIzZDgyNzczN2EwYTE1
ZjNmMWNiOWJhZDcuLjFiOTEyZDk4ZDlmMDRmMzA3NGExYjhlMWE2MjYwMWE0MmZhZjM1N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVz
c2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRNZXNzYWdlLmNwcApAQCAtMTUwLDkgKzE1MCw5IEBAIEZpZG9IaWRNZXNzYWdlOjpGaWRvSGlk
TWVzc2FnZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kIHR5cGUsIGNv
CiAgICAgdWludDhfdCBzZXF1ZW5jZSA9IDA7CiAKICAgICBzaXplX3QgcG9zID0gZGF0YS5zaXpl
KCkgPiBrSGlkSW5pdFBhY2tldERhdGFTaXplID8ga0hpZEluaXRQYWNrZXREYXRhU2l6ZSA6IGRh
dGEuc2l6ZSgpOwotICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlk
SW5pdFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0
YS5zaXplKCkpKTsKKyAgICBtX3BhY2tldHMuYXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQ
YWNrZXQ+KGNoYW5uZWxJZCwgdHlwZSwgZ2V0SW5pdFBhY2tldERhdGEoZGF0YSksIGRhdGEuc2l6
ZSgpKSk7CiAgICAgZm9yICg7IHBvcyA8IGRhdGEuc2l6ZSgpOyBwb3MgKz0ga0hpZENvbnRpbnVh
dGlvblBhY2tldERhdGFTaXplKQotICAgICAgICBtX3BhY2tldHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSsrLCBn
ZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKKyAgICAgICAgbV9wYWNrZXRz
LmFwcGVuZChtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwg
c2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0RGF0YShkYXRhLCBwb3MpKSk7CiB9CiAK
IEZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZElu
aXRQYWNrZXQ+IGluaXRQYWNrZXQsIHNpemVfdCByZW1haW5pbmdTaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCmlu
ZGV4IDU1YjdiMmQ3MTUzNmEyMzU0OTEzYWUzNmU5ZmI5MWVmMDBhOGYwODMuLjI2YjgwYWE4YTVm
MTM5NjNjNzY4ZTdlOTIzYmJhYWIyYjg3YjVlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBGaWRvSGlkSW5pdFBhY2tl
dDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGMKICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWlu
dDhfdD4oKTsKICAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0
YVNpemUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+
KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNvbW1hbmQsIFdU
Rk1vdmUoZGF0YSksIHBheWxvYWRTaXplKTsKIH0KIAogLy8gVTJGIEluaXRpYWxpemF0aW9uIHBh
Y2tldCBpcyBkZWZpbmVkIGFzOgpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxG
aWRvSGlkQ29udGludWF0aW9uUGFja2V0PiBGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpjcmVh
dGVGcm9tCiAgICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CiAgICAgZGF0YS5hcHBl
bmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2Vx
dWVuY2UsIFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpZG9IaWRDb250
aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UsIFdURk1vdmUoZGF0YSkpOwogfQog
CiAvLyBVMkYgQ29udGludWF0aW9uIHBhY2tldCBpcyBkZWZpbmVkIGFzOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCAwMjE0NWQwY2My
ZThjOWVhZGIwYzg4Mjk0MWI4NTlmYzBhZTgwNTJkLi41YjY0YTA4NzQ2YWY4MDgwY2QyZTcyNTAz
ZmEwMGQzYzk0OWZiMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERh
dGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHJlc3VsdDsKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3lu
Y2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VP
cGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5jaHJvbml6ZXIsIHJl
c3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhXVEZNb3ZlKHRhc2spKTsK
ICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiAKQEAgLTI3Myw3ICsy
NzMsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJh
c2VDbG9zZVRhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIpKTsKKyAgICB0aHJlYWQuc2NoZWR1bGVJ
bW1lZGlhdGVUYXNrKG1ha2VVbmlxdWU8RGF0YWJhc2VDbG9zZVRhc2s+KCp0aGlzLCBzeW5jaHJv
bml6ZXIpKTsKIAogICAgIC8vIEZJWE1FOiBpT1MgZGVwZW5kcyBvbiB0aGlzIGZ1bmN0aW9uIGJs
b2NraW5nIHVudGlsIHRoZSBkYXRhYmFzZSBpcyBjbG9zZWQgYXMgcGFydAogICAgIC8vIG9mIGNs
b3NpbmcgYWxsIG9wZW4gZGF0YWJhc2VzIGZyb20gYSBwcm9jZXNzIGFzc2VydGlvbiBleHBpcmF0
aW9uIGhhbmRsZXIuCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVU
cmFuc2FjdGlvbigpCiAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwogCiAgICAg
YXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25RdWV1ZS50YWtlRmlyc3QoKTsKLSAgICBh
dXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPihXVEZN
b3ZlKHRyYW5zYWN0aW9uKSk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRy
YW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOwogICAgIExPRyhTdG9yYWdlQVBJ
LCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdHJhbnNhY3Rpb24g
JXBcbiIsIHRhc2suZ2V0KCksIHRhc2stPnRyYW5zYWN0aW9uKCkpOwogICAgIGRhdGFiYXNlVGhy
ZWFkKCkuc2NoZWR1bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQpAQCAtNTQxLDcgKzU0MSw3IEBA
IHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKFNRTFRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKIHsKICAgICBhdXRvJiB0aHJlYWQgPSBkYXRhYmFzZVRocmVhZCgpOwogCi0g
ICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4o
JnRyYW5zYWN0aW9uKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrPigmdHJhbnNhY3Rpb24pOwogICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGlu
ZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRyYW5zYWN0aW9uIHN0ZXBcbiIs
IHRhc2suZ2V0KCkpOwogICAgIHRocmVhZC5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9
CkBAIC03NjMsNyArNzYzLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnRhYmxlTmFtZXMo
KQogICAgIGlmICh0aHJlYWQudGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7Cisg
ICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPigqdGhpcywg
c3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2so
V1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwCmluZGV4IDNiYWJkNDk1NjZmMTRhMWIzYzBkM2IxN2JmNGM3ZjMyYzVlM2Q1
ZjcuLmQ2NDk3YzM5N2ZhNDc0Mjg1OWUwNTg2MjIzNmVkZWU0M2Q0ZWYzOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCgpCi0gICAgOiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQorICAgIDogbV90cmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKG1ha2VVbmlxdWU8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcj4oKSkK
IHsKICAgICBtX3NlbGZSZWYgPSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGQ4ZGRjYzU5ODU1
MTU3NmQyYTJjMTBmNDJlNGFkMTJhODI1OWI1MTkuLmMyOGE5NmY0NTgzOWVmNTRkYWYxZjk5YTFh
ZDU4ZDdlY2Q0YTY3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKICAgICBM
b2NrSG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CiAK
ICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQotICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9
IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CisgICAgICAgIG1fb3BlbkRh
dGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKIAogICAgIGF1dG8g
b3JpZ2luID0gZGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKIApAQCAtOTU2LDcgKzk1Niw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGluZ0RhdGFiYXNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjCiAgICAgLy8gV2UgZG9uJ3QgdXNlIEhhc2hNYXA6OmVu
c3VyZSBoZXJlIHRvIGF2b2lkIG1ha2luZyBhbiBpc29sYXRlZCBjb3B5IG9mIHRoZSBvcmlnaW4g
ZXZlcnkgdGltZS4KICAgICBhdXRvKiBuYW1lU2V0ID0gbV9iZWluZ0NyZWF0ZWQuZ2V0KG9yaWdp
bik7CiAgICAgaWYgKCFuYW1lU2V0KSB7Ci0gICAgICAgIGF1dG8gb3duZWRTZXQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hDb3VudGVkU2V0PFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8gb3duZWRT
ZXQgPSBtYWtlVW5pcXVlPEhhc2hDb3VudGVkU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVT
ZXQgPSBvd25lZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0NyZWF0ZWQuYWRkKG9yaWdpbi5p
c29sYXRlZENvcHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KQEAgLTEwMDIsNyArMTAw
Miw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZWNvcmREZWxldGluZ0RhdGFiYXNlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjCiAgICAgLy8gV2UgZG9uJ3QgdXNlIEhhc2hN
YXA6OmVuc3VyZSBoZXJlIHRvIGF2b2lkIG1ha2luZyBhbiBpc29sYXRlZCBjb3B5IG9mIHRoZSBv
cmlnaW4gZXZlcnkgdGltZS4KICAgICBhdXRvKiBuYW1lU2V0ID0gbV9iZWluZ0RlbGV0ZWQuZ2V0
KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lU2V0KSB7Ci0gICAgICAgIGF1dG8gb3duZWRTZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25lZFNl
dCA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgICAgICBuYW1lU2V0ID0gb3du
ZWRTZXQuZ2V0KCk7CiAgICAgICAgIG1fYmVpbmdEZWxldGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRD
b3B5KCksIFdURk1vdmUob3duZWRTZXQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaAppbmRleCA4NWYxYjYzNWMzZTQ5YjNm
ZTFhODFmOTQ4NzgyNDgwZTFkZTQ4ZmI1Li44YTU0YTM2NjdhMDdhYWNlMDNhOTYwZmIyNTY0Zjdl
YmRmM2JkOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgU1FMUmVzdWx0U2V0OwogY2xh
c3MgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOwogCiBjbGFzcyBTUUxTdGF0ZW1lbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNRTFN0YXRlbWVudChEYXRhYmFz
ZSYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTUUxWYWx1ZT4mJiwgUmVmUHRyPFNRTFN0YXRlbWVu
dENhbGxiYWNrPiYmLCBSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4mJiwgaW50IHBl
cm1pc3Npb25zKTsKICAgICB+U1FMU3RhdGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4IDIwZDY5NzM0
Nzc0ZGJmYmYzMGJkOGYzOWNlNGM1OTU3MjE0ZTkwMGMuLjRjYjA0MWU0NTJjODBmNWY1OWJiMjcy
MWVhYjhlYzFhOGY2MTgzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC04Myw3ICs4Myw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsU3Rh
dGVtZW50LCBPcHRpb25hCiAgICAgZWxzZSBpZiAobV9yZWFkT25seSkKICAgICAgICAgcGVybWlz
c2lvbnMgfD0gRGF0YWJhc2VBdXRob3JpemVyOjpSZWFkT25seU1hc2s7CiAKLSAgICBhdXRvIHN0
YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxT
dGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKKyAgICBh
dXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxT
dGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKIAogICAg
IGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkpCiAgICAgICAgIHN0YXRlbWVudC0+c2V0RGF0YWJh
c2VEZWxldGVkRXJyb3IoKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
OjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogICAgIH0KIAogICAgIEFTU0VSVCghbV9z
cWxpdGVUcmFuc2FjdGlvbik7Ci0gICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1f
cmVhZE9ubHkpOworICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRy
YW5zYWN0aW9uPihtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLCBtX3JlYWRPbmx5KTsKIAog
ICAgIG1fZGF0YWJhc2UtPnJlc2V0RGVsZXRlcygpOwogICAgIG1fZGF0YWJhc2UtPmRpc2FibGVB
dXRob3JpemVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZl
ci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2
ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAppbmRleCA3OWFhNTYxODFmZmVmM2FiMWE5MmFhNTdm
ZWNkYjZmYmE1OWU2ZjBiLi4xMjlkODZmZmNmYmQxNTdhODBiMDE5MmUzYjQ5OTcxMzNiZWI3ODA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JX
ZWJEcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmln
YXRvcldlYkRyaXZlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTmF2aWdhdG9yV2ViRHJpdmVyKiBO
YXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2
aWdhdG9yV2ViRHJpdmVyKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yV2ViRHJp
dmVyKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKKyAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JXZWJEcml2ZXI+KCk7CiAgICAg
ICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JH
UFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApp
bmRleCA4OGE5NzgwNDRiYzFlNzA4OTMzNTY1ZGM2MmQwYTMxNDZiMzhiNDI2Li4zNzZkMTU1Y2E5
YjJmNWQyYTRhYjE4NTJjNzc2ZDljMThmMmU1MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgTmF2aWdhdG9y
R1BVKiBOYXZpZ2F0b3JHUFU6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2
aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yR1BVKj4oU3VwcGxl
bWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
bWFrZVVuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBw
bGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFt
ZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oCmluZGV4IDFiMzQyNTA0ZDY5NTUwOGYwODE2Y2NiNTU4MmY1YmQ5
YWE3NjFhNmIuLjVmNTdlZjExNzc1MzFhMGFjM2Q5NjBkZWIxZDQzODcxMWE0ZjA1YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNs
YXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewogCiAg
ICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1iZXImJiBtZW1iZXIpCiAgICAgewotICAgICAgICBh
dXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUoKSwgc3RkOjptYWtlX3VuaXF1
ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBtYWtlVW5pcXVlPEVudW1lcmF0aW9u
TWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5pc05ld0Vu
dHJ5OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgK
aW5kZXggMGUzMWZmYmRlMGIxNDg2ZjZjNmY2NWUyMGViNjM4YWU4ODFiODdmOC4uY2JjYzQ4NGI2
ODI1MGMwYWEwOWI1OTk0M2FkYzc5ZTgxMDA5Mjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVu
dHJ5UG9pbnRTY2FmZm9sZGluZy5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBNZXRhbCB7
CiBjbGFzcyBUeXBlTmFtZXI7CiAKIGNsYXNzIEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RW50cnlQb2lu
dFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIu
Y3BwCmluZGV4IGNhMzQ2ZTMyYjI5OWExMGNlZDI1NjVkMDFkODU0NTNiZDgwZDE0NzQuLjQ3YjA2
MGE3YzVhYWZjMzJlODg4NzVmZmM0YWY4OTg5Njg5NjI1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwCkBAIC03NjQsOSArNzY0LDkgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
UG9pbnRTY2FmZm9sZGluZz4gUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVF
bnQKICAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAg
IH07CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnZl
cnRleFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVydGV4RW50cnlQ
b2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBl
TmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1f
bWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRW
ZXJ0ZXhBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVydGV4RW50cnlQ
b2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBl
TmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1f
bWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRW
ZXJ0ZXhBdHRyaWJ1dGVzKTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNo
ZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1f
aW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRl
ckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyUmVzb3Vy
Y2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1fbWF0
Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRp
b24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVu
dFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVy
UmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSks
IG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKQEAgLTc5MCw3ICs3OTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQ
b2ludFNjYWZmb2xkaW5nPiBDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVF
bgogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAg
fTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3Muc2hh
ZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21wdXRlRW50cnlQb2ludFNj
YWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIs
IG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5y
ZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc+
KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVk
U2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnJlc291cmNlTWFw
LCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCmluZGV4IDE4NWJhMGIwODhh
NWNlZDRjNWI2NjM2ZmE5NDQyYzAwMzQwZGQwMmEuLjQwYjYyYzM3ZGJlMjU4MGUyM2Q1OTBjMDkx
ZWJiNDE3Y2E5YjgwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKQEAgLTI3MiwxOSArMjcy
LDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxCYXNlVHlwZU5hbWVOb2RlPiBUeXBlTmFtZXI6OmNyZWF0
ZU5hbWVOb2RlKEFTVDo6VW5uYW1lZFR5cGUmIHVuCiAgICAgc3dpdGNoICh1bm5hbWVkVHlwZS5r
aW5kKCkpIHsKICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVSZWZlcmVuY2U6
IHsKICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6VHlwZVJlZmVy
ZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWZl
cmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgdHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlZmVy
ZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVm
ZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpQb2ludGVyOiB7CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8
QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1l
KCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UG9pbnRlclR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBw
b2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSk7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVk
VHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgYXJyYXlSZWZlcmVu
Y2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5v
ZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlSZWZlcmVuY2VUeXBlLmFk
ZHJlc3NTcGFjZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlSZWZlcmVuY2VU
eXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlSZWZlcmVu
Y2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpBcnJheTogewogICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBU1Q6
OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJh
eVR5cGUubnVtRWxlbWVudHMoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEFycmF5VHlw
ZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5VHlwZS5udW1F
bGVtZW50cygpKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrZXIuY3BwCmluZGV4IDMzM2JkZjYyYzAyOTg2NmE3NDlhM2M2MTJlNWU0
ZGJhMTZiMjZhN2UuLmJkZWQ1M2UxOGFmYzhhNDgxNzU4MWZhM2FkYzIyNzg1NmViZDQ4OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcApAQCAtOTY2LDE0ICs5NjYsMTQgQEAgdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCiAKIHZvaWQgQ2hlY2tlcjo6
YXNzaWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmPEFTVDo6
VW5uYW1lZFR5cGU+IHVubmFtZWRUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0
aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVN
YXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1v
dmUodW5uYW1lZFR5cGUpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZl
eHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUodW5uYW1lZFR5cGUp
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
ICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24p
KTsKIH0KIAogdm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVz
c2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiByZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1
ZSgpKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwg
c3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlKSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lv
biwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CiAgICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0
aW9uKSk7CiB9CkBAIC05ODEsMTAgKzk4MSwxMCBAQCB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUo
QVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcgog
dm9pZCBDaGVja2VyOjpmb3J3YXJkVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJl
c29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90
YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKICAgICByZXNvbHZpbmdUeXBlLnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmVzdWx0KSB7Ci0gICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtl
X3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZp
bmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlw
ZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVz
dWx0LmNvcHlSZWYoKSkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQo
JmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkp
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwogICAgIH0pKTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlw
ZUFubm90YXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmNwcAppbmRleCA3Y2FiNmM5NWVjMzU2ZTc2YWM1ZmM0ZjcwMmJkY2Mx
ZWFjYzlmODcwLi5lNjhlNDg2ZTc4NWI0Y2M3ZTczYTRiMWQ4NDc3ODg4NTAxZWU5MmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIu
Y3BwCkBAIC03NDAsMTkgKzc0MCwxOSBAQCBhdXRvIFBhcnNlcjo6cGFyc2VTZW1hbnRpYygpIC0+
IEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+CiAgICAgc3dp
dGNoICh0b2tlbi0+dHlwZSkgewogICAgIGNhc2UgVG9rZW46OlR5cGU6OkF0dHJpYnV0ZTogewog
ICAgICAgICBQQVJTRShyZXN1bHQsIFN0YWdlSW5PdXRTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVy
biB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsK
KyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1
bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpTcGVjaWFsaXplZDogIHsKICAg
ICAgICAgUEFSU0UocmVzdWx0LCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAg
ICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJl
c3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RG
TW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UmVnaXN0ZXI6
ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgUmVzb3VyY2VTZW1hbnRpYyk7Ci0gICAgICAgIHJl
dHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkg
fTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpy
ZXN1bHQpKSB9OwogICAgIH0KICAgICBkZWZhdWx0OiAgewogICAgICAgICBQQVJTRShyZXN1bHQs
IEJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNU
OjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVu
aXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJl
c29sdmluZ1R5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVzb2x2aW5nVHlwZS5oCmluZGV4IDU1OWNlOGJhOTNiMjlkNTE3ZmE3NzNmNmE1ZjUyN2RkZjRh
ODViMDEuLjQ1NzAwY2VkOGZkMzQ0OWM0ZGE0OTU5ZjcxYTQwMmFhMDJkNmU0M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2
aW5nVHlwZS5oCkBAIC03NCw2ICs3NCw3IEBAIGNsYXNzIFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHsKIC8vIEl0IGV4
aXN0cyBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRoYXQgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZG9l
cyB0aGUgcmlnaHQgdGhpbmcuCiAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5ODE1OCBUaGlzIHdyYXBwZXIgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4K
IGNsYXNzIFJlc29sdmluZ1R5cGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFJlc29sdmluZ1R5cGUoKQogICAgICAgICA6IG1faW5uZXIoUmVmUHRyPFJlc29s
dmFibGVUeXBlUmVmZXJlbmNlPigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKaW5kZXggYmY5MGY2YzM2MDU0OGQ1MmM4ZmQ4
ZWVlYzc1M2M3OGQ4ZmE5YmYxYy4uZDk1MjIzMDVhZGExZWU5NzFmMTY1MjhkZTA2NjA0YmI2YTk2
YjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJO
YXZpZ2F0b3JHUFUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdvcmtlck5hdmlnYXRvckdQVSogV29y
a2VyTmF2aWdhdG9yR1BVOjpmcm9tKFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAg
IFdvcmtlck5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlck5hdmln
YXRvckdQVSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JHUFU+KCk7Cisg
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyTmF2aWdhdG9yR1BV
PigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVt
ZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyLmNwcAppbmRleCBlZDVhM2NjODM0ZmUxOWQ0ODg4Yjg1NTUwNGJhMTU1ZDQ4M2Zj
NDA3Li5jMWJhYzg2ZDNhYjJiMGQ5MTNmY2U3NDIxNDMxYTk0NDU5ZWVkMmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtMTUz
LDcgKzE1Myw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpjbGVhckNsaWVudCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpkaWRDb25uZWN0KCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGll
bnQtPmRpZENvbm5lY3QoKTsKICAgICB9KSk7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QoKQogCiB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHko
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKICAgICB9KSk7
CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWUKIAogdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRh
KFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmlu
YXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYmluYXJ5RGF0YSA9IFdURk1v
dmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5
RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9KSk7CkBAIC0xODYsNyArMTg2LDcgQEAg
dm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVC
aW5hcnlEYXRhKFZlY3Rvcjx1aW50OF8KIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGJ1ZmZlcmVk
QW1vdW50KQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAg
ICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJlZEFt
b3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkK
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChidWZmZXJlZEFt
b3VudCk7CiAgICAgfSkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25l
ZCBiCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRT
dGFydENsb3NpbmdIYW5kc2hha2UoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiAgICAgfSkpOwpAQCAtMjA4LDcgKzIw
OCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRT
dGFydENsb3NpbmdIYW5kc2hha2UoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQs
IFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVz
IGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBT
dHJpbmcmIHJlYXNvbikKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlx
dWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7CiAgICAgICAgIH0pKTsKQEAgLTIx
OSw3ICsyMTksNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZQogCiB2b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiB7
Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1h
a2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZUVy
cm9yKCk7CiAgICAgfSkpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIAogdm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZ3JhZGVVUkwo
KQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAg
ICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkVXBncmFkZVVSTCgp
OwogICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2MDcxNDQwOTI0ZmIyY2U2N2Y1MzQwNjJkNzll
OGUzYjA0ZWUxYzUwLi5hMDdhODc2M2FmYjk2OWI0MjA3MGJjNDlhODYyMzliNzgzZDZlYmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFdlYlNvY2tldENoYW5uZWw6OkNvbm5lY3RT
dGF0dXMgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwmIHJlcXVlc3RlZFVSCiAg
ICAgbV9hbGxvd0Nvb2tpZXMgPSB2YWxpZGF0ZWRVUkwtPmFyZUNvb2tpZXNBbGxvd2VkOwogICAg
IFN0cmluZyB1c2VyQWdlbnQgPSBtX2RvY3VtZW50LT51c2VyQWdlbnQobV9kb2N1bWVudC0+dXJs
KCkpOwogICAgIFN0cmluZyBjbGllbnRPcmlnaW4gPSBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLnRvU3RyaW5nKCk7Ci0gICAgbV9oYW5kc2hha2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNv
Y2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2VyQWdlbnQsIGNs
aWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOworICAgIG1faGFuZHNoYWtlID0gbWFrZVVuaXF1
ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJsLCBwcm90b2NvbCwgdXNlckFn
ZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29raWVzKTsKICAgICBtX2hhbmRzaGFrZS0+cmVz
ZXQoKTsKICAgICBpZiAobV9kZWZsYXRlRnJhbWVyLmNhbkRlZmxhdGUoKSkKICAgICAgICAgbV9o
YW5kc2hha2UtPmFkZEV4dGVuc2lvblByb2Nlc3NvcihtX2RlZmxhdGVGcmFtZXIuY3JlYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKCkpOwpAQCAtNzAzLDcgKzcwMyw3IEBAIGJvb2wgV2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRG
cmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFt
ZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtl
VW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlVGV4dDsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBlU3Ry
aW5nOwogICAgIGZyYW1lLT5zdHJpbmdEYXRhID0gc3RyaW5nOwpAQCAtNzEzLDcgKzcxMyw3IEBA
IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBz
dHJpbmcpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJh
bWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZy
YW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAg
IGZyYW1lLT5vcENvZGUgPSBvcENvZGU7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZy
YW1lVHlwZVZlY3RvcjsKICAgICBmcmFtZS0+dmVjdG9yRGF0YS5yZXNpemUoZGF0YUxlbmd0aCk7
CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIKIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29k
ZSwgQmxvYiYgYmxvYikKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMg
PT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVk
RnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVU
eXBlID0gUXVldWVkRnJhbWVUeXBlQmxvYjsKICAgICBmcmFtZS0+YmxvYkRhdGEgPSAmYmxvYjsK
QEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2lu
Z0ZyYW1lUXVldWUoKQogICAgICAgICAgICAgICAgIHJlZigpOyAvLyBXaWxsIGJlIGRlcmVmZWQg
YWZ0ZXIgZGlkRmluaXNoTG9hZGluZygpIG9yIGRpZEZhaWwoKS4KICAgICAgICAgICAgICAgICBB
U1NFUlQoIW1fYmxvYkxvYWRlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGZyYW1lLT5ibG9i
RGF0YSk7Ci0gICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhp
cyk7CisgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVy
TG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhpcyk7CiAgICAg
ICAgICAgICAgICAgbV9ibG9iTG9hZGVyU3RhdHVzID0gQmxvYkxvYWRlclN0YXJ0ZWQ7CiAgICAg
ICAgICAgICAgICAgbV9ibG9iTG9hZGVyLT5zdGFydChtX2RvY3VtZW50LmdldCgpLCAqZnJhbWUt
PmJsb2JEYXRhKTsKICAgICAgICAgICAgICAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5wcmVwZW5k
KFdURk1vdmUoZnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAppbmRleCBmMmZhNjIwOWMw
NDhmNTE1MThhMjVlZWMxM2FlZjI1NjRjOWY0ZTdiLi5lZTMzZWEwZmU1Y2YxZDViZjc5YTJkYTA2
NzA3YjczY2QzYTc4YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCkBAIC0xNTUsNyArMTU1
LDcgQEAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IFdlYlNvY2tldERl
ZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMp
OwogfQogCiBib29sIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUoKSBjb25zdApA
QCAtMTcwLDggKzE3MCw4IEBAIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0
ZSgpIGNvbnN0CiAjaWYgVVNFKFpMSUIpCiB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVu
YWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0VGFr
ZU92ZXJNb2RlIG1vZGUpCiB7Ci0gICAgbV9kZWZsYXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
U29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOwotICAgIG1faW5mbGF0ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOworICAgIG1fZGVmbGF0ZXIgPSBtYWtl
VW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2luZmxh
dGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4oKTsKICAgICBpZiAoIW1fZGVmbGF0
ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5pdGlhbGl6ZSgpKSB7CiAgICAgICAg
IG1fZGVmbGF0ZXIgPSBudWxscHRyOwogICAgICAgICBtX2luZmxhdGVyID0gbnVsbHB0cjsKQEAg
LTE4NCw3ICsxODQsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxh
dGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDbwogc3RkOjp1bmlxdWVfcHRy
PERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUoV2Vi
U29ja2V0RnJhbWUmIGZyYW1lKQogewogI2lmIFVTRShaTElCKQotICAgIGF1dG8gcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CiAgICAgaWYgKCFl
bmFibGVkKCkgfHwgIVdlYlNvY2tldEZyYW1lOjppc05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BD
b2RlKSB8fCAhZnJhbWUucGF5bG9hZExlbmd0aCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICBpZiAoIW1fZGVmbGF0ZXItPmFkZEJ5dGVzKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRM
ZW5ndGgpIHx8ICFtX2RlZmxhdGVyLT5maW5pc2goKSkgewpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjpkZWZsYXRlKFdlYlNvY2tldEZyCiAgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9IG1fZGVmbGF0
ZXItPnNpemUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICNlbmRpZgogfQogCkBAIC0yMTAsNyAr
MjEwLDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxhdGVDb250ZXh0
KCkKIAogc3RkOjp1bmlxdWVfcHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxh
dGVGcmFtZXI6OmluZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CiAgICAg
aWYgKCFlbmFibGVkKCkgJiYgZnJhbWUuY29tcHJlc3MpIHsKICAgICAgICAgcmVzdWx0LT5mYWls
KCJDb21wcmVzc2VkIGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRlZCBkZWZsYXRlLWZyYW1l
IGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKaW5kZXgg
MWQ2ZjE3ODIyYzgwNTI4MWI3MGE0MTYyMGRjZGVlNmFkMmFiODg5Yy4uNGE0ODY1Zjg0OTRkMDYx
M2VhYzMyMWE1OTRmOGJhZTE5OTk2YmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIFdlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcihpbnQgd2luZG93Qml0cywg
Q29udGV4dFRha2VPdmVyTW9kZSBjb250ZXh0CiB7CiAgICAgQVNTRVJUKG1fd2luZG93Qml0cyA+
PSA4KTsKICAgICBBU1NFUlQobV93aW5kb3dCaXRzIDw9IDE1KTsKLSAgICBtX3N0cmVhbSA9IHN0
ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAgICBtZW1zZXQobV9zdHJlYW0uZ2V0
KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBX
ZWJTb2NrZXREZWZsYXRlcjo6cmVzZXQoKQogV2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldElu
ZmxhdGVyKGludCB3aW5kb3dCaXRzKQogICAgIDogbV93aW5kb3dCaXRzKHdpbmRvd0JpdHMpCiB7
Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3RyZWFtPigpOworICAgIG1fc3Ry
ZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8el9zdHJlYW0+KCk7CiAgICAg
bWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTk0MDczZWFhNWU4YjIz
MGQxYzhiMDBjMTZjNTk2NDNlOTc4NDI2OC4uZGM2ZjY2MGZkMzg4Y2VmZmFmMGViZWY2ZTY2MGU2
YjY5NWJiNjMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXQKIAogICAgIGJvb2wg
c2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoewog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKLSAgICAg
ICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgJmxvYWRlclByb3h5
LCBwZWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwg
bG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBbY2xpZW50V3Jh
cHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJveHksIHBlZXIgPSBtYWtl
VW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigpLCBsb2FkZXJQcm94eSwgY29udGV4
dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgICAgIGlmIChjbGllbnRXcmFw
cGVyLT5mYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKSkgewogICAgICAgICAgICAgICAg
IC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFybGllciwgd2UgbmVlZCB0byBr
aWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBwZWVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcAppbmRleCBkOTdiNWMyYTg1
YTlkMjMyOGY5ODQwZjQ0ZDNkMWU5NjMyYzgyZDllLi43NzZjNDNhZWMwYjliNWJkZWFkYzNkZDg5
MTI2YWNlZDZiYTc1MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZy
L05hdmlnYXRvcldlYlZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05h
dmlnYXRvcldlYlZSLmNwcApAQCAtOTQsNyArOTQsNyBAQCBOYXZpZ2F0b3JXZWJWUiogTmF2aWdh
dG9yV2ViVlI6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yV2Vi
VlIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJWUio+KFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAo
IXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wu
Y3BwCmluZGV4IGJjMjNkNTljYzMxMjM3YjE0OTdhNzZhY2M1OWQzZWFmNWQyYjU4NDAuLjZjYTY3
ZjM5MWEzMWZjZDM4NjkyNTViMjFmMmZjYjdmM2ZiZjliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVu
U1NMLmNwcApAQCAtNzksNyArNzksNyBAQCBzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dEltcGwg
OiBwdWJsaWMgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw+KCk7CiAgICAgfQogCiAgICAg
Q3J5cHRvRGlnZXN0Q29udGV4dEltcGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lz
dGVtL0Nsb2NrR2VuZXJpYy5jcHAKaW5kZXggMzE1MzE2ODA4MDdiNzJkNWVmOTM4MDkxNGU3YWUy
NDBhZDlkMDM5Ny4uZTUzZTE5NWIzNWY0OThmNzk1MjUxNTFlYmMyYWNlYjVmYWZjZDI5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBQQUwgewogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IENs
b2NrOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENsb2NrR2VuZXJp
Yz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7CiB9CiAKIENsb2Nr
R2VuZXJpYzo6Q2xvY2tHZW5lcmljKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0v
bWFjL0Nsb2NrQ00ubW0KaW5kZXggYzY4OTMyMTVmMDZiMGM2NzRkNTQ2MDgzM2IxYTRkNTFjYzMy
YjYxNC4uOWUwNzFiNzgxNGU0NGZlMDA0NDJlNjZjNzIwYjJiZmIzMTMwNjlhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0KQEAgLTM5LDcgKzM5LDcg
QEAgc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9IDEwMDA7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxDbG9jaz4gQ2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2xvY2tDTT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDbG9ja0NNPigpOwog
fQogCiBDbG9ja0NNOjpDbG9ja0NNKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGNhY2FiODU2OGM4NjExMmQ5Y2RmZWZjMzA5MDI2YWQ5
YzgxNTMzZTUuLmIzNWZjMTU2NDM3ZjFjYTA5ZDY0MjJiZDU5YzcxMzNmYWMyYzYwYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTU3
NSw3ICsxNTc1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RhcnRDYWNoaW5nQ29t
cHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcygpCiB7CiAgICAgaWYgKCFtX2Nv
bXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUpCi0gICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRy
aWJ1dGVDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNh
Y2hlPigpOworICAgICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUgPSBtYWtlVW5p
cXVlPEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsKIH0KIAogdm9pZCBBWE9iamVj
dENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGVkZmRiYjBhMDZmZDZlZGEyNTA0
OGI5NzE5YjllZjFiYTllMTM0NDMuLmU2ZGVhOTYxMWY5YjQ4ODBhNWExOWI5YWQxZTFiZGU3MWMx
ODQ3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC03
NzcsNyArNzc3LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlk
U2VlayBkaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90aWZ5IHN5bmMKICAgICAgICAgICAgIC8vIE90
aGVyd2lzZSwgaWYgc3luY2hyb25vdXNseSBub3RpZnkgaXMgZmFsc2UsIHF1ZXVlIGEgbWljcm90
YXNrIHRvIHJ1biBmaW5pc2ggbm90aWZpY2F0aW9uIHN0ZXBzIGZvciBhbmltYXRpb24gdW5sZXNz
IHRoZXJlCiAgICAgICAgICAgICAvLyBpcyBhbHJlYWR5IGEgbWljcm90YXNrIHF1ZXVlZCB0byBy
dW4gdGhvc2Ugc3RlcHMgZm9yIGFuaW1hdGlvbi4KICAgICAgICAgICAgIG1fZmluaXNoTm90aWZp
Y2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIE1pY3JvdGFz
a1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWlj
cm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSB7CisgICAg
ICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlx
dWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
KCkgewogICAgICAgICAgICAgICAgIGlmIChtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90
YXNrUGVuZGluZykgewogICAgICAgICAgICAgICAgICAgICBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0
ZXBzTWljcm90YXNrUGVuZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBmaW5pc2hO
b3RpZmljYXRpb25TdGVwcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NUHJvbWlzZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9t
aXNlUHJveHkuaAppbmRleCA3ZGE0NmE2MTUwNGVmMjQ4MTVhNjk0ZGZiYTEyYzI4YjFlZjRmZTY2
Li42MjFiODkwNTFiYjQ4ZGIwMzAxZWE4MDQ3YzdhZmVmZmI2OGNkZTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaApAQCAtNjAsNiArNjAsNyBAQCBj
bGFzcyBET01Qcm9taXNlUHJveHkgewogCiB0ZW1wbGF0ZTw+CiBjbGFzcyBET01Qcm9taXNlUHJv
eHk8SURMVm9pZD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IERPTVByb21pc2VQcm94eSgpID0gZGVmYXVsdDsKICAgICB+RE9NUHJvbWlzZVByb3h5KCkgPSBk
ZWZhdWx0OwpAQCAtODQsNiArODUsNyBAQCBjbGFzcyBET01Qcm9taXNlUHJveHk8SURMVm9pZD4g
ewogLy8gRm9udEZhY2UgYW5kIEZvbnRGYWNlU2V0LgogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4KIGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2sgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlc29sdmVDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSAoKT47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGRi
MGMxZGM3NmY4YTI4OTcwNDVlZTJjZmM5MTkyM2Q1OGRmMWI2ZjkuLmM1YzQ3MDYxYmZhY2ExZmNh
NzI4YmUyN2IwYTJiNGE5ZjBiMzAyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSlNET01XaW5k
b3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8
SlNDOjpNaWNyCiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3Jv
dGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAgYXV0
byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
PihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWlj
cm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXgg
NjI5NWY1ODRjZmU4YTE3MjlkZGY2YjE4ZDc3NTQ5ZmQ0NGM5YTBiZS4uZGI1ZTc3MzQ5MGJlZGZi
ZjNlMGMxMGNmMjNkMGEzNmM4YTNiZGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCBFdmVu
dFRhcmdldCogSlNFdmVudFRhcmdldDo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkK
IHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3Qo
Vk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNE
eW5hbWljQ2FzdDxKU0V2ZW50VGFyZ2V0Kj4odm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQo
KSwgKnRhcmdldCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFw
cGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9
IHRvSlNET01XaW5kb3codm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ct
PndyYXBwZWQoKSwgKndpbmRvdyk7CiAgICAgaWYgKGF1dG8qIHNjb3BlID0gdG9KU1dvcmtlckds
b2JhbFNjb3BlKHZtLCB0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVk
KCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBk
ODMxNjA0Y2JhZWI4N2YwN2QxMmVhZGRhNGJmMDUzMWE3MGJiNDAyLi45YmQ2NjQ0NjAxNzA1NDk1
YTk0ZTdiM2ZhZGYwNDhmM2M3YjA0M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0xMzUsNyArMTM1LDcg
QEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNH
bG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3Jv
dGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0
byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNy
b3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxs
KCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDFkMDA1NGMyODkyZDUwMTNkZjI2YWJmZmEzZTFj
MmY2N2RlZTQ4MTkuLmEzNTM3ODU1ZTdhN2Q0ZmQyYmQyYzRjODhiN2ZhN2I2Mjk1NTRiYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcApAQCAtMzMwMCw3ICszMzAwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmUKICAg
ICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBhdXRvIGNvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+KGFycmF5QnVmZmVycy5zaXplKCkpOworICAgIGF1dG8gY29udGVudHMgPSBtYWtlVW5p
cXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CiAKICAg
ICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOwogICAgIGZvciAoc2l6ZV90IGFy
cmF5QnVmZmVySW5kZXggPSAwOyBhcnJheUJ1ZmZlckluZGV4IDwgYXJyYXlCdWZmZXJzLnNpemUo
KTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7CkBAIC0zNDUxLDcgKzM0NTEsNyBAQCBFeGNlcHRpb25P
cjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoRXhlY1N0YXRlJgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJy
YXkgd2FzbU1vZHVsZXM7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXk+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5PigpOwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZzdGF0
ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFnZUJpdG1hcHMsCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICB3YXNtTW9kdWxlcywgCkBAIC0zNDY5LDcgKzM0
NjksNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5
QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJp
YWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZl
cnMpIDogbnVsbHB0ciwgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQotICAgICAgICAgICAgICAgICwgc3RkOjptYWtlX3VuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+
KHdhc21Nb2R1bGVzKQorICAgICAgICAgICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJy
YXk+KHdhc21Nb2R1bGVzKQogI2VuZGlmCiAgICAgICAgICAgICAgICAgKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4
IDVjNDY2Mjk0YmVlNTZjMjFiZjBmNjNkMTViMGY4ZGYwZjI3YTNhMGUuLjRmNGIwY2YzYjdlZWNk
ZGQwNzg3MDI1NTIwODg5NWU0NWZhMmEwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKGFy
cmF5TGVuZ3RoKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CisgICAgYXV0byBhcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4o
KTsKICAgICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkgewogICAgICAgICB1bnNpZ25lZCBidWZmZXJT
aXplOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAppbmRleCAy
NDZmNjRhOWY2MzIyYjU4NzBjYmI2ODJlZGIyZDRlZGI5NTNlYzdjLi4zYjExMjUyYWU2NGNhZjJl
NGZlNzM5ZTMxZWUxMDk5NTRkNTZhNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEpT
Vk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtKQogICAgIEpTVk1DbGllbnREYXRh
KiBjbGllbnREYXRhID0gbmV3IEpTVk1DbGllbnREYXRhKCp2bSk7CiAgICAgdm0tPmNsaWVudERh
dGEgPSBjbGllbnREYXRhOyAvLyB+Vk0gZGVsZXRlcyB0aGlzIHBvaW50ZXIuCiAgICAgCi0gICAg
dm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFpbnQoc3RkOjptYWtlX3VuaXF1ZTxET01HQ091dHB1
dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERhdGEpKTsKKyAgICB2bS0+aGVhcC5hZGRNYXJraW5n
Q29uc3RyYWludChtYWtlVW5pcXVlPERPTUdDT3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50
RGF0YSkpOwogICAgICAgICAKICAgICBjbGllbnREYXRhLT5tX25vcm1hbFdvcmxkID0gRE9NV3Jh
cHBlcldvcmxkOjpjcmVhdGUoKnZtLCB0cnVlKTsKICAgICB2bS0+bV90eXBlZEFycmF5Q29udHJv
bGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDE2YTc2YzQ5NTI5YTRiYjg3MWNiNjZjYTNhZDc1YTJkNzZhODA2NTUuLmQyMzk4
NTdhYTNiZGRlOWZlYjljYjg3NDBmY2Y1ZDY0OWUzNTBkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjEs
NyArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAg
ICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2Jh
bFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVD
bGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmluZGV4IDI5YzgxODY4MzZlYTA1NDExZThmMWVkNjQx
YzA1NzBjZTgxNzY4MTUuLmFhNTZlMmZkZTg1NTc3YWNmOWMwNDc0Yzg5ODc3ZjRlMGQ1YzUxMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCkBAIC04MSw3ICs4MSw3IEBAIE1ldGhv
ZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0
LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9pc2EtPmhhc01ldGhvZCAmJiBtX2lzYS0+aGFzTWV0
aG9kKG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gbWV0aG9kID0gc3RkOjptYWtlX3VuaXF1
ZTxDTWV0aG9kPihpZGVudCk7CisgICAgICAgIGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxDTWV0
aG9kPihpZGVudCk7CiAgICAgICAgIENNZXRob2QqIHJldCA9IG1ldGhvZC5nZXQoKTsKICAgICAg
ICAgbV9tZXRob2RzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAgICAg
cmV0dXJuIHJldDsKQEAgLTEwMyw3ICsxMDMsNyBAQCBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVk
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAg
ICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihp
bnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlm
IChtX2lzYS0+aGFzUHJvcGVydHkgJiYgbV9pc2EtPmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKSB7
Ci0gICAgICAgIGF1dG8gZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPENGaWVsZD4oaWRlbnQpOwor
ICAgICAgICBhdXRvIGZpZWxkID0gbWFrZVVuaXF1ZTxDRmllbGQ+KGlkZW50KTsKICAgICAgICAg
Q0ZpZWxkKiByZXQgPSBmaWVsZC5nZXQoKTsKICAgICAgICAgbV9maWVsZHMuc2V0KG5hbWUuaW1w
bCgpLCBXVEZNb3ZlKGZpZWxkKSk7CiAgICAgICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBmMmY2MjA4MmE4MDhhMTlmMTBhNWQ5MzVkOTIyYjc3
M2MxMjIxYzI4Li4wNGNkZGNkMjRjYWE4MjljMzJlNTZlYzI3M2FmYmQzNTFmMjU0ZTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3Mg
Um9vdE9iamVjdDsKIGNsYXNzIFJ1bnRpbWVPYmplY3Q7CiAKIGNsYXNzIEZpZWxkIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFs
dWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0
YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2NsYXNzLm1tCmluZGV4IGI4NmY3NTFhMGE3MTM4YmUwMDc3NmE3OGNiYzJhNmQ0NWRkMzc1MDIu
LmEzZDhkMzJmMjhkZDgwNThhNGFiNDQyNzM5NTM0NDA3NGYyNmM3NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIE1ldGhvZCog
T2JqY0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSopIGNvbnN0CiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2Ny
aXB0TmFtZUZvclNlbGVjdG9yOm9iamNNZXRob2RTZWxlY3Rvcl07CiAKICAgICAgICAgICAgIGlm
ICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyop
bWV0aG9kTmFtZS5nZXQoKV0pIHx8ICFzdHJjbXAob2JqY01ldGhvZFNlbGVjdG9yTmFtZSwgYnVm
ZmVyLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpOworICAgICAg
ICAgICAgICAgIGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3Ms
IG9iamNNZXRob2RTZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgbWV0aG9kUHRyID0gbWV0aG9k
LmdldCgpOwogICAgICAgICAgICAgICAgIG1fbWV0aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBX
VEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTg5LDcgKzE4OSw3
IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9
IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktleTpVVEY4S2V5TmFtZV07CiAKICAgICAgICAg
ICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0
cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8IFtrZXlOYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5T
U3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgewotICAgICAgICAgICAgICAgIGF1dG8gbmV3Rmll
bGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtl
eU5hbWUpOworICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNG
aWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleU5hbWUpOwogICAgICAgICAgICAgICAgIGZp
ZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChu
YW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVsZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjIwLDcgKzIyMCw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAg
ICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JLZXk6b2JqY0l2
YXJOYW1lXTsKIAogICAgICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFt
ZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8ICFzdHJj
bXAob2JqY0l2YXJOYW1lLCBqc05hbWUuZGF0YSgpKSkgewotICAgICAgICAgICAgICAgICAgICBh
dXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IG1ha2VVbmlxdWU8T2JqY0ZpZWxkPihv
YmpjSVZhcik7CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUo
bmV3RmllbGQpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggZTA4YjA0OGUzYjU2ODQyOThjZGVmZDkz
ZWI5MTg4Mzg5MTU2ZjQzOC4uM2I5M2UxODc4Mzg1NGMyNDQ0NmUxY2ZhNTc1ODQ2NmYwZjBhN2Y0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjY3
LDcgKzI2Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpD
RmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIGlmIChbdGFyZ2V0T2Jq
ZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJv
bVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xh
c3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2Qoc3RkOjpt
YWtlX3VuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tl
VW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9kKG1ha2VVbmlxdWU8T2Jq
Y01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhv
ZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYg
bmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVj
LT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5z
ZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZh
bGxiYWNrTWV0aG9kLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCmluZGV4IDgzZDQ0ZTA2N2ZiZGY1NDdm
NmM4OGI2N2EzNmViNTNmNjkxNDY2ZWUuLmYxNzFhNTgyMDNmOThhZjE1NTQ3ODBlMDUxOWUwNGEx
ZTUzYTBiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bWJpbmVkVVJMRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQ29tYmlu
ZWRVUkxGaWx0ZXJzOjpwcmludCgpIGNvbnN0CiAjZW5kaWYKIAogQ29tYmluZWRVUkxGaWx0ZXJz
OjpDb21iaW5lZFVSTEZpbHRlcnMoKQotICAgIDogbV9wcmVmaXhUcmVlUm9vdChzdGQ6Om1ha2Vf
dW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkpCisgICAgOiBtX3ByZWZpeFRyZWVSb290KG1ha2VV
bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKIHsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIHZv
aWQgQ29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25z
dCBWZWN0b3I8VGVybT4mIHBhdHRlCiAgICAgICAgIGlmIChuZXh0RW50cnlJbmRleCAhPSBXVEY6
Om5vdEZvdW5kKQogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+
ZWRnZXNbbmV4dEVudHJ5SW5kZXhdLmNoaWxkLmdldCgpOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxw
aGFiZXQuaW50ZXJuZWQodGVybSksIHN0ZDo6bWFrZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4o
KX0pKTsKKyAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJl
ZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIG1ha2VVbmlxdWU8UHJlZml4VHJlZVZl
cnRleD4oKX0pKTsKICAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUt
PmVkZ2VzLmxhc3QoKS5jaGlsZC5nZXQoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmgKaW5kZXggOGM3ZTNmN2Q3ZjFlMGQ1NWFhZDg5MzRhYmJhNWFhNzBmYjhmODVjZi4u
NzdmZWI2MGM1MGJjOGE0ZjI0YjI3Njk2YWQxMTBkMWVkYTc0MjgwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAvLyAx
KSBJdCBzdG9yZXMgdGhlIHJ1bGVzIGZvciBlYWNoIGNvbnRlbnQgZXh0ZW5zaW9uLgogLy8gMikg
SXQgcHJvdmlkZXMgQVBJcyBmb3IgdGhlIFdlYkNvcmUgaW50ZXJmYWNlcyB0byB1c2UgdGhvc2Ug
cnVsZXMgZWZmaWNpZW50bHkuCiBjbGFzcyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIC0gUnVsZSBtYW5hZ2Vt
ZW50IGludGVyZmFjZS4gVGhpcyBjYW4gYmUgdXNlZCBieSB1cHBlciBsYXllci4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAppbmRleCA5NmUyZDYzNGI4OTNiMzk5MzA0YThi
MmIyODVlNjFmNGU0NjlkYzBjLi5iMmE5YTc4MzUyMjc3MjgzZjk1ZDg0OWQwM2IxNTZmY2RjNzIx
ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcApAQCAtMTE1LDMxICsx
MTUsMzEgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkRl
Y3J5cHQ6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0g
Y29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oc3RhdGUsIHZh
bHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2Vw
dGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkM6CiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMg
PSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHN0YXRl
LCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBF
eGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0Ni
Y0NmYlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjogewogICAgICAgICAg
ICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQ
YXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJh
bXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTTogewogICAg
ICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1B
ZXNHY21QYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwot
ICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNH
Y21QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6Ci0gICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpFQ0RTQTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0
RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgp
KTsKQEAgLTE2MCwxMyArMTYwLDEzIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
ICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBh
cmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1F
Y2RzYVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6
IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxn
b3JpdGhtUnNhUHNzUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUnNhUHNzUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRp
YyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+
IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzI1NjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
Mzg0OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0g
ICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciB9OwpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNTogewogICAg
ICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1S
c2FLZXlHZW5QYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0p
OwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1S
c2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBU1NBX1BLQ1MxX3YxXzU6CkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5
cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwog
ICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFz
ZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1z
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9u
YXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpITUFDOiB7CkBAIC0yMjMsMTQgKzIyMywxNCBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6RUNEU0E6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6RUNESDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxD
cnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNDksNyArMjQ5LDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKIAogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252
ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihzdGF0ZSwg
bmV3VmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1z
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkaEtl
eURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjogewpAQCAtMjU5LDcg
KzI1OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElk
ZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVu
dGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRp
ZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAg
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Ia2Rm
UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6IHsKQEAgLTI2OSw3ICsyNjks
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlm
aWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIg
PSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQ
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBk
ZWZhdWx0OgpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAg
Y2FzZSBPcGVyYXRpb25zOjpJbXBvcnRLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIp
IHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92
MV81OgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BTUzoKQEAgLTI5
MCw3ICsyOTAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhh
c2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNo
SWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElk
ZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1w
b3J0UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlw
dG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DVFI6CkBAIC0yOTgsNyArMjk4LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CiAgICAgICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SE1BQzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlv
bmFyeTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwpA
QCAtMzA3LDE5ICszMDcsMTkgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAg
IGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1z
Lmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNL
ZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6IHsKICAgICAgICAg
ICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQ
YXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFt
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTMyOSw3ICsz
MjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6VW53
cmFwS2V5OgogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTM0NCw3ICszNDQsNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkFFU19LVzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGlj
dGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6SE1BQzogewpAQCAtMzU0LDEyICszNTQsMTIgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlv
bigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIu
cmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkhLREY6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UEJLREYyOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTUyMCwxNiArNTIwLDE2IEBAIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3Jvc3NUaHJlYWRDb3B5SW1wb3J0
UGFyYW1zKGNvCiB7CiAgICAgc3dpdGNoIChpbXBvcnRQYXJhbXMucGFyYW1ldGVyc0NsYXNzKCkp
IHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpOb25lOiB7Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPigpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4oKTsKICAgICAgICAgcmVzdWx0LT5pZGVudGlmaWVyID0gaW1wb3J0UGFy
YW1zLmlkZW50aWZpZXI7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6OkVjS2V5UGFyYW1zOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oY3Jvc3NU
aHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihpbXBvcnRQYXJh
bXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFy
YW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+
KGltcG9ydFBhcmFtcykpKTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNs
YXNzOjpIbWFjS2V5UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHko
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6OlJzYUhhc2hlZEltcG9y
dFBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGht
UnNhSGFzaGVkSW1wb3J0UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oY3Jv
c3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFt
cz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBkYmNjYzkwMGYzMzc0OGNkMjA2N2Y2MGNiMjkwYzBi
ZDYwMDY1NTMzLi5hNDJmNTY0ZjgxZmUxZjBlYTA5NDQzZDFmMTA1M2MxYzNjZDBjZjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0yMTcsMTIgKzIx
NywxMiBAQCBjbGFzcyBDU1NDYWxjUHJpbWl0aXZlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY2F0ZWdvcnkoKSkgewog
ICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcjoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9h
dFZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25O
dW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUoKSk7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25D
YXRlZ29yeTo6TGVuZ3RoOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
Y0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihj
b252ZXJzaW9uRGF0YSksIFdlYkNvcmU6OkZpeGVkKSk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKICAgICAgICAgY2Fz
ZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50OgogICAgICAgICBjYXNlIENhbGN1bGF0aW9u
Q2F0ZWdvcnk6OlBlcmNlbnRMZW5ndGg6IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4
ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3Zh
bHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVy
c2lvbj4oY29udmVyc2lvbkRhdGEpKTsKICAgICAgICAgfQogICAgICAgICAvLyBPbmx5IHR5cGVz
IHRoYXQgY291bGQgYmUgcGFydCBvZiBhIExlbmd0aCBleHByZXNzaW9uIGNhbiBiZSBjb252ZXJ0
ZWQKICAgICAgICAgLy8gdG8gYSBDYWxjRXhwcmVzc2lvbk5vZGUuIENhbGN1bGF0aW9uQ2F0ZWdv
cnk6OlBlcmNlbnROdW1iZXIgbWFrZXMgbm8gc2Vuc2UgYXMgYSBMZW5ndGguCkBAIC01MjAsNyAr
NTIwLDcgQEAgY2xhc3MgQ1NTQ2FsY09wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhw
cmVzc2lvbk5vZGUgewogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAg
ICAgbm9kZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobm9kZSkpOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZN
b3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNF
eHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7CiAgICAgfQog
CiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKaW5kZXggYzQ0Y2ViYzUxMjBlZDgzMjZkOWEx
YjJhNjU2YjkzNjdiNmUxOTEyOC4uZTVhZThiNzdhNTE0ZjA5YzNiNDk0NDFiNTYyZjVjMmExZWM3
NTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAK
QEAgLTE2NywxMSArMTY3LDExIEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVs
bERlZmF1bHRTdHlsZSgpCiAgICAgICAgIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gbnVsbHB0
cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIWRlZmF1bHRTdHlsZSk7Ci0gICAgICAg
IGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNl
KCk7CisgICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5y
ZWxlYXNlKCk7CiAgICAgfQogCi0gICAgZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlU2V0PigpLnJlbGVhc2UoKTsKLSAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1
ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IG1ha2VVbmlx
dWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgbWVkaWFRdWVyeVN0eWxlU2hlZXQgPSAmU3R5
bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoQ1NTUGFyc2VyQ29udGV4dChVQVNoZWV0TW9kZSkpLmxl
YWtSZWYoKTsKIAogICAgIC8vIFN0cmljdC1tb2RlIHJ1bGVzLgpAQCAtMTkwLDEwICsxOTAsMTAg
QEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQog
ICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKICAgICBBU1NFUlQoIXNpbXBsZURlZmF1bHRTdHls
ZVNoZWV0KTsKIAotICAgIGRlZmF1bHRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4o
KS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJl
bGVhc2UoKTsKICAgICAvLyBUaGVyZSBhcmUgbm8gbWVkaWEtc3BlY2lmaWMgcnVsZXMgaW4gdGhl
IHNpbXBsZSBkZWZhdWx0IHN0eWxlLgogICAgIGRlZmF1bHRQcmludFN0eWxlID0gZGVmYXVsdFN0
eWxlOwotICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4o
KS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKIAogICAgIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gcGFyc2VVQVNo
ZWV0KHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQsIHN0cmxlbihzaW1wbGVVc2VyQWdlbnRTdHls
ZVNoZWV0KSk7CiAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqc2ltcGxlRGVm
YXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNw
cAppbmRleCA3NzA5YjVkZWFmYmZlOWY5YWIxMWFjMDc3YzYxOWQ3OTRkMTY0MmYyLi42NDZjMTRh
MTFhYzY0NWI5OTI2MTQ5ZjI5ZTk4MDBjNGM3MjY3YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZS5jcHAKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3Vy
Y2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBEbwogICAg
ICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5n
cyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAg
ICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYm
IGRvY3VtZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQg
PSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxl
bWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291
cmNlKCksIGNhY2hlZEZvbnQpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5p
cXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRG
b250KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzb3VyY2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNv
dXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOworICAgICAgICAgICAgc291cmNlID0g
bWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwg
bnVsbHB0ciwgZm9udEZhY2VFbGVtZW50KTsKIAogICAgICAgICBpZiAoc291cmNlKQogICAgICAg
ICAgICAgZm9udEZhY2UuYWRvcHRTb3VyY2UoV1RGTW92ZShzb3VyY2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTZXQuY3BwCmluZGV4IDA1ZTNhM2Y2ZTIxYmM5MjgxNzg1NTY5YTE0YWE1
MGZmNTJlNGEyNzAuLjE4ZTgzNGQ2OTBhNmViNTEwMWRjOTBjOGRlNWRiNWU3YTFiMGM1ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgQ1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxvY2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJl
ZChjb25zdCBTdHJpbmcmIGZhbWlsCiAgICAgICAgIGZhbWlseUxpc3QtPmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShmYW1pbHlOYW1lKSk7CiAg
ICAgICAgIGZhY2UtPnNldEZhbWlsaWVzKGZhbWlseUxpc3QuZ2V0KCkpOwogICAgICAgICBmYWNl
LT5zZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGl0ZW0pOwotICAgICAgICBmYWNlLT5hZG9w
dFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmYWNlLmdldCgpLCBm
YW1pbHlOYW1lKSk7CisgICAgICAgIGZhY2UtPmFkb3B0U291cmNlKG1ha2VVbmlxdWU8Q1NTRm9u
dEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCksIGZhbWlseU5hbWUpKTsKICAgICAgICAgQVNTRVJUKCFm
YWNlLT5jb21wdXRlRmFpbHVyZVN0YXRlKCkpOwogICAgICAgICBmYWNlcy5hcHBlbmQoV1RGTW92
ZShmYWNlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3Vw
aW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAppbmRl
eCBkZTZmMzlkM2Y1ZDg3MzFkOTllNWViM2M5NjhlMjlhZDFlYWNiZmU2Li5jNmM1YzM5NTQwYTVj
NTA1Y2RmNGQ1OWM3NDZjMzkxODVjOWUwM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBp
bmdSdWxlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIENTU1J1bGUqIENTU0dyb3VwaW5nUnVsZTo6
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENTU1J1bGVMaXN0JiBDU1NHcm91cGluZ1J1bGU6
OmNzc1J1bGVzKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0g
ICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NS
dWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihjb25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0
aGlzKSk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPExpdmVD
U1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihjb25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+
KCp0aGlzKSk7CiAgICAgcmV0dXJuICptX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggZmZkZDNk
MGFhNjU3ZjI1ZWFmMzFkNTcwYzU4NjhlZDUzMDllMmVmZC4uNTU1MWYyYzY5MTdkMDMzMDcyNmFj
ZGY4MTA5MWE5MWZhYjRlMGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIEdlbmVyYXRlZEltYWdlKiBDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUpCiB2
b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRT
aXplIHNpemUsIEdlbmVyYXRlZEltYWdlJiBpbWFnZSkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2Vz
LmNvbnRhaW5zKHNpemUpKTsKLSAgICBtX2ltYWdlcy5hZGQoc2l6ZSwgc3RkOjptYWtlX3VuaXF1
ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNpemUsIGltYWdlKSk7CisgICAgbV9pbWFn
ZXMuYWRkKHNpemUsIG1ha2VVbmlxdWU8Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXpl
LCBpbWFnZSkpOwogfQogCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVk
R2VuZXJhdGVkSW1hZ2UoRmxvYXRTaXplIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHAKaW5kZXggYzkwOTgzMmRhMGU1MTkwMjUzNTEzYTM5ODMxOTFhN2MyZjM5MzAw
NS4uNmYxZWIzMzg2ZDlmYmM3MmQ0NDM3ODVkMWQxOWM0ZGQ4YzVjMzdkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIENTU0tleWZy
YW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENT
U1J1bGVMaXN0JiBDU1NLZXlmcmFtZXNSdWxlOjpjc3NSdWxlcygpCiB7CiAgICAgaWYgKCFtX3J1
bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsK
KyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2ZUNTU1J1bGVM
aXN0PENTU0tleWZyYW1lc1J1bGU+PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3J1bGVMaXN0Q1NT
T01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNDgw
YTg5ODUyMzdhZGE5MGExMTc4ZTBiMjc5ZTBlNjY4MDdlMzM0MS4uYzg4ZDFlZGM5M2I3YTZjODNm
MjE3N2JhYzc2N2Y5Yjc4MmVlNzU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6
Y3NzUnVsZXMoKQogICAgIGlmICghY2FuQWNjZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVM
aXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+
KHRoaXMpOworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxTdHls
ZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOwogICAgIHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFw
cGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFp
bnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3Bw
CmluZGV4IDY1YTJmZGY4ZGZhY2I0ZDdmNzFkNzYxY2IyMTY2YjFhOTI4NGMwNzAuLjkxNGJkZTRh
MmRlOWFhMjEwNmMwMTA2M2I4MDhkOWNhNGZmZjZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01DU1NQYWludFdvcmtsZXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIERPTUNTU1BhaW50V29ya2xl
dCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpmcm9tKERPTUNTU05hbWVzcGFjZSYgY3NzKQogewogICAg
IGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01DU1NQYWludFdvcmtsZXQqPihTdXBw
bGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZyb20oJmNzcywgc3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTUNTU1BhaW50V29ya2xldD4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NQYWludFdvcmtsZXQ+KGNzcyk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmNz
cywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3Bw
CmluZGV4IDdlY2Q5M2Q3ZGMzZDQzMmVhZjgyYmM5NTZlNjFkNDg5YTUxMDYyNWIuLjBkZjZhYWU5
NmYwZTFjNzBiMzc1NTYxNjQ5ZWUzNWQyOGViNGMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eSogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eTo6ZnJvbShET01DU1NOYW1lc3BhY2UKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eSo+KFN1cHBsZW1lbnQ8RE9NQ1NT
TmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eT4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAppbmRleCBkODU5NmZkMWIy
NDU5ZGUwN2UxYzg5OWNjMDc5ZmMxOTg1MTE2NWU5Li44MmI3ZmNjMzBlNTgyNzQ5OTIwMmUyOGI4
MzA4NmNmMGZhNDRhYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRS
dWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRG9jdW1lbnRSdWxlU2V0czo6c19pc0ludmFsaWRhdGlu
Z1N0eWxlV2l0aFJ1bGVTZXRzIHsgZmFsc2UgfTsKIERvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKICAgICA6IG1fc3R5bGVSZXNv
bHZlcihzdHlsZVJlc29sdmVyKQogewotICAgIG1fYXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRob3JTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4o
KTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAKQEAg
LTc4LDcgKzc4LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRp
YVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNvbnN0CiAKICAgICAvLyBNZWRpYSBxdWVyaWVzIG9uIHVz
ZXIgYWdlbnQgc2hlZXQgbmVlZCB0byBldmFsdWF0ZWQgaW4gZG9jdW1lbnQgY29udGV4dC4gVGhl
eSBiZWhhdmUgbGlrZSBhdXRob3Igc2hlZXRzIGluIHRoaXMgcmVzcGVjdC4KICAgICBhdXRvJiBt
ZWRpYVF1ZXJ5RXZhbHVhdG9yID0gbV9zdHlsZVJlc29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3Io
KTsKLSAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVs
ZVNldD4oKTsKKyAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSA9IG1ha2VVbmlxdWU8UnVs
ZVNldD4oKTsKICAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQoKkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bWVkaWFRdWVyeVN0eWxlU2hlZXQsIG1lZGlhUXVl
cnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2ZXIpOwogCiAgICAgLy8gVmlld3BvcnQgZGVwZW5k
ZW50IHF1ZXJpZXMgYXJlIGN1cnJlbnRseSB0b28gaW5lZmZpY2llbnQgdG8gYWxsb3cgb24gVUEg
c2hlZXQuCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6
ZVVzZXJTdHlsZSgpCiB7CiAgICAgYXV0byYgZXh0ZW5zaW9uU3R5bGVTaGVldHMgPSBtX3N0eWxl
UmVzb2x2ZXIuZG9jdW1lbnQoKS5leHRlbnNpb25TdHlsZVNoZWV0cygpOwogICAgIGF1dG8mIG1l
ZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigp
OwotICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsK
KyAgICBhdXRvIHRlbXBVc2VyU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgaWYg
KENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQgPSBleHRlbnNpb25TdHlsZVNoZWV0cy5wYWdl
VXNlclNoZWV0KCkpCiAgICAgICAgIHRlbXBVc2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHBh
Z2VVc2VyU2hlZXQtPmNvbnRlbnRzKCksIG1lZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVz
b2x2ZXIpOwogICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5
bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSwgKnRlbXBVc2VyU3R5bGUsIG1lZGlh
UXVlcnlFdmFsdWF0b3IsIG1fc3R5bGVSZXNvbHZlcik7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVs
ZUZlYXR1cmU+JiBydWxlcykKICAgICBzaXplX3Qgc2l6ZSA9IHJ1bGVzLnNpemUoKTsKICAgICBp
ZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gcnVsZVNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBhdXRvIHJ1bGVTZXQgPSBtYWtlVW5pcXVl
PFJ1bGVTZXQ+KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAg
ICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZXNbaV0ucnVsZSwgcnVsZXNbaV0uc2VsZWN0b3JJbmRl
eCwgcnVsZXNbaV0uc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgIHJ1bGVTZXQtPnNocmlua1RvRml0
KCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBt
YWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxlcykKIHZvaWQgRG9jdW1l
bnRSdWxlU2V0czo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9pc0F1dGhvclN0eWxlRGVm
aW5lZCA9IHRydWU7Ci0gICAgbV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNl
dD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1f
YXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIApAQCAtMTk1LDEyICsx
OTUsMTIgQEAgc3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxp
ZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYKICAgICAgICAgICAgIGF1dG8gYXJyYXlJ
bmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigqZmVhdHVyZS5tYXRjaEVsZW1lbnQpOwogICAg
ICAgICAgICAgYXV0byYgcnVsZVNldCA9IG1hdGNoRWxlbWVudEFycmF5W2FycmF5SW5kZXhdOwog
ICAgICAgICAgICAgaWYgKCFydWxlU2V0KQotICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgICAgICAgICAgICAgcnVsZVNldCA9IG1ha2VV
bmlxdWU8UnVsZVNldD4oKTsKICAgICAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUoZmVhdHVyZS5y
dWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZlYXR1cmUuc2VsZWN0b3JMaXN0SW5kZXgpOwog
ICAgICAgICAgICAgaWYgKGZlYXR1cmUuaW52YWxpZGF0aW9uU2VsZWN0b3IpCiAgICAgICAgICAg
ICAgICAgaW52YWxpZGF0aW9uU2VsZWN0b3JBcnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVy
ZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBpbnZhbGlk
YXRpb25SdWxlU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVT
ZXQ+PigpOworICAgICAgICBhdXRvIGludmFsaWRhdGlvblJ1bGVTZXRzID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtYXRjaEVsZW1lbnRBcnJheS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYg
KG1hdGNoRWxlbWVudEFycmF5W2ldKQogICAgICAgICAgICAgICAgIGludmFsaWRhdGlvblJ1bGVT
ZXRzLT5hcHBlbmQoeyBzdGF0aWNfY2FzdDxNYXRjaEVsZW1lbnQ+KGkpLCBXVEZNb3ZlKG1hdGNo
RWxlbWVudEFycmF5W2ldKSwgV1RGTW92ZShpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2ldKSB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDA1
ZDM4NWE1NThjNDhjNDhlZThkYTkwZjZhMThjYjRlNzVhNmE5NWEuLjA1YjQ1N2ZkNjgyMGM2N2Yw
ZTBmYmU5MzA4N2I4Y2VmMDgyOWViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxl
U2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVk
UHNlCiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIGF1dG8gcnVsZURhdGFWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ6
OlJ1bGVEYXRhVmVjdG9yPigpOworICAgIGF1dG8gcnVsZURhdGFWZWN0b3IgPSBtYWtlVW5pcXVl
PFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOwogICAgIHJ1bGVEYXRhVmVjdG9yLT5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hlZFJ1bGVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBt
YXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVzKQogICAgICAgICBydWxlRGF0YVZlY3Rvci0+dW5j
aGVja2VkQXBwZW5kKCptYXRjaGVkUnVsZS5ydWxlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cAppbmRleCAyMTIyNDVkZWRjYWZmOTU2YWQ0NDEwN2I5ZWI0NGNiNDEzMjhhYWRiLi5lMWIxYWYy
MGZiMTFhZTNkZmVlMTkyY2FjOTJlNjJjZGVhNTU3ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBw
b3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgUmVm
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5QnVmZmVyVmlldykKIHsKLSAgICBhdXRvIHNv
dXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJp
bmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKKyAgICBh
dXRvIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJp
bmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKICAgICBm
b250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5jcHAKaW5kZXggM2IyMGQ0MTMzMzc1MzNkNmNiM2M1OGNiM2QxMDRmMGYwNGI1ZTYx
OS4uZTFlMWQ3MjEyMTFlNmRlMDFhOGE4NmUwZDQwZDg1Mjg5OTdiMzU3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+IFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3JhcEZvckRlcHJlY2F0ZWRDUwogICAgIC8vIFRoZSBt
YXAgaXMgaGVyZSB0byBtYWludGFpbiB0aGUgb2JqZWN0IGlkZW50aXR5IG9mIHRoZSBDU1NWYWx1
ZXMgb3ZlciBtdWx0aXBsZSBpbnZvY2F0aW9ucy4KICAgICAvLyBGSVhNRTogSXQgaXMgbGlrZWx5
IHRoYXQgdGhlIGlkZW50aXR5IGlzIG5vdCBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5
IGFuZCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQuCiAgICAgaWYgKCFtX2Nzc29tVmFsdWVX
cmFwcGVycykKLSAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7Cisg
ICAgICAgIG1fY3Nzb21WYWx1ZVdyYXBwZXJzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPENTU1ZhbHVl
KiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4+PigpOwogICAgIAogICAgIGF1dG8mIGNs
b25lZFZhbHVlID0gbV9jc3NvbVZhbHVlV3JhcHBlcnMtPmFkZChpbnRlcm5hbFZhbHVlLCBXZWFr
UHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPigpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNs
b25lZFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKaW5kZXggZGZmZGE2ZjUxZGY5
NTRkMjA2ZjAzZDBjNzM1NjBkZGEzOTJkMTQzMC4uNDRlZWIxZDcwMmQyZjlkY2I2YjEyYjU1Mjc4
MTU2N2ZkMDBkMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCkBAIC0xNzQsNyAr
MTc0LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVE
YXRhJiBydWxlRGF0YSkKIAogICAgIGZvciAoYXV0byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JG
ZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRj
aC5maXJzdCwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxS
dWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVG
ZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0
YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBuYW1lQW5kTWF0Y2guc2Vjb25kKSk7CiAgICAgICAgIGlm
IChuYW1lQW5kTWF0Y2guc2Vjb25kID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAg
IGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChuYW1lQW5kTWF0Y2guZmlyc3QpOwpAQCAtMTgzLDcg
KzE4Myw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEpCiAgICAgICAgIGF1dG8qIHNlbGVjdG9yID0gc2VsZWN0b3JBbmRNYXRj
aC5maXJzdDsKICAgICAgICAgYXV0byBtYXRjaEVsZW1lbnQgPSBzZWxlY3RvckFuZE1hdGNoLnNl
Y29uZDsKICAgICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKHNlbGVjdG9yLT5hdHRyaWJ1dGUo
KS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBbXSB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBy
dWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG1h
dGNoRWxlbWVudCwgc2VsZWN0b3IpKTsKICAgICAgICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRj
aEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQo
c2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCkpOwpAQCAtMjAxLDE0ICsyMDEsMTQgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0
IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVu
ZFZlY3RvcihvdGhlci51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzKTsKICAgICBmb3IgKGF1dG8mIGtl
eVZhbHVlUGFpciA6IG90aGVyLmNsYXNzUnVsZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1
cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KICAgICBjbGFzc2VzQWZm
ZWN0aW5nSG9zdC5hZGQob3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIu
Y2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwogCiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBh
aXIgOiBvdGhlci5hdHRyaWJ1dGVSdWxlcykgewogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1
cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KICAgICBhdHRyaWJ1dGVz
QWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwg
b3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
CmluZGV4IGZhNmI5MTIwMjEzZWM1NGJiNjU5MDNjZmFlNjY5YmQ0NjZmYmIwMjcuLjNiYmJiZmVi
Y2EwMDk5NzgyYWYzOTgxZWI4NjczNmNlNjgwMzZlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAK
QEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFRvUnVsZVNldChjb25zdCBBdG9t
U3RyaW5nJiBrZXksIEF0b21SdWxlTWFwJiBtYXAsIGNvbnN0IFJ1bGVEYQogICAgICAgICByZXR1
cm47CiAgICAgYXV0byYgcnVsZXMgPSBtYXAuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghcnVsZXMpCi0gICAgICAgIHJ1bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlRGF0YVZlY3Rvcj4oKTsKKyAgICAgICAgcnVsZXMgPSBtYWtlVW5pcXVlPFJ1bGVEYXRhVmVj
dG9yPigpOwogICAgIHJ1bGVzLT5hcHBlbmQocnVsZURhdGEpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNjlhZjU1ODE1NjU0YmUzMjBmMWE5
ZmQ3MWE3NzY2N2Q5MjkzZmE5Ny4uODg3NzVhZDdiYThhYTU5MGFkN2JmNzJhMzdkM2I1ZjY1YjVk
MmQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAt
MzQ4LDkgKzM0OCw5IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoCiAgICAgLy8gVHVybiB0aGlz
IGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Ro
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNl
bnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxj
RXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRv
cjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2Fs
Y0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51
bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7
CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1v
dmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgo
Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCA5YTE5MWQxN2Rk
OGUzZWRjYzFjMTMwYzI2NTkwZTBjYTZmNGUzNmEzLi5jNWMyYmY1ZDBmNWZjNzkxMGFmZjE2MjU5
OTkwYzQzODY2MGMxNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
CkBAIC04MTMsNyArODEzLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICAgICAgICAg
IGNvbG9yID0gc3R5bGVSZXNvbHZlci5jb2xvckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFs
dWUuY29sb3IpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+Y29sb3IoKTsKLSAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dT
dHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFs
aWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAgYXV0byBzaGFkb3dE
YXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFk
LCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNv
bG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgaWYg
KHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhXVEZNb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJz
dEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRy
eQogICAgICAgICBlbHNlCkBAIC04MjksNyArODI5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2wKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0U2hh
ZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNo
YWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDogbnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNo
YWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHls
ZSgpLT50ZXh0U2hhZG93KCkpIDogbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtODQ0LDcgKzg0NCw3IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0
Qm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5i
b3hTaGFkb3coKSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIu
cGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpIDogbnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hT
aGFkb3coKSA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5
bGUoKS0+Ym94U2hhZG93KCkpIDogbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJveFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0xMzU5LDcgKzEzNTksNyBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsCiAgICAgICAgICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRl
clZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwogICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50
ICE9IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGlj
X2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAg
ICAgICAgICAgYXV0byBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4o
Y291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+
c2VwYXJhdG9yKCkpOworICAgICAgICAgICAgYXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3Vu
dGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNv
dW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOwogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5zZXRDb250ZW50KFdURk1vdmUoY291bnRlciksIGRpZFNldCk7CiAgICAgICAgICAgICBk
aWRTZXQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAppbmRleCA0Y2Y2YzZmN2FiN2RmOWZjMDQzMzRiYmU4ZGQwNWEzYjU1OWU5MzVj
Li4xOWNiMDMzZDcwYmI1YTg5Njg2NTU3Mjc1NWI5NmI5NzcwNTFjYjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTUzMCw3ICsxNTMwLDcgQEAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJh
dGlvbigpCiAgICAgICAgIEFTU0VSVCghbV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSk7
CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0
aGlzKTsKKyAgICBtX2Nzc29tV3JhcHBlciA9IG1ha2VVbmlxdWU8UHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApA
QCAtMTU0MCw3ICsxNTQwLDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHkKICAgICAgICAgQVNT
RVJUKG1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVtZW50KCkgPT0gJnBhcmVudEVsZW1lbnQpOwog
ICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMsIHBh
cmVudEVsZW1lbnQpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVuaXF1ZTxJbmxpbmVDU1NT
dHlsZURlY2xhcmF0aW9uPigqdGhpcywgcGFyZW50RWxlbWVudCk7CiAgICAgcmV0dXJuICptX2Nz
c29tV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDNh
NTJjMzYxOTlhNzlhMjVlMDljMDFkOGZhMGM1MGFlZmY2ODJiYjUuLmRlNGRhNWY1NTEyOTkwOTMx
ZGE4NmM1YzdlODNiY2IxMDE4MDhiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKQEAgLTE3MTUsNyArMTcxNSw3IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGll
cyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgICAg
IGlmIChhdXRob3JSb2xsYmFjaykKICAgICAgICAgICAgIHJldHVybiBhdXRob3JSb2xsYmFjazsK
IAotICAgICAgICBhdXRvIG5ld0F1dGhvclJvbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2Fk
ZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3
QXV0aG9yUm9sbGJhY2sobWFrZVVuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwg
d3JpdGluZ01vZGUpKTsKIAogICAgICAgICAvLyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2Fk
ZSBjb250YWlucyBVQSBydWxlcyBhbmQgdXNlciBydWxlcyBidXQgbm8gYXV0aG9yIHJ1bGVzLgog
ICAgICAgICBuZXdBdXRob3JSb2xsYmFjay0+YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwg
bWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVB
UnVsZSwgZmFsc2UpOwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFj
aygKICAgICAgICAgaWYgKHVzZXJSb2xsYmFjaykKICAgICAgICAgICAgIHJldHVybiB1c2VyUm9s
bGJhY2s7CiAKLSAgICAgICAgYXV0byBuZXdVc2VyUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxD
YXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0
byBuZXdVc2VyUm9sbGJhY2sobWFrZVVuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlv
biwgd3JpdGluZ01vZGUpKTsKIAogICAgICAgICAvLyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2Fz
Y2FkZSBjb250YWlucyBvbmx5IFVBIHJ1bGVzLgogICAgICAgICBuZXdVc2VyUm9sbGJhY2stPmFk
ZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVs
ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJv
cC5wbAppbmRleCA5OTdjNGMwMzY3ZGQ1ZDBkNjQ1ZDVlZGY1MWVlYzRiZmIwYzMyMTA1Li4wMmEz
NmVmZTA1ZDNjYzlmZTk3ZGQ1YzBlMjU5M2FlNzlmZDZjMmM2IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9w
LnBsCkBAIC04MTEsNyArODExLDcgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhl
cml0VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXll
ciogcHJldmlvdXNDaGlsZCA9IG51bGxwdHI7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gImZvciAoYXV0byogcGFyZW50ID0gJnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+
IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTsgcGFyZW50ICYmIHBhcmVudC0+IiAu
ICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBhcmVudCA9IHBhcmVudC0+bmV4dCgpKSB7XG4iOwogICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBpZiAoIWNoaWxkKSB7XG4iOwotICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChz
dGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4g
IikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3Vz
Q2hpbGQtPnNldE5leHQobWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBl
KCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAg
ICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49
ICRpbmRlbnQgLiAiICAgIH1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAg
IGNoaWxkLT4iIC4gJHNldHRlciAuICIocGFyZW50LT4iIC4gJGdldHRlciAuICIoKSk7XG4iOwpA
QCAtODM3LDcgKzgzNyw3IEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0
ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAvLyBXYWxrIGVhY2ggdmFs
dWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVk
LlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgZm9yIChhdXRvJiBpdGVt
IDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiICAgICAgICBpZiAoIWNoaWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjpt
YWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtc
biI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXND
aGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUo
JG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAg
ICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiICAgICAgICB9XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZU1hcCgpLT4iIC4gZ2V0RmlsbExheWVyTWFw
ZnVuY3Rpb24oJG5hbWUpIC4gIigiIC4gJENTU1Byb3BlcnR5SWQgLiAiLCAqY2hpbGQsIGl0ZW0p
O1xuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCmluZGV4
IDY3Y2ZkZjU2ZDYyNTA1M2EwMTExOTkyZDcxMWY4YzhmZmRiOTVkYzIuLmQ3NWU0ZmM5MmM3N2Iw
N2IxZTUzZGFkMzM4N2U1NTFhMzkwYzI1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNzcsNyArNzcsNyBAQCBDU1NQYXJzZXJJbXBsOjpDU1NQ
YXJzZXJJbXBsKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
c3RyaQogICAgICwgbV9zdHlsZVNoZWV0KHN0eWxlU2hlZXQpCiAgICAgLCBtX29ic2VydmVyV3Jh
cHBlcih3cmFwcGVyKQogewotICAgIG1fdG9rZW5pemVyID0gd3JhcHBlciA/IHN0ZDo6bWFrZV91
bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcsICp3cmFwcGVyKSA6IHN0ZDo6bWFrZV91bmlxdWU8
Q1NTVG9rZW5pemVyPihzdHJpbmcpOworICAgIG1fdG9rZW5pemVyID0gd3JhcHBlciA/IG1ha2VV
bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcsICp3cmFwcGVyKSA6IG1ha2VVbmlxdWU8Q1NTVG9r
ZW5pemVyPihzdHJpbmcpOwogICAgIGlmIChjb250ZXh0LmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxl
ZCAmJiAhd3JhcHBlciAmJiBzdHlsZVNoZWV0ICYmIHJ1bGVQYXJzaW5nID09IENTU1BhcnNlcjo6
UnVsZVBhcnNpbmc6OkRlZmVycmVkKQogICAgICAgICBtX2RlZmVycmVkUGFyc2VyID0gQ1NTRGVm
ZXJyZWRQYXJzZXI6OmNyZWF0ZShjb250ZXh0LCBzdHJpbmcsICpzdHlsZVNoZWV0KTsKIH0KQEAg
LTI4Miw5ICsyODIsOSBAQCBDU1NTZWxlY3Rvckxpc3QgQ1NTUGFyc2VySW1wbDo6cGFyc2VQYWdl
U2VsZWN0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgU3R5bAogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvcjsKICAgICBpZiAoIXR5cGVTZWxlY3Rv
ci5pc051bGwoKSAmJiBwc2V1ZG8uaXNOdWxsKCkpCi0gICAgICAgIHNlbGVjdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCB0
eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkpOworICAgICAgICBz
ZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KFF1YWxpZmllZE5hbWUobnVs
bEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHlsZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNl
clNlbGVjdG9yPigpOworICAgICAgICBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2Vs
ZWN0b3I+KCk7CiAgICAgICAgIGlmICghcHNldWRvLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBz
ZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4oQ1NTUGFyc2VyU2Vs
ZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKHBzZXVkbykpOwogICAgICAgICAgICAgaWYg
KCFzZWxlY3RvciB8fCBzZWxlY3Rvci0+bWF0Y2goKSAhPSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVk
b0NsYXNzKQpAQCAtNTM1LDcgKzUzNSw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVOYW1lc3BhY2U+IENT
U1BhcnNlckltcGw6OmNvbnN1bWVOYW1lc3BhY2VSdWxlKENTU1BhcnNlclRva2VuUmFuCiBSZWZQ
dHI8U3R5bGVSdWxlTWVkaWE+IENTU1BhcnNlckltcGw6OmNvbnN1bWVNZWRpYVJ1bGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrKQogewogICAg
IGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1cm4gU3R5bGVSdWxlTWVkaWE6OmNy
ZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQocHJlbHVkZSwgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0KSkucmVsZWFzZU5vbk51bGwoKSwgIHN0ZDo6bWFr
ZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBh
cnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5
UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQocHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRl
eHQobV9jb250ZXh0KSkucmVsZWFzZU5vbk51bGwoKSwgIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHls
ZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gcnVsZXM7CiAKQEAgLTU2Myw3ICs1NjMsNyBAQCBSZWZQ
dHI8U3R5bGVSdWxlU3VwcG9ydHM+IENTU1BhcnNlckltcGw6OmNvbnN1bWVTdXBwb3J0c1J1bGUo
Q1NTUGFyc2VyVG9rZW5SYW5nZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJy
b3IsIGludmFsaWQgQHN1cHBvcnRzIGNvbmRpdGlvbgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJz
ZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKHByZWx1ZGUuc2Vy
aWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1cHBvcnRlZCwgc3RkOjptYWtlX3VuaXF1ZTxE
ZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7Cisg
ICAgICAgIHJldHVybiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXpl
KCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1cHBvcnRlZCwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxl
R3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9v
YnNlcnZlcldyYXBwZXIpIHsKICAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCku
c3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6U3VwcG9ydHMsIG1fb2JzZXJ2ZXJXcmFwcGVyLT5z
dGFydE9mZnNldChwcmVsdWRlKSk7CkBAIC02MzUsNyArNjM1LDcgQEAgUmVmUHRyPFN0eWxlUnVs
ZUtleWZyYW1lcz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUtleWZyYW1lc1J1bGUoYm9vbCB3ZWJr
aXRQcmVmaXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vIFBhcnNlIGVycm9yOyBleHBlY3Rl
ZCBpZGVudCB0b2tlbiBpbiBAa2V5ZnJhbWVzIGhlYWRlcgogCiAgICAgaWYgKG1fZGVmZXJyZWRQ
YXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1lLCBz
dGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVm
ZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRl
KG5hbWUsIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9k
ZWZlcnJlZFBhcnNlcikpOwogCiAgICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKSB7CiAgICAgICAg
IG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6
OktleWZyYW1lcywgbV9vYnNlcnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0KHJhbmdlQ29weSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcAppbmRl
eCA0ZGJlZjQwNThjNzE2MmNkOTY0NmVhNzY0ZGNiYjliYmNmMzFlNDU5Li5hMDg3MGQzNzYyY2Vh
NDJmNWI1ZWFiZDA1ZWE3NDRmMmQ5ZDZiMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1
ZG9TZWxlY3RvcihTdAogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAg
ICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBz
ZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFz
cyk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBhZ2VQc2V1ZG9UeXBlKHBzZXVkb1R5
cGUpOwogICAgIHJldHVybiBzZWxlY3RvcjsKQEAgLTYzLDcgKzYzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVt
ZW50U2VsZWN0b3IKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1
dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAg
IGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNl
bGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7
CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5
cGUpOwogICAgIEF0b21TdHJpbmcgbmFtZTsKQEAgLTg0LDEzICs4NCwxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0Ns
YXNzU2VsZWN0b3IoUwogewogICAgIGF1dG8gcHNldWRvVHlwZSA9IHBhcnNlUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudFN0cmluZyhwc2V1ZG9UeXBlU3RyaW5nKTsKICAgICBpZiAo
cHNldWRvVHlwZS5wc2V1ZG9DbGFzcyAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NVbmtub3du
KSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOworICAgICAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzcyk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQ
c2V1ZG9DbGFzc1R5cGUocHNldWRvVHlwZS5wc2V1ZG9DbGFzcyk7CiAgICAgICAgIHJldHVybiBz
ZWxlY3RvcjsKICAgICB9CiAgICAgaWYgKHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBzZXVkb0Vs
ZW1lbnQgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRVbmtub3duKSB7Ci0gICAgICAgIGF1
dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAg
ICAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAg
ICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9F
bGVtZW50KTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRU
eXBlKHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBzZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxl
Y3Rvci0+bV9zZWxlY3Rvci0+c2V0VmFsdWUocHNldWRvVHlwZVN0cmluZy5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpKTsKQEAgLTEwMCwxMiArMTAwLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3Rv
cihTCiB9CiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3RvcigpCi0gICAgOiBt
X3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KCkpCisgICAgOiBtX3NlbGVj
dG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KCkpCiB7CiB9CiAKIENTU1BhcnNlclNlbGVjdG9y
OjpDU1NQYXJzZXJTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSkKLSAgICA6
IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUpKQorICAg
IDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCiB7CiB9CiAK
QEAgLTEyNiw3ICsxMjYsNyBAQCBDU1NQYXJzZXJTZWxlY3Rvcjo6fkNTU1BhcnNlclNlbGVjdG9y
KCkKIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4mJiBzZWxlY3RvclZlY3RvcikKIHsK
LSAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxpc3Qoc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxl
Y3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0b3JWZWN0b3IpKSk7CisgICAgbV9zZWxlY3Rvci0+c2V0
U2VsZWN0b3JMaXN0KG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3JMaXN0PihXVEZNb3ZlKHNlbGVjdG9y
VmVjdG9yKSkpOwogfQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRM
aXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbVN0cmluZz4+IGFyZ3VtZW50TGlzdCkKQEAg
LTIwOSwxMiArMjA5LDEyIEBAIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFwcGVuZFRhZ0hpc3Rv
cnkoQ1NTUGFyc2VyU2VsZWN0b3JDb21iaW5hdG9yIHJlbGF0aW9uLCBzCiAKIHZvaWQgQ1NTUGFy
c2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdR
TmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpCiB7Ci0gICAgYXV0byBzZWNvbmQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIGF1dG8gc2Vjb25kID0g
bWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWNvbmQtPm1fc2VsZWN0b3Ig
PSBXVEZNb3ZlKG1fc2VsZWN0b3IpOwogICAgIHNlY29uZC0+bV90YWdIaXN0b3J5ID0gV1RGTW92
ZShtX3RhZ0hpc3RvcnkpOwogICAgIG1fdGFnSGlzdG9yeSA9IFdURk1vdmUoc2Vjb25kKTsKIAot
ICAgIG1fc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwg
dGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKKyAgICBtX3NlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NT
ZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSk7CiAgICAgbV9zZWxlY3Rv
ci0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1YnNlbGVjdG9yKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCA0ODhlNjAy
M2YyMDAyNGFmZmVmODYxN2E1MTRjNDA5YmY0OWQxZWYzLi43MDhlYzc3NzNjMThkNmUwOGUwMDFj
YWZhM2QyOGM4MGQ5Zjg3MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMjQzNSw3ICsyNDM1LDcgQEAgc3RhdGljIFJlZlB0cjxD
U1NCYXNpY1NoYXBlUGF0aD4gY29uc3VtZUJhc2ljU2hhcGVQYXRoKENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MKICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvIGJ5dGVTdHJlYW0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOworICAgIGF1dG8gYnl0ZVN0cmVhbSA9IG1h
a2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgaWYgKCFidWlsZFNWR1BhdGhCeXRl
U3RyZWFtRnJvbVN0cmluZyhhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUo
KS50b1N0cmluZygpLCAqYnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZykpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NTZWxlY3RvclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Nl
bGVjdG9yUGFyc2VyLmNwcAppbmRleCA2YjNhY2M4NWU2ZmM1ZTVjYmI5NWFiOWZlMWE2YzdjYTll
ZjgxMDQ3Li5mMzMyM2IyMjZiNGIwMTAwYzk4M2M0ODY2Mzc1ZjFlNjU3YjE3Mzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtNTY0
LDcgKzU2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0
b3JQYXJzZXI6OmNvbnN1bWVQc2V1ZG8oQ1NTUGFyc2VyVG9rCiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYW5nOiB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogQ1NTIFNlbGVjdG9ycyBMZXZlbCA0IGFsbG93cyA6bGFuZygqLWZvbykKLSAgICAgICAgICAg
IGF1dG8gYXJndW1lbnRMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+
KCk7CisgICAgICAgICAgICBhdXRvIGFyZ3VtZW50TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPEF0
b21TdHJpbmc+PigpOwogICAgICAgICAgICAgaWYgKCFjb25zdW1lTGFuZ0FyZ3VtZW50TGlzdChh
cmd1bWVudExpc3QsIGJsb2NrKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgICAgIHNlbGVjdG9yLT5zZXRMYW5nQXJndW1lbnRMaXN0KFdURk1vdmUoYXJndW1lbnRM
aXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlLmNwcAppbmRleCA5ZWI1ZDdlNDlmNTZhMWU5OGQxZmJiOWIyM2U2ZWE3MmUyMjYxNThmLi44
ODExN2YxOWU0YjI2YmEyNWJmZjI1YTg1NTkxNzMyYmI3YTNlN2ZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTMzNCw3ICsz
MzQsNyBAQCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6RWxlbWVudFF1ZXVlJiBDdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5zdXJlQmFjawogewogICAgIGlmICghc19wcm9jZXNzaW5n
QmFja3VwRWxlbWVudFF1ZXVlKSB7CiAgICAgICAgIHNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRR
dWV1ZSA9IHRydWU7Ci0gICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOwor
ICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlx
dWU8QmFja3VwRWxlbWVudFF1ZXVlTWljcm90YXNrPigpKTsKICAgICB9CiAgICAgcmV0dXJuIGJh
Y2t1cEVsZW1lbnRRdWV1ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRl
eCBjYjc1MjMyODBjN2IzMjVjNjZjZGU2NDZjMTViZjVhOTEzMTc0NWJjLi5jMDliODQzNjM1NTM0
MWE4ZWQ0MGE1YThiODUxNmI2ZDk3YmE2ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpkaWRBZGRGaWxlVG9J
dGVtTGlzdCgpCiBEYXRhVHJhbnNmZXJJdGVtTGlzdCYgRGF0YVRyYW5zZmVyOjppdGVtcygpCiB7
CiAgICAgaWYgKCFtX2l0ZW1MaXN0KQotICAgICAgICBtX2l0ZW1MaXN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlzdD4oKnRoaXMpOworICAgICAgICBtX2l0ZW1MaXN0ID0g
bWFrZVVuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlzdD4oKnRoaXMpOwogICAgIHJldHVybiAqbV9p
dGVtTGlzdDsKIH0KIApAQCAtNDE2LDcgKzQxNiw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNT
dHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCkKIHsKLSAgICBh
dXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7Cisg
ICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAg
IHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9zLCBwbGFpblRleHQpOwogICAg
IHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L2h0bWwiX3MsIGh0bWxUZXh0KTsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVh
ZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5cGU6OklucHV0RXZlbnQpKTsKQEAgLTQ3MSw3
ICs0NzEsNyBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWco
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsK
LSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3Vt
ZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJv
YXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0
ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEp
KTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdp
bklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0K
QEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1l
bnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkKICAgICBtX2RyYWdJbWFnZSA9IGltYWdlOwogICAg
IGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICBpZiAoIW1fZHJhZ0ltYWdlTG9hZGVyKQotICAg
ICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYWdJbWFnZUxv
YWRlcj4odGhpcyk7CisgICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8
RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXItPnN0YXJ0
TG9hZGluZyhtX2RyYWdJbWFnZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDMzNjIyMzEwODFiMTNmNzJk
YzE4ZGFjNWYzOTA3YTVlN2MxN2IwYmYuLmYyMTEzMWZmODI3ODIxZGM3NGU4NTBhOThmMWJiMjMw
OTllMDI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQoUGFnZSogcGFnZSkKIAogdm9pZCBwcm92aWRlRGV2aWNl
T3JpZW50YXRpb25UbyhQYWdlJiBwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCYgY2xpZW50
KQogewotICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKKyAgICBEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGQxN2ZmMmNmZWMxODc4ZTY3YzU4MTA3OTI4MGI0OTFiODg1
OTNlNTkuLmVkNDg0ODk3ZmFkMTk5Nzc4ZTg4MzkzOWRkMTIzYWUyZDZjNmMyMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNTIxLDE5ICs1MjEsMTkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3Nlcywg
dW5zaWcKICAgICAsIG1fcXVpcmtzKG1ha2VVbmlxdWVSZWY8UXVpcmtzPigqdGhpcykpCiAgICAg
LCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKG1fZnJhbWUgPyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI+KG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291
cmNlTG9hZGVyKCkpIDogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShudWxscHRyKSkKICAg
ICAsIG1fZG9tVHJlZVZlcnNpb24oKytzX2dsb2JhbFRyZWVWZXJzaW9uKQotICAgICwgbV9zdHls
ZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCi0gICAgLCBtX2V4
dGVuc2lvblN0eWxlU2hlZXRzKHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVldHM+
KCp0aGlzKSkKLSAgICAsIG1fdmlzaXRlZExpbmtTdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFZpc2l0
ZWRMaW5rU3RhdGU+KCp0aGlzKSkKLSAgICAsIG1fbWFya2VycyhzdGQ6Om1ha2VfdW5pcXVlPERv
Y3VtZW50TWFya2VyQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VV
bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRz
KG1ha2VVbmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVldHM+KCp0aGlzKSkKKyAgICAsIG1fdmlzaXRl
ZExpbmtTdGF0ZShtYWtlVW5pcXVlPFZpc2l0ZWRMaW5rU3RhdGU+KCp0aGlzKSkKKyAgICAsIG1f
bWFya2VycyhtYWtlVW5pcXVlPERvY3VtZW50TWFya2VyQ29udHJvbGxlcj4oKnRoaXMpKQogICAg
ICwgbV9zdHlsZVJlY2FsY1RpbWVyKFt0aGlzXSB7IHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsgfSkK
ICAgICAsIG1fZG9jdW1lbnRDcmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAg
LCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQot
ICAgICwgbV9tb2R1bGVMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+
KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVyKG1ha2VVbmlxdWU8U2NyaXB0UnVubmVyPigq
dGhpcykpCisgICAgLCBtX21vZHVsZUxvYWRlcihtYWtlVW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRl
cj4oKnRoaXMpKQogI2lmIEVOQUJMRShYU0xUKQogICAgICwgbV9hcHBseVBlbmRpbmdYU0xUcmFu
c2Zvcm1zVGltZXIoKnRoaXMsICZEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1Rp
bWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1feG1sVmVyc2lvbigiMS4wIl9zKQotICAgICwgbV9j
b25zdGFudFByb3BlcnR5TWFwKHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4o
KnRoaXMpKQorICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKG1ha2VVbmlxdWU8Q29uc3RhbnRQ
cm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwgbV9kb2N1bWVudENsYXNzZXMoZG9jdW1lbnRDbGFz
c2VzKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKQEAgLTU0NSwxMCArNTQ1LDEwIEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnCiAjZW5kaWYK
ICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnRE
ZWxheVRpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKLSAgICAsIG1fZGV2aWNlTW90aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQotICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlTW90
aW9uQ2xpZW50KSkKLSAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkKLSAgICAsIG1fZGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNs
aWVudChtYWtlVW5pcXVlPERldmljZU1vdGlvbkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNl
TW90aW9uQ29udHJvbGxlcihtYWtlVW5pcXVlPERldmljZU1vdGlvbkNvbnRyb2xsZXI+KCptX2Rl
dmljZU1vdGlvbkNsaWVudCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KG1ha2VV
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1M+KCkpCisgICAgLCBtX2RldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlcihtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4o
Km1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQpKQogI2VuZGlmCiAgICAgLCBtX3BlbmRpbmdUYXNr
c1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQpCiAgICAgLCBt
X3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnZpc3VhbFVw
ZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQpCkBAIC03NTcsNyArNzU3LDcgQEAgRWxlbWVudCog
RG9jdW1lbnQ6OmVsZW1lbnRGb3JBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHZvaWQg
RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUoKQogewotICAgIG1fYWNjZXNzS2V5Q2FjaGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsKKyAgICBtX2FjY2Vzc0tleUNhY2hlID0gbWFrZVVuaXF1
ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0
aGlzXSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiBtYXA7CiAgICAgICAgIGZvciAoYXV0byYgbm9kZSA6IGNvbXBvc2VkVHJlZURl
c2NlbmRhbnRzKCp0aGlzKSkgewogICAgICAgICAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkK
QEAgLTc4Miw3ICs3ODIsNyBAQCBFeGNlcHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gRG9jdW1lbnQ6
OnNlbGVjdG9yUXVlcnlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlYwogICAgIGlmIChzZWxl
Y3RvclN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhF
cnJvciB9OwogICAgIGlmICghbV9zZWxlY3RvclF1ZXJ5Q2FjaGUpCi0gICAgICAgIG1fc2VsZWN0
b3JRdWVyeUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7Cisg
ICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5Q2Fj
aGU+KCk7CiAgICAgcmV0dXJuIG1fc2VsZWN0b3JRdWVyeUNhY2hlLT5hZGQoc2VsZWN0b3JTdHJp
bmcsICp0aGlzKTsKIH0KIApAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc2V0
QWN0aXZlTGlua0NvbG9yKCkKIERPTUltcGxlbWVudGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50
YXRpb24oKQogewogICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbikKLSAgICAgICAgbV9pbXBsZW1l
bnRhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NSW1wbGVtZW50YXRpb24+KCp0aGlzKTsKKyAg
ICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IG1ha2VVbmlxdWU8RE9NSW1wbGVtZW50YXRpb24+KCp0
aGlzKTsKICAgICByZXR1cm4gKm1faW1wbGVtZW50YXRpb247CiB9CiAKQEAgLTE3NjIsNyArMTc2
Miw3IEBAIE5vZGU6Ok5vZGVUeXBlIERvY3VtZW50Ojpub2RlVHlwZSgpIGNvbnN0CiBGb3JtQ29u
dHJvbGxlciYgRG9jdW1lbnQ6OmZvcm1Db250cm9sbGVyKCkKIHsKICAgICBpZiAoIW1fZm9ybUNv
bnRyb2xsZXIpCi0gICAgICAgIG1fZm9ybUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZv
cm1Db250cm9sbGVyPigpOworICAgICAgICBtX2Zvcm1Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxG
b3JtQ29udHJvbGxlcj4oKTsKICAgICByZXR1cm4gKm1fZm9ybUNvbnRyb2xsZXI7CiB9CiAKQEAg
LTE5ODcsNyArMTk4Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0
JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgdW5zCiAgICAgQVNTRVJUKCFt
X2luUmVuZGVyVHJlZVVwZGF0ZSk7CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaW5SZW5kZXJUcmVl
VXBkYXRlKG1faW5SZW5kZXJUcmVlVXBkYXRlLCB0cnVlKTsKIAotICAgIGF1dG8gdGV4dFVwZGF0
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlVwZGF0ZT4oKnRoaXMpOworICAgIGF1dG8gdGV4
dFVwZGF0ZSA9IG1ha2VVbmlxdWU8U3R5bGU6OlVwZGF0ZT4oKnRoaXMpOwogICAgIHRleHRVcGRh
dGUtPmFkZFRleHQodGV4dCwgeyBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNl
ZFRleHQsIFdURjo6bnVsbG9wdCB9KTsKIAogICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRy
ZWVVcGRhdGVyKCp0aGlzKTsKQEAgLTIyNjksNyArMjI2OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXpl
LCBpbnQmCiBTdHlsZVJlc29sdmVyJiBEb2N1bWVudDo6dXNlckFnZW50U2hhZG93VHJlZVN0eWxl
UmVzb2x2ZXIoKQogewogICAgIGlmICghbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZl
cikKLSAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRoaXMpOworICAgICAgICBtX3VzZXJBZ2VudFNoYWRv
d1RyZWVTdHlsZVJlc29sdmVyID0gbWFrZVVuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyOwogfQogCkBAIC0y
NjcyLDcgKzI2NzIsNyBAQCBBWE9iamVjdENhY2hlKiBEb2N1bWVudDo6YXhPYmplY3RDYWNoZSgp
IGNvbnN0CiAKICAgICBBU1NFUlQoJnRvcERvY3VtZW50ID09IHRoaXMgfHwgIW1fYXhPYmplY3RD
YWNoZSk7CiAgICAgaWYgKCF0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUpIHsKLSAgICAgICAg
dG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWE9iamVjdENh
Y2hlPih0b3BEb2N1bWVudCk7CisgICAgICAgIHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSA9
IG1ha2VVbmlxdWU8QVhPYmplY3RDYWNoZT4odG9wRG9jdW1lbnQpOwogICAgICAgICBoYXNFdmVy
Q3JlYXRlZEFuQVhPYmplY3RDYWNoZSA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiB0b3BEb2N1
bWVudC5tX2F4T2JqZWN0Q2FjaGUuZ2V0KCk7CkBAIC0zMDM2LDcgKzMwMzYsNyBAQCB2b2lkIERv
Y3VtZW50OjpzZXRQYXJzaW5nKGJvb2wgYikKICAgICBtX2JQYXJzaW5nID0gYjsKIAogICAgIGlm
IChtX2JQYXJzaW5nICYmICFtX3NoYXJlZE9iamVjdFBvb2wpCi0gICAgICAgIG1fc2hhcmVkT2Jq
ZWN0UG9vbCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sPigpOwor
ICAgICAgICBtX3NoYXJlZE9iamVjdFBvb2wgPSBtYWtlVW5pcXVlPERvY3VtZW50U2hhcmVkT2Jq
ZWN0UG9vbD4oKTsKIAogICAgIGlmICghbV9iUGFyc2luZyAmJiB2aWV3KCkgJiYgIXZpZXcoKS0+
bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldygpLT5maXJlTGF5b3V0UmVsYXRlZE1pbGVzdG9u
ZXNJZk5lZWRlZCgpOwpAQCAtNTU2Niw3ICs1NTY2LDcgQEAgY29uc3QgU1ZHRG9jdW1lbnRFeHRl
bnNpb25zKiBEb2N1bWVudDo6c3ZnRXh0ZW5zaW9ucygpCiBTVkdEb2N1bWVudEV4dGVuc2lvbnMm
IERvY3VtZW50OjphY2Nlc3NTVkdFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fc3ZnRXh0ZW5z
aW9ucykKLSAgICAgICAgbV9zdmdFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdEb2N1
bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsKKyAgICAgICAgbV9zdmdFeHRlbnNpb25zID0gbWFrZVVu
aXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3ZnRXh0
ZW5zaW9uczsKIH0KIApAQCAtNTc3MSw3ICs1NzcxLDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNl
Y3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8vIFRoaXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVudC5p
bXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgogICAgICAgICBzZXRDb29raWVVUkwoVVJM
KHsgfSwgZW1wdHlTdHJpbmcoKSkpOwogICAgICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShT
ZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUo
KSkpOwotICAgICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykp
OworICAgICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC01NzkwLDcgKzU3OTAsNyBAQCB2b2lkIERvY3VtZW50Ojpp
bml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA9IGRv
Y3VtZW50TG9hZGVyICYmIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLnRhaW50aW5nKCkgPT0g
UmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZTsKIAogICAgIHNldFNlY3VyaXR5T3Jp
Z2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoaXNTZWN1cml0eU9yaWdpblVu
aXF1ZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobV91cmwpKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAg
IHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGlj
eT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKIAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeSA9IG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLm92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5KCk7CiAgICAgaWYgKCFvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGlj
eS5pc051bGwoKSkKQEAgLTYwMjgsNyArNjAyOCw3IEBAIFN0cmluZyBEb2N1bWVudDo6bmFtZUZv
ckNTU0NhbnZhc0VsZW1lbnQoY29uc3QgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQp
CiBUZXh0QXV0b1NpemluZyYgRG9jdW1lbnQ6OnRleHRBdXRvU2l6aW5nKCkKIHsKICAgICBpZiAo
IW1fdGV4dEF1dG9TaXppbmcpCi0gICAgICAgIG1fdGV4dEF1dG9TaXppbmcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOworICAgICAgICBtX3RleHRBdXRvU2l6aW5nID0gbWFr
ZVVuaXF1ZTxUZXh0QXV0b1NpemluZz4oKTsKICAgICByZXR1cm4gKm1fdGV4dEF1dG9TaXppbmc7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAgLTYzOTUsNyArNjM5NSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OndoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoKQogdm9pZCBEb2N1
bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIW1f
d2hlZWxFdmVudFRhcmdldHMpCi0gICAgICAgIG1fd2hlZWxFdmVudFRhcmdldHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOworICAgICAgICBtX3doZWVsRXZlbnRUYXJnZXRz
ID0gbWFrZVVuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKIAogICAgIG1fd2hlZWxFdmVudFRhcmdl
dHMtPmFkZCgmbm9kZSk7CiAKQEAgLTY0NTUsNyArNjQ1NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRp
ZEFkZFRvdWNoRXZlbnRIYW5kbGVyKE5vZGUmIGhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKICAgICBpZiAoIW1fdG91Y2hFdmVudFRhcmdldHMpCi0gICAgICAgIG1fdG91Y2hF
dmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOworICAgICAg
ICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gbWFrZVVuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKIAog
ICAgIG1fdG91Y2hFdmVudFRhcmdldHMtPmFkZCgmaGFuZGxlcik7CiAKQEAgLTgwNDMsNyArODA0
Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYg
Y2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIFZlCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBtZXNzYWdlTGV2ZWxGcm9tV1RGTG9nTGV2ZWwobGV2
ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VM
ZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgpKSk7
CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZN
b3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKCkpKTsKIAogICAgICAg
ICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICB9KTsKQEAgLTgwNzgs
NyArODA3OCw3IEBAIFN0cmluZyBEb2N1bWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QKIAogYm9vbCBEb2N1bWVudDo6cmVn
aXN0ZXJDU1NQcm9wZXJ0eShDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkmJiBwcm9wKQogewot
ICAgIHJldHVybiBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBzdGQ6
Om1ha2VfdW5pcXVlPENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9wKSkp
LmlzTmV3RW50cnk7CisgICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChw
cm9wLm5hbWUsIG1ha2VVbmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3Zl
KHByb3ApKSkuaXNOZXdFbnRyeTsKIH0KIAogdm9pZCBEb2N1bWVudDo6ZGV0YWNoRnJvbUZyYW1l
KCkKQEAgLTgxNzIsNyArODE3Miw3IEBAIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlciYgRG9jdW1lbnQ6OmRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uCiAgICAgICAg
IHJldHVybiB0b3BEb2N1bWVudCgpLmRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlcigpOwogCiAgICAgaWYgKCFtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlcikKLSAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0Nv
bnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzQ29udHJvbGxlcj4oKnRoaXMpOworICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2RldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcjsKIH0KIApAQCAtODIwMyw3ICs4MjAzLDcgQEAg
dm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0
cmluZyYgbmFtZSwgUmVmPFBhaW50V28KIENvbnRlbnRDaGFuZ2VPYnNlcnZlciYgRG9jdW1lbnQ6
OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRDaGFuZ2VPYnNl
cnZlcikKLSAgICAgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRoaXMpOworICAgICAgICBtX2NvbnRlbnRDaGFuZ2VP
YnNlcnZlciA9IG1ha2VVbmlxdWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsgCiB9CiAKQEAgLTgyMTEsNyArODIxMSw3
IEBAIERPTVRpbWVySG9sZGluZ1RhbmsmIERvY3VtZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKCkK
IHsKICAgICBpZiAobV9kb21UaW1lckhvbGRpbmdUYW5rKQogICAgICAgICByZXR1cm4gKm1fZG9t
VGltZXJIb2xkaW5nVGFuazsKLSAgICBtX2RvbVRpbWVySG9sZGluZ1RhbmsgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7CisgICAgbV9kb21UaW1lckhvbGRpbmdUYW5r
ID0gbWFrZVVuaXF1ZTxET01UaW1lckhvbGRpbmdUYW5rPigpOwogICAgIHJldHVybiAqbV9kb21U
aW1lckhvbGRpbmdUYW5rOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGY5N2RiZTc1MWJk
NTA0MzYyNzNjMDc4ZjcwZWVhMTViNjVjNzYyYTkuLmE1ZTMyMDM5MjU5NDk1NTUzYzU5MzZjNWI4
MDcxZTQwZTBmOGU2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMjg0LDcgKzEyODQsNyBA
QCBjbGFzcyBEb2N1bWVudAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERvY3VtZW50UGFyc2VyWWll
bGRUb2tlbj4gY3JlYXRlUGFyc2VyWWllbGRUb2tlbigpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuPigqdGhpcyk7CiAg
ICAgfQogCiAgICAgYm9vbCBoYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VuKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZXJZaWVsZFRva2VuQ291bnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RXZlbnRRdWV1ZS5jcHAKaW5kZXggMDFjN2Y5NmUwMmU5ZWJkNTg4NTNmYjVkYjFjNGI4ODIxZTJm
OTcyOC4uMDM3MDNiNjJiYzY1MDU1NzhiMzg5Yjk5OTM4YTRkYWFiNmQ3NmM3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgY2xh
c3MgRG9jdW1lbnRFdmVudFF1ZXVlOjpUaW1lciBmaW5hbCA6IHB1YmxpYyBTdXNwZW5kYWJsZVRp
bWVyIHsKIAogRG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcGVuZGluZ0V2
ZW50VGltZXIoc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMpKQorICAgICwgbV9wZW5kaW5n
RXZlbnRUaW1lcihtYWtlVW5pcXVlPFRpbWVyPigqdGhpcykpCiAgICAgLCBtX2lzQ2xvc2VkKGZh
bHNlKQogewogICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN1c3BlbmRJZk5lZWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCA3
MjkxZDRhZGVlOWY0MTc3ZmRiZmVmZWVmZGRmMjY3MDU0YTljNGYwLi5lNzY0MWFmNjIxOGJmMTNh
YjBlM2M2ODkyMDIwZGU4ODljNGU5MDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoTm9kZSYgbm9kZSwgY29uc3QgRG9jdW1lbnRN
YXJrZXImIG5ld01hCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9t
YXJrZXJzLmFkZCgmbm9kZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgaWYgKCFs
aXN0KSB7Ci0gICAgICAgIGxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtlckxpc3Q+KCk7Cisg
ICAgICAgIGxpc3QgPSBtYWtlVW5pcXVlPE1hcmtlckxpc3Q+KCk7CiAgICAgICAgIGxpc3QtPmFw
cGVuZChSZW5kZXJlZERvY3VtZW50TWFya2VyKG5ld01hcmtlcikpOwogICAgIH0gZWxzZSBpZiAo
c2hvdWxkSW5zZXJ0QXNTZXBhcmF0ZU1hcmtlcihuZXdNYXJrZXIpKSB7CiAgICAgICAgIC8vIFdl
IGRvbid0IG1lcmdlIGRpY3RhdGlvbiBtYXJrZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRleCA4MWVmYjEwZDVlNzZlZGI2ZjZkMzgzNTMwMDUx
ZDI5YzM4OGVhZmRiLi44NTVhMmEwNjU2ZjcxYjQ1ZWU4ZDRmZmYyODRhNTM1Mzc5YTM4Nzk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtNDgs
NyArNDgsNyBAQCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50U3RvcmFnZUFjY2Vzcyo+KFN1cHBsZW1lbnQ8RG9jdW1lbnQ+Ojpmcm9t
KCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50U3Rv
cmFnZUFjY2Vzcz4oZG9jdW1lbnQpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vzcz4oZG9jdW1lbnQpOwogICAgICAgICBzdXBwbGVt
ZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZkb2N1bWVudCwg
c3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpAQCAtMTgz
LDcgKzE4Myw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIGJvb2wgc2hvdWxk
UHJlc2VydmVVc2VyR2VzdHVyZSA9IHdhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQ6OlllcyB8fCBwcm9tcHRXYXNTaG93biA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246
Ok5vOwogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRv
Y3VtZW50KV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1
ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9
IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byog
ZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQtPmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOwogICAgICAgICAgICAg
fSkpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1
ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSkgewotICAgICAgICAg
ICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRS
ZWZlcmVuY2UpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1
ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNl
ID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5jZSldICgpIHsKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQtPmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKICAgICAg
ICAgICAgIH0pKTsKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vz
czo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQog
CiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0
dXJlKCkKIHsKLSAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxV
c2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7
CisgICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVyZSA9IG1ha2VVbmlxdWU8VXNlckdlc3R1cmVJbmRp
Y2F0b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgJm1fZG9jdW1lbnQpOwogfQogCiB2b2lkIERv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNzEyMDA4ZjIxYjIzMWM0ZGUyMWM0MTNiNWQxMDg1ZDkz
ZjI1ZGFmMy4uYjBkOGFkNWQxNjQwOWE3YmU1NmJjM2MxMGI2OWQzMmJhNzUwZGMyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtNDc3LDcgKzQ3Nyw3IEBAIE5hbWVkTm9kZU1hcCYgRWxlbWVu
dDo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFw
ID0gcmFyZURhdGEuYXR0cmlidXRlTWFwKCkpCiAgICAgICAgIHJldHVybiAqYXR0cmlidXRlTWFw
OwogCi0gICAgcmFyZURhdGEuc2V0QXR0cmlidXRlTWFwKHN0ZDo6bWFrZV91bmlxdWU8TmFtZWRO
b2RlTWFwPihjb25zdF9jYXN0PEVsZW1lbnQmPigqdGhpcykpKTsKKyAgICByYXJlRGF0YS5zZXRB
dHRyaWJ1dGVNYXAobWFrZVVuaXF1ZTxOYW1lZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+
KCp0aGlzKSkpOwogICAgIHJldHVybiAqcmFyZURhdGEuYXR0cmlidXRlTWFwKCk7CiB9CiAKQEAg
LTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVu
dChKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZhCiAgICAgc2V0RmxhZyhJ
c0N1c3RvbUVsZW1lbnQpOwogICAgIGF1dG8mIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KTsKICAgICBpZiAoIWRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKSkKLSAgICAgICAg
ZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CisgICAgICAgIGRhdGEu
c2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUobWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOwogICAgIGludmFsaWRhdGVTdHlsZUZvclN1
YnRyZWUoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVs
ZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCB2b2lkIEVsZW1lbnQ6
OmVucXVldWVUb1VwZ3JhZGUoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJm
YWNlKQogICAgIGF1dG8mIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBib29s
IGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUgPSBkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlKCk7CiAgICAgaWYgKCFhbHJlYWR5U2NoZWR1bGVkVG9VcGdyYWRlKQotICAgICAgICBkYXRh
LnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0YS5zZXRD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlv
blF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAgZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rp
b25RdWV1ZSgpLT5lbnF1ZXVlRWxlbWVudFVwZ3JhZGUoKnRoaXMsIGFscmVhZHlTY2hlZHVsZWRU
b1VwZ3JhZGUpOwogfQogCkBAIC0zNDgwLDcgKzM0ODAsNyBAQCBET01Ub2tlbkxpc3QmIEVsZW1l
bnQ6OmNsYXNzTGlzdCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxl
bWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmNsYXNzTGlzdCgpKQotICAgICAgICBkYXRh
LnNldENsYXNzTGlzdChzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxO
YW1lczo6Y2xhc3NBdHRyKSk7CisgICAgICAgIGRhdGEuc2V0Q2xhc3NMaXN0KG1ha2VVbmlxdWU8
RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsKICAgICByZXR1cm4g
KmRhdGEuY2xhc3NMaXN0KCk7CiB9CiAKQEAgLTM0ODgsNyArMzQ4OCw3IEBAIERhdGFzZXRET01T
dHJpbmdNYXAmIEVsZW1lbnQ6OmRhdGFzZXQoKQogewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0
YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5kYXRhc2V0KCkpCi0g
ICAgICAgIGRhdGEuc2V0RGF0YXNldChzdGQ6Om1ha2VfdW5pcXVlPERhdGFzZXRET01TdHJpbmdN
YXA+KCp0aGlzKSk7CisgICAgICAgIGRhdGEuc2V0RGF0YXNldChtYWtlVW5pcXVlPERhdGFzZXRE
T01TdHJpbmdNYXA+KCp0aGlzKSk7CiAgICAgcmV0dXJuICpkYXRhLmRhdGFzZXQoKTsKIH0KIApA
QCAtMzYzMiw3ICszNjMyLDcgQEAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhJiBFbGVtZW50Ojpl
bnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKQogewogICAgIGF1dG8mIHJhcmVEYXRhID0g
ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS5pbnRlcnNlY3Rpb25P
YnNlcnZlckRhdGEoKSkKLSAgICAgICAgcmFyZURhdGEuc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJE
YXRhKHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKKyAgICAg
ICAgcmFyZURhdGEuc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKG1ha2VVbmlxdWU8SW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKICAgICByZXR1cm4gKnJhcmVEYXRhLmludGVyc2VjdGlv
bk9ic2VydmVyRGF0YSgpOwogfQogCkBAIC0zNjU4LDcgKzM2NTgsNyBAQCBSZXNpemVPYnNlcnZl
ckRhdGEmIEVsZW1lbnQ6OmVuc3VyZVJlc2l6ZU9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYg
cmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLnJl
c2l6ZU9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRh
dGEoc3RkOjptYWtlX3VuaXF1ZTxSZXNpemVPYnNlcnZlckRhdGE+KCkpOworICAgICAgICByYXJl
RGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEobWFrZVVuaXF1ZTxSZXNpemVPYnNlcnZlckRhdGE+
KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEucmVzaXplT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAppbmRleCBkOWU2NjM0OWNiZGJhMGJi
ODFkMmFjZmJmZGMwZDQzMzc4YzY1OGRiLi4wYjA5ZDA4MmMzNmVkZGQ4NGI5Y2RlOTg4MjUyNzJk
YjVmOTZlNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC0x
NDIsNyArMTQyLDcgQEAgYm9vbCBFdmVudExpc3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXMKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgYXV0byBsaXN0ZW5lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
TGlzdGVuZXJWZWN0b3I+KCk7CisgICAgYXV0byBsaXN0ZW5lcnMgPSBtYWtlVW5pcXVlPEV2ZW50
TGlzdGVuZXJWZWN0b3I+KCk7CiAgICAgbGlzdGVuZXJzLT51bmNoZWNrZWRBcHBlbmQoUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucykpOwog
ICAgIG1fZW50cmllcy5hcHBlbmQoeyBldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXJzKSB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDllOTMwOGJiNWRh
MTQ2MWUzNThlM2NjNjJmZWFmZGNmY2QwY2M3YWQuLjViNmFiNjg3NTViNjFiZmUyZDRhNjhiY2Jl
NzUyNGZkMGRkYWJiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMzM5LDEzICszMzks
MTMgQEAgc3RydWN0IEV2ZW50TmFtZXMgewogICAgIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChE
T01fRVZFTlRfTkFNRVNfREVDTEFSRSkKICN1bmRlZiBET01fRVZFTlRfTkFNRVNfREVDTEFSRQog
Ci0gICAgLy8gRklYTUU6IFRoZSBmcmllbmQgZGVjbGFyYXRpb24gdG8gc3RkOjptYWtlX3VuaXF1
ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdpbmRvd3MgcG9ydC4KKyAgICAvLyBGSVhNRTogVGhl
IGZyaWVuZCBkZWNsYXJhdGlvbiB0byBtYWtlVW5pcXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4g
d2luZG93cyBwb3J0LgogICAgIC8vCiAgICAgLy8gdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4g
QXJncz4KLSAgICAvLyBmcmllbmQgdHlwZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xl
X29iamVjdCBzdGQ6Om1ha2VfdW5pcXVlKEFyZ3MmJi4uLik7CisgICAgLy8gZnJpZW5kIHR5cGVu
YW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3QgbWFrZVVuaXF1ZShBcmdzJiYu
Li4pOwogICAgIC8vCiAgICAgLy8gVGhpcyBjcmVhdGUgZnVuY3Rpb24gc2hvdWxkIGJlIGRlbGV0
ZWQgbGF0ZXIgYW5kIGlzIG9ubHkgZm9yIGtlZXBpbmcgRXZlbnROYW1lcyBhcyBwcml2YXRlLgot
ICAgIC8vIHN0ZDo6bWFrZV91bmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAvLyBt
YWtlVW5pcXVlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCiAgICAgLy8KICAgICB0ZW1wbGF0ZTxj
bGFzcy4uLiBBcmdzPgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3Jl
YXRlKEFyZ3MmJi4uLiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAppbmRleCBkYjE0Mjhk
MWQ0MjYwNThjYjY1YjFlYjZmYWNhMjNkYjk4OTI4MmJkLi5hMGFkMGFkN2M0ODI2OTJlNjM4ZTU3
MjgwZjFhMjkyNDdhY2VjMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQ
YXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcApAQCAtMTE1LDE3
ICsxMTUsMTcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdl
dCwgRXZlbnQmIGV2ZW50KQogewogICAgIHVzaW5nIE1ha2VFdmVudENvbnRleHQgPSBzdGQ6OnVu
aXF1ZV9wdHI8RXZlbnRDb250ZXh0PiAoKikoTm9kZSYsIEV2ZW50VGFyZ2V0KiwgRXZlbnRUYXJn
ZXQqLCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgIE1ha2VFdmVudENvbnRleHQgbWFrZUV2
ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwg
RXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQs
IHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxF
dmVudENvbnRleHQ+KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0Rl
cHRoKTsKICAgICB9OwogICAgIGlmIChpczxNb3VzZUV2ZW50PihldmVudCkgfHwgZXZlbnQuaXNG
b2N1c0V2ZW50KCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2Rl
LCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNs
b3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+
KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBj
dXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICAgICAgfTsKICAg
ICB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoaXM8VG91Y2hFdmVudD4oZXZl
bnQpKSB7CiAgICAgICAgIG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRU
YXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFk
b3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gewotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRU
YXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VG91Y2hFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwg
Y2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9OwogICAgIH0KICNlbmRpZgpAQCAtMTQ5LDcg
KzE0OSw3IEBAIHZvaWQgRXZlbnRQYXRoOjpidWlsZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQs
IEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxEb2N1bWVudD4oKm5vZGUpLmRvbVdpbmRvdygpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFk
b3dEZXB0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFr
ZVVuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9z
ZWRTaGFkb3dEZXB0aCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwOCw3ICszMDgsNyBAQCBFdmVudFBhdGg6
OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiB0YXJnZXRzKQogICAgICAgICBBU1NF
UlQodGFyZ2V0KTsKICAgICAgICAgTm9kZSogb3JpZ2luID0gKnRhcmdldHMuYmVnaW4oKTsKICAg
ICAgICAgaWYgKCF0YXJnZXQtPmlzQ2xvc2VkU2hhZG93SGlkZGVuKCpvcmlnaW4pKQotICAgICAg
ICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0
LCB0YXJnZXQsIG9yaWdpbiwgMCkpOworICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5p
cXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwgMCkpOwogICAgIH0KIH0K
IApAQCAtMzE3LDcgKzMxNyw3IEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxF
dmVudFRhcmdldCo+JiB0YXJnZXRzKQogICAgIGZvciAoYXV0byogdGFyZ2V0IDogdGFyZ2V0cykg
ewogICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgQVNTRVJUKCFpczxOb2RlPih0YXJn
ZXQpKTsKLSAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4
dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5iZWdpbigpLCAwKSk7CisgICAgICAgIG1fcGF0
aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KG51bGxwdHIsIHRhcmdldCwgKnRhcmdl
dHMuYmVnaW4oKSwgMCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1h
bmFnZXIuaAppbmRleCBlZGQ5Y2EyOGVhNDkzYWM3Yzk0YzhiZGUyODViMTY2NmMzODgyNTU5Li5h
NzBiY2FlY2NjODc5NWE0ZjRiYTQyNmUyNTEzZGZmN2EwZjc0YjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBSZW5kZXJUcmVl
QnVpbGRlcjsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBGdWxsc2NyZWVuTWFuYWdlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRnVsbHNjcmVlbk1h
bmFnZXIoRG9jdW1lbnQmKTsKICAgICB+RnVsbHNjcmVlbk1hbmFnZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKaW5kZXggYjNhMDZlNDdi
MDcwMGY3YzQ3ZDNkOWFlZjMzZjQ0MzcyNGUwYzU1ZS4uOTQwZWZjYWVkODMwOTFjMjU4M2ZhOWUz
MzZlZjNkNzhjNTRhYTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6OmFkZE9ic2VydmVyKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBJZFRhcmdldE9ic2Vy
dmUKICAgICAKICAgICBJZFRvT2JzZXJ2ZXJTZXRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3Jl
Z2lzdHJ5LmFkZChpZC5pbXBsKCksIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T2Jz
ZXJ2ZXJTZXQ+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PE9ic2VydmVyU2V0PigpOwogCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKG9ic2Vy
dmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAppbmRleCA3ZTdhMzQ3OTdi
ODYyOWY2MmY3Zjc4NmFiMTRjNWM2ZjViZDkwYjE0Li5jZTg1NmJiNTVkNWJkOTllNjZmNTBjYjU1
YjBiZTQ3OTBlMDk4NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRF
dmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCkBAIC05
Niw3ICs5Niw3IEBAIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZh
dWx0OwogaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQogICAgIDogVUlF
dmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgp
KSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6WWVzLCBJc0NvbXBvc2VkOjpZZXMsCiAg
ICAgICAgIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldy5j
b3B5UmVmKCksIDAsIGtleS5tb2RpZmllcnMoKSwgSXNUcnVzdGVkOjpZZXMpCi0gICAgLCBtX3Vu
ZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2
ZW50PihrZXkpKQorICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChtYWtlVW5pcXVlPFBs
YXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJ
QlVURSkKICAgICAsIG1fa2V5KGtleS5rZXkoKSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tz
LmgKaW5kZXggYjYzMTg0MTUwZjVhMzkxNDI1MmI4NDJlZDlkMDdkZWFhZjZiNDAzNi4uNWQ1MGI3
ZDVkN2IyM2E2MWRjYmJjYzVmOGI1ZjFmYmFiMmJiNGIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01pY3JvdGFza3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNr
cy5oCkBAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFZvaWRNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMg
TWljcm90YXNrIHsKIH07CiAKIGNsYXNzIE1pY3JvdGFza1F1ZXVlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8TWljcm90YXNrUXVldWU+
OwogICAgIGZyaWVuZCBjbGFzcyBNaWNyb3Rhc2s7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggNjZjNWVhMGI5ZDYzNDU0NDM4MTJmYjEzMWZmZTVk
YmU2Y2ExZGRmMy4uMTkzZjI3ODA1YTVhZWQ0YjYwNmU5Y2VlYTNhOWEzNWQ4YjFlOTkzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBA
IHN0YXRpYyB2b2lkIHF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKCkKICAg
ICBpZiAobXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVkRmxhZykKICAgICAg
ICAgcmV0dXJuOwogICAgIG11dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFza1F1ZXVlZEZs
YWcgPSB0cnVlOwotICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90YXNrPigpKTsKKyAgICBNaWNy
b3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0YXRpb25P
YnNlcnZlck1pY3JvdGFzaz4oKSk7CiB9CiAKIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZW5xdWV1
ZU11dGF0aW9uUmVjb3JkKFJlZjxNdXRhdGlvblJlY29yZD4mJiBtdXRhdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCmlu
ZGV4IDUyZGE2MWY3NGYxZjU3YWY2ODU0OWYzNjY1NjMwNmQ4ZDE3MDNjNzkuLjAyNzZlNDJiZTVi
ZDgzZmY0MmE3OTM1NmJkZTljZTczNjA5OWNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApAQCAtNTEsNyArNTEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IE11dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcgogICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2VydmVycyksIG9sZFZhbHVl
RmxhZyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKIH0KIAogYm9vbCBNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJlcXVlc3RlZCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
aW5kZXggYzhmYzAxMDY3MjQ1ZTRlMzYxOTdhMmY2ZDRkMWU0NTc1NDdiYmM4YS4uZTVjNmRkMTZh
NGRiNjA5YmE1MjczYTQ3YWY3ZmE2ODI2NjJhMmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtNjgsNyArNjgsNyBA
QCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJlZU5vZGVX
aWxsRGV0YWNoKE5vZGUmIG5vZGUpCiAgICAgbV9vYnNlcnZlci0+c2V0SGFzVHJhbnNpZW50UmVn
aXN0cmF0aW9uKCk7CiAKICAgICBpZiAoIW1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpIHsK
LSAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7CisgICAgICAgIG1fdHJhbnNpZW50UmVn
aXN0cmF0aW9uTm9kZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8Tm9kZT4+
PigpOwogCiAgICAgICAgIEFTU0VSVCghbV9ub2RlS2VwdEFsaXZlKTsKICAgICAgICAgbV9ub2Rl
S2VwdEFsaXZlID0gJm1fbm9kZTsgLy8gQmFsYW5jZWQgaW4gdGFrZVRyYW5zaWVudFJlZ2lzdHJh
dGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzZkNGVhOWQ3MzBhOTIzNzJhOWY4ZTdhNmQ4ZjY3
ZDAwZmQzZGJmNS4uY2FiZjFlYjU4YzljMjNjYWQ4ODViZDAxZGYxMjJiNjUxYWUwMmJkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtMzk4LDkgKzM5OCw5IEBAIHZvaWQgTm9kZTo6bWF0ZXJpYWxpemVS
YXJlRGF0YSgpCiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhOwogICAgIGlmIChpczxFbGVtZW50
PigqdGhpcykpCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0
YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7
CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4oZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7CiAgICAgZWxzZQotICAg
ICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5tX3JlbmRl
cmVyKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPE5vZGVSYXJlRGF0YT4o
bV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoZGF0YSk7CiAKICAgICBt
X2RhdGEubV9yYXJlRGF0YSA9IGRhdGE7CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBFdmVudFRhcmdl
dERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAKICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKHNfZXZlbnRUYXJnZXREYXRhTWFwTG9jayk7CiAgICAgc2V0SGFzRXZlbnRUYXJn
ZXREYXRhKHRydWUpOwotICAgIHJldHVybiAqZXZlbnRUYXJnZXREYXRhTWFwKCkuYWRkKHRoaXMs
IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXREYXRhPigpKS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhpcywgbWFrZVVuaXF1ZTxFdmVu
dFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBOb2RlOjpjbGVhckV2
ZW50VGFyZ2V0RGF0YSgpCkBAIC0yMjg3LDcgKzIyODcsNyBAQCB2b2lkIE5vZGU6OnJlZ2lzdGVy
TXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgTXV0YXRpb25PYnNl
cnZlcgogICAgIH0KIAogICAgIGlmICghcmVnaXN0cmF0aW9uKSB7Ci0gICAgICAgIHJlZ2lzdHJ5
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9i
c2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7CisgICAgICAgIHJlZ2lz
dHJ5LmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9ic2Vy
dmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7CiAgICAgICAgIHJlZ2lzdHJh
dGlvbiA9IHJlZ2lzdHJ5Lmxhc3QoKS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaAppbmRleCA3NjkwZDU5OWZjYTdkYzk5Y2I0OWUxNjBmYmUyYWZhZGRmMDBjZGY0Li43
NjZkNjdmM2Y2ZDYyOWFmMDg5NDJhZGMyM2UyYzIyYzI5ZjNlNDY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oCkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIDogcHVi
bGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVMaXN0c05vZGVEYXRhJiBlbnN1cmVOb2Rl
TGlzdHMoKQogICAgIHsKICAgICAgICAgaWYgKCFtX25vZGVMaXN0cykKLSAgICAgICAgICAgIG1f
bm9kZUxpc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTGlzdHNOb2RlRGF0YT4oKTsKKyAgICAg
ICAgICAgIG1fbm9kZUxpc3RzID0gbWFrZVVuaXF1ZTxOb2RlTGlzdHNOb2RlRGF0YT4oKTsKICAg
ICAgICAgcmV0dXJuICptX25vZGVMaXN0czsKICAgICB9CiAKQEAgLTI4OSw3ICsyODksNyBAQCBj
bGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgTm9kZU11
dGF0aW9uT2JzZXJ2ZXJEYXRhJiBlbnN1cmVNdXRhdGlvbk9ic2VydmVyRGF0YSgpCiAgICAgewog
ICAgICAgICBpZiAoIW1fbXV0YXRpb25PYnNlcnZlckRhdGEpCi0gICAgICAgICAgICBtX211dGF0
aW9uT2JzZXJ2ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTXV0YXRpb25PYnNlcnZlckRh
dGE+KCk7CisgICAgICAgICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gbWFrZVVuaXF1ZTxO
b2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9tdXRhdGlvbk9i
c2VydmVyRGF0YTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRp
b0J1dHRvbkdyb3Vwcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMu
Y3BwCmluZGV4IDUzMzdjNThjZGZiYmFhYjIzMDE4NDUwMjYzOGRjNjM0NDlmNzk2YWMuLjYxYmJj
NGVkZmY5MzRhNjQ0NmVhMjU2NzU1NjYzZmQ1NDY4NzdlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JhZGlvQnV0dG9uR3JvdXBzLmNwcApAQCAtMTk4LDExICsxOTgsMTEgQEAgdm9pZCBSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKLSAgICAgICAgbV9uYW1lVG9H
cm91cE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CisgICAgICAgIG1f
bmFtZVRvR3JvdXBNYXAgPSBtYWtlVW5pcXVlPE5hbWVUb0dyb3VwTWFwPigpOwogCiAgICAgYXV0
byYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC5uYW1lKCkuaW1wbCgpLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFncm91cCkKLSAgICAgICAgZ3JvdXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CisgICAgICAgIGdyb3VwID0g
bWFrZVVuaXF1ZTxSYWRpb0J1dHRvbkdyb3VwPigpOwogICAgIGdyb3VwLT5hZGQoZWxlbWVudCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCBjODI1YTdlZGVlNmJiMmQ1ZjUxNmM2ZDNlNmVhNzQxMGU2ZWNjNzU2Li4wNGFmZTlkNzhh
ZDBiZDEwMjhhNjcwM2MwZmMzZDRmNjUzYjEzZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNzksOCArMzc5LDggQEAgdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW4KIHsKICAgICBpZiAobV9pbkRpc3BhdGNoRXJyb3JFdmVudCkgewogICAg
ICAgICBpZiAoIW1fcGVuZGluZ0V4Y2VwdGlvbnMpCi0gICAgICAgICAgICBtX3BlbmRpbmdFeGNl
cHRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdF
eGNlcHRpb24+Pj4oKTsKLSAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucy0+YXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgICAgICAg
ICBtX3BlbmRpbmdFeGNlcHRpb25zID0gbWFrZVVuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsKKyAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucy0+YXBw
ZW5kKG1ha2VVbmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTQxNCw5ICs0MTQsOSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnJlcG9ydFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24oSlNDOjpFeGVjU3RhdGUm
IHN0YQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246ICIsIHJlc3VsdE1lc3NhZ2UpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChjYWxsU3RhY2spCi0g
ICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
bWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVz
c2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVsc2UKLSAgICAgICAgbWVz
c2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9y
TWVzc2FnZSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwogICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAgUmVqZWN0ZWRQcm9taXNlVHJhY2tl
ciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNs
b3cKICAgICAvLyBXaGVuIGluaXRpYWxpemluZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCB2bSgp
IGlzIG5vdCByZWFkeS4KIAogICAgIEFTU0VSVCghbV9yZWplY3RlZFByb21pc2VUcmFja2VyKTsK
LSAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlamVjdGVk
UHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsKKyAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNr
ZXIgPSBtYWtlVW5pcXVlPFJlamVjdGVkUHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsKICAg
ICByZXR1cm4gKm1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDU1ZGMyYzg3YTRhYzIwMmQ3MWFkZGE2NmQ1OTZi
NWZlYTBiYzg4NTYuLjIxMDljZTRhMjI4YzNlN2JhODdhNGJhNTJiMmRiMjgyMzYwODcxMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTYzMyw3ICs2MzMsNyBAQCBFeGNl
cHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gU2VsZWN0b3JRdWVyeUNhY2hlOjphZGQoY29uc3QgU3Ry
aW5nJiBzZWxlY3RvcnMsIERvYwogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1heGltdW1T
ZWxlY3RvclF1ZXJ5Q2FjaGVTaXplKQogICAgICAgICBtX2VudHJpZXMucmVtb3ZlKG1fZW50cmll
cy5yYW5kb20oKSk7CiAKLSAgICByZXR1cm4gKm1fZW50cmllcy5hZGQoc2VsZWN0b3JzLCBzdGQ6
Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0b3JMaXN0KSkpLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKm1fZW50cmllcy5hZGQoc2VsZWN0b3JzLCBtYWtlVW5p
cXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1
ZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDY5NjNiNjgzNzlkODhm
MjdhODRlMmYxZGE2NTE1MzgxODA1YjI5M2MuLjY3ODZjMGQyMWUxYjJjMmE1Nzg1MWJkMDg1MTY0
YzFhMWU5MmM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RN
b2RlIHR5cGUpCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dS
b290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZSh0eXBl
KQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhp
cykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkK
IHsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50
JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50PiYmIHNsbwogICAgIDog
RG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAsIFRyZWVT
Y29wZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUoU2hhZG93Um9vdE1vZGU6OlVzZXJB
Z2VudCkKLSAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4o
KnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhp
cykpCiAgICAgLCBtX3Nsb3RBc3NpZ25tZW50KFdURk1vdmUoc2xvdEFzc2lnbm1lbnQpKQogewog
fQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05l
d0RvY3VtZW50KERvY3VtZW50JiBuZXdEb2N1bWVudCkKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFwYXJlbnRUcmVlU2NvcGUoKSB8fCAmcGFyZW50VHJlZVNj
b3BlKCktPmRvY3VtZW50U2NvcGUoKSA9PSAmbmV3RG9jdW1lbnQpOwogCiAgICAgLy8gU3R5bGUg
c2NvcGVzIGFyZSBkb2N1bWVudCBzcGVjaWZpYy4KLSAgICBtX3N0eWxlU2NvcGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpOworICAgIG1fc3R5bGVTY29wZSA9IG1ha2VV
bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTigmbV9zdHlsZVNjb3BlLT5kb2N1bWVudCgpID09ICZuZXdEb2N1bWVu
dCk7CiB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVt
ZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVudCYgcwogewog
ICAgIEFTU0VSVCgmc2xvdC5yb290Tm9kZSgpID09IHRoaXMpOwogICAgIGlmICghbV9zbG90QXNz
aWdubWVudCkKLSAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U2xv
dEFzc2lnbm1lbnQ+KCk7CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlPFNs
b3RBc3NpZ25tZW50PigpOwogCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPmFkZFNsb3RF
bGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFz
c2lnbm1lbnQuY3BwCmluZGV4IGE0MTlkZGE1MjhhY2NiZGE2ZGU5ZGRmMWE1NDg2NGNmZGY5MTYw
ZWYuLjQ1YzA4ZWEzNmFmZTEzOTdiZTBlY2JmYjI5ZTIyOGVjZDBjOTkwNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU2xvdEFz
c2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhU
TUxTbG90RWxlbWVuCiAgICAgICAgIC8vIHRvIGF2b2lkIGFsd2F5cyBoYXZpbmcgYSB2ZWN0b3Ig
b2YgYWxsIGNoaWxkIG5vZGVzIG9mIGEgc2hhZG93IGhvc3QuCiAgICAgICAgIGlmIChzbG90TmFt
ZSA9PSBkZWZhdWx0U2xvdE5hbWUoKSkKICAgICAgICAgICAgIG1fc2xvdEFzc2lnbm1lbnRzSXNW
YWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90PigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwogICAgIGF1dG8mIHNs
b3QgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBib29sIG5lZWRzU2xvdGNoYW5n
ZUV2ZW50ID0gc2hhZG93Um9vdC5zaG91bGRGaXJlU2xvdGNoYW5nZUV2ZW50KCkgJiYgaGFzQXNz
aWduZWROb2RlcyhzaGFkb3dSb290LCBzbG90KTsKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFNs
b3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QoTm9kZSYgY2hpbGQsIGNvbnN0IEF0b21TdHJpbmcm
IHNsb3ROYW1lKQogICAgIH0KIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zbG90cy5lbnN1cmUo
c2xvdE5hbWUsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2xvdD4oKTsKICAgICB9KTsKICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLT5hc3NpZ25lZE5vZGVzLmFwcGVuZCgmY2hpbGQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAyZjI4NzBkMTY2OWQ0NGJjNjE4NGE3MmVjNjNlYjMy
M2Y1MjdkMzlmLi41MzFhY2RmNGRkNjU2OGUwZjQ2MjFlYjUwZDg5ZGVlNDY3ZDU1YTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBUcmVlU2NvcGU6OlRyZWVT
Y29wZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBt
X3Jvb3ROb2RlKHNoYWRvd1Jvb3QpCiAgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1lbnQpCiAg
ICAgLCBtX3BhcmVudFRyZWVTY29wZSgmZG9jdW1lbnQpCi0gICAgLCBtX2lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkK
KyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KG1ha2VVbmlxdWU8SWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5PigpKQogewogICAgIHNoYWRvd1Jvb3Quc2V0VHJlZVNjb3BlKCp0aGlzKTsK
IH0KQEAgLTczLDcgKzczLDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIDogbV9yb290Tm9kZShkb2N1bWVudCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShk
b2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKG51bGxwdHIpCi0gICAgLCBtX2lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KG1ha2VVbmlxdWU8SWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewogICAgIGRvY3VtZW50LnNldFRyZWVTY29wZSgq
dGhpcyk7CiB9CkBAIC0xNDEsNyArMTQxLDcgQEAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogVHJl
ZVNjb3BlOjpnZXRBbGxFbGVtZW50c0J5SWQoY29uc3QgQXRvbVN0cmluZyYgZWxlbWVudEkKIHZv
aWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nSW1wbCYgZWxlbWVu
dElkLCBFbGVtZW50JiBlbGVtZW50LCBib29sIG5vdGlmeU9ic2VydmVycykKIHsKICAgICBpZiAo
IW1fZWxlbWVudHNCeUlkKQotICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9lbGVtZW50c0J5SWQgPSBtYWtl
VW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9lbGVtZW50c0J5SWQtPmFkZChl
bGVtZW50SWQsIGVsZW1lbnQsICp0aGlzKTsKICAgICBpZiAobm90aWZ5T2JzZXJ2ZXJzKQogICAg
ICAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJ
ZCk7CkBAIC0xNjgsNyArMTY4LDcgQEAgRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlO
YW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkRWxl
bWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBpZiAoIW1fZWxlbWVudHNCeU5hbWUpCi0gICAgICAgIG1fZWxlbWVudHNCeU5hbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fZWxl
bWVudHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9l
bGVtZW50c0J5TmFtZS0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIApAQCAtMjM5LDcg
KzIzOSw3IEBAIHZvaWQgVHJlZVNjb3BlOjphZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVudCYgaW1h
Z2VNYXApCiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2ltYWdl
TWFwc0J5TmFtZSkKLSAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VNYXBzQnlOYW1lID0gbWFr
ZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIG1faW1hZ2VNYXBzQnlOYW1lLT5h
ZGQoKm5hbWUsIGltYWdlTWFwLCAqdGhpcyk7CiB9CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBIVE1M
TWFwRWxlbWVudCogVHJlZVNjb3BlOjpnZXRJbWFnZU1hcChjb25zdCBBdG9tU3RyaW5nJiBuYW1l
KSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0
b21TdHJpbmdJbXBsJiBuYW1lLCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlm
ICghbV9pbWFnZXNCeVVzZW1hcCkKLSAgICAgICAgbV9pbWFnZXNCeVVzZW1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZXNCeVVzZW1h
cCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICByZXR1cm4gbV9pbWFn
ZXNCeVVzZW1hcC0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIApAQCAtMzAwLDcgKzMw
MCw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIFRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQoY29u
c3QgQXRvbVN0cmluZyYgZm9yQXR0cmlidXRlVmFsCiAKICAgICBpZiAoIW1fbGFiZWxzQnlGb3JB
dHRyaWJ1dGUpIHsKICAgICAgICAgLy8gUG9wdWxhdGUgdGhlIG1hcCBvbiBmaXJzdCBhY2Nlc3Mu
Ci0gICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVT
Y29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBtYWtl
VW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAKICAgICAgICAgZm9yIChhdXRvJiBsYWJl
bCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxMYWJlbEVsZW1lbnQ+KG1fcm9vdE5vZGUpKSB7CiAg
ICAgICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JWYWx1ZSA9IGxhYmVsLmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZm9yQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
aW5kZXggNzkzNDJjNDk3NzUzZDlhMTUyNmUwNTU1NDlmYzc3OTcyMTRiZjZlNC4uODkxYzEyODhj
NmUzMTRhY2NhZTliNjI3MTk3ODE4ODFlNzQyZGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcApAQCAtMzgwLDEyICszODAsMTIgQEAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0
ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCwKICAgICBz
d2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6Q29weToKICAgICBj
YXNlIENsaXBib2FyZEV2ZW50S2luZDo6Q3V0OgotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2Rl
OjpSZWFkV3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAg
ICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwg
RGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0
ZWJvYXJkPigpKTsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1BsYWluVGV4
dDoKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
Y3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gcGxhaW5U
ZXh0VHlwZSA9ICJ0ZXh0L3BsYWluIl9zOwogICAgICAgICAgICAgYXV0byBwbGFpblRleHQgPSBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+cmVhZFN0cmluZyhwbGFpblRleHRU
eXBlKTsKLSAgICAgICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3Rh
dGljUGFzdGVib2FyZD4oKTsKKyAgICAgICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlx
dWU8U3RhdGljUGFzdGVib2FyZD4oKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmQtPndyaXRlU3Ry
aW5nKHBsYWluVGV4dFR5cGUsIHBsYWluVGV4dCk7CiAgICAgICAgICAgICByZXR1cm4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3Rv
cmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSk7CiAgICAgICAgIH0KQEAgLTM5
NiwxMCArMzk2LDEwIEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNm
ZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAgICAgY2FzZSBDbGlwYm9h
cmRFdmVudEtpbmQ6OkJlZm9yZUNvcHk6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJl
Zm9yZUN1dDoKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlUGFzdGU6Ci0gICAg
ICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwg
RGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGlj
UGFzdGVib2FyZD4oKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIG1h
a2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShk
b2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIHN0ZDo6bWFrZV91bmlx
dWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxp
ZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKIH0KIAogLy8gUmV0dXJucyB3aGV0
aGVyIGNhbGxlciBzaG91bGQgY29udGludWUgd2l0aCAidGhlIGRlZmF1bHQgcHJvY2Vzc2luZyIs
IHdoaWNoIGlzIHRoZSBzYW1lIGFzCkBAIC0xMTgzLDkgKzExODMsOSBAQCB2b2lkIEVkaXRvcjo6
cmVhcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikKIAog
RWRpdG9yOjpFZGl0b3IoRnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKLSAgICAs
IG1fa2lsbFJpbmcoc3RkOjptYWtlX3VuaXF1ZTxQQUw6OktpbGxSaW5nPigpKQotICAgICwgbV9z
cGVsbENoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxTcGVsbENoZWNrZXI+KGZyYW1lKSkKLSAgICAs
IG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKKyAgICAsIG1fa2lsbFJpbmcobWFrZVVuaXF1ZTxQQUw6
OktpbGxSaW5nPigpKQorICAgICwgbV9zcGVsbENoZWNrZXIobWFrZVVuaXF1ZTxTcGVsbENoZWNr
ZXI+KGZyYW1lKSkKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcihtYWtlVW5pcXVl
PEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAsIG1fZWRpdG9yVUlVcGRh
dGVUaW1lcigqdGhpcywgJkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1lckZpcmVkKQogI2lmIEVO
QUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLCBtX3RlbGVwaG9uZU51bWJlckRldGVjdGlvblVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRp
dG9yOjpzY2FuU2VsZWN0aW9uRm9yVGVsZXBob25lTnVtYmVycykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggMGRkYzE1YmRj
MGQzMDRmNDU0M2EwNTk2MmJjNmNjNzY0NWY1NDc5NC4uMmMyMDI4Y2M2M2MxYjkzOGJjNjZmZjRi
ZWE1ODk5MjU4ZTlhNGE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE2MzEsNyArMTYzMSw3IEBAIHZvaWQgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OnVwZGF0ZU5vZGVzSW5zZXJ0ZWQoTm9kZSAqbm9kZSkKIFJlcGxh
Y2VtZW50RnJhZ21lbnQqIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNlbWVu
dEZyYWdtZW50KCkKIHsKICAgICBpZiAoIW1fcmVwbGFjZW1lbnRGcmFnbWVudCkKLSAgICAgICAg
bV9yZXBsYWNlbWVudEZyYWdtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlbWVudEZyYWdt
ZW50PihtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICAg
ICAgbV9yZXBsYWNlbWVudEZyYWdtZW50ID0gbWFrZVVuaXF1ZTxSZXBsYWNlbWVudEZyYWdtZW50
PihtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIGVuZGluZ1NlbGVjdGlvbigpKTsKICAgICByZXR1
cm4gbV9yZXBsYWNlbWVudEZyYWdtZW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKaW5kZXggM2I0MDY4OGNiNGRhNjU2
YjM0NDU4N2MwODg4NjM2YzBhYjE1NjZjZi4uZjliNjRjNWM4Yzg5NmJmMzIyNjMwODcwOWYyNmFh
NjY3ZTFlZDk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25S
ZWN0R2F0aGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVj
dEdhdGhlcmVyLmNwcApAQCAtODEsNyArODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VsZWN0aW9u
UmVjdEdhdGhlcmVyOjpOb3RpZmllcj4gU2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZAog
ICAgIG1fZ2FwUmVjdHMuY2xlYXIoKTsKICAgICBtX2lzVGV4dE9ubHkgPSB0cnVlOwogCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggMTg5NmUxYTIyODFjMWE5
YjA0NmU4ZWZhY2Q5MTE5YWY1ZTI3N2Q1Ni4uZjFkMTljMTAxMTRjMWE5ODViOGI0MjZmYTY4ZmRi
ODEyMmE2MGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAt
NjUwLDcgKzY1MCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAg
ICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gKG1fbm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9lbmRPZmZzZXQpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgp
OwogICAgICAgICBpZiAoIW1fZmxvd1J1blJlc29sdmVyQ2FjaGUgfHwgJm1fZmxvd1J1blJlc29s
dmVyQ2FjaGUtPmZsb3coKSAhPSAmYmxvY2tGbG93KSB7CiAgICAgICAgICAgICBtX2FjY3VtdWxh
dGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyA9IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPyAwIDog
dGV4dE5vZGVPZmZzZXRJbkZsb3codGV4dE5vZGUpOwotICAgICAgICAgICAgbV9mbG93UnVuUmVz
b2x2ZXJDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2
ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7CisgICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNh
Y2hlID0gbWFrZVVuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93
LCAqbGF5b3V0KTsKICAgICAgICAgfQogICAgICAgICAvLyBTa2lwIHRvIG1fb2Zmc2V0IHBvc2l0
aW9uLgogICAgICAgICBhdXRvIHJhbmdlID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+cmFuZ2VG
b3JSZW5kZXJlcihyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KaW5kZXggMGE4M2FjMDk1OTI3NGMwNzgwZDVkN2IzODVmMDE5YzBlODZl
M2M3NC4uOWNmODZhNGExNWYxYzdjNmYwMjgxNTU2NDdhZmEwMDU5YWUzYjZmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzgwLDcgKzM4
MCw3IEBAIEhUTUxDb252ZXJ0ZXI6OkhUTUxDb252ZXJ0ZXIoY29uc3QgUG9zaXRpb24mIHN0YXJ0
LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogICAgIF9mbGFncy5yZWFjaGVkU3RhcnQgPSBmYWxzZTsK
ICAgICBfZmxhZ3MucmVhY2hlZEVuZCA9IGZhbHNlOwogICAgIAotICAgIF9jYWNoZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhUTUxDb252ZXJ0ZXJDYWNoZXM+KCk7CisgICAgX2NhY2hlcyA9IG1ha2VV
bmlxdWU8SFRNTENvbnZlcnRlckNhY2hlcz4oKTsKIH0KIAogSFRNTENvbnZlcnRlcjo6fkhUTUxD
b252ZXJ0ZXIoKQpAQCAtNTUxLDcgKzU1MSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gSFRNTENvbnZl
cnRlckNhY2hlczo6Y29tcHV0ZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudChFbGVtZW50JiBlCiAK
ICAgICBhdXRvIHJlc3VsdCA9IG1fY29tcHV0ZWRTdHlsZXMuYWRkKCZlbGVtZW50LCBudWxscHRy
KTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+KCZlbGVtZW50
LCB0cnVlKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8Q29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1lbnQsIHRydWUpOwogICAgIENvbXB1dGVkU3R5bGVF
eHRyYWN0b3ImIGNvbXB1dGVkU3R5bGUgPSAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBy
ZXR1cm4gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5SWQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIuaAppbmRleCAyNTc3ZDVhNzY5NjgxNjIyZjVkMGE3YjYzZmY0ZDA5ZDg4Yzk1ZGMxLi4y
OWM1YThkYTdlZTMyNTU2MTI2NTY5MDU0ZTMwMjIyOGE1MzAxODExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIu
aApAQCAtMzcsNiArMzcsNyBAQCBPQkpDX0NMQVNTIE5TVmlldzsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIo
KSB7IH0KICAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4KQEAgLTUyLDYgKzUzLDcgQEAgY2xh
c3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKICAgICB2b2lkIGRpc21pc3NBbHRlcm5h
dGl2ZXMoKTsKIAogICAgIGNsYXNzIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIgewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFs
ZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKSB7IH0KICAgICAgICAgdWludDY0X3QgYWRk
QWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZmI0MzcxNjMwM2FlMjViODE5MjkyZDI3MWNhMmNh
ZTY4NGI5YzAyZS4uYzNjOGY4YjMyNGJmZWNkY2U5ZTVjNGViMTliNWI3NDYwODkyOGMzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogewogICAgIGF1
dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMo
KTsKICAgICAKLSAgICBhdXRvIHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICBwYWdlLT5zZXRJc0ZvclNhbml0aXppbmdX
ZWJDb250ZW50KCk7CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2Up
OwogICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggYTA5NWVlYWU5YjJhNzk3
YmRhYmFlMzQ5NDBmZGM2YTNjZTMwNDI0Yi4uZDU4MTEyZmY5YmRmNmNkN2QxOTg1NTJkODY2OTkx
Zjg1YjdhMWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNw
cApAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBxdWV1
ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92
ZShmdW5jdGlvbikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlv
bjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpB
c3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQotICAgIDogbV9pbnRlcm5h
bHMoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkpCisgICAgOiBtX2ludGVybmFs
cyhtYWtlVW5pcXVlPEludGVybmFscz4oY2xpZW50KSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggOWFkM2Rh
OWVmZmYwZjNhNzA3YTA2MDFmNzg2MDFkNWQ4NjgyNThmNS4uOTlhN2I1YzZmOTg3YTE0YmExOTA5
NDU4OTg3YWU4NGVjZmM0ZjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3Bw
CkBAIC0xMzksNyArMTM5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmlsZVJlYWRlcjo6cmVhZElu
dGVybmFsKEJsb2ImIGJsb2IsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXAKICAgICBtX3N0YXRl
ID0gTE9BRElORzsKICAgICBtX2Vycm9yID0gbnVsbHB0cjsKIAotICAgIG1fbG9hZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2FzdDxG
aWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1
ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50Kj4odGhpcykpOwogICAgIG1fbG9hZGVyLT5zZXRFbmNvZGluZyhtX2VuY29kaW5n
KTsKICAgICBtX2xvYWRlci0+c2V0RGF0YVR5cGUobV9ibG9iLT50eXBlKCkpOwogICAgIG1fbG9h
ZGVyLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCA2YWU1NTJjYmNlZmJhMzVhZjU0OTRhZDgwYTE0
NzMxZDAwYWNhM2QxLi41YzhmMThlM2RhYjBlYjI1OTdhZDVlODIyMTM5YmQ4OGZmMzI0ZTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBA
IENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAKICAgICAvLyBDcmVhdGUg
dGhlIENhY2hlZEZyYW1lcyBmb3IgYWxsIEZyYW1lcyBpbiB0aGUgRnJhbWVUcmVlLgogICAgIGZv
ciAoRnJhbWUqIGNoaWxkID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQotICAgICAgICBtX2NoaWxkRnJhbWVzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKKyAgICAgICAgbV9j
aGlsZEZyYW1lcy5hcHBlbmQobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4oKmNoaWxkKSk7CiAKICAg
ICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5kb21XaW5kb3coKSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7CkBAIC0xNzIsNyArMTcyLDcgQEAgQ2FjaGVkRnJh
bWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFtZSkKICAgICAvLyBBY3RpdmUgRE9NIG9iamVjdHMg
bXVzdCBiZSBzdXNwZW5kZWQgYmVmb3JlIHdlIGNhY2hlIHRoZSBmcmFtZSBzY3JpcHQgZGF0YS4K
ICAgICBtX2RvY3VtZW50LT5zdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZSk7
CiAKLSAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
Q2FjaGVkRnJhbWVEYXRhPihmcmFtZSk7CisgICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEgPSBt
YWtlVW5pcXVlPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4oZnJhbWUpOwogCiAgICAgbV9kb2N1bWVu
dC0+ZG9tV2luZG93KCktPnN1c3BlbmRGb3JQYWdlQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggMDY4NmFlOGZlY2U0NGYxZWY2OTBlNWY4ZjZhYmU4NDYx
NDYzZGY3ZC4uOTc0N2E0MDQwMTZhYzg2OGQyZjc3OTZlNTMzMDQzNmZmYTU4NzQ5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIERFRklORV9E
RUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgY2FjaGVkUGFnZUNv
dW50ZXIsICgiQ2FjaGVkCiBDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKFBhZ2UmIHBhZ2UpCiAgICAg
OiBtX3BhZ2UocGFnZSkKICAgICAsIG1fZXhwaXJhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93
KCkgKyBTZWNvbmRzKHBhZ2Uuc2V0dGluZ3MoKS5iYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbklu
dGVydmFsKCkpKQotICAgICwgbV9jYWNoZWRNYWluRnJhbWUoc3RkOjptYWtlX3VuaXF1ZTxDYWNo
ZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkpCisgICAgLCBtX2NhY2hlZE1haW5GcmFtZShtYWtl
VW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgpKSkKIHsKICNpZm5kZWYgTkRFQlVH
CiAgICAgY2FjaGVkUGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAKaW5kZXggMDAyOTY1NTg5MmQxNTRjYjUwNDNlMWRhMjI4MjU4NzlmNjNlZGRl
NS4uM2JhMjRiOWRlMmU5OTQxOTZhMGRmOTJmYzM2NjNjZWVhNWJmNGI5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBAIGJvb2wgUGFnZUNhY2hl
OjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgog
ICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxv
d2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PENhY2hlZFBhZ2U+KCpwYWdlKTsKKyAgICAgICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBtYWtlVW5p
cXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKICAgICAgICAgaXRlbS5tX3BydW5pbmdSZWFzb24gPSBQ
cnVuaW5nUmVhc29uOjpOb25lOwogICAgICAgICBtX2l0ZW1zLmFkZCgmaXRlbSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggN2E5OTFmMTdiMDNkODNlOTA1
ZjdkM2UwNjA3YmY1MmE5OWI4MGU0NS4uYjE0ZDMxMDE1OGI2NDVmZTg2OTlmN2Y5OWY0MTg1OGJk
NTVhZTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMzIsNyAr
MzMyLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbihjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGF0aHMpCiAgICAgICAgIG1fZmlsZUljb25Mb2FkZXItPmludmFsaWRhdGUoKTsKIAog
ICAgIEZpbGVJY29uTG9hZGVyQ2xpZW50JiBjbGllbnQgPSAqdGhpczsKLSAgICBtX2ZpbGVJY29u
TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKKyAgICBt
X2ZpbGVJY29uTG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKIAog
ICAgIGNocm9tZS0+bG9hZEljb25Gb3JGaWxlcyhwYXRocywgKm1fZmlsZUljb25Mb2FkZXIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4
IDgwNmU1ZjNkYWViZTI5NGUzMzAyMzBkZmE1ZWRlOGM5MmQ1OGMzMTguLjE3YzAyN2NmZGZhMWJi
NDNiNjQ1ZWU2MmQ1OGM4YWMzMjA2ZDg3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHZv
aWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
cigpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oYXNIVE1MRWxlbWVu
dCgpLmlzQ29ubmVjdGVkKCkpOwotICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVsZW1l
bnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMpOwor
ICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbWFrZVVuaXF1ZTxGb3JtQXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMpOwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6Zm9ybUF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmNwcAppbmRleCBlYTViMDlhYWEwOGRiMjczOTYxYjk1MzQyMmYwM2RkN2FkNmU0
NjcxLi5kMGUwM2Y1NmNiMDYzZTI3ZjExMzQwYTI3MTNkNGY5NjFiNWFlNjUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4gU2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0
IFZlY3RvcjxTdHJpbmc+CiAgICAgc2l6ZV90IGl0ZW1Db3VudCA9IHN0YXRlVmVjdG9yW2luZGV4
KytdLnRvVUludCgpOwogICAgIGlmICghaXRlbUNvdW50KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1T
dGF0ZT4oKTsKKyAgICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1T
dGF0ZT4oKTsKICAgICB3aGlsZSAoaXRlbUNvdW50LS0pIHsKICAgICAgICAgaWYgKGluZGV4ICsg
MSA+PSBzdGF0ZVZlY3Rvci5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTM2NSwxMyArMzY1LDEzIEBAIHN0YXRpYyBTdHJpbmcgZm9ybVN0YXRlU2lnbmF0dXJlKCkKIHN0
ZDo6dW5pcXVlX3B0cjxGb3JtQ29udHJvbGxlcjo6U2F2ZWRGb3JtU3RhdGVNYXA+IEZvcm1Db250
cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1hcChjb25zdCBGb3JtRWxlbWVudExpc3RIYXNo
U2V0JiBjb250cm9sTGlzdCkKIHsKICAgICBGb3JtS2V5R2VuZXJhdG9yIGtleUdlbmVyYXRvcjsK
LSAgICBhdXRvIHN0YXRlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4o
KTsKKyAgICBhdXRvIHN0YXRlTWFwID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4oKTsK
ICAgICBmb3IgKGF1dG8mIGNvbnRyb2wgOiBjb250cm9sTGlzdCkgewogICAgICAgICBpZiAoIWNv
bnRyb2wtPnNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGF1dG8mIGZvcm1TdGF0ZSA9IHN0YXRlTWFwLT5hZGQoa2V5
R2VuZXJhdG9yLmZvcm1LZXkoKmNvbnRyb2wpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgICAgICBpZiAoIWZvcm1TdGF0ZSkKLSAgICAgICAgICAgIGZvcm1TdGF0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CisgICAgICAgICAgICBmb3JtU3RhdGUg
PSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwogICAgICAgICBmb3JtU3RhdGUtPmFwcGVu
ZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1lKCksIGNvbnRyb2wtPnR5cGUoKSwgY29udHJvbC0+
c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CiAgICAgfQogICAgIHJldHVybiBzdGF0ZU1hcDsKQEAg
LTQwMyw3ICs0MDMsNyBAQCBGb3JtQ29udHJvbFN0YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3Rh
dGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbAogICAgIGlmIChtX3NhdmVk
Rm9ybVN0YXRlTWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUo
KTsKICAgICBpZiAoIW1fZm9ybUtleUdlbmVyYXRvcikKLSAgICAgICAgbV9mb3JtS2V5R2VuZXJh
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtS2V5R2VuZXJhdG9yPigpOworICAgICAgICBtX2Zv
cm1LZXlHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEZvcm1LZXlHZW5lcmF0b3I+KCk7CiAgICAgU2F2
ZWRGb3JtU3RhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zYXZlZEZvcm1TdGF0ZU1hcC5maW5kKG1f
Zm9ybUtleUdlbmVyYXRvci0+Zm9ybUtleShjb250cm9sKS5pbXBsKCkpOwogICAgIGlmIChpdCA9
PSBtX3NhdmVkRm9ybVN0YXRlTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAx
MDQ3YzU4ZWVjMzUzNmUzZDM5OTNhN2I2ZTU4NjI1YjAxNTk1MmYxLi5lYjliZDA2ODVkNTkyZWE2
OTIzMTNhZDQxNmMyN2Q3ZjI4MjYxZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcApAQCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6
Omhhc1JlbChSZWxhdGlvbiByZWxhdGlvbikgY29uc3QKIERPTVRva2VuTGlzdCYgSFRNTEFuY2hv
ckVsZW1lbnQ6OnJlbExpc3QoKSBjb25zdAogewogICAgIGlmICghbV9yZWxMaXN0KSB7Ci0gICAg
ICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0
PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3Vt
ZW50JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3JlbExpc3QgPSBtYWtlVW5pcXVl
PERPTVRva2VuTGlzdD4oY29uc3RfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCY+KCp0aGlzKSwgSFRN
TE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZSh0b2tlbiwgIm5vcmVmZXJyZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2Vu
LCAibm9vcGVuZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAiYXIiKTsKICNl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggYWMwNzU4ZGU4
M2IwNDg4MmE1ZDg5MjJmZDQwNTU0OGVmOTU2ZGNhMi4uNDlhYmZhNWY3MGE3YWI5N2Q3M2UyYzgy
Yjc2N2IwNTM1MWFkZWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJl
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNw
cApAQCAtODMsNyArODMsNyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hl
ZFJlZ2lvbigpCiBib29sIEhUTUxBcmVhRWxlbWVudDo6bWFwTW91c2VFdmVudChMYXlvdXRQb2lu
dCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0
KQogewogICAgIGlmIChtX2xhc3RTaXplICE9IHNpemUpIHsKLSAgICAgICAgbV9yZWdpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7CisgICAgICAgIG1fcmVnaW9u
ID0gbWFrZVVuaXF1ZTxQYXRoPihnZXRSZWdpb24oc2l6ZSkpOwogICAgICAgICBtX2xhc3RTaXpl
ID0gc2l6ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKaW5kZXggYTliYjRmYjhlMDYzZTcwMTVmMWE2NGU3ZDg2ZmViMzU4ZmZjMjdjZC4uODk0ZTYz
OThiOGE0ZWNkZGVkZjllMTk4OGE0MTRjMTcxYjI4NjliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTk1OSw3ICs5NTksNyBAQCB2b2lkIEhUTUxDYW52
YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYg
YnVmZmVyKSBjbwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtcyh0cnVlKTsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eShkZWZhdWx0SW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIG1f
aW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7Ci0gICAgbV9jb250
ZXh0U3RhdGVTYXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
cj4obV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0g
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250
ZXh0KCkpOwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhIVE1MRWxlbWVudDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpKTsKICAgICBIVE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQobWVtb3J5
Q29zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggOTc2Yzhl
MGE5YTA2YTliODNkNmNhOTQxYmQ1ZGQzN2I5ZjMzODVjNS4uMzI4MTc2YjY5ZThjZDFiZjIyZDRl
NzYzMjdlOWYyOTI5NjhhYjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVs
ZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rp
b25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xs
ZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3Ro
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGYxNTc4NzRlNmQ1MzRlM2Y2
MTM0ZTRhNWRmNGY1MWJlMmY2N2EzMWEuLjYwZGQxZmIyNTIwMzg2MGQzZDkyYTdhNWFjYjMzMWMy
YWIwNGI1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAK
QEAgLTg4LDcgKzg4LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgRGV0YWlsc1Nsb3RBc3NpZ25tZW50
OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkKIFJlZjxIVE1MRGV0YWls
c0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIGRldGFpbHMgPSBhZG9w
dFJlZigqbmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIGRl
dGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1h
a2VfdW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOworICAgIGRldGFpbHMtPmFkZFNo
YWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlVW5pcXVlPERldGFpbHNT
bG90QXNzaWdubWVudD4oKSkpOwogICAgIHJldHVybiBkZXRhaWxzOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBkODg5M2IxZjA5
NDllZjEwMmUyOWQwM2M1ODk2N2M0ZGQ0ZjNmZDVhLi5lMTUzMTZhMTllZWZiNDc3ZTNmMzY3Yzgw
ZjdjM2MxYTJhNjM0Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgd2lsbFZhbGlkYXRlKCkpCiAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2Fn
ZSgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIGlmICghbV92YWxpZGF0aW9uTWVzc2FnZSkKLSAg
ICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsaWRhdGlvbk1l
c3NhZ2U+KHRoaXMpOworICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gbWFrZVVuaXF1ZTxW
YWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CiAgICAgbV92YWxpZGF0aW9uTWVzc2FnZS0+dXBkYXRl
VmFsaWRhdGlvbk1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggNmVjMjJkNzc0OWYyZjc4
YmQzMWVmNzdlYTYzNjA3M2I3MWM1OWZmMi4uYTJiMDBlOGY4MTZkYTFjMjIxYjFjMzY2ZWE2ZTY4
OWMzYjFjNjhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKGhh
c05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FjaGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAgICBh
dXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAK
ICAgICBIYXNoU2V0PEF0b21TdHJpbmdJbXBsKj4gZm91bmRJbnB1dEVsZW1lbnRzOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggYzc2ZDQ5M2E2MmNlZDgzMDg4
MDFiNmIwMWQzMzIxZTBhMzMzZjUxZC4uNDM1ZDk1MTRkZDI5ZGRkMWY2ZGZiMWQxNjllMzQ3ZTMx
NWEzMDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNzkx
LDcgKzc5MSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcChGb3Jt
TmFtZWRJdGVtKiBpdGVtLCBjb25zdCBBdG9tU3RyaW5nJiBwCiAgICAgaWYgKHBhc3ROYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9wYXN0TmFtZXNNYXApCi0gICAg
ICAgIG1fcGFzdE5hbWVzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7Cisg
ICAgICAgIG1fcGFzdE5hbWVzTWFwID0gbWFrZVVuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7CiAgICAg
bV9wYXN0TmFtZXNNYXAtPnNldChwYXN0TmFtZS5pbXBsKCksIGl0ZW0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDAyZDdkNGU0ZmJlODZmNTI3
MGY1ODRiNmE4ZGViOWJlNDZmOTdhYTkuLmIxYzgyMWRkOWJhYmEyYTIwY2IyOWUxYzFjZmQ5MGQ3
MWZlYzU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBA
IC01NCw3ICs1NCw3IEBAIFJlZjxIVE1MSUZyYW1lRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiBET01Ub2tlbkxpc3QmIEhU
TUxJRnJhbWVFbGVtZW50OjpzYW5kYm94KCkKIHsKICAgICBpZiAoIW1fc2FuZGJveCkgewotICAg
ICAgICBtX3NhbmRib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNh
bmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9z
YW5kYm94ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzYW5kYm94QXR0ciwgW10o
RG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAgICByZXR1cm4gU2VjdXJp
dHlDb250ZXh0Ojppc1N1cHBvcnRlZFNhbmRib3hQb2xpY3kodG9rZW4pOwogICAgICAgICB9KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAwYzI1
Y2RkODBkNWY4YTc3MGExZDk3MDA1Nzg0N2E4OWM1NjgzZGJkLi4zNzZjNTIxOTY0ZTBmNzFiNmZk
OWMyMTcyZDYyMDFjMjkyNTdhMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBSZWY8SFRNTElucHV0RWxlbWVudD4gSFRNTElu
cHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogSFRN
TEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxvYWRlcigpCiB7CiAg
ICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlciA9
IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdl
TG9hZGVyOwogfQogCkBAIC0xNjQxLDcgKzE2NDEsNyBAQCBSZWZQdHI8SFRNTERhdGFMaXN0RWxl
bWVudD4gSFRNTElucHV0RWxlbWVudDo6ZGF0YUxpc3QoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpyZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAgaWYgKGlz
Q29ubmVjdGVkKCkpCi0gICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24obGlzdEF0dHIpLCB0aGlzKTsKKyAgICAgICAgbV9saXN0QXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
cj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0ciksIHRoaXMpOwogICAg
IGVsc2UKICAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGI4NjM0Y2FkYWZh
MThhMGEyN2NjZjcyOGY5YmJmNTZjYjdmNzhkMTYuLmY2YTdiYzgwMjRmZmE1ZTRiZDcxZjY5YTI3
Yzk3YzhjOTM2YmI0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAK
QEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6c3R5bGVTaGVldElzTG9h
ZGluZygpIGNvbnN0CiBET01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxlbWVudDo6c2l6ZXMoKQogewog
ICAgIGlmICghbV9zaXplcykKLSAgICAgICAgbV9zaXplcyA9IHN0ZDo6bWFrZV91bmlxdWU8RE9N
VG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRyKTsKKyAgICAgICAgbV9zaXplcyA9IG1ha2VVbmlx
dWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRyKTsKICAgICByZXR1cm4gKm1fc2l6ZXM7
CiB9CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQ
ZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKIERPTVRva2VuTGlzdCYg
SFRNTExpbmtFbGVtZW50OjpyZWxMaXN0KCkKIHsKICAgICBpZiAoIW1fcmVsTGlzdCkgCi0gICAg
ICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRN
TE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcgdG9rZW4p
IHsKKyAgICAgICAgbV9yZWxMaXN0ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBI
VE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tl
bikgewogICAgICAgICAgICAgcmV0dXJuIExpbmtSZWxBdHRyaWJ1dGU6OmlzU3VwcG9ydGVkKGRv
Y3VtZW50LCB0b2tlbik7CiAgICAgICAgIH0pOwogICAgIHJldHVybiAqbV9yZWxMaXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZjc0MGNjYWMyNDJlOWUw
ZjNiYzhkZGM5NTc1ZmIzMmE0ZWYxOThhZi4uZjNhY2ZjZGUwMDA3YTI0ZjI3NWE0Yzk1NGQ1MjUx
MjA4Mzc4Mjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC00ODEsNyArNDgxLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXphdGlvbigpCiB7Ci0gICAgbV9tZWRpYVNlc3Npb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhRWxlbWVudFNlc3Npb24+KCp0aGlzKTsKKyAgICBtX21l
ZGlhU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOwogCiAg
ICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vz
c2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7CiAgICAgbV9tZWRpYVNlc3Np
b24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBh
Z2VDb25zZW50VG9Mb2FkTWVkaWEpOwpAQCAtMzAyNyw3ICszMDI3LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29u
c3QgTWVkaWFUaW0KIAogICAgIC8vIDUgLSBJZiB0aGUgc2VlayB3YXMgaW4gcmVzcG9uc2UgdG8g
YSBET00gbWV0aG9kIGNhbGwgb3Igc2V0dGluZyBvZiBhbiBJREwgYXR0cmlidXRlLCB0aGVuIGNv
bnRpbnVlCiAgICAgLy8gdGhlIHNjcmlwdC4gVGhlIHJlbWFpbmRlciBvZiB0aGVzZSBzdGVwcyBt
dXN0IGJlIHJ1biBhc3luY2hyb25vdXNseS4KLSAgICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRp
dmVUb2xlcmFuY2UpOworICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVr
Pihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CiAgICAg
aWYgKGZyb21ET00pIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImVucXVldWlu
ZyBzZWVrIGZyb20gIiwgbm93LCAiIHRvICIsIHRpbWUpOwogICAgICAgICBtX3NlZWtUYXNrUXVl
dWUuc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRo
aXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDBiYWI5ZmM5
ZDZlZGExYzFiYzJhNjA5NjgzZjI3NmZlNzYwM2NmOC4uZjI0ZTg3NmExM2I2MTU1OWUyYzk5NWJi
YTRhNWU0NTIzNDk3MDA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTk5MCw2ICs5OTAsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50CiAgICAgUmVmUHRyPE1l
ZGlhRXJyb3I+IG1fZXJyb3I7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1NlZWsgeworICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdTZWVrKGNvbnN0
IE1lZGlhVGltZSYgbm93LCBjb25zdCBNZWRpYVRpbWUmIHRhcmdldFRpbWUsIGNvbnN0IE1lZGlh
VGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUb2xlcmFu
Y2UpCiAgICAgICAgICAgICA6IG5vdyhub3cpCiAgICAgICAgICAgICAsIHRhcmdldFRpbWUodGFy
Z2V0VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXgg
ZGQ0ZmEyZDcwZTRmNDNmNDJiODIyMmQzN2Q0NDE4ZjFhMTMxZWQ4Ny4uNTZiNzIwNmFlM2JlOGYx
MGE4ODE0YWU5YWZhYzYyYmZlYjU2MDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEhUTUxPdXRwdXRFbGVtZW50
OjpzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIERPTVRva2VuTGlzdCYgSFRN
TE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IoKQogewogICAgIGlmICghbV90b2tlbnMpCi0gICAgICAg
IG1fdG9rZW5zID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBmb3JBdHRy
KTsKKyAgICAgICAgbV90b2tlbnMgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZv
ckF0dHIpOwogICAgIHJldHVybiAqbV90b2tlbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGRkYTk0NDlkNTdhZDQyMDg1ODYy
N2RlZDNmZGQ5MTgxMzIxNWZlMmIuLjViOTlkNTU1NTMwNDk3MDkzYzZiY2E5OTU4N2M3YTJmNzI1
NTkwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBk
YXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24oKQogICAgIGlmIChyZW5kZXJlcigpICYmICF1c2VGYWxs
YmFja0NvbnRlbnQoKSkgewogICAgICAgICBpZiAoaXNJbWFnZVR5cGUoKSkgewogICAgICAgICAg
ICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAg
IG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAg
ICAgICAgICAgaWYgKG1fbmVlZHNJbWFnZVJlbG9hZCkKICAgICAgICAgICAgICAgICBtX2ltYWdl
TG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAg
ICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmlu
ZGV4IDEwYmMwOWZmMDk5Yzg4OGIyMjYyNjkzOTBiOGUxZjhiZTRjZTM5NjcuLmIwNDkzOWI5YzJk
NzI3MDIxMzc5YzVhNGRkMzQwNDdkODEyYWQ5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU3VtbWFyeVNsb3RF
bGVtZW50IGZpbmFsIDogcHVibGljIFNsb3RBc3NpZ25tZW50IHsKIFJlZjxIVE1MU3VtbWFyeUVs
ZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWY8SFRNTFN1bW1hcnlFbGVtZW50
PiBzdW1tYXJ5ID0gYWRvcHRSZWYoKm5ldyBIVE1MU3VtbWFyeUVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKLSAgICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShk
b2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsKKyAgICBz
dW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVVu
aXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsKICAgICByZXR1cm4gc3VtbWFyeTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggYTVlNzVhYWZmNTJk
ZGY5ZjU3NTQ1YmEwNjdlZWM3ODk4ODhkZDlhYi4uNjdmZjIxMjUyZjFiOGU4MzEwYTFkN2NiYjIz
MmVhOGM3MzkzOGEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKCkKICAgICB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKICAgICBpZiAoc2hvdWxkRGlzcGxheVBv
c3RlckltYWdlKCkpIHsKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAg
bV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7
CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+
KCp0aGlzKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAg
ICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAg
IHJlbmRlcmVyLT5pbWFnZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+
aW1hZ2UoKSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW4KIAog
ICAgICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgICAgIGlm
ICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2lt
YWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAg
ICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9y
KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNV
UkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAK
aW5kZXggZDViOWJlZGJhZDA0NzA0NjFhNThhYjVjYjAxNGE2OGMwNDdkN2ZiMC4uODU0NTFkMTQz
NzBlMjRjZDdkNGRkNTY5MDE0NjM3MzVhZDY4MzA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1
YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RkOjp1bmlxdWVfcHRyPFB1YmxpY1VSTE1hbmFnZXI+IFB1YmxpY1VSTE1hbmFnZXI6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIGF1dG8gcHVibGlj
VVJMTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHVibGljVVJMTWFuYWdlcj4oY29udGV4dCk7
CisgICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0gbWFrZVVuaXF1ZTxQdWJsaWNVUkxNYW5hZ2Vy
Pihjb250ZXh0KTsKICAgICBwdWJsaWNVUkxNYW5hZ2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICByZXR1cm4gcHVibGljVVJMTWFuYWdlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0
aW9uTWVzc2FnZS5jcHAKaW5kZXggOGFmNzNhOGEwMDU0OTgwYWQxNzkwNjk1NmE4NDMyYTZmOWNk
YjE0Yi4uZjVkYWIwZjQyZjJkMDUzZTcwM2M2YzU3MjNjYTE2MDM3MWQxYTJlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTExNSw5ICsxMTUsOSBAQCB2
b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
ICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICBtX21lc3NhZ2UgPSBtZXNzYWdl
OwogICAgIGlmICghbV9idWJibGUpCi0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOworICAg
ICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2Fn
ZTo6YnVpbGRCdWJibGVUcmVlKTsKICAgICBlbHNlCi0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcik7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhp
cywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7CiAgICAg
bV90aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lk
IFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcigpCiAgICAgaWYg
KG1hZ25pZmljYXRpb24gPD0gMCkKICAgICAgICAgbV90aW1lciA9IG51bGxwdHI7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZh
bGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKKyAgICAgICAgbV90aW1lciA9IG1h
a2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRy
ZWUpOwogICAgICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoNV9zLCAxX21zICog
c3RhdGljX2Nhc3Q8ZG91YmxlPihtX21lc3NhZ2UubGVuZ3RoKCkpICogbWFnbmlmaWNhdGlvbikp
OwogICAgIH0KIH0KQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpy
ZXF1ZXN0VG9IaWRlTWVzc2FnZSgpCiAgICAgfQogCiAgICAgLy8gV2UgbXVzdCBub3QgbW9kaWZ5
IHRoZSBET00gdHJlZSBpbiB0aGlzIGNvbnRleHQgYnkgdGhlIHNhbWUgcmVhc29uIGFzIHNldE1l
c3NhZ2UoKS4KLSAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZW
YWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CisgICAgbV90aW1lciA9IG1ha2VV
bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUp
OwogICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwCmluZGV4IGIxNjc3ODQ0MjhjM2JmZTllNmYxNmE3Nzg0MGQzZjNiYjk3MDViOTYuLjUzYzlj
NTY2MDQyN2M0ODZlMzJhYmMwYzJkNjU0Y2NjNTZjMDI4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0cnVjdCBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0IHsK
IAogICAgIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCiAgICAgICAgIDogY29udGV4dChbJl0o
R3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250
ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxp
c3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsK
ICAgICAgICAgfSkKICAgICB7CiAgICAgfQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgR3JhcGhpY3ND
b250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNv
bnN0CiB7CiAgICAgaWYgKFVOTElLRUxZKG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZykpIHsKICAg
ICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRleHQpCi0gICAgICAgICAgICBtX3JlY29yZGluZ0Nv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdyYXBo
aWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jh
c2UoKS5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IG1ha2VVbmlx
dWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOwogICAgICAg
ICByZXR1cm4gJm1fcmVjb3JkaW5nQ29udGV4dC0+Y29udGV4dDsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggNjMxMTkxNzU3MGYyZGIyODU5NGNiYjM0OTAyNDY5OTdiNTgzZmJlMC4uY2Q0NzIxMjYx
YjJlMDIyYjU1MjVkZDNkM2NhNTQ2OWY5YzBiM2VhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEzNTksNyAr
MTM1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2RlZmluZSBFTkFCTEVfSUZfUkVRVUVTVEVEKHR5
cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgY2FuRW5hYmxlKSBcCiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgbmFtZUxpdGVyYWwpKSB7IFwKICAgICAgICAgaWYgKCF2YXJp
YWJsZSkgeyBcCi0gICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gc3RkOjptYWtl
X3VuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCisgICAgICAgICAgICB2YXJpYWJsZSA9
IChjYW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCiAgICAg
ICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAgICAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAog
ICAgICAgICB9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGUwNmJmOTlkNTkxNTk2Mzk4MGE2MTFjMzJhODM5ZTI5
N2YxMjgwNDUuLmU1ZmRlNzAzMzc0NTZhMzFlMTU3MWVlMTBmM2ZkMjY0MmRiMDM2YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAjZGVmaW5lIEVOQUJMRV9J
Rl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBjYW5FbmFibGUpIFwKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAogICAg
ICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJs
ZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAg
ICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51
bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxscHRyKSBcCiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRo
aXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApAQCAtMTMyLDcgKzEzMiw3IEBAIFdlYkdMRXh0ZW5z
aW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwotICAgICAg
ICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hh
ZGVyVGV4dHVyZUxPRD4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVy
ZUxPRCA9IG1ha2VVbmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOwogICAgICAgICAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlz
LCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU5LDcgKzE1OSw3IEBAIFdl
YkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbnVsbHB0
cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwotICAgICAg
ICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3
QnVmZmVycz4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG1h
a2VVbmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIFdlYkdMRXh0ZW5zaW9u
KiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICAgICAg
ICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gc3RkOjptYWtlX3VuaXF1ZTxBTkdMRUlu
c3RhbmNlZEFycmF5cz4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRB
cnJheXMgPSBtYWtlVW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRo
aXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4
IDNlY2U3ZWViNzQyZmFkYjZmZTE4YjMzZWI1YTYxMzljZWQ0MWJhNTYuLmQxNjZmYjIzOTA3NmQz
NjI2NWQ5NmM2NDVmMDcxODc1YWM4MmJiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03OTksOCAr
Nzk5LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29u
dGV4dCgpCiAgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBjYW52YXNTaXplLndpZHRoKCks
IGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogICAgIG1fY29udGV4dC0+c2Npc3NvcigwLCAwLCBjYW52
YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogCi0gICAgbV9jb250ZXh0LT5z
ZXRDb250ZXh0TG9zdENhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xSZW5kZXJpbmdDb250
ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7Ci0gICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VD
YWxsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2Fn
ZUNhbGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNr
KG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7Cisg
ICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhtYWtlVW5pcXVlPFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7CiB9CiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncygpCkBAIC0xNTc5LDcgKzE1NzksNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFk
ZXIqIHNoYWRlcikKICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFj
a1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1
cnJlbnRTdGF0ZSgpKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGVycm9yIDogZ2V0U2hhZGVySW5m
b0xvZyhzaGFkZXIpLnNwbGl0KCdcbicpKQotICAgICAgICAgICAgY2FudmFzLT5kb2N1bWVudCgp
LmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsK
KyAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3Is
IHN0YWNrVHJhY2UuY29weVJlZigpKSk7CiAgICAgfQogfQogCkBAIC01ODA4LDkgKzU4MDgsOSBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xlKE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJgogICAgIC8vIEVycm9yIG1lc3NhZ2VzIGNhbiBvY2N1
ciBkdXJpbmcgZnVuY3Rpb24gY2FsbHMsIHNvIHNob3cgc3RhY2sgdHJhY2VzIGZvciB0aGVtLgog
ICAgIGlmIChsZXZlbCA9PSBNZXNzYWdlTGV2ZWw6OkVycm9yKSB7CiAgICAgICAgIFJlZjxJbnNw
ZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSk7Ci0gICAgICAgIGNvbnNv
bGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdl
LCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywg
TWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOwog
ICAgIH0gZWxzZQotICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdl
VHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSk7CisgICAgICAgIGNvbnNvbGVNZXNzYWdlID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJp
bmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlKTsKIAogICAgIGF1dG8qIGNhbnZh
cyA9IGh0bWxDYW52YXMoKTsKICAgICBpZiAoY2FudmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGU4NTkwY2NjNjk3MjhhZjM5
MzAxZDNhZThkODk4OGY1YzE1YTRiMmEuLmFlZmU0NTdmNGVmZjA0MzY1NzYzY2IyNmY3MTc4NDYz
ZTMyZTFkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxv
YWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2Fk
U2Nhbm5lci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjpl
bWl0UnVsZSgpCiAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgVVJM
IGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20g
dGhlIEhUTUxQcmVsb2FkU2Nhbm5lciB2aWEgc2NhbigpOiB3aXRob3V0IGl0IHdlIHdpbGwgZ2V0
IHJlbGF0aXZlIFVSTHMgd3JvbmcuCiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMg
YmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGluIHRoZSBwcmVsb2FkIHJlcXVlc3Q/Ci0gICAgICAg
ICAgICBtX3JlcXVlc3RzLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4o
ImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHls
ZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVy
cmVyUG9saWN5OjpFbXB0eVN0cmluZykpOworICAgICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5k
KG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBD
YWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1
ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpKTsKICAg
ICAgICAgfQogICAgICAgICBtX3N0YXRlID0gSW5pdGlhbDsKICAgICB9IGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJ1bGUsICJjaGFyc2V0IikpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggNTFi
YWU0YzIxY2Y5NDBkY2Q4YzZkMzIwYmM0ZGJkNjYyNmJlN2Q5Zi4uOWFjNDQ0ZWYwYTY3MWY4YTQ3
Njk5NTdhZTMyMjJiZDhkMTAwN2Q5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNTAzLDcgKzUwMyw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4gSFRNTENvbnN0cnVjdGlv
blNpdGU6Omluc2VydEhUTUxFCiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBlbGVtZW50
SW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0
ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSh0b2tlbiwgJmVsZW1lbnRJ
bnRlcmZhY2UpOwogICAgIGlmIChVTkxJS0VMWShlbGVtZW50SW50ZXJmYWNlKSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCpl
bGVtZW50SW50ZXJmYWNlLCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygp
KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25E
YXRhPigqZWxlbWVudEludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBXVEZNb3ZlKHRva2VuLmF0dHJp
YnV0ZXMoKSkpOwogICAgIGF0dGFjaExhdGVyKGN1cnJlbnROb2RlKCksICplbGVtZW50KTsKICAg
ICBtX29wZW5FbGVtZW50cy5wdXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0ZShlbGVtZW50LnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUodG9rZW4pKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRl
eCA0ZmY0ZTJiODc4OGE5MTliZjQyZDE3YWQ5ZmQ2NTFiOWIwM2FkMTliLi5kZDllYTA0YzZmNTAw
Yzg2NGI4Yzk0YzE5MzgzNzg3N2FmZmRlNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTUzLDExICs1MywxMSBAQCBIVE1M
RG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV9vcHRp
b25zKGRvY3VtZW50KQogICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zKQotICAgICwgbV9zY3Jp
cHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3Rh
dGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhvc3QmPigqdGhpcykpKQotICAgICwgbV90cmVlQnVp
bGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBw
YXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCi0gICAgLCBtX3BhcnNlclNjaGVkdWxl
cihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+KCp0aGlzKSkKKyAgICAsIG1f
c2NyaXB0UnVubmVyKG1ha2VVbmlxdWU8SFRNTFNjcmlwdFJ1bm5lcj4oZG9jdW1lbnQsIHN0YXRp
Y19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0Jj4oKnRoaXMpKSkKKyAgICAsIG1fdHJlZUJ1aWxk
ZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBkb2N1bWVudCwgcGFyc2VyQ29u
dGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQorICAgICwgbV9wYXJzZXJTY2hlZHVsZXIobWFrZVVu
aXF1ZTxIVE1MUGFyc2VyU2NoZWR1bGVyPigqdGhpcykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxl
Z2F0ZShkb2N1bWVudCkKLSAgICAsIG1fcHJlbG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFJl
c291cmNlUHJlbG9hZGVyPihkb2N1bWVudCkpCisgICAgLCBtX3ByZWxvYWRlcihtYWtlVW5pcXVl
PEhUTUxSZXNvdXJjZVByZWxvYWRlcj4oZG9jdW1lbnQpKQogewogfQogCkBAIC03MCw3ICs3MCw3
IEBAIGlubGluZSBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVu
dEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVuCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIoZnJhZ21lbnQuZG9jdW1lbnQoKSwgcmF3UG9saWN5KQogICAgICwgbV9vcHRpb25zKGZyYWdt
ZW50LmRvY3VtZW50KCkpCiAgICAgLCBtX3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3Ry
ZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZnJhZ21l
bnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCisg
ICAgLCBtX3RyZWVCdWlsZGVyKG1ha2VVbmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZnJh
Z21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykp
CiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShmcmFnbWVudC5kb2N1bWVudCgpKQogewogICAg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3Bh
cnNpbmctaHRtbC1mcmFnbWVudHMKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKICAgICBpZiAoaXNX
YWl0aW5nRm9yU2NyaXB0cygpKSB7CiAgICAgICAgIEFTU0VSVChtX3Rva2VuaXplci5pc0luRGF0
YVN0YXRlKCkpOwogICAgICAgICBpZiAoIW1fcHJlbG9hZFNjYW5uZXIpIHsKLSAgICAgICAgICAg
IG1fcHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4o
bV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CisgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJl
bG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRl
dmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5k
VG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOwogICAgICAgICB9CiAgICAgICAgIG1fcHJlbG9hZFNj
YW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CkBAIC0zNzQsNyArMzc0LDcg
QEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChTZWdtZW50ZWRTdHJpbmcmJiBzb3Vy
Y2UpCiAgICAgICAgIC8vIENoZWNrIHRoZSBkb2N1bWVudC53cml0ZSgpIG91dHB1dCB3aXRoIGEg
c2VwYXJhdGUgcHJlbG9hZCBzY2FubmVyIGFzCiAgICAgICAgIC8vIHRoZSBtYWluIHNjYW5uZXIg
Y2FuJ3QgZGVhbCB3aXRoIGluc2VydGlvbnMuCiAgICAgICAgIGlmICghbV9pbnNlcnRpb25QcmVs
b2FkU2Nhbm5lcikKLSAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51
cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAgICBtX2lu
c2VydGlvblByZWxvYWRTY2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1f
b3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9y
KCkpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChzb3Vy
Y2UpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRl
ciwgKmRvY3VtZW50KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTEVsZW1lbnRTdGFjay5jcHAKaW5kZXggMzBjNWI0NmRmMTAzZGJkZjZmNGI3Y2U0MDljYzNh
YTE2YzU0NjAxMi4uNmVmMTcxMmI5ZDYzYjcxYWNiN2MxNjlmNjJiNDljODJmMzEwNTgxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKQEAg
LTMzOSw3ICszMzksNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6Omluc2VydEFib3ZlKFJlZjxI
VE1MU3RhY2tJdGVtPiYmIGl0ZW0sIEVsZW1lbnRSZWNvcmQmIHJlYwogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgKyttX3N0YWNrRGVwdGg7Ci0gICAgICAgIHJlY29yZEFib3ZlLT5z
ZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgcmVj
b3JkQWJvdmUtPnJlbGVhc2VOZXh0KCkpKTsKKyAgICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQo
bWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVs
ZWFzZU5leHQoKSkpOwogICAgICAgICByZWNvcmRBYm92ZS0+bmV4dCgpLT5lbGVtZW50KCkuYmVn
aW5QYXJzaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUzMyw3ICs1
MzMsNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnB1c2hDb21tb24oUmVmPEhUTUxTdGFja0l0
ZW0+JiYgaXRlbSkKICAgICBBU1NFUlQobV9yb290Tm9kZSk7CiAKICAgICArK21fc3RhY2tEZXB0
aDsKLSAgICBtX3RvcCA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShp
dGVtKSwgV1RGTW92ZShtX3RvcCkpOworICAgIG1fdG9wID0gbWFrZVVuaXF1ZTxFbGVtZW50UmVj
b3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1l
bnRTdGFjazo6cG9wQ29tbW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDUzYTE3MmQzM2FmY2RhOGZmODhkMzQ0ZDljMGVm
MDkwM2NkZWNjOTIuLjMzZDdiM2JiMDhiNjUyZDBjZDY5YmNlZGYxZjg2MDYzMWFmYWExNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cApAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFn
U2Nhbm5lciB7CiAgICAgICAgIGlmICghTGlua0xvYWRlcjo6aXNTdXBwb3J0ZWRUeXBlKHR5cGUu
dmFsdWUoKSwgbV90eXBlQXR0cmlidXRlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZFJlcXVlc3Q+
KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5
cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQ
b2xpY3kpOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0
Pihpbml0aWF0b3JGb3IobV90YWdJZCksIG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCB0
eXBlLnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1dGUsIG1fbW9kdWxlU2NyaXB0LCBtX3JlZmVycmVy
UG9saWN5KTsKICAgICAgICAgcmVxdWVzdC0+c2V0Q3Jvc3NPcmlnaW5Nb2RlKG1fY3Jvc3NPcmln
aW5Nb2RlKTsKICAgICAgICAgcmVxdWVzdC0+c2V0Tm9uY2UobV9ub25jZUF0dHJpYnV0ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggZjcxYjIxZDI3ODk1ZTU3
OGFiNDdmNWNmNTQwMjU4M2UzNjEyMWQwMi4uM2Y3NDZkYzZkNjY3YzQzNzExYjY4ZDA5YjQyMDJk
MjNmZjBjMDg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRv
a2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTIw
OSw3ICsyMDksNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9DVFlQRSgpCiB7CiAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBET0NUWVBF
OwotICAgIG1fZG9jdHlwZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3R5cGVEYXRhPigpOwor
ICAgIG1fZG9jdHlwZURhdGEgPSBtYWtlVW5pcXVlPERvY3R5cGVEYXRhPigpOwogfQogCiBpbmxp
bmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGFjNmU3OTQ0MzAwNzAzNjQy
MWViMTZkZjgzYTkwZDNkMjc3MmY4NTYuLjA2MWQ5NTY3Yjc4NGQ5YjBiYWNmM2Y2ZGI5Y2RlNWE4
MDZiMDFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBA
IC0zNzYsNyArMzc2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhTU0luZm8+IFhTU0F1ZGl0b3I6OmZp
bHRlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWUKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBib29sIGRpZEJsb2NrRW50aXJlUGFnZSA9IG1feHNzUHJvdGVjdGlv
biA9PSBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb246OkJsb2NrRW5hYmxlZDsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJMLCBkaWRCbG9ja0VudGlyZVBh
Z2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8WFNTSW5mbz4obV9kb2N1bWVudFVSTCwgZGlkQmxvY2tFbnRpcmVQYWdlLCBtX2RpZFNl
bmRWYWxpZFhTU1Byb3RlY3Rpb25IZWFkZXIpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRl
clN0YXJ0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzEyLDcg
KzcxMiw3IEBAIFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4qIFhTU0F1ZGl0b3I6OmRlY29kZWRI
VFRQQm9keVN1ZmZpeFRyZWUoKQogICAgIGNvbnN0IHVuc2lnbmVkIHN1ZmZpeFRyZWVEZXB0aCA9
IDU7CiAKICAgICBpZiAoIW1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSAmJiBtX2RlY29kZWRI
VFRQQm9keS5sZW5ndGgoKSA+PSBtaW5pbXVtTGVuZ3RoRm9yU3VmZml4VHJlZSkKLSAgICAgICAg
bV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxTdWZmaXhUcmVl
PEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4VHJlZURlcHRoKTsKKyAg
ICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0gbWFrZVVuaXF1ZTxTdWZmaXhUcmVl
PEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4VHJlZURlcHRoKTsKICAg
ICByZXR1cm4gbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAppbmRleCAzYTYzN2RhZWYwMTI0ZTJlNGVkMzM2YjY2Mzc1MmQwMDIyYjViZTAxLi5kNTY2
YmNjNzk0YWE3MjRhYmU2MGEwODBhM2YyY2Y5NTFmNDUzN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAg
LTE3NCw3ICsxNzQsNyBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25zdAogT3B0aW9uYWw8RWxlbWVudFN0eWxl
PiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAg
YXV0byBzdHlsZSA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93
SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKLSAgICByZXR1
cm4gRWxlbWVudFN0eWxlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5
bGUpKSk7CisgICAgcmV0dXJuIEVsZW1lbnRTdHlsZShtYWtlVW5pcXVlPFJlbmRlclN0eWxlPihX
VEZNb3ZlKHN0eWxlKSkpOwogfQogCiAvLyBNQVJLOiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxl
bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmlj
VGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjay5jcHAKaW5kZXggZTQwMjAwYTlhN2EyMjVkZGZkODc0NGQ4YzkzYmRlNjkwOTY0NzAw
OS4uNDkzNGQ3MjljMTk4ZDA4MDU5YWM4YzlmMGIxNzRhOTVlNzZmNzJmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCkBA
IC0xNzQsNyArMTc0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5iYW5kR2VuZXJpY1RleHRUcmFj
azo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYgY3VlKQogV2ViVlRUUGFyc2VyJiBJbmJhbmRHZW5l
cmljVGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAg
ICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRp
Y19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihz
dGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggODU1
YmIyMzkyN2ViMTBhMzVhNTlkMTJiZTBkMjM1YTczY2FiYzEwZS4uMTBmYWExMmY5MGI0NjBiNTA1
NmYyNTY3Y2MyZDk4MTI3ZDhmYWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBJbmJhbmRX
ZWJWVFRUZXh0VHJhY2s6On5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKSA9IGRlZmF1bHQ7CiBXZWJW
VFRQYXJzZXImIEluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKCkKIHsKICAgICBpZiAoIW1f
d2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dlYlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBtYWtlVW5p
cXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyks
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICptX3dlYlZUVFBhcnNlcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNw
cAppbmRleCA4ZjI5YzdmMTY3OWEwZmEyOTE4ZGVjZmE1MTNlMmQ4MDI3MWEzNWUyLi43YTFlMWJj
NDY5MWIyMTE2ODhjM2NmNWRhNjE5YWM2MWRiZDZmZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lk
IExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCgpCiAgICAgLy8gNC4gRG93bmxvYWQ6
IElmIFVSTCBpcyBub3QgdGhlIGVtcHR5IHN0cmluZywgcGVyZm9ybSBhIHBvdGVudGlhbGx5IENP
UlMtZW5hYmxlZCBmZXRjaCBvZiBVUkwsIHdpdGggdGhlCiAgICAgLy8gbW9kZSBiZWluZyB0aGUg
c3RhdGUgb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBjcm9zc29yaWdpbiBjb250ZW50IGF0dHJpYnV0
ZSwgdGhlIG9yaWdpbiBiZWluZyB0aGUKICAgICAvLyBvcmlnaW4gb2YgdGhlIG1lZGlhIGVsZW1l
bnQncyBEb2N1bWVudCwgYW5kIHRoZSBkZWZhdWx0IG9yaWdpbiBiZWhhdmlvdXIgc2V0IHRvIGZh
aWwuCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3Rh
dGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7CisgICAg
bV9sb2FkZXIgPSBtYWtlVW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRy
YWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7CiAgICAgaWYgKCFtX2xvYWRlci0+
bG9hZChtX3VybCwgKm1fdHJhY2tFbGVtZW50KSkKICAgICAgICAgbV90cmFja0VsZW1lbnQtPmRp
ZENvbXBsZXRlTG9hZChIVE1MVHJhY2tFbGVtZW50OjpGYWlsdXJlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKaW5kZXggMDMxMDgwZTFh
YjY2ZDMyY2M5YzA3MTc4ZjAyZjkzNTIzYmM3MDZiMC4uOTAyOWI5MmQ4YjgzZjJkN2JlZDZkOGU1
NDU3NmMwYTE2OGNhNTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPENvbW1hbmRMaW5lQVBJSG9z
dD4gQ29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGUoKQogfQogCiBDb21tYW5kTGluZUFQSUhvc3Q6
OkNvbW1hbmRMaW5lQVBJSG9zdCgpCi0gICAgOiBtX2luc3BlY3RlZE9iamVjdChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpKQorICAgIDogbV9pbnNwZWN0ZWRPYmplY3QobWFr
ZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKSkKIHsKIH0KIApAQCAtMTk2LDcgKzE5Niw3IEBA
IEpTVmFsdWUgQ29tbWFuZExpbmVBUElIb3N0Ojp3cmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJB
bGxXcmFwcGVycygpCiB7CiAgICAgbV93cmFwcGVycy5jbGVhckFsbFdyYXBwZXJzKCk7Ci0gICAg
bV9pbnNwZWN0ZWRPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0Pigp
OworICAgIG1faW5zcGVjdGVkT2JqZWN0ID0gbWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4o
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
RWRpdG9yLmNwcAppbmRleCA2YzMxZTQ5OGU0MzRkMzAwYjBmMWM2ZWFiODQzNDY3NzZjZjBhMmZj
Li44Mzg5MDhkYzkzNmVmYTZiYTI2Yzc5MTY3MTQ0ZGI3ZGU5ZTJhZTI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtODksNyArODksNyBAQCBjbGFzcyBET01FZGl0
b3I6Okluc2VydEJlZm9yZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpB
Y3Rpb24gewogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBlcmZvcm0oKSBmaW5hbAogICAgIHsKICAg
ICAgICAgaWYgKG1fbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBtX3JlbW92ZUNo
aWxkQWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4oKm1fbm9kZS0+
cGFyZW50Tm9kZSgpLCBtX25vZGUpOworICAgICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9
IG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KCptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9u
b2RlKTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9yZW1vdmVDaGlsZEFjdGlvbi0+cGVy
Zm9ybSgpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKQEAgLTM4NSwyNyArMzg1
LDI3IEBAIERPTUVkaXRvcjo6fkRPTUVkaXRvcigpID0gZGVmYXVsdDsKIAogRXhjZXB0aW9uT3I8
dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRCZWZvcmUoTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+
JiYgbm9kZSwgTm9kZSogYW5jaG9yTm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZv
cm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1v
dmUobm9kZSksIGFuY2hvck5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFr
ZVVuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFu
Y2hvck5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVDaGls
ZChOb2RlJiBwYXJlbnROb2RlLCBOb2RlJiBub2RlKQogewotICAgIHJldHVybiBtX2hpc3Rvcnku
cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPihwYXJlbnROb2RlLCBu
b2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVtb3ZlQ2hp
bGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9N
RWRpdG9yOjpzZXRBdHRyaWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShz
dGQ6Om1ha2VfdW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwgdmFsdWUp
KTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRBdHRyaWJ1dGVB
Y3Rpb24+KGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERP
TUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
bmFtZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKKyAgICByZXR1cm4gbV9oaXN0
b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5h
bWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9k
ZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYgbmV3Tm9kZSkKIHsKLSAgICBhdXRv
IGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1s
KTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VVbmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2Rl
LCBodG1sKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwogICAgIGF1dG8gcmVzdWx0
ID0gbV9oaXN0b3J5LnBlcmZvcm0oV1RGTW92ZShhY3Rpb24pKTsKICAgICBpZiAoIXJlc3VsdC5o
YXNFeGNlcHRpb24oKSkKQEAgLTQxNSwyMiArNDE1LDIyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERP
TUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9k
ZSomCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5zZXJ0QWRqYWNlbnRIVE1MKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCkK
IHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRB
ZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7CisgICAgcmV0dXJuIG1f
aGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8SW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uPihlbGVt
ZW50LCB3aGVyZSwgaHRtbCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJl
cGxhY2VXaG9sZVRleHQoVGV4dCYgdGV4dE5vZGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAg
ICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlV2hvbGVU
ZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9y
bShtYWtlVW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0KSk7CiB9
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKE5vZGUmIHBhcmVu
dE5vZGUsIFJlZjxOb2RlPiYmIG5ld05vZGUsIE5vZGUmIG9sZE5vZGUpCiB7Ci0gICAgcmV0dXJu
IG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlv
bj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdOb2RlKSwgb2xkTm9kZSkpOworICAgIHJldHVybiBt
X2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVu
dE5vZGUsIFdURk1vdmUobmV3Tm9kZSksIG9sZE5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRE9NRWRpdG9yOjpzZXROb2RlVmFsdWUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRO
b2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJm
b3JtKG1ha2VVbmlxdWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSkpOwogfQogCiBz
dGF0aWMgYm9vbCBwb3B1bGF0ZUVycm9yU3RyaW5nKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0
LCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDIwZGEzNDMwYzE1Yzg1NTE0ODVjNTczOGM1NDdmYTBj
MzQzMWExYmEuLjJlOWQ3NTU2NTVjODNlZjg4MTU5NmFhZDIwYzk2ZTEwZTY4ODI2ZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC00MDIsNyAr
NDAyLDcgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0Y2hTdXBwb3J0OjpEaWdlc3Q+
IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUmIG5vZGUsIFVudXNlZE5vZGVzTWFw
KiB1bnVzZWROb2Rlc01hcCkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlnZXN0PigpOworICAgIGF1dG8gZGlnZXN0ID0gbWFrZVVuaXF1ZTxEaWdlc3Q+KCk7CiAgICAg
ZGlnZXN0LT5ub2RlID0gJm5vZGU7CiAgICAgU0hBMSBzaGExOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNTIwMzcwNmI1M2Iz
MmIwYmE0ZjBlZDRkNGJhNDAwYjZjNzliNWUxNS4uNjNmZjNhYjYyM2E0NDZjZDYyMGVlNDdlMzky
MDU1Y2VhNTFhODc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtOTMsMTAgKzkzLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYg
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCiAgICAgOiBtX2luc3RydW1l
bnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
cj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9u
dGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVm
KCkpKQotICAgICwgbV9vdmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4o
cGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAsIG1fb3ZlcmxheShtYWtlVW5pcXVlPEluc3Bl
Y3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCiAgICAgLCBtX2V4ZWN1dGlvblN0
b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihw
YWdlKQogICAgICwgbV9wYWdlKHBhZ2UpCkBAIC0xMDYsNyArMTA2LDcgQEAgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQq
IGluc3BlY3RvckMKIAogICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7
CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVB
Z2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxQ
YWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5h
cHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIH0KQEAgLTE1MywzNyArMTUzLDM3IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAgICAgZW5zdXJlSW5z
cGVjdG9yQWdlbnQoKTsKICAgICBlbnN1cmVQYWdlQWdlbnQoKTsKIAotICAgIG1fYWdlbnRzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKIAotICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURl
YnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtl
VW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgYXV0byBkZWJ1Z2dl
ckFnZW50UHRyID0gZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RG
TW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCkpOworICAg
IG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CiAgICAgZW5zdXJlRE9NQWdlbnQoKTsKLSAgICBtX2FnZW50cy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwg
ZGVidWdnZXJBZ2VudFB0cikpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFn
ZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4o
cGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOworICAgIG1f
YWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4o
cGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JM
YXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7
CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4o
cGFnZUNvbnRleHQpKTsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNv
bnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JJbmRleGVk
REJBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgogCi0gICAgYXV0byBzY3JpcHRQcm9maWxl
ckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlw
dFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNj
cmlwdFByb2ZpbGVyQWdlbnRQdHIpKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDUFVQcm9maWxlckFn
ZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvck1lbW9yeUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBhZ2VD
b250ZXh0KSk7CiAjZW5kaWYKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VBdWRpdEFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNhbnZhc0FnZW50PihwYWdlQ29udGV4dCkp
OwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFn
ZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1
ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnNwZWN0b3JDYW52YXNBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihwYWdlQ29udGV4dCkp
OwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0
LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpAQCAtNDIxLDcgKzQyMSw3
IEBAIEluc3BlY3RvckFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JB
Z2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFn
ZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CisgICAg
ICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdl
Q29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQo
KTsKICAgICAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JBZ2VudChtX2lu
c3BlY3RvckFnZW50KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9y
QWdlbnQpKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBJbnNwZWN0b3JET01BZ2VudCYgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JET01B
Z2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwot
ICAgICAgICBhdXRvIGRvbUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01BZ2Vu
dD4ocGFnZUNvbnRleHQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgICAgIGF1dG8gZG9tQWdlbnQg
PSBtYWtlVW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgbV9vdmVybGF5Lmdl
dCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JET01BZ2VudCA9IGRvbUFnZW50LmdldCgpOwogICAg
ICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkb21BZ2VudCkpOwogICAgIH0KQEAgLTQ0NCw3
ICs0NDQsNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3Vy
ZVBhZ2VBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2VBZ2VudCkgewogICAgICAg
ICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIHBh
Z2VBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4
dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgICAgIGF1dG8gcGFn
ZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2lu
c3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JQYWdl
QWdlbnQgPSBwYWdlQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3Zl
KHBhZ2VBZ2VudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4IDI4ZWU3MjdhMzZkNjZjZTIx
MDk2OTc4MzFhZTBhOGFhYzQyMzg1NzUuLjZjMWI1MWFkZWU5YTM4NDI2MzMzOGY0NWQ4ODg0YTZk
OWMzN2VhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsIDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBTZXR0aW5ncyB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKICAgICAgICAgU2V0dGluZ3MoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwg
flNldHRpbmdzKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckhpc3RvcnkuY3BwCmluZGV4IDAwZDVmMTg1MmNlYmEyNzBjM2FmODFjMTMyMDkwMDVkYTdi
MTE4YTguLmM4MTAzZGQ3ZGJiODMyMGVhYjJlNmFkNWUzMmMyZDUyZDcyYjA2M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5zcGVjdG9ySGlzdG9yeTo6cGVyZm9ybShzdGQ6OnVu
aXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24pCiAKIHZvaWQgSW5zcGVjdG9ySGlzdG9yeTo6bWFya1Vu
ZG9hYmxlU3RhdGUoKQogewotICAgIHBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxVbmRvYWJsZVN0
YXRlTWFyaz4oKSk7CisgICAgcGVyZm9ybShtYWtlVW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigp
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW5zcGVjdG9ySGlzdG9yeTo6dW5kbygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXgg
Y2EzMGUxYTI3YmY0MDYxODVhNDgzMjBhMjYzMTgzZWE3ZTZlNDdlMy4uMjI5Yzk4YTQ0N2QyMjI0
OGRkZWYzYmEzNGIzN2M1YzRjMDQ3NTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUGFy
c2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0YShzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNvdXJjZURh
dGFMaXN0PiBzb3VyY2VECiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NvdXJjZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKKyAgICBtX3NvdXJj
ZURhdGEgPSBtYWtlVW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKIAogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIHRvIHJldGFpbiB0aGUgb3JpZ2luYWwgZmxh
dCBzb3VyY2VEYXRhIHN0cnVjdHVyZQogICAgIC8vIGNvbnRhaW5pbmcgb25seSBzdHlsZSBydWxl
cywgZXZlbiB0aG91Z2ggQ1NTUGFyc2VyIG5vdyBwcm92aWRlcyB0aGUgZnVsbCBydWxlIHNvdXJj
ZSBkYXRhIHRyZWUuCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hl
ZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRv
IG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOwotICAgIGF1dG8g
cnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlz
dD4oKTsKKyAgICBhdXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gbWFrZVVuaXF1ZTxSdWxlU291
cmNlRGF0YUxpc3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNl
ckNvbnRleHRGb3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsK
ICAgICBTdHlsZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgp
LCBtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwCmluZGV4IGQzYjc1OWYyOWNjZjFhZTE4MDI4MGQ1ZTE3MzY3MGQyOWM0ZjhjYzEu
LmZkN2NhZDMwNzY3ZTc3NWIxNjc1ZWM0NTRlZjdhMDhiYjAzNmQ1OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9y
UmVxdWVzdElkKHJlcXVlc3RJZCk7CiAKLSAgICBhdXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJl
c291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklk
KTsKICAgICByZXNvdXJjZURhdGEtPnNldFR5cGUodHlwZSk7CiAgICAgbV9yZXF1ZXN0SWRUb1Jl
c291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJlc291cmNlRGF0YSkpOwogfQpA
QCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3Jl
YXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nCiB7CiAgICAgZW5zdXJl
Tm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAKLSAgICBhdXRvIHJlc291cmNlRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKKyAg
ICBhdXRvIHJlc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQs
IGxvYWRlcklkKTsKICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKCZjYWNoZWRS
ZXNvdXJjZSk7CiAgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElk
LCBXVEZNb3ZlKHJlc291cmNlRGF0YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDQzNTFlODcyYTll
NWEzNjQ3MjlmNWI0ZmIyNjIxNmM3MzMwMmM4ZGQuLjM2NGFlYTdkNGI1ZDkxMTc5MzI3NWQ2NDZm
Mjk1ZTY3YmYwZWVlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAg
ICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0
aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVh
dGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVj
dGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkp
KQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVu
ZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNo
OjpjcmVhdGUoKSkKQEAgLTY5LDcgKzY5LDcgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKIAog
ICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgpOwogCi0gICAgYXV0
byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29y
a2VyQ29udGV4dCk7CisgICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNv
bnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBl
bmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIH0KQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAgbV9leGVjdXRp
b25TdG9wd2F0Y2gtPnJlc2V0KCk7CiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnN0YXJ0KCk7
CiAKLSAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUb1Bh
Z2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fZm9yd2FyZGlu
Z0NoYW5uZWwgPSBtYWtlVW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3Jr
ZXJHbG9iYWxTY29wZSk7CiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKCpt
X2ZvcndhcmRpbmdDaGFubmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZtX2JhY2tlbmREaXNwYXRjaGVy
LmdldCgpKTsKIH0KQEAgLTE2NCwxOCArMTY0LDE4IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAKICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3
b3JrZXJBZ2VudENvbnRleHQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2VyQ29udGV4dCkpOwogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KG1fd29ya2VyR2xvYmFsU2NvcGUpKSB7Ci0gICAgICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAg
ICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+
KHdvcmtlckNvbnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8U2Vy
dmljZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOwogICAgIH0K
ICNlbmRpZgogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2ViSGVhcEFn
ZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VyRGVidWdnZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckF1ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXZWJIZWFwQWdlbnQ+KHdvcmtlckNvbnRl
eHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50
Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2Vy
QXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkpOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5l
QVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkK
ICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5j
b3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IGE4ZDNj
ODk5YzMyODBhMjhlNjczMmNmODhhYjg0ZDAwMGQ0NWVkMmQuLmZkZjA0NGM1NzliMzY4YzMyMDUx
YjY1ZGM0NDBlMzg3ZjYwMThmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQo
UGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQXBw
bGljYXRpb25DYWNoZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5z
cGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0
Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcAppbmRleCBjZjk0Y2E4
MDk2ZmY1NzFkNzRkNzczYjFmMDAyNzUwNTRjMGNlMWY5Li4xMTYyNGUyNDA5NDY0ZmMxZTFlNjVh
Njk5OGRiZDFiMDY4MmYwYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ1BVUHJvZmls
ZXJBZ2VudDo6SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDUFVQcm9maWxlciJfcywgY29udGV4dCkK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpD
UFVQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q1BVUHJvZmls
ZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNQVVByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
aW5kZXggNGI2OTk0NWVjNzA2N2Y5NjQzZTQ4MDczMDM0ODQyNjg2ZDYxOWZiOC4uNDRlOWM1YWJl
YjRjOTY2YWJhZWE5NDRhNDBkNWUwM2Q0NzJkMTFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTI5Nyw3ICsy
OTcsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShD
U1NSdWxlJiBydWxlKQogCiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoV2Vi
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDU1MiX3Ms
IGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPENT
U0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENTU0JhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9
CkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVl
dFRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVy
Zm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JT
dHlsZVNoZWV0LCB0ZXh0KSk7CisgICAgYXV0byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgp
LT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0
eWxlU2hlZXQsIHRleHQpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkpOwogfQpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpT
T046Ok9iamVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1
bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5
bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7Cisg
ICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtl
VW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJ
ZCwgdGV4dCkpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAg
ICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9y
bVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC02NzAsNyAr
NjcwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2IKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0o
c3RkOjptYWtlX3VuaXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hl
ZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7CisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9t
QWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlv
bj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpKTsKICAgICBpZiAo
cGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IElu
c3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHN0eWxlU2hlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGFjdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2Vs
ZWN0b3IpOworICAgIGF1dG8gYWN0aW9uID0gbWFrZVVuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNw
ZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CiAgICAgYXV0byYgcmF3QWN0aW9uID0gKmFjdGlv
bjsKICAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3Jt
KFdURk1vdmUoYWN0aW9uKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggOWJlMDYxMTlmYjMyMTk3MDA3Mjk3MjJkODM2YTgxNmIy
NWYxYzAxNS4uMGU1MGM3NWJhNDg3NTE1NTZlNDEyZGNiOTdhZDE5NjY5NjVhOTk5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KFBhZ2VBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNhbnZhcyJfcywgY29u
dGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNhbnZhc0Zy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6Q2FudmFzQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCYgY2FudmFzUmVuZAogICAgIGlmICghaW5zcGVjdG9yQ2FudmFzLT5jdXJyZW50RnJhbWVIYXNE
YXRhKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBpbnNw
ZWN0b3JDYW52YXMtPmNvbnRleHQoKS5jYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBxdWV1ZSA9IE1pY3JvdGFza1F1ZXVlOjptYWluVGhy
ZWFkUXVldWUoKTsKLSAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEFj
dGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihxdWV1ZSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IFsmLCBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0b3JDYW52YXMuY29weVJlZigp
XSB7CisgICAgICAgICAgICBxdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFj
a01pY3JvdGFzaz4ocXVldWUsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbJiwgcHJvdGVjdGVk
SW5zcGVjdG9yQ2FudmFzID0gaW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKV0gewogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVtZW50ID0gcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFz
LT5jYW52YXNFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhc0VsZW1l
bnQtPmlzRGVzY2VuZGFudE9mKGNhbnZhc0VsZW1lbnQtPmRvY3VtZW50KCkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2YzE5NmUwY2M2ODJiNDQyNTZj
N2RkYWFlMDkwYWEwYWFkNTUzMTdkLi5mMGEyOGMxMzMxYzViYjMwODhkNTNlNzI0M2RiYWY0ZWVi
NjNlN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIFN0cmluZyBJbnNwZWN0b3JE
T01BZ2VudDo6dG9FcnJvclN0cmluZyhFeGNlcHRpb24mJiBleGNlcHRpb24pCiBJbnNwZWN0b3JE
T01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5z
cGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRE9NIl9z
LCBjb250ZXh0KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpE
T01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
Y29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2Uo
Y29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkpCkBAIC0zMDEs
OCArMzAxLDggQEAgSW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCgpCiAKIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0g
ICAgbV9oaXN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOwotICAg
IG1fZG9tRWRpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxET01FZGl0b3I+KCptX2hpc3RvcnkpOwor
ICAgIG1faGlzdG9yeSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsKKyAgICBtX2Rv
bUVkaXRvciA9IG1ha2VVbmlxdWU8RE9NRWRpdG9yPigqbV9oaXN0b3J5KTsKIAogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKICAgICBtX2RvY3Vt
ZW50ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CkBAIC02NTMsNyAr
NjUzLDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5v
ZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgIE5vZGUqIHBhcmVudCA9IGlubmVyUGFyZW50Tm9kZShu
b2RlKTsKICAgICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICAgICAgIC8vIE5vZGUgYmVpbmcg
cHVzaGVkIGlzIGRldGFjaGVkIC0+IHB1c2ggc3VidHJlZSByb290LgotICAgICAgICAgICAgYXV0
byBuZXdNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVUb0lkTWFwPigpOworICAgICAgICAgICAg
YXV0byBuZXdNYXAgPSBtYWtlVW5pcXVlPE5vZGVUb0lkTWFwPigpOwogICAgICAgICAgICAgZGFu
Z2xpbmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRN
YXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4g
PSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgp
OwpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3IKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZp
ZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgIGJvb2wgc2hvd0luZm8gPSBm
YWxzZTsgLy8gRGVmYXVsdDogZmFsc2UgKGRvIG5vdCBzaG93IGEgdG9vbHRpcCkuCiAgICAgaGln
aGxpZ2h0SW5zcGVjdG9yT2JqZWN0LT5nZXRCb29sZWFuKCJzaG93SW5mbyIsIHNob3dJbmZvKTsK
ICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gc2hvd0luZm87CkBAIC0xMTk2LDEzICsx
MTk2LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwg
aW50IGhlaWdodCwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0
KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBh
dXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdp
ZHRoLCBoZWlnaHQpKTsKKyAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oRmxv
YXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RG
TW92ZShxdWFkKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IEpTT046OkFycmF5JiBxdWFkQXJyYXksIGNvbnN0IEpTT046Ok9iamVj
dCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1
c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxG
bG9hdFF1YWQ+KCk7CisgICAgYXV0byBxdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCk7CiAg
ICAgaWYgKCFwYXJzZVF1YWQocXVhZEFycmF5LCBxdWFkLmdldCgpKSkgewogICAgICAgICBlcnJv
clN0cmluZyA9ICJJbnZhbGlkIFF1YWQgZm9ybWF0Il9zOwogICAgICAgICByZXR1cm47CkBAIC0x
MjEyLDcgKzEyMTIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYQogCiB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4g
cXVhZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRs
aW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIGhp
Z2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAg
IGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAg
ICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgaGln
aGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsK
ICAgICBoaWdobGlnaHRDb25maWctPnVzZVBhZ2VDb29yZGluYXRlcyA9IHVzZVBhZ2VDb29yZGlu
YXRlcyA/ICp1c2VQYWdlQ29vcmRpbmF0ZXMgOiBmYWxzZTsKQEAgLTEzMTYsNyArMTMxNiw3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBmCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChmcmFt
ZS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICAgICAgYXV0byBoaWdobGlnaHRD
b25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5zaG93SW5mbyA9IHRydWU7IC8vIEFsd2F5cyBzaG93IHRvb2x0aXBzIGZvciBmcmFt
ZXMuCiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3Ip
OwogICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihv
dXRsaW5lQ29sb3IpOwpAQCAtMTM5OCw3ICsxMzk4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0SW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQp
CiAgICAgbV9pbnNwZWN0ZWROb2RlID0gbm9kZTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5kTGlu
ZUFQSUhvc3QgPSBzdGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImPihtX2luamVj
dGVkU2NyaXB0TWFuYWdlcikuY29tbWFuZExpbmVBUElIb3N0KCkpCi0gICAgICAgIGNvbW1hbmRM
aW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFi
bGVOb2RlPihub2RlKSk7CisgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVk
T2JqZWN0KG1ha2VVbmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CiAKICAgICBtX3N1cHBy
ZXNzRXZlbnRMaXN0ZW5lckNoYW5nZWRFdmVudCA9IGZhbHNlOwogfQpAQCAtMjMxNCw3ICsyMzE0
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVt
ZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmV2YWxpZGF0ZVN0
eWxlQXR0clRhc2spCi0gICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KHRoaXMpOworICAgICAgICBt
X3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gbWFrZVVuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRy
aWJ1dGVUYXNrPih0aGlzKTsKICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5zY2hlZHVs
ZUZvcigmZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCBlOTcxYTk5
ZjcwNTI0ZDgzMTgxYWU3MTVkODI2NTg4MTFmZTA4ODA4Li44MWYxNGRjMTdiZmEwNDc0N2UzZDIz
ZTQ1M2Y1ZTRhZjhkMDlmZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC01Niw3ICs1
Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRPTVN0b3JhZ2UiX3MsIGNvbnRleHQpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NU3Rv
cmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
Y29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2Uo
Y29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggYjM3YTU2
MGNlODA3NjhjNjY0NDA4NTE1ZmIwNTUxMjYxNjViZWQ4Mi4uMzU4YTg1NjUxMmVhNGQ3MTk2MzMy
YTIwNjk5MGRlMzI1MDA0MTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0yMTcsNyArMjE3
LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRPcGVuRGF0YWJhc2UoRGF0YWJh
c2UmIGRhdGFiYXNlKQogCiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFz
ZSgiRGF0YWJhc2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGUxZTA4MmU0MWFkMmQ1MjRmNTdlZjEw
NjQwMjg4NzYxMTU2ODI0YjkuLmI1OTgyY2VlMzdlMzc0NDcwNTM5NDZiY2Y0YzQzNGI0MzFlZjlh
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIkxheWVyVHJlZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+
KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TGF5
ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggMjljNzZkMGM3ZmVhOTIyYzJhM2Q5
OTQxNGM5ODZlYThkMjhkNzdiNS4uMjgzMjk1MWY1MzgwMTIxZmE0NTJiZmE4ZDQ3MGY0ZDM1ZTc4
OWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50
KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIk1l
bW9yeSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0
b3I6Ok1lbW9yeUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TWVtb3J5QmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAppbmRleCAzZTRlOTZlYjIzMWEwNTRiMjEyMTI0N2JjMmNiMDkxNjVmMDI2NWIz
Li41ZDA4MTYzODBjZGM2NmM3ZDc5NjBjMTJkMzQ4YTBmYmYzZjdiMTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCkBAIC0xNzIsMTAgKzE3MiwxMCBAQCBjbGFzcyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogCiBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rvck5ldHdvcmtBZ2VudChXZWJBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIk5ldHdvcmsiX3MsIGNvbnRleHQp
Ci0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6
TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29u
dGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fcmVzb3VyY2VzRGF0
YShzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQorICAgICwgbV9yZXNv
dXJjZXNEYXRhKG1ha2VVbmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+KCkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAppbmRleCAzMjllMWIwYzVhZDkyZmI0NTFkZjE3NjczM2FlMmFlMzU4ZmI0OTM3Li5j
NjQxYTZhMDQ4NDE5MzI2OGUyOWU5MGZmMDEyNmFiOTExYzkzMGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC0zMzMsNyArMzMzLDcgQEAgRG9jdW1lbnRMb2FkZXIqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNz
ZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAogSW5zcGVjdG9yUGFn
ZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIlBhZ2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UGFnZUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9j
bGllbnQoY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggM2EzNjFlOTFlNmYyZGViMDA0
MmUxOGE3YzY0YzdiNTE2ZjliODBjNS4uMzBkODZjNzQ2M2M0N2Y1YjNhZDJiMzhjZjVkZTI0OWQ0
NGViOWE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBD
RlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQogCiBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIlRpbWVsaW5lIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVk
UGFnZSkKIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKICAgICAvLyBGSVhN
RTogQWJzdHJhY3QgYXdheSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIG9uY2UgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc0OCBpcyBmaXhlZC4KIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxS
dW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2Vs
bEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdpbiksIFt0aGlzXSgpIHsKKyAg
ICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0
aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6
Okluc3BlY3RvckZyYW1lQmVnaW4pLCBbdGhpc10oKSB7CiAgICAgICAgIGlmICghbV90cmFja2lu
ZyB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAg
ICAgICBtX3J1bkxvb3BOZXN0aW5nTGV2ZWwrKzsKICAgICB9KTsKIAotICAgIG1fZnJhbWVTdG9w
T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8
Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0
b3JGcmFtZUVuZCksIFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3RvcE9ic2VydmVyID0gbWFrZVVu
aXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZl
cjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7
CiAgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2Vy
dmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjgwLDcgKzI4MCw3
IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICAgICAgaWYgKFdlYkNvbnNv
bGVBZ2VudCogY29uc29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVB
Z2VudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8g
dGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgICAgICAgICAgICAgIFN0cmlu
ZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4
aXN0cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhp
c3RzIik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29u
c29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJu
aW5nKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29u
c29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BG
cm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bAogICAgIGlmIChX
ZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJD
b25zb2xlQWdlbnQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBm
cm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxl
LmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUg
XCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGNvbnNvbGVBZ2VudC0+
YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2Fn
ZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDkxNjFkODQzY2QzOGU0
ZDk2NjEyNmFjZGQzNmU4M2RkMThmNTEwMDIuLjFlMzk4ZWRkMWE5ZWEzZWYyNmJlMDllYzAzZDZj
NmMyY2QzOThkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3Jr
ZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJXb3JrZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OldvcmtlckJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDJlZWQxY2U2MGIz
MDIyYWQ5ODI0ZmE2MjhhMzVkZGM1NDQ0OTYwZDkuLmMyMDk0Yjk5MmQzNTQxNjBmMTdlZTI4ZjY0
MTBhNzkzZGNkZTlmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvV2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJDb25zb2xl
QWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdAogCiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7CiAg
ICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3Vy
Y2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsKLSAg
ICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBtZXNzYWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwg
cmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKICAgICB9CiB9CiAKQEAgLTky
LDcgKzkyLDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFJlc28KICAgICAgICAgbWVzc2FnZS5hcHBl
bmQoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CiAgICAgfQogCi0gICAgYWRkTWVzc2Fn
ZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdl
LnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElk
ZW50aWZpZXIpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCAwLCAw
LCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5j
cHAKaW5kZXggYmI1ZDFiZWM2YzYzMjIzOWJlZTY0NjM0MzdhZWZlZDEyYmE0NzFkNS4uMDljYjZm
NDY2NmFiNGM5MWNiZWUyZDBmY2ZkZDRiYTZhNjFhMTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcApAQCAtNDEsNiArNDEsNyBAQCBz
dHJ1Y3QgR2FyYmFnZUNvbGxlY3Rpb25EYXRhIHsKIH07CiAKIGNsYXNzIFNlbmRHYXJiYWdlQ29s
bGVjdGlvbkV2ZW50c1Rhc2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2soV2ViSGVhcEFnZW50Jik7CiAg
ICAgdm9pZCBhZGRHYXJiYWdlQ29sbGVjdGlvbihHYXJiYWdlQ29sbGVjdGlvbkRhdGEmJik7CkBA
IC05Niw3ICs5Nyw3IEBAIHZvaWQgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6dGlt
ZXJGaXJlZCgpCiBXZWJIZWFwQWdlbnQ6OldlYkhlYXBBZ2VudChXZWJBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JIZWFwQWdlbnQoY29udGV4dCkKICAgICAsIG1faW5zdHJ1
bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX3NlbmRH
YXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2soc3RkOjptYWtlX3VuaXF1ZTxTZW5kR2FyYmFnZUNv
bGxlY3Rpb25FdmVudHNUYXNrPigqdGhpcykpCisgICAgLCBtX3NlbmRHYXJiYWdlQ29sbGVjdGlv
bkV2ZW50c1Rhc2sobWFrZVVuaXF1ZTxTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrPigq
dGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCA1ZWFmYjZhMzI4NDZlNzAwMTUz
YWM4MjY4MWI3YmU1MGQzYWZlNDhjLi44OTg1YmM5NDVmZTc1ZTBlODUxYTM2ZGUzNTg0YWIwNDcx
YzBmZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoUGFn
ZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250
ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnN0cnVtZW50aW5n
QWdlbnRzKGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IGIyMGNiYmM5NTA3MDI4MTFiNjU4OWFjMWRmYmQ1NzMzOTE5M2QzMzcuLjgwODJlZTMxZWVjNjBh
MmY2MDMyOWRiYWJkNGQ5ODQyZjZhNTVmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIFdvcmtlckRlYnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFn
ZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRB
Y3Rpb25Mb2coRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSkpOwor
ICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VM
ZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSkpOwogfQog
CiBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2
YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJ
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4IGJkOWQ0Y2FkZWZiMmZh
YTFmMmUwYjI1Nzk1NWFkNTEyNGUxNzk0ZWUuLjFmM2ZhYmEzMTI2ZjJlOWIzNmI4NGQxM2U3M2Jm
MWZkYTMxNzU0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcApAQCAtOTEs
NyArOTEsNyBAQCB2b2lkIExheW91dFN0YXRlOjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRy
ZWUoY29uc3QgQm94JiBsYXlvdXRSb290KQogRGlzcGxheTo6Qm94JiBMYXlvdXRTdGF0ZTo6ZGlz
cGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gKm1fbGF5b3V0VG9EaXNwbGF5Qm94LmVuc3VyZSgmbGF5b3V0Qm94LCBbJmxheW91dEJv
eF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpCb3g+KGxheW91
dEJveC5zdHlsZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheTo6Qm94Pihs
YXlvdXRCb3guc3R5bGUoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCkBAIC0xNDAs
MTMgKzE0MCwxMyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICAgICAgLy8gc2hv
dWxkIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgY29udGVudCBpbnNpZGUuCiAgICAgICAgICAgICAv
LyA8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+PC9kaXY+PGRpdiBzdHlsZT0ib3ZlcmZsb3c6IGhp
ZGRlbiI+IDwtIGlzIGEgbm9uLWludHJ1c2l2ZSBmbG9hdCwgYmVjYXVzZSBvdmVyZmxvdzogaGlk
ZGVuIHRyaWdnZXJzIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuPC9kaXY+CiAgICAgICAg
ICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0
dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwg
KnRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0
aGlzKTsKIAogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZm9ybWF0dGluZyBjb250ZXh0
IGluaGVyaXRzIHRoZSBmbG9hdHMgZnJvbSB0aGUgcGFyZW50IGZvcm1hdHRpbmcgY29udGV4dC4K
ICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGZvcm1hdHRpbmcgc3RhdGUgaW4gd2hpY2ggdGhpcyBm
b3JtYXR0aW5nIHJvb3QgbGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNyZWF0ZXMgYW5kIHVzZSBpdHMg
ZmxvYXRpbmcgc3RhdGUuCiAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGb3JtYXR0aW5nU3RhdGUg
PSBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRp
bmdSb290LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpKTsgCiAgICAgICAgICAgICBhdXRvJiBwYXJl
bnRGbG9hdGluZ1N0YXRlID0gcGFyZW50Rm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0
ZT4ocGFyZW50RmxvYXRpbmdTdGF0ZSwgKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRlLCAqdGhpcyk7
CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE1NCw3ICsxNTQsNyBA
QCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JG
b3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0
YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0gewogCiAgICAgICAgICAgICAvLyBCbG9j
ayBmb3JtYXR0aW5nIGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0aW5nIHN0
YXRlLgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3JtYXR0aW5n
U3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhp
cyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4o
RmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKICAg
ICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIEZv
cm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1h
dHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVz
LmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIFRhYmxlIGZv
cm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUg
LWFuZCBpdCBzdGF5cyBlbXB0eS4KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1h
dHRpbmdSb290KSwgKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVG
b3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jv
b3QpLCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE3
NCwxOCArMTc0LDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gTGF5b3V0
U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJvCiAgICAgQVNTRVJUKGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIGlm
IChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCgpKSB7CiAgICAgICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jv
b3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9v
dCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaW5saW5lRm9ybWF0
dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFi
bGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIEFTU0VSVChmb3JtYXR0
aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0T25seSgpKTsK
ICAgICAgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1h
dHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRl
ZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBibG9ja0Zv
cm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgYmxvY2tGb3JtYXR0aW5nU3RhdGUpOwog
ICAgIH0KIAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNUYWJsZUZv
cm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0byYgdGFibGVGb3JtYXR0aW5nU3RhdGUg
PSBkb3duY2FzdDxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9y
Rm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGFibGVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGlu
Z0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdGFi
bGVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAppbmRleCA3YWUzYjQwOWQ3NjEx
NmYyZTlkMTNjYzMxZWI2ZTU2MDYzYjEwNzZmLi43OTkxNjI3NTc0MDE4M2YzNTNmNWFmZDViMTUy
MmU1NjUzZmM4OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UnVuLmgKQEAgLTM2LDcgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIERpc3BsYXkgewogCiBzdHJ1Y3QgUnVuIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgc3RydWN0IFRleHRDb250ZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dENvbnRleHQodW5z
aWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcAppbmRleCBhMWNkNmQ2ZjFiN2ViOTBmY2M3OTA1ZTMxZTlmMDRmZTNiZjgy
NjBiLi41MDhkNjYxMjlkMTQ4N2M0ZTg0NDA5MzkzZGEzMzQwOTE5ZWE3Zjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQoKSBjb25zdAogICAgICAg
ICAgICAgaWYgKCF0cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJveCkpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFydCBvZiBhbiBpbmxp
bmUgY29udGFpbmVyIChlLmcuIDxzcGFuPikuCi0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5s
aW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyU3RhcnQpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdT
dGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxp
bmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCkpOwogICAgICAgICAgICAgYXV0byYgY29udGFp
bmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwogICAgICAgICAgICAgaWYgKCFj
b250YWluZXIuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0yOTIsMTcgKzI5MiwxNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3gg
PSAqbGF5b3V0UXVldWUudGFrZUxhc3QoKTsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVu
ZCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcuIDwvc3Bhbj4pLgogICAgICAgICAgICAgaWYg
KHRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKLSAgICAgICAgICAgICAgICBmb3Jt
YXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxh
eW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7CisgICAgICAgICAgICAg
ICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihs
YXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVuZCkpOwogICAgICAgICAgICAg
ZWxzZSBpZiAobGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCkpCi0gICAgICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihs
YXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWspKTsKKyAgICAgICAgICAg
ICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+
KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhaykpOwogICAgICAgICAg
ICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgICAg
ICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxp
bmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CisgICAgICAgICAg
ICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVt
PihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3goKSk7
CiAgICAgICAgICAgICAgICAgaWYgKGxheW91dEJveC5oYXNUZXh0Q29udGVudCgpKQogICAgICAg
ICAgICAgICAgICAgICBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKGZv
cm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygpLCBsYXlvdXRCb3gpOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0o
c3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6
OkJveCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRl
bShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94
KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9
IGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKaW5kZXggZjc0MWRlNDg5
ZTk0MjQ2MWQ3NjkyZTJlNDA0MTU5MzgzYjBjODE2MC4uMGEyMTMwMjEzZjEyNGVlYjVmN2Y3MTEy
ZTg4NmQ3MTJjNTMxZGEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dExpbmVMYXlvdXQuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpD
b250ZW4KICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChsb2dpY2FsUmVjdC50b3BM
ZWZ0KCkpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgobG9naWNh
bFJlY3Qud2lkdGgoKSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWln
aHQobG9naWNhbFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsK
KyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNw
bGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5s
aW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAg
ICAgICAgICB0b3BMZWZ0ICs9IEdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZz
ZXQobGF5b3V0U3RhdGUoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0
VG9wTGVmdCh0b3BMZWZ0KTsKICAgICAgICAgICAgIGxpbmVCb3hSZWN0LmV4cGFuZEhvcml6b250
YWxseShsb2dpY2FsUmVjdC53aWR0aCgpKTsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5h
ZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7
CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlz
cGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Oklu
bGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAg
ICAgICBhdXRvIHByZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCA9IHByZXZpb3VzTGluZVJ1biAmJiBw
cmV2aW91c0xpbmVSdW4tPnRleHRDb250ZXh0KCkgPyBwcmV2aW91c0xpbmVSdW4tPnRleHRDb250
ZXh0KCktPmNhbkJlRXh0ZW5kZWQgOiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gcmVxdWlyZXNO
ZXdSdW4gPSAhaW5kZXggfHwgIXByZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCB8fCAmbGF5b3V0Qm94
ICE9ICZwcmV2aW91c0xpbmVSdW4tPmxheW91dEJveCgpOwogICAgICAgICAgICAgaWYgKHJlcXVp
cmVzTmV3UnVuKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4o
c3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46
OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29udGV4dC0+bGVuZ3RoIH0p
KTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlx
dWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCwgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7
IHRleHRDb250ZXh0LT5zdGFydCwgdGV4dENvbnRleHQtPmxlbmd0aCB9KSk7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRvJiBsYXN0RGlzcGxheVJ1biA9IGZvcm1hdHRp
bmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpOwogICAgICAgICAgICAgICAgIGxhc3REaXNwbGF5
UnVuLT5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKaW5kZXgg
YjAwMTNiNmVkNTYzYmNiZjgyODEzOTEzNDFmMmRkNTYxNWVjNTNlZi4uNzkwNjE5NjgxZTY3NTJk
Mjg3MjQ5Mzg2MjJlM2E3NGJlMDMzZmYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgSW5saW5lSXRlbSA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbmxpbmVJdGVtPiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgVGV4dCwgSGFyZExpbmVC
cmVhaywgQm94LCBGbG9hdCwgQ29udGFpbmVyU3RhcnQsIENvbnRhaW5lckVuZCB9OwogICAgIElu
bGluZUl0ZW0oY29uc3QgQm94JiBsYXlvdXRCb3gsIFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAppbmRleCA0ZjIw
YTZmZjFkNzBjZTM0OWJkZTBlYmVkZmU4ZjgwYTM1ZTg1YTI4Li5lZDY1MjA1YjdkYjk5YjBmNmFi
MTBmM2VlZWFhMDdjNDQ2YjdmOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcApAQCAtNTQsNyArNTQsNyBAQCBMaW5l
OjpDb250ZW50OjpSdW46OlJ1bihjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBU
ZXh0Q29udGV4dCYgdGV4dENvbgogCiBMaW5lOjpMaW5lKGNvbnN0IExheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiBpbml0aWFsQ29uc3RyYWludHMsIFNr
aXBWZXJ0aWNhbEFsaWdtZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50KQogICAgIDogbV9sYXlvdXRT
dGF0ZShsYXlvdXRTdGF0ZSkKLSAgICAsIG1fY29udGVudChzdGQ6Om1ha2VfdW5pcXVlPExpbmU6
OkNvbnRlbnQ+KCkpCisgICAgLCBtX2NvbnRlbnQobWFrZVVuaXF1ZTxMaW5lOjpDb250ZW50Pigp
KQogICAgICwgbV9sb2dpY2FsVG9wTGVmdChpbml0aWFsQ29uc3RyYWludHMubG9naWNhbFRvcExl
ZnQpCiAgICAgLCBtX2Jhc2VsaW5lKHsgaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2Vs
aW5lLmJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUu
aGVpZ2h0IC0gaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5lT2Zm
c2V0IH0pCiAgICAgLCBtX2luaXRpYWxTdHJ1dChpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5k
QmFzZWxpbmUuc3RydXQpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmQoY29u
c3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiAKIHZv
aWQgTGluZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UoY29uc3QgSW5saW5lSXRlbSYgaW5saW5l
SXRlbSwgY29uc3QgRGlzcGxheTo6UmVjdCYgbG9naWNhbFJlY3QpCiB7Ci0gICAgbV9jb250ZW50
LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVt
LCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVl
PENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKICAgICBtX2NvbnRlbnRM
b2dpY2FsV2lkdGggKz0gbG9naWNhbFJlY3Qud2lkdGgoKTsKIH0KIApAQCAtMjgyLDcgKzI4Miw3
IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlu
bGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNhCiAgICAgfQogCiAgICAgYXV0byB0ZXh0Q29udGV4
dCA9IENvbnRlbnQ6OlJ1bjo6VGV4dENvbnRleHQgeyBpbmxpbmVJdGVtLnN0YXJ0KCksIGlubGlu
ZUl0ZW0uaXNDb2xsYXBzZWQoKSA/IDEgOiBpbmxpbmVJdGVtLmxlbmd0aCgpLCBpc0NvbXBsZXRl
bHlDb2xsYXBzZWQsIGlubGluZUl0ZW0uaXNXaGl0ZXNwYWNlKCksIGNhbkJlRXh0ZW5kZWQgfTsK
LSAgICBhdXRvIGxpbmVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGlu
ZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2FsUmVjdCk7CisgICAgYXV0byBsaW5lSXRlbSA9IG1h
a2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCB0ZXh0Q29udGV4dCwgbG9naWNhbFJl
Y3QpOwogICAgIGlmIChpc1RyaW1tYWJsZSAmJiAhaXNDb21wbGV0ZWx5Q29sbGFwc2VkKQogICAg
ICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuYWRkKGxpbmVJdGVtLmdldCgpKTsKIApAQCAtMzAzLDcg
KzMwMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgSW5s
aW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsCiAgICAgICAgIGxvZ2ljYWxSZWN0LnNl
dEhlaWdodChpbmxpbmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKSk7CiAgICAgfQogCi0g
ICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVu
PihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVu
ZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKICAg
ICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0gKGxvZ2ljYWxXaWR0aCArIGhvcml6b250YWxNYXJn
aW4uc3RhcnQgKyBob3Jpem9udGFsTWFyZ2luLmVuZCk7CiAgICAgbV90cmltbWFibGVDb250ZW50
LmNsZWFyKCk7CiB9CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmRIYXJkTGlu
ZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgICAgIGFkanVzdEJhc2Vs
aW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVtLCB7IH0pOwogICAgICAgICBsb2dpY2FsUmVjdC5z
ZXRIZWlnaHQobG9naWNhbEhlaWdodCgpKTsKICAgICB9Ci0gICAgbV9jb250ZW50LT5ydW5zKCku
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2Fs
UmVjdCkpOworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6
OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKIH0KIAogdm9pZCBMaW5lOjphZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0
VW5pdCBydW5IZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lLmgKaW5kZXggZmFmMDU0NzUzZDM3MjJhYmMwMWQ4YTczZjQ3OTkz
NDliY2IxYWExMS4uNzM3YTA3YjAzMmFmNmZmMTE5OTA5NmY3YTM3NTc1N2U2ZGE5ZjFiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmUuaApAQCAtNTIsOCArNTIsMTAgQEAgY2xhc3MgTGluZSB7CiAgICAgTGluZShjb25zdCBMYXlv
dXRTdGF0ZSYsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50cyYsIFNraXBWZXJ0aWNhbEFsaWdtZW50
KTsKIAogICAgIGNsYXNzIENvbnRlbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0cnVjdCBSdW4geworICAgICAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAgICAgc3RydWN0IFRleHRDb250ZXh0
IHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsZW5ndGggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKaW5kZXggZjEzMDg5YTcw
OGYzZmUzZmY5Yjc3ZjcyMDk2Y2RhNDJlZjM2ZTIyMi4uNWU2YzI1NmRiMGIzMDlhYWYxZTI1ODIx
ZjBlMWUxOGU1NjQ1MmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcApAQCAtODksNyArODksNyBAQCB2
b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMm
IGlubGluZUNvbnRlbnQsIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0ID0gaW5saW5lQm94LnRleHRD
b250ZW50KCk7CiAgICAgaWYgKCF0ZXh0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gaW5saW5l
Q29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94
LCAwLCAwLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBw
ZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgMCwgMCwgZmFsc2UsIGZh
bHNlKSk7CiAKICAgICBhdXRvJiBzdHlsZSA9IGlubGluZUJveC5zdHlsZSgpOwogICAgIGF1dG8g
cHJlc2VydmVOZXdsaW5lID0gc3R5bGUucHJlc2VydmVOZXdsaW5lKCk7CkBAIC05OSwyMCArOTks
MjAgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGlu
ZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogICAgIHdoaWxlIChjdXJyZW50UG9zaXRpb24g
PCB0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIC8vIFNvZnQgbGluZWJyZWFrPwogICAgICAgICBp
ZiAoaXNTb2Z0TGluZUJyZWFrKHRleHRbY3VycmVudFBvc2l0aW9uXSwgcHJlc2VydmVOZXdsaW5l
KSkgewotICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIDEsIHRydWUsIGZhbHNl
KSk7CisgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRl
eHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFsc2UpKTsKICAg
ICAgICAgICAgICsrY3VycmVudFBvc2l0aW9uOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZUNoYXJhY3Rlcih0ZXh0W2N1cnJlbnRQb3Np
dGlvbl0sIHByZXNlcnZlTmV3bGluZSkpIHsKICAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gbW92
ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbih0ZXh0LCBjdXJyZW50UG9zaXRpb24sIHByZXNl
cnZlTmV3bGluZSk7CiAgICAgICAgICAgICBhdXRvIGlzQ29sbGFwc2VkID0gY29sbGFwc2VXaGl0
ZVNwYWNlICYmIGxlbmd0aCA+IDE7Ci0gICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlv
biwgbGVuZ3RoLCB0cnVlLCBpc0NvbGxhcHNlZCkpOworICAgICAgICAgICAgaW5saW5lQ29udGVu
dC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9z
aXRpb24sIGxlbmd0aCwgdHJ1ZSwgaXNDb2xsYXBzZWQpKTsKICAgICAgICAgICAgIGN1cnJlbnRQ
b3NpdGlvbiArPSBsZW5ndGg7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAg
ICAgICAgIGF1dG8gbGVuZ3RoID0gbW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uKGN1cnJlbnRQ
b3NpdGlvbiwgbGluZUJyZWFrSXRlcmF0b3IsIHN0eWxlKTsKLSAgICAgICAgaW5saW5lQ29udGVu
dC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJy
ZW50UG9zaXRpb24sIGxlbmd0aCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGlubGluZUNvbnRl
bnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBv
c2l0aW9uLCBsZW5ndGgsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICBjdXJyZW50UG9zaXRpb24g
Kz0gbGVuZ3RoOwogICAgIH0KIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SW5saW5lVGV4dEl0ZW0+IElubGluZVRleHRJdGVtOjpzcGxpdCh1bnNpZ25lZCBzcGxpdFBvc2l0
aW9uLCB1bgogewogICAgIFJFTEVBU0VfQVNTRVJUKHNwbGl0UG9zaXRpb24gPj0gdGhpcy0+c3Rh
cnQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiArIGxlbmd0aCA8PSBlbmQo
KSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGxheW91dEJv
eCgpLCBzcGxpdFBvc2l0aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFjZSgpLCBpc0NvbGxhcHNlZCgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNw
bGl0UG9zaXRpb24sIGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApp
bmRleCBlZGYyZDRiMjc2NjIyYzg5NWQxNzc5NzE0Y2Y3Y2YyMDhhY2Q5YzQyLi5mNTZlMWE2MTZh
MmRmNTc3MWJiNDhhNzU4MDNhZTU3M2ZjZjhjNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQm94OjpCb3go
T3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5
bGUsIEJhc2VUeXBlRmwKICAgICAsIG1faGFzUmFyZURhdGEoZmFsc2UpCiB7CiAgICAgaWYgKGlz
UmVwbGFjZWQoKSkKLSAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5yZXBsYWNlZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVwbGFjZWQ+KCp0aGlzKTsKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5yZXBs
YWNlZCA9IG1ha2VVbmlxdWU8UmVwbGFjZWQ+KCp0aGlzKTsKIH0KIAogQm94OjpCb3goT3B0aW9u
YWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCkBA
IC00MjMsNyArNDIzLDcgQEAgY29uc3QgQm94OjpCb3hSYXJlRGF0YSYgQm94OjpyYXJlRGF0YSgp
IGNvbnN0CiBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBz
ZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRo
aXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94UmFyZURhdGE+KCk7IH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsg
cmV0dXJuIG1ha2VVbmlxdWU8Qm94UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0K
IAogdm9pZCBCb3g6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCA1ZmVlY2VlNzJm
MDhjNDg1MDg4ZWU0ODUxOTQ1YzY2NDBjZmU1N2QzLi5iYzJiYmVlNzhhMzY4NjgyNmIyMDRkZmI1
ZjY5NjI1Zjk1NmYyYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjgsMjUgKzEyOCwyNSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRl
ckVsZW1lbnQmIHBhcmVudFJlbgogICAgIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVy
KSkgewogICAgICAgICAvLyBGSVhNRTogQ2xlYXJseSB0aGVyZSBtdXN0IGJlIGEgaGVscGVyIGZ1
bmN0aW9uIGZvciB0aGlzLgogICAgICAgICBpZiAocGFyZW50UmVuZGVyZXIuc3R5bGUoKS5kaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSkKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVy
ZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5
bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZG93
bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0
eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGRvd25jYXN0PFJl
bmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNw
bGF5VHlwZTo6SW5saW5lKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlx
dWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQo
KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVu
ZGVyZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkpOwogICAgICAgICByZXR1cm4gY2hp
bGRMYXlvdXRCb3g7CiAgICAgfQogCiAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5k
ZXJFbGVtZW50PihjaGlsZFJlbmRlcmVyKTsKICAgICBhdXRvIGRpc3BsYXlUeXBlID0gcmVuZGVy
ZXIuc3R5bGUoKS5kaXNwbGF5KCk7CiAgICAgaWYgKGlzPFJlbmRlckxpbmVCcmVhaz4ocmVuZGVy
ZXIpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAKICAgICBpZiAoaXM8UmVu
ZGVyVGFibGU+KHJlbmRlcmVyKSkgewogICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIHByaW5jaXBh
bCB0YWJsZSB3cmFwcGVyIGJveCAoYW5kIG5vdCB0aGUgdGFibGUgYm94IGl0c2VsZikuCi0gICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KEJveDo6RWxl
bWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZVdyYXBwZXJCb3ggfSwgUmVu
ZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6
RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVy
KSkgewogICAgICAgICBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OkJsb2NrKQotICAg
ICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0
dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkp
OworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0
dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91
bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9u
ZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VV
bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9u
ZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCB5ZXQgc3Vw
cG9ydCBhbGwgcmVwbGFjZWQgZWxlbWVudHMgYW5kIHRoaXMgaXMgdGVtcG9yYXJ5IGFueXdheS4K
ICAgICAgICAgaWYgKGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpKQogICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3gtPnJlcGxhY2VkKCktPnNldEludHJpbnNpY1NpemUoZG93bmNhc3Q8UmVuZGVy
UmVwbGFjZWQ+KHJlbmRlcmVyKS5pbnRyaW5zaWNTaXplKCkpOwpAQCAtMTYxLDE4ICsxNjEsMTgg
QEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25z
dCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICAgICAgICAgICAgICBhdXRvIHN0eWxlID0g
UmVuZGVyU3R5bGU6OmNsb25lUHRyKHJlbmRlcmVyLnN0eWxlKCkpOwogICAgICAgICAgICAgICAg
IHN0eWxlLT5zZXRUb3AoeyBvZmZzZXQtPmhlaWdodCgpLCBGaXhlZCB9KTsKICAgICAgICAgICAg
ICAgICBzdHlsZS0+c2V0TGVmdCh7IG9mZnNldC0+d2lkdGgoKSwgRml4ZWQgfSk7Ci0gICAgICAg
ICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxl
bWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKCpzdHlsZSkpOworICAgICAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgV1RGTW92ZSgqc3R5bGUpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+
KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVy
LnN0eWxlKCkpKTsKKyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8
Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9u
ZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0g
RGlzcGxheVR5cGU6OklubGluZSkKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVy
U3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwg
UmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZSBpZiAo
ZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrKQotICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0
ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAg
ICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0
dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkp
OwogICAgICAgICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0
aW9uIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwpIHsKLSAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRB
dHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkp
KTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVs
ZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0
eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6
VGFibGVSb3dHcm91cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJH
cm91cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91cAogICAg
ICAgICAgICAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93IHx8IGRpc3Bs
YXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwIHx8IGRpc3BsYXlUeXBlID09
IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbikgewotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6
Y3JlYXRlVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRhYmxlUmVuZGVyZXIsIENv
bnRhaW4KICAgICAgICAgdGFibGVDaGlsZCA9IHRhYmxlQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAg
ICAgfQogCi0gICAgYXV0byB0YWJsZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihC
b3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVu
ZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOworICAgIGF1dG8gdGFibGVC
b3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6
RWxlbWVudFR5cGU6OlRhYmxlQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZSh0YWJsZVJlbmRlcmVy
LnN0eWxlKCkpKTsKICAgICBhcHBlbmRDaGlsZCh0YWJsZVdyYXBwZXJCb3gsICp0YWJsZUJveCk7
CiAgICAgd2hpbGUgKHRhYmxlQ2hpbGQpIHsKICAgICAgICAgVHJlZUJ1aWxkZXI6OmNyZWF0ZVN1
YlRyZWUoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnRhYmxlQ2hpbGQpLCAqdGFibGVCb3gpOwpA
QCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgcHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cygp
CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gb3V0cHV0IGdlb21ldHJ5
IHdpdGhvdXQgbGF5b3V0IGNvbnRleHQuCiAgICAgICAgIGF1dG8mIHJlbmRlclZpZXcgPSAqZG9j
dW1lbnQtPnJlbmRlclZpZXcoKTsKICAgICAgICAgYXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2Nr
ID0gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dFRyZWUocmVuZGVyVmlldyk7Ci0gICAgICAgIGF1
dG8gbGF5b3V0U3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCpp
bml0aWFsQ29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IG1ha2VV
bmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oKmluaXRpYWxDb250YWluaW5nQmxvY2spOwogICAg
ICAgICBsYXlvdXRTdGF0ZS0+c2V0UXVpcmtzTW9kZShyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5M
aW1pdGVkUXVpcmtzTW9kZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6OkxpbWl0ZWQgOiAo
cmVuZGVyVmlldy5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJr
c01vZGU6OlllcyA6IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpObykpOwogICAgICAgICBsYXlv
dXRTdGF0ZS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIHNob3dMYXlvdXRUcmVlKCppbml0aWFs
Q29udGFpbmluZ0Jsb2NrLCBsYXlvdXRTdGF0ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5jcHAKaW5kZXggNTFkNzdlNGFmMWRiZGRmMDQ1YTkyYzFjOGFkM2I5OWVh
Y2ViOTdiNS4uYjQ5OGEyMjRiMTkwYzZjZTg0NGViOWRkN2ViOWI3YTEwNWQ3NmRjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRlcjo6Y3JlYXRlKERvY3VtZW50
TG9hZGVyJiBkb2N1bWVudExvYQogICAgIGlmIChmaWx0ZXJzLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50Rmls
dGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q29udGVudEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOwog
fQogCiBDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5lciYmIGNvbnRlbnRGaWx0
ZXJzLCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4IGQwZDU0Yjk3ZWFl
NzIwNDI2Zjk2MWM4ZGFlODk1ZTIwMzY5Y2VkY2MuLmM0Y2U1ZjU1MjE3MGIzY2ZjOGI4NDFiNTlh
NTEwZmQ3NWFhODNmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCB2YWxpZGF0ZVBy
ZWZsaWdodFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXMKICAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlY3VyaXR5T3JpZ2luLCBlcnJvckRlc2NyaXB0aW9uKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPihzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPENyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGVJdGVtPihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAgICAgaWYgKCFy
ZXN1bHQtPnBhcnNlKHJlc3BvbnNlKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09y
aWdpbk1ldGhvZChyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IGVycm9yRGVzY3JpcHRpb24pCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2lu
SGVhZGVycyhyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIGVycm9yRGVzY3JpcHRpb24pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAppbmRleCBkZTA5ZTcwMzk5Y2M3NDdlODg3MzY5NzgzNzI0ZTZkYWE5ZmM3ODhiLi4w
NDU1Y2FmYzU5ZmY3YjZlYTFmOWEyY2QzOTMxYTY5ZTlmNjk0NDU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBEb2N1bWVudExv
YWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTdWJzdGl0dXRlRAogICAgICwgbV9vcmlnaW5hbFN1YnN0aXR1dGVEYXRhV2FzVmFsaWQoc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVy
eVRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5
VGltZXJGaXJlZCkKICAgICAsIG1fZGF0YUxvYWRUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVy
OjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVI
b3N0KHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKSkKKyAgICAs
IG1fYXBwbGljYXRpb25DYWNoZUhvc3QobWFrZVVuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4o
KnRoaXMpKQogewogfQogCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB1aW50NjRfdCBEb2N1bWVudExv
YWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKQogICAgIGlmIChtYW5pZmVzdFVSTC5pc0Vt
cHR5KCkgfHwgIW1hbmlmZXN0VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKKyAgICBhdXRv
IG1hbmlmZXN0TG9hZGVyID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigq
dGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKICAgICBhdXRvKiByYXdNYW5pZmVz
dExvYWRlciA9IG1hbmlmZXN0TG9hZGVyLmdldCgpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG5l
eHRDYWxsYmFja0lEKys7CiAgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy5zZXQoV1RG
TW92ZShtYW5pZmVzdExvYWRlciksIGNhbGxiYWNrSUQpOwpAQCAtMTQyNyw3ICsxNDI3LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QXJjaGl2ZShSZWY8QXJjaGl2ZT4mJiBhcmNoaXZlKQog
dm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJiBhcmNo
aXZlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICBt
X2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24+KCk7CisgICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9
IG1ha2VVbmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKICAgICBtX2FyY2hpdmVS
ZXNvdXJjZUNvbGxlY3Rpb24tPmFkZEFsbFJlc291cmNlcyhhcmNoaXZlKTsKIH0KIApAQCAtMTQz
Niw3ICsxNDM2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJiBhcmNoaXZlKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQXJjaGl2ZVJlc291
cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKCFtX2FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKKyAgICAg
ICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkUmVz
b3VyY2UoV1RGTW92ZShyZXNvdXJjZSkpOwogfQogCkBAIC0xOTYzLDcgKzE5NjMsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCiAgICAgICAgIC8vIElmIHRoZSBsb2FkIHdhcyBhYm9ydGVkIGJ5IGNsZWFyaW5nIG1fcmVx
dWVzdCwgaXQncyBwb3NzaWJsZSB0aGUgQXBwbGljYXRpb25DYWNoZUhvc3QKICAgICAgICAgLy8g
aXMgbm93IGluIGEgc3RhdGUgd2hlcmUgc3RhcnRpbmcgYW4gZW1wdHkgbG9hZCB3aWxsIGJlIGlu
Y29uc2lzdGVudC4gUmVwbGFjZSBpdCB3aXRoCiAgICAgICAgIC8vIGEgbmV3IEFwcGxpY2F0aW9u
Q2FjaGVIb3N0LgotICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpOworICAgICAgICBtX2FwcGxpY2F0aW9u
Q2FjaGVIb3N0ID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpOwogICAg
ICAgICBtYXliZUxvYWRFbXB0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjEyMiw3
ICsyMTIyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gaWNvbkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRlcj4o
KnRoaXMsIGljb24udXJsKTsKKyAgICBhdXRvIGljb25Mb2FkZXIgPSBtYWtlVW5pcXVlPEljb25M
b2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAgICAgYXV0byogcmF3SWNvbkxvYWRlciA9IGljb25M
b2FkZXIuZ2V0KCk7CiAgICAgbV9pY29uTG9hZGVycy5zZXQoV1RGTW92ZShpY29uTG9hZGVyKSwg
bmV3Q2FsbGJhY2tJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5k
ZXggYzQ1MGMwODcwYzBkYjkwMDJiOTA0YzdiNmNiY2U0Yzk2OTAyYzZkYy4uYWNhMzQ1Mjk4NWI3
MzExOWJjYjIzYzQzYmEyM2VlZmI3NWE3YTM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29u
ZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxF
bXB0eVByb2dyZXNzVHJhY2tlckNsaWVudD4gZHVtbXlQcm9ncmVzc1RyYWNrZXJDbGllbnQ7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0gJmR1bW15UHJvZ3Jl
c3NUcmFja2VyQ2xpZW50LmdldCgpOwogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQ+KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQg
PSBtYWtlVW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CiAKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjcmVhdGUoeyB9LCB7IH0pOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNl
UHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IEVtcHR5RGF0YWJhc2VQcm92aWRlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBlMGY0NjE0OGYyZGZhYTg3ZjZiMjQyNjM3
ZDUwODkxODUyMGE2MGEyLi44M2JlYjI3MTdkMzM3YzM0MWMwMTVlY2Y0NmQ0ZjM3M2UwOGIxNTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI3MCwxMCArMjcwLDEw
IEBAIGNsYXNzIEZyYW1lTG9hZGVyOjpGcmFtZVByb2dyZXNzVHJhY2tlciB7CiBGcmFtZUxvYWRl
cjo6RnJhbWVMb2FkZXIoRnJhbWUmIGZyYW1lLCBGcmFtZUxvYWRlckNsaWVudCYgY2xpZW50KQog
ICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcG9s
aWN5Q2hlY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1lKSkKLSAgICAs
IG1faGlzdG9yeShzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCisg
ICAgLCBtX3BvbGljeUNoZWNrZXIobWFrZVVuaXF1ZTxQb2xpY3lDaGVja2VyPihmcmFtZSkpCisg
ICAgLCBtX2hpc3RvcnkobWFrZVVuaXF1ZTxIaXN0b3J5Q29udHJvbGxlcj4oZnJhbWUpKQogICAg
ICwgbV9ub3RpZmllcihmcmFtZSkKLSAgICAsIG1fc3ViZnJhbWVMb2FkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUpKQorICAgICwgbV9zdWJmcmFtZUxvYWRlcihtYWtl
VW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFtZSkpCiAgICAgLCBtX21peGVkQ29udGVudENoZWNr
ZXIoZnJhbWUpCiAgICAgLCBtX3N0YXRlKEZyYW1lU3RhdGVQcm92aXNpb25hbCkKICAgICAsIG1f
bG9hZFR5cGUoRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQpCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2YW5jZVRvKEZyYW1l
TG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpOwogCiAg
ICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0
KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZyYW1lUHJvZ3Jl
c3NUcmFja2VyPihtX2ZyYW1lKTsKKyAgICBtX3Byb2dyZXNzVHJhY2tlciA9IG1ha2VVbmlxdWU8
RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpp
bml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQpAQCAtMzQ2LDcgKzM0Niw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KGNvbnN0IFVSTCYp
CiAgICAgbV9uZWVkc0NsZWFyID0gdHJ1ZTsKIAogICAgIG1fbmV0d29ya2luZ0NvbnRleHQgPSBt
X2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwotICAgIG1fcHJvZ3Jlc3NUcmFja2Vy
ID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CisgICAg
bV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2Zy
YW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVy
cykKQEAgLTI2NzgsNyArMjY3OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRldGFjaENoaWxkcmVu
KCkKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2lu
Zy10aGUtd2ViLmh0bWwjbmF2aWdhdGUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF2aWdhdGlvbkRp
c2FibGVyPiBuYXZpZ2F0aW9uRGlzYWJsZXI7CiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUo
KSkKLSAgICAgICAgbmF2aWdhdGlvbkRpc2FibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0
aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsKKyAgICAgICAgbmF2aWdhdGlvbkRpc2FibGVyID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsKIAogICAgIC8vIEFueSBzdWJm
cmFtZSBpbnNlcnRlZCBieSB1bmxvYWQgZXZlbnQgaGFuZGxlcnMgZXhlY3V0ZWQgaW4gdGhlIGxv
b3AgYmVsb3cgd2lsbCBub3QgZ2V0IHVubG9hZGVkCiAgICAgLy8gYmVjYXVzZSB3ZSBjcmVhdGUg
YSBjb3B5IG9mIHRoZSBzdWJmcmFtZXMgbGlzdCBiZWZvcmUgbG9vcGluZy4gVGhlcmVmb3JlLCBp
dCB3b3VsZCBiZSB1bnNhZmUgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXgg
OGUzYTQ2YjUxMGE5OTgwYzJhZmI4MGEzNDQ4YTQ5ODllYWMxOWUxOS4uNWZmZjY3ZDk0MmViZTkx
ZTAzYTUyOTZlNmU5ZGEyNGRiM2I3Y2NiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKQEAgLTk2LDYgKzk2LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFtZUxv
YWRUeXBlKTsKIHVzaW5nIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpGdW5j
dGlvbjx2b2lkKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyKT47CiAKIGNsYXNz
IEZyYW1lTG9hZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShGcmFtZUxvYWRlcik7CiBwdWJsaWM6CiAgICAgRnJhbWVMb2FkZXIoRnJh
bWUmLCBGcmFtZUxvYWRlckNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3Bw
CmluZGV4IGNkZjY0OTUyNmZlM2QxZjMzMjhkNmUzNmMyMDEwODdjMzFmMTY1NWIuLjQwOGM1MzY0
MjllM2IwODc3OThlYjk3ZTc2ODY0Y2M5NDg2NjY3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlu
a0xvYWRlci5jcHAKQEAgLTE0MiwyMiArMTQyLDIyIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gY3JlYXRlTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVu
CiB7CiAgICAgc3dpdGNoIChyZXNvdXJjZS50eXBlKCkpIHsKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxMaW5rUHJlbG9hZEltYWdlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVk
SW1hZ2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2Fk
SW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRJbWFnZT4ocmVzb3Vy
Y2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQ6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihs
b2FkZXIsIGRvd25jYXN0PENhY2hlZFNjcmlwdD4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93
bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OlR5cGU6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExp
bmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NT
dHlsZVNoZWV0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJl
bG9hZFN0eWxlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkQ1NTU3R5bGVT
aGVldD4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpGb250UmVz
b3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRm9udFJl
c291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlKSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihs
b2FkZXIsIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlKSk7CiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlRleHRUcmFja1Jlc291cmNl
OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNv
dXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRUZXh0VHJhY2s+KHJlc291cmNlKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xp
ZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2UpKTsKICNlbmRp
ZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1lZGlhUmVzb3VyY2U6CiAgICAgICAg
IEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLm1lZGlhUHJl
bG9hZGluZ0VuYWJsZWQoKSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OlJhd1Jlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hl
ZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5r
UHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFJhd1Jlc291
cmNlPihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNv
dXJjZToKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJY29uOgogI2lmIEVOQUJMRShT
VkdfRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRp
c2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKaW5k
ZXggMDJjYzdkMTIwY2E0YmNmZjM1MjVjOGY3NDljYzQxODBmZTZkNDVlMi4uOGFlNGIzMWI4YjY5
Zjk4ZDAxYWRhNzg4OTlhOThiZDExZGQ0MjczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uRGlzYWJsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBOYXZpZ2F0aW9uRGlzYWJsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIE5hdmlnYXRpb25EaXNhYmxlcihGcmFtZSogZnJhbWUpCiAgICAg
ICAgIDogbV9mcmFtZShmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
U2NoZWR1bGVyLmNwcAppbmRleCA1NThjNzgwNDk1N2VjODgyODgxOGVmNTYxOWJmOTgzZDNmOTQw
YTU1Li4zYzJjMjUyYWE1MWI5NjkyOTVlY2YxNDgxMjU0YTMyNDBlYzQyYTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCkBAIC0zOTcsNyArMzk3
LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KERvY3VtZW50
JiBpbml0aWF0aW5nRG9jdW1lbnQsIGRvdWJsZQogICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjay9m
b3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCiAg
ICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpIHsKICAg
ICAgICAgYXV0byBsb2NrQmFja0ZvcndhcmRMaXN0ID0gZGVsYXkgPD0gMSA/IExvY2tCYWNrRm9y
d2FyZExpc3Q6OlllcyA6IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vOwotICAgICAgICBzY2hlZHVs
ZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQs
IGRlbGF5LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tI
aXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKKyAgICAgICAgc2NoZWR1bGUobWFr
ZVVuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3VtZW50LCBkZWxheSwgJm1f
ZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVz
LCBsb2NrQmFja0ZvcndhcmRMaXN0KSk7CiAgICAgfQogfQogCkBAIC00NDUsNyArNDQ1LDcgQEAg
dm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKERvY3VtZW50
JiBpbml0aWF0aW5nRG9jdW1lbnQsIFMKICAgICAvLyBUaGlzIG1heSBoYXBwZW4gd2hlbiBhIGZy
YW1lIGNoYW5nZXMgdGhlIGxvY2F0aW9uIG9mIGFub3RoZXIgZnJhbWUuCiAgICAgYm9vbCBkdXJp
bmdMb2FkID0gIWxvYWRlci5zdGF0ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVu
dExvYWQoKTsKIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkTG9jYXRp
b25DaGFuZ2U+KGluaXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1cmwsIHJlZmVy
cmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxl
ZExvY2F0aW9uQ2hhbmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZzZWN1cml0eU9yaWdpbiwgdXJs
LCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlz
c2lvbikKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVk
dWxlRm9ybVN1Ym1pc3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3NpbwogICAgICAg
ICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzOwogICAgIH0K
ICAgICAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNz
aW9uPihXVEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2Fk
KSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lvbj4oV1RG
TW92ZShzdWJtaXNzaW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOwogfQog
CiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChEb2N1bWVudCYgaW5p
dGlhdGluZ0RvY3VtZW50KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQpCiAgICAg
aWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNjaGVkdWxlKHN0ZDo6
bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGluZ0RvY3VtZW50LCAmbV9mcmFt
ZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1fZnJhbWUubG9hZGVyKCkub3V0
Z29pbmdSZWZlcnJlcigpKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRSZWZy
ZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKIH0KIAog
dm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBz
dGVwcykKQEAgLTQ5OCwxMyArNDk4LDEzIEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCiAgICAgfQogCiAgICAgLy8gSW4gYWxs
IG90aGVyIGNhc2VzLCBzY2hlZHVsZSB0aGUgaGlzdG9yeSB0cmF2ZXJzYWwgdG8gb2NjdXIgYXN5
bmNocm9ub3VzbHkuCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRIaXN0
b3J5TmF2aWdhdGlvbj4oc3RlcHMpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxl
ZEhpc3RvcnlOYXZpZ2F0aW9uPihzdGVwcykpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVs
ZXI6OnNjaGVkdWxlUGFnZUJsb2NrKERvY3VtZW50JiBvcmlnaW5Eb2N1bWVudCkKIHsKICAgICBp
ZiAoc2hvdWxkU2NoZWR1bGVOYXZpZ2F0aW9uKCkpCi0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFr
ZV91bmlxdWU8U2NoZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkpOworICAgICAgICBz
Y2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3JpZ2luRG9jdW1lbnQpKTsK
IH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjp0aW1lckZpcmVkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCmluZGV4IGEyZGRhY2UyOGYwN2MzOTFm
ZTI0ZTE5MThkMjU0YTUwMDJmYWI0NzYuLjk3YzIzYjE1MDkyYmYzOTNiMzFkMjBjOGYzNGQyNTc3
MjYzMWNjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
aApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGVudW0gY2xhc3MgTmV3
TG9hZEluUHJvZ3Jlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIAogY2xhc3MgTmF2aWdhdGlv
blNjaGVkdWxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgTmF2aWdhdGlvblNjaGVkdWxlcihGcmFtZSYpOwogICAgIH5OYXZpZ2F0aW9uU2No
ZWR1bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCmluZGV4
IGUxN2E5ZGM3MmRlMDM3Yzk2MzRiYzFjYzkzYzJjMWE3N2E4NmJmYTMuLjI4MTdhNzY2NjQ1N2Iy
Mzk3M2E2OGZjZjdiYzAxODBjMTJiZjVjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6
OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2UKIAogICAgIGF1dG8mIGl0ZW0gPSBtX3Byb2dyZXNzSXRlbXMuYWRkKGlkZW50aWZpZXIsIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgaXRlbSA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0ZWRMZW5ndGgpOworICAgICAg
ICBpdGVtID0gbWFrZVVuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3Vy
Y2VEZWNvZGVyLmNwcAppbmRleCBlYTVkYmZiYWFiMjBiZmQ0M2RlYWNmMWU3NzYxMWMzNDMzYWJh
YjgzLi44MjQ2YmIwNzA2Y2QwYzA3MWY4OTk2Mjg5ODZhNWJhNTFjNDhiNjM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBAIC01MzUsNyArNTM1
LDcgQEAgYm9vbCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjaGVja0ZvckhlYWRDaGFyc2V0KGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4sIGJvb2wKICAgICBpZiAobV9jb250ZW50VHlwZSA9PSBY
TUwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9jaGFyc2V0UGFyc2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7CisgICAgbV9jaGFyc2V0UGFyc2Vy
ID0gbWFrZVVuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7CiAgICAgcmV0dXJuIGNoZWNr
Rm9yTWV0YUNoYXJzZXQoZGF0YSwgbGVuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcAppbmRleCBjYTllNmM0MzQzZDc0MDEwNTUzYTllMTBmYTY1NjNlZTUy
MzkxYmJlLi5mYTkyNmVhMDYyYWRmZjIwNTcwYzhhMzY5MTI0NjcyYjllZjU2NmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fY3VlUGFyc2VyKQotICAgICAg
ICBtX2N1ZVBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2Fz
dDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
KyAgICAgICAgbV9jdWVQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nh
c3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CiAKICAgICB3aGlsZSAobV9wYXJzZU9mZnNldCA8IGJ1ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAg
IGF1dG8gZGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEobV9wYXJzZU9mZnNldCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTEy
NjNlMmYwNDU3NGI0ZjBlZTczYzA0ZThiNjJmNWM4MDcyYTc1OC4uNzc1MzJmODYxMzRlMDQzYWQz
N2QzZjU5OTk4YTZmNTdhNDI0MTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTE1LDExICsxMTUsMTEgQEAgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRh
YmxlTG9hZGVyQ2xpZW4KICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KTsKIAogICAg
IGF1dG8gc2VjdXJpdHlPcmlnaW5Db3B5ID0gc2VjdXJpdHlPcmlnaW4tPmlzb2xhdGVkQ29weSgp
OwotICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudFNlY3VyaXR5UG9saWN5PihnbG9iYWxTY29wZS51cmwoKS5pc29sYXRlZENvcHkoKSk7
CisgICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gbWFrZVVuaXF1ZTxDb250ZW50
U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBj
b250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5U3RhdGVGcm9tKGNvbnRlbnRTZWN1cml0eVBv
bGljeSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVVwZ3JhZGVJbnNlY3Vy
ZVJlcXVlc3RTdGF0ZUZyb20oKmNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKLSAgICBhdXRvIG9w
dGlvbnNDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJUYXNrT3B0aW9ucz4ob3B0aW9ucywg
cmVxdWVzdC5odHRwUmVmZXJyZXIoKS5pc051bGwoKSA/IG91dGdvaW5nUmVmZXJyZXIgOiByZXF1
ZXN0Lmh0dHBSZWZlcnJlcigpLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luQ29weSkpOworICAgIGF1
dG8gb3B0aW9uc0NvcHkgPSBtYWtlVW5pcXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRpb25zLCBy
ZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJlcXVl
c3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7CiAKICAgICAv
LyBBbGwgbG9hZHMgc3RhcnQgb3V0IGFzIERvY3VtZW50LiBJbnNpZGUgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlciB3ZSB1cGdyYWRlIHRoaXMgdG8gYSBXb3JrZXIgbG9hZC4KICAgICBBU1NFUlQob3B0
aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9PSBJbml0aWF0b3JDb250ZXh0OjpE
b2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGY5N2ViMDA0MjViZDI5YjNjYjZiY2IzNDVmYmZkNjUy
MjQwOGY4Y2UuLmJiYTkxMDQxOTE1NGVjZjQzYzEyMmUyZDkwY2Y4NjQ1NTk3YTk5ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShOb2RlJiBub2RlLCBXVEY6OkZ1bmN0aW9uPGJvb2wKICAgICAv
LyBidXQgd2UgY2FuIGFwcHJveGltYXRlIHRoYXQgYnkgY2hlY2tpbmcgaWYgc2NyaXB0aW5nIGlz
IGVuYWJsZWQgcmlnaHQgbm93LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UXVhbGlmaWVk
TmFtZT4+IHRhZ05hbWVzVG9GaWx0ZXI7CiAgICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUt
PnBhZ2UoKS0+c2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkgewotICAgICAgICB0YWdOYW1l
c1RvRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+KCk7Cisg
ICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBtYWtlVW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1l
Pj4oKTsKICAgICAgICAgdGFnTmFtZXNUb0ZpbHRlci0+YXBwZW5kKEhUTUxOYW1lczo6bm9zY3Jp
cHRUYWcpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKaW5kZXggZjMxMjkwNzI4ZjY5OTBkODAwOGJhMjY0NDAyMWNiMWQ4ODViOTQ1Ny4uNzBm
NTg2ODQ4ZWFlZTI5MTI2YzRiYWU5MTA2YzE1ZTI5NmE5MDc0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKICAgICAgICAgbV9pbWFnZU9ic2VydmVyLT5jYWNoZWRJbWFnZXMoKS5hZGQodGhpcyk7CiAK
ICAgICBpZiAobV9pbWFnZSAmJiBpczxTVkdJbWFnZT4oKm1faW1hZ2UpKQotICAgICAgICBtX3N2
Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxT
VkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1
ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CiB9CiAKIHZv
aWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50
KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjcmVhdGVJbWFn
ZSgpCiAKICAgICBpZiAobV9pbWFnZSkgewogICAgICAgICBpZiAoaXM8U1ZHSW1hZ2U+KCptX2lt
YWdlKSkKLSAgICAgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
SW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAgICAgICAgICAg
bV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZH
SW1hZ2U+KCptX2ltYWdlKSk7CiAKICAgICAgICAgLy8gU2VuZCBxdWV1ZWQgY29udGFpbmVyIHNp
emUgcmVxdWVzdHMuCiAgICAgICAgIGlmIChtX2ltYWdlLT51c2VzQ29udGFpbmVyU2l6ZSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cAppbmRleCBiZTYxODNhYmZhNTlkNWM4ZTE2MmZlYzFkNjU1MjQ1MjNhZGUyNzhjLi5mOWE3NWYz
NTQ1Mjc2OTAyYTllNGE1YzM1YjZhYzZiMWYxNTBjMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTIwOCw3ICsyMDgsNyBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cgogICAgICAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJl
Y3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIGVsc2UgewogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKFJl
ZGlyZWN0UGFpcihyZXF1ZXN0LCByZXNwb25zZSkpOwotICAgICAgICBpdGVyYXRlQ2xpZW50cyhD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4obV9jbGll
bnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVzcG9uc2U+KHJlc3BvbnNl
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7Cisg
ICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIG1ha2VVbmlxdWU8UmVzb3VyY2VS
ZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2Vp
dmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGU0MzBlNDQ3YWM0OTQ2MzZjOTg0ZTc0ZDQwYjkxZTY1
Y2RlYmI1MGIuLjA1NjdkMWQ1ZGU4YzZmMTNlMTg2ODQ0YWVkNzU1NzVjZjE3ZTE3MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNTQ2
LDcgKzU0Niw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJl
c291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIC8vIFRoZXJlZm9yZSwgcmF0aGVyIHRoYW4g
aW1tZWRpYXRlbHkgc2VuZGluZyBjYWxsYmFja3Mgb24gYSBjYWNoZSBoaXQgbGlrZSBvdGhlciBD
YWNoZWRSZXNvdXJjZXMsCiAgICAgICAgIC8vIHdlIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5k
IGVuc3VyZSB3ZSBuZXZlciBmaW5pc2ggc3luY2hyb25vdXNseS4KICAgICAgICAgQVNTRVJUKCFt
X2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmNvbnRhaW5zKCZjbGllbnQpKTsKLSAgICAgICAgbV9j
bGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoJmNsaWVudCwgc3RkOjptYWtlX3VuaXF1ZTxDYWxs
YmFjaz4oKnRoaXMsIGNsaWVudCkpOworICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNr
LmFkZCgmY2xpZW50LCBtYWtlVW5pcXVlPENhbGxiYWNrPigqdGhpcywgY2xpZW50KSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg0M2E5ZDFmOWQ2Yzg1ZjEw
MDBhMmM0MGYxOTY0YjQ3YTJlYjFjN2EuLmIzNGI4ZmQzNWMxMDc3YTU0NTJhYmIzNDMyMzYxYjRj
YzNkMTFjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1CiAgICAgLy8gRW50cnkgcG9pbnQgdG8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5v
cmcvI21haW4tZmV0Y2guCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gb3Jp
Z2luYWxSZXF1ZXN0OwogICAgIGlmIChDYWNoZWRSZXNvdXJjZTo6c2hvdWxkVXNlUGluZ0xvYWQo
dHlwZSkgfHwgcmVxdWVzdC5vcHRpb25zKCkuZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpIHsKLSAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkp
OworICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4o
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdC0+Y2xl
YXJIVFRQUmVmZXJyZXIoKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBPcmln
aW4oKTsKICAgICB9CkBAIC0xMzkxLDcgKzEzOTEsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJl
bAogICAgICAgICByZXNvdXJjZVZhbHVlLT5pbmNyZWFzZVByZWxvYWRDb3VudCgpOwogCiAgICAg
ICAgIGlmICghbV9wcmVsb2FkcykKLSAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICBtX3By
ZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAg
ICAgICBtX3ByZWxvYWRzLT5hZGQocmVzb3VyY2VWYWx1ZS5nZXQoKSk7CiAgICAgfQogICAgIHJl
dHVybiByZXNvdXJjZTsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmNsZWFyUHJlbG9hZHMoQ2xlYXJQcmVsb2Fkc01vZGUgbW9kZSkKICAgICAgICAgQVNT
RVJUKHJlc291cmNlKTsKICAgICAgICAgaWYgKG1vZGUgPT0gQ2xlYXJQcmVsb2Fkc01vZGU6OkNs
ZWFyU3BlY3VsYXRpdmVQcmVsb2FkcyAmJiByZXNvdXJjZS0+aXNMaW5rUHJlbG9hZCgpKSB7CiAg
ICAgICAgICAgICBpZiAoIXJlbWFpbmluZ0xpbmtQcmVsb2FkcykKLSAgICAgICAgICAgICAgICBy
ZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hl
ZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzID0g
bWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICAgICAg
cmVtYWluaW5nTGlua1ByZWxvYWRzLT5hZGQocmVzb3VyY2UpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKaW5kZXggNzBjYjFhZmE0Y2YxZDNhNmU2NDJh
OGFlOWRiODQ0OGY4NGQxNGJkNi4uMTQ0MjU3NGMzZGI4ZDVlZmFkM2RjNzUyMzc5YWZjZTAyOTdk
MGVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwogCiBjbGFzcyBDYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA6IHB1YmxpYyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGQzYjgwNTE0MjNjM2ZjNTI0YmQ4YjZmNTVmMzVh
NmFjMjIzMGIyMDIuLjNkZWFkNDZjMWQ0ZDc4Y2Y3Y2RmMDNhZmZjYmVmMzkyNzgyNjNjNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtODYsNyAr
ODYsNyBAQCBhdXRvIE1lbW9yeUNhY2hlOjplbnN1cmVTZXNzaW9uUmVzb3VyY2VNYXAoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiBDYWNoZWRSZQogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNW
YWxpZCgpKTsKICAgICBhdXRvJiBtYXAgPSBtX3Nlc3Npb25SZXNvdXJjZXMuYWRkKHNlc3Npb25J
RCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghbWFwKQotICAgICAgICBtYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlTWFwPigpOworICAgICAgICBtYXAgPSBt
YWtlVW5pcXVlPENhY2hlZFJlc291cmNlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQogCkBA
IC0yMTYsNyArMjE2LDcgQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2
ZUltYWdlUHRyJiYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgIHJlbW92ZUltYWdl
RnJvbUNhY2hlKHVybCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAvLyBSZW1vdmUgY2FjaGUg
ZW50cnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCiAKICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0
bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7Ci0gICAgYXV0byBjYWNo
ZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2Uu
cHRyKCksIHNlc3Npb25JRCwgY29va2llSmFyLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7Cisg
ICAgYXV0byBjYWNoZWRJbWFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFw
SW1hZ2UucHRyKCksIHNlc3Npb25JRCwgY29va2llSmFyLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlv
bik7CiAKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KGR1bW15Q2FjaGVkSW1hZ2VDbGllbnQo
KSk7CiAgICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNvZGVk
U2l6ZSgpKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCBhdXRvIE1lbW9yeUNhY2hlOjpscnVMaXN0Rm9y
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkgLT4gTFJVTGlzdCYKIAogICAgIG1fYWxsUmVzb3Vy
Y2VzLnJlc2VydmVDYXBhY2l0eShxdWV1ZUluZGV4ICsgMSk7CiAgICAgd2hpbGUgKG1fYWxsUmVz
b3VyY2VzLnNpemUoKSA8PSBxdWV1ZUluZGV4KQotICAgICAgICBtX2FsbFJlc291cmNlcy51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxMUlVMaXN0PigpKTsKKyAgICAgICAgbV9hbGxS
ZXNvdXJjZXMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8TFJVTGlzdD4oKSk7CiAgICAgcmV0
dXJuICptX2FsbFJlc291cmNlc1txdWV1ZUluZGV4XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL1ByZXZpZXdMb2FkZXIuaAppbmRleCA2MThlOTQyOTUwMTdkYzNiODMwMzY1YzExNjc2
MTUzOGIxZGI2MjM4Li4xNTAzZDc4ZTNhZjU5OTQ5NTRiMzNjMmE4MDg0ZjRmZWE2MzAwNzA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaApAQCAtMzksNiArMzks
NyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBQcmV2aWV3TG9hZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQcmV2aWV3TG9hZGVyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvUHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xv
YWRlci5tbQppbmRleCBmNmI4MjIxNzkxNmNhZDk1YmZlOTYwYmIzZTM3ODRhMjcwYTliYTY3Li5j
NWNhNWMyNWYxMWI0ZDhhOWNhOTNlZmM4ODkwOTkwN2Y2Yjc2NjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCkBAIC04Niw3ICs4Niw3IEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFJlc291cmNlTG9hZGVyOihSZXNvdXJjZUxvYWRlciYpcmVzb3VyY2VM
b2FkZXIgcmVzb3VyY2VSCiAKICAgICBfcmVzb3VyY2VMb2FkZXIgPSBtYWtlV2Vha1B0cihyZXNv
dXJjZUxvYWRlcik7CiAgICAgX3Jlc3BvbnNlID0gcmVzb3VyY2VSZXNwb25zZTsKLSAgICBfY29u
dmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9u
c2UpOworICAgIF9jb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYs
IF9yZXNwb25zZSk7CiAgICAgX2J1ZmZlcmVkRGF0YUFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmcgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGlj
eUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCk7CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCAt
ICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdp
dGhFcnJvcjooTlNFcnJvciAqKWVycgogICAgIH0KIAogICAgIF9jbGllbnQtPmRpZFJlcXVlc3RQ
YXNzd29yZChbc2VsZiwgcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoY29uc3QgU3Ry
aW5nJiBwYXNzd29yZCkgewotICAgICAgICBfY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UsIHBhc3N3b3JkKTsKKyAgICAgICAgX2Nv
bnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBw
YXNzd29yZCk7CiAgICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGFwcGVu
ZERhdGFBcnJheTpfYnVmZmVyZWREYXRhQXJyYXkuZ2V0KCldOwogICAgICAgICBbX2NvbnZlcnRl
ci0+cGxhdGZvcm1Db252ZXJ0ZXIoKSBmaW5pc2hlZEFwcGVuZGluZ0RhdGFdOwogICAgIH0pOwpA
QCAtMjY4LDcgKzI2OCw3IEBAIFByZXZpZXdMb2FkZXI6On5QcmV2aWV3TG9hZGVyKCkKIHN0ZDo6
dW5pcXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBQcmV2aWV3TG9hZGVyOjpjcmVhdGUoUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
QVNTRVJUKFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUocmVzcG9uc2UubWltZVR5
cGUoKSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdMb2FkZXI+KGxvYWRl
ciwgcmVzcG9uc2UpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFByZXZpZXdMb2FkZXI+KGxvYWRl
ciwgcmVzcG9uc2UpOwogfQogCiBib29sIFByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBjNDc5Y2ExZjljYjA3ZDRhYzdiNGI5ZmIyMjg1MWYw
Yzk5NGIxNzE0Li40Y2NkYWIwNGI3YjNmNTUzNGNlY2MyYTE5ZWMwYTRiY2I3YWIxN2VhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xODAs
NyArMTgwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRy
b2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4dE1lbnUoRXZlbnQKICAgICB9CiAjZW5kaWYKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51PigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPENvbnRleHRNZW51PigpOwogfQogCiB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6
c2hvd0NvbnRleHRNZW51KEV2ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1Bh
Z2VPdmVybGF5cy5jcHAKaW5kZXggZjYzZGFhN2Y2MzQ3MjU1ODg3M2RiM2I1ODNiYzI1MTJhMTc3
NTI3YS4uY2RjNzRmNmRlMDllOTNkZTlhYWI5MjM1NmVmMmZiZjQ0ZGQyZDMwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY2xh
c3MgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7
CiAKIGJvb2wgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCiB7Ci0gICAg
YXV0byByZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lvbj4oKTsKKyAgICBhdXRvIHJlZ2lv
biA9IG1ha2VVbmlxdWU8UmVnaW9uPigpOwogICAgIAogICAgIGZvciAoY29uc3QgRnJhbWUqIGZy
YW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5k
b2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDQ4YzA3MzQ3
NzBlYjExMGMxYzVkODQ1M2RkMDg3OTkyZTU2NDlhMWUuLmQyMGI5OGM0MTVlZWM4Mjc2Zjg5MDBm
MjRjNjdhOTdmMTAxZDBhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAg
LTM4NSw3ICszODUsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSYgZnJhbWUp
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9wZW5kaW5nTW9tZW50dW1XaGVlbEV2ZW50c1Rp
bWVyKCp0aGlzLCAmRXZlbnRIYW5kbGVyOjpjbGVhckxhdGNoZWRTdGF0ZSkKICNlbmRpZgotICAg
ICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9zY3JvbGxDb250
cm9sbGVyPigpKQorICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcihtYWtlVW5pcXVlPEF1dG9z
Y3JvbGxDb250cm9sbGVyPigpKQogI2lmICFFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICAs
IG1fZmFrZU1vdXNlTW92ZUV2ZW50VGltZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmZha2VNb3Vz
ZU1vdmVFdmVudFRpbWVyRmlyZWQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCAyMzM3Mjk0MmIzNzYzZDkyOTNkMjY1YjM1YWNjMTUyNWUzNGNjMDBmLi5hNWU1ZWRlMGI0
Yjc0N2U0Nzk0ZGM3OTQwNmFlZmNjYmIzODVkZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBSZW5kZXJCb3gqIEZyYW1lVmlldzo6ZW1iZWRkZWRD
b250ZW50Qm94KCkgY29uc3QKIHZvaWQgRnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBk
YXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKIHsKICAgICBpZiAoIW1f
ZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUpCi0gICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRh
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+
KCk7CisgICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBtYWtlVW5pcXVlPExpc3RI
YXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CiAKICAgICBIVE1MRnJhbWVPd25lckVs
ZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwogICAg
IGlmIChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxlbWVu
dD4oZWxlbWVudCkpIHsKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRT
bG93UmVwYWludE9iamVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICBib29sIGhhZFNs
b3dSZXBhaW50T2JqZWN0cyA9IGhhc1Nsb3dSZXBhaW50T2JqZWN0cygpOwogCiAgICAgaWYgKCFt
X3Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyRWxlbWVudCo+PigpOworICAgICAgICBt
X3Nsb3dSZXBhaW50T2JqZWN0cyA9IG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJFbGVt
ZW50Kj4+KCk7CiAKICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cy0+YWRkKCZyZW5kZXJlcik7CiAg
ICAgaWYgKGhhZFNsb3dSZXBhaW50T2JqZWN0cykKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWludE9iamVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJl
cikKIHZvaWQgRnJhbWVWaWV3OjphZGRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIG9iamVjdCkKIHsKICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMpCi0gICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+KCk7CisgICAgICAgIG1fdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBtYWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RTZXQ+KCk7CiAKICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmNv
bnRhaW5zKG9iamVjdCkpIHsKICAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+
YWRkKG9iamVjdCk7CkBAIC00ODY2LDcgKzQ4NjYsNyBAQCBTdHJpbmcgRnJhbWVWaWV3Ojp0cmFj
a2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3QKIGJvb2wgRnJhbWVWaWV3OjphZGRTY3JvbGxh
YmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgaWYgKCFtX3Nj
cm9sbGFibGVBcmVhcykKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOworICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IG1h
a2VVbmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CiAgICAgCiAgICAgaWYgKG1fc2Nyb2xsYWJs
ZUFyZWFzLT5hZGQoc2Nyb2xsYWJsZUFyZWEpLmlzTmV3RW50cnkpIHsKICAgICAgICAgc2Nyb2xs
YWJsZUFyZWFTZXRDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlld0xheW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdM
YXlvdXRDb250ZXh0LmNwcAppbmRleCA3MzA5OGYxZmExZjEwNzFlNjFmY2QzYWE2NTM1MzMwZDNl
ODliZjU5Li5lODU4YzkyY2JmOGMzMWEzMjFiZjM4MDA5N2FiYTU1ZjE1NzAwMGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKQEAgLTU5Niwx
NCArNTk2LDE0IEBAIHZvaWQgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRl
KFJlbmRlckVsZW1lbnQmIHJvb3QpCiAgICAgQVNTRVJUKCFtX3BhaW50T2Zmc2V0Q2FjaGVEaXNh
YmxlQ291bnQpOwogICAgIEFTU0VSVCghbGF5b3V0U3RhdGUoKSk7CiAKLSAgICBtX2xheW91dFN0
YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3Qp
KTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0
U3RhdGU+KHJvb3QpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5
b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQoUmVuZGVyQmxvY2tGbG93JiBsYXlvdXRSb290
KQogewogICAgIGlmIChsYXlvdXRTdGF0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
bV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0
YXRlPihsYXlvdXRSb290LCBSZW5kZXJMYXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOwor
ICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0
ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0U3RhdGU6OklzUGFnaW5hdGVkOjpZZXMpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIEZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25z
dCBMYXlvdXRTaQogICAgIGF1dG8qIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsK
ICAgICBpZiAoIWxheW91dFN0YXRlIHx8ICFuZWVkc0Z1bGxSZXBhaW50KCkgfHwgbGF5b3V0U3Rh
dGUtPmlzUGFnaW5hdGVkKCkgfHwgcmVuZGVyZXIuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKQog
ICAgICAgICB8fCBsYXlvdXRTdGF0ZS0+bGluZUdyaWQoKSB8fCAocmVuZGVyZXIuc3R5bGUoKS5s
aW5lR3JpZCgpICE9IFJlbmRlclN0eWxlOjppbml0aWFsTGluZUdyaWQoKSAmJiByZW5kZXJlci5p
c1JlbmRlckJsb2NrRmxvdygpKSkgewotICAgICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFjaywg
cmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsKKyAgICAg
ICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRl
PihtX2xheW91dFN0YXRlU3RhY2ssIHJlbmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VI
ZWlnaHRDaGFuZ2VkKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCA4YzNjNTJhMDcz
NTIyNzkwY2QwYzRhNjBkYzA1ZTYxNDEyYzE5YWU5Li41MjI3ZTQyYWMwOTZjZTY5MjVkN2VjNmEx
OGU1MTkyNWQyZTAwNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAg
LTE0OSw3ICsxNDksNyBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyJiBOYXZpZ2F0b3JCYXNlOjpz
ZXJ2aWNlV29ya2VyKCkKIHsKICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29ya2VyRW5hYmxlZCgpKTsKICAgICBpZiAoIW1fc2Vydmlj
ZVdvcmtlckNvbnRhaW5lcikKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksICp0aGlzKTsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gbWFrZVVu
aXF1ZTxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0
aGlzKTsKICAgICByZXR1cm4gKm1fc2VydmljZVdvcmtlckNvbnRhaW5lcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggZWRhN2M1ZmE1ZDY0NzliYTcxMDkwMjBiNTI4MzJjZTI2MWJjZDdlOS4u
MjlhMmFmNzRiY2FkZDZiMzBjNmFmZjYwZWM0ZTMxZDBiNDcyYmY1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCkBAIC0yMTEsMjYgKzIxMSwyNiBAQCBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxBY3Rp
dml0eVN0YXRlOjpGbGFnPiBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKQogfQogCiBQYWdlOjpQ
YWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2Nocm9t
ZShzdGQ6Om1ha2VfdW5pcXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJv
bWVDbGllbnQpKQotICAgICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
RHJhZ0NhcmV0Q29udHJvbGxlcj4oKSkKKyAgICA6IG1fY2hyb21lKG1ha2VVbmlxdWU8Q2hyb21l
PigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCisgICAgLCBtX2RyYWdD
YXJldENvbnRyb2xsZXIobWFrZVVuaXF1ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCi0gICAgLCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkp
CisgICAgLCBtX2RyYWdDb250cm9sbGVyKG1ha2VVbmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlz
LCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZm9jdXND
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUlu
aXRpYWxBY3Rpdml0eVN0YXRlKCkpKQorICAgICwgbV9mb2N1c0NvbnRyb2xsZXIobWFrZVVuaXF1
ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmln
dXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkpCisgICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxl
cihtYWtlVW5pcXVlPENvbnRleHRNZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJh
dGlvbi5jb250ZXh0TWVudUNsaWVudCkpCiAjZW5kaWYKLSAgICAsIG1fdXNlcklucHV0QnJpZGdl
KHN0ZDo6bWFrZV91bmlxdWU8VXNlcklucHV0QnJpZGdlPigqdGhpcykpCi0gICAgLCBtX2luc3Bl
Y3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhp
cywgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAsIG1fdXNlcklucHV0
QnJpZGdlKG1ha2VVbmlxdWU8VXNlcklucHV0QnJpZGdlPigqdGhpcykpCisgICAgLCBtX2luc3Bl
Y3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFn
ZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50KSkKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVO
VFMpCi0gICAgLCBtX3BvaW50ZXJDYXB0dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBv
aW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wb2ludGVyQ2FwdHVyZUNv
bnRyb2xsZXIobWFrZVVuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKICNl
bmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgLCBtX3BvaW50ZXJMb2NrQ29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQorICAg
ICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xs
ZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRo
aXMpKQotICAgICwgbV9wcm9ncmVzcyhzdGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzVHJhY2tlcj4o
KnBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCi0gICAgLCBtX2JhY2tG
b3J3YXJkQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4o
KnRoaXMsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKKyAg
ICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmlndXJh
dGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQpKQorICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShGcmFt
ZTo6Y3JlYXRlKHRoaXMsIG51bGxwdHIsIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZv
ck1haW5GcmFtZSkpCiAgICAgLCBtX2VkaXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLmVkaXRvckNsaWVudCkpCiAgICAgLCBtX3BsdWdJbkNsaWVudChwYWdlQ29uZmlndXJhdGlv
bi5wbHVnSW5DbGllbnQpCkBAIC0yNTAsOSArMjUwLDkgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmln
dXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9kb21UaW1lckFsaWdubWVudElu
dGVydmFsSW5jcmVhc2VUaW1lcigqdGhpcywgJlBhZ2U6OmRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2
YWxJbmNyZWFzZVRpbWVyRmlyZWQpCiAgICAgLCBtX2FjdGl2aXR5U3RhdGUocGFnZUluaXRpYWxB
Y3Rpdml0eVN0YXRlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmln
dXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQpCi0gICAgLCBtX2NvbnNvbGVDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQorICAgICwgbV9jb25zb2xl
Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnNvbGVDbGllbnQ+KCp0aGlzKSkKICNpZiBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKLSAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2Fi
bGUobWFrZVVuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3Nv
Y2tldFByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIpKQog
ICAgICwgbV9jb29raWVKYXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb29raWVKYXIpKQpA
QCAtMjY4LDE2ICsyNjgsMTYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VD
b25maWd1cmF0aW9uKQogICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVy
KCp0aGlzLCAmUGFnZTo6cGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGVUaW1lckZpcmVkKQog
I2VuZGlmCiAgICAgLCBtX2lzVXRpbGl0eVBhZ2UoaXNVdGlsaXR5UGFnZUNocm9tZUNsaWVudChj
aHJvbWUoKS5jbGllbnQoKSkpCi0gICAgLCBtX3BlcmZvcm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQ
YWdlKCkgPyBudWxscHRyIDogc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0
aGlzKSkKLSAgICAsIG1fbG93UG93ZXJNb2RlTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxMb3dQ
b3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7IGhh
bmRsZUxvd01vZGVQb3dlckNoYW5nZShpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpOyB9KSkKLSAgICAs
IG1fcGVyZm9ybWFuY2VMb2dnaW5nKHN0ZDo6bWFrZV91bmlxdWU8UGVyZm9ybWFuY2VMb2dnaW5n
PigqdGhpcykpCisgICAgLCBtX3BlcmZvcm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBu
dWxscHRyIDogbWFrZVVuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKKyAgICAsIG1f
bG93UG93ZXJNb2RlTm90aWZpZXIobWFrZVVuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4oW3Ro
aXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNoYW5n
ZShpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpOyB9KSkKKyAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5n
KG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VMb2dnaW5nPigqdGhpcykpCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAoRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikpCi0gICAgLCBtX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjptYWtl
X3VuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3NlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
PigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyKFdo
ZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BhZ2VPdmVybGF5Q29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQorICAg
ICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xs
ZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgICwgbV9wYXltZW50Q29vcmRp
bmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCpwYWdlQ29uZmlndXJh
dGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQpKQorICAgICwgbV9wYXltZW50Q29vcmRpbmF0
b3IobWFrZVVuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQpKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAg
ICAsIG1fYXV0aGVudGljYXRvckNvb3JkaW5hdG9yKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudCkpKQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgUGFnZTo6aW5pdEdyb3Vw
KCkKIHsKICAgICBBU1NFUlQoIW1fc2luZ2xlUGFnZUdyb3VwKTsKICAgICBBU1NFUlQoIW1fZ3Jv
dXApOwotICAgIG1fc2luZ2xlUGFnZUdyb3VwID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlR3JvdXA+
KCp0aGlzKTsKKyAgICBtX3NpbmdsZVBhZ2VHcm91cCA9IG1ha2VVbmlxdWU8UGFnZUdyb3VwPigq
dGhpcyk7CiAgICAgbV9ncm91cCA9IG1fc2luZ2xlUGFnZUdyb3VwLmdldCgpOwogfQogCkBAIC0y
NjU0LDcgKzI2NTQsNyBAQCB2b2lkIFBhZ2U6OnNldFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJs
ZShib29sIHZpc2libGUpCiAgICAgfQogCiAgICAgaWYgKCFtX3Jlc291cmNlVXNhZ2VPdmVybGF5
ICYmIG1fc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkpCi0gICAgICAg
IG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VP
dmVybGF5PigqdGhpcyk7CisgICAgICAgIG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBtYWtlVW5p
cXVlPFJlc291cmNlVXNhZ2VPdmVybGF5PigqdGhpcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCBkMDMyZmNmNzBmODZhNjNhYWRk
MTFmMjI3ZmE5NmRkMDYzYzFlYTYxLi42M2Y2NTZmMWE1YWI4ZTI2ZmI5NTVlNjM0ZTQ1YTlhOGEx
MmZkZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAt
MTYwLDkgKzE2MCw5IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAKICAgICBpZiAoY2FsbFN0
YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwg
Y2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAg
bWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBN
ZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9u
TnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3Nh
Z2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRM
aW5lTnVtYmVyLCBzdWdnZXN0ZWRDb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmll
cik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0
ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUs
IHJlcXVlc3RJZGVudGlmaWVyKTsKIAogICAgIGFkZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7
CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6bWVzc2FnZVdp
dGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGwKICAgICBTdHJp
bmcgbWVzc2FnZVRleHQ7CiAgICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJz
dEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwogCi0gICAgYXV0byBtZXNzYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCks
IGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VU
ZXh0LCBhcmd1bWVudHMuY29weVJlZigpLCBleGVjKTsKIAogICAgIFN0cmluZyB1cmwgPSBtZXNz
YWdlLT51cmwoKTsKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gbWVzc2FnZS0+bGluZSgpOwpA
QCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoZGF0YVVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGFkZE1lc3NhZ2Uo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJD
b3VsZCBub3QgY2FwdHVyZSBzY3JlZW5zaG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAg
ICAgICAgICAgIGFkZE1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsICJDb3VsZCBub3QgY2FwdHVyZSBzY3JlZW5zaG90Il9zLCBXVEZNb3ZlKGFy
Z3VtZW50cykpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTM4
OSw3ICszODksNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJgogICAgIGZvciAoc2l6ZV90IGkg
PSAoIXRhcmdldCA/IDAgOiAxKTsgaSA8IGFyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kp
CiAgICAgICAgIGFkanVzdGVkQXJndW1lbnRzLmFwcGVuZCh7IHN0YXRlLT52bSgpLCBhcmd1bWVu
dHMtPmFyZ3VtZW50QXQoaSkgfSk7CiAgICAgYXJndW1lbnRzID0gU2NyaXB0QXJndW1lbnRzOjpj
cmVhdGUoKnN0YXRlLCBXVEZNb3ZlKGFkanVzdGVkQXJndW1lbnRzKSk7Ci0gICAgYWRkTWVzc2Fn
ZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2csIGRh
dGFVUkwsIFdURk1vdmUoYXJndW1lbnRzKSkpOworICAgIGFkZE1lc3NhZ2UobWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNz
YWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3Vt
ZW50cykpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3Jv
dXAuY3BwCmluZGV4IDkxOTM2MDQ1YzJmYWY3NmNhYzVlMmM2OWU2MjMzZjJjZTMwYmY5YjEuLjEy
OGMxOGYxNGI5MDhlNzFiYzdjZWZiMzk2MjA3ZmViYmMwMGYyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VHcm91cC5jcHAKQEAgLTExNiw5ICsxMTYsOSBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBQ
YWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcygpCiB7CiAgICAgaWYgKCFtX2NhcHRpb25QcmVm
ZXJlbmNlcykgewogI2lmIFBMQVRGT1JNKE1BQykgfHwgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZ
X0ZSQU1FV09SSykKLSAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGPigqdGhpcyk7CisgICAgICAgIG1fY2Fw
dGlvblByZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rj4oKnRoaXMpOwogI2Vsc2UKLSAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0
aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlz
KTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCA2
YzE1YjNmYWE4M2Y1Y2FlMGQ5MTc2ZDAwYzhhZmMxNWI3NjY5MzE2Li5jYmJhYzIxZDQwMDViMWIw
ZTExODAyMmY3YWExNGE4YmNmZWQ4NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNw
cApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5nQnVm
ZmVyRnVsbFRpbWVyRmlyZWQoKQogRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmso
Y29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAg
ICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7Cisg
ICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogCiAg
ICAgYXV0byByZXN1bHQgPSBtX3VzZXJUaW1pbmctPm1hcmsobWFya05hbWUpOwogICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0yNzksMTQgKzI3OSwxNCBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogdm9pZCBQZXJm
b3JtYW5jZTo6Y2xlYXJNYXJrcyhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlmICgh
bV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2Vy
VGltaW5nPigqdGhpcyk7CiAgICAgbV91c2VyVGltaW5nLT5jbGVhck1hcmtzKG1hcmtOYW1lKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1lYXN1cmUoY29uc3QgU3RyaW5n
JiBtZWFzdXJlTmFtZSwgY29uc3QgU3RyaW5nJiBzdGFydE1hcmssIGNvbnN0IFN0cmluZyYgZW5k
TWFyaykKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0g
c3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWlu
ZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQgPSBt
X3VzZXJUaW1pbmctPm1lYXN1cmUobWVhc3VyZU5hbWUsIHN0YXJ0TWFyaywgZW5kTWFyayk7CiAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTMwMCw3ICszMDAsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1l
LCBjb25zdCBTdHJpbmcmCiB2b2lkIFBlcmZvcm1hbmNlOjpjbGVhck1lYXN1cmVzKGNvbnN0IFN0
cmluZyYgbWVhc3VyZU5hbWUpCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1f
dXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAg
ICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3Vz
ZXJUaW1pbmctPmNsZWFyTWVhc3VyZXMobWVhc3VyZU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaAppbmRleCA5OWE0MzcyZTU0ZDg0MDI5YmFmYmY5Yjhm
N2E1ODIwMDFmYTYzYTFiLi4xNmJjZjA0MzkwYTE3MGYzZGU3ODI2NTBjMmZjMjUyMmNmNTA1NGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKQEAgLTMyLDYgKzMy
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFdFQkNPUkVfRVhQT1JUIFByZXdh
cm1JbmZvcm1hdGlvbiB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIGZvbnRDYWNoZTsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCAwMzcwZjI4ODdmNjViNTdiM2NkODk3ZTRmYzY5ZThh
MmVmYjg3NWRmLi40NDI5MWFlZmEzN2M4YTdhODQ0OGJlYzM5YWVlYWMyNDM5ZWM0NzViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQ
cmludENvbnRleHQ6Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyhHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCwgRG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2xpbmtlZERl
c3RpbmF0aW9ucykgewotICAgICAgICBtX2xpbmtlZERlc3RpbmF0aW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFJlZjxFbGVtZW50Pj4+KCk7CisgICAgICAgIG1fbGlua2Vk
RGVzdGluYXRpb25zID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4o
KTsKICAgICAgICAgY29sbGVjdExpbmtlZERlc3RpbmF0aW9ucyhkb2N1bWVudCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAK
aW5kZXggNTZhMDExYzRjZWU5OTc4OTkwMWZhZDM2MzAyYmUxMGMzNDU2NjUyNy4uM2I4ODFkZmJi
MTcxN2Y0ZTQxMWE2YzUzNDQ1OTVmYmQzYWI0MzA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29s
IFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6aXNTY2hlZHVsZWQoKSBjb25zdAogdm9pZCBSZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnN0YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAgICBB
U1NFUlQoIWlzU2NoZWR1bGVkKCkpOwotICAgIG1fcmVmcmVzaFRpbWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZy
ZXNoRmlyZWQpOworICAgIG1fcmVmcmVzaFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOwogICAgIG1f
cmVmcmVzaFRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAppbmRleCBmYWRlNjJmYzc4N2VlNDg5
NzlhZjZkZDgyNjYyNzc5ODA0ZDM3NTE3Li42ZjA2MDgxNzgyNmVjNTZjNmVlOGE1ZjhjZDM5NDRl
YzJkNDE5MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVy
CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXI+IGNyZWF0ZShQYWdlJiBwYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPihwYWdlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPihwYWdlKTsKICAgICB9CiAKICAg
ICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVP
YnNlcnZlci5oCmluZGV4IDk1YjFjOGI1YmU4M2Q4OWIyNDk3OWVhZWQ5YjlkNGU5MGQzZjRmODcu
LmVlZWJmOWI5ZTYxYmQ1ODhmZDNiYTk5ZmFiMTUwMTkxY2M4ZjY3MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1Jlc2l6ZU9ic2VydmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBFbGVtZW50OwogCiBzdHJ1Y3QgUmVzaXplT2JzZXJ2ZXJEYXRhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVmVjdG9yPFdlYWtQdHI8UmVzaXplT2JzZXJ2
ZXI+PiBvYnNlcnZlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CmluZGV4IDQyMzQxODI4MGVhMmVlM2M5YmZkZmM5MWNkMTI3Yjk2OGViMWUxYmYuLjBkZWIwNjQx
NDhmOTcyNmNkMzhiNDEwMDVkNTIyOTcyNjBjMWM2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlQb2xpY3kuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJj
ZU8KICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOwogICAgIE9y
aWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChz
b3VyY2VTdHJpbmcsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T3JpZ2luQWNjZXNz
V2hpdGVMaXN0PigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Qq
IGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChP
cmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJk
b21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNj
ZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3NCYXNlLmNwcAppbmRleCBiNjg0ODk2ZjM5ODg0NjI1NGExNzk3YWRjZGVkNjY2NjA1ZTg1
ZDVjLi4yN2VlYTZjMGFiOTM4ZWJjOGY5NjVkYWNiODIwMzExNDQzMTYwYjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBT
ZWNvbmRzIGxheW91dFNjaGVkdWxlVGhyZXNob2xkID0gMjUwX21zOwogCiBTZXR0aW5nc0Jhc2U6
OlNldHRpbmdzQmFzZShQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKG51bGxwdHIpCi0gICAgLCBt
X2ZvbnRHZW5lcmljRmFtaWxpZXMoc3RkOjptYWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVz
PigpKQorICAgICwgbV9mb250R2VuZXJpY0ZhbWlsaWVzKG1ha2VVbmlxdWU8Rm9udEdlbmVyaWNG
YW1pbGllcz4oKSkKICAgICAsIG1fbGF5b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hv
bGQpCiAgICAgLCBtX21pbmltdW1ET01UaW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWlu
aW11bUludGVydmFsKCkpCiAgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRo
aXMsICZTZXR0aW5nc0Jhc2U6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKaW5kZXggNTU4NDQzNDA3ODM0NmZiOWI1N2E2
ZWE1OWFmY2UyN2E2MjQwYjU1YS4uM2MzZDQ5ZTA1OGFiMTMxNzQ3ZWI0OWJiMGM5M2EwZmQyOTQ1
MThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKQEAgLTM0LDYgKzM0
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3VzcGVuZGFibGVUaW1lciA6IHBy
aXZhdGUgVGltZXJCYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTdXNwZW5kYWJsZVRpbWVyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5TdXNwZW5kYWJsZVRpbWVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXgg
YjljZTk4Y2M2Y2E1YzI0NTZjZGI5NGY1ZGM0MWI0ZDJiNTBlOThmNi4uNjUyMzExZDdhNTVmNTUw
N2EwNWFhNDNiNjJjODAyMDg3MjJkYmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFVzZXJDb250ZW50
Q29udHJvbGxlcjo6Zm9yRWFjaFVzZXJNZXNzYWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKGNvbnN0
IFVzZXJNZQogCiB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChET01X
cmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1ZV9wdHI8VXNlclNjcmlwdD4gdXNlclNjcmlw
dCkKIHsKLSAgICBhdXRvJiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3
b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4oKTsg
fSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2Ny
aXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0VmVj
dG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZChX
VEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgVXNlckNv
bnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0cyhET01XcmFwcGVyV29ybGQmIHdvcmxk
KQogCiB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQoRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1bmlxdWVfcHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5
bGVTaGVldCwgVXNlclN0eWxlSW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewotICAgIGF1
dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQs
IFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigpOyB9
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2Vy
U3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8VXNlclN0
eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBzdHlsZVNoZWV0c0lu
V29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CiAKICAgICBpZiAoaW5qZWN0
aW9uVGltZSA9PSBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCmluZGV4IGYyNTlhZWIxYTBhOWU1Y2U3YTEz
NGYwZDEyNjllYzMxNGM5YTljMzEuLjMwNGQ5NGE3NWJmMzYxZDhkZDQ2ZjZhZmZhZmUzMWMzZWY4
MmE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmls
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5j
cHAKQEAgLTQzLDkgKzQzLDkgQEAgV2hlZWxFdmVudERlbHRhRmlsdGVyOjp+V2hlZWxFdmVudERl
bHRhRmlsdGVyKCkgPSBkZWZhdWx0Owogc3RkOjp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0YUZp
bHRlcj4gV2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKQogewogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2hlZWxFdmVudERlbHRhRmlsdGVyTWFjPigpOwog
I2Vsc2UKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZp
bHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZpbHRl
cj4oKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDE0NDY2M2NhZTk1OTc5Y2Zj
YzdjNGEyMjQyZTFkMTYxZDYxMDI5MjUuLjEzYzMxZjU3NjRiN2IyMjRhMmI3ZWE1NWFlMzNhNmIz
OTg2Yjk2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0Fu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBDU1NB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YW5pbWF0aW9uV2lsbEJlUmVtb3ZlZChBbmltYXRp
b25CYXNlJiBhbmltYXQKIH0KIAogQ1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9u
Q29udHJvbGxlcihGcmFtZSYgZnJhbWUpCi0gICAgOiBtX2RhdGEoc3RkOjptYWtlX3VuaXF1ZTxD
U1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQorICAgIDogbV9kYXRhKG1ha2VV
bmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+KGZyYW1lKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwCmluZGV4IDc0ZWVkYzk5NjZlOWY4MWFjYjk5NmNmMzc2OTgzZGFiNjg1NTQwYzYuLmJh
ZWIyNDc2NTcxNjczN2I4NGExY2M4ZjE5ZGUwMTczZjM2N2U5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAg
LTExNyw5ICsxMTcsOSBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRh
PiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaQogewogICAgIEFTU0VSVChm
cm9tICYmIHRvKTsKICAgICBpZiAoZnJvbS0+c3R5bGUoKSAhPSB0by0+c3R5bGUoKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKnRvKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKnRvKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNoYWRvd0RhdGE+KGJsZW5kKGZyb20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlvbigp
LCBwcm9ncmVzcyksCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJv
bS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmQo
ZnJvbS0+cmFkaXVzKCksIHRvLT5yYWRpdXMoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChm
cm9tLT5zcHJlYWQoKSwgdG8tPnNwcmVhZCgpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kRnVu
YyhhbmltLCBmcm9tLT5zdHlsZSgpLCB0by0+c3R5bGUoKSwgcHJvZ3Jlc3MpLApAQCAtOTc0LDE1
ICs5NzQsMTUgQEAgY2xhc3MgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IgOiBw
dWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZQogICAgIFByb3BlcnR5V3JhcHBlclZp
c2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgQ29sb3ImIChSZW5k
ZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNv
bnN0IENvbG9yJiksCiAgICAgICAgIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNpdGVk
R2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0
IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQot
ICAgICAgICAsIG1fd3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9y
Pihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCi0gICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihzdGQ6
Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2
aXNpdGVkU2V0dGVyKSkKKyAgICAgICAgLCBtX3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdy
YXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRlZFdy
YXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRl
ciwgdmlzaXRlZFNldHRlcikpCiAgICAgewogICAgIH0KICAgICBQcm9wZXJ0eVdyYXBwZXJWaXNp
dGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3AsIE1heWJlSW52YWxpZENvbG9yVGFn
LCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5k
ZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3ImIChS
ZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoq
dmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0
eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8
UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkK
LSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFw
cGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIp
KQorICAgICAgICAsIG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52
YWxpZENvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVkV3Jh
cHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCB2
aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAgICAgfQogICAgIGJvb2wgZXF1
YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikgY29uc3Qgb3Zl
cnJpZGUKQEAgLTEyMjksMTkgKzEyMjksMTkgQEAgY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5V3Jh
cHBlciA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICAgICAgc3dp
dGNoIChwcm9wZXJ0eSkgewogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6Ci0gICAg
ICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
bExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9z
aXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhP
cmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7Cisg
ICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExh
eWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9zaXRp
b24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhPcmln
aW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blk6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgotICAgICAg
ICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxM
YXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0
aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3Jp
Z2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKKyAg
ICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5
ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnlQb3NpdGlv
biwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWU9yaWdp
biwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFlPcmlnaW4sIEVkZ2U6OkJvdHRvbSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJv
cGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8
TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExheWVy
OjpzZXRTaXplTGVuZ3RoKTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVy
ID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHByb3Bl
cnR5LCAmRmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3RoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmls
bExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UpOworICAgICAgICAgICAgbV9maWxs
TGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQcm9w
ZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0
SW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE3NzAsNyArMTc3MCw3IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBl
ck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkKICAgICAgICAgICAgIGxvbmdo
YW5kV3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1fcHJvcGVydHlXcmFwcGVyc1t3cmFwcGVySW5k
ZXhdLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHBy
b3BlcnR5SUQsIFdURk1vdmUobG9uZ2hhbmRXcmFwcGVycykpKTsKKyAgICAgICAgbV9wcm9wZXJ0
eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3Jh
cHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdyYXBwZXJzKSkpOwogICAgICAgICBp
bmRleEZyb21Qcm9wZXJ0eUlEKHByb3BlcnR5SUQpID0gYW5pbWF0YWJsZUxvbmdoYW5kUHJvcGVy
dGllc0NvdW50ICsgaTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA3MDQ3ZTgzZGU3ODVkYjgxYjZkOTkwYTk0
ODM3YmE3MWQ3MjgyOWEwLi44ZjBmNmJmNTNiMDNlMDhmNzAzMzE2NmViOGM3NGQ2YmY5NzI4Mzcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlk
UmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaQogdm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZGF0ZVNvdXJjZVNlbGYoY29uc3QgU2VjdXJpdHlPcmln
aW4mIHNlY3VyaXR5T3JpZ2luKQogewogICAgIG1fc2VsZlNvdXJjZVByb3RvY29sID0gc2VjdXJp
dHlPcmlnaW4ucHJvdG9jb2woKTsKLSAgICBtX3NlbGZTb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29s
LCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJp
bmcoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX3NlbGZTb3VyY2UgPSBtYWtlVW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1
cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwg
ZmFsc2UsIGZhbHNlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFwcGx5UG9s
aWN5VG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKaW5kZXggYThmMWQ0
ZjBiZGUxNGYxNGI4OGFhMzk0MGVkZDhjODk2MjYxZTNkZS4uYmJkOTE4OWUyNDgzNGRhY2M4ZDdi
YWUxNWNjNTgxNmNhMzIwY2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGlyZWN0
aXZlTGlzdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICA6IG1fbmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCBkZGJkOGNk
ZTI3ODBlOTJkYmEyMGUwYWJkOTljZjA0OTg0M2Y0YzRkLi5jMDE1NmRkZjAxYzk0N2U1MDRiNTY5
ZDBhNDExNjk4YzU1OGYzZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMTIz
LDcgKzEyMyw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QoQ29udGVudFNlCiAKIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0OjpjcmVhdGUoQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0
IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHR5cGUsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UG9saWN5RnJvbSBmcm9tKQogewotICAgIGF1dG8gZGlyZWN0
aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dD4ocG9saWN5LCB0eXBlKTsKKyAgICBhdXRvIGRpcmVjdGl2ZXMgPSBtYWtlVW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CiAgICAgZGlyZWN0
aXZlcy0+cGFyc2UoaGVhZGVyLCBmcm9tKTsKIAogICAgIGlmICghY2hlY2tFdmFsKGRpcmVjdGl2
ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkpKSB7
CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpzZXRDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAgbV9w
b2xpY3kucmVwb3J0RHVwbGljYXRlRGlyZWN0aXZlKG5hbWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGRpcmVjdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4o
KnRoaXMsIG5hbWUsIHZhbHVlKTsKKyAgICBkaXJlY3RpdmUgPSBtYWtlVW5pcXVlPENTUERpcmVj
dGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YXBwbHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBzYW5kYm94UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKaW5kZXggNGZkZjc1
NmMwMjE5ODg1MzNiMmYxMjU1YzkxYTRlY2M5MTQ4NGZhNC4uMjZjMjEyYjQ4MjRhMDQzYzI1M2Fm
MjU3NjRlMGI5YTM4MTMwOGE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51
eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAg
Y2xhc3MgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyIGZpbmFsIDogcHVibGljIEdyYXBoaWNz
TGF5ZXJDbGllbnQgewogCiB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRp
YWxpemUoKQogewotICAgIG1fb3ZlcmxheVBhaW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291
cmNlVXNhZ2VPdmVybGF5UGFpbnRlcj4oKnRoaXMpOworICAgIG1fb3ZlcmxheVBhaW50ZXIgPSBt
YWtlVW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlcj4oKnRoaXMpOwogICAgIG1fcGFp
bnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShvdmVybGF5KCkucGFnZSgpLT5jaHJvbWUo
KS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqbV9vdmVybGF5UGFpbnRlcik7CiAg
ICAgbV9wYWludExheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbV9w
YWludExheWVyLT5zZXRTaXplKHsgbm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdodCB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IGQ3YWRmZmQ3MmY5ZmE4ZmU5N2FmY2RhMDcxOGQ4
M2M2ZTA5MDg1MGMuLjA4NjNhZDI2NzI1ZDY1NTQ3NTJiN2FjMjE0OGVlZDFjNmRmYzIzYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFBhZ2U6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB2b2lkIFBhZ2U6OmFkZFNjaGVkdWxlUGFpcihSZWY8U2No
ZWR1bGVQYWlyPiYmIHBhaXIpCiB7CiAgICAgaWYgKCFtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycykK
LSAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjaGVk
dWxlUGFpckhhc2hTZXQ+KCk7CisgICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gbWFr
ZVVuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOwogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBh
aXJzLT5hZGQocGFpci5wdHIoKSk7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5G
cmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCmluZGV4
IGRjZGQ5NTA0OGJkOTU4YWE3NDQwYTBmYzNkOWJjZTdkZjJmNTQ4MGYuLjY0NzVjZTVlYmM5MDdh
ZTE4ODBhZjE3MWMwNzM2ZmYzZWNiNTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9UZXh0SW5kaWNhdG9yV2luZG93LmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBUZXh0
SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9uIDogdWludDhfdCB7CiAjaWYgUExBVEZP
Uk0oTUFDKQogCiBjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0SW5kaWNhdG9yV2luZG93
KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCAzMDZjZmVkMTljZTZkMDBi
NjJhODUyNDk3MDAyOGI4MDQ1ZmFkODIzLi4wMGFmMzk0NzhkYzc1ZjcwMjljMjQ4NDU0ZWYwMWFi
MGM2YzdkMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNTksNyArNTksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yKFBhZ2UqIHBhZ2UpCiAgICAgOiBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdl
KQogICAgICwgbV91cGRhdGVOb2RlU2Nyb2xsUG9zaXRpb25UaW1lcigqdGhpcywgJkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRp
bWVyRmlyZWQpCi0gICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZShzdGQ6Om1ha2VfdW5pcXVlPFNj
cm9sbGluZ1N0YXRlVHJlZT4odGhpcykpCisgICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZShtYWtl
VW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKaW5kZXgg
NjNiZDk2MzhiNjNhMWExMWNhNDBmMzY3MjEyOWY3MTQxMGM2ZmYyZS4uM2FiNjQwNjgyNjRjNTA0
MDhiYWI0ZWUzOGQyY2NkNGE2NDFjNzg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKQEAgLTM3LDYgKzM3LDcgQEAg
c3RydWN0IFNjcm9sbE9mZnNldFJhbmdlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1
Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgVmVjdG9yPFQ+IGhvcml6b250YWxTbmFwT2Zmc2V0czsKICAgICBWZWN0b3I8
VD4gdmVydGljYWxTbmFwT2Zmc2V0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKaW5kZXgg
NzY0MGQ1NWQ5NmEzZjA5NTliOTMxZWYwNDMzZWMxNWZhMjA3ZGJkNC4uYzg5MGY5ZWJhMDA0Y2E4
NzgwMTQxYjg1Y2VlZTAwNTU2MmUyZTQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCkBA
IC03MSw3ICs3MSw3IEBAIEZsb2F0U2l6ZSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnBy
ZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUs
IGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3Bv
cnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFs
VmVsb2NpdHkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0
aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQo
Ym9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKaW5kZXggYmU5OWQwZWU2YTNmMDc4OWZjNGQ3ZGM2
OTI4ODViNTI0MDA0MzgwMi4uMjFjMzExY2Q4OWI3OTQwODRhODQ5MGQ1ZmM5YmE1NWE5M2I5YWVi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgRmxvYXRQ
b2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIAogY2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQs
IGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxW
ZWxvY2l0eSk7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZU5vZGUuY3BwCmluZGV4IDk2ODJkMmMxYmNlZTM3NTcxM2MzNDZkM2UzM2NkNGRjMTM1YWZj
NzguLmJlNTdjOWI4NjlkMGNjNTIzODZiMDA0NmE1MDdkMzRjODQwYzgxNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcApA
QCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRDaGlsZChS
ZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSkKICAgICBjaGlsZE5vZGUtPnNldFBh
cmVudCh0aGlzKTsKIAogICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgbV9jaGlsZHJlbiA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsK
KyAgICAgICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdT
dGF0ZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RGTW92ZShjaGlsZE5vZGUp
KTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ2hpbGROb2Rlcyk7CiB9CkBAIC0xMTIsNyArMTEy
LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxkKFJlZjxTY3JvbGxpbmdT
dGF0ZU5vZGU+JiYgY2hpbGROb2RlLCBzaXplX3QKIAogICAgIGlmICghbV9jaGlsZHJlbikgewog
ICAgICAgICBBU1NFUlQoIWluZGV4KTsKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKKyAgICAgICAgbV9j
aGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4o
KTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBtX2NoaWxkcmVuLT5zaXplKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3Bw
CmluZGV4IGY2MWUyOGUwZWM1MDMwMTJiMzcyZmIyNTU2OWE4Y2I3ZGQ1M2FhNzAuLjcxNTdlMTY4
NjBmNDljOTFkZGEzNWJiYzRlYWZlOTgxOWVhY2JlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcApAQCAtMjkzLDcgKzI5
Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IFNjcm9sbGluZ1N0YXRl
VHJlZTo6Y29tbWl0KExheWVyUmVwcmVzZW50YXRpCiAgICAgfQogCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBjbG9uZXMgYW5kIHJlc2V0cyB0aGUgY3VycmVudCBzdGF0ZSB0cmVlLCBidXQgbGVhdmVz
IHRoZSB0cmVlIHN0cnVjdHVyZSBpbnRhY3QuCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGlu
Z1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0
YXRlVHJlZT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiB0cmVl
U3RhdGVDbG9uZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOwogICAgIHRyZWVT
dGF0ZUNsb25lLT5zZXRQcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKHByZWZlcnJlZExheWVy
UmVwcmVzZW50YXRpb24pOwogCiAgICAgaWYgKG1fcm9vdFN0YXRlTm9kZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAppbmRleCBl
YTc0ZTJjYTQyNDI5YThlMmJlOWY5YTM3OWUzNjdkYTRkZGRhM2QxLi43Mjk2MTVhNjlmMDEyMjYz
MTUxNDdlY2ZkYjU1MjhiMDE5OWYzODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKFJlZjxTY3JvbGxpbmdUcmVlTm9kZT4mJiBj
aGlsZE5vZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBpZiAoIW1f
Y2hpbGRyZW4pCi0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxS
ZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsKKyAgICAgICAgbV9jaGlsZHJlbiA9IG1ha2VV
bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4+PigpOwogICAgIG1fY2hpbGRy
ZW4tPmFwcGVuZChXVEZNb3ZlKGNoaWxkTm9kZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5tbQppbmRleCAxYzdhYjc2YTE1MWU2MzUwZDhiNjE0YzM2ZDA1YmNlNjVj
NmM5NTg0Li5iNDNlYTk5NWZhZjZiNDcwMzM1ZmJmMDdhMjA4NmE2YjM1ZjcwZWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgc3RhdGlj
IGJvb2wgZ0VuYWJsZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uID0gdHJ1ZTsK
IAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxP
ZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxWZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWM+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxP
ZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM+KHZpZXdwb3J0U2l6ZSwgY29udGVu
dFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKIH0K
IAogdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1T
Y3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DUFVNb25pdG9yLmgKaW5kZXggNzFlNDNkM2YzYjk0NjEwNjA4Y2JmMTFkYjUxMTViY2JlYzA1
NDg5MC4uMDg4ZGY1NDNlMDQ3OTExN2M4MzdhZmUyMjNiYmNjNTUxNDg4YTdmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDUFVNb25pdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB1c2luZyBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciA9IFdURjo6RnVu
Y3Rpb248dm9pZChkb3VibGUpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBDUFVNb25pdG9yKFNlY29u
ZHMgY2hlY2tJbnRlcnZhbCwgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXImJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZU1vbml0b3IuaAppbmRleCBlNjBmNzcxM2Y2MmJiMjU2MmE4NDI4ODhjN2Zj
NjI5ZjJjNTQ3ZjMzLi42YjI4OGUxZTE3ZTQ0OGJiODZmYjllY2UyOWNjOWU1YmRiOWRkOGRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKQEAgLTQyLDYgKzQyLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsZU1vbml0b3IgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgRmlsZUNoYW5nZVR5cGUgeyBN
b2RpZmljYXRpb24sIFJlbW92YWwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKaW5k
ZXggNGZmOTgwNGVhZWMxMzA2YjI2OGEyNDVmMjc3MWExMTJlMjhkMmExZS4uM2ZjNDMxYTQ3NDYx
ZDhjNDQzZGI0YjYyMmQ2ZWE5MDYzNGRhMGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGgu
Y3BwCkBAIC0yODgsOSArMjg4LDkgQEAgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xl
bmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMg
ZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKLSAgICBs
ZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVu
Z3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVz
c2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7
CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxl
bmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVu
ZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKKyAgICBhdXRvIG9w
ID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwg
Q2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZh
bHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApAQCAtMzAyLDcg
KzMwMiw3IEBAIHN0YXRpYyBMZW5ndGggYmxlbmRNaXhlZFR5cGVzKGNvbnN0IExlbmd0aCYgZnJv
bSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyCiAgICAgaWYgKHByb2dyZXNzID49IDEu
MCkKICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAKLSAgICBhdXRvIGJsZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3Mp
OworICAgIGF1dG8gYmxlbmQgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGg+
KGZyb20sIHRvLCBwcm9ncmVzcyk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVl
OjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKaW5kZXggNTUy
YjEyZjZjMWU4Y2RhNmZmZWE2NDc4NjkyMjI5ZWE5M2VkMTdjYS4uOGUzNWUzMDRjMWU3MjU3YmM2
NGM2YWQxMGVkZGU5NjQyMDRlNjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiAoIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUMpKSB8
fCAhSEFWRShNRURJQV9QTEFZRVIpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3Rl
bmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJD
bGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21t
YW5kTGlzdGVuZXI+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFu
ZExpc3RlbmVyPihjbGllbnQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBkOTE1NGQ5MzUxYTJmMzM2NmRkZDA1ZmU2MGZkZWJi
OWMxYTFlNzM4Li5mOGVkYzg4MmQ3ZjM2MDAyZTE5ODUxMGQ4MWI4ZWIzNGFhNTAwN2M4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC00Myw3ICs0Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmlt
YXRvcj4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dG9yPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGM2MmFkODM0ZTZiMzgwOGUxZWNkYThiYTEzMTJk
M2Q5NTcwNWU5NmEuLjk2ZDBmMzAwYjM0MThlNjA4MjFkYTJkYTJhNjQxODljNGRlZTBiM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwLDcgKzgw
LDcgQEAgU2Nyb2xsQW5pbWF0b3ImIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvcigpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3Njcm9sbEFuaW1hdG9yKSB7CiAgICAgICAgIGlmICh1c2VzTW9j
a1Njcm9sbEFuaW1hdG9yKCkpIHsKLSAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJl
YSY+KCp0aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworICAgICAgICAgICAg
bV9zY3JvbGxBbmltYXRvciA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25zdF9j
YXN0PFNjcm9sbGFibGVBcmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNzYWdl
KSB7CiAgICAgICAgICAgICAgICAgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShtZXNzYWdl
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKQEAgLTQzNSw3ICs0MzUsNyBAQCBi
b29sIFNjcm9sbGFibGVBcmVhOjpoYXNMYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIFNjcm9sbGFibGVBcmVhOjplbnN1cmVTbmFw
T2Zmc2V0c0luZm8oKQogewogICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCi0gICAgICAgIG1f
c25hcE9mZnNldHNJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88
TGF5b3V0VW5pdD4+KCk7CisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gbWFrZVVuaXF1ZTxT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+KCk7CiAgICAgcmV0dXJuICptX3NuYXBP
ZmZzZXRzSW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3Vk
ZGVuVGVybWluYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0
aW9uLmgKaW5kZXggNzJiMDA0NTEzMTQyYzhmNGU5NWRmMjI4MThjM2RkYzE4MGFhZWNlZC4uMGQ3
NGIxNmU1OTI1OThhYjgzYjBjOGMwZWI1NGI0NDZkZmQzOGQzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgY2xhc3MgU3VkZGVuVGVybWluYXRpb25EaXNhYmxl
ciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKTsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaHJlYWRHbG9iYWxEYXRhLmNwcAppbmRleCBhMjgwMTBlY2ZlNWEzNjdhZDlkMGIyOWEyMDA1
NjNhMGY1NjFkNTYwLi4yN2E3MzY0MTZiYTA0YzA1M2MyZTc3ZGIyYzU1ODE0NDQwZDJmMGY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtNDAs
MTQgKzQwLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRocmVhZEdsb2JhbERhdGE6OlRo
cmVhZEdsb2JhbERhdGEoKQotICAgIDogbV9jYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKKyAg
ICA6IG1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhtYWtlVW5pcXVlPENhY2hlZFJl
c291cmNlUmVxdWVzdEluaXRpYXRvcnM+KCkpCiAgICAgLCBtX2V2ZW50TmFtZXMoRXZlbnROYW1l
czo6Y3JlYXRlKCkpCi0gICAgLCBtX3RocmVhZFRpbWVycyhzdGQ6Om1ha2VfdW5pcXVlPFRocmVh
ZFRpbWVycz4oKSkKLSAgICAsIG1fcXVhbGlmaWVkTmFtZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8
UXVhbGlmaWVkTmFtZUNhY2hlPigpKQorICAgICwgbV90aHJlYWRUaW1lcnMobWFrZVVuaXF1ZTxU
aHJlYWRUaW1lcnM+KCkpCisgICAgLCBtX3F1YWxpZmllZE5hbWVDYWNoZShtYWtlVW5pcXVlPFF1
YWxpZmllZE5hbWVDYWNoZT4oKSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2lzTWFpblRocmVh
ZChpc01haW5UaHJlYWQoKSkKICNlbmRpZgotICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1Uoc3Rk
OjptYWtlX3VuaXF1ZTxJQ1VDb252ZXJ0ZXJXcmFwcGVyPigpKQorICAgICwgbV9jYWNoZWRDb252
ZXJ0ZXJJQ1UobWFrZVVuaXF1ZTxJQ1VDb252ZXJ0ZXJXcmFwcGVyPigpKQogewogICAgIC8vIFRo
aXMgY29uc3RydWN0b3Igd2lsbCBoYXZlIGJlZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBi
ZWZvcmUgYmVpbmcgY2FsbGVkIG9uCiAgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9u
bHkgY2FsbGVkIG9uY2UgcGVyIHRocmVhZCAtIHRoaXMgbWFrZXMgdGhpcyBhIGNvbnZlbmllbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAppbmRleCAyZjg5MmQ2
YjE5YWJhNDIzMGU5MjRjNzYxODczOGZjNmNiNDhmN2VjLi5lNzBkNDZkMGI5ZjI0MDdmOTA4NTQ4
ZmE4ZjJlOThjOWRhNDU2M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEF1ZGlvQnVzOjpBdWRpb0J1cyh1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbGVuZ3RoLCBib29sIGFsbG9jYXRlKQogICAgIG1fY2hh
bm5lbHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAg
YXV0byBjaGFubmVsID0gYWxsb2NhdGUgPyBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4o
bGVuZ3RoKSA6IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihudWxscHRyLCBsZW5ndGgp
OworICAgICAgICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IG1ha2VVbmlxdWU8QXVkaW9DaGFu
bmVsPihsZW5ndGgpIDogbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0aCk7
CiAgICAgICAgIG1fY2hhbm5lbHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoY2hhbm5lbCkpOwog
ICAgIH0KIApAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgQXVkaW9CdXM6OmNvcHlXaXRoR2FpbkZy
b20oY29uc3QgQXVkaW9CdXMgJnNvdXJjZUJ1cywgZmxvYXQqIGxhc3RNaXhHYWluLCBmCiAKICAg
ICBpZiAoZnJhbWVzVG9EZXppcHBlcikgewogICAgICAgICBpZiAoIW1fZGV6aXBwZXJHYWluVmFs
dWVzLmdldCgpIHx8IG1fZGV6aXBwZXJHYWluVmFsdWVzLT5zaXplKCkgPCBmcmFtZXNUb0Rlemlw
cGVyKQotICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvRmxvYXRBcnJheT4oZnJhbWVzVG9EZXppcHBlcik7CisgICAgICAgICAgICBtX2Rlemlw
cGVyR2FpblZhbHVlcyA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0Rlemlw
cGVyKTsKIAogICAgICAgICBmbG9hdCogZ2FpblZhbHVlcyA9IG1fZGV6aXBwZXJHYWluVmFsdWVz
LT5kYXRhKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXNUb0Rlemlw
cGVyOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQnVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCmluZGV4
IDIxNzNkYzkzODNlNGEzM2MxYjU5MzQ3NjVhMWU1YjEwNzQ2ZjAzYTEuLmJiYjNkMmFjZDIyYzU3
MmJjOTIzYTQ4YjFmNzBhZjg1NGMwY2IwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9CdXMuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBB
biBBdWRpb0J1cyByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBvbmUgb3IgbW9yZSBBdWRpb0No
YW5uZWxzLgogLy8gVGhlIGRhdGEgbGF5b3V0IGlzICJwbGFuYXIiIGFzIG9wcG9zZWQgdG8gImlu
dGVybGVhdmVkIi4KIC8vIEFuIEF1ZGlvQnVzIHdpdGggb25lIGNoYW5uZWwgaXMgbW9ubywgYW4g
QXVkaW9CdXMgd2l0aCB0d28gY2hhbm5lbHMgaXMgc3RlcmVvLCBldGMuCi1jbGFzcyBBdWRpb0J1
cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0J1cz4geworY2xhc3MgQXVkaW9C
dXMgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9CdXM+IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb0J1cyk7CiBwdWJsaWM6CiAgICAgZW51bSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCmluZGV4IGJiYzEzNTdh
M2Q1M2YwNTQ4Zjg4NzhlNTg3ZGI3ZDZkZDFjNGZhZDguLjdiOTg5M2QzOGFjNDE3NDUzMTc0MWI3
NzI0YzZmZjJhYmQwMWRmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQ2hhbm5lbC5oCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
QW4gQXVkaW9DaGFubmVsIHJlcHJlc2VudHMgYSBidWZmZXIgb2Ygbm9uLWludGVybGVhdmVkIGZs
b2F0aW5nLXBvaW50IGF1ZGlvIHNhbXBsZXMuCiAvLyBUaGUgUENNIHNhbXBsZXMgYXJlIG5vcm1h
bGx5IGFzc3VtZWQgdG8gYmUgaW4gYSBub21pbmFsIHJhbmdlIC0xLjAgLT4gKzEuMAotY2xhc3Mg
QXVkaW9DaGFubmVsIHsKK2NsYXNzIEF1ZGlvQ2hhbm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9DaGFubmVsKTsK
IHB1YmxpYzoKICAgICAvLyBNZW1vcnkgY2FuIGJlIGV4dGVybmFsbHkgcmVmZXJlbmNlZCwgb3Ig
Y2FuIGJlIGludGVybmFsbHkgYWxsb2NhdGVkIHdpdGggYW4gQXVkaW9GbG9hdEFycmF5LgpAQCAt
NTYsNyArNTcsNyBAQCBjbGFzcyBBdWRpb0NoYW5uZWwgewogICAgICAgICAsIG1fcmF3UG9pbnRl
cigwKQogICAgICAgICAsIG1fc2lsZW50KHRydWUpCiAgICAgewotICAgICAgICBtX21lbUJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihsZW5ndGgpOworICAgICAgICBt
X21lbUJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihsZW5ndGgpOwogICAgIH0K
IAogICAgIC8vIEEgImJsYW5rIiBhdWRpbyBjaGFubmVsIC0tIG11c3QgY2FsbCBzZXQoKSBiZWZv
cmUgaXQncyB1c2VmdWwuLi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZP
LmgKaW5kZXggNzVjOWFiZDc0OTRkMzU4MjJmODJhY2U3Y2NkMGQ4NTY4NjExZDdlYS4uMGY0Mzhk
ZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2NjMwOGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBBdWRpb0ZJRk8geworY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBGSUZP
IGxhcmdlIGVub3VnaCB0byBob2xkIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVt
YmVyT2ZDaGFubmVsc3wgY2hhbm5lbHMuCiAgICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMsIHNpemVfdCBmaWZvTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAppbmRleCBiZmJlOTgzYTU3NWE0NTRhYWMyYjBjM2NiZTQ1
NzVlZmFmNmI3OGQ3Li5kNzQ4ZmE0MTM4NzM3OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCkBAIC00
MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHRoZSBGSUZPIHdpbGwgYXNrIHRo
ZSBwcm92aWRlciBmb3IgbW9yZSBkYXRhIHdoZW4gbmVjZXNzYXJ5IHRvIGZ1bGZpbGwgYSByZXF1
ZXN0LiBDb250cmFzdCB0aGlzCiAvLyB3aXRoIGEgInB1c2giIEZJRk8sIHdoZXJlIHRoZSBzZW5k
ZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJRk8gd2hpY2ggd2lsbCBpdHNlbGYgcHVzaCB0aGUgZGF0
YSB0bwogLy8gdGhlIHJlY2VpdmVyIHdoZW4gdGhlIEZJRk8gaXMgZnVsbC4KLWNsYXNzIEF1ZGlv
UHVsbEZJRk8geworY2xhc3MgQXVkaW9QdWxsRklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgRklGTyB0aGF0IGdldHMgZGF0
YSBmcm9tIHxwcm92aWRlcnwuIFRoZSBGSUZPIHdpbGwgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQK
ICAgICAvLyB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8
IGNoYW5uZWxzLiBUaGUgQXVkaW9Tb3VyY2VQcm92aWRlciB3aWxsIGJlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKaW5kZXggODY5MDZiYTUx
MjQ3NTg2OTJjNjgzZTJiYzkwMzgzNTAxZWFiOGZkOS4uMjg0YzA1NDk0MzI1OTM0NGVhY2UzMjQx
OGFkYTliODMwM2RhMmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyLmNwcApAQCAtMzksNyArMzksNyBAQCBjb25zdCBkb3VibGUgQXVkaW9S
ZXNhbXBsZXI6Ok1heFJhdGUgPSA4LjA7CiBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIo
KQogICAgIDogbV9yYXRlKDEuMCkKIHsKLSAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICBtX2tlcm5lbHMuYXBwZW5k
KG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKICAgICBtX3NvdXJjZUJ1
cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgMCwgZmFsc2UpOwogfQogCkBAIC00Nyw3ICs0Nyw3IEBA
IEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
KQogICAgIDogbV9yYXRlKDEuMCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFw
cGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAKICAgICBtX3Nv
dXJjZUJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgMCwgZmFsc2UpOwog
fQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVs
cyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgIC8vIEZpcnN0IGRlYWwgd2l0aCBhZGRp
bmcgb3IgcmVtb3Zpbmcga2VybmVscy4KICAgICBpZiAobnVtYmVyT2ZDaGFubmVscyA+IGN1cnJl
bnRTaXplKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGN1cnJlbnRTaXplOyBpIDwgbnVt
YmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgICAgICAgICBtX2tl
cm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgbV9rZXJuZWxzLnJlc2l6ZShudW1iZXJPZkNoYW5uZWxzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKaW5kZXgg
ZDExZmE5M2ViYWFjYmQ4ZTU2Yjk4ZGEzMzc1ZmFlMTQwNjhlM2JjOS4uMjAxNmJhZmY3Yzg4ZGYx
OGFmNWQzNTJjMzAxZjVmZjQzNzY4OWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIFRoZSBhdWRpbyBzdHJlYW0gbWF5IGJlIHNpbmdsZSBvciBtdWx0aS1jaGFubmVs
LgogLy8gVGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdHMgdG8gc2luZ2xlLWNoYW5uZWwg
KG1vbm8pLgogCi1jbGFzcyBBdWRpb1Jlc2FtcGxlciB7CitjbGFzcyBBdWRpb1Jlc2FtcGxlciBm
aW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXVkaW9S
ZXNhbXBsZXIoKTsKICAgICBBdWRpb1Jlc2FtcGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1w
bGVyS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxl
cktlcm5lbC5oCmluZGV4IDk5ZDg3N2JiN2NkNjhkYmIwNTM2NzdhMDk3Y2Q0ZTBlYWM4M2I3ODIu
LjhhYzJiYWE0MmM1ODdhMzQ4NWQ1MzQwMjNhZGVlMjRmODgzMjZlZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaApAQCAt
MzQsNyArMzQsOSBAQCBjbGFzcyBBdWRpb1Jlc2FtcGxlcjsKIC8vIEF1ZGlvUmVzYW1wbGVyS2Vy
bmVsIGRvZXMgcmVzYW1wbGluZyBvbiBhIHNpbmdsZSBtb25vIGNoYW5uZWwuCiAvLyBJdCB1c2Vz
IGEgc2ltcGxlIGxpbmVhciBpbnRlcnBvbGF0aW9uIGZvciBnb29kIHBlcmZvcm1hbmNlLgogCi1j
bGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5lbCB7CitjbGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBm
aW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQXVkaW9SZXNhbXBsZXJLZXJuZWwpOwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVy
S2VybmVsKEF1ZGlvUmVzYW1wbGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IDVjMWJmMmEzMTczNDJlYTNlNTI5MmE3OTdlOGU2
NmUxYThkYTM5N2MuLmI1ZmI1ODA2NDhmOWNmOGVjNGYxODZmYWZhNDhlMTNmZGNmMmY1N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAt
NTAsNiArNTAsNyBAQCBib29sIEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3Rp
dmUpCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgK
aW5kZXggMTdkYTgxYjNiNzVkN2E1YWFiODIxNDg2YjdjMWUzM2YxYThkZjQ2OS4uZTcwMDgyMmZm
MWZlZWJkNzgyOWFlYzc1MGNjZTQwYTYwYjkyNTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDggQEAgZW51bSBjbGFzcyBS
b3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90IHsKICAgICBMb25nRm9ybVZpZGVvCiB9OwogCi1j
bGFzcyBBdWRpb1Nlc3Npb24geworY2xhc3MgQXVkaW9TZXNzaW9uIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Nlc3Np
b24pOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1Nlc3Npb24mIHNo
YXJlZFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0JpcXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKaW5kZXgg
YmI3MjFhMjNhN2ZjYzc3NGI2MDkzZTRlYTkwOGM2MGU4OTA4MTA3Yy4uNzEzNDk0YzkxNGQzMzc4
NjQzZTI5YTgwYmMzOWU3NzM2NmRmMTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQmlxdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QmlxdWFkLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gICAgbG93
cGFzcywgaGlnaHBhc3MsIHNoZWx2aW5nLCBwYXJhbWV0ZXJpYywgbm90Y2gsIGFsbHBhc3MsIC4u
LgogCiBjbGFzcyBCaXF1YWQgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOiAgIAogICAgIEJpcXVhZCgpOwogICAgIH5CaXF1YWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0NvbmUuaAppbmRleCBkODFjMDVkYzY4ZTZlMmZhMjFkMjQ1ZGQxMzdiNGYxNzhh
MjEyMGI0Li5hN2FjYTNhNGM1NGQyNzRiM2FhM2Q0MGFkOWQxNDNlYmRmYzQ1ZmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogLy8gQ29uZSBnYWluIGlzIGRlZmluZWQgYWNjb3JkaW5nIHRvIHRoZSBPcGVu
QUwgc3BlY2lmaWNhdGlvbgogCi1jbGFzcyBDb25lRWZmZWN0IHsKK2NsYXNzIENvbmVFZmZlY3Qg
ZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbmVF
ZmZlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVu
b3JtYWxEaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxE
aXNhYmxlci5oCmluZGV4IDZlOWY0ZTAxZGFlNmQ0NWQwMjExMWQ1ZDViMTI4ZWYzODg2YjIyNDIu
LmUwYjNlZmQ4MGY3OGZmYWEzMDY1NzMzMjMxNDcwMmRjNzNhMmYwMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVyLmgKQEAgLTQxLDcgKzQx
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0RFTk9STUFM
Ci1jbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKK2NsYXNzIERlbm9ybWFsRGlzYWJsZXIgZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlbm9ybWFsRGlz
YWJsZXIoKQogICAgICAgICAgICAgOiBtX3NhdmVkQ1NSKDApCkBAIC0xMDMsNyArMTA0LDggQEAg
Y2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CiAKICNlbHNlCiAvLyBGSVhNRTogYWRkIGltcGxlbWVu
dGF0aW9ucyBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcyBhbmQgY29tcGlsZXJzCi1jbGFzcyBEZW5v
cm1hbERpc2FibGVyIHsKK2NsYXNzIERlbm9ybWFsRGlzYWJsZXIgZmluYWwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlbm9ybWFsRGlzYWJsZXIoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9s
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaApp
bmRleCA2ZjJmYWY0MGU2MWJmNmUzMmE0ZjQ5OTk3NjVjOWUxYmI1MTk0MWE4Li43ODMwOGNlMTk5
OTk5YmIxZDY4MGJiM2I3ZTIzYWUwNGNkN2NiMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaApAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERpcmVjdENvbnZvbHZlciB7CitjbGFzcyBEaXJlY3RD
b252b2x2ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERpcmVjdENvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
RGlyZWN0Q29udm9sdmVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCmluZGV4IDkxZDM0OWI5N2U2Mjc3MzMyZDc2MzFhODg0
NDI2YjE2NjhkY2YyODMuLmIzZWI3Nzk3M2NmYTQ3OTVmMTUwNTM2OWI3ZTRiMmY4OWZmYjZjNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaApAQCAtNDAsNyArNDAs
OCBAQCBlbnVtIGNsYXNzIERpc3RhbmNlTW9kZWxUeXBlIHsKICAgICBFeHBvbmVudGlhbAogfTsK
IAotY2xhc3MgRGlzdGFuY2VFZmZlY3QgeworY2xhc3MgRGlzdGFuY2VFZmZlY3QgZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERpc3RhbmNlRWZmZWN0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1w
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oCmluZGV4
IGY0YjQyMDE3ZWU3NjI3Y2FkNjU2YmZmNDU3YWFlOTg5NDgwMTRiZjIuLjk1NzBiODkxYzk3ZmZh
OTExYTAxMTM0MDAzYjRmZGNiNWY3NmY5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRG93blNhbXBsZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIERvd25TYW1wbGVyIGRvd24tc2FtcGxlcyB0aGUgc291cmNlIHN0cmVhbSBieSBhIGZh
Y3RvciBvZiAyeC4KIAotY2xhc3MgRG93blNhbXBsZXIgeworY2xhc3MgRG93blNhbXBsZXIgZmlu
YWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IERvd25TYW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAppbmRleCBiMjU1MThk
ODgwYThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViLi41MTM3OTlhODUxMmY0MjdiNGU0Yjhk
OWIyOTQ1YTk0ZDM0OTE4Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAgLTI3MSw4ICsyNzEsOCBAQCB2b2lkIER5
bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzKQogICAgIG1fcHJlRmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBtX3Bvc3RGaWx0ZXJQ
YWNrcy5jbGVhcigpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5u
ZWxzOyArK2kpIHsKLSAgICAgICAgbV9wcmVGaWx0ZXJQYWNrcy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKLSAgICAgICAgbV9wb3N0RmlsdGVyUGFja3Mu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7CisgICAgICAg
IG1fcHJlRmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4o
KSk7CisgICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFplcm9Qb2xl
RmlsdGVyUGFjazQ+KCkpOwogICAgIH0KIAogICAgIG1fc291cmNlQ2hhbm5lbHMgPSBtYWtlVW5p
cXVlQXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKaW5kZXggZWY4YzA5
M2ExYjk2NTMyMjlkNzk5ZjFhNmIyOTJhZmFkYmRhYmFkMS4uODIyYzkzMWYzOGNlMGVjOGRjNjI4
MmYwZjhjMzQzYWY2NzdmOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTQzLDggKzQzLDkgQEAgY2xhc3MgQXVkaW9C
dXM7CiAvLyBvZiB0aGUgbG91ZGVzdCBwYXJ0cyBvZiB0aGUgc2lnbmFsIGFuZCByYWlzZXMgdGhl
IHZvbHVtZSBvZiB0aGUgc29mdGVzdCBwYXJ0cywKIC8vIG1ha2luZyB0aGUgc291bmQgcmljaGVy
LCBmdWxsZXIsIGFuZCBtb3JlIGNvbnRyb2xsZWQuCiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3Nv
ciB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKER5bmFtaWNzQ29tcHJlc3Nvcik7
CiBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIFBhcmFtVGhyZXNob2xkLApAQCAtOTUsOSAr
OTYsMTAgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yIHsKICAgICBmbG9hdCBtX2xhc3RBbmNo
b3I7CiAgICAgZmxvYXQgbV9sYXN0RmlsdGVyU3RhZ2VHYWluOwogCi0gICAgdHlwZWRlZiBzdHJ1
Y3QgeworICAgIHN0cnVjdCBaZXJvUG9sZUZpbHRlclBhY2s0IHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBaZXJvUG9sZSBmaWx0ZXJzWzRdOwotICAg
IH0gWmVyb1BvbGVGaWx0ZXJQYWNrNDsKKyAgICB9OwogCiAgICAgLy8gUGVyLWNoYW5uZWwgZW1w
aGFzaXMgZmlsdGVycy4KICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Qb2xlRmlsdGVy
UGFjazQ+PiBtX3ByZUZpbHRlclBhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKaW5kZXggNzM0YjA2
NmNkYTQ4YmMyYzdhNzllZGY1MDdkMDZjMDU2YzcwYTA5MC4uYWZlZGI3YjRjZDBhNWE2MWQxYTlm
ZTI3OGMzNDAzODNmOThlMjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAKICAgICBtX3ByZURlbGF5QnVmZmVycy5jbGVhcigp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpCi0g
ICAgICAgIG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKKyAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMu
YXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihNYXhQcmVEZWxheUZyYW1lcykpOwog
fQogCiB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0UHJlRGVsYXlUaW1lKGZsb2F0
IHByZURlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKaW5kZXggYjdiY2VhMmZhZmQ4OTk2Y2E1Mjhi
MGI1ZGFiNDljYjg4OTU4ZGNjNC4uZTExZjQ3YmFhZjBiYzZjNWQwY2E3ZTNkNzIwMDgyNjM5ZDI3
MGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yS2VybmVsLmgKQEAgLTM1LDcgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwgeworY2xhc3MgRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwoZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAppbmRleCA4Y2Y1OTkxNzk1ZjNm
MWY2M2UyODFkOWUxNmFjYWYzZDdhNTdhNWRhLi40ZTQ2M2IxMjgxYTdmYTNiYjM5N2E2YjA2NWNl
MDMzY2NiZjlhZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9F
cXVhbFBvd2VyUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1
YWxQb3dlclBhbm5lci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gQ29tbW9uIHR5cGUgb2Ygc3RlcmVvIHBhbm5lciBhcyBmb3VuZCBpbiBub3JtYWwgYXVkaW8g
bWl4aW5nIGVxdWlwbWVudC4KIAotY2xhc3MgRXF1YWxQb3dlclBhbm5lciA6IHB1YmxpYyBQYW5u
ZXIgeworY2xhc3MgRXF1YWxQb3dlclBhbm5lciBmaW5hbCA6IHB1YmxpYyBQYW5uZXIgewogcHVi
bGljOgogICAgIGV4cGxpY2l0IEVxdWFsUG93ZXJQYW5uZXIoZmxvYXQgc2FtcGxlUmF0ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKaW5kZXggNDU0
MmI2ZmIyNTc4NTQ5NWFiMjA2YWJjM2M5MGM3NWJjMmYxNmVhMC4uMzg2MjI3ZjE5NzA0YWZkNzky
ZTM2NjIyYmRkYTljMWFjZWE3NTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZUQ29udm9sdmVyLmgKQEAgLTM0LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBGRlRDb252b2x2ZXIgeworY2xhc3MgRkZUQ29udm9sdmVyIGZpbmFsIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGRlRD
b252b2x2ZXIpOwogcHVibGljOgogICAgIC8vIGZmdFNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3
bwogICAgIEZGVENvbnZvbHZlcihzaXplX3QgZmZ0U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKaW5kZXggNGMwMmI2OTkyYjA2MzgzYjgwMzU3Mzc4Nzhk
YmY2NWEyNmZiOWMzMS4uNGMxNTIwNjdkNDRhYzRiODU0MTkyMWFhZWQyOTU5ODJiOTY5Mzc4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCB2b2lkIEZGVEZyYW1lOjpkb1BhZGRlZEZGVChjb25zdCBmbG9hdCogZGF0YSwgc2l6
ZV90IGRhdGFTaXplKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RkZURnJhbWU+IEZGVEZyYW1lOjpjcmVh
dGVJbnRlcnBvbGF0ZWRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUxLCBjb25zdCBGRlRGcmFt
ZSYgZnJhbWUyLCBkb3VibGUgeCkKIHsKLSAgICBhdXRvIG5ld0ZyYW1lID0gc3RkOjptYWtlX3Vu
aXF1ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CisgICAgYXV0byBuZXdGcmFtZSA9IG1h
a2VVbmlxdWU8RkZURnJhbWU+KGZyYW1lMS5mZnRTaXplKCkpOwogCiAgICAgbmV3RnJhbWUtPmlu
dGVycG9sYXRlRnJlcXVlbmN5Q29tcG9uZW50cyhmcmFtZTEsIGZyYW1lMiwgeCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgKaW5kZXggNzU3YmNmYTRi
NmFlZmQ3MGViYWU4NjU0ODcyNWZhNDA2MjljNmU5ZS4uYTUxOTM0OTgxNTA0NTI2ZDZmYzY0ZDQ1
Yjk3OTBiMzc4MTAzYTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBIUlRGS2VybmVsOwogCi1jbGFzcyBIUlRGRGF0YWJhc2UgeworY2xhc3MgSFJURkRhdGFiYXNl
IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShIUlRGRGF0YWJhc2UpOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKaW5kZXggZjQ1YmU4NDdjZTcx
MGRjZWRhMmUwZWMxMDZiNzViZjI2ODU3ODljZC4uYTQ3NGE3MGM0MDg1MmFlMmUxZjlmNThhNDlh
MDAwMzYxNTgwYjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkRhdGFiYXNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSFJURkRhdGFi
YXNlTG9hZGVyOjpsb2FkKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAo
IW1faHJ0ZkRhdGFiYXNlLmdldCgpKSB7CiAgICAgICAgIC8vIExvYWQgdGhlIGRlZmF1bHQgSFJU
RiBkYXRhYmFzZS4KLSAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEhS
VEZEYXRhYmFzZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUpOworICAgICAgICBtX2hydGZEYXRhYmFz
ZSA9IG1ha2VVbmlxdWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24u
Y3BwCmluZGV4IGM4NGFiOTc1MWExNDU5ODlhMDM3N2ZhZDFmNGE3NWU4ZjE3ZTJiMjQuLjYwNTIz
MmNkMWE5OWM5MjMzZDlhZDEwNDliYTMwN2UyMTc3MzhmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0yNDQsOCArMjQ0LDggQEAg
c3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1
YmplY3QoY29uc3QgU3RyaW5nJiBzdWIKICAgICBpZiAoIWlzRWxldmF0aW9uR29vZCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAg
IGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1i
ZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhS
VEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlz
dFIgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwog
CiAgICAgLy8gTG9hZCBjb252b2x1dGlvbiBrZXJuZWxzIGZyb20gSFJURiBmaWxlcy4KICAgICBp
bnQgaW50ZXJwb2xhdGVkSW5kZXggPSAwOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0
IFN0cmluZyYgc3ViCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2Vy
bmVsTGlzdFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RS
KSwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2
YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxl
dmF0aW9uKiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjIsIGZs
b2F0IHgsIGZsb2F0IHNhbXBsZVJhdGUpCkBAIC0yODUsOCArMjg1LDggQEAgc3RkOjp1bmlxdWVf
cHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1Ns
aWNlcyhIUlRGRWwKICAgICAgICAgCiAgICAgQVNTRVJUKHggPj0gMC4wICYmIHggPCAxLjApOwog
ICAgIAotICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxM
aXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAgIGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAg
IGF1dG8ga2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRv
dGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIgPSBtYWtlVW5pcXVlPEhSVEZLZXJu
ZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAgICAgSFJURktlcm5lbExpc3QqIGtl
cm5lbExpc3RMMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0TCgpOwogICAgIEhSVEZLZXJu
ZWxMaXN0KiBrZXJuZWxMaXN0UjEgPSBocnRmRWxldmF0aW9uMS0+a2VybmVsTGlzdFIoKTsKQEAg
LTMwMiw3ICszMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZh
dGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbAogICAgIC8vIEludGVycG9s
YXRlIGVsZXZhdGlvbiBhbmdsZS4KICAgICBkb3VibGUgYW5nbGUgPSAoMS4wIC0geCkgKiBocnRm
RWxldmF0aW9uMS0+ZWxldmF0aW9uQW5nbGUoKSArIHggKiBocnRmRWxldmF0aW9uMi0+ZWxldmF0
aW9uQW5nbGUoKTsKICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0
aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIHN0YXRpY19j
YXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRG
RWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIHN0
YXRpY19jYXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBIUlRGRWxldmF0
aW9uOjpnZXRLZXJuZWxzRnJvbUF6aW11dGgoZG91YmxlIGF6aW11dGhCbGVuZCwgdW5zaWduZWQg
YXppbXV0aEluZGV4LCBIUlRGS2VybmVsKiAma2VybmVsTCwgSFJURktlcm5lbCogJmtlcm5lbFIs
IGRvdWJsZSYgZnJhbWVEZWxheUwsIGRvdWJsZSYgZnJhbWVEZWxheVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKaW5kZXggMmE5NTkwNDU1MjE4NDNh
MTUxNjJlY2M4ZTMyMTE3MzllMDcwNTNmNy4uZWY3NTJjM2MwMWJlMzllY2RiN2VmNjRkZjQzOTA5
MjY2ZDZlZDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2
YXRpb24uaApAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEhSVEZF
bGV2YXRpb24gY29udGFpbnMgYWxsIG9mIHRoZSBIUlRGS2VybmVscyAob25lIGxlZnQgZWFyIGFu
ZCBvbmUgcmlnaHQgZWFyIHBlciBhemltdXRoIGFuZ2xlKSBmb3IgYSBwYXJ0aWN1bGFyIGVsZXZh
dGlvbi4KIAotY2xhc3MgSFJURkVsZXZhdGlvbiB7CitjbGFzcyBIUlRGRWxldmF0aW9uIGZpbmFs
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShIUlRGRWxldmF0aW9uKTsKIHB1YmxpYzoKICAgICBIUlRGRWxldmF0aW9uKHN0ZDo6dW5pcXVl
X3B0cjxIUlRGS2VybmVsTGlzdD4ga2VybmVsTGlzdEwsIHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2Vy
bmVsTGlzdD4ga2VybmVsTGlzdFIsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCmluZGV4IGVkZjZj
NjBkMGRiODE0ZDk0YzBmNzFiNjMwNmU0MzgyNjUzYWE0YzcuLjM3NTUyMTZhZTI4N2E3MWM3NDI5
MjlhNTNjOTU5MDk2ZGIxZGJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZLZXJuZWwuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEhSVEZLZXJuZWw6OkhSVEZLZXJuZWwo
QXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmZ0RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZG
VEZyYW1lPihmZnRTaXplKTsKKyAgICBtX2ZmdEZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4o
ZmZ0U2l6ZSk7CiAgICAgbV9mZnRGcmFtZS0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNlLCB0
cnVuY2F0ZWRSZXNwb25zZUxlbmd0aCk7CiB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzaXplX3Qg
SFJURktlcm5lbDo6ZmZ0U2l6ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0NoYW5u
ZWw+IEhSVEZLZXJuZWw6OmNyZWF0ZUltcHVsc2VSZXNwb25zZSgpCiB7Ci0gICAgYXV0byBjaGFu
bmVsID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CisgICAgYXV0
byBjaGFubmVsID0gbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CiAgICAgRkZU
RnJhbWUgZmZ0RnJhbWUoKm1fZmZ0RnJhbWUpOwogCiAgICAgLy8gQWRkIGxlYWRpbmcgZGVsYXkg
YmFjayBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQ
YW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAppbmRl
eCBiZjVlZWZhYTVlNGM2ZDJiZjE3YTk5MDAzMDc0MTY1YzZlNDMzYWQ3Li5jYWFhNDQxZjFkMTRl
YTM2ZjVlOTY4YWQ4YTc3ZDBiN2E2MGRkOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURlBhbm5lci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSFJURlBhbm5lciA6IHB1YmxpYyBQYW5uZXIgeworY2xhc3MgSFJURlBhbm5l
ciBmaW5hbCA6IHB1YmxpYyBQYW5uZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEhSVEZQYW5u
ZXIoZmxvYXQgc2FtcGxlUmF0ZSwgSFJURkRhdGFiYXNlTG9hZGVyKik7CiAgICAgdmlydHVhbCB+
SFJURlBhbm5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
TXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXggYmJiZjE2NDQ2MjA3NjM5ZTM1Y2Y3OTU2
NDgyODI2M2QzZTkzNzNhZS4uNWJmOWFiOTVkMDE1NzUwMDgxNWQ2MTMxYWIxZDg5NzQxYmUxZmUy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIE11bHRpQ2hhbm5lbFJlc2FtcGxl
cjo6TXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVt
YmVyCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAgICBmb3Ig
KHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5l
bHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFw
cGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yKSk7CiB9CiAKIHZvaWQg
TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHByb3Zp
ZGVyLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxl
ci5oCmluZGV4IDQ0MTc1NDc2MDU4M2QyODAzNGE0NWIzYmQ4YTYxODhkNDY1YTJmMzYuLjYxNDZl
OTI1YzA2YTJkZGE3NmNiNDEyZjBjYzFlMGEyNDZhYzgwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CiAgICAgCi1j
bGFzcyBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgeworY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1wbGVy
IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBl
eHBsaWNpdCBNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1Bhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIu
Y3BwCmluZGV4IGFjNzI4NmFjOWEwNjBiNzUzNGNiMmVkZTkyMWQ2Y2JkNzdhOTdhODguLjQwYjlk
MDFkYzE4NGI5NmQ1ZGYzYWI5YjdmNDA5NDYzYTk3ODM0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGFubmVyLmNwcApAQCAtNDMsMTEgKzQzLDExIEBAIHN0ZDo6dW5pcXVlX3B0
cjxQYW5uZXI+IFBhbm5lcjo6Y3JlYXRlKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwsIGZsb2F0IHNh
bXBsZVJhdGUsCiAKICAgICBzd2l0Y2ggKG1vZGVsKSB7CiAgICAgY2FzZSBQYW5uaW5nTW9kZWxU
eXBlOjpFcXVhbHBvd2VyOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVxdWFs
UG93ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOworICAgICAgICBwYW5uZXIgPSBtYWtlVW5pcXVlPEVx
dWFsUG93ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
UGFubmluZ01vZGVsVHlwZTo6SFJURjoKLSAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxIUlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRlcik7CisgICAgICAgIHBhbm5l
ciA9IG1ha2VVbmlxdWU8SFJURlBhbm5lcj4oc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRleCBlMDIzOTRhYTViMTQ5Y2Qx
NTk2OTEyYTI1NjgxZmY1ZWE0NGFkOGQyLi5jOGJkNjRhNDFiZjYxMmU4OWUzYzIxNGZhMjJkY2M1
OTk0OGU1NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9s
Q29tbWFuZFR5cGUKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGll
bnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1NZWRpYVNlc3Npb24+
KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1NZWRpYVNlc3Npb24+KGNs
aWVudCk7CiB9CiAKIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYi5jcHAKaW5kZXggMzA0M2ZjOGEwNGRmMGQ3N2MxMGFhMDM3OWJkMjZhMzlk
NDZjZTZiYS4uOGE2NzU1YzU0YWQwMGEzYTgxMDE4NzQyMTYyY2NkMDc0ZGUxMGUwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAg
dm9pZCBSZXZlcmI6OmluaXRpYWxpemUoQXVkaW9CdXMqIGltcHVsc2VSZXNwb25zZUJ1ZmZlciwg
c2l6ZV90IHJlbmRlclNsaWNlU2l6ZSwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVJl
c3BvbnNlQ2hhbm5lbHM7ICsraSkgewogICAgICAgICBBdWRpb0NoYW5uZWwqIGNoYW5uZWwgPSBp
bXB1bHNlUmVzcG9uc2VCdWZmZXItPmNoYW5uZWwoaSk7CiAKLSAgICAgICAgbV9jb252b2x2ZXJz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYkNvbnZvbHZlcj4oY2hhbm5lbCwgcmVuZGVy
U2xpY2VTaXplLCBtYXhGRlRTaXplLCBjb252b2x2ZXJSZW5kZXJQaGFzZSwgdXNlQmFja2dyb3Vu
ZFRocmVhZHMpKTsKKyAgICAgICAgbV9jb252b2x2ZXJzLmFwcGVuZChtYWtlVW5pcXVlPFJldmVy
YkNvbnZvbHZlcj4oY2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBtYXhGRlRTaXplLCBjb252b2x2
ZXJSZW5kZXJQaGFzZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsKIAogICAgICAgICBjb252b2x2
ZXJSZW5kZXJQaGFzZSArPSByZW5kZXJTbGljZVNpemU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmIuaAppbmRleCAzZTI1NzZiMzU3NTdkYmEyNDcwYzhlYjdkYTNjMTdi
ZWViYmZkY2VkLi4yMzRlMzFkYWViYmQ0ZGRhYTM2YTFlOTA1MzExZWI5OTIyZmFhNjdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFz
cyBBdWRpb0J1czsKICAgICAKIC8vIE11bHRpLWNoYW5uZWwgY29udm9sdXRpb24gcmV2ZXJiIHdp
dGggY2hhbm5lbCBtYXRyaXhpbmcgLSBvbmUgb3IgbW9yZSBSZXZlcmJDb252b2x2ZXIgb2JqZWN0
cyBhcmUgdXNlZCBpbnRlcm5hbGx5LgogCi1jbGFzcyBSZXZlcmIgeworY2xhc3MgUmV2ZXJiIGZp
bmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIHsg
TWF4RnJhbWVTaXplID0gMjU2IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCmluZGV4IDUxMmI2YWRlMzQxYTI4
NTY5NzJlZTNmN2JjYjIxMTY2YmI3MjFhMWYuLmE2MjgzNWY5YzBkN2Q3NDNjOWU5MjdjZWRlMmQ2
YTFkYTQ1NTg0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciBpcyBhIGNpcmN1bGFyIGRl
bGF5IGJ1ZmZlciB3aXRoIG9uZSBjbGllbnQgcmVhZGluZyBmcm9tIGl0IGFuZCBtdWx0aXBsZSBj
bGllbnRzCiAvLyB3cml0aW5nL2FjY3VtdWxhdGluZyB0byBpdCBhdCBkaWZmZXJlbnQgZGVsYXkg
b2Zmc2V0cyBmcm9tIHRoZSByZWFkIHBvc2l0aW9uLiAgVGhlIHJlYWQgb3BlcmF0aW9uIHdpbGwg
emVybyB0aGUgbWVtb3J5CiAvLyBqdXN0IHJlYWQgZnJvbSB0aGUgYnVmZmVyLCBzbyBpdCB3aWxs
IGJlIHJlYWR5IGZvciBhY2N1bXVsYXRpb24gdGhlIG5leHQgdGltZSBhcm91bmQuCi1jbGFzcyBS
ZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgeworY2xhc3MgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVy
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIoc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCmluZGV4IDE0
NWRmODFlMmE2YmEyYzJkYWE5YmI0MWU2YjVjYWJhZjM4NWY5MWMuLmE5YzkzNWMxYTI4NWFiMTM2
MmQ4ZmYxZGY4Y2ViYTVhN2U1YWE3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBSZXZlcmJDb252
b2x2ZXI6OlJldmVyYkNvbnZvbHZlcihBdWRpb0NoYW5uZWwqIGltcHVsc2VSZXNwb25zZSwgc2l6
ZV90IHJlbmRlclNsaQogCiAgICAgICAgIGJvb2wgdXNlRGlyZWN0Q29udm9sdmVyID0gIXN0YWdl
T2Zmc2V0OwogCi0gICAgICAgIGF1dG8gc3RhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYkNv
bnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90YWxSZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90YWxM
YXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VTaXplLCBmZnRTaXplLCByZW5kZXJQaGFzZSwgcmVu
ZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRpb25CdWZmZXIsIHVzZURpcmVjdENvbnZvbHZlcik7
CisgICAgICAgIGF1dG8gc3RhZ2UgPSBtYWtlVW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdlPihy
ZXNwb25zZSwgdG90YWxSZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFnZU9m
ZnNldCwgc3RhZ2VTaXplLCBmZnRTaXplLCByZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXplLCAm
bV9hY2N1bXVsYXRpb25CdWZmZXIsIHVzZURpcmVjdENvbnZvbHZlcik7CiAKICAgICAgICAgYm9v
bCBpc0JhY2tncm91bmRTdGFnZSA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCmluZGV4IDViODE5ZTFhM2U2ZjRmYjFmOGRiMGM1
OTY5NzI2MmFhYzA5YzZiZGUuLjMyMDBiNDVlYThkZjdjMjFjZTZmYTM3ZTA4YmIyNzkxZjhhZTVm
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5oCkBAIC00Myw4ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9D
aGFubmVsOwogCi1jbGFzcyBSZXZlcmJDb252b2x2ZXIgeworY2xhc3MgUmV2ZXJiQ29udm9sdmVy
IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSZXZlcmJDb252b2x2ZXIpOwogcHVibGljOgogICAgIC8vIG1heEZGVFNpemUgY2Fu
IGJlIGFkanVzdGVkIChmcm9tIHNheSAyMDQ4IHRvIDMyNzY4KSBkZXBlbmRpbmcgb24gaG93IG11
Y2ggcHJlY2lzaW9uIGlzIG5lY2Vzc2FyeS4KICAgICAvLyBGb3IgY2VydGFpbiB0d2Vha3kgZGUt
Y29udm9sdmluZyBhcHBsaWNhdGlvbnMgdGhlIHBoYXNlIGVycm9ycyBhZGQgdXAgcXVpY2tseSBh
bmQgbGVhZCB0byBub24tc2Vuc2ljYWwgcmVzdWx0cyB3aXRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKaW5kZXggMGZk
ZTQyMWFmMmY4MmZkNDg3NGQ5NGY2YWYxZDYzNDcyMzljNjU2ZS4uNGZmOTUzYjI2MDQ5MTdkMzQ1
MjAzOTQwNWI2NWRlMmJkNWExZWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcApAQCAtNTUsMTYgKzU1LDE2IEBA
IFJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZShjb25zdCBmbG9hdCog
aW1wdWxzZVJlc3BvbnNlLCBzaXplX3QsCiAgICAgQVNTRVJUKGFjY3VtdWxhdGlvbkJ1ZmZlcik7
CiAKICAgICBpZiAoIW1fZGlyZWN0TW9kZSkgewotICAgICAgICBtX2ZmdEtlcm5lbCA9IHN0ZDo6
bWFrZV91bmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOworICAgICAgICBtX2ZmdEtlcm5lbCA9IG1h
a2VVbmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOwogICAgICAgICBtX2ZmdEtlcm5lbC0+ZG9QYWRk
ZWRGRlQoaW1wdWxzZVJlc3BvbnNlICsgc3RhZ2VPZmZzZXQsIHN0YWdlTGVuZ3RoKTsKLSAgICAg
ICAgbV9mZnRDb252b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVENvbnZvbHZlcj4oZmZ0U2l6
ZSk7CisgICAgICAgIG1fZmZ0Q29udm9sdmVyID0gbWFrZVVuaXF1ZTxGRlRDb252b2x2ZXI+KGZm
dFNpemUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghc3RhZ2VPZmZzZXQpOwogICAg
ICAgICBBU1NFUlQoc3RhZ2VMZW5ndGggPD0gZmZ0U2l6ZSAvIDIpOwogCi0gICAgICAgIG1fZGly
ZWN0S2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZmdFNpemUgLyAy
KTsKKyAgICAgICAgbV9kaXJlY3RLZXJuZWwgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4o
ZmZ0U2l6ZSAvIDIpOwogICAgICAgICBtX2RpcmVjdEtlcm5lbC0+Y29weVRvUmFuZ2UoaW1wdWxz
ZVJlc3BvbnNlLCAwLCBzdGFnZUxlbmd0aCk7Ci0gICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXJlY3RDb252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CisgICAg
ICAgIG1fZGlyZWN0Q29udm9sdmVyID0gbWFrZVVuaXF1ZTxEaXJlY3RDb252b2x2ZXI+KHJlbmRl
clNsaWNlU2l6ZSk7CiAgICAgfQogICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFsbG9jYXRlKHJlbmRl
clNsaWNlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlclN0YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXJTdGFnZS5oCmluZGV4IGEwNDkwOTcwMzQwYWIzYjMzNjAwYjA4OWU1OTg0
NzRmYjNkNDU1ZTYuLjNjMDNiZTM0MWIzYjdkNjQ2MjFkYzgwMzgxNjY5MzYwZjRkYjRjOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBEaXJlY3RDb252b2x2ZXI7CiAgICAgCiAv
LyBBIFJldmVyYkNvbnZvbHZlclN0YWdlIHJlcHJlc2VudHMgdGhlIGNvbnZvbHV0aW9uIGFzc29j
aWF0ZWQgd2l0aCBhIHN1Yi1zZWN0aW9uIG9mIGEgbGFyZ2UgaW1wdWxzZSByZXNwb25zZS4KIC8v
IEl0IGluY29ycG9yYXRlcyBhIGRlbGF5IGxpbmUgdG8gYWNjb3VudCBmb3IgdGhlIG9mZnNldCBv
ZiB0aGUgc3ViLXNlY3Rpb24gd2l0aGluIHRoZSBsYXJnZXIgaW1wdWxzZSByZXNwb25zZS4KLWNs
YXNzIFJldmVyYkNvbnZvbHZlclN0YWdlIHsKK2NsYXNzIFJldmVyYkNvbnZvbHZlclN0YWdlIGZp
bmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyByZW5k
ZXJQaGFzZSBpcyB1c2VmdWwgdG8ga25vdyBzbyB0aGF0IHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBw
cmUgdmVyc3VzIHBvc3QgZGVsYXkgc28gdGhhdCBzdGFnZXMgd2lsbCBwZXJmb3JtCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAppbmRleCBi
YjA2ZTRlZWQ2MzNmMGU3YzY4MmUyMGU0ZTZhNTcyYWExZmFhOTY2Li5hZjllZDAwZDczM2U4NDJi
NmVkM2E2NDc0ODU0MjBkM2M3Njc3NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKQEAgLTM0LDcgKzM0LDggQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gUmV2ZXJiSW5wdXRCdWZmZXIgaXMgdXNlZCB0byBidWZmZXIgaW5w
dXQgc2FtcGxlcyBmb3IgZGVmZXJyZWQgcHJvY2Vzc2luZyBieSB0aGUgYmFja2dyb3VuZCB0aHJl
YWRzLgotY2xhc3MgUmV2ZXJiSW5wdXRCdWZmZXIgeworY2xhc3MgUmV2ZXJiSW5wdXRCdWZmZXIg
ZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFJldmVyYklucHV0QnVmZmVyKHNpemVfdCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKaW5kZXggMmZjZDg5ZjdlY2EzNzU4NTg2
MzFhOWIyNzY1YTEwZDIwMWIzNDFjNy4uYzEzMmY1ZDk3NjJjNzU2NmIyMzI1YzA2NGIyOGRlOGI2
ZTM5MDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jl
c2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBs
ZXIuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFNpbmNSZXNh
bXBsZXIgaXMgYSBoaWdoLXF1YWxpdHkgc2FtcGxlLXJhdGUgY29udmVydGVyLgogCi1jbGFzcyBT
aW5jUmVzYW1wbGVyIHsKK2NsYXNzIFNpbmNSZXNhbXBsZXIgZmluYWwgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAgIC8vIHNjYWxlRmFjdG9yID09IHNvdXJj
ZVNhbXBsZVJhdGUgLyBkZXN0aW5hdGlvblNhbXBsZVJhdGUKICAgICAvLyBrZXJuZWxTaXplIGNh
biBiZSBhZGp1c3RlZCBmb3IgcXVhbGl0eSAoaGlnaGVyIGlzIGJldHRlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgKaW5kZXggMjY2YmNhZjk4MGQ3MjZmYTJmNjM3
Y2ZlOTNhNWQ0YzM4YjI0ZWUwNi4uNjc1ZWU0YWQwYzQ0NjdjZDFkZDZkMWQ1MTYxMWU3N2I5OGM0
YzYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgKQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBVcFNhbXBsZXIgdXAtc2FtcGxl
cyB0aGUgc291cmNlIHN0cmVhbSBieSBhIGZhY3RvciBvZiAyeC4KIAotY2xhc3MgVXBTYW1wbGVy
IHsKK2NsYXNzIFVwU2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXBTYW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaAppbmRleCA4MzFkZTkwOTNi
MDA1NjE2YjRiZDc3ZWE3YjA3NzhjMzdkYWE3YjZlLi4wMmZmYWNkNWVhY2E3Y2UyNzU4OTJiZThk
NjQzOTRjNzMzZGM3ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9aZXJvUG9sZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xl
LmgKQEAgLTMzLDcgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBaZXJvUG9sZSBp
cyBhIHNpbXBsZSBmaWx0ZXIgd2l0aCBvbmUgemVybyBhbmQgb25lIHBvbGUuCiAKLWNsYXNzIFpl
cm9Qb2xlIHsKK2NsYXNzIFplcm9Qb2xlIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBaZXJvUG9sZSgpCiAgICAgICAgIDogbV96ZXJvKDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZl
ckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oCmluZGV4IDg2YjY1YTIyNTNhZjFhZWIyYTFjYTljYWEzNjY3ODZjZDdkNjU1MjAu
Ljc2YjViYzc1MWQ2MDU4ZjE4NzcxYmE5NTUyYWFjNDZjNmUyYWQ2ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlz
dC5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbjsKIAogY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0IDogcHVibGljIFBs
YXRmb3JtQXVkaW9EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCA1YmY4ZmRhNmIyOTEyYjE4ZjExOTBkY2JlNzA4
MmJmNjg0YmVlOThmLi4xYTU0OTVmZDc2NGQ5YzNjYzZlZGI1ODFmYTQ4MGVhZWFkMTQ1OWJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC02Miw3ICs2Miw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpj
cmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1
LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyPihjYWxsYmFjaywgc2Ft
cGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4IDhhZjg3N2VjMmM0Y2Ew
YWJkMzA3NDgzNWY1NGIzNGFlYmYwNDMzYTIuLjRiZGU3ZTQxZTJiNjQzN2NkMGZmNzI1ZTRkMDc5
ZDY4Zjg5ZTdkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRp
b0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQog
ICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikg
LSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9TPihjYWxsYmFjaywgc2FtcGxlUmF0
ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9u
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklP
Uy5tbQppbmRleCBkYzZjOGJjY2UzNjlkMDZhZWRjOGZkMzMzYzczOGMwYmU5NTc1ZGQ0Li42Mzk4
MjQwYmJkOGQ5NjczMDJkZjdlOWVjZmY0MDc1MDJkYTZlMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTU5LDYg
KzU5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZShBdWRpb1Nlc3Npb246OkNh
dGVnb3J5VHlwZSBjYXRlZ29yeSkKICNlbmRpZgogCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBdWRpb1Nlc3Np
b25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiopOwogICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBl
IG1fY2F0ZWdvcnlPdmVycmlkZTsKQEAgLTcxLDcgKzcyLDcgQEAgQXVkaW9TZXNzaW9uUHJpdmF0
ZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKQogfQogCiBBdWRpb1Nlc3Npb246
OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nl
c3Npb25Qcml2YXRlPih0aGlzKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vz
c2lvblByaXZhdGU+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggNzY0YTM0
N2Y5ODI5ZTFlODQ3NWJkMmVhMTI4MGFhMTc1MDI2ZWNmYy4uOWZlNjRiYWFhNDc4NGZlY2RhYjNk
NmRkYjVlMjc4MzgxZTFlMDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtNjEsNyArNjEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxz
ICE9IDIpCiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwg
JXUsICVmKSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNrLCBz
YW1wbGVSYXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVS
YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1NhbXBsZURhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCmluZGV4IDc3ZDQzMTY1NjY5OTBlOTAxYjkyMGJmNzc4
ZDk2OWU5ZjE4ZjE4OGEuLjQxYWZlMzlmMjMyYWU1ODgwODYwZjA4NGQ1NTZjYjRhNWQ4YWUyNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBs
ZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIE9TU3RhdHVzIEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZTo6c2V0SW5wdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uJiBmCiB7CiAgICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAg
ICBtX2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbj4oZm9ybWF0KTsKKyAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKICAgICBpZiAobV9vdXRwdXREZXNjcmlw
dGlvbikKICAgICAgICAgcmV0dXJuIHNldHVwQ29udmVydGVyKCk7CiAKQEAgLTEyMCw5ICsxMjAs
OSBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdChjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mCiAgICAgQVNTRVJUKG1faW5wdXREZXNjcmlwdGlv
bik7CiAgICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX291dHB1
dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+
KGZvcm1hdCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOwogICAgIGlmICghbV9yaW5nQnVmZmVyKQotICAgICAg
ICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAg
ICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAKICAgICBtX3Jp
bmdCdWZmZXItPmFsbG9jYXRlKGZvcm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1T
YW1wbGVDb3VudCkpOwogICAgIG1fc2NyYXRjaEJ1ZmZlciA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlz
dDo6Y3JlYXRlKG1fb3V0cHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbWF4
aW11bVNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKaW5kZXggN2Y2ZWY5ZDMzZGIxZmI0N2U3Y2YxNGM1
OTA0YTQ2MTEyYjE1MjIzMi4uY2MwNGYwYmUzMDk3NDk4YjgzNjZlOTI0MjA3M2VjZTNlMTk3NWFi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vz
c2lvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2Vzc2lvbk1hYy5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0
ZSB7CiB9OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQorICAgIDog
bV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmlu
Z0J1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZl
ci5oCmluZGV4IDE4YTI2YWI2ZGM1YzhkZDAxMjUyZGIwNjQ2ZDRmNWI5YjQ3YjZmZjUuLjUxNGZm
ODZmOWQyY2RkYTQ1ZWE0ZmExNjI2ZjQwOTdkNjNhNTExMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAg
Y2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CiB9OwogCiBjbGFzcyBDQVJpbmdCdWZmZXJTdG9y
YWdlVmVjdG9yIDogcHVibGljIENBUmluZ0J1ZmZlclN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIH5DQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKCkg
PSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZERlY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJD
Ri5jcHAKaW5kZXggYjk4MDNiZmEwMjMyNDM1N2MwZGZlMDQ3MzEzZDJjM2VjMzA0Y2I5Mi4uN2E0
N2Y1NjA4YmJiNmRlOWQzNzczYjE3ZTk4ZTQ3NjRhMjQyMjJjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVj
b2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29kZXJDRj4oZGF0YSwgc2l6ZSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyQ0Y+KGRhdGEsIHNpemUpOwogfQogCiBLZXll
ZERlY29kZXJDRjo6S2V5ZWREZWNvZGVyQ0YoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5k
ZXggMWE2MjdlYTAwYjkyY2JhYTZjZjdjMzU1ZDVlNDQ1ZWM0ODYxYTQxMi4uNDQ3M2VjMjhkMDRj
NTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5j
b2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyQ0Y+KCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyQ0Y+KCk7CiB9CiAKIHN0YXRpYyBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlRGljdGlvbmFyeSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJD
Ri5jcHAKaW5kZXggYjY4OTIyODA1ZTVkMzczZGU3ZjBhZWQ3ODkwODI1YWNjY2MxMjAzOS4uMDdh
NDVjYWQ3OGI2ZDQzN2ZhYTg0MjUyNjk5YzBkNDg2ZDc4ZWQ2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApAQCAt
NTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cFBvd2VyT2JzZXJ2ZXIoKQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBzdGF0aWMgUG93ZXJPYnNlcnZlciogcG93ZXJPYnNlcnZlcjsKICAgICBp
ZiAoIXBvd2VyT2JzZXJ2ZXIpCi0gICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOworICAgICAg
ICBwb3dlck9ic2VydmVyID0gbWFrZVVuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVk
VGltZXIpLnJlbGVhc2UoKTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGlj
IGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gZmFsc2U7CiAgICAg
aWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0KaW5kZXggNDcwNWVkMTVhNWM1OGM0MTFjNDlmMzRmYWY3M2VlYjMwN2Iy
Yzk0OC4uYWI5NWZmZDBmODcxZWMwNDYwOGQ1MDk2NDZiNDNlM2QwMzQ5ZjUxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBOZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0
ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6Omlu
aXRpYWxpemUoY29uc3QgVVJMKiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4
IGFlMGJkMjA5Y2NkNmYzMTdjOTE5MzI1YTE2YTE4YTk5Y2QxNTcyZTQuLjBkMmE2MjE4NmI1YTU0
ZTJiODUxZmY5NmQ1MjgxMDFmODQ2NmY0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1t
CkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmVu
YWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+
IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgY2FuSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xs
Q29udHJvbGxlci5tbQppbmRleCBlODM2OWM2ZTUwMTZlMjNjZjg3M2I5NTM3ZDJhZmI0ZjBiYzY4
NTIyLi44ZmUzOGFkMGNjZTJmZDU0MmQyOTcwMTdmZGEyZDFjYjM1NWI3NzI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTYy
MCw3ICs2MjAsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2lu
dHMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcgogICAgICAgICBpZiAoc25hcFBv
aW50cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9zY3JvbGxT
bmFwU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwor
ICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGU+KCk7CiAgICAgfQogCiAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpICYmIG1fc2Ny
b2xsU25hcFN0YXRlLT5zbmFwT2Zmc2V0c0ZvckF4aXMob3RoZXJTY3JvbGxFdmVudEF4aXMoYXhp
cykpLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCA1MDNmOTdi
OTIwMThkYTg3YzI0ODg5MWIyMjY3OWFiYjcwMDViMzAwLi45NmM4NTEyOTM1YWI5YjY5OGU4OTg1
NTE2M2JiNmQyMmFjOWI4MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0z
MDMsNyArMzAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IENETUZhY3RvcnlDbGVh
cktleTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGUKICNlbHNlCiAgICAgQVNTRVJU
KHN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpOwogI2VuZGlmCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PENETVByaXZhdGVDbGVhcktleT4oKTsKIH0KIAogYm9vbCBDRE1GYWN0b3J5Q2xlYXJLZXk6OnN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmgKaW5kZXggZDQ3MzA0Yzk1YjI2ZWYyMDRmNWRhNGFkY2JiOGEwODY0ZGUxOGJiMy4u
MGI5MTA2NDljYTRhNDdhOTE1ZDU0OGM5ZDk0YWZmZjMzNTM1OTI2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENETUZhY3RvcnlDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ0RNRmFjdG9yeUNs
ZWFyS2V5JiBzaW5nbGV0b24oKTsKIApAQCAtNTQsNiArNTUsNyBAQCBjbGFzcyBDRE1GYWN0b3J5
Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CiB9OwogCiBjbGFzcyBDRE1Qcml2
YXRlQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUNsZWFyS2V5KCk7CiAgICAgdmly
dHVhbCB+Q0RNUHJpdmF0ZUNsZWFyS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVw
YWRQcm92aWRlci5tbQppbmRleCBmNzIwY2ZkMzM0M2Y5YmFkMzNhNDkxOWE3OGY4NjZmOWQ4NjJh
MGFkLi41YTZlYjQwNDM5ZWY1OTA1NzJhN2MyOWVmYzMzOGQ5MmYyMzljNWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29j
b2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgdm9p
ZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRpZENvbm5lY3QoR0ND
b250cm9sbGVyICpjb250cm9sbGUKICAgICBMT0coR2FtZXBhZCwgIkdhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyIGNvbnRyb2xsZXIgJXAgYWRkZWQiLCBjb250cm9sbGVyKTsKIAogICAgIHVu
c2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOwotICAgIGF1dG8g
Z2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPihjb250cm9s
bGVyLCBpbmRleCk7CisgICAgYXV0byBnYW1lcGFkID0gbWFrZVVuaXF1ZTxHYW1lQ29udHJvbGxl
ckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKIAogICAgIGlmIChtX2dhbWVwYWRWZWN0b3Iu
c2l6ZSgpIDw9IGluZGV4KQogICAgICAgICBtX2dhbWVwYWRWZWN0b3IuZ3JvdyhpbmRleCArIDEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5o
CmluZGV4IDE1ZjA0YzcwOGU5MDA3YmI0ZGFkZWU1NDM1YzM1N2YwMmY1MzFjOTMuLmEyNTIzNGZi
ODc1YTc1MWM2M2MzN2JhNmE1Y2VlN2Q0NTM0ZDVhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEhJREdhbWVwYWRFbGVtZW50IHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgSElER2FtZXBhZEVsZW1lbnQoZG91Ymxl
IHRoZU1pbiwgZG91YmxlIHRoZU1heCwgSU9ISURFbGVtZW50UmVmIGVsZW1lbnQpCiAgICAgICAg
IDogbWluKHRoZU1pbikKICAgICAgICAgLCBtYXgodGhlTWF4KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAK
aW5kZXggNTc0MzkxYjVjMTExYTMyYmU5MTI1Y2E2Y2UwNjAwZjVkNjM4MjI1Ny4uNmQxNGI2YjIx
NjEwYjg2Y2U0YzAwMTNlNTA5MTFiODhmOTVlMWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElP
SElERGV2aWNlUmVmIGRldmljZSkKICAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRl
ciBkZXZpY2UgJXAgYWRkZWQiLCBkZXZpY2UpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRl
eEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVw
YWQ+IGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBnYW1lcGFkID0gbWFrZVVuaXF1ZTxI
SURHYW1lcGFkPihkZXZpY2UsIGluZGV4KTsKIAogICAgIGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6
ZSgpIDw9IGluZGV4KQogICAgICAgICBtX2dhbWVwYWRWZWN0b3IuZ3JvdyhpbmRleCArIDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJH
ZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVy
R2VuZXJpYy5jcHAKaW5kZXggYTRhMzBiNTJhYmU0OGFmODUwZGM3Yzc0N2EzYmNkZTFkNTFmZGE1
Zi4uMGU1OTcyMzIxYjVmNzNmNTcyYmQ3OTY1ODgxMWYwMDNhOTVlZDQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEtleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25h
cnkgewogICAgIHVzaW5nIE5vZGUgPSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgYm9vbCwgdWlu
dDMyX3QsIHVpbnQ2NF90LCBpbnQzMl90LCBpbnQ2NF90LCBmbG9hdCwgZG91YmxlLCBTdHJpbmcs
IHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5Pj47CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtl
eSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8Tm9kZT4oc3Rk
Ojpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CisgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBrZXks
IFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBtYWtlVW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2Fy
ZDxUPih2YWx1ZSkpKTsgfQogICAgIE5vZGUmIGdldChjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1
cm4gKm1fbWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6CkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRp
YyBib29sIHJlYWRTaW1wbGVWYWx1ZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVy
LCBLZXllZERlY29kZXJHZW5lCiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVk
RGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29kZXJHZW5lcmljPihkYXRhLCBzaXpl
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJHZW5lcmljPihkYXRhLCBzaXpl
KTsKIH0KIAogS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTg2LDcgKzg2LDcgQEAgS2V5ZWREZWNvZGVy
R2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKICAgICBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlIHR5cGU7CiAgICAgU3RyaW5nIGtl
eTsKIAotICAgIG1fcm9vdERpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+
KCk7CisgICAgbV9yb290RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAg
ICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobV9yb290RGljdGlvbmFyeS5nZXQoKSk7CiAKICAg
ICBib29sIG9rID0gdHJ1ZTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBLZXllZERlY29kZXJHZW5lcmlj
OjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
ICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGF1dG8qIGN1cnJlbnREaWN0aW5hcnkgPSBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCk7Ci0gICAg
ICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+
KCk7CisgICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25h
cnk+KCk7CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFy
eS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50RGljdGluYXJ5LT5hZGQoa2V5LCBXVEZNb3Zl
KG5ld0RpY3Rpb25hcnkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2LDEzICsxNTYsMTMg
QEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIG9rID0gcmVhZFN0cmluZyhkZWNvZGVy
LCBrZXkpOwogICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5PigpOworICAg
ICAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXk+KCk7CiAgICAgICAgICAg
ICBtX2FycmF5U3RhY2suYXBwZW5kKG5ld0FycmF5LmdldCgpKTsKICAgICAgICAgICAgIG1fZGlj
dGlvbmFyeVN0YWNrLmxhc3QoKS0+YWRkKGtleSwgV1RGTW92ZShuZXdBcnJheSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmlj
OjpUeXBlOjpCZWdpbkFycmF5RWxlbWVudDogewotICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9u
YXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgYXV0byBu
ZXdEaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgICAgICAgICAgbV9k
aWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25hcnkuZ2V0KCkpOwogICAgICAgICAgICAg
bV9hcnJheVN0YWNrLmxhc3QoKS0+YXBwZW5kKFdURk1vdmUobmV3RGljdGlvbmFyeSkpOwogICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCAyZjg0MTA0NzQ2Mzk1NThmMjk1ZTgx
YTUxNzE5YTg3MzRiMzJkNThhLi4yMWNjMWViZTRhOTAxYTEzYzc0NDAzZGMwMWNmMmZjODE4MTMw
MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIo
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckdlbmVyaWM+KCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJpYz4oKTsKIH0KIAogdm9p
ZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9y
R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5jcHAKaW5kZXggN2FlNjVjNWE4ZDMwOWUzZGVlZjUzY2U4Y2YxZTMwMjQyNmQy
N2MxNC4uMjA4YWY3Yjg0NzllY2FlZjU1MzBjY2M1NTdiNzM2ZWJhYmNiY2I4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljLmNwcApAQCAtNDQsMTQgKzQ0LDE0IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9s
bENhcHR1cmVUaHJlc2hvbGQgeyAxNTBfbXMgfTsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFu
aW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvckdlbmVy
aWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRv
ckdlbmVyaWM+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpT
Y3JvbGxBbmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogICAg
IDogU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX292ZXJsYXlTY3JvbGxi
YXJBbmltYXRpb25UaW1lcigqdGhpcywgJlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNj
cm9sbGJhckFuaW1hdGlvblRpbWVyRmlyZWQpCiB7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPihtX3Njcm9sbGFibGVBcmVh
LCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgbV9raW5ldGljQW5pbWF0aW9u
ID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPihtX3Njcm9sbGFibGVBcmVhLCBb
dGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCiAgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwpAQCAtNzMsNyArNzMsNyBA
QCB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0
aW9uKCkKICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fc21vb3RoQW5pbWF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9v
dGg+KG1fc2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2lu
dCYmIHBvc2l0aW9uKSB7CisgICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9s
bEFuaW1hdGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0
aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICAgICAgICAgdXBkYXRlUG9zaXRpb24oV1RG
TW92ZShwb3NpdGlvbikpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKaW5kZXggZTdkZDE5MTQwNDE3MTk2OGY5MGQ2
ZmVhMzM1NGUxNGNlZjZmNTU2Ny4uMzYxZTlkZjMyNDViZTU2NWIwZTJhNDFkZjE4YjI2ZmZiYzcx
OWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29k
ZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2Rl
ckdsaWIuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1
bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtl
eWVkRGVjb2RlckdsaWI+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVk
RGVjb2RlckdsaWI+KGRhdGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJHbGliOjpLZXllZERl
Y29kZXJHbGliKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzQwNGJj
YmQ0NDlhYTQ5MjFiOGNlMmI3ZTAxODQ0OTUwMTA2ZjY4MC4uNzBkMjRjMTE5M2Y4ZTVjNzBkMWQz
OTg3YzVlMDA5OGNiNmMwMGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNv
ZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJHbGliPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2RlckdsaWI+KCk7CiB9CiAKIEtleWVk
RW5jb2RlckdsaWI6OktleWVkRW5jb2RlckdsaWIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGEyM2UyMTlkMWE2ODZkYTczMGMw
MTFiZTBkMTI0OWNjZTBiYTQ1Y2QuLmVmY2NjNWM2Zjc5YTVhOWEyZWU0NzcwYmY1Y2M5OTRmODQy
Yjk2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjbGVhclRpbWVy
KCkKIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAgICBB
U1NFUlQoIW1fZnJhbWVUaW1lcik7Ci0gICAgbV9mcmFtZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUaW1lcj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CisgICAgbV9m
cmFtZVRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2YW5j
ZUFuaW1hdGlvbik7CiAgICAgbV9mcmFtZVRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQog
CkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6cmVzZXRBbmltYXRpb24oKQog
dm9pZCBCaXRtYXBJbWFnZTo6ZGVjb2RlKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNr
KQogewogICAgIGlmICghbV9kZWNvZGluZ0NhbGxiYWNrcykKLSAgICAgICAgbV9kZWNvZGluZ0Nh
bGxiYWNrcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+Pigp
OworICAgICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnVuY3Rp
b248dm9pZCgpPiwgMT4+KCk7CiAKICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzLT5hcHBlbmQoV1RG
TW92ZShjYWxsYmFjaykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCAwZDM1NTYxODk3MGZi
Mjc3ZjcyZTc4OTkwZTNmNGYyYTIxNmZiYzY5Li4zNTNmY2E2NjAxMzI2NGIwMjQ2MmE1NzEyMjRk
MDVhMTgxZDk2ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgY2xh
c3MgVGV4dExheW91dCB7CiAgICAgVGV4dExheW91dChSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgZmxvYXQgeFBvcykKICAgICAgICAgOiBtX2ZvbnQoZm9udCkKICAg
ICAgICAgLCBtX3J1bihjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHhQb3MpKQotICAgICAgICAsIG1f
Y29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhUZXh0Q29udHJvbGxlcj4obV9mb250
LCBtX3J1biwgdHJ1ZSkpCisgICAgICAgICwgbV9jb250cm9sbGVyKG1ha2VVbmlxdWU8Q29tcGxl
eFRleHRDb250cm9sbGVyPihtX2ZvbnQsIG1fcnVuLCB0cnVlKSkKICAgICB7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKaW5kZXggNzIw
NDUzZDlmMDQ2ZDc5ZjQ4YTA5YjgxYWY3MDAwZjRkZTNiZTAyNS4uY2VmZDhkNDIyNDRkMDZmY2I4
MjRiZTVlM2I3MzQxOWNkNDk4YTRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UG9pbnQuaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBJbnRQb2ludDsKIGNs
YXNzIEludFNpemU7CiAKIGNsYXNzIEZsb2F0UG9pbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEZsb2F0UG9pbnQoKSB7IH0KICAgICBGbG9hdFBvaW50KGZs
b2F0IHgsIGZsb2F0IHkpIDogbV94KHgpLCBtX3koeSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE4NGI0NGIwN2E0MTIyMTZiOWVjNTk4NDIyZjA3
ODdmMGU2YzdhZWIuLmUwYjQ5ZjI0N2MyMDA5YmRkNWYxZDBjOGViYTdhZDZjN2ViOGNiZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0zOTQsNyArMzk0
LDcgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJh
Y3RlcikgY29uc3QKIGF1dG8gRm9udDo6ZW5zdXJlRGVyaXZlZEZvbnREYXRhKCkgY29uc3QgLT4g
RGVyaXZlZEZvbnRzJgogewogICAgIGlmICghbV9kZXJpdmVkRm9udERhdGEpCi0gICAgICAgIG1f
ZGVyaXZlZEZvbnREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkRm9udHM+KCk7CisgICAg
ICAgIG1fZGVyaXZlZEZvbnREYXRhID0gbWFrZVVuaXF1ZTxEZXJpdmVkRm9udHM+KCk7CiAgICAg
cmV0dXJuICptX2Rlcml2ZWRGb250RGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCmluZGV4IDJlNThiZDY5ZWJiNTM5MWUwMzZkMjhjMjcwMmMxZjQ1MDUwOGIz
MTIuLmVmNjA1MjIwMTk3MDhlZjE1ZjA4MjlmYTdkOWM1Njk4MTUyYzk2YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTM0NSw3ICszNDUsNyBAQCBBTFdBWVNf
SU5MSU5FIEZsb2F0UmVjdCBGb250Ojpib3VuZHNGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QK
IAogICAgIGJvdW5kcyA9IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoZ2x5cGgpOwogICAgIGlmICgh
bV9nbHlwaFRvQm91bmRzTWFwKQotICAgICAgICBtX2dseXBoVG9Cb3VuZHNNYXAgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOworICAgICAgICBtX2dseXBo
VG9Cb3VuZHNNYXAgPSBtYWtlVW5pcXVlPEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOwog
ICAgIG1fZ2x5cGhUb0JvdW5kc01hcC0+c2V0TWV0cmljc0ZvckdseXBoKGdseXBoLCBib3VuZHMp
OwogICAgIHJldHVybiBib3VuZHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmNwcAppbmRleCAwYTYyYTI3NWJjNjkyZWYzOTkxMTQwZTAyOGY1ODAw
NDIxZDBjNzExLi4zNzA5YjQxZWIyYjdiZDBiZjdiMTAyYWM1ZGJlZmUyZjc3NzNhZjFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTI0
NCw3ICsyNDQsNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAgICAgICAgICAgIGl0
ID0gZm9udFBsYXRmb3JtRGF0YUNhY2hlKCkuZmluZChrZXkpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChpdCAhPSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5lbmQoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKQotICAgICAgICAgICAgICAg
ICAgICBpdC0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KCpmb250
UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGl0LT52
YWx1ZSA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JB
bHRlcm5hdGVOYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA3Mjc0
ZGIwZGIzMmIzYjQxYjNlMGUxYjFlZDBmYjJhZWE4YjM2YTNiLi42NDgxOGY0YjUxNTVkNDJiZmFj
ODFiNjFmNGI1ZjljZGVhNTQ1MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIFJlZjxG
b250Q2FzY2FkZUZvbnRzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2Nh
ZGVEZXNjcmlwdGkKICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZv
bnRzLmdldCgpOwogCiAgICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOwotICAgIG5ld0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50
cnk+KFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNl
bGVjdG9yKSkpOworICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50
cnk+KFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNl
bGVjdG9yKSkpOwogICAgIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBnbHlwaHMgPSBuZXdFbnRyeS0+
Zm9udHMuZ2V0KCk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5yZWZlcmVuY2VkUHJ1
bmVJbnRlcnZhbCA9IDUwOwpAQCAtMzI2LDkgKzMyNiw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4o
R3JhCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4g
ZGlzcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4o
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5
TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwogICAgIEdyYXBo
aWNzQ29udGV4dCByZWNvcmRpbmdDb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlM
aXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlz
dDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0
YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlz
cGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgp
KTsKICAgICB9KTsKICAgICAKICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
Rm9udHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVG
b250cy5jcHAKaW5kZXggZGI3NDMwMmU5ZGFhNGViNTJjMGNlMDgxZmQ1NjA1Mjc5NTc4ZmJmNC4u
MTJhYzgzN2ZjZDI0NjVmOWY4MWRlYjA2ODdhYTc3NmQ1ZWEwNjQ1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKQEAg
LTg0LDcgKzg0LDcgQEAgdm9pZCBGb250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5
OjpzZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGEKIHsKICAgICBBU1NFUlQoIWds
eXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIpLmdseXBoKTsKICAgICBpZiAoIW1fbWl4ZWRG
b250KSB7Ci0gICAgICAgIG1fbWl4ZWRGb250ID0gc3RkOjptYWtlX3VuaXF1ZTxNaXhlZEZvbnRH
bHlwaFBhZ2U+KG1fc2luZ2xlRm9udC5nZXQoKSk7CisgICAgICAgIG1fbWl4ZWRGb250ID0gbWFr
ZVVuaXF1ZTxNaXhlZEZvbnRHbHlwaFBhZ2U+KG1fc2luZ2xlRm9udC5nZXQoKSk7CiAgICAgICAg
IG1fc2luZ2xlRm9udCA9IG51bGxwdHI7CiAgICAgfQogICAgIG1fbWl4ZWRGb250LT5zZXRHbHlw
aERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBnbHlwaERhdGEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAppbmRleCAyNTllOTc1
MzNjYWVkY2ZjMTQ1ZmY3YWI0MjhlYTE2OWY2NGIxNTk0Li43OWUyZjUzODhjNDZlNTg5MjMwMTYx
YzQ3NDUyNTQxOTI0N2U4MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdGVtcGxhdGU8
Y2xhc3MgVD4gdHlwZW5hbWUgR2x5cGhNZXRyaWNzTWFwPFQ+OjpHbHlwaE1ldHJpY3NQYWdlJiBH
bHlwaE1ldHJpY3NNYXAKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZXMpCi0gICAgICAgIG1fcGFn
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhN
ZXRyaWNzUGFnZT4+PigpOworICAgICAgICBtX3BhZ2VzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPGlu
dCwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4oKTsKIAogICAgIGF1dG8mIHBh
Z2UgPSBtX3BhZ2VzLT5lbnN1cmUocGFnZU51bWJlciwgW10gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygpKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4odW5rbm93bk1ldHJpY3MoKSk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAqcGFnZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKaW5kZXggMWI0MjI4NmRkZjQ2NWMwZTJiMTI0ZDhhZmRmMGY3Y2Q2NDc3Y2Ji
Ny4uZTMzZjhmYmU3Mzg5MmUzNGI4ZGVmODM2ZDQ2ZjVjNzBjNzljNjFkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Qml0bWFwVGV4dHVyZUdMOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHls
ZSk7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCA5NGFhYzFkZjgz
NTZiZGIxMGRmN2QwODZmYWNlMjZjMWUzNzE4MzI2Li5jOTZlY2EzYTE1ZWQ2NTA1NDk0ZjIzMDhm
NWU1N2M3OTBhNzFlMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAg
ICAgaWYgKG1fdHJhbnNmb3JtKQogICAgICAgICAqbV90cmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAg
ZWxzZQotICAgICAgICBtX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRp
b25NYXRyaXg+KG1hdHJpeCk7CisgICAgICAgIG1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKIH0KIAogY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIEdyYXBoaWNzTGF5ZXI6OmNoaWxkcmVuVHJhbnNmb3JtKCkgY29uc3QKQEAgLTM1Niw3ICsz
NTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAgICAgaWYgKG1fY2hpbGRyZW5UcmFuc2Zvcm0p
CiAgICAgICAgICptX2NoaWxkcmVuVHJhbnNmb3JtID0gbWF0cml4OwogICAgIGVsc2UKLSAgICAg
ICAgbV9jaGlsZHJlblRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25N
YXRyaXg+KG1hdHJpeCk7CisgICAgICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXI6
OnNldE1hc2tMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJiBsYXllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAwMDlkNDg2
ODk1ZDU2ODYyNTQwMTFkZjU2MDBhNzIxMTI0MzBlNjJmLi43YTFmZWFhYzc5ZTc4YmE4OGZjYWRj
Yjg1ZTMyOTlmZDc5YTAwNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRmxvYXRBbmlt
YXRpb25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAg
IH0KIAogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQpAQCAtMTMy
LDcgKzEzMiw3IEBAIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1h
dGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUo
KSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZShjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgb3RoZXIpCkBA
IC0xNjMsNyArMTYzLDcgQEAgY2xhc3MgRmlsdGVyQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5p
bWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9u
ZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIEZpbHRlckFuaW1h
dGlvblZhbHVlKGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBvdGhlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBlNDRhNjFlMjI0Y2ExMTk0ZDA5
MThkNDQ0M2JlYTdjMWU3ZTRhMGUxLi5jMjFmZTI5ZDBmMDVmZGRlMzllMGM0YmY0YjYxYTFjOTc2
Y2NiMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBA
IC0zNDksNyArMzQ5LDcgQEAgdm9pZCBJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMo
TGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWMKIHZvaWQgSW1hZ2U6OnN0
YXJ0QW5pbWF0aW9uQXN5bmNocm9ub3VzbHkoKQogewogICAgIGlmICghbV9hbmltYXRpb25TdGFy
dFRpbWVyKQotICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRpbWVyPigqdGhpcywgJkltYWdlOjpzdGFydEFuaW1hdGlvbik7CisgICAgICAgIG1fYW5pbWF0
aW9uU3RhcnRUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5p
bWF0aW9uKTsKICAgICBpZiAobV9hbmltYXRpb25TdGFydFRpbWVyLT5pc0FjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9hbmltYXRpb25TdGFydFRpbWVyLT5zdGFydE9uZVNob3QoMF9z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cAppbmRleCA3NTdmMDk1NjdkYzVkZmRmNWJlMDI2Mzk2MzlkMWVmZWM3MThjMGRiLi5hYmU4Njk0
MTk0ZmY3YzE3NTEwMGI2OTg4MDRhMTI0MGJkNjJjODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAg
Y2xhc3MgTnVsbE1lZGlhUGxheWVyUHJpdmF0ZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2UgewogCiAgICAgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAwOyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
YnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KCk7IH0KIAogICAgIGRvdWJsZSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRU
aW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsaXZlVXBkYXRlSW50
ZXJ2YWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBAIC0zNTUsNyArMzU1LDcgQEAgUmVm
PE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiBjbGll
bnQpCiBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkK
ICAgICA6IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVk
aWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3Vu
aXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtl
VW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQogewogfQogCkBAIC01MTEsNyAr
NTExLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3Qg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogI2VuZGlmCiAgICAgICAgIG1fcHJpdmF0ZS0+
bG9hZChtX3VybC5zdHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wcml2YXRlID0g
c3RkOjptYWtlX3VuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKKyAgICAgICAg
bV9wcml2YXRlID0gbWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKICAg
ICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKHRoaXMpOwogICAgICAgICBj
bGllbnQoKS5tZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKHRoaXMpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKaW5kZXggMDBkODVhNDk5NjQyYjNmNTIzN2IzMGJmZjVmNGU2YjQyOTEzMGVjZC4uMWQy
ZmMwMDkyMDRhOGMwMjU1NDFiMmEyZDdjNWYwZDBiZTVjOTljZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTEy
OSw3ICsxMjksNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgIHZp
cnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qg
PSAwOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBz
ZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFU
aW1lOjp6ZXJvVGltZSgpID8gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkg
OiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2Fi
bGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVk
aWFUaW1lU2Vla2FibGUoKSA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkgPyBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5N
ZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1
YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1
YWwgTWVkaWFUaW1lIG1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKG1heFRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwg
ZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggM2U2
ODgwNTViZGNjMGIxMGU0MTYwY2YxNDBkNGZhY2U5MjMyMGE2NS4uNWFkOTMzNDliZmI0MGRhNGZm
MzA4YWRhOTg0OTdmYzM3NWUxMDhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRmxvYXRQb2lu
dEdyYXBoOjpOb2RlKiBGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUoRmxvYXRQb2lu
dCBwb2ludCkKICAgICAgICAgICAgIHJldHVybiB0ZXN0Tm9kZS5nZXQoKTsKICAgICB9CiAKLSAg
ICBtX2FsbE5vZGVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9k
ZT4ocG9pbnQpKTsKKyAgICBtX2FsbE5vZGVzLmFwcGVuZChtYWtlVW5pcXVlPEZsb2F0UG9pbnRH
cmFwaDo6Tm9kZT4ocG9pbnQpKTsKICAgICByZXR1cm4gbV9hbGxOb2Rlcy5sYXN0KCkuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCmluZGV4
IDlkY2VlODc2MTYyNWMwMTQ4OGI0ZDkwZDFhZjIyZTM1NDM1ZDRhNWUuLjZhNzAxYzFhMTI4OTc5
ZDRjOTQ4YjFhN2JhYjU2OGYxMDI0N2NmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVnaW9uLmNwcApAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgUmVnaW9uOjpzZXRT
aGFwZShTaGFwZSYmIHNoYXBlKQogICAgIH0KIAogICAgIGlmICghbV9zaGFwZSkKLSAgICAgICAg
bV9zaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKKyAgICAg
ICAgbV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKICAgICBlbHNl
CiAgICAgICAgICptX3NoYXBlID0gV1RGTW92ZShzaGFwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCmluZGV4IDc5NjMzZmRiNmFkZjM0ZmZmZWU4ZjgyNjc0
ODNiOGNmZjVjZTFmM2MuLmJjMzljMzAwMDBlYThiNmI1YTllNjBjZjJiYzVhZTE4NjY2NGI2Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCkBAIC05MSw2ICs5
MSw3IEBAIGNsYXNzIFJlZ2lvbiB7CiAgICAgfTsKIAogICAgIGNsYXNzIFNoYXBlIHsKKyAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBTaGFwZSgp
ID0gZGVmYXVsdDsKICAgICAgICAgU2hhcGUoY29uc3QgSW50UmVjdCYpOwpAQCAtMTQ4LDcgKzE0
OSw3IEBAIGNsYXNzIFJlZ2lvbiB7CiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2hhcGUmLCBjb25zdCBTaGFwZSYpOwogICAgIH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBzdGQ6Om1ha2VfdW5p
cXVlPFNoYXBlPigqbV9zaGFwZSkgOiBudWxscHRyOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFNo
YXBlPiBjb3B5U2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlID8gbWFrZVVuaXF1ZTxTaGFw
ZT4oKm1fc2hhcGUpIDogbnVsbHB0cjsgfQogICAgIHZvaWQgc2V0U2hhcGUoU2hhcGUmJik7CiAK
ICAgICBJbnRSZWN0IG1fYm91bmRzOwpAQCAtMjg5LDcgKzI5MCw3IEBAIE9wdGlvbmFsPFJlZ2lv
bj4gUmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgZGVjb2RlciA+PiBz
aGFwZTsKICAgICAgICAgaWYgKCFzaGFwZSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgIHJlZ2lvbi5tX3NoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RG
TW92ZSgqc2hhcGUpKTsKKyAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBl
PihXVEZNb3ZlKCpzaGFwZSkpOwogICAgIH0KIAogICAgIHJldHVybiB7IHJlZ2lvbiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24uY3BwCmluZGV4IDFlNGU3ZmFjMzZjN2MzMGE2NTZmMWVmZDAwYWFjZTZk
NGM5NWNlZGEuLjY5MzlmOTE3YWU2ZmFiMTNlYzFjOTFkNGFhODE1NTY2YTkxNzBkZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2Vu
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTnVsbFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uIDogcHVibGljIFRleHRUcmFja1JlcHJlc2VudGF0aW9uIHsKIAogc3Rk
Ojp1bmlxdWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbjo6Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JikKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uPigpOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9j
aXR5RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRh
LmgKaW5kZXggN2FlYjc1OWIzNGIxOGExZTg0NjgzZjI5YzYxNmE2Y2RiMDI1NzRkOC4uNmEwNmNj
NmViYTM0Yjk1OWQyZjE4NjAyMjllMWYyZjM4ZmYzMTkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKQEAgLTY1LDYgKzY1LDcgQEAgc3Ry
dWN0IFZlbG9jaXR5RGF0YSAgewogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgVmVsb2NpdHlEYXRhJik7CiAKIGNsYXNzIEhpc3RvcmljYWxW
ZWxvY2l0eURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IEhpc3RvcmljYWxWZWxvY2l0eURhdGEoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0M0RBTkdMRS5jcHAKaW5kZXggNzdhM2UxOGMxYzZjMmUyN2RkNjNhZTI5NmY2ZWM5YTFlYTJm
YWUxZi4uNjEyNjBlOWM4M2RjNGE1NTI4NTcxYzk5ZDRhMjcwNWIxNmNhNGUwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
M0RBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0Qm
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5z
aW9ucykKLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25z
M0RBTkdMRT4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25z
ID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RBTkdMRT4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgp
KTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKaW5kZXggYTllY2QzMjEzNmRhODc3MDJmNDc4YWZj
ZDhhY2M4ZWI5N2MyMzk0MC4uOTlkZGRkOGY4NTAyNzMwM2JiOGE3NjNlY2FjMmI4Njk4ODJmYTk4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCkBA
IC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU2VsZWN0aW9u
T3B0aW9uQVZGT2JqQzsKIAogY2xhc3MgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbChBVlBsYXllckl0ZW1UcmFjayopOwogICAgIGV4cGxpY2l0IEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGwoQVZBc3NldFRyYWNrKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggNWNkNzc3MmFjMmVlMWNlYTkw
MTBlODMzNzFlYTZhYWVmN2YwNjk1OC4uNmIzYzkyMmU2YWViZTU5MjBhZTY1ZTU3YWYwNWVkZTRh
ZDAzNzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5tbQpAQCAtMzEzLDEyICszMTMsMTIgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEKIHsK
ICAgICBBU1NFUlQobWF4RnJhbWVzID49IDApOwogCi0gICAgbV90YXBEZXNjcmlwdGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zv
cm1hdCk7CisgICAgbV90YXBEZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOwog
ICAgIGludCBudW1iZXJPZkNoYW5uZWxzID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bUNoYW5uZWxzUGVy
RnJhbWU7CiAgICAgZG91YmxlIHNhbXBsZVJhdGUgPSBwcm9jZXNzaW5nRm9ybWF0LT5tU2FtcGxl
UmF0ZTsKICAgICBBU1NFUlQoc2FtcGxlUmF0ZSA+PSAwKTsKIAotICAgIG1fb3V0cHV0RGVzY3Jp
cHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsK
KyAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOwogICAgIG1fb3V0cHV0RGVzY3JpcHRp
b24tPm1TYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5t
Rm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CiAgICAgbV9vdXRwdXREZXNjcmlwdGlv
bi0+bUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZDsKQEAg
LTMzOCw3ICszMzgsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJl
KENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogICAgIC8vIE1ha2UgdGhl
IHJpbmdidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIHN0b3JlIGF0IGxlYXN0IHR3byBjYWxsYmFja3Mg
d29ydGggb2YgYXVkaW8sIG9yIDFzLCB3aGljaGV2ZXIgaXMgbGFyZ2VyLgogICAgIHNpemVfdCBj
YXBhY2l0eSA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHNpemVfdD4oMiAqIG1heEZyYW1lcyksIHN0
YXRpY19jYXN0PHNpemVfdD4oa1JpbmdCdWZmZXJEdXJhdGlvbiAqIHNhbXBsZVJhdGUpKTsKIAot
ICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAg
IG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwogICAgIG1fcmluZ0J1
ZmZlci0+YWxsb2NhdGUoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKCpwcm9jZXNzaW5nRm9ybWF0
KSwgY2FwYWNpdHkpOwogCiAgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUtbGVu
Z3RoIHN0cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygpIG9w
ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCAz
NjFhOTkyZjBjNDY1MGNmMmI5NjI4YTY0MmU5N2I1ZGJhMGUyYTNjLi40ZmM2Nzg3ZGQ4ZDkwN2Nh
ZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4gQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0oY29uc3QgU3RyaW5n
JgogICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nPigpOwogfQogCiBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3Vw
cG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IDg5MThlODBlMGMzOTBkN2U4ZGFjYTE5MDM5NDc5
YTBkMGY2OTVhZDguLjUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC0zNSw2ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBGb3VyQ0M7CiAKIGNsYXNzIENETUZhY3RvcnlG
YWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ0RNRmFjdG9yeUZhaXJQbGF5
U3RyZWFtaW5nJiBzaW5nbGV0b24oKTsKIApAQCAtNDksNiArNTAsNyBAQCBjbGFzcyBDRE1GYWN0
b3J5RmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CiB9OwogCiBj
bGFzcyBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNUHJpdmF0
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaAppbmRleCA0YTUwZWI0MWE1ODM2ODNmNjZhNjc2MjI5NTQ2YzU4MDFiMjBiNTg4Li5k
ODFiY2EzNTQ5MDM5MThhMWJkYTBhZGRkOTU4ZDU5NDNmNzAxYjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTM3LDYgKzM3LDcg
QEAgY2xhc3MgTGVnYWN5Q0RNOwogY2xhc3MgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzsK
IAogY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyA6IHB1YmxpYyBDRE1Qcml2YXRl
SW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKExlZ2FjeUNETSogY2RtKQogICAg
ICAgICA6IG1fY2RtKGNkbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0KaW5kZXggMmNjMDhhOWEzYjUxY2JmN2FiMTk3NDIwMmE5OGIxNjlk
YjQzYzEwMS4uMGNkMDEyOWEzY2Q5ZWFmODYzYWQ0Nzg5ODM4NTAzMWQ4Yjc2ZWY2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAg
LTE0NywxMCArMTQ3LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Q
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKExlCiAjZW5kaWYKICAgICAK
ICAgICBpZiAoc2hvdWxkVXNlQVZDb250ZW50S2V5U2Vzc2lvbiAmJiBDRE1TZXNzaW9uQVZDb250
ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFibGUoKSkKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVy
cy52YWx1ZSgpLnByb3RvY29scyksIHBhcmFtZXRlcnMudmFsdWUoKS52ZXJzaW9uLCAqdGhpcywg
Y2xpZW50KTsKKyAgICAgICAgc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWQ29udGVu
dEtleVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyksIHBhcmFt
ZXRlcnMudmFsdWUoKS52ZXJzaW9uLCAqdGhpcywgY2xpZW50KTsKICAgICBlbHNlCiAjaWYgSEFW
RShBVlNUUkVBTVNFU1NJT04pCi0gICAgICAgIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENE
TVNlc3Npb25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3Rv
Y29scyksICp0aGlzLCBjbGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1T
ZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2Nv
bHMpLCAqdGhpcywgY2xpZW50KTsKICNlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgK
aW5kZXggZTQ2MDE0ODMwNWNlZWQxYjU2NDg0MTk5NmNiOWZjMzRjZGMzYWI1Mi4uMTQ3YzM3OWYx
MjcwNjgyZTU1ZmQyMTVjZTIzYTM5ZWExMjQ5NWFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNz
aEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFt
aW5nSW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2kiOyB9
CiAKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggewogICAgIEZvdXJDQyBtX3NjaGVtZTsK
IH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVz
dEluZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09G
YWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxC
b3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAi
ZmtyaSI7IH0KIApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggewogICAg
IEtleUlEIG1fa2V5SUQ7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0tleUFzc2V0SWRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCBmaW5hbCA6IHB1YmxpYyBJU09C
b3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAi
ZmthaSI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8
dWludDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlT
dHJlYW1pbmdLZXlDb250ZXh0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggZmluYWwgOiBwdWJsaWMgSVNP
Qm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4g
ImZrY3giOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG1fZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5
U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggZmluYWwgOiBw
dWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkg
eyByZXR1cm4gImZrdmwiOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IHZlcnNpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJzaW9uczsgfQpAQCAtODgsNyArODgsNyBAQCBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IDogcHVibGlj
IElTT0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fdmVyc2lvbnM7CiB9OwogCi1jbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggOiBwdWJsaWMg
SVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVx
dWVzdEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3Vy
Q0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzayI7IH0KIApAQCAtMTA2LDcgKzEwNiw3IEBA
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCA6
IHB1YmxpYyBJU09Cb3ggewogICAgIE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVy
c2lvbkxpc3RCb3g+IG1fdmVyc2lvbkxpc3Q7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IGZpbmFsIDogcHVi
bGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsg
cmV0dXJuICJmcHNkIjsgfQogCkBAIC0xMjAsNyArMTIwLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCA6IHB1YmxpYyBJU09Cb3ggewogICAg
IFZlY3RvcjxJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3g+IG1fcmVxdWVzdHM7CiB9
OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggOiBw
dWJsaWMgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKK2NsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCBmaW5hbCA6IHB1YmxpYyBJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGZhaXJQbGF5U3lzdGVtSUQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA4
NTdmMzFmMjc3MmY0MDgxZmJhNjM4ZjgxMGMxMTQ5NDI4NThiOTRiLi41OWNmOGJhMjEzMTZiMzA3
YzA1MDIzZWQ1NmQ5YjM5ZDI1NjE3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6YnVmZmVyZWQoKSBjCiAgICAgaWYgKCFtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMp
CiAgICAgICAgIG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyA9IHBsYXRmb3JtQnVmZmVyZWRUaW1l
UmFuZ2VzKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCptX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CiB9CiAKIE1lZGlh
VGltZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Om1heE1lZGlhVGltZVNlZWthYmxl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcAppbmRleCAzOTVjZTc4MmU4YzU4MDQ1OTYxNjI0Njk4MGYzM2VhZGYwM2I3OGIyLi41ZjVi
NmY2OTUyYjQ5M2E5ODg3YmFmYzdmMzBiN2JlZTczMzQxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6On5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjKCkgPSBk
ZWZhdWx0OwogV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgV2ViTWVkaWFTZXNz
aW9uTWFuYWdlck1hYzo6cGxhdGZvcm1QaWNrZXIoKQogewogICAgIGlmICghbV90YXJnZXRQaWNr
ZXIpCi0gICAgICAgIG1fdGFyZ2V0UGlja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTWFjPigqdGhpcyk7CisgICAgICAgIG1fdGFyZ2V0UGlja2VyID0gbWFr
ZVVuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjPigqdGhpcyk7CiAKICAgICByZXR1
cm4gKm1fdGFyZ2V0UGlja2VyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYWYwYTdj
Yzc3YmYyOTJjZGZkNjZhYmM2ZTdmNjNhNTA5MDBhYWQ2Ny4uNWE1MThjNTE1MWQwNWMzZWY1YjA5
NDJjNDJlM2IyNDAyMDM2MGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0zNDMsNyArMzQzLDcg
QEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUo
KSkKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7
IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBt
YWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAog
ICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3Vw
cG9ydHNLZXlTeXN0ZW0pOwogfQogCkBAIC02NzIsNyArNjcyLDcgQEAgc3RhdGljIGJvb2wgdGlt
ZVJhbmdlSXNWYWxpZEFuZE5vdEVtcHR5KENNVGltZSBzdGFydCwgQ01UaW1lIGR1cmF0aW9uKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdAogewotICAg
IGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OwogCiAgICAgaWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJu
IHRpbWVSYW5nZXM7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5
Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3Np
bwogICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNl
c3Npb25BVkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CiAKICNlbGlmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQpAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9pZCBBVkZXcmFw
cGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCog
b2JzZXJ2ZXIsIEMKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxs
YmFjayhpZj0lZCkgJXMiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ob2JzZXJ2ZXIpLCBu
b3RpZmljYXRpb25OYW1lKTsKICNlbmRpZgogCi0gICAgYXV0byBub3RpZmljYXRpb25EYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwg
b2JzZXJ2ZXIpOworICAgIGF1dG8gbm90aWZpY2F0aW9uRGF0YSA9IG1ha2VVbmlxdWU8Tm90aWZp
Y2F0aW9uQ2FsbGJhY2tEYXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKIAogICAgIGRpc3Bh
dGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbm90aWZpY2F0aW9uRGF0YS5y
ZWxlYXNlKCksIHByb2Nlc3NOb3RpZmljYXRpb24pOwogfQpAQCAtMTgzMyw3ICsxODMzLDcgQEAg
dm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZD
RlBsYXllckl0ZW1MZWdpYmxlT3V0cHUKIAogICAgIEFTU0VSVChsZWdpYmxlT3V0cHV0ID09IHNl
bGYtPm1fbGVnaWJsZU91dHB1dCk7CiAKLSAgICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2
ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0KTsKKyAg
ICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gbWFrZVVuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4o
YXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUo
aXRlbVRpbWUpLCBjb250ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgbGVnaWJsZU91dHB1dERhdGEucmVsZWFzZSgpLCBwcm9jZXNzQ3VlKTsK
IH0KQEAgLTE5MjYsNyArMTkyNiw3IEBAIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2Fk
ZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzCiAKICAgICBM
T0coTWVkaWEsICJBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5n
T2ZSZXF1ZXN0ZWRSZXNvdXJjZSglcCkiLCBzZWxmKTsKIAotICAgIGF1dG8gbG9hZFJlcXVlc3RE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBj
b250ZXh0KTsKKyAgICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IG1ha2VVbmlxdWU8TG9hZFJlcXVl
c3REYXRhPihsb2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9hc3luY19m
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGxvYWRSZXF1ZXN0RGF0YS5yZWxlYXNlKCksIHBy
b2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOwogCkBAIC0xOTUzLDcgKzE5NTMs
NyBAQCBQbGF0Zm9ybUxheWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKCkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICAvLyBDcmVhdGUgYSBQbGF0Zm9ybUNBTGF5ZXIgc28gd2UgY2FuIHJl
c2l6ZSB0aGUgdmlkZW8gbGF5ZXIgdG8gbWF0Y2ggdGhlIGVsZW1lbnQgc2l6ZS4KLSAgICBtX2xh
eWVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CisgICAgbV9s
YXllckNsaWVudCA9IG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOwogICAgIGlmICghbV9s
YXllckNsaWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMTRhZjFhMjdmMjZiZDFh
ZDYwMjg2MDRhNTc1MmYwZGY5YThkZjUyLi43ZGUxNGMyNTcxZjdkMzhlZWNiYjM0OGZkYTNjNzRh
NDNkZWI4MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDLm1tCkBAIC0zMywxMyArMzMsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQ
bGF5ZXJJdGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGll
c0Zyb21UcmFjaygpOwogfQogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6
IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlv
bikpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihv
cHRpb24pKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNTksNyAr
NTksNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJv
bVRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1U
cmFjayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtl
X3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0g
bWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQ
cm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCBBVlBsYXllckl0
ZW1UcmFjayogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogfQog
CiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVkFz
c2V0VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpOwogfQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFj
ayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGll
c0Zyb21UcmFjaygpOwogfQogCkBAIC04Nyw3ICs4Nyw3IEBAIEFWQXNzZXRUcmFjayogQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDOjphc3NldFRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZG
T2JqQyYgb3B0aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRy
YWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBlYzBkMGVkZGJmNzNi
ZWVkYTY3MTdiN2E1MThjNzMyMTI2MDk1YWUyLi5kZjUyMjZhNGVhMDM2ZTU2ZmEyNTM5YTYyNzYy
YTIzOGFlNzBlMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBAIC0zNCw3ICszNCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sq
IHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBs
KHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAg
IDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQog
ICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7
Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
Pih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCmlu
ZGV4IDIyYWFmZWM3YjgzNDI3YjgxMzBhN2MwNDNmOGY2NzIwODM0Y2NhNDcuLjVkOGUyNTA3NDcw
YmM3YTQ5OTk1NWM5ODFiMTc2ZmY0NDRmYmM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaApAQCAtMzksNyArMzksOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM7CiAKLWNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIDogcHVibGljIExlZ2Fj
eUNETVNlc3Npb24sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQz4geworY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgZmluYWwgOiBwdWJsaWMg
TGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyogcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDJmZTI1MjQ5OTRjM2IxOTQ0NTllYzMzMzAyOWFiZDll
OTg1Yzc1YjQuLmJiMDc3NzYxMzgyYzg4MDgwN2JhNTNjOGRhZGIyOTQ1NmU1NmViNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtNDEyLDcg
KzQxMiw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEoKQog
ICAgICAgICB8fCAhbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkKICAgICAgICAg
fHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkudmFsdWUoKSAhPSBmaW5hbFRy
YW5zZm9ybQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXplKCkgIT0gc2l6
ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8SW1h
Z2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNpemUsIGtDVlBp
eGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNv
bXBhdGlibGU6Olllcyk7CisgICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBtYWtlVW5p
cXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBzaXpl
LCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NH
SW1hZ2VDb21wYXRpYmxlOjpZZXMpOwogCiAgICAgbV9zaXplID0gZXhwYW5kZWRJbnRTaXplKG1f
aW1hZ2VSb3RhdGlvblNlc3Npb24tPnJvdGF0ZWRTaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggYzY1OTBiZGVlNjdiNGUyMDk4ODhlOTZhMmMzMzBmMmZlMjMzODY5Ny4uODQ5
OTA0YWNmOTI5YzdjZmUzZjk0YmM0MTBlMGQwYjJlOGIxYjQ0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKICAgICBp
ZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtdKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwg
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VS
VChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CiB9CkBA
IC0zNjYsNyArMzY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIAogTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uKHBsYXllcikKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFr
ZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJN
YW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXll
cjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHRO
UyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBsYXllcjptYWtlV2Vh
a1B0cigqdGhpcyldKSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQpAQCAtMTMz
Nyw3ICsxMzM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
ZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpw
bGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2Vz
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1l
UmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBpZiAoIW1f
YXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAgLTE4OTIsNyArMTg5
Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlUm90
YXRpb25TZXNzaW9uKCkKICAgICAgICAgJiYgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+c2l6ZSgp
ID09IG5hdHVyYWxTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ltYWdlUm90YXRpb25T
ZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3Zl
KGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEs
IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CisgICAg
bV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25W
VD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZvcm1hdFR5
cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZ
ZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMjIxNiw3ICsyMjE2LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2Uo
VXBkYXRlVHlwZSB0eXBlKQogI2Vsc2UKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVz
ID0gbmlsOwogI2VuZGlmCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5p
cXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0
cmlidXRlcyk7CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yMjY1LDcg
KzIyNjUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHNpemVfdCBoZWlnaHQgPSBD
VlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAogICAgIGlm
ICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOworICAgICAg
ICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+
KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdl
VG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQs
IG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3Jt
YXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KQEAgLTIzMzAsNyArMjMzMCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzCiB7CiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBv
cnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNlc3Np
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0aGlzLCBj
bGllbnQpOworICAgIGF1dG8gc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakM+KHRoaXMsIGNsaWVudCk7CiAgICAgbV9zZXNzaW9uID0gbWFrZVdlYWtQdHIoKnNl
c3Npb24pOwogICAgIHJldHVybiBXVEZNb3ZlKHNlc3Npb24pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaAppbmRleCA3Mzk2ZTViMWI0MzExOThlNWU2MGQ4ZmNkMDYzNTliYjI3Y2Y0OWY3Li5h
MWRkMGY5MDkxZmIyODY0NjhkYmUwYWUxMGNlOGIzYzE0MmMwYmRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaApAQCAtMjY4LDYgKzI2OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQwogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDOwogCiAgICAgc3RydWN0IFBlbmRpbmdTZWVrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nU2Vlayhjb25zdCBNZWRpYVRpbWUmIHRh
cmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlh
VGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpCiAgICAgICAgICAgICA6IHRhcmdldFRpbWUodGFyZ2V0
VGltZSkKICAgICAgICAgICAgICwgbmVnYXRpdmVUaHJlc2hvbGQobmVnYXRpdmVUaHJlc2hvbGQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZjE5NTE1NmQ4Y2YyMjU2ZjYwZjlmNTUz
MjQxMjllODUyM2Q5ZDM4Yi4uOWMwYWVmNjE5YWRjMmEzMThmMGRiN2QyZTM4NjdjMjFkZmMzMWRk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKE1lZGlhCiAgICAgLCBtX3BsYXlpbmcoMCkKICAgICAsIG1fc2Vla2luZyhm
YWxzZSkKICAgICAsIG1fbG9hZGluZ1Byb2dyZXNzZWQoZmFsc2UpCi0gICAgLCBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtl
VW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAgICAgLCBtX2VmZmVj
dGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXIoRWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcjo6Y3Jl
YXRlKCp0aGlzLCBbbV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKQEAg
LTIwMSw3ICsyMDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdAogICAgIGlmICghaXNBdmFp
bGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXll
ciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBv
cnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpz
aW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UoY29u
c3QgTWVkaWFUaW1lJiB0aQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ0aW1lID0gIiwg
dGltZSwgIiwgbmVnYXRpdmVUaHJlc2hvbGQgPSAiLCBuZWdhdGl2ZVRocmVzaG9sZCwgIiwgcG9z
aXRpdmVUaHJlc2hvbGQgPSAiLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBtX3NlZWtpbmcg
PSB0cnVlOwotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTZWVr
Pih0aW1lLCBuZWdhdGl2ZVRocmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOworICAgIG1fcGVu
ZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRocmVzaG9s
ZCwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgaWYgKG1fc2Vla1RpbWVyLmlzQWN0aXZlKCkp
CiAgICAgICAgIG1fc2Vla1RpbWVyLnN0b3AoKTsKQEAgLTU0Myw3ICs1NDMsNyBAQCBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJl
YWR5U3RhdGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWthYmxlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlh
VGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVk
aWFUaW1lU2Vla2FibGUoKSk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKQEAgLTU1OCw3ICs1
NTgsNyBAQCBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpt
aW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6YnVmZmVyZWQo
KSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3Vy
Y2VQcml2YXRlLT5idWZmZXJlZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNvdXJjZVBy
aXZhdGUtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0K
IAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRpZExvYWRpbmdQ
cm9ncmVzcygpIGNvbnN0CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAKICAgICBpZiAoIW1fcmdi
Q29uZm9ybWVyKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IEB7IChfX2JyaWRnZSBOU1N0
cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0
VHlwZV8zMkJHUkEpIH07Ci0gICAgICAgIG1fcmdiQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJp
YnV0ZXMpOworICAgICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJD
b25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9
CiAKICAgICBtX2xhc3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhl
bEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CkBAIC02NDksNyArNjQ5LDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmEKICAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZlckdl
dEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0
dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlx
dWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1RleHR1
cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CiAK
ICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0
dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJl
LCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXgg
Y2EzYjExMzU1MmIzODg1Yzk5OTc3ZGFlMmEyMWVhMTY1NzdlZGE4MC4uOWRlZWU0NmYyY2EyNDUy
OTUzZGY1Y2E4OGJiNjlmODE4ZTdlNGU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpA
QCAtMTgzLDcgKzE4Myw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKE1lZGlhCiAgICAgOiBtX3BsYXll
cihwbGF5ZXIpCiAgICAgLCBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNh
bXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlz
XSkpCiAgICAgLCBtX2Nsb2NrKFBBTDo6Q2xvY2s6OmNyZWF0ZSgpKQotICAgICwgbV92aWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFr
ZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigp
KQogICAgICwgbV9sb2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVy
KCkpCkBAIC0yMjAsNyArMjIwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlh
RW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAg
ICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5ZXIpOyB9
LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgICAgIHN1cHBv
cnRzVHlwZSwgMCwgMCwgMCwgMCk7CiB9CiAKQEAgLTEwNTQsMTIgKzEwNTQsMTIgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YnVmZmVyZWQoKSBjb25z
dAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNzMsNyArMTA3Myw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50
RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9pbWFnZVBhaW50ZXIu
cGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVm
ZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwor
ICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQ
aXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIAogICAgIEFTU0VSVChtX2ltYWdlUGFpbnRlci5w
aXhlbEJ1ZmZlckNvbmZvcm1lcik7CiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZl
ckNvbmZvcm1lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakMuY3BwCmluZGV4IGM4NzFjNTk0ODM1NTA4NTcxODJjN2EyNGQ1NTM0Yjg1YTVk
NGVmN2UuLjI5NDgzYmE1ZTk4ZDk1ZmE4ZTVlYzlhNmExMGJmNjQxYWFlMzU1OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcApA
QCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNrKiB0
cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0K
IAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZB
c3NldFRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9t
VHJhY2soKTsKIH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMoTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCi0gICAgOiBtX2lt
cGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQor
ICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9u
KSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTY2LDcgKzY2LDcg
QEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2so
QVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VV
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVy
dGllc0Zyb21UcmFjaygpOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIEFWUGxheWVySXRlbVRyYWNr
KiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiAKIHZvaWQgVmlk
ZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2sp
CiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAg
LTg4LDcgKzg4LDcgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmFz
c2V0VHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxl
Y3Rvbk9wdGlvbihNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKIHsKLSAgICBt
X2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlv
bik7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihv
cHRpb24pOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCmluZGV4IGZjYzI0OTZhMTM1YWE0ZjczYThmZTU0OGQxNGUwYzgwMDA0YWQx
YjAuLjk3NTZjZmZhZmQ4YzNmNmZlM2I0N2EyMzMzNzFiNzRkZWM5OGQwNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJlbnQocGFyZW50KQogICAg
ICwgbV90cmFja0lEKC0xKQogICAgICwgbV9zZWxlY3RlZChmYWxzZSkKQEAgLTU2LDcgKzU2LDcg
QEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1f
aW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAg
IHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAxNzFm
Mjc3MmM5NGE2OWNkYTczNDkzY2M5YzhjNzg3OGIwMDEwOGRkLi44NzY1MzQ0NTIwMjRlNjE2NTE0
MTdhMDRhMGQ5NDUwNThhOTU0MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE2MzYsMTIgKzE2MzYs
MTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoQ29tbWl0
U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25zdCBUcmEKICAgICBpZiAodXNlc0Rpc3BsYXlMaXN0RHJh
d2luZygpICYmIG1fZHJhd3NDb250ZW50ICYmICghbV9oYXNFdmVyUGFpbnRlZCB8fCBoYWREaXJ0
eVJlY3RzKSkgewogICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShEaXNwbGF5TGlzdFJl
Y29yZFN0YXJ0LCBEaXNwbGF5TGlzdFJlY29yZEVuZCk7CiAKLSAgICAgICAgbV9kaXNwbGF5TGlz
dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOworICAgICAg
ICBtX2Rpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7
CiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRzT3JpZ2luKCks
IHNpemUoKSk7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoWyZdKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3ND
b250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1f
ZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVU
cmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pOwogICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250
ZW50cyhjb250ZXh0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpKTsKICAgICB9CkBA
IC0yODY3LDcgKzI4NjcsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJhbnNm
b3JtQW5pbWF0aW9uKCkgY29uc3QKIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFu
aW1hdGlvbnMoKQogewogICAgIGlmICghbV9hbmltYXRpb25zKQotICAgICAgICBtX2FuaW1hdGlv
bnMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKKyAgICAgICAgbV9hbmlt
YXRpb25zID0gbWFrZVVuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24mIGNhQW5p
bSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIGludCBpbmRleCwgaW50IHN1YkluZGV4LCBTZWNvbmRzIHRpbWVPZmZzZXQpCkBAIC0zOTAz
LDcgKzM5MDMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMoQ2xv
bmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPgogICAgIGNvbnRlbnRzTGF5ZXIg
PSBudWxscHRyOwogCiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQotICAgICAgICBtX2xheWVyQ2xv
bmVzID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsb25lcz4oKTsKKyAgICAgICAgbV9sYXllckNs
b25lcyA9IG1ha2VVbmlxdWU8TGF5ZXJDbG9uZXM+KCk7CiAKICAgICBwcmltYXJ5TGF5ZXIgPSBm
aW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9sYXllci5nZXQoKSwgbV9sYXllckNsb25lcy0+cHJp
bWFyeUxheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKICAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBmaW5k
T3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9u
ZXMtPnN0cnVjdHVyYWxMYXllckNsb25lcywgY2xvbmVMZXZlbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDNh
YzRjMWUzMmExNTQ4ZDU4YzY5MTExN2NjNjlhMjljNGRjZjBlMWEuLmM0YjJjOWMzNDcwODBhNmI3
Yzk2ZDY3MDJmNGE0ZDhhMzBjN2Y2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTcsNiArMTU3LDcgQEAg
Y2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIEZsb2F0U2l6ZSBwaXhlbEFsaWdubWVudE9mZnNldCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7IH0KIAogICAg
IHN0cnVjdCBDb21taXRTdGF0ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgdW5zaWduZWQgdHJlZURlcHRoIHsgMCB9OwogICAgICAgICB1bnNpZ25l
ZCB0b3RhbEJhY2tkcm9wRmlsdGVyQXJlYSB7IDAgfTsKICAgICAgICAgYm9vbCBhbmNlc3Rvckhh
ZENoYW5nZXMgeyBmYWxzZSB9OwpAQCAtMzA5LDYgKzMxMCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5
ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50
IHsKICAgICB0eXBlZGVmIHVuc2lnbmVkIENvbXB1dGVWaXNpYmxlUmVjdEZsYWdzOwogICAgIAog
ICAgIHN0cnVjdCBWaXNpYmxlQW5kQ292ZXJhZ2VSZWN0cyB7CisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0OwogICAg
ICAgICBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0OwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBhbmltYXRpbmdUcmFuc2Zvcm07CkBAIC0zMjgsNiArMzMwLDcgQEAgY2xhc3MgR3JhcGhpY3NM
YXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQgewogCiAgICAgLy8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVlIGZvciBy
ZXBsaWNhIGxheWVycy4KICAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1h
eFJlcGxpY2FEZXB0aCA9IDE2OwogICAgICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBlIHsgQ2hp
bGRCcmFuY2ggPSAwLCBSZXBsaWNhQnJhbmNoID0gMSB9OwogICAgICAgICBSZXBsaWNhU3RhdGUo
UmVwbGljYUJyYW5jaFR5cGUgZmlyc3RCcmFuY2gpCkBAIC01NzksNiArNTgyLDcgQEAgY2xhc3Mg
R3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQgewogCiAgICAgLy8gUmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3VyIGxheWVy
cywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJzLgogICAgIHN0cnVjdCBMYXllckNsb25lcyB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJNYXAgcHJp
bWFyeUxheWVyQ2xvbmVzOwogICAgICAgICBMYXllck1hcCBzdHJ1Y3R1cmFsTGF5ZXJDbG9uZXM7
CiAgICAgICAgIExheWVyTWFwIGNvbnRlbnRzTGF5ZXJDbG9uZXM7CkBAIC02MDgsNiArNjEyLDcg
QEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3Rv
cjxBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPj4gQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4+
IEFuaW1hdGlvbnNNYXA7CiAgICAgc3RydWN0IExheWVyQW5pbWF0aW9ucyB7CisgICAgICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVy
dHlBbmltYXRpb24+IHVuY29taXR0ZWRBbmltYXRpb25zOwogICAgICAgICBBbmltYXRpb25zVG9Q
cm9jZXNzTWFwIGFuaW1hdGlvbnNUb1Byb2Nlc3M7CiAgICAgICAgIEFuaW1hdGlvbnNNYXAgcnVu
bmluZ0FuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggNGQ2NGMyYzRiMTliMzFiODA1NGMxYmM0
MWFjMDIyNTczYmVmZjU2Mi4uMzA1ZWZkMzMzYmQ2MTFjNmVmNWU0YzFiMjYyMjg4NzUyNTZmMjRk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcgVGlsZUNvbnRyb2xsZXI6
Onpvb21lZE91dFRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCkKIFRpbGVDb250cm9sbGVyOjpU
aWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RQbGF0Zm9ybUxheWVyKQogICAgIDog
bV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1MYXllcikKICAgICAsIG1fZGV2aWNlU2NhbGVG
YWN0b3Iob3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZh
Y3RvcigpKQotICAgICwgbV90aWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhp
cykpCisgICAgLCBtX3RpbGVHcmlkKG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkKICAgICAs
IG1fdGlsZVJldmFsaWRhdGlvblRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVSZXZh
bGlkYXRpb25UaW1lckZpcmVkKQogICAgICwgbV90aWxlU2l6ZUNoYW5nZVRpbWVyKCp0aGlzLCAm
VGlsZUNvbnRyb2xsZXI6OnRpbGVTaXplQ2hhbmdlVGltZXJGaXJlZCwgdGlsZVNpemVVcGRhdGVE
ZWxheSkKICAgICAsIG1fbWFyZ2luRWRnZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNTY2FsZShm
bG9hdCBzY2FsZSkKICAgICBpZiAobV96b29tZWRPdXRDb250ZW50c1NjYWxlICYmIG1fem9vbWVk
T3V0Q29udGVudHNTY2FsZSA9PSB0aWxlR3JpZCgpLnNjYWxlKCkgJiYgdGlsZUdyaWQoKS5zY2Fs
ZSgpICE9IHNjYWxlICYmICFtX2hhc1RpbGVzV2l0aFRlbXBvcmFyeVNjYWxlRmFjdG9yKSB7CiAg
ICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQgPSBXVEZNb3ZlKG1fdGlsZUdyaWQpOwogICAgICAg
ICBtX3pvb21lZE91dFRpbGVHcmlkLT5zZXRJc1pvb21lZE91dFRpbGVHcmlkKHRydWUpOwotICAg
ICAgICBtX3RpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOworICAg
ICAgICBtX3RpbGVHcmlkID0gbWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOwogICAgICAgICB0
aWxlR3JpZHNDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC01MDAsNyArNTAwLDcgQEAgRmxvYXRSZWN0
IFRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9yU2Nyb2xsaW5nKGNvbnN0
IEZsb2F0UmVjdCYgY28KICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIW1faGlz
dG9yaWNhbFZlbG9jaXR5RGF0YSkKLSAgICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yaWNhbFZlbG9jaXR5RGF0YT4oKTsKKyAgICAgICAg
ICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSA9IG1ha2VVbmlxdWU8SGlzdG9yaWNhbFZlbG9j
aXR5RGF0YT4oKTsKIAogICAgICAgICBtX3ZlbG9jaXR5ID0gbV9oaXN0b3JpY2FsVmVsb2NpdHlE
YXRhLT52ZWxvY2l0eUZvck5ld0RhdGEoc2Nyb2xsT2Zmc2V0LCBjb250ZW50c1NjYWxlLCBNb25v
dG9uaWNUaW1lOjpub3coKSk7CiAgICAgfTsKQEAgLTY4NSw3ICs2ODUsNyBAQCBJbnRSZWN0IFRp
bGVDb250cm9sbGVyOjp0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3QKIFBsYXRmb3JtQ0FMYXllciog
VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIoKQogewogICAgIGlm
ICghbV9jb3ZlcmFnZU1hcCkKLSAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IHN0ZDo6bWFrZV91bmlx
dWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CisgICAgICAgIG1fY292ZXJhZ2VNYXAgPSBtYWtl
VW5pcXVlPFRpbGVDb3ZlcmFnZU1hcD4oKnRoaXMpOwogCiAgICAgcmV0dXJuICZtX2NvdmVyYWdl
TWFwLT5sYXllcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCBh
NDg1MjNjZjUxNzZiMzFmMmFjYzQ5ODRiMmVjZDhlMmM4NzRmNjA3Li4zNmFjMmY3ODRiMDA2ZmY5
YzcwM2Y0MWU3YmZmNjg3YTFhYTRjNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1v
bkluaXQoKQogICAgICAgICBXZWJUaWxlZEJhY2tpbmdMYXllciogdGlsZWRCYWNraW5nTGF5ZXIg
PSBzdGF0aWNfY2FzdDxXZWJUaWxlZEJhY2tpbmdMYXllcio+KG1fbGF5ZXIuZ2V0KCkpOwogICAg
ICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSBbdGlsZWRCYWNraW5nTGF5ZXIg
Y3JlYXRlVGlsZUNvbnRyb2xsZXI6dGhpc107CiAKLSAgICAgICAgbV9jdXN0b21TdWJsYXllcnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5j
b250YWluZXJMYXllcnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVuaXF1
ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkp
OwogICAgIH0KIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTk0Nyw3ICs5NDcs
NyBAQCBGbG9hdFJvdW5kZWRSZWN0IFBsYXRmb3JtQ0FMYXllckNvY29hOjpzaGFwZVJvdW5kZWRS
ZWN0KCkgY29uc3QKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCiB7CiAgICAgQVNTRVJUKG1f
bGF5ZXJUeXBlID09IExheWVyVHlwZVNoYXBlTGF5ZXIpOwotICAgIG1fc2hhcGVSb3VuZGVkUmVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAg
IG1fc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRl
ZFJlY3QpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgUGF0aCBzaGFw
ZVBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCmluZGV4IGMxOTFmMzkxYzY0
NTcyY2M5OTU1YTQ3YzZjYjdiOTAwNzg2NzI2MzkuLmIzZTIxZjY0MGFlOTFhMGQxZjU5Mzg0NmE4
NTBmZWMyMmZhNzhhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCkBAIC02
Miw3ICs2Miw3IEBAIC0gKGlkKWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCiAtIChXZWJDb3JlOjpU
aWxlQ29udHJvbGxlciopY3JlYXRlVGlsZUNvbnRyb2xsZXI6KFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciopcm9vdExheWVyCiB7CiAgICAgQVNTRVJUKCFfdGlsZUNvbnRyb2xsZXIpOwotICAgIF90
aWxlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI+
KHJvb3RMYXllcik7CisgICAgX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpU
aWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAgICByZXR1cm4gX3RpbGVDb250cm9sbGVyLmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDE1ZDRlNDZiMDZjNzZj
MTdmMzQwNTEzOWM2Yzk3OWMxMDE3YjM2OTYuLmQ2YTdjMTY4ZjBlNDQxZmQ3ZDI5MGZjNGZlMzEz
NjBjNTg1ZDU2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNTIsNyArMTUy
LDcgQEAgUGxhdGZvcm1DQUxheWVyV2luOjpQbGF0Zm9ybUNBTGF5ZXJXaW4oTGF5ZXJUeXBlIGxh
eWVyVHlwZSwgUGxhdGZvcm1MYXllciogbGF5ZXIKICAgICBpZiAodXNlc1RpbGVkQmFja2luZ0xh
eWVyKCkpIHsKICAgICAgICAgaW50ZXJuID0gbmV3IFdlYlRpbGVkQmFja2luZ0xheWVyV2luKHRo
aXMpOwogICAgICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSByZWludGVycHJl
dF9jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyV2luKj4oaW50ZXJuKS0+Y3JlYXRlVGlsZUNvbnRy
b2xsZXIodGhpcyk7Ci0gICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkp
OworICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1DQUxheWVy
TGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKICAgICB9IGVsc2UKICAg
ICAgICAgaW50ZXJuID0gbmV3IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKHRoaXMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGls
ZWRCYWNraW5nTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAppbmRleCAyMjRkOGJiZWVkMzk5MmFl
ZWZjOTMyYTFiZWU4MGRjNjNmY2EyZjhiLi5jNWE3M2U4ZDNhZTliYjQ5YTk2YmUyN2Y1MzI3ZTA2
YzA2MjE0ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKQEAgLTE2
NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpzZXRCb3JkZXJDb2xv
cihjb25zdCBDb2xvciYgdmFsdWUpCiBUaWxlQ29udHJvbGxlciogV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVyKQog
ewogICAgIEFTU0VSVCghbV90aWxlQ29udHJvbGxlcik7Ci0gICAgbV90aWxlQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CisgICAgbV90aWxl
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CiAgICAg
cmV0dXJuIG1fdGlsZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDUwYjdkOWMyM2MwMWFiZmMzYTA1MTc4YzEwNTI1MTA3MGYx
NWQ2ZGIuLjA0ZjJhOWZmNTQ2OWFhNWJhMjRkMTQ5NTY1NGI2MGYwYmM0M2QyYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtNDUsNyArNDUsNyBAQCBHcmFwaGlj
c0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29u
dGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbJnBsYXRmb3JtQ29udGV4dF0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+
KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7CiAgICAgICAgIH0pOwogfQogCkBAIC01NCwxNCAr
NTQsMTQgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgW2NhaXJvQ29udGV4dF0o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIGNhaXJv
Q29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8+KGNvbnRleHQsIGNhaXJvQ29udGV4dCk7CiAgICAgICAgIH0pOwogfQogCiBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiAg
ICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRy
YW5zZm9ybSB7IH0pCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCi0g
ICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAg
IG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdl
dCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkp
OwpAQCAtNjksOSArNjksOSBAQCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OkdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFBsYQogCiBHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm86OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNhaXJvX3QqIGNhaXJvQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dElt
cGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKLSAgICAsIG1f
b3duZWRQbGF0Zm9ybUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWly
bz4oY2Fpcm9Db250ZXh0KSkKKyAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQobWFrZVVuaXF1
ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY2Fpcm9Db250ZXh0KSkKICAgICAsIG1fcGxhdGZvcm1D
b250ZXh0KCptX293bmVkUGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFr
ZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4
dCkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRH
cmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5z
eW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dC5jcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
aW5kZXggMTg4ZTdiYzNkYjg1ODI5NjVjYWJiMjg5YmM1YzAyYmM3MTYyM2FhNS4uMWY3NjNiNTA3
NzNiZGY1ZDFlNTJlNWQxOWMwYjgwZmJhZDM3YjQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAK
QEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5l
ZWRlZCgpCiAgICAgICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eSYgcHJveHkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBob2xk
ZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBv
c2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JH
QkEpKTsKKyAgICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3Np
emUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKICAgICAgICAgICAg
IH07CiAjaWYgVVNFKE5JQ09TSUEpCiAgICAgICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5p
Y29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1w
bCgpKS5wcm94eSgpKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3Bh
YwogCiAgICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0
YS5tX3N1cmZhY2UuZ2V0KCkpKTsKICAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3Io
Y3IuZ2V0KCkpOwotICAgIG1fZGF0YS5tX2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0
YS5tX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fZGF0YS5tX2NvbnRleHQgPSBtYWtlVW5pcXVl
PEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5
KG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dCkpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCmluZGV4IDgwYjVkNGZiZDI3MmRlZTQzNWI1Y2U3YzA4NGVlMzU5YTUwMWVkNjQuLmQz
NWZmMGVmZjk3MTk1MGVlZDFlM2ZkMDI2YmNkYTllYWZhMzRlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0x
ODcsNyArMTg3LDcgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3AKICAgICAgICAgaWYgKCFjZ0Nv
bnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgbV9kYXRhLmNvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0
LmdldCgpKTsKICAgICB9CiAKICAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggNzI1MmU0OTUyNGY2MDk4NmIwMzhjYTg3Yzhl
N2UyNjVkMDU3NDcwZC4uYzAxNjAxZTEwMTExMjc5OGIyNjhkZmFmMjY5MzgyYjY1MzE5ZDViNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtMTM3MSw3ICsxMzcxLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGUKIAogICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlx
dWVdID0gY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250LmdldCgpLCBmb250RGVzY3JpcHRp
b24pLmJvbGRPYmxpcXVlUGFpcigpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9u
dFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGlj
T2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53
aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5
bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlv
bigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0
UmVuZGVyaW5nTW9kZSgpKTsKIH0KIAogdHlwZWRlZiBIYXNoU2V0PFJldGFpblB0cjxDVEZvbnRS
ZWY+LCBXVEY6OlJldGFpblB0ck9iamVjdEhhc2g8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJP
YmplY3RIYXNoVHJhaXRzPENURm9udFJlZj4+IEZhbGxiYWNrRGVkdXBTZXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCmluZGV4IDFjZTBjOTQ3ZTE3
ZTlhNjhlZWFkM2E0ZDU3YjU5ZDhmYTE2Y2VmMjkuLjBkZTkzNGE3YjM4NDEwMGVlYjc2ZDc3ZjQ1
NmExODJmYmJhYmNlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
Q29yZVRleHQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgRm9udFJhbmdlcyBGb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8K
IAogICAgICAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1
dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udEZvclN5bnRoZXNpc0NvbXB1dGF0aW9uLmdldCgpLCBm
b250RGVzY3JpcHRpb24pLmJvbGRPYmxpcXVlUGFpcigpOwogCi0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNlLCBz
eW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2Ny
aXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUo
KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0
KCksIHNpemUsIGZhbHNlLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50
YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24u
dGV4dFJlbmRlcmluZ01vZGUoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNT
RVJUKGZvbnRQbGF0Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KaW5k
ZXggODkyYjRhOThjMDA3YjZmOTcwYTM2ODYxYmU5MTcxNDhiYjA0NjcyYy4uNTc5ZjFiOTE4ZGJi
ZTc1Yjg0MTNlNmQ2ZmQxNWRmYWY2NGEzNTY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENv
Y29hLm1tCkBAIC05Miw2ICs5Miw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdGF0dXNDaGVj
a1RocmVzaG9sZCA9IDU7CiAvLyBGSVhNRTogVGhpcyBjbGFzcyBpcyBjdXJyZW50bHkgZW1wdHkg
b24gTWFjLCBidXQgd2lsbCBnZXQgcG9wdWxhdGVkIGFzCiAvLyB0aGUgcmVzdHJ1Y3R1cmluZyBp
biBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MDMgaXMgZG9uZQog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250
ZXh0M0QqKSB7IH0KICAgICAKQEAgLTIxMiw3ICsyMTMsNyBAQCBzdGF0aWMgdm9pZCBzZXRHUFVC
eURpc3BsYXlNYXNrKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgY29udGV4dE9iaiwgQ0dMUGl4
ZWxGbwogCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250
ZXh0M0RBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250ZXh0KQog
ICAgIDogbV9hdHRycyhhdHRycykKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1
ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMpKQogewogI2lmICFVU0UoQU5HTEUpCiAj
aWYgVVNFKE9QRU5HTF9FUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5tbQppbmRleCA1YzczM2UzYmFkMWU5ZDNkMjVjMWVkNTdmNWFj
ZGZmZjNhNGNiOTlmLi4zODc1ZmNmZDMwNmRmODZkMzQ3NGVlMTg2MGJhNTkwYTNhOGJjMTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAgR3JhcGhpY3NDb250ZXh0JiBJT1N1cmZhY2U6OmVu
c3VyZUdyYXBoaWNzQ29udGV4dCgpCiAgICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0KQogICAgICAg
ICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwogCi0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkp
OworICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGVu
c3VyZVBsYXRmb3JtQ29udGV4dCgpKTsKICAgICBtX2dyYXBoaWNzQ29udGV4dC0+c2V0SXNBY2Nl
bGVyYXRlZENvbnRleHQodHJ1ZSk7CiAKICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggNmU2MGViZjFm
ZmE2NTkwZjZmMzRlNTI4YTNlMzM1ODMxOGI1ZWJkZi4uMjc4NzQ2ODE2NmZlZjFiNWY2NDYyMWZl
YjViYjVlNTBkOWQ2ZGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNv
Y29hLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgQGVuZAogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRy
YWNrUmVwcmVzZW50YXRpb24+IFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7CiB9CiAK
IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29j
b2EoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNz
aW9uVlQuaAppbmRleCBhZGM5N2FkYzFmYTI0NTgwOTkwMDNjM2RlOWMwYWEzOGQ4NzYxODdkLi42
MDAxYmI3MGExMDA0MTc0NDEwOTIxMzZmM2ZlNWI2MTc2MmNiMGNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oCkBAIC0zNiw3ICszNiw4IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZl
clBvb2wqIENWUGl4ZWxCdWZmZXJQb29sUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEltYWdlUm90YXRpb25TZXNzaW9uVlQgeworY2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25W
VCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Ry
dWN0IFJvdGF0aW9uUHJvcGVydGllcyB7CiAgICAgICAgIGJvb2wgZmxpcFggeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5oCmluZGV4IGRkMTM1NjllMDgxYTFiMzk5ZGNiYWJmM2Y1ZTg4
MzdmODRjMmFiNGUuLmNkNWI2ZmNjMDBkNzc0NjRlNmU2YmU3NDYzMTFlMTNkMGQyN2UzMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVy
Q29uZm9ybWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVihDRkRpY3Rpb25hcnlSZWYgYXR0
cmlidXRlcyk7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnQoQ1ZQaXhl
bEJ1ZmZlclJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9UZXh0dXJlQ2FjaGVDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YuaAppbmRleCA4MWFiMmY5MjRkYWYyNmNkYTIyYzVlMjAwNzc2YzIx
ODAyMDIzYTNiLi5jOWZmNDE5ZDQzYmU0NWY0MDQ0MDMwNDBhZGQ4YzRkMDQ0MDJiYTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVD
Vi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNo
ZUNWLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0M0Q7CiAKIGNsYXNzIFRleHR1cmVDYWNoZUNWIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFRleHR1cmVDYWNoZUNWPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gY3JlYXRlKEdy
YXBoaWNzQ29udGV4dDNEJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KaW5kZXggNTc3ZWMyODQ2MzkyYTcyMTVkOTk4
YWEzMTBkM2Q4ZDYzM2Y1ZjFlYy4uOWYxZjY2YjNiZDU5ZjU5YjFhZDNjYjcwNWM4NTY1NDQyMjdl
YzM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4
dHVyZUNhY2hlQ1YubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
VGV4dHVyZUNhY2hlQ1YubW0KQEAgLTUwLDcgKzUwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVDYWNoZUNWPiBUZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEJiBjb250
ZXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZXRhaW5QdHI8VGV4dHVyZUNhY2hl
VHlwZT4gc3Ryb25nQ2FjaGUgPSBhZG9wdENGKGNhY2hlKTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0
cm9uZ0NhY2hlKSk7CiB9CiAKIFRleHR1cmVDYWNoZUNWOjpUZXh0dXJlQ2FjaGVDVihHcmFwaGlj
c0NvbnRleHQzRCYgY29udGV4dCwgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+JiYgY2FjaGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1Rl
eHR1cmVDb3BpZXJDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlk
ZW9UZXh0dXJlQ29waWVyQ1YuaAppbmRleCA0M2E5NmRjMTQzNjU4NGFmYTc3MTg3OGIxOTdmMmE5
NTQ3ZGNjY2VlLi45ZDM5MmVhMDU4YjM2MDA4Y2E1NjljYTQ0ZmQ3MTI4ODNiMGQ2ZjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVD
b3BpZXJDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVv
VGV4dHVyZUNvcGllckNWLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgVGV4dHVyZUNhY2hlQ1Y7CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckNWIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBWaWRlb1RleHR1cmVDb3Bp
ZXJDVihHcmFwaGljc0NvbnRleHQzRCYpOwogICAgIH5WaWRlb1RleHR1cmVDb3BpZXJDVigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDhmZWFhMmY1ZDc1
MzI4ZTQzNmJmOWQ4OGI4ZGMwNWJhYzFjMmUxZjMuLmM1NjFmNWY5ZWFiOTk2MjExYThiMjIyMTk3
NzZkNjhmMzllMTY0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXll
cjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gcmVwbGF5TGlzdDsKICAgICBpZiAoVU5MSUtFTFkodHJh
Y2tSZXBsYXlMaXN0KSkKLSAgICAgICAgcmVwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlz
cGxheUxpc3Q+KCk7CisgICAgICAgIHJlcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0
PigpOwogCiAgICAgc2l6ZV90IG51bUl0ZW1zID0gbV9kaXNwbGF5TGlzdC5pdGVtQ291bnQoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUl0ZW1zOyArK2kpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3Bl
cmF0aW9uLmNwcAppbmRleCA1NTdiOGUwMDg2MmQ2YWJjNTgwNGI0MTQzMjEwMDgwYTgzNTE2ZDFl
Li4zMGJiNDhjYzhmMGM0OTU0NDhhYjY1ZjY4MTE3MmNjYzZiY2E1MzVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb24uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uOjpsb2FkRXh0ZXJuYWxEb2N1bWVudElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAoIVNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJl
ZmVyZW5jZShtX3VybCwgKmNhY2hlZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCkpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKKyAgICBtX2NhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVVuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZT4obV91cmwpOwogICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UtPmxvYWQoY2FjaGVk
UmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5j
cHAKaW5kZXggNjU2M2M4YmZlZWIzNWJhNTMyN2Y0ODk2MWVkNjIxZmUzZDUzYWE0MS4uNzFhNGFi
MmY0ODI1ZjFhNTQzMTkxODAzNGIzNTMxZWNkYThhMGYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZy
ZWVUeXBlLmNwcApAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZv
cm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAg
ICAgICAgICAgICBGY1BhdHRlcm5BZGRTdHJpbmcocmVzdWx0UGF0dGVybi5nZXQoKSwgRkNfRk9O
VF9WQVJJQVRJT05TLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPih2YXJpYW50cy51
dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byBwbGF0Zm9ybURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQ
YXR0ZXJuLmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRX
aWR0aCwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9y
aWVudGF0aW9uKCkpOworICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gbWFrZVVuaXF1ZTxGb250UGxh
dGZvcm1EYXRhPihmb250RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5
bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKICAgICAvLyBW
ZXJpZnkgdGhhdCB0aGlzIGZvbnQgaGFzIGFuIGVuY29kaW5nIGNvbXBhdGlibGUgd2l0aCBGb250
Y29uZmlnLiBGb250Y29uZmlnIGN1cnJlbnRseQogICAgIC8vIHN1cHBvcnRzIHRocmVlIGVuY29k
aW5ncyBpbiBGY0ZyZWVUeXBlQ2hhckluZGV4OiBVbmljb2RlLCBTeW1ib2wgYW5kIEFwcGxlUm9t
YW4uCiAgICAgLy8gSWYgdGhpcyBmb250IGRvZXNuJ3QgaGF2ZSBvbmUgb2YgdGhlc2UgdGhyZWUg
ZW5jb2RpbmdzLCBkb24ndCBzZWxlY3QgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCAxMzc2NWY0M2RhODY2OGQyZGU4MmU2NzFk
ODE4MGQ2ODQ0Mjg0M2IwLi41ODk0M2QyYTkwZGZjNTUwMWYyZGNhYThlY2YwZTkwZTFhYzdmNzBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIEZUX0Zh
Y2UgZnJlZVR5cGVGYWNlOwogICAgIGlmIChGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBGVF9CeXRlKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXpl
KCksIDAsICZmcmVlVHlwZUZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2Us
IGJ1ZmZlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4o
ZnJlZVR5cGVGYWNlLCBidWZmZXIpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6
OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IDg2OTgxMzY0NTEzYjhl
NmYwZDdiMmRkYTViYjhkMWY4NzJlN2Y1NzYuLjcxZmRhMGQ5MjRjZDI1NWRiM2VmMTA3N2Y5ZTEw
NzgxNGUyNDNkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvVGV4dHVyZS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6
OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaW50IHcK
ICAgICAgICAgbnVtVGlsZXMgPSAwOwogICAgIH0KIAotICAgIGF1dG8gdGV4dHVyZUlkcyA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHVuc2lnbmVkPj4obnVtVGlsZXMpOworICAgIGF1dG8gdGV4
dHVyZUlkcyA9IG1ha2VVbmlxdWU8VmVjdG9yPHVuc2lnbmVkPj4obnVtVGlsZXMpOwogICAgIHRl
eHR1cmVJZHMtPmZpbGwoMCwgbnVtVGlsZXMpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1UaWxlczsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCmluZGV4IGY0YTRiYTFhOGFjYWQ1ZTIwNWE1OTNhNDhmNzQ4NmIyOGM3YmUxZDUu
LmY2ZTFlMTQ2OTNjNzk4NDI1MmY3OGViNzgwZDAyNGNmNjQ1ZWE0NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMTYsNyArMTE2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUo
TWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXMKIHsKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjppbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogICAgIGlmIChpc0F2YWlsYWJs
ZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsg
fSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1h
a2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIpOyB9LAogICAgICAg
ICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIH0KIH0KQEAgLTExNDAsNyArMTE0MCw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQcmVzZXJ2ZXNQaXRjaChi
b29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBh
dXRvIHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
KyAgICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
ICAgICBpZiAobV9lcnJvck9jY3VyZWQgfHwgaXNMaXZlU3RyZWFtKCkpCiAgICAgICAgIHJldHVy
biB0aW1lUmFuZ2VzOwogCkBAIC0yMzc2LDcgKzIzNzYsNyBAQCBHc3RFbGVtZW50KiBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvU2luaygpIGNvbnN0CiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZW5zdXJlQXVkaW9Tb3VyY2VQcm92aWRlcigpCiB7CiAgICAgaWYg
KCFtX2F1ZGlvU291cmNlUHJvdmlkZXIpCi0gICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKKyAgICAg
ICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVyID0gbWFrZVVuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVy
R1N0cmVhbWVyPigpOwogfQogCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDA3MjhlZWI2NDIwYWZm
Yjk2YzdhMWE0OWY1NTU1ZDlmM2IzZDk4ZDUuLmM3YWM1YjJiZTc0NTE4MzY5NDAzMjcwZjQ2YjJm
ZjZjMWNhMzg3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAKQEAgLTcxMCwxOSArNzEwLDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKQogICAgICAgICAg
ICAgaWYgKCFwcm94eS5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwg
bV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0g
bWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJl
TWFwcGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOwogCiAgICAgICAgICAgICBH
THVpbnQgdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1
ZmZlcjsKICAgICAgICAgICAgIGlmICh0ZXh0dXJlSUQpIHsKLSAgICAgICAgICAgICAgICBsYXll
ckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+KHRleHR1cmVJRCwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCks
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9
IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJRCwg
ZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKTsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVm
ZmVyRGF0YUhvbGRlcihXVEZNb3ZlKGZyYW1lSG9sZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVy
KGZyYW1lSG9sZGVyLT5zaXplKCksIEdMX0RPTlRfQ0FSRSk7CiAgICAgICAgICAgICAgICAgaWYg
KFVOTElLRUxZKCFsYXllckJ1ZmZlcikpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0
dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1
dGVzOjpnZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KGZyYW1lSG9s
ZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5oYXNBbHBoYUNoYW5uZWwoKSA/IEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwotICAgICAgICAgICAg
ICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSkpOworICAgICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
KFdURk1vdmUodGV4dHVyZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBm
cmFtZUhvbGRlci0+dXBkYXRlVGV4dHVyZShsYXllckJ1ZmZlci0+dGV4dHVyZUdMKCkpOwogICAg
ICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRFeHRyYUZsYWdzKG1fdGV4dHVyZU1hcHBlckZs
YWdzIHwgKGZyYW1lSG9sZGVyLT5oYXNBbHBoYUNoYW5uZWwoKSA/IFRleHR1cmVNYXBwZXJHTDo6
U2hvdWxkQmxlbmQgOiAwKSk7CkBAIC05MTIsNyArOTEyLDcgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGhpY3MKICAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4g
ZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2Ft
cGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRl
b0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUp
OwogCiAgICAgYXV0byB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAg
aWYgKCF0ZXh0dXJlSUQpCkBAIC05MjMsNyArOTIzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3MKICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKIAogICAgIGlmICghbV92
aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NP
TE9SX0NPTlZFUlRfRkxBRyk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVu
aXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NP
TlZFUlRfRkxBRyk7CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIG91dHB1dFRleHR1cmUs
IG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZ
LCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOwogfQpAQCAtOTM5LDcgKzkzOSw3IEBAIE5hdGl2
ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJh
bWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9s
ZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlx
dWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZs
YWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJ
RCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAtOTUzLDcgKzk1Myw3IEBAIE5hdGl2ZUltYWdl
UHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKQogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKCFt
X3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJf
Q09MT1JfQ09OVkVSVF9GTEFHKTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtl
VW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1Jf
Q09OVkVSVF9GTEFHKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBmYWxzZSwg
bV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
MTQ3LDggKzExNDcsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1
c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCkKICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVy
IGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1h
cHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQo
KSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBH
TF9ET05UX0NBUkUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQ
dW5jaENsaWVudD4gaG9sZVB1bmNoQ2xpZW50ID0gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIb2xlUHVu
Y2hDbGllbnQ+KG1fdmlkZW9TaW5rLmdldCgpKTsKICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5z
ZXRIb2xlUHVuY2hDbGllbnQoV1RGTW92ZShob2xlUHVuY2hDbGllbnQpKTsKICAgICAgICAgICAg
IHByb3h5LnB1c2hOZXh0QnVmZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTczZjRk
NGYwMDMyMzU2ZjE3N2ViZDdmYzRiOWU5NGE1MjkyZjk1YS4uNWZmOTcyODY1NjYzMTY0M2IyOTAz
ZmJlYzllMzk0NWJjMjMyOTNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKQEAgLTYzMiw3ICs2MzIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2Vi
U3JjTWFrZVJlcXVlc3QoR3N0QmFzZVNyYyogYmFzZVNyYywgYm9vbCBub3RpZnlBc3luY0NvbQog
ICAgICAgICAgICAgbG9hZE9wdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpM
b2FkT3B0aW9uOjpCdWZmZXJEYXRhOwogICAgICAgICBwcml2LT5yZXNvdXJjZSA9IHByaXYtPmxv
YWRlci0+cmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbG9hZE9wdGlv
bnMpOwogICAgICAgICBpZiAocHJpdi0+cmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHByaXYtPnJl
c291cmNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudD4ocHJvdGVjdG9yLmdldCgpLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpKTsKKyAg
ICAgICAgICAgIHByaXYtPnJlc291cmNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudD4ocHJvdGVjdG9yLmdldCgpLCBSZXNvdXJjZVJlcXVlc3QocmVx
dWVzdCkpKTsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocHJvdGVjdG9yLmdldCgpLCAi
U3RhcnRlZCByZXF1ZXN0Iik7CiAgICAgICAgICAgICBpZiAobm90aWZ5QXN5bmNDb21wbGV0aW9u
KQogICAgICAgICAgICAgICAgIGdzdF9iYXNlX3NyY19zdGFydF9jb21wbGV0ZShHU1RfQkFTRV9T
UkMoc3JjKSwgR1NUX0ZMT1dfT0spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDRlOWQxOWQ4NTI3ZDY5NjIwY2Y1
YWE5NDEwNzM2MjgzODFiM2M5ZjAuLmU2ODgwZDk4ZTdmY2FkMWQwNTNmODRlZDM4YTZmZDgxOThk
ZTdiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIg
cmUKICAgICBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpOwog
ICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tc2VfZGVidWcsICJ3ZWJraXRtc2Ui
LCAwLCAiV2ViS2l0IE1TRSBtZWRpYSBwbGF5ZXIiKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkg
ewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0s
CisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsgfSwKICAgICAg
ICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICB9CiB9CkBAIC00NTksNyArNDU5LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNldFJhdGUoZmxvYXQpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRTo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlhU291cmNl
ID8gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+
YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c291cmNlU2V0dXAoR3N0RWxlbWVudCog
c291cmNlRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHAKaW5kZXggMTE3MjQ1ODQxMGU5YTE0NTNiNjM1YjBmOGQ5MWI5ZmI0YTY5NmM1OC4u
MGYwOGMxOWRiZGJlNjliMDZmN2I3NTUzZjhhYjQ5N2Q0N2UzNzdhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9s
ZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVy
KCkKICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5
KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkp
OwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVu
ZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hv
dWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1
ZmZlcihXVEZNb3ZlKGxheWVyQnVmZmVyKSk7CiAgICAgICAgIH07CiAKQEAgLTE0MSw3ICsxNDEs
NyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aDo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAor
ICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3Vw
cG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2gu
aAppbmRleCBmMGQwNGQ0YzYzZDkzMTIwYmNlODA1YWI4ZmVhMjg3YTAxZTA0NDJhLi4yYWVmMGZl
ODRhNjcxYjcyMmM0YjQ1M2ZjZTcxN2I2NmE5N2U2YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01l
ZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2UsIHB1YmxpYyBDCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6RW1wdHk7IH07CiAgICAgTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlh
UGxheWVyOjpIYXZlTWV0YWRhdGE7IH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CiAKICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggZTFhM2E4NjYzMTQ3NWNhYjdhOWIxNzFi
NDA2MmQzOTNkODkwZTYwNi4uZWNmODk2OTNkYTMzODUyMDEyZTc1MDIxMTI5OTgwOTllYzhkYWMy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0Jv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApA
QCAtMzYsNiArMzYsNyBAQCBjbGFzcyBEYXRhVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPQm94IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JU09Cb3goKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1h
dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFs
Rm9ybWF0Qm94LmgKaW5kZXggNzBiYjg2MTEzMTZlNjg1Yjc2Yjc4ODM4YjVlZDA2MDM3NmI5YjFh
OS4uMTg4M2JhNDdiZGYzYTUyYWZiMmZmN2QwZGQ1Y2Q5ZGNkN2NkZDg3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFs
Rm9ybWF0Qm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBJU09PcmlnaW5hbEZvcm1hdEJveCA6IHB1YmxpYyBJU09Cb3gg
eworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2luYWxGb3JtYXRCb3ggZmluYWwgOiBwdWJs
aWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyBy
ZXR1cm4gImZybWEiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwCmlu
ZGV4IGQ4ZDc0MDFhNzU2MDA0NmM5OGFmZjhjYjExZWIyZTcyMjNjOTgxY2UuLmJkZmRiZGM5NmNm
MGUxYjUwYTcyODU4Mjg4YzliMmY0NzRmN2QwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hl
bWVJbmZvQm94LmNwcApAQCAtNTMsNyArNTMsNyBAQCBib29sIElTT1Byb3RlY3Rpb25TY2hlbWVJ
bmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLmZpcnN0ID09
IElTT1NjaGVtZVR5cGVCb3g6OmJveFR5cGVOYW1lKCkpIHsKLSAgICAgICAgbV9zY2hlbWVUeXBl
Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVUeXBlQm94PigpOworICAgICAgICBtX3Nj
aGVtZVR5cGVCb3ggPSBtYWtlVW5pcXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7CiAgICAgICAgIGlm
ICghbV9zY2hlbWVUeXBlQm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtNjgsNyArNjgsNyBAQCBib29sIElTT1Byb3RlY3Rpb25TY2hl
bWVJbmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICB9
CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVlKCkuZmlyc3QgPT0gSVNPU2NoZW1lSW5m
b3JtYXRpb25Cb3g6OmJveFR5cGVOYW1lKCkpIHsKLSAgICAgICAgbV9zY2hlbWVJbmZvcm1hdGlv
bkJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g+KCk7CisgICAg
ICAgIG1fc2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBtYWtlVW5pcXVlPElTT1NjaGVtZUluZm9ybWF0
aW9uQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lSW5mb3JtYXRpb25Cb3gtPnJlYWQodmll
dywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVt
ZUluZm9Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90
ZWN0aW9uU2NoZW1lSW5mb0JveC5oCmluZGV4IGYzN2I3NjI0OWQ4ZTAwZmExN2EwNTU5MjllNzc2
Njg1MTM3MzMzNjYuLjhlNTY3M2UwNTE2YTY1MDE0ZjVjZDQ5ZjYxYWE3Yjc1MzhkMmNhZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIElTT1NjaGVtZVR5cGVCb3g7CiBjbGFzcyBJU09TY2hlbWVJ
bmZvcm1hdGlvbkJveDsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPUHJvdGVjdGlvblNjaGVt
ZUluZm9Cb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1Byb3Rl
Y3Rpb25TY2hlbWVJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJzaW5mIjsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3Jt
YXRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Nj
aGVtZUluZm9ybWF0aW9uQm94LmNwcAppbmRleCBiNGYyNzdhNjg0N2NjMjBkNGZjOWQ2MjZmOWNh
Y2M3NDMwYWRhZjcwLi5jODNjNGZmN2IzOGFiZjFhZTIyZmZlNWU3MmM3YTFmODZhMDhlYjBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1l
SW5mb3JtYXRpb25Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBJ
U09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBv
ZmZzZXQpCiAgICAgICAgIGlmIChsb2NhbE9mZnNldCArIHNjaGVtZVNwZWNpZmljQm94VHlwZS52
YWx1ZSgpLnNlY29uZCA+IG9mZnNldCArIG1fc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICBtX3NjaGVtZVNwZWNpZmljRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SVNP
VHJhY2tFbmNyeXB0aW9uQm94PigpOworICAgICAgICBtX3NjaGVtZVNwZWNpZmljRGF0YSA9IG1h
a2VVbmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1l
U3BlY2lmaWNEYXRhLT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oCmluZGV4IDllZGIxODc4
YTliYTkxOWJlYjE5ZDdiNjIyM2Q5ZTdlNDY0ZjY4NTguLmU4ZWMwYzRjNjliNzRlODMzNDQ5ODk0
MWYyNGVlZTQxMGYyY2RkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oCkBAIC0yOSw3
ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT1NjaGVtZUluZm9ybWF0aW9uQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJzY2hpIjsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
U2NoZW1lVHlwZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1NjaGVtZVR5cGVCb3guaAppbmRleCA2MTk2MTAzOWY0OGNmMmJjNmVlN2I4ODQ4MDczYzgzNzZl
NTgzMTMwLi40YjhmMjYzMzc1MGY4YWRmOTBiYzI3YzJkMGNmMTRlZjk4MmMxNzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVU
eXBlQm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVUeXBlQm94IDogcHVibGljIElTT0Z1bGxCb3ggewor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlwZUJveCBmaW5hbCA6IHB1YmxpYyBJU09G
dWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gInNjaG0iOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaAppbmRleCBmNGVmZTI4MTA1MWUz
YzdiMjlkYmVmNzhlNDRkYTNiMDM4NzgwM2YzLi40N2ZhNDk3MjQ2YzcxNWJlMWQyY2VmOWIwZWE4
N2RkN2Y3OWVmNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCkBAIC0yOSw3ICsyOSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tF
bmNyeXB0aW9uQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPVHJhY2tFbmNyeXB0aW9uQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGlj
OgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAidGVuYyI7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNw
cAppbmRleCA5ZWM0MDg5NGYxZTI4YTA1YTIxNGNiMzIzNTE0ZjdiMTM5NTVkMjg0Li40YjUxNmVl
OGRkN2Y3ZDIzN2U4ZDYyNzI3OTdiMDMyZGQxZjVhY2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcApAQCAtMzUsNyArMzUsNyBA
QCB1c2luZyBKU0M6OkRhdGFWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElT
T1N0cmluZ0JveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPU3RyaW5nQm94IGZpbmFsIDog
cHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZW50cygpIHsg
cmV0dXJuIG1fY29udGVudHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCmluZGV4IGE2MTYwYjY2YWU5NDY4MjA2NzdhZDI5MzRiMTgx
ZGViOTNjYzRmNDkuLmFlMjNiZWZmZmVkNjRhNmRlMjg5MTc2ZTQxNTEwMTFmMDY3Yzk4OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTiBieXRlcyA6IEN1ZVRp
bWVCb3ggOiBib3ggOiBvcHRpb25hbAogLy8gTiBieXRlcyA6IEN1ZVNldHRpbmdzQm94IDogYm94
IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVQYXlsb2FkQm94IDogYm94IDogcmVxdWlyZWQK
LWNsYXNzIElTT1dlYlZUVEN1ZSA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPV2ViVlRUQ3Vl
IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgSVNPV2ViVlRUQ3VlKGNvbnN0
IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAzZDVlZjA5YjdkOTQwMzA1OTc0
MWQ4MDgyOGY1MThkZWZjODQyM2I1Li5lZjEwYjMzYTU0YjM1ZDdkNTcxZjA2ZTQxNmYxMjkyMjA4
OWFjMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlm
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihm
b250RGVzY3JpcHRvci5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOwogfQogCiBib29sIEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2Nl
bmVJbnRlZ3JhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcAppbmRleCAxMDljMmM1Nzc2NzlhMTIxNGFh
NmVhMTAxYzZmNDgwZmJhMmVjNjAxLi41YmVlNjEzZmNmNmI0NmEwN2M2MjhlNTgwMTZmNDliYjkw
MjFiMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcApAQCAtNjIs
NyArNjIsNyBAQCB2b2lkIFNjZW5lSW50ZWdyYXRpb246OnJlcXVlc3RVcGRhdGUoKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNjZW5lSW50ZWdyYXRp
b246OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxV
cGRhdGVTY29wZT4obWFrZVJlZigqdGhpcykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFVwZGF0
ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CiB9CiAKIFNjZW5lSW50ZWdyYXRpb246OkNsaWVudDo6
fkNsaWVudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMmIxYWVjZjBkMWI3ZTZhMzQxYmY5NGJm
ZmFlZDIyMGYxYTQ1ODYzOC4uNTBlMGMzYzdkOTc2ODI2YmE3YmI4MTg1ZDFlZTE0MjEyOWFkYTAy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYXV0byBjcmVhdGVDb21tYW5kKEFyZ3MmJi4u
LiBhcmd1bWVudHMpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXIKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiBhdXRvIGNyZWF0ZUNvbW1hbmQoKSAtPiBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfYmFzZV9vZjxPcGVyYXRpb25EYXRhPD4sIFQ+Ojp2YWx1ZSwgc3RkOjp1bmlx
dWVfcHRyPFBhaW50aW5nT3BlcmF0aW9uPj4KIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFQ+KCk7CiB9CiAKIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBQYWludGluZ09wZXJhdGlvbnMmIGNvbW1hbmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250
ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDBjOGE2NzBlM2EwYTM2
MzA3ZTNmMjk5ZWNkYTAyNTUyZmQ3NzRlZDEuLmIzNTA4ZDUxN2IyNGU0NzVjMDhhZjQ4YjMzZTQz
MWZkMjc5MjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGlu
Z0NvbnRleHRDYWlyby5jcHAKQEAgLTcwLDggKzcwLDggQEAgUGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyhCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgfSk7CiAK
ICAgICBtX2NhaXJvLmNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9jYWlyby5zdXJm
YWNlLmdldCgpKSk7Ci0gICAgbV9wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvPihtX2NhaXJvLmNvbnRleHQuZ2V0KCkpOwotICAg
IG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSgq
bV9wbGF0Zm9ybUNvbnRleHQpKTsKKyAgICBtX3BsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4dC5nZXQoKSk7Cisg
ICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KCptX3Bs
YXRmb3JtQ29udGV4dCkpOwogfQogCiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6
On5Gb3JQYWludGluZygpCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB2b2lkIFBhaW50aW5nQ29udGV4
dENhaXJvOjpGb3JQYWludGluZzo6cmVwbGF5KGNvbnN0IFBhaW50aW5nT3BlcmF0aW9ucyYgcGFp
bnRpbgogCiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmco
UGFpbnRpbmdPcGVyYXRpb25zJiBwYWludGluZ09wZXJhdGlvbnMpCiB7Ci0gICAgbV9ncmFwaGlj
c0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oCisg
ICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4oCiAgICAgICAgIFsmcGFpbnRpbmdPcGVyYXRpb25zXShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhaXJvT3BlcmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihj
b250ZXh0LCBwYWludGluZ09wZXJhdGlvbnMpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHAKaW5kZXggZDRjOWI2MDViNGNkMjhlMzQ4ZWZkODUzMzUwMzhiNThjOWE0ZGRm
YS4uOGUzNzkwZjdhYjU0ZjZiM2Q5NTZmMzA3MDRjNDI5YzJhY2RjMzE2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGF1dG8gQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3Rv
cnkoCiAgICAgICAgIFtdKEJhY2tpbmdTdG9yZSYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+KCk7CiAg
ICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDM4ZmRk
OTNkYTZiMTM4ODMxNDA1OTE2NTNjZGYyOWUwN2RlMzIzOTYuLjc1NjkyYzdjNGE3YmZkYjE4NzFk
ZjE4MDJlMzg3NzUzNmI2MTU1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1h
cHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBA
IC0zOSw3ICszOSw3IEBAIGF1dG8gQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsOjpj
cmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAg
ICBbXSh1aW50NjRfdCwgQ29tcG9zaXRpb25MYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDU2
MTcyOGI1ZWYxZjQwZDgwYzUzNTk5MjY3MTA2NmFkODc0ODE5YTcuLjJmYjBlYzk1OTE1YWViMGJh
MDk2ZjgwYmM2OTBkMmYzYjI4NDhjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzks
NyArMzksNyBAQCBhdXRvIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0
b3J5KENsaWVudCYgY2xpZW50KSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAg
ICAgICAgIFsmY2xpZW50XShDb250ZW50TGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50KTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
PihjbGllbnQpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0Mz
RExheWVyLmNwcAppbmRleCA1MmVjNzBiNjgxZjdiYzU2M2E2NzQ3NTQzNjIzODc2YjAzMTM5YTli
Li45YTliZDQ2ODNiMjY3NDJhZmVjYjE0OTFmNjE0NGYyYTc4YzU5NTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0Mz
RExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEdDM0RM
YXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgIGF1dG8mIHByb3h5ID0gZG93bmNh
c3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fY29udGVudExheWVy
LT5pbXBsKCkpLnByb3h5KCk7CiAKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9j
aygpKTsKLSAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1
cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkp
OworICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVy
ZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQog
CiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJh
Y2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwu
Y3BwCmluZGV4IGEyYWUzNGEzMTMyN2U4NzE1NjU0MTQ2ZDE4Zjc3YzdhNjdmMjQyMTYuLmQzNTNj
OGJlMWI1YmZhMTE2YjZjYjg1MjA5NzAyNzdjYzkzMjQ1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBs
LmNwcApAQCAtMzcsNyArMzcsNyBAQCBhdXRvIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBs
OjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAg
ICAgICBbXShJbWFnZUJhY2tpbmcmKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTY4NDhm
Y2VjYTQxZTk3MzZmMmEzODE3YTlmZDAzY2ViYWUzYWMxMS4uYjk2MzYzYjU1MTkzNTZjOGNkZjQ2
NTQzNjMyNmVkMDZjZWNlZDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wu
Y3BwCkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0
aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5z
aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMy
Q29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lv
bnMzRE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0
ZW5zaW9uczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggYjI0ZGYwMzVlMjg4ZTFlYjJmOGFmOWY3YWI5MWQ3NzlkMGFjYTQ5
ZS4uMmEwZTViNzZlNGQ2YmFiNzBlOTBiMmYzZDI4ZWI0M2MwN2Y0MjUxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC02NTYsNyArNjU2LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKICAgICBBTkdMRVJlc291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZvclNo
YWRlcjsKIAogICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1lSGFz
aE1hcEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAg
ICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigp
OwogICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRl
cnMuZ2V0KCkpOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsK
IApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRT
eW1ib2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAgICAgICAg
Ly8gQXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBi
ZWZvcmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBhbmQgYXJl
bid0IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0uCiAgICAg
ICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhhc2hNYXBG
b3JTaGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAg
ICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7
CiAgICAgICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNo
YWRlcnMuZ2V0KCkpOwogCiAgICAgICAgIGF1dG8gZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFz
aGVkTmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcApp
bmRleCAyNDMwNDZkOTg5YWQ3MzhmN2M5ZjcxNDk1NTY3Yzk2YmIzNGM1NjQxLi43MGEyMGQ1MGMz
NTIxYTYxMjNlNmVmYWYxZjQ3NjhmNjQ5NWNkZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMRVMuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0g
ICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdM
RVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1h
a2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7
CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBA
QCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3Jh
cGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250
ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cq
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29u
dGV4dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwg
bV9jb21waWxlcihpc0dMRVMyQ29tcGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dMU0xf
Q09NUEFUSUJJTElUWV9PVVRQVVQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKKyAgICAsIG1fcHJp
dmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5
bGUpKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQp
OwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlZDZjY2YxOTRiYmVlMWUwMGZkNDM5ZjYxYTZk
ZTYyZTQwMzAyZWEzLi44ZmQzYWQ0ZjcyZDc2NGJkOTVkMjIwZjU4MWVkMmI3OTYyODgzYzljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApAQCAt
MTA2LDkgKzEwNiw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFw
aGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAjaWYgVVNFKE5JQ09TSUEpCi0g
ICAgbV9uaWNvc2lhTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4o
KnRoaXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmlj
b3NpYTo6R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2Vsc2UKLSAgICBtX3RleG1h
cExheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+
KCp0aGlzLCByZW5kZXJTdHlsZSk7CisgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2VuZGlm
CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTMyNSwxMCArMzI1LDEwIEBAIEV4dGVu
c2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgIGlmICghbV9l
eHRlbnNpb25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICAgICAgLy8gZ2xHZXRTdHJpbmdp
IGlzIG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6
bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CisgICAgICAg
IG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBm
YWxzZSk7CiAjZWxzZQogICAgICAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBD
b3JlIHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCi0gICAgICAg
IG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlz
LCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIG1fZXh0
ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6
OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICB9CiAgICAgcmV0dXJu
ICptX2V4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXIuY3BwCmluZGV4IDE0ZjFkYmYxOGQ5MWIzOTA3NWUyZDUwZjIxNDliNzc2YmJjMTc0OTMu
LjY2MzIzMTU2OTViYTIxYzI2N2QxNTU5MzJlYmE5MTQ3ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBs
YXRmb3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KCkKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJv
eHktPmxvY2soKSk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZl
cihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2Nv
bnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQu
bV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5w
dXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2Nv
bnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1h
cmtMYXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggOTc0Yjg1Nzhi
ODhhYTY0MzUwOTFlOGIwYzM4YmIyZGI3MTBlZjEwMi4uYTJmNzU4NjZlMzIzYjhmZGJhNDNhMDA3
ZDQ0N2FhYTQ2NTc2YmZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTE4Niw3ICsxODYs
NyBAQCBUZXh0dXJlTWFwcGVyR0w6OlRleHR1cmVNYXBwZXJHTCgpCiAKICAgICBtX2RhdGEgPSBu
ZXcgVGV4dHVyZU1hcHBlckdMRGF0YShwbGF0Zm9ybUNvbnRleHQpOwogI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKLSAgICBtX3RleHR1cmVQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXBU
ZXh0dXJlUG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7CisgICAgbV90ZXh0dXJlUG9vbCA9IG1h
a2VVbmlxdWU8Qml0bWFwVGV4dHVyZVBvb2w+KG1fY29udGV4dEF0dHJpYnV0ZXMpOwogI2VuZGlm
CiB9CiAKQEAgLTc5MCw3ICs3OTAsNyBAQCBSZWY8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBl
ckdMOjpjcmVhdGVUZXh0dXJlKEdMaW50IGludGVybmFsRm9ybWF0KQogCiBzdGQ6OnVuaXF1ZV9w
dHI8VGV4dHVyZU1hcHBlcj4gVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRl
ZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHTD4oKTsKIH0KIAogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDdh
ZmRmMzBhMDViY2E1Mzk3YjgwMThiZmViZDg5ZTBlMWRhNTAzMzMuLmUxMWEwYmIyN2I4MTBjMmQ1
Mjc2YjJhOWIwYzUwOWY4ODk1MDY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZgogICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwog
ICAgIHRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVy
ZUdMJj4odGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQp
OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUp
LCBtX2V4dHJhRmxhZ3MpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggYzcxNGY2ZDc4YzFjZjFhNjFkNGRmZjZi
NDIwNTIxYjAyZWNkN2M1MC4uMzc5MzY3NWFjOGQ2YjNjMzJhM2IzMTgxOTNlNDlhN2IzN2RjNDg4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNw
cApAQCAtNzEsOCArNzEsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjbwogICAgIGlmIChtX3Rh
cmdldExheWVyICYmIG1fY3VycmVudEJ1ZmZlcikKICAgICAgICAgbV90YXJnZXRMYXllci0+c2V0
Q29udGVudHNMYXllcihtX2N1cnJlbnRCdWZmZXIuZ2V0KCkpOwogCi0gICAgbV9yZWxlYXNlVW51
c2VkQnVmZmVyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZp
cmVkKTsKLSAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxv
b3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNv
bXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKTsKKyAgICBtX3JlbGVhc2VVbnVzZWRCdWZm
ZXJzVGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOworICAgIG1f
Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlz
LCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0
ZVRpbWVyRmlyZWQpOwogCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX2NvbXBvc2l0
b3JUaHJlYWRVcGRhdGVUaW1lci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpD
b21wb3NpdGluZ1RocmVhZFVwZGF0ZVRpbWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMzY3ZDhhNTNjZjM3MGQy
MjAyZDZmMzQwMWNkY2IzYTAyZmY0MmMyYi4uZDQ3NTcxMGJhMGNkZGZiY2RiZGEwYzY4Y2UzMGI4
MWVmYWFkNjljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogCiAgICAgLy8gRW5zdXJlIHRo
ZSBUaWxlZEJhY2tpbmdTdG9yZSBvYmplY3QsIGFuZCBlbmZvcmNlIGEgY29tcGxldGUgcmVwYWlu
dCBpZiBpdCdzIG5vdCBiZWVuIHByZXNlbnQgeWV0LgogICAgIGlmICghbGF5ZXJTdGF0ZS5tYWlu
QmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IHN0
ZDo6bWFrZV91bmlxdWU8VGlsZWRCYWNraW5nU3RvcmU+KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRz
U2NhbGUoKSk7CisgICAgICAgIGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IG1ha2VVbmlx
dWU8VGlsZWRCYWNraW5nU3RvcmU+KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CiAg
ICAgICAgIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudCA9IHRydWU7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzYmU0
MzExZGVhYTAyNDk3YzdlZDFjZGNhMTM0NWJhNWE2ODAzMTA5Li40YTY5NzgyMmU0ZGUyY2RiOGI2
NmY4MWQ0MDRkOGRiZTgyYjQ5ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxl
ZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0
b3JlOjpjcmVhdGVUaWxlcyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVj
dCYgcwogICAgIHVuc2lnbmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6
ZSgpOwogICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsr
bikgewogICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRl
W25dOwotICAgICAgICBtX3RpbGVzLmFkZChjb29yZGluYXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFRp
bGU+KCp0aGlzLCBjb29yZGluYXRlKSk7CisgICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUs
IG1ha2VVbmlxdWU8VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKICAgICB9CiAgICAgcmVxdWly
ZWRUaWxlQ291bnQgLT0gdGlsZXNUb0NyZWF0ZUNvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3Rh
dGUuY3BwCmluZGV4IGM4OGU5YmVmOWQ2NmNhMmI1NTAxOGM5MGY0YjBhNDI4YjQ2ODJlZjguLjRl
YWYwMDExMjBjNDdmZmNlNTVhYjRkZmE5MjE4M2NlOGIzMTk0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtU3RhdGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1T
dGF0ZTo6b3BlcmF0b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBpZiAobV9t
YXBRdWFkKSB7CiAgICAgICAgIG1fbGFzdFBsYW5hclF1YWQgPSBvdGhlci5tX2xhc3RQbGFuYXJR
dWFkOwogICAgICAgICBpZiAob3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAg
ICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0
UXVhZD4oKm90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOworICAgICAgICAgICAgbV9s
YXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9s
YXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFz
dFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAg
VHJhbnNmb3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3Jt
U3RhdGUmIG90aGVyKQogICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBudWxscHRyOwogCiAg
ICAgaWYgKG90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pCi0gICAgICAgIG1fYWNjdW11bGF0
ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3Ro
ZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zv
cm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRl
ZFRyYW5zZm9ybSk7CiAgICAgICAgIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTEyOSwxMiAr
MTI5LDEyIEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Gcm9tQ29uCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBh
Y2N1bXVsYXRlZCB0cmFuc2Zvcm0gZnJvbSBsYXN0IHRpbWUsIG11bHRpcGx5IGluIHRoaXMgdHJh
bnNmb3JtCiAgICAgaWYgKG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKG1f
ZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQotICAgICAgICAgICAgbV9hY2N1
bXVsYXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+
KHRyYW5zZm9ybUZyb21Db250YWluZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAg
ICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVs
dGlwbHkodHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRl
ID09IEFjY3VtdWxhdGVUcmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3Rh
cnRlZCB0byBhY2N1bXVsYXRlCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6
Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KTsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAgIH0KICAgICAKICAgICBp
ZiAoYWNjdW11bGF0ZSA9PSBGbGF0dGVuVHJhbnNmb3JtKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAg
dm9pZCBUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxv
YXRRdWFkKiBxdWFkKQogICAgIC8vIE1hcCB0aGUgcXVhZCBiYWNrIHRocm91Z2ggYW55IHRyYW5z
Zm9ybSBvciBvZmZzZXQgYmFjayBpbnRvIHRoZSBsYXN0IGZsYXR0ZW5pbmcgY29vcmRpbmF0ZSBz
cGFjZS4KICAgICBGbG9hdFF1YWQgYmFja01hcHBlZFF1YWQoKnF1YWQpOwogICAgIG1hcFF1YWQo
YmFja01hcHBlZFF1YWQsIGludmVyc2VEaXJlY3Rpb24oKSk7Ci0gICAgbV9sYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7
CisgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihi
YWNrTWFwcGVkUXVhZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRR
dWFkJiBxdWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sKiB3YXNDbGFtcGVk
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCmluZGV4IDEwODYzNzQwMGEyMGZhMmYwOWRm
NmFkNDM5MzNjYTdkYTE3ZjQ4NjEuLmI2MjU4MzZhNWNlMjI1YmY0N2YzMzBjMDhjMjlkOGM3NTY1
MmVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3Mg
VHJhbnNmb3JtU3RhdGUgewogICAgICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0
YXRlIChubyBhY2N1bXVsYXRlZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBx
dWFkLgogICAgICAgICBBU1NFUlQobV9hY2N1bXVsYXRlZE9mZnNldCA9PSBMYXlvdXRTaXplKCkp
OwogICAgICAgICBpZiAocXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1
YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOworICAgICAgICAgICAgbV9s
YXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxs
cHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggZDMxYTI1NzlmYjFlMWM3OTQyNWQwMjkwNWViZWJj
ODhkMTRhZGQ1MC4uOGY3NzAyNzVkZTY5OTU2OGM4NTE1YWVhMGYyY2ZhMGU1MjA1NjcyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHAKQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3Jt
RGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAg
IGJvb2wgc3ludGhlc2l6ZUJvbGQgPSBpc0dESUZvbnRXZWlnaHRCb2xkKHdlaWdodCkgJiYgIWlz
R0RJRm9udFdlaWdodEJvbGQobG9nRm9udC5sZldlaWdodCk7CiAgICAgYm9vbCBzeW50aGVzaXpl
SXRhbGljID0gaXNJdGFsaWMoZm9udERlc2NyaXB0aW9uLml0YWxpYygpKSAmJiAhbG9nRm9udC5s
Zkl0YWxpYzsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZv
cm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXpl
KCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOworICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9u
dERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVz
aXplSXRhbGljLCB1c2VHREkpOwogCiAjaWYgVVNFKENHKQogICAgIGJvb2wgZm9udENyZWF0aW9u
RmFpbGVkID0gIXJlc3VsdC0+Y2dGb250KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
aW5kZXggMzg3YTIzOWY4MjljMmQ3ODA5YzJjOTZkM2ZlMTI0ZGVlMTRiZDNkNy4uNjQ4NDg1YWMy
NmNiMjM3NWNmNjU3NGY4MWZmNGNkNjU2NzJjNTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAg
Zm9udFJlZmVyZW5jZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsK
ICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVu
Y2UsIGZvbnROYW1lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IGFiN2M3OTBkNjBmMmU4Zjc0YWYwM2Mw
NmFjZmM3MmM4ZTM5YzIyZDkuLmVlZWFmZWJkOTMzY2E5Yzc4ZGQwNTE0MTNkMjMzNDRjYTg1M2Iw
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC05MSw3ICs5
MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgaWYgKCFmb250UmVmZXJlbmNlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250
TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQo
Y29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcAppbmRleCBiOTUz
NTUwM2MzMDZjNTAxYWEzOTNmMzFmZmQ5Mjg4NWVkZTliZGVmLi5mNGFhZDNiNTYzZTNkMTQzNGZm
MzE4ZTRjNjIyNzMyNWMwNTljNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKQEAgLTEw
Myw3ICsxMDMsNyBAQCBMUkVTVUxUIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpQcml2YXRlOjpmdWxs
c2NyZWVuQ2xpZW50V25kUHJvYyhIV05EIGh3bmQsIFVJTlQgbQogfQogCiBGdWxsU2NyZWVuQ29u
dHJvbGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIoRnVsbFNjcmVlbkNvbnRyb2xsZXJDbGllbnQq
IGNsaWVudCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFByaXZhdGU+KHRoaXMs
IGNsaWVudCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxQcml2YXRlPih0aGlzLCBjbGll
bnQpKQogewogICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwogfQpAQCAtMTMxLDEzICsx
MzEsMTMgQEAgdm9pZCBGdWxsU2NyZWVuQ29udHJvbGxlcjo6ZW50ZXJGdWxsU2NyZWVuKCkKICAg
ICBtX3ByaXZhdGUtPm1fb3JpZ2luYWxGcmFtZSA9IG9yaWdpbmFsRnJhbWU7CiAKICAgICBBU1NF
UlQoIW1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fYmFj
a2dyb3VuZFdpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3Vu
ZFdpbmRvdyA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4o
bV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdy0+Y3Jl
YXRlV2luZG93KDApOwogICAgIDo6QW5pbWF0ZVdpbmRvdyhtX3ByaXZhdGUtPm1fYmFja2dyb3Vu
ZFdpbmRvdy0+aHduZCgpLCBrRnVsbFNjcmVlbkFuaW1hdGlvbkR1cmF0aW9uLCBBV19CTEVORCB8
IEFXX0FDVElWQVRFKTsKIAogICAgIG1fcHJpdmF0ZS0+bV9jbGllbnQtPmZ1bGxTY3JlZW5DbGll
bnRXaWxsRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fZnVsbFNj
cmVlbldpbmRvdyk7Ci0gICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBzdGQ6Om1h
a2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5n
ZXQoKSk7CisgICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBtYWtlVW5pcXVlPE1l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAg
QVNTRVJUKG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93KTsKICAgICBtX3ByaXZhdGUtPm1f
ZnVsbFNjcmVlbldpbmRvdy0+Y3JlYXRlV2luZG93KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENh
aXJvV2luLmNwcAppbmRleCAxMDY3Yjk2MDkzZGIyZWQ1OTFhMjFhMzFkOWQwMjU2ZGMxMjkzZTg5
Li5mMTQ0MjU3MmNjNmQxZDU0YmJlZTU4YmRiYzM2ZWRmNzc0YWFiYjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9X
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDYWlyb1dpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtSW5pdChIREMgZGMsIGJvb2wgaGFzQWxwaGEpCiAKICAgICBjYWlyb190KiBj
ciA9IGNyZWF0ZUNhaXJvQ29udGV4dFdpdGhIREMoZGMsIGhhc0FscGhhKTsKIAotICAgIG1fZGF0
YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybUNvbnRleHRDYWlybz4oY3IpKTsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlKG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7
CiAgICAgbV9kYXRhLT5wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZSht
X2RhdGEpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBkYzsKICAgICBpZiAocGxhdGZvcm1Db250ZXh0
KCktPmNyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IGMyYmFmYWY5
NmExNjA3MDgwYjc2MzM5NTI2NjJlNzY3NzYxNGIwMGMuLjk2YzgyODFhZjRiMjJjNjY4NmFjYjE0
YzVlODJjMWQ2OWI5MGRkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAt
NjMsNyArNjMsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMgaGRjLCBJ
RDJEMURDUmVuZGVyVGFyZ2V0KiogcmVuZGVyVGFyZ2V0LCBSRQogCiAgICAgKCpyZW5kZXJUYXJn
ZXQpLT5CaW5kREMoaGRjLCAmcmVjdCk7CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdl
dCk7CisgICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOwogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShvd25lZFBsYXRmb3JtQ29udGV4dCksIEJp
dG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogICAgIG1fZGF0YS0+bV9oZGMg
PSBoZGM7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRm
b3JtSW5pdChIREMgaGRjLCBib29sIGhhc0FscGhhKQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldC5nZXQoKSk7
CisgICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldC5nZXQoKSk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwg
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hk
YyA9IGhkYzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBi
ZDc2ZWZiYmE5ZDBlODk3ZDNkMjg4ZTg1ZThkMjQ0NGNjNGY4ZjRlLi4xZWJiNWIwOWQzODUzN2Mw
MTkyMjBiOTQ3ZGNhZDk0NGQ4ZTEwMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJELmNwcApAQCAtNDYsNyArNDYsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29u
dGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRgogICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAg
ICAgICBbJnBsYXRmb3JtQ29udGV4dF0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHBsYXRm
b3JtQ29udGV4dCk7CiAgICAgICAgIH0pOwogfQogCkBAIC01NSwxNCArNTUsMTQgQEAgR3JhcGhp
Y3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ6OmNyZWF0ZUYKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0Nv
bnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgW3JlbmRlclRhcmdldF0oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHJlbmRlclRhcmdldCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+
KGNvbnRleHQsIHJlbmRlclRhcmdldCk7CiAgICAgICAgIH0pOwogfQogCiBHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQpCiAg
ICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRy
YW5zZm9ybSB7IH0pCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCi0g
ICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmlu
Z0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3ND
b250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBt
X3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQo
KSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CkBAIC03
MCw5ICs3MCw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4CiAKIEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKICAgICA6IEdyYXBoaWNz
Q29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkK
LSAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKKyAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRl
eHQobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKICAg
ICAsIG1fcGxhdGZvcm1Db250ZXh0KCptX293bmVkUGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9w
cml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPiht
X3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0
VHlwZTo6R1BVTWVtb3J5KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCiB7CiAgICAgbV9wbGF0Zm9y
bUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAg
IG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
V2luLmNwcAppbmRleCA1YmRlNGNlZGY1MTZhOTE3OWE2ZDNkM2IzZTMzZDEzNGVkNWFiNTExLi4x
ZDgwNDIwY2Y3ZWM2Y2Q3NzVhNjJiYWVhMjJmOTkwNjA3ZWI0Y2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
V2luLmNwcApAQCAtOTUsNyArOTUsNyBAQCBHcmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA6
On5XaW5kb3dzQml0bWFwKCkKIAogc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDo6V2lu
ZG93c0JpdG1hcD4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVXaW5kb3dzQml0bWFwKGNvbnN0IElu
dFNpemUmIHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2luZG93c0JpdG1h
cD4obV9kYXRhLT5tX2hkYywgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2luZG93c0Jp
dG1hcD4obV9kYXRhLT5tX2hkYywgc2l6ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkQuY3BwCmluZGV4IDA2YzE3NDU3OWE0YmMxMzA5MWYzNGI1Nzk0YWFhOTI5OTNiYmJhMjQuLjM1
YTlmZjYxMTM1MWMzM2M3MTc0ZDkyYTFmZGNmNDQ3MGU4MWE4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyRC5jcHAKQEAgLTExMiw4ICsxMTIsOCBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBOb3RlOiBUaGlzIHBsYWNlcyB0aGUgYml0bWFwY29udGV4
dCBpbnRvIGEgbG9ja2VkIHN0YXRlIGJlY2F1c2Ugb2YgdGhlIEJlZ2luRHJhdyBjYWxsIGluIHRo
ZSBjb25zdHJ1Y3Rvci4KLSAgICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Ci0gICAg
bV9kYXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRh
LnBsYXRmb3JtQ29udGV4dC5nZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdD
b250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKKyAgICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Cisg
ICAgbV9kYXRhLmNvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRhLnBs
YXRmb3JtQ29udGV4dC5nZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250
ZXh0VHlwZTo6R1BVTWVtb3J5KTsKIAogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA1ODM4ZWMxNTdh
MmM3YjcxNjNiNzE2ODJhNGViOGM4MDM0ZTk2MzIxLi42ZDY0YWU5YTZlM2E0MTdmYjE0ZjEyMTY2
ZjY4ZDNjOWE1NTI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmNwcApAQCAtODIsNyArODIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFF
bmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0g
ICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsgfSwK
KyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VV
bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAogICAg
ICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAg
ICAgfQogfQpAQCAtMzAxLDcgKzMwMSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZm
ZXJlZCgpIGNvbnN0CiB7IAotICAgIGF1dG8gcmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byByYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKTsKICAgICBpZiAobV9wcmVzZW50ZXIgJiYgbV9wcmVzZW50ZXItPm1heFRp
bWVMb2FkZWQoKSA+IDApCiAgICAgICAgIHJhbmdlcy0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUo
KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fcHJlc2VudGVyLT5tYXhUaW1lTG9hZGVk
KCkpKTsKICAgICByZXR1cm4gcmFuZ2VzOwpAQCAtODg4LDcgKzg4OCw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVv
UHJlc2VudGVyKE1lCiAgICAgbV9zb3VyY2VSZWN0LmJvdHRvbSA9IDE7CiAgICAgbV9zb3VyY2VS
ZWN0LnJpZ2h0ID0gMTsKIAotICAgIG1fcHJlc2VudGVyRW5naW5lID0gc3RkOjptYWtlX3VuaXF1
ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKKyAgICBtX3ByZXNlbnRlckVuZ2luZSA9IG1ha2VVbmlx
dWU8RGlyZWN0M0RQcmVzZW50ZXI+KCk7CiAgICAgaWYgKCFtX3ByZXNlbnRlckVuZ2luZSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAppbmRleCAzMzdmYWYzNzhkYTc5NTViZWE2MTBh
ZWM5MDc1Nzk2NmQ2YzQ4MjAwLi43ZTQ0NGQwMjc2ZGI0YmRkYTY1ODc5N2JkNTQzMDZkNmZmOWNi
Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tD
QUltYWdlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9XS0NBSW1hZ2VRdWV1ZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBzdGF0aWMgdm9pZCBXS0NB
SW1hZ2VRdWV1ZVJlbGVhc2UoQ0FJbWFnZVF1ZXVlUmVmIGlxKQogfQogCiBXS0NBSW1hZ2VRdWV1
ZTo6V0tDQUltYWdlUXVldWUodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMy
X3QgY2FwYWNpdHkpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VR
dWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1
ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBhZG9wdENGKHdr
Q0FJbWFnZVF1ZXVlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIGNhcGFjaXR5KSk7CiB9CiAKIFdLQ0FJ
bWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZShjb25zdCBXS0NBSW1hZ2VRdWV1ZSYgbykKLSAgICA6
IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKKyAg
ICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKIHsKICAg
ICBtX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IG8ubV9wcml2YXRlLT5tX2ltYWdlUXVldWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXgg
NzFhMDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NC4uNDIyNTJkMzRiNTRmZTZj
MmMyNmI1MjJjNjYwZTg2MmYwNTZlZjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDMsMjQgKzQzLDI0IEBAIGVudW0gQ2xpcGJvYXJk
RGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0
ZWJvYXJkPigiQ0xJUEJPQVJEIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4o
IkNMSVBCT0FSRCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQYXN0ZWJvYXJkPigiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3Rl
Ym9hcmQ+KCJQUklNQVJZIik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRh
OjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9u
RGF0YTo6Y3JlYXRlKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVi
b2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewog
ICAgIEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVs
cGVyLmNwcAppbmRleCA0OTAzNzFhZDg5ZWYyZTc5NmUzNDAxYWFjMWRiYjgwNmVhOTY2ZWIwLi5i
NmUwNThiZTMzMDY3MjU0YmJiNjMwNTM0OWVhODZjYWFlNWRhMjRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC0zMDAsNyArMzAw
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0Ns
aXBib2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWwKIAogICAgIGlmIChudW1iZXJPZlRhcmdldHMg
PiAwICYmIHRhYmxlKSB7CiAgICAgICAgIFNldEZvclNjb3BlPFNlbGVjdGlvbkRhdGEqPiBjaGFu
Z2Uoc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgY29uc3RfY2FzdDxTZWxlY3Rpb25EYXRhKj4o
JnNlbGVjdGlvbikpOwotICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBi
b2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBXVEZNb3ZlKHByaW1hcnlT
ZWxlY3Rpb25DbGVhcmVkKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8Q2xpcGJv
YXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJpbWFyeVNl
bGVjdGlvbkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0
YShjbGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENsaXBib2FyZENvbnRlbnRz
Q2FsbGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgZGF0YS5nZXQoKSkpIHsK
ICAgICAgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShjbGlwYm9hcmQsIG51bGxw
dHIsIDApOwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEo
KSBzdWNjZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sgdGFrZXMgdGhlIG93bmVy
c2hpcCBvZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAppbmRleCBiZGNjOTllODU5ZDQ5NzUw
NzhmZjNjNWUyZWJjMzg1ZDliOTViOTUyLi43M2UwNzU4YTZlZGQxZTE5MzIzMTA4M2Y4OWE3ZTdm
ZGYyMGQxMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHYWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUdhZGdldC5jcHAKQEAgLTM1LDIwICszNSwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
VGhlbWVHYWRnZXQ+IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoY29uc3QgUmVuZGVyVGhlbWVH
YQogewogICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdl
dDo6VHlwZTo6R2VuZXJpYzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGlu
Z3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpUZXh0Rmll
bGQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxk
R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNp
YmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6UmFk
aW86CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6Q2hlY2s6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJl
bnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAg
ICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QXJyb3c6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2li
bGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVB
cnJvd0dhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2Ug
UmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6Okljb246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9z
aXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUljb25HYWRnZXQ+
KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1l
R2FkZ2V0OjpUeXBlOjpTY3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3Np
dGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyR2Fk
Z2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJU
aGVtZUdhZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRp
b24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4o
aW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIH0KIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZVdpZGdldC5jcHAKaW5kZXggMDVkMTJkZDllYWZiZWYwMmE0NTljYTUyNzY0MTdhNWI5YjBl
ODk3Ni4uY2E2ZWQ5MThhNTAzM2UyOTc2ZGI4NGQ4OWMyMDQ4ODcwMGYwMmJjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCkBAIC00
Miw0OSArNDIsNDkgQEAgUmVuZGVyVGhlbWVXaWRnZXQmIFJlbmRlclRoZW1lV2lkZ2V0OjpnZXRP
ckNyZWF0ZShUeXBlIHdpZGdldFR5cGUpCiAgICAgYXV0byBhZGRSZXN1bHQgPSB3aWRnZXRNYXAo
KS5lbnN1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdpZGdldFR5cGUpLCBbd2lkZ2V0VHlwZV0o
KSAtPiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVXaWRnZXQ+IHsKICAgICAgICAgc3dpdGNo
ICh3aWRnZXRUeXBlKSB7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZl
cnRpY2FsU2Nyb2xsYmFyUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJU
aGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJU
aGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElD
QUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJh
cjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJU
aGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2Fs
UG9zaXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpI
b3Jpem9udGFsU2Nyb2xsYmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJU
aGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklF
TlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsSW5k
aWNhdG9yTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xs
YmFyOjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0
aW9uOjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Ny
b2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpN
b2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpM
ZWZ0KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNj
cm9sbEluZGljYXRvcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVT
Y3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAgICBjYXNlIFJlbmRlclRo
ZW1lV2lkZ2V0OjpUeXBlOjpDaGVja0J1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRv
bjo6VHlwZTo6Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhl
bWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlJhZGlvQnV0dG9uOgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJl
bmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0
b246OlR5cGU6OlJhZGlvKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
QnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVC
dXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1
bHQ6Ok5vKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0dG9uRGVm
YXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0
dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVs
dDo6WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6Q29tYm9Cb3g6
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUNvbWJvQm94
PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVDb21ib0JveD4o
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6RW50cnk6Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oKTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VsZWN0ZWRFbnRyeToKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJlbmRlclRoZW1lRW50cnk6
OlNlbGVjdGVkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhl
bWVFbnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7CiAgICAgICAgIGNhc2Ug
UmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNlYXJjaEVudHJ5OgotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+KCk7CiAgICAgICAgIGNh
c2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNwaW5CdXR0b246Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CiAgICAgICAgIGNh
c2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2xpZGVyOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElP
Tl9WRVJUSUNBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNs
aWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVt
ZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNsaWRlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRB
TCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RL
X09SSUVOVEFUSU9OX0hPUklaT05UQUwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0
OjpUeXBlOjpQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRl
dGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lUHJv
Z3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVybWluYXRlKTsKICAg
ICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SW5kZXRlcm1pbmF0ZVByb2dyZXNz
QmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9n
cmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5kZXRlcm1pbmF0ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5k
ZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsKICAgICAgICAgY2FzZSBS
ZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6TGlzdFZpZXc6Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJU
aGVtZVdpZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lSWNvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lSWNvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
V2luZG93OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVX
aW5kb3c+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVdpbmRv
dz4oKTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyVGhlbWVTY3JvbGxiYXI6
OlJlbmRlclRoZW1lU2Nyb2xsYmFyKEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBNb2RlIG1v
ZGUKICAgICBpbmZvLnR5cGUgPSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJpYzsKICAg
ICBpbmZvLm5hbWUgPSAiY29udGVudHMiOwogICAgIGluZm8uY2xhc3NMaXN0LmNsZWFyKCk7Ci0g
ICAgbV9jb250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGlu
Zm8sIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1fc2Nyb2xsYmFyLmdldCgp
KTsKKyAgICBtX2NvbnRlbnRzID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5m
bywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIuZ2V0KCkp
OwogICAgIGluZm8ubmFtZSA9ICJzbGlkZXIiOwogICAgIG1fc2xpZGVyID0gUmVuZGVyVGhlbWVH
YWRnZXQ6OmNyZWF0ZShpbmZvLCBtX2NvbnRlbnRzLT5jaGlsZChtX3Ryb3VnaFBvc2l0aW9uKSk7
CiB9CkBAIC0xOTcsNyArMTk3LDcgQEAgUmVuZGVyVGhlbWVDb21ib0JveDo6UmVuZGVyVGhlbWVD
b21ib0JveCgpCiAgICAgfTsKICAgICBpbmZvLm5hbWUgPSAiYm94IjsKICAgICBpbmZvLmNsYXNz
TGlzdCA9IHsgImhvcml6b250YWwiLCAibGlua2VkIiB9OwotICAgIG1fYm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUkla
T05UQUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKKyAgICBtX2JveCA9IG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFM
LCBjaGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CiAgICAgUmVuZGVyVGhlbWVHYWRnZXQqIGJ1
dHRvbiA9IG1fYm94LT5jaGlsZCgwKTsKICAgICBpbmZvLmNsYXNzTGlzdC5yZW1vdmVMYXN0KCk7
CiAgICAgbV9idXR0b25Cb3ggPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGluZm8sIGJ1dHRv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDg0MDdjMTEwMWRkZDZkYjZlMzc4
ZGVmY2IzYWI4MjZiZjcyNjQ1NGQuLjc4Njk3ZWIwMDAwZjdmN2I4MmE3ZDBlY2Y1Zjk4NWExZTky
ODljMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJv
b2wgQk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIoYm9vbCBvbmx5U2l6ZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwg
aW1nRGF0YU9mZnNldCwgZmFsc2UpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8Qk1Q
SW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwgZmFsc2Up
OwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3YmE3ZWQ5MTAxY2UyNWE5YmY2ZTIzMTA4N2Jm
MGJjMTE0Y2MyMmQ2Li40ZjM0ODdlMzM0NzY0MDU0NzRjZjg2YjVjNjA2ZDJjMTk4OGM3Y2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5
LCBib29sIGFsbERhdGFSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpIHsK
LSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlz
KTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsK
ICAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDFjY2E1ZTU5ZWViMzUxYjA1OGEyMWRiMTM0ZjY0Mzc5
MWU1MDc3Y2EuLmQ3NzE4NmVhOTczOWJkZmIyYzU2MjI4ZWU0Y2Y1ZTg4MjhkODg1OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlUmVhZGVyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIGJvb2wgR0lGRnJhbWVD
b250ZXh0OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwg
V2ViQ29yZTo6CiAgICAgICAgIGlmICghaXNEYXRhU2l6ZURlZmluZWQoKSB8fCAhaXNIZWFkZXJE
ZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBtX2x6d0NvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNsaWVudCwgdGhpcyk7CisgICAg
ICAgIG1fbHp3Q29udGV4dCA9IG1ha2VVbmlxdWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlz
KTsKICAgICAgICAgaWYgKCFtX2x6d0NvbnRleHQtPnByZXBhcmVUb0RlY29kZSgpKSB7CiAgICAg
ICAgICAgICBtX2x6d0NvbnRleHQgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OnNldFJlbWFpbmluZ0J5
dGVzKHNpemVfdCByZW1haW5pbmdCeXRlcykKIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OmFkZEZyYW1l
SWZOZWNlc3NhcnkoKQogewogICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5KCkgfHwgbV9mcmFtZXMu
bGFzdCgpLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7CisgICAgICAgIG1fZnJh
bWVzLmFwcGVuZChtYWtlVW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7
CiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIHRvIGNsb3NlIHRvIGRvTFpXKCkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDE4NzBiYjE2MGI4NDk0OGYwYjU5ZGU0NTEx
NjM2YmE0YzBmMzhmMmUuLmZmNmExYzg3YWU2ZjA1YjQ5Y2NjMTI4YWJlMDVjMzAzZDZlZWJhZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBJ
Q09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBoYXZlIGFscmVhZHkgc2l6ZWQgbV9mcmFtZUJ1ZmZlckNhY2hlIGJlZm9y
ZSB0aGlzLCBhbmQKICAgICAgICAgICAgIC8vIHdlIG11c3Qgbm90IHJlc2l6ZSBpdCBhZ2FpbiBs
YXRlciAoc2VlIGNhdXRpb24gaW4gZnJhbWVDb3VudCgpKS4KICAgICAgICAgICAgIEFTU0VSVCht
X2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpID09IG1fZGlyRW50cmllcy5zaXplKCkpOwotICAgICAg
ICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFk
ZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOworICAgICAgICAgICAg
bV9ibXBSZWFkZXJzW2luZGV4XSA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRp
ckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJz
W2luZGV4XS0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJz
W2luZGV4XS0+c2V0QnVmZmVyKCZtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjcyYzU1YTJjYjkwOWZhMzQ2
MWNmNzk1ZjA0ZGNlYWQ1MTA0ZThlZS4uZDBiOTE2YTVkYWY4YTNhYTI1NGY0OTczNDczYTgzMTU1
NzI5ZGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC02NTMsNyArNjUz
LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0g
ICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRoaXMp
OworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8SlBFR0ltYWdlUmVhZGVyPih0aGlzKTsK
IAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2Vp
dmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjMThhMzliNTkxMzNhMzE4ZjE1MTA1ODFlOGY5MWViZGQ3
Njg3OWFiLi42MmNiOWIyMmEwMWYyNmU5ZjJjZDQxZGVhMzgxYjM2MzY4OTdlZTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgUE5HSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5zaWduZWQgaGFsdEF0RnJhbWUsIGJvb2wg
YWxsRGF0YVJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0gICAgICAg
IG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAg
ICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CiAKICAgICAv
LyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2ZSByZWNlaXZlZCBhbGwg
dGhlIGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IDIwOWY4OGY0N2EzYjdjZGMw
MTQzZGU5MmUyNGJhZGRmOTY2NGI1ZjQuLmNhZTNkY2YxNjQ3OTZjZWVjYjY4YjI0NDhmMTEzM2Mx
MGVjOWMyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVD
YWNoZS5tbQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZShXQUtXaW5kb3cqIHdpbmRvdykKICAgICA6IG1fd2luZG93
KHdpbmRvdykKICAgICAsIG1fdG9tYnN0b25lKGFkb3B0TlMoW1tMZWdhY3lUaWxlQ2FjaGVUb21i
c3RvbmUgYWxsb2NdIGluaXRdKSkKLSAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQoc3RkOjptYWtl
X3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQorICAgICwgbV96b29t
ZWRPdXRUaWxlR3JpZChtYWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6
ZSkpCiAgICAgLCBtX3RpbGVDcmVhdGlvblRpbWVyKCp0aGlzLCAmTGVnYWN5VGlsZUNhY2hlOjp0
aWxlQ3JlYXRpb25UaW1lckZpcmVkKQogewogICAgIFtob3N0TGF5ZXIoKSBpbnNlcnRTdWJsYXll
cjptX3pvb21lZE91dFRpbGVHcmlkLT50aWxlSG9zdExheWVyKCkgYXRJbmRleDowXTsKQEAgLTIz
Niw3ICsyMzYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQog
CiAgICAgaWYgKG1fY3VycmVudFNjYWxlICE9IG1fem9vbWVkT3V0VGlsZUdyaWQtPnNjYWxlKCkp
IHsKICAgICAgICAgaWYgKCFtX3pvb21lZEluVGlsZUdyaWQpIHsKLSAgICAgICAgICAgIG1fem9v
bWVkSW5UaWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBt
X3RpbGVTaXplKTsKKyAgICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9IG1ha2VVbmlxdWU8
TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKICAgICAgICAgICAgIFtob3N0TGF5
ZXIoKSBhZGRTdWJsYXllcjptX3pvb21lZEluVGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKV07CiAg
ICAgICAgICAgICBob3N0TGF5ZXJTaXplQ2hhbmdlZCgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCmluZGV4IDY2NDdlYzNhMzZkMTU4
Nzg2OTRmMDdkMDJiMWZiMWU4YzM1MGQ1M2YuLjMwZWY5ZmMzMWM4N2YxMWJmYWZlNGNhNmE5ZWE4
MTI0ZDVmYzNhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
R3JpZC5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2Fj
eVRpbGVHcmlkVGlsZTsKIAogY2xhc3MgTGVnYWN5VGlsZUdyaWQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgSW50UG9pbnQgVGlsZUluZGV4Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE5
MWFjNzY5NjIxNTEyMTUzZGJkY2IwNzhkZDY2ZjQ2NTUzYmMyMWQuLjAyNzFiOTNlNzA1Y2UyYzQy
ZDYzMmZlMmRiMjlhYTQ2ZTgzNmQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02NiwxMiArNjYsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpz
ZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFz
dGVib2FyZCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJkYXRhIGludGVy
YWN0aW9uIHBhc3RlYm9hcmQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0
ZWJvYXJkTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0
YS5wYXN0ZWJvYXJkTmFtZSgpKTsKIH0KIAogI2VuZGlmCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3Rl
Ym9hcmQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY2hhbmdlQ291bnRG
b3JQYXN0ZWJvYXJkKCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRXZWJDb250ZW50JiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlj
a0xvb2subW0KaW5kZXggYTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEzMWNlNjQ2OTAyNTY4NS4u
YzJiNWEwYjA4YmRmNzVlOGMwMWNkOWJkMmQ1MWMzMTQ5MzA1ZjM4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC04NCw3ICs4NCw3IEBAIFJldGFpblB0cjxO
U1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKnVy
bCwgTlNTdHJpbmcKICAgICBpZiAoW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgp
IGNvbnRhaW5zT2JqZWN0OnVwZGF0ZWRNSU1FVHlwZS5nZXQoKV0pIHsKICAgICAgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiB1dGkgPSBhZG9wdE5TKFBBTDo6c29mdExpbmtfUXVpY2tMb29rX1FMVHlw
ZUNvcHlVVElGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIHVwZGF0ZWRNSU1FVHlwZS5nZXQoKSkpOwog
Ci0gICAgICAgIGF1dG8gY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVy
dGVyPihkYXRhLCB1dGkuZ2V0KCkpOworICAgICAgICBhdXRvIGNvbnZlcnRlciA9IG1ha2VVbmlx
dWU8UHJldmlld0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHByZXZpZXdSZXF1ZXN0ID0gY29udmVydGVyLT5wcmV2aWV3UmVxdWVzdCgpOwogCiAg
ICAgICAgIC8vIFdlIHVzZSBbcmVxdWVzdCBVUkxdIGhlcmUgaW5zdGVhZCBvZiB1cmwgc2luY2Ug
aXQgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1MubW0KaW5kZXggMTA3Yzc3Yzc1M2VhYjdkOTJkYTI5NDg3Y2E2
ZjY1ZjgwNzA0ODIxMy4uNmQ5Y2NlMTViODc0ZjE1ZjE1NDg3NWVhMGVlNmI5ZjEwMzVhODM2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFu
ZExpc3RlbmVySU9TLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVD
b21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1h
CiAgICAgaWYgKCFNZWRpYVBsYXllckxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+
KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVySU9T
PihjbGllbnQpOwogfQogCiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6OlJlbW90ZUNvbW1hbmRM
aXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQppbmRleCAwMWYw
YTliYjIwYTI0OGI2OTk4ODU2NDcwYWVlMzc0YTk4Y2ZhNTFjLi5lZDYzMmVhNWUzZjU1OTdlOWQ3
NmZkMmU1NTY5NTYxZmU2YzRjMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6
Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAK
IFNjcm9sbEFuaW1hdG9ySU9TOjpTY3JvbGxBbmltYXRvcklPUyhTY3JvbGxhYmxlQXJlYSYgc2Ny
b2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUv
UGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFz
dGVib2FyZExpYldQRS5jcHAKaW5kZXggMDU0M2VkNWU5ZmM5ZmNmZTNiYmFhNDAzNTVlNDA3MmY5
ZjNjM2Y0MC4uZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3Y2Q2NzZlZmI5ZGU1YmM4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNw
cApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oKTsKIH0KIAogUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDUxNTIwZGNi
YmVhNTkyMTg1YzMyNjcwMmNiYTY5ZmU4OGI0ZDRkZGUuLjhlYjE1Y2Y4ODUyZDk4NTc0NDdlMDU5
YzM4YWNhZWJhMjM0MTVkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgUGFzdGVib2FyZDo6UGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvbWkK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFsUGJvYXJkKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOwogICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCkBAIC0xMDgsMTMgKzEwOCwxMyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9hcmQp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4o
ZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGRy
YWdEYXRhLmZpbGVOYW1lcygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQppbmRleCAwNWNj
MDg5NTdlMWQ1MDEyNGRkNjMyZTJhNGM4OTIxMjk4OTY5NjExLi4xYWEyY2Q4MDEzMmYyYzIxZWUz
OGI5ZmZiZGI4MzM3M2JiZjRjMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3Rl
bmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJD
bGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjPihjbGllbnQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ck1hYzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IGE4MzE3NTEyMmVjMmU0YjZiNmRl
NTFiZTZkZjUyNjRiNDFhMWY4YzQuLjY4NjBlMzNjM2EzYjIxNTYzMDVmYjMxYWY0MjdkYzQ5MDIz
NTg3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmlt
YXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0
b3JNYWMubW0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsQW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRv
ck1hYzo6U2Nyb2xsQW5pbWF0b3JNYWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDFiOWRjNTM0NWI4
ODFlYjM2ZDk2ZmNlMzU4MmRmMGU1NGExMzg1YmEuLmUyNDQ1YmM4MjNmODZlMDU1YjBlNTc4Nzdk
NmNmNTMxYTRmZmNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKICAgICBpZiAoIXdy
aXRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgp
LCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lkKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFz
ZU5vbk51bGwoKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJZCkp
OwogfQogCiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6Ok1lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYgd3JpdGVyLCBTdHJpbmcm
JiBhdWRpb1RyYWNrSWQsIFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5oCmluZGV4IGQ0YWRiMTUyYmQ0YmFlZjdlZjdiZjA1NWY2ZDlhODNk
ODY3ZTY3ZWIuLmEyMmY1NzFiYzUxNjExZjYxNzQ0OTEwNGNmNWZjODYwZTUyZTlhZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CiAKIGNsYXNzIE1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbCBmaW5hbCA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJpdmF0
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IGNyZWF0ZShjb25zdCBN
ZWRpYVN0cmVhbVByaXZhdGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBkYjk0ZmRhZjgzYThhYmQ2N2FmY2ZkNmVhMzY5
ZmFhODljNDZjM2UyLi41OWFiMzg0MGZkNzM2Y2ExNDUwMTZjN2Y2NjBlY2EzYjA5MDMyNDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNw
cApAQCAtOTEsMTQgKzkxLDE0IEBAIEF1ZGlvQ2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1lckF1ZGlv
Q2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpCiAKIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6
R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UgZGV2aWNl
LCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9
LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1f
Y2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPihkZXZpY2Up
KQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KGRl
dmljZSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1l
ckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKFN0cmluZyYm
IGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0
aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFdURk1vdmUo
ZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2Fw
dHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPigpKQorICAgICwg
bV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkpCiB7CiAgICAg
aW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9EYXRhLmgKaW5kZXggOTUzZjNhOGEwZTRmNmEwNjJiOWI5NGE4ZjQxNTFhNDlmMWE0MzAxZC4u
ZDRjOTM3OWY4NGRhZDZmNjg4MTE5ODlkMTQzNGVmZTE2YWVmZWM1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJBdWRpb0RhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBHU3RyZWFtZXJBdWRpb0RhdGEgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0Rh
dGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1l
ckF1ZGlvRGF0YShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIEdzdEF1ZGlvSW5mbyBpbmZv
KQogICAgICAgICA6IG1fc2FtcGxlKFdURk1vdmUoc2FtcGxlKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0
cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IGIzYWYzNWFmODI0ODhk
ZDRjZjgyMWNkM2VlYWU2M2Q5Y2YxYWNkODQuLjRhNmQ0MWNlNDhjZmEwYmI3ZDBmODI3YjEzZGM5
OTQxNzk4ZWQzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3Ry
ZWFtU291cmNlLmNwcApAQCAtMzUxLDggKzM1MSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRp
YV9zdHJlYW1fc3JjX2NsYXNzX2luaXQoV2ViS2l0TWVkaWFTdHJlYW1TcmNDbGFzcyoga2xhc3Mp
CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQoV2ViS2l0TWVkaWFT
dHJlYW1TcmMqIHNlbGYpCiB7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOwot
ICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1l
ZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNl
cnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyPihzZWxmKTsK
KyAgICBzZWxmLT5tZWRpYVN0cmVhbU9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0
cmVhbU9ic2VydmVyPihzZWxmKTsKICAgICBzZWxmLT5mbG93Q29tYmluZXIgPSBnc3RfZmxvd19j
b21iaW5lcl9uZXcoKTsKICAgICBzZWxmLT5maXJzdEF1ZGlvQnVmZmVyUHRzID0gR1NUX0NMT0NL
X1RJTUVfTk9ORTsKICAgICBzZWxmLT5maXJzdEZyYW1lUHRzID0gR1NUX0NMT0NLX1RJTUVfTk9O
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5j
cHAKaW5kZXggZTVkOWIwZTAyNzZlZGRhNWRiZDUyMGJjMTBmMzUxODBkMDE1ZDY5Yi4uOTdiZTFm
MTJmYmIyMmRjMzU4Yzk5YzgzOWY5ODFmMTY1NmE4ZTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEyNywxNCArMTI3LDE0
IEBAIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpk
aXNwbGF5RmFjdG9yeSgpCiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJp
bmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIgKnNvdXJjZV9mYWN0b3J5KQogICAgIDogUmVhbHRp
bWVWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdU
Rk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJl
YW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKKyAgICAsIG1fY2FwdHVyZXIobWFr
ZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9yeSkpCiB7CiAgICAg
aW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZpY2Ug
ZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291
cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFi
ZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3Vu
aXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJlciht
YWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5pdGlh
bGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVh
bWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKaW5kZXggNjk5NWM2MDJjYjE3NDQ3ZmE3NDFkMzlk
NDQ5NGMzNTYxZGMxYmI4Mi4uZjk5ZGJlYzU5ZTA0MGJiN2ZmYzU1ZTc1YzZhOTEzMTVkZGVjOTQz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0
b3J5LmNwcApAQCAtNTEyLDE0ICs1MTIsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6Vmlk
ZW9FbmNvZGVyPiBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0UKICAg
ICAgICAgZ19vYmplY3RfZ2V0KHdlYnJ0Y2VuY29kZXIuZ2V0KCksICJlbmNvZGVyIiwgJmVuY29k
ZXIub3V0UHRyKCksIE5VTEwpOwogCiAgICAgICAgIGlmIChlbmNvZGVyKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4oZm9ybWF0KTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZQOEVuY29kZXI+KGZvcm1hdCk7
CiAKICAgICAgICAgR1NUX0lORk8oIlVzaW5nIFZQOCBFbmNvZGVyIGZyb20gTGliV2ViUlRDLiIp
OwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx3ZWJydGM6OkxpYnZweFZwOEVuY29k
ZXI+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPHdlYnJ0Yzo6TGlidnB4VnA4RW5jb2Rl
cj4oKTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0Lm5hbWUgPT0gY3JpY2tldDo6a0gyNjRDb2Rl
Y05hbWUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckgyNjRFbmNv
ZGVyPihmb3JtYXQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIMjY0RW5j
b2Rlcj4oZm9ybWF0KTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZT
ZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaAppbmRleCBkYzZmOGYzZmIwNTdmYjU0
MGQ5MGMwMDIyNjhhOTk3NzQ0MTAyNzdmLi40YTA2MWZjYzk1M2IxM2Q1ODNiYWU1NTQ1MTU1YmNl
MDhkZjhmOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJh
Y2tlbmQuaApAQCAtNDAsNiArNDAsNyBAQCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19FTkQKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQgZmlu
YWwgOiBwdWJsaWMgUlRDRFRNRlNlbmRlckJhY2tlbmQsIHByaXZhdGUgd2VicnRjOjpEdG1mU2Vu
ZGVyT2JzZXJ2ZXJJbnRlcmZhY2UsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkR0bWZTZW5kZXJJbnRlcmZhY2U+JiYpOwogICAgIH5MaWJXZWJSVENEVE1GU2Vu
ZGVyQmFja2VuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXgg
MjA3YWI3OGE5YTJiYmU0MGEwZWQ0ZGE2OTU2OWFlZGIxMjI5OWUyMC4uNzQ1MzNjNWZhNGRmMGQ0
ZTVhNjRkNzVjZTYyN2IzMjQyYzQ2YjgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXIuY3BwCkBAIC03OSw5ICs3OSwxMCBAQCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29ja2V0QWRk
cmVzcyBwcmVwYXJlU29ja2V0QWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmCiB9CiAK
IGNsYXNzIEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSA6IHB1YmxpYyBydGM6OkJhc2ljUGFja2V0
U29ja2V0RmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgQmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5KHJ0Yzo6VGhyZWFkJiBuZXR3b3Jr
VGhyZWFkKQotICAgICAgICA6IG1fc29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmPHJ0Yzo6QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5PigmbmV0d29ya1RocmVhZCkpCisgICAgICAgIDogbV9zb2Nr
ZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNQ
YWNrZXRTb2NrZXRGYWN0b3J5PigmbmV0d29ya1RocmVhZCkpCiAgICAgewogICAgIH0KIApAQCAt
MTc5LDcgKzE4MCw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3Rv
cnlBbmRUaHJlYWRzKFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRoCiAgICAgcmVzdWx0ID0gZmFj
dG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5TdGFydCgpOwogICAgIEFTU0VSVChyZXN1
bHQpOwogCi0gICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpOworICAgIGZhY3RvcnlBbmRUaHJlYWRz
LmF1ZGlvRGV2aWNlTW9kdWxlID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENBdWRpb01vZHVsZT4oKTsK
IH0KIAogc3RhdGljIGlubGluZSBQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzJiBzdGF0
aWNGYWN0b3J5QW5kVGhyZWFkcygpCkBAIC0yODgsMTAgKzI4OSwxMCBAQCBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6
OmNyZWF0ZVBlZQogICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGljRmFjdG9y
eUFuZFRocmVhZHMobV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAKICAgICBp
ZiAoIWZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyKQotICAgICAgICBmYWN0b3J5QW5k
VGhyZWFkcy5uZXR3b3JrTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpCYXNpY05ldHdv
cmtNYW5hZ2VyPigpOworICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrTWFuYWdlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdl
cj4oKTsKIAogICAgIGlmICghZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSkK
LSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9yeUFuZFRocmVhZHMubmV0
d29ya1RocmVhZCk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3Rv
cnkgPSBtYWtlVW5pcXVlPEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oKmZhY3RvcnlBbmRUaHJl
YWRzLm5ldHdvcmtUaHJlYWQpOwogICAgIGZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZh
Y3RvcnktPnNldERpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyhtX2Rpc2FibGVOb25Mb2Nh
bGhvc3RDb25uZWN0aW9ucyk7CiAKICAgICByZXR1cm4gY3JlYXRlUGVlckNvbm5lY3Rpb24ob2Jz
ZXJ2ZXIsICpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrTWFuYWdlciwgKmZhY3RvcnlBbmRUaHJl
YWRzLnBhY2tldFNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG51bGxwdHIp
OwpAQCAtMzE0LDcgKzMxNSw3IEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPiBwb3J0QWxsb2NhdG9yOwog
ICAgIGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC0+SW52b2tlPHZvaWQ+KFJUQ19G
Uk9NX0hFUkUsIFsmXSgpIHsKLSAgICAgICAgYXV0byBiYXNpY1BvcnRBbGxvY2F0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4oJm5ldHdvcmtNYW5hZ2Vy
LCAmcGFja2V0U29ja2V0RmFjdG9yeSk7CisgICAgICAgIGF1dG8gYmFzaWNQb3J0QWxsb2NhdG9y
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y3JpY2tldDo6QmFzaWNQb3J0QWxs
b2NhdG9yPigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0b3J5KTsKICAgICAgICAg
aWYgKCFtX2VuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMpCiAgICAgICAgICAg
ICBiYXNpY1BvcnRBbGxvY2F0b3ItPnNldF9mbGFncyhiYXNpY1BvcnRBbGxvY2F0b3ItPmZsYWdz
KCkgfCBjcmlja2V0OjpQT1JUQUxMT0NBVE9SX0RJU0FCTEVfQURBUFRFUl9FTlVNRVJBVElPTik7
CiAgICAgICAgIHBvcnRBbGxvY2F0b3IgPSBXVEZNb3ZlKGJhc2ljUG9ydEFsbG9jYXRvcik7CkBA
IC0zMzUsNyArMzM2LDcgQEAgcnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvciYgTGliV2ViUlRD
UHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKCkKIHsKICAgICBhdXRvJiBmYWN0b3J5QW5k
VGhyZWFkcyA9IGdldFN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKG1fdXNlTmV0d29ya1RocmVhZFdp
dGhTb2NrZXRTZXJ2ZXIpOwogICAgIGlmICghZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVH
ZW5lcmF0b3IpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yPihmYWN0b3J5
QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdv
cmtUaHJlYWQuZ2V0KCkpOworICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdl
bmVyYXRvciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6UlRDQ2VydGlm
aWNhdGVHZW5lcmF0b3I+KGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwg
ZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5nZXQoKSk7CiAKICAgICByZXR1cm4gKmZh
Y3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKaW5kZXggMTVlMmE4Nzg5YzA3
ZmIwZDBhZWM2ZjZjMjBmN2JiMTdmYThkYjdkMi4uNWI4MjczYjA4NTE5NmZmZDMwZTRkN2E3ZjY1
NTEwYmVjMDgwMzE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXJHU3RyZWFtZXIuY3BwCkBAIC00NCwxMiArNDQsMTIgQEAgYm9vbCBMaWJXZWJSVENQcm92aWRl
cjo6d2ViUlRDQXZhaWxhYmxlKCkKIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNv
ZGVyRmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0
b3J5KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29k
ZXJGYWN0b3J5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRGVjb2Rl
ckZhY3Rvcnk+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZh
Y3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFj
dG9yeT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0
b3J5PigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCmluZGV4IDgyY2JjYjFjNjZkMzJl
YTE4Y2RlYjE2NzkzOGQ2OGQzYjEyZTQxOWEuLmY3ZDg1ZGM2MGE2MWE4MTQ2ZGJhMGQwM2U1NWQ3
NTc2MmZlOTBmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2EuY3BwCkBAIC0xODgsOCArMTg4LDggQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUm
IHMKICAgICAgICAgaWYgKCFyZW1vdGVJT1VuaXQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERl
c2NyaXB0aW9uKTsKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX291dHB1
dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1
dERlc2NyaXB0aW9uKTsKIAogICAgICAgICBtX2RhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6OmNyZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAyLCBzdHJlYW1UcmFjaygp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGU4ZTNk
MzQ4NmRhNDNhYWMxZGQ1NGI3OGU2YjRkZjRkYzk4MTY3OTAuLjYxMWFjMTZiOWVjYjg2ODk4YTM3
MjY0NzFjNzYyMDcxMmZiOWIzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWMubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
TWFjOjpyZWNvbmZpZ3VyZSgpCiAgICAgY29uc3QgYm9vbCBpc05vbkludGVybGVhdmVkID0gdHJ1
ZTsKICAgICBGaWxsT3V0QVNCREZvckxQQ00obV9zdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUoKSwg
Y2hhbm5lbENvdW50LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGJpdHNQZXJCeXRlICog
Ynl0ZXNQZXJGbG9hdCwgaXNGbG9hdCwgaXNCaWdFbmRpYW4sIGlzTm9uSW50ZXJsZWF2ZWQpOwog
Ci0gICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1ZGlvQnVmZmVy
TGlzdD4obV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lICogbV9t
YXhpbWl1bUZyYW1lQ291bnQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxX
ZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQ
ZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKIAogICAgIENNRm9ybWF0RGVzY3JpcHRp
b25SZWYgZm9ybWF0RGVzY3JpcHRpb247CiAgICAgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3Jl
YXRlKE5VTEwsICZtX3N0cmVhbUZvcm1hdCwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1h
dERlc2NyaXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5tbQppbmRleCBmOWRjNGE4NDdmNGEzNTVkOWNjZmY0Y2RlMDMwOGQwZDVjNWM0NDU2
Li4zODhkNzFlMjRiMjVlYmY2ZDc3ODgxNGZkZDBhOTY2M2IxNzA1NDZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC00Niw3ICs0Niw3
IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2VDb2NvYTo6Y29udmVydFRvWVVWKENWUGl4CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKQotICAgICAgICBtX3BpeGVsQnVmZmVyQ29u
Zm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVy
UGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7Cisg
ICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZl
ckZvcm1hdCgpKSB9KTsKIAogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5jb252
ZXJ0KHBpeGVsQnVmZmVyKTsKIH0KQEAgLTc1LDcgKzc1LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1
ZmZlcigKICAgICAgICAgSW50U2l6ZSBzaXplID0geyAoaW50KUNWUGl4ZWxCdWZmZXJHZXRXaWR0
aChwaXhlbEJ1ZmZlcikgLCAoaW50KUNWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIp
IH07CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9y
bS5yb3RhdGUocm90YXRpb25Ub0FuZ2xlKHJvdGF0aW9uKSk7Ci0gICAgICAgIG1fcm90YXRpb25T
ZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3Zl
KHRyYW5zZm9ybSksIHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxC
dWZmZXIpLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7
CisgICAgICAgIG1fcm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUPihXVEZNb3ZlKHRyYW5zZm9ybSksIHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZv
cm1hdFR5cGUocGl4ZWxCdWZmZXIpLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VD
b21wYXRpYmxlOjpObyk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5y
b3RhdGUocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCmluZGV4IDhlMjlkN2I4
MWExNzNkZmE1MzcwNWZhMWU2MmM5ZTg4M2M0Zjk1MDIuLmQ0NzY5ZDY5ZTRhZjA0NzBkNjJjZTkw
Yjc1NDQwZTI4Mjc2OWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKQEAgLTM1LDYgKzM1
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1vY2sgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2spOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrKE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVudCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlck1vY2suaAppbmRleCAzYzZkZTFjNGViZTRlYzc0NzM1NDBhZWNjYjg5NzYyYjE5
NTU1Y2Q0Li4xMzg4YWQwNTEzMTA4YjJlYjkyZWMyYmJlMjg5MzM2NTJlOTlhMDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1v
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2suaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVs
SGFuZGxlciwgcHVibGljIFRpbWVyRXZlbnRCYXNlZE1vY2sgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29uc3Qg
U3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCmluZGV4IDJmMWZiNTVlZTY3
MWYyZjIyOGZjNTE1MWQwZGQ2OWNmOGVjNjk1Y2IuLjJjN2M0MWJkNjk2ZmYxZjliYWIzODM4MWE0
YjU4Mzg1NjhiMThhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDTm90aWZpZXJzTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9S
VENOb3RpZmllcnNNb2NrLmNwcApAQCAtOTgsNyArOTgsNyBAQCBSZW1vdGVEYXRhQ2hhbm5lbE5v
dGlmaWVyOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaQogCiB2b2lkIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OmZpcmUoKQogewotICAgIG1f
Y2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChzdGQ6Om1ha2VfdW5pcXVlPFJUQ0RhdGFD
aGFubmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNo
YW5uZWxJbml0KCkpKTsKKyAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwobWFr
ZVVuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERhdGFDaGFubmVsU3RhdGVOb3Rp
Zmllcjo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dCogY2xpZW50LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA1NTk5MzM4MmIzYTFkYzM2ZDgzNTZiNjFi
MjVjNzAwMmUwNzM0N2ZlLi4zODdhMjFkYWY0NTUyMzk2OGFlZTRmNzk0MTlkM2Q4Yjg4NjkwZDdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBNZWRpYVBsYXllciBFbmlnbmUgU3Vw
cG9ydAogdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdIChN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICByZWdp
c3RyYXIoW10gKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAg
ICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogfQogCkBAIC0xNjYsNyArMTY2LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICBpZiAobV9tZWRpYVNvdXJjZVByaXZhdGUpCiAg
ICAgICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKTsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wgTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5k
ZXggY2M2N2NlNjg4ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5ZTNjMjhmOC4uOTA1MTQzMTYyMWE4
YzEwOGE2ZWYwZjUxZWI2MGY3NzRhZmNjMGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMTU5LDkgKzE1
OSw5IEBAIEJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291cmNlSGFuZGxlKEJsb2JEYXRhKiBi
bG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLCBtX2FzeW5jIHsgYXN5bmMgfQog
ewogICAgIGlmIChtX2FzeW5jKQotICAgICAgICBtX2FzeW5jU3RyZWFtID0gc3RkOjptYWtlX3Vu
aXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgbV9hc3luY1N0cmVhbSA9IG1h
a2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7CiAgICAgZWxzZQotICAgICAgICBtX3N0
cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVN0cmVhbT4oKTsKKyAgICAgICAgbV9zdHJlYW0g
PSBtYWtlVW5pcXVlPEZpbGVTdHJlYW0+KCk7CiB9CiAKIEJsb2JSZXNvdXJjZUhhbmRsZTo6fkJs
b2JSZXNvdXJjZUhhbmRsZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggODExMmI5NzNlZWY1NGVkN2E1
YzdhNTE0Y2YxMDJhYzk5MWU3NjUzMy4uYjU0MWY2MmVlMDA1MjAzNjJjMTU1N2Y3Y2E0OTY0YTIz
N2I4NzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBEZWNvZGluZ1Jlc3VsdERp
c3BhdGNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVjb2RpbmdSZXN1bHREaXNw
YQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGNyZWF0ZURlY29kZVRhc2so
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYgc2NoZWR1bGVDb250ZXh0LCBE
ZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZVRhc2s+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPERl
Y29kZVRhc2s+KAogICAgICAgICB1cmwuc3RyaW5nKCksCiAgICAgICAgIHNjaGVkdWxlQ29udGV4
dCwKICAgICAgICAgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAppbmRleCBhOTg0M2Y1
MGU1YTQzNDAzZDhmNTJmMGE5NjdmOTAyNzg2NWU4ZDU2Li44ZGFlYzU0YTEzNDJkYWI1OWMzNWNj
NDkyN2EwMGZlNjIyOTQ5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCkBAIC0zNyw2ICszNyw3IEBAIFdFQkNPUkVfRVhQ
T1JUIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldlYktpdEludGVybmFsOyAv
LyBVc2VkIGZvciBlCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZXJy
b3JEb21haW5XZWJLaXRTZXJ2aWNlV29ya2VyOyAvLyBVc2VkIGZvciBlcnJvcnMgdGhhdCBoYXBw
ZW4gd2hlbiBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBhIHNlcnZpY2Ugd29ya2VyLgogCiBjbGFz
cyBSZXNvdXJjZUVycm9yQmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBpc29sYXRlZENvcHkoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmNwcAppbmRleCAzMGMyN2Y1NzZhMTc3ZTZiNmFiMTk0NzQwYTdkOTAyNWI2NTlmY2FkLi42
YTMxZTNlNTI3ZjhlYzkyZDZmNjJiOTZjZGQ4MTk0NDE0YjU1YzQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtNzQsNyAr
NzQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xv
YWRlcihjb25zdCBBdG9tU3RyaW5nJiBwcm90b2NvbAogfQogCiBSZXNvdXJjZUhhbmRsZTo6UmVz
b3VyY2VIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCwgYm9vbCBkZWZlcnNM
b2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2Rp
bmdTbmlmZikKLSAgICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUhhbmRsZUludGVybmFs
Pih0aGlzLCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENv
bnRlbnRTbmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSksIHNob3Vs
ZENvbnRlbnRFbmNvZGluZ1NuaWZmKSkKKyAgICA6IGQobWFrZVVuaXF1ZTxSZXNvdXJjZUhhbmRs
ZUludGVybmFsPih0aGlzLCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcs
IHNob3VsZENvbnRlbnRTbmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwo
KSksIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKSkKIHsKICAgICBpZiAoIXJlcXVlc3QudXJs
KCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBkYWQ5MDEwZjk1NzBl
YmM1Njc2MzM1NDNmZDFmYzUwMmY4NDY5Yjk5Li43MTNiNGRmYjMwYjJhZmRmYmVhZmY0ZWU1Mzcw
YTI1NDZmYWQzYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTE2
OSw3ICsxNjksNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbgogICAgIH07CiAKICAgICBpZiAo
bV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVz
c2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdv
cmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykp
OwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJl
Y2VpdmVSZXNwb25zZQogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAg
IG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+
PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVu
aXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQo
KTsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgIH07CiAg
ICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwor
ICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgp
Pj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChX
VEZNb3ZlKHdvcmspKTsKIH0KQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRp
bmcoKQogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OmRpZEZhaWwoQ0ZFcnJvclJlZgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0g
ICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2
b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQo
bWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQog
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzExLDcgKzMx
MSw3IEBAIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6CiAgICAgfTsKICAgICAKICAgICBpZiAobV9t
ZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmsp
KSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwog
ICAgIG1fc2VtYXBob3JlLndhaXQoKTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVDaGFsbGVuZwogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1f
bWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihX
VEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6ZGlkU2VuZEJvZHlEYXRhKENGCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkK
LSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVu
ZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNl
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zODAsNyAr
MzgwLDcgQEAgQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm8KICAgICB9OwogICAgIAogICAgIGlmICht
X21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNz
YWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7
CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGM5
YjUzZTMxMmFkODU1NzZkMzY2ZWY0ZGM1Mzc0MzkxZmU4YzY5MGMuLmJhNTVmMDA0OGI4ZTRkZGM1
YjA3MzRkOTkzZGM5YjEzYjhjYjJiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTUy
Myw3ICs1MjMsNyBAQCAtICh2b2lkKV9yZXN0YXJ0CiAKICAgICBfcmVzb3VyY2UgPSBzZWxmLnNl
c3Npb24ubG9hZGVyLnJlcXVlc3RSZXNvdXJjZShzZWxmLm9yaWdpbmFsUmVxdWVzdCwgUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOwogICAg
IGlmIChfcmVzb3VyY2UpCi0gICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50PihzZWxmKSk7CisgICAgICAg
IF9yZXNvdXJjZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrQ2xpZW50PihzZWxmKSk7CiB9CiAKIC0gKHZvaWQpX2NhbmNlbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYTQ1
YTVmNGU0YTAyOGZlNmU3ZjJkZmI3NWVjMmM4YWVjOTNlZDJiYi4uMTAxNjI0ZjI5MDBhOTRjYzdk
MWE4OTk4OTY3NmQ2YjQ1YWI3ZmEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgT3B0
aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QKICAgICAgICAgIkFORCAoKGRvbWFpbiA9ID8pIE9SIChkb21h
aW4gR0xPQiA/KSkgIlwKICAgICAgICAgIk9SREVSIEJZIGxlbmd0aChwYXRoKSBERVNDLCBsYXN0
dXBkYXRlZCI7CiAKLSAgICBhdXRvIHBzdG10ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0
ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0byBwc3RtdCA9IG1ha2VVbmlxdWU8U1FM
aXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGlmICghcHN0bXQpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKQEAgLTU2Niw3ICs1NjYsNyBAQCBib29sIENvb2tpZUph
ckRCOjpkZWxldGVBbGxDb29raWVzKCkKIAogdm9pZCBDb29raWVKYXJEQjo6Y3JlYXRlUHJlcGFy
ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1
dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNx
bCk7CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwogICAgIEFTU0VSVChyZXQg
PT0gU1FMSVRFX09LKTsKICAgICBtX3N0YXRlbWVudHMuYWRkKHNxbCwgV1RGTW92ZShzdGF0ZW1l
bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmgKaW5kZXggMGMwM2U5ZDY5MmM3ZjZkYzYxMzA4NmZmMjU1YzIwZTVjNmJiZTllOS4u
MjY4N2FlNzRmYjlkOTk0Mjk3MmJlZGNhYzZhYjliMTE1OWE3ZTUwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTQxLDYg
KzQxLDcgQEAgZW51bSBjbGFzcyBDb29raWVBY2NlcHRQb2xpY3kgewogfTsKIAogY2xhc3MgQ29v
a2llSmFyREIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKENvb2tpZUphckRCKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4
IGZhNWM4ZDJkMjFiNjI3MzgxNWQwMjNhNGYyMDQ1NTAxNmU5NjM4YWYuLmUyYjRiNWRmYmRhNjJh
M2MwY2I2YmY5MTgxYmJkNjhmZDdhNGEwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIC0t
ZW5kOyAvLyBMYXN0IGxpbmUgaXMgZW1wdHkKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAg
ICAgIFN0cmluZyB1cmwgPSBpdC0+c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgIGF1dG8gY2Fj
aGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwg
bV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENh
Y2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CiAKICAgICAgICAgaWYgKGNhY2hl
RW50cnktPmlzQ2FjaGVkKCkgJiYgY2FjaGVFbnRyeS0+ZW50cnlTaXplKCkgPCBtX3N0b3JhZ2VT
aXplTGltaXQpIHsKICAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IGNhY2hlRW50
cnktPmVudHJ5U2l6ZSgpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlJiBqb2IsIFJlc291cmNlUmVzcG9u
c2UmCiAKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsgLy8gSW52YWxpZGF0ZSBl
eGlzdGluZyBlbnRyeSBvbiAyMDAKIAotICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2IsIG1fY2FjaGVEaXIpOworICAgICAg
ICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlVW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2Is
IG1fY2FjaGVEaXIpOwogICAgICAgICBib29sIGNhY2hlYWJsZSA9IGNhY2hlRW50cnktPnBhcnNl
UmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsKICAgICAgICAgaWYgKGNhY2hlYWJsZSkgewogICAg
ICAgICAgICAgY2FjaGVFbnRyeS0+c2V0SXNMb2FkaW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggN2Qx
NzIxN2MyZTQ0MmFjNmYzZGU4YzRiNjBhOTUyNmM5ZjY1ODQyYS4uN2IwNGZhMjZhNDJhYjk3OGFl
MDdiZDMxZjBlNjkxNTUxYmJjNDYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgQ3Vy
bENvbnRleHQ6OkN1cmxDb250ZXh0KCkKICAgICBpZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFk
QXM8c2lnbmVkPigiV0VCS0lUX0NVUkxfTUFYX0hPU1RfQ09OTkVDVElPTlMiKSkKICAgICAgICAg
bWF4SG9zdENvbm5lY3Rpb25zID0gKnZhbHVlOwogCi0gICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPihtYXhDb25uZWN0cywgbWF4VG90YWxDb25u
ZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25zKTsKKyAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlx
dWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25z
LCBtYXhIb3N0Q29ubmVjdGlvbnMpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fdmVyYm9zZSA9
IGVudlZhci5kZWZpbmVkKCJERUJVR19DVVJMIik7CkBAIC0zMzYsNyArMzM2LDcgQEAgQ1VSTGNv
ZGUgQ3VybEhhbmRsZTo6d2lsbFNldHVwU3NsQ3R4KHZvaWQqIHNzbEN0eCkKICAgICAgICAgcmV0
dXJuIENVUkxFX0FCT1JURURfQllfQ0FMTEJBQ0s7CiAKICAgICBpZiAoIW1fc3NsVmVyaWZpZXIp
Ci0gICAgICAgIG1fc3NsVmVyaWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxTU0xWZXJpZmll
cj4oc3NsQ3R4KTsKKyAgICAgICAgbV9zc2xWZXJpZmllciA9IG1ha2VVbmlxdWU8Q3VybFNTTFZl
cmlmaWVyPihzc2xDdHgpOwogCiAgICAgcmV0dXJuIENVUkxFX09LOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcAppbmRleCBkZDYzYTRhYjQyNzAzZjZlOTQyZjhlZjk1NTEzNmE4NmJjZGY2NjUxLi4y
YjQ3NzM2ZjZlNzFmMWM0OTc4MWJlMTk0NmMwYjhlMzZiZDY3NTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcApAQCAtNzYsNyArNzYsNyBAQCBjb25zdCBWZWN0b3I8Y2hhcj4qIEN1cmxGb3JtRGF0
YVN0cmVhbTo6Z2V0UG9zdERhdGEoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlm
ICghbV9wb3N0RGF0YSkKLSAgICAgICAgbV9wb3N0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPGNoYXI+PihtX2Zvcm1EYXRhLT5mbGF0dGVuKCkpOworICAgICAgICBtX3Bvc3REYXRhID0g
bWFrZVVuaXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7CiAKICAgICBy
ZXR1cm4gbV9wb3N0RGF0YS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBh
OGJiOGQ4MWE3YWJkNzE3NDNiZDM5NWRjYzg2NjMxNzlmZGUyZDU1Li5jY2RiYjI4MjM5ZjIyYzM2
MzZjYWMxNGIwNzg1ZDZmNTVhYjJmNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVsdGlwYXJ0SGFuZGxlPiBDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChDdXJsTXVsCiAgICAgaWYgKCFib3VuZGFyeSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
dXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpib3VuZGFyeSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAqYm91bmRhcnkpOwogfQogCiBPcHRp
b25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBD
dXJsUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMTdmZWRkZjBlMDgxNGQ1ZWFkMDY4
MmY2ZWYxNGY3NjVjOTFlNTkwOC4uYzFkMTU3YmVmZjk0NDU0NjMxY2QwNTk2MmYyMzExMzJmZDhk
YjhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2Fs
bENsaWVudChGdW5jdGlvbjx2b2lkKEN1cmxSZXF1ZXN0JiwgQ3VybFJlcXVlc3RDbGllbnQmKT4m
Jgogdm9pZCBDdXJsUmVxdWVzdDo6cnVuT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0
YXNrKQogewogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUt
PmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykp
KTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUodGFzaykpKTsKICAgICBlbHNlIGlmIChpc01haW5UaHJlYWQoKSkKICAg
ICAgICAgdGFzaygpOwogICAgIGVsc2UKQEAgLTIwNSw3ICsyMDUsNyBAQCBDVVJMKiBDdXJsUmVx
dWVzdDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgYXV0byBodHRwSGVhZGVyRmllbGRzID0gbV9yZXF1
ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICBhcHBlbmRBY2NlcHRMYW5ndWFnZUhlYWRlciho
dHRwSGVhZGVyRmllbGRzKTsKIAotICAgIG1fY3VybEhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUgPSBtYWtlVW5pcXVlPEN1cmxIYW5kbGU+
KCk7CiAKICAgICBtX2N1cmxIYW5kbGUtPnNldFVybChtX3JlcXVlc3QudXJsKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmNwcAppbmRleCA5MTgzN2FmOWYzZTQ3NzNiNWM3MWMxYzI2MGRiOTZm
NTg2YjIxMWFmLi4zYWE1ZjUyZGI2MjdhYmIwZWNjYWYyOTIxM2RjZTEyZmJjNmZiYzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgbV9jdXJsTXVsdGlIYW5kbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0
aUhhbmRsZT4oKTsKKyAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybE11bHRp
SGFuZGxlPigpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhDb25uZWN0cyhtX21heENv
bm5lY3RzKTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4VG90YWxDb25uZWN0aW9ucyht
X21heFRvdGFsQ29ubmVjdGlvbnMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhIb3N0
Q29ubmVjdGlvbnMobV9tYXhIb3N0Q29ubmVjdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApp
bmRleCA3YmUwMGFkMzRiOGU1OTg4MmRlMGY1MTNiNmMyZGRmOTAxMWY5OWUxLi43ZDRhNzJmZDg3
NTU3NmQ5YTU5OGFhMTU4NDA0ZTg5ZjEyNGQ3MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApA
QCAtMTYyLDcgKzE2Miw3IEBAIFJlZjxDdXJsUmVxdWVzdD4gUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlCiBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZSogUmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKCkKIHsKICAgICBpZiAoIWQt
Pm1fZGVsZWdhdGUpCi0gICAgICAgIGQtPm1fZGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlPigqdGhpcyk7CisgICAgICAgIGQtPm1fZGVsZWdhdGUg
PSBtYWtlVW5pcXVlPEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlPigqdGhpcyk7CiAKICAgICBy
ZXR1cm4gZC0+bV9kZWxlZ2F0ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bEN1cmwuY3BwCmluZGV4IGEzNjdmZGE2MmE2ZDIxMmE0OTU1ZTY4ODljNjU3MjBjOWVmYWYyMWIu
LjEzYTgzMmMyNjY5YjRjZThjYmViZjMxMzRiYTA4OWQ5MDJkZmE5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgU29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6c3RvcFRocmVhZCgpCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmNhbGxPbldvcmtlclRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fdGFza1F1ZXVlLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKKyAgICBtX3Rhc2tRdWV1
ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7CiB9
CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZXhlY3V0ZVRhc2tzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIu
aAppbmRleCA1YTA2ZjJlZjg5ZWY1YzIxYmUxNTdjNzFkYTE0MTllYzg0ODA5ZWY3Li43NjU0M2Fk
MTZjMTQ5NDg1ODgyMjk5MWYzMDVmZjdhMzNlMTdhZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCkBAIC0zNiw2
ICszNiw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiAKIGNsYXNzIFByZXZpZXdDb252ZXJ0ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdDb252ZXJ0ZXIpOwogcHVibGljOgog
ICAgIFByZXZpZXdDb252ZXJ0ZXIoaWQgZGVsZWdhdGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCBkZTBi
N2UxZjE4N2I1MDc2NWE5ZDE3YzJlYzRlYzgwMzNkODNmMzQxLi5mMTBlYjYyNWVhMDgxMzAyOTI3
ODA3Y2VjMWUyZmY2ZTczZjI0YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC02MSw3ICs2MSw3IEBA
IC0gKHZvaWQpY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOihGdW5jdGlvbjx2b2lkKCk+JiYpZnVu
Y3Rpb24KIHsKICAgICAvLyBTeW5jIHhociB1c2VzIHRoZSBtZXNzYWdlIHF1ZXVlLgogICAgIGlm
IChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwor
ICAgICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiAKICAgICAvLyBUaGlzIGlzIHRoZSBjb21t
b24gY2FzZS4KICAgICBpZiAoIXNjaGVkdWxlZFdpdGhDdXN0b21SdW5Mb29wTW9kZShtX3NjaGVk
dWxlZFBhaXJzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAppbmRleCA0YmIzMGE4NzFkZTU3MDM5
YjdiNzE5MzRmZWMzNzYzYTVhNGE4MmQ5Li5lZTQ0ZDg5ZDE5OTg1NDY4YjdhZWExZTc1YTQ0MjMw
ZTI3NjgyMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAg
dm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUs
IHVpbnQ2NF90IGlkZW50aWZpZXIsIEQKIAogICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNU
KGFkZHJlc3MuZ2V0KCkpLCAiaWRlbnRpZmllciIsIEdVSU5UX1RPX1BPSU5URVIoaWRlbnRpZmll
cikpOwogCi0gICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuYWRkKGlkZW50aWZpZXIs
IHN0ZDo6bWFrZV91bmlxdWU8RE5TUmVzb2x2ZVF1ZXVlU291cDo6Q29tcGxldGlvbkFuZENhbmNl
bEhhbmRsZXJzPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShjYW5jZWxsYWJs
ZSkpKTsKKyAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwg
bWFrZVVuaXF1ZTxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxl
cnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOwog
fQogCiB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggZTRjOGIwZjEz
ZTZkMDg5YTU4OTJhYTdhZTBhOWI4MjE1ODViYjlhNC4uN2IyOGYyNmI1Mzg0Y2I0YmQ1YmZkNjc1
NzA3Y2YyYmZmZDVmMDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApA
QCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50
aWFsRnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY3JldFNlcnZp
Y2VTZWFyY2hEYXRhPihjYW5jZWxsYWJsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8U2VjcmV0U2VydmljZVNlYXJjaERhdGE+KGNhbmNl
bGxhYmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgc2VjcmV0X3NlcnZpY2Vf
c2VhcmNoKG51bGxwdHIsIFNFQ1JFVF9TQ0hFTUFfQ09NUEFUX05FVFdPUkssIGF0dHJpYnV0ZXMu
Z2V0KCksCiAgICAgICAgIHN0YXRpY19jYXN0PFNlY3JldFNlYXJjaEZsYWdzPihTRUNSRVRfU0VB
UkNIX1VOTE9DSyB8IFNFQ1JFVF9TRUFSQ0hfTE9BRF9TRUNSRVRTKSwgY2FuY2VsbGFibGUsCiAg
ICAgICAgIFtdKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVy
IHVzZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jp
ZGlSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIu
aAppbmRleCAxMGZlY2JjNDE5NDc5NWYzMmQxY2E3ZTc2MDlhYzRmZjIwOTJjZDIzLi5hYWZlZDNk
ZTc5Yjk5YWFjNDc2OWM3NmI1NWY2YzFjYmI2NjFiOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEJpZGlS
ZXNvbHZlckJhc2U8SXRlcmF0b3IsIFJ1biwgRGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJu
YWwoKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGVuZE9mZnNldCA+PSBzdGFydE9mZnNldCkK
LSAgICAgICAgICAgIG1fcnVucy5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxSdW4+KHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CisgICAgICAg
ICAgICBtX3J1bnMuYXBwZW5kUnVuKG1ha2VVbmlxdWU8UnVuPihzdGFydE9mZnNldCwgZW5kT2Zm
c2V0ICsgMSwgY29udGV4dCgpLCBtX2RpcmVjdGlvbikpOwogCiAgICAgICAgIG1fZW9yLmluY3Jl
bWVudCgpOwogICAgICAgICBtX3NvciA9IG1fZW9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Mb2NhbGVJQ1UuY3BwCmluZGV4IDU5ZTFmYzcyYTJiZjI5Njk0NWE4NmY4NTUyYjg2Mzc2
YTllYTU4NmQuLjJjOGNjZTczMDg4ZmE1YWQwY2Y1OTU5Y2NlNGY5NjkxYmYzNTdhMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIGljdTsKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxl
OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPExvY2FsZUlDVT4obG9jYWxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPExvY2FsZUlDVT4obG9jYWxlLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogfQogCiBMb2NhbGVJQ1U6OkxvY2FsZUlDVShjb25zdCBjaGFyKiBsb2NhbGUpCkBAIC0x
NjMsMjIgKzE2MywyMiBAQCBzdGF0aWMgU3RyaW5nIGdldERhdGVGb3JtYXRQYXR0ZXJuKGNvbnN0
IFVEYXRlRm9ybWF0KiBkYXRlRm9ybWF0KQogc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+
PiBMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9ybWF0KiBkYXRlRm9y
bWF0LCBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUgdHlwZSwgaW50MzJfdCBzdGFydEluZGV4LCBpbnQz
Ml90IHNpemUpCiB7CiAgICAgaWYgKCFkYXRlRm9ybWF0KQotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgaWYgKHVkYXRfY291bnRTeW1ib2xzKGRhdGVGb3JtYXQs
IHR5cGUpICE9IHN0YXJ0SW5kZXggKyBzaXplKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9y
PFN0cmluZz4+KCk7CiAKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0cmluZz4+KCk7CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+
PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwogICAgIGZvciAoaW50MzJf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSB1ZGF0X2dldFN5bWJvbHMoZGF0
ZUZvcm1hdCwgdHlwZSwgc3RhcnRJbmRleCArIGksIDAsIDAsICZzdGF0dXMpOwogICAgICAgICBp
ZiAoc3RhdHVzICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZm
ZXIobGVuZ3RoKTsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICB1ZGF0
X2dldFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSwgc3RhcnRJbmRleCArIGksIGJ1ZmZlci5kYXRh
KCksIGxlbmd0aCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIGxh
YmVscy0+YXBwZW5kKFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKSk7CiAgICAgfQogICAg
IHJldHVybiBXVEZNb3ZlKGxhYmVscyk7CkBAIC0xODYsNyArMTg2LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxTdHJpbmc+PiBMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVE
YXRlRm9ybWF0KgogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVh
dGVGYWxsYmFja01vbnRoTGFiZWxzKCkKIHsKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZl
Y3RvcjxTdHJpbmc+PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KFdURl9BUlJBWV9M
RU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IFdURl9BUlJBWV9MRU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKTsgKytpKQogICAgICAgICBsYWJl
bHMtPmFwcGVuZChXVEY6Om1vbnRoRnVsbE5hbWVbaV0pOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6Om1vbnRoTGFiZWxzKCkKIAogc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkK
IHsKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7
CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxh
YmVscy0+cmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGxhYmVscy0+YXBwZW5kKCJBTSIpOwogICAg
IGxhYmVscy0+YXBwZW5kKCJQTSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGVOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9j
YWxlTm9uZS5jcHAKaW5kZXggYmI2YjI2YmE1OWNiMzZiOTg5YjdlNmY1ODYzMGM3YTdiM2I1NmVh
Ny4uNzgxNWE0NzhlMDI5NzQ1NTk2NTc2YzJkZWQyMjExOTM2YWE5NmExYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGNs
YXNzIExvY2FsZU5vbmUgOiBwdWJsaWMgTG9jYWxlIHsKIAogc3RkOjp1bmlxdWVfcHRyPExvY2Fs
ZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TG9jYWxlTm9uZT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVO
b25lPigpOwogfQogCiBMb2NhbGVOb25lOjp+TG9jYWxlTm9uZSgpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAppbmRleCBmOGUxNjcw
ODQ5YTk1ODk4YTE0NTdiYzk4ZGE5MWU0YmRlNzg0Yzc5Li5lNWYyODE2NmM2ZGQzNGJjNTM1MDli
NmEwMDIwYTg4ODkwN2MyY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY0lDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNJQ1UuY3BwCkBAIC0xNTYsNDMgKzE1Niw0MyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6
cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgLy8g
aHR0cDovL2RlbW8uaWN1LXByb2plY3Qub3JnL2ljdS1iaW4vY29udmV4cAogICAgICAgICBpZiAo
IXN0cmNtcChuYW1lLCAid2luZG93cy04NzQiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5h
bWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4
dENvZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtODc0LTIwMDAiKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCFzdHJjbXAobmFtZSwgIndpbmRvd3MtOTQ5IikpIHsKICAgICAgICAgICAgIHJlZ2lz
dHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OS0y
MDAwIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1jeXJpbGxpYyIpKSB7CiAgICAgICAg
ICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy03XzMtMTAuMiIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29z
LTdfMy0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1ncmVlayIpKSB7CiAgICAg
ICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy02XzItMTAuNCIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1h
Y29zLTZfMi0xMC40Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1jZW50cmFsZXVycm9t
YW4iKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3Mt
MjktMTAuMiIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lD
VT4obmFtZSwgIm1hY29zLTI5LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLXR1
cmtpc2giKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFj
b3MtMzUtMTAuMiIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2Rl
Y0lDVT4obmFtZSwgIm1hY29zLTM1LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIkVVQy1L
UiIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dz
LTk0OSIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4o
bmFtZSwgIndpbmRvd3MtOTQ5Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJl
Z2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiAgICAgICAgIGNvbnN0
IGNoYXIqIGNhbm9uaWNhbENvbnZlcnRlck5hbWUgPSB1Y252X2dldENhbm9uaWNhbE5hbWUobmFt
ZSwgIklBTkEiLCAmZXJyb3IpOwogICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKGVycm9yKSk7CiAg
ICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZV0gewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCBj
YW5vbmljYWxDb252ZXJ0ZXJOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRl
eHRDb2RlY0lDVT4obmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZSk7CiAgICAgICAgIH0pOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0
aW4xLmNwcAppbmRleCA5MzE0NTMzMjhhNmY2Njk0ODVlZTAxZjhhNGUyY2VkZTUwMjY3N2ZmLi45
MmM2NjEzY2IxZmNjMGUzMDhhNzNjMzUwYTllMDdlZjc3MzQ2MmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIHZvaWQgVGV4dENvZGVjTGF0aW4xOjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdO
YW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjTGF0aW4xOjpyZWdpc3RlckNv
ZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigid2lu
ZG93cy0xMjUyIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29k
ZWNMYXRpbjE+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0xhdGluMT4o
KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1JlcGxhY2VtZW50LmNwcAppbmRleCAxNzY1YmY3OTIxNTk3NWIxNTdjOGIzZjc0
YzU1NzJjNDcxZTIxMTQxLi5jOGI1NThjOGNhMmQzYWZkMzAyMTRiY2ZjMzdhMTQ1Nzc1NmExM2Ew
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxh
Y2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1Jl
cGxhY2VtZW50LmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIFRleHRDb2RlY1JlcGxhY2VtZW50
OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcgog
dm9pZCBUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoInJlcGxhY2VtZW50IiwgW10gewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjUmVwbGFjZW1lbnQ+KCk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VVRGMTYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5j
cHAKaW5kZXggYmUwMDY1NjQ0NjQ4ZmNlMGMzNzlkM2M3NDNlZTIyN2VhOWVkYTZmNC4uOTBjNDQ3
NWQwMjBiOWY0NzFiNWJlNzdjM2NhYWMwZmRjOThjYmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKQEAgLTU0LDEwICs1NCwxMCBAQCB2
b2lkIFRleHRDb2RlY1VURjE2OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKFRl
eHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJVVEYtMTZMRSIs
IFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGMTY+KHRy
dWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7CiAg
ICAgfSk7CiAgICAgcmVnaXN0cmFyKCJVVEYtMTZCRSIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGMTY+KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dENvZGVjVVRGMTY+KGZhbHNlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKaW5kZXggYTNkYWQ0ZTlk
MTYzNzY4NjMwODhiMTk3MTBmODM5ZGJiZmZlYThkZC4uZTFkMGE1M2M3MTdhYWU3Mzk5MzlmNTFj
NGQzMjkzNDVhZjg5Y2FmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEY4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjguY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgVGV4dENvZGVjVVRGODo6cmVn
aXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lk
IFRleHRDb2RlY1VURjg6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7CiAgICAgcmVnaXN0cmFyKCJVVEYtOCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGOD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VGV4dENvZGVjVVRGOD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcAppbmRleCAyOTZjNDY5ZjE2
OWZiOTExZGM4ZGJkN2E2NDdlYTU2NDFlMmZmZTE5Li40OGFkYmE5ZDRiMWE3YTlhNjU4YWVmOWRm
YWRmODVhZGRlOWRjZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFRleHRD
b2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0
cmFyIHJlZ2lzdHJhcgogdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJDb2RlY3Mo
VGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIngtdXNlci1k
ZWZpbmVkIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNV
c2VyRGVmaW5lZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjVXNlckRl
ZmluZWQ+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL0xvY2FsZU1hYy5tbQppbmRleCBhNTE3YmUzNDFmNmFjNGJlOGU4OTNjZmFkN2MyMjg4NDVk
NmE4MjgwLi4yYjNkMDNhMzhhNWQyMDFiYjZkY2I4ZWJlNDRmNDZmZWVmYzY3ZTBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCkBAIC02Nyw3ICs2
Nyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNMb2NhbGU+IGRldGVybWluZUxvY2FsZShjb25zdCBT
dHJpbmcmIGxvY2FsZSkKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExvY2FsZU1hYz4oZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0KCkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPExvY2FsZU1hYz4oZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJp
bmcoKSkuZ2V0KCkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gY3Jl
YXRlRGF0ZVRpbWVGb3JtYXR0ZXIoTlNMb2NhbGUqIGxvY2FsZSwgTlNDYWxlbmRhciogY2FsZW5k
YXIsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSwgTlNEYXRlRm9ybWF0dGVyU3R5bGUg
dGltZVN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdp
bi5jcHAKaW5kZXggNmExNjBkZWNjZmM5MjZhZWYzN2RlMjNlOTdmNjJlOGY1YzY3OTA2YS4uYWEw
MGE0YWQ2ZjViNTk5ODJiNmI0NzczMTcxYzhiYzdjMDMzOTAwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0
YXRpYyBMQ0lEIExDSURGcm9tTG9jYWxlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIAogc3Rk
Ojp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbG9j
YWxlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZVdpbj4oTENJREZyb21M
b2NhbGUobG9jYWxlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlV2luPihMQ0lERnJv
bUxvY2FsZShsb2NhbGUpKTsKIH0KIAogaW5saW5lIExvY2FsZVdpbjo6TG9jYWxlV2luKExDSUQg
bGNpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRD
b2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNX
aW4uY3BwCmluZGV4IGFmNDY5MTM5MDgxZTgwYzEyMDdiODJjOTdmZGZhM2M3NzIxYTY1MTEuLjJj
ZWI0NzVlNWZhZWJiNjcwYzc0MTQ0NzVhNDcyOTI0OTUyZGNhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIHN0YXRpYyBVSU5UIGdldENvZGVQYWdlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZywgY29uc3Qgdm9pZCopCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VGV4dENvZGVjV2luPihnZXRDb2RlUGFnZShlbmNvZGluZy5uYW1lKCkpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUo
KSkpOwogfQogCiBUZXh0Q29kZWNXaW46OlRleHRDb2RlY1dpbihVSU5UIGNvZGVQYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5h
Z2VyT3BlblZSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtTWFuYWdlck9wZW5WUi5jcHAKaW5kZXggZDFkYzY3MzY4NmY2NTFlM2UwMzI5MWI3YzAyYzMx
YjBjMTY5YmJjMi4uZTdjZjcxMzdlMzNhYTU1YmY3ZTU4NWVlMTY0ZTY3M2QzYWFlZWM2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5h
Z2VyT3BlblZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQ
bGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4gVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0
ZSgpCiAgICAgaWYgKCF2cjo6VlJfSXNSdW50aW1lSW5zdGFsbGVkKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybU1hbmFn
ZXJPcGVuVlI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVu
VlI+KCk7CiB9CiAKIFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjp+VlJQbGF0Zm9ybU1hbmFnZXJP
cGVuVlIoKQpAQCAtNzgsNyArNzgsNyBAQCBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxh
eT4+IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpnZXRWUkRpc3BsYXlzKCkKIAogICAgIFZlY3Rv
cjxXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gZGlzcGxheXM7CiAgICAgaWYgKCFtX2Rpc3Bs
YXkpCi0gICAgICAgIG1fZGlzcGxheSA9IHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybURpc3Bs
YXlPcGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNvbXBvc2l0b3IpOworICAgICAgICBtX2Rp
c3BsYXkgPSBtYWtlVW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hh
cGVyb25lLCBjb21wb3NpdG9yKTsKICAgICBkaXNwbGF5cy5hcHBlbmQobWFrZVdlYWtQdHIoKm1f
ZGlzcGxheSkpOwogICAgIHJldHVybiBkaXNwbGF5czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBhYmFkZGM3ZmJjYTIzNTllZmY1Yjk4
MTFjMTk1ZjZiNWFiYzFiYTgzLi4xNjk3ODU1ZmU3MmY2MzdlNjVhZDQ3NzcyYWZhNjFjNzQ3MTky
NDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25l
clduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3CiAKIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewot
ICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAg
ICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiAgICAgQ09NUHRy
PElEYXRhT2JqZWN0PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENs
aXBib2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0gMDsKQEAg
LTEwNiwxNiArMTA2LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0
YU9iamVjdDsKICAgICBXQ0RhdGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsK
IH0KIAogLy8gc3RhdGljCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlm
IChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgLy8g
RklYTUU6IFNob3VsZCBhZGQgYSBjb25zdCBvdmVybG9hZCBvZiBkcmFnRGF0YU1hcCBzbyB3ZSBk
b24ndCBuZWVkIGEgY29uc3RfY2FzdCBoZXJlLgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBhc3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAo
KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2FzdDxEcmFnRGF0
YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCAxOTY0OWM1
NjZjZmNmNWY0MjQzMDlkMWQ4ZDEwMGIwYjRmZjc3MGE4Li42ZjdmNGJhMTY2MGI0ZjdhOTc3MjEy
Yzg1NjNhNDNjNjY1ZTMwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQgU2VhcmNoUG9w
dXBNZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wgaWdub3Jl
RXJyb3IpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IFNlYXJjaFBvcHVwTWVu
dURCOjpjcmVhdGVQcmVwYXJlZFN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBh
dXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1l
bnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgp
OwogICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gU1FMSVRFX09LKTsKICAgICByZXR1cm4g
c3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0
YU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNw
cAppbmRleCBkYmY5OWE0NWNlNzAzYTlkODU3YTBlNjAxOWQ2ODA2ZGQxMWZhMTdiLi5jOTdhN2Vi
YWFhYmRkOGUyNjI5YWEzNzdlNzI2N2ViZDdjODUxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFNURE1FVEhP
RElNUCBXQ0RhdGFPYmplY3Q6OlNldERhdGEoRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBTVEdNRURJ
VU0qIHBtZWRpdW0sIEJPCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0byBmZXRjID0gc3RkOjptYWtlX3VuaXF1ZTxG
T1JNQVRFVEM+KCk7CisgICAgYXV0byBmZXRjID0gbWFrZVVuaXF1ZTxGT1JNQVRFVEM+KCk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNUR01FRElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0Z01lZChu
ZXcgU1RHTUVESVVNKTsKIAogICAgIFplcm9NZW1vcnkoZmV0Yy5nZXQoKSwgc2l6ZW9mKEZPUk1B
VEVUQykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCBjMDA0ZmM5
ZTcwNGE2YWQzMjM0OWZiODI0Y2RjNWRkZDAzNjAxYjVjLi40Nzk4MWFlNjk5MWRjNjQ5MTUyMGZj
ODI0MzJlY2M0OTU4NjQ0M2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNw
cApAQCAtMTExLDcgKzExMSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6YnVp
bGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAKICAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Q7CiAKLSAgICBhdXRvIGJ1aWxkZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0VmZmVjdCk7CisgICAgYXV0byBidWls
ZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlvdXNFZmZlY3QpOwogICAg
IG1fc291cmNlQWxwaGEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKFNvdXJjZUFscGhhOjplZmZl
Y3ROYW1lKCkpOwogCiAgICAgZm9yIChhdXRvJiBlZmZlY3RFbGVtZW50IDogY2hpbGRyZW5PZlR5
cGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigqZmlsdGVyKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKaW5kZXggMDEz
Mzc4N2Q5ZDMwNjJiMWNhNzliMTYwNzk2M2YyMGMxMDcxZWQ1My4uYmQzYzliZWU4NzI5ODZlYzYx
YjFhMzBhMDQ5NWI4YzBhMjZmZDYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q29tcGxleExpbmVMYXlvdXQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyB2b2lkIGRldGVy
bWluZURpcmVjdGlvbmFsaXR5KFRleHREaXJlY3Rpb24mIGRpciwgSW5saW5lSXRlcmF0b3IgaXRl
cikKIAogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBjcmVhdGVSdW4oaW50IHN0YXJ0
LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZl
cikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihzdGFydCwgZW5kLCBv
YmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEJpZGlSdW4+KHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNv
bHZlci5kaXIoKSk7CiB9CiAKIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNGb3JP
YmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFydCwgaW50IGVuZCwgUmVu
ZGVyT2JqZWN0JiBvYmosIElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCkBAIC0xMzAsMTIg
KzEzMCwxMiBAQCB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjphcHBlbmRSdW5zRm9yT2JqZWN0KEJp
ZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBpbnQgc3Rhcgogc3RkOjp1bmlxdWVfcHRyPFJvb3RJ
bmxpbmVCb3g+IENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KCkKIHsKICAg
ICBpZiAoaXM8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSkgewotICAgICAgICBhdXRvIGJveCA9IHN0
ZDo6bWFrZV91bmlxdWU8U1ZHUm9vdElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4o
bV9mbG93KSk7CisgICAgICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdSb290SW5saW5lQm94
Pihkb3duY2FzdDxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKTsKICAgICAgICAgYm94LT5zZXRIYXNW
aXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAgICAgICByZXR1cm4gYm94OwogICAgIH0KICAgICAg
ICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Um9vdElubGluZUJveD4obV9mbG93KTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSb290SW5saW5lQm94PihtX2Zsb3cpOwogfQogCiBSb290
SW5saW5lQm94KiBDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlQW5kQXBwZW5kUm9vdElubGluZUJv
eCgpCkBAIC0xMDg1LDcgKzEwODUsNyBAQCBpbmxpbmUgQmlkaVJ1biogQ29tcGxleExpbmVMYXlv
dXQ6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaQogICAgICAg
ICB3aGlsZSAoQmlkaUNvbnRleHQqIHBhcmVudCA9IGJhc2VDb250ZXh0LT5wYXJlbnQoKSkKICAg
ICAgICAgICAgIGJhc2VDb250ZXh0ID0gcGFyZW50OwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4oZmly
c3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFpbGluZ1NwYWNlUnVuLT5yZW5k
ZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFMKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEJpZGlSdW4+IG5ld1RyYWlsaW5nUnVuID0gbWFrZVVuaXF1ZTxCaWRpUnVuPihmaXJz
dFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRl
cmVyKCksIGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOwogICAgICAgICB0cmFpbGluZ1Nw
YWNlUnVuLT5tX3N0b3AgPSBmaXJzdFNwYWNlOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuID0g
bmV3VHJhaWxpbmdSdW4uZ2V0KCk7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERpcmVj
dGlvbjo6TFRSKQpAQCAtMTYxNyw3ICsxNjE3LDcgQEAgdm9pZCBDb21wbGV4TGluZUxheW91dDo6
bGlua1RvRW5kTGluZUlmTmVlZGVkKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiAgICAg
ICAgIGlmIChsYXlvdXRTdGF0ZS5jaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZSgpKSB7CiAgICAg
ICAgICAgICBMYXlvdXRVbml0IGJvdHRvbVZpc3VhbE92ZXJmbG93ID0gbGFzdFJvb3RCb3goKS0+
bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KCk7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGJv
dHRvbUxheW91dE92ZXJmbG93ID0gbGFzdFJvb3RCb3goKS0+bG9naWNhbEJvdHRvbUxheW91dE92
ZXJmbG93KCk7Ci0gICAgICAgICAgICBhdXRvIG5ld0xpbmVCb3ggPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveD4obV9mbG93KTsKKyAgICAgICAgICAgIGF1dG8g
bmV3TGluZUJveCA9IG1ha2VVbmlxdWU8VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94PihtX2Zs
b3cpOwogICAgICAgICAgICAgYXV0byB0cmFpbGluZ0Zsb2F0c0xpbmVCb3ggPSBuZXdMaW5lQm94
LmdldCgpOwogICAgICAgICAgICAgbV9saW5lQm94ZXMuYXBwZW5kTGluZUJveChXVEZNb3ZlKG5l
d0xpbmVCb3gpKTsKICAgICAgICAgICAgIHRyYWlsaW5nRmxvYXRzTGluZUJveC0+c2V0Q29uc3Ry
dWN0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09i
amVjdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAK
aW5kZXggNGNkZDEzOWM0ODc1MTZlYTBlN2IxMjEzYjcwM2JkMzQyN2FiMDE4Yy4uYTZjNjQ4MThj
NDk3NDU2MDkwZjY2MjNjMzA0YjVkNjI3NzA3YWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgRmxvYXRpbmdPYmpl
Y3Q6OkZsb2F0aW5nT2JqZWN0KFJlbmRlckJveCYgcmVuZGVyZXIsIFR5cGUgdHlwZSwgY29uc3Qg
TGF5b3V0UmVjdCYKIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09i
amVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVuZGVyZXIpCiB7Ci0gICAgYXV0byBvYmplY3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcik7CisgICAgYXV0byBvYmpl
Y3QgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcik7CiAgICAgb2JqZWN0LT5z
ZXRTaG91bGRQYWludCghcmVuZGVyZXIuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSk7IC8vIElmIGEg
bGF5ZXIgZXhpc3RzLCB0aGUgZmxvYXQgd2lsbCBwYWludCBpdHNlbGYuIE90aGVyd2lzZSBzb21l
b25lIGVsc2Ugd2lsbC4KICAgICBvYmplY3QtPnNldElzRGVzY2VuZGFudCh0cnVlKTsKICAgICBy
ZXR1cm4gb2JqZWN0OwpAQCAtODMsMTIgKzgzLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGlu
Z09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0Ojpjb3B5VG9OZXdD
b250YWluZXIoTGF5b3V0U2l6ZSBvZmZzZXQsIGJvb2wgc2hvdWxkUGFpbnQsIGJvb2wgaXNEZXNj
ZW5kYW50KSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2Jq
ZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIExheW91dFJlY3QoZnJhbWVSZWN0KCkubG9jYXRpb24o
KSAtIG9mZnNldCwgZnJhbWVSZWN0KCkuc2l6ZSgpKSwgbWFyZ2luT2Zmc2V0KCksIHNob3VsZFBh
aW50LCBpc0Rlc2NlbmRhbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0
PihyZW5kZXJlcigpLCB0eXBlKCksIExheW91dFJlY3QoZnJhbWVSZWN0KCkubG9jYXRpb24oKSAt
IG9mZnNldCwgZnJhbWVSZWN0KCkuc2l6ZSgpKSwgbWFyZ2luT2Zmc2V0KCksIHNob3VsZFBhaW50
LCBpc0Rlc2NlbmRhbnQpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZs
b2F0aW5nT2JqZWN0OjpjbG9uZUZvck5ld1BhcmVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBjbG9u
ZU9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5
cGUoKSwgbV9mcmFtZVJlY3QsIG1fbWFyZ2luT2Zmc2V0LCBtX3Nob3VsZFBhaW50LCBtX2lzRGVz
Y2VuZGFudCk7CisgICAgYXV0byBjbG9uZU9iamVjdCA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmpl
Y3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgbV9mcmFtZVJlY3QsIG1fbWFyZ2luT2Zmc2V0LCBtX3No
b3VsZFBhaW50LCBtX2lzRGVzY2VuZGFudCk7CiAgICAgY2xvbmVPYmplY3QtPm1fcGFnaW5hdGlv
blN0cnV0ID0gbV9wYWdpbmF0aW9uU3RydXQ7CiAgICAgY2xvbmVPYmplY3QtPm1faXNQbGFjZWQg
PSBtX2lzUGxhY2VkOwogICAgIHJldHVybiBjbG9uZU9iamVjdDsKQEAgLTM3Miw3ICszNzIsNyBA
QCB2b2lkIEZsb2F0aW5nT2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZsb2F0c1RyZWUoKQogICAgIGlm
IChtX3NldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGxhY2VkRmxvYXRz
VHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3RUcmVlPigpOworICAgIG1fcGxh
Y2VkRmxvYXRzVHJlZSA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3RUcmVlPigpOwogICAgIGZv
ciAoYXV0byBpdCA9IG1fc2V0LmJlZ2luKCksIGVuZCA9IG1fc2V0LmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0gaXQtPmdl
dCgpOwogICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZC5jcHAKaW5kZXggYzcyZDAxZDgxYzdkNzE2NjE1NzllM2JhMDE4MzBlNDI5ZDMw
ZjY4OC4uMWU5MTFhZTYwYTYxMjY4OWE0OTdmZjJkNWI3ZjBkNTBiODdlMjk1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxH
cmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRy
YWNrU3BhCiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleCA9IChtX2Rp
cmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkgOiBtX2dyaWRbMF0uc2l6ZSgp
OwogICAgIGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8IGVuZE9mVmFyeWluZ1RyYWNrSW5kZXg7
ICsrdmFyeWluZ1RyYWNrSW5kZXgpIHsKICAgICAgICAgaWYgKGlzRW1wdHlBcmVhRW5vdWdoKHJv
d1NwYW4sIGNvbHVtblNwYW4pKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFy
ZWE+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFuc2xh
dGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdy
aWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVt
bkluZGV4ICsgY29sdW1uU3BhbikpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRB
cmVhPiByZXN1bHQgPSBtYWtlVW5pcXVlPEdyaWRBcmVhPihHcmlkU3Bhbjo6dHJhbnNsYXRlZERl
ZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCArIHJvd1NwYW4pLCBHcmlkU3Bh
bjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRl
eCArIGNvbHVtblNwYW4pKTsKICAgICAgICAgICAgIC8vIEFkdmFuY2UgdGhlIGl0ZXJhdG9yIHRv
IGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hlcmUgd2Ugd291bGQgcmV0dXJuIHRoZSBzYW1lIGdy
aWQgYXJlYSBvdmVyIGFuZCBvdmVyLgogICAgICAgICAgICAgKyt2YXJ5aW5nVHJhY2tJbmRleDsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCmluZGV4IDVmYzMyODE1M2E2ZDhiZmM0ODgz
YmE1MTIxY2NhMGJmNmYyZTk5ZDAuLjY2MDkwOThmOWM4NzA0Njg4MTE0MThhYjE3ODI5NDE3YmVl
MmQxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVB
bGlnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVB
bGlnbm1lbnQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBHcmlkQmFzZWxpbmVBbGlnbm1l
bnQ6OnVwZGF0ZUJhc2VsaW5lQWxpZ25tZW50Q29udGV4dChJdGVtUG9zaXRpb24gcHJlZmVyZW4K
IAogICAgIC8vIExvb2tpbmcgZm9yIGEgY29tcGF0aWJsZSBiYXNlbGluZS1zaGFyaW5nIGdyb3Vw
LgogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZWxpbmVDb250ZXh0PihjaGlsZCwgcHJl
ZmVyZW5jZSwgYXNjZW50LCBkZXNjZW50KTsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8QmFzZWxpbmVDb250ZXh0PihjaGlsZCwgcHJlZmVyZW5jZSwgYXNj
ZW50LCBkZXNjZW50KTsKICAgICBlbHNlIHsKICAgICAgICAgYXV0byogY29udGV4dCA9IGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgICAgIGNvbnRleHQtPnVwZGF0ZVNoYXJl
ZEdyb3VwKGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAppbmRl
eCBhZGRlZGM0MjhiMWYyZmRiMzUwM2U4MTI2MjZiOTc2OTNhM2U3YjVmLi5iMmIwMTFiZGY3NDkx
YjM1YWIxZGJiN2FjNmIyNjM5NjE3MjFjY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcApAQCAtNjgxLDcgKzY4MSw3
IEBAIGRvdWJsZSBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5p
dFNpemUoY29uc3QgVmVjdG9yPEdyaWRUcmFjCiAgICAgICAgICAgICBsZWZ0T3ZlclNwYWNlIC09
IGJhc2VTaXplOwogICAgICAgICAgICAgZmxleEZhY3RvclN1bSAtPSBmbGV4RmFjdG9yOwogICAg
ICAgICAgICAgaWYgKCF0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlKQotICAgICAgICAgICAgICAg
IHRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrSW5kZXhT
ZXQ+KCk7CisgICAgICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSA9IG1ha2VV
bmlxdWU8VHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgICAgIHRyYWNrc1RvVHJlYXRBc0luZmxl
eGlibGUtPmFkZChpbmRleCk7CiAgICAgICAgICAgICB2YWxpZEZsZXhGYWN0b3JVbml0ID0gZmFs
c2U7CiAgICAgICAgIH0KQEAgLTEyNjAsMTAgKzEyNjAsMTAgQEAgdm9pZCBHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG06OnNldHVwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVu
c2lnbmUKICAgICBtX3NpemluZ09wZXJhdGlvbiA9IHNpemluZ09wZXJhdGlvbjsKICAgICBzd2l0
Y2ggKG1fc2l6aW5nT3BlcmF0aW9uKSB7CiAgICAgY2FzZSBJbnRyaW5zaWNTaXplQ29tcHV0YXRp
b246Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGVmaW5pdGVTaXpl
U3RyYXRlZ3k+KCp0aGlzKTsKKyAgICAgICAgbV9zdHJhdGVneSA9IG1ha2VVbmlxdWU8SW5kZWZp
bml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRyYWNr
U2l6aW5nOgotICAgICAgICBtX3N0cmF0ZWd5ID0gc3RkOjptYWtlX3VuaXF1ZTxEZWZpbml0ZVNp
emVTdHJhdGVneT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVuaXF1ZTxEZWZp
bml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA3M2IzNjU0NzY3MTQw
YTAzNzBlNGQ1Njk1NmU1NGYyNjc0YjU4YjM2Li5iM2M0MDA3OTAyZGY2MDQ4NjJhNWFjN2MyOTk4
Y2JhZDczZjExMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCkBAIC05Niw3ICs5Niw3IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgLCBtX2lzT3ZlcldpZGdldChvdGhlci5pc092ZXJX
aWRnZXQoKSkKIHsKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0
IGhpdCB0ZXN0LgotICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCA/IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCkgOiBudWxscHRyOworICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVy
Lm1fbGlzdEJhc2VkVGVzdFJlc3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlz
dEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOwogfQogCiBIaXRUZXN0UmVzdWx0Ojp+SGl0VGVz
dFJlc3VsdCgpID0gZGVmYXVsdDsKQEAgLTExMyw3ICsxMTMsNyBAQCBIaXRUZXN0UmVzdWx0JiBI
aXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAg
bV9pc092ZXJXaWRnZXQgPSBvdGhlci5pc092ZXJXaWRnZXQoKTsKIAogICAgIC8vIE9ubHkgY29w
eSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIGxpc3QgaGl0IHRlc3QuCi0gICAgbV9saXN0QmFzZWRU
ZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjptYWtlX3VuaXF1
ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CisgICAg
bV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gbWFr
ZVVuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7
CiAKICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC02OTAsMTQgKzY5MCwxNCBAQCB2b2lkIEhpdFRl
c3RSZXN1bHQ6OmFwcGVuZChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlciwgY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcQogY29uc3QgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJlc3Vs
dDo6bGlzdEJhc2VkVGVzdFJlc3VsdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2xpc3RCYXNlZFRl
c3RSZXN1bHQpCi0gICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Tm9kZVNldD4oKTsKKyAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gbWFrZVVuaXF1
ZTxOb2RlU2V0PigpOwogICAgIHJldHVybiAqbV9saXN0QmFzZWRUZXN0UmVzdWx0OwogfQogCiBI
aXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2VkVGVz
dFJlc3VsdCgpCiB7CiAgICAgaWYgKCFtX2xpc3RCYXNlZFRlc3RSZXN1bHQpCi0gICAgICAgIG1f
bGlzdEJhc2VkVGVzdFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKTsKKyAgICAg
ICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gbWFrZVVuaXF1ZTxOb2RlU2V0PigpOwogICAgIHJl
dHVybiAqbV9saXN0QmFzZWRUZXN0UmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVJdGVyYXRvci5oCmluZGV4IDQzYzY1Mzg3NmNmOTg0YTYyYjZmYzkyOTQ1ZDNkZDY5
MGNhM2VkYjkuLjE1ZmRlNTRkZTVkMzQ5OTIwODJkNDM5YTI5MGE1MWY5MjVjYzJkN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC00OTMsNyArNDkzLDcg
QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBudW1iZXJPZklzb2xhdGVBbmNlc3RvcnMoY29uc3Qg
SW5saW5lSXRlcmF0b3ImIGl0ZXIpCiAvLyBvZiBCaWRpUmVzb2x2ZXIgd2hpY2gga25vd3Mgbm90
aGluZyBhYm91dCBSZW5kZXJPYmplY3RzLgogc3RhdGljIGlubGluZSB2b2lkIGFkZFBsYWNlaG9s
ZGVyUnVuRm9ySXNvbGF0ZWRJbmxpbmUoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgUmVu
ZGVyT2JqZWN0JiBvYmosIHVuc2lnbmVkIHBvcywgUmVuZGVyRWxlbWVudCYgcm9vdCkKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gaXNvbGF0ZWRSdW4gPSBzdGQ6Om1ha2VfdW5pcXVl
PEJpZGlSdW4+KHBvcywgcG9zLCBvYmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGly
KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IG1ha2VVbmlx
dWU8QmlkaVJ1bj4ocG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5k
aXIoKSk7CiAgICAgLy8gRklYTUU6IGlzb2xhdGVkUnVucygpIGNvdWxkIGJlIGEgaGFzaCBvZiBv
YmplY3QtPnJ1biBhbmQgdGhlbiB3ZSBjb3VsZCBjaGVhcGx5CiAgICAgLy8gQVNTRVJUIGhlcmUg
dGhhdCB3ZSBkaWRuJ3QgY3JlYXRlIG11bHRpcGxlIG9iamVjdHMgZm9yIHRoZSBzYW1lIGlubGlu
ZS4KICAgICByZXNvbHZlci5zZXRXaGl0ZXNwYWNlQ29sbGFwc2luZ1RyYW5zaXRpb25Gb3JJc29s
YXRlZFJ1bigqaXNvbGF0ZWRSdW4sIHJlc29sdmVyLndoaXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUo
KS5jdXJyZW50VHJhbnNpdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MYXllck92ZXJsYXBNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVy
T3ZlcmxhcE1hcC5jcHAKaW5kZXggMjg1YWE1ZjlmZTliYWU3ZGZjODUyOGMyNGMxZDU1NjdkNDEy
OWZmMy4uOTZhZjk1YTQ1NTY5NTBlODEyNmI5NTM3MzUzNGQ0NzZkYWUzNTYzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKQEAgLTcxLDYgKzcxLDcg
QEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJl
Y3RMaXN0JiByZWN0TGlzdCkKIC8vIENoZWNraW5nIGZvciBvdmVybGFwIGludm9sdmVzIGZpbmRp
bmcgdGhlIG5vZGUgZm9yIHRoZSBjbGlwcGluZyBsYXllciBlbmNsb3NpbmcgdGhlIGdpdmVuIGxh
eWVyIChvciB0aGUgcm9vdCksCiAvLyBhbmQgY29tcGFyaW5nIGFnYWluc3QgdGhlIGJvdW5kcyBv
ZiBlYXJsaWVyIHNpYmxpbmdzLgogY2xhc3MgT3ZlcmxhcE1hcENvbnRhaW5lciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgT3ZlcmxhcE1hcENvbnRhaW5lcihj
b25zdCBSZW5kZXJMYXllciYgcm9vdExheWVyKQogICAgICAgICA6IG1fcm9vdFNjb3BlKHJvb3RM
YXllcikKQEAgLTI5Niw3ICsyOTcsNyBAQCBib29sIExheWVyT3ZlcmxhcE1hcDo6b3ZlcmxhcHNM
YXllcnMoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBMYXlvdXRSZWN0JgogCiB2b2lk
IExheWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCkKIHsKLSAgICBtX292
ZXJsYXBTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxPdmVybGFwTWFwQ29udGFpbmVyPiht
X3Jvb3RMYXllcikpOworICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPE92ZXJs
YXBNYXBDb250YWluZXI+KG1fcm9vdExheWVyKSk7CiB9CiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFw
Ojpwb3BDb21wb3NpdGluZ0NvbnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcAppbmRleCA0ZGJhM2YxYzQxMDVhZmIwZThlNGM3NmE3Y2ZjYjllNWZmZjcxODU0
Li4wMDE5MjU4ODJlNTAyOGM4YTIwOTliNGJiZGUzNzMxNjViNGEyNGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMg
dm9pZCBpbnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVyTWFwcyhjb25zdCBSZW5kZXJCbG9jayYgY29u
dGFpbmVyLCBSZW5kZXJCbwogICAgIH0KICAgICAKICAgICBhdXRvJiBkZXNjZW5kYW50U2V0ID0g
cGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwLT5lbnN1cmUoJmNvbnRhaW5lciwgW10gewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+
KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgYm9vbCBhZGRlZCA9IGRlc2NlbmRh
bnRTZXQtPmFkZCgmZGVzY2VuZGFudCkuaXNOZXdFbnRyeTsKQEAgLTExNSw3ICsxMTUsNyBAQCBz
dGF0aWMgdm9pZCBpbnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVyTWFwcyhjb25zdCBSZW5kZXJCbG9j
ayYgY29udGFpbmVyLCBSZW5kZXJCbwogICAgIH0KICAgICAKICAgICBhdXRvJiBjb250YWluZXJT
ZXQgPSBwZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwLT5lbnN1cmUoJmRlc2NlbmRhbnQsIFtdIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJCbG9j
ayo+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJs
b2NrKj4+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKCFjb250YWlu
ZXJTZXQtPmNvbnRhaW5zKCZjb250YWluZXIpKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBQ
b3NpdGlvbmVkRGVzY2VuZGFudHNNYXAgewogICAgICAgICB9CiAKICAgICAgICAgYXV0byYgZGVz
Y2VuZGFudHMgPSBtX2Rlc2NlbmRhbnRzTWFwLmVuc3VyZSgmY29udGFpbmluZ0Jsb2NrLCBbXSB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0
SGFzaFNldD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYWNrZWRSZW5kZXJl
ckxpc3RIYXNoU2V0PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAg
Ym9vbCBpc05ld0VudHJ5ID0gbW92ZURlc2NlbmRhbnRUb0VuZCA9PSBNb3ZlRGVzY2VuZGFudFRv
RW5kOjpZZXMgPyBkZXNjZW5kYW50cy0+YXBwZW5kT3JNb3ZlVG9MYXN0KCZwb3NpdGlvbmVkRGVz
Y2VuZGFudCkuaXNOZXdFbnRyeQpAQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBpbmxpbmUgVXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24qIGN1cnJlbnRVcGRhdGVTY3JvbGxJ
bmZvQWZ0CiB2b2lkIFJlbmRlckJsb2NrOjpiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91
dFRyYW5zYWN0aW9uKCkKIHsKICAgICBpZiAoIXVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRy
YW5zYWN0aW9uU3RhY2soKSkKLSAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJh
bnNhY3Rpb25TdGFjaygpID0gc3RkOjptYWtlX3VuaXF1ZTxEZWxheWVkVXBkYXRlU2Nyb2xsSW5m
b1N0YWNrPigpOworICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlv
blN0YWNrKCkgPSBtYWtlVW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7CiAg
ICAgaWYgKHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKS0+aXNF
bXB0eSgpIHx8IGN1cnJlbnRVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigp
LT52aWV3ICE9ICZ2aWV3KCkpCiAgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRy
YW5zYWN0aW9uU3RhY2soKS0+YXBwZW5kKFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5z
YWN0aW9uKHZpZXcoKSkpOwogICAgICsrY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91
dFRyYW5zYWN0aW9uKCktPm5lc3RlZENvdW50OwpAQCAtNjIwLDcgKzYyMCw3IEBAIHN0YXRpYyBS
ZW5kZXJCbG9ja1JhcmVEYXRhJiBlbnN1cmVCbG9ja1JhcmVEYXRhKGNvbnN0IFJlbmRlckJsb2Nr
JiBibG9jaykKICAgICAKICAgICBhdXRvJiByYXJlRGF0YSA9IGdSYXJlRGF0YU1hcC0+YWRkKCZi
bG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghcmFyZURhdGEpCi0gICAg
ICAgIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOwor
ICAgICAgICByYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tSYXJlRGF0YT4oKTsKICAg
ICByZXR1cm4gKnJhcmVEYXRhLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDdmMWU2Mzk3MDYzYmU0ZjhkZjliNTdmMTc1ZDZl
MjZlNzhlZmIxMzQuLmI4NjQyZDE3MjAzYmQ0YmYyNWJkZTE3MWY5ODcwYWY3ZDVhNDNhNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC02Nzgs
NyArNjc4LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNoaWxkcmVuKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmUKICAgICBtX3NpbXBsZUxpbmVMYXlv
dXQgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX2NvbXBsZXhMaW5lTGF5b3V0KQotICAgICAgICBt
X2NvbXBsZXhMaW5lTGF5b3V0ID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4TGluZUxheW91dD4o
KnRoaXMpOworICAgICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4
TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAgbV9jb21wbGV4TGluZUxheW91dC0+bGF5b3V0TGlu
ZUJveGVzKHJlbGF5b3V0Q2hpbGRyZW4sIHJlcGFpbnRMb2dpY2FsVG9wLCByZXBhaW50TG9naWNh
bEJvdHRvbSk7CiB9CkBAIC0yMDE5LDcgKzIwMTksNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
bGF5b3V0TGluZUdyaWRCb3goKQogICAgIAogICAgIHNldExpbmVHcmlkQm94KDApOwogCi0gICAg
YXV0byBsaW5lR3JpZEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMp
OworICAgIGF1dG8gbGluZUdyaWRCb3ggPSBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KCp0aGlz
KTsKICAgICBsaW5lR3JpZEJveC0+c2V0SGFzVGV4dENoaWxkcmVuKCk7IC8vIE5lZWRlZCB0byBt
YWtlIHRoZSBsaW5lIGFzY2VudC9kZXNjZW50IGFjdHVhbGx5IGJlIGhvbm9yZWQgaW4gcXVpcmtz
IG1vZGUuCiAgICAgbGluZUdyaWRCb3gtPnNldENvbnN0cnVjdGVkKCk7CiAgICAgR2x5cGhPdmVy
Zmxvd0FuZEZhbGxiYWNrRm9udHNNYXAgdGV4dEJveERhdGFNYXA7CkBAIC0yMjYwLDcgKzIyNjAs
NyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2xpcE91dEZsb2F0aW5nT2JqZWN0cyhSZW5kZXJC
bG9jayYgcm9vdEJsb2NrLCBjb25zdCBQYWludAogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y3Jl
YXRlRmxvYXRpbmdPYmplY3RzKCkKIHsKLSAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmxvYXRpbmdPYmplY3RzPigqdGhpcyk7CisgICAgbV9mbG9hdGluZ09iamVjdHMg
PSBtYWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0cz4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6cmVtb3ZlRmxvYXRpbmdPYmplY3RzKCkKQEAgLTM2NzcsNyArMzY3Nyw3IEBAIHZv
aWQgUmVuZGVyQmxvY2tGbG93OjplbnN1cmVMaW5lQm94ZXMoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBBU1NFUlQoIW1fY29tcGxleExpbmVMYXlvdXQpOwotICAgIG1fY29tcGxleExpbmVMYXlv
dXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CisgICAgbV9j
b21wbGV4TGluZUxheW91dCA9IG1ha2VVbmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsK
IAogICAgIGlmIChTaW1wbGVMaW5lTGF5b3V0OjpjYW5Vc2VGb3JMaW5lQm94VHJlZSgqdGhpcywg
Km1fc2ltcGxlTGluZUxheW91dCkpIHsKICAgICAgICAgU2ltcGxlTGluZUxheW91dDo6Z2VuZXJh
dGVMaW5lQm94VHJlZSgqdGhpcywgKm1fc2ltcGxlTGluZUxheW91dCk7CkBAIC0zNzM1LDcgKzM3
MzUsNyBAQCBSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhJiBSZW5kZXJC
bG9ja0Zsb3c6OmVuc3VyZVJhcmVCbG9ja0Zsb3dEYQogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1h
dGVyaWFsaXplUmFyZUJsb2NrRmxvd0RhdGEoKQogewogICAgIEFTU0VSVCghaGFzUmFyZUJsb2Nr
Rmxvd0RhdGEoKSk7Ci0gICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOworICAgIG1f
cmFyZUJsb2NrRmxvd0RhdGEgPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxv
Y2tGbG93UmFyZURhdGE+KCp0aGlzKTsKIH0KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGUyMGZjMjA3MTRhMTBl
MTIyMGQyZWZkMGE5YzhhYWNhMjk5ZDg1NDEuLmE0NjczZDExODgyYjMxZTkzZjJiYTcwOTBmMjJl
ZTMwNjA2OGQxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0x
MTgsNyArMTE4LDcgQEAgc3RhdGljIENvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCYgY29udHJvbFN0
YXRlc1JlbmRlcmVyTWFwKCkKIHN0YXRpYyBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikKIHsKICAgICByZXR1cm4gY29udHJv
bFN0YXRlc1JlbmRlcmVyTWFwKCkuZW5zdXJlKCZyZW5kZXJlciwgW10gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9sU3RhdGVzPigpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb250cm9sU3RhdGVzPigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
IH0KIApAQCAtMjExNSw3ICsyMTE1LDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZy
b21Db250YWluZXIoUmVuZGVyRWxlbWVudCYgY29udGFpbmVyLCBjb25zdCBMYXlvdXQKIAogc3Rk
Ojp1bmlxdWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJlbmRlckJveDo6Y3JlYXRlSW5saW5lQm94
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhp
cyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOwogfQog
CiB2b2lkIFJlbmRlckJveDo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXgg
NDI0MzBkZjhiYTdiNmFiODYzMjMyOGU2MmVmOTI1NzAxYWYzYjc3OC4uY2RjYTQ1OGExYzFmNDBl
OTY5NjIwNGNmNDY4ZDk5MTRlZGEyNGVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNTM4LDcgKzI1MzgsNyBAQCBhdXRv
IFJlbmRlckJveE1vZGVsT2JqZWN0OjplbnN1cmVDb250aW51YXRpb25DaGFpbk5vZGUoKSAtPiBD
b250aW51YXRpb25DaGFpbk5vZAogewogICAgIHNldEhhc0NvbnRpbnVhdGlvbkNoYWluTm9kZSh0
cnVlKTsKICAgICByZXR1cm4gKmNvbnRpbnVhdGlvbkNoYWluTm9kZU1hcCgpLmVuc3VyZSh0aGlz
LCBbJl0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRpb25DaGFp
bk5vZGU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGludWF0aW9uQ2hh
aW5Ob2RlPigqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggMjIxMDQ0MzRlNDVkNmM5ODQ3
NmZmZDI5YWI1NTBiZDYyYWM0MDhmZS4uYzFlMDNmMDk3ZWY1OWFkNWExNmIxOTRjOWMwNWQ2NDlm
N2ZmMTVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApA
QCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgaWYgKHBsYWNl
LnBhcmVudCkKICAgICAgICAgcGxhY2UucGFyZW50LT5pbnNlcnRBZnRlcihuZXdOb2RlLCBwbGFj
ZS5wcmV2aW91c1NpYmxpbmcuZ2V0KCksIGlkZW50aWZpZXIpOwogCi0gICAgbWFwcy5hZGQoJnJl
bmRlcmVyLCBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJNYXA+KCkpLml0ZXJhdG9yLT52YWx1ZS0+
YWRkKGlkZW50aWZpZXIsIG5ld05vZGUuY29weVJlZigpKTsKKyAgICBtYXBzLmFkZCgmcmVuZGVy
ZXIsIG1ha2VVbmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRp
ZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkpOwogICAgIHJlbmRlcmVyLnNldEhhc0NvdW50ZXJOb2Rl
TWFwKHRydWUpOwogCiAgICAgaWYgKG5ld05vZGUtPnBhcmVudCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKaW5kZXggNTFh
OWU0Njg0MzQ0ZDI2MzdkMDRhOTFmYjU5YTNjZDZlZjhmMDZlZC4uN2Y2Y2FiYzA1OTEyMTA4MWM0
ZDcyODYwMjE5YmQ0YjljODViOTRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgUmVu
ZGVyQm94RnJhZ21lbnRJbmZvKiBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94
RnJhZ21lbnRJbmZvKGNvbnN0IFIKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJCb3hGcmFnbWVudEluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJC
b3hGcmFnbWVudEluZm8uYWRkKGJveCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCb3hGcmFnbWVu
dEluZm8+KGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBjb250YWluaW5nQmxv
Y2tDaGFpbklzSW5zZXQpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50SW5mby5h
ZGQoYm94LCBtYWtlVW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJbnNl
dCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICByZXR1cm4gYm94SW5mby5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKaW5kZXggNDRmNTYz
NWJhNTNhZTNmN2U5NGQ3YWM4ZTQ5NjczOTBmNThjMmU1Ni4uODQ2ZGQzYTAyYWE4NmFhZjcxNWMw
OTRlOGMzNTBjMTY2YTg2N2IxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBSZW5kZXJGcmFn
bWVudENvbnRhaW5lciogUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmN1cnJlbnRGcmFnbWVudCgpIGNv
bnN0CiBDb250YWluaW5nRnJhZ21lbnRNYXAmIFJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb250YWlu
aW5nRnJhZ21lbnRNYXAoKQogewogICAgIGlmICghbV9saW5lVG9GcmFnbWVudE1hcCkKLSAgICAg
ICAgbV9saW5lVG9GcmFnbWVudE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmluZ0ZyYWdt
ZW50TWFwPigpOworICAgICAgICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gbWFrZVVuaXF1ZTxDb250
YWluaW5nRnJhZ21lbnRNYXA+KCk7CiAKICAgICByZXR1cm4gKm1fbGluZVRvRnJhZ21lbnRNYXAu
Z2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFw
LmNwcAppbmRleCBiOTA0NWU2NzkwODczYWJmODFhOTBkZmE1YmJiMTEwOTNjNjc3YjAyLi41MmM3
OTBkNGU1Nzg5YjE3OGUyNmM4YWJkOGJhN2IxM2NjNTkxNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2
b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTQogICAgIAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYg
c3RlcCA9IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBpZiAoIXQuaXNJbnRl
Z2VyVHJhbnNsYXRpb24oKSkKLSAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHQpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3Jt
ID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odCk7CiAgICAgZWxzZQogICAgICAg
ICBzdGVwLm1fb2Zmc2V0ID0gTGF5b3V0U2l6ZSh0LmUoKSwgdC5mKCkpOwogCkBAIC0yMzUsNyAr
MjM1LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcoY29uc3QgUmVuZGVyVmll
dyogdmlldywgY29uc3QgTGF5b3V0U2l6ZSYgc2Nyb2wKICAgICBSZW5kZXJHZW9tZXRyeU1hcFN0
ZXAmIHN0ZXAgPSBtX21hcHBpbmdbbV9pbnNlcnRpb25Qb3NpdGlvbl07CiAgICAgc3RlcC5tX29m
ZnNldCA9IHNjcm9sbE9mZnNldDsKICAgICBpZiAodCkKLSAgICAgICAgc3RlcC5tX3RyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCp0KTsKKyAgICAgICAg
c3RlcC5tX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCp0KTsK
ICAgICAKICAgICBzdGVwSW5zZXJ0ZWQoc3RlcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKaW5kZXggZTM1YTJjMTMyMjVkNDcyNWNkODhjMjJmNmQwNGNjYzlkMGYz
NDk3Zi4uNDlhZDAzNTU1MzczNDIyNWYxZGRkNjMzYjQyYzEzODMyY2NlZmJmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5
VHJhY2tzRm9yQXV0b1JlcGVhCiAgICAgdW5zaWduZWQgbGFzdEF1dG9SZXBlYXRUcmFjayA9IGZp
cnN0QXV0b1JlcGVhdFRyYWNrICsgZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKGRpcmVjdGlvbik7CiAK
ICAgICBpZiAoIWdyaWQuaGFzR3JpZEl0ZW1zKCkpIHsKLSAgICAgICAgZW1wdHlUcmFja0luZGV4
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOworICAgICAgICBl
bXB0eVRyYWNrSW5kZXhlcyA9IG1ha2VVbmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgdHJhY2tJbmRleCA9IGZpcnN0QXV0b1JlcGVhdFRyYWNrOyB0
cmFja0luZGV4IDwgbGFzdEF1dG9SZXBlYXRUcmFjazsgKyt0cmFja0luZGV4KQogICAgICAgICAg
ICAgZW1wdHlUcmFja0luZGV4ZXMtPmFkZCh0cmFja0luZGV4KTsKICAgICB9IGVsc2UgewpAQCAt
NTUyLDcgKzU1Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gUmVu
ZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0b1JlcGVhCiAgICAgICAgICAgICBHcmlk
SXRlcmF0b3IgaXRlcmF0b3IoZ3JpZCwgZGlyZWN0aW9uLCB0cmFja0luZGV4KTsKICAgICAgICAg
ICAgIGlmICghaXRlcmF0b3IubmV4dEdyaWRJdGVtKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IWVtcHR5VHJhY2tJbmRleGVzKQotICAgICAgICAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgICAg
ICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRl
eFNldD4oKTsKICAgICAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5k
ZXgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03MzIsNyArNzMyLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRBcmVhPiBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVj
aWZpZWRQb3NpdGlvbnNPdXQKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZkNyb3NzRGlyZWN0aW9u
ID0gZ3JpZC5udW1UcmFja3MoY3Jvc3NEaXJlY3Rpb24pOwogICAgIHVuc2lnbmVkIGNyb3NzRGly
ZWN0aW9uU3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1Bs
YWNlZEl0ZW0oZ3JpZEl0ZW0sIGNyb3NzRGlyZWN0aW9uKTsKICAgICBHcmlkU3BhbiBjcm9zc0Rp
cmVjdGlvblBvc2l0aW9ucyA9IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihl
bmRPZkNyb3NzRGlyZWN0aW9uLCBlbmRPZkNyb3NzRGlyZWN0aW9uICsgY3Jvc3NEaXJlY3Rpb25T
cGFuU2l6ZSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JpZEFyZWE+KHNwZWNpZmll
ZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVj
aWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lm
aWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEdyaWRBcmVhPihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3Nz
RGlyZWN0aW9uUG9zaXRpb25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rp
b24gPT0gRm9yQ29sdW1ucyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9z
aXRpb25zKTsKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0
ZW1zT25HcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYgYXV0b0dyaWRJ
dGVtcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4
IGY2Y2I1NjE4MTJkMjIyNjg2Njk4M2YzYWI5Yzc0MGE1NmRiMDI2ZTguLmMzNTVmZjM3MWI0MTFh
NThlNzkwNmM4NzdlYWQ0YjUzNDY3MTViYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBmbG9hdCBpbWFnZURl
dmljZVBpeGVsUmF0aW8pCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSwgSW50U2l6ZSgpKQotICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkg
OiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdl
UmVzb3VyY2Uoc3R5bGVJbWFnZSA/IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2U+KCpzdHlsZUltYWdlKSA6IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkK
ICAgICAsIG1faW1hZ2VEZXZpY2VQaXhlbFJhdGlvKGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKIHsK
ICAgICB1cGRhdGVBbHRUZXh0KCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgUmVuZGVySW1hZ2U6OlJl
bmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1h
Z2UqIHN0eWwKIAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKERvY3VtZW50JiBkb2N1bWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRl
clJlcGxhY2VkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQotICAgICwgbV9p
bWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlcklt
YWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IG1ha2VV
bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IG1ha2VV
bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA5ZDhhNjU5MzRiYTNmZDI1NDc0YzM5YzkxZmVl
YzQzYWEwYzlmOWY1Li4xNTMyNWNkYTE2OTA2N2E1NjkxYjg4NWE4ZGZkYzdhYTkwMzY0MDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTEwMCw3ICsx
MTAwLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmRlbGV0ZUxpbmVzKCkKIAogc3RkOjp1bmlxdWVf
cHRyPElubGluZUZsb3dCb3g+IFJlbmRlcklubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPElubGluZUZsb3dCb3g+KCp0aGlzKTsKIH0KIAogSW5saW5lRmxv
d0JveCogUmVuZGVySW5saW5lOjpjcmVhdGVBbmRBcHBlbmRJbmxpbmVGbG93Qm94KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDI3NmNlODI3MmJjZGIzMzY0
NTQxZGU0NjExMmYyYTNmOTc0MTAxNzEuLjY0MDYyOGZkNjRiZDFhZGIyYjI2OTg4OTVhZmNjOTNh
NDgwOGFhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
NzAwLDcgKzcwMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkK
ICAgICAgICAgLy8gSWdub3JlIG5vbi1vdmVyZmxvdyBsYXllcnMgYW5kIHJlZmxlY3Rpb25zLgog
ICAgICAgICBpZiAoY2hpbGQtPmlzTm9ybWFsRmxvd09ubHkoKSAmJiAhaXNSZWZsZWN0aW9uTGF5
ZXIoKmNoaWxkKSkgewogICAgICAgICAgICAgaWYgKCFtX25vcm1hbEZsb3dMaXN0KQotICAgICAg
ICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5k
ZXJMYXllcio+PigpOworICAgICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3QgPSBtYWtlVW5p
cXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOwogICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlz
dC0+YXBwZW5kKGNoaWxkKTsKICAgICAgICAgfQogICAgIH0KQEAgLTc1Niw3ICs3NTYsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcgogICAgIGlmIChpbmNsdWRlSGlkZGVuTGF5ZXIgJiYgIWlz
Tm9ybWFsRmxvd09ubHkoKSkgewogICAgICAgICBhdXRvJiBsYXllckxpc3QgPSAoekluZGV4KCkg
Pj0gMCkgPyBwb3NpdGl2ZVpPcmRlckxpc3QgOiBuZWdhdGl2ZVpPcmRlckxpc3Q7CiAgICAgICAg
IGlmICghbGF5ZXJMaXN0KQotICAgICAgICAgICAgbGF5ZXJMaXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKKyAgICAgICAgICAgIGxheWVyTGlzdCA9IG1ha2VV
bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CiAgICAgICAgIGxheWVyTGlzdC0+YXBwZW5k
KHRoaXMpOwogICAgIH0KIApAQCAtMTIwNiw3ICsxMjA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlVHJhbnNmb3JtKCkKICAgICBib29sIGhhZFRyYW5zZm9ybSA9ICEhbV90cmFuc2Zvcm07
CiAgICAgaWYgKGhhc1RyYW5zZm9ybSAhPSBoYWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKGhh
c1RyYW5zZm9ybSkKLSAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD4oKTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gbWFrZVVu
aXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV90cmFuc2Zvcm0gPSBudWxscHRyOwogICAgICAgICAKQEAgLTU1MTksNyArNTUxOSw3IEBAIFJl
ZjxDbGlwUmVjdHM+IFJlbmRlckxheWVyOjp1cGRhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3Rz
Q29udGV4dCYgY2xpcFJlY3RzQ29uCiAgICAgfQogICAgIAogICAgIGlmICghbV9jbGlwUmVjdHND
YWNoZSkKLSAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcFJl
Y3RzQ2FjaGU+KCk7CisgICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBtYWtlVW5pcXVlPENsaXBS
ZWN0c0NhY2hlPigpOwogI2lmbmRlZiBOREVCVUcKICAgICBtX2NsaXBSZWN0c0NhY2hlLT5tX2Ns
aXBSZWN0c1Jvb3RbY2xpcFJlY3RzVHlwZV0gPSBjbGlwUmVjdHNDb250ZXh0LnJvb3RMYXllcjsK
ICAgICBtX2NsaXBSZWN0c0NhY2hlLT5tX3Njcm9sbGJhclJlbGV2YW5jeVtjbGlwUmVjdHNUeXBl
XSA9IGNsaXBSZWN0c0NvbnRleHQub3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3k7CkBAIC02
MDk3LDcgKzYwOTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGVhckNsaXBSZWN0cyhDbGlwUmVj
dHNUeXBlIHR5cGVUb0NsZWFyKQogUmVuZGVyTGF5ZXJCYWNraW5nKiBSZW5kZXJMYXllcjo6ZW5z
dXJlQmFja2luZygpCiB7CiAgICAgaWYgKCFtX2JhY2tpbmcpIHsKLSAgICAgICAgbV9iYWNraW5n
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0aGlzKTsKKyAgICAgICAg
bV9iYWNraW5nID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0aGlzKTsKICAgICAg
ICAgY29tcG9zaXRvcigpLmxheWVyQmVjYW1lQ29tcG9zaXRlZCgqdGhpcyk7CiAKICAgICAgICAg
dXBkYXRlRmlsdGVyUGFpbnRpbmdTdHJhdGVneSgpOwpAQCAtNjUxNSw3ICs2NTE1LDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUKIAogICAgIGlmIChyZW5kZXJlcigpLmlzSFRNTE1hcnF1ZWUo
KSAmJiByZW5kZXJlcigpLnN0eWxlKCkubWFycXVlZUJlaGF2aW9yKCkgIT0gTWFycXVlZUJlaGF2
aW9yOjpOb25lICYmIHJlbmRlcmVyKCkuaXNCb3goKSkgewogICAgICAgICBpZiAoIW1fbWFycXVl
ZSkKLSAgICAgICAgICAgIG1fbWFycXVlZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTWFycXVl
ZT4odGhpcyk7CisgICAgICAgICAgICBtX21hcnF1ZWUgPSBtYWtlVW5pcXVlPFJlbmRlck1hcnF1
ZWU+KHRoaXMpOwogICAgICAgICBtX21hcnF1ZWUtPnVwZGF0ZU1hcnF1ZWVTdHlsZSgpOwogICAg
IH0gZWxzZSBpZiAobV9tYXJxdWVlKQogICAgICAgICBtX21hcnF1ZWUgPSBudWxscHRyOwpAQCAt
NjcyNyw3ICs2NzI3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZW5zdXJlTGF5ZXJGaWx0ZXJzKCkK
ICAgICBpZiAobV9maWx0ZXJzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9maWx0ZXJz
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllckZpbHRlcnM+KCp0aGlzKTsKKyAgICBtX2Zp
bHRlcnMgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOwogfQogCiB2b2lk
IFJlbmRlckxheWVyOjpjbGVhckxheWVyRmlsdGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDdmMTQzNjZhN2U1NjExMDMzNzIw
NzdiZWZlMmE2MDgzNDJmN2JhNDkuLjc1ZjllYjBmMjk3YTIzNmM3YTc4MjU2ODYzZDA1Mjg1N2I0
Y2RjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC0xNjI3LDcgKzE2MjcsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlQW5jZXN0b3JDbGlwcGluZ1N0YWNrKFZlY3RvcjxDb21wb3NpdGVkQ2xpcERhdGE+JgogICAg
IH0KICAgICAKICAgICBpZiAoIW1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKSB7Ci0gICAgICAgIG1f
YW5jZXN0b3JDbGlwcGluZ1N0YWNrID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckFuY2VzdG9yQ2xp
cHBpbmdTdGFjaz4oV1RGTW92ZShjbGlwcGluZ0RhdGEpKTsKKyAgICAgICAgbV9hbmNlc3RvckNs
aXBwaW5nU3RhY2sgPSBtYWtlVW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZN
b3ZlKGNsaXBwaW5nRGF0YSkpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcs
IHN0cmVhbSA8PCAibGF5ZXIgIiA8PCAmbV9vd25pbmdMYXllciA8PCAiIGFuY2VzdG9yQ2xpcHBp
bmdTdGFjayAiIDw8ICptX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTMxNzgsMTcgKzMxNzgsMTcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tp
bmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24mIGFu
aW0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNGaXJzdE9yTGFzdEtleWZyYW1lID0ga2V5ID09
IDAgfHwga2V5ID09IDE7CiAgICAgICAgIGlmICgoaGFzVHJhbnNmb3JtICYmIGlzRmlyc3RPckxh
c3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVy
dHlUcmFuc2Zvcm0pKQotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1h
a2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPnRy
YW5zZm9ybSgpLCB0ZikpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtl
VW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPnRyYW5z
Zm9ybSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgoaGFzT3BhY2l0eSAmJiBpc0ZpcnN0T3JMYXN0
S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5
T3BhY2l0eSkpCi0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5p
cXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0
ZikpOworICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFu
aW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKTsKIAogICAg
ICAgICBpZiAoKGhhc0ZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRL
ZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5RmlsdGVyKSkKLSAgICAgICAgICAg
IGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1
ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5maWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGZpbHRl
clZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlm
cmFtZVN0eWxlLT5maWx0ZXIoKSwgdGYpKTsKIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIp
CiAgICAgICAgIGlmICgoaGFzQmFja2Ryb3BGaWx0ZXIgJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1l
KSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tkcm9wRmlsdGVyKSkKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChz
dGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUt
PmJhY2tkcm9wRmlsdGVyKCksIHRmKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rv
ci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0
eWxlLT5iYWNrZHJvcEZpbHRlcigpLCB0ZikpOwogI2VuZGlmCiAgICAgfQogCkBAIC0zMjQzLDgg
KzMyNDMsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJs
ZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRp
b24qIG9wYWNpdHlBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3Bl
cnR5T3BhY2l0eSk7CiAgICAgICAgIGlmIChvcGFjaXR5QW5pbSAmJiAhb3BhY2l0eUFuaW0tPmlz
RW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBv
cGFjaXR5VmVjdG9yKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICAgICAgICAgIG9wYWNp
dHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwg
Y29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpOwotICAgICAgICAgICAg
b3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVl
PigxLCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpOworICAgICAgICAg
ICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigw
LCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAg
ICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEs
IGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAgICAgICAgICAv
LyBUaGUgYm94U2l6ZSBwYXJhbSBpcyBvbmx5IHVzZWQgZm9yIHRyYW5zZm9ybSBhbmltYXRpb25z
ICh3aGljaCBjYW4gb25seSBydW4gb24gUmVuZGVyQm94ZXMpLCBzbyB3ZSBwYXNzIGFuIGVtcHR5
IHNpemUgaGVyZS4KICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlv
bihvcGFjaXR5VmVjdG9yLCBGbG9hdFNpemUoKSwgb3BhY2l0eUFuaW0sIEdyYXBoaWNzTGF5ZXI6
OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSwgdGlt
ZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVj
dCBvcGFjaXR5IGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRo
ZSBmaW5hbCBvcGFjaXR5LgpAQCAtMzI1OCw4ICszMjU4LDggQEAgYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBw
cm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiB0cmFuc2Zvcm1BbmltID0gdG9TdHlsZS0+
dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKTsKICAgICAgICAgaWYg
KHRyYW5zZm9ybUFuaW0gJiYgIXRyYW5zZm9ybUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigp
KSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCB0cmFuc2Zvcm1WZWN0b3IoQW5pbWF0
ZWRQcm9wZXJ0eVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0
KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+
dHJhbnNmb3JtKCkpKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjpt
YWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+dHJhbnNmb3Jt
KCkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAg
ICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3Jh
cGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3Rvciwgc25hcHBlZEludFJlY3Qo
cmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSkuc2l6ZSgpLCB0cmFuc2Zvcm1BbmltLCBHcmFw
aGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5VHJh
bnNmb3JtKSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhh
dCB0aGUgY29ycmVjdCB0cmFuc2Zvcm0gaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5k
cywgYWxzbyBzZXQgdGhlIGZpbmFsIHRyYW5zZm9ybS4KICAgICAgICAgICAgICAgICB1cGRhdGVU
cmFuc2Zvcm0oKnRvU3R5bGUpOwpAQCAtMzI3Miw4ICszMjcyLDggQEAgYm9vbCBSZW5kZXJMYXll
ckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJ
RCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBmaWx0ZXJBbmltID0gdG9TdHlsZS0+
dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5RmlsdGVyKTsKICAgICAgICAgaWYgKGZp
bHRlckFuaW0gJiYgIWZpbHRlckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAg
ICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eUZp
bHRlcik7Ci0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8
RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+ZmlsdGVyKCkpKTsKLSAgICAgICAg
ICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25W
YWx1ZT4oMSwgdG9TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5p
bnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0
ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRl
ckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOwogICAgICAgICAgICAgaWYg
KG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGZpbHRlclZlY3RvciwgRmxvYXRTaXplKCks
IGZpbHRlckFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFu
aW1hdGVkUHJvcGVydHlGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8v
IFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFu
aW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgZmlsdGVyLgogICAgICAgICAgICAgICAg
IHVwZGF0ZUZpbHRlcnMoKnRvU3R5bGUpOwpAQCAtMzI4Nyw4ICszMjg3LDggQEAgYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJv
cGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBiYWNrZHJvcEZpbHRlckFu
aW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCYWNr
ZHJvcEZpbHRlcik7CiAgICAgICAgIGlmIChiYWNrZHJvcEZpbHRlckFuaW0gJiYgIWJhY2tkcm9w
RmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZy
YW1lVmFsdWVMaXN0IGJhY2tkcm9wRmlsdGVyVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlXZWJraXRC
YWNrZHJvcEZpbHRlcik7Ci0gICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQo
c3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNr
ZHJvcEZpbHRlcigpKSk7Ci0gICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQo
c3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ry
b3BGaWx0ZXIoKSkpOworICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KG1h
a2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+YmFja2Ryb3BGaWx0
ZXIoKSkpOworICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlx
dWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsK
ICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihiYWNrZHJvcEZp
bHRlclZlY3RvciwgRmxvYXRTaXplKCksIGJhY2tkcm9wRmlsdGVyQW5pbSwgR3JhcGhpY3NMYXll
cjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tk
cm9wRmlsdGVyKSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUg
dGhhdCB0aGUgY29ycmVjdCBiYWNrZHJvcCBmaWx0ZXIgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmlt
YXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIGJhY2tkcm9wIGZpbHRlci4KICAgICAgICAg
ICAgICAgICB1cGRhdGVCYWNrZHJvcEZpbHRlcnMoKnRvU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhYmU0ZDRk
Njc1YTIyMTg2ZTJlYTg5ZDQxMmZmYTgxNTM4YzVjOTI5Li4zMjEyMjlkNmYyM2NmYWU2NmEwNWE1
MjgwOGRkMGIwY2JhOGMxNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKFJlbmRlclZpZXcmIHJlbmRlclZpZXcp
CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpLnBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIG1fbGVnYWN5U2Nyb2xsaW5nTGF5ZXJD
b29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJD
b29yZGluYXRvcj4ocGFnZSgpLmNocm9tZSgpLmNsaWVudCgpLCBpc01haW5GcmFtZUNvbXBvc2l0
b3IoKSk7CisgICAgICAgIG1fbGVnYWN5U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvciA9IG1ha2VV
bmlxdWU8TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcj4ocGFnZSgpLmNocm9t
ZSgpLmNsaWVudCgpLCBpc01haW5GcmFtZUNvbXBvc2l0b3IoKSk7CiAjZW5kaWYKIH0KIApAQCAt
NjEyLDcgKzYxMiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlGbHVzaEJl
Zm9yZURpc3BsYXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqCiB7CiAgICAgaWYgKCFtX2xh
eWVyVXBkYXRlcikgewogICAgICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQgPSBwYWdl
KCkuY2hyb21lKCkuZGlzcGxheUlEKCk7Ci0gICAgICAgIG1fbGF5ZXJVcGRhdGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0xheWVyVXBkYXRlcj4oKnRoaXMsIGRpc3BsYXlJRCk7CisgICAg
ICAgIG1fbGF5ZXJVcGRhdGVyID0gbWFrZVVuaXF1ZTxHcmFwaGljc0xheWVyVXBkYXRlcj4oKnRo
aXMsIGRpc3BsYXlJRCk7CiAgICAgfQogICAgIAogICAgIG1fbGF5ZXJVcGRhdGVyLT5zY2hlZHVs
ZVVwZGF0ZSgpOwpAQCAtNDc5Miw3ICs0NzkyLDcgQEAgdm9pZCBMZWdhY3lXZWJLaXRTY3JvbGxp
bmdMYXllckNvb3JkaW5hdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMK
IAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Vmlld3BvcnRDb25zdHJhaW50cz4gY29uc3RyYWlu
dHM7CiAgICAgICAgIGlmIChsYXllci0+cmVuZGVyZXIoKS5pc1N0aWNraWx5UG9zaXRpb25lZCgp
KSB7Ci0gICAgICAgICAgICBjb25zdHJhaW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8U3RpY2t5UG9z
aXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3cG9y
dENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAgICAgICAgY29uc3RyYWludHMgPSBtYWtlVW5p
cXVlPFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRl
U3RpY2t5Vmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKICAgICAgICAgICAgIGNvbnN0IFJl
bmRlckxheWVyKiBlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllciA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBpZiAoY29tcG9zaXRvci5pc0FzeW5jU2Nyb2xsYWJsZVN0aWNreUxheWVyKCpsYXll
ciwgJmVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyKSAmJiBlbmNsb3NpbmdUb3VjaFNjcm9s
bGFibGVMYXllcikgewogICAgICAgICAgICAgICAgIEFTU0VSVChlbmNsb3NpbmdUb3VjaFNjcm9s
bGFibGVMYXllci0+aXNDb21wb3NpdGVkKCkpOwpAQCAtNDgwMCw3ICs0ODAwLDcgQEAgdm9pZCBM
ZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0
Q29uc3RyYWluZWRMYXllcnMKICAgICAgICAgICAgICAgICBzdGlja3lDb250YWluZXJNYXAuYWRk
KGxheWVyLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpLCBlbmNs
b3NpbmdUb3VjaFNjcm9sbGFibGVMYXllci0+YmFja2luZygpLT5zY3JvbGxDb250YWluZXJMYXll
cigpLT5wbGF0Zm9ybUxheWVyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYg
KGxheWVyLT5yZW5kZXJlcigpLmlzRml4ZWRQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb25z
dHJhaW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWlu
dHM+KGNvbXBvc2l0b3IuY29tcHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsK
KyAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gbWFrZVVuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3Bv
cnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRz
KCpsYXllcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmlu
ZGV4IDRiODZmZTJhZDE3NWRjZTg2YWQzODUyYmRmYzE1MmZkMTMwOGQ0NWUuLjEyOGM5NmRhZTBi
MzEwMDZjYTI1ZDVhNTZjNzIwYmM4OTBkMzRmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTk1LDcgKzk1LDcgQEAg
dm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpkZXN0cm95TGF5ZXIoKQogdm9pZCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0OjpjcmVhdGVMYXllcigpCiB7CiAgICAgQVNTRVJUKCFtX2xheWVyKTsK
LSAgICBtX2xheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllcj4oKnRoaXMpOworICAg
IG1fbGF5ZXIgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyPigqdGhpcyk7CiAgICAgc2V0SGFzTGF5
ZXIodHJ1ZSk7CiAgICAgbV9sYXllci0+aW5zZXJ0T25seVRoaXNMYXllcigpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCBiYzU1MjdiOGM0
NmE0ZGUwNjZmNjllNWEzMTBjODg2ODE5NmZjMjNhLi4xYWFlMDlkMDBiMjZlYTNjYWRlYTg2NzJl
Mjc3OTI5YmZkMTdhNjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmNwcApAQCAtODksNyArODksNyBAQCBpbnQgUmVuZGVyTGluZUJyZWFrOjpiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLAogCiBz
dGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gUmVuZGVyTGluZUJyZWFrOjpjcmVhdGVJ
bmxpbmVCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRC
b3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhp
cyk7CiB9CiAKIHZvaWQgUmVuZGVyTGluZUJyZWFrOjpzZXRJbmxpbmVCb3hXcmFwcGVyKElubGlu
ZUVsZW1lbnRCb3gqIGlubGluZUJveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAKaW5kZXggOWJiOWE1MzlkNjY0MmRmOTAwMjZhNzgy
YWY4Y2Y4NGRjNDlkYTJhOS4uNDEwM2RhZDQ4NDRkZDI0YTMwMmE3MzJhZjIyMTlhYzkwMDAxY2Ji
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
Rmxvdy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJl
bmRlck11bHRpQ29sdW1uRmxvdyk7CiAKIFJlbmRlck11bHRpQ29sdW1uRmxvdzo6UmVuZGVyTXVs
dGlDb2x1bW5GbG93KERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAg
ICA6IFJlbmRlckZyYWdtZW50ZWRGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKLSAgICAs
IG1fc3Bhbm5lck1hcChzdGQ6Om1ha2VfdW5pcXVlPFNwYW5uZXJNYXA+KCkpCisgICAgLCBtX3Nw
YW5uZXJNYXAobWFrZVVuaXF1ZTxTcGFubmVyTWFwPigpKQogICAgICwgbV9sYXN0U2V0V29ya2Vk
T24obnVsbHB0cikKICAgICAsIG1fY29sdW1uQ291bnQoMSkKICAgICAsIG1fY29sdW1uV2lkdGgo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNGRhM2Jk
NzM3NzFiYTE3MTkwZWFjMzVkYTYzOGUyNDNmMTkwMjkwNy4uMGJmNTE5M2RlNDg0NDViY2M2Nzdl
OTE0ZThhZDNkZjgxY2ViODJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKQEAgLTE4OTMsNyArMTg5Myw3IEBAIGNvbnN0IFJlbmRlck9iamVjdDo6UmVuZGVy
T2JqZWN0UmFyZURhdGEmIFJlbmRlck9iamVjdDo6cmFyZURhdGEoKSBjb25zdAogUmVuZGVyT2Jq
ZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YSYgUmVuZGVyT2JqZWN0OjplbnN1cmVSYXJlRGF0YSgp
CiB7CiAgICAgc2V0SGFzUmFyZURhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpyYXJlRGF0YU1hcCgp
LmVuc3VyZSh0aGlzLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlck9iamVjdFJh
cmVEYXRhPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpyYXJlRGF0YU1hcCgp
LmVuc3VyZSh0aGlzLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlck9iamVjdFJhcmVEYXRh
PigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVS
YXJlRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcAppbmRleCAzZmFhZmExMTIwNjUyNjIzZTA2NWU2YTIxY2UxYzc1MWRi
YTkxYTM3Li4wM2RkMDhmZTZiN2YwYTZkZDE1ZjIxZjIzMzVjY2FiYzVhZjAyYTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luKTsKIAogUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBz
aG90dGVkUGx1Z0luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJFbWJlZGRlZE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKLSAgICAsIG1fc25hcHNob3RSZXNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlcklt
YWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX3NuYXBzaG90UmVzb3VyY2UobWFrZVVuaXF1ZTxSZW5k
ZXJJbWFnZVJlc291cmNlPigpKQogewogICAgIG1fc25hcHNob3RSZXNvdXJjZS0+aW5pdGlhbGl6
ZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRl
eCAxODZjYTg3MGVkMTA5MTNkNThiODU0OWViOTZkZTMzNmUzNDU1MzU5Li5lOTFhMTMzNzE5OTEy
ZDE4ZmE1NWUzNmQ4MzU1ODg1N2MyZDE4YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAKQEAgLTEzNyw5ICsxMzcsOSBAQCB2b2lkIFJlbmRlclRhYmxlOjpzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eQogICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIENTUzIgc3BlYywgeW91IG9ubHkgdXNlIGZp
eGVkIHRhYmxlIGxheW91dCBpZiBhbgogICAgICAgICAvLyBleHBsaWNpdCB3aWR0aCBpcyBzcGVj
aWZpZWQgb24gdGhlIHRhYmxlLiAgQXV0byB3aWR0aCBpbXBsaWVzIGF1dG8gdGFibGUgbGF5b3V0
LgogICAgICAgICBpZiAoc3R5bGUoKS50YWJsZUxheW91dCgpID09IFRhYmxlTGF5b3V0VHlwZTo6
Rml4ZWQgJiYgIXN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNBdXRvKCkpCi0gICAgICAgICAgICBt
X3RhYmxlTGF5b3V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaXhlZFRhYmxlTGF5b3V0Pih0aGlzKTsK
KyAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBtYWtlVW5pcXVlPEZpeGVkVGFibGVMYXlvdXQ+
KHRoaXMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBdXRvVGFibGVMYXlvdXQ+KHRoaXMpOworICAgICAgICAgICAgbV90YWJsZUxh
eW91dCA9IG1ha2VVbmlxdWU8QXV0b1RhYmxlTGF5b3V0Pih0aGlzKTsKICAgICB9CiAKICAgICAv
LyBJZiBib3JkZXIgd2FzIGNoYW5nZWQsIGludmFsaWRhdGUgY29sbGFwc2VkIGJvcmRlcnMgY2Fj
aGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNjhjM2ExNWQ5
NTE2YjViM2M3YzJkZGFiNGFkYTQwOWE1ZGMyMGRmYS4uYTAyZDljMTZmM2EyN2NjNTIyMDk3MTAy
YzI2OWI3NTU1MDlkMDAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cApAQCAtMTMxMSw3ICsxMzExLDcgQEAgdm9pZCBSZW5kZXJUZXh0OjpkaXJ0eUxpbmVCb3hlcyhi
b29sIGZ1bGxMYXlvdXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJU
ZXh0OjpjcmVhdGVUZXh0Qm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxp
bmVUZXh0Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lVGV4dEJveD4o
KnRoaXMpOwogfQogCiB2b2lkIFJlbmRlclRleHQ6OnBvc2l0aW9uTGluZUJveChJbmxpbmVUZXh0
Qm94JiB0ZXh0Qm94KQpAQCAtMTU0NSw3ICsxNTQ1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojptb21l
bnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RU
eXAKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIHNlY3VyZVRleHRUaW1lciA9IHNlY3VyZVRl
eHRUaW1lcnMoKS5hZGQodGhpcywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICgh
c2VjdXJlVGV4dFRpbWVyKQotICAgICAgICBzZWN1cmVUZXh0VGltZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNlY3VyZVRleHRUaW1lcj4oKnRoaXMpOworICAgICAgICBzZWN1cmVUZXh0VGltZXIgPSBt
YWtlVW5pcXVlPFNlY3VyZVRleHRUaW1lcj4oKnRoaXMpOwogICAgIHNlY3VyZVRleHRUaW1lci0+
cmVzdGFydChvZmZzZXRBZnRlckxhc3RUeXBlZENoYXJhY3Rlcik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCBjMTQ0NTFhMThlZWE3YTU3MWEyNzc3ODk4
YTc5Y2M4YjQzZmYzMTQyLi41ZmVjNjc4YzZiYjVkZjBlNDkyMmIwMTJjM2YyNjhkYmFiNGE3YjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC00OTIsNyArNDky
LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRS
ZWN0JiByZXBhaW50UmVjdCkgY29uc3QKICAgICAvLyBGSVhNRTogTWF5YmUgdGhlcmUgc2hvdWxk
IGJlIGEgcmVnaW9uIHR5cGUgdGhhdCBkb2VzIHRoaXMgYXV0b21hdGljYWxseS4KICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVJlcGFpbnRSZWdpb25HcmlkU2l6ZSA9IDE2ICogMTY7
CiAgICAgaWYgKG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ncmlkU2l6ZSgpID4gbWF4aW11
bVJlcGFpbnRSZWdpb25HcmlkU2l6ZSkKLSAgICAgICAgbV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lvbj4obV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24t
PmJvdW5kcygpKTsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBtYWtlVW5p
cXVlPFJlZ2lvbj4obV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24tPmJvdW5kcygpKTsKIH0KIAog
dm9pZCBSZW5kZXJWaWV3OjpmbHVzaEFjY3VtdWxhdGVkUmVwYWludFJlZ2lvbigpIGNvbnN0CkBA
IC03MjQsNyArNzI0LDcgQEAgYm9vbCBSZW5kZXJWaWV3Ojp1c2VzQ29tcG9zaXRpbmcoKSBjb25z
dAogUmVuZGVyTGF5ZXJDb21wb3NpdG9yJiBSZW5kZXJWaWV3Ojpjb21wb3NpdG9yKCkKIHsKICAg
ICBpZiAoIW1fY29tcG9zaXRvcikKLSAgICAgICAgbV9jb21wb3NpdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJMYXllckNvbXBvc2l0b3I+KCp0aGlzKTsKKyAgICAgICAgbV9jb21wb3NpdG9y
ID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllckNvbXBvc2l0b3I+KCp0aGlzKTsKIAogICAgIHJldHVy
biAqbV9jb21wb3NpdG9yOwogfQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgUmVuZGVyVmlldzo6
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsCiBJbWFnZVF1YWxpdHlDb250cm9sbGVyJiBSZW5kZXJWaWV3OjppbWFnZVF1YWxpdHlD
b250cm9sbGVyKCkKIHsKICAgICBpZiAoIW1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcikKLSAgICAg
ICAgbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVF1YWxp
dHlDb250cm9sbGVyPigqdGhpcyk7CisgICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9
IG1ha2VVbmlxdWU8SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4oKnRoaXMpOwogICAgIHJldHVybiAq
bV9pbWFnZVF1YWxpdHlDb250cm9sbGVyOwogfQogCkBAIC04MzQsNyArODM0LDcgQEAgUmVuZGVy
Vmlldzo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3Io
UmVuZGVyVmlldyogdmlldykKIAogICAgIG1fd2FzQWNjdW11bGF0aW5nUmVwYWludFJlZ2lvbiA9
ICEhcm9vdFJlbmRlclZpZXctPm1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uOwogICAgIGlmICgh
bV93YXNBY2N1bXVsYXRpbmdSZXBhaW50UmVnaW9uKQotICAgICAgICByb290UmVuZGVyVmlldy0+
bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lvbj4oKTsK
KyAgICAgICAgcm9vdFJlbmRlclZpZXctPm1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gbWFr
ZVVuaXF1ZTxSZWdpb24+KCk7CiAgICAgbV9yb290VmlldyA9IG1ha2VXZWFrUHRyKCpyb290UmVu
ZGVyVmlldyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNw
cAppbmRleCBmZGNkNTljNTJjNWYzMjhmNTIwOWYwMGMxZjhkODE2YWRjNWY3NjY4Li40NDU1ODQx
YWYzMmZmMTUyNTJjZmEyOGVkOGE2OWMzZTQ5ZjFmMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgZmxvYXQgUm9vdElu
bGluZUJveDo6cGxhY2VFbGxpcHNpcyhjb25zdCBBdG9tU3RyaW5nJiBlbGxpcHNpc1N0ciwgIGJv
b2wgbHRyLCBmbG8KICAgICAgICAgZ0VsbGlwc2lzQm94TWFwID0gbmV3IEVsbGlwc2lzQm94TWFw
KCk7CiAKICAgICBBU1NFUlQoIWhhc0VsbGlwc2lzQm94KCkpOwotICAgIGF1dG8qIGVsbGlwc2lz
Qm94ID0gZ0VsbGlwc2lzQm94TWFwLT5zZXQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxFbGxpcHNp
c0JveD4oYmxvY2tGbG93KCksIGVsbGlwc2lzU3RyLCB0aGlzLCBlbGxpcHNpc1dpZHRoIC0gKG1h
cmt1cEJveCA/IG1hcmt1cEJveC0+bG9naWNhbFdpZHRoKCkgOiAwKSwgbG9naWNhbEhlaWdodCgp
LCB5KCksICFwcmV2Um9vdEJveCgpLCBpc0hvcml6b250YWwoKSwgbWFya3VwQm94KSkuaXRlcmF0
b3ItPnZhbHVlLmdldCgpOworICAgIGF1dG8qIGVsbGlwc2lzQm94ID0gZ0VsbGlwc2lzQm94TWFw
LT5zZXQodGhpcywgbWFrZVVuaXF1ZTxFbGxpcHNpc0JveD4oYmxvY2tGbG93KCksIGVsbGlwc2lz
U3RyLCB0aGlzLCBlbGxpcHNpc1dpZHRoIC0gKG1hcmt1cEJveCA/IG1hcmt1cEJveC0+bG9naWNh
bFdpZHRoKCkgOiAwKSwgbG9naWNhbEhlaWdodCgpLCB5KCksICFwcmV2Um9vdEJveCgpLCBpc0hv
cml6b250YWwoKSwgbWFya3VwQm94KSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIHNldEhh
c0VsbGlwc2lzQm94KHRydWUpOwogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGFuIFJUTCB2ZXJz
aW9uIG9mIHRoaXM/CiAgICAgaWYgKGx0ciAmJiAoeCgpICsgbG9naWNhbFdpZHRoKCkgKyBlbGxp
cHNpc1dpZHRoKSA8PSBibG9ja1JpZ2h0RWRnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmgKaW5kZXggN2RmMjgyODhhNGQ1NWMyYzdkMjZhZDRiYzAxNzZkMGI3NjE3
ODM2NC4uMjQ3ZTU1YzA2OWU5ZmU4ODFjYWY0YmZiYzJiNGFlZjE5ZTM2MTdhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xh
c3MgUm9vdElubGluZUJveCA6IHB1YmxpYyBJbmxpbmVGbG93Qm94LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8Um9vdElubGluZUJveD4KICAgICAgICAgaWYgKG1fZmxvYXRzKQogICAgICAgICAgICAg
bV9mbG9hdHMtPmFwcGVuZChtYWtlV2Vha1B0cihmbG9hdGluZ0JveCkpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2Zsb2F0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xlYW5MaW5lRmxvYXRM
aXN0PigxLCBtYWtlV2Vha1B0cihmbG9hdGluZ0JveCkpOworICAgICAgICAgICAgbV9mbG9hdHMg
PSBtYWtlVW5pcXVlPENsZWFuTGluZUZsb2F0TGlzdD4oMSwgbWFrZVdlYWtQdHIoZmxvYXRpbmdC
b3gpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZUZsb2F0KFJlbmRlckJveCYgZmxvYXRpbmdC
b3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3Bw
CmluZGV4IGVjNWU3MzU2YTY0ZDEyNDlkZGExMTQ3ZThiYmEzMWY0NzkwYjRiZjIuLmI5YmFkMGEw
OWYyOWJmN2FkYzlkMzMzZjRlODExYzNlYTFiOTNmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCkBAIC0xMzEsMTMgKzEzMSwxMyBAQCBz
dGF0aWMgU2VsZWN0aW9uRGF0YSBjb2xsZWN0KGNvbnN0IFNlbGVjdGlvblJhbmdlRGF0YTo6Q29u
dGV4dCYgc2VsZWN0aW9uLCBib29sCiAgICAgd2hpbGUgKHN0YXJ0ICYmIHN0YXJ0ICE9IHN0b3Ap
IHsKICAgICAgICAgaWYgKGlzVmFsaWRSZW5kZXJlckZvclNlbGVjdGlvbigqc3RhcnQsIHNlbGVj
dGlvbikpIHsKICAgICAgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9yIHBhaW50
aW5nIGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3
ZWxsLgotICAgICAgICAgICAgb2xkU2VsZWN0aW9uRGF0YS5yZW5kZXJlcnMuc2V0KHN0YXJ0LCBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgdHJ1ZSkpOworICAg
ICAgICAgICAgb2xkU2VsZWN0aW9uRGF0YS5yZW5kZXJlcnMuc2V0KHN0YXJ0LCBtYWtlVW5pcXVl
PFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgdHJ1ZSkpOwogICAgICAgICAgICAgaWYgKHJl
cGFpbnREaWZmZXJlbmNlKSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvKiBibG9jayA9IGNv
bnRhaW5pbmdCbG9ja0JlbG93Vmlldygqc3RhcnQpOyBibG9jazsgYmxvY2sgPSBjb250YWluaW5n
QmxvY2tCZWxvd1ZpZXcoKmJsb2NrKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvJiBibG9j
a0luZm8gPSBvbGRTZWxlY3Rpb25EYXRhLmJsb2Nrcy5hZGQoYmxvY2ssIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmJsb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlv
bkluZm8+KCpibG9jayk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMTMsMTMgKzIxMywxMyBAQCBJbnRSZWN0IFNlbGVjdGlvblJhbmdlRGF0YTo6Y29s
bGVjdEJvdW5kcyhDbGlwVG9WaXNpYmxlQ29udGVudCBjbGlwVG9WaXNpYmxlQ29udAogICAgICAg
ICBpZiAoKHN0YXJ0LT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCBzdGFydCA9PSBtX3NlbGVjdGlv
bkNvbnRleHQuc3RhcnQoKSB8fCBzdGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCiAg
ICAgICAgICAgICAmJiBzdGFydC0+c2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNl
bGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9y
IHBhaW50aW5nIGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5l
ZCBhcyB3ZWxsLgotICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwgc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50ID09
IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKKyAgICAgICAgICAgIHJlbmRlcmVycy5zZXQo
c3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBjbGlwVG9WaXNp
YmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKSk7CiAgICAgICAgICAgICBh
dXRvKiBibG9jayA9IHN0YXJ0LT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIHdoaWxl
IChibG9jayAmJiAhaXM8UmVuZGVyVmlldz4oKmJsb2NrKSkgewogICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gcmVuZGVyZXJz
LmFkZChibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlm
IChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2Nr
LCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsKKyAg
ICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+
KCpibG9jaywgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olll
cyk7CiAgICAgICAgICAgICAgICAgYmxvY2sgPSBibG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFNlbGVjdGlv
blJhbmdlRGF0YTo6YXBwbHkoY29uc3QgQ29udGV4dCYgbmV3U2VsZWN0aW9uLCBSZXBhaW50TW9k
ZSBibG9ja1JlcAogICAgIHNlbGVjdGlvbkl0ZXJhdG9yID0gU2VsZWN0aW9uSXRlcmF0b3Ioc2Vs
ZWN0aW9uU3RhcnQpOwogICAgIGZvciAoYXV0byogY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9u
U3RhcnQ7IGN1cnJlbnRSZW5kZXJlciAmJiBjdXJyZW50UmVuZGVyZXIgIT0gc2VsZWN0aW9uRW5k
OyBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25JdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAg
aWYgKGlzVmFsaWRSZW5kZXJlckZvclNlbGVjdGlvbigqY3VycmVudFJlbmRlcmVyLCBtX3NlbGVj
dGlvbkNvbnRleHQpKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0
aW9uSW5mbz4gc2VsZWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9u
SW5mbz4oKmN1cnJlbnRSZW5kZXJlciwgdHJ1ZSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4gc2VsZWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVy
U2VsZWN0aW9uSW5mbz4oKmN1cnJlbnRSZW5kZXJlciwgdHJ1ZSk7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfQ09OVFJPTFMpCiAgICAgICAgICAgICBmb3IgKGF1dG8mIHJlY3QgOiBzZWxlY3Rpb25JbmZv
LT5jb2xsZWN0ZWRTZWxlY3Rpb25SZWN0cygpKQogICAgICAgICAgICAgICAgIG1fc2VsZWN0aW9u
UmVjdEdhdGhlcmVyLmFkZFJlY3Qoc2VsZWN0aW9uSW5mby0+cmVwYWludENvbnRhaW5lcigpLCBy
ZWN0KTsKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6YXBwbHko
Y29uc3QgQ29udGV4dCYgbmV3U2VsZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1JlcAogICAgICAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+JiBibG9j
a0luZm8gPSBuZXdTZWxlY3RlZEJsb2Nrcy5hZGQoY29udGFpbmluZ0Jsb2NrLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpjb250YWluaW5nQmxvY2spOworICAg
ICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25J
bmZvPigqY29udGFpbmluZ0Jsb2NrKTsKICAgICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2sg
PSBjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwogI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQogICAgICAgICAgICAgICAgIG1fc2VsZWN0aW9uUmVjdEdhdGhlcmVyLmFkZEdh
cFJlY3RzKGJsb2NrSW5mby0+cmVwYWludENvbnRhaW5lcigpLCBibG9ja0luZm8tPnJlY3RzKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4
IDhjNzY2ZTZkZTJjNzRhZDAzNzk3MzMzMWZjN2Y1YTQ3NDkwMTViOGUuLmMzNjJmNGU1N2IwMGY5
Y2UzOWE3M2VjZTgxMWMyYzgzMmQ2NTBiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTk5Nyw3ICs5OTcsNyBAQCBMYXlvdXQ6OkxheW91
dChjb25zdCBSdW5WZWN0b3ImIHJ1blZlY3RvciwgdW5zaWduZWQgbGluZUNvdW50LCBjb25zdCBS
ZW5kZXJCbG9jawogY29uc3QgUnVuUmVzb2x2ZXImIExheW91dDo6cnVuUmVzb2x2ZXIoKSBjb25z
dAogewogICAgIGlmICghbV9ydW5SZXNvbHZlcikKLSAgICAgICAgbV9ydW5SZXNvbHZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVuUmVzb2x2ZXI+KG1fYmxvY2tGbG93UmVuZGVyZXIsICp0aGlzKTsK
KyAgICAgICAgbV9ydW5SZXNvbHZlciA9IG1ha2VVbmlxdWU8UnVuUmVzb2x2ZXI+KG1fYmxvY2tG
bG93UmVuZGVyZXIsICp0aGlzKTsKICAgICByZXR1cm4gKm1fcnVuUmVzb2x2ZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rp
b25zLmNwcAppbmRleCAxYmY5OGU0ZWViNDNiYTIyY2RhNGU2ZjVkM2JjMmE1ZjlmYzRiNGI3Li4w
NjI1YjE2YmQ1NDMxOTczZWQzMWRlOTk4YWVkODg5YjAxMmJhM2JhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBA
IC0xMDIsNyArMTAyLDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBm
bG93LCBjb25zdCBMYXlvdXQmIGxheW91dCwgUGFpbnRJbmZvJiBwYWkKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTaGFkb3dEYXRhPiBkZWJ1Z1NoYWRvdyA9IG51bGxwdHI7CiAgICAgaWYgKGZsb3cu
c2V0dGluZ3MoKS5zaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgpKSB7Ci0gICAg
ICAgIGRlYnVnU2hhZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgw
LCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAs
IDIwMCkpOworICAgICAgICBkZWJ1Z1NoYWRvdyA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oSW50
UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3IoMCwg
MjU1LCAwLCAyMDApKTsKICAgICAgICAgdGV4dFBhaW50ZXIuc2V0U2hhZG93KGRlYnVnU2hhZG93
LmdldCgpKTsKICAgICB9CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIGdlbmVyYXRlTGluZUJv
eFRyZWUoUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkKICAgICAg
ICAgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4gYmlkaVJ1bnM7CiAgICAgICAgIGZvciAoYXV0byBpdCA9
IHJhbmdlLmJlZ2luKCk7IGl0ICE9IHJhbmdlLmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAgICBh
dXRvIHJ1biA9ICppdDsKLSAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVuZFJ1bihzdGQ6Om1ha2Vf
dW5pcXVlPEJpZGlSdW4+KHJ1bi5sb2NhbFN0YXJ0KCksIHJ1bi5sb2NhbEVuZCgpLCBjb25zdF9j
YXN0PFJlbmRlck9iamVjdCY+KHJ1bi5yZW5kZXJlcigpKSwgYmlkaUNvbnRleHQucHRyKCksIFVf
TEVGVF9UT19SSUdIVCkpOworICAgICAgICAgICAgYmlkaVJ1bnMuYXBwZW5kUnVuKG1ha2VVbmlx
dWU8QmlkaVJ1bj4ocnVuLmxvY2FsU3RhcnQoKSwgcnVuLmxvY2FsRW5kKCksIGNvbnN0X2Nhc3Q8
UmVuZGVyT2JqZWN0Jj4ocnVuLnJlbmRlcmVyKCkpLCBiaWRpQ29udGV4dC5wdHIoKSwgVV9MRUZU
X1RPX1JJR0hUKSk7CiAgICAgICAgIH0KIAogICAgICAgICBMaW5lSW5mbyBsaW5lSW5mbzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCmluZGV4IDNiYTEzMGQ0
NTU5ZDcyOTJkODkxZjU1M2NmMTQ4MGY4NjZiYjJiYWQuLjRiNDNlNmFjYmUwZWVkYWY0ZWFmNGQy
ZTVkNWE0NDYzOTA2MDUzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0QXV0b1NpemluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRv
U2l6aW5nLmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgVGV4dEF1dG9TaXppbmc6OmFkZFRl
eHROb2RlKFRleHQmIG5vZGUsIGZsb2F0IGNhbmRpZGF0ZVNpemUpCiAgICAgTE9HKFRleHRBdXRv
c2l6aW5nLCAiIGFkZEF1dG9TaXplZE5vZGUgJXAgY2FuZGlkYXRlU2l6ZT0lZiIsICZub2RlLCBj
YW5kaWRhdGVTaXplKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdGV4dE5vZGVzLmFkZDxUZXh0
QXV0b1NpemluZ0hhc2hUcmFuc2xhdG9yPihub2RlLnJlbmRlcmVyKCktPnN0eWxlKCksIG51bGxw
dHIpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEF1dG9TaXppbmdWYWx1ZT4oKTsK
KyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8VGV4dEF1dG9T
aXppbmdWYWx1ZT4oKTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGRUZXh0Tm9k
ZShub2RlLCBjYW5kaWRhdGVTaXplKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZUJyZWFrZXIuY3BwCmluZGV4IDJiMWMxZmEwM2NhMWM1NzU2OTAyNzdhNWU4MTI4
NzEwMTBkNDQ2N2UuLmQxMTY2MTVhNzI2YzVhMGE5NDNkOWI5ZjZlMDk0MGI5NWU2OTA5MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgdm9pZCBMaW5lQnJlYWtlcjo6c2tpcExlYWRpbmdXaGl0ZXNwYWNlKElubGlu
ZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIExpbmVJbmZvJgogICAgICAgICBpZiAob2JqZWN0Lmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgICAgICBzZXRTdGF0aWNQb3NpdGlvbnMo
bV9ibG9jaywgZG93bmNhc3Q8UmVuZGVyQm94PihvYmplY3QpLCB3aWR0aC5zaG91bGRJbmRlbnRU
ZXh0KCkpOwogICAgICAgICAgICAgaWYgKG9iamVjdC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5
SW5saW5lVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1
bihzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KDAsIDEsIG9iamVjdCwgcmVzb2x2ZXIuY29udGV4
dCgpLCByZXNvbHZlci5kaXIoKSkpOworICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMoKS5h
cHBlbmRSdW4obWFrZVVuaXF1ZTxCaWRpUnVuPigwLCAxLCBvYmplY3QsIHJlc29sdmVyLmNvbnRl
eHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKICAgICAgICAgICAgICAgICBsaW5lSW5mby5pbmNyZW1l
bnRSdW5zRnJvbUxlYWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAob2JqZWN0LmlzRmxvYXRpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKaW5kZXggNGIxNTk3ZTlmMjFjOWNkNGIyZjBkODgz
NDc0NDc3NWYxZDhiZGUwMS4uZDUyMDkyYjY4ZWQ4ZTJjOGZkYTUxNWM5MGNkNTIyMzU2ZDY1NWMy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgSW50U2hhcGVJbnRlcnZhbCBNYXJnaW5JbnRlcnZhbEdlbmVy
YXRvcjo6aW50ZXJ2YWxBdChpbnQgeSkgY29uc3QKIHN0ZDo6dW5pcXVlX3B0cjxSYXN0ZXJTaGFw
ZUludGVydmFscz4gUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVy
dmFscyhpbnQgc2hhcGVNYXJnaW4pIGNvbnN0CiB7CiAgICAgaW50IG1hcmdpbkludGVydmFsc1Np
emUgPSAob2Zmc2V0KCkgPiBzaGFwZU1hcmdpbikgPyBzaXplKCkgOiBzaXplKCkgLSBvZmZzZXQo
KSAqIDIgKyBzaGFwZU1hcmdpbiAqIDI7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5JbnRlcnZhbHNTaXplLCBzdGQ6Om1heChz
aGFwZU1hcmdpbiwgb2Zmc2V0KCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8UmFz
dGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFy
Z2luLCBvZmZzZXQoKSkpOwogICAgIE1hcmdpbkludGVydmFsR2VuZXJhdG9yIG1hcmdpbkludGVy
dmFsR2VuZXJhdG9yKHNoYXBlTWFyZ2luKTsKIAogICAgIGZvciAoaW50IHkgPSBib3VuZHMoKS55
KCk7IHkgPCBib3VuZHMoKS5tYXhZKCk7ICsreSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcAppbmRleCAzMDIzMWEwYmUxYmJjNjNlNGJlM2QyNTA1MTJiZWQzZDE5
NTk0MDk5Li5mNWVmZWZkZDMyYjMwNTQ3YWRiZDhlYjA4ZjU0ZTYzYjAyNDBmZDljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtNDYsMjQgKzQ2LDI0IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0
ZUluc2V0U2hhcGUoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgYm91bmRzKQogewogICAgIEFTU0VS
VChib3VuZHMucmVjdCgpLndpZHRoKCkgPj0gMCAmJiBib3VuZHMucmVjdCgpLmhlaWdodCgpID49
IDApOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveFNoYXBlPihib3VuZHMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEJveFNoYXBlPihib3VuZHMpOwogfQogCiBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVDaXJjbGVTaGFwZShjb25zdCBGbG9hdFBvaW50JiBjZW50
ZXIsIGZsb2F0IHJhZGl1cykKIHsKICAgICBBU1NFUlQocmFkaXVzID49IDApOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlY3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAt
IHJhZGl1cywgY2VudGVyLnkoKSAtIHJhZGl1cywgcmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRT
aXplKHJhZGl1cywgcmFkaXVzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjdGFuZ2xlU2hh
cGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIueSgpIC0gcmFkaXVzLCBy
YWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpKTsKIH0KIAogc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlRWxsaXBzZVNoYXBlKGNvbnN0IEZsb2F0
UG9pbnQmIGNlbnRlciwgY29uc3QgRmxvYXRTaXplJiByYWRpaSkKIHsKICAgICBBU1NFUlQocmFk
aWkud2lkdGgoKSA+PSAwICYmIHJhZGlpLmhlaWdodCgpID49IDApOwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlY3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGlp
LndpZHRoKCksIGNlbnRlci55KCkgLSByYWRpaS5oZWlnaHQoKSwgcmFkaWkud2lkdGgoKSoyLCBy
YWRpaS5oZWlnaHQoKSoyKSwgcmFkaWkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY3Rhbmds
ZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGlpLndpZHRoKCksIGNlbnRlci55KCkg
LSByYWRpaS5oZWlnaHQoKSwgcmFkaWkud2lkdGgoKSoyLCByYWRpaS5oZWlnaHQoKSoyKSwgcmFk
aWkpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVQb2x5Z29uU2hh
cGUoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMsIFdpbmRSdWxl
IGZpbGxSdWxlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvbHlnb25TaGFwZT4o
V1RGTW92ZSh2ZXJ0aWNlcyksIGZpbGxSdWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2x5
Z29uU2hhcGU+KFdURk1vdmUodmVydGljZXMpLCBmaWxsUnVsZSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgRmxvYXRSZWN0IHBoeXNpY2FsUmVjdFRvTG9naWNhbChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGZsb2F0IGxvZ2ljYWxCb3hIZWlnaHQsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQpAQCAtMTI4
LDcgKzEyOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNv
bnN0IEJhc2ljU2hhcGUmIGJhc2ljU2hhcGUsIGNvbnN0IExhCiAgICAgICAgIGNvbnN0IFZlY3Rv
cjxMZW5ndGg+JiB2YWx1ZXMgPSBwb2x5Z29uLnZhbHVlcygpOwogICAgICAgICBzaXplX3QgdmFs
dWVzU2l6ZSA9IHZhbHVlcy5zaXplKCk7CiAgICAgICAgIEFTU0VSVCghKHZhbHVlc1NpemUgJSAy
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2Vz
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBt
YWtlVW5pcXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVzU2l6ZTsgaSArPSAyKSB7CiAgICAgICAgICAg
ICBGbG9hdFBvaW50IHZlcnRleCgKICAgICAgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHZhbHVlcy5hdChpKSwgYm94V2lkdGgpLApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQg
dGhyZXNob2xkLCBjCiAKICAgICBJbnRSZWN0IGltYWdlUmVjdCA9IHNuYXBwZWRJbnRSZWN0KGlt
YWdlUik7CiAgICAgSW50UmVjdCBtYXJnaW5SZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7
Ci0gICAgYXV0byBpbnRlcnZhbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOworICAgIGF1dG8gaW50
ZXJ2YWxzID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWln
aHQoKSwgLW1hcmdpblJlY3QueSgpKTsKICAgICAvLyBGSVhNRSAoMTQ5NDIwKTogVGhpcyBidWZm
ZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4KICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShpbWFnZVJlY3Quc2l6ZSgpLCBVbmFjY2VsZXJhdGVkKTsKIApAQCAtMjE4LDcgKzIxOCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBp
bWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIHJh
c3RlclNoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZh
bHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CisgICAgYXV0byByYXN0ZXJTaGFwZSA9IG1ha2VVbmlx
dWU8UmFzdGVyU2hhcGU+KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwog
ICAgIHJhc3RlclNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgcmFzdGVy
U2hhcGUtPm1fbWFyZ2luID0gbWFyZ2luOwogICAgIHJldHVybiByYXN0ZXJTaGFwZTsKQEAgLTIz
MCw3ICsyMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVCb3hTaGFw
ZShjb25zdCBSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QsIFdyaQogCiAgICAgRmxvYXRSZWN0IHJl
Y3QoMCwgMCwgcm91bmRlZFJlY3QucmVjdCgpLndpZHRoKCksIHJvdW5kZWRSZWN0LnJlY3QoKS5o
ZWlnaHQoKSk7CiAgICAgRmxvYXRSb3VuZGVkUmVjdCBib3VuZHMocmVjdCwgcm91bmRlZFJlY3Qu
cmFkaWkoKSk7Ci0gICAgYXV0byBzaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJv
dW5kcyk7CisgICAgYXV0byBzaGFwZSA9IG1ha2VVbmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CiAg
ICAgc2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKICAgICBzaGFwZS0+bV9tYXJn
aW4gPSBtYXJnaW47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmgKaW5kZXggY2Q5NGY4OWMwMmIwYjhjMTM1MTk0NTdlNDRkMGRkYWY2
ZDg3ZjFmYS4uOTQ4NDMxNzE5NDdjMDIzMDlhYjdmNGZiMWI5N2MyNjM4ODJlZTM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgK
QEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBTaGFwZU91dHNpZGVJbmZvIGZpbmFsIHsKICAgICAg
ICAgSW5mb01hcCYgaW5mb01hcCA9IFNoYXBlT3V0c2lkZUluZm86OmluZm9NYXAoKTsKICAgICAg
ICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIGluZm8gPSBpbmZvTWFwLmdldCgma2V5KSkKICAgICAg
ICAgICAgIHJldHVybiAqaW5mbzsKLSAgICAgICAgYXV0byByZXN1bHQgPSBpbmZvTWFwLmFkZCgm
a2V5LCBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlT3V0c2lkZUluZm8+KGtleSkpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IGluZm9NYXAuYWRkKCZrZXksIG1ha2VVbmlxdWU8U2hhcGVPdXRzaWRlSW5m
bz4oa2V5KSk7CiAgICAgICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICB9
CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlSW5mbyhjb25zdCBSZW5kZXJCb3gmIGtleSkgeyBpbmZv
TWFwKCkucmVtb3ZlKCZrZXkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmNwcAppbmRleCAwYzk4ZjkxNjZmN2UxNTI5NzAzYmNkYjJjOGM4M2NjODBi
YjdiZjI0Li43NDRjOTBiOGZiM2Y1Mjc2OGE1MzhkMjEzNTgzNjJjYTYzNDgyN2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTM1OCw3
ICszNTgsNyBAQCBSZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZVBhdGg6OmJsZW5kKGNvbnN0IEJh
c2ljU2hhcGUmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykgYwogCiAgICAgYXV0byYgZnJvbVBhdGgg
PSBkb3duY2FzdDxCYXNpY1NoYXBlUGF0aD4oZnJvbSk7CiAKLSAgICBhdXRvIHJlc3VsdGluZ1Bh
dGhCeXRlcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CisgICAgYXV0
byByZXN1bHRpbmdQYXRoQnl0ZXMgPSBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOwog
ICAgIGJ1aWxkQW5pbWF0ZWRTVkdQYXRoQnl0ZVN0cmVhbSgqZnJvbVBhdGgubV9ieXRlU3RyZWFt
LCAqbV9ieXRlU3RyZWFtLCAqcmVzdWx0aW5nUGF0aEJ5dGVzLCBwcm9ncmVzcyk7CiAKICAgICBh
dXRvIHJlc3VsdCA9IEJhc2ljU2hhcGVQYXRoOjpjcmVhdGUoV1RGTW92ZShyZXN1bHRpbmdQYXRo
Qnl0ZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250
ZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgK
aW5kZXggZTdiYjA2MTY1MDJkOTlkNmRiNDM5MmJiNDY4YTlhYjQ2OWNlNDk0YS4uMmMxMmRkOWI0
MGRkNDBiM2MwYmY2NzQ5MzIyYWUyYjBmZDFlMDcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgSW1hZ2VD
b250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAgICAgUmVuZGVyUHRyPFJl
bmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNs
b25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SW1hZ2VDb250ZW50RGF0YT4obV9pbWFnZS5jb3B5UmVmKCkpOworICAg
ICAgICBhdXRvIGltYWdlID0gbWFrZVVuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihtX2ltYWdlLmNv
cHlSZWYoKSk7CiAgICAgICAgIGltYWdlLT5zZXRBbHRUZXh0KGFsdFRleHQoKSk7CiAgICAgICAg
IHJldHVybiBpbWFnZTsKICAgICB9CkBAIC0xMjYsNyArMTI2LDcgQEAgY2xhc3MgVGV4dENvbnRl
bnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKIAogcHJpdmF0ZToKICAgICBSZW5k
ZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvbnRlbnREYXRhPihtX3RleHQpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxU
ZXh0Q29udGVudERhdGE+KG1fdGV4dCk7IH0KIAogICAgIFN0cmluZyBtX3RleHQ7CiB9OwpAQCAt
MTYxLDcgKzE2MSw3IEBAIGNsYXNzIENvdW50ZXJDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBD
b250ZW50RGF0YSB7CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJl
bmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnREYXRh
PihzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyKCkpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihtYWtlVW5pcXVlPENvdW50ZXJD
b250ZW50Pihjb3VudGVyKCkpKTsKICAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q291bnRl
ckNvbnRlbnQ+IG1fY291bnRlcjsKQEAgLTE5MCw3ICsxOTAsNyBAQCBjbGFzcyBRdW90ZUNvbnRl
bnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKIAogcHJpdmF0ZToKICAgICBSZW5k
ZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUoKSk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29u
dGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVl
PFF1b3RlQ29udGVudERhdGE+KHF1b3RlKCkpOyB9CiAKICAgICBRdW90ZVR5cGUgbV9xdW90ZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmluZGV4
IGYzZDkxZGM4ZGJjOGQ5ZTQ2YzYwMWI5NTg0M2I5YTk1MmYzYjJkMWQuLjMwMDE0ZDA0ZjcwZmI5
MTgxNzQyODc2MDNmZGVhYjcyMzk1NjE0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuY3BwCkBAIC03Niw3ICs3Niw3IEBAIEZpbGxMYXllcjo6RmlsbExh
eWVyKEZpbGxMYXllclR5cGUgdHlwZSkKIH0KIAogRmlsbExheWVyOjpGaWxsTGF5ZXIoY29uc3Qg
RmlsbExheWVyJiBvKQotICAgIDogbV9uZXh0KG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxG
aWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyKQorICAgIDogbV9uZXh0KG8ubV9uZXh0ID8g
bWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyKQogICAgICwgbV9pbWFn
ZShvLm1faW1hZ2UpCiAgICAgLCBtX3hQb3NpdGlvbihvLm1feFBvc2l0aW9uKQogICAgICwgbV95
UG9zaXRpb24oby5tX3lQb3NpdGlvbikKQEAgLTExNyw3ICsxMTcsNyBAQCBGaWxsTGF5ZXI6On5G
aWxsTGF5ZXIoKQogCiBGaWxsTGF5ZXImIEZpbGxMYXllcjo6b3BlcmF0b3I9KGNvbnN0IEZpbGxM
YXllciYgbykKIHsKLSAgICBtX25leHQgPSBvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8Rmls
bExheWVyPigqby5tX25leHQpIDogbnVsbHB0cjsKKyAgICBtX25leHQgPSBvLm1fbmV4dCA/IG1h
a2VVbmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cjsKIAogICAgIG1faW1hZ2Ug
PSBvLm1faW1hZ2U7CiAgICAgbV94UG9zaXRpb24gPSBvLm1feFBvc2l0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMjQ5YmE0N2U1
ODQzZWNjNjJlNmZkNGYyNmFmMWNmNTM4YTE2M2Y5Yy4uZmI0M2MyMGU1Y2U5OWVjZTE5ZjQ1MmZk
OWY4Nzk2NGQ4MTRiYjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5
bGU6OmNsb25lKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclN0eWxlPihzdHlsZSwgQ2xv
bmUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclN0eWxlPihzdHlsZSwgQ2xvbmUpOwog
fQogCiBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIERpc3BsYXlUeXBlIGRpc3BsYXkp
CkBAIC00MDksNyArNDA5LDcgQEAgUmVuZGVyU3R5bGUqIFJlbmRlclN0eWxlOjphZGRDYWNoZWRQ
c2V1ZG9TdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBzZXUKICAgICBSZW5kZXJT
dHlsZSogcmVzdWx0ID0gcHNldWRvLmdldCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZFBzZXVkb1N0
eWxlcykKLSAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBz
ZXVkb1N0eWxlQ2FjaGU+KCk7CisgICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gbWFrZVVu
aXF1ZTxQc2V1ZG9TdHlsZUNhY2hlPigpOwogCiAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPmFw
cGVuZChXVEZNb3ZlKHBzZXVkbykpOwogCkBAIC0xMDU4LDcgKzEwNTgsNyBAQCB2b2lkIFJlbmRl
clN0eWxlOjphZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQog
ewogICAgIGF1dG8mIGRhdGEgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpOwogICAg
IGlmICghZGF0YS5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzKQotICAgICAgICBkYXRhLmN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3Ry
aW5nPj4oKTsKKyAgICAgICAgZGF0YS5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID0gbWFr
ZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAgICAgZGF0YS5jdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzLT5hZGQobmFtZSk7CiB9CiAKQEAgLTEzMDEsNyArMTMwMSw3IEBAIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldENvbnRlbnQoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UsIGJvb2wgYWRk
KQogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRDb250ZW50KHN0
ZDo6bWFrZV91bmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwoKSks
IGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdl
LnJlbGVhc2VOb25OdWxsKCkpLCBhZGQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250
ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkKQEAgLTEzMTAsMTMgKzEzMTAsMTMg
QEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9v
bCBhZGQpCiAgICAgaWYgKGFkZCAmJiBkYXRhLmNvbnRlbnQpIHsKICAgICAgICAgYXV0byYgbGFz
dCA9IGxhc3RDb250ZW50KCpkYXRhLmNvbnRlbnQpOwogICAgICAgICBpZiAoIWlzPFRleHRDb250
ZW50RGF0YT4obGFzdCkpCi0gICAgICAgICAgICBsYXN0LnNldE5leHQoc3RkOjptYWtlX3VuaXF1
ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykpOworICAgICAgICAgICAgbGFzdC5zZXROZXh0KG1h
a2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBhdXRvJiB0ZXh0Q29udGVudCA9IGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4obGFz
dCk7CiAgICAgICAgICAgICB0ZXh0Q29udGVudC5zZXRUZXh0KHRleHRDb250ZW50LnRleHQoKSAr
IHN0cmluZyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBkYXRhLmNvbnRlbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKTsKKyAgICAgICAgZGF0
YS5jb250ZW50ID0gbWFrZVVuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7CiAgICAgICAg
IGF1dG8mIGFsdFRleHQgPSBkYXRhLmFsdFRleHQ7CiAgICAgICAgIGlmICghYWx0VGV4dC5pc051
bGwoKSkKICAgICAgICAgICAgIGRhdGEuY29udGVudC0+c2V0QWx0VGV4dChhbHRUZXh0KTsKQEAg
LTEzMjcsMTIgKzEzMjcsMTIgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChzdGQ6OnVu
aXF1ZV9wdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIsIGJvb2wgYWRkKQogewogICAgIGlmICgh
Y291bnRlcikKICAgICAgICAgcmV0dXJuOwotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1
ZTxDb3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRlcikpLCBhZGQpOworICAgIHNldENv
bnRlbnQobWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRlcikpLCBh
ZGQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFF1b3RlVHlwZSBxdW90ZSwg
Ym9vbCBhZGQpCiB7Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVu
dERhdGE+KHF1b3RlKSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8UXVvdGVDb250
ZW50RGF0YT4ocXVvdGUpLCBhZGQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50
QWx0VGV4dChjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTE1NTEsNyArMTU1MSw3IEBAIENvdW50
ZXJEaXJlY3RpdmVNYXAmIFJlbmRlclN0eWxlOjphY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpCiB7
CiAgICAgYXV0byYgbWFwID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jb3VudGVy
RGlyZWN0aXZlczsKICAgICBpZiAoIW1hcCkKLSAgICAgICAgbWFwID0gc3RkOjptYWtlX3VuaXF1
ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOworICAgICAgICBtYXAgPSBtYWtlVW5pcXVlPENvdW50
ZXJEaXJlY3RpdmVNYXA+KCk7CiAgICAgcmV0dXJuICptYXA7CiB9CiAKQEAgLTE2NzEsMTQgKzE2
NzEsMTQgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YWRqdXN0VHJhbnNpdGlvbnMoKQogQW5pbWF0aW9u
TGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMoKQogewogICAgIGlmICghbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zKQotICAgICAgICBtX3JhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1h
dGlvbkxpc3Q+KCk7CisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5p
bWF0aW9ucyA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gKm1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmFuaW1hdGlvbnM7CiB9CiAKIEFuaW1hdGlvbkxpc3QmIFJlbmRl
clN0eWxlOjplbnN1cmVUcmFuc2l0aW9ucygpCiB7CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLnRyYW5zaXRpb25zKQotICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLnRyYW5zaXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0
PigpOworICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLnRyYW5zaXRpb25z
ID0gbWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJldHVybiAqbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dHJhbnNpdGlvbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAKaW5kZXggMjBiMmE4MTE0YjBj
OGU5ZWJkNDgyNzA3OWE5ODIwZjJlYzBkY2RjMi4uNmUzN2NmOGZiOGFiYTU1ZWMzMzBhOTYwMzNh
OGE5NTRjN2NiMDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlRGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCBTdHlsZVNoYWRv
d1NWR0RhdGE6OlN0eWxlU2hhZG93U1ZHRGF0YSgpCiAKIGlubGluZSBTdHlsZVNoYWRvd1NWR0Rh
dGE6OlN0eWxlU2hhZG93U1ZHRGF0YShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEmIG90aGVyKQog
ICAgIDogUmVmQ291bnRlZDxTdHlsZVNoYWRvd1NWR0RhdGE+KCkKLSAgICAsIHNoYWRvdyhvdGhl
ci5zaGFkb3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvdGhlci5zaGFkb3cpIDog
bnVsbHB0cikKKyAgICAsIHNoYWRvdyhvdGhlci5zaGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0Rh
dGE+KCpvdGhlci5zaGFkb3cpIDogbnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IDNkNjFjOTRjMDE2NjE2MDg1OGRh
YmQ4NDA5ZmM0MDg2NzBlNTAxY2EuLmMxN2VhZjg1OWIwYmZhYTdkYWJjMDA4ZDRlNzQwZmM2MzBh
NGI4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAgU2hhZG93RGF0YTo6U2hhZG93RGF0YShjb25zdCBTaGFkb3dE
YXRhJiBvKQogICAgICwgbV9jb2xvcihvLm1fY29sb3IpCiAgICAgLCBtX3N0eWxlKG8ubV9zdHls
ZSkKICAgICAsIG1faXNXZWJraXRCb3hTaGFkb3coby5tX2lzV2Via2l0Qm94U2hhZG93KQotICAg
ICwgbV9uZXh0KG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5tX25l
eHQpIDogbnVsbHB0cikKKyAgICAsIG1fbmV4dChvLm1fbmV4dCA/IG1ha2VVbmlxdWU8U2hhZG93
RGF0YT4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRl
eCBhZDJjYmQ5NTdlZWY4MjU2MGNmYjM1MmU5ZjUwYjM5ZTYzM2EyNmZmLi45NmRiYmEwMDdlNmE2
NGE3ZDY5N2EyOWEyMWQ2MjFhZDQ0NzU0YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCkBAIC0xNzIs
NyArMTcyLDcgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVy
aXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGEKICAgICAsIHZpc2l0ZWRMaW5rVGV4
dEVtcGhhc2lzQ29sb3Ioby52aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKQogICAgICwgY2Fy
ZXRDb2xvcihvLmNhcmV0Q29sb3IpCiAgICAgLCB2aXNpdGVkTGlua0NhcmV0Q29sb3Ioby52aXNp
dGVkTGlua0NhcmV0Q29sb3IpCi0gICAgLCB0ZXh0U2hhZG93KG8udGV4dFNoYWRvdyA/IHN0ZDo6
bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8udGV4dFNoYWRvdykgOiBudWxscHRyKQorICAgICwg
dGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRT
aGFkb3cpIDogbnVsbHB0cikKICAgICAsIGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKQogICAgICwg
aW5kZW50KG8uaW5kZW50KQogICAgICwgZWZmZWN0aXZlWm9vbShvLmVmZmVjdGl2ZVpvb20pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggNmZiYjJiN2IwYzNlYjAzZTg2OWExZWFhYzkxNjEx
MTljOWM2MWU5Yi4uYmRkMDE5MTVhYTI3OGRkNmE2NjQ4ZmY0YzNmYmRiM2ZjY2QxNDJhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtMTM5LDEzICsxMzksMTMgQEAgaW5saW5lIFN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5
bGVSYXJlTm9uSW4KICAgICAsIHNjcm9sbFNuYXBBcmVhKG8uc2Nyb2xsU25hcEFyZWEpCiAjZW5k
aWYKICAgICAsIGNvbnRlbnQoby5jb250ZW50ID8gby5jb250ZW50LT5jbG9uZSgpIDogbnVsbHB0
cikKLSAgICAsIGNvdW50ZXJEaXJlY3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBzdGQ6Om1h
a2VfdW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51
bGxwdHIpCisgICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVzID8gbWFr
ZVVuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigqby5jb3VudGVyRGlyZWN0aXZlcykgOiBudWxs
cHRyKQogICAgICwgYWx0VGV4dChvLmFsdFRleHQpCi0gICAgLCBib3hTaGFkb3coby5ib3hTaGFk
b3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBudWxscHRy
KQorICAgICwgYm94U2hhZG93KG8uYm94U2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigq
by5ib3hTaGFkb3cpIDogbnVsbHB0cikKICAgICAsIHdpbGxDaGFuZ2Uoby53aWxsQ2hhbmdlKQog
ICAgICwgYm94UmVmbGVjdChvLmJveFJlZmxlY3QpCi0gICAgLCBhbmltYXRpb25zKG8uYW5pbWF0
aW9ucyA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8uYW5pbWF0aW9ucykgOiBu
dWxscHRyKQotICAgICwgdHJhbnNpdGlvbnMoby50cmFuc2l0aW9ucyA/IHN0ZDo6bWFrZV91bmlx
dWU8QW5pbWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMpIDogbnVsbHB0cikKKyAgICAsIGFuaW1h
dGlvbnMoby5hbmltYXRpb25zID8gbWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5hbmltYXRp
b25zKSA6IG51bGxwdHIpCisgICAgLCB0cmFuc2l0aW9ucyhvLnRyYW5zaXRpb25zID8gbWFrZVVu
aXF1ZTxBbmltYXRpb25MaXN0Pigqby50cmFuc2l0aW9ucykgOiBudWxscHRyKQogICAgICwgbWFz
ayhvLm1hc2spCiAgICAgLCBtYXNrQm94SW1hZ2Uoby5tYXNrQm94SW1hZ2UpCiAgICAgLCBwYWdl
U2l6ZShvLnBhZ2VTaXplKQpAQCAtMTcwLDcgKzE3MCw3IEBAIGlubGluZSBTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5v
bkluCiAgICAgLCBqdXN0aWZ5SXRlbXMoby5qdXN0aWZ5SXRlbXMpCiAgICAgLCBqdXN0aWZ5U2Vs
ZihvLmp1c3RpZnlTZWxmKQogICAgICwgY3VzdG9tUHJvcGVydGllcyhvLmN1c3RvbVByb3BlcnRp
ZXMpCi0gICAgLCBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzKG8uY3VzdG9tUGFpbnRXYXRj
aGVkUHJvcGVydGllcyA/IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+Pigqby5jdXN0
b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzKSA6IG51bGxwdHIpCisgICAgLCBjdXN0b21QYWludFdh
dGNoZWRQcm9wZXJ0aWVzKG8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA/IG1ha2VVbmlx
dWU8SGFzaFNldDxTdHJpbmc+Pigqby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzKSA6IG51
bGxwdHIpCiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQogICAgICwgdG91Y2hBY3Rpb25zKG8u
dG91Y2hBY3Rpb25zKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDJjNmYzMTc4ZWViMjZjN2IyYzBkOTVhZTEwOGI3ZWZj
YzZlMjJjNGUuLjI0Y2RlNGJkNjFlNzE0YzIzMjNiOWU1Y2QyY2YyNjllMjg0NWY5YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC01
MCw3ICs1MCw3IEBAIFJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdNb2RlbE9i
amVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBk
YXRlKHRydWUpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCi0gICAgLCBtX2lt
YWdlUmVzb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAg
ICwgbV9pbWFnZVJlc291cmNlKG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsK
ICAgICBpbWFnZVJlc291cmNlKCkuaW5pdGlhbGl6ZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggM2MzMTA1NmQx
Y2FiMWZlYTEwNDkwNzgwZDAwYzhkY2QyYzc5ODA2OC4uYmExY2QwNTJkYWRhYTFjZTE4NDFjN2My
M2NhZjMzZmFhNGUzNDdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lLmNwcApAQCAtNDEsNyArNDEsNyBAQCBSZW5kZXJTVkdJbmxpbmU6OlJl
bmRlclNWR0lubGluZShTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gUmVuZGVyU1ZHSW5saW5lOjpj
cmVhdGVJbmxpbmVGbG93Qm94KCkKIHsKLSAgICBhdXRvIGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8
U1ZHSW5saW5lRmxvd0JveD4oKnRoaXMpOworICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdJ
bmxpbmVGbG93Qm94PigqdGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdo
dCgpOwogICAgIHJldHVybiBib3g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAppbmRleCA2N2U2Zjk4OTdkMjc3NDRmZDQx
MzNmZjI3NjcxNGM0ZTlkYTY2NWIwLi5kYmY0OTAzZjg5ZjRkYzkyZWRmZjMwNTM5MjU4NjlmMzJl
MmQ5OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lVGV4dC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlbmRlclNWR0lubGlu
ZVRleHQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVyU1ZHSW5saW5lVGV4
dDo6Y3JlYXRlVGV4dEJveCgpCiB7Ci0gICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0lubGluZVRleHRCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZHSW5s
aW5lVGV4dEJveD4oKnRoaXMpOwogICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQo
KTsKICAgICByZXR1cm4gYm94OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCAxYjNlZjI0Y2M5MmQy
MDUyYTM0YWFkMjA4ODIzMzBlMWExMjNiODRmLi4xYWQyNjQ5NjQ2NzA5YzIzZjBkYjljZmFlNGI4
NjNjMjQ3YjM2OTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxk
UHJpbWl0aXZlcyhTVkdGaQogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9IGZpbHRl
ci50YXJnZXRCb3VuZGluZ0JveCgpOwogCiAgICAgLy8gQWRkIGVmZmVjdHMgdG8gdGhlIGJ1aWxk
ZXIKLSAgICBhdXRvIGJ1aWxkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+
KFNvdXJjZUdyYXBoaWM6OmNyZWF0ZShmaWx0ZXIpKTsKKyAgICBhdXRvIGJ1aWxkZXIgPSBtYWtl
VW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KFNvdXJjZUdyYXBoaWM6OmNyZWF0ZShmaWx0ZXIpKTsK
ICAgICBidWlsZGVyLT5zZXRQcmltaXRpdmVVbml0cyhmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZl
VW5pdHMoKSk7CiAgICAgYnVpbGRlci0+c2V0VGFyZ2V0Qm91bmRpbmdCb3godGFyZ2V0Qm91bmRp
bmdCb3gpOwogICAgIApAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRl
CiAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWxyZWFkeSBidWlsdCwgb3Igd2UncmUgaW4gYSBj
eWNsZSwgb3Igd2UncmUgbWFya2VkIGZvciByZW1vdmFsLiBSZWdhcmRsZXNzLCBqdXN0IGRvIG5v
dGhpbmcgbW9yZSBub3cuCiAgICAgfQogCi0gICAgYXV0byBmaWx0ZXJEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWx0ZXJEYXRhPigpOworICAgIGF1dG8gZmlsdGVyRGF0YSA9IG1ha2VVbmlxdWU8
RmlsdGVyRGF0YT4oKTsKICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3ggPSByZW5kZXJl
ci5vYmplY3RCb3VuZGluZ0JveCgpOwogCiAgICAgZmlsdGVyRGF0YS0+Ym91bmRhcmllcyA9IFNW
R0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyRWxlbWVudD4oJmZpbHRl
ckVsZW1lbnQoKSwgZmlsdGVyRWxlbWVudCgpLmZpbHRlclVuaXRzKCksIHRhcmdldEJvdW5kaW5n
Qm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IGQ4YWQwODA0NjZjNWM2ZDllZWNmMDc4Y2Rm
ZjY0MjZjNjE0YTBjZTIuLjU1MmNlNWEzM2E4MDYyZTZiZWUwYjA0YWUzZjE2MGYwOTllYjUyZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgUmVuCiAKICAgICBhdXRvJiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmFkZCgm
cmVuZGVyZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWdyYWRpZW50RGF0
YSkKLSAgICAgICAgZ3JhZGllbnREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFkaWVudERhdGE+
KCk7CisgICAgICAgIGdyYWRpZW50RGF0YSA9IG1ha2VVbmlxdWU8R3JhZGllbnREYXRhPigpOwog
CiAgICAgYm9vbCBpc1BhaW50aW5nVGV4dCA9IHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJT
VkdSZXNvdXJjZU1vZGU6OkFwcGx5VG9UZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCBhYTU3
NjVlZDM3OWI2YWIxYjk0NDcyNmY1YjVlZTQ1NDM4M2M0NjRlLi40YzgxOWI5YmM1NWRjMmJmYTgy
ZmJiYzA5N2Y2Mzc1ODViNWIxMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtNjEsNyArNjEsNyBA
QCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogCiAgICAgYm9vbCBtaXNzaW5nTWFza2VyRGF0YSA9
ICFtX21hc2tlci5jb250YWlucygmcmVuZGVyZXIpOwogICAgIGlmIChtaXNzaW5nTWFza2VyRGF0
YSkKLSAgICAgICAgbV9tYXNrZXIuc2V0KCZyZW5kZXJlciwgc3RkOjptYWtlX3VuaXF1ZTxNYXNr
ZXJEYXRhPigpKTsKKyAgICAgICAgbV9tYXNrZXIuc2V0KCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxN
YXNrZXJEYXRhPigpKTsKIAogICAgIE1hc2tlckRhdGEqIG1hc2tlckRhdGEgPSBtX21hc2tlci5n
ZXQoJnJlbmRlcmVyKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29v
cmRpbmF0ZVN5c3RlbShyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKaW5kZXggMjllOGU3YzI0NzU2NTg3
OTJlZTRlZDRlZDA4MjBmYWVlYzliZGMwYy4uZGYwMTdiYTFiZmMwY2NmN2FlYTkzYTNiYjJmN2Zj
Nzg4ZjY5NmM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIHN0cnVjdCBNYXNrZXJEYXRhIHsKKyAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBtYXNrSW1hZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggY2MyY2Jm
Y2YwZmU5YTU5ZWNlMTVmNTJmMzU3MmRiNTlkMTYzMjBkNi4uMzFiYzVmMTkzMWJkYWU1MGFhYzY2
MTM1OWZjMGEyNmYxNzg1ODZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMTE3LDcgKzExNyw3
IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gQnVpbGQgcGF0dGVybi4KLSAgICBhdXRvIHBhdHRlcm5EYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXR0ZXJuRGF0YT4oKTsKKyAgICBhdXRvIHBhdHRlcm5EYXRhID0gbWFrZVVuaXF1ZTxQ
YXR0ZXJuRGF0YT4oKTsKICAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0
ZShjb3BpZWRJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB0cnVlLCB0cnVlKTsKIAogICAgIC8vIENv
bXB1dGUgcGF0dGVybiBzcGFjZSB0cmFuc2Zvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggMzRiMGFlNzViZGMwMDU2NTc2
ZDUxMzgwMTg1ZWZlNmJjNzJjNzA2ZS4uNmE2NzExOGZmMWIyNThiMzAzYzk1NjM4NTkzZjQ3NGVl
ODliYmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgUmVuZGVyU1ZHU2hhcGU6On5SZW5kZXJTVkdTaGFw
ZSgpID0gZGVmYXVsdDsKIAogdm9pZCBSZW5kZXJTVkdTaGFwZTo6dXBkYXRlU2hhcGVGcm9tRWxl
bWVudCgpCiB7Ci0gICAgbV9wYXRoID0gc3RkOjptYWtlX3VuaXF1ZTxQYXRoPihwYXRoRnJvbUdy
YXBoaWNzRWxlbWVudCgmZ3JhcGhpY3NFbGVtZW50KCkpKTsKKyAgICBtX3BhdGggPSBtYWtlVW5p
cXVlPFBhdGg+KHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KCZncmFwaGljc0VsZW1lbnQoKSkpOwog
ICAgIHByb2Nlc3NNYXJrZXJQb3NpdGlvbnMoKTsKIAogICAgIG1fZmlsbEJvdW5kaW5nQm94ID0g
Y2FsY3VsYXRlT2JqZWN0Qm91bmRpbmdCb3goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAppbmRleCBiZjc4NjQ0M2RkZDYwZDYyMWJjZDU3OWI4Nzcw
ZWRjZDkxZDI5ZmE5Li45YzczN2NhZmY4YjkyNzZjYzQxMDYwMmY1NzlhOWYzNjRlNWEwOGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCkBAIC01
MDgsNyArNTA4LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIoUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyKiBjbGlwcGVyKQogICAgIEFTU0VSVChjbGlwcGVyLT5yZXNvdXJjZVR5cGUo
KSA9PSBDbGlwcGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRl
ck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAg
ICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+Y2xpcHBlciA9IGNsaXBwZXI7CiAgICAgcmV0
dXJuIHRydWU7CkBAIC01MjksNyArNTI5LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldEZpbHRl
cihSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQogICAgIEFTU0VSVChmaWx0ZXItPnJl
c291cmNlVHlwZSgpID09IEZpbHRlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fY2xpcHBl
ckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOworICAgICAgICBtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0
YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmZpbHRlciA9IGZpbHRlcjsK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1MCw3ICs1NTAsNyBAQCBib29sIFNWR1Jlc291cmNlczo6
c2V0TWFya2VyU3RhcnQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlclN0YXJ0KQogICAg
IEFTU0VSVChtYXJrZXJTdGFydC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBl
KTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPE1hcmtlckRhdGE+KCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9IG1ha2VV
bmlxdWU8TWFya2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQgPSBt
YXJrZXJTdGFydDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU3MSw3ICs1NzEsNyBAQCBib29sIFNW
R1Jlc291cmNlczo6c2V0TWFya2VyTWlkKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJN
aWQpCiAgICAgQVNTRVJUKG1hcmtlck1pZC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3Vy
Y2VUeXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtlckRhdGE+KCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9
IG1ha2VVbmlxdWU8TWFya2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyTWlk
ID0gbWFya2VyTWlkOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTkyLDcgKzU5Miw3IEBAIGJvb2wg
U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJFbmQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtl
ckVuZCkKICAgICBBU1NFUlQobWFya2VyRW5kLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNv
dXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRh
ID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJF
bmQgPSBtYXJrZXJFbmQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MTMsNyArNjEzLDcgQEAgYm9v
bCBTVkdSZXNvdXJjZXM6OnNldE1hc2tlcihSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2Vy
KQogICAgIEFTU0VSVChtYXNrZXItPnJlc291cmNlVHlwZSgpID09IE1hc2tlclJlc291cmNlVHlw
ZSk7CiAKICAgICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xp
cHBlckZpbHRlck1hc2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNr
ZXJEYXRhPigpOworICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gbWFrZVVuaXF1
ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tl
ckRhdGEtPm1hc2tlciA9IG1hc2tlcjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYzNiw3ICs2MzYs
NyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0RmlsbChSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ciogZmlsbCkKICAgICAgICAgICAgfHwgZmlsbC0+cmVzb3VyY2VUeXBlKCkgPT0gUmFkaWFsR3Jh
ZGllbnRSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2ZpbGxTdHJva2VEYXRhKQotICAgICAg
ICBtX2ZpbGxTdHJva2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsK
KyAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IG1ha2VVbmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7
CiAKICAgICBtX2ZpbGxTdHJva2VEYXRhLT5maWxsID0gZmlsbDsKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTY1OSw3ICs2NTksNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0U3Ryb2tlKFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyKiBzdHJva2UpCiAgICAgICAgICAgIHx8IHN0cm9rZS0+cmVzb3Vy
Y2VUeXBlKCkgPT0gUmFkaWFsR3JhZGllbnRSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2Zp
bGxTdHJva2VEYXRhKQotICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKKyAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IG1ha2VVbmlx
dWU8RmlsbFN0cm9rZURhdGE+KCk7CiAKICAgICBtX2ZpbGxTdHJva2VEYXRhLT5zdHJva2UgPSBz
dHJva2U7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCmluZGV4IDE5MTk1YWExZGFiYzY2ZTRiMzU2NTk3
MmVjOTFmODk0NzdmNDAzOWIuLjFlZWI3OGY1N2IzZWJiMzFiNGNkZThlNTMwMmRkZTA5ZTA0OGMw
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2Vz
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2Vz
Q2FjaGUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJl
c291cmNlc0Zyb21SZW5kZXJlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QKICAgICBB
U1NFUlQoIW1fY2FjaGUuY29udGFpbnMoJnJlbmRlcmVyKSk7CiAKICAgICAvLyBCdWlsZCBhIGxp
c3Qgb2YgYWxsIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhc3NlZCBSZW5kZXJPYmpl
Y3QKLSAgICBhdXRvIG5ld1Jlc291cmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUmVzb3VyY2Vz
PigpOworICAgIGF1dG8gbmV3UmVzb3VyY2VzID0gbWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7
CiAgICAgaWYgKCFuZXdSZXNvdXJjZXMtPmJ1aWxkQ2FjaGVkUmVzb3VyY2VzKHJlbmRlcmVyLCBz
dHlsZSkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCmluZGV4IDMyNDEwMjU4NGMxZjEx
M2QwZWVkMzMyMTRhNjdmNTUzNGFiMGY1OWEuLjgxMGEwYjg4MGE4YWE0ZGFlMDJmYWI0NDZhOTQx
ZWRkOWM1YTcxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
VGV4dE1ldHJpY3NCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFNWR1Rl
eHRNZXRyaWNzQnVpbGRlcjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcihS
ZW5kZXJTVkdJbmxpbgogICAgIGlmIChtX2lzQ29tcGxleFRleHQpCiAgICAgICAgIG1fc2ltcGxl
V2lkdGhJdGVyYXRvciA9IG51bGxwdHI7CiAgICAgZWxzZQotICAgICAgICBtX3NpbXBsZVdpZHRo
SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRGb250LCBt
X3J1bik7CisgICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2lkdGhJ
dGVyYXRvcj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsKIH0KIAogc3RydWN0IE1lYXN1cmVUZXh0RGF0
YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVCdWlsZGVyLmNwcAppbmRleCBkMzdiZWU4Y2JjZTU1NjE1MTFiMjRlMzY0ZTFhZjY0YWFk
N2FhNzVkLi5lNmIyNzMyMGQ5MmZlODU2ZDgzNzQxMDhlZDk1NDJlMDkxZWVhZjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlci5jcHAKQEAgLTEyMiwyMiArMTIyLDIyIEBAIHN0YXRpYyB2b2lkIGdldElubGluZVJ1bihS
ZW5kZXJPYmplY3QqIHN0YXJ0LCBSZW5kZXJPYmplY3QqIGJvdW5kYXJ5LCBSZW5kZXJPYmplCiAK
IFJlbmRlclRyZWVCdWlsZGVyOjpSZW5kZXJUcmVlQnVpbGRlcihSZW5kZXJWaWV3JiB2aWV3KQog
ICAgIDogbV92aWV3KHZpZXcpCi0gICAgLCBtX2ZpcnN0TGV0dGVyQnVpbGRlcihzdGQ6Om1ha2Vf
dW5pcXVlPEZpcnN0TGV0dGVyPigqdGhpcykpCi0gICAgLCBtX2xpc3RCdWlsZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8TGlzdD4oKnRoaXMpKQotICAgICwgbV9tdWx0aUNvbHVtbkJ1aWxkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxNdWx0aUNvbHVtbj4oKnRoaXMpKQotICAgICwgbV90YWJsZUJ1aWxkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxUYWJsZT4oKnRoaXMpKQotICAgICwgbV9ydWJ5QnVpbGRlcihzdGQ6Om1h
a2VfdW5pcXVlPFJ1Ynk+KCp0aGlzKSkKLSAgICAsIG1fZm9ybUNvbnRyb2xzQnVpbGRlcihzdGQ6
Om1ha2VfdW5pcXVlPEZvcm1Db250cm9scz4oKnRoaXMpKQotICAgICwgbV9ibG9ja0J1aWxkZXIo
c3RkOjptYWtlX3VuaXF1ZTxCbG9jaz4oKnRoaXMpKQotICAgICwgbV9ibG9ja0Zsb3dCdWlsZGVy
KHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGbG93PigqdGhpcykpCi0gICAgLCBtX2lubGluZUJ1aWxk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmU+KCp0aGlzKSkKLSAgICAsIG1fc3ZnQnVpbGRlcihz
dGQ6Om1ha2VfdW5pcXVlPFNWRz4oKnRoaXMpKQorICAgICwgbV9maXJzdExldHRlckJ1aWxkZXIo
bWFrZVVuaXF1ZTxGaXJzdExldHRlcj4oKnRoaXMpKQorICAgICwgbV9saXN0QnVpbGRlcihtYWtl
VW5pcXVlPExpc3Q+KCp0aGlzKSkKKyAgICAsIG1fbXVsdGlDb2x1bW5CdWlsZGVyKG1ha2VVbmlx
dWU8TXVsdGlDb2x1bW4+KCp0aGlzKSkKKyAgICAsIG1fdGFibGVCdWlsZGVyKG1ha2VVbmlxdWU8
VGFibGU+KCp0aGlzKSkKKyAgICAsIG1fcnVieUJ1aWxkZXIobWFrZVVuaXF1ZTxSdWJ5PigqdGhp
cykpCisgICAgLCBtX2Zvcm1Db250cm9sc0J1aWxkZXIobWFrZVVuaXF1ZTxGb3JtQ29udHJvbHM+
KCp0aGlzKSkKKyAgICAsIG1fYmxvY2tCdWlsZGVyKG1ha2VVbmlxdWU8QmxvY2s+KCp0aGlzKSkK
KyAgICAsIG1fYmxvY2tGbG93QnVpbGRlcihtYWtlVW5pcXVlPEJsb2NrRmxvdz4oKnRoaXMpKQor
ICAgICwgbV9pbmxpbmVCdWlsZGVyKG1ha2VVbmlxdWU8SW5saW5lPigqdGhpcykpCisgICAgLCBt
X3N2Z0J1aWxkZXIobWFrZVVuaXF1ZTxTVkc+KCp0aGlzKSkKICNpZiBFTkFCTEUoTUFUSE1MKQot
ICAgICwgbV9tYXRoTUxCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8TWF0aE1MPigqdGhpcykpCisg
ICAgLCBtX21hdGhNTEJ1aWxkZXIobWFrZVVuaXF1ZTxNYXRoTUw+KCp0aGlzKSkKICNlbmRpZgot
ICAgICwgbV9jb250aW51YXRpb25CdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29udGludWF0aW9u
PigqdGhpcykpCisgICAgLCBtX2NvbnRpbnVhdGlvbkJ1aWxkZXIobWFrZVVuaXF1ZTxDb250aW51
YXRpb24+KCp0aGlzKSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxT
Y3JlZW5CdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8RnVsbFNjcmVlbj4oKnRoaXMpKQorICAgICwg
bV9mdWxsU2NyZWVuQnVpbGRlcihtYWtlVW5pcXVlPEZ1bGxTY3JlZW4+KCp0aGlzKSkKICNlbmRp
ZgogewogICAgIFJFTEVBU0VfQVNTRVJUKCFzX2N1cnJlbnQgfHwgJm1fdmlldyAhPSAmc19jdXJy
ZW50LT5tX3ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggZjQyYmNhM2IzNDY5ZTZkNTZlNmE0ZDdi
OTQ0NWUxNjdiMTExMWIyYi4uMjY4NTQ0YTFlNjViZmEzZDM4ZjQzZWI1YmJjZTRlZWVjYWFjNDZi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIFJlbmRlclRyZWVVcGRhdGVyOjpQ
YXJlbnQ6OlBhcmVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0
ZXMqCiAKIFJlbmRlclRyZWVVcGRhdGVyOjpSZW5kZXJUcmVlVXBkYXRlcihEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9nZW5lcmF0ZWRDb250
ZW50KHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJhdGVkQ29udGVudD4oKnRoaXMpKQorICAgICwgbV9n
ZW5lcmF0ZWRDb250ZW50KG1ha2VVbmlxdWU8R2VuZXJhdGVkQ29udGVudD4oKnRoaXMpKQogICAg
ICwgbV9idWlsZGVyKHJlbmRlclZpZXcoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2Vy
SW5wdXRCcmlkZ2UuaAppbmRleCA3ZmU3ZjY4NzMyMDQxMGVmMDQ4Mzg3ZDQ4MWY5MjdiMTJjMjM4
M2FjLi5iOWM3MmViODgwZTliYjg3NTk4ZjQxNDQwNzdkMDIzMDE2NjY1YjgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCkBAIC00OSw2ICs0OSw3IEBAIGVudW0gY2xh
c3MgSW5wdXRTb3VyY2UgewogfTsKIAogY2xhc3MgVXNlcklucHV0QnJpZGdlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVc2VySW5wdXRC
cmlkZ2UpOwogcHVibGljOgogICAgIFVzZXJJbnB1dEJyaWRnZShQYWdlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCmluZGV4IGRhZTExY2IyZjYyODk5MTg0NTNh
MTI4MDlhZTQzYjgxMjRiNmIxMmIuLjZkNjk1YTY2MGQwZTRlMDQ1YTI2ZGFiZTMzMzFlY2EyNmZh
ZDJlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCkBAIC03
OCw3ICs3OCw3IEBAIHN0YXRpYyBib29sIHNob3VsZERpcnR5QWxsU3R5bGUoY29uc3QgVmVjdG9y
PFN0eWxlU2hlZXRDb250ZW50cyo+JiBzaGVldHMpCiB9CiAKIEludmFsaWRhdG9yOjpJbnZhbGlk
YXRvcihjb25zdCBWZWN0b3I8U3R5bGVTaGVldENvbnRlbnRzKj4mIHNoZWV0cywgY29uc3QgTWVk
aWFRdWVyeUV2YWx1YXRvciYgbWVkaWFRdWVyeUV2YWx1YXRvcikKLSAgICA6IG1fb3duZWRSdWxl
U2V0KHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKSkKKyAgICA6IG1fb3duZWRSdWxlU2V0KG1h
a2VVbmlxdWU8UnVsZVNldD4oKSkKICAgICAsIG1fcnVsZVNldCgqbV9vd25lZFJ1bGVTZXQpCiAg
ICAgLCBtX2RpcnRpZXNBbGxTdHlsZShzaG91bGREaXJ0eUFsbFN0eWxlKHNoZWV0cykpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKaW5kZXggNGQ4MTQ4YjRlMzFkNzRk
NmEwYTUxNzU0ZGVlNWVhYjgwNzU5YWJhYS4uMDYyZDU5NjRkNzdlYzVkYjgzYjNmNDFhY2JhYTg3
ZWZjZTk4ZGQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVsYXRpb25zPiBjb21taXRSZWxhdGlvbnNU
b1JlbmRlclN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29ucwogCiAgICAgYXV0byBhcHBlbmRT
dHlsZVJlbGF0aW9uID0gWyZyZW1haW5pbmdSZWxhdGlvbnNdIChjb25zdCBSZWxhdGlvbiYgcmVs
YXRpb24pIHsKICAgICAgICAgaWYgKCFyZW1haW5pbmdSZWxhdGlvbnMpCi0gICAgICAgICAgICBy
ZW1haW5pbmdSZWxhdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbGF0aW9ucz4oKTsKKyAgICAg
ICAgICAgIHJlbWFpbmluZ1JlbGF0aW9ucyA9IG1ha2VVbmlxdWU8UmVsYXRpb25zPigpOwogICAg
ICAgICByZW1haW5pbmdSZWxhdGlvbnMtPmFwcGVuZChyZWxhdGlvbik7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAppbmRleCA5ZjBkMWFkNzQ5MGJmZWFiMjQwN2NlN2Jj
ODhiMDk1MTE2ZDBiMjIyLi5kY2I2NWJjMDljMzQ3NzliNjNhMjkzMjRlMjRkMzcyYmZjNmEyM2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBTdHls
ZVJlc29sdmVyJiBTY29wZTo6cmVzb2x2ZXIoKQogICAgIGlmICghbV9yZXNvbHZlcikgewogICAg
ICAgICBTZXRGb3JTY29wZTxib29sPiBpc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1faXNVcGRh
dGluZ1N0eWxlUmVzb2x2ZXIsIHRydWUgfTsKIAotICAgICAgICBtX3Jlc29sdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdHlsZVJlc29sdmVyPihtX2RvY3VtZW50KTsKKyAgICAgICAgbV9yZXNvbHZl
ciA9IG1ha2VVbmlxdWU8U3R5bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7CiAKICAgICAgICAgaWYg
KCFtX3NoYWRvd1Jvb3QpIHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCku
YnVpbGRTdGFydGVkKCk7CkBAIC01NjMsNyArNTYzLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0Pj4gU2NvcGU6OmFjdGl2ZVN0eWxlU2hlZXRzRm9ySW5zcGVjdG9yKCkKIGJv
b2wgU2NvcGU6OmFjdGl2ZVN0eWxlU2hlZXRzQ29udGFpbnMoY29uc3QgQ1NTU3R5bGVTaGVldCog
c2hlZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlz
dEZvckZhc3RMb29rdXApIHsKLSAgICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExp
c3RGb3JGYXN0TG9va3VwID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IENTU1N0eWxl
U2hlZXQqPj4oKTsKKyAgICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JG
YXN0TG9va3VwID0gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IENTU1N0eWxlU2hlZXQqPj4oKTsK
ICAgICAgICAgZm9yIChhdXRvJiBhY3RpdmVTdHlsZVNoZWV0IDogbV9hY3RpdmVTdHlsZVNoZWV0
cykKICAgICAgICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExv
b2t1cC0+YWRkKGFjdGl2ZVN0eWxlU2hlZXQuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCA4NDZhMjMxYWQyYjE4YjVkN2YyOTQ5
MDE2ZDA5ZjIyM2RkNjllODhiLi5hMDBmNGZlMGY0Y2NiNTJkZDgzMWE5NGUyNmE1ODY0ZTVjMWI3
OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC01
NDgsNyArNTQ4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNv
bHZlKCkKIAogICAgIG1fZGlkU2VlUGVuZGluZ1N0eWxlc2hlZXQgPSBtX2RvY3VtZW50LnN0eWxl
U2NvcGUoKS5oYXNQZW5kaW5nU2hlZXRzQmVmb3JlQm9keSgpOwogCi0gICAgbV91cGRhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZT4obV9kb2N1bWVudCk7CisgICAgbV91cGRhdGUgPSBtYWtl
VW5pcXVlPFVwZGF0ZT4obV9kb2N1bWVudCk7CiAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChhZG9w
dFJlZigqbmV3IFNjb3BlKG1fZG9jdW1lbnQpKSk7CiAgICAgbV9wYXJlbnRTdGFjay5hcHBlbmQo
UGFyZW50KG1fZG9jdW1lbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRF
eHRlbnNpb25zLmNwcAppbmRleCBiYzUxNDM0YjBiMmI4ZTBiZjc3ZTU3YTRhNzZlNGQ0YmNlZWU5
OTY1Li4yNWYzODYzZDA3OTU0YWM4ZDZhNjNlNjg2NGExZjA3NmIwZDUxYWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1l
bnRFeHRlbnNpb25zKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1l
bnQpCi0gICAgLCBtX3Jlc291cmNlc0NhY2hlKHN0ZDo6bWFrZV91bmlxdWU8U1ZHUmVzb3VyY2Vz
Q2FjaGU+KCkpCisgICAgLCBtX3Jlc291cmNlc0NhY2hlKG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2Vz
Q2FjaGU+KCkpCiAgICAgLCBtX2FyZUFuaW1hdGlvbnNQYXVzZWQoIWRvY3VtZW50LnBhZ2UoKSB8
fCAhZG9jdW1lbnQucGFnZSgpLT5pc1Zpc2libGUoKSkKIHsKIH0KQEAgLTE0Niw3ICsxNDYsNyBA
QCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0
b21TdHJpbmcmIGlkLCBFbGVtZW50JiBlbAogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdS
ZXNvdXJjZXMuYWRkKGlkLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0g
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdF
bGVtZW50cz4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
UGVuZGluZ0VsZW1lbnRzPigpOwogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZCgmZWxl
bWVudCk7CiAKICAgICBlbGVtZW50LnNldEhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTI3OSw3
ICsyNzksNyBAQCBIYXNoU2V0PFNWR0VsZW1lbnQqPiogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpz
ZXRPZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJnZXQoU1ZHRQogdm9pZCBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldChTVkdFbGVtZW50JiByZWZlcmVuY2lu
Z0VsZW1lbnQsIFNWR0VsZW1lbnQmIHJlZmVyZW5jZWRFbGVtZW50KQogewogICAgIGF1dG8gcmVz
dWx0ID0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmVuc3VyZSgmcmVmZXJlbmNlZEVsZW1lbnQsIFsm
cmVmZXJlbmNpbmdFbGVtZW50XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhh
c2hTZXQ8U1ZHRWxlbWVudCo+PihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZHRWxlbWVudCo+IHsg
JnJlZmVyZW5jaW5nRWxlbWVudCB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SGFzaFNl
dDxTVkdFbGVtZW50Kj4+KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVm
ZXJlbmNpbmdFbGVtZW50IH0pOwogICAgIH0pOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkp
CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZCgmcmVmZXJlbmNpbmdFbGVtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCBhODA5NmRkYWRhODFlYWQ2YTdhMWVh
MzI0Y2Q4NTA2N2Y1YzBiMjhiLi5lNGRlM2I3NDlmMGEwMDM5YmM1YzRjZmNkMDhlMTkzOTZjZDY1
NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgc3Rh
dGljIE5FVkVSX0lOTElORSBIYXNoTWFwPEF0b21TdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4g
Y3JlYXRlQXR0cmlidXRlTmFtZVQKIFNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU3R5bGVkRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlU1ZHRWxlbWVudCkKICAgICAsIFNWR0xhbmdTcGFj
ZSh0aGlzKQotICAgICwgbV9wcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeShzdGQ6Om1ha2VfdW5pcXVl
PFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5PigpKQorICAgICwgbV9wcm9wZXJ0eUFuaW1hdG9y
RmFjdG9yeShtYWtlVW5pcXVlPFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5PigpKQogewogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgW10gewpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6d2lsbFJlY2Fs
Y1N0eWxlKFN0eWxlOjpDaGFuZ2UgY2hhbmdlKQogU1ZHRWxlbWVudFJhcmVEYXRhJiBTVkdFbGVt
ZW50OjplbnN1cmVTVkdSYXJlRGF0YSgpCiB7CiAgICAgaWYgKCFtX3N2Z1JhcmVEYXRhKQotICAg
ICAgICBtX3N2Z1JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdFbGVtZW50UmFyZURhdGE+
KCk7CisgICAgICAgIG1fc3ZnUmFyZURhdGEgPSBtYWtlVW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0
YT4oKTsKICAgICByZXR1cm4gKm1fc3ZnUmFyZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKaW5kZXggYTc1ODkwZjMxODA0NjhkMTUyNGJlZTg1NDM1
OWQwMzU2ZWI1MjIyZC4uODBlYzdmYzg2MjkyYjYzYmJiYTg1MWUxMWUxMDZmYTE1MmY5MTQ3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKQEAgLTExOSw3ICsx
MTksNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2Fs
VHJhbnNmb3JtKCkgY29uc3QKIEFmZmluZVRyYW5zZm9ybSogU1ZHR3JhcGhpY3NFbGVtZW50Ojpz
dXBwbGVtZW50YWxUcmFuc2Zvcm0oKQogewogICAgIGlmICghbV9zdXBwbGVtZW50YWxUcmFuc2Zv
cm0pCi0gICAgICAgIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxB
ZmZpbmVUcmFuc2Zvcm0+KCk7CisgICAgICAgIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtID0gbWFr
ZVVuaXF1ZTxBZmZpbmVUcmFuc2Zvcm0+KCk7CiAgICAgcmV0dXJuIG1fc3VwcGxlbWVudGFsVHJh
bnNmb3JtLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEJ5dGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCmlu
ZGV4IDZmMGFjYWNmMTllZTg1MGRiNGU2OTEwZDNlODNkMjY0OTRkNjdlYjAuLjQzNGQ5MWViM2Rm
OGFkODc5ZjgzOWE0ODk2Njg2NzgwYjQwOWYyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
Qnl0ZVN0cmVhbS5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtIHsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gY29weSgpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4o
KnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKnRo
aXMpOwogICAgIH0KIAogICAgIERhdGFJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5iZWdpbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NNSUxUaW1lQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01J
TFRpbWVDb250YWluZXIuY3BwCmluZGV4IGUwNDIzY2U5ODE1ZmEwZjI1NTYzYTNiNTQzMTQwODZh
YzM1NmZmNDQuLjNlYjU3YWQyZjIxZGZhNjRiOWIxMTgwMWY0MjcyODM2MDJiNzViN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU01JTFRpbWVDb250YWluZXI6OnNjaGVkdWxlKFNWR1NN
SUxFbGVtZW50KiBhbmltYXRpb24sIFNWR0VsZW1lbnQqIHRhcmdldCwKICAgICBFbGVtZW50QXR0
cmlidXRlUGFpciBrZXkodGFyZ2V0LCBhdHRyaWJ1dGVOYW1lKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QW5pbWF0aW9uc1ZlY3Rvcj4mIHNjaGVkdWxlZCA9IG1fc2NoZWR1bGVkQW5pbWF0aW9ucy5h
ZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzY2hlZHVsZWQpCi0g
ICAgICAgIHNjaGVkdWxlZCA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uc1ZlY3Rvcj4oKTsK
KyAgICAgICAgc2NoZWR1bGVkID0gbWFrZVVuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigpOwogICAg
IEFTU0VSVCghc2NoZWR1bGVkLT5jb250YWlucyhhbmltYXRpb24pKTsKICAgICBzY2hlZHVsZWQt
PmFwcGVuZChhbmltYXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAppbmRleCA0MGVlOTkxNTU4NWVjYTlhMTAwNDRiOWUzMzBjODc1MjgwYzI1MWU3Li4zYjI3
ZDA2MDhiZjkwZmRhYTBlNWIxNTYwMGVhNGFkNWZlMTM0ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBFbmNvZGVkRGF0YVN0
YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKICAgICBp
ZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBw
YWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKTsKLSAgICAgICAgbV9jaHJvbWVDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKKyAgICAg
ICAgbV9jaHJvbWVDbGllbnQgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlz
KTsKICAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGll
bnQuZ2V0KCk7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGlu
ZyBpdHNlbGYsIHdlIG1pZ2h0IGxlYWsgdGhlIHdvcmxkLgpAQCAtNDY2LDcgKzQ2Niw3IEBAIEVu
Y29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICAgICAgLy8gVGhpcyB3aWxsIGJlY29tZSBhbiBpc3N1ZSB3aGVuIFNWR0ltYWdlIHdp
bGwgYmUgYWJsZSB0byBsb2FkIG90aGVyCiAgICAgICAgIC8vIFNWR0ltYWdlIG9iamVjdHMsIGJ1
dCB3ZSdyZSBzYWZlIG5vdywgYmVjYXVzZSBTVkdJbWFnZSBjYW4gb25seSBiZQogICAgICAgICAv
LyBsb2FkZWQgYnkgYSB0b3AtbGV2ZWwgZG9jdW1lbnQuCi0gICAgICAgIG1fcGFnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgICAgICBt
X3BhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAg
ICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9w
YWdlLT5zZXR0aW5ncygpLnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAppbmRl
eCBkOTcwMzAyYWRmODY1ODU1MDljNjUwOGQ1MDQ5NTJhMjU1MzIzNjJiLi5jNzdhZTA4YmFjNjVj
M2MyY2ZjODk3NGZhMzNlNzY0NjBjZTk3ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBAIC0zMyw2ICszMyw3
IEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKIGNsYXNz
IFNWR0ZpbHRlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHR5cGVkZWYgSGFzaFNldDxGaWx0ZXJFZmZlY3QqPiBGaWx0ZXJFZmZlY3RTZXQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVj
b3JhdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkRGVjb3JhdGVkUHJvcGVydHkuaAppbmRleCBlNWVmYWFlYTcxMTFiYzZjOTU3ZDk3MmQ3NDU0
OGRlOTJkOGExMzNlLi5jZWJhYTM2M2JmNTI3YmJiMzhlNTY3ZDNlM2Q0MmJmODQzMTAyYTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNWR0FuaW1h
dGVkRGVjb3JhdGVkUHJvcGVydHkgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5
ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eT4KICAgICBzdGF0aWMgUmVmPEFuaW1hdGVk
UHJvcGVydHk+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQs
IHN0ZDo6bWFrZV91bmlxdWU8RGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGUsIFByb3Bl
cnR5VHlwZT4+KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9w
ZXJ0eShjb250ZXh0RWxlbWVudCwgbWFrZVVuaXF1ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0
aW9uVHlwZSwgUHJvcGVydHlUeXBlPj4oKSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFByb3BlcnR5VHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVk
RGVjb3JhdGVkUHJvcGVydHk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCmluZGV4IGFhNjFiZmY0MzQ0
ODhjYTY3NGIwNDg4OWVjNzQ1OGEzMzYwMjBiOGQuLmUwMjM0ZjM1OTEyOTI5NTc5Y2YzZTJiMTY4
MDk0MjUyOGYwN2FhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oCkBAIC0zMyw2ICszMyw3IEBA
IGNsYXNzIFNWR0VsZW1lbnQ7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHks
IHR5cGVuYW1lIEFuaW1hdGlvbkZ1bmN0aW9uPgogY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG9yIDogcHVibGljIFNWR0F0dHJpYnV0ZUFuaW1hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBBbmltYXRvckFuaW1hdGVkUHJvcGVydHkg
PSBBbmltYXRlZFByb3BlcnR5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKaW5kZXgg
Mjg4NzQxYjEyOTA1Y2I4NTE0MzA1NDA5MGM0ZTJjOTEzOWIzNWJmMy4uZDA3MzdhY2JhMzMxZmUx
MjM0N2I4MzRmZjdhYTMwMTAwYWQxNTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwu
aApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaQogcHVibGljOgogICAg
IHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQW5n
bGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0EKIAog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWRCb29sZWFuPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvcjwKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+JiBhbmltYXRlZCwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I8RW51bVR5cGU+PihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEVu
dW1lcmF0aW9uQW5pbWF0b3I8RW51bVR5cGU+PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQQog
CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmlt
YXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIFNWR0FuaW1h
dGVkTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yPFNWR0FuCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiYgYW5pbWF0ZWQsIEFuaW1hdGlv
bk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRl
ZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1v
ZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1Myw3ICsxNTMsNyBAQCBjbGFzcyBTVkdBbmlt
YXRlZExlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5
QW5pbWF0b3I8UwogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+JiBhbmltYXRlZCwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNzIsNyArMTcyLDcgQEAg
Y2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVy
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1i
ZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0x
ODksNyArMTg5LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R0FuaW1hdGVkTnVtYmVyTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVt
YmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjA2LDcgKzIwNiw3IEBAIGNsYXNzIFNWR0Fu
aW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0PiYgYW5p
bWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFBhdGhT
ZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpA
QCAtMjI0LDcgKzIyNCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IgZmlu
YWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWCiBwdWJsaWM6CiAgICAg
c3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJl
ZjxTVkdBbmltYXRlZFBvaW50TGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVk
UG9pbnRMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBTVkdB
bmltYXRlZE9yaWVudFR5cGVBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3I8UwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiYgYW5p
bWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkT3JpZW50
VHlwZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTI2Miw3ICsyNjIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9Bbmlt
YXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QQogcHVibGljOgogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
b0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI4
MSw3ICsyODEsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFJlY3RBbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbQogCiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZFJlY3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRS
ZWN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
Mjk4LDcgKzI5OCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3IgZmluYWwgOiBw
dWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiBwdWJsaWM6CiAgICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdBbmltYXRlZFN0cmluZz4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkU3RyaW5n
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQog
CiBwcml2YXRlOgpAQCAtMzM4LDcgKzMzOCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvCiBw
dWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJB
bmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVBhaXJBbmltYXRvci5oCmluZGV4IGM3MjNhY2ZmMjYwNjAxYTFlNTBkMzI2OTVhZTNjZThj
OTI2MDI1MTUuLmM4OTA1MDE2OWQzYzFhNDMzYWI3YTI3YmExYWVjZWEzMmRiYjVmODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQ
YWlyQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5UGFpckFuaW1hdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgU1ZHRWxl
bWVudDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMSwgdHlw
ZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMj4KIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVy
dHlQYWlyQW5pbWF0b3IgOiBwdWJsaWMgU1ZHQXR0cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIEFuaW1hdGVkUHJvcGVydHkx
ID0gdHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMTo6QW5pbWF0b3JBbmltYXRlZFBy
b3BlcnR5OwogICAgIHVzaW5nIEFuaW1hdGVkUHJvcGVydHkyID0gdHlwZW5hbWUgQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9yMjo6QW5pbWF0b3JBbmltYXRlZFByb3BlcnR5OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmlt
YXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKaW5kZXggNGVkYTM0YzliMTg4OGZmZDZkM2Q2NjMyY2Yw
Y2Y2ZDMzYTZmYTllMS4uMzk3ZmYwOTE1OTQwMGQzM2MwNTJiMTFkODI4Y2I4ZTM3YjNjODA1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVBhaXJBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCkBAIC00MCw3ICs0MCw3IEBA
IGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdB
bmltYXRlZFByb3BlcnR5UGFpckFuaW1hCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xl
PiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiYgYW5pbWF0ZWQyLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRBbmds
ZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTExMyw3ICsxMTMsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJQ
YWlyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQog
cHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5p
bWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlclBh
aXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1Niw3ICsxNTYs
NyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlclBhaXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRO
dW1iZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkMiwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1i
ZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0
dHJpYnV0ZUFuaW1hdG9yLmgKaW5kZXggNjRhNjViMTg2MmZmYjk2OTYwM2M3MTU2MDdiNTQ0ZjU1
NmUwMDgzYS4uMDIyZWRlZGE4MjFiNTMzNTViM2ZkZDM5NThmMjQzNjgwMTlhYWQ3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRv
ci5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3MgQ2FsY01vZGUgOiB1aW50OF90IHsKIH07
CiAKIGNsYXNzIFNWR0F0dHJpYnV0ZUFuaW1hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBTVkdBdHRyaWJ1dGVBbmltYXRvcihjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKQogICAgICAgICA6IG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3Jh
dGVkRW51bWVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29y
YXRlZEVudW1lcmF0aW9uLmgKaW5kZXggMjY0YzM2YjY5MDc0Y2NmM2UyZTI5ZDI2NzcyMWNmNTM3
NDU3MDMxMS4uYTM1ZTI1MGE5YjE1MWY5ZTg5N2Y4NWY2MzY3YzM4N2RiYjNjYTU1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0RlY29yYXRlZEVudW1lcmF0aW9u
IDogcHVibGljIFNWR0RlY29yYXRlZFByaW1pdGl2ZTxEZWNvcmF0aW9uVHlwZSwgRW51CiAgICAg
c3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEVudW1UeXBlJiB2YWx1ZSkKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxEZWNvcmF0aW9uVHlwZT46OnZhbHVlLCAi
RGVjb3JhdGlvblR5cGUgZm9ybSBlbnVtIHNob3VsZCBiZSBpbnRlZ3JhbC4iKTsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24+KHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24+KHZhbHVl
KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdEZWNvcmF0ZWRQcmltaXRpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0RlY29yYXRlZFByaW1pdGl2ZS5oCmluZGV4IGUyYTUyNDMxMjRmMDczZjg1YWQ4
ZGQ2YTk2ZGY0YTY1MzUwYjY3YzguLjliNjYxMjdiYzU5ZTJmNTFmMDEwMTkyMTZmYTJkNTYyMTUz
Y2E3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29y
YXRlZFByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZFByaW1pdGl2ZS5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb3JhdGlvblR5cGUsIHR5cGVuYW1lIFByb3BlcnR5VHlw
ZT4KIGNsYXNzIFNWR0RlY29yYXRlZFByaW1pdGl2ZSA6IHB1YmxpYyBTVkdEZWNvcmF0ZWRQcm9w
ZXJ0eTxEZWNvcmF0aW9uVHlwZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHVzaW5nIEJhc2UgPSBTVkdEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZT47CiAKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1p
dGl2ZVByb3BlcnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaAppbmRleCA0MTIxNzIyMGJkZmNmZWZmNjdjMTYw
OTEzYWQxNGQ2Yjk5YmExNDJjLi42OGIyZTBiMTEzN2FkZThkMzdmODBlMGUyOThiNWRlMjRkMDFh
ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRp
dmVQcm9wZXJ0eUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFNW
R1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IgOiBwdWJsaWMgU1ZHUHJvcGVydHlBbmltYXRvcjxB
bmltYXRpb25GdW5jdGlvCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBX
VEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdQcmltaXRpdmVQcm9w
ZXJ0eUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaApp
bmRleCBhZDUwZDQyMzYyOTY5NDJkMWRjODcxOGEyZGE4ZTZhZGY4ZDFiY2NiLi41ZTMwMThmNWE0
MDJhOWM3ZjEyOWQ0MWQ0MTlhYzVlOTQ5ZmVlMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKQEAg
LTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUHJvcGVydHlB
bmltYXRvckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5p
bWF0b3JJbXBsLmgKaW5kZXggMTE4ODg2YzRmOGJiNzIzNmE0NDZmZmFkMDM4NjlmZjBiMGRjZGU5
NS4uZmQzZGM5NjBmZmE3ZDMxMjkwMTM3ZDQ1MmNkZTFhMjg3OWE3ZWRiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlB
bmltYXRvckltcGwuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3I8U1ZHTGVuZ3RoLCBTVkdBbgog
cHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBp
c0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVu
Z3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVy
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKICAgICB9CiAKICAgICB2b2lk
IHN0YXJ0KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9y
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxp
c3RBbmltYXRvckltcGwuaAppbmRleCA1ZWU4YWMzZDBmNGUxMmM2MmE1ZWZjMDBmZjUzYjU5MGU0
MDBmMzY4Li5hZTk0ZTI5ZWQ0Yjg2MTNiOTljZDk3NDg2ZWQwYjA2MjgyNmMwMmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFu
aW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVl
UHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHTGVu
Z3RoTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0
b3I8U1ZHTGVuZ3QKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0xlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9w
ZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
LCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhM
aXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVy
KTsKICAgICB9CiAKICAgICB2b2lkIHN0YXJ0KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92
ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRl
eCBjMTEzMWQyNWIzODhiYmE4MzY2NTNkMjk3MDhlNmE1YmJlNGJkZmM0Li4yNDM3ODliYjlkMjc5
YTZlODUzZTA4NjQ0YjY0YmVlODUxZTVlZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTIzMSw2ICsyMzEsNyBAQCB2b2lkIEludGVybmFsU2V0
dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzJiBzZXR0aW5ncykKIH0KIAogY2xhc3Mg
SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIgOiBwdWJsaWMgU3VwcGxlbWVudDxQYWdlPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxT
ZXR0aW5nc1dyYXBwZXIoUGFnZSogcGFnZSkKICAgICAgICAgOiBtX2ludGVybmFsU2V0dGluZ3Mo
SW50ZXJuYWxTZXR0aW5nczo6Y3JlYXRlKHBhZ2UpKSB7IH0KQEAgLTI1Miw3ICsyNTMsNyBAQCBj
b25zdCBjaGFyKiBJbnRlcm5hbFNldHRpbmdzOjpzdXBwbGVtZW50TmFtZSgpCiBJbnRlcm5hbFNl
dHRpbmdzKiBJbnRlcm5hbFNldHRpbmdzOjpmcm9tKFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKCFT
dXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKQotICAgICAgICBT
dXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSwgc3RkOjpt
YWtlX3VuaXF1ZTxJbnRlcm5hbFNldHRpbmdzV3JhcHBlcj4ocGFnZSkpOworICAgICAgICBTdXBw
bGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1
ZTxJbnRlcm5hbFNldHRpbmdzV3JhcHBlcj4ocGFnZSkpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxJbnRlcm5hbFNldHRpbmdzV3JhcHBlcio+KFN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwg
c3VwcGxlbWVudE5hbWUoKSkpLT5pbnRlcm5hbFNldHRpbmdzKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlMTc4YjQ5Njg1ODc1NTFiZjA3MDRkODMwMjA1NjJk
ZDEyZGY0ZWJiLi42MmU3MzQ5YTFjYTE2NjJkMDYyYzYwNzkzODkyZmM3MGZmNjA1ODEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgY2xhc3Mg
SW5zcGVjdG9yU3R1YkZyb250ZW5kIGZpbmFsIDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwsIHB1YmxpYwogfTsKIAogSW5zcGVjdG9yU3R1YkZyb250ZW5kOjpJbnNwZWN0b3JT
dHViRnJvbnRlbmQoUGFnZSYgaW5zcGVjdGVkUGFnZSwgUmVmUHRyPERPTVdpbmRvdz4mJiBmcm9u
dGVuZFdpbmRvdykKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmluc3BlY3Rl
ZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+
cGFnZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNl
dHRpbmdzPigpKQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVk
UGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5w
YWdlKCksIG1ha2VVbmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+
KCkpCiAgICAgLCBtX2Zyb250ZW5kV2luZG93KGZyb250ZW5kV2luZG93LmNvcHlSZWYoKSkKIHsK
ICAgICBBU1NFUlRfQVJHKGZyb250ZW5kV2luZG93LCBmcm9udGVuZFdpbmRvdyk7CkBAIC01Njcs
NyArNTY3LDcgQEAgSW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUt
PnBhZ2UoKSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBhdXRvIG1vY2tQYXlt
ZW50Q29vcmRpbmF0b3IgPSBuZXcgTW9ja1BheW1lbnRDb29yZGluYXRvcigqZnJhbWUtPnBhZ2Uo
KSk7Ci0gICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1lbnRDb29yZGluYXRvcihzdGQ6Om1h
a2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50Q29vcmRpbmF0b3IpKTsK
KyAgICAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKG1ha2VVbmlxdWU8
UGF5bWVudENvb3JkaW5hdG9yPigqbW9ja1BheW1lbnRDb29yZGluYXRvcikpOwogICAgIH0KICNl
bmRpZgogfQpAQCAtMTQxNyw3ICsxNDE3LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZU1vY2tT
cGVlY2hTeW50aGVzaXplcigpCiAgICAgaWYgKCFzeW50aGVzaXMpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHN5bnRoZXNpcy0+c2V0UGxhdGZvcm1TeW50aGVzaXplcihzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPihzeW50aGVzaXMpKTsKKyAgICBzeW50aGVz
aXMtPnNldFBsYXRmb3JtU3ludGhlc2l6ZXIobWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jaz4oc3ludGhlc2lzKSk7CiB9CiAKICNlbmRpZgpAQCAtMjQ4OSw3ICsyNDg5LDcg
QEAgUmVmUHRyPFdpbmRvd1Byb3h5PiBJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250
ZW5kKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGF1dG8qIGluc3BlY3RlZFBhZ2UgPSBjb250ZXh0
RG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIGF1dG8qIHdpbmRvdyA9IGluc3BlY3Rl
ZFBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgIGF1dG8gZnJv
bnRlbmRXaW5kb3dQcm94eSA9IHdpbmRvdy0+b3Blbigqd2luZG93LCAqd2luZG93LCB1cmwsICIi
LCAiIikucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVjdGVkUGFnZSwgZG93
bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3coKSkpOworICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmQgPSBtYWtlVW5pcXVlPEluc3BlY3RvclN0dWJGcm9udGVuZD4oKmlu
c3BlY3RlZFBhZ2UsIGRvd25jYXN0PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5kb3dQcm94eS0+d2lu
ZG93KCkpKTsKICAgICByZXR1cm4gZnJvbnRlbmRXaW5kb3dQcm94eTsKIH0KIApAQCAtMzAwOSw3
ICszMDA5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRWaWV3RXhwb3NlZFJl
Y3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGYKIAogdm9pZCBJbnRlcm5hbHM6OnNl
dFByaW50aW5nKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAgICBwcmludENvbnRleHRGb3JU
ZXN0aW5nKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50Q29udGV4dD4oZnJhbWUoKSk7CisgICAg
cHJpbnRDb250ZXh0Rm9yVGVzdGluZygpID0gbWFrZVVuaXF1ZTxQcmludENvbnRleHQ+KGZyYW1l
KCkpOwogICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKS0+YmVnaW4od2lkdGgsIGhlaWdodCk7
CiB9CiAKQEAgLTM0NDgsNyArMzQ0OCw3IEBAIHZvaWQgSW50ZXJuYWxzOjplbmFibGVBdXRvU2l6
ZU1vZGUoYm9vbCBlbmFibGVkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKIHZvaWQgSW50ZXJu
YWxzOjppbml0aWFsaXplTW9ja0NETSgpCiB7Ci0gICAgTGVnYWN5Q0RNOjpyZWdpc3RlckNETUZh
Y3RvcnkoW10gKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExlZ2Fj
eU1vY2tDRE0+KGNkbSk7IH0sCisgICAgTGVnYWN5Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkoW10g
KExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeU1vY2tDRE0+KGNkbSk7
IH0sCiAgICAgICAgIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzS2V5U3lzdGVtLCBMZWdhY3lNb2Nr
Q0RNOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKTsKIH0KIApAQCAtNDI0MSw3ICs0MjQx
LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKGludCB0ZXN0TnVtYmVyKQogICAg
IGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbWljcm90YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVl
dWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVudCwgdGVzdE51bWJlcl0o
KSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWlj
cm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICpkb2N1bWVudCwgW2Rv
Y3VtZW50LCB0ZXN0TnVtYmVyXSgpIHsKICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtYWtlU3RyaW5nKCJN
aWNyb1Rhc2sgIyIsIHRlc3ROdW1iZXIsICIgaGFzIHJ1bi4iKSk7CiAgICAgfSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCmluZGV4IDY0Mjg3ZDIzOWFmNTczZTky
MDNkMjU4NDMxYjI3M2M3Yjg3NDkwMDYuLjYwMjcyZDM0OTdmNGI4NjVjZGIwMzcwZmU0MWQzZDZm
YmRlOGI3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NE
TS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApAQCAt
MzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2NrQ0RNU2Vzc2lv
biA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBNb2NrQ0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7
CiAgICAgdmlydHVhbCB+TW9ja0NETVNlc3Npb24oKSA9IGRlZmF1bHQ7CkBAIC03Myw3ICs3NCw3
IEBAIGJvb2wgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5TW9ja0NE
TTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NETVNlc3Npb24+KGNsaWVudCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TW9ja0NETVNlc3Npb24+KGNsaWVudCk7CiB9CiAKIHN0YXRpYyBVaW50
OEFycmF5KiBpbml0RGF0YVByZWZpeCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0xlZ2FjeU1vY2tDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NE
TS5oCmluZGV4IDI0YjliODAwOGM0ZjUxOWI0YTY2NmVjNmQxNTI1YWM2MmVjMWMzMGEuLmI5M2Fl
YjkzZmY2MzI5ZTUxNTQ3YzEzZmY3NmE2OTJlZTZhNzE4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTGVnYWN5TW9ja0NETS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIExlZ2FjeUNETTsKIAogY2xhc3MgTGVnYWN5TW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2
YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBMZWdhY3lNb2NrQ0RNKExlZ2FjeUNETSogY2RtKQogICAgICAgICA6IG1fY2Rt
KGNkbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNTY3
OTZlZTkwMGJiZjNiNmNjMDVjZjZhMjI5NmVmZDQzYjllZjdiNi4uY2U1ZDhmN2Q2YmRmMzhiNTky
MjA5MzAyYTZlNmQ3MWIzNjk2NjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRT
dXBwb3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykKIAogc3RkOjp1bmlxdWVf
cHRyPENETVByaXZhdGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0cigqdGhp
cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7
CiB9CiAKIE1vY2tDRE06Ok1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gZmFjdG9yeSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAzMzk2Y2QwMmFkMDJk
ZDE0ZTkyZjE1NzllMjc1MTZlNmJjM2Y0Mjk4Li4zOTkwOWI5MzAzYTk0YzkzNjhlYWEwZjYyNWY0
YjY3ZTUyNTA1OWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBA
IC0xMDAsNiArMTAwLDcgQEAgY2xhc3MgTW9ja0NETUZhY3RvcnkgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNb2NrQ0RNRmFjdG9yeT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjwKIH07CiAKIGNsYXNzIE1v
Y2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tDRE0+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNb2NrQ0RNKFdl
YWtQdHI8TW9ja0NETUZhY3Rvcnk+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmNwcAppbmRleCA1MTE4MWRhZTcyZTEzZTJiYmQxNTNlODExYzE0MzY0ZDFj
ZDhhMTg3Li43NzhhOTE4YTZiOTA3NTVjYjg2ZDNhYWE3NGY3OWIzZTYxOGQ0Yzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBib29sIE1vY2tDb250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRy
PE1vY2tDb250ZW50RmlsdGVyPiBNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxNb2NrQ29udGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBNb2NrQ29udGVudEZp
bHRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IGQzYWM1ZDg3ZDE5ZTJhODUzNjFjMTE1
NzJjZjMxMWYwYzgzYjI0NWIuLmQ0MGRlZDFkYTExOThjYWEzNDU5ZDY3N2UxZmU4NGY1YmZiOTQ2
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIE1vY2tHYW1lcGFkUHJvdmlkZXI6OnNldE1vY2tHYW1l
cGFkRGV0YWlscyh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiBnYQogICAgIGlmIChtX21v
Y2tHYW1lcGFkVmVjdG9yW2luZGV4XSkKICAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRl
eF0tPnVwZGF0ZURldGFpbHMoZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKICAg
ICBlbHNlCi0gICAgICAgIG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdID0gc3RkOjptYWtlX3Vu
aXF1ZTxNb2NrR2FtZXBhZD4oaW5kZXgsIGdhbWVwYWRJRCwgYXhpc0NvdW50LCBidXR0b25Db3Vu
dCk7CisgICAgICAgIG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdID0gbWFrZVVuaXF1ZTxNb2Nr
R2FtZXBhZD4oaW5kZXgsIGdhbWVwYWRJRCwgYXhpc0NvdW50LCBidXR0b25Db3VudCk7CiB9CiAK
IGJvb2wgTW9ja0dhbWVwYWRQcm92aWRlcjo6Y29ubmVjdE1vY2tHYW1lcGFkKHVuc2lnbmVkIGlu
ZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAK
aW5kZXggZGJlOTA3M2Q2YWRlYmZjNTAxNTljYzJlZGJiMjI4M2NjZDE3YmE4NS4uOGYxNjQ3YzFm
MzIyNTE4MTZjN2NmMDg5NjE4MmFlMzQyMzVjNTE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgV29y
a2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlw
ZSwgTWVzc2FnZUxldmVsCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50
cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3Nh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1
bWVudHMpLCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBt
ZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKICAgICBtX3dvcmtlckdsb2Jh
bFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAppbmRleCBmNDNiZDJhN2E2MDU5
MzcyN2FkMGE2YTkxZGVjZDZlYmVjNzIyNjg4Li42OTAzYmU1ZWMyNWZiOTFlZmY3Nzc2ZTQ0NzZh
ZDRlYTJiY2U3MzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2
ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1
ZS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgV29ya2VyRXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVl
dWUoKQogCiBjbGFzcyBXb3JrZXJFdmVudFF1ZXVlOjpFdmVudERpc3BhdGNoZXIKIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBFdmVudERpc3BhdGNoZXIoUmVm
UHRyPEV2ZW50PiYmIGV2ZW50LCBXb3JrZXJFdmVudFF1ZXVlJiBldmVudFF1ZXVlKQogICAgICAg
ICA6IG1fZXZlbnQoV1RGTW92ZShldmVudCkpCkBAIC04NCw3ICs4NSw3IEBAIGJvb2wgV29ya2Vy
RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgYXV0byogZXZlbnRQdHIgPSBldmVudC5wdHIoKTsKLSAgICBhdXRv
IGV2ZW50RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnREaXNwYXRjaGVyPihXVEZN
b3ZlKGV2ZW50KSwgKnRoaXMpOworICAgIGF1dG8gZXZlbnREaXNwYXRjaGVyID0gbWFrZVVuaXF1
ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUoZXZlbnQpLCAqdGhpcyk7CiAgICAgbV9ldmVudERp
c3BhdGNoZXJNYXAuYWRkKGV2ZW50UHRyLCBldmVudERpc3BhdGNoZXIuZ2V0KCkpOwogICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC5wb3N0VGFzayhbZXZlbnREaXNwYXRjaGVyID0gV1RGTW92
ZShldmVudERpc3BhdGNoZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
ZXZlbnREaXNwYXRjaGVyLT5kaXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckV2ZW50UXVldWUuaAppbmRleCA2MTE1ZWY0YTEzNjUyYTZlYWQxMGFmMzdjZmI0OTQyODIwYzNj
YjJiLi5kODk3M2Q1YmNhZTE3Yjk1NTAwNDRjN2U4MDE2MDViOTlkNTQ5YWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBX
b3JrZXJFdmVudFF1ZXVlIGZpbmFsIDogcHVibGljIEV2ZW50UXVldWUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdvcmtlckV2ZW50UXVldWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfldvcmtlckV2ZW50UXVldWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXgg
N2JhNmVkYjUyMDhmMjJjM2Y4ZjE2ZGUyOWQ4MjViNzcxZjZjM2U5ZS4uYjE3ZDY2MzYzYWMzNTgw
ZTdhMzQ0MDA4MWEyZjdjNjNhMDczODc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTYyLDkgKzYyLDkgQEAgV29ya2VyR2xvYmFsU2NvcGU6
Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYg
b3JpZ2kKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV91c2VyQWdlbnQo
dXNlckFnZW50KQogICAgICwgbV90aHJlYWQodGhyZWFkKQotICAgICwgbV9zY3JpcHQoc3RkOjpt
YWtlX3VuaXF1ZTxXb3JrZXJTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKLSAgICAsIG1faW5zcGVj
dG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+
KCp0aGlzKSkKLSAgICAsIG1fbWljcm90YXNrUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxNaWNyb3Rh
c2tRdWV1ZT4obV9zY3JpcHQtPnZtKCkpKQorICAgICwgbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlciht
YWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fbWlj
cm90YXNrUXVldWUobWFrZVVuaXF1ZTxNaWNyb3Rhc2tRdWV1ZT4obV9zY3JpcHQtPnZtKCkpKQog
ICAgICwgbV9pc09ubGluZShpc09ubGluZSkKICAgICAsIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5KHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeSkKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKQEAgLTg2LDcgKzg2LDcgQEAgV29y
a2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgb3JpZ2kKICAgICAgICAgb3JpZ2luLT5ncmFudFN0b3JhZ2VBY2Nlc3NG
cm9tRmlsZVVSTHNRdWlyaygpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbikpKTsKLSAgICBzZXRDb250ZW50
U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVS
TCB7IG1fdXJsIH0sICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VV
bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogfQog
CiBXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKCkKQEAgLTM2Miw5ICszNjIs
OSBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAg
ICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4o
c291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5y
ZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6
OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVx
dWVzdElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9n
LCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0
YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBhNzVj
MDE1NmM1OWUzOGRkOTk5ZDZjZWMxZGRlZWRlMjNiZTE4N2IzLi40ZTlmNTE5YWVmZWRkMjVmODgz
ZjYzYWNhMGE0Nzg5ZmYwMjdlNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNTUsNyArNTUsNyBAQCBXb3JrZXJHbG9iYWxTY29w
ZVByb3h5JiBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpjcmVhdGUoV29ya2VyJiB3b3JrZXIpCiAK
IFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXImIHdvcmtl
ck9iamVjdCkKICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCh3b3JrZXJPYmplY3Quc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9pbnNwZWN0b3JQcm94eShzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmplY3QuaWRlbnRpZmllcigpKSkK
KyAgICAsIG1faW5zcGVjdG9yUHJveHkobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4o
d29ya2VyT2JqZWN0LmlkZW50aWZpZXIoKSkpCiAgICAgLCBtX3dvcmtlck9iamVjdCgmd29ya2Vy
T2JqZWN0KQogewogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpICYmIGlzTWFpblRocmVhZCgpKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgV29ya2Vy
TWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0CiAgICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKICAgICAg
ICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFdURk1vdmUodGFzaykpKTsKKyAgICAg
ICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFz
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGJjZDk0ZTZh
YzA0MDNhY2Q2YTU0YmFjNDFmYWI0MWU1YmY1NTI3ZGEuLmJmYWM5NTkyZGZhYTc5MjEwMDY1YjM0
NTliZDIyMTYxOTU3ODQ4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmNwcApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBNb2RlUHJlZGljYXRlIHsKIH07CiAKIFdvcmtl
clJ1bkxvb3A6OldvcmtlclJ1bkxvb3AoKQotICAgIDogbV9zaGFyZWRUaW1lcihzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlclNoYXJlZFRpbWVyPigpKQorICAgIDogbV9zaGFyZWRUaW1lcihtYWtlVW5p
cXVlPFdvcmtlclNoYXJlZFRpbWVyPigpKQogewogfQogCkBAIC0yNTAsMTIgKzI1MCwxMiBAQCB2
b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sm
JiB0YXNrKQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFw
cGVuZEFuZEtpbGwoc3RkOjptYWtlX3VuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBkZWZhdWx0
TW9kZSgpKSk7CisgICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChtYWtlVW5pcXVlPFRh
c2s+KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5M
b29wOjpwb3N0VGFza0Zvck1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ss
IGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CisgICAgbV9tZXNzYWdlUXVl
dWUuYXBwZW5kKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgbW9kZSkpOwogfQogCiB2
b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3REZWJ1Z2dlclRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayYmIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKaW5kZXggMTk5MTJmMDI3NWZlYTE5NDgwNTQyYTA3MDk3NWRjYjBjN2QyODAzNS4u
MjI4ZjNkMTdmZjAwMjJlNjJlNjM2NDUzMmQ1NTZiOTUwN2EwMThmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBA
IHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0CiAKICAgICBBU1NFUlQoc2NyaXB0UmVxdWVzdC5odHRw
TWV0aG9kKCkgPT0gIkdFVCIpOwogCi0gICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXNvdXJjZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOworICAgIGF1dG8gcmVx
dWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihXVEZNb3ZlKHNjcmlwdFJlcXVlc3Qp
KTsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ3LDcgKzE0Nyw3
IEBAIGNvbnN0IFVSTCYgV29ya2VyU2NyaXB0TG9hZGVyOjpyZXNwb25zZVVSTCgpIGNvbnN0CiAK
IHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFdvcmtlclNjcmlwdExvYWRlcjo6Y3Jl
YXRlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaW5pdGlhdG9ySWRlbnRpZmllcikKIHsK
LSAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4obV91
cmwpOworICAgIGF1dG8gcmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihtX3Vy
bCk7CiAgICAgcmVxdWVzdC0+c2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICByZXF1ZXN0LT5z
ZXRJbml0aWF0b3JJZGVudGlmaWVyKGluaXRpYXRvcklkZW50aWZpZXIpOwogICAgIHJldHVybiBy
ZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDFmNzU2
MTg2YTIwZjAxNjllNDc4NDM5NTFiZWUzNjg3ZTAwMjRmYmEuLjNjMzg1OGJkYTliNDRiNTdmYWRi
MzllZmEyZTBhMGYzYTMwNDExOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25z
dCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbgogICAgICwg
bV93b3JrZXJEZWJ1Z2dlclByb3h5KHdvcmtlckRlYnVnZ2VyUHJveHkpCiAgICAgLCBtX3dvcmtl
clJlcG9ydGluZ1Byb3h5KHdvcmtlclJlcG9ydGluZ1Byb3h5KQogICAgICwgbV9ydW50aW1lRmxh
Z3MocnVudGltZUZsYWdzKQotICAgICwgbV9zdGFydHVwRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtlclRocmVhZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJB
Z2VudCwgaXNPbmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIHRvcE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKKyAgICAsIG1fc3RhcnR1
cERhdGEobWFrZVVuaXF1ZTxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0VVJMLCBuYW1l
LCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCBzb3VyY2VDb2RlLCBzdGFydE1vZGUs
IGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCB0b3BPcmlnaW4sIHRpbWVPcmlnaW4sIHNlc3Npb25J
RCkpCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgLCBtX2lkYkNvbm5lY3Rpb25Q
cm94eShjb25uZWN0aW9uUHJveHkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBiMmQy
NjE1YTEyNjNkMTYyNjYxODIwMDQ2NDhmOTBlZGE2OTIwNmI1Li41OWM3MWM0ZDE0NzYyN2NmZDlk
MzFhNDVlYWJjY2NkYWUxMDNlNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC04OCw3ICs4OCw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZGVyZWZFdmVudFRhcmdldCgpCiBhdXRv
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlYWR5KCkgLT4gUmVhZHlQcm9taXNlJgogewogICAg
IGlmICghbV9yZWFkeVByb21pc2UpIHsKLSAgICAgICAgbV9yZWFkeVByb21pc2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlYWR5UHJvbWlzZT4oKTsKKyAgICAgICAgbV9yZWFkeVByb21pc2UgPSBtYWtl
VW5pcXVlPFJlYWR5UHJvbWlzZT4oKTsKIAogICAgICAgICBpZiAobV9pc1N0b3BwZWQgfHwgIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKQogICAgICAgICAg
ICAgcmV0dXJuICptX3JlYWR5UHJvbWlzZTsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIHJlbGF0aXZl
U2NyaXB0VVJMLCBjbwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpS
ZWdpc3RlcjsKICAgICBqb2JEYXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCi0g
ICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywg
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxlSm9iKG1h
a2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1v
dmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVS
ZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlCiAKICAg
ICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBV
bnJlZ2lzdGVyaW5nIHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6ICUiIFBSSXU2NCwgam9iRGF0YS5p
ZGVudGlmaWVyKCkuam9iSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHNjaGVkdWxlSm9i
KHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZp
Y2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7
CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNv
bnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJUeXBlLCBSZWZQ
dHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29w
ZVVSTCwgY29uc3QgVVJMJgogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJlbW92ZVJlZ2lzdHJhdGlvbjogVXBkYXRpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIg
UFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwog
Ci0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhp
cywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxlSm9i
KG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdU
Rk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hl
ZHVsZUpvYihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpvYj4mJiBqb2IpCkBAIC0yNjks
NyArMjY5LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24o
Y29uc3QgU3RyaW5nJiBjbGllbnRVUkwsIFJlZjxEZWZlcnIKICAgICB9CiAKICAgICB1aW50NjRf
dCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRpbmdQcm9taXNlSWRlbnRp
ZmllcjsKLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5n
UHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwor
ICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZN
b3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CiAgICAgbV9wZW5kaW5n
UHJvbWlzZXMuYWRkKHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgV1RGTW92ZShwZW5kaW5nUHJv
bWlzZSkpOwogCiAgICAgYXV0byBjb250ZXh0SWRlbnRpZmllciA9IHRoaXMtPmNvbnRleHRJZGVu
dGlmaWVyKCk7CkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjpnZXRSZWdpc3RyYXRpb25zKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICB9
CiAKICAgICB1aW50NjRfdCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRp
bmdQcm9taXNlSWRlbnRpZmllcjsKLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcykpOworICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBtYWtlVW5pcXVlPFBlbmRp
bmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7
CiAgICAgbV9wZW5kaW5nUHJvbWlzZXMuYWRkKHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgV1RG
TW92ZShwZW5kaW5nUHJvbWlzZSkpOwogCiAgICAgYXV0byBjb250ZXh0SWRlbnRpZmllciA9IHRo
aXMtPmNvbnRleHRJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCA3YWM5Yzk4MzgzYjA0
YjZlYjg5Yzk5ZjIyMDg4NWU3NjczOTc2YzNmLi4zYmQ2YjliMDZlNTczNzY2NWI1OGY5NjllMjkz
ZDBmZWQ2MmMzY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBjbGFzcyBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEsIHB1YmxpYyBBYwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgUGVuZGluZ1Byb21pc2Ugewor
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdQ
cm9taXNlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVmPFBlbmRpbmdBY3Rpdml0
eTxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPj4mJiBwZW5kaW5nQWN0aXZpdHkpCiAgICAgICAgICAg
ICA6IHByb21pc2UoV1RGTW92ZShwcm9taXNlKSkKICAgICAgICAgICAgICwgcGVuZGluZ0FjdGl2
aXR5KFdURk1vdmUocGVuZGluZ0FjdGl2aXR5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXgg
ZWRiYzhmOTFlZTQzNDYyYTUwNDllODhjMWNlZjVlZmE3NjJjOThmZi4uY2I1YzIyMWZjOTQ4OGQ3
YzAwNzI5ODNhMTU3ODk1ZGNhOGM2Y2VjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTZWNvbgogCiAgICAgc2VydmljZVdvcmtl
ci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOwogCi0gICAgbV9wZW5kaW5nU2Vydmlj
ZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlx
dWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIGlkZW50aWZpZXIsIHRp
bWVvdXQpKTsKKyAgICBtX3BlbmRpbmdTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5h
ZGQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0
PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91dCkpOwogCiAgICAgYXV0byYgdGhyZWFkID0gc2Vy
dmljZVdvcmtlci0+dGhyZWFkKCk7CiAgICAgdGhyZWFkLnN0b3AoW3RoaXMsIGlkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXIgPSBXVEZNb3ZlKHNlcnZpY2VXb3JrZXIpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggYzYxNzM2MTNjYWNiNTVkNjkwNThiZTJjN2Uy
YTVmYmQ4NTI5Yzc3Ni4uOWU3MjhjM2E3YWZhNDZjOTQ5Y2RjYmUwZDZmZWIwNGE5NTMxY2NmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xMTQsNyArMTE0LDcg
QEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFn
ZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eGllcygpLmFkZCh0aGlzKTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIG1f
cmVtb3RlRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckRlYnVnZ2Fi
bGU+KCp0aGlzLCBkYXRhKTsKKyAgICBtX3JlbW90ZURlYnVnZ2FibGUgPSBtYWtlVW5pcXVlPFNl
cnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigqdGhpcywgZGF0YSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dh
YmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKHRydWUpOwogICAgIG1fcmVtb3RlRGVidWdn
YWJsZS0+aW5pdCgpOwogI2VuZGlmCkBAIC0xNjgsNyArMTY4LDcgQEAgUmVmPENhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdl
Q29ubmVjdGkKIAogc3RkOjp1bmlxdWVfcHRyPEZldGNoTG9hZGVyPiBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmIGNsaWVudCwgY29u
c3QgVVJMJiBibG9iVVJMKQogewotICAgIGF1dG8gbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
ZXRjaExvYWRlcj4oY2xpZW50LCBudWxscHRyKTsKKyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlx
dWU8RmV0Y2hMb2FkZXI+KGNsaWVudCwgbnVsbHB0cik7CiAgICAgbG9hZGVyLT5zdGFydExvYWRp
bmdCbG9iVVJMKG1fZG9jdW1lbnQsIGJsb2JVUkwpOwogICAgIGlmICghbG9hZGVyLT5pc1N0YXJ0
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3Bw
CmluZGV4IDFjNzgzMTJjODU0ODJmOTg2OWE1ZmMwYzZkMmNjNmM2ZmRmYzEwYTAuLmU0Yjg0MzE2
ODRmN2Q4N2QyYmZkZTZkZDQyN2YzMzkwMzAzNGJhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6b3Bl
blNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgZnVsbEZpbGVuYW1lKQogCiAgICAgU1FMaXRl
RmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VEaXJlY3RvcnlFeGlzdHMobV9kYXRhYmFzZURpcmVj
dG9yeSk7CiAKLSAgICBtX2RhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVEYXRhYmFz
ZT4oKTsKKyAgICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKICAg
ICBpZiAoIW1fZGF0YWJhc2UtPm9wZW4oZnVsbEZpbGVuYW1lKSkgewogICAgICAgICBlcnJvck1l
c3NhZ2UgPSAiRmFpbGVkIHRvIG9wZW4gcmVnaXN0cmF0aW9uIGRhdGFiYXNlIjsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcAppbmRleCBmZTVjYzg1OWU2NWE2ZTMyYTc4YjUyODk3NWExMzJlNzRiZjE3ODdl
Li45MzI2YTNiYWM2NTlhMjQ2NzA1ZTkyMGE4ODg0NmRmNGQwZTk2OWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTQ0
LDcgKzE0NCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2
ZSBiZWVuIGFibGUgdG8gbWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUg
dGhlIGltcG9ydCB3YXMgc3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9yZWdpc3Ry
YXRpb25zLmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogCi0gICAgYXV0byByZWdp
c3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywg
ZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwg
ZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvIHJl
Z2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRh
LnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRh
LnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOwogICAgIHJlZ2lzdHJhdGlv
bi0+c2V0TGFzdFVwZGF0ZVRpbWUoZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUpOwog
ICAgIGF1dG8gcmVnaXN0cmF0aW9uUHRyID0gcmVnaXN0cmF0aW9uLmdldCgpOwogICAgIGFkZFJl
Z2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIFNX
U2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwg
U3RyaW5nJiYgcmVnaXN0cmF0aW9uCiB7CiAgICAgQVNTRVJUKCFyZWdpc3RyYXRpb25EYXRhYmFz
ZURpcmVjdG9yeS5pc0VtcHR5KCkgfHwgbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAgICAg
aWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBtX3JlZ2lzdHJhdGlvblN0
b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RyYXRpb25TdG9yZT4oKnRoaXMsIFdURk1vdmUo
cmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICAgICAgbV9yZWdpc3RyYXRpb25T
dG9yZSA9IG1ha2VVbmlxdWU8UmVnaXN0cmF0aW9uU3RvcmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lz
dHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5KSk7CiAgICAgZWxzZQogICAgICAgICByZWdpc3RyYXRp
b25TdG9yZUltcG9ydENvbXBsZXRlKCk7CiAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFNXU2Vy
dmVyOjpzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCiAgICAgLy8g
SWYgaXQgaXMsIHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBqb2IuCiAKICAgICBhdXRvJiBqb2JR
dWV1ZSA9ICptX2pvYlF1ZXVlcy5lbnN1cmUoam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgW3Ro
aXMsICZqb2JEYXRhXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVy
Sm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0
aW9uS2V5KCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGpvYlF1ZXVlLmVucXVl
dWVKb2Ioam9iRGF0YSk7CkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4s
IFMKIAogICAgIGlmIChjbGllbnRJZGVudGlmaWVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNT
RVJUKCFpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lcik7Ci0gICAg
ICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUaW1lcj4oW2NsaWVudE9yaWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21haW4s
IHRoaXNdIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJz
VGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPihbY2xpZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJs
ZURvbWFpbiwgdGhpc10gewogICAgICAgICAgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gd29y
a2Vyc1RvVGVybWluYXRlOwogICAgICAgICAgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5p
bmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgewogICAgICAgICAgICAgICAgIGlmICh3
b3JrZXItPmlzUnVubmluZygpICYmIHdvcmtlci0+b3JpZ2luKCkgPT0gY2xpZW50T3JpZ2luKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggOGI2OGI3MGYwMWQyNTI3OGFmNTM4YWJjZTkxNGI4Yzdj
NjhhYjgzNy4uZGNhZjVhOGE3MTBmNzk0NDY0N2RlM2NkNWU5ODA2Mzk5YThmZDUwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVl
OjpydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgICAg
ICAgICAgcmVnaXN0cmF0aW9uLT5zZXRVcGRhdGVWaWFDYWNoZShqb2IucmVnaXN0cmF0aW9uT3B0
aW9ucy51cGRhdGVWaWFDYWNoZSk7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIs
ICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iOiBGb3VuZCByZWdpc3RyYXRp
b24gJWxsdSBmb3Igam9iICVzIGJ1dCBpdCBuZWVkcyB1cGRhdGluZyIsIHRoaXMsIHJlZ2lzdHJh
dGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbmV3UmVn
aXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2
ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFD
YWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJMKTsKKyAgICAgICAgYXV0byBuZXdSZWdp
c3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9y
ZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBq
b2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOwogICAgICAgICBtX3NlcnZlci5hZGRSZWdpc3Ry
YXRpb24oV1RGTW92ZShuZXdSZWdpc3RyYXRpb24pKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogTm8g
ZXhpc3RpbmcgcmVnaXN0cmF0aW9uIGZvciBqb2IgJXMsIGNvbnN0cnVjdGluZyBhIG5ldyBvbmUu
IiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKaW5kZXggMmI3YTJmZTNmYmI1OGQ0YzRlZTM4ZmMwNGI1MzZhM2U0ZTBjNzdlNy4uM2Jl
NzU3ZTAyYWUxOWQ3NTkwZWMwN2IzZmE0Y2JlN2Q2M2NlODFmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMTM1LDcg
KzEzNSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdp
c3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKICAgICAgICAgUmVmUHRyPEpTQ1NTUGFp
bnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWlu
dENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfSk7CiAKLSAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJn
dW1lbnRzKSk7CisgICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gbWFrZVVuaXF1ZTxQYWlu
dERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50
cykpOwogICAgICAgICBwYWludERlZmluaXRpb25NYXAoKS5hZGQobmFtZSwgV1RGTW92ZShwYWlu
dERlZmluaXRpb24pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5oCmluZGV4IDk2Y2YxODUwYjBjYWUzYWFlOTYwN2RiMTM0
MTY3MzU4YjY3MWMxZDkuLjY0ZmM3OGVlZTc4ODBlZDliZWRjZmMyYTcwMTJjYTZlYzNjZTFjMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBQYWludFdvcmtsZXRHbG9iYWxTY29wZSA6IHB1
YmxpYyBXb3JrbGV0R2xvYmFsU2NvcGUgewogCiAgICAgLy8gQWxsIHBhaW50IGRlZmluaXRpb25z
IG11c3QgYmUgZGVzdHJveWVkIGJlZm9yZSB0aGUgdm0gaXMgZGVzdHJveWVkLCBiZWNhdXNlIG90
aGVyd2lzZSB0aGV5IHdpbGwgcG9pbnQgdG8gZnJlZWQgbWVtb3J5LgogICAgIHN0cnVjdCBQYWlu
dERlZmluaXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFpbnREZWZpbml0aW9uPiB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGFpbnREZWZp
bml0aW9uKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEpTQzo6SlNPYmplY3QqIHBhaW50Q29uc3Ry
dWN0b3IsIFJlZjxDU1NQYWludENhbGxiYWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0UHJv
cGVydGllcywgVmVjdG9yPFN0cmluZz4mJiBpbnB1dEFyZ3VtZW50cyk7CiAKICAgICAgICAgY29u
c3QgQXRvbVN0cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldENvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwCmluZGV4IDhlOGEyYTRjYTIzZTJiOTNkYTEzNGFmYjUyZDBlOTU3
NmM0MDIxNTkuLjNmMDkyNTYzYmQ1MmFjNGE0YmJlZGE0MTVjMjM3YTJkMWRmZGFkYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBl
QW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmUKIHsKICAgICBTdHJpbmcgbWVz
c2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2Fn
ZVRleHQpOwotICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4
ZWMpOwogICAgIG1fd29ya2xldEdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAppbmRleCA0YmI3ODhlYTYzY2Q2YmJkYzUzMjU4N2UwNTEwZDUzMjUyNjA2ZmZh
Li5jZWY4MmY3YjQxMWQyMThjNzMzZDY2ZmE5ZGJhMmQ5MzEyNWFlODIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdvcmtsZXRHbG9iYWxTY29wZSk7CiBXb3Jr
bGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNj
cmlwdFNvdXJjZUNvZGUmJiBjb2RlKQogICAgIDogbV9kb2N1bWVudChtYWtlV2Vha1B0cihkb2N1
bWVudCkpCiAgICAgLCBtX3Nlc3Npb25JRChtX2RvY3VtZW50LT5zZXNzaW9uSUQoKSkKLSAgICAs
IG1fc2NyaXB0KHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMp
KQorICAgICwgbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhp
cykpCiAgICAgLCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAg
ICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAgICAgLCBtX2NvZGUoV1RGTW92ZShjb2RlKSkKQEAg
LTYyLDcgKzYyLDcgQEAgV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY28KICAgICBBU1NFUlQoZG9jdW1l
bnQucGFnZSgpKTsKIAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2lu
UG9saWN5OjpjcmVhdGUobV90b3BPcmlnaW4uY29weVJlZigpKSk7Ci0gICAgc2V0Q29udGVudFNl
Y3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwg
eyBtX2NvZGUudXJsKCkgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3ko
bWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fY29kZS51cmwoKSB9LCAq
dGhpcykpOwogfQogCiBXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUoKQpA
QCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVz
c2FnZShzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzCiB7CiAgICAgaWYgKCFt
X2RvY3VtZW50IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSB8fCAhbWVzc2FnZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1lc3Nh
Z2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7Cisg
ICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdl
LT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xv
YmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0
SWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCAxY2VlOWViMzQyMWNkOTlhNTZjODg2MGI4ZWNkZDQ1OTZm
ODBkMmRlLi43MTMzOTAwZjE3MWVlZjQxNTY3M2Q0ZTkwZDVjZjc3Y2ZlYmMyYmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdFdpdGhTdWJjbGFzcygpCiAgICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBB
U1NFUlQoYXNPYmplY3QobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVE
aXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFw
cGVyKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldENv
bnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgbV9jb25zb2xlQ2xpZW50
ID0gbWFrZVVuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3Bl
KTsKICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobV9j
b25zb2xlQ2xpZW50LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEVycm9ycy5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCmluZGV4IGIwMjFj
Y2UxNTNjMzE5Mjk1MGEyYmY3N2Q4MDlhMjg0N2FiMGYwYzEuLmE2MzI3YjlkZmYxYjc2YmI1ODJj
NjM2MDM4MTUyNDI4YzcxYWE4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxF
cnJvcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKQEAgLTM3LDYgKzM3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiAKIGNsYXNzIFhNTEVy
cm9ycyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgWE1MRXJyb3JzKERvY3VtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IGYwMTkzZDhjOTZlMzVjOWZmNzVlNmE2M2EzNTBjNjU1ZGNhODYwZWYuLmY4NjYz
M2E4ZDZkYjcwNTQzMDE4ODI4NTc1YjU5ZjI2NjdjNjZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIFN0cmluZyBYTUxIdHRwUmVxdWVz
dDo6cmVzcG9uc2VVUkwoKSBjb25zdAogWE1MSHR0cFJlcXVlc3RVcGxvYWQmIFhNTEh0dHBSZXF1
ZXN0Ojp1cGxvYWQoKQogewogICAgIGlmICghbV91cGxvYWQpCi0gICAgICAgIG1fdXBsb2FkID0g
c3RkOjptYWtlX3VuaXF1ZTxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oKnRoaXMpOworICAgICAgICBt
X3VwbG9hZCA9IG1ha2VVbmlxdWU8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+KCp0aGlzKTsKICAgICBy
ZXR1cm4gKm1fdXBsb2FkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApp
bmRleCBhZDdlMTNjOGExOTRhZDU2ZDYyMzQyMDAwMTdjYmE3N2ZlODBiNzQyLi5hOTI0NDA5ZWU0
NmM1M2U3M2IyN2E0OWExOWVmZTk2OTcyMTY3M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1
bmN0aW9ucy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzV2hpdGVz
cGFjZShVQ2hhciBjKQogICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdcbicgfHwgYyA9PSAn
XHInIHx8IGMgPT0gJ1x0JzsKIH0KIAotI2RlZmluZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihT
dWZmaXgpIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNT
dWZmaXgoKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZ1biMjU3VmZml4PigpOyB9CisjZGVm
aW5lIERFRklORV9GVU5DVElPTl9DUkVBVE9SKFN1ZmZpeCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rpb24jI1N1ZmZpeCgpIHsgcmV0dXJuIG1ha2VVbmlxdWU8
RnVuIyNTdWZmaXg+KCk7IH0KIAogY2xhc3MgSW50ZXJ2YWwgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKaW5kZXggMDQ2MTVjM2Q1ZjAzMTMxMDY5MzhmYWEwNWZi
MzljOTljZTEyM2I1Yy4uYzFiYmM1NGViODMwMTY5MTE5Yzg2ODMxYTRmMmE2ZTdjMDA0NTY4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAg
Ym9vbCBldmFsdWF0ZVByZWRpY2F0ZShjb25zdCBFeHByZXNzaW9uJiBleHByZXNzaW9uKQogCiAg
ICAgLy8gZm9vWzNdIG1lYW5zIGZvb1twb3NpdGlvbigpPTNdCiAgICAgaWYgKHJlc3VsdC5pc051
bWJlcigpKQotICAgICAgICByZXR1cm4gRXFUZXN0T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlv
bjo6Y3JlYXRlKCJwb3NpdGlvbiJfcyksIHN0ZDo6bWFrZV91bmlxdWU8TnVtYmVyPihyZXN1bHQu
dG9OdW1iZXIoKSkpLmV2YWx1YXRlKCkudG9Cb29sZWFuKCk7CisgICAgICAgIHJldHVybiBFcVRl
c3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1bmN0aW9uOjpjcmVhdGUoInBvc2l0aW9uIl9zKSwgbWFr
ZVVuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4o
KTsKIAogICAgIHJldHVybiByZXN1bHQudG9Cb29sZWFuKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAppbmRleCBlYzJjNmFlMDQ1OWEwNjkyNTZhNjYy
ZjcyYzg3MjY3ZmVhMWE0NWJkLi42MzA0ZTkyODExYTkzNGY3ZGU3NGM4Yzk0YjJiNjljMDA0ZWE0
OTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKQEAg
LTIzMSw3ICsyMzEsNyBAQCB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cygpCiAK
IHZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmKQog
ewotICAgIGF1dG8gY2hpbGRSdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxYU0xJbXBvcnRSdWxlPih0
aGlzLCBocmVmKTsKKyAgICBhdXRvIGNoaWxkUnVsZSA9IG1ha2VVbmlxdWU8WFNMSW1wb3J0UnVs
ZT4odGhpcywgaHJlZik7CiAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGRSdWxlLnJlbGVhc2Uo
KSk7CiAgICAgbV9jaGlsZHJlbi5sYXN0KCktPmxvYWRTaGVldCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCBlMDI0ZWZiNTZi
ZjY1MmI5MGE5YTFkNGY4MTMwNjQ5MTgzMGQ4ZTBmLi43MDQ4ODkyYTVhYTBlZjlhNTVmYmQyNDA4
Y2QxNzkxNGQwMmE5Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OmFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4mJiBpbnB1dFNvdXJjZSkKIHZvaWQgWE1MRG9j
dW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0
IGNoYXIqIG0sIFRleHRQb3NpdGlvbiBwb3NpdGlvbikKIHsKICAgICBpZiAoIW1feG1sRXJyb3Jz
KQotICAgICAgICBtX3htbEVycm9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8WE1MRXJyb3JzPigqZG9j
dW1lbnQoKSk7CisgICAgICAgIG1feG1sRXJyb3JzID0gbWFrZVVuaXF1ZTxYTUxFcnJvcnM+KCpk
b2N1bWVudCgpKTsKICAgICBtX3htbEVycm9ycy0+aGFuZGxlRXJyb3IodHlwZSwgbSwgcG9zaXRp
b24pOwogICAgIGlmICh0eXBlICE9IFhNTEVycm9yczo6d2FybmluZykKICAgICAgICAgbV9zYXdF
cnJvciA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYjkzMTAxYjhhYWM0ODM5YTM5YmI1NGIyYjg5
ZGU4OThjNzliNzVhYi4uODhkZDYwMmRhODgzZTdlYmFhOTRhOTZhYjZhMjllZGRiM2Q4MDI1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcApAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsK
IHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFN0YXJ0RWxlbWVudE5TQ2FsbGJhY2soY29uc3QgeG1s
Q2hhciogeG1sTG9jYWxOYW1lLCBjb25zdCB4bWxDaGFyKiB4bWxQcmVmaXgsIGNvbnN0IHhtbENo
YXIqIHhtbFVSSSwgaW50IG51bU5hbWVzcGFjZXMsIGNvbnN0IHhtbENoYXIqKiBuYW1lc3BhY2Vz
LCBpbnQgbnVtQXR0cmlidXRlcywgaW50IG51bURlZmF1bHRlZCwgY29uc3QgeG1sQ2hhcioqIGF0
dHJpYnV0ZXMpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFj
ayA9IG1ha2VVbmlxdWU8UGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2s+KCk7CiAKICAgICAg
ICAgY2FsbGJhY2stPnhtbExvY2FsTmFtZSA9IHhtbFN0cmR1cCh4bWxMb2NhbE5hbWUpOwogICAg
ICAgICBjYWxsYmFjay0+eG1sUHJlZml4ID0geG1sU3RyZHVwKHhtbFByZWZpeCk7CkBAIC0xMjIs
MTIgKzEyMiwxMiBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5k
RW5kRWxlbWVudE5TQ2FsbGJhY2soKQogICAgIHsKLSAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNrPigpKTsKKyAgICAg
ICAgbV9jYWxsYmFja3MuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ0VuZEVsZW1lbnROU0NhbGxi
YWNrPigpKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZENoYXJhY3RlcnNDYWxsYmFjayhjb25z
dCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0
ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0
byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjaz4oKTsKIAog
ICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cm5kdXAocywgbGVuKTsKICAgICAgICAgY2FsbGJh
Y2stPmxlbiA9IGxlbjsKQEAgLTEzNyw3ICsxMzcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tz
IHsKIAogICAgIHZvaWQgYXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2soY29uc3Qg
eG1sQ2hhciogdGFyZ2V0LCBjb25zdCB4bWxDaGFyKiBkYXRhKQogICAgIHsKLSAgICAgICAgYXV0
byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bkNhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5n
UHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnRh
cmdldCA9IHhtbFN0cmR1cCh0YXJnZXQpOwogICAgICAgICBjYWxsYmFjay0+ZGF0YSA9IHhtbFN0
cmR1cChkYXRhKTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsK
IAogICAgIHZvaWQgYXBwZW5kQ0RBVEFCbG9ja0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMsIGlu
dCBsZW4pCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQ
ZW5kaW5nQ0RBVEFCbG9ja0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFr
ZVVuaXF1ZTxQZW5kaW5nQ0RBVEFCbG9ja0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNr
LT5zID0geG1sU3RybmR1cChzLCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+bGVuID0gbGVuOwpA
QCAtMTU3LDcgKzE1Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBh
cHBlbmRDb21tZW50Q2FsbGJhY2soY29uc3QgeG1sQ2hhciogcykKICAgICB7Ci0gICAgICAgIGF1
dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDb21tZW50Q2FsbGJhY2s+KCk7
CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDb21tZW50Q2FsbGJh
Y2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJkdXAocyk7CiAKQEAgLTE2Niw3
ICsxNjYsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kSW50
ZXJuYWxTdWJzZXRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBuYW1lLCBjb25zdCB4bWxDaGFyKiBl
eHRlcm5hbElELCBjb25zdCB4bWxDaGFyKiBzeXN0ZW1JRCkKICAgICB7Ci0gICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNr
PigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nSW50ZXJuYWxT
dWJzZXRDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+bmFtZSA9IHhtbFN0cmR1cChu
YW1lKTsKICAgICAgICAgY2FsbGJhY2stPmV4dGVybmFsSUQgPSB4bWxTdHJkdXAoZXh0ZXJuYWxJ
RCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2
b2lkIGFwcGVuZEVycm9yQ2FsbGJhY2soWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3Qg
eG1sQ2hhciogbWVzc2FnZSwgT3JkaW5hbE51bWJlciBsaW5lTnVtYmVyLCBPcmRpbmFsTnVtYmVy
IGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBlbmRpbmdFcnJvckNhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0g
bWFrZVVuaXF1ZTxQZW5kaW5nRXJyb3JDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+
bWVzc2FnZSA9IHhtbFN0cmR1cChtZXNzYWdlKTsKICAgICAgICAgY2FsbGJhY2stPnR5cGUgPSB0
eXBlOwpAQCAtMjAyLDYgKzIwMiw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogICAgIH07
CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2sgOiBwdWJsaWMgUGVu
ZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjaygpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHhtbEZyZWUoeG1sTG9jYWxOYW1lKTsKQEAgLTIzMyw2ICsyMzQsNyBA
QCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKICAgICB9OwogCiAgICAgc3RydWN0IFBlbmRpbmdF
bmRFbGVtZW50TlNDYWxsYmFjayA6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHZvaWQgY2FsbChYTUxEb2N1
bWVudFBhcnNlciogcGFyc2VyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBwYXJz
ZXItPmVuZEVsZW1lbnROcygpOwpAQCAtMjQwLDYgKzI0Miw3IEBAIGNsYXNzIFBlbmRpbmdDYWxs
YmFja3MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjayA6
IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2soKQog
ICAgICAgICB7CiAgICAgICAgICAgICB4bWxGcmVlKHMpOwpAQCAtMjU1LDYgKzI1OCw3IEBAIGNs
YXNzIFBlbmRpbmdDYWxsYmFja3MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVu
ZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKCkKICAgICAgICAgewogICAgICAgICAg
ICAgeG1sRnJlZSh0YXJnZXQpOwpAQCAtMjcxLDYgKzI3NSw3IEBAIGNsYXNzIFBlbmRpbmdDYWxs
YmFja3MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjayA6
IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2soKQog
ICAgICAgICB7CiAgICAgICAgICAgICB4bWxGcmVlKHMpOwpAQCAtMjg2LDYgKzI5MSw3IEBAIGNs
YXNzIFBlbmRpbmdDYWxsYmFja3MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0NvbW1l
bnRDYWxsYmFjayA6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdDb21tZW50Q2Fs
bGJhY2soKQogICAgICAgICB7CiAgICAgICAgICAgICB4bWxGcmVlKHMpOwpAQCAtMzAwLDYgKzMw
Niw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUGVu
ZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5Q
ZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHht
bEZyZWUobmFtZSk7CkBAIC0zMTgsNiArMzI1LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7
CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nRXJyb3JDYWxsYmFjazogcHVibGljIFBlbmRp
bmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgdmlydHVhbCB+UGVuZGluZ0Vycm9yQ2FsbGJhY2soKQogICAgICAgICB7CiAgICAgICAg
ICAgICB4bWxGcmVlKG1lc3NhZ2UpOwpAQCAtNTY0LDcgKzU3Miw3IEBAIGJvb2wgWE1MRG9jdW1l
bnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24pCiBYTUxE
b2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBGcmFt
ZVZpZXcqIGZyYW1lVmlldykKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVu
dCkKICAgICAsIG1fdmlldyhmcmFtZVZpZXcpCi0gICAgLCBtX3BlbmRpbmdDYWxsYmFja3Moc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAgICwgbV9wZW5kaW5nQ2FsbGJh
Y2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUo
JmRvY3VtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVs
b3dSYW5nZVBvc2l0aW9uKCkpCiB7CkBAIC01NzIsNyArNTgwLDcgQEAgWE1MRG9jdW1lbnRQYXJz
ZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpCiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZy
YWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVudCwgUGFyc2VyQ29udGVudFBv
bGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KGZyYWdtZW50LmRvY3VtZW50KCksIHBhcnNlckNvbnRlbnRQb2xpY3kpCi0gICAgLCBtX3BlbmRp
bmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAgICwg
bV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAs
IG1fY3VycmVudE5vZGUoJmZyYWdtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRl
eHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3BhcnNpbmdGcmFnbWVu
dCh0cnVlKQpAQCAtMTMyOCw3ICsxMzM2LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9F
bmQoKQogICAgICAgICB4bWxUcmVlVmlld2VyLnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygp
OwogICAgIH0gZWxzZSBpZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsKICAgICAgICAgeG1sRG9jUHRy
IGRvYyA9IHhtbERvY1B0ckZvclN0cmluZyhkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLnRvU3RyaW5nKCksIGRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNl
KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2MpKTsKKyAgICAgICAgZG9jdW1l
bnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKG1ha2VVbmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2Mp
KTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUg
ZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IFhTTCBzdHlsZXNoZWV0
cy4KICAgICAgICAgZG9jdW1lbnQoKS0+YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc05vd0lmU2No
ZWR1bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2Uu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCAwNWJjOTUz
ZjdmMGRkYzc4N2IxZTYzMDQ4NzY5NmMyMDg1OWNhZTBmLi5kNjllMTQ5OTJkNTg2NzUxY2EwNDM0
MjYzNjJhNmY0MWMyNjk5ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZl
clNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAK
QEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dz
ZXIoVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vz
c2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7CisgICAgYXV0byBzZXNzaW9u
SG9zdCA9IG1ha2VVbmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3Qo
KSk7CiAgICAgYXV0byogc2Vzc2lvbkhvc3RQdHIgPSBzZXNzaW9uSG9zdC5nZXQoKTsKICAgICBz
ZXNzaW9uSG9zdFB0ci0+Y29ubmVjdFRvQnJvd3NlcihbdGhpcywgY2FwYWJpbGl0aWVzTGlzdCA9
IFdURk1vdmUoY2FwYWJpbGl0aWVzTGlzdCksIHNlc3Npb25Ib3N0ID0gV1RGTW92ZShzZXNzaW9u
SG9zdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9w
dGlvbmFsPFN0cmluZz4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwIGIvU291
cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKaW5kZXggN2EyMGI4OTQxYWZm
NzJhODUyYjc2ZjVjNTUxMDYyNjU0Nzc0YTFjYy4uMTc3YWE1NGYyMjI5N2FjMzE2MTRkMzUzYmU5
ZjNhNzlkMWFhYjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25I
b3N0R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5j
cHAKQEAgLTExMyw2ICsxMTMsNyBAQCBib29sIFNlc3Npb25Ib3N0Ojppc0Nvbm5lY3RlZCgpIGNv
bnN0CiB9CiAKIHN0cnVjdCBDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQ29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YShT
ZXNzaW9uSG9zdCogc2Vzc2lvbkhvc3QsIEdVbmlxdWVQdHI8Y2hhcj4mJiBkYnVzQWRkcmVzcywg
R0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5n
PiBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogc2Vzc2lvbkhvc3Qoc2Vz
c2lvbkhvc3QpCiAgICAgICAgICwgZGJ1c0FkZHJlc3MoV1RGTW92ZShkYnVzQWRkcmVzcykpCkBA
IC0xNzMsNyArMTc0LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3NlcihGdW5jdGlv
bjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21wbGUKICAgICB9LCB0aGlzKTsK
IAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGJ1c0FkZHJlc3MoZ19zdHJkdXBfcHJpbnRmKCJ0Y3A6
aG9zdD0lcyxwb3J0PSV1IiwgIjEyNy4wLjAuMSIsIHBvcnQpKTsKLSAgICBjb25uZWN0VG9Ccm93
c2VyKHN0ZDo6bWFrZV91bmlxdWU8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4odGhpcywgV1RG
TW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFibGUuZ2V0KCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7CisgICAgY29ubmVjdFRvQnJvd3NlcihtYWtlVW5pcXVlPENvbm5lY3RUb0Jy
b3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxl
LmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQogCiB2b2lkIFNlc3Npb25I
b3N0Ojpjb25uZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0VG9Ccm93c2VyQXN5
bmNEYXRhPiYmIGRhdGEpCkBAIC0zNzEsNiArMzcyLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0
SUQKIH0KIAogc3RydWN0IE1lc3NhZ2VDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgbG9uZyBtZXNzYWdlSUQ7CiAgICAgU2Vzc2lvbkhvc3QqIGhvc3Q7
CiB9OwpAQCAtMzgxLDcgKzM4Myw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdlVG9C
YWNrZW5kKGxvbmcgbWVzc2FnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJU
KG1fY29ubmVjdGlvbklEKTsKICAgICBBU1NFUlQobV90YXJnZXQuaWQpOwogCi0gICAgYXV0byBt
ZXNzYWdlQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZUNvbnRleHQ+KE1lc3NhZ2VD
b250ZXh0IHsgbWVzc2FnZUlELCB0aGlzIH0pOworICAgIGF1dG8gbWVzc2FnZUNvbnRleHQgPSBt
YWtlVW5pcXVlPE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4dCB7IG1lc3NhZ2VJRCwgdGhp
cyB9KTsKICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fZGJ1c0Nvbm5lY3Rpb24uZ2V0KCks
IG51bGxwdHIsCiAgICAgICAgIElOU1BFQ1RPUl9EQlVTX09CSkVDVF9QQVRILAogICAgICAgICBJ
TlNQRUNUT1JfREJVU19JTlRFUkZBQ0UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCmluZGV4IGI2MmYxMmUxODJm
MjFlYjhkNTEwNzRjYjI1NGQ3YjIxMmUwY2VkMTkuLmI0NDVlN2E2NWE0OGQwNzQ4YmQ3ZTkyMDVh
MzQ0MGY3ZjFhOTU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAyZTI5NmIy
OWY0M2E0ZmM4OGU3MDA5MzI0YTVlMjNiMGJlOWNkNTFjLi45MzAzZDJhZGMxNWVmNmZiMzEwYjZm
YjE2ZDA3MGNjODUzZmRjM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3Jp
bmdEaXNrKCkKICAgICBpZiAocmVzb3VyY2VMb2dQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+
KHJlc291cmNlTG9nUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
eworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJjZUxv
Z1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNz
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhp
c10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9maWxlTW9uaXRv
ciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHN0b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5
UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmICh0eXBlID09IEZpbGVN
b25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbCkgewogICAgICAgICAgICAgLy8gRGlyZWN0
b3J5IHdhcyByZW1vdmVkIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCmluZGV4IDRjMDMzZTM1M2Q0ZjMwOGY3Zjc2MDAxMmNh
OTYyOTYzMDNjMTA3MzAuLjcxZjM0YmZhM2Q2YzJiNTI3NjE2ODk0NGVlMzM0YzczZGFmNTAzMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlOwogCiAvLyBDYW4gb25seSBiZSBjb25zdHJ1Y3RlZCAvIGRlc3Ryb3llZCAv
IHVzZWQgZnJvbSB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGlj
IHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUmLCBXb3JrUXVldWUmLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQ
YXRoKTsKICAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggYWRlYzE0Y2Y5Y2Nk
OTY0YzI5MDFjZTJkODRlYTM1NmRmNmRiMGZmMi4uNWRjN2Q5OTQ3OGIzNGNhMzJiNzcyMGYwOTc0
NWQwMjFhNmVjNDExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtNzcsNiArNzcsNyBAQCBlbnVtIGNsYXNzIE9wZXJhdGluZ0RhdGVzV2luZG93IDogYm9v
bCB7IExvbmcsIFNob3J0IH07CiAKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNl
ZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3Rh
dGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICB1c2luZyBSZWdp
c3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBkYTg4NjZiNjFjOGIw
NTcyY2RkNTA4ZWI2OWE5ZDhhOTg5ZTc1ZDIxLi44YjRhODgyMzk3NGQ2Y2YxNTU2OWRjZjlmZmU5
OTFjMWUxYzBmYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcApAQCAtMTU5LDE1ICsxNTksMTUgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG4K
ICAgICAKICAgICBwb3N0VGFzayhbdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3RdIHsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuaXNJVFBEYXRhYmFzZUVuYWJsZWQoKSkgewotICAgICAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCi0gICAgICAgICAgICBhdXRv
IG1lbW9yeVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCk7Ci0gICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1f
c3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAg
ICAgICAgIGF1dG8gbWVtb3J5U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9j
YWxob3N0KTsKKyAgICAgICAgICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gbWFrZVVuaXF1ZTxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9z
dGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCiAgICAg
ICAgICAgICBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1f
c3RhdGlzdGljc1N0b3JlLmdldCgpKS5wb3B1bGF0ZUZyb21NZW1vcnlTdG9yZSgqbWVtb3J5U3Rv
cmUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMs
IG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAgICAg
IG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
ZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywg
bV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgICAgICAgICAg
bV9wZXJzaXN0ZW50U3RvcmFnZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU+KCptX3N0YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FKDE5MzI5
Nyk6IFRoaXMgc2hvdWxkIGJlIHJldmlzZWQgYWZ0ZXIgdGhlIFVJUHJvY2VzcyB2ZXJzaW9uIGdv
ZXMgYXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDYwNWFlZjNlNmVlOTUwZjM5NDgzZmNkOGNjNGQ4
ZTY1OGUwMmNmMGMuLmJiZTM5ODQ3NTJiZTE0NjA1MGQ1MDM1NzEzNzE1NTBmYjJjYjYzYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyIDogcHVibGljIE5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb29r
aWVNYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBXZWJDb29raWVNYW5hZ2VyKE5ldHdvcmtQcm9jZXNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCmlu
ZGV4IGRjNzllZWJjZjE4ZGJmNjdiNDY0YzM1ODYxMGZiM2NlN2NmZTkwY2MuLjBlMzhlOTQzMGQy
Y2M5YTE0MWE5NzI3MDM1ZGQzZGZhMDI1ZjRkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIE5ldHdv
cmtQcm9jZXNzOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBj
bGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
clNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMv
c291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAppbmRleCAyYzRkMmZmOTQ4
MDljNDJhNjExNjczYjVmYjVjYWRiZmE1OTE2MDRlLi5jOWIwYzNiMjE1N2FkOGFlYmU3NDZmNGYz
OWZiNWVmY2Q3NWU3MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgY2xh
c3MgQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYktpdFNvdXBS
ZXF1ZXN0R2VuZXJpY0NsaWVudAogICAgICAgICBpZiAoIWN1c3RvbVByb3RvY29sTWFuYWdlcikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIGN1c3RvbVByb3RvY29sSUQgPSBj
dXN0b21Qcm90b2NvbE1hbmFnZXItPmFkZEN1c3RvbVByb3RvY29sKHN0ZDo6bWFrZV91bmlxdWU8
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YT4oV1RG
TW92ZSh0YXNrKSwgcmVxdWVzdCkpOworICAgICAgICBhdXRvIGN1c3RvbVByb3RvY29sSUQgPSBj
dXN0b21Qcm90b2NvbE1hbmFnZXItPmFkZEN1c3RvbVByb3RvY29sKG1ha2VVbmlxdWU8TGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YT4oV1RGTW92ZSh0
YXNrKSwgcmVxdWVzdCkpOwogICAgICAgICBjdXN0b21Qcm90b2NvbE1hbmFnZXItPnN0YXJ0TG9h
ZGluZyhjdXN0b21Qcm90b2NvbElELCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNHZXRSZXF1ZXN0
KHJlcXVlc3QpKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggODBmZTFhMmRk
YzNlMTNhMDIwYjI1NjRhNjJkYzU1M2YwYjVkNDRkMC4uYjRkMmRhYzVkMGRiNTczYmM3NWVlY2Vl
ZjhmYjA2MGU4M2Q2MTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBA
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgRG93bmxvYWRJRCBkb3dubG9hCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZl
cmVuY2VzID0gY2xpZW50KCkubmV0d29ya0Jsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVl
c3QudXJsKCkpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzZXNz
aW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMu
YWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVu
dC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrQmxvYlJl
Z2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKKyAgICBtX3BlbmRpbmdE
b3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2Ns
aWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrQmxv
YlJlZ2lzdHJ5KCkuYmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKIH0KIAogdm9pZCBE
b3dubG9hZE1hbmFnZXI6OmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93
bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPiYmIGRvd25sb2FkKQpAQCAtOTIsNyAr
OTIsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERl
c3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0dwogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNv
bnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0xvYWQ+JiYgbmV0d29ya0xvYWQsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlciwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+PiYmIGJsb2JGaWxlUmVmZXJlbmNlcywgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBB
U1NFUlQoIW1fcGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7Ci0gICAgbV9w
ZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdE
b3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwg
V1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9h
ZElELCByZXF1ZXN0LCByZXNwb25zZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93
bmxvYWRJRCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUobmV0d29ya0xvYWQpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0K
IAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dP
dmVyd3JpdGUpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3Vt
ZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICNp
ZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbHNlCi0gICAgYXV0
byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElE
LCBudWxscHRyLCBzZXNzaW9uSUQpOworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERv
d25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKIAogICAgIGRv
d25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSk7CiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hcC5jcHAKaW5kZXggYTg4NGFjYjI5NWQ0MmNlOTNlMjFiYWM0MzMwODRkN2JiYzQzM2U2
NS4uYWUzY2E3ZTBlNGVlN2VjODVkZWEyZTMwOWUxZDNjMjBiNzQ5NjUwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNw
cApAQCAtNjEsNyArNjEsNyBAQCBEb3dubG9hZE1hcDo6RG93bmxvYWRNYXBUeXBlOjpBZGRSZXN1
bHQgRG93bmxvYWRNYXA6OmFkZChEb3dubG9hZElEIGRvd25sb2FkSUQsCiAgICAgYXV0byByZXN1
bHQgPSBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAg
IGlmIChtX2Rvd25sb2Fkcy5zaXplKCkgPT0gMSkgewogICAgICAgICBBU1NFUlQoIW1fZG93bmxv
YWRBc3NlcnRpb24pOwotICAgICAgICBtX2Rvd25sb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFz
c2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZEFz
c2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0cGlkKCksICJXZWJLaXQg
ZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAgICAg
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVG9vayAnV2ViS2l0IGRvd25sb2Fk
cycgYXNzZXJ0aW9uIGluIE5ldHdvcmtQcm9jZXNzIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmNwcAppbmRleCBhMjc4MjhkN2E4YmQ4NGE3YWUzNzcxNjg2Nzg2OTFjNzY3ZjI3OTZkLi41OTEy
M2YyYzQ4ZjFjMWU0MTc5YmIxZDViY2UxNTcwYzZiNzU0ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogUGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoSVBDOjpDb25uZWN0
aW9uKiBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycywgRG93bmxvYWRJRCBkb3dubG9hZElELCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nl
c3Npb24sIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWROYW1lKQotICAgIDogbV9uZXR3b3JrTG9hZChzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtMb2FkPigqdGhpcywgYmxvYlJlZ2lzdHJ5LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBu
ZXR3b3JrU2Vzc2lvbikpCisgICAgOiBtX25ldHdvcmtMb2FkKG1ha2VVbmlxdWU8TmV0d29ya0xv
YWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNz
aW9uKSkKICAgICAsIG1fcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24ocGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24pCiB7CiAgICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IHBhcmFt
ZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpN
YXlBc2tDbGllbnRGb3JDcmVkZW50aWFsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggOWIxYjliODYwNDM4ZDliNmEzZjEyNjg5MTQ2MmIzMzZiYzU5ZmM0ZC4uODJhMWU4M2JlOTVj
MzA3ZjdlMGE3ZTA3MDQxOWE5OTY1N2QzNGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTg3OSw3ICs4NzksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp1bnJlZ2lzdGVyU1dDb25uZWN0aW9ucygpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgc2VydmVyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0
byBjb25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1f
bmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOwor
ICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiht
X25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsK
ICAgICAKICAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyID0gY29ubmVjdGlvbi0+aWRlbnRpZmllcigpOwogICAgIExPRyhTZXJ2aWNlV29y
a2VyLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29u
bmVjdGlvbiAtICVzIiwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcAppbmRleCA0NDQyMGZm
NWZmMjI5OWJlMzc1NGNlMzdjZGRjN2VlNjE2MmUxOTMxLi41NDM1MjgyOGU2ODcyMWFmMGJhZGUw
YzAyNzViZTJmMDk1YTE2NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcApAQCAtNjks
NyArNjksNyBAQCB2b2lkIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpjb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQoVXNlckNvbnRlbnRDb250cm9sbAogdm9pZCBOZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdERhdGE+PiYmIGNvbnRlbnRSdWxlTGlzdHMpCiB7CiAgICAgYXV0byYg
YmFja2VuZCA9ICptX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbnN1cmUoaWRlbnRpZmllciwg
W10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kPigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGZvciAoYXV0byYmIGNvbnRl
bnRSdWxlTGlzdCA6IGNvbnRlbnRSdWxlTGlzdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDg1NmNhMWYwOTVl
MTAzYzU0MmFkNGU0MzAwMGJjYjcwZmYxZmIzMDcuLjhhNmM1YTFmMjE4ZDNjOWFiMjEwNGRmMDk0
NjkyY2MzZjY1NTIyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3Qgd2ViS2l0QmxvYlJlc291cmNlRG9tYWluID0gIldlYktpdEJsb2JSZXNvdXJj
ZSI7CiAKIE5ldHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIEJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSwgTmV0d29ya0Rh
dGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ29u
dGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYgZmlsZVJlZmVyZW5jZXMpCiAgICAg
OiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6RG9Ob3RVc2UsIGZhbHNlLCBmYWxzZSkKLSAgICAsIG1fc3RyZWFtKHN0ZDo6
bWFrZV91bmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCisgICAgLCBtX3N0cmVhbShtYWtl
VW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpKQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhm
aWxlUmVmZXJlbmNlcykKICAgICAsIG1fbmV0d29ya1Byb2Nlc3Moc2Vzc2lvbi5uZXR3b3JrUHJv
Y2VzcygpKQogewpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZG93bmxvYWQoKQogICAgIH0KIAogICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IG1fbmV0d29y
a1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQs
ICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAg
ICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBt
X3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2Vz
dGVkRmlsZW5hbWUoKSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9hZC5nZXQoKTsK
ICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5n
RG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVh
dGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5jcHAKaW5kZXggZjY1NDI5NThiNDcxMDNkMzgxZjhjYzUzNzBkOWQ2YjU5NGRjMTE2Yy4uMTkz
MjZmMmY0N2RjOWY0ZjYyMjhhNGM5YWE4NGY2YzlmYWFiYjczYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIG1fZGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlPigpOworICAgICAgICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZT4oKTsKICAgICAgICAgYm9vbCBpc0RhdGFiYXNlT3BlbiA9IG1fZGF0YWJhc2Ut
Pm9wZW4ocGF0aCwgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Ok9wZW5Nb2RlOjpSZWFkT25seSk7
CiAgICAgICAgIGlmICghaXNEYXRhYmFzZU9wZW4pIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAg
LTgwLDcgKzgwLDcgQEAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyKCkKICAgICAgICAgLy8gU2luY2Ugd2UgYXJlIHVzaW5nIGEgd29ya2VyUXVl
dWUsIHRoZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBtYXkgYmUgY2FsbGVkIGJ5IGRpZmZl
cmVudCB0aHJlYWRzLgogICAgICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tz
KCk7CiAKLSAgICAgICAgbV9zdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudD4oKm1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7Cisg
ICAgICAgIG1fc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+
KCptX2RhdGFiYXNlLCBodHRwc1VwZ3JhZGVDaGVja2VyUXVlcnkpOwogICAgICAgICBpbnQgaXNT
dGF0ZW1lbnRQcmVwYXJlZCA9IChtX3N0YXRlbWVudC0+cHJlcGFyZSgpID09IFNRTElURV9PSyk7
CiAgICAgICAgIEFTU0VSVChpc1N0YXRlbWVudFByZXBhcmVkKTsKICAgICAgICAgaWYgKCFpc1N0
YXRlbWVudFByZXBhcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCmluZGV4IGRjZDQ2YTYwMWJlNjMwOTg2
ZmMyYWUwYzFjOTY1NThjOTU5MjIwOGEuLjUxZDIwMzE0ZWFhNDllOTZhNDFhNTdjZThkNDIyMjZi
YmZiMDcyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgU2Vz
c2lvbklEOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpOwogICAgIH5OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRl
eCA5MTA3ZmVjMWUzNGRiNDQ4ODE2MjI4Njg2MjJjOGZiZWI1YjM4ODNjLi5lZTgwYWM2ZWExYTc3
OTc3M2EwNzEwZTE3ODg3MDYzNzY3YzUxMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgTmV0d29ya0xv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3Bv
bnNlQ29tcGxlCiAgICAgfQogCiAgICAgaWYgKG1fbG9hZFRocm90dGxlTGF0ZW5jeSA+IDBfcykg
ewotICAgICAgICBtX3Rocm90dGxlID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJvdHRsZT4oKnRoaXMs
IG1fbG9hZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV90aHJvdHRsZSA9IG1ha2VVbmlxdWU8VGhyb3R0bGU+
KCp0aGlzLCBtX2xvYWRUaHJvdHRsZUxhdGVuY3ksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRl
eCA0MDk3MTRkNjY3MjZhODQ3NGFmZjI5YTE2MDgxN2YyNDc5NjdiMDE2Li5lMWFlMDBiZDlkOTU0
Nzc3ODE3NDM5ODVkZjA3M2E4YjFjZDI1MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC00MTMsNyArNDEzLDcgQEAg
dm9pZCBOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QKICAgICAgICAgbV9mcmFtZUlELAogICAgICAgICBtX3N0
b3JlZENyZWRlbnRpYWxzUG9saWN5CiAgICAgfTsKLSAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2Vy
ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+KG1fbmV0d29y
a1Byb2Nlc3MuZ2V0KCksIFdURk1vdmUocGFyYW1ldGVycyksIG1fc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzLCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhh
bmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpLCBpc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQoKV0o
YXV0byYmIGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gbWFr
ZVVuaXF1ZTxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+KG1fbmV0d29ya1Byb2Nlc3MuZ2V0
KCksIFdURk1vdmUocGFyYW1ldGVycyksIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzLCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIgPSBXVEZN
b3ZlKGhhbmRsZXIpLCBpc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQoKV0oYXV0byYmIGVycm9y
KSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tDT1JTUmVx
dWVzdFdpdGhQcmVmbGlnaHQgLSBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZs
aWdodCBwcmVmbGlnaHQgY29tcGxldGUsIHN1Y2Nlc3M6ICVkIGZvclJlZGlyZWN0PyAlZCIsIGVy
cm9yLmlzTnVsbCgpLCBpc1JlZGlyZWN0ZWQpOwogCiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxs
KCkpIHsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIE5ldHdvcmtM
b2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KCkKIHsKICAgICBpZiAoIW1fY29udGVu
dFNlY3VyaXR5UG9saWN5ICYmIG1fY3NwUmVzcG9uc2VIZWFkZXJzKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBQYXNzIHRoZSBVUkwgb2YgdGhlIHByb3RlY3RlZCByZXNvdXJjZSBpbnN0ZWFkIG9mIGl0
cyBvcmlnaW4uCi0gICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0
cmluZygpIH0pOworICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1ha2VVbmlxdWU8
Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJpbmco
KSB9KTsKICAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJz
KCptX2NzcFJlc3BvbnNlSGVhZGVycywgU3RyaW5nIHsgbV9yZWZlcnJlciB9LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydFBhcnNpbmdFcnJvcnM6Ok5vKTsKICAgICB9CiAgICAgcmV0dXJu
IG1fY29udGVudFNlY3VyaXR5UG9saWN5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA5Y2I0YTkyNTIyMDkwNWI0YzIxYTRm
NzZhZTc3NmFlMTQ1MDI1Zjg3Li5iYmE3YmJlMDJiOWU2YjkwYzRmOTNhZjU4OGYyNTMzYWE1NTY5
OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtNTAzLDkgKzUwMyw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3
VGVzdGluZ1Nlc3Npb24oKQogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NG
VVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBz
ZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1v
dmUoY29va2llU3RvcmFnZSkpOworICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0
b3JhZ2UpKTsKICNlbGlmIFVTRShDVVJMKSB8fCBVU0UoU09VUCkKLSAgICBtX2RlZmF1bHROZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgbV9k
ZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogI2Vu
ZGlmCiB9CiAKQEAgLTUzNSw5ICs1MzUsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVT
ZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZwogICAg
ICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5
Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkp
OwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNz
aW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1v
dmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKICNlbGlmIFVTRShD
VVJMKSB8fCBVU0UoU09VUCkKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CisgICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihz
ZXNzaW9uSUQpOwogI2VuZGlmCiB9CiAKQEAgLTI0MjgsNyArMjQyOCw3IEBAIFNXU2VydmVyJiBO
ZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKICAgICAgICAgLy8gSWYgdGhlcmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpT
ZXNzaW9uSUQgY29tZSBmcm9tPwogICAgICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkgfHwgIXBhdGguaXNFbXB0eSgpKTsKICAgICAgICAgCi0gICAgICAgIGF1dG8gdmFsdWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+
KCksIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBtYWtl
VW5pcXVlPFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIFdURk1v
dmUocGF0aCksIHNlc3Npb25JRCk7CiAgICAgICAgIGlmIChtX3Nob3VsZERpc2FibGVTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkpCiAgICAgICAgICAgICB2YWx1ZS0+ZGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogICAgICAgICByZXR1cm4g
dmFsdWU7CkBAIC0yNTQwLDYgKzI1NDAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0
U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50TwogfQog
CiBjbGFzcyBRdW90YVVzZXJJbml0aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9y
YWdlUXVvdGFVc2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBRdW90YVVzZXJJbml0aWFsaXplcihTdG9yYWdlUXVvdGFNYW5hZ2VyJiBtYW5h
Z2VyKQogICAgICAgICA6IG1fbWFuYWdlcihtYWtlV2Vha1B0cihtYW5hZ2VyKSkKQEAgLTI1NzQs
NyArMjU3NSw3IEBAIGNsYXNzIFF1b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OlN0b3JhZ2VRdW90YVVzZXIgewogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFs
aXplUXVvdGFVc2VycyhTdG9yYWdlUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vz
c2lvbklELCBvcmlnaW4sIHVzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlckluaXRpYWxp
emVyPihtYW5hZ2VyKV0oKSBtdXRhYmxlIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgb3JpZ2luLCB1
c2VyID0gbWFrZVVuaXF1ZTxRdW90YVVzZXJJbml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IHRoaXMtPmlkYlNlcnZlcihzZXNzaW9uSUQpLmluaXRpYWxpemVRdW90YVVzZXIob3JpZ2luKTsK
QEAgLTI1ODgsNyArMjU4OSw3IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXImIE5ldHdvcmtQcm9jZXNz
OjpzdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiAgICAgICAgIHJl
dHVybiBTdG9yYWdlUXVvdGFNYW5hZ2VycyB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIHJldHVybiAqc3RvcmFnZVF1b3RhTWFuYWdlcnMubWFuYWdlcnNQZXJPcmlnaW4oKS5lbnN1
cmUob3JpZ2luLCBbdGhpcywgJnN0b3JhZ2VRdW90YU1hbmFnZXJzLCBzZXNzaW9uSUQsICZvcmln
aW5dIHsKLSAgICAgICAgYXV0byBtYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlUXVv
dGFNYW5hZ2VyPihzdG9yYWdlUXVvdGFNYW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3Ro
aXMsIHNlc3Npb25JRCwgb3JpZ2luXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNw
YWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAgICAgIGF1
dG8gbWFuYWdlciA9IG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3Rh
TWFuYWdlcnMuZGVmYXVsdFF1b3RhKG9yaWdpbiksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0o
dWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNy
ZWFzZSwgYXV0byBjYWxsYmFjaykgewogICAgICAgICAgICAgdGhpcy0+cmVxdWVzdFN0b3JhZ2VT
cGFjZShzZXNzaW9uSUQsIG9yaWdpbiwgcXVvdGEsIGN1cnJlbnRTcGFjZSwgc3BhY2VJbmNyZWFz
ZSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICB9KTsKICAgICAgICAgaW5pdGlhbGl6ZVF1
b3RhVXNlcnMoKm1hbmFnZXIsIHNlc3Npb25JRCwgb3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBmYjdhNmNkMzZlYTlmMzU5NGE3
ZmI5ZGU4NTUzNTMyM2ZhODIxNzA4Li5jNmUxNjhkZDQ3ZjYzZjQyMjZiZjY1ZGY0ZjM0NGM0OWVk
YTBlMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMgQXV4
aWxpYXJ5UHJvY2VzcywgcHJpdmF0ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudCwKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAg
ICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1
ZTxUPigqdGhpcykpOworICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFt
ZSgpLCBtYWtlVW5pcXVlPFQ+KCp0aGlzKSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGNlMDZlMzYxM2FjMjBlZjhiMzMxNGM3ZWIyNmUyYzRhYmFmYjRl
ODguLmZmOTkyYmZmMWJjZmVmYTUwNDI4YzRmYTFhMGE5ZjM2NjNjZGExZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTExMSw3ICsxMTEsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogCiAgICAgaWYg
KHN5bmNocm9ub3VzUmVwbHkgfHwgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25z
ZUFjY2VzcyB8fCBwYXJhbWV0ZXJzLm9wdGlvbnMua2VlcEFsaXZlKSB7CiAgICAgICAgIE5ldHdv
cmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gaXNNYWluRnJhbWVMb2Fk
KCkgPyBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlOjpNYWluRnJhbWUgOiBOZXR3b3JrTG9h
ZENoZWNrZXI6OkxvYWRUeXBlOjpPdGhlcjsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3Jr
UHJvY2VzcygpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFt
ZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgSFRUUEhlYWRlck1hcCB7IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFk
ZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5z
b3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmln
aW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRl
RW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RM
b2FkVHlwZSk7CisgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3
b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25z
IHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnMgfSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAg
eyBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRl
cnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwg
bV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVy
cmVyKCksIG1fcGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcygpLCByZXF1ZXN0TG9hZFR5cGUpOwogICAgICAgICBpZiAo
bV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycykKICAgICAgICAgICAgIG1fbmV0d29ya0xv
YWRDaGVja2VyLT5zZXRDU1BSZXNwb25zZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzIHsgbV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpIH0p
OwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC0xMTksNyArMTE5LDcgQEAgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBwYXIKICNlbmRpZgogICAgIH0KICAgICBpZiAoc3luY2hyb25vdXNS
ZXBseSkKLSAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxT
eW5jaHJvbm91c0xvYWREYXRhPihXVEZNb3ZlKHN5bmNocm9ub3VzUmVwbHkpKTsKKyAgICAgICAg
bV9zeW5jaHJvbm91c0xvYWREYXRhID0gbWFrZVVuaXF1ZTxTeW5jaHJvbm91c0xvYWREYXRhPihX
VEZNb3ZlKHN5bmNocm9ub3VzUmVwbHkpKTsKIH0KIAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjp+
TmV0d29ya1Jlc291cmNlTG9hZGVyKCkKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYQogICAgIH0KIAogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+
KCp0aGlzLCAmbV9jb25uZWN0aW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3
b3JrTG9hZD4oKnRoaXMsICZtX2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1Ymxp
Y31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlw
dGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyYmY0M2QyNGUwOTFmZjc2ZDlkYjhiNzBhMTZhZTNm
YTE3YjJkNTAuLmEwNGFhOTM0OGYyNDczYmY5YjY3MjViMGEzNjQ4OGE3ZmJjMzJmZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTY0LDYg
KzY0LDcgQEAgY2xhc3MgQ2FjaGU7CiB9CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9uIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lv
bj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMmJik7CiAgICAgdmlydHVhbCB+TmV0d29ya1Nlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMDRl
M2QwMjUyMjBkZTRjNDNjNzM2MmRhMTQxZGYzMmJhMjAzMGZhZi4uNTkxODg1NzU3YTg0NzUxYzgz
MThmN2JlNWQyNzVhN2YxMWM1YTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hh
bm5lbD4gTmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlk
ZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtT
b2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVj
dGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKTsKICAgICBpZiAoIXJlc3VsdC0+bV9z
b2NrZXQpIHsKICAgICAgICAgcmVzdWx0LT5kaWRDbG9zZSgwLCAiQ2Fubm90IGNyZWF0ZSBhIHdl
YiBzb2NrZXQgdGFzayJfcyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDY3
MmIzNzgxYTRkNGEzNGI5YzFlMWUyNDE1YmQ0OTEwZTc3OWVkNzEuLjlkZjlhYWNkY2IzMzJlMDQx
ZGI2OWJkMDY4MTAyMjljZjhiYjRlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3Mg
TmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIAogY2xhc3MgTmV0d29ya1Nv
Y2tldENoYW5uZWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IGNyZWF0ZShOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVu
dGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcAppbmRleCBkOTBjY2NhOTgwYThlZmZjMmQ0ZjM4ZjVlM2Y2YmMwYWEyYzJlNTQ2Li4y
YzY0MjdlNjQ4MjJjZWY1ZDFhODEyMDI1ZWZkNmM4NTQ1NDFjZTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApAQCAtNTMsNyArNTMsNyBA
QCBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBOZXR3b3JrTG9hZFBhcmFtZQogICAgIH0KIAogICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpOwotICAgIG1fbmV0
d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2Fk
ID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1l
dGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNo
b3QoNjAwMDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCBiZjUx
NTc4ZmIxNDdkZGRjODdlNjZkOTBhNWVkZDAyYTRjZDcyNjkzLi5jYzg3ODRkNDI4M2E2MjVmYzBl
MWQ5ZWZhYTUyNzA1MjNhYzcxMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAK
QEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpzY2hlZHVsZURh
dGFiYXNlVXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2Rpc2FibGVTdWRk
ZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlKQotICAgICAgICBtX2Rpc2Fi
bGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyPigpOworICAgICAgICBtX2Rpc2FibGVT
dWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gbWFrZVVuaXF1ZTxT
dWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyPigpOwogCiAgICAgbV9kaWRTY2hlZHVsZURhdGFiYXNl
VXBkYXRlID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDNlOWQxN2Q2MDJkMzQxNzcwMzNjOTMzOGI0YmJl
NmRhMGJhYmE4YTQuLmIwODNkNWQzMmE1MWU2MWRhNDM3NmRmOTQ0NmVmMTExNGVhNmJmMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKQEAgLTg0LDE3ICs4NCwxNyBAQCBDYWNoZTo6Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBSZWY8U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8QwogewogI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBpZiAo
b3B0aW9ucy5jb250YWlucyhDYWNoZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7
Ci0gICAgICAgIG1fbG93UG93ZXJNb2RlTm90aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJs
ZWQpIHsKKyAgICAgICAgbV9sb3dQb3dlck1vZGVOb3RpZmllciA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxl
ZCkgewogICAgICAgICAgICAgQVNTRVJUKFdURjo6UnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAg
ICAgICAgaWYgKGlzTG93UG93ZXJNb2RlRW5hYmxlZCkKICAgICAgICAgICAgICAgICBtX3NwZWN1
bGF0aXZlTG9hZE1hbmFnZXIgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIpOwotICAgICAgICAgICAg
ICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRp
dmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
bV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgICAgIGlmICghbV9sb3dQb3dlck1vZGVOb3RpZmllci0+aXNMb3dQb3dlck1vZGVFbmFi
bGVkKCkpCi0gICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwor
ICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKICAgICB9CiAjZW5kaWYK
IApAQCAtMzc1LDEyICszNzUsMTIgQEAgdm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRy
aWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICAKIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3Qp
LCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWlu
Z1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCks
IHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VD
YWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29y
ZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3Qp
LCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVl
c3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVl
c3QsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtl
eShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZh
cnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC00NTcsNyArNDU3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6dXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXEKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gZXhpc3RpbmdF
bnRyeS5yZXNwb25zZSgpOwogICAgIFdlYkNvcmU6OnVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVy
UmV2YWxpZGF0aW9uKHJlc3BvbnNlLCB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCi0gICAgYXV0byB1
cGRhdGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnkua2V5KCks
IHJlc3BvbnNlLCBleGlzdGluZ0VudHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWlu
Z1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCks
IG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gbWFr
ZVVuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50
cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29y
a1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCByZXNw
b25zZSkpOwogICAgIGF1dG8gdXBkYXRlUmVjb3JkID0gdXBkYXRlRW50cnktPmVuY29kZUFzU3Rv
cmFnZVJlY29yZCgpOwogCiAgICAgbV9zdG9yYWdlLT5zdG9yZSh1cGRhdGVSZWNvcmQsIHsgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCmluZGV4IDdhZTFjMmZlN2RjZTYwN2I5ZjhhNTNkOTlhMWJkNzk4NTM5
OWJjZjEuLjFmNDE0NGE4ZmFlODdiZjVmYzVjODNlZDkwMmI2ZmYwOGEwNjRhZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNv
ZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5
OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5
KQogewotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihzdG9yYWdlRW50
cnkpOworICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihzdG9yYWdlRW50cnkpOwog
CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFk
ZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShlbnRyeS0+bV9yZXNwb25zZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKaW5kZXggZTdmYzViODkzMjJiOTkxYzcwOWQwNjhiZTJkZTc3NzM4M2NiNGJjMC4uMjIw
MTk0MTdhOGM1MDFiZjk1NWJmNTMyMmMwNjljYjAzMmE0MWU1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNjAsNyArNjAsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNw
ZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZy
YW1lSQogICAgIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gQ29udGVudFNuaWZm
aW5nUG9saWN5OjpEb05vdFNuaWZmQ29udGVudDsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5ID0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZm
OwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IG1fb3JpZ2luYWxSZXF1ZXN0OwotICAgIG1fbmV0
d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOworICAgIG1fbmV0d29ya0xv
YWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQogCiBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVj
dWxhdGl2ZUxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5jcHAKaW5kZXggMWNkNmI0OTJmODFhNWE4MWQyNGNhNzkxMDhkYTZiMTllMGMwMDNmMS4uNTdl
OGU3NTk5YjFjY2E2NWIyNmUwNmVjMzg3MmVlMmRkOTQ5ZGY2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgY2xh
c3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZD
b3VudGVkPFBlbmRpbmdGcmFtZUwKICAgICB2b2lkIHJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIG1fc3Vi
cmVzb3VyY2VMb2Fkcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJl
cXVlc3QsIHN1YnJlc291cmNlS2V5KSk7CisgICAgICAgIG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBl
bmQobWFrZVVuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNlS2V5KSk7
CiAgICAgICAgIG1fbG9hZEh5c3RlcmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CiAgICAgfQogCkBA
IC0zNTUsNyArMzU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZShj
b25zdCBLZXkmIHN0b3JhZ2VLZXksIFJldHJpZXZlQ29tcGxldGlvbkgKICAgICBBU1NFUlQobV9w
ZW5kaW5nUHJlbG9hZHMuY29udGFpbnMoc3RvcmFnZUtleSkpOwogICAgIC8vIEZJWE1FOiBUaGlz
IGJyZWFrcyBpbmNyZW1lbnRhbCBsb2FkaW5nIHdoZW4gdGhlIHJldmFsaWRhdGlvbiBpcyBub3Qg
c3VjY2Vzc2Z1bC4KICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcGVuZGluZ1JldHJpZXZlUmVxdWVz
dHMuZW5zdXJlKHN0b3JhZ2VLZXksIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+PigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CiAgICAgfSk7
CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNv
bgogICAgIEFTU0VSVChlbnRyeSk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bmVlZHNWYWxpZGF0aW9u
KCkpOwogICAgIGF1dG8ga2V5ID0gZW50cnktPmtleSgpOwotICAgIG1fcHJlbG9hZGVkRW50cmll
cy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3ZlKGVudHJ5
KSwgV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJRF0gewor
ICAgIG1fcHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPFByZWxvYWRlZEVudHJ5
PihXVEZNb3ZlKGVudHJ5KSwgV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtl
eSwgZnJhbWVJRF0gewogICAgICAgICBhdXRvIHByZWxvYWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRF
bnRyaWVzLnRha2Uoa2V5KTsKICAgICAgICAgQVNTRVJUKHByZWxvYWRlZEVudHJ5KTsKICAgICAg
ICAgaWYgKHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpKQpAQCAtNDQ5LDcgKzQ0OSw3
IEBAIGJvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhj
b25zdCBLZXkmIGtleSwgRW50cnkqIGVudHJ5CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGZvciAoYXV0byYgY29tcGxldGlvbkhhbmRsZXIgOiAqY29tcGxldGlvbkhhbmRsZXJzKQotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KCpl
bnRyeSkgOiBudWxscHRyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkgPyBtYWtl
VW5pcXVlPEVudHJ5PigqZW50cnkpIDogbnVsbHB0cik7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRh
dGVTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlcwogCiAgICAgTE9HKE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgU3BlY3Vs
YXRpdmVseSByZXZhbGlkYXRpbmcgJyVzJzoiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgYXV0byByZXZhbGlkYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRp
dmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVu
dHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CisgICAgYXV0byByZXZhbGlkYXRvciA9
IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRp
b25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVz
dCwgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CiAg
ICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCAhcmV2YWxpZGF0ZWRFbnRyeS0+bmVl
ZHNWYWxpZGF0aW9uKCkpOwogICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgcmV2
YWxpZGF0ZWRFbnRyeS0+a2V5KCkgPT0ga2V5KTsKIApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25z
dCBHbG9iYWxGcmFtZUlEJiBmCiAgICAgICAgICAgICBwcmVsb2FkRW50cnkoa2V5LCBzdWJyZXNv
dXJjZUluZm8sIGZyYW1lSUQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5vdCBwcmVs
b2FkaW5nICclcycgYmVjYXVzZSBpdCBpcyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwga2V5LmlkZW50
aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmll
cy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZy
YW1lSURdIHsKKyAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBtYWtl
VW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgICAg
ICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShtX2NhY2hlLm5ldHdv
cmtQcm9jZXNzKCksIGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZW50cnlSaWdodGx5
Tm90V2FybWVkVXBLZXkoKSk7CiAgICAgICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVz
LnJlbW92ZShrZXkpOwogICAgICAgICAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
YmJmYzY0OTg5MGY5NWNjN2UwNGNlODJhNGZlMzI5NDRkYzFhYjFmMC4uODA0YzQyOThjYzNlM2My
ODE0ZmRiYzJiYmI2Y2JlZTU3NTg0YWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0yOTAs
OCArMjkwLDggQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAgICAgTE9HKE5ldHdvcmtD
YWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIHN5bmNocm9uaXppbmcgY2FjaGUiKTsKIAog
ICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcmVjb3JkRmlsdGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKLSAgICAgICAgYXV0byBibG9iRmls
dGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAgYXV0byBy
ZWNvcmRGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRv
IGJsb2JGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwogCiAgICAgICAgIC8v
IE1vc3Qgb2YgdGhlIGRpc2sgc3BhY2UgdXNhZ2UgaXMgaW4gYmxvYnMgaWYgd2UgYXJlIHVzaW5n
IHRoZW0uIEFwcHJveGltYXRlIHJlY29yZHMgZmlsZSBzaXplcyB0byBhdm9pZCBleHBlbnNpdmUg
c3RhdCgpIGNhbGxzLgogICAgICAgICBzaXplX3QgcmVjb3Jkc1NpemUgPSAwOwpAQCAtNDg5LDcg
KzQ4OSw3IEBAIHZvaWQgU3RvcmFnZTo6cmVhZFJlY29yZChSZWFkT3BlcmF0aW9uJiByZWFkT3Bl
cmF0aW9uLCBjb25zdCBEYXRhJiByZWNvcmREYXRhKQogICAgIH0KIAogICAgIHJlYWRPcGVyYXRp
b24uZXhwZWN0ZWRCb2R5SGFzaCA9IG1ldGFEYXRhLmJvZHlIYXNoOwotICAgIHJlYWRPcGVyYXRp
b24ucmVzdWx0UmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3Jh
Z2U6OlJlY29yZCB7CisgICAgcmVhZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBtYWtlVW5pcXVl
PFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3JkIHsKICAgICAgICAgbWV0YURhdGEua2V5
LAogICAgICAgICBtZXRhRGF0YS50aW1lU3RhbXAsCiAgICAgICAgIGhlYWRlckRhdGEsCkBAIC03
NTgsNyArNzU4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgcmV0cmlldmVGcm9tTWVtb3J5
KGNvbnN0IFQmIG9wZXJhdGlvbnMsIGNvbnN0IEtleSYga2V5LAogICAgICAgICBpZiAob3BlcmF0
aW9uLT5yZWNvcmQua2V5ID09IGtleSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0
b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGZvdW5kIHdyaXRlIG9wZXJhdGlvbiBpbiBwcm9ncmVz
cyIpOwogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZWNvcmQgPSBvcGVy
YXRpb24tPnJlY29yZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29yZCksIHsgfSk7CisgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29y
ZCksIHsgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBL
ZXkmIGtleSwgdW5zaWduZWQgcHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlvbkhhbmQKICAgICBp
ZiAocmV0cmlldmVGcm9tTWVtb3J5KG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLCBrZXksIGNvbXBs
ZXRpb25IYW5kbGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWFkT3BlcmF0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkT3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byByZWFkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxS
ZWFkT3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
ICAgICByZWFkT3BlcmF0aW9uLT50aW1pbmdzLnN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogICAgIHJlYWRPcGVyYXRpb24tPnRpbWluZ3MuZGlzcGF0Y2hDb3VudEF0U3RhcnQgPSBt
X3JlYWRPcGVyYXRpb25EaXNwYXRjaENvdW50OwpAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgU3Rv
cmFnZTo6c3RvcmUoY29uc3QgUmVjb3JkJiByZWNvcmQsIE1hcHBlZEJvZHlIYW5kbGVyJiYgbWFw
cGVkQm9keUhhbmRsZXIsCiAgICAgaWYgKCFtX2NhcGFjaXR5KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIHdyaXRlT3BlcmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZU9wZXJhdGlv
bj4oKnRoaXMsIHJlY29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHdyaXRlT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxX
cml0ZU9wZXJhdGlvbj4oKnRoaXMsIHJlY29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBtX3BlbmRpbmdXcml0ZU9wZXJhdGlv
bnMucHJlcGVuZChXVEZNb3ZlKHdyaXRlT3BlcmF0aW9uKSk7CiAKICAgICAvLyBBZGQga2V5IHRv
IHRoZSBmaWx0ZXIgYWxyZWFkeSBoZXJlIGFzIHdlIGRvIGxvb2t1cHMgZnJvbSB0aGUgcGVuZGlu
ZyBvcGVyYXRpb25zIHRvby4KQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZl
cnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRy
YXZlcgogICAgIEFTU0VSVCh0cmF2ZXJzZUhhbmRsZXIpOwogICAgIC8vIEF2b2lkIG5vbi10aHJl
YWQgc2FmZSBGdW5jdGlvbiBjb3BpZXMuCiAKLSAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhpcyksIHR5
cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikpOworICAgIGF1dG8gdHJhdmVyc2VP
cGVyYXRpb25QdHIgPSBtYWtlVW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlz
KSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CiAgICAgYXV0byYgdHJh
dmVyc2VPcGVyYXRpb24gPSAqdHJhdmVyc2VPcGVyYXRpb25QdHI7CiAgICAgbV9hY3RpdmVUcmF2
ZXJzZU9wZXJhdGlvbnMuYWRkKFdURk1vdmUodHJhdmVyc2VPcGVyYXRpb25QdHIpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dWJyZXNvdXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAppbmRleCA3Yjg4OTIyOTk1MzlkYjM0
YzViMzkxNGQzYjIxNGNlOGI4MTQzYjk4Li42M2FkMDQwOWZkZDIzNmY2ZTNjMmNhMzBlODdlNGE3
YzBhMjk1OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAt
OTMsNyArOTMsNyBAQCBTdG9yYWdlOjpSZWNvcmQgU3VicmVzb3VyY2VzRW50cnk6OmVuY29kZUFz
U3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRy
eT4gU3VicmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6
UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7Ci0gICAgYXV0byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlx
dWU8U3VicmVzb3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRyeSA9IG1h
a2VVbmlxdWU8U3VicmVzb3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0
b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5
LT5tX3N1YnJlc291cmNlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAppbmRleCBkOGEwNTk0MGQ3MTk3ZWIzMjI1YTM2YmM1
MTNhMmRiNjEwZGIwY2Q4Li43MTA0ZDFmNzRjZDcwMWNiY2VjZmFiNTdkMjRlYmZmOGRhZWJlZGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAKQEAgLTczLDggKzczLDggQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJh
dGlvblRpbWVvdXQgeyA1X3MgfTsKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJM
JiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9zZXNzaW9u
UHJlZmV0Y2hlcykKLSAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9u
UHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNo
ZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAg
bV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwor
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmws
IG1ha2VVbmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2UpLCBXVEZN
b3ZlKGJ1ZmZlcikpKTsKICAgICAvLyBMaW1pdCBwcmVmZXRjaGVzIGZvciBzYW1lIHVybCB0byAx
LgogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2
LDkgKzg2LDkgQEAgdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RV
cmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6
c3RvcmVSZWRpcmVjdChjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAgICBt
X3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+
KCk7CisgICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50
cmllc01hcD4oKTsKICAgICByZWRpcmVjdFJlcXVlc3QuY2xlYXJQdXJwb3NlKCk7Ci0gICAgbV9z
ZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0
Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVkaXJl
Y3RSZXF1ZXN0KSkpOworICAgIG1fc2Vzc2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0VXJsLCBt
YWtlVW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
LCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCkpKTsKICAgICBtX3Nlc3Npb25FeHBpcmF0aW9uTGlz
dC5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHJlcXVlc3RVcmwsIFdhbGxUaW1lOjpub3coKSkpOwog
ICAgIGlmICghbV9leHBpcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9leHBpcmF0
aW9uVGltZXIuc3RhcnRPbmVTaG90KGV4cGlyYXRpb25UaW1lb3V0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXggYTE3MTBi
YWU5ZTVhODg1MjZjZWZhM2IzOWFhNzg4ZmFhZjJjZmEwZS4uYTI1MTUyMGIzMWVhYzkyMWMyMmQz
MTE1MWQ2ZDIzMWExYmVkMTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgUHJlZmV0
Y2hDYWNoZSB7CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgc3RydWN0IEVudHJ5IHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBFbnRyeShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwog
ICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDA3N2YxNmZhNjUwNjUyYzc4
N2E2ZjAzMTYwOTA5MDI2OGViYjhhYzAuLmNjZTI2YWNmYjA0Y2Y3MDc0ZTc2M2Y1YmJjOGU0YTVl
OThhMTVjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0
IE5ldHdvcmtQcm9jZXNzQwogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogUmV0YWluUHRyPENGRGF0
YVJlZj4gTmV0d29ya1Byb2Nlc3M6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QK
QEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NE
aWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCkKIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBO
ZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogewogICAgIGlmICgh
bV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcikKLSAgICAgICAgbV9uZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI+
KCk7CisgICAgICAgIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgPSBtYWtlVW5pcXVlPE5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyPigpOwogICAgIHJldHVybiAqbV9uZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDFmOGQ0Y2JmYzdhNTMz
OGNmMGVmNTI0ZTlhNjc1NDMxYjQwMTdmYzkuLjA5YjI0M2E2ZDdjODE2OGU3NDU5OTRjZGU4NzM3
NDdiNjc1NTQ4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTgwMCw3ICs4MDAsNyBAQCAtICh2
b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vz
c2lvbkRhdGFUYXNrICopZGF0YQogICAgICAgICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHBy
b3RlY3RlZE5ldHdvcmtEYXRhVGFzaygqbmV0d29ya0RhdGFUYXNrKTsKICAgICAgICAgYXV0byBk
b3dubG9hZElEID0gbmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpOwogICAgICAg
ICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3du
bG9hZE1hbmFnZXIoKTsKLSAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRh
c2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxl
bmFtZSgpKTsKKyAgICAgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpEb3du
bG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9u
LT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAg
ICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2Fk
KCpkb3dubG9hZCk7CiAgICAgICAgIEFTU0VSVChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdv
cmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOwogICAgICAgICBkb3dubG9h
ZC0+ZGlkQ3JlYXRlRGVzdGluYXRpb24obmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRM
b2NhdGlvbigpKTsKQEAgLTg5NSw3ICs4OTUsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OnNldENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRl
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2Vz
cywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5
RGljdGlvbmFyeShjb25zdCBVUkwmIGh0dHBQcm94eSwgY29uc3QgVVJMJiBodHRwc1Byb3h5KQpA
QCAtMTI0MSw3ICsxMjQxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdv
cmtTZXNzaW9uQ29jb2E6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1MKIHsKICAgICAvLyBG
SVhNRTogVXNlIHByb3RvY29sLgogICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25XZWJTb2NrZXRU
YXNrPiB0YXNrID0gW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5nZXQoKSB3ZWJTb2Nr
ZXRUYXNrV2l0aFJlcXVlc3Q6IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5
VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRU
YXNrJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtQcm9jZXNzQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAppbmRleCBiZTY4MDFmMzBjZGY0OTAwMjU0YzIyNGI5
YjExZmJkZjczZmUyZTMxLi41YmUxNzAyNjZmNDViOGJmNzJlZjU2YjEwMDg3Y2I1OWJiNTZkYmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1By
b2Nlc3NDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya1Byb2Nlc3NDdXJsLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBO
ZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25z
dAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWxsb3dT
cGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2Vy
dGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhvc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKaW5kZXggZDQ3MDlh
NWU0YWM4YTJmYjZhY2ViNTZjNTdlYmYwYjVjNzQwZDQ1Ni4uZTE4YTQzOTBiMTg4YTI3ZTkzMThj
NTI0MDQ1NWYwNjRjZjZiZDY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFz
cyBOZXR3b3JrU2Vzc2lvbkN1cmwgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVi
bGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVy
cykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+KG5ldHdv
cmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Np
b25DdXJsKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMm
Jik7CiAgICAgfk5ldHdvcmtTZXNzaW9uQ3VybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0lPUy5tbQppbmRleCAyMzc0NTI4OGEwNmQwMTE0NTkxOTY4YjUwODZkZWI1ZjQ1YWEw
YWM2Li5jOGI4NmM1MTExMzdlMzc0ZWMwYmUwYzBlYjViM2ZlYjRmMDliZDFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yKCkKIHsKICAgICBpZiAoIW1fcGF5bWVu
dENvb3JkaW5hdG9yKQotICAgICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAgbV9wYXlt
ZW50Q29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Pigq
dGhpcyk7CiAgICAgcmV0dXJuICptX3BheW1lbnRDb29yZGluYXRvcjsKIH0KIApAQCAtODIsNyAr
ODIsNyBAQCBjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXlt
ZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbgogCiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpw
YXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JiBjb29yZGluYXRvciwgUEtQYXltZW50UmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI+
KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0
aG9yaXphdGlvbkNvbnRyb2xsZXI+KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2Fn
ZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdS
ZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXgg
ODdlODViNTVlOTFlYzY5NmFjMTViMWM1ZjFhMTEzNTFhM2UyNmFiNy4uYzkzNjRjNWQwNGFiMzYz
MTcwMjBiMmNhZTI5ZjA3ZWI3YTk1YmM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtODk3LDcg
Kzg5Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93
bmxvYWRPdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoR19PVVRQVVRfU1RSRUFNKG91dHB1dFN0cmVh
bS5sZWFrUmVmKCkpKTsKIAogICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IG1fc2Vzc2lvbi0+
bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsKLSAgICBhdXRvIGRvd25sb2FkID0g
c3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3du
bG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFu
YWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCks
IHN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgIGF1dG8qIGRvd25sb2FkUHRyID0gZG93bmxvYWQu
Z2V0KCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKG1f
cGVuZGluZ0Rvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBkb3dubG9hZFB0ci0+
ZGlkQ3JlYXRlRGVzdGluYXRpb24obV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwCmluZGV4IDgzYzJmMjhlYTVjNzAzNGRhYTdkYjY0NjIxYjQ0NGVkZDVkOTZhZjkuLjdh
NzQ4MWY3ZDQyNWYwMjMzN2EwYzEwYWRmOWQ2NTRmNzBlYzdkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3Bw
CkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhib29s
IGlnbm9yZVRMU0Vycm9ycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKaW5kZXggNzM1NTI1N2JlZGExZTVhZGNk
ZTU1NGU2YmQzM2JjZTllMmY2MGQwZC4uOWM4ZmI4ZDY5MjlkODE3NzdjZDE0NTExNGVlYmZmMGY4
MDA4ZjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIE5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3Ms
IHBhcmFtZXRlcnMpCi0gICAgLCBtX25ldHdvcmtTZXNzaW9uKHN0ZDo6bWFrZV91bmlxdWU8U291
cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCisgICAgLCBtX25ldHdvcmtTZXNzaW9uKG1h
a2VVbmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCiB7CiAgICAgYXV0byog
c3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKICAgICBBU1NFUlQoc3Rv
cmFnZVNlc3Npb24pOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2Nr
ZXRUYXNrPiBOZXR3b3JrU2Vzc2lvblNvdXA6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1Nv
CiAgICAgcmVxdWVzdC51cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZS5nZXQoKSk7CiAgICAg
aWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygid3NzIikpCiAgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc291cE1lc3NhZ2UuZ2V0KCksICJuZXR3b3JrLWV2ZW50IiwgR19DQUxMQkFDSyh3ZWJT
b2NrZXRNZXNzYWdlTmV0d29ya0V2ZW50Q2FsbGJhY2spLCBudWxscHRyKTsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBzb3VwU2Vzc2lvbigpLCBz
b3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNv
Y2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdlLmdldCgpLCBwcm90
b2NvbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCmluZGV4IGY5ZWY0
YmI1NDMwYmJmNzNiMDRhMGUzYmVjMjQ3OTI4ZDU5ZTcxNmIuLjQ2NmIyNzgyYmY5M2M3NzA3MGY3
OTdkZDM2NTIzNGNjMWRlM2ZiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xh
c3MgTmV0d29ya1Nlc3Npb25Tb3VwIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUo
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Tb3VwPihuZXR3
b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgfQogICAgIE5ldHdvcmtTZXNz
aW9uU291cChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvblNvdXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtLmNwcAppbmRleCA2ZGRjODFhMzZkODQ5Y2JjMjgzNzkzYjYxNzA2N2EyN2UyOWQ5MWYw
Li5jMTkzNTAwMTU3YTJhZmI5ZGE0NmU5M2FiNGVmNTUwODQ2OTQ2NDdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMoR0lucHV0U3RyZWFtKiBpbnB1dFN0
cmVhbSwgdm9pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdHJlYW0tPnByaXYtPnBl
bmRpbmdBc3luY1JlYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1vdmUo
dGFzayksIGJ1ZmZlciwgY291bnQpOworICAgIHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5jUmVh
ZCA9IG1ha2VVbmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVmZmVyLCBjb3Vu
dCk7CiB9CiAKIHN0YXRpYyBnc3NpemUgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRG
aW5pc2goR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdF
cnJvcioqIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaAppbmRleCA4ZjIwNWNlMDI5NzEzZDhi
YTIxM2YxNDNiYTcxYmIxMTQ3NTJkZWY1Li4yMmFiZGVjNjlkYjI0NWE0Y2Y5ODNmMjQ3YjM4Zjcy
ZDkwMGE2ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtSVENQcm92aWRlcjsKIAogY2xhc3MgTGliV2Vi
UlRDU29ja2V0Q2xpZW50IGZpbmFsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUg
eyBVRFAsIFNlcnZlclRDUCwgQ2xpZW50VENQLCBTZXJ2ZXJDb25uZWN0aW9uVENQIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5T
UmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZTc4NjU2OGZmNTA1YTdiODcxNzg3MGRmNTdmYTU3ZDE1
ZjVkNzc2My4uOTI2NjY4YzM4ZmZmNzA4YWU1MDJmNThmZDQxNTI4ODAzZWM1NTVjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdp
c3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a01ETlNSZWdpc3Rlci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lz
dGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1
bWUKIH0KIAogc3RydWN0IFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0IHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Qo
UmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIFN0cmluZyYmIG5hbWUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgOiBj
b25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgICAgICwgcmVxdWVzdElkZW50aWZp
ZXIocmVxdWVzdElkZW50aWZpZXIpCkBAIC0xMzUsNyArMTM2LDcgQEAgdm9pZCBOZXR3b3JrTURO
U1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBQ
QUw6OlNlc3MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVuZGluZ1JlcXVl
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVm
KG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShu
YW1lKSwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxQ
ZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdD4obWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpKSwgcmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHNlc3Npb25JRCk7CiAgICAg
YXV0byogcmVjb3JkID0gJnBlbmRpbmdSZXF1ZXN0LT5yZWNvcmQ7CiAgICAgYXV0byBlcnJvciA9
IEROU1NlcnZpY2VSZWdpc3RlclJlY29yZChzZXJ2aWNlLAogICAgICAgICByZWNvcmQsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9u
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
TW9uaXRvci5jcHAKaW5kZXggMzUzZWFjOGNlMTFiNjkwNmVmYWRkMmZkMjcxOGI5N2FiNTJjZGE0
ZC4uYWI3MDZkYzJlOTM0YTlhN2VmOTkyNjg5Nzk3NGJkYzc1NGVhM2RmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25p
dG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIE5ldHdvcmtSVENNb25pdG9yOjpzdGFydFVw
ZGF0aW5nKCkKIHsKICAgICBtX2lzU3RhcnRlZCA9IHRydWU7CiAgICAgbV9ydGNQcm92aWRlci5j
YWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzXSgpIHsKLSAgICAgICAgbV9tYW5hZ2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAgICAgIG1fbWFu
YWdlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNOZXR3b3Jr
TWFuYWdlcj4oKTsKICAgICAgICAgbV9tYW5hZ2VyLT5TaWduYWxOZXR3b3Jrc0NoYW5nZWQuY29u
bmVjdCh0aGlzLCAmTmV0d29ya1JUQ01vbml0b3I6Om9uTmV0d29ya3NDaGFuZ2VkKTsKICAgICAg
ICAgbV9tYW5hZ2VyLT5TdGFydFVwZGF0aW5nKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cAppbmRleCBhNWFjNTcyMTM3OWRiM2QxYjI1ODc1NTg2MTAzMGJiYTRkYjllYjhlLi4xNWQ0NGQw
YWQ5ZGIwZjNiMDU5OWUxYTMzZWZjZmRiODk2MWE2NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgTmV0d29ya1JUQ1Byb3ZpZGVyOjpOZXR3b3JrUlRDUHJvdmlkZXIo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24KICAgICA6IG1fY29ubmVj
dGlvbigmY29ubmVjdGlvbikKICAgICAsIG1fcnRjTW9uaXRvcigqdGhpcykKICAgICAsIG1fcnRj
TmV0d29ya1RocmVhZChjcmVhdGVUaHJlYWQoKSkKLSAgICAsIG1fcGFja2V0U29ja2V0RmFjdG9y
eShtYWtlVW5pcXVlUmVmPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PihtX3J0Y05ldHdv
cmtUaHJlYWQuZ2V0KCkpKQorICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVS
ZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5Piht
X3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkpKQogewogI2lmIGRlZmluZWQoTkRFQlVHKQogICAgIHJ0
Yzo6TG9nTWVzc2FnZTo6TG9nVG9EZWJ1ZyhydGM6OkxTX05PTkUpOwpAQCAtMTA0LDcgKzEwNCw3
IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQodWludDY0X3QgaWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgdHlw
ZSkpOworICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tl
dENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgdHlwZSkpOwogfQog
CiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlVURQU29ja2V0KHVpbnQ2NF90IGlkZW50
aWZpZXIsIGNvbnN0IFJUQ05ldHdvcms6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90
IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBOZXR3
b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVpbnQ2NF90IG5ld0MKIHsKICAgICBjYWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBpZGVu
dGlmaWVyLCBuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllcl0oKSB7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQgPSBtX3BlbmRpbmdJbmNv
bWluZ1NvY2tldHMudGFrZShuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllcik7Ci0gICAgICAg
IGFkZFNvY2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENs
aWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0
Q2xpZW50OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQKSk7CisgICAgICAgIGFkZFNvY2tldChp
ZGVudGlmaWVyLCBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwg
KnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2
ZXJDb25uZWN0aW9uVENQKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMzgzODJiMDlkNGZiM2JlMjY0Zjg5Yjc3ODQxYTQxZDdj
MDhjYWMwNS4uYzVlZjZkOTlhNTYwZGQxNDg4ZjE4NDk5NWFlOGE3YjE2ZDlhZDI1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTM0Myw3ICszNDMsNyBA
QCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2Fn
ZShXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3lu
Y01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0g
bWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVz
dElEKTsKIAogICAgIC8vIEhhbmQgb2ZmIGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8g
dGhlIHdvcmsgcXVldWUgbWVzc2FnZSByZWNlaXZlci4KICAgICB3b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIp
OwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3Bh
dGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkKIAogc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IENvbm5l
Y3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1l
LCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBl
bmNvZGVyLT5zZXRJc1N5bmNNZXNzYWdlKHRydWUpOwogCiAgICAgLy8gRW5jb2RlIHRoZSBzeW5j
IHJlcXVlc3QgSUQuCkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjplbmFibGVJ
bmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZygpCiAgICAgaWYgKG1faW5jb21pbmdNZXNzYWdlc1Ro
cm90dGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0
aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMpOworICAgIG1faW5jb21pbmdNZXNzYWdlc1Ro
cm90dGxlciA9IG1ha2VVbmlxdWU8TWVzc2FnZXNUaHJvdHRsZXI+KCp0aGlzLCAmQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VzKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpwb3N0
Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTg0Myw3ICs4NDMs
NyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2Rl
cikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVx
dWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQ
QyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09ICJXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyIpIHsKICAgICAgICAgaWYgKCFtX2Z1
bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDIwZjVlYzViMjAyYmVjMmJkZjU4ZjAyMGViZGVl
ZjgzMTQ5MzExYmYuLmFkYzRhYWQ5ODgxOGZhMDZhZmM2YmU4OTYxNDVkNTYzMTU4MzJkYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTQzMyw3ICs0MzMsNyBA
QCBib29sIENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPgogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5
bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRp
b25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZl
ck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1v
dmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIENvbm5l
Y3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5k
bGVyLCB1aW50NjRfdAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVz
c2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5j
b2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6
bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbmV4dEFz
eW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCBjY2EwNzM5MGFkZWM0NDZkZTc0NjZjZjhlMTAxMjNj
Mjc5Mzg1MzUyLi5mZDUxNzAxNzEyYjA2MjlkNDcyNTJkMDQwODk2YzY0ZmNiY2JiMmFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3cmFwcGVkTWVzc2FnZSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rl
cj4od3JhcHBlZE1lc3NhZ2UuZGF0YSgpLCB3cmFwcGVkTWVzc2FnZS5zaXplKCksIG51bGxwdHIs
IFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPih3
cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RG
TW92ZShhdHRhY2htZW50cykpOwogfQogCiBzdGF0aWMgaW5saW5lIGNvbnN0IHVpbnQ4X3QqIHJv
dW5kVXBUb0FsaWdubWVudChjb25zdCB1aW50OF90KiBwdHIsIHVuc2lnbmVkIGFsaWdubWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA4NTQ1MmNk
YTdlMDQ1ZTQ0NTVlMDdiOTNiYWZjYTM1YjEwMjAwMTFlLi5hNzQ5YWFiODcwMDU0Y2ViNjkwZTVm
MTRmNDA3NTYzZmZjZDBmOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogICAg
IH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlz
dGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0g
KGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFt
ZSgpLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5
bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKICAgICAgICAgKmVuY29k
ZXIgPDwgbGlzdGVuZXJJRDsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZN
b3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IDNkNmYzNDI4OTJiYzg4MzkwNjc4ZThjMzY0NjM5
MTEwZGU0ZjU3MjYuLjc3MTQ0OGE0NGQwODg2ZGQwMWJiMGMyZGU2NGRjOWE0Mjg2MjdhMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQzLDcgKzQz
LDcgQEAgY2xhc3MgTWVzc2FnZVNlbmRlciB7CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0
KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAgYXV0byBlbmNvZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgICAgICAKICAgICAg
ICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5t
bQppbmRleCAzNzAyYWNjN2RmNTFiZDg0NmI5M2FmNjRiZjA3MGE0YzEwMDM5MTlmLi44N2RkMjhm
ODA4Njc4MmNlMmEzZGY3OTBmNGFjMGU2ZDc0OWRhYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC05Miw3ICs5Miw3
IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV94cGNDb25uZWN0aW9uKHhwY0Nvbm5lY3Rpb24pCiAg
ICAgICAgICwgbV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvbm5lY3Rp
b25UZXJtaW5hdGlvbldhdGNoZG9nOjp3YXRjaGRvZ1RpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgLCBtX2Fzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29u
bmVjdGlvbi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0
OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCisgICAgICAgICwgbV9hc3NlcnRpb24obWFr
ZVVuaXF1ZTxXZWJLaXQ6OlByb2Nlc3NBbmRVSUFzc2VydGlvbj4oeHBjX2Nvbm5lY3Rpb25fZ2V0
X3BpZChtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpLCAiQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hk
b2ciX3MsIFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpKQogI2VuZGlmCiAgICAg
ewogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKQEAgLTIy
MCw3ICsyMjAsNyBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVj
dGVkID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVz
c2FnZSwgd2hpY2ggY29udGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4K
LSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwg
IkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIsIDApOwogICAgICAg
ICBlbmNvZGVyLT5lbmNvZGUoTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9N
QUtFX1NFTkQpKTsKIAogICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwpAQCAtNDEyLDcg
KzQxMiw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURl
Y29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWludDhfdCogYm9keSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlciArIDEpOwogICAgICAgICBzaXplX3Qg
Ym9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIHNpemVvZihtYWNoX21zZ19oZWFkZXJfdCk7
CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4oYm9keSwgYm9keVNp
emUsIG51bGxwdHIsIFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1l
bnQ+IHsgfSk7CiAgICAgfQogCiAgICAgYm9vbCBtZXNzYWdlQm9keUlzT09MID0gaGVhZGVyLT5t
c2doX2lkID09IG91dE9mTGluZUJvZHlNZXNzYWdlSUQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21z
Z19oZWFkZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihkZXNjcmlwdG9yLT5vdXRfb2ZfbGluZS5hZGRyZXNzKTsKICAgICAg
ICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6ZSA9IGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLnNpemU7
CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHks
IG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3Ro
KSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNz
YWdlQm9keVNpemUsIFtdKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgewog
ICAgICAgICAgICAgdm1fZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9j
YXN0PHZtX2FkZHJlc3NfdD4oYnVmZmVyKSwgbGVuZ3RoKTsKICAgICAgICAgfSwgV1RGTW92ZShh
dHRhY2htZW50cykpOwogICAgIH0KQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBo
ZWFkZXIpCiAgICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBkZXNjcmlwdG9yRGF0YTsKICAgICBz
aXplX3QgbWVzc2FnZUJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUgLSAoZGVzY3JpcHRvckRh
dGEgLSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihoZWFkZXIpKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51
bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNv
ZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFj
aG1lbnRzKSk7CiB9CiAKIC8vIFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMg
aW5jbHVkZSB0aGUgbWF4aW11bSB0cmFpbGVyIHNpemUuCkBAIC01MjYsNyArNTI2LDcgQEAgdm9p
ZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgcmV0dXJu
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRp
b24oc3RkOjptYWtlX3VuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKKyAgICBk
ZWNvZGVyLT5zZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKG1ha2VVbmlxdWU8SW1wb3J0YW5jZUFzc2Vy
dGlvbj4oaGVhZGVyKSk7CiAjZW5kaWYKIAogICAgIGlmIChkZWNvZGVyLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSAiSW5pdGlhbGl6
ZUNvbm5lY3Rpb24iKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCmluZGV4IDYzYjZiZTcyNzFlNDQ1ODgzOTUwNWFhOTE1ZTM4NzNm
ODUxNGRlZGQuLjc3YWY5YjI4NTg0NTI2YmI3MGM3ZmZjOGUzMjU2YTNiYWExM2EyODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
CkBAIC0yMTYsNyArMjE2LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAg
ICAgaWYgKG1lc3NhZ2VJbmZvLmlzQm9keU91dE9mTGluZSgpKQogICAgICAgICBtZXNzYWdlQm9k
eSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VCb2R5LT5kYXRhKCkpOwog
Ci0gICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9k
eSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykp
OworICAgIGF1dG8gZGVjb2RlciA9IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1l
c3NhZ2VJbmZvLmJvZHlTaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIAog
ICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiAKQEAgLTQ4Miw3
ICs0ODIsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdl
JiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChlcnJu
byA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxPQ0spIHsKICNpZiBVU0UoR0xJQikKLSAg
ICAgICAgICAgIG1fcGVuZGluZ091dHB1dE1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXhN
ZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1lc3NhZ2UpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ091
dHB1dE1lc3NhZ2UgPSBtYWtlVW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1lc3Nh
Z2UpKTsKICAgICAgICAgICAgIG1fd3JpdGVTb2NrZXRNb25pdG9yLnN0YXJ0KG1fc29ja2V0Lmdl
dCgpLCBHX0lPX09VVCwgbV9jb25uZWN0aW9uUXVldWUtPnJ1bkxvb3AoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKEdJT0NvbmRpdGlvbiBjb25kaXRpb24pIC0+IGdi
b29sZWFuIHsKICAgICAgICAgICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19PVVQpIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ091dHB1dE1lc3NhZ2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IDY0
MGY0NTI5OWUzYjI2NmUwMjY5Y2NjY2M5NDUyYjNiYTU3OWVmYjEuLjVhZGZkODJiZWNhNDZkYjAy
NDQ3ZThiY2I2ZDM4NGMyYzAxNTZhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENvbm5l
Y3Rpb246OnJlYWRFdmVudEhhbmRsZXIoKQogICAgICAgICBpZiAoIW1fcmVhZEJ1ZmZlci5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtZXNzYWdlLCBsZXQncyBkaXNwYXRj
aCBpdC4KICAgICAgICAgICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cygwKTsKLSAg
ICAgICAgICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obV9yZWFk
QnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRh
Y2htZW50cykpOworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVy
PihtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZN
b3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAgICAgICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdU
Rk1vdmUoZGVjb2RlcikpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCmluZGV4
IGRkMmI2NmE3Y2ExOTU5MWI2ZWU2N2I4ZjI4NGZkMjU0YTM4Mjc4NWQuLjU2ODM3MjEzZGZiZWFl
YjRkNTllOTNjM2Q0OWY2YzdhYzJmNTM0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaApAQCAt
NDQsNiArNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR01vZHVsZSBHTW9kdWxlOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIE1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTW9kdWxlKTsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBNb2R1bGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCmluZGV4IDgyMzJkYjRlYjU2ZWFjYjZmOGNl
ODU1NjY0YjhiNzgyYWI2NTBhOTguLjdhZWU0N2VhYjk1ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0
Y2Y0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGlu
Z0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5n
Q29udGV4dC5tbQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RkOjp1
bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCkKIHsKLSAgICBhdXRvIGxh
eWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+
KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3Rp
bmdDb250ZXh0PigpOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKICAgICAgICAg
a0NBQ29udGV4dFBvcnROdW1iZXIgOiBAKHNlcnZlclBvcnQuc2VuZFJpZ2h0KCkpLApAQCAtNTIs
NyArNTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0
aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYQogI2lmIEhBVkUoT1VUX09GX1BST0NF
U1NfTEFZRVJfSE9TVElORykKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBM
YXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0
IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gbGF5ZXJI
b3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsK
KyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0Nv
bnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0g
TGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQpAQCAtODIsNyArODIsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9y
RXh0ZXJuYWxIb3N0aQogI2lmIFBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhv
c3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdp
bkhvc3RpbmdQcm9jZXNzKCkKIHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3Rp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogICAgIGxheWVy
SG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91
dE9mUHJvY2VzczsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250
ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9u
czpAeyBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9XTsKICAgICByZXR1
cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCA5N2UyZGYzNTNiMzY4MjM5MjlhMzFh
ZTk1N2ExZGRjZGMyMWMzN2Q2Li5iOThjYTk0YmM5ZWZjMjNiMmVkODE4YTViNzg0MzM3MjMxN2U5
YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oCkBAIC00OSw3ICs0OSw4IEBAIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNs
YXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uOwogc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
czsKIAotY2xhc3MgUGx1Z2luQ29udHJvbGxlclByb3h5IDogUGx1Z2luQ29udHJvbGxlciB7Citj
bGFzcyBQbHVnaW5Db250cm9sbGVyUHJveHkgOiBwdWJsaWMgUGx1Z2luQ29udHJvbGxlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGx1
Z2luQ29udHJvbGxlclByb3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMzY2Yjk4M2NjMGJl
YTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNS4uY2U4MjY3ZDJlZTc4Y2FjYjNkZGEwYTliMzc1
YmZhYWZjNjg2ZWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6U3RyaW4KIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50
ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMs
IGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxh
eWVyQ2xpZW50SUQpCiB7Ci0gICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJhbWV0ZXJz
KTsKKyAgICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1ha2VVbmlxdWU8UGx1Z2luQ29u
dHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOwogCiAgICAgUGx1Z2luQ29u
dHJvbGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVyUHJveHlQdHIgPSBwbHVnaW5Db250cm9sbGVy
UHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElV
UkwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRleCBiYmQ0MjNiY2Y1
NzE1ZTRhZDcwYmY1MmRlZjhjMmMzMGM0MWJmMGY2Li4zZTYxYmJkMDAwZTFmNGNkYjZjMmEzNmNh
NGY3NWU5MDRmODM1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
VVJMLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCkBAIC00NCw3ICs0
NCw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7
CiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNl
VVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91
bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwp
OworICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVSTD4oKmJhc2VV
UkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CiAgICAgICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBhYnNvbHV0ZVVSTFN0cmluZyA9IGFic29sdXRlVVJMLT5zdHJpbmcoKTsKIAogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwg
YWJzb2x1dGVVUkxTdHJpbmcpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBVUkwgOiBwdWJs
aWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgaWYgKG1f
cGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9IHN0
ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKKyAgICAgICAg
bV9wYXJzZWRVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgpLCBtX3N0cmluZyk7
CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgbV9zdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCmluZGV4
IDI1OTI4NDdlMzQxYTNiNmY3Mjg3NTRiZDc4OGE2NjUzZGQyMjE1YjAuLmQzZmY2MjFlYzBmNGEx
MGQ3NTY0ODdjYzIxNmY0OTVjZTg2ZDcyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCkBAIC04Myw3ICs4
Myw3IEBAIGJvb2wgUmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgUmVtb3RlT2JqZWN0SW52b2NhdGlvCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYmxvY2tTaWduYXR1cmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHJlc3VsdC5tX3JlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbHlJbmZvPihyZXBseUlE
LCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CisgICAgICAgIHJlc3VsdC5tX3JlcGx5SW5mbyA9
IG1ha2VVbmlxdWU8UmVwbHlJbmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggNjVkYTll
ZmYwMWI0M2VhNTcxMDgwMmY2YzQ2YTZkMDIwMjY1NjkzZS4uNDg5OTc2MjkzMmI3YWY2OTIyMWQw
NTBhZjY3NDU4MzZmYzM4N2IwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTA5LDcgKzEwOSw3
IEBAIC0gKGlkKV9pbml0V2l0aFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSYpcGFnZQogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3Jl
bW90ZU9iamVjdFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVj
dFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtl
VW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CkBAIC0xMTksNyArMTE5LDcgQEAgLSAoaWQpX2luaXRXaXRoV2ViUGFn
ZVByb3h5OihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZQogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxm
LCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6
UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9
CkBAIC0xNjAsNyArMTYwLDcgQEAgLSAodm9pZClfc2VuZEludm9jYXRpb246KE5TSW52b2NhdGlv
biAqKWludm9jYXRpb24gaW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnQKICAgICAgICAgaWYg
KHN0cmNtcChbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUJs
b2NrU2lnbmF0dXJlXS5tZXRob2RSZXR1cm5UeXBlLCAidiIpKQogICAgICAgICAgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlJldHVybiB2
YWx1ZSBvZiBibG9jayBhcmd1bWVudCBtdXN0IGJlICd2b2lkJy4gKCVzKSIsIHNlbF9nZXROYW1l
KGludm9jYXRpb24uc2VsZWN0b3IpXTsKIAotICAgICAgICByZXBseUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0
ZVJlcGx5SWRlbnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKKyAgICAgICAgcmVwbHlJ
bmZvID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5m
bz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CiAKICAg
ICAgICAgLy8gUmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0IHRyeSB0byBlbmNv
ZGUgaXQuCiAgICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggN2Vk
MTFlNmMxNzFlMjBiZTFlOWVhZGIzMDdlNzFmYzQ4YmZkZTg0OS4uZmFlZmVkMmRjYzgzOGVlOTU3
MzkwNjVkYWM2M2YxMzU2M2YwZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC05NCw3ICs5NCw3IEBA
IFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBp
dGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9D
T05URVhUX01FTlVfSVRFTSwgTlVMTCkpOwogCi0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKKyAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
aXRlbURhdGEpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgc3Vi
TWVudSA9IGl0ZW1EYXRhLnN1Ym1lbnUoKTsKICAgICBpZiAoIXN1Yk1lbnUuaXNFbXB0eSgpKQog
ICAgICAgICB3ZWJraXRDb250ZXh0TWVudUl0ZW1TZXRTdWJNZW51KGl0ZW0sIGFkb3B0R1JlZih3
ZWJraXRDb250ZXh0TWVudUNyZWF0ZShzdWJNZW51KSkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdl
YktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyhHdGtBY3Rp
b24qIGFjdGlvbikKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChHVEtfSVNfQUNUSU9OKGFjdGlv
biksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lU
X0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVf
SVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOworICAgIGl0ZW0tPnByaXYtPm1l
bnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOwogCiAg
ICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbihHQWN0aW9uKiBh
Y3Rpb24KICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghdGFyZ2V0IHx8IGdfdmFyaWFudF9pc19v
Zl90eXBlKHRhcmdldCwgZ19hY3Rpb25fZ2V0X3BhcmFtZXRlcl90eXBlKGFjdGlvbikpLCBudWxs
cHRyKTsKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhU
X01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51
bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFy
Z2V0KTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKIAog
ICAgIHJldHVybiBpdGVtOwogfQpAQCAtMTk0LDcgKzE5NCw3IEBAIFdlYktpdENvbnRleHRNZW51
SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbihXZWJL
aXRDb250CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVY
VF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBu
dWxscHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1l
bnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlv
blR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
bnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9u
VGFnKGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7Cisg
ICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUds
aWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdl
YmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CiAKICAgICByZXR1cm4gaXRl
bTsKIH0KQEAgLTIxNiw3ICsyMTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9j
b250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9sYWJlbAogCiAgICAg
V2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAg
IENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVj
a2FibGUoYWN0aW9uKSA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0
ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1H
bGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBT
dHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtl
VW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0
aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKIAogICAg
IHJldHVybiBpdGVtOwogfQpAQCAtMjM5LDcgKzIzOSw3IEBAIFdlYktpdENvbnRleHRNZW51SXRl
bSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2NoYXIq
IGxhCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBlLCBD
b250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFiZWwp
KTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJ
dGVtR2xpYj4oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnLCBT
dHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CiAgICAgaXRlbS0+cHJpdi0+c3ViTWVudSA9IHN1Ym1l
bnU7CiAgICAgd2Via2l0Q29udGV4dE1lbnVTZXRQYXJlbnRJdGVtKHN1Ym1lbnUsIGl0ZW0pOwog
CkBAIC0yNTYsNyArMjU2LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEKIFdlYktpdENvbnRl
eHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3Iodm9pZCkK
IHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5V
X0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRy
KSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRl
eHRNZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9u
LCBTdHJpbmcoKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNv
bnRleHRNZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0
aW9uLCBTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CmluZGV4IDVlZDE0M2E5OTg1OTA0OTZjMzM3NmE1Njk4ODExNTNhNmEwMmIyOGMuLmYzM2NhYjMw
NWZlZTEyNzRmYWE3YjIxODM4ZTliYjdlZjc2YmJmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApA
QCAtNzIsNiArNzIsNyBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQogICAgICwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4KICAgICAsIHB1YmxpYyBQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBk
ZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IDdhZDMzMzE0
NTM5MTg4ODlmZDNiOTg5NjM4NmE4YmVkMWY1MTlhMTQuLjM5MTRhNGMyMDE0YTlhNTRhNjM0ODhh
NGU3NDM4MTljNmE4ZGIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0K
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAogICAgICAgICBBU1NF
UlQodmlld0NvbnRyb2xsZXIpOwogCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5t
X2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJl
cXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVyKTsKKyAgICAgICAgcGF5bWVudENvb3JkaW5hdG9y
UHJveHktPm1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IG1ha2VVbmlxdWU8UGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50
UmVxdWVzdC5nZXQoKSwgdmlld0NvbnRyb2xsZXIpOwogCiAgICAgICAgIEFTU0VSVCghcGF5bWVu
dENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cpOwogICAgICAgICBwYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyA9IFtOU1dpbmRvdyB3aW5kb3dXaXRoQ29udGVudFZp
ZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXgg
ODZlNzQ0YzEwOGRmNGNiY2Y1ZDA0NzYwOWFjZjk2YzY4MjNkNmIxNi4uNGY4MzcwMjRlZTVmMzRm
ZmEwZTY5YmFmN2IzYmZjODgxYTUyODAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAgLTU1
LDYgKzU1LDcgQEAgZW51bSBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
IDogdWludDhfdDsKIHVzaW5nIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJik+OwogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXIgOiBw
dWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdGlvbk1hbmFnZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50
aWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0aW9uTWFu
YWdlcihOZXR3b3JrUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IDU2YTc4M2EwYjIzYjI2YTIwYzViOGZh
NGE1OWYxNTdhNGMwMzdiYjcuLjJkNWQxYWZjMDgyN2E0MWEwYmQ4M2JiYWE4MGY3OGY2MTRmNWJk
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4g
Y3JlYXRlKGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGUgdHlwZSwgT3B0
aW9uYWw8cGlkX3Q+IHBpZCA9IFdURjo6bnVsbG9wdCkKICAgICB7CkBAIC0xNjAsNyArMTYxLDcg
QEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpIC0+IE9wdGlvbmFsPEhhbmRsZT4KICAgICAgICAgcmV0dXJuIHt7IH19OwogCiAgICAg
SGFuZGxlIGhhbmRsZTsKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAgaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IG1ha2VVbmlxdWU8U2FuZGJveEV4dGVuc2lvbkltcGw+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0
YVJlZmVyZW5jZS5zaXplKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZS5oCmluZGV4IGM5MzRlOTA3Zjg5N2YzN2ZlMGUwOGY5MGY2ZjE5ZTM0M2YyMGY1ZWYuLjM5YWUw
ZDc3Y2QwZmEwMTExNzFmMTkzYWQ4YjdjMGYzODExOTE2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaApAQCAtMzMsNiAr
MzMsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlIDogcHVibGljIFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2UgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDE4ZGMyZmI4
ZWQxM2QxNTM0MTJlYTMwZTI5MTExNzhlYWNlZmM1YWUuLjcwNDMwZjQ0MzEyYzhhNTYyY2UxNWZj
NzMyZjY5ZDM4NzZmZTljMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBUZXh0dXJlTWFwcGVyTGF5ZXImIHRleG1hcExheWVy
KE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXImIGNvbXBvc2l0aW9uTGF5ZXIpCiB7CiAgICAgYXV0
byYgY29tcG9zaXRpb25TdGF0ZSA9IGNvbXBvc2l0aW9uTGF5ZXJJbXBsKGNvbXBvc2l0aW9uTGF5
ZXIpLmNvbXBvc2l0aW9uU3RhdGUoKTsKICAgICBpZiAoIWNvbXBvc2l0aW9uU3RhdGUubGF5ZXIp
IHsKLSAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4
dHVyZU1hcHBlckxheWVyPigpOworICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gbWFr
ZVVuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CiAgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUu
bGF5ZXItPnNldElEKGNvbXBvc2l0aW9uTGF5ZXIuaWQoKSk7CiAgICAgfQogICAgIHJldHVybiAq
Y29tcG9zaXRpb25TdGF0ZS5sYXllcjsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6ZW5zdXJlUm9vdExheWVyKCkKICAgICBpZiAobV9yb290TGF5ZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcm9vdExheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAgbV9yb290TGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1
cmVNYXBwZXJMYXllcj4oKTsKICAgICBtX3Jvb3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxz
ZSk7CiAgICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290
TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAwLCAwKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApp
bmRleCBjZDNlNTdjNmJjYjlkOGRjMWZmOTljYWQ1OWM0ZTEzZmY2NjAzYTZiLi5iY2IyMzU5NzVi
MTMzZDJlMjc2NzZkMjgzZmU4OTEzODFhMGQ1ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUo
Q2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlzcGwKIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFk
ZWRDb21wb3NpdG9yKENsaWVudCYgY2xpZW50LCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6Q2xpZW50JiBkaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQsIFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZUZhY3Rv
ciwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBwYWludEZsYWdzKQogICAgIDogbV9jbGllbnQo
Y2xpZW50KQogICAgICwgbV9wYWludEZsYWdzKHBhaW50RmxhZ3MpCi0gICAgLCBtX2NvbXBvc2l0
aW5nUnVuTG9vcChzdGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsg
cmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQorICAgICwgbV9jb21wb3NpdGluZ1J1bkxvb3AobWFrZVVu
aXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+KFt0aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkK
ICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgICwg
bV9kaXNwbGF5UmVmcmVzaE1vbml0b3IoVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNy
ZWF0ZShkaXNwbGF5SUQsIGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCkpCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVj
ZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVj
ZWl2ZXIuaAppbmRleCAxYTA1NDc1MDdlYzFjMWE4MTI0NzJiYjdlYmQ5ZmEwZDRhZDEzYTQ4Li4w
N2U4YmJjOWI1YzljM2M2YzlkOGQ2YzNiOTQ1ZTUzOTMyN2I4NzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCkBA
IC0zOSw2ICszOSw3IEBAIGNsYXNzIE5QVmFyaWFudERhdGE7CiBjbGFzcyBQbHVnaW47CiAKIGNs
YXNzIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcik7CiAK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1v
dGVPYmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9i
amVjdE1hcC5jcHAKaW5kZXggNjFlMWY5NDAyNTIzODVkYjgwNWVjMTIyZGZmMWM5ZTRmMWI3MjU2
My4uZDRiNTI0YzgyOWVjNjY3MjFkZjFhNzBkMmQ1MTNhZTRlYjNmM2QyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBOUFJlbW90ZU9iamVjdE1hcDo6bnBPYmplY3RQcm94eURlc3Ryb3ll
ZChOUE9iamVjdCogbnBPYmplY3QpCiB1aW50NjRfdCBOUFJlbW90ZU9iamVjdE1hcDo6cmVnaXN0
ZXJOUE9iamVjdChOUE9iamVjdCogbnBPYmplY3QsIFBsdWdpbiogcGx1Z2luKQogewogICAgIHVp
bnQ2NF90IG5wT2JqZWN0SUQgPSBnZW5lcmF0ZU5QT2JqZWN0SUQoKTsKLSAgICBtX3JlZ2lzdGVy
ZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TlBPYmplY3RNZXNz
YWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2Uo
KSk7CisgICAgbV9yZWdpc3RlcmVkTlBPYmplY3RzLnNldChucE9iamVjdElELCBtYWtlVW5pcXVl
PE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyPih0aGlzLCBwbHVnaW4sIG5wT2JqZWN0SUQsIG5wT2Jq
ZWN0KS5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0SUQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9k
dWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGUuY3BwCmluZGV4IDdiMDJiNWUxMmYzMmM3MmQzOGY1MjA0NWJiNmQ2YTIzYjYy
YWUyZTEuLjI2MWQ3YTg5NjkzMDZhODkyNWM0YWIzNmU0Nzk0N2IzOTZjMTI1MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgc3RhdGljIGJvb2wgbW9k
dWxlTWl4ZXNHdGtTeW1ib2xzKE1vZHVsZSogbW9kdWxlKQogCiBib29sIE5ldHNjYXBlUGx1Z2lu
TW9kdWxlOjp0cnlMb2FkKCkKIHsKLSAgICBtX21vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9k
dWxlPihtX3BsdWdpblBhdGgpOworICAgIG1fbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KG1f
cGx1Z2luUGF0aCk7CiAgICAgaWYgKCFtX21vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggZWEyYmU5MzA4
Y2JiZTZkZDdlYjhjZjJjNTg4YzhmZjYxOWVhOTkzYy4uOTU1MTNmNDc5ODJmZDY3ZWU1Zjk4ZGQ3
OTk2Yzg1OThmMWY0NjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAg
LTUxLDYgKzUxLDcgQEAgY2xhc3MgRW5jb2RlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZW51bSBMYXllckNoYW5nZSB7CiAgICAgICAgIE5hbWVDaGFuZ2Vk
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDEsCkBAIC05NCw2ICs5NSw3IEBAIGNsYXNz
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVy
Q3JlYXRpb25Qcm9wZXJ0aWVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBMYXllckNyZWF0aW9uUHJvcGVydGllcygpOwogCiAgICAgICAgIHZvaWQg
ZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwpAQCAtMTA5LDYgKzExMSw3IEBAIGNsYXNzIFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVyUHJv
cGVydGllcyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgTGF5ZXJQcm9wZXJ0aWVzKCk7CiAgICAgICAgIExheWVyUHJvcGVydGllcyhjb25zdCBMYXll
clByb3BlcnRpZXMmIG90aGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CmluZGV4IDFmMmRlNGQwMzdlYTNlODMwMjg3YWI5OGNiMmE4ZjIxYzRlY2VhMmUuLjBkMjI3ZmZj
MWQ5YzU1NTZhYWQ5MmU3ZWUxNTc2NWUxNmIzNDQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KQEAgLTE1MiwxMyArMTUyLDEzIEBAIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3Bl
cnRpCiAgICAgLy8gRklYTUU6IExheWVyUHJvcGVydGllcyBzaG91bGRuJ3QgYmUgY29weWFibGU7
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y2xvbmUgc2hvdWxkIGNvcHkgdGhlIHJlbGV2YW50IHBy
b3BlcnRpZXMuCiAKICAgICBpZiAob3RoZXIudHJhbnNmb3JtKQotICAgICAgICB0cmFuc2Zvcm0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIu
dHJhbnNmb3JtKTsKKyAgICAgICAgdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuc3Vi
bGF5ZXJUcmFuc2Zvcm0pCi0gICAgICAgIHN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNm
b3JtKTsKKyAgICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOwogCiAgICAgaWYg
KG90aGVyLmZpbHRlcnMpCi0gICAgICAgIGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0ZXJzKTsKKyAgICAgICAgZmlsdGVycyA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOwog
fQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9v
bCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9y
bSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQu
dHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odHJhbnNmb3JtKTsKKyAgICAgICAgcmVzdWx0LnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYg
KHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIFN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCkgewpA
QCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh0cmFuc2Zvcm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC5zdWJs
YXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+
KHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAm
IEhpZGRlbkNoYW5nZWQpIHsKQEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocm91bmRlZFJlY3QpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRS
ZWN0KTsKKyAgICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKICAgICB9CiAKICAgICBpZiAocmVz
dWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgU2hhcGVQYXRoQ2hhbmdlZCkgewpAQCAtNDcxLDcgKzQ3
MSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShoYXNGcm9udEJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
IChoYXNGcm9udEJ1ZmZlcikgewotICAgICAgICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPihudWxscHRyKTsKKyAgICAgICAg
ICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZT4obnVsbHB0cik7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpiYWNraW5nU3Rv
cmUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIApAQCAtNDg2
LDcgKzQ4Niw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVy
dGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICB9CiAKICAgICBpZiAocmVz
dWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgRmlsdGVyc0NoYW5nZWQpIHsKLSAgICAgICAgYXV0byBm
aWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigpOwor
ICAgICAgICBhdXRvIGZpbHRlcnMgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnM+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmZpbHRlcnMpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQuZmlsdGVycyA9IFdURk1vdmUoZmlsdGVy
cyk7CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVlVHIKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRp
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyUHJvcGVydGllcz4oKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPExheWVyUHJvcGVydGllcz4gbGF5ZXJQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxM
YXllclByb3BlcnRpZXM+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmxheWVyUHJv
cGVydGllcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAppbmRleCA5NzhjNGJiZWQ3
YjVjZDkxY2FhZWMxNTRiYzhiYTE0YmFiNzUzNDYxLi5lODI2YTMwYjEyZTI0ZWNmNDMwYzY5Yjc2
YjFhNmYyOGY1YmI5OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBAIC01MjIsNyArNTIyLDcgQEAgYm9vbCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzTmV3Um9vdE5vZGUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCi0gICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IG1h
a2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOwogCiAgICAgYm9vbCBoYXNDaGFuZ2VkUHJv
cGVydGllczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0NoYW5nZWRQcm9wZXJ0aWVzKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENh
aXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJv
LmNwcAppbmRleCBjNzM0N2M3OWU2NjkzODM3ODVkMDVkMjI5ZTQ3Yjc0N2MxZjBjYTU1Li5iMmNk
NDg0NjY3N2NlOTdkZmFjMjg1ODQ5MGMxZWE0MzRmOTYyOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC02MCw3ICs2
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBp
bWFnZSA9IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOwogICAgIFJlZlB0cjxjYWlyb190PiBiaXRtYXBD
b250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVG
YWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDkyZjEwNjJiMjkwZjc3NWRiNWFlN2VkMTk1MmE5Y2E4
NThhYjMxMjIuLjAxNmFiYmQ5OTNlMThhNDVjMDFhN2YwNDk3ZGNjMzFhNTNiNDM3MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTEwMCw3
ICsxMDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGJp
dG1hcENvbnRleHQuZ2V0KCksIDAsIG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2Nh
bGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwgMSwgLTEpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOwogfQog
CiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJj
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBE
aXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGly
ZWN0MkQuY3BwCmluZGV4IDYwZjhmM2NiNzMyODliNmIwZDJmNGMzNTE0NmYxY2ZlZDQwMzRhODAu
LjEwMDFlZTNlNTI5MmVkY2I1MzZmODIzMzAzYzJjNzRjMmIxZTkyOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcApAQCAt
NzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7CiAgICAgbV9iaXRtYXAgPSBjcmVhdGVE
aXJlY3QyRFN1cmZhY2UoKTsKICAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IGJpdG1hcENv
bnRleHQgPSBEaXJlY3QyRDo6Y3JlYXRlUmVuZGVyVGFyZ2V0RnJvbVdJQ0JpdG1hcChtX2JpdG1h
cC5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5n
ZXQoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsK
IH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKaW5k
ZXggMjk5NTgxMDk1ZGQxZDFiMTVhZmVhYmI0ZGFjYmVkMDVkMmJkZDExNC4uNTQ1YTdiZTRkNDgx
OTcxMzI4ZDFjM2Y3OWQyNzFlZDlhMjFmODM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNz
IFdlYlByb2Nlc3NQb29sOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEF1dG9tYXRpb25DbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkF1dG9tYXRpb25DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAyOGZhZjY4NzE5
YTlkNzI4ZDUxYjZjNzcyZDg0ZTE3YjY0OTA5N2NhLi4yYWUyYTUwMzRjM2E0MTcxY2NmNDc3Yjk3
ODViNzNhNmYyNGRiODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVt
IEF1dG9tYXRpb25TZXNzaW9uQnJvd3NpbmdDb250ZXh0T3B0aW9ucyA6IHVpbnQxNl90IHsKIH07
CiAKIGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEphdmFTY3JpcHREaWFsb2dUeXBlIHsK
ICAgICAgICAgQWxlcnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZXh0TWVudUNsaWVudC5oCmluZGV4IGFmMTA5YzFkZjY3MDBkYzIzZTJlMzMxYjBiNTBlZmJj
ZmY0Mjg2NjcuLjgxNmY3MWUxMjY3MGNiM2Q2NWIxZTYzMjgwM2E2YjQwZWY3ZGJmYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5o
CkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewog
CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudC5oCmluZGV4IDBmOGNhYjk3MzI5ZjA5NTdmMzJiNDdjMjc3ODFkMWU3ODZm
YTE0N2QuLjhiNDRhM2Y0NTZjNTMyYWQzMzgwNmVmNjliNDdlYWQwOTQxZGY3YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKaW5kZXggOTJi
MmQ2NzVkZmNhMmNhZmRhMjExYjNmNzFjNTc5OGFmZDQ1ZDYyYS4uYjRlMmFkZTcyOWVhNjZkOGRk
YThkZDUwMjExOGFlNGFiZGIyMTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcg
QEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEaWN0aW9uYXJ5OwogCiBjbGFzcyBEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAppbmRleCAwMjM3NmUxZTEx
MGQ0NzZlYjJiOTE4NWU0ZTJmY2Q4ZDZlMTMzMmUxLi5iMmVhY2M5YjgzMjU5OGIxN2E5OWRiZDlk
NjdlZjI0ZTQ3M2FlZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RG93bmxvYWRDbGllbnQuaApAQCAtNDYsNiArNDYsNyBAQCBlbnVtIGNsYXNzIEFsbG93T3Zlcndy
aXRlIHsgTm8sIFllcyB9OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIERvd25sb2FkQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5E
b3dubG9hZENsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJRmluZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZp
bmRDbGllbnQuaAppbmRleCBmMzEyM2FmMTk1MTY1YTY2OWQ2NjY4MzE4YjgxMmU5MzM2NWU2ZGMy
Li42ZDFlM2IyMTFmZTBkZDk1YTk0ODUwNTg0MTdkYjRkZTA4MjQwZDZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xh
c3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEZpbmRDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbmRD
bGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUZpbmRNYXRjaGVzQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmlu
ZE1hdGNoZXNDbGllbnQuaAppbmRleCBjNmY0NTczNDJkMTExOTAxZGNhNmQzYzMwOTAzMzdmZWU3
YTFmZWMyLi5mYWUxZGNkM2NkNjg4MzUwN2VmYmUzZDk1ZDVkNmY3MmEwMzY5ZGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaApA
QCAtMzgsNiArMzgsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAog
Y2xhc3MgRmluZE1hdGNoZXNDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkZpbmRNYXRjaGVzQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oCmluZGV4IDViMGM2Y2NhMjRlZWZj
MWE5NTgxOTFlMGUyNzk0YTQ3YjRmNTRlN2MuLmYwY2EwNjAxMTE5ODAyZWQzNjliNGQwNzhkODNj
ODYyYTUxNjEyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
b3JtQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGll
bnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIAog
Y2xhc3MgRm9ybUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Rm9ybUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaAppbmRleCAxMzc1NTI5Y2RhMjVmMjVj
YmIxNzliZGM4OTg5MTcxYzg5ZWU4ODU3Li44OTc0Y2QxMzM5NDc3NTAyNzNmNDUwZjBlODM5NmMw
ZTZiMTMyMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVs
bHNjcmVlbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxs
c2NyZWVuQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFt
ZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEZ1bGxzY3JlZW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIEFQSVR5cGUs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Q
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJv
dmlkZXIuaAppbmRleCA1MjY2YmMyY2E1NGNmMDk5YzIzOGNhY2M2MjE0NGM5Nzk5YTA5Nzk3Li43
YzZmNTYyOWNiNjBlNTNiYzdiODVhYTg4ODlmNzJlNjhkN2E0YzJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTM0
LDYgKzM0LDcgQEAgY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk7CiBuYW1lc3BhY2Ug
QVBJIHsKIAogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+R2VvbG9jYXRpb25Qcm92aWRlcigpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tp
ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmUuY3BwCmluZGV4IDk4MWE5ODViYmRlNWYxY2I2NWY5NmNiYjIxMzlmYmNmMTlkN2RjZTUuLmUx
MjJlZTNlZGIxYzQyMTlkMWQ4NDE5OTMyMWE4MDAzZDUyYzgyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgdm9pZCBIVFRQQ29va2llU3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXIm
IG9ic2VydmVyKQogCiAgICAgQVNTRVJUKCFtX29ic2VydmVkQ29va2llTWFuYWdlclByb3h5KTsK
IAotICAgIG1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
SVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyPigqdGhpcyk7CisgICAgbV9jb29raWVNYW5h
Z2VyUHJveHlPYnNlcnZlciA9IG1ha2VVbmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2Jz
ZXJ2ZXI+KCp0aGlzKTsKIAogICAgIGF1dG8qIHBvb2wgPSBtX293bmluZ0RhdGFTdG9yZS0+cHJv
Y2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaAppbmRleCBmY2Y0NjA2MWY2YmZhNmRj
Yjc2MGUxMmM2NjMzYjZiNDVmMTU2ZGQ0Li4xMTg0YWE0MzJjM2I5ZmZjYjE1ZGE1ZjgyOGVmNGFj
NGYxYWRiMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlz
dG9yeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5
Q2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7
CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SGlzdG9yeUNsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFi
YXNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNl
Q2xpZW50LmgKaW5kZXggZWE5ZWJhNTBlMWVmZThmMDMyMWM0ZGZlM2E0NDZmMGRjYmI1ZDhjOS4u
YmU0M2FlZWM1NGZmMmQ0YWJiNWEyOGZmMzYzMTQ1YzQ5MGM3ZTg1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaApAQCAtMzQs
NiArMzQsNyBAQCBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgSWNvbkRhdGFiYXNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JY29uRGF0YWJhc2VDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCA2
ZjllN2FmOWM5ODA5MjMzYjZhNTY1ZWMzZTM4MGJlMGFhY2Q1NjdlLi4yZmUzODYyNTk0NjNiZmIz
NjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBE
YXRhUmVmZXJlbmNlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
Y29uTG9hZGluZ0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IGMzNWU3YjNhZTQ5M2Q5YWM2
M2NiM2E0YjU4MWZlMzJmY2I0MGFjZTguLjlkNDM0ODlhMmQ2MjU3Y2IwY2FmOTIyYjNmYjA5MzI5
NWNlOWJiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQ
b29sOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbmplY3Rl
ZEJ1bmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAppbmRleCBj
YmI5ZTBhOTcxNDViZDE3ZGRlZjhlMGJiMTRhZjhjMzc2ZGZiMzg4Li5kYjVkOTBjMzFmOTI3Njlk
MzAzYTAxYWQ3OGJkYTdmYmQxYTRkMDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaApAQCAtMzgs
NiArMzgsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkg
ewogCiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNs
aWVudC5oCmluZGV4IDM0OGQ2YmY3NzI5MjcyZThmMmFiYWVjMzc1NWMyMGRlNTQyZDY0NWQuLmIy
ZWE0MWQ5ZTJmMmU4MWUyYzllYjNiODc3OTFmYzNlZjhjM2YwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xh
c3MgTmF2aWdhdGlvbjsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgTG9hZGVyQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkZXJD
bGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6
TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCBhNmUwMTljYzQ1MTg2M2E0MWFj
ZmM4YmVhN2JmMzAyODk2YjFiYjczLi5jZDIyYTI2NzY0NjhkMTgyMzRhNjA4NDJmZTlkOTE2NzFi
MjBhODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgKQEAgLTczLDYgKzczLDcgQEAgY2xhc3MgTmF2aWdhdGlvblJlc3BvbnNlOwog
Y2xhc3MgT2JqZWN0OwogCiBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5OYXZpZ2F0aW9uQ2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaApp
bmRleCA1ZWJlNDQwNzQyYTc2NTQxYjFkOWNjZjI5OTVjOWE5NWZlODRkNWFkLi42YWU4ZTc1MjA1
ZmZmYzg2NTJmNGY5YjgzYmIzZGUzMGVlNmNmYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBB
UEkgewogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBQb2xpY3lDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflBvbGljeUNsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGQ5ZGQw
ZGI0NjYzNzcyMmI2MDJiMjBkZGRmNjczODEzNWY2NDZmNjIuLjc3MmRhNmU1YTg2OTc3ZWM4YWUy
ZGMwNzU0MmQ4ZmNmMWUxNDk2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
SUNsaWVudC5oCkBAIC03MSw2ICs3MSw3IEBAIGNsYXNzIE9wZW5QYW5lbFBhcmFtZXRlcnM7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVUlDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IGFmY2U3MGI2
MjdmZWVmN2I1YmY4ODI4OWFkODIyZjE5YzE5Y2RiNmYuLjNkMDE2MTFjMDI5ZjkzZjVjZTNlNWVi
M2UzMDY0NzQ4ODlhYjhmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogd2tDbAogCiB2
b2lkIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBjb25zdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQog
ewotICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50
Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxl
Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNl
KiB3a0NsaWVudCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlD
bGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAog
ICAgIH07CiAKICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCA9ICpXZWJL
aXQ6OnRvSW1wbChjb250ZXh0UmVmKTsKLSAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yeUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBwcm9jZXNz
UG9vbC5zZXRIaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWU8SGlzdG9yeUNsaWVudD4od2tDbGllbnQp
KTsKIAogICAgIGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcyA9IHByb2Nlc3NQb29sLmhpc3RvcnlDbGll
bnQoKS5hZGRzVmlzaXRlZExpbmtzKCk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFdLQ29u
dGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0Nv
bnRleHREb3dubG9hZAogICAgICAgICB9CiAgICAgfTsKIAotICAgIFdlYktpdDo6dG9JbXBsKGNv
bnRleHRSZWYpLT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkQ2xp
ZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2
b2lkIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNw
cAppbmRleCAxMWI4MzRiNGVlMmE5YTY4NzYyNmM3MzJiZjU4YTQ4ODIzZjYzMzRhLi44ODhiNzVi
YzdjZWM4OWQxNmUwN2Y2MTdlN2JiMmNlMjk3OWZhNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIFdLVHlwZUlEIFdLR2VvbG9jYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9p
ZCBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVm
IGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgY29uc3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyQmFzZSog
d2tQcm92aWRlcikKIHsKLSAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJv
dmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVy
KSk7CisgICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VV
bmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdL
R2VvbG9jYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXS0dlb2xvY2F0aW9u
TWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYsIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJl
ZiBwb3NpdGlvblJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGIyMjNkNmY4N2JmYTVlOTZlM2U1MGRh
MmRkNzhmZjBkMmRkNDE2Y2UuLjc2OTIzOTkwYWI1YjllYTIxMzg1ZjFkMzU2OWU4YjUwYWE3ZjY1
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBXS1R5cGVJRCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJHZXRUeXBlSUQoKQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFBy
b3ZpZGVyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBjb25zdCBXS05vdGlm
aWNhdGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKLSAgICB0b0ltcGwobWFuYWdlclJl
ZiktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+
KHdrUHJvdmlkZXIpKTsKKyAgICB0b0ltcGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VV
bmlxdWU8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAogdm9pZCBX
S05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNDdlYzcyNmIwY2U0NDA1
N2YwMDJiNTQwYmVhNzY4ZTQzYjEwYThkNC4uNjFhNjliMWYzYTZkYTc0OTZhZDQ3MjY5NzBiODVm
MmM5MTE4MTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBA
IC05NDgsNyArOTQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2wKICAgICAgICAgfQogICAg
IH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3
a0NsaWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VE
X1BBUkFNKHdrQ2xpZW50KTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VD
b250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1l
bnVDbAogCiB2b2lkIFdLUGFnZVNldFBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRCYXNlKiB3a0Ns
aWVudCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVu
dCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFr
ZVVuaXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAK
IHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5k
Q2xpZW50QmFzZSogd2tDbAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRDbGllbnQ+KHdrQ2xpZW50KSk7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVu
dD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSogd2tD
bGllbnQpCkBAIC0xMDM4LDcgKzEwMzgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hl
c0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbAogICAg
ICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnNldEZpbmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8RmluZE1hdGNo
ZXNDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUlu
amVjdGVkQnUKIAogdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdr
Q2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8
V2ViRm9ybUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVy
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiB3
a0NsaWVudCkKQEAgLTExOTksNyArMTE5OSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKIAog
ICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5ID0gdG9JbXBsKHBhZ2VSZWYpOwogCi0gICAg
YXV0byBsb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRlckNsaWVudD4od2tDbGll
bnQpOworICAgIGF1dG8gbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMb2FkZXJDbGllbnQ+KHdr
Q2xpZW50KTsKIAogICAgIC8vIEl0IHdvdWxkIGJlIG5pY2UgdG8gZ2V0IHJpZCBvZiB0aGlzIGNv
ZGUgYW5kIHRyYW5zaXRpb24gYWxsIGNsaWVudHMgdG8gdXNpbmcgZGlkTGF5b3V0IGluc3RlYWQg
b2YKICAgICAvLyBkaWRGaXJzdExheW91dEluRnJhbWUgYW5kIGRpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEluRnJhbWUuIEluIHRoZSBtZWFudGltZSwgdGhpcyBpcyByZXF1aXJlZApAQCAt
MTI4MSw3ICsxMjgxLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICB9CiAgICAg
fTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8UG9saWN5Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UG9s
aWN5Q2xpZW50KG1ha2VVbmlxdWU8UG9saWN5Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTIwNzUsNyArMjA3NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xp
ZW50CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdl
UmVmKS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAog
dm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMjI5MywxNjQgKzIy
OTMsMTY2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgd2ViUGFnZVByb3h5LT5zZXRO
YXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8TmF2aWdhdGlvbkNsaWVudD4od2tDbGllbnQp
KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdL
UGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQotewotICAgIGNsYXNzIFN0YXRlQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZVN0YXRlQ2xpZW50QmFzZT4sIHB1YmxpYyBQ
YWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBT
dGF0ZUNsaWVudChjb25zdCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKLSAgICAgICAg
ewotICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOwotICAgICAgICB9Ci0gICAgcHJpdmF0
ZToKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRp
bmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorY2xhc3MgU3RhdGVDbGll
bnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVi
bGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTdGF0ZUNsaWVudChjb25zdCBXS1BhZ2VTdGF0ZUNs
aWVudEJhc2UqIGNsaWVudCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAg
ICB9Citwcml2YXRlOgorICAgIHZvaWQgd2lsbENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VJc0xv
YWRpbmcoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZENoYW5nZUlzTG9hZGluZykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAg
ICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VUaXRs
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hh
bmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQg
d2lsbENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQu
d2lsbENoYW5nZVRpdGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53
aWxsQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAg
ICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3Zl
cnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQWN0
aXZlVVJMKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50Lndp
bGxDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgd2lsbENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVS
TCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFu
Z2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZv
aWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9j
bGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VIYXNP
bmx5U2VjdXJlQ29udGVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250
ZW50KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhh
c09ubHlTZWN1cmVDb250ZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVu
dC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
SGFzT25seVNlY3VyZUNvbnRlbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNv
bnRlbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VI
YXNPbmx5U2VjdXJlQ29udGVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGll
bnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VF
c3RpbWF0ZWRQcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRl
ZFByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hh
bmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAK
LSAgICAgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jl
c3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hh
bmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAg
fQorICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jl
c3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxs
Q2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2so
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFu
Z2VDYW5Hb0JhY2soKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZENoYW5nZUNhbkdvQmFjaykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29G
b3J3YXJkKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53
aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0Zv
cndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBk
aWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29Gb3J3
YXJkKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2Fu
R29Gb3J3YXJkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFu
Z2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAg
ICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1
ZXN0c0luUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9j
bGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0
c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxs
Q2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VOZXR3
b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtS
ZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJv
Z3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5l
dHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9
CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJ
bmZvKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAg
fQorICAgIHZvaWQgd2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8o
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFu
Z2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbykKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2VydGlm
aWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hh
bmdlQ2VydGlmaWNhdGVJbmZvKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVdl
YlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZVdlYlByb2Nlc3NJ
c1Jlc3BvbnNpdmUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxs
Q2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNz
SXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNp
dmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hh
bmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRTd2Fw
V2ViUHJvY2Vzc2VzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQotICAgIH07CisgICAgdm9pZCBkaWRTd2FwV2ViUHJvY2Vzc2VzKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3Nl
cykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nl
c3NlcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KK307CisKK3ZvaWQgV0tQYWdl
U2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2Uq
IGNsaWVudCkKK3sKICAgICBpZiAoY2xpZW50KQotICAgICAgICB0b0ltcGwocGFnZSktPnNldFBh
Z2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6Om1ha2VfdW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQp
KTsKKyAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobWFrZVVu
aXF1ZTxTdGF0ZUNsaWVudD4oY2xpZW50KSk7CiAgICAgZWxzZQogICAgICAgICB0b0ltcGwocGFn
ZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KaW5kZXgg
Zjc2M2FmNjAwM2RhNDY2NzM2MzFlOTFlYTgxYjgzYjVjOTdhMDg3ZC4uMzVlZjkyMjE1NGUxOTYz
MDBlNGI2ZWU3NWQ0Yzk4MTc4NWJjM2UyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KQEAgLTUyLDcgKzUyLDcgQEAg
LSAoaWQpaW5pdFdpdGhQYWdlOihSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYpcGFnZQog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX3BhZ2UgPSBXVEZNb3ZlKHBhZ2UpOwotICAgIF9v
YnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+
KHNlbGYsIEAiVVJMIik7CisgICAgX29ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VM
b2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0
ZSgpLmFkZE9ic2VydmVyKCpfb2JzZXJ2ZXIpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCmluZGV4IDc4YmJhMzk2N2I2
MTk3YzBlOGE3YzIzYWMzZGE4Y2QxMzJlN2M0YmUuLjk2NDA2ZDBhYWZiYzM1NTU2MGI1ZDMxOTdh
MDBjMjVmNTc1OWEzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L3dwZS9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9X
S1ZpZXcuY3BwCkBAIC02OCw1ICs2OCw1IEBAIHZvaWQgV0tWaWV3U2V0Vmlld0NsaWVudChXS1Zp
ZXdSZWYgdmlldywgY29uc3QgV0tWaWV3Q2xpZW50QmFzZSogY2xpZW50KQogICAgICAgICB9CiAg
ICAgfTsKIAotICAgIHRvSW1wbCh2aWV3KS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Vmll
d0NsaWVudD4oY2xpZW50KSk7CisgICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQobWFrZVVuaXF1
ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1t
CmluZGV4IDI2NTU1NGYzZDdmMmQ3YWQyOTZlOWYzZjlmYTExMzg4Yjc4ZmQ1NjQuLjQ5Njc3ODhh
MTA1N2ZhODgyYTBhMDFjOGRiZjUwMDJlOTIyNmVjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlci5tbQpAQCAtNjAyLDcgKzYwMiw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhQ
YWdlUmVmOihXS1BhZ2VSZWYpcGFnZVJlZgogCiAgICAgX3BhZ2UgPSBXZWJLaXQ6OnRvSW1wbChw
YWdlUmVmKTsKIAotICAgIF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmKTsKKyAgICBfcGFnZUxvYWRTdGF0
ZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2Vs
Zik7CiAgICAgX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqX3BhZ2VMb2FkU3Rh
dGVPYnNlcnZlcik7CiAKICAgICBBU1NFUlQoIWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJNYXAo
KS5jb250YWlucyhfcGFnZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDEzNzJjYTQxMDZjNzZl
MWQ2MjM1ZDYxNGFkNWMxZTZhNTZlYTA1YTEuLjgxZDM3MDNiMGVlYTgyZTVlNmM2MmYzMjIyYWM0
ZTY4MTlmNmIzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0hUVFBDb29raWVTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCAtICh2b2lkKWFk
ZE9ic2VydmVyOihpZDxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPilvYnNlcnZlcgogICAgIGlm
ICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+
KG9ic2VydmVyKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXS0hU
VFBDb29raWVTdG9yZU9ic2VydmVyPihvYnNlcnZlcik7CiAgICAgX2Nvb2tpZVN0b3JlLT5yZWdp
c3Rlck9ic2VydmVyKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBiYWNl
NWFjN2VjMDBiMTg5OGFkMmRmNzJjYjFiMTk0NDY3ZGNlYzlkLi5lYmFjNTY4ZTNkZGI2ODcwZjg1
YjAxNTA4ZWMyMGZhYWI3ZjIwNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzczLDcgKzM3Myw3IEBAIC0gKGlkIDxf
V0tEb3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogLSAodm9pZClfc2V0RG93bmxv
YWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KWRvd25sb2FkRGVsZWdhdGUKIHsK
ICAgICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQ
b29sLT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWRD
bGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2Fk
Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0
ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVn
YXRlCkBAIC0zODQsNyArMzg0LDcgQEAgLSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1
dG9tYXRpb25EZWxlZ2F0ZQogLSAodm9pZClfc2V0QXV0b21hdGlvbkRlbGVnYXRlOihpZCA8X1dL
QXV0b21hdGlvbkRlbGVnYXRlPilhdXRvbWF0aW9uRGVsZWdhdGUKIHsKICAgICBfYXV0b21hdGlv
bkRlbGVnYXRlID0gYXV0b21hdGlvbkRlbGVnYXRlOwotICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0
b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXV0b21hdGlvbkNsaWVudD4o
c2VsZiwgYXV0b21hdGlvbkRlbGVnYXRlKSk7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0
aW9uQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRv
bWF0aW9uRGVsZWdhdGUpKTsKIH0KIAogLSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIubW0KaW5kZXggOGI2ZGYyNGY4OTUyZDg0ZjYwNzU0NGM2YTMxYTJkZDFi
OGFhMzU1ZC4uYTAwYjIwM2NjOTA1OTMwMWJlY2M0NjFkNjFiNDY3MzJiODU2MTJmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5tbQpAQCAtMTE4LDYgKzExOCw3IEBAIC0gKHZvaWQpcmVtb3ZlQWxs
Q29udGVudFJ1bGVMaXN0cwogfQogCiBjbGFzcyBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRl
IGZpbmFsIDogcHVibGljIFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OkNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJEZWxlZ2F0ZShXS1VzZXJDb250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQg
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQogICAgICAg
ICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIHByaXZhdGU6
CiAKIC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAg
ICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
c3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3Jp
cHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9y
bWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4o
c2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OlVzZXJDb250ZW50
V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJB
dHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4g
b25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpAQCAtMjI5LDcgKzIzMCw3IEBAIC0gKHZv
aWQpX3JlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3Js
ZDooX1dLVXNlckNvbnRlbnRXCiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNT
dHJpbmcgKiluYW1lIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2Vy
Q29udGVudFdvcmxkCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJE
ZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNv
bnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktp
dDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFt
ZSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKICAgICBpZiAoIV91c2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRs
ZXIuZ2V0KCkpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3
aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAzOTFh
MTk5MmUzNTMyZGJlNWYyMWRiNjkxZGQ4MTA4YWFlMmE2NmMuLjA4ZjQyZWM4YjEzYmY3MGJkMmI2
YjM3YmM3ZDgxNTY4MjNkNmM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNzU3LDcgKzc1Nyw3IEBAIC0gKHZvaWQpX2luaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRp
b24KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIF9pbXBsID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNv
bmZpZ3VyYXRpb24uY29weVJlZigpKTsKKyAgICBfaW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpX
ZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2wsIHBhZ2VDb25maWd1cmF0aW9uLmNv
cHlSZWYoKSk7CiAgICAgX3BhZ2UgPSAmX2ltcGwtPnBhZ2UoKTsKIAogICAgIF9pbXBsLT5zZXRB
dXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHModHJ1ZSk7CkBAIC03NjksMTQgKzc2OSwx
NCBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAKICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1l
Rm9yRGVza3RvcFVzZXJBZ2VudChjb25maWd1cmF0aW9uLl9hcHBsaWNhdGlvbk5hbWVGb3JEZXNr
dG9wVXNlckFnZW50KTsKIAotICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKKyAgICBfbmF2aWdhdGlvblN0YXRlID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7CiAgICAgX3BhZ2UtPnNl
dE5hdmlnYXRpb25DbGllbnQoX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTmF2aWdhdGlvbkNsaWVu
dCgpKTsKIAotICAgIF91aURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJRGVs
ZWdhdGU+KHNlbGYpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7Ci0gICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dn
aW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dD4oc2VsZikpOworICAgIF91aURlbGVnYXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdh
dGU+KHNlbGYpOworICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpG
aW5kQ2xpZW50PihzZWxmKSk7CisgICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50
KG1ha2VVbmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOwogCi0g
ICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SWNvbkxv
YWRpbmdEZWxlZ2F0ZT4oc2VsZik7CisgICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBtYWtlVW5p
cXVlPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7CiAKICAgICBfdXNlUGxhdGZv
cm1GaW5kVUkgPSBZRVM7CiAKQEAgLTM0MjUsNyArMzQyNSw3IEBAIC0gKHZvaWQpc2V0QWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6KEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZp
Z2F0aW9uCiAgICAgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7CiAKICAgICBpZiAoYWxsb3dzQmFja0Zvcndh
cmROYXZpZ2F0aW9uR2VzdHVyZXMgJiYgIV9nZXN0dXJlQ29udHJvbGxlcikgewotICAgICAgICBf
Z2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyPigqX3BhZ2UpOworICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5p
cXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2UpOwogICAgICAgICBfZ2Vz
dHVyZUNvbnRyb2xsZXItPmluc3RhbGxTd2lwZUhhbmRsZXIoc2VsZiwgW3NlbGYgc2Nyb2xsVmll
d10pOwogICAgICAgICBpZiAoV0tXZWJWaWV3ICphbHRlcm5hdGVXZWJWaWV3ID0gW19jb25maWd1
cmF0aW9uIF9hbHRlcm5hdGVXZWJWaWV3Rm9yTmF2aWdhdGlvbkdlc3R1cmVzXSkKICAgICAgICAg
ICAgIF9nZXN0dXJlQ29udHJvbGxlci0+c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNl
UGFnZShhbHRlcm5hdGVXZWJWaWV3LT5fcGFnZS5nZXQoKSk7CkBAIC01Njc4LDcgKzU2NzgsNyBA
QCAtICh2b2lkKV9zZXRJbnB1dERlbGVnYXRlOihpZCA8X1dLSW5wdXREZWxlZ2F0ZT4paW5wdXRE
ZWxlZ2F0ZQogICAgIH07CiAKICAgICBpZiAoaW5wdXREZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2Ut
PnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CisgICAg
ICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOwog
ICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobnVsbHB0cik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlv
blNlc3Npb24ubW0KaW5kZXggN2FkMDczYjhjZDZkZDQyMDNlMWE3NjA1OGY3YzdkZjJhOWY4YWQ3
Yi4uMmFkZWVhNzYwYzY5OGIxOGFlNTkxZTU3MDU3MTMyOTVmMjRjNTZkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vz
c2lvbi5tbQpAQCAtNzIsNyArNzIsNyBAQCAtIChpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxl
Z2F0ZT4pZGVsZWdhdGUKIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uU2Vz
c2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQogewogICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAg
IF9zZXNzaW9uLT5zZXRDbGllbnQoZGVsZWdhdGUgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KGRlbGVnYXRlKSA6IG51bGxwdHIpOworICAgIF9zZXNz
aW9uLT5zZXRDbGllbnQoZGVsZWdhdGUgPyBtYWtlVW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNl
c3Npb25DbGllbnQ+KGRlbGVnYXRlKSA6IG51bGxwdHIpOwogfQogCiAtIChOU1N0cmluZyAqKXNl
c3Npb25JZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIubW0KaW5kZXggYjM3YjA1MDUzZjEyNGFjYjcwZmQ2YWRlNmRmNDIwZmU4MjVkNTRjZi4uMGRk
NDA5YTQzZGU2NTMwMGM5ZjBjYzg1NDQ3YWMyZjcxM2VjOTQ5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMzgsNiArMzgsNyBAQCBAZW5kCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGll
bnQgZmluYWwgOiBwdWJsaWMgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIF9XS1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5Q2xpZW50KF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyICpjb250cm9s
bGVyKQogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpAQCAtNzUsNyArNzYsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgbV9yZW1v
dGVJbnNwZWN0b3JQcm94eSA9IFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZSgpOwotICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKKyAgICBtX3JlbW90
ZUluc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpfV0tSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eUNsaWVudD4oc2VsZik7CiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+c2V0Q2xp
ZW50KG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50LmdldCgpKTsKIAogICAgIHJldHVybiBzZWxmOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAK
aW5kZXggOGQyZjg4YWUwMDMyYTBkOTM0NWU2ODAwYTk3ODU4YjQyOGE0ZDZkOS4uMDY4NzBkMjFk
ZWU3Y2E0Zjg5ZGI5ZTM0MmY2ZjBmNWZkM2Y1NGE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0xNjkxLDcgKzE2OTEsNyBA
QCBpbmxpbmUgdm9pZCByZWFkeVNRTGl0ZVN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRl
U3RhdGVtZW50PiYgc3RhdGVtZW50LCBTUQogICAgICAgICBzdGF0ZW1lbnQgPSBudWxscHRyOwog
ICAgIH0KICAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAgICBzdGF0ZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oZGIsIHN0cik7CisgICAgICAgIHN0YXRlbWVudCA9
IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYiwgc3RyKTsKICAgICAgICAgaWYgKHN0YXRl
bWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIExPR19FUlJPUigiUHJl
cGFyaW5nIHN0YXRlbWVudCAlcyBmYWlsZWQiLCBzdHIuYXNjaWkoKS5kYXRhKCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBkMmFmNjRiYWQ4NmE4YTMzZjEzMzU0NzI1ODFi
NzAyZTQxYTY3ZWMyLi4yMTg2NjA0NTE5Mjc2OWJlNmRmZjg1OWE2MzIwNDNkNTEzNTY5YzE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBndWludCBz
aWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbiwgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbiwgR19UWVBFX09CSkVD
VCkKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24pCiAgICAgICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCkBAIC0y
MjMsNyArMjI0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1
Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uID0gYWRv
cHRSZWYobmV3IFdlYkF1dG9tYXRpb25TZXNzaW9uKCkpOwogICAgIHNlc3Npb24tPnByaXYtPnNl
c3Npb24tPnNldFNlc3Npb25JZGVudGlmaWVyKFN0cmluZzo6ZnJvbVVURjgoc2Vzc2lvbi0+cHJp
di0+aWQuZGF0YSgpKSk7Ci0gICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKKyAgICBz
ZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudD4oc2Vzc2lvbikpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9u
U2Vzc2lvbkRpc3Bvc2UoR09iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCmlu
ZGV4IDk3ZTkyNTYwMTc3MzdiNzY2NWFjYzhlYjJmMzU4ZWIyZWM1OTAwYjkuLjI4NThkZjZmMzRk
NGZhNjIxMjA5YmYxZWIxZTEwODg1YWQwNWU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAK
QEAgLTU2LDYgKzU2LDYgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWw6IHB1YmxpYyBB
UEk6OkNvbnRleHRNZW51Q2xpZW50IHsKIAogdm9pZCBhdHRhY2hDb250ZXh0TWVudUNsaWVudFRv
VmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdl
KHdlYlZpZXcpLnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1l
bnVDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5z
ZXRDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3ZWJWaWV3
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCmluZGV4
IGQzMmI1OWM1NDc2NjdhN2VjODc3MTgxMDUyYmQxYTc0OWMwZGJjMWMuLmEzNzNiMjk0NTcxNjc5
MWEyZDRjMzA3YmQ1ZTBhOTI5YzgxNDBhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmNwcApAQCAtNTYsNSArNTYsNSBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bgogCiB2b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQp
KTsKKyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZWFk
NGYyMzQ5OTE2NzA0ZDE3ZDFmMjMwNjQwODlmN2ExYTA0NTk0Zi4uZTc3MWRkNzE4N2U1ODU5YWRi
ZDVhMDE2ZjhjYTkzNWQyOGU4NGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcApAQCAtMTE4LDUgKzEx
OCw1IEBAIGNsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRD
bGllbnQgewogCiB2b2lkIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNv
bnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29s
KHdlYkNvbnRleHQpLnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRD
bGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wo
d2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVudD4o
d2ViQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggMjE4MDgzZTc2OTdhNTEz
OThmMmVlMDk0Y2RiMDY4YzIwODM3YjFmYS4uOWI1ODE4YTk4MzZmMzc2MmQ4OTYyMmUzNjJjM2Zj
OGIyZDNlYmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0yNjcsOCArMjY3LDggQEAgdm9p
ZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJh
c2UsIGNvbnN0IFN0cmluZyYgcGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0RmF2aWNv
bkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IGRhdGFiYXNlLT5wcml2OwotICAgIHByaXYtPmljb25E
YXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8SWNvbkRhdGFiYXNlPigpOwotICAgIHByaXYtPmlj
b25EYXRhYmFzZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SWNvbkRhdGFiYXNl
Q2xpZW50PihkYXRhYmFzZSkpOworICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG1ha2VVbmlxdWU8
SWNvbkRhdGFiYXNlPigpOworICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0Q2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0SWNvbkRhdGFiYXNlQ2xpZW50PihkYXRhYmFzZSkpOwogICAgIEljb25EYXRh
YmFzZTo6ZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNl
dEVuYWJsZWQodHJ1ZSk7CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5n
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDRmOTgwZDRlZTI1OGFjYWM0NTU4MzIzY2E3YmQ3
MWNjZGYzYmVlYjEuLjc2NzVjOWNiM2E1ZWRhZjg4NjRkMTdhMTc5MjE3Y2I5NDIzMzY1YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
aW5kQ29udHJvbGxlci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRG
aW5kQ29udHJvbGxlckNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfZmluZF9jb250cm9sbGVyX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9i
amVjdCk7CiAKICAgICBXZWJLaXRGaW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIgPSBXRUJL
SVRfRklORF9DT05UUk9MTEVSKG9iamVjdCk7Ci0gICAgZ2V0UGFnZShmaW5kQ29udHJvbGxlciku
c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRDb250cm9sbGVy
KSk7CisgICAgZ2V0UGFnZShmaW5kQ29udHJvbGxlcikuc2V0RmluZENsaWVudChtYWtlVW5pcXVl
PEZpbmRDbGllbnQ+KGZpbmRDb250cm9sbGVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEZp
bmRDb250cm9sbGVyR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdW
YWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKaW5kZXggMTM0ZDFj
NmNlYmU1NjdmYzU0ZDk3MGY4NzZiZTAyOTMxZDMyODIyZC4uYmM2N2EzNTdkYzA3NDQ1YTM1Mjhm
ODBmMGFiZDc5ZDA3YzNiYzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKQEAgLTQ4LDUgKzQ4LDUgQEAgY2xhc3Mg
Rm9ybUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkZvcm1DbGllbnQgewogCiB2b2lkIGF0dGFj
aEZvcm1DbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRX
ZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9y
bUNsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNl
dEZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyLmNwcAppbmRleCAyZTE1OTQ1ZGZhZDI5YzMxNTUwZDFhZDNjNGRkMTQ5OGJl
N2I3MjA0Li44Y2JhNDIyZWQ1ZTM4YmY4NGM3NjA1OTRkNmNmMGY2NTg4Y2JlYTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdl
b2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRHZW9sb2NhdGlvbk1hbmFnZXJTdGFydChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFn
ZXIpCiAgICAgfQogCiAgICAgaWYgKCFtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIpIHsK
LSAgICAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbWFuYWdlci0+cHJpdi0+
Z2VvY2x1ZVByb3ZpZGVyID0gbWFrZVVuaXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlcj4o
KTsKICAgICAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zZXRFbmFibGVIaWdo
QWNjdXJhY3kobWFuYWdlci0+cHJpdi0+aGlnaEFjY3VyYWN5RW5hYmxlZCk7CiAgICAgfQogICAg
IG1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlci0+c3RhcnQoW21hbmFnZXJdKEdlb2xvY2F0
aW9uUG9zaXRpb24mJiBjb3JlUG9zaXRpb24sIE9wdGlvbmFsPENTdHJpbmc+IGVycm9yKSB7CkBA
IC0zMTIsNyArMzEyLDcgQEAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiB3ZWJraXRHZW9sb2Nh
dGlvbk1hbmFnZXJDcmVhdGUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHIKIHsKICAgICBhdXRvKiBt
YW5hZ2VyID0gV0VCS0lUX0dFT0xPQ0FUSU9OX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIsIG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5wcml2LT5t
YW5hZ2VyID0gcHJveHk7Ci0gICAgcHJveHktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8
R2VvbG9jYXRpb25Qcm92aWRlcj4obWFuYWdlcikpOworICAgIHByb3h5LT5zZXRQcm92aWRlciht
YWtlVW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXI+KG1hbmFnZXIpKTsKICAgICByZXR1cm4gbWFu
YWdlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCmluZGV4IGI4ZjAxZmIyNGZmMjc2NTRj
MGFkNjA5YWRkMzI0MTk1ZWU0MWNhNTkuLjY1ZmQ3YzY5OTIzODgwMTE1NThjNjdkZWIyNWZkYWEy
N2Y2NmM1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGlj
IEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBAIC02MSw1ICs2Miw1IEBAIGNs
YXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgewog
CiB2b2lkIGF0dGFjaEljb25Mb2FkaW5nQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4od2ViVmlldykpOworICAg
IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VV
bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxl
Q2xpZW50LmNwcAppbmRleCBhOTNmZjI1YjM5YTI5MjU2MDBkMmM0YWVjY2VjYmM3NTcwZDVkZjNk
Li45MjYyYTg0ZGVjZTI1YmYwYmRmNWM1OWI0OGQwMDI1ODUyZjM2YmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0
ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC0xNzksNSArMTc5LDUgQEAgY2xhc3MgV2ViS2l0SW5qZWN0
ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudCB7
CiAKIHZvaWQgYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29u
dGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wo
d2ViQ29udGV4dCkuc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRl
eHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtl
VW5pcXVlPFdlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRp
b25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRO
b3RpZmljYXRpb25Qcm92aWRlci5jcHAKaW5kZXggMjM2ZTgxYzEzOTBiM2VjM2MxNTQ5MTg2ODZi
YWZhNWU1Mzg2NDY4Ny4uNTUxNjM2NDQ3NzU1NzQ3YjcwYWM1ZTc2YjFkMTA0ZDYxYzBiNWNhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZp
Y2F0aW9uUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBXZWJLaXRO
b3RpZmljYXRpb25Qcm92aWRlcjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclBybwogICAgICwgbV9ub3RpZmljYXRpb25NYW5hZ2VyKG5vdGlmaWNhdGlv
bk1hbmFnZXIpCiB7CiAgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uTWFuYWdlcik7Ci0gICAgbV9u
b3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNh
dGlvblByb3ZpZGVyPigqdGhpcykpOworICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJv
dmlkZXIobWFrZVVuaXF1ZTxOb3RpZmljYXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKIH0KIAogV2Vi
S2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5j
cHAKaW5kZXggNWJjZWY2OGY2NWQyMzE4OTgwY2Y5MWRhZTU5M2Q3NjY3MTQ4YTk4OS4uODk2ZTEz
ZGFkOTdiZTdmZjc3NmMwM2JmNmU3ZDAyNzgyZTAzMjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMjI1LDYgKzIy
NSw2IEBAIGNsYXNzIFVJQ2xpZW50IDogcHVibGljIEFQSTo6VUlDbGllbnQgewogCiB2b2lkIGF0
dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0
V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxVSUNs
aWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldFVJ
Q2xpZW50KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50
TWFuYWdlci5jcHAKaW5kZXggNDhiMzhlYWMwOGQ5MTJjOTYzOWVmNTUwOTRiMTBmMWZmYWQxZDlm
OS4uMjM2ZjJiZmI1MTdlOTc0OTg0YTViOTA0NDI4YjQxMmQ0NzJhZjAxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIoV2ViS2l0VXNl
ckMKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4o
bWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwg
U3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3Js
ZCgpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5h
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiB9CiAKQEAgLTI4OCw3
ICsyODgsNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJf
c2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9pbl93b3JsZChXZQogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHdvcmxkTmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJp
bmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOwor
ICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0
TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSks
IHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CiAgICAgcmV0dXJuIG1hbmFnZXIt
PnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
KGhhbmRsZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGJmYzU2N2NlZDViYjE3MDFkM2Fj
OTI3NjdhZWJhYTQyZGIyYzM5N2EuLjU0NGQ5ZTI1NTg3NWE1ZjA3ZTkzNTlkNjU3YjQ1MmFhOGM3
ZGM0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC0zNjcsOSArMzY3LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9D
b250ZXh0KHdlYkNvbnRleHQpOwogCiAgICAgcHJpdi0+Z2VvbG9jYXRpb25NYW5hZ2VyID0gYWRv
cHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+
c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSkpOwotICAgIHByaXYtPm5v
dGlmaWNhdGlvblByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5PigpLCB3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92aWRl
ciA9IG1ha2VVbmlxdWU8V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYtPnByb2Nlc3NQ
b29sLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSwgd2ViQ29udGV4
dCk7CiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBw
cml2LT5yZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4od2ViQ29udGV4dCk7CisgICAgcHJpdi0+cmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyID0gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQ
cm90b2NvbEhhbmRsZXI+KHdlYkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAgLTY3OCw3ICs2Nzgs
NyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKFdlYktp
dFdlYkNvbnRleHQqIGNvbnRleHQsIGdib29sZQogICAgICAgICAgICAgZ193YXJuaW5nKCJOb3Qg
ZW5hYmxpbmcgYXV0b21hdGlvbiBvbiBXZWJLaXRXZWJDb250ZXh0IGJlY2F1c2UgdGhlcmUncyBh
bm90aGVyIGNvbnRleHQgd2l0aCBhdXRvbWF0aW9uIGVuYWJsZWQsIG9ubHkgb25lIGlzIGFsbG93
ZWQiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5w
cml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRBdXRvbWF0aW9u
Q2xpZW50Pihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVu
dCA9IG1ha2VVbmlxdWU8V2ViS2l0QXV0b21hdGlvbkNsaWVudD4oY29udGV4dCk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBudWxscHRyOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwCmluZGV4IGIyMzlhYzRlMTllNjNkMzNhODY5ZGVmYjY2ZmMzYzBiNDUwMGI3ODUu
LmQzMzY0ZGE2YzA4YWE5YWM3YTQ2NThiZTk4YWZjNGU3MjY3ZmE1MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC03MjUs
NyArNzI1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3Qq
IG9iamVjdCkKIAogICAgIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhwcml2
LT5jb250ZXh0LmdldCgpLCB3ZWJWaWV3LCBwcml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCks
IHByaXYtPnJlbGF0ZWRWaWV3KTsKIAotICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKKyAgICBwcml2LT5sb2Fk
T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CiAg
ICAgZ2V0UGFnZSh3ZWJWaWV3KS5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKnByaXYtPmxv
YWRPYnNlcnZlcik7CiAKICAgICAvLyBUaGUgcmVsYXRlZCB2aWV3IGlzIG9ubHkgdmFsaWQgZHVy
aW5nIHRoZSBjb25zdHJ1Y3Rpb24uCkBAIC03NDEsNyArNzQxLDcgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oV1BFKQotICAgIHByaXYtPnZpZXctPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YlZpZXdDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICBwcml2LT52aWV3LT5zZXRDbGllbnQobWFrZVVu
aXF1ZTxXZWJWaWV3Q2xpZW50Pih3ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIC8vIFRoaXMgbmVl
ZHMgdG8gYmUgYWZ0ZXIgYXR0YWNoVUlDbGllbnRUb1ZpZXcoKSBiZWNhdXNlIFdlYlBhZ2VQcm94
eTo6c2V0VUlDbGllbnQoKSBjYWxscyBzZXRDYW5SdW5Nb2RhbCgpIHdpdGggdHJ1ZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5k
ZXggZjA5ZDZjN2U5MjA2ODNhNzU2NjUyNzY5NjdlNzQ3Y2M2Y2VlYjQ4MS4uMDZiM2I4MzYwNjVk
OWY2NmEwNzk4YTIwOTU1MTNjYTg2OGIzMWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUGFn
ZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKEd0a1dpZGdldCogdmlld1dpZGdldCkKIC8vIFBh
Z2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2lu
Z0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdp
bmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndlYmtp
dFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSwg
cHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKaW5kZXggMzFlMDk3M2Zl
MTAwM2M2ZWE2NTIzMDYxYTY3Yzk0OWQ1M2ViZDZiNy4uMmQxYzJjYjM2OGE5OTMzMTY5NzQyNDZh
MGVkNTk5YzI4ZGNhZTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcApAQCAtNTE5LDcgKzUxOSw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0aW9ucyhXZWJLaXRFbW9qaUNo
b29zZXIqIGNob29zZXIsIEd0CiAgICAgICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlv
bnNUaW1lciA9IG51bGxwdHI7CiAgICAgfTsKIAotICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRl
U2VjdGlvbnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RGTW92ZShw
b3B1bGF0ZVNlY3Rpb25zKSk7CisgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1Rp
bWVyID0gbWFrZVVuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMp
KTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnNldFByaW9yaXR5
KEdfUFJJT1JJVFlfREVGQVVMVF9JRExFKTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNl
Y3Rpb25zVGltZXItPnNldE5hbWUoIltXZWJLaXRFbW9qaUNob29zZXJdIHBvcHVsYXRlIHNlY3Rp
b25zIHRpbWVyIik7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5z
dGFydFJlcGVhdGluZyh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuY3BwCmluZGV4IDBmNjc0ODY0NTJjZDFmYTg3YTgyODYyZTdlNjA1NzM0ZGZjMzU5Njgu
LmVhMGJjMmRlYTFmNDVhODI0MjRhMzJiYzM1ODMxY2FkYTQzYWJjYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTEwNSwxMyArMTA1LDEzIEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KFdlYktp
dFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlCiAgICAgYXV0byogdXNlckNvbnRlbnRNYW5hZ2VyID0g
d2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KTsKICAgICBh
dXRvIHVzZXJDb250ZW50TWFuYWdlclJlc3VsdCA9IG1fdXNlckNvbnRlbnRNYW5hZ2Vycy5hZGQo
dXNlckNvbnRlbnRNYW5hZ2VyKTsKICAgICBpZiAodXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0Lmlz
TmV3RW50cnkpIHsKLSAgICAgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwg
Imluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAg
ICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVu
aXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJD
b250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1h
bmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5h
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAgICAgICAgIGdfb2Jq
ZWN0X3dlYWtfcmVmKEdfT0JKRUNUKHVzZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nh
c3Q8R1dlYWtOb3RpZnk+KHVzZXJDb250ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAg
IH0KIAogICAgIGF1dG8qIGNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVz
dFVSTC5ob3N0QW5kUG9ydCgpLCBbdGhpcywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3Qo
KS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5o
b3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIAogICAgIEdTdHJpbmcqIGh0bWwgPSBnX3N0
cmluZ19uZXcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkluc3BlY3Rvci5jcHAKaW5kZXggMGYwMTcxMWU3OTYxZThiMDBjNWU1NzRkMjg4NTBk
MDViMjQxZjZlYy4uZjEwYTBkYTZkMDMzZThmZTEyNDg3ZjY4MjVmOGMwYzc4NmQxOGJjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5z
cGVjdG9yLmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIFdlYktpdFdlYkluc3BlY3Rvciogd2Via2l0
V2ViSW5zcGVjdG9yQ3JlYXRlKFdlYkluc3BlY3RvclByb3h5KiB3ZWJJbnNwZWN0b3IpCiB7CiAg
ICAgV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUihn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiwgTlVMTCkpOwogICAgIGluc3Bl
Y3Rvci0+cHJpdi0+d2ViSW5zcGVjdG9yID0gd2ViSW5zcGVjdG9yOwotICAgIHdlYkluc3BlY3Rv
ci0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50PihpbnNw
ZWN0b3IpKTsKKyAgICB3ZWJJbnNwZWN0b3ItPnNldENsaWVudChtYWtlVW5pcXVlPFdlYktpdElu
c3BlY3RvckNsaWVudD4oaW5zcGVjdG9yKSk7CiAgICAgcmV0dXJuIGluc3BlY3RvcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAppbmRleCAxYjlkZDhkMWY0NjAyMTRmNWE3NzI2NzJjMmZiNjUzNzBiNTIwYzVlLi44
OGIzY2Y0M2JmZTY4ZWU5N2M3MzFiNzY0ZDQ0OTkwYTdiZmM1YThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAt
NTY2LDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQo
R09iamVjdCogb2JqZWN0KQogICAgIGd0a19kcmFnX2Rlc3Rfc2V0X3RhcmdldF9saXN0KHZpZXdX
aWRnZXQsIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLnRhcmdldExpc3QoKSk7CiAKICAg
ICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShv
YmplY3QpLT5wcml2OwotICAgIHByaXYtPnBhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VDbGllbnRJbXBsPih2aWV3V2lkZ2V0KTsKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gbWFrZVVu
aXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlld1dpZGdldCk7CiAgICAgcHJpdi0+ZGlhbG9nID0gbnVs
bHB0cjsKIH0KIApAQCAtMTIyMCw3ICsxMjIwLDcgQEAgR2VzdHVyZUNvbnRyb2xsZXImIHdlYmtp
dFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcK
IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJp
djsKICAgICBpZiAoIXByaXYtPmdlc3R1cmVDb250cm9sbGVyKQotICAgICAgICBwcml2LT5nZXN0
dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VzdHVyZUNvbnRyb2xsZXI+KEdUS19X
SURHRVQod2ViVmlld0Jhc2UpLCBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoR2VzdHVyZUNvbnRyb2xs
ZXI+KHdlYlZpZXdCYXNlKSk7CisgICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVyID0gbWFr
ZVVuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSksIG1ha2VV
bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmlld0Jhc2UpKTsKICAgICByZXR1cm4g
KnByaXYtPmdlc3R1cmVDb250cm9sbGVyOwogfQogCkBAIC0xNTAxLDcgKzE1MDEsNyBAQCBEcmFn
QW5kRHJvcEhhbmRsZXImIHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5kbGVyKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJp
diA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVy
KQotICAgICAgICBwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERy
YWdBbmREcm9wSGFuZGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CisgICAgICAgIHByaXYtPmRyYWdB
bmREcm9wSGFuZGxlciA9IG1ha2VVbmlxdWU8RHJhZ0FuZERyb3BIYW5kbGVyPigqcHJpdi0+cGFn
ZVByb3h5KTsKICAgICByZXR1cm4gKnByaXYtPmRyYWdBbmREcm9wSGFuZGxlcjsKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
a2l0V2ViVmlld0Jhc2UKICAgICBpZiAocHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyKQogICAg
ICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXItPmNvbm5lY3RUb1Byb2Nlc3MoKTsKICAg
ICBlbHNlIHsKLSAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7
CisgICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAgICAgICBwcml2
LT52aWV3R2VzdHVyZUNvbnRyb2xsZXItPnNldFN3aXBlR2VzdHVyZUVuYWJsZWQocHJpdi0+aXNC
YWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlRW5hYmxlZCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAyY2FiMmUwNTM4NmQ0MmIzNzFm
NDQwNmFiNzFhN2Y2NTkzMGY3ZDc3Li4xNDYwM2Q1YWZlYmFmNmRlZTAxMTk3OTU3NzAzODgzNDlk
NGU3YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAt
ODk1LDYgKzg5NSw3IEBAIC0gKHZvaWQpbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnQKIHsK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGNsYXNzIEljb25M
b2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IElj
b25Mb2FkaW5nQ2xpZW50KFdLVmlldyAqd2tWaWV3KQogICAgICAgICAgICAgOiBtX3drVmlldyh3
a1ZpZXcpCkBAIC05MzIsNyArOTMzLDcgQEAgLSAodm9pZCltYXliZUluc3RhbGxJY29uTG9hZGlu
Z0NsaWVudAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgaWYg
KFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpJY29uTG9hZGluZ0NsaWVudDo6ZGVsZWdhdGVTZWxl
Y3RvcigpXSkKLSAgICAgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCkuc2V0SWNvbkxvYWRpbmdDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oc2VsZikpOworICAgICAgICBf
ZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEljb25M
b2FkaW5nQ2xpZW50PihzZWxmKSk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1l
OihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nl
c3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZp
Z3VyYXRpb24KQEAgLTk0NCw3ICs5NDUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJgogICAg
IFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAogICAgIF9kYXRhID0gW1tXS1ZpZXdEYXRh
IGFsbG9jXSBpbml0XTsKLSAgICBfZGF0YS0+X2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6V2ViVmlld0ltcGw+KHNlbGYsIG51bGxwdHIsIHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKTsKKyAgICBfZGF0YS0+X2ltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6V2ViVmll
d0ltcGw+KHNlbGYsIG51bGxwdHIsIHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKIAogICAgIFtzZWxmIG1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRl
eCA4NTEyOWE1NDg3YzlmZmJlZDU2NjQ2Y2MxMGRkMTg4M2M5ODc1NmQzLi5lMjA4YTVjNTVkNzU4
ODU3M2RmZjQzNjAzMzc3ZWY4ZDE2MzU4NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdLV1BFOjpW
aWV3JiB2aWV3KQogICAgIDogbV92aWV3KHZpZXcpCi0gICAgLCBtX3Njcm9sbEdlc3R1cmVDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI+KCkpCisgICAg
LCBtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyKG1ha2VVbmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRy
b2xsZXI+KCkpCiB7CiB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgSVBDOjpBdHRhY2htZW50IFBhZ2VD
bGllbnRJbXBsOjpob3N0RmlsZURlc2NyaXB0b3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2lu
Z0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdp
bmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cz4obV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNl
dFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCmluZGV4IGJlNTBmMTI3NGU4YzFmYTQ5MTA5
YWEyODU1YjhiYjQxNTcxNzA0NGYuLjEyZTMyZmFkNDAwMjhjNzdlNTcwMzA5Mjg0OTg0NDBkMDMw
Y2UwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApA
QCAtNDIsOCArNDIsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogbmFtZXNwYWNlIFdLV1BF
IHsKIAogVmlldzo6VmlldyhzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZCwgY29uc3Qg
QVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgYmFzZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2NsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Vmlld0NsaWVudD4oKSkKLSAgICAsIG1fcGFnZUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisgICAgOiBtX2NsaWVu
dChtYWtlVW5pcXVlPEFQSTo6Vmlld0NsaWVudD4oKSkKKyAgICAsIG1fcGFnZUNsaWVudChtYWtl
VW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCiAgICAgLCBtX3NpemUgeyA4MDAsIDYwMCB9
CiAgICAgLCBtX3ZpZXdTdGF0ZUZsYWdzIHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgV2ViQ29yZTo6QWN0
aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93
IH0KICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQpAQCAtMTg0LDcgKzE4NCw3IEBAIFZpZXc6On5W
aWV3KCkKIHZvaWQgVmlldzo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlZpZXdDbGll
bnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpOworICAgICAgICBtX2NsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQg
PSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL3F0L1dQRVF0Vmlldy5jcHAKaW5kZXggZTFkYzg1N2ZmOTk1ZWQwY2U2YTg1MzY1OWNjNWIx
MzU2MWNiMzY2Yy4uYjRmMjdiNmQzNGUyNDJiYTU1MzVhYjViMmU0ZWNlNTMxNWQwOWQzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENhbGxi
YWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQgZXZlbnQsCiAKICAgICBpZiAoc3Rh
dHVzU2V0KSB7CiAgICAgICAgIFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVz
dFByaXZhdGUodmlldy0+dXJsKCksIGxvYWRTdGF0dXMsICIiKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5p
cXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgICAgICBR
X0VNSVQgdmlldy0+bG9hZGluZ0NoYW5nZWQobG9hZFJlcXVlc3QuZ2V0KCkpOwogICAgIH0KIH0K
QEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFdQRVF0Vmlldzo6bm90aWZ5TG9hZEZhaWxlZENhbGxi
YWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0CiAgICAgICAgIGxvYWRT
dGF0dXMgPSBXUEVRdFZpZXc6OkxvYWRTdGF0dXM6OkxvYWRGYWlsZWRTdGF0dXM7CiAKICAgICBX
UEVRdFZpZXdMb2FkUmVxdWVzdFByaXZhdGUgbG9hZFJlcXVlc3RQcml2YXRlKFFVcmwoUVN0cmlu
ZyhmYWlsaW5nVVJJKSksIGxvYWRTdGF0dXMsIGVycm9yLT5tZXNzYWdlKTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gbWFrZVVuaXF1
ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKICAgICBRX0VNSVQg
dmlldy0+bG9hZGluZ0NoYW5nZWQobG9hZFJlcXVlc3QuZ2V0KCkpOwogfQogCkBAIC00MzksNyAr
NDM5LDcgQEAgc3RhdGljIHZvaWQganNBc3luY1JlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIKICovCiB2b2lkIFdQRVF0Vmlldzo6cnVu
SmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFFKU1ZhbHVlJiBjYWxsYmFj
aykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4gZGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4oY2FsbGJhY2ssIFFQb2lu
dGVyPFdQRVF0Vmlldz4odGhpcykpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2Fs
bGJhY2tEYXRhPiBkYXRhID0gbWFrZVVuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxs
YmFjaywgUVBvaW50ZXI8V1BFUXRWaWV3Pih0aGlzKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3J1
bl9qYXZhc2NyaXB0KG1fd2ViVmlldy5nZXQoKSwgc2NyaXB0LnRvVXRmOCgpLmNvbnN0RGF0YSgp
LCBudWxscHRyLCBqc0FzeW5jUmVhZHlDYWxsYmFjaywgZGF0YS5yZWxlYXNlKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0Jh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdC
YWNrZW5kLmNwcAppbmRleCBhODUyNmNlZDAyMGY2MzQ0ZTcyZmJjYzNhYTQ0OWMyZGQzYWJkMWY5
Li4xM2ZkMzdhZWZmMmI2NTM1ZDU0ZjMxNGM0MTZlMWNiODY4ZTNlODI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0JhY2tlbmQ+IFdQ
RVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZShjb25zdCBRU2l6ZUYmIHNpemUsIFEKICAgICBpZiAoIWVn
bENvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8V1BFUXRWaWV3QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxheSwgZWdsQ29udGV4dCwg
Y29udGV4dCwgdmlldyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFUXRWaWV3QmFja2VuZD4o
c2l6ZSwgZWdsRGlzcGxheSwgZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7CiB9CiAKIFdQRVF0
Vmlld0JhY2tlbmQ6OldQRVF0Vmlld0JhY2tlbmQoY29uc3QgUVNpemVGJiBzaXplLCBFR0xEaXNw
bGF5IGRpc3BsYXksIEVHTENvbnRleHQgZWdsQ29udGV4dCwgUVBvaW50ZXI8UU9wZW5HTENvbnRl
eHQ+IGNvbnRleHQsIFFQb2ludGVyPFdQRVF0Vmlldz4gdmlldykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKaW5kZXggY2NlNWM0ODE3YTgwNDkxN2NkYzE5OWMxYjAxNjBlMjU2ZTliZTI5Ny4uYTU5MTUw
ZGI3YTQwZGM3YmMxNWRiNTFiZThlZjRlMTEzNTZkYzUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKQEAgLTczLDExICs3MywxMSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0UGFnZUxv
YWRUaW1lb3V0ID0gMzAwX3M7CiBzdGF0aWMgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSBkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDsKIAog
V2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRpb25TZXNzaW9uKCkKLSAgICA6IG1fY2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkKKyAg
ICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkK
ICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRS
b3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZG9tYWluRGlzcGF0Y2hlcihBdXRvbWF0aW9uQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2JhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAs
IG1fZG9tYWluTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNw
YXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZG9tYWluTm90aWZpZXIobWFrZVVu
aXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fbG9hZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYkF1dG9tYXRpb25TZXNz
aW9uOjpsb2FkVGltZXJGaXJlZCkKIHsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApp
bmRleCA2YjA5YmFkYjhkMGNlYmFiZjJjNjlmNjAwOWIxYmQxZDIzYzA5ZTU4Li41M2IzNzcwN2U4
N2M1MWRjNGFlOWQ2MzliMWQ0ZjMyNjM4MDY4YjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNl
aXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNv
ZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92
ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKaW5kZXggMTBhOGU0MjQxM2Iy
OWFmZmI2Mzc3ZDg0YTA5YmU1MTFiZDI1MWQ1Yy4uZGU0MGZjOGYzMTc2OTc1YjE1MmM0ZWZhYTQw
MTU3Yzk0ZjJmYTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJs
aWMgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoaWQg
PF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCmluZGV4IGIwMTFkZDNhNzIz
OTczMjA1Y2M2ZGY0Y2M2NmE2NzkwNmMwMjliMGQuLjA3NDM3OTA0ZjFlNDIzMGIzMTU4MmE5ZGY0
MmMyM2MxNGQ2MDVhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0ljb25Mb2FkaW5nRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0RlbGVnYXRlKFdLV2Vi
VmlldyAqKTsKICAgICB+SWNvbkxvYWRpbmdEZWxlZ2F0ZSgpOwpAQCAtNDgsNiArNDksNyBAQCBj
bGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlIHsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBJY29uTG9h
ZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJY29u
TG9hZGluZ0NsaWVudChJY29uTG9hZGluZ0RlbGVnYXRlJik7CiAgICAgICAgIH5JY29uTG9hZGlu
Z0NsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25M
b2FkaW5nRGVsZWdhdGUubW0KaW5kZXggYTM0NGRmZjljZTBkNTM1Y2EzMGRiMmJlYjViY2JkN2Mw
ZDc0Y2ZiNC4uMTYzZmI5NTJlZTBlYTliNzFhM2Q0OWQzZGQ5N2NlMDA0M2NjNjhmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRl
Lm1tCkBAIC00NCw3ICs0NCw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6On5JY29uTG9hZGluZ0Rl
bGVnYXRlKCkKIAogc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+IEljb25M
b2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oKnRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CiB9CiAKIFJldGFpblB0cjxpZCA8
X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4gPiBJY29uTG9hZGluZ0RlbGVnYXRlOjpkZWxlZ2F0ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBhNTFh
MjIzNjIzODQxNTFhYjExZDQ4OTQzNjlmOGExODU4MDA2N2RhLi5mNTEzN2Y5Y2M3MzE2Mzg4ZTYx
ZGUxMDc3M2ZmMzQyODU2MjUwNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW0KQEAgLTc4LDEzICs3OCwxMyBAQCBVSURlbGVnYXRlOjp+VUlEZWxlZ2F0
ZSgpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250
ZXh0TWVudUNsaWVudD4gVUlEZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVDbGllbnQoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50PigqdGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKIH0KICNlbmRp
ZgogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4gVUlEZWxlZ2F0ZTo6Y3JlYXRlVUlD
bGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50PigqdGhpcyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRy
PGlkIDxXS1VJRGVsZWdhdGU+ID4gVUlEZWxlZ2F0ZTo6ZGVsZWdhdGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmNwcAppbmRleCA0OGMyYjJiNGUwNjEwNjkyNzJhZWI4Yjk0YTIzNGVhYTkyNmFm
NzZkLi45MWNmOTQ4MGM3NTE4Y2Q5YmIxN2U5ZmNhNGU5MTZkMGIwNzNiMDhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmNwcApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpTb3VyY2VQcm94eSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZl
ciwgcHVibGljIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNvdXJjZVByb3h5KHVpbnQ2NF90IGlkLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmIHNvdXJjZSkKICAgICAgICAgOiBtX2lkKGlkKQpAQCAtMTY4LDcgKzE2OSw3IEBAIHZvaWQg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJl
RGV2aWNlV2l0aENvbnN0cmFpCiAgICAgICAgIHNvdXJjZS0+c2V0SXNSZW1vdGUodHJ1ZSk7CiAg
ICAgICAgIHNldHRpbmdzID0gc291cmNlLT5zZXR0aW5ncygpOwogICAgICAgICBBU1NFUlQoIW1f
cHJveGllcy5jb250YWlucyhpZCkpOwotICAgICAgICBtX3Byb3hpZXMuYWRkKGlkLCBzdGQ6Om1h
a2VfdW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1v
dmUoc291cmNlKSkpOworICAgICAgICBtX3Byb3hpZXMuYWRkKGlkLCBtYWtlVW5pcXVlPFNvdXJj
ZVByb3h5PihpZCwgKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc291cmNlKSkpOwog
ICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29uc3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9y
RXJyb3IuZXJyb3JNZXNzYWdlKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZWVkZWQsIGlu
dmFsaWRDb25zdHJhaW50cywgV1RGTW92ZShzZXR0aW5ncykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5oCmluZGV4IDljYTZmYTM1MzQ5NjAxODAzZGY1ZDNkMWIyYWJhMzE2NTU3NDBjMzkuLjliZGRi
OTkwOWRmN2U4ZmVmMWU1NDgwNmNiZTZiYzVjNDBjZmM1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgU2hhcmVkTWVtb3J5OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OwogCiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IDogcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShXZWJQcm9j
ZXNzUHJveHkmKTsKICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
aW5kZXggMzA3MGQ1NzQ0M2ZkZjcxOTYwODYwMzBlM2U2MzE0MWUwNjc4NTgyNi4uZTVlMzJkMmZh
MmEwODYwNDE3YzZjZjgwZDdiY2U1OWI5YTczOWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0xMzUsNyArMTM1
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBpZiAo
IVtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJL
aXRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciJdKQogICAgICAgICBpbnN0YWxsTWVtb3J5
UHJlc3N1cmVIYW5kbGVyKCk7CiAKLSAgICBzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+
KCkpOworICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVl
PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CiB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0
YXJ0RGlzcGxheUxpbmsoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1bnNpZ25lZCBvYnNl
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgYXV0byBkaXNwbGF5
TGluayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpbms+KGRpc3BsYXlJRCk7CisgICAgYXV0
byBkaXNwbGF5TGluayA9IG1ha2VVbmlxdWU8RGlzcGxheUxpbms+KGRpc3BsYXlJRCk7CiAgICAg
ZGlzcGxheUxpbmstPmFkZE9ic2VydmVyKGNvbm5lY3Rpb24sIG9ic2VydmVySUQpOwogICAgIG1f
ZGlzcGxheUxpbmtzLmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlMaW5rKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmlu
ZGV4IDVjMjFjYTc1YTE4MjljNTBmMWQ4MmY1Nzc3OGI0ZTg2ZTY5ZDcwZWEuLmIxZWM4NDZiN2I0
NjA1NDhjZTBmODZkN2E1ZDExN2E2NzY3OGM0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0yMDUsNyArMjA1
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3Bl
bmRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCkKICAgICBhdXRvIGJhY2tncm91bmRBY3Rpdml0
eVRpbWVvdXRIYW5kbGVyID0gW2FjdGl2aXR5VG9rZW4gPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHk6OnBy
b2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5kIGFj
dGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdldCgpKTsKICAgICB9OwotICAgIG1fdW5leHBl
Y3RlZEFjdGl2aXR5VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVP
bmVTaG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1
bmV4cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CisgICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1l
ciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92ZShi
YWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0
aW9uKTsKICAgICBjb21wbGV0aW9uKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggZjE3NmYxYTY1YTk5MmM1MWFjMzQ0ZWQw
MDg4NTdlMDEzZWY5OTRiMS4uMzdmNTRkYTRhZDJkNmEyNTQ3YzFkZDM1OWI4OTVjOGE1NGEyNTk4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTEzMzQsNyArMTMzNCw3IEBAIHN0YXRpYyBOU1RyYWNraW5nQXJlYU9wdGlvbnMgdHJhY2tpbmdB
cmVhT3B0aW9ucygpCiAKIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJ
bXBsRGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViVmlldywgV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQogICAgIDogbV92aWV3KHZpZXcpCi0gICAgLCBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlldywgb3V0ZXJXZWJWaWV3KSkKKyAgICAsIG1fcGFnZUNs
aWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQogICAg
ICwgbV9wYWdlKHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSkpCiAgICAgLCBtX25lZWRzVmlld0ZyYW1lSW5XaW5kb3dDb29yZGlu
YXRlcyhtX3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1Z2luc0VuYWJsZWQoKSkKICAgICAsIG1faW50
cmluc2ljQ29udGVudFNpemUoQ0dTaXplTWFrZShOU1ZpZXdOb0ludHJpbnNpY01ldHJpYywgTlNW
aWV3Tm9JbnRyaW5zaWNNZXRyaWMpKQpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgV2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmll
dyAqb3V0ZXJXZWIKICAgICB2aWV3LmxheWVyQ29udGVudHNQbGFjZW1lbnQgPSBOU1ZpZXdMYXll
ckNvbnRlbnRzUGxhY2VtZW50VG9wTGVmdDsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OkZ1bGxzY3JlZW5DbGllbnQ+KHZpZXcpKTsKKyAgICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KHZpZXcpKTsKICNlbmRpZgog
CiAgICAgV2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMTcz
MCw5ICsxNzMwLDkgQEAgQ0dTaXplIFdlYlZpZXdJbXBsOjpmaXhlZExheW91dFNpemUoKSBjb25z
dAogc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4gV2ViVmlld0ltcGw6
OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewogICAg
IGlmIChbW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5
OkAiV2ViS2l0MlVzZVJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIl0gYm9vbFZhbHVlXSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk+KG1f
cGFnZSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKIH0KIAogYm9vbCBXZWJWaWV3SW1w
bDo6aXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nKCkgY29uc3QKQEAgLTMzNzUsNyArMzM3NSw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKIHZvaWQgV2ViVmlld0lt
cGw6OnNldFRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvciYgdGV4dEluZGljYXRv
ciwgV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lIGxpZmV0aW1lKQogewogICAg
IGlmICghbV90ZXh0SW5kaWNhdG9yV2luZG93KQotICAgICAgICBtX3RleHRJbmRpY2F0b3JXaW5k
b3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c+KG1fdmll
dy5nZXRBdXRvcmVsZWFzZWQoKSk7CisgICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxl
YXNlZCgpKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRl
cyA9IFtbbV92aWV3IHdpbmRvd10gY29udmVydFJlY3RUb1NjcmVlbjpbbV92aWV3IGNvbnZlcnRS
ZWN0OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygp
IHRvVmlldzpuaWxdXTsKICAgICBtX3RleHRJbmRpY2F0b3JXaW5kb3ctPnNldFRleHRJbmRpY2F0
b3IodGV4dEluZGljYXRvciwgTlNSZWN0VG9DR1JlY3QodGV4dEJvdW5kaW5nUmVjdEluU2NyZWVu
Q29vcmRpbmF0ZXMpLCBsaWZldGltZSk7CkBAIC00Mzc3LDcgKzQzNzcsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSkKIFZpZXdHZXN0dXJlQ29udHJvbGxlciYgV2ViVmlld0ltcGw6OmVuc3VyZUdl
c3R1cmVDb250cm9sbGVyKCkKIHsKICAgICBpZiAoIW1fZ2VzdHVyZUNvbnRyb2xsZXIpCi0gICAg
ICAgIG1fZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlQ29u
dHJvbGxlcj4obV9wYWdlKTsKKyAgICAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOwogICAgIHJldHVybiAqbV9nZXN0dXJl
Q29udHJvbGxlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCA4ZWFjZDkxYTFlNmFlNDg1NjVjOWU1
OGNjZGExMGYzZWE0NDRjMjc2Li42MjY0ZGRiN2Y3OTBjMmZjY2NkZjQxMGRmNmUyYzkzMzdiNjVk
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUlu
Zm8mIHVwCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9iYWNraW5nU3RvcmUpCi0gICAg
ICAgIG1fYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmU+KHVwZGF0
ZUluZm8udmlld1NpemUsIHVwZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IsIG1fd2ViUGFnZVBy
b3h5KTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZT4o
dXBkYXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQ
YWdlUHJveHkpOwogCiAgICAgbV9iYWNraW5nU3RvcmUtPmluY29ycG9yYXRlVXBkYXRlKHVwZGF0
ZUluZm8pOwogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljczo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmMKICAg
ICB9CiAKICAgICBpZiAoIW1fZHJhd2luZ01vbml0b3IpCi0gICAgICAgIG1fZHJhd2luZ01vbml0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNz
OjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2RyYXdpbmdNb25p
dG9yID0gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJh
d2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsKICAgICBtX2RyYXdpbmdNb25pdG9yLT5zdGFy
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IGEyZDAzODZhY2Y1
ZDhhZDUzNWM3OTEyYTg4NmNiZDBmMDA1NDc4NjguLjZhYTI0N2JkODc3MDIxNTg4MjQ3MTZhNjY1
ZWUxYjc4Njk2YTZhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3JpZ2luPiBEZXZpY2VJZEhh
c2hTYWx0U3RvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGhh
c2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RG
TW92ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUocGFyZW50U2VjdXJpdHlP
cmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKKyAgICBhdXRv
IGhhc2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92
ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUocGFyZW50U2VjdXJpdHlPcmln
aW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAogICAgIGhhc2hT
YWx0Rm9yT3JpZ2luLT5sYXN0VGltZVVzZWQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFz
dFRpbWVVc2VkKTsKIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwoU2VjdXJpdHlPcmln
CiAKICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7
CiAKLSAgICAgICAgYXV0byBuZXdIYXNoU2FsdEZvck9yaWdpbiA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoZG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHBhcmVu
dE9yaWdpbiksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgICAgICBhdXRvIG5ld0hh
c2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShk
b2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhh
c2hTYWx0KSk7CiAKICAgICAgICAgcmV0dXJuIG5ld0hhc2hTYWx0Rm9yT3JpZ2luOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAppbmRleCA2M2E0OWI1NjdkYjhkYTUzZjU3OTlh
NTAzNDRmMzEyNTFmNWU5Njg0Li5kYzVhZGYxYTNlNGI5NGFhMDE0YjQzMGVmYTY2ZGUwOWY5NWNh
N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwCkBAIC04OCwxMSArODgsMTEgQEAgRG93bmxvYWRQcm94eSYgRG93
bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wKIAogICAgIGlmIChtX2Rvd25sb2Fkcy5zaXplKCkgPT0gMSAmJiBtX3Nob3VsZFRha2VB
c3NlcnRpb24pIHsKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkVUlBc3NlcnRpb24pOwotICAg
ICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZFVJQXNz
ZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lE
KCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29y
a2luZyk7CiAKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkTmV0d29ya2luZ0Fzc2VydGlvbik7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzcyk7Ci0gICAgICAgIG1fZG93bmxvYWRO
ZXR3b3JraW5nQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPiht
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fZG93bmxvYWROZXR3
b3JraW5nQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0
ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJVSVByb2Nlc3MgdG9vayAnV2ViS2l0IGRvd25sb2FkcycgYXNzZXJ0aW9ucyBm
b3IgVUlQcm9jZXNzIGFuZCBOZXR3b3JrUHJvY2VzcyIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCAzZGVmNWQ3OWYwN2NiOTE0MGI4MjU2
MmRiOWY2ZjJiYzZkMGY3MmY2Li41NjA2YzUxMTY1MzRmNDNjZmM4MDZkNTExZDQxZWQ5OGNmYjI1
MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC01
Miw2ICs1Miw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHJvdGVjdGVkIElQQzo6TWVzc2FnZVNlbmRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhd2luZ0FyZWFQcm94eSk7CiAKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFk
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQ
cm92aWRlci5jcHAKaW5kZXggZWNhYWMzMDFiNGJkZjQ2ZjJjODljZGRlNzFkMTkzMjU0NTE0ZjY0
MC4uZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIyM2Q1NGI5ODJhZWNmZDEwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5l
Y3RlZEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQKICAgICBmb3IgKGF1dG8q
IGdhbWVwYWQgOiBpbml0aWFsR2FtZXBhZHMpIHsKICAgICAgICAgaWYgKCFnYW1lcGFkKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOworICAgICAgICBtX2dhbWVw
YWRzW2dhbWVwYWQtPmluZGV4KCldID0gbWFrZVVuaXF1ZTxVSUdhbWVwYWQ+KCpnYW1lcGFkKTsK
ICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHBvb2wgOiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBh
ZHMpCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1H
YW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCkKICAgICAgICAgbV9nYW1l
cGFkcy5ncm93KGdhbWVwYWQuaW5kZXgoKSArIDEpOwogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRz
W2dhbWVwYWQuaW5kZXgoKV0pOwotICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IHN0
ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVw
YWQuaW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oZ2FtZXBhZCk7CiAKICAgICBzY2hl
ZHVsZUdhbWVwYWRTdGF0ZVN5bmMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKaW5kZXgg
N2Q1NmIwYTI0NjNkZWRmMTY2OTU4YzI4ZmZiNzVhYTBlMmNlNTFmMS4uZTZiYzBhNDUwNTY1ZWUy
ZWZhMWJkMDVhMmE3NTYxMTFhMTVkOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCkBA
IC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7
CiAKIGNsYXNzIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIaWdoUGVyZm9ybWFu
Y2VHcmFwaGljc1VzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCAwZDNkMDNjZWVkODMxM2JjYTI3YjM5MTVhYzM3Y2U2ZTNlZDczMDk5Li5lZWI0MDk4OTVj
ZTBlMjNjOWZjM2U5NWYzNTgxODBmYzlhYjA0OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2NCw3
ICsxNjQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVBcHBJc0JhY2tn
cm91bmQoYm9vbCBiYWNrZ3JvdW5kKQogRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKIHsKICAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKLSAgICAgICAgbV9kb3dubG9h
ZFByb3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7Cisg
ICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IG1ha2VVbmlxdWU8RG93bmxvYWRQcm94eU1hcD4o
KnRoaXMpOwogCiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQ
cm94eShtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOwogfQpAQCAtMTIwMSw3ICsxMjAx
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
dGFrZVVwbG9hZEFzc2VydGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX3VwbG9hZEFzc2VydGlvbik7
Ci0gICAgbV91cGxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3Rh
dGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIG1fdXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVu
aXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9h
ZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhclVwbG9hZEFzc2VydGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IDM1YjgyMTNjMjhmY2I2Yjk0MGExMDk5YmUxNDA4ZjkwNmEzYjkyYmIuLjFmZGI2NmMxNTVkODdi
MjI2MmYyYTNkNWUxMGRlMjM5MTQzOGE4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC03MCw2ICs3MCw3IEBA
IGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Owogc3RydWN0IFdlYnNpdGVEYXRh
OwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVBy
b2Nlc3NQcm94eSwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApp
bmRleCAyYWFmZjFlYzJhNjU0OTBkODg1NDM5OTZiZjgxMDJjMmQ0OWM1MDQyLi40N2EzZTliMjNi
YTEyNjUxOThiNjBlZGRmNmM0ZGQ5ODZmY2QyMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuY3BwCkBAIC01NiwxNCArNTYsMTQgQEAgUmVmPFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJv
Y2Vzc1AKIAogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1
cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKSkKKyAgICAsIG1fcHJvdmlkZXIobWFrZVVuaXF1
ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQogewogfQogCiB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZp
Y2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7CiAgICAgaWYgKCFwcm92aWRlcikgewotICAg
ICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3Zp
ZGVyPigpOworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlv
blByb3ZpZGVyPigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKaW5kZXggZWM2NGJjOWUxNjJjYjdjYTFlNzUzN2U5MzMxZDRmMTM5NTg3
ZWM0MS4uNmNmNWUxNGVhNTY5ZjIzZGE4NDc1NDA5NmNhNTExNDUzYzI5OGI5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHVzaW5nIExheWVy
SG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwogI2VuZGlmCiAKIGNsYXNzIFBhZ2VDbGllbnQg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZUNsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VDbGllbnQoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVz
YWdlU2FtcGxlci5oCmluZGV4IDAxYTdkYTdiODkxYTkwMDY2YzkwZTg0MjljNjU2YmQ3MDBiMTY2
YmQuLmVhNDM5MjdkNDhkNzUyYmViNjcyODA5NDk5YzlhZDBiZmUwN2JjNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2w7CiAKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB+UGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3Bw
CmluZGV4IGY2ZjQ3OWIxZTAzOTJmMzIyMTYwYTY0OTRhZWM2MmUwYTA2Nzk2ZGQuLjg0MzY5ZDMz
NDQwN2NmYmMyZTgzYWE4MjdjNWNjMGU1ZGI5MTIyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRm
b3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGEKICNpZiBQ
TEFURk9STShHVEspCiBzdGF0aWMgYm9vbCBwbHVnaW5SZXF1aXJlc0d0azIoY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IHN0
ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TW9kdWxlPiBtb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0aCk7CiAgICAgaWYg
KCFtb2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtb2R1
bGUtPmZ1bmN0aW9uUG9pbnRlcjxncG9pbnRlcj4oImd0a19vYmplY3RfZ2V0X3R5cGUiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKaW5kZXggMDBhOTkx
ODg2MTQ4NzM5MzhhNmNiNGFiZDk5MTRiYzg2Mjk0NWNmNy4uNGNlMjYyZTlkY2JiNGIxYjBmZjBh
ZDVkYjk3ZWI5N2YzNjA3Mzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvY2Vzc1Rocm90dGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6
OmRpZENvbm5lY3RUb1Byb2Nlc3MoUHJvY2Vzc0lEIHBpZCkKIAogICAgIG1fc3VzcGVuZFRpbWVy
LnN0b3AoKTsKICAgICBpZiAobV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKQotICAg
ICAgICBtX2Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9u
PihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAg
ICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlk
LCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgZWxz
ZQotICAgICAgICBtX2Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlv
bj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7Cisg
ICAgICAgIG1fYXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJX
ZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX3Byb2Nl
c3MuZGlkU2V0QXNzZXJ0aW9uU3RhdGUoYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgbV9hc3NlcnRp
b24tPnNldENsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDYwZjAyYzYxMGZjZDk4ODMwNjM5YzU3YjNlOWQ2MWZm
MWZkNTI1ZmQuLjI3NGFiZDMwMjljMDA3NzMzOWRmZTM3NDhmZjMwNjk3YzliNDhiNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMDcs
NyArMTA3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHksIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICA6IERyYXdp
bmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCB3ZWJQYWdlUHJveHks
IHByb2Nlc3MpCi0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcykpCisgICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3Qo
bWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcykpCiB7CiAjaWYgSEFWRShJT1NV
UkZBQ0UpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwb29sIHN1cmZhY2VzIGluIHRoZSBVSSBw
cm9jZXNzLgpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6dXBkYXRlRGVidWdJbmRpY2F0b3IoSW50U2l6ZSBjb250ZW50c1NpemUsCiAKIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNh
dG9yKCkKIHsKLSAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpOworICAgIG1fZGVidWdJbmRpY2F0b3JM
YXllclRyZWVIb3N0ID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcyk7CiAg
ICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3QtPnNldElzRGVidWdMYXllclRyZWVIb3N0
KHRydWUpOwogCiAgICAgbV90aWxlTWFwSG9zdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxs
b2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggMzAwMjVkNDI5OWYz
YmNhMDQ4NWQzMDRkODMzNTgxNzYxMGJhNTBiZC4uOGE0ZTUwNDgxN2ViYzEyNWNlODk4YzFjMjkx
ZDlhNmU0ZDVmNTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI1Miw3ICsy
NTIsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxh
eWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykK
IHsKICAgICBhdXRvIG1ha2VXaXRoTGF5ZXIgPSBbJl0gKFJldGFpblB0cjxDQUxheWVyPiBsYXll
cikgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2Rl
Pihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3Zl
KGxheWVyKSk7CiAgICAgfTsKICAgICBhdXRvIG1ha2VBZG9wdGluZ0xheWVyID0gWyZdIChDQUxh
eWVyKiBsYXllcikgewogICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihhZG9wdE5TKGxheWVy
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlTm9kZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCmluZGV4IGU4OGJiYzYwOGQ0ZmIwNTgzODRk
MjliMjY5ODE1OTJlZGE4MTRlYmEuLjRmZDRlYTI2OWU4Y2MxYmRmZmIyZWIyNTk3ZDRmNzUwZDg0
MjQwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCkBAIC03Myw3ICs3Myw3IEBAIFJl
bW90ZUxheWVyVHJlZU5vZGU6On5SZW1vdGVMYXllclRyZWVOb2RlKCkKIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxh
aW5MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCkK
IHsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIgPSBhZG9wdE5TKFtbV0tQbGFpblJlbW90
ZUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKIH0K
IAogdm9pZCBSZW1vdGVMYXllclRyZWVOb2RlOjpkZXRhY2hGcm9tUGFyZW50KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaApp
bmRleCBjMjc4MWRjOGFkYTM0MzM5Zjc5ZWQ4NWE3ZTNlOWZmNzY1MjIyNTI4Li4yOWRmZWZlNmNi
NzJjMTIwYTYxY2MyMmQwZDNiYTY0YTZkOTQ0MjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCkBAIC0zMyw2ICszMyw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTsKIAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eSYpOwogICAgIH5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDg2ZDBk
ZWZjNjk2NWU0ZmE2YmExMTY0NzYxYmM5YWM3MTk4YzcyZTYuLjFhNzY5NDNmMjQ1YmUxY2Q4MjJm
MTk2MTNjZGQzNWY1NDBhOTRjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBSZW1vdGVTY3JvbGxpbmdU
cmVlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDYyOWE5YzY1
MGQ0M2MwZDU2MWM4MTkzM2JhMGQxNGU4ZDMzZWE0NDQuLjBjMTI2YWU2YWY3NWU0MTM4YWZkMDA4
NjgzOTU2NjI5ZmY3MDAyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJ
T1MubW0KQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIFJldGFpblB0cjxVSVZpZXc+IGNyZWF0ZVJl
bW90ZVZpZXcocGlkX3QgcGlkLCB1aW50MzJfdCBjb250ZXh0SUQpCiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9w
ZXJ0aWVzKQogewogICAgIGF1dG8gbWFrZVdpdGhWaWV3ID0gWyZdIChSZXRhaW5QdHI8VUlWaWV3
PiB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJl
ZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZSh2aWV3KSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RG
TW92ZSh2aWV3KSk7CiAgICAgfTsKICAgICBhdXRvIG1ha2VBZG9wdGluZ1ZpZXcgPSBbJl0gKFVJ
VmlldyogdmlldykgewogICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlModmlldykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLm1tCmluZGV4IDgxYTJlYjlhNjM1ZDU5ODQxNjAwZjc4MzUyMDRh
Yzg0YmQ2ZDVjMjguLmI4OTA2ODFlOWU3YTUxM2JhMzQzNjdjZWYzOTg5YmUzYjE5ZDljYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVJT1MubW0KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNv
bnN0IFMKIAogICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAgICAgIGlmIChz
Y3JvbGxDb250YWluZXJMYXllcigpKQotICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdh
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbWFrZVVu
aXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcyk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbnVsbHB0cjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW0KaW5kZXggYjU2ZTJlYTY0ZGE1MjAzMWRmYWYxMjhlYzI0OGNk
MTVjNzEwMDkyNi4uZDBiZGQzYzU3ZGJiY2JlZjA3MGU4NTFhZmUwNGVlZTZhYWI1N2Q5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5tbQpAQCAtNDMsNyArNDMsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUwog
CiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1Ry
ZWUsIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Ny
b2xsaW5nTm9kZURlbGVnYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpKQorICAgICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUo
bWFrZVVuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IDMyYTFlMzNhYTg1NjdjMGI2MTYy
ZTA2NzgzY2YzNzZjZjYxOTA3ZTIuLjIzM2ZmZDAyMWU2MzhiZjE4OGY4ZGNhYmQ3NzljNzQ1Mjk0
MzcyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90
ZU1hYzo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyhTY3JvbGxpbmdU
cmVlJiB0cmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5v
ZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWModHJlZSwgbm9k
ZVR5cGUsIG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Ny
b2xsZXJQYWlyTWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNj
cm9sbGVyUGFpck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVSZW1vdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNw
cAppbmRleCBkODk2MGNlYzMwZTQzMzE5YWEwMjdkOWEyMWZjZWZjODM3NjM1MDQzLi5iNmNhM2Ni
YmE4MDgwN2FmN2I5ZjY5OWJlOWIxYjJhYTljZGMxYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90
ZU1hYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVSZW1vdGVNYWM+IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ04KIAogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyhTY3JvbGxpbmdUcmVlJiB0cmVlLCBTY3JvbGxp
bmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU1hYyh0cmVlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9sbGVyUGFpcihzdGQ6Om1ha2VfdW5pcXVl
PFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQorICAgICwgbV9zY3JvbGxlclBhaXIobWFrZVVuaXF1
ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmgKaW5kZXggZjUwNWUyODBjNDQyOTBhODAzZGJkYjY4Yzk4ZWVhNjMwYjFjOWJiNi4u
ODY4YjU0ZTc5MmFmMmFiZDk4NmJjODY2MDA1Y2IxMmY0NTY4MjQyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5CiAgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgogI2Vu
ZGlmCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5Jik7
CiAgICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRT
ZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvSGlkU2VydmljZS5tbQppbmRleCBjYTI2ZTUxZDdhNDA2NGFhMjgxMjdjMGYwMWQ1NGE0ZTBh
YzI0NDYzLi4zOTNiMTM2NzFmNjAxNDE2YTZlZDdjMmZkYWIwY2QyZWIwODFlM2MxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRT
ZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0hpZFNlcnZpY2UubW0KQEAgLTkyLDcgKzkyLDcgQEAgVW5pcXVlUmVmPEhpZENvbm5l
Y3Rpb24+IEhpZFNlcnZpY2U6OmNyZWF0ZUhpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2
aWNlKQogCiB2b2lkIEhpZFNlcnZpY2U6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmlj
ZSkKIHsKLSAgICBhdXRvIGRyaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3RhcEhpZERyaXZlcj4o
Y3JlYXRlSGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKKyAgICBhdXRvIGRyaXZlciA9IG1ha2VVbmlx
dWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKICAgICAvLyBH
ZXQgYXV0aGVudGljYXRvciBpbmZvIGZyb20gdGhlIGRldmljZS4KICAgICBkcml2ZXItPnRyYW5z
YWN0KGVuY29kZUVtcHR5QXV0aGVudGljYXRvclJlcXVlc3QoQ3RhcFJlcXVlc3RDb21tYW5kOjpr
QXV0aGVudGljYXRvckdldEluZm8pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHB0
ciA9IGRyaXZlci5nZXQoKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpIHsKICAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDg1Y2U2OTA2MTExNDQyYmM2NzljYzdhNzc1
Yjg2ODJkZDE1NzI4YzkuLmY4NTJiZWQyMTMwYjQ3YzJmN2RkMjk4YWQzNTZhZWFjODdjMDI2ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
aApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIAogY2xhc3MgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSk7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2Vi
UGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOTlkNmVhMzM0MTUzZWNmNDlkNDU4NGM3NDNk
YzY4MTY4ODQxNTUyMC4uODQ2YTVhYTI3ZGZhYjNkMjc0Y2ZmYTQ4NzM4NjFmMjU4N2QxN2ZkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvbwog
CiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHko
V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQo
cHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9s
b2NhdGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6R2Vv
bG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJvY2Vz
c1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CkBAIC01NCw3ICs1NCw3
IEBAIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1BvCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVy
PiYmIHByb3ZpZGVyKQogewogICAgIGlmICghcHJvdmlkZXIpCi0gICAgICAgIG1fcHJvdmlkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAg
bV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAg
IGVsc2UKICAgICAgICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ci5jcHAKaW5kZXggMmNkY2QxNzY1Mjk5ZmU3NzY0OWJhYmY5ZGUzZTc0ZThiMGYwMGUzNy4uMzM2
NGJjYmNjOTExODRhNmJhNzU0MWVmOTBiMGY5NjA0Y2RlNGRkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCkBA
IC0xMDIsNyArMTAyLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnVwZGF0
ZVBsYXliYWNrQXR0cmlidXRlc0Zyb21NZWRpYVN0YXRlKFdlYlBhZ2UKIAogdm9pZCBXZWJNZWRp
YVNlc3Npb25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFnZVByb3h5
JiBwcm94eSwgdWludDY0X3QgZWxlbWVudElEKQogewotICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5LCBlbGVtZW50
SUQpOworICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9IG1ha2VVbmlxdWU8Rm9jdXNlZE1lZGlh
RWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOwogfQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlcjo6Y2xlYXJGb2N1c2VkTWVkaWFFbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggOWViOWQyOGFkZGQ1YjViMDA2ZDUw
YjA4YTNkNzRmYjY5ZDE2MjM5Mi4uMTZhNzU5YWM4YTFmZjMxNDYwNWIwOTQ2ZmZjNWFhNjU4MThl
MDc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgK
QEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTsKIAogY2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJOYXZpZ2F0aW9uU3RhdGUo
KTsKICAgICB+V2ViTmF2aWdhdGlvblN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IDY1Mjk4MmE4MTJh
OWVmYmVmNTIxYTZhOTg5OWZhNGJlZTVmYWYzNGMuLjFiMjlmNzlkZGZhZWEwN2I5ZTcyNDliZDc3
MjM4NGVlYmY1MzBmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRC
YXNlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBT
dHJpbmcmLCBBUEk6Ok9iamVjdCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6
Ok9iamVjdCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IGM0YjkyYzgzY2ZlYTI5YjMxZWRiYjM0YWE4NDAyNWJhNWM4YjAz
YjcuLmJkYTU5Y2Q4MDUxNTc2NDZiMzA4ZDJmZDIzNmYzZDExODI3MWUwYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAsIG1fZnJvbnRlbmRS
b3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkK
IHsKLSAgICBhdXRvIHRhcmdldEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0QWdlbnQ+KG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNo
ZXIuZ2V0KCkpOworICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKSk7CiAKICAgICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdmYTJiNGQ2ZDNj
MTY2MWE3MDAzYjc3ODU1OGRhN2MyZmYyNGYwN2UuLjBiNDBkYjI3NzgzZmRlOWQyNTZmZjUyOTJl
ZWE3ZWJmZTMxNmNhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMzk3LDE1ICszOTcsMTUgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICAgICAsIG1f
Y29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9u
Q2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQogICAgICwgbV9o
aXN0b3J5Q2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpIaXN0b3J5Q2xpZW50PigpKQotICAgICwg
bV9pY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGll
bnQ+KCkpCi0gICAgLCBtX2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGll
bnQ+KCkpCi0gICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4o
KSkKLSAgICAsIG1fZmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4o
KSkKLSAgICAsIG1fZmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRN
YXRjaGVzQ2xpZW50PigpKQorICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEFQ
STo6SWNvbkxvYWRpbmdDbGllbnQ+KCkpCisgICAgLCBtX2Zvcm1DbGllbnQobWFrZVVuaXF1ZTxB
UEk6OkZvcm1DbGllbnQ+KCkpCisgICAgLCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpVSUNs
aWVudD4oKSkKKyAgICAsIG1fZmluZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4o
KSkKKyAgICAsIG1fZmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVz
Q2xpZW50PigpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVu
dUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAg
LCBtX2NvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4o
KSkKICNlbmRpZgotICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJO
YXZpZ2F0aW9uU3RhdGU+KCkpCisgICAgLCBtX25hdmlnYXRpb25TdGF0ZShtYWtlVW5pcXVlPFdl
Yk5hdmlnYXRpb25TdGF0ZT4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9w
YWdlR3JvdXAoKm1fY29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCkpCiAgICAgLCBtX3ByZWZlcmVu
Y2VzKCptX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCkpCkBAIC00MTYsNyArNDE2LDcgQEAg
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkg
fQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZpZ3VyYXRp
b24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQotICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpKQorICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KG1h
a2VVbmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpKQogI2VuZGlmCiAgICAgLCBtX2dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCkBAIC00MzUsOSArNDM1LDkgQEAgV2Vi
UGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzLCBQYWcKICNlbmRpZgogICAgICwgbV9wYWdlTG9hZFN0YXRlKCp0aGlz
KQogICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhtX2NvbmZpZ3VyYXRpb24t
PnByZWZlcmVuY2VWYWx1ZXMoKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2lu
c3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcj4o
KnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JE
ZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAg
ICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFdlYlBhZ2VEZWJ1Z2dhYmxlPigq
dGhpcykpCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7
CkBAIC00NzcsNyArNDc3LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihS
dW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFu
Z2UpLCBbdGhpc10geworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBtYWtl
VW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2Vy
dmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpBY3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNd
IHsKICAgICAgICAgdGhpcy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAgfSk7
CiAjZW5kaWYKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9saWN5
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4mJiBwb2xpY3lDbAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNs
aWVudD4mJiBmb3JtQ2xpZW50KQogewogICAgIGlmICghZm9ybUNsaWVudCkgewotICAgICAgICBt
X2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAgICAg
ICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGll
bnQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
VUlDbGllbnQ+JiYgdWlDbGllbnQpCiB7CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAgICAgICBt
X3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgICAgICBt
X3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEljb25M
b2FkaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYKIHsK
ICAgICBib29sIGhhc0NsaWVudCA9IGljb25Mb2FkaW5nQ2xpZW50LmdldCgpOwogICAgIGlmICgh
aWNvbkxvYWRpbmdDbGllbnQpCi0gICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CisgICAgICAgIG1faWNvbkxvYWRp
bmdDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CiAgICAgZWxz
ZQogICAgICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gV1RGTW92ZShpY29uTG9hZGluZ0NsaWVu
dCk7CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxvYWRT
dGF0ZU9ic2VydmVyKHN0ZDo6dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcgogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVu
dD4mJiBmaW5kQ2xpZW50KQogewogICAgIGlmICghZmluZENsaWVudCkgewotICAgICAgICBtX2Zp
bmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKKyAgICAgICAg
bV9maW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xp
ZW50KQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PiYmIGZpbmRNYXRjaGVzQ2xpZW50KQogewogICAg
IGlmICghZmluZE1hdGNoZXNDbGllbnQpIHsKLSAgICAgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICAgICAgbV9m
aW5kTWF0Y2hlc0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpE
aWFnbm9zdGljTG9nCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udGV4dE1lbnVDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGllbnQp
CiB7CiAgICAgaWYgKCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRNZW51
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAg
ICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xp
ZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02OTEsNyArNjkxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50QmFzZSoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5q
ZWN0ZWRCdW5kbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudD4oKTsKKyAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CiAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+
aW5pdGlhbGl6ZShjbGllbnQpOwogfQogCkBAIC03NzYsNyArNzc2LDcgQEAgYm9vbCBXZWJQYWdl
UHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBPcHQKICAgICB9CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVu
dCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7Ci0gICAgYXV0byBzdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQ
YWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3Vs
ZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7Cisg
ICAgYXV0byBzdXNwZW5kZWRQYWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0
aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKICAgICBMT0coUHJv
Y2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVk
IHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0
LCBwYWdlSUQoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlE
KCkubG9nU3RyaW5nKCkgOiAwKTsKIApAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBBU1NFUlQoIW1fZnVsbFNjcmVlbk1hbmFnZXIpOwotICAgIG1fZnVsbFNjcmVl
bk1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0
aGlzLCBwYWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKKyAgICBt
X2Z1bGxTY3JlZW5NYW5hZ2VyID0gbWFrZVVuaXF1ZTxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
PigqdGhpcywgcGFnZUNsaWVudCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIEFTU0VSVCgh
bV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKTsKQEAgLTg2MCwyMiArODYwLDIyIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCiAgICAgQVNTRVJUKCFtX3BheW1lbnRDb29yZGluYXRvcik7Ci0gICAgbV9wYXltZW50
Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
PigqdGhpcyk7CisgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJF
VklFVykKICAgICBBU1NFUlQoIW1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIpOwotICAgIG1fc3lz
dGVtUHJldmlld0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5c3RlbVByZXZpZXdDb250
cm9sbGVyPigqdGhpcyk7CisgICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IG1ha2VVbmlx
dWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFdFQl9BVVRITikKICAgICBBU1NFUlQoIW1fY3JlZGVudGlhbHNNZXNzZW5nZXIpOwotICAgIG1f
Y3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG1h
a2VVbmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRp
ZgogCiAjaWYgSEFWRShQRU5DSUxLSVQpCiAgICAgQVNTRVJUKCFtX2VkaXRhYmxlSW1hZ2VDb250
cm9sbGVyKTsKLSAgICBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxFZGl0YWJsZUltYWdlQ29udHJvbGxlcj4oKnRoaXMpOworICAgIG1fZWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CiAj
ZW5kaWYKIH0KIApAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmF3
aW5nQXJlYShzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlCiAK
ICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBpZiAo
bV9kcmF3aW5nQXJlYS0+dHlwZSgpID09IERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSkg
ewotICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAgbV9zY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5PigqdGhpcyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8g
T24gaU9TLCBtYWluIGZyYW1lIHNjcm9sbHMgYXJlIHNlbnQgaW4gdGVybXMgb2YgdmlzaWJsZSBy
ZWN0IHVwZGF0ZXMuCiAgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS0+c2V0UHJv
cGFnYXRlc01haW5GcmFtZVNjcm9sbHMoZmFsc2UpOwpAQCAtMTAwNiwxNyArMTAwNiwxNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsK
ICAgICBtX25hdmlnYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNs
aWVudD4oKTsKICAgICBtX3BvbGljeUNsaWVudCA9IG51bGxwdHI7Ci0gICAgbV9pY29uTG9hZGlu
Z0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKLSAg
ICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKLSAg
ICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwotICAgIG1f
ZmluZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwotICAgIG1f
ZmluZE1hdGNoZXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGll
bnQ+KCk7CisgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9h
ZGluZ0NsaWVudD4oKTsKKyAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNs
aWVudD4oKTsKKyAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwor
ICAgIG1fZmluZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgIG1f
ZmluZE1hdGNoZXNDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7
CiAgICAgbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQotICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOworICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VV
bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkucmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlzKTsKQEAg
LTEyMjYsNyArMTIyNiw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSk7CiAKLSAgICBhdXRv
IG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9u
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlN
RVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkpOworICAgIGF1dG8gbmF2aWdhdGlv
biA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24obWFrZVVuaXF1
ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2Rpbmcs
IGJhc2VVUkwsIHVzZXJEYXRhKSk7CiAgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCht
X3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2Rpbmcs
IGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6
Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBuYXZp
Z2F0aW9uOwogfQpAQCAtMjQxNSw3ICsyNDE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKKyAgICBhdXRvIGNvYWxlc2Nl
ZFdoZWVsRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsK
ICAgICBjb2FsZXNjZWRXaGVlbEV2ZW50LT5hcHBlbmQoZXZlbnQpOwogICAgIG1fY3VycmVudGx5
UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUoY29hbGVzY2VkV2hlZWxFdmVudCkp
OwogICAgIHNlbmRXaGVlbEV2ZW50KGV2ZW50KTsKQEAgLTI0MjMsNyArMjQyMyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQm
IGV2ZW50KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50
KCkKIHsKLSAgICBhdXRvIG5leHRDb2FsZXNjZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50
ID0gbWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CiAgICAgV2ViV2hl
ZWxFdmVudCBuZXh0V2hlZWxFdmVudCA9IGNvYWxlc2NlZFdoZWVsRXZlbnQobV93aGVlbEV2ZW50
UXVldWUsICpuZXh0Q29hbGVzY2VkRXZlbnQuZ2V0KCkpOwogICAgIG1fY3VycmVudGx5UHJvY2Vz
c2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUobmV4dENvYWxlc2NlZEV2ZW50KSk7CiAgICAg
c2VuZFdoZWVsRXZlbnQobmV4dFdoZWVsRXZlbnQpOwpAQCAtMjk4NCw3ICsyOTg0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIHMKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRy
OwogICAgIH0KIAotICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm92
aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIG5ld1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1
c3BlbmRlZFBhZ2VQcm94eSksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24u
Y3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCk7CisgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBt
YWtlVW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVm
KCksIFdURk1vdmUoc3VzcGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQo
KSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJy
ZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKIAogICAgIGlmIChh
dXRvKiBpdGVtID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgTE9HKExvYWRp
bmcsICJXZWJQYWdlUHJveHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJh
Y2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTU3
MDIsNyArNTcwMiw3IEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6
ZnVsbFNjcmVlbk1hbmFnZXIoKQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZ1bGxzY3JlZW5DbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4mJiBjbGllbnQpCiB7CiAg
ICAgaWYgKCFjbGllbnQpIHsKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgICAgIG1fZnVsbHNjcmVlbkNs
aWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC03NDM3LDcgKzc0MzcsNyBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dAogICAgIGlmIChtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKICAgICAgICAg
cmV0dXJuICptX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAotICAgIG1fdXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4oKnRoaXMpOworICAgIG1fdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyID0gbWFrZVVuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eT4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXI7CiB9CiAKQEAgLTgxNDMsNyArODE0Myw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29s
IGVuYWJsZWQpCiAgICAgbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCA9
IGVuYWJsZWQ7CiAKICAgICBpZiAobV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5h
YmxlZCAmJiAhbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEpCi0gICAgICAgIG1fc2Nyb2xsaW5n
UGVyZm9ybWFuY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGE+KGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk+KCptX2RyYXdpbmdBcmVhKSk7CisgICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
ID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+KGRv
d25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdBcmVhKSk7
CiAgICAgZWxzZSBpZiAoIW1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQp
CiAgICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbnVsbHB0cjsKIH0KQEAgLTkx
OTAsNyArOTE5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFNwZWVjaFN5bnRoZXNpemVy
KCkKIFdlYlBhZ2VQcm94eTo6U3BlZWNoU3ludGhlc2lzRGF0YSYgV2ViUGFnZVByb3h5OjpzcGVl
Y2hTeW50aGVzaXNEYXRhKCkKIHsKICAgICBpZiAoIW1fc3BlZWNoU3ludGhlc2lzRGF0YSkKLSAg
ICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICAgICAgbV9zcGVlY2hTeW50
aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIgfTsKICAgICByZXR1cm4gKm1fc3BlZWNoU3ludGhlc2lzRGF0YTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXggOGJkZjhjZjgz
ODhjZGM3YmZhY2ZmMmI3ZTYwNWQwYTgxOGRhYWM2NC4uOTYyZjNiZWQyZDgyNTY5YTA3ZGQ0ZTlj
ZGFiOGZjYzcyMTE5ZjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
Q2FjaGUuY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9j
ZXNzSWZQb3NzaWJsZShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gZ2VuZXJhdGVB
ZGRSZXF1ZXN0SWRlbnRpZmllcigpOwotICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1
ZXN0SWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNv
cHlSZWYoKSkpOworICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmll
ciwgbWFrZVVuaXF1ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOwogCiAgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OmFkZFBy
b2Nlc3NJZlBvc3NpYmxlKCk6IENoZWNraW5nIGlmIHByb2Nlc3MgJWkgaXMgcmVzcG9uc2l2ZSBi
ZWZvcmUgY2FjaGluZyBpdC4uLiIsIHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkp
OwogICAgIHByb2Nlc3MtPmlzUmVzcG9uc2l2ZShbdGhpcywgcHJvY2Vzc1Bvb2wgPSBtYWtlUmVm
KHByb2Nlc3MtPnByb2Nlc3NQb29sKCkpLCByZXF1ZXN0SWRlbnRpZmllcl0oYm9vbCBpc1Jlc3Bv
bnNpdmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCBkYmUyNTM1MmI1MjU4OGQ4YTNjYzg2OTQ4NDQ0MGU3OWU4NWEwOTZkLi5mZWRhOGVlOGU4ZDMw
ZjM5NGZmMTA4ZmJmYTgwNDE1ZDgxMDc3YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yMzMsMTUgKzIzMywxNSBAQCBzdGF0aWMgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3Vz
dG9tUHJvdAogV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24uY29weSgpKQogICAgICwgbV9kZWZhdWx0UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6
Y3JlYXRlKCkpCi0gICAgLCBtX2luamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKLSAgICAsIG1fYXV0b21hdGlvbkNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKLSAgICAsIG1fZG93bmxv
YWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQotICAgICwg
bV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudD4oKSkKLSAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisgICAgLCBtX2lu
amVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4o
KSkKKyAgICAsIG1fYXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNs
aWVudD4oKSkKKyAgICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkRvd25sb2Fk
Q2xpZW50PigpKQorICAgICwgbV9oaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCiAgICAg
LCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihz
dGQ6Om1ha2VfdW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPigqdGhp
cykpCi0gICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykpCisgICAgLCBtX2hp
Z2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8SGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1fcGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlcihtYWtlVW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3Jp
dHkobV9jb25maWd1cmF0aW9uLT5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkoKSkKICAg
ICAsIG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbihtX2NvbmZpZ3VyYXRpb24tPnNo
b3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24oKSkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29udGV4dENsaWVudEJh
c2UqIGNsaWVudCkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PiYmIGNsaWVudCkKIHsK
ICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKKyAgICAgICAgbV9pbmpl
Y3RlZEJ1bmRsZUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4o
KTsKICAgICBlbHNlCiAgICAgICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBXVEZNb3ZlKGNs
aWVudCk7CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEIKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+JiYgaGlzdG9yeUNsaWVudCkKIHsKICAgICBpZiAo
IWhpc3RvcnlDbGllbnQpCi0gICAgICAgIG1faGlzdG9yeUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKTsKKyAgICAgICAgbV9oaXN0b3J5
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOwog
ICAgIGVsc2UKICAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gV1RGTW92ZShoaXN0b3J5Q2xpZW50
KTsKIH0KQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Qwogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93
bmxvYWRDbGllbnQ+JiYgZG93bmxvYWRDbGllbnQpCiB7CiAgICAgaWYgKCFkb3dubG9hZENsaWVu
dCkKLSAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3du
bG9hZENsaWVudD4oKTsKKyAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpEb3dubG9hZENsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQg
PSBXVEZNb3ZlKGRvd25sb2FkQ2xpZW50KTsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3du
bG9hZENsaWVudD4mJiBkbwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmIGF1dG9tYXRpb25DbGll
bnQpCiB7CiAgICAgaWYgKCFhdXRvbWF0aW9uQ2xpZW50KQotICAgICAgICBtX2F1dG9tYXRpb25D
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKKyAgICAg
ICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
KCk7CiAgICAgZWxzZQogICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBXVEZNb3ZlKGF1dG9t
YXRpb25DbGllbnQpOwogfQpAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpDCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICAgICBp
ZiAoIWN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCkKLSAgICAgICAgbV9jdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PigpOworICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CiAgICAgZWxzZQog
ICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KTsKICNlbmRpZgpAQCAtNDkyLDcgKzQ5Miw3IEBAIE5ldHdvcmtQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRl
RGF0YVN0b3JlKiB3aXRoCiAgICAgICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKICAgICB9
CiAKLSAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUHJv
Y2Vzc1Byb3h5PigqdGhpcyk7CisgICAgYXV0byBuZXR3b3JrUHJvY2VzcyA9IG1ha2VVbmlxdWU8
TmV0d29ya1Byb2Nlc3NQcm94eT4oKnRoaXMpOwogCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIApAQCAtMjUxMCw3ICsyNTEwLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWEKICAgICAgICAgbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJs
ZURvbWFpbi5yZW1vdmUobV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5y
YW5kb20oKSk7CiAKICAgICBhdXRvJiB2YWx1ZSA9IG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVn
aXN0cmFibGVEb21haW4uZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbj4oKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICp2YWx1ZSA9IHByZXdhcm1JbmZvcm1hdGlv
bjsKQEAgLTI1NTcsMTIgKzI1NTcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJv
Y2Vzc0hhc1VwbG9hZHMoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQogICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT50YWtlVXBsb2FkQXNzZXJ0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBB
U1NFUlQoIW1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NV
cGxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1
cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5i
b3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uID0g
bWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJL
aXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogICAg
IH0KICAgICAKICAgICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc2VzV2l0aFVwbG9hZHMuYWRkKHBy
b2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9u
Pihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3
b3JraW5nKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSGFzVXBs
b2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCkBAIC0yNTk5LDEyICsyNTk5LDEyIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NJc1BsYXlpbmdBdWRpYmxlTWVkaWEo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiVGhlIG51bWJlciBvZiBwcm9jZXNzZXMgcGxheWluZyBhdWRpYmxlIG1lZGlhIGlz
IG5vdyBvbmUuIFRha2luZyBVSSBwcm9jZXNzIGFzc2VydGlvbi4iKTsKIAogICAgICAgICBBU1NF
UlQoIW1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbik7Ci0gICAgICAgIG1fdWlQcm9j
ZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2Vy
dGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBB
c3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNr
KTsKKyAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gbWFrZVVuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEg
UGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246
Ok1lZGlhUGxheWJhY2spOwogICAgIH0KIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNQ
bGF5aW5nQXVkaWJsZU1lZGlhLmFkZChwcm9jZXNzSUQsIG51bGxwdHIpOwogICAgIEFTU0VSVChy
ZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
IldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFz
c2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91
bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmNsZWFyV2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCAwYjI0MmEyYmI1ODY3NGMwMzhjZjdjZmE0OTJkYjdkOTVjYWUw
MDFlLi5kYTM2ZjZiYTU4YTUzMDU2ZTA4YzJiNjZiMjM4ZTdlZTMzODdlNzNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBA
QCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAgICAgLCBtX3Zpc2libGVQYWdlQ291bnRlcihbdGhp
c10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVy
KCk7IH0pCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUod2Vic2l0ZURhdGFTdG9yZSkKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICAsIG1fdXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk+KCp0aGlzKSkKKyAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSht
YWtlVW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0aGlzKSkKICNlbmRpZgog
ICAgICwgbV9pc1ByZXdhcm1lZChpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IGU5ZmNmMDAxNTM5OTVkYzFjY2UxMzVmOGMwOTJl
OTJlNjZkYmZmM2EuLmQwYmJhNTY0YzI3NTgyZDc4MjZlOWYyYzIwNjIyMzcwMjI3Mjk1M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgc3RydWN0IFNlY3VyaXR5
T3JpZ2luRGF0YTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3Jl
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5XZWJzaXRlRGF0YVN0b3JlQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCAxODI5NGQzN2Zl
NDllZWQ2ZDY5ZGZmZmY1ZjJmNjUwNzBiNjZjZDkwLi43YmRkMDNkM2M4ZWM4ZTA2NjJlNzdkMDE4
MjUwYjUwODhjMjZjZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWly
by9CYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fp
cm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC01NCwxMiArNTQsMTIgQEAgc3RkOjp1bmlxdWVf
cHRyPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybz4gQmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5k
KCkKICAgICAgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBndGtfd2lkZ2V0X2dldF92aXN1YWwobV93
ZWJQYWdlUHJveHkudmlld1dpZGdldCgpKTsKICAgICAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBn
ZGtfdmlzdWFsX2dldF9zY3JlZW4odmlzdWFsKTsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZlKCkgPT0gR0RLX1NDUkVFTl9Y
RElTUExBWShzY3JlZW4pKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExPihHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290
X3dpbmRvdyhzY3JlZW4pKSwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3Jl
QmFja2VuZENhaXJvWDExPihHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRv
dyhzY3JlZW4pKSwKICAgICAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBnZGtf
dmlzdWFsX2dldF9kZXB0aCh2aXN1YWwpLCBtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwog
ICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3Jl
QmFja2VuZENhaXJvSW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsPihtX3NpemUsIG1fZGV2
aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBiODc0ZmIwZmIy
ZTJhN2U3ZWMzNmNjNDRlMzlkNjI0OTA2YTRjNWYxLi5mODg4YzBmNDQ2YzYyNzEyN2M4Mzc1YmUw
ZDgxYTZhM2YyYzA5ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3JDbGllbnQ6OmNvbm5lY3Rpb25DbG9zZWQoKQogdm9pZCBSZW1vdGVJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3QodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJn
ZXRJRCkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJl
KHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlv
bklELCB0YXJnZXRJRF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJ
bnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25J
RCwgdGFyZ2V0SUQpOwogICAgIH0pOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsK
ICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2hvdygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kLmNwcAppbmRleCAzODMxMDAwNTg4OTRkZWMwZmI3YjUxY2FhMDlhMjM5ZDc3ZDA4
YThiLi44OTMyNzlmYmNmNThhZWFmMmFmZDZiMWE0N2MxYzc2YzIzZDgyYmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kLmNwcApAQCAtNzksOSArNzksOSBAQCBib29sIEFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMoKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4
dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVu
c2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxzZQotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZl
cnNpb24oKSA+PSAzMjApOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3Bl
bkdMPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0
ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAg
ICAgIGlmIChnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikgfHwgZ2xF
eHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQogICAgICAg
ICAgICAgZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJ
TUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdl
VGFyZ2V0VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAppbmRleCBlOWFlNjU1MmE3YTJkODYyYzRiZDRlZTEw
ZWQyZWMzNmU5MmY4MzFkLi5jYTY1M2U1ZWJhNzBjOTYxNTVmZjc2NDg4YzNlZGY0MjgxZjg1NzEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5k
bGVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFNlbGVjdGlvbkRhdGEqIERyYWdBbmREcm9wSGFu
ZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24oR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAg
c3RkOjp1bmlxdWVfcHRyPERyb3BwaW5nQ29udGV4dD4mIGRyb3BwaW5nQ29udGV4dCA9IG1fZHJv
cHBpbmdDb250ZXh0cy5hZGQoY29udGV4dCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAg
IGlmICghZHJvcHBpbmdDb250ZXh0KSB7CiAgICAgICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gbV9w
YWdlLnZpZXdXaWRnZXQoKTsKLSAgICAgICAgZHJvcHBpbmdDb250ZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxEcm9wcGluZ0NvbnRleHQ+KGNvbnRleHQsIHBvc2l0aW9uKTsKKyAgICAgICAgZHJvcHBp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEcm9wcGluZ0NvbnRleHQ+KGNvbnRleHQsIHBvc2l0aW9u
KTsKICAgICAgICAgVmVjdG9yPEdka0F0b20+IGFjY2VwdGFibGVUYXJnZXRzKFBhc3RlYm9hcmRI
ZWxwZXI6OnNpbmdsZXRvbigpLmRyb3BBdG9tc0ZvckNvbnRleHQod2lkZ2V0LCBkcm9wcGluZ0Nv
bnRleHQtPmdka0NvbnRleHQpKTsKICAgICAgICAgZHJvcHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0
YVJlcXVlc3RzID0gYWNjZXB0YWJsZVRhcmdldHMuc2l6ZSgpOwogICAgICAgICBmb3IgKGF1dG8m
IHRhcmdldCA6IGFjY2VwdGFibGVUYXJnZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKaW5kZXggY2JlMzgwYjI0MGQ5NjAxMTE3Mjdi
NzcwYTgyNWUwOWUwNTQ3YzllZC4uYzNkOTk3M2M3MGRjMjA4OWM2ODNkNjVhOTEzZGEyOTRkNWZm
ZWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21w
b3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBv
c2l0b3IuY3BwCkBAIC00MjAsOSArNDIwLDkgQEAgYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6aW5p
dGlhbGl6ZUVHTCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShPUEVOR0xfRVMp
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2Up
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25z
ID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKICNl
bHNlCi0gICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25z
ID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4
dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0
ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9w
ZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwog
I2VuZGlmCiAgICAgaWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2Ui
KSB8fCBnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikp
CiAgICAgICAgIGdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdM
RUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJ
bWFnZVRhcmdldFRleHR1cmUyRE9FUyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQppbmRleCBjMjM0MTFjMWYwOWIw
MTBhNjUyNTRiMzY5ZGQzMTY5ZDMxZjBjMGUwLi42MWU4NTk0ZDViN2M0MWFhZjlmYzgyYzY1Mzhk
YjlhZDcxODU2MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCkBAIC01OCw3ICs1OCw3IEBAIEVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyOjp+RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKQogRWRpdGFibGVJbWFnZSYg
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmVuc3VyZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCiB7CiAgICAgYXV0byBy
ZXN1bHQgPSBtX2VkaXRhYmxlSW1hZ2VzLmVuc3VyZShlbWJlZGRlZFZpZXdJRCwgWyZdIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxFZGl0YWJsZUltYWdlPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJ
bWFnZT4gaW1hZ2UgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2U+KCk7CiAgICAgICAgIGltYWdl
LT5kcmF3aW5nVmlldyA9IG1fd2ViUGFnZVByb3h5LT5wYWdlQ2xpZW50KCkuY3JlYXRlRHJhd2lu
Z1ZpZXcoZW1iZWRkZWRWaWV3SUQpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRl
VHJhY2tpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRp
b25TdGF0ZVRyYWNraW5nVmlldy5tbQppbmRleCBkMDNhMTcyNmFiMzM0YTAwZTYwZmJjMDUwYjUw
ZTVjMzM3NWFmNzIwLi43ZjBmOTQ4NGZkNzc3NGRkMTE1N2FlMjg4NWM5MGEzYmYyZWU3OWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRl
VHJhY2tpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxp
Y2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KQEAgLTY1LDcgKzY1LDcgQEAgLSAodm9pZClkaWRN
b3ZlVG9XaW5kb3cKICAgICBpZiAoIXNlbGYuX2NvbnRlbnRWaWV3LndpbmRvdyB8fCBfYXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9hcHBsaWNhdGlvblN0
YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJh
Y2tlcj4oc2VsZiwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCksIEBz
ZWxlY3RvcihfYXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFj
a2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKSk7Cisg
ICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0
aW9uU3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVy
RW50ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQpKTsKICAgICAKICAgICBpZiAoX2xhc3RPYnNlcnZlZFN0YXRlV2FzQmFja2dyb3VuZCAm
JiAhW3NlbGYgaXNCYWNrZ3JvdW5kXSkKICAgICAgICAgW3NlbGYgX2FwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tCmluZGV4IDY4MTFlODdhNGE0MjEwMDViZDk0YTdhYzIxNjU0M2VjYzAwYTc3ZmMuLjQz
MWZhY2QxZTY4Mzk3ZWM4NTczOTFhYjFjZjg4OGQzODQxNTdhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0xNjcsNyArMTY3LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbCYpcHIKICAgICBfcGFnZS0+c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKHRy
dWUpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIF9wYWdlLT5zZXRGdWxsc2Ny
ZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pihfd2Vi
VmlldykpOworICAgIF9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
OjpGdWxsc2NyZWVuQ2xpZW50Pihfd2ViVmlldykpOwogI2VuZGlmCiAKICAgICBXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkud2tWaWV3Q291bnQrKzsKQEAgLTIzOSw3ICsyMzks
NyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQ
b29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJgogCiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2Vi
S2l0MigpOwogCi0gICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFn
ZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOworICAgIF9wYWdlQ2xpZW50ID0gbWFrZVVuaXF1
ZTxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKICAgICBfd2ViVmlldyA9
IHdlYlZpZXc7CiAKICAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFBy
b2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGTW92ZShjb25maWd1cmF0aW9u
KV07CkBAIC01NDEsNyArNTQxLDcgQEAgLSAodm9pZClfd2ViVmlld0Rlc3Ryb3llZAogCiAtIChz
dGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3JlYXRlRHJhd2luZ0Fy
ZWFQcm94eTooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHkmKXByb2Nlc3MKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+
KCpfcGFnZSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UsIHByb2Nlc3MpOwogfQogCiAtICh2b2lk
KV9wcm9jZXNzRGlkRXhpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOWUxNmNjYmZkNmIyMDFjYjU5Zjcz
ODdhYmFmZjgxOGI1NTYwNjk3Mi4uZDNlZGEzNjljMDM3MWMxZjJjMTNhMWQwNTk5MTVkYjZkZDVl
OTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04MDYsNyArODA2LDcgQEAgLSAodm9pZClzZXR1cElu
dGVyYWN0aW9uCiAgICAgCiAgICAgX2FjdGlvblNoZWV0QXNzaXN0YW50ID0gYWRvcHROUyhbW1dL
QWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7CiAgICAgW19h
Y3Rpb25TaGVldEFzc2lzdGFudCBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBfc21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyPihzZWxmKTsKKyAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyPihzZWxm
KTsKICAgICBfaXNFeHBlY3RpbmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0gTk87CiAgICAgX3BvdGVu
dGlhbFRhcEluUHJvZ3Jlc3MgPSBOTzsKICAgICBfaXNEb3VibGVUYXBQZW5kaW5nID0gTk87CkBA
IC04MjEsNyArODIxLDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVYVF9DSEVDS0lORykKLSAgICBfdGV4dENoZWNraW5n
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9s
bGVyPigqX3BhZ2UpOworICAgIF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFnZSk7CiAjZW5kaWYKIAogICAgIF9o
YXNTZXRVcEludGVyYWN0aW9ucyA9IFlFUzsKQEAgLTExOTYsNyArMTE5Niw3IEBAIC0gKEJPT0wp
YmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3CiAgICAgICAgIHJldHVybiBOTzsKIAogICAg
IGlmICghX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyKQotICAgICAgICBfaW5wdXRWaWV3VXBkYXRl
RGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJy
ZXI+KHNlbGYpOworICAgICAgICBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBtYWtlVW5pcXVl
PFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOwogCiAgICAgQk9PTCBkaWRC
ZWNvbWVGaXJzdFJlc3BvbmRlcjsKICAgICB7CkBAIC01MzExLDcgKzUzMTEsNyBAQCAtICh2b2lk
KV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
biYpaW5mb3JtYXRpb24gdQogICAgICAgICAvLyBEZWZlciB2aWV3IHVwZGF0ZXMgdW50aWwgdGhl
IGVuZCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIGEgbm90aWNlYWJsZSBmbGFzaCB3aGVuIHN3
aXRjaGluZyBmb2N1cwogICAgICAgICAvLyBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgcmVxdWlyZSB0
aGUga2V5Ym9hcmQuCiAgICAgICAgIGlmICghaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIpCi0gICAg
ICAgICAgICBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CisgICAgICAgICAgICBpbnB1dFZpZXdV
cGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJl
cj4oc2VsZik7CiAgICAgICAgIFtzZWxmIF9lbGVtZW50RGlkQmx1cl07CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBiMDI4
MjQ4OTIwMDNhMDQ5ODkyOWU3MDZhNTkwNDU5YTRmODcxYWNkLi5jMDhmOTc4NmYwZWFhYjRhOTc1
YmI1NjQ4Yzc0MjdjNTYzNmRiZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mIGluZm9y
bWF0aW9uLAogICAgIEFQSTo6T2JqZWN0KiB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MoKS50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKTsKICAgICBpZiAo
bV9lZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkgewogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHRyeSB0byBlbGltaW5hdGUgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0Fy
Z3VtZW50cyBhbHRvZ2V0aGVyLCBpbiBmYXZvciBvZiBvbmx5IGRlZmVycmluZyBhY3Rpb25zIHRo
YXQgYXJlIGRlcGVuZGVudCBvbiBwb3N0LWxheW91dCBlZGl0b3Igc3RhdGUgaW5mb3JtYXRpb24u
Ci0gICAgICAgIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cz4oRWxlbWVudERpZEZvY3VzQXJndW1lbnRz
IHsgaW5mb3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCBhY3Rp
dml0eVN0YXRlQ2hhbmdlcywgdXNlckRhdGFPYmplY3QgfSk7CisgICAgICAgIG1fZGVmZXJyZWRF
bGVtZW50RGlkRm9jdXNBcmd1bWVudHMgPSBtYWtlVW5pcXVlPEVsZW1lbnREaWRGb2N1c0FyZ3Vt
ZW50cz4oRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVzZXJJc0ludGVy
YWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgdXNlckRhdGFP
YmplY3QgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNTgsNyArMTI1OCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlcj4gV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3Jp
emF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50Q29vcmRp
bmF0b3JQcm94eSwgUEtQYXltZW50UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4o
cGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXltZW50Q29vcmRp
bmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QpOwogfQogCiBVSVZpZXdDb250cm9sbGVyICpXZWJQ
YWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25z
dCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdD
b250cm9sbGVyLm1tCmluZGV4IDhiMTIzYjBhOTdjMDMwZTk0NTBmNWVkNGY4YzE3NGIzMjFiYjQw
N2IuLjhmZjhhMGJmNDc1YjNmN2IyMzYyMjlmNDEyZTNmMzI2NmNmOTU5NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdD
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCkBAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6
CiB9OwogCiBjbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ2xpZW50IDogV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVs
bFNjcmVlblZpZXdDb250cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmlu
ZGV4IDgzNDM0ODg5Y2RjZjI0OWMxYzI3OTFiZDA3YmZmZmEyMDFjZjQ4N2QuLmE5MTI5NTNlYzkx
YzI3MzM2MjY3NjNkYWY5ZGEyNmIyNDkzM2M2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBQYWdl
Q2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoTlNWaWV3KiB2aWV3LCBXS1dlYlZpZXcgKndlYlZp
ZXcpCiAgICAgOiBQYWdlQ2xpZW50SW1wbENvY29hKHdlYlZpZXcpCiAgICAgLCBtX3ZpZXcodmll
dykKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICAsIG1fYWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyPigpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0KaW5kZXggNDNlOWY5NjdiYzg5NzdmYmZmOGM4NjY4YTVjY2ExZjM4MjRjMDgwOS4u
MzRhNjliYmUwYmIwZDE3NmI1NTFiYWYyZDdhMzVjMWZhYWMwMzdhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0KQEAgLTU0LDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIERl
ZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVu
dCA6IFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIApAQCAtMTUw
LDcgKzE1MSw3IEBAIC0gKGlkKWluaXRXaXRoV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyB3ZWJW
aWV3OihOU1ZpZXcgKil3ZWJWaWV3IHBhZ2U6KFdlYktpdDo6CiAgICAgX3dlYlZpZXcgPSB3ZWJW
aWV3OwogICAgIF9wYWdlID0gJnBhZ2U7CiAKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4oKTsKKyAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6OldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudD4oKTsKICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5zZXRQYXJl
bnQoc2VsZik7CiAKICAgICBbc2VsZiB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpp
bmRleCA2NjAzMTdjMmZiYzc5YjY4YmI1YjczNDc2YTU4YmVmZWEwOWIwNmQzLi42OWQ5ZDllMmQ0
NDQ4NDNkMTUyNzBmNTExN2Y3NzRjZDIzN2Q1ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KQEAgLTU1LDYgKzU1LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgVGV4dEZp
bmRlckZpbmRDbGllbnQgOiBwdWJsaWMgQVBJOjpGaW5kTWF0Y2hlc0NsaWVudCwgcHVibGljIEFQ
STo6RmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgVGV4dEZpbmRlckZpbmRDbGllbnQoV0tUZXh0RmluZGVyQ2xpZW50ICp0ZXh0
RmluZGVyQ2xpZW50KQogICAgICAgICA6IG1fdGV4dEZpbmRlckNsaWVudCh0ZXh0RmluZGVyQ2xp
ZW50KQpAQCAtMTY4LDggKzE2OSw4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdl
YktpdDo6V2ViUGFnZVByb3h5JilwYWdlIHZpZXc6KE5TVmlldyAqKXZpZXcgdXNlCiAgICAgX3Zp
ZXcgPSB2aWV3OwogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IHVzZVBsYXRmb3JtRmluZFVJOwog
ICAgIAotICAgIF9wYWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RmluZENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYp
KTsKKyAgICBfcGFnZS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRl
eHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFr
ZVVuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CiAKICAgICByZXR1
cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggZWQwZDVmZmU5NTg5Zjk1ZTQ0YTA3ZjIy
MThlZDgyYzAwZjAxN2Q3ZS4uZTc0YWRhYzFlNjVlYmU1Yzk5YjMxZDkwNjdhZTYxMTU4ZjM5ODdm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90
ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3RvckNsaWVudDo6ZGlkQ2xvc2UoQ29ubmVjdGlvbklEKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JD
bGllbnQ6Omluc3BlY3QoQ29ubmVjdGlvbklEIGNvbm5lY3Rpb25JRCwgVGFyZ2V0SUQgdGFyZ2V0
SUQsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW5zcGVj
dG9yUHJveHlNYXAuZW5zdXJlKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQp
LCBbdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCwgJnR5cGVdIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9u
SUQsIHRhcmdldElELCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5z
cGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBlKTsKICAgICB9
KTsKIAogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3Rv
Y29sSGFuZGxlci5jcHAKaW5kZXggMWI2ZDljYzU0ZmM2MGI1M2U0NDAyNzFmMjMwOGU3YzBmNDdj
ODc0Yy4uYTg4MzNmNjI0ODdmOWE2NzIxMDM5OWVjOWY4ZmY1ZTA5MjcxMmVkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTg0LDExICs4NCwxMSBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVByb3h5
JiBwYWdlUHJveHksCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIGNsaWVudCA9IG1faW5z
cGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBbdGhpcywgJnJl
cXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVj
dG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBv
cnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUlu
c3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVS
TC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
IAogICAgIC8vIFNldHVwIHRhcmdldCBwb3N0TWVzc2FnZSBsaXN0ZW5lcgotICAgIGF1dG8gaGFu
ZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxT
Y3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50
V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyks
ICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAg
IHBhZ2VQcm94eS5wYWdlR3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGh0
bWxCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tp
bmdTdG9yZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5n
U3RvcmVEaXJlY3QyRC5jcHAKaW5kZXggYjY3ZDczYTRkYzQ4OGIzMWZkYzlhNDcyMTk2OTE0MDQy
NzQ0ODgyNS4uNWQ1MGFlNTU0NjgwYTZlOWUzZGEyY2U4NGJlNTY0ZDVjMzIzN2Y3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVu
aXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEPiBCYWNraW5nU3RvcmU6OmNyZWF0
ZUJhY2tlbmQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJh
Y2tlbmREaXJlY3QyREltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBt
X2RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KElEMkQx
UmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBjZDZmMDhm
ZjE4YmQ1NWMxNTU0NDYzZDRhNDBiNTFlNDViMmVhYjlmLi4wMzA3YzRmOWYxNDNmODZkYzYyMDhi
NDg0YmU4ZGI0MjJkYzBmNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9Q
YWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VD
bGllbnRJbXBsKFdlYlZpZXcmIHZpZXcpCiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1
bmN0aW9ucwogc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFw
aGljcz4oKm1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERy
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2UoKSwgcHJvY2Vz
cyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3Qg
V2ViQ29yZTo6UmVnaW9uJiByZWdpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHAKaW5kZXggY2Q1MzUyZGY3YWEwNGU2OWQ5YjBmOThlZDAwMWU1YzYzMzJmNzU5My4uNjdl
NWU0YjI3YTNhZTgwYWI2NjhmNmMzNDE3YzBmMGNlNmI3ZjA1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgV2ViVmlldzo6
cmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MoKQogfQogCiBXZWJWaWV3OjpXZWJWaWV3KFJFQ1Qg
cmVjdCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBw
YXJlbnRXaW5kb3cpCi0gICAgOiBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xp
ZW50SW1wbD4oKnRoaXMpKQorICAgIDogbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVu
dEltcGw+KCp0aGlzKSkKIHsKICAgICByZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yLmgKaW5kZXggYjZkNGEwNDIwZDVhNWRiZDY0NjA4M2FmNjc4ODA1MWJmNmNj
NDdlMC4uZjJkNjJlYTk3OTBmODA3YTY1YjVkM2U1OGY4MGI5N2YwNmFkYmYzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b247CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3IgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjsKICAgICBleHBsaWNpdCBXZWJQYXltZW50Q29vcmRpbmF0b3IoV2ViUGFn
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2Ft
ZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdh
bWVwYWRQcm92aWRlci5jcHAKaW5kZXggNGY4MTBjY2YzOGVjZmEyYzk5ZWNiZGE4OWQwNDFjZWI4
ZDIzMzNiOC4uYWFiMzQ1N2NlZDY0YTVhOTEwY2RjNTYyYWNjMDExNTAwZDNjNmNjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJv
dmlkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJ
bml0aWFsR2FtZXBhZHMoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYgZ2FtZXBhZERhCiAgICAg
ICAgIGlmIChnYW1lcGFkRGF0YXNbaV0uaXNOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBtX2dhbWVwYWRzW2ldID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHYW1lcGFkPihn
YW1lcGFkRGF0YXNbaV0pOworICAgICAgICBtX2dhbWVwYWRzW2ldID0gbWFrZVVuaXF1ZTxXZWJH
YW1lcGFkPihnYW1lcGFkRGF0YXNbaV0pOwogICAgICAgICBtX3Jhd0dhbWVwYWRzW2ldID0gbV9n
YW1lcGFkc1tpXS5nZXQoKTsKICAgICB9CiB9CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgV2ViR2Ft
ZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVkKGNvbnN0IEdhbWVwYWREYXRhJiBnYW1lcGFk
RGF0YSkKIAogICAgIEFTU0VSVCghbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSk7CiAK
LSAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJHYW1lcGFkPihnYW1lcGFkRGF0YSk7CisgICAgbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRl
eCgpXSA9IG1ha2VVbmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGEpOwogICAgIG1fcmF3R2Ft
ZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4
KCldLmdldCgpOwogCiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCmluZGV4IGZkNjUyM2Q2
ZmE3ZDc1OTNkMWI4ZDNiMzJiYWI0NjNhOTY4ZWFhMjguLjYzM2YyMmZkZmU0MjcyYjM5ZGUyNWVh
MGU0YTBhMDRkN2NkZTZjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViUGFnZTsKIAogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5oCmluZGV4IDBiYjRmMmI0MjFhM2VjMjI4NzU0ZTYzODI5ZDQxYWJiZTJlMDZm
OGQuLmE2YzI4NzE2YWIxNjc4YWZkZDU3NGM5ZGY5ZmUyODY4NjM0NjMwMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9j
YXRpb25NYW5hZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV2ViUHJvY2VzczsKIGNsYXNz
IFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9j
ZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJHZW9sb2NhdGlv
bk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uTWFuYWdlcihX
ZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCBmM2VjNzIwODdjYTI4ODY3ZjU0
ZDlkZjBmNTBkODcxMDJlMDE2ZmEyLi5jYTg1ZDU4NWRjZjFiNzZlZjBiOGQxMWQ1OWFkNjYwNGFj
M2YxODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV0tUeXBlSUQg
V0tCdW5kbGVHZXRUeXBlSUQoKQogCiB2b2lkIFdLQnVuZGxlU2V0Q2xpZW50KFdLQnVuZGxlUmVm
IGJ1bmRsZVJlZiwgV0tCdW5kbGVDbGllbnRCYXNlICp3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6
OnRvSW1wbChidW5kbGVSZWYpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRs
ZVJlZiktPnNldENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+
KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRTZXJ2aWNlV29ya2VyUHJveHlDcmVh
dGlvbkNhbGxiYWNrKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgdm9pZCAoKmNhbGxiYWNrKSh1aW50
NjRfdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGYxMmE1YmE3NzRkNmNjNjhk
MDg0ZjFmNjAyMWNlYmYzODFhYTNhNTguLmRjMDc1OGFkNzVhZjM2MWRmYmU4MTZlYjExM2Y0MWM3
ZjA5ZDgxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpCiB2b2lkIFdLQnVuZGxlUGFnZVNldENv
bnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRN
ZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+
c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpAQCAt
ODYsMjIgKzg2LDIyIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRlCiAKIHZvaWQgV0tCdW5kbGVQ
YWdlU2V0RWRpdG9yQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VF
ZGl0b3JDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVm
KS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQod2tDbGllbnQgPyBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pigqd2tDbGllbnQpIDog
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkpOwor
ICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dCh3a0NsaWVudCA/IG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQ+KCp3a0NsaWVudCkgOiBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRv
ckNsaWVudD4oKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xpZW50KQog
ewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ+
KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVu
ZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNs
aWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xp
ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNl
KiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFn
ZVJlZiktPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lk
IFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAg
V2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxv
YWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldElu
amVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tC
dW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZVBhZ2VQb2xpY3lDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tC
dW5kbGVQYWdlUG9saWN5Q2xpZQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50KQog
ewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4od2tD
bGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVV
SUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ+KHdr
Q2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0RnVsbFNjcmVlbkNsaWVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudEJhc2UqIHdr
Q2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCmluZGV4IGVi
ZDNlZjVmMjkzMDhjMTQxOTNhMTgxYjdlMWU0YTQyNWZkMjFkZDIuLjY5ZjdhZjIyYjU2NzUwNGQ0
ZjMxZjBkN2E3MGI4NzRlMDlmYTU1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJh
aXRzPFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50QmFzZT4gewogfQogCiBj
bGFzcyBQYWdlT3ZlcmxheUNsaWVudEltcGwgOiBBUEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VPdmVy
bGF5Q2xpZW50QmFzZT4sIHB1YmxpYyBXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VP
dmVybGF5Q2xpZW50SW1wbChXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZSogY2xpZW50KQog
ICAgIHsKQEAgLTIxNiw3ICsyMTcsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VPdmVybGF5R2V0
VHlwZUlEKCkKIAogV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3Jl
YXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBhdXRv
IGNsaWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4od2tD
bGllbnQpOworICAgIGF1dG8gY2xpZW50SW1wbCA9IG1ha2VVbmlxdWU8UGFnZU92ZXJsYXlDbGll
bnRJbXBsPih3a0NsaWVudCk7CiAgICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6OldlYlBhZ2VPdmVy
bGF5OjpjcmVhdGUoV1RGTW92ZShjbGllbnRJbXBsKSkubGVha1JlZigpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9X
S0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQppbmRleCBhY2MzNWEy
MWI1OWYxYWEzMWUzMzA1MWE2NmJjMTMwNTk5NjY5OWQzLi5kNmZmZDFjY2MwNGE5M2E3YTA5ZDJi
MzY1NTlhOGYwYzA5NTBmZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxl
UGFnZUJhbm5lck1hYy5tbQpAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBQYWdlQmFubmVyQ2xpZW50SW1wbCA6IEFQ
STo6Q2xpZW50PFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUJhbm5l
cjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBQYWdlQmFubmVyQ2xpZW50SW1wbChXS0J1bmRsZVBhZ2VCYW5uZXJDbGllbnRCYXNl
KiBjbGllbnQpCiAgICAgewpAQCAtMTAzLDcgKzEwNCw3IEBAIFdLQnVuZGxlUGFnZUJhbm5lclJl
ZiBXS0J1bmRsZVBhZ2VCYW5uZXJDcmVhdGVCYW5uZXJXaXRoQ0FMYXllcihDQUxheWVyICpsYXll
ciwKICAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgYXV0byBjbGllbnRJbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBh
Z2VCYW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAgYXV0byBjbGllbnRJbXBsID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VCYW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7CiAgICAgcmV0
dXJuIHRvQVBJKCZXZWJLaXQ6OlBhZ2VCYW5uZXI6OmNyZWF0ZShsYXllciwgaGVpZ2h0LCBjbGll
bnRJbXBsLnJlbGVhc2UoKSkubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
RE9NL0RPTU9iamVjdENhY2hlLmNwcAppbmRleCA0MjEwMWY4YzgyY2IyYTU0ODNiYWU0ZGM4NDgw
N2I0MTY1YTkyZDg2Li4wOTVmMzZmZmM2M2Y5NWI0NzU1ODFmNWI4ZWQ1ZTkzZjQyNzM4YjJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcApAQCAtODEsNyAr
ODEsNyBAQCBzdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyJiBnZXRPckNyZWF0ZURP
TU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJDbwogewogICAgIERPTU9iamVjdENhY2hlRnJh
bWVPYnNlcnZlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdENhY2hlRnJhbWVPYnNl
cnZlcnMoKS5hZGQoJmZyYW1lLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTU9i
amVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUpOworICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXI+KGZyYW1lKTsK
ICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTEwNSw3ICsxMDUs
NyBAQCBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZQogICAgICAgICBpZiAoZG9tV2luZG93ICYmICgh
bV9kb21XaW5kb3dPYnNlcnZlciB8fCBtX2RvbVdpbmRvd09ic2VydmVyLT53aW5kb3coKSAhPSBk
b21XaW5kb3cpKSB7CiAgICAgICAgICAgICAvLyBOZXcgRE9NV2luZG93LCBjbGVhciB0aGUgY2Fj
aGUgYW5kIGNyZWF0ZSBhIG5ldyBET01XaW5kb3dPYnNlcnZlci4KICAgICAgICAgICAgIGNsZWFy
KCk7Ci0gICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOworICAgICAgICAgICAgbV9kb21X
aW5kb3dPYnNlcnZlciA9IG1ha2VVbmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpkb21XaW5kb3cs
ICp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fb2JqZWN0cy5hcHBlbmQoJmRhdGEpOwpA
QCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dCh2b2lkKiBvYmplY3RI
YW5kbGUsIHZvaWQqIHdyYXBwZXIpCiB7CiAgICAgRE9NT2JqZWN0TWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gZG9tT2JqZWN0cygpLmFkZChvYmplY3RIYW5kbGUsIG51bGxwdHIpOwogICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CisgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hlRGF0
YT4oR19PQkpFQ1Qod3JhcHBlcikpOwogfQogCiB2b2lkIERPTU9iamVjdENhY2hlOjpwdXQoV2Vi
Q29yZTo6Tm9kZSogb2JqZWN0SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQpAQCAtMjI0LDcgKzIyNCw3
IEBAIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5kbGUs
IHZvaWQqIHdyYXBwZXIpCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9N
T2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVy
KSk7CiAgICAgaWYgKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IG9iamVjdEhhbmRsZS0+ZG9jdW1l
bnQoKS5mcmFtZSgpKQogICAgICAgICBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNl
cnZlcigqZnJhbWUpLmFkZE9iamVjdENhY2hlRGF0YSgqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAK
aW5kZXggNGNjZWM2MmVmMGUxMTMxZmExM2Y3ZmIwNjBjODBlMDdlZTQyNTFhZi4uNGQ3NDJlNDA5
YmJmYzdjZmFiNDA4Y2Q2NTM4YWVmOWYyMjhmZDcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQg
V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlhbGl6ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxl
LCBBUEk6Ok9iamVjdCogdXNlCiAgICAgc2Nhbk1vZHVsZXMod2ViRXh0ZW5zaW9uc0RpcmVjdG9y
eSwgbW9kdWxlUGF0aHMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRo
cy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
TW9kdWxlPihtb2R1bGVQYXRoc1tpXSk7CisgICAgICAgIGF1dG8gbW9kdWxlID0gbWFrZVVuaXF1
ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKICAgICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZVdlYkV4dGVuc2lv
bihtb2R1bGUuZ2V0KCksIHVzZXJEYXRhLmdldCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYkVkaXRvci5jcHAKaW5kZXggMDQwNzJlYjg2NGRiZTM1ZjgwZGZjODZhZDBlODgzYzNlOTlj
ZTQ0Zi4uY2NiNTFlMGQ5NjQwYzY2Zjg1OTZlNDc0MTcxNDA1OGU5MTM5NzY4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYkVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0
V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkK
IHsKICAgICBXZWJLaXRXZWJFZGl0b3IqIGVkaXRvciA9IFdFQktJVF9XRUJfRURJVE9SKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRURJVE9SLCBudWxscHRyKSk7CiAgICAgZWRpdG9yLT5w
cml2LT53ZWJQYWdlID0gd2ViUGFnZTsKLSAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdl
KS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRWRp
dG9yQ2xpZW50PihlZGl0b3IpKTsKKyAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+
c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQobWFrZVVuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50
PihlZGl0b3IpKTsKICAgICByZXR1cm4gZWRpdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5z
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4IDRhMjNiZjU2MDEwN2MzMWYxYTRkZTJjOTYx
Mjk5YTcwMTA4MTc1MDEuLmUzMDZlM2ZlZjI2MzFkNTQ2NjU1NzExNmU1ZTQ4N2QzNzFjNzg1Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgY2xhc3MgV2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW4KIFdlYktpdFdlYkV4dGVuc2lvbiog
d2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiB7CiAgICAg
V2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiwgTlVMTCkpOwotICAgIGJ1bmRsZS0+
c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGll
bnQ+KGV4dGVuc2lvbikpOworICAgIGJ1bmRsZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViRXh0
ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4dGVuc2lvbikpOwogICAgIHJldHVybiBleHRl
bnNpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCBjZmM1
MDMxZWQ2ZTRhMjk1NGZlMDJhMDNkYTg3YTE2MWNkMmQzMDgyLi42ZGIyOTlmNDcxMTJhMTQ0NWY3
ZTY4MzM0NzJkM2RiOGQ3ZDdiOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2Uu
Y3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIFdlYktpdEZyYW1lKiB3ZWJraXRGcmFtZUdl
dE9yQ3JlYXRlKFdlYkZyYW1lKiB3ZWJGcmFtZSkKICAgICBpZiAod3JhcHBlclB0cikKICAgICAg
ICAgcmV0dXJuIHdyYXBwZXJQdHItPndlYmtpdEZyYW1lKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRG
cmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEZyYW1l
V3JhcHBlcj4gd3JhcHBlciA9IG1ha2VVbmlxdWU8V2ViS2l0RnJhbWVXcmFwcGVyPigqd2ViRnJh
bWUpOwogICAgIHdyYXBwZXJQdHIgPSB3cmFwcGVyLmdldCgpOwogICAgIHdlYkZyYW1lTWFwKCku
c2V0KHdlYkZyYW1lLCBXVEZNb3ZlKHdyYXBwZXIpKTsKICAgICByZXR1cm4gd3JhcHBlclB0ci0+
d2Via2l0RnJhbWUoKTsKQEAgLTY3OCwxMSArNjc4LDExIEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtp
dFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKICAgICBXZWJLaXRXZWJQYWdlKiBwYWdl
ID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfUEFHRSwgTlVM
TCkpOwogICAgIHBhZ2UtPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwogCi0gICAgd2ViUGFnZS0+
c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdl
UmVzb3VyY2VMb2FkQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxvYWRlckNsaWVudD4ocGFn
ZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVVJQ2xpZW50
PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8UGFnZUZvcm1DbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmpl
Y3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRD
bGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQobWFrZVVuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+
c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb250ZXh0
TWVudUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGll
bnQobWFrZVVuaXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmpl
Y3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOwog
CiAgICAgcmV0dXJuIHBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9y
Lm1tCmluZGV4IDgxMDU1Y2U3ZmRlYmEzMThkYWIwNjgyNjM0YzZiZDg0YTM3ZmFlOGMuLjA4NGYz
MDA1ZDYxMDNkNGUyNTAzM2MyNTZjNzBjMGUwNjQwNDFjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9y
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NVGV4dEl0ZXJhdG9yLm1tCkBAIC00NSw3ICs0NSw3IEBAIC0gKGlkKWluaXRXaXRoUmFu
Z2U6KFdLRE9NUmFuZ2UgKilyYW5nZQogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIF90ZXh0SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJ
dGVyYXRvcj4oV2ViS2l0Ojp0b1dlYkNvcmVSYW5nZShyYW5nZSkpOworICAgIF90ZXh0SXRlcmF0
b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oV2ViS2l0Ojp0b1dlYkNvcmVS
YW5nZShyYW5nZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW0KaW5kZXggNDg4MDBiYjMxNzkwNjVlNGU3MzI5MzA2OTA1NDY4MGU0MzRhZjFm
Zi4uNDIwMjM5NmFiYWZhZjMwZDcxODlhZWI2ODUwOWVhMjcxNzFiOTc0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNTQ0LDcgKzU0NCw3IEBAIC0gKHZvaWQpX3NldEZv
cm1EZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGU+KWZv
cm1EZWxlZ2F0CiAgICAgfTsKIAogICAgIGlmIChmb3JtRGVsZWdhdGUpCi0gICAgICAgIF9wYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50
PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFr
ZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0
SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG51bGxwdHIpOwogfQpAQCAtNjczLDcgKzY3Myw3IEBA
IC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRp
bmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgfTsKIAogICAgIGlmIChlZGl0aW5nRGVsZWdh
dGUpCi0gICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPENsaWVudD4oc2VsZikpOworICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQobWFrZVVuaXF1ZTxDbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAg
ICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChudWxscHRyKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDIwY2U1NTkxMWQ3MDY1MWMzMzVhNzBhY2YyNGU1YmRmYzIx
YmQ2MzEuLjk5NzlkNjM4NGRmZjVjOTgwNTkxZjI5MDgzYzkzNzI5NjM0NGE5MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFJlZlB0cjxJbmplY3RlZEJ1bmRsZT4g
SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
CiBJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1fcGF0aChwYXJhbWV0ZXJzLmluamVjdGVk
QnVuZGxlUGF0aCkKICAgICAsIG1fcGxhdGZvcm1CdW5kbGUoMCkKLSAgICAsIG1fY2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpKQorICAgICwgbV9j
bGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCiB7CiB9CiAK
QEAgLTExNCw3ICsxMTQsNyBAQCBJbmplY3RlZEJ1bmRsZTo6fkluamVjdGVkQnVuZGxlKCkKIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6Q2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAg
bV9jbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4o
KTsKKyAgICAgICAgbV9jbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNs
aWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oCmluZGV4IDBjYTVlYTZkMmFiZTU3MjE1NGQy
MWJlZDBjYzlhMDUzZTdkNjZjMTguLmJmYjNkMDQ1MTQzNzM2YzMxZGY5ODhhYjFiMDBkZTQyYjg1
MzA4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyKFdlYlByb2Nlc3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaAppbmRleCBkN2M1YzY4MzQ0YjcyNzM4ZDk0OTdkZjAxMmNhMzc2YmI4
NDE4OGRhLi5iMGJkNTM0Y2UxOWQ3Mzg2MWQ4MTc2YTgyMDVjZGNlNjE5NWZkMDY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0zNiw2ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4sIHByaXZhdGUgV2ViQ29yZTo6TWVkaWFDYW5TdGFy
dExpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogICAg
IH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3Bw
CmluZGV4IDczMzUyNzY1ODcxZDgyNTVhMjNkYjdiNTVlNmQ0NGVlNzMzOTIyZDcuLjJlNTdhZjI0
ODNiZDM2YjNkZDg1ZTRlYzE4ZGRlMTBmNDQzNmU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMzIsMzgg
KzEzMiwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNl
bmRNZXNzYWdlKFQmJiBtZXNzYWdlLCBzaXplX3QgYnl0ZQogICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLVdl
YlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5C
eXRlcygpOwotICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAg
ICAgICAgcmV0dXJuIFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1w
dHkoKSkKLSAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVs
OjpTZW5kU3RyaW5nIHsgbWVzc2FnZSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAg
IG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdl
PihtZXNzYWdlKSk7Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KLVdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5
QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQotewotICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAg
ICAgICAgcmV0dXJuIFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1w
dHkoKSkKLSAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVs
OjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0
ZUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nTWVzc2FnZT4oYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0
ZUxlbmd0aCkpOwotCi0gICAgcmV0dXJuIFNlbmRTdWNjZXNzOwotfQotCiBjbGFzcyBCbG9iTG9h
ZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJsb2JMb2FkZXIoV2ViQ29y
ZTo6RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9sb2FkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVh
ZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhpcykpCisgICAgICAgIDogbV9sb2FkZXIo
bWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVy
TG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhpcykpCiAgICAgICAgICwgbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CiAgICAgICAgIG1fbG9h
ZGVyLT5zdGFydChkb2N1bWVudCwgYmxvYik7CkBAIC0yMjYsNyArMTk5LDcgQEAgY2xhc3MgUGVu
ZGluZ01lc3NhZ2UgewogCiAgICAgUGVuZGluZ01lc3NhZ2UoV2ViQ29yZTo6RG9jdW1lbnQqIGRv
Y3VtZW50LCBXZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogbV90eXBlKFR5cGU6OkJsb2IpCi0gICAgICAg
ICwgbV9ibG9iTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJs
b2IsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSkKKyAgICAgICAgLCBtX2Jsb2JMb2FkZXIo
bWFrZVVuaXF1ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpKQogICAgIHsKICAgICB9CiAKQEAgLTI0NCwxMyArMjE3LDQwIEBAIGNsYXNzIFBl
bmRpbmdNZXNzYWdlIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRlcj4gbV9ibG9iTG9h
ZGVyOwogfTsKIAorV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVs
OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGJ5dGVMZW5ndGggPSBt
ZXNzYWdlLnNpemVJbkJ5dGVzKCk7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5
dGVMZW5ndGgpKQorICAgICAgICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5n
TWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29y
a1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOworICAg
IGVsc2UKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGlu
Z01lc3NhZ2U+KG1lc3NhZ2UpKTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKworV2Vi
U29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpT
Qzo6QXJyYXlCdWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGJ5dGVMZW5ndGgpCit7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5n
dGgpKQorICAgICAgICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2Fn
ZXMuaXNFbXB0eSgpKQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tl
dENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgg
fSB9LCBieXRlTGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFw
cGVuZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBi
eXRlTGVuZ3RoKSk7CisKKyAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Cit9CisKIFdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChXZWJDb3JlOjpCbG9iJiBi
bG9iKQogewogICAgIC8vIEF2b2lkIHRoZSBCbG9iIHF1ZXVlIGFuZCBsb2FkaW5nIGZvciBlbXB0
eSBibG9icy4KICAgICBpZiAoIWJsb2Iuc2l6ZSgpKQogICAgICAgICByZXR1cm4gc2VuZChKU0M6
OkFycmF5QnVmZmVyOjpjcmVhdGUoYmxvYi5zaXplKCksIDEpLCAwLCAwKTsKIAotICAgIG1fcGVu
ZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtX2Rv
Y3VtZW50LmdldCgpLCBibG9iLCBbdGhpc10geworICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVu
ZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9iLCBbdGhp
c10gewogICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgYXV0byYgbWVzc2FnZSA9IG1fcGVuZGluZ01lc3NhZ2VzLmZpcnN0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDA5NGFjNzFmN2U1ZWZmYWI3NDg1ZmNlZmNhZTU0
ODkzZGIzZTA1MDYuLjdlYzM3Y2RmMDlkMzkwYTM4MjdhNjljYTNmNjBhNmMzMDU2ZGE3MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBBc3luY1Jlc29sdmVyRmFj
dG9yeSA6IHB1YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAgICAgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJm
YWNlKiBDcmVhdGUoKSBmaW5hbAogICAgIHsKQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQXN5bmNS
ZXNvbHZlckZhY3RvcnkgOiBwdWJsaWMgd2VicnRjOjpBc3luY1Jlc29sdmVyRmFjdG9yeSB7CiAK
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJX
ZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlv
bk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0
b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYg
Y29uZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6
OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5s
aWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25m
aWd1cmF0aW9uKSwgc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlv
bihvYnNlcnZlciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1v
bml0b3IoKSwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlx
dWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwogfQogCiB2b2lkIExpYldlYlJUQ1Byb3ZpZGVy
OjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaApp
bmRleCA1ZDYzODNmNmI1MDY1M2I1YzY3MDcwNzA1YzZjMTAyODcwZmEwMjMxLi4zOTkwNjk5ZDA3
NzhmZWIxN2IwY2E4ZTYwNzgxNDEwOGE1YzAwYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaApA
QCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIExpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk7CiAKIGNsYXNzIExpYldlYlJUQ1Jlc29sdmVyIGZpbmFsIDogcHVibGljIHJ0Yzo6
QXN5bmNSZXNvbHZlckludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgTGliV2ViUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllcikgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5
LmNwcAppbmRleCBmOGI3ZWQyMjljNGY2ZjJkYzAzNjEzMmNjOTZlNDExZWVjYTU3MDJlLi4yMzU4
MmRlNzU5Yjk4NDVlYjdmZTQwNjQ0MzY1ZWZiYzE5Yjc1ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1NvY2tldEZhY3RvcnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpT
b2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3Jl
YXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWlu
dDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCwgaW50IG9wdGlvbnMpCiB7Ci0gICAgYXV0
byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191
bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwg
YWRkcmVzcywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVu
aXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwg
TGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRk
cmVzcygpKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQu
Z2V0KCkpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRl
bnRpZmllcigpLCBhZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNh
YmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0LCBvcHRpb25zXSgp
IHsKQEAgLTY2LDcgKzY2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29j
a2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3lu
Y1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNv
bnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2
X3QgbWF4UG9ydCkKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1Nv
Y2tldDo6VHlwZTo6VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0
byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVT
b2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRj
OjpTb2NrZXRBZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVy
KCksIHNvY2tldC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0g
c29ja2V0LT5pZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVzcyhhZGRy
ZXNzLCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1heFBvcnRd
KCkgewpAQCAtODAsNyArODAsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENT
b2NrZXRGYWN0b3J5OjpjcmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZQogCiBydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BT
b2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBsb2NhbEFkZHJlc3MsIGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgcmVtb3RlQWRkcmVzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcmJiB1c2VyQWdlbnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRl
bnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywg
cmVtb3RlQWRkcmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1Nv
Y2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6
OlR5cGU6OkNsaWVudFRDUCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2Nr
ZXQtPnNldFN0YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVElORyk7CiAgICAgbV9z
b2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtOTYs
NyArOTYsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5
OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KExp
YldlYlJUQ1NvY2tldCYgc2VydmVyU29ja2V0LCB1aW50NjRfdCBuZXdDb25uZWN0aW9uU29ja2V0
SWRlbnRpZmllciwgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzKQogewot
ICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlz
LCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2
ZXJDb25uZWN0aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJl
c3MpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlz
LCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2
ZXJDb25uZWN0aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJl
c3MpOwogICAgIHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05ORUNU
RUQpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQo
KSk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmRl
dGFjaChMaWJXZWJSVENTb2NrZXQmIHNvY2tldCkKIAogcnRjOjpBc3luY1Jlc29sdmVySW50ZXJm
YWNlKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVBc3luY1Jlc29sdmVyKCkKIHsKLSAg
ICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytz
X3VuaXF1ZVJlc29sdmVySWRlbnRpZmllcik7CisgICAgYXV0byByZXNvbHZlciA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOwogICAg
IGF1dG8qIHJlc29sdmVyUG9pbnRlciA9IHJlc29sdmVyLmdldCgpOwogICAgIG1fcmVzb2x2ZXJz
LnNldChyZXNvbHZlclBvaW50ZXItPmlkZW50aWZpZXIoKSwgV1RGTW92ZShyZXNvbHZlcikpOwog
ICAgIHJldHVybiByZXNvbHZlclBvaW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgK
aW5kZXggMmQxZTg0MjQ3YmQwYTMwYzk0ZDFmMmVhMzAxZGQ1NWQwMmE2ZTA3Ni4uYjI3MTNmNDZj
MWZjMTNjOWYyN2JiZTM5Y2E1ZGM1MTg1MGIxODNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUHJvY2Vz
czsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3Vw
cGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJOb3RpZmljYXRpb25NYW5h
Z2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyKFdlYlBy
b2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCAxNmExYTdm
ODM0NDYwNTNmMzNkNjU0ZTgzMzMyMjk1MGVlOTk0ZDcyLi5kNzNmMWYxNmY4OTA3NjljNzJjYzlk
ZDQ0MGQyMjkyMWZmNWZmYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHsKICAg
ICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihOZXRzY2FwZVBsdWdpbiogcGx1
Z2luKQogICAgIHsKICAgICAgICAgaWYgKHBsdWdpbikKLSAgICAgICAgICAgIG1fcHJvdGVjdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVnaW5EZXN0cnVjdGlvblBy
b3RlY3Rvcj4oc3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29udHJvbGxlcigpKTsKKyAg
ICAgICAgICAgIG1fcHJvdGVjdG9yID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVn
aW5EZXN0cnVjdGlvblByb3RlY3Rvcj4oc3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29u
dHJvbGxlcigpKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CmluZGV4IDY5YTNjOTNmMTMyNmZhNGM2ZjdmZWJmOGFiMWIyY2E0Yzc3NmJjMGUuLjU5ZjQ4MjUx
ZjI4ODU0YzZkMTY4MGIxZDY0ZGZhYTVhNDdjNjgxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAKQEAgLTM1MCw3ICszNTAsNyBAQCB1aW50MzJfdCBOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVU
aW1lcih1bnNpZ25lZCBpbnRlcnZhbCwgYm9vbCByZXBlYXQsIHZvaWQgKCp0aQogICAgIC8vIEZJ
WE1FOiBIYW5kbGUgd3JhcHBpbmcgYXJvdW5kLgogICAgIHVuc2lnbmVkIHRpbWVySUQgPSArK21f
bmV4dFRpbWVySUQ7CiAKLSAgICBhdXRvIHRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4o
dGhpcywgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKKyAgICBhdXRvIHRp
bWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4odGhpcywgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwg
dGltZXJGdW5jKTsKICAgICAKICAgICAvLyBGSVhNRTogQmFzZWQgb24gdGhlIHBsdWctaW4gdmlz
aWJpbGl0eSwgZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgdGhyb3R0bGUgdGhlIHRpbWVyLCBvciBp
ZiB3ZSBzaG91bGQgc3RhcnQgaXQgYXQgYWxsLgogICAgIHRpbWVyLT5zdGFydCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmgKaW5kZXggZTBhYmMyYzdiNDEyOTkzMDAyYmJhYjhiZGZhYjdmMjY1MWFkYzU3
Zi4uYjZjNzZiNmVkNzE0Y2FhYTNhNDFkZGU0MWMxZDZhMTA0ZmI3YWVjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCkBAIC0zMDgsNiArMzA4LDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJs
aWMgUGx1Z2luIHsKICAgICBWZWN0b3I8Ym9vbCwgOD4gbV9wb3B1cEVuYWJsZWRTdGF0ZXM7CiAK
ICAgICBjbGFzcyBUaW1lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaW1lcik7CiAKICAgICBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMDQ5NjI4ZjVjNjI3MDJlNGQ1ZDQxMTE4
MjAxMjNiYTVmNGI5NjUyNC4uYmRhYTE0NDc4NDIyNjk1ZDUwZWE4NDhhYWZjY2JjZTEyZDJhZDky
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtMTkzLDcgKzE5Myw3
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlICE9IE5QX0FTRklMRU9O
TFkpIHsKICAgICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAgICAgICAgICAgIG1fZGVsaXZl
cnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7CisgICAgICAgICAg
ICBtX2RlbGl2ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPHVpbnQ4X3Q+PigpOwogCiAgICAg
ICAgIG1fZGVsaXZlcnlEYXRhLT5yZXNlcnZlQ2FwYWNpdHkobV9kZWxpdmVyeURhdGEtPnNpemUo
KSArIGxlbmd0aCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAppbmRleCA0NGQxMWI1N2Mz
ZWE2ZDUxOGMxOGQwNGI4MjJkMjg2ZDUzZTk2OGNmLi4wN2Q1NTZjM2I3ZmM2MzcxOWMyYTI1NTll
MGFhZDZjMjI2YzA3Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAK
QEAgLTEzNiwxMCArMTM2LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4g
TmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0ZShOZXRzY2FwZVBsdWdpbiYgcGx1CiAKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgaWYgKHBsdWdpbi5pc1dpbmRvd2VkKCkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRv
d0lEKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdp
biwgZGlzcGxheSwgd2luZG93SUQpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKIH0KIAogTmV0c2Nh
cGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4sIERp
c3BsYXkqIGRpc3BsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Db250cm9sbGVyLmgKaW5kZXggYTFmODA3ZTFlNTUwNzIzZWZlZWExNzcxMzNiODFk
ZmY0ZDE3NmIzNS4uYjU3MmFhM2E1MzZkNDg1Y2I5YjgxN2ExNmUwMmMzMzJjNGJjMjExNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaApAQCAtMTU5LDYgKzE1OSw3IEBAIGNsYXNzIFBsdWdpbkNvbnRyb2xsZXIgewogCiAgICAg
Ly8gSGVscGVyIGNsYXNzIGZvciBkZWxheWluZyBkZXN0cnVjdGlvbiBvZiBhIHBsdWctaW4uCiAg
ICAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgeworICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBsdWdpbkRlc3Ry
dWN0aW9uUHJvdGVjdG9yKFBsdWdpbkNvbnRyb2xsZXIqIHBsdWdpbkNvbnRyb2xsZXIpCiAgICAg
ICAgICAgICA6IG1fcGx1Z2luQ29udHJvbGxlcihwbHVnaW5Db250cm9sbGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGYzN2My
Y2MyNGUzZGQ5NzYzZjNlYmRkNjMyZDhiZmRiNzcxNDQzNDcuLjlhYjU4MzczMGI4OWRiZDk2MDFk
NjUyMGVmOGY5YjBiZTAwNmRjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBQbHVnaW5Qcm94
eTo6aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIG1fY29ubmVj
dGlvbi0+YWRkUGx1Z2luUHJveHkodGhpcyk7CiAKICAgICAvLyBBc2sgdGhlIHBsdWctaW4gcHJv
Y2VzcyB0byBjcmVhdGUgYSBwbHVnLWluLgotICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPigpOwor
ICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyA9IG1ha2VVbmlxdWU8UGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzPigpOwogCiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzLT5wbHVnaW5JbnN0YW5jZUlEID0gbV9wbHVnaW5JbnN0YW5jZUlEOwogICAgIG1fcGVu
ZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+d2luZG93TlBPYmplY3RJRCA9IHdpbmRvd05Q
T2JqZWN0SUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKaW5kZXggN2FiODk2NmRiOTA1YWRkMTIzOTQ4MTY1MGIxOWRlNGE3ZTdkMjIzZi4u
MTE5ZDJiOTBjMmI0NDIzMWYyNTY5NTdlNjJkZGNhOGYxMzBmYzczMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTg5OCw3ICs4OTgs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50
KE1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAgIGlmIChldmVudC5tZXRhS2V5KCkpCiAgICAg
ICAgIG1vZGlmaWVycy5hZGQoV2ViRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk1vdXNlRXZlbnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQu
YnV0dG9ucygpLCBtX3BsdWdpbi0+Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQub2Zm
c2V0WCgpLCBldmVudC5vZmZzZXRZKCkpKSwgZXZlbnQuc2NyZWVuTG9jYXRpb24oKSwgMCwgMCwg
MCwgY2xpY2tDb3VudCwgbW9kaWZpZXJzLCBXYWxsVGltZSB7IH0sIDApOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFdlYk1vdXNlRXZlbnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQuYnV0dG9ucygpLCBt
X3BsdWdpbi0+Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQub2Zmc2V0WCgpLCBldmVu
dC5vZmZzZXRZKCkpKSwgZXZlbnQuc2NyZWVuTG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3Vu
dCwgbW9kaWZpZXJzLCBXYWxsVGltZSB7IH0sIDApOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Omhh
bmRsZUV2ZW50KEV2ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cAppbmRleCA2ZmMwOWM0ZjY1YjI0NWI2MGJmNGQ0ZjU5N2E5ZjkwYWQ0ZDBhYWY5Li5hMWZmMDMz
YjIwNGVhZmFkYzg4OGE4MjA4YTg5Zjc5ZGEwMGJjZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckNv
bnQKIAogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgbW92ZWQgZGlyZWN0bHkg
dG8gV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbgogICAgIC8vIElmIGl0IHdl
cmVuJ3QgZm9yIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCdzIGRlcGVuZGVuY2Ugb24g
V2ViRG9jdW1lbnRMb2FkZXIsIHRoaXMgY291bGQgYWxyZWFkeSBoYXBwZW4uCi0gICAgYXV0byBm
cmFtZUxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckZyYW1lTG9h
ZGVyQ2xpZW50PigqdGhpcywgc2Vzc2lvbklELCBtX3BhZ2VJRCwgKyttX3ByZXZpb3VzU2Vydmlj
ZVdvcmtlcklELCBlZmZlY3RpdmVVc2VyQWdlbnQpOworICAgIGF1dG8gZnJhbWVMb2FkZXJDbGll
bnQgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4oKnRoaXMsIHNl
c3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZmZWN0aXZl
VXNlckFnZW50KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJh
bWUgPSBmcmFtZUxvYWRlckNsaWVudC5nZXQoKTsKICAgICBtX2xvYWRlcnMuYWRkKFdURk1vdmUo
ZnJhbWVMb2FkZXJDbGllbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCmluZGV4IDkyMGRlZDA0MGNlNTYxODMzOTlmNmM5
M2I4MmViMzZkZjczMDQ5NmEuLjkzMGU0NjE4MTllMTg2ZjVhODBkOGY2NzE2ZmIxMThjNGRjMGVh
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09y
aWdpblRhYmxlLmgKQEAgLTM3LDYgKzM3LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTV09yaWdpblRhYmxlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTV09yaWdpblRhYmxlKCkgPSBk
ZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggNGRmNmYw
MTllNTU4NTc1NTJjODRkZmFiOTI1MGM0MDFhODRjYjgzNS4uZjRjZjI5MWE0MDEwYjFlN2MyNDE2
N2Q0NTRiNTRlYzRiODY0YzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAK
IGNsYXNzIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJQYWdlKik7CiAgICAgdmly
dHVhbCB+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDNjODcyZjVhZGYzOWJlYWNkM2E3MDY2N2IyNjg5ZDM4YzliMTExMmUuLjRkMjc0NzY4NjIw
ZTVhNDZlYjk1MDhmZGU0N2I1NzFlNzk2ZjE3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBA
IC03OTMsNyArNzkzLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwKIAogc3RkOjp1bmlxdWVf
cHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29s
b3JDaG9vc2VyQ2xpZW50JiBjbGllbnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29sb3JDaG9vc2VyPigmbV9wYWdlLCAmY2xp
ZW50LCBpbml0aWFsQ29sb3IpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvbG9yQ2hvb3Nl
cj4oJm1fcGFnZSwgJmNsaWVudCwgaW5pdGlhbENvbG9yKTsKIH0KIAogI2VuZGlmCkBAIC04MDIs
NyArODAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50
OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2wKIAogc3RkOjp1bmlxdWVfcHRyPERh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIoRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1f
cGFnZSwgJmNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyPigmbV9wYWdlLCAmY2xpZW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggY2VkMzZhNmMyNWI3ZTRmODM0NGE1ODk5NDAwNjc5MWY3Y2M5Mjc2Zi4uZDQ1NTZk
OTg3YTM2NmQxODExNDA4YWQ5MGJmN2EzNDdkZDU5OGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApA
QCAtNDEsNiArNDEsNyBAQCBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNz
IFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVu
dChXZWJQYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggNmMyOWI0ZTA4
MTI2ZTdjZDY2NzljYzQ3MDIzNWM1NTc0ZGU1MGQyZS4uYzFjODljZDk5ZTg3YWVlODRlZDU3NDZj
MmU4MWY2NDdlODJmMWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTM1LDYg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJD
b250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVD
bGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
CmluZGV4IDFhZDRjM2RlMmNiN2QzOGU2MjYyYzE5N2FhYjI0Y2NhNmZlZGE4MjEuLmIyNGVjZjc2
YzQ1NTI0ZjYwZDg2YWVkNmZiMWVjZjZmMGYzOTQyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzUs
NiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdl
YkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJQYWdlKiBwYWdl
KQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDI2ODEwMmZl
YTFhNzc1N2VkN2UxNmRkZWNjZTNjYWQ4ZWU2YmQ0MzUuLmQyMmQ0Y2I3M2YyOTczZjU2NTVhODcz
ZWJkMjJkNmIwMDZhZTBmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJFZGl0b3JDbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6
VGV4dENoZWNrZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkVkaXRvckNsaWVudChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShw
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAzMGY1YWQ2YjRiYzJhNjM4ZDYw
MzdmOGVjOTczODA5ZGY2ZTU2YjE4Li4zNWEzMWZjMmEzNDRiMzEyODczMDUwNGI3ZmU3YTExNWYw
MTFiODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9u
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQ
YWdlJiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcAppbmRleCA3Y2RhYWNkMWZjMWQ0NmQ2NWVhZGMzZjNhNjEzNGFhMzU1OGEyZDExLi5kNjdi
NjJjMDJlNjg4M2I0NDg2NWZiYTE1ODUxNmVhMGNiY2I1YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpz
aG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICB9CiAKICAgICBpZiAoIW1f
cGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCkKLSAgICAgICAgbV9wYWludEluZGljYXRvckxheWVy
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ+KCp0
aGlzKTsKKyAgICAgICAgbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxS
ZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ+KCp0aGlzKTsKIAogICAgIGF1dG8gcGFpbnRMYXll
ciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmdyYXBoaWNz
TGF5ZXJGYWN0b3J5KCksICptX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQpOwogICAgIApAQCAt
MTYyLDkgKzE2Miw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBwYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
Q29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMC4yZikpOwogCiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qg
ZmFkZUtleWZyYW1lcyhBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7Ci0gICAgZmFkZUtleWZyYW1l
cy5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCAxKSk7Cisg
ICAgZmFkZUtleWZyYW1lcy5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigw
LCAxKSk7CiAKLSAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0
QW5pbWF0aW9uVmFsdWU+KDAuMjUsIDApKTsKKyAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChtYWtl
VW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAuMjUsIDApKTsKICAgICAKICAgICBhdXRvIG9w
YWNpdHlBbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwogICAgIG9wYWNpdHlBbmltYXRp
b24tPnNldER1cmF0aW9uKDAuMjUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGY1ZWNj
NjRjOTIzZjM4NmM1MGU3YjUyOTc3ZWZjMDk5ZTBiY2ZhZDYuLjI3YzNlZTE0MmUxNjE2ZTQzNWY0
OGQ0MWYyNzI3MTVmZThlMDM4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTQyLDYg
KzQyLDcgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVu
dDsKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudCwgcHJpdmF0ZSBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIGZyaWVuZCBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJD
bGllbnQ7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggNTMzYmU4NDBjYWQ3
MTQ1NTVkYWYwYWEyMDcyOGEzYzkzMzU1YzliZS4uNGJiMzdmZGQ2MDc3NzRlZDgwOWE5NjdhNzc1
MTVmYmFmYjZlZjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDE2MzdhZDEwOTdkNzY0OWU1MGRmNzRm
NWUwNjIyNzI3MWZhYjg0NWEuLjAwY2MwYTA4ZDkyNjA0ZmRkZmI1Y2E2MmY2Yjg4NTk1YzMxYWIw
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25D
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb3RpZmljYXRpb25DbGllbnQoV2Vi
UGFnZSopOwogICAgIHZpcnR1YWwgfldlYk5vdGlmaWNhdGlvbkNsaWVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRP
dmVycmlkZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCmluZGV4IDc5MDA4NGNlNDhkMjI2YjEwZTY2NWI4Mjg0
NDM0OWZkYWFmZmVlNDYuLjY5ZjBhZTgyNzk1MDdiNzI5NjVmNjVjMjE2ODczYzQ4MWFkZjRkNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
dm9pZCBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjphZGRPdmVycmlkZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHIKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3ZlcnJpZGVz
TWFwLmFkZChwYXN0ZWJvYXJkTmFtZSwgbnVsbHB0cik7CiAKICAgICBpZiAoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8dWludDhfdD4+PiB0eXBlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywg
VmVjdG9yPHVpbnQ4X3Q+Pj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3Ry
aW5nLCBWZWN0b3I8dWludDhfdD4+PiB0eXBlTWFwID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPHVpbnQ4X3Q+Pj4oKTsKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IFdURk1vdmUodHlwZU1hcCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKaW5kZXggZjZl
MDE0OTU3ZWRjMjc3ZGI5ODM3MzEyN2VjMTA2M2U5MzU1OGNiOC4uY2Y5MGE1ZGZjZmRhNjNlY2I5
ODk3Y2M2NmQwZDQ4MTI5NDQ4MTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaApAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBsdWdJ
bkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnSW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlBsdWdJbkNsaWVudChXZWJQ
YWdlJik7CiAgICAgdmlydHVhbCB+V2ViUGx1Z0luQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jl
c3NUcmFja2VyQ2xpZW50LmgKaW5kZXggNWRkNjViZmEwZDUwY2NmZGIxNDYxZmViM2ZlNTI0MWZj
YWEwZmJhNi4uNjNkNzc0ZTVhOTQyN2M3MzViNTI0OTBiZDAxY2Q3OWFiNzRhMTBlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNz
VHJhY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlByb2dyZXNzVHJhY2tlckNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXJDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlByb2dyZXNzVHJh
Y2tlckNsaWVudChXZWJQYWdlJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xp
ZW50LmgKaW5kZXggZWFkMTdkMzBmMDU5MGQ3NDQ2NzIwNTVjYWQ3N2Q5NWM2ZDBhNDc3MC4uN2Jk
ODc1OTA1YTY1Yzc3ZDk2YzNmNzg4NDAwMTg1ODJjZmFmNzZjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hTeW50aGVzaXNDbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYlBhZ2U7CiAgICAgCiBjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQoV2ViUGFn
ZSYgcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApp
bmRleCAxMDkzMDQ1M2NlNzk3ZWRkOTBkZTc2ZjAzNTRiOWExZDQwNmYyZTZlLi42OTUyMTc0Yjkx
MmM5NzFlMzU3ODZlMjdjNDgyMjVkMmZjYTE0MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5o
CkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViVXNlck1l
ZGlhQ2xpZW50KFdlYlBhZ2UmKTsKICAgICB+V2ViVXNlck1lZGlhQ2xpZW50KCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKaW5kZXggOWNmZmNjOWE5ZmQyYjY0NDQ5MjJmODU0YWQ5N2QxZDMzMWU3
MGIwZS4uYjI0NTgxYzk3ZTdhODgxNmY0NmFmOTMxOWE5MWVhMjFiNzJiZDY2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKEdyYXBoaWNzTGF5
CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5h
YmxlZCh0cnVlKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
LSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllclRyZWVIb3N0
PihtX3dlYlBhZ2UpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBtYWtlVW5pcXVlPExheWVy
VHJlZUhvc3Q+KG1fd2ViUGFnZSk7CiAjZWxzZQogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBu
dWxscHRyOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggYzA3Mzk2ZjAyZjFmYTY1ZjQ1YWNlZTcyZjEz
NGY0ZmIyZDllODkwOS4uNTM1OGNkNjg2M2IzMjI2OTU4ZWUyNzRlZmQwMzJhZDIwMDY0ZGQ2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNw
cApAQCAtNTAsMTMgKzUwLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYT4gRHJhd2lu
Z0FyZWE6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY2FzZSBEcmF3aW5nQXJl
YVR5cGVUaWxlZENvcmVBbmltYXRpb246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdl
YlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlmCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVSZW1v
dGVMYXllclRyZWU6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMp
OwogI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIp
CiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVDb29yZGluYXRlZEdyYXBoaWNzOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdl
YlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlmCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaAppbmRleCAwZjI2NDAzZWJiNzBhODExYjE4ZTk4Nzk1ZTE5ZGU3NzQwYmU4MzYwLi4xYTUz
NWYxN2Q5N2Y2NjY4Mzk3MjY5YTg2ZTI4NTdiMjliOTcyYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBGaW5kQ29udHJv
bGxlciA6IHByaXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmluZENvbnRyb2xs
ZXIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuY3BwCmluZGV4IDQ1MmY1M2JjZWRjMDA0N2Y3MzNkMWMzNGJjZDc2NTExOTJjYjhiZTYu
LjQ2ZThhYTA5OTg2NDVhOGNlNWQyZDdiOTU3Zjk5YWZkYzM4ZjQ2ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0yMjAsNyArMjIwLDcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9yZSgpCiAgICAg
QVNTRVJUKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCk7CiAKICAgICBpZiAoIW1f
cHJvcGVydGllcy5iYWNraW5nU3RvcmUpCi0gICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3Rv
cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPih0aGlzKTsKKyAg
ICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU+KHRoaXMpOwogCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiB9CkBAIC01
MjEsNyArNTIxLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Ojp0cmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0VHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKLSAgICBtX3Byb3Bl
cnRpZXMudHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
dmFsdWUpOworICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9y
bWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hh
bmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VHJhbnNmb3JtQ2hhbmdlZCk7CiB9CiAK
QEAgLTUzMiw3ICs1MzIsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2
YWx1ZSkKIHsKLSAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAgbV9wcm9wZXJ0aWVzLnN1
YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUp
OwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OlN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCk7CiB9CiAKQEAgLTczOCw3ICs3
MzgsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0T3BhY2l0eShmbG9hdCB2YWx1
ZSkKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBtX3Byb3BlcnRpZXMuZmlsdGVycyA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CisgICAgbV9wcm9wZXJ0aWVz
LmZpbHRlcnMgPSBtYWtlVW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KGZpbHRlcnMpOwogICAgIG1f
cHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkZpbHRlcnNDaGFuZ2VkKTsKIH0KIApAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJvdW5kZWRSCiAgICAgaWYgKG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ICYmICpt
X3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9PSByb3VuZGVkUmVjdCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICBtX3Byb3BlcnRpZXMuc2hh
cGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3Qp
OwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OlNoYXBlUm91bmRlZFJlY3RDaGFuZ2VkKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5n
LmNwcAppbmRleCAxY2JkMWI0YmE3OWE3ZGY5Y2U1NWUwNDIxZDQ0ZTY1YjQwODgyMWMyLi4wOTk1
MzZiOTNjMDExYWMzZjJhMDczYzNjYTQ2NGYwNzI2NDY5Y2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlVGlsZWRCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNw
cApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUGxhdGZvcm1D
QUxheWVyUmVtb3RlVGlsZWRCYWNraW5nOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tp
bmcoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKICAgICA6IFBsYXRmb3JtQ0FMYXllclJlbW90
ZShsYXllclR5cGUsIG93bmVyLCBjb250ZXh0KQotICAgICwgbV90aWxlQ29udHJvbGxlcihzdGQ6
Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fdGlsZUNvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA1ZTUw
ZTBiYTFlZjEyNDZjNmFlMDhmMjlkOTJhODMwZTBkYjRmMjM3Li40NDQ2ZjM0ZDA0Y2NmYmZiZWIz
NjliYTQ0YzMyMDZiZjBkZDIzZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC01OCw3ICs1OCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZVJl
bW90ZUxheWVyVHJlZSwgcGFyYW1ldGVycy5kcmF3aW5nQXJlYUlkZW50aWZpZXIsIHdlYlBhZ2Up
Ci0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVM
YXllclRyZWVDb250ZXh0Pih3ZWJQYWdlKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4
dChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+KHdlYlBhZ2UpKQogICAgICwgbV9y
b290TGF5ZXIoR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0
aGlzKSkKICAgICAsIG1fbGF5ZXJGbHVzaFRpbWVyKCp0aGlzLCAmUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OmZsdXNoTGF5ZXJzKQogewpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVy
VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpKSk7CiAKICAgICBNZXNzYWdlczo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFu
c2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwotICAgIGF1dG8gY29tbWl0RW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5hbWUoKSwgTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFt
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBjb21taXRFbmNvZGVyID0g
bWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1f
aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBjb21taXRFbmNvZGVyLT5lbmNvZGUobWVzc2Fn
ZS5hcmd1bWVudHMoKSk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBzdG9yZSBm
bHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCBhYWRlM2Q5ZjE4NDRkN2YwNWMwOTIx
OGQ4ZTIwNDRkNThhMmYwNWY4Li5iMmJkYzQxYjcyMzM2YmI2ZTQ4NDkwZjczMWIyNDg1ZDI3MDc4
MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC00MCw2ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3RvciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IoV2ViUGFnZSYpOwogICAgIH5WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNjBj
ZmQ4ZDJhMTc1NGE3YWNlZDU4ZDYxZGYxN2JlNGMxNDMxMzY5NC4uYmRkNGIzOTUyNTRhNzE2NzYz
OWFlY2Q3Mzg2MGUwNzJkNjljNDJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIFJlZjxXZWJGcmFtZT4gV2Vi
RnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZy
YW1lKiBjCiAKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2Uq
IHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCkKIHsKLSAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8
V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOworICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUobWFrZVVu
aXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CiAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAg
ICBhdXRvIGNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJF
bGVtZW50LCBmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDEzMzY1NzBkOTNhYTUxMTA2
OTc4NTYxMTcwMjYwODkzYjhhM2NkYjQuLmRiMzJkYTQ4MTM5ZTE5ZjcxNDIxMjU2NTQwYTIxNjMy
MzRjYzkxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0zODMsMjEgKzM4MywyMSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBt
X3RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eShtYWtlVW5pcXVlUmVmPFRleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKEdUSykKLSAgICAsIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihzdGQ6Om1h
a2VfdW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I+KCp0aGlzKSkKKyAgICAsIG1f
dmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihtYWtlVW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I+KCp0aGlzKSkKICNlbGlmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFU
Rk9STShHVEspCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlPYmplY3QobnVsbHB0cikKICNlbmRpZgog
ICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2Vi
UGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpKQorICAgICwgbV9jb250ZXh0TWVu
dUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNs
aWVudD4oKSkKICNlbmRpZgotICAgICwgbV9lZGl0b3JDbGllbnQgeyBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSB9Ci0gICAgLCBtX2Zvcm1DbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpKQot
ICAgICwgbV9sb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlTG9hZGVyQ2xpZW50PigpKQotICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCkpCi0g
ICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZVVJQ2xpZW50PigpKQorICAgICwgbV9lZGl0b3JDbGllbnQgeyBtYWtlVW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSB9CisgICAgLCBtX2Zvcm1DbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpKQorICAgICwgbV9sb2FkZXJD
bGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50Pigp
KQorICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCkpCisgICAgLCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpKQogICAgICwgbV9maW5kQ29udHJv
bGxlcihtYWtlVW5pcXVlUmVmPEZpbmRDb250cm9sbGVyPih0aGlzKSkKLSAgICAsIG1faW5zcGVj
dG9yVGFyZ2V0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXRDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvclRhcmdldENvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRoaXMpKQogICAg
ICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRP
ckNyZWF0ZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEKSkKICNpZiBFTkFCTEUo
R0VPTE9DQVRJT04pCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KG1ha2VVbmlxdWVSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+KCp0aGlz
KSkKQEAgLTQ2NCwyMSArNDY0LDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQgPSBuZXcgV2ViUGx1Z0luQ2xpZW50KCp0aGlzKTsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBuZXcgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50ID0gbmV3IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudCgqdGhpcyk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24u
cGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQZXJmb3JtYW5j
ZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCp0
aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQgPSBt
YWtlVW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4oKnRoaXMpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkdMU3RhdGVUcmFja2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4oW3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQ
ZXJmb3JtYW5jZVdlYkdMKSB7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViR0xTdGF0ZVRyYWNr
ZXIgPSBtYWtlVW5pcXVlPFdlYkdMU3RhdGVUcmFja2VyPihbdGhpc10oYm9vbCBpc1VzaW5nSGln
aFBlcmZvcm1hbmNlV2ViR0wpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZXRJc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0woaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdl
YkdMKSk7CiAgICAgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRoZXNpc0NsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQ+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50PigqdGhpcyk7CiAjZW5kaWYKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlID0gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlKCk7CkBAIC00OTMsMTQgKzQ5MywxNCBAQCBXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgcGFnZUNvbmZpZ3VyYXRp
b24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5h
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcj4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25NYW5pZmVzdCA9IHBh
cmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgogCi0gICAgbV9wYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgbV9w
YWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAg
ICAvLyBTZXQgdGhlIHNlc3Npb25JRCAqYmVmb3JlKiB1cGRhdGluZyB0aGUgcHJlZmVyZW5jZXMg
YXMgdGhlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgcHJlZmVyZW5jZXMgbWF5IG5lZWQgdG8gb3Zl
cnJpZGUgaXQuCiAgICAgaWYgKHBhcmFtZXRlcnMuc2Vzc2lvbklELmlzVmFsaWQoKSkKQEAgLTg1
Myw3ICs4NTMsNyBAQCB1aW50NjRfdCBXZWJQYWdlOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNs
aWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50
KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICAgICAgbV9jb250
ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRl
eHRNZW51Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NjQsNyArODY0
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnUKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVk
aXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQpCiB7CiAgICAgaWYgKCFlZGl0b3JDbGllbnQpIHsK
LSAgICAgICAgbV9lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OkVkaXRvckNsaWVudD4oKTsKKyAgICAgICAgbV9lZGl0b3JDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6CiB2
b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4mJiBmb3JtQ2xpZW50KQogewogICAgIGlm
ICghZm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7CisgICAgICAgIG1fZm9ybUNsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtODg0LDcgKzg4NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVu
ZGxlOjpGCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4mJiBs
b2FkZXJDbGllbnQpCiB7CiAgICAgaWYgKCFsb2FkZXJDbGllbnQpIHsKLSAgICAgICAgbV9sb2Fk
ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2Fk
ZXJDbGllbnQ+KCk7CisgICAgICAgIG1fbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRC
dW5kbGVQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50QmFzZSoKIHZvaWQgV2Vi
UGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4mJiBjbGllbnQpCiB7CiAg
ICAgaWYgKCFtX3Jlc291cmNlTG9hZENsaWVudCkKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENs
aWVudD4oKTsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAg
IG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpAQCAtOTEzLDcgKzkx
Myw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVk
QnVuZGxlVUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VV
SUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7Ci0gICAgICAgIG1f
dWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNs
aWVudD4oKTsKKyAgICAgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZVVJQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNDEw
LDE0ICsxNDEwLDE0IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAg
bV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZUNvbnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCi0gICAgbV9lZGl0b3JDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKLSAgICBt
X2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1D
bGllbnQ+KCk7Ci0gICAgbV9sb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CisgICAgbV9lZGl0b3JDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKKyAgICBtX2Zv
cm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7
CisgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgbV9wb2xpY3lDbGllbnQuaW5pdGlhbGl6ZSgwKTsKLSAg
ICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwotICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKKyAgICBtX3Jlc291
cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VM
b2FkQ2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAg
bV9mdWxsU2NyZWVuQ2xpZW50LmluaXRpYWxpemUoMCk7CiAjZW5kaWYKQEAgLTQ2OTYsNyArNDY5
Niw3IEBAIHZvaWQgV2ViUGFnZTo6YmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbykKICNlbmRpZgogCiAgICAgaWYgKCFtX3ByaW50Q29udGV4
dCkgewotICAgICAgICBtX3ByaW50Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250
ZXh0Pihjb3JlRnJhbWUpOworICAgICAgICBtX3ByaW50Q29udGV4dCA9IG1ha2VVbmlxdWU8UHJp
bnRDb250ZXh0Pihjb3JlRnJhbWUpOwogICAgICAgICBtX3BhZ2UtPmRpc3BhdGNoQmVmb3JlUHJp
bnRFdmVudCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggNzM1NjZh
MTMzODVkZTNhYWM2NDZmYjk0OTZiZGRhZmNiNWFmNDZiNi4uNDY3MzRmZmYyNjkxZWE2NWFiZGZm
NGZlNTA0NzBmY2M0ZTM0ZDFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC03MjYs
NyArNzI2LDcgQEAgdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQoY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlLCBkb3VibGUgeERQSSwgZG91YmxlIHkKIHsKICAgICBBU1NFUlQobV9wcmlu
dENvbnRleHQpOwogCi0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludFBhZ2Vz
RGF0YT4odGhpcyk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQcmludFBhZ2VzRGF0YT4o
dGhpcyk7CiAgICAgaWYgKCFkYXRhLT5pc1ZhbGlkKSB7CiAgICAgICAgIGNhaXJvX3N1cmZhY2Vf
ZmluaXNoKHN1cmZhY2UpOwogICAgICAgICBwcmludERvbmUoaW52YWxpZFBhZ2VSYW5nZVRvUHJp
bnQoZnJhbWVVUkwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmluZGV4IDlhYmIyYTc5Mjk5ZDU5NmI5
MWU2ZWY2MWNhNDNlZjg2MTkwYTkwNDkuLjkzNDE4YWIyMWQ3NGZjOTQ1OGEwMjI0ZTRjYjQ4YTcz
NDE3ODA5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGaW5k
Q29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9v
bCBpc1Nob3dpbmdPdmUKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIG1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5k
aWNhdG9yLmdldCgpKTsKKyAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50ID0gbWFrZVVu
aXF1ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4dElu
ZGljYXRvci5nZXQoKSk7CiAgICAgbV9maW5kSW5kaWNhdG9yUmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3QodGV4dEluZGljYXRvci0+c2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpKTsK
ICAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqbV9maW5k
SW5kaWNhdG9yT3ZlcmxheUNsaWVudCwgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVu
dCk7CiAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5p
bnN0YWxsUGFnZU92ZXJsYXkoKm1fZmluZEluZGljYXRvck92ZXJsYXksIFBhZ2VPdmVybGF5OjpG
YWRlTW9kZTo6RG9Ob3RGYWRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCmluZGV4IDkwNjg3Yzk3NGFjZjMzZDgy
YjhjNjRiOTQ4ZTZlZTlhMzBlZTJlOWMuLjA2ZmNjNDcxNTkzZWI3OGVkZWJmY2M2M2Y4OTQ0YjNk
ZmFlOWRhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9EcmF3aW5nQXJlYU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcApAQCAtODMsNyArODMsNyBAQCBib29sIERpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCiAgICAgaWYgKCFtX2hh
c1NlbnRNZXNzYWdlKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnRE
aXNwbGF5TGluayhtX29ic2VydmVySUQsIGRpc3BsYXlJRCgpKSwgMCk7CiAgICAgICAgIG1faGFz
U2VudE1lc3NhZ2UgPSB0cnVlOwotICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKKyAg
ICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NG
UnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7CiAgICAgICAgICAgICB0aGlzLT5tX2ZpcnN0Q2FsbGJh
Y2tJbkN1cnJlbnRSdW5sb29wID0gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fcnVuTG9v
cE9ic2VydmVyLT5zY2hlZHVsZShDRlJ1bkxvb3BHZXRDdXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGRmNjAwMzY0NTk4ZjEzNDYyOWRhYjYy
NzA2ZWFmNjg2MWU1ZmYzM2QuLjRjYjNkZjlhZWE1MjllZmY1MjYzMzZjODFmMTMwMjA0NWJhM2Uw
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg3LDcg
Kzg3LDcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0
T3BhcXVlOllFU107CiAgICAgW21faG9zdGluZ0xheWVyIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNd
OwogCi0gICAgbV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNl
cnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAg
ICBtX2xheWVyRmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlJ1bkxv
b3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25v
d25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgewogICAgICAgICB0aGlzLT5s
YXllckZsdXNoUnVuTG9vcENhbGxiYWNrKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBhMmRhMTJjNjAyMjkzNzNjZjg3ODkyYjgzZGFhNTc3
MzUwMGE3N2YyLi5hOWUzNzQ0NGZiZDM2ODQ0YTQ5MjhjOTYxMjJkNzRlZDFmMGZiYjdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTczLDcgKzE1NzMsNyBA
QCB2b2lkIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbgogICAgIEFTU0VSVCghbV9wYWdlTWFya2luZ0xheWVy
c0FzVm9sYXRpbGVDb3VudGVyKTsKICAgICBtX2NvdW50T2ZQYWdlc0ZhaWxpbmdUb01hcmtWb2xh
dGlsZSA9IDA7CiAKLSAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXI+KFt0aGlz
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmQ291
bnRlckV2ZW50KSB7CisgICAgbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyID0g
bWFrZVVuaXF1ZTxQYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyPihbdGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50ZXJF
dmVudCkgewogICAgICAgICBpZiAobV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVy
LT52YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xODM4LDcgKzE4MzgsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OnNldEVuYWJsZWRTZXJ2aWNlcyhib29sIGhhc0ltYWdlU2VydmljZXMs
IGJvb2wgaGFzU2VsZWN0aW9uU2VydgogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRp
b25TZXNzaW9uUHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikKIHsKLSAgICBt
X2F1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk+KHNlc3Npb25JZGVudGlmaWVyKTsKKyAgICBtX2F1dG9tYXRpb25TZXNzaW9u
UHJveHkgPSBtYWtlVW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+KHNlc3Npb25JZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95QXV0b21hdGlvblNlc3Npb25Q
cm94eSgpCkBAIC0xODcxLDcgKzE4NzEsNyBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1Zpc2libGVX
ZWJQYWdlKCkgY29uc3QKIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05l
dHdvcmsoKQogewogICAgIGlmICghbV9saWJXZWJSVENOZXR3b3JrKQotICAgICAgICBtX2xpYldl
YlJUQ05ldHdvcmsgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ05ldHdvcms+KCk7CisgICAg
ICAgIG1fbGliV2ViUlRDTmV0d29yayA9IG1ha2VVbmlxdWU8TGliV2ViUlRDTmV0d29yaz4oKTsK
ICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0KIApAQCAtMTg4Miw3ICsxODgyLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUcKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNh
bWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAgLy8gTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCiAgICAgYXV0byYgaXBj
Q29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKHN0ZDo6
bWFrZV91bmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24s
IHBhZ2VHcm91cElELCBwYWdlSUQsIHN0b3JlKSk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBzdG9yZSkpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZDRjMDFiYWIxZjkzZGE5MDg1YjBmMjE5
NGNkMzI3ZDQ3MTg2NTBiMi4uMmY0ZmI1MzBhYmNlZDdlZmM3Mzc2NDIyMzA5ZmQzMTg4N2E0N2Iw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMzMsNiArMTMzLDcg
QEAgY2xhc3MgV2ViUHJvY2VzcwogICAgICwgUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpDbGll
bnQKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBXZWJQcm9jZXNzJiBzaW5nbGV0b24oKTsKICAgICBzdGF0aWMgY29uc3RleHByIFBy
b2Nlc3NUeXBlIHByb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ7CkBAIC0xNDYs
NyArMTQ3LDcgQEAgY2xhc3MgV2ViUHJvY2VzcwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFk
ZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7CisgICAg
ICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VD4o
KnRoaXMpKTsKICAgICB9CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5l
Y3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggMjcyMGI4NmZjZDJmZmVlNjAyMmY1YWQ1ZWVkNTBi
Y2YzNjkyZDdmOC4uOWFmMDBlZThhYTBmMWNkODQwYTgxNzM3OTBmYTA2MjMwMDQ2ZmRlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyOjpTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiAgICAgewog
ICAgICAgICBBU1NFUlQoZGV2aWNlVHlwZSAhPSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpV
bmtub3duKTsKICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBt
X3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJl
ZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOworICAgICAgICAgICAgbV9yaW5n
QnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKTsKICAgICB9CiAKICAgICB+U291cmNlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmgKaW5kZXggYmFlZDBjZDllMDliNDlkMjIxZTk0MDE4ZjY0OWZlNmRiY2Y5MjUxOS4u
YzFkNDNmY2IzYWY1ODQxNDUzYWQzNDM0YzdjZjkzZWJmYzllN2VmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgQ3Jvc3NQcm9jZXNzUmVhbHRpbWVBdWRpb1NvdXJj
ZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIDog
cHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBXZWJDb3JlOjpBdWRpb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6Vmlk
ZW9DYXB0dXJlRmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlRmFjdG9yeSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2ViUHJvY2VzcyYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KaW5kZXggYjQ3ZDFkOGFmYTAzZmVkMzZkZWNhZDk4OWQ3MmRiYzQxODQ4N2Y1
OS4uM2I5MDZhODBjNWFkOGY2OWJlZjc3ZjlhOGM3NjRhZjgwOWY0OTU2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zMTAs
NyArMzEwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKFBy
b2Nlc3NUYXNrU3RhdGVPYnNlcnZlcjo6VGFza1N0YXRlIHQKIAogICAgIC8vIFdlIHdlcmUgYXdh
a2VuZWQgZnJvbSBzdXNwZW5zaW9uIHVuZXhwZWN0ZWRseS4gTm90aWZ5IHRoZSBXZWJQcm9jZXNz
UHJveHksIGJ1dCB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gb24gb3VyIHBhcmVudCBQSUQKICAg
ICAvLyB0byBlbnN1cmUgdGhhdCBpdCB0b28gaXMgYXdha2VuZWQuCi0gICAgYXV0byB1aVByb2Nl
c3NBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5IHJlc3Vt
ZWQiLCBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5pc2hU
YXNrKTsKKyAgICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fz
c2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCksICJV
bmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kLCBBc3NlcnRp
b25SZWFzb246OkZpbmlzaFRhc2spOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQcm9jZXNzV2FzVW5l
eHBlY3RlZGx5VW5zdXNwZW5kZWQoKSwgW3VpUHJvY2Vzc0Fzc2VydGlvbiA9IFdURk1vdmUodWlQ
cm9jZXNzQXNzZXJ0aW9uKV0geyB9KTsKIH0KICNlbmRpZgpAQCAtNjIwLDcgKzYyMCw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFz
b24gcmVhc29uKQogICAgIH0KIAogICAgIGlmICghbV9jcHVNb25pdG9yKSB7Ci0gICAgICAgIG1f
Y3B1TW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0lu
dGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVzYWdlKSB7CisgICAgICAgIG1fY3B1TW9uaXRvciA9
IG1ha2VVbmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBbdGhpc10oZG91
YmxlIGNwdVVzYWdlKSB7CiAgICAgICAgICAgICBpZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNz
VHlwZTo6U2VydmljZVdvcmtlcikKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQ
ZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgZXhjZWVkZWQg
Q1BVIGxpbWl0IG9mICUuMWYlJSAod2FzIHVzaW5nICUuMWYlJSkiLCB0aGlzLCBtX2NwdUxpbWl0
LnZhbHVlKCkgKiAxMDAsIGNwdVVzYWdlICogMTAwKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5k
ZXggMzY5MDk1Y2RhZDFkMzQ3MTFhMDY3NmQ4NzM2YTkwZTE5M2UyOTA1ZS4uMjI4ZjRhMzZkNGIw
ZjIyMmMxNzg2MGQwYmM0OThjMWY5ZTA4OWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVm
PFN0b3JhZ2VTeW5jTWFuYWdlcj4gU3RvcmFnZVN5bmNNYW5hZ2VyOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogfQogCiBTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcihj
b25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3Jh
Z2VUaHJlYWQ+KCkpCisgICAgOiBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkp
CiAgICAgLCBtX3BhdGgocGF0aC5pc29sYXRlZENvcHkoKSkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
Y3BwCmluZGV4IDQ0MzkzODI5NWY0ZTFjMjlkZDA0ODZiNDMxYmE3ZmVhMzUyOWQxNmQuLjljNzUx
NGUzNDYyYzRiNGQ4YTg1NjA1ZWQwMjlkYmQxOTI1ZDZiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBT
dG9yYWdlVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxlZCgp
ICYmIG1fdGhyZWFkKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0
aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVldWUuYXBwZW5kKG1h
a2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIHZv
aWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTdG9y
YWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAo
KT4+KFt0aGlzXSB7CisgICAgbV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lk
ICgpPj4oW3RoaXNdIHsKICAgICAgICAgcGVyZm9ybVRlcm1pbmF0ZSgpOwogICAgIH0pKTsKICAg
ICBtX3RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGI5MzRkMWEzYjFiYWE4MzFhZGRmM2Fi
ZTVlMDc3MGFiMWNmNzdmYTIuLjgwNmNiMDk5NWQwYTA3YzcxODI3MWQyMTA1MDcwMzk4YzQwM2Jj
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBTdG9yYWdlVHJhY2tlciYgU3RvcmFnZVRyYWNrZXI6OnRyYWNr
ZXIoKQogU3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0cmluZyYgc3RvcmFn
ZVBhdGgpCiAgICAgOiBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0b3JhZ2VQYXRoLmlzb2xhdGVk
Q29weSgpKQogICAgICwgbV9jbGllbnQoMCkKLSAgICAsIG1fdGhyZWFkKHN0ZDo6bWFrZV91bmlx
dWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICAsIG1fdGhyZWFkKG1ha2VVbmlxdWU8U3RvcmFnZVRo
cmVhZD4oKSkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiAgICAgLCBtX25lZWRzSW5pdGlhbGl6
YXRpb24oZmFsc2UpCiAgICAgLCBtX1N0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkZWZhdWx0
U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3Bw
CmluZGV4IDQzZWE0NWRhZTg5MjA2YzgyOWE1MTRkNGRhOGUzZDFjOTdjYzEyODQuLjg1MWNjMTAx
N2RlZDAwYzA2ZDQ2ZDJjODU5ZDcwMDAwYjZkNzJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
KiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN0b3JhZ2VTZXNzaW9uKGNvbnN0IFAKIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKQogewogICAgIGlmICghZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbigpKQotICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24oKSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gKmRlZmF1bHROZXR3b3Jr
U3RvcmFnZVNlc3Npb24oKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBj
b29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9y
YWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBk
ZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgZGVmYXVs
dE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUo
c2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMCwx
MSArMTAwLDExIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9u
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvCiAgICAgICAgICAgICBjb29raWVT
dG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBX
VEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RG
TW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogCiAjZWxpZiBV
U0UoQ1VSTCkKICAgICBnbG9iYWxTZXNzaW9uTWFwKCkuZW5zdXJlKHNlc3Npb25JRCwgW3Nlc3Np
b25JRF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKICAgICB9KTsKICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAxODc2Yjk2MGI5NDcwODE0YzM1
MGJjNTkyNmE0YzgxYWVkZjM5MDIzLi43Yjg2OTgxYTNmNDhlNTBmOGIzY2NhYzM3MDY5MTdkNGFm
MWZkYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtMTU5LDUgKzE1OSw1IEBA
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpT
ZXR0aW5ncz4gV2ViSW5zcGVjdG9yQ2xpCiAgICAgICAgICAgICBkZWxldGVTZXR0aW5nKG5hbWUp
OwogICAgICAgICB9CiAgICAgfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5zcGVjdG9y
RnJvbnRlbmRTZXR0aW5nc0NGPigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCAzYjFh
NDUwNzA3OGZhNGNjMDY4ZTc0MDMwMzIyMTIzOWIyYWQ3MTIzLi4xNDU3NzIyMmE5ZTEzZTYzZTQ5
MWQ2ZDNiOTJjYTFiYzg5ZTdjYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2ltcG9ydCAiV2ViQ2hyb21lQ2xpZW50LmgiCiAKIGNsYXNzIFdlYkNocm9tZUNs
aWVudElPUyBmaW5hbCA6IHB1YmxpYyBXZWJDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudElPUyhXZWJWaWV3KiB3
ZWJWaWV3KQogICAgICAgICA6IFdlYkNocm9tZUNsaWVudCh3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhl
ZFBvc2l0aW9uQ29udGVudC5tbQppbmRleCAyMTdhNGVkMGE4NWE2YmI0MTRkMzE5NGNiN2JmYWVm
ZGUwMzZkNDdhLi44ZGFkNjA0NDYyZjgzNzY0NTczZjAwNjI5ZWExMDQ5ZWViODZkYzBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBv
c2l0aW9uQ29udGVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQpAQCAtMTc4LDcgKzE3OCw3IEBAIC0gKHZv
aWQpc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczooV1RGOjpIYXNoTWFwPENBTGF5ZXIgKiwg
c3RkOjp1bmlxdWVfcHRyPFdlCiAKICAgICBmb3IgKGF1dG8mIGxheWVyQW5kQ29uc3RyYWludHMg
OiBsYXllck1hcCkgewogICAgICAgICBDQUxheWVyKiBsYXllciA9IGxheWVyQW5kQ29uc3RyYWlu
dHMua2V5OwotICAgICAgICBhdXRvIGxheWVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3Bv
cnRDb25zdHJhaW5lZExheWVyRGF0YT4oKTsKKyAgICAgICAgYXV0byBsYXllckRhdGEgPSBtYWtl
VW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+KCk7CiAKICAgICAgICAgbGF5ZXJE
YXRhLT5tX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Nyb2xsTGF5ZXIgPSBzdGlja3lDb250YWluZXJz
LmdldChsYXllcik7CiAgICAgICAgIGxheWVyRGF0YS0+bV92aWV3cG9ydENvbnN0cmFpbnRzID0g
V1RGTW92ZShsYXllckFuZENvbnN0cmFpbnRzLnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCBhOGI2YTA0MzkzZWMwMDAxNDY1Mzhk
NGNmNjViZDY0MGM3NGJkOTAxLi41YWQ4MWI0YTNiNDliNWQwNjM5MzY1NjgzYTFiY2Y1ZDU3ZWYz
ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1t
CkBAIC0xMzMsNyArMTMzLDcgQEAgLSAoaWQpaW5pdAogICAgICAgICByZXR1cm4gbmlsOwogICAg
IAogICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
OwotICAgIF9lbnRyaWVzQnlEYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRlVG9FbnRyaWVzTWFw
PigpOworICAgIF9lbnRyaWVzQnlEYXRlID0gbWFrZVVuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigp
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
SGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBiNzM5NTkzNWU1MTBiZjNiN2YwYzQ4ZWRk
NDM2YzU4YmJjNDgxZDhlLi44NmY5ZDNkNDIyMzg0NmJjOTVjYmM5NTY0NWExY2E3MzIwYWZlMTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW0KQEAgLTM0OCw3ICszNDgsNyBAQCAtIChpZClpbml0RnJvbURpY3Rpb25hcnlSZXByZXNl
bnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgICAgICBjb3JlKF9wcml2YXRlKS0+c2V0
TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKICAgICAKICAgICBpZiAoTlNBcnJheSAqcmVkaXJl
Y3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZvcktleTpyZWRpcmVjdFVSTHNLZXldKSB7Ci0g
ICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVl
PFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3ItPnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoW3JlZGlyZWN0VVJMcyBjb3VudF0pOwogCiAgICAgICAgIGZvciAoaWQg
cmVkaXJlY3RVUkwgaW4gcmVkaXJlY3RVUkxzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFBy
b3h5Lm1tCmluZGV4IGUxN2M3ODgxYTUxN2YwYzM1NWY4NzU2OWI2MGRhM2YyMTVhMWViYTcuLmY1
ZTdmYmNmMTJlNDdmOTBkZWVmMWVhMmNmZWI3MTc0MjY4ODBhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSG9zdFByb3h5Lm1tCkBAIC00OTMsNyArNDkzLDcgQEAga2Vybl9yZXR1cm5fdCBXS1BD
R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMy
X3QgcGwKICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxV
UkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2NyaXB0YWJsZU5Q
T2JqZWN0UmVwbHk+KG9iamVjdElEKSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJl
cGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Okdl
dFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmplY3RJRCkpOwogICAgIHJldHVybiBLRVJOX1NV
Q0NFU1M7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBrZXJuX3JldHVybl90IFdLUENCb29sZWFu
UmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQsIHVpbnQzMgog
ICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKICAg
ICAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXN1
bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtl
VW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXN1bHQp
KTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCkBAIC01MjgsNyArNTI4LDcgQEAga2Vy
bl9yZXR1cm5fdCBXS1BDQm9vbGVhbkFuZERhdGFSZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0
LCB1aW50MzJfdCBwbHVnaW5JRCwKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIHJl
aW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHREYXRhKSwgcmVzdWx0TGVuZ3RoKSk7Ci0gICAg
aW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1
ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJldHVy
blZhbHVlLCByZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVx
dWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhbkFu
ZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOwogICAgIAogICAgIHJldHVybiBLRVJO
X1NVQ0NFU1M7CiB9CkBAIC01NDUsNyArNTQ1LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDSW5zdGFu
dGlhdGVQbHVnaW5SZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW4K
ICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAK
LSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBs
eT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4ocmVu
ZGVyZXJUeXBlKSkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0
SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpJbnN0YW50aWF0ZVBs
dWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJRCwgc3RhdGljX2Nhc3Q8UmVuZGVyZXJU
eXBlPihyZW5kZXJlclR5cGUpKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAppbmRleCAxMGEwOGU5NTBhM2RjMGM5
MzY3MWYxZmMxYzc0Yzk0Nzc5M2EwN2U4Li5lNTZhMTAzYTI4YTc2MGY5Y2UwYjk3ZTcxZGQ2YjIz
YTYwYzUzZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaApAQCAt
MTcxLDYgKzE3MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSA6IHB1Ymxp
YyBSZWZDb3VudGVkPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94CiAKICAgICAvLyBSZXBseSBz
dHJ1Y3RzCiAgICAgc3RydWN0IFJlcGx5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBlbnVtIFR5cGUgewogICAgICAgICAgICAgSW5zdGFudGlhdGVQ
bHVnaW4sCiAgICAgICAgICAgICBHZXRTY3JpcHRhYmxlTlBPYmplY3QsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpp
bmRleCAyMDJjNmRlYWYxM2QwN2M2ZTNhNTY5OGIxY2RiNTlhMTliNWRhMDM5Li41MmJmN2JkMTJl
NGUzNzEyZDMxNDc1ZTJhNTM5YTQyOGNmZjhmYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTM2Miw3
ICszNjIsNyBAQCBNZXRob2QqIFByb3h5SW5zdGFuY2U6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNz
IGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBh
dXRvIG1hcEFkZFJlc3VsdCA9IG1fbWV0aG9kcy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIpOwog
ICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiByZXBseS0+bV9yZXN1bHQpCi0gICAg
ICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3h5
TWV0aG9kPihtZXRob2ROYW1lKTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8UHJveHlNZXRob2Q+KG1ldGhvZE5hbWUpOwogCiAgICAgcmV0dXJuIG1h
cEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CkBAIC0zOTcsNyArMzk3LDcgQEAg
RmllbGQqIFByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKICAgICAvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2Fz
IGFkZGVkIHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgogICAgIGF1dG8gbWFwQWRkUmVz
dWx0ID0gbV9maWVsZHMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAobWFwQWRk
UmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlm
aWVyKTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CiAgICAgcmV0dXJuIG1hcEFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dy5tbQppbmRleCA5YzcxYTNjYzkyM2YzM2QyZTBhYjM5YTFiZjZiMTRiNDQzZTk0ZDRiLi5lZTE5
YzU2N2MwMWZhMThjNWU4ZGM2MWIwOGM4OTRlNTIwMDJkYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9z
dGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC02MCw2ICs2MCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKIGNsYXNzIFNvZnR3YXJlQ0FSZW5k
ZXJlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgU29mdHdhcmVDQVJlbmRlcmVyKHVpbnQzMl90IGNvbnRleHRJRCkKICAgICAgICAgOiBtX2Nv
bnRleHQgeyBbQ0FDb250ZXh0IGxvY2FsQ29udGV4dF0gfQpAQCAtMTY4LDcgKzE2OSw3IEBAIC0g
KEJPT0wpY3JlYXRlUGx1Z2luCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlmIChfcHJveHkt
PnJlbmRlcmVyVHlwZSgpID09IFVzZVNvZnR3YXJlUmVuZGVyZXIpCi0gICAgICAgIF9zb2Z0d2Fy
ZVJlbmRlcmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+KF9wcm94eS0+
cmVuZGVyQ29udGV4dElEKCkpOworICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9IG1ha2VVbmlx
dWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRleHRJRCgpKTsKICAgICBl
bHNlCiAgICAgICAgIFtzZWxmIGNyZWF0ZVBsdWdpbkxheWVyXTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyLm1tCmluZGV4IGY3YWVkYmNlZDRkN2Y1YzRiYTNlOTZlMzU2MWNhN2Yw
YjI2NWM4YWMuLjhlYzFiZjc5ZWUzMmEyYWMxYmJjZjdhMjFlNzNlN2UxZTAxZGIxZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQpAQCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI+IFdlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyOjpjcgogewogICAgIHN3aXRjaCAoW3BsdWdpblZpZXcgZXZlbnRNb2RlbF0pIHsK
ICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5WaWV3KTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2Nv
YT4ocGx1Z2luVmlldyk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyQ29jb2EuaAppbmRleCA3MDgzNzc2ZDI4YTc1Y2ZiNTQyNTMzZDkwZjM3NzhlODVhYmNkMWQy
Li5iYmQ5YzVkNTgyMWY4NWY2NWViYzhmNzc3ZWM2NTUyMjlkNWU4OWY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmgiCiAKIGNsYXNzIFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyQ29jb2EgOiBwdWJsaWMgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EoV2ViTmV0c2NhcGVQbHVnaW5WaWV3Kik7IAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCmluZGV4IDAyZmYyMTg2ZGY4NGE5YTkwZDdlOWMyNmMwNzYyNzllMzIyMTEz
NzguLjE2MDY2M2U4NjFmNzEwZWJmZWQxZDc2ODU2NWRkMjJhMTE0ZThlMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCkBAIC0xNjU1LDcgKzE2NTUsNyBAQCAtICh1aW50MzJfdClzY2hlZHVsZVRpbWVyV2l0
aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCByZXBlYXQ6KE5QQm9vbClyZXBlYXQgdAogICAg
ICAgICByZXR1cm4gMDsKICAgICAKICAgICBpZiAoIXRpbWVycykKLSAgICAgICAgdGltZXJzID0g
c3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPHVpbnQzMl90LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2lu
VGltZXI+Pj4oKTsKKyAgICAgICAgdGltZXJzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPHVpbnQzMl90
LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+Pj4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxQbHVnaW5UaW1lcj4qIHNsb3Q7CiAgICAgdWludDMyX3QgdGltZXJJRDsKQEAgLTE2NjMsNyAr
MTY2Myw3IEBAIC0gKHVpbnQzMl90KXNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90
KWludGVydmFsIHJlcGVhdDooTlBCb29sKXJlcGVhdCB0CiAgICAgICAgIHRpbWVySUQgPSArK2N1
cnJlbnRUaW1lcklEOwogICAgIHdoaWxlICghdGltZXJzLT5pc1ZhbGlkS2V5KHRpbWVySUQpIHx8
ICooc2xvdCA9ICZ0aW1lcnMtPmFkZCh0aW1lcklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWUp
KTsKIAotICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpblRpbWVyPihwbHVn
aW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CisgICAgYXV0byB0aW1l
ciA9IG1ha2VVbmlxdWU8UGx1Z2luVGltZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJl
cGVhdCwgdGltZXJGdW5jKTsKIAogICAgIGlmIChfc2hvdWxkRmlyZVRpbWVycykKICAgICAgICAg
dGltZXItPnN0YXJ0KF9pc0NvbXBsZXRlbHlPYnNjdXJlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1t
CmluZGV4IDcwNGNkMDk1ZTg4ZmUxYTIzODExODZjNmJmZjEzMGZjOTAyMDQxZWIuLjU3ZmJiZmFk
OWU2NGI3Njc4YWQzYWNjZTgwNzc4YmFjZjAzNzgxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1t
CkBAIC05NCwxMCArOTQsMTEgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50KCkKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogICAgIHsKLSAgICAgICAgYXV0byBjb250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdpbik7Cisg
ICAgICAgIGF1dG8gY29udGV4dCA9IG1ha2VVbmlxdWU8RGlkTW9kaWZ5T3JpZ2luRGF0YT4oY2xp
ZW50LCBvcmlnaW4pOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gV1RGTW92
ZShjb250ZXh0KV0gewogICAgICAgICAgICAgY29udGV4dC0+Y2xpZW50LmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdpbik7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaAppbmRleCBhM2IxNTk4ZWUzNTNkNjdlMjNhZjgwOTU4ZWI3Zjc1ZWIx
NjdmNGQ4Li5jZDcyNjQyNjgyNWJhNzIyMTU1N2UwNTY2ZmE5MmVjMDgxMTE0NWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQAogQGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3Kik7
CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA3OGI1MzllMzcyYjg2NWM1OTRmYzA3NmY1YTFm
Yzg0YWFmZTk4YmYwLi4yNzE0MjdlMmQ0NmVlM2EyOTdkMDU0MDEyYTdhODVhYjhiM2UxYjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogY2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhKGlkIHdlYkRvY3VtZW50VmlldykgOiBtX3dlYkRvY3VtZW50Vmlldyh3ZWJEb2N1bWVu
dFZpZXcpIHsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBmZGM0Y2M3ODE5NmZjYmNmMzI2
MDJkMThlMjg5ZjA3YTExNTRjYzk1Li5jMGZiZGE5YjJkYTFkZDQ1MTBmZmUwODliZjY4ZjVhNzY3
ZGQ0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBIVE1MSW1h
Z2VFbGVtZW50OwogLy8gYmFzZSBjbGFzcyBvZiB0aGUgY29uY3JldGUgY2xhc3MsIFdlYkNocm9t
ZUNsaWVudElPUy4gQmVjYXVzZSBvZiB0aGF0LCB0aGlzIGNsYXNzIGFuZAogLy8gbWFueSBvZiBp
dHMgZnVuY3Rpb25zIGFyZSBub3QgbWFya2VkIGZpbmFsLiBUaGF0IGlzIG1lc3N5IHdheSB0byBv
cmdhbml6ZSB0aGluZ3MuCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBXZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApp
bmRleCAxODg1ZjAzMTMxMzViODE3YjMwZjk0NTc3N2Q4ZTI0YjE1MzliZjkwLi5hN2Y2NmVlZWYz
MDZhNjg2MDU0MjBlNzk4NzYyMDI1N2JlMDZiNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQKICAgICAsIHB1YmxpYyBXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNsaWVudAogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVDbGllbnQoV2ViVmlldyAqd2ViVmlldyk7CiAgICAg
dmlydHVhbCB+V2ViQ29udGV4dE1lbnVDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA4NDdhNzNi
MTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0YTYzYmRkMTJlLi4zMGRmM2Y3M2Q4NTBlYTc2OWM3MTM1
MjIxZDJlODg2NWVhNjdlMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiBAY2xh
c3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFn
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJE
cmFnQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBmMDU5ZTA1OWUxMTg3
YTNiYzViZDI0N2NjMjQxZjU5YWRkNDUwOTUwLi5iNTEwNzg3ZDgwOWJjZjk3Yjc2ODllNzQwOTMy
ODM3NWFhMGIwYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNDUsNiArNDUsNyBAQAogQGNsYXNz
IFdlYkVkaXRvclVuZG9UYXJnZXQ7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNs
aWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkVkaXRvckNsaWVudD4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVudChXZWJWaWV3
ICopOwogICAgIHZpcnR1YWwgfldlYkVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQppbmRleCAzZGQ1MGU3YjNiOWNmOTkzMzQ5YzlhYmI0Y2I0OTc4MzdlZWMzNTNlLi45
NDBiMGZmOTYzYTg1Y2U5ZDg4ZDdiYzU2ZmY2YjNlZWIyZTNkOTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQpAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiBzdGF0aWMgdm9pZCBhZGRSZWRpcmVjdFVSTChX
ZWJIaXN0b3J5SXRlbSAqaXRlbSwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKCFpdGVt
LT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcykKLSAgICAgICAgaXRlbS0+X3ByaXZhdGUtPl9yZWRp
cmVjdFVSTHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBp
dGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+
KCk7CiAKICAgICAvLyBPdXIgQVBJIGFsbG93cyB1cyB0byBzdG9yZSBhbGwgdGhlIFVSTHMgaW4g
dGhlIHJlZGlyZWN0IGNoYWluLCBidXQgZm9yCiAgICAgLy8gbm93IHdlIG9ubHkgaGF2ZSBhIHVz
ZSBmb3IgdGhlIGZpbmFsIFVSTC4KQEAgLTEzODAsNyArMTM4MCw3IEBAIElHTk9SRV9XQVJOSU5H
U19FTkQKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2Fj
aGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZyYW1lKQogewotICAgIGNhY2hlZEZyYW1lLT5z
ZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50
VmlldykpOworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtl
VW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+
d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhpcyBmcmFtZSBpcyBnb2luZyB0byBiZSBj
YWNoZWQuIFN0b3AgYWxsIHBsdWdpbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBm
ZmUyOTkzMTJlYjQ4MGJhZmI1ZjBlYWM0MzUyZjI0M2Y5NmUwMGY3Li5mZmRiYWNmYzI3NDIxZThk
MzU4ODhmMmNlNmIxODA3N2ExNmUzM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAg
LTMzLDYgKzMzLDcgQEAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBjbGFzcyBXZWJWaWV3
OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
V2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyAqKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkg
eyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGJkN2Y2MmZj
ODVkYzk5YzM4NzE2ZjA3NjY2NDYzMTgyNTExYzU0YTUuLjBjOTQ4YjNhZWY5ODc2MDk2MzAzNTFk
NTlhYzc5MGIyYWJlYWRhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC01MSw2ICs1MSw3
IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIAogY2xh
c3MgV2ViSW5zcGVjdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudCwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQo
V2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRl
eCAxYzAwODA5NzY5MmZmOWIwNzFmY2U1YWM0YTRiNDY5MmQxMzdlZDk1Li43ZDNlNWVjOWU2MTVl
MWQ0OGMzZDA1ZDcxYTU5YzQ1MWZlYjc2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBA
IC0xMDksNyArMTA5LDcgQEAgRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9w
ZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3AKICAgICBbd2luZG93Q29u
dHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5k
UGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZnJvbnRlbmRXZWJWaWV3XSk7Ci0g
ICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5z
cGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRp
bmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCks
IGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRT
ZXR0aW5ncygpKTsKIAogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5z
cGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGlu
aXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV9p
bnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRl
bmQuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAxNWI0MTgwNDhlNGYx
ZDQ2MjRjMzAzZGNiYmZlZDE2OTc5NjQ0ODYxLi45NGVkNjE4YWM3OGVlOGJjZjU3MTU1YzlhZGFi
Y2JkYWRmNjhjNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAtMzYsNiArMzYs
NyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJWaWV3ICopOwog
ICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCmluZGV4IGEzZDZhZTYzNjM2NDdjNWYzMGNj
NzlmYmQ2MzVmNjY0YmNhMDEyM2MuLmRjOWQxMWEzNTg3ZWUwNGY1MDE1MWJlODhiYzVkNGIxNDhi
Y2RlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaApAQCAt
NDMsNiArNDMsNyBAQCBjbGFzcyBJbnRQb2ludDsKIH0KIAogY2xhc3MgV2ViU2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyKFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2subW0KaW5kZXggMjUzNjQ4ZDhlODQ1OTExZTJhZTI4YzBiYjg2M2NiNTdmN2MzMDAzOS4u
Mjc2ZDlmMTVlZjhmYTVlMWZlZDQzOGVkOWMxZDI1OWE3ODU4MzUwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCkBAIC0zNiw3ICszNiw3IEBAIC0gKGlkKWluaXQKICAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICBtX2NvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jaz4oKTsKKyAgICBtX2NvcmUgPSBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jaz4oKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYTkwNjIyYzIwNzRlMGNkY2VjZWYyYzZjMWM4NDk0
NWQ0ZTlkZmZhYi4uM2E5NGJiOTEwZDI1OWVmYWE4OTFkNTI5ZTgwZDJiNWIwMDIwYjRmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0zNzgsNyAr
Mzc4LDcgQEAgLSAodm9pZClfYXR0YWNoU2NyaXB0RGVidWdnZXIKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViU2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVjdCk7CisgICAgX3ByaXZhdGUtPnNjcmlwdERl
YnVnZ2VyID0gbWFrZVVuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0KTsKIH0K
IAogLSAodm9pZClfZGV0YWNoU2NyaXB0RGVidWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmgKaW5kZXggZGZhN2VmZDA2MDZhZGM0OWZlMjkxZDA1MjFkMTMyZTZlMTljNTA3My4uYTA3MmU4
MTk1MjQ5MzlhZTBmMjJiYjk4MzZkM2FjNzA1ZDg1NzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgUGFnZTsKIH0KIAogY2xhc3MgV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlciA6IHB1YmxpYyBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+IGNy
ZWF0ZShXZWJDb3JlOjpQYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQppbmRl
eCA3MmMyMGM2OTNmZWNiYTk3MTA0NjM0MTY0MWNjZTExNDk0ZGU0YTY5Li42MDI0MDI5OTYyZWMz
NGYwMGY0YWFkOTQzMmE3ZmM0MmJhMWQxNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
Lm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyPiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUoV2ViQ29y
ZTo6UGFnZSYgcGFnZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsKIH0KIAogV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlcjo6V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQYWdlJiBwYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRl
cmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRv
ci5tbQppbmRleCAxYTcyNThiNDIzYTg0NTc4OTFlNDE1ZTEwZDAwMjU2NzMwYWEyYmRlLi5lMzYz
Yjg1YjJiM2Q1YWUxNDczYzgzNzI3MTg1ODM0ZDUxNzg3YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpAQCAtNjksNyArNjks
NyBAQCAtIChpZClpbml0V2l0aFJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgICAgIHJldHVy
biBzZWxmOwogICAgIAogICAgIF9wcml2YXRlID0gW1tXZWJUZXh0SXRlcmF0b3JQcml2YXRlIGFs
bG9jXSBpbml0XTsKLSAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CisgICAgX3ByaXZhdGUtPl90
ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5n
ZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KaW5kZXggYmNjYzY0YjA3YTNkMDVmOWJlODQ1ZmQxNmE4YTRlMTU4YjU2
NDc1ZC4uMTBmMjE4ODRlYjRhOWM5ODRhYzMyZTYwMTQxNDk4NTBiOGMxOWE5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTIyOSw3ICsxMjI5LDcg
QEAgc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygp
CiAtKHZvaWQpX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHQKIHsKICAgICBzdGF0aWMgTlNTdHJp
bmcgKm91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cyA9IGxlYWtPdXRsb29rUXVpcmtzVXNlclNj
cmlwdENvbnRlbnRzKCk7Ci0gICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xs
ZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBzdGQ6Om1h
a2VfdW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCks
IFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQs
IEluamVjdEluQWxsRnJhbWVzKSk7CisgICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBt
YWtlVW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCks
IFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQs
IEluamVjdEluQWxsRnJhbWVzKSk7CiAKIH0KICNlbmRpZgpAQCAtMTQ0Myw3ICsxNDQzLDcgQEAg
LSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZy
YW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGll
bnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNv
bnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHNlbGYpOwogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgZW5hYmxlIHRoaXMgb24gaU9TIGFzIHdlbGwuCi0gICAgcGFnZUNv
bmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxmKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52
YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQ+KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9IG5l
dyBXZWJJbnNwZWN0b3JDbGllbnQoc2VsZik7CiAjZWxzZQogICAgIHBhZ2VDb25maWd1cmF0aW9u
LmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CkBAIC00NjMzLDcg
KzQ2MzMsNyBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91
cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybAogICAgIGlmICghd29ybGQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNl
clNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5n
VmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0
YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0
ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IElu
amVjdEluVG9wRnJhbWVPbmx5KTsKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVz
ZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmlu
Z1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRT
dGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVj
dGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJ
bmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xs
ZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9
CiAKQEAgLTQ2NTYsNyArNDY1Niw3IEBAICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91
cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopCiAgICAgaWYg
KCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzdHlsZVNoZWV0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdo
aXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdl
YkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1l
T25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5p
cXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0
KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0
SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBV
c2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVy
KCkuYWRkVXNlclN0eWxlU2hlZXQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJ
bmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIApAQCAtOTQxNiw3ICs5NDE2LDcgQEAgLSAo
VmVjdG9yPFN0cmluZz4pX2RpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9u
Q29udGV4dAogLSAoV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXImKV9zZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlcgogewogICAgIGlmICghX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlcikKLSAgICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOwor
ICAgICAgICBfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gbWFrZVVuaXF1
ZTxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CiAgICAgcmV0dXJuICpfcHJp
dmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogfQogI2VuZGlmCkBAIC05NDc1LDcg
Kzk0NzUsNyBAQCAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0
SW5kaWNhdG9yCiAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0
SW5kaWNhdG9yIHdpdGhMaWZldGltZTooVGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKWxpZmV0
aW1lCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdykKLSAgICAgICAg
X3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbmRp
Y2F0b3JXaW5kb3c+KHNlbGYpOworICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRv
dyA9IG1ha2VVbmlxdWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CiAKICAgICBOU1JlY3Qg
dGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpb
c2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdS
ZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCldIHRvVmlldzpuaWxdOwogICAgIE5TUmVjdCB0ZXh0
Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVj
dFRvU2NyZWVuOnRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4IDEwNjBjMmQ4
NTRhZGEwZGNhZmIzMzU1OWM4MTFlNGVlNDk0Y2M2ZTAuLjgyMzhhNGVjNWZlZTE2ODM2NGVkMTMw
NGJjNzUxNWY1NTE3ZmU4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3RGF0YS5tbQpAQCAtOTYsNyArOTYsNyBAQCBMYXllckZsdXNoQ29udHJvbGxlcjo6
TGF5ZXJGbHVzaENvbnRyb2xsZXIoV2ViVmlldyogd2ViVmlldykKIFdlYlZpZXdMYXllckZsdXNo
U2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihMYXllckZsdXNoQ29udHJvbGxl
ciogZmx1c2hDb250cm9sbGVyKQogICAgIDogbV9mbHVzaENvbnRyb2xsZXIoZmx1c2hDb250cm9s
bGVyKQogewotICAgIG1fcnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFdlYkNvcmU6OlJ1bkxvb3BP
YnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsK
KyAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2Vy
dmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxL
bm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CiAgICAgICAgIHRoaXMt
PmxheWVyRmx1c2hDYWxsYmFjaygpOwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0g
KGlkKWluaXQKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CiAKICNpZiBVU0UoRElD
VEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigp
OworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBz
ZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcAppbmRleCA2NDZlNmFlZjkzMmYxYzk5Mjk4NTM2YzgyZjJjOTU1YTcxYTE5
MmNmLi5mZTQ0ZTc1MWNjMTFjMGVhYWZlMjgxODE3OWVkY2Y2NWE3ZjFjNzIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cApAQCAtMjQ2LDEwICsyNDYsMTAgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcigpCiAgICAgLCBtX21vdmluZ1dpbmRvdyhmYWxzZSkKICAgICAs
IG1fdGltZXIoKnRoaXMsICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1lckZpcmVkKQog
I2lmIFVTRShDQSkKLSAgICAsIG1fbGF5ZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMYXllckNs
aWVudD4odGhpcykpCisgICAgLCBtX2xheWVyQ2xpZW50KG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+
KHRoaXMpKQogICAgICwgbV9yb290Q2hpbGQoUGxhdGZvcm1DQUxheWVyV2luOjpjcmVhdGUoUGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgbV9sYXllckNsaWVudC5nZXQoKSkpCiAjZW5k
aWYKLSAgICAsIG1fZnVsbHNjcmVlbldpbmRvdyhzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5DbGllbnQqPih0aGlzKSkpCisgICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3cobWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihzdGF0aWNfY2FzdDxNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhpcykpKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKaW5kZXggYWJh
NjNkYWI4YjMxZTQ3YWJkODA4OGIzNzgzYTgwZWM1NGMxMDIxOC4uMGY2YmVlZmZhZDFkYzAxNWM4
YTQ3N2U3ZmJlNWM5YjZhYWZhZmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgUGx1Z2lu
U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVy
LCBjb25zdCBjaGFyCiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkg
ewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAgbV9kZWxpdmVyeURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4oKTsKKyAgICAgICAgICAgIG1fZGVs
aXZlcnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8Y2hhcj4+KCk7CiAKICAgICAgICAgaW50IG9s
ZFNpemUgPSBtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpOwogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+
cmVzaXplKG9sZFNpemUgKyBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMjEzNjMxN2YyOTk5ZDVlMTM3NDlkZjM4ZTE5YThm
NGQyZjI1YmQ2MC4uNTQ3MTZhMGJiMmIxZmFiNzVkODFkZTQyYWVlOTZlZWEyZjZiMTNlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC01
MTAsNyArNTEwLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKEZyYW1lTG9hZFJlcXVlc3Qm
JiBmcmFtZUxvYWRSZXF1ZXN0LCBib29sIHNlbmROb3RpZmljYXQKICAgICB9IGVsc2UgaWYgKCFt
X3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkodXJs
KSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAKLSAgICBzY2hlZHVsZVJl
cXVlc3Qoc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZyYW1lTG9hZFJl
cXVlc3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNBbGxvd2VkKCkp
KTsKKyAgICBzY2hlZHVsZVJlcXVlc3QobWFrZVVuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3Zl
KGZyYW1lTG9hZFJlcXVlc3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1
cHNBbGxvd2VkKCkpKTsKIAogICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDA1
NzI4ZjNlZDM3MjA1MDRhZjU1Zjk4NzdmODYyMWJkYzA1Y2U2MjIuLjUyMDQ1OTRhYjZmODRkNTcw
MDA0MGRmZDI5ODFjM2Y1NjNlZGZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFBsdWdpblZp
ZXc6OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJB
TSBsUGFyYW0pCiAgICAgaWYgKG1lc3NhZ2UgPT0gV01fVVNFUiArIDEgJiYKICAgICAgICAgbV9w
bHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25l
TWVzc2FnZXMpKSB7CiAgICAgICAgIGlmICghbV9tZXNzYWdlVGhyb3R0bGVyKQotICAgICAgICAg
ICAgbV9tZXNzYWdlVGhyb3R0bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5NZXNzYWdlVGhy
b3R0bGVyV2luPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IG1ha2VV
bmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CiAKICAgICAgICAgbV9tZXNz
YWdlVGhyb3R0bGVyLT5hcHBlbmRNZXNzYWdlKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFt
KTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA1MzBiNjllZDcxOWMyN2FjYzZiMDdl
MzUxNTkyMjFmNTUyNmM1MzA1Li4zYmY0NGQ4N2QxOGQ1ZjI3M2NkMjk1MzU2NzZiMjQwOGYyYzkx
NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hl
ZEZyYW1lUGxhdGZvcm1EYXRhLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
IDogcHVibGljIFdlYkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YShJV2ViRGF0YVNvdXJjZSogd2ViRGF0YVNvdXJjZSkgOiBtX3dlYkRhdGFTb3VyY2Uod2ViRGF0
YVNvdXJjZSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDRhNDliOTRiYmE1OGQwYzU0
NjMzMjljM2Y2ZWYyM2U4NDg4YjdhZjMuLjdiMjk5Y2VlMjVlY2QxMGJiYTYyMWM4NTgxYjA2YWUw
NmM1YTFkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMg
Y29uc3Qgc2l6ZV90IG1heEZpbGVQYXRoc0xpc3RTaXplID0gVVNIUlRfTUFYOwogV2ViQ2hyb21l
Q2xpZW50OjpXZWJDaHJvbWVDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmll
dyh3ZWJWaWV3KQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICwgbV9ub3RpZmljYXRp
b25zRGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVn
YXRlPih3ZWJWaWV3KSkKKyAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKG1ha2VVbmlxdWU8
V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCiAjZW5kaWYKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKaW5kZXggNDFkNWYwNmFlYWNiN2UxNDE3ZDRiNzAyNDAwNjBiYmU1N2Y2
OTMwZi4uNzg3NTQzMjUzZDVkZmY0ZWM2NjhlYmU4OGYwODg1ZDBiYWRiNjU5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNE
ZWxlZ2F0ZTsKIGludGVyZmFjZSBJV2ViVUlEZWxlZ2F0ZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xp
ZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggYzlkZTQ5YjNjZDE0NTUxNzI4ZmIyZjlk
OTZlZjQ5MGU5OTE1OGJkNC4uZjQ4ZWU3MzBlZWY3MTk3OWU0ZDhkMmMzMjdlZDFiYTE3Yjk0ZmZh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiBjbGFzcyBX
ZWJWaWV3OwogCiBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpD
b250ZXh0TWVudUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgV2ViQ29udGV4dE1lbnVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXgg
YjU5ODkzMzI5MTAwOWUyODUxZWQ3NTQxNWVjNGFhMGZlNDAzZDYxMS4uNDVlM2NhNzI3NTNhZDFh
YzExNTNiZTk2MTkzZjZlZDYyMWZmODlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzEsNiArMzEsNyBA
QAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBXZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0NvbnRyb2xs
ZXJEZXN0cm95ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZGI2MzUyZDYzODE2ZjdjOWFlZWU5
Zjc0NGU0OGUzODFlODU2ZDJiNS4uNjlkN2VkM2UwYWEzMWYxM2JlYTY0Y2YwYzI3NjVlMjU0ZmJm
OGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViTm90aWZp
Y2F0aW9uOwogY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAogY2xhc3MgV2ViRWRpdG9yQ2xp
ZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNvcmU6
OlRleHRDaGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViVmlldyopOwogICAgIH5XZWJFZGl0b3JDbGllbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZTM1NGI3MWNkZmQyYTVmOWI4
YjAxMWEwMzI5ZDc0MjRiYzkwYmJjLi43NzFmOGVhNmY3MTY4MDljZGZhZGQ3ZTM4YzYwZGM3YTAz
ZTAxZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2
YXRlIHsKIH07CiAKIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChX
ZWJGcmFtZSogd2ViRnJhbWUpCi0gICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShzdGQ6Om1h
a2VfdW5pcXVlPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQorICAgIDogbV9wb2xp
Y3lMaXN0ZW5lclByaXZhdGUobWFrZVVuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0
ZT4oKSkKICAgICAsIG1fd2ViRnJhbWUod2ViRnJhbWUpCiAgICAgLCBtX21hbnVhbExvYWRlcigw
KQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkgCkBAIC05NzMsNyArOTcz
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVk
RnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZyYW0KIAogICAgIEFTU0VSVChjb3JlRnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPT0gY2FjaGVkRnJhbWUtPmRvY3VtZW50TG9hZGVyKCkp
OwogCi0gICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0YXRpY19jYXN0PElXZWJEYXRh
U291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCkpKSkpOworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSht
YWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihzdGF0aWNfY2FzdDxJV2ViRGF0
YVNvdXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpKSkpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggZWI5NzU4YmQ0MjEwN2QyZjlhODU0ZTRlNjg4MTY2YTZm
NTE1ZmI5Zi4uYmJhOWM5ZjQ0NTM1OGQ3Y2UzZWEwM2Y4OTY2NDFiZDZlNWUwNDBkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEdlb2xvY2F0aW9u
UG9zaXRpb247CiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA3NTY5NTkwYzFiM2NmMzgxNmZjNDJhMzVi
ZjNmNjZiZmQ3ODkwMjI0Li5mODBhZTA0OGI4MmRiZGIyMzQ2NTQ2OGQ5MzNjNjBhNzA5NzJjN2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVu
ZChJbnNwZWN0b3JDb250cgogICAgICAgICByZXR1cm4gMDsKIAogICAgIG1fZnJvbnRlbmRQYWdl
ID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdl
YlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdl
YlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3Mo
KSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBm
cm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywg
Y3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKICAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQu
Z2V0KCkpOwogICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBmcm9udGVuZEh3bmQ7CiAgICAgcmV0dXJu
IHRoaXM7CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hs
aWdodCgpCiAgICAgYm9vbCBjcmVhdGluZ0hpZ2hsaWdodCA9ICFtX2hpZ2hsaWdodDsKIAogICAg
IGlmIChjcmVhdGluZ0hpZ2hsaWdodCkKLSAgICAgICAgbV9oaWdobGlnaHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYk5vZGVIaWdobGlnaHQ+KG1faW5zcGVjdGVkV2ViVmlldyk7CisgICAgICAgIG1f
aGlnaGxpZ2h0ID0gbWFrZVVuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3BlY3RlZFdlYlZp
ZXcpOwogCiAgICAgaWYgKG1faGlnaGxpZ2h0LT5pc1Nob3dpbmcoKSkKICAgICAgICAgbV9oaWdo
bGlnaHQtPnVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5NWM5YWZhODUwMDJh
NTQzMjcwYjdjZTZiMzg4YzcwZDQ4OTE4NTE4Li5mMjBlYWViZDY2MWY5MTJiYWNmMmQ5OWY0NDA5
ZGJjZDdhOTcxZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTAsNiArNTAsNyBAQCBj
bGFzcyBXZWJOb2RlSGlnaGxpZ2h0OwogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViSW5zcGVj
dG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGlj
IEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRl
eCA2OGM2YmQ0OTM5Y2Y5YjA0ODk1N2JjNzUwMGJkODU0OGEwMWVlM2IyLi4xNjI3ZWM1ZmEyNmJm
NTkwMWQwNTkzYjVhMTgzOTY5NDc5MjE5MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTM0Nyw2ICszNDcsNyBAQCBIUkVTVUxUIFdl
YkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsSW5kZXhlZERhdGFiYXNlcygpCiB9CiAKIGNsYXNz
IERpZE1vZGlmeU9yaWdpbkRhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERpZE1vZGlmeU9yaWdpbkRhdGEpOwogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlciogZGF0
YWJhc2VNYW5hZ2VyLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDI3
YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIuLjhhZmJhMGY2ZDUzYWZkNTU1
ODQ1YzE5NTM2YzJhOWMxZWM1ZjM3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogLy8gV2ViRWxlbWVudFByb3BlcnR5QmFnIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6
OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCi0gICAg
OiBtX3Jlc3VsdChzdGQ6Om1ha2VfdW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCisgICAg
OiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0
eUJhZyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4
IGE4MWMwMGU1NmM1ZGUyYWViYzEyYWI4YjZkYjExYmM5MzRlYmJiZGEuLmZiODhlMzllN2I1NmFj
MzJkY2Y1Y2Y1MDExYzM1NDgxNzFhNmMzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJ
dGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihfSW5fb3B0XyB2b2lkKiBkaWN0
aW9uYQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gcmVkaXJlY3RVUkxzVmVj
dG9yOwogICAgIGlmIChDRkFycmF5UmVmIHJlZGlyZWN0VVJMc1JlZiA9IHN0YXRpY19jYXN0PENG
QXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnlSZWYsIHJlZGlyZWN0VVJM
c0tleSkpKSB7CiAgICAgICAgIENGSW5kZXggc2l6ZSA9IENGQXJyYXlHZXRDb3VudChyZWRpcmVj
dFVSTHNSZWYpOwotICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdHJpbmc+PihzaXplKTsKKyAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oc2l6ZSk7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgICgqcmVkaXJlY3RVUkxzVmVjdG9yKVtpXSA9
IFN0cmluZyhzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChy
ZWRpcmVjdFVSTHNSZWYsIGkpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5k
ZXJlci5jcHAKaW5kZXggMmYxZjJmNDgwN2ViOWM0ZmU3MDgzNWRiNzhlMzRhMzRiY2ZmMzZkMC4u
ZDY1ZGUxOWVlOTljNDUxNDQ1ZGZiZjFiMTM1OWRjMmE4YmEzOGM4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4gQ0FEM0RSZW5kZXJlcjo6Y3JlYXRlRDNEUG9z
dFByb2Nlc3NpbmcKICAgICBtZW1jcHkob3ZlcmxheVF1YWRCdWZmZXIsIG92ZXJsYXlRdWFkVmVy
dGljZXMsIHNpemVvZihvdmVybGF5UXVhZFZlcnRpY2VzKSk7CiAgICAgb3ZlcmxheVF1YWQtPlVu
bG9jaygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RDNEUG9zdFByb2Nlc3NpbmdD
b250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1YWQpOwog
fQogCiAvLyBGSVhNRTogPHJkYXI6Ly82NTA3ODUxPiBTaGFyZSB0aGlzIGNvZGUgd2l0aCBDb3Jl
QW5pbWF0aW9uJ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRp
b25DZW50ZXIuY3BwCmluZGV4IDdiZDk4ODk2MTExYzNiM2ZlNmZlNTRmMGEyNDc5NjYwNmIyMmE3
NWYuLmIyMGJhY2Q2MjllYjVhYzBkMjcyMDQyZDg3OGIxNjBlODQ1YWMxYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTMs
NyArNTMsNyBAQCBzdHJ1Y3QgV2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZSB7CiBJV2ViTm90
aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50ZXI6Om1fZGVmYXVsdENlbnRlciA9
IDA7CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKLSAg
ICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQor
ICAgIDogZChtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbkNlbnRlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA5NzYxNDhl
MzNmNzQ0NmQ3YzM4NDk5NTlkNmNmNzNkZWY0OGY2N2ZmLi45MmQzOWFjNGJjNWEwNWVlYzE0ZGQx
ZWFiNDA5NTE2ZjQ0NDY0ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAt
MTg4MCw3ICsxODgwLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KFVJTlQgbWVz
c2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICAgICAgbW91c2VFdmVudC5z
ZXRDbGlja0NvdW50KGdsb2JhbENsaWNrQ291bnQpOwogICAgICAgICBoYW5kbGVkID0gbV9wYWdl
LT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZU1vdmVkKG1vdXNlRXZlbnQpOwogICAg
ICAgICBpZiAoIW1fbW91c2VPdXRUcmFja2VyKSB7Ci0gICAgICAgICAgICBtX21vdXNlT3V0VHJh
Y2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8VFJBQ0tNT1VTRUVWRU5UPigpOworICAgICAgICAgICAg
bV9tb3VzZU91dFRyYWNrZXIgPSBtYWtlVW5pcXVlPFRSQUNLTU9VU0VFVkVOVD4oKTsKICAgICAg
ICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5jYlNpemUgPSBzaXplb2YoVFJBQ0tNT1VTRUVWRU5U
KTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5kd0ZsYWdzID0gVE1FX0xFQVZFOwog
ICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXItPmh3bmRUcmFjayA9IG1fdmlld1dpbmRvdzsK
QEAgLTY3OTQsNyArNjc5NCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVnaXN0ZXJFbWJlZGRlZFZp
ZXdNSU1FVHlwZShfSW5fIEJTVFIgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CiAKICAgICBpZiAoIW1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzKQotICAgICAgICBtX2VtYmVkZGVk
Vmlld01JTUVUeXBlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAg
ICAgICBtX2VtYmVkZGVkVmlld01JTUVUeXBlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+
PigpOwogCiAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMtPmFkZCh0b1N0cmluZyhtaW1lVHlw
ZSkpOwogICAgIHJldHVybiBTX09LOwpAQCAtNjg5NCw3ICs2ODk0LDcgQEAgdm9pZCBXZWJWaWV3
OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiB2
aWRlb0VsZW1lbnQKICAgICAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIp
OwogICAgIH0KIAotICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcj4oKTsKKyAgICBtX2Z1bGxTY3JlZW5WaWRl
b0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+KCk7CiAg
ICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5zZXRWaWRlb0VsZW1lbnQoJnZpZGVvRWxl
bWVudCk7CiAgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRlckZ1bGxzY3JlZW4o
KTsKICNlbmRpZgpAQCAtNjk0Niw3ICs2OTQ2LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V28K
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8gdXNl
clNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB0b1VSTCh1cmwp
LCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwKKyAgICBhdXRvIHVz
ZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9T
dHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCiAgICAgICAgIHRvU3RyaW5n
VmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLCBpbmplY3Rpb25UaW1lID09IFdlYklu
amVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9j
dW1lbnRFbmQsCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVz
ID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmlld0dy
b3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHdvcmxkLT53b3JsZCgp
LCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKQEAgLTY5NzMsNyArNjk3Myw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9v
cHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRX
b3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsK
LSAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihz
b3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291
bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwKKyAgICBhdXRv
IHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVy
bCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmluZ1Zl
Y3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwKICAgICAgICAgaW5qZWN0ZWRGcmFtZXMg
PT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9w
RnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQod29ybGQtPndvcmxkKCksIFdURk1vdmUo
c3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogICAgIHJldHVybiBTX09L
OwpAQCAtNzIzNyw3ICs3MjM3LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nKGJvb2wgYWNjZWxlcmF0ZWQpCiAgICAgfQogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dCkKLSAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAg
bV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZyA9IGFjY2VsZXJhdGVkOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCmluZGV4
IGVlY2E3MzlkMmIzOTRlODYwMzUxYmExYjQ2NGRlNTQ3OGI5YmIxNjcuLmRiMzZlYjlkZWQyYjll
MGY1ZjZlZjQwZGI2YzY5OTE5YTczMDZkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCkBA
IC04Miw2ICs4Miw3IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZv
aWQqIHApID0gZGVsZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAog
cHJpdmF0ZTogXAogdHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkTWFjcm9TZW1pY29sb25p
ZmllcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVz
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKaW5kZXggYzA0NGQ3
NzNiODc5YTY2ZGZhZGQyZTJjYTMxNWVlZWEzNzZmZmE0YS4uM2FhMWQyMDk1MWRiZjMzNjRlN2Qx
NmRkMjM2NDNkMGNkOTdmNmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGlu
ZXMuaApAQCAtMTIzLDYgKzEyMyw3IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRl
bGV0ZVtdKHZvaWQqIHApID0gZGVsZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRD
bGFzczsgXAogcHJpdmF0ZTogXAogdHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkSW5saW5l
TWFjcm9TZW1pY29sb25pZmllcgogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNjJmZjNlZWIyZDcwYzA5ODAxMTRkYzE4N2M3MGY5ODAzZjFjZTkw
OC4uMGJhNzU5ZTQ2ZmU0MWMyOGEyOWM1YjRjZjFhZTRhZjhmMjZlYzNmMiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAor
MjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChhZGRVUkxUb1JlZGlyZWN0Q2Fs
bGJhY2spOgorICAgICAgICAoc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayk6
CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnJ1blVJU2NyaXB0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNl
dE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW06CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKGV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHA6CisgICAgICAgIChEUlREYXRhT2JqZWN0
OjpTZXREYXRhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9hZERlbGVnYXRlKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChE
UlRVbmRvTWFuYWdlcjo6RFJUVW5kb01hbmFnZXIpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6VUlE
ZWxlZ2F0ZSk6CisgICAgICAgIChVSURlbGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKToKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6CisgICAgICAgIChjcmVhdGVWaWV3QmFja2Vu
ZCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvdW50
ZXJzLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpydW5KU1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
UGxhdGZvcm1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9T
VEQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENv
dW50ZWRTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RNb3ZpbmdVc2luZ0Vuc3Vy
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdBZGQpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhh
c2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpy
dW5Mb2NrVGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xv
dC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9WYXJpYW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDQVJpbmdCdWZm
ZXJUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Nh
bGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVGVzdFZh
bHVlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3Nh
Z2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jdXJsL0Nvb2tpZXMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9k
YWxBbGVydHNTUEkuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5B
bmRFbmRFZGl0aW5nLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9V
c2VyTWVzc2FnZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyVXNlck1lc3Nh
Z2VSb3VuZFRyaXBUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvV2lsbExvYWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0MldpbGxM
b2FkVGVzdDo6U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21h
Yy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVUZXN0OjpkaWRSZWNlaXZlTWVz
c2FnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRo
ZW50aWNhdGlvbi5jcHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICh0ZXN0
V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHA6CisgICAgICAgIChXZWJL
aXRET01ET01XaW5kb3dUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29j
b2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW06CisgICAgICAgIChhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJp
bmdzVG9JdGVtUHJvdmlkZXJzKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBpbml0V2l0aEZy
YW1lOmNvbmZpZ3VyYXRpb246YWRkVG9XaW5kb3c6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25z
IGluaXRXaXRoRm9udE9wdGlvbnM6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVu
dFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblBy
b3ZpZGVyTW9jay5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0Nv
bnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmg6CisgICAgICAgIChXVFI6OnRvU1RE
KToKKyAgICAgICAgKFdUUjo6dG9XVEZTdHJpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpjcmVhdGVUZXN0VVJMKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnJ1blVJ
U2lkZVNjcmlwdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoK
KyAgICAgICAgKFdUUjo6Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojptb3VzZU1vdmVUbyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5k
ZXJQcm94eVdQRS5jcHA6CisgICAgICAgIChXVFI6OndwZUtleVN5bUZvcktleVJlZik6CisKIDIw
MTktMDgtMTIgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CiAKICAg
ICAgICAgW1dURl0gVGhyZWFkOjpyZW1vdmVGcm9tVGhyZWFkR3JvdXAgbGVha3Mgd2VhayBwb2lu
dGVycy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZTgxN2E1NzNhNThkMTU5
ZDRjZjIzNDk4MmNjYTA0ZGNkNjRiNjA0YS4uOGYxM2VlMDAzYTNkZTBhMGQ5NDg2MTE5MTMyMmYz
NGY4YWRlZWQyNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTM2MywxMSAr
MzYzLDExIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuCiAgICAgQVNTRVJUKCEqZXhjZXB0aW9u
KTsKIAogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmlu
Z1NpemUob3JpZ2luLmdldCgpKTsKLSAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAg
ICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhvcmlnaW4uZ2V0KCksIG9yaWdpbkJ1ZmZlci5nZXQo
KSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1V
VEY4Q1N0cmluZ1NpemUoZGVzdGluYXRpb24uZ2V0KCkpOwotICAgIGF1dG8gZGVzdGluYXRpb25C
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0
byBkZXN0aW5hdGlvbkJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNo
YXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhkZXN0aW5h
dGlvbi5nZXQoKSwgZGVzdGluYXRpb25CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAg
ICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgc3RhdGlj
IEpTVmFsdWVSZWYgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlMKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90
IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShoZWFkZXIuZ2V0
KCkpOwotICAgIGF1dG8gaGVhZGVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1h
eExlbmd0aCArIDEpOworICAgIGF1dG8gaGVhZGVyQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVU
RjhDU3RyaW5nKGhlYWRlci5nZXQoKSwgaGVhZGVyQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAx
KTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIzNzksNyArMjM3OSw3IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sIHNob3VsZFBh
aW50QnJva2VuSW1hZ2UpCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNo
YW5uZWwoSlNTdHJpbmdSZWYgY2hhbm5lbCkKIHsKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNT
dHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGNoYW5uZWwpOwotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gYnVm
ZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGgg
KyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGNoYW5uZWwsIGJ1ZmZlci5nZXQoKSwg
bWF4TGVuZ3RoICsgMSk7CiAKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldExvZ0NoYW5uZWxU
b0FjY3VtdWxhdGUoeyBidWZmZXIuZ2V0KCkgfSk7CkBAIC0yNDQ5LDcgKzI0NDksNyBAQCB2b2lk
IFRlc3RSdW5uZXI6OnJ1blVJU2NyaXB0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1Jl
ZiBzY3JpcHQsIEpTVmFsdWVSZQogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKGNhbGxiYWNr
SUQsIGNhbGxiYWNrKTsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAgIG1f
VUlTY3JpcHRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXVFI6OlVJU2NyaXB0Q29udGV4dD4o
KnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPFdUUjo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAKICAgICBTdHJpbmcg
c2NyaXB0U3RyaW5nKEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzY3JpcHQpLCBKU1N0cmluZ0dl
dExlbmd0aChzY3JpcHQpKTsKICAgICBtX1VJU2NyaXB0Q29udGV4dC0+cnVuVUlTY3JpcHQoc2Ny
aXB0U3RyaW5nLCBjYWxsYmFja0lEKTsKQEAgLTI1MDYsNyArMjUwNiw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
ZmlsZXNWYWx1ZSkKIAogICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdD
b3B5KGNvbnRleHQsIGZpbGVWYWx1ZSwgbnVsbHB0cikpOwogICAgICAgICBzaXplX3QgZmlsZUJ1
ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoZmlsZS5nZXQoKSkg
KyAxOwotICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
ZmlsZUJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKICAgICAgICAgSlNT
dHJpbmdHZXRVVEY4Q1N0cmluZyhmaWxlLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpLCBmaWxlQnVm
ZmVyU2l6ZSk7CiAKICAgICAgICAgbV9vcGVuUGFuZWxGaWxlcy5wdXNoX2JhY2soZmlsZUJ1ZmZl
ci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5k
ZXggNjRkYjFkMTdmOWJjOWNiOGNlNmQ4MmY5Yjc3ZGJmMzg3NWFjYTBjYS4uOTU3YzRlNjM5NTkx
MTg2MzVkNzIyMTVlMGNhYzdjYjZmZDcyMGNkZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTUzNSw3ICsxNTM1LDcgQEAgc3RhdGljIE5TU3RyaW5n
ICpkdW1wRnJhbWVzQXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKICAgICAvLyB0aGUgcmVzdWx0IHdp
dGhvdXQgYW55IGNvbnZlcnNpb24uCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmlu
Z1JlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKWlubmVyVGV4dCkpOwogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZ1JlZi5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwog
ICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0
KHN0cmluZ1JlZi5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBbcmVzdWx0
IGFwcGVuZEZvcm1hdDpAIiVAXG4iLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNr
KGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV07
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIubW0KaW5kZXggNDYxYmQzZGYzZWJiMjYwM2FjMzIxODI4ODIxOGRkOGY2OTE2OGZmZC4uM2Jl
MzMyMjFkNmIzZWJjMzU2ZDUxZTMzNGEyNGQ5MjlhZTI1M2E5ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTU2OCw3ICs1
NjgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IGV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVgogewogICAgIGlmIChbdmlldyBpc0tpbmRP
ZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKQogICAgICAgICB2aWV3ID0gWyhXZWJIVE1MVmll
dyAqKXZpZXcgX2hpdFZpZXdGb3JFdmVudDpldmVudF07Ci0gICAgcmV0dXJuICFbdmlldyBpc0tp
bmRPZkNsYXNzOltOU1Njcm9sbGVyIGNsYXNzXV0gPyBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0
aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRv
bnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRv
bnMpKSA6IE5VTEw7CisgICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Njcm9sbGVy
IGNsYXNzXV0gPyBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNz
XSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4o
c3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5VTEw7CiB9CiAKIHN0YXRpYyBO
U1VJbnRlZ2VyIHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcAppbmRleCBlZjJkMmVmYjg1OWY0YjhhMjJm
MzBjNDY3YWNlMWY4YWFkMTU3YTRkLi43NmEyMWE1OGE5ZjY2ZGRlMTYwNzI5ZjhmZWUxZTE1Zjk0
OWU2NjI0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVj
dC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCkBA
IC0yNDksNyArMjQ5LDcgQEAgU1RETUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEoX0lu
XyBGT1JNQVRFVEMqIHBmb3JtYXRldGMsIF9Jbl8gU1RHTUVESVVNKgogICAgIGlmICghcGZvcm1h
dGV0YyB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8g
Zm9ybWF0ZXRjID0gc3RkOjptYWtlX3VuaXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0byBmb3Jt
YXRldGMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxGT1JNQVRFVEM+KCk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNUR01FRElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0Z01lZChu
ZXcgU1RHTUVESVVNKTsKIAogICAgIFplcm9NZW1vcnkoZm9ybWF0ZXRjLmdldCgpLCBzaXplb2Yo
Rk9STUFURVRDKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVn
YXRlLmNwcAppbmRleCBjODBkZjFiZTVmMmRlNDdkM2I4MzE2MzdlZjZlOWZiY2Q5MzRjOGU2Li4x
MWM5MzM5YjE2ZDgwNGQyYzIwMWM5MzI5ZjRhOGMzNTQ0MmE4M2NiIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTcyLDkgKzcyLDkgQEAg
c3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KElXZWJGcmFtZSogd2ViRnJh
bWUpCiB9CiAKIEZyYW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSgpCi0gICAgOiBt
X2djQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEdDQ29udHJvbGxlcj4oKSkKLSAgICAsIG1f
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcj4oKSkKLSAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVl
PFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCisgICAgOiBtX2djQ29udHJvbGxlcihtYWtlVW5pcXVl
PEdDQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIobWFrZVVu
aXF1ZTxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4oKSkKKyAgICAsIG1fdGV4dElucHV0Q29udHJv
bGxlcihtYWtlVW5pcXVlPFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAppbmRleCBmMGFkYmNlNDc5NmZhYmY0ZjBkNDJi
MjcxMTYzMzcwMWFjNzgxMzE0Li40N2FhMjcyYmYxOTVjZDlhMjVhZjI4NjU1ZDM3MWY0MTYwMGY0
NTk4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCkBAIC0xMDEsOCAr
MTAxLDggQEAgY2xhc3MgRFJUVW5kb01hbmFnZXIgewogfTsKIAogRFJUVW5kb01hbmFnZXI6OkRS
VFVuZG9NYW5hZ2VyKCkKLSAgICA6IG1fcmVkb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5k
b1N0YWNrPigpKQotICAgICwgbV91bmRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvU3Rh
Y2s+KCkpCisgICAgOiBtX3JlZG9TdGFjayhtYWtlVW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKKyAg
ICAsIG1fdW5kb1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigpKQogewogfQogCkBAIC0x
NDYsNyArMTQ2LDcgQEAgdm9pZCBEUlRVbmRvTWFuYWdlcjo6dW5kbygpCiB9CiAKIFVJRGVsZWdh
dGU6OlVJRGVsZWdhdGUoKQotICAgIDogbV91bmRvTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPERS
VFVuZG9NYW5hZ2VyPigpKQorICAgIDogbV91bmRvTWFuYWdlcihtYWtlVW5pcXVlPERSVFVuZG9N
YW5hZ2VyPigpKQogICAgICwgbV9kZXNrdG9wTm90aWZpY2F0aW9ucyhuZXcgRFJURGVza3RvcE5v
dGlmaWNhdGlvblByZXNlbnRlcikKIHsKICAgICBtX2ZyYW1lLmJvdHRvbSA9IDA7CkBAIC0xNTcs
NyArMTU3LDcgQEAgVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCiAKIHZvaWQgVUlEZWxlZ2F0ZTo6
cmVzZXRVbmRvTWFuYWdlcigpCiB7Ci0gICAgbV91bmRvTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RFJUVW5kb01hbmFnZXI+KCk7CisgICAgbV91bmRvTWFuYWdlciA9IG1ha2VVbmlxdWU8RFJU
VW5kb01hbmFnZXI+KCk7CiB9CiAKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2Uo
X0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHAKaW5kZXggYmU2NDYwZTU2YjdiNzBjZDI0ODBmYzg3ZGUyYjliYTk3MGU1OGMz
OC4uNDM5MTkyOTc5MWRkNjcxMzFjODU4YTE2Njg5YzUyYmFkYzFkZDg2MiAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dw
ZS9tYWluLmNwcApAQCAtMTI5LDggKzEyOSw4IEBAIHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQZXJt
aXNzaW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3ICosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0CiBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ+IGNy
ZWF0ZVZpZXdCYWNrZW5kKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiB7CiAgICAg
aWYgKGhlYWRsZXNzTW9kZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFVG9v
bGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNr
ZW5kPih3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFVG9vbGlu
Z0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3aWR0
aCwgaGVpZ2h0KTsKIH0KIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMjUxLDcgKzI1MSw3IEBAIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgIG51bGxwdHIpKTsKICAgICBn
X29iamVjdF91bnJlZihzZXR0aW5ncyk7CiAKLSAgICBiYWNrZW5kUHRyLT5zZXRJbnB1dENsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPElucHV0Q2xpZW50Pihsb29wLCB3ZWJWaWV3KSk7CisgICAgYmFj
a2VuZFB0ci0+c2V0SW5wdXRDbGllbnQobWFrZVVuaXF1ZTxJbnB1dENsaWVudD4obG9vcCwgd2Vi
VmlldykpOwogI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lC
SUxJVFkKICAgICBhdXRvKiBhY2Nlc3NpYmxlID0gd3BlX3ZpZXdfYmFja2VuZF9kaXNwYXRjaF9n
ZXRfYWNjZXNzaWJsZSh3cGVCYWNrZW5kKTsKICAgICBpZiAoQVRLX0lTX09CSkVDVChhY2Nlc3Np
YmxlKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udGV4dC5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250ZXh0LmgKaW5kZXggNGUwMjBmMTk2Y2QwMzNkNjFlZTBlNjI4ZjZhMWU1
OWNhMWMzMzQ1OC4uMGI4NGQyZDQ1NDU1ODNkZTlmYzBkZWMxMmE0YWE4OGE2NTllZDE5OCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRD
b250ZXh0LmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250ZXh0LmgKQEAgLTY4LDYgKzY4LDcgQEAgdHlwZWRlZiBlbnVtICB7CiB9IENhbGxi
YWNrVHlwZTsKIAogY2xhc3MgVUlTY3JpcHRDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVSVNjcmlwdENvbnRleHQpOwogcHVi
bGljOgogICAgIFVJU2NyaXB0Q29udGV4dChVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSYpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVy
LmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaApp
bmRleCAyOGRiMTBhNDc5OTYzMGM2NGM1NWQwNzg2YzAwZWUwOTQ4OTE0NWUyLi4zOWI0ZTVlYTcx
ODM2ODhjZGVjOWJlZmNjOTY0Y2U4OTNhNTQzZjA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaAorKysgYi9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaApAQCAtMjYsOSArMjYsMTEgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogY2xhc3MgQ2xh
c3NNZXRob2RTd2l6emxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ2xhc3NNZXRob2RTd2l6emxlcik7CiBwdWJsaWM6CiAgICAgQ2xh
c3NNZXRob2RTd2l6emxlcihDbGFzcywgU0VMLCBJTVApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db3VudGVycy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCmlu
ZGV4IGY5ZWEyMjQwMjYxNTBkOGUxYWM2YmI3NjE1YjZkZTM4OTBhZjY3MGUuLmFiNWM1MmY3NWQx
YWM2YWY5NjBhYzE0Y2E3MGI1Y2I3NGZhMzYyODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ291bnRlcnMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgKQEAg
LTI3LDYgKzI3LDggQEAKICNpZm5kZWYgQ291bnRlcnNfaAogI2RlZmluZSBDb3VudGVyc19oCiAK
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCiBzdHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsK
ICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CiAgICAgc3RhdGljIHVuc2ln
bmVkIGNvcHlDb3VudDsKQEAgLTUwLDYgKzUyLDcgQEAgc3RydWN0IENvcHlNb3ZlQ291bnRlciB7
CiAKIAogc3RydWN0IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIgeworICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9u
Q291bnQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGRlc3RydWN0aW9uQ291bnQ7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKaW5kZXggMjEzNmU5OGQ4ZWJiODc1ZDU5N2ZjNmUw
N2M3YjAxZWQ1Yjg0YWUxNi4uNmEyMzM2MzI5NDFhY2Y2MDcwNTk0OTQyNjQwMWIzMjczMzdjNzA4
MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKQEAgLTc1LDcgKzc1LDcg
QEAgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgcnVuSlNUZXN0KGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosIFdLUGEKICAgICBVdGlsOjpydW4oJmNvbnRleHQuZGlkRmlu
aXNoKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKGNvbnRleHQuYWN0dWFsU3RyaW5nLmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAg
ICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhjb250ZXh0LmFjdHVhbFN0cmluZy5nZXQoKSwgYnVm
ZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICAKICAgICByZXR1cm4gY29tcGFyZUpTUmVzdWx0
KHNjcmlwdCwgYnVmZmVyLmdldCgpLCBleHBlY3RlZFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCmluZGV4IDhmOGQ3NjhhNTNjMjc1MWEyNDNlMDU5NWUy
YzBjMGY0NDVkZDk2YzguLmJiYmZmNzA5ZTY3ZDM1OWI0ZTQ4MTcxZWQ3YzRjMjQwMDhhNTY3ZjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIFdLQ29udGV4dFJlZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KGNv
bnN0IHN0ZDo6c3RyaW5nJiB0ZXN0TmFtZSwgV0tUCiBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmlu
Z1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0
cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIuZ2V0KCks
IGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZ2V0KCksIHN0cmlu
Z0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVdlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXgg
YWQyYTczMmQ1MTk0N2JiYzdhZmM2NGUyN2Q0MjE1Y2UzMjg3ZGRlZS4uMGMyN2E0NjE2NDVmYmEx
MmE1YzY5NWQ5MzI2NDMwNTI2YzRlZjEyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2Vi
Vmlldy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtV2ViVmlld19oCiAjZGVm
aW5lIFBsYXRmb3JtV2ViVmlld19oCiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCiAj
aWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAjZW5kaWYK
QEAgLTYzLDYgKzY1LDcgQEAgdHlwZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZpZXJzOwogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2Vi
VmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdlYlZp
ZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IDRiMTBjODZhMmFiNzMyZTFlYTYyNzQ4NGNj
Nzg5NDBmYjZjZDZlOTYuLjJhMDZmOGJhNWNhOWZlYjQ5MmEzNTIyYzVjNjU1MDEzOGQyMjM3ZTUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKQEAgLTQwNyw2
ICs0MDcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgZGVzdHJ1Y3RvcnMpCiBzdGF0aWMgaW50IHNu
b3dmbGFrZXMgPSAwOwogc3RhdGljIGludCBtZWx0ZWQgPSAwOwogc3RydWN0IHNub3dmbGFrZSB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRpYyB2b2lkIHJl
c2V0KCkgeyBzbm93Zmxha2VzID0gbWVsdGVkID0gMDsgfQogICAgIHNub3dmbGFrZSgpIHsgKytz
bm93Zmxha2VzOyB9CiAgICAgfnNub3dmbGFrZSgpIHsgKyttZWx0ZWQ7IH0KQEAgLTQxNiw3ICs0
MTcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKIHsKICAgICAvLyBVbmlxdWUg
c25vd2ZsYWtlcyBjYW5ub3QgYmUgY29waWVkLgogICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFr
ZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBhdXRv
IHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIEVY
UEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7CiAg
ICAgfQpAQCAtNDI1LDcgKzQyNiw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQog
ICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFrZVVu
ZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBhdXRvIHMg
PSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIFVuZXhw
ZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IGMoV1RGTW92ZShzKSk7CiAgICAgICAg
IEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7
CkBAIC00NDYsNyArNDQ3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAg
fTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4s
IGludD4gcyhzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIEV4cGVjdGVk
PHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMobWFrZVVuaXF1ZTxzbm93Zmxha2U+
KCkpOwogICAgICAgICBwbG93KFdURk1vdmUocykudmFsdWUoKSk7CiAgICAgfQogICAgIEVYUEVD
VF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ1NCw3ICs0NTUsNyBAQCBURVNUKFdURl9FeHBlY3Rl
ZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAg
IEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0
ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8aW50
LCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVl
PHNub3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAgICAg
fQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ2Miw3ICs0NjMsNyBAQCBURVNU
KFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAg
ICB7Ci0gICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBz
KG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKSk7CisgICAgICAg
IEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVj
dGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS5l
cnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCmluZGV4IDg0ZGE1
ZWMzZmZjMjQ4YWNkZDllMzYzMzAzOGM2OWRhZTg5MTIwOTkuLjdiOGZhZjI4OGFiYzA3Y2ZhZjhi
NTI3MTIzOGY3NmQwMTMwMTJlZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoQ291bnRlZFNldC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBURVNUKFdURl9IYXNo
Q291bnRlZFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlx
dWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAot
ICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVu
aXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yNTksNyArMjU5LDcgQEAgVEVTVChXVEZfSGFz
aENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleUluaXRpYWxDb3VudCkKIAogICAgIEhhc2hDb3VudGVk
U2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENv
dW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBoYXNoQ291bnRlZFNldC5h
ZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAxMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI5OCw3ICsyOTgs
NyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1Bv
aW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hD
b3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4o
NSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3Vu
dGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgVEVT
VChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRl
cikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50
ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsK
KyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGlu
dD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRT
ZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBURVNUKFdU
Rl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRlcikKIHsKICAg
ICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRv
IHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAg
ICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMzNyw3ICszMzcsNyBAQCBURVNUKFdURl9IYXNoQ291
bnRlZFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hD
b3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4g
aGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1h
a2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50
ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggMWUxNjNkMzg5OThlNmJhYmZmZjUzODQxM2NjYTI4YWE2
ZDI5ODk4Mi4uYTgwY2E3NDk0YThmOWE3OTY3ZTFlNDk0NmZlOGNjYTYzOWNiYjU4YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTE5MSw3ICsxOTEsNyBA
QCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5p
cXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBh
dXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4oKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAK
ICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVj
dGlvbkNvdW50KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQ
dHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0
cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBt
YXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNU
KFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAg
ICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIg
PSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwog
CkBAIC0yNTUsNyArMjU1LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0dldFVz
aW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+
IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50
Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBURVNUKFdURl9IYXNoTWFw
LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6
OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0g
ICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciog
cHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAy
KTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9U
YWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAg
YXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdl
dCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtNTYzLDEyICs1
NjMsMTIgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1VuaXF1ZVBvaW50ZXIpCiB7CiAgICAg
SGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkPj4gbWFwOwogICAgIHsK
LSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8dW5zaWduZWQ+KDEpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
YXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PHVuc2lnbmVkPigxKTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1hcC5nZXQoMSkpOwog
ICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1bHQuaXRlcmF0b3ItPmtleSk7CiAgICAgICAg
IEVYUEVDVF9UUlVFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgYXV0byBhZGRSZXN1
bHQyID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVk
PigyKTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwgW10geyBy
ZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDIpOyB9KTsK
ICAgICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgx
dSwgKmFkZFJlc3VsdDIuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VR
KDF1LCBhZGRSZXN1bHQyLml0ZXJhdG9yLT5rZXkpOwpAQCAtNTkwLDYgKzU5MCw3IEBAIFRFU1Qo
V1RGX0hhc2hNYXAsIEVuc3VyZV9SZWZQdHIpCiB9CiAKIGNsYXNzIE9iamVjdFdpdGhSZWZMb2dn
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE9iamVjdFdp
dGhSZWZMb2dnZXIoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgICAgIDogbV9sb2dnZXIo
V1RGTW92ZShsb2dnZXIpKQpAQCAtNjA0LDcgKzYwNSw3IEBAIHZvaWQgdGVzdE1vdmluZ1VzaW5n
RW5zdXJlKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogewogICAgIEhhc2hNYXA8dW5zaWduZWQs
IHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogICAgIAotICAgIG1h
cC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJlZkxv
Z2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CisgICAgbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1
cm4gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9KTsK
IH0KIAogdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCkBA
IC02MTIsNyArNjEzLDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4m
JiBsb2dnZXIpCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFdp
dGhSZWZMb2dnZXI+PiBtYXA7CiAKICAgICBhdXRvJiBzbG90ID0gbWFwLmFkZCgxLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgc2xvdCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0
aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsKKyAgICBzbG90ID0gbWFrZVVuaXF1ZTxPYmpl
Y3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOwogfQogCiBURVNUKFdURl9IYXNoTWFw
LCBFbnN1cmVfTGFtYmRhc0NhcHR1cmluZ0J5UmVmZXJlbmNlKQpAQCAtNjgzLDYgKzY4NCw3IEBA
IFRFU1QoV1RGX0hhc2hNYXAsIFZhbHVlSXNEZXN0cnVjdGVkT25SZW1vdmUpCiBURVNUKFdURl9I
YXNoTWFwLCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKIHsKICAgICBzdHJ1Y3QgRGVyZWZP
YnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAgICAgICAgewogICAgICAgICAgICAgKytjb3Vu
dDsKQEAgLTY5Nyw3ICs2OTksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJOb3RaZXJvZWRC
ZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2ZWRCdWNrZXQg
eyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8RGVy
ZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hNYXA8UmVmUHRyPERlcmVmT2JzZXJ2ZXI+LCBpbnQ+
IG1hcDsKICAgICBtYXAuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSwgNSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCmluZGV4IDcxZWNmZGRiODQyYjZiZDUx
NjQxY2EwNWI2MTA4YWQ0OGY2MmJiN2QuLjg3MjY4Yzc0ZjBjYjhmYzE0OWViZjYwYzg1ODhmY2Vk
MzU4MWEyMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hT
ZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAg
SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNl
dDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6
Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQs
IFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8c3RkOjp1
bmlxdWVfcHRyPGludD4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAg
ICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBURVNU
KFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAg
ICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5p
cXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTcx
LDcgKzE3MSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jh
d1BvaW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5h
ZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hh
c2hTZXQsIFVuaXF1ZVB0cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaFNldDxz
dGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAg
IGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0
ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAK
QEAgLTI4Myw2ICsyODMsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBDb3B5Q2FwYWNpdHlJc05vdE9u
Qm91bmRhcnkpCiBURVNUKFdURl9IYXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikK
IHsKICAgICBzdHJ1Y3QgRGVyZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAgICAgICAg
ewogICAgICAgICAgICAgKytjb3VudDsKQEAgLTI5Nyw3ICsyOTgsNyBAQCBURVNUKFdURl9IYXNo
U2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVyZWZPYnNl
cnZlciogb2JzZXJ2ZWRCdWNrZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1dG8gb2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNl
cnZlciA9IG1ha2VVbmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hTZXQ8UmVmUHRy
PERlcmVmT2JzZXJ2ZXI+PiBzZXQ7CiAgICAgc2V0LmFkZChhZG9wdFJlZihvYnNlcnZlci5nZXQo
KSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hT
ZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCmlu
ZGV4IDY1N2JlNDFkNjIwNzI0NDY3YTU1NDllMmFiNWExOTQxYzRlMzczYzEuLmI3NzBhNWIyN2Mx
ZDJiMDk1YTViYjU5ZDY1YWMzZjRkYzRlNGU2OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBURVNUKFdURl9M
aXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVf
cHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVD
VF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQp
OwpAQCAtMzk2LDcgKzM5Niw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlf
RmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8
aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+
KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00MTAsNyArNDEwLDcgQEAgVEVTVChXVEZfTGlz
dEhhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBM
aXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVl
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVu
aXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00
MjEsOSArNDIxLDkgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9JbnNlcnRC
ZWZvcmVVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRy
PGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgyID0gc3RkOjptYWtlX3VuaXF1
ZTxpbnQ+KDIpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxpbnQ+KDIpOwogICAgIGF1dG8gcHRyV2l0aDIgPSB1bmlxdWVQdHJXaXRo
Mi5nZXQoKTsKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGg0ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+
KDQpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxpbnQ+KDQpOwogICAgIGF1dG8gcHRyV2l0aDQgPSB1bmlxdWVQdHJXaXRoNC5nZXQo
KTsKIAogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyV2l0aDIpKTsKQEAgLTQzNSw3ICs0
MzUsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVz
aW5nUmF3UG9pbnRlcikKICAgICBBU1NFUlRfRVEocHRyV2l0aDQsIGxpc3QubGFzdCgpLmdldCgp
KTsKICAgICBBU1NFUlRfRVEoNCwgKmxpc3QubGFzdCgpLmdldCgpKTsKIAotICAgIGF1dG8gdW5p
cXVlUHRyV2l0aDMgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMyk7CisgICAgYXV0byB1bmlxdWVQ
dHJXaXRoMyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMyk7CiAgICAg
YXV0byBwdHJXaXRoMyA9IHVuaXF1ZVB0cldpdGgzLmdldCgpOwogCiAgICAgbGlzdC5pbnNlcnRC
ZWZvcmUocHRyV2l0aDQsIFdURk1vdmUodW5pcXVlUHRyV2l0aDMpKTsKQEAgLTQ2Miw3ICs0NjIs
NyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9p
bnRlcikKIAogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRy
ID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGF1dG8q
IHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCmluZGV4IDJkY2NlZGNhZGNj
NmMyMjI3M2RlYmMyMGYzZmY2NzdjODczMjkwMjcuLjVmZDMxYmYxYzlhYmVjZmI4YWJlNzM1NjA4
YTQ3YzU2MDQzMDQ3NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0xvY2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCkBA
IC00Miw5ICs0Miw5IEBAIHN0cnVjdCBMb2NrSW5zcGVjdG9yIHsKIHRlbXBsYXRlPHR5cGVuYW1l
IExvY2tUeXBlPgogdm9pZCBydW5Mb2NrVGVzdCh1bnNpZ25lZCBudW1UaHJlYWRHcm91cHMsIHVu
c2lnbmVkIG51bVRocmVhZHNQZXJHcm91cCwgdW5zaWduZWQgd29ya1BlckNyaXRpY2FsU2VjdGlv
biwgdW5zaWduZWQgbnVtSXRlcmF0aW9ucykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5
cGVbXT4gbG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPExvY2tUeXBlW10+KG51bVRocmVhZEdyb3Vw
cyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlx
dWU8ZG91YmxlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0
cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+
KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPExvY2tUeXBlW10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
TG9ja1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91Ymxl
W10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8ZG91YmxlW10+KG51
bVRocmVhZEdyb3Vwcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRo
cmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltd
PihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAgZm9yICh1bnNp
Z25lZCB0aHJlYWRHcm91cEluZGV4ID0gbnVtVGhyZWFkR3JvdXBzOyB0aHJlYWRHcm91cEluZGV4
LS07KSB7CiAgICAgICAgIHdvcmRzW3RocmVhZEdyb3VwSW5kZXhdID0gMDsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKaW5kZXggNDUyZTIyNzcxZGMwNjRh
ZGFhZmU2MjBlYjMzZTgwMTMwZjc5ZjE5Ny4uZTAwYTA5YjJhMTdhYTczNDg1NmU0MmMxMTQ1Y2Jl
NjA4NjNmMGEwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFy
a2luZ0xvdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xv
dC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3QgU2luZ2xlTGF0Y2hUZXN0IHsKIAogdm9p
ZCBydW5QYXJraW5nVGVzdCh1bnNpZ25lZCBudW1MYXRjaGVzLCB1bnNpZ25lZCBkZWxheSwgdW5z
aWduZWQgbnVtVGhyZWFkcywgdW5zaWduZWQgbnVtU2luZ2xlVW5wYXJrcykKIHsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxT
aW5nbGVMYXRjaFRlc3RbXT4obnVtTGF0Y2hlcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNpbmds
ZUxhdGNoVGVzdFtdPiB0ZXN0cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFNp
bmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKIAogICAgIGZvciAodW5zaWduZWQgbGF0Y2hJ
bmRleCA9IG51bUxhdGNoZXM7IGxhdGNoSW5kZXgtLTspCiAgICAgICAgIHRlc3RzW2xhdGNoSW5k
ZXhdLmluaXRpYWxpemUobnVtVGhyZWFkcyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1JlZkNvdW50ZXIuY3BwCmluZGV4IDA4MWRmOWU0ZmMxZDI1MWQ4MTRiMjI2NGJkMmQwZTA1
MmMwYmQ0MWYuLmY0ZWY5ODNiMWE5ZmJlODk4MDdjNzVhYzI4ZmRiNjI2ZDlhOTZhMTEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCkBAIC0xNzAsNyAr
MTcwLDcgQEAgVEVTVChXVEYsIFJlZkNvdW50ZXIpCiBURVNUKFdURiwgUmVmQ291bnRlckRlbGV0
ZUNvdW50ZXJXaXRoT3V0c3RhbmRpbmdUb2tlbnMpCiB7CiAgICAgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VGVzdENvdW50ZXI+IGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RDb3Vu
dGVyPihbJl0oUmVmQ291bnRlckV2ZW50IGV2ZW50KSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxUZXN0Q291bnRlcj4gY291bnRlciA9IG1ha2VVbmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZD
b3VudGVyRXZlbnQgZXZlbnQpIHsKICAgICAgICAgICAgIGlmICghY291bnRlci0+dmFsdWUoKSkK
ICAgICAgICAgICAgICAgICBjb3VudGVyID0gbnVsbHB0cjsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAppbmRleCA0ZDJiMjJhYTU0Zjhi
MDI1NDgwZjU5ZTU2MWEzY2NlNzE1NTAyMzEyLi4xYWZlM2U5Nzc5YmI4NDg4N2U5NDMwZGU0MTcy
NmM3NDM4NTMyZmRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9V
bmlxdWVSZWYuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJl
Zi5jcHAKQEAgLTMwLDggKzMwLDExIEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKICAg
ICAKLWNsYXNzIEEgeyB9OworY2xhc3MgQSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Cit9OwogY2xhc3MgQiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgQihpbnQgYSwgaW50IGIsIGludCBjKQogICAgICAgICA6IGEoYSkKQEAgLTQzLDYgKzQ2LDcg
QEAgY2xhc3MgQiB7CiAgICAgaW50IGM7CiB9OwogY2xhc3MgQyB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQyhVbmlxdWVSZWY8QT4mJiBhKQogICAgICAgICA6
IGEoV1RGTW92ZShhKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1ZhcmlhbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAK
aW5kZXggMGVmMWYxZGE0NGJhYzUxNTRmZmZkMzMyMTM5NWU5ZjFlMmQyYTdjMi4uNTFlY2EwNzY4
ZDJjY2UxYzlhMzI5NTU1MmQzNTAwOWZmNGZkNTZiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVmFyaWFudC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBURVNUKFdURl9WYXJpYW50
LCBDb25zdHJ1Y3RvckRlc3RydWN0b3IpCiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cjo6VGVzdGluZ1Njb3BlIHNjb3BlOwogCiAgICAgewotICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICAg
ICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+KCk7CiAgICAgICAgIFZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+LCBpbnQ+IHYgPSBXVEZNb3ZlKHVuaXF1ZVB0cik7CiAKICAgICAgICAgRVhQ
RUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3Vu
dCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCmluZGV4IDE1MGI5
Yjc2YzhhNTY1ZTM2NTU0ODM2ZTBiYmVjMDUwNWM3ODQ4ZjIuLjdlNjMwNjkzZWVjNjA0MWEzNzUw
NDRhZjk0OWQ4NzQ2YjY5NWNhNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1dlYWtQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dl
YWtQdHIuY3BwCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBJbnQgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8SW50PiB7CiB9OwogCiBjbGFzcyBCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEJh
c2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCYXNlKCkg
eyB9CiAKQEAgLTU3OCwxMCArNTc5LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0
RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUp
OwogICAgICAgICBFWFBFQ1RfVFJVRShpbml0aWFsQ2FwYWNpdHkgLyBtYXhMb2FkQ2FwKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRD
YXA7ICsraSkgewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
c2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAg
ICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMu
YXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKSk7CisgICAgICAgICAgICBvdGhlck9iamVjdHMuYXBw
ZW5kKG1ha2VVbmlxdWU8QmFzZT4oKSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0Nv
bnNpc3RlbmN5KCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKHNfYmFzZVdlYWtSZWZl
cmVuY2VzLCBvdGhlck9iamVjdHMuc2l6ZSgpKTsKQEAgLTYxNSw3ICs2MTYsNyBAQCBURVNUKFdU
Rl9XZWFrUHRyLCBXZWFrSGFzaFNldEV4cGFuc2lvbikKICAgICAgICAgRVhQRUNUX0VRKHdlYWtI
YXNoU2V0LmNhcGFjaXR5KCksIDB1KTsKICAgICAgICAgdW5zaWduZWQgb2JqZWN0Q291bnQgPSBp
bml0aWFsQ2FwYWNpdHkgKiAyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2Jq
ZWN0Q291bnQ7ICsraSkgewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4o
KTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9i
amVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5j
aGVja0NvbnNpc3RlbmN5KCk7CkBAIC02NjcsMTAgKzY2OCwxMCBAQCBURVNUKFdURl9XZWFrUHRy
LCBXZWFrSGFzaFNldENvbXB1dGVzRW1wdHkpCiAgICAgewogICAgICAgICBXZWFrSGFzaFNldDxC
YXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4g
b2JqZWN0czsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFz
ZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAg
ICAgICAgd2Vha0hhc2hTZXQuYWRkKCpmaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAg
ICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAg
ICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFz
aFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9i
amVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IGZp
cnN0T2JqZWN0LmdldCgpKTsKQEAgLTczNCw4ICs3MzUsOCBAQCBURVNUKFdURl9XZWFrUHRyLCBX
ZWFrSGFzaFNldENvbXB1dGVTaXplKQogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgV2Vha0hh
c2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7Ci0gICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJhc2U+KCk7Ci0gICAgICAgIGF1dG8gbGFzdE9iamVjdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8
QmFzZT4oKTsKKyAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwog
ICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgd2Vha0hhc2hT
ZXQuYWRkKCpsYXN0T2JqZWN0KTsKICAgICAgICAgaWYgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0
KCkgIT0gZmlyc3RPYmplY3QuZ2V0KCkpCkBAIC03NTksMTAgKzc2MCwxMCBAQCBURVNUKFdURl9X
ZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogICAgIHsKICAgICAgICAgV2Vha0hhc2hT
ZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFz
ZT4+IG9iamVjdHM7Ci0gICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhc2U+KCk7CisgICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJh
c2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqbm9uRmlyc3RPYmplY3QpOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4o
KTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAg
ICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBl
bmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAgfSB3aGlsZSAod2Vha0hhc2hTZXQuYmVnaW4o
KS5nZXQoKSA9PSBub25GaXJzdE9iamVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCmluZGV4IDJhYWI2NWRkOGZkN2Vm
MDcwNTFmYjZmNzU2NzU4Y2RlNzAyZTA3YTEuLjgxZDdiYTI5MWFlOWY0YWI3Y2YyZTVmOWFhZDYy
Yzk0MjQzNTM2NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9DQVJpbmdCdWZmZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAg
ICB7CiAgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICAgICAgbV9yaW5n
QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmlu
Z0J1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPENBUmluZ0J1ZmZlcj4o
KTsKICAgICB9CiAKICAgICAvLyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oZG91YmxlIHNhbXBs
ZVJhdGUsIFVJbnQzMiBudW1DaGFubmVscywgUENNRm9ybWF0IGZvcm1hdCwgYm9vbCBpc0ludGVy
bGVhdmVkLCBzaXplX3QgY2FwYWNpdHkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNzc4ZTYxNTVmMDZjYzEy
ODM5Nzk3NWYwNDU4NzEyYTJjNzEwNDBmYS4uZGNhNDYzNjAyZTk2ZDYwYTA0NTEzODEyMWNiYmRj
ZWZiZWU5ZTVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiBzdGF0aWMgdW5zaWduZWQgZGVsZXRpb25Db3VudDsKIAogY2xhc3MgQ2Fs
Y3VsYXRpb25EZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9u
Tm9kZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlKCkKICAgICB7CkBAIC01Miw3ICs1Myw3IEBA
IGNsYXNzIENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWxj
RXhwcmVzc2lvbk5vZGUgewogCiBzdGF0aWMgUmVmPFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU+
IGNyZWF0ZVRlc3RWYWx1ZSgpCiB7Ci0gICAgYXV0byBub2RlID0gc3RkOjptYWtlX3VuaXF1ZTxD
YWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGU+KCk7CisgICAgYXV0byBub2RlID0gbWFrZVVuaXF1
ZTxDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGU+KCk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkNh
bGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG5vZGUpLCBXZWJDb3JlOjpWYWx1ZVJhbmdl
QWxsKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcAppbmRleCBmNThkYThhNDIwNzNlYzk5YmJlZTM0YTg1
YmVjMzRjMDg1YzUyYTY0Li4wYzFhMDY5ZjEzYzM5YzQwOWU1ZDVlMWIwM2E3ZTkyYmY5YjM2NmMy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1l
c3NhZ2VUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlk
b0hpZE1lc3NhZ2VUZXN0LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFRFU1QoRmlkb0hpZE1lc3Nh
Z2VUZXN0LCBUZXN0UGFja2V0U2l6ZSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweDA1MDYw
NzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogCi0gICAgYXV0byBpbml0UGFja2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2
aWNlQ29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwor
ICAgIGF1dG8gaW5pdFBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5u
ZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBWZWN0b3I8dWludDhfdD4oZGF0YSks
IGRhdGEuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoNjR1LCBpbml0UGFja2V0LT5nZXRTZXJpYWxp
emVkRGF0YSgpLnNpemUoKSk7CiAKLSAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IHN0ZDo6
bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZN
b3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IG1ha2VVbmlxdWU8Rmlk
b0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsKICAg
ICBFWFBFQ1RfRVEoNjR1LCBjb250aW51YXRpb25QYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCku
c2l6ZSgpKTsKIH0KIApAQCAtNzAsNyArNzAsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwg
VGVzdFBhY2tldERhdGEpCiAgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHhGNTA2MDcwODsKICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2aWNlQ29tbWFu
ZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7Ci0gICAgYXV0byBpbml0UGFja2V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZl
Y3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5pdFBhY2tldCA9
IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBWZWN0b3I8dWlu
dDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKICAgICBzaXplX3QgaW5kZXggPSAwOwogCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWQgPSBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0
YSgpOwpAQCAtOTQsNyArOTQsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tl
dENvbnN0cnVjdG9ycykKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBG
aWRvSGlkRGV2aWNlQ29tbWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7CiAg
ICAgc2l6ZV90IGxlbmd0aCA9IGRhdGEuc2l6ZSgpOwotICAgIGF1dG8gb3JpZ1BhY2tldCA9IHN0
ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZNb3Zl
KGRhdGEpLCBsZW5ndGgpOworICAgIGF1dG8gb3JpZ1BhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hp
ZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5ndGgpOwogCiAg
ICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG9yaWdQYWNrZXQt
PnBheWxvYWRMZW5ndGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9yaWdEYXRhID0gb3JpZ1Bh
Y2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDFlZDEzMjhmODEzMDllMTJlMTM3MWNi
M2FkZmU2YjBhOTc4M2VlYjYuLjIyODM4M2EwZjMwYTliMTM5ZjZhYWY0M2Y5NWNlZGQ4MDkxNjZl
NmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25p
dG9yLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dENoYW5nZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3Qg
V29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxl
TW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9u
aXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlx
dWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAo
RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZp
bGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMTkwLDcgKzE5MCw3
IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdlcykKIAogICAg
IGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwog
Ci0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZp
bGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5n
ZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+
KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxl
Q2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMjUwLDcgKzI1MCw3IEBAIFRFU1RfRihGaWxl
TW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3Jr
UXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNv
cHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0
byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RR
dWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewog
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRp
b246CkBAIC0yODksNyArMjg5LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hh
bmdlQW5kVGhlbkRlbGV0ZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVh
dGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtd
IChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9
IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJl
ZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAg
LTM0Niw3ICszNDYsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXRO
b3RTdWJzZXF1ZW50Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNy
ZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwg
W10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9y
ID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5
UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
ICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2ll
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNw
cAppbmRleCA5MmQ4YTE5MmNhN2IyYTEwODE1NjU5OTdiMGVhNWIxZjlhZWE4ZjY1Li4yMTllOTY2
ZGJlYmFhODRkMzYwMjcyMmU5NTllMzJmNjRmYjRkYjJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcApAQCAtNDQsNyArNDQsNyBA
QCBjbGFzcyBDdXJsQ29va2llczogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHsKICAgICAg
ICAgbV9jb29raWVEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoKTsKIAotICAgICAgICBtX2Nvb2tpZUphciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tp
ZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKKyAgICAgICAgbV9jb29raWVKYXIgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6OkNvb2tpZUphckRCPihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9jb29raWVEaXJlY3RvcnksICJjb29raWVkYi5zcWwiKSk7CiAgICAgICAgIG1f
Y29va2llSmFyLT5vcGVuKCk7CiAgICAgICAgIG1fY29va2llSmFyLT5zZXRBY2NlcHRQb2xpY3ko
Q29va2llQWNjZXB0UG9saWN5OjpBbHdheXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFn
ZS5jcHAKaW5kZXggNWMwYWUzMzEzMjhiMzZiMGJhNzBhMThkOTkzNjY5NDEyYWNhMjlhOS4uYjNi
M2JjM2NmNDlkNzg1NDMwNTg0OWRkYTEyMTJmMTkzMmEwZDIwZiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3Jl
YXRlUGFnZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQ
YWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsK
ICAgICBFWFBFQ1RfVFJVRShvcGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVk
V2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBv
cGVuZWRXZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAg
V0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXpl
b2YodWlDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L01vZGFsQWxlcnRzU1BJLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L01vZGFsQWxlcnRzU1BJLmNwcAppbmRleCBhNGZiYTEyN2M2ZTRkMDNlNjNkOWE4MTcyYTM5YjNj
YjhiMTQ3MmM3Li43YmMzNTI0ZjJiZGI5ZGJkN2E0MzVhM2NjNmFkMzgzMmU5NDRlZGQ1IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEku
Y3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdL
UGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsKICAgICBF
WFBFQ1RfVFJVRShvcGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVkV2ViVmll
dyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBvcGVuZWRX
ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQYWdl
VUlDbGllbnRWNSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlD
bGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Rl
eHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCmluZGV4IDBmN2Zk
NDBhNjNlNWVjZjc4Yzk2OGRmODAzOGQxOTIyMWVkYmY3ZDUuLmNkMTlkN2NkZTU4ODk2MjVmMTIy
MTJmYzc1M2NmZDU1ZTI3OGQ5MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5n
LmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdHJ1Y3QgV2ViS2l0MlRleHRGaWVsZEJlZ2luQW5kRWRp
dEVkaXRpbmdUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZv
ckluamVjdGVkQnVuZGxlVGVzdCgiVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nRXZlbnRz
VGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwg
dGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJW
aWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZv
cm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKICAgICAgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3
ZWJWaWV3LT5wYWdlKCksIHRoaXMpOwogCiAgICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdl
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcApp
bmRleCBjN2IwMjUxYmZjZjIxYWE0YWJkMTE0Yzg1NTA3OTI0MWQ2NjE3NGU5Li45ZGMzYTZkYTk5
NTA5YzI3MTEyMWQ0YzNhNDUzMDg0ZmVlOTg5YmQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIGNsYXNz
IFdlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0
IHsKICAgICAgICAgY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVj
dGVkQnVuZGxlVGVzdCgiVXNlck1lc3NhZ2VUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1
bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3
ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAg
ICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAg
ICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvV2lsbExvYWQuY3BwCmluZGV4IGVkOWYwZmZjNzAyNWFiMTJjYjUzOTY3ZjcyMDVmZjk2
Yzg5YmU2OTkuLjUyZjE4ZGNlYjQyZDUxYWMwODM5NWI2MjAwMWQ0YTk1NDBmNzQ1MmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgY2xhc3MgV2ViS2l0MldpbGxMb2FkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJXaWxsTG9hZFRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdl
YlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAKICAg
ICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1
bmRsZV9CdW5kbGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9y
Y2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KaW5kZXggYWViYTFjMzQ4ZmJjNjZh
MTcwZTUzOWUwYTcyODZhZWU5MTUzZTYwNC4uMjkxYTQ3OGEyNzg0MjQyZGFkNDVhM2E4ZjE3Mzkw
NWQ3ZDNiMmYyMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
bWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxl
X0J1bmRsZS5tbQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gcmVzdWx0
U3RyaW5nID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShzY3JpcHRDb250ZXh0LCByZXN1bHQs
IG51bGxwdHIpKTsKIAogICAgICAgICBhdXRvIGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUocmVzdWx0U3RyaW5nLmdldCgpKTsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8g
YnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJT
aXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhyZXN1bHRTdHJpbmcuZ2V0KCks
IGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAKICAgICAgICAgV0tCdW5kbGVQYWdlU2V0VXNl
RGFya0FwcGVhcmFuY2UobV9wYWdlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKaW5kZXgg
ZDZjYzJmYjI0N2U1NjIwNjY5Nzc2MTBiMjU2NzliN2VkMWRjYzhiYS4uN2M4YzhiNTIxNTRhYzRl
YjA5OGU2OTUxNzkwNjlhMDVlYmRjNjZhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKQEAgLTI1
Niw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uRW1wdHlS
ZWFsbShBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogfQogCiBjbGFzcyBUdW5uZWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFR1bm5lbChTb3Vw
U2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICA6IG1fc2VydmVy
KHNlcnZlcikKQEAgLTI5OSw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhT
b3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogewog
ICAgIGlmIChtZXNzYWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfQ09OTkVDVCkgewogICAgICAg
ICBnX2Fzc2VydF9jbXB1aW50KHNvdXBfc2VydmVyX2dldF9wb3J0KHNlcnZlciksID09LCBnUHJv
eHlTZXJ2ZXJQb3J0KTsKLSAgICAgICAgYXV0byB0dW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFR1
bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKKyAgICAgICAgYXV0byB0dW5uZWwgPSBtYWtlVW5pcXVl
PFR1bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKICAgICAgICAgYXV0byogdHVubmVsUHRyID0gdHVu
bmVsLmdldCgpOwogICAgICAgICB0dW5uZWxQdHItPmNvbm5lY3QoW3R1bm5lbCA9IFdURk1vdmUo
dHVubmVsKV0oY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICBpZiAoZXJy
b3JNZXNzYWdlKSB7CkBAIC0zOTQsNyArMzk1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdB
dXRoZW50aWNhdGlvblByb3h5KFByb3h5QXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3QK
IAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRUUFMoUHJveHlB
dXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgYXV0byBodHRw
c1NlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNl
cnZlcjo6U2VydmVySFRUUFMpOworICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdl
YktpdFRlc3RTZXJ2ZXI+KFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFBTKTsKICAgICBodHRw
c1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKIAogICAgIHRlc3QtPmxvYWRVUkkoaHR0cHNT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9wcm94eS9hdXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vz
c1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNz
VGVzdC5oCmluZGV4IDdhNDRjYjA1Y2Q0YmMwMjdlMTJkMTEwM2ZhZjZhMDA3YWM2ZjQwZjMuLmI2
YjcyOGU0NWUwOWM1MWE2ZDZiYTk5YmY3MTdlMTk1ZTlhMGUwYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCkBAIC0z
MCw2ICszMCw3IEBACiAjZW5kaWYKIAogY2xhc3MgV2ViUHJvY2Vzc1Rlc3QgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlByb2Nlc3NUZXN0
KCkgeyB9CiAgICAgdmlydHVhbCBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdGVzdE5hbWUsIFdl
YktpdFdlYlBhZ2UqKSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCmluZGV4IDEyNTYyNDE5NmE3MWM2ZDNh
ZDViY2RkMjlmMTQyYjg2YWJiOWZkMTEuLmU0MDAwNzYzM2YyMzYyNDA1MjlkZjU0YWU4NjMyMDg3
YmQzNjk1MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L0RPTURPTVdpbmRvd1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHN0YXRpYyBnYm9v
bGVhbiBjbGlja2VkQ2FsbGJhY2soV2ViS2l0RE9NRE9NV2luZG93KiwgV2ViS2l0RE9NRXZlbnQq
LCBXZWJLaXRET01ECiAKIGNsYXNzIFdlYktpdERPTURPTVdpbmRvd1Rlc3QgOiBwdWJsaWMgV2Vi
UHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJv
Y2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RE9NRE9N
V2luZG93VGVzdD4oKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rl
c3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4o
KTsgfQogCiBwcml2YXRlOgogICAgIGd1aW50NjQgd2ViUGFnZUZyb21BcmdzKEdWYXJpYW50KiBh
cmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxp
dGllc0NvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGll
c0NvY29hLm1tCmluZGV4IDhkMmVlOGFkMTZjYWQ2Nzk1NjhlZDliNmQ3NWNlY2Q4MjE1MGZlZGIu
LjM0OTBlZjFjZWI2ZjE3ODA1MDJmMGNkYzkxOWM5NzFlMjkyYmU5MDUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KQEAgLTM4
LDcgKzM4LDcgQEAgc3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJpbmcgKnN0cmluZykKICAgICAgICAg
cmV0dXJuIHN0ZDo6c3RyaW5nKCk7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFtzdHJpbmcg
bGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgIGF1
dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1
dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZm
ZXJTaXplKTsKICAgICBOU1VJbnRlZ2VyIHN0cmluZ0xlbmd0aDsKICAgICBbc3RyaW5nIGdldEJ5
dGVzOmJ1ZmZlci5nZXQoKSBtYXhMZW5ndGg6YnVmZmVyU2l6ZSB1c2VkTGVuZ3RoOiZzdHJpbmdM
ZW5ndGggZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmcgb3B0aW9uczowIHJhbmdlOk5TTWFr
ZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgcmVtYWluaW5nUmFuZ2U6MF07CiAgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCA1NDZjYTZlMjIyZDlmZWE4MWNlN2Jl
NGUyYzJkMzk4NWM1YjQ0ZjBmLi4yNDc1NzI4OThiNmE4NzljN2EzNmI0ZmM2NWI5MTUzMzA0NzBm
ZmQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0y
OTQsNyArMjk0LDcgQEAgc3RhdGljIHZvaWQgYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdB
dHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygpCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBzd2l6emxlcjsKICAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAg
ICAgIHN3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0
dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zv
ckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlm
aWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CisgICAgICAgIHN3aXp6bGVy
ID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xh
c3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRl
cldpdGhvdXRQdWJsaWNSVEZEKSk7CiAgICAgfSk7CiB9CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246
KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xNzUyMDQ+IGlzIGZpeGVkLgotICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBA
c2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVz
c1VJQ2FsbG91dEJhcikpOworICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBtYWtlVW5p
cXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Io
c2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91
dEJhcikpOwogICAgIF9pbnB1dFNlc3Npb25DaGFuZ2VDb3VudCA9IDA7CiAgICAgYXBwbHlXb3Jr
YXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJLaXRUZXN0U2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJLaXRUZXN0U2VydmVyLmgKaW5kZXggNjkwZjBhNzc1NmNmZTNhZmIwN2Q5MGJlZWZmMDk1Nzhi
MmZjNTVkZS4uMjgxNDUyN2YxOWI5NTRmODJhZWI4N2JjMGU0YzhkYzBiOWE3ZjViNiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZl
ci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RT
ZXJ2ZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogY2xhc3MgV2ViS2l0VGVzdFNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAKICAgICBlbnVtIFNlcnZlck9wdGlvbnMgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCmluZGV4IDg2MjYzNTQ0MzM1YTdmNWQ5NzFiNWRjMGQy
NTllNTVkYzBkNzNjNjYuLjRiZGU2YzUxMDBkMmJkNmZlNGJiOTBmYWNiZTI1ZDMzOWE1MDU0YmIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KQEAgLTg0LDcg
Kzg0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRm9udE9wdGlvbnM6KE5TRm9udE9wdGlv
bnMgKilmb250T3B0aW9ucwogCiAgICAgX3NoYWRvd09mZnNldCA9IENHU2l6ZVplcm87CiAgICAg
X3NoYWRvd0JsdXJSYWRpdXMgPSAwOwotICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmco
QCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKKyAgICBfcmVwbGFj
ZUZvbnRPcHRpb25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5T
Q2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0aW9ucyIpLCBAc2VsZWN0b3Ioc2hhcmVkRm9udE9w
dGlvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc2hhcmVkRm9udE9wdGlvbnNGb3JUZXN0aW5n
KSk7CiAgICAgX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzID0gTk87CiAgICAgX2hhc011bHRpcGxl
Rm9udHMgPSBOTzsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNl
bmRlclByb3h5LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaApp
bmRleCAxNTMyMjE4MjY5OWUwZWEzMDc1NGEwMjI2YzNhN2I2Mjk1OTc2ZDAwLi4xMTM5OWIzOTBm
ZTkxNzBmNmM1MjUyNzVhYzIzNDU4MmRhZjc1MGY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0V2ZW50U2VuZGVyUHJveHkuaApAQCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgV1RSRXZlbnRRdWV1
ZUl0ZW07CiAjZW5kaWYKIAogY2xhc3MgRXZlbnRTZW5kZXJQcm94eSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXZlbnRTZW5kZXJQcm94eShU
ZXN0Q29udHJvbGxlciopOwogICAgIH5FdmVudFNlbmRlclByb3h5KCk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKaW5kZXggN2Q5NDVkNjdl
YzY3NTBiZTcwNjQzNWEyYTZiM2M3NGQxYWQxNzQzYy4uMWVkNGFkZjliMzkzOTNhMzMzYWEzMjUx
MDk3YjllM2FhNDJjYzM2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9s
b2NhdGlvblByb3ZpZGVyTW9jay5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9j
YXRpb25Qcm92aWRlck1vY2suaApAQCAtMjcsMTAgKzI3LDEyIEBACiAjZGVmaW5lIEdlb2xvY2F0
aW9uUHJvdmlkZXJNb2NrX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBHZW9s
b2NhdGlvblByb3ZpZGVyTW9jayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgR2VvbG9jYXRpb25Qcm92aWRlck1vY2soV0tDb250ZXh0UmVmKTsKICAgICB+R2Vv
bG9jYXRpb25Qcm92aWRlck1vY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDFmOWQzZWZjOTY0ZmIxMzc3YmM2NjNjMDE2MGMzNGE4OGIyMzI4YTYuLmM5YTUyYzE1Zjc3
MDgzMDY4M2M4ZWZmNjg5NDI5YmQwYmMxZjU2NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmNwcApAQCAtNjEyLDYgKzYxMiw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
bW9uaXRvcldoZWVsRXZlbnRzKCkKIH0KIAogc3RydWN0IFNjcm9sbENvbXBsZXRpb25DYWxsYmFj
a0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBKU0NvbnRl
eHRSZWYgbV9jb250ZXh0OwogICAgIEpTT2JqZWN0UmVmIG1fZnVuY3Rpb247CiAKQEAgLTY0Nyw3
ICs2NDgsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbAogICAgIAogICAgIEpTVmFsdWVQcm90
ZWN0KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogCi0gICAgYXV0byBzY3JvbGxD
b21wbGV0aW9uQ2FsbGJhY2tEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxDb21wbGV0aW9u
Q2FsbGJhY2tEYXRhPihjb250ZXh0LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsKKyAgICBhdXRv
IHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBtYWtlVW5pcXVlPFNjcm9sbENvbXBsZXRp
b25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogICAgIGF1
dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0ciA9IHNjcm9sbENvbXBsZXRpb25DYWxs
YmFja0RhdGEucmVsZWFzZSgpOwogICAgIGJvb2wgY2FsbGJhY2tXaWxsQmVDYWxsZWQgPSBXS0J1
bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhwYWdlLCBl
eGVjdXRlQ2FsbGJhY2ssIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGFQdHIpOwogICAgIGlm
ICghY2FsbGJhY2tXaWxsQmVDYWxsZWQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNzExNmNjOTgx
NTY2OWQ5NDk0ZGJmOGRlNDhiYWVlY2Q2Mzc0YzM3Ni4uODNiMmIzMGIxMzMyZWM3N2JmZWZjYzI5
ZmRkMWEyZTQ4M2NiNWYyMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBl
UmVmIGluaXRpYWxpemF0aW9uVXNlcgogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFn
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKIHsKICAgICBib29sIGlzTWFpblBhZ2UgPSBtX3BhZ2Vz
LmlzRW1wdHkoKTsKLSAgICBtX3BhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVk
QnVuZGxlUGFnZT4ocGFnZSkpOworICAgIG1fcGFnZXMuYXBwZW5kKG1ha2VVbmlxdWU8SW5qZWN0
ZWRCdW5kbGVQYWdlPihwYWdlKSk7CiAKICAgICBzZXRVcEluamVjdGVkQnVuZGxlQ2xpZW50cyhw
YWdlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKaW5kZXggNTlkM2UxYjBkMDJlMjJjNTJmYTc2NTQz
MzI5YzIzZjZiNjJhMzg5YS4uYjMyM2MyNTA0NGY1NTAzNjA3NmY0OGVkZGQ0N2JjZWFhM2UyMGYx
OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV1RS
IHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmKTsK
ICAgICB+SW5qZWN0ZWRCdW5kbGVQYWdlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1OWYyNWMxYmJhYzZlZDg5
ZTk0Y2ZhODhhOWFmZmMwM2ZiNzI0YTE4Li4zYjBlZDZhYWNhNzU5OTU1ZWQxNWNlOGIwYzEwY2Yz
NzJjOTkxZDMxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIzNzQsNyArMjM3NCw3IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0T3BlblBhbmVsRmlsZXMoSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1
dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBu
dWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAg
IGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJb
XT4oZmlsZUJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGUu
Z2V0KCksIGZpbGVCdWZmZXIuZ2V0KCksIGZpbGVCdWZmZXJTaXplKTsKIAogICAgICAgICBXS0Fy
cmF5QXBwZW5kSXRlbShmaWxlVVJMcy5nZXQoKSwgYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhCYXNl
VVJMKG1fdGVzdFVSTC5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSkpLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggMGU1YzA3Y2E3MjliNmRm
Y2IzOGM4MDQyNmQzOTI0NGUzMmMwMDE3Yy4uMThlNTdkMmZjZjYyOTc2N2E3MzI5NzliYzJlZGM1
N2FjZjEwOWNlMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAKQEAgLTczMCw3ICs3MzAsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0VG9KU09iamVj
dEFycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbQogICAgIEpTQ29u
dGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5G
cmFtZSk7CiAKICAgICBzaXplX3QgZWxlbWVudENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOwotICAg
IGF1dG8gdmFsdWVFbGVtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNWYWx1ZVJlZltdPihlbGVt
ZW50Q291bnQpOworICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPEpTVmFsdWVSZWZbXT4oZWxlbWVudENvdW50KTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgaSsrKQogICAgICAgICB2YWx1ZUVsZW1lbnRzW2ld
ID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNoaWxkcmVuW2ldLT53cmFwcGVyQ2xhc3MoKSwgY2hp
bGRyZW5baV0uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Bs
YXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcu
aAppbmRleCBmNzRjYzJkMzkzZDUzMDVmZDM2NjViYjBlMGEzNTUxODQ0NzMxMDlmLi5jYTRmZGJk
NzIyMTVhZjQ4YmRhOTY3ZDViY2FiNDgxNTZiYWRjYzcxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmICFkZWZpbmVkKEJVSUxESU5HX0dUS19fKQogI2luY2x1ZGUg
PFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KQEAgLTY0LDYgKzY1LDcgQEAgdHlwZWRlZiBjYWlyb19z
dXJmYWNlX3QqIFBsYXRmb3JtSW1hZ2U7CiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgUGxhdGZv
cm1XZWJWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9ybVdlYlZpZXcoV0tXZWJWaWV3Q29uZmlndXJhdGlv
biosIGNvbnN0IFRlc3RPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1N0cmluZ0Z1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5j
dGlvbnMuaAppbmRleCBkYWYxNGNhNzA1NDg2YmZjMjA2NDMxMjNkZTUwOTFiNzllNWQwMTMxLi5i
YmExN2MyZWZmYjA5NjY1ZWZjMjhlZWI2OWU3MjMyOWIxZDY5Yjc0IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKQEAgLTczLDcgKzczLDcgQEAgaW5saW5lIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiB0b0pTKGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYg
c3RyaW5nKQogaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsK
ICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1
ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tT
dHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9
CkBAIC04Niw3ICs4Niw3IEBAIGlubGluZSBzdGQ6OnN0cmluZyB0b1NURChjb25zdCBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4mIHN0cmluZykKIGlubGluZSBXVEY6OlN0cmluZyB0b1dURlN0cmlu
ZyhXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmlu
Z0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAg
c2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25TdHJpY3Qoc3Ry
aW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBXVEY6OlN0cmluZzo6
ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAx
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTY1
NDYyOWNhYTZmNmQ4Yzg5NDU0ODM1MWMwYzhmYjBhMzMzMzcyYS4uZjk3ZjE1ZTYxMmMwYjFhNDcw
MzhkZGJkMzc4YjY2ZDBlN2FjNDI3NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0
aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IHBhZ2VHcm91cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJXZWJLaXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAgIG1fcGFnZUdy
b3VwLmFkb3B0KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdyb3VwSWRlbnRp
Zmllci5nZXQoKSkpOwogCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1
ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtl
VW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogfQogCiBXS1JldGFpblB0cjxXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVDb250ZXh0Q29uZmln
dXJhdGlvbihjb25zdCBUZXN0T3B0aW9uczo6Q29udGV4dE9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0
CkBAIC01MjEsNyArNTIxLDcgQEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4g
VGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY28KICAgICAgICAgbV9j
b250ZXh0ID0gcGxhdGZvcm1BZGp1c3RDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24oY29udGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpKS5nZXQoKSwgY29udGV4
dENvbmZpZ3VyYXRpb24uZ2V0KCkpOwogICAgICAgICBtX2NvbnRleHRPcHRpb25zID0gb3B0aW9u
cy5jb250ZXh0T3B0aW9uczsKIAotICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOwor
ICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2xvY2F0aW9uUHJv
dmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgICAgIGlmIChjb25zdCBjaGFyKiBk
dW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKSkgewogICAgICAgICAg
ICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRy
ZWVUZW1wKTsKQEAgLTk1MSw3ICs5NTEsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAg
IC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGVuc3VyZSB0aGF0IHRoZXJlIGlz
IG9ubHkgb25lIHBhZ2Ugb3Blbi4KIAogICAgIC8vIFJlc2V0IHRoZSBFdmVudFNlbmRlciBmb3Ig
ZWFjaCB0ZXN0LgotICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8RXZl
bnRTZW5kZXJQcm94eT4odGhpcyk7CisgICAgbV9ldmVudFNlbmRlclByb3h5ID0gbWFrZVVuaXF1
ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBJcyB0aGlzIG5lZWRl
ZD8gTm90aGluZyBpbiBUZXN0Q29udHJvbGxlciBjaGFuZ2VzIHByZWZlcmVuY2VzIGR1cmluZyB0
ZXN0cywgYW5kIGlmIHRoZXJlIGlzCiAgICAgLy8gc29tZSBvdGhlciBjb2RlIGRvaW5nIHRoaXMs
IGl0IHNob3VsZCBwcm9iYWJseSBiZSByZXNwb25zaWJsZSBmb3IgY2xlYW51cCB0b28uCkBAIC0x
MjM0LDExICsxMjM0LDExIEBAIHN0YXRpYyBXS1VSTFJlZiBjcmVhdGVUZXN0VVJMKGNvbnN0IGNo
YXIqIHBhdGhPclVSTCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGJ1ZmZlcjsKICAg
ICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsKLSAgICAgICAgYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOworICAgICAgICBidWZmZXIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0aCArIGxl
bmd0aCArIDEpOwogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKICAg
ICAgICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSArIHByZWZpeExlbmd0aCwgcGF0aE9yVVJMKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJl
Zml4TGVuZ3RoICsgUEFUSF9NQVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHBhdGhTZXBh
cmF0b3IKKyAgICAgICAgYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0
aGUgcGF0aFNlcGFyYXRvcgogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4
KTsKICAgICAgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBQQVRI
X01BWCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIGJvb2wg
VGVzdENvbnRyb2xsZXI6OnJ1blRlc3QoY29uc3QgY2hhciogaW5wdXRMaW5lKQogICAgIFRlc3RP
cHRpb25zIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QoY29tbWFuZCk7CiAKICAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gd2tVUkwgPSBhZG9wdFdLKGNyZWF0ZVRlc3RVUkwoY29tbWFuZC5w
YXRoT3JVUkwuY19zdHIoKSkpOwotICAgIG1fY3VycmVudEludm9jYXRpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9jdXJy
ZW50SW52b2NhdGlvbiA9IG1ha2VVbmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBv
cHRpb25zKTsKIAogICAgIGlmIChjb21tYW5kLnNob3VsZER1bXBQaXhlbHMgfHwgbV9zaG91bGRE
dW1wUGl4ZWxzRm9yQWxsVGVzdHMpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPnNldElz
UGl4ZWxUZXN0KGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwpAQCAtMjk2MCw3ICsyOTYwLDcg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChjb25zdCBUZXN0SW52
b2NhdGlvbiYpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhX
S1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBv
cHRpb25zKQogewotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
V2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9IG1h
a2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAog
UGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2Uo
UGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAxMDczYWIxNTFhMGUzNTQ5YTQxMmE1ZDI1ZjU0
ZjdiMWI0ZTlkY2I4Li4wOTEwOGIwZTUyMjQ0M2E2NzViNTExNGY0MjhjNzlhYTEwZDI4M2ZjIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTY2OSw3ICsx
NjY5LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KFdLU3RyaW5nUmVm
IHNjcmlwdCwgdW5zaWduZWQgc2NyaXB0Q2FsbGJhY2sKICAgICBtX3BlbmRpbmdVSVNjcmlwdElu
dm9jYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0g
ICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxVSVNjcmlwdENvbnRl
eHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBtYWtlVW5pcXVlPFVJU2Ny
aXB0Q29udGV4dD4oKnRoaXMpOwogICAgIAogICAgIG1fVUlTY3JpcHRDb250ZXh0LT5ydW5VSVNj
cmlwdCh0b1dURlN0cmluZyhzY3JpcHQpLCBzY3JpcHRDYWxsYmFja0lEKTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCA3ODgwZGQ4ZGY1NTJmYzlkODJiOTRk
MWQyZjJkZGZkNmRmODJlYzJiLi44NWIxYjAyMDZlYjg5MjI2ZTg2YzZiNDFhYjkzZTVkYjk1ZWJm
ZDkyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC00MCw2ICs0
MCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgVGVzdEludm9jYXRpb24gZmluYWwgOiBw
dWJsaWMgVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRlc3RJbnZvY2F0aW9uKTsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBUZXN0SW52b2NhdGlvbihXS1VSTFJlZiwgY29uc3QgVGVzdE9wdGlvbnMm
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJD
b2NvYS5tbQppbmRleCAwZmJmOGVhNTIzZDM0OGQyNTZlY2M1MjMwNDJkZWEwMmZlY2RkMWRjLi4w
ZWJmN2JmZDAwMzlmNGVmODA5MzJjMWViNTE5MmZmNTRlZTNjNGEzIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0xNjgs
NyArMTY4LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKICAgICAgICAgW2NvcGllZENvbmZp
Z3VyYXRpb24gX3NldEFwcGxpY2F0aW9uTWFuaWZlc3Q6W19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qg
YXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOnRleHQgbWFuaWZlc3RVUkw6bmlsIGRvY3VtZW50
VVJMOm5pbF1dOwogICAgIH0KIAotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4oY29waWVkQ29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7Cisg
ICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25m
aWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKICAgICBmaW5pc2hDcmVhdGluZ1BsYXRmb3JtV2Vi
VmlldyhtX21haW5XZWJWaWV3LmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChvcHRpb25zLnB1
bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZShOU1N0cmluZyAqaWRlbnRp
ZmllcikKIHsKICAgICBtX292ZXJyaWRkZW5DYWxlbmRhcklkZW50aWZpZXIgPSBpZGVudGlmaWVy
OwogICAgIGlmICghbV9jYWxlbmRhclN3aXp6bGVyKQotICAgICAgICBtX2NhbGVuZGFyU3dpenps
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0NhbGVuZGFyIGNs
YXNzXSwgQHNlbGVjdG9yKGN1cnJlbnRDYWxlbmRhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihz
d2l6emxlZENhbGVuZGFyKSk7CisgICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9IG1ha2VVbmlx
dWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3Vy
cmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsK
IH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRDb250ZW50RXh0ZW5zaW9ucygpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCmlu
ZGV4IGRlNTc4ZjczZmMzNmVjZDE1ODljOTlmOGRiZjhmY2NjMzk4N2I0MmUuLmVmOWUzOGU3MjNi
YWE5NWRmZmU3MGVjNWE4NzVjZmVjODRlMzI4NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAg
aW50IGdldEdES0tleVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxv
Y2F0aW9uLCBndWludCogbW9kaWZpZXIKICAgICAgICAgcmV0dXJuIEdES19LRVlfRjEyOwogCiAg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUo
a2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZm
ZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhrZXlS
ZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1ZmZl
ci5nZXQoKVswXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVz
dENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJv
bGxlcklPUy5tbQppbmRleCA2YTYxZGY4ZTM1ZDZmYTA4YzhiMTRjNTFhODIzYzYyZDA4MDVkNGQy
Li5mM2M0MTdjN2ZiN2NhYTRkZTQ3NzdjN2E0OTRmNTNhZjMyYTE4YmZkIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAtMTUxLDggKzE1
MSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0CiAKICAgICBtX3ByZXNlbnRQb3BvdmVyU3dp
enpsZXJzLmNsZWFyKCk7CiAgICAgaWYgKCFvcHRpb25zLnNob3VsZFByZXNlbnRQb3BvdmVycykg
ewotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNl
bGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3Zlcikp
KTsKLSAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFzc10s
IEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJvd0Rp
cmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2Vu
dFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dp
enpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdD
b250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRl
ZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3
Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKKyAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVy
cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29u
dHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpw
ZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwogICAgIH0KICAgICAK
ICAgICBCT09MIHNob3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRlciA9IE5POwpAQCAtMjY5LDkgKzI2
OSw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICAgICBhdXRvIGNvbnRyb2xsZXJDbGFzcyA9
IFVJS2V5Ym9hcmRJbnB1dE1vZGVDb250cm9sbGVyLmNsYXNzOwogICAgIG1faW5wdXRNb2RlU3dp
enpsZXJzLnJlc2VydmVDYXBhY2l0eSgzKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250
cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOwotICAgIG1faW5wdXRNb2RlU3dpenps
ZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenps
ZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVu
Y2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0g
ICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZl
SW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2Rl
cykpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1
ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJy
ZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRN
b2RlKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5p
cXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1
cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenps
ZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2Vk
QXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNz
LCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6
emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKICAgICBbVUlLZXlib2FyZEltcGwuc2hhcmVkSW5zdGFu
Y2UgcHJlcGFyZUtleWJvYXJkSW5wdXRNb2RlRnJvbVByZWZlcmVuY2VzOm5pbF07CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCmluZGV4IGQx
Y2ZjNmEzMzIxZTAyOWM4YmE4MTE1ZjRhNmQ5MjA3ZjhlNzE4NGYuLjg5Y2U0ZWYxMjZjMTVkOTJk
Y2Y3NjY1MGNlNmVlZjViODkyMzE3MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvRXZlbnRTZW5kZXJQcm94eS5tbQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVy
cyBtb2RpZmllCiAKICAgICBOU1ZpZXcgKnRhcmdldFZpZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25Jbldp
bmRvd11dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenps
ZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAg
ICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8
Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1v
dXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1v
dXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAg
ICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRG93bjpldmVudF07CiAgICAgICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50Om5pbF07CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBFdmVudFNlbmRlclBy
b3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnMKICAgICAgICAgdGFyZ2V0VmlldyA9IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtVmlldygpOwogCiAgICAgQVNTRVJUKHRhcmdldFZpZXcpOwotICAgIGF1dG8g
ZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNz
TWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1
dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1
dHRvbnMpKTsKKyAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFr
ZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3Rvcihw
cmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQ
cmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRd
OwogICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6ZXZlbnRdOwogICAgIFtOU0FwcCBfc2V0Q3VycmVu
dEV2ZW50Om5pbF07CkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojpt
b3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCiAgICAgLy8gQWx3YXlzIHRhcmdldCBkcmFn
cyBhdCB0aGUgV0tXZWJWaWV3IHRvIGFsbG93IGZvciBkcmFnLXNjcm9sbGluZyBvdXRzaWRlIHRo
ZSB2aWV3LgogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IGlzRHJhZyA/IG1fdGVzdENvbnRyb2xs
ZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIDogW21fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6d2luZG93TG9jYXRpb25dOwogICAg
IGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
U3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50
IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0
PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0byBl
dmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RT
d2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykp
OwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgICAgIGlmIChp
c0RyYWcpCiAgICAgICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZURyYWdnZWQ6ZXZlbnRdOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcApp
bmRleCA0NjliZmFmMGU4Y2YyOTA3MzBiYWJmYTA3ODM2ZDg3N2VjNzBlOGY1Li42OTZmNDU1NzU4
OTZmZTgyNjY0ODdkMDk4ZThmZThlZTYxZTU0ZDU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBA
IHN0YXRpYyB1aW50MzJfdCB3cGVLZXlTeW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1
bnNpZ25lZCBsb2NhdGlvbiwgdWludDMyCiAgICAgICAgIHJldHVybiBXUEVfS0VZX0YxMjsKIAog
ICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXpl
KGtleVJlZik7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVm
ZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5
UmVmLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIGNoYXIgY2hhckNvZGUgPSBidWZm
ZXIuZ2V0KClbMF07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376154</attachid>
            <date>2019-08-13 02:43:59 -0700</date>
            <delta_ts>2019-08-13 05:08:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190813024358.patch</filename>
            <type>text/plain</type>
            <size>1729775</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDkyMDFmZjM5Y2JiMDFhNDJhYWQ1MTg2YzRkZWIxMDgzYWZiOWZhLi42NDFhZDIzY2U3MzZiZDFi
Mzk0ZmQzMGEzYTZjMDFhNjNhNGZjY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgbXVs
dGlwYXJhbWV0ZXIgb3ZlcmxvYWRzIG9mIGFwcGVuZCgpIGluIFN0cmluZ0J1aWxkZXIgYXMgYSBm
aXJzdCBzdGVwIHRvd2FyZCBzdGFuZGFyZGl6aW5naW5nIG9uIHRoZSBmbGV4aWJsZUFwcGVuZCgp
IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZmUzNjczMjEwMThkZDVhMWQ0N2Y1NWMxYTcxZjBhODJm
OGM1NzIuLjBjMDY1NzVlZDQ2ZTFiN2Y5MDU4YzQ3M2U5MTZlMjU5NjdlZDAwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAgICAgICogYmVu
Y2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFZlY3Rv
ci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAgICAgICAqIHd0
Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9u
Lmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICog
d3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9T
dHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAg
ICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3Ip
OgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29t
PgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdl
YWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTExY2FkMjk0OThjYTNlMDc4ZDllZjgyZTBkMzA4
MGMxOWMwMmEwYy4uMmI2ZjdmOTVkODkzZDEyMmUzZTcwYjFhZjg2OGY2ZGM1Yzk0ZjBmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4MjUgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcpOgorICAgICAgICAqIE1vZHVsZXMv
YmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JC
ZWFjb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUNETTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lz
dGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y2xpZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6c2V0Q2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9s
b2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJl
Y29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5k
ZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVP
cGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRl
U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9w
ZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFu
c2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2
ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURC
VHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFu
YWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2
ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tl
bmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
OjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRl
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJl
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rh
c2s6OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVj
b2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2Rp
bmdUYXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
YW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNl
dEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBh
bm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2Fn
ZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVG
cm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5k
VmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVh
dGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50
cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29t
cHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFt
ZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlBhcnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJ
bml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRl
cyk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRo
b2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFt
ZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0Ns
YXNzOjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29t
YmluZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1
bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRz
Ojpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAg
KiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9E
T01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNl
dEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAg
ICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNl
dDo6YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNj
YWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgor
ICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6Cisg
ICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJJbXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6
OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNv
bnN1bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZVN1cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1l
S2V5ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRv
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvRWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
U2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hh
cGVQYXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2Up
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhP
YmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0
ZXJDU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvbVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRF
dmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAg
ICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAg
KiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRv
bS9NaWNyb3Rhc2tzLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdyk6Cisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFn
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNl
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURh
dGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNl
bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kQ3Jl
YXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhU
TUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHls
ZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAg
KiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25G
aWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxl
U3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6
CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjptYXBN
b3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRU
b1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAg
ICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVx
dWVzdFRvSGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0
VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpp
bnNlcnRBZGphY2VudEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNl
V2hvbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNo
U3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJs
ZVN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEluc3BlY3RlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9y
eUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0
b3JQYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dl
YkhlYXBBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uTG9nKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBs
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0
ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25E
aXNhYmxlci5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNj
aGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5l
Y3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRl
eHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpp
bml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJs
YXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9u
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAgICAg
ICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0
aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdl
L1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0
ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJzUHJv
cGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBwYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUp
OgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVu
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNaXhlZFR5cGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJlck9m
Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNo
YW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bGVu
Z3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bXV0
YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpkYXRh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVybyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50Rmxh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2Ft
cGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6
OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGVu
b3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1plcm8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NSKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVm
ZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZl
Y3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNl
RWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0
YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6RHlu
YW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2FpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5l
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJPZkF6
aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNl
UmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkVGltZUZyYW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2
ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5w
dXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6
d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6CisgICAgICAgIChXZWJDb3JlOjpaZXJv
UG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJl
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRQb2xlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYVBsYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNo
YXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lvbjo6Y29weVNoYXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lv
bjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpu
b3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3Vy
Y2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0
QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
Um90YXRpb25TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVr
YWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1l
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVj
dG9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNv
bW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNo
YXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlRpbGVkQmFja2luZ0xheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBj
cmVhdGVUaWxlQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6
UGxhdGZvcm1DQUxheWVyV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnN3YXBC
dWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZv
bnRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90
YXRpb25Qcm9wZXJ0aWVzOjppc0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3Bl
cnRpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpyb3RhdGVkU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YubW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3Bp
ZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXll
cjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNl
UHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1
bmNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6
OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1
ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3Vl
OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRlQ29tbWFuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6OnNldFNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
bkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldL
Q0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6
OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2Fj
aGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1f
Y2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1
cmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVh
dGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRvWVVWKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlh
RW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0ZURlY29kZVRhc2spOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxDYWNoZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
X3Jlc3RhcnRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJjaENvb2tpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4
dDo6Q3VybENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6d2lsbFNldHVw
U3NsQ3R4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0
aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNS
ZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVudDo6
cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
ZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAgICAg
KiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6
OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NEYXRh
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxl
eExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRp
bmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
bG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0
RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0ZUJh
c2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2Vk
VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjphZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0SW50b1RyYWNr
ZWRSZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25lZERlc2NlbmRhbnRz
TWFwOjphZGREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWdp
blVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZUJsb2NrUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExp
bmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxv
YXRpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJl
TGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxp
emVSYXJlQmxvY2tGbG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJh
Z21lbnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFn
bWVudE1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5
VHJhY2tzRm9yQXV0b1JlcGVhdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGlu
ZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVBbmNlc3RvckNsaXBwaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OlJlbmRlckxheWVyQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdl
UXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWlu
dFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVj
dEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFw
cGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRv
U2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50
ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJh
c3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2lj
U2hhcGVQYXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93
U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5k
ZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0
ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21S
ZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXpl
TWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0
ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdl
Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OkludmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRp
b25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAg
ICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NW
R1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6
Y29weSBjb25zdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5UGFpckFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQ
cmltaXRpdmUuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFu
aW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlM
aXN0QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJG
cm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9j
a1NwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQ
cmludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RN
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAg
ICAqIHRlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lN
b2NrQ0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0u
aDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2Ft
ZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVu
cXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrQW5kVGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrRm9yTW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtl
clRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25E
YXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICog
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGll
bnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OmV2YWx1YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5k
aW5nQ2FsbGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xMyAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlciBBZ2VudCBhbmQgU2Vz
c2lvbklEIHNob3VsZCBiZSBnaXZlbiB0byBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gc2V0IHVwIHRo
ZSBjb3JyZWN0IHByb3h5IGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwZTFiZmU3
MzU0MTQyNGMwZDE5ZGI5MThjNDUyZmUwNWY5ZTY3NWFmLi4xMjgxZDMyNTgzNjcyMDRlMTJkNjI3
NWZmZTE5OWU1M2JlYzg2YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwOgorICAgICAgICAoUEFMOjpD
cnlwdG9EaWdlc3RDb250ZXh0SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL0Ns
b2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChQQUw6OkNsb2NrOjpjcmVhdGUpOgorICAgICAgICAq
IHBhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW06CisgICAgICAgIChDbG9jazo6Y3JlYXRlKToKKwog
MjAxOS0wOC0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUYXBwaW5nIGJ1dHRvbnMgaW4gRGF0YSBEZXRlY3RvcnMgbG9va3VwIHByZXZpZXdzIGRv
ZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCAzNThmMmJmMDA1YWU2NDRkODEyMzI4ZDVkZWRl
NDE5YzhiYTAxY2ZiLi5hM2YyYjc2NjhjNWJjMmNlY2QyY2Y1NjI4ZGY1NWM3M2RkMTQzMTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4s
IHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAg
ICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6CisgICAg
ICAgICogZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNz
aW9uSG9zdDo6bGF1bmNoQnJvd3Nlcik6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0
OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisKIDIwMTktMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0NTU2Nyk6
IFtHVEtdW1dQRV0gWzIuMjUuMV0gV2ViS2l0V2ViRHJpdmVyIGdldHMgaW5zdGFsbGVkIGFzIFdl
YkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAyYjgwYzhjODA5ZjQ3ZmI2MWZlMWZmYTUwYjc3N2QwZjY0NGFj
NjVmLi5lMjk4OGE1YTQwOTJjMWI1MDlmOTBiZGI1MWY1Zjc0MDNiMGNkYWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDYyMSBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVz
IFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25p
dG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYXA6
OmFkZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpl
c3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVzZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRT
dXBwbGVtZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0
b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpDYWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNh
Y2hlOjptYWtlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpt
YWtlUmVkaXJlY3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OnVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9y
YWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVM
b2FkOjpyZWdpc3RlclN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
OjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3Bl
Y3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjpyZWFkUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2
ZUZyb21NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJl
dHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6
ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246
ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29v
cmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bS5jcHA6CisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1l
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6TmV0d29ya1JUQ1Byb3ZpZGVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2Rlcik6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp1
bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
OgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmMpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5l
Y3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hk
b2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nKToKKyAgICAgICAgKElQQzo6Q29ubmVj
dGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNl
bmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25X
aW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhv
c3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwpOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAgICAgIChBUEk6OlVSTDo6Y3JlYXRlKToKKyAgICAg
ICAgKEFQSTo6VVJMOjpwYXJzZVVSTElmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU9iamVjdEludm9jYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFnZTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFnZVByb3h5Ol0pOgorICAgICAgICAoLVtfV0tSZW1v
dGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9jYXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAq
IFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAod2Vi
a2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVf
aXRlbV9uZXcpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dh
Y3Rpb24pOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2Nr
X2FjdGlvbik6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3Rv
Y2tfYWN0aW9uX3dpdGhfbGFiZWwpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X25ld193aXRoX3N1Ym1lbnUpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19zZXBhcmF0b3IpOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOgorICAgICAgICAqIFNoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlLmg6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGV4bWFwTGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJv
b3RMYXllcik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKToKKyAgICAgICAgKiBTaGFyZWQvUGx1
Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5z
L05QUmVtb3RlT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSZW1vdGVPYmplY3RN
YXA6OnJlZ2lzdGVyTlBPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFyZWFi
bGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9t
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElG
b3JtQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAgICAo
QVBJOjpIVFRQQ29va2llU3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
SWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9h
ZGluZ0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdL
Q29udGV4dFNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5j
cHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdL
Tm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6
CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQpOgorICAgICAg
ICAoV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRN
YXRjaGVzQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBv
bGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFj
L1dLUGFnZVByaXZhdGVNYWMubW06CisgICAgICAgICgtW1dLT2JzZXJ2YWJsZVBhZ2VTdGF0ZSBp
bml0V2l0aFBhZ2U6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3Bw
OgorICAgICAgICAoV0tWaWV3U2V0Vmlld0NsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciBfaW5pdFdpdGhQYWdlUmVmOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgICgtW1dLSFRU
UENvb2tpZVN0b3JlIGFkZE9ic2VydmVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0RG93bmxv
YWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0QXV0b21hdGlvbkRl
bGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOm5hbWU6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9s
bGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOnVzZXJDb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoLVtfV0tBdXRvbWF0
aW9uU2Vzc2lvbiBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWR5U1FM
aXRlU3RhdGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwOgorICAgICAgICAod2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1
Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xp
ZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmNwcDoKKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNw
cDoKKyAgICAgICAgKGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdl
YmtpdEZhdmljb25EYXRhYmFzZU9wZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgICh3ZWJraXRGaW5kQ29udHJvbGxlckNv
bnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVu
dC5jcHA6CisgICAgICAgIChhdHRhY2hGb3JtQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdl
YmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEljb25Mb2Fk
aW5nQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGll
bnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmlj
YXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6
CisgICAgICAgICh3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21l
c3NhZ2VfaGFuZGxlcik6CisgICAgICAgICh3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9pbl93b3JsZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29u
dGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21h
dGlvbl9hbGxvd2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHA6CisgICAgICAgICh3ZWJraXRFbW9qaUNo
b29zZXJTZXR1cEVtb2ppU2VjdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYkluc3BlY3RvckNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5kbGVyKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYXliZUluc3RhbGxJY29uTG9h
ZGluZ0NsaWVudF0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9v
bDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVh
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwOgorICAgICAg
ICAoV0tXUEU6OlZpZXc6OlZpZXcpOgorICAgICAgICAoV0tXUEU6OlZpZXc6OnNldENsaWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcDoKKyAgICAgICAg
KFdQRVF0Vmlldzo6bm90aWZ5TG9hZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChXUEVRdFZp
ZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFjayk6CisgICAgICAgIChXUEVRdFZpZXc6OnJ1bkph
dmFTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tl
bmQuY3BwOgorICAgICAgICAoV1BFUXRWaWV3QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9J
Y29uTG9hZGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2Fk
aW5nRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6OmNy
ZWF0ZUljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVN
ZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlRHJh
d2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRUZXh0SW5k
aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1cmVDb250
cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRj
aEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZTo6Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVw
YWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5lY3RlZEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktp
dDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGx1Z2luUmVxdWlyZXNHdGsyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RUb1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OmluaXRpYWxpemVEZWJ1Z0luZGljYXRvcik6CisgICAgICAgICog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQ
ZXJmb3JtYW5jZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAg
KFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpz
ZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6
c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRp
b25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldFVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJ
Y29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Rmlu
ZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXND
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdl
SWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9S
dW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2lu
Z0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
c2V0QXV0b21hdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fkcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1l
ZGlhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2ds
aWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5z
cGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Fu
ZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3Np
dG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1h
Z2VDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJvbGxl
cjo6ZW5zdXJlRWRpdGFibGVJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FwcGxp
Y2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW06CisgICAgICAgICgtW1dLQXBwbGljYXRpb25TdGF0
ZVRyYWNraW5nVmlldyBkaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRp
YWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZp
ZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyRm9yV2ViVmlld10pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50RGlkRm9jdXM6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1
clByZXZpb3VzTm9kZTphY3Rpdml0eVN0YXRlQ2hhbmdlczp1c2VyT2JqZWN0Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAg
ICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGluaXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmlu
ZFVJOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3Jl
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tl
bmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6V2ViVmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFs
R2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRD
b25uZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVTZXRDbGllbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAg
ICAgKFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VT
ZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQp
OgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAg
KFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV0tCdW5kbGVQ
YWdlT3ZlcmxheUNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tOgorICAgICAgICAoV0tCdW5kbGVQYWdl
QmFubmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Z2V0T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHA6Cisg
ICAgICAgICh3ZWJraXRXZWJFZGl0b3JDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcDoKKyAgICAgICAgKHdlYmtpdEZyYW1lR2V0
T3JDcmVhdGUpOgorICAgICAgICAod2Via2l0V2ViUGFnZUNyZWF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tOgorICAg
ICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBpbml0V2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlciBfc2V0Rm9ybURlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0
ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldENsaWVudCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ01lc3NhZ2U6OlBlbmRpbmdNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZlclRjcFNv
Y2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVVk
cFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0
ZUNsaWVudFRjcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rv
cnk6OmNyZWF0ZU5ld0Nvbm5lY3Rpb25Tb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJS
VENTb2NrZXRGYWN0b3J5OjpDcmVhdGVBc3luY1Jlc29sdmVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yOjpQbHVnaW5EZXN0cnVjdGlv
blByb3RlY3Rvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxl
VGltZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
ZWxpdmVyRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9O
ZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDEx
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZzo6UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1
YmZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1fdGV4dEF1dG9TaXppbmdBZGp1c3RtZW50VGltZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNl
TG9hZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxl
VUlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmJlZ2luUHJpbnRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmludE9wZXJhdGlvbkd0azo6cHJpbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVy
Ojp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0RyYXdpbmdBcmVhTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OlNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpw
cm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
dXBkYXRlQ1BVTW9uaXRvclN0YXRlKToKKwogMjAxOS0wOC0xMyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlciBBZ2VudCBhbmQgU2Vzc2lvbklEIHNob3Vs
ZCBiZSBnaXZlbiB0byBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gc2V0IHVwIHRoZSBjb3JyZWN0IHBy
b3h5IGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDRjNTFlOTY1ZjY4MjZiZWMz
ZWU5MmU3NTI5NTg3ZTFiMWIyZDA0M2EuLjgyYjYwMzFiMWI5YjQ2OWJhYTkwYjRhZGE4OGMxMzcw
NGM1NDI0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTktMDgt
MTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBB
ZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdl
cjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVybWluYXRlKToKKyAgICAgICAgKiBTdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OlN0
b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXAuY3BwOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREItc3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9jZi9DaGFuZ2VMb2cKaW5kZXggYzYzZWZhYmE1ZDg4NjgzYmVmYmYxNjk1OGZmMWZlMDAwNGVh
OWM2Yi4uNWRlZDIzNjZiM2FlZTExYzgzM2E4Njc5YWI4ZjU4MThiYWFhN2Y1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVl
PFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVGcm9u
dGVuZFNldHRpbmdzKToKKwogMjAxOS0wOC0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihyMjQ4NDU0KTogV0sx
IGluc3BlY3RvciBmcm9udGVuZCBjbGllbnQgZG9lc24ndCBxdWV1ZSBtZXNzYWdlcyB0byB0aGUg
ZnJvbnRlbmQgYmVmb3JlIGl0J3MgbG9hZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5k
ZXggODViZmU3ZmU3YWE0YzNmN2ZjYmIyZDcyOGRiNWRlYTdhZGFiYThmZi4uMjIzYzlmMDZkYzMw
ZWRlMTAyMTUxODQ5MzRlYmRmMTI1OWFiMzY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3Vy
ZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbToKKyAgICAg
ICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVy
czpzdGlja3lDb250YWluZXJNYXA6XSk6CisKIDIwMTktMDctMjkgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBkaWRGaW5p
c2hDb250ZW50Q2hhbmdlT2JzZXJ2aW5nIHNob3VsZCBpbmNsdWRlIHRoZSB0eXBlIG9mIGNvbnRl
bnQgY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDY4NTUzNTY2Mjg4MWU3
MTI3ODc2OWU0MTZiNDllOTgxZmE5NTdmMmIuLjRmZTk3MWM5ZWQ0MWJiYjYwNzdjNWZjODZlOWU3
NThmNTVkMzY5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBA
QAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxv
Y2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
SGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBpbml0
XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKC1bV2Vi
SGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChX
S1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkpOgorICAgICAgICAoV0tQQ0Jvb2xlYW5SZXBs
eSk6CisgICAgICAgIChXS1BDQm9vbGVhbkFuZERhdGFSZXBseSk6CisgICAgICAgIChXS1BDSW5z
dGFudGlhdGVQbHVnaW5SZXBseSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQpOgor
ICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgt
W1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBjcmVhdGVQbHVnaW5dKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tOgorICAgICAgICAoV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZSk6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmg6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBz
Y2hlZHVsZVRpbWVyV2l0aEludGVydmFsOnJlcGVhdDp0aW1lckZ1bmM6XSk6CisgICAgICAgICog
U3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW06CisgICAgICAgIChEaWRNb2RpZnlP
cmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKGFkZFJlZGlyZWN0
VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06CisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2F0dGFjaFNjcmlwdERlYnVnZ2VyXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmg6CisgICAgICAg
ICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tOgorICAgICAgICAoV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFu
Z2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgrW1dl
YlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJs
YWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJW
aWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6
YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRUZXh0SW5kaWNh
dG9yOndpdGhMaWZldGltZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgor
ICAgICAgICAoV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2No
ZWR1bGVyKToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5pdF0pOgorCiAyMDE5LTA4LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRocmVhZGlu
ZyBhc3NlcnRpb25zIHRvIFJlZkNvdW50ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRl
eCBmNTFlMDQ0MmU1NmJmNzIzYTAxYjMwZGU4OGZiYzgxNTgzMTg0NDA5Li4yZWJhNjEzOTAwN2Uy
MTM2MjFlYTEwMjQyMzVmM2EyMzA3MWU0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6Cisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmxvYWQpOgorICAgICAgICAqIFBs
dWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojp3
bmRQcm9jKToKKyAgICAgICAgKiBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJv
bWVDbGllbnQ6OldlYkNocm9tZUNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpv
cGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdo
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVy
dHlCYWcuY3BwOgorICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJv
cGVydHlCYWcpOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhp
c3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdL
UUNBOjpDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQpOgorICAg
ICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHA6CisgICAgICAgIChXZWJOb3RpZmljYXRp
b25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6
OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUpOgorICAgICAgICAoV2ViVmlldzo6ZW50ZXJW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNl
clNjcmlwdFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dy
b3VwKToKKyAgICAgICAgKFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorCiAy
MDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggM2YwZmIyZTFjZWVhZWYwNjU5
YzM0YzgyNzFiZWVjMTA4MjM3NTZlZC4uMGQ1NWZlN2UxYmI2NTFlOTgxMGNjOGIyMzk4MTg3ZjY3
ZTk5N2VmMCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTEzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXAuaDoKKyAg
ICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg6CisKIDIwMTktMDctMjQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbYm1hbGxvY10gQWRkIElzb0hl
YXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBub3QgYWxsb2NhdGluZyB0
b28gbGFyZ2UgVkEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKaW5kZXggMDdkNzA5YmExMmM4MmM4NTQ4MmQ3M2M3MjM3N2Y1MTllN2ZjMmE1Yy4uZDBlNjI1
MjgyYTg0ZjRmMzVlZWRlZDE5NWVkYjhkYzg5N2IxYTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IEpT
Q2FsbGJhY2tPYmplY3REYXRhIHsKICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKLSAgICAgICAg
ICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTUHJpdmF0ZVByb3Bl
cnR5TWFwPigpOworICAgICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8
SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7CiAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPnNl
dFByaXZhdGVQcm9wZXJ0eSh2bSwgb3duZXIsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKaW5kZXggYWUzYTZmZTNhY2Y5YzZhODAzOTRlMWQ3MzRmYTMxN2Q5MDhm
YWUyYy4uOWNhM2I0YmY0MDg1MDc1MGI4YmM0MTk0OWY3NTA0MmIzNTcyMzFlYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PiogSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+Ojphc0NhbGxiYWNrT2JqZWN0KEVuY28KIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNz
LCB2b2lkKiBkYXRhKQogICAgIDogUGFyZW50KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKLSAgICAs
IG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxsYmFja09iamVjdERh
dGE+KGRhdGEsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVjdERhdGEobWFrZVVuaXF1
ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwganNDbGFzcykpCiB7CiB9CiAKQEAgLTY3LDcg
KzY3LDcgQEAgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+
CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoVk0mIHZtLCBKU0Ns
YXNzUmVmIGpzQ2xhc3MsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogUGFyZW50KHZtLCBz
dHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpT
Q2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKKyAgICAsIG1fY2FsbGJhY2tP
YmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xh
c3MpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAppbmRl
eCBmMWM5ZDU3MDJhOGFhNjkwNDRkZmIyOTViNDcxZmNmY2JjODkwYjZiLi43ZWVjMmE5MGE0NGY4
NjBiYWEyMjc2Yjk2ZDQ1ZjJiZDY4NjE3MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDbGFzc1JlZi5jcHAKQEAgLTU5LDIxICs1OSwyMSBAQCBPcGFxdWVKU0NsYXNzOjpPcGFxdWVK
U0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBPcGFxdWVKU0NsYXNz
KgogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogICAgIGlmIChjb25zdCBKU1N0YXRpY1Zh
bHVlKiBzdGF0aWNWYWx1ZSA9IGRlZmluaXRpb24tPnN0YXRpY1ZhbHVlcykgewotICAgICAgICBt
X3N0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVl
c1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IG1ha2VVbmlxdWU8T3BhcXVlSlND
bGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3RhdGljVmFsdWUtPm5h
bWUpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0
YXRpY1ZhbHVlLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghdmFsdWVOYW1lLmlzTnVsbCgpKQot
ICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1lLmltcGwoKSwgc3Rk
OjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVydHks
IHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVl
TmFtZSkpOworICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1lLmlt
cGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVy
dHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJpYnV0ZXMsIHZh
bHVlTmFtZSkpOwogICAgICAgICAgICAgKytzdGF0aWNWYWx1ZTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGlmIChjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5jdGlvbiA9IGRlZmlu
aXRpb24tPnN0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IHN0
ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAg
ICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1
bmN0aW9uc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3RhdGljRnVuY3Rpb24tPm5hbWUpIHsK
ICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRp
Y0Z1bmN0aW9uLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghZnVuY3Rpb25OYW1lLmlzTnVsbCgp
KQotICAgICAgICAgICAgICAgIG1fc3RhdGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmlt
cGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihzdGF0aWNGdW5jdGlv
bi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0aW9uLT5hdHRyaWJ1dGVzKSk7CisgICAgICAg
ICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBtYWtl
VW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5jYWxsQXNGdW5jdGlv
biwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgICAgICsrc3RhdGljRnVu
Y3Rpb247CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjgsMjEgKzEyOCwyMSBAQCBPcGFxdWVKU0Ns
YXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShKU0M6OlZNJiwgT3BhcXVl
SlNDbGFzcyoganNDbAogICAgIDogbV9jbGFzcyhqc0NsYXNzKQogewogICAgIGlmIChqc0NsYXNz
LT5tX3N0YXRpY1ZhbHVlcykgewotICAgICAgICBzdGF0aWNWYWx1ZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAgICAgICAgc3RhdGljVmFs
dWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CiAgICAg
ICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
anNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmVuZCgpOwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xh
c3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRp
Y1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQo
IWl0LT5rZXktPmlzQXRvbSgpKTsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBpdC0+
a2V5LT5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKHZhbHVl
TmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQtPnZhbHVl
LT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5hdHRyaWJ1
dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKHZhbHVlTmFt
ZS5pbXBsKCksIG1ha2VVbmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQtPnZhbHVlLT5nZXRQcm9w
ZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1
ZU5hbWUpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChqc0NsYXNzLT5tX3N0YXRpY0Z1
bmN0aW9ucykgewotICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9w
YXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAgICAgc3RhdGljRnVuY3Rp
b25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CiAg
ICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0ganNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMtPmVuZCgpOwogICAgICAgICBmb3IgKE9w
YXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0Ns
YXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKLSAgICAgICAgICAgIHN0YXRpY0Z1
bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0
YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rpb24sIGl0LT52YWx1ZS0+
YXR0cmlidXRlcykpOworICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5hZGQoaXQtPmtleS0+
aXNvbGF0ZWRDb3B5KCksIG1ha2VVbmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oaXQtPnZhbHVl
LT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzKSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBPcGFx
dWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHREYXRhID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5vcGFxdWVKU0NsYXNzRGF0YSgpLmFkZCh0aGlzLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFjb250ZXh0RGF0YSkKLSAgICAgICAgY29udGV4
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4oZXhlYy0+
dm0oKSwgdGhpcyk7CisgICAgICAgIGNvbnRleHREYXRhID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0Ns
YXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwogICAgIHJldHVybiAqY29udGV4dERh
dGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5n
Q29uc3RyYWludFByaXZhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKaW5kZXggZDllZTY3NDAzNDljZmVmZGZiY2MwZDMxMDk0
ZjFmNGRlNWE1MmMxZS4uYmE0YTVhMTY2OTdhZjVmOGE5NzIyZTU3NDY5ZTM5NGQ5NzkwNDJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25z
dHJhaW50UHJpdmF0ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU0NvbnRleHRHcm91cEFk
ZE1hcmtpbmdDb25zdHJhaW50KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBKU01hcmtpbmdDb25z
dHIKICAgICAvLyBlbHNlIGdldHMgbWFya2VkLgogICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZv
bGF0aWxpdHkgPSBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVkQnlNYXJraW5nOwogICAgIAot
ICAgIGF1dG8gY29uc3RyYWludCA9IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0
cmFpbnQ+KAorICAgIGF1dG8gY29uc3RyYWludCA9IG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0Nv
bnN0cmFpbnQ+KAogICAgICAgICB0b0NTdHJpbmcoIkFtYyIsIGNvbnN0cmFpbnRJbmRleCwgIigi
LCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWludENhbGxiYWNrKSksICIp
IiksCiAgICAgICAgIHRvQ1N0cmluZygiQVBJIE1hcmtpbmcgQ29uc3RyYWludCAjIiwgY29uc3Ry
YWludEluZGV4LCAiICgiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWlu
dENhbGxiYWNrKSksICIsICIsIFJhd1BvaW50ZXIodXNlckRhdGEpLCAiKSIpLAogICAgICAgICBb
Y29uc3RyYWludENhbGxiYWNrLCB1c2VyRGF0YV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1dyYXBwZXJNYXAubW0KaW5kZXggZDQ2OWI3NWEzMWYwZWZjYTlkMDdhYmIwM2IwYmU2NjE2MWIz
OTU2Ny4uNGI1OTkwNzNmZTc2YjQ4NjQ0MzY5OWFiZGNiMzRjNDE2NGJjMmUzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYwNiw3ICs2MDYsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRS
ZWYpY29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0g
TlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBl
cnNvbmFsaXR5OwogICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9j
XSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25z
IGNhcGFjaXR5OjBdOwogCi0gICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4o
dG9KUyhjb250ZXh0KS0+dm0oKSk7CisgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gbWFrZVVuaXF1
ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4o
dG9KUyhjb250ZXh0KS0+dm0oKSk7CiAKICAgICBBU1NFUlQoIXRvSlNHbG9iYWxPYmplY3QoY29u
dGV4dCktPndyYXBwZXJNYXAoKSk7CiAgICAgdG9KU0dsb2JhbE9iamVjdChjb250ZXh0KS0+c2V0
V3JhcHBlck1hcChzZWxmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakND
YWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IGVlOTMyODIxZWY3NGJkNjg5MWFlOGYyOWZhZDdiYmE1
YWZlYTBjYmMuLjczY2I0MjcwNDM4MTgzMWU4MTlkOWQ5NDNlYjllNTQ0MDMwOTZmOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQpA
QCAtMTk1LDE4ICsxOTUsMTggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZURv
dWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50RG91YmxlPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50RG91YmxlPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVC
b29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3Vt
ZW50Qm9vbGVhbj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgp
CkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudElk
PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNo
YXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpCkBAIC0yMjgsMTkgKzIyOCwxOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAoY2xzID09IFtKU1Zh
bHVlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
QXJndW1lbnRKU1ZhbHVlPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudEpTVmFsdWU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TU3RyaW5nIGNsYXNz
XSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRO
U1N0cmluZz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1l
bnROU1N0cmluZz4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNOdW1iZXIgY2xhc3NdKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TTnVtYmVy
PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TTnVt
YmVyPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0RhdGUgY2xhc3NdKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RhdGU+KCk7CiAgICAg
ICAgIGlmIChjbHMgPT0gW05TQXJyYXkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKICAgICAgICAgaWYgKGNs
cyA9PSBbTlNEaWN0aW9uYXJ5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEaWN0aW9uYXJ5PigpOwogCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqKQpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFN0
cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChOU0ludm9jYXRpb24gKmlu
dm9jYXRpb24gPSB2YWx1ZVRvVHlwZUludm9jYXRpb25Gb3IoY29weSkpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3RydWN0PihpbnZvY2F0aW9u
LCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRT
dHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiB9OwpAQCAtMzM1LDQ1ICszMzUsNDUgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBl
RG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
UmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tS
ZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVC
b29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVz
dWx0Qm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRC
b29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lkKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lkPigpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVN0cnVjdChjb25zdCBjaGFyKiBiZWdpbiwgY29uc3Qg
Y2hhciogZW5kKQogICAgIHsKICAgICAgICAgU3RyaW5nUmFuZ2UgY29weShiZWdpbiwgZW5kKTsK
ICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IHR5cGVUb1ZhbHVlSW52b2Nh
dGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxi
YWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMg
SlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JJbnZvY2F0aW9uKEpTQ29udGV4dCAq
Y29udGV4dCwgTlNJbnZvYwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKICAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKLSAgICBhdXRvIGltcGwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihpbnZvY2F0aW9uLCB0eXBl
LCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUocmVzdWx0KSk7Cisg
ICAgYXV0byBpbXBsID0gbWFrZVVuaXF1ZTxKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4o
aW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZN
b3ZlKHJlc3VsdCkpOwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IGltcGwtPm5hbWUoKTsKICAg
ICByZXR1cm4gdG9SZWYoSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG5hbWUsIFdURk1vdmUoaW1wbCkpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCBlMDFlOTcw
YzdmNTgwMzY1NjE4ZWYxZGFiODU1NDRkNzA0ZjliNDdhLi43OGQ3NjU1ZmY4MDc3NjBkNDYwOGE2
MTdlNTdjOTBmMTU0Mjc5OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ0NvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHZvaWQganNjQ29udGV4
dFNldFZpcnR1YWxNYWNoaW5lKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdSZWZQdHI8SlNDVmlydHVh
bE0KICAgICAgICAgICAgIHByaXYtPmpzQ29udGV4dCA9IEpTUmV0YWluUHRyPEpTR2xvYmFsQ29u
dGV4dFJlZj4oQWRvcHQsIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoanNjVmlydHVhbE1h
Y2hpbmVHZXRDb250ZXh0R3JvdXAocHJpdi0+dm0uZ2V0KCkpLCBudWxscHRyKSk7CiAgICAgICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlNHbG9iYWxPYmplY3QocHJpdi0+anNDb250ZXh0Lmdl
dCgpKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPndyYXBwZXJNYXAoKSkKLSAgICAgICAg
ICAgIGdsb2JhbE9iamVjdC0+c2V0V3JhcHBlck1hcChzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V3Jh
cHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgpKSk7CisgICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldFdyYXBwZXJNYXAobWFrZVVuaXF1ZTxKU0M6OldyYXBwZXJNYXA+KHByaXYtPmpzQ29u
dGV4dC5nZXQoKSkpOwogICAgICAgICBqc2NWaXJ0dWFsTWFjaGluZUFkZENvbnRleHQocHJpdi0+
dm0uZ2V0KCksIGNvbnRleHQpOwogICAgIH0gZWxzZSBpZiAocHJpdi0+dm0pIHsKICAgICAgICAg
QVNTRVJUKHByaXYtPmpzQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKaW5kZXggMTFiYjdjMGI4NzM3ZGI2N2RkMTdkY2QyNGY3
MDI5NDM0NDY5YTgwMy4uZjUyM2VhNDE5OWY4YWJkNzMyZjc3YjYyODE0MTIwMTM0YmI4YmVhOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFdyYXBwZXJNYXA6OldyYXBw
ZXJNYXAoSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCkKLSAgICA6IG1fY2FjaGVkSlNXcmFw
cGVycyhzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpTT2Jq
ZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKKyAgICA6IG1fY2FjaGVkSlNXcmFwcGVycyht
YWtlVW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhq
c0NvbnRleHQpLT52bSgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHAKaW5kZXggYTc1ZjU4ZGMxNDZiM2I2NDk1Y2ViMTY3YWRmNGRh
YmZmMDZiMGM4OS4uZGE0NzcwNTFmMzQ1ZTA3MTY4ZmM3ZDA2ZTBjN2Y1MjYzMTE4NmU2MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCkBAIC0x
MzQsNyArMTM0LDcgQEAgUGFnZSogU3RhY2s6OmVuc3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcykK
ICAgICBpZiAoTElLRUxZKGl0ICE9IG1fcGFnZXMuZW5kKCkpKQogICAgICAgICBtX2xhc3RBY2Nl
c3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYWdlPiBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihi
YXNlQWRkcmVzcyk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFzZUFkZHJl
c3MsIFdURk1vdmUocGFnZSkpOwogICAgICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKaW5kZXggMmM5YzNiMGRlODllYjNlMzgzZjRjYmRjZjIxMmQyNjhjMWMx
OWRiYS4uN2Y2ODU4NmMxYzAyODljMGEzMjUyMmZkZTllMDY3ZGYxZjQxZTIxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTEyNDEsNyArMTI0MSw3IEBA
IGNsYXNzIExvd2VyVG9BaXIgewogICAgIHZvaWQgcHJpbnQoVmFsdWUqIG9yaWdpbiwgQXJndW1l
bnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgYXV0byBwcmludExpc3QgPSBQcmlu
dGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0KGFyZ3VtZW50cy4uLik7Ci0gICAgICAgIGF1dG8gcHJp
bnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3Bl
Y2lhbChzdGQ6Om1ha2VfdW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmludExpc3QpKSk7Cisg
ICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwq
PihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmludExp
c3QpKSk7CiAgICAgICAgIEluc3QgaW5zdChBaXI6OlBhdGNoLCBvcmlnaW4sIEFyZzo6c3BlY2lh
bChwcmludFNwZWNpYWwpKTsKICAgICAgICAgUHJpbnRlcjo6YXBwZW5kQWlyQXJncyhpbnN0LCBz
dGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKICAgICAgICAgYXBwZW5kKFdU
Rk1vdmUoaW5zdCkpOwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgY2xhc3MgTG93ZXJUb0FpciB7CiAg
ICAgewogICAgICAgICBpZiAoIWZpZWxkKSB7CiAgICAgICAgICAgICBmaWVsZCA9IHN0YXRpY19j
YXN0PFQqPigKLSAgICAgICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5p
cXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKSk7CisgICAgICAg
ICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJn
dW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmaWVs
ZDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAppbmRleCBm
ZmNiMmQ0ZTI3MTQ0Mjk3MGU1NDY0MzY2NzBmN2YyOWRlYjFhYjFjLi4yZWNjZGFjMDQ5ZTY4ZDEx
M2UyM2Y5N2YyNDM1M2E1ZDRhYWEzYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CiBQcm9jZWR1cmU6OlByb2NlZHVyZSgpCiAgICAgOiBtX2NmZyhuZXcgQ0ZHKCp0aGlzKSkK
ICAgICAsIG1fbGFzdFBoYXNlTmFtZSgiaW5pdGlhbCIpCi0gICAgLCBtX2J5cHJvZHVjdHMoc3Rk
OjptYWtlX3VuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQorICAgICwgbV9ieXByb2R1Y3RzKG1h
a2VVbmlxdWU8T3BhcXVlQnlwcm9kdWN0cz4oKSkKICAgICAsIG1fY29kZShuZXcgQWlyOjpDb2Rl
KCp0aGlzKSkKIHsKICAgICBtX2NvZGUtPnNldE51bUVudHJ5cG9pbnRzKG1fbnVtRW50cnlwb2lu
dHMpOwpAQCAtMzExLDI4ICszMTEsMjggQEAgdm9pZCBQcm9jZWR1cmU6OmRlbGV0ZU9ycGhhbnMo
KQogRG9taW5hdG9ycyYgUHJvY2VkdXJlOjpkb21pbmF0b3JzKCkKIHsKICAgICBpZiAoIW1fZG9t
aW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxEb21pbmF0
b3JzPigqdGhpcyk7CisgICAgICAgIG1fZG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8RG9taW5hdG9y
cz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9kb21pbmF0b3JzOwogfQogCiBOYXR1cmFsTG9vcHMm
IFByb2NlZHVyZTo6bmF0dXJhbExvb3BzKCkKIHsKICAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQot
ICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigq
dGhpcyk7CisgICAgICAgIG1fbmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxOYXR1cmFsTG9vcHM+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOwogfQogCiBCYWNrd2FyZHNDRkcm
IFByb2NlZHVyZTo6YmFja3dhcmRzQ0ZHKCkKIHsKICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZHKQot
ICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZHPigq
dGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNDRkc+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQogCiBCYWNrd2FyZHNEb21p
bmF0b3JzJiBQcm9jZWR1cmU6OmJhY2t3YXJkc0RvbWluYXRvcnMoKQogewogICAgIGlmICghbV9i
YWNrd2FyZHNEb21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNr
d2FyZHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTM1OCw3ICszNTgs
NyBAQCB2b2lkKiBQcm9jZWR1cmU6OmFkZERhdGFTZWN0aW9uKHNpemVfdCBzaXplKQogewogICAg
IGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YVNlY3Rpb24+
KHNpemUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4gZGF0YVNlY3Rpb24gPSBt
YWtlVW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKICAgICB2b2lkKiByZXN1bHQgPSBkYXRhU2Vj
dGlvbi0+ZGF0YSgpOwogICAgIG1fYnlwcm9kdWN0cy0+YWRkKFdURk1vdmUoZGF0YVNlY3Rpb24p
KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29k
ZS5jcHAKaW5kZXggMzNmOGFiZmVmYmMxZjhmOTE2NTQ1YTNiZGNhMTk2YjBjYzY2YzM5OC4uZDVk
NjljMzBhNTk5MTc1ZjI4MTQ4MzYyODYzNmZjYjc3MDY4MDE2NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgQ0NhbGxTcGVjaWFs
KiBDb2RlOjpjQ2FsbFNwZWNpYWwoKQogewogICAgIGlmICghbV9jQ2FsbFNwZWNpYWwpIHsKICAg
ICAgICAgbV9jQ2FsbFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxDQ2FsbFNwZWNpYWwqPigKLSAgICAg
ICAgICAgIGFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbFNwZWNpYWw+KCkpKTsKKyAg
ICAgICAgICAgIGFkZFNwZWNpYWwobWFrZVVuaXF1ZTxDQ2FsbFNwZWNpYWw+KCkpKTsKICAgICB9
CiAKICAgICByZXR1cm4gbV9jQ2FsbFNwZWNpYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGYzNmI5YjJmZTY2ODE2MGI4ODk5YjBjNTBiMzE5
N2Q3NTg4MjRmODAuLjk1Y2FhMDA0ZDhlYjM5MjMzMGUxY2NiYjYzOWE1Y2VlNzljYmM3OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCkBAIC0xMDAs
NyArMTAwLDcgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAg
ICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvZGUubV9nZW5lcmF0
ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9j
YXRlUmVnaXN0ZXJzPihjb2RlKTsKKyAgICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVS
ZWdpc3RlcnMgPSBtYWtlVW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM+KGNvZGUp
OwogICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycy0+cHJlcGFyZUZv
ckdlbmVyYXRpb24oKTsKIAogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci90ZXN0YWlyLmNwcAppbmRleCBlZjE1NDRjMDdiYjMyYTkwMzdmMmNiNzFlMTVlNzRhOWJl
NjFiZjk0Li4zZGNhMjk2Nzg4YjAwMTA2OGUwMWY0MjNlMTE2YzdjMmE0ZTdkYTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gY29tcGlsZShCMzo6UHJvY2VkdXJlJiBwcm9j
KQogICAgIGdlbmVyYXRlKHByb2MuY29kZSgpLCBqaXQpOwogICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcihqaXQsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNv
bXBpbGF0aW9uPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAg
ICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0
YWlyIGNvbXBpbGF0aW9uIiksIHByb2MucmVsZWFzZUJ5cHJvZHVjdHMoKSk7CiB9CiAKQEAgLTE4
NTUsNyArMTg1NSw3IEBAIHZvaWQgdGVzdEludmFsaWRhdGVDYWNoZWRUZW1wUmVnaXN0ZXJzKCkK
ICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjpiaWdJbW0oYml0d2lzZV9jYXN0
PGludHB0cl90PigmdGhpbmdzKSksIGJhc2UpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIHBhdGNo
UG9pbnQxUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRj
aHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRj
aHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNp
YWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkp
OwogCiAgICAgLy8gSW4gUGF0Y2hwb2ludCwgTG9hZCB0aGluZ3NbMF0gLT4gdG1wLiBUaGlzIHdp
bGwgbWF0ZXJpYWxpemUgdGhlIGFkZHJlc3MgaW4geDE3IChkYXRhTWVtb3J5UmVnaXN0ZXIpLgog
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQxID0gcGF0Y2hQb2ludDFSb290LT5h
cHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4o
KSk7CkBAIC0xOTMwLDcgKzE5MzAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZCgpCiAg
ICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJl
Z2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lh
bCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFk
ZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6
OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1
ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2
b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDIoKQogICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZv
Ojphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQpOwogCi0gICAgQjM6
OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjpt
YWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNp
YWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBh
dGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9v
dC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3Jp
Z2luKCkpOwpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQz
KCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2Mu
cGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRT
cGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRT
cGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNv
ZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAg
ICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuaAppbmRleCAxNTVjYTRhYjQ3MGIwMTQ0MmFkOTU0M2E4YWUxZmMxZmM1OWY3ZTNhLi4x
YzdhZDBmOTRlMDZiOGMzMWJmZTdjYzk0ZDA1NTJjNDc3OTYwN2U3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiMy5oCkBAIC0xODksNyArMTg5LDcgQEAgZXh0ZXJuIExvY2sgY3Jhc2hMb2NrOwog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY29tcGlsZVByb2MoUHJvY2VkdXJl
JiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsID0gT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2
ZWwoKSkKIHsKICAgICBwcm9jZWR1cmUuc2V0T3B0TGV2ZWwob3B0TGV2ZWwpOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1cmUpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJl
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBjMTA4
NTlhY2VkM2RiNzhiNjY0OTc2YTA4YjhlNWI0OGQ2NTJiMmYzLi43N2ZiNjVkYTBiN2EwNmM3ZDY1
OGJhYmRiNGU1MTA4YTc5MTdlZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC04NTMsNyArODUzLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIHN0
YXRlLnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcihzcGlsbFN0YXRlKTsKIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWFjY2Vzcy5jYWxsTGlua0luZm8oKSk7Ci0gICAgICAgICAg
ICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rSW5mbz4o
KTsKKyAgICAgICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IG1ha2VVbmlxdWU8Q2FsbExp
bmtJbmZvPigpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2VuZXJhdGVkIGEgcG9s
eW1vcnBoaWMgY2FsbCBzdHViIHRoYXQganVtcGVkIGJhY2sgdG8gdGhlIGdldHRlcgogICAgICAg
ICAgICAgLy8gc3R1Yiwgd2hpY2ggdGhlbiBqdW1wZWQgYmFjayB0byB0aGUgbWFpbiBjb2RlLCB0
aGVuIHdlJ2QgaGF2ZSBhIHJlYWNoYWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKaW5kZXggMmJk
OWZlNjUxOTlkMDdmMTczZTM4MzBkYzc0ZTQ2N2ViOWQ1NDFmYy4uOTI1N2ZjMjI2NjUyOWY4NjEz
N2Q1ZGFkOGM5MjQ5NzE4MzkwNDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCkBAIC0xMDMsNyAr
MTAzLDcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyA6IHB1Ymxp
YyBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6U2xvd1AKICAgICB2b2lkIEFjY2Vzc0Nhc2VTbmlw
cGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJv
bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBl
IHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvID0gaml0LmxhYmVsKCk7IFwKLSAgICAgICAgbV9nZW5l
cmF0b3JzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhB
cmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlw
ZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAor
ICAgICAgICBtX2dlbmVyYXRvcnMuYXBwZW5kKG1ha2VVbmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJh
dG9yV2l0aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBS
ZXN1bHRUeXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJn
cykpOyBcCiAgICAgfSBcCiAKIFNOSVBQRVRfU0xPV19QQVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FM
TF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCAzM2JiMGMwNjYzNTM4MWU4OThmNjVhODc0ZjFm
MzZhOGM5NDgyM2FmLi4xMGM2NWJiOWRkNzA5YTlhZjdhYmE2Y2ViOGE5YjczNTk3NzE2NDFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcApAQCAtNjUsMTUgKzY1LDE1IEBAIHZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAg
ICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Js
b2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CiAKLSAgICBhdXRv
IGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFz
aWNCbG9jazo6RW50cnlCbG9jayk7Ci0gICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7
CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29k
ZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZmlyc3RCbG9jayA9IG1ha2VVbmlx
dWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOwog
ICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCiAgICAgYXBw
ZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVu
dCA9IGZpcnN0QmxvY2suZ2V0KCk7CiAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2Nr
KSk7CiAKLSAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9j
az4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOworICAgIGF1dG8gZXhpdCA9IG1ha2VV
bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7
CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAKQEAgLTg0LDcg
Kzg0LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBib29sIGNyZWF0ZWRCbG9j
ayA9IGZhbHNlOwogICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29kZSBpcyBhIGp1bXAg
dGFyZ2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgogICAg
ICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZz
ZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7Ci0gICAgICAgICAgICBhdXRvIG5ld0Js
b2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGluc3RydWN0aW9uKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9j
az4oaW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwog
ICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAg
Y3JlYXRlZEJsb2NrID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDhkYWMxNTg1ZmFiMmI5OThjMWU1ZDg4NzUyYmExMmRm
NmRhZGJkZS4uMzkzZjE4MjRlNDFhNGJlYjUxNGM2MmE2OTZmMzNhODM3MjQ5NWNkZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTI2
NSw3ICsyNjUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKIAogdm9p
ZCBDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEmIHNodWZmbGVEYXRhKQogewotICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKKyAgICBtX2ZyYW1l
U2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0
YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBlZjFjYWJmYTcxOGIwODBkN2YzZTg2MzdmOWY5NGY2
MDU4NmVlNGU4Li4zOWEyM2I0YzdmNDdkOGZjZTVlMzBlZWNhNTUwZTc3ZGFkMzE1ODZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTMzNyw3
ICsxMzM3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQog
Q29kZUJsb2NrOjpKSVREYXRhJiBDb2RlQmxvY2s6OmVuc3VyZUpJVERhdGFTbG93KGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYpCiB7CiAgICAgQVNTRVJUKCFtX2ppdERhdGEpOwotICAgIG1faml0
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGF0YT4oKTsKKyAgICBtX2ppdERhdGEgPSBtYWtl
VW5pcXVlPEpJVERhdGE+KCk7CiAgICAgcmV0dXJuICptX2ppdERhdGE7CiB9CiAKQEAgLTE1NTAs
NyArMTU1MCw3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6cmFyZUNhc2VQcm9maWxlQ291bnRGb3JC
eXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrCiB2b2lkIENvZGVCbG9jazo6c2V0
Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogewog
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBlbnN1cmVKSVREYXRh
KGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3Rl
ckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CisgICAgZW5zdXJlSklURGF0YShs
b2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8UmVnaXN0ZXJBdE9mZnNl
dExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOwogfQogCiB2b2lkIENvZGVCbG9jazo6c2V0Q2Fs
bGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJl
Z2lzdGVyQXRPZmZzZXRMaXN0KQpAQCAtMTc5MCw3ICsxNzkwLDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXRTbG93KGNvbnN0
IE9wQ2F0Y2gKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytpKQog
ICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
KTsKIAotICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgIGF1dG8gcHJvZmlsZXMg
PSBtYWtlVW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5z
aXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5tX3NpemUgPT0gbGl2ZU9wZXJh
bmRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3Np
emU7ICsraSkKICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9
IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCA4NzA2OGJhNjVkZDg1YzIzZmJlNGE0OTBlOTc0YTcyODFmMjU2
MDRjLi4zMTQzOGUwYWM1MDY5YjI3NDk2OTg4ODZhYjExMjAwNzZiY2I3M2IxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC05NDMsNyArOTQzLDcgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0
YUlmTmVjZXNzYXJ5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkgewotICAgICAg
ICAgICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAg
ICAgICAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAg
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIG1fY2F0Y2hQcm9maWxlcyBjYW4gYmUgdG91
Y2hlZCBmcm9tIGNvbXBpbGVyIHRocmVhZHMuCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RG
TW92ZShyYXJlRGF0YSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4IDJkOTQzMWNmMGIxNDRmYTNhMmMyMjFh
NjZlOTQwNzBjNzc1MGUwZTAuLmIxYTAxZmZhNGQ5MzQ4ZmVjYjI0Yzk2ODhiYzgwMDUyZjkzODg2
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9m
aWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIEV4aXRQcm9maWxlOjphZGQoQ29kZUJsb2Nr
KiBvd25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAvLyBJZiB3ZSd2ZSBu
ZXZlciBzZWVuIGFueSBmcmVxdWVudCBleGl0cyB0aGVuIGNyZWF0ZSB0aGUgbGlzdCBhbmQgcHV0
IHRoaXMgc2l0ZQogICAgIC8vIGludG8gaXQuCiAgICAgaWYgKCFwcm9maWxlLm1fZnJlcXVlbnRF
eGl0U2l0ZXMpIHsKLSAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CisgICAgICAgIHByb2ZpbGUu
bV9mcmVxdWVudEV4aXRTaXRlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+
PigpOwogICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMtPmFwcGVuZChzaXRlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcApp
bmRleCA0ZjQ4YTFkNmM5ODcyMmU1YWMyZWNlODdlNTA0MDIzMmY5YTVkNmIxLi40ZmIxMTU3MzAw
M2I1MmVmZDlhODY2ZmIzYmRmNzc1MDk4Y2VmYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6
Y29tcGlsYXRpb25EaWRDb21wbGV0ZShDb2RlQmxvY2sqLCBDb2RlQmxvY2sqLAogVmVjdG9yPERl
ZmVycmVkU291cmNlRHVtcD4mIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6ZW5zdXJlRGVm
ZXJyZWRTb3VyY2VEdW1wKCkKIHsKICAgICBpZiAoIW1fZGVmZXJyZWRTb3VyY2VEdW1wKQotICAg
ICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPERlZmVy
cmVkU291cmNlRHVtcD4+KCk7CisgICAgICAgIG1fZGVmZXJyZWRTb3VyY2VEdW1wID0gbWFrZVVu
aXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPj4oKTsKICAgICByZXR1cm4gKm1fZGVmZXJy
ZWRTb3VyY2VEdW1wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggZGI5YWQxNjBhYzI4MTMwZjM5ODQxZmYzYmZlYjMyYjY4
M2RkZWFkNi4uZGY0ZDc3Y2UzZjYzYjUyMDA3NTU0NGM0MWExNmNiMjMxZDdkZmE2NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcApAQCAt
MjQzLDcgKzI0Myw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6Okdl
dHRlcjogewotICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3Rh
dHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gYWNjZXNzLmFzPEdldHRlclNldHRlckFj
Y2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZvKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpj
YWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgY2Fs
bEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRWYXJpYW50LmNwcAppbmRleCBmYzFmNDYwZGU5NjU0MWQ4ZmEwOTljYmI0NWYyMzA5YzJh
MzMzODBmLi5lZDhkNDkzZjdlZTZmMWRhMmI5MDlhZDU3YzYyNzcxODEzYzJkNmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgR2V0QnlJZFZhcmlhbnQmIEdldEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0o
Y29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQogICAgIG1fY3VzdG9tQWNjZXNzb3JHZXR0ZXIg
PSBvdGhlci5tX2N1c3RvbUFjY2Vzc29yR2V0dGVyOwogICAgIG1fZG9tQXR0cmlidXRlID0gb3Ro
ZXIubV9kb21BdHRyaWJ1dGU7CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtTdGF0dXMpCi0gICAg
ICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPigq
b3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBtYWtl
VW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CiAgICAgZWxz
ZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICByZXR1cm4gKnRoaXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcAppbmRleCAwOTI5ZDZmYjQxMjY3NGVkN2YyMDQwNDVmYjQyNWVi
N2QzOGQzYzkzLi42ZWViMTQ1YjMzNzk2NjJhZjFjMTUwMDE5MDc2NzI3YTM5ZWUyYmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUqIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKAogICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
JiBrZXkpCiB7CiAgICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7CisgICAgICAgIG1fZGF0YSA9
IG1ha2VVbmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICBpZiAobV9kYXRhLT5hdChpKS5rZXkoKSA9PSBrZXkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCmlu
ZGV4IGI0OWU0ZTI0MmU1MmYwODEzMTVlNDhmYjFlMWJjYzI5N2U1MjhhZTAuLmExZWNiOTRkZDBk
MTg2NzA4NjM1MmY1MmI1YjU4YzMxOTNlZWNmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4gY2xvbmUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKICAgICB9CiAKICAgICBj
b25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jaGFpbjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHAKaW5kZXggMjJmNDU1ODE0Yjg0YWY0ZmU3NGNhZjIzNDAxZDMwYWRhZGFlNWM2ZS4u
M2IzMDIzMzlmMDM1MGRhYzQyOGYzZjA0Y2M3MzUyYTNhZTUyMWI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC02
MTYsNyArNjE2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6
cmVnZW5lcmF0ZSgKICAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgY29kZUJsb2NrVGhhdE93
bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsK
ICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CiAgICAgaWYg
KCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5j
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1v
dmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IG1h
a2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFr
UmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAppbmRleCBjMmQ5NTMyMGNlYmQ1NmRiZGM5M2VlYmQ2YzMxNDBhN2RmN2NjMjA5Li5kNjQyYmNj
ZmU3OTc2NmM1Mjc5YmJjODEwODcwMWViN2Y4NTgyNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxleEdldFN0YXR1czo6SW5s
aW5lYWJsZTogewogICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtT
dGF0dXM+IGNhbGxMaW5rU3RhdHVzID0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtl
VW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4o
KS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxMaW5rU3Rh
dHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVE
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
VmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCmluZGV4IDVkNmIyOTA0NWNhNjc1YzU2ZmE3MWQ1NDc1YTExNWIyZGY2ZjNjNWUuLjcy
YzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZlNjM2MmY3MmU2YzBhMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcApAQCAtNDYsNyArNDYs
NyBAQCBQdXRCeUlkVmFyaWFudCYgUHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBQdXRC
eUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jb25kaXRpb25TZXQgPSBvdGhlci5tX2NvbmRpdGlv
blNldDsKICAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zmc2V0OwogICAgIGlmIChvdGhlci5tX2Nh
bGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOworICAgICAgICBtX2Nh
bGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExp
bmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG51bGxwdHI7
CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IDk2ZDIyZWNmYTBhNGM3NTZlZGZmNjFmMDAx
M2Y3MjU4ZTdkM2ZiZDUuLjUzZjIwOGJjYWRlZDNkZWEyZGVlMThhMGU4OTYwNWM0OTBhMTk1YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0
dXNlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0
dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAKIENhbGxMaW5rU3RhdHVzKiBSZWNvcmRl
ZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1
c1B0ciA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CiAgICAgQ2FsbExpbmtT
dGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBjYWxscy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTUzLDcgKzUzLDcgQEAgQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6
OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4KIAogR2V0QnlJ
ZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0
byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7Cisg
ICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7CiAg
ICAgR2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGdldHMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAg
IHJldHVybiByZXN1bHQ7CkBAIC02MSw3ICs2MSw3IEBAIEdldEJ5SWRTdGF0dXMqIFJlY29yZGVk
U3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwK
ICAgICAKIFB1dEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgUHV0QnlJZFN0YXR1cyYgc3RhdHVz
KQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQdXRCeUlkU3RhdHVz
PihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxQdXRCeUlkU3RhdHVz
PihzdGF0dXMpOwogICAgIFB1dEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsK
ICAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1
c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjksNyArNjksNyBAQCBQdXRCeUlkU3Rh
dHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sCiAKIEluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlk
U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEluQnlJZFN0YXR1cyYg
c3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbkJ5SWRT
dGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEluQnlJZFN0
YXR1cz4oc3RhdHVzKTsKICAgICBJbkJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQo
KTsKICAgICBpbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKaW5kZXggMzBhMWYwNTUyNTllM2RlZDFhNzE2OGVlMzUyNmY3MmMwODRiZWU1YS4u
ZmNjMjkxMTgwMjQ0ZTBiMzIyOWUyZmQ3NjMwMDdiZTc5YTg3NDFjZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJ1Y3R1cmVTdHViQ2xl
YXJpbmdXYXRjaHBvaW50KiBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJl
ZmVyZW5jZQogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24mIGtleSkKIHsKICAgICBpZiAoIWhvbGRlclJlZikKLSAgICAgICAgaG9s
ZGVyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+
KGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBob2xkZXJSZWYgPSBtYWtlVW5pcXVlPFdh
dGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJsb2NrLCBzdHViSW5mbyk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fY29kZUJsb2NrID09IGNvZGVCbG9j
ayk7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fc3R1YkluZm8gPT0gc3R1YkluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKaW5kZXggNzIyMmQ0ODJhZDFlNWUyODZjZWY1OWQ0ZmYxZTFmNWViMDcxMDc4ZC4uNDkx
OTVkMTU3MjFkMmNkYTRmNzQ4YWU4ZGJlMmFmMDA5YTI4YTdhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0xNjAs
NyArMTYwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3Jw
aGljQWNjZXNzPiBhY2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigp
OworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3Mg
PSBtYWtlVW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsK
ICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggZTAwNmQxNmI5YjhhMGZjMzBmMDQzM2NkZTYwMmVj
YzNiMTY4ZDQyZS4uMmM5YTBiMzAxZWIwOThlMTE1ZWYxZTM2YjEyN2JlMjllM2FiZGEyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBVbmxp
bmtlZENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coQ29kZUJsb2NrKiBjb2QKICAgICAg
ICAgaWYgKCFtX2xpdmVuZXNzKSB7CiAgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIGNoYW5jZSB0
d28gY29tcGlsZXIgdGhyZWFkcyByYWNlZCB0byB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAg
Ly8gR3JhYmJpbmcgdGhlIGxvY2sgYWJvdmUgZGVmZW5kcyBhZ2FpbnN0IGNvbXB1dGluZyBsaXZl
bmVzcyB0d2ljZS4KLSAgICAgICAgICAgIG1fbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKKyAgICAgICAgICAgIG1fbGl2ZW5l
c3MgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKICAg
ICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNDM3MDk1MTllYjYxNmUyNjUxMDZlZjFkNTUy
OTYxN2Q2NDVjOWJjOS4uNTEyNTM2YzBkNDQ4NTdhNGNhNzZlODEzZmUxNDgwM2E5NzNmZmE1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKQEAgLTQwMiw3ICs0MDIsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7CiAgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKCpoZWFwKCksIGNlbGxMb2NrKCkpOwot
ICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7Cisg
ICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggZmJlYzlmNzJjYTJmZDFh
MThiYWNiMDczZTY4NzI1NGI3MGI5ZWJlMS4uNDlkOWQyZmQzZTZmZTlmYjRiNTI3ZjY3N2FiZDVi
ZDRhNTEyMjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0yNzUsNyArMjc1LDcg
QEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2Nr
cyhWTSYgdm0pCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQogewogICAgIEFTU0VSVCgh
bV9yYXJlRGF0YSk7Ci0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+
KCk7CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmV0dXJu
ICptX3JhcmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTk3Njg2YWEzZWRjZGQ4ZDNmOWI1
N2M0YTZkMTIzYmFjOWNiMzk4Ny4uMTc4YTYxZGY2OTEzM2FmZGNjMTI3MjhjYmZkOTZlYjM5ZjQy
YWViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDAxLDcgKzQwMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAg
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUs
IHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2Vu
ZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwg
ZW52aXJvbm1lbnQpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRv
ci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9y
dEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5oCmluZGV4IGJjZDcyZWEwOWY1ZjcxN2E2NWY2NWQ3ZDJlZmMxNzVlMDIzZTY5
OTAuLmViYWJiNTlkNDM1OWE5ZTM2NGYyY2EzYWY2YWZkMGVmZDAzOTBiMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNz
IFZNOwogdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwogCiBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBEZWJ1Z2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRGVidWdnZXIoVk0mKTsKICAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCmluZGV4IGYyMGEzNTdlY2I3M2FhN2VmZTRjYjEwN2QxY2NiN2U5ZGM5MDAzMzkuLjI3NjU2
OTI2YThkMjlkMjdlYmVlYWE5ZmZkY2EyMDNjYzI1ZmEwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTU4LDcgKzU4LDcgQEAgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OkFic3RyYWN0SW50ZXJwcmV0ZXIoR3JhcGgmIGdyYXBoLCBBYnN0cmEKICAgICAsIG1fc3RhdGUo
c3RhdGUpCiB7CiAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgbV9waGlD
aGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOworICAgICAg
ICBtX3BoaUNoaWxkcmVuID0gbWFrZVVuaXF1ZTxQaGlDaGlsZHJlbj4obV9ncmFwaCk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAppbmRleCAzMmEyYzkwNDlmZWQ2ZjgyYzZhYmE0MDc2NzY2YmY0Mjli
MTM5MzgzLi4wODc0ZWE3MWNiZGViN2M2MWZlNWEwOGUwNTUyYjBiMzdiNGIxMzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtNzQsNyArNzQsNyBAQCBHcmFwaDo6
R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2Nv
ZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKCkpCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2sobV9jb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNT
QUNGRz4oKnRoaXMpKQorICAgICwgbV9zc2FDRkcobWFrZVVuaXF1ZTxTU0FDRkc+KCp0aGlzKSkK
ICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9y
ZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZlTm90U3Rh
cnRlZFJlZ2lzdGVyaW5nKQpAQCAtODYsOCArODYsOCBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQ
bGFuJiBwbGFuKQogICAgIAogICAgIG1faGFzRGVidWdnZXJFbmFibGVkID0gbV9wcm9maWxlZEJs
b2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgT3B0aW9uczo6Zm9yY2VE
ZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwogICAgIAotICAgIG1faW5kZXhpbmdDYWNoZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7Ci0gICAgbV9hYnN0cmFjdFZh
bHVlc0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhp
cyk7CisgICAgbV9pbmRleGluZ0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlz
KTsKKyAgICBtX2Fic3RyYWN0VmFsdWVzQ2FjaGUgPSBtYWtlVW5pcXVlPEZsb3dNYXA8QWJzdHJh
Y3RWYWx1ZT4+KCp0aGlzKTsKIAogICAgIHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cnVjdHVyZVN0
cnVjdHVyZS5nZXQoKSk7CiAgICAgdGhpcy0+c3RyaW5nU3RydWN0dXJlID0gcmVnaXN0ZXJTdHJ1
Y3R1cmUodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKQEAgLTEwODAsNyArMTA4MCw3IEBAIEZ1
bGxCeXRlY29kZUxpdmVuZXNzJiBHcmFwaDo6bGl2ZW5lc3NGb3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUxpdmVuZXNzLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gKml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNv
ZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVu
ZXNzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5l
c3MgPSBtYWtlVW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVuZXNzPigpOwogICAgIGNvZGVCbG9jay0+
bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVGdWxsTGl2ZW5lc3MoY29kZUJsb2NrLCAqbGl2ZW5l
c3MpOwogICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQgPSAqbGl2ZW5lc3M7CiAgICAg
bV9ieXRlY29kZUxpdmVuZXNzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUobGl2ZW5lc3MpKTsKQEAg
LTEwOTgsNyArMTA5OCw3IEBAIEJ5dGVjb2RlS2lsbHMmIEdyYXBoOjpraWxsc0ZvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlS2lsbHMuZW5kKCkpCiAg
ICAgICAgIHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlS2lsbHM+IGtpbGxzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzPigpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBraWxscyA9IG1ha2VVbmlxdWU8Qnl0
ZWNvZGVLaWxscz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlzaXMoKS5jb21wdXRl
S2lsbHMoY29kZUJsb2NrLCAqa2lsbHMpOwogICAgIEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCA9ICpr
aWxsczsKICAgICBtX2J5dGVjb2RlS2lsbHMuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShraWxscykp
OwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgQ1BTQ0ZHJiBHcmFwaDo6ZW5zdXJlQ1BTQ0ZHKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9u
KTsKICAgICBpZiAoIW1fY3BzQ0ZHKQotICAgICAgICBtX2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q1BTQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fY3BzQ0ZHID0gbWFrZVVuaXF1ZTxDUFNDRkc+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzQ0ZHOwogfQogCkBAIC0xNTQ0LDcgKzE1NDQsNyBA
QCBDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAg
aWYgKCFtX2Nwc0RvbWluYXRvcnMpCi0gICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2Nwc0RvbWluYXRvcnMg
PSBtYWtlVW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzRG9t
aW5hdG9yczsKIH0KIApAQCAtMTU1Miw3ICsxNTUyLDcgQEAgU1NBRG9taW5hdG9ycyYgR3JhcGg6
OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBT
U0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX3NzYURvbWluYXRvcnMpCi0g
ICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBRG9taW5hdG9ycz4o
KnRoaXMpOworICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBtYWtlVW5pcXVlPFNTQURvbWluYXRv
cnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0KIApAQCAtMTU2MSw3
ICsxNTYxLDcgQEAgQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3Bz
KCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJz
aW9uKTsKICAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFtX2Nwc05hdHVyYWxM
b29wcykKLSAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU05h
dHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG1ha2VVbmlx
dWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc05hdHVyYWxMb29w
czsKIH0KIApAQCAtMTU3MCw3ICsxNTcwLDcgQEAgU1NBTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5z
dXJlU1NBTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsK
ICAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykK
LSAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxM
b29wcz4oKnRoaXMpOworICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8U1NB
TmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3NzYU5hdHVyYWxMb29wczsKIH0K
IApAQCAtMTU3OSw3ICsxNTc5LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dh
cmRzQ0ZHKCkKICAgICAvLyBXZSBjb3VsZCBlYXNpbHkgcmVsYXggdGhpcyBpbiB0aGUgZnV0dXJl
IHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0b2RheSwgaXQncyBvbmx5IHVzZWQgaW4gU1NBLgogICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAKICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZH
KQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZH
PigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHND
Rkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQogCkBAIC0xNTg3LDcg
KzE1ODcsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9t
aW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYg
KCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9
IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBt
X2JhY2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0
aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMTU5NSw3
ICsxNTk1LDcgQEAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjplbnN1cmVDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKQotICAgICAgICBt
X2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOworICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzID0gbWFrZVVuaXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA2MzkwNDNlOWUyN2Zi
ZTBlMGI5MmFiNDZhNjY5YmUxNDEwNTAzMzcwLi5mMmI2NjQwMmUzYWQwZTcyZGZjZTA1YjY1YWYz
ZmM5MjZkMDA5ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCBKSVRDb21waWxlcjo6SklUQ29tcGlsZXIoR3JhcGgm
IGRmZykKICAgICAsIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKGRmZy5tX3ZtKQogewogICAg
IGlmIChVTkxJS0VMWShzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBtX2dyYXBoLm1fdm0ubV9w
ZXJCeXRlY29kZVByb2ZpbGVyKSkKLSAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKKyAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtl
VW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBtX2pp
dENvZGUtPnRpZXJVcEluTG9vcEhpZXJhcmNoeSA9IFdURk1vdmUobV9ncmFwaC5tX3BsYW4udGll
clVwSW5Mb29wSGllcmFyY2h5KCkpOwogICAgIGZvciAodW5zaWduZWQgdGllclVwQnl0ZWNvZGUg
OiBtX2dyYXBoLm1fcGxhbi50aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlcygpKQpAQCAtMzQzLDcg
KzM0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikK
ICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVpbGRNYXBw
aW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1h
a2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyKSwgbGlua0J1ZmZlcikpOworICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVP
cmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2Rl
T3JpZ2luTWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgZW1pdFN0
YWNrT3ZlcmZsb3dDaGVjayhKSVRDb21waWxlciYgaml0LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QmIHN0YWNrT3ZlcmZsb3cpCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZSgpCiAKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwot
ICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhp
cyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlz
KTsKIAogICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWls
YWJsZSBpbiB0aGUgSlNTdGFjay4KICAgICBKdW1wTGlzdCBzdGFja092ZXJmbG93OwpAQCAtNDAy
LDkgKzQwMiw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIG1fc3BlY3VsYXRp
dmUtPmNyZWF0ZU9TUkVudHJpZXMoKTsKICAgICBzZXRFbmRPZkNvZGUoKTsKIAotICAgIGF1dG8g
bGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJs
b2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIGF1dG8gbGlua0J1ZmZlciA9IG1ha2VV
bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAg
IG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFs
aXplcj4obV9ncmFwaC5tX3BsYW4pKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxp
emVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGUoKQogCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwogCi0gICAgbV9n
cmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigK
KyAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+
KAogICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVhc2VOb25OdWxsKCksIFdU
Rk1vdmUobGlua0J1ZmZlcikpKTsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgY29tcGlsZUVudHJ5RXhlY3V0aW9uRmxhZygp
OwogCiAgICAgLy8gPT09IEZ1bmN0aW9uIGJvZHkgY29kZSBnZW5lcmF0aW9uID09PQotICAgIG1f
c3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7Cisg
ICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKICAg
ICBjb21waWxlQm9keSgpOwogICAgIHNldEVuZE9mTWFpblBhdGgoKTsKIApAQCAtNTA3LDkgKzUw
Nyw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgc2V0RW5kT2ZD
b2RlKCk7CiAKICAgICAvLyA9PT0gTGluayA9PT0KLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRp
b25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+
KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlu
a0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxhbi5z
ZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9w
bGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZh
aWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBsaW5rKCpsaW5rQnVmZmVyKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24oKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50
cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5
UHRyVGFnPihhcml0eUNoZWNrKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihz
dGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5tX3BsYW4uc2V0Rmlu
YWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJp
dHlDaGVjaykpOwogfQogCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCogSklUQ29tcGlsZXI6OmFk
ZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOwogCiAgICAgaWYgKCFtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzKQotICAgICAgICBtX2dy
YXBoLm1fZG91YmxlQ29uc3RhbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxCYWc8ZG91YmxlPj4oKTsK
KyAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IG1ha2VVbmlxdWU8QmFnPGRvdWJs
ZT4+KCk7CiAKICAgICBkb3VibGUqIGFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IG1fZ3JhcGgubV9k
b3VibGVDb25zdGFudHMtPmFkZCgpOwogICAgICphZGRyZXNzSW5Db25zdGFudFBvb2wgPSB2YWx1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcAppbmRleCBiYjgwMDI3NGRkY2I2MzAzNDc4MzczN2UzOGFkMWU2MWU5YzVl
YTA0Li5hOTQ0MDQ3NDU5MjUyMTg0NWJhMzE4ODM3YjEzYjlmNGEzMTdlZjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2Uu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIExpdmVuZXNzQW5hbHlzaXNQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICwgbV9saXZlQXRUYWlsKG1fZ3JhcGgpCiAgICAgewogICAgICAg
ICBtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+cmVjb21wdXRlKCk7Ci0gICAgICAgIG1fd29ya3Nl
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya3NldD4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51
bUluZGljZXMoKSk7CisgICAgICAgIG1fd29ya3NldCA9IG1ha2VVbmlxdWU8V29ya3NldD4obV9n
cmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CiAgICAgfQogCiAgICAgYm9vbCBy
dW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggNGRiY2VlOGE2YmIy
ZGMzOGRmYzUwNWRiY2FiNmUzOWZjMGUyNzZmMi4uMDc4MzBlZDJmNWU4MTY2NDg4YjkxYWRjNTJh
NzE5MmRiMjhjMTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC0y
OTYsNyArMjk2LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVh
ZEltcGwoKQogICAgIGlmIChtX21vZGUgPT0gRlRMRm9yT1NSRW50cnlNb2RlKSB7CiAgICAgICAg
IGJvb2wgcmVzdWx0ID0gcGVyZm9ybU9TUkVudHJ5cG9pbnRDcmVhdGlvbihkZmcpOwogICAgICAg
ICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBt
YWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZh
aWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIFJVTl9QSEFTRShwZXJmb3JtQ1BTUmV0aHJlYWRp
bmcpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21w
aWxlSW5UaHJlYWRJbXBsKCkKICAgICBjYXNlIEZUTEZvck9TUkVudHJ5TW9kZTogewogI2lmIEVO
QUJMRShGVExfSklUKQogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxlKGRmZykgPT0gRlRMOjpD
YW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlx
dWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9IG1h
a2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gRmFp
bFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NzcsNyArNDc3LDcgQEAgUGxhbjo6Q29t
cGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAgICAgICBSVU5fUEhB
U0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlmIChG
VEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6OkNhbm5vdENvbXBpbGUpIHsKLSAgICAgICAgICAg
IG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsK
KyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0
aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKaW5k
ZXggODcxNTk1YjFmZjI1OWJlZTQ0YzcxY2UwM2Q3ZDhlOGJkNjQzNjUzNy4uNTM0ZDY0YjUzOGZh
MTgwYWY0OGU4OWQ0ZjgyNjAyZmI0NWM5MjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBA
IGNsYXNzIFNTQUNvbnZlcnNpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBi
bG9jay0+dmFyaWFibGVzQXRUYWlsLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVz
QXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7
Ci0gICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpT
U0FEYXRhPihibG9jayk7CisgICAgICAgICAgICBibG9jay0+c3NhID0gbWFrZVVuaXF1ZTxCYXNp
Y0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBlbnRyeXBvaW50SW5kZXhUb0FyZ3VtZW50c0Jsb2NrKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggN2NmNDI1MjFh
NjIxMTc4ZmY4NTEyYWZmOWZmZmEzMjUyMDAyMjRkNi4uY2RjZGFhNjBkODk4YTNiNjZkN2IyOThm
NjY4MThjNzlkYzQ4Yzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTkzLDcgKzE5Myw3IEBAIGlubGluZSBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAog
ICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVy
YXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+PigK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4o
CiAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJl
c3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBEZXN0aW5hdGlvblR5cGUsIHR5cGVuYW1lIFNvdXJj
ZVR5cGUsIHVuc2lnCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aE1vdmUoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU291
cmNlVHlwZSBzb3VyY2VbbnVtYmVyT2ZBc3NpZ25tZW50c10sIERlc3RpbmF0aW9uVHlwZSBkZXN0
aW5hdGlvbltudW1iZXJPZkFzc2lnbm1lbnRzXSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBl
LCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwg
U291cmNlVHlwZSwgbnVtYmVyT2ZBc3NpZ25tZW50cz4+KAogICAgICAgICBmcm9tLCBqaXQsIGRl
c3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCkBAIC0yNDksNyArMjQ5LDcgQEAgaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJj
ZVR5cGUgc291cmNlQXJyYXlbMV0gPSB7IHNvdXJjZSB9OwogICAgIERlc3RpbmF0aW9uVHlwZSBk
ZXN0aW5hdGlvbkFycmF5WzFdID0geyBkZXN0aW5hdGlvbiB9OwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlv
blR5cGUsIFNvdXJjZVR5cGUsIDE+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3NpZ25pbmdT
bG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAx
Pj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwog
fQogCkBAIC0yNTksNyArMjU5LDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJjZVR5cGUgc291cmNlQXJyYXlbMl0g
PSB7IHNvdXJjZTEsIHNvdXJjZTIgfTsKICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25B
cnJheVsyXSA9IHsgZGVzdGluYXRpb24xLCBkZXN0aW5hdGlvbjIgfTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGlu
YXRpb25UeXBlLCBTb3VyY2VUeXBlLCAyPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWdu
aW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlw
ZSwgMj4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCAyYWJjZGIzZmQ1Zjk3MGYzZmJiOTBkM2IwZjZlM2NkOWQ0MGZjZTM3Li4wMzlh
NDZhNzU4NjEwNDhjODVmMDMyODJhMjZmZWFmYjdlZjliZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQxLDcgKzE0MSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0
R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiAgICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRoYXQg
YWxzbyBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQncwogICAgIC8vIHdo
YXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMg
bWUuIEl0J3MgYSBsb3QKICAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2Yg
ZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
cj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3UmF3T2JqZWN0LCByZXN1
bHRHUFIsIHN0b3JhZ2VHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoKSk7CiAK
QEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBu
b2RlLCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAgICAgICBzbG93UGF0
aC5hcHBlbmQoanVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2RlLT5hcnJh
eU1vZGUoKSkpOwogICAgIH0KICAgICAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1h
a2VfdW5pcXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKG1ha2VVbmlxdWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNs
b3dQYXRoLCB0aGlzLCBub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdGVtcEdQUiwgc3RydWN0
dXJlR1BSKSk7CiAgICAgCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CkBAIC0yMjQyLDEw
ICsyMjQyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5n
KE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb3RvdHlwZUNoYWluSXNTYW5l
KSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAor
ICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0
QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRo
aXMsIEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogI2Vs
c2UKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2Fu
ZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRv
cj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ1JlZywgc2NyYXRjaFJlZyksCiAgICAgICAgICAgICAgICAgYmFzZVJlZywgcHJvcGVydHlS
ZWcpKTsKICNlbmRpZgpAQCAtNzYxOSw3ICs3NjE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgICAgICAgICAgICAg
IHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMsIHJlc3VsdEdQ
Uiwgc3RydWN0dXJlLAogICAgICAgICAgICAgICAgIGtub3duTGVuZ3RoLCBtaW5DYXBhY2l0eSkp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICBh
dXRvIGdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQ
YXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCByZXN1bHRHUFIsIHN0
cnVjdHVyZSwgbGVuZ3RoR1BSLCBtaW5DYXBhY2l0eSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURk1vdmUoZ2VuZXJhdG9yKSk7CiAgICAgfQpAQCAtODQzOSw3ICs4NDM5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2Nh
dG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAor
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRv
cldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVz
dWx0R1BSLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIpKTsKICAgICB9CiAK
QEAgLTkxMzUsNyArOTEzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJ1Y3R1cmVD
aGVjayhOb2RlKiBub2RlLCBHUFJSZWcgY2VsbEdQUiwgR1BSUmVnIHRlbXBHCiAgICAgICAgIEdQ
UlJlZyBzdHJ1Y3R1cmVHUFI7CiAgICAgICAgIAogICAgICAgICBpZiAodGVtcEdQUiA9PSBJbnZh
bGlkR1BSUmVnKSB7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdQ
UlRlbXBvcmFyeT4odGhpcyk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBtYWtlVW5pcXVlPEdQ
UlRlbXBvcmFyeT4odGhpcyk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUt
PmdwcigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHRlbXBH
UFI7CkBAIC0xMzE3Niw3ICsxMzE3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
bGxvY2F0ZU5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAg
ICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXpl
U2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8
Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRH
UFIsCiAgICAgICAgIHN0cnVjdHVyZSwKICAgICAgICAgc2hvdWxkQ29udmVydExhcmdlU2l6ZVRv
QXJyYXlTdG9yYWdlID8gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdp
dGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVjdHVyZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXgg
ZmEzOTZmNGYxOTJhOGJiNGFlZjk5ZDAzNzE5MjRhMmEzOGM2NDVlOC4uYmE2MTI4ZWZlOWJiMzY4
ZmUzYjA2NjIzYjUxZWUzZWVhZDNjNGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTk1
LDggKzk1LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICBjYXNlIFBoYXNlTW9kZTo6R2xvYmFsOiB7CiAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAKLSAgICAg
ICAgICAgIG1fc3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluUGxhY2VBYnN0cmFjdFN0YXRlPiht
X2dyYXBoKTsKLSAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFi
c3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0
ZSk7CisgICAgICAgICAgICBtX3N0YXRlID0gbWFrZVVuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0
ZT4obV9ncmFwaCk7CisgICAgICAgICAgICBtX2ludGVycHJldGVyID0gbWFrZVVuaXF1ZTxBYnN0
cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2lzQ29udmVyZ2VkID0gZmFsc2U7CiAgICAg
ICAgICAgICAKQEAgLTEwNyw4ICsxMDcsOCBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyB0b3dhcmRzIGJlbGlldmluZyB0
aGF0IGFsbCBub2RlcyBuZWVkIGJhcnJpZXJzLiAiTmVlZGluZyBhIGJhcnJpZXIiIGlzIGxpa2UK
ICAgICAgICAgICAgIC8vIHNheWluZyB0aGF0IHRoZSBub2RlIGlzIGluIGEgcGFzdCBlcG9jaC4g
Ik5vdCBuZWVkaW5nIGEgYmFycmllciIgaXMgbGlrZSBzYXlpbmcKICAgICAgICAgICAgIC8vIHRo
YXQgdGhlIG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgZXBvY2guCi0gICAgICAgICAgICBtX3N0YXRl
QXRIZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3Jh
cGgpOwotICAgICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tN
YXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1fc3RhdGVBdEhlYWQg
PSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFwaCk7CisgICAgICAg
ICAgICBtX3N0YXRlQXRUYWlsID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+
KG1fZ3JhcGgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCbG9ja0xpc3QgcG9zdE9yZGVy
ID0gbV9ncmFwaC5ibG9ja3NJblBvc3RPcmRlcigpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IGU2YzIyMjFlZTMwMTU0NGM3MmE5
Y2U4MzVmOTgwZmYzNmYwMjRiN2QuLjhmOTMwMzRiMGM2ZjkwYmE2NmY0YmY1YzUzYmUxYjRmMGZi
YTc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCkBAIC0x
NTAsNyArMTUwLDcgQEAgY2xhc3MgV29ya2xpc3Q6OlRocmVhZEJvZHkgOiBwdWJsaWMgQXV0b21h
dGljVGhyZWFkIHsKICAgICAgICAgaWYgKG1fcmVsYXRpdmVQcmlvcml0eSkKICAgICAgICAgICAg
IFRocmVhZDo6Y3VycmVudCgpLmNoYW5nZVByaW9yaXR5KG1fcmVsYXRpdmVQcmlvcml0eSk7CiAg
ICAgICAgIAotICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bXBpbGF0aW9uU2NvcGU+KCk7CisgICAgICAgIG1fY29tcGlsYXRpb25TY29wZSA9IG1ha2VVbmlx
dWU8Q29tcGlsYXRpb25TY29wZT4oKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB0aHJlYWRJc1N0
b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKQEAgLTIxNCw3ICsyMTQsNyBA
QCB2b2lkIFdvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMs
IGludCByZWxhdGl2ZVByaW9yaXR5KQogCiB2b2lkIFdvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQo
Y29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgaW50IHJlbGF0aXZlUHJpb3JpdHkpCiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFRo
cmVhZERhdGE+KHRoaXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWREYXRhPiBkYXRhID0g
bWFrZVVuaXF1ZTxUaHJlYWREYXRhPih0aGlzKTsKICAgICBkYXRhLT5tX3RocmVhZCA9IGFkb3B0
UmVmKG5ldyBUaHJlYWRCb2R5KGxvY2tlciwgKnRoaXMsICpkYXRhLCBtX2xvY2ssIG1fcGxhbkVu
cXVldWVkLmNvcHlSZWYoKSwgcmVsYXRpdmVQcmlvcml0eSkpOwogICAgIG1fdGhyZWFkcy5hcHBl
bmQoV1RGTW92ZShkYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggMTliMTE1YzlmZGQ2N2NiYzhhZTEwOWM2
NDQ1NzQyOGJhM2FkZmE1My4uMDBiZGE2NTcyNzljZjdhOTlkYmFiMTQ5YjA5YzcwM2Q2OGIzNWJl
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNz
ZW1ibGVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIEFzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlciYg
YXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHZvaWQgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNs
eSgKICAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVSZWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBw
cmVmaXgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IHN0
ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aXNhc3NlbWJseVRhc2s+IHRhc2sgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmx5VGFzaz4oKTsKICAg
ICB0YXNrLT5oZWFkZXIgPSBzdHJkdXAoaGVhZGVyLmRhdGEoKSk7IC8vIFl1Y2shIFdlIG5lZWQg
dGhpcyBiZWNhdXNlIENTdHJpbmcgZG9lcyByYWN5IHJlZmNvdW50aW5nLgogICAgIHRhc2stPmNv
ZGVSZWYgPSBjb2RlUmVmOwogICAgIHRhc2stPnNpemUgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDkwYWUyZjRmZTA2YTE1MmNh
ZTU3ODVlMmMwM2M5OTliNjgzMmJjMWIuLmVjODBlYTY3YjI1NmY4OTE4ZDQ4ODNhOGM1MmI4ZjM3
OTU4M2FiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cC5jcHAKQEAgLTE1NywxMSArMTU3LDExIEBAIGNvbnN0IEFic3RyYWN0SGVhcCYgSW5kZXhlZEFi
c3RyYWN0SGVhcDo6YXRTbG93KHB0cmRpZmZfdCBpbmRleCkKICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihpbmRleCkgPj0gbV9zbWFsbEluZGljZXMuc2l6ZSgpKTsKICAgICAKICAgICBp
ZiAoVU5MSUtFTFkoIW1fbGFyZ2VJbmRpY2VzKSkKLSAgICAgICAgbV9sYXJnZUluZGljZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1hcFR5cGU+KCk7CisgICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gbWFr
ZVVuaXF1ZTxNYXBUeXBlPigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFic3RyYWN0SGVhcD4m
IGZpZWxkID0gbV9sYXJnZUluZGljZXMtPmFkZChpbmRleCwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghZmllbGQpIHsKLSAgICAgICAgZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFic3RyYWN0SGVhcD4oKTsKKyAgICAgICAgZmllbGQgPSBtYWtlVW5pcXVlPEFic3RyYWN0SGVh
cD4oKTsKICAgICAgICAgaW5pdGlhbGl6ZSgqZmllbGQsIGluZGV4KTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDVkMDRiNzJmMDQ4MzFkMDYz
MDIzMDRkMWViN2U0OTI5ZDQ4MDQyN2YuLjQ2MzVjYzk2ZjkxMDkxZjczZjA4ZDFmNzUyYjA0N2Qx
MDUzYmZiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGls
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3Vs
dCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07CiAKICAgICBpZiAo
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCi0gICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXRE
aXNhc3NlbWJsZXIoc3RkOjptYWtlX3VuaXF1ZTxCMzo6QWlyOjpEaXNhc3NlbWJsZXI+KCkpOwor
ICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKG1ha2VVbmlxdWU8QjM6
OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAogICAgIHsKICAgICAgICAgR3JhcGhTYWZlcG9pbnQg
c2FmZXBvaW50KHN0YXRlLmdyYXBoLCBzYWZlcG9pbnRSZXN1bHQpOwpAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50
UmVzdWx0KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rlck9mZnNldHMgPQotICAgICAgICBzdGQ6Om1ha2VfdW5p
cXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5jYWxsZWVTYXZlUmVnaXN0ZXJB
dE9mZnNldExpc3QoKSk7CisgICAgICAgIG1ha2VVbmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKICAgICBpZiAo
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2coIlVud2luZCBpbmZvIGZv
ciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVFR5cGU6OkZUTEpJVCksICI6
ICIsICpyZWdpc3Rlck9mZnNldHMsICJcbiIpOwogICAgIGNvZGVCbG9jay0+c2V0Q2FsbGVlU2F2
ZVJlZ2lzdGVycyhXVEZNb3ZlKHJlZ2lzdGVyT2Zmc2V0cykpOwpAQCAtMTQyLDcgKzE0Miw3IEBA
IHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRS
ZXN1bHQpCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihsb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogCi0g
ICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxM
aW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBz
dGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+
KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCiAgICAgaWYgKHN0YXRl
LmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAg
ICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2
b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVz
dWx0KQogICAgIAogICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9IHN0YXRlLnByb2Mt
PnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7CiAgICAgaWYgKHZtLnNob3VsZEJ1aWxkZXJQQ1RvQ29k
ZU9yaWdpbk1hcHBpbmcoKSkKLSAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1h
cChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxp
bmtCdWZmZXIpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtl
VW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdU
Rk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsK
IAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IGxhYmVsID0gc3RhdGUuZmlu
YWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KHN0YXRl
LnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSk7CiAgICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24g
PSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCmluZGV4IDE2NTMzNTA5
Y2QwYjQ4MmM3NGJjYTY3MzE4NzYzZjJlMGYwOWRkZjEuLmMzZjkzMzkyZjI2ZTZmYzk1ZjljMmNj
NTkyOWVkMzRjNmJjMzBjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMRmFpbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcApA
QCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogCiB2b2lkIGZhaWwoU3RhdGUm
IHN0YXRlKQogewotICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtl
X3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikpOworICAgIHN0YXRl
LmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0
YXRlLmdyYXBoLm1fcGxhbikpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAwODU0MDU2ZWM3ZDE2MmIxMWNkYzIx
Y2Q3OGZlMTUxN2Y3YWNmM2ViLi45NWRiNjk2MWU4ZTkwNzcwY2Q2ZTU1NjczMDIyYjQ0NzYzYjU4
MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTE2Niw3ICsxNjYs
NyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0LnVudGFnUmV0dXJu
QWRkcmVzcygpOwogICAgICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7
CiAKLSAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+
KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgICAgICAgICAgbGlu
a0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBp
bGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxs
b2NhdGUoKSkgewogICAgICAgICAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIGxpbmso
U3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAK
LSAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgIGxpbmtCdWZmZXIgPSBt
YWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAg
ICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5k
ZXggYWYxYmE0YmY5MGE4ZmQwYmEyNTAyYzY0N2UyYzE3MTQxMjJkZTdkNC4uMDliMzQyNzNjYmI3
Y2FiNDRjZDg2M2U5OWIyODU5MGU4N2M5NGIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTUwODAsNyArMTUwODAsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
LmxpbmsoZ2VuZXJhdG9ySnVtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2bS0+Z2V0Q1RJU3R1YihsYXp5U2xv
d1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gc3RkOjptYWtlX3VuaXF1ZTxM
YXp5U2xvd1BhdGg+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IG1ha2VVbmlxdWU8TGF6eVNsb3dQ
YXRoPigpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua2VkUGF0
Y2hhYmxlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4obGlua0J1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZUp1bXApKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCA2NTNlYzZmNjk2MDQ5Yjc1MmFjMjRh
Nzc5MzEwZDRhZDk3YmIwM2RiLi40YTQ4NGZhNmQ0NjQzMGQ3MWU1NzAwOGJmMWU5OWY2YzI1Yjg0
ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApAQCAtNjAsMTAgKzYw
LDEwIEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5h
bGl6ZXI+KGdyYXBoLm1fcGxhbikpOworICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFr
ZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOwogICAgIGZpbmFsaXplciA9IHN0
YXRpY19jYXN0PEpJVEZpbmFsaXplcio+KGdyYXBoLm1fcGxhbi5maW5hbGl6ZXIoKSk7CiAKLSAg
ICBwcm9jID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZWR1cmU+KCk7CisgICAgcHJvYyA9IG1ha2VV
bmlxdWU8UHJvY2VkdXJlPigpOwogCiAgICAgcHJvYy0+c2V0T3JpZ2luUHJpbnRlcigKICAgICAg
ICAgW10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2luKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCmluZGV4IDIyZDdmZDY1
ZDVhMTc1NWI1YjJkM2I3OGRkYTU1YzBkMDA3ZTFjY2IuLjAyMWIwY2RiOWRmYWMxOGIzNjg2NDI4
YTk4MjNmMjgxMTBiYjc5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
bXBsZXRlU3Vic3BhY2UuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1
YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgICAgICBkYXRhTG9nKCJD
cmVhdGluZyBCbG9ja0RpcmVjdG9yeS9Mb2NhbEFsbG9jYXRvciBmb3IgIiwgbV9uYW1lLCAiLCAi
LCBhdHRyaWJ1dGVzKCksICIsICIsIHNpemVDbGFzcywgIi5cbiIpOwogICAgIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVlRGlyZWN0b3J5ID0KLSAgICAgICAgc3Rk
OjptYWtlX3VuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNpemVDbGFzcyk7
CisgICAgICAgIG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXpl
Q2xhc3MpOwogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSB1bmlxdWVEaXJlY3Rvcnku
Z2V0KCk7CiAgICAgbV9kaXJlY3Rvcmllcy5hcHBlbmQoV1RGTW92ZSh1bmlxdWVEaXJlY3Rvcnkp
KTsKICAgICAKQEAgLTg4LDcgKzg4LDcgQEAgQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6OmFs
bG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgbV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9y
eShsb2NrZXIsIGRpcmVjdG9yeSk7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPExvY2FsQWxs
b2NhdG9yPiB1bmlxdWVMb2NhbEFsbG9jYXRvciA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8
TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CisgICAgICAgIG1ha2VVbmlxdWU8TG9jYWxBbGxv
Y2F0b3I+KGRpcmVjdG9yeSk7CiAgICAgTG9jYWxBbGxvY2F0b3IqIGxvY2FsQWxsb2NhdG9yID0g
dW5pcXVlTG9jYWxBbGxvY2F0b3IuZ2V0KCk7CiAgICAgbV9sb2NhbEFsbG9jYXRvcnMuYXBwZW5k
KFdURk1vdmUodW5pcXVlTG9jYWxBbGxvY2F0b3IpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKaW5kZXggYTAxYjVhMmI0YWVmZDNlNTI5Njk3N2E1YzgzODQwNDJlNWEyOTU2
YS4uOTcxOTllMTg2ZGU3MmQ3NzI3OTczNWM5ZDNjOTk0MGM4NWM0OGFmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTI4OSwxNSArMjg5LDE1IEBAIEhlYXA6OkhlYXAoVk0q
IHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4RWRlblNpemUobV9taW5CeXRlc1Bl
ckN5Y2xlKQogICAgICwgbV9tYXhIZWFwU2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBt
X29iamVjdFNwYWNlKHRoaXMpCi0gICAgLCBtX21hY2hpbmVUaHJlYWRzKHN0ZDo6bWFrZV91bmlx
dWU8TWFjaGluZVRocmVhZHM+KCkpCi0gICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKHN0ZDo6
bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiQyIpKQotICAgICwgbV9tdXRhdG9yU2xv
dFZpc2l0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJNIikpCi0gICAg
LCBtX211dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkK
LSAgICAsIG1fcmFjZU1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQotICAgICwgbV9jb25zdHJhaW50U2V0KHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFp
bnRTZXQ+KCp0aGlzKSkKKyAgICAsIG1fbWFjaGluZVRocmVhZHMobWFrZVVuaXF1ZTxNYWNoaW5l
VGhyZWFkcz4oKSkKKyAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90
VmlzaXRvcj4oKnRoaXMsICJDIikpCisgICAgLCBtX211dGF0b3JTbG90VmlzaXRvcihtYWtlVW5p
cXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKKyAgICAsIG1fbXV0YXRvck1hcmtTdGFjayht
YWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9yYWNlTWFya1N0YWNrKG1ha2VV
bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX2NvbnN0cmFpbnRTZXQobWFrZVVuaXF1
ZTxNYXJraW5nQ29uc3RyYWludFNldD4oKnRoaXMpKQogICAgICwgbV9oYW5kbGVTZXQodm0pCi0g
ICAgLCBtX2NvZGVCbG9ja3Moc3RkOjptYWtlX3VuaXF1ZTxDb2RlQmxvY2tTZXQ+KCkpCi0gICAg
LCBtX2ppdFN0dWJSb3V0aW5lcyhzdGQ6Om1ha2VfdW5pcXVlPEpJVFN0dWJSb3V0aW5lU2V0Pigp
KQorICAgICwgbV9jb2RlQmxvY2tzKG1ha2VVbmlxdWU8Q29kZUJsb2NrU2V0PigpKQorICAgICwg
bV9qaXRTdHViUm91dGluZXMobWFrZVVuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKICAgICAs
IG1fdm0odm0pCiAgICAgLy8gV2Ugc2VlZCB3aXRoIDEwbXMgc28gdGhhdCBHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNuJ3QgY29udGludW91c2x5IAogICAgIC8vIHNjaGVkdWxl
IHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlvbi4KQEAgLTMwNSw4ICsz
MDUsOCBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2Vk
ZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVy
KHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKCpuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KHRoaXMpKSkKICAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYoKm5ldyBTdG9w
SWZOZWNlc3NhcnlUaW1lcih2bSkpKQotICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJrU3RhY2so
c3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fc2hhcmVkTXV0YXRv
ck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9z
aGFyZWRDb2xsZWN0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAg
ICAsIG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkpCiAgICAgLCBtX3RocmVh
ZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fdGhyZWFkQ29uZGl0aW9uKEF1dG9t
YXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCkBAIC0zMTQsNyArMzE0LDcgQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG1fd29ybGRTdGF0ZS5zdG9yZSgw
KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIG51bWJlck9mUGFyYWxsZWxUaHJlYWRzID0g
aGVhcEhlbHBlclBvb2woKS5udW1iZXJPZlRocmVhZHMoKTsgaSA8IG51bWJlck9mUGFyYWxsZWxU
aHJlYWRzOyArK2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNp
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRvQ1N0cmluZygiUCIs
IGkgKyAxKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9
IG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOwog
ICAgICAgICBpZiAoT3B0aW9uczo6b3B0aW1pemVQYXJhbGxlbFNsb3RWaXNpdG9yc0ZvclN0b3Bw
ZWRNdXRhdG9yKCkpCiAgICAgICAgICAgICB2aXNpdG9yLT5vcHRpbWl6ZUZvclN0b3BwZWRNdXRh
dG9yKCk7CiAgICAgICAgIG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRvcnMuYXBwZW5kKHZp
c2l0b3IuZ2V0KCkpOwpAQCAtMzIzLDE3ICszMjMsMTcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgIAogICAgIGlmIChPcHRpb25zOjp1c2VDb25jdXJyZW50R0Mo
KSkgewogICAgICAgICBpZiAoT3B0aW9uczo6dXNlU3RvY2hhc3RpY011dGF0b3JTY2hlZHVsZXIo
KSkKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9jaGFzdGlj
U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVs
ZXIgPSBtYWtlVW5pcXVlPFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhp
cyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX3Nj
aGVkdWxlciA9IG1ha2VVbmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHNpbXVsYXRlIHR1cm5pbmcgb2ZmIGNvbmN1cnJl
bnQgR0MgYnkgbWFraW5nIHRoZSBzY2hlZHVsZXIgc2F5IHRoYXQgdGhlIHdvcmxkCiAgICAgICAg
IC8vIHNob3VsZCBhbHdheXMgYmUgc3RvcHBlZCB3aGVuIHRoZSBjb2xsZWN0b3IgaXMgcnVubmlu
Zy4KLSAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzU3Rv
cFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKKyAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtl
VW5pcXVlPFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmlmeUhlYXAoKSkKLSAgICAgICAgbV92ZXJpZmll
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRpb25zOjpudW1iZXJP
ZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24oKSk7CisgICAgICAgIG1fdmVyaWZpZXIg
PSBtYWtlVW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xl
c1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uKCkpOwogICAgIAogICAgIG1fY29sbGVjdG9yU2xvdFZp
c2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11dGF0b3IoKTsKIApAQCAtODk5LDcgKzg5OSw3IEBA
IHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmplY3RDb3VudCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlw
ZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9
IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIGZvckVhY2hQcm90ZWN0ZWRDZWxsKAog
ICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgewogICAgICAgICAgICAgcmVjb3JkVHlwZSgqdm0o
KSwgKnJlc3VsdCwgY2VsbCk7CkBAIC05MDksNyArOTA5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFR5
cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlw
ZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9
IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVy
YXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCiAg
ICAgICAgIGl0ZXJhdGlvblNjb3BlLApAQCAtMjg1Niw3ICsyODU2LDcgQEAgdm9pZCBIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICB9LAogICAgICAgICBDb25zdHJhaW50Vm9sYXRp
bGl0eTo6U2VsZG9tR3JleWVkKTsKICAgICAKLSAgICBtX2NvbnN0cmFpbnRTZXQtPmFkZChzdGQ6
Om1ha2VfdW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhpcykpOworICAgIG1f
Y29uc3RyYWludFNldC0+YWRkKG1ha2VVbmlxdWU8TWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+
KCp0aGlzKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWRkTWFya2luZ0NvbnN0cmFpbnQoc3RkOjp1bmlx
dWVfcHRyPE1hcmtpbmdDb25zdHJhaW50PiBjb25zdHJhaW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5kZXggNWI2OWNkNWUzNWY2MmI1MDY2M2E5Y2JkYzczOTRk
MWJkNjdhZDFkOC4uZTFlYjZjNzgzM2Q0ODU4NzFhOWM1MzNjZmQ0NzMxYzc1ZjliMTFmZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBAIC0yMTcsNyArMjE3LDcg
QEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQo
KQogaW5saW5lIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYgSGVhcDo6bWFya0xpc3RT
ZXQoKQogewogICAgIGlmICghbV9tYXJrTGlzdFNldCkKLSAgICAgICAgbV9tYXJrTGlzdFNldCA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOworICAg
ICAgICBtX21hcmtMaXN0U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVm
ZmVyKj4+KCk7CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmluZGV4IDViOWFj
ODlkYWJmMDRhMDYxNGRjMTBmYmJhZjE2YzBmNGE0OTlmN2UuLjJkMmJjOGZiOWIyN2ZlOWY5YjFi
NWJlNTRjYjc1MWY4M2UwZDNkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSGVhcFNu
YXBzaG90QnVpbGRlcjo6YnVpbGRTbmFwc2hvdCgpCiAKICAgICBQcmV2ZW50Q29sbGVjdGlvblNj
b3BlIHByZXZlbnRDb2xsZWN0aW9uU2NvcGUobV9wcm9maWxlci52bSgpLmhlYXApOwogCi0gICAg
bV9zbmFwc2hvdCA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2ZpbGVyLm1v
c3RSZWNlbnRTbmFwc2hvdCgpKTsKKyAgICBtX3NuYXBzaG90ID0gbWFrZVVuaXF1ZTxIZWFwU25h
cHNob3Q+KG1fcHJvZmlsZXIubW9zdFJlY2VudFNuYXBzaG90KCkpOwogICAgIHsKICAgICAgICAg
bV9wcm9maWxlci5zZXRBY3RpdmVTbmFwc2hvdEJ1aWxkZXIodGhpcyk7CiAgICAgICAgIG1fcHJv
ZmlsZXIudm0oKS5oZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5kZXggYjhlNDMwMTkx
ZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOS4uN2MyZWQyNDAyZmQ3MzAxZmMwOTlhOGRm
YjVkM2MzMzZhZWFkMTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNl
dC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgTkVWRVJfSU5MSU5FIEJpdG1hcDxNYXJrZWRCbG9jazo6
YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6ZV90IGJsb2MKICAgICBhdXRv
JiBiaXRzUHRyUmVmID0gbV9iaXRzW2Jsb2NrSW5kZXhdOwogICAgIGF1dG8qIGJpdHMgPSBiaXRz
UHRyUmVmLmdldCgpOwogICAgIGlmICghYml0cykgewotICAgICAgICBiaXRzUHRyUmVmID0gc3Rk
OjptYWtlX3VuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+PigpOworICAg
ICAgICBiaXRzUHRyUmVmID0gbWFrZVVuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVy
QmxvY2s+PigpOwogICAgICAgICBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsKICAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICAgICAgbV9ibG9ja3NXaXRoQml0c1tibG9ja0luZGV4
XSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKaW5k
ZXggZDUxMDAwZWJhODdmMzFkZTQ4MWJlZDA4YTVmMmZlZDhhNjM5ZmY5OS4uY2QzZTdlNTYxNTQ1
NjZkY2Y4YzE1MTYzYTE1YjcyZjI3NjhmMjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlLmNwcApAQCAtMzksNyArMzksNyBAQCBJc29TdWJzcGFjZTo6SXNvU3Vi
c3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlw
ZSwgcwogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2RpcmVjdG9yeSgmaGVhcCwgV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCiAgICAgLCBt
X2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9yeSkKLSAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisg
ICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJc29BbGlnbmVkTWVt
b3J5QWxsb2NhdG9yPigpKQogewogICAgIGluaXRpYWxpemUoaGVhcENlbGxUeXBlLCBtX2lzb0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKaW5kZXggYjNhYmQyYzUyMjRmY2Uz
ZTVjZTEyYzRmMTYzZWQ0ODIzZGFlNjk4ZS4uMTc4MGMwOGE0NzBmMjc2MjMxNjM3ZWY2ODExN2M5
YTRlMzJjMWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2lu
Z0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtp
bmdDb25zdHJhaW50U2V0LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1hcmtpbmdDb25zdHJh
aW50U2V0OjpkaWRTdGFydE1hcmtpbmcoKQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0Ojph
ZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgOjpGdW5jdGlvbjx2b2lk
KFNsb3RWaXNpdG9yJik+IGZ1bmN0aW9uLCBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5
LCBDb25zdHJhaW50Q29uY3VycmVuY3kgY29uY3VycmVuY3ksIENvbnN0cmFpbnRQYXJhbGxlbGlz
bSBwYXJhbGxlbGlzbSkKIHsKLSAgICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5n
Q29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSwgY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtKSk7Cisg
ICAgYWRkKG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2
aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHks
IGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOwogfQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50
U2V0OjphZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKaW5kZXggODJiZTNiYmI0NGNi
NmM1Nzc2YjhlY2Y3ZmEwYzk0MGQ1ZDVhNTgyNS4uNTNhOTFhMjNjMWQ4OTI5MThlZTQyOTQxYTY1
ZjUyNzg2N2Q0MzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcApAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBl
QW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzcwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CiAg
ICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7Ci0gICAgbV9j
b25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2Us
IFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMp
KTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OmNvdW50KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGl0bGUgPT0gdGl0bGUpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBm
b3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUu
aXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJp
bmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgICAg
ICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICAgICAg
ICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxl
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYgdGl0bAogCiAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJv
bnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1w
dHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0
aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgd2FybmluZykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsK
IH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnN0YXJ0Q29uc29sZVByb2Zp
bGUoKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
OjpzY3JlZW5zaG90KEV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpCiB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6d2FyblVuaW1wbGVtZW50ZWQoY29uc3QgU3RyaW5n
JiBtZXRob2QpCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtZXRob2QgKyAiIGlzIGN1cnJlbnRs
eSBpZ25vcmVkIGluIEphdmFTY3JpcHQgY29udGV4dCBpbnNwZWN0aW9uLiI7Ci0gICAgbV9jb25z
b2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdl
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZGE1MmVmZDEzYzQ5MWNjYWU2Mzk1ZTA3NGM0NjQ0
ZTcwY2MwYTcuLmJkYmQzMWQ2MzEyYjJjMDU2ZDdjNDc4MTVkYzYxNWQxMjI2ZDkyNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAg
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCi0gICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdl
cj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJ
bmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNo
KFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGdsb2JhbE9i
amVjdCkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQpA
QCAtNzEsMTEgKzcxLDExIEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqCiB7CiAgICAgYXV0byBj
b250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8g
Y29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQp
OwogICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50LmdldCgpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1fY29uc29sZUFn
ZW50KTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29u
c29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwogCiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gt
PnN0YXJ0KCk7CiB9CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2UK
ICAgICAgICAgICAgIENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVz
c2FnZSwgU3RyaW5nKCksIDAsIDApOwogICAgIH0KIAotICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1l
c3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFdU
Rk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiBDb25zb2xlQ2xpZW50KiBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbnNvbGVDbGllbnQoKSBjb25zdApAQCAtMjgwLDcgKzI4MCw3
IEBAIEluc3BlY3RvckFnZW50JiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVu
c3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpIHsKICAg
ICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNw
ZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOwor
ICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JBZ2VudD4o
Y29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQo
KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKICAg
ICB9CkBAIC0yOTEsNyArMjkxLDcgQEAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCYgSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVEZWJ1Z2dlckFnZW50KCkKIHsKICAgICBp
ZiAoIW1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBhdXRvIGNvbnRleHQgPSBqc0FnZW50Q29u
dGV4dCgpOwotICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpT
R2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOworICAg
ICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOwogICAgICAgICBtX2RlYnVnZ2VyQWdl
bnQgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgICAgICBtX2NvbnNvbGVDbGllbnQtPnNldElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQobV9kZWJ1Z2dlckFnZW50KTsKICAgICAgICAgbV9hZ2VudHMu
YXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwpAQCAtMzI3LDIwICszMjcsMjAgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQog
CiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNv
bnRleHQpKTsKIAogICAgIGVuc3VyZURlYnVnZ2VyQWdlbnQoKTsKIAotICAgIGF1dG8gc2NyaXB0
UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Pihjb250ZXh0KTsKICAgICBtX2Nv
bnNvbGVDbGllbnQtPnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmls
ZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJv
ZmlsZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBoZWFwQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBoZWFwQWdlbnQgPSBtYWtl
VW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CiAgICAgaWYgKG1fY29uc29sZUFn
ZW50KQogICAgICAgICBtX2NvbnNvbGVBZ2VudC0+c2V0SW5zcGVjdG9ySGVhcEFnZW50KGhlYXBB
Z2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaGVhcEFnZW50KSk7CiAK
LSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0
QWdlbnQ+KGNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxKU0dsb2Jh
bE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzBiNWM5YWFkMThjMDhjZWRkYzM2OTY2YmYwNDY4
NTE0MTc2MjY0My4uNDE3ZTc3NWZiODAyNDljMDQwMzEzN2E4Mjc4MjEzNzMyN2QzMzJiNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkluc3BlY3RvciJfcykKICAgICAsIG1fZW52aXJvbm1l
bnQoY29udGV4dC5lbnZpcm9ubWVudCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9y
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuY3BwCmluZGV4IDdlZGJjODA2NjBmMzZkNmE4MWFhOTFmYjhmYTNmZGRkZWRhZTZmMjYuLjVk
MjRjNjllNmJmNDVkNzJmYjBiZGE1M2I0YzQ1NzU5ODYxM2NiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29uc3QgaW50IGV4cGly
ZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDsKIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVj
dG9yQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiQ29uc29sZSJfcykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRl
eHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8Q29uc29sZUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBsYWJlCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAv
LyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwog
ICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJc
IiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywg
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogICAgIH0KIH0KIApA
QCAtMTU5LDE0ICsxNTksMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWlu
ZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwKICAgICBpZiAoaXQg
PT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRo
ZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1h
a2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwogICAgIFNlY29uZHMgZWxh
cHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwogICAgIFN0cmluZyBtZXNz
YWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRo
KGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKLSAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2Us
IFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2Fn
ZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdl
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiB2b2lkIElu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE4NCwxNCArMTg0LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IGxhYmVsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkpIHsKICAgICAgICAgLy8gRklYTUU6
IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAg
U3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBu
b3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6
VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNr
KSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1
ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGlt
ZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6ICIsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAzKSwgIm1zIik7Ci0g
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2
ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBhZGRNZXNzYWdl
VG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2Us
IFdURk1vdmUoY2FsbFN0YWNrKSkpOwogCiAgICAgbV90aW1lcy5yZW1vdmUoaXQpOwogfQpAQCAt
MjI0LDcgKzIyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudChKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICAvLyBGSVhNRTogV2ViIElu
c3BlY3RvciBzaG91bGQgaGF2ZSBhIGJldHRlciBVSSBmb3IgY291bnRlcnMsIGJ1dCBmb3Igbm93
IHdlIGp1c3QgbG9nIGFuIHVwZGF0ZWQgY291bnRlciB2YWx1ZS4KIAogICAgIFN0cmluZyBtZXNz
YWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0g
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEp
KSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEp
KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZv
aWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fY291bnRzLmVuZCgpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6
YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiQ291bnRlciBcIiIs
IGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29s
ZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNy
ZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5p
bmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBl
NWYyNDgyYTNjYWEwOGFhODE2NDVmYThjNzljNTI5YmE0MzgwZDBhLi4yNWYxZDNlNzI4MWM2YjBm
YjgzMzBmZjEzNzg3MzY0M2ViYzYwZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9yQnJlYWtw
b2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3RpbwogCiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGVidWdnZXIiX3MpCi0gICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihEZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3Nj
cmlwdERlYnVnU2VydmVyKGNvbnRleHQuZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKSkK
ICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggYjUzNWZmNjE5MmFhY2VmYzc5YjRm
NmNkOTNkZjEyMDFhMzcxNDhhYy4uNTgyYzM1ZDM2N2RmZTFlNGY3ZGM0ZTlhNTY4NGRjYTJhNGUz
YjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogSW5zcGVjdG9ySGVhcEFnZW50OjpJbnNwZWN0b3JIZWFwQWdlbnQo
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJIZWFwIl9z
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1h
bmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEhlYXBG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSGVhcEJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDU2ZmMxYjc5OGRhMGVlZWVhMDIzMzFl
ZDUyNTRhOTUwMjEwMDU4NzQuLmNiYWQ4MWQ2OTk0NDBhNzMzYjBhZjA0MTY5NGE4NmNhOWU2ZThl
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KEFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiU2NyaXB0UHJvZmlsZXIiX3MpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8U2NyaXB0UHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+
KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihTY3Jp
cHRQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKaW5kZXggM2FjYTQxMDUxMGZlNTAwZjA1YmZi
YWFjNDY3ZmZkYWNjYjIxYzUyNC4uOTM1MDY4YzdhZTExOTcxMDU0NGMxZjc2Nzk4MjJkZmI2NmU1
NmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRh
cmdldEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNo
ZXImIGJhY2tlbmREaXNwYXRjaGVyKQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUYXJnZXQi
X3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFRhcmdldEZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVy
KSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVGFyZ2V0QmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlMzI5YTNiNDNjZDYwOTY1ZDlmNzc4NWE0ODIy
MDExYWIzNjZmYTUzLi45YjNmMzc5ZDVlNWE0OTBkYmUzNzVjNzJhYzk5ZmE3MjBiOWFjY2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGUKIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdl
VG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMTQ1ZDA1MTZiOGUz
OTY4ODc4ZDkyY2I1OTRhYTU5OWJhZmEzOWQzMi4uM2I3YzNlMjFkMzFjMWMyZjViNmQxYmEwYzE2
ZjQ4ODgzZTZjZjMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNw
cApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEpTQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCi0gICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoUnVudGltZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2ds
b2JhbE9iamVjdChjb250ZXh0Lmluc3BlY3RlZEdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCmluZGV4IDcx
MDE2NjhhOTdjODc0NDgxMmY0NjU2ZjE2ZTBiN2RkNTk0ZjFhNjAuLmNjOTY0MDA1Njc5ZGJmY2Q0
ZmUwMjkwNmJjOTNjMjNiMmM4MmVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtMTQ0LDExICsxNDQsMTEgQEAgT3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KFBsYXRmb3JtU29ja2UKIAogICAgIFNvY2tldDo6c2V0dXAoc29ja2V0KTsKIAotICAg
IGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U29ja2V0OjpDb25uZWN0aW9uPigp
OworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8U29ja2V0OjpDb25uZWN0aW9uPigp
OwogCiAgICAgY29ubmVjdGlvbi0+cG9sbCA9IFNvY2tldDo6cHJlcGFyZVBvbGxpbmcoc29ja2V0
KTsKICAgICBjb25uZWN0aW9uLT5zb2NrZXQgPSBzb2NrZXQ7Ci0gICAgY29ubmVjdGlvbi0+cGFy
c2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpCdWZmZXJT
aXplKTsKKyAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBtYWtlVW5pcXVlPE1lc3NhZ2VQYXJzZXI+
KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwogICAgIGNvbm5lY3Rpb24tPnBhcnNlci0+c2V0RGlk
UGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNdKENvbm5lY3Rpb25JRCBpZCwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkgewogICAgICAgICBpZiAobV9pbnNwZWN0b3JDbGllbnQpCiAgICAgICAgICAg
ICBtX2luc3BlY3RvckNsaWVudC0+ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KGlkLCBXVEZN
b3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50LmgKaW5kZXggNzBmMmQ3YTQ4MTM0NzBmODEzNzMyYjNiOTc3YjViNzNhNDE5NjBi
NS4uMzIwNDAwZmQ1YjNjZGIyYzRiMTVkYmRjOTMwNDZiYmZkMDBjYWRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQ+IGNyZWF0ZShSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50
KiBpbnNwZWN0b3JDbGllbnQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludD4oaW5zcGVj
dG9yQ2xpZW50LCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFtZSk7CiAgICAgfQogCiAgICAg
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudCosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weQppbmRleCA1MGM4ZjZmZGU3Y2U2ODk4YjA4MjgxNDk5N2JlNTdkNzMw
MTliMjUzLi4xMDE3ODllMWRmNzU0ODFmNjFlOGMwMGYyMTFhY2E3NDliNTA1OGVhIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpj
X2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC0xMzYs
OCArMTM2LDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvclRlbXBsYXRlczoKICAgICBbXyR7dmFyaWFi
bGVOYW1lUHJlZml4fUhhbmRsZXIgcmVsZWFzZV07CiAgICAgXyR7dmFyaWFibGVOYW1lUHJlZml4
fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4+KCIke2Rv
bWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikp
OworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRm
b3JtLmpzb24tcmVzdWx0CmluZGV4IDNlOTkxNDcxZDMyNGEzNTUxNjkyOGU0M2U5NDEwOGI0NDg3
MzEyMDguLmIwNGE4NTBkZjExNTJkNmZkYTU5NjJkZjM3YzJlNDllMWViZDk1ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhw
ZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9k
ZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxl
YXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0
byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0
d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdv
cmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJv
bGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXgg
YTcxNGZiMTMxODMyOTNkMTgzMmZjNTgxZTZjNTMzNzg2ODAyZDU3Mi4uYzBlMTczMzdmZDRhNzk4
ODMwZTg1ZDI5ZTg1ZDhlZDMwMjBjYTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTExODksOCArMTE4OSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAg
X2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9z
LCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8g
YWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtl
VW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpf
Y29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xs
ZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggNTNiZDU1M2I3YmE3NGRkZDI5ZTI1NTFjYzBi
ODRmYTQzMDcxNGNhZS4uYWVkMDdiNzVlOGI4ODhkZDU5MzM5MGFmYTIxZDJjODkwZGRmYzU4MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2Fs
bC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTA2OCw4ICsxMDY4LDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsK
ICAgICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0
ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJh
c2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29u
dHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CmluZGV4IDY3OGM2YWFhODVhY2EzODQy
NDhiOTkyOTAzNGNjZjA5NDExOGRlZTcuLjFhZGNiZDNmZDJhY2I5Y2ExNDYxYzMwOGU0NWM0OTJl
YzNlMDMyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdApAQCAtNzgyLDgg
Kzc4Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kb21haW5BSGFuZGxl
ciByZWxlYXNlXTsKICAgICBfZG9tYWluQUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0g
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVj
dG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21h
aW5BQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJEb21haW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikp
OworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rv
ckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWlu
QSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBf
Y29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9
CiAKQEAgLTgwMCw4ICs4MDAsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
ZG9tYWluQkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkJIYW5kbGVyID0gW2hhbmRsZXIg
cmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAg
YXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5CQmFja2Vu
ZERpc3BhdGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVl
PE9iakNJbnNwZWN0b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1
dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRj
aGVyPj4oIkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRj
aGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5h
dGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29t
bWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCBmNmM1ZWRjY2I5Mjg1YWY0OGM2ZGViOTg0MjJh
NzIzNmI4NzAyZDRlLi5hM2UyN2RmMzhjZWFmYmIzYzQ1MWUxM2I2MTE5ZTJlNTRjM2QyYThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKQEAgLTEwMzksOCArMTAzOSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmsxSGFuZGxlciA9
IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdU
Rk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hl
ciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURp
c3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92
ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdl
bnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC0xMDU3LDggKzEwNTcsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazNIYW5kbGVyIHJlbGVhc2Vd
OwogICAgIF9uZXR3b3JrM0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsz
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVt
LXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCA0ZDk0YWQ5NGFkODUxZjU4NWY0OGU5MTE1ZTNiZWNj
Zjk3YjdhZDVmLi5iZDZiOTgxNWY3NjAxYWUxZDBmZWRjMjZjNDU0MzViYTQzZjYxZTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdApAQCAtODE1LDggKzgxNSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAgICAgW19jb21tYW5kRG9tYWluSGFuZGxlciByZWxlYXNlXTsKICAgICBfY29tbWFu
ZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4+
KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0
Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0lu
c3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3Zl
KGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2Vu
dChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCA2ZjZiZjM2
MjU3YWU5ZWVmMDVmMWJmMjY3M2U2MTEzZjNiY2U4OTgwLi41Y2JjY2JmZWQ1M2M0YmYzNDEzNmY3
NjhlZGE1OWZmYjQ5MDcwYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlu
cy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC03OTgsOCArNzk4LDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsK
ICAgICBfbmV0d29yazFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0
ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29y
azEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29u
dHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVj
dGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDNlOTkx
NDcxZDMyNGEzNTUxNjkyOGU0M2U5NDEwOGI0NDg3MzEyMDguLmIwNGE4NTBkZjExNTJkNmZkYTU5
NjJkZjM3YzJlNDllMWViZDk1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMt
cGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxl
cik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFj
a2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCAwNWY3MGYxYWVhZjRjNGQ5ZjUyYzEwNmFiNjZkYjllY2QyZWFiOGJlLi45OWU4YTQ3ZmQ1ZTBj
MjA3ZTcyN2I4NmZlMjM2MTkwNTdiNjUwMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgfQogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYg
T3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpKSkKLSAgICAgICAgbV9k
aXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxv
Y2spOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8SklURGlzYXNzZW1ibGVy
PihtX2NvZGVCbG9jayk7CiAgICAgaWYgKFVOTElLRUxZKG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9m
aWxlcikpIHsKICAgICAgICAgbV9jb21waWxhdGlvbiA9IGFkb3B0UmVmKAogICAgICAgICAgICAg
bmV3IFByb2ZpbGVyOjpDb21waWxhdGlvbigKQEAgLTkwMSw3ICs5MDEsNyBAQCBDb21waWxhdGlv
blJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFw
QnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9D
b2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUo
bV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOworICAgICAgICBtX2Nv
ZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1h
cD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKSk7CiAg
ICAgCiAgICAgQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXN1bHQgPSBGSU5BTElaRV9DT0RFKAog
ICAgICAgICBwYXRjaEJ1ZmZlciwgSlNFbnRyeVB0clRhZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmNwcAppbmRleCAxNmJmNzBkODAxNzQ0MjMwNTAyYTJkOGIxOTdjZDQwMWM4
MDI0ZjM4Li41YmRmODMwNDY1MDQzOTk0ZTExYmFmZmVkNTJiYjc4NWMxYmEwYTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogSklUVGh1bmtzOjpKSVRUaHVua3MoKQotICAgIDogbV9ob3N0RnVuY3Rp
b25TdHViTWFwKHN0ZDo6bWFrZV91bmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4oKSkKKyAgICA6
IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChtYWtlVW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGUzODhmYjBl
NjI3MDhiMzRlY2I5NzFlOTQ2YjQ2YjE5M2M0Y2FlM2IuLjhmOWE4NjRlNGZlODYyNmExZmVmYzBj
MzA3YzllNDY1NjYyZjVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApA
QCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsRnJhbWVTaHVmZmxlcj4gZnJhbWVTaHVmZmxlcjsKICAgICBpZiAoY2Fs
bExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSkgewogICAgICAgICBBU1NFUlQoY2FsbExpbmtJ
bmZvLmlzVGFpbENhbGwoKSk7Ci0gICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZs
ZURhdGEoKSk7CisgICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNo
dWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSk7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgLy8gV2Ugd291bGQgaGF2ZSBhbHJlYWR5IGNoZWNr
ZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbCwgYW5kIHdlIGNhbgogICAgICAgICAvLyB1c2Ug
dGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIgdGhpcyBidXlzIHVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApp
bmRleCA0MTIyZmJlZDIyZWUxNTUyM2QxNGU0YTg3OWFiYTFhYjg0Nzg2YTA3Li43MDJkMzY5NGQ5
Zjc2ODg0MjBmMGNkYWJkMTBlODg4YTczM2YyODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAt
Mjk2OSw3ICsyOTY5LDcgQEAgaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGluZSYgb3B0aW9ucywg
Ym9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykKICAgICAgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcih2bSk7CiAKICAgICAgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlICYmICF2bS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXIpCi0gICAgICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOworICAgICAgICAgICAgdm0u
bV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZt
KTsKIAogICAgICAgICBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3Vt
ZW50cyk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChv
cHRpb25zLm1fZW5hYmxlUmVtb3RlRGVidWdnaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCBmOGRiZTcxOTZmMTExNzE2ZDBhNThmN2Y1N2UzZjhmNjdiN2Ey
YWNmLi5hMTY0ZmQ5MDNmMzZlOTQyMGE3MzY0ZWY0MjdjNmMyZmZlMzIyY2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUGFyc2Vy
PExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQ
YXJzZXJCdWlsdGluTW9kZQogICAgICwgbV9pbW1lZGlhdGVQYXJlbnRBbGxvd3NGdW5jdGlvbkRl
Y2xhcmF0aW9uSW5TdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX2RlYnVnZ2VyUGFyc2VEYXRhKGRl
YnVnZ2VyUGFyc2VEYXRhKQogewotICAgIG1fbGV4ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExleGVy
VHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKKyAgICBtX2xleGVyID0gbWFrZVVu
aXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2NyaXB0TW9kZSk7CiAgICAgbV9sZXhl
ci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRp
b24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpOwogICAgIG1fdG9rZW4u
bV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNjlhYTBiYzE5MGFmNjc4M2Q4OTI4YzM1OWFh
M2IxMGJiMWZiZDg3My4uMGE1ZWRlNGI4NDI1Y2ZkMWIzMTdjNzZjNTFlYTczNzgxNzgwYjUyMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMDQsNyArMjA0LDcgQEAg
c3RydWN0IFNjb3BlIHsKICAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyKiBsYWJl
bCwgYm9vbCBpc0xvb3ApCiAgICAgewogICAgICAgICBpZiAoIW1fbGFiZWxzKQotICAgICAgICAg
ICAgbV9sYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExhYmVsU3RhY2s+KCk7CisgICAgICAgICAg
ICBtX2xhYmVscyA9IG1ha2VVbmlxdWU8TGFiZWxTdGFjaz4oKTsKICAgICAgICAgbV9sYWJlbHMt
PmFwcGVuZChTY29wZUxhYmVsSW5mbyB7IGxhYmVsLT5pbXBsKCksIGlzTG9vcCB9KTsKICAgICB9
CiAKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAgICAgICAg
IGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1cnJlbnRMaW5lU3RhcnRP
ZmZzZXQoKTsKICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJy
ZW50T2Zmc2V0KCk7CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IGVuZExvY2F0aW9uLnN0
YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwotICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEsCisgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmRMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0Q29sdW1uLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oCmluZGV4IGRmMTdiZTUzNjYzZTdjYjdiNzBjNDg3NzBmOWEwNTI5Y2YzM2E3
ZWUuLjQxMDAwNmQ5Mjc1MWNlOTZiOTJjYjk2MjU2MzVlYTdjZjc4ZWM0ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllckFyZW5hJiBpZGVudGlmaWVyQXJlbmEo
KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkgKCFtX2lkZW50aWZpZXJBcmVu
YSkpCi0gICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBzdGQ6Om1ha2VfdW5pcXVl
PElkZW50aWZpZXJBcmVuYT4oKTsKKyAgICAgICAgICAgICAgICBtX2lkZW50aWZpZXJBcmVuYSA9
IG1ha2VVbmlxdWU8SWRlbnRpZmllckFyZW5hPigpOwogICAgICAgICAgICAgcmV0dXJuICptX2lk
ZW50aWZpZXJBcmVuYTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKaW5kZXggMDUwMzJiNWQxMzEw
OGMwZWI2MjBlOWRhZTgyMGNlZjdhYzc1MzE4Yy4uMzU3MTFiNWZhNjQyNjllNjc3NGFiNzBlMjFk
ZDUwMjUxNjljOGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcApAQCAtNzksNyArNzksNyBAQCBFeGVjdXRpb25D
b3VudGVyKiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZvcihjb25zdCBPcmlnaW5TdGFj
ayYgb3JpZ2luKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGVjdXRpb25Db3VudGVyPiYgY291
bnRlciA9IG1fY291bnRlcnMuYWRkKG9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghY291bnRlcikKLSAgICAgICAgY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXhl
Y3V0aW9uQ291bnRlcj4oKTsKKyAgICAgICAgY291bnRlciA9IG1ha2VVbmlxdWU8RXhlY3V0aW9u
Q291bnRlcj4oKTsKIAogICAgIHJldHVybiBjb3VudGVyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDcwYzcxNDczMzI0NDQwODA3ODc5MzQwMTk4
NjY3M2M5N2UxZWE4M2QuLmE2NGRlM2ZkZDY2MjU1MThhYzVkMTI2Y2VhYzc4YjZmMjEyNWE0ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTE3NCw3ICsxNzQs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBnZXRTdGFja1RyYWNlKEV4
ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iagogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIHNpemVfdCBmcmFtZXNUb1NraXAgPSB1c2VDdXJyZW50RnJhbWUgPyAwIDogMTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0YWNrRnJhbWU+
PigpOwogICAgIHZtLmludGVycHJldGVyLT5nZXRTdGFja1RyYWNlKG9iaiwgKnN0YWNrVHJhY2Us
IGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2JqZWN0LT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZSgpKTsK
ICAgICBpZiAoIXN0YWNrVHJhY2UtPmlzRW1wdHkoKSkKICAgICAgICAgQVNTRVJUX1VOVVNFRChl
eGVjLCBleGVjID09IHZtLnRvcENhbGxGcmFtZSB8fCBleGVjLT5pc0dsb2JhbEV4ZWMoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcAppbmRleCA0MzllMjA5YjBhNWY4ZmI4MjliNzkxOTc1NzQ4OGM0MTU2MzQyNzNmLi5lZjJl
ODMwODc0MWI4ODUyZTU2MjMyNmY5NjI1N2M5ZDAyOTM1ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTExMCw3
ICsxMTAsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUds
b2JhbENvZGUoCiBGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhKTsKLSAg
ICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICBhdXRv
IHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByYXJlRGF0YS0+bV9saW5l
Q291bnQgPSBsaW5lQ291bnQoKTsKICAgICByYXJlRGF0YS0+bV9lbmRDb2x1bW4gPSBlbmRDb2x1
bW4oKTsKICAgICByYXJlRGF0YS0+bV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJz
U3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUmFyZURhdGEuaAppbmRleCA0NjIzNjQxYzU5OGUzZWJiNWZiYTZiYzAyMzcyNjRlNTA1MmZk
MTc5Li41MmIyOGIxM2M3ZTJlMjVkMjFiYmJhYjNhZDMxZDViNmJjMGNkZWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCkBAIC0xNTYs
NyArMTU2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlvblByb2ZpbGVDbGVh
cmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2gKIGlubGluZSBXYXRjaHBvaW50KiBG
dW5jdGlvblJhcmVEYXRhOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWhhc0FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdX
YXRjaHBvaW50KCkpOwotICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0
aGlzKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CiAgICAgcmV0
dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQuZ2V0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAxYTU3ZWYzZGNmZTkxOWU3MGIzN2ZhN2UzNDg1NGExM2U5MDUzZmFlLi5jYzg3NzY3ZjEwOGJj
YzQ4M2IzMTVmMTEyZmE5YzUzNDdmNTIwMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NzcsOCArNDc3LDggQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9kZWJ1Z2dlciA9IDA7CiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
PigqdGhpcyk7Ci0gICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKKyAgICBtX2luc3BlY3RvckNvbnRyb2xs
ZXIgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gbWFrZVVuaXF1ZTxKU0ds
b2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKICAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUt
PmluaXQoKTsKICAgICBtX2NvbnNvbGVDbGllbnQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNv
bnNvbGVDbGllbnQoKTsKICNlbmRpZgpAQCAtMTE0NSw1NyArMTE0NSw1NyBAQCBjYXBpdGFsTmFt
ZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcg
PyBjYXBpdGFsTmFtZQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBj
b25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0ZXJhdG9yUHJvdG90eXBl
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90
b3R5cGVOZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90
b3R5cGVOZXh0ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVO
ZXh0LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLT5hcnJheVBy
b3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAg
bV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
KTsKKyAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1h
a2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2lu
dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtYXBJdGVyYXRvclBy
b3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9tYXBJdGVyYXRv
clByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBJ
dGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBJ
dGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAg
ewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0
aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVy
YXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dChzZXRJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAg
ICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
KyAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
ICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90
b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldFBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAg
ICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFk
YXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpLCBtX3ZtLnBy
b3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4
dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7
CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRp
dmVXYXRjaHBvaW50KG1fc3RyaW5nUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0cmluZ1Byb3RvdHlw
ZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5n
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFt
ZXMtPnNldCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludCA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50KTsKKyAgICAg
ICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFByb3RvdHlwZVNldFdh
dGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQ
cm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKLSAgICAgICAgbV9zZXRQ
cm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNo
cG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hwb2lu
dCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAg
ICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rvciog
bG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAg
ICAgICB0aGlzLT5zeW1ib2xQcm90b3R5cGUoKTsKIAogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChudW1iZXJQcm90b3R5
cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpOwotICAgICAgICBtX251bWJlclByb3Rv
dHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRp
dGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOworICAgICAgICBtX251bWJlclByb3Rv
dHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwg
bV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOwogICAgICAgICBtX251bWJlclByb3RvdHlwZVRv
U3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG9Ub1N0
cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihudW1iZXJQcm90
b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpKSk7CiAgICAg
fQpAQCAtMTkzMiwxMCArMTkzMiwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxs
QXJyYXlTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludC5pc0JlaW5nV2F0Y2hlZCgpKTsKICAgICBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnQudG91Y2godm0sICJTZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRj
aHBvaW50LiIpOwogCi0gICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5
U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNo
cG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJh
eVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKIAotICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9h
cnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlT
cGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCAwNDdjMTY2NTNlNzFiMWE4MDZiZDlmYzdkNTY2NDNhNWY5
ODhmMTFlLi44NDUzNWNhNWM2MDBjZWNiZDhiNDc4ZjY1YjUzY2QwN2UzNmE4MzlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTUyMSw3
ICs1MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICB7CiAgICAgICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9i
amVjdFJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxKU0dsb2Jh
bE9iamVjdFJhcmVEYXRhPigpOwogICAgIH0KICAgICAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKaW5kZXggMWFmMDAz
NjUzY2I4YzNkZTY0M2Y4YzQ5MTI3YWJiM2U1NTEzZDVhZC4uMzI3ZmVkMDZjNjdhNWJmMTEyNTFm
OWY0ZGVkODM5ZTcwMzNjOGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUnVuTG9vcFRpbWVyLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIEpTUnVuTG9vcFRp
bWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OnNldFJ1bkxvb3AoTWFuYWdlciogbWFuYWdlciwgQ0ZS
dW5Mb29wUgogI2Vsc2UKIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBlclZN
RGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQogICAgIDogcnVuTG9vcCgmUnVuTG9vcDo6Y3VycmVudCgp
KQotICAgICwgdGltZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5hZ2VyPj4o
KnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmly
ZUNhbGxiYWNrKSkKKyAgICAsIHRpbWVyKG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdl
cj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRp
ZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICB0aW1lci0+
c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpKYXZhc2NyaXB0VGltZXIpOwpAQCAt
MTcyLDcgKzE3Miw3IEBAIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyJiBKU1J1bkxvb3BUaW1lcjo6
TWFuYWdlcjo6c2hhcmVkKCkKIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6cmVnaXN0
ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQZXJWTURh
dGE+KCp0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFBlclZNRGF0YT4oKnRoaXMp
OwogI2lmIFVTRShDRikKICAgICBkYXRhLT5zZXRSdW5Mb29wKHRoaXMsIHZtLnJ1bkxvb3AoKSk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCmluZGV4IDVmMDc4ZDJhNTA5ZDJiNDQyMDBmN2E0YWYzODgxMjQ2Y2Iy
ZDU4YTcuLjUyOTAyMGRmMGYxZGMyYTI4NmY4MDBhYmFkOWQ3ZWI3ZDNmOGVlOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxl
OjpnZXREZWxldGVkT2Zmc2V0KCkKIGlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0
ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICghbV9kZWxldGVkT2Zm
c2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFByb3BlcnR5T2Zmc2V0Pj4oKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlx
dWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBl
bmQob2Zmc2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVRhYmxlLmNwcAppbmRleCA1OWVjNDFjNDlhZTgyZjQ3ZjY5ODY4MDZkZDYxNDM5NDRhNDJi
NWQ2Li5iMWJiNjc5MTk5MjY1YWZjYmNjYzgzNjU2ZDhkNTZmYzViNGEzNTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgY29uc3QgUHJvcGVy
dHlUYWJsZSYgb3RoZXIpCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3Iu
CiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVy
Lm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0g
ICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0
cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNl
dHMpOwogfQogCiBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgdW5zaWduZWQg
aW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTEwNyw3ICsx
MDcsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgdW5zaWduZWQgaW5p
dGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYgogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRl
ZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRl
ZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRl
bGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAg
IG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpv
dGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogdm9pZCBQcm9wZXJ0eVRhYmxlOjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4
IDA3MWIxZjY2MzE1Y2UzYWU4ZGNmZTE3NWZmNjM2NmY1YzYzMmFmZmMuLjcwZTU5M2Q1M2ViZGQ4
MWQ4YzA4MTNhMjk3NzBlOTQwY2UwNDExM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVnRXhwOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAKICAgICBtX251bVN1YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBh
dHRlcm5zOwogICAgIGlmICghcGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzLmlzRW1wdHkoKSB8
fCAhcGF0dGVybi5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICBtX3Jh
cmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9j
YXB0dXJlR3JvdXBOYW1lcy5zd2FwKHBhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcyk7CiAgICAg
ICAgIG1fcmFyZURhdGEtPm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5zd2FwKHBhdHRlcm4ubV9u
YW1lZEdyb3VwVG9QYXJlbkluZGV4KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5oCmluZGV4IDM5Y2RkOTExNmUwMjdlM2RiNjA0MGRiZDhmZTUyNzBkMmU5OTVkOGQu
LmU4ZGE4NTI2ZTdjN2U4MWZiZWE3NWM4ODk4ODE2MWI5YWY4OTE3MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0xNjQsNyArMTY0LDcgQEAgY2xhc3MgUmVnRXhw
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgWWFycjo6WWFyckNvZGVCbG9jayYgZW5zdXJl
UmVnRXhwSklUQ29kZSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcmVnRXhwSklUQ29kZSkKLSAg
ICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8WWFycjo6WWFyckNv
ZGVCbG9jaz4oKTsKKyAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IG1ha2VVbmlxdWU8WWFy
cjo6WWFyckNvZGVCbG9jaz4oKTsKICAgICAgICAgcmV0dXJuICptX3JlZ0V4cEpJVENvZGUuZ2V0
KCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDIzN2Q3ZGU2ODhkZDIwNzY1MDIwMTIxNmNkMGQ1
NDY4MGM0OTZlYWEuLmVlNmUxOGNlZmRiZTc5ZjRiYzJlYjIxOTdmZjUzOTEwNGUxZjc5OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
Y3BwCkBAIC00NjksNyArNDY5LDcgQEAgYXV0byBTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1w
bGF0ZU9iamVjdE1hcEltcGwoc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWMKIHsKICAgICBp
ZiAoZGVzdCkKICAgICAgICAgcmV0dXJuICpkZXN0OwotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VV
bmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+KCk7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsK
ICAgICBkZXN0ID0gV1RGTW92ZShyZXN1bHQpOwogICAgIHJldHVybiAqZGVzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDI5M2M0NjQ3MmU3NDg5
NDFjYTljYzJhZGFjMTZhM2QyZGM1ZGVlZWMuLjAxY2QyYmQ1NDdmZTAyYjUwNDdhNmQ0NWIzYzhh
ZDZmZDUyYmRiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIFdhdGNocG9pbnRTZXQqIFN0cnVjdHVyZTo6ZW5zdXJl
UHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQoVk0mIHZtLCBQcm9wZXJ0CiAgICAgU3Ry
dWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+cmFyZURhdGEoKTsKICAgICBpZiAoIXJh
cmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMpIHsKICAgICAgICAgcmFyZURhdGEt
Pm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5p
cXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+KCk7CisgICAgICAg
ICAgICBtYWtlVW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+
KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgfQogICAgIGF1dG8gcmVz
dWx0ID0gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cy0+YWRkKG9mZnNldCwg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YS5jcHAKaW5kZXggOTlhOGQ5ZjdkYWFjMjE3ZTRjODFlN2U3MTI2ZTljMDJiMzc0
ZWQzZi4uZDNjZjE4M2IwZjZkN2M0ODk4ODAwYWI2OGVlNDhjZDEyOGY3ZmUyNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3Ry
aW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyCiAgICAgQVNTRVJUKGNv
bmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHkoKSk7CiAgICAgZm9yIChPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgaWYg
KGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNl
bmNlKSB7Ci0gICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVl
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0aGlzKTsKKyAgICAg
ICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOwogICAgICAgICAgICAgbV9vYmplY3RUb1N0
cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVdhdGNocG9pbnRT
ZXQuYWRkKGNvbmRpdGlvbiwgdGhpcyktPmluc3RhbGwodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDM5MmYyMTdjMTRlZmFlYjU0NWJm
MGQ0Zjc3OTBjMTEyNzkzMmJjODUuLmE0YTg3MGZjMWZjYWQzNWM0Mzk1ZjEwOWIyMmE5OWM0MjBk
NzQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCBjb25zdCBTeW1ib2xUYWJsZTo6TG9jYWxUb0VudHJ5VmVj
JiBTeW1ib2xUYWJsZTo6bG9jYWxUb0VudHJ5KGNvbnN0IENvbmN1cnJlbnRKUwogICAgICAgICAg
ICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBvZmZzZXQuc2NvcGVPZmZzZXQoKS5vZmZzZXQo
KSArIDEpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIG1fbG9jYWxUb0VudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIpOworICAgICAgICBtX2xv
Y2FsVG9FbnRyeSA9IG1ha2VVbmlxdWU8TG9jYWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsK
ICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbWFwKSB7CiAgICAgICAgICAgICBWYXJPZmZz
ZXQgb2Zmc2V0ID0gZW50cnkudmFsdWUudmFyT2Zmc2V0KCk7CiAgICAgICAgICAgICBpZiAob2Zm
c2V0LmlzU2NvcGUoKSkKQEAgLTE1OSw3ICsxNTksNyBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFi
bGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgcmVzdWx0LT5tX2FyZ3VtZW50cy5z
ZXQodm0sIHJlc3VsdCwgYXJndW1lbnRzKTsKICAgICAKICAgICBpZiAobV9yYXJlRGF0YSkgewot
ICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxl
UmFyZURhdGE+KCk7CisgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8U3lt
Ym9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLmJlZ2luKCk7CkBAIC0xOTEsNyArMTkxLDcgQEAg
dm9pZCBTeW1ib2xUYWJsZTo6cHJlcGFyZUZvclR5cGVQcm9maWxpbmcoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAg
ICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAg
Zm9yIChhdXRvIGl0ZXIgPSBtX21hcC5iZWdpbigpLCBlbmQgPSBtX21hcC5lbmQoKTsgaXRlciAh
PSBlbmQ7ICsraXRlcikgewogICAgICAgICBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLnNldChp
dGVyLT5rZXksIFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKTsKQEAgLTIxMCw3
ICsyMTAsNyBAQCBDb2RlQmxvY2sqIFN5bWJvbFRhYmxlOjpyYXJlRGF0YUNvZGVCbG9jaygpCiB2
b2lkIFN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBt
YWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICBBU1NFUlQoIW1fcmFyZURh
dGEtPm1fY29kZUJsb2NrKTsKICAgICBtX3JhcmVEYXRhLT5tX2NvZGVCbG9jay5zZXQoKmNvZGVC
bG9jay0+dm0oKSwgdGhpcywgY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5jcHAKaW5kZXggNDEwZWI2ZDVhZTE2ZjM2MDIyNmRiMzgyM2Y3ZWU4MjhlY2Nh
YjM4My4uNDFhY2E5ZDNkNGQ5YjhhNTZhZTY4NTIzMGU4ZDY2NzUyYWMwZDAyOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCgpCiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fcHJvdG8tPnByb3BlcnR5SGFzaCgpKTsKICAgICB9CiAKLSAgICBtX3Byb3BlcnR5SGFz
aCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIG1f
cHJvcGVydHlIYXNoID0gbWFrZVVuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAg
ICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDRlMmQwZDMyNGEyNGUyMzJjZDE5NTM4OTJlZDhiMGEzM2IwYjA1ZWUuLmI3
MDkyYzA4ZWY3MmIwZWNhODlmZjBiNWM0YmUxYWU1OWFhMWRiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTI1MiwxOCArMjUyLDE4IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcnVuTG9vcChDRlJ1bkxvb3BHZXRDdXJy
ZW50KCkpCiAjZW5kaWYgLy8gVVNFKENGKQogICAgICwgaGVhcCh0aGlzLCBoZWFwVHlwZSkKLSAg
ICAsIGZhc3RNYWxsb2NBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxGYXN0TWFsbG9jQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0
ZDo6bWFrZV91bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6
UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQot
ICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBl
PihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxp
YXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3Vu
aXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQotICAgICwgY2VsbEhlYXBD
ZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9l
c05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0
dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgc3Ry
aW5nSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkp
Ci0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIGZhc3RNYWxsb2NBbGxv
Y2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAg
ICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKKyAgICAsIGpzVmFsdWVHaWdh
Y2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4o
R2lnYWNhZ2U6OkpTVmFsdWUpKQorICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlx
dWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5
cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQorICAgICwg
Y2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMo
RG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQorICAgICwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJp
YnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQorICAgICwgc3RyaW5n
SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBk
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZT4oKSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJB
c3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVh
cENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlw
ZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5
RnVuY3Rpb25IZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxXZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlPigpKQogI2VuZGlmCiAgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNl
N2NkNzYyCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdh
Y2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFs
dWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYKQEAgLTI5Niw3ICsy
OTYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBt
X2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0
b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFt
ZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKLSAgICAsIG1hY2hpbmVD
b2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNp
bXBsZVN0YXRzPigpKQorICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJh
c2VsaW5lSklUKG1ha2VVbmlxdWU8U2ltcGxlU3RhdHM+KCkpCiAgICAgLCBjdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykKICAgICAsIHN0cmluZ0NhY2hlKCp0aGlzKQogICAgICwg
c3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0aGlzKQpAQCAtMzEyLDggKzMxMiw4IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faW5pdGlhbGl6aW5nT2Jq
ZWN0Q2xhc3MoMCkKICNlbmRpZgogICAgICwgbV9zdGFja1BvaW50ZXJBdFZNRW50cnkoMCkKLSAg
ICAsIG1fY29kZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUNhY2hlPigpKQotICAgICwgbV9i
dWlsdGluRXhlY3V0YWJsZXMoc3RkOjptYWtlX3VuaXF1ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0
aGlzKSkKKyAgICAsIG1fY29kZUNhY2hlKG1ha2VVbmlxdWU8Q29kZUNhY2hlPigpKQorICAgICwg
bV9idWlsdGluRXhlY3V0YWJsZXMobWFrZVVuaXF1ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0aGlz
KSkKICAgICAsIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50KDApCiAgICAgLCBtX3ByaW1pdGl2
ZUdpZ2FjYWdlRW5hYmxlZChJc1dhdGNoZWQpCiAgICAgLCBtX2NvbnRyb2xGbG93UHJvZmlsZXJF
bmFibGVkQ291bnQoMCkKQEAgLTQwNyw3ICs0MDcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKCp0
aGlzKTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlUHJvZmlsZXIoKSkpIHsK
LSAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxl
cjo6RGF0YWJhc2U+KCp0aGlzKTsKKyAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFr
ZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKIAogICAgICAgICBTdHJpbmdQcmlu
dFN0cmVhbSBwYXRoT3V0OwogICAgICAgICBjb25zdCBjaGFyKiBwcm9maWxlclBhdGggPSBnZXRl
bnYoIkpTQ19QUk9GSUxFUl9QQVRIIik7CkBAIC00MjMsNyArNDIzLDcgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIC8vIHdvbid0IHVzZSB0aGlzLgogICAg
IG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgU2ltcGxlVHlwZWRBcnJheUNv
bnRyb2xsZXIoKSk7CiAKLSAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsKKyAgICBtX2J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnk+KCp0aGlzKTsKIAogICAgIGlmIChPcHRpb25zOjp1c2VUeXBlUHJvZmlsZXIoKSkKICAgICAg
ICAgZW5hYmxlVHlwZVByb2ZpbGVyKCk7CkBAIC00NDIsOSArNDQyLDkgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19Q
Uk9GSUxFUikKIAogICAgIGlmIChPcHRpb25zOjp1c2VSYW5kb21pemluZ0Z1enplckFnZW50KCkp
Ci0gICAgICAgIHNldEZ1enplckFnZW50KHN0ZDo6bWFrZV91bmlxdWU8UmFuZG9taXppbmdGdXp6
ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxSYW5k
b21pemluZ0Z1enplckFnZW50PigqdGhpcykpOwogICAgIGVsc2UgaWYgKE9wdGlvbnM6OnVzZURv
dWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRGdXp6ZXJBZ2VudChzdGQ6
Om1ha2VfdW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAg
ICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+
KCp0aGlzKSk7CiAKICAgICBpZiAoT3B0aW9uczo6YWx3YXlzR2VuZXJhdGVQQ1RvQ29kZU9yaWdp
bk1hcCgpKQogICAgICAgICBzZXRTaG91bGRCdWlsZFBDVG9Db2RlT3JpZ2luTWFwcGluZygpOwpA
QCAtNDU3LDkgKzQ1Nyw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0
IHRoZSBKSVQgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZCBpbiBub24tY29tcGlsYXRp
b24gdGhyZWFkcy4KICAgICBpZiAoY2FuVXNlSklUKCkpIHsKLSAgICAgICAgaml0U3R1YnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKKyAgICAgICAgaml0U3R1YnMgPSBtYWtlVW5p
cXVlPEpJVFRodW5rcz4oKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICAgICAgZnRsVGh1bmtz
ID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKKyAgICAgICAgZnRsVGh1bmtzID0g
bWFrZVVuaXF1ZTxGVEw6OlRodW5rcz4oKTsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAg
ICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwog
ICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3Ry
dWN0KTsKQEAgLTYxOSw3ICs2MTksNyBAQCBXYXRjaGRvZyYgVk06OmVuc3VyZVdhdGNoZG9nKCkK
IEhlYXBQcm9maWxlciYgVk06OmVuc3VyZUhlYXBQcm9maWxlcigpCiB7CiAgICAgaWYgKCFtX2hl
YXBQcm9maWxlcikKLSAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhl
YXBQcm9maWxlcj4oKnRoaXMpOworICAgICAgICBtX2hlYXBQcm9maWxlciA9IG1ha2VVbmlxdWU8
SGVhcFByb2ZpbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2hlYXBQcm9maWxlcjsKIH0KIApA
QCAtMTA0MSw4ICsxMDQxLDggQEAgc3RhdGljIGJvb2wgZGlzYWJsZVByb2ZpbGVyV2l0aFJlc3Bl
Y3RUb0NvdW50KHVuc2lnbmVkJiBjb3VudGVyLCBjb25zdCBGdW5jJiBkb0QKIGJvb2wgVk06OmVu
YWJsZVR5cGVQcm9maWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVUeXBlUHJvZmlsZXIgPSBbdGhp
c10gKCkgewotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
VHlwZVByb2ZpbGVyPigpOwotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlckxvZyA9IHN0ZDo6
bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CisgICAgICAgIHRoaXMtPm1fdHlw
ZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXI+KCk7CisgICAgICAgIHRoaXMtPm1f
dHlwZVByb2ZpbGVyTG9nID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXJMb2c+KCp0aGlzKTsKICAg
ICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KG1fdHlw
ZVByb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVUeXBlUHJvZmlsZXIpOwpAQCAtMTA2MSw3ICsx
MDYxLDcgQEAgYm9vbCBWTTo6ZGlzYWJsZVR5cGVQcm9maWxlcigpCiBib29sIFZNOjplbmFibGVD
b250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93UHJvZmlsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CisgICAgICAgIHRoaXMtPm1f
Y29udHJvbEZsb3dQcm9maWxlciA9IG1ha2VVbmlxdWU8Q29udHJvbEZsb3dQcm9maWxlcj4oKTsK
ICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KG1f
Y29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudCwgZW5hYmxlQ29udHJvbEZsb3dQcm9maWxl
cik7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFZNOjpkdW1wVHlwZVByb2ZpbGVyRGF0YSgp
CiAKIHZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKIHsKLSAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0aGlzLCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHRhc2spKSk7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxRdWV1ZWRU
YXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFZN
OjpkcmFpbk1pY3JvdGFza3MoKQpAQCAtMTIzMCwxNCArMTIzMCwxNCBAQCB2b2lkIFZNOjplbnN1
cmVTaGFkb3dDaGlja2VuKCkKIHsKICAgICBpZiAobV9zaGFkb3dDaGlja2VuKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9zaGFkb3dDaGlja2VuID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dDaGlj
a2VuPigpOworICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8U2hhZG93Q2hpY2tlbj4o
KTsKIH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
bmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCiAgICAgSXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNT
bG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBh
dXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBl
LCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCiAgICAgICAgIG1f
IyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgp
OyBcCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYQogICAgIElz
b1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7IFwKICAgICAgICAgQVNTRVJUKCFt
XyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VB
bmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAg
ICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAgICAgICAgV1RGOjpzdG9yZVN0b3Jl
RmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCiAgICAgICAg
IHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAyNGYxOGFkMDJkZTJmZWY5MDA5MzQ0
ODY0MzBjOThmZTk0OTQyNGVmLi41MzM5M2NiMjU4Zjc0MmM2YWNmZGRlYWVjNmM3MTc1NjQ0ZDc5
NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVy
YXRvci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAgICAg
dm9pZCBlbWl0UGF0Y2hwb2ludChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrLCBCMzo6UGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaCwgVG1wIHJlc3VsdCwgVmVjdG9yPENvbnN0cmFpbmVkVG1wLCBpbmxpbmVT
aXplPiYmIGFyZ3MpCiAgICAgewogICAgICAgICBpZiAoIW1fcGF0Y2hwb2ludFNwZWNpYWwpCi0g
ICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBhdGNocG9p
bnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hw
b2ludFNwZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIG1fcGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0
aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5p
cXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSkpOwogCiAgICAgICAgIEluc3QgaW5zdChQYXRj
aCwgcGF0Y2gsIEFyZzo6c3BlY2lhbChtX3BhdGNocG9pbnRTcGVjaWFsKSk7CiAgICAgICAgIElu
c3QgcmVzdWx0TW92OwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsK
IAogICAgICAgICAvLyBGSVhNRTogTWFrZSBhIGhhc2htYXAgb2YgdGhlc2UuCiAgICAgICAgIEIz
OjpDaGVja1NwZWNpYWw6OktleSBrZXkoYnJhbmNoKTsKLSAgICAgICAgQjM6OkNoZWNrU3BlY2lh
bCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwqPihtX2NvZGUuYWRkU3Bl
Y2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtleSkpKTsKKyAgICAgICAg
QjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwq
PihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtleSkpKTsK
IAogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBkdW1teSB2YWx1ZXMKICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0MApA
QCAtMjEzOSwxMCArMjEzOSwxMCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBC
Mzo6T3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwg
U3RyaW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxl
bmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENv
dW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7Cisg
ICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAKLSAgICBj
b21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50
SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25D
b250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigp
OworICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8
Q0NhbGxIZWxwZXJzPigpOwogCiAgICAgQjM6OlByb2NlZHVyZSBwcm9jZWR1cmU7CiAgICAgQ29k
ZSYgY29kZSA9IHByb2NlZHVyZS5jb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMjA5NDE3N2VkNmYxODNhYjRkODYyZWMy
MjY3ZDMwZjI4YjdkZTViNi4uMTU4ZGY5ZmE5ZjBjOWY3MjFhYzI5Mjc3ODE4OGRjZjI4ZTcwN2Zm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcApAQCAtMTU1MSwxMCArMTU1MSwxMCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6Om9yaWdpbigp
IC0+IE9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4s
IFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25D
b250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5n
dGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNt
Q2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYg
aW5mbywgTWVtb3J5TW9kZSBtb2RlLCBDb21waWxhdGlvbk1vZGUgY29tcGlsYXRpb25Nb2RlLCB1
aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNl
cHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVy
RW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOwotICAgIGNv
bXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0Nh
bGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRK
SVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQu
d2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKIAogICAgIFBy
b2NlZHVyZSBwcm9jZWR1cmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQ
bGFuLmNwcAppbmRleCBmOTg1ZDUyM2MyZTkzZjNiZDIzZmI3YzU3MTJiNTg2OGNjMTZhNjg1Li41
MDZkZjRiZWZkMGQ1NjQxODQ0Y2U1Mjc5NTExNWY2MTI4NzE2MWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBC
QlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
bV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVudHJ5cG9pbnQuY29tcGls
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisgICAgICAgICAgICAg
ICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVudHJ5cG9pbnQuY29t
cGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAg
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIldlYkFz
c2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIGZ1bmN0aW9uSW5kZXgsIHNpZ25h
dHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1
bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChm
dW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLAogICAgICAgICAgICAgICAgICAg
ICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7CiAgICAgICAgICAg
ICB9CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0
aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGls
YXRpb24+KAorICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+
ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAg
ICAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9u
UHRyVGFnLCAiRW1iZWRkZXItPldlYkFzc2VtYmx5IGVudHJ5cG9pbnRbJWldICVzIG5hbWUgJXMi
LCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFr
ZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRp
b24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgp
KSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250ZXh0LmVtYmVkZGVyRW50cnlwb2lu
dEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdQbGFuLmNwcAppbmRleCBjNTEzZmQyZjUwZWQ2ZmIxN2MzMzg1ZWYyOTA1Mjc4MTcz
OTIxMDM3Li4wZDdhMDNjMzYxMjljZDFkZTJjNTRmZmNkNTAyOTViNTZjNWI4OTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEIzOjpDb21waWxhdGlvbj4oCisgICAgb21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VV
bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVy
LCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2ViQXNzZW1ibHkgT01HIGZ1bmN0aW9uWyVpXSAlcyBu
YW1lICVzIiwgbV9mdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxl
SW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lp
KCkuZGF0YSgpKSwKICAgICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9k
dWN0cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29y
a2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApp
bmRleCAzNmQ3NGMxNGIxOGM3MDdiODEyYTA0ODdmOTFlMjljMzg1MzkxZGUyLi42NjBmOTU2NTcz
OGIxMGEzMGYzZTdjYzgxOGEzMmM4NTg3ODIxMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBXb3JrbGlzdDo6V29y
a2xpc3QoKQogICAgIG1fdGhyZWFkcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDb21waWxhdGlv
blRocmVhZHMpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNvbXBpbGF0aW9uVGhyZWFkczsgaSsrKQotICAgICAg
ICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2xpc3Q6OlRo
cmVhZD4obG9ja2VyLCAqdGhpcykpOworICAgICAgICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5k
KG1ha2VVbmlxdWU8V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykpOwogfQogCiBXb3Jr
bGlzdDo6fldvcmtsaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNt
LmNwcAppbmRleCA1ZGQ0NTFiZWE4NGQ1OTBiYmYwZmNiMDc2ZTI2ZmZkM2NjN2I4MWFjLi43MzUy
MjAyODkzN2M2ZGFjMWZjNDczYzdlNGNkYzY0OTU4Y2U4ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25D
b250ZXh0JiBjb21wCiB7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29tcGlsYXRpb25Db250
ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVDsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwog
CiAgICAgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFzIGNvZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdmMDMzZmVjMWMzNjlhOTQyM2IzM2Nm
OGViMzMzNGM1MWNlMDgwOGIuLmM0Yjc3Y2FkYmU1ZWVhNTczZWM4NTJiOTVlZjZhNzg5YjgyODUz
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cApAQCAtMTcwNiw3ICsxNzA2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgICAg
IGR1bXBEaXNqdW5jdGlvbihtX2JvZHlEaXNqdW5jdGlvbi5nZXQoKSk7CiAjZW5kaWYKIAotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9i
b2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0
b3IsIGxvY2spOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdU
Rk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJu
LCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tJbnB1dCh1bnNpZ25l
ZCBjb3VudCkKQEAgLTE5MjYsNyArMTkyNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAg
ICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCA9IHBhcmVudGhlc2VzQmVnaW4uYXRvbS5zdWJwYXR0
ZXJuSWQ7CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBsYXN0U3VicGF0dGVy
bklkIC0gc3VicGF0dGVybklkICsgMTsKLSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBj
YWxsRnJhbWVTaXplKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFr
ZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsK
IAogICAgICAgICB1bnNpZ25lZCBmaXJzdFRlcm1JblBhcmVudGhlc2VzID0gYmVnaW5UZXJtICsg
MTsKICAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+dGVybXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShlbmRUZXJtIC0gZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyArIDIpOwpAQCAtMTk5Nyw3
ICsxOTk3LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKIAogICAgIHZvaWQgcmVnZXhCZWdpbih1
bnNpZ25lZCBudW1TdWJwYXR0ZXJucywgdW5zaWduZWQgY2FsbEZyYW1lU2l6ZSwgYm9vbCBvbmNl
VGhyb3VnaCkKICAgICB7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAg
ICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVt
U3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbihvbmNlVGhyb3VnaCkp
OwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbMF0uZnJhbWVMb2NhdGlvbiA9IDA7
CiAgICAgICAgIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcAppbmRleCA3YTdjMjA2YzdlNDM1OTdjZmU0YzRkNGRjYThhMDdh
YzVhYzFmNjYwLi44YWI2MmI3YmEzOTgxMDUxZWJiZGFjZDZlNDdhMDU4YWFkZDNkOWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMzg5OSw3ICszODk5LDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6ZHVtcFJlZ0V4cERpc2Fzc2VtYmx5KCkpKQotICAg
ICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnJEaXNhc3NlbWJs
ZXI+KHRoaXMpOworICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPFlhcnJE
aXNhc3NlbWJsZXI+KHRoaXMpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAg
ICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRTdGFydE9mQ29kZShsYWJlbCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCA0OWY3N2Y2OWM2ODVjNjUy
MDNkZjNmMDM0YzkwZDE4NzdjOTJkYzliLi5mY2M1MWIyNzdmNTAxMTAzYjdjNjViYmQzM2E1Y2E0
MTBkODFjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CkBAIC0yNDAsNyArMjQwLDcgQEAgY2xhc3MgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvciB7CiAg
ICAgewogICAgICAgICBjb2FsZXNjZVRhYmxlcygpOwogCi0gICAgICAgIGF1dG8gY2hhcmFjdGVy
Q2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpOworICAgICAgICBhdXRv
IGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKIAogICAgICAg
ICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLnN3YXAobV9tYXRjaGVzKTsKICAgICAgICAgY2hh
cmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLnN3YXAobV9yYW5nZXMpOwpAQCAtNDQxLDcgKzQ0MSw3IEBA
IGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAsIG1fY2hhcmFjdGVyQ2xh
c3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2UoKSwgcGF0dGVybi51bmljb2RlKCkgPyBD
YW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNTMikKICAgICAgICAgLCBt
X3N0YWNrTGltaXQoc3RhY2tMaW1pdCkKICAgICB7Ci0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBt
YWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9k
eSA9IGJvZHkuZ2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRl
cm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1v
dmUoYm9keSkpOwpAQCAtNDU2LDcgKzQ1Niw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0
b3IgewogICAgICAgICBtX3BhdHRlcm4ucmVzZXRGb3JSZXBhcnNpbmcoKTsKICAgICAgICAgbV9j
aGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnJlc2V0KCk7CiAKLSAgICAgICAgYXV0byBib2R5ID0g
c3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgIGF1dG8gYm9k
eSA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4u
bV9ib2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5l
d0FsdGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQo
V1RGTW92ZShib2R5KSk7CkBAIC02MDgsNyArNjA4LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25z
dHJ1Y3RvciB7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUKCFvcHRHcm91cE5h
bWUpOwogCi0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKKyAgICAgICAgYXV0byBw
YXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1f
YWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0
ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiwgc3VicGF0dGVy
bklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBjYXB0dXJlLCBmYWxzZSkpOwogICAg
ICAgICBtX2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJu
YXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3Zl
KHBhcmVudGhlc2VzRGlzanVuY3Rpb24pKTsKQEAgLTYxNiw3ICs2MTYsNyBAQCBjbGFzcyBZYXJy
UGF0dGVybkNvbnN0cnVjdG9yIHsKIAogICAgIHZvaWQgYXRvbVBhcmVudGhldGljYWxBc3NlcnRp
b25CZWdpbihib29sIGludmVydCA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgYXV0byBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1f
YWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBtYWtl
VW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CiAgICAgICAgIG1fYWx0
ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFy
ZW50aGV0aWNhbEFzc2VydGlvbiwgbV9wYXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgKyAxLCBwYXJl
bnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBmYWxzZSwgaW52ZXJ0KSk7CiAgICAgICAgIG1fYWx0
ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgpOwog
ICAgICAgICBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb24gPSBpbnZlcnQ7CkBAIC03MDcs
NyArNzA3LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICBQ
YXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRp
dmVzW2FsdF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWZpbHRlclN0YXJ0c1dpdGhCT0wgfHwg
IWFsdGVybmF0aXZlLT5tX3N0YXJ0c1dpdGhCT0wpIHsKICAgICAgICAgICAgICAgICBpZiAoIW5l
d0Rpc2p1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgICAgICAgICAgICAg
IG5ld0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAg
ICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uLT5tX3BhcmVudCA9IGRpc2p1bmN0aW9uLT5t
X3BhcmVudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVy
bmF0aXZlKiBuZXdBbHRlcm5hdGl2ZSA9IG5ld0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2
ZSgpOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBZYXJyUGF0dGVybjo6ZHVtcFBhdHRlcm4o
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGFueWNoYXJDcmVhdGUoKQogewotICAgIGF1dG8gY2hh
cmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpOworICAgIGF1
dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwogICAgIGNo
YXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgwMCwgMHg3Zikp
OwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBwZW5kKENoYXJhY3RlclJh
bmdlKDB4MDA4MCwgMHgxMGZmZmYpKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9jaGFyYWN0ZXJX
aWR0aHMgPSBDaGFyYWN0ZXJDbGFzc1dpZHRoczo6SGFzQm90aEJNUEFuZE5vbkJNUDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4IDBiN2RiMmViYThhZDUyZGVk
MmI1ZjdlNjdlNTQ1YjhjMTZjOTQ1YzcuLjdlODJjODU1YTg3OGU2YzE4MGVkNTIxZjFmN2FkNDhk
OGMxZmJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0
ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaApAQCAt
MzQxLDcgKzM0MSw3IEBAIHN0cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb24gewogICAgIAogICAgIFBh
dHRlcm5BbHRlcm5hdGl2ZSogYWRkTmV3QWx0ZXJuYXRpdmUoKQogICAgIHsKLSAgICAgICAgbV9h
bHRlcm5hdGl2ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkFsdGVybmF0aXZlPih0
aGlzKSk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChtYWtlVW5pcXVlPFBhdHRlcm5B
bHRlcm5hdGl2ZT4odGhpcykpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGF0dGVybkFs
dGVybmF0aXZlKj4obV9hbHRlcm5hdGl2ZXMubGFzdCgpLmdldCgpKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzCmluZGV4IGMxZjlm
OTlkZTA5MWNlY2IyZTFkYjU1YzM4ZmEzNjAzMTFlZTM3ZjQuLjY5Y2Q4ODg2NTc4NTRjZDU0NDVm
ODYzZTIyZDU1ZmZiOWM0MGVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
Y3JlYXRlX3JlZ2V4X3RhYmxlcwpAQCAtOTUsMTEgKzk1LDExIEBAIGZvciBuYW1lLCBjbGFzc2Vz
IGluIHR5cGVzLml0ZW1zKCk6CiAgICAgZnVuY3Rpb24gKz0gKCJ7XG4iKQogICAgIGlmIGVtaXRU
YWJsZXMgYW5kIGNsYXNzZXNbIlVzZVRhYmxlIl06CiAgICAgICAgIGlmICJJbnZlcnNlIiBpbiBj
bGFzc2VzOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIHRydWUpO1xuIiAl
IChjbGFzc2VzWyJJbnZlcnNlIl0pKQorICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0
byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIHRy
dWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQogICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCisgICAgICAg
ICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxD
aGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkKICAgICBlbHNlOgot
ICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtl
X3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCisgICAgICAgIGZ1bmN0aW9uICs9ICgiICAg
IGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpO1xuIikK
ICAgICBoYXNCTVBDaGFyYWN0ZXJzID0gRmFsc2UKICAgICBoYXNOb25CTVBDaGFyYWN0ZXJzID0g
RmFsc2UKICAgICBmb3IgKG1pbiwgbWF4KSBpbiByYW5nZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlU
YWJsZXMucHkKaW5kZXggZjlmZWY0NjhkMmI1ZGRhNmFhZWVhYjBiM2ZjMDU4Y2QzZWVjZWFjMS4u
NTI2ZmI2ZTdhYzNhMjI3YTZkNDNjYmJlZmQyNzAyZDFhMGM1NGNlOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVz
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQ
cm9wZXJ0eVRhYmxlcy5weQpAQCAtNTI5LDcgKzUyOSw3IEBAIGRlZiBkdW1wTWF0Y2hEYXRhKHNl
bGYsIGZpbGUsIHZhbHVlc1BlckxpbmUsIGRhdGFMaXN0LCBmb3JtYXR0ZXIpOgogICAgIGRlZiBk
dW1wKHNlbGYsIGZpbGUsIGNvbW1hQWZ0ZXIpOgogICAgICAgICBmaWxlLndyaXRlKCJzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiB7fSgpXG57e1xuIi5mb3JtYXQoc2VsZi5n
ZXRDcmVhdGVGdW5jTmFtZSgpKSkKICAgICAgICAgZmlsZS53cml0ZSgiICAgIC8vIE5hbWUgPSB7
fSwgbnVtYmVyIG9mIGNvZGVQb2ludHM6IHt9XG4iLmZvcm1hdChzZWxmLm5hbWUsIHNlbGYuY29k
ZVBvaW50Q291bnQpKQotICAgICAgICBmaWxlLndyaXRlKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KFxuIikKKyAgICAgICAgZmlsZS53
cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNz
PihcbiIpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0
PFVDaGFyMzI+KCIpCiAgICAgICAgIHNlbGYuZHVtcE1hdGNoRGF0YShmaWxlLCA4LCBzZWxmLm1h
dGNoZXMsIGxhbWJkYSBmaWxlLCBtYXRjaDogKGZpbGUud3JpdGUoInswOjA9IzR4fSIuZm9ybWF0
KG1hdGNoKSkpKQogICAgICAgICBmaWxlLndyaXRlKCIpLFxuIikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcCBiL1NvdXJjZS9XVEYvYmVuY2ht
YXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcAppbmRleCBjYzcwN2RlM2ZmNGVjMTM4Y2ZhNDZhYjRj
OGUxM2FiYjY1OTNjYmExLi44Yzk3YzFhMjQxYjcyOWFmOGYzMWYzNTljN2Y1MTc3YTYzNDA5ZGFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAK
KysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCkBAIC02MSw4
ICs2MSw4IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHN0YXRpYyB2b2lkIHJ1bihjb25zdCBj
aGFyKiBuYW1lKQogICAgIHsKICAgICAgICAgTG9ja1R5cGUgbG9jazsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWRb
XT4obnVtVGhyZWFkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltd
PiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkW10+KG51bVRocmVhZHMpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZHMpOwogICAg
IAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAgYi9Tb3VyY2UvV1RG
L2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggZjE1NjUwZDRjOWM4ZmE2NzcwZjg5
MTJmMDlkZmUzOTI5MTMwN2MzNC4uYmU3YWJhMzkwZWI1M2UzNTgxZTM2ZjRhOGI5NTAwZDBlMjk5
Zjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcApAQCAtNzQsOSAr
NzQsOSBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlw
ZT4KICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Bl
ckdyb3VwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPExvY2tUeXBlPltd
PiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdpdGhQYWRkaW5nPExv
Y2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0
aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1U
aHJlYWRzUGVyR3JvdXApOwogCiAgICAgICAgIHZvbGF0aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oIGIvU291
cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCmluZGV4IDBiNTQxYjhjNzNkMGY1OTg2NTFi
Zjk1ZTc2OTNiODA3Yzk5OWY3OGEuLjg4NGVkNzMyMzM3NjFhMjlmYjQ5NmYwYWQwOTg5Njc1NDVl
NzAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKQEAgLTI1NCw3ICsyNTQsNyBAQCBj
bGFzcyBDb25jdXJyZW50VmVjdG9yIGZpbmFsIHsKICAgICB2b2lkIGFsbG9jYXRlU2VnbWVudCgp
CiAgICAgewogICAgICAgICBtX3NlZ21lbnRzLmdyb3cobV9udW1TZWdtZW50cyArIDEpOwotICAg
ICAgICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBzdGQ6Om1ha2VfdW5pcXVlPFNlZ21l
bnQ+KCk7CisgICAgICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9IG1ha2VVbmlxdWU8
U2VnbWVudD4oKTsKICAgICB9CiAKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAppbmRleCA4M2MyMDc1MWY4NWY0ZTRkMjAx
NTYxNDQxY2E4MzE0MWNiNWMzN2ZmLi5jNjNjMDU1YTBhMDM0MWRmNmE1YWYyNzBhNGFjY2I4ZDU3
ZDc4NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApAQCAt
NzMsNyArNzMsNyBAQCB2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnRhc2tSdW5Mb29wKCkK
IAogICAgIHdoaWxlICghbV90YXNrUXVldWUuaXNLaWxsZWQoKSkgewogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wg
PSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNl
KSA/IHN0ZDo6bWFrZV91bmlxdWU8QXV0b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKKyAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9kcmFpbmVkUG9vbCA9
IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpVc2Up
ID8gbWFrZVVuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOwogCiAgICAgICAgICAg
ICBtX3Rhc2tRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBlcmZvcm1UYXNrKCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RNYWxsb2MuaAppbmRleCBlZmVmYjNhMzEzM2U4M2Y2NDMzNmZkMmVjMmRhNTJhNTQ4MzJl
NjIxLi45NWI2NzU5NzJkMzEwZTNkZGJkNDEzZDRhOGY4ZDEyODhmMjBmYWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1h
bGxvYy5oCkBAIC0zMDEsOSArMzAxLDExIEBAIHVzaW5nIFdURjo6ZmFzdEFsaWduZWRGcmVlOwog
I2RlZmluZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBcCiBwdWJsaWM6IFwKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNz
OyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xv
bkFmdGVyVGhpc01hY3JvCiAKICNkZWZpbmUgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
IFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFz
dEFsbG9jYXRlZENsYXNzOyBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWlj
b2xvbkFmdGVyVGhpc01hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRT
dHJlYW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAppbmRleCAzZTI1
M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFlZmM3Y2E3OWI2NGVhLi43MDc0YzAzYWJhZjhmY2YzOTc3
ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJp
bnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVhbT4gRmlsZVByaW50
U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb24KICAgICBpZiAoIWZpbGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmls
ZVByaW50U3RyZWFtPihmaWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWxlUHJpbnRTdHJl
YW0+KGZpbGUpOwogfQogCiB2b2lkIEZpbGVQcmludFN0cmVhbTo6dnByaW50Zihjb25zdCBjaGFy
KiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmluZGV4IDA1ZTM2OTc4MjViYzNk
MzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4M2UuLjBiNzk1ODY3NDgwZmQwMzIyNDEyNDU0ZTdkMGFm
ODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKKysrIGIv
U291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtNjcsMTEgKzY3LDExIEBAIGNsYXNzIEZ1bmN0
aW9uPE91dChJbi4uLik+IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwg
Y2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJs
ZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Bv
aW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZl
cmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24oQ2FsbGFi
bGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjptYWtl
X3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+
PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1h
a2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4u
Pj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8
RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVu
Y3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjpt
YWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGYpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIobWFrZVVu
aXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihX
VEZNb3ZlKGYpKSkgeyB9CiAKICAgICBPdXQgb3BlcmF0b3IoKShJbi4uLiBpbikgY29uc3QKICAg
ICB7CkBAIC04NCwxNCArODQsMTQgQEAgY2xhc3MgRnVuY3Rpb248T3V0KEluLi4uKT4gewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6Omlz
X2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlw
ZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2
YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxs
YWJsZSkKICAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZN
b3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxE
ZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3Zl
KGNhbGxhYmxlKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+
Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oRnVuY3Rpb25UeXBlIGYpCiAgICAgewot
ICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxs
YWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CisgICAg
ICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBl
cjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAzYjFlOTUzMDNkZTU0MDUxNDNmYjU2
M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQwNzdmODRmMDJhMWZhMWMxYmUwMzRhODZlYjM1MGQ2ZDdm
NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNTg4LDEwICs1ODgsMTAgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKLSAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFr
ZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkK
ICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQotICAgICAgICAsIG1f
c3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VV
bmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTMzNCwxMCArMTMzNCwx
MCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENI
RUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9ycyhudWxscHRyKQot
ICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1f
bXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlmCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RB
VFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigq
b3RoZXIubV9zdGF0cykpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigqb3Ro
ZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG90aGVyS2V5Q291
bnQgPSBvdGhlci5zaXplKCk7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYgb3RoZXIpCiAjaWYg
Q0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0b3JzKG51bGxwdHIp
Ci0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwg
bV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG90aGVy
LmludmFsaWRhdGVJdGVyYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwCmluZGV4IDllODcyMGY2ZDlhNzk4MGI5NWU1YjEzYzVlNjU1YzM4OTQ5MzA0YjUuLjUz
NzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUwZDZhMThjNWQ5ZmVjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKGJvb2wgdXNl
KQogICAgIH0KIAogICAgIGlmICh1c2UpIHsKLSAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50
VGltZXJGaXJlZCk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG1ha2VVbmlxdWU8UnVu
TG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwogICAgICAg
ICBtX21lYXN1cmVtZW50VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3MpOwogICAgIH0gZWxzZQog
ICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApp
bmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlmMTljM2MxZmMxZmRjNTdhYjRkNGFiLi5kZWY4MzQwZTNj
OGFjYzg1ODZkYTRmMDBiYjhlOWRjNTZlMDEzZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAt
NTY1LDYgKzU2NSwyNCBAQCBjb25zdGV4cHIgc2l6ZV90IGNseih1aW50MzJfdCB2YWx1ZSwgWmVy
b1N0YXR1cyBtaWdodEJlWmVybyA9IFplcm9TdGF0dXM6Ok1heUJlWgogCiB9IC8vIG5hbWVzcGFj
ZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFy
Z3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWUoQXJncyYmLi4uIGFy
Z3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6X19mYXN0
QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCit0ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lOTElORSBkZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKK3sKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCiAjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCiAKIHVzaW5nIFdURjo6S0I7CkBAIC01ODUsMyAr
NjAzLDUgQEAgdXNpbmcgV1RGOjptZXJnZURlZHVwbGljYXRlZFNvcnRlZDsKIHVzaW5nIFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZjsKIHVzaW5nIFdURjo6c2FmZUNhc3Q7CiB1c2luZyBXVEY6OnRy
eUJpbmFyeVNlYXJjaDsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZTsKK3VzaW5nIFdURjo6bWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
dHJlYW1CdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCmluZGV4IDI2YmJj
OGZkNjdhNDkzNDYzMjIxZDYxOTYxOGViN2M2NDY4NjQwMzAuLmNhMzNmODY3ZDM4YjU3NTkyMDE0
MWQ1MjNjMzA3YWFlN2M4MjBiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCkBAIC02MCw3ICs2MCw3
IEBAIGNsYXNzIFN0cmVhbUJ1ZmZlciB7CiAgICAgICAgIG1fc2l6ZSArPSBzaXplOwogICAgICAg
ICB3aGlsZSAoc2l6ZSkgewogICAgICAgICAgICAgaWYgKCFtX2J1ZmZlci5zaXplKCkgfHwgbV9i
dWZmZXIubGFzdCgpLT5zaXplKCkgPT0gQmxvY2tTaXplKQotICAgICAgICAgICAgICAgIG1fYnVm
ZmVyLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigpKTsKKyAgICAgICAgICAgICAgICBt
X2J1ZmZlci5hcHBlbmQobWFrZVVuaXF1ZTxCbG9jaz4oKSk7CiAgICAgICAgICAgICBzaXplX3Qg
YXBwZW5kU2l6ZSA9IHN0ZDo6bWluKEJsb2NrU2l6ZSAtIG1fYnVmZmVyLmxhc3QoKS0+c2l6ZSgp
LCBzaXplKTsKICAgICAgICAgICAgIG1fYnVmZmVyLmxhc3QoKS0+YXBwZW5kKGRhdGEsIGFwcGVu
ZFNpemUpOwogICAgICAgICAgICAgZGF0YSArPSBhcHBlbmRTaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRl
eCA3M2U5ZGZlYzA2ZmQ3ODdmM2IwNmIzZGM5ZGE2NWE1NTA0ZDFjMDI5Li42NTkxMjUxYjg2Mjdk
ZjM2Y2YyZWI5Zjc0NzkzZWY0ODljYTFlOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9V
bmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApAQCAtMzMsMTEgKzMz
LDE4IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVl
UmVmOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgotVW5pcXVlUmVmPFQ+
IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCiB7CiAgICAgcmV0dXJuIFVu
aXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1
ZVJlZihBcmdzJiYuLi4gYXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0
eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0ZWRDbGFzcywgaW50Pjo6dmFsdWUpOworICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxUPihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgVW5pcXVlUmVm
IHsKIHB1YmxpYzoKQEAgLTYzLDcgKzcwLDcgQEAgY2xhc3MgVW5pcXVlUmVmIHsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5pcXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7
IH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmll
bmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZX
aXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4g
ZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAogICAgIFVuaXF1ZVJlZihUJiBvdGhlcikKQEAgLTc5
LDMgKzg2LDQgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAogdXNpbmcgV1RGOjpVbmlxdWVSZWY7CiB1
c2luZyBXVEY6Om1ha2VVbmlxdWVSZWY7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0
RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29w
R0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAppbmRleCA1ZTVi
YThhYmViZGJkNDliYmI4MzdkZDRjNGZkNjliZDZmZmMzNjFmLi5mYjIxMWQwYTI5NjFkZmMxNmFh
NmUyMWEyMWE5NzRkZmYxNTI2OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcApA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1
cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgZ19zb3VyY2Vfc2V0X25h
bWUoc291cmNlLmdldCgpLCAiW1dlYktpdF0gUnVuTG9vcCBkaXNwYXRjaEFmdGVyIik7CiAgICAg
Z19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUoc291cmNlLmdldCgpLCBnX2dldF9tb25vdG9uaWNfdGlt
ZSgpICsgZHVyYXRpb24ubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlzcGF0Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BhdGNo
QWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZ19zb3VyY2Vfc2V0X2NhbGxi
YWNrKHNvdXJjZS5nZXQoKSwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0KHN0YXRp
Y19jYXN0PERpc3BhdGNoQWZ0ZXJDb250ZXh0Kj4odXNlckRhdGEpKTsKICAgICAgICAgY29udGV4
dC0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IGRjYmEwNjA4
MmM1ZjY2ZTMxOWExNWVlNTk3ZmM2NDk3NjZiMDVlNmMuLjViZjRlNmQwMWRlODQzZWQyODc4ODNl
YTNhMDNlODQ5NDkzYmVjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMTc5
LDcgKzE3OSw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9y
OjpJbXBsIHsKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJ
dGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKLSAg
ICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcu
aXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwg
aW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5n
Vmlldy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmll
dykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmNwcAppbmRleCBmZGI4Y2UyOTJkNzM4ZGE0MjAzOGFhOTY1YWYzYWNhMTc4YTgwY2Vi
Li44ZGM3NmZhMmU1OWVhNjdlMDIxNzM4YzMxMWEzNTc3ZjRkMzZlNjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1h
bmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZv
aWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eUludmFsaWRV
UkwoY29uc3QgU3RyaW5nJiBwcm9wCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6Omxv
Z0RldmVsb3Blcldhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX2Nv
bnNvbGVDb250ZXh0KQotICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KEpTQzo6TWVzc2Fn
ZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFuaWZlc3QgIl9zLCBt
X21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7CisgICAgICAgIG1fY29u
c29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNlOjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6
TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBs
aWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZlc3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVz
c2FnZSkpKTsKIH0KIAogVVJMIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlU3RhcnRV
UkwoY29uc3QgSlNPTjo6T2JqZWN0JiBtYW5pZmVzdCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3Bw
CmluZGV4IDliZmE1Zjk0OTk0YjA1NDUwNmI4MjZhMzE0YjgyNTgyN2VhNDFhZGIuLjdlNGY3OTQ3
MWUyYzU5ZmU3MWMxNDgxMzJmNGI1NTFkOGZmYzc5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcApAQCAtNTIsNyArNTIsNyBAQCBO
YXZpZ2F0b3JCZWFjb24qIE5hdmlnYXRvckJlYWNvbjo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRv
cikKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yQmVhY29u
Kj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmlnYXRvcik7CisgICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0
b3IpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NV2luZG93Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2lu
ZG93Q2FjaGVzLmNwcAppbmRleCA1ZWQxZjVjY2E2NDFlYjA0ZWMwZTBhMGNlMDZjODM3MjQ1Njhh
MmZmLi42MTUzOTQzMGRmYjk2MTZmZDI4OGZlZDkyY2I5NDRmZjQ0NmIwMTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIERPTVdpbmRvd0NhY2hlcyogRE9NV2luZG93Q2FjaGVzOjpmcm9tKERPTVdpbmRv
dyogd2luZG93KQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5k
b3dDYWNoZXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5kb3cpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93
KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHBy
b3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKaW5kZXggMDY1NmJlZjBiMTcxOGUzM2RiYzdmYTBlZTYw
YzU3ZDQ4ZTM4ZDRlOC4uNTExOGE0ODg1MGYyNDJkMDQ0ZDNiNDBmZjBlM2IyM2JiOTZlMjhmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29w
ZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9i
YWxTY29wZUNhY2hlcy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV29ya2VyR2xvYmFsU2NvcGVDYWNo
ZXMqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKFdvcmtlckdsb2JhbFNjb3BlJiBzY29w
ZSkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2Nv
cGVDYWNoZXMqPihTdXBwbGVtZW50PFdvcmtlckdsb2JhbFNjb3BlPjo6ZnJvbSgmc2NvcGUsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUNhY2hlcz4o
c2NvcGUpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlckds
b2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3Jl
ZGVudGlhbHMuY3BwCmluZGV4IDcxZjQzOGNmNzg2Yzc2ZDdiNTg3MjE1NTk3NjY4YjYyMzYxYjU5
OTMuLjExODFiZDk4NWEyMmJhNDkzZjgzNjMxZDdlNDFmZWU4NzliNTZiM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3Jl
ZGVudGlhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5hdmlnYXRv
ckNyZWRlbnRpYWxzKiBOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmln
YXRvcikKIHsKICAgICBOYXZpZ2F0b3JDcmVkZW50aWFscyogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PE5hdmlnYXRvckNyZWRlbnRpYWxzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5h
dmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckNyZWRl
bnRpYWxzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmln
YXRvckNyZWRlbnRpYWxzPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5n
ZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggYjZm
ZDY4ZDY3MmVkZTM4Nzc4YzE1YzZmZWFhZjQ2YjQ1NWU1YTFjZC4uNzVlZGI2YTkzNjM4ODBlNTg3
YzM1NzU2YjE0ZGVjOWY5YjQ1ZTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC0xMzMsNyAr
MTMzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lz
dGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICAgICAgICAgYXV0byBzeXN0ZW1JRCA9
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGVla1N5c3RlbUlEKHZpZXcs
IG9mZnNldCk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAg
ICAgICBpZiAoc3lzdGVtSUQgPT0gSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94OjpmYWlyUGxh
eVN5c3RlbUlEKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IHN0ZDo6bWFrZV91bmlx
dWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOworICAgICAgICAgICAgYXV0byBmcHNQ
c3NoID0gbWFrZVVuaXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CiAgICAgICAg
ICAgICBpZiAoIWZwc1Bzc2gtPnJlYWQodmlldywgb2Zmc2V0KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgcHNzaEJveGVzLmFwcGVuZChXVEZNb3Zl
KGZwc1Bzc2gpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHN5c3RlbUlEKTsKICNlbmRpZgotICAgICAgICBh
dXRvIHBzc2hCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveD4oKTsKKyAgICAgICAgYXV0byBwc3NoQm94ID0gbWFrZVVuaXF1ZTxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7CiAgICAgICAgIGlmICghcHNzaEJveC0+
cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggODI2Mjg5M2ZlMGFmOTk5MTRlZDM5ZTk2MGNmMTBhNzUz
NDA3MDViNi4uODM3ZGYxMjNhZTU5NmYzNTM3YzkxNTI3MDNlM2QyNzFiMzQ2ZWI1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE0uY3BwCkBAIC02MSwxNSArNjEsMTUgQEAgc3RydWN0IENETUZhY3Rvcnkgewog
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGluc3RhbGxlZENETUZhY3RvcmllcygpCiB7CiAg
ICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8Q0RNRmFjdG9y
eSo+IHsKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5PihjZG0pOyB9LAorICAg
ICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1
ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCiAgICAgICAgICAgICBMZWdhY3lD
RE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtLCBMZWdhY3lDRE1Qcml2YXRlQ2xl
YXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAgICAgICAgIC8vIEZJWE1F
OiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMuIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzE4
LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMyMAotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShM
ZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQ
bGF5ZXI+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2Rt
KSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXllcj4oY2RtKTsgfSwKICAg
ICAgICAgICAgIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVBy
aXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICNpZiAo
SEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKSB8fCBIQVZFKEFWU1RSRUFNU0VTU0lPTikpICYmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSog
Y2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7
IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KGNkbSk7IH0s
CiAgICAgICAgICAgICBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5
c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRN
aW1lVHlwZSksCiAjZW5kaWYKICAgICB9KTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5Q0RNPiBMZWdhY3lDRE06OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNPihrZXlT
eXN0ZW0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeUNETT4oa2V5U3lzdGVtKTsKIH0K
IAogTGVnYWN5Q0RNOjpMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5oCmluZGV4IDQ1OGVjNTNiNDMzN2IxNzEwNTU2ZjhhMTdiNGVmMDFlZmNlMTU2NGUuLmZi
NWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1ZmUwYTVlODk2NDA2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5o
CkBAIC01MCw3ICs1MCw4IEBAIGNsYXNzIExlZ2FjeUNETUNsaWVudCB7CiAgICAgdmlydHVhbCBS
ZWZQdHI8TWVkaWFQbGF5ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNETSopIGNvbnN0
ID0gMDsKIH07CiAKLWNsYXNzIExlZ2FjeUNETSB7CitjbGFzcyBMZWdhY3lDRE0gZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2Fj
eUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCmluZGV4IGM5MzE2ZGZkOGFiYjQwNTQ5MmY1NTVlYjNk
MWIzZDA5MTdjZWZmNTAuLjNhOGMwMGY1MjMxZjUyYTZlODlkMTgzZDE1MTFjM2FjODc3M2ExZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcApAQCAt
NjAsNyArNjAsNyBAQCBib29sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RN
U2Vzc2lvbj4gTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
RE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNU2Vz
c2lvbkNsZWFyS2V5PihjbGllbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETVByaXZhdGVNZWRpYVBsYXllci5oCmluZGV4IDY2MDJlYmZlOTA0NDVjNTU5M2M2ZTVmZjhm
MWE1YjJlMmRkOTJjMTcuLmNmYjAyNmMyMDJkYTZmZTA5ZmM4ZGNiNDRmZmJiYWNiOGE5ZGM5MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVNZWRpYVBsYXllci5oCkBA
IC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeUNETTsKIAog
Y2xhc3MgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyIDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2Ug
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENE
TVByaXZhdGVNZWRpYVBsYXllcihMZWdhY3lDRE0qIGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCmluZGV4IDJmN2Iw
MzUzOWVmOGVhNDc0ZTIzNmQwNWQ5ZTE3ZmVjNDg0ZTYyN2UuLmJjNzc3ZjBjYmM4Y2U3Yjg5ZTk0
M2I4YTYzZTRlNmU4Mjg5YjM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5oCkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IDogcHVibGljIExlZ2FjeUNETVNlc3Npb24geworY2xh
c3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25DbGVh
cktleShMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkNs
ZWFyS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwCmluZGV4IGFkZGM1NDg5NmI4YTQ0MzhjZmJmZDA2NTgwYWRiYzg2MGE4MWY4NjQuLmRi
NjM5MGU3Zjk5MjU5NzdiODdjYTAwOWVkYWJkNTFjZGI2NjczMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yNDQsNyArMjQ0LDcg
QEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0Y2hC
b2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgIH0KIAogICAgIG1fYmxvYkxvYWRlci5lbXBsYWNl
KCp0aGlzKTsKLSAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0
Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKKyAgICBtX2Jsb2JMb2FkZXItPmxv
YWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsK
IAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5k
ZXggY2QzNDVlYjllYzM0MGMzNmUwZjBhNmVlZDgyZGQ5ODhiNGY5N2QzOS4uOTQwMTNjZjRlYTY1
MjM4ZDgzYjliNGM4MWRiN2QxODE2NTMyNDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRjaFJl
cXVlc3QmIHJlcXVlc3QKIAogICAgIHJlc3BvbnNlLT5hZGRBYm9ydFN0ZXBzKHJlcXVlc3Quc2ln
bmFsKCkpOwogCi0gICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Qm9keUxvYWRlcj4ocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwor
ICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBtYWtlVW5pcXVlPEJvZHlMb2FkZXI+KHJlc3Bv
bnNlLmdldCgpLCBXVEZNb3ZlKHJlc3BvbnNlQ2FsbGJhY2spKTsKICAgICBpZiAoIXJlc3BvbnNl
LT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpKQogICAgICAgICByZXNwb25z
ZS0+bV9ib2R5TG9hZGVyID0gbnVsbHB0cjsKIH0KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKQogCiBib29sIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlz
LCAmbV9yZXNwb25zZS5tX2JvZHktPmNvbnN1bWVyKCkpOworICAgIG1fbG9hZGVyID0gbWFrZVVu
aXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7
CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwogICAgIHJldHVybiBtX2xv
YWRlci0+aXNTdGFydGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dh
bWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKaW5kZXggNjEwMjA4OTljYmM0YTdlNDMzYjE1MWRj
Y2FlYmZlOTA3NjRkM2UyZC4uODUwZDIyZGUyODViYjMzNWQyMmU4YzJlMjUzYjdhYjZlMGM2MDM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdh
bWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JH
YW1lcGFkLmNwcApAQCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JHYW1lcGFkKiBOYXZpZ2F0b3JH
YW1lcGFkOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdhbWVw
YWQqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHYW1lcGFkKj4oU3VwcGxlbWVu
dDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5l
d1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1l
bnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmNwcAppbmRleCBiMDlmYzM0MzNiYmZiYjcyOGYzMTVjMTUzM2E2ZjJjOWU0ZmMwMDcxLi5j
ZDgwNzBiMjA3ZGI4YTM0NDAyNmNmZjYxMDViODVlZTE5YmM1MjRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgY29uc3QgY2hhciogR2VvbG9jYXRpb25Db250
cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBhZ2Uq
IHBhZ2UsIEdlb2xvY2F0aW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKHBhZ2UpOwot
ICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Db250cm9s
bGVyPigqcGFnZSwgY2xpZW50KSk7CisgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBh
Z2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKIH0KICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKaW5kZXggYjM0ZjQ5YTY3MWQ4NWY1
MTQyYjhiYWYwZjUyYmE5OTFhYzQzNTlkYy4uMzVkZmJmOGYzZjI1NjljMDEzNTM1NjYzMDBmNWI3
ODM3ZGUyOGZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTmF2
aWdhdG9yR2VvbG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpmcm9tKE5hdmlnYXRvciYg
bmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yR2VvbG9jYXRpb24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZy
b20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRv
ckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0
b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4
ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5k
b3dJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGM3MjAzYTlhODY0MDk3MDUwZDNkYzAwNzkyZjdh
NmI1ODFmYWEyNWUuLjVlOWQ5Nzk2NmJmZGU1OGU2NjA5OWE1MDllNjE4Yjg0YzE4ZDA1YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4
ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9N
V2luZG93SW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2UqIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6ZnJvbShET01XaW5kb3cqIHdp
bmRvdykKIHsKICAgICBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIHN1cHBsZW1lbnQgPSBzdGF0
aWNfY2FzdDxET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqPihTdXBwbGVtZW50PERPTVdpbmRvdz46
OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93
SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93KTsKICAgICAgICAgc3Vw
cGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3cs
IHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApp
bmRleCBmNDMwOTBjNGRjYzNlZGU1ZTI3ZDFhYTQ0Mzg0NDQ3ZDg0OWM2NDBiLi45YTc4MTI3ODQ2
M2VkMGE0YTBhZGRkM2Y3ZGIwYzU2NTY5NjJiOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC01MTcsNyArNTE3LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lKQogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdEZvdW5kRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnaW5kZXgnIG9uICdJREJP
YmplY3RTdG9yZSc6IFRoZSBzcGVjaWZpZWQgaW5kZXggd2FzIG5vdCBmb3VuZC4iX3MgfTsKIAot
ICAgIGF1dG8gaW5kZXggPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOworICAgIGF1dG8gaW5kZXggPSBtYWtlVW5pcXVl
PElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwogCiAg
ICAgUmVmPElEQkluZGV4PiByZWZlcmVuY2VkSW5kZXggeyAqaW5kZXggfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4
IGZhMmNkN2VhZDA5YjYwNTUyNWI4Y2I0NDFlZjcwMDFkODMzNTAxMDAuLjQyMjQzZmJhNTczMTI5
NTQxODg5NGEzMjA0M2U4OWUwYjJjMWE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBvYmplYwogICAgIGlmICghaW5mbyB8fCAoIWZvdW5kICYmICFpc1Zl
cnNpb25DaGFuZ2UoKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9y
LCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29iamVjdFN0b3JlJyBvbiAnSURCVHJhbnNhY3Rpb24nOiBU
aGUgc3BlY2lmaWVkIG9iamVjdCBzdG9yZSB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAgYXV0
byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9yZSA9
IG1ha2VVbmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpp
bmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZS5nZXQo
KTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KG9iamVjdFN0b3JlTmFtZSwgV1RG
TW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC02NjcsNyArNjY3LDcgQEAgUmVmPElEQk9iamVjdFN0
b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJgogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3JlZmVyZW5jZWRPYmplY3RTdG9y
ZUxvY2spOwogCi0gICAgYXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCT2Jq
ZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0aGlzKTsKKyAgICBh
dXRvIG9iamVjdFN0b3JlID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJhd09iamVjdFN0b3JlID0g
b2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChpbmZv
Lm5hbWUoKSwgV1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC03NTUsNyArNzU1LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3IKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3JlYXRlSW5kZXhP
blNlcnZlcihvcGVyYXRpb24sIGluZm8pOwogICAgIH0pKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmpl
Y3RTdG9yZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0b3JlKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlv
bjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBv
cGVyYXRpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3Bl
SW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBhNDg1MDNiNGQyZDgwNDI5NDY4NGE2NWE2NWViZDY0
ZjIzM2NkN2I5Li45Yjc1Nzc0OTIxYjQ2NTA2ZjU4M2RlN2ZlYzQyNTBlODU0YWNlNTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29w
ZUluZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKiBXb3JrZXJHbG9iYWxTY29wZUluZGV4
ZWREYXRhYmFzZTo6ZnJvbShXb3JrZXJHCiAgICAgICAgIGlmICghY29ubmVjdGlvblByb3h5KQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZT4oc2Nv
cGUsICpjb25uZWN0aW9uUHJveHkpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwgKmNvbm5lY3Rp
b25Qcm94eSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAg
ICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDk0
OGNmNzQ2NjNhZTY5YzgyZGE0NDRlMDkzNDczZGQ4NTZkNGRlOTMuLjM3NzExZGMxMDNkYjZjOWE5
YjgxM2RiYzlkZjc5OWI3ZTI2YTZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IElEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlCiAKIElEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6SURCQ29ubmVjdGlvblRvU2VydmVyKElEQkNvbm5lY3Rpb25Ub1NlcnZl
ckRlbGVnYXRlJiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUobWFrZVdlYWtQdHIoZGVsZWdh
dGUpKQotICAgICwgbV9wcm94eShzdGQ6Om1ha2VfdW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94eT4o
KnRoaXMpKQorICAgICwgbV9wcm94eShtYWtlVW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94eT4oKnRo
aXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCAyNzUzZmQw
YzI0NTdiOWMwOWQ5ZDg5ZTRmNzYyYjQ3OWY4YjQ0MGIxLi44ZTFkZTA2ZDcxZThmMGIyMjNkNjg2
ZTVlMWE4YTIyMDliNzQzODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgVHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICBpZiAobV9pbmRleElk
ZW50aWZpZXIpCiAgICAgICAgIG1faW5kZXhSZWNvcmRUeXBlID0gcmVxdWVzdC5yZXF1ZXN0ZWRJ
bmRleFJlY29yZFR5cGUoKTsKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5kaW5n
Q3Vyc29yKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOworICAg
ICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmll
cj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKIAogICAgIG1faWRiUmVxdWVzdCA9ICZy
ZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCBmNmFiNGYzYWIyYzI4YjBlZTIyNDY4OTRhMGRlNTg0
YmQwODc1MWZkLi5mNTU2OGUzMjVkMzcwMTFhMjc1ZTAxZGY5NjZkZmRmNTk1MmU4YjMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTZXJ2ZXI6
OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVuCiAKICAg
ICBhdXRvIHVuaXF1ZUlEQkRhdGFiYXNlID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC5hZGQoaWRl
bnRpZmllciwgbnVsbHB0cik7CiAgICAgaWYgKHVuaXF1ZUlEQkRhdGFiYXNlLmlzTmV3RW50cnkp
Ci0gICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKKyAgICAgICAgdW5p
cXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxVbmlxdWVJREJEYXRh
YmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOwogCiAgICAgcmV0dXJuICp1bmlxdWVJREJEYXRhYmFz
ZS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURC
RGF0YWJhc2UKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmllcik7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vz
c2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9iYWNraW5nU3Rv
cmVUZW1wb3JhcnlGaWxlSGFuZGxlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURC
QmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9y
eVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIpOwogfQogCiB2b2lkIElE
QlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkK
QEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIElEQlNlcnZlcjo6UXVvdGFVc2VyOjppbml0aWFsaXpl
U3BhY2VVc2VkKHVpbnQ2NF90IHNwYWNlVXNlZCkKIElEQlNlcnZlcjo6UXVvdGFVc2VyJiBJREJT
ZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAg
ICByZXR1cm4gKm1fcXVvdGFVc2Vycy5lbnN1cmUob3JpZ2luLCBbdGhpcywgJm9yaWdpbl0gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90YVVzZXI+KCp0aGlzLCBtX3F1b3Rh
TWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50T3JpZ2luIHsgb3JpZ2lu
IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxRdW90YVVzZXI+KCp0aGlzLCBtX3F1b3Rh
TWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50T3JpZ2luIHsgb3JpZ2lu
IH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcApp
bmRleCA2OTgzYzlkN2VhZmY1NjE2NzIwNGQ5NTJmMWYyMjY3YmI0MGNhNGJhLi44ZDkyMWQ4ZWZl
NmJhODQwYTMwZDYxZGZkYzZhNzIxZTgyOGE0M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcApA
QCAtOTIsNyArOTIsNyBAQCBJREJFcnJvciBJbmRleFZhbHVlU3RvcmU6OmFkZFJlY29yZChjb25z
dCBJREJLZXlEYXRhJiBpbmRleEtleSwgY29uc3QgSURCS2V5RGF0YQogICAgICAgICByZXR1cm4g
SURCRXJyb3IoQ29uc3RyYWludEVycm9yKTsKIAogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkK
LSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZXhW
YWx1ZUVudHJ5PihtX3VuaXF1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPEluZGV4VmFsdWVFbnRyeT4obV91bmlxdWUpOwogCiAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS0+YWRkS2V5KHZhbHVlS2V5KTsKICAgICBtX29yZGVyZWRLZXlzLmluc2VydChp
bmRleEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNw
cAppbmRleCA0N2NjNDJmZDI2ZDY0NzNjNjQxOTI3ZTk5MmQ0ZWM2ZThkN2JmOGVlLi41ZTcxNDQ5
Nzg0YTBkYTA3Njc3ODlhOGRlZGM1MjI2ODlmNGQ4ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNl
IElEQlNlcnZlciB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbj4gTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNyZWF0ZShNZW1vcnlJREJCYWNr
aW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uPihiYWNraW5nU3RvcmUsIGluZm8pOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uPihiYWNraW5nU3RvcmUsIGluZm8pOwogfQogCiBNZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oTWVt
b3J5SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYgaW5mbykKQEAgLTUyLDcgKzUyLDcgQEAgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246
Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG8KICAgICAg
ICAgSURCRGF0YWJhc2VJbmZvIGluZm87CiAgICAgICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdT
dG9yZS5nZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhpbmZvKTsKICAgICAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKQotICAgICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICAgICAgICAgIG1fb3JpZ2luYWxE
YXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAgfQog
fQogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bjo6cmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3QKIAogICAgIGF1
dG8gb3JpZ2luYWxBZGRSZXN1bHQgPSBtX29yaWdpbmFsVmFsdWVzLmFkZCgmb2JqZWN0U3RvcmUs
IG51bGxwdHIpOwogICAgIGlmIChvcmlnaW5hbEFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAg
ICBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtl
eVZhbHVlTWFwPigpOworICAgICAgICBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOwogCiAgICAgYXV0byogbWFwID0gb3JpZ2luYWxB
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuY3BwCmluZGV4IDdkMTQyYjAwNTBhYjYwODgxZTM4N2JlOGMxOTg5NDdhYzZlOGRkODEu
LmNmZmUzMzM3Zjc5NDQ4YjhjMjEzZGJiZTVmYTM1YjRkM2E3MGYyZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB1aW50NjRfdCBt
YXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAwMDA7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CiB9CiAK
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAgLTYxLDcgKzYxLDcgQEAgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjp+TWVtb3J5SURCQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0OwogSURCRXJy
b3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJE
YXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgaWYgKCFtX2RhdGFiYXNlSW5mbykKLSAgICAgICAg
bV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVu
dGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsK
IAogICAgIGluZm8gPSAqbV9kYXRhYmFzZUluZm87CiAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnNldERhdGFiYXNl
SW5mbyhjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCiAgICAgLy8gSXQgaXMgbm90IHZhbGlk
IHRvIGRpcmVjdGx5IHNldCBkYXRhYmFzZSBpbmZvIG9uIGEgYmFja2luZyBzdG9yZSB0aGF0IGhh
c24ndCBhbHJlYWR5IHNldCBpdHMgb3duIGRhdGFiYXNlIGluZm8uCiAgICAgQVNTRVJUKG1fZGF0
YWJhc2VJbmZvKTsKIAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KGluZm8pOwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRl
eC5jcHAKaW5kZXggNDlkZGNhNmJkNDBkMjlkNDJlMzhiODUxMzFjODlmZGZlN2Q0NzkyZC4uODU5
NWRiYjhmNGE3ZWUzZDE5MWUzMWZiNjEwYjA0OTc1Yjg3NDYwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCkBA
IC0xOTQsNyArMTk0LDcgQEAgSURCRXJyb3IgTWVtb3J5SW5kZXg6OnB1dEluZGV4S2V5KGNvbnN0
IElEQktleURhdGEmIHZhbHVlS2V5LCBjb25zdCBJbmRleEtleSYgaW4KICAgICBMT0coSW5kZXhl
ZERCLCAiTWVtb3J5SW5kZXg6OnByb3Zpc2lvbmFsUHV0SW5kZXhLZXkiKTsKIAogICAgIGlmICgh
bV9yZWNvcmRzKSB7Ci0gICAgICAgIG1fcmVjb3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZXhW
YWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOworICAgICAgICBtX3JlY29yZHMgPSBtYWtlVW5p
cXVlPEluZGV4VmFsdWVTdG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKICAgICAgICAgbm90aWZ5Q3Vy
c29yc09mQWxsUmVjb3Jkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBN
ZW1vcnlJbmRleEN1cnNvciogTWVtb3J5SW5kZXg6Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvKQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8pOwog
ICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcAppbmRleCBlZDZlYmE5MjdmMWY0ZjZiOWMzMDY4ZjZiNWQ4OGRlMjk5NzI2
N2ViLi41YjQ0YTczODc4YzlmZGQ3YTFlMDVhOTViNzY1N2ViZTYzNjM1MTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlPYmplY3RTdG9yZS5jcHAKQEAgLTI1OSw4ICsyNTksOCBAQCBJREJFcnJvciBNZW1vcnlPYmpl
Y3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbgogCiAgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpIHsKICAgICAgICAgQVNTRVJUKCFtX29y
ZGVyZWRLZXlzKTsKLSAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxL
ZXlWYWx1ZU1hcD4oKTsKLSAgICAgICAgbV9vcmRlcmVkS2V5cyA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCS2V5RGF0YVNldD4oKTsKKyAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gbWFrZVVuaXF1ZTxL
ZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgbV9vcmRlcmVkS2V5cyA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPElEQktleURhdGFTZXQ+KCk7CiAgICAgfQogCiAgICAgYXV0byBtYXBS
ZXN1bHQgPSBtX2tleVZhbHVlU3RvcmUtPnNldChrZXlEYXRhLCB2YWx1ZS5kYXRhKCkpOwpAQCAt
NDk3LDcgKzQ5Nyw3IEBAIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yKiBNZW1vcnlPYmplY3RTdG9y
ZTo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNvckluZm8mCiAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4oKnRo
aXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1lbW9y
eU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggNGYyMDhlNGQwNjA0Yjg3N2RkMWQ3NDg2N2I4ZTNlMjg3MjdhYzA0NC4uNmU4OTNmOTg0
NGU3MDhlZDE5NzJiNGEyYzE4YjE1OWZhNzBiNTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTYyMyw3ICs2MjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJh
c2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbAog
ICAgIH0KIAogICAgIC8vIFRoaXMgaW5pdGlhbCBkYXRhYmFzZSBpbmZvIG1hdGNoZXMgdGhlIGRl
ZmF1bHQgdmFsdWVzIHdlIGp1c3QgcHV0IGludG8gdGhlIG1ldGFkYXRhIGRhdGFiYXNlLgotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRh
dGFiYXNlTmFtZSgpLCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
REJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0
YWJhc2VJbmZvKCkKQEAgLTY1OCw3ICs2NTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJh
c2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBkYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOworICAg
IGF1dG8gZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNl
TmFtZSwgZGF0YWJhc2VWZXJzaW9uKTsKIAogICAgIHsKICAgICAgICAgU1FMaXRlU3RhdGVtZW50
IHNxbCgqbV9zcWxpdGVEQiwgIlNFTEVDVCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYywgbWF4
SW5kZXhJRCBGUk9NIE9iamVjdFN0b3JlSW5mbzsiX3MpOwpAQCAtODIwLDcgKzgyMCw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8o
SURCRGF0YWJhc2VJbmZvJiBpbmZvCiAKICAgICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxEYXRh
YmFzZVBhdGgoKTsKIAotICAgIG1fc3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURh
dGFiYXNlPigpOworICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigp
OwogICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZp
bGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CkBAIC05MDMs
MTEgKzkwMywxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNh
Y3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGVzdGFibGlzaCB0cmFuc2FjdGlvbiBp
ZGVudGlmaWVyIHRoYXQgYWxyZWFkeSBleGlzdHMiX3MgfTsKICAgICB9CiAKLSAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJUcmFuc2FjdGlv
bj4oKnRoaXMsIGluZm8pOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5p
cXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CiAKICAgICBhdXRvIGVycm9y
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKm1fc3FsaXRlREIpOwogICAgIGlm
IChlcnJvci5pc051bGwoKSAmJiBpbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZl
cnNpb25jaGFuZ2UpIHsKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNp
b25DaGFuZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJ
bmZvKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2Ug
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJbmZvKTsKIAogICAgICAg
ICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiVVBEQVRFIElEQkRhdGFiYXNlSW5m
byBTRVQgdmFsdWUgPSA/IHdoZXJlIGtleSA9ICdEYXRhYmFzZVZlcnNpb24nOyJfcyk7CiAgICAg
ICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMjYxMSw3ICsyNjExLDcgQEAg
U1FMaXRlU3RhdGVtZW50KiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNhY2hlZFN0YXRlbWVudChT
UUxpdGVJREJCYWNraW5nU3RvcmU6OlMKICAgICB9CiAKICAgICBpZiAobV9zcWxpdGVEQikgewot
ICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IHN0
ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsK
KyAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBt
YWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0YXRlbWVudCk7CiAgICAg
ICAgIGlmIChtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXS0+cHJl
cGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0
aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCmluZGV4IGY4NDA1YTc5OGEzNjgxMGRjNTc2YWYxZTczYmNhZjUzMTAyMzdiYWYuLmM2YjNm
ZDk1M2EwZDUzYWMxNTY4ZTI4NDhjYmM3OGExMmYxOTU3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3Iu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZmV0Y2hMaW1pdCA9
IDg7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6
bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvKQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxT
UUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKKyAgICBhdXRvIGN1cnNvciA9IG1h
a2VVbmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7CiAKICAgICBpZiAo
IWN1cnNvci0+ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNTksNyArNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJ
REJDdXJzb3I6Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aQogCiBzdGQ6OnVuaXF1ZV9w
dHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlQmFja2luZ1N0
b3JlQ3Vyc29yKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgdWludDY0
X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgdWludDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJiByYW5nZSkKIHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6bWFrZV91bmlxdWU8U1FM
aXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFuZ2Up
OworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0
aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7CiAKICAgICBpZiAoIWN1cnNvci0+
ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk5LDcg
KzE5OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoY29u
c3QgU3RyaW5nJiBzcWwpCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRVcHBlcktleS5pc051bGwoKSk7
CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCkpOwogCi0gICAg
bV9zdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV90cmFuc2Fj
dGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsKKyAgICBtX3N0YXRl
bWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9uLT5zcWxpdGVU
cmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOwogCiAgICAgaWYgKG1fc3RhdGVtZW50LT5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNy
ZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChwcmVwYXJlL2lkKSAtICclcyciLCBtX3RyYW5zYWN0aW9u
LT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKQEAgLTQ2
NCw3ICs0NjQsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNv
cjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZhbHVl
KQotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
VmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJs
b2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUg
PSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YS5kYXRhKCksIGtleURhdGEu
c2l6ZSgpLCByZWNvcmQucmVjb3JkLnByaW1hcnlLZXkpKSB7CiAgICAgICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB2YWx1ZSBkYXRhIGZyb20gZGF0YWJhc2Ugd2hpbGUg
YWR2YW5jaW5nIGluZGV4IGN1cnNvciIpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIFNRTGl0ZUlEQkN1
cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29y
ZChTUUxpdGVDdXJzCiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7CiAgICAg
ICAgICAgICBvYmplY3RTdG9yZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5
RGF0YSk7Ci0gICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEp
KSk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1
ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICAvLyBU
aGlzIGluZGljYXRlcyB0aGF0IHRoZSByZWNvcmQgd2UncmUgdHJ5aW5nIHRvIHJldHJpZXZlIGhh
cyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlLgogICAgICAgICAgICAgLy8gU2tp
cCBvdmVyIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYTZhM2M1ZmZm
MzM4MGMyNWVmNzM2MWU2ODhiZWYzNmMwNjE1ZmM4My4uZDIxMmRlMmI2Yjg4YWZmZTBhMzViMGZk
MGZkMzNmYzg2N2NlY2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC01
OCw3ICs1OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpiZWdpbihTUUxpdGVE
YXRhYmFzZSYgZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9uKTsK
IAotICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5z
YWN0aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJl
YWRvbmx5KTsKKyAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVUcmFu
c2FjdGlvbj4oZGF0YWJhc2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpS
ZWFkb25seSk7CiAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4oKTsKIAogICAgIGlmICht
X3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cAppbmRleCAxZWJjMDgxOGY4OWVmM2Y3NmI0NmIyN2RlNzRmMzFjY2MzZTQ2Y2NmLi5iZTU5MWI5
ODg0MGVkYWQ2NDgwYWYwYzQxYjdjOGU5MmM1ZjEyYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxl
dGVCYWNraW5nU3RvcmUodWludDY0X3QgZGVsZXRlZFZlcnNpb24pCiAgICAgLy8gd2Ugd29uJ3Qg
aGF2ZSBhIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8uIEluIHRoYXQgY2FzZSwgd2Un
bGwgbWFudWZhY3R1cmUgb25lIHVzaW5nIHRoZQogICAgIC8vIHBhc3NlZCBpbiBkZWxldGVkVmVy
c2lvbiBhcmd1bWVudC4KICAgICBpZiAoIW1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8p
Ci0gICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBkZWxldGVk
VmVyc2lvbik7CisgICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBkZWxl
dGVkVmVyc2lvbik7CiAKICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdCkgewogICAgICAg
ICBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5ub3RpZnlEaWREZWxldGVEYXRhYmFzZSgqbV9tb3N0
UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyk7CkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUluZm8m
IGluZm8sIGNvbnN0IEkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRl
eGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUiKTsK
ICAgICAKLSAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJ
bmZvPihpbmZvKTsKKyAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPihpbmZvKTsKICAgICBtX2JhY2tpbmdTdG9yZU9wZW5FcnJvciA9IGVycm9yOwogCiAgICAg
QVNTRVJUKG1faXNPcGVuaW5nQmFja2luZ1N0b3JlKTsKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uID09IHRyYW5zYWN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VE
YXRhYmFzZUNvbm5lY3Rpb24gfHwgJm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5kYXRhYmFz
ZUNvbm5lY3Rpb24oKSA9PSBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24pOwogICAg
ICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJ
bmZvKCkpOwotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJ
bmZvKCkpOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkp
OwogICAgIH0KIAogICAgIElEQkVycm9yIHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5zdGF0ZSgpID09
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkID8gdHJhbnNhY3Rp
b24tPnJlc3VsdCgpIDogZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5jcHAKaW5kZXggYWY5MmViYzYzNjg4NWM2OWMyNWU1MDI5OWNlNmM0YWNlYWE2NTlj
OC4uZTRkNjY5ZGE4YWM2MjkxNmY3YmNlMDMyODA5YTU1OWU4NTNjYzgyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNTEsNyArNTEsNyBAQCBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgogICAgIEFTU0VSVChkYXRhYmFzZSk7CiAKICAgICBpZiAo
bV90cmFuc2FjdGlvbkluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNo
YW5nZSkKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygpKTsKKyAgICAgICAgbV9vcmlnaW5hbERh
dGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygp
KTsKIAogICAgIGF1dG8mIHNlcnZlciA9IGRhdGFiYXNlLT5zZXJ2ZXIoKTsKICAgICBtX3NlcnZl
ciA9IG1ha2VXZWFrUHRyKHNlcnZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAppbmRleCBiMTBkODQw
OTliMjUyOGU2ZjczYzI4YjE1MDRhOGE5MzI0ZDBiMjFhLi4yMTY0MTZhZmExMWNmMjU1ZDM2ZGVm
YjNlZmYzNmVmYWYxOTU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKCkKIAogSURCUmVxdWVzdERhdGE6OklE
QlJlcXVlc3REYXRhKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0
aW9uUHJveHksIGNvbnN0IElEQk9wZW5EQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgOiBtX3NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25Qcm94eS5zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVjdGlvblByb3h5LCByZXF1ZXN0KSkKKyAgICAsIG1f
cmVxdWVzdElkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGNvbm5l
Y3Rpb25Qcm94eSwgcmVxdWVzdCkpCiAgICAgLCBtX2RhdGFiYXNlSWRlbnRpZmllcihyZXF1ZXN0
LmRhdGFiYXNlSWRlbnRpZmllcigpKQogICAgICwgbV9yZXF1ZXN0ZWRWZXJzaW9uKHJlcXVlc3Qu
dmVyc2lvbigpKQogICAgICwgbV9yZXF1ZXN0VHlwZShyZXF1ZXN0LnJlcXVlc3RUeXBlKCkpCkBA
IC00OSw4ICs0OSw4IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByCiAKIElEQlJlcXVlc3REYXRh
OjpJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRp
b24pCiAgICAgOiBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKG9wZXJhdGlvbi50cmFuc2Fj
dGlvbigpLmRhdGFiYXNlKCkuY29ubmVjdGlvblByb3h5KCkuc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIoKSkKLSAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpKQotICAgICwgbV90cmFu
c2FjdGlvbklkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgLCBtX3JlcXVlc3RJZGVu
dGlmaWVyKG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24uaWRlbnRp
ZmllcigpKSkKKyAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKG1ha2VVbmlxdWU8SURCUmVz
b3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQogICAg
ICwgbV9vYmplY3RTdG9yZUlkZW50aWZpZXIob3BlcmF0aW9uLm9iamVjdFN0b3JlSWRlbnRpZmll
cigpKQogICAgICwgbV9pbmRleElkZW50aWZpZXIob3BlcmF0aW9uLmluZGV4SWRlbnRpZmllcigp
KQogewpAQCAtNTgsNyArNTgsNyBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoSURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgICAgICBtX2luZGV4
UmVjb3JkVHlwZSA9IG9wZXJhdGlvbi5pbmRleFJlY29yZFR5cGUoKTsKIAogICAgIGlmIChvcGVy
YXRpb24uY3Vyc29ySWRlbnRpZmllcigpKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlvbi5jdXJzb3JJ
ZGVudGlmaWVyKCkpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpOwogfQog
CiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEmIG90
aGVyKQpAQCAtNzEsMTEgKzcxLDExIEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgb3RoZXIpCiAgICAgLCBtX3JlcXVlc3RUeXBlKG90aGVyLm1f
cmVxdWVzdFR5cGUpCiB7CiAgICAgaWYgKG90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpCi0gICAg
ICAgIG1fcmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtX3JlcXVlc3RJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3Jl
cXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIubV90cmFuc2FjdGlvbklkZW50aWZpZXIp
Ci0gICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAg
ICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50
aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKG90aGVyLm1f
Y3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1cnNvcklkZW50aWZpZXIp
OworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAKIElEQlJlcXVlc3REYXRh
OjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5
VGFnKQpAQCAtMTAyLDExICsxMDIsMTEgQEAgdm9pZCBJREJSZXF1ZXN0RGF0YTo6aXNvbGF0ZWRD
b3B5KGNvbnN0IElEQlJlcXVlc3REYXRhJiBzb3VyY2UsIElEQlJlcXVlc3REYXRhJgogICAgICAg
ICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSWRlbnRpZmllciA9IHNvdXJjZS5tX2RhdGFiYXNlSWRl
bnRpZmllci0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBpZiAoc291cmNlLm1fcmVxdWVzdElkZW50
aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3JlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50aWZpZXIpOwog
ICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0
aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBk
ZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPigqc291cmNlLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAo
c291cmNlLm1fY3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9jdXJzb3JJ
ZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3Vy
Y2UubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9jdXJzb3JJZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9jdXJz
b3JJZGVudGlmaWVyKTsKIH0KIAogdWludDY0X3QgSURCUmVxdWVzdERhdGE6OnNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKaW5kZXggNDVjZmZhZWE2MDNh
NTNiNTk5MDRjOGIxNGI3YTFkZWY3ZDI1ZjMxMC4uNDA4YjRlNDYyODczMzdiOWFjMzQ0YWZiZjQ2
OTE1ODY4ZTgwZjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKQEAgLTE1Niw3ICsxNTYsNyBAQCBib29s
IElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNl
SWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9yZXF1ZXN0SWRlbnRpZmllciA9IFdURk1vdmUo
b2JqZWN0KTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhh
c09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVy
PiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFr
ZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVl
c3QubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xNzQsNyAr
MTc0LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fY3Vyc29ySWRlbnRpZmll
ciA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAppbmRleCBhODk0NTRlNmU2M2Y2
ZWI3Y2I1MDM4YjljOTMyZmEyMTg2MzNlZGM2Li40Y2JkNWQ5YmRmMGE4NTIzYmY3ZjUyYWM1YmM1
Y2I0YjdlZDEwNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC01NywxNSArNTcsMTUgQEAgSURC
UmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiBvdGhlcikKICAg
ICAsIG1fcmVzdWx0SW50ZWdlcihvdGhlci5tX3Jlc3VsdEludGVnZXIpCiB7CiAgICAgaWYgKG90
aGVyLm1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIubV9kYXRhYmFzZUluZm8pOworICAgICAgICBt
X2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIubV9kYXRh
YmFzZUluZm8pOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSW5mbykKLSAgICAgICAgbV90
cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90
aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbkluZm8gPSBtYWtl
VW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKICAg
ICBpZiAob3RoZXIubV9yZXN1bHRLZXkpCi0gICAgICAgIG1fcmVzdWx0S2V5ID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOworICAgICAgICBtX3Jlc3Vs
dEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKm90aGVyLm1fcmVzdWx0S2V5KTsKICAgICBp
ZiAob3RoZXIubV9nZXRSZXN1bHQpCi0gICAgICAgIG1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3VsdCk7CisgICAgICAgIG1fZ2V0UmVz
dWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3VsdCk7CiAgICAg
aWYgKG90aGVyLm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBtX2dldEFsbFJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqb3RoZXIubV9nZXRBbGxSZXN1bHQpOworICAg
ICAgICBtX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqb3RoZXIu
bV9nZXRBbGxSZXN1bHQpOwogfQogCiBJREJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0
IElEQlJlc3VsdERhdGEmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTg3LDE1ICs4NywxNSBA
QCB2b2lkIElEQlJlc3VsdERhdGE6Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXN1bHREYXRhJiBz
b3VyY2UsIElEQlJlc3VsdERhdGEmIGRlcwogICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0SW50ZWdl
ciA9IHNvdXJjZS5tX3Jlc3VsdEludGVnZXI7CiAKICAgICBpZiAoc291cmNlLm1fZGF0YWJhc2VJ
bmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fZGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUlu
Zm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0g
bWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRh
dGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fdHJhbnNhY3Rpb25J
bmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvLCBJREJU
cmFuc2FjdGlvbkluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fdHJh
bnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90
cmFuc2FjdGlvbkluZm8sIElEQlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAgICBp
ZiAoc291cmNlLm1fcmVzdWx0S2V5KQotICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5
RGF0YTo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRLZXkgPSBt
YWtlVW5pcXVlPElEQktleURhdGE+KCpzb3VyY2UubV9yZXN1bHRLZXksIElEQktleURhdGE6Oklz
b2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX2dldFJlc3VsdCkKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKnNvdXJj
ZS5tX2dldFJlc3VsdCwgSURCR2V0UmVzdWx0OjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0
aW5hdGlvbi5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigqc291cmNlLm1f
Z2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5t
X2dldEFsbFJlc3VsdCkKLSAgICAgICAgZGVzdGluYXRpb24ubV9nZXRBbGxSZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKnNvdXJjZS5tX2dldEFsbFJlc3VsdCwgSURC
R2V0QWxsUmVzdWx0OjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFs
bFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVz
dWx0LCBJREJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiB9CiAKIElEQlJlc3VsdERhdGEg
SURCUmVzdWx0RGF0YTo6ZXJyb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQpAQCAtMTExLDcgKzExMSw3IEBAIElE
QlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vzcyhjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlCiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyByZXF1ZXN0
SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRUeXBlOjpPcGVuRGF0
YWJhc2VTdWNjZXNzOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIg
PSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlvbi5kYXRhYmFzZSgpLT5p
bmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCktPmluZm8oKSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtMTIxLDE1ICsxMjEsMTUgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRh
OjpvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAg
ICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVlc3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0
Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQ7CiAgICAg
cmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmRhdGFi
YXNlQ29ubmVjdGlvbigpLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VD
b25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5mbygpKTsKLSAgICByZXN1bHQubV90cmFuc2FjdGlv
bkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4odHJhbnNhY3Rpb24u
aW5mbygpKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5m
bygpKTsKKyAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5z
YWN0aW9uSW5mbz4odHJhbnNhY3Rpb24uaW5mbygpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFiYXNlU3VjY2Vzcyhjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJEYXRh
YmFzZUluZm8mIGluZm8pCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQge0lEQlJlc3VsdFR5
cGU6OkRlbGV0ZURhdGFiYXNlU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1
bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5m
byk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KGluZm8pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3MSwyMSArMTcxLDIxIEBA
IElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cmVuYW1lSW5kZXhTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OnB1
dE9yQWRkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBJREJLZXlEYXRhJiByZXN1bHRLZXkpCiB7CiAgICAgSURCUmVzdWx0RGF0YSBy
ZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpQdXRPckFkZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVy
IH07Ci0gICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRh
PihyZXN1bHRLZXkpOworICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5
RGF0YT4ocmVzdWx0S2V5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRh
IElEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7
CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRSZWNvcmRTdWNj
ZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJl
c3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1
Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgSURCR2V0QWxsUmVzdWx0JiBnZXRBbGxSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSBy
ZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcywgcmVxdWVzdElkZW50
aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQg
PSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC0yMDQsMTQgKzIwNCwxNCBAQCBJREJSZXN1bHREYXRhIElEQlJlc3Vs
dERhdGE6OmRlbGV0ZVJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZQogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vzcyhjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1
bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5
cGU6Ok9wZW5DdXJzb3JTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5t
X2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwor
ICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1
bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0
YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgSURC
UmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29yU3VjY2Vzcywg
cmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQg
PSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVzdWx0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlc3VsdERhdGEuaAppbmRleCA3MTdiM2UyZGU1M2IzNTNmZWI2ZGQ3NTUwMGEwZTVl
NjhjOTQ3YTNmLi42MjA2MmExZTI5NWY3YjU5ODE1ODk1YjU3YmVjMDA4ZTViMTg3NmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXN1bHREYXRhLmgKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBP
cHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0g
bWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBy
ZXN1bHQubV9kYXRhYmFzZUluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xOTMsNyArMTkzLDcg
QEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVz
dWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09i
amVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkg
ewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25J
bmZvPigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25J
bmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZv
ID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNv
ZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0
ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigpOwogICAgICAgICBPcHRpb25hbDxJREJLZXlEYXRh
PiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsKICAgICAgICAgaWYgKCFv
cHRpb25hbCkKQEAgLTIxNCw3ICsyMTQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRp
b25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVu
aXF1ZTxJREJHZXRSZXN1bHQ+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVj
dCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV9n
ZXRSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMjMsNyArMjIzLDcgQEAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVj
b2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBh
dXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOworICAgICAg
ICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRy
YW5zYWN0aW9uSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAppbmRleCA5ODNjMWMxMWM5OWI0NWI2Y2U1NDRkZmNh
YzAzN2U0YzczNzI5NWMzLi40ZmI5OTkxOWY2N2Q1ZjdjOWFiYzEwOWUyZTMwMDBjY2U0YzQ0MDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
VHJhbnNhY3Rpb25JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcApAQCAtNTUsNyArNTUsNyBAQCBJREJUcmFu
c2FjdGlvbkluZm8gSURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlNl
cnZlcjo6SURCQ29ubmVjdAogICAgIElEQlRyYW5zYWN0aW9uSW5mbyByZXN1bHQoKElEQlJlc291
cmNlSWRlbnRpZmllcihjb25uZWN0aW9uKSkpOwogICAgIHJlc3VsdC5tX21vZGUgPSBJREJUcmFu
c2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2U7CiAgICAgcmVzdWx0Lm1fbmV3VmVyc2lvbiA9IG5l
d1ZlcnNpb247Ci0gICAgcmVzdWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgIHJlc3Vs
dC5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG9y
aWdpbmFsRGF0YWJhc2VJbmZvKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02Nyw3ICs2
Nyw3IEBAIElEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRy
YW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAsIG1fb2JqZWN0U3RvcmVzKGluZm8ubV9vYmplY3RT
dG9yZXMpCiB7CiAgICAgaWYgKGluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAg
bV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZv
PigqaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFi
YXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqaW5mby5tX29yaWdpbmFsRGF0
YWJhc2VJbmZvKTsKIH0KIAogSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8o
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiB0aGF0LCBJc29sYXRlZENvcHlUYWcpCkBAIC05MSw3
ICs5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25JbmZvOjppc29sYXRlZENvcHkoY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJiBzb3VyY2UsIElEQlRyYW5zCiAgICAgICAgIGRlc3RpbmF0aW9uLm1f
b2JqZWN0U3RvcmVzLnVuY2hlY2tlZEFwcGVuZChvYmplY3RTdG9yZS5pc29sYXRlZENvcHkoKSk7
CiAKICAgICBpZiAoc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pCi0gICAgICAgIGRlc3Rp
bmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86
Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0YWJh
c2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CiB9CiAKICNpZiAhTE9HX0RJ
U0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKaW5kZXggOTMwZDgwMjM2MTgyMzJhYmY2YzA4
MWRmMjEyOTU4ZmY2MmE1NTVlZC4uN2I5NDc3ZThlYzU1NGM5MTNkMmE0OGJlNTU4ZTE2MzNkOTNm
Y2U5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlRyYW5zYWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wg
SURCVHJhbnNhY3Rpb25JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCVHJhbnNhY3Rp
b25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzT2JqZWN0
KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SURCRGF0YWJhc2VJbmZvPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gV1RGTW92
ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCA4N2IxYWRjZDk2NjYy
MDZlYzk3MTY2MDM2MmI0MGU1YWQ3ZDgwMWQxLi5jOTY4OTQ0NGZkMjI0MDJjZWQyMTEzYjNiZmEw
YjlhNTI2YzY3M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtNjEsNyArNjEs
NyBAQCBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogU3RvcmFnZVF1b3RhTWFuYWdlciogSW5Qcm9j
ZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7
CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0b3JhZ2VRdW90
YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3Vy
cmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0b3JhZ2VRdW90YU1h
bmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVu
dFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAg
ICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOwogICAg
ICAgICB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2
aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY4NzI1NzRlODVjMjQwODc3MmIxZDEx
YTJlOGJjYjZkZDYwZGEyOTcuLmEzMWJhZGI1NGFjOTgxZTBlM2JhZGFmZTIwOTg3ODI5ZDNmNzQw
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMv
TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzJiBOYXZpZ2F0b3JNZWRpYUNh
cGFiaWxpdGllczo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvCiB7CiAgICAgTmF2aWdhdG9yTWVk
aWFDYXBhYmlsaXRpZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JNZWRpYUNh
cGFiaWxpdGllcyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM+
KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yTWVk
aWFDYXBhYmlsaXRpZXM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50Lmdl
dCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApp
bmRleCA1MGQwYmIwYjFlZDUzYTQzMjQ1OGQ5ZmI3MTM1NzBhZTBlY2EwZDA2Li5iOTc0MzRjNGU2
MjQ1ZDczY2NmMmQ2MjVhMGExYjAzZTEyOTBjYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0
TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmCiBNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja1BpY2tl
cigpCiB7CiAgICAgaWYgKCFtX3BpY2tlck92ZXJyaWRlKQotICAgICAgICBtX3BpY2tlck92ZXJy
aWRlID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRo
aXMpOworICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX3BpY2tlck92ZXJyaWRl
LmdldCgpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHVpbnQ2NF90IFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hCiAK
ICAgICBMT0coTWVkaWEsICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1Rhcmdl
dFBpY2tlckNsaWVudCglcCArICVsbHUpIiwgJmNsaWVudCwgY29udGV4dElkKTsKIAotICAgIG1f
Y2xpZW50U3RhdGUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwg
Y29udGV4dElkKSk7CisgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVuaXF1ZTxDbGllbnRT
dGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCiAgICAgICAgIHNjaGVkdWxlRGVsYXll
ZFRhc2soSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRp
b25UYXNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZS5jcHAKaW5kZXggZDQxN2ExMjE2OTExMTIxNWQ1NDIyOTFlMDNjNTlkNWQ2ZTdlYjNm
NC4uN2NiYzZhMTMzNTFlMGQzMmNlMjU1YTliYWRjYjk3NDRkYWY0ZDQ0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTE3
OCw5ICsxNzgsOSBAQCBNZWRpYVRpbWUgTWVkaWFTb3VyY2U6OmN1cnJlbnRUaW1lKCkgY29uc3QK
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJl
ZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYnVmZmVyZWQgJiYgbV9hY3RpdmVTb3VyY2VCdWZmZXJz
LT5sZW5ndGgoKSAmJiBzdGQ6OmFsbF9vZihtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmJlZ2luKCks
IG1fYWN0aXZlU291cmNlQnVmZmVycy0+ZW5kKCksIFtdKGF1dG8mIGJ1ZmZlcikgeyByZXR1cm4g
IWJ1ZmZlci0+aXNCdWZmZXJlZERpcnR5KCk7IH0pKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKLSAgICBtX2J1
ZmZlcmVkID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgbV9i
dWZmZXJlZCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGZvciAoYXV0
byYgc291cmNlQnVmZmVyIDogKm1fYWN0aXZlU291cmNlQnVmZmVycykKICAgICAgICAgc291cmNl
QnVmZmVyLT5zZXRCdWZmZXJlZERpcnR5KGZhbHNlKTsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgp
IGNvbnN0CiAKICAgICAvLyAxLiBJZiBhY3RpdmVTb3VyY2VCdWZmZXJzLmxlbmd0aCBlcXVhbHMg
MCB0aGVuIHJldHVybiBhbiBlbXB0eSBUaW1lUmFuZ2VzIG9iamVjdCBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCiAgICAgaWYgKGFjdGl2ZVJhbmdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAog
ICAgIC8vIDIuIExldCBhY3RpdmUgcmFuZ2VzIGJlIHRoZSByYW5nZXMgcmV0dXJuZWQgYnkgYnVm
ZmVyZWQgZm9yIGVhY2ggU291cmNlQnVmZmVyIG9iamVjdCBpbiBhY3RpdmVTb3VyY2VCdWZmZXJz
LgogICAgIC8vIDMuIExldCBoaWdoZXN0IGVuZCB0aW1lIGJlIHRoZSBsYXJnZXN0IHJhbmdlIGVu
ZCB0aW1lIGluIHRoZSBhY3RpdmUgcmFuZ2VzLgpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0
CiAKICAgICAvLyBSZXR1cm4gYW4gZW1wdHkgcmFuZ2UgaWYgYWxsIHJhbmdlcyBhcmUgZW1wdHku
CiAgICAgaWYgKCFoaWdoZXN0RW5kVGltZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCiAgICAgLy8gNC4gTGV0
IGludGVyc2VjdGlvbiByYW5nZXMgZXF1YWwgYSBUaW1lUmFuZ2Ugb2JqZWN0IGNvbnRhaW5pbmcg
YSBzaW5nbGUgcmFuZ2UgZnJvbSAwIHRvIGhpZ2hlc3QgZW5kIHRpbWUuCiAgICAgbV9idWZmZXJl
ZC0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgaGlnaGVzdEVuZFRpbWUpOwpAQCAtMjIxLDcg
KzIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNl
OjpidWZmZXJlZCgpIGNvbnN0CiAgICAgICAgIG1fYnVmZmVyZWQtPmludGVyc2VjdFdpdGgoc291
cmNlUmFuZ2VzKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZTo6c2Vla1Rv
VGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCkBAIC0zNDQsNyArMzQ0LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTWVkaWFTb3VyY2U6OnNldExpdmVTZWVrYWJsZVJhbmdlKGRvdWJsZSBzdGFydCwg
ZG91YmxlIGVuZCkKIAogICAgIC8vIFNldCBsaXZlIHNlZWthYmxlIHJhbmdlIHRvIGJlIGEgbmV3
IG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgY29udGFpbmluZyBhIHNpbmdsZSByYW5nZQog
ICAgIC8vIHdob3NlIHN0YXJ0IHBvc2l0aW9uIGlzIHN0YXJ0IGFuZCBlbmQgcG9zaXRpb24gaXMg
ZW5kLgotICAgIG1fbGl2ZVNlZWthYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZShlbmQpKTsKKyAgICBtX2xpdmVTZWVrYWJsZSA9IG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JNZWRpYURldmljZXMuY3BwCmluZGV4IGU0MTgyNzgzOGQ2MmNhMzhmYzNiZjNiZTc4ZjhmNGFh
OGFlNTI1OTYuLjdiMzU4ZjVlMGRlNDJmYjIyNjhkMzY5MDNlNThkYjVlYjc4ZTkwZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFE
ZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgTmF2aWdhdG9yTWVkaWFEZXZp
Y2VzKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7
CiAgICAgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yTWVkaWFEZXZpY2VzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRv
ciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvck1lZGlhRGV2aWNl
cz4obmF2aWdhdG9yLT53aW5kb3coKSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3ItPndpbmRvdygpKTsKICAg
ICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVU
byhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDhkN2U2M2NjNjA2ZDZkYTE5ZmJkYjEyZGU1
NGZiODU1ZmRmNjJjOTkuLjE0ZGYxMTYxZGFlNjhjYzQ2Y2I0OWVhYWUyMWY1ZWY5ODllMmFjYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFDb250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBVc2VyTWVkaWFDb250cm9s
bGVyOjp+VXNlck1lZGlhQ29udHJvbGxlcigpCiAKIHZvaWQgcHJvdmlkZVVzZXJNZWRpYVRvKFBh
Z2UqIHBhZ2UsIFVzZXJNZWRpYUNsaWVudCogY2xpZW50KQogewotICAgIFVzZXJNZWRpYUNvbnRy
b2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFDb250cm9sbGVyOjpzdXBwbGVtZW50TmFt
ZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xsZXI+KGNsaWVudCkpOworICAg
IFVzZXJNZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFDb250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xsZXI+KGNsaWVu
dCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTZWN1cmUoRG9jdW1lbnRMb2FkZXImIGRv
Y3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5jcHAKaW5kZXggYWFhNDAwMDIwNzM2NWZmY2JlNTI4MTI4ZTI4Y2UwMmY2YzYwN2Nk
ZC4uYzk4NWJjMTlhMzFkMDExNDU2NWFiYWJhNWYwNjBlZTUwZGE2MTE0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIFJlZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OmNoYW5uZWxFdmVudChTY3JpcHRFeGVjdXRpCiAgICAgaW5pdC5uZWdvdGlhdGVkID0gZGF0
YUNoYW5uZWwtPm5lZ290aWF0ZWQoKTsKICAgICBpbml0LmlkID0gZGF0YUNoYW5uZWwtPmlkKCk7
CiAKLSAgICBhdXRvIGhhbmRsZXIgPSAgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5uZWwpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSAg
bWFrZVVuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5u
ZWwpKTsKICAgICBhdXRvIGNoYW5uZWwgPSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQs
IFdURk1vdmUoaGFuZGxlciksIGZyb21TdGRTdHJpbmcobGFiZWwpLCBXVEZNb3ZlKGluaXQpKTsK
IAogICAgIHJldHVybiBSVENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRh
dGFjaGFubmVsRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObywgV1RGTW92ZShjaGFubmVsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlh
RW5kcG9pbnQuY3BwCmluZGV4IGRlZjFmOTFlZWU5ZWQ2ZWM3OGQxM2M2OWVjNDM0OGYwYWE2OGQz
NjcuLmQxYTc0Yjg1NzFiZWU3ZWU1ZTljMzE2MmVjYTJmNGQ2ZmY0MWU0NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAg
dm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpSdHBSZWNlaXYKICAgICB9CiAgICAgfQogCi0gICAgcmVjZWl2ZXItPnNl
dEJhY2tlbmQoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdU
Rk1vdmUocnRjUmVjZWl2ZXIpKSk7CisgICAgcmVjZWl2ZXItPnNldEJhY2tlbmQobWFrZVVuaXF1
ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CiAg
ICAgYXV0byYgdHJhY2sgPSByZWNlaXZlci0+dHJhY2soKTsKICAgICBhZGRQZW5kaW5nVHJhY2tF
dmVudChyZWNlaXZlci5yZWxlYXNlTm9uTnVsbCgpLCB0cmFjaywgcnRjU3RyZWFtcywgbnVsbHB0
cik7CiB9CkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpj
b2xsZWN0VHJhbnNjZWl2ZXJzKCkKICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNj
ZWl2ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdU
Rk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAg
ICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikp
LCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogfQogCkBAIC00OTksNyArNDk5LDcg
QEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFuc2NlaXZlcihydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2MKICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFj
a2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2Vp
dmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSk7CiAKICAgICBhZGRQZW5kaW5nVHJhY2tFdmVudChtYWtlUmVmKG5ld1RyYW5zY2VpdmVy
LnJlY2VpdmVyKCkpLCBuZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpLnRyYWNrKCksIHJ0Y1JlY2Vp
dmVyLT5zdHJlYW1zKCksIG1ha2VSZWYobmV3VHJhbnNjZWl2ZXIpKTsKIH0KQEAgLTUzNCw3ICs1
MzQsNyBAQCBPcHRpb25hbDxMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcz4gTGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZQogICAgIGlmICghcmVzdWx0Lm9rKCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHRyYW5zY2VpdmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3Zl
VmFsdWUoKSk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92ZVZhbHVlKCkpOwogICAgIHJldHVybiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcyB7IHRyYW5zY2VpdmVyLT5jcmVhdGVTZW5kZXJC
YWNrZW5kKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLCBXVEZNb3ZlKHNvdXJjZSkpLCB0cmFuc2Nl
aXZlci0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCksIFdURk1vdmUodHJhbnNjZWl2ZXIpIH07CiB9
CiAKQEAgLTU4NSw3ICs1ODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaQogewogICAgIGZv
ciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX2JhY2tlbmQtPkdldFRyYW5zY2VpdmVycygpKSB7CiAg
ICAgICAgIGlmICh0cmFuc2NlaXZlci0+c2VuZGVyKCkuZ2V0KCkgPT0gYmFja2VuZC5ydGNTZW5k
ZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjZWl2
ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2NlaXZlcikpOwogICAgIH0KICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTY1NCw3ICs2NTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVEYXRhQ2hh
bm5lbAogewogICAgIGF1dG8gaW5pdCA9IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6ZnJv
bVJUQ0RhdGFDaGFubmVsSW5pdChvcHRpb25zKTsKICAgICBhdXRvIGNoYW5uZWwgPSBtX2JhY2tl
bmQtPkNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLnV0ZjgoKS5kYXRhKCksICZpbml0KTsKLSAgICBy
ZXR1cm4gY2hhbm5lbCA/IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGNoYW5uZWwgPyBt
YWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFubmVsKSkg
OiBudWxscHRyOwogfQogCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5u
ZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+IGRhdGFD
aGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKaW5kZXggMjA3ZjE1ZTY0NTdiOWRmY2FjMWMzMzllYTM5ZmVhMWQ3Nzg1OWQ4
Yi4uZmM5MWNjZDBiYmQxZmRiYmE3NjQyZTcwNGYzN2ZlODVjYzcyZmQ1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5k
PiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlCiAKICAgICBwYWdlLT5saWJXZWJS
VENQcm92aWRlcigpLnNldEVuYWJsZVdlYlJUQ0VuY3J5cHRpb24ocGFnZS0+c2V0dGluZ3MoKS53
ZWJSVENFbmNyeXB0aW9uRW5hYmxlZCgpKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24sIHBhZ2UtPmxp
YldlYlJUQ1Byb3ZpZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24sIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVy
KCkpOwogfQogCiBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpjcmVhdGUgPSBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CkBAIC0z
MTEsNyArMzExLDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpWaWRlb1JlY2Vp
dmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmkKICAgICBhdXRvIHNvdXJjZSA9
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJh
Y2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShzb3Vy
Y2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwor
ICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFu
c2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAidmlkZW8iX3MsIHsg
fSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7
CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgbV9wZWVy
Q29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBAIC0zMzQs
NyArMzM0LDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVy
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXUKICAgICBhdXRvIHNvdXJjZSA9IFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJ
ZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShzb3VyY2Uu
Y29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2Nl
aXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAiYXVkaW8iX3MsIHsgfSwg
V1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAg
ICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgbV9wZWVyQ29u
bmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBAIC00MDAsNyAr
NDAwLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8UlRDUnRwU2VuZGVyPiBmaW5kRXhpc3RpbmdT
ZW5kZXIoY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHAKIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBT
ZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3Ry
ZWFtVHJhY2smIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzKQogewogICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZp
ZWRQbGFuRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
ICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFj
aygqc2VuZGVyQmFja2VuZCwgdHJhY2ssIG1lZGlhU3RyZWFtSWRzKSkKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07CiAK
QEAgLTQzOCw3ICs0MzgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cgogICAgICAgICBjb25z
dCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLmtpbmQoKTsKICAgICAgICAgU3RyaW5nIHRyYWNr
SWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBzZW5kZXJC
YWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhp
cywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBhdXRvIG5l
d1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBtYWtlUmVmKHRyYWNrKSwgVmVj
dG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsK
ICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYWNrS2luZCwgdHJhY2tJ
ZCk7CiAgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRl
KFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShyZWNlaXZlciksIG51bGxwdHIpOwpAQCAtNDcy
LDcgKzQ3Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5FbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFN0cmluZyB7IHRyYWNr
S2luZCB9LCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8g
c2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRo
aXMsIG51bGxwdHIpOwogICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUo
KnRoaXMsIFN0cmluZyh0cmFja0tpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRl
ckJhY2tlbmQpKTsKICAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihXVEZNb3ZlKG5l
d1NlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgdHJhY2tLaW5kKTsK
IH0KQEAgLTQ4Miw3ICs0ODIsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+
PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdgogICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQbGFu
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRkVW5pZmllZFBsYW5UcmFuc2NlaXZlcihXVEZN
b3ZlKHRyYWNrKSwgaW5pdCk7CiAKLSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBh
dXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+
KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvJiBiYWNrZW5kID0gKnNlbmRlckJhY2tlbmQ7CiAg
ICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgdHJhY2suY29weVJl
ZigpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICBpZiAo
IW1fZW5kcG9pbnQtPmFkZFRyYWNrKGJhY2tlbmQsIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiB7IH0p
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAppbmRl
eCA2ODUwZTZhODVlOTAyNGJiMTE0NWI2Yjk0MjI5YzBmNjE0MmRmN2FhLi42YWVlYTEzMzg5MmQy
MDYzZjAzNTM5YjhlZWM0ZGI5YmNlNjRkN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBTZW5kUGFyYW1l
dGVycyYgcGFyYW1lCiAKIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVyQmFja2VuZD4gTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRNRkJhY2tlbmQoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRl
ci0+R2V0RHRtZlNlbmRlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IGViODcxZWI3ZGIwMzg4NGY0Y2M3ZTBhZGVmNjg3
ODJlMWMwOTcyZDcuLjVjMGQ3ZTk1ZTJmZDEyZTNmODRmMTdjZmJlYjZkODY3YTUxZjJlNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
LmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kOjpjcmVhdGVSZWNlaXZlckJhY2tlbmQoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFuc2NlaXZlci0+
cmVjZWl2ZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJC
YWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5yZWNlaXZlcigpKTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFj
a2VuZDo6Y3JlYXRlU2VuZGVyQmFja2VuZChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQm
IGJhY2tlbmQsIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OlNvdXJjZSYmIHNvdXJjZSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPihi
YWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3VyY2UpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPihiYWNrZW5kLCBt
X3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3VyY2UpKTsKIH0KIAogUlRDUnRw
VHJhbnNjZWl2ZXJEaXJlY3Rpb24gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpkaXJl
Y3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAwYzMyOGZhZTQ0MjM1OTkyNTMzMDcyYzg1ZDZi
MzJmZGM2YzEzODM4Li4wZWJhZmY4OWZmYmM1MDAzZTI0NjFiYWRlZTUyMDM5MTE3MWNiZDNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbgogICAg
ICwgbV9ib2R5KG9wdGlvbnMuYm9keSkKICAgICAsIG1fdGFnKG9wdGlvbnMudGFnKQogICAgICwg
bV9zdGF0ZShJZGxlKQotICAgICwgbV90YXNrVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4o
W3RoaXNdICgpIHsgc2hvdygpOyB9KSkKKyAgICAsIG1fdGFza1RpbWVyKG1ha2VVbmlxdWU8VGlt
ZXI+KFt0aGlzXSAoKSB7IHNob3coKTsgfSkpCiB7CiAgICAgaWYgKCFvcHRpb25zLmljb24uaXNF
bXB0eSgpKSB7CiAgICAgICAgIGF1dG8gaWNvblVSTCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKG9w
dGlvbnMuaWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYTYyMDM1Mzkz
YzdmYjNmNmRkZjAxYzVjODlkNzRmM2I1ZWRkMmQ0NC4uZDQ4ZjIwNWE5ZTI0MTRlMDdkNzIyZjkw
MzI1YTdjMzY0ZDQ4OTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBjb25zdCBjaGFyKiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50
TmFtZSgpCiAKIHZvaWQgcHJvdmlkZU5vdGlmaWNhdGlvbihQYWdlKiBwYWdlLCBOb3RpZmljYXRp
b25DbGllbnQqIGNsaWVudCkKIHsKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRl
VG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjpt
YWtlX3VuaXF1ZTxOb3RpZmljYXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKKyAgICBOb3RpZmlj
YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6
c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxOb3RpZmljYXRpb25Db250cm9sbGVyPihjbGll
bnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcAppbmRleCAwM2ZlOWUzODY3OGY0MDUwNzMy
NTUwOWMyMDM4NjdjOWNmODIwZmYxLi5jOThjOTk4NmRlZDZjZDIwNTQyNjE3MjE1ZjY1MzZjZTU4
ZjI3OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRv
d1F1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1
b3RhLmNwcApAQCAtNTcsNyArNTcsNyBAQCBET01XaW5kb3dRdW90YSogRE9NV2luZG93UXVvdGE6
OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93UXVvdGEqIHN1cHBsZW1l
bnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dRdW90YSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6
ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dR
dW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxE
T01XaW5kb3dRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1l
bnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdU
Rk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA3YmExZDNkNGIz
Njk0NDBjNjRlMTdkZDIwY2E5NDUzOGI4YWQ5Yjc0Li43YTA4MDQ1OTU2OTgzYTMxZjZkODM0ZWY3
ZWE3NzJmYTY2NzM2YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3Rh
L05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9x
dW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRv
clN0b3JhZ2VRdW90YSogTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKE5hdmlnYXRvciogbmF2
aWdhdG9yKQogewogICAgIE5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3VwcGxlbWVudCA9IHN0YXRp
Y19jYXN0PE5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJv
bShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JT
dG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50
ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3Vw
cGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9y
YWdlUXVvdGEuY3BwCmluZGV4IDk1YzNlNDM2NDczMTYyYTUwZDYxYjVjZTc1MTY1ZWU2OGIyMWI3
MjcuLjFhMWM4NDdkYzQ5N2RjNjQ4NDVmNTZlY2U1OTI2M2E0MjZhZjYzMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0
b3JhZ2VRdW90YS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1
b3RhKiBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oV29ya2VyTmF2aWdhdG9yKgog
ewogICAgIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdh
dG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBs
ZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
b3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cp
OwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJv
dmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggMzc5NTY1MjZmYmYyODY5MGVjZjAz
OTk1MmM1MmY2ZTA0NDZiY2I0Yy4uOTY5YzIzN2Y3YzgxNTUxNTNkZTA3MWVjOTZhNjFhNGE0NjJk
M2Y5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93
U3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9E
T01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIERPTVdpbmRvd1Nw
ZWVjaFN5bnRoZXNpcyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpmcm9tKERPTVdpbmRvdyog
d2luZG93KQogewogICAgIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93
Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5k
b3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3aW5kb3cpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRv
dywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5k
ZXggNzJiNTYzZTRiYmY3ZGNlMDNmYTMwODgwZDJmYTc3MGI4OTg2OTNhNC4uZTdiNjJhMWExN2Jk
OTZhOWY1YTEzZmQwOWU3NDlhYjRiY2UxOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
U3BlZWNoU3ludGhlc2lzOjp2b2ljZXNEaWRDaGFuZ2UoKQogUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplciYgU3BlZWNoU3ludGhlc2lzOjplbnN1cmVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkK
IHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcikKLSAgICAgICAgbV9wbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyPih0aGlzKTsKKyAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKICAgICByZXR1cm4g
Km1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCA2MmY2OGVj
NjYzYTgwMjEyYzZmM2FmN2I4NWUyM2M2YjRmNzQyYTBhLi4yZjU0MjcyYWM1YzAxZDBhMjMwZTVj
MGRmMDQ1MjRhZmIyYTRlMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEFz
eW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyhSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRh
LCBmbG9hdCBzYW1wbGVSYQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBh
dXRvIGRlY29kaW5nVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2RpbmdUYXNrPihXVEZNb3Zl
KGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92
ZShlcnJvckNhbGxiYWNrKSk7CisgICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBtYWtlVW5pcXVlPERl
Y29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHN1Y2Nl
c3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogICAgIG1fcXVldWUuYXBwZW5k
KFdURk1vdmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5vdGUgdGhhdCBvd25lcnNoaXAgb2YgdGhlIHRh
c2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1ZXVlLgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKaW5kZXggYmMw
MGViOWY4N2QxYmNkNThjYmY3NDliN2RhN2M0OTNjZjdlODg3Ni4uY2Y5MjY5YzMwNDRjNDMyMmQ3
NDRkMDYyOWRkYTBmYTg5NDkzZWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaApAQCAtNDIsNyArNDIsOCBAQCBjbGFzcyBB
dWRpb0J1ZmZlckNhbGxiYWNrOwogLy8gQXN5bmNBdWRpb0RlY29kZXIgYXN5bmNocm9ub3VzbHkg
ZGVjb2RlcyBhdWRpbyBmaWxlIGRhdGEgZnJvbSBhbiBBcnJheUJ1ZmZlciBpbiBhIHdvcmtlciB0
aHJlYWQuCiAvLyBVcG9uIHN1Y2Nlc3NmdWwgZGVjb2RpbmcsIGEgY29tcGxldGlvbiBjYWxsYmFj
ayB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgZGVjb2RlZCBQQ00gZGF0YSBpbiBhbiBBdWRpb0J1
ZmZlci4KIAotY2xhc3MgQXN5bmNBdWRpb0RlY29kZXIgeworY2xhc3MgQXN5bmNBdWRpb0RlY29k
ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEFzeW5jQXVkaW9EZWNvZGVyKTsKIHB1YmxpYzoKICAgICBBc3luY0F1ZGlvRGVj
b2RlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAppbmRleCBiYThjMjU1YWU3ZDdkYTczYmM5ZmY2
NTU0M2YxZTM3YmM5NTQwNGIzLi4wZmI1NWIwOGYwYzFhMmJlMmQwNzBjNGUwZDhkOGY0NjdlMzQ2
YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcApAQCAtNDAsOCArNDAsOCBAQCBBdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAg
ICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCYXNpY0luc3BlY3Rvcik7Ci0gICAgYWRkSW5wdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgb3V0cHV0Q2hhbm5lbENvdW50KSk7
CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFk
ZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgb3V0cHV0Q2hhbm5lbENv
dW50KSk7CiB9CiAKIC8vIFdlIG92ZXJyaWRlIHB1bGxJbnB1dHMoKSBhcyBhbiBvcHRpbWl6YXRp
b24gYWxsb3dpbmcgdGhpcyBub2RlIHRvIHRha2UgYWR2YW50YWdlIG9mIGluLXBsYWNlIHByb2Nl
c3NpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGJjMTg5YzA4Y2JlZmM3YzE5NjA2NDY2
YzA3NjhiOGZhNjM0YjE2YWIuLjBiOWYxY2VkODc0NWI1ZDk5OGRjMzhkNjM2ZTc5MGFiZmJlNmU5
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCkBAIC00Miw4ICs0Miw4IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiBBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiB7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykp
OwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MSkpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAg
ICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAg
IC8vIFRoZSBzdWJjbGFzcyBtdXN0IGNyZWF0ZSBtX3Byb2Nlc3Nvci4KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcAppbmRleCA0MGFjMzJjNWM1NWMzZDMyZDBlMTRiNmE3ZDIyYjI0NjczOTBmNGJmLi4yNTEw
YzQwYTdmNjEyM2Q0YzdmYzJkNjQwYTkwYjRmMGE5OGU2ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CkBAIC03Myw3ICs3Myw3IEBAIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlCiAgICAgbV9wbGF5YmFj
a1JhdGUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInBsYXliYWNrUmF0ZSIsIDEuMCwg
LU1heFJhdGUsIE1heFJhdGUpOwogCiAgICAgLy8gRGVmYXVsdCB0byBtb25vLiAgQSBjYWxsIHRv
IHNldEJ1ZmZlcigpIHdpbGwgc2V0IHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzIHRvIHRo
YXQgb2YgdGhlIGJ1ZmZlci4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5OTU2YzE1ODYy
MTg5YzcxNDI5Y2JjZmQ2MDA0MmYwMGM5OGJhZWY2Li5kNGNkYjc2NThjMGYzNWI1ZmM5YTIyY2U4
OThiY2IyYjk5ZWU0ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtl
X3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKG1h
a2VVbmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKIHsKICAgICAvLyBBY2NvcmRpbmcg
dG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgog
ICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2
aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0aG9kLgpAQCAtMTY2LDcgKzE2Niw3IEBAIEF1
ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscywgc2l6ZV90CiAjZW5kaWYKICAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0
cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgq
dGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRR
dWV1ZT4oKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8R2VuZXJpY0V2ZW50
UXVldWU+KCp0aGlzKSkKIHsKICAgICBjb25zdHJ1Y3RDb21tb24oKTsKIApAQCAtNDMyLDcgKzQz
Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlCiB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVjb2Rl
QXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0cjxBdWRpb0J1ZmZl
ckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+
JiYgZXJyb3JDYWxsYmFjaykKIHsKICAgICBpZiAoIW1fYXVkaW9EZWNvZGVyKQotICAgICAgICBt
X2F1ZGlvRGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7Cisg
ICAgICAgIG1fYXVkaW9EZWNvZGVyID0gbWFrZVVuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsK
ICAgICBtX2F1ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1w
bGVSYXRlKCksIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNr
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggOTc1ODg3NTQ3NDdlMTUyNDgxODlmNDk3MGM2
ZDMzZTNjNmFlMWUxMS4uZDlhYmI5Nzc3YTlkMjVlZWFmMjQyZmY0ZmZmYzVlYzVlZjQ4NmM0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQXVkaW9EZXN0aW5hdGlvbk5vZGU6
OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmEKICAgICAsIG1fbXV0ZWQoZmFsc2UpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZXN0
aW5hdGlvbik7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsK
IH0KIAogQXVkaW9EZXN0aW5hdGlvbk5vZGU6On5BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNw
cAppbmRleCAxNjM3M2NlOTM3OGQzMjJmZGQ5YzI1M2Y5Yzc2ZDk2M2U2MTNjZDNiLi40YTgyNTVl
NmYwYWYwNzY3MTM4ZTQ2ODk4ZjhiNjM2YWIyZDc1NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCaXF1YWRG
aWx0ZXIpOwogCiAgICAgLy8gSW5pdGlhbGx5IHNldHVwIGFzIGxvd3Bhc3MgZmlsdGVyLgotICAg
IG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxCaXF1YWRQcm9jZXNzb3I+KGNvbnRleHQs
IHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8Qmlx
dWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxzZSk7CiB9CiAKIEJpcXVh
ZEZpbHRlclR5cGUgQmlxdWFkRmlsdGVyTm9kZTo6dHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKaW5kZXggMGU0
ZTM2ODViODJjZTQ3N2VjNGU1ODU0N2YxNmFkOGI3MGZjNzkwNC4uZTg0Yjk4MDM1NjcwZmIxZGNj
MzI3MDk2NjNkMmIzOTA1NTJlNjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtNjIsNyArNjIsNyBAQCBCaXF1YWRQ
cm9jZXNzb3I6On5CaXF1YWRQcm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BL
ZXJuZWw+IEJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiB9CiAKIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpj
aGVja0ZvckRpcnR5Q29lZmZpY2llbnRzKCkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEJpcXVh
ZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVzcG9uc2UoaW50IG5GcmVxdWVuY2llcywgY29uc3Qg
ZmxvYXQqIGZyZXF1ZQogICAgIC8vIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggdGhlIHByb2Nl
c3NpbmcgcnVubmluZyBpbiB0aGUgYXVkaW8KICAgICAvLyB0aHJlYWQgb24gdGhlIG1haW4ga2Vy
bmVscy4KICAgICAKLSAgICBhdXRvIHJlc3BvbnNlS2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxC
aXF1YWREU1BLZXJuZWw+KHRoaXMpOworICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBtYWtlVW5p
cXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiAKICAgICByZXNwb25zZUtlcm5lbC0+Z2V0RnJl
cXVlbmN5UmVzcG9uc2UobkZyZXF1ZW5jaWVzLCBmcmVxdWVuY3lIeiwgbWFnUmVzcG9uc2UsIHBo
YXNlUmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAppbmRleCAyMGI4ZGExOWU1ZjQzOWNmZTU0NTVmMDFk
YzI5MDg3NDQ2YjIzYzA4Li5kZjUwZjI2ODczNjhhYTVjMzI5NTQxNDgxNTA3NzdhMDI5MTczMmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJn
ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmNwcApAQCAtNTksOSArNTksOSBAQCBDaGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5l
bE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bgog
CiAgICAgLy8gQ3JlYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlucHV0cy4KICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkKLSAgICAgICAgYWRkSW5w
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgICAgICBhZGRJ
bnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiAKLSAgICBhZGRPdXRwdXQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRw
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0
aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA0NjM1NDk4YzAzNGM1OTMwYjRlOGYyMjA4
NmUxNGIyYjRiZDI5MTE3Li44MmY2OWEwNGY5OTkyNjFkNThjMTUyYmZjNjAyYTM2NjA5NjA5MWI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxp
dHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bFNwbGl0dGVyTm9kZS5jcHAKQEAgLTUwLDExICs1MCwxMSBAQCBDaGFubmVsU3BsaXR0ZXJOb2Rl
OjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNwbGl0dGVyKTsKIAotICAg
IGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBh
ZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiAKICAgICAvLyBDcmVh
dGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAoYWJsZSB0byBoYW5kbGUgdGhlIG1heGltdW0g
bnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBpbnB1dCkuCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQotICAgICAgICBhZGRPdXRwdXQoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICAgICAgYWRkT3V0cHV0
KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAgICAgCiAgICAgaW5pdGlh
bGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5jcHAKaW5kZXggMjM4MmRhYmNjOWM5OTI3Y2FjMzFkMzI3NWYyMjAzY2M4ZjU4YTA5
My4uZTM2Njc3Y2ZkNzQ1ZThiYmUwMmRhM2RjNGRkN2JhMWYxYTUzZGQ0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC01Miw4
ICs1Miw4IEBAIENvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ29udm9s
dmVyKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRo
aXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIDIpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAK
ICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgogICAgIG1fY2hhbm5l
bENvdW50ID0gMjsKQEAgLTE0Niw3ICsxNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb252b2x2
ZXJOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIqIGJ1ZmZlcikKIAogICAgIC8vIENyZWF0ZSB0
aGUgcmV2ZXJiIHdpdGggdGhlIGdpdmVuIGltcHVsc2UgcmVzcG9uc2UuCiAgICAgYm9vbCB1c2VC
YWNrZ3JvdW5kVGhyZWFkcyA9ICFjb250ZXh0KCkuaXNPZmZsaW5lQ29udGV4dCgpOwotICAgIGF1
dG8gcmV2ZXJiID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmI+KGJ1ZmZlckJ1cy5nZXQoKSwgQXVk
aW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzLCBNYXhGRlRTaXplLCAyLCB1c2VCYWNrZ3Jv
dW5kVGhyZWFkcywgbV9ub3JtYWxpemUpOworICAgIGF1dG8gcmV2ZXJiID0gbWFrZVVuaXF1ZTxS
ZXZlcmI+KGJ1ZmZlckJ1cy5nZXQoKSwgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVz
LCBNYXhGRlRTaXplLCAyLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcywgbV9ub3JtYWxpemUpOwogCiAg
ICAgewogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRoIHByb2Nlc3MoKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAppbmRleCA0MjY1YTAwNzQ5ZWFm
ZmY2YTllMWI5ZDFkZGE2MGQ0ZGI3MDI4YjAzLi44MWJkN2QxOWIyN2U3NDFiNTBmNmY4NGU1MWY3
Y2UyNTU3ODAyYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eU5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGlubGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhECiAgICAg
OiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3Vu
aXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1l
KTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQs
IHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxEZWxh
eU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCmluZGV4IGE3NWJhNmI3YzkyZTc0NDRj
NjU2MDhlOGFlMThmOWQ1MDAwMjZhMDQuLjEwMzY2ZWY2ZWFmYjZjNDRkYjE5MTI3MWE5OTVkOWU2
ZDJhY2JhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIERlbGF5UHJvY2Vzc29yOjp+RGVsYXlQ
cm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IERlbGF5UHJvY2Vz
c29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5
RFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWxheURTUEtlcm5lbD4o
dGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmlu
ZGV4IGFhMGU0YTgwMTE5ZWJlZDlkZDM2OTZiM2ZhMTMwNWRkZjMyYmQwNTIuLjE0MDk2ZDhmMGM1
OTZhNTI5NzE2NjZlZjgyNjdhMDIzZmRiNDRiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAt
NDYsOCArNDYsOCBAQCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JO
b2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcAogewogICAgIHNldE5vZGVUeXBl
KE5vZGVUeXBlRHluYW1pY3NDb21wcmVzc29yKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxz
KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpKTsKIAogICAgIG1fdGhyZXNob2xkID0gQXVkaW9QYXJhbTo6Y3Jl
YXRlKGNvbnRleHQsICJ0aHJlc2hvbGQiLCAtMjQsIC0xMDAsIDApOwogICAgIG1fa25lZSA9IEF1
ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAia25lZSIsIDMwLCAwLCA0MCk7CkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOyAgICAKLSAgICBtX2R5bmFt
aWNzQ29tcHJlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8RHluYW1pY3NDb21wcmVzc29yPihzYW1w
bGVSYXRlKCksIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBtX2R5bmFtaWNz
Q29tcHJlc3NvciA9IG1ha2VVbmlxdWU8RHluYW1pY3NDb21wcmVzc29yPihzYW1wbGVSYXRlKCks
IGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIH0KIAogdm9pZCBEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlOjp1bmluaXRpYWxpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCA2Yzk0YTUyM2MzYjJhMDIxMmIyYTU0YTFhOWM4ZjAyNmJi
ZDFkYjVmLi4yNTdkZjJlY2UyMzM4Y2JjYmFiOWVkMDUxMjMzYzY0YjFjNTdmMjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcApAQCAtNDYsOCArNDYs
OCBAQCBHYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQogCiAgICAgbV9nYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJnYWlu
IiwgMS4wLCAwLjAsIDEuMCk7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJ
bnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuY3BwCmluZGV4IDM4MWFlNzI3OTRmYjBlN2ZlYTYzMzFhYmQzM2IyMGMxNTg0NWZmOWIuLjkx
MmU2ZWIyMzIxNDU2NDNkNmZkYWZiYzExZTk2NzY0YzNkMmY1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LAog
ICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2UpOwogCiAgICAg
Ly8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdlIGRlcGVuZGluZyBvbiB3aGF0
IHRoZSBtZWRpYSBlbGVtZW50IC5zcmMgaXMgc2V0IHRvLgotICAgIGFkZE91dHB1dChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFkZE91dHB1dChtYWtl
VW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwog
fQpAQCAtODksNyArODksNyBAQCB2b2lkIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0
Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyYwogCiAgICAgICAgIGlm
IChzb3VyY2VTYW1wbGVSYXRlICE9IHNhbXBsZVJhdGUoKSkgewogICAgICAgICAgICAgZG91Ymxl
IHNjYWxlRmFjdG9yID0gc291cmNlU2FtcGxlUmF0ZSAvIHNhbXBsZVJhdGUoKTsKLSAgICAgICAg
ICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNdWx0aUNoYW5u
ZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgICAg
IG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBs
ZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIEJ5cGFzcyByZXNhbXBsaW5nLgogICAgICAgICAgICAgbV9tdWx0aUNoYW5u
ZWxSZXNhbXBsZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCA1
YjJhNTAwZGQyOTRkMTA1NThiYzdhMDhjZjc3MTZlNDI2YjVjMmFjLi5lNDNmNTQ0OGJjMjZiODZh
ZjY5M2QwMDk5OTVjNjczNGY2OTU1ZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZQogICAgIGF1ZGlvU291cmNl
UHJvdmlkZXItPnNldENsaWVudCh0aGlzKTsKICAgICAKICAgICAvLyBEZWZhdWx0IHRvIHN0ZXJl
by4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSBmb3JtYXQgb2YgdGhlIE1lZGlh
U3RyZWFtJ3MgYXVkaW8gdHJhY2suCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CkBAIC05Myw3ICs5
Myw3IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmNlCiAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVz
YW1wbGVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKICAgICAgICAgZG91YmxlIHNjYWxlRmFjdG9y
ID0gc291cmNlU2FtcGxlUmF0ZSAvIHNhbXBsZVJhdGU7Ci0gICAgICAgIG1fbXVsdGlDaGFubmVs
UmVzYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxl
RmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBs
ZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJl
ck9mQ2hhbm5lbHMpOwogICAgIH0KIAogICAgIG1fc291cmNlTnVtYmVyT2ZDaGFubmVscyA9IG51
bWJlck9mQ2hhbm5lbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDViNTAyOWJmYmNlNzdhZDViNmMzYzg4MzI2MGRiOWRl
ZmRmNjEwNGIuLmE5OWNlYWFkNmI1YzIxZTA5ZGQyMjUzYzJhY2YzMDQ1NTQ3NTNlN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIE9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgc2V0VHlwZShtX3R5cGUpOwog
CiAgICAgLy8gQW4gb3NjaWxsYXRvciBpcyBhbHdheXMgbW9uby4KLSAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRwdXQo
bWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3Bw
CmluZGV4IGY2NDc0NjllMjM1NWViM2EwYzA5YjNiMDg1MmJmYmVjNmU0OGQyOGQuLjUxYzY5OTE2
ZmZkZTcwZjVlNjgwYWE5MjdjZWZlZjdjYTczMmMzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtNTgsOCArNTgsOCBAQCBQYW5uZXJO
b2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICAvLyBMb2FkIHRoZSBIUlRGIGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5IHNvIHdlIGRvbid0
IGJsb2NrIHRoZSBKYXZhc2NyaXB0IHRocmVhZCB3aGlsZSBjcmVhdGluZyB0aGUgSFJURiBkYXRh
YmFzZS4KICAgICBtX2hydGZEYXRhYmFzZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3Jl
YXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoY29udGV4dC5zYW1wbGVSYXRlKCkp
OwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykp
OwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAg
ICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAg
IC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFubmVsQ291
bnQgPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJp
b2RpY1dhdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuY3BwCmluZGV4IGJiMmEwN2QyMzU0ZWJhZjk0ZDAwNDY1YTRiNDFkODYwNTU1OTk4NmIuLmVj
OWExN2M0ZjU2ZWI5OTY2ZGMxNzYyN2U5MzQwNWJhMWZkNDhjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKQEAgLTE5Miw3ICsxOTIs
NyBAQCB2b2lkIFBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMoY29uc3QgZmxv
YXQqIHJlYWxEYXRhLCBjb25zdCBmbG9hdCogaQogICAgICAgICByZWFsUFswXSA9IDA7CiAKICAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBiYW5kLWxpbWl0ZWQgdGFibGUuCi0gICAgICAgIG1fYmFuZExp
bWl0ZWRUYWJsZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihtX3Bl
cmlvZGljV2F2ZVNpemUpKTsKKyAgICAgICAgbV9iYW5kTGltaXRlZFRhYmxlcy5hcHBlbmQobWFr
ZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVyaW9kaWNXYXZlU2l6ZSkpOwogCiAgICAgICAg
IC8vIEFwcGx5IGFuIGludmVyc2UgRkZUIHRvIGdlbmVyYXRlIHRoZSB0aW1lLWRvbWFpbiB0YWJs
ZSBkYXRhLgogICAgICAgICBmbG9hdCogZGF0YSA9IG1fYmFuZExpbWl0ZWRUYWJsZXNbcmFuZ2VJ
bmRleF0tPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDNiNjI4MWQxZTg0M2VkMjk5Y2Y2MTUzYzczMjc5
NzA3NDE4MDY3NzguLjgwMjM3MzQwN2Y3NWQ0N2UyNTllYjYwNTYzODBmNjM1ZjEzYWNlZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5
c2VyKCkKICAgICAsIG1fbWluRGVjaWJlbHMoRGVmYXVsdE1pbkRlY2liZWxzKQogICAgICwgbV9t
YXhEZWNpYmVscyhEZWZhdWx0TWF4RGVjaWJlbHMpCiB7Ci0gICAgbV9hbmFseXNpc0ZyYW1lID0g
c3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOworICAgIG1fYW5hbHlz
aXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KERlZmF1bHRGRlRTaXplKTsKIH0KIAogUmVh
bHRpbWVBbmFseXNlcjo6flJlYWx0aW1lQW5hbHlzZXIoKSA9IGRlZmF1bHQ7CkBAIC04Myw3ICs4
Myw3IEBAIGJvb2wgUmVhbHRpbWVBbmFseXNlcjo6c2V0RmZ0U2l6ZShzaXplX3Qgc2l6ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fZmZ0U2l6ZSAhPSBzaXplKSB7Ci0gICAg
ICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KHNpemUpOwor
ICAgICAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihzaXplKTsKICAg
ICAgICAgLy8gbV9tYWduaXR1ZGVCdWZmZXIgaGFzIHNpemUgPSBmZnRTaXplIC8gMiBiZWNhdXNl
IGl0IGNvbnRhaW5zIGZsb2F0cyByZWR1Y2VkIGZyb20gY29tcGxleCB2YWx1ZXMgaW4gbV9hbmFs
eXNpc0ZyYW1lLgogICAgICAgICBtX21hZ25pdHVkZUJ1ZmZlci5hbGxvY2F0ZShzaXplIC8gMik7
CiAgICAgICAgIG1fZmZ0U2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCBkNTlkZWNmOTk1
MTZmNmQwMWFmOWMxZDlmZGJmMWQwYjEwMTllNDBmLi5kNWIzYWZiZjI3MTAxNDUxNDk0YjE4OTM3
NzY4YjYwNWY2YTNiNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTY4LDggKzY4LDggQEAgU2NyaXB0
UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUKICAgICBBU1NFUlQobnVtYmVyT2ZJbnB1dENoYW5uZWxzIDw9IEF1
ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKIAogICAgIHNldE5vZGVUeXBlKE5v
ZGVUeXBlSmF2YVNjcmlwdCk7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOworICAgIGFkZElucHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKIAogICAg
IGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCmluZGV4IDQxMGQxZGFmNWM4OTU0MDA5ZmYw
NjM2YTgyOTAwYmY5NGFmNGY4ZjEuLmYzZDIxMjJkZjUxYzRmMWEyOTIyNGU2OTNhYjQ5NWJiYzJi
OTM4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlckRTUEtlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyRFNQS2VybmVsLmNwcApAQCAtNDksMTIgKzQ5LDEyIEBAIHZvaWQgV2F2ZVNoYXBl
ckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcoKQogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdGVtcEJ1ZmZlcikgewotICAgICAgICBtX3RlbXBC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1
bSAqIDIpOwotICAgICAgICBtX3RlbXBCdWZmZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zs
b2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKLSAgICAgICAgbV91cFNhbXBsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSk7Ci0gICAgICAgIG1f
ZG93blNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFu
dHVtICogMik7Ci0gICAgICAgIG1fdXBTYW1wbGVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1w
bGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fZG93blNhbXBsZXIyID0gc3Rk
OjptYWtlX3VuaXF1ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAg
ICBtX3RlbXBCdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVh
bnR1bSAqIDIpOworICAgICAgICBtX3RlbXBCdWZmZXIyID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0
QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKKyAgICAgICAgbV91cFNhbXBsZXIgPSBtYWtl
VW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSk7CisgICAgICAgIG1fZG93blNhbXBs
ZXIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7CisgICAg
ICAgIG1fdXBTYW1wbGVyMiA9IG1ha2VVbmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVt
ICogMik7CisgICAgICAgIG1fZG93blNhbXBsZXIyID0gbWFrZVVuaXF1ZTxEb3duU2FtcGxlcj4o
UmVuZGVyaW5nUXVhbnR1bSAqIDQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAppbmRleCA4NDg2OTkzZjIxMDg0
Y2NjNjFjY2Q4MGIyYzE4N2UwOGMxNTVmZDAxLi42ZTdlOGRkMWM5YzE5ZmEzYzg1ZTNkOWQ4NTVh
YjlmNDU3ODViNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBXYXZlU2hhcGVyTm9kZTo6V2F2
ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQogICAgIDogQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2F2ZVNoYXBlclByb2Nlc3Nvcj4oY29udGV4dC5zYW1wbGVSYXRlKCksIDEpOworICAgIG1f
cHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBs
ZVJhdGUoKSwgMSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCAy
ODljMzlmNWYzZjlmN2E3OWU5YTViNmE2ZDgzMTViNTkxZjQzMmRhLi5iZmU1ZTBlNDdmYjg0YTI4
YzYzYzZlMjhiMzJlMGZjMTFlNWM2N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6fldhdmVTaGFwZXJQcm9jZXNzb3IoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IFdhdmVTaGFwZXJQcm9jZXNzb3I6OmNyZWF0ZUtlcm5l
bCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2F2ZVNoYXBlckRTUEtlcm5lbD4o
dGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2F2ZVNoYXBlckRTUEtlcm5lbD4odGhpcyk7
CiB9CiAKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBj
dXJ2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IGIxYzQ5ZGI1MjNiOTM2YjBhNGVjMjIxMDQx
Yjc3ZGE3Y2MxNDc4ZmQuLjIwZDYwNjk3MjQyODk3Mzc3OTgyYjg0ZWU3M2Q0ZGE2MzRlZDhmYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBzdHJ1Y3QgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwogdXNpbmcgQ3JlZGVudGlhbFByb21pc2UgPSBET01Q
cm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEJhc2ljQ3JlZGVudGlhbD4+
PjsKIAogY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IpOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xp
ZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvSGlkTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCmluZGV4IDhjM2QxMzQ2YzQwMzBjZmIzZDgyNzczN2EwYTE1
ZjNmMWNiOWJhZDcuLjFiOTEyZDk4ZDlmMDRmMzA3NGExYjhlMWE2MjYwMWE0MmZhZjM1N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVz
c2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRNZXNzYWdlLmNwcApAQCAtMTUwLDkgKzE1MCw5IEBAIEZpZG9IaWRNZXNzYWdlOjpGaWRvSGlk
TWVzc2FnZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kIHR5cGUsIGNv
CiAgICAgdWludDhfdCBzZXF1ZW5jZSA9IDA7CiAKICAgICBzaXplX3QgcG9zID0gZGF0YS5zaXpl
KCkgPiBrSGlkSW5pdFBhY2tldERhdGFTaXplID8ga0hpZEluaXRQYWNrZXREYXRhU2l6ZSA6IGRh
dGEuc2l6ZSgpOwotICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlk
SW5pdFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0
YS5zaXplKCkpKTsKKyAgICBtX3BhY2tldHMuYXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQ
YWNrZXQ+KGNoYW5uZWxJZCwgdHlwZSwgZ2V0SW5pdFBhY2tldERhdGEoZGF0YSksIGRhdGEuc2l6
ZSgpKSk7CiAgICAgZm9yICg7IHBvcyA8IGRhdGEuc2l6ZSgpOyBwb3MgKz0ga0hpZENvbnRpbnVh
dGlvblBhY2tldERhdGFTaXplKQotICAgICAgICBtX3BhY2tldHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSsrLCBn
ZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKKyAgICAgICAgbV9wYWNrZXRz
LmFwcGVuZChtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwg
c2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0RGF0YShkYXRhLCBwb3MpKSk7CiB9CiAK
IEZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZElu
aXRQYWNrZXQ+IGluaXRQYWNrZXQsIHNpemVfdCByZW1haW5pbmdTaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCmlu
ZGV4IDU1YjdiMmQ3MTUzNmEyMzU0OTEzYWUzNmU5ZmI5MWVmMDBhOGYwODMuLjI2YjgwYWE4YTVm
MTM5NjNjNzY4ZTdlOTIzYmJhYWIyYjg3YjVlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBGaWRvSGlkSW5pdFBhY2tl
dDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGMKICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWlu
dDhfdD4oKTsKICAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0
YVNpemUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+
KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNvbW1hbmQsIFdU
Rk1vdmUoZGF0YSksIHBheWxvYWRTaXplKTsKIH0KIAogLy8gVTJGIEluaXRpYWxpemF0aW9uIHBh
Y2tldCBpcyBkZWZpbmVkIGFzOgpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxG
aWRvSGlkQ29udGludWF0aW9uUGFja2V0PiBGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpjcmVh
dGVGcm9tCiAgICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CiAgICAgZGF0YS5hcHBl
bmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2Vx
dWVuY2UsIFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpZG9IaWRDb250
aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UsIFdURk1vdmUoZGF0YSkpOwogfQog
CiAvLyBVMkYgQ29udGludWF0aW9uIHBhY2tldCBpcyBkZWZpbmVkIGFzOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCAwMjE0NWQwY2My
ZThjOWVhZGIwYzg4Mjk0MWI4NTlmYzBhZTgwNTJkLi41YjY0YTA4NzQ2YWY4MDgwY2QyZTcyNTAz
ZmEwMGQzYzk0OWZiMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERh
dGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHJlc3VsdDsKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3lu
Y2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VP
cGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5jaHJvbml6ZXIsIHJl
c3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhXVEZNb3ZlKHRhc2spKTsK
ICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiAKQEAgLTI3Myw3ICsy
NzMsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJh
c2VDbG9zZVRhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIpKTsKKyAgICB0aHJlYWQuc2NoZWR1bGVJ
bW1lZGlhdGVUYXNrKG1ha2VVbmlxdWU8RGF0YWJhc2VDbG9zZVRhc2s+KCp0aGlzLCBzeW5jaHJv
bml6ZXIpKTsKIAogICAgIC8vIEZJWE1FOiBpT1MgZGVwZW5kcyBvbiB0aGlzIGZ1bmN0aW9uIGJs
b2NraW5nIHVudGlsIHRoZSBkYXRhYmFzZSBpcyBjbG9zZWQgYXMgcGFydAogICAgIC8vIG9mIGNs
b3NpbmcgYWxsIG9wZW4gZGF0YWJhc2VzIGZyb20gYSBwcm9jZXNzIGFzc2VydGlvbiBleHBpcmF0
aW9uIGhhbmRsZXIuCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVU
cmFuc2FjdGlvbigpCiAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwogCiAgICAg
YXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25RdWV1ZS50YWtlRmlyc3QoKTsKLSAgICBh
dXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPihXVEZN
b3ZlKHRyYW5zYWN0aW9uKSk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRy
YW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOwogICAgIExPRyhTdG9yYWdlQVBJ
LCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdHJhbnNhY3Rpb24g
JXBcbiIsIHRhc2suZ2V0KCksIHRhc2stPnRyYW5zYWN0aW9uKCkpOwogICAgIGRhdGFiYXNlVGhy
ZWFkKCkuc2NoZWR1bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQpAQCAtNTQxLDcgKzU0MSw3IEBA
IHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKFNRTFRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbikKIHsKICAgICBhdXRvJiB0aHJlYWQgPSBkYXRhYmFzZVRocmVhZCgpOwogCi0g
ICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4o
JnRyYW5zYWN0aW9uKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrPigmdHJhbnNhY3Rpb24pOwogICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGlu
ZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRyYW5zYWN0aW9uIHN0ZXBcbiIs
IHRhc2suZ2V0KCkpOwogICAgIHRocmVhZC5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9
CkBAIC03NjMsNyArNzYzLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnRhYmxlTmFtZXMo
KQogICAgIGlmICh0aHJlYWQudGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7Cisg
ICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPigqdGhpcywg
c3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2so
V1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwCmluZGV4IDNiYWJkNDk1NjZmMTRhMWIzYzBkM2IxN2JmNGM3ZjMyYzVlM2Q1
ZjcuLmQ2NDk3YzM5N2ZhNDc0Mjg1OWUwNTg2MjIzNmVkZWU0M2Q0ZWYzOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCgpCi0gICAgOiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQorICAgIDogbV90cmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKG1ha2VVbmlxdWU8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcj4oKSkK
IHsKICAgICBtX3NlbGZSZWYgPSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGQ4ZGRjYzU5ODU1
MTU3NmQyYTJjMTBmNDJlNGFkMTJhODI1OWI1MTkuLmMyOGE5NmY0NTgzOWVmNTRkYWYxZjk5YTFh
ZDU4ZDdlY2Q0YTY3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIERh
dGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKICAgICBM
b2NrSG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CiAK
ICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQotICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9
IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CisgICAgICAgIG1fb3BlbkRh
dGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKIAogICAgIGF1dG8g
b3JpZ2luID0gZGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKIApAQCAtOTU2LDcgKzk1Niw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGluZ0RhdGFiYXNlKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjCiAgICAgLy8gV2UgZG9uJ3QgdXNlIEhhc2hNYXA6OmVu
c3VyZSBoZXJlIHRvIGF2b2lkIG1ha2luZyBhbiBpc29sYXRlZCBjb3B5IG9mIHRoZSBvcmlnaW4g
ZXZlcnkgdGltZS4KICAgICBhdXRvKiBuYW1lU2V0ID0gbV9iZWluZ0NyZWF0ZWQuZ2V0KG9yaWdp
bik7CiAgICAgaWYgKCFuYW1lU2V0KSB7Ci0gICAgICAgIGF1dG8gb3duZWRTZXQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hDb3VudGVkU2V0PFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8gb3duZWRT
ZXQgPSBtYWtlVW5pcXVlPEhhc2hDb3VudGVkU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVT
ZXQgPSBvd25lZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0NyZWF0ZWQuYWRkKG9yaWdpbi5p
c29sYXRlZENvcHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KQEAgLTEwMDIsNyArMTAw
Miw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZWNvcmREZWxldGluZ0RhdGFiYXNlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjCiAgICAgLy8gV2UgZG9uJ3QgdXNlIEhhc2hN
YXA6OmVuc3VyZSBoZXJlIHRvIGF2b2lkIG1ha2luZyBhbiBpc29sYXRlZCBjb3B5IG9mIHRoZSBv
cmlnaW4gZXZlcnkgdGltZS4KICAgICBhdXRvKiBuYW1lU2V0ID0gbV9iZWluZ0RlbGV0ZWQuZ2V0
KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lU2V0KSB7Ci0gICAgICAgIGF1dG8gb3duZWRTZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25lZFNl
dCA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgICAgICBuYW1lU2V0ID0gb3du
ZWRTZXQuZ2V0KCk7CiAgICAgICAgIG1fYmVpbmdEZWxldGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRD
b3B5KCksIFdURk1vdmUob3duZWRTZXQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaAppbmRleCA4NWYxYjYzNWMzZTQ5YjNm
ZTFhODFmOTQ4NzgyNDgwZTFkZTQ4ZmI1Li44YTU0YTM2NjdhMDdhYWNlMDNhOTYwZmIyNTY0Zjdl
YmRmM2JkOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgU1FMUmVzdWx0U2V0OwogY2xh
c3MgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOwogCiBjbGFzcyBTUUxTdGF0ZW1lbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNRTFN0YXRlbWVudChEYXRhYmFz
ZSYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTUUxWYWx1ZT4mJiwgUmVmUHRyPFNRTFN0YXRlbWVu
dENhbGxiYWNrPiYmLCBSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4mJiwgaW50IHBl
cm1pc3Npb25zKTsKICAgICB+U1FMU3RhdGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4IDIwZDY5NzM0
Nzc0ZGJmYmYzMGJkOGYzOWNlNGM1OTU3MjE0ZTkwMGMuLjRjYjA0MWU0NTJjODBmNWY1OWJiMjcy
MWVhYjhlYzFhOGY2MTgzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC04Myw3ICs4Myw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsU3Rh
dGVtZW50LCBPcHRpb25hCiAgICAgZWxzZSBpZiAobV9yZWFkT25seSkKICAgICAgICAgcGVybWlz
c2lvbnMgfD0gRGF0YWJhc2VBdXRob3JpemVyOjpSZWFkT25seU1hc2s7CiAKLSAgICBhdXRvIHN0
YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxT
dGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKKyAgICBh
dXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxT
dGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKIAogICAg
IGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkpCiAgICAgICAgIHN0YXRlbWVudC0+c2V0RGF0YWJh
c2VEZWxldGVkRXJyb3IoKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
OjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogICAgIH0KIAogICAgIEFTU0VSVCghbV9z
cWxpdGVUcmFuc2FjdGlvbik7Ci0gICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1f
cmVhZE9ubHkpOworICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRy
YW5zYWN0aW9uPihtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLCBtX3JlYWRPbmx5KTsKIAog
ICAgIG1fZGF0YWJhc2UtPnJlc2V0RGVsZXRlcygpOwogICAgIG1fZGF0YWJhc2UtPmRpc2FibGVB
dXRob3JpemVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZl
ci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2
ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAppbmRleCA3OWFhNTYxODFmZmVmM2FiMWE5MmFhNTdm
ZWNkYjZmYmE1OWU2ZjBiLi4xMjlkODZmZmNmYmQxNTdhODBiMDE5MmUzYjQ5OTcxMzNiZWI3ODA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JX
ZWJEcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmln
YXRvcldlYkRyaXZlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTmF2aWdhdG9yV2ViRHJpdmVyKiBO
YXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2
aWdhdG9yV2ViRHJpdmVyKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yV2ViRHJp
dmVyKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKKyAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JXZWJEcml2ZXI+KCk7CiAgICAg
ICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JH
UFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApp
bmRleCA4OGE5NzgwNDRiYzFlNzA4OTMzNTY1ZGM2MmQwYTMxNDZiMzhiNDI2Li4zNzZkMTU1Y2E5
YjJmNWQyYTRhYjE4NTJjNzc2ZDljMThmMmU1MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgTmF2aWdhdG9y
R1BVKiBOYXZpZ2F0b3JHUFU6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2
aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yR1BVKj4oU3VwcGxl
bWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
bWFrZVVuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBw
bGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFt
ZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oCmluZGV4IDFiMzQyNTA0ZDY5NTUwOGYwODE2Y2NiNTU4MmY1YmQ5
YWE3NjFhNmIuLjVmNTdlZjExNzc1MzFhMGFjM2Q5NjBkZWIxZDQzODcxMWE0ZjA1YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNs
YXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUgewogCiAg
ICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1iZXImJiBtZW1iZXIpCiAgICAgewotICAgICAgICBh
dXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUoKSwgc3RkOjptYWtlX3VuaXF1
ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBtYWtlVW5pcXVlPEVudW1lcmF0aW9u
TWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5pc05ld0Vu
dHJ5OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgK
aW5kZXggMGUzMWZmYmRlMGIxNDg2ZjZjNmY2NWUyMGViNjM4YWU4ODFiODdmOC4uY2JjYzQ4NGI2
ODI1MGMwYWEwOWI1OTk0M2FkYzc5ZTgxMDA5Mjc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVu
dHJ5UG9pbnRTY2FmZm9sZGluZy5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBNZXRhbCB7
CiBjbGFzcyBUeXBlTmFtZXI7CiAKIGNsYXNzIEVudHJ5UG9pbnRTY2FmZm9sZGluZyB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RW50cnlQb2lu
dFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIu
Y3BwCmluZGV4IGNhMzQ2ZTMyYjI5OWExMGNlZDI1NjVkMDFkODU0NTNiZDgwZDE0NzQuLjQ3YjA2
MGE3YzVhYWZjMzJlODg4NzVmZmM0YWY4OTg5Njg5NjI1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwCkBAIC03NjQsOSArNzY0LDkgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
UG9pbnRTY2FmZm9sZGluZz4gUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVF
bnQKICAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAg
IH07CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnZl
cnRleFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVydGV4RW50cnlQ
b2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBl
TmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1f
bWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRW
ZXJ0ZXhBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVydGV4RW50cnlQ
b2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBl
TmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1f
bWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRW
ZXJ0ZXhBdHRyaWJ1dGVzKTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNo
ZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1f
aW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRl
ckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyUmVzb3Vy
Y2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1fbWF0
Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRp
b24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVu
dFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVy
UmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSks
IG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKQEAgLTc5MCw3ICs3OTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQ
b2ludFNjYWZmb2xkaW5nPiBDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVF
bgogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAg
fTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3Muc2hh
ZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21wdXRlRW50cnlQb2ludFNj
YWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIs
IG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5y
ZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc+
KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVk
U2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnJlc291cmNlTWFw
LCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCmluZGV4IDE4NWJhMGIwODhh
NWNlZDRjNWI2NjM2ZmE5NDQyYzAwMzQwZGQwMmEuLjQwYjYyYzM3ZGJlMjU4MGUyM2Q1OTBjMDkx
ZWJiNDE3Y2E5YjgwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKQEAgLTI3MiwxOSArMjcy
LDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxCYXNlVHlwZU5hbWVOb2RlPiBUeXBlTmFtZXI6OmNyZWF0
ZU5hbWVOb2RlKEFTVDo6VW5uYW1lZFR5cGUmIHVuCiAgICAgc3dpdGNoICh1bm5hbWVkVHlwZS5r
aW5kKCkpIHsKICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVSZWZlcmVuY2U6
IHsKICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6VHlwZVJlZmVy
ZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWZl
cmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgdHlwZVJl
ZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlZmVy
ZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVm
ZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpQb2ludGVyOiB7CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8
QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1l
KCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UG9pbnRlclR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBw
b2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSk7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVk
VHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgYXJyYXlSZWZlcmVu
Y2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5v
ZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlSZWZlcmVuY2VUeXBlLmFk
ZHJlc3NTcGFjZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlSZWZlcmVuY2VU
eXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlSZWZlcmVu
Y2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBl
OjpLaW5kOjpBcnJheTogewogICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3duY2FzdDxBU1Q6
OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJh
eVR5cGUubnVtRWxlbWVudHMoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEFycmF5VHlw
ZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5VHlwZS5udW1F
bGVtZW50cygpKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrZXIuY3BwCmluZGV4IDMzM2JkZjYyYzAyOTg2NmE3NDlhM2M2MTJlNWU0
ZGJhMTZiMjZhN2UuLmJkZWQ1M2UxOGFmYzhhNDgxNzU4MWZhM2FkYzIyNzg1NmViZDQ4OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcApAQCAtOTY2LDE0ICs5NjYsMTQgQEAgdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCiAKIHZvaWQgQ2hlY2tlcjo6
YXNzaWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmPEFTVDo6
VW5uYW1lZFR5cGU+IHVubmFtZWRUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0
aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVN
YXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1v
dmUodW5uYW1lZFR5cGUpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZl
eHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUodW5uYW1lZFR5cGUp
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
ICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24p
KTsKIH0KIAogdm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVz
c2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiByZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1
ZSgpKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwg
c3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlKSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lv
biwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CiAgICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0
aW9uKSk7CiB9CkBAIC05ODEsMTAgKzk4MSwxMCBAQCB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUo
QVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcgog
dm9pZCBDaGVja2VyOjpmb3J3YXJkVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJl
c29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90
YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKICAgICByZXNvbHZpbmdUeXBlLnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmVzdWx0KSB7Ci0gICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtl
X3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZp
bmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlw
ZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVz
dWx0LmNvcHlSZWYoKSkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQo
JmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkp
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwogICAgIH0pKTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlw
ZUFubm90YXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmNwcAppbmRleCA3Y2FiNmM5NWVjMzU2ZTc2YWM1ZmM0ZjcwMmJkY2Mx
ZWFjYzlmODcwLi5lNjhlNDg2ZTc4NWI0Y2M3ZTczYTRiMWQ4NDc3ODg4NTAxZWU5MmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIu
Y3BwCkBAIC03NDAsMTkgKzc0MCwxOSBAQCBhdXRvIFBhcnNlcjo6cGFyc2VTZW1hbnRpYygpIC0+
IEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+CiAgICAgc3dp
dGNoICh0b2tlbi0+dHlwZSkgewogICAgIGNhc2UgVG9rZW46OlR5cGU6OkF0dHJpYnV0ZTogewog
ICAgICAgICBQQVJTRShyZXN1bHQsIFN0YWdlSW5PdXRTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVy
biB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsK
KyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1
bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpTcGVjaWFsaXplZDogIHsKICAg
ICAgICAgUEFSU0UocmVzdWx0LCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAg
ICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJl
c3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RG
TW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6UmVnaXN0ZXI6
ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgUmVzb3VyY2VTZW1hbnRpYyk7Ci0gICAgICAgIHJl
dHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkg
fTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpy
ZXN1bHQpKSB9OwogICAgIH0KICAgICBkZWZhdWx0OiAgewogICAgICAgICBQQVJTRShyZXN1bHQs
IEJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNU
OjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVu
aXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJl
c29sdmluZ1R5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVzb2x2aW5nVHlwZS5oCmluZGV4IDU1OWNlOGJhOTNiMjlkNTE3ZmE3NzNmNmE1ZjUyN2RkZjRh
ODViMDEuLjQ1NzAwY2VkOGZkMzQ0OWM0ZGE0OTU5ZjcxYTQwMmFhMDJkNmU0M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2
aW5nVHlwZS5oCkBAIC03NCw2ICs3NCw3IEBAIGNsYXNzIFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHsKIC8vIEl0IGV4
aXN0cyBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRoYXQgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZG9l
cyB0aGUgcmlnaHQgdGhpbmcuCiAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5ODE1OCBUaGlzIHdyYXBwZXIgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4K
IGNsYXNzIFJlc29sdmluZ1R5cGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFJlc29sdmluZ1R5cGUoKQogICAgICAgICA6IG1faW5uZXIoUmVmUHRyPFJlc29s
dmFibGVUeXBlUmVmZXJlbmNlPigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKaW5kZXggYmY5MGY2YzM2MDU0OGQ1MmM4ZmQ4
ZWVlYzc1M2M3OGQ4ZmE5YmYxYy4uZDk1MjIzMDVhZGExZWU5NzFmMTY1MjhkZTA2NjA0YmI2YTk2
YjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJO
YXZpZ2F0b3JHUFUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdvcmtlck5hdmlnYXRvckdQVSogV29y
a2VyTmF2aWdhdG9yR1BVOjpmcm9tKFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAg
IFdvcmtlck5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlck5hdmln
YXRvckdQVSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JHUFU+KCk7Cisg
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyTmF2aWdhdG9yR1BV
PigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVt
ZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyLmNwcAppbmRleCBlZDVhM2NjODM0ZmUxOWQ0ODg4Yjg1NTUwNGJhMTU1ZDQ4M2Zj
NDA3Li5jMWJhYzg2ZDNhYjJiMGQ5MTNmY2U3NDIxNDMxYTk0NDU5ZWVkMmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtMTUz
LDcgKzE1Myw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpjbGVhckNsaWVudCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpkaWRDb25uZWN0KCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGll
bnQtPmRpZENvbm5lY3QoKTsKICAgICB9KSk7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QoKQogCiB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHko
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKICAgICB9KSk7
CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWUKIAogdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRh
KFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmlu
YXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYmluYXJ5RGF0YSA9IFdURk1v
dmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5
RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9KSk7CkBAIC0xODYsNyArMTg2LDcgQEAg
dm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVC
aW5hcnlEYXRhKFZlY3Rvcjx1aW50OF8KIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGJ1ZmZlcmVk
QW1vdW50KQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAg
ICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJlZEFt
b3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkK
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChidWZmZXJlZEFt
b3VudCk7CiAgICAgfSkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25l
ZCBiCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRT
dGFydENsb3NpbmdIYW5kc2hha2UoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiAgICAgfSkpOwpAQCAtMjA4LDcgKzIw
OCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRT
dGFydENsb3NpbmdIYW5kc2hha2UoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQs
IFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVz
IGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBT
dHJpbmcmIHJlYXNvbikKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlx
dWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7CiAgICAgICAgIH0pKTsKQEAgLTIx
OSw3ICsyMTksNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZQogCiB2b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiB7
Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1h
a2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZUVy
cm9yKCk7CiAgICAgfSkpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIAogdm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZ3JhZGVVUkwo
KQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAg
ICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkVXBncmFkZVVSTCgp
OwogICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2MDcxNDQwOTI0ZmIyY2U2N2Y1MzQwNjJkNzll
OGUzYjA0ZWUxYzUwLi5hMDdhODc2M2FmYjk2OWI0MjA3MGJjNDlhODYyMzliNzgzZDZlYmJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFdlYlNvY2tldENoYW5uZWw6OkNvbm5lY3RT
dGF0dXMgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwmIHJlcXVlc3RlZFVSCiAg
ICAgbV9hbGxvd0Nvb2tpZXMgPSB2YWxpZGF0ZWRVUkwtPmFyZUNvb2tpZXNBbGxvd2VkOwogICAg
IFN0cmluZyB1c2VyQWdlbnQgPSBtX2RvY3VtZW50LT51c2VyQWdlbnQobV9kb2N1bWVudC0+dXJs
KCkpOwogICAgIFN0cmluZyBjbGllbnRPcmlnaW4gPSBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLnRvU3RyaW5nKCk7Ci0gICAgbV9oYW5kc2hha2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNv
Y2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2VyQWdlbnQsIGNs
aWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOworICAgIG1faGFuZHNoYWtlID0gbWFrZVVuaXF1
ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJsLCBwcm90b2NvbCwgdXNlckFn
ZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29raWVzKTsKICAgICBtX2hhbmRzaGFrZS0+cmVz
ZXQoKTsKICAgICBpZiAobV9kZWZsYXRlRnJhbWVyLmNhbkRlZmxhdGUoKSkKICAgICAgICAgbV9o
YW5kc2hha2UtPmFkZEV4dGVuc2lvblByb2Nlc3NvcihtX2RlZmxhdGVGcmFtZXIuY3JlYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKCkpOwpAQCAtNzAzLDcgKzcwMyw3IEBAIGJvb2wgV2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRG
cmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFt
ZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtl
VW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlVGV4dDsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBlU3Ry
aW5nOwogICAgIGZyYW1lLT5zdHJpbmdEYXRhID0gc3RyaW5nOwpAQCAtNzEzLDcgKzcxMyw3IEBA
IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBz
dHJpbmcpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJh
bWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZy
YW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAg
IGZyYW1lLT5vcENvZGUgPSBvcENvZGU7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZy
YW1lVHlwZVZlY3RvcjsKICAgICBmcmFtZS0+dmVjdG9yRGF0YS5yZXNpemUoZGF0YUxlbmd0aCk7
CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIKIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29k
ZSwgQmxvYiYgYmxvYikKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMg
PT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVk
RnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVU
eXBlID0gUXVldWVkRnJhbWVUeXBlQmxvYjsKICAgICBmcmFtZS0+YmxvYkRhdGEgPSAmYmxvYjsK
QEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2lu
Z0ZyYW1lUXVldWUoKQogICAgICAgICAgICAgICAgIHJlZigpOyAvLyBXaWxsIGJlIGRlcmVmZWQg
YWZ0ZXIgZGlkRmluaXNoTG9hZGluZygpIG9yIGRpZEZhaWwoKS4KICAgICAgICAgICAgICAgICBB
U1NFUlQoIW1fYmxvYkxvYWRlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGZyYW1lLT5ibG9i
RGF0YSk7Ci0gICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhp
cyk7CisgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVy
TG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhpcyk7CiAgICAg
ICAgICAgICAgICAgbV9ibG9iTG9hZGVyU3RhdHVzID0gQmxvYkxvYWRlclN0YXJ0ZWQ7CiAgICAg
ICAgICAgICAgICAgbV9ibG9iTG9hZGVyLT5zdGFydChtX2RvY3VtZW50LmdldCgpLCAqZnJhbWUt
PmJsb2JEYXRhKTsKICAgICAgICAgICAgICAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5wcmVwZW5k
KFdURk1vdmUoZnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAppbmRleCBmMmZhNjIwOWMw
NDhmNTE1MThhMjVlZWMxM2FlZjI1NjRjOWY0ZTdiLi5lZTMzZWEwZmU1Y2YxZDViZjc5YTJkYTA2
NzA3YjczY2QzYTc4YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCkBAIC0xNTUsNyArMTU1
LDcgQEAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IFdlYlNvY2tldERl
ZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMp
OwogfQogCiBib29sIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUoKSBjb25zdApA
QCAtMTcwLDggKzE3MCw4IEBAIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0
ZSgpIGNvbnN0CiAjaWYgVVNFKFpMSUIpCiB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVu
YWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDb250ZXh0VGFr
ZU92ZXJNb2RlIG1vZGUpCiB7Ci0gICAgbV9kZWZsYXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
U29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOwotICAgIG1faW5mbGF0ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOworICAgIG1fZGVmbGF0ZXIgPSBtYWtl
VW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5kb3dCaXRzLCBtb2RlKTsKKyAgICBtX2luZmxh
dGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4oKTsKICAgICBpZiAoIW1fZGVmbGF0
ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5pdGlhbGl6ZSgpKSB7CiAgICAgICAg
IG1fZGVmbGF0ZXIgPSBudWxscHRyOwogICAgICAgICBtX2luZmxhdGVyID0gbnVsbHB0cjsKQEAg
LTE4NCw3ICsxODQsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxh
dGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDbwogc3RkOjp1bmlxdWVfcHRy
PERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUoV2Vi
U29ja2V0RnJhbWUmIGZyYW1lKQogewogI2lmIFVTRShaTElCKQotICAgIGF1dG8gcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CiAgICAgaWYgKCFl
bmFibGVkKCkgfHwgIVdlYlNvY2tldEZyYW1lOjppc05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BD
b2RlKSB8fCAhZnJhbWUucGF5bG9hZExlbmd0aCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICBpZiAoIW1fZGVmbGF0ZXItPmFkZEJ5dGVzKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRM
ZW5ndGgpIHx8ICFtX2RlZmxhdGVyLT5maW5pc2goKSkgewpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjpkZWZsYXRlKFdlYlNvY2tldEZyCiAgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9IG1fZGVmbGF0
ZXItPnNpemUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICNlbmRpZgogfQogCkBAIC0yMTAsNyAr
MjEwLDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxhdGVDb250ZXh0
KCkKIAogc3RkOjp1bmlxdWVfcHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxh
dGVGcmFtZXI6OmluZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CiAgICAg
aWYgKCFlbmFibGVkKCkgJiYgZnJhbWUuY29tcHJlc3MpIHsKICAgICAgICAgcmVzdWx0LT5mYWls
KCJDb21wcmVzc2VkIGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRlZCBkZWZsYXRlLWZyYW1l
IGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKaW5kZXgg
MWQ2ZjE3ODIyYzgwNTI4MWI3MGE0MTYyMGRjZGVlNmFkMmFiODg5Yy4uNGE0ODY1Zjg0OTRkMDYx
M2VhYzMyMWE1OTRmOGJhZTE5OTk2YmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIFdlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcihpbnQgd2luZG93Qml0cywg
Q29udGV4dFRha2VPdmVyTW9kZSBjb250ZXh0CiB7CiAgICAgQVNTRVJUKG1fd2luZG93Qml0cyA+
PSA4KTsKICAgICBBU1NFUlQobV93aW5kb3dCaXRzIDw9IDE1KTsKLSAgICBtX3N0cmVhbSA9IHN0
ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAgICBtZW1zZXQobV9zdHJlYW0uZ2V0
KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBX
ZWJTb2NrZXREZWZsYXRlcjo6cmVzZXQoKQogV2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldElu
ZmxhdGVyKGludCB3aW5kb3dCaXRzKQogICAgIDogbV93aW5kb3dCaXRzKHdpbmRvd0JpdHMpCiB7
Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3RyZWFtPigpOworICAgIG1fc3Ry
ZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8el9zdHJlYW0+KCk7CiAgICAg
bWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTk0MDczZWFhNWU4YjIz
MGQxYzhiMDBjMTZjNTk2NDNlOTc4NDI2OC4uZGM2ZjY2MGZkMzg4Y2VmZmFmMGViZWY2ZTY2MGU2
YjY5NWJiNjMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXQKIAogICAgIGJvb2wg
c2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoewog
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywKLSAgICAg
ICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgJmxvYWRlclByb3h5
LCBwZWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwg
bG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBbY2xpZW50V3Jh
cHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJveHksIHBlZXIgPSBtYWtl
VW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigpLCBsb2FkZXJQcm94eSwgY29udGV4
dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgICAgIGlmIChjbGllbnRXcmFw
cGVyLT5mYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKSkgewogICAgICAgICAgICAgICAg
IC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFybGllciwgd2UgbmVlZCB0byBr
aWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBwZWVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcAppbmRleCBkOTdiNWMyYTg1
YTlkMjMyOGY5ODQwZjQ0ZDNkMWU5NjMyYzgyZDllLi43NzZjNDNhZWMwYjliNWJkZWFkYzNkZDg5
MTI2YWNlZDZiYTc1MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZy
L05hdmlnYXRvcldlYlZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05h
dmlnYXRvcldlYlZSLmNwcApAQCAtOTQsNyArOTQsNyBAQCBOYXZpZ2F0b3JXZWJWUiogTmF2aWdh
dG9yV2ViVlI6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yV2Vi
VlIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJWUio+KFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAo
IXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wu
Y3BwCmluZGV4IGJjMjNkNTljYzMxMjM3YjE0OTdhNzZhY2M1OWQzZWFmNWQyYjU4NDAuLjZjYTY3
ZjM5MWEzMWZjZDM4NjkyNTViMjFmMmZjYjdmM2ZiZjliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVu
U1NMLmNwcApAQCAtNzksNyArNzksNyBAQCBzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dEltcGwg
OiBwdWJsaWMgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw+KCk7CiAgICAgfQogCiAgICAg
Q3J5cHRvRGlnZXN0Q29udGV4dEltcGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lz
dGVtL0Nsb2NrR2VuZXJpYy5jcHAKaW5kZXggMzE1MzE2ODA4MDdiNzJkNWVmOTM4MDkxNGU3YWUy
NDBhZDlkMDM5Ny4uZTUzZTE5NWIzNWY0OThmNzk1MjUxNTFlYmMyYWNlYjVmYWZjZDI5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBQQUwgewogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IENs
b2NrOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENsb2NrR2VuZXJp
Yz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7CiB9CiAKIENsb2Nr
R2VuZXJpYzo6Q2xvY2tHZW5lcmljKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0v
bWFjL0Nsb2NrQ00ubW0KaW5kZXggYzY4OTMyMTVmMDZiMGM2NzRkNTQ2MDgzM2IxYTRkNTFjYzMy
YjYxNC4uOWUwNzFiNzgxNGU0NGZlMDA0NDJlNjZjNzIwYjJiZmIzMTMwNjlhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0KQEAgLTM5LDcgKzM5LDcg
QEAgc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9IDEwMDA7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxDbG9jaz4gQ2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2xvY2tDTT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDbG9ja0NNPigpOwog
fQogCiBDbG9ja0NNOjpDbG9ja0NNKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGNhY2FiODU2OGM4NjExMmQ5Y2RmZWZjMzA5MDI2YWQ5
YzgxNTMzZTUuLmIzNWZjMTU2NDM3ZjFjYTA5ZDY0MjJiZDU5YzcxMzNmYWMyYzYwYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTU3
NSw3ICsxNTc1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RhcnRDYWNoaW5nQ29t
cHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcygpCiB7CiAgICAgaWYgKCFtX2Nv
bXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUpCi0gICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRy
aWJ1dGVDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNh
Y2hlPigpOworICAgICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUgPSBtYWtlVW5p
cXVlPEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsKIH0KIAogdm9pZCBBWE9iamVj
dENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGVkZmRiYjBhMDZmZDZlZGEyNTA0
OGI5NzE5YjllZjFiYTllMTM0NDMuLmU2ZGVhOTYxMWY5YjQ4ODBhNWExOWI5YWQxZTFiZGU3MWMx
ODQ3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC03
NzcsNyArNzc3LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlk
U2VlayBkaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90aWZ5IHN5bmMKICAgICAgICAgICAgIC8vIE90
aGVyd2lzZSwgaWYgc3luY2hyb25vdXNseSBub3RpZnkgaXMgZmFsc2UsIHF1ZXVlIGEgbWljcm90
YXNrIHRvIHJ1biBmaW5pc2ggbm90aWZpY2F0aW9uIHN0ZXBzIGZvciBhbmltYXRpb24gdW5sZXNz
IHRoZXJlCiAgICAgICAgICAgICAvLyBpcyBhbHJlYWR5IGEgbWljcm90YXNrIHF1ZXVlZCB0byBy
dW4gdGhvc2Ugc3RlcHMgZm9yIGFuaW1hdGlvbi4KICAgICAgICAgICAgIG1fZmluaXNoTm90aWZp
Y2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIE1pY3JvdGFz
a1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWlj
cm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSB7CisgICAg
ICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlx
dWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
KCkgewogICAgICAgICAgICAgICAgIGlmIChtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90
YXNrUGVuZGluZykgewogICAgICAgICAgICAgICAgICAgICBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0
ZXBzTWljcm90YXNrUGVuZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBmaW5pc2hO
b3RpZmljYXRpb25TdGVwcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NUHJvbWlzZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9t
aXNlUHJveHkuaAppbmRleCA3ZGE0NmE2MTUwNGVmMjQ4MTVhNjk0ZGZiYTEyYzI4YjFlZjRmZTY2
Li42MjFiODkwNTFiYjQ4ZGIwMzAxZWE4MDQ3YzdhZmVmZmI2OGNkZTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaApAQCAtNjAsNiArNjAsNyBAQCBj
bGFzcyBET01Qcm9taXNlUHJveHkgewogCiB0ZW1wbGF0ZTw+CiBjbGFzcyBET01Qcm9taXNlUHJv
eHk8SURMVm9pZD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IERPTVByb21pc2VQcm94eSgpID0gZGVmYXVsdDsKICAgICB+RE9NUHJvbWlzZVByb3h5KCkgPSBk
ZWZhdWx0OwpAQCAtODQsNiArODUsNyBAQCBjbGFzcyBET01Qcm9taXNlUHJveHk8SURMVm9pZD4g
ewogLy8gRm9udEZhY2UgYW5kIEZvbnRGYWNlU2V0LgogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4KIGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2sgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlc29sdmVDYWxsYmFjayA9
IFdURjo6RnVuY3Rpb248dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSAoKT47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGRi
MGMxZGM3NmY4YTI4OTcwNDVlZTJjZmM5MTkyM2Q1OGRmMWI2ZjkuLmM1YzQ3MDYxYmZhY2ExZmNh
NzI4YmUyN2IwYTJiNGE5ZjBiMzAyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSlNET01XaW5k
b3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8
SlNDOjpNaWNyCiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3Jv
dGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAgYXV0
byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
PihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWlj
cm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXgg
NjI5NWY1ODRjZmU4YTE3MjlkZGY2YjE4ZDc3NTQ5ZmQ0NGM5YTBiZS4uZGI1ZTc3MzQ5MGJlZGZi
ZjNlMGMxMGNmMjNkMGEzNmM4YTNiZGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCBFdmVu
dFRhcmdldCogSlNFdmVudFRhcmdldDo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkK
IHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3Qo
Vk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNE
eW5hbWljQ2FzdDxKU0V2ZW50VGFyZ2V0Kj4odm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQo
KSwgKnRhcmdldCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFw
cGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9
IHRvSlNET01XaW5kb3codm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ct
PndyYXBwZWQoKSwgKndpbmRvdyk7CiAgICAgaWYgKGF1dG8qIHNjb3BlID0gdG9KU1dvcmtlckds
b2JhbFNjb3BlKHZtLCB0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVk
KCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBk
ODMxNjA0Y2JhZWI4N2YwN2QxMmVhZGRhNGJmMDUzMWE3MGJiNDAyLi45YmQ2NjQ0NjAxNzA1NDk1
YTk0ZTdiM2ZhZGYwNDhmM2M3YjA0M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0xMzUsNyArMTM1LDcg
QEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNH
bG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3Jv
dGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0
byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNy
b3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxs
KCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDFkMDA1NGMyODkyZDUwMTNkZjI2YWJmZmEzZTFj
MmY2N2RlZTQ4MTkuLmEzNTM3ODU1ZTdhN2Q0ZmQyYmQyYzRjODhiN2ZhN2I2Mjk1NTRiYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcApAQCAtMzMwMCw3ICszMzAwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmUKICAg
ICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBhdXRvIGNvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+KGFycmF5QnVmZmVycy5zaXplKCkpOworICAgIGF1dG8gY29udGVudHMgPSBtYWtlVW5p
cXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CiAKICAg
ICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOwogICAgIGZvciAoc2l6ZV90IGFy
cmF5QnVmZmVySW5kZXggPSAwOyBhcnJheUJ1ZmZlckluZGV4IDwgYXJyYXlCdWZmZXJzLnNpemUo
KTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7CkBAIC0zNDUxLDcgKzM0NTEsNyBAQCBFeGNlcHRpb25P
cjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoRXhlY1N0YXRlJgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJy
YXkgd2FzbU1vZHVsZXM7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXk+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5PigpOwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZzdGF0
ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFnZUJpdG1hcHMsCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICB3YXNtTW9kdWxlcywgCkBAIC0zNDY5LDcgKzM0
NjksNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5
QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJp
YWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZl
cnMpIDogbnVsbHB0ciwgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQotICAgICAgICAgICAgICAgICwgc3RkOjptYWtlX3VuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+
KHdhc21Nb2R1bGVzKQorICAgICAgICAgICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJy
YXk+KHdhc21Nb2R1bGVzKQogI2VuZGlmCiAgICAgICAgICAgICAgICAgKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4
IDVjNDY2Mjk0YmVlNTZjMjFiZjBmNjNkMTViMGY4ZGYwZjI3YTNhMGUuLjRmNGIwY2YzYjdlZWNk
ZGQwNzg3MDI1NTIwODg5NWU0NWZhMmEwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKGFy
cmF5TGVuZ3RoKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CisgICAgYXV0byBhcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4o
KTsKICAgICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkgewogICAgICAgICB1bnNpZ25lZCBidWZmZXJT
aXplOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAppbmRleCAy
NDZmNjRhOWY2MzIyYjU4NzBjYmI2ODJlZGIyZDRlZGI5NTNlYzdjLi4zYjExMjUyYWU2NGNhZjJl
NGZlNzM5ZTMxZWUxMDk5NTRkNTZhNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEpT
Vk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtKQogICAgIEpTVk1DbGllbnREYXRh
KiBjbGllbnREYXRhID0gbmV3IEpTVk1DbGllbnREYXRhKCp2bSk7CiAgICAgdm0tPmNsaWVudERh
dGEgPSBjbGllbnREYXRhOyAvLyB+Vk0gZGVsZXRlcyB0aGlzIHBvaW50ZXIuCiAgICAgCi0gICAg
dm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFpbnQoc3RkOjptYWtlX3VuaXF1ZTxET01HQ091dHB1
dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERhdGEpKTsKKyAgICB2bS0+aGVhcC5hZGRNYXJraW5n
Q29uc3RyYWludChtYWtlVW5pcXVlPERPTUdDT3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50
RGF0YSkpOwogICAgICAgICAKICAgICBjbGllbnREYXRhLT5tX25vcm1hbFdvcmxkID0gRE9NV3Jh
cHBlcldvcmxkOjpjcmVhdGUoKnZtLCB0cnVlKTsKICAgICB2bS0+bV90eXBlZEFycmF5Q29udHJv
bGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDE2YTc2YzQ5NTI5YTRiYjg3MWNiNjZjYTNhZDc1YTJkNzZhODA2NTUuLmQyMzk4
NTdhYTNiZGRlOWZlYjljYjg3NDBmY2Y1ZDY0OWUzNTBkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjEs
NyArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAg
ICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmpl
Y3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2Jh
bFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVD
bGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmluZGV4IDI5YzgxODY4MzZlYTA1NDExZThmMWVkNjQx
YzA1NzBjZTgxNzY4MTUuLmFhNTZlMmZkZTg1NTc3YWNmOWMwNDc0Yzg5ODc3ZjRlMGQ1YzUxMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCkBAIC04MSw3ICs4MSw3IEBAIE1ldGhv
ZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0
LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9pc2EtPmhhc01ldGhvZCAmJiBtX2lzYS0+aGFzTWV0
aG9kKG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gbWV0aG9kID0gc3RkOjptYWtlX3VuaXF1
ZTxDTWV0aG9kPihpZGVudCk7CisgICAgICAgIGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxDTWV0
aG9kPihpZGVudCk7CiAgICAgICAgIENNZXRob2QqIHJldCA9IG1ldGhvZC5nZXQoKTsKICAgICAg
ICAgbV9tZXRob2RzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAgICAg
cmV0dXJuIHJldDsKQEAgLTEwMyw3ICsxMDMsNyBAQCBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVk
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAg
ICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihp
bnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlm
IChtX2lzYS0+aGFzUHJvcGVydHkgJiYgbV9pc2EtPmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKSB7
Ci0gICAgICAgIGF1dG8gZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPENGaWVsZD4oaWRlbnQpOwor
ICAgICAgICBhdXRvIGZpZWxkID0gbWFrZVVuaXF1ZTxDRmllbGQ+KGlkZW50KTsKICAgICAgICAg
Q0ZpZWxkKiByZXQgPSBmaWVsZC5nZXQoKTsKICAgICAgICAgbV9maWVsZHMuc2V0KG5hbWUuaW1w
bCgpLCBXVEZNb3ZlKGZpZWxkKSk7CiAgICAgICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBmMmY2MjA4MmE4MDhhMTlmMTBhNWQ5MzVkOTIyYjc3
M2MxMjIxYzI4Li4wNGNkZGNkMjRjYWE4MjljMzJlNTZlYzI3M2FmYmQzNTFmMjU0ZTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3Mg
Um9vdE9iamVjdDsKIGNsYXNzIFJ1bnRpbWVPYmplY3Q7CiAKIGNsYXNzIEZpZWxkIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFs
dWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0
YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2NsYXNzLm1tCmluZGV4IGI4NmY3NTFhMGE3MTM4YmUwMDc3NmE3OGNiYzJhNmQ0NWRkMzc1MDIu
LmEzZDhkMzJmMjhkZDgwNThhNGFiNDQyNzM5NTM0NDA3NGYyNmM3NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIE1ldGhvZCog
T2JqY0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSopIGNvbnN0CiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2Ny
aXB0TmFtZUZvclNlbGVjdG9yOm9iamNNZXRob2RTZWxlY3Rvcl07CiAKICAgICAgICAgICAgIGlm
ICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyop
bWV0aG9kTmFtZS5nZXQoKV0pIHx8ICFzdHJjbXAob2JqY01ldGhvZFNlbGVjdG9yTmFtZSwgYnVm
ZmVyLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpOworICAgICAg
ICAgICAgICAgIGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3Ms
IG9iamNNZXRob2RTZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgbWV0aG9kUHRyID0gbWV0aG9k
LmdldCgpOwogICAgICAgICAgICAgICAgIG1fbWV0aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBX
VEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTg5LDcgKzE4OSw3
IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9
IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktleTpVVEY4S2V5TmFtZV07CiAKICAgICAgICAg
ICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0
cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8IFtrZXlOYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5T
U3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgewotICAgICAgICAgICAgICAgIGF1dG8gbmV3Rmll
bGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtl
eU5hbWUpOworICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNG
aWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleU5hbWUpOwogICAgICAgICAgICAgICAgIGZp
ZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChu
YW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVsZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjIwLDcgKzIyMCw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAg
ICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JLZXk6b2JqY0l2
YXJOYW1lXTsKIAogICAgICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFt
ZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8ICFzdHJj
bXAob2JqY0l2YXJOYW1lLCBqc05hbWUuZGF0YSgpKSkgewotICAgICAgICAgICAgICAgICAgICBh
dXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IG1ha2VVbmlxdWU8T2JqY0ZpZWxkPihv
YmpjSVZhcik7CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUo
bmV3RmllbGQpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggZTA4YjA0OGUzYjU2ODQyOThjZGVmZDkz
ZWI5MTg4Mzg5MTU2ZjQzOC4uM2I5M2UxODc4Mzg1NGMyNDQ0NmUxY2ZhNTc1ODQ2NmYwZjBhN2Y0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjY3
LDcgKzI2Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpD
RmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIGlmIChbdGFyZ2V0T2Jq
ZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJv
bVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xh
c3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2Qoc3RkOjpt
YWtlX3VuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tl
VW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9kKG1ha2VVbmlxdWU8T2Jq
Y01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhv
ZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYg
bmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVj
LT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5z
ZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZh
bGxiYWNrTWV0aG9kLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCmluZGV4IDgzZDQ0ZTA2N2ZiZGY1NDdm
NmM4OGI2N2EzNmViNTNmNjkxNDY2ZWUuLmYxNzFhNTgyMDNmOThhZjE1NTQ3ODBlMDUxOWUwNGEx
ZTUzYTBiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bWJpbmVkVVJMRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQ29tYmlu
ZWRVUkxGaWx0ZXJzOjpwcmludCgpIGNvbnN0CiAjZW5kaWYKIAogQ29tYmluZWRVUkxGaWx0ZXJz
OjpDb21iaW5lZFVSTEZpbHRlcnMoKQotICAgIDogbV9wcmVmaXhUcmVlUm9vdChzdGQ6Om1ha2Vf
dW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkpCisgICAgOiBtX3ByZWZpeFRyZWVSb290KG1ha2VV
bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKIHsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIHZv
aWQgQ29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25z
dCBWZWN0b3I8VGVybT4mIHBhdHRlCiAgICAgICAgIGlmIChuZXh0RW50cnlJbmRleCAhPSBXVEY6
Om5vdEZvdW5kKQogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+
ZWRnZXNbbmV4dEVudHJ5SW5kZXhdLmNoaWxkLmdldCgpOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxw
aGFiZXQuaW50ZXJuZWQodGVybSksIHN0ZDo6bWFrZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4o
KX0pKTsKKyAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJl
ZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIG1ha2VVbmlxdWU8UHJlZml4VHJlZVZl
cnRleD4oKX0pKTsKICAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUt
PmVkZ2VzLmxhc3QoKS5jaGlsZC5nZXQoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmgKaW5kZXggOGM3ZTNmN2Q3ZjFlMGQ1NWFhZDg5MzRhYmJhNWFhNzBmYjhmODVjZi4u
NzdmZWI2MGM1MGJjOGE0ZjI0YjI3Njk2YWQxMTBkMWVkYTc0MjgwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAvLyAx
KSBJdCBzdG9yZXMgdGhlIHJ1bGVzIGZvciBlYWNoIGNvbnRlbnQgZXh0ZW5zaW9uLgogLy8gMikg
SXQgcHJvdmlkZXMgQVBJcyBmb3IgdGhlIFdlYkNvcmUgaW50ZXJmYWNlcyB0byB1c2UgdGhvc2Ug
cnVsZXMgZWZmaWNpZW50bHkuCiBjbGFzcyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIC0gUnVsZSBtYW5hZ2Vt
ZW50IGludGVyZmFjZS4gVGhpcyBjYW4gYmUgdXNlZCBieSB1cHBlciBsYXllci4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAppbmRleCA5NmUyZDYzNGI4OTNiMzk5MzA0YThi
MmIyODVlNjFmNGU0NjlkYzBjLi5iMmE5YTc4MzUyMjc3MjgzZjk1ZDg0OWQwM2IxNTZmY2RjNzIx
ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcApAQCAtMTE1LDMxICsx
MTUsMzEgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkRl
Y3J5cHQ6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0g
Y29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oc3RhdGUsIHZh
bHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2Vw
dGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DQkM6CiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMg
PSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHN0YXRl
LCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBF
eGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0Ni
Y0NmYlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjogewogICAgICAgICAg
ICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQ
YXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJh
bXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTTogewogICAg
ICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1B
ZXNHY21QYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwot
ICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNH
Y21QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6Ci0gICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpFQ0RTQTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0
RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgp
KTsKQEAgLTE2MCwxMyArMTYwLDEzIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
ICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBh
cmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1F
Y2RzYVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6
IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxn
b3JpdGhtUnNhUHNzUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUnNhUHNzUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRp
YyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+
IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzI1NjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
Mzg0OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0g
ICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciB9OwpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNTogewogICAg
ICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1S
c2FLZXlHZW5QYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0p
OwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1S
c2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBU1NBX1BLQ1MxX3YxXzU6CkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5
cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwog
ICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFz
ZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1z
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9u
YXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpITUFDOiB7CkBAIC0yMjMsMTQgKzIyMywxNCBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6RUNEU0E6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6RUNESDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxD
cnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNDksNyArMjQ5LDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKIAogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252
ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihzdGF0ZSwg
bmV3VmFsdWUpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1z
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkaEtl
eURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjogewpAQCAtMjU5LDcg
KzI1OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElk
ZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVu
dGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRp
ZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAg
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Ia2Rm
UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6IHsKQEAgLTI2OSw3ICsyNjks
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlm
aWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIg
PSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQ
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBk
ZWZhdWx0OgpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAg
Y2FzZSBPcGVyYXRpb25zOjpJbXBvcnRLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIp
IHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92
MV81OgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BTUzoKQEAgLTI5
MCw3ICsyOTAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhh
c2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNo
SWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElk
ZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1w
b3J0UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlw
dG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DVFI6CkBAIC0yOTgsNyArMjk4LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOgogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6CiAgICAgICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SE1BQzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlv
bmFyeTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwpA
QCAtMzA3LDE5ICszMDcsMTkgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAg
IGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1z
Lmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNL
ZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6IHsKICAgICAgICAg
ICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQ
YXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFt
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTMyOSw3ICsz
MjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6VW53
cmFwS2V5OgogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTM0NCw3ICszNDQsNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkFFU19LVzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGlj
dGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6SE1BQzogewpAQCAtMzU0LDEyICszNTQsMTIgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlv
bigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIu
cmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkhLREY6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UEJLREYyOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTUyMCwxNiArNTIwLDE2IEBAIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3Jvc3NUaHJlYWRDb3B5SW1wb3J0
UGFyYW1zKGNvCiB7CiAgICAgc3dpdGNoIChpbXBvcnRQYXJhbXMucGFyYW1ldGVyc0NsYXNzKCkp
IHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpOb25lOiB7Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPigpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4oKTsKICAgICAgICAgcmVzdWx0LT5pZGVudGlmaWVyID0gaW1wb3J0UGFy
YW1zLmlkZW50aWZpZXI7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6OkVjS2V5UGFyYW1zOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oY3Jvc3NU
aHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihpbXBvcnRQYXJh
bXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFy
YW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+
KGltcG9ydFBhcmFtcykpKTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNs
YXNzOjpIbWFjS2V5UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHko
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6OlJzYUhhc2hlZEltcG9y
dFBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGht
UnNhSGFzaGVkSW1wb3J0UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oY3Jv
c3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFt
cz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBkYmNjYzkwMGYzMzc0OGNkMjA2N2Y2MGNiMjkwYzBi
ZDYwMDY1NTMzLi5hNDJmNTY0ZjgxZmUxZjBlYTA5NDQzZDFmMTA1M2MxYzNjZDBjZjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0yMTcsMTIgKzIx
NywxMiBAQCBjbGFzcyBDU1NDYWxjUHJpbWl0aXZlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlIHsKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY2F0ZWdvcnkoKSkgewog
ICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcjoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9h
dFZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25O
dW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUoKSk7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25D
YXRlZ29yeTo6TGVuZ3RoOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
Y0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihj
b252ZXJzaW9uRGF0YSksIFdlYkNvcmU6OkZpeGVkKSk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKICAgICAgICAgY2Fz
ZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50OgogICAgICAgICBjYXNlIENhbGN1bGF0aW9u
Q2F0ZWdvcnk6OlBlcmNlbnRMZW5ndGg6IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4
ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3Zh
bHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVy
c2lvbj4oY29udmVyc2lvbkRhdGEpKTsKICAgICAgICAgfQogICAgICAgICAvLyBPbmx5IHR5cGVz
IHRoYXQgY291bGQgYmUgcGFydCBvZiBhIExlbmd0aCBleHByZXNzaW9uIGNhbiBiZSBjb252ZXJ0
ZWQKICAgICAgICAgLy8gdG8gYSBDYWxjRXhwcmVzc2lvbk5vZGUuIENhbGN1bGF0aW9uQ2F0ZWdv
cnk6OlBlcmNlbnROdW1iZXIgbWFrZXMgbm8gc2Vuc2UgYXMgYSBMZW5ndGguCkBAIC01MjAsNyAr
NTIwLDcgQEAgY2xhc3MgQ1NTQ2FsY09wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhw
cmVzc2lvbk5vZGUgewogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAg
ICAgbm9kZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUobm9kZSkpOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZN
b3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNF
eHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7CiAgICAgfQog
CiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKaW5kZXggYzQ0Y2ViYzUxMjBlZDgzMjZkOWEx
YjJhNjU2YjkzNjdiNmUxOTEyOC4uZTVhZThiNzdhNTE0ZjA5YzNiNDk0NDFiNTYyZjVjMmExZWM3
NTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAK
QEAgLTE2NywxMSArMTY3LDExIEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVs
bERlZmF1bHRTdHlsZSgpCiAgICAgICAgIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gbnVsbHB0
cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIWRlZmF1bHRTdHlsZSk7Ci0gICAgICAg
IGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNl
KCk7CisgICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5y
ZWxlYXNlKCk7CiAgICAgfQogCi0gICAgZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlU2V0PigpLnJlbGVhc2UoKTsKLSAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1
ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IG1ha2VVbmlx
dWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgbWVkaWFRdWVyeVN0eWxlU2hlZXQgPSAmU3R5
bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoQ1NTUGFyc2VyQ29udGV4dChVQVNoZWV0TW9kZSkpLmxl
YWtSZWYoKTsKIAogICAgIC8vIFN0cmljdC1tb2RlIHJ1bGVzLgpAQCAtMTkwLDEwICsxOTAsMTAg
QEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQog
ICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKICAgICBBU1NFUlQoIXNpbXBsZURlZmF1bHRTdHls
ZVNoZWV0KTsKIAotICAgIGRlZmF1bHRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4o
KS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJl
bGVhc2UoKTsKICAgICAvLyBUaGVyZSBhcmUgbm8gbWVkaWEtc3BlY2lmaWMgcnVsZXMgaW4gdGhl
IHNpbXBsZSBkZWZhdWx0IHN0eWxlLgogICAgIGRlZmF1bHRQcmludFN0eWxlID0gZGVmYXVsdFN0
eWxlOwotICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4o
KS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKIAogICAgIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gcGFyc2VVQVNo
ZWV0KHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQsIHN0cmxlbihzaW1wbGVVc2VyQWdlbnRTdHls
ZVNoZWV0KSk7CiAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqc2ltcGxlRGVm
YXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNw
cAppbmRleCA3NzA5YjVkZWFmYmZlOWY5YWIxMWFjMDc3YzYxOWQ3OTRkMTY0MmYyLi42NDZjMTRh
MTFhYzY0NWI5OTI2MTQ5ZjI5ZTk4MDBjNGM3MjY3YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZS5jcHAKQEAgLTc3LDEwICs3NywxMCBAQCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3Vy
Y2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBEbwogICAg
ICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5n
cyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAg
ICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYm
IGRvY3VtZW50KSB7CiAgICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQg
PSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxl
bWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291
cmNlKCksIGNhY2hlZEZvbnQpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5p
cXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRG
b250KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzb3VyY2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNv
dXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOworICAgICAgICAgICAgc291cmNlID0g
bWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwg
bnVsbHB0ciwgZm9udEZhY2VFbGVtZW50KTsKIAogICAgICAgICBpZiAoc291cmNlKQogICAgICAg
ICAgICAgZm9udEZhY2UuYWRvcHRTb3VyY2UoV1RGTW92ZShzb3VyY2UpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTZXQuY3BwCmluZGV4IDA1ZTNhM2Y2ZTIxYmM5MjgxNzg1NTY5YTE0YWE1
MGZmNTJlNGEyNzAuLjE4ZTgzNGQ2OTBhNmViNTEwMWRjOTBjOGRlNWRiNWU3YTFiMGM1ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgQ1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxvY2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJl
ZChjb25zdCBTdHJpbmcmIGZhbWlsCiAgICAgICAgIGZhbWlseUxpc3QtPmFwcGVuZChDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShmYW1pbHlOYW1lKSk7CiAg
ICAgICAgIGZhY2UtPnNldEZhbWlsaWVzKGZhbWlseUxpc3QuZ2V0KCkpOwogICAgICAgICBmYWNl
LT5zZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGl0ZW0pOwotICAgICAgICBmYWNlLT5hZG9w
dFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmYWNlLmdldCgpLCBm
YW1pbHlOYW1lKSk7CisgICAgICAgIGZhY2UtPmFkb3B0U291cmNlKG1ha2VVbmlxdWU8Q1NTRm9u
dEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCksIGZhbWlseU5hbWUpKTsKICAgICAgICAgQVNTRVJUKCFm
YWNlLT5jb21wdXRlRmFpbHVyZVN0YXRlKCkpOwogICAgICAgICBmYWNlcy5hcHBlbmQoV1RGTW92
ZShmYWNlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3Vw
aW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAppbmRl
eCBkZTZmMzlkM2Y1ZDg3MzFkOTllNWViM2M5NjhlMjlhZDFlYWNiZmU2Li5jNmM1YzM5NTQwYTVj
NTA1Y2RmNGQ1OWM3NDZjMzkxODVjOWUwM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBp
bmdSdWxlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIENTU1J1bGUqIENTU0dyb3VwaW5nUnVsZTo6
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENTU1J1bGVMaXN0JiBDU1NHcm91cGluZ1J1bGU6
OmNzc1J1bGVzKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0g
ICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NS
dWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihjb25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0
aGlzKSk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPExpdmVD
U1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihjb25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+
KCp0aGlzKSk7CiAgICAgcmV0dXJuICptX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggZmZkZDNk
MGFhNjU3ZjI1ZWFmMzFkNTcwYzU4NjhlZDUzMDllMmVmZC4uNTU1MWYyYzY5MTdkMDMzMDcyNmFj
ZGY4MTA5MWE5MWZhYjRlMGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIEdlbmVyYXRlZEltYWdlKiBDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUpCiB2
b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRT
aXplIHNpemUsIEdlbmVyYXRlZEltYWdlJiBpbWFnZSkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2Vz
LmNvbnRhaW5zKHNpemUpKTsKLSAgICBtX2ltYWdlcy5hZGQoc2l6ZSwgc3RkOjptYWtlX3VuaXF1
ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNpemUsIGltYWdlKSk7CisgICAgbV9pbWFn
ZXMuYWRkKHNpemUsIG1ha2VVbmlxdWU8Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXpl
LCBpbWFnZSkpOwogfQogCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVk
R2VuZXJhdGVkSW1hZ2UoRmxvYXRTaXplIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHAKaW5kZXggYzkwOTgzMmRhMGU1MTkwMjUzNTEzYTM5ODMxOTFhN2MyZjM5MzAw
NS4uNmYxZWIzMzg2ZDlmYmM3MmQ0NDM3ODVkMWQxOWM0ZGQ4YzVjMzdkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIENTU0tleWZy
YW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENT
U1J1bGVMaXN0JiBDU1NLZXlmcmFtZXNSdWxlOjpjc3NSdWxlcygpCiB7CiAgICAgaWYgKCFtX3J1
bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsK
KyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2ZUNTU1J1bGVM
aXN0PENTU0tleWZyYW1lc1J1bGU+PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3J1bGVMaXN0Q1NT
T01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNDgw
YTg5ODUyMzdhZGE5MGExMTc4ZTBiMjc5ZTBlNjY4MDdlMzM0MS4uYzg4ZDFlZGM5M2I3YTZjODNm
MjE3N2JhYzc2N2Y5Yjc4MmVlNzU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6
Y3NzUnVsZXMoKQogICAgIGlmICghY2FuQWNjZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVM
aXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+
KHRoaXMpOworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxTdHls
ZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOwogICAgIHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFw
cGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFp
bnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3Bw
CmluZGV4IDY1YTJmZGY4ZGZhY2I0ZDdmNzFkNzYxY2IyMTY2YjFhOTI4NGMwNzAuLjkxNGJkZTRh
MmRlOWFhMjEwNmMwMTA2M2I4MDhkOWNhNGZmZjZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01DU1NQYWludFdvcmtsZXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIERPTUNTU1BhaW50V29ya2xl
dCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpmcm9tKERPTUNTU05hbWVzcGFjZSYgY3NzKQogewogICAg
IGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01DU1NQYWludFdvcmtsZXQqPihTdXBw
bGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZyb20oJmNzcywgc3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTUNTU1BhaW50V29ya2xldD4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NQYWludFdvcmtsZXQ+KGNzcyk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmNz
cywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3Bw
CmluZGV4IDdlY2Q5M2Q3ZGMzZDQzMmVhZjgyYmM5NTZlNjFkNDg5YTUxMDYyNWIuLjBkZjZhYWU5
NmYwZTFjNzBiMzc1NTYxNjQ5ZWUzNWQyOGViNGMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eSogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eTo6ZnJvbShET01DU1NOYW1lc3BhY2UKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eSo+KFN1cHBsZW1lbnQ8RE9NQ1NT
TmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eT4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAppbmRleCBkODU5NmZkMWIy
NDU5ZGUwN2UxYzg5OWNjMDc5ZmMxOTg1MTE2NWU5Li44MmI3ZmNjMzBlNTgyNzQ5OTIwMmUyOGI4
MzA4NmNmMGZhNDRhYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRS
dWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRG9jdW1lbnRSdWxlU2V0czo6c19pc0ludmFsaWRhdGlu
Z1N0eWxlV2l0aFJ1bGVTZXRzIHsgZmFsc2UgfTsKIERvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKICAgICA6IG1fc3R5bGVSZXNv
bHZlcihzdHlsZVJlc29sdmVyKQogewotICAgIG1fYXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRob3JTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4o
KTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAKQEAg
LTc4LDcgKzc4LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRp
YVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNvbnN0CiAKICAgICAvLyBNZWRpYSBxdWVyaWVzIG9uIHVz
ZXIgYWdlbnQgc2hlZXQgbmVlZCB0byBldmFsdWF0ZWQgaW4gZG9jdW1lbnQgY29udGV4dC4gVGhl
eSBiZWhhdmUgbGlrZSBhdXRob3Igc2hlZXRzIGluIHRoaXMgcmVzcGVjdC4KICAgICBhdXRvJiBt
ZWRpYVF1ZXJ5RXZhbHVhdG9yID0gbV9zdHlsZVJlc29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3Io
KTsKLSAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVs
ZVNldD4oKTsKKyAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZSA9IG1ha2VVbmlxdWU8UnVs
ZVNldD4oKTsKICAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQoKkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bWVkaWFRdWVyeVN0eWxlU2hlZXQsIG1lZGlhUXVl
cnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2ZXIpOwogCiAgICAgLy8gVmlld3BvcnQgZGVwZW5k
ZW50IHF1ZXJpZXMgYXJlIGN1cnJlbnRseSB0b28gaW5lZmZpY2llbnQgdG8gYWxsb3cgb24gVUEg
c2hlZXQuCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6
ZVVzZXJTdHlsZSgpCiB7CiAgICAgYXV0byYgZXh0ZW5zaW9uU3R5bGVTaGVldHMgPSBtX3N0eWxl
UmVzb2x2ZXIuZG9jdW1lbnQoKS5leHRlbnNpb25TdHlsZVNoZWV0cygpOwogICAgIGF1dG8mIG1l
ZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigp
OwotICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsK
KyAgICBhdXRvIHRlbXBVc2VyU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgaWYg
KENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQgPSBleHRlbnNpb25TdHlsZVNoZWV0cy5wYWdl
VXNlclNoZWV0KCkpCiAgICAgICAgIHRlbXBVc2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHBh
Z2VVc2VyU2hlZXQtPmNvbnRlbnRzKCksIG1lZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVz
b2x2ZXIpOwogICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5
bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSwgKnRlbXBVc2VyU3R5bGUsIG1lZGlh
UXVlcnlFdmFsdWF0b3IsIG1fc3R5bGVSZXNvbHZlcik7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVs
ZUZlYXR1cmU+JiBydWxlcykKICAgICBzaXplX3Qgc2l6ZSA9IHJ1bGVzLnNpemUoKTsKICAgICBp
ZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gcnVsZVNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBhdXRvIHJ1bGVTZXQgPSBtYWtlVW5pcXVl
PFJ1bGVTZXQ+KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAg
ICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZXNbaV0ucnVsZSwgcnVsZXNbaV0uc2VsZWN0b3JJbmRl
eCwgcnVsZXNbaV0uc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgIHJ1bGVTZXQtPnNocmlua1RvRml0
KCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBt
YWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxlcykKIHZvaWQgRG9jdW1l
bnRSdWxlU2V0czo6cmVzZXRBdXRob3JTdHlsZSgpCiB7CiAgICAgbV9pc0F1dGhvclN0eWxlRGVm
aW5lZCA9IHRydWU7Ci0gICAgbV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNl
dD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1f
YXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIApAQCAtMTk1LDEyICsx
OTUsMTIgQEAgc3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxp
ZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYKICAgICAgICAgICAgIGF1dG8gYXJyYXlJ
bmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigqZmVhdHVyZS5tYXRjaEVsZW1lbnQpOwogICAg
ICAgICAgICAgYXV0byYgcnVsZVNldCA9IG1hdGNoRWxlbWVudEFycmF5W2FycmF5SW5kZXhdOwog
ICAgICAgICAgICAgaWYgKCFydWxlU2V0KQotICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgICAgICAgICAgICAgcnVsZVNldCA9IG1ha2VV
bmlxdWU8UnVsZVNldD4oKTsKICAgICAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUoZmVhdHVyZS5y
dWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZlYXR1cmUuc2VsZWN0b3JMaXN0SW5kZXgpOwog
ICAgICAgICAgICAgaWYgKGZlYXR1cmUuaW52YWxpZGF0aW9uU2VsZWN0b3IpCiAgICAgICAgICAg
ICAgICAgaW52YWxpZGF0aW9uU2VsZWN0b3JBcnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVy
ZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBpbnZhbGlk
YXRpb25SdWxlU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVT
ZXQ+PigpOworICAgICAgICBhdXRvIGludmFsaWRhdGlvblJ1bGVTZXRzID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtYXRjaEVsZW1lbnRBcnJheS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYg
KG1hdGNoRWxlbWVudEFycmF5W2ldKQogICAgICAgICAgICAgICAgIGludmFsaWRhdGlvblJ1bGVT
ZXRzLT5hcHBlbmQoeyBzdGF0aWNfY2FzdDxNYXRjaEVsZW1lbnQ+KGkpLCBXVEZNb3ZlKG1hdGNo
RWxlbWVudEFycmF5W2ldKSwgV1RGTW92ZShpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2ldKSB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDA1
ZDM4NWE1NThjNDhjNDhlZThkYTkwZjZhMThjYjRlNzVhNmE5NWEuLjA1YjQ1N2ZkNjgyMGM2N2Yw
ZTBmYmU5MzA4N2I4Y2VmMDgyOWViYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxl
U2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVk
UHNlCiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIGF1dG8gcnVsZURhdGFWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ6
OlJ1bGVEYXRhVmVjdG9yPigpOworICAgIGF1dG8gcnVsZURhdGFWZWN0b3IgPSBtYWtlVW5pcXVl
PFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOwogICAgIHJ1bGVEYXRhVmVjdG9yLT5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hlZFJ1bGVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBt
YXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVzKQogICAgICAgICBydWxlRGF0YVZlY3Rvci0+dW5j
aGVja2VkQXBwZW5kKCptYXRjaGVkUnVsZS5ydWxlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cAppbmRleCAyMTIyNDVkZWRjYWZmOTU2YWQ0NDEwN2I5ZWI0NGNiNDEzMjhhYWRiLi5lMWIxYWYy
MGZiMTFhZTNkZmVlMTkyY2FjOTJlNjJjZGVhNTU3ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBw
b3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgUmVm
PEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5QnVmZmVyVmlldykKIHsKLSAgICBhdXRvIHNv
dXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJp
bmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKKyAgICBh
dXRvIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJp
bmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKICAgICBm
b250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5jcHAKaW5kZXggM2IyMGQ0MTMzMzc1MzNkNmNiM2M1OGNiM2QxMDRmMGYwNGI1ZTYx
OS4uZTFlMWQ3MjEyMTFlNmRlMDFhOGE4NmUwZDQwZDg1Mjg5OTdiMzU3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+IFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3JhcEZvckRlcHJlY2F0ZWRDUwogICAgIC8vIFRoZSBt
YXAgaXMgaGVyZSB0byBtYWludGFpbiB0aGUgb2JqZWN0IGlkZW50aXR5IG9mIHRoZSBDU1NWYWx1
ZXMgb3ZlciBtdWx0aXBsZSBpbnZvY2F0aW9ucy4KICAgICAvLyBGSVhNRTogSXQgaXMgbGlrZWx5
IHRoYXQgdGhlIGlkZW50aXR5IGlzIG5vdCBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5
IGFuZCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQuCiAgICAgaWYgKCFtX2Nzc29tVmFsdWVX
cmFwcGVycykKLSAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7Cisg
ICAgICAgIG1fY3Nzb21WYWx1ZVdyYXBwZXJzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPENTU1ZhbHVl
KiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4+PigpOwogICAgIAogICAgIGF1dG8mIGNs
b25lZFZhbHVlID0gbV9jc3NvbVZhbHVlV3JhcHBlcnMtPmFkZChpbnRlcm5hbFZhbHVlLCBXZWFr
UHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPigpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNs
b25lZFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKaW5kZXggZGZmZGE2ZjUxZGY5
NTRkMjA2ZjAzZDBjNzM1NjBkZGEzOTJkMTQzMC4uNDRlZWIxZDcwMmQyZjlkY2I2YjEyYjU1Mjc4
MTU2N2ZkMDBkMmU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCkBAIC0xNzQsNyAr
MTc0LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVE
YXRhJiBydWxlRGF0YSkKIAogICAgIGZvciAoYXV0byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JG
ZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRj
aC5maXJzdCwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxS
dWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVG
ZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0
YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBuYW1lQW5kTWF0Y2guc2Vjb25kKSk7CiAgICAgICAgIGlm
IChuYW1lQW5kTWF0Y2guc2Vjb25kID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAg
IGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChuYW1lQW5kTWF0Y2guZmlyc3QpOwpAQCAtMTgzLDcg
KzE4Myw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEpCiAgICAgICAgIGF1dG8qIHNlbGVjdG9yID0gc2VsZWN0b3JBbmRNYXRj
aC5maXJzdDsKICAgICAgICAgYXV0byBtYXRjaEVsZW1lbnQgPSBzZWxlY3RvckFuZE1hdGNoLnNl
Y29uZDsKICAgICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKHNlbGVjdG9yLT5hdHRyaWJ1dGUo
KS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLCBbXSB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBy
dWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG1h
dGNoRWxlbWVudCwgc2VsZWN0b3IpKTsKICAgICAgICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRj
aEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQo
c2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCkpOwpAQCAtMjAxLDE0ICsyMDEsMTQgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0
IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVu
ZFZlY3RvcihvdGhlci51bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzKTsKICAgICBmb3IgKGF1dG8mIGtl
eVZhbHVlUGFpciA6IG90aGVyLmNsYXNzUnVsZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1
cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KICAgICBjbGFzc2VzQWZm
ZWN0aW5nSG9zdC5hZGQob3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIu
Y2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwogCiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBh
aXIgOiBvdGhlci5hdHRyaWJ1dGVSdWxlcykgewogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1
cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KICAgICBhdHRyaWJ1dGVz
QWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwg
b3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
CmluZGV4IGZhNmI5MTIwMjEzZWM1NGJiNjU5MDNjZmFlNjY5YmQ0NjZmYmIwMjcuLjNiYmJiZmVi
Y2EwMDk5NzgyYWYzOTgxZWI4NjczNmNlNjgwMzZlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAK
QEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFRvUnVsZVNldChjb25zdCBBdG9t
U3RyaW5nJiBrZXksIEF0b21SdWxlTWFwJiBtYXAsIGNvbnN0IFJ1bGVEYQogICAgICAgICByZXR1
cm47CiAgICAgYXV0byYgcnVsZXMgPSBtYXAuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghcnVsZXMpCi0gICAgICAgIHJ1bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlRGF0YVZlY3Rvcj4oKTsKKyAgICAgICAgcnVsZXMgPSBtYWtlVW5pcXVlPFJ1bGVEYXRhVmVj
dG9yPigpOwogICAgIHJ1bGVzLT5hcHBlbmQocnVsZURhdGEpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNjlhZjU1ODE1NjU0YmUzMjBmMWE5
ZmQ3MWE3NzY2N2Q5MjkzZmE5Ny4uODg3NzVhZDdiYThhYTU5MGFkN2JmNzJhMzdkM2I1ZjY1YjVk
MmQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAt
MzQ4LDkgKzM0OCw5IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoCiAgICAgLy8gVHVybiB0aGlz
IGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Ro
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNl
bnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxj
RXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRv
cjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2Fs
Y0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51
bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7
CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1v
dmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgo
Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCA5YTE5MWQxN2Rk
OGUzZWRjYzFjMTMwYzI2NTkwZTBjYTZmNGUzNmEzLi5jNWMyYmY1ZDBmNWZjNzkxMGFmZjE2MjU5
OTkwYzQzODY2MGMxNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
CkBAIC04MTMsNyArODEzLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICAgICAgICAg
IGNvbG9yID0gc3R5bGVSZXNvbHZlci5jb2xvckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFs
dWUuY29sb3IpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+Y29sb3IoKTsKLSAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dT
dHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFs
aWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAgYXV0byBzaGFkb3dE
YXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFk
LCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNv
bG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgaWYg
KHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhXVEZNb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJz
dEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRy
eQogICAgICAgICBlbHNlCkBAIC04MjksNyArODI5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2wKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0U2hh
ZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNo
YWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJl
bnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDogbnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNo
YWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHls
ZSgpLT50ZXh0U2hhZG93KCkpIDogbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtODQ0LDcgKzg0NCw3IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0
Qm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5i
b3hTaGFkb3coKSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIu
cGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpIDogbnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hT
aGFkb3coKSA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5
bGUoKS0+Ym94U2hhZG93KCkpIDogbnVsbHB0cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJveFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0xMzU5LDcgKzEzNTksNyBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsCiAgICAgICAgICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRl
clZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwogICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50
ICE9IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGlj
X2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAg
ICAgICAgICAgYXV0byBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4o
Y291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+
c2VwYXJhdG9yKCkpOworICAgICAgICAgICAgYXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3Vu
dGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNv
dW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOwogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5zZXRDb250ZW50KFdURk1vdmUoY291bnRlciksIGRpZFNldCk7CiAgICAgICAgICAgICBk
aWRTZXQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAppbmRleCA0Y2Y2YzZmN2FiN2RmOWZjMDQzMzRiYmU4ZGQwNWEzYjU1OWU5MzVj
Li4xOWNiMDMzZDcwYmI1YTg5Njg2NTU3Mjc1NWI5NmI5NzcwNTFjYjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTUzMCw3ICsxNTMwLDcgQEAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJh
dGlvbigpCiAgICAgICAgIEFTU0VSVCghbV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSk7
CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0
aGlzKTsKKyAgICBtX2Nzc29tV3JhcHBlciA9IG1ha2VVbmlxdWU8UHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApA
QCAtMTU0MCw3ICsxNTQwLDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHkKICAgICAgICAgQVNT
RVJUKG1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVtZW50KCkgPT0gJnBhcmVudEVsZW1lbnQpOwog
ICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMsIHBh
cmVudEVsZW1lbnQpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVuaXF1ZTxJbmxpbmVDU1NT
dHlsZURlY2xhcmF0aW9uPigqdGhpcywgcGFyZW50RWxlbWVudCk7CiAgICAgcmV0dXJuICptX2Nz
c29tV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDNh
NTJjMzYxOTlhNzlhMjVlMDljMDFkOGZhMGM1MGFlZmY2ODJiYjUuLmRlNGRhNWY1NTEyOTkwOTMx
ZGE4NmM1YzdlODNiY2IxMDE4MDhiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKQEAgLTE3MTUsNyArMTcxNSw3IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGll
cyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgICAg
IGlmIChhdXRob3JSb2xsYmFjaykKICAgICAgICAgICAgIHJldHVybiBhdXRob3JSb2xsYmFjazsK
IAotICAgICAgICBhdXRvIG5ld0F1dGhvclJvbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2Fk
ZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3
QXV0aG9yUm9sbGJhY2sobWFrZVVuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwg
d3JpdGluZ01vZGUpKTsKIAogICAgICAgICAvLyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2Fk
ZSBjb250YWlucyBVQSBydWxlcyBhbmQgdXNlciBydWxlcyBidXQgbm8gYXV0aG9yIHJ1bGVzLgog
ICAgICAgICBuZXdBdXRob3JSb2xsYmFjay0+YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwg
bWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVB
UnVsZSwgZmFsc2UpOwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFj
aygKICAgICAgICAgaWYgKHVzZXJSb2xsYmFjaykKICAgICAgICAgICAgIHJldHVybiB1c2VyUm9s
bGJhY2s7CiAKLSAgICAgICAgYXV0byBuZXdVc2VyUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxD
YXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0
byBuZXdVc2VyUm9sbGJhY2sobWFrZVVuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlv
biwgd3JpdGluZ01vZGUpKTsKIAogICAgICAgICAvLyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2Fz
Y2FkZSBjb250YWlucyBvbmx5IFVBIHJ1bGVzLgogICAgICAgICBuZXdVc2VyUm9sbGJhY2stPmFk
ZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVs
ZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJv
cC5wbAppbmRleCA5OTdjNGMwMzY3ZGQ1ZDBkNjQ1ZDVlZGY1MWVlYzRiZmIwYzMyMTA1Li4wMmEz
NmVmZTA1ZDNjYzlmZTk3ZGQ1YzBlMjU5M2FlNzlmZDZjMmM2IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9w
LnBsCkBAIC04MTEsNyArODExLDcgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhl
cml0VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXll
ciogcHJldmlvdXNDaGlsZCA9IG51bGxwdHI7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gImZvciAoYXV0byogcGFyZW50ID0gJnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+
IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAuICIoKTsgcGFyZW50ICYmIHBhcmVudC0+IiAu
ICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBhcmVudCA9IHBhcmVudC0+bmV4dCgpKSB7XG4iOwogICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBpZiAoIWNoaWxkKSB7XG4iOwotICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChz
dGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4g
IikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3Vz
Q2hpbGQtPnNldE5leHQobWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBl
KCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAg
ICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49
ICRpbmRlbnQgLiAiICAgIH1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAg
IGNoaWxkLT4iIC4gJHNldHRlciAuICIocGFyZW50LT4iIC4gJGdldHRlciAuICIoKSk7XG4iOwpA
QCAtODM3LDcgKzgzNyw3IEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0
ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAvLyBXYWxrIGVhY2ggdmFs
dWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVk
LlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgZm9yIChhdXRvJiBpdGVt
IDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiICAgICAgICBpZiAoIWNoaWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjpt
YWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtc
biI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXND
aGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUo
JG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAg
ICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiICAgICAgICB9XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZU1hcCgpLT4iIC4gZ2V0RmlsbExheWVyTWFw
ZnVuY3Rpb24oJG5hbWUpIC4gIigiIC4gJENTU1Byb3BlcnR5SWQgLiAiLCAqY2hpbGQsIGl0ZW0p
O1xuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCmluZGV4
IDY3Y2ZkZjU2ZDYyNTA1M2EwMTExOTkyZDcxMWY4YzhmZmRiOTVkYzIuLmQ3NWU0ZmM5MmM3N2Iw
N2IxZTUzZGFkMzM4N2U1NTFhMzkwYzI1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNzcsNyArNzcsNyBAQCBDU1NQYXJzZXJJbXBsOjpDU1NQ
YXJzZXJJbXBsKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
c3RyaQogICAgICwgbV9zdHlsZVNoZWV0KHN0eWxlU2hlZXQpCiAgICAgLCBtX29ic2VydmVyV3Jh
cHBlcih3cmFwcGVyKQogewotICAgIG1fdG9rZW5pemVyID0gd3JhcHBlciA/IHN0ZDo6bWFrZV91
bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcsICp3cmFwcGVyKSA6IHN0ZDo6bWFrZV91bmlxdWU8
Q1NTVG9rZW5pemVyPihzdHJpbmcpOworICAgIG1fdG9rZW5pemVyID0gd3JhcHBlciA/IG1ha2VV
bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcsICp3cmFwcGVyKSA6IG1ha2VVbmlxdWU8Q1NTVG9r
ZW5pemVyPihzdHJpbmcpOwogICAgIGlmIChjb250ZXh0LmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxl
ZCAmJiAhd3JhcHBlciAmJiBzdHlsZVNoZWV0ICYmIHJ1bGVQYXJzaW5nID09IENTU1BhcnNlcjo6
UnVsZVBhcnNpbmc6OkRlZmVycmVkKQogICAgICAgICBtX2RlZmVycmVkUGFyc2VyID0gQ1NTRGVm
ZXJyZWRQYXJzZXI6OmNyZWF0ZShjb250ZXh0LCBzdHJpbmcsICpzdHlsZVNoZWV0KTsKIH0KQEAg
LTI4Miw5ICsyODIsOSBAQCBDU1NTZWxlY3Rvckxpc3QgQ1NTUGFyc2VySW1wbDo6cGFyc2VQYWdl
U2VsZWN0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgU3R5bAogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvcjsKICAgICBpZiAoIXR5cGVTZWxlY3Rv
ci5pc051bGwoKSAmJiBwc2V1ZG8uaXNOdWxsKCkpCi0gICAgICAgIHNlbGVjdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCB0
eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkpOworICAgICAgICBz
ZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KFF1YWxpZmllZE5hbWUobnVs
bEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHlsZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNl
clNlbGVjdG9yPigpOworICAgICAgICBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2Vs
ZWN0b3I+KCk7CiAgICAgICAgIGlmICghcHNldWRvLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBz
ZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4oQ1NTUGFyc2VyU2Vs
ZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKHBzZXVkbykpOwogICAgICAgICAgICAgaWYg
KCFzZWxlY3RvciB8fCBzZWxlY3Rvci0+bWF0Y2goKSAhPSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVk
b0NsYXNzKQpAQCAtNTM1LDcgKzUzNSw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVOYW1lc3BhY2U+IENT
U1BhcnNlckltcGw6OmNvbnN1bWVOYW1lc3BhY2VSdWxlKENTU1BhcnNlclRva2VuUmFuCiBSZWZQ
dHI8U3R5bGVSdWxlTWVkaWE+IENTU1BhcnNlckltcGw6OmNvbnN1bWVNZWRpYVJ1bGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrKQogewogICAg
IGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1cm4gU3R5bGVSdWxlTWVkaWE6OmNy
ZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQocHJlbHVkZSwgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0KSkucmVsZWFzZU5vbk51bGwoKSwgIHN0ZDo6bWFr
ZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBh
cnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5
UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQocHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRl
eHQobV9jb250ZXh0KSkucmVsZWFzZU5vbk51bGwoKSwgIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHls
ZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gcnVsZXM7CiAKQEAgLTU2Myw3ICs1NjMsNyBAQCBSZWZQ
dHI8U3R5bGVSdWxlU3VwcG9ydHM+IENTU1BhcnNlckltcGw6OmNvbnN1bWVTdXBwb3J0c1J1bGUo
Q1NTUGFyc2VyVG9rZW5SYW5nZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJy
b3IsIGludmFsaWQgQHN1cHBvcnRzIGNvbmRpdGlvbgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJz
ZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKHByZWx1ZGUuc2Vy
aWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1cHBvcnRlZCwgc3RkOjptYWtlX3VuaXF1ZTxE
ZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7Cisg
ICAgICAgIHJldHVybiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXpl
KCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1cHBvcnRlZCwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxl
R3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9v
YnNlcnZlcldyYXBwZXIpIHsKICAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCku
c3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6U3VwcG9ydHMsIG1fb2JzZXJ2ZXJXcmFwcGVyLT5z
dGFydE9mZnNldChwcmVsdWRlKSk7CkBAIC02MzUsNyArNjM1LDcgQEAgUmVmUHRyPFN0eWxlUnVs
ZUtleWZyYW1lcz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUtleWZyYW1lc1J1bGUoYm9vbCB3ZWJr
aXRQcmVmaXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vIFBhcnNlIGVycm9yOyBleHBlY3Rl
ZCBpZGVudCB0b2tlbiBpbiBAa2V5ZnJhbWVzIGhlYWRlcgogCiAgICAgaWYgKG1fZGVmZXJyZWRQ
YXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1lLCBz
dGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVm
ZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRl
KG5hbWUsIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9k
ZWZlcnJlZFBhcnNlcikpOwogCiAgICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKSB7CiAgICAgICAg
IG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6
OktleWZyYW1lcywgbV9vYnNlcnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0KHJhbmdlQ29weSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcAppbmRl
eCA0ZGJlZjQwNThjNzE2MmNkOTY0NmVhNzY0ZGNiYjliYmNmMzFlNDU5Li5hMDg3MGQzNzYyY2Vh
NDJmNWI1ZWFiZDA1ZWE3NDRmMmQ5ZDZiMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1
ZG9TZWxlY3RvcihTdAogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAg
ICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBz
ZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFz
cyk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBhZ2VQc2V1ZG9UeXBlKHBzZXVkb1R5
cGUpOwogICAgIHJldHVybiBzZWxlY3RvcjsKQEAgLTYzLDcgKzYzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVt
ZW50U2VsZWN0b3IKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1
dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAg
IGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNl
bGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7
CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5
cGUpOwogICAgIEF0b21TdHJpbmcgbmFtZTsKQEAgLTg0LDEzICs4NCwxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0Ns
YXNzU2VsZWN0b3IoUwogewogICAgIGF1dG8gcHNldWRvVHlwZSA9IHBhcnNlUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudFN0cmluZyhwc2V1ZG9UeXBlU3RyaW5nKTsKICAgICBpZiAo
cHNldWRvVHlwZS5wc2V1ZG9DbGFzcyAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NVbmtub3du
KSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOworICAgICAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzcyk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQ
c2V1ZG9DbGFzc1R5cGUocHNldWRvVHlwZS5wc2V1ZG9DbGFzcyk7CiAgICAgICAgIHJldHVybiBz
ZWxlY3RvcjsKICAgICB9CiAgICAgaWYgKHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBzZXVkb0Vs
ZW1lbnQgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRVbmtub3duKSB7Ci0gICAgICAgIGF1
dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAg
ICAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAg
ICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9F
bGVtZW50KTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRU
eXBlKHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBzZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxl
Y3Rvci0+bV9zZWxlY3Rvci0+c2V0VmFsdWUocHNldWRvVHlwZVN0cmluZy5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpKTsKQEAgLTEwMCwxMiArMTAwLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3Rv
cihTCiB9CiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3RvcigpCi0gICAgOiBt
X3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KCkpCisgICAgOiBtX3NlbGVj
dG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KCkpCiB7CiB9CiAKIENTU1BhcnNlclNlbGVjdG9y
OjpDU1NQYXJzZXJTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSkKLSAgICA6
IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUpKQorICAg
IDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCiB7CiB9CiAK
QEAgLTEyNiw3ICsxMjYsNyBAQCBDU1NQYXJzZXJTZWxlY3Rvcjo6fkNTU1BhcnNlclNlbGVjdG9y
KCkKIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4mJiBzZWxlY3RvclZlY3RvcikKIHsK
LSAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxpc3Qoc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxl
Y3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0b3JWZWN0b3IpKSk7CisgICAgbV9zZWxlY3Rvci0+c2V0
U2VsZWN0b3JMaXN0KG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3JMaXN0PihXVEZNb3ZlKHNlbGVjdG9y
VmVjdG9yKSkpOwogfQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRM
aXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbVN0cmluZz4+IGFyZ3VtZW50TGlzdCkKQEAg
LTIwOSwxMiArMjA5LDEyIEBAIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFwcGVuZFRhZ0hpc3Rv
cnkoQ1NTUGFyc2VyU2VsZWN0b3JDb21iaW5hdG9yIHJlbGF0aW9uLCBzCiAKIHZvaWQgQ1NTUGFy
c2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdR
TmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpCiB7Ci0gICAgYXV0byBzZWNvbmQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIGF1dG8gc2Vjb25kID0g
bWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWNvbmQtPm1fc2VsZWN0b3Ig
PSBXVEZNb3ZlKG1fc2VsZWN0b3IpOwogICAgIHNlY29uZC0+bV90YWdIaXN0b3J5ID0gV1RGTW92
ZShtX3RhZ0hpc3RvcnkpOwogICAgIG1fdGFnSGlzdG9yeSA9IFdURk1vdmUoc2Vjb25kKTsKIAot
ICAgIG1fc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwg
dGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKKyAgICBtX3NlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NT
ZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSk7CiAgICAgbV9zZWxlY3Rv
ci0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1YnNlbGVjdG9yKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCA0ODhlNjAy
M2YyMDAyNGFmZmVmODYxN2E1MTRjNDA5YmY0OWQxZWYzLi43MDhlYzc3NzNjMThkNmUwOGUwMDFj
YWZhM2QyOGM4MGQ5Zjg3MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMjQzNSw3ICsyNDM1LDcgQEAgc3RhdGljIFJlZlB0cjxD
U1NCYXNpY1NoYXBlUGF0aD4gY29uc3VtZUJhc2ljU2hhcGVQYXRoKENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MKICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvIGJ5dGVTdHJlYW0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOworICAgIGF1dG8gYnl0ZVN0cmVhbSA9IG1h
a2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgaWYgKCFidWlsZFNWR1BhdGhCeXRl
U3RyZWFtRnJvbVN0cmluZyhhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUo
KS50b1N0cmluZygpLCAqYnl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZykpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NTZWxlY3RvclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Nl
bGVjdG9yUGFyc2VyLmNwcAppbmRleCA2YjNhY2M4NWU2ZmM1ZTVjYmI5NWFiOWZlMWE2YzdjYTll
ZjgxMDQ3Li5mMzMyM2IyMjZiNGIwMTAwYzk4M2M0ODY2Mzc1ZjFlNjU3YjE3Mzk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtNTY0
LDcgKzU2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0
b3JQYXJzZXI6OmNvbnN1bWVQc2V1ZG8oQ1NTUGFyc2VyVG9rCiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYW5nOiB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogQ1NTIFNlbGVjdG9ycyBMZXZlbCA0IGFsbG93cyA6bGFuZygqLWZvbykKLSAgICAgICAgICAg
IGF1dG8gYXJndW1lbnRMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+
KCk7CisgICAgICAgICAgICBhdXRvIGFyZ3VtZW50TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPEF0
b21TdHJpbmc+PigpOwogICAgICAgICAgICAgaWYgKCFjb25zdW1lTGFuZ0FyZ3VtZW50TGlzdChh
cmd1bWVudExpc3QsIGJsb2NrKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgICAgIHNlbGVjdG9yLT5zZXRMYW5nQXJndW1lbnRMaXN0KFdURk1vdmUoYXJndW1lbnRM
aXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlLmNwcAppbmRleCA5ZWI1ZDdlNDlmNTZhMWU5OGQxZmJiOWIyM2U2ZWE3MmUyMjYxNThmLi44
ODExN2YxOWU0YjI2YmEyNWJmZjI1YTg1NTkxNzMyYmI3YTNlN2ZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTMzNCw3ICsz
MzQsNyBAQCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6RWxlbWVudFF1ZXVlJiBDdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5zdXJlQmFjawogewogICAgIGlmICghc19wcm9jZXNzaW5n
QmFja3VwRWxlbWVudFF1ZXVlKSB7CiAgICAgICAgIHNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRR
dWV1ZSA9IHRydWU7Ci0gICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOwor
ICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlx
dWU8QmFja3VwRWxlbWVudFF1ZXVlTWljcm90YXNrPigpKTsKICAgICB9CiAgICAgcmV0dXJuIGJh
Y2t1cEVsZW1lbnRRdWV1ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRl
eCBjYjc1MjMyODBjN2IzMjVjNjZjZGU2NDZjMTViZjVhOTEzMTc0NWJjLi5jMDliODQzNjM1NTM0
MWE4ZWQ0MGE1YThiODUxNmI2ZDk3YmE2ZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpkaWRBZGRGaWxlVG9J
dGVtTGlzdCgpCiBEYXRhVHJhbnNmZXJJdGVtTGlzdCYgRGF0YVRyYW5zZmVyOjppdGVtcygpCiB7
CiAgICAgaWYgKCFtX2l0ZW1MaXN0KQotICAgICAgICBtX2l0ZW1MaXN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlzdD4oKnRoaXMpOworICAgICAgICBtX2l0ZW1MaXN0ID0g
bWFrZVVuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlzdD4oKnRoaXMpOwogICAgIHJldHVybiAqbV9p
dGVtTGlzdDsKIH0KIApAQCAtNDE2LDcgKzQxNiw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNT
dHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3QgU3RyaW5nJiBodG1sVGV4dCkKIHsKLSAgICBh
dXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7Cisg
ICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAg
IHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluIl9zLCBwbGFpblRleHQpOwogICAg
IHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0L2h0bWwiX3MsIGh0bWxUZXh0KTsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVh
ZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5cGU6OklucHV0RXZlbnQpKTsKQEAgLTQ3MSw3
ICs0NzEsNyBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWco
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsK
LSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3Vt
ZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJv
YXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0
ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEp
KTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdp
bklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0K
QEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1l
bnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkKICAgICBtX2RyYWdJbWFnZSA9IGltYWdlOwogICAg
IGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICBpZiAoIW1fZHJhZ0ltYWdlTG9hZGVyKQotICAg
ICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYWdJbWFnZUxv
YWRlcj4odGhpcyk7CisgICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8
RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXItPnN0YXJ0
TG9hZGluZyhtX2RyYWdJbWFnZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDMzNjIyMzEwODFiMTNmNzJk
YzE4ZGFjNWYzOTA3YTVlN2MxN2IwYmYuLmYyMTEzMWZmODI3ODIxZGM3NGU4NTBhOThmMWJiMjMw
OTllMDI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQoUGFnZSogcGFnZSkKIAogdm9pZCBwcm92aWRlRGV2aWNl
T3JpZW50YXRpb25UbyhQYWdlJiBwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCYgY2xpZW50
KQogewotICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKKyAgICBEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGQxN2ZmMmNmZWMxODc4ZTY3YzU4MTA3OTI4MGI0OTFiODg1
OTNlNTkuLmVkNDg0ODk3ZmFkMTk5Nzc4ZTg4MzkzOWRkMTIzYWUyZDZjNmMyMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNTIxLDE5ICs1MjEsMTkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3Nlcywg
dW5zaWcKICAgICAsIG1fcXVpcmtzKG1ha2VVbmlxdWVSZWY8UXVpcmtzPigqdGhpcykpCiAgICAg
LCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKG1fZnJhbWUgPyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI+KG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291
cmNlTG9hZGVyKCkpIDogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShudWxscHRyKSkKICAg
ICAsIG1fZG9tVHJlZVZlcnNpb24oKytzX2dsb2JhbFRyZWVWZXJzaW9uKQotICAgICwgbV9zdHls
ZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCi0gICAgLCBtX2V4
dGVuc2lvblN0eWxlU2hlZXRzKHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVldHM+
KCp0aGlzKSkKLSAgICAsIG1fdmlzaXRlZExpbmtTdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFZpc2l0
ZWRMaW5rU3RhdGU+KCp0aGlzKSkKLSAgICAsIG1fbWFya2VycyhzdGQ6Om1ha2VfdW5pcXVlPERv
Y3VtZW50TWFya2VyQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VV
bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRz
KG1ha2VVbmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVldHM+KCp0aGlzKSkKKyAgICAsIG1fdmlzaXRl
ZExpbmtTdGF0ZShtYWtlVW5pcXVlPFZpc2l0ZWRMaW5rU3RhdGU+KCp0aGlzKSkKKyAgICAsIG1f
bWFya2VycyhtYWtlVW5pcXVlPERvY3VtZW50TWFya2VyQ29udHJvbGxlcj4oKnRoaXMpKQogICAg
ICwgbV9zdHlsZVJlY2FsY1RpbWVyKFt0aGlzXSB7IHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsgfSkK
ICAgICAsIG1fZG9jdW1lbnRDcmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAg
LCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQot
ICAgICwgbV9tb2R1bGVMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+
KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVyKG1ha2VVbmlxdWU8U2NyaXB0UnVubmVyPigq
dGhpcykpCisgICAgLCBtX21vZHVsZUxvYWRlcihtYWtlVW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRl
cj4oKnRoaXMpKQogI2lmIEVOQUJMRShYU0xUKQogICAgICwgbV9hcHBseVBlbmRpbmdYU0xUcmFu
c2Zvcm1zVGltZXIoKnRoaXMsICZEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1Rp
bWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1feG1sVmVyc2lvbigiMS4wIl9zKQotICAgICwgbV9j
b25zdGFudFByb3BlcnR5TWFwKHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4o
KnRoaXMpKQorICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKG1ha2VVbmlxdWU8Q29uc3RhbnRQ
cm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwgbV9kb2N1bWVudENsYXNzZXMoZG9jdW1lbnRDbGFz
c2VzKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKQEAgLTU0NSwxMCArNTQ1LDEwIEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnCiAjZW5kaWYK
ICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnRE
ZWxheVRpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKLSAgICAsIG1fZGV2aWNlTW90aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQotICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlTW90
aW9uQ2xpZW50KSkKLSAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkKLSAgICAsIG1fZGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNs
aWVudChtYWtlVW5pcXVlPERldmljZU1vdGlvbkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNl
TW90aW9uQ29udHJvbGxlcihtYWtlVW5pcXVlPERldmljZU1vdGlvbkNvbnRyb2xsZXI+KCptX2Rl
dmljZU1vdGlvbkNsaWVudCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KG1ha2VV
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1M+KCkpCisgICAgLCBtX2RldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlcihtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4o
Km1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQpKQogI2VuZGlmCiAgICAgLCBtX3BlbmRpbmdUYXNr
c1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQpCiAgICAgLCBt
X3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnZpc3VhbFVw
ZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQpCkBAIC03NTcsNyArNzU3LDcgQEAgRWxlbWVudCog
RG9jdW1lbnQ6OmVsZW1lbnRGb3JBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHZvaWQg
RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUoKQogewotICAgIG1fYWNjZXNzS2V5Q2FjaGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsKKyAgICBtX2FjY2Vzc0tleUNhY2hlID0gbWFrZVVuaXF1
ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0
aGlzXSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiBtYXA7CiAgICAgICAgIGZvciAoYXV0byYgbm9kZSA6IGNvbXBvc2VkVHJlZURl
c2NlbmRhbnRzKCp0aGlzKSkgewogICAgICAgICAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkK
QEAgLTc4Miw3ICs3ODIsNyBAQCBFeGNlcHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gRG9jdW1lbnQ6
OnNlbGVjdG9yUXVlcnlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiBzZWxlYwogICAgIGlmIChzZWxl
Y3RvclN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhF
cnJvciB9OwogICAgIGlmICghbV9zZWxlY3RvclF1ZXJ5Q2FjaGUpCi0gICAgICAgIG1fc2VsZWN0
b3JRdWVyeUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7Cisg
ICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5Q2Fj
aGU+KCk7CiAgICAgcmV0dXJuIG1fc2VsZWN0b3JRdWVyeUNhY2hlLT5hZGQoc2VsZWN0b3JTdHJp
bmcsICp0aGlzKTsKIH0KIApAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc2V0
QWN0aXZlTGlua0NvbG9yKCkKIERPTUltcGxlbWVudGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50
YXRpb24oKQogewogICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbikKLSAgICAgICAgbV9pbXBsZW1l
bnRhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NSW1wbGVtZW50YXRpb24+KCp0aGlzKTsKKyAg
ICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IG1ha2VVbmlxdWU8RE9NSW1wbGVtZW50YXRpb24+KCp0
aGlzKTsKICAgICByZXR1cm4gKm1faW1wbGVtZW50YXRpb247CiB9CiAKQEAgLTE3NjIsNyArMTc2
Miw3IEBAIE5vZGU6Ok5vZGVUeXBlIERvY3VtZW50Ojpub2RlVHlwZSgpIGNvbnN0CiBGb3JtQ29u
dHJvbGxlciYgRG9jdW1lbnQ6OmZvcm1Db250cm9sbGVyKCkKIHsKICAgICBpZiAoIW1fZm9ybUNv
bnRyb2xsZXIpCi0gICAgICAgIG1fZm9ybUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZv
cm1Db250cm9sbGVyPigpOworICAgICAgICBtX2Zvcm1Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxG
b3JtQ29udHJvbGxlcj4oKTsKICAgICByZXR1cm4gKm1fZm9ybUNvbnRyb2xsZXI7CiB9CiAKQEAg
LTE5ODcsNyArMTk4Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0
JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgdW5zCiAgICAgQVNTRVJUKCFt
X2luUmVuZGVyVHJlZVVwZGF0ZSk7CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaW5SZW5kZXJUcmVl
VXBkYXRlKG1faW5SZW5kZXJUcmVlVXBkYXRlLCB0cnVlKTsKIAotICAgIGF1dG8gdGV4dFVwZGF0
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlVwZGF0ZT4oKnRoaXMpOworICAgIGF1dG8gdGV4
dFVwZGF0ZSA9IG1ha2VVbmlxdWU8U3R5bGU6OlVwZGF0ZT4oKnRoaXMpOwogICAgIHRleHRVcGRh
dGUtPmFkZFRleHQodGV4dCwgeyBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNl
ZFRleHQsIFdURjo6bnVsbG9wdCB9KTsKIAogICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRy
ZWVVcGRhdGVyKCp0aGlzKTsKQEAgLTIyNjksNyArMjI2OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXpl
LCBpbnQmCiBTdHlsZVJlc29sdmVyJiBEb2N1bWVudDo6dXNlckFnZW50U2hhZG93VHJlZVN0eWxl
UmVzb2x2ZXIoKQogewogICAgIGlmICghbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZl
cikKLSAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRoaXMpOworICAgICAgICBtX3VzZXJBZ2VudFNoYWRv
d1RyZWVTdHlsZVJlc29sdmVyID0gbWFrZVVuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyOwogfQogCkBAIC0y
NjcyLDcgKzI2NzIsNyBAQCBBWE9iamVjdENhY2hlKiBEb2N1bWVudDo6YXhPYmplY3RDYWNoZSgp
IGNvbnN0CiAKICAgICBBU1NFUlQoJnRvcERvY3VtZW50ID09IHRoaXMgfHwgIW1fYXhPYmplY3RD
YWNoZSk7CiAgICAgaWYgKCF0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUpIHsKLSAgICAgICAg
dG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWE9iamVjdENh
Y2hlPih0b3BEb2N1bWVudCk7CisgICAgICAgIHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSA9
IG1ha2VVbmlxdWU8QVhPYmplY3RDYWNoZT4odG9wRG9jdW1lbnQpOwogICAgICAgICBoYXNFdmVy
Q3JlYXRlZEFuQVhPYmplY3RDYWNoZSA9IHRydWU7CiAgICAgfQogICAgIHJldHVybiB0b3BEb2N1
bWVudC5tX2F4T2JqZWN0Q2FjaGUuZ2V0KCk7CkBAIC0zMDM2LDcgKzMwMzYsNyBAQCB2b2lkIERv
Y3VtZW50OjpzZXRQYXJzaW5nKGJvb2wgYikKICAgICBtX2JQYXJzaW5nID0gYjsKIAogICAgIGlm
IChtX2JQYXJzaW5nICYmICFtX3NoYXJlZE9iamVjdFBvb2wpCi0gICAgICAgIG1fc2hhcmVkT2Jq
ZWN0UG9vbCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sPigpOwor
ICAgICAgICBtX3NoYXJlZE9iamVjdFBvb2wgPSBtYWtlVW5pcXVlPERvY3VtZW50U2hhcmVkT2Jq
ZWN0UG9vbD4oKTsKIAogICAgIGlmICghbV9iUGFyc2luZyAmJiB2aWV3KCkgJiYgIXZpZXcoKS0+
bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldygpLT5maXJlTGF5b3V0UmVsYXRlZE1pbGVzdG9u
ZXNJZk5lZWRlZCgpOwpAQCAtNTU2Niw3ICs1NTY2LDcgQEAgY29uc3QgU1ZHRG9jdW1lbnRFeHRl
bnNpb25zKiBEb2N1bWVudDo6c3ZnRXh0ZW5zaW9ucygpCiBTVkdEb2N1bWVudEV4dGVuc2lvbnMm
IERvY3VtZW50OjphY2Nlc3NTVkdFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fc3ZnRXh0ZW5z
aW9ucykKLSAgICAgICAgbV9zdmdFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdEb2N1
bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsKKyAgICAgICAgbV9zdmdFeHRlbnNpb25zID0gbWFrZVVu
aXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3ZnRXh0
ZW5zaW9uczsKIH0KIApAQCAtNTc3MSw3ICs1NzcxLDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNl
Y3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8vIFRoaXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVudC5p
bXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgogICAgICAgICBzZXRDb29raWVVUkwoVVJM
KHsgfSwgZW1wdHlTdHJpbmcoKSkpOwogICAgICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShT
ZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUo
KSkpOwotICAgICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykp
OworICAgICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC01NzkwLDcgKzU3OTAsNyBAQCB2b2lkIERvY3VtZW50Ojpp
bml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA9IGRv
Y3VtZW50TG9hZGVyICYmIGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLnRhaW50aW5nKCkgPT0g
UmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZTsKIAogICAgIHNldFNlY3VyaXR5T3Jp
Z2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoaXNTZWN1cml0eU9yaWdpblVu
aXF1ZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUobV91cmwpKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAg
IHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGlj
eT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKIAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeSA9IG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLm92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5KCk7CiAgICAgaWYgKCFvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGlj
eS5pc051bGwoKSkKQEAgLTYwMjgsNyArNjAyOCw3IEBAIFN0cmluZyBEb2N1bWVudDo6bmFtZUZv
ckNTU0NhbnZhc0VsZW1lbnQoY29uc3QgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQp
CiBUZXh0QXV0b1NpemluZyYgRG9jdW1lbnQ6OnRleHRBdXRvU2l6aW5nKCkKIHsKICAgICBpZiAo
IW1fdGV4dEF1dG9TaXppbmcpCi0gICAgICAgIG1fdGV4dEF1dG9TaXppbmcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOworICAgICAgICBtX3RleHRBdXRvU2l6aW5nID0gbWFr
ZVVuaXF1ZTxUZXh0QXV0b1NpemluZz4oKTsKICAgICByZXR1cm4gKm1fdGV4dEF1dG9TaXppbmc7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAgLTYzOTUsNyArNjM5NSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OndoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoKQogdm9pZCBEb2N1
bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIW1f
d2hlZWxFdmVudFRhcmdldHMpCi0gICAgICAgIG1fd2hlZWxFdmVudFRhcmdldHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOworICAgICAgICBtX3doZWVsRXZlbnRUYXJnZXRz
ID0gbWFrZVVuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKIAogICAgIG1fd2hlZWxFdmVudFRhcmdl
dHMtPmFkZCgmbm9kZSk7CiAKQEAgLTY0NTUsNyArNjQ1NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRp
ZEFkZFRvdWNoRXZlbnRIYW5kbGVyKE5vZGUmIGhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKICAgICBpZiAoIW1fdG91Y2hFdmVudFRhcmdldHMpCi0gICAgICAgIG1fdG91Y2hF
dmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOworICAgICAg
ICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gbWFrZVVuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKIAog
ICAgIG1fdG91Y2hFdmVudFRhcmdldHMtPmFkZCgmaGFuZGxlcik7CiAKQEAgLTgwNDMsNyArODA0
Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYg
Y2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIFZlCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBtZXNzYWdlTGV2ZWxGcm9tV1RGTG9nTGV2ZWwobGV2
ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VM
ZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgpKSk7
CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZN
b3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKCkpKTsKIAogICAgICAg
ICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICB9KTsKQEAgLTgwNzgs
NyArODA3OCw3IEBAIFN0cmluZyBEb2N1bWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QKIAogYm9vbCBEb2N1bWVudDo6cmVn
aXN0ZXJDU1NQcm9wZXJ0eShDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkmJiBwcm9wKQogewot
ICAgIHJldHVybiBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBzdGQ6
Om1ha2VfdW5pcXVlPENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9wKSkp
LmlzTmV3RW50cnk7CisgICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChw
cm9wLm5hbWUsIG1ha2VVbmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3Zl
KHByb3ApKSkuaXNOZXdFbnRyeTsKIH0KIAogdm9pZCBEb2N1bWVudDo6ZGV0YWNoRnJvbUZyYW1l
KCkKQEAgLTgxNzIsNyArODE3Miw3IEBAIERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlciYgRG9jdW1lbnQ6OmRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uCiAgICAgICAg
IHJldHVybiB0b3BEb2N1bWVudCgpLmRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlcigpOwogCiAgICAgaWYgKCFtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlcikKLSAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0Nv
bnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzQ29udHJvbGxlcj4oKnRoaXMpOworICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2RldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcjsKIH0KIApAQCAtODIwMyw3ICs4MjAzLDcgQEAg
dm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0
cmluZyYgbmFtZSwgUmVmPFBhaW50V28KIENvbnRlbnRDaGFuZ2VPYnNlcnZlciYgRG9jdW1lbnQ6
OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRDaGFuZ2VPYnNl
cnZlcikKLSAgICAgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRoaXMpOworICAgICAgICBtX2NvbnRlbnRDaGFuZ2VP
YnNlcnZlciA9IG1ha2VVbmlxdWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcjsgCiB9CiAKQEAgLTgyMTEsNyArODIxMSw3
IEBAIERPTVRpbWVySG9sZGluZ1RhbmsmIERvY3VtZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKCkK
IHsKICAgICBpZiAobV9kb21UaW1lckhvbGRpbmdUYW5rKQogICAgICAgICByZXR1cm4gKm1fZG9t
VGltZXJIb2xkaW5nVGFuazsKLSAgICBtX2RvbVRpbWVySG9sZGluZ1RhbmsgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7CisgICAgbV9kb21UaW1lckhvbGRpbmdUYW5r
ID0gbWFrZVVuaXF1ZTxET01UaW1lckhvbGRpbmdUYW5rPigpOwogICAgIHJldHVybiAqbV9kb21U
aW1lckhvbGRpbmdUYW5rOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGY5N2RiZTc1MWJk
NTA0MzYyNzNjMDc4ZjcwZWVhMTViNjVjNzYyYTkuLmE1ZTMyMDM5MjU5NDk1NTUzYzU5MzZjNWI4
MDcxZTQwZTBmOGU2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMjg0LDcgKzEyODQsNyBA
QCBjbGFzcyBEb2N1bWVudAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERvY3VtZW50UGFyc2VyWWll
bGRUb2tlbj4gY3JlYXRlUGFyc2VyWWllbGRUb2tlbigpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuPigqdGhpcyk7CiAg
ICAgfQogCiAgICAgYm9vbCBoYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VuKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZXJZaWVsZFRva2VuQ291bnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RXZlbnRRdWV1ZS5jcHAKaW5kZXggMDFjN2Y5NmUwMmU5ZWJkNTg4NTNmYjVkYjFjNGI4ODIxZTJm
OTcyOC4uMDM3MDNiNjJiYzY1MDU1NzhiMzg5Yjk5OTM4YTRkYWFiNmQ3NmM3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgY2xh
c3MgRG9jdW1lbnRFdmVudFF1ZXVlOjpUaW1lciBmaW5hbCA6IHB1YmxpYyBTdXNwZW5kYWJsZVRp
bWVyIHsKIAogRG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcGVuZGluZ0V2
ZW50VGltZXIoc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMpKQorICAgICwgbV9wZW5kaW5n
RXZlbnRUaW1lcihtYWtlVW5pcXVlPFRpbWVyPigqdGhpcykpCiAgICAgLCBtX2lzQ2xvc2VkKGZh
bHNlKQogewogICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN1c3BlbmRJZk5lZWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCA3
MjkxZDRhZGVlOWY0MTc3ZmRiZmVmZWVmZGRmMjY3MDU0YTljNGYwLi5lNzY0MWFmNjIxOGJmMTNh
YjBlM2M2ODkyMDIwZGU4ODljNGU5MDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIoTm9kZSYgbm9kZSwgY29uc3QgRG9jdW1lbnRN
YXJrZXImIG5ld01hCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9t
YXJrZXJzLmFkZCgmbm9kZSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgaWYgKCFs
aXN0KSB7Ci0gICAgICAgIGxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtlckxpc3Q+KCk7Cisg
ICAgICAgIGxpc3QgPSBtYWtlVW5pcXVlPE1hcmtlckxpc3Q+KCk7CiAgICAgICAgIGxpc3QtPmFw
cGVuZChSZW5kZXJlZERvY3VtZW50TWFya2VyKG5ld01hcmtlcikpOwogICAgIH0gZWxzZSBpZiAo
c2hvdWxkSW5zZXJ0QXNTZXBhcmF0ZU1hcmtlcihuZXdNYXJrZXIpKSB7CiAgICAgICAgIC8vIFdl
IGRvbid0IG1lcmdlIGRpY3RhdGlvbiBtYXJrZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRleCA4MWVmYjEwZDVlNzZlZGI2ZjZkMzgzNTMwMDUx
ZDI5YzM4OGVhZmRiLi44NTVhMmEwNjU2ZjcxYjQ1ZWU4ZDRmZmYyODRhNTM1Mzc5YTM4Nzk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtNDgs
NyArNDgsNyBAQCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRp
Y19jYXN0PERvY3VtZW50U3RvcmFnZUFjY2Vzcyo+KFN1cHBsZW1lbnQ8RG9jdW1lbnQ+Ojpmcm9t
KCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50U3Rv
cmFnZUFjY2Vzcz4oZG9jdW1lbnQpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vzcz4oZG9jdW1lbnQpOwogICAgICAgICBzdXBwbGVt
ZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZkb2N1bWVudCwg
c3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpAQCAtMTgz
LDcgKzE4Myw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIGJvb2wgc2hvdWxk
UHJlc2VydmVVc2VyR2VzdHVyZSA9IHdhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQ6OlllcyB8fCBwcm9tcHRXYXNTaG93biA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246
Ok5vOwogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRv
Y3VtZW50KV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1
ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9
IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byog
ZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQtPmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOwogICAgICAgICAgICAg
fSkpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1
ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSkgewotICAgICAgICAg
ICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRS
ZWZlcmVuY2UpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1
ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNl
ID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5jZSldICgpIHsKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5nZXQoKSkKICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQtPmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKICAgICAg
ICAgICAgIH0pKTsKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vz
czo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQog
CiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0
dXJlKCkKIHsKLSAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxV
c2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7
CisgICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVyZSA9IG1ha2VVbmlxdWU8VXNlckdlc3R1cmVJbmRp
Y2F0b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgJm1fZG9jdW1lbnQpOwogfQogCiB2b2lkIERv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNzEyMDA4ZjIxYjIzMWM0ZGUyMWM0MTNiNWQxMDg1ZDkz
ZjI1ZGFmMy4uYjBkOGFkNWQxNjQwOWE3YmU1NmJjM2MxMGI2OWQzMmJhNzUwZGMyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtNDc3LDcgKzQ3Nyw3IEBAIE5hbWVkTm9kZU1hcCYgRWxlbWVu
dDo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFw
ID0gcmFyZURhdGEuYXR0cmlidXRlTWFwKCkpCiAgICAgICAgIHJldHVybiAqYXR0cmlidXRlTWFw
OwogCi0gICAgcmFyZURhdGEuc2V0QXR0cmlidXRlTWFwKHN0ZDo6bWFrZV91bmlxdWU8TmFtZWRO
b2RlTWFwPihjb25zdF9jYXN0PEVsZW1lbnQmPigqdGhpcykpKTsKKyAgICByYXJlRGF0YS5zZXRB
dHRyaWJ1dGVNYXAobWFrZVVuaXF1ZTxOYW1lZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+
KCp0aGlzKSkpOwogICAgIHJldHVybiAqcmFyZURhdGEuYXR0cmlidXRlTWFwKCk7CiB9CiAKQEAg
LTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVu
dChKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZhCiAgICAgc2V0RmxhZyhJ
c0N1c3RvbUVsZW1lbnQpOwogICAgIGF1dG8mIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KTsKICAgICBpZiAoIWRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKSkKLSAgICAgICAg
ZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CisgICAgICAgIGRhdGEu
c2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUobWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOwogICAgIGludmFsaWRhdGVTdHlsZUZvclN1
YnRyZWUoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVs
ZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCB2b2lkIEVsZW1lbnQ6
OmVucXVldWVUb1VwZ3JhZGUoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJm
YWNlKQogICAgIGF1dG8mIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBib29s
IGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUgPSBkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlKCk7CiAgICAgaWYgKCFhbHJlYWR5U2NoZWR1bGVkVG9VcGdyYWRlKQotICAgICAgICBkYXRh
LnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0YS5zZXRD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlv
blF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAgZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rp
b25RdWV1ZSgpLT5lbnF1ZXVlRWxlbWVudFVwZ3JhZGUoKnRoaXMsIGFscmVhZHlTY2hlZHVsZWRU
b1VwZ3JhZGUpOwogfQogCkBAIC0zNDgwLDcgKzM0ODAsNyBAQCBET01Ub2tlbkxpc3QmIEVsZW1l
bnQ6OmNsYXNzTGlzdCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxl
bWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmNsYXNzTGlzdCgpKQotICAgICAgICBkYXRh
LnNldENsYXNzTGlzdChzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxO
YW1lczo6Y2xhc3NBdHRyKSk7CisgICAgICAgIGRhdGEuc2V0Q2xhc3NMaXN0KG1ha2VVbmlxdWU8
RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsKICAgICByZXR1cm4g
KmRhdGEuY2xhc3NMaXN0KCk7CiB9CiAKQEAgLTM0ODgsNyArMzQ4OCw3IEBAIERhdGFzZXRET01T
dHJpbmdNYXAmIEVsZW1lbnQ6OmRhdGFzZXQoKQogewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0
YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5kYXRhc2V0KCkpCi0g
ICAgICAgIGRhdGEuc2V0RGF0YXNldChzdGQ6Om1ha2VfdW5pcXVlPERhdGFzZXRET01TdHJpbmdN
YXA+KCp0aGlzKSk7CisgICAgICAgIGRhdGEuc2V0RGF0YXNldChtYWtlVW5pcXVlPERhdGFzZXRE
T01TdHJpbmdNYXA+KCp0aGlzKSk7CiAgICAgcmV0dXJuICpkYXRhLmRhdGFzZXQoKTsKIH0KIApA
QCAtMzYzMiw3ICszNjMyLDcgQEAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhJiBFbGVtZW50Ojpl
bnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKQogewogICAgIGF1dG8mIHJhcmVEYXRhID0g
ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS5pbnRlcnNlY3Rpb25P
YnNlcnZlckRhdGEoKSkKLSAgICAgICAgcmFyZURhdGEuc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJE
YXRhKHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKKyAgICAg
ICAgcmFyZURhdGEuc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKG1ha2VVbmlxdWU8SW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKICAgICByZXR1cm4gKnJhcmVEYXRhLmludGVyc2VjdGlv
bk9ic2VydmVyRGF0YSgpOwogfQogCkBAIC0zNjU4LDcgKzM2NTgsNyBAQCBSZXNpemVPYnNlcnZl
ckRhdGEmIEVsZW1lbnQ6OmVuc3VyZVJlc2l6ZU9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYg
cmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLnJl
c2l6ZU9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRh
dGEoc3RkOjptYWtlX3VuaXF1ZTxSZXNpemVPYnNlcnZlckRhdGE+KCkpOworICAgICAgICByYXJl
RGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEobWFrZVVuaXF1ZTxSZXNpemVPYnNlcnZlckRhdGE+
KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEucmVzaXplT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAppbmRleCBkOWU2NjM0OWNiZGJhMGJi
ODFkMmFjZmJmZGMwZDQzMzc4YzY1OGRiLi4wYjA5ZDA4MmMzNmVkZGQ4NGI5Y2RlOTg4MjUyNzJk
YjVmOTZlNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC0x
NDIsNyArMTQyLDcgQEAgYm9vbCBFdmVudExpc3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXMKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgYXV0byBsaXN0ZW5lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
TGlzdGVuZXJWZWN0b3I+KCk7CisgICAgYXV0byBsaXN0ZW5lcnMgPSBtYWtlVW5pcXVlPEV2ZW50
TGlzdGVuZXJWZWN0b3I+KCk7CiAgICAgbGlzdGVuZXJzLT51bmNoZWNrZWRBcHBlbmQoUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucykpOwog
ICAgIG1fZW50cmllcy5hcHBlbmQoeyBldmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXJzKSB9KTsK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDllOTMwOGJiNWRh
MTQ2MWUzNThlM2NjNjJmZWFmZGNmY2QwY2M3YWQuLjViNmFiNjg3NTViNjFiZmUyZDRhNjhiY2Jl
NzUyNGZkMGRkYWJiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMzM5LDEzICszMzks
MTMgQEAgc3RydWN0IEV2ZW50TmFtZXMgewogICAgIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChE
T01fRVZFTlRfTkFNRVNfREVDTEFSRSkKICN1bmRlZiBET01fRVZFTlRfTkFNRVNfREVDTEFSRQog
Ci0gICAgLy8gRklYTUU6IFRoZSBmcmllbmQgZGVjbGFyYXRpb24gdG8gc3RkOjptYWtlX3VuaXF1
ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdpbmRvd3MgcG9ydC4KKyAgICAvLyBGSVhNRTogVGhl
IGZyaWVuZCBkZWNsYXJhdGlvbiB0byBtYWtlVW5pcXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4g
d2luZG93cyBwb3J0LgogICAgIC8vCiAgICAgLy8gdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4g
QXJncz4KLSAgICAvLyBmcmllbmQgdHlwZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xl
X29iamVjdCBzdGQ6Om1ha2VfdW5pcXVlKEFyZ3MmJi4uLik7CisgICAgLy8gZnJpZW5kIHR5cGVu
YW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3QgbWFrZVVuaXF1ZShBcmdzJiYu
Li4pOwogICAgIC8vCiAgICAgLy8gVGhpcyBjcmVhdGUgZnVuY3Rpb24gc2hvdWxkIGJlIGRlbGV0
ZWQgbGF0ZXIgYW5kIGlzIG9ubHkgZm9yIGtlZXBpbmcgRXZlbnROYW1lcyBhcyBwcml2YXRlLgot
ICAgIC8vIHN0ZDo6bWFrZV91bmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAvLyBt
YWtlVW5pcXVlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCiAgICAgLy8KICAgICB0ZW1wbGF0ZTxj
bGFzcy4uLiBBcmdzPgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3Jl
YXRlKEFyZ3MmJi4uLiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAppbmRleCBkYjE0Mjhk
MWQ0MjYwNThjYjY1YjFlYjZmYWNhMjNkYjk4OTI4MmJkLi5hMGFkMGFkN2M0ODI2OTJlNjM4ZTU3
MjgwZjFhMjkyNDdhY2VjMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQ
YXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcApAQCAtMTE1LDE3
ICsxMTUsMTcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdl
dCwgRXZlbnQmIGV2ZW50KQogewogICAgIHVzaW5nIE1ha2VFdmVudENvbnRleHQgPSBzdGQ6OnVu
aXF1ZV9wdHI8RXZlbnRDb250ZXh0PiAoKikoTm9kZSYsIEV2ZW50VGFyZ2V0KiwgRXZlbnRUYXJn
ZXQqLCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgIE1ha2VFdmVudENvbnRleHQgbWFrZUV2
ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwg
RXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQs
IHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxF
dmVudENvbnRleHQ+KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0Rl
cHRoKTsKICAgICB9OwogICAgIGlmIChpczxNb3VzZUV2ZW50PihldmVudCkgfHwgZXZlbnQuaXNG
b2N1c0V2ZW50KCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2Rl
LCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNs
b3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+
KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBj
dXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICAgICAgfTsKICAg
ICB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoaXM8VG91Y2hFdmVudD4oZXZl
bnQpKSB7CiAgICAgICAgIG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRU
YXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFk
b3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gewotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRU
YXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VG91Y2hFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwg
Y2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9OwogICAgIH0KICNlbmRpZgpAQCAtMTQ5LDcg
KzE0OSw3IEBAIHZvaWQgRXZlbnRQYXRoOjpidWlsZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQs
IEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxEb2N1bWVudD4oKm5vZGUpLmRvbVdpbmRvdygpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFk
b3dEZXB0aCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFr
ZVVuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9z
ZWRTaGFkb3dEZXB0aCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwOCw3ICszMDgsNyBAQCBFdmVudFBhdGg6
OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiB0YXJnZXRzKQogICAgICAgICBBU1NF
UlQodGFyZ2V0KTsKICAgICAgICAgTm9kZSogb3JpZ2luID0gKnRhcmdldHMuYmVnaW4oKTsKICAg
ICAgICAgaWYgKCF0YXJnZXQtPmlzQ2xvc2VkU2hhZG93SGlkZGVuKCpvcmlnaW4pKQotICAgICAg
ICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0
LCB0YXJnZXQsIG9yaWdpbiwgMCkpOworICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5p
cXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwgMCkpOwogICAgIH0KIH0K
IApAQCAtMzE3LDcgKzMxNyw3IEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxF
dmVudFRhcmdldCo+JiB0YXJnZXRzKQogICAgIGZvciAoYXV0byogdGFyZ2V0IDogdGFyZ2V0cykg
ewogICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgQVNTRVJUKCFpczxOb2RlPih0YXJn
ZXQpKTsKLSAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4
dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5iZWdpbigpLCAwKSk7CisgICAgICAgIG1fcGF0
aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KG51bGxwdHIsIHRhcmdldCwgKnRhcmdl
dHMuYmVnaW4oKSwgMCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1h
bmFnZXIuaAppbmRleCBlZGQ5Y2EyOGVhNDkzYWM3Yzk0YzhiZGUyODViMTY2NmMzODgyNTU5Li5h
NzBiY2FlY2NjODc5NWE0ZjRiYTQyNmUyNTEzZGZmN2EwZjc0YjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBSZW5kZXJUcmVl
QnVpbGRlcjsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBGdWxsc2NyZWVuTWFuYWdlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRnVsbHNjcmVlbk1h
bmFnZXIoRG9jdW1lbnQmKTsKICAgICB+RnVsbHNjcmVlbk1hbmFnZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKaW5kZXggYjNhMDZlNDdi
MDcwMGY3YzQ3ZDNkOWFlZjMzZjQ0MzcyNGUwYzU1ZS4uOTQwZWZjYWVkODMwOTFjMjU4M2ZhOWUz
MzZlZjNkNzhjNTRhYTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk6OmFkZE9ic2VydmVyKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBJZFRhcmdldE9ic2Vy
dmUKICAgICAKICAgICBJZFRvT2JzZXJ2ZXJTZXRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3Jl
Z2lzdHJ5LmFkZChpZC5pbXBsKCksIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T2Jz
ZXJ2ZXJTZXQ+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PE9ic2VydmVyU2V0PigpOwogCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKG9ic2Vy
dmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAppbmRleCA3ZTdhMzQ3OTdi
ODYyOWY2MmY3Zjc4NmFiMTRjNWM2ZjViZDkwYjE0Li5jZTg1NmJiNTVkNWJkOTllNjZmNTBjYjU1
YjBiZTQ3OTBlMDk4NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRF
dmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCkBAIC05
Niw3ICs5Niw3IEBAIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZh
dWx0OwogaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQogICAgIDogVUlF
dmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgp
KSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJsZTo6WWVzLCBJc0NvbXBvc2VkOjpZZXMsCiAg
ICAgICAgIGtleS50aW1lc3RhbXAoKS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldy5j
b3B5UmVmKCksIDAsIGtleS5tb2RpZmllcnMoKSwgSXNUcnVzdGVkOjpZZXMpCi0gICAgLCBtX3Vu
ZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2
ZW50PihrZXkpKQorICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChtYWtlVW5pcXVlPFBs
YXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJ
QlVURSkKICAgICAsIG1fa2V5KGtleS5rZXkoKSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tz
LmgKaW5kZXggYjYzMTg0MTUwZjVhMzkxNDI1MmI4NDJlZDlkMDdkZWFhZjZiNDAzNi4uNWQ1MGI3
ZDVkN2IyM2E2MWRjYmJjYzVmOGI1ZjFmYmFiMmJiNGIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01pY3JvdGFza3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNr
cy5oCkBAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFZvaWRNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMg
TWljcm90YXNrIHsKIH07CiAKIGNsYXNzIE1pY3JvdGFza1F1ZXVlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8TWljcm90YXNrUXVldWU+
OwogICAgIGZyaWVuZCBjbGFzcyBNaWNyb3Rhc2s7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggNjZjNWVhMGI5ZDYzNDU0NDM4MTJmYjEzMWZmZTVk
YmU2Y2ExZGRmMy4uMTkzZjI3ODA1YTVhZWQ0YjYwNmU5Y2VlYTNhOWEzNWQ4YjFlOTkzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBA
IHN0YXRpYyB2b2lkIHF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKCkKICAg
ICBpZiAobXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVkRmxhZykKICAgICAg
ICAgcmV0dXJuOwogICAgIG11dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFza1F1ZXVlZEZs
YWcgPSB0cnVlOwotICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90YXNrPigpKTsKKyAgICBNaWNy
b3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0YXRpb25P
YnNlcnZlck1pY3JvdGFzaz4oKSk7CiB9CiAKIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZW5xdWV1
ZU11dGF0aW9uUmVjb3JkKFJlZjxNdXRhdGlvblJlY29yZD4mJiBtdXRhdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCmlu
ZGV4IDUyZGE2MWY3NGYxZjU3YWY2ODU0OWYzNjY1NjMwNmQ4ZDE3MDNjNzkuLjAyNzZlNDJiZTVi
ZDgzZmY0MmE3OTM1NmJkZTljZTczNjA5OWNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApAQCAtNTEsNyArNTEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IE11dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcgogICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2VydmVycyksIG9sZFZhbHVl
RmxhZyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKIH0KIAogYm9vbCBNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJlcXVlc3RlZCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
aW5kZXggYzhmYzAxMDY3MjQ1ZTRlMzYxOTdhMmY2ZDRkMWU0NTc1NDdiYmM4YS4uZTVjNmRkMTZh
NGRiNjA5YmE1MjczYTQ3YWY3ZmE2ODI2NjJhMmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtNjgsNyArNjgsNyBA
QCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJlZU5vZGVX
aWxsRGV0YWNoKE5vZGUmIG5vZGUpCiAgICAgbV9vYnNlcnZlci0+c2V0SGFzVHJhbnNpZW50UmVn
aXN0cmF0aW9uKCk7CiAKICAgICBpZiAoIW1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpIHsK
LSAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7CisgICAgICAgIG1fdHJhbnNpZW50UmVn
aXN0cmF0aW9uTm9kZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8Tm9kZT4+
PigpOwogCiAgICAgICAgIEFTU0VSVCghbV9ub2RlS2VwdEFsaXZlKTsKICAgICAgICAgbV9ub2Rl
S2VwdEFsaXZlID0gJm1fbm9kZTsgLy8gQmFsYW5jZWQgaW4gdGFrZVRyYW5zaWVudFJlZ2lzdHJh
dGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzZkNGVhOWQ3MzBhOTIzNzJhOWY4ZTdhNmQ4ZjY3
ZDAwZmQzZGJmNS4uY2FiZjFlYjU4YzljMjNjYWQ4ODViZDAxZGYxMjJiNjUxYWUwMmJkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtMzk4LDkgKzM5OCw5IEBAIHZvaWQgTm9kZTo6bWF0ZXJpYWxpemVS
YXJlRGF0YSgpCiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhOwogICAgIGlmIChpczxFbGVtZW50
PigqdGhpcykpCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0
YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7
CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4oZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7CiAgICAgZWxzZQotICAg
ICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5tX3JlbmRl
cmVyKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPE5vZGVSYXJlRGF0YT4o
bV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoZGF0YSk7CiAKICAgICBt
X2RhdGEubV9yYXJlRGF0YSA9IGRhdGE7CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBFdmVudFRhcmdl
dERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAKICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKHNfZXZlbnRUYXJnZXREYXRhTWFwTG9jayk7CiAgICAgc2V0SGFzRXZlbnRUYXJn
ZXREYXRhKHRydWUpOwotICAgIHJldHVybiAqZXZlbnRUYXJnZXREYXRhTWFwKCkuYWRkKHRoaXMs
IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXREYXRhPigpKS5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhpcywgbWFrZVVuaXF1ZTxFdmVu
dFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBOb2RlOjpjbGVhckV2
ZW50VGFyZ2V0RGF0YSgpCkBAIC0yMjg3LDcgKzIyODcsNyBAQCB2b2lkIE5vZGU6OnJlZ2lzdGVy
TXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgTXV0YXRpb25PYnNl
cnZlcgogICAgIH0KIAogICAgIGlmICghcmVnaXN0cmF0aW9uKSB7Ci0gICAgICAgIHJlZ2lzdHJ5
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9i
c2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7CisgICAgICAgIHJlZ2lz
dHJ5LmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9ic2Vy
dmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7CiAgICAgICAgIHJlZ2lzdHJh
dGlvbiA9IHJlZ2lzdHJ5Lmxhc3QoKS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaAppbmRleCA3NjkwZDU5OWZjYTdkYzk5Y2I0OWUxNjBmYmUyYWZhZGRmMDBjZGY0Li43
NjZkNjdmM2Y2ZDYyOWFmMDg5NDJhZGMyM2UyYzIyYzI5ZjNlNDY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oCkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIDogcHVi
bGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVMaXN0c05vZGVEYXRhJiBlbnN1cmVOb2Rl
TGlzdHMoKQogICAgIHsKICAgICAgICAgaWYgKCFtX25vZGVMaXN0cykKLSAgICAgICAgICAgIG1f
bm9kZUxpc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTGlzdHNOb2RlRGF0YT4oKTsKKyAgICAg
ICAgICAgIG1fbm9kZUxpc3RzID0gbWFrZVVuaXF1ZTxOb2RlTGlzdHNOb2RlRGF0YT4oKTsKICAg
ICAgICAgcmV0dXJuICptX25vZGVMaXN0czsKICAgICB9CiAKQEAgLTI4OSw3ICsyODksNyBAQCBj
bGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgTm9kZU11
dGF0aW9uT2JzZXJ2ZXJEYXRhJiBlbnN1cmVNdXRhdGlvbk9ic2VydmVyRGF0YSgpCiAgICAgewog
ICAgICAgICBpZiAoIW1fbXV0YXRpb25PYnNlcnZlckRhdGEpCi0gICAgICAgICAgICBtX211dGF0
aW9uT2JzZXJ2ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTXV0YXRpb25PYnNlcnZlckRh
dGE+KCk7CisgICAgICAgICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gbWFrZVVuaXF1ZTxO
b2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9tdXRhdGlvbk9i
c2VydmVyRGF0YTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRp
b0J1dHRvbkdyb3Vwcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMu
Y3BwCmluZGV4IDUzMzdjNThjZGZiYmFhYjIzMDE4NDUwMjYzOGRjNjM0NDlmNzk2YWMuLjYxYmJj
NGVkZmY5MzRhNjQ0NmVhMjU2NzU1NjYzZmQ1NDY4NzdlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JhZGlvQnV0dG9uR3JvdXBzLmNwcApAQCAtMTk4LDExICsxOTgsMTEgQEAgdm9pZCBSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKLSAgICAgICAgbV9uYW1lVG9H
cm91cE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CisgICAgICAgIG1f
bmFtZVRvR3JvdXBNYXAgPSBtYWtlVW5pcXVlPE5hbWVUb0dyb3VwTWFwPigpOwogCiAgICAgYXV0
byYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC5uYW1lKCkuaW1wbCgpLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFncm91cCkKLSAgICAgICAgZ3JvdXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CisgICAgICAgIGdyb3VwID0g
bWFrZVVuaXF1ZTxSYWRpb0J1dHRvbkdyb3VwPigpOwogICAgIGdyb3VwLT5hZGQoZWxlbWVudCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCBjODI1YTdlZGVlNmJiMmQ1ZjUxNmM2ZDNlNmVhNzQxMGU2ZWNjNzU2Li4wNGFmZTlkNzhh
ZDBiZDEwMjhhNjcwM2MwZmMzZDRmNjUzYjEzZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNzksOCArMzc5LDggQEAgdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW4KIHsKICAgICBpZiAobV9pbkRpc3BhdGNoRXJyb3JFdmVudCkgewogICAg
ICAgICBpZiAoIW1fcGVuZGluZ0V4Y2VwdGlvbnMpCi0gICAgICAgICAgICBtX3BlbmRpbmdFeGNl
cHRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdF
eGNlcHRpb24+Pj4oKTsKLSAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucy0+YXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgICAgICAg
ICBtX3BlbmRpbmdFeGNlcHRpb25zID0gbWFrZVVuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsKKyAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucy0+YXBw
ZW5kKG1ha2VVbmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTQxNCw5ICs0MTQsOSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnJlcG9ydFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24oSlNDOjpFeGVjU3RhdGUm
IHN0YQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJVbmhhbmRsZWQgUHJv
bWlzZSBSZWplY3Rpb246ICIsIHJlc3VsdE1lc3NhZ2UpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChjYWxsU3RhY2spCi0g
ICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAg
bWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVz
c2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVsc2UKLSAgICAgICAgbWVz
c2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9y
TWVzc2FnZSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwogICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAgUmVqZWN0ZWRQcm9taXNlVHJhY2tl
ciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNs
b3cKICAgICAvLyBXaGVuIGluaXRpYWxpemluZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCB2bSgp
IGlzIG5vdCByZWFkeS4KIAogICAgIEFTU0VSVCghbV9yZWplY3RlZFByb21pc2VUcmFja2VyKTsK
LSAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlamVjdGVk
UHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsKKyAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNr
ZXIgPSBtYWtlVW5pcXVlPFJlamVjdGVkUHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsKICAg
ICByZXR1cm4gKm1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDU1ZGMyYzg3YTRhYzIwMmQ3MWFkZGE2NmQ1OTZi
NWZlYTBiYzg4NTYuLjIxMDljZTRhMjI4YzNlN2JhODdhNGJhNTJiMmRiMjgyMzYwODcxMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTYzMyw3ICs2MzMsNyBAQCBFeGNl
cHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gU2VsZWN0b3JRdWVyeUNhY2hlOjphZGQoY29uc3QgU3Ry
aW5nJiBzZWxlY3RvcnMsIERvYwogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1heGltdW1T
ZWxlY3RvclF1ZXJ5Q2FjaGVTaXplKQogICAgICAgICBtX2VudHJpZXMucmVtb3ZlKG1fZW50cmll
cy5yYW5kb20oKSk7CiAKLSAgICByZXR1cm4gKm1fZW50cmllcy5hZGQoc2VsZWN0b3JzLCBzdGQ6
Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0b3JMaXN0KSkpLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKm1fZW50cmllcy5hZGQoc2VsZWN0b3JzLCBtYWtlVW5p
cXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1
ZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDY5NjNiNjgzNzlkODhm
MjdhODRlMmYxZGE2NTE1MzgxODA1YjI5M2MuLjY3ODZjMGQyMWUxYjJjMmE1Nzg1MWJkMDg1MTY0
YzFhMWU5MmM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RN
b2RlIHR5cGUpCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dS
b290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZSh0eXBl
KQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhp
cykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkK
IHsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50
JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50PiYmIHNsbwogICAgIDog
RG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAsIFRyZWVT
Y29wZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUoU2hhZG93Um9vdE1vZGU6OlVzZXJB
Z2VudCkKLSAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4o
KnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhp
cykpCiAgICAgLCBtX3Nsb3RBc3NpZ25tZW50KFdURk1vdmUoc2xvdEFzc2lnbm1lbnQpKQogewog
fQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05l
d0RvY3VtZW50KERvY3VtZW50JiBuZXdEb2N1bWVudCkKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFwYXJlbnRUcmVlU2NvcGUoKSB8fCAmcGFyZW50VHJlZVNj
b3BlKCktPmRvY3VtZW50U2NvcGUoKSA9PSAmbmV3RG9jdW1lbnQpOwogCiAgICAgLy8gU3R5bGUg
c2NvcGVzIGFyZSBkb2N1bWVudCBzcGVjaWZpYy4KLSAgICBtX3N0eWxlU2NvcGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpOworICAgIG1fc3R5bGVTY29wZSA9IG1ha2VV
bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTigmbV9zdHlsZVNjb3BlLT5kb2N1bWVudCgpID09ICZuZXdEb2N1bWVu
dCk7CiB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVt
ZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVudCYgcwogewog
ICAgIEFTU0VSVCgmc2xvdC5yb290Tm9kZSgpID09IHRoaXMpOwogICAgIGlmICghbV9zbG90QXNz
aWdubWVudCkKLSAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U2xv
dEFzc2lnbm1lbnQ+KCk7CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlPFNs
b3RBc3NpZ25tZW50PigpOwogCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPmFkZFNsb3RF
bGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFz
c2lnbm1lbnQuY3BwCmluZGV4IGE0MTlkZGE1MjhhY2NiZGE2ZGU5ZGRmMWE1NDg2NGNmZGY5MTYw
ZWYuLjQ1YzA4ZWEzNmFmZTEzOTdiZTBlY2JmYjI5ZTIyOGVjZDBjOTkwNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU2xvdEFz
c2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhU
TUxTbG90RWxlbWVuCiAgICAgICAgIC8vIHRvIGF2b2lkIGFsd2F5cyBoYXZpbmcgYSB2ZWN0b3Ig
b2YgYWxsIGNoaWxkIG5vZGVzIG9mIGEgc2hhZG93IGhvc3QuCiAgICAgICAgIGlmIChzbG90TmFt
ZSA9PSBkZWZhdWx0U2xvdE5hbWUoKSkKICAgICAgICAgICAgIG1fc2xvdEFzc2lnbm1lbnRzSXNW
YWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90PigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwogICAgIGF1dG8mIHNs
b3QgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBib29sIG5lZWRzU2xvdGNoYW5n
ZUV2ZW50ID0gc2hhZG93Um9vdC5zaG91bGRGaXJlU2xvdGNoYW5nZUV2ZW50KCkgJiYgaGFzQXNz
aWduZWROb2RlcyhzaGFkb3dSb290LCBzbG90KTsKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFNs
b3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QoTm9kZSYgY2hpbGQsIGNvbnN0IEF0b21TdHJpbmcm
IHNsb3ROYW1lKQogICAgIH0KIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zbG90cy5lbnN1cmUo
c2xvdE5hbWUsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2xvdD4oKTsKICAgICB9KTsKICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLT5hc3NpZ25lZE5vZGVzLmFwcGVuZCgmY2hpbGQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAyZjI4NzBkMTY2OWQ0NGJjNjE4NGE3MmVjNjNlYjMy
M2Y1MjdkMzlmLi41MzFhY2RmNGRkNjU2OGUwZjQ2MjFlYjUwZDg5ZGVlNDY3ZDU1YTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBUcmVlU2NvcGU6OlRyZWVT
Y29wZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBt
X3Jvb3ROb2RlKHNoYWRvd1Jvb3QpCiAgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1lbnQpCiAg
ICAgLCBtX3BhcmVudFRyZWVTY29wZSgmZG9jdW1lbnQpCi0gICAgLCBtX2lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkK
KyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KG1ha2VVbmlxdWU8SWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5PigpKQogewogICAgIHNoYWRvd1Jvb3Quc2V0VHJlZVNjb3BlKCp0aGlzKTsK
IH0KQEAgLTczLDcgKzczLDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIDogbV9yb290Tm9kZShkb2N1bWVudCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShk
b2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKG51bGxwdHIpCi0gICAgLCBtX2lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KG1ha2VVbmlxdWU8SWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewogICAgIGRvY3VtZW50LnNldFRyZWVTY29wZSgq
dGhpcyk7CiB9CkBAIC0xNDEsNyArMTQxLDcgQEAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogVHJl
ZVNjb3BlOjpnZXRBbGxFbGVtZW50c0J5SWQoY29uc3QgQXRvbVN0cmluZyYgZWxlbWVudEkKIHZv
aWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nSW1wbCYgZWxlbWVu
dElkLCBFbGVtZW50JiBlbGVtZW50LCBib29sIG5vdGlmeU9ic2VydmVycykKIHsKICAgICBpZiAo
IW1fZWxlbWVudHNCeUlkKQotICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9lbGVtZW50c0J5SWQgPSBtYWtl
VW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9lbGVtZW50c0J5SWQtPmFkZChl
bGVtZW50SWQsIGVsZW1lbnQsICp0aGlzKTsKICAgICBpZiAobm90aWZ5T2JzZXJ2ZXJzKQogICAg
ICAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJ
ZCk7CkBAIC0xNjgsNyArMTY4LDcgQEAgRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlO
YW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkRWxl
bWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBpZiAoIW1fZWxlbWVudHNCeU5hbWUpCi0gICAgICAgIG1fZWxlbWVudHNCeU5hbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fZWxl
bWVudHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9l
bGVtZW50c0J5TmFtZS0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIApAQCAtMjM5LDcg
KzIzOSw3IEBAIHZvaWQgVHJlZVNjb3BlOjphZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVudCYgaW1h
Z2VNYXApCiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2ltYWdl
TWFwc0J5TmFtZSkKLSAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VNYXBzQnlOYW1lID0gbWFr
ZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIG1faW1hZ2VNYXBzQnlOYW1lLT5h
ZGQoKm5hbWUsIGltYWdlTWFwLCAqdGhpcyk7CiB9CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBIVE1M
TWFwRWxlbWVudCogVHJlZVNjb3BlOjpnZXRJbWFnZU1hcChjb25zdCBBdG9tU3RyaW5nJiBuYW1l
KSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0
b21TdHJpbmdJbXBsJiBuYW1lLCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlm
ICghbV9pbWFnZXNCeVVzZW1hcCkKLSAgICAgICAgbV9pbWFnZXNCeVVzZW1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZXNCeVVzZW1h
cCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICByZXR1cm4gbV9pbWFn
ZXNCeVVzZW1hcC0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIApAQCAtMzAwLDcgKzMw
MCw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIFRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQoY29u
c3QgQXRvbVN0cmluZyYgZm9yQXR0cmlidXRlVmFsCiAKICAgICBpZiAoIW1fbGFiZWxzQnlGb3JB
dHRyaWJ1dGUpIHsKICAgICAgICAgLy8gUG9wdWxhdGUgdGhlIG1hcCBvbiBmaXJzdCBhY2Nlc3Mu
Ci0gICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVT
Y29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBtYWtl
VW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAKICAgICAgICAgZm9yIChhdXRvJiBsYWJl
bCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxMYWJlbEVsZW1lbnQ+KG1fcm9vdE5vZGUpKSB7CiAg
ICAgICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JWYWx1ZSA9IGxhYmVsLmF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oZm9yQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKaW5kZXggZGRhNDkwYjEzY2RjMmRkYjgzZmIxZmM4ZmZh
YjA5ZGYwMDg4ZDgyYy4uNDI2ODE5NmY4OTJhZjMwNTUxMDNjNDg3MmZlOGVjYmRkNWYxMWFkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaApAQCAt
NDEsNiArNDEsNyBAQCBjbGFzcyBTdHlsZWRFbGVtZW50OwogY2xhc3MgVGV4dDsKIAogY2xhc3Mg
QWNjZXNzaWJpbGl0eVVuZG9SZXBsYWNlZFRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlVbmRvUmVwbGFjZWRUZXh0KCkgeyB9CiAg
ICAgdm9pZCBjb25maWd1cmVSYW5nZURlbGV0ZWRCeVJlYXBwbHlXaXRoU3RhcnRpbmdTZWxlY3Rp
b24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmlu
ZGV4IDc5MzQyYzQ5Nzc1M2Q5YTE1MjZlMDU1NTQ5ZmM3Nzk3MjE0YmY2ZTQuLjg5MWMxMjg4YzZl
MzE0YWNjYWU5YjYyNzE5NzgxODgxZTc0MmRjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKQEAgLTM4MCwxMiArMzgwLDEyIEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVE
YXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAgICAgc3dp
dGNoIChraW5kKSB7CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkNvcHk6CiAgICAgY2Fz
ZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkN1dDoKLSAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6
UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgICAg
ICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERh
dGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGUsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKSk7CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3RlQXNQbGFpblRleHQ6
CiAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1
c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4
dFR5cGUgPSAidGV4dC9wbGFpbiJfczsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0ID0gUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPnJlYWRTdHJpbmcocGxhaW5UZXh0VHlw
ZSk7Ci0gICAgICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRp
Y1Bhc3RlYm9hcmQ+KCk7CisgICAgICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVl
PFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmlu
ZyhwbGFpblRleHRUeXBlLCBwbGFpblRleHQpOwogICAgICAgICAgICAgcmV0dXJuIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3Jl
TW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCkpOwogICAgICAgICB9CkBAIC0zOTYs
MTAgKzM5NiwxMCBAQCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVy
Rm9yQ2xpcGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAgIGNhc2UgQ2xpcGJvYXJk
RXZlbnRLaW5kOjpCZWZvcmVDb3B5OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZv
cmVDdXQ6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJlZm9yZVBhc3RlOgotICAgICAg
ICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERh
dGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCkpOworICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBtYWtl
VW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9j
dW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBzdGQ6Om1ha2VfdW5pcXVl
PFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQs
IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiB9CiAKIC8vIFJldHVybnMgd2hldGhl
ciBjYWxsZXIgc2hvdWxkIGNvbnRpbnVlIHdpdGggInRoZSBkZWZhdWx0IHByb2Nlc3NpbmciLCB3
aGljaCBpcyB0aGUgc2FtZSBhcwpAQCAtMTE4Myw5ICsxMTgzLDkgQEAgdm9pZCBFZGl0b3I6OnJl
YXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlvbiYgY29tcG9zaXRpb24pCiAKIEVk
aXRvcjo6RWRpdG9yKEZyYW1lJiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCi0gICAgLCBt
X2tpbGxSaW5nKHN0ZDo6bWFrZV91bmlxdWU8UEFMOjpLaWxsUmluZz4oKSkKLSAgICAsIG1fc3Bl
bGxDaGVja2VyKHN0ZDo6bWFrZV91bmlxdWU8U3BlbGxDaGVja2VyPihmcmFtZSkpCi0gICAgLCBt
X2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyPihmcmFtZSkpCisgICAgLCBtX2tpbGxSaW5nKG1ha2VVbmlxdWU8UEFMOjpL
aWxsUmluZz4oKSkKKyAgICAsIG1fc3BlbGxDaGVja2VyKG1ha2VVbmlxdWU8U3BlbGxDaGVja2Vy
PihmcmFtZSkpCisgICAgLCBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIobWFrZVVuaXF1ZTxB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPihmcmFtZSkpCiAgICAgLCBtX2VkaXRvclVJVXBkYXRl
VGltZXIoKnRoaXMsICZFZGl0b3I6OmVkaXRvclVJVXBkYXRlVGltZXJGaXJlZCkKICNpZiBFTkFC
TEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICwgbV90ZWxlcGhvbmVOdW1iZXJEZXRlY3Rpb25VcGRhdGVUaW1lcigqdGhpcywgJkVkaXRv
cjo6c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDBkZGMxNWJkYzBk
MzA0ZjQ1NDNhMDU5NjJiYzZjYzc2NDVmNTQ3OTQuLjJjMjAyOGNjNjNjMWI5MzhiYzY2ZmY0YmVh
NTg5OTI1OGU5YTRhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xNjMxLDcgKzE2MzEsNyBAQCB2b2lkIFJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjp1cGRhdGVOb2Rlc0luc2VydGVkKE5vZGUgKm5vZGUpCiBSZXBsYWNl
bWVudEZyYWdtZW50KiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZW5zdXJlUmVwbGFjZW1lbnRG
cmFnbWVudCgpCiB7CiAgICAgaWYgKCFtX3JlcGxhY2VtZW50RnJhZ21lbnQpCi0gICAgICAgIG1f
cmVwbGFjZW1lbnRGcmFnbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZW1lbnRGcmFnbWVu
dD4obV9kb2N1bWVudEZyYWdtZW50LmdldCgpLCBlbmRpbmdTZWxlY3Rpb24oKSk7CisgICAgICAg
IG1fcmVwbGFjZW1lbnRGcmFnbWVudCA9IG1ha2VVbmlxdWU8UmVwbGFjZW1lbnRGcmFnbWVudD4o
bV9kb2N1bWVudEZyYWdtZW50LmdldCgpLCBlbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgcmV0dXJu
IG1fcmVwbGFjZW1lbnRGcmFnbWVudC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCmluZGV4IDNiNDA2ODhjYjRkYTY1NmIz
NDQ1ODdjMDg4ODYzNmMwYWIxNTY2Y2YuLmY5YjY0YzVjOGM4OTZiZjMyMjYzMDg3MDlmMjZhYTY2
N2UxZWQ5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVj
dEdhdGhlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RH
YXRoZXJlci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNlbGVjdGlvblJl
Y3RHYXRoZXJlcjo6Tm90aWZpZXI+IFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Y2xlYXJBbmQKICAg
ICBtX2dhcFJlY3RzLmNsZWFyKCk7CiAgICAgbV9pc1RleHRPbmx5ID0gdHJ1ZTsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWVyPigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Tm90aWZpZXI+KCp0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDE4OTZlMWEyMjgxYzFhOWIw
NDZlOGVmYWNkOTExOWFmNWUyNzdkNTYuLmYxZDE5YzEwMTE0YzFhOTg1YjhiNDI2ZmE2OGZkYjgx
MjJhNjBjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTY1
MCw3ICs2NTAsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAg
ICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsK
ICAgICAgICAgaWYgKCFtX2Zsb3dSdW5SZXNvbHZlckNhY2hlIHx8ICZtX2Zsb3dSdW5SZXNvbHZl
ckNhY2hlLT5mbG93KCkgIT0gJmJsb2NrRmxvdykgewogICAgICAgICAgICAgbV9hY2N1bXVsYXRl
ZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID8gMCA6IHRl
eHROb2RlT2Zmc2V0SW5GbG93KHRleHROb2RlKTsKLSAgICAgICAgICAgIG1fZmxvd1J1blJlc29s
dmVyQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVy
PihibG9ja0Zsb3csICpsYXlvdXQpOworICAgICAgICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNo
ZSA9IG1ha2VVbmlxdWU8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywg
KmxheW91dCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gU2tpcCB0byBtX29mZnNldCBwb3NpdGlv
bi4KICAgICAgICAgYXV0byByYW5nZSA9IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPnJhbmdlRm9y
UmVuZGVyZXIocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tCmluZGV4IDBhODNhYzA5NTkyNzRjMDc4MGQ1ZDdiMzg1ZjAxOWMwZTg2ZTNj
NzQuLjljZjg2YTRhMTVmMWM3YzZmMDI4MTU1NjQ3YWZhMDA1OWFlM2I2ZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTM4MCw3ICszODAs
NyBAQCBIVE1MQ29udmVydGVyOjpIVE1MQ29udmVydGVyKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgUG9zaXRpb24mIGVuZCkKICAgICBfZmxhZ3MucmVhY2hlZFN0YXJ0ID0gZmFsc2U7CiAg
ICAgX2ZsYWdzLnJlYWNoZWRFbmQgPSBmYWxzZTsKICAgICAKLSAgICBfY2FjaGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVzPigpOworICAgIF9jYWNoZXMgPSBtYWtlVW5p
cXVlPEhUTUxDb252ZXJ0ZXJDYWNoZXM+KCk7CiB9CiAKIEhUTUxDb252ZXJ0ZXI6On5IVE1MQ29u
dmVydGVyKCkKQEAgLTU1MSw3ICs1NTEsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IEhUTUxDb252ZXJ0
ZXJDYWNoZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYgZQogCiAg
ICAgYXV0byByZXN1bHQgPSBtX2NvbXB1dGVkU3R5bGVzLmFkZCgmZWxlbWVudCwgbnVsbHB0cik7
CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxlbWVudCwg
dHJ1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I+KCZlbGVtZW50LCB0cnVlKTsKICAgICBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yJiBjb21wdXRlZFN0eWxlID0gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0
dXJuIGNvbXB1dGVkU3R5bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlkKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLmgKaW5kZXggMjU3N2Q1YTc2OTY4MTYyMmY1ZDBhN2I2M2ZmNGQwOWQ4OGM5NWRjMS4uMjlj
NWE4ZGE3ZWUzMjU1NjEyNjU2OTA1NGUzMDIyMjhhNTMwMTgxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgK
QEAgLTM3LDYgKzM3LDcgQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkg
eyB9CiAgICAgLy8gUmV0dXJucyBhIGNvbnRleHQgSUQuCkBAIC01Miw2ICs1Myw3IEBAIGNsYXNz
IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CiAgICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRp
dmVzKCk7CiAKICAgICBjbGFzcyBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBBbGVy
bmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgeyB9CiAgICAgICAgIHVpbnQ2NF90IGFkZEFs
dGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGZiNDM3MTYzMDNhZTI1YjgxOTI5MmQyNzFjYTJjYWU2
ODRiOWMwMmUuLmMzYzhmOGIzMjRiZmVjZGNlOWU1YzRlYjE5YjViNzQ2MDg5MjhjM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCkKIHsKICAgICBhdXRv
IHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCk7
CiAgICAgCi0gICAgYXV0byBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSk7CisgICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgcGFnZS0+c2V0SXNGb3JTYW5pdGl6aW5nV2Vi
Q29udGVudCgpOwogICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFibGVkKGZhbHNlKTsK
ICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IGEwOTVlZWFlOWIyYTc5N2Jk
YWJhZTM0OTQwZmRjNmEzY2UzMDQyNGIuLmQ1ODExMmZmOWJkZjZjZDdkMTk4NTUyZDg2Njk5MWY4
NWI3YTFjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAK
QEAgLTk0LDExICs5NCwxMSBAQCBzdGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKEZ1bmN0aW9u
PHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUu
Z2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUo
ZnVuY3Rpb24pKSk7CisgICAgcXVldWUuZ2V0KCkuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248
dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIEFzeW5jRmlsZVN0cmVhbTo6QXN5
bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKLSAgICA6IG1faW50ZXJuYWxz
KHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxzPihjbGllbnQpKQorICAgIDogbV9pbnRlcm5hbHMo
bWFrZVVuaXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCmluZGV4IDlhZDNkYTll
ZmZmMGYzYTcwN2EwNjAxZjc4NjAxZDVkODY4MjU4ZjUuLjk5YTdiNWM2Zjk4N2ExNGJhMTkwOTQ1
ODk4N2FlODRlY2ZjNGYwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcApA
QCAtMTM5LDcgKzEzOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZpbGVSZWFkZXI6OnJlYWRJbnRl
cm5hbChCbG9iJiBibG9iLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwCiAgICAgbV9zdGF0ZSA9
IExPQURJTkc7CiAgICAgbV9lcnJvciA9IG51bGxwdHI7CiAKLSAgICBtX2xvYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4obV9yZWFkVHlwZSwgc3RhdGljX2Nhc3Q8Rmls
ZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8
RmlsZVJlYWRlckxvYWRlcj4obV9yZWFkVHlwZSwgc3RhdGljX2Nhc3Q8RmlsZVJlYWRlckxvYWRl
ckNsaWVudCo+KHRoaXMpKTsKICAgICBtX2xvYWRlci0+c2V0RW5jb2RpbmcobV9lbmNvZGluZyk7
CiAgICAgbV9sb2FkZXItPnNldERhdGFUeXBlKG1fYmxvYi0+dHlwZSgpKTsKICAgICBtX2xvYWRl
ci0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNmFlNTUyY2JjZWZiYTM1YWY1NDk0YWQ4MGExNDcz
MWQwMGFjYTNkMS4uNWM4ZjE4ZTNkYWIwZWIyNTk3YWQ1ZTgyMjEzOWJkODhmZjMyNGUwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBD
YWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUmIGZyYW1lKQogCiAgICAgLy8gQ3JlYXRlIHRo
ZSBDYWNoZWRGcmFtZXMgZm9yIGFsbCBGcmFtZXMgaW4gdGhlIEZyYW1lVHJlZS4KICAgICBmb3Ig
KEZyYW1lKiBjaGlsZCA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKLSAgICAgICAgbV9jaGlsZEZyYW1lcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRGcmFtZT4oKmNoaWxkKSk7CisgICAgICAgIG1fY2hp
bGRGcmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+KCpjaGlsZCkpOwogCiAgICAg
UkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC0+ZG9tV2luZG93KCkpOwogICAgIFJFTEVBU0VfQVNT
RVJUKG1fZG9jdW1lbnQtPmZyYW1lKCkpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIENhY2hlZEZyYW1l
OjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAgICAgLy8gQWN0aXZlIERPTSBvYmplY3RzIG11
c3QgYmUgc3VzcGVuZGVkIGJlZm9yZSB3ZSBjYWNoZSB0aGUgZnJhbWUgc2NyaXB0IGRhdGEuCiAg
ICAgbV9kb2N1bWVudC0+c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlQ2FjaGUpOwog
Ci0gICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdENh
Y2hlZEZyYW1lRGF0YT4oZnJhbWUpOworICAgIG1fY2FjaGVkRnJhbWVTY3JpcHREYXRhID0gbWFr
ZVVuaXF1ZTxTY3JpcHRDYWNoZWRGcmFtZURhdGE+KGZyYW1lKTsKIAogICAgIG1fZG9jdW1lbnQt
PmRvbVdpbmRvdygpLT5zdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZFBhZ2UuY3BwCmluZGV4IDA2ODZhZThmZWNlNDRmMWVmNjkwZTVmOGY2YWJlODQ2MTQ2
M2RmN2QuLjk3NDdhNDA0MDE2YWM4NjhkMmY3Nzk2ZTUzMzA0MzZmZmE1ODc0OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBERUZJTkVfREVC
VUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hlZFBhZ2VDb3Vu
dGVyLCAoIkNhY2hlZAogQ2FjaGVkUGFnZTo6Q2FjaGVkUGFnZShQYWdlJiBwYWdlKQogICAgIDog
bV9wYWdlKHBhZ2UpCiAgICAgLCBtX2V4cGlyYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygp
ICsgU2Vjb25kcyhwYWdlLnNldHRpbmdzKCkuYmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRl
cnZhbCgpKSkKLSAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVk
RnJhbWU+KHBhZ2UubWFpbkZyYW1lKCkpKQorICAgICwgbV9jYWNoZWRNYWluRnJhbWUobWFrZVVu
aXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkpCiB7CiAjaWZuZGVmIE5ERUJVRwog
ICAgIGNhY2hlZFBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwCmluZGV4IDAwMjk2NTU4OTJkMTU0Y2I1MDQzZTFkYTIyODI1ODc5ZjYzZWRkZTUu
LjNiYTI0YjlkZTJlOTk0MTk2YTBkZjkyZmMzNjYzY2VlYTViZjRiOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTQ3OCw3ICs0NzgsNyBAQCBib29sIFBhZ2VDYWNoZTo6
YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgICAgIC8v
IE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KICAg
ICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOwogCi0gICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxD
YWNoZWRQYWdlPigqcGFnZSk7CisgICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbWFrZVVuaXF1
ZTxDYWNoZWRQYWdlPigqcGFnZSk7CiAgICAgICAgIGl0ZW0ubV9wcnVuaW5nUmVhc29uID0gUHJ1
bmluZ1JlYXNvbjo6Tm9uZTsKICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDdhOTkxZjE3YjAzZDgzZTkwNWY3
ZDNlMDYwN2JmNTJhOTliODBlNDUuLmIxNGQzMTAxNThiNjQ1ZmU4Njk5ZjdmOTlmNDE4NThiZDU1
YWUyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzMyLDcgKzMz
Miw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVxdWVzdEljb24oY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhdGhzKQogICAgICAgICBtX2ZpbGVJY29uTG9hZGVyLT5pbnZhbGlkYXRlKCk7CiAKICAg
ICBGaWxlSWNvbkxvYWRlckNsaWVudCYgY2xpZW50ID0gKnRoaXM7Ci0gICAgbV9maWxlSWNvbkxv
YWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZUljb25Mb2FkZXI+KGNsaWVudCk7CisgICAgbV9m
aWxlSWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8RmlsZUljb25Mb2FkZXI+KGNsaWVudCk7CiAKICAg
ICBjaHJvbWUtPmxvYWRJY29uRm9yRmlsZXMocGF0aHMsICptX2ZpbGVJY29uTG9hZGVyKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCA4
MDZlNWYzZGFlYmUyOTRlMzMwMjMwZGZhNWVkZThjOTJkNThjMzE4Li4xN2MwMjdjZmRmYTFiYjQz
YjY0NWVlNjJkNThjOGFjMzIwNmQ4NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3IpCiB2b2lk
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIo
KQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGFzSFRNTEVsZW1lbnQo
KS5pc0Nvbm5lY3RlZCgpKTsKLSAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhc0hUTUxFbGVtZW50
KCkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0ciksICp0aGlzKTsKKyAg
ICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1ha2VVbmlxdWU8Rm9ybUF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyPihhc0hUTUxFbGVtZW50KCkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihmb3JtQXR0ciksICp0aGlzKTsKIH0KIAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OmZvcm1BdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAKaW5kZXggZWE1YjA5YWFhMDhkYjI3Mzk2MWI5NTM0MjJmMDNkZDdhZDZlNDY3
MS4uZDBlMDNmNTZjYjA2M2UyN2YxMTM0MGEyNzEzZDRmOTYxYjVhZTY1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U2F2ZWRGb3JtU3RhdGU+IFNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6ZShjb25zdCBW
ZWN0b3I8U3RyaW5nPgogICAgIHNpemVfdCBpdGVtQ291bnQgPSBzdGF0ZVZlY3RvcltpbmRleCsr
XS50b1VJbnQoKTsKICAgICBpZiAoIWl0ZW1Db3VudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgYXV0byBzYXZlZEZvcm1TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3Rh
dGU+KCk7CisgICAgYXV0byBzYXZlZEZvcm1TdGF0ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3Rh
dGU+KCk7CiAgICAgd2hpbGUgKGl0ZW1Db3VudC0tKSB7CiAgICAgICAgIGlmIChpbmRleCArIDEg
Pj0gc3RhdGVWZWN0b3Iuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0z
NjUsMTMgKzM2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGZvcm1TdGF0ZVNpZ25hdHVyZSgpCiBzdGQ6
OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI6OlNhdmVkRm9ybVN0YXRlTWFwPiBGb3JtQ29udHJv
bGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNl
dCYgY29udHJvbExpc3QpCiB7CiAgICAgRm9ybUtleUdlbmVyYXRvciBrZXlHZW5lcmF0b3I7Ci0g
ICAgYXV0byBzdGF0ZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGVNYXA+KCk7
CisgICAgYXV0byBzdGF0ZU1hcCA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGVNYXA+KCk7CiAg
ICAgZm9yIChhdXRvJiBjb250cm9sIDogY29udHJvbExpc3QpIHsKICAgICAgICAgaWYgKCFjb250
cm9sLT5zaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBhdXRvJiBmb3JtU3RhdGUgPSBzdGF0ZU1hcC0+YWRkKGtleUdl
bmVyYXRvci5mb3JtS2V5KCpjb250cm9sKS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKICAgICAgICAgaWYgKCFmb3JtU3RhdGUpCi0gICAgICAgICAgICBmb3JtU3RhdGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOworICAgICAgICAgICAgZm9ybVN0YXRlID0g
bWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAgICAgICAgZm9ybVN0YXRlLT5hcHBlbmRD
b250cm9sU3RhdGUoY29udHJvbC0+bmFtZSgpLCBjb250cm9sLT50eXBlKCksIGNvbnRyb2wtPnNh
dmVGb3JtQ29udHJvbFN0YXRlKCkpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVNYXA7CkBAIC00
MDMsNyArNDAzLDcgQEAgRm9ybUNvbnRyb2xTdGF0ZSBGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRl
Rm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWwKICAgICBpZiAobV9zYXZlZEZv
cm1TdGF0ZU1hcC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7
CiAgICAgaWYgKCFtX2Zvcm1LZXlHZW5lcmF0b3IpCi0gICAgICAgIG1fZm9ybUtleUdlbmVyYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKKyAgICAgICAgbV9mb3Jt
S2V5R2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxGb3JtS2V5R2VuZXJhdG9yPigpOwogICAgIFNhdmVk
Rm9ybVN0YXRlTWFwOjppdGVyYXRvciBpdCA9IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZmluZChtX2Zv
cm1LZXlHZW5lcmF0b3ItPmZvcm1LZXkoY29udHJvbCkuaW1wbCgpKTsKICAgICBpZiAoaXQgPT0g
bV9zYXZlZEZvcm1TdGF0ZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3Rh
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMTA0
N2M1OGVlYzM1MzZlM2QzOTkzYTdiNmU1ODYyNWIwMTU5NTJmMS4uZWI5YmQwNjg1ZDU5MmVhNjky
MzEzYWQ0MTZjMjdkN2YyODI2MWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIEhUTUxBbmNob3JFbGVtZW50Ojpo
YXNSZWwoUmVsYXRpb24gcmVsYXRpb24pIGNvbnN0CiBET01Ub2tlbkxpc3QmIEhUTUxBbmNob3JF
bGVtZW50OjpyZWxMaXN0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVsTGlzdCkgewotICAgICAg
ICBtX3JlbExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oY29uc3RfY2FzdDxI
VE1MQW5jaG9yRWxlbWVudCY+KCp0aGlzKSwgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVu
dCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9yZWxMaXN0ID0gbWFrZVVuaXF1ZTxE
T01Ub2tlbkxpc3Q+KGNvbnN0X2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQmPigqdGhpcyksIEhUTUxO
YW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CiAjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQogICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UodG9rZW4sICJub3JlZmVycmVyIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwg
Im5vb3BlbmVyIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgImFyIik7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmluZGV4IGFjMDc1OGRlODNi
MDQ4ODJhNWQ4OTIyZmQ0MDU1NDhlZjk1NmRjYTIuLjQ5YWJmYTVmNzBhN2FiOTdkNzNlMmM4MmI3
NjdiMDUzNTFhZGVmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAK
QEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBIVE1MQXJlYUVsZW1lbnQ6OmludmFsaWRhdGVDYWNoZWRS
ZWdpb24oKQogYm9vbCBIVE1MQXJlYUVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQoTGF5b3V0UG9pbnQg
bG9jYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNpemUsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkK
IHsKICAgICBpZiAobV9sYXN0U2l6ZSAhPSBzaXplKSB7Ci0gICAgICAgIG1fcmVnaW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYXRoPihnZXRSZWdpb24oc2l6ZSkpOworICAgICAgICBtX3JlZ2lvbiA9
IG1ha2VVbmlxdWU8UGF0aD4oZ2V0UmVnaW9uKHNpemUpKTsKICAgICAgICAgbV9sYXN0U2l6ZSA9
IHNpemU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CmluZGV4IGE5YmI0ZmI4ZTA2M2U3MDE1ZjFhNjRlN2Q4NmZlYjM1OGZmYzI3Y2QuLjg5NGU2Mzk4
YjhhNGVjZGRlZGY5ZTE5ODhhNDE0YzE3MWIyODY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC05NTksNyArOTU5LDcgQEAgdm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1
ZmZlcikgY28KICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXModHJ1ZSk7CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoZGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBtX2lt
YWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOwotICAgIG1fY29udGV4
dFN0YXRlU2F2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+
KG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IG1h
a2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcj4obV9pbWFnZUJ1ZmZlci0+Y29udGV4
dCgpKTsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soSFRNTEVsZW1lbnQ6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+dm0oKSk7CiAgICAgSFRNTEVsZW1lbnQ6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1lbW9yeUNv
c3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IDk3NmM4ZTBh
OWEwNmE5YjgzZDZjYTk0MWJkNWRkMzdiOWYzMzg1YzUuLjMyODE3NmI2OWU4Y2QxYmYyMmQ0ZTc2
MzI3ZTlmMjkyOTY4YWI0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3Bw
CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVt
ZW50Q2FjaGUoKSBjb25zdAogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9u
TmFtZWRFbGVtZW50Q2FjaGU+KCk7CisgICAgYXV0byBjYWNoZSA9IG1ha2VVbmlxdWU8Q29sbGVj
dGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwogCiAgICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRleCBmMTU3ODc0ZTZkNTM0ZTNmNjEz
NGU0YTVkZjRmNTFiZTJmNjdhMzFhLi42MGRkMWZiMjUyMDM4NjBkM2Q5MmE3YTVhY2IzMzFjMmFi
MDRiNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBA
IC04OCw3ICs4OCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIERldGFpbHNTbG90QXNzaWdubWVudDo6
c2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3QgTm9kZSYgY2hpbGQpCiBSZWY8SFRNTERldGFpbHNF
bGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgYXV0byBkZXRhaWxzID0gYWRvcHRS
ZWYoKm5ldyBIVE1MRGV0YWlsc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAgICBkZXRh
aWxzLT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3RkOjptYWtl
X3VuaXF1ZTxEZXRhaWxzU2xvdEFzc2lnbm1lbnQ+KCkpKTsKKyAgICBkZXRhaWxzLT5hZGRTaGFk
b3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVVuaXF1ZTxEZXRhaWxzU2xv
dEFzc2lnbm1lbnQ+KCkpKTsKICAgICByZXR1cm4gZGV0YWlsczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggZDg4OTNiMWYwOTQ5
ZWYxMDJlMjlkMDNjNTg5NjdjNGRkNGYzZmQ1YS4uZTE1MzE2YTE5ZWVmYjQ3N2UzZjM2N2M4MGY3
YzNjMWEyYTYzNGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKQogICAgIGlmIChyZW5kZXJlcigp
ICYmIHdpbGxWYWxpZGF0ZSgpKQogICAgICAgICBtZXNzYWdlID0gdmFsaWRhdGlvbk1lc3NhZ2Uo
KS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBpZiAoIW1fdmFsaWRhdGlvbk1lc3NhZ2UpCi0gICAg
ICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbGlkYXRpb25NZXNz
YWdlPih0aGlzKTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IG1ha2VVbmlxdWU8VmFs
aWRhdGlvbk1lc3NhZ2U+KHRoaXMpOwogICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UtPnVwZGF0ZVZh
bGlkYXRpb25NZXNzYWdlKG1lc3NhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IDZlYzIyZDc3NDlmMmY3OGJk
MzFlZjc3ZWE2MzYwNzNiNzFjNTlmZjIuLmEyYjAwZThmODE2ZGExYzIyMWIxYzM2NmVhNmU2ODlj
M2IxYzY4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAgIGlmIChoYXNO
YW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNhY2hlID0g
c3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CisgICAgYXV0
byBjYWNoZSA9IG1ha2VVbmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwogCiAg
ICAgSGFzaFNldDxBdG9tU3RyaW5nSW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50czsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGM3NmQ0OTNhNjJjZWQ4MzA4ODAx
YjZiMDFkMzMyMWUwYTMzM2Y1MWQuLjQzNWQ5NTE0ZGQyOWRkZDFmNmRmYjFkMTY5ZTM0N2UzMTVh
MzAxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTc5MSw3
ICs3OTEsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6YWRkVG9QYXN0TmFtZXNNYXAoRm9ybU5h
bWVkSXRlbSogaXRlbSwgY29uc3QgQXRvbVN0cmluZyYgcAogICAgIGlmIChwYXN0TmFtZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fcGFzdE5hbWVzTWFwKQotICAgICAg
ICBtX3Bhc3ROYW1lc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdE5hbWVzTWFwPigpOworICAg
ICAgICBtX3Bhc3ROYW1lc01hcCA9IG1ha2VVbmlxdWU8UGFzdE5hbWVzTWFwPigpOwogICAgIG1f
cGFzdE5hbWVzTWFwLT5zZXQocGFzdE5hbWUuaW1wbCgpLCBpdGVtKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCAwMmQ3ZDRlNGZiZTg2ZjUyNzBm
NTg0YjZhOGRlYjliZTQ2Zjk3YWE5Li5iMWM4MjFkZDliYWJhMmEyMGNiMjllMWMxY2ZkOTBkNzFm
ZWM1OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAt
NTQsNyArNTQsNyBAQCBSZWY8SFRNTElGcmFtZUVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogRE9NVG9rZW5MaXN0JiBIVE1M
SUZyYW1lRWxlbWVudDo6c2FuZGJveCgpCiB7CiAgICAgaWYgKCFtX3NhbmRib3gpIHsKLSAgICAg
ICAgbV9zYW5kYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzYW5k
Ym94QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CisgICAgICAgIG1fc2Fu
ZGJveCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2FuZGJveEF0dHIsIFtdKERv
Y3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuIFNlY3VyaXR5
Q29udGV4dDo6aXNTdXBwb3J0ZWRTYW5kYm94UG9saWN5KHRva2VuKTsKICAgICAgICAgfSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMGMyNWNk
ZDgwZDVmOGE3NzBhMWQ5NzAwNTc4NDdhODljNTY4M2RiZC4uMzc2YzUyMTk2NGUwZjcxYjZmZDlj
MjE3MmQ2MjAxYzI5MjU3YTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IEhUTUxJbnB1
dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIEhUTUxJ
bWFnZUxvYWRlciYgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQogewogICAg
IGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBt
YWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pbWFnZUxv
YWRlcjsKIH0KIApAQCAtMTY0MSw3ICsxNjQxLDcgQEAgUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1l
bnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmRhdGFMaXN0KCkgY29uc3QKIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6cmVzZXRMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKQogewogICAgIGlmIChpc0Nv
bm5lY3RlZCgpKQotICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CisgICAgICAgIG1fbGlzdEF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyID0gbWFrZVVuaXF1ZTxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+
KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGlzdEF0dHIpLCB0aGlzKTsKICAgICBl
bHNlCiAgICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCBiODYzNGNhZGFmYTE4
YTBhMjdjY2Y3MjhmOWJiZjU2Y2I3Zjc4ZDE2Li5mNmE3YmM4MDI0ZmZhNWU0YmQ3MWY2OWEyN2M5
N2M4YzkzNmJiNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBA
IC00ODEsNyArNDgxLDcgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnN0eWxlU2hlZXRJc0xvYWRp
bmcoKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MTGlua0VsZW1lbnQ6OnNpemVzKCkKIHsKICAg
ICBpZiAoIW1fc2l6ZXMpCi0gICAgICAgIG1fc2l6ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRv
a2VuTGlzdD4oKnRoaXMsIHNpemVzQXR0cik7CisgICAgICAgIG1fc2l6ZXMgPSBtYWtlVW5pcXVl
PERPTVRva2VuTGlzdD4oKnRoaXMsIHNpemVzQXR0cik7CiAgICAgcmV0dXJuICptX3NpemVzOwog
fQogCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVu
ZGluZ0V2ZW50KExpbmtFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCiBET01Ub2tlbkxpc3QmIEhU
TUxMaW5rRWxlbWVudDo6cmVsTGlzdCgpCiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIAotICAgICAg
ICBtX3JlbExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxO
YW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRva2VuKSB7
CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRN
TE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcgdG9rZW4p
IHsKICAgICAgICAgICAgIHJldHVybiBMaW5rUmVsQXR0cmlidXRlOjppc1N1cHBvcnRlZChkb2N1
bWVudCwgdG9rZW4pOwogICAgICAgICB9KTsKICAgICByZXR1cm4gKm1fcmVsTGlzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGY3NDBjY2FjMjQyZTllMGYz
YmM4ZGRjOTU3NWZiMzJhNGVmMTk4YWYuLmYzYWNmY2RlMDAwN2EyNGYyNzVhNGM5NTRkNTI1MTIw
ODM3ODI5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
NDgxLDcgKzQ4MSw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6ZmluaXNoSW5pdGlhbGl6YXRpb24oKQogewotICAgIG1fbWVkaWFTZXNzaW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CisgICAgbV9tZWRp
YVNlc3Npb24gPSBtYWtlVW5pcXVlPE1lZGlhRWxlbWVudFNlc3Npb24+KCp0aGlzKTsKIAogICAg
IG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Np
b246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4pOwogICAgIG1fbWVkaWFTZXNzaW9u
LT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVQYWdl
Q29uc2VudFRvTG9hZE1lZGlhKTsKQEAgLTMwMjcsNyArMzAyNyw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiBpblRpbWUsIGNvbnN0
IE1lZGlhVGltCiAKICAgICAvLyA1IC0gSWYgdGhlIHNlZWsgd2FzIGluIHJlc3BvbnNlIHRvIGEg
RE9NIG1ldGhvZCBjYWxsIG9yIHNldHRpbmcgb2YgYW4gSURMIGF0dHJpYnV0ZSwgdGhlbiBjb250
aW51ZQogICAgIC8vIHRoZSBzY3JpcHQuIFRoZSByZW1haW5kZXIgb2YgdGhlc2Ugc3RlcHMgbXVz
dCBiZSBydW4gYXN5bmNocm9ub3VzbHkuCi0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6bWFrZV91
bmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZl
VG9sZXJhbmNlKTsKKyAgICBtX3BlbmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4o
bm93LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIGlm
IChmcm9tRE9NKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVpbmcg
c2VlayBmcm9tICIsIG5vdywgIiB0byAiLCB0aW1lKTsKICAgICAgICAgbV9zZWVrVGFza1F1ZXVl
LnNjaGVkdWxlVGFzayhzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUYXNrLCB0aGlz
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGQwYmFiOWZjOWQ2
ZWRhMWMxYmMyYTYwOTY4M2YyNzZmZTc2MDNjZjguLmYyNGU4NzZhMTNiNjE1NTllMmM5OTViYmE0
YTVlNDUyMzQ5NzAwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC05OTAsNiArOTkwLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAgIFJlZlB0cjxNZWRp
YUVycm9yPiBtX2Vycm9yOwogCiAgICAgc3RydWN0IFBlbmRpbmdTZWVrIHsKKyAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nU2Vlayhjb25zdCBN
ZWRpYVRpbWUmIG5vdywgY29uc3QgTWVkaWFUaW1lJiB0YXJnZXRUaW1lLCBjb25zdCBNZWRpYVRp
bWUmIG5lZ2F0aXZlVG9sZXJhbmNlLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVG9sZXJhbmNl
KQogICAgICAgICAgICAgOiBub3cobm93KQogICAgICAgICAgICAgLCB0YXJnZXRUaW1lKHRhcmdl
dFRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCmluZGV4IGRk
NGZhMmQ3MGU0ZjQzZjQyYjgyMjJkMzdkNDQxOGYxYTEzMWVkODcuLjU2YjcyMDZhZTNiZThmMTBh
ODgxNGFlOWFmYWM2MmJmZWI1NjA5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE91dHB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6
c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiBET01Ub2tlbkxpc3QmIEhUTUxP
dXRwdXRFbGVtZW50OjpodG1sRm9yKCkKIHsKICAgICBpZiAoIW1fdG9rZW5zKQotICAgICAgICBt
X3Rva2VucyA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgZm9yQXR0cik7
CisgICAgICAgIG1fdG9rZW5zID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBmb3JB
dHRyKTsKICAgICByZXR1cm4gKm1fdG9rZW5zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkZGE5NDQ5ZDU3YWQ0MjA4NTg2Mjdk
ZWQzZmRkOTE4MTMyMTVmZTJiLi41Yjk5ZDU1NTUzMDQ5NzA5M2M2YmNhOTk1ODdjN2EyZjcyNTU5
MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0
ZUFmdGVyU3R5bGVSZXNvbHV0aW9uKCkKICAgICBpZiAocmVuZGVyZXIoKSAmJiAhdXNlRmFsbGJh
Y2tDb250ZW50KCkpIHsKICAgICAgICAgaWYgKGlzSW1hZ2VUeXBlKCkpIHsKICAgICAgICAgICAg
IGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBt
X2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAg
ICAgICAgIGlmIChtX25lZWRzSW1hZ2VSZWxvYWQpCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxv
YWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAg
ICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAppbmRl
eCAxMGJjMDlmZjA5OWM4ODhiMjI2MjY5MzkwYjhlMWY4YmU0Y2UzOTY3Li5iMDQ5MzliOWMyZDcy
NzAyMTM3OWM1YTRkZDM0MDQ3ZDgxMmFkOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U3VtbWFyeUVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFN1bW1hcnlTbG90RWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBTbG90QXNzaWdubWVudCB7CiBSZWY8SFRNTFN1bW1hcnlFbGVt
ZW50PiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4g
c3VtbWFyeSA9IGFkb3B0UmVmKCpuZXcgSFRNTFN1bW1hcnlFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KSk7Ci0gICAgc3VtbWFyeS0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9j
dW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8U3VtbWFyeVNsb3RFbGVtZW50PigpKSk7CisgICAgc3Vt
bWFyeS0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlx
dWU8U3VtbWFyeVNsb3RFbGVtZW50PigpKSk7CiAgICAgcmV0dXJuIHN1bW1hcnk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGE1ZTc1YWFmZjUyZGRm
OWY1NzU0NWJhMDY3ZWVjNzg5ODg4ZGQ5YWIuLjY3ZmYyMTI1MmYxYjhlODMxMGExZDdjYmIyMzJl
YThjNzM5MzhhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApA
QCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVy
cygpCiAgICAgdXBkYXRlRGlzcGxheVN0YXRlKCk7CiAgICAgaWYgKHNob3VsZERpc3BsYXlQb3N0
ZXJJbWFnZSgpKSB7CiAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgIG1f
aW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwor
ICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigq
dGhpcyk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAg
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBy
ZW5kZXJlci0+aW1hZ2VSZXNvdXJjZSgpLnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmlt
YWdlKCkpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAKICAg
ICAgICAgaWYgKHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CiAgICAgICAgICAgICBpZiAo
IW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9pbWFn
ZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJM
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCmlu
ZGV4IGQ1YjliZWRiYWQwNDcwNDYxYTU4YWI1Y2IwMTRhNjhjMDQ3ZDdmYjAuLjg1NDUxZDE0Mzcw
ZTI0Y2Q3ZDRkZDU2OTAxNDYzNzM1YWQ2ODMwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJs
aWNVUkxNYW5hZ2VyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQdWJsaWNVUkxNYW5hZ2VyPiBQdWJsaWNVUkxNYW5hZ2VyOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBhdXRvIHB1YmxpY1VS
TE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1YmxpY1VSTE1hbmFnZXI+KGNvbnRleHQpOwor
ICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9IG1ha2VVbmlxdWU8UHVibGljVVJMTWFuYWdlcj4o
Y29udGV4dCk7CiAgICAgcHVibGljVVJMTWFuYWdlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAg
cmV0dXJuIHB1YmxpY1VSTE1hbmFnZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlv
bk1lc3NhZ2UuY3BwCmluZGV4IDhhZjczYThhMDA1NDk4MGFkMTc5MDY5NTZhODQzMmE2ZjljZGIx
NGIuLmY1ZGFiMGY0MmYyZDA1M2U3MDNjNmM1NzIzY2ExNjAzNzFkMWEyZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCkBAIC0xMTUsOSArMTE1LDkgQEAgdm9p
ZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAg
ICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgbV9tZXNzYWdlID0gbWVzc2FnZTsK
ICAgICBpZiAoIW1fYnViYmxlKQotICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxU
aW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKTsKKyAgICAg
ICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6
OmJ1aWxkQnViYmxlVHJlZSk7CiAgICAgZWxzZQotICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFu
ZFN0YXJ0VGltZXIpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIpOwogICAgIG1f
dGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBW
YWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIoKQogICAgIGlmICht
YWduaWZpY2F0aW9uIDw9IDApCiAgICAgICAgIG1fdGltZXIgPSBudWxscHRyOwogICAgIGVsc2Ug
ewotICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxp
ZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CisgICAgICAgIG1fdGltZXIgPSBtYWtl
VW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVl
KTsKICAgICAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4KDVfcywgMV9tcyAqIHN0
YXRpY19jYXN0PGRvdWJsZT4obV9tZXNzYWdlLmxlbmd0aCgpKSAqIG1hZ25pZmljYXRpb24pKTsK
ICAgICB9CiB9CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6cmVx
dWVzdFRvSGlkZU1lc3NhZ2UoKQogICAgIH0KIAogICAgIC8vIFdlIG11c3Qgbm90IG1vZGlmeSB0
aGUgRE9NIHRyZWUgaW4gdGhpcyBjb250ZXh0IGJ5IHRoZSBzYW1lIHJlYXNvbiBhcyBzZXRNZXNz
YWdlKCkuCi0gICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFs
aWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOworICAgIG1fdGltZXIgPSBtYWtlVW5p
cXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsK
ICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAppbmRleCBiMTY3Nzg0NDI4YzNiZmU5ZTZmMTZhNzc4NDBkM2YzYmI5NzA1Yjk2Li41M2M5YzU2
NjA0MjdjNDg2ZTMyYWJjMGMyZDY1NGNjYzU2YzAyOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cApAQCAtOTksNyArOTksNyBAQCBzdHJ1Y3QgRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCB7CiAK
ICAgICBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwKQogICAgICAgICA6IGNvbnRleHQoWyZdKEdy
YXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4
dCwgZGlzcGxheUxpc3QsIHN0YXRlLCBjbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0
Q29udGV4dCwgZGlzcGxheUxpc3QsIHN0YXRlLCBjbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAg
ICAgICAgIH0pCiAgICAgewogICAgIH0KQEAgLTIxMTgsNyArMjExOCw3IEBAIEdyYXBoaWNzQ29u
dGV4dCogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQoKSBjb25z
dAogewogICAgIGlmIChVTkxJS0VMWShtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmcpKSB7CiAgICAg
ICAgIGlmICghbV9yZWNvcmRpbmdDb250ZXh0KQotICAgICAgICAgICAgbV9yZWNvcmRpbmdDb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0PihHcmFwaGlj
c0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXNCYXNl
KCkuc2l6ZSgpKSk7CisgICAgICAgICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBtYWtlVW5pcXVl
PERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpKTsKICAgICAgICAg
cmV0dXJuICZtX3JlY29yZGluZ0NvbnRleHQtPmNvbnRleHQ7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmlu
ZGV4IDYzMTE5MTc1NzBmMmRiMjg1OTRjYmIzNDkwMjQ2OTk3YjU4M2ZiZTAuLmNkNDcyMTI2MWIy
ZTAyMmI1NTI1ZGQzZDNjYTU0NjlmOWMwYjNlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMzU5LDcgKzEz
NTksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBl
LCB2YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAgICAgICAgIGlmICghdmFyaWFi
bGUpIHsgXAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91
bmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSAo
Y2FuRW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAogICAgICAg
ICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7IFwKICAg
ICAgICAgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCBlMDZiZjk5ZDU5MTU5NjM5ODBhNjExYzMyYTgzOWUyOTdm
MTI4MDQ1Li5lNWZkZTcwMzM3NDU2YTMxZTE1NzFlZTEwZjNmZDI2NDJkYjAzNmI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTExNiw3ICsxMTYsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2RlZmluZSBFTkFCTEVfSUZf
UkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgY2FuRW5hYmxlKSBcCiAgICAg
aWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgbmFtZUxpdGVyYWwpKSB7IFwKICAgICAg
ICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUp
ID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCisgICAgICAgICAg
ICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxs
cHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAgICAgICAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlz
LCBuYW1lKTsgXAogICAgICAgICB9IFwKQEAgLTEzMiw3ICsxMzIsNyBAQCBXZWJHTEV4dGVuc2lv
biogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1l
KQogICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKLSAgICAgICAg
ICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVFNoYWRl
clRleHR1cmVMT0Q+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVM
T0QgPSBtYWtlVW5pcXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KCp0aGlzKTsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywg
bmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE1OSw3ICsxNTksNyBAQCBXZWJH
TEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKLSAgICAgICAg
ICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRHJhd0J1
ZmZlcnM+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBtYWtl
VW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCBXZWJHTEV4dGVuc2lvbiog
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBudWxscHRyOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7Ci0gICAgICAgICAg
ICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0
YW5jZWRBcnJheXM+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJy
YXlzID0gbWFrZVVuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4oKnRoaXMpOwogICAgICAgICAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlz
LCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAz
ZWNlN2VlYjc0MmZhZGI2ZmUxOGIzM2ViNWE2MTM5Y2VkNDFiYTU2Li5kMTY2ZmIyMzkwNzZkMzYy
NjVkOTZjNjQ1ZjA3MTg3NWFjODJiYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzk5LDggKzc5
OSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRl
eHQoKQogICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgY2FudmFzU2l6ZS53aWR0aCgpLCBj
YW52YXNTaXplLmhlaWdodCgpKTsKICAgICBtX2NvbnRleHQtPnNjaXNzb3IoMCwgMCwgY2FudmFz
U2l6ZS53aWR0aCgpLCBjYW52YXNTaXplLmhlaWdodCgpKTsKIAotICAgIG1fY29udGV4dC0+c2V0
Q29udGV4dExvc3RDYWxsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4
dExvc3RDYWxsYmFjaz4odGhpcykpOwotICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2Fs
bGJhY2soc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VD
YWxsYmFjaz4odGhpcykpOworICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayht
YWtlVW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dExvc3RDYWxsYmFjaz4odGhpcykpOworICAg
IG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRl
cmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjaz4odGhpcykpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MoKQpAQCAtMTU3OSw3ICsxNTc5LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVy
KiBzaGFkZXIpCiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4gc3RhY2tU
cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJy
ZW50U3RhdGUoKSk7CiAKICAgICAgICAgZm9yIChhdXRvJiBlcnJvciA6IGdldFNoYWRlckluZm9M
b2coc2hhZGVyKS5zcGxpdCgnXG4nKSkKLSAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1lbnQoKS5h
ZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3IsIHN0YWNrVHJhY2UuY29weVJlZigpKSk7Cisg
ICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1l
c3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiArIGVycm9yLCBz
dGFja1RyYWNlLmNvcHlSZWYoKSkpOwogICAgIH0KIH0KIApAQCAtNTgwOCw5ICs1ODA4LDkgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRvQ29uc29sZShNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYKICAgICAvLyBFcnJvciBtZXNzYWdlcyBjYW4gb2NjdXIg
ZHVyaW5nIGZ1bmN0aW9uIGNhbGxzLCBzbyBzaG93IHN0YWNrIHRyYWNlcyBmb3IgdGhlbS4KICAg
ICBpZiAobGV2ZWwgPT0gTWVzc2FnZUxldmVsOjpFcnJvcikgewogICAgICAgICBSZWY8SW5zcGVj
dG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlw
dENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpOwotICAgICAgICBjb25zb2xl
TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSwg
V1RGTW92ZShzdGFja1RyYWNlKSk7CisgICAgICAgIGNvbnNvbGVNZXNzYWdlID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1l
c3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5
cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UpOworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSk7CiAKICAgICBhdXRvKiBjYW52YXMg
PSBodG1sQ2FudmFzKCk7CiAgICAgaWYgKGNhbnZhcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAppbmRleCBlODU5MGNjYzY5NzI4YWYzOTMw
MWQzYWU4ZDg5ODhmNWMxNWE0YjJhLi5hZWZlNDU3ZjRlZmYwNDM2NTc2M2NiMjZmNzE3ODQ2M2Uz
MmUxZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2Fk
U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNj
YW5uZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1p
dFJ1bGUoKQogICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFVSTCBi
YXNlRWxlbWVudFVSTDsgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhc3NlZCBpbiBmcm9tIHRo
ZSBIVE1MUHJlbG9hZFNjYW5uZXIgdmlhIHNjYW4oKTogd2l0aG91dCBpdCB3ZSB3aWxsIGdldCBy
ZWxhdGl2ZSBVUkxzIHdyb25nLgogICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJl
IGluY2x1ZGluZyB0aGUgY2hhcnNldCBpbiB0aGUgcHJlbG9hZCByZXF1ZXN0PwotICAgICAgICAg
ICAgbV9yZXF1ZXN0cy0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJj
c3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVT
aGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJl
clBvbGljeTo6RW1wdHlTdHJpbmcpKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZCht
YWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVudFVSTCwgQ2Fj
aGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQsIFN0cmluZygpLCBQcmVsb2FkUmVxdWVz
dDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSk7CiAgICAg
ICAgIH0KICAgICAgICAgbV9zdGF0ZSA9IEluaXRpYWw7CiAgICAgfSBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShydWxlLCAiY2hhcnNldCIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDUxYmFl
NGMyMWNmOTQwZGNkOGM2ZDMyMGJjNGRiZDY2MjZiZTdkOWYuLjlhYzQ0NGVmMGE2NzFmOGE0NzY5
OTU3YWUzMjIyYmQ4ZDEwMDdkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTUwMyw3ICs1MDMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+IEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjppbnNlcnRIVE1MRQogICAgIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZWxlbWVudElu
dGVyZmFjZSA9IG51bGxwdHI7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVI
VE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UodG9rZW4sICZlbGVtZW50SW50
ZXJmYWNlKTsKICAgICBpZiAoVU5MSUtFTFkoZWxlbWVudEludGVyZmFjZSkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPigqZWxl
bWVudEludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBXVEZNb3ZlKHRva2VuLmF0dHJpYnV0ZXMoKSkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0
YT4oKmVsZW1lbnRJbnRlcmZhY2UsIHRva2VuLm5hbWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1
dGVzKCkpKTsKICAgICBhdHRhY2hMYXRlcihjdXJyZW50Tm9kZSgpLCAqZWxlbWVudCk7CiAgICAg
bV9vcGVuRWxlbWVudHMucHVzaChIVE1MU3RhY2tJdGVtOjpjcmVhdGUoZWxlbWVudC5yZWxlYXNl
Tm9uTnVsbCgpLCBXVEZNb3ZlKHRva2VuKSkpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXgg
NGZmNGUyYjg3ODhhOTE5YmY0MmQxN2FkOWZkNjUxYjliMDNhZDE5Yi4uZGQ5ZWEwNGM2ZjUwMGM4
NjRiOGM5NGMxOTM4Mzc4NzdhZmZkZTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgSFRNTERv
Y3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fb3B0aW9u
cyhkb2N1bWVudCkKICAgICAsIG1fdG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1fc2NyaXB0
UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFNjcmlwdFJ1bm5lcj4oZG9jdW1lbnQsIHN0YXRp
Y19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0Jj4oKnRoaXMpKSkKLSAgICAsIG1fdHJlZUJ1aWxk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBkb2N1bWVudCwgcGFy
c2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQotICAgICwgbV9wYXJzZXJTY2hlZHVsZXIo
c3RkOjptYWtlX3VuaXF1ZTxIVE1MUGFyc2VyU2NoZWR1bGVyPigqdGhpcykpCisgICAgLCBtX3Nj
cmlwdFJ1bm5lcihtYWtlVW5pcXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBzdGF0aWNf
Y2FzdDxIVE1MU2NyaXB0UnVubmVySG9zdCY+KCp0aGlzKSkpCisgICAgLCBtX3RyZWVCdWlsZGVy
KG1ha2VVbmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQsIHBhcnNlckNvbnRl
bnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKG1ha2VVbmlx
dWU8SFRNTFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQogICAgICwgbV94c3NBdWRpdG9yRGVsZWdh
dGUoZG9jdW1lbnQpCi0gICAgLCBtX3ByZWxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxSZXNv
dXJjZVByZWxvYWRlcj4oZG9jdW1lbnQpKQorICAgICwgbV9wcmVsb2FkZXIobWFrZVVuaXF1ZTxI
VE1MUmVzb3VyY2VQcmVsb2FkZXI+KGRvY3VtZW50KSkKIHsKIH0KIApAQCAtNzAsNyArNzAsNyBA
QCBpbmxpbmUgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRG
cmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbgogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KGZyYWdtZW50LmRvY3VtZW50KCksIHJhd1BvbGljeSkKICAgICAsIG1fb3B0aW9ucyhmcmFnbWVu
dC5kb2N1bWVudCgpKQogICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zKQotICAgICwgbV90cmVl
QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGZyYWdtZW50
LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQorICAg
ICwgbV90cmVlQnVpbGRlcihtYWtlVW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGZyYWdt
ZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQog
ICAgICwgbV94c3NBdWRpdG9yRGVsZWdhdGUoZnJhZ21lbnQuZG9jdW1lbnQoKSkKIHsKICAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJz
aW5nLWh0bWwtZnJhZ21lbnRzCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgaWYgKGlzV2Fp
dGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICBBU1NFUlQobV90b2tlbml6ZXIuaXNJbkRhdGFT
dGF0ZSgpKTsKICAgICAgICAgaWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7Ci0gICAgICAgICAgICBt
X3ByZWxvYWRTY2FubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1f
b3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9y
KCkpOworICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9IG1ha2VVbmlxdWU8SFRNTFByZWxv
YWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPmFwcGVuZFRv
RW5kKG1faW5wdXQuY3VycmVudCgpKTsKICAgICAgICAgfQogICAgICAgICBtX3ByZWxvYWRTY2Fu
bmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkpOwpAQCAtMzc0LDcgKzM3NCw3IEBA
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYgc291cmNl
KQogICAgICAgICAvLyBDaGVjayB0aGUgZG9jdW1lbnQud3JpdGUoKSBvdXRwdXQgd2l0aCBhIHNl
cGFyYXRlIHByZWxvYWQgc2Nhbm5lciBhcwogICAgICAgICAvLyB0aGUgbWFpbiBzY2FubmVyIGNh
bid0IGRlYWwgd2l0aCBpbnNlcnRpb25zLgogICAgICAgICBpZiAoIW1faW5zZXJ0aW9uUHJlbG9h
ZFNjYW5uZXIpCi0gICAgICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJs
KCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgbV9pbnNl
cnRpb25QcmVsb2FkU2Nhbm5lciA9IG1ha2VVbmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29w
dGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQoc291cmNl
KTsKICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lci0+c2NhbigqbV9wcmVsb2FkZXIs
ICpkb2N1bWVudCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxFbGVtZW50U3RhY2suY3BwCmluZGV4IDMwYzViNDZkZjEwM2RiZGY2ZjRiN2NlNDA5Y2MzYWEx
NmM1NDYwMTIuLjZlZjE3MTJiOWQ2M2I3MWFjYjdjMTY5ZjYyYjQ5YzgyZjMxMDU4MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCkBAIC0z
MzksNyArMzM5LDcgQEAgdm9pZCBIVE1MRWxlbWVudFN0YWNrOjppbnNlcnRBYm92ZShSZWY8SFRN
TFN0YWNrSXRlbT4mJiBpdGVtLCBFbGVtZW50UmVjb3JkJiByZWMKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICsrbV9zdGFja0RlcHRoOwotICAgICAgICByZWNvcmRBYm92ZS0+c2V0
TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIHJlY29y
ZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSk7CisgICAgICAgIHJlY29yZEFib3ZlLT5zZXROZXh0KG1h
a2VVbmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgcmVjb3JkQWJvdmUtPnJlbGVh
c2VOZXh0KCkpKTsKICAgICAgICAgcmVjb3JkQWJvdmUtPm5leHQoKS0+ZWxlbWVudCgpLmJlZ2lu
UGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MzMsNyArNTMz
LDcgQEAgdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwdXNoQ29tbW9uKFJlZjxIVE1MU3RhY2tJdGVt
PiYmIGl0ZW0pCiAgICAgQVNTRVJUKG1fcm9vdE5vZGUpOwogCiAgICAgKyttX3N0YWNrRGVwdGg7
Ci0gICAgbV90b3AgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRl
bSksIFdURk1vdmUobV90b3ApKTsKKyAgICBtX3RvcCA9IG1ha2VVbmlxdWU8RWxlbWVudFJlY29y
ZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShtX3RvcCkpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50
U3RhY2s6OnBvcENvbW1vbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFByZWxvYWRTY2FubmVyLmNwcAppbmRleCA1M2ExNzJkMzNhZmNkYThmZjg4ZDM0NGQ5YzBlZjA5
MDNjZGVjYzkyLi4zM2Q3YjNiYjA4YjY1MmQwY2Q2OWJjZWRmMWY4NjA2MzFhZmFhMTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAK
QEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1Nj
YW5uZXIgewogICAgICAgICBpZiAoIUxpbmtMb2FkZXI6OmlzU3VwcG9ydGVkVHlwZSh0eXBlLnZh
bHVlKCksIG1fdHlwZUF0dHJpYnV0ZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgICAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0Pihp
bml0aWF0b3JGb3IobV90YWdJZCksIG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCB0eXBl
LnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1dGUsIG1fbW9kdWxlU2NyaXB0LCBtX3JlZmVycmVyUG9s
aWN5KTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVzdD4o
aW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwgdHlw
ZS52YWx1ZSgpLCBtX21lZGlhQXR0cmlidXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJlclBv
bGljeSk7CiAgICAgICAgIHJlcXVlc3QtPnNldENyb3NzT3JpZ2luTW9kZShtX2Nyb3NzT3JpZ2lu
TW9kZSk7CiAgICAgICAgIHJlcXVlc3QtPnNldE5vbmNlKG1fbm9uY2VBdHRyaWJ1dGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IGY3MWIyMWQyNzg5NWU1Nzhh
YjQ3ZjVjZjU0MDI1ODNlMzYxMjFkMDIuLjNmNzQ2ZGM2ZDY2N2M0MzcxMWI2OGQwOWI0MjAyZDIz
ZmYwYzA4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0yMDks
NyArMjA5LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUoKQogewogICAg
IEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CiAgICAgbV90eXBlID0gRE9DVFlQRTsK
LSAgICBtX2RvY3R5cGVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N0eXBlRGF0YT4oKTsKKyAg
ICBtX2RvY3R5cGVEYXRhID0gbWFrZVVuaXF1ZTxEb2N0eXBlRGF0YT4oKTsKIH0KIAogaW5saW5l
IHZvaWQgSFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBhYzZlNzk0NDMwMDcwMzY0MjFl
YjE2ZGY4M2E5MGQzZDI3NzJmODU2Li4wNjFkOTU2N2I3ODRkOWIwYmFjZjNmNmRiOWNkZTVhODA2
YjAxYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAt
Mzc2LDcgKzM3Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxYU1NJbmZvPiBYU1NBdWRpdG9yOjpmaWx0
ZXJUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UgPSBtX3hzc1Byb3RlY3Rpb24g
PT0gWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uOjpCbG9ja0VuYWJsZWQ7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8WFNTSW5mbz4obV9kb2N1bWVudFVSTCwgZGlkQmxvY2tFbnRpcmVQYWdl
LCBtX2RpZFNlbmRWYWxpZFhTU1Byb3RlY3Rpb25IZWFkZXIpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFhTU0luZm8+KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSwgbV9kaWRTZW5k
VmFsaWRYU1NQcm90ZWN0aW9uSGVhZGVyKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJT
dGFydFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTcxMiw3ICs3
MTIsNyBAQCBTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+KiBYU1NBdWRpdG9yOjpkZWNvZGVkSFRU
UEJvZHlTdWZmaXhUcmVlKCkKICAgICBjb25zdCB1bnNpZ25lZCBzdWZmaXhUcmVlRGVwdGggPSA1
OwogCiAgICAgaWYgKCFtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUgJiYgbV9kZWNvZGVkSFRU
UEJvZHkubGVuZ3RoKCkgPj0gbWluaW11bUxlbmd0aEZvclN1ZmZpeFRyZWUpCi0gICAgICAgIG1f
ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VmZml4VHJlZTxB
U0NJSUNvZGVib29rPj4obV9kZWNvZGVkSFRUUEJvZHksIHN1ZmZpeFRyZWVEZXB0aCk7CisgICAg
ICAgIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSA9IG1ha2VVbmlxdWU8U3VmZml4VHJlZTxB
U0NJSUNvZGVib29rPj4obV9kZWNvZGVkSFRUUEJvZHksIHN1ZmZpeFRyZWVEZXB0aCk7CiAgICAg
cmV0dXJuIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHAKaW5kZXggM2E2MzdkYWVmMDEyNGUyZTRlZDMzNmI2NjM3NTJkMDAyMmI1YmUwMS4uZDU2NmJj
Yzc5NGFhNzI0YWJlNjBhMDgwYTNmMmNmOTUxZjQ1MzdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0x
NzQsNyArMTc0LDcgQEAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiBUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ6OnJlbmRlcmVyKCkgY29uc3QKIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4g
VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1
dG8gc3R5bGUgPSBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hv
c3QoKSkuY3JlYXRlSW5uZXJUZXh0U3R5bGUoKnNoYWRvd0hvc3RTdHlsZSk7Ci0gICAgcmV0dXJu
IEVsZW1lbnRTdHlsZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxl
KSkpOworICAgIHJldHVybiBFbGVtZW50U3R5bGUobWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oV1RG
TW92ZShzdHlsZSkpKTsKIH0KIAogLy8gTUFSSzogVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1l
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0
VHJhY2suY3BwCmluZGV4IGU0MDIwMGE5YTdhMjI1ZGRmZDg3NDRkOGM5M2JkZTY5MDk2NDcwMDku
LjQ5MzRkNzI5YzE5OGQwODA1OWFjOGM5ZjBiMTc0YTk1ZTc2ZjcyZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAt
MTc0LDcgKzE3NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6
OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmIGN1ZSkKIFdlYlZUVFBhcnNlciYgSW5iYW5kR2VuZXJp
Y1RleHRUcmFjazo6cGFyc2VyKCkKIHsKICAgICBpZiAoIW1fd2ViVlRUUGFyc2VyKQotICAgICAg
ICBtX3dlYlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNf
Y2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3Rh
dGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAgICAgcmV0dXJuICptX3dlYlZUVFBhcnNlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCmluZGV4IDg1NWJi
MjM5MjdlYjEwYTM1YTU5ZDEyYmUwZDIzNWE3M2NhYmMxMGUuLjEwZmFhMTJmOTBiNDYwYjUwNTZm
MjU2N2NjMmQ5ODEyN2Q4ZmFhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjp+SW5iYW5kV2ViVlRUVGV4dFRyYWNrKCkgPSBkZWZhdWx0OwogV2ViVlRU
UGFyc2VyJiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlcigpCiB7CiAgICAgaWYgKCFtX3dl
YlZUVFBhcnNlcikKLSAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fd2ViVlRUUGFyc2VyID0gbWFrZVVuaXF1
ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiAqbV93ZWJWVFRQYXJzZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAK
aW5kZXggOGYyOWM3ZjE2NzlhMGZhMjkxOGRlY2ZhNTEzZTJkODAyNzFhMzVlMi4uN2ExZTFiYzQ2
OTFiMjExNjg4YzNjZjVkYTYxOWFjNjFkYmQ2ZmUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBM
b2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQoKQogICAgIC8vIDQuIERvd25sb2FkOiBJ
ZiBVUkwgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcsIHBlcmZvcm0gYSBwb3RlbnRpYWxseSBDT1JT
LWVuYWJsZWQgZmV0Y2ggb2YgVVJMLCB3aXRoIHRoZQogICAgIC8vIG1vZGUgYmVpbmcgdGhlIHN0
YXRlIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgY3Jvc3NvcmlnaW4gY29udGVudCBhdHRyaWJ1dGUs
IHRoZSBvcmlnaW4gYmVpbmcgdGhlCiAgICAgLy8gb3JpZ2luIG9mIHRoZSBtZWRpYSBlbGVtZW50
J3MgRG9jdW1lbnQsIGFuZCB0aGUgZGVmYXVsdCBvcmlnaW4gYmVoYXZpb3VyIHNldCB0byBmYWls
LgotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0VHJhY2tMb2FkZXI+KHN0YXRp
Y19jYXN0PFRleHRUcmFja0xvYWRlckNsaWVudCY+KCp0aGlzKSwgc3RhdGljX2Nhc3Q8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCo+KCZtX3RyYWNrRWxlbWVudC0+ZG9jdW1lbnQoKSkpOworICAgIG1f
bG9hZGVyID0gbWFrZVVuaXF1ZTxUZXh0VHJhY2tMb2FkZXI+KHN0YXRpY19jYXN0PFRleHRUcmFj
a0xvYWRlckNsaWVudCY+KCp0aGlzKSwgc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCo+KCZtX3RyYWNrRWxlbWVudC0+ZG9jdW1lbnQoKSkpOwogICAgIGlmICghbV9sb2FkZXItPmxv
YWQobV91cmwsICptX3RyYWNrRWxlbWVudCkpCiAgICAgICAgIG1fdHJhY2tFbGVtZW50LT5kaWRD
b21wbGV0ZUxvYWQoSFRNTFRyYWNrRWxlbWVudDo6RmFpbHVyZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmluZGV4IDAzMTA4MGUxYWI2
NmQzMmNjOWMwNzE3OGYwMmY5MzUyM2JjNzA2YjAuLjkwMjliOTJkOGI4M2YyZDdiZWQ2ZDhlNTQ1
NzZjMGExNjhjYTUyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSUhvc3QuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlZjxDb21tYW5kTGluZUFQSUhvc3Q+
IENvbW1hbmRMaW5lQVBJSG9zdDo6Y3JlYXRlKCkKIH0KIAogQ29tbWFuZExpbmVBUElIb3N0OjpD
b21tYW5kTGluZUFQSUhvc3QoKQotICAgIDogbV9pbnNwZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKSkKKyAgICA6IG1faW5zcGVjdGVkT2JqZWN0KG1ha2VV
bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCkpCiB7CiB9CiAKQEAgLTE5Niw3ICsxOTYsNyBAQCBK
U1ZhbHVlIENvbW1hbmRMaW5lQVBJSG9zdDo6d3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogdm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6OmNsZWFyQWxs
V3JhcHBlcnMoKQogewogICAgIG1fd3JhcHBlcnMuY2xlYXJBbGxXcmFwcGVycygpOwotICAgIG1f
aW5zcGVjdGVkT2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKTsK
KyAgICBtX2luc3BlY3RlZE9iamVjdCA9IG1ha2VVbmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVk
aXRvci5jcHAKaW5kZXggNmMzMWU0OThlNDM0ZDMwMGIwZjFjNmVhYjg0MzQ2Nzc2Y2YwYTJmYy4u
ODM4OTA4ZGM5MzZlZmE2YmEyNmM3OTE2NzE0NGRiN2RlOWUyYWUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgRE9NRWRpdG9y
OjpJbnNlcnRCZWZvcmVBY3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0
aW9uIHsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwZXJmb3JtKCkgZmluYWwKICAgICB7CiAgICAg
ICAgIGlmIChtX25vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgbV9yZW1vdmVDaGls
ZEFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KCptX25vZGUtPnBh
cmVudE5vZGUoKSwgbV9ub2RlKTsKKyAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBt
YWtlVW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9k
ZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVtb3ZlQ2hpbGRBY3Rpb24tPnBlcmZv
cm0oKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CkBAIC0zODUsMjcgKzM4NSwy
NyBAQCBET01FZGl0b3I6On5ET01FZGl0b3IoKSA9IGRlZmF1bHQ7CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IERPTUVkaXRvcjo6aW5zZXJ0QmVmb3JlKE5vZGUmIHBhcmVudE5vZGUsIFJlZjxOb2RlPiYm
IG5vZGUsIE5vZGUqIGFuY2hvck5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3Jt
KHN0ZDo6bWFrZV91bmlxdWU8SW5zZXJ0QmVmb3JlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3Zl
KG5vZGUpLCBhbmNob3JOb2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VV
bmlxdWU8SW5zZXJ0QmVmb3JlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5vZGUpLCBhbmNo
b3JOb2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQo
Tm9kZSYgcGFyZW50Tm9kZSwgTm9kZSYgbm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBl
cmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwgbm9k
ZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlbW92ZUNoaWxk
QWN0aW9uPihwYXJlbnROb2RlLCBub2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVk
aXRvcjo6c2V0QXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3Rk
OjptYWtlX3VuaXF1ZTxTZXRBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7
CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0QXR0cmlidXRlQWN0
aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01F
ZGl0b3I6OnJlbW92ZUF0dHJpYnV0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVt
b3ZlQXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lKSk7CisgICAgcmV0dXJuIG1faGlzdG9y
eS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVtb3ZlQXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1l
KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUm
IG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSomIG5ld05vZGUpCiB7Ci0gICAgYXV0byBh
Y3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNldE91dGVySFRNTEFjdGlvbj4obm9kZSwgaHRtbCk7
CisgICAgYXV0byBhY3Rpb24gPSBtYWtlVW5pcXVlPFNldE91dGVySFRNTEFjdGlvbj4obm9kZSwg
aHRtbCk7CiAgICAgYXV0byYgcmF3QWN0aW9uID0gKmFjdGlvbjsKICAgICBhdXRvIHJlc3VsdCA9
IG1faGlzdG9yeS5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgaWYgKCFyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCkBAIC00MTUsMjIgKzQxNSwyMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01F
ZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUq
JgogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRNTChFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwpCiB7
Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8SW5zZXJ0QWRq
YWNlbnRIVE1MQWN0aW9uPihlbGVtZW50LCB3aGVyZSwgaHRtbCkpOworICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlvbj4oZWxlbWVu
dCwgd2hlcmUsIGh0bWwpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZXBs
YWNlV2hvbGVUZXh0KFRleHQmIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAg
cmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZVdob2xlVGV4
dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0o
bWFrZVVuaXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlcGxhY2VDaGlsZChOb2RlJiBwYXJlbnRO
b2RlLCBSZWY8Tm9kZT4mJiBuZXdOb2RlLCBOb2RlJiBvbGROb2RlKQogewotICAgIHJldHVybiBt
X2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+
KHBhcmVudE5vZGUsIFdURk1vdmUobmV3Tm9kZSksIG9sZE5vZGUpKTsKKyAgICByZXR1cm4gbV9o
aXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0aW9uPihwYXJlbnRO
b2RlLCBXVEZNb3ZlKG5ld05vZGUpLCBvbGROb2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IERPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0Tm9k
ZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9y
bShtYWtlVW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwgdmFsdWUpKTsKIH0KIAogc3Rh
dGljIGJvb2wgcG9wdWxhdGVFcnJvclN0cmluZyhFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCwg
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcAppbmRleCAyMGRhMzQzMGMxNWM4NTUxNDg1YzU3MzhjNTQ3ZmEwYzM0
MzFhMWJhLi4yZTlkNzU1NjU1YzgzZWY4ODE1OTZhYWQyMGM5NmUxMGU2ODgyNmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtNDAyLDcgKzQw
Miw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZ1RvU0hBMShTSEExJiBzaGExLCBjb25zdCBTdHJp
bmcmIHN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRyPERPTVBhdGNoU3VwcG9ydDo6RGlnZXN0PiBE
T01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChOb2RlJiBub2RlLCBVbnVzZWROb2Rlc01hcCog
dW51c2VkTm9kZXNNYXApCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERp
Z2VzdD4oKTsKKyAgICBhdXRvIGRpZ2VzdCA9IG1ha2VVbmlxdWU8RGlnZXN0PigpOwogICAgIGRp
Z2VzdC0+bm9kZSA9ICZub2RlOwogICAgIFNIQTEgc2hhMTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDUyMDM3MDZiNTNiMzJi
MGJhNGYwZWQ0ZDRiYTQwMGI2Yzc5YjVlMTUuLjYzZmYzYWI2MjNhNDQ2Y2Q2MjBlZTQ3ZTM5MjA1
NWNlYTUxYTg3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBh
Z2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDogbV9pbnN0cnVtZW50
aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFu
YWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+
KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRl
bmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigp
KSkKLSAgICAsIG1fb3ZlcmxheShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBh
Z2UsIGluc3BlY3RvckNsaWVudCkpCisgICAgLCBtX292ZXJsYXkobWFrZVVuaXF1ZTxJbnNwZWN0
b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQogICAgICwgbV9leGVjdXRpb25TdG9w
d2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIocGFn
ZSkKICAgICAsIG1fcGFnZShwYWdlKQpAQCAtMTA2LDcgKzEwNiw3IEBAIEluc3BlY3RvckNvbnRy
b2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBp
bnNwZWN0b3JDCiAKICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwog
Ci0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQWdl
bnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8UGFn
ZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+
c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBw
ZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9CkBAIC0xNTMsMzcgKzE1MywzNyBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogICAgIGVuc3VyZUluc3Bl
Y3RvckFnZW50KCk7CiAgICAgZW5zdXJlUGFnZUFnZW50KCk7CiAKLSAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCkpOworICAg
IG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CiAKLSAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1
Z2dlckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gbWFrZVVu
aXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIGF1dG8gZGVidWdnZXJB
Z2VudFB0ciA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1v
dmUoZGVidWdnZXJBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBt
X2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdlQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdl
Q29udGV4dCkpOwogICAgIGVuc3VyZURPTUFnZW50KCk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIGRl
YnVnZ2VyQWdlbnRQdHIpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2Vu
dHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
V29ya2VyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIGRlYnVnZ2VyQWdlbnRQdHIpKTsKKyAgICBtX2Fn
ZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8SW5zcGVjdG9yV29ya2VyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PihwYWdlQ29udGV4dCkpOwor
ICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+KHBhZ2VDb250
ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYKIAotICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJB
Z2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4o
cGFnZUNvbnRleHQpOworICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VVbmlx
dWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChzY3JpcHRQ
cm9maWxlckFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShzY3Jp
cHRQcm9maWxlckFnZW50UHRyKSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCi0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2Vu
dD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCkpOworICAg
IG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rvck1lbW9yeUFnZW50PihwYWdlQ29u
dGV4dCkpOwogI2VuZGlmCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDYW52YXNBZ2VudD4ocGFnZUNvbnRleHQpKTsK
LSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFn
ZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VI
ZWFwQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8
UGFnZUF1ZGl0QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VV
bmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMu
YXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQpKTsK
IAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFu
YWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpCiAgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+
aW5pdChtX2luc3RydW1lbnRpbmdBZ2VudHMuY29weVJlZigpKTsKQEAgLTQyMSw3ICs0MjEsNyBA
QCBJbnNwZWN0b3JBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdl
bnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VD
b250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4ocGFnZUNvbnRleHQpOworICAgICAg
ICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JBZ2VudD4ocGFnZUNv
bnRleHQpOwogICAgICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7
CiAgICAgICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQWdlbnQobV9pbnNw
ZWN0b3JBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFn
ZW50KSk7CkBAIC00MzMsNyArNDMzLDcgQEAgSW5zcGVjdG9yRE9NQWdlbnQmIEluc3BlY3RvckNv
bnRyb2xsZXI6OmVuc3VyZURPTUFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yRE9NQWdl
bnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKLSAg
ICAgICAgYXV0byBkb21BZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+
KHBhZ2VDb250ZXh0LCBtX292ZXJsYXkuZ2V0KCkpOworICAgICAgICBhdXRvIGRvbUFnZW50ID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIG1fb3ZlcmxheS5nZXQo
KSk7CiAgICAgICAgIG1faW5zcGVjdG9yRE9NQWdlbnQgPSBkb21BZ2VudC5nZXQoKTsKICAgICAg
ICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZG9tQWdlbnQpKTsKICAgICB9CkBAIC00NDQsNyAr
NDQ0LDcgQEAgSW5zcGVjdG9yUGFnZUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVQ
YWdlQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlQWdlbnQpIHsKICAgICAgICAg
YXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBwYWdl
QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQs
IG1faW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOworICAgICAgICBhdXRvIHBhZ2VB
Z2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwgbV9pbnNw
ZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAgICAgIG1faW5zcGVjdG9yUGFnZUFn
ZW50ID0gcGFnZUFnZW50LmdldCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShw
YWdlQWdlbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCAyOGVlNzI3YTM2ZDY2Y2UyMTA5
Njk3ODMxYWUwYThhYWM0MjM4NTc1Li42YzFiNTFhZGVlOWEzODQyNjMzMzhmNDVkODg4NGE2ZDlj
MzdlYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbCA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU2V0dGluZ3MgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIFNldHRpbmdzKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIH5T
ZXR0aW5ncygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JIaXN0b3J5LmNwcAppbmRleCAwMGQ1ZjE4NTJjZWJhMjcwYzNhZjgxYzEzMjA5MDA1ZGE3YjEx
OGE4Li5jODEwM2RkN2RiYjgzMjBlYWIyZTZhZDVlMzJjMmQ1MmQ3MmIwNjNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oc3RkOjp1bmlx
dWVfcHRyPEFjdGlvbj4gYWN0aW9uKQogCiB2b2lkIEluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRv
YWJsZVN0YXRlKCkKIHsKLSAgICBwZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8VW5kb2FibGVTdGF0
ZU1hcms+KCkpOworICAgIHBlcmZvcm0obWFrZVVuaXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rvckhpc3Rvcnk6OnVuZG8oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGNh
MzBlMWEyN2JmNDA2MTg1YTQ4MzIwYTI2MzE4M2VhN2U2ZTQ3ZTMuLjIyOWM5OGE0NDdkMjIyNDhk
ZGVmM2JhMzRiMzdjNWM0YzA0NzU5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFBhcnNl
ZFN0eWxlU2hlZXQ6OnNldFNvdXJjZURhdGEoc3RkOjp1bmlxdWVfcHRyPFJ1bGVTb3VyY2VEYXRh
TGlzdD4gc291cmNlRAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zb3VyY2VEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CisgICAgbV9zb3VyY2VE
YXRhID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAKICAgICAvLyBGSVhNRTog
VGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiB0byByZXRhaW4gdGhlIG9yaWdpbmFsIGZsYXQg
c291cmNlRGF0YSBzdHJ1Y3R1cmUKICAgICAvLyBjb250YWluaW5nIG9ubHkgc3R5bGUgcnVsZXMs
IGV2ZW4gdGhvdWdoIENTU1BhcnNlciBub3cgcHJvdmlkZXMgdGhlIGZ1bGwgcnVsZSBzb3VyY2Ug
ZGF0YSB0cmVlLgpAQCAtMTMzNCw3ICsxMzM0LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0
OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBu
ZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKLSAgICBhdXRvIHJ1
bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+
KCk7CisgICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9IG1ha2VVbmlxdWU8UnVsZVNvdXJj
ZURhdGFMaXN0PigpOwogICAgIAogICAgIENTU1BhcnNlckNvbnRleHQgY29udGV4dChwYXJzZXJD
b250ZXh0Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpKSk7CiAg
ICAgU3R5bGVTaGVldEhhbmRsZXIgaGFuZGxlcihtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwg
bV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpLCBydWxlU291cmNlRGF0YVJlc3VsdC5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcAppbmRleCBkM2I3NTlmMjljY2YxYWUxODAyODBkNWUxNzM2NzBkMjljNGY4Y2MxLi5m
ZDdjYWQzMDc2N2U3NzViMTY3NWVjNDU0ZWY3YTA4YmIwMzZkNThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEzNiw3ICsx
MzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZwogewogICAgIGVuc3VyZU5vRGF0YUZvclJl
cXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0byByZXNvdXJjZURhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAgYXV0byByZXNv
dXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7
CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5cGUpOwogICAgIG1fcmVxdWVzdElkVG9SZXNv
dXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RGTW92ZShyZXNvdXJjZURhdGEpKTsKIH0KQEAg
LTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0
ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZwogewogICAgIGVuc3VyZU5v
RGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0byByZXNvdXJjZURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAg
YXV0byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBs
b2FkZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRDYWNoZWRSZXNvdXJjZSgmY2FjaGVkUmVz
b3VyY2UpOwogICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwg
V1RGTW92ZShyZXNvdXJjZURhdGEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA0MzUxZTg3MmE5ZTVh
MzY0NzI5ZjViNGZiMjYyMTZjNzMzMDJjOGRkLi4zNjRhZWE3ZDRiNWQ5MTE3OTMyNzVkNjQ2ZjI5
NWU2N2JmMGVlZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAg
IDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhp
cykpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYklu
amVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRl
KCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkK
ICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRS
b3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6
Y3JlYXRlKCkpCkBAIC02OSw3ICs2OSw3IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsCiAKICAg
ICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8g
Y29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KHdvcmtl
ckNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25z
b2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0aW9u
U3RvcHdhdGNoLT5yZXNldCgpOwogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwog
Ci0gICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVG9QYWdl
RnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2ZvcndhcmRpbmdD
aGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2Vy
R2xvYmFsU2NvcGUpOwogICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZCgqbV9m
b3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5n
ZXQoKSk7CiB9CkBAIC0xNjQsMTggKzE2NCwxOCBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRy
b2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogCiAgICAgYXV0byB3b3JrZXJDb250ZXh0ID0gd29y
a2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQobWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPihtX3dvcmtlckdsb2JhbFNjb3BlKSkgewotICAgICAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICAg
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmV0d29ya0FnZW50Pih3
b3JrZXJDb250ZXh0KSk7CisgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFNlcnZp
Y2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgICAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKICAgICB9CiAj
ZW5kaWYKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdlYkhlYXBBZ2Vu
dD4od29ya2VyQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJBdWRpdEFnZW50Pih3b3JrZXJDb250ZXh0KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJDb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4o
d29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlckF1
ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQ
SUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpCiAg
ICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+aW5pdChtX2luc3RydW1lbnRpbmdBZ2VudHMuY29w
eVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhOGQzYzg5
OWMzMjgwYTI4ZTY3MzJjZjg4YWI4NGQwMDBkNDVlZDJkLi5mZGYwNDRjNTc5YjM2OGMzMjA1MWI2
NWRjNDQwZTM4N2Y2MDE4ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3Bw
CkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KFBh
Z2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkFwcGxp
Y2F0aW9uQ2FjaGUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5p
bnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggY2Y5NGNhODA5
NmZmNTcxZDc0ZDc3M2IxZjAwMjc1MDU0YzBjZTFmOS4uMTE2MjRlMjQwOTQ2NGZjMWUxZTY1YTY5
OThkYmQxYjA2ODJmMGIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNQVVByb2ZpbGVy
QWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ1BVUHJvZmlsZXIiX3MsIGNvbnRleHQpCi0g
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q1BV
UHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNQVVByb2ZpbGVy
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpDUFVQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmlu
ZGV4IDRiNjk5NDVlYzcwNjdmOTY0M2U0ODA3MzAzNDg0MjY4NmQ2MTlmYjguLjQ0ZTljNWFiZWI0
Yzk2NmFiYWVhOTQ0YTQwZDVlMDNkNDcyZDExZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0yOTcsNyArMjk3
LDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NT
UnVsZSYgcnVsZSkKIAogSW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KFdlYkFn
ZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ1NTIl9zLCBj
b250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDU1NG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDU1NCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpA
QCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRU
ZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZv
cm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5
bGVTaGVldCwgdGV4dCkpOworICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+
cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHls
ZVNoZWV0LCB0ZXh0KSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
ZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhyZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpKTsKIH0KQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09O
OjpPYmplYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZXJmb3JtUmVzdWx0
ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxl
VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkpOworICAg
IGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVu
aXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQs
IHRleHQpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAg
ICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1S
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjcwLDcgKzY3
MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0
ZDo6bWFrZV91bmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0
LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFn
ZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+
KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7CiAgICAgaWYgKHBl
cmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNw
ZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBzdHlsZVNoZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhY3Rpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVj
dG9yKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VVbmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVj
dG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOwogICAgIGF1dG8mIHJhd0FjdGlvbiA9ICphY3Rpb247
CiAgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShX
VEZNb3ZlKGFjdGlvbikpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCmluZGV4IDliZTA2MTE5ZmIzMjE5NzAwNzI5NzIyZDgzNmE4MTZiMjVm
MWMwMTUuLjBlNTBjNzViYTQ4NzUxNTU2ZTQxMmRjYjk3YWQxOTY2OTY1YTk5OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChQYWdlQWdlbnRDb250
ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDYW52YXMiX3MsIGNvbnRl
eHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNhbnZhc0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29u
dGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBJbnNwZWN0
b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQm
IGNhbnZhc1JlbmQKICAgICBpZiAoIWluc3BlY3RvckNhbnZhcy0+Y3VycmVudEZyYW1lSGFzRGF0
YSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gaW5zcGVj
dG9yQ2FudmFzLT5jb250ZXh0KCkuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkgewogICAgICAgICAgICAgYXV0byYgcXVldWUgPSBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVh
ZFF1ZXVlKCk7Ci0gICAgICAgICAgICBxdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBY3Rp
dmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBb
JiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0gaW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKV0g
eworICAgICAgICAgICAgcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgWyYsIHByb3RlY3RlZElu
c3BlY3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCldIHsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IHByb3RlY3RlZEluc3BlY3RvckNhbnZhcy0+
Y2FudmFzRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXNFbGVtZW50
LT5pc0Rlc2NlbmRhbnRPZihjYW52YXNFbGVtZW50LT5kb2N1bWVudCgpKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNmMxOTZlMGNjNjgyYjQ0MjU2Yzdk
ZGFhZTA5MGFhMGFhZDU1MzE3ZC4uZjBhMjhjMTMzMWM1YmIzMDg4ZDUzZTcyNDNkYmFmNGVlYjYz
ZTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRE9N
QWdlbnQ6OnRvRXJyb3JTdHJpbmcoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogSW5zcGVjdG9yRE9N
QWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3Bl
Y3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRPTSJfcywg
Y29udGV4dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RE9N
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNv
bnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQpAQCAtMzAxLDgg
KzMwMSw4IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAg
IG1faGlzdG9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsKLSAgICBt
X2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPigqbV9oaXN0b3J5KTsKKyAg
ICBtX2hpc3RvcnkgPSBtYWtlVW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CisgICAgbV9kb21F
ZGl0b3IgPSBtYWtlVW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7CiAKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NQWdlbnQodGhpcyk7CiAgICAgbV9kb2N1bWVu
dCA9IG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwpAQCAtNjUzLDcgKzY1
Myw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2Rl
KiBub2RlVG9QdXNoKQogICAgICAgICBOb2RlKiBwYXJlbnQgPSBpbm5lclBhcmVudE5vZGUobm9k
ZSk7CiAgICAgICAgIGlmICghcGFyZW50KSB7CiAgICAgICAgICAgICAvLyBOb2RlIGJlaW5nIHB1
c2hlZCBpcyBkZXRhY2hlZCAtPiBwdXNoIHN1YnRyZWUgcm9vdC4KLSAgICAgICAgICAgIGF1dG8g
bmV3TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKKyAgICAgICAgICAgIGF1
dG8gbmV3TWFwID0gbWFrZVVuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKICAgICAgICAgICAgIGRhbmds
aW5nTWFwID0gbmV3TWFwLmdldCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFw
cy5hcHBlbmQobmV3TWFwLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBhdXRvIGNoaWxkcmVuID0g
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsK
QEAgLTExNzcsNyArMTE3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25maWc+IElu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjpt
YWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgYXV0byBoaWdobGlnaHRDb25maWcg
PSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICBib29sIHNob3dJbmZvID0gZmFs
c2U7IC8vIERlZmF1bHQ6IGZhbHNlIChkbyBub3Qgc2hvdyBhIHRvb2x0aXApLgogICAgIGhpZ2hs
aWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbigic2hvd0luZm8iLCBzaG93SW5mbyk7CiAg
ICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHNob3dJbmZvOwpAQCAtMTE5NiwxMyArMTE5
NiwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCog
b3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0
byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0KSk7CisgICAgYXV0byBxdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgaW5uZXJIaWdobGlnaHRRdWFkKFdURk1v
dmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYgcXVhZEFycmF5LCBjb25zdCBKU09OOjpPYmplY3Qq
IGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNl
UGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRRdWFkPigpOworICAgIGF1dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigpOwogICAg
IGlmICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVhZC5nZXQoKSkpIHsKICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiSW52YWxpZCBRdWFkIGZvcm1hdCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtMTIx
Miw3ICsxMjEyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OkFycmEKIAogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1
YWQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGlu
ZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBoaWdo
bGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICBh
dXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAg
IGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAgIGhpZ2hs
aWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CiAg
ICAgaGlnaGxpZ2h0Q29uZmlnLT51c2VQYWdlQ29vcmRpbmF0ZXMgPSB1c2VQYWdlQ29vcmRpbmF0
ZXMgPyAqdXNlUGFnZUNvb3JkaW5hdGVzIDogZmFsc2U7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZnJhbWUt
Pm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjpt
YWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0Q29u
ZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgICAgIGhpZ2hsaWdodENv
bmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlwcyBmb3IgZnJhbWVz
LgogICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsK
ICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0
bGluZUNvbG9yKTsKQEAgLTEzOTgsNyArMTM5OCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnNldEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQog
ICAgIG1faW5zcGVjdGVkTm9kZSA9IG5vZGU7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVB
UElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJj4obV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpLmNvbW1hbmRMaW5lQVBJSG9zdCgpKQotICAgICAgICBjb21tYW5kTGlu
ZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxl
Tm9kZT4obm9kZSkpOworICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9i
amVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOwogCiAgICAgbV9zdXBwcmVz
c0V2ZW50TGlzdGVuZXJDaGFuZ2VkRXZlbnQgPSBmYWxzZTsKIH0KQEAgLTIzMTQsNyArMjMxNCw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVu
dCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JldmFsaWRhdGVTdHls
ZUF0dHJUYXNrKQotICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKKyAgICAgICAgbV9y
ZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IG1ha2VVbmlxdWU8UmV2YWxpZGF0ZVN0eWxlQXR0cmli
dXRlVGFzaz4odGhpcyk7CiAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzay0+c2NoZWR1bGVG
b3IoJmVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggZTk3MWE5OWY3
MDUyNGQ4MzE4MWFlNzE1ZDgyNjU4ODExZmUwODgwOC4uODFmMTRkYzE3YmZhMDQ3NDdlM2QyM2U0
NTNmNWU0YWY4ZDA5ZmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNTYsNyArNTYs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET01TdG9yYWdlIl9zLCBjb250ZXh0KQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3Jh
Z2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNv
bnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGIzN2E1NjBj
ZTgwNzY4YzY2NDQwODUxNWZiMDU1MTI2MTY1YmVkODIuLjM1OGE4NTY1MTJlYTRkNzE5NjMzMmEy
MDY5OTBkZTMyNTAwNDEwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjE3LDcgKzIxNyw3
IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNl
JiBkYXRhYmFzZSkKIAogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
IkRhdGFiYXNlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJv
dXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCBlMWUwODJlNDFhZDJkNTI0ZjU3ZWYxMDY0
MDI4ODc2MTE1NjgyNGI5Li5iNTk4MmNlZTM3ZTM3NDQ3MDUzOTQ2YmNmNGM0MzRiNDMxZWY5YTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJMYXllclRyZWUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJv
bnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkxheWVy
VHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDI5Yzc2ZDBjN2ZlYTkyMmMyYTNkOTk0
MTRjOTg2ZWE4ZDI4ZDc3YjUuLjI4MzI5NTFmNTM4MDEyMWZhNDUyYmZhOGQ0NzBmNGQzNWU3ODli
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChQ
YWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJNZW1v
cnkiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAg
ICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok1lbW9yeUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKaW5kZXggM2U0ZTk2ZWIyMzFhMDU0YjIxMjEyNDdiYzJjYjA5MTY1ZjAyNjViMy4u
NWQwODE2MzgwY2RjNjZjN2Q3OTYwYzEyZDM0OGEwZmJmM2Y3YjExOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgY2xhc3MgSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKIAogSW5zcGVj
dG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJOZXR3b3JrIl9zLCBjb250ZXh0KQot
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok5l
dHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRl
eHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX3Jlc291cmNlc0RhdGEo
c3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKKyAgICAsIG1fcmVzb3Vy
Y2VzRGF0YShtYWtlVW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggMzI5ZTFiMGM1YWQ5MmZiNDUxZGYxNzY3MzNhZTJhZTM1OGZiNDkzNy4uYzY0
MWE2YTA0ODQxOTMyNjhlMjllOTBmZjAxMjZhYjkxMWM5MzBkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAt
MzMzLDcgKzMzMyw3IEBAIERvY3VtZW50TG9hZGVyKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2Vy
dERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAKIEluc3BlY3RvclBhZ2VB
Z2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3Bl
Y3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKCJQYWdlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+
KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlBhZ2VCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2xp
ZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDNhMzYxZTkxZTZmMmRlYjAwNDJl
MThhN2M2NGM3YjUxNmY5YjgwYzUuLjMwZDg2Yzc0NjNjNDdmNWIzYWQyYjM4Y2Y1ZGUyNDlkNDRl
YjlhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgQ0ZS
dW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKIAogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKCJUaW1lbGluZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBh
Z2UpCiB7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpp
bnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgLy8gRklYTUU6
IEFic3RyYWN0IGF3YXkgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBvbmNlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3NDggaXMgZml4ZWQuCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVu
TG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxL
bm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lQmVnaW4pLCBbdGhpc10oKSB7CisgICAg
bV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJ
bnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgewogICAgICAgICBpZiAoIW1fdHJhY2tpbmcg
fHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKICAgICAg
ICAgbV9ydW5Mb29wTmVzdGluZ0xldmVsKys7CiAgICAgfSk7CiAKLSAgICBtX2ZyYW1lU3RvcE9i
c2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENG
SW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9y
RnJhbWVFbmQpLCBbdGhpc10oKSB7CisgICAgbV9mcmFtZVN0b3BPYnNlcnZlciA9IG1ha2VVbmlx
dWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6
OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lRW5kKSwgW3RoaXNdKCkgewog
ICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZl
cigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI4MCw3ICsyODAsNyBA
QCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAgICAgICAgICAgICAgIGlmIChXZWJDb25zb2xl
QWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdl
bnQoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRo
ZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
d2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlz
dHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0
cyIpOwotICAgICAgICAgICAgICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNv
bGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fybmlu
ZykpOworICAgICAgICAgICAgICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wRnJv
bUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICBpZiAoV2Vi
Q29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29u
c29sZUFnZW50KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJv
bnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5p
c0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwi
IiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICBjb25zb2xlQWdlbnQtPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fy
bmluZykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCA5MTYxZDg0M2NkMzhlNGQ5
NjYxMjZhY2RkMzZlODNkZDE4ZjUxMDAyLi4xZTM5OGVkZDFhOWVhM2VmMjZiZTA5ZWMwM2Q2YzZj
MmNkMzk4ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2Vy
QWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFz
ZSgiV29ya2VyIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwg
bV9wYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCAyZWVkMWNlNjBiMzAy
MmFkOTgyNGZhNjI4YTM1ZGRjNTQ0NDk2MGQ5Li5jMjA5NGI5OTJkMzU0MTYwZjE3ZWUyOGY2NDEw
YTc5M2RjZGU5ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFn
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkgewogICAg
ICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNl
OiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIsIHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCksICIgKCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCksICcpJyk7Ci0gICAg
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpF
cnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJl
cXVlc3RJZGVudGlmaWVyKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCks
IDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiAgICAgfQogfQogCkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBs
b25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBSZXNvCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5k
KGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAgIH0KIAotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50
b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVu
dGlmaWVyKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwg
bnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3Bw
CmluZGV4IGJiNWQxYmVjNmM2MzIyMzliZWU2NDYzNDM3YWVmZWQxMmJhNDcxZDUuLjA5Y2I2ZjQ2
NjZhYjRjOTFjYmVlMmQwZmNmZGQ0YmE2YTYxYTEzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgc3Ry
dWN0IEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSB7CiB9OwogCiBjbGFzcyBTZW5kR2FyYmFnZUNvbGxl
Y3Rpb25FdmVudHNUYXNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKFdlYkhlYXBBZ2VudCYpOwogICAg
IHZvaWQgYWRkR2FyYmFnZUNvbGxlY3Rpb24oR2FyYmFnZUNvbGxlY3Rpb25EYXRhJiYpOwpAQCAt
OTYsNyArOTcsNyBAQCB2b2lkIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s6OnRpbWVy
RmlyZWQoKQogV2ViSGVhcEFnZW50OjpXZWJIZWFwQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9ySGVhcEFnZW50KGNvbnRleHQpCiAgICAgLCBtX2luc3RydW1l
bnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICwgbV9zZW5kR2Fy
YmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U2VuZEdhcmJhZ2VDb2xs
ZWN0aW9uRXZlbnRzVGFzaz4oKnRoaXMpKQorICAgICwgbV9zZW5kR2FyYmFnZUNvbGxlY3Rpb25F
dmVudHNUYXNrKG1ha2VVbmlxdWU8U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzaz4oKnRo
aXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNWVhZmI2YTMyODQ2ZTcwMDE1M2Fj
ODI2ODFiN2JlNTBkM2FmZTQ4Yy4uODk4NWJjOTQ1ZmU3NWUwZTg1MWEzNmRlMzU4NGFiMDQ3MWMw
ZmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KFBhZ2VB
Z2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2Uo
Y29udGV4dC5pbnNwZWN0ZWRQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBi
MjBjYmJjOTUwNzAyODExYjY1ODlhYzFkZmJkNTczMzkxOTNkMzM3Li44MDgyZWUzMWVlYzYwYTJm
NjAzMjlkYmFiZDRkOTg0MmY2YTU1ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApA
QCAtNTAsNyArNTAsNyBAQCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2Vu
dCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0
aW9uTG9nKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBt
X3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSkpKTsKKyAg
ICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSkpKTsKIH0KIAog
SW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCBiZDlkNGNhZGVmYjJmYWEx
ZjJlMGIyNTc5NTVhZDUxMjRlMTc5NGVlLi4xZjNmYWJhMzEyNmYyZTliMzZiODRkMTNlNzNiZjFm
ZGEzMTc1NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKQEAgLTkxLDcg
KzkxLDcgQEAgdm9pZCBMYXlvdXRTdGF0ZTo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVl
KGNvbnN0IEJveCYgbGF5b3V0Um9vdCkKIERpc3BsYXk6OkJveCYgTGF5b3V0U3RhdGU6OmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgcmV0
dXJuICptX2xheW91dFRvRGlzcGxheUJveC5lbnN1cmUoJmxheW91dEJveCwgWyZsYXlvdXRCb3hd
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6Qm94PihsYXlvdXRC
b3guc3R5bGUoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXk6OkJveD4obGF5
b3V0Qm94LnN0eWxlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMTQwLDEz
ICsxNDAsMTMgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGlu
Z1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgICAgIC8vIHNob3Vs
ZCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGNvbnRlbnQgaW5zaWRlLgogICAgICAgICAgICAgLy8g
PGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQiPjwvZGl2PjxkaXYgc3R5bGU9Im92ZXJmbG93OiBoaWRk
ZW4iPiA8LSBpcyBhIG5vbi1pbnRydXNpdmUgZmxvYXQsIGJlY2F1c2Ugb3ZlcmZsb3c6IGhpZGRl
biB0cmlnZ2VycyBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LjwvZGl2PgogICAgICAgICAg
ICAgaWYgKGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0
aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5n
U3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhp
cyk7CiAKICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBp
bmhlcml0cyB0aGUgZmxvYXRzIGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCiAg
ICAgICAgICAgICAvLyBGaW5kIHRoZSBmb3JtYXR0aW5nIHN0YXRlIGluIHdoaWNoIHRoaXMgZm9y
bWF0dGluZyByb290IGxpdmVzLCBub3QgdGhlIG9uZSBpdCBjcmVhdGVzIGFuZCB1c2UgaXRzIGZs
b2F0aW5nIHN0YXRlLgogICAgICAgICAgICAgYXV0byYgcGFyZW50Rm9ybWF0dGluZ1N0YXRlID0g
Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5n
Um9vdC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7IAogICAgICAgICAgICAgYXV0byYgcGFyZW50
RmxvYXRpbmdTdGF0ZSA9IHBhcmVudEZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50RmxvYXRpbmdTdGF0ZSwgKnRoaXMpOwog
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNTQsNyArMTU0LDcgQEAg
Rm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9y
bWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0
ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwgWyZdIHsKIAogICAgICAgICAgICAgLy8gQmxvY2sg
Zm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0
ZS4KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0
YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZs
b2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAgICAg
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBGb3Jt
YXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0
aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5l
bnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0gewogCiAgICAgICAgICAgICAvLyBUYWJsZSBmb3Jt
YXR0aW5nIGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0aW5nIHN0YXRlIC1h
bmQgaXQgc3RheXMgZW1wdHkuCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
YWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0
aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRhYmxlRm9y
bWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290
KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNzQs
MTggKzE3NCwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+IExheW91dFN0
YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCbwogICAgIEFTU0VSVChmb3JtYXR0
aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICBpZiAo
Zm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQo
KSkgewogICAgICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxp
bmVGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290
SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3Qs
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGlubGluZUZvcm1hdHRp
bmdTdGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBBU1NFUlQoZm9ybWF0dGlu
Z0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dE9ubHkoKSk7CiAg
ICAgICAgIGF1dG8mIGJsb2NrRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0
aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQo
Zm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgYmxvY2tGb3Jt
YXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKICAg
ICB9CiAKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzVGFibGVGb3Jt
YXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGF1dG8mIHRhYmxlRm9ybWF0dGluZ1N0YXRlID0g
ZG93bmNhc3Q8VGFibGVGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZv
cm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdD
b250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxl
Rm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKaW5kZXggN2FlM2I0MDlkNzYxMTZm
MmU5ZDEzY2MzMWViNmU1NjA2M2IxMDc2Zi4uNzk5MTYyNzU3NDAxODNmMzUzZjVhZmQ1YjE1MjJl
NTY1M2ZjODk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheVJ1bi5oCkBAIC0zNiw3ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5IHsKIAogc3RydWN0IFJ1biB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHN0cnVjdCBUZXh0Q29udGV4dCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHRDb250ZXh0KHVuc2ln
bmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggYTFjZDZkNmYxYjdlYjkwZmNjNzkwNWUzMWU5ZjA0ZmUzYmY4MjYw
Yi4uNTA4ZDY2MTI5ZDE0ODdjNGU4NDQwOTM5M2RhMzM0MDkxOWVhN2Y4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50KCkgY29uc3QKICAgICAgICAg
ICAgIGlmICghdHJlYXRBc0lubGluZUNvbnRhaW5lcihsYXlvdXRCb3gpKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYW4gaW5saW5l
IGNvbnRhaW5lciAoZS5nLiA8c3Bhbj4pLgotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGlu
ZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0YXJ0KSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5l
SXRlbTo6VHlwZTo6Q29udGFpbmVyU3RhcnQpKTsKICAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5l
ciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KTsKICAgICAgICAgICAgIGlmICghY29u
dGFpbmVyLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjkyLDE3ICsyOTIsMTcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29s
bGVjdElubGluZUNvbnRlbnQoKSBjb25zdAogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0g
KmxheW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBlbmQg
b2YgYW4gaW5saW5lIGNvbnRhaW5lciAoZS5nLiA8L3NwYW4+KS4KICAgICAgICAgICAgIGlmICh0
cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJveCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0
dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlv
dXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVuZCkpOworICAgICAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5
b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJFbmQpKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKGxheW91dEJveC5pc0xpbmVCcmVha0JveCgpKQotICAgICAgICAgICAgICAgIGZvcm1h
dHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5
b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CisgICAgICAgICAgICAg
ICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihs
YXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWspKTsKICAgICAgICAgICAg
IGVsc2UgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICAgICAg
ICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
SXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpGbG9hdCkpOworICAgICAgICAgICAg
ICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4o
bGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpGbG9hdCkpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC5pc0lubGluZUxldmVsQm94KCkpOwog
ICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaGFzVGV4dENvbnRlbnQoKSkKICAgICAgICAg
ICAgICAgICAgICAgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhmb3Jt
YXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0
ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpC
b3gpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0o
bWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkJveCkp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBs
YXlvdXRCb3gubmV4dEluRmxvd09yRmxvYXRpbmdTaWJsaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCmluZGV4IGY3NDFkZTQ4OWU5
NDI0NjFkNzY5MmUyZTQwNDE1OTM4M2IwYzgxNjAuLjBhMjEzMDIxM2YxMjRlZWI1ZjdmNzExMmU4
ODZkNzEyYzUzMWRhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHRMaW5lTGF5b3V0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29u
dGVuCiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQobG9naWNhbFJlY3QudG9wTGVm
dCgpKTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGxvZ2ljYWxS
ZWN0LndpZHRoKCkpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0
KGxvZ2ljYWxSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJ
bmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7Cisg
ICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxh
eTo6UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGlu
ZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAgICAg
ICAgICAgdG9wTGVmdCArPSBHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0
KGxheW91dFN0YXRlKCksIGxheW91dEJveCk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRv
cExlZnQodG9wTGVmdCk7CiAgICAgICAgICAgICBsaW5lQm94UmVjdC5leHBhbmRIb3Jpem9udGFs
bHkobG9naWNhbFJlY3Qud2lkdGgoKSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
SW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwor
ICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3Bs
YXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxp
bmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAg
ICAgYXV0byBwcmV2aW91c1J1bkNhbkJlRXh0ZW5kZWQgPSBwcmV2aW91c0xpbmVSdW4gJiYgcHJl
dmlvdXNMaW5lUnVuLT50ZXh0Q29udGV4dCgpID8gcHJldmlvdXNMaW5lUnVuLT50ZXh0Q29udGV4
dCgpLT5jYW5CZUV4dGVuZGVkIDogZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHJlcXVpcmVzTmV3
UnVuID0gIWluZGV4IHx8ICFwcmV2aW91c1J1bkNhbkJlRXh0ZW5kZWQgfHwgJmxheW91dEJveCAh
PSAmcHJldmlvdXNMaW5lUnVuLT5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGlmIChyZXF1aXJl
c05ld1J1bikKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0
ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCwgRGlzcGxheTo6UnVuOjpU
ZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5zdGFydCwgdGV4dENvbnRleHQtPmxlbmd0aCB9KSk7
CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVl
PERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyB0
ZXh0Q29udGV4dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5ndGggfSkpOwogICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byYgbGFzdERpc3BsYXlSdW4gPSBmb3JtYXR0aW5n
U3RhdGUuaW5saW5lUnVucygpLmxhc3QoKTsKICAgICAgICAgICAgICAgICBsYXN0RGlzcGxheVJ1
bi0+ZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCmluZGV4IGIw
MDEzYjZlZDU2M2JjYmY4MjgxMzkxMzQxZjJkZDU2MTVlYzUzZWYuLjc5MDYxOTY4MWU2NzUyZDI4
NzI0OTM4NjIyZTNhNzRiZTAzM2ZmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUl0ZW0gOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW5saW5lSXRlbT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFRleHQsIEhhcmRMaW5lQnJl
YWssIEJveCwgRmxvYXQsIENvbnRhaW5lclN0YXJ0LCBDb250YWluZXJFbmQgfTsKICAgICBJbmxp
bmVJdGVtKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKaW5kZXggNGYyMGE2
ZmYxZDcwY2UzNDliZGUwZWJlZGZlOGY4MGEzNWU4NWEyOC4uZWQ2NTIwNWI3ZGI5OWIwZjZhYjEw
ZjNlZWVhYTA3YzQ0NmI3ZjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgTGluZTo6
Q29udGVudDo6UnVuOjpSdW4oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgVGV4
dENvbnRleHQmIHRleHRDb24KIAogTGluZTo6TGluZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50cyYgaW5pdGlhbENvbnN0cmFpbnRzLCBTa2lw
VmVydGljYWxBbGlnbWVudCBza2lwVmVydGljYWxBbGlnbWVudCkKICAgICA6IG1fbGF5b3V0U3Rh
dGUobGF5b3V0U3RhdGUpCi0gICAgLCBtX2NvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxMaW5lOjpD
b250ZW50PigpKQorICAgICwgbV9jb250ZW50KG1ha2VVbmlxdWU8TGluZTo6Q29udGVudD4oKSkK
ICAgICAsIG1fbG9naWNhbFRvcExlZnQoaW5pdGlhbENvbnN0cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0
KQogICAgICwgbV9iYXNlbGluZSh7IGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGlu
ZS5iYXNlbGluZU9mZnNldCwgaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmhl
aWdodCAtIGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5iYXNlbGluZU9mZnNl
dCB9KQogICAgICwgbV9pbml0aWFsU3RydXQoaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJh
c2VsaW5lLnN0cnV0KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kKGNvbnN0
IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNhbFdpZHRoKQogCiB2b2lk
IExpbmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0sIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0KQogewotICAgIG1fY29udGVudC0+
cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwg
bG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxD
b250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiAgICAgbV9jb250ZW50TG9n
aWNhbFdpZHRoICs9IGxvZ2ljYWxSZWN0LndpZHRoKCk7CiB9CiAKQEAgLTI4Miw3ICsyODIsNyBA
QCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxp
bmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIH0KIAogICAgIGF1dG8gdGV4dENvbnRleHQg
PSBDb250ZW50OjpSdW46OlRleHRDb250ZXh0IHsgaW5saW5lSXRlbS5zdGFydCgpLCBpbmxpbmVJ
dGVtLmlzQ29sbGFwc2VkKCkgPyAxIDogaW5saW5lSXRlbS5sZW5ndGgoKSwgaXNDb21wbGV0ZWx5
Q29sbGFwc2VkLCBpbmxpbmVJdGVtLmlzV2hpdGVzcGFjZSgpLCBjYW5CZUV4dGVuZGVkIH07Ci0g
ICAgYXV0byBsaW5lSXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJ
dGVtLCB0ZXh0Q29udGV4dCwgbG9naWNhbFJlY3QpOworICAgIGF1dG8gbGluZUl0ZW0gPSBtYWtl
VW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgdGV4dENvbnRleHQsIGxvZ2ljYWxSZWN0
KTsKICAgICBpZiAoaXNUcmltbWFibGUgJiYgIWlzQ29tcGxldGVseUNvbGxhcHNlZCkKICAgICAg
ICAgbV90cmltbWFibGVDb250ZW50LmFkZChsaW5lSXRlbS5nZXQoKSk7CiAKQEAgLTMwMyw3ICsz
MDMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbAogICAgICAgICBsb2dpY2FsUmVjdC5zZXRI
ZWlnaHQoaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSkpOwogICAgIH0KIAotICAg
IG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4o
aW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQo
bWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiAgICAg
bV9jb250ZW50TG9naWNhbFdpZHRoICs9IChsb2dpY2FsV2lkdGggKyBob3Jpem9udGFsTWFyZ2lu
LnN0YXJ0ICsgaG9yaXpvbnRhbE1hcmdpbi5lbmQpOwogICAgIG1fdHJpbW1hYmxlQ29udGVudC5j
bGVhcigpOwogfQpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kSGFyZExpbmVC
cmVhayhjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogICAgICAgICBhZGp1c3RCYXNlbGlu
ZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSwgeyB9KTsKICAgICAgICAgbG9naWNhbFJlY3Quc2V0
SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgfQotICAgIG1fY29udGVudC0+cnVucygpLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJl
Y3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpS
dW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiB9CiAKIHZvaWQgTGluZTo6YWRqdXN0QmFz
ZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVu
aXQgcnVuSGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oCmluZGV4IGZhZjA1NDc1M2QzNzIyYWJjMDFkOGE3M2Y0Nzk5MzQ5
YmNiMWFhMTEuLjczN2EwN2IwMzJhZjZmZjExOTkwOTZmN2EzNzU3NTdlNmRhOWYxYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
LmgKQEAgLTUyLDggKzUyLDEwIEBAIGNsYXNzIExpbmUgewogICAgIExpbmUoY29uc3QgTGF5b3V0
U3RhdGUmLCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMmLCBTa2lwVmVydGljYWxBbGlnbWVudCk7
CiAKICAgICBjbGFzcyBDb250ZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgcHVibGljOgogICAgICAgICBzdHJ1Y3QgUnVuIHsKKyAgICAgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgICAgIHN0cnVjdCBUZXh0Q29udGV4dCB7
CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgeyAwIH07CiAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbGVuZ3RoIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCmluZGV4IGYxMzA4OWE3MDhm
M2ZlM2ZmOWI3N2Y3MjA5NmNkYTQyZWYzNmUyMjIuLjVlNmMyNTZkYjBiMzA5YWFmMWUyNTgyMWYw
ZTFlMThlNTY0NTJmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9p
ZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1zJiBp
bmxpbmVDb250ZW50LCBjb25zdAogewogICAgIGF1dG8gdGV4dCA9IGlubGluZUJveC50ZXh0Q29u
dGVudCgpOwogICAgIGlmICghdGV4dC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGlubGluZUNv
bnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwg
MCwgMCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHJldHVybiBpbmxpbmVDb250ZW50LmFwcGVu
ZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIDAsIDAsIGZhbHNlLCBmYWxz
ZSkpOwogCiAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVCb3guc3R5bGUoKTsKICAgICBhdXRvIHBy
ZXNlcnZlTmV3bGluZSA9IHN0eWxlLnByZXNlcnZlTmV3bGluZSgpOwpAQCAtOTksMjAgKzk5LDIw
IEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJ
dGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QKICAgICB3aGlsZSAoY3VycmVudFBvc2l0aW9uIDwg
dGV4dC5sZW5ndGgoKSkgewogICAgICAgICAvLyBTb2Z0IGxpbmVicmVhaz8KICAgICAgICAgaWYg
KGlzU29mdExpbmVCcmVhayh0ZXh0W2N1cnJlbnRQb3NpdGlvbl0sIHByZXNlcnZlTmV3bGluZSkp
IHsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5s
aW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkp
OworICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0
SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIDEsIHRydWUsIGZhbHNlKSk7CiAgICAg
ICAgICAgICArK2N1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChpc1doaXRlc3BhY2VDaGFyYWN0ZXIodGV4dFtjdXJyZW50UG9zaXRp
b25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7CiAgICAgICAgICAgICBhdXRvIGxlbmd0aCA9IG1vdmVU
b05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odGV4dCwgY3VycmVudFBvc2l0aW9uLCBwcmVzZXJ2
ZU5ld2xpbmUpOwogICAgICAgICAgICAgYXV0byBpc0NvbGxhcHNlZCA9IGNvbGxhcHNlV2hpdGVT
cGFjZSAmJiBsZW5ndGggPiAxOwotICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24s
IGxlbmd0aCwgdHJ1ZSwgaXNDb2xsYXBzZWQpKTsKKyAgICAgICAgICAgIGlubGluZUNvbnRlbnQu
YXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0
aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFwc2VkKSk7CiAgICAgICAgICAgICBjdXJyZW50UG9z
aXRpb24gKz0gbGVuZ3RoOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAg
ICAgICBhdXRvIGxlbmd0aCA9IG1vdmVUb05leHRCcmVha2FibGVQb3NpdGlvbihjdXJyZW50UG9z
aXRpb24sIGxpbmVCcmVha0l0ZXJhdG9yLCBzdHlsZSk7Ci0gICAgICAgIGlubGluZUNvbnRlbnQu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVu
dFBvc2l0aW9uLCBsZW5ndGgsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBpbmxpbmVDb250ZW50
LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3Np
dGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9
IGxlbmd0aDsKICAgICB9CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElu
bGluZVRleHRJdGVtPiBJbmxpbmVUZXh0SXRlbTo6c3BsaXQodW5zaWduZWQgc3BsaXRQb3NpdGlv
biwgdW4KIHsKICAgICBSRUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0aW9uID49IHRoaXMtPnN0YXJ0
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNwbGl0UG9zaXRpb24gKyBsZW5ndGggPD0gZW5kKCkp
OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3go
KSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGxheW91dEJveCgpLCBzcGxp
dFBvc2l0aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFjZSgpLCBpc0NvbGxhcHNlZCgpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKaW5k
ZXggZWRmMmQ0YjI3NjYyMmM4OTVkMTc3OTcxNGNmN2NmMjA4YWNkOWM0Mi4uZjU2ZTFhNjE2YTJk
ZjU3NzFiYjQ4YTc1ODAzYWU1NzNmY2Y4YzczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCkBAIC00NSw3ICs0NSw3IEBAIEJveDo6Qm94KE9w
dGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxl
LCBCYXNlVHlwZUZsCiAgICAgLCBtX2hhc1JhcmVEYXRhKGZhbHNlKQogewogICAgIGlmIChpc1Jl
cGxhY2VkKCkpCi0gICAgICAgIGVuc3VyZVJhcmVEYXRhKCkucmVwbGFjZWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkucmVwbGFj
ZWQgPSBtYWtlVW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CiB9CiAKIEJveDo6Qm94KE9wdGlvbmFs
PEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQpAQCAt
NDIzLDcgKzQyMyw3IEBAIGNvbnN0IEJveDo6Qm94UmFyZURhdGEmIEJveDo6cmFyZURhdGEoKSBj
b25zdAogQm94OjpCb3hSYXJlRGF0YSYgQm94OjplbnN1cmVSYXJlRGF0YSgpCiB7CiAgICAgc2V0
SGFzUmFyZURhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmVuc3VyZSh0aGlz
LCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveFJhcmVEYXRhPigpOyB9KS5pdGVyYXRv
ci0+dmFsdWU7CisgICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmVuc3VyZSh0aGlzLCBbXSB7IHJl
dHVybiBtYWtlVW5pcXVlPEJveFJhcmVEYXRhPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAK
IHZvaWQgQm94OjpyZW1vdmVSYXJlRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggNWZlZWNlZTcyZjA4
YzQ4NTA4OGVlNDg1MTk0NWM2NjQwY2ZlNTdkMy4uYmMyYmJlZTc4YTM2ODY4MjZiMjA0ZGZiNWY2
OTYyNWY5NTZmMmI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMTI4LDI1ICsxMjgsMjUgQEAgc3RkOjp1
bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25zdCBSZW5kZXJF
bGVtZW50JiBwYXJlbnRSZW4KICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikp
IHsKICAgICAgICAgLy8gRklYTUU6IENsZWFybHkgdGhlcmUgbXVzdCBiZSBhIGhlbHBlciBmdW5j
dGlvbiBmb3IgdGhpcy4KICAgICAgICAgaWYgKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkuZGlzcGxh
eSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9
IHN0ZDo6bWFrZV91bmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVy
KS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFJlbmRlcmVyLnN0eWxl
KCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGRvd25j
YXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHls
ZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94Pihkb3duY2FzdDxSZW5k
ZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVuZGVyZXIuc3R5bGUoKSwgRGlzcGxh
eVR5cGU6OklubGluZSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVl
PEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCks
IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJlbmRl
cmVyLnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKICAgICAgICAgcmV0dXJuIGNoaWxk
TGF5b3V0Qm94OwogICAgIH0KIAogICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4oY2hpbGRSZW5kZXJlcik7CiAgICAgYXV0byBkaXNwbGF5VHlwZSA9IHJlbmRlcmVy
LnN0eWxlKCkuZGlzcGxheSgpOwogICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVy
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogCiAgICAgaWYgKGlzPFJlbmRl
clRhYmxlPihyZW5kZXJlcikpIHsKICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBwcmluY2lwYWwg
dGFibGUgd3JhcHBlciBib3ggKGFuZCBub3QgdGhlIHRhYmxlIGJveCBpdHNlbGYpLgotICAgICAg
ICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1l
bnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFJlbmRl
clN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgIGNoaWxkTGF5b3V0Qm94
ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVs
ZW1lbnRUeXBlOjpUYWJsZVdyYXBwZXJCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVy
LnN0eWxlKCkpKTsKICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclJlcGxhY2VkPihyZW5kZXJlcikp
IHsKICAgICAgICAgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpCbG9jaykKLSAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
KyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5p
cXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
cmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5p
cXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
cmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgeWV0IHN1cHBv
cnQgYWxsIHJlcGxhY2VkIGVsZW1lbnRzIGFuZCB0aGlzIGlzIHRlbXBvcmFyeSBhbnl3YXkuCiAg
ICAgICAgIGlmIChjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKSkKICAgICAgICAgICAgIGNoaWxk
TGF5b3V0Qm94LT5yZXBsYWNlZCgpLT5zZXRJbnRyaW5zaWNTaXplKGRvd25jYXN0PFJlbmRlclJl
cGxhY2VkPihyZW5kZXJlcikuaW50cmluc2ljU2l6ZSgpKTsKQEAgLTE2MSwxOCArMTYxLDE4IEBA
IHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3Qg
UmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAgICAgICAgICAgICAgYXV0byBzdHlsZSA9IFJl
bmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgICAgICAgICBz
dHlsZS0+c2V0VG9wKHsgb2Zmc2V0LT5oZWlnaHQoKSwgRml4ZWQgfSk7CiAgICAgICAgICAgICAg
ICAgc3R5bGUtPnNldExlZnQoeyBvZmZzZXQtPndpZHRoKCksIEZpeGVkIH0pOwotICAgICAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1l
bnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZSgqc3R5bGUpKTsKKyAgICAgICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihl
bGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5z
dHlsZSgpKSk7CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENv
bnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
cmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERp
c3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0
eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKGRp
c3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jaykKLSAgICAgICAgICAgIGNoaWxk
TGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVz
KHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
ICAgICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlv
biB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsKSB7Ci0gICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0
cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7
CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVt
ZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHls
ZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRh
YmxlUm93R3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3Jv
dXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXAKICAgICAg
ICAgICAgIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZVJvdyB8fCBkaXNwbGF5
VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCB8fCBkaXNwbGF5VHlwZSA9PSBE
aXNwbGF5VHlwZTo6VGFibGVDb2x1bW4pIHsKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwg
UmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxk
TGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRl
cmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAg
ICAgICByZXR1cm4geyB9OwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OmNy
ZWF0ZVRhYmxlU3RydWN0dXJlKGNvbnN0IFJlbmRlclRhYmxlJiB0YWJsZVJlbmRlcmVyLCBDb250
YWluCiAgICAgICAgIHRhYmxlQ2hpbGQgPSB0YWJsZUNoaWxkLT5uZXh0U2libGluZygpOwogICAg
IH0KIAotICAgIGF1dG8gdGFibGVCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94
OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlQm94IH0sIFJlbmRl
clN0eWxlOjpjbG9uZSh0YWJsZVJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICBhdXRvIHRhYmxlQm94
ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVs
ZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVSZW5kZXJlci5z
dHlsZSgpKSk7CiAgICAgYXBwZW5kQ2hpbGQodGFibGVXcmFwcGVyQm94LCAqdGFibGVCb3gpOwog
ICAgIHdoaWxlICh0YWJsZUNoaWxkKSB7CiAgICAgICAgIFRyZWVCdWlsZGVyOjpjcmVhdGVTdWJU
cmVlKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0YWJsZUNoaWxkKSwgKnRhYmxlQm94KTsKQEAg
LTM0Nyw3ICszNDcsNyBAQCB2b2lkIHByaW50TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVudHMoKQog
ICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5kIGEgd2F5IHRvIG91dHB1dCBnZW9tZXRyeSB3
aXRob3V0IGxheW91dCBjb250ZXh0LgogICAgICAgICBhdXRvJiByZW5kZXJWaWV3ID0gKmRvY3Vt
ZW50LT5yZW5kZXJWaWV3KCk7CiAgICAgICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9jayA9
IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRUcmVlKHJlbmRlclZpZXcpOwotICAgICAgICBhdXRv
IGxheW91dFN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRlPigqaW5p
dGlhbENvbnRhaW5pbmdCbG9jayk7CisgICAgICAgIGF1dG8gbGF5b3V0U3RhdGUgPSBtYWtlVW5p
cXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCppbml0aWFsQ29udGFpbmluZ0Jsb2NrKTsKICAgICAg
ICAgbGF5b3V0U3RhdGUtPnNldFF1aXJrc01vZGUocmVuZGVyVmlldy5kb2N1bWVudCgpLmluTGlt
aXRlZFF1aXJrc01vZGUoKSA/IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpMaW1pdGVkIDogKHJl
bmRlclZpZXcuZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSA/IExheW91dFN0YXRlOjpRdWlya3NN
b2RlOjpZZXMgOiBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6Tm8pKTsKICAgICAgICAgbGF5b3V0
U3RhdGUtPnVwZGF0ZUxheW91dCgpOwogICAgICAgICBzaG93TGF5b3V0VHJlZSgqaW5pdGlhbENv
bnRhaW5pbmdCbG9jaywgbGF5b3V0U3RhdGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxZDc3ZTRhZjFkYmRkZjA0NWE5MmMxYzhhZDNiOTllYWNl
Yjk3YjUuLmI0OThhMjI0YjE5MGM2Y2U4NDRlYjlkZDdlYjliN2ExMDVkNzZkYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZShEb2N1bWVudExv
YWRlciYgZG9jdW1lbnRMb2EKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRl
cj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKIH0K
IAogQ29udGVudEZpbHRlcjo6Q29udGVudEZpbHRlcihDb250YWluZXImJiBjb250ZW50RmlsdGVy
cywgRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBkMGQ1NGI5N2VhZTcy
MDQyNmY5NjFjOGRhZTg5NWUyMDM2OWNlZGNjLi5jNGNlNWY1NTIxNzBiM2NmYzhiODQxYjU5YTUx
MGZkNzVhYTgzZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgdmFsaWRhdGVQcmVm
bGlnaHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzCiAgICAgaWYgKCFwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBzZWN1cml0eU9yaWdpbiwgZXJyb3JEZXNjcmlwdGlvbikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogICAgIGlmICghcmVz
dWx0LT5wYXJzZShyZXNwb25zZSkKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmln
aW5NZXRob2QocmVxdWVzdC5odHRwTWV0aG9kKCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBl
cnJvckRlc2NyaXB0aW9uKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09yaWdpbkhl
YWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBlcnJvckRlc2NyaXB0aW9uKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggZGUwOWU3MDM5OWNjNzQ3ZTg4NzM2OTc4MzcyNGU2ZGFhOWZjNzg4Yi4uMDQ1
NWNhZmM1OWZmN2I2ZWExZjlhMmNkMzkzMWE2OWU5ZjY5NDQ1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgRG9jdW1lbnRMb2Fk
ZXI6OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
U3Vic3RpdHV0ZUQKICAgICAsIG1fb3JpZ2luYWxTdWJzdGl0dXRlRGF0YVdhc1ZhbGlkKHN1YnN0
aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlU
aW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRp
bWVyRmlyZWQpCiAgICAgLCBtX2RhdGFMb2FkVGltZXIoKnRoaXMsICZEb2N1bWVudExvYWRlcjo6
aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KQotICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9z
dChzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCisgICAgLCBt
X2FwcGxpY2F0aW9uQ2FjaGVIb3N0KG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0
aGlzKSkKIHsKIH0KIApAQCAtMTMzNiw3ICsxMzM2LDcgQEAgdWludDY0X3QgRG9jdW1lbnRMb2Fk
ZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCkKICAgICBpZiAobWFuaWZlc3RVUkwuaXNFbXB0
eSgpIHx8ICFtYW5pZmVzdFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
YXV0byBtYW5pZmVzdExvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25NYW5pZmVz
dExvYWRlcj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CisgICAgYXV0byBt
YW5pZmVzdExvYWRlciA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcj4oKnRo
aXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CiAgICAgYXV0byogcmF3TWFuaWZlc3RM
b2FkZXIgPSBtYW5pZmVzdExvYWRlci5nZXQoKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBuZXh0
Q2FsbGJhY2tJRCsrOwogICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuc2V0KFdURk1v
dmUobWFuaWZlc3RMb2FkZXIpLCBjYWxsYmFja0lEKTsKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnNldEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYgYXJjaGl2ZSkKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYgYXJjaGl2
ZSkKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAgICAgbV9h
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uPigpOworICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBt
YWtlVW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9hcmNoaXZlUmVz
b3VyY2VDb2xsZWN0aW9uLT5hZGRBbGxSZXNvdXJjZXMoYXJjaGl2ZSk7CiB9CiAKQEAgLTE0MzYs
NyArMTQzNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMo
QXJjaGl2ZSYgYXJjaGl2ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJj
ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIHJlc291cmNlKQogewogICAgIGlmICghbV9hcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CisgICAgICAg
IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbj4oKTsKICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFkZFJlc291
cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKIH0KIApAQCAtMTk2Myw3ICsxOTYzLDcgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
KQogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBieSBjbGVhcmluZyBtX3JlcXVl
c3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVIb3N0CiAgICAgICAgIC8vIGlz
IG5vdyBpbiBhIHN0YXRlIHdoZXJlIHN0YXJ0aW5nIGFuIGVtcHR5IGxvYWQgd2lsbCBiZSBpbmNv
bnNpc3RlbnQuIFJlcGxhY2UgaXQgd2l0aAogICAgICAgICAvLyBhIG5ldyBBcHBsaWNhdGlvbkNh
Y2hlSG9zdC4KLSAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IHN0ZDo6bWFrZV91bmlx
dWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdCA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsKICAgICAg
ICAgbWF5YmVMb2FkRW1wdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMjIsNyAr
MjEyMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24o
Ym9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkZXI+KCp0
aGlzLCBpY29uLnVybCk7CisgICAgYXV0byBpY29uTG9hZGVyID0gbWFrZVVuaXF1ZTxJY29uTG9h
ZGVyPigqdGhpcywgaWNvbi51cmwpOwogICAgIGF1dG8qIHJhd0ljb25Mb2FkZXIgPSBpY29uTG9h
ZGVyLmdldCgpOwogICAgIG1faWNvbkxvYWRlcnMuc2V0KFdURk1vdmUoaWNvbkxvYWRlciksIG5l
d0NhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4
IGM0NTBjMDg3MGMwZGI5MDAyYjkwNGM3YjZjYmNlNGM5NjkwMmM2ZGMuLmFjYTM0NTI5ODViNzMx
MTliY2IyM2M0M2JhMjNlZWZiNzVhN2EzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCkBAIC01ODIsNyArNTgyLDcgQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZp
Z3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCkKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1w
dHlQcm9ncmVzc1RyYWNrZXJDbGllbnQ+IGR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50OwogICAg
IHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9ICZkdW1teVByb2dyZXNz
VHJhY2tlckNsaWVudC5nZXQoKTsKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50PigpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0g
bWFrZVVuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigpOwogCiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y3JlYXRlKHsgfSwgeyB9KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVBy
b3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBFbXB0eURhdGFiYXNlUHJvdmlkZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZTBmNDYxNDhmMmRmYWE4N2Y2YjI0MjYzN2Q1
MDg5MTg1MjBhNjBhMi4uODNiZWIyNzE3ZDMzN2MzNDFjMDE1ZWNmNDZkNGYzNzNlMDhiMTUzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNzAsMTAgKzI3MCwxMCBA
QCBjbGFzcyBGcmFtZUxvYWRlcjo6RnJhbWVQcm9ncmVzc1RyYWNrZXIgewogRnJhbWVMb2FkZXI6
OkZyYW1lTG9hZGVyKEZyYW1lJiBmcmFtZSwgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCkKICAg
ICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3BvbGlj
eUNoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDaGVja2VyPihmcmFtZSkpCi0gICAgLCBt
X2hpc3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q29udHJvbGxlcj4oZnJhbWUpKQorICAg
ICwgbV9wb2xpY3lDaGVja2VyKG1ha2VVbmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQorICAg
ICwgbV9oaXN0b3J5KG1ha2VVbmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAs
IG1fbm90aWZpZXIoZnJhbWUpCi0gICAgLCBtX3N1YmZyYW1lTG9hZGVyKHN0ZDo6bWFrZV91bmlx
dWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKKyAgICAsIG1fc3ViZnJhbWVMb2FkZXIobWFrZVVu
aXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUpKQogICAgICwgbV9taXhlZENvbnRlbnRDaGVja2Vy
KGZyYW1lKQogICAgICwgbV9zdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAgLCBtX2xv
YWRUeXBlKEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmluaXQoKQogICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxv
YWRlclN0YXRlTWFjaGluZTo6RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KTsKIAogICAg
IG1fbmV0d29ya2luZ0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgp
OwotICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVByb2dyZXNz
VHJhY2tlcj4obV9mcmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5pcXVlPEZy
YW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6aW5p
dEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJMJikKQEAgLTM0Niw3ICszNDYsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQog
ICAgIG1fbmVlZHNDbGVhciA9IHRydWU7CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0gbV9j
bGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNzVHJhY2tlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOworICAgIG1f
cHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFt
ZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMp
CkBAIC0yNjc4LDcgKzI2NzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbigp
CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3Npbmct
dGhlLXdlYi5odG1sI25hdmlnYXRlCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdmlnYXRpb25EaXNh
Ymxlcj4gbmF2aWdhdGlvbkRpc2FibGVyOwogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
Ci0gICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdGlv
bkRpc2FibGVyPigmbV9mcmFtZSk7CisgICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9IG1ha2VV
bmlxdWU8TmF2aWdhdGlvbkRpc2FibGVyPigmbV9mcmFtZSk7CiAKICAgICAvLyBBbnkgc3ViZnJh
bWUgaW5zZXJ0ZWQgYnkgdW5sb2FkIGV2ZW50IGhhbmRsZXJzIGV4ZWN1dGVkIGluIHRoZSBsb29w
IGJlbG93IHdpbGwgbm90IGdldCB1bmxvYWRlZAogICAgIC8vIGJlY2F1c2Ugd2UgY3JlYXRlIGEg
Y29weSBvZiB0aGUgc3ViZnJhbWVzIGxpc3QgYmVmb3JlIGxvb3BpbmcuIFRoZXJlZm9yZSwgaXQg
d291bGQgYmUgdW5zYWZlIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDhl
M2E0NmI1MTBhOTk4MGMyYWZiODBhMzQ0OGE0OTg5ZWFjMTllMTkuLjVmZmY2N2Q5NDJlYmU5MWUw
M2E1Mjk2ZTZlOWRhMjRkYjNiN2NjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CkBAIC05Niw2ICs5Niw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNSZWxvYWQoRnJhbWVMb2Fk
VHlwZSk7CiB1c2luZyBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IFdURjo6RnVuY3Rp
b248dm9pZChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+OwogCiBjbGFzcyBG
cmFtZUxvYWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRnJhbWVMb2FkZXIpOwogcHVibGljOgogICAgIEZyYW1lTG9hZGVyKEZyYW1l
JiwgRnJhbWVMb2FkZXJDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApp
bmRleCBjZGY2NDk1MjZmZTNkMWYzMzI4ZDZlMzZjMjAxMDg3YzMxZjE2NTViLi40MDhjNTM2NDI5
ZTNiMDg3Nzk4ZWI5N2U3Njg2NGNjOTQ4NjY2N2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuY3BwCkBAIC0xNDIsMjIgKzE0MiwyMiBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExp
bmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbgog
ewogICAgIHN3aXRjaCAocmVzb3VyY2UudHlwZSgpKSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZElt
YWdlPihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZElt
YWdlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNl
KSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0OgotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9h
ZGVyLCBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25j
YXN0PENhY2hlZFNjcmlwdD4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpU
eXBlOjpDU1NTdHlsZVNoZWV0OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5r
UHJlbG9hZFN0eWxlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkQ1NTU3R5
bGVTaGVldD4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxv
YWRTdHlsZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hl
ZXQ+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291
cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZEZvbnRSZXNv
dXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRGb250PihyZXNvdXJjZSkpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZEZvbnRSZXNvdXJjZUNsaWVudD4obG9h
ZGVyLCBkb3duY2FzdDxDYWNoZWRGb250PihyZXNvdXJjZSkpOwogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpUZXh0VHJhY2tSZXNvdXJjZToK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3Vy
Y2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVu
dD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRUZXh0VHJhY2s+KHJlc291cmNlKSk7CiAjZW5kaWYK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpNZWRpYVJlc291cmNlOgogICAgICAgICBB
U1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tZWRpYVByZWxv
YWRpbmdFbmFibGVkKCkpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpUeXBlOjpSYXdSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TGlua1ByZWxvYWRSYXdSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRS
YXdSZXNvdXJjZT4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1By
ZWxvYWRSYXdSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJj
ZT4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3Vy
Y2U6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SWNvbjoKICNpZiBFTkFCTEUoU1ZH
X0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNh
Ymxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCmluZGV4
IDAyY2M3ZDEyMGNhNGJjZmYzNTI1YzhmNzQ5Y2M0MTgwZmU2ZDQ1ZTIuLjhhZTRiMzFiOGI2OWY5
OGQwMWFkYTc4ODk5YTk4YmQxMWRkNDI3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkRpc2FibGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTmF2aWdhdGlvbkRpc2FibGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBOYXZpZ2F0aW9uRGlzYWJsZXIoRnJhbWUqIGZyYW1lKQogICAgICAg
ICA6IG1fZnJhbWUoZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNj
aGVkdWxlci5jcHAKaW5kZXggNTU4Yzc4MDQ5NTdlYzg4Mjg4MThlZjU2MTliZjk4M2QzZjk0MGE1
NS4uM2MyYzI1MmFhNTFiOTY5Mjk1ZWNmMTQ4MTI1NGEzMjQwZWM0MmE2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMzk3LDcgKzM5Nyw3
IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChEb2N1bWVudCYg
aW5pdGlhdGluZ0RvY3VtZW50LCBkb3VibGUKICAgICAvLyBXZSB3YW50IGEgbmV3IGJhY2svZm9y
d2FyZCBsaXN0IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91dCBpcyA+IDEgc2Vjb25kLgogICAg
IGlmICghbV9yZWRpcmVjdCB8fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxheSgpKSB7CiAgICAg
ICAgIGF1dG8gbG9ja0JhY2tGb3J3YXJkTGlzdCA9IGRlbGF5IDw9IDEgPyBMb2NrQmFja0Zvcndh
cmRMaXN0OjpZZXMgOiBMb2NrQmFja0ZvcndhcmRMaXN0OjpObzsKLSAgICAgICAgc2NoZWR1bGUo
c3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3VtZW50LCBk
ZWxheSwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlz
dG9yeTo6WWVzLCBsb2NrQmFja0ZvcndhcmRMaXN0KSk7CisgICAgICAgIHNjaGVkdWxlKG1ha2VV
bmlxdWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVudCwgZGVsYXksICZtX2Zy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9ja0hpc3Rvcnk6Olllcywg
bG9ja0JhY2tGb3J3YXJkTGlzdCkpOwogICAgIH0KIH0KIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZv
aWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShEb2N1bWVudCYg
aW5pdGlhdGluZ0RvY3VtZW50LCBTCiAgICAgLy8gVGhpcyBtYXkgaGFwcGVuIHdoZW4gYSBmcmFt
ZSBjaGFuZ2VzIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyIGZyYW1lLgogICAgIGJvb2wgZHVyaW5n
TG9hZCA9ICFsb2FkZXIuc3RhdGVNYWNoaW5lKCkuY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRM
b2FkKCk7CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZExvY2F0aW9u
Q2hhbmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZzZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJl
ciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRM
b2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwg
cmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVs
ZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3Np
b24pCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVs
ZUZvcm1TdWJtaXNzaW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW8KICAgICAgICAg
bG9ja0JhY2tGb3J3YXJkTGlzdCA9IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllczsKICAgICB9CiAg
ICAgCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lv
bj4oV1RGTW92ZShzdWJtaXNzaW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkp
OworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24+KFdURk1v
dmUoc3VibWlzc2lvbiksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpKTsKIH0KIAog
dm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2goRG9jdW1lbnQmIGluaXRp
YXRpbmdEb2N1bWVudCkKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVs
ZXI6OnNjaGVkdWxlUmVmcmVzaChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50KQogICAgIGlm
ICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1h
a2VfdW5pcXVlPFNjaGVkdWxlZFJlZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVudCwgJm1fZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdv
aW5nUmVmZXJyZXIoKSkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkUmVmcmVz
aD4oaW5pdGlhdGluZ0RvY3VtZW50LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCB1cmwsIG1fZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CiB9CiAKIHZv
aWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3Rl
cHMpCkBAIC00OTgsMTMgKzQ5OCwxMyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVk
dWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQogICAgIH0KIAogICAgIC8vIEluIGFsbCBv
dGhlciBjYXNlcywgc2NoZWR1bGUgdGhlIGhpc3RvcnkgdHJhdmVyc2FsIHRvIG9jY3VyIGFzeW5j
aHJvbm91c2x5LgotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkSGlzdG9y
eU5hdmlnYXRpb24+KHN0ZXBzKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRI
aXN0b3J5TmF2aWdhdGlvbj4oc3RlcHMpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVy
OjpzY2hlZHVsZVBhZ2VCbG9jayhEb2N1bWVudCYgb3JpZ2luRG9jdW1lbnQpCiB7CiAgICAgaWYg
KHNob3VsZFNjaGVkdWxlTmF2aWdhdGlvbigpKQotICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2Vf
dW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3JpZ2luRG9jdW1lbnQpKTsKKyAgICAgICAgc2No
ZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRQYWdlQmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CiB9
CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6dGltZXJGaXJlZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAppbmRleCBhMmRkYWNlMjhmMDdjMzkxZmUy
NGUxOTE4ZDI1NGE1MDAyZmFiNDc2Li45N2MyM2IxNTA5MmJmMzkzYjMxZDIwYzhmMzRkMjU3NzI2
MzFjYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgK
QEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBlbnVtIGNsYXNzIE5ld0xv
YWRJblByb2dyZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICAKIGNsYXNzIE5hdmlnYXRpb25T
Y2hlZHVsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IE5hdmlnYXRpb25TY2hlZHVsZXIoRnJhbWUmKTsKICAgICB+TmF2aWdhdGlvblNjaGVk
dWxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAppbmRleCBl
MTdhOWRjNzJkZTAzN2M5NjM0YmMxY2M5M2MyYzFhNzdhODZiZmEzLi4yODE3YTc2NjY0NTdiMjM5
NzNhNjhmY2Y3YmMwMTgwYzEyYmY1Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpp
bmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
CiAKICAgICBhdXRvJiBpdGVtID0gbV9wcm9ncmVzc0l0ZW1zLmFkZChpZGVudGlmaWVyLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFpdGVtKSB7Ci0gICAgICAgIGl0ZW0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKKyAgICAgICAg
aXRlbSA9IG1ha2VVbmlxdWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0ZWRMZW5ndGgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFJlc291cmNlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNl
RGVjb2Rlci5jcHAKaW5kZXggZWE1ZGJmYmFhYjIwYmZkNDNkZWFjZjFlNzc2MTFjMzQzM2FiYWI4
My4uODI0NmJiMDcwNmNkMGMwNzFmODk5NjI4OTg2YTViYTUxYzQ4YjYzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtNTM1LDcgKzUzNSw3
IEBAIGJvb2wgVGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldChjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuLCBib29sCiAgICAgaWYgKG1fY29udGVudFR5cGUgPT0gWE1M
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fY2hhcnNldFBhcnNlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SFRNTE1ldGFDaGFyc2V0UGFyc2VyPigpOworICAgIG1fY2hhcnNldFBhcnNlciA9
IG1ha2VVbmlxdWU8SFRNTE1ldGFDaGFyc2V0UGFyc2VyPigpOwogICAgIHJldHVybiBjaGVja0Zv
ck1ldGFDaGFyc2V0KGRhdGEsIGxlbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5jcHAKaW5kZXggY2E5ZTZjNDM0M2Q3NDAxMDU1M2E5ZTEwZmE2NTYzZWU1MjM5
MWJiZS4uZmE5MjZlYTA2MmFkZmYyMDU3MGM4YTM2OTEyNDY3MmI5ZWY1NjZmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9p
ZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2N1ZVBhcnNlcikKLSAgICAgICAg
bV9jdWVQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8
V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgICAgIG1fY3VlUGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0
PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwog
CiAgICAgd2hpbGUgKG1fcGFyc2VPZmZzZXQgPCBidWZmZXItPnNpemUoKSkgewogICAgICAgICBh
dXRvIGRhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKG1fcGFyc2VPZmZzZXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGExMjYz
ZTJmMDQ1NzRiNGYwZWU3M2MwNGU4YjYyZjVjODA3MmE3NTguLjc3NTMyZjg2MTM0ZTA0M2FkMzdk
M2Y1OTk5OGE2ZjU3YTQyNDE3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTExNSwxMSArMTE1LDExIEBAIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJs
ZUxvYWRlckNsaWVuCiAgICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKICAgICBh
dXRvIHNlY3VyaXR5T3JpZ2luQ29weSA9IHNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENvcHkoKTsK
LSAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOwor
ICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IG1ha2VVbmlxdWU8Q29udGVudFNl
Y3VyaXR5UG9saWN5PihnbG9iYWxTY29wZS51cmwoKS5pc29sYXRlZENvcHkoKSk7CiAgICAgY29u
dGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVN0YXRlRnJvbShjb250ZW50U2VjdXJpdHlQb2xp
Y3kpOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlVcGdyYWRlSW5zZWN1cmVS
ZXF1ZXN0U3RhdGVGcm9tKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCi0gICAgYXV0byBvcHRp
b25zQ29weSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMsIHJl
cXVlc3QuaHR0cFJlZmVycmVyKCkuaXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDogcmVxdWVz
dC5odHRwUmVmZXJyZXIoKSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKKyAgICBhdXRv
IG9wdGlvbnNDb3B5ID0gbWFrZVVuaXF1ZTxMb2FkZXJUYXNrT3B0aW9ucz4ob3B0aW9ucywgcmVx
dWVzdC5odHRwUmVmZXJyZXIoKS5pc051bGwoKSA/IG91dGdvaW5nUmVmZXJyZXIgOiByZXF1ZXN0
Lmh0dHBSZWZlcnJlcigpLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luQ29weSkpOwogCiAgICAgLy8g
QWxsIGxvYWRzIHN0YXJ0IG91dCBhcyBEb2N1bWVudC4gSW5zaWRlIFdvcmtlclRocmVhZGFibGVM
b2FkZXIgd2UgdXBncmFkZSB0aGlzIHRvIGEgV29ya2VyIGxvYWQuCiAgICAgQVNTRVJUKG9wdGlv
bnNDb3B5LT5vcHRpb25zLmluaXRpYXRvckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6RG9j
dW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcAppbmRleCBmOTdlYjAwNDI1YmQyOWIzY2I2YmNiMzQ1ZmJmZDY1MjI0
MDhmOGNlLi5iYmE5MTA0MTkxNTRlY2Y0M2MxMjJlMmQ5MGNmODY0NTU5N2E5OWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcApAQCAtNDIzLDcgKzQyMyw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoTm9kZSYgbm9kZSwgV1RGOjpGdW5jdGlvbjxib29sCiAgICAgLy8g
YnV0IHdlIGNhbiBhcHByb3hpbWF0ZSB0aGF0IGJ5IGNoZWNraW5nIGlmIHNjcmlwdGluZyBpcyBl
bmFibGVkIHJpZ2h0IG5vdy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFF1YWxpZmllZE5h
bWU+PiB0YWdOYW1lc1RvRmlsdGVyOwogICAgIGlmIChmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5w
YWdlKCktPnNldHRpbmdzKCkuaXNTY3JpcHRFbmFibGVkKCkpIHsKLSAgICAgICAgdGFnTmFtZXNU
b0ZpbHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFF1YWxpZmllZE5hbWU+PigpOworICAg
ICAgICB0YWdOYW1lc1RvRmlsdGVyID0gbWFrZVVuaXF1ZTxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+
KCk7CiAgICAgICAgIHRhZ05hbWVzVG9GaWx0ZXItPmFwcGVuZChIVE1MTmFtZXM6Om5vc2NyaXB0
VGFnKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IGYzMTI5MDcyOGY2OTkwZDgwMDhiYTI2NDQwMjFjYjFkODg1Yjk0NTcuLjcwZjU4
Njg0OGVhZWUyOTEyNmM0YmFlOTEwNmMxNWUyOTZhOTA3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgQ2Fj
aGVkSW1hZ2U6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
CiAgICAgICAgIG1faW1hZ2VPYnNlcnZlci0+Y2FjaGVkSW1hZ2VzKCkuYWRkKHRoaXMpOwogCiAg
ICAgaWYgKG1faW1hZ2UgJiYgaXM8U1ZHSW1hZ2U+KCptX2ltYWdlKSkKLSAgICAgICAgbV9zdmdJ
bWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZH
SW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IG1ha2VVbmlxdWU8
U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOwogfQogCiB2b2lk
IENhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
QEAgLTM1Nyw3ICszNTcsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2Uo
KQogCiAgICAgaWYgKG1faW1hZ2UpIHsKICAgICAgICAgaWYgKGlzPFNWR0ltYWdlPigqbV9pbWFn
ZSkpCi0gICAgICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0lt
YWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAgICAgICAgIG1f
c3ZnSW1hZ2VDYWNoZSA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0lt
YWdlPigqbV9pbWFnZSkpOwogCiAgICAgICAgIC8vIFNlbmQgcXVldWVkIGNvbnRhaW5lciBzaXpl
IHJlcXVlc3RzLgogICAgICAgICBpZiAobV9pbWFnZS0+dXNlc0NvbnRhaW5lclNpemUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
aW5kZXggYmU2MTgzYWJmYTU5ZDVjOGUxNjJmZWMxZDY1NTI0NTIzYWRlMjc4Yy4uZjlhNzVmMzU0
NTI3NjkwMmE5ZTRhNWMzNWI2YWM2YjFmMTUwYzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAg
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXIKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0
UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICBlbHNlIHsKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChSZWRp
cmVjdFBhaXIocmVxdWVzdCwgcmVzcG9uc2UpKTsKLSAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50
cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92
ZShyZXF1ZXN0KSwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlc3BvbnNlPihyZXNwb25zZSks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCByZXNwb25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgeworICAg
ICAgICBpdGVyYXRlQ2xpZW50cyhDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudD4obV9jbGllbnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3
UmVzb3VyY2U+KHRoaXMpLCBXVEZNb3ZlKHJlcXVlc3QpLCBtYWtlVW5pcXVlPFJlc291cmNlUmVz
cG9uc2U+KHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZl
ZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAppbmRleCBlNDMwZTQ0N2FjNDk0NjM2Yzk4NGU3NGQ0MGI5MWU2NWNk
ZWJiNTBiLi4wNTY3ZDFkNWRlOGM2ZjEzZTE4Njg0NGFlZDc1NTc1Y2YxN2UxNzJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTU0Niw3
ICs1NDYsNyBAQCBib29sIENhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldChDYWNoZWRSZXNv
dXJjZUNsaWVudCYgY2xpZW50KQogICAgICAgICAvLyBUaGVyZWZvcmUsIHJhdGhlciB0aGFuIGlt
bWVkaWF0ZWx5IHNlbmRpbmcgY2FsbGJhY2tzIG9uIGEgY2FjaGUgaGl0IGxpa2Ugb3RoZXIgQ2Fj
aGVkUmVzb3VyY2VzLAogICAgICAgICAvLyB3ZSBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZCBl
bnN1cmUgd2UgbmV2ZXIgZmluaXNoIHN5bmNocm9ub3VzbHkuCiAgICAgICAgIEFTU0VSVCghbV9j
bGllbnRzQXdhaXRpbmdDYWxsYmFjay5jb250YWlucygmY2xpZW50KSk7Ci0gICAgICAgIG1fY2xp
ZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKCZjbGllbnQsIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJh
Y2s+KCp0aGlzLCBjbGllbnQpKTsKKyAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5h
ZGQoJmNsaWVudCwgbWFrZVVuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsIGNsaWVudCkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4NDNhOWQxZjlkNmM4NWYxMDAw
YTJjNDBmMTk2NGI0N2EyZWIxYzdhLi5iMzRiOGZkMzVjMTA3N2E1NDUyYWJiMzQzMjM2MWI0Y2Mz
ZDExYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdQogICAgIC8vIEVudHJ5IHBvaW50IHRvIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3Jn
LyNtYWluLWZldGNoLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG9yaWdp
bmFsUmVxdWVzdDsKICAgICBpZiAoQ2FjaGVkUmVzb3VyY2U6OnNob3VsZFVzZVBpbmdMb2FkKHR5
cGUpIHx8IHJlcXVlc3Qub3B0aW9ucygpLmRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVz
dGluYXRpb246OkVtcHR5U3RyaW5nKSB7Ci0gICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsK
KyAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBvcmlnaW5hbFJlcXVlc3QtPmNsZWFy
SFRUUFJlZmVycmVyKCk7CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdC0+Y2xlYXJIVFRQT3JpZ2lu
KCk7CiAgICAgfQpAQCAtMTM5MSw3ICsxMzkxLDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWwK
ICAgICAgICAgcmVzb3VyY2VWYWx1ZS0+aW5jcmVhc2VQcmVsb2FkQ291bnQoKTsKIAogICAgICAg
ICBpZiAoIW1fcHJlbG9hZHMpCi0gICAgICAgICAgICBtX3ByZWxvYWRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOworICAgICAgICAgICAgbV9wcmVs
b2FkcyA9IG1ha2VVbmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKICAgICAg
ICAgbV9wcmVsb2Fkcy0+YWRkKHJlc291cmNlVmFsdWUuZ2V0KCkpOwogICAgIH0KICAgICByZXR1
cm4gcmVzb3VyY2U7CkBAIC0xNDMzLDcgKzE0MzMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpjbGVhclByZWxvYWRzKENsZWFyUHJlbG9hZHNNb2RlIG1vZGUpCiAgICAgICAgIEFTU0VS
VChyZXNvdXJjZSk7CiAgICAgICAgIGlmIChtb2RlID09IENsZWFyUHJlbG9hZHNNb2RlOjpDbGVh
clNwZWN1bGF0aXZlUHJlbG9hZHMgJiYgcmVzb3VyY2UtPmlzTGlua1ByZWxvYWQoKSkgewogICAg
ICAgICAgICAgaWYgKCFyZW1haW5pbmdMaW5rUHJlbG9hZHMpCi0gICAgICAgICAgICAgICAgcmVt
YWluaW5nTGlua1ByZWxvYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRS
ZXNvdXJjZSo+PigpOworICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xpbmtQcmVsb2FkcyA9IG1h
a2VVbmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKICAgICAgICAgICAgIHJl
bWFpbmluZ0xpbmtQcmVsb2Fkcy0+YWRkKHJlc291cmNlKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCmluZGV4IDcwY2IxYWZhNGNmMWQzYTZlNjQyYThh
ZTlkYjg0NDhmODRkMTRiZDYuLjE0NDI1NzRjM2RiOGQ1ZWZhZDNkYzc1MjM3OWFmY2UwMjk3ZDBl
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZS5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIENhY2hlZFJlc291
cmNlTG9hZGVyOwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAogY2xhc3MgQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UgOiBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBkM2I4MDUxNDIzYzNmYzUyNGJkOGI2ZjU1ZjM1YTZh
YzIyMzBiMjAyLi4zZGVhZDQ2YzFkNGQ3OGNmN2NkZjAzYWZmY2JlZjM5Mjc4MjYzYzQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTg2LDcgKzg2
LDcgQEAgYXV0byBNZW1vcnlDYWNoZTo6ZW5zdXJlU2Vzc2lvblJlc291cmNlTWFwKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gQ2FjaGVkUmUKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzVmFs
aWQoKSk7CiAgICAgYXV0byYgbWFwID0gbV9zZXNzaW9uUmVzb3VyY2VzLmFkZChzZXNzaW9uSUQs
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIW1hcCkKLSAgICAgICAgbWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFr
ZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAt
MjE2LDcgKzIxNiw3IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJ
bWFnZVB0ciYmIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICByZW1vdmVJbWFnZUZy
b21DYWNoZSh1cmwsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVu
dHJ5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgogCiAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1h
cEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGF1dG8gY2FjaGVk
SW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0
cigpLCBzZXNzaW9uSUQsIGNvb2tpZUphciwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAg
IGF1dG8gY2FjaGVkSW1hZ2UgPSBtYWtlVW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcElt
YWdlLnB0cigpLCBzZXNzaW9uSUQsIGNvb2tpZUphciwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24p
OwogCiAgICAgY2FjaGVkSW1hZ2UtPmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkp
OwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNp
emUoKSk7CkBAIC00NzMsNyArNDczLDcgQEAgYXV0byBNZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcihD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIC0+IExSVUxpc3QmCiAKICAgICBtX2FsbFJlc291cmNl
cy5yZXNlcnZlQ2FwYWNpdHkocXVldWVJbmRleCArIDEpOwogICAgIHdoaWxlIChtX2FsbFJlc291
cmNlcy5zaXplKCkgPD0gcXVldWVJbmRleCkKLSAgICAgICAgbV9hbGxSZXNvdXJjZXMudW5jaGVj
a2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TFJVTGlzdD4oKSk7CisgICAgICAgIG1fYWxsUmVz
b3VyY2VzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPExSVUxpc3Q+KCkpOwogICAgIHJldHVy
biAqbV9hbGxSZXNvdXJjZXNbcXVldWVJbmRleF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9QcmV2aWV3TG9hZGVyLmgKaW5kZXggNjE4ZTk0Mjk1MDE3ZGMzYjgzMDM2NWMxMTY3NjE1
MzhiMWRiNjIzOC4uMTUwM2Q3OGUzYWY1OTk0OTU0YjMzYzJhODA4NGY0ZmVhNjMwMDcwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcg
QEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
UHJldmlld0xvYWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUHJldmlld0xvYWRlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L1ByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW0KaW5kZXggZjZiODIyMTc5MTZjYWQ5NWJmZTk2MGJiM2UzNzg0YTI3MGE5YmE2Ny4uYzVj
YTVjMjVmMTFiNGQ4YTljYTkzZWZjODg5MDk5MDdmNmI3NjYwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQpAQCAtODYsNyArODYsNyBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooUmVzb3VyY2VMb2FkZXImKXJlc291cmNlTG9h
ZGVyIHJlc291cmNlUgogCiAgICAgX3Jlc291cmNlTG9hZGVyID0gbWFrZVdlYWtQdHIocmVzb3Vy
Y2VMb2FkZXIpOwogICAgIF9yZXNwb25zZSA9IHJlc291cmNlUmVzcG9uc2U7Ci0gICAgX2NvbnZl
cnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNl
KTsKKyAgICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBf
cmVzcG9uc2UpOwogICAgIF9idWZmZXJlZERhdGFBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5n
ID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpOwogCkBAIC0yNDYsNyArMjQ2LDcgQEAgLSAo
dm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRo
RXJyb3I6KE5TRXJyb3IgKillcnIKICAgICB9CiAKICAgICBfY2xpZW50LT5kaWRSZXF1ZXN0UGFz
c3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKGNvbnN0IFN0cmlu
ZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJl
dmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBwYXNzd29yZCk7CisgICAgICAgIF9jb252
ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFz
c3dvcmQpOwogICAgICAgICBbX2NvbnZlcnRlci0+cGxhdGZvcm1Db252ZXJ0ZXIoKSBhcHBlbmRE
YXRhQXJyYXk6X2J1ZmZlcmVkRGF0YUFycmF5LmdldCgpXTsKICAgICAgICAgW19jb252ZXJ0ZXIt
PnBsYXRmb3JtQ29udmVydGVyKCkgZmluaXNoZWRBcHBlbmRpbmdEYXRhXTsKICAgICB9KTsKQEAg
LTI2OCw3ICsyNjgsNyBAQCBQcmV2aWV3TG9hZGVyOjp+UHJldmlld0xvYWRlcigpCiBzdGQ6OnVu
aXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gUHJldmlld0xvYWRlcjo6Y3JlYXRlKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFT
U0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBl
KCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIs
IHJlc3BvbnNlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIs
IHJlc3BvbnNlKTsKIH0KIAogYm9vbCBQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzQ3OWNhMWY5Y2IwN2Q0YWM3YjRiOWZiMjI4NTFmMGM5
OTRiMTcxNC4uNGNjZGFiMDRiN2IzZjU1MzRjZWNjMmExOWVjMGE0YmNiN2FiMTdlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTgwLDcg
KzE4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZXh0TWVudT4gQ29udGV4dE1lbnVDb250cm9s
bGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51KEV2ZW50CiAgICAgfQogI2VuZGlmCiAKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudT4oKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDb250ZXh0TWVudT4oKTsKIH0KIAogdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNo
b3dDb250ZXh0TWVudShFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwCmluZGV4IGY2M2RhYTdmNjM0NzI1NTg4NzNkYjNiNTgzYmMyNTEyYTE3NzUy
N2EuLmNkYzc0ZjZkZTA5ZTkzZGU5YWFiOTIzNTZlZjJmYmY0NGRkMmQzMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBAIC04OCw3ICs4OCw3IEBAIGNsYXNz
IE1vdXNlV2hlZWxSZWdpb25PdmVybGF5IGZpbmFsIDogcHVibGljIFJlZ2lvbk92ZXJsYXkgewog
CiBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24oKQogewotICAgIGF1
dG8gcmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KCk7CisgICAgYXV0byByZWdpb24g
PSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICAKICAgICBmb3IgKGNvbnN0IEZyYW1lKiBmcmFt
ZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKCFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+ZG9j
dW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA0OGMwNzM0Nzcw
ZWIxMTBjMWM1ZDg0NTNkZDA4Nzk5MmU1NjQ5YTFlLi5kMjBiOThjNDE1ZWVjODI3NmY4OTAwZjI0
YzY3YTk3ZjEwMWQwYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0z
ODUsNyArMzg1LDcgQEAgRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUmIGZyYW1lKQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGVuZGluZ01vbWVudHVtV2hlZWxFdmVudHNUaW1l
cigqdGhpcywgJkV2ZW50SGFuZGxlcjo6Y2xlYXJMYXRjaGVkU3RhdGUpCiAjZW5kaWYKLSAgICAs
IG1fYXV0b3Njcm9sbENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBdXRvc2Nyb2xsQ29udHJv
bGxlcj4oKSkKKyAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIobWFrZVVuaXF1ZTxBdXRvc2Ny
b2xsQ29udHJvbGxlcj4oKSkKICNpZiAhRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgLCBt
X2Zha2VNb3VzZU1vdmVFdmVudFRpbWVyKCp0aGlzLCAmRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VN
b3ZlRXZlbnRUaW1lckZpcmVkKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggMjMzNzI5NDJiMzc2M2Q5MjkzZDI2NWIzNWFjYzE1MjVlMzRjYzAwZi4uYTVlNWVkZTBiNGI3
NDdlNDc5NGRjNzk0MDZhZWZjY2JiMzg1ZGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtMTI5MSw3ICsxMjkxLDcgQEAgUmVuZGVyQm94KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29u
dGVudEJveCgpIGNvbnN0CiB2b2lkIEZyYW1lVmlldzo6YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0
ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRkZWRPYmplY3QpCiB7CiAgICAgaWYgKCFtX2Vt
YmVkZGVkT2JqZWN0c1RvVXBkYXRlKQotICAgICAgICBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+Pigp
OworICAgICAgICBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlID0gbWFrZVVuaXF1ZTxMaXN0SGFz
aFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+PigpOwogCiAgICAgSFRNTEZyYW1lT3duZXJFbGVt
ZW50JiBlbGVtZW50ID0gZW1iZWRkZWRPYmplY3QuZnJhbWVPd25lckVsZW1lbnQoKTsKICAgICBp
ZiAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+
KGVsZW1lbnQpKSB7CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRkU2xv
d1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAgICAgYm9vbCBoYWRTbG93
UmVwYWludE9iamVjdHMgPSBoYXNTbG93UmVwYWludE9iamVjdHMoKTsKIAogICAgIGlmICghbV9z
bG93UmVwYWludE9iamVjdHMpCi0gICAgICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzID0gc3RkOjpt
YWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVsZW1lbnQqPj4oKTsKKyAgICAgICAgbV9z
bG93UmVwYWludE9iamVjdHMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyRWxlbWVu
dCo+PigpOwogCiAgICAgbV9zbG93UmVwYWludE9iamVjdHMtPmFkZCgmcmVuZGVyZXIpOwogICAg
IGlmIChoYWRTbG93UmVwYWludE9iamVjdHMpCkBAIC0xNDYyLDcgKzE0NjIsNyBAQCB2b2lkIEZy
YW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIp
CiB2b2lkIEZyYW1lVmlldzo6YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKCFtX3ZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzKQotICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gc3RkOjptYWtl
X3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0PigpOworICAgICAgICBtX3ZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzID0gbWFrZVVuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0U2V0PigpOwogCiAgICAgaWYgKCFtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5jb250
YWlucyhvYmplY3QpKSB7CiAgICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmFk
ZChvYmplY3QpOwpAQCAtNDg2Niw3ICs0ODY2LDcgQEAgU3RyaW5nIEZyYW1lVmlldzo6dHJhY2tl
ZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0CiBib29sIEZyYW1lVmlldzo6YWRkU2Nyb2xsYWJs
ZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogewogICAgIGlmICghbV9zY3Jv
bGxhYmxlQXJlYXMpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0gc3RkOjptYWtlX3VuaXF1
ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYXMgPSBtYWtl
VW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOwogICAgIAogICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhcy0+YWRkKHNjcm9sbGFibGVBcmVhKS5pc05ld0VudHJ5KSB7CiAgICAgICAgIHNjcm9sbGFi
bGVBcmVhU2V0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXdMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5
b3V0Q29udGV4dC5jcHAKaW5kZXggNzMwOThmMWZhMWYxMDcxZTYxZmNkM2FhNjUzNTMzMGQzZTg5
YmY1OS4uZTg1OGM5MmNiZjhjMzFhMzIxYmYzODAwOTdhYmE1NWYxNTcwMDBhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCkBAIC01OTYsMTQg
KzU5NiwxNCBAQCB2b2lkIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZShS
ZW5kZXJFbGVtZW50JiByb290KQogICAgIEFTU0VSVCghbV9wYWludE9mZnNldENhY2hlRGlzYWJs
ZUNvdW50KTsKICAgICBBU1NFUlQoIWxheW91dFN0YXRlKCkpOwogCi0gICAgbV9sYXlvdXRTdGF0
ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihyb290KSk7
CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0
YXRlPihyb290KSk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91
dFN0YXRlRm9yUGFnaW5hdGlvbklmTmVlZGVkKFJlbmRlckJsb2NrRmxvdyYgbGF5b3V0Um9vdCkK
IHsKICAgICBpZiAobGF5b3V0U3RhdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1f
bGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0
ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0U3RhdGU6OklzUGFnaW5hdGVkOjpZZXMpKTsKKyAg
ICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+
KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRlOjpJc1BhZ2luYXRlZDo6WWVzKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAgICAgCkBAIC02MTMsNyArNjEzLDcgQEAgYm9vbCBGcmFtZVZpZXdM
YXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUoUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3Qg
TGF5b3V0U2kKICAgICBhdXRvKiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CiAg
ICAgaWYgKCFsYXlvdXRTdGF0ZSB8fCAhbmVlZHNGdWxsUmVwYWludCgpIHx8IGxheW91dFN0YXRl
LT5pc1BhZ2luYXRlZCgpIHx8IHJlbmRlcmVyLmVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCkKICAg
ICAgICAgfHwgbGF5b3V0U3RhdGUtPmxpbmVHcmlkKCkgfHwgKHJlbmRlcmVyLnN0eWxlKCkubGlu
ZUdyaWQoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVHcmlkKCkgJiYgcmVuZGVyZXIuaXNS
ZW5kZXJCbG9ja0Zsb3coKSkpIHsKLSAgICAgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihtX2xheW91dFN0YXRlU3RhY2ssIHJl
bmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VIZWlnaHRDaGFuZ2VkKSk7CisgICAgICAg
IG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4o
bV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdlSGVp
Z2h0Q2hhbmdlZCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKaW5kZXggOGMzYzUyYTA3MzUy
Mjc5MGNkMGM0YTYwZGMwNWU2MTQxMmMxOWFlOS4uNTIyN2U0MmFjMDk2Y2U2OTI1ZDdlYzZhMThl
NTE5MjVkMmUwMDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCkBAIC0x
NDksNyArMTQ5LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lciYgTmF2aWdhdG9yQmFzZTo6c2Vy
dmljZVdvcmtlcigpCiB7CiAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKSk7CiAgICAgaWYgKCFtX3NlcnZpY2VX
b3JrZXJDb250YWluZXIpCi0gICAgICAgIG1fc2VydmljZVdvcmtlckNvbnRhaW5lciA9IHN0ZDo6
bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5lcj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCAqdGhpcyk7CisgICAgICAgIG1fc2VydmljZVdvcmtlckNvbnRhaW5lciA9IG1ha2VVbmlx
dWU8U2VydmljZVdvcmtlckNvbnRhaW5lcj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhp
cyk7CiAgICAgcmV0dXJuICptX3NlcnZpY2VXb3JrZXJDb250YWluZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IGVkYTdjNWZhNWQ2NDc5YmE3MTA5MDIwYjUyODMyY2UyNjFiY2Q3ZTkuLjI5
YTJhZjc0YmNhZGQ2YjMwYzZhZmY2MGVjNGUzMWQwYjQ3MmJmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cApAQCAtMjExLDI2ICsyMTEsMjYgQEAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gcGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkKIH0KIAogUGFnZTo6UGFn
ZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQotICAgIDogbV9jaHJvbWUo
c3RkOjptYWtlX3VuaXF1ZTxDaHJvbWU+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21l
Q2xpZW50KSkKLSAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERy
YWdDYXJldENvbnRyb2xsZXI+KCkpCisgICAgOiBtX2Nocm9tZShtYWtlVW5pcXVlPENocm9tZT4o
KnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQorICAgICwgbV9kcmFnQ2Fy
ZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8RHJhZ0NhcmV0Q29udHJvbGxlcj4oKSkKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9kcmFnQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVl
PERyYWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQor
ICAgICwgbV9kcmFnQ29udHJvbGxlcihtYWtlVW5pcXVlPERyYWdDb250cm9sbGVyPigqdGhpcywg
KnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQogI2VuZGlmCi0gICAgLCBtX2ZvY3VzQ29u
dHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VJbml0
aWFsQWN0aXZpdHlTdGF0ZSgpKSkKKyAgICAsIG1fZm9jdXNDb250cm9sbGVyKG1ha2VVbmlxdWU8
Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpKQogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNvbnRyb2xsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3Vy
YXRpb24uY29udGV4dE1lbnVDbGllbnQpKQorICAgICwgbV9jb250ZXh0TWVudUNvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRp
b24uY29udGV4dE1lbnVDbGllbnQpKQogI2VuZGlmCi0gICAgLCBtX3VzZXJJbnB1dEJyaWRnZShz
dGQ6Om1ha2VfdW5pcXVlPFVzZXJJbnB1dEJyaWRnZT4oKnRoaXMpKQotICAgICwgbV9pbnNwZWN0
b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMs
IHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCkpCisgICAgLCBtX3VzZXJJbnB1dEJy
aWRnZShtYWtlVW5pcXVlPFVzZXJJbnB1dEJyaWRnZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0
b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VD
b25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCkpCiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRT
KQotICAgICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2lu
dGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250
cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckNhcHR1cmVDb250cm9sbGVyPigqdGhpcykpCiAjZW5k
aWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAs
IG1fcG9pbnRlckxvY2tDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVy
PigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlz
KSkKLSAgICAsIG1fcHJvZ3Jlc3Moc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCpw
YWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQpKQotICAgICwgbV9iYWNrRm9y
d2FyZENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0
aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCisgICAg
LCBtX3Byb2dyZXNzKG1ha2VVbmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigqcGFnZUNvbmZpZ3VyYXRp
b24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKKyAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVy
KG1ha2VVbmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQogICAgICwgbV9tYWluRnJhbWUoRnJhbWU6
OmNyZWF0ZSh0aGlzLCBudWxscHRyLCBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JN
YWluRnJhbWUpKQogICAgICwgbV9lZGl0b3JDbGllbnQoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlv
bi5lZGl0b3JDbGllbnQpKQogICAgICwgbV9wbHVnSW5DbGllbnQocGFnZUNvbmZpZ3VyYXRpb24u
cGx1Z0luQ2xpZW50KQpAQCAtMjUwLDkgKzI1MCw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3Vy
YXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRl
cnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQYWdlOjpkb21UaW1lckFsaWdubWVudEludGVydmFs
SW5jcmVhc2VUaW1lckZpcmVkKQogICAgICwgbV9hY3Rpdml0eVN0YXRlKHBhZ2VJbml0aWFsQWN0
aXZpdHlTdGF0ZSgpKQogICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQocGFnZUNvbmZpZ3Vy
YXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KQotICAgICwgbV9jb25zb2xlQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVDbGllbnQ+KCp0aGlzKSkKKyAgICAsIG1fY29uc29sZUNs
aWVudChtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50PigqdGhpcykpCiAjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxl
KG1ha2VVbmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9zb2Nr
ZXRQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyKSkKICAg
ICAsIG1fY29va2llSmFyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uY29va2llSmFyKSkKQEAg
LTI2OCwxNiArMjY4LDE2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29u
ZmlndXJhdGlvbikKICAgICAsIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGVUaW1lcigq
dGhpcywgJlBhZ2U6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGltZXJGaXJlZCkKICNl
bmRpZgogICAgICwgbV9pc1V0aWxpdHlQYWdlKGlzVXRpbGl0eVBhZ2VDaHJvbWVDbGllbnQoY2hy
b21lKCkuY2xpZW50KCkpKQotICAgICwgbV9wZXJmb3JtYW5jZU1vbml0b3IoaXNVdGlsaXR5UGFn
ZSgpID8gbnVsbHB0ciA6IHN0ZDo6bWFrZV91bmlxdWU8UGVyZm9ybWFuY2VNb25pdG9yPigqdGhp
cykpCi0gICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8TG93UG93
ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeyBoYW5k
bGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQb3dlck1vZGVFbmFibGVkKTsgfSkpCi0gICAgLCBt
X3BlcmZvcm1hbmNlTG9nZ2luZyhzdGQ6Om1ha2VfdW5pcXVlPFBlcmZvcm1hbmNlTG9nZ2luZz4o
KnRoaXMpKQorICAgICwgbV9wZXJmb3JtYW5jZU1vbml0b3IoaXNVdGlsaXR5UGFnZSgpID8gbnVs
bHB0ciA6IG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VNb25pdG9yPigqdGhpcykpCisgICAgLCBtX2xv
d1Bvd2VyTW9kZU5vdGlmaWVyKG1ha2VVbmlxdWU8TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlz
XShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeyBoYW5kbGVMb3dNb2RlUG93ZXJDaGFuZ2Uo
aXNMb3dQb3dlck1vZGVFbmFibGVkKTsgfSkpCisgICAgLCBtX3BlcmZvcm1hbmNlTG9nZ2luZyht
YWtlVW5pcXVlPFBlcmZvcm1hbmNlTG9nZ2luZz4oKnRoaXMpKQogI2lmIFBMQVRGT1JNKE1BQykg
JiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9E
RVRFQ1RJT04pKQotICAgICwgbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9zZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJvbGxlcj4o
KnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRlcihXaGVl
bEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpKQotICAgICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAs
IG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVy
PigqdGhpcykpCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICAsIG1fcGF5bWVudENvb3JkaW5h
dG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqcGFnZUNvbmZpZ3VyYXRp
b24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkKKyAgICAsIG1fcGF5bWVudENvb3JkaW5hdG9y
KG1ha2VVbmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqcGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVu
dENvb3JkaW5hdG9yQ2xpZW50KSkKICNlbmRpZgogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAg
LCBtX2F1dGhlbnRpY2F0b3JDb29yZGluYXRvcihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvcj4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JDbGllbnQpKSkKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFBhZ2U6OmluaXRHcm91cCgp
CiB7CiAgICAgQVNTRVJUKCFtX3NpbmdsZVBhZ2VHcm91cCk7CiAgICAgQVNTRVJUKCFtX2dyb3Vw
KTsKLSAgICBtX3NpbmdsZVBhZ2VHcm91cCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUdyb3VwPigq
dGhpcyk7CisgICAgbV9zaW5nbGVQYWdlR3JvdXAgPSBtYWtlVW5pcXVlPFBhZ2VHcm91cD4oKnRo
aXMpOwogICAgIG1fZ3JvdXAgPSBtX3NpbmdsZVBhZ2VHcm91cC5nZXQoKTsKIH0KIApAQCAtMjY1
NCw3ICsyNjU0LDcgQEAgdm9pZCBQYWdlOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUo
Ym9vbCB2aXNpYmxlKQogICAgIH0KIAogICAgIGlmICghbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSAm
JiBtX3NldHRpbmdzLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpKQotICAgICAgICBt
X3Jlc291cmNlVXNhZ2VPdmVybGF5ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3Zl
cmxheT4oKnRoaXMpOworICAgICAgICBtX3Jlc291cmNlVXNhZ2VPdmVybGF5ID0gbWFrZVVuaXF1
ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKaW5kZXggZDAzMmZjZjcwZjg2YTYzYWFkZDEx
ZjIyN2ZhOTZkZDA2M2MxZWE2MS4uNjNmNjU2ZjFhNWFiOGUyNmZiOTU1ZTYzNGU0NWE5YThhMTJm
ZGQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKQEAgLTE2
MCw5ICsxNjAsOSBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogCiAgICAgaWYgKGNhbGxTdGFj
aykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNh
bGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1l
c3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVz
c2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51
bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdl
VHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGlu
ZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIp
OworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
Pihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc3VnZ2VzdGVk
VVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdnZXN0ZWRDb2x1bW5OdW1iZXIsIHN0YXRlLCBy
ZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICBhZGRNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwog
fQpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsCiAgICAgU3RyaW5n
IG1lc3NhZ2VUZXh0OwogICAgIGJvb2wgZ290TWVzc2FnZSA9IGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKIAotICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBhcmd1bWVudHMuY29weVJlZigpLCBl
eGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4
dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhlYyk7CiAKICAgICBTdHJpbmcgdXJsID0gbWVzc2Fn
ZS0+dXJsKCk7CiAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IG1lc3NhZ2UtPmxpbmUoKTsKQEAg
LTM3OSw3ICszNzksNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJgogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGRhdGFVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhZGRNZXNzYWdlKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQ291
bGQgbm90IGNhcHR1cmUgc2NyZWVuc2hvdCJfcywgV1RGTW92ZShhcmd1bWVudHMpKSk7CisgICAg
ICAgICAgICBhZGRNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUgc2NyZWVuc2hvdCJfcywgV1RGTW92ZShhcmd1
bWVudHMpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zODks
NyArMzg5LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYKICAgICBmb3IgKHNpemVfdCBpID0g
KCF0YXJnZXQgPyAwIDogMSk7IGkgPCBhcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQog
ICAgICAgICBhZGp1c3RlZEFyZ3VtZW50cy5hcHBlbmQoeyBzdGF0ZS0+dm0oKSwgYXJndW1lbnRz
LT5hcmd1bWVudEF0KGkpIH0pOwogICAgIGFyZ3VtZW50cyA9IFNjcmlwdEFyZ3VtZW50czo6Y3Jl
YXRlKCpzdGF0ZSwgV1RGTW92ZShhZGp1c3RlZEFyZ3VtZW50cykpOwotICAgIGFkZE1lc3NhZ2Uo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6TG9nLCBkYXRh
VVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICBhZGRNZXNzYWdlKG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2Fn
ZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywgZGF0YVVSTCwgV1RGTW92ZShhcmd1bWVu
dHMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmNwcAppbmRleCA5MTkzNjA0NWMyZmFmNzZjYWM1ZTJjNjllNjIzM2YyY2UzMGJmOWIxLi4xMjhj
MThmMTRiOTA4ZTcxYmM3Y2VmYjM5NjIwN2ZlYmJjMDBmMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuY3BwCkBAIC0xMTYsOSArMTE2LDkgQEAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyYgUGFn
ZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMoKQogewogICAgIGlmICghbV9jYXB0aW9uUHJlZmVy
ZW5jZXMpIHsKICNpZiBQTEFURk9STShNQUMpIHx8IEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9G
UkFNRVdPUkspCi0gICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1
ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRj4oKnRoaXMpOworICAgICAgICBtX2NhcHRp
b25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY+
KCp0aGlzKTsKICNlbHNlCi0gICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gc3RkOjptYWtl
X3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzPigqdGhpcyk7CisgICAgICAgIG1fY2FwdGlv
blByZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzPigqdGhpcyk7
CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKaW5kZXggNmMx
NWIzZmFhODNmNWNhZTBkOTE3NmQwMGM4YWZjMTViNzY2OTMxNi4uY2JiYWMyMWQ0MDA1YjFiMGUx
MTgwMjJmN2FhMTRhOGJjZmVkODUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAK
QEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFBlcmZvcm1hbmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZl
ckZ1bGxUaW1lckZpcmVkKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNv
bnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAg
IG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAg
ICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKIAogICAg
IGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5nLT5tYXJrKG1hcmtOYW1lKTsKICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMjc5LDE0ICsyNzksMTQgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKIHZvaWQgUGVyZm9y
bWFuY2U6OmNsZWFyTWFya3MoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKIHsKICAgICBpZiAoIW1f
dXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2Vy
VGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRp
bWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRpbWluZy0+Y2xlYXJNYXJrcyhtYXJrTmFtZSk7CiB9
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptZWFzdXJlKGNvbnN0IFN0cmluZyYg
bWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYgc3RhcnRNYXJrLCBjb25zdCBTdHJpbmcmIGVuZE1h
cmspCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0
ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcg
PSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbV91
c2VyVGltaW5nLT5tZWFzdXJlKG1lYXN1cmVOYW1lLCBzdGFydE1hcmssIGVuZE1hcmspOwogICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0zMDAsNyArMzAwLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1lYXN1cmUoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwg
Y29uc3QgU3RyaW5nJgogdm9pZCBQZXJmb3JtYW5jZTo6Y2xlYXJNZWFzdXJlcyhjb25zdCBTdHJp
bmcmIG1lYXN1cmVOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3Vz
ZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAg
bV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAgICAgbV91c2Vy
VGltaW5nLT5jbGVhck1lYXN1cmVzKG1lYXN1cmVOYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUHJld2FybUluZm9ybWF0aW9uLmgKaW5kZXggOTlhNDM3MmU1NGQ4NDAyOWJhZmJmOWI4Zjdh
NTgyMDAxZmE2M2ExYi4uMTZiY2YwNDM5MGExNzBmM2RlNzgyNjUwYzJmYzI1MjJjZjUwNTRhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCkBAIC0zMiw2ICszMiw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBQcmV3YXJt
SW5mb3JtYXRpb24geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBG
b250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBmb250Q2FjaGU7CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5jcHAKaW5kZXggMDM3MGYyODg3ZjY1YjU3YjNjZDg5N2U0ZmM2OWU4YTJl
ZmI4NzVkZi4uNDQyOTFhZWZhMzdjOGE3YTg0NDhiZWMzOWFlZWFjMjQzOWVjNDc1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgUHJp
bnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0aW5hdGlvbnMoR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQsIERvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9saW5rZWREZXN0
aW5hdGlvbnMpIHsKLSAgICAgICAgbV9saW5rZWREZXN0aW5hdGlvbnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxlbWVudD4+PigpOworICAgICAgICBtX2xpbmtlZERl
c3RpbmF0aW9ucyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIFJlZjxFbGVtZW50Pj4+KCk7
CiAgICAgICAgIGNvbGxlY3RMaW5rZWREZXN0aW5hdGlvbnMoZG9jdW1lbnQpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCmlu
ZGV4IDU2YTAxMWM0Y2VlOTk3ODk5MDFmYWQzNjMwMmJlMTBjMzQ1NjY1MjcuLjNiODgxZGZiYjE3
MTdmNGU0MTFhNmM1MzQ0NTk1ZmJkM2FiNDMwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmlzU2NoZWR1bGVkKCkgY29uc3QKIHZvaWQgUmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyOjpzdGFydFRpbWVyKFNlY29uZHMgZGVsYXkpCiB7CiAgICAgQVNT
RVJUKCFpc1NjaGVkdWxlZCgpKTsKLSAgICBtX3JlZnJlc2hUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KCp0aGlzLCAmUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpkaXNwbGF5UmVmcmVz
aEZpcmVkKTsKKyAgICBtX3JlZnJlc2hUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAm
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpkaXNwbGF5UmVmcmVzaEZpcmVkKTsKICAgICBtX3Jl
ZnJlc2hUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKaW5kZXggZmFkZTYyZmM3ODdlZTQ4OTc5
YWY2ZGQ4MjY2Mjc3OTgwNGQzNzUxNy4uNmYwNjA4MTc4MjZlYzU2YzZlZThhNWY4Y2QzOTQ0ZWMy
ZDQxOTBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcgog
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyPiBjcmVhdGUoUGFnZSYgcGFnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4ocGFnZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4ocGFnZSk7CiAgICAgfQogCiAgICAg
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKFBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2Jz
ZXJ2ZXIuaAppbmRleCA5NWIxYzhiNWJlODNkODliMjQ5NzllYWVkOWI5ZDRlOTBkM2Y0Zjg3Li5l
ZWViZjliOWU2MWJkNTg4ZmQzYmE5OWZhYjE1MDE5MWNjOGY2NzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZXNpemVPYnNlcnZlci5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgRWxlbWVudDsKIAogc3RydWN0IFJlc2l6ZU9ic2VydmVyRGF0YSB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZlY3RvcjxXZWFrUHRyPFJlc2l6ZU9ic2VydmVy
Pj4gb2JzZXJ2ZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApp
bmRleCA0MjM0MTgyODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFlMWJmLi4wZGViMDY0MTQ4
Zjk3MjZjZDM4YjQxMDA1ZDUyMjk3MjYwYzFjNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VP
CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2NrKTsKICAgICBPcmln
aW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291
cmNlU3RyaW5nLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9yaWdpbkFjY2Vzc1do
aXRlTGlzdD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOwogCiAgICAgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBs
aXN0ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICBsaXN0LT5hcHBlbmQoT3Jp
Z2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Eb21haW4sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zID8gT3JpZ2luQWNjZXNzRW50cnk6OkFsbG93U3ViZG9t
YWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpEaXNhbGxvd1N1YmRvbWFpbnMsIE9yaWdpbkFjY2Vz
c0VudHJ5OjpUcmVhdElQQWRkcmVzc0FzSVBBZGRyZXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzQmFzZS5jcHAKaW5kZXggYjY4NDg5NmYzOTg4NDYyNTRhMTc5N2FkY2RlZDY2NjYwNWU4NWQ1
Yy4uMjdlZWE2YzBhYjkzOGViYzhmOTY1ZGFjYjgyMDMxMTQ0MzE2MGI5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgY29uc3QgU2Vj
b25kcyBsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCA9IDI1MF9tczsKIAogU2V0dGluZ3NCYXNlOjpT
ZXR0aW5nc0Jhc2UoUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShudWxscHRyKQotICAgICwgbV9m
b250R2VuZXJpY0ZhbWlsaWVzKHN0ZDo6bWFrZV91bmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4o
KSkKKyAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyhtYWtlVW5pcXVlPEZvbnRHZW5lcmljRmFt
aWxpZXM+KCkpCiAgICAgLCBtX2xheW91dEludGVydmFsKGxheW91dFNjaGVkdWxlVGhyZXNob2xk
KQogICAgICwgbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbChET01UaW1lcjo6ZGVmYXVsdE1pbmlt
dW1JbnRlcnZhbCgpKQogICAgICwgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyKCp0aGlz
LCAmU2V0dGluZ3NCYXNlOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCmluZGV4IDU1ODQ0MzQwNzgzNDZmYjliNTdhNmVh
NTlhZmNlMjdhNjI0MGI1NWEuLjNjM2Q0OWUwNThhYjEzMTc0N2ViNDliYjBjOTNhMGZkMjk0NTE4
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCkBAIC0zNCw2ICszNCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN1c3BlbmRhYmxlVGltZXIgOiBwcml2
YXRlIFRpbWVyQmFzZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU3VzcGVuZGFibGVUaW1lcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+U3VzcGVuZGFibGVUaW1lcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IGI5
Y2U5OGNjNmNhNWMyNDU2Y2RiOTRmNWRjNDFiNGQyYjUwZTk4ZjYuLjY1MjMxMWQ3YTU1ZjU1MDdh
MDVhYTQzYjYyYzgwMjA4NzIyZGJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBVc2VyQ29udGVudENv
bnRyb2xsZXI6OmZvckVhY2hVc2VyTWVzc2FnZUhhbmRsZXIoRnVuY3Rpb248dm9pZChjb25zdCBV
c2VyTWUKIAogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQoRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1bmlxdWVfcHRyPFVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQp
CiB7Ci0gICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29y
bGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHRWZWN0b3I+KCk7IH0p
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlw
dHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8VXNlclNjcmlwdFZlY3Rv
cj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHNjcmlwdHNJbldvcmxkLT5hcHBlbmQoV1RG
TW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdHMoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkK
IAogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxl
U2hlZXQsIFVzZXJTdHlsZUluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBhdXRv
JiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxkLCBb
Jl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldFZlY3Rvcj4oKTsgfSku
aXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0
eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPFVzZXJTdHls
ZVNoZWV0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgc3R5bGVTaGVldHNJbldv
cmxkLT5hcHBlbmQoV1RGTW92ZSh1c2VyU3R5bGVTaGVldCkpOwogCiAgICAgaWYgKGluamVjdGlv
blRpbWUgPT0gSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcAppbmRleCBmMjU5YWViMWEwYTllNWNlN2ExMzRm
MGQxMjY5ZWMzMTRjOWE5YzMxLi4zMDRkOTRhNzViZjM2MWQ4ZGQ0NmY2YWZmYWZlMzFjM2VmODJh
NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3Bw
CkBAIC00Myw5ICs0Myw5IEBAIFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6fldoZWVsRXZlbnREZWx0
YUZpbHRlcigpID0gZGVmYXVsdDsKIHN0ZDo6dW5pcXVlX3B0cjxXaGVlbEV2ZW50RGVsdGFGaWx0
ZXI+IFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKCkKIHsKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2hlZWxFdmVudERlbHRhRmlsdGVyTWFjPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFdoZWVsRXZlbnREZWx0YUZpbHRlck1hYz4oKTsKICNl
bHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNXaGVlbEV2ZW50RGVsdGFGaWx0
ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFzaWNXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+
KCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAxNDQ2NjNjYWU5NTk3OWNmY2M3
YzRhMjI0MmUxZDE2MWQ2MTAyOTI1Li4xM2MzMWY1NzY0YjdiMjI0YTJiN2VhNTVhZTMzYTZiMzk4
NmI5NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmlt
YXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgQ1NTQW5p
bWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmFuaW1hdGlvbldpbGxCZVJlbW92ZWQoQW5pbWF0aW9u
QmFzZSYgYW5pbWF0CiB9CiAKIENTU0FuaW1hdGlvbkNvbnRyb2xsZXI6OkNTU0FuaW1hdGlvbkNv
bnRyb2xsZXIoRnJhbWUmIGZyYW1lKQotICAgIDogbV9kYXRhKHN0ZDo6bWFrZV91bmlxdWU8Q1NT
QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+KGZyYW1lKSkKKyAgICA6IG1fZGF0YShtYWtlVW5p
cXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPihmcmFtZSkpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcAppbmRleCA3NGVlZGM5OTY2ZTlmODFhY2I5OTZjZjM3Njk4M2RhYjY4NTU0MGM2Li5iYWVi
MjQ3NjU3MTY3MzdiODRhMWNjOGYxOWRlMDE3M2YzNjdlOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0x
MTcsOSArMTE3LDkgQEAgc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4g
YmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGkKIHsKICAgICBBU1NFUlQoZnJv
bSAmJiB0byk7CiAgICAgaWYgKGZyb20tPnN0eWxlKCkgIT0gdG8tPnN0eWxlKCkpCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCp0byk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCp0byk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTaGFkb3dEYXRhPihibGVuZChmcm9tLT5sb2NhdGlvbigpLCB0by0+bG9jYXRpb24oKSwg
cHJvZ3Jlc3MpLAorICAgIHJldHVybiBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KGJsZW5kKGZyb20t
PmxvY2F0aW9uKCksIHRvLT5sb2NhdGlvbigpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kKGZy
b20tPnJhZGl1cygpLCB0by0+cmFkaXVzKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmQoZnJv
bS0+c3ByZWFkKCksIHRvLT5zcHJlYWQoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZEZ1bmMo
YW5pbSwgZnJvbS0+c3R5bGUoKSwgdG8tPnN0eWxlKCksIHByb2dyZXNzKSwKQEAgLTk3NCwxNSAr
OTc0LDE1IEBAIGNsYXNzIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yIDogcHVi
bGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UKICAgICBQcm9wZXJ0eVdyYXBwZXJWaXNp
dGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3AsIGNvbnN0IENvbG9yJiAoUmVuZGVy
U3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25z
dCBDb2xvciYpLAogICAgICAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqdmlzaXRlZEdl
dHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0dGVyKShjb25zdCBD
b2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKLSAg
ICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4o
cHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3RkOjpt
YWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlz
aXRlZFNldHRlcikpCisgICAgICAgICwgbV93cmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFw
cGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFw
cGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIs
IHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRl
ZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBNYXliZUludmFsaWRDb2xvclRhZywg
Y29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVy
U3R5bGU6OipzZXR0ZXIpKGNvbnN0IENvbG9yJiksCiAgICAgICAgIGNvbnN0IENvbG9yJiAoUmVu
ZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZp
c2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVydHlX
cmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFBy
b3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCi0g
ICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBl
ck1heWJlSW52YWxpZENvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkK
KyAgICAgICAgLCBtX3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFs
aWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRlZFdyYXBw
ZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgdmlz
aXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAgewogICAgIH0KICAgICBib29sIGVxdWFs
cyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIpIGNvbnN0IG92ZXJy
aWRlCkBAIC0xMjI5LDE5ICsxMjI5LDE5IEBAIGNsYXNzIEZpbGxMYXllcnNQcm9wZXJ0eVdyYXBw
ZXIgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7CiAgICAgICAgIHN3aXRj
aCAocHJvcGVydHkpIHsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YOgotICAgICAg
ICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxM
YXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eFBvc2l0
aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRYT3Jp
Z2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWE9yaWdpbiwgRWRnZTo6UmlnaHQpOworICAg
ICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXll
clBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eFBvc2l0aW9u
LCAmRmlsbExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRYT3JpZ2lu
LCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWE9yaWdpbiwgRWRnZTo6UmlnaHQpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25Z
OgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWToKLSAgICAgICAg
ICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5
ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnlQb3NpdGlv
biwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWU9yaWdp
biwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFlPcmlnaW4sIEVkZ2U6OkJvdHRvbSk7CisgICAg
ICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVy
UG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp5UG9zaXRpb24s
ICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFlPcmlnaW4s
ICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRZT3JpZ2luLCBFZGdlOjpCb3R0b20pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUHJvcGVydHlXcmFwcGVyPExl
bmd0aFNpemU+Pihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6c2l6ZUxlbmd0aCwgJkZpbGxMYXllcjo6
c2V0U2l6ZUxlbmd0aCk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9
IG1ha2VVbmlxdWU8RmlsbExheWVyUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+Pihwcm9wZXJ0
eSwgJkZpbGxMYXllcjo6c2l6ZUxlbmd0aCwgJkZpbGxMYXllcjo6c2V0U2l6ZUxlbmd0aCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFn
ZToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWxsTGF5ZXJTdHlsZUltYWdlUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxM
YXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlKTsKKyAgICAgICAgICAgIG1fZmlsbExh
eWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJTdHlsZUltYWdlUHJvcGVy
dHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldElt
YWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xNzcwLDcgKzE3NzAsNyBAQCBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJN
YXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCgpCiAgICAgICAgICAgICBsb25naGFu
ZFdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChtX3Byb3BlcnR5V3JhcHBlcnNbd3JhcHBlckluZGV4
XS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVj
a2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyPihwcm9w
ZXJ0eUlELCBXVEZNb3ZlKGxvbmdoYW5kV3JhcHBlcnMpKSk7CisgICAgICAgIG1fcHJvcGVydHlX
cmFwcGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBw
ZXI+KHByb3BlcnR5SUQsIFdURk1vdmUobG9uZ2hhbmRXcmFwcGVycykpKTsKICAgICAgICAgaW5k
ZXhGcm9tUHJvcGVydHlJRChwcm9wZXJ0eUlEKSA9IGFuaW1hdGFibGVMb25naGFuZFByb3BlcnRp
ZXNDb3VudCArIGk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNzA0N2U4M2RlNzg1ZGI4MWI2ZDk5MGE5NDgz
N2JhNzFkNzI4MjlhMC4uOGYwZjZiZjUzYjAzZTA4ZjcwMzMxNjZlYjhjNzRkNmJmOTcyODM3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJl
Y2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cmkKIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBtX3NlbGZTb3VyY2VQcm90b2NvbCA9IHNlY3VyaXR5
T3JpZ2luLnByb3RvY29sKCk7Ci0gICAgbV9zZWxmU291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3NlbGZTb3VyY2VQcm90b2NvbCwg
c2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdpbi5wb3J0KCksIGVtcHR5U3RyaW5n
KCksIGZhbHNlLCBmYWxzZSk7CisgICAgbV9zZWxmU291cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3NlbGZTb3VyY2VQcm90b2NvbCwgc2VjdXJp
dHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdpbi5wb3J0KCksIGVtcHR5U3RyaW5nKCksIGZh
bHNlLCBmYWxzZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjphcHBseVBvbGlj
eVRvU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCmluZGV4IGE4ZjFkNGYw
YmRlMTRmMTRiODhhYTM5NDBlZGQ4Yzg5NjI2MWUzZGUuLmJiZDkxODllMjQ4MzRkYWNjOGQ3YmFl
MTVjYzU4MTZjYTMyMGNmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmIGRpcmVjdGl2
ZUxpc3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAg
OiBtX25hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKaW5kZXggZGRiZDhjZGUy
NzgwZTkyZGJhMjBlMGFiZDk5Y2YwNDk4NDNmNGM0ZC4uYzAxNTZkZGYwMWM5NDdlNTA0YjU2OWQw
YTQxMTY5OGM1NThmM2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKQEAgLTEyMyw3
ICsxMjMsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0KENvbnRlbnRTZQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4gQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6Y3JlYXRlKENvbnRlbnRTZWN1cml0eVBvbGljeSYgcG9saWN5LCBjb25zdCBT
dHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVHlwZSB0eXBlLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlBvbGljeUZyb20gZnJvbSkKIHsKLSAgICBhdXRvIGRpcmVjdGl2
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+
KHBvbGljeSwgdHlwZSk7CisgICAgYXV0byBkaXJlY3RpdmVzID0gbWFrZVVuaXF1ZTxDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pihwb2xpY3ksIHR5cGUpOwogICAgIGRpcmVjdGl2
ZXMtPnBhcnNlKGhlYWRlciwgZnJvbSk7CiAKICAgICBpZiAoIWNoZWNrRXZhbChkaXJlY3RpdmVz
LT5vcGVyYXRpdmVEaXJlY3RpdmUoZGlyZWN0aXZlcy0+bV9zY3JpcHRTcmMuZ2V0KCkpKSkgewpA
QCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6c2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uCiAgICAgICAgIG1fcG9s
aWN5LnJlcG9ydER1cGxpY2F0ZURpcmVjdGl2ZShuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBkaXJlY3RpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KCp0
aGlzLCBuYW1lLCB2YWx1ZSk7CisgICAgZGlyZWN0aXZlID0gbWFrZVVuaXF1ZTxDU1BEaXJlY3Rp
dmVUeXBlPigqdGhpcywgbmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OmFwcGx5U2FuZGJveFBvbGljeShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgc2FuZGJveFBvbGljeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9p
b3MvQ29udGVudENoYW5nZU9ic2VydmVyLmgKaW5kZXggY2FiZDAxMzllNTNkMzkzZjUxNzM1MTA1
YmIwYjcxZjFiOGMxNjBjYS4uZGJiMDZkZTU2ZDA1NzQ3NzM3YzE0NTk3MmZiODMwMzY1ZjJhMTg5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVy
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRE9NVGltZXI7CiBjbGFzcyBFbGVtZW50OwogCiBj
bGFzcyBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q29udGVu
dENoYW5nZU9ic2VydmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgQ29udGVudENoYW5nZU9ic2VydmVyKERvY3VtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaAppbmRleCBiNjIxODRmZTE3OTQyZGE5
NDg1OWE4MDJjZWZkZTc2ZTI0MmQzZTRjLi5iYmY3OTQ1YWFhNDk5YTc2YjdlMTJhYjNjNzVkNTk0
NDIxZTQ1ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhv
bGRpbmdUYW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5n
VGFuay5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVRp
bWVyOwogCiBjbGFzcyBET01UaW1lckhvbGRpbmdUYW5rIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01UaW1lckhvbGRpbmdUYW5rKCk7CiAgICAgfkRPTVRp
bWVySG9sZGluZ1RhbmsoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgv
UmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4
L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCmluZGV4IDRmZGY3NTZjMDIxOTg4NTMzYjJm
MTI1NWM5MWE0ZWNjOTE0ODRmYTQuLjI2YzIxMmI0ODI0YTA0M2MyNTNhZjI1NzY0ZTBiOWEzODEz
MDhhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUxpbnV4LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIFJlc291cmNl
VXNhZ2VPdmVybGF5UGFpbnRlciBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsK
IAogdm9pZCBSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAg
ICBtX292ZXJsYXlQYWludGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3Zlcmxh
eVBhaW50ZXI+KCp0aGlzKTsKKyAgICBtX292ZXJsYXlQYWludGVyID0gbWFrZVVuaXF1ZTxSZXNv
dXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFw
aGljc0xheWVyOjpjcmVhdGUob3ZlcmxheSgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3Jh
cGhpY3NMYXllckZhY3RvcnkoKSwgKm1fb3ZlcmxheVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXll
ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0
U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3JtYWxIZWlnaHQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFn
ZU1hYy5tbQppbmRleCBkN2FkZmZkNzJmOWZhOGZlOTdhZmNkYTA3MThkODNjNmUwOTA4NTBjLi4w
ODYzYWQyNjcyNWQ2NTU0NzUyYjdhYzIxNDhlZWQxYzZkZmMyM2JiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1BhZ2VNYWMubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRp
YWxpemUoKQogdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBw
YWlyKQogewogICAgIGlmICghbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2No
ZWR1bGVkUnVuTG9vcFBhaXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0
PigpOworICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IG1ha2VVbmlxdWU8U2NoZWR1
bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIu
cHRyKCkpOwogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaAppbmRleCBkY2RkOTUwNDhiZDk1
OGFhNzQ0MGEwZmMzZDliY2U3ZGYyZjU0ODBmLi42NDc1Y2U1ZWJjOTA3YWUxODgwYWYxNzFjMDcz
NmZmM2VjYjUwMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5k
aWNhdG9yV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRv
cldpbmRvdy5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3MgVGV4dEluZGljYXRvcldpbmRv
d0Rpc21pc3NhbEFuaW1hdGlvbiA6IHVpbnQ4X3QgewogI2lmIFBMQVRGT1JNKE1BQykKIAogY2xh
c3MgVGV4dEluZGljYXRvcldpbmRvdyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dEluZGljYXRvcldpbmRvdyk7CiAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggMzA2Y2ZlZDE5Y2U2ZDAwYjYyYTg1MjQ5NzAwMjhi
ODA0NWZhZDgyMy4uMDBhZjM5NDc4ZGM3NWY3MDI5YzI0ODQ1NGVmMDFhYjBjNmM3ZDEzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihQ
YWdlKiBwYWdlKQogICAgIDogU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkKICAgICAsIG1fdXBk
YXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXIoKnRoaXMsICZBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGxUaW1lckZpcmVkKQotICAg
ICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRy
ZWU+KHRoaXMpKQorICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUobWFrZVVuaXF1ZTxTY3JvbGxp
bmdTdGF0ZVRyZWU+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCmluZGV4IDYzYmQ5NjM4YjYzYTFh
MTFjYTQwZjM2NzIxMjlmNzE0MTBjNmZmMmUuLjNhYjY0MDY4MjY0YzUwNDA4YmFiNGVlMzhkMmNj
ZDRhNjQxYzc4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTY3JvbGxP
ZmZzZXRSYW5nZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZl
Y3RvcjxUPiBob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25h
cE9mZnNldHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IDc2NDBkNTVkOTZhM2Yw
OTU5YjkzMWVmMDQzM2VjMTVmYTIwN2RiZDQuLmM4OTBmOWViYTAwNGNhODc4MDE0MWI4NWNlZWUw
MDU1NjJlMmU0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5h
dGlvbk9mZnNldCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVu
dFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmll
d3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0
aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0
UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvci5oCmluZGV4IGJlOTlkMGVlNmEzZjA3ODlmYzRkN2RjNjkyODg1YjUyNDAwNDM4
MDIuLjIxYzMxMWNkODliNzk0MDg0YTg0OTBkNWZjOWJhNTVhOTNiOWFlYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBG
bG9hdFNpemU7CiAKIGNsYXNzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNv
bnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVu
dFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcApp
bmRleCA5NjgyZDJjMWJjZWUzNzU3MTNjMzQ2ZDNlMzNjZDRkYzEzNWFmYzc4Li5iZTU3YzliODY5
ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0MGM4MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1N0
YXRlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAK
ICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hp
bGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7
CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiAgICAgc2V0UHJv
cGVydHlDaGFuZ2VkKENoaWxkTm9kZXMpOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgU2Ny
b2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNo
aWxkTm9kZSwgc2l6ZV90CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pIHsKICAgICAgICAgQVNTRVJU
KCFpbmRleCk7Ci0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxS
ZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtl
VW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgfQogCiAg
ICAgaWYgKGluZGV4ID4gbV9jaGlsZHJlbi0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAppbmRleCBmNjFlMjhl
MGVjNTAzMDEyYjM3MmZiMjU1NjlhOGNiN2RkNTNhYTcwLi43MTU3ZTE2ODYwZjQ5YzkxZGRhMzVi
YmM0ZWFmZTk4MTllYWNiZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdChM
YXllclJlcHJlc2VudGF0aQogICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVzIGFu
ZCByZXNldHMgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSwgYnV0IGxlYXZlcyB0aGUgdHJlZSBzdHJ1
Y3R1cmUgaW50YWN0LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRy
ZWVTdGF0ZUNsb25lID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBt
YWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKICAgICB0cmVlU3RhdGVDbG9uZS0+c2V0
UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbihwcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9u
KTsKIAogICAgIGlmIChtX3Jvb3RTdGF0ZU5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKaW5kZXggZWE3NGUyY2E0MjQyOWE4
ZTJiZTlmOWEzNzllMzY3ZGE0ZGRkYTNkMS4uNzI5NjE1YTY5ZjAxMjI2MzE1MTQ3ZWNmZGI1NTI4
YjAxOTlmMzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVO
b2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+JiYgY2hpbGROb2RlKQogICAg
IGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAg
ICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGlu
Z1RyZWVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxS
ZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RG
TW92ZShjaGlsZE5vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
bW0KaW5kZXggMWM3YWI3NmExNTFlNjM1MGQ4YjYxNGMzNmQwNWJjZTY1YzZjOTU4NC4uYjQzZWE5
OTVmYWY2YjQ3MDMzNWZiZjA3YTIwODZhNmIzNWY3MGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIHN0YXRpYyBib29sIGdFbmFibGVQ
bGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9IHRydWU7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNp
emUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFs
RGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFs
T2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ1BVTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5o
CmluZGV4IDcxZTQzZDNmM2I5NDYxMDYwOGNiZjExZGI1MTE1YmNiZWMwNTQ4OTAuLjA4OGRmNTQz
ZTA0NzkxMTdjODM3YWZlMjIzYmJjYzU1MTQ4OGE3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
UFVNb25pdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ1BVTW9uaXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoZG91
YmxlKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgQ1BVTW9uaXRvcihTZWNvbmRzIGNoZWNrSW50ZXJ2
YWwsIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVN
b25pdG9yLmgKaW5kZXggZTYwZjc3MTNmNjJiYjI1NjJhODQyODg4YzdmYzYyOWYyYzU0N2YzMy4u
NmIyODhlMWUxN2U0NDhiYjg2ZmI5ZWNlMjljYzllNWJkYjlkZDhkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlTW9uaXRvci5oCkBAIC00Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZpbGVNb25pdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEZpbGVDaGFuZ2VUeXBlIHsgTW9kaWZpY2F0aW9uLCBS
ZW1vdmFsIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4IDRmZjk4MDRlYWVj
MTMwNmIyNjhhMjQ1ZjI3NzFhMTEyZTI4ZDJhMWUuLjNmYzQzMWE0NzQ2MWQ4YzQ0M2RiNGI2MjJk
NmVhOTA2MzRkYTBmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMjg4LDkg
KzI4OCw5IEBAIExlbmd0aCBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVu
Z3RoJiBsZW5ndGgpCiAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNh
bGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNz
aW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIp
OwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJl
c3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNr
ZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7
Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+
KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMu
dW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgx
MDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8
Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6
U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdU
Rk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0
aWMgTGVuZ3RoIGJsZW5kTWl4ZWRUeXBlcyhjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0
aCYgdG8sIGRvdWJsZSBwcm9ncgogICAgIGlmIChwcm9ncmVzcyA+PSAxLjApCiAgICAgICAgIHJl
dHVybiB0bzsKICAgICAgICAgCi0gICAgYXV0byBibGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
Y0V4cHJlc3Npb25CbGVuZExlbmd0aD4oZnJvbSwgdG8sIHByb2dyZXNzKTsKKyAgICBhdXRvIGJs
ZW5kID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJv
Z3Jlc3MpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1v
dmUoYmxlbmQpLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCmluZGV4IDU1MmIxMmY2YzFlOGNkYTZm
ZmVhNjQ3ODY5MjIyOWVhOTNlZDE3Y2EuLjhlMzVlMzA0YzFlNzI1N2JjNjRjNmFkMTBlZGRlOTY0
MjA0ZTY1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFu
ZExpc3RlbmVyLmNwcApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
KCFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKSkgfHwgIUhBVkUoTUVESUFf
UExBWUVSKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29t
bWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihj
bGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xp
ZW50KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAKaW5kZXggZDkxNTRkOTM1MWEyZjMzNjZkZGQwNWZlNjBmZGViYjljMWExZTczOC4uZjhl
ZGM4ODJkN2YzNjAwMmUxOTg1MTBkODFiOGViMzRhYTUwMDdjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjaWYgIUVOQUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRv
cj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFi
bGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJs
ZUFyZWEpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmNwcAppbmRleCBjNjJhZDgzNGU2YjM4MDhlMWVjZGE4YmExMzEyZDNkOTU3MDVlOTZhLi45
NmQwZjMwMGIzNDE4ZTYwODIxZGEyZGEyYTY0MTg5YzRkZWUwYjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFNjcm9sbEFu
aW1hdG9yJiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsQW5pbWF0b3IoKSBjb25zdAogewogICAgIGlm
ICghbV9zY3JvbGxBbmltYXRvcikgewogICAgICAgICBpZiAodXNlc01vY2tTY3JvbGxBbmltYXRv
cigpKSB7Ci0gICAgICAgICAgICBtX3Njcm9sbEFuaW1hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxBbmltYXRvck1vY2s+KGNvbnN0X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0
aGlzXShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0
b3IgPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxl
QXJlYSY+KCp0aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogICAgICAgICAg
ICAgICAgIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSBlbHNlCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBTY3JvbGxhYmxl
QXJlYTo6aGFzTGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdAogU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkK
IHsKICAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Pigp
OworICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcE9mZnNl
dHNJbmZvPExheW91dFVuaXQ+PigpOwogICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0c0luZm87CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCmluZGV4IDcy
YjAwNDUxMzE0MmM4ZjRlOTVkZjIyODE4YzNkZGMxODBhYWVjZWQuLjBkNzRiMTZlNTkyNTk4YWI4
M2IwYzhjMGViNTRiNDQ2ZGZkMzhkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3Vk
ZGVuVGVybWluYXRpb24uaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYKIAogICAgIGNsYXNzIFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3Vk
ZGVuVGVybWluYXRpb25EaXNhYmxlcik7CiAgICAgcHVibGljOgogICAgICAgICBTdWRkZW5UZXJt
aW5hdGlvbkRpc2FibGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
cmVhZEdsb2JhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5jcHAKaW5kZXggYTI4MDEwZWNmZTVhMzY3YWQ5ZDBiMjlhMjAwNTYzYTBmNTYxZDU2MC4u
MjdhNzM2NDE2YmEwNGMwNTNjMmU3N2RiMmM1NTgxNDQ0MGQyZjBmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRh
KCkKLSAgICA6IG1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+KCkpCisgICAgOiBtX2NhY2hlZFJl
c291cmNlUmVxdWVzdEluaXRpYXRvcnMobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJ
bml0aWF0b3JzPigpKQogICAgICwgbV9ldmVudE5hbWVzKEV2ZW50TmFtZXM6OmNyZWF0ZSgpKQot
ICAgICwgbV90aHJlYWRUaW1lcnMoc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCi0g
ICAgLCBtX3F1YWxpZmllZE5hbWVDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFF1YWxpZmllZE5hbWVD
YWNoZT4oKSkKKyAgICAsIG1fdGhyZWFkVGltZXJzKG1ha2VVbmlxdWU8VGhyZWFkVGltZXJzPigp
KQorICAgICwgbV9xdWFsaWZpZWROYW1lQ2FjaGUobWFrZVVuaXF1ZTxRdWFsaWZpZWROYW1lQ2Fj
aGU+KCkpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFk
KCkpCiAjZW5kaWYKLSAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKHN0ZDo6bWFrZV91bmlxdWU8
SUNVQ29udmVydGVyV3JhcHBlcj4oKSkKKyAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKG1ha2VV
bmlxdWU8SUNVQ29udmVydGVyV3JhcHBlcj4oKSkKIHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IHdpbGwgaGF2ZSBiZWVuIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGJlaW5nIGNh
bGxlZCBvbgogICAgIC8vIGFueSBvdGhlciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNl
IHBlciB0aHJlYWQgLSB0aGlzIG1ha2VzIHRoaXMgYSBjb252ZW5pZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKaW5kZXggMmY4OTJkNmIxOWFiYTQyMzBlOTI0
Yzc2MTg3MzhmYzZjYjQ4ZjdlYy4uZTcwZDQ2ZDBiOWYyNDA3ZjkwODU0OGZhOGYyZTk4YzlkYTQ1
NjNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBBdWRpb0J1czo6QXVkaW9CdXModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IGxlbmd0aCwgYm9vbCBhbGxvY2F0ZSkKICAgICBtX2NoYW5uZWxzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9
IGFsbG9jYXRlID8gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4obnVsbHB0ciwgbGVuZ3RoKTsKKyAgICAgICAgYXV0
byBjaGFubmVsID0gYWxsb2NhdGUgPyBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6
IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihudWxscHRyLCBsZW5ndGgpOwogICAgICAgICBtX2No
YW5uZWxzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGNoYW5uZWwpKTsKICAgICB9CiAKQEAgLTQ4
OSw3ICs0ODksNyBAQCB2b2lkIEF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlv
QnVzICZzb3VyY2VCdXMsIGZsb2F0KiBsYXN0TWl4R2FpbiwgZgogCiAgICAgaWYgKGZyYW1lc1Rv
RGV6aXBwZXIpIHsKICAgICAgICAgaWYgKCFtX2RlemlwcGVyR2FpblZhbHVlcy5nZXQoKSB8fCBt
X2RlemlwcGVyR2FpblZhbHVlcy0+c2l6ZSgpIDwgZnJhbWVzVG9EZXppcHBlcikKLSAgICAgICAg
ICAgIG1fZGV6aXBwZXJHYWluVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJy
YXk+KGZyYW1lc1RvRGV6aXBwZXIpOworICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMg
PSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZnJhbWVzVG9EZXppcHBlcik7CiAKICAgICAg
ICAgZmxvYXQqIGdhaW5WYWx1ZXMgPSBtX2RlemlwcGVyR2FpblZhbHVlcy0+ZGF0YSgpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhbWVzVG9EZXppcHBlcjsgKytpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCAyMTczZGM5MzgzZTRh
MzNjMWI1OTM0NzY1YTFlNWIxMDc0NmYwM2ExLi5iYmIzZDJhY2QyMmM1NzJiYzkyM2E0OGIxZjcw
YWY4NTRjMGNiMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgK
QEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQW4gQXVkaW9CdXMgcmVw
cmVzZW50cyBhIGNvbGxlY3Rpb24gb2Ygb25lIG9yIG1vcmUgQXVkaW9DaGFubmVscy4KIC8vIFRo
ZSBkYXRhIGxheW91dCBpcyAicGxhbmFyIiBhcyBvcHBvc2VkIHRvICJpbnRlcmxlYXZlZCIuCiAv
LyBBbiBBdWRpb0J1cyB3aXRoIG9uZSBjaGFubmVsIGlzIG1vbm8sIGFuIEF1ZGlvQnVzIHdpdGgg
dHdvIGNoYW5uZWxzIGlzIHN0ZXJlbywgZXRjLgotY2xhc3MgQXVkaW9CdXMgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9CdXM+IHsKK2NsYXNzIEF1ZGlvQnVzIGZpbmFsIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQnVzPiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQXVkaW9CdXMpOwogcHVibGljOgogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAppbmRleCBiYmMxMzU3YTNkNTNmMDU0OGY4ODc4
ZTU4N2RiN2Q2ZGQxYzRmYWQ4Li43Yjk4OTNkMzhhYzQxNzQ1MzE3NDFiNzcyNGM2ZmYyYWJkMDFk
ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5u
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaApA
QCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvQ2hhbm5l
bCByZXByZXNlbnRzIGEgYnVmZmVyIG9mIG5vbi1pbnRlcmxlYXZlZCBmbG9hdGluZy1wb2ludCBh
dWRpbyBzYW1wbGVzLgogLy8gVGhlIFBDTSBzYW1wbGVzIGFyZSBub3JtYWxseSBhc3N1bWVkIHRv
IGJlIGluIGEgbm9taW5hbCByYW5nZSAtMS4wIC0+ICsxLjAKLWNsYXNzIEF1ZGlvQ2hhbm5lbCB7
CitjbGFzcyBBdWRpb0NoYW5uZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvQ2hhbm5lbCk7CiBwdWJsaWM6CiAgICAg
Ly8gTWVtb3J5IGNhbiBiZSBleHRlcm5hbGx5IHJlZmVyZW5jZWQsIG9yIGNhbiBiZSBpbnRlcm5h
bGx5IGFsbG9jYXRlZCB3aXRoIGFuIEF1ZGlvRmxvYXRBcnJheS4KQEAgLTU2LDcgKzU3LDcgQEAg
Y2xhc3MgQXVkaW9DaGFubmVsIHsKICAgICAgICAgLCBtX3Jhd1BvaW50ZXIoMCkKICAgICAgICAg
LCBtX3NpbGVudCh0cnVlKQogICAgIHsKLSAgICAgICAgbV9tZW1CdWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obGVuZ3RoKTsKKyAgICAgICAgbV9tZW1CdWZmZXIgPSBt
YWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBBICJi
bGFuayIgYXVkaW8gY2hhbm5lbCAtLSBtdXN0IGNhbGwgc2V0KCkgYmVmb3JlIGl0J3MgdXNlZnVs
Li4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCmluZGV4IDc1Yzlh
YmQ3NDk0ZDM1ODIyZjgyYWNlN2NjZDBkODU2ODYxMWQ3ZWEuLjBmNDM4ZGQ3ZDBmYTU5ZmI2NDRk
NGRmNTcyZjU1OWZkNjYzMDhiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvRklGTy5oCkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQXVkaW9GSUZPIHsKK2NsYXNzIEF1ZGlvRklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgRklGTyBsYXJnZSBlbm91Z2gg
dG8gaG9sZCB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8
IGNoYW5uZWxzLgogICAgIEF1ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgZmlmb0xlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1B1bGxGSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmgKaW5kZXggYmZiZTk4M2E1NzVhNDU0YWFjMmIwYzNjYmU0NTc1ZWZhZjZiNzhkNy4u
ZDc0OGZhNDEzODczNzlkYjM5NWJlYWU2NWY4ODJiYTI1OGU5ZmMyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaApAQCAtNDEsNyArNDEsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUgRklGTyB3aWxsIGFzayB0aGUgcHJvdmlkZXIgZm9y
IG1vcmUgZGF0YSB3aGVuIG5lY2Vzc2FyeSB0byBmdWxmaWxsIGEgcmVxdWVzdC4gQ29udHJhc3Qg
dGhpcwogLy8gd2l0aCBhICJwdXNoIiBGSUZPLCB3aGVyZSB0aGUgc2VuZGVyIHB1c2hlcyBkYXRh
IHRvIHRoZSBGSUZPIHdoaWNoIHdpbGwgaXRzZWxmIHB1c2ggdGhlIGRhdGEgdG8KIC8vIHRoZSBy
ZWNlaXZlciB3aGVuIHRoZSBGSUZPIGlzIGZ1bGwuCi1jbGFzcyBBdWRpb1B1bGxGSUZPIHsKK2Ns
YXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJvdmlk
ZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdlIGVub3VnaCB0byBob2xkCiAgICAgLy8gfGZpZm9M
ZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4gVGhl
IEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCmluZGV4IDg2OTA2YmE1MTI0NzU4NjkyYzY4M2Uy
YmM5MDM4MzUwMWVhYjhmZDkuLjI4NGMwNTQ5NDMyNTkzNDRlYWNlMzI0MThhZGE5YjgzMDNkYTJl
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1w
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxl
ci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgY29uc3QgZG91YmxlIEF1ZGlvUmVzYW1wbGVyOjpNYXhS
YXRlID0gOC4wOwogQXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKCkKICAgICA6IG1fcmF0
ZSgxLjApCiB7Ci0gICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVz
YW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1
ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6
Y3JlYXRlKDEsIDAsIGZhbHNlKTsKIH0KIApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb1Jlc2FtcGxl
cjo6QXVkaW9SZXNhbXBsZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IG1fcmF0
ZSgxLjApCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7
ICsraSkKLSAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVz
YW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1
ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwogCiAgICAgbV9zb3VyY2VCdXMgPSBBdWRp
b0J1czo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIDAsIGZhbHNlKTsKIH0KQEAgLTYxLDcgKzYx
LDcgQEAgdm9pZCBBdWRpb1Jlc2FtcGxlcjo6Y29uZmlndXJlQ2hhbm5lbHModW5zaWduZWQgbnVt
YmVyT2ZDaGFubmVscykKICAgICAvLyBGaXJzdCBkZWFsIHdpdGggYWRkaW5nIG9yIHJlbW92aW5n
IGtlcm5lbHMuCiAgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPiBjdXJyZW50U2l6ZSkgewogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjdXJyZW50U2l6ZTsgaSA8IG51bWJlck9mQ2hhbm5lbHM7
ICsraSkKLSAgICAgICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOworICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZCht
YWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIG1fa2VybmVscy5yZXNpemUobnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCmluZGV4IGQxMWZhOTNlYmFhY2Jk
OGU1NmI5OGRhMzM3NWZhZTE0MDY4ZTNiYzkuLjIwMTZiYWZmN2M4OGRmMThhZjVkMzUyYzMwMWY1
ZmY0Mzc2ODlmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9S
ZXNhbXBsZXIuaApAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUg
YXVkaW8gc3RyZWFtIG1heSBiZSBzaW5nbGUgb3IgbXVsdGktY2hhbm5lbC4KIC8vIFRoZSBkZWZh
dWx0IGNvbnN0cnVjdG9yIGRlZmF1bHRzIHRvIHNpbmdsZS1jaGFubmVsIChtb25vKS4KIAotY2xh
c3MgQXVkaW9SZXNhbXBsZXIgeworY2xhc3MgQXVkaW9SZXNhbXBsZXIgZmluYWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVyKCk7CiAg
ICAgQXVkaW9SZXNhbXBsZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAppbmRl
eCA5OWQ4NzdiYjdjZDY4ZGJiMDUzNjc3YTA5N2NkNGUwZWFjODNiNzgyLi44YWMyYmFhNDJjNTg3
YTM0ODVkNTM0MDIzYWRlZTI0Zjg4MzI2ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKQEAgLTM0LDcgKzM0LDkgQEAg
Y2xhc3MgQXVkaW9SZXNhbXBsZXI7CiAvLyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBkb2VzIHJlc2Ft
cGxpbmcgb24gYSBzaW5nbGUgbW9ubyBjaGFubmVsLgogLy8gSXQgdXNlcyBhIHNpbXBsZSBsaW5l
YXIgaW50ZXJwb2xhdGlvbiBmb3IgZ29vZCBwZXJmb3JtYW5jZS4KIAotY2xhc3MgQXVkaW9SZXNh
bXBsZXJLZXJuZWwgeworY2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgZmluYWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvUmVz
YW1wbGVyS2VybmVsKTsKIHB1YmxpYzoKICAgICBBdWRpb1Jlc2FtcGxlcktlcm5lbChBdWRpb1Jl
c2FtcGxlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmNwcAppbmRleCA1YzFiZjJhMzE3MzQyZWEzZTUyOTJhNzk3ZThlNjZlMWE4ZGEzOTdjLi5i
NWZiNTgwNjQ4ZjljZjhlYzRmMTg2ZmFmYTQ4ZTEzZmRjZjJmNTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTUwLDYgKzUwLDcgQEAg
Ym9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiB9OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IDE3ZGE4MWIz
Yjc1ZDdhNWFhYjgyMTQ4NmI3YzFlMzNmMWE4ZGY0NjkuLmU3MDA4MjJmZjFmZWViZDc4MjlhZWM3
NTBjY2U0MGE2MGI5MjU2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5oCkBAIC00NCw3ICs0NCw4IEBAIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9s
aWN5IDogdWludDhfdCB7CiAgICAgTG9uZ0Zvcm1WaWRlbwogfTsKIAotY2xhc3MgQXVkaW9TZXNz
aW9uIHsKK2NsYXNzIEF1ZGlvU2Vzc2lvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uKTsKIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXVkaW9TZXNzaW9uJiBzaGFyZWRTZXNzaW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCmluZGV4IGJiNzIxYTIzYTdmY2M3
NzRiNjA5M2U0ZWE5MDhjNjBlODkwODEwN2MuLjcxMzQ5NGM5MTRkMzM3ODY0M2UyOWE4MGJjMzll
NzczNjZkZjE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Jp
cXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCkBAIC00
MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vICAgIGxvd3Bhc3MsIGhpZ2hwYXNz
LCBzaGVsdmluZywgcGFyYW1ldGVyaWMsIG5vdGNoLCBhbGxwYXNzLCAuLi4KIAogY2xhc3MgQmlx
dWFkIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAg
ICBCaXF1YWQoKTsKICAgICB+QmlxdWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Db25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25l
LmgKaW5kZXggZDgxYzA1ZGM2OGU2ZTJmYTIxZDI0NWRkMTM3YjRmMTc4YTIxMjBiNC4uYTdhY2Ez
YTRjNTRkMjc0YjNhYTNkNDBhZDlkMTQzZWJkZmM0NWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0NvbmUuaApAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IENvbmUgZ2FpbiBpcyBkZWZpbmVkIGFjY29yZGluZyB0byB0aGUgT3BlbkFMIHNwZWNpZmljYXRp
b24KIAotY2xhc3MgQ29uZUVmZmVjdCB7CitjbGFzcyBDb25lRWZmZWN0IGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb25lRWZmZWN0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAppbmRl
eCA2ZTlmNGUwMWRhZTZkNDVkMDIxMTFkNWQ1YjEyOGVmMzg4NmIyMjQyLi5lMGIzZWZkODBmNzhm
ZmFhMzA2NTczMzIzMTQ3MDJkYzczYTJmMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9ERU5PUk1BTAotY2xhc3MgRGVub3Jt
YWxEaXNhYmxlciB7CitjbGFzcyBEZW5vcm1hbERpc2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEZW5vcm1hbERpc2FibGVyKCkKICAgICAg
ICAgICAgIDogbV9zYXZlZENTUigwKQpAQCAtMTAzLDcgKzEwNCw4IEBAIGNsYXNzIERlbm9ybWFs
RGlzYWJsZXIgewogCiAjZWxzZQogLy8gRklYTUU6IGFkZCBpbXBsZW1lbnRhdGlvbnMgZm9yIG90
aGVyIGFyY2hpdGVjdHVyZXMgYW5kIGNvbXBpbGVycwotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7
CitjbGFzcyBEZW5vcm1hbERpc2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBEZW5vcm1hbERpc2FibGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKaW5kZXggNmYyZmFmNDBl
NjFiZjZlMzJhNGY0OTk5NzY1YzllMWJiNTE5NDFhOC4uNzgzMDhjZTE5OTk5OWJiMWQ2ODBiYjNi
N2UyM2FlMDRjZDdjYjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRGlyZWN0Q29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RGlyZWN0Q29udm9sdmVyLmgKQEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBEaXJlY3RDb252b2x2ZXIgeworY2xhc3MgRGlyZWN0Q29udm9sdmVyIGZpbmFs
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEaXJlY3RDb252b2x2ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IERpcmVjdENvbnZvbHZl
cihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RGlzdGFuY2UuaAppbmRleCA5MWQzNDliOTdlNjI3NzMzMmQ3NjMxYTg4NDQyNmIxNjY4ZGNmMjgz
Li5iM2ViNzc5NzNjZmE0Nzk1ZjE1MDUzNjliN2U0YjJmODlmZmI2YzQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKQEAgLTQwLDcgKzQwLDggQEAgZW51bSBjbGFz
cyBEaXN0YW5jZU1vZGVsVHlwZSB7CiAgICAgRXhwb25lbnRpYWwKIH07CiAKLWNsYXNzIERpc3Rh
bmNlRWZmZWN0IHsKK2NsYXNzIERpc3RhbmNlRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEaXN0YW5jZUVmZmVjdCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaAppbmRleCBmNGI0MjAxN2VlNzYy
N2NhZDY1NmJmZjQ1N2FhZTk4OTQ4MDE0YmYyLi45NTcwYjg5MWM5N2ZmYTkxMWEwMTEzNDAwM2I0
ZmRjYjVmNzZmOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
b3duU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1w
bGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBEb3duU2Ft
cGxlciBkb3duLXNhbXBsZXMgdGhlIHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCiAK
LWNsYXNzIERvd25TYW1wbGVyIHsKK2NsYXNzIERvd25TYW1wbGVyIGZpbmFsIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEb3duU2FtcGxlcihz
aXplX3QgaW5wdXRCbG9ja1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKaW5kZXggYjI1NTE4ZDg4MGE4ZDJkOTk0YTc2
OTZiOGZhZGE5ZTU1NDhjMjllYi4uNTEzNzk5YTg1MTJmNDI3YjRlNGI4ZDliMjk0NWE5NGQzNDkx
ODc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuY3BwCkBAIC0yNzEsOCArMjcxLDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNz
b3I6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICBt
X3ByZUZpbHRlclBhY2tzLmNsZWFyKCk7CiAgICAgbV9wb3N0RmlsdGVyUGFja3MuY2xlYXIoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0g
ICAgICAgIG1fcHJlRmlsdGVyUGFja3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVG
aWx0ZXJQYWNrND4oKSk7Ci0gICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBtX3ByZUZpbHRlclBh
Y2tzLmFwcGVuZChtYWtlVW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBt
X3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0Pigp
KTsKICAgICB9CiAKICAgICBtX3NvdXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0
IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCmluZGV4IGVmOGMwOTNhMWI5NjUzMjI5ZDc5
OWYxYTZiMjkyYWZhZGJkYWJhZDEuLjgyMmM5MzFmMzhjZTBlYzhkYzYyODJmMGY4YzM0M2FmNjc3
Zjk4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5oCkBAIC00Myw4ICs0Myw5IEBAIGNsYXNzIEF1ZGlvQnVzOwogLy8gb2YgdGhl
IGxvdWRlc3QgcGFydHMgb2YgdGhlIHNpZ25hbCBhbmQgcmFpc2VzIHRoZSB2b2x1bWUgb2YgdGhl
IHNvZnRlc3QgcGFydHMsCiAvLyBtYWtpbmcgdGhlIHNvdW5kIHJpY2hlciwgZnVsbGVyLCBhbmQg
bW9yZSBjb250cm9sbGVkLgogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgeworY2xhc3MgRHlu
YW1pY3NDb21wcmVzc29yIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEeW5hbWljc0NvbXByZXNzb3IpOwogcHVibGljOgogICAg
IGVudW0gewogICAgICAgICBQYXJhbVRocmVzaG9sZCwKQEAgLTk1LDkgKzk2LDEwIEBAIGNsYXNz
IER5bmFtaWNzQ29tcHJlc3NvciB7CiAgICAgZmxvYXQgbV9sYXN0QW5jaG9yOwogICAgIGZsb2F0
IG1fbGFzdEZpbHRlclN0YWdlR2FpbjsKIAotICAgIHR5cGVkZWYgc3RydWN0IHsKKyAgICBzdHJ1
Y3QgWmVyb1BvbGVGaWx0ZXJQYWNrNCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgWmVyb1BvbGUgZmlsdGVyc1s0XTsKLSAgICB9IFplcm9Qb2xlRmls
dGVyUGFjazQ7CisgICAgfTsKIAogICAgIC8vIFBlci1jaGFubmVsIGVtcGhhc2lzIGZpbHRlcnMu
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4gbV9wcmVG
aWx0ZXJQYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCmluZGV4IDczNGIwNjZjZGE0OGJjMmM3YTc5
ZWRmNTA3ZDA2YzA1NmM3MGEwOTAuLmFmZWRiN2I0Y2QwYTVhNjFkMWE5ZmUyNzhjMzQwMzgzZjk4
ZTIxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIER5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzKQogCiAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuY2xlYXIoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICBtX3ByZURl
bGF5QnVmZmVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFBy
ZURlbGF5RnJhbWVzKSk7CisgICAgICAgIG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChtYWtlVW5p
cXVlPEF1ZGlvRmxvYXRBcnJheT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKIH0KIAogdm9pZCBEeW5h
bWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5VGltZShmbG9hdCBwcmVEZWxheVRpbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbC5oCmluZGV4IGI3YmNlYTJmYWZkODk5NmNhNTI4YjBiNWRhYjQ5Y2I4ODk1
OGRjYzQuLmUxMWY0N2JhYWYwYmM2YzVkMGNhN2UzZDcyMDA4MjYzOWQyNzBjMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5oCkBAIC0zNSw3ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRHluYW1pY3NDb21wcmVzc29yS2VybmVsIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9FcXVhbFBvd2VyUGFubmVyLmgKaW5kZXggOGNmNTk5MTc5NWYzZjFmNjNlMjgxZDllMTZh
Y2FmM2Q3YTU3YTVkYS4uNGU0NjNiMTI4MWE3ZmEzYmIzOTdhNmIwNjVjZTAzM2NjYmY5YWQyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIu
aApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbW1vbiB0eXBl
IG9mIHN0ZXJlbyBwYW5uZXIgYXMgZm91bmQgaW4gbm9ybWFsIGF1ZGlvIG1peGluZyBlcXVpcG1l
bnQuCiAKLWNsYXNzIEVxdWFsUG93ZXJQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKK2NsYXNzIEVx
dWFsUG93ZXJQYW5uZXIgZmluYWwgOiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBFcXVhbFBvd2VyUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCmluZGV4IDQ1NDJiNmZiMjU3ODU0OTVh
YjIwNmFiYzNjOTBjNzViYzJmMTZlYTAuLjM4NjIyN2YxOTcwNGFmZDc5MmUzNjYyMmJkZGE5YzFh
Y2VhNzUxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENv
bnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZl
ci5oCkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRkZU
Q29udm9sdmVyIHsKK2NsYXNzIEZGVENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRkZUQ29udm9sdmVyKTsKIHB1
YmxpYzoKICAgICAvLyBmZnRTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28KICAgICBGRlRDb252
b2x2ZXIoc2l6ZV90IGZmdFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZURnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
RnJhbWUuY3BwCmluZGV4IDRjMDJiNjk5MmIwNjM4M2I4MDM1NzM3ODc4ZGJmNjVhMjZmYjljMzEu
LjRjMTUyMDY3ZDQ0YWM0Yjg1NDE5MjFhYWVkMjk1OTgyYjk2OTM3OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBG
RlRGcmFtZTo6ZG9QYWRkZWRGRlQoY29uc3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkK
IAogc3RkOjp1bmlxdWVfcHRyPEZGVEZyYW1lPiBGRlRGcmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVk
RnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lMSwgY29uc3QgRkZURnJhbWUmIGZyYW1lMiwgZG91
YmxlIHgpCiB7Ci0gICAgYXV0byBuZXdGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+
KGZyYW1lMS5mZnRTaXplKCkpOworICAgIGF1dG8gbmV3RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZy
YW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKIAogICAgIG5ld0ZyYW1lLT5pbnRlcnBvbGF0ZUZyZXF1
ZW5jeUNvbXBvbmVudHMoZnJhbWUxLCBmcmFtZTIsIHgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCmluZGV4IDc1N2JjZmE0YjZhZWZkNzBlYmFlODY1
NDg3MjVmYTQwNjI5YzZlOWUuLmE1MTkzNDk4MTUwNDUyNmQ2ZmM2NGQ0NWI5NzkwYjM3ODEwM2E0
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJURktlcm5lbDsK
IAotY2xhc3MgSFJURkRhdGFiYXNlIHsKK2NsYXNzIEhSVEZEYXRhYmFzZSBmaW5hbCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkRh
dGFiYXNlKTsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCmluZGV4IGY0NWJlODQ3Y2U3MTBkY2VkYTJlMGVjMTA2
Yjc1YmYyNjg1Nzg5Y2QuLmE0NzRhNzBjNDA4NTJhZTJlMWY5ZjU4YTQ5YTAwMDM2MTU4MGIzMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNl
TG9hZGVyLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9h
ZCgpCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2hydGZEYXRhYmFz
ZS5nZXQoKSkgewogICAgICAgICAvLyBMb2FkIHRoZSBkZWZhdWx0IEhSVEYgZGF0YWJhc2UuCi0g
ICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRGF0YWJhc2U+KG1f
ZGF0YWJhc2VTYW1wbGVSYXRlKTsKKyAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBtYWtlVW5pcXVl
PEhSVEZEYXRhYmFzZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBjODRh
Yjk3NTFhMTQ1OTg5YTAzNzdmYWQxZjRhNzVlOGYxN2UyYjI0Li42MDUyMzJjZDFhOTljOTIzM2Q5
YWQxMDQ5YmEzMDdlMjE3NzM4ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRWxldmF0aW9uLmNwcApAQCAtMjQ0LDggKzI0NCw4IEBAIHN0ZDo6dW5pcXVlX3B0
cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0
cmluZyYgc3ViCiAgICAgaWYgKCFpc0VsZXZhdGlvbkdvb2QpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAKLSAgICBhdXRvIGtlcm5lbExpc3RMID0gc3RkOjptYWtlX3VuaXF1ZTxI
UlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKLSAgICBhdXRvIGtlcm5lbExp
c3RSID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11
dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RMID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4o
TnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RSID0gbWFrZVVuaXF1
ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKIAogICAgIC8vIExvYWQg
Y29udm9sdXRpb24ga2VybmVscyBmcm9tIEhSVEYgZmlsZXMuCiAgICAgaW50IGludGVycG9sYXRl
ZEluZGV4ID0gMDsKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZh
dGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1Ygog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZF
bGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgZWxl
dmF0aW9uLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRGRWxldmF0aW9u
PihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwg
c2FtcGxlUmF0ZSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxl
dmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsZXZhdGlvbiogaHJ0ZkVs
ZXZhdGlvbjEsIEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24yLCBmbG9hdCB4LCBmbG9hdCBz
YW1wbGVSYXRlKQpAQCAtMjg1LDggKzI4NSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0
aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAg
ICAgICAgIAogICAgIEFTU0VSVCh4ID49IDAuMCAmJiB4IDwgMS4wKTsKICAgICAKLSAgICBhdXRv
IGtlcm5lbExpc3RMID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZU
b3RhbEF6aW11dGhzKTsKLSAgICBhdXRvIGtlcm5lbExpc3RSID0gc3RkOjptYWtlX3VuaXF1ZTxI
UlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExp
c3RMID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsK
KyAgICBhdXRvIGtlcm5lbExpc3RSID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVy
T2ZUb3RhbEF6aW11dGhzKTsKIAogICAgIEhSVEZLZXJuZWxMaXN0KiBrZXJuZWxMaXN0TDEgPSBo
cnRmRWxldmF0aW9uMS0+a2VybmVsTGlzdEwoKTsKICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVs
TGlzdFIxID0gaHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RSKCk7CkBAIC0zMDIsNyArMzAyLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5
SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWwKICAgICAvLyBJbnRlcnBvbGF0ZSBlbGV2YXRpb24g
YW5nbGUuCiAgICAgZG91YmxlIGFuZ2xlID0gKDEuMCAtIHgpICogaHJ0ZkVsZXZhdGlvbjEtPmVs
ZXZhdGlvbkFuZ2xlKCkgKyB4ICogaHJ0ZkVsZXZhdGlvbjItPmVsZXZhdGlvbkFuZ2xlKCk7CiAg
ICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShr
ZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xl
KSwgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SFJURkVsZXZhdGlvbj4oV1RG
TW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+
KGFuZ2xlKSwgc2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQgSFJURkVsZXZhdGlvbjo6Z2V0S2VybmVs
c0Zyb21BemltdXRoKGRvdWJsZSBhemltdXRoQmxlbmQsIHVuc2lnbmVkIGF6aW11dGhJbmRleCwg
SFJURktlcm5lbCogJmtlcm5lbEwsIEhSVEZLZXJuZWwqICZrZXJuZWxSLCBkb3VibGUmIGZyYW1l
RGVsYXlMLCBkb3VibGUmIGZyYW1lRGVsYXlSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkVsZXZhdGlvbi5oCmluZGV4IDJhOTU5MDQ1NTIxODQzYTE1MTYyZWNjOGUzMjEx
NzM5ZTA3MDUzZjcuLmVmNzUyYzNjMDFiZTM5ZWNkYjdlZjY0ZGY0MzkwOTI2NmQ2ZWQ5NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKQEAgLTM5
LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBIUlRGRWxldmF0aW9uIGNvbnRh
aW5zIGFsbCBvZiB0aGUgSFJURktlcm5lbHMgKG9uZSBsZWZ0IGVhciBhbmQgb25lIHJpZ2h0IGVh
ciBwZXIgYXppbXV0aCBhbmdsZSkgZm9yIGEgcGFydGljdWxhciBlbGV2YXRpb24uCiAKLWNsYXNz
IEhSVEZFbGV2YXRpb24geworY2xhc3MgSFJURkVsZXZhdGlvbiBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkVsZXZhdGlv
bik7CiBwdWJsaWM6CiAgICAgSFJURkVsZXZhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5l
bExpc3Q+IGtlcm5lbExpc3RMLCBzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtlcm5l
bExpc3RSLCBpbnQgZWxldmF0aW9uLCBmbG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAppbmRleCBlZGY2YzYwZDBkYjgxNGQ5NGMw
ZjcxYjYzMDZlNDM4MjY1M2FhNGM3Li4zNzU1MjE2YWUyODdhNzFjNzQyOTI5YTUzYzk1OTA5NmRi
MWRiYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2Vy
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNw
cApAQCAtOTIsNyArOTIsNyBAQCBIUlRGS2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hhbm5lbCog
Y2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBtX2ZmdEZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6
ZSk7CisgICAgbV9mZnRGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOwogICAg
IG1fZmZ0RnJhbWUtPmRvUGFkZGVkRkZUKGltcHVsc2VSZXNwb25zZSwgdHJ1bmNhdGVkUmVzcG9u
c2VMZW5ndGgpOwogfQogCkBAIC0xMDMsNyArMTAzLDcgQEAgc2l6ZV90IEhSVEZLZXJuZWw6OmZm
dFNpemUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9DaGFubmVsPiBIUlRGS2VybmVs
OjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UoKQogewotICAgIGF1dG8gY2hhbm5lbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9DaGFubmVsPihmZnRTaXplKCkpOworICAgIGF1dG8gY2hhbm5lbCA9IG1h
a2VVbmlxdWU8QXVkaW9DaGFubmVsPihmZnRTaXplKCkpOwogICAgIEZGVEZyYW1lIGZmdEZyYW1l
KCptX2ZmdEZyYW1lKTsKIAogICAgIC8vIEFkZCBsZWFkaW5nIGRlbGF5IGJhY2sgaW4uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKaW5kZXggYmY1ZWVmYWE1ZTRj
NmQyYmYxN2E5OTAwMzA3NDE2NWM2ZTQzM2FkNy4uY2FhYTQ0MWYxZDE0ZWEzNmY1ZTk2OGFkOGE3
N2QwYjdhNjBkZDk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURlBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5u
ZXIuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhS
VEZQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKK2NsYXNzIEhSVEZQYW5uZXIgZmluYWwgOiBwdWJs
aWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIUlRGUGFubmVyKGZsb2F0IHNhbXBs
ZVJhdGUsIEhSVEZEYXRhYmFzZUxvYWRlciopOwogICAgIHZpcnR1YWwgfkhSVEZQYW5uZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJl
c2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxS
ZXNhbXBsZXIuY3BwCmluZGV4IGJiYmYxNjQ0NjIwNzYzOWUzNWNmNzk1NjQ4MjgyNjNkM2U5Mzcz
YWUuLjViZjlhYjk1ZDAxNTc1MDA4MTVkNjEzMWFiMWQ4OTc0MWJlMWZlMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVy
LmNwcApAQCAtOTcsNyArOTcsNyBAQCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5l
bFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlcgogewogICAgIC8v
IENyZWF0ZSBlYWNoIGNoYW5uZWwncyByZXNhbXBsZXIuCiAgICAgZm9yICh1bnNpZ25lZCBjaGFu
bmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJ
bmRleCkKLSAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNpbmNSZXNh
bXBsZXI+KHNjYWxlRmFjdG9yKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1
ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOwogfQogCiB2b2lkIE11bHRpQ2hhbm5lbFJl
c2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92aWRlciwgQXVkaW9CdXMq
IGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAppbmRleCA0NDE3
NTQ3NjA1ODNkMjgwMzRhNDViM2JkOGE2MTg4ZDQ2NWEyZjM2Li42MTQ2ZTkyNWMwNmEyZGRhNzZj
YjQxMmYwY2MxZTBhMjQ2YWM4MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVzOwogICAgIAotY2xhc3MgTXVsdGlDaGFu
bmVsUmVzYW1wbGVyIHsKK2NsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciBmaW5hbCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAgZXhwbGljaXQgTXVsdGlD
aGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAppbmRleCBhYzcy
ODZhYzlhMDYwYjc1MzRjYjJlZGU5MjFkNmNiZDc3YTk3YTg4Li40MGI5ZDAxZGMxODRiOTZkNWRm
M2FiOWI3ZjQwOTQ2M2E5NzgzNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bh
bm5lci5jcHAKQEAgLTQzLDExICs0MywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVyPiBQYW5u
ZXI6OmNyZWF0ZShQYW5uaW5nTW9kZWxUeXBlIG1vZGVsLCBmbG9hdCBzYW1wbGVSYXRlLAogCiAg
ICAgc3dpdGNoIChtb2RlbCkgewogICAgIGNhc2UgUGFubmluZ01vZGVsVHlwZTo6RXF1YWxwb3dl
cjoKLSAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxFcXVhbFBvd2VyUGFubmVyPihz
YW1wbGVSYXRlKTsKKyAgICAgICAgcGFubmVyID0gbWFrZVVuaXF1ZTxFcXVhbFBvd2VyUGFubmVy
PihzYW1wbGVSYXRlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFBhbm5pbmdNb2RlbFR5
cGU6OkhSVEY6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURlBhbm5lcj4o
c2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpOworICAgICAgICBwYW5uZXIgPSBtYWtlVW5pcXVl
PEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggZTAyMzk0YWE1YjE0OWNkMTU5NjkxMmEyNTY4MWZm
NWVhNDRhZDhkMi4uYzhiZDY0YTQxYmY2MTJlODllM2MyMTRmYTIyZGNjNTk5NDhlNTRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAK
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gUGxhdGZvcm1NZWRpYVNlc3Np
b246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOwogfQogCiBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIu
Y3BwCmluZGV4IDMwNDNmYzhhMDRkZjBkNzdjMTBhYTAzNzliZDI2YTM5ZDQ2Y2U2YmEuLjhhNjc1
NWM1NGFkMDBhM2E4MTAxODc0MjE2MmNjZDA3NGRlMTBlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUmV2ZXJiOjpp
bml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1bHNlUmVzcG9uc2VCdWZmZXIsIHNpemVfdCByZW5kZXJT
bGljZVNpemUsCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1SZXNwb25zZUNoYW5uZWxz
OyArK2kpIHsKICAgICAgICAgQXVkaW9DaGFubmVsKiBjaGFubmVsID0gaW1wdWxzZVJlc3BvbnNl
QnVmZmVyLT5jaGFubmVsKGkpOwogCi0gICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4
RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7Cisg
ICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQobWFrZVVuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNo
YW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2Us
IHVzZUJhY2tncm91bmRUaHJlYWRzKSk7CiAKICAgICAgICAgY29udm9sdmVyUmVuZGVyUGhhc2Ug
Kz0gcmVuZGVyU2xpY2VTaXplOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiLmgKaW5kZXggM2UyNTc2YjM1NzU3ZGJhMjQ3MGM4ZWI3ZGEzYzE3YmVlYmJmZGNlZC4uMjM0
ZTMxZGFlYmJkNGRkYWEzNmExZTkwNTMxMWViOTkyMmZhYTY3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9CdXM7CiAg
ICAgCiAvLyBNdWx0aS1jaGFubmVsIGNvbnZvbHV0aW9uIHJldmVyYiB3aXRoIGNoYW5uZWwgbWF0
cml4aW5nIC0gb25lIG9yIG1vcmUgUmV2ZXJiQ29udm9sdmVyIG9iamVjdHMgYXJlIHVzZWQgaW50
ZXJuYWxseS4KIAotY2xhc3MgUmV2ZXJiIHsKK2NsYXNzIFJldmVyYiBmaW5hbCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSB7IE1heEZyYW1lU2l6ZSA9
IDI1NiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJBY2N1bXVsYXRpb25CdWZmZXIuaAppbmRleCA1MTJiNmFkZTM0MWEyODU2OTcyZWUzZjdiY2Iy
MTE2NmJiNzIxYTFmLi5hNjI4MzVmOWMwZDdkNzQzYzllOTI3Y2VkZTJkNmExZGE0NTU4NDFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRp
b25CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1
bXVsYXRpb25CdWZmZXIuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAv
LyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgaXMgYSBjaXJjdWxhciBkZWxheSBidWZmZXIgd2l0
aCBvbmUgY2xpZW50IHJlYWRpbmcgZnJvbSBpdCBhbmQgbXVsdGlwbGUgY2xpZW50cwogLy8gd3Jp
dGluZy9hY2N1bXVsYXRpbmcgdG8gaXQgYXQgZGlmZmVyZW50IGRlbGF5IG9mZnNldHMgZnJvbSB0
aGUgcmVhZCBwb3NpdGlvbi4gIFRoZSByZWFkIG9wZXJhdGlvbiB3aWxsIHplcm8gdGhlIG1lbW9y
eQogLy8ganVzdCByZWFkIGZyb20gdGhlIGJ1ZmZlciwgc28gaXQgd2lsbCBiZSByZWFkeSBmb3Ig
YWNjdW11bGF0aW9uIHRoZSBuZXh0IHRpbWUgYXJvdW5kLgotY2xhc3MgUmV2ZXJiQWNjdW11bGF0
aW9uQnVmZmVyIHsKK2NsYXNzIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciBmaW5hbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyKHNpemVfdCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCAxNDVkZjgxZTJhNmJhMmMy
ZGFhOWJiNDFlNmI1Y2FiYWYzODVmOTFjLi5hOWM5MzVjMWEyODVhYjEzNjJkOGZmMWRmOGNlYmE1
YTdlNWFhNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJD
b252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGkK
IAogICAgICAgICBib29sIHVzZURpcmVjdENvbnZvbHZlciA9ICFzdGFnZU9mZnNldDsKIAotICAg
ICAgICBhdXRvIHN0YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2ZXJTdGFnZT4o
cmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5ndGgsIHJldmVyYlRvdGFsTGF0ZW5jeSwgc3RhZ2VP
ZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2UsIHJlbmRlclNsaWNlU2l6ZSwg
Jm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1c2VEaXJlY3RDb252b2x2ZXIpOworICAgICAgICBhdXRv
IHN0YWdlID0gbWFrZVVuaXF1ZTxSZXZlcmJDb252b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFs
UmVzcG9uc2VMZW5ndGgsIHJldmVyYlRvdGFsTGF0ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6
ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2UsIHJlbmRlclNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9u
QnVmZmVyLCB1c2VEaXJlY3RDb252b2x2ZXIpOwogCiAgICAgICAgIGJvb2wgaXNCYWNrZ3JvdW5k
U3RhZ2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuaAppbmRleCA1YjgxOWUxYTNlNmY0ZmIxZjhkYjBjNTk2OTcyNjJhYWMwOWM2
YmRlLi4zMjAwYjQ1ZWE4ZGY3YzIxY2U2ZmEzN2UwOGJiMjc5MWY4YWU1ZjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaApAQCAtNDMsOCAr
NDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ2hhbm5lbDsKIAotY2xh
c3MgUmV2ZXJiQ29udm9sdmVyIHsKK2NsYXNzIFJldmVyYkNvbnZvbHZlciBmaW5hbCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmV2ZXJi
Q29udm9sdmVyKTsKIHB1YmxpYzoKICAgICAvLyBtYXhGRlRTaXplIGNhbiBiZSBhZGp1c3RlZCAo
ZnJvbSBzYXkgMjA0OCB0byAzMjc2OCkgZGVwZW5kaW5nIG9uIGhvdyBtdWNoIHByZWNpc2lvbiBp
cyBuZWNlc3NhcnkuCiAgICAgLy8gRm9yIGNlcnRhaW4gdHdlYWt5IGRlLWNvbnZvbHZpbmcgYXBw
bGljYXRpb25zIHRoZSBwaGFzZSBlcnJvcnMgYWRkIHVwIHF1aWNrbHkgYW5kIGxlYWQgdG8gbm9u
LXNlbnNpY2FsIHJlc3VsdHMgd2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCmluZGV4IDBmZGU0MjFhZjJmODJmZDQ4
NzRkOTRmNmFmMWQ2MzQ3MjM5YzY1NmUuLjRmZjk1M2IyNjA0OTE3ZDM0NTIwMzk0MDViNjVkZTJi
ZDVhMWVhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlclN0YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKQEAgLTU1LDE2ICs1NSwxNiBAQCBSZXZlcmJDb252b2x2
ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UoY29uc3QgZmxvYXQqIGltcHVsc2VSZXNwb25z
ZSwgc2l6ZV90LAogICAgIEFTU0VSVChhY2N1bXVsYXRpb25CdWZmZXIpOwogCiAgICAgaWYgKCFt
X2RpcmVjdE1vZGUpIHsKLSAgICAgICAgbV9mZnRLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEZG
VEZyYW1lPihmZnRTaXplKTsKKyAgICAgICAgbV9mZnRLZXJuZWwgPSBtYWtlVW5pcXVlPEZGVEZy
YW1lPihmZnRTaXplKTsKICAgICAgICAgbV9mZnRLZXJuZWwtPmRvUGFkZGVkRkZUKGltcHVsc2VS
ZXNwb25zZSArIHN0YWdlT2Zmc2V0LCBzdGFnZUxlbmd0aCk7Ci0gICAgICAgIG1fZmZ0Q29udm9s
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRDb252b2x2ZXI+KGZmdFNpemUpOworICAgICAgICBt
X2ZmdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RkZUQ29udm9sdmVyPihmZnRTaXplKTsKICAgICB9
IGVsc2UgewogICAgICAgICBBU1NFUlQoIXN0YWdlT2Zmc2V0KTsKICAgICAgICAgQVNTRVJUKHN0
YWdlTGVuZ3RoIDw9IGZmdFNpemUgLyAyKTsKIAotICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihmZnRTaXplIC8gMik7CisgICAgICAgIG1f
ZGlyZWN0S2VybmVsID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZmdFNpemUgLyAyKTsK
ICAgICAgICAgbV9kaXJlY3RLZXJuZWwtPmNvcHlUb1JhbmdlKGltcHVsc2VSZXNwb25zZSwgMCwg
c3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RGlyZWN0Q29udm9sdmVyPihyZW5kZXJTbGljZVNpemUpOworICAgICAgICBtX2RpcmVjdENv
bnZvbHZlciA9IG1ha2VVbmlxdWU8RGlyZWN0Q29udm9sdmVyPihyZW5kZXJTbGljZVNpemUpOwog
ICAgIH0KICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hbGxvY2F0ZShyZW5kZXJTbGljZVNpemUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuaAppbmRleCBhMDQ5MDk3MDM0MGFiM2IzMzYwMGIwODllNTk4NDc0ZmIzZDQ1NWU2Li4z
YzAzYmUzNDFiM2I3ZDY0NjIxZGM4MDM4MTY2OTM2MGY0ZGI0YzlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgRGlyZWN0Q29udm9sdmVyOwogICAgIAogLy8gQSBSZXZlcmJDb252
b2x2ZXJTdGFnZSByZXByZXNlbnRzIHRoZSBjb252b2x1dGlvbiBhc3NvY2lhdGVkIHdpdGggYSBz
dWItc2VjdGlvbiBvZiBhIGxhcmdlIGltcHVsc2UgcmVzcG9uc2UuCiAvLyBJdCBpbmNvcnBvcmF0
ZXMgYSBkZWxheSBsaW5lIHRvIGFjY291bnQgZm9yIHRoZSBvZmZzZXQgb2YgdGhlIHN1Yi1zZWN0
aW9uIHdpdGhpbiB0aGUgbGFyZ2VyIGltcHVsc2UgcmVzcG9uc2UuCi1jbGFzcyBSZXZlcmJDb252
b2x2ZXJTdGFnZSB7CitjbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSBmaW5hbCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gcmVuZGVyUGhhc2UgaXMgdXNl
ZnVsIHRvIGtub3cgc28gdGhhdCB3ZSBjYW4gbWFuaXB1bGF0ZSB0aGUgcHJlIHZlcnN1cyBwb3N0
IGRlbGF5IHNvIHRoYXQgc3RhZ2VzIHdpbGwgcGVyZm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKaW5kZXggYmIwNmU0ZWVkNjMzZjBl
N2M2ODJlMjBlNGU2YTU3MmFhMWZhYTk2Ni4uYWY5ZWQwMGQ3MzNlODQyYjZlZDNhNjQ3NDg1NDIw
ZDNjNzY3NzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiSW5wdXRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJJbnB1dEJ1ZmZlci5oCkBAIC0zNCw3ICszNCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIFJldmVyYklucHV0QnVmZmVyIGlzIHVzZWQgdG8gYnVmZmVyIGlucHV0IHNhbXBsZXMgZm9y
IGRlZmVycmVkIHByb2Nlc3NpbmcgYnkgdGhlIGJhY2tncm91bmQgdGhyZWFkcy4KLWNsYXNzIFJl
dmVyYklucHV0QnVmZmVyIHsKK2NsYXNzIFJldmVyYklucHV0QnVmZmVyIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZXZlcmJJbnB1
dEJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vU2luY1Jlc2FtcGxlci5oCmluZGV4IDJmY2Q4OWY3ZWNhMzc1ODU4NjMxYTliMjc2NWExMGQy
MDFiMzQxYzcuLmMxMzJmNWQ5NzYyYzc1NjZiMjMyNWMwNjRiMjhkZThiNmUzOTAxZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKQEAgLTM2LDcg
KzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTaW5jUmVzYW1wbGVyIGlzIGEgaGln
aC1xdWFsaXR5IHNhbXBsZS1yYXRlIGNvbnZlcnRlci4KIAotY2xhc3MgU2luY1Jlc2FtcGxlciB7
CitjbGFzcyBTaW5jUmVzYW1wbGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzogICAKICAgICAvLyBzY2FsZUZhY3RvciA9PSBzb3VyY2VTYW1wbGVSYXRlIC8g
ZGVzdGluYXRpb25TYW1wbGVSYXRlCiAgICAgLy8ga2VybmVsU2l6ZSBjYW4gYmUgYWRqdXN0ZWQg
Zm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBiZXR0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1VwU2FtcGxlci5oCmluZGV4IDI2NmJjYWY5ODBkNzI2ZmEyZjYzN2NmZTkzYTVkNGMzOGIy
NGVlMDYuLjY3NWVlNGFkMGM0NDY3Y2QxZGQ2ZDFkNTE2MTFlNzdiOThjNGM2M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVXBTYW1wbGVyIHVwLXNhbXBsZXMgdGhlIHNvdXJjZSBz
dHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCiAKLWNsYXNzIFVwU2FtcGxlciB7CitjbGFzcyBVcFNh
bXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFVwU2FtcGxlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKaW5kZXggODMxZGU5MDkzYjAwNTYxNmI0YmQ3N2Vh
N2IwNzc4YzM3ZGFhN2I2ZS4uMDJmZmFjZDVlYWNhN2NlMjc1ODkyYmU4ZDY0Mzk0YzczM2RjN2Qx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCkBAIC0zMyw3ICsz
Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gWmVyb1BvbGUgaXMgYSBzaW1wbGUgZmls
dGVyIHdpdGggb25lIHplcm8gYW5kIG9uZSBwb2xlLgogCi1jbGFzcyBaZXJvUG9sZSB7CitjbGFz
cyBaZXJvUG9sZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgWmVyb1BvbGUoKQogICAgICAgICA6IG1femVybygwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaAppbmRl
eCA4NmI2NWEyMjUzYWYxYWViMmExY2E5Y2FhMzY2Nzg2Y2Q3ZDY1NTIwLi43NmI1YmM3NTFkNjA1
OGYxODc3MWJhOTU1MmFhYzQ2YzZlMmFkNmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaApAQCAtNDAsNiAr
NDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b247CiAKIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0
YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQXVkaW9C
dWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
LCB1aW50MzJfdCBzYW1wbGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5jcHAKaW5kZXggNWJmOGZkYTZiMjkxMmIxOGYxMTkwZGNiZTcwODJiZjY4NGJlZTk4Zi4u
MWE1NDk1ZmQ3NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAg
ICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVu
aGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBz
YW1wbGVSYXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVS
YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCA4YWY4NzdlYzJjNGNhMGFiZDMwNzQ4MzVmNTRi
MzRhZWJmMDQzM2EyLi40YmRlN2U0MWUyYjY0MzdjZDBmZjcyNWU0ZDA3OWQ2OGY4OWU3ZGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
RGVzdGluYXRpb25JT1MuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBj
YWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1l
ZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91
dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rl
c3RpbmF0aW9uSU9TPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9h
dCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggZGM2
YzhiY2NlMzY5ZDA2YWVkYzhmZDMzM2M3MzhjMGJlOTU3NWRkNC4uNjM5ODI0MGJiZDhkOTY3MzAy
ZGY3ZTllY2ZmNDA3NTAyZGE2ZTIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBjYXRlZ29yeU5hbWUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0
ZWdvcnkpCiAjZW5kaWYKIAogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRp
b1Nlc3Npb24qKTsKICAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3Zl
cnJpZGU7CkBAIC03MSw3ICs3Miw3IEBAIEF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lv
blByaXZhdGUoQXVkaW9TZXNzaW9uKikKIH0KIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24o
KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4o
dGhpcykpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0
aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCmluZGV4IDc2NGEzNDdmOTgyOWUxZTg0NzVi
ZDJlYTEyODBhYTE3NTAyNmVjZmMuLjlmZTY0YmFhYTQ3ODRmZWNkYWIzZDZkZGI1ZTI3ODM4MWUx
ZTA3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2Fs
bGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAg
ICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhh
bmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9
CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291
cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0
YVNvdXJjZS5tbQppbmRleCA3N2Q0MzE2NTY2OTkwZTkwMWI5MjBiZjc3OGQ5NjllOWYxOGYxODhh
Li40MWFmZTM5ZjIzMmFlNTg4MDg2MGYwODRkNTU2Y2I0YTVkOGFlMjVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFT
b3VyY2UubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3Vy
Y2U6OnNldElucHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZgogewog
ICAgIEFTU0VSVChmb3JtYXQuc2FtcGxlUmF0ZSgpID49IDApOwogCi0gICAgbV9pbnB1dERlc2Ny
aXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1h
dCk7CisgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKG1fb3V0cHV0RGVzY3JpcHRpb24pCiAgICAgICAg
IHJldHVybiBzZXR1cENvbnZlcnRlcigpOwogCkBAIC0xMjAsOSArMTIwLDkgQEAgT1NTdGF0dXMg
QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRPdXRwdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJgogICAgIEFTU0VSVChtX2lucHV0RGVzY3JpcHRpb24pOwogICAgIEFTU0VS
VChmb3JtYXQuc2FtcGxlUmF0ZSgpID49IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOworICAg
IG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4oZm9ybWF0KTsKICAgICBpZiAoIW1fcmluZ0J1ZmZlcikKLSAgICAgICAgbV9yaW5nQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZl
ciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwogCiAgICAgbV9yaW5nQnVmZmVyLT5hbGxv
Y2F0ZShmb3JtYXQsIHN0YXRpY19jYXN0PHNpemVfdD4obV9tYXhpbXVtU2FtcGxlQ291bnQpKTsK
ICAgICBtX3NjcmF0Y2hCdWZmZXIgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZShtX291
dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX21heGltdW1TYW1wbGVDb3Vu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
ZXNzaW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nl
c3Npb25NYWMuY3BwCmluZGV4IDdmNmVmOWQzM2RiMWZiNDdlN2NmMTRjNTkwNGE0NjExMmIxNTIy
MzIuLmNjMDRmMGJlMzA5NzQ5OGI4MzY2ZTkyNDIwNzNlY2UzZTE5NzVhYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewogfTsKIAogQXVk
aW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtl
VW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KGlzTXV0ZWQoKSkpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAppbmRleCAxOGEy
NmFiNmRjNWM4ZGQwMTI1MmRiMDY0NmQ0ZjViOWI0N2I2ZmY1Li41MTRmZjg2ZjlkMmNkZGE0NWVh
NGZhMTYyNmY0MDk3ZDYzYTUxMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIENBUmluZ0J1
ZmZlclN0b3JhZ2UgewogfTsKIAogY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvciA6IHB1
YmxpYyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB+Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpID0gZGVmYXVsdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCmluZGV4IGI5
ODAzYmZhMDIzMjQzNTdjMGRmZTA0NzMxM2QyYzNlYzMwNGNiOTIuLjdhNDdmNTYwOGJiYjZkZTlk
Mzc3M2IxN2U5OGU0NzY0YTI0MjIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZERlY29kZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8S2V5ZWREZWNvZGVyQ0Y+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEtleWVkRGVjb2RlckNGPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyQ0Y6Oktl
eWVkRGVjb2RlckNGKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDFhNjI3ZWEwMGI5
MmNiYWE2Y2Y3YzM1NWQ1ZTQ0NWVjNDg2MWE0MTIuLjQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdi
ZjJjOWNkN2RlZDIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckNGPigpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEtleWVkRW5jb2RlckNGPigpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGTXV0
YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZURpY3Rpb25hcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCmluZGV4IGI2
ODkyMjgwNWU1ZDM3M2RlN2YwYWVkNzg5MDgyNWFjY2NjMTIwMzkuLjA3YTQ1Y2FkNzhiNmQ0Mzdm
YWE4NDI1MjY5OWMwZDQ4NmQ3OGVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
c3RhdGljIHZvaWQgc2V0dXBQb3dlck9ic2VydmVyKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAg
c3RhdGljIFBvd2VyT2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7CiAgICAgaWYgKCFwb3dlck9ic2Vy
dmVyKQotICAgICAgICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2Vy
dmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKKyAgICAgICAgcG93ZXJPYnNlcnZl
ciA9IG1ha2VVbmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNl
KCk7CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVy
ZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IGZhbHNlOwogICAgIGlmICghcmVnaXN0ZXJl
ZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1t
CmluZGV4IDQ3MDVlZDE1YTVjNThjNDExYzQ5ZjM0ZmFmNzNlZWIzMDdiMmM5NDguLmFiOTVmZmQw
Zjg3MWVjMDQ2MDhkNTA5NjQ2YjQzZTNkMDM0OWY1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLm1tCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwog
fQogCiB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppbml0aWFsaXplKGNvbnN0
IFVSTCogdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRleCBhZTBiZDIwOWNjZDZm
MzE3YzkxOTMyNWExNmExOGE5OWNkMTU3MmU0Li4wZDJhNjIxODZiNWE1NGUyYjg1MWZmOTZkNTI4
MTAxZjg0NjZmNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpAQCAtNTAsNyArNTAs
NyBAQCBib29sIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3Rk
Ojp1bmlxdWVfcHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKIH0KIAogc3RhdGljIGlubGluZSBi
b29sIGNhbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0K
aW5kZXggZTgzNjljNmU1MDE2ZTIzY2Y4NzNiOTUzN2QyYWZiNGYwYmM2ODUyMi4uOGZlMzhhZDBj
Y2UyZmQ1NDJkMjk3MDE3ZmRhMmQxY2IzNTViNzcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC02MjAsNyArNjIwLDcgQEAg
dm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50
QXhpcyBheGlzLCBjb25zdCBWZWN0b3IKICAgICAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsKKyAgICAgICAgbV9zY3Jv
bGxTbmFwU3RhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwogICAg
IH0KIAogICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBTdGF0ZS0+
c25hcE9mZnNldHNGb3JBeGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggNTAzZjk3YjkyMDE4ZGE4N2MyNDg4
OTFiMjI2NzlhYmI3MDA1YjMwMC4uOTZjODUxMjkzNWFiOWI2OThlODk4NTUxNjNiYjZkMjJhYzli
ODJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMzAzLDcgKzMwMyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBDRE1GYWN0b3J5Q2xlYXJLZXk6OmNyZWF0ZUNE
TShjb25zdCBTdHJpbmcmIGtleVN5c3RlCiAjZWxzZQogICAgIEFTU0VSVChzdXBwb3J0c0tleVN5
c3RlbShrZXlTeXN0ZW0pKTsKICNlbmRpZgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENE
TVByaXZhdGVDbGVhcktleT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlQ2xl
YXJLZXk+KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4
IGQ0NzMwNGM5NWIyNmVmMjA0ZjVkYTRhZGNiYjhhMDg2NGRlMThiYjMuLjBiOTEwNjQ5Y2E0YTQ3
YTkxNWQ1NDhjOWQ5NGFmZmYzMzUzNTkyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApA
QCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1GYWN0b3J5
Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIENETUZhY3RvcnlDbGVhcktleSYgc2luZ2xl
dG9uKCk7CiAKQEAgLTU0LDYgKzU1LDcgQEAgY2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZpbmFs
IDogcHVibGljIENETUZhY3RvcnkgewogfTsKIAogY2xhc3MgQ0RNUHJpdmF0ZUNsZWFyS2V5IGZp
bmFsIDogcHVibGljIENETVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIENETVByaXZhdGVDbGVhcktleSgpOwogICAgIHZpcnR1YWwgfkNETVByaXZh
dGVDbGVhcktleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0K
aW5kZXggZjcyMGNmZDMzNDNmOWJhZDMzYTQ5MTlhNzhmODY2ZjlkODYyYTBhZC4uNWE2ZWI0MDQz
OWVmNTkwNTcyYTdjMjllZmMzMzhkOTJmMjM5YzVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgR2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KEdDQ29udHJvbGxlciAqY29u
dHJvbGxlCiAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciBj
b250cm9sbGVyICVwIGFkZGVkIiwgY29udHJvbGxlcik7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9
IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBhdXRvIGdhbWVwYWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOwor
ICAgIGF1dG8gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPihjb250
cm9sbGVyLCBpbmRleCk7CiAKICAgICBpZiAobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA8PSBpbmRl
eCkKICAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmdyb3coaW5kZXggKyAxKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAppbmRleCAxNWYwNGM3
MDhlOTAwN2JiNGRhZGVlNTQzNWMzNTdmMDJmNTMxYzkzLi5hMjUyMzRmYjg3NWE3NTFjNjNjMzdi
YTZhNWNlZTdkNDUzNGQ1YTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZC5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBISURHYW1lcGFkRWxlbWVudCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgIEhJREdhbWVwYWRFbGVtZW50KGRvdWJsZSB0aGVNaW4sIGRvdWJs
ZSB0aGVNYXgsIElPSElERWxlbWVudFJlZiBlbGVtZW50KQogICAgICAgICA6IG1pbih0aGVNaW4p
CiAgICAgICAgICwgbWF4KHRoZU1heCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDU3NDM5MWI1
YzExMWEzMmJlOTEyNWNhNmNlMDYwMGY1ZDYzODIyNTcuLjZkMTRiNmIyMTYxMGI4NmNlNGMwMDEz
ZTUwOTExYjg4Zjk1ZTFhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3
IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBk
ZXZpY2UpCiAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFk
ZGVkIiwgZGV2aWNlKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5l
Y3RlZERldmljZSgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBnYW1lcGFkID0g
c3RkOjptYWtlX3VuaXF1ZTxISURHYW1lcGFkPihkZXZpY2UsIGluZGV4KTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SElER2FtZXBhZD4gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8SElER2FtZXBhZD4oZGV2
aWNlLCBpbmRleCk7CiAKICAgICBpZiAobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA8PSBpbmRleCkK
ICAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmdyb3coaW5kZXggKyAxKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCmlu
ZGV4IGE0YTMwYjUyYWJlNDhhZjg1MGRjN2M3NDdhM2JjZGUxZDUxZmRhNWYuLjBlNTk3MjMyMWI1
ZjczZjU3MmJkNzk2NTg4MTFmMDAzYTk1ZWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBjbGFzcyBLZXllZERlY29kZXJHZW5lcmljOjpEaWN0aW9uYXJ5IHsKICAgICB1c2lu
ZyBOb2RlID0gVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIGJvb2wsIHVpbnQzMl90LCB1aW50NjRf
dCwgaW50MzJfdCwgaW50NjRfdCwgZmxvYXQsIGRvdWJsZSwgU3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8RGljdGlvbmFyeT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+OwogCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkg
eyBtX21hcC5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2
YWx1ZSkpKTsgfQorICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsg
bV9tYXAuYWRkKGtleSwgbWFrZVVuaXF1ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7
IH0KICAgICBOb2RlJiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuICptX21hcC5nZXQo
a2V5KTsgfQogCiBwcml2YXRlOgpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgYm9vbCByZWFkU2lt
cGxlVmFsdWUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2RlciwgS2V5ZWREZWNvZGVy
R2VuZQogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29k
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVk
RGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCkBAIC04Niw3ICs4Niw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVk
RGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgS2V5
ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZSB0eXBlOwogICAgIFN0cmluZyBrZXk7CiAKLSAgICBtX3Jv
b3REaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgIG1fcm9v
dERpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgbV9kaWN0aW9uYXJ5
U3RhY2suYXBwZW5kKG1fcm9vdERpY3Rpb25hcnkuZ2V0KCkpOwogCiAgICAgYm9vbCBvayA9IHRy
dWU7CkBAIC0xNDQsNyArMTQ0LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVy
R2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIGlm
ICghb2spCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvKiBjdXJyZW50
RGljdGluYXJ5ID0gbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpOwotICAgICAgICAgICAgYXV0byBu
ZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgICAgICAg
ICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgICAg
ICAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25hcnkuZ2V0KCkpOwogICAg
ICAgICAgICAgY3VycmVudERpY3RpbmFyeS0+YWRkKGtleSwgV1RGTW92ZShuZXdEaWN0aW9uYXJ5
KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NiwxMyArMTU2LDEzIEBAIEtleWVkRGVjb2Rl
ckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgICAgICAgICBvayA9IHJlYWRTdHJpbmcoZGVjb2Rlciwga2V5KTsKICAgICAg
ICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBhdXRv
IG5ld0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheT4oKTsKKyAgICAgICAgICAgIGF1dG8g
bmV3QXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5PigpOwogICAgICAgICAgICAgbV9hcnJheVN0YWNr
LmFwcGVuZChuZXdBcnJheS5nZXQoKSk7CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5s
YXN0KCktPmFkZChrZXksIFdURk1vdmUobmV3QXJyYXkpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5B
cnJheUVsZW1lbnQ6IHsKLSAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9
IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNr
LmFwcGVuZChuZXdEaWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAgICAgIG1fYXJyYXlTdGFjay5s
YXN0KCktPmFwcGVuZChXVEZNb3ZlKG5ld0RpY3Rpb25hcnkpKTsKICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAKaW5kZXggMmY4NDEwNDc0NjM5NTU4ZjI5NWU4MWE1MTcxOWE4NzM0YjMy
ZDU4YS4uMjFjYzFlYmU0YTkwMWExM2M3NDQwM2RjMDFjZjJmYzgxODEzMDEyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmljPigpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEtleWVkRW5jb2RlckdlbmVyaWM+KCk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVy
R2VuZXJpYzo6ZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3Bw
CmluZGV4IDdhZTY1YzVhOGQzMDllM2RlZWY1M2NlOGNmMWUzMDI0MjZkMjdjMTQuLjIwOGFmN2I4
NDc5ZWNhZWY1NTMwY2NjNTU3YjczNmViYWJjYmNiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAg
LTQ0LDE0ICs0NCwxNCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBzY3JvbGxDYXB0dXJlVGhyZXNo
b2xkIHsgMTUwX21zIH07CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xs
QW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3JvbGxhYmxl
QXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3Jv
bGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1h
dG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGlt
ZXIoKnRoaXMsICZTY3JvbGxBbmltYXRvckdlbmVyaWM6Om92ZXJsYXlTY3JvbGxiYXJBbmltYXRp
b25UaW1lckZpcmVkKQogewotICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9zY3JvbGxhYmxlQXJlYSwgW3RoaXNdKEZsb2F0
UG9pbnQmJiBwb3NpdGlvbikgeworICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9zY3JvbGxhYmxlQXJlYSwgW3RoaXNdKEZsb2F0UG9p
bnQmJiBwb3NpdGlvbikgewogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQogICAgICAgICBp
ZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0
Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTY3JvbGxB
bmltYXRvckdlbmVyaWM6OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpCiAgICAgaWYg
KG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Ntb290aEFuaW1h
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFi
bGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikg
eworICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9v
dGg+KG1fc2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2lu
dCYmIHBvc2l0aW9uKSB7CiAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRpb24p
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWREZWNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RGVjb2RlckdsaWIuY3BwCmluZGV4IGU3ZGQxOTE0MDQxNzE5NjhmOTBkNmZlYTMzNTRlMTRjZWY2
ZjU1NjcuLjM2MWU5ZGYzMjQ1YmU1NjViMGUyYTQxZGYxOGIyNmZmYmM3MTljZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXll
ZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29kZXJHbGli
PihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJHbGliPihk
YXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyR2xpYjo6S2V5ZWREZWNvZGVyR2xpYihjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDc0MDRiY2JkNDQ5YWE0OTIxYjhj
ZTJiN2UwMTg0NDk1MDEwNmY2ODAuLjcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZj
MDBiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2xpYj4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxLZXllZEVuY29kZXJHbGliPigpOwogfQogCiBLZXllZEVuY29kZXJHbGliOjpL
ZXllZEVuY29kZXJHbGliKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcAppbmRleCBhMjNlMjE5ZDFhNjg2ZGE3MzBjMDExYmUwZDEyNDljY2Uw
YmE0NWNkLi5lZmNjYzVjNmY3OWE1YTlhMmVlNDc3MGJmNWNjOTk0Zjg0MmI5NjBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0z
NDgsNyArMzQ4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2xlYXJUaW1lcigpCiB2b2lkIEJpdG1h
cEltYWdlOjpzdGFydFRpbWVyKFNlY29uZHMgZGVsYXkpCiB7CiAgICAgQVNTRVJUKCFtX2ZyYW1l
VGltZXIpOwotICAgIG1fZnJhbWVUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlz
LCAmQml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOworICAgIG1fZnJhbWVUaW1lciA9IG1h
a2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmQml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOwog
ICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIApAQCAtNTIwLDcgKzUy
MCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKIHZvaWQgQml0bWFwSW1h
Z2U6OmRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAo
IW1fZGVjb2RpbmdDYWxsYmFja3MpCi0gICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4oKTsKKyAgICAgICAgbV9k
ZWNvZGluZ0NhbGxiYWNrcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+
PigpOwogCiAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcy0+YXBwZW5kKFdURk1vdmUoY2FsbGJhY2sp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMGQzNTU2MTg5NzBmYjI3N2Y3MmU3ODk5MGUz
ZjRmMmEyMTZmYmM2OS4uMzUzZmNhNjYwMTMyNjRiMDI0NjJhNTcxMjI0ZDA1YTE4MWQ5Njg5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFRleHRMYXlvdXQg
ewogICAgIFRleHRMYXlvdXQoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIGZsb2F0IHhQb3MpCiAgICAgICAgIDogbV9mb250KGZvbnQpCiAgICAgICAgICwgbV9ydW4o
Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCB4UG9zKSkKLSAgICAgICAgLCBtX2NvbnRyb2xsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxDb21wbGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUp
KQorICAgICAgICAsIG1fY29udHJvbGxlcihtYWtlVW5pcXVlPENvbXBsZXhUZXh0Q29udHJvbGxl
cj4obV9mb250LCBtX3J1biwgdHJ1ZSkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCmluZGV4IDcyMDQ1M2Q5ZjA0NmQ3OWY0
OGEwOWI4MWFmNzAwMGY0ZGUzYmUwMjUuLmNlZmQ4ZDQyMjQ0ZDA2ZmNiODI0YmU1ZTNiNzM0MTlj
ZDQ5OGE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwog
CiBjbGFzcyBGbG9hdFBvaW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBGbG9hdFBvaW50KCkgeyB9CiAgICAgRmxvYXRQb2ludChmbG9hdCB4LCBmbG9hdCB5
KSA6IG1feCh4KSwgbV95KHkpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcAppbmRleCAxODRiNDRiMDdhNDEyMjE2YjllYzU5ODQyMmYwNzg3ZjBlNmM3YWViLi5l
MGI0OWYyNDdjMjAwOWJkZDVmMWQwYzhlYmE3YWQ2YzdlYjhjYmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIEdseXBoRGF0
YSBGb250OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpIGNvbnN0CiBh
dXRvIEZvbnQ6OmVuc3VyZURlcml2ZWRGb250RGF0YSgpIGNvbnN0IC0+IERlcml2ZWRGb250cyYK
IHsKICAgICBpZiAoIW1fZGVyaXZlZEZvbnREYXRhKQotICAgICAgICBtX2Rlcml2ZWRGb250RGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZEZvbnRzPigpOworICAgICAgICBtX2Rlcml2ZWRG
b250RGF0YSA9IG1ha2VVbmlxdWU8RGVyaXZlZEZvbnRzPigpOwogICAgIHJldHVybiAqbV9kZXJp
dmVkRm9udERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApp
bmRleCAyZTU4YmQ2OWViYjUzOTFlMDM2ZDI4YzI3MDJjMWY0NTA1MDhiMzEyLi5lZjYwNTIyMDE5
NzA4ZWYxNWYwODI5ZmE3ZDljNTY5ODE1MmM5NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCkBAIC0zNDUsNyArMzQ1LDcgQEAgQUxXQVlTX0lOTElORSBGbG9hdFJl
Y3QgRm9udDo6Ym91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAKICAgICBib3VuZHMg
PSBwbGF0Zm9ybUJvdW5kc0ZvckdseXBoKGdseXBoKTsKICAgICBpZiAoIW1fZ2x5cGhUb0JvdW5k
c01hcCkKLSAgICAgICAgbV9nbHlwaFRvQm91bmRzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxHbHlw
aE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4oKTsKKyAgICAgICAgbV9nbHlwaFRvQm91bmRzTWFwID0g
bWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4oKTsKICAgICBtX2dseXBoVG9C
b3VuZHNNYXAtPnNldE1ldHJpY3NGb3JHbHlwaChnbHlwaCwgYm91bmRzKTsKICAgICByZXR1cm4g
Ym91bmRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHAKaW5kZXggMGE2MmEyNzViYzY5MmVmMzk5MTE0MGUwMjhmNTgwMDQyMWQwYzcxMS4uMzcw
OWI0MWViMmI3YmQwYmY3YjEwMmFjNWRiZWZlMmY3NzczYWYxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAg
Rm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KICAgICAgICAgICAgICAgICBpdCA9IGZvbnRQbGF0Zm9y
bURhdGFDYWNoZSgpLmZpbmQoa2V5KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gZm9u
dFBsYXRmb3JtRGF0YUNhY2hlKCkuZW5kKCkpOwogICAgICAgICAgICAgICAgIGlmIChmb250UGxh
dGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaXQtPnZhbHVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZv
ckFsdGVybmF0ZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBpdC0+dmFsdWUgPSBtYWtlVW5p
cXVlPEZvbnRQbGF0Zm9ybURhdGE+KCpmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNzI3NGRiMGRiMzJiM2I0MWIz
ZTBlMWIxZWQwZmIyYWVhOGIzNmEzYi4uNjQ4MThmNGI1MTU1ZDQyYmZhYzgxYjYxZjRiNWY5Y2Rl
YTU0NTJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyBSZWY8Rm9udENhc2NhZGVGb250
cz4gcmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpCiAg
ICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5mb250cy5nZXQoKTsKIAog
ICAgIGF1dG8mIG5ld0VudHJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICBuZXdF
bnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtl
eSksIEZvbnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKKyAg
ICBuZXdFbnRyeSA9IG1ha2VVbmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtl
eSksIEZvbnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKICAg
ICBSZWY8Rm9udENhc2NhZGVGb250cz4gZ2x5cGhzID0gbmV3RW50cnktPmZvbnRzLmdldCgpOwog
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwgPSA1
MDsKQEAgLTMyNiw5ICszMjYsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgIGlmIChn
bHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5p
cXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKICAgICBHcmFwaGljc0NvbnRleHQgcmVj
b3JkaW5nQ29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihk
aXNwbGF5TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJl
Y3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNw
bGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250
ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgfSk7CiAg
ICAgCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4
IGRiNzQzMDJlOWRhYTRlYjUyYzBjZTA4MWZkNTYwNTI3OTU3OGZiZjQuLjEyYWM4MzdmY2QyNDY1
ZjlmODFkZWIwNjg3YWE3NzZkNWVhMDY0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHZvaWQgRm9udENhc2NhZGVGb250czo6R2x5cGhQYWdlQ2FjaGVFbnRyeTo6c2V0R2x5cGhEYXRh
Rm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhCiB7CiAgICAgQVNTRVJUKCFnbHlwaERhdGFGb3JDaGFy
YWN0ZXIoY2hhcmFjdGVyKS5nbHlwaCk7CiAgICAgaWYgKCFtX21peGVkRm9udCkgewotICAgICAg
ICBtX21peGVkRm9udCA9IHN0ZDo6bWFrZV91bmlxdWU8TWl4ZWRGb250R2x5cGhQYWdlPihtX3Np
bmdsZUZvbnQuZ2V0KCkpOworICAgICAgICBtX21peGVkRm9udCA9IG1ha2VVbmlxdWU8TWl4ZWRG
b250R2x5cGhQYWdlPihtX3NpbmdsZUZvbnQuZ2V0KCkpOwogICAgICAgICBtX3NpbmdsZUZvbnQg
PSBudWxscHRyOwogICAgIH0KICAgICBtX21peGVkRm9udC0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFj
dGVyKGNoYXJhY3RlciwgZ2x5cGhEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKaW5kZXggMjU5ZTk3NTMzY2FlZGNmYzE0NWZm
N2FiNDI4ZWExNjlmNjRiMTU5NC4uNzllMmY1Mzg4YzQ2ZTU4OTIzMDE2MWM0NzQ1MjU0MTkyNDdl
ODJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhN
ZXRyaWNzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhN
ZXRyaWNzTWFwLmgKQEAgLTEzMCwxMCArMTMwLDEwIEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHR5cGVu
YW1lIEdseXBoTWV0cmljc01hcDxUPjo6R2x5cGhNZXRyaWNzUGFnZSYgR2x5cGhNZXRyaWNzTWFw
CiAgICAgfQogCiAgICAgaWYgKCFtX3BhZ2VzKQotICAgICAgICBtX3BhZ2VzID0gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoTWFwPGludCwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4o
KTsKKyAgICAgICAgbV9wYWdlcyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVl
X3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+KCk7CiAKICAgICBhdXRvJiBwYWdlID0gbV9wYWdlcy0+
ZW5zdXJlKHBhZ2VOdW1iZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
R2x5cGhNZXRyaWNzUGFnZT4odW5rbm93bk1ldHJpY3MoKSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVua25vd25NZXRyaWNzKCkpOwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKICAgICByZXR1cm4gKnBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmlu
ZGV4IDFiNDIyODZkZGY0NjVjMGUyYjEyNGQ4YWZkZjBmN2NkNjQ3N2NiYjcuLmUzM2Y4ZmJlNzM4
OTJlMzRiOGRlZjgzNmQ0NmY1YzcwYzc5YzYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBA
IC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcFRleHR1cmVH
TDsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUpOwogICAgIH5HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTRhYWMxZGY4MzU2YmRiMTBkZjdkMDg2
ZmFjZTI2YzFlMzcxODMyNi4uYzk2ZWNhM2ExNWVkNjUwNTQ5NGYyMzA4ZjVlNTdjNzkwYTcxZTE2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogICAgIGlmIChtX3RyYW5z
Zm9ybSkKICAgICAgICAgKm1fdHJhbnNmb3JtID0gbWF0cml4OwogICAgIGVsc2UKLSAgICAgICAg
bV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRy
aXgpOworICAgICAgICBtX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRy
aXg+KG1hdHJpeCk7CiB9CiAKIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBHcmFwaGljc0xh
eWVyOjpjaGlsZHJlblRyYW5zZm9ybSgpIGNvbnN0CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbWF0cml4KQogICAgIGlmIChtX2NoaWxkcmVuVHJhbnNmb3JtKQogICAgICAgICAqbV9j
aGlsZHJlblRyYW5zZm9ybSA9IG1hdHJpeDsKICAgICBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW5U
cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgp
OworICAgICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4obWF0cml4KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIo
UmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYgbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggMDA5ZDQ4Njg5NWQ1Njg2MjU0MDEx
ZGY1NjAwYTcyMTEyNDMwZTYyZi4uN2ExZmVhYWM3OWU3OGJhODhmY2FkY2I4NWUzMjk5ZmQ3OWEw
MDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUgOiBw
dWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZh
bHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBmbG9h
dCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBj
bGFzcyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUoY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIG90aGVyKQpAQCAtMTYzLDcgKzE2Myw3
IEBAIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0
aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0
aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBGaWx0ZXJBbmltYXRpb25WYWx1ZShjb25z
dCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKaW5kZXggZTQ0YTYxZTIyNGNhMTE5NGQwOTE4ZDQ0NDNiZWE3YzFl
N2U0YTBlMS4uYzIxZmUyOWQwZjA1ZmRkZTM5ZTBjNGJmNGI2MWExYzk3NmNjYjEzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMzQ5LDcgKzM0OSw3
IEBAIHZvaWQgSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmlu
c2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljCiB2b2lkIEltYWdlOjpzdGFydEFuaW1hdGlvbkFz
eW5jaHJvbm91c2x5KCkKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9uU3RhcnRUaW1lcikKLSAgICAg
ICAgbV9hbmltYXRpb25TdGFydFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZJbWFnZTo6c3RhcnRBbmltYXRpb24pOworICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXIg
PSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkltYWdlOjpzdGFydEFuaW1hdGlvbik7CiAgICAg
aWYgKG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+aXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNzU3ZjA5
NTY3ZGM1ZGZkZjViZTAyNjM5NjM5ZDFlZmVjNzE4YzBkYi4uYWJlODY5NDE5NGZmN2MxNzUxMDBi
Njk4ODA0YTEyNDBiZDYyYzg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIGNsYXNzIE51bGxNZWRp
YVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
IHsKIAogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsg
fQotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7
IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9CiAK
ICAgICBkb3VibGUgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gMDsgfQpAQCAtMzU1LDcgKzM1NSw3IEBAIFJlZjxNZWRpYVBsYXllcj4g
TWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogTWVkaWFQbGF5
ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVu
dCgmY2xpZW50KQogICAgICwgbV9yZWxvYWRUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyOjpyZWxv
YWRUaW1lckZpcmVkKQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8TnVsbE1lZGlh
UGxheWVyUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVk
aWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKIHsKIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFj
dG9yeSogY3VycmVudCkKICNlbmRpZgogICAgICAgICBtX3ByaXZhdGUtPmxvYWQobV91cmwuc3Ry
aW5nKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcHJpdmF0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcyk7CisgICAgICAgIG1fcHJpdmF0ZSA9IG1h
a2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcyk7CiAgICAgICAgIGNsaWVudCgp
Lm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCh0aGlzKTsKICAgICAgICAgY2xpZW50KCkubWVkaWFQ
bGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDAw
ZDg1YTQ5OTY0MmIzZjUyMzdiMzBiZmY1ZjRlNmI0MjkxMzBlY2QuLjFkMmZjMDA5MjA0YThjMDI1
NTQxYjJhMmQ3YzVmMGQwYmU1Yzk5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xMjksNyArMTI5LDcgQEAg
Y2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICB2aXJ0dWFsIE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25z
dCB7IHJldHVybiBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1RpbWUo
KSA/IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpIDogc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlh
VGltZVNlZWthYmxlKCkpOyB9CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heE1lZGlhVGltZVNlZWthYmxl
KCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpID8gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2Fi
bGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRp
bWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIE1lZGlhVGltZSBt
YXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShtYXhUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5UaW1l
U2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCmluZGV4IDNlNjg4MDU1YmRjYzBiMTBl
NDE2MGNmMTQwZDRmYWNlOTIzMjBhNjUuLjVhZDkzMzQ5YmZiNDBkYTRmZjMwOGFkYTk4NDk3ZmMz
NzVlMTA4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhVdGlsaXRpZXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEZsb2F0UG9pbnRHcmFwaDo6Tm9kZSog
RmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2RlKEZsb2F0UG9pbnQgcG9pbnQpCiAgICAg
ICAgICAgICByZXR1cm4gdGVzdE5vZGUuZ2V0KCk7CiAgICAgfQogCi0gICAgbV9hbGxOb2Rlcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFBvaW50R3JhcGg6Ok5vZGU+KHBvaW50KSk7Cisg
ICAgbV9hbGxOb2Rlcy5hcHBlbmQobWFrZVVuaXF1ZTxGbG9hdFBvaW50R3JhcGg6Ok5vZGU+KHBv
aW50KSk7CiAgICAgcmV0dXJuIG1fYWxsTm9kZXMubGFzdCgpLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAppbmRleCA5ZGNlZTg3NjE2MjVj
MDE0ODhiNGQ5MGQxYWYyMmUzNTQzNWQ0YTVlLi42YTcwMWMxYTEyODk3OWQ0Yzk0OGIxYTdiYWI1
NjhmMTAyNDdjZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5jcHAKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIFJlZ2lvbjo6c2V0U2hhcGUoU2hhcGUmJiBz
aGFwZSkKICAgICB9CiAKICAgICBpZiAoIW1fc2hhcGUpCi0gICAgICAgIG1fc2hhcGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBlKSk7CisgICAgICAgIG1fc2hhcGUgPSBt
YWtlVW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBlKSk7CiAgICAgZWxzZQogICAgICAgICAqbV9z
aGFwZSA9IFdURk1vdmUoc2hhcGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZWdpb24uaAppbmRleCA3OTYzM2ZkYjZhZGYzNGZmZmVlOGY4MjY3NDgzYjhjZmY1Y2UxZjNj
Li5iYzM5YzMwMDAwZWE4YjZiNWE5ZTYwY2YyYmM1YWUxODY2NjRiNmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaApAQCAtOTEsNiArOTEsNyBAQCBjbGFzcyBS
ZWdpb24gewogICAgIH07CiAKICAgICBjbGFzcyBTaGFwZSB7CisgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgU2hhcGUoKSA9IGRlZmF1bHQ7CiAg
ICAgICAgIFNoYXBlKGNvbnN0IEludFJlY3QmKTsKQEAgLTE0OCw3ICsxNDksNyBAQCBjbGFzcyBS
ZWdpb24gewogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlJiwgY29u
c3QgU2hhcGUmKTsKICAgICB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjb3B5U2hh
cGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oKm1f
c2hhcGUpIDogbnVsbHB0cjsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY29weVNoYXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IG1ha2VVbmlxdWU8U2hhcGU+KCptX3NoYXBlKSA6
IG51bGxwdHI7IH0KICAgICB2b2lkIHNldFNoYXBlKFNoYXBlJiYpOwogCiAgICAgSW50UmVjdCBt
X2JvdW5kczsKQEAgLTI4OSw3ICsyOTAsNyBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGRlY29kZXIgPj4gc2hhcGU7CiAgICAgICAg
IGlmICghc2hhcGUpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBy
ZWdpb24ubV9zaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+KFdURk1vdmUoKnNoYXBlKSk7
CisgICAgICAgIHJlZ2lvbi5tX3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92ZSgqc2hh
cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4geyByZWdpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9u
LmNwcAppbmRleCAxZTRlN2ZhYzM2YzdjMzBhNjU2ZjFlZmQwMGFhY2U2ZDRjOTVjZWRhLi42OTM5
ZjkxN2FlNmZhYjEzZWMxYzkxZDRhYTgxNTU2NmE5MTcwZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24uY3BwCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlv
biA6IHB1YmxpYyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZShU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uPigpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCmluZGV4IDdhZWI3
NTliMzRiMThhMWU4NDY4M2YyOWM2MTZhNmNkYjAyNTc0ZDguLjZhMDZjYzZlYmEzNGI5NTlkMmYx
ODYwMjI5ZTFmMmYzOGZmMzE5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZlbG9jaXR5RGF0YS5oCkBAIC02NSw2ICs2NSw3IEBAIHN0cnVjdCBWZWxvY2l0eURh
dGEgIHsKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IFZlbG9jaXR5RGF0YSYpOwogCiBjbGFzcyBIaXN0b3JpY2FsVmVsb2NpdHlEYXRhIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIaXN0b3JpY2FsVmVs
b2NpdHlEYXRhKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3Bw
CmluZGV4IDc3YTNlMThjMWM2YzJlMjdkZDYzYWUyOTZmNmVjOWExZWEyZmFlMWYuLjYxMjYwZTlj
ODNkYzRhNTUyODU3MWM5OWQ0YTI3MDViMTZjYTRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dDNEQU5HTEUuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAg
IG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNEQU5HTEU+KHRoaXMs
IGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uczNEQU5HTEU+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAgcmV0dXJu
ICptX2V4dGVuc2lvbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5oCmluZGV4IGE5ZWNkMzIxMzZkYTg3NzAyZjQ3OGFmY2Q4YWNjOGViOTdjMjM5
NDAuLjk5ZGRkZDhmODUwMjczMDNiYjhhNzYzZWNhYzJiODY5ODgyZmE5OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaApAQCAtNDQsNiArNDQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM7
CiAKIGNsYXNzIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGwoQVZQbGF5ZXJJdGVtVHJhY2sqKTsKICAgICBleHBsaWNpdCBBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsKEFWQXNzZXRUcmFjayopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IDVjZDc3NzJhYzJlZTFjZWE5MDEwZTgzMzcxZWE2YWFl
ZjdmMDY5NTguLjZiM2M5MjJlNmFlYmU1OTIwYWU2NWU1N2FmMDVlZGU0YWQwMzc0M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTMx
MywxMiArMzEzLDEyIEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUo
Q01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0cmVhCiB7CiAgICAgQVNTRVJUKG1h
eEZyYW1lcyA+PSAwKTsKIAotICAgIG1fdGFwRGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOworICAgIG1f
dGFwRGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpwcm9jZXNzaW5nRm9ybWF0KTsKICAgICBpbnQgbnVtYmVy
T2ZDaGFubmVscyA9IHByb2Nlc3NpbmdGb3JtYXQtPm1DaGFubmVsc1BlckZyYW1lOwogICAgIGRv
dWJsZSBzYW1wbGVSYXRlID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bVNhbXBsZVJhdGU7CiAgICAgQVNT
RVJUKHNhbXBsZVJhdGUgPj0gMCk7CiAKLSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CisgICAgbV9vdXRwdXRE
ZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEF1ZGlvU3RyZWFt
QmFzaWNEZXNjcmlwdGlvbj4oKTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tU2FtcGxlUmF0
ZSA9IHNhbXBsZVJhdGU7CiAgICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUZvcm1hdElEID0ga0F1
ZGlvRm9ybWF0TGluZWFyUENNOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1Gb3JtYXRGbGFn
cyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQ7CkBAIC0zMzgsNyArMzM4LDcg
QEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBt
YXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEKICAgICAvLyBNYWtlIHRoZSByaW5nYnVmZmVyIGxh
cmdlIGVub3VnaCB0byBzdG9yZSBhdCBsZWFzdCB0d28gY2FsbGJhY2tzIHdvcnRoIG9mIGF1ZGlv
LCBvciAxcywgd2hpY2hldmVyIGlzIGxhcmdlci4KICAgICBzaXplX3QgY2FwYWNpdHkgPSBzdGQ6
Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+KDIgKiBtYXhGcmFtZXMpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGtSaW5nQnVmZmVyRHVyYXRpb24gKiBzYW1wbGVSYXRlKSk7CiAKLSAgICBtX3JpbmdCdWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICBtX3JpbmdCdWZmZXIg
PSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRl
KENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbigqcHJvY2Vzc2luZ0Zvcm1hdCksIGNhcGFjaXR5KTsK
IAogICAgIC8vIEF1ZGlvQnVmZmVyTGlzdCBpcyBhIHZhcmlhYmxlLWxlbmd0aCBzdHJ1Y3QsIHNv
IGNyZWF0ZSBvbiB0aGUgaGVhcCB3aXRoIGEgZ2VuZXJpYyBuZXcoKSBvcGVyYXRvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggMzYxYTk5MmYwYzQ2NTBj
ZjJiOTYyOGE2NDJlOTdiNWRiYTBlMmEzYy4uNGZjNjc4N2RkOGQ5MDdjYWQ2YTI3N2YzOWIxZWQz
MmVkNjc5YTZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CkBAIC0yMzQsNyArMjM0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IENETUZhY3Rv
cnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIXN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZz4oKTsK
IH0KIAogYm9vbCBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzS2V5U3lzdGVt
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaAppbmRleCA4OTE4ZTgwZTBjMzkwZDdlOGRhY2ExOTAzOTQ3OWEwZDBmNjk1YWQ4Li41
Mzg2OTY5Zjk0OTc2ZjM4MzY4MDE4NzQxYmFmZDEyNTUxZTI4Yjg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgRm91ckNDOwogCiBjbGFzcyBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1p
bmcgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyYgc2lu
Z2xldG9uKCk7CiAKQEAgLTQ5LDYgKzUwLDcgQEAgY2xhc3MgQ0RNRmFjdG9yeUZhaXJQbGF5U3Ry
ZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgewogfTsKIAogY2xhc3MgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETVByaXZhdGUgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXgg
NGE1MGViNDFhNTgzNjgzZjY2YTY3NjIyOTU0NmM1ODAxYjIwYjU4OC4uZDgxYmNhMzU0OTAzOTE4
YTFiZGEwYWRkZDk1OGQ1OTQzZjcwMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIExlZ2Fj
eUNETTsKIGNsYXNzIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM7CiAKIGNsYXNzIENETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyhMZWdhY3lDRE0qIGNkbSkKICAgICAgICAgOiBtX2NkbShj
ZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCmluZGV4IDJjYzA4YTlhM2I1MWNiZjdhYjE5NzQyMDJhOThiMTY5ZGI0M2MxMDEuLjBjZDAx
MjlhM2NkOWVhZjg2M2FkNDc4OTgzODUwMzFkOGI3NmVmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xNDcsMTAgKzE0Nywx
MCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbihMZQogI2VuZGlmCiAgICAgCiAgICAgaWYgKHNob3Vs
ZFVzZUFWQ29udGVudEtleVNlc3Npb24gJiYgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246
OmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNl
c3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90
b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7CisgICAg
ICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uPihX
VEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVlKCku
dmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7CiAgICAgZWxzZQogI2lmIEhBVkUoQVZTVFJFQU1TRVNT
SU9OKQotICAgICAgICBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCAqdGhpcywg
Y2xpZW50KTsKKyAgICAgICAgc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWU3RyZWFt
U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgKnRoaXMsIGNs
aWVudCk7CiAjZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQ
bGF5U3RyZWFtaW5nUHNzaEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCmluZGV4IGU0NjAxNDgz
MDVjZWVkMWI1NjQ4NDE5OTZjYjlmYzM0Y2RjM2FiNTIuLjE0N2MzNzlmMTI3MDY4MmU1NWZkMjE1
Y2UyM2EzOWVhMTI0OTVhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlT
dHJlYW1pbmdQc3NoQm94LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggOiBw
dWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVh
bWluZ0luZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNpIjsgfQogCkBAIC00Miw3ICs0
Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCA6
IHB1YmxpYyBJU09GdWxsQm94IHsKICAgICBGb3VyQ0MgbV9zY2hlbWU7CiB9OwogCi1jbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IDogcHVi
bGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXF1ZXN0SW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrcmkiOyB9CiAKQEAg
LTU1LDcgKzU1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdL
ZXlSZXF1ZXN0SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKICAgICBLZXlJRCBtX2tleUlE
OwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3Nl
dElkQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrYWkiOyB9CiAgICAg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KQEAg
LTY2LDcgKzY2LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdL
ZXlBc3NldElkQm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGF0
YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29u
dGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma2N4IjsgfQogICAg
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBA
IC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBtX2Rh
dGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZl
cnNpb25MaXN0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09G
YWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma3Zs
IjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiB2ZXJzaW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fdmVyc2lvbnM7IH0KQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAg
IFZlY3Rvcjx1aW50OF90PiBtX3ZlcnNpb25zOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggZmluYWwg
OiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1l
KCkgeyByZXR1cm4gImZwc2siOyB9CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggOiBwdWJsaWMgSVNPQm94
IHsKICAgICBPcHRpb25hbDxJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94PiBt
X3ZlcnNpb25MaXN0OwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdJbml0RGF0YUJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewog
cHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzZCI7
IH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5
U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8SVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94PiBtX3JlcXVlc3RzOwogfTsKIAotY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94IDogcHVibGljIElTT1Byb3Rl
Y3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09G
YWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggZmluYWwgOiBwdWJsaWMgSVNPUHJvdGVjdGlvblN5c3Rl
bVNwZWNpZmljSGVhZGVyQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBmYWlyUGxheVN5c3RlbUlEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggODU3ZjMxZjI3NzJmNDA4
MWZiYTYzOGY4MTBjMTE0OTQyODU4Yjk0Yi4uNTljZjhiYTIxMzE2YjMwN2MwNTAyM2VkNTZkOWIz
OWQyNTYxN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmJ1ZmZl
cmVkKCkgYwogICAgIGlmICghbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKQogICAgICAgICBtX2Nh
Y2hlZExvYWRlZFRpbWVSYW5nZXMgPSBwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRM
b2FkZWRUaW1lUmFuZ2VzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCptX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjptYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXggMzk1
Y2U3ODJlOGM1ODA0NTk2MTYyNDY5ODBmMzNlYWRmMDNiNzhiMi4uNWY1YjZmNjk1MmI0OTNhOTg4
N2JhZmM3ZjMwYjdiZWU3MzM0MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyTWFjOjp+V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYygpID0gZGVmYXVsdDsKIFdlYkNv
cmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXImIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6
OnBsYXRmb3JtUGlja2VyKCkKIHsKICAgICBpZiAoIW1fdGFyZ2V0UGlja2VyKQotICAgICAgICBt
X3RhcmdldFBpY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1hYz4oKnRoaXMpOworICAgICAgICBtX3RhcmdldFBpY2tlciA9IG1ha2VVbmlxdWU8TWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX3RhcmdldFBp
Y2tlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGFmMGE3Y2M3N2JmMjkyY2RmZDY2
YWJjNmU3ZjYzYTUwOTAwYWFkNjcuLjVhNTE4YzUxNTFkMDVjM2VmNWIwOTQyYzQyZTNiMjQwMjAz
NjBhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHN0YXRpYyBkaXNw
YXRjaF9xdWV1ZV90IGdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJl
Z2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAorICAgICAgICBy
ZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdl
dFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVt
KTsKIH0KIApAQCAtNjcyLDcgKzY3Miw3IEBAIHN0YXRpYyBib29sIHRpbWVSYW5nZUlzVmFsaWRB
bmROb3RFbXB0eShDTVRpbWUgc3RhcnQsIENNVGltZSBkdXJhdGlvbikKIAogc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5n
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRp
bWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIAogICAgIGlmICgh
YXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwpA
QCAtMTEzNyw3ICsxMTM3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW8KICAgICBpZiAoIWtl
eVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGPigq
dGhpcywgY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOwogfQogCiAjZWxpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKQEAgLTE3MDgsNyArMTcwOCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bm90aWZpY2F0
aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDCiAg
ICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soaWY9JWQpICVz
IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9ic2VydmVyKSwgbm90aWZpY2F0aW9uTmFt
ZSk7CiAjZW5kaWYKIAotICAgIGF1dG8gbm90aWZpY2F0aW9uRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKKyAg
ICBhdXRvIG5vdGlmaWNhdGlvbkRhdGEgPSBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNr
RGF0YT4ocHJvcGVydHlOYW1lLCBvYnNlcnZlcik7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG5vdGlmaWNhdGlvbkRhdGEucmVsZWFzZSgpLCBwcm9j
ZXNzTm90aWZpY2F0aW9uKTsKIH0KQEAgLTE4MzMsNyArMTgzMyw3IEBAIHZvaWQgQVZGV3JhcHBl
cjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVn
aWJsZU91dHB1CiAKICAgICBBU1NFUlQobGVnaWJsZU91dHB1dCA9PSBzZWxmLT5tX2xlZ2libGVP
dXRwdXQpOwogCi0gICAgYXV0byBsZWdpYmxlT3V0cHV0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
TGVnaWJsZU91dHB1dERhdGE+KGF0dHJpYnV0ZWRTdHJpbmdzLCBuYXRpdmVTYW1wbGVCdWZmZXJz
LCBQQUw6OnRvTWVkaWFUaW1lKGl0ZW1UaW1lKSwgY29udGV4dCk7CisgICAgYXV0byBsZWdpYmxl
T3V0cHV0RGF0YSA9IG1ha2VVbmlxdWU8TGVnaWJsZU91dHB1dERhdGE+KGF0dHJpYnV0ZWRTdHJp
bmdzLCBuYXRpdmVTYW1wbGVCdWZmZXJzLCBQQUw6OnRvTWVkaWFUaW1lKGl0ZW1UaW1lKSwgY29u
dGV4dCk7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IGxlZ2libGVPdXRwdXREYXRhLnJlbGVhc2UoKSwgcHJvY2Vzc0N1ZSk7CiB9CkBAIC0xOTI2LDcg
KzE5MjYsNyBAQCBCb29sZWFuIEFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZv
ckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKEFWQ0ZBcwogCiAgICAgTE9HKE1lZGlhLCAiQVZG
V3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVz
b3VyY2UoJXApIiwgc2VsZik7CiAKLSAgICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TG9hZFJlcXVlc3REYXRhPihsb2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CisgICAg
YXV0byBsb2FkUmVxdWVzdERhdGEgPSBtYWtlVW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9hZGlu
Z1JlcXVlc3QsIGNvbnRleHQpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBsb2FkUmVxdWVzdERhdGEucmVsZWFzZSgpLCBwcm9jZXNzU2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlc291cmNlKTsKIApAQCAtMTk1Myw3ICsxOTUzLDcgQEAgUGxhdGZvcm1M
YXllciogQVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgLy8gQ3JlYXRlIGEgUGxhdGZvcm1DQUxheWVyIHNvIHdlIGNhbiByZXNpemUgdGhlIHZpZGVv
IGxheWVyIHRvIG1hdGNoIHRoZSBlbGVtZW50IHNpemUuCi0gICAgbV9sYXllckNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOworICAgIG1fbGF5ZXJDbGllbnQgPSBt
YWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKTsKICAgICBpZiAoIW1fbGF5ZXJDbGllbnQpCiAg
ICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTE0YWYxYTI3ZjI2YmQxYWQ2MDI4NjA0YTU3NTJm
MGRmOWE4ZGY1Mi4uN2RlMTRjMjU3MWY3ZDM4ZWVjYmIzNDhmZGEzYzc0YTQzZGViODJhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5t
bQpAQCAtMzMsMTMgKzMzLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNr
KiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsK
IH0KIAogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMo
TWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCi0gICAgOiBtX2ltcGwoc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQorICAgIDogbV9p
bXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKIHsKICAg
ICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZv
aWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJ
dGVtVHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpOwogfQogCkBAIC02OSwxNCArNjksMTQgQEAgQVZQbGF5ZXJJdGVtVHJhY2sqIEF1ZGlv
VHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRlbVRyYWNrKCkKIH0KIAogQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFj
aykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAog
dm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNr
ICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsK
IH0KIApAQCAtODcsNyArODcsNyBAQCBBVkFzc2V0VHJhY2sqIEF1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQzo6YXNzZXRUcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRN
ZWRpYVNlbGVjdGlvbk9wdGlvbihNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikK
IHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KG9wdGlvbik7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPihvcHRpb24pOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKaW5kZXggZWMwZDBlZGRiZjczYmVlZGE2NzE3YjdhNTE4
YzczMjEyNjA5NWFlMi4uZGY1MjI2YTRlYTAzNmU1NmZhMjUzOWE2Mjc2MmEyMzhhZTcwZTBhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtl
VW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKICAgICAsIG1fcGFyZW50
KHBhcmVudCkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKQEAgLTUyLDcgKzUy
LDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQcm9w
ZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAg
IG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwog
ICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAppbmRleCAyMmFhZmVjN2I4
MzQyN2I4MTMwYTdjMDQzZjhmNjcyMDgzNGNjYTQ3Li41ZDhlMjUwNzQ3MGJjN2E0OTk5NTVjOTgx
YjE3NmZmNDQ0ZmJjNmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDLmgKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwogCi1jbGFz
cyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+IHsKK2NsYXNz
IENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Np
b24sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwg
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbQppbmRleCAyZmUyNTI0OTk0YzNiMTk0NDU5ZWMzMzMwMjlhYmQ5ZTk4NWM3NWI0Li5iYjA3
Nzc2MTM4MmM4ODA4MDdiYTUzYzhkYWRiMjk0NTZlNTZlYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lk
IEltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01ldGFkYXRhKCkKICAgICAgICAgfHwgIW1f
aW1hZ2VSb3RhdGlvblNlc3Npb24tPnRyYW5zZm9ybSgpCiAgICAgICAgIHx8IG1faW1hZ2VSb3Rh
dGlvblNlc3Npb24tPnRyYW5zZm9ybSgpLnZhbHVlKCkgIT0gZmluYWxUcmFuc2Zvcm0KICAgICAg
ICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+c2l6ZSgpICE9IHNpemUpCi0gICAgICAgIG1f
aW1hZ2VSb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNz
aW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVf
MzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMp
OworICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgc2l6ZSwga0NWUGl4ZWxGb3Jt
YXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJs
ZTo6WWVzKTsKIAogICAgIG1fc2l6ZSA9IGV4cGFuZGVkSW50U2l6ZShtX2ltYWdlUm90YXRpb25T
ZXNzaW9uLT5yb3RhdGVkU2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGM2
NTkwYmRlZTY3YjRlMjA5ODg4ZTk2YTJjMzMwZjJmZTIzMzg2OTcuLjg0OTkwNGFjZjkyOWM3Y2Zl
M2Y5NGJjNDEwZTBkMGIyZThiMWI0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjc2
LDcgKzI3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhCiAgICAgaWYgKCFpc0F2YWlsYWJs
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxh
eWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNU
eXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVU
eXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAtMzY2LDcgKzM2Niw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmCiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXIq
IHBsYXllcikKICAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbihwbGF5ZXIpCi0g
ICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkp
CiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0
eVJlc2l6ZUFzcGVjdCkKICAgICAsIG1fb2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3JlQVZG
TW92aWVPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhQbGF5ZXI6bWFrZVdlYWtQdHIoKnRoaXMpXSkp
CiAgICAgLCBtX3ZpZGVvRnJhbWVIYXNEcmF3bihmYWxzZSkKQEAgLTEzMzcsNyArMTMzNyw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0UHJlc2VydmVzUGl0
Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJl
ZFRpbWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSkK
ICAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CkBAIC0xODkyLDcgKzE4OTIsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbigp
CiAgICAgICAgICYmIG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNpemUoKSA9PSBuYXR1cmFsU2l6
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9y
bSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOworICAgIG1faW1hZ2VSb3RhdGlv
blNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmlu
YWxUcmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKIH0KIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKQEAgLTIyMTYsNyArMjIxNiw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlw
ZSkKICNlbHNlCiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IG5pbDsKICNlbmRp
ZgotICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMp
OworICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAg
IH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMjI2NSw3ICsyMjY1LDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9Q
bGF0Zm9ybVRleHR1cmUoR3JhcGgKICAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZlckdl
dEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0
dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlx
dWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1RleHR1
cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CiAK
ICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0
dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJl
LCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CkBAIC0yMzMwLDcgKzIzMzAsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlU2VzcwogewogICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVt
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsKKyAgICBh
dXRvIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0aGlz
LCBjbGllbnQpOwogICAgIG1fc2Vzc2lvbiA9IG1ha2VXZWFrUHRyKCpzZXNzaW9uKTsKICAgICBy
ZXR1cm4gV1RGTW92ZShzZXNzaW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXgg
NzM5NmU1YjFiNDMxMTk4ZTVlNjBkOGZjZDA2MzU5YmIyN2NmNDlmNy4uYTFkZDBmOTA5MWZiMjg2
NDY4ZGJlMGFlMTBjZThiM2MxNDJjMGJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAg
LTI2OCw2ICsyNjgsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMKICAgICBmcmllbmQgY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzsKIAogICAgIHN0
cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29uc3QgTWVkaWFUaW1lJiB0YXJnZXRUaW1lLCBjb25z
dCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZl
VGhyZXNob2xkKQogICAgICAgICAgICAgOiB0YXJnZXRUaW1lKHRhcmdldFRpbWUpCiAgICAgICAg
ICAgICAsIG5lZ2F0aXZlVGhyZXNob2xkKG5lZ2F0aXZlVGhyZXNob2xkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCmluZGV4IGYxOTUxNTZkOGNmMjI1NmY2MGY5ZjU1MzI0MTI5ZTg1MjNkOWQz
OGIuLjljMGFlZjYxOWFkYzJhMzE4ZjBkYjdkMmUzODY3YzIxZGZjMzFkZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhN
ZWRpYQogICAgICwgbV9wbGF5aW5nKDApCiAgICAgLCBtX3NlZWtpbmcoZmFsc2UpCiAgICAgLCBt
X2xvYWRpbmdQcm9ncmVzc2VkKGZhbHNlKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigp
KQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogICAgICwgbV9lZmZlY3RpdmVSYXRlQ2hhbmdl
ZExpc3RlbmVyKEVmZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcywgW21f
c3luY2hyb25pemVyIHRpbWViYXNlXSkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
LCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCkBAIC0yMDEsNyArMjAxLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3QKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qz4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyBy
ZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBs
YXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAs
IDAsIDApOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNB
dmFpbGFibGUoKSk7CiB9CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYg
dGkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidGltZSA9ICIsIHRpbWUsICIsIG5lZ2F0
aXZlVGhyZXNob2xkID0gIiwgbmVnYXRpdmVUaHJlc2hvbGQsICIsIHBvc2l0aXZlVGhyZXNob2xk
ID0gIiwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgbV9zZWVraW5nID0gdHJ1ZTsKLSAgICBt
X3BlbmRpbmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwgbmVnYXRp
dmVUaHJlc2hvbGQsIHBvc2l0aXZlVGhyZXNob2xkKTsKKyAgICBtX3BlbmRpbmdTZWVrID0gbWFr
ZVVuaXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwgbmVnYXRpdmVUaHJlc2hvbGQsIHBvc2l0aXZlVGhy
ZXNob2xkKTsKIAogICAgIGlmIChtX3NlZWtUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3Nl
ZWtUaW1lci5zdG9wKCk7CkBAIC01NDMsNyArNTQzLDcgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWFkeVN0YXRlKCkgY29u
c3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgp
LCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxl
KCkpOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjptYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CkBAIC01NTgsNyArNTU4LDcgQEAgTWVkaWFU
aW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bWluTWVkaWFUaW1lU2Vl
a2FibGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVm
ZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJl
dHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5idWZmZXJl
ZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dApAQCAtNjAyLDcgKzYwMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UoKQogCiAgICAgaWYgKCFtX3JnYkNvbmZvcm1lcikgewog
ICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhl
bEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9
OwotICAgICAgICBtX3JnYkNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJD
b25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKKyAgICAg
ICAgbV9yZ2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAgICAgbV9sYXN0
SW1hZ2UgPSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtNjQ5LDcgKzY0OSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhCiAgICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAg
ICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVy
ZUNvcGllckNWPigqY29udGV4dCk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFr
ZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJuIG1f
dmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhl
bEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwg
ZmxpcFkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGNhM2IxMTM1NTJiMzg4
NWM5OTk3N2RhZTJhMjFlYTE2NTc3ZWRhODAuLjlkZWVlNDZmMmNhMjQ1Mjk1M2RmNWNhODhiYjY5
ZjgxOGU3ZTRlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTE4Myw3ICsxODMs
NyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAg
ICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJTdGF0
dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9j
bG9jayhQQUw6OkNsb2NrOjpjcmVhdGUoKSkKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJN
YW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4o
KSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKICAgICAsIG1fbG9n
SWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQpAQCAtMjIwLDcg
KzIyMCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVk
VHlwZXMsCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVy
biBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVy
KTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCiAgICAgICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAs
IDAsIDApOwogfQogCkBAIC0xMDU0LDEyICsxMDU0LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29u
Zm9ybWVyKQotICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0
VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKKyAgICAgICAgbV9pbWFn
ZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBl
XzMyQkdSQSkgfSk7CiAKICAgICBBU1NFUlQobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25m
b3JtZXIpOwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNw
cAppbmRleCBjODcxYzU5NDgzNTUwODU3MTgyYzdhMjRkNTUzNGI4NWE1ZDRlZjdlLi4yOTQ4M2Jh
NWU5OGQ5NWZhOGU1ZWM5YTZhMTBiZjY0MWFhZTM1NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKQEAgLTM0LDE5ICszNCwx
OSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBt
X2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykp
CisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
aykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIFZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJh
Y2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAK
IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKE1lZGlh
U2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKKyAgICA6IG1faW1wbCht
YWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCiB7CiAgICAgcmVz
ZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgVmlkZW9U
cmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKEFWUGxheWVySXRlbVRy
YWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2so
KTsKIH0KIApAQCAtNzcsNyArNzcsNyBAQCBBVlBsYXllckl0ZW1UcmFjayogVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwor
ICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
OwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC04OCw3ICs4OCw3IEBA
IEFWQXNzZXRUcmFjayogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjphc3NldFRyYWNrKCkKIAog
dm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0b25PcHRpb24oTWVk
aWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1faW1w
bCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAgICBy
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpp
bmRleCBmY2MyNDk2YTEzNWFhNGY3M2E4ZmU1NDhkMTRlMGM4MDAwNGFkMWIwLi45NzU2Y2ZmYWZk
OGMzZjZmZTNiNDdhMjMzMzcxYjc0ZGVjOThkMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVu
dCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKSkKICAgICAsIG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fdHJhY2tJRCgt
MSkKICAgICAsIG1fc2VsZWN0ZWQoZmFsc2UpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
CiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJh
Y2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRp
ZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMTcxZjI3NzJjOTRhNjljZGE3
MzQ5M2NjOWM4Yzc4NzhiMDAxMDhkZC4uODc2NTM0NDUyMDI0ZTYxNjUxNDE3YTA0YTBkOTQ1MDU4
YTk1NDAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNjM2LDEyICsxNjM2LDEyIEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKENvbW1pdFN0YXRlJiBjb21taXRT
dGF0ZSwgY29uc3QgVHJhCiAgICAgaWYgKHVzZXNEaXNwbGF5TGlzdERyYXdpbmcoKSAmJiBtX2Ry
YXdzQ29udGVudCAmJiAoIW1faGFzRXZlclBhaW50ZWQgfHwgaGFkRGlydHlSZWN0cykpIHsKICAg
ICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRGlzcGxheUxpc3RSZWNvcmRTdGFydCwgRGlz
cGxheUxpc3RSZWNvcmRFbmQpOwogCi0gICAgICAgIG1fZGlzcGxheUxpc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKKyAgICAgICAgbV9kaXNwbGF5TGlz
dCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwogICAgICAgICAKICAg
ICAgICAgRmxvYXRSZWN0IGluaXRpYWxDbGlwKGJvdW5kc09yaWdpbigpLCBzaXplKCkpOwogCiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpS
ZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCks
IGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlMaXN0LCBH
cmFwaGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOwog
ICAgICAgICB9KTsKICAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQpAQCAtMjg2Nyw3ICsyODY3
LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbigp
IGNvbnN0CiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJBbmltYXRpb25zKCkKIHsK
ICAgICBpZiAoIW1fYW5pbWF0aW9ucykKLSAgICAgICAgbV9hbmltYXRpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CisgICAgICAgIG1fYW5pbWF0aW9ucyA9IG1ha2VV
bmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0
QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uJiBjYUFuaW0sIEFuaW1hdGVkUHJv
cGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgs
IGludCBzdWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KQpAQCAtMzkwMyw3ICszOTAzLDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwg
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4KICAgICBjb250ZW50c0xheWVyID0gbnVsbHB0cjsKIAog
ICAgIGlmICghbV9sYXllckNsb25lcykKLSAgICAgICAgbV9sYXllckNsb25lcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGF5ZXJDbG9uZXM+KCk7CisgICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBtYWtlVW5p
cXVlPExheWVyQ2xvbmVzPigpOwogCiAgICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNsb25l
KGNsb25lSUQsIG1fbGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMtPnByaW1hcnlMYXllckNsb25l
cywgY2xvbmVMZXZlbCk7CiAgICAgc3RydWN0dXJhbExheWVyID0gZmluZE9yTWFrZUNsb25lKGNs
b25lSUQsIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLT5zdHJ1Y3R1cmFs
TGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCAzYWM0YzFlMzJhMTU0OGQ1
OGM2OTExMTdjYzY5YTI5YzRkY2YwZTFhLi5jNGIyYzljMzQ3MDgwYTZiN2M5NmQ2NzAyZjRhNGQ4
YTMwYzdmNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIGNsYXNzIEdyYXBoaWNz
TGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHsKICAgICBGbG9hdFNpemUgcGl4ZWxBbGlnbm1lbnRPZmZzZXQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0OyB9CiAKICAgICBzdHJ1Y3QgQ29tbWl0
U3RhdGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IHVuc2lnbmVkIHRyZWVEZXB0aCB7IDAgfTsKICAgICAgICAgdW5zaWduZWQgdG90YWxCYWNrZHJv
cEZpbHRlckFyZWEgeyAwIH07CiAgICAgICAgIGJvb2wgYW5jZXN0b3JIYWRDaGFuZ2VzIHsgZmFs
c2UgfTsKQEAgLTMwOSw2ICszMTAsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMg
R3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgdHlwZWRl
ZiB1bnNpZ25lZCBDb21wdXRlVmlzaWJsZVJlY3RGbGFnczsKICAgICAKICAgICBzdHJ1Y3QgVmlz
aWJsZUFuZENvdmVyYWdlUmVjdHMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdDsKICAgICAgICAgRmxvYXRSZWN0
IGNvdmVyYWdlUmVjdDsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYW5pbWF0aW5nVHJh
bnNmb3JtOwpAQCAtMzI4LDYgKzMzMCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIAogICAgIC8v
IFVzZWQgdG8gdHJhY2sgdGhlIHBhdGggZG93biB0aGUgdHJlZSBmb3IgcmVwbGljYSBsYXllcnMu
CiAgICAgc3RydWN0IFJlcGxpY2FTdGF0ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhSZXBsaWNhRGVwdGgg
PSAxNjsKICAgICAgICAgZW51bSBSZXBsaWNhQnJhbmNoVHlwZSB7IENoaWxkQnJhbmNoID0gMCwg
UmVwbGljYUJyYW5jaCA9IDEgfTsKICAgICAgICAgUmVwbGljYVN0YXRlKFJlcGxpY2FCcmFuY2hU
eXBlIGZpcnN0QnJhbmNoKQpAQCAtNTc5LDYgKzU4Miw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJD
QSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsK
IAogICAgIC8vIFJlZmVyZW5jZXMgdG8gY2xvbmVzIG9mIG91ciBsYXllcnMsIGZvciByZXBsaWNh
dGVkIGxheWVycy4KICAgICBzdHJ1Y3QgTGF5ZXJDbG9uZXMgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVyTWFwIHByaW1hcnlMYXllckNsb25l
czsKICAgICAgICAgTGF5ZXJNYXAgc3RydWN0dXJhbExheWVyQ2xvbmVzOwogICAgICAgICBMYXll
ck1hcCBjb250ZW50c0xheWVyQ2xvbmVzOwpAQCAtNjA4LDYgKzYxMiw3IEBAIGNsYXNzIEdyYXBo
aWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVy
Q2xpZW50IHsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8QW5pbWF0aW9uUHJv
Y2Vzc2luZ0FjdGlvbj4+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+PiBBbmltYXRpb25zTWFw
OwogICAgIHN0cnVjdCBMYXllckFuaW1hdGlvbnMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiB1
bmNvbWl0dGVkQW5pbWF0aW9uczsKICAgICAgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcCBhbmlt
YXRpb25zVG9Qcm9jZXNzOwogICAgICAgICBBbmltYXRpb25zTWFwIHJ1bm5pbmdBbmltYXRpb25z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuY3BwCmluZGV4IDRkNjRjMmM0YjE5YjMxYjgwNTRjMWJjNDFhYzAyMjU3M2JlZmY1
NjIuLjMwNWVmZDMzM2JkNjExYzZlZjVlNGMxYjI2MjI4ODc1MjU2ZjI0ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAgU3RyaW5nIFRpbGVDb250cm9sbGVyOjp6b29tZWRPdXRUaWxl
R3JpZENvbnRhaW5lckxheWVyTmFtZSgpCiBUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIo
UGxhdGZvcm1DQUxheWVyKiByb290UGxhdGZvcm1MYXllcikKICAgICA6IG1fdGlsZUNhY2hlTGF5
ZXIocm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKG93bmluZ0dy
YXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSkKLSAgICAs
IG1fdGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQorICAgICwgbV90
aWxlR3JpZChtYWtlVW5pcXVlPFRpbGVHcmlkPigqdGhpcykpCiAgICAgLCBtX3RpbGVSZXZhbGlk
YXRpb25UaW1lcigqdGhpcywgJlRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJG
aXJlZCkKICAgICAsIG1fdGlsZVNpemVDaGFuZ2VUaW1lcigqdGhpcywgJlRpbGVDb250cm9sbGVy
Ojp0aWxlU2l6ZUNoYW5nZVRpbWVyRmlyZWQsIHRpbGVTaXplVXBkYXRlRGVsYXkpCiAgICAgLCBt
X21hcmdpbkVkZ2VzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQpAQCAtMTMyLDcgKzEzMiw3
IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCiAg
ICAgaWYgKG1fem9vbWVkT3V0Q29udGVudHNTY2FsZSAmJiBtX3pvb21lZE91dENvbnRlbnRzU2Nh
bGUgPT0gdGlsZUdyaWQoKS5zY2FsZSgpICYmIHRpbGVHcmlkKCkuc2NhbGUoKSAhPSBzY2FsZSAm
JiAhbV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlTY2FsZUZhY3RvcikgewogICAgICAgICBtX3pvb21l
ZE91dFRpbGVHcmlkID0gV1RGTW92ZShtX3RpbGVHcmlkKTsKICAgICAgICAgbV96b29tZWRPdXRU
aWxlR3JpZC0+c2V0SXNab29tZWRPdXRUaWxlR3JpZCh0cnVlKTsKLSAgICAgICAgbV90aWxlR3Jp
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKTsKKyAgICAgICAgbV90aWxlR3Jp
ZCA9IG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlzKTsKICAgICAgICAgdGlsZUdyaWRzQ2hhbmdl
ZCgpOwogICAgIH0KIApAQCAtNTAwLDcgKzUwMCw3IEBAIEZsb2F0UmVjdCBUaWxlQ29udHJvbGxl
cjo6YWRqdXN0VGlsZUNvdmVyYWdlUmVjdEZvclNjcm9sbGluZyhjb25zdCBGbG9hdFJlY3QmIGNv
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFtX2hpc3RvcmljYWxWZWxvY2l0
eURhdGEpCi0gICAgICAgICAgICBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhpc3RvcmljYWxWZWxvY2l0eURhdGE+KCk7CisgICAgICAgICAgICBtX2hpc3Rvcmlj
YWxWZWxvY2l0eURhdGEgPSBtYWtlVW5pcXVlPEhpc3RvcmljYWxWZWxvY2l0eURhdGE+KCk7CiAK
ICAgICAgICAgbV92ZWxvY2l0eSA9IG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YS0+dmVsb2NpdHlG
b3JOZXdEYXRhKHNjcm9sbE9mZnNldCwgY29udGVudHNTY2FsZSwgTW9ub3RvbmljVGltZTo6bm93
KCkpOwogICAgIH07CkBAIC02ODUsNyArNjg1LDcgQEAgSW50UmVjdCBUaWxlQ29udHJvbGxlcjo6
dGlsZUNvdmVyYWdlUmVjdCgpIGNvbnN0CiBQbGF0Zm9ybUNBTGF5ZXIqIFRpbGVDb250cm9sbGVy
Ojp0aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyKCkKIHsKICAgICBpZiAoIW1fY292ZXJhZ2VN
YXApCi0gICAgICAgIG1fY292ZXJhZ2VNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb3ZlcmFn
ZU1hcD4oKnRoaXMpOworICAgICAgICBtX2NvdmVyYWdlTWFwID0gbWFrZVVuaXF1ZTxUaWxlQ292
ZXJhZ2VNYXA+KCp0aGlzKTsKIAogICAgIHJldHVybiAmbV9jb3ZlcmFnZU1hcC0+bGF5ZXIoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggYTQ4NTIzY2Y1MTc2YjMx
ZjJhY2M0OTg0YjJlY2Q4ZTJjODc0ZjYwNy4uMzZhYzJmNzg0YjAwNmZmOWM3MDNmNDFlN2JmZjY4
N2ExYWE0YzY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTMxMyw3
ICszMTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkKICAgICAg
ICAgV2ViVGlsZWRCYWNraW5nTGF5ZXIqIHRpbGVkQmFja2luZ0xheWVyID0gc3RhdGljX2Nhc3Q8
V2ViVGlsZWRCYWNraW5nTGF5ZXIqPihtX2xheWVyLmdldCgpKTsKICAgICAgICAgVGlsZUNvbnRy
b2xsZXIqIHRpbGVDb250cm9sbGVyID0gW3RpbGVkQmFja2luZ0xheWVyIGNyZWF0ZVRpbGVDb250
cm9sbGVyOnRoaXNdOwogCi0gICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJz
KCkpOworICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1DQUxh
eWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKICAgICB9CiAKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC05NDcsNyArOTQ3LDcgQEAgRmxvYXRSb3Vu
ZGVkUmVjdCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2hhcGVSb3VuZGVkUmVjdCgpIGNvbnN0CiB2
b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0KQogewogICAgIEFTU0VSVChtX2xheWVyVHlwZSA9PSBM
YXllclR5cGVTaGFwZUxheWVyKTsKLSAgICBtX3NoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICBtX3NoYXBlUm91bmRl
ZFJlY3QgPSBtYWtlVW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKIAogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIFBhdGggc2hhcGVQYXRoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRC
YWNraW5nTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQppbmRleCBjMTkxZjM5MWM2NDU3MmNjOTk1NWE0N2M2
Y2I3YjkwMDc4NjcyNjM5Li5iM2UyMWY2NDBhZTkxYTBkMWY1OTM4NDZhODUwZmVjMjJmYTc4YTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9X
ZWJUaWxlZEJhY2tpbmdMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQpAQCAtNjIsNyArNjIsNyBAQCAt
IChpZClpbml0V2l0aExheWVyOihpZClsYXllcgogLSAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXIq
KWNyZWF0ZVRpbGVDb250cm9sbGVyOihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqKXJvb3RMYXll
cgogewogICAgIEFTU0VSVCghX3RpbGVDb250cm9sbGVyKTsKLSAgICBfdGlsZUNvbnRyb2xsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOwor
ICAgIF90aWxlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI+
KHJvb3RMYXllcik7CiAgICAgcmV0dXJuIF90aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCAxNWQ0ZTQ2YjA2Yzc2YzE3ZjM0MDUxMzljNmM5
NzljMTAxN2IzNjk2Li5kNmE3YzE2OGYwZTQ0MWZkN2QyOTBmYzRmZTMxMzYwYzU4NWQ1Njg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIFBsYXRmb3Jt
Q0FMYXllcldpbjo6UGxhdGZvcm1DQUxheWVyV2luKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRm
b3JtTGF5ZXIqIGxheWVyCiAgICAgaWYgKHVzZXNUaWxlZEJhY2tpbmdMYXllcigpKSB7CiAgICAg
ICAgIGludGVybiA9IG5ldyBXZWJUaWxlZEJhY2tpbmdMYXllcldpbih0aGlzKTsKICAgICAgICAg
VGlsZUNvbnRyb2xsZXIqIHRpbGVDb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWJUaWxl
ZEJhY2tpbmdMYXllcldpbio+KGludGVybiktPmNyZWF0ZVRpbGVDb250cm9sbGVyKHRoaXMpOwot
ICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxh
eWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKKyAgICAgICAgbV9j
dXN0b21TdWJsYXllcnMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250
cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGludGVybiA9
IG5ldyBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVy
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxl
ZEJhY2tpbmdMYXllcldpbi5jcHAKaW5kZXggMjI0ZDhiYmVlZDM5OTJhZWVmYzkzMmExYmVlODBk
YzYzZmNhMmY4Yi4uYzVhNzNlOGQzYWU5YmI0OWE5NmJlMjdmNTMyN2UwNmMwNjIxNGZjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVk
QmFja2luZ0xheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAg
dm9pZCBXZWJUaWxlZEJhY2tpbmdMYXllcldpbjo6c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3Im
IHZhbHVlKQogVGlsZUNvbnRyb2xsZXIqIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVU
aWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcikKIHsKICAgICBBU1NFUlQo
IW1fdGlsZUNvbnRyb2xsZXIpOwotICAgIG1fdGlsZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOworICAgIG1fdGlsZUNvbnRyb2xsZXIgPSBt
YWtlVW5pcXVlPFRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOwogICAgIHJldHVybiBtX3RpbGVD
b250cm9sbGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXgg
YzMxY2M2ZTM4YmE1OTljOWZiODI2YWEwMzk3NmIyMDUxY2MxMTViZS4uMThmMzQwNTBhYTllM2I3
NDM0YTYyN2EwNzdjZDJjY2YyZjk5YzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aApAQCAtNDEsNiArNDEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dl
ZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNl
dHRpbmdzOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSk7CiBwdWJsaWM6CiAgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBT
aGFyZWRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4
IDUwYjdkOWMyM2MwMWFiZmMzYTA1MTc4YzEwNTI1MTA3MGYxNWQ2ZGIuLjA0ZjJhOWZmNTQ2OWFh
NWJhMjRkMTQ5NTY1NGI2MGYwYmM0M2QyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcApAQCAtNDUsNyArNDUsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29u
dGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAg
IHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAg
ICAgICBbJnBsYXRmb3JtQ29udGV4dF0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIHBsYXRmb3JtQ29u
dGV4dCk7CiAgICAgICAgIH0pOwogfQogCkBAIC01NCwxNCArNTQsMTQgQEAgR3JhcGhpY3NDb250
ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmNyZWF0ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJ
bXBsRmFjdG9yeSgKICAgICAgICAgW2NhaXJvQ29udGV4dF0oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIGNhaXJvQ29udGV4dCk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIGNh
aXJvQ29udGV4dCk7CiAgICAgICAgIH0pOwogfQogCiBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJ
bXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCiAgICAgLCBt
X3BsYXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250
ZXh0KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNl
dEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUt
PnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpAQCAtNjksOSArNjksOSBAQCBH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFBsYQogCiBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OkdyYXBo
aWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNhaXJvX3QqIGNh
aXJvQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0
IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKLSAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQo
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY2Fpcm9Db250ZXh0KSkKKyAg
ICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWly
bz4oY2Fpcm9Db250ZXh0KSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KCptX293bmVkUGxhdGZv
cm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCisgICAgLCBtX3ByaXZhdGUo
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250
ZXh0KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRl
KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3Jt
Q29udGV4dC5jcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggMTg4ZTdiYzNkYjg1ODI5
NjVjYWJiMjg5YmM1YzAyYmM3MTYyM2FhNS4uMWY3NjNiNTA3NzNiZGY1ZDFlNTJlNWQxOWMwYjgw
ZmJhZDM3YjQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2
b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgICAgICBb
dGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAg
ICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUs
IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKKyAgICAgICAgICAgICAg
ICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6
U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKICAgICAgICAgICAgIH07CiAjaWYgVVNFKE5JQ09TSUEp
CiAgICAgICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsKQEAgLTMw
OCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogCiAgICAgUmVmUHRyPGNhaXJv
X3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpKTsK
ICAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwotICAgIG1fZGF0
YS5tX2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dCkp
OworICAgIG1fZGF0YS5tX2NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29u
dGV4dCkpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDgwYjVkNGZi
ZDI3MmRlZTQzNWI1Y2U3YzA4NGVlMzU5YTUwMWVkNjQuLmQzNWZmMGVmZjk3MTk1MGVlZDFlM2Zk
MDI2YmNkYTllYWZhMzRlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDR0NvbG9yU3AKICAgICAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBt
YWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKICAgICB9CiAKICAg
ICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAKaW5kZXggNzI1MmU0OTUyNGY2MDk4NmIwMzhjYTg3YzhlN2UyNjVkMDU3NDcwZC4uYzAxNjAx
ZTEwMTExMjc5OGIyNjhkZmFmMjY5MzgyYjY1MzE5ZDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0
LmNwcApAQCAtMTM3MSw3ICsxMzcxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURh
dGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUKIAogICAg
IGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29tcHV0ZU5lY2Vzc2Fy
eVN5bnRoZXNpcyhmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRPYmxpcXVlUGFpcigp
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5n
ZXQoKSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0
aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERl
c2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24u
d2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0K
IAogdHlwZWRlZiBIYXNoU2V0PFJldGFpblB0cjxDVEZvbnRSZWY+LCBXVEY6OlJldGFpblB0ck9i
amVjdEhhc2g8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmplY3RIYXNoVHJhaXRzPENURm9u
dFJlZj4+IEZhbGxiYWNrRGVkdXBTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uQ29yZVRleHQuY3BwCmluZGV4IDFjZTBjOTQ3ZTE3ZTlhNjhlZWFkM2E0ZDU3YjU5ZDhm
YTE2Y2VmMjkuLjBkZTkzNGE3YjM4NDEwMGVlYjc2ZDc3ZjQ1NmExODJmYmJhYmNlY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCkBAIC0xMTIs
NyArMTEyLDcgQEAgRm9udFJhbmdlcyBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpm
b250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KIAogICAgICAgICBhdXRvIFtzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMo
Zm9udEZvclN5bnRoZXNpc0NvbXB1dGF0aW9uLmdldCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRP
YmxpcXVlUGFpcigpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0
Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNlLCBzeW50aGV0aWNPYmxpcXVlLCBmb250
RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgp
LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNlLCBzeW50
aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0
aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKGZvbnRQbGF0Zm9ybURhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0M0RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KaW5kZXggODkyYjRhOThjMDA3YjZmOTcw
YTM2ODYxYmU5MTcxNDhiYjA0NjcyYy4uNTc5ZjFiOTE4ZGJiZTc1Yjg0MTNlNmQ2ZmQxNWRmYWY2
NGEzNTY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCkBAIC05Miw2ICs5Miw3
IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdGF0dXNDaGVja1RocmVzaG9sZCA9IDU7CiAvLyBG
SVhNRTogVGhpcyBjbGFzcyBpcyBjdXJyZW50bHkgZW1wdHkgb24gTWFjLCBidXQgd2lsbCBnZXQg
cG9wdWxhdGVkIGFzCiAvLyB0aGUgcmVzdHJ1Y3R1cmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MDMgaXMgZG9uZQogY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqKSB7IH0KICAgICAKQEAg
LTIxMiw3ICsyMTMsNyBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeURpc3BsYXlNYXNrKFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QgY29udGV4dE9iaiwgQ0dMUGl4ZWxGbwogCiBHcmFwaGljc0NvbnRl
eHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUs
IEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRycykK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZT4odGhpcykpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU+KHRoaXMpKQogewogI2lmICFVU0UoQU5HTEUpCiAjaWYgVVNFKE9QRU5HTF9FUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFj
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bQppbmRleCA1YzczM2UzYmFkMWU5ZDNkMjVjMWVkNTdmNWFjZGZmZjNhNGNiOTlmLi4zODc1ZmNm
ZDMwNmRmODZkMzQ3NGVlMTg2MGJhNTkwYTNhOGJjMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC0zMjYsNyArMzI2
LDcgQEAgR3JhcGhpY3NDb250ZXh0JiBJT1N1cmZhY2U6OmVuc3VyZUdyYXBoaWNzQ29udGV4dCgp
CiAgICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm4gKm1fZ3JhcGhpY3ND
b250ZXh0OwogCi0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOworICAgIG1fZ3JhcGhpY3NDb250
ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGVuc3VyZVBsYXRmb3JtQ29udGV4dCgp
KTsKICAgICBtX2dyYXBoaWNzQ29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQodHJ1ZSk7
CiAKICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggNmU2MGViZjFmZmE2NTkwZjZmMzRlNTI4YTNlMzM1
ODMxOGI1ZWJkZi4uMjc4NzQ2ODE2NmZlZjFiNWY2NDYyMWZlYjViYjVlNTBkOWQ2ZGEzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCkBAIC0xMDgsNyArMTA4
LDcgQEAgQGVuZAogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGll
bnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7CiB9CiAKIFRleHRUcmFja1JlcHJlc2VudGF0
aW9uQ29jb2E6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaAppbmRleCBhZGM5N2Fk
YzFmYTI0NTgwOTkwMDNjM2RlOWMwYWEzOGQ4NzYxODdkLi42MDAxYmI3MGExMDA0MTc0NDEwOTIx
MzZmM2ZlNWI2MTc2MmNiMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCkBAIC0zNiw3ICsz
Niw4IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4ZWxCdWZmZXJQ
b29sUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdlUm90YXRpb25TZXNz
aW9uVlQgeworY2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IFJvdGF0aW9uUHJvcGVydGll
cyB7CiAgICAgICAgIGJvb2wgZmxpcFggeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5o
CmluZGV4IGRkMTM1NjllMDgxYTFiMzk5ZGNiYWJmM2Y1ZTg4MzdmODRjMmFiNGUuLmNkNWI2ZmNj
MDBkNzc0NjRlNmU2YmU3NDYzMTFlMTNkMGQyN2UzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNW
LmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1
ZmZlclJlZjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUGl4ZWxC
dWZmZXJDb25mb3JtZXJDVihDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyk7CiAgICAgUmV0YWlu
UHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnQoQ1ZQaXhlbEJ1ZmZlclJlZik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaApp
bmRleCA4MWFiMmY5MjRkYWYyNmNkYTIyYzVlMjAwNzc2YzIxODAyMDIzYTNiLi5jOWZmNDE5ZDQz
YmU0NWY0MDQ0MDMwNDBhZGQ4YzRkMDQ0MDJiYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNz
IFRleHR1cmVDYWNoZUNWIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRleHR1cmVDYWNoZUNWPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVD
YWNoZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNh
Y2hlQ1YubW0KaW5kZXggNTc3ZWMyODQ2MzkyYTcyMTVkOTk4YWEzMTBkM2Q4ZDYzM2Y1ZjFlYy4u
OWYxZjY2YjNiZDU5ZjU5YjFhZDNjYjcwNWM4NTY1NDQyMjdlYzM5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KQEAg
LTUwLDcgKzUwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVDYWNoZUNWPiBUZXh0dXJlQ2Fj
aGVDVjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXgKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBSZXRhaW5QdHI8VGV4dHVyZUNhY2hlVHlwZT4gc3Ryb25nQ2FjaGUgPSBh
ZG9wdENGKGNhY2hlKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlQ2FjaGVD
Vj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0cm9uZ0NhY2hlKSk7CiB9CiAKIFRl
eHR1cmVDYWNoZUNWOjpUZXh0dXJlQ2FjaGVDVihHcmFwaGljc0NvbnRleHQzRCYgY29udGV4dCwg
UmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+JiYgY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaApp
bmRleCA0M2E5NmRjMTQzNjU4NGFmYTc3MTg3OGIxOTdmMmE5NTQ3ZGNjY2VlLi45ZDM5MmVhMDU4
YjM2MDA4Y2E1NjljYTQ0ZmQ3MTI4ODNiMGQ2ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKQEAg
LTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZUNhY2hlQ1Y7
CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckNWIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBWaWRlb1RleHR1cmVDb3BpZXJDVihHcmFwaGljc0NvbnRleHQz
RCYpOwogICAgIH5WaWRlb1RleHR1cmVDb3BpZXJDVigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDhmZWFhMmY1ZDc1MzI4ZTQzNmJmOWQ4OGI4ZGMwNWJh
YzFjMmUxZjMuLmM1NjFmNWY5ZWFiOTk2MjExYThiMjIyMTk3NzZkNjhmMzllMTY0NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlz
dD4gcmVwbGF5TGlzdDsKICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkKLSAgICAg
ICAgcmVwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q+KCk7CisgICAgICAg
IHJlcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0PigpOwogCiAgICAgc2l6ZV90IG51
bUl0ZW1zID0gbV9kaXNwbGF5TGlzdC5pdGVtQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUl0ZW1zOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCA1NTdi
OGUwMDg2MmQ2YWJjNTgwNGI0MTQzMjEwMDgwYTgzNTE2ZDFlLi4zMGJiNDhjYzhmMGM0OTU0NDhh
YjY1ZjY4MTE3MmNjYzZiY2E1MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpsb2FkRXh0ZXJuYWxEb2N1
bWVudElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIVNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJlZmVyZW5jZShtX3VybCwgKmNhY2hl
ZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2U+KG1fdXJsKTsKKyAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0g
bWFrZVVuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91cmwpOwogICAgIG1fY2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlv
bnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggNjU2M2M4YmZlZWIz
NWJhNTMyN2Y0ODk2MWVkNjIxZmUzZDUzYWE0MS4uNzFhNGFiMmY0ODI1ZjFhNTQzMTkxODAzNGIz
NTMxZWNkYThhMGYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtNDU1LDcg
KzQ1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNy
ZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgICAgICAgICBGY1BhdHRlcm5B
ZGRTdHJpbmcocmVzdWx0UGF0dGVybi5nZXQoKSwgRkNfRk9OVF9WQVJJQVRJT05TLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPih2YXJpYW50cy51dGY4KCkuZGF0YSgpKSk7CiAgICAg
fQogI2VuZGlmCi0gICAgYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQ
bGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQYXR0ZXJuLmdldCgpLCBmb250RGVz
Y3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRXaWR0aCwgc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpOworICAgIGF1
dG8gcGxhdGZvcm1EYXRhID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250RmFjZS5n
ZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxT
aXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnRE
ZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKICAgICAvLyBWZXJpZnkgdGhhdCB0aGlzIGZvbnQg
aGFzIGFuIGVuY29kaW5nIGNvbXBhdGlibGUgd2l0aCBGb250Y29uZmlnLiBGb250Y29uZmlnIGN1
cnJlbnRseQogICAgIC8vIHN1cHBvcnRzIHRocmVlIGVuY29kaW5ncyBpbiBGY0ZyZWVUeXBlQ2hh
ckluZGV4OiBVbmljb2RlLCBTeW1ib2wgYW5kIEFwcGxlUm9tYW4uCiAgICAgLy8gSWYgdGhpcyBm
b250IGRvZXNuJ3QgaGF2ZSBvbmUgb2YgdGhlc2UgdGhyZWUgZW5jb2RpbmdzLCBkb24ndCBzZWxl
Y3QgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAppbmRleCAxMzc2NWY0M2RhODY2OGQyZGU4MmU2NzFkODE4MGQ2ODQ0Mjg0M2IwLi41ODk0
M2QyYTkwZGZjNTUwMWYyZGNhYThlY2YwZTkwZTFhYzdmNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlOwogICAg
IGlmIChGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBG
VF9CeXRlKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCksIDAsICZmcmVlVHlwZUZhY2Up
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIp
OwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0
IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1RleHR1cmUuY3BwCmluZGV4IDg2OTgxMzY0NTEzYjhlNmYwZDdiMmRkYTViYjhkMWY4NzJl
N2Y1NzYuLjcxZmRhMGQ5MjRjZDI1NWRiM2VmMTA3N2Y5ZTEwNzgxNGUyNDNkZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTk1
LDcgKzk1LDcgQEAgUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaW50IHcKICAgICAgICAgbnVtVGlsZXMgPSAw
OwogICAgIH0KIAotICAgIGF1dG8gdGV4dHVyZUlkcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PHVuc2lnbmVkPj4obnVtVGlsZXMpOworICAgIGF1dG8gdGV4dHVyZUlkcyA9IG1ha2VVbmlxdWU8
VmVjdG9yPHVuc2lnbmVkPj4obnVtVGlsZXMpOwogICAgIHRleHR1cmVJZHMtPmZpbGwoMCwgbnVt
VGlsZXMpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsrKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGY0YTRi
YTFhOGFjYWQ1ZTIwNWE1OTNhNDhmNzQ4NmIyOGM3YmUxZDUuLmY2ZTFlMTQ2OTNjNzk4NDI1MmY3
OGViNzgwZDAyNGNmNjQ1ZWE0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIg
cmVnaXMKIHsKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjppbml0aWFsaXpl
RGVidWdDYXRlZ29yeSgpOwogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlw
ZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlT
eXN0ZW0pOwogICAgIH0KIH0KQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5nZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMg
PSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBpZiAobV9lcnJvck9jY3Vy
ZWQgfHwgaXNMaXZlU3RyZWFtKCkpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwogCkBAIC0y
Mzc2LDcgKzIzNzYsNyBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmF1ZGlvU2luaygpIGNvbnN0CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5z
dXJlQXVkaW9Tb3VyY2VQcm92aWRlcigpCiB7CiAgICAgaWYgKCFtX2F1ZGlvU291cmNlUHJvdmlk
ZXIpCi0gICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKKyAgICAgICAgbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyID0gbWFrZVVuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpOwogfQogCiBB
dWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvU291
cmNlUHJvdmlkZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCmluZGV4IDA3MjhlZWI2NDIwYWZmYjk2YzdhMWE0OWY1NTU1ZDlmM2Iz
ZDk4ZDUuLmM3YWM1YjJiZTc0NTE4MzY5NDAzMjcwZjQ2YjJmZjZjMWNhMzg3NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAg
LTcxMCwxOSArNzEwLDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKQogICAgICAgICAgICAgaWYgKCFwcm94eS5pc0FjdGl2
ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxH
c3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3Ms
ICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0Zy
YW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3VzaW5n
RmFsbGJhY2tWaWRlb1NpbmspOwogCiAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZUlEID0gZnJh
bWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlcjsKICAgICAgICAgICAgIGlm
ICh0ZXh0dXJlSUQpIHsKLSAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJRCwgZnJhbWVI
b2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKTsKKyAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJRCwgZnJhbWVIb2xkZXItPnNpemUoKSwg
ZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICAgICAg
ICAgICAgICBsYXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihXVEZNb3Zl
KGZyYW1lSG9sZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxh
eWVyQnVmZmVyID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVyKGZyYW1lSG9sZGVyLT5zaXplKCks
IEdMX0RPTlRfQ0FSRSk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFsYXllckJ1ZmZl
cikpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdM
OjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9s
ZGVyLT5oYXNBbHBoYUNoYW5uZWwoKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBC
aXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwotICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1v
dmUodGV4dHVyZSkpOworICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlx
dWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSkpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmcmFtZUhvbGRlci0+dXBkYXRlVGV4
dHVyZShsYXllckJ1ZmZlci0+dGV4dHVyZUdMKCkpOwogICAgICAgICAgICAgICAgIGxheWVyQnVm
ZmVyLT5zZXRFeHRyYUZsYWdzKG1fdGV4dHVyZU1hcHBlckZsYWdzIHwgKGZyYW1lSG9sZGVyLT5o
YXNBbHBoYUNoYW5uZWwoKSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKSk7CkBA
IC05MTIsNyArOTEyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKICAgICBpZiAoIUdTVF9J
U19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVN
YXBwZXJGbGFncywgdHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xk
ZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBs
ZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCiAgICAgYXV0byB0ZXh0dXJl
SUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlSUQpCkBAIC05
MjMsNyArOTIzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKICAgICAgICAgc2l6ZSA9IHNp
emUudHJhbnNwb3NlZFNpemUoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0g
ICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7Cisg
ICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAgICBy
ZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZSh0ZXh0dXJlSUQsIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50
YXRpb24pOwogfQpAQCAtOTM5LDcgKzkzOSw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIGlm
ICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwg
bV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRl
b0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRl
cj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1
dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVy
ZUlEKQpAQCAtOTUzLDcgKzk1Myw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIGNvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikK
LSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsK
KyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKIAogICAg
IGlmICghbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZSh0ZXh0dXJlSUQsIHNpemUsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAw
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBmYWxzZSwgbV92aWRlb1NvdXJjZU9yaWVudGF0
aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTQ3LDggKzExNDcsOCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVy
KCkKICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5
KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkp
OwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVu
ZCwgR0xfRE9OVF9DQVJFKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJI
b2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVh
bWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQoKSk7CisgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVy
ID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXpl
LCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4gaG9sZVB1bmNo
Q2xpZW50ID0gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+KG1fdmlkZW9TaW5r
LmdldCgpKTsKICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRIb2xlUHVuY2hDbGllbnQoV1RG
TW92ZShob2xlUHVuY2hDbGllbnQpKTsKICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVy
KFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTczZjRkNGYwMDMyMzU2ZjE3N2ViZDdmYzRi
OWU5NGE1MjkyZjk1YS4uNWZmOTcyODY1NjYzMTY0M2IyOTAzZmJlYzllMzk0NWJjMjMyOTNhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTYzMiw3
ICs2MzIsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoR3N0QmFz
ZVNyYyogYmFzZVNyYywgYm9vbCBub3RpZnlBc3luY0NvbQogICAgICAgICAgICAgbG9hZE9wdGlv
bnMgfD0gUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpCdWZmZXJEYXRh
OwogICAgICAgICBwcml2LT5yZXNvdXJjZSA9IHByaXYtPmxvYWRlci0+cmVxdWVzdFJlc291cmNl
KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbG9hZE9wdGlvbnMpOwogICAgICAgICBpZiAocHJp
di0+cmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHByaXYtPnJlc291cmNlLT5zZXRDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4ocHJvdGVjdG9yLmdl
dCgpLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpKTsKKyAgICAgICAgICAgIHByaXYtPnJlc291
cmNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4o
cHJvdGVjdG9yLmdldCgpLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpKTsKICAgICAgICAgICAg
IEdTVF9ERUJVR19PQkpFQ1QocHJvdGVjdG9yLmdldCgpLCAiU3RhcnRlZCByZXF1ZXN0Iik7CiAg
ICAgICAgICAgICBpZiAobm90aWZ5QXN5bmNDb21wbGV0aW9uKQogICAgICAgICAgICAgICAgIGdz
dF9iYXNlX3NyY19zdGFydF9jb21wbGV0ZShHU1RfQkFTRV9TUkMoc3JjKSwgR1NUX0ZMT1dfT0sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UuY3BwCmluZGV4IDRlOWQxOWQ4NTI3ZDY5NjIwY2Y1YWE5NDEwNzM2MjgzODFiM2M5ZjAu
LmU2ODgwZDk4ZTdmY2FkMWQwNTNmODRlZDM4YTZmZDgxOThkZTdiODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAg
LTc3LDcgKzc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmUKICAgICBpbml0aWFsaXplR1N0
cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpOwogICAgIEdTVF9ERUJVR19DQVRFR09S
WV9JTklUKHdlYmtpdF9tc2VfZGVidWcsICJ3ZWJraXRtc2UiLCAwLCAiV2ViS2l0IE1TRSBtZWRp
YSBwbGF5ZXIiKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIo
W10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5
U3lzdGVtKTsKICAgICB9CiB9CkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnNldFJhdGUoZmxvYXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6YnVmZmVyZWQo
KSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+YnVm
ZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJl
dHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRTo6c291cmNlU2V0dXAoR3N0RWxlbWVudCogc291cmNlRWxlbWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKaW5kZXggMTE3MjQ1
ODQxMGU5YTE0NTNiNjM1YjBmOGQ5MWI5ZmI0YTY5NmM1OC4uMGYwOGMxOWRiZGJlNjliMDZmN2I3
NTUzZjhhYjQ5N2Q0N2UzNzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2g6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCkKICAgICAgICAgW3RoaXNdKFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICB7CiAgICAgICAg
ICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1f
c2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRf
Q0FSRSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3ZlKGxheWVyQnVm
ZmVyKSk7CiAgICAgICAgIH07CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNUeXBlKGNvbnN0
IE1lZGlhRQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRp
YUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRp
YVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaD4ocGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRz
VHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hv
bGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAppbmRleCBmMGQwNGQ0YzYzZDkz
MTIwYmNlODA1YWI4ZmVhMjg3YTAxZTA0NDJhLi4yYWVmMGZlODRhNjcxYjcyMmM0YjQ1M2ZjZTcx
N2I2NmE5N2U2YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5oCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDCiAgICAgTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBNZWRpYVBsYXllcjo6RW1wdHk7IH07CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7
IH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigpOyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7
IH07CiAKICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
Qm94LmgKaW5kZXggZTFhM2E4NjYzMTQ3NWNhYjdhOWIxNzFiNDA2MmQzOTNkODkwZTYwNi4uZWNm
ODk2OTNkYTMzODUyMDEyZTc1MDIxMTI5OTgwOTllYzhkYWMyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAtMzYsNiArMzYsNyBAQCBjbGFz
cyBEYXRhVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPQm94IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5JU09Cb3goKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKaW5kZXggNzBi
Yjg2MTEzMTZlNjg1Yjc2Yjc4ODM4YjVlZDA2MDM3NmI5YjFhOS4uMTg4M2JhNDdiZGYzYTUyYWZi
MmZmN2QwZGQ1Y2Q5ZGNkN2NkZDg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKQEAgLTI5LDcg
KzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09PcmlnaW5hbEZvcm1hdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPT3JpZ2luYWxGb3JtYXRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZybWEiOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwCmluZGV4IGQ4ZDc0MDFhNzU2MDA0NmM5
OGFmZjhjYjExZWIyZTcyMjNjOTgxY2UuLmJkZmRiZGM5NmNmMGUxYjUwYTcyODU4Mjg4YzliMmY0
NzRmN2QwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcApAQCAtNTMs
NyArNTMsNyBAQCBib29sIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZShEYXRhVmll
dyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLmZpcnN0ID09IElTT1NjaGVtZVR5cGVCb3g6OmJv
eFR5cGVOYW1lKCkpIHsKLSAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxJU09TY2hlbWVUeXBlQm94PigpOworICAgICAgICBtX3NjaGVtZVR5cGVCb3ggPSBtYWtlVW5p
cXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVUeXBlQm94LT5y
ZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
NjgsNyArNjgsNyBAQCBib29sIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZShEYXRh
VmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICB9CiAKICAgICBpZiAob3B0aW9uYWxC
b3hUeXBlLnZhbHVlKCkuZmlyc3QgPT0gSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OmJveFR5cGVO
YW1lKCkpIHsKLSAgICAgICAgbV9zY2hlbWVJbmZvcm1hdGlvbkJveCA9IHN0ZDo6bWFrZV91bmlx
dWU8SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g+KCk7CisgICAgICAgIG1fc2NoZW1lSW5mb3JtYXRp
b25Cb3ggPSBtYWtlVW5pcXVlPElTT1NjaGVtZUluZm9ybWF0aW9uQm94PigpOwogICAgICAgICBp
ZiAoIW1fc2NoZW1lSW5mb3JtYXRpb25Cb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5o
CmluZGV4IGYzN2I3NjI0OWQ4ZTAwZmExN2EwNTU5MjllNzc2Njg1MTM3MzMzNjYuLjhlNTY3M2Uw
NTE2YTY1MDE0ZjVjZDQ5ZjYxYWE3Yjc1MzhkMmNhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2No
ZW1lSW5mb0JveC5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IElTT1NjaGVtZVR5cGVCb3g7CiBjbGFzcyBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDsKIAotY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3ggOiBwdWJsaWMgSVNP
Qm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94IGZp
bmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBl
TmFtZSgpIHsgcmV0dXJuICJzaW5mIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNw
cAppbmRleCBiNGYyNzdhNjg0N2NjMjBkNGZjOWQ2MjZmOWNhY2M3NDMwYWRhZjcwLi5jODNjNGZm
N2IzOGFiZjFhZTIyZmZlNWU3MmM3YTFmODZhMDhlYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1h
dGlvbkJveC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBJU09TY2hlbWVJbmZvcm1hdGlvbkJv
eDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIGlmIChs
b2NhbE9mZnNldCArIHNjaGVtZVNwZWNpZmljQm94VHlwZS52YWx1ZSgpLnNlY29uZCA+IG9mZnNl
dCArIG1fc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX3NjaGVt
ZVNwZWNpZmljRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94Pigp
OworICAgICAgICBtX3NjaGVtZVNwZWNpZmljRGF0YSA9IG1ha2VVbmlxdWU8SVNPVHJhY2tFbmNy
eXB0aW9uQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lU3BlY2lmaWNEYXRhLT5yZWFkKHZp
ZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5m
b3JtYXRpb25Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09T
Y2hlbWVJbmZvcm1hdGlvbkJveC5oCmluZGV4IDllZGIxODc4YTliYTkxOWJlYjE5ZDdiNjIyM2Q5
ZTdlNDY0ZjY4NTguLmU4ZWMwYzRjNjliNzRlODMzNDQ5ODk0MWYyNGVlZTQxMGYyY2RkNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJ
bmZvcm1hdGlvbkJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lSW5mb3JtYXRpb25C
b3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9y
bWF0aW9uQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZv
dXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJzY2hpIjsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaAppbmRl
eCA2MTk2MTAzOWY0OGNmMmJjNmVlN2I4ODQ4MDczYzgzNzZlNTgzMTMwLi40YjhmMjYzMzc1MGY4
YWRmOTBiYzI3YzJkMGNmMTRlZjk4MmMxNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKQEAgLTI5LDcgKzI5
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09T
Y2hlbWVUeXBlQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPU2NoZW1lVHlwZUJveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNjaG0iOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5
cHRpb25Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFj
a0VuY3J5cHRpb25Cb3guaAppbmRleCBmNGVmZTI4MTA1MWUzYzdiMjlkYmVmNzhlNDRkYTNiMDM4
NzgwM2YzLi40N2ZhNDk3MjQ2YzcxNWJlMWQyY2VmOWIwZWE4N2RkN2Y3OWVmNTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0
aW9uQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Ry
YWNrRW5jcnlwdGlvbkJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNyeXB0aW9uQm94IDogcHVibGlj
IElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNyeXB0aW9uQm94
IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0Mg
Ym94VHlwZU5hbWUoKSB7IHJldHVybiAidGVuYyI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcAppbmRleCA5ZWM0MDg5NGYxZTI4
YTA1YTIxNGNiMzIzNTE0ZjdiMTM5NTVkMjg0Li40YjUxNmVlOGRkN2Y3ZDIzN2U4ZDYyNzI3OTdi
MDMyZGQxZjVhY2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBKU0M6OkRhdGFWaWV3
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElTT1N0cmluZ0JveCA6IHB1YmxpYyBJ
U09Cb3ggeworY2xhc3MgSVNPU3RyaW5nQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJs
aWM6CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZW50cygpIHsgcmV0dXJuIG1fY29udGVudHM7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZU
VEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5o
CmluZGV4IGE2MTYwYjY2YWU5NDY4MjA2NzdhZDI5MzRiMTgxZGViOTNjYzRmNDkuLmFlMjNiZWZm
ZmVkNjRhNmRlMjg5MTc2ZTQxNTEwMTFmMDY3Yzk4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gTiBieXRlcyA6IEN1ZVRpbWVCb3ggOiBib3ggOiBvcHRpb25h
bAogLy8gTiBieXRlcyA6IEN1ZVNldHRpbmdzQm94IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0
ZXMgOiBDdWVQYXlsb2FkQm94IDogYm94IDogcmVxdWlyZWQKLWNsYXNzIElTT1dlYlZUVEN1ZSA6
IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPV2ViVlRUQ3VlIGZpbmFsIDogcHVibGljIElTT0Jv
eCB7CiBwdWJsaWM6CiAgICAgSVNPV2ViVlRUQ3VlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0
aW9uVGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcAppbmRleCAzZDVlZjA5YjdkOTQwMzA1OTc0MWQ4MDgyOGY1MThkZWZjODQyM2I1
Li5lZjEwYjMzYTU0YjM1ZDdkNTcxZjA2ZTQxNmYxMjkyMjA4OWFjMDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250RGVzY3JpcHRvci5nZXQoKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udERlc2Ny
aXB0b3IuZ2V0KCkpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRz
Rm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVn
cmF0aW9uLmNwcAppbmRleCAxMDljMmM1Nzc2NzlhMTIxNGFhNmVhMTAxYzZmNDgwZmJhMmVjNjAx
Li41YmVlNjEzZmNmNmI0NmEwN2M2MjhlNTgwMTZmNDliYjkwMjFiMWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVn
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFNjZW5l
SW50ZWdyYXRpb246OnJlcXVlc3RVcGRhdGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2NlbmVJbnRl
Z3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNjZW5lSW50ZWdyYXRpb246OmNyZWF0ZVVwZGF0ZVNjb3Bl
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGVTY29wZT4obWFrZVJlZigq
dGhpcykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlz
KSk7CiB9CiAKIFNjZW5lSW50ZWdyYXRpb246OkNsaWVudDo6fkNsaWVudCgpID0gZGVmYXVsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKaW5kZXggMmIxYWVjZjBkMWI3ZTZhMzQxYmY5NGJmZmFlZDIyMGYxYTQ1ODYzOC4uNTBl
MGMzYzdkOTc2ODI2YmE3YmI4MTg1ZDFlZTE0MjEyOWFkYTAyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgYXV0byBjcmVhdGVDb21tYW5kKEFyZ3MmJi4uLiBhcmd1bWVudHMpIC0+IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXIKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBh
dXRvIGNyZWF0ZUNvbW1hbmQoKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxP
cGVyYXRpb25EYXRhPD4sIFQ+Ojp2YWx1ZSwgc3RkOjp1bmlxdWVfcHRyPFBhaW50aW5nT3BlcmF0
aW9uPj4KIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPigpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFQ+KCk7CiB9CiAKIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OkNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQYWludGluZ09wZXJhdGlvbnMm
IGNvbW1hbmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwCmluZGV4IDBjOGE2NzBlM2EwYTM2MzA3ZTNmMjk5ZWNkYTAyNTUyZmQ3
NzRlZDEuLmIzNTA4ZDUxN2IyNGU0NzVjMDhhZjQ4YjMzZTQzMWZkMjc5MjA0YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YVBhaW50aW5nQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKQEAg
LTcwLDggKzcwLDggQEAgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpGb3JQYWlu
dGluZyhCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgfSk7CiAKICAgICBtX2NhaXJvLmNvbnRleHQg
PSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9jYWlyby5zdXJmYWNlLmdldCgpKSk7Ci0gICAgbV9w
bGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4
dENhaXJvPihtX2NhaXJvLmNvbnRleHQuZ2V0KCkpOwotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSgqbV9wbGF0Zm9ybUNvbnRleHQpKTsK
KyAgICBtX3BsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6UGxhdGZvcm1Db250
ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4dC5nZXQoKSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQg
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KCptX3BsYXRmb3JtQ29udGV4dCkpOwogfQog
CiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6On5Gb3JQYWludGluZygpCkBAIC0x
MDQsMTAgKzEwNCwxMCBAQCB2b2lkIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6
cmVwbGF5KGNvbnN0IFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbgogCiBQYWludGluZ0NvbnRl
eHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcoUGFpbnRpbmdPcGVyYXRpb25zJiBw
YWludGluZ09wZXJhdGlvbnMpCiB7Ci0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oCisgICAgbV9ncmFwaGljc0NvbnRleHQg
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oCiAgICAgICAgIFsmcGFpbnRp
bmdPcGVyYXRpb25zXShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihjb250ZXh0LCBwYWludGluZ09wZXJh
dGlvbnMpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVN
YXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggZDRj
OWI2MDViNGNkMjhlMzQ4ZWZkODUzMzUwMzhiNThjOWE0ZGRmYS4uOGUzNzkwZjdhYjU0ZjZiM2Q5
NTZmMzA3MDRjNDI5YzJhY2RjMzE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIGF1dG8gQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3Rv
cnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAgICAgIFtdKEJhY2tp
bmdTdG9yZSYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxh
eWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDM4ZmRkOTNkYTZiMTM4ODMxNDA1OTE2NTNj
ZGYyOWUwN2RlMzIzOTYuLjc1NjkyYzdjNGE3YmZkYjE4NzFkZjE4MDJlMzg3NzUzNmI2MTU1MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21w
b3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGF1dG8g
Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFj
dG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXSh1aW50NjRfdCwgQ29tcG9z
aXRpb25MYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBv
c2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVu
dExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDU2MTcyOGI1ZWYxZjQwZDgwYzUzNTk5
MjY3MTA2NmFkODc0ODE5YTcuLjJmYjBlYzk1OTE1YWViMGJhMDk2ZjgwYmM2OTBkMmYzYjI4NDhj
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRvIENvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KENsaWVudCYgY2xpZW50KSAt
PiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAgICAgIFsmY2xpZW50XShDb250
ZW50TGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQpOwogICAgICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAppbmRleCA1MmVj
NzBiNjgxZjdiYzU2M2E2NzQ3NTQzNjIzODc2YjAzMTM5YTliLi45YTliZDQ2ODNiMjY3NDJhZmVj
YjE0OTFmNjE0NGYyYTc4YzU5NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExh
eWVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEdDM0RMYXllcjo6c3dhcEJ1ZmZlcnNJZk5l
ZWRlZCgpCiAgICAgICAgIGF1dG8mIHByb3h5ID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExh
eWVyVGV4dHVyZU1hcHBlckltcGw+KG1fY29udGVudExheWVyLT5pbXBsKCkpLnByb3h5KCk7CiAK
ICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgcHJveHku
cHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFn
cywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOworICAgICAgICBwcm94eS5wdXNo
TmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiht
X2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRl
eHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtM
YXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGEyYWUzNGEzMTMy
N2U4NzE1NjU0MTQ2ZDE4Zjc3YzdhNjdmMjQyMTYuLmQzNTNjOGJlMWI1YmZhMTE2YjZjYjg1MjA5
NzAyNzdjYzkzMjQ1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzcsNyArMzcsNyBA
QCBhdXRvIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4g
RmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXShJbWFnZUJhY2tpbmcm
KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0
dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQmFj
a2luZ1RleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTY4NDhmY2VjYTQxZTk3MzZmMmEzODE3YTlm
ZDAzY2ViYWUzYWMxMS4uYjk2MzYzYjU1MTkzNTZjOGNkZjQ2NTQzNjMyNmVkMDZjZWNlZDg4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC00NzUsNyArNDc1LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQog
RXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAg
aWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAg
ICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgaXNH
TEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYjI0
ZGYwMzVlMjg4ZTFlYjJmOGFmOWY3YWI5MWQ3NzlkMGFjYTQ5ZS4uMmEwZTViNzZlNGQ2YmFiNzBl
OTBiMmYzZDI4ZWI0M2MwN2Y0MjUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBBTkdMRVJl
c291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZvclNoYWRlcjsKIAogICAgIGlmICghbmFt
ZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAgICBuYW1lSGFzaE1hcEZvclNo
YWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwogICAgIHNldEN1cnJlbnROYW1l
SGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMuZ2V0KCkpOwogICAgIG1fY29t
cGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIApAQCAtMTAyMyw3ICsxMDIzLDcg
QEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAgICAgICAgLy8gQXR0cmlidXRlcyBhcmUgYSBz
cGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZvcmUgYW55IHNoYWRlcnMgaGF2
ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBhbmQgYXJlbid0IGV2ZW4gcmVxdWlyZWQgdG8g
YmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0uCiAgICAgICAgIGlmICghbmFtZUhhc2hNYXBG
b3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hh
ZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAgICAgICAgIHNldEN1cnJlbnRO
YW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMuZ2V0KCkpOwogCiAgICAg
ICAgIGF1dG8gZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFzaGVkTmFtZShuYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRleCAyNDMwNDZkOTg5YWQ3Mzhm
N2M5ZjcxNDk1NTY3Yzk2YmIzNGM1NjQxLi43MGEyMGQ1MGMzNTIxYTYxMjNlNmVmYWYxZjQ3Njhm
NjQ5NWNkZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCkBA
IC0yNDIsNyArMjQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNE
Y2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5z
aW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21w
bGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNE
T3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVu
c2lvbnM7CiB9CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1
dGVzCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0
M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250ZXh0
KQogICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV9jb21waWxlcihpc0dMRVMyQ29t
cGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQp
Ci0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQogewogICAgIEFTU0VSVF9V
TlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNw
cAppbmRleCBlZDZjY2YxOTRiYmVlMWUwMGZkNDM5ZjYxYTZkZTYyZTQwMzAyZWEzLi44ZmQzYWQ0
ZjcyZDc2NGJkOTVkMjIwZjU4MWVkMmI3OTYyODgzYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFw
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTA2LDkgKzEwNiw5IEBAIEdyYXBo
aWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0
ZXMgYXR0cmlidXRlcywgSG9zCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRDb250ZXh0LCAh
c2hhcmVkQ29udGV4dCk7CiAjaWYgVVNFKE5JQ09TSUEpCi0gICAgbV9uaWNvc2lhTGF5ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsK
KyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6R0MzRExheWVyPigqdGhp
cywgcmVuZGVyU3R5bGUpOwogI2Vsc2UKLSAgICBtX3RleG1hcExheWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7
CisgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9y
bUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2VuZGlmCiAKICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKQEAgLTMyNSwxMCArMzI1LDEwIEBAIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgIGlmICghbV9leHRlbnNpb25zKSB7CiAjaWYgVVNF
KE9QRU5HTF9FUykKICAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5vdCBhdmFpbGFibGUgb24g
R0xFUzIuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9u
czNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VV
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CiAjZWxzZQogICAgICAg
ICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3JlIHByb2ZpbGUsIGFuZCB0aGVy
ZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6
bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQo
KS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigp
ID49IDMyMCk7CiAjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCmluZGV4IDE0ZjFk
YmYxOGQ5MWIzOTA3NWUyZDUwZjIxNDliNzc2YmJjMTc0OTMuLjY2MzIzMTU2OTViYTIxYzI2N2Qx
NTU5MzJlYmE5MTQ3ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdD
M0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIAogICAgIHsKICAgICAgICAg
TG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHktPmxvY2soKSk7Ci0gICAgICAg
IG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4
dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0
KSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3Np
dG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9y
Rm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggOTc0Yjg1NzhiODhhYTY0MzUwOTFlOGIwYzM4YmIy
ZGI3MTBlZjEwMi4uYTJmNzU4NjZlMzIzYjhmZGJhNDNhMDA3ZDQ0N2FhYTQ2NTc2YmZmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBUZXh0dXJlTWFwcGVyR0w6
OlRleHR1cmVNYXBwZXJHTCgpCiAKICAgICBtX2RhdGEgPSBuZXcgVGV4dHVyZU1hcHBlckdMRGF0
YShwbGF0Zm9ybUNvbnRleHQpOwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBtX3Rl
eHR1cmVQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXBUZXh0dXJlUG9vbD4obV9jb250ZXh0
QXR0cmlidXRlcyk7CisgICAgbV90ZXh0dXJlUG9vbCA9IG1ha2VVbmlxdWU8Qml0bWFwVGV4dHVy
ZVBvb2w+KG1fY29udGV4dEF0dHJpYnV0ZXMpOwogI2VuZGlmCiB9CiAKQEAgLTc5MCw3ICs3OTAs
NyBAQCBSZWY8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJlKEdM
aW50IGludGVybmFsRm9ybWF0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlcj4gVGV4
dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCgpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFRleHR1cmVNYXBwZXJHTD4oKTsKIH0KIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDdhZmRmMzBhMDViY2E1Mzk3YjgwMThi
ZmViZDg5ZTBlMWRhNTAzMzMuLmUxMWEwYmIyN2I4MTBjMmQ1Mjc2YjJhOWIwYzUwOWY4ODk1MDY2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgIGF1dG8g
dGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0
cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1cmUtPnJlc2V0KG1f
c2l6ZSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZS5nZXQoKSku
Y29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQpOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1
cmUpLCBtX2V4dHJhRmxhZ3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOwogfQog
CiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0
IG9wYWNpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eS5jcHAKaW5kZXggYzcxNGY2ZDc4YzFjZjFhNjFkNGRmZjZiNDIwNTIxYjAyZWNkN2M1MC4uMzc5
MzY3NWFjOGQ2YjNjMzJhM2IzMTgxOTNlNDlhN2IzN2RjNDg4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtNzEsOCArNzEsOCBAQCB2
b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGlu
Z1RocmVhZChDb21wb3NpdG9yKiBjbwogICAgIGlmIChtX3RhcmdldExheWVyICYmIG1fY3VycmVu
dEJ1ZmZlcikKICAgICAgICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNMYXllcihtX2N1cnJl
bnRCdWZmZXIuZ2V0KCkpOwogCi0gICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKTsKLSAgICBtX2NvbXBvc2l0
b3JUaHJlYWRVcGRhdGVUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywg
JlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNvbXBvc2l0b3JUaHJlYWRVcGRhdGVU
aW1lckZpcmVkKTsKKyAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIgPSBtYWtlVW5pcXVl
PFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29w
OjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxl
YXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOworICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0
ZVRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQpOwogCiAjaWYg
VVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lci0+
c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpDb21wb3NpdGluZ1RocmVhZFVwZGF0
ZVRpbWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKaW5kZXggMzY3ZDhhNTNjZjM3MGQyMjAyZDZmMzQwMWNkY2IzYTAyZmY0
MmMyYi4uZDQ3NTcxMGJhMGNkZGZiY2RiZGEwYzY4Y2UzMGI4MWVmYWFkNjljZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRl
Q29udGVudEJ1ZmZlcnMoKQogCiAgICAgLy8gRW5zdXJlIHRoZSBUaWxlZEJhY2tpbmdTdG9yZSBv
YmplY3QsIGFuZCBlbmZvcmNlIGEgY29tcGxldGUgcmVwYWludCBpZiBpdCdzIG5vdCBiZWVuIHBy
ZXNlbnQgeWV0LgogICAgIGlmICghbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlKSB7Ci0gICAg
ICAgIGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRC
YWNraW5nU3RvcmU+KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CisgICAgICAgIGxh
eWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8VGlsZWRCYWNraW5nU3RvcmU+
KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CiAgICAgICAgIG1fcGVuZGluZ1Zpc2li
bGVSZWN0QWRqdXN0bWVudCA9IHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzYmU0MzExZGVhYTAyNDk3YzdlZDFjZGNh
MTM0NWJhNWE2ODAzMTA5Li40YTY5NzgyMmU0ZGUyY2RiOGI2NmY4MWQ0MDRkOGRiZTgyYjQ5ODcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAg
LTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyhjb25z
dCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgcwogICAgIHVuc2lnbmVkIHRp
bGVzVG9DcmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgpOwogICAgIGZvciAodW5zaWdu
ZWQgbiA9IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikgewogICAgICAgICBUaWxlOjpD
b29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25dOwotICAgICAgICBtX3RpbGVz
LmFkZChjb29yZGluYXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFRpbGU+KCp0aGlzLCBjb29yZGluYXRl
KSk7CisgICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIG1ha2VVbmlxdWU8VGlsZT4oKnRo
aXMsIGNvb3JkaW5hdGUpKTsKICAgICB9CiAgICAgcmVxdWlyZWRUaWxlQ291bnQgLT0gdGlsZXNU
b0NyZWF0ZUNvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4IGM4OGU5YmVm
OWQ2NmNhMmI1NTAxOGM5MGY0YjBhNDI4YjQ2ODJlZjguLjRlYWYwMDExMjBjNDdmZmNlNTVhYjRk
ZmE5MjE4M2NlOGIzMTk0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9KGNvbnN0
IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBpZiAobV9tYXBRdWFkKSB7CiAgICAgICAgIG1f
bGFzdFBsYW5hclF1YWQgPSBvdGhlci5tX2xhc3RQbGFuYXJRdWFkOwogICAgICAgICBpZiAob3Ro
ZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNl
Y29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKm90aGVyLm1fbGFzdFBs
YW5hclNlY29uZGFyeVF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVh
ZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVh
ZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQg
PSBudWxscHRyOwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgVHJhbnNmb3JtU3RhdGUmIFRyYW5z
Zm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVyKQogICAgIG1f
YWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBudWxscHRyOwogCiAgICAgaWYgKG90aGVyLm1fYWNjdW11
bGF0ZWRUcmFuc2Zvcm0pCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CiAgICAgICAg
IAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTEyOSwxMiArMTI5LDEyIEBAIHZvaWQgVHJhbnNm
b3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm1Gcm9tQ29uCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBhY2N1bXVsYXRlZCB0cmFuc2Zvcm0g
ZnJvbSBsYXN0IHRpbWUsIG11bHRpcGx5IGluIHRoaXMgdHJhbnNmb3JtCiAgICAgaWYgKG1fYWNj
dW11bGF0ZWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IEFwcGx5VHJh
bnNmb3JtRGlyZWN0aW9uKQotICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0
ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWlu
ZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgICAgICBtX2FjY3VtdWxhdGVk
VHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJv
bUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdGlwbHkodHJhbnNmb3JtRnJvbUNv
bnRhaW5lcik7CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRlID09IEFjY3VtdWxhdGVUcmFuc2Zv
cm0pIHsKICAgICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3RhcnRlZCB0byBhY2N1bXVsYXRlCi0g
ICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9y
bWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKKyAgICAgICAgbV9hY2N1bXVs
YXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9y
bUZyb21Db250YWluZXIpOwogICAgIH0KICAgICAKICAgICBpZiAoYWNjdW11bGF0ZSA9PSBGbGF0
dGVuVHJhbnNmb3JtKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6
c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRRdWFkKiBxdWFkKQogICAgIC8v
IE1hcCB0aGUgcXVhZCBiYWNrIHRocm91Z2ggYW55IHRyYW5zZm9ybSBvciBvZmZzZXQgYmFjayBp
bnRvIHRoZSBsYXN0IGZsYXR0ZW5pbmcgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBGbG9hdFF1YWQg
YmFja01hcHBlZFF1YWQoKnF1YWQpOwogICAgIG1hcFF1YWQoYmFja01hcHBlZFF1YWQsIGludmVy
c2VEaXJlY3Rpb24oKSk7Ci0gICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CisgICAgbV9sYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CiB9CiAK
IHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBUcmFuc2Zvcm1E
aXJlY3Rpb24gZGlyZWN0aW9uLCBib29sKiB3YXNDbGFtcGVkKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1TdGF0ZS5oCmluZGV4IDEwODYzNzQwMGEyMGZhMmYwOWRmNmFkNDM5MzNjYTdkYTE3ZjQ4NjEu
LmI2MjU4MzZhNWNlMjI1YmY0N2YzMzBjMDhjMjlkOGM3NTY1MmVlNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybVN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgVHJhbnNmb3JtU3RhdGUgewogICAg
ICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0YXRlIChubyBhY2N1bXVsYXRlZCBv
ZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBxdWFkLgogICAgICAgICBBU1NFUlQo
bV9hY2N1bXVsYXRlZE9mZnNldCA9PSBMYXlvdXRTaXplKCkpOwogICAgICAgICBpZiAocXVhZCkK
LSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZsb2F0UXVhZD4oKnF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVh
ZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAK
aW5kZXggZDMxYTI1NzlmYjFlMWM3OTQyNWQwMjkwNWViZWJjODhkMTRhZGQ1MC4uOGY3NzAyNzVk
ZTY5OTU2OGM4NTE1YWVhMGYyY2ZhMGU1MjA1NjcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTY0Miw3ICs2
NDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgIGJvb2wgc3ludGhlc2l6ZUJvbGQg
PSBpc0dESUZvbnRXZWlnaHRCb2xkKHdlaWdodCkgJiYgIWlzR0RJRm9udFdlaWdodEJvbGQobG9n
Rm9udC5sZldlaWdodCk7CiAgICAgYm9vbCBzeW50aGVzaXplSXRhbGljID0gaXNJdGFsaWMoZm9u
dERlc2NyaXB0aW9uLml0YWxpYygpKSAmJiAhbG9nRm9udC5sZkl0YWxpYzsKIAotICAgIGF1dG8g
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250
KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBz
eW50aGVzaXplSXRhbGljLCB1c2VHREkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxG
b250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
UGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOwog
CiAjaWYgVVNFKENHKQogICAgIGJvb2wgZm9udENyZWF0aW9uRmFpbGVkID0gIXJlc3VsdC0+Y2dG
b250KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMzg3YTIzOWY4MjljMmQ3
ODA5YzJjOTZkM2ZlMTI0ZGVlMTRiZDNkNy4uNjQ4NDg1YWMyNmNiMjM3NWNmNjU3NGY4MWZmNGNk
NjU2NzJjNTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTEzLDcgKzEx
Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgZm9udFJlZmVyZW5jZSA9IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAgICBpZiAoIWZvbnRSZWZlcmVu
Y2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBm
b250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3Jt
YXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCAx
OTA0NDkwMDQ1ZjRlN2U3ZjdkYjgxZDk1ZjBhNmEyNDJiZDU0ODM4Li5lYWI4MDZlNDJjMDYyZDU1
OTc4OTk0NTJlZmU3NDc0ZTU5OWY5MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAg
LTQxLDYgKzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0
aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5n
czsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOwogcHVibGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoSEFORExFIGZvbnRSZWZl
cmVuY2UsIGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAKaW5kZXggYWI3Yzc5MGQ2MGYyZThmNzRhZjAzYzA2YWNmYzcyYzhlMzljMjJkOS4u
ZWVlYWZlYmQ5MzNjYTljNzhkZDA1MTQxM2QyMzM0NGNhODUzYjAxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
U2hhcmVkQnVmZmUKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1h
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI5NTM1NTAzYzMwNmM1MDFhYTM5M2Yz
MWZmZDkyODg1ZWRlOWJkZWYuLmY0YWFkM2I1NjNlM2QxNDM0ZmYzMThlNGM2MjI3MzI1YzA1OWM0
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIExSRVNV
TFQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZhdGU6OmZ1bGxzY3JlZW5DbGllbnRXbmRQcm9j
KEhXTkQgaHduZCwgVUlOVCBtCiB9CiAKIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpGdWxsU2NyZWVu
Q29udHJvbGxlcihGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudCogY2xpZW50KQotICAgIDogbV9w
cml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UHJpdmF0ZT4odGhpcywgY2xpZW50KSkKKyAgICA6IG1f
cHJpdmF0ZShtYWtlVW5pcXVlPFByaXZhdGU+KHRoaXMsIGNsaWVudCkpCiB7CiAgICAgQVNTRVJU
X0FSRyhjbGllbnQsIGNsaWVudCk7CiB9CkBAIC0xMzEsMTMgKzEzMSwxMyBAQCB2b2lkIEZ1bGxT
Y3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4oKQogICAgIG1fcHJpdmF0ZS0+bV9vcmln
aW5hbEZyYW1lID0gb3JpZ2luYWxGcmFtZTsKIAogICAgIEFTU0VSVCghbV9wcml2YXRlLT5tX2Jh
Y2tncm91bmRXaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93ID0gc3Rk
OjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZh
dGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93ID0gbWFrZVVuaXF1
ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOwog
ICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAgICAg
OjpBbmltYXRlV2luZG93KG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5od25kKCksIGtG
dWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24sIEFXX0JMRU5EIHwgQVdfQUNUSVZBVEUpOwogCiAg
ICAgbV9wcml2YXRlLT5tX2NsaWVudC0+ZnVsbFNjcmVlbkNsaWVudFdpbGxFbnRlckZ1bGxTY3Jl
ZW4oKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93KTsKLSAgICBt
X3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZh
dGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKICAgICBBU1NFUlQobV9wcml2YXRlLT5t
X2Z1bGxTY3JlZW5XaW5kb3cpOwogICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93LT5j
cmVhdGVXaW5kb3coMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCmluZGV4IDEw
NjdiOTYwOTNkYjJlZDU5MWEyMWEzMWQ5ZDAyNTZkYzEyOTNlODkuLmYxNDQyNTcyY2M2ZDFkNTRi
YmVlNThiZGJjMzZlZGY3NzRhYWJiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNw
cApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhE
QyBkYywgYm9vbCBoYXNBbHBoYSkKIAogICAgIGNhaXJvX3QqIGNyID0gY3JlYXRlQ2Fpcm9Db250
ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOwogCi0gICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJv
PihjcikpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUo
bWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY3IpKTsKICAgICBtX2RhdGEtPnBsYXRm
b3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fZGF0YSk7CiAgICAgbV9kYXRh
LT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggYzJiYWZhZjk2YTE2MDcwODBiNzYzMzk1MjY2
MmU3Njc3NjE0YjAwYy4uOTZjODI4MWFmNGIyMmM2Njg2YWNiMTRjNWU4MmMxZDY5YjkwZGQ0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEdyYXBo
aWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMsIElEMkQxRENSZW5kZXJUYXJnZXQq
KiByZW5kZXJUYXJnZXQsIFJFCiAKICAgICAoKnJlbmRlclRhcmdldCktPkJpbmREQyhoZGMsICZy
ZWN0KTsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFyZ2V0KTsKKyAgICBhdXRvIG93bmVk
UGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oKnJl
bmRlclRhcmdldCk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwgQml0bWFwUmVuZGVyaW5nQ29udGV4
dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGhkYzsKIH0KQEAgLTEyNiw3
ICsxMjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBoZGMsIGJv
b2wgaGFzQWxwaGEpCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBhdXRvIG93bmVkUGxh
dGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVy
VGFyZ2V0LmdldCgpKTsKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNvbnRleHQpLCBCaXRtYXBSZW5kZXJpbmdDb250
ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1faGRjID0gaGRjOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGJkNzZlZmJiYTlkMGU4OTdkM2Qy
ODhlODVlOGQyNDQ0Y2M0ZjhmNGUuLjFlYmI1YjA5ZDM4NTM3YzAxOTIyMGI5NDdkY2FkOTQ0ZDhl
MTAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250
ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4
dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAg
ICAgfSk7CiB9CiAKQEAgLTU1LDE0ICs1NSwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRgog
ICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAog
ICAgICAgICBbcmVuZGVyVGFyZ2V0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFy
Z2V0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4
dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKICAgICAs
IG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNv
bnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1l
bW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRl
cmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNl
dEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUt
PnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKQEAgLTcwLDkgKzcwLDkgQEAgR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXgKIAogR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJRDJEMVJlbmRl
clRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0
LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9vd25lZFBsYXRm
b3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5k
ZXJUYXJnZXQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVlPFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQogICAgICwgbV9wbGF0Zm9ybUNvbnRl
eHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBH
cmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQor
ICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
PihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250
ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGlj
c0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29u
dGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCmluZGV4IDViZGU0
Y2VkZjUxNmE5MTc5YTZkM2QzYjNlMzNkMTM0ZWQ1YWI1MTEuLjFkODA0MjBjZjdlYzZjZDc3NWE2
MmJhZWEyMmY5OTA2MDdlYjRjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCkBAIC05NSw3ICs5
NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6V2luZG93c0JpdG1hcDo6fldpbmRvd3NCaXRtYXAoKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0OjpXaW5kb3dzQml0bWFwPiBHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dzQml0bWFwPihtX2RhdGEtPm1faGRjLCBz
aXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaW5kb3dzQml0bWFwPihtX2RhdGEtPm1faGRj
LCBzaXplKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKaW5kZXggMDZjMTc0
NTc5YTRiYzEzMDkxZjM0YjU3OTRhYWE5Mjk5M2JiYmEyNC4uMzVhOWZmNjExMzUxYzMzYzcxNzRk
OTJhMWZkY2Y0NDcwZTgxYTg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcApAQCAtMTEyLDgg
KzExMiw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIE5vdGU6IFRoaXMgcGxhY2VzIHRoZSBiaXRtYXBjb250ZXh0IGludG8gYSBsb2NrZWQgc3Rh
dGUgYmVjYXVzZSBvZiB0aGUgQmVnaW5EcmF3IGNhbGwgaW4gdGhlIGNvbnN0cnVjdG9yLgotICAg
IG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKLSAgICBtX2RhdGEuY29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEucGxhdGZvcm1Db250ZXh0Lmdl
dCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1v
cnkpOworICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICBtX2RhdGEuY29udGV4dCA9
IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEucGxhdGZvcm1Db250ZXh0LmdldCgp
LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkp
OwogCiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IDU4MzhlYzE1N2EyYzdiNzE2M2I3MTY4MmE0ZWI4
YzgwMzRlOTYzMjEuLjZkNjRhZTlhNmUzYTQxN2ZiMTRmMTIxNjZmNjhkM2M5YTU1MjY2ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC04
Miw3ICs4Miw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6fk1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdp
c3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtd
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIo
W10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0
ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAgICB9CiB9CkBAIC0zMDEsNyAr
MzAxLDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjptYXhUaW1l
U2Vla2FibGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgY29uc3QKIHsgCi0g
ICAgYXV0byByYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
KyAgICBhdXRvIHJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAg
IGlmIChtX3ByZXNlbnRlciAmJiBtX3ByZXNlbnRlci0+bWF4VGltZUxvYWRlZCgpID4gMCkKICAg
ICAgICAgcmFuZ2VzLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBNZWRpYVRpbWU6OmNyZWF0
ZVdpdGhEb3VibGUobV9wcmVzZW50ZXItPm1heFRpbWVMb2FkZWQoKSkpOwogICAgIHJldHVybiBy
YW5nZXM7CkBAIC04ODgsNyArODg4LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXIoTWUKICAgICBt
X3NvdXJjZVJlY3QuYm90dG9tID0gMTsKICAgICBtX3NvdXJjZVJlY3QucmlnaHQgPSAxOwogCi0g
ICAgbV9wcmVzZW50ZXJFbmdpbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPERpcmVjdDNEUHJlc2VudGVy
PigpOworICAgIG1fcHJlc2VudGVyRW5naW5lID0gbWFrZVVuaXF1ZTxEaXJlY3QzRFByZXNlbnRl
cj4oKTsKICAgICBpZiAoIW1fcHJlc2VudGVyRW5naW5lKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VR
dWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdl
UXVldWUuY3BwCmluZGV4IDMzN2ZhZjM3OGRhNzk1NWJlYTYxMGFlYzkwNzU3OTY2ZDZjNDgyMDAu
LjdlNDQ0ZDAyNzZkYjRiZGRhNjU4Nzk3YmQ1NDMwNmQ2ZmY5Y2IyOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNw
cApAQCAtNTAsMTMgKzUwLDEzIEBAIHN0YXRpYyB2b2lkIFdLQ0FJbWFnZVF1ZXVlUmVsZWFzZShD
QUltYWdlUXVldWVSZWYgaXEpCiB9CiAKIFdLQ0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSh1
aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBjYXBhY2l0eSkKLSAgICA6
IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKKyAg
ICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKIHsKICAg
ICBtX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IGFkb3B0Q0Yod2tDQUltYWdlUXVldWVDcmVhdGUo
d2lkdGgsIGhlaWdodCwgY2FwYWNpdHkpKTsKIH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJbWFn
ZVF1ZXVlKGNvbnN0IFdLQ0FJbWFnZVF1ZXVlJiBvKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFr
ZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQorICAgIDogbV9wcml2YXRlKG1ha2VV
bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQogewogICAgIG1fcHJpdmF0ZS0+bV9pbWFn
ZVF1ZXVlID0gby5tX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCA3MWEwMGEzMGMwZmFlZGQ5YjQw
ZWM0ZmZhZGYxNzg2MzhmMjViODU0Li40MjI1MmQzNGI1NGZlNmMyYzI2YjUyMmM2NjBlODYyZjA1
NmVmMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCkBAIC00MywyNCArNDMsMjQgQEAgZW51bSBDbGlwYm9hcmREYXRhVHlwZSB7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUo
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQi
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiQ0xJUEJPQVJEIik7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxT
ZWxlY3Rpb24oKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJQ
UklNQVJZIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIlBSSU1BUlkiKTsK
IH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhOjpjcmVhdGUoKSk7CiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFn
QW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJUKGRyYWdEYXRh
LnBsYXRmb3JtRGF0YSgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3Rl
Ym9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDQ5MDM3
MWFkODllZjJlNzk2ZTM0MDFhYWMxZGJiODA2ZWE5NjZlYjAuLmI2ZTA1OGJlMzMwNjcyNTRiYmI2
MzA1MzQ5ZWE4NmNhYWU1ZGEyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFBhc3RlYm9h
cmRIZWxwZXI6OndyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQs
IGNvbnN0IFNlbAogCiAgICAgaWYgKG51bWJlck9mVGFyZ2V0cyA+IDAgJiYgdGFibGUpIHsKICAg
ICAgICAgU2V0Rm9yU2NvcGU8U2VsZWN0aW9uRGF0YSo+IGNoYW5nZShzZXR0aW5nQ2xpcGJvYXJk
U2VsZWN0aW9uLCBjb25zdF9jYXN0PFNlbGVjdGlvbkRhdGEqPigmc2VsZWN0aW9uKSk7Ci0gICAg
ICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRp
bmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsK
KyAgICAgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxDbGlwYm9hcmRTZXREYXRhPigqc2V0dGlu
Z0NsaXBib2FyZFNlbGVjdGlvbiwgV1RGTW92ZShwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOwog
ICAgICAgICBpZiAoZ3RrX2NsaXBib2FyZF9zZXRfd2l0aF9kYXRhKGNsaXBib2FyZCwgdGFibGUs
IG51bWJlck9mVGFyZ2V0cywgZ2V0Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgY2xlYXJDbGlw
Ym9hcmRDb250ZW50c0NhbGxiYWNrLCBkYXRhLmdldCgpKSkgewogICAgICAgICAgICAgZ3RrX2Ns
aXBib2FyZF9zZXRfY2FuX3N0b3JlKGNsaXBib2FyZCwgbnVsbHB0ciwgMCk7CiAgICAgICAgICAg
ICAvLyBXaGVuIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YSgpIHN1Y2NlZWRzIGNsZWFyQ2xp
cGJvYXJkQ29udGVudHNDYWxsYmFjayB0YWtlcyB0aGUgb3duZXJzaGlwIG9mIGRhdGEsIHNvIHdl
IGxlYWsgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUdhZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVHYWRnZXQuY3BwCmluZGV4IGJkY2M5OWU4NTlkNDk3NTA3OGZmM2M1ZTJlYmMzODVkOWI5
NWI5NTIuLjczZTA3NThhNmVkZDFlMTkzMjMxMDgzZjg5YTdlN2ZkZjIwZDEzNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcApAQCAt
MzUsMjAgKzM1LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZUdhZGdldD4gUmVuZGVy
VGhlbWVHYWRnZXQ6OmNyZWF0ZShjb25zdCBSZW5kZXJUaGVtZUdhCiB7CiAgICAgc3dpdGNoIChp
bmZvLnR5cGUpIHsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmljOgot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4oaW5mbywg
cGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAg
IGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlRleHRGaWVsZDoKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVu
dCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsK
ICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpSYWRpbzoKICAgICBjYXNlIFJlbmRl
clRoZW1lR2FkZ2V0OjpUeXBlOjpDaGVjazoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0
aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+
KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1l
R2FkZ2V0OjpUeXBlOjpBcnJvdzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUFycm93R2FkZ2V0PihpbmZvLCBw
YXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6
VHlwZTo6SWNvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJ
Y29uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJs
aW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlNjcm9s
bGJhcjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxi
YXJHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBhcmVudCwg
c2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpC
dXR0b246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9u
R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxp
bmdzLCBwb3NpdGlvbik7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcAppbmRl
eCAwNWQxMmRkOWVhZmJlZjAyYTQ1OWNhNTI3NjQxN2E1YjliMGU4OTc2Li5jYTZlZDkxOGE1MDMz
ZTI5NzZkYjg0ZDg5YzIwNDg4NzAwZjAyYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKQEAgLTQyLDQ5ICs0Miw0OSBAQCBSZW5k
ZXJUaGVtZVdpZGdldCYgUmVuZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKFR5cGUgd2lkZ2V0
VHlwZSkKICAgICBhdXRvIGFkZFJlc3VsdCA9IHdpZGdldE1hcCgpLmVuc3VyZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4od2lkZ2V0VHlwZSksIFt3aWRnZXRUeXBlXSgpIC0+IHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJUaGVtZVdpZGdldD4gewogICAgICAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHsKICAg
ICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJSaWdo
dDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xs
YmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2Rl
OjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xs
YmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2Rl
OjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxT
Y3JvbGxiYXJMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6Ok1vZGU6OkZ1bGwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9u
OjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xs
YmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2Rl
OjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTY3JvbGxiYXI6
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJh
cj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2Rl
OjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xs
YmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1v
ZGU6OkZ1bGwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNh
bFNjcm9sbEluZGljYXRvclJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVy
VGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBS
ZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKICAgICAgICAgY2FzZSBSZW5k
ZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JMZWZ0OgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19P
UklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRv
ciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRB
VElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwogICAgICAgICBjYXNl
IFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xsSW5kaWNhdG9yOgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdU
S19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5k
aWNhdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xs
YmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1v
ZGU6OkluZGljYXRvcik7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkNo
ZWNrQnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVu
ZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OkNoZWNrKTsKICAgICAgICAgY2FzZSBSZW5kZXJU
aGVtZVdpZGdldDo6VHlwZTo6UmFkaW9CdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0
b246OlR5cGU6OlJhZGlvKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRo
ZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6UmFkaW8pOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVC
dXR0b246OkRlZmF1bHQ6Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6Tm8pOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0b25EZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0
dG9uOjpEZWZhdWx0OjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMpOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpDb21ib0JveDoKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQ29tYm9Cb3g+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUNvbWJvQm94PigpOwogICAgICAgICBjYXNlIFJl
bmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpFbnRyeToKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0
OjpUeXBlOjpTZWxlY3RlZEVudHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PihSZW5kZXJUaGVt
ZUVudHJ5OjpTZWxlY3RlZDo6WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6
VHlwZTo6U2VhcmNoRW50cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZVNlYXJjaEVudHJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6U3BpbkJ1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6VmVydGljYWxTbGlkZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJ
T05fVkVSVElDQUwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jp
em9udGFsU2xpZGVyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpP
TlRBTCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlByb2dyZXNzQmFy
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVz
c0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhl
bWVQcm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUpOwogICAgICAgICBjYXNlIFJlbmRlclRo
ZW1lV2lkZ2V0OjpUeXBlOjpJbmRldGVybWluYXRlUHJvZ3Jlc3NCYXI6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVt
ZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6
Ok1vZGU6OkluZGV0ZXJtaW5hdGUpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpU
eXBlOjpMaXN0VmlldzoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lTGlzdFZpZXc+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZUxpc3RWaWV3PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJ
Y29uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJY29u
PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpXaW5kb3c6Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lV2luZG93PigpOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTEzOSw3ICsxMzksNyBAQCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6UmVuZGVyVGhlbWVTY3JvbGxi
YXIoR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24sIE1vZGUgbW9kZQogICAgIGluZm8udHlwZSA9
IFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmljOwogICAgIGluZm8ubmFtZSA9ICJjb250
ZW50cyI7CiAgICAgaW5mby5jbGFzc0xpc3QuY2xlYXIoKTsKLSAgICBtX2NvbnRlbnRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9O
X1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIuZ2V0KCkpOworICAgIG1fY29udGVudHMg
PSBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05f
VkVSVElDQUwsIGNoaWxkcmVuLCBtX3Njcm9sbGJhci5nZXQoKSk7CiAgICAgaW5mby5uYW1lID0g
InNsaWRlciI7CiAgICAgbV9zbGlkZXIgPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGluZm8s
IG1fY29udGVudHMtPmNoaWxkKG1fdHJvdWdoUG9zaXRpb24pKTsKIH0KQEAgLTE5Nyw3ICsxOTcs
NyBAQCBSZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94KCkKICAgICB9Owog
ICAgIGluZm8ubmFtZSA9ICJib3giOwogICAgIGluZm8uY2xhc3NMaXN0ID0geyAiaG9yaXpvbnRh
bCIsICJsaW5rZWQiIH07Ci0gICAgbV9ib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1l
Qm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgY2hpbGRyZW4sIG1f
Y29tYm9Cb3guZ2V0KCkpOworICAgIG1fYm94ID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdh
ZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVuLCBtX2NvbWJv
Qm94LmdldCgpKTsKICAgICBSZW5kZXJUaGVtZUdhZGdldCogYnV0dG9uID0gbV9ib3gtPmNoaWxk
KDApOwogICAgIGluZm8uY2xhc3NMaXN0LnJlbW92ZUxhc3QoKTsKICAgICBtX2J1dHRvbkJveCA9
IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoaW5mbywgYnV0dG9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHAKaW5kZXggODQwN2MxMTAxZGRkNmRiNmUzNzhkZWZjYjNhYjgyNmJmNzI2NDU0
ZC4uNzg2OTdlYjAwMDBmN2Y3YjgyYTdkMGVjZjVmOTg1YTFlOTI4OWMzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBCTVBJbWFnZURlY29kZXI6
OmRlY29kZUhlbHBlcihib29sIG9ubHlTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoIW1fcmVhZGVyKSB7Ci0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxC
TVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBmYWxz
ZSk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywg
bV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBmYWxzZSk7CiAgICAgICAgIG1fcmVhZGVy
LT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDdiYTdlZDkxMDFjZTI1YTliZjZlMjMxMDg3YmYwYmMxMTRjYzIyZDYuLjRmMzQ4
N2UzMzQ3NjQwNTQ3NGNmODZiNWM2MDZkMmMxOTg4YzdjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmRlY29k
ZSh1bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVlcnkgcXVlcnksIGJvb2wgYWxsRGF0YVIKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRl
ciA9IG1ha2VVbmlxdWU8R0lGSW1hZ2VSZWFkZXI+KHRoaXMpOwogICAgICAgICBtX3JlYWRlci0+
c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAK
aW5kZXggMWNjYTVlNTllZWIzNTFiMDU4YTIxZGIxMzRmNjQzNzkxZTUwNzdjYS4uZDc3MTg2ZWE5
NzM5YmRmYjJjNTYyMjhlZTRjZjVlODgyOGQ4ODU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
Y3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgYm9vbCBHSUZGcmFtZUNvbnRleHQ6OmRlY29kZShjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjoKICAgICAgICAg
aWYgKCFpc0RhdGFTaXplRGVmaW5lZCgpIHx8ICFpc0hlYWRlckRlZmluZWQoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIG1fbHp3Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlzKTsKKyAgICAgICAgbV9sendDb250ZXh0ID0g
bWFrZVVuaXF1ZTxHSUZMWldDb250ZXh0PihjbGllbnQsIHRoaXMpOwogICAgICAgICBpZiAoIW1f
bHp3Q29udGV4dC0+cHJlcGFyZVRvRGVjb2RlKCkpIHsKICAgICAgICAgICAgIG1fbHp3Q29udGV4
dCA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03ODYsNyArNzg2LDcg
QEAgdm9pZCBHSUZJbWFnZVJlYWRlcjo6c2V0UmVtYWluaW5nQnl0ZXMoc2l6ZV90IHJlbWFpbmlu
Z0J5dGVzKQogdm9pZCBHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSgpCiB7CiAg
ICAgaWYgKG1fZnJhbWVzLmlzRW1wdHkoKSB8fCBtX2ZyYW1lcy5sYXN0KCktPmlzQ29tcGxldGUo
KSkKLSAgICAgICAgbV9mcmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8R0lGRnJhbWVDb250
ZXh0PihtX2ZyYW1lcy5zaXplKCkpKTsKKyAgICAgICAgbV9mcmFtZXMuYXBwZW5kKG1ha2VVbmlx
dWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXplKCkpKTsKIH0KIAogLy8gRklYTUU6IE1v
dmUgdGhpcyBtZXRob2QgdG8gY2xvc2UgdG8gZG9MWlcoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggMTg3MGJiMTYwYjg0OTQ4ZjBiNTlkZTQ1MTE2MzZiYTRjMGYzOGYyZS4uZmY2
YTFjODdhZTZmMDViNDljY2MxMjhhYmUwNWMzMDNkNmVlYmFkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6ZGVj
b2RlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGhhdmUg
YWxyZWFkeSBzaXplZCBtX2ZyYW1lQnVmZmVyQ2FjaGUgYmVmb3JlIHRoaXMsIGFuZAogICAgICAg
ICAgICAgLy8gd2UgbXVzdCBub3QgcmVzaXplIGl0IGFnYWluIGxhdGVyIChzZWUgY2F1dGlvbiBp
biBmcmFtZUNvdW50KCkpLgogICAgICAgICAgICAgQVNTRVJUKG1fZnJhbWVCdWZmZXJDYWNoZS5z
aXplKCkgPT0gbV9kaXJFbnRyaWVzLnNpemUoKSk7Ci0gICAgICAgICAgICBtX2JtcFJlYWRlcnNb
aW5kZXhdID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgZGlyRW50cnku
bV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CisgICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhd
ID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNl
dCwgMCwgdHJ1ZSk7CiAgICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXREYXRhKG1f
ZGF0YS5nZXQoKSk7CiAgICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXRCdWZmZXIo
Jm1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCBiNzJjNTVhMmNiOTA5ZmEzNDYxY2Y3OTVmMDRkY2VhZDUxMDRl
OGVlLi5kMGI5MTZhNWRhZjhhM2FhMjU0ZjQ5NzM0NzNhODMxNTU3MjlkYzIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIEpQRUdJbWFn
ZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEpQRUdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVy
ID0gbWFrZVVuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRoaXMpOwogCiAgICAgLy8gSWYgd2UgY291
bGRuJ3QgZGVjb2RlIHRoZSBpbWFnZSBidXQgd2UndmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRhLCBk
ZWNvZGluZwogICAgIC8vIGhhcyBmYWlsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGMxOGEzOWI1OTEzM2EzMThmMTUxMDU4MWU4ZjkxZWJkZDc2ODc5YWIuLjYyY2I5YjIyYTAx
ZjI2ZTlmMmNkNDFkZWEzODFiMzYzNjg5N2VlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwCkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmRlY29kZShib29s
IG9ubHlTaXplLCB1bnNpZ25lZCBoYWx0QXRGcmFtZSwgYm9vbCBhbGxEYXRhUmUKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtl
VW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRl
Y29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcK
ICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUubW0KaW5kZXggMjA5Zjg4ZjQ3YTNiN2NkYzAxNDNkZTkyZTI0YmFkZGY5NjY0
YjVmNC4uY2FlM2RjZjE2NDc5NmNlZWNiNjhiMjQ0OGYxMTMzYzEwZWM5YzIwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC02OSw3ICs2
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIExlZ2FjeVRpbGVDYWNoZTo6TGVnYWN5VGlsZUNh
Y2hlKFdBS1dpbmRvdyogd2luZG93KQogICAgIDogbV93aW5kb3cod2luZG93KQogICAgICwgbV90
b21ic3RvbmUoYWRvcHROUyhbW0xlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZSBhbGxvY10gaW5pdF0p
KQotICAgICwgbV96b29tZWRPdXRUaWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVRpbGVH
cmlkPigqdGhpcywgbV90aWxlU2l6ZSkpCisgICAgLCBtX3pvb21lZE91dFRpbGVHcmlkKG1ha2VV
bmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKSkKICAgICAsIG1fdGlsZUNy
ZWF0aW9uVGltZXIoKnRoaXMsICZMZWdhY3lUaWxlQ2FjaGU6OnRpbGVDcmVhdGlvblRpbWVyRmly
ZWQpCiB7CiAgICAgW2hvc3RMYXllcigpIGluc2VydFN1YmxheWVyOm1fem9vbWVkT3V0VGlsZUdy
aWQtPnRpbGVIb3N0TGF5ZXIoKSBhdEluZGV4OjBdOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQg
TGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSgpCiAKICAgICBpZiAobV9jdXJyZW50
U2NhbGUgIT0gbV96b29tZWRPdXRUaWxlR3JpZC0+c2NhbGUoKSkgewogICAgICAgICBpZiAoIW1f
em9vbWVkSW5UaWxlR3JpZCkgewotICAgICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkID0gc3Rk
OjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOworICAgICAg
ICAgICAgbV96b29tZWRJblRpbGVHcmlkID0gbWFrZVVuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRo
aXMsIG1fdGlsZVNpemUpOwogICAgICAgICAgICAgW2hvc3RMYXllcigpIGFkZFN1YmxheWVyOm1f
em9vbWVkSW5UaWxlR3JpZC0+dGlsZUhvc3RMYXllcigpXTsKICAgICAgICAgICAgIGhvc3RMYXll
clNpemVDaGFuZ2VkKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVHcmlkLmgKaW5kZXggNjY0N2VjM2EzNmQxNTg3ODY5NGYwN2QwMmIxZmIxZThj
MzUwZDUzZi4uMzBlZjlmYzMxYzg3ZjExYmZhZmU0Y2E2YTllYTgxMjRkNWZjM2EyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKQEAgLTQ2LDYgKzQ2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5VGlsZUdyaWRUaWxlOwogCiBj
bGFzcyBMZWdhY3lUaWxlR3JpZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBUaWxlSW5kZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMTkxYWM3Njk2MjE1MTIxNTNkYmRj
YjA3OGRkNjZmNDY1NTNiYzIxZC4uMDI3MWI5M2U3MDVjZTJjNDJkNjMyZmUyZGIyOWFhNDZlODM2
ZDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
QEAgLTY2LDEyICs2NiwxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1h
Z2UsIGNvbnN0IEludFBvaW50JikKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQYXN0ZWJvYXJkPigiZGF0YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIik7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9y
RHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkp
OwogfQogCiAjZW5kaWYKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
TWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBhc3RlYm9hcmQ+KGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CiB9
CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNv
bnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29r
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQppbmRleCBhOWQ5
ZTQ3MTA1MDE3ZDY0ZDgyZTM3YzhhYTMxY2U2NDY5MDI1Njg1Li5jMmI1YTBiMDhiZGY3NWU4YzAx
Y2Q5YmQyZDUxYzMxNDkzMDVmMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlj
a0xvb2subW0KQEAgLTg0LDcgKzg0LDcgQEAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0
ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdXJsLCBOU1N0cmluZwogICAgIGlm
IChbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6dXBk
YXRlZE1JTUVUeXBlLmdldCgpXSkgewogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHV0aSA9
IGFkb3B0TlMoUEFMOjpzb2Z0TGlua19RdWlja0xvb2tfUUxUeXBlQ29weVVUSUZvclVSTEFuZE1p
bWVUeXBlKHVybCwgdXBkYXRlZE1JTUVUeXBlLmdldCgpKSk7CiAKLSAgICAgICAgYXV0byBjb252
ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQo
KSk7CisgICAgICAgIGF1dG8gY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVy
PihkYXRhLCB1dGkuZ2V0KCkpOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcHJldmlld1JlcXVl
c3QgPSBjb252ZXJ0ZXItPnByZXZpZXdSZXF1ZXN0KCk7CiAKICAgICAgICAgLy8gV2UgdXNlIFty
ZXF1ZXN0IFVSTF0gaGVyZSBpbnN0ZWFkIG9mIHVybCBzaW5jZSBpdCB3aWxsIGJlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklP
Uy5tbQppbmRleCAxMDdjNzdjNzUzZWFiN2Q5MmRhMjk0ODdjYTZmNjVmODA3MDQ4MjEzLi42ZDlj
Y2UxNWI4NzRmMTVmMTU0ODc1ZWEwZWU2YjlmMTAzNWE4MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KQEAg
LTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVt
b3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWEKICAgICBpZiAoIU1lZGlhUGxh
eWVyTGlicmFyeSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUz4oY2xpZW50KTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CiB9CiAKIFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKFJlbW90ZUNv
bW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCmluZGV4IDAxZjBhOWJiMjBhMjQ4YjY5OTg4NTY0
NzBhZWUzNzRhOThjZmE1MWMuLmVkNjMyZWE1ZTNmNTU5N2U5ZDc2ZmQyZTU1Njk1NjFmZTZjNGMy
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRv
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJ
T1MubW0KQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Ny
b2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JJT1M6
OlNjcm9sbEFuaW1hdG9ySU9TKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApp
bmRleCAwNTQzZWQ1ZTlmYzlmY2ZlM2JiYWE0MDM1NWU0MDcyZjlmM2MzZjQwLi5mOGE2MWVjNzBj
MGMxYTRjZDM3N2YwZTdjZDY3NmVmYjlkZTViYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigp
OwogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNTE1MjBkY2JiZWE1OTIxODVjMzI2NzAyY2Jh
NjlmZTg4YjRkNGRkZS4uOGViMTVjZjg4NTJkOTg1NzQ0N2UwNTljMzhhY2FlYmEyMzQxNWQwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEw
MCw3ICsxMDAsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm9taQogc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7CiAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiB9CiAKQEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oTlNEcmFnUGJvYXJkKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJk
TmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9S
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCmluZGV4IDA1Y2MwODk1N2UxZDUwMTI0ZGQ2MzJl
MmE0Yzg5MjEyOTg5Njk2MTEuLjFhYTJjZDgwMTMyZjJjMjFlZTM4YjlmZmJkYjgzMzczYmJmNGMx
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNv
bW1hbmRMaXN0ZW5lck1hYy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRM
aXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xp
ZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+KGNs
aWVudCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjp1cGRhdGVTdXBwb3J0
ZWRDb21tYW5kcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW0KaW5kZXggYTgzMTc1MTIyZWMyZTRiNmI2ZGU1MWJlNmRmNTI2NGI0MWExZjhj
NC4uNjg2MGUzM2MzYTNiMjE1NjMwNWZiMzFhZjQyN2RjNDkwMjM1ODdhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNjk3LDcg
KzY5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFu
aW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvck1hYz4o
c2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yTWFj
PihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yTWFjOjpTY3JvbGxBbmltYXRv
ck1hYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggMWI5ZGM1MzQ1Yjg4MWViMzZkOTZmY2UzNTgyZGYw
ZTU0YTEzODViYS4uZTI0NDViYzgyM2Y4NmUwNTViMGU1Nzg3N2Q2Y2Y1MzFhNGZmY2M5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtNzIsNyArNzIsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbD4od3JpdGVyLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoYXVkaW9UcmFj
a0lkKSwgV1RGTW92ZSh2aWRlb1RyYWNrSWQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3Zl
KGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lkKSk7CiB9CiAKIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbDo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsKFJlZjxNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcj4mJiB3cml0ZXIsIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCwgU3Ry
aW5nJiYgdmlkZW9UcmFja0lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgK
aW5kZXggZDRhZGIxNTJiZDRiYWVmN2VmN2JmMDU1ZjZkOWE4M2Q4NjdlNjdlYi4uYTIyZjU3MWJj
NTE2MTFmNjE3NDQ5MTA0Y2Y1ZmM4NjBlNTJlOWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIAogY2xhc3MgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsIGZpbmFsIDogcHVibGljIE1lZGlhUmVjb3JkZXJQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtUHJpdmF0ZSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2Uu
Y3BwCmluZGV4IGRiOTRmZGFmODNhOGFiZDY3YWZjZmQ2ZWEzNjlmYWE4OWM0NmMzZTIuLjU5YWIz
ODQwZmQ3MzZjYTE0NTAxNmM3ZjY2MGVjYTNiMDkwMzI0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1
cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC05MSwxNCArOTEsMTQg
QEAgQXVkaW9DYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpmYWN0
b3J5KCkKIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1
cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0
KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpB
dWRpbywgU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5s
YWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2Vf
dW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVy
KG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0
aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYm
IG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUo
bmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5p
cXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlx
dWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVy
RGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaAppbmRleCA5NTNm
M2E4YTBlNGY2YTA2MmI5Yjk0YThmNDE1MWE0OWYxYTQzMDFkLi5kNGM5Mzc5Zjg0ZGFkNmY2ODgx
MTk4OWQxNDM0ZWZlMTZhZWZlYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0
YS5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdTdHJl
YW1lckF1ZGlvRGF0YSA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyQXVkaW9EYXRhKEdSZWZQdHI8
R3N0U2FtcGxlPiYmIHNhbXBsZSwgR3N0QXVkaW9JbmZvIGluZm8pCiAgICAgICAgIDogbV9zYW1w
bGUoV1RGTW92ZShzYW1wbGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggYjNhZjM1YWY4MjQ4OGRkNGNmODIxY2QzZWVhZTYzZDlj
ZjFhY2Q4NC4uNGE2ZDQxY2U0OGNmYTBiYjdkMGY4MjdiMTNkYzk5NDE3OThlZDNiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0z
NTEsOCArMzUxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfY2xhc3Nf
aW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyY0NsYXNzKiBrbGFzcykKIAogc3RhdGljIHZvaWQgd2Vi
a2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZikKIHsK
LSAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4oc2VsZik7Ci0gICAgc2VsZi0+bWVkaWFTdHJl
YW1PYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcj4o
c2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0gbWFrZVVuaXF1ZTxX
ZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3Ry
ZWFtT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYp
OwogICAgIHNlbGYtPmZsb3dDb21iaW5lciA9IGdzdF9mbG93X2NvbWJpbmVyX25ldygpOwogICAg
IHNlbGYtPmZpcnN0QXVkaW9CdWZmZXJQdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICAgIHNl
bGYtPmZpcnN0RnJhbWVQdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBlNWQ5YjBlMDI3
NmVkZGE1ZGJkNTIwYmMxMGYzNTE4MGQwMTVkNjliLi45N2JlMWYxMmZiYjIyZGMzNThjOTljODM5
Zjk4MWYxNjU2YThlMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTI3LDE0ICsxMjcsMTQgQEAgRGlzcGxheUNhcHR1cmVG
YWN0b3J5JiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3BsYXlGYWN0b3J5KCkKIAog
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2Uo
U3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25z
dCBnY2hhciAqc291cmNlX2ZhY3RvcnkpCiAgICAgOiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJj
ZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0g
ICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4o
c291cmNlX2ZhY3RvcnkpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZp
ZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVy
RGVidWcoKTsKIH0KIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRl
b0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhh
c2hTYWx0KQogICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nIHsgZGV2aWNl
LnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFz
aFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVv
Q2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVy
VmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWco
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0
b3J5LmNwcAppbmRleCA2OTk1YzYwMmNiMTc0NDdmYTc0MWQzOWQ0NDk0YzM1NjFkYzFiYjgyLi5m
OTlkYmVjNTllMDQwYmI3ZmZjNTVlNzVjNmE5MTMxNWRkZWM5NDNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9F
bmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCkBAIC01MTIsMTQg
KzUxMiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXI+IEdTdHJlYW1l
clZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRQogICAgICAgICBnX29iamVjdF9nZXQo
d2VicnRjZW5jb2Rlci5nZXQoKSwgImVuY29kZXIiLCAmZW5jb2Rlci5vdXRQdHIoKSwgTlVMTCk7
CiAKICAgICAgICAgaWYgKGVuY29kZXIpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihmb3JtYXQpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4oZm9ybWF0KTsKIAogICAgICAgICBHU1RfSU5G
TygiVXNpbmcgVlA4IEVuY29kZXIgZnJvbSBMaWJXZWJSVEMuIik7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6TGlidnB4VnA4RW5jb2Rlcj4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8d2VicnRjOjpMaWJ2cHhWcDhFbmNvZGVyPigpOwogICAgIH0KIAogICAg
IGlmIChmb3JtYXQubmFtZSA9PSBjcmlja2V0OjprSDI2NENvZGVjTmFtZSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lckgyNjRFbmNvZGVyPihmb3JtYXQpOwogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZC5oCmluZGV4IGRjNmY4ZjNmYjA1N2ZiNTQwZDkwYzAwMjI2OGE5OTc3NDQx
MDI3N2YuLjRhMDYxZmNjOTUzYjEzZDU4M2JhZTU1NDUxNTViY2UwOGRmOGY5ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEVE1GU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCkBAIC00MCw2ICs0
MCw3IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENEVE1G
U2VuZGVyQmFja2VuZCwgcHJpdmF0ZSB3ZWJydGM6OkR0bWZTZW5kZXJPYnNlcnZlckludGVyZmFj
ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGliV2Vi
UlRDRFRNRlNlbmRlckJhY2tlbmQocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RHRtZlNlbmRl
ckludGVyZmFjZT4mJik7CiAgICAgfkxpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCAyMDdhYjc4YTlhMmJiZTQwYTBl
ZDRkYTY5NTY5YWVkYjEyMjk5ZTIwLi43NDUzM2M1ZmE0ZGYwZDRlNWE2NGQ3NWNlNjI3YjMyNDJj
NDZiODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTc5LDkg
Kzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRB
ZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIH0KIAogY2xhc3MgQmFzaWNQYWNrZXRT
b2NrZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCYXNpY1Bh
Y2tldFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQmIG5ldHdvcmtUaHJlYWQpCi0gICAgICAgIDog
bV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rv
cnk+KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAgOiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+
KCZuZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAgfQogCkBAIC0xNzksNyArMTgwLDcgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMoUGVlckNv
bm5lY3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWdu
YWxpbmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAKLSAgICBmYWN0b3J5
QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
QXVkaW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpOwogfQogCiBzdGF0aWMgaW5saW5l
IFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRz
KCkKQEAgLTI4OCwxMCArMjg5LDEwIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAgICAgYXV0
byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5l
dHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKIAogICAgIGlmICghZmFjdG9yeUFuZFRocmVh
ZHMubmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5h
Z2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAg
ICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogCiAgICAgaWYgKCFm
YWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5KQotICAgICAgICBmYWN0b3J5QW5k
VGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1BhY2tl
dFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKKyAgICAg
ICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSA9IG1ha2VVbmlxdWU8QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZCk7
CiAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeS0+c2V0RGlzYWJsZU5v
bkxvY2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKTsK
IAogICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKmZhY3RvcnlBbmRU
aHJlYWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFj
dG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbnVsbHB0cik7CkBAIC0zMTQsNyArMzE1LDcg
QEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExp
YldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0
OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7CiAgICAgZmFjdG9yeUFuZFRocmVh
ZHMuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgewot
ICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Y3JpY2tl
dDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0
b3J5KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRBbGxvY2F0b3IgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFu
YWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwogICAgICAgICBpZiAoIW1fZW5hYmxlRW51bWVy
YXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAgICAgICAgICAgIGJhc2ljUG9ydEFsbG9jYXRv
ci0+c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRvci0+ZmxhZ3MoKSB8IGNyaWNrZXQ6OlBPUlRB
TExPQ0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1FUkFUSU9OKTsKICAgICAgICAgcG9ydEFsbG9j
YXRvciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2NhdG9yKTsKQEAgLTMzNSw3ICszMzYsNyBAQCBy
dGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNh
dGVHZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGlj
RmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAg
ICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcikKLSAgICAgICAg
ZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+KGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGlu
Z1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5nZXQoKSk7Cisg
ICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFj
dG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5u
ZXR3b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJldHVybiAqZmFjdG9yeUFuZFRocmVhZHMuY2Vy
dGlmaWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCAxNWUyYTg3ODljMDdmYjBkMGFlYzZmNmMyMGY3YmIx
N2ZhOGRiN2QyLi41YjgyNzNiMDg1MTk2ZmZkMzBlNGQ3YTdmNjU1MTBiZWMwODAzMTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKQEAg
LTQ0LDEyICs0NCwxMiBAQCBib29sIExpYldlYlJUQ1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUo
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiBMaWJXZWJS
VENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRGVjb2RlckZhY3RvcnkoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRGVjb2RlckZhY3Rvcnk+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4oKTsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gTGliV2ViUlRDUHJv
dmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5PigpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW1Db2NvYS5jcHAKaW5kZXggODJjYmNiMWM2NmQzMmVhMThjZGViMTY3OTM4ZDY4ZDNi
MTJlNDE5YS4uZjdkODVkYzYwYTYxYTgxNDZkYmEwZDAzZTU1ZDc1NzYyZmU5MGY4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKQEAg
LTE4OCw4ICsxODgsOCBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgcwogICAgICAgICBpZiAoIXJl
bW90ZUlPVW5pdCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2lucHV0RGVzY3Jp
cHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oaW5wdXRE
ZXNjcmlwdGlvbik7Ci0gICAgICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4ob3V0cHV0RGVzY3JpcHRpb24pOworICAgICAg
ICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4oaW5wdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtl
VW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4ob3V0cHV0RGVzY3JpcHRpb24pOwogCiAg
ICAgICAgIG1fZGF0YVNvdXJjZSA9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKGRlc2Ny
aXB0aW9uLnNhbXBsZVJhdGUoKSAqIDIsIHN0cmVhbVRyYWNrKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KaW5kZXggZThlM2QzNDg2ZGE0M2FhYzFkZDU0Yjc4
ZTZiNGRmNGRjOTgxNjc5MC4uNjExYWMxNmI5ZWNiODY4OThhMzcyNjQ3MWM3NjIwNzEyZmI5YjM4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQpAQCAtMTM0LDcg
KzEzNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmlndXJlKCkK
ICAgICBjb25zdCBib29sIGlzTm9uSW50ZXJsZWF2ZWQgPSB0cnVlOwogICAgIEZpbGxPdXRBU0JE
Rm9yTFBDTShtX3N0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSgpLCBjaGFubmVsQ291bnQsIGJpdHNQ
ZXJCeXRlICogYnl0ZXNQZXJGbG9hdCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBpc0Zs
b2F0LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7CiAKLSAgICBtX2F1ZGlvQnVmZmVy
TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX3N0cmVhbUZvcm1h
dCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVDb3VudCk7
CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4o
bV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lICogbV9tYXhpbWl1
bUZyYW1lQ291bnQpOwogCiAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlw
dGlvbjsKICAgICBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoTlVMTCwgJm1fc3RyZWFt
Rm9ybWF0LCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0RGVzY3JpcHRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IGY5
ZGM0YTg0N2Y0YTM1NWQ5Y2NmZjRjZGUwMzA4ZDBkNWM1YzQ0NTYuLjM4OGQ3MWUyNGIyNWViZjZk
Nzc4ODE0ZmRkMGE5NjYzYjE3MDU0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpjb252ZXJ0VG9Z
VVYoQ1ZQaXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1fcGl4ZWxCdWZm
ZXJDb25mb3JtZXIpCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
QHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6
IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKSB9KTsKKyAgICAgICAgbV9waXhlbEJ1ZmZl
ckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBp
eGVsRm9ybWF0VHlwZUtleTogQChwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpIH0pOwogCiAg
ICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNvbnZlcnQocGl4ZWxCdWZmZXIpOwog
fQpAQCAtNzUsNyArNzUsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnJvdGF0ZVBpeGVsQnVmZmVyKAogICAgICAgICBJbnRT
aXplIHNpemUgPSB7IChpbnQpQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSAsIChp
bnQpQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgfTsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZShyb3RhdGlvblRv
QW5nbGUocm90YXRpb24pKTsKLSAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUodHJhbnNmb3JtKSwgc2l6ZSwg
Q1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlciksIEltYWdlUm90YXRp
b25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKKyAgICAgICAgbV9yb3RhdGlv
blNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUodHJh
bnNmb3JtKSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZl
ciksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKICAg
ICB9CiAKICAgICByZXR1cm4gbV9yb3RhdGlvblNlc3Npb24tPnJvdGF0ZShwaXhlbEJ1ZmZlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXggOGUyOWQ3YjgxYTE3M2RmYTUzNzA1ZmExZTYy
YzllODgzYzRmOTUwMi4uZDQ3NjlkNjllNGFmMDQ3MGQ2MmNlOTBiNzU0NDBlMjgyNzY5ZTdjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayBmaW5hbCA6IHB1
YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jayk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2soTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCmlu
ZGV4IDNjNmRlMWM0ZWJlNGVjNzQ3MzU0MGFlY2NiODk3NjJiMTk1NTVjZDQuLjEzODhhZDA1MTMx
MDhiMmViOTJlYzJiYmUyODkzMzY1MmU5OWEwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCkBAIC0zMyw2
ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2sgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyLCBwdWJsaWMgVGlt
ZXJFdmVudEJhc2VkTW9jayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayhjb25zdCBTdHJpbmcmLCBjb25zdCBSVENE
YXRhQ2hhbm5lbEluaXQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9SVENOb3RpZmllcnNNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UlRDTm90aWZpZXJzTW9jay5jcHAKaW5kZXggMmYxZmI1NWVlNjcxZjJmMjI4ZmM1MTUxZDBkZDY5
Y2Y4ZWM2OTVjYi4uMmM3YzQxYmQ2OTZmZjFmOWJhYjM4MzgxYTRiNTgzODU2OGIxOGE0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OlJlbW90ZURhdGFD
aGFubmVsTm90aWZpZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpCiAKIHZvaWQgUmVtb3Rl
RGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSgpCiB7Ci0gICAgbV9jbGllbnQtPmRpZEFkZFJlbW90
ZURhdGFDaGFubmVsKHN0ZDo6bWFrZV91bmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4o
IlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENEYXRhQ2hhbm5lbEluaXQoKSkpOworICAg
IG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChtYWtlVW5pcXVlPFJUQ0RhdGFDaGFu
bmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNoYW5u
ZWxJbml0KCkpKTsKIH0KIAogRGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyOjpEYXRhQ2hhbm5lbFN0
YXRlTm90aWZpZXIoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBjbGllbnQsIFJUQ0RhdGFD
aGFubmVsU3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IDU1OTkzMzgyYjNhMWRjMzZkODM1NmI2MWIyNWM3MDAyZTA3MzQ3ZmUuLjM4
N2EyMWRhZjQ1NTIzOTY4YWVlNGY3OTQxOWQzZDhiODg2OTBkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIE1lZGlhUGxheWVyIEVuaWduZSBTdXBwb3J0CiB2b2lkIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10gKE1lZGlhUGxheWVyKiBwbGF5ZXIp
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBs
YXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5
ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCiAgICAgICAgIHN1cHBvcnRzVHlwZSwg
MCwgMCwgMCwgMCk7CiB9CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBj
b25zdAogICAgIGlmIChtX21lZGlhU291cmNlUHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG1fbWVk
aWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKTsKIH0KIAogYm9vbCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6ZGlk
TG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCBjYzY3Y2U2ODhmM2JjYTIy
MjY5MGI0M2YxMDU4NzhiYTllM2MyOGY4Li45MDUxNDMxNjIxYThjMTA4YTZlZjBmNTFlYjYwZjc3
NGFmY2MwYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0xNTksOSArMTU5LDkgQEAgQmxvYlJlc291cmNl
SGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QKICAgICAsIG1fYXN5bmMgeyBhc3luYyB9CiB7CiAgICAgaWYgKG1fYXN5bmMp
Ci0gICAgICAgIG1fYXN5bmNTdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jRmlsZVN0cmVh
bT4oKnRoaXMpOworICAgICAgICBtX2FzeW5jU3RyZWFtID0gbWFrZVVuaXF1ZTxBc3luY0ZpbGVT
dHJlYW0+KCp0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyZWFtID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWxlU3RyZWFtPigpOworICAgICAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWU8RmlsZVN0
cmVhbT4oKTsKIH0KIAogQmxvYlJlc291cmNlSGFuZGxlOjp+QmxvYlJlc291cmNlSGFuZGxlKCkg
PSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
YXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmNwcAppbmRleCA4MTEyYjk3M2VlZjU0ZWQ3YTVjN2E1MTRjZjEwMmFjOTkxZTc2
NTMzLi5iNTQxZjYyZWUwMDUyMDM2MmMxNTU3ZjdjYTQ5NjRhMjM3Yjg3NDlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIGNsYXNzIERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxEZWNvZGluZ1Jlc3VsdERpc3BhCiAKIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2RlVGFzaz4gY3JlYXRlRGVjb2RlVGFzayhjb25zdCBVUkwmIHVybCwgY29u
c3QgU2NoZWR1bGVDb250ZXh0JiBzY2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RGVjb2RlVGFzaz4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2RlVGFzaz4oCiAgICAgICAg
IHVybC5zdHJpbmcoKSwKICAgICAgICAgc2NoZWR1bGVDb250ZXh0LAogICAgICAgICBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4IGE5ODQzZjUwZTVhNDM0MDNkOGY1MmYwYTk2
N2Y5MDI3ODY1ZThkNTYuLjhkYWVjNTRhMTM0MmRhYjU5YzM1Y2M0OTI3YTAwZmU2MjI5NDk2OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJy
b3JCYXNlLmgKQEAgLTM3LDYgKzM3LDcgQEAgV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIGNvbnN0IGNo
YXIqIGNvbnN0IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWw7IC8vIFVzZWQgZm9yIGUKIFdFQkNP
UkVfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldlYktpdFNlcnZp
Y2VXb3JrZXI7IC8vIFVzZWQgZm9yIGVycm9ycyB0aGF0IGhhcHBlbiB3aGVuIGxvYWRpbmcgYSBy
ZXNvdXJjZSBmcm9tIGEgc2VydmljZSB3b3JrZXIuCiAKIGNsYXNzIFJlc291cmNlRXJyb3JCYXNl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBSZXNvdXJjZUVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDMwYzI3
ZjU3NmExNzdlNmI2YWIxOTQ3NDBhN2Q5MDI1YjY1OWZjYWQuLjZhMzFlM2U1MjdmOGVjOTJkNmY2
MmI5NmNkZDgxOTQ0MTRiNTVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGNvbnN0IEF0b21TdHJp
bmcmIHByb3RvY29sCiB9CiAKIFJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUhhbmRsZUNsaWVudCogY2xpZW50LCBib29sIGRlZmVyc0xvYWRpbmcsIGJvb2wgc2hvdWxk
Q29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKQotICAgIDogZChz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlSGFuZGxlSW50ZXJuYWw+KHRoaXMsIGNvbnRleHQsIHJl
cXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmICYmIHNob3Vs
ZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25p
ZmYpKQorICAgIDogZChtYWtlVW5pcXVlPFJlc291cmNlSGFuZGxlSW50ZXJuYWw+KHRoaXMsIGNv
bnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZm
ICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYpKQogewogICAgIGlmICghcmVxdWVzdC51cmwoKS5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgc2NoZWR1bGVGYWlsdXJlKEludmFsaWRVUkxGYWlsdXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IGRhZDkwMTBmOTU3MGViYzU2NzYzMzU0M2ZkMWZjNTAy
Zjg0NjliOTkuLjcxM2I0ZGZiMzBiMmFmZGZiZWFmZjRlZTUzNzBhMjU0NmZhZDNhNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIENGVVJM
UmVxdWVzdFJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjp3aWxsU2VuCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAg
ICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZCht
YWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUu
d2FpdCgpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAg
fTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsK
KyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
V1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMjI2LDcgKzIyNiw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNz
YWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1
ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7
CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpA
QCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgfTsKICAgICAK
ICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAg
ICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihX
VEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1v
dmUod29yaykpOwogfQpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbChDRkVycm9yUmVm
CiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVl
dWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zMTEsNyArMzExLDcgQEAgQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjoKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAg
ICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtl
VW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2Fp
dCgpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nCiAgICAgfTsK
IAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAg
ICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+
KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RG
TW92ZSh3b3JrKSk7CiB9CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRTZW5kQm9keURhdGEo
Q0YKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM4MCw3ICszODAsNyBAQCBCb29sZWFuIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNh
blJlc3BvbmRUb1BybwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAg
ICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1h
a2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53
YWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggYzliNTNlMzEyYWQ4NTU3NmQzNjZl
ZjRkYzUzNzQzOTFmZThjNjkwYy4uYmE1NWYwMDQ4YjhlNGRkYzViMDczNGQ5OTNkYzliMTNiOGNi
MmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNTIzLDcgKzUyMyw3IEBAIC0gKHZv
aWQpX3Jlc3RhcnQKIAogICAgIF9yZXNvdXJjZSA9IHNlbGYuc2Vzc2lvbi5sb2FkZXIucmVxdWVz
dFJlc291cmNlKHNlbGYub3JpZ2luYWxSZXF1ZXN0LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGluZyk7CiAgICAgaWYgKF9yZXNvdXJjZSkKLSAg
ICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2tDbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3Jlc291cmNlLT5zZXRDbGll
bnQobWFrZVVuaXF1ZTxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ+KHNlbGYpKTsK
IH0KIAogLSAodm9pZClfY2FuY2VsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBhNDVhNWY0ZTRhMDI4ZmU2ZTdmMmRm
Yjc1ZWMyYzhhZWM5M2VkMmJiLi4xMDE2MjRmMjkwMGE5NGNjN2QxYTg5OTg5Njc2ZDZiNDVhYjdm
YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBPcHRpb25hbDxWZWN0b3I8Q29va2ll
Pj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dAogICAgICAgICAiQU5EICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9CID8pKSAiXAogICAg
ICAgICAiT1JERVIgQlkgbGVuZ3RoKHBhdGgpIERFU0MsIGxhc3R1cGRhdGVkIjsKIAotICAgIGF1
dG8gcHN0bXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwg
c3FsKTsKKyAgICBhdXRvIHBzdG10ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0
YWJhc2UsIHNxbCk7CiAgICAgaWYgKCFwc3RtdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIApAQCAtNTY2LDcgKzU2Niw3IEBAIGJvb2wgQ29va2llSmFyREI6OmRlbGV0ZUFsbENvb2tp
ZXMoKQogCiB2b2lkIENvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0
cmluZyYgc3FsKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxp
dGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtl
VW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpbnQgcmV0ID0g
c3RhdGVtZW50LT5wcmVwYXJlKCk7CiAgICAgQVNTRVJUKHJldCA9PSBTUUxJVEVfT0spOwogICAg
IG1fc3RhdGVtZW50cy5hZGQoc3FsLCBXVEZNb3ZlKHN0YXRlbWVudCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAppbmRleCAwYzAz
ZTlkNjkyYzdmNmRjNjEzMDg2ZmYyNTVjMjBlNWM2YmJlOWU5Li4yNjg3YWU3NGZiOWQ5OTQyOTcy
YmVkY2FjNmFiOWIxMTU5YTdlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIGNsYXNz
IENvb2tpZUFjY2VwdFBvbGljeSB7CiB9OwogCiBjbGFzcyBDb29raWVKYXJEQiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29va2llSmFy
REIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggZmE1YzhkMmQyMWI2MjczODE1
ZDAyM2E0ZjIwNDU1MDE2ZTk2MzhhZi4uZTJiNGI1ZGZiZGE2MmEzYzBjYjZiZjkxODFiYmQ2OGZk
N2E0YTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgLS1lbmQ7IC8vIExhc3QgbGluZSBp
cyBlbXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IGl0
LT5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtl
X3VuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKKyAgICAg
ICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVVuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxs
cHRyLCBtX2NhY2hlRGlyKTsKIAogICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAm
JiBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1fc3RvcmFnZVNpemVMaW1pdCkgewogICAgICAg
ICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUmIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYKIAogICAgICAgICBpbnZh
bGlkYXRlQ2FjaGVFbnRyeSh1cmwpOyAvLyBJbnZhbGlkYXRlIGV4aXN0aW5nIGVudHJ5IG9uIDIw
MAogCi0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hl
RW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9
IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CiAgICAg
ICAgIGJvb2wgY2FjaGVhYmxlID0gY2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVz
cG9uc2UpOwogICAgICAgICBpZiAoY2FjaGVhYmxlKSB7CiAgICAgICAgICAgICBjYWNoZUVudHJ5
LT5zZXRJc0xvYWRpbmcodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3ZDE3MjE3YzJlNDQyYWM2ZjNkZThj
NGI2MGE5NTI2YzlmNjU4NDJhLi43YjA0ZmEyNmE0MmFiOTc4YWUwN2JkMzFmMGU2OTE1NTFiYmM0
NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ29udGV4dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBDdXJsQ29udGV4dDo6Q3VybENvbnRl
eHQoKQogICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+KCJXRUJLSVRf
Q1VSTF9NQVhfSE9TVF9DT05ORUNUSU9OUyIpKQogICAgICAgICBtYXhIb3N0Q29ubmVjdGlvbnMg
PSAqdmFsdWU7CiAKLSAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlcXVl
c3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29u
bmVjdGlvbnMpOworICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxDdXJsUmVxdWVzdFNjaGVk
dWxlcj4obWF4Q29ubmVjdHMsIG1heFRvdGFsQ29ubmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9u
cyk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0gZW52VmFyLmRlZmluZWQoIkRF
QlVHX0NVUkwiKTsKQEAgLTMzNiw3ICszMzYsNyBAQCBDVVJMY29kZSBDdXJsSGFuZGxlOjp3aWxs
U2V0dXBTc2xDdHgodm9pZCogc3NsQ3R4KQogICAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9C
WV9DQUxMQkFDSzsKIAogICAgIGlmICghbV9zc2xWZXJpZmllcikKLSAgICAgICAgbV9zc2xWZXJp
ZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOworICAgICAg
ICBtX3NzbFZlcmlmaWVyID0gbWFrZVVuaXF1ZTxDdXJsU1NMVmVyaWZpZXI+KHNzbEN0eCk7CiAK
ICAgICByZXR1cm4gQ1VSTEVfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IGRkNjNh
NGFiNDI3MDNmNmU5NDJmOGVmOTU1MTM2YTg2YmNkZjY2NTEuLjJiNDc3MzZmNmU3MWYxYzQ5Nzgx
YmUxOTQ2YzBiOGUzNmJkNjc1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC03Niw3ICs3
Niw3IEBAIGNvbnN0IFZlY3RvcjxjaGFyPiogQ3VybEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0
YSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFtX3Bvc3REYXRhKQotICAg
ICAgICBtX3Bvc3REYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURh
dGEtPmZsYXR0ZW4oKSk7CisgICAgICAgIG1fcG9zdERhdGEgPSBtYWtlVW5pcXVlPFZlY3Rvcjxj
aGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsKIAogICAgIHJldHVybiBtX3Bvc3REYXRhLmdl
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGE4YmI4ZDgxYTdhYmQ3MTc0M2Jk
Mzk1ZGNjODY2MzE3OWZkZTJkNTUuLmNjZGJiMjgyMzlmMjJjMzYzNmNhYzE0YjA3ODVkNmY1NWFi
MmY1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0
ZUlmTmVlZGVkKEN1cmxNdWwKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+
KGNsaWVudCwgKmJvdW5kYXJ5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0
SGFuZGxlPihjbGllbnQsICpib3VuZGFyeSk7CiB9CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11
bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9u
c2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAppbmRleCAxN2ZlZGRmMGUwODE0ZDVlYWQwNjgyZjZlZjE0Zjc2NWM5MWU1OTA4
Li5jMWQxNTdiZWZmOTQ0NTQ2MzFjZDA1OTYyZjIzMTEzMmZkOGRiOGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAg
LTE4NSw3ICsxODUsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjYWxsQ2xpZW50KEZ1bmN0aW9uPHZv
aWQoQ3VybFJlcXVlc3QmLCBDdXJsUmVxdWVzdENsaWVudCYpPiYmCiB2b2lkIEN1cmxSZXF1ZXN0
OjpydW5Pbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1f
bWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNr
KSkpOwogICAgIGVsc2UgaWYgKGlzTWFpblRocmVhZCgpKQogICAgICAgICB0YXNrKCk7CiAgICAg
ZWxzZQpAQCAtMjA1LDcgKzIwNSw3IEBAIENVUkwqIEN1cmxSZXF1ZXN0OjpzZXR1cFRyYW5zZmVy
KCkKICAgICBhdXRvIGh0dHBIZWFkZXJGaWVsZHMgPSBtX3JlcXVlc3QuaHR0cEhlYWRlckZpZWxk
cygpOwogICAgIGFwcGVuZEFjY2VwdExhbmd1YWdlSGVhZGVyKGh0dHBIZWFkZXJGaWVsZHMpOwog
Ci0gICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsSGFuZGxlPigpOworICAg
IG1fY3VybEhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybEhhbmRsZT4oKTsKIAogICAgIG1fY3VybEhh
bmRsZS0+c2V0VXJsKG1fcmVxdWVzdC51cmwoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3Bw
CmluZGV4IDkxODM3YWY5ZjNlNDc3M2I1YzcxYzFjMjYwZGI5NmY1ODZiMjExYWYuLjNhYTVmNTJk
YjYyN2FiYjBlY2NhZjI5MjEzZGNlMTJmYmM2ZmJjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVy
LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6Ondvcmtl
clRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2N1cmxN
dWx0aUhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRpSGFuZGxlPigpOworICAgIG1f
Y3VybE11bHRpSGFuZGxlID0gbWFrZVVuaXF1ZTxDdXJsTXVsdGlIYW5kbGU+KCk7CiAgICAgbV9j
dXJsTXVsdGlIYW5kbGUtPnNldE1heENvbm5lY3RzKG1fbWF4Q29ubmVjdHMpOwogICAgIG1fY3Vy
bE11bHRpSGFuZGxlLT5zZXRNYXhUb3RhbENvbm5lY3Rpb25zKG1fbWF4VG90YWxDb25uZWN0aW9u
cyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heEhvc3RDb25uZWN0aW9ucyhtX21heEhv
c3RDb25uZWN0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDdiZTAwYWQzNGI4ZTU5
ODgyZGUwZjUxM2I2YzJkZGY5MDExZjk5ZTEuLjdkNGE3MmZkODc1NTc2ZDlhNTk4YWExNTg0MDRl
ODlmMTI0ZDcwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAg
UmVmPEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmUKIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKiBSZXNv
dXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICghZC0+bV9kZWxlZ2F0ZSkKLSAgICAg
ICAgZC0+bV9kZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU+KCp0aGlzKTsKKyAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8Q3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKIAogICAgIHJldHVybiBkLT5tX2RlbGVnYXRl
LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggYTM2
N2ZkYTYyYTZkMjEyYTQ5NTVlNjg4OWM2NTcyMGM5ZWZhZjIxYi4uMTNhODMyYzI2NjliNGNlOGNi
ZWJmMzEzNGJhMDg5ZDkwMmRmYTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1
cmwuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpz
dG9wVGhyZWFkKCkKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhy
ZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgbV90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgIG1fdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVl
PEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpleGVjdXRlVGFza3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDVhMDZmMmVmODll
ZjVjMjFiZTE1N2M3MWRhMTQxOWVjODQ4MDllZjcuLjc2NTQzYWQxNmMxNDk0ODU4ODIyOTkxZjMw
NWZmN2EzM2UxN2FlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogY2xhc3MgUHJldmlld0Nv
bnZlcnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6CiAgICAgUHJldmlld0NvbnZlcnRl
cihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFmMTg3YjUwNzY1YTlkMTdj
MmVjNGVjODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdjZWMxZTJmZjZlNzNmMjRj
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZCljYWxsRnVuY3Rp
b25Pbk1haW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogewogICAgIC8vIFN5
bmMgeGhyIHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQot
ICAgICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1
bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgICAgIHJldHVybiBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShm
dW5jdGlvbikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlLgogICAgIGlmICgh
c2NoZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVkUGFpcnMpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29s
dmVRdWV1ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3MTkzNGZlYzM3NjNhNWE0
YTgyZDkuLmVlNDRkODlkMTk5ODU0NjhiN2FlYTFlNzVhNDQyMzBlMjc2ODIwNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVz
b2x2ZVF1ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEROU1Jlc29sdmVRdWV1
ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmll
ciwgRAogCiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJp
ZGVudGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CiAKLSAgICBtX2NvbXBs
ZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxE
TlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworICAgIG1fY29tcGxl
dGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPEROU1Jlc29s
dmVRdWV1ZVNvdXA6OkNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIFdURk1vdmUoY2FuY2VsbGFibGUpKSk7CiB9CiAKIHZvaWQgRE5TUmVzb2x2
ZVF1ZXVlU291cDo6c3RvcFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBlNGM4YjBmMTNlNmQwODlhNTg5MmFhN2FlMGE5
YjgyMTU4NWJiOWE0Li43YjI4ZjI2YjUzODRjYjRiZDViZmQ2NzU3MDdjZjJiZmZkNWYwNzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAg
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0
b3JhZ2UoY29uc3QgUHJvdGVjdGlvblMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1
dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjcmV0U2VydmljZVNlYXJjaERhdGE+KGNhbmNl
bGxhYmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBkYXRhID0gbWFr
ZVVuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICBzZWNyZXRfc2VydmljZV9zZWFyY2gobnVsbHB0ciwgU0VD
UkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwKICAgICAgICAgc3Rh
dGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5MT0NLIHwgU0VDUkVU
X1NFQVJDSF9MT0FEX1NFQ1JFVFMpLCBjYW5jZWxsYWJsZSwKICAgICAgICAgW10oR09iamVjdCog
c291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCmluZGV4IDEwZmVjYmM0MTk0
Nzk1ZjMyZDFjYTdlNzYwOWFjNGZmMjA5MmNkMjMuLmFhZmVkM2RlNzliOTlhYWM0NzY5Yzc2YjU1
ZjZjMWNiYjY2MWI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVz
b2x2ZXIuaApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyQmFzZTxJdGVyYXRv
ciwgUnVuLCBEZXJpdmVkQ2xhc3M+OjphcHBlbmRSdW5JbnRlcm5hbCgpCiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoZW5kT2Zmc2V0ID49IHN0YXJ0T2Zmc2V0KQotICAgICAgICAgICAgbV9ydW5z
LmFwcGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAr
IDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKKyAgICAgICAgICAgIG1fcnVucy5hcHBlbmRS
dW4obWFrZVVuaXF1ZTxSdW4+KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgKyAxLCBjb250ZXh0KCks
IG1fZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5jcmVtZW50KCk7CiAgICAgICAgIG1f
c29yID0gbV9lb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xv
Y2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAK
aW5kZXggNTllMWZjNzJhMmJmMjk2OTQ1YTg2Zjg1NTJiODYzNzZhOWVhNTg2ZC4uMmM4Y2NlNzMw
ODhmYTVhZDBjZjU5NTljY2U0Zjk2OTFiZjM1N2EwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
aWN1OwogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlSUNV
Pihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIExvY2FsZUlD
VTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAgLTE2MywyMiArMTYzLDIyIEBAIHN0
YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29uc3QgVURhdGVGb3JtYXQqIGRhdGVG
b3JtYXQpCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRl
TGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQsIFVEYXRlRm9ybWF0U3lt
Ym9sVHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSkKIHsKICAgICBp
ZiAoIWRhdGVGb3JtYXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxT
dHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsK
ICAgICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSkgIT0gc3RhcnRJbmRl
eCArIHNpemUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAotICAg
IGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBh
dXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5y
ZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAg
ICBpbnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFy
dEluZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChzdGF0dXMgIT0gVV9CVUZG
RVJfT1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxT
dHJpbmc+PigpOwogICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihsZW5ndGgpOwogICAgICAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9y
bWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCAmc3RhdHVz
KTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoU3RyaW5n
OjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICB9CiAgICAgcmV0dXJuIFdURk1vdmUobGFi
ZWxzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+
IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqCiAKIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrTW9udGhMYWJl
bHMoKQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5n
Pj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAg
ICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVs
bE5hbWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChX
VEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+YXBwZW5kKFdURjo6bW9u
dGhGdWxsTmFtZVtpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxz
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9
IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNp
dHkoMik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIkFNIik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIlBN
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAppbmRleCBi
YjZiMjZiYTU5Y2IzNmI5ODliN2U2ZjU4NjMwYzdhN2IzYjU2ZWE3Li43ODE1YTQ3OGUwMjk3NDU1
OTY1NzZjMmRlZDIyMTE5MzZhYTk2YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlTm9uZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgTG9jYWxlTm9uZSA6IHB1
YmxpYyBMb2NhbGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShj
b25zdCBBdG9tU3RyaW5nJikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVO
b25lPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZU5vbmU+KCk7CiB9CiAKIExvY2Fs
ZU5vbmU6On5Mb2NhbGVOb25lKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmluZGV4IGY4ZTE2NzA4NDlhOTU4OThhMTQ1N2JjOThk
YTkxZTRiZGU3ODRjNzkuLmU1ZjI4MTY2YzZkZDM0YmM1MzUwOWI2YTAwMjBhODg4OTA3YzJjZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKQEAg
LTE1Niw0MyArMTU2LDQzIEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyhUZXh0
Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICAvLyBodHRwOi8vZGVtby5pY3UtcHJv
amVjdC5vcmcvaWN1LWJpbi9jb252ZXhwCiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ3aW5k
b3dzLTg3NCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3
aW5kb3dzLTg3NC0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4
dENvZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1l
LCAid2luZG93cy05NDkiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihu
YW1lLCAid2luZG93cy05NDktMjAwMCIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJj
bXAobmFtZSwgIngtbWFjLWN5cmlsbGljIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1l
LCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY0lDVT4obmFtZSwgIm1hY29zLTdfMy0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEwLjIiKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCFzdHJjbXAobmFtZSwgIngtbWFjLWdyZWVrIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihu
YW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTZfMi0xMC40Iik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8yLTEwLjQiKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWNlbnRyYWxldXJyb21hbiIpKSB7CiAgICAgICAgICAg
ICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMjkt
MTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtdHVya2lzaCIpKSB7CiAgICAgICAg
ICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4yIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3Mt
MzUtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiRVVDLUtSIikpIHsKICAgICAgICAgICAg
IHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5Iik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDki
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAg
LTIwMSw3ICsyMDEsNyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJDb2RlY3MoVGV4dENv
ZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgY29uc3QgY2hhciogY2Fub25pY2FsQ29u
dmVydGVyTmFtZSA9IHVjbnZfZ2V0Q2Fub25pY2FsTmFtZShuYW1lLCAiSUFOQSIsICZlcnJvcik7
CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1MoZXJyb3IpKTsKICAgICAgICAgcmVnaXN0cmFyKG5h
bWUsIFtuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lXSB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5h
bWUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCBj
YW5vbmljYWxDb252ZXJ0ZXJOYW1lKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCmluZGV4IDkzMTQ1
MzMyOGE2ZjY2OTQ4NWVlMDFmOGE0ZTJjZWRlNTAyNjc3ZmYuLjkyYzY2MTNjYjFmY2MwZTMwOGE3
M2MzNTBhOWUwN2VmNzczNDYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBUZXh0Q29kZWNM
YXRpbjE6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0
cmFyKQogdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lz
dHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ3aW5kb3dzLTEyNTIiLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0xhdGluMT4oKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1l
bnQuY3BwCmluZGV4IDE3NjViZjc5MjE1OTc1YjE1N2M4YjNmNzRjNTU3MmM0NzFlMjExNDEuLmM4
YjU1OGM4Y2EyZDNhZmQzMDIxNGJjZmMzN2ExNDU3NzU2YTEzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyRW5jb2RpbmdO
YW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1JlcGxh
Y2VtZW50OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewog
ICAgIHJlZ2lzdHJhcigicmVwbGFjZW1lbnQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCBiZTAwNjU2NDQ2
NDhmY2UwYzM3OWQzYzc0M2VlMjI3ZWE5ZWRhNmY0Li45MGM0NDc1ZDAyMGI5ZjQ3MWI1YmU3N2Mz
Y2FhYzBmZGM5OGNiYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjE2LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBAIHZvaWQgVGV4dENvZGVjVVRGMTY6
OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQog
dm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJl
Z2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi0xNkxFIiwgW10gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKICAgICB9KTsKICAgICByZWdpc3Ry
YXIoIlVURi0xNkJFIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
Q29kZWNVVEYxNj4oZmFsc2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNV
VEYxNj4oZmFsc2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCBhM2RhZDRlOWQxNjM3Njg2MzA4OGIxOTcxMGY4
MzlkYmJmZmVhOGRkLi5lMWQwYTUzYzcxN2FhZTczOTkzOWY1MWM0ZDMyOTM0NWFmODljYWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckVuY29kaW5nTmFtZXMo
RW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjVVRGODo6cmVn
aXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3Ry
YXIoIlVURi04IiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29k
ZWNVVEY4PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VzZXJEZWZpbmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjVXNlckRlZmluZWQuY3BwCmluZGV4IDI5NmM0NjlmMTY5ZmI5MTFkYzhkYmQ3YTY0N2Vh
NTY0MWUyZmZlMTkuLjQ4YWRiYTlkNGIxYTdhOWE2NThhZWY5ZGZhZGY4NWFkZGU5ZGNmNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmlu
ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRl
ZmluZWQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgVGV4dENvZGVjVXNlckRlZmluZWQ6OnJl
Z2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lk
IFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIg
cmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigieC11c2VyLWRlZmluZWQiLCBbXSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVkPigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVc2VyRGVmaW5lZD4oKTsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCmlu
ZGV4IGE1MTdiZTM0MWY2YWM0YmU4ZTg5M2NmYWQ3YzIyODg0NWQ2YTgyODAuLjJiM2QwM2EzOGE1
ZDIwMWJiNmRjYjhlYmU0NGY0NmZlZWZjNjdlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIFJldGFp
blB0cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBs
b2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlTWFjPihkZXRlcm1p
bmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CiB9CiAK
IHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVEYXRlVGltZUZvcm1hdHRl
cihOU0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFyKiBjYWxlbmRhciwgTlNEYXRlRm9ybWF0dGVy
U3R5bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSB0aW1lU3R5bGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCA2YTE2MGRl
Y2NmYzkyNmFlZjM3ZGUyM2U5N2Y2MmU4ZjVjNjc5MDZhLi5hYTAwYTRhZDZmNWI1OTk4MmI2YjQ3
NzMxNzFjOGJjN2MwMzM5MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
d2luL0xvY2FsZVdpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21M
b2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxl
PiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlV2luPihMQ0lERnJvbUxvY2FsZShsb2NhbGUpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOwog
fQogCiBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKaW5kZXggYWY0Njkx
MzkwODFlODBjMTIwN2I4MmM5N2ZkZmEzYzc3MjFhNjUxMS4uMmNlYjQ3NWU1ZmFlYmI2NzBjNzQx
NDQ3NWE0NzI5MjQ5NTJkY2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIFVJTlQg
Z2V0Q29kZVBhZ2UoY29uc3QgY2hhciogbmFtZSkKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxU
ZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBj
b25zdCB2b2lkKikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNXaW4+
KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRl
eHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CiB9CiAKIFRleHRDb2Rl
Y1dpbjo6VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNw
cAppbmRleCBkMWRjNjczNjg2ZjY1MWUzZTAzMjkxYjdjMDJjMzFiMGMxNjliYmMyLi5lN2NmNzEz
N2UzM2FhNTViZjdlNTg1ZWUxNjRlNjczZDNhYWVlYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5W
Ui5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZSUGxhdGZvcm1NYW5hZ2Vy
T3BlblZSPiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Y3JlYXRlKCkKICAgICBpZiAoIXZyOjpW
Ul9Jc1J1bnRpbWVJbnN0YWxsZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4oKTsKIH0KIAogVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlI6On5WUlBsYXRmb3JtTWFuYWdlck9wZW5WUigpCkBAIC03OCw3ICs3
OCw3IEBAIFZlY3RvcjxXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gVlJQbGF0Zm9ybU1hbmFn
ZXJPcGVuVlI6OmdldFZSRGlzcGxheXMoKQogCiAgICAgVmVjdG9yPFdlYWtQdHI8VlJQbGF0Zm9y
bURpc3BsYXk+PiBkaXNwbGF5czsKICAgICBpZiAoIW1fZGlzcGxheSkKLSAgICAgICAgbV9kaXNw
bGF5ID0gc3RkOjptYWtlX3VuaXF1ZTxWUlBsYXRmb3JtRGlzcGxheU9wZW5WUj4obV9zeXN0ZW0s
IGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CisgICAgICAgIG1fZGlzcGxheSA9IG1ha2VVbmlxdWU8
VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNvbXBvc2l0b3Ip
OwogICAgIGRpc3BsYXlzLmFwcGVuZChtYWtlV2Vha1B0cigqbV9kaXNwbGF5KSk7CiAgICAgcmV0
dXJuIGRpc3BsYXlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwCmluZGV4IGFiYWRkYzdmYmNhMjM1OWVmZjViOTgxMWMxOTVmNmI1YWJjMWJhODMu
LjE2OTc4NTVmZTcyZjYzN2U2NWFkNDc3NzJhZmE2MWM3NDcxOTI0NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
c3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgUGFzdGVib2FyZE93bmVyV25kUHJvYyhIV05EIGhXbmQs
IFVJTlQgbWVzc2FnZSwgV1BBUkFNIHcKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgYXV0byBwYXN0ZWJvYXJk
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIGF1dG8gcGFzdGVib2FyZCA9
IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKTsKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGNsaXBi
b2FyZERhdGE7CiAgICAgaWYgKCFTVUNDRUVERUQoT2xlR2V0Q2xpcGJvYXJkKCZjbGlwYm9hcmRE
YXRhKSkpCiAgICAgICAgIGNsaXBib2FyZERhdGEgPSAwOwpAQCAtMTA2LDE2ICsxMDYsMTYgQEAg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKCkKIHsKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBkYXRhT2JqZWN0OwogICAgIFdDRGF0
YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFPYmplY3QpOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRhdGFPYmplY3QuZ2V0KCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBhc3RlYm9hcmQ+KGRhdGFPYmplY3QuZ2V0KCkpOwogfQogCiAvLyBzdGF0aWMKIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKGRyYWdEYXRhLnBsYXRmb3Jt
RGF0YSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFn
RGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9h
cmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICAvLyBGSVhNRTogU2hvdWxkIGFkZCBh
IGNvbnN0IG92ZXJsb2FkIG9mIGRyYWdEYXRhTWFwIHNvIHdlIGRvbid0IG5lZWQgYSBjb25zdF9j
YXN0IGhlcmUuCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oY29uc3Rf
Y2FzdDxEcmFnRGF0YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPihjb25zdF9jYXN0PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdE
YXRhTWFwKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCmluZGV4IDE5NjQ5YzU2NmNmY2Y1ZjQyNDMwOWQxZDhk
MTAwYjBiNGZmNzcwYTguLjZmN2Y0YmExNjYwYjRmN2E5NzcyMTJjODU2M2E0M2M2NjVlMzBiNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVE
Qi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURC
LmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIGludCBTZWFyY2hQb3B1cE1lbnVEQjo6ZXhlY3V0ZVNp
bXBsZVNxbChjb25zdCBTdHJpbmcmIHNxbCwgYm9vbCBpZ25vcmVFcnJvcikKIAogc3RkOjp1bmlx
dWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gU2VhcmNoUG9wdXBNZW51REI6OmNyZWF0ZVByZXBhcmVk
U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0
byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3Fs
KTsKICAgICBpbnQgcmV0ID0gc3RhdGVtZW50LT5wcmVwYXJlKCk7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXQsIHJldCA9PSBTUUxJVEVfT0spOwogICAgIHJldHVybiBzdGF0ZW1lbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwCmluZGV4IGRiZjk5YTQ1Y2U3
MDNhOWQ4NTdhMGU2MDE5ZDY4MDZkZDExZmExN2IuLmM5N2E3ZWJhYWFiZGQ4ZTI2MjlhYTM3N2U3
MjY3ZWJkN2M4NTEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9X
Q0RhdGFPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFP
YmplY3QuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgU1RETUVUSE9ESU1QIFdDRGF0YU9iamVjdDo6
U2V0RGF0YShGT1JNQVRFVEMqIHBmb3JtYXRldGMsIFNUR01FRElVTSogcG1lZGl1bSwgQk8KICAg
ICBpZiAoIXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CiAKLSAgICBhdXRvIGZldGMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZPUk1BVEVUQz4oKTsKKyAgICBh
dXRvIGZldGMgPSBtYWtlVW5pcXVlPEZPUk1BVEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAg
ICAgWmVyb01lbW9yeShmZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IGMwMDRmYzllNzA0YTZhZDMyMzQ5ZmI4MjRj
ZGM1ZGRkMDM2MDFiNWMuLjQ3OTgxYWU2OTkxZGM2NDkxNTIwZmM4MjQzMmVjYzQ5NTg2NDQzZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0xMTEsNyArMTExLDcg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdDsKIAotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVp
bGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKKyAgICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNW
R0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0VmZmVjdCk7CiAgICAgbV9zb3VyY2VBbHBoYSA9IGJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSk7CiAKICAgICBm
b3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAppbmRleCAwMTMzNzg3ZDlkMzA2MmIxY2E3OWIx
NjA3OTYzZjIwYzEwNzFlZDUzLi5iZDNjOWJlZTg3Mjk4NmVjNjFiMWEzMGEwNDk1YjhjMGEyNmZk
NjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHko
VGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVyKQogCiBpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPEJpZGlSdW4+IGNyZWF0ZVJ1bihpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9i
amVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4
dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmlkaVJ1bj4oc3Rh
cnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKIH0KIAog
dm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxC
aWRpUnVuPiogcnVucywgaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QmIG9iaiwgSW5s
aW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKQEAgLTEzMCwxMiArMTMwLDEyIEBAIHZvaWQgQ29t
cGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNGb3JPYmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4q
IHJ1bnMsIGludCBzdGFyCiBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4gQ29tcGxleExp
bmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKQogewogICAgIGlmIChpczxSZW5kZXJTVkdU
ZXh0PihtX2Zsb3cpKSB7Ci0gICAgICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdS
b290SW5saW5lQm94Pihkb3duY2FzdDxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKTsKKyAgICAgICAg
YXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25jYXN0PFJlbmRlclNW
R1RleHQ+KG1fZmxvdykpOwogICAgICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0
KCk7CiAgICAgICAgIHJldHVybiBib3g7CiAgICAgfQogICAgICAgICAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiB9CiAKIFJvb3RJbmxpbmVCb3gqIENvbXBsZXhM
aW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkKQEAgLTEwODUsNyArMTA4
NSw3IEBAIGlubGluZSBCaWRpUnVuKiBDb21wbGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdT
cGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpCiAgICAgICAgIHdoaWxlIChCaWRpQ29udGV4
dCogcGFyZW50ID0gYmFzZUNvbnRleHQtPnBhcmVudCgpKQogICAgICAgICAgICAgYmFzZUNvbnRl
eHQgPSBwYXJlbnQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IG5ld1RyYWls
aW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNlLCB0cmFpbGluZ1Nw
YWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVyKCksIGJhc2VDb250ZXh0
LCBVX09USEVSX05FVVRSQUwpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3
VHJhaWxpbmdSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3Bh
Y2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQs
IFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZp
cnN0U3BhY2U7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4gPSBuZXdUcmFpbGluZ1J1bi5nZXQo
KTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCkBAIC0xNjE3
LDcgKzE2MTcsNyBAQCB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVk
ZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAgICAgICAgaWYgKGxheW91dFN0YXRl
LmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQg
Ym90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tVmlzdWFs
T3ZlcmZsb3coKTsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tTGF5b3V0T3ZlcmZsb3cg
PSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3coKTsKLSAgICAgICAg
ICAgIGF1dG8gbmV3TGluZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhaWxpbmdGbG9hdHNSb290
SW5saW5lQm94PihtX2Zsb3cpOworICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94ID0gbWFrZVVu
aXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiAgICAgICAgICAgICBh
dXRvIHRyYWlsaW5nRmxvYXRzTGluZUJveCA9IG5ld0xpbmVCb3guZ2V0KCk7CiAgICAgICAgICAg
ICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94KFdURk1vdmUobmV3TGluZUJveCkpOwogICAgICAg
ICAgICAgdHJhaWxpbmdGbG9hdHNMaW5lQm94LT5zZXRDb25zdHJ1Y3RlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA0Y2RkMTM5YzQ4NzUx
NmVhMGU3YjEyMTNiNzAzYmQzNDI3YWIwMThjLi5hNmM2NDgxOGM0OTc0NTYwOTBmNjYyM2MzMDRi
NWQ2Mjc3MDdhZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRp
bmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmpl
Y3RzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3Qo
UmVuZGVyQm94JiByZW5kZXJlciwgVHlwZSB0eXBlLCBjb25zdCBMYXlvdXRSZWN0JgogCiBzdGQ6
OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVy
Qm94JiByZW5kZXJlcikKIHsKLSAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKKyAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8Rmxv
YXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKICAgICBvYmplY3QtPnNldFNob3VsZFBhaW50KCFyZW5k
ZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBleGlzdHMsIHRoZSBm
bG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgogICAg
IG9iamVjdC0+c2V0SXNEZXNjZW5kYW50KHRydWUpOwogICAgIHJldHVybiBvYmplY3Q7CkBAIC04
MywxMiArODMsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09i
amVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVuZGVyZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9h
dGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lcihMYXlvdXRTaXpl
IG9mZnNldCwgYm9vbCBzaG91bGRQYWludCwgYm9vbCBpc0Rlc2NlbmRhbnQpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5
cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJl
Y3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUo
KSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3Qo
KS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNsb25l
Rm9yTmV3UGFyZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNsb25lT2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwg
bV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKKyAgICBhdXRv
IGNsb25lT2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlw
ZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNj
ZW5kYW50KTsKICAgICBjbG9uZU9iamVjdC0+bV9wYWdpbmF0aW9uU3RydXQgPSBtX3BhZ2luYXRp
b25TdHJ1dDsKICAgICBjbG9uZU9iamVjdC0+bV9pc1BsYWNlZCA9IG1faXNQbGFjZWQ7CiAgICAg
cmV0dXJuIGNsb25lT2JqZWN0OwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgRmxvYXRpbmdPYmpl
Y3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSgpCiAgICAgaWYgKG1fc2V0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CisgICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gbWFr
ZVVuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zZXQu
YmVnaW4oKSwgZW5kID0gbV9zZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBG
bG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChm
bG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRl
eCBjNzJkMDFkODFjN2Q3MTY2MTU3OWUzYmEwMTgzMGU0MjlkMzBmNjg4Li4xZTkxMWFlNjBhNjEy
Njg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4N2UyOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3Bw
CkBAIC0yMzMsNyArMjMzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0
b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1
bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVt
bnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlp
bmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRl
eCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3Bhbikp
IHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFu
KG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWRE
ZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFu
KSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VV
bmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jv
d0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5p
dGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwog
ICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUg
bG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92
ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxp
bmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFs
aWdubWVudC5jcHAKaW5kZXggNWZjMzI4MTUzYTZkOGJmYzQ4ODNiYTUxMjFjY2EwYmY2ZjJlOTlk
MC4uNjYwOTA5OGY5Yzg3MDQ2ODgxMTQxOGFiMTc4Mjk0MTdiZWUyZDE5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKQEAgLTEz
NCw3ICsxMzQsNyBAQCB2b2lkIEdyaWRCYXNlbGluZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVB
bGlnbm1lbnRDb250ZXh0KEl0ZW1Qb3NpdGlvbiBwcmVmZXJlbgogCiAgICAgLy8gTG9va2luZyBm
b3IgYSBjb21wYXRpYmxlIGJhc2VsaW5lLXNoYXJpbmcgZ3JvdXAuCiAgICAgaWYgKGFkZFJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRl
c2NlbnQpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxC
YXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOwogICAg
IGVsc2UgewogICAgICAgICBhdXRvKiBjb250ZXh0ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKICAgICAgICAgY29udGV4dC0+dXBkYXRlU2hhcmVkR3JvdXAoY2hpbGQsIHByZWZl
cmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCmluZGV4IGFkZGVkYzQyOGIxZjJmZGIz
NTAzZTgxMjYyNmI5NzY5M2EzZTdiNWYuLmIyYjAxMWJkZjc0OTFiMzVhYjFkYmI3YWM2YjI2Mzk2
MTcyMWNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC02ODEsNyArNjgxLDcgQEAgZG91YmxlIEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0U2l6ZShjb25zdCBWZWN0b3I8
R3JpZFRyYWMKICAgICAgICAgICAgIGxlZnRPdmVyU3BhY2UgLT0gYmFzZVNpemU7CiAgICAgICAg
ICAgICBmbGV4RmFjdG9yU3VtIC09IGZsZXhGYWN0b3I7CiAgICAgICAgICAgICBpZiAoIXRyYWNr
c1RvVHJlYXRBc0luZmxleGlibGUpCi0gICAgICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5m
bGV4aWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAg
ICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gbWFrZVVuaXF1ZTxUcmFja0luZGV4U2V0
PigpOwogICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZS0+YWRkKGluZGV4KTsK
ICAgICAgICAgICAgIHZhbGlkRmxleEZhY3RvclVuaXQgPSBmYWxzZTsKICAgICAgICAgfQpAQCAt
MTI2MCwxMCArMTI2MCwxMCBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXAo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZQogICAgIG1fc2l6aW5n
T3BlcmF0aW9uID0gc2l6aW5nT3BlcmF0aW9uOwogICAgIHN3aXRjaCAobV9zaXppbmdPcGVyYXRp
b24pIHsKICAgICBjYXNlIEludHJpbnNpY1NpemVDb21wdXRhdGlvbjoKLSAgICAgICAgbV9zdHJh
dGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZWZpbml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOwor
ICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVuaXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5Pigq
dGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHJhY2tTaXppbmc6Ci0gICAgICAgIG1f
c3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7
CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5Pigq
dGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDczYjM2NTQ3NjcxNDBhMDM3MGU0ZDU2OTU2ZTU0ZjI2
NzRiNThiMzYuLmIzYzQwMDc5MDJkZjYwNDg2MmE1YWM3YzI5OThjYmFkNzNmMTEyZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTk2LDcgKzk2LDcg
QEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhl
cikKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90aGVyLmlzT3ZlcldpZGdldCgpKQogewogICAgIC8v
IE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIGxpc3QgaGl0IHRlc3QuCi0gICAgbV9s
aXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjpt
YWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxw
dHI7CisgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVz
dWx0ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6
IG51bGxwdHI7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6On5IaXRUZXN0UmVzdWx0KCkgPSBkZWZhdWx0
OwpAQCAtMTEzLDcgKzExMyw3IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJh
dG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICBtX2lzT3ZlcldpZGdldCA9IG90
aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNh
c2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5t
X2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5t
X2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpv
dGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIAogICAgIHJldHVybiAqdGhp
czsKIH0KQEAgLTY5MCwxNCArNjkwLDE0IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNv
bnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxCiBjb25z
dCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVz
dWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAg
bV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAg
ICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAg
cmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6Ok5vZGVT
ZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KCkKIHsKICAgICBp
ZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RS
ZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRl
c3RSZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgK
aW5kZXggNDNjNjUzODc2Y2Y5ODRhNjJiNmZjOTI5NDVkM2RkNjkwY2EzZWRiOS4uMTVmZGU1NGRl
NWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRl
cikKIC8vIG9mIEJpZGlSZXNvbHZlciB3aGljaCBrbm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9i
amVjdHMuCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElu
bGluZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBSZW5kZXJPYmplY3QmIG9iaiwgdW5z
aWduZWQgcG9zLCBSZW5kZXJFbGVtZW50JiByb290KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxC
aWRpUnVuPiBpc29sYXRlZFJ1biA9IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocG9zLCBwb3Ms
IG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0gbWFrZVVuaXF1ZTxCaWRpUnVuPihwb3MsIHBv
cywgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKICAgICAvLyBGSVhN
RTogaXNvbGF0ZWRSdW5zKCkgY291bGQgYmUgYSBoYXNoIG9mIG9iamVjdC0+cnVuIGFuZCB0aGVu
IHdlIGNvdWxkIGNoZWFwbHkKICAgICAvLyBBU1NFUlQgaGVyZSB0aGF0IHdlIGRpZG4ndCBjcmVh
dGUgbXVsdGlwbGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgaW5saW5lLgogICAgIHJlc29sdmVyLnNl
dFdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlvbkZvcklzb2xhdGVkUnVuKCppc29sYXRlZFJ1
biwgcmVzb2x2ZXIud2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSgpLmN1cnJlbnRUcmFuc2l0aW9u
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1h
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAppbmRl
eCAyODVhYTVmOWZlOWJhZTdkZmM4NTI4YzI0YzFkNTU2N2Q0MTI5ZmYzLi45NmFmOTVhNDU1Njk1
MGU4MTI2Yjk1MzczNTM0ZDQ3NmRhZTM1NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVjdExpc3QmIHJlY3RMaXN0KQog
Ly8gQ2hlY2tpbmcgZm9yIG92ZXJsYXAgaW52b2x2ZXMgZmluZGluZyB0aGUgbm9kZSBmb3IgdGhl
IGNsaXBwaW5nIGxheWVyIGVuY2xvc2luZyB0aGUgZ2l2ZW4gbGF5ZXIgKG9yIHRoZSByb290KSwK
IC8vIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgYm91bmRzIG9mIGVhcmxpZXIgc2libGluZ3Mu
CiBjbGFzcyBPdmVybGFwTWFwQ29udGFpbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBPdmVybGFwTWFwQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyJiBy
b290TGF5ZXIpCiAgICAgICAgIDogbV9yb290U2NvcGUocm9vdExheWVyKQpAQCAtMjk2LDcgKzI5
Nyw3IEBAIGJvb2wgTGF5ZXJPdmVybGFwTWFwOjpvdmVybGFwc0xheWVycyhjb25zdCBSZW5kZXJM
YXllciYgbGF5ZXIsIGNvbnN0IExheW91dFJlY3QmCiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpw
dXNoQ29tcG9zaXRpbmdDb250YWluZXIoKQogewotICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1fcm9vdExheWVyKSk7CisgICAg
bV9vdmVybGFwU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9y
b290TGF5ZXIpKTsKIH0KIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnBvcENvbXBvc2l0aW5nQ29u
dGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRk
YmEzZjFjNDEwNWFmYjBlOGU0Yzc2YTdjZmNiOWU1ZmZmNzE4NTQuLjAwMTkyNTg4MmU1MDI4Yzhh
MjA5OWI0YmJkZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFj
a2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAg
ICAgfQogICAgIAogICAgIGF1dG8mIGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50SGVpZ2h0RGVzY2Vu
ZGFudHNNYXAtPmVuc3VyZSgmY29udGFpbmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CiAKICAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKCZkZXNjZW5k
YW50KS5pc05ld0VudHJ5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIGluc2VydElu
dG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRl
ckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGNvbnRhaW5lclNldCA9IHBlcmNlbnRIZWlnaHRD
b250YWluZXJNYXAtPmVuc3VyZSgmZGVzY2VuZGFudCwgW10gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIWNvbnRhaW5lclNldC0+Y29udGFpbnMoJmNv
bnRhaW5lcikpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFBvc2l0aW9uZWREZXNjZW5kYW50
c01hcCB7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvJiBkZXNjZW5kYW50cyA9IG1fZGVzY2Vu
ZGFudHNNYXAuZW5zdXJlKCZjb250YWluaW5nQmxvY2ssIFtdIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAg
ICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICBib29sIGlzTmV3RW50cnkgPSBt
b3ZlRGVzY2VuZGFudFRvRW5kID09IE1vdmVEZXNjZW5kYW50VG9FbmQ6OlllcyA/IGRlc2NlbmRh
bnRzLT5hcHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGlubGluZSBVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJM
YXlvdXRUcmFuc2FjdGlvbiogY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnQKIHZvaWQgUmVuZGVy
QmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKQogewog
ICAgIGlmICghdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpKQot
ICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBz
dGQ6Om1ha2VfdW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7CisgICAgICAg
IHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IG1ha2VVbmlx
dWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKICAgICBpZiAodXBkYXRlU2Nyb2xs
SW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkgfHwgY3VycmVudFVw
ZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCktPnZpZXcgIT0gJnZpZXcoKSkK
ICAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5h
cHBlbmQoVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24odmlldygpKSk7CiAg
ICAgKytjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+bmVz
dGVkQ291bnQ7CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEm
IGVuc3VyZUJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQogICAgIAogICAg
IGF1dG8mIHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0YSkKLSAgICAgICAgcmFyZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CisgICAgICAgIHJhcmVEYXRhID0g
bWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOwogICAgIHJldHVybiAqcmFyZURhdGEu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAKaW5kZXggN2YxZTYzOTcwNjNiZTRmOGRmOWI1N2YxNzVkNmUyNmU3OGVmYjEzNC4uYjg2NDJk
MTcyMDNiZDRiZjI1YmRlMTcxZjk4NzBhZjdkNWE0M2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFJl
bmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVu
LCBMYXlvdXRVbml0JiByZQogICAgIG1fc2ltcGxlTGluZUxheW91dCA9IG51bGxwdHI7CiAKICAg
ICBpZiAoIW1fY29tcGxleExpbmVMYXlvdXQpCi0gICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CisgICAgICAgIG1f
Y29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7
CiAKICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0LT5sYXlvdXRMaW5lQm94ZXMocmVsYXlvdXRDaGls
ZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKIH0KQEAgLTIw
MTksNyArMjAxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgp
CiAgICAgCiAgICAgc2V0TGluZUdyaWRCb3goMCk7CiAKLSAgICBhdXRvIGxpbmVHcmlkQm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PigqdGhpcyk7CisgICAgYXV0byBsaW5lR3Jp
ZEJveCA9IG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMpOwogICAgIGxpbmVHcmlkQm94
LT5zZXRIYXNUZXh0Q2hpbGRyZW4oKTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhlIGxpbmUgYXNjZW50
L2Rlc2NlbnQgYWN0dWFsbHkgYmUgaG9ub3JlZCBpbiBxdWlya3MgbW9kZS4KICAgICBsaW5lR3Jp
ZEJveC0+c2V0Q29uc3RydWN0ZWQoKTsKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcCB0ZXh0Qm94RGF0YU1hcDsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNv
bnN0IFBhaW50CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMo
KQogewotICAgIG1fZmxvYXRpbmdPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09i
amVjdHM+KCp0aGlzKTsKKyAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IG1ha2VVbmlxdWU8RmxvYXRp
bmdPYmplY3RzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9h
dGluZ09iamVjdHMoKQpAQCAtMzY3Nyw3ICszNjc3LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmVuc3VyZUxpbmVCb3hlcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9jb21w
bGV4TGluZUxheW91dCk7Ci0gICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0g
bWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAgaWYgKFNpbXBsZUxp
bmVMYXlvdXQ6OmNhblVzZUZvckxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0
KSkgewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKCp0aGlz
LCAqbV9zaW1wbGVMaW5lTGF5b3V0KTsKQEAgLTM3MzUsNyArMzczNSw3IEBAIFJlbmRlckJsb2Nr
Rmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFy
ZUJsb2NrRmxvd0RhCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tG
bG93RGF0YSgpCiB7CiAgICAgQVNTRVJUKCFoYXNSYXJlQmxvY2tGbG93RGF0YSgpKTsKLSAgICBt
X3JhcmVCbG9ja0Zsb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJl
bmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CisgICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9
IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRo
aXMpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKaW5kZXggZTIwZmMyMDcxNGExMGUxMjIwZDJlZmQwYTljOGFhY2Ey
OTlkODU0MS4uYTQ2NzNkMTE4ODJiMzFlOTNmMmJhNzA5MGYyMmVlMzA2MDY4ZDEwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0
aWMgQ29udHJvbFN0YXRlc1JlbmRlcmVyTWFwJiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQog
c3RhdGljIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyKQogewogICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAo
KS5lbnN1cmUoJnJlbmRlcmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRyb2xTdGF0ZXM+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRyb2xTdGF0
ZXM+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCkBAIC0yMTE1LDcgKzIx
MTUsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJF
bGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91dAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5l
RWxlbWVudEJveD4gUmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3goKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94Ojpk
aXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA0MjQzMGRmOGJhN2I2YWI4NjMy
MzI4ZTYyZWY5MjU3MDFhZjNiNzc4Li5jZGNhNDU4YTFjMWY0MGU5Njk2MjA0Y2Y0NjhkOTkxNGVk
YTI0ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKQEAgLTI1MzgsNyArMjUzOCw3IEBAIGF1dG8gUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSgpIC0+IENvbnRpbnVhdGlvbkNoYWluTm9k
CiB7CiAgICAgc2V0SGFzQ29udGludWF0aW9uQ2hhaW5Ob2RlKHRydWUpOwogICAgIHJldHVybiAq
Y29udGludWF0aW9uQ2hhaW5Ob2RlTWFwKCkuZW5zdXJlKHRoaXMsIFsmXSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRoaXMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcAppbmRleCAyMjEwNDQzNGU0NWQ2Yzk4NDc2ZmZkMjlhYjU1MGJkNjJhYzQw
OGZlLi5jMWUwM2YwOTdlZjU5YWQ1YTE2YjE5NGM5YzA1ZDY0OWY3ZmYxNWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAg
c3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICBpZiAocGxhY2UucGFyZW50KQogICAgICAgICBw
bGFjZS5wYXJlbnQtPmluc2VydEFmdGVyKG5ld05vZGUsIHBsYWNlLnByZXZpb3VzU2libGluZy5n
ZXQoKSwgaWRlbnRpZmllcik7CiAKLSAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91
bmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3
Tm9kZS5jb3B5UmVmKCkpOworICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxDb3Vu
dGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlS
ZWYoKSk7CiAgICAgcmVuZGVyZXIuc2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7CiAKICAgICBp
ZiAobmV3Tm9kZS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcAppbmRleCA1MWE5ZTQ2ODQzNDRkMjYzN2QwNGE5
MWZiNTlhM2NkNmVmOGYwNmVkLi43ZjZjYWJjMDU5MTIxMDgxYzRkNzI4NjAyMTliZDRiOWM4NWI5
NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVu
dENvbnRhaW5lci5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJCb3hGcmFnbWVudEluZm8q
IFJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8oY29uc3Qg
UgogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
ckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQo
Ym94LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJ
bnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZv
PiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gsIG1ha2VVbmlxdWU8
UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNl
dCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJl
dHVybiBib3hJbmZvLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAppbmRleCA0NGY1NjM1YmE1M2FlM2Y3ZTk0ZDdhYzhl
NDk2NzM5MGY1OGMyZTU2Li44NDZkZDNhMDJhYTg2YWFmNzE1YzA5NGU4YzM1MGMxNjZhODY3YjFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZs
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxv
dy5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBSZW5k
ZXJGcmFnbWVudGVkRmxvdzo6Y3VycmVudEZyYWdtZW50KCkgY29uc3QKIENvbnRhaW5pbmdGcmFn
bWVudE1hcCYgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVudE1hcCgpCiB7
CiAgICAgaWYgKCFtX2xpbmVUb0ZyYWdtZW50TWFwKQotICAgICAgICBtX2xpbmVUb0ZyYWdtZW50
TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+KCk7CisgICAgICAg
IG1fbGluZVRvRnJhZ21lbnRNYXAgPSBtYWtlVW5pcXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4o
KTsKIAogICAgIHJldHVybiAqbV9saW5lVG9GcmFnbWVudE1hcC5nZXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IGI5MDQ1ZTY3
OTA4NzNhYmY4MWE5MGRmYTViYmIxMTA5M2M2NzdiMDIuLjUyYzc5MGQ0ZTU3ODliMTc4ZTI2Yzhh
YmQ4YmE3YjEzY2M1OTE1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdlb21ldHJ5TWFwLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlN
YXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRp
b25NCiAgICAgCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21f
aW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQot
ICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4odCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4Pih0KTsKICAgICBlbHNlCiAgICAgICAgIHN0ZXAubV9vZmZzZXQgPSBM
YXlvdXRTaXplKHQuZSgpLCB0LmYoKSk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFJlbmRl
ckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlv
dXRTaXplJiBzY3JvbAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGlu
Z1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0
OwogICAgIGlmICh0KQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0g
bWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwogICAgIAogICAgIHN0ZXBJbnNl
cnRlZChzdGVwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRl
eCBlMzVhMmMxMzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0Y2NjOWQwZjM0OTdmLi40OWFkMDM1NTUzNzM0
MjI1ZjFkZGQ2MzNiNDJjMTM4MzJjY2VmYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRU
cmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEK
ICAgICB1bnNpZ25lZCBsYXN0QXV0b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sg
KyBncmlkLmF1dG9SZXBlYXRUcmFja3MoZGlyZWN0aW9uKTsKIAogICAgIGlmICghZ3JpZC5oYXNH
cmlkSXRlbXMoKSkgewotICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0g
bWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCB0cmFja0luZGV4ID0gZmlyc3RBdXRvUmVwZWF0VHJhY2s7IHRyYWNrSW5kZXggPCBsYXN0QXV0
b1JlcGVhdFRyYWNrOyArK3RyYWNrSW5kZXgpCiAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhl
cy0+YWRkKHRyYWNrSW5kZXgpOwogICAgIH0gZWxzZSB7CkBAIC01NTIsNyArNTUyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1w
dHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihn
cmlkLCBkaXJlY3Rpb24sIHRyYWNrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFpdGVyYXRvci5u
ZXh0R3JpZEl0ZW0oKSkgewogICAgICAgICAgICAgICAgIGlmICghZW1wdHlUcmFja0luZGV4ZXMp
Ci0gICAgICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1
ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICAgICAgZW1wdHlUcmFj
a0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwogICAgICAgICAg
ICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTczMiw3ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+
IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dAog
ICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhj
cm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwg
Y3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0g
R3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24s
IGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNv
bHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3Bl
Y2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9z
c0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JpZEFyZWE+KHNw
ZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMg
OiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8g
c3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwogfQogCiB2b2lk
IFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3Jp
ZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZjZjYjU2MTgxMmQyMjI2ODY2
OTgzZjNhYjljNzQwYTU2ZGIwMjZlOC4uYzM1NWZmMzcxYjQxMWE1OGU3OTA2Yzg3N2VhZDRiNTM0
NjcxNWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0x
MzQsNyArMTM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVySW1hZ2U6
OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxl
SW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAg
ICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0g
ICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdl
ID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2Up
IDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9pbWFnZURldmlj
ZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0ZUFsdFRleHQo
KTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bAogCiBSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
LCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQs
IFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJ
bWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpz
dHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAg
ICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJl
c291cmNlPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCmluZGV4IDlkOGE2NTkzNGJhM2ZkMjU0NzRjMzljOTFmZWVjNDNhYTBjOWY5ZjUuLjE1MzI1
Y2RhMTY5MDY3YTU2OTFiODg1YThkZmRjN2FhOTAzNjQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIFJlbmRl
cklubGluZTo6ZGVsZXRlTGluZXMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4g
UmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
SW5saW5lRmxvd0JveD4oKnRoaXMpOwogfQogCiBJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6
OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggMjc2Y2U4MjcyYmNkYjMzNjQ1NDFkZTQ2MTEyZjJhM2Y5NzQx
MDE3MS4uNjQwNjI4ZmQ2NGJkMWFkYjJiMjY5ODg5NWFmY2M5M2E0ODA4YWFjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03MDAsNyArNzAwLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgICAgICAvLyBJZ25vcmUg
bm9uLW92ZXJmbG93IGxheWVycyBhbmQgcmVmbGVjdGlvbnMuCiAgICAgICAgIGlmIChjaGlsZC0+
aXNOb3JtYWxGbG93T25seSgpICYmICFpc1JlZmxlY3Rpb25MYXllcigqY2hpbGQpKSB7CiAgICAg
ICAgICAgICBpZiAoIW1fbm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICAgICAgICAgbV9ub3JtYWxG
bG93TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAg
ICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRlckxh
eWVyKj4+KCk7CiAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0LT5hcHBlbmQoY2hpbGQpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNv
bGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yCiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93T25seSgpKSB7
CiAgICAgICAgIGF1dG8mIGxheWVyTGlzdCA9ICh6SW5kZXgoKSA+PSAwKSA/IHBvc2l0aXZlWk9y
ZGVyTGlzdCA6IG5lZ2F0aXZlWk9yZGVyTGlzdDsKICAgICAgICAgaWYgKCFsYXllckxpc3QpCi0g
ICAgICAgICAgICBsYXllckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXll
cio+PigpOworICAgICAgICAgICAgbGF5ZXJMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVy
TGF5ZXIqPj4oKTsKICAgICAgICAgbGF5ZXJMaXN0LT5hcHBlbmQodGhpcyk7CiAgICAgfQogCkBA
IC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKQog
ICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3RyYW5zZm9ybTsKICAgICBpZiAoaGFzVHJhbnNm
b3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQotICAgICAg
ICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4
PigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9u
TWF0cml4PigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3RyYW5zZm9ybSA9IG51bGxw
dHI7CiAgICAgICAgIApAQCAtNTUxOSw3ICs1NTE5LDcgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVy
TGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHND
b24KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2NsaXBSZWN0c0NhY2hlKQotICAgICAgICBtX2Ns
aXBSZWN0c0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKKyAgICAg
ICAgbV9jbGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CiAjaWZu
ZGVmIE5ERUJVRwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVj
dHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyOwogICAgIG1fY2xpcFJlY3RzQ2Fj
aGUtPm1fc2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4
dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeTsKQEAgLTYwOTcsNyArNjA5Nyw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKENsaXBSZWN0c1R5cGUgdHlwZVRvQ2xlYXIp
CiBSZW5kZXJMYXllckJhY2tpbmcqIFJlbmRlckxheWVyOjplbnN1cmVCYWNraW5nKCkKIHsKICAg
ICBpZiAoIW1fYmFja2luZykgewotICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOworICAgICAgICBtX2JhY2tpbmcgPSBtYWtlVW5p
cXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOwogICAgICAgICBjb21wb3NpdG9yKCkubGF5
ZXJCZWNhbWVDb21wb3NpdGVkKCp0aGlzKTsKIAogICAgICAgICB1cGRhdGVGaWx0ZXJQYWludGlu
Z1N0cmF0ZWd5KCk7CkBAIC02NTE1LDcgKzY1MTUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHls
ZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZQogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNIVE1MTWFycXVlZSgpICYmIHJlbmRlcmVyKCkuc3R5
bGUoKS5tYXJxdWVlQmVoYXZpb3IoKSAhPSBNYXJxdWVlQmVoYXZpb3I6Ok5vbmUgJiYgcmVuZGVy
ZXIoKS5pc0JveCgpKSB7CiAgICAgICAgIGlmICghbV9tYXJxdWVlKQotICAgICAgICAgICAgbV9t
YXJxdWVlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKKyAgICAgICAg
ICAgIG1fbWFycXVlZSA9IG1ha2VVbmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7CiAgICAgICAg
IG1fbWFycXVlZS0+dXBkYXRlTWFycXVlZVN0eWxlKCk7CiAgICAgfSBlbHNlIGlmIChtX21hcnF1
ZWUpCiAgICAgICAgIG1fbWFycXVlZSA9IG51bGxwdHI7CkBAIC02NzI3LDcgKzY3MjcsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjplbnN1cmVMYXllckZpbHRlcnMoKQogICAgIGlmIChtX2ZpbHRlcnMp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX2ZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOworICAgIG1fZmlsdGVycyA9IG1ha2VVbmlxdWU8
UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFy
TGF5ZXJGaWx0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKaW5kZXggN2YxNDM2NmE3ZTU2MTEwMzM3MjA3N2JlZmUyYTYwODM0MmY3YmE0
OS4uNzVmOWViMGYyOTdhMjM2YzdhNzgyNTY4NjNkMDUyODU3YjRjZGNmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE2MjcsNyAr
MTYyNyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5n
U3RhY2soVmVjdG9yPENvbXBvc2l0ZWRDbGlwRGF0YT4mCiAgICAgfQogICAgIAogICAgIGlmICgh
bV9hbmNlc3RvckNsaXBwaW5nU3RhY2spIHsKLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3Rh
Y2sgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3Zl
KGNsaXBwaW5nRGF0YSkpOworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9IG1ha2VV
bmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7
CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJsYXllciAi
IDw8ICZtX293bmluZ0xheWVyIDw8ICIgYW5jZXN0b3JDbGlwcGluZ1N0YWNrICIgPDwgKm1fYW5j
ZXN0b3JDbGlwcGluZ1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3
OCwxNyArMzE3OCwxNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24o
ZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbQogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkgPT0gMTsKICAg
ICAgICAgaWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJy
ZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSkpCi0gICAg
ICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7Cisg
ICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CiAKICAg
ICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVu
dEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAg
ICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25W
YWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CisgICAgICAgICAgICBv
cGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwg
a2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgoaGFzRmlsdGVy
ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJv
cGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5
bGUtPmZpbHRlcigpLCB0ZikpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtl
VW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigp
LCB0ZikpOwogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICAgICAgaWYgKChoYXNC
YWNrZHJvcEZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFt
ZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpKQotICAg
ICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8Rmls
dGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwg
dGYpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVl
PEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVy
KCksIHRmKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTMyNDMsOCArMzI0Myw4IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1By
b3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogb3BhY2l0eUFuaW0gPSB0
b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KTsKICAgICAg
ICAgaWYgKG9wYWNpdHlBbmltICYmICFvcGFjaXR5QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9u
KCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0
ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3Rk
OjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGluZ09wYWNpdHko
ZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3Bh
Y2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmlu
c2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0
eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5z
ZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5
KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFt
IGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1
biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAg
ICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEZs
b2F0U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRy
YW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkgewogICAgICAg
ICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlzaWJs
ZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9wYWNpdHkuCkBA
IC0zMjU4LDggKzMyNTgsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0
aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25z
dCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVy
dHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAgICAgICBpZiAodHJhbnNmb3JtQW5pbSAmJiAh
dHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtl
eWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3Jt
KTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOwotICAg
ICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAg
dHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVl
PigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0
b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUt
PnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmlt
YXRpb24odHJhbnNmb3JtVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVy
Qm94UmVjdCgpKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
bk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0
KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5z
Zm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmlu
YWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgqdG9TdHlsZSk7
CkBAIC0zMjcyLDggKzMyNzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFu
c2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBj
b25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVy
dHkoQ1NTUHJvcGVydHlGaWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVy
QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFs
dWVMaXN0IGZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5RmlsdGVyKTsKLSAgICAgICAgICAg
IGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1
ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmlu
c2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5m
aWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAg
ICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEs
IHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5h
ZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhp
Y3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUZpbHRl
ciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhl
IGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28g
c2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVycygqdG9T
dHlsZSk7CkBAIC0zMjg3LDggKzMyODcsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAg
ICAgICBjb25zdCBBbmltYXRpb24qIGJhY2tkcm9wRmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5z
aXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKICAgICAg
ICAgaWYgKGJhY2tkcm9wRmlsdGVyQW5pbSAmJiAhYmFja2Ryb3BGaWx0ZXJBbmltLT5pc0VtcHR5
T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgYmFja2Ry
b3BGaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKLSAg
ICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKLSAg
ICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAg
ICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmlt
YXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAg
ICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25W
YWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1f
Z3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGJhY2tkcm9wRmlsdGVyVmVjdG9yLCBGbG9hdFNp
emUoKSwgYmFja2Ryb3BGaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9y
VHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpLCB0aW1lT2Zm
c2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGJh
Y2tkcm9wIGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNl
dCB0aGUgZmluYWwgYmFja2Ryb3AgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVwZGF0ZUJhY2tk
cm9wRmlsdGVycygqdG9TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGFiZTRkNGQ2NzVhMjIxODZlMmVhODlkNDEy
ZmZhODE1MzhjNWM5MjkuLjMyMTIyOWQ2ZjIzY2ZhZTY2YTA1YTUyODA4ZGQwYjBjYmE4YzE0NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJM
YXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYgcmVuZGVyVmlldykKIHsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGxhdGZvcm1XaWRn
ZXQoKSkKLSAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCku
Y2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKKyAgICAgICAgbV9s
ZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxMZWdhY3lXZWJLaXRT
Y3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFp
bkZyYW1lQ29tcG9zaXRvcigpKTsKICNlbmRpZgogfQogCkBAIC02MTIsNyArNjEyLDcgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2go
Y29uc3QgR3JhcGhpY3NMYXllcioKIHsKICAgICBpZiAoIW1fbGF5ZXJVcGRhdGVyKSB7CiAgICAg
ICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9IHBhZ2UoKS5jaHJvbWUoKS5kaXNwbGF5
SUQoKTsKLSAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNz
TGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKKyAgICAgICAgbV9sYXllclVwZGF0ZXIg
PSBtYWtlVW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKICAg
ICB9CiAgICAgCiAgICAgbV9sYXllclVwZGF0ZXItPnNjaGVkdWxlVXBkYXRlKCk7CkBAIC00Nzky
LDcgKzQ3OTIsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6
OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogCiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBjb25zdHJhaW50czsKICAgICAgICAgaWYgKGxh
eWVyLT5yZW5kZXJlcigpLmlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGNv
bnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVy
KSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8U3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0
cmFpbnRzKCpsYXllcikpOwogICAgICAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIGVuY2xvc2lu
Z1RvdWNoU2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChjb21wb3Np
dG9yLmlzQXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5ZXIoKmxheWVyLCAmZW5jbG9zaW5nVG91Y2hT
Y3JvbGxhYmxlTGF5ZXIpICYmIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyKSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5pc0NvbXBv
c2l0ZWQoKSk7CkBAIC00ODAwLDcgKzQ4MDAsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGlu
Z0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwog
ICAgICAgICAgICAgICAgIHN0aWNreUNvbnRhaW5lck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+
Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJs
ZUxheWVyLT5iYWNraW5nKCktPnNjcm9sbENvbnRhaW5lckxheWVyKCktPnBsYXRmb3JtTGF5ZXIo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXItPnJlbmRlcmVyKCku
aXNGaXhlZFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtl
X3VuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21w
dXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAgICAgICAgY29uc3Ry
YWludHMgPSBtYWtlVW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21w
b3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggNGI4NmZlMmFkMTc1ZGNl
ODZhZDM4NTJiZGZjMTUyZmQxMzA4ZDQ1ZS4uMTI4Yzk2ZGFlMGIzMTAwNmNhMjVkNWE1NmM3MjBi
Yzg5MGQzNGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCiB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmNy
ZWF0ZUxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXIpOwotICAgIG1fbGF5ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyPigqdGhpcyk7CisgICAgbV9sYXllciA9IG1ha2VVbmlx
dWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKICAgICBzZXRIYXNMYXllcih0cnVlKTsKICAgICBtX2xh
eWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGJjNTUyN2I4YzQ2YTRkZTA2NmY2OWU1YTMxMGM4
ODY4MTk2ZmMyM2EuLjFhYWUwOWQwMGIyNmVhM2NhZGVhODY3MmUyNzc5MjliZmQxN2E2MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC04OSw3
ICs4OSw3IEBAIGludCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxp
bmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5k
ZXJMaW5lQnJlYWs6OnNldElubGluZUJveFdyYXBwZXIoSW5saW5lRWxlbWVudEJveCogaW5saW5l
Qm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5G
bG93LmNwcAppbmRleCA5YmI5YTUzOWQ2NjQyZGY5MDAyNmE3ODJhZjhjZjg0ZGM0OWRhMmE5Li40
MTAzZGFkNDg0NGRkMjRhMzAyYTczMmFmMjIxOWFjOTAwMDFjYmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcApAQCAtNDIsNyAr
NDIsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVsdGlDb2x1bW5GbG93
KTsKIAogUmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3coRG9jdW1l
bnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhZ21lbnRl
ZEZsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zcGFubmVyTWFwKHN0ZDo6
bWFrZV91bmlxdWU8U3Bhbm5lck1hcD4oKSkKKyAgICAsIG1fc3Bhbm5lck1hcChtYWtlVW5pcXVl
PFNwYW5uZXJNYXA+KCkpCiAgICAgLCBtX2xhc3RTZXRXb3JrZWRPbihudWxscHRyKQogICAgICwg
bV9jb2x1bW5Db3VudCgxKQogICAgICwgbV9jb2x1bW5XaWR0aCgwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ZGEzYmQ3Mzc3MWJhMTcxOTBlYWMzNWRh
NjM4ZTI0M2YxOTAyOTA3Li4wYmY1MTkzZGU0ODQ0NWJjYzY3N2U5MTRlOGFkM2RmODFjZWI4MmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg5Myw3
ICsxODkzLDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YSYgUmVu
ZGVyT2JqZWN0OjpyYXJlRGF0YSgpIGNvbnN0CiBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJh
cmVEYXRhJiBSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNSYXJl
RGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJh
dG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52
YWx1ZTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmlu
ZGV4IDNmYWFmYTExMjA2NTI2MjNlMDY1ZTZhMjFjZTFjNzUxZGJhOTFhMzcuLjAzZGQwOGZlNmI3
ZjBhNmRkMTVmMjFmMjMzNWNjYWJjNWFmMDJhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNTMsNyArNTMsNyBA
QCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOwog
CiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBs
dWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJl
bmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zbmFw
c2hvdFJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAg
ICAsIG1fc25hcHNob3RSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkp
CiB7CiAgICAgbV9zbmFwc2hvdFJlc291cmNlLT5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDE4NmNhODcwZWQxMDkxM2Q1
OGI4NTQ5ZWI5NmRlMzM2ZTM0NTUzNTkuLmU5MWExMzM3MTk5MTJkMThmYTU1ZTM2ZDgzNTU4ODU3
YzJkMThiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAt
MTM3LDkgKzEzNyw5IEBAIHZvaWQgUmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5CiAgICAgICAgIC8vIEFjY29y
ZGluZyB0byB0aGUgQ1NTMiBzcGVjLCB5b3Ugb25seSB1c2UgZml4ZWQgdGFibGUgbGF5b3V0IGlm
IGFuCiAgICAgICAgIC8vIGV4cGxpY2l0IHdpZHRoIGlzIHNwZWNpZmllZCBvbiB0aGUgdGFibGUu
ICBBdXRvIHdpZHRoIGltcGxpZXMgYXV0byB0YWJsZSBsYXlvdXQuCiAgICAgICAgIGlmIChzdHls
ZSgpLnRhYmxlTGF5b3V0KCkgPT0gVGFibGVMYXlvdXRUeXBlOjpGaXhlZCAmJiAhc3R5bGUoKS5s
b2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZpeGVkVGFibGVMYXlvdXQ+KHRoaXMpOworICAgICAgICAgICAgbV90YWJs
ZUxheW91dCA9IG1ha2VVbmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9UYWJs
ZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxB
dXRvVGFibGVMYXlvdXQ+KHRoaXMpOwogICAgIH0KIAogICAgIC8vIElmIGJvcmRlciB3YXMgY2hh
bmdlZCwgaW52YWxpZGF0ZSBjb2xsYXBzZWQgYm9yZGVycyBjYWNoZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA2OGMzYTE1ZDk1MTZiNWIzYzdjMmRkYWI0YWRh
NDA5YTVkYzIwZGZhLi5hMDJkOWMxNmYzYTI3Y2M1MjIwOTcxMDJjMjY5Yjc1NTUwOWQwMDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMzExLDcgKzEzMTEs
NyBAQCB2b2lkIFJlbmRlclRleHQ6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKIAog
c3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclRleHQ6OmNyZWF0ZVRleHRCb3go
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQg
UmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gmIHRleHRCb3gpCkBAIC0x
NTQ1LDcgKzE1NDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5
cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogICAgICAgICByZXR1cm47
CiAgICAgYXV0byYgc2VjdXJlVGV4dFRpbWVyID0gc2VjdXJlVGV4dFRpbWVycygpLmFkZCh0aGlz
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzZWN1cmVUZXh0VGltZXIpCi0g
ICAgICAgIHNlY3VyZVRleHRUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjdXJlVGV4dFRpbWVy
PigqdGhpcyk7CisgICAgICAgIHNlY3VyZVRleHRUaW1lciA9IG1ha2VVbmlxdWU8U2VjdXJlVGV4
dFRpbWVyPigqdGhpcyk7CiAgICAgc2VjdXJlVGV4dFRpbWVyLT5yZXN0YXJ0KG9mZnNldEFmdGVy
TGFzdFR5cGVkQ2hhcmFjdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCmluZGV4IGMxNDQ1MWExOGVlYTdhNTcxYTI3Nzc4OThhNzljYzhiNDNmZjMxNDIuLjVm
ZWM2NzhjNmJiNWRmMGU0OTIyYjAxMmMzZjI2OGRiYWI0YTdiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIFJlbmRlclZp
ZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0KSBj
b25zdAogICAgIC8vIEZJWE1FOiBNYXliZSB0aGVyZSBzaG91bGQgYmUgYSByZWdpb24gdHlwZSB0
aGF0IGRvZXMgdGhpcyBhdXRvbWF0aWNhbGx5LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBt
YXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplID0gMTYgKiAxNjsKICAgICBpZiAobV9hY2N1bXVs
YXRlZFJlcGFpbnRSZWdpb24tPmdyaWRTaXplKCkgPiBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRT
aXplKQotICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOworICAgICAg
ICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPihtX2FjY3Vt
dWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmZs
dXNoQWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uKCkgY29uc3QKQEAgLTcyNCw3ICs3MjQsNyBAQCBi
b29sIFJlbmRlclZpZXc6OnVzZXNDb21wb3NpdGluZygpIGNvbnN0CiBSZW5kZXJMYXllckNvbXBv
c2l0b3ImIFJlbmRlclZpZXc6OmNvbXBvc2l0b3IoKQogewogICAgIGlmICghbV9jb21wb3NpdG9y
KQotICAgICAgICBtX2NvbXBvc2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQ29t
cG9zaXRvcj4oKnRoaXMpOworICAgICAgICBtX2NvbXBvc2l0b3IgPSBtYWtlVW5pcXVlPFJlbmRl
ckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX2NvbXBvc2l0b3I7CiB9
CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIEltYWdlUXVhbGl0
eUNvbnRyb2xsZXImIFJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKQogewogICAg
IGlmICghbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyKQotICAgICAgICBtX2ltYWdlUXVhbGl0eUNv
bnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlz
KTsKKyAgICAgICAgbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbWFnZVF1
YWxpdHlDb250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlUXVhbGl0eUNvbnRy
b2xsZXI7CiB9CiAKQEAgLTgzNCw3ICs4MzQsNyBAQCBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9u
QWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcihSZW5kZXJWaWV3KiB2aWV3KQog
CiAgICAgbV93YXNBY2N1bXVsYXRpbmdSZXBhaW50UmVnaW9uID0gISFyb290UmVuZGVyVmlldy0+
bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb247CiAgICAgaWYgKCFtX3dhc0FjY3VtdWxhdGluZ1Jl
cGFpbnRSZWdpb24pCi0gICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWlu
dFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgICAgICByb290UmVuZGVy
Vmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsK
ICAgICBtX3Jvb3RWaWV3ID0gbWFrZVdlYWtQdHIoKnJvb3RSZW5kZXJWaWV3KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGZkY2Q1OWM1MmM1
ZjMyOGY1MjA5ZjAwYzFmOGQ4MTZhZGM1Zjc2NjguLjQ0NTU4NDFhZjMyZmYxNTI1MmNmYTI4ZWQ4
YTY5YzNlNDlmMWYzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlw
c2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGZsbwogICAgICAg
ICBnRWxsaXBzaXNCb3hNYXAgPSBuZXcgRWxsaXBzaXNCb3hNYXAoKTsKIAogICAgIEFTU0VSVCgh
aGFzRWxsaXBzaXNCb3goKSk7Ci0gICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hN
YXAtPnNldCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwg
ZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94
LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94
KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Cisg
ICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBtYWtlVW5p
cXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lz
V2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dp
Y2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBC
b3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgc2V0SGFzRWxsaXBzaXNCb3godHJ1ZSk7
CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYW4gUlRMIHZlcnNpb24gb2YgdGhpcz8KICAgICBp
ZiAobHRyICYmICh4KCkgKyBsb2dpY2FsV2lkdGgoKSArIGVsbGlwc2lzV2lkdGgpIDw9IGJsb2Nr
UmlnaHRFZGdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRl
eCA3ZGYyODI4OGE0ZDU1YzJjN2QyNmFkNGJjMDE3NmQwYjc2MTc4MzY0Li4yNDdlNTVjMDY5ZTlm
ZTg4MWNhZjRiZmJjMmI0YWVmMTllMzYxN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBSb290SW5saW5lQm94IDog
cHVibGljIElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSb290SW5saW5lQm94
PgogICAgICAgICBpZiAobV9mbG9hdHMpCiAgICAgICAgICAgICBtX2Zsb2F0cy0+YXBwZW5kKG1h
a2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZmxv
YXRzID0gc3RkOjptYWtlX3VuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRy
KGZsb2F0aW5nQm94KSk7CisgICAgICAgICAgICBtX2Zsb2F0cyA9IG1ha2VVbmlxdWU8Q2xlYW5M
aW5lRmxvYXRMaXN0PigxLCBtYWtlV2Vha1B0cihmbG9hdGluZ0JveCkpOwogICAgIH0KIAogICAg
IHZvaWQgcmVtb3ZlRmxvYXQoUmVuZGVyQm94JiBmbG9hdGluZ0JveCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5kZXggZWM1ZTczNTZhNjRk
MTI0OWRkYTExNDdlOGJiYTMxZjQ3OTBiNGJmMi4uYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNmNGU4
MTFjM2VhMWI5M2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlv
blJhbmdlRGF0YS5jcHAKQEAgLTEzMSwxMyArMTMxLDEzIEBAIHN0YXRpYyBTZWxlY3Rpb25EYXRh
IGNvbGxlY3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24sIGJv
b2wKICAgICB3aGlsZSAoc3RhcnQgJiYgc3RhcnQgIT0gc3RvcCkgewogICAgICAgICBpZiAoaXNW
YWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpzdGFydCwgc2VsZWN0aW9uKSkgewogICAgICAgICAg
ICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBt
YXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICBv
bGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CisgICAgICAgICAgICBvbGRTZWxlY3Rp
b25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5m
bz4oKnN0YXJ0LCB0cnVlKSk7CiAgICAgICAgICAgICBpZiAocmVwYWludERpZmZlcmVuY2UpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dW
aWV3KCpzdGFydCk7IGJsb2NrOyBibG9jayA9IGNvbnRhaW5pbmdCbG9ja0JlbG93VmlldygqYmxv
Y2spKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGJsb2NrSW5mbyA9IG9sZFNlbGVjdGlv
bkRhdGEuYmxvY2tzLmFkZChibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOworICAgICAgICAgICAgICAgICAgICBibG9j
a0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmJsb2NrKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMywxMyArMjEz
LDEzIEBAIEludFJlY3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBUb1Zp
c2libGVDb250ZW50IGNsaXBUb1Zpc2libGVDb250CiAgICAgICAgIGlmICgoc3RhcnQtPmNhbkJl
U2VsZWN0aW9uTGVhZigpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpIHx8
IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKICAgICAgICAgICAgICYmIHN0YXJ0
LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgewogICAg
ICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBz
IGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAg
ICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlv
bkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRl
bnQ6OlllcykpOworICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxS
ZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBU
b1Zpc2libGVDb250ZW50OjpZZXMpKTsKICAgICAgICAgICAgIGF1dG8qIGJsb2NrID0gc3RhcnQt
PmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgd2hpbGUgKGJsb2NrICYmICFpczxSZW5k
ZXJWaWV3PigqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clNlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSByZW5kZXJlcnMuYWRkKGJsb2NrLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250
ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOworICAgICAgICAgICAgICAgIGJsb2Nr
SW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2NrLCBjbGlwVG9WaXNp
YmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsKICAgICAgICAgICAgICAg
ICBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShj
b25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgc2Vs
ZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAgICAg
Zm9yIChhdXRvKiBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsgY3VycmVudFJlbmRl
cmVyICYmIGN1cnJlbnRSZW5kZXJlciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJlbnRSZW5kZXJlciA9
IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVy
Rm9yU2VsZWN0aW9uKCpjdXJyZW50UmVuZGVyZXIsIG1fc2VsZWN0aW9uQ29udGV4dCkpIHsKLSAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25J
bmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJlbmRl
cmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25J
bmZvPiBzZWxlY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3Vy
cmVudFJlbmRlcmVyLCB0cnVlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAg
ICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHNlbGVjdGlvbkluZm8tPmNvbGxlY3RlZFNlbGVjdGlv
blJlY3RzKCkpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkUmVj
dChzZWxlY3Rpb25JbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIHJlY3QpOwpAQCAtMjk0LDcgKzI5
NCw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdT
ZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVjdGVk
QmxvY2tzLmFkZChjb250YWluaW5nQmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAg
ICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2Nr
U2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgICAgICAgICAgYmxvY2tJ
bmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpjb250YWluaW5nQmxv
Y2spOwogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9jay0+
Y29udGFpbmluZ0Jsb2NrKCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgICAg
ICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkR2FwUmVjdHMoYmxvY2tJbmZvLT5y
ZXBhaW50Q29udGFpbmVyKCksIGJsb2NrSW5mby0+cmVjdHMoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggOGM3NjZlNmRlMmM3NGFkMDM3
OTczMzMxZmM3ZjVhNDc0OTAxNWI4ZS4uYzM2MmY0ZTU3YjAwZjljZTM5YTczZWNlODExYzJjODMy
ZDY1MGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcApAQCAtOTk3LDcgKzk5Nyw3IEBAIExheW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3RvciYg
cnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQsIGNvbnN0IFJlbmRlckJsb2NrCiBjb25zdCBS
dW5SZXNvbHZlciYgTGF5b3V0OjpydW5SZXNvbHZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3J1
blJlc29sdmVyKQotICAgICAgICBtX3J1blJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5S
ZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOworICAgICAgICBtX3J1blJlc29s
dmVyID0gbWFrZVVuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMp
OwogICAgIHJldHVybiAqbV9ydW5SZXNvbHZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDFiZjk4
ZTRlZWI0M2JhMjJjZGE0ZTZmNWQzYmMyYTVmOWZjNGI0YjcuLjA2MjViMTZiZDU0MzE5NzNlZDMx
ZGU5OThhZWQ4ODliMDEyYmEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2
b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYg
bGF5b3V0LCBQYWludEluZm8mIHBhaQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+
IGRlYnVnU2hhZG93ID0gbnVsbHB0cjsKICAgICBpZiAoZmxvdy5zZXR0aW5ncygpLnNpbXBsZUxp
bmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpIHsKLSAgICAgICAgZGVidWdTaGFkb3cgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRv
d1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CisgICAgICAgIGRl
YnVnU2hhZG93ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIw
LCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAsIDIwMCkpOwogICAg
ICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVidWdTaGFkb3cuZ2V0KCkpOwogICAgIH0KIApA
QCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgZ2VuZXJhdGVMaW5lQm94VHJlZShSZW5kZXJCbG9ja0Zs
b3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQogICAgICAgICBCaWRpUnVuTGlzdDxCaWRp
UnVuPiBiaWRpUnVuczsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsgaXQg
IT0gcmFuZ2UuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgIGF1dG8gcnVuID0gKml0OwotICAg
ICAgICAgICAgYmlkaVJ1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocnVu
LmxvY2FsU3RhcnQoKSwgcnVuLmxvY2FsRW5kKCksIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4o
cnVuLnJlbmRlcmVyKCkpLCBiaWRpQ29udGV4dC5wdHIoKSwgVV9MRUZUX1RPX1JJR0hUKSk7Cisg
ICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxCaWRpUnVuPihydW4ubG9j
YWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4u
cmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIExpbmVJbmZvIGxpbmVJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0QXV0b1NpemluZy5jcHAKaW5kZXggM2JhMTMwZDQ1NTlkNzI5MmQ4OTFmNTUzY2Yx
NDgwZjg2NmJiMmJhZC4uNGI0M2U2YWNiZTBlZWRhZjRlYWY0ZDJlNWQ1YTQ0NjM5MDYwNTNlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0yMjUs
NyArMjI1LDcgQEAgdm9pZCBUZXh0QXV0b1NpemluZzo6YWRkVGV4dE5vZGUoVGV4dCYgbm9kZSwg
ZmxvYXQgY2FuZGlkYXRlU2l6ZSkKICAgICBMT0coVGV4dEF1dG9zaXppbmcsICIgYWRkQXV0b1Np
emVkTm9kZSAlcCBjYW5kaWRhdGVTaXplPSVmIiwgJm5vZGUsIGNhbmRpZGF0ZVNpemUpOwogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0Tm9kZXMuYWRkPFRleHRBdXRvU2l6aW5nSGFzaFRyYW5z
bGF0b3I+KG5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKSwgbnVsbHB0cik7CiAgICAgaWYgKGFkZFJl
c3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOworICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOwogICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZFRleHROb2RlKG5vZGUsIGNhbmRpZGF0ZVNp
emUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
QnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5j
cHAKaW5kZXggMmIxYzFmYTAzY2ExYzU3NTY5MDI3N2E1ZTgxMjg3MTAxMGQ0NDY3ZS4uZDExNjYx
NWE3MjZjNWEwYTk0M2Q5YjlmNmUwOTQwYjk1ZTY5MDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIExp
bmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiByZXNv
bHZlciwgTGluZUluZm8mCiAgICAgICAgIGlmIChvYmplY3QuaXNPdXRPZkZsb3dQb3NpdGlvbmVk
KCkpIHsKICAgICAgICAgICAgIHNldFN0YXRpY1Bvc2l0aW9ucyhtX2Jsb2NrLCBkb3duY2FzdDxS
ZW5kZXJCb3g+KG9iamVjdCksIHdpZHRoLnNob3VsZEluZGVudFRleHQoKSk7CiAgICAgICAgICAg
ICBpZiAob2JqZWN0LnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpIHsKLSAg
ICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8
QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigp
KSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1bihtYWtlVW5pcXVl
PEJpZGlSdW4+KDAsIDEsIG9iamVjdCwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIo
KSkpOwogICAgICAgICAgICAgICAgIGxpbmVJbmZvLmluY3JlbWVudFJ1bnNGcm9tTGVhZGluZ1do
aXRlc3BhY2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChvYmplY3QuaXNG
bG9hdGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmNwcAppbmRleCA0YjE1OTdlOWYyMWM5Y2Q0YjJmMGQ4ODM0NzQ0Nzc1ZjFkOGJkZTAxLi5k
NTIwOTJiNjhlZDhlMmM4ZmRhNTE1YzkwY2Q1MjIzNTZkNjU1YzI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtNzYsNyArNzYsNyBA
QCBJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KGlu
dCB5KSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJT
aGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdp
bikgY29uc3QKIHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChvZmZzZXQoKSA+IHNo
YXBlTWFyZ2luKSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiArIHNoYXBlTWFyZ2lu
ICogMjsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+KG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFyZ2luLCBvZmZzZXQo
KSkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4o
bWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CiAg
ICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ioc2hhcGVN
YXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygpLm1h
eFkoKTsgKyt5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmlu
ZGV4IDMwMjMxYTBiZTFiYmM2M2U0YmUzZDI1MDUxMmJlZDNkMTk1OTQwOTkuLmY1ZWZlZmRkMzJi
MzA1NDdhZGJkOGViMDhmNTRlNjNiMDI0MGZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCkBAIC00NiwyNCArNDYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlSW5zZXRTaGFwZShjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiB7CiAgICAgQVNTRVJUKGJvdW5kcy5yZWN0KCkud2lk
dGgoKSA+PSAwICYmIGJvdW5kcy5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Qm94U2hhcGU+KGJvdW5kcyk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNy
ZWF0ZUNpcmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQgcmFkaXVzKQog
ewogICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIueSgp
IC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRl
ci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiks
IEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBjb25z
dCBGbG9hdFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChyYWRpaS53aWR0aCgpID49IDAgJiYg
cmFkaWkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFu
Z2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnko
KSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCBy
YWRpaSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChj
ZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCBy
YWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CiB9CiAKIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwg
ZmlsbFJ1bGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBvbHlnb25TaGFwZT4oV1RGTW92ZSh2
ZXJ0aWNlcyksIGZpbGxSdWxlKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9hdFJlY3QgcGh5c2lj
YWxSZWN0VG9Mb2dpY2FsKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbG9naWNhbEJveEhl
aWdodCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSYgYmFz
aWNTaGFwZSwgY29uc3QgTGEKICAgICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVlcyA9
IHBvbHlnb24udmFsdWVzKCk7CiAgICAgICAgIHNpemVfdCB2YWx1ZXNTaXplID0gdmFsdWVzLnNp
emUoKTsKICAgICAgICAgQVNTRVJUKCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxGbG9hdFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZs
b2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB2YWx1ZXNTaXplOyBpICs9IDIpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgdmVydGV4
KAogICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWVzLmF0KGkpLCBib3hX
aWR0aCksCkBAIC0xNzksNyArMTc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6
Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKIAogICAg
IEludFJlY3QgaW1hZ2VSZWN0ID0gc25hcHBlZEludFJlY3QoaW1hZ2VSKTsKICAgICBJbnRSZWN0
IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKLSAgICBhdXRvIGludGVydmFs
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVp
Z2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CisgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVl
PFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55
KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVu
Y29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCks
IFVuYWNjZWxlcmF0ZWQpOwogCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNo
YXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hv
bGQsIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6
ZSgpKTsKKyAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RG
TW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CiAgICAgcmFzdGVyU2hhcGUtPm1f
d3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBt
YXJnaW47CiAgICAgcmV0dXJuIHJhc3RlclNoYXBlOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRSZWN0
JiByb3VuZGVkUmVjdCwgV3JpCiAKICAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCByb3VuZGVkUmVj
dC5yZWN0KCkud2lkdGgoKSwgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpKTsKICAgICBGbG9h
dFJvdW5kZWRSZWN0IGJvdW5kcyhyZWN0LCByb3VuZGVkUmVjdC5yYWRpaSgpKTsKLSAgICBhdXRv
IHNoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICBhdXRvIHNo
YXBlID0gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKICAgICBzaGFwZS0+bV93cml0aW5n
TW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaApp
bmRleCBjZDk0Zjg5YzAyYjBiOGMxMzUxOTQ1N2U0NGQwZGRhZjZkODdmMWZhLi45NDg0MzE3MTk0
N2MwMjMwOWFiN2Y0ZmIxYjk3YzI2Mzg4MmVlMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaApAQCAtMTEzLDcgKzExMyw3IEBA
IGNsYXNzIFNoYXBlT3V0c2lkZUluZm8gZmluYWwgewogICAgICAgICBJbmZvTWFwJiBpbmZvTWFw
ID0gU2hhcGVPdXRzaWRlSW5mbzo6aW5mb01hcCgpOwogICAgICAgICBpZiAoU2hhcGVPdXRzaWRl
SW5mbyogaW5mbyA9IGluZm9NYXAuZ2V0KCZrZXkpKQogICAgICAgICAgICAgcmV0dXJuICppbmZv
OwotICAgICAgICBhdXRvIHJlc3VsdCA9IGluZm9NYXAuYWRkKCZrZXksIHN0ZDo6bWFrZV91bmlx
dWU8U2hhcGVPdXRzaWRlSW5mbz4oa2V5KSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5mb01h
cC5hZGQoJmtleSwgbWFrZVVuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKICAgICAgICAg
cmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KICAgICBzdGF0aWMgdm9pZCBy
ZW1vdmVJbmZvKGNvbnN0IFJlbmRlckJveCYga2V5KSB7IGluZm9NYXAoKS5yZW1vdmUoJmtleSk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmlu
ZGV4IDBjOThmOTE2NmY3ZTE1Mjk3MDNiY2RiMmM4YzgzY2M4MGJiN2JmMjQuLjc0NGM5MGI4ZmIz
ZjUyNzY4YTUzOGQyMTM1ODM2MmNhNjM0ODI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzU4LDcgKzM1OCw3IEBAIFJlZjxCYXNp
Y1NoYXBlPiBCYXNpY1NoYXBlUGF0aDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwgZG91
YmxlIHByb2dyZXNzKSBjCiAKICAgICBhdXRvJiBmcm9tUGF0aCA9IGRvd25jYXN0PEJhc2ljU2hh
cGVQYXRoPihmcm9tKTsKIAotICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gc3RkOjptYWtl
X3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIHJlc3VsdGluZ1BhdGhCeXRl
cyA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVpbGRBbmltYXRlZFNW
R1BhdGhCeXRlU3RyZWFtKCpmcm9tUGF0aC5tX2J5dGVTdHJlYW0sICptX2J5dGVTdHJlYW0sICpy
ZXN1bHRpbmdQYXRoQnl0ZXMsIHByb2dyZXNzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gQmFzaWNT
aGFwZVBhdGg6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdGluZ1BhdGhCeXRlcykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCBlN2JiMDYxNjUwMmQ5
OWQ2ZGI0MzkyYmI0NjhhOWFiNDY5Y2U0OTRhLi4yYzEyZGQ5YjQwZGQ0MGIzYzBiZjY3NDkzMjJh
ZTJiMGZkMWUwNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
Q29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBJbWFnZUNvbnRlbnREYXRhIGZpbmFsIDog
cHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVD
b250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFs
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0
IGZpbmFsCiAgICAgewotICAgICAgICBhdXRvIGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFn
ZUNvbnRlbnREYXRhPihtX2ltYWdlLmNvcHlSZWYoKSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBt
YWtlVW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKICAgICAgICAg
aW1hZ2UtPnNldEFsdFRleHQoYWx0VGV4dCgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAg
IH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBUZXh0Q29udGVudERhdGEgZmluYWwgOiBwdWJs
aWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+
IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFs
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+
KG1fdGV4dCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJu
YWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90
ZXh0KTsgfQogCiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xh
c3MgQ291bnRlckNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBS
ZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250
ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KHN0ZDo6bWFrZV91bmlxdWU8
Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
b3VudGVyQ29udGVudERhdGE+KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkp
OwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gbV9jb3VudGVy
OwpAQCAtMTkwLDcgKzE5MCw3IEBAIGNsYXNzIFF1b3RlQ29udGVudERhdGEgZmluYWwgOiBwdWJs
aWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+
IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFs
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnREYXRh
PihxdW90ZSgpKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRl
cm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGVDb250ZW50RGF0YT4o
cXVvdGUoKSk7IH0KIAogICAgIFF1b3RlVHlwZSBtX3F1b3RlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggZjNkOTFkYzhkYmM4ZDllNDZj
NjAxYjk1ODQzYjlhOTUyZjNiMmQxZC4uMzAwMTRkMDRmNzBmYjkxODE3NDI4NzYwM2ZkZWFiNzIz
OTU2MTRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgRmlsbExheWVyOjpGaWxsTGF5ZXIoRmlsbExheWVyVHlwZSB0
eXBlKQogfQogCiBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25zdCBGaWxsTGF5ZXImIG8pCi0gICAg
OiBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0
KSA6IG51bGxwdHIpCisgICAgOiBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXll
cj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAgICAs
IG1feFBvc2l0aW9uKG8ubV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBvc2l0
aW9uKQpAQCAtMTE3LDcgKzExNyw3IEBAIEZpbGxMYXllcjo6fkZpbGxMYXllcigpCiAKIEZpbGxM
YXllciYgRmlsbExheWVyOjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQogewotICAgIG1f
bmV4dCA9IG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkg
OiBudWxscHRyOworICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxGaWxsTGF5ZXI+
KCpvLm1fbmV4dCkgOiBudWxscHRyOwogCiAgICAgbV9pbWFnZSA9IG8ubV9pbWFnZTsKICAgICBt
X3hQb3NpdGlvbiA9IG8ubV94UG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAyNDliYTQ3ZTU4NDNlY2M2MmU2ZmQ0ZjI2YWYx
Y2Y1MzhhMTYzZjljLi5mYjQzYzIwZTVjZTk5ZWNlMTlmNDUyZmQ5Zjg3OTY0ZDgxNGJiN2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAg
LTEwOSw3ICsxMDksNyBAQCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0
eWxlOjpjbG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CiB9CiAKIFJlbmRlclN0eWxlIFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKQEAgLTQwOSw3ICs0MDksNyBA
QCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldQogICAgIFJlbmRlclN0eWxlKiByZXN1bHQgPSBwc2V1
ZG8uZ2V0KCk7CiAKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzKQotICAgICAgICBtX2Nh
Y2hlZFBzZXVkb1N0eWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsK
KyAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMgPSBtYWtlVW5pcXVlPFBzZXVkb1N0eWxlQ2Fj
aGU+KCk7CiAKICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+YXBwZW5kKFdURk1vdmUocHNldWRv
KSk7CiAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBh
aW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byYgZGF0YSA9
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFkYXRhLmN1c3RvbVBh
aW50V2F0Y2hlZFByb3BlcnRpZXMpCi0gICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJv
cGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBk
YXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3Ry
aW5nPj4oKTsKICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMtPmFkZChuYW1l
KTsKIH0KIApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVu
dChSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxJbWFn
ZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKKyAgICBzZXRDb250
ZW50KG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwoKSks
IGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGJvb2wgYWRkKQpAQCAtMTMxMCwxMyArMTMxMCwxMyBAQCB2b2lkIFJlbmRlclN0eWxl
OjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkKICAgICBpZiAoYWRk
ICYmIGRhdGEuY29udGVudCkgewogICAgICAgICBhdXRvJiBsYXN0ID0gbGFzdENvbnRlbnQoKmRh
dGEuY29udGVudCk7CiAgICAgICAgIGlmICghaXM8VGV4dENvbnRlbnREYXRhPihsYXN0KSkKLSAg
ICAgICAgICAgIGxhc3Quc2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4o
c3RyaW5nKSk7CisgICAgICAgICAgICBsYXN0LnNldE5leHQobWFrZVVuaXF1ZTxUZXh0Q29udGVu
dERhdGE+KHN0cmluZykpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRD
b250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPihsYXN0KTsKICAgICAgICAgICAgIHRl
eHRDb250ZW50LnNldFRleHQodGV4dENvbnRlbnQudGV4dCgpICsgc3RyaW5nKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGEuY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOworICAgICAgICBkYXRhLmNvbnRlbnQgPSBtYWtlVW5p
cXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKTsKICAgICAgICAgYXV0byYgYWx0VGV4dCA9IGRh
dGEuYWx0VGV4dDsKICAgICAgICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQogICAgICAgICAgICAg
ZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFsdFRleHQpOwpAQCAtMTMyNywxMiArMTMyNywxMiBA
QCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29u
dGVudD4gY291bnRlciwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFjb3VudGVyKQogICAgICAgICBy
ZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0
YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPENv
dW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkKIHsKLSAgICBz
ZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBhZGQp
OworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFk
ZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnRBbHRUZXh0KGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVu
ZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCkKIHsKICAgICBhdXRvJiBtYXAgPSBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvdW50ZXJEaXJlY3RpdmVzOwogICAgIGlm
ICghbWFwKQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3RpdmVN
YXA+KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsK
ICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAtMTY3MSwxNCArMTY3MSwxNCBAQCB2b2lkIFJlbmRl
clN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygpCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6
ZW5zdXJlQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLmFuaW1hdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICAg
ICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gbWFrZVVuaXF1
ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
YW5pbWF0aW9uczsKIH0KIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5z
aXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJh
bnNpdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNp
dGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgICAgIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1h
dGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0
aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NW
R1JlbmRlclN0eWxlRGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZH
UmVuZGVyU3R5bGVEZWZzLmNwcAppbmRleCAyMGIyYTgxMTRiMGM4ZTllYmQ0ODI3MDc5YTk4MjBm
MmVjMGRjZGMyLi42ZTM3Y2Y4ZmI4YWJhNTVlYzMzMGE5NjAzM2E4YTk1NGM3Y2IwNGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVE
ZWZzLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFk
b3dTVkdEYXRhKCkKIAogaW5saW5lIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdE
YXRhKGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0
eWxlU2hhZG93U1ZHRGF0YT4oKQotICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IHN0ZDo6bWFr
ZV91bmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQorICAgICwgc2hh
ZG93KG90aGVyLnNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykg
OiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hh
ZG93RGF0YS5jcHAKaW5kZXggM2Q2MWM5NGMwMTY2MTYwODU4ZGFiZDg0MDlmYzQwODY3MGU1MDFj
YS4uYzE3ZWFmODU5YjBiZmFhN2RhYmMwMDhkNGU3NDBmYzYzMGE0YjgzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMzMsNyArMzMsNyBA
QCBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCiAgICAgLCBtX2Nv
bG9yKG8ubV9jb2xvcikKICAgICAsIG1fc3R5bGUoby5tX3N0eWxlKQogICAgICwgbV9pc1dlYmtp
dEJveFNoYWRvdyhvLm1faXNXZWJraXRCb3hTaGFkb3cpCi0gICAgLCBtX25leHQoby5tX25leHQg
PyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQorICAg
ICwgbV9uZXh0KG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby5tX25leHQpIDog
bnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGFkMmNiZDk1N2VlZjgyNTYw
Y2ZiMzUyZTlmNTBiMzllNjMzYTI2ZmYuLjk2ZGJiYTAwN2U2YTY0YTdkNjk3YTI5YTIxZDYyMWFk
NDQ3NTRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBpbmxpbmUg
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHls
ZVJhcmVJbmhlcml0ZWREYQogICAgICwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihvLnZp
c2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IpCiAgICAgLCBjYXJldENvbG9yKG8uY2FyZXRDb2xv
cikKICAgICAsIHZpc2l0ZWRMaW5rQ2FyZXRDb2xvcihvLnZpc2l0ZWRMaW5rQ2FyZXRDb2xvcikK
LSAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dE
YXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCB0ZXh0U2hhZG93KG8udGV4dFNo
YWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8udGV4dFNoYWRvdykgOiBudWxscHRyKQog
ICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQpCiAg
ICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNw
cAppbmRleCA2ZmJiMmI3YjBjM2ViMDNlODY5YTFlYWFjOTE2MTExOWM5YzYxZTliLi5iZGQwMTkx
NWFhMjc4ZGQ2YTY2NDhmZjRjM2ZiZGIzZmNjZDE0MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwg
c2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgogICAgICwgY29udGVudChv
LmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAgICwgY291bnRlckRp
cmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRp
cmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKKyAgICAsIGNvdW50
ZXJEaXJlY3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBtYWtlVW5pcXVlPENvdW50ZXJEaXJl
Y3RpdmVNYXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCiAgICAgLCBhbHRUZXh0
KG8uYWx0VGV4dCkKLSAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlx
dWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBib3hTaGFkb3co
by5ib3hTaGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBudWxs
cHRyKQogICAgICwgd2lsbENoYW5nZShvLndpbGxDaGFuZ2UpCiAgICAgLCBib3hSZWZsZWN0KG8u
Ym94UmVmbGVjdCkKLSAgICAsIGFuaW1hdGlvbnMoby5hbmltYXRpb25zID8gc3RkOjptYWtlX3Vu
aXF1ZTxBbmltYXRpb25MaXN0Pigqby5hbmltYXRpb25zKSA6IG51bGxwdHIpCi0gICAgLCB0cmFu
c2l0aW9ucyhvLnRyYW5zaXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigq
by50cmFuc2l0aW9ucykgOiBudWxscHRyKQorICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMg
PyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKKyAg
ICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+
KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCiAgICAgLCBtYXNrKG8ubWFzaykKICAgICAsIG1h
c2tCb3hJbWFnZShvLm1hc2tCb3hJbWFnZSkKICAgICAsIHBhZ2VTaXplKG8ucGFnZVNpemUpCkBA
IC0xNzAsNyArMTcwLDcgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIGp1c3RpZnlJ
dGVtcyhvLmp1c3RpZnlJdGVtcykKICAgICAsIGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYpCiAg
ICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykKLSAgICAsIGN1c3RvbVBh
aW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMpIDogbnVsbHB0cikKKyAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5j
dXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+
KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKICNpZiBFTkFCTEUo
UE9JTlRFUl9FVkVOVFMpCiAgICAgLCB0b3VjaEFjdGlvbnMoby50b3VjaEFjdGlvbnMpCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAK
aW5kZXggMmM2ZjMxNzhlZWIyNmM3YjJjMGQ5NWFlMTA4YjdlZmNjNmUyMmM0ZS4uMjRjZGU0YmQ2
MWU3MTRjMjMyM2I5ZTVjZDJjZjI2OWUyODQ1ZjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVuZGVy
U1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKICAgICAsIG1f
bmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3VyY2Uo
bWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogICAgIGltYWdlUmVzb3VyY2Uo
KS5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAzYzMxMDU2ZDFjYWIxZmVhMTA0OTA3ODBkMDBj
OGRjZDJjNzk4MDY4Li5iYTFjZDA1MmRhZGFhMWNlMTg0MWM3YzIzY2FmMzNmYWE0ZTM0N2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIFJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dy
YXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsCiAKIHN0ZDo6dW5pcXVl
X3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3go
KQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVGbG93Qm94Pigq
dGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlz
KTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJv
eDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZVRleHQuY3BwCmluZGV4IDY3ZTZmOTg5N2QyNzc0NGZkNDEzM2ZmMjc2NzE0YzRlOWRhNjY1
YjAuLmRiZjQ5MDNmODlmNGRjOTJlZGZmMzA1MzkyNTg2OWYzMmUyZDk5YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApA
QCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAKIHN0ZDo6dW5pcXVl
X3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KCkK
IHsKLSAgICBhdXRvIGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW5saW5lVGV4dEJveD4oKnRo
aXMpOworICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7
CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAgIHJldHVybiBib3g7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDFiM2VmMjRjYzkyZDIwNTJhMzRhYWQyMDg4MjMzMGUx
YTEyM2I4NGYuLjFhZDI2NDk2NDY3MDljMjNmMGRiOWNmYWU0Yjg2M2MyNDdiMzY5MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJC
dWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAg
ICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gZmlsdGVyLnRhcmdldEJvdW5kaW5nQm94
KCk7CiAKICAgICAvLyBBZGQgZWZmZWN0cyB0byB0aGUgYnVpbGRlcgotICAgIGF1dG8gYnVpbGRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3Jl
YXRlKGZpbHRlcikpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVp
bGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOwogICAgIGJ1aWxkZXItPnNldFBy
aW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpKTsKICAgICBidWls
ZGVyLT5zZXRUYXJnZXRCb3VuZGluZ0JveCh0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgCkBAIC0x
MjIsNyArMTIyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJj
ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBBbHJlYWR5IGJ1aWx0LCBvciB3ZSdyZSBpbiBhIGN5Y2xlLCBvciB3ZSdyZSBtYXJr
ZWQgZm9yIHJlbW92YWwuIFJlZ2FyZGxlc3MsIGp1c3QgZG8gbm90aGluZyBtb3JlIG5vdy4KICAg
ICB9CiAKLSAgICBhdXRvIGZpbHRlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckRhdGE+
KCk7CisgICAgYXV0byBmaWx0ZXJEYXRhID0gbWFrZVVuaXF1ZTxGaWx0ZXJEYXRhPigpOwogICAg
IEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94
KCk7CiAKICAgICBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzID0gU1ZHTGVuZ3RoQ29udGV4dDo6cmVz
b2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJFbGVtZW50PigmZmlsdGVyRWxlbWVudCgpLCBmaWx0ZXJF
bGVtZW50KCkuZmlsdGVyVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHAKaW5kZXggZDhhZDA4MDQ2NmM1YzZkOWVlY2YwNzhjZGZmNjQyNmM2MTRhMGNlMi4uNTUy
Y2U1YTMzYTgwNjJlNmJlZTBiMDRhZTNmMTYwZjA5OWViNTJmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojph
cHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KIAogICAgIGF1
dG8mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKCZyZW5kZXJlciwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZ3JhZGllbnREYXRhKQotICAgICAgICBncmFkaWVu
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKKyAgICAgICAgZ3JhZGll
bnREYXRhID0gbWFrZVVuaXF1ZTxHcmFkaWVudERhdGE+KCk7CiAKICAgICBib29sIGlzUGFpbnRp
bmdUZXh0ID0gcmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBw
bHlUb1RleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IGFhNTc2NWVkMzc5YjZhYjFiOTQ0NzI2
ZjViNWVlNDU0MzgzYzQ2NGUuLjRjODE5YjliYzU1ZGMyYmZhODJmYmJjMDk3ZjYzNzU4NWI1YjEy
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IFJlbmRlCiAKICAgICBib29sIG1pc3NpbmdNYXNrZXJEYXRhID0gIW1fbWFza2VyLmNvbnRhaW5z
KCZyZW5kZXJlcik7CiAgICAgaWYgKG1pc3NpbmdNYXNrZXJEYXRhKQotICAgICAgICBtX21hc2tl
ci5zZXQoJnJlbmRlcmVyLCBzdGQ6Om1ha2VfdW5pcXVlPE1hc2tlckRhdGE+KCkpOworICAgICAg
ICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPE1hc2tlckRhdGE+KCkpOwogCiAg
ICAgTWFza2VyRGF0YSogbWFza2VyRGF0YSA9IG1fbWFza2VyLmdldCgmcmVuZGVyZXIpOwogICAg
IEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRl
cmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuaAppbmRleCAyOWU4ZTdjMjQ3NTY1ODc5MmVlNGVkNGVkMDgyMGZhZWVj
OWJkYzBjLi5kZjAxN2JhMWJmYzBjY2Y3YWVhOTNhM2JiMmY3ZmM3ODhmNjk2Yzc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIAogc3RydWN0IE1hc2tlckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFn
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBjYzJjYmZjZjBmZTlhNTllY2UxNWY1MmYz
NTcyZGI1OWQxNjMyMGQ2Li4zMWJjNWYxOTMxYmRhZTUwYWFjNjYxMzU5ZmMwYTI2ZjE3ODU4NmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgUGF0dGVybkRhdGEqIFJl
bmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBPcHQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBCdWlsZCBwYXR0ZXJu
LgotICAgIGF1dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EYXRhPigp
OworICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwogICAg
IHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVh
c2VOb25OdWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNl
IHRyYW5zZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmNwcAppbmRleCAzNGIwYWU3NWJkYzAwNTY1NzZkNTEzODAxODVlZmU2YmM3MmM3
MDZlLi42YTY3MTE4ZmYxYjI1OGIzMDNjOTU2Mzg1OTNmNDc0ZWU4OWJiZTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtNzksNyAr
NzksNyBAQCBSZW5kZXJTVkdTaGFwZTo6flJlbmRlclNWR1NoYXBlKCkgPSBkZWZhdWx0OwogCiB2
b2lkIFJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKIHsKLSAgICBtX3Bh
dGggPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KCZncmFw
aGljc0VsZW1lbnQoKSkpOworICAgIG1fcGF0aCA9IG1ha2VVbmlxdWU8UGF0aD4ocGF0aEZyb21H
cmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CiAgICAgcHJvY2Vzc01hcmtlclBv
c2l0aW9ucygpOwogCiAgICAgbV9maWxsQm91bmRpbmdCb3ggPSBjYWxjdWxhdGVPYmplY3RCb3Vu
ZGluZ0JveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMu
Y3BwCmluZGV4IGJmNzg2NDQzZGRkNjBkNjIxYmNkNTc5Yjg3NzBlZGNkOTFkMjlmYTkuLjljNzM3
Y2FmZjhiOTI3NmNjNDEwNjAyZjU3OWE5ZjM2NGU1YTA4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29s
IFNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcihSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBw
ZXIpCiAgICAgQVNTRVJUKGNsaXBwZXItPnJlc291cmNlVHlwZSgpID09IENsaXBwZXJSZXNvdXJj
ZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBt
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVy
TWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VV
bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJN
YXNrZXJEYXRhLT5jbGlwcGVyID0gY2xpcHBlcjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyOSw3
ICs1MjksNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0RmlsdGVyKFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyKiBmaWx0ZXIpCiAgICAgQVNTRVJUKGZpbHRlci0+cmVzb3VyY2VUeXBlKCkgPT0gRmls
dGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkK
LSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xp
cHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRh
dGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyID0gZmlsdGVyOwogICAgIHJldHVybiB0cnVlOwpA
QCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydChSZW5k
ZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQpCiAgICAgQVNTRVJUKG1hcmtlclN0YXJ0
LT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21h
cmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2Vy
RGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigp
OwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1hcmtlclN0YXJ0OwogICAgIHJl
dHVybiB0cnVlOwpAQCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJNaWQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlck1pZCkKICAgICBBU1NFUlQobWFy
a2VyTWlkLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYg
KCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJE
YXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSBtYXJrZXJNaWQ7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC01OTIsNyArNTkyLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1h
cmtlckVuZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyRW5kKQogICAgIEFTU0VSVCht
YXJrZXJFbmQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBp
ZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtl
ckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlckVuZCA9IG1hcmtlckVuZDsKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0
TWFza2VyKFJlbmRlclNWR1Jlc291cmNlTWFza2VyKiBtYXNrZXIpCiAgICAgQVNTRVJUKG1hc2tl
ci0+cmVzb3VyY2VUeXBlKCkgPT0gTWFza2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAg
IG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNr
ZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyID0gbWFz
a2VyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgU1ZHUmVzb3Vy
Y2VzOjpzZXRGaWxsKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKQogICAgICAgICAg
ICB8fCBmaWxsLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7
CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJv
a2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9r
ZURhdGEtPmZpbGwgPSBmaWxsOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjU5LDcgKzY1OSw3IEBA
IGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIq
IHN0cm9rZSkKICAgICAgICAgICAgfHwgc3Ryb2tlLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxH
cmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAg
ICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigp
OworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4o
KTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSA9IHN0cm9rZTsKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3Vy
Y2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXND
YWNoZS5jcHAKaW5kZXggMTkxOTVhYTFkYWJjNjZlNGIzNTY1OTcyZWM5MWY4OTQ3N2Y0MDM5Yi4u
MWVlYjc4ZjU3YjNlYmIzMWI0Y2RlOGU1MzAyZGRlMDllMDQ4YzBiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJlbmRlcmVy
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdAogICAgIEFTU0VSVCghbV9jYWNoZS5jb250
YWlucygmcmVuZGVyZXIpKTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBhbGwgcmVzb3VyY2Vz
IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFzc2VkIFJlbmRlck9iamVjdAotICAgIGF1dG8gbmV3UmVz
b3VyY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7CisgICAgYXV0byBuZXdS
ZXNvdXJjZXMgPSBtYWtlVW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKICAgICBpZiAoIW5ld1Jlc291
cmNlcy0+YnVpbGRDYWNoZWRSZXNvdXJjZXMocmVuZGVyZXIsIHN0eWxlKSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRN
ZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRN
ZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggMzI0MTAyNTg0YzFmMTEzZDBlZWQzMzIxNGE2N2Y1NTM0
YWIwZjU5YS4uODEwYTBiODgwYThhYTRkYWUwMmZhYjQ0NmE5NDFlZGQ5YzVhNzFkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWls
ZGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjpp
bml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAgICAg
aWYgKG1faXNDb21wbGV4VGV4dCkKICAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbnVs
bHB0cjsKICAgICBlbHNlCi0gICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2lkdGhJdGVyYXRvcj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsKKyAgICAgICAgbV9z
aW1wbGVXaWR0aEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9u
dCwgbV9ydW4pOwogfQogCiBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmlu
ZGV4IGQzN2JlZThjYmNlNTU2MTUxMWIyNGUzNjRlMWFmNjRhYWQ3YWE3NWQuLmU2YjI3MzIwZDky
ZmU4NTZkODM3NDEwOGVkOTU0MmUwOTFlZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMTIyLDIy
ICsxMjIsMjIgQEAgc3RhdGljIHZvaWQgZ2V0SW5saW5lUnVuKFJlbmRlck9iamVjdCogc3RhcnQs
IFJlbmRlck9iamVjdCogYm91bmRhcnksIFJlbmRlck9iamUKIAogUmVuZGVyVHJlZUJ1aWxkZXI6
OlJlbmRlclRyZWVCdWlsZGVyKFJlbmRlclZpZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykK
LSAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rmlyc3RMZXR0ZXI+
KCp0aGlzKSkKLSAgICAsIG1fbGlzdEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxMaXN0PigqdGhp
cykpCi0gICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ29s
dW1uPigqdGhpcykpCi0gICAgLCBtX3RhYmxlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPFRhYmxl
PigqdGhpcykpCi0gICAgLCBtX3J1YnlCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVieT4oKnRo
aXMpKQotICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNv
bnRyb2xzPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJs
b2NrPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxC
bG9ja0Zsb3c+KCp0aGlzKSkKLSAgICAsIG1faW5saW5lQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVl
PElubGluZT4oKnRoaXMpKQotICAgICwgbV9zdmdCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8U1ZH
PigqdGhpcykpCisgICAgLCBtX2ZpcnN0TGV0dGVyQnVpbGRlcihtYWtlVW5pcXVlPEZpcnN0TGV0
dGVyPigqdGhpcykpCisgICAgLCBtX2xpc3RCdWlsZGVyKG1ha2VVbmlxdWU8TGlzdD4oKnRoaXMp
KQorICAgICwgbV9tdWx0aUNvbHVtbkJ1aWxkZXIobWFrZVVuaXF1ZTxNdWx0aUNvbHVtbj4oKnRo
aXMpKQorICAgICwgbV90YWJsZUJ1aWxkZXIobWFrZVVuaXF1ZTxUYWJsZT4oKnRoaXMpKQorICAg
ICwgbV9ydWJ5QnVpbGRlcihtYWtlVW5pcXVlPFJ1Ynk+KCp0aGlzKSkKKyAgICAsIG1fZm9ybUNv
bnRyb2xzQnVpbGRlcihtYWtlVW5pcXVlPEZvcm1Db250cm9scz4oKnRoaXMpKQorICAgICwgbV9i
bG9ja0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9jaz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0Zsb3dC
dWlsZGVyKG1ha2VVbmlxdWU8QmxvY2tGbG93PigqdGhpcykpCisgICAgLCBtX2lubGluZUJ1aWxk
ZXIobWFrZVVuaXF1ZTxJbmxpbmU+KCp0aGlzKSkKKyAgICAsIG1fc3ZnQnVpbGRlcihtYWtlVW5p
cXVlPFNWRz4oKnRoaXMpKQogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgLCBtX21hdGhNTEJ1aWxk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxNYXRoTUw+KCp0aGlzKSkKKyAgICAsIG1fbWF0aE1MQnVpbGRl
cihtYWtlVW5pcXVlPE1hdGhNTD4oKnRoaXMpKQogI2VuZGlmCi0gICAgLCBtX2NvbnRpbnVhdGlv
bkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRpb24+KCp0aGlzKSkKKyAgICAsIG1f
Y29udGludWF0aW9uQnVpbGRlcihtYWtlVW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCisgICAgLCBtX2Z1bGxTY3JlZW5CdWlsZGVy
KG1ha2VVbmlxdWU8RnVsbFNjcmVlbj4oKnRoaXMpKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoIXNfY3VycmVudCB8fCAmbV92aWV3ICE9ICZzX2N1cnJlbnQtPm1fdmlldyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRh
dGVyLmNwcAppbmRleCBmNDJiY2EzYjM0NjllNmQ1NmU2YTRkN2I5NDQ1ZTE2N2IxMTExYjJiLi4y
Njg1NDRhMWU2NWJmYTNkMzhmNDNlYjViYmNlNGVlZWNhYWM0NmIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyoKIAogUmVuZGVyVHJlZVVw
ZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2dlbmVyYXRlZENvbnRlbnQoc3RkOjptYWtlX3VuaXF1
ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCisgICAgLCBtX2dlbmVyYXRlZENvbnRlbnQobWFr
ZVVuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCiAgICAgLCBtX2J1aWxkZXIocmVuZGVy
VmlldygpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1
dEJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCmluZGV4
IDdmZTdmNjg3MzIwNDEwZWYwNDgzODdkNDgxZjkyN2IxMmMyMzgzYWMuLmI5YzcyZWI4ODBlOWJi
ODc1OThmNDE0NDA3N2QwMjMwMTY2NjViODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
cGxheS9Vc2VySW5wdXRCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklu
cHV0QnJpZGdlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBjbGFzcyBJbnB1dFNvdXJjZSB7CiB9
OwogCiBjbGFzcyBVc2VySW5wdXRCcmlkZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJJbnB1dEJyaWRnZSk7CiBwdWJsaWM6CiAg
ICAgVXNlcklucHV0QnJpZGdlKFBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZh
bGlkYXRvci5jcHAKaW5kZXggZGFlMTFjYjJmNjI4OTkxODQ1M2ExMjgwOWFlNDNiODEyNGI2YjEy
Yi4uNmQ2OTVhNjYwZDBlNGUwNDVhMjZkYWJlMzMzMWVjYTI2ZmFkMmViZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGlj
IGJvb2wgc2hvdWxkRGlydHlBbGxTdHlsZShjb25zdCBWZWN0b3I8U3R5bGVTaGVldENvbnRlbnRz
Kj4mIHNoZWV0cykKIH0KIAogSW52YWxpZGF0b3I6OkludmFsaWRhdG9yKGNvbnN0IFZlY3RvcjxT
dHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBt
ZWRpYVF1ZXJ5RXZhbHVhdG9yKQotICAgIDogbV9vd25lZFJ1bGVTZXQoc3RkOjptYWtlX3VuaXF1
ZTxSdWxlU2V0PigpKQorICAgIDogbV9vd25lZFJ1bGVTZXQobWFrZVVuaXF1ZTxSdWxlU2V0Pigp
KQogICAgICwgbV9ydWxlU2V0KCptX293bmVkUnVsZVNldCkKICAgICAsIG1fZGlydGllc0FsbFN0
eWxlKHNob3VsZERpcnR5QWxsU3R5bGUoc2hlZXRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVsYXRpb25zLmNwcAppbmRleCA0ZDgxNDhiNGUzMWQ3NGQ2YTBhNTE3NTRkZWU1ZWFiODA3
NTlhYmFhLi4wNjJkNTk2NGQ3N2VjNWRiODNiM2Y0MWFjYmFhODdlZmNlOThkZDZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxSZWxhdGlvbnM+IGNvbW1pdFJlbGF0aW9uc1RvUmVuZGVyU3R5bGUoUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zCiAKICAgICBhdXRvIGFwcGVuZFN0eWxlUmVsYXRpb24gPSBbJnJl
bWFpbmluZ1JlbGF0aW9uc10gKGNvbnN0IFJlbGF0aW9uJiByZWxhdGlvbikgewogICAgICAgICBp
ZiAoIXJlbWFpbmluZ1JlbGF0aW9ucykKLSAgICAgICAgICAgIHJlbWFpbmluZ1JlbGF0aW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVsYXRpb25zPigpOworICAgICAgICAgICAgcmVtYWluaW5nUmVs
YXRpb25zID0gbWFrZVVuaXF1ZTxSZWxhdGlvbnM+KCk7CiAgICAgICAgIHJlbWFpbmluZ1JlbGF0
aW9ucy0+YXBwZW5kKHJlbGF0aW9uKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2Nv
cGUuY3BwCmluZGV4IDlmMGQxYWQ3NDkwYmZlYWIyNDA3Y2U3YmM4OGIwOTUxMTZkMGIyMjIuLmRj
YjY1YmMwOWMzNDc3OWI2M2EyOTMyNGUyNGQzNzJiZmM2YTIzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlU2NvcGUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFN0eWxlUmVzb2x2ZXImIFNjb3BlOjpy
ZXNvbHZlcigpCiAgICAgaWYgKCFtX3Jlc29sdmVyKSB7CiAgICAgICAgIFNldEZvclNjb3BlPGJv
b2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciwg
dHJ1ZSB9OwogCi0gICAgICAgIG1fcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVz
b2x2ZXI+KG1fZG9jdW1lbnQpOworICAgICAgICBtX3Jlc29sdmVyID0gbWFrZVVuaXF1ZTxTdHls
ZVJlc29sdmVyPihtX2RvY3VtZW50KTsKIAogICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkgewog
ICAgICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsKQEAg
LTU2Myw3ICs1NjMsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBTY29w
ZTo6YWN0aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3IoKQogYm9vbCBTY29wZTo6YWN0aXZlU3R5
bGVTaGVldHNDb250YWlucyhjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCkgewot
ICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOworICAgICAg
ICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBtYWtlVW5p
cXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOwogICAgICAgICBmb3IgKGF1dG8m
IGFjdGl2ZVN0eWxlU2hlZXQgOiBtX2FjdGl2ZVN0eWxlU2hlZXRzKQogICAgICAgICAgICAgbV93
ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwLT5hZGQoYWN0aXZlU3R5
bGVTaGVldC5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVz
b2x2ZXIuY3BwCmluZGV4IDg0NmEyMzFhZDJiMThiNWQ3ZjI5NDkwMTZkMDlmMjIzZGQ2OWU4OGIu
LmEwMGY0ZmUwZjRjY2I1MmRkODMxYTk0ZTI2YTU4NjRlNWMxYjc5MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmUoKQogCiAgICAgbV9kaWRT
ZWVQZW5kaW5nU3R5bGVzaGVldCA9IG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLmhhc1BlbmRpbmdT
aGVldHNCZWZvcmVCb2R5KCk7CiAKLSAgICBtX3VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXBk
YXRlPihtX2RvY3VtZW50KTsKKyAgICBtX3VwZGF0ZSA9IG1ha2VVbmlxdWU8VXBkYXRlPihtX2Rv
Y3VtZW50KTsKICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKGFkb3B0UmVmKCpuZXcgU2NvcGUobV9k
b2N1bWVudCkpKTsKICAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnQobV9kb2N1bWVudCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4
IGJjNTE0MzRiMGIyYjhlMGJmNzdlNTdhNGE3NmU0ZDRiY2VlZTk5NjUuLjI1ZjM4NjNkMDc5NTRh
YzhkNmE2M2U2ODY0YTFmMDc2YjBkNTFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMoRG9jdW1l
bnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcmVzb3Vy
Y2VzQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKKyAgICAsIG1f
cmVzb3VyY2VzQ2FjaGUobWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKICAgICAsIG1f
YXJlQW5pbWF0aW9uc1BhdXNlZCghZG9jdW1lbnQucGFnZSgpIHx8ICFkb2N1bWVudC5wYWdlKCkt
PmlzVmlzaWJsZSgpKQogewogfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRF
eHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIEVsZW1l
bnQmIGVsCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIG51
bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0VsZW1lbnRzPigpOworICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7
CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZlbGVtZW50KTsKIAogICAgIGVsZW1l
bnQuc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEhhc2hTZXQ8
U1ZHRWxlbWVudCo+KiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNldE9mRWxlbWVudHNSZWZlcmVu
Y2luZ1RhcmdldChTVkdFCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVudFJl
ZmVyZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQmIHJlZmVyZW5jaW5nRWxlbWVudCwgU1ZHRWxlbWVu
dCYgcmVmZXJlbmNlZEVsZW1lbnQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2VsZW1lbnREZXBl
bmRlbmNpZXMuZW5zdXJlKCZyZWZlcmVuY2VkRWxlbWVudCwgWyZyZWZlcmVuY2luZ0VsZW1lbnRd
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTVkdFbGVtZW50Kj4+
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVmZXJlbmNpbmdFbGVtZW50
IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3Rk
Ojppbml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7
CiAgICAgfSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+YWRkKCZyZWZlcmVuY2luZ0VsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCmluZGV4IGE4MDk2ZGRhZGE4MWVhZDZhN2ExZWEzMjRjZDg1MDY3ZjVjMGIyOGIu
LmU0ZGUzYjc0OWYwYTAwMzliYzVjNGNmY2QwOGUxOTM5NmNkNjU2MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIEhh
c2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiBjcmVhdGVBdHRyaWJ1dGVOYW1l
VAogU1ZHRWxlbWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
LCBDcmVhdGVTVkdFbGVtZW50KQogICAgICwgU1ZHTGFuZ1NwYWNlKHRoaXMpCi0gICAgLCBtX3By
b3BlcnR5QW5pbWF0b3JGYWN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJvcGVydHlBbmltYXRv
ckZhY3Rvcnk+KCkpCisgICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KG1ha2VVbmlxdWU8
U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CkBAIC0yMDMs
NyArMjAzLDcgQEAgdm9pZCBTVkdFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5n
ZSBjaGFuZ2UpCiBTVkdFbGVtZW50UmFyZURhdGEmIFNWR0VsZW1lbnQ6OmVuc3VyZVNWR1JhcmVE
YXRhKCkKIHsKICAgICBpZiAoIW1fc3ZnUmFyZURhdGEpCi0gICAgICAgIG1fc3ZnUmFyZURhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9zdmdS
YXJlRGF0YSA9IG1ha2VVbmlxdWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOwogICAgIHJldHVybiAq
bV9zdmdSYXJlRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50
LmNwcAppbmRleCBhNzU4OTBmMzE4MDQ2OGQxNTI0YmVlODU0MzU5ZDAzNTZlYjUyMjJkLi44MGVj
N2ZjODYyOTJiNjNiYmJhODUxZTExZTEwNmZhMTUyZjkxNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEFmZmluZVRyYW5z
Zm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAog
QWZmaW5lVHJhbnNmb3JtKiBTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9y
bSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKLSAgICAgICAgbV9zdXBw
bGVtZW50YWxUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFmZmluZVRyYW5zZm9ybT4oKTsK
KyAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPEFmZmluZVRyYW5z
Zm9ybT4oKTsKICAgICByZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKaW5kZXggNmYwYWNhY2YxOWVlODUw
ZGI0ZTY5MTBkM2U4M2QyNjQ5NGQ2N2ViMC4uNDM0ZDkxZWIzZGY4YWQ4NzlmODM5YTQ4OTY2ODY3
ODBiNDA5ZjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKQEAgLTg2
LDcgKzg2LDcgQEAgY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW0gewogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CiAgICAgfQogCiAgICAg
RGF0YUl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAK
aW5kZXggZTA0MjNjZTk4MTVmYTBmMjU1NjNhM2I1NDMxNDA4NmFjMzU2ZmY0NC4uM2ViNTdhZDJm
MjFkZmE2NGI5YjExODAxZjQyNzI4MzYwMmI3NWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
dm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUoU1ZHU01JTEVsZW1lbnQqIGFuaW1hdGlv
biwgU1ZHRWxlbWVudCogdGFyZ2V0LAogICAgIEVsZW1lbnRBdHRyaWJ1dGVQYWlyIGtleSh0YXJn
ZXQsIGF0dHJpYnV0ZU5hbWUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25zVmVjdG9y
PiYgc2NoZWR1bGVkID0gbV9zY2hlZHVsZWRBbmltYXRpb25zLmFkZChrZXksIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNjaGVkdWxlZCkKLSAgICAgICAgc2NoZWR1bGVkID0g
c3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigpOworICAgICAgICBzY2hlZHVsZWQg
PSBtYWtlVW5pcXVlPEFuaW1hdGlvbnNWZWN0b3I+KCk7CiAgICAgQVNTRVJUKCFzY2hlZHVsZWQt
PmNvbnRhaW5zKGFuaW1hdGlvbikpOwogICAgIHNjaGVkdWxlZC0+YXBwZW5kKGFuaW1hdGlvbik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDQwZWU5OTE1
NTg1ZWNhOWExMDA0NGI5ZTMzMGM4NzUyODBjMjUxZTcuLjNiMjdkMDYwOGJmOTBmZGFhMGU1YjE1
NjAwZWE0YWQ1ZmUxMzRkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRh
Q2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQp
IHsKICAgICAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0
aEVtcHR5Q2xpZW50cygpOwotICAgICAgICBtX2Nocm9tZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOworICAgICAgICBtX2Nocm9tZUNsaWVudCA9
IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOwogICAgICAgICBwYWdlQ29u
ZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKIAogICAgICAg
ICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UgbWlnaHQg
bGVhayB0aGUgd29ybGQuCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZH
SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBUaGlz
IHdpbGwgYmVjb21lIGFuIGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxvYWQg
b3RoZXIKICAgICAgICAgLy8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93LCBi
ZWNhdXNlIFNWR0ltYWdlIGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRvcC1s
ZXZlbCBkb2N1bWVudC4KLSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8
UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgICAgICBtX3BhZ2UtPnNldHRp
bmdzKCkuc2V0TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygp
LnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0
UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IGQ5NzAzMDJhZGY4NjU4NTUw
OWM2NTA4ZDUwNDk1MmEyNTUzMjM2MmIuLmM3N2FlMDhiYWM2NWMzYzJjZmM4OTc0ZmEzM2U3NjQ2
MGNlOTdmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgUmVuZGVyT2Jq
ZWN0OwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVyQnVpbGRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNo
U2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0
eS5oCmluZGV4IGU1ZWZhYWVhNzExMWJjNmM5NTdkOTcyZDc0NTQ4ZGU5MmQ4YTEzM2UuLmNlYmFh
MzYzYmY1MjdiYmIzOGU1NjdkM2UzZDQyYmY4NDMxMDJhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3Bl
cnR5LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0
eSA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
cm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5PgogICAgIHN0YXRpYyBSZWY8QW5pbWF0ZWRQcm9wZXJ0eT4gY3JlYXRlKFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgc3RkOjptYWtlX3VuaXF1ZTxE
ZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZSwgUHJvcGVydHlUeXBlPj4oKSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50
LCBtYWtlVW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5
cGU+PigpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCB0
eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXggYWE2MWJmZjQzNDQ4OGNhNjc0YjA0ODg5ZWM3NDU4
YTMzNjAyMGI4ZC4uZTAyMzRmMzU5MTI5Mjk1NzljZjNlMmIxNjgwOTQyNTI4ZjA3YWExMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgU1ZHRWxlbWVudDsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSwgdHlwZW5hbWUgQW5pbWF0aW9u
RnVuY3Rpb24+CiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IgOiBwdWJsaWMgU1ZH
QXR0cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHVzaW5nIEFuaW1hdG9yQW5pbWF0ZWRQcm9wZXJ0eSA9IEFuaW1hdGVkUHJvcGVydHk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAyODg3NDFiMTI5MDVjYjg1MTQz
MDU0MDkwYzRlMmM5MTM5YjM1YmYzLi5kMDczN2FjYmEzMzFmZTEyMzQ3YjgzNGZmN2FhMzAxMDBh
ZDE1NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC01MCw3ICs1MCw3IEBA
IGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xl
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xl
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjgs
NyArNjgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQQogCiAgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJv
b2xlYW4+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtODksNyArODksNyBAQCBjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3Ig
ZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAg
IHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1h
dGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxF
bnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTEx
LDcgKzExMSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
SW50ZWdlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmlt
YXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIAogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUs
IFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwg
bGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3Ro
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiAKICAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTE3Miw3ICsxNzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51
bWJlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxT
VkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE4OSw3ICsxODksNyBAQCBjbGFz
cyBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVk
TnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKIHBy
aXZhdGU6CkBAIC0yMDYsNyArMjA2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjwKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMjQsNyArMjI0LDcgQEAg
Y2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3I8U1YKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUG9pbnRM
aXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiBw
cml2YXRlOgpAQCAtMjQzLDcgKzI0Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjYyLDcgKzI2Miw3IEBAIGNs
YXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlBCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjgxLDcgKzI4MSw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjxTVkdBbmltCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUmVjdD4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTgsNyArMjk4LDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiYg
YW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zMzgs
NyArMzM4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG8KIHB1YmxpYzoKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yLmgK
aW5kZXggYzcyM2FjZmYyNjA2MDFhMWU1MGQzMjY5NWFlM2NlOGM5MjYwMjUxNS4uYzg5MDUwMTY5
ZDNjMWE0MzNhYjdhMjdiYTFhZWNlYTMyZGJiNWY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5p
bWF0b3IuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBTVkdFbGVtZW50OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IxLCB0eXBlbmFtZSBBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3IyPgogY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvciA6IHB1
YmxpYyBTVkdBdHRyaWJ1dGVBbmltYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdXNpbmcgQW5pbWF0ZWRQcm9wZXJ0eTEgPSB0eXBlbmFtZSBBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3IxOjpBbmltYXRvckFuaW1hdGVkUHJvcGVydHk7CiAgICAgdXNpbmcg
QW5pbWF0ZWRQcm9wZXJ0eTIgPSB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IyOjpB
bmltYXRvckFuaW1hdGVkUHJvcGVydHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcklt
cGwuaAppbmRleCA0ZWRhMzRjOWIxODg4ZmZkNmQzZDY2MzJjZjBjZjZkMzNhNmZhOWUxLi4zOTdm
ZjA5MTU5NDAwZDMzYzA1MmIxMWQ4MjhjYjhlMzdiM2M4MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlQYWlyQW5pbWF0b3JJbXBsLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRB
bmdsZU9yaWVudEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWly
QW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZDEsIFJlZjxT
VkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0
aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRB
bmdsZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTEz
LDcgKzExMyw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hCiBwdWJsaWM6CiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdB
bmltYXRlZEludGVnZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmlt
YXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdB
bmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5p
bWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIFNWR0FuaW1h
dGVkTnVtYmVyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQ
YWlyQW5pbWF0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkMSwg
UmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVk
TnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlclBhaXJBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaApp
bmRleCA2NGE2NWIxODYyZmZiOTY5NjAzYzcxNTYwN2I1NDRmNTU2ZTAwODNhLi4wMjJlZGVkYTgy
MWI1MzM1NWIzZmRkMzk1OGYyNDM2ODAxOWFhZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKQEAgLTUyLDYgKzUyLDcg
QEAgZW51bSBjbGFzcyBDYWxjTW9kZSA6IHVpbnQ4X3QgewogfTsKIAogY2xhc3MgU1ZHQXR0cmli
dXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFNWR0F0dHJpYnV0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
CiAgICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaApp
bmRleCAyNjRjMzZiNjkwNzRjY2YzZTJlMjlkMjY3NzIxY2Y1Mzc0NTcwMzExLi5hMzVlMjUwYTli
MTUxZjllODk3Zjg1ZjYzNjdjMzg3ZGJiM2NhNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24gOiBwdWJsaWMgU1ZHRGVjb3Jh
dGVkUHJpbWl0aXZlPERlY29yYXRpb25UeXBlLCBFbnUKICAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgRW51bVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2ludGVncmFsPERlY29yYXRpb25UeXBlPjo6dmFsdWUsICJEZWNvcmF0aW9uVHlwZSBmb3Jt
IGVudW0gc2hvdWxkIGJlIGludGVncmFsLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOwogICAgIH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRl
ZFByaW1pdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVk
UHJpbWl0aXZlLmgKaW5kZXggZTJhNTI0MzEyNGYwNzNmODVhZDhkZDZhOTZkZjRhNjUzNTBiNjdj
OC4uOWI2NjEyN2JjNTllMmY1MWYwMTAxOTIxNmZhMmQ1NjIxNTNjYTdkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJpbWl0aXZlLmgK
QEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvcmF0aW9uVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlPgogY2xhc3MgU1ZHRGVjb3Jh
dGVkUHJpbWl0aXZlIDogcHVibGljIFNWR0RlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBl
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgdXNpbmcgQmFzZSA9IFNWR0Rl
Y29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlPjsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlB
bmltYXRvci5oCmluZGV4IDQxMjE3MjIwYmRmY2ZlZmY2N2MxNjA5MTNhZDE0ZDZiOTliYTE0MmMu
LjY4YjJlMGIxMTM3YWRlOGQzN2Y4MGUwZTI5OGI1ZGUyNGQwMWE4MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU1ZHUHJpbWl0aXZlUHJvcGVydHlB
bmltYXRvciA6IHB1YmxpYyBTVkdQcm9wZXJ0eUFuaW1hdG9yPEFuaW1hdGlvbkZ1bmN0aW8KIHB1
YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1ByaW1p
dGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCmluZGV4IGFkNTBkNDIzNjI5Njk0
MmQxZGM4NzE4YTJkYThlNmFkZjhkMWJjY2IuLjVlMzAxOGY1YTQwMmE5YzdmMTI5ZDQxZDQxOWFj
NWU5NDlmZWUwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaApAQCAtMzQsNiArMzQsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHUHJvcGVydHlBbmlt
YXRvckZhY3RvcnkoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAx
MTg4ODZjNGY4YmI3MjM2YTQ0NmZmYWQwMzg2OWZmMGIwZGNkZTk1Li5mZDNkYzk2MGZmYTdkMzEy
OTAxMzdkNDUyY2RlMWEyODc5YTdlZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC0z
OSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1Zh
bHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQ
cm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9w
ZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
LCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCog
dGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCmlu
ZGV4IDVlZThhYzNkMGY0ZTEyYzYyYTVlZmMwMGZmNTNiNTkwZTQwMGYzNjguLmFlOTRlMjllZDRi
ODYxM2I5OWNkOTc0ODZlZDBiMDYyODI2YzAyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRv
ckltcGwuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0QW5pbWF0b3IgZmlu
YWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcjxTVkdMZW5ndAogcHVibGlj
OgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0
aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVuZ3RoTGlz
dEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aExpc3RBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZv
aWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGMxMTMxZDI1YjM4OGJiYTgz
NjY1M2QyOTcwOGU2YTViYmU0YmRmYzQuLjI0Mzc4OWJiOWQyNzlhNmU4NTNlMDg2NDRiNjRiZWU4
NTFlNWVlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cApAQCAtMjMxLDYgKzIzMSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0
b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogfQogCiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzV3Jh
cHBlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzV3JhcHBlcihQYWdl
KiBwYWdlKQogICAgICAgICA6IG1faW50ZXJuYWxTZXR0aW5ncyhJbnRlcm5hbFNldHRpbmdzOjpj
cmVhdGUocGFnZSkpIHsgfQpAQCAtMjUyLDcgKzI1Myw3IEBAIGNvbnN0IGNoYXIqIEludGVybmFs
U2V0dGluZ3M6OnN1cHBsZW1lbnROYW1lKCkKIEludGVybmFsU2V0dGluZ3MqIEludGVybmFsU2V0
dGluZ3M6OmZyb20oUGFnZSogcGFnZSkKIHsKICAgICBpZiAoIVN1cHBsZW1lbnQ8UGFnZT46OmZy
b20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpCi0gICAgICAgIFN1cHBsZW1lbnQ8UGFnZT46OnBy
b3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFs
U2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CisgICAgICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3Zp
ZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEludGVybmFsU2V0dGluZ3NX
cmFwcGVyPihwYWdlKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludGVybmFsU2V0dGluZ3NX
cmFwcGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSkt
PmludGVybmFsU2V0dGluZ3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IGUxNzhiNDk2ODU4NzU1MWJmMDcwNGQ4MzAyMDU2MmRkMTJkZjRlYmIuLjYyZTczNDlh
MWNhMTY2MmQwNjJjNjA3OTM4OTJmYzcwZmY2MDU4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCBjbGFzcyBJbnNwZWN0b3JTdHViRnJvbnRl
bmQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgcHVibGljCiB9
OwogCiBJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZChQYWdlJiBp
bnNwZWN0ZWRQYWdlLCBSZWZQdHI8RE9NV2luZG93PiYmIGZyb250ZW5kV2luZG93KQotICAgIDog
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250
cm9sbGVyKCksIGZyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCksIHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+KCkpCisgICAgOiBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRy
b2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgbWFrZVVuaXF1ZTxJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKICAgICAsIG1fZnJvbnRl
bmRXaW5kb3coZnJvbnRlbmRXaW5kb3cuY29weVJlZigpKQogewogICAgIEFTU0VSVF9BUkcoZnJv
bnRlbmRXaW5kb3csIGZyb250ZW5kV2luZG93KTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCBJbnRlcm5h
bHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgYXV0byogZnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5p
c01haW5GcmFtZSgpKSB7CiAgICAgICAgIGF1dG8gbW9ja1BheW1lbnRDb29yZGluYXRvciA9IG5l
dyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKCpmcmFtZS0+cGFnZSgpKTsKLSAgICAgICAgZnJhbWUt
PnBhZ2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENv
b3JkaW5hdG9yPigqbW9ja1BheW1lbnRDb29yZGluYXRvcikpOworICAgICAgICBmcmFtZS0+cGFn
ZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+
KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xNDE3LDcg
KzE0MTcsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCkK
ICAgICBpZiAoIXN5bnRoZXNpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3ludGhlc2lzLT5z
ZXRQbGF0Zm9ybVN5bnRoZXNpemVyKHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOworICAgIHN5bnRoZXNpcy0+c2V0UGxhdGZvcm1TeW50
aGVzaXplcihtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPihzeW50aGVz
aXMpKTsKIH0KIAogI2VuZGlmCkBAIC0yNDg5LDcgKzI0ODksNyBAQCBSZWZQdHI8V2luZG93UHJv
eHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1
cmwpCiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgp
LT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0gaW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgYXV0byBmcm9udGVuZFdpbmRvd1Byb3h5ID0g
d2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3csIHVybCwgIiIsICIiKS5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZy
b250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVjdGVkUGFnZSwgZG93bmNh
c3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3coKSkpOwogICAgIHJldHVy
biBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQogCkBAIC0zMDA5LDcgKzMwMDksNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldFZpZXdFeHBvc2VkUmVjdChmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB3aWR0aCwgZgogCiB2b2lkIEludGVybmFsczo6c2V0UHJpbnRpbmcoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQogewotICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKKyAgICBwcmludENvbnRleHRGb3JUZXN0
aW5nKCkgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oZnJhbWUoKSk7CiAgICAgcHJpbnRDb250
ZXh0Rm9yVGVzdGluZygpLT5iZWdpbih3aWR0aCwgaGVpZ2h0KTsKIH0KIApAQCAtMzQ0OCw3ICsz
NDQ4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZUF1dG9TaXplTW9kZShib29sIGVuYWJsZWQs
IGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogdm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2Nr
Q0RNKCkKIHsKLSAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RN
KiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwK
KyAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsg
cmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwKICAgICAgICAgTGVnYWN5
TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzS2V5U3lz
dGVtQW5kTWltZVR5cGUpOwogfQogCkBAIC00MjQxLDcgKzQyNDEsNyBAQCB2b2lkIEludGVybmFs
czo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFj
dGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVl
KCksICpkb2N1bWVudCwgW2RvY3VtZW50LCB0ZXN0TnVtYmVyXSgpIHsKKyAgICBhdXRvIG1pY3Jv
dGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1
ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1lbnQsIHRlc3ROdW1iZXJd
KCkgewogICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1pY3JvVGFzayAjIiwgdGVzdE51
bWJlciwgIiBoYXMgcnVuLiIpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVn
YWN5TW9ja0NETS5jcHAKaW5kZXggNjQyODdkMjM5YWY1NzNlOTIwM2QyNTg0MzFiMjczYzdiODc0
OTAwNi4uNjAyNzJkMzQ5N2Y0Yjg2NWNkYjAzNzBmZTQxZDNkNmZiZGU4YjdlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC0zOCw2ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDRE1TZXNzaW9uIDogcHVibGljIExlZ2FjeUNE
TVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1v
Y2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Nb2Nr
Q0RNU2Vzc2lvbigpID0gZGVmYXVsdDsKQEAgLTczLDcgKzc0LDcgQEAgYm9vbCBMZWdhY3lNb2Nr
Q0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExl
Z2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2Nr
Q0RNU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJl
Zml4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKaW5kZXggMjRiOWI4MDA4
YzRmNTE5YjRhNjY2ZWM2ZDE1MjVhYzYyZWMxYzMwYS4uYjkzYWViOTNmZjYzMjllNTE1NDdjMTNm
Zjc2YTY5MmVlNmE3MTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdh
Y3lNb2NrQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgK
QEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwog
CiBjbGFzcyBMZWdhY3lNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2UgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2FjeU1v
Y2tDRE0oTGVnYWN5Q0RNKiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA1Njc5NmVlOTAwYmJmM2I2Y2MwNWNm
NmEyMjk2ZWZkNDNiOWVmN2I2Li5jZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2ZDcxYjM2OTY2
MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMTAw
LDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZERhdGFUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9j
a0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKIH0KIAogTW9ja0NETTo6TW9j
a0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDMzOTZjZDAyYWQwMmRkMTRlOTJmMTU3OWUyNzUxNmU2
YmMzZjQyOTguLjM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBj
bGFzcyBNb2NrQ0RNRmFjdG9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDRE1GYWN0b3J5Piwg
cHVibGljIENhbk1ha2VXZWFrUHRyPAogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Q
cml2YXRlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9ja0NETT4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RNRmFjdG9y
eT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmlu
ZGV4IDUxMTgxZGFlNzJlMTNlMmJiZDE1M2U4MTFjMTQzNjRkMWNkOGExODcuLjc3OGE5MThhNmI5
MDc1NWNiODZkM2FhYTc0Zjc5YjNlNjE4ZDRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgTW9ja0NvbnRl
bnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0NvbnRlbnRGaWx0ZXI+
IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1vY2tDb250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDb250
ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2Ft
ZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92
aWRlci5jcHAKaW5kZXggZDNhYzVkODdkMTllMmE4NTM2MWMxMTU3MmNmMzExZjBjODNiMjQ1Yi4u
ZDQwZGVkMWRhMTE5OGNhYTM0NTlkNjc3ZTFmZTg0ZjViZmI5NDZlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBA
IHZvaWQgTW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKHVuc2lnbmVk
IGluZGV4LCBjb25zdCBTdHJpbmcmIGdhCiAgICAgaWYgKG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5k
ZXhdKQogICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XS0+dXBkYXRlRGV0YWlscyhn
YW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwogICAgIGVsc2UKLSAgICAgICAgbV9t
b2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tHYW1lcGFkPihp
bmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKKyAgICAgICAgbV9tb2Nr
R2FtZXBhZFZlY3RvcltpbmRleF0gPSBtYWtlVW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2Ft
ZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKIH0KIAogYm9vbCBNb2NrR2FtZXBhZFBy
b3ZpZGVyOjpjb25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAppbmRleCBkYmU5MDczZDZhZGVi
ZmM1MDE1OWNjMmVkYmIyMjgzY2NkMTdiYTg1Li44ZjE2NDdjMWYzMjI1MTgxNmM3Y2YwODk2MTgy
YWUzNDIzNWM1MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29s
ZUNsaWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50Ojpt
ZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwKIHsK
ICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50
QXNTdHJpbmcobWVzc2FnZVRleHQpOwotICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
dHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOworICAg
IGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3Zl
KGFyZ3VtZW50cyksIGV4ZWMpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1l
c3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuY3BwCmluZGV4IGY0M2JkMmE3YTYwNTkzNzI3YWQwYTZhOTFkZWNkNmVi
ZWM3MjI2ODguLjY5MDNiZTVlYzI1ZmI5MWVmZjc3NzZlNDQ3NmFkNGVhMmJjZTczMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtNDQsNiArNDQs
NyBAQCBXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgpCiAKIGNsYXNzIFdvcmtl
ckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlcgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEV2ZW50RGlzcGF0Y2hlcihSZWZQdHI8RXZlbnQ+JiYgZXZlbnQs
IFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUpCiAgICAgICAgIDogbV9ldmVudChXVEZNb3Zl
KGV2ZW50KSkKQEAgLTg0LDcgKzg1LDcgQEAgYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVl
RXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBh
dXRvKiBldmVudFB0ciA9IGV2ZW50LnB0cigpOwotICAgIGF1dG8gZXZlbnREaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUoZXZlbnQpLCAqdGhpcyk7
CisgICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4o
V1RGTW92ZShldmVudCksICp0aGlzKTsKICAgICBtX2V2ZW50RGlzcGF0Y2hlck1hcC5hZGQoZXZl
bnRQdHIsIGV2ZW50RGlzcGF0Y2hlci5nZXQoKSk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LnBvc3RUYXNrKFtldmVudERpc3BhdGNoZXIgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hlcild
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBldmVudERpc3BhdGNoZXItPmRp
c3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50
UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCmluZGV4
IDYxMTVlZjRhMTM2NTJhNmVhZDEwYWYzN2NmYjQ5NDI4MjBjM2NiMmIuLmQ4OTczZDViY2FlMTdi
OTU1MDA0NGM3ZTgwMTYwNWI5OWQ1NDlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRXZlbnRRdWV1ZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWUgZmlu
YWwgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgV29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jik7CiAgICAgdmlydHVhbCB+V29ya2VyRXZlbnRRdWV1ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3YmE2ZWRiNTIwOGYyMmMzZjhm
MTZkZTI5ZDgyNWI3NzFmNmMzZTllLi5iMTdkNjYzNjNhYzM1ODBlN2EzNDQwMDgxYTJmN2M2M2Ew
NzM4NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cApAQCAtNjIsOSArNjIsOSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUo
Y29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICwgbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQpCiAgICAgLCBt
X3RocmVhZCh0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclNj
cmlwdENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQotICAgICwgbV9t
aWNyb3Rhc2tRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+
dm0oKSkpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+
KHRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9taWNyb3Rhc2tRdWV1ZShtYWtlVW5p
cXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCiAgICAgLCBtX2lzT25saW5lKGlz
T25saW5lKQogICAgICwgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3koc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICwgbV9l
dmVudFF1ZXVlKCp0aGlzKQpAQCAtODYsNyArODYsNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29y
a2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmln
aQogICAgICAgICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCk7
CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3Jl
YXRlKFdURk1vdmUob3JpZ2luKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6
Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMp
KTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJp
dHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtlckdsb2JhbFNjb3Bl
Ojp+V29ya2VyR2xvYmFsU2NvcGUoKQpAQCAtMzYyLDkgKzM2Miw5IEBAIHZvaWQgV29ya2VyR2xv
YmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBl
OjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJl
cXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CiAg
ICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4
dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRl
bnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBz
b3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlm
aWVyKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUo
KnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGE3NWMwMTU2YzU5ZTM4ZGQ5OTlkNmNl
YzFkZGVlZGUyM2JlMTg3YjMuLjRlOWY1MTlhZWZlZGQyNWY4ODNmNjNhY2EwYTQ3ODlmZjAyN2U0
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlUHJveHkmIFdvcmtlckdsb2Jh
bFNjb3BlUHJveHk6OmNyZWF0ZShXb3JrZXImIHdvcmtlcikKIAogV29ya2VyTWVzc2FnaW5nUHJv
eHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciYgd29ya2VyT2JqZWN0KQogICAgIDogbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCi0gICAgLCBtX2luc3BlY3RvclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVj
dG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQorICAgICwgbV9pbnNwZWN0b3JQ
cm94eShtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmplY3QuaWRlbnRp
ZmllcigpKSkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAgICAgQVNT
RVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhy
ZWFkKCkpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9z
dE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnQKICAgICAg
ICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwogICAgICAgICBtX3dvcmtlclRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogICAgIH0gZWxzZQotICAgICAgICBt
X3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFz
a3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92
ZSh0YXNrKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9h
ZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggYmNkOTRlNmFjMDQwM2FjZDZhNTRiYWM0MWZh
YjQxZTViZjU1MjdkYS4uYmZhYzk1OTJkZmFhNzkyMTAwNjViMzQ1OWJkMjIxNjE5NTc4NDg3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC04Niw3ICs4Niw3
IEBAIGNsYXNzIE1vZGVQcmVkaWNhdGUgewogfTsKIAogV29ya2VyUnVuTG9vcDo6V29ya2VyUnVu
TG9vcCgpCi0gICAgOiBtX3NoYXJlZFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2hhcmVk
VGltZXI+KCkpCisgICAgOiBtX3NoYXJlZFRpbWVyKG1ha2VVbmlxdWU8V29ya2VyU2hhcmVkVGlt
ZXI+KCkpCiB7CiB9CiAKQEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6
cG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAKIHZvaWQgV29y
a2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmIHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChzdGQ6Om1h
a2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsKKyAgICBtX21l
c3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwg
ZGVmYXVsdE1vZGUoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9k
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2Rl
KQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdU
Rk1vdmUodGFzayksIG1vZGUpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQobWFrZVVuaXF1
ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6
cG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAxOTkx
MmYwMjc1ZmVhMTk0ODA1NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1Li4yMjhmM2QxN2ZmMDAyMmU2MmU2
MzY0NTMyZDU1NmI5NTA3YTAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRF
eGVjdXQKIAogICAgIEFTU0VSVChzY3JpcHRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiR0VUIik7
CiAKLSAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4o
V1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxS
ZXNvdXJjZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOwogICAgIGlmICghcmVxdWVz
dCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3QgVVJMJiBXb3Jr
ZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFJl
c291cmNlUmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVxdWVzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7CisgICAgYXV0byByZXF1
ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKICAgICByZXF1ZXN0LT5z
ZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgIHJlcXVlc3QtPnNldEluaXRpYXRvcklkZW50aWZp
ZXIoaW5pdGlhdG9ySWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggMWY3NTYxODZhMjBmMDE2OWU0Nzg0Mzk1
MWJlZTM2ODdlMDAyNGZiYS4uM2MzODU4YmRhOWI0NGI1N2ZhZGIzOWVmYTJlMGEwZjNhMzA0MTE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTE0LDcgKzEx
NCw3IEBAIFdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAgLCBtX3dvcmtlckRlYnVnZ2VyUHJv
eHkod29ya2VyRGVidWdnZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29y
a2VyUmVwb3J0aW5nUHJveHkpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0g
ICAgLCBtX3N0YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1cERh
dGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgc291
cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMs
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0
aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQorICAgICwgbV9zdGFydHVwRGF0YShtYWtlVW5pcXVlPFdv
cmtlclRocmVhZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJB
Z2VudCwgaXNPbmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIHRvcE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKICAgICAsIG1faWRiQ29ubmVjdGlvblByb3h5KGNvbm5lY3Rpb25Qcm94
eSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGIyZDI2MTVhMTI2M2QxNjI2NjE4MjAw
NDY0OGY5MGVkYTY5MjA2YjUuLjU5YzcxYzRkMTQ3NjI3Y2ZkOWQzMWE0NWVhYmNjY2RhZTEwM2U3
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpkZXJlZkV2ZW50VGFyZ2V0KCkKIGF1dG8gU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6cmVhZHkoKSAtPiBSZWFkeVByb21pc2UmCiB7CiAgICAgaWYgKCFtX3JlYWR5UHJvbWlz
ZSkgewotICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZHlQcm9t
aXNlPigpOworICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWU8UmVhZHlQcm9taXNl
PigpOwogCiAgICAgICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gKm1fcmVhZHlQ
cm9taXNlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAg
am9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOwogICAgIGpvYkRh
dGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6
Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBX
VEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29y
a2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBV
UkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMDYsNyAr
MjA2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24o
Y29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENPTlRBSU5FUl9SRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVnaXN0ZXJpbmcgc2Vydmlj
ZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxT
ZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRh
KSkpOworICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMs
IFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwg
Y29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAK
ICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9u
OiBVcGRhdGluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRl
bnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihz
dGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNl
V29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVl
X3B0cjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYikKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVu
dFVSTCwgUmVmPERlZmVycgogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRl
bnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVu
ZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHBy
b21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJv
bWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGlu
Z1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRv
IGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKQEAgLTMzNCw3
ICszMzQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIHVpbnQ2NF90IHBl
bmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVy
OwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9t
aXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAg
YXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUo
cHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9t
aXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNl
KSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZp
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdhYzljOTgzODNiMDRiNmViODljOTlmMjIwODg1ZTc2
NzM5NzZjM2YuLjNiZDZiOWIwNmU1NzM3NjY1YjU4Zjk2OWUyOTNkMGZlZDYyYzNjY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjCiAj
ZW5kaWYKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7CisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1Byb21pc2UoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDb250
YWluZXI+PiYmIHBlbmRpbmdBY3Rpdml0eSkKICAgICAgICAgICAgIDogcHJvbWlzZShXVEZNb3Zl
KHByb21pc2UpKQogICAgICAgICAgICAgLCBwZW5kaW5nQWN0aXZpdHkoV1RGTW92ZShwZW5kaW5n
QWN0aXZpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGJjOGY5MWVlNDM0NjJhNTA0
OWU4OGMxY2VmNWVmYTc2MmM5OGZmLi5jYjVjMjIxZmM5NDg4ZDdjMDA3Mjk4M2ExNTc4OTVkY2E4
YzZjZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQg
U1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFNlY29uCiAKICAgICBzZXJ2aWNlV29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5n
T3JUZXJtaW5hdGVkKCk7CiAKLSAgICBtX3BlbmRpbmdTZXJ2aWNlV29ya2VyVGVybWluYXRpb25S
ZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyVGVy
bWluYXRpb25SZXF1ZXN0PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91dCkpOworICAgIG1fcGVu
ZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVudGlmaWVyLCBtYWtl
VW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVy
LCB0aW1lb3V0KSk7CiAKICAgICBhdXRvJiB0aHJlYWQgPSBzZXJ2aWNlV29ya2VyLT50aHJlYWQo
KTsKICAgICB0aHJlYWQuc3RvcChbdGhpcywgaWRlbnRpZmllciwgc2VydmljZVdvcmtlciA9IFdU
Rk1vdmUoc2VydmljZVdvcmtlciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcAppbmRleCBjNjE3MzYxM2NhY2I1NWQ2OTA1OGJlMmM3ZTJhNWZiZDg1MjljNzc2Li45ZTcy
OGMzYTdhZmE0NmM5NDljZGNiZTBkNmZlYjA0YTk1MzFjY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBh
Z2VDb25maQogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkuYWRkKHRoaXMpOwog
CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9yZW1vdGVEZWJ1Z2dhYmxlID0g
c3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEpOwor
ICAgIG1fcmVtb3RlRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckRlYnVnZ2Fi
bGU+KCp0aGlzLCBkYXRhKTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVn
Z2luZ0FsbG93ZWQodHJ1ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5pbml0KCk7CiAjZW5k
aWYKQEAgLTE2OCw3ICsxNjgsNyBAQCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aQogCiBzdGQ6OnVu
aXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQmxv
YkxvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBVUkwmIGJsb2JVUkwpCiB7
Ci0gICAgYXV0byBsb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPihjbGllbnQs
IG51bGxwdHIpOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oY2xp
ZW50LCBudWxscHRyKTsKICAgICBsb2FkZXItPnN0YXJ0TG9hZGluZ0Jsb2JVUkwobV9kb2N1bWVu
dCwgYmxvYlVSTCk7CiAgICAgaWYgKCFsb2FkZXItPmlzU3RhcnRlZCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggMWM3ODMxMmM4NTQ4
MmY5ODY5YTVmYzBjNmQyY2M2YzZmZGZjMTBhMC4uZTRiODQzMTY4NGY3ZDg3ZDJiZmRlNmRkNDI3
ZjMzOTAzMDM0YmFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTE1Miw3ICsx
NTIsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUpCiAKICAgICBTUUxpdGVGaWxlU3lzdGVtOjplbnN1cmVE
YXRhYmFzZURpcmVjdG9yeUV4aXN0cyhtX2RhdGFiYXNlRGlyZWN0b3J5KTsKIAotICAgIG1fZGF0
YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAgIG1fZGF0YWJh
c2UgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9kYXRhYmFzZS0+
b3BlbihmdWxsRmlsZW5hbWUpKSB7CiAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJGYWlsZWQgdG8g
b3BlbiByZWdpc3RyYXRpb24gZGF0YWJhc2UiOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGZl
NWNjODU5ZTY1YTZlMzJhNzhiNTI4OTc1YTEzMmU3NGJmMTc4N2UuLjkzMjZhM2JhYzY1OWEyNDY3
MDVlOTIwYTg4ODQ2ZGY0ZDBlOTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBT
V1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYmIGRhdGEpCiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBtYWtl
IGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGlsZSB0aGUgaW1wb3J0IHdhcyBzdGls
bCB0YWtpbmcgcGxhY2UuCiAgICAgQVNTRVJUKCFtX3JlZ2lzdHJhdGlvbnMuY29udGFpbnMoZGF0
YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAKLSAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5r
ZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5z
Y29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVu
aXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwg
ZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3Bl
VVJMLCBkYXRhLnNjcmlwdFVSTCk7CiAgICAgcmVnaXN0cmF0aW9uLT5zZXRMYXN0VXBkYXRlVGlt
ZShkYXRhLnJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZSk7CiAgICAgYXV0byByZWdpc3RyYXRp
b25QdHIgPSByZWdpc3RyYXRpb24uZ2V0KCk7CiAgICAgYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUo
cmVnaXN0cmF0aW9uKSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgU1dTZXJ2ZXI6OlNXU2VydmVyKFVu
aXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBTdHJpbmcmJiByZWdpc3RyYXRp
b24KIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHko
KSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpCi0gICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhYmFz
ZURpcmVjdG9yeSkpOworICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlID0gbWFrZVVuaXF1ZTxS
ZWdpc3RyYXRpb25TdG9yZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJl
Y3RvcnkpKTsKICAgICBlbHNlCiAgICAgICAgIHJlZ2lzdHJhdGlvblN0b3JlSW1wb3J0Q29tcGxl
dGUoKTsKIApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNl
cnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKICAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQg
YWxvbmcgd2l0aCB0aGF0IGpvYi4KIAogICAgIGF1dG8mIGpvYlF1ZXVlID0gKm1fam9iUXVldWVz
LmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBbdGhpcywgJmpvYkRhdGFdIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpv
YkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1Nl
cnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogCiAgICAgam9iUXVldWUuZW5xdWV1ZUpvYihqb2JEYXRhKTsKQEAg
LTgyMCw3ICs4MjAsNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogCiAgICAgaWYgKGNsaWVu
dElkZW50aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLT52YWx1
ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyKTsKLSAgICAgICAgaXRlcmF0b3ItPnZhbHVl
LnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihb
Y2xpZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhpc10geworICAgICAgICBp
dGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IG1ha2VVbmlxdWU8
VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlzXSB7CiAg
ICAgICAgICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJzVG9UZXJtaW5hdGU7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3Jr
ZXJzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkg
JiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApp
bmRleCA4YjY4YjcwZjAxZDI1Mjc4YWY1MzhhYmNlOTE0YjhjN2M2OGFiODM3Li5kY2FmNWE4YTcx
MGY3OTQ0NjQ3ZGUzY2Q1ZTk4MDYzOTlhOGZkNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAg
LTI4Niw3ICsyODYsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAgICAgICAgICAgICByZWdpc3RyYXRpb24t
PnNldFVwZGF0ZVZpYUNhY2hlKGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hl
KTsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JR
dWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IEZvdW5kIHJlZ2lzdHJhdGlvbiAlbGx1IGZvciBqb2IgJXMg
YnV0IGl0IG5lZWRzIHVwZGF0aW5nIiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRpb25L
ZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkws
IGpvYi5zY3JpcHRVUkwpOworICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IG1ha2VVbmlx
dWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9i
LnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNj
cmlwdFVSTCk7CiAgICAgICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKG5ld1Jl
Z2lzdHJhdGlvbikpOwogCiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iOiBObyBleGlzdGluZyByZWdpc3RyYXRp
b24gZm9yIGpvYiAlcywgY29uc3RydWN0aW5nIGEgbmV3IG9uZS4iLCB0aGlzLCBqb2IuaWRlbnRp
ZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAyYjdhMmZl
M2ZiYjU4ZDRjNGVlMzhmYzA0YjUzNmEzZTRlMGM3N2U3Li4zYmU3NTdlMDJhZTE5ZDc1OTBlYzA3
YjNmYTRjYmU3ZDYzY2U4MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLAogICAgICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwg
cGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgICAgICBh
dXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGFpbnREZWZpbml0aW9uPihu
YW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZN
b3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKKyAgICAgICAg
YXV0byBwYWludERlZmluaXRpb24gPSBtYWtlVW5pcXVlPFBhaW50RGVmaW5pdGlvbj4obmFtZSwg
cGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShp
bnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CiAgICAgICAgIHBhaW50
RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmgKaW5kZXggOTZjZjE4NTBiMGNhZTNhYWU5NjA3ZGIxMzQxNjczNThiNjcxYzFkOS4uNjRm
Yzc4ZWVlNzg4MGVkOWJlZGNmYzJhNzAxMmNhNmVjM2NlMWMwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC00OSw2ICs0OSw3
IEBAIGNsYXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxT
Y29wZSB7CiAKICAgICAvLyBBbGwgcGFpbnQgZGVmaW5pdGlvbnMgbXVzdCBiZSBkZXN0cm95ZWQg
YmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZXkgd2lsbCBw
b2ludCB0byBmcmVlZCBtZW1vcnkuCiAgICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxQYWludERlZmluaXRpb24+IHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQYWludERlZmluaXRpb24oY29uc3QgQXRvbVN0
cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvciwgUmVmPENTU1BhaW50
Q2FsbGJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRQcm9wZXJ0aWVzLCBWZWN0b3I8U3Ry
aW5nPiYmIGlucHV0QXJndW1lbnRzKTsKIAogICAgICAgICBjb25zdCBBdG9tU3RyaW5nIG5hbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAK
aW5kZXggOGU4YTJhNGNhMjNlMmI5M2RhMTM0YWZiNTJkMGU5NTc2YzQwMjE1OS4uM2YwOTI1NjNi
ZDUyYWM0YTRiYmVkYTQxNWMyMzdhMmQxZGZkYWRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lk
IFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZQogewogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1
bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBt
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUo
YXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CiAgICAgbV93b3JrbGV0
R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDRi
Yjc4OGVhNjNjZDZiYmRjNTMyNTg3ZTA1MTBkNTMyNTI2MDZmZmEuLmNlZjgyZjdiNDExZDIxOGM3
MzNkNjZmYTlkYmEyZDkzMTI1YWU4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNDksNyArNDksNyBAQCBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoV29ya2xldEdsb2JhbFNjb3BlKTsKIFdvcmtsZXRHbG9iYWxTY29wZTo6V29y
a2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNv
ZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fc2Vz
c2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAgICwgbV9zY3JpcHQoc3RkOjptYWtl
X3VuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX3NjcmlwdCht
YWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKICAgICAsIG1fdG9wT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAsIG1fZXZlbnRRdWV1ZSgq
dGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQpAQCAtNjIsNyArNjIsNyBAQCBXb3Jr
bGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNj
cmlwdFNvdXJjZUNvZGUmJiBjbwogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCiAgICAg
c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX3Rv
cE9yaWdpbi5jb3B5UmVmKCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjpt
YWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fY29kZS51cmwoKSB9LCAq
dGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7CiB9CiAKIFdvcmts
ZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCkBAIC0xNDAsNyArMTQwLDcgQEAg
dm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXMKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4
ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9k
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdl
LT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKKyAgICBtX2RvY3VtZW50LT5hZGRD
b25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3Nh
Z2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2Ut
Pm1lc3NhZ2UoKSwgMCkpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDFjZWU5ZWIzNDIxY2Q5OWE1NmM4ODYwYjhlY2RkNDU5NmY4MGQyZGUuLjcxMzM5MDBmMTcx
ZWVmNDE1NjczZDRlOTBkNWNmNzdjZmViYzJiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBA
QCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkK
ICAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9
PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9i
YWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogCi0gICAgbV9jb25z
b2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29y
a2xldEdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmts
ZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYjAyMWNjZTE1M2MzMTkyOTUwYTJiZjc3
ZDgwOWEyODQ3YWIwZjBjMS4uYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYwMzgxNTI0MjhjNzFhYTgy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgWE1MRXJyb3JzIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBYTUxFcnJvcnMoRG9jdW1l
bnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZjAxOTNkOGM5
NmUzNWM5ZmY3NWU2YTYzYTM1MGM2NTVkY2E4NjBlZi4uZjg2NjMzYThkNmRiNzA1NDMwMTg4Mjg1
NzViNTlmMjY2N2M2NmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBA
IC0yNzMsNyArMjczLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVVSTCgpIGNv
bnN0CiBYTUxIdHRwUmVxdWVzdFVwbG9hZCYgWE1MSHR0cFJlcXVlc3Q6OnVwbG9hZCgpCiB7CiAg
ICAgaWYgKCFtX3VwbG9hZCkKLSAgICAgICAgbV91cGxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFhN
TEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CisgICAgICAgIG1fdXBsb2FkID0gbWFrZVVuaXF1
ZTxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oKnRoaXMpOwogICAgIHJldHVybiAqbV91cGxvYWQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IGFkN2UxM2M4YTE5NGFk
NTZkNjIzNDIwMDAxN2NiYTc3ZmU4MGI3NDIuLmE5MjQ0MDllZTQ2YzUzZTczYjI3YTQ5YTE5ZWZl
OTY5NzIxNjczYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtNDUs
NyArNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGMpCiAgICAg
cmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicgfHwgYyA9PSAnXHQnOwog
fQogCi0jZGVmaW5lIERFRklORV9GVU5DVElPTl9DUkVBVE9SKFN1ZmZpeCkgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rpb24jI1N1ZmZpeCgpIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8RnVuIyNTdWZmaXg+KCk7IH0KKyNkZWZpbmUgREVGSU5FX0ZVTkNUSU9O
X0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uPiBjcmVhdGVG
dW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQog
CiBjbGFzcyBJbnRlcnZhbCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRl
LmNwcAppbmRleCAwNDYxNWMzZDVmMDMxMzEwNjkzOGZhYTA1ZmIzOWM5OWNlMTIzYjVjLi5jMWJi
YzU0ZWI4MzAxNjkxMTljODY4MzFhNGYyYTZlN2MwMDQ1NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIGV2YWx1YXRlUHJlZGlj
YXRlKGNvbnN0IEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCiAKICAgICAvLyBmb29bM10gbWVhbnMg
Zm9vW3Bvc2l0aW9uKCk9M10KICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpCi0gICAgICAgIHJl
dHVybiBFcVRlc3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1bmN0aW9uOjpjcmVhdGUoInBvc2l0aW9u
Il9zKSwgc3RkOjptYWtlX3VuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051bWJlcigpKSkuZXZhbHVh
dGUoKS50b0Jvb2xlYW4oKTsKKyAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVxVGVzdE9wOjpPUF9F
USwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBtYWtlVW5pcXVlPE51bWJlcj4ocmVz
dWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOwogCiAgICAgcmV0dXJuIHJl
c3VsdC50b0Jvb2xlYW4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xT
dHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExp
YnhzbHQuY3BwCmluZGV4IGVjMmM2YWUwNDU5YTA2OTI1NmE2NjJmNzJjODcyNjdmZWExYTQ1YmQu
LjYzMDRlOTI4MTFhOTM0ZjdkZTc0YzhjOTRiMmI2OWMwMDRlYTQ5NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZv
aWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXRzKCkKIAogdm9pZCBYU0xTdHlsZVNoZWV0
Ojpsb2FkQ2hpbGRTaGVldChjb25zdCBTdHJpbmcmIGhyZWYpCiB7Ci0gICAgYXV0byBjaGlsZFJ1
bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYpOworICAgIGF1
dG8gY2hpbGRSdWxlID0gbWFrZVVuaXF1ZTxYU0xJbXBvcnRSdWxlPih0aGlzLCBocmVmKTsKICAg
ICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZFJ1bGUucmVsZWFzZSgpKTsKICAgICBtX2NoaWxkcmVu
Lmxhc3QoKS0+bG9hZFNoZWV0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGUwMjRlZmI1NmJmNjUyYjkwYTlhMWQ0ZjgxMzA2
NDkxODMwZDhlMGYuLjcwNDg4OTJhNWFhMGVmOWE1NWZiZDI0MDhjZDE3OTE0ZDAyYTljODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxT
dHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxl
RXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwgVGV4dFBvc2l0
aW9uIHBvc2l0aW9uKQogewogICAgIGlmICghbV94bWxFcnJvcnMpCi0gICAgICAgIG1feG1sRXJy
b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVudCgpKTsKKyAgICAgICAg
bV94bWxFcnJvcnMgPSBtYWtlVW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkpOwogICAgIG1f
eG1sRXJyb3JzLT5oYW5kbGVFcnJvcih0eXBlLCBtLCBwb3NpdGlvbik7CiAgICAgaWYgKHR5cGUg
IT0gWE1MRXJyb3JzOjp3YXJuaW5nKQogICAgICAgICBtX3Nhd0Vycm9yID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAppbmRleCBiOTMxMDFiOGFhYzQ4MzlhMzliYjU0YjJiODlkZTg5OGM3OWI3NWFiLi44OGRk
NjAyZGE4ODNlN2ViYWE5NGE5NmFiNmEyOWVkZGIzZDgwMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC05
Miw3ICs5Miw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogcHVibGljOgogICAgIHZvaWQg
YXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUs
IGNvbnN0IHhtbENoYXIqIHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciogeG1sVVJJLCBpbnQgbnVt
TmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhcioqIG5hbWVzcGFjZXMsIGludCBudW1BdHRyaWJ1dGVz
LCBpbnQgbnVtRGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyKiogYXR0cmlidXRlcykKICAgICB7Ci0g
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTdGFydEVsZW1l
bnROU0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5k
aW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+eG1sTG9j
YWxOYW1lID0geG1sU3RyZHVwKHhtbExvY2FsTmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT54bWxQ
cmVmaXggPSB4bWxTdHJkdXAoeG1sUHJlZml4KTsKQEAgLTEyMiwxMiArMTIyLDEyIEBAIGNsYXNz
IFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFbmRFbGVtZW50TlNDYWxsYmFj
aygpCiAgICAgewotICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQ
ZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOworICAgICAgICBtX2NhbGxiYWNrcy5hcHBl
bmQobWFrZVVuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOwogICAgIH0KIAog
ICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyc0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMsIGludCBs
ZW4pCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVu
aXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5z
ID0geG1sU3RybmR1cChzLCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+bGVuID0gbGVuOwpAQCAt
MTM3LDcgKzEzNyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBl
bmRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjayhjb25zdCB4bWxDaGFyKiB0YXJnZXQsIGNv
bnN0IHhtbENoYXIqIGRhdGEpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjpt
YWtlX3VuaXF1ZTxQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2s+KCk7CisgICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25DYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+dGFyZ2V0ID0geG1sU3RyZHVwKHRh
cmdldCk7CiAgICAgICAgIGNhbGxiYWNrLT5kYXRhID0geG1sU3RyZHVwKGRhdGEpOwpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRD
REFUQUJsb2NrQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDREFUQUJsb2NrQ2Fs
bGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDREFU
QUJsb2NrQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMs
IGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xNTcsNyArMTU3LDcgQEAg
Y2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZENvbW1lbnRDYWxsYmFj
ayhjb25zdCB4bWxDaGFyKiBzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxs
YmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKIAogICAgICAgICBj
YWxsYmFjay0+cyA9IHhtbFN0cmR1cChzKTsKIApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNzIFBl
bmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNr
KGNvbnN0IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVybmFsSUQsIGNvbnN0IHht
bENoYXIqIHN5c3RlbUlEKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrPigpOwog
CiAgICAgICAgIGNhbGxiYWNrLT5uYW1lID0geG1sU3RyZHVwKG5hbWUpOwogICAgICAgICBjYWxs
YmFjay0+ZXh0ZXJuYWxJRCA9IHhtbFN0cmR1cChleHRlcm5hbElEKTsKQEAgLTE3Nyw3ICsxNzcs
NyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kRXJyb3JDYWxs
YmFjayhYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCB4bWxDaGFyKiBtZXNzYWdlLCBP
cmRpbmFsTnVtYmVyIGxpbmVOdW1iZXIsIE9yZGluYWxOdW1iZXIgY29sdW1uTnVtYmVyKQogICAg
IHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Vycm9y
Q2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdF
cnJvckNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5tZXNzYWdlID0geG1sU3RyZHVw
KG1lc3NhZ2UpOwogICAgICAgICBjYWxsYmFjay0+dHlwZSA9IHR5cGU7CkBAIC0yMDIsNiArMjAy
LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5k
aW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjayA6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwgflBl
bmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrKCkKICAgICAgICAgewogICAgICAgICAgICAgeG1s
RnJlZSh4bWxMb2NhbE5hbWUpOwpAQCAtMjMzLDYgKzIzNCw3IEBAIGNsYXNzIFBlbmRpbmdDYWxs
YmFja3MgewogICAgIH07CiAKICAgICBzdHJ1Y3QgUGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNr
IDogcHVibGljIFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgdm9pZCBjYWxsKFhNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIp
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHBhcnNlci0+ZW5kRWxlbWVudE5zKCk7
CkBAIC0yNDAsNiArMjQyLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxs
YmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAg
dmlydHVhbCB+UGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHhtbEZyZWUocyk7CkBAIC0yNTUsNiArMjU4LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNr
cyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2Fs
bGJhY2sgOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uQ2FsbGJhY2soKQogICAgICAgICB7CiAgICAgICAgICAgICB4bWxGcmVlKHRhcmdldCk7
CkBAIC0yNzEsNiArMjc1LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAgICAgfTsKIAog
ICAgIHN0cnVjdCBQZW5kaW5nQ0RBVEFCbG9ja0NhbGxiYWNrIDogcHVibGljIFBlbmRpbmdDYWxs
YmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAg
dmlydHVhbCB+UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHhtbEZyZWUocyk7CkBAIC0yODYsNiArMjkxLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNr
cyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nQ29tbWVudENhbGxiYWNrIDogcHVibGlj
IFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NvbW1lbnRDYWxsYmFjaygpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHhtbEZyZWUocyk7CkBAIC0zMDAsNiArMzA2LDcgQEAgY2xhc3MgUGVuZGlu
Z0NhbGxiYWNrcyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQZW5kaW5nSW50ZXJuYWxTdWJzZXRD
YWxsYmFjayA6IHB1YmxpYyBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdJbnRlcm5hbFN1YnNl
dENhbGxiYWNrKCkKICAgICAgICAgewogICAgICAgICAgICAgeG1sRnJlZShuYW1lKTsKQEAgLTMx
OCw2ICszMjUsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKICAgICB9OwogCiAgICAgc3Ry
dWN0IFBlbmRpbmdFcnJvckNhbGxiYWNrOiBwdWJsaWMgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5k
aW5nRXJyb3JDYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAgICAgIHhtbEZyZWUobWVzc2Fn
ZSk7CkBAIC01NjQsNyArNTcyLDcgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6c3VwcG9ydHNY
TUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxE
b2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQog
ICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV92aWV3KGZy
YW1lVmlldykKLSAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdDYWxsYmFja3M+KCkpCisgICAgLCBtX3BlbmRpbmdDYWxsYmFja3MobWFrZVVuaXF1ZTxQZW5k
aW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50Tm9kZSgmZG9jdW1lbnQpCiAgICAgLCBt
X3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKSkK
IHsKQEAgLTU3Miw3ICs1ODAsNyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJz
ZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIAogWE1MRG9jdW1l
bnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBF
bGVtZW50KiBwYXJlbnRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQ
b2xpY3kpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9jdW1lbnQo
KSwgcGFyc2VyQ29udGVudFBvbGljeSkKLSAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhzdGQ6Om1h
a2VfdW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCisgICAgLCBtX3BlbmRpbmdDYWxsYmFja3Mo
bWFrZVVuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50Tm9kZSgmZnJh
Z21lbnQpCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpiZWxvd1Jh
bmdlUG9zaXRpb24oKSkKICAgICAsIG1fcGFyc2luZ0ZyYWdtZW50KHRydWUpCkBAIC0xMzI4LDcg
KzEzMzYsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCgpCiAgICAgICAgIHhtbFRy
ZWVWaWV3ZXIudHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KCk7CiAgICAgfSBlbHNlIGlmICht
X3Nhd1hTTFRyYW5zZm9ybSkgewogICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1sRG9jUHRyRm9y
U3RyaW5nKGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIG1fb3JpZ2luYWxTb3Vy
Y2VGb3JUcmFuc2Zvcm0udG9TdHJpbmcoKSwgZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwot
ICAgICAgICBkb2N1bWVudCgpLT5zZXRUcmFuc2Zvcm1Tb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxU
cmFuc2Zvcm1Tb3VyY2U+KGRvYykpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRUcmFuc2Zvcm1T
b3VyY2UobWFrZVVuaXF1ZTxUcmFuc2Zvcm1Tb3VyY2U+KGRvYykpOwogCiAgICAgICAgIGRvY3Vt
ZW50KCktPnNldFBhcnNpbmcoZmFsc2UpOyAvLyBNYWtlIHRoZSBkb2N1bWVudCB0aGluayBpdCdz
IGRvbmUsIHNvIGl0IHdpbGwgYXBwbHkgWFNMIHN0eWxlc2hlZXRzLgogICAgICAgICBkb2N1bWVu
dCgpLT5hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZTY2hlZHVsZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJp
dmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDA1YmM5NTNmN2YwZGRjNzg3YjFlNjMwNDg3
Njk2YzIwODU5Y2FlMGYuLmQ2OWUxNDk5MmQ1ODY3NTFjYTA0MzQyNjM2MmE2ZjQxYzI2OTlmNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtNjU3LDcgKzY1Nyw3IEBA
IHZvaWQgV2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3NlcihWZWN0b3I8Q2FwYWJpbGl0
aWVzPiYmIGNhcGFiaWxpdGllc0xpc3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIHNlc3Npb25Ib3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXNzaW9uSG9zdD4oY2FwYWJpbGl0
aWVzTGlzdC50YWtlTGFzdCgpKTsKKyAgICBhdXRvIHNlc3Npb25Ib3N0ID0gbWFrZVVuaXF1ZTxT
ZXNzaW9uSG9zdD4oY2FwYWJpbGl0aWVzTGlzdC50YWtlTGFzdCgpKTsKICAgICBhdXRvKiBzZXNz
aW9uSG9zdFB0ciA9IHNlc3Npb25Ib3N0LmdldCgpOwogICAgIHNlc3Npb25Ib3N0UHRyLT5jb25u
ZWN0VG9Ccm93c2VyKFt0aGlzLCBjYXBhYmlsaXRpZXNMaXN0ID0gV1RGTW92ZShjYXBhYmlsaXRp
ZXNMaXN0KSwgc2Vzc2lvbkhvc3QgPSBXVEZNb3ZlKHNlc3Npb25Ib3N0KSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIv
U2Vzc2lvbkhvc3RHbGliLmNwcAppbmRleCA3YTIwYjg5NDFhZmY3MmE4NTJiNzZmNWM1NTEwNjI2
NTQ3NzRhMWNjLi4xNzdhYTU0ZjIyMjk3YWMzMTYxNGQzNTNiZTlmM2E3OWQxYWFiMTlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApAQCAtMTEzLDYgKzExMyw3
IEBAIGJvb2wgU2Vzc2lvbkhvc3Q6OmlzQ29ubmVjdGVkKCkgY29uc3QKIH0KIAogc3RydWN0IENv
bm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhKFNlc3Npb25Ib3N0KiBzZXNzaW9u
SG9zdCwgR1VuaXF1ZVB0cjxjaGFyPiYmIGRidXNBZGRyZXNzLCBHQ2FuY2VsbGFibGUqIGNhbmNl
bGxhYmxlLCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKICAgICAgICAgOiBzZXNzaW9uSG9zdChzZXNzaW9uSG9zdCkKICAgICAgICAg
LCBkYnVzQWRkcmVzcyhXVEZNb3ZlKGRidXNBZGRyZXNzKSkKQEAgLTE3Myw3ICsxNzQsNyBAQCB2
b2lkIFNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3IpPiYmIGNvbXBsZQogICAgIH0sIHRoaXMpOwogCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBkYnVzQWRkcmVzcyhnX3N0cmR1cF9wcmludGYoInRjcDpob3N0PSVzLHBvcnQ9JXUiLCAi
MTI3LjAuMC4xIiwgcG9ydCkpOwotICAgIGNvbm5lY3RUb0Jyb3dzZXIoc3RkOjptYWtlX3VuaXF1
ZTxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPih0aGlzLCBXVEZNb3ZlKGRidXNBZGRyZXNzKSwg
bV9jYW5jZWxsYWJsZS5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBj
b25uZWN0VG9Ccm93c2VyKG1ha2VVbmlxdWU8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4odGhp
cywgV1RGTW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFibGUuZ2V0KCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQgU2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dz
ZXIoc3RkOjp1bmlxdWVfcHRyPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+JiYgZGF0YSkKQEAg
LTM3MSw2ICszNzIsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
dWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRAogfQogCiBzdHJ1Y3QgTWVz
c2FnZUNvbnRleHQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBs
b25nIG1lc3NhZ2VJRDsKICAgICBTZXNzaW9uSG9zdCogaG9zdDsKIH07CkBAIC0zODEsNyArMzgz
LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQobG9uZyBtZXNzYWdl
SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQobV9jb25uZWN0aW9uSUQpOwog
ICAgIEFTU0VSVChtX3RhcmdldC5pZCk7CiAKLSAgICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2FnZUNvbnRleHQgeyBtZXNzYWdlSUQs
IHRoaXMgfSk7CisgICAgYXV0byBtZXNzYWdlQ29udGV4dCA9IG1ha2VVbmlxdWU8TWVzc2FnZUNv
bnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlELCB0aGlzIH0pOwogICAgIGdfZGJ1c19j
b25uZWN0aW9uX2NhbGwobV9kYnVzQ29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwKICAgICAgICAg
SU5TUEVDVE9SX0RCVVNfT0JKRUNUX1BBVEgsCiAgICAgICAgIElOU1BFQ1RPUl9EQlVTX0lOVEVS
RkFDRSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNr
QXR0cmlidXRpb25NYW5hZ2VyLmgKaW5kZXggYjYyZjEyZTE4MmYyMWViOGQ1MTA3NGNiMjU0ZDdi
MjEyZTBjZWQxOS4uYjQ0NWU3YTY1YTQ4ZDA3NDhiZDdlOTIwNWEzNDQwZjdmMWE5NTZjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25N
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKIAogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IDJlMjk2YjI5ZjQzYTRmYzg4ZTcwMDkzMjRh
NWUyM2IwYmU5Y2Q1MWMuLjkzMDNkMmFkYzE1ZWY2ZmIzMTBiNmZiMTZkMDcwY2M4NTNmZGMzYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2soKQogICAgIGlmIChy
ZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZpbGVN
b25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4ocmVzb3VyY2VMb2dQYXRoLCBt
X3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9maWxlTW9uaXRv
ciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwgbV93b3JrUXVldWUu
Y29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChGaWxlTW9u
aXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHN0
b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBtX2ZpbGVNb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxl
TW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxl
TW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VU
eXBlOjpSZW1vdmFsKSB7CiAgICAgICAgICAgICAvLyBEaXJlY3Rvcnkgd2FzIHJlbW92ZWQhCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmgKaW5kZXggNGMwMzNlMzUzZDRmMzA4ZjdmNzYwMDEyY2E5NjI5NjMwM2MxMDczMC4uNzFm
MzRiZmEzZDZjMmI1Mjc2MTY4OTQ0ZWUzMzRjNzNkYWY1MDMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaApAQCAtNDUs
NiArNDUsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU7CiAKIC8v
IENhbiBvbmx5IGJlIGNvbnN0cnVjdGVkIC8gZGVzdHJveWVkIC8gdXNlZCBmcm9tIHRoZSBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWMgcXVldWUuCiBjbGFzcyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYsIFdvcmtR
dWV1ZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogICAgIH5SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBhZGVjMTRjZjljY2Q5NjRjMjkwMWNlMmQ4NGVhMzU2
ZGY2ZGIwZmYyLi41ZGM3ZDk5NDc4YjM0Y2EzMmI3NzIwZjA5NzQ1ZDAyMWE2ZWM0MTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC03Nyw2ICs3Nyw3IEBA
IGVudW0gY2xhc3MgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgOiBib29sIHsgTG9uZywgU2hvcnQgfTsK
IAogLy8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVkIG9uIHRo
ZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVlLgogY2xh
c3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHVzaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRhODg2NmI2MWM4YjA1NzJjZGQ1MDhlYjY5YTlkOGE5
ODllNzVkMjEuLjhiNGE4ODIzOTc0ZDZjZjE1NTY5ZGNmOWZmZTk5MWMxZTFjMGZiNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xNTks
MTUgKzE1OSwxNSBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYgbgogICAgIAogICAgIHBvc3RUYXNr
KFt0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdF0g
ewogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5p
c0lUUERhdGFiYXNlRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCp0
aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9
IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCp0aGlzLCBt
X3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSk7CiAKLSAgICAgICAgICAgIGF1dG8gbWVtb3J5U3RvcmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1f
c3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAgICAgIGF1
dG8gcGVyc2lzdGVudFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNzUXVldWUsIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgYXV0byBtZW1vcnlT
dG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhp
cywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgICAgICAg
ICAgYXV0byBwZXJzaXN0ZW50U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAKICAgICAgICAgICAgIGRvd25jYXN0PFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUuZ2V0
KCkpLnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKCptZW1vcnlTdG9yZSk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUs
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRp
c3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gbWFrZVVuaXF1ZTxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwg
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CisgICAgICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdl
ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KGRv
d25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3RhdGlzdGljc1N0
b3JlKSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnkp
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUUoMTkzMjk3KTogVGhpcyBzaG91bGQgYmUg
cmV2aXNlZCBhZnRlciB0aGUgVUlQcm9jZXNzIHZlcnNpb24gZ29lcyBhd2F5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmgKaW5kZXggNjA1YWVmM2U2ZWU5NTBmMzk0ODNmY2Q4Y2M0ZDhlNjU4ZTAyY2YwYy4uYmJlMzk4
NDc1MmJlMTQ2MDUwZDUwMzU3MTM3MTU1MGZiMmNiNjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC00
OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiAK
IGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvb2tpZU1hbmFnZXIpOwogcHVibGlj
OgogICAgIFdlYkNvb2tpZU1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90
b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZGM3OWVlYmNmMThkYmY2
N2I0NjRjMzU4NjEwZmIzY2U3Y2ZlOTBjYy4uMGUzOGU5NDMwZDJjYzlhMTQxYTk3MjcwMzVkZDNk
ZmEwMjVmNGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBzdHJ1Y3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoTmV0d29ya1Byb2Nl
c3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDJjNGQyZmY5NDgwOWM0MmE2MTE2NzNiNWZiNWNh
ZGJmYTU5MTYwNGUuLmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0ZjM5ZmI1ZWZjZDc1ZTcxNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJTb3VwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbFJl
cXVlc3RDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xpZW50
CiAgICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdl
ci0+YWRkQ3VzdG9tUHJvdG9jb2woc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0
KSk7CisgICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdl
ci0+YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CiAg
ICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29s
SUQsIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVlc3QocmVxdWVzdCkpOwogICAgIH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA4MGZlMWEyZGRjM2UxM2EwMjBiMjU2NGE2MmRj
NTUzZjBiNWQ0NGQwLi5iNGQyZGFjNWQwZGI1NzNiYzc1ZWVjZWVmOGZiMDYwZTgzZDYxNmIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRv
d25sb2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5u
ZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CiAgICAgcGFy
YW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
ID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OlVzZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpu
ZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0
cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxv
YWRJRCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQs
ICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9iUmVnaXN0cnkoKS5ibG9iUmVn
aXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0
YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1
ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oTmV0d29ya0Rh
dGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9E
b3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9h
ZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYg
YmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nRG93
bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRk
KGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKG5ldHdvcmtMb2Fk
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3Bv
bnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBtYWtlVW5pcXVl
PFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3du
bG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFu
YWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElE
IGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogI2lmICFQTEFURk9STShDT0NPQSkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjpt
YWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25J
RCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3du
bG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwogCiAgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1
bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBBU1NF
UlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAppbmRleCBh
ODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3YmJjNDMzZTY1Li5hZTNjYTdlMGU0ZWU3ZWM4
NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6OkFkZFJlc3VsdCBEb3dubG9hZE1hcDo6YWRk
KERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBhdXRvIHJlc3VsdCA9IG1fZG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgaWYgKG1fZG93bmxvYWRzLnNp
emUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9hZEFzc2VydGlvbik7Ci0gICAg
ICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91
bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKICAgICAgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb24gaW4gTmV0
d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCmluZGV4IGEyNzgyOGQ3
YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5NmQuLjU5MTIzZjJjNDhmMWMxZTQxNzliYjFk
NWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcApAQCAtMzcsNyArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQZW5kaW5n
RG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6OkNvbm5lY3Rpb24qIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBEb3dubG9hZElE
IGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgV2ViQ29yZTo6Qmxv
YlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUp
Ci0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlz
LCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNzaW9uKSkKKyAg
ICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdp
c3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQogICAgICwgbV9wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbikKIHsKICAgICBtX2lz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gcGFyYW1ldGVycy5jbGllbnRDcmVkZW50
aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRl
bnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5YjFiOWI4NjA0MzhkOWI2
YTNmMTI2ODkxNDYyYjMzNmJjNTlmYzRkLi44MmExZTgzYmU5NWMzMDdmN2UwYTdlMDcwNDE5YTk5
NjU3ZDM0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODc5LDcgKzg3OSw3
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5l
Y3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNX
U2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5z
d1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2Vy
dmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9u
ID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNl
cnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOwogICAgIAogICAgIFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0
aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIC0gJXMiLCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4IDQ0NDIwZmY1ZmYyMjk5YmUzNzU0Y2UzN2Nk
ZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIxYWYwYmFkZTBjMDI3NWJlMmYwOTVhMTY2MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZChVc2Vy
Q29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRD
b250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAgICBhdXRvJiBiYWNrZW5kID0gKm1fY29udGVu
dEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CiAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRvJiYgY29udGVudFJ1bGVMaXN0IDogY29udGVu
dFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2Y2ExZjA5NWUxMDNjNTQyYWQ0ZTQzMDAwYmNi
NzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIyMTA0ZGYwOTQ2OTJjYzNmNjU1MjI1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3ZWJLaXRC
bG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIjsKIAogTmV0d29ya0RhdGFU
YXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgQmxv
YlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVu
dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykKICAgICA6IE5ldHdvcmtEYXRhVGFzayhz
ZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVz
ZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJlYW0oc3RkOjptYWtlX3VuaXF1ZTxBc3luY0Zp
bGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3RyZWFtKG1ha2VVbmlxdWU8QXN5bmNGaWxlU3Ry
ZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGZpbGVSZWZlcmVuY2VzKQogICAg
ICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkpCiB7CkBAIC00Njcs
NyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAgICAgfQog
CiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRN
YW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+
KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+
c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIGF1dG8gZG93bmxvYWQgPSBt
YWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQs
ICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAg
ICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwogICAgIGRvd25sb2FkTWFuYWdl
ci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3Zl
KGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAppbmRleCBmNjU0Mjk1
OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMxMTZjLi4xOTMyNmYyZjQ3ZGM5ZjRmNjIyOGE0
YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9kYXRhYmFz
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgICAg
IG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPigpOwogICAg
ICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9kYXRhYmFzZS0+b3BlbihwYXRoLCBXZWJDb3Jl
OjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFpc0Rh
dGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODAsNyArODAsNyBAQCBOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAg
ICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwg
ZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVyZW50IHRocmVhZHMuCiAgICAg
ICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKIAotICAgICAgICBtX3N0
YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9k
YXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsKKyAgICAgICAgbV9zdGF0ZW1lbnQg
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4oKm1fZGF0YWJhc2UsIGh0dHBz
VXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAgIGludCBpc1N0YXRlbWVudFByZXBhcmVkID0g
KG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FMSVRFX09LKTsKICAgICAgICAgQVNTRVJUKGlz
U3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBpZiAoIWlzU3RhdGVtZW50UHJlcGFyZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyLmgKaW5kZXggZGNkNDZhNjAxYmU2MzA5ODZmYzJhZTBjMWM5NjU1OGM5NTky
MjA4YS4uNTFkMjAzMTRlYWE0OWU5NmE0MWE1N2NlOGQ0MjIyNmJiZmIwNzIzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyKCk7CiAgICAgfk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDkxMDdmZWMxZTM0ZGI0NDg4
MTYyMjg2ODYyMmM4ZmJlYjViMzg4M2MuLmVlODBhYzZlYTFhNzc5NzczYTA3MTBlMTc4ODcwNjM3
NjdjNTEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGUKICAgICB9CiAK
ICAgICBpZiAobV9sb2FkVGhyb3R0bGVMYXRlbmN5ID4gMF9zKSB7Ci0gICAgICAgIG1fdGhyb3R0
bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocm90dGxlPigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRl
bmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBtX3Rocm90dGxlID0gbWFrZVVuaXF1ZTxUaHJvdHRsZT4oKnRoaXMsIG1fbG9hZFRocm90
dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IDQwOTcxNGQ2NjcyNmE4NDc0
YWZmMjlhMTYwODE3ZjI0Nzk2N2IwMTYuLmUxYWUwMGJkOWQ5NTQ3Nzc4MTc0Mzk4NWRmMDczYThi
MWNkMjUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdAogICAgICAgICBtX2ZyYW1lSUQsCiAgICAgICAgIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kKICAgICB9OwotICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3Ms
IFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFu
ZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFi
bGUgeworICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVk
aXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgewogICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCAt
IG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0IHByZWZsaWdodCBjb21w
bGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwgZXJyb3IuaXNOdWxsKCksIGlzUmVk
aXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewpAQCAtNDQ2LDcgKzQ0
Niw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50
U2VjdXJpdHlQb2xpY3koKQogewogICAgIGlmICghbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgJiYg
bV9jc3BSZXNwb25zZUhlYWRlcnMpIHsKICAgICAgICAgLy8gRklYTUU6IFBhc3MgdGhlIFVSTCBv
ZiB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGluc3RlYWQgb2YgaXRzIG9yaWdpbi4KLSAgICAgICAg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0
eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7CisgICAgICAg
IG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygpIH0pOwogICAgICAgICBtX2Nv
bnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2ZUhlYWRlcnMoKm1fY3NwUmVzcG9uc2VIZWFk
ZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0KICAgICByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQ
b2xpY3kuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDljYjRhOTI1MjIwOTA1YjRjMjFhNGY3NmFlNzc2YWUxNDUwMjVmODcu
LmJiYTdiYmUwMmI5ZTZiOTBjNGY5M2FmNTg4ZjI1MzNhYTU1Njk5ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01MDMsOSArNTAz
LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAg
ICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNv
cHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAg
ICB9CiAKLSAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7
CisgICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNF
KENVUkwpIHx8IFVTRShTT1VQKQotICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAjZW5kaWYKIH0KIApAQCAtNTM1LDkg
KzUzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICBjb29raWVTdG9y
YWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tp
ZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiks
IFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQot
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CiAjZW5kaWYK
IH0KIApAQCAtMjQyOCw3ICsyNDI4LDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9jZXNzOjpzd1Nl
cnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICAvLyBJZiB0
aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6OlNlc3Npb25JRCBjb21lIGZyb20/
CiAgICAgICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSB8fCAhcGF0aC5pc0VtcHR5
KCkpOwogICAgICAgICAKLSAgICAgICAgYXV0byB2YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1dT
ZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwg
c2Vzc2lvbklEKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1h
a2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklE
KTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheSkKICAgICAgICAgICAgIHZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKQEAgLTI1NDAsNiAr
MjU0MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPCiB9CiAKIGNsYXNzIFF1b3RhVXNlcklu
aXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VRdW90YVVzZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFF1b3RhVXNl
ckluaXRpYWxpemVyKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIpCiAgICAgICAgIDogbV9t
YW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQpAQCAtMjU3NCw3ICsyNTc1LDcgQEAgY2xhc3Mg
UXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVF1b3Rh
VXNlciB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVzZXJzKFN0b3Jh
Z2VRdW90YU1hbmFnZXImIG1hbmFnZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
Q2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQsIG9yaWdpbiwgdXNl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6ZXI+KG1hbmFnZXIpXSgpIG11
dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVzZXIgPSBtYWtlVW5pcXVlPFF1
b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy0+aWRiU2VydmVyKHNl
c3Npb25JRCkuaW5pdGlhbGl6ZVF1b3RhVXNlcihvcmlnaW4pOwpAQCAtMjU4OCw3ICsyNTg5LDcg
QEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFn
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1h
bmFnZXJzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuICpzdG9yYWdl
UXVvdGFNYW5hZ2Vycy5tYW5hZ2Vyc1Blck9yaWdpbigpLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAm
c3RvcmFnZVF1b3RhTWFuYWdlcnMsIHNlc3Npb25JRCwgJm9yaWdpbl0gewotICAgICAgICBhdXRv
IG1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KHN0b3JhZ2VR
dW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBbdGhpcywgc2Vzc2lvbklELCBvcmln
aW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNl
SW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAgYXV0byBtYW5hZ2VyID0gbWFrZVVu
aXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVvdGFNYW5hZ2Vycy5kZWZhdWx0UXVv
dGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3JpZ2luXSh1aW50NjRfdCBxdW90YSwgdWlu
dDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNr
KSB7CiAgICAgICAgICAgICB0aGlzLT5yZXF1ZXN0U3RvcmFnZVNwYWNlKHNlc3Npb25JRCwgb3Jp
Z2luLCBxdW90YSwgY3VycmVudFNwYWNlLCBzcGFjZUluY3JlYXNlLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgICAgIH0pOwogICAgICAgICBpbml0aWFsaXplUXVvdGFVc2VycygqbWFuYWdlciwg
c2Vzc2lvbklELCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IGZiN2E2Y2QzNmVhOWYzNTk0YTdmYjlkZTg1NTM1MzIzZmE4MjE3
MDguLmM2ZTE2OGRkNDdmNjNmNDIyNmJmNjVkZjRmMzQ0YzQ5ZWRhMGUzNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE1Myw3ICsxNTMs
NyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzLCBwcml2
YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
ICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFk
ZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7CisgICAg
ICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VD4o
KnRoaXMpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
Y2UwNmUzNjEzYWMyMGVmOGIzMzE0YzdlYjI2ZTJjNGFiYWZiNGU4OC4uZmY5OTJiZmYxYmNmZWZh
NTA0MjhjNGZhMWEwYTlmMzY2M2NkYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTExLDcgKzExMSw3
IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAKICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8
fCBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzIHx8IHBhcmFtZXRl
cnMub3B0aW9ucy5rZWVwQWxpdmUpIHsKICAgICAgICAgTmV0d29ya0xvYWRDaGVja2VyOjpMb2Fk
VHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBpc01haW5GcmFtZUxvYWQoKSA/IE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6TG9hZFR5cGU6Ok1haW5GcmFtZSA6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6
Ok90aGVyOwotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0
aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBIVFRQSGVhZGVy
TWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJh
bWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVm
KCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBS
ZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKKyAgICAgICAg
bV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29u
bmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0
aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRlck1hcCB7IG1fcGFyYW1ldGVycy5vcmln
aW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0s
IG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxp
Z2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJz
LmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAgIGlmIChtX3BhcmFtZXRlcnMuY3NwUmVz
cG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENTUFJl
c3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgeyBtX3Bh
cmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKQEAgLTExOSw3ICsxMTksNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBh
cgogI2VuZGlmCiAgICAgfQogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5KQotICAgICAgICBtX3N5
bmNocm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+
KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOworICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERh
dGEgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNS
ZXBseSkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIoKQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFy
dE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgfQog
CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAgICBtX25ldHdv
cmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nvbm5lY3Rp
b24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24p
OworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm1f
Y29ubmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3Jr
U2Vzc2lvbik7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2Fk
OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
aW5kZXggYzJiZjQzZDI0ZTA5MWZmNzZkOWRiOGI3MGExNmFlM2ZhMTdiMmQ1MC4uYTA0YWE5MzQ4
ZjI0NzNiZjliNjcyNWIwYTM2NDg4YTdmYmMzMmZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBDYWNo
ZTsKIH0KIAogY2xhc3MgTmV0d29ya1Nlc3Npb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0
d29ya1Nlc3Npb24+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1By
b2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2aXJ0dWFs
IH5OZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRleCAwNGUzZDAyNTIyMGRlNGM0M2M3MzYy
ZGExNDFkZjMyYmEyMDMwZmFmLi41OTE4ODU3NTdhODQ3NTFjODMxOGY3YmU1ZDI3NWE3ZjExYzVh
NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRDaGFubmVsLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBOZXR3b3JrU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3QgaWRlbnRpZmllcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1NvY2tldENoYW5uZWw+KGNvbm5l
Y3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7CisgICAgYXV0byByZXN1bHQgPSBt
YWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0aW9uLm5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwgcHJvdG9j
b2wsIGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0LT5tX3NvY2tldCkgewogICAgICAgICBy
ZXN1bHQtPmRpZENsb3NlKDAsICJDYW5ub3QgY3JlYXRlIGEgd2ViIHNvY2tldCB0YXNrIl9zKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggNjcyYjM3ODFhNGQ0YTM0YjljMWUx
ZTI0MTViZDQ5MTBlNzc5ZWQ3MS4uOWRmOWFhY2RjYjMzMmUwNDFkYjY5YmQwNjgxMDIyOWNmOGJi
NGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIGNs
YXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbCA6IHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IGQ5MGNj
Y2E5ODBhOGVmZmMyZDRmMzhmNWUzZjZiYzBhYTJjMmU1NDYuLjJjNjQyN2U2NDgyMmNlZjVkMWE4
MTIwMjVlZmQ2Yzg1NDU0MWNlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC01Myw3ICs1Myw3IEBAIFByZWNvbm5lY3RUYXNrOjpQ
cmVjb25uZWN0VGFzayhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtMb2Fk
UGFyYW1lCiAgICAgfQogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9u
bHkgPT0gUHJlY29ubmVjdE9ubHk6Olllcyk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdv
cmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNz
aW9uKTsKIAogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdCg2MDAwMF9zKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IGJmNTE1NzhmYjE0N2RkZGM4N2U2NmQ5
MGE1ZWRkMDJhNGNkNzI2OTMuLmNjODc4NGQ0MjgzYTYyNWZjMGUxZDllZmFhNTI3MDUyM2FjNzEx
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBA
IHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRhdGUoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVX
cml0aW5nVG9Mb2NhbFN0b3JhZ2UpCi0gICAgICAgIG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9u
V2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZGRlblRlcm1p
bmF0aW9uRGlzYWJsZXI+KCk7CisgICAgICAgIG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hp
bGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFN1ZGRlblRlcm1pbmF0aW9uRGlz
YWJsZXI+KCk7CiAKICAgICBtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUgPSB0cnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAKaW5kZXggM2U5ZDE3ZDYwMmQzNDE3NzAzM2M5MzM4YjRiYmU2ZGEwYmFiYThhNC4uYjA4M2Q1
ZDMyYTUxZTYxZGE0Mzc2ZGY5NDQ2ZWYxMTE0ZWE2YmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtODQsMTcgKzg0
LDE3IEBAIENhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFJlZjxT
dG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKENh
Y2hlT3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpIHsKLSAgICAgICAgbV9sb3dQb3dl
ck1vZGVOb3RpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TG93UG93ZXJNb2RlTm90
aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeworICAgICAgICBtX2xv
d1Bvd2VyTW9kZU5vdGlmaWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3Rp
Zmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7CiAgICAgICAgICAgICBB
U1NFUlQoV1RGOjpSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoaXNMb3dQb3dl
ck1vZGVFbmFibGVkKQogICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9
IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1f
c3BlY3VsYXRpdmVMb2FkTWFuYWdlcik7Ci0gICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhp
cywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1h
bmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3Jh
Z2UuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgaWYgKCFtX2xv
d1Bvd2VyTW9kZU5vdGlmaWVyLT5pc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSkKLSAgICAgICAgICAg
IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAgICBtX3NwZWN1
bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0
aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgIH0KICNlbmRpZgogCkBAIC0zNzUsMTIgKzM3NSwx
MiBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3Zl
KHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2Up
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCBy
ZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJl
cXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1h
a2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1By
b2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25z
ZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3Bv
bnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjp1cGRhdGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcQogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBleGlzdGluZ0VudHJ5LnJlc3BvbnNlKCk7CiAg
ICAgV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24ocmVzcG9u
c2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKLSAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5n
RW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCBy
ZXNwb25zZSkpOworICAgIGF1dG8gdXBkYXRlRW50cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihleGlz
dGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRyeS5idWZmZXIoKSwgV2ViQ29y
ZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKSk7CiAgICAgYXV0byB1
cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAKICAg
ICBtX3N0b3JhZ2UtPnN0b3JlKHVwZGF0ZVJlY29yZCwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5k
ZXggN2FlMWMyZmU3ZGNlNjA3YjlmOGE1M2Q5OWExYmQ3OTg1Mzk5YmNmMS4uMWY0MTQ0YThmYWU4
N2JmNWZjNWM4M2VkOTAyYjZmZjA4YTA2NGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgp
IGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNv
cmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7Ci0gICAgYXV0byBlbnRy
eSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRy
eSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VF
bnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3Jl
c3BvbnNlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBlN2ZjNWI4
OTMyMmI5OTFjNzA5ZDA2OGJlMmRlNzc3MzgzY2I0YmMwLi4yMjAxOTQxN2E4YzUwMWJmOTU1YmY1
MzIyYzA2OWNiMDMyYTQxZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hl
JiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgcGFyYW1ldGVy
cy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBDb250ZW50U25pZmZpbmdQb2xpY3k6OkRvTm90U25p
ZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
PSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmY7CiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0
d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKSk7CiB9CiAKIFNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCAxY2Q2YjQ5
MmY4MWE1YTgxZDI0Y2E3OTEwOGRhNmIxOWUwYzAwM2YxLi41N2U4ZTc1OTliMWNjYTY1YjI2ZTA2
ZWMzODcyZWUyZGQ5NDlkZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ0ZyYW1l
TAogICAgIHZvaWQgcmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBLZXkmIHN1YnJlc291cmNlS2V5KQogICAgIHsKICAgICAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VL
ZXkpKTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVuZChtYWtlVW5pcXVlPFN1YnJl
c291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VLZXkpKTsKICAgICAgICAgbV9sb2FkSHlz
dGVyZXNpc0FjdGl2aXR5LmltcHVsc2UoKTsKICAgICB9CiAKQEAgLTM1NSw3ICszNTUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEtleSYgc3RvcmFnZUtl
eSwgUmV0cmlldmVDb21wbGV0aW9uSAogICAgIEFTU0VSVChtX3BlbmRpbmdQcmVsb2Fkcy5jb250
YWlucyhzdG9yYWdlS2V5KSk7CiAgICAgLy8gRklYTUU6IFRoaXMgYnJlYWtzIGluY3JlbWVudGFs
IGxvYWRpbmcgd2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5vdCBzdWNjZXNzZnVsLgogICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmlldmVSZXF1ZXN0cy5lbnN1cmUoc3RvcmFnZUtl
eSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmV0cmlldmVD
b21wbGV0aW9uSGFuZGxlcj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKICAgICB9KTsKICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5hcHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpAQCAt
NDA0LDcgKzQwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVk
RW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgY29uCiAgICAgQVNTRVJUKGVudHJ5
KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAgYXV0byBrZXkg
PSBlbnRyeS0+a2V5KCk7Ci0gICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFr
ZV91bmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBXVEZNb3ZlKHJldmFsaWRh
dGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7CisgICAgbV9wcmVsb2FkZWRFbnRy
aWVzLmFkZChrZXksIG1ha2VVbmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBX
VEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAg
ICAgIGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRlZEVudHJpZXMudGFrZShrZXkpOwog
ICAgICAgICBBU1NFUlQocHJlbG9hZGVkRW50cnkpOwogICAgICAgICBpZiAocHJlbG9hZGVkRW50
cnktPndhc1JldmFsaWRhdGVkKCkpCkBAIC00NDksNyArNDQ5LDcgQEAgYm9vbCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0IEtleSYga2V5LCBFbnRy
eSogZW50cnkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBjb21wbGV0
aW9uSGFuZGxlciA6ICpjb21wbGV0aW9uSGFuZGxlcnMpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVudHJ5ID8gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6IG51bGxwdHIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IG1ha2VVbmlxdWU8RW50cnk+KCplbnRy
eSkgOiBudWxscHRyKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDY4LDcgKzQ2OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0
IFN1YnJlc291cmNlSW5mbyYgc3VicmVzCiAKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGlu
ZyAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIHJl
dmFsaWRhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZy
YW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCBy
ZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFs
aWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFsaWRhdG9yID0gbWFrZVVuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUo
ZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXZh
bGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAg
ICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCByZXZhbGlkYXRlZEVudHJ5LT5rZXko
KSA9PSBrZXkpOwogCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGYK
ICAgICAgICAgICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJlc291cmNlSW5mbywgZnJhbWVJRCk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
UHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgTm90IHByZWxvYWRpbmcgJyVzJyBiZWNhdXNl
IGl0IGlzIG1hcmtlZCBhcyB0cmFuc2llbnQiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFr
ZV91bmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwgZnJhbWVJRF0geworICAgICAgICAg
ICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1ha2VVbmlxdWU8RXhwaXJpbmdFbnRy
eT4oW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZl
TG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKG1fY2FjaGUubmV0d29ya1Byb2Nlc3MoKSwgZnJhbWVJ
RCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVJpZ2h0bHlOb3RXYXJtZWRVcEtleSgpKTsK
ICAgICAgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMucmVtb3ZlKGtleSk7CiAgICAg
ICAgICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiYmZjNjQ5ODkwZjk1Y2M3ZTA0
Y2U4MmE0ZmUzMjk0NGRjMWFiMWYwLi44MDRjNDI5OGNjM2UzYzI4MTRmZGJjMmJiYjZjYmVlNTc1
ODRhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTI5MCw4ICsyOTAsOCBAQCB2b2lkIFN0
b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3
b3JrUHJvY2Vzcykgc3luY2hyb25pemluZyBjYWNoZSIpOwogCiAgICAgYmFja2dyb3VuZElPUXVl
dWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bnRlbnRzRmlsdGVyPigpOwotICAgICAgICBhdXRvIGJsb2JGaWx0ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRvIHJlY29yZEZpbHRlciA9IG1ha2VV
bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1dG8gYmxvYkZpbHRlciA9IG1ha2VV
bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CiAKICAgICAgICAgLy8gTW9zdCBvZiB0aGUgZGlzayBz
cGFjZSB1c2FnZSBpcyBpbiBibG9icyBpZiB3ZSBhcmUgdXNpbmcgdGhlbS4gQXBwcm94aW1hdGUg
cmVjb3JkcyBmaWxlIHNpemVzIHRvIGF2b2lkIGV4cGVuc2l2ZSBzdGF0KCkgY2FsbHMuCiAgICAg
ICAgIHNpemVfdCByZWNvcmRzU2l6ZSA9IDA7CkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBTdG9y
YWdlOjpyZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mIHJlYWRPcGVyYXRpb24sIGNvbnN0IERhdGEm
IHJlY29yZERhdGEpCiAgICAgfQogCiAgICAgcmVhZE9wZXJhdGlvbi5leHBlY3RlZEJvZHlIYXNo
ID0gbWV0YURhdGEuYm9keUhhc2g7Ci0gICAgcmVhZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3JkIHsKKyAgICBy
ZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IG1ha2VVbmlxdWU8U3RvcmFnZTo6UmVjb3JkPihT
dG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0YS5rZXksCiAgICAgICAgIG1ldGFEYXRh
LnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKQEAgLTc1OCw3ICs3NTgsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZyb21NZW1vcnkoY29uc3QgVCYgb3BlcmF0aW9u
cywgY29uc3QgS2V5JiBrZXksCiAgICAgICAgIGlmIChvcGVyYXRpb24tPnJlY29yZC5rZXkgPT0g
a2V5KSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJv
Y2VzcykgZm91bmQgd3JpdGUgb3BlcmF0aW9uIGluIHByb2dyZXNzIik7CiAgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlY29yZCA9IG9wZXJhdGlvbi0+cmVjb3JkLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om1ha2VfdW5pcXVlPFN0b3Jh
Z2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTg2Miw3ICs4
NjIsNyBAQCB2b2lkIFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IEtleSYga2V5LCB1bnNpZ25lZCBw
cmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZAogICAgIGlmIChyZXRyaWV2ZUZyb21NZW1v
cnkobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMsIGtleSwgY29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFJlYWRPcGVyYXRpb24+KCp0aGlz
LCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIHJlYWRPcGVyYXRpb24t
PnRpbWluZ3Muc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgcmVhZE9wZXJh
dGlvbi0+dGltaW5ncy5kaXNwYXRjaENvdW50QXRTdGFydCA9IG1fcmVhZE9wZXJhdGlvbkRpc3Bh
dGNoQ291bnQ7CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBTdG9yYWdlOjpzdG9yZShjb25zdCBS
ZWNvcmQmIHJlY29yZCwgTWFwcGVkQm9keUhhbmRsZXImJiBtYXBwZWRCb2R5SGFuZGxlciwKICAg
ICBpZiAoIW1fY2FwYWNpdHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd3JpdGVPcGVy
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhpcywgcmVjb3JkLCBX
VEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhp
cywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5wcmVwZW5kKFdURk1vdmUo
d3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFkZCBrZXkgdG8gdGhlIGZpbHRlciBhbHJlYWR5
IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRoZSBwZW5kaW5nIG9wZXJhdGlvbnMgdG9vLgpA
QCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0
eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAgQVNTRVJUKHRy
YXZlcnNlSGFuZGxlcik7CiAgICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIEZ1bmN0aW9uIGNv
cGllcy4KIAotICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUo
dHJhdmVyc2VIYW5kbGVyKSk7CisgICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IG1ha2VV
bmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRoaXMpLCB0eXBlLCBmbGFncywgV1RG
TW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKICAgICBhdXRvJiB0cmF2ZXJzZU9wZXJhdGlvbiA9ICp0
cmF2ZXJzZU9wZXJhdGlvblB0cjsKICAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQo
V1RGTW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCmluZGV4IDdiODg5MjI5OTUzOWRiMzRjNWIzOTE0ZDNiMjE0Y2U4Yjgx
NDNiOTguLjYzYWQwNDA5ZmRkMjM2ZjZlM2MyY2EzMGU4N2U0YTdjMGEyOTU5MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0b3Jh
Z2U6OlJlY29yZCBTdWJyZXNvdXJjZXNFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29u
c3QKIAogc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBTdWJyZXNvdXJjZXNFbnRy
eTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRy
eSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZXNFbnRy
eT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxTdWJyZXNvdXJj
ZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRlci5z
aXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fc3VicmVzb3VyY2VzKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuY3BwCmluZGV4IGQ4YTA1OTQwZDcxOTdlYjMyMjVhMzZiYzUxM2EyZGI2MTBkYjBjZDguLjcx
MDRkMWY3NGNkNzAxY2JjZWNmYWI1N2QyNGViZmY4ZGFlYmVkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtNzMs
OCArNzMsOCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9
Owogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAg
ICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNN
YXA+KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVx
dWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShy
ZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVz
ID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVybCwgbWFrZVVuaXF1ZTxQcmVmZXRj
aENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOwogICAg
IC8vIExpbWl0IHByZWZldGNoZXMgZm9yIHNhbWUgdXJsIHRvIDEuCiAgICAgaWYgKCFhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwpAQCAtODYsOSArODYsOSBAQCB2b2lkIFBy
ZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlcwogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0
IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCkKIHsKICAg
ICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKKyAgICAgICAgbV9zZXNz
aW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwogICAgIHJl
ZGlyZWN0UmVxdWVzdC5jbGVhclB1cnBvc2UoKTsKLSAgICBtX3Nlc3Npb25QcmVmZXRjaGVzLT5z
ZXQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RG
TW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpKSk7CisgICAg
bV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmwsIG1ha2VVbmlxdWU8UHJlZmV0Y2hD
YWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVkaXJlY3RS
ZXF1ZXN0KSkpOwogICAgIG1fc2Vzc2lvbkV4cGlyYXRpb25MaXN0LmFwcGVuZChzdGQ6Om1ha2Vf
dHVwbGUocmVxdWVzdFVybCwgV2FsbFRpbWU6Om5vdygpKSk7CiAgICAgaWYgKCFtX2V4cGlyYXRp
b25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNo
b3QoZXhwaXJhdGlvblRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMTcxMGJhZTllNWE4ODUyNmNlZmEzYjM5
YWE3ODhmYWFmMmNmYTBlLi5hMjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBQcmVmZXRjaENhY2hlIHsKICAgICB2b2lk
IGNsZWFyKCk7CiAKICAgICBzdHJ1Y3QgRW50cnkgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0KaW5kZXggMDc3ZjE2ZmE2NTA2NTJjNzg3YTZmMDMxNjA5MDkwMjY4ZWJi
OGFjMC4uY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjViYmM4ZTRhNWU5OGExNWM5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDCiAK
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBOZXR3b3JrUHJvY2Vz
czo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdApAQCAtMjc2LDcgKzI3Niw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVn
cm91bmQoKQogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXImIE5ldHdvcmtQcm9jZXNzOjpuZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyKQotICAgICAgICBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsKKyAgICAgICAgbV9uZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXI+KCk7CiAgICAgcmV0dXJuICptX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMWY4ZDRjYmZjN2E1MzM4Y2YwZWY1MjRlOWE2NzU0MzFi
NDAxN2ZjOS4uMDliMjQzYTZkN2M4MTY4ZTc0NTk5NGNkZTg3Mzc0N2I2NzU1NDgzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtODAwLDcgKzgwMCw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRh
CiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4gcHJvdGVjdGVkTmV0d29ya0RhdGFU
YXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3Jr
RGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CiAgICAgICAgIGF1dG8mIGRvd25sb2FkTWFu
YWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAg
ICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihk
b3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Np
b25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgICAgICBh
dXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFn
ZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3
b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoKmRvd25sb2FkKTsKICAgICAg
ICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5h
dGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOwpAQCAtODk1
LDcgKzg5NSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0Q1REYXRhQ29ubmVjdGlv
blNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4o
bmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFyeSAqcHJveHlEaWN0aW9uYXJ5KGNvbnN0IFVS
TCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkpCkBAIC0xMjQxLDcgKzEyNDEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrUwogewogICAgIC8vIEZJWE1FOiBVc2UgcHJvdG9jb2wu
CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+IHRhc2sgPSBbbV9zZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpIHdlYlNvY2tldFRhc2tXaXRoUmVxdWVzdDog
cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpXTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRU
YXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJT
b2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vz
c2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smIHRhc2spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1
cmwuY3BwCmluZGV4IGJlNjgwMWYzMGNkZjQ5MDAyNTRjMjI0YjliMTFmYmRmNzNmZTJlMzEuLjVi
ZTE3MDI2NmY0NWI4YmY3MmVmNTZiMTAwODdjYjU5YmI1NmRiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0
Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZp
Y2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0
IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAppbmRleCBkNDcwOWE1ZTRhYzhhMmZiNmFjZWI1NmM1
N2ViZjBiNWM3NDBkNDU2Li5lMThhNDM5MGIxODhhMjdlOTMxOGM1MjQwNDU1ZjA2NGNmNmJkNjY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nl
c3Npb25DdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtTZXNzaW9uQ3VybC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ3Vy
bCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Npb25D
dXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUo
cGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nl
c3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB+TmV0d29ya1Nl
c3Npb25DdXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCmluZGV4
IDIzNzQ1Mjg4YTA2ZDAxMTQ1OTE5NjhiNTA4NmRlYjVmNDVhYTBhYzYuLmM4Yjg2YzUxMTEzN2Uz
NzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXlt
ZW50Q29vcmRpbmF0b3IoKQogewogICAgIGlmICghbV9wYXltZW50Q29vcmRpbmF0b3IpCi0gICAg
ICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1h
a2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1fcGF5bWVudENvb3JkaW5hdG9yOwogfQogCkBAIC04Miw3ICs4Miw3IEBAIGNvbnN0IFN0cmlu
ZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclNvdXJj
ZUFwcGxpY2F0aW9uCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckF1
dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIGNvb3JkaW5h
dG9yLCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVl
c3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxl
cj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVz
c2FnZVJlY2VpdmVyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCA4N2U4NWI1NWU5MWVjNjk2YWMx
NWIxYzVmMWExMTM1MWEzZTI2YWI3Li5jOTM2NGM1ZDA0YWIzNjMxNzAyMGIyY2FlMjlmMDdlYjdh
OTViYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAgbV9kb3dubG9hZE91dHB1dFN0cmVhbSA9
IGFkb3B0R1JlZihHX09VVFBVVF9TVFJFQU0ob3V0cHV0U3RyZWFtLmxlYWtSZWYoKSkpOwogCiAg
ICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRv
d25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERv
d25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nl
c3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICBhdXRvIGRvd25s
b2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3du
bG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9hZC5nZXQoKTsKICAgICBkb3dubG9h
ZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5nRG93bmxvYWRJRCwg
V1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlv
bihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggODNjMmYy
OGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFmOS4uN2E3NDgxZjdkNDI1ZjAyMzM3YTBj
MTBhZGY5ZDY1NGY3MGVjN2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhj
b25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0
U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nl
c3Npb25Tb3VwLmNwcAppbmRleCA3MzU1MjU3YmVkYTFlNWFkY2RlNTU0ZTZiZDMzYmNlOWUyZjYw
ZDBkLi45YzhmYjhkNjkyOWQ4MTc3N2NkMTQ1MTE0ZWViZmYwZjgwMDhmNTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTmV0
d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycykKLSAgICAs
IG1fbmV0d29ya1Nlc3Npb24oc3RkOjptYWtlX3VuaXF1ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1f
c2Vzc2lvbklEKSkKKyAgICAsIG1fbmV0d29ya1Nlc3Npb24obWFrZVVuaXF1ZTxTb3VwTmV0d29y
a1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKIHsKICAgICBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIEFTU0VSVChzdG9yYWdlU2Vzc2lvbik7CkBAIC0x
MjQsNyArMTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNz
aW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU28KICAgICByZXF1ZXN0LnVwZGF0
ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpKTsKICAgICBpZiAocmVxdWVzdC51cmwoKS5w
cm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzb3VwTWVzc2FnZS5n
ZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKHdlYlNvY2tldE1lc3NhZ2VOZXR3b3Jr
RXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdlLmdldCgpLCBw
cm90b2NvbCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwg
c291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggZjllZjRiYjU0MzBiYmY3M2IwNGEwZTNi
ZWMyNDc5MjhkNTllNzE2Yi4uNDY2YjI3ODJiZjkzYzc3MDcwZjc5N2RkMzY1MjM0Y2MxZGUzZmIx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtT
ZXNzaW9uU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvblNv
dXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9u
U291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9j
ZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgfk5ldHdvcmtT
ZXNzaW9uU291cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCmluZGV4IDZk
ZGM4MWEzNmQ4NDljYmMyODM3OTNiNjE3MDY3YTI3ZTI5ZDkxZjAuLmMxOTM1MDAxNTdhMmFmYjlk
YTQ2ZTkzYWI0ZWY1NTA4NDY5NDY0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCB2b2kKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5jUmVhZCA9IHN0
ZDo6bWFrZV91bmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVmZmVyLCBjb3Vu
dCk7CisgICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkID0gbWFrZVVuaXF1ZTxBc3lu
Y1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIsIGNvdW50KTsKIH0KIAogc3RhdGljIGdz
c2l6ZSB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEZpbmlzaChHSW5wdXRTdHJlYW0q
IGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oCmluZGV4IDhmMjA1Y2UwMjk3MTNkOGJhMjEzZjE0M2JhNzFiYjExNDc1
MmRlZjUuLjIyYWJkZWM2OWRiMjQ1YTRjZjk4M2YyNDdiMzhmNzJkOTAwYTZmNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTmV0d29ya1JUQ1Byb3ZpZGVyOwogCiBjbGFzcyBMaWJXZWJSVENTb2NrZXRDbGllbnQgZmlu
YWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFVEUCwgU2VydmVyVENQLCBD
bGllbnRUQ1AsIFNlcnZlckNvbm5lY3Rpb25UQ1AgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApp
bmRleCBlNzg2NTY4ZmY1MDVhN2I4NzE3ODcwZGY1N2ZhNTdkMTVmNWQ3NzYzLi45MjY2NjhjMzhm
ZmY3MDhhZTUwMmY1OGZkNDE1Mjg4MDNlYzU1NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApA
QCAtNjQsNiArNjQsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5T
TmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZQogfQogCiBzdHJ1Y3QgUGVu
ZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdChSZWY8SVBDOjpDb25uZWN0aW9u
PiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICA6IGNvbm5lY3Rpb24oV1RGTW92ZShj
b25uZWN0aW9uKSkKICAgICAgICAgLCByZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0SWRlbnRpZmll
cikKQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2VzcwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBzZXNzaW9uSUQpOwor
ICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdSZWdpc3RyYXRpb25S
ZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRp
ZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKICAgICBhdXRvKiByZWNvcmQgPSAmcGVu
ZGluZ1JlcXVlc3QtPnJlY29yZDsKICAgICBhdXRvIGVycm9yID0gRE5TU2VydmljZVJlZ2lzdGVy
UmVjb3JkKHNlcnZpY2UsCiAgICAgICAgIHJlY29yZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAppbmRleCAz
NTNlYWM4Y2UxMWI2OTA2ZWZhZGQyZmQyNzE4Yjk3YWI1MmNkYTRkLi5hYjcwNmRjMmU5MzRhOWE3
ZWY5OTI2ODk3OTc0YmRjNzU0ZWEzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIHZvaWQgTmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQogewogICAgIG1f
aXNTdGFydGVkID0gdHJ1ZTsKICAgICBtX3J0Y1Byb3ZpZGVyLmNhbGxPblJUQ05ldHdvcmtUaHJl
YWQoW3RoaXNdKCkgewotICAgICAgICBtX21hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6
QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgbV9tYW5hZ2VyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogICAgICAg
ICBtX21hbmFnZXItPlNpZ25hbE5ldHdvcmtzQ2hhbmdlZC5jb25uZWN0KHRoaXMsICZOZXR3b3Jr
UlRDTW9uaXRvcjo6b25OZXR3b3Jrc0NoYW5nZWQpOwogICAgICAgICBtX21hbmFnZXItPlN0YXJ0
VXBkYXRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1YWM1NzIxMzc5
ZGIzZDFiMjU4NzU1ODYxMDMwYmJhNGRiOWViOGUuLjE1ZDQ0ZDBhZDlkYjBmM2IwNTk5ZTFhMzNl
ZmNmZGI4OTYxYTY1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCBO
ZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbgogICAgIDogbV9jb25uZWN0aW9uKCZjb25uZWN0aW9uKQog
ICAgICwgbV9ydGNNb25pdG9yKCp0aGlzKQogICAgICwgbV9ydGNOZXR3b3JrVGhyZWFkKGNyZWF0
ZVRocmVhZCgpKQotICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRj
OjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCisg
ICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5n
ZXQoKSkpCiB7CiAjaWYgZGVmaW5lZChOREVCVUcpCiAgICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dU
b0RlYnVnKHJ0Yzo6TFNfTk9ORSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBOZXR3b3JrUlRD
UHJvdmlkZXI6OmNyZWF0ZVNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjoKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYWRkU29j
a2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50Pihp
ZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CisgICAgYWRkU29ja2V0
KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVy
LCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1By
b3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgUlRDTmV0
d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3Qg
bWF4UG9ydCkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6d3Jh
cE5ld1RDUENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgbmV3Qwogewog
ICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIG5ld0Nvbm5lY3Rp
b25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCA9IG1fcGVuZGluZ0luY29taW5nU29ja2V0cy50YWtlKG5l
d0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKTsKLSAgICAgICAgYWRkU29ja2V0KGlkZW50aWZp
ZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAq
dGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZl
ckNvbm5lY3Rpb25UQ1ApKTsKKyAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlx
dWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2Nr
ZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApp
bmRleCAzODM4MmIwOWQ0ZmIzYmUyNjRmODliNzc4NDFhNDFkN2MwOGNhYzA1Li5jNWVmNmQ5OWE1
NjBkZDE0ODhmMTg0OTk1YWU4YTdiMTZkOWFkMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3lu
Y1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgLy8gSGFu
ZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBxdWV1ZSBtZXNz
YWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CkBAIC0zODgsNyArMzg4LDcg
QEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFs
aWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3luY01l
c3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBz
eW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5j
b2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFt
ZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPnNldElzU3luY01l
c3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KQEAgLTc1
Niw3ICs3NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNUaHJv
dHRsaW5nKCkKICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlcyk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyID0gbWFrZVVuaXF1
ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5n
TWVzc2FnZXMpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBvc3RDb25uZWN0aW9uRGlkQ2xvc2VP
bkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29k
ZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8g
cmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVw
bHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gIldyYXBwZWRBc3luY01l
c3NhZ2VGb3JUZXN0aW5nIikgewogICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJvbm91c01vZGVJ
c0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKaW5kZXggMjBmNWVjNWIyMDJiZWMyYmRmNThmMDIwZWJkZWVmODMxNDkzMTFiZi4uYWRjNGFh
ZDk4ODE4ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDMzLDcgKzQzMyw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRP
cHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihU
OjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCks
IGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygp
KTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9w
dGlvbnMpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90CiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0g
ICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5h
bWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgp
OwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CmluZGV4IGNjYTA3MzkwYWRlYzQ0NmRlNzQ2NmNmOGUxMDEyM2MyNzkzODUzNTIuLmZkNTE3MDE3
MTJiMDYyOWQ0NzI1MmQwNDA4OTZjNjRmY2JjYmIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IERlY29kZXI6OnVud3JhcEZvclRlc3RpbmcoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHdyYXBwZWRNZXNzYWdlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5k
YXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50
cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEo
KSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhfdCogcm91bmRVcFRvQWxpZ25tZW50KGNv
bnN0IHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDg1NDUyY2RhN2UwNDVlNDQ1NWUwN2I5M2Jh
ZmNhMzViMTAyMDAxMWUuLmE3NDlhYWI4NzAwNTRjZWI2OTBlNWYxNGY0MDc1NjNmZmNkMGY5Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE4Miw3
ICsxODIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAgICAgfQogCiAgICAgdHlwZW5hbWUg
VDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVy
SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11
dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+
KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOworICAgICAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNN
ZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwog
ICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFy
Z3MuLi4pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVy
LmgKaW5kZXggM2Q2ZjM0Mjg5MmJjODgzOTA2NzhlOGMzNjQ2MzkxMTBkZTRmNTcyNi4uNzcxNDQ4
YTQ0ZDA4ODZkZDAxYmIwYzJkZTY0ZGM5YTQyODYyN2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZXNzYWdl
U2VuZGVyIHsKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6OmlzU3luYywgIk1lc3Nh
Z2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwor
ICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFt
ZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDM3MDJhY2M3ZGY1
MWJkODQ2YjkzYWY2NGJmMDcwYTRjMTAwMzkxOWYuLjg3ZGQyOGY4MDg2NzgyY2UyYTNkZjc5MGY0
YWMwZTZkNzQ5ZGFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikKICAgICAgICAgLCBtX3dhdGNoZG9n
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hk
b2c6OndhdGNoZG9nVGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAg
ICAsIG1fYXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3Nl
cnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdldCgpKSwgIkNv
bm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlvblN0YXRlOjpC
YWNrZ3JvdW5kKSkKKyAgICAgICAgLCBtX2Fzc2VydGlvbihtYWtlVW5pcXVlPFdlYktpdDo6UHJv
Y2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29ubmVjdGlv
bi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0OjpBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG1fd2F0Y2hk
b2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wg
Q29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogICAgICAg
ICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlu
cyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICBhdXRvIGVuY29k
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNvbm5lY3Rp
b24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBD
IiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShN
YWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpOwogCiAgICAg
ICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFk
ZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBib2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhlYWRlci0+
bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKIAotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9y
PEF0dGFjaG1lbnQ+IHsgfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KGJv
ZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsKICAgICB9CiAK
ICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgPT0gb3V0T2ZMaW5l
Qm9keU1lc3NhZ2VJRDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIp
CiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRl
c2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MpOwogICAgICAgICBzaXplX3QgbWVzc2FnZUJv
ZHlTaXplID0gZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuc2l6ZTsKIAotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBb
XShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpIHsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7CiAgICAgICAgICAgICB2bV9kZWFs
bG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190Pihi
dWZmZXIpLCBsZW5ndGgpOwogICAgICAgICB9LCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAg
fQpAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3Jl
YXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICB1aW50OF90
KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAgIHNpemVfdCBtZXNzYWdlQm9keVNp
emUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9yRGF0YSAtIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVj
b2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgbnVsbHB0ciwgV1RGTW92ZShhdHRh
Y2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0KIAogLy8g
VGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVt
IHRyYWlsZXIgc2l6ZS4KQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2Vp
dmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1cm47CiAKICNpZiBQTEFURk9STShN
QUMpCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVl
PEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOworICAgIGRlY29kZXItPnNldEltcG9ydGFu
Y2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKICNl
bmRpZgogCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAm
JiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXplQ29ubmVjdGlvbiIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXgu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
aW5kZXggNjNiNmJlNzI3MWU0NDU4ODM5NTA1YWE5MTVlMzg3M2Y4NTE0ZGVkZC4uNzdhZjliMjg1
ODQ1MjZiYjcwYzdmZmM4ZTMyNTZhM2JhYTEzYTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBA
QCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKCkKICAgICBpZiAobWVzc2FnZUluZm8u
aXNCb2R5T3V0T2ZMaW5lKCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBhdXRvIGRlY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5
U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgYXV0byBkZWNvZGVy
ID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUo
KSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogCiAgICAgcHJvY2Vzc0luY29taW5n
TWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIApAQCAtNDgyLDcgKzQ4Miw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJu
byA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgbV9wZW5kaW5n
T3V0cHV0TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0
cHV0TWVzc2FnZSkpOworICAgICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IG1ha2VV
bmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOwogICAgICAgICAgICAg
bV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9zb2NrZXQuZ2V0KCksIEdfSU9fT1VULCBtX2Nv
bm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4gZ2Jvb2xlYW4gewogICAgICAgICAg
ICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobV9wZW5kaW5nT3V0cHV0TWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggNjQwZjQ1Mjk5ZTNiMjY2ZTAyNjlj
Y2NjYzk0NTJiM2JhNTc5ZWZiMS4uNWFkZmQ4MmJlY2E0NmRiMDI0NDdlOGJjYjZkMzg0YzJjMDE1
NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9u
V2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFu
ZGxlcigpCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3BhdGNoIGl0LgogICAgICAgICAgICAg
VmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKDApOwotICAgICAgICAgICAgYXV0byBkZWNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3Jl
YWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgICAg
ICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29kZXI+KG1fcmVhZEJ1ZmZlci5kYXRh
KCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsK
ICAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKaW5kZXggZGQyYjY2YTdjYTE5NTkxYjZl
ZTY3YjhmMjg0ZmQyNTRhMzgyNzg1ZC4uNTY4MzcyMTNkZmJlYWViNGQ1OWU5M2MzZDQ5ZjZjN2Fj
MmY1MzRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCkBAIC00NCw2ICs0NCw3IEBAIHR5cGVk
ZWYgc3RydWN0IF9HTW9kdWxlIEdNb2R1bGU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNb2R1bGUpOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1vZHVsZShjb25zdCBTdHJp
bmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGlu
Z0NvbnRleHQubW0KaW5kZXggODIzMmRiNGViNTZlYWNiNmY4Y2U4NTU2NjRiOGI3ODJhYjY1MGE5
OC4uN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdmMDJiMDRjZjQ0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0
aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYWNo
U2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVy
SG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAKICAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewogICAgICAgICBrQ0FDb250ZXh0UG9ydE51bWJl
ciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVG
b3JQb3J0KGNvbnN0IE1hCiAjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQog
c3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6
OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4
dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0
aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKICAgICBsYXll
ckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpP
dXRPZlByb2Nlc3M7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCkBAIC04Miw3ICs4Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpCiAjaWYg
UExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVy
SG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MoKQog
ewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJI
b3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5p
cXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9s
YXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogICAgIGxh
eWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1ND
b25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZp
bHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwogICAgIHJldHVybiBsYXllckhvc3RpbmdDb250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oCmluZGV4IDk3ZTJkZjM1M2IzNjgyMzkyOWEzMWFlOTU3YTFkZGNkYzIxYzM3ZDYu
LmI5OGNhOTRiYzllZmMyM2IyZWQ4MThhNWI3ODQzMzcyMzE3ZTljNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTQ5
LDcgKzQ5LDggQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb247CiBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOwogCi1jbGFzcyBQbHVnaW5D
b250cm9sbGVyUHJveHkgOiBQbHVnaW5Db250cm9sbGVyIHsKK2NsYXNzIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eSA6IHB1YmxpYyBQbHVnaW5Db250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5Db250cm9sbGVyUHJveHkp
OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAzNjZiOTgzY2MwYmVhNTgzODYzYTdjZDYzMzNmOTQ4
ZGY3NDg0NDM1Li5jZTgyNjdkMmVlNzhjYWNiM2RkYTBhOWIzNzViZmFhZmM2ODZlZTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbgogCiB2b2lk
IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgYm9vbCYgcmVzdWx0LCBib29s
JiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCkKIHsKLSAg
ICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29u
dHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOworICAgIGF1dG8gcGx1Z2lu
Q29udHJvbGxlclByb3h5ID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJveHk+KHRoaXMs
IGNyZWF0aW9uUGFyYW1ldGVycyk7CiAKICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBsdWdp
bkNvbnRyb2xsZXJQcm94eVB0ciA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS5nZXQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IGJiZDQyM2JjZjU3MTVlNGFkNzBiZjUyZGVmOGMy
YzMwYzQxYmYwZjYuLjNlNjFiYmQwMDBlMWY0Y2RiNmMyYTM2Y2E0Zjc1ZTkwNGY4MzVjZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgVVJMIDog
cHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsKICAgICB7CiAgICAgICAgIEFT
U0VSVChiYXNlVVJMKTsKICAgICAgICAgYmFzZVVSTC0+cGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oKmJh
c2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CisgICAgICAgIGF1dG8gYWJz
b2x1dGVVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0
KCksIHJlbGF0aXZlVVJMKTsKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGFic29sdXRlVVJM
U3RyaW5nID0gYWJzb2x1dGVVUkwtPnN0cmluZygpOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFQSTo6VVJMKFdURk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykp
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBpZiAobV9wYXJzZWRVUkwpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6
OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IG1ha2VV
bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6
OlN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KaW5kZXggMjU5Mjg0N2UzNDFhM2I2Zjcy
ODc1NGJkNzg4YTY2NTNkZDIyMTViMC4uZDNmZjYyMWVjMGY0YTEwZDc1NjQ4N2NjMjE2ZjQ5NWNl
ODZkNzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90
ZU9iamVjdEludm9jYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZW1vdGVP
YmplY3RJbnZvY2F0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVPYmpl
Y3RJbnZvY2F0aW8KICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibG9ja1NpZ25hdHVyZSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWdu
YXR1cmUpKTsKKyAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxSZXBseUlu
Zm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUpKTsKICAgICB9CiAKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCA2NWRhOWVmZjAxYjQzZWE1NzEwODAyZjZj
NDZhNmQwMjAyNjU2OTNlLi40ODk5NzYyOTMyYjdhZjY5MjIxZDA1MGFmNjc0NTgzNmZjMzg3YjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgLSAoaWQpX2luaXRXaXRo
V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlJilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBh
Z2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAg
LTExOSw3ICsxMTksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQYWdlUHJveHk6KFdlYktpdDo6V2Vi
UGFnZVByb3h5JilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOworICAgIF9yZW1v
dGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTE2MCw3ICsxNjAsNyBA
QCAtICh2b2lkKV9zZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiBpbnRl
cmZhY2U6KF9XS1JlbW90ZU9iamVjdEludAogICAgICAgICBpZiAoc3RyY21wKFtOU01ldGhvZFNp
Z25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5QmxvY2tTaWduYXR1cmVdLm1ldGhv
ZFJldHVyblR5cGUsICJ2IikpCiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiUmV0dXJuIHZhbHVlIG9mIGJsb2NrIGFyZ3Vt
ZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMpIiwgc2VsX2dldE5hbWUoaW52b2NhdGlvbi5zZWxlY3Rv
cildOwogCi0gICAgICAgIHJlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCks
IHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAgICByZXBseUluZm8gPSBtYWtlVW5pcXVlPFdl
YktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRl
bnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKIAogICAgICAgICAvLyBSZXBsYWNlIHRo
ZSBibG9jayBvYmplY3Qgc28gd2Ugd29uJ3QgdHJ5IHRvIGVuY29kZSBpdC4KICAgICAgICAgaWQg
bnVsbCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAppbmRleCA3ZWQxMWU2YzE3MWUyMGJlMWU5ZWFk
YjMwN2U3MWZjNDhiZmRlODQ5Li5mYWVmZWQyZGNjODM4ZWU5NTczOTA2NWRhYzYzZjEzNTYzZjBk
M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktp
dENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiB3ZWJraXRDb250ZXh0TWVudUl0ZW1DcmVhdGUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSYKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVY
VF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBO
VUxMKSk7CiAKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihpdGVtRGF0YSk7CiAgICAgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBzdWJNZW51ID0gaXRlbURhdGEuc3Vi
bWVudSgpOwogICAgIGlmICghc3ViTWVudS5pc0VtcHR5KCkpCiAgICAgICAgIHdlYmtpdENvbnRl
eHRNZW51SXRlbVNldFN1Yk1lbnUoaXRlbSwgYWRvcHRHUmVmKHdlYmtpdENvbnRleHRNZW51Q3Jl
YXRlKHN1Yk1lbnUpKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KEd0a0FjdGlvbiogYWN0aW9uKQogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19BQ1RJT04oYWN0aW9uKSwgbnVsbHB0cik7CiAKICAg
ICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0o
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0g
ICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51
SXRlbUdsaWI+KGFjdGlvbik7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CiAKICAgICByZXR1cm4gaXRlbTsKIH0K
QEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKEdBY3Rpb24qIGFjdGlvbgogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKCF0YXJnZXQgfHwgZ192YXJpYW50X2lzX29mX3R5cGUodGFyZ2V0LCBnX2Fj
dGlvbl9nZXRfcGFyYW1ldGVyX3R5cGUoYWN0aW9uKSksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGli
PihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOworICAgIGl0ZW0tPnBy
aXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24s
IFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9
CkBAIC0xOTQsNyArMTk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uKFdlYktpdENvbnQKIAogICAgIFdlYktp
dENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKICAgICBDb250
ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxl
KGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZTsKLSAgICBpdGVtLT5w
cml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
dHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0
Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsKKyAgICBpdGVtLT5wcml2LT5tZW51
SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29u
dGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0Q29udGV4dE1lbnVBY3Rp
b25HZXRMYWJlbChhY3Rpb24pKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMjE2LDcgKzIx
Niw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsCiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlw
ZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hl
Y2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENv
bnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0
aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBA
IC0yMzksNyArMjM5LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09O
VEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVN
LCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbUJhc2VB
cHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0ZW0tPnByaXYt
Pm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKICAgICBpdGVtLT5wcml2LT5zdWJNZW51ID0gc3VibWVudTsKICAgICB3ZWJraXRDb250
ZXh0TWVudVNldFBhcmVudEl0ZW0oc3VibWVudSwgaXRlbSk7CiAKQEAgLTI1Niw3ICsyNTYsNyBA
QCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0
aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcih2b2lkKQogewogICAgIFdlYktpdENvbnRl
eHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2
LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oU2Vw
YXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKKyAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
U2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKIAog
ICAgIHJldHVybiBpdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggNWVkMTQzYTk5ODU5
MDQ5NmMzMzc2YTU2OTg4MTE1M2E2YTAyYjI4Yy4uZjMzY2FiMzA1ZmVlMTI3NGZhYTdiMjE4Mzhl
OWJiN2VmNzZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC03Miw2ICs3Miw3IEBAIGNs
YXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVNlbmRlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5PgogICAgICwgcHVibGljIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBD
bGllbnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggN2FkMzMzMTQ1MzkxODg4OWZkM2I5ODk2Mzg2
YThiZWQxZjUxOWExNC4uMzkxNGE0YzIwMTRhOWE1NGE2MzQ4OGE0ZTc0MzgxOWM2YThkYjNhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtNzksNyArNzksNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFTU0VSVCh2aWV3Q29udHJvbGxlcik7
CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNl
bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmlld0Nv
bnRyb2xsZXIpOworICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0
aW9uUHJlc2VudGVyID0gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3
Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNTRVJUKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+
bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0
V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6dmlld0Nv
bnRyb2xsZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRleCA4NmU3NDRjMTA4ZGY0Y2JjZjVk
MDQ3NjA5YWNmOTZjNjgyM2Q2YjE2Li40ZjgzNzAyNGVlNWYzNGZmYTBlNjliYWY3YjNiZmM4ODFh
NTI4MDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtNTUsNiArNTUsNyBAQCBlbnVtIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gOiB1aW50OF90OwogdXNpbmcg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KT47CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0aW9uTWFuYWdlcik7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKE5ldHdvcmtQcm9jZXNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0KaW5kZXggNTZhNzgzYTBiMjNiMjZhMjBjNWI4ZmE0YTU5ZjE1N2E0YzAzN2JiNy4u
MmQ1ZDFhZmMwODI3YTQxYTBiZDgzYmJhYTgwZjc4ZjYxNGY1YmQ3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMzgs
NiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25J
bXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29uc3QgY2hhciog
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBPcHRpb25hbDxwaWRfdD4gcGlkID0g
V1RGOjpudWxsb3B0KQogICAgIHsKQEAgLTE2MCw3ICsxNjEsNyBAQCBhdXRvIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8
SGFuZGxlPgogICAgICAgICByZXR1cm4ge3sgfX07CiAKICAgICBIYW5kbGUgaGFuZGxlOwotICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRl
bnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRh
dGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uID0gbWFrZVVuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7
CiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NoYXJlZFJpbmdCdWZmZXJTdG9yYWdlLmgKaW5kZXggYzkzNGU5MDdm
ODk3ZjM3ZmUwZTA4ZjkwZjZmMTllMzQzZjIwZjVlZi4uMzlhZTBkNzdjZDBmYTAxMTE3MWYxOTNh
ZDhiN2MwZjM4MTE5MTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UgOiBwdWJsaWMgV2ViQ29y
ZTo6Q0FSaW5nQnVmZmVyU3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggMThkYzJmYjhlZDEzZDE1MzQxMmVhMzBlMjkx
MTE3OGVhY2VmYzVhZS4uNzA0MzBmNDQzMTJjOGE1NjJjZTE1ZmM3MzJmNjlkMzg3NmZlOWMyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMTI1LDcgKzEy
NSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciYgdGV4bWFwTGF5ZXIoTmljb3NpYTo6Q29tcG9zaXRp
b25MYXllciYgY29tcG9zaXRpb25MYXllcikKIHsKICAgICBhdXRvJiBjb21wb3NpdGlvblN0YXRl
ID0gY29tcG9zaXRpb25MYXllckltcGwoY29tcG9zaXRpb25MYXllcikuY29tcG9zaXRpb25TdGF0
ZSgpOwogICAgIGlmICghY29tcG9zaXRpb25TdGF0ZS5sYXllcikgewotICAgICAgICBjb21wb3Np
dGlvblN0YXRlLmxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7
CisgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBw
ZXJMYXllcj4oKTsKICAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXllci0+c2V0SUQoY29tcG9z
aXRpb25MYXllci5pZCgpKTsKICAgICB9CiAgICAgcmV0dXJuICpjb21wb3NpdGlvblN0YXRlLmxh
eWVyOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpl
bnN1cmVSb290TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9yb290TGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4o
KTsKKyAgICBtX3Jvb3RMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOwog
ICAgIG1fcm9vdExheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKICAgICBtX3Jvb3RMYXll
ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0QW5jaG9yUG9p
bnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9z
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGNkM2U1N2M2YmNiOWQ4
ZGMxZmY5OWNhZDU5YzRlMTNmZjY2MDNhNmIuLmJjYjIzNTk3NWIxMzNkMmUyNzY3NmQyODNmZTg5
MTM4MWEwZDVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtNTMsNyArNTMsNyBAQCBSZWY8VGhyZWFkZWRD
b21wb3NpdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgVGhy
ZWFkZWREaXNwbAogVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50
JiBjbGllbnQsIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpDbGllbnQmIGRpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWxlRmFjdG9yLCBUZXh0dXJlTWFwcGVyOjpQ
YWludEZsYWdzIHBhaW50RmxhZ3MpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3Bh
aW50RmxhZ3MocGFpbnRGbGFncykKLSAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6bWFr
ZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUoKTsg
fSkpCisgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChtYWtlVW5pcXVlPENvbXBvc2l0aW5nUnVu
TG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQogI2lmIFVTRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgLCBtX2Rpc3BsYXlSZWZyZXNoTW9u
aXRvcihUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgZGlz
cGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCmluZGV4IDFhMDU0
NzUwN2VjMWMxYTgxMjQ3MmJiN2ViZDlmYTBkNGFkMTNhNDguLjA3ZThiYmM5YjVjOWMzYzZjOWQ4
ZDZjM2I5NDVlNTM5MzI3Yjg3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xh
c3MgTlBWYXJpYW50RGF0YTsKIGNsYXNzIFBsdWdpbjsKIAogY2xhc3MgTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAppbmRleCA2
MWUxZjk0MDI1MjM4NWRiODA1ZWMxMjJkZmYxYzllNGYxYjcyNTYzLi5kNGI1MjRjODI5ZWM2Njcy
MWRmMWE3MGQyZDUxM2FlNGViM2YzZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE5Q
UmVtb3RlT2JqZWN0TWFwOjpucE9iamVjdFByb3h5RGVzdHJveWVkKE5QT2JqZWN0KiBucE9iamVj
dCkKIHVpbnQ2NF90IE5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KE5QT2JqZWN0
KiBucE9iamVjdCwgUGx1Z2luKiBwbHVnaW4pCiB7CiAgICAgdWludDY0X3QgbnBPYmplY3RJRCA9
IGdlbmVyYXRlTlBPYmplY3RJRCgpOwotICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQobnBP
YmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcj4odGhpcywg
cGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCkucmVsZWFzZSgpKTsKKyAgICBtX3JlZ2lzdGVy
ZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIG1ha2VVbmlxdWU8TlBPYmplY3RNZXNzYWdlUmVj
ZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7CiAK
ICAgICByZXR1cm4gbnBPYmplY3RJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5k
ZXggN2IwMmI1ZTEyZjMyYzcyZDM4ZjUyMDQ1YmI2ZDZhMjNiNjJhZTJlMS4uMjYxZDdhODk2OTMw
NmE4OTI1YzRhYjM2ZTQ3OTQ3YjM5NmMxMjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5j
cHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgYm9vbCBtb2R1bGVNaXhlc0d0a1N5bWJvbHMo
TW9kdWxlKiBtb2R1bGUpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQog
ewotICAgIG1fbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7
CisgICAgbV9tb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obV9wbHVnaW5QYXRoKTsKICAgICBp
ZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCBlYTJiZTkzMDhjYmJlNmRkN2ViOGNmMmM1ODhj
OGZmNjE5ZWE5OTNjLi45NTUxM2Y0Nzk4MmZkNjdlZTVmOThkZDc5OTZjODU5OGYxZjQ2M2YyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApAQCAtNTEsNiArNTEsNyBAQCBjbGFz
cyBFbmNvZGVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
bnVtIExheWVyQ2hhbmdlIHsKICAgICAgICAgTmFtZUNoYW5nZWQgICAgICAgICAgICAgICAgICAg
ICA9IDFMTFUgPDwgMSwKQEAgLTk0LDYgKzk1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMg
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVy
Q3JlYXRpb25Qcm9wZXJ0aWVzKCk7CiAKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CkBAIC0xMDksNiArMTExLDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0aWVzIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllclByb3BlcnRpZXMo
KTsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGllcyYgb3RoZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggMWYyZGU0ZDAzN2Vh
M2U4MzAyODdhYjk4Y2IyYThmMjFjNGVjZWEyZS4uMGQyMjdmZmMxZDljNTU1NmFhZDkyZTdlZTE1
NzY1ZTE2YjM0NDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAt
MTUyLDEzICsxNTIsMTMgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVy
dGllczo6TGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGkKICAgICAvLyBGSVhNRTog
TGF5ZXJQcm9wZXJ0aWVzIHNob3VsZG4ndCBiZSBjb3B5YWJsZTsgUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpjbG9uZSBzaG91bGQgY29weSB0aGUgcmVsZXZhbnQgcHJvcGVydGllcy4KIAogICAgIGlm
IChvdGhlci50cmFuc2Zvcm0pCi0gICAgICAgIHRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOworICAgICAg
ICB0cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigq
b3RoZXIudHJhbnNmb3JtKTsKIAogICAgIGlmIChvdGhlci5zdWJsYXllclRyYW5zZm9ybSkKLSAg
ICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOworICAgICAgICBzdWJs
YXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+
KCpvdGhlci5zdWJsYXllclRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuZmlsdGVycykKLSAg
ICAgICAgZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
cz4oKm90aGVyLmZpbHRlcnMpOworICAgICAgICBmaWx0ZXJzID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKQEAgLTM1NCw3ICszNTQsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJlc3VsdC50cmFuc2Zvcm0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOworICAg
ICAgICByZXN1bHQudHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9w
ZXJ0aWVzICYgU3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKSB7CkBAIC0zNjIsNyArMzYyLDcgQEAg
Ym9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5z
Zm9ybSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0LnN1Ymxh
eWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNmb3JtID0gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9
CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgSGlkZGVuQ2hhbmdlZCkgewpA
QCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyb3VuZGVkUmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIAotICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgICAgICByZXN1
bHQuc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVj
dD4ocm91bmRlZFJlY3QpOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRp
ZXMgJiBTaGFwZVBhdGhDaGFuZ2VkKSB7CkBAIC00NzEsNyArNDcxLDcgQEAgYm9vbCBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0Zyb250QnVmZmVyKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGhhc0Zyb250QnVmZmVyKSB7
Ci0gICAgICAgICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU+KG51bGxwdHIpOworICAgICAgICAgICAgYXV0byBiYWNraW5nU3Rv
cmUgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPihudWxscHRyKTsKICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmJhY2tpbmdTdG9yZSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCkBAIC00ODYsNyArNDg2LDcgQEAgYm9vbCBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLAogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRp
ZXMgJiBGaWx0ZXJzQ2hhbmdlZCkgewotICAgICAgICBhdXRvIGZpbHRlcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7CisgICAgICAgIGF1dG8gZmlsdGVy
cyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKTsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSgqZmlsdGVycykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHJlc3VsdC5maWx0ZXJzID0gV1RGTW92ZShmaWx0ZXJzKTsKQEAgLTYwMiw3ICs2MDIs
NyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBSZW1vdGVMYXllclRyZWVUcgogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxMYXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlx
dWU8TGF5ZXJQcm9wZXJ0aWVzPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJQcm9w
ZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPExheWVyUHJvcGVydGllcz4oKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqbGF5ZXJQcm9wZXJ0aWVzKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IDk3OGM0YmJlZDdiNWNkOTFjYWFlYzE1NGJjOGJh
MTRiYWI3NTM0NjEuLmU4MjZhMzBiMTJlMjRlY2Y0MzBjNjliNzZiMWE2ZjI4ZjViYjk4ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5j
cHAKQEAgLTUyMiw3ICs1MjIsNyBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJh
bnNhY3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNOZXdSb290Tm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVU
cmVlPigpOworICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdT
dGF0ZVRyZWU+KCk7CiAKICAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVzOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzQ2hhbmdlZFByb3BlcnRpZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IGM3MzQ3Yzc5
ZTY2OTM4Mzc4NWQwNWQyMjllNDdiNzQ3YzFmMGNhNTUuLmIyY2Q0ODQ2Njc3Y2U5N2RmYWMyODU4
NDkwYzFlYTQzNGY5NjI5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJv
L1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWly
by9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHQoKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlID0gY3JlYXRlQ2Fpcm9T
dXJmYWNlKCk7CiAgICAgUmVmUHRyPGNhaXJvX3Q+IGJpdG1hcENvbnRleHQgPSBhZG9wdFJlZihj
YWlyb19jcmVhdGUoaW1hZ2UuZ2V0KCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShi
aXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4
dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNy
Y1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRt
YXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAK
aW5kZXggOTJmMTA2MmIyOTBmNzc1ZGI1YWU3ZWQxOTUyYTljYTg1OGFiMzEyMi4uMDE2YWJiZDk5
M2UxOGE0NWMwMWE3ZjA0OTdkY2MzMWE1M2I0MzcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCkKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwg
MCwgbV9zaXplLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShiaXRtYXBDb250ZXh0
LmdldCgpLCAxLCAtMSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBo
aWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBv
aW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKaW5kZXggNjBm
OGYzY2I3MzI4OWI2YjBkMmY0YzM1MTQ2ZjFjZmVkNDAzNGE4MC4uMTAwMWVlM2U1MjkyZWRjYjUz
NmY4MjMzMDNjMmM3NGMyYjFlOTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCkKIHsKICAgICBtX2JpdG1hcCA9IGNyZWF0ZURpcmVjdDJEU3VyZmFjZSgpOwog
ICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gYml0bWFwQ29udGV4dCA9IERpcmVjdDJEOjpj
cmVhdGVSZW5kZXJUYXJnZXRGcm9tV0lDQml0bWFwKG1fYml0bWFwLmdldCgpKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6
OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJs
ZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYg
ZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaAppbmRleCAyOTk1ODEwOTVkZDFkMWIx
NWFmZWFiYjRkYWNiZWQwNWQyYmRkMTE0Li41NDVhN2JlNGQ0ODE5NzEzMjhkMWMzZjc5ZDI3MWVk
OWEyMWY4MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0
b21hdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRv
bWF0aW9uQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQXV0b21hdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXV0b21hdGlvbkNsaWVudCgp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21h
dGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IDI4ZmFmNjg3MTlhOWQ3MjhkNTFiNmM3NzJkODRl
MTdiNjQ5MDk3Y2EuLjJhZTJhNTAzNGMzYTQxNzFjY2Y0NzdiOTc4NWI3M2E2ZjI0ZGI4MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gQXV0b21hdGlvblNlc3Npb25C
cm93c2luZ0NvbnRleHRPcHRpb25zIDogdWludDE2X3QgewogfTsKIAogY2xhc3MgQXV0b21hdGlv
blNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGVudW0gY2xhc3MgSmF2YVNjcmlwdERpYWxvZ1R5cGUgewogICAgICAgICBBbGVydCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgK
aW5kZXggYWYxMDljMWRmNjcwMGRjMjNlMmUzMzFiMGI1MGVmYmNmZjQyODY2Ny4uODE2ZjcxZTEy
NjcwY2IzZDY1YjFlNjMyODAzYTZiNDBlZjdkYmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAg
Y2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIENvbnRleHRNZW51
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5Db250ZXh0TWVudUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKaW5k
ZXggMGY4Y2FiOTczMjlmMDk1N2YzMmI0N2MyNzc4MWQxZTc4NmZhMTQ3ZC4uOGI0NGEzZjQ1NmM1
MzJhZDMzODA2ZWY2OWI0N2VhZDA5NDFkZjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApA
QCAtMzgsNiArMzgsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgQVBJIHsK
IAogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAppbmRleCA5MmIyZDY3NWRmY2EyY2FmZGEyMTFi
M2Y3MWM1Nzk4YWZkNDVkNjJhLi5iNGUyYWRlNzI5ZWE2NmQ4ZGRhOGRkNTAyMTE4YWU0YWJkYjIx
ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgQVBJIHsK
IGNsYXNzIERpY3Rpb25hcnk7CiAKIGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDAyMzc2ZTFlMTEwZDQ3NmViMmI5MTg1ZTRlMmZj
ZDhkNmUxMzMyZTEuLmIyZWFjYzliODMyNTk4YjE3YTk5ZGJkOWQ2N2VmMjRlNDczYWVkMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBA
IC00Niw2ICs0Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CiBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRG93bmxvYWRDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCmluZGV4IGYz
MTIzYWYxOTUxNjVhNjY5ZDY2NjgzMThiODEyZTkzMzY1ZTZkYzIuLjZkMWUzYjIxMWZlMGRkOTVh
OTQ4NTA1ODQxN2RiNGRlMDgyNDBkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZpbmRDbGllbnQuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZENsaWVudCgpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCmlu
ZGV4IGM2ZjQ1NzM0MmQxMTE5MDFkY2E2ZDNjMzA5MDMzN2ZlZTdhMWZlYzIuLmZhZTFkY2QzY2Q2
ODgzNTA3ZWZiZTNkOTVkNWQ2ZjcyYTAzNjlkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5kTWF0Y2hlc0Ns
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+RmluZE1hdGNoZXNDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElGb3JtQ2xpZW50LmgKaW5kZXggNWIwYzZjY2EyNGVlZmMxYTk1ODE5MWUwZTI3OTRhNDdi
NGY1NGU3Yy4uZjBjYTA2MDExMTk4MDJlZDM2OWI0ZDA3OGQ4M2M4NjJhNTE2MTJkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oCkBAIC0zNyw2ICszNyw3
IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBGb3JtQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Gb3Jt
Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElGdWxsc2NyZWVuQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVs
bHNjcmVlbkNsaWVudC5oCmluZGV4IDEzNzU1MjljZGEyNWYyNWNiYjE3OWJkYzg5ODkxNzFjODll
ZTg4NTcuLjg5NzRjZDEzMzk0Nzc1MDI3M2Y0NTBmMGU4Mzk2YzBlNmIxMzIwMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaApAQCAt
MzIsNiArMzIsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgRnVsbHNjcmVlbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgQVBJVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDUyNjZi
YzJjYTU0Y2YwOTljMjM4Y2FjYzYyMTQ0Yzk3OTlhMDk3OTcuLjdjNmY1NjI5Y2I2MGU1M2JjN2I4
NWFhODg4OWY3MmU2OGQ3YTRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBHZW9s
b2NhdGlvblByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvblByb3ZpZGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggOTgxYTk4
NWJiZGU1ZjFjYjY1Zjk2Y2JiMjEzOWZiY2YxOWQ3ZGNlNS4uZTEyMmVlM2VkYjFjNDIxOWQxZDg0
MTk5MzIxYTgwMDNkNTJjODIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEhUVFBD
b29raWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCiAKICAgICBB
U1NFUlQoIW1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHkpOwogCi0gICAgbV9jb29raWVNYW5h
Z2VyUHJveHlPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclBy
b3h5T2JzZXJ2ZXI+KCp0aGlzKTsKKyAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0g
bWFrZVVuaXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRoaXMpOwogCiAg
ICAgYXV0byogcG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5wcm9jZXNzUG9vbEZvckNvb2tpZVN0
b3JhZ2VPcGVyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SGlzdG9yeUNsaWVudC5oCmluZGV4IGZjZjQ2MDYxZjZiZmE2ZGNiNzYwZTEyYzY2MzNiNmI0NWYx
NTZkZDQuLjExODRhYTQzMmMzYjlmZmNiMTVkYTVmODI4ZWY0YWM0ZjFhZGIxZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaApAQCAtMzUsNiAr
MzUsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkgewog
CiBjbGFzcyBIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5IaXN0b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaAppbmRleCBlYTll
YmE1MGUxZWZlOGYwMzIxYzRkZmUzYTQ0NmYwZGNiYjVkOGM5Li5iZTQzYWVlYzU0ZmYyZDRhYmI1
YTI4ZmYzNjMxNDVjNDkwYzdlODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIFdl
Ykljb25EYXRhYmFzZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJY29uRGF0YWJhc2VDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkljb25EYXRhYmFzZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4IDZmOWU3YWY5Yzk4MDkyMzNiNmE1
NjVlYzNlMzgwYmUwYWFjZDU2N2UuLjJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2
YjBkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9h
ZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9h
ZGluZ0NsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiBuYW1l
c3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25Mb2FkaW5nQ2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVk
QnVuZGxlQ2xpZW50LmgKaW5kZXggYzM1ZTdiM2FlNDkzZDlhYzYzY2IzYTRiNTgxZmUzMmZjYjQw
YWNlOC4uOWQ0MzQ4OWEyZDYyNTdjYjBjYWY5MjJiM2ZiMDkzMjk1Y2U5YmI5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50
LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCmluZGV4IGNiYjllMGE5NzE0NWJkMTdkZGVm
OGUwYmIxNGFmOGMzNzZkZmIzODguLmRiNWQ5MGMzMWY5Mjc2OWQzMDNhMDFhZDc4YmRhN2ZiZDFh
NGQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBX
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIExlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCgpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5kZXggMzQ4ZDZi
Zjc3MjkyNzJlOGYyYWJhZWMzNzU1YzIwZGU1NDJkNjQ1ZC4uYjJlYTQxZDllMmYyZTgxZTJjOWVi
M2I4Nzc5MWZjM2VmOGMzZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMb2FkZXJDbGllbnQuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uOwogY2xh
c3MgT2JqZWN0OwogCiBjbGFzcyBMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRlckNsaWVudCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpP
YmplY3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oCmluZGV4IGE2ZTAxOWNjNDUxODYzYTQxYWNmYzhiZWE3YmYzMDI4OTZiMWJi
NzMuLmNkMjJhMjY3NjQ2OGQxODIzNGE2MDg0MmZlOWQ5MTY3MWIyMGE4N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNzMs
NiArNzMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uUmVzcG9uc2U7CiBjbGFzcyBPYmplY3Q7CiAKIGNs
YXNzIE5hdmlnYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfk5hdmlnYXRpb25DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCmluZGV4IDVlYmU0NDA3NDJhNzY1
NDFiMWQ5Y2NmMjk5NWM5YTk1ZmU4NGQ1YWQuLjZhZThlNzUyMDVmZmZjODY1MmY0ZjliODNiYjNk
ZTMwZWU2Y2ZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
b2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5
Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7
CiAKIGNsYXNzIFBvbGljeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UG9saWN5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggZDlkZDBkYjQ2NjM3NzIyYjYwMmIyMGRk
ZGY2NzM4MTM1ZjY0NmY2Mi4uNzcyZGE2ZTVhODY5NzdlYzhhZTJkYzA3NTQyZDhmY2YxZTE0OTYx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTcxLDYg
KzcxLDcgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogCiBjbGFzcyBVSUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+VUlDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggYWZjZTcwYjYyN2ZlZWY3YjViZjg4Mjg5YWQ4
MjJmMTljMTljZGI2Zi4uM2QwMTYxMWMwMjlmOTNmNWNlM2U1ZWIzZTMwNjQ3NDg4OWFiOGYzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC05NSw3
ICs5NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiB3a0NsCiAKIHZvaWQgV0tDb250ZXh0U2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0lt
cGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7
CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTU2
LDcgKzE1Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsCiAgICAgfTsKIAogICAgIFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sID0gKldlYktpdDo6dG9JbXBsKGNvbnRleHRS
ZWYpOwotICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxI
aXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGll
bnQobWFrZVVuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOwogCiAgICAgYm9vbCBhZGRz
VmlzaXRlZExpbmtzID0gcHJvY2Vzc1Bvb2wuaGlzdG9yeUNsaWVudCgpLmFkZHNWaXNpdGVkTGlu
a3MoKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGll
bnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkCiAgICAg
ICAgIH0KICAgICB9OwogCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25s
b2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlx
dWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0Q29u
bmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29u
bmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDExYjgzNGI0ZWUy
YTlhNjg3NjI2YzczMmJmNThhNDg4MjNmNjMzNGEuLjg4OGI3NWJjN2NlYzg5ZDE2ZTA3ZjYxN2U3
YmIyY2UyOTc5ZmE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQg
V0tHZW9sb2NhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5h
Z2VyU2V0UHJvdmlkZXIoV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2Vy
UmVmLCBjb25zdCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAg
IHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5p
cXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAgICB0b0ltcGwoZ2Vv
bG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJHZW9sb2NhdGlv
blByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0
aW9uTWFuYWdlclJlZiwgV0tHZW9sb2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAKaW5kZXggYjIyM2Q2Zjg3YmZhNWU5NmUzZTUwZGEyZGQ3OGZmMGQyZGQ0MTZjZS4u
NzY5MjM5OTBhYjViOWVhMjEzODVmMWQzNTY5ZThiNTBhYTdmNjVlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFR5cGVJ
RCgpCiAKIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXJCYXNl
KiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOworICAg
IHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRp
b25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdl
clByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFu
YWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAppbmRleCA0N2VjNzI2YjBjZTQ0MDU3ZjAwMmI1NDBiZWE3NjhlNDNi
MTBhOGQ0Li42MWE2OWIxZjNhNmRhNzQ5NmFkNDcyNjk3MGI4NWYyYzkxMTgxM2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTk0OCw3ICs5NDgsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlQ29udGV4dE1lbnVDbAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVu
dUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRleHRNZW51
Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpA
QCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsCiAKIHZvaWQgV0tQYWdl
U2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChtYWtlVW5pcXVlPFdlYlBhZ2VEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdl
RmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2Uq
IHdrQ2xpZW50KQpAQCAtOTk1LDcgKzk5NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAg
ICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxGaW5kQ2xpZW50Pih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTEwMzgsNyAr
MTAzOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAgICAgICAgIH0KICAgICB9OwogCi0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEZpbmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQp
KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQp
CkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRCdQogCiB2b2lkIFdL
UGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGb3Jt
Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0Ns
aWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTE5OSw3
ICsxMTk5LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogCiAgICAgV2ViUGFnZVByb3h5KiB3
ZWJQYWdlUHJveHkgPSB0b0ltcGwocGFnZVJlZik7CiAKLSAgICBhdXRvIGxvYWRlckNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyQ2xpZW50Pih3a0NsaWVudCk7CisgICAgYXV0byBsb2Fk
ZXJDbGllbnQgPSBtYWtlVW5pcXVlPExvYWRlckNsaWVudD4od2tDbGllbnQpOwogCiAgICAgLy8g
SXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQgdHJhbnNpdGlvbiBh
bGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVhZCBvZgogICAgIC8vIGRpZEZpcnN0
TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZS4g
SW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRQb2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDbGllbnQ+KHdr
Q2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQobWFrZVVuaXF1
ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MjA3NSw3ICsyMDc1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgfQogICAg
IH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
VUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudCht
YWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VO
YXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9u
Q2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0yMjkzLDE2NCArMjI5MywxNjYgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
TmF2aWdhdGlvbkNsaWUKICAgICB3ZWJQYWdlUHJveHktPnNldE5hdmlnYXRpb25DbGllbnQobWFr
ZVVuaXF1ZVJlZjxOYXZpZ2F0aW9uQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCi12b2lkIFdLUGFn
ZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNl
KiBjbGllbnQpCi17Ci0gICAgY2xhc3MgU3RhdGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpD
bGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2Vy
dmVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdL
UGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0
aWFsaXplKGNsaWVudCk7Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHdp
bGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CitjbGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBB
UEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6
T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4
cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQor
ICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOworICAgIH0KK3ByaXZhdGU6CisgICAg
dm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICgh
bV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlz
TG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBk
aWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0K
IAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVRp
dGxlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRD
aGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZENoYW5nZVRpdGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAot
ICAgICAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTCht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdl
QWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZUFjdGl2ZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2ls
bENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJMKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVV
UkwoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VBY3Rp
dmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUFj
dGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VI
YXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5
U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAg
ICB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVu
dCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFu
Z2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5
U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAg
ICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VF
c3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVz
cyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENo
YW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVz
cyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFu
Z2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2soKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VD
YW5Hb0JhY2spCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjaykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNhbkdvQmFjaygpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29C
YWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENo
YW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAg
dm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0Zvcndh
cmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENo
YW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNhbkdvRm9yd2Fy
ZCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hh
bmdlQ2FuR29Gb3J3YXJkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VO
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0
d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVz
dHNJblByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxs
Q2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jl
c3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VO
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9n
cmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdp
bGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5m
byhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hh
bmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRlSW5mbygp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
Q2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8p
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmlj
YXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IHdpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hh
bmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNS
ZXNwb25zaXZlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hh
bmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
IH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNw
b25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
V2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9j
bGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN3YXBXZWJQcm9j
ZXNzZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlk
U3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0g
ICAgfTsKKyAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgfQorfTsKKwordm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQo
V0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQorewogICAgIGlm
IChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVy
KHN0ZDo6bWFrZV91bmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOworICAgICAgICB0b0ltcGwo
cGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRlQ2xpZW50Pihj
bGllbnQpKTsKICAgICBlbHNlCiAgICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0
ZU9ic2VydmVyKG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQppbmRleCBmNzYzYWY2MDAzZGE0NjY3MzYz
MWU5MWVhODFiODNiNWM5N2EwODdkLi4zNWVmOTIyMTU0ZTE5NjMwMGU0YjZlZTc1ZDRjOTgxNzg1
YmMzZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQ
YWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtNTIsNyArNTIsNyBAQCAtIChpZClpbml0V2l0aFBhZ2U6
KFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJilwYWdlCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBfcGFnZSA9IFdURk1vdmUocGFnZSk7Ci0gICAgX29ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsKKyAg
ICBfb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihz
ZWxmLCBAIlVSTCIpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKl9v
YnNlcnZlcik7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0Mvd3BlL1dLVmlldy5jcHAKaW5kZXggNzhiYmEzOTY3YjYxOTdjMGU4YTdjMjNhYzNkYThj
ZDEzMmU3YzRiZS4uOTY0MDZkMGFhZmJjMzU1NTYwYjVkMzE5N2EwMGMyNWY1NzU5YTNmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKQEAgLTY4LDUg
KzY4LDUgQEAgdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3LCBjb25zdCBX
S1ZpZXdDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBs
KHZpZXcpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsK
KyAgICB0b0ltcGwodmlldyktPnNldENsaWVudChtYWtlVW5pcXVlPFZpZXdDbGllbnQ+KGNsaWVu
dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggMjY1NTU0ZjNkN2Yy
ZDdhZDI5NmU5ZjNmOWZhMTEzODhiNzhmZDU2NC4uNDk2Nzc4OGExMDU3ZmE4ODJhMGEwMWM4ZGJm
NTAwMmU5MjI2ZWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MDIs
NyArNjAyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFBhZ2VSZWY6KFdLUGFnZVJlZilw
YWdlUmVmCiAKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgX3Bh
Z2VMb2FkU3RhdGVPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0
YXRlT2JzZXJ2ZXI+KHNlbGYpOworICAgIF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmKTsKICAgICBfcGFnZS0+cGFn
ZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfcGFnZUxvYWRTdGF0ZU9ic2VydmVyKTsKIAogICAg
IEFTU0VSVCghYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcCgpLmNvbnRhaW5zKF9wYWdlLmdl
dCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW0KaW5kZXggMTM3MmNhNDEwNmM3NmUxZDYyMzVkNjE0YWQ1YzFlNmE1
NmVhMDVhMS4uODFkMzcwM2IwZWVhODJlNWU2YzYyZjMyMjJhYzRlNjgxOWY2YjNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVT
dG9yZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIC0gKHZvaWQpYWRkT2JzZXJ2ZXI6KGlkPFdLSFRU
UENvb2tpZVN0b3JlT2JzZXJ2ZXI+KW9ic2VydmVyCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIpOworICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2
ZXI+KG9ic2VydmVyKTsKICAgICBfY29va2llU3RvcmUtPnJlZ2lzdGVyT2JzZXJ2ZXIoKnJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGJhY2U1YWM3ZWMwMGIxODk4YWQyZGY3
MmNiMWIxOTQ0NjdkY2VjOWQuLmViYWM1NjhlM2RkYjY4NzBmODViMDE1MDhlYzIwZmFhYjdmMjA0
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tCkBAIC0zNzMsNyArMzczLDcgQEAgLSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+
KV9kb3dubG9hZERlbGVnYXRlCiAtICh2b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dL
RG93bmxvYWREZWxlZ2F0ZT4pZG93bmxvYWREZWxlZ2F0ZQogewogICAgIF9kb3dubG9hZERlbGVn
YXRlID0gZG93bmxvYWREZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxl
Z2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXQ6OkRvd25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CiB9CiAKIC0gKGlkIDxf
V0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKQEAgLTM4NCw3ICszODQs
NyBAQCAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCiAt
ICh2b2lkKV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+
KWF1dG9tYXRpb25EZWxlZ2F0ZQogewogICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUgPSBhdXRvbWF0
aW9uRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVs
ZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1
ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxlZ2F0ZSkpOwog
fQogCiAtICh2b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpp
bmRleCA4YjZkZjI0Zjg5NTJkODRmNjA3NTQ0YzZhMzFhMmRkMWI4YWEzNTVkLi5hMDBiMjAzY2M5
MDU5MzAxYmVjYzQ2MWQ2MWI0NjczMmI4NTYxMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
CkBAIC0xMTgsNiArMTE4LDcgQEAgLSAodm9pZClyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzCiB9
CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlKFdL
VXNlckNvbnRlbnRDb250cm9sbGVyICpjb250cm9sbGVyLCBpZCA8V0tTY3JpcHRNZXNzYWdlSGFu
ZGxlcj4gaGFuZGxlciwgTlNTdHJpbmcgKm5hbWUpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNv
bnRyb2xsZXIpCkBAIC0xNDUsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAogLSAodm9pZClhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIGF1dG8gaGFuZGxlciA9IFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBu
YW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBh
dXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFr
ZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdl
SGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CiAgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMu
IiwgbmFtZV07CiB9CkBAIC0yMjksNyArMjMwLDcgQEAgLSAodm9pZClfcmVtb3ZlQWxsVXNlclN0
eWxlU2hlZXRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFcK
IAogLSAodm9pZClfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUgdXNlckNv
bnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQKIHsKLSAg
ICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
c3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3Jp
cHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNv
bnRlbnRXb3JsZCk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4o
c2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRXb3Js
ZC0+X3VzZXJDb250ZW50V29ybGQpOwogICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJB
dHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4g
b25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDM5MWExOTkyZTM1MzJkYmU1ZjIxZGI2
OTFkZDgxMDhhYWUyYTY2Yy4uMDhmNDJlYzhiMTNiZjcwYmQyYjZiMzdiYzdkODE1NjgyM2Q2YzZk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC03NTcsNyArNzU3LDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
OihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmll
d0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJhdGlvbi5jb3B5UmVm
KCkpOworICAgIF9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBz
ZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsKICAgICBfcGFn
ZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNldEF1dG9tYXRpY2FsbHlBZGp1c3Rz
Q29udGVudEluc2V0cyh0cnVlKTsKQEAgLTc2OSwxNCArNzY5LDE0IEBAIC0gKHZvaWQpX2luaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3Vy
YXRpb24KIAogICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50
KGNvbmZpZ3VyYXRpb24uX2FwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpOwogCi0g
ICAgX25hdmlnYXRpb25TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU+KHNlbGYpOworICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKICAgICBfcGFnZS0+c2V0TmF2aWdhdGlvbkNsaWVudChf
bmF2aWdhdGlvblN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkpOwogCi0gICAgX3VpRGVs
ZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7Ci0gICAg
X3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+
KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CisgICAgX3Vp
RGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7CisgICAgX3Bh
Z2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsK
KyAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAKLSAgICBfaWNvbkxvYWRpbmdEZWxl
Z2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxm
KTsKKyAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJY29uTG9h
ZGluZ0RlbGVnYXRlPihzZWxmKTsKIAogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IFlFUzsKIApA
QCAtMzQyNSw3ICszNDI1LDcgQEAgLSAodm9pZClzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb24KICAgICBfYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlczsKIAogICAgIGlmIChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJl
cyAmJiAhX2dlc3R1cmVDb250cm9sbGVyKSB7Ci0gICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7
CisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+aW5z
dGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7CiAgICAgICAgIGlmIChX
S1dlYlZpZXcgKmFsdGVybmF0ZVdlYlZpZXcgPSBbX2NvbmZpZ3VyYXRpb24gX2FsdGVybmF0ZVdl
YlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXNdKQogICAgICAgICAgICAgX2dlc3R1cmVDb250cm9s
bGVyLT5zZXRBbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdlKGFsdGVybmF0ZVdlYlZp
ZXctPl9wYWdlLmdldCgpKTsKQEAgLTU2NzgsNyArNTY3OCw3IEBAIC0gKHZvaWQpX3NldElucHV0
RGVsZWdhdGU6KGlkIDxfV0tJbnB1dERlbGVnYXRlPilpbnB1dERlbGVnYXRlCiAgICAgfTsKIAog
ICAgIGlmIChpbnB1dERlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEZvcm1D
bGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBf
cGFnZS0+c2V0Rm9ybUNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQppbmRleCA3
YWQwNzNiOGNkNmRkNDIwM2UxYTc2MDU4ZjdjN2RmMmE5ZjhhZDdiLi4yYWRlZWE3NjBjNjk4YjE4
YWU1OTFlNTcwNTcxMzI5NWYyNGM1NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCkBAIC03Miw3ICs3
Miw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQogLSAo
dm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KWRlbGVn
YXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3Nlc3Npb24tPnNldENsaWVu
dChkZWxlZ2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CisgICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxl
Z2F0ZSA/IG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdh
dGUpIDogbnVsbHB0cik7CiB9CiAKIC0gKE5TU3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCBiMzdiMDUw
NTNmMTI0YWNiNzBmZDZhZGU2ZGY0MjBmZTgyNWQ1NGNmLi4wZGQ0MDlhNDNkZTY1MzAwYzlmMGNj
ODU0NDdhYzJmNzEzZWM5NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCkBAIC0zOCw2ICszOCw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCBmaW5hbCA6IHB1YmxpYyBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQoX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCiAgICAgICAgIDogbV9j
b250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC03NSw3ICs3Niw3IEBAIC0gKGluc3RhbmNldHlwZSlp
bml0CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0g
V2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKCk7Ci0gICAgbV9yZW1vdGVJ
bnNwZWN0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlDbGllbnQ+KHNlbGYpOworICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxm
KTsKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0
b3JDbGllbnQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA4ZDJmODhhZTAwMzJh
MGQ5MzQ1ZTY4MDBhOTc4NThiNDI4YTRkNmQ5Li4wNjg3MGQyMWRlZTdjYTRmODlkYjllMzQyZjZm
MGY1ZmQzZjU0YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3IEBAIGlubGluZSB2b2lkIHJlYWR5
U1FMaXRlU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1l
bnQsIFNRCiAgICAgICAgIHN0YXRlbWVudCA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghc3Rh
dGVtZW50KSB7Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3Rh
dGVtZW50PihkYiwgc3RyKTsKKyAgICAgICAgc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVT
dGF0ZW1lbnQ+KGRiLCBzdHIpOwogICAgICAgICBpZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQcmVwYXJpbmcgc3RhdGVtZW50ICVz
IGZhaWxlZCIsIHN0ci5hc2NpaSgpLmRhdGEoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
Y3BwCmluZGV4IGQyYWY2NGJhZDg2YThhMzNmMTMzNTQ3MjU4MWI3MDJlNDFhNjdlYzIuLjIxODY2
MDQ1MTkyNzY5YmU2ZGZmODU5YTYzMjA0M2Q1MTM1NjljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxd
ID0geyAwLCB9OwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQogCiBjbGFzcyBBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lv
bikKICAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKQEAgLTIyMyw3ICsyMjQsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVj
dCkKIAogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21h
dGlvblNlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklk
ZW50aWZpZXIoU3RyaW5nOjpmcm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKLSAg
ICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikpOworICAgIHNlc3Npb24tPnByaXYtPnNlc3Np
b24tPnNldENsaWVudChtYWtlVW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9u
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZShHT2Jq
ZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggOTdlOTI1NjAxNzczN2I3
NjY1YWNjOGViMmYzNThlYjJlYzU5MDBiOS4uMjg1OGRmNmYzNGQ0ZmE2MjEyMDliZjFlYjFlMTA4
ODVhZDA1ZTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNTYsNiArNTYsNiBAQCBj
bGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbDogcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGll
bnQgewogCiB2b2lkIGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Q29udGV4
dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2ViVmlldykp
OworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldENvbnRleHRNZW51Q2xpZW50
KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKaW5kZXggZDMyYjU5YzU0NzY2N2E3ZWM4
NzcxODEwNTJiZDFhNzQ5YzBkYmMxYy4uYTM3M2IyOTQ1NzE2NzkxYTJkNGMzMDdiZDVlMGE5Mjlj
ODE0MGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCkBA
IC01Niw1ICs1Niw1IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVuCiAKIHZvaWQgYXR0YWNoQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNv
bnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQp
LnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNv
bnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQobWFrZVVuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNv
bnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlYWQ0ZjIzNDk5MTY3MDRkMTdkMWYy
MzA2NDA4OWY3YTFhMDQ1OTRmLi5lNzcxZGQ3MTg3ZTU4NTlhZGJkNWEwMTZmOGNhOTM1ZDI4ZTg0
YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRE
b3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC0xMTgsNSArMTE4LDUgQEAgY2xhc3MgRG93bmxv
YWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7CiAKIHZvaWQgYXR0
YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkK
IHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93
bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkp
OworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMTgwODNlNzY5N2E1MTM5OGYyZWUwOTRjZGIwNjhjMjA4
MzdiMWZhLi45YjU4MThhOTgzNmYzNzYyZDg5NjIyZTM2MmMzZmM4YjJkM2ViZmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRh
YmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBw
YQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKiBw
cml2ID0gZGF0YWJhc2UtPnByaXY7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gc3RkOjptYWtl
X3VuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7
CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbWFrZVVuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Cisg
ICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJY29uRGF0
YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CiAgICAgSWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNl
Q2xlYW51cCgpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAg
ICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVy
ZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5j
cHAKaW5kZXggNGY5ODBkNGVlMjU4YWNhYzQ1NTgzMjNjYTdiZDcxY2NkZjNiZWViMS4uNzY3NWM5
Y2IzYTVlZGFmODg2NGQxN2ExNzkyMTdjYjk0MjMzNjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcApA
QCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9maW5kX2Nv
bnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAogICAgIFdlYktp
dEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxlciA9IFdFQktJVF9GSU5EX0NPTlRST0xMRVIo
b2JqZWN0KTsKLSAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKKyAgICBnZXRQYWdlKGZp
bmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4oZmluZENv
bnRyb2xsZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0RmluZENvbnRyb2xsZXJHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcGFyYW1TcGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAppbmRleCAxMzRkMWM2Y2ViZTU2N2ZjNTRkOTcwZjg3
NmJlMDI5MzFkMzI4MjJkLi5iYzY3YTM1N2RjMDc0NDVhMzUyOGY4MGYwYWJkNzlkMDdjM2JjMDRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3Jt
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
b3JtQ2xpZW50LmNwcApAQCAtNDgsNSArNDgsNSBAQCBjbGFzcyBGb3JtQ2xpZW50IGZpbmFsIDog
cHVibGljIEFQSTo6Rm9ybUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoRm9ybUNsaWVudFRvVmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZp
ZXcpLnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7
CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Rm9ybUNsaWVudChtYWtlVW5p
cXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDJlMTU5NDVkZmFkMjljMzE1NTBkMWFkM2M0ZGQxNDk4YmU3YjcyMDQuLjhjYmE0MjJlZDVl
MzhiZjg0Yzc2MDU5NGQ2Y2YwZjY1ODhjYmVhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNw
cApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdl
clN0YXJ0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlcikKICAgICB9CiAKICAgICBp
ZiAoIW1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlcikgewotICAgICAgICBtYW5hZ2VyLT5w
cml2LT5nZW9jbHVlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlv
blByb3ZpZGVyPigpOworICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBt
YWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgICAgICBtYW5hZ2Vy
LT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShtYW5hZ2VyLT5w
cml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAgICB9CiAgICAgbWFuYWdlci0+cHJpdi0+Z2Vv
Y2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9jYXRpb25Qb3NpdGlvbiYmIGNvcmVQ
b3NpdGlvbiwgT3B0aW9uYWw8Q1N0cmluZz4gZXJyb3IpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCBX
ZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZShX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcgogewogICAgIGF1dG8qIG1hbmFnZXIgPSBXRUJLSVRfR0VP
TE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFO
QUdFUiwgbnVsbHB0cikpOwogICAgIG1hbmFnZXItPnByaXYtPm1hbmFnZXIgPSBwcm94eTsKLSAg
ICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVy
PihtYW5hZ2VyKSk7CisgICAgcHJveHktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8R2VvbG9jYXRp
b25Qcm92aWRlcj4obWFuYWdlcikpOwogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9h
ZGluZ0NsaWVudC5jcHAKaW5kZXggYjhmMDFmYjI0ZmYyNzY1NGMwYWQ2MDlhZGQzMjQxOTVlZTQx
Y2E1OS4uNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2RlYjI1ZmRhYTI3ZjY2YzUyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25M
b2FkaW5nQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0Ns
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgSWNvbkxvYWRpbmdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykKQEAgLTYxLDUgKzYyLDUgQEAgY2xhc3MgSWNvbkxvYWRpbmdDbGll
bnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CiAKIHZvaWQgYXR0YWNoSWNvbkxv
YWRpbmdDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRX
ZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBh
Z2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0Ns
aWVudD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGE5
M2ZmMjViMzlhMjkyNTYwMGQyYzRhZWNjZWNiYzc1NzBkNWRmM2QuLjkyNjJhODRkZWNlMjViZjBi
ZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAK
QEAgLTE3OSw1ICsxNzksNSBAQCBjbGFzcyBXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5h
bCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hJbmpl
Y3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQog
ewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluamVjdGVkQnVuZGxlQ2xp
ZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdl
YkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5qZWN0
ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcAppbmRleCAyMzZlODFjMTM5MGIzZWMzYzE1NDkxODY4NmJhZmE1ZTUzODY0Njg3Li41NTE2
MzY0NDc3NTU3NDdiNzBhYzVlNzZiMWQxMDRkNjFjMGI1Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
OjpXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJvCiAg
ICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobm90aWZpY2F0aW9uTWFuYWdlcikKIHsKICAgICBB
U1NFUlQobV9ub3RpZmljYXRpb25NYW5hZ2VyKTsKLSAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXIt
PnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlz
KSk7CisgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPE5v
dGlmaWNhdGlvblByb3ZpZGVyPigqdGhpcykpOwogfQogCiBXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcjo6fldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCA1YmNlZjY4ZjY1
ZDIzMTg5ODBjZjkxZGFlNTkzZDc2NjcxNDhhOTg5Li44OTZlMTNkYWQ5N2JlN2ZmNzc2YzAzYmY2
ZTdkMDI3ODJlMDMyMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMjUsNiArMjI1LDYgQEAgY2xhc3MgVUlDbGll
bnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXco
V2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJW
aWV3KS5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7Cisg
ICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0VUlDbGllbnQobWFrZVVuaXF1ZTxV
SUNsaWVudD4od2ViVmlldykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA0
OGIzOGVhYzA4ZDkxMmM5NjM5ZWY1NTA5NGIxMGYxZmZhZDFkOWY5Li4yMzZmMmJmYjUxN2U5NzQ5
ODRhNWI5MDQ0MjhiNDEyZDQ3MmFmMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKQEAg
LTIzOCw3ICsyMzgsNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcihXZWJLaXRVc2VyQwogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKG5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3Ry
aW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNj
cmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5h
bWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIHJldHVybiBt
YW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApAQCAtMjg4LDcgKzI4OCw3IEBAIGdib29sZWFu
IHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5k
bGVyX2luX3dvcmxkKFdlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod29ybGROYW1lLCBGQUxT
RSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAg
ICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSks
IHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgICAgIFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPiht
YW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRX
b3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKaW5kZXggYmZjNTY3Y2VkNWJiMTcwMWQzYWM5Mjc2N2FlYmFhNDJkYjJjMzk3
YS4uNTQ0ZDllMjU1ODc1YTVmMDdlOTM1OWQ2NTdiNDUyYWE4YzdkYzQzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
QEAgLTM2Nyw5ICszNjcsOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7
CiAKICAgICBwcml2LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0R2VvbG9j
YXRpb25NYW5hZ2VyQ3JlYXRlKHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5PigpKSk7Ci0gICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5wcm9j
ZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdlYkNv
bnRleHQpOworICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0gbWFrZVVuaXF1ZTxXZWJL
aXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250ZXh0KTsKICNpZiBQTEFURk9STShH
VEspICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIHByaXYtPnJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4od2Vi
Q29udGV4dCk7CiAjZW5kaWYKIH0KIApAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgZ2Jvb2xlCiAgICAgICAgICAgICBnX3dhcm5pbmcoIk5vdCBlbmFibGluZyBhdXRvbWF0aW9u
IG9uIFdlYktpdFdlYkNvbnRleHQgYmVjYXVzZSB0aGVyZSdzIGFub3RoZXIgY29udGV4dCB3aXRo
IGF1dG9tYXRpb24gZW5hYmxlZCwgb25seSBvbmUgaXMgYWxsb3dlZCIpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQpOwor
ICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJL
aXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKICAgICB9IGVsc2UKICAgICAgICAgY29udGV4
dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYjIz
OWFjNGUxOWU2M2QzM2E4NjlkZWZiNjZmYzNjMGI0NTAwYjc4NS4uZDMzNjRkYTZjMDhhYTlhYzdh
NDY1OGJlOThhZmM0ZTcyNjdmYTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTcyNSw3ICs3MjUsNyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgd2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdl
YlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcp
OwogCi0gICAgcHJpdi0+bG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZFN0
YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOworICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IG1ha2VVbmlx
dWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdlYlZpZXcp
LnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVyKTsKIAogICAg
IC8vIFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlv
bi4KQEAgLTc0MSw3ICs3NDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAKICNpZiBQTEFURk9STShXUEUpCi0gICAgcHJp
di0+dmlldy0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmll
dykpOworICAgIHByaXYtPnZpZXctPnNldENsaWVudChtYWtlVW5pcXVlPFdlYlZpZXdDbGllbnQ+
KHdlYlZpZXcpKTsKICNlbmRpZgogCiAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBhZnRlciBhdHRh
Y2hVSUNsaWVudFRvVmlldygpIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudCgpIGNh
bGxzIHNldENhblJ1bk1vZGFsKCkgd2l0aCB0cnVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBmMDlkNmM3ZTkyMDY4M2E3
NTY2NTI3Njk2N2U3NDdjYzZjZWViNDgxLi4wNmIzYjgzNjA2NWQ5ZjY2YTA3OThhMjA5NTUxM2Nh
ODY4YjMxYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNs
aWVudEltcGwoR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmly
dHVhbCBmdW5jdGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JB
U0UobV92aWV3V2lkZ2V0KSksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdp
bmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdl
KFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKIH0KIAogdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdp
b24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RW1vamlDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RW1vamlDaG9vc2VyLmNwcAppbmRleCAzMWUwOTczZmUxMDAzYzZlYTY1MjMwNjFhNjdj
OTQ5ZDUzZWJkNmI3Li4yZDFjMmNiMzY4YTk5MzMxNjk3NDI0NmEwZWQ1OTljMjhkY2FlNmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hv
b3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9q
aUNob29zZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RW1vamlD
aG9vc2VyU2V0dXBFbW9qaVNlY3Rpb25zKFdlYktpdEVtb2ppQ2hvb3NlciogY2hvb3NlciwgR3QK
ICAgICAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbnVsbHB0cjsK
ICAgICB9OwogCi0gICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsK
KyAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBtYWtlVW5pcXVlPENh
bGxiYWNrVGltZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOwogICAgIGNob29zZXItPnBy
aXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0UHJpb3JpdHkoR19QUklPUklUWV9ERUZBVUxU
X0lETEUpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0TmFt
ZSgiW1dlYktpdEVtb2ppQ2hvb3Nlcl0gcG9wdWxhdGUgc2VjdGlvbnMgdGltZXIiKTsKICAgICBj
aG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnN0YXJ0UmVwZWF0aW5nKHsgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMGY2
NzQ4NjQ1MmNkMWZhODdhODI4NjJlN2U2MDU3MzRkZmMzNTk2OC4uZWEwYmMyZGVhMWY0NWE4MjQy
NGEzMmJjMzU4MzFjYWRhNDNhYmNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtMTA1LDEzICsxMDUsMTMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCog
cmVxdWUKICAgICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAgIGF1dG8gdXNlckNvbnRlbnRNYW5h
Z2VyUmVzdWx0ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFkZCh1c2VyQ29udGVudE1hbmFnZXIp
OwogICAgIGlmICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAg
ICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFr
ZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpV
c2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgYXV0byBoYW5kbGVyID0g
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VD
bGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vha19yZWYoR19PQkpF
Q1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4odXNl
ckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogCiAgICAgYXV0byogY2xp
ZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCks
IFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJl
cXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgp
LCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlLmdldCgpOwogCiAgICAgR1N0cmluZyogaHRtbCA9IGdfc3RyaW5nX25ldygKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNw
cAppbmRleCAwZjAxNzExZTc5NjFlOGIwMGM1ZTU3NGQyODg1MGQwNWIyNDFmNmVjLi5mMTBhMGRh
NmQwMzNlOGZlMTI0ODdmNjgyNWY4YzBjNzg2ZDE4YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCkBAIC0zNjAs
NyArMzYwLDcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRXZWJJbnNwZWN0b3JDcmVhdGUo
V2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvcikKIHsKICAgICBXZWJLaXRXZWJJbnNwZWN0
b3IqIGluc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfSU5TUEVDVE9SLCBOVUxMKSk7CiAgICAgaW5zcGVjdG9yLT5wcml2LT53ZWJJbnNw
ZWN0b3IgPSB3ZWJJbnNwZWN0b3I7Ci0gICAgd2ViSW5zcGVjdG9yLT5zZXRDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOworICAgIHdlYklu
c3BlY3Rvci0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50PihpbnNw
ZWN0b3IpKTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDFiOWRk
OGQxZjQ2MDIxNGY1YTc3MjY3MmMyZmI2NTM3MGI1MjBjNWUuLjg4YjNjZjQzYmZlNjhlZTk3Yzcz
MWI3NjRkNDQ5OTBhN2JmYzVhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC01NjYsNyArNTY2LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmlld1dpZGdldCwgUGFzdGVib2FyZEhl
bHBlcjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdCgpKTsKIAogICAgIFdlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKG9iamVjdCktPnByaXY7Ci0gICAg
cHJpdi0+cGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXdX
aWRnZXQpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBs
Pih2aWV3V2lkZ2V0KTsKICAgICBwcml2LT5kaWFsb2cgPSBudWxscHRyOwogfQogCkBAIC0xMjIw
LDcgKzEyMjAsNyBAQCBHZXN0dXJlQ29udHJvbGxlciYgd2Via2l0V2ViVmlld0Jhc2VHZXN0dXJl
Q29udHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldwogewogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+
Z2VzdHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSks
IHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmlld0Jhc2UpKTsK
KyAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEdlc3R1cmVDb250
cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgbWFrZVVuaXF1ZTxUb3VjaEdlc3R1cmVD
b250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVybiAqcHJpdi0+Z2VzdHVyZUNvbnRy
b2xsZXI7CiB9CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIERyYWdBbmREcm9wSGFuZGxlciYgd2Vi
a2l0V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnBy
aXY7CiAgICAgaWYgKCFwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIpCi0gICAgICAgIHByaXYtPmRy
YWdBbmREcm9wSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0FuZERyb3BIYW5kbGVyPigq
cHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyID0gbWFr
ZVVuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAgIHJldHVy
biAqcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVs
YXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZQogICAg
IGlmIChwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIpCiAgICAgICAgIHByaXYtPnZpZXdHZXN0
dXJlQ29udHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwogICAgIGVsc2UgewotICAgICAgICBw
cml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmll
d0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+dmll
d0dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJv
bGxlci0+c2V0U3dpcGVHZXN0dXJlRW5hYmxlZChwcml2LT5pc0JhY2tGb3J3YXJkTmF2aWdhdGlv
bkdlc3R1cmVFbmFibGVkKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCmluZGV4IDJjYWIyZTA1Mzg2ZDQyYjM3MWY0NDA2YWI3MWE3ZjY1OTMwZjdk
NzcuLjE0NjAzZDVhZmViYWY2ZGVlMDExOTc5NTc3MDM4ODM0OWQ0ZTdiMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04OTUsNiArODk1LDcgQEAgLSAo
dm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogewogICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJs
aWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdDbGllbnQoV0tW
aWV3ICp3a1ZpZXcpCiAgICAgICAgICAgICA6IG1fd2tWaWV3KHdrVmlldykKQEAgLTkzMiw3ICs5
MzMsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW3NlbGYgcmVzcG9uZHNUb1Nl
bGVjdG9yOkljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNlbGVjdG9yKCldKQotICAgICAgICBf
ZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9kYXRhLT5faW1wbC0+cGFnZSgp
LnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHNlbGYp
KTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9j
ZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlv
bjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbgpAQCAtOTQ0LDcg
Kzk0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJv
Y2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAgICAgV2ViS2l0OjpJbml0aWFsaXpl
V2ViS2l0MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxsb2NdIGluaXRdOwotICAg
IF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2Vs
ZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgIF9k
YXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgbnVsbHB0
ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCiAgICAgW3NlbGYgbWF5
YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDg1MTI5YTU0ODdjOWZmYmVk
NTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3NTg4NTczZGZmNDM2MDMzNzdlZjhk
MTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFn
ZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFn
ZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBQ
YWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6OlZpZXcmIHZpZXcpCiAgICAgOiBt
X3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fc2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKIHsKIH0KIApA
QCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6Omhvc3RGaWxl
RGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcucGFnZSgpLCBw
cm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShj
b25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkxMDlhYTI4NTViOGJiNDE1NzE3MDQ0
Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQwMzBjZTA0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC00Miw4ICs0Miw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tXUEUgewogCiBWaWV3OjpWaWV3KHN0
cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0
aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpW
aWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudElt
cGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAwIH0KICAgICAsIG1fdmlld1N0YXRl
RmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgfQogICAgICwgbV9iYWNrZW5k
KGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6flZpZXcoKQogdm9pZCBWaWV3Ojpz
ZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0NsaWVudD4mJiBjbGllbnQpCiB7CiAg
ICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlZpZXdD
bGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNw
cAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1YjEzNTYxY2IzNjZjLi5iNGYyN2I2
ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAg
dm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyos
IFdlYktpdExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChzdGF0dXNTZXQpIHsKICAgICAgICAg
V1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1ZXN0UHJpdmF0ZSh2aWV3LT51cmwo
KSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9h
ZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdMb2FkUmVx
dWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0
Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BFUXRWaWV3TG9hZFJl
cXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5n
Q2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQogfQpAQCAtMTY2LDcgKzE2Niw3IEBA
IHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyos
IFdlYktpdExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9hZFN0YXR1cyA9IFdQRVF0Vmlldzo6
TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAgIFdQRVF0Vmlld0xvYWRSZXF1ZXN0
UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3RyaW5nKGZhaWxpbmdVUkkpKSwgbG9h
ZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdM
b2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmlld0xvYWRS
ZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZp
ZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1
ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdl
ZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9p
ZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3OjpydW5KYXZhU2NyaXB0KGNvbnN0IFFT
dHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxiYWNrKQogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxK
YXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BFUXRWaWV3Pih0aGlz
KSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+IGRhdGEgPSBt
YWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNrLCBRUG9pbnRlcjxXUEVR
dFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJW
aWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRhKCksIG51bGxwdHIsIGpzQXN5bmNS
ZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCmluZGV4IGE4
NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQxZjkuLjEzZmQzN2FlZmYyYjY1MzVk
NTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcApAQCAtNjUsNyArNjUsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4gV1BFUXRWaWV3QmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICghZWdsQ29udGV4dCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdC
YWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBl
Z2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BFUXRWaWV3QmFja2VuZDo6V1BFUXRW
aWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29u
dGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29udGV4dD4gY29udGV4dCwgUVBvaW50
ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBjY2U1YzQ4MTdh
ODA0OTE3Y2RjMTk5YzFiMDE2MGUyNTZlOWJlMjk3Li5hNTkxNTBkYjdhNDBkYzdiYzE1ZGI1MWJl
OGVmNGUxMTM1NmRjNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzMsMTEgKzczLDEx
IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQgPSAzMDBfczsK
IHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0
cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwogCiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAgIDogbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQorICAgIDogbV9jbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQogICAgICwgbV9mcm9udGVuZFJv
dXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQog
ICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9kb21haW5Ob3RpZmllcihz
dGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmllcihtYWtlVW5pcXVlPEF1dG9tYXRpb25Gcm9u
dGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9sb2FkVGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21hdGlvblNlc3Npb246OmxvYWRUaW1lckZpcmVk
KQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDZiMDliYWRiOGQwY2Vi
YWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3ZTg3YzUxZGM0YWU5ZDYzOWIxZDRm
MzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJv
eHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDwK
IHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7
CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6
cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNv
ZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50
cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21h
dGlvblNlc3Npb25DbGllbnQuaAppbmRleCAxMGE4ZTQyNDEzYjI5YWZmYjYzNzdkODRhMDliZTUx
MWJkMjUxZDVjLi5kZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFhNDAxNTdjOTRmMmZhOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNz
aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChpZCA8X1dLQXV0b21hdGlvblNlc3Np
b25EZWxlZ2F0ZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9JY29uTG9hZGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9J
Y29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3MjM5NzMyMDVjYzZkZjRjYzY2YTY3
OTA2YzAyOWIwZC4uMDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlkZjQyYzIzYzE0ZDYwNWFkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdh
dGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEljb25M
b2FkaW5nRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3ICopOwogICAgIH5JY29u
TG9hZGluZ0RlbGVnYXRlKCk7CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNzIEljb25Mb2FkaW5nRGVs
ZWdhdGUgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGlj
IEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KEljb25M
b2FkaW5nRGVsZWdhdGUmKTsKICAgICAgICAgfkljb25Mb2FkaW5nQ2xpZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQpp
bmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIyYmViNWJjYmQ3YzBkNzRjZmI0Li4xNjNmYjk1MmVl
MGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KQEAgLTQ0LDcgKzQ0LDcg
QEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fkljb25Mb2FkaW5nRGVsZWdhdGUoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3Jl
YXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElj
b25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SWNvbkxvYWRp
bmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tJY29uTG9hZGluZ0RlbGVn
YXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmRlbGVnYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGE1MWEyMjM2MjM4NDE1MWFiMTFkNDg5
NDM2OWY4YTE4NTgwMDY3ZGEuLmY1MTM3ZjljYzczMTYzODhlNjFkZTEwNzczZmYzNDI4NTYyNTA1
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAt
NzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6On5VSURlbGVnYXRlKCkKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiBVSURl
bGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOwogfQogI2VuZGlmCiAKIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPFdLVUlEZWxlZ2F0ZT4g
PiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IDQ4YzJiMmI0ZTA2MTA2OTI3MmFlYjhiOTRhMjM0ZWFhOTI2YWY3NmQuLjkxY2Y5NDgwYzc1MThj
ZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
CkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5
IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyLCBwdWJsaWMgU2hhcmVkUmlu
Z0J1ZmZlclN0b3JhZ2U6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgU291cmNlUHJveHkodWludDY0X3QgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogICAgICAg
ICA6IG1faWQoaWQpCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkK
ICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsKICAgICAgICAgc2V0dGluZ3MgPSBz
b3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlk
KSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8U291cmNlUHJv
eHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CisgICAg
ICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9j
ZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgfSBlbHNlCiAgICAgICAg
IGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5lcnJvck1lc3NhZ2Up
OwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwgaW52YWxpZENvbnN0cmFpbnRzLCBX
VEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXggOWNhNmZhMzUz
NDk2MDE4MDNkZjVkM2QxYjJhYmEzMTY1NTc0MGMzOS4uOWJkZGI5OTA5ZGY3ZThmZWYxZTU0ODA2
Y2JlNmJjNWM0MGNmYzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtMzksNiArMzks
NyBAQCBjbGFzcyBTaGFyZWRNZW1vcnk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNz
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQcm94eSYpOwogICAgIH5V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzMDcwZDU3NDQzZmRm
NzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQyZmEyYTA4NjA0MTdjNmNmODBkN2Jj
ZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIGlmICghW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFN1cHByZXNzTWVtb3J5UHJl
c3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKTsK
IAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisgICAgc2V0TGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01
MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9ic2UKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlMaW5rID0gc3RkOjptYWtlX3Vu
aXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKKyAgICBhdXRvIGRpc3BsYXlMaW5rID0gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKICAgICBkaXNwbGF5TGluay0+YWRkT2Jz
ZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAgbV9kaXNwbGF5TGlua3MuYXBwZW5k
KFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggNWMyMWNhNzVhMTgyOWM1
MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3YjQ2MDU0OGNlMGY4NmQ3YTVkMTE3
YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIgPSBb
YWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRs
eVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tncm91bmQgYWN0aXZpdHkgdGltZWQgb3V0Iiwg
d2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1lciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92
ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1
cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRBY3Rpdml0eVRp
bWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOwogICAgIGNvbXBsZXRp
b24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQppbmRleCBmMTc2ZjFhNjVhOTkyYzUxYWMzNDRlZDAwODg1N2UwMTNlZjk5NGIxLi4z
N2Y1NGRhNGFkMmQ2YTI1NDdjMWRkMzU5Yjg5NWM4YTU0YTI1OTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTMzNCw3ICsxMzM0LDcgQEAg
c3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0cmFja2luZ0FyZWFPcHRpb25zKCkKIAogV2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcs
IFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3ZpZXco
dmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBs
Pih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFn
ZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCiAgICAgLCBtX3BhZ2UocHJvY2Vzc1Bv
b2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSkK
ICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKG1fcGFnZS0+cHJlZmVy
ZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAgICwgbV9pbnRyaW5zaWNDb250ZW50U2l6ZShD
R1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0cmljLCBOU1ZpZXdOb0ludHJpbnNpY01ldHJp
YykpCkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoTlNWaWV3
IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldlYgogICAgIHZp
ZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQbGFjZW1lbnRU
b3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fcGFnZS0+c2V0RnVs
bHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4o
dmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktp
dDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwogI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9v
bDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0xNzMwLDkgKzE3MzAsOSBAQCBDR1Np
emUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQ
cm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgaWYgKFtbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXQyVXNlUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFsdWVdKQotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nl
c3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Piht
X3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc1VzaW5nVUlTaWRlQ29t
cG9zaXRpbmcoKSBjb25zdApAQCAtMzM3NSw3ICszMzc1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGV4dEluZGljYXRv
cihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yLCBXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAgICAgaWYgKCFtX3RleHRJbmRpY2F0
b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxlYXNlZCgp
KTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOwogCiAgICAgTlNS
ZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW1ttX3ZpZXcgd2luZG93
XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcgY29udmVydFJlY3Q6dGV4dEluZGljYXRvci50
ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5pbF1dOwogICAg
IG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBO
U1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyksIGxpZmV0
aW1lKTsKQEAgLTQzNzcsNyArNDM3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNhdmVCYWNrRm9y
d2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogVmlld0dl
c3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIoKQog
ewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgbV9nZXN0dXJlQ29udHJv
bGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOwor
ICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUNvbnRy
b2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICptX2dlc3R1cmVDb250cm9sbGVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5ZTU4Y2NkYTEwZjNlYTQ0NGMyNzYu
LjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2NWQyODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFw
aGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXAKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6ZSwgdXBk
YXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2Jh
Y2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZvLnZpZXdTaXpl
LCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7CiAKICAgICBt
X2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAKQEAgLTQ0Miw3
ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNw
YXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuYwogICAgIH0KIAogICAgIGlmICghbV9k
cmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdNb25pdG9yPiht
X3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBtYWtlVW5pcXVlPERy
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQ
YWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0b3ItPnN0YXJ0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJkMDM4NmFjZjVkOGFkNTM1Yzc5MTJhODg2Y2Jk
MGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2NjVlZTFiNzg2OTZhNmE0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9yCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lu
RGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSks
IFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4g
PSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0
YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdU
Rk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgaGFzaFNhbHRGb3JPcmlnaW4tPmxhc3RU
aW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0VGltZVVzZWQpOwogCkBAIC0y
MTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZp
Y2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKIAogICAgICAgICBTdHJpbmcg
ZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgICAgICBhdXRvIG5l
d0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4o
V1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShk
ZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JPcmlnaW4gPSBt
YWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3JpZ2luKSwgV1RG
TW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAogICAgICAg
ICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5OWE1MDM0NGYzMTI1MWY1ZTk2ODQu
LmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1Y2E3YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAK
QEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVh
dGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbAogCiAgICAgaWYgKG1f
ZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hvdWxkVGFrZUFzc2VydGlvbikgewogICAgICAg
ICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRVSUFz
c2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFBy
b2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRl
ZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBtYWtlVW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9h
ZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAgICAgICBB
U1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBt
YWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3Jr
aW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2Vz
cyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb25zIGZvciBVSVByb2Nlc3MgYW5kIE5l
dHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oCmluZGV4IDNkZWY1ZDc5ZjA3Y2I5MTQwYjgyNTYyZGI5ZjZmMmJjNmQwZjcyZjYu
LjU2MDZjNTExNjUzNGY0M2NmYzgwNmQ1MTFkNDFlZDk4Y2ZiMjUxNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBEcmF3aW5nQXJl
YVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcm90ZWN0ZWQgSVBDOjpNZXNz
YWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEcmF3aW5nQXJlYVByb3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBl
Y2FhYzMwMWI0YmRmNDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRmNjQwLi5mNGI3YmVhNjU4NTA5OTFl
OTQ5NGE2MjIzZDU0Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2
b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMoY29uc3Qg
VmVjdG9yPFBsYXRmb3JtR2FtZXBhZAogICAgIGZvciAoYXV0byogZ2FtZXBhZCA6IGluaXRpYWxH
YW1lcGFkcykgewogICAgICAgICBpZiAoIWdhbWVwYWQpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8
VUlHYW1lcGFkPigqZ2FtZXBhZCk7CisgICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgo
KV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOwogICAgIH0KIAogICAgIGZvciAo
YXV0byYgcG9vbCA6IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcykKQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxh
dGZvcm1HYW1lcGFkJiBnYW1lcGFkKQogICAgICAgICBtX2dhbWVwYWRzLmdyb3coZ2FtZXBhZC5p
bmRleCgpICsgMSk7CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7
Ci0gICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdh
bWVwYWQ+KGdhbWVwYWQpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IG1ha2VV
bmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKIAogICAgIHNjaGVkdWxlR2FtZXBhZFN0YXRlU3lu
YygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFu
Y2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBl
cmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAppbmRleCA3ZDU2YjBhMjQ2M2RlZGYxNjY5
NThjMjhmZmI3NWFhMGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVlZTJlZmExYmQwNWEyYTc1NjExMWEx
NWQ5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFu
Y2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0hp
Z2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgSGlnaFBlcmZv
cm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1w
bGVyKFdlYlByb2Nlc3NQb29sJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBkM2QwM2NlZWQ4MzEz
YmNhMjdiMzkxNWFjMzdjZTZlM2VkNzMwOTkuLmVlYjQwOTg5NWNlMGUyM2M5ZmMzZTk1ZjM1ODE4
MGZjOWFiMDQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91
bmQpCiBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFBy
b3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIGlmICgh
bV9kb3dubG9hZFByb3h5TWFwKQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBzdGQ6Om1h
a2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9kb3dubG9hZFBy
b3h5TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CiAKICAgICByZXR1
cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2ws
IHJlc291cmNlUmVxdWVzdCk7CiB9CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBXZQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9u
KCkKIHsKICAgICBBU1NFUlQoIW1fdXBsb2FkQXNzZXJ0aW9uKTsKLSAgICBtX3VwbG9hZEFzc2Vy
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzc0lkZW50aWZp
ZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29y
a2luZyk7CisgICAgbV91cGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3Rh
dGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmNsZWFyVXBsb2FkQXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzViODIxM2MyOGZjYjZiOTQw
YTEwOTliZTE0MDhmOTA2YTNiOTJiYi4uMWZkYjY2YzE1NWQ4N2IyMjYyZjJhM2Q1ZTEwZGUyMzkx
NDM4YTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwcml2YXRl
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrUHJv
Y2Vzc1Byb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAg
ICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJhYWZmMWVjMmE2NTQ5
MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIuLjQ3YTNlOWIyM2JhMTI2NTE5OGI2MGVkZGY2YzRk
ZDk4NmZjZDIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAK
QEAgLTU2LDE0ICs1NiwxNCBAQCBSZWY8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUAogCiBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNz
UG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9v
bCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblBy
b3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9u
UHJvdmlkZXI+KCkpCiB7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpz
ZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4mJiBw
cm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVyKSB7Ci0gICAgICAgIG1fcHJvdmlkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1f
cHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRl
eCBlYzY0YmM5ZTE2MmNiN2NhMWU3NTM3ZTkzMzFkNGYxMzk1ODdlYzQxLi42Y2Y1ZTE0ZWE1Njlm
MjNkYTg0NzU0MDk2Y2E1MTE0NTNjMjk4YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0g
dWludDMyX3Q7CiAjZW5kaWYKIAogY2xhc3MgUGFnZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxQYWdlQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKaW5kZXgg
MDFhN2RhN2I4OTFhOTAwNjZjOTBlODQyOWM2NTZiZDcwMGIxNjZiZC4uZWE0MzkyN2Q0OGQ3NTJi
ZWI2NzI4MDk0OTljOWFkMGJmZTA3YmM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaApAQCAtMzUsNiAr
MzUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xh
c3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3Vu
aXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggZjZmNDc5YjFlMDM5
MmYzMjIxNjBhNjQ5NGFlYzYyZTBhMDY3OTZkZC4uODQzNjlkMzM0NDA3Y2ZiYzJlODNhYTgyN2M1
Y2MwZTVkYjkxMjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtNjMsNyAr
NjMsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2lu
UHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYQogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRp
YyBib29sIHBsdWdpblJlcXVpcmVzR3RrMihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1
bGU+KHBsdWdpblBhdGgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IG1h
a2VVbmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVy
PGdwb2ludGVyPigiZ3RrX29iamVjdF9nZXRfdHlwZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAwMGE5OTE4ODYxNDg3MzkzOGE2Y2I0YWJk
OTkxNGJjODYyOTQ1Y2Y3Li40Y2UyNjJlOWRjYmI0YjFiMGZmMGFkNWRiOTdlYjk3ZjM2MDczNzVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAt
MTAzLDkgKzEwMyw5IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vz
cyhQcm9jZXNzSUQgcGlkKQogCiAgICAgbV9zdXNwZW5kVGltZXIuc3RvcCgpOwogICAgIGlmICht
X3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCi0gICAgICAgIG1fYXNzZXJ0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50
IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fzc2VydGlvbiA9
IG1ha2VVbmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNp
YmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYXNzZXJ0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVu
dCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxp
dHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwogICAgIG1fcHJvY2Vzcy5kaWRTZXRBc3NlcnRpb25T
dGF0ZShhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX2Fzc2VydGlvbi0+c2V0Q2xpZW50KCp0aGlz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0K
aW5kZXggNjBmMDJjNjEwZmNkOTg4MzA2MzljNTdiM2U5ZDYxZmYxZmQ1MjVmZC4uMjc0YWJkMzAy
OWMwMDc3MzM5ZGZlMzc0OGZmMzA2OTdjOWI0OGI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEwNyw3ICsxMDcsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIDogRHJhd2luZ0FyZWFQcm94eShEcmF3aW5n
QXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBhZ2VQcm94eSwgcHJvY2VzcykKLSAgICAsIG1f
cmVtb3RlTGF5ZXJUcmVlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+
KCp0aGlzKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChtYWtlVW5pcXVlPFJlbW90ZUxh
eWVyVHJlZUhvc3Q+KCp0aGlzKSkKIHsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICAvLyBXZSBk
b24ndCB3YW50IHRvIHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJIHByb2Nlc3MuCkBAIC0zNzYsNyAr
Mzc2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp1cGRhdGVEZWJ1
Z0luZGljYXRvcihJbnRTaXplIGNvbnRlbnRzU2l6ZSwKIAogdm9pZCBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKQogewotICAgIG1fZGVi
dWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRy
ZWVIb3N0PigqdGhpcyk7CisgICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3QgPSBtYWtl
VW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKICAgICBtX2RlYnVnSW5kaWNhdG9y
TGF5ZXJUcmVlSG9zdC0+c2V0SXNEZWJ1Z0xheWVyVHJlZUhvc3QodHJ1ZSk7CiAKICAgICBtX3Rp
bGVNYXBIb3N0TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCAzMDAyNWQ0Mjk5ZjNiY2EwNDg1ZDMwNGQ4MzM1ODE3
NjEwYmE1MGJkLi44YTRlNTA0ODE3ZWJjMTI1Y2U4OThjMWMyOTFkOWE2ZTRkNWY1ODJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkxheWVyQ3JlCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3Rl
TGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIGF1dG8gbWFrZVdp
dGhMYXllciA9IFsmXSAoUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyKSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJ
RCwgV1RGTW92ZShsYXllcikpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXll
clRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKICAgICB9Owog
ICAgIGF1dG8gbWFrZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENBTGF5ZXIqIGxheWVyKSB7CiAgICAg
ICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMobGF5ZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2Rl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZU5vZGUubW0KaW5kZXggZTg4YmJjNjA4ZDRmYjA1ODM4NGQyOWIyNjk4MTU5MmVkYTgxNGVi
YS4uNGZkNGVhMjY5ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBkODQyNDA2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZU5vZGUubW0KQEAgLTczLDcgKzczLDcgQEAgUmVtb3RlTGF5ZXJUcmVlTm9kZTo6
flJlbW90ZUxheWVyVHJlZU5vZGUoKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5v
ZGU+IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKQogewogICAgIFJldGFpblB0cjxD
QUxheWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1BsYWluUmVtb3RlTGF5ZXIgYWxsb2NdIGluaXRd
KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihsYXll
cklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJU
cmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwogfQogCiB2b2lkIFJlbW90ZUxheWVy
VHJlZU5vZGU6OmRldGFjaEZyb21QYXJlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCmluZGV4IGMyNzgxZGM4YWRhMzQz
MzlmNzllZDg1YTdlM2U5ZmY3NjUyMjI1MjguLjI5ZGZlZmU2Y2I3MmMxMjBhNjFjYzIyZDBkM2Jh
NjRhNmQ5NDQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OwogCiBjbGFzcyBSZW1v
dGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Jik7CiAgICAgflJlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5kZXggODZkMGRlZmM2OTY1ZTRmYTZiYTExNjQ3
NjFiYzlhYzcxOThjNzJlNi4uMWE3Njk0M2YyNDViZTFjZDgyMmYxOTYxM2NkZDM1ZjU0MGE5NGNk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCkBA
IC00OSw2ICs0OSw3IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGluZ1RyZWU7CiBjbGFzcyBXZWJQYWdl
UHJveHk7CiAKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhv
c3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggNjI5YTljNjUwZDQzYzBkNTYxYzgxOTMzYmEw
ZDE0ZThkMzNlYTQ0NC4uMGMxMjZhZTZhZjc1ZTQxMzhhZmQwMDg2ODM5NTY2MjlmZjcwMDIzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9S
ZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNjEsNyArNjEs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4gY3JlYXRlUmVtb3RlVmlldyhwaWRfdCBwaWQs
IHVpbnQzMl90IGNvbnRleHRJRCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2Rl
PiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7CiAgICAgYXV0
byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0cjxVSVZpZXc+IHZpZXcpIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5s
YXllcklELCBXVEZNb3ZlKHZpZXcpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKICAgICB9
OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9IFsmXSAoVUlWaWV3KiB2aWV3KSB7CiAgICAg
ICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1Mu
bW0KaW5kZXggODFhMmViOWE2MzVkNTk4NDE2MDBmNzgzNTIwNGFjODRiZDZkNWMyOC4uYjg5MDY4
MWU5ZTdhNTEzYmEzNDM2N2NlZjM5ODliZTNiMTlkOWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5t
bQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgUwogCiAgICAgaWYgKHN0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAgICAgaWYgKHNjcm9sbENvbnRhaW5lckxheWVy
KCkpCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOworICAgICAg
ICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5t
bQppbmRleCBiNTZlMmVhNjRkYTUyMDMxZGZhZjEyOGVjMjQ4Y2QxNWM3MTAwOTI2Li5kMGJkZDNj
NTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFhYjU3ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCkBAIC00
Myw3ICs0Myw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TCiAKIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgV2ViQ29yZTo6U2Nyb2xs
aW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUo
c3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigq
dGhpcykpCisgICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShtYWtlVW5pcXVlPFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2N2MwYjYxNjJlMDY3ODNjZjM3NmNmNjE5MDdl
Mi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3OWM3NDUyOTQzNzI5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGlu
Z05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlVHlwZSwgbm9kZUlEKQotICAg
ICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlz
KSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhp
cykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IGQ4OTYwY2VjMzBl
NDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMuLmI2Y2EzY2JiYTgwODA3YWY3YjlmNjk5YmU5
YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYz4g
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTgogCiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAg
ICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5vZGVJRCkK
LSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigq
dGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFpck1hYz4o
KnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCBmNTA1
ZTI4MGM0NDI5MGE4MDNkYmRiNjhjOThlZWE2MzBiMWM5YmI2Li44NjhiNTRlNzkyYWYyYWJkOTg2
YmM4NjYwMDVjYjEyZjQ1NjgyNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgK
QEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKICAgICB+VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCmlu
ZGV4IGNhMjZlNTFkN2E0MDY0YWEyODEyN2MwZjAxZDU0YTRlMGFjMjQ0NjMuLjM5M2IxMzY3MWY2
MDE0MTZhNmVkN2MyZmRhYjBjZDJlYjA4MWUzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5t
bQpAQCAtOTIsNyArOTIsNyBAQCBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2VydmljZTo6
Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2Vy
dmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIGF1dG8gZHJp
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9u
KGRldmljZSkpOworICAgIGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihj
cmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwogICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGlu
Zm8gZnJvbSB0aGUgZGV2aWNlLgogICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRo
ZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5m
byksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShW
ZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5LmgKaW5kZXggODVjZTY5MDYxMTE0NDJiYzY3OWNjN2E3NzViODY4MmRkMTU3MjhjOS4uZjg1
MmJlZDIxMzBiNDdjMmY3ZGQyOThhZDM1NmFlYWM4N2MwMjY4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHJveHkmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
LmNwcAppbmRleCA5OWQ2ZWEzMzQxNTNlY2Y0OWQ0NTg0Yzc0M2RjNjgxNjg4NDE1NTIwLi44NDZh
NWFhMjdkZmFiM2QyNzRjZmZhNDg3Mzg2MWYyNTg3ZDE3ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vCiAKIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJv
Y2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAs
IG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkp
CisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigp
KQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KQEAgLTU0LDcgKzU0LDcgQEAgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG8KIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0
ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7CiAg
ICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVu
aXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgZWxzZQogICAgICAgICBtX3By
b3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAppbmRleCAyY2RjZDE3
NjUyOTlmZTc3NjQ5YmFiZjlkZTNlNzRlOGIwZjAwZTM3Li4zMzY0YmNiY2M5MTE4NGE2YmE3NTQx
ZWY5MGIwZjk2MDRjZGU0ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2
b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVz
RnJvbU1lZGlhU3RhdGUoV2ViUGFnZQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
cjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQYWdlUHJveHkmIHByb3h5LCB1aW50NjRfdCBl
bGVtZW50SUQpCiB7Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CisgICAgbV9mb2N1c2Vk
TWVkaWFFbGVtZW50ID0gbWFrZVVuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVs
ZW1lbnRJRCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpjbGVhckZv
Y3VzZWRNZWRpYUVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0
aW9uU3RhdGUuaAppbmRleCA5ZWI5ZDI4YWRkZDViNWIwMDZkNTBiMDhhM2Q3NGZiNjlkMTYyMzky
Li4xNmE3NTlhYzhhMWZmMzE0NjA1YjA5NDZmZmM1YWE2NTgxOGUwNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaApAQCAtNDUsNiArNDUsNyBAQCBj
bGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogCiBjbGFz
cyBXZWJOYXZpZ2F0aW9uU3RhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFdlYk5hdmlnYXRpb25TdGF0ZSgpOwogICAgIH5XZWJOYXZpZ2F0
aW9uU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggNjUyOTgyYTgxMmE5ZWZiZWY1MjFhNmE5ODk5ZmE0
YmVlNWZhZjM0Yy4uMWIyOWY3OWRkZmFlYTA3YjllNzI0OWJkNzcyMzg0ZWViZjUzMGZkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQ
YWdlUHJveHk7CiAKIGNsYXNzIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCA6IHB1YmxpYyBB
UEk6OkNsaWVudDxXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2U+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0
Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0KiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXgg
YzRiOTJjODNjZmVhMjliMzFlZGJiMzRhYTg0MDI1YmE1YzhiMDNiNy4uYmRhNTljZDgwNTE1NzY0
NmIzMDhkMmZkMjM2ZjNkMTE4MjcxZTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIo
V2ViUGFnZVByb3h5JiBwYWdlKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRl
cjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogewotICAgIGF1dG8gdGFyZ2V0
QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9m
cm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgYXV0
byB0YXJnZXRBZ2VudCA9IG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50Piht
X2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAg
IG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2ZhMmI0ZDZkM2MxNjYxYTcwMDNiNzc4NTU4ZGE3
YzJmZjI0ZjA3ZS4uMGI0MGRiMjc3ODNmZGU5ZDI1NmZmNTI5MmVlYTdlYmZlMzE2Y2EwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zOTcsMTUgKzM5Nywx
NSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1v
dmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJl
ZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVu
aXF1ZVJlZjxBUEk6Okhpc3RvcnlDbGllbnQ+KCkpCi0gICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKLSAgICAsIG1fZm9y
bUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fdWlD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQotICAgICwgbV9maW5kQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQotICAgICwgbV9maW5kTWF0
Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCisg
ICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVu
dD4oKSkKKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkK
KyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQorICAgICwgbV9m
aW5kQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQorICAgICwgbV9maW5kTWF0
Y2hlc0NsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGll
bnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlmCi0gICAgLCBt
X25hdmlnYXRpb25TdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkK
KyAgICAsIG1fbmF2aWdhdGlvblN0YXRlKG1ha2VVbmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigp
KQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1
cmF0aW9uLT5wYWdlR3JvdXAoKSkKICAgICAsIG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZXMoKSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IFBhZwogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IG1fY29uZmlndXJh
dGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSB9CiAgICAgLCBtX3RyZWF0c1NI
QTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1fY29uZmlndXJhdGlvbi0+dHJlYXRzU0hBMVNpZ25l
ZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0g
ICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5D
bGllbnQ+KCkpCisgICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZ1bGxz
Y3JlZW5DbGllbnQ+KCkpCiAjZW5kaWYKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcigqdGhpcykKQEAgLTQzNSw5ICs0MzUsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBh
ZwogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRoaXMpCiAgICAgLCBtX2NvbmZpZ3Vy
YXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygp
KQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlciht
YWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUoc3RkOjptYWtl
X3VuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JEZWJ1
Z2dhYmxlKG1ha2VVbmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKICNlbmRpZgogICAg
ICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZX
ZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKIHsKQEAgLTQ3Nyw3ICs0NzcsNyBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxS
dW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2Vs
bEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CisgICAg
bV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2Vy
dmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxv
b3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10gewogICAgICAgICB0aGlzLT5k
aXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgpAQCAtNjAxLDcg
KzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQb2xpY3lDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmIHBvbGljeUNsCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQp
CiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJiB1aUNsaWVu
dCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7Ci0gICAgICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6VUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYyOCw3
ICs2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogewogICAgIGJvb2wgaGFzQ2xpZW50
ID0gaWNvbkxvYWRpbmdDbGllbnQuZ2V0KCk7CiAgICAgaWYgKCFpY29uTG9hZGluZ0NsaWVudCkK
LSAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29u
TG9hZGluZ0NsaWVudD4oKTsKKyAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1faWNvbkxv
YWRpbmdDbGllbnQgPSBXVEZNb3ZlKGljb25Mb2FkaW5nQ2xpZW50KTsKIApAQCAtNjUwLDcgKzY1
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1
bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VyCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rmlu
ZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB7
CiAgICAgaWYgKCFmaW5kQ2xpZW50KSB7Ci0gICAgICAgIG1fZmluZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
QEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZE1hdGNo
ZXNDbGllbnQ+JiYgZmluZE1hdGNoZXNDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kTWF0Y2hlc0Ns
aWVudCkgewotICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRpYWdub3N0aWNMb2cKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpD
b250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAgICBpZiAoIWNvbnRl
eHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNl
KgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgIG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudD4oKTsKICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5pbml0aWFsaXplKGNsaWVudCk7
CiB9CiAKQEAgLTc3Niw3ICs3NzYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIH0K
IAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1
cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3Mg
cGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBhdXRvIHN1c3Bl
bmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1f
cHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxF
bnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKKyAgICBhdXRvIHN1c3BlbmRlZFBh
Z2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5
UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAogICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQ
YWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2Vz
cyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0
KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDAp
OwogCkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVu
bmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIEFTU0VSVCgh
bV9mdWxsU2NyZWVuTWFuYWdlcik7Ci0gICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGllbnQoKS5m
dWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOworICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIg
PSBtYWtlVW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50
KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgQVNTRVJUKCFtX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIpOwpAQCAtODYwLDIyICs4NjAsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFj
aFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBBU1NFUlQo
IW1fcGF5bWVudENvb3JkaW5hdG9yKTsKLSAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX3Bh
eW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+
KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIEFTU0VSVCgh
bV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcik7Ci0gICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKKyAg
ICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIEFT
U0VSVCghbV9jcmVkZW50aWFsc01lc3Nlbmdlcik7Ci0gICAgbV9jcmVkZW50aWFsc01lc3Nlbmdl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0
aGlzKTsKKyAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJ
TEtJVCkKICAgICBBU1NFUlQoIW1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOwotICAgIG1fZWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250
cm9sbGVyPigqdGhpcyk7CisgICAgbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogfQogCkBAIC05NDMs
NyArOTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYXdpbmdBcmVhKHN0ZDo6dW5pcXVl
X3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmUKIAogI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBl
KCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlKSB7Ci0gICAgICAgIG1fc2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJv
eHkgPSBtYWtlVW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBPbiBpT1MsIG1haW4gZnJhbWUg
c2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBvZiB2aXNpYmxlIHJlY3QgdXBkYXRlcy4KICAgICAg
ICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LT5zZXRQcm9wYWdhdGVzTWFpbkZyYW1lU2Ny
b2xscyhmYWxzZSk7CkBAIC0xMDA2LDE3ICsxMDA2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
bG9zZSgpCiAgICAgbV9sb2FkZXJDbGllbnQgPSBudWxscHRyOwogICAgIG1fbmF2aWdhdGlvbkNs
aWVudCA9IG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpOwogICAgIG1fcG9s
aWN5Q2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOwotICAgIG1fdWlDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7Ci0gICAgbV9maW5kQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICBtX2ljb25M
b2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOworICAg
IG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAgIG1fdWlD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgbV9maW5kQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICBtX2RpYWdub3N0aWNM
b2dnaW5nQ2xpZW50ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBt
X2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xp
ZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4
dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAg
bV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGll
bnQ+KCk7CisgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3Jl
ZW5DbGllbnQ+KCk7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1v
dmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwpAQCAtMTIyNiw3ICsxMjI2LDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9KTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2
aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24oc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJh
c2VVUkwsIHVzZXJEYXRhKSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3Rh
dGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihtYWtlVW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURh
dGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEp
KTsKICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCks
IG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCwgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CkBAIC0yNDE1
LDcgKzI0MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBO
YXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2
ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IG1ha2VV
bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOwogICAgIGNvYWxlc2NlZFdoZWVs
RXZlbnQtPmFwcGVuZChldmVudCk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50
cy5hcHBlbmQoV1RGTW92ZShjb2FsZXNjZWRXaGVlbEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZl
bnQoZXZlbnQpOwpAQCAtMjQyMyw3ICsyNDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQoKQogewotICAgIGF1dG8gbmV4
dENvYWxlc2NlZEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxF
dmVudD4+KCk7CisgICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2
ZW50ID0gY29hbGVzY2VkV2hlZWxFdmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNj
ZWRFdmVudC5nZXQoKSk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBl
bmQoV1RGTW92ZShuZXh0Q29hbGVzY2VkRXZlbnQpKTsKICAgICBzZW5kV2hlZWxFdmVudChuZXh0
V2hlZWxFdmVudCk7CkBAIC0yOTg0LDcgKzI5ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29u
dGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
cwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9w
cm92aXNpb25hbFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5Pigq
dGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3VzcGVuZGVkUGFnZVByb3h5KSwg
bmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVk
aXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50KTsKKyAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9u
YWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5k
ZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmN1cnJl
bnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwogCiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0
aW9uLnRhcmdldEl0ZW0oKSkgewogICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAl
cCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRo
aXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTcwMiw3ICs1NzAyLDcgQEAgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpmdWxsU2NyZWVuTWFuYWdlcigp
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkgewot
ICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNj
cmVlbkNsaWVudD4oKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0
MzcsNyArNzQzNyw3IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBX
ZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgaWYgKG1fdXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKQogICAgICAgICByZXR1cm4gKm1fdXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogCi0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5PigqdGhpcyk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIgPSBtYWtlVW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjsKIH0KIApAQCAtODE0Myw3ICs4MTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9s
bFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3Nj
cm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkID0gZW5hYmxlZDsKIAogICAgIGlm
IChtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkICYmICFtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YSkKLSAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4o
ZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEp
KTsKKyAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBtYWtlVW5pcXVlPFJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKICAgICBlbHNlIGlmICghbV9z
Y3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCkKICAgICAgICAgbV9zY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEgPSBudWxscHRyOwogfQpAQCAtOTE5MCw3ICs5MTkwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKQogV2ViUGFnZVByb3h5OjpT
cGVlY2hTeW50aGVzaXNEYXRhJiBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc0RhdGEoKQog
ewogICAgIGlmICghbV9zcGVlY2hTeW50aGVzaXNEYXRhKQotICAgICAgICBtX3NwZWVjaFN5bnRo
ZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9OworICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hT
eW50aGVzaXNEYXRhIHsgbWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlz
KSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHJl
dHVybiAqbV9zcGVlY2hTeW50aGVzaXNEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA4YmRmOGNmODM4OGNkYzdiZmFjZmYyYjdlNjA1
ZDBhODE4ZGFhYzY0Li45NjJmM2JlZDJkODI1NjlhMDdkZDRlOWNkYWI4ZmNjNzIxMTlmN2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAgLTg0LDcg
Kzg0LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxlKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSBnZW5lcmF0ZUFkZFJlcXVlc3RJZGVudGlmaWVy
KCk7Ci0gICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6
Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CisgICAgbV9w
ZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5pcXVlPENhY2hl
ZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUoKTog
Q2hlY2tpbmcgaWYgcHJvY2VzcyAlaSBpcyByZXNwb25zaXZlIGJlZm9yZSBjYWNoaW5nIGl0Li4u
IiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgcHJvY2Vzcy0+aXNS
ZXNwb25zaXZlKFt0aGlzLCBwcm9jZXNzUG9vbCA9IG1ha2VSZWYocHJvY2Vzcy0+cHJvY2Vzc1Bv
b2woKSksIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGlzUmVzcG9uc2l2ZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGRiZTI1MzUyYjUyNTg4ZDhh
M2NjODY5NDg0NDQwZTc5ZTg1YTA5NmQuLmZlZGE4ZWU4ZThkMzBmMzk0ZmYxMDhmYmZhODA0MTVk
ODEwNzdhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTIzMywxNSArMjMzLDE1IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90CiBXZWJQcm9jZXNz
UG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5jb3B5KCkpCiAg
ICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3VwOjpjcmVhdGUoKSkKLSAgICAsIG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
Q2xpZW50PigpKQotICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpBdXRvbWF0aW9uQ2xpZW50PigpKQotICAgICwgbV9kb3dubG9hZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCi0gICAgLCBtX2hpc3RvcnlDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQotICAgICwg
bV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKKyAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQo
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQorICAgICwgbV9hdXRvbWF0
aW9uQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQorICAgICwgbV9k
b3dubG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCisgICAgLCBt
X2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
PigpKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9y
ZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICNpZiBQTEFURk9STShNQUMpCi0gICAgLCBt
X2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8SGln
aFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0aGlzKSkKLSAgICAsIG1fcGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1faGlnaFBlcmZvcm1hbmNlR3JhcGhp
Y3NVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2Ft
cGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKG1h
a2VVbmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQogI2VuZGlm
CiAgICAgLCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24t
PmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQogICAgICwgbV9zaG91bGRUYWtlVUlC
YWNrZ3JvdW5kQXNzZXJ0aW9uKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkVGFrZVVJQmFja2dyb3Vu
ZEFzc2VydGlvbigpKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omlu
aXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KQot
ICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAg
ICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KQEAgLTM3Nyw3
ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ29ubmVjdGlvbkNsaWVu
dChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Qgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudD4mJiBoaXN0b3J5Q2xpZW50KQogewogICAgIGlmICghaGlzdG9yeUNsaWVudCkKLSAg
ICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRl
eHRIaXN0b3J5Q2xpZW50PigpOworICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBtYWtlVW5pcXVl
PEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBt
X2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGllbnQpOwogfQpAQCAtMzg1LDcgKzM4
NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4mJiBkb3du
bG9hZENsaWVudCkKIHsKICAgICBpZiAoIWRvd25sb2FkQ2xpZW50KQotICAgICAgICBtX2Rvd25s
b2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpOworICAg
ICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50Pigp
OwogICAgIGVsc2UKICAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUoZG93bmxvYWRD
bGllbnQpOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERv
d25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGRvCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkF1dG9tYXRpb25DbGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKIHsKICAgICBpZiAoIWF1
dG9tYXRpb25DbGllbnQpCi0gICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAgICAgICBtX2F1dG9tYXRpb25DbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1vdmUoYXV0b21hdGlvbkNsaWVudCk7CiB9CkBA
IC00MDIsNyArNDAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkMKIHsKICNpZiBFTkFCTEUo
TEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIGlmICghY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50KQotICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CisgICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQp
OwogI2VuZGlmCkBAIC00OTIsNyArNDkyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAg
ICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogICAgIH0KIAotICAgIGF1dG8gbmV0d29y
a1Byb2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtQcm9jZXNzUHJveHk+KCp0aGlzKTsK
KyAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gbWFrZVVuaXF1ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5
PigqdGhpcyk7CiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwogCkBAIC0yNTEwLDcgKzI1MTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb2xs
ZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYQogICAg
ICAgICBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShtX3By
ZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJhbmRvbSgpKTsKIAogICAgIGF1
dG8mIHZhbHVlID0gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5lbnN1
cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogCiAgICAgKnZhbHVlID0gcHJld2FybUluZm9ybWF0aW9uOwpAQCAtMjU1NywxMiArMjU1
NywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnRha2VV
cGxvYWRBc3NlcnRpb24oKTsKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCghbV91aVByb2Nlc3NV
cGxvYWRBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAi
V2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsK
KyAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NB
c3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAgICAgfQogICAgIAogICAgIGF1dG8g
cmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5hZGQocHJvY2Vzc0lELCBudWxscHRyKTsK
ICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRl
ZE5ldHdvcmtpbmcpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFBy
b2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBs
b2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJRCkKQEAgLTI1OTksMTIgKzI1OTksMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUaGUgbnVtYmVy
IG9mIHByb2Nlc3NlcyBwbGF5aW5nIGF1ZGlibGUgbWVkaWEgaXMgbm93IG9uZS4gVGFraW5nIFVJ
IHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwogCiAgICAgICAgIEFTU0VSVCghbV91aVByb2Nlc3NNZWRp
YVBsYXliYWNrQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNz
ZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJv
Y2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3Jl
Z3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOworICAgICAgICBtX3VpUHJv
Y2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+
KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0
aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CiAg
ICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nlc1BsYXlpbmdBdWRpYmxlTWVkaWEu
YWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsK
LSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNz
ZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1lZGlhIFBsYXli
YWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRp
YVBsYXliYWNrKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1lZGlh
IFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29u
OjpNZWRpYVBsYXliYWNrKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9j
ZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDBiMjQyYTJiYjU4Njc0YzAzOGNmN2NmYTQ5MmRiN2Q5NWNhZTAwMWUuLmRhMzZmNmJhNThhNTMw
NTZlMDhjMmI2NmIyMzhlN2VlMzM4N2U3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIFdlYlByb2Nlc3NQcm94eTo6
V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFT
dG9yZSoKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQp
IHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKICAgICAsIG1fd2Vi
c2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
KHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQor
ICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2lzUHJld2FybWVk
KGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50
LmgKaW5kZXggZTlmY2YwMDE1Mzk5NWRjMWNjZTEzNWY4YzA5MmU5MmU2NmRiZmYzYS4uZDBiYmE1
NjRjMjc1ODJkNzgyNmU5ZjJjMjA2MjIzNzAyMjcyOTUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGll
bnQuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYnNpdGVEYXRhU3Rv
cmVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fp
cm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8v
QmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDE4Mjk0ZDM3ZmU0OWVlZDZkNjlkZmZmZjVmMmY2
NTA3MGI2NmNkOTAuLjdiZGQwM2QzYzhlYzhlMDY2MmU3N2QwMTgyNTBiNTA4OGMyNmNmYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWly
by5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFj
a2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogICAgICAgICBHZGtWaXN1
YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dlYlBhZ2VQcm94eS52aWV3V2lk
Z2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdka192aXN1YWxfZ2V0X3NjcmVl
bih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihz
aGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVOX1hESVNQTEFZKHNjcmVlbikpOwot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9Y
MTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KEdE
S19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAogICAgICAg
ICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdka192aXN1YWxfZ2V0X2RlcHRoKHZp
c3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgfQogI2VuZGlmCiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsPiht
X3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tp
bmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiB9
CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1v
dGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGI4NzRmYjBmYjJlMmE3ZTdlYzM2Y2M0NGUzOWQ2
MjQ5MDZhNGM1ZjEuLmY4ODhjMGY0NDZjNjI3MTI3YzgzNzViZTBkODFhNmEzZjJjMDlmNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3Rv
ckNsaWVudC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVu
dDo6Y29ubmVjdGlvbkNsb3NlZCgpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVj
dCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKQogewogICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29u
bmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhp
cywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CiAgICAg
fSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLT5zaG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCmluZGV4
IDM4MzEwMDA1ODg5NGRlYzBmYjdiNTFjYWEwOWEyMzlkNzdkMDhhOGIuLjg5MzI3OWZiY2Y1OGFl
YWYyYWZkNmIxYTQ3YzFjNzZjMjNkODJiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3Bw
CkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpj
aGVja1JlcXVpcmVtZW50cygpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0Uo
T1BFTkdMX0VTKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+
IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51
bGxwdHIsICBmYWxzZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVu
R0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVs
bHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25z
M0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3Bl
bkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJl
bnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGdsRXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVuc2lvbnMtPnN1cHBvcnRz
KCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAgICAgICAgICBnbEltYWdlVGFyZ2V0
VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJE
T0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMi
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRs
ZXIuY3BwCmluZGV4IGU5YWU2NTUyYTdhMmQ4NjJjNGJkNGVlMTBlZDJlYzM2ZTkyZjgzMWQuLmNh
NjUzZTVlYmE3MGM5NjE1NWZmNzY0ODhjM2VkZjQyODFmODU3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCkBAIC0yMDIsNyAr
MjAyLDcgQEAgU2VsZWN0aW9uRGF0YSogRHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVj
dGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY28KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJv
cHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0ID0gbV9kcm9wcGluZ0NvbnRleHRzLmFkZChj
b250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFkcm9wcGluZ0NvbnRl
eHQpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBtX3BhZ2Uudmlld1dpZGdldCgpOwot
ICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERyb3BwaW5nQ29udGV4
dD4oY29udGV4dCwgcG9zaXRpb24pOworICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBtYWtlVW5p
cXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOwogICAgICAgICBWZWN0b3I8
R2RrQXRvbT4gYWNjZXB0YWJsZVRhcmdldHMoUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCku
ZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGRyb3BwaW5nQ29udGV4dC0+Z2RrQ29udGV4dCkp
OwogICAgICAgICBkcm9wcGluZ0NvbnRleHQtPnBlbmRpbmdEYXRhUmVxdWVzdHMgPSBhY2NlcHRh
YmxlVGFyZ2V0cy5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0byYgdGFyZ2V0IDogYWNjZXB0YWJs
ZVRhcmdldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21w
b3NpdG9yLmNwcAppbmRleCBjYmUzODBiMjQwZDk2MDExMTcyN2I3NzBhODI1ZTA5ZTA1NDdjOWVk
Li5jM2Q5OTczYzcwZGMyMDg5YzY4M2Q2NWE5MTNkYTI5NGQ1ZmZlYmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTQyMCw5
ICs0MjAsOSBAQCBib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8
RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVu
c2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOwogI2Vsc2UKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNp
b24oKSA+PSAzMjApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGds
RXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENv
bnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICBpZiAoZ2xF
eHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+
c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKICAgICAgICAgZ2xJbWFnZVRh
cmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRV
UkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJE
T0VTIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tCmluZGV4IGMyMzQxMWMxZjA5YjAxMGE2NTI1NGIzNjlkZDMxNjlk
MzFmMGMwZTAuLjYxZTg1OTRkNWI3YzQxYWFmOWZjODJjNjUzOGRiOWFkNzE4NTYzNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXIubW0KQEAgLTU4LDcgKzU4LDcgQEAgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6On5FZGl0
YWJsZUltYWdlQ29udHJvbGxlcigpCiBFZGl0YWJsZUltYWdlJiBFZGl0YWJsZUltYWdlQ29udHJv
bGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRl
ZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZWRpdGFibGVJ
bWFnZXMuZW5zdXJlKGVtYmVkZGVkVmlld0lELCBbJl0gewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2U+
KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPiBpbWFnZSA9IG1ha2VV
bmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKICAgICAgICAgaW1hZ2UtPmRyYXdpbmdWaWV3ID0gbV93
ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5nVmlldyhlbWJlZGRlZFZpZXdJ
RCk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3
Lm1tCmluZGV4IGQwM2ExNzI2YWIzMzRhMDBlNjBmYmMwNTBiNTBlNWMzMzc1YWY3MjAuLjdmMGY5
NDg0ZmQ3Nzc0ZGQxMTU3YWUyODg1YzkwYTNiZjJlZTc5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5n
Vmlldy5tbQpAQCAtNjUsNyArNjUsNyBAQCAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogICAgIGlm
ICghc2VsZi5fY29udGVudFZpZXcud2luZG93IHx8IF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0
b3IoX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlv
bkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9y
KF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsKKyAgICBfYXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNl
bGYsIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3Io
X2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQp
LCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOwogICAgIAogICAg
IGlmIChfbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kICYmICFbc2VsZiBpc0JhY2tncm91
bmRdKQogICAgICAgICBbc2VsZiBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggNjgxMWU4
N2E0YTQyMTAwNWJkOTRhN2FjMjE2NTQzZWNjMDBhNzdmYy4uNDMxZmFjZDFlNjgzOTdlYzg1NzM5
MWFiMWNmODg4ZDM4NDE1N2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilw
cgogICAgIF9wYWdlLT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1ZSk7CiAKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCi0gICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7CisgICAgX3BhZ2Ut
PnNldEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+
KF93ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRp
c3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMjM5LDcgKzIzOSw3IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmCiAKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFn
ZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwg
d2ViVmlldyk7CisgICAgX3BhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUNsaWVu
dEltcGw+KHNlbGYsIHdlYlZpZXcpOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIHJl
dHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bv
b2wgY29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pXTsKQEAgLTU0MSw3ICs1NDEs
NyBAQCAtICh2b2lkKV93ZWJWaWV3RGVzdHJveWVkCiAKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJL
aXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5OihXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eSYpcHJvY2VzcwogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLCBwcm9jZXNzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQppbmRleCA5ZTE2Y2NiZmQ2YjIwMWNiNTlmNzM4N2FiYWZmODE4YjU1NjA2OTcy
Li5kM2VkYTM2OWMwMzcxYzFmMmMxM2ExZDA1OTkxNWRiNmRkNWU5MmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTgwNiw3ICs4MDYsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICAgICAKICAg
ICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50
IHNldERlbGVnYXRlOnNlbGZdOwotICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNl
bGYpOworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJL
aXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOwogICAgIF9pc0V4cGVjdGlu
Z0Zhc3RTaW5nbGVUYXBDb21taXQgPSBOTzsKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9
IE5POwogICAgIF9pc0RvdWJsZVRhcFBlbmRpbmcgPSBOTzsKQEAgLTgyMSw3ICs4MjEsNyBAQCAt
ICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RS
SVZFTl9URVhUX0NIRUNLSU5HKQotICAgIF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAg
X3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5n
Q29udHJvbGxlcj4oKl9wYWdlKTsKICNlbmRpZgogCiAgICAgX2hhc1NldFVwSW50ZXJhY3Rpb25z
ID0gWUVTOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgLSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRl
ckZvcldlYlZpZXcKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYgKCFfaW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXIpCi0gICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CisgICAgICAg
IF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdV
cGRhdGVEZWZlcnJlcj4oc2VsZik7CiAKICAgICBCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVy
OwogICAgIHsKQEAgLTUzMTEsNyArNTMxMSw3IEBAIC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czoo
Y29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1CiAg
ICAgICAgIC8vIERlZmVyIHZpZXcgdXBkYXRlcyB1bnRpbCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rp
b24gdG8gYXZvaWQgYSBub3RpY2VhYmxlIGZsYXNoIHdoZW4gc3dpdGNoaW5nIGZvY3VzCiAgICAg
ICAgIC8vIGJldHdlZW4gZWxlbWVudHMgdGhhdCByZXF1aXJlIHRoZSBrZXlib2FyZC4KICAgICAg
ICAgaWYgKCFpbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAgICAgICAgICAgIGlucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURl
ZmVycmVyPihzZWxmKTsKKyAgICAgICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKICAgICAgICAg
W3NlbGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGIwMjgyNDg5MjAwM2EwNDk4OTI5ZTcw
NmE1OTA0NTlhNGY4NzFhY2QuLmMwOGY5Nzg2ZjBlYWFiNGE5NzViYjU2NDhjNzQyN2M1NjM2ZGJl
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtOTEyLDcgKzkxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMo
Y29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24sCiAgICAgQVBJOjpP
YmplY3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwogICAgIGlmIChtX2VkaXRvclN0YXRlLmlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRv
IGVsaW1pbmF0ZSBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIGFsdG9nZXRoZXIs
IGluIGZhdm9yIG9mIG9ubHkgZGVmZXJyaW5nIGFjdGlvbnMgdGhhdCBhcmUgZGVwZW5kZW50IG9u
IHBvc3QtbGF5b3V0IGVkaXRvciBzdGF0ZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgbV9kZWZlcnJl
ZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudERpZEZv
Y3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNl
cklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1
c2VyRGF0YU9iamVjdCB9KTsKKyAgICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3Vt
ZW50cyA9IG1ha2VVbmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9j
dXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91
c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTI1OCw3ICsxMjU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQo
UmVmPFcKIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBX
ZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29yZGluYXRvclByb3h5LCBQS1BheW1l
bnRSZXF1ZXN0ICpwYXltZW50UmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXltZW50Q29vcmRpbmF0b3JQ
cm94eSwgcGF5bWVudFJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50
UmVxdWVzdCk7CiB9CiAKIFVJVmlld0NvbnRyb2xsZXIgKldlYlBhZ2VQcm94eTo6cGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KaW5kZXgg
OGIxMjNiMGE5N2MwMzBlOTQ1MGY1ZWQ0ZjhjMTc0YjMyMWJiNDA3Yi4uOGZmOGEwYmY0NzViM2Y3
YjIzNjIyOWY0MTJlM2YzMjY2Y2Y5NTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0Nv
bnRyb2xsZXIubW0KQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIFdLRnVs
bFNjcmVlblZpZXdDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xs
ZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggODM0MzQ4ODljZGNmMjQ5
YzFjMjc5MWJkMDdiZmZmYTIwMWNmNDg3ZC4uYTkxMjk1M2VjOTFjMjczMzYyNjc2M2RhZjlkYTI2
YjI0OTMzYzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xp
ZW50SW1wbChOU1ZpZXcqIHZpZXcsIFdLV2ViVmlldyAqd2ViVmlldykKICAgICA6IFBhZ2VDbGll
bnRJbXBsQ29jb2Eod2ViVmlldykKICAgICAsIG1fdmlldyh2aWV3KQogI2lmIFVTRShESUNUQVRJ
T05fQUxURVJOQVRJVkVTKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX2Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlcj4oKSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCA0M2U5
Zjk2N2JjODk3N2ZiZmY4Yzg2NjhhNWNjYTFmMzgyNGMwODA5Li4zNGE2OWJiZTBiYjBkMTc2YjU1
MWJhZjJkN2EzNWMxZmFhYzAzN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtNTQsNiAr
NTQsNyBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgRGVmYXVsdFdhdGNoZG9nVGltZXJJ
bnRlcnZhbCA9IDE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29yZTo6VmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgKnBh
cmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCkBAIC0xNTAsNyArMTUxLDcgQEAgLSAoaWQp
aW5pdFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luZG93IHdlYlZpZXc6KE5TVmlldyAqKXdlYlZp
ZXcgcGFnZTooV2ViS2l0OjoKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgX3BhZ2UgPSAm
cGFnZTsKIAotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xp
ZW50PigpOworICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Pigp
OwogICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldFBhcmVudChzZWxmKTsKIAogICAgIFtz
ZWxmIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IDY2MDMxN2MyZmJjNzli
NjhiYjViNzM0NzZhNThiZWZlYTA5YjA2ZDMuLjY5ZDlkOWUyZDQ0NDg0M2QxNTI3MGY1MTE3Zjc3
NGNkMjM3ZDVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4
dEZpbmRlckNsaWVudC5tbQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBUZXh0RmluZGVyRmluZENsaWVudCA6IHB1
YmxpYyBBUEk6OkZpbmRNYXRjaGVzQ2xpZW50LCBwdWJsaWMgQVBJOjpGaW5kQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0Rmlu
ZGVyRmluZENsaWVudChXS1RleHRGaW5kZXJDbGllbnQgKnRleHRGaW5kZXJDbGllbnQpCiAgICAg
ICAgIDogbV90ZXh0RmluZGVyQ2xpZW50KHRleHRGaW5kZXJDbGllbnQpCkBAIC0xNjgsOCArMTY5
LDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViS2l0OjpXZWJQYWdlUHJveHkm
KXBhZ2UgdmlldzooTlNWaWV3ICopdmlldyB1c2UKICAgICBfdmlldyA9IHZpZXc7CiAgICAgX3Vz
ZVBsYXRmb3JtRmluZFVJID0gdXNlUGxhdGZvcm1GaW5kVUk7CiAgICAgCi0gICAgX3BhZ2UtPnNl
dEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmlu
ZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXRG
aW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+
KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4
dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmNwcAppbmRleCBlZDBkNWZmZTk1ODlmOTVlNDRhMDdmMjIxOGVkODJjMDBmMDE3ZDdlLi5l
NzRhZGFjMWU2NWViZTVjOTliMzFkOTA2N2FlNjExNThmMzk4N2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpkaWRDbG9z
ZShDb25uZWN0aW9uSUQpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdChDb25u
ZWN0aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiB0
eXBlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUo
c3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9u
SUQsIHRhcmdldElELCAmdHlwZV0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMs
IGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwogICAgIH0pOwogCiAgICAgaWYgKCFhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
c29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRl
eCAxYjZkOWNjNTRmYzYwYjUzZTQ0MDI3MWYyMzA4ZTdjMGY0N2M4NzRjLi5hODgzM2Y2MjQ4N2Y5
YTY3MjEwMzk5ZWM5ZjhmZjVlMDkyNzEyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94eSwKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3Vy
ZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RV
UkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlz
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1
ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAq
dGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgLy8gU2V0dXAgdGFy
Z2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+
KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZSht
YWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6
VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91
cCgpLnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciho
YW5kbGVyLmdldCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbEJ1aWxkZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcApp
bmRleCBiNjdkNzNhNGRjNDg4YjMxZmRjOWE0NzIxOTY5MTQwNDI3NDQ4ODI1Li41ZDUwYWU1NTQ2
ODBhNmU5ZTNkYTJjZTg0YmU1NjRkNWMzMjM3ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3Rv
cmVCYWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4o
bV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNr
aW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3Ip
OwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRl
clRhcmdldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGNkNmYwOGZmMThiZDU1YzE1NTQ0NjNkNGE0
MGI1MWU0NWIyZWFiOWYuLjAzMDdjNGY5ZjE0M2Y4NmRjNjIwOGI0ODRiZThkYjQyMmRjMGY0MTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV2ViVmlldyYg
dmlldykKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1
ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVh
UHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2Uo
KSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJl
Z2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCBjZDUzNTJk
ZjdhYTA0ZTY5ZDliMGY5OGVkMDAxZTVjNjMzMmY3NTkzLi42N2U1ZTRiMjdhM2FlODBhYjY2OGY2
YzM0MTdjMGYwY2U2YjdmMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBXZWJWaWV3OjpyZWdpc3RlcldlYlZpZXdXaW5k
b3dDbGFzcygpCiB9CiAKIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBjb25zdCBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBhcmVudFdpbmRvdykKLSAgICA6
IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisg
ICAgOiBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQogewog
ICAgIHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAppbmRl
eCBiNmQ0YTA0MjBkNWE1ZGJkNjQ2MDgzYWY2Nzg4MDUxYmY2Y2M0N2UwLi5mMmQ2MmVhOTc5MGY4
MDdhNjViNWQzZTU4ZjgwYjk3ZjA2YWRiZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBAIC01MSw2
ICs1MSw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHBy
aXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwogICAg
IGV4cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvcihXZWJQYWdlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApp
bmRleCA0ZjgxMGNjZjM4ZWNmYTJjOTllY2JkYTg5ZDA0MWNlYjhkMjMzM2I4Li5hYWIzNDU3Y2Vk
NjRhNWE5MTBjZGM1NjJhY2MwMTE1MDBkM2M2Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFkcyhjb25z
dCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGEKICAgICAgICAgaWYgKGdhbWVwYWREYXRh
c1tpXS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fZ2FtZXBh
ZHNbaV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7Cisg
ICAgICAgIG1fZ2FtZXBhZHNbaV0gPSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRh
c1tpXSk7CiAgICAgICAgIG1fcmF3R2FtZXBhZHNbaV0gPSBtX2dhbWVwYWRzW2ldLmdldCgpOwog
ICAgIH0KIH0KQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVw
YWRDb25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmIGdhbWVwYWREYXRhKQogCiAgICAgQVNTRVJU
KCFtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldKTsKIAotICAgIG1fZ2FtZXBhZHNbZ2Ft
ZXBhZERhdGEuaW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWRE
YXRhKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gbWFrZVVuaXF1ZTxX
ZWJHYW1lcGFkPihnYW1lcGFkRGF0YSk7CiAgICAgbV9yYXdHYW1lcGFkc1tnYW1lcGFkRGF0YS5p
bmRleCgpXSA9IG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0uZ2V0KCk7CiAKICAgICBm
b3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZmQ2NTIzZDZmYTdkNzU5M2QxYjhkM2IzMmJh
YjQ2M2E5NjhlYWEyOC4uNjMzZjIyZmRmZTQyNzJiMzlkZTI1ZWEwZTRhMGEwNGQ3Y2RlNmNjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAg
LTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFz
cyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXgg
MGJiNGYyYjQyMWEzZWMyMjg3NTRlNjM4MjlkNDFhYmJlMmUwNmY4ZC4uYTZjMjg3MTZhYjE2Nzhh
ZmRkNTc0YzlkZjlmZTI4Njg2MzQ2MzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAt
NDQsNiArNDQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3Mg
V2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGUuY3BwCmluZGV4IGYzZWM3MjA4N2NhMjg4NjdmNTRkOWRmMGY1MGQ4NzEwMmUwMTZm
YTIuLmNhODVkNTg1ZGNmMWI3NmVmMGI4ZDExZDU5YWQ2NjA0YWMzZjE4NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZUdldFR5cGVJRCgp
CiAKIHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRs
ZUNsaWVudEJhc2UgKndrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZikt
PnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+
KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xpZW50KG1h
a2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAog
dm9pZCBXS0J1bmRsZVNldFNlcnZpY2VXb3JrZXJQcm94eUNyZWF0aW9uQ2FsbGJhY2soV0tCdW5k
bGVSZWYgYnVuZGxlUmVmLCB2b2lkICgqY2FsbGJhY2spKHVpbnQ2NF90KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5jcHAKaW5kZXggZjEyYTViYTc3NGQ2Y2M2OGQwODRmMWY2MDIxY2ViZjM4MWFh
M2E1OC4uZGMwNzU4YWQ3NWFmMzYxZGZiZTgxNmViMTEzZjQxYzdmMDlkODFjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQ
YWdlR2V0VHlwZUlEKCkKIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSog
d2tDbGllbnQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2ViS2l0Ojp0b0lt
cGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0Ns
aWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNv
bnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VS
ZWYpOwogICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBAIC04NiwyMiArODYsMjIgQEAgdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVQYWdlQ29udGUKIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQo
V0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudEJhc2UqIHdr
Q2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudCh3a0NsaWVudCA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50ID8gbWFrZVVu
aXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudD4oKndrQ2xpZW50KSA6
IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpKTsKIH0KIAog
dm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0lt
cGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwog
fQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAg
IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UmVz
b3VyY2VMb2FkQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdl
UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQp
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJj
ZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNl
TG9hZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJh
c2UqIHdrQ2xpZW50KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9s
aWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGll
CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYs
IFdLQnVuZGxlUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0lt
cGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktp
dDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1ha2VVbmlxdWU8
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXggZWJkM2VmNWYyOTMwOGMxNDE5M2Ex
ODFiN2UxZTRhNDI1ZmQyMWRkMi4uNjlmN2FmMjJiNTY3NTA0ZDRmMzFmMGQ3YTcwYjg3NGUwOWZh
NTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcApAQCAtNTQs
NiArNTQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlT3Zl
cmxheUFjY2Vzc2liaWxpdHlDbGllbnRCYXNlPiB7CiB9CiAKIGNsYXNzIFBhZ2VPdmVybGF5Q2xp
ZW50SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlPiwgcHVi
bGljIFdlYktpdDo6V2ViUGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGFnZU92ZXJsYXlDbGllbnRJbXBsKFdL
QnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAtMjE2LDcgKzIx
Nyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZU92ZXJsYXlHZXRUeXBlSUQoKQogCiBXS0J1bmRs
ZVBhZ2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQYWdlT3Zl
cmxheUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAgYXV0byBj
bGllbnRJbXBsID0gbWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsK
ICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6V2ViUGFnZU92ZXJsYXk6OmNyZWF0ZShXVEZNb3Zl
KGNsaWVudEltcGwpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMv
V0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCmluZGV4IGFjYzM1YTIxYjU5ZjFhYTMxZTMzMDUxYTY2
YmMxMzA1OTk2Njk5ZDMuLmQ2ZmZkMWNjYzA0YTkzYTdhMDlkMmIzNjU1OWE4ZjBjMDk1MGZmMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCkBA
IC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIGNsYXNzIFBhZ2VCYW5uZXJDbGllbnRJbXBsIDogQVBJOjpDbGllbnQ8V0tCdW5kbGVQ
YWdlQmFubmVyQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlQmFubmVyOjpDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VCYW5uZXJD
bGllbnRJbXBsKFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJhc2UqIGNsaWVudCkKICAgICB7CkBA
IC0xMDMsNyArMTA0LDcgQEAgV0tCdW5kbGVQYWdlQmFubmVyUmVmIFdLQnVuZGxlUGFnZUJhbm5l
ckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKENBTGF5ZXIgKmxheWVyLAogICAgIGlmICh3a0NsaWVu
dCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIGNs
aWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+
KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFn
ZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6
UGFnZUJhbm5lcjo6Y3JlYXRlKGxheWVyLCBoZWlnaHQsIGNsaWVudEltcGwucmVsZWFzZSgpKS5s
ZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUu
Y3BwCmluZGV4IDQyMTAxZjhjODJjYjJhNTQ4M2JhZTRkYzg0ODA3YjQxNjVhOTJkODYuLjA5NWYz
NmZmYzYzZjk1YjQ3NTU4MWY1YjhlZDVlOTNmNDI3MzhiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBET01P
YmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9i
c2VydmVyKFdlYkNvCiB7CiAgICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpLmFkZCgmZnJhbWUs
IG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyPihmcmFtZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUpOwogICAgIHJldHVybiAqcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNzIERPTU9iamVj
dENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlCiAgICAgICAgIGlmIChkb21XaW5kb3cgJiYgKCFtX2RvbVdpbmRvd09ic2VydmVy
IHx8IG1fZG9tV2luZG93T2JzZXJ2ZXItPndpbmRvdygpICE9IGRvbVdpbmRvdykpIHsKICAgICAg
ICAgICAgIC8vIE5ldyBET01XaW5kb3csIGNsZWFyIHRoZSBjYWNoZSBhbmQgY3JlYXRlIGEgbmV3
IERPTVdpbmRvd09ic2VydmVyLgogICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgICAgIG1f
ZG9tV2luZG93T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd09ic2VydmVyPigq
ZG9tV2luZG93LCAqdGhpcyk7CisgICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0gbWFr
ZVVuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOwogICAgICAgICB9
CiAKICAgICAgICAgbV9vYmplY3RzLmFwcGVuZCgmZGF0YSk7CkBAIC0yMTUsNyArMjE1LDcgQEAg
dm9pZCBET01PYmplY3RDYWNoZTo6cHV0KHZvaWQqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBl
cikKIHsKICAgICBET01PYmplY3RNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RzKCku
YWRkKG9iamVjdEhhbmRsZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQot
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmpl
Y3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVy
KSk7CiB9CiAKIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RI
YW5kbGUsIHZvaWQqIHdyYXBwZXIpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBET01PYmplY3RD
YWNoZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikKICAg
ICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdf
T0JKRUNUKHdyYXBwZXIpKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKICAgICBpZiAoV2ViQ29y
ZTo6RnJhbWUqIGZyYW1lID0gb2JqZWN0SGFuZGxlLT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAg
ICAgIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKCpmcmFtZSkuYWRkT2Jq
ZWN0Q2FjaGVEYXRhKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRl
bnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCA0Y2NlYzYyZWYwZTEx
MzFmYTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmLi40ZDc0MmU0MDliYmZjN2NmYWI0MDhjZDY1Mzhh
ZWY5ZjIyOGZkNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lv
bk1hbmFnZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJLaXRFeHRlbnNpb25NYW5h
Z2VyOjppbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIEFQSTo6T2JqZWN0KiB1c2UK
ICAgICBzY2FuTW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBtb2R1bGVQYXRocyk7CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhz
W2ldKTsKKyAgICAgICAgYXV0byBtb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0
aHNbaV0pOwogICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGlmIChpbml0aWFsaXplV2ViRXh0ZW5zaW9uKG1vZHVsZS5nZXQoKSwgdXNl
ckRhdGEuZ2V0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAppbmRl
eCAwNDA3MmViODY0ZGJlMzVmODBkZmM4NmFkMGU4ODNjM2U5OWNlNDRmLi5jY2I1MWUwZDk2NDBj
NjZmODU5NmU0NzQxNzE0MDU4ZTkxMzk3Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViRWRpdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRXZWJFZGl0b3IqIHdlYmtpdFdl
YkVkaXRvckNyZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIFdlYktpdFdlYkVk
aXRvciogZWRpdG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9FRElUT1IsIG51bGxwdHIpKTsKICAgICBlZGl0b3ItPnByaXYtPndlYlBhZ2UgPSB3ZWJQ
YWdlOwotICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikp
OworICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudChtYWtlVW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOwogICAgIHJl
dHVybiBlZGl0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lv
bi5jcHAKaW5kZXggNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5NjEyOTlhNzAxMDgxNzUwMS4uZTMw
NmUzZmVmMjYzMWQ1NDY2NTU3MTE2ZTVlNDg3ZDM3MWM3ODU3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBX
ZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkluamVj
dGVkQnVuZGxlOjpDbGllbgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25D
cmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24q
IGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfRVhURU5TSU9OLCBOVUxMKSk7Ci0gICAgYnVuZGxlLT5zZXRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7Cisg
ICAgYnVuZGxlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRs
ZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGNmYzUwMzFlZDZlNGEyOTU0ZmUwMmEw
M2RhODdhMTYxY2QyZDMwODIuLjZkYjI5OWY0NzExMmExNDQ1ZjdlNjgzMzQ3MmQzZGI4ZDdkN2I5
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBzdGF0aWMgV2ViS2l0RnJhbWUqIHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUoV2ViRnJhbWUq
IHdlYkZyYW1lKQogICAgIGlmICh3cmFwcGVyUHRyKQogICAgICAgICByZXR1cm4gd3JhcHBlclB0
ci0+d2Via2l0RnJhbWUoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBw
ZXI+IHdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEZyYW1lV3JhcHBlcj4oKndlYkZy
YW1lKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0g
bWFrZVVuaXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CiAgICAgd3JhcHBlclB0
ciA9IHdyYXBwZXIuZ2V0KCk7CiAgICAgd2ViRnJhbWVNYXAoKS5zZXQod2ViRnJhbWUsIFdURk1v
dmUod3JhcHBlcikpOwogICAgIHJldHVybiB3cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgpOwpAQCAt
Njc4LDExICs2NzgsMTEgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJQ
YWdlKiB3ZWJQYWdlKQogICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSBXRUJLSVRfV0VCX1BBR0Uo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QQUdFLCBOVUxMKSk7CiAgICAgcGFnZS0+cHJp
di0+d2ViUGFnZSA9IHdlYlBhZ2U7CiAKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJl
c291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+
KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+
c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VD
b250ZXh0TWVudUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxl
VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQ
YWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRm9y
bUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VM
b2FkQ2xpZW50KG1ha2VVbmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFnZSkpOworICAg
IHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFBh
Z2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUNv
bnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50PihwYWdlKSk7
CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFBhZ2VV
SUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVu
dChtYWtlVW5pcXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7CiAKICAgICByZXR1cm4gcGFnZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KaW5kZXggODEwNTVjZTdm
ZGViYTMxOGRhYjA2ODI2MzRjNmJkODRhMzdmYWU4Yy4uMDg0ZjMwMDVkNjEwM2Q0ZTI1MDMzYzI1
NmM3MGMwZTA2NDA0MWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3Iu
bW0KQEAgLTQ1LDcgKzQ1LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooV0tET01SYW5nZSAqKXJh
bmdlCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRJdGVy
YXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRv
V2ViQ29yZVJhbmdlKHJhbmdlKSk7CisgICAgX3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0
ODgwMGJiMzE3OTA2NWU0ZTczMjkzMDY5MDU0NjgwZTQzNGFmMWZmLi40MjAyMzk2YWJhZmFmMzBk
NzE4OWFlYjY4NTA5ZWEyNzE3MWI5NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tCkBAIC01NDQsNyArNTQ0LDcgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4pZm9ybURlbGVnYXQKICAgICB9Owog
CiAgICAgaWYgKGZvcm1EZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxl
Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAg
X3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+
KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1D
bGllbnQobnVsbHB0cik7CiB9CkBAIC02NzMsNyArNjczLDcgQEAgLSAodm9pZClfc2V0RWRpdGlu
Z0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5n
RGVsZWcKICAgICB9OwogCiAgICAgaWYgKGVkaXRpbmdEZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2Ut
PnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50Pihz
ZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtl
VW5pcXVlPENsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5k
ZXggMjBjZTU1OTExZDcwNjUxYzMzNWE3MGFjZjI0ZTViZGZjMjFiZDYzMS4uOTk3OWQ2Mzg0ZGZm
NWM5ODA1OTFmMjkwODNjOTM3Mjk2MzQ0YTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3Jl
YXRlKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIEluamVjdGVkQnVuZGxlOjpJ
bmplY3RlZEJ1bmRsZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogICAgIDogbV9wYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgICwg
bV9wbGF0Zm9ybUJ1bmRsZSgwKQotICAgICwgbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCisgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKSkKIHsKIH0KIApAQCAtMTE0LDcgKzExNCw3IEBA
IEluamVjdGVkQnVuZGxlOjp+SW5qZWN0ZWRCdW5kbGUoKQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+JiYg
Y2xpZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOworICAgICAgICBtX2NsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOwogICAgIGVsc2UK
ICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmgKaW5kZXggMGNhNWVhNmQyYWJlNTcyMTU0ZDIxYmVkMGNjOWEwNTNlN2Q2NmMx
OC4uYmZiM2QwNDUxNDM3MzZjMzFkZjk4OGFiMWIwMGRlNDJiODUzMDg5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIgOiBw
dWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIpOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIoV2ViUHJvY2Vz
cyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFt
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCmlu
ZGV4IGQ3YzVjNjgzNDRiNzI3MzhkOTQ5N2RmMDEyY2EzNzZiYjg0MTg4ZGEuLmIwYmQ1MzRjZTE5
ZDczODYxZDgxNzZhODIwNWNkY2U2MTk1ZmQwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyPiwgcHJpdmF0ZSBXZWJDb3JlOjpNZWRpYUNhblN0YXJ0TGlzdGVuZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAgICAgflVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzMzNTI3NjU4NzFk
ODI1NWEyM2RiN2I1NWU2ZDQ0ZWU3MzM5MjJkNy4uMmU1N2FmMjQ4M2JkMzZiM2RkODVlNGVjMThk
ZGUxMGY0NDM2ZTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMiwzOCArMTMyLDExIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZE1lc3NhZ2UoVCYmIG1lc3Nh
Z2UsIHNpemVfdCBieXRlCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsK
LSAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJbkJ5dGVzKCk7Ci0gICAgaWYgKCFp
bmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZh
aWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5k
TWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBtZXNz
YWdlIH0sIGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1lc3NhZ2UpKTsKLQotICAg
IHJldHVybiBTZW5kU3VjY2VzczsKLX0KLQotV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJpbmFyeURhdGEs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCi17Ci0gICAgaWYgKCFp
bmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZh
aWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5k
TWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpE
YXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0
YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNl
Ci0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7Ci0KLSAgICBy
ZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KIGNsYXNzIEJsb2JMb2FkZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQmxvYkxvYWRlcihXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1l
bnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKLSAgICAgICAgOiBtX2xvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0Fy
cmF5QnVmZmVyLCB0aGlzKSkKKyAgICAgICAgOiBtX2xvYWRlcihtYWtlVW5pcXVlPFdlYkNvcmU6
OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5
QnVmZmVyLCB0aGlzKSkKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgIHsKICAgICAgICAgbV9sb2FkZXItPnN0YXJ0KGRvY3VtZW50
LCBibG9iKTsKQEAgLTIyNiw3ICsxOTksNyBAQCBjbGFzcyBQZW5kaW5nTWVzc2FnZSB7CiAKICAg
ICBQZW5kaW5nTWVzc2FnZShXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6OkJs
b2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ICAgICAgICAgOiBtX3R5cGUoVHlwZTo6QmxvYikKLSAgICAgICAgLCBtX2Jsb2JMb2FkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpKQorICAgICAgICAsIG1fYmxvYkxvYWRlcihtYWtlVW5pcXVlPEJsb2JMb2Fk
ZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpCiAgICAgewog
ICAgIH0KIApAQCAtMjQ0LDEzICsyMTcsNDAgQEAgY2xhc3MgUGVuZGluZ01lc3NhZ2UgewogICAg
IHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiB9OwogCitXZWJTb2Nr
ZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQoreworICAgIGF1dG8gYnl0ZUxlbmd0aCA9IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMo
KTsKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAgICAg
IHJldHVybiBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkp
CisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2Vu
ZFN0cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBtX3Bl
bmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2FnZSkp
OworCisgICAgcmV0dXJuIFNlbmRTdWNjZXNzOworfQorCitXZWJTb2NrZXRDaGFubmVsOjpTZW5k
UmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmlu
YXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK3sKKyAg
ICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAgICAgIHJldHVy
biBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCisgICAg
ICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEg
eyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5
RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwor
ICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVu
ZGluZ01lc3NhZ2U+KGJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKKworICAg
IHJldHVybiBTZW5kU3VjY2VzczsKK30KKwogV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKFdlYkNvcmU6OkJsb2ImIGJsb2IpCiB7CiAgICAgLy8gQXZv
aWQgdGhlIEJsb2IgcXVldWUgYW5kIGxvYWRpbmcgZm9yIGVtcHR5IGJsb2JzLgogICAgIGlmICgh
YmxvYi5zaXplKCkpCiAgICAgICAgIHJldHVybiBzZW5kKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0
ZShibG9iLnNpemUoKSwgMSksIDAsIDApOwogCi0gICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2Is
IFt0aGlzXSB7CisgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGlu
Z01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0aGlzXSB7CiAgICAgICAgIHdoaWxl
ICghbV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvJiBtZXNz
YWdlID0gbV9wZW5kaW5nTWVzc2FnZXMuZmlyc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHAKaW5kZXggMDk0YWM3MWY3ZTVlZmZhYjc0ODVmY2VmY2FlNTQ4OTNkYjNlMDUwNi4uN2VjMzdj
ZGYwOWQzOTBhMzgyN2E2OWNhM2Y2MGE2YzMwNTZkYTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIGNsYXNzIEFzeW5jUmVzb2x2ZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0
Yzo6QXN5bmNSZXNvbHZlckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHJpdmF0ZToKICAgICBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UqIENyZWF0ZSgpIGZpbmFs
CiAgICAgewpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1
YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKIAogcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVy
LCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rp
b24ob2JzZXJ2ZXIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5t
b25pdG9yKCksICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzdGQ6Om1h
a2VfdW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFj
dG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFj
dG9yeT4oKSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhv
c3RDb25uZWN0aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCmluZGV4IDVkNjM4M2Y2YjUwNjUz
YjVjNjcwNzA3MDVjNmMxMDI4NzBmYTAyMzEuLjM5OTA2OTlkMDc3OGZlYjE3YjBjYThlNjA3ODE0
MTA4YTVjMDBhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTGliV2ViUlRDU29ja2V0RmFjdG9yeTsKIAogY2xhc3Mg
TGliV2ViUlRDUmVzb2x2ZXIgZmluYWwgOiBwdWJsaWMgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJm
YWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJS
VENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyKSA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCmluZGV4IGY4YjdlZDIy
OWM0ZjZmMmRjMDM2MTMyY2M5NmU0MTFlZWNhNTcwMmUuLjIzNTgyZGU3NTliOTg0NWViN2ZlNDA2
NDQzNjVlZmJjMTliNzVkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGlubGluZSBydGM6OlNvY2tldEFkZHJlc3MgcHJlcGFy
ZVNvY2tldEFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJgogCiBydGM6OkFzeW5jUGFj
a2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2NrZXQo
Y29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50
MTZfdCBtYXhQb3J0LCBpbnQgb3B0aW9ucykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZp
ZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyVENQLCBhZGRyZXNzLCBydGM6OlNvY2tl
dEFkZHJlc3MoKSk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tl
dD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5
cGU6OlNlcnZlclRDUCwgYWRkcmVzcywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOwogICAgIG1fc29j
a2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKICAgICBjYWxs
T25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0gc29ja2V0LT5pZGVudGlmaWVyKCksIGFkZHJlc3Mg
PSBwcmVwYXJlU29ja2V0QWRkcmVzcyhhZGRyZXNzLCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25u
ZWN0aW9ucyksIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnNdKCkgewpAQCAtNjYsNyArNjYsNyBA
QCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVT
ZXJ2ZXJUY3BTb2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRy
ZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KQogewotICAg
IGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCAr
K3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpVRFAsIGFk
ZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExp
YldlYlJUQ1NvY2tldDo6VHlwZTo6VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7
CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsK
IAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIo
KSwgYWRkcmVzcyA9IHByZXBhcmVTb2NrZXRBZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxv
Y2FsaG9zdENvbm5lY3Rpb25zKSwgbWluUG9ydCwgbWF4UG9ydF0oKSB7CkBAIC04MCw3ICs4MCw3
IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0
ZVVkcFNvY2tldChjb25zdCBydGM6OlNvY2tlCiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExp
YldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUNsaWVudFRjcFNvY2tldChjb25zdCBydGM6OlNv
Y2tldEFkZHJlc3MmIGxvY2FsQWRkcmVzcywgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1v
dGVBZGRyZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIHVzZXJBZ2VudCwg
aW50IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENT
b2NrZXQ6OlR5cGU6OkNsaWVudFRDUCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKKyAg
ICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3Vu
aXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6Q2xpZW50VENQLCBs
b2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MpOwogICAgIHNvY2tldC0+c2V0U3RhdGUoTGliV2Vi
UlRDU29ja2V0OjpTVEFURV9DT05ORUNUSU5HKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+
aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCkBAIC05Niw3ICs5Niw3IEBAIHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUNsaWVudFRjcFNv
Y2tldChjb25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZU5ld0Nvbm5lY3Rpb25Tb2NrZXQoTGliV2ViUlRDU29ja2V0JiBzZXJ2
ZXJTb2NrZXQsIHVpbnQ2NF90IG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyLCBjb25zdCBy
dGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZUFkZHJlc3MpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJ
ZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNl
cnZlclNvY2tldC5sb2NhbEFkZHJlc3MoKSwgcmVtb3RlQWRkcmVzcyk7CisgICAgYXV0byBzb2Nr
ZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJ
ZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNl
cnZlclNvY2tldC5sb2NhbEFkZHJlc3MoKSwgcmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5z
ZXRTdGF0ZShMaWJXZWJSVENTb2NrZXQ6OlNUQVRFX0NPTk5FQ1RFRCk7CiAgICAgbV9zb2NrZXRz
LnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHZvaWQgTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6ZGV0YWNoKExpYldlYlJUQ1NvY2tl
dCYgc29ja2V0KQogCiBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UqIExpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZUFzeW5jUmVzb2x2ZXIoKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1Jlc29sdmVyPigrK3NfdW5pcXVlUmVzb2x2ZXJJZGVu
dGlmaWVyKTsKKyAgICBhdXRvIHJlc29sdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSZXNvbHZl
cj4oKytzX3VuaXF1ZVJlc29sdmVySWRlbnRpZmllcik7CiAgICAgYXV0byogcmVzb2x2ZXJQb2lu
dGVyID0gcmVzb2x2ZXIuZ2V0KCk7CiAgICAgbV9yZXNvbHZlcnMuc2V0KHJlc29sdmVyUG9pbnRl
ci0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKHJlc29sdmVyKSk7CiAgICAgcmV0dXJuIHJlc29sdmVy
UG9pbnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAyZDFlODQyNDdiZDBh
MzBjOTRkMWYyZWEzMDFkZDU1ZDAyYTZlMDc2Li5iMjcxM2Y0NmMxZmMxM2M5ZjI3YmJlMzljYTVk
YzUxODUwYjE4M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00NSw2ICs0
NSw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDE2YTFhN2Y4MzQ0NjA1M2YzM2Q2NTRlODMz
MzIyOTUwZWU5OTRkNzIuLmQ3M2YxZjE2Zjg5MDc2OWM3MmNjOWRkNDQwZDIyOTIxZmY1ZmZhOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
Y2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgewogICAgIGV4cGxpY2l0IFBsdWdpbkRl
c3RydWN0aW9uUHJvdGVjdG9yKE5ldHNjYXBlUGx1Z2luKiBwbHVnaW4pCiAgICAgewogICAgICAg
ICBpZiAocGx1Z2luKQotICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2Fz
dDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpOworICAgICAgICAgICAgbV9wcm90ZWN0
b3IgPSBtYWtlVW5pcXVlPFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVj
dG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpOwogICAgIH0K
ICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjlhM2M5M2YxMzI2
ZmE0YzZmN2ZlYmY4YWIxYjJjYTRjNzc2YmMwZS4uNTlmNDgyNTFmMjg4NTRjNmQxNjgwYjFkNjRk
ZmFhNWE0N2M2ODEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMzUwLDcgKzM1MCw3
IEBAIHVpbnQzMl90IE5ldHNjYXBlUGx1Z2luOjpzY2hlZHVsZVRpbWVyKHVuc2lnbmVkIGludGVy
dmFsLCBib29sIHJlcGVhdCwgdm9pZCAoKnRpCiAgICAgLy8gRklYTUU6IEhhbmRsZSB3cmFwcGlu
ZyBhcm91bmQuCiAgICAgdW5zaWduZWQgdGltZXJJRCA9ICsrbV9uZXh0VGltZXJJRDsKIAotICAg
IGF1dG8gdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBpbnRl
cnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFRp
bWVyPih0aGlzLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogICAgIAog
ICAgIC8vIEZJWE1FOiBCYXNlZCBvbiB0aGUgcGx1Zy1pbiB2aXNpYmlsaXR5LCBmaWd1cmUgb3V0
IGlmIHdlIHNob3VsZCB0aHJvdHRsZSB0aGUgdGltZXIsIG9yIGlmIHdlIHNob3VsZCBzdGFydCBp
dCBhdCBhbGwuCiAgICAgdGltZXItPnN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBl
MGFiYzJjN2I0MTI5OTMwMDJiYmFiOGJkZmFiN2YyNjUxYWRjNTdmLi5iNmM3NmI2ZWQ3MTRjYWFh
M2E0MWRkZTQxYzFkNmExMDRmYjdhZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTMwOCw2
ICszMDgsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4gewogICAgIFZl
Y3Rvcjxib29sLCA4PiBtX3BvcHVwRW5hYmxlZFN0YXRlczsKIAogICAgIGNsYXNzIFRpbWVyIHsK
KyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFRpbWVyKTsKIAogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcAppbmRleCAwNDk2MjhmNWM2MjcwMmU0ZDVkNDExMTgyMDEyM2JhNWY0Yjk2NTI0Li5i
ZGFhMTQ0Nzg0MjI2OTVkNTBlYTg0OGFhZmNjYmNlMTJkMmFkOTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOZXRzY2FwZVBs
dWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAK
ICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkgewogICAgICAgICBpZiAo
IW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4oKTsKKyAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0g
bWFrZVVuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7CiAKICAgICAgICAgbV9kZWxpdmVyeURhdGEt
PnJlc2VydmVDYXBhY2l0eShtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpICsgbGVuZ3RoKTsKICAgICAg
ICAgbV9kZWxpdmVyeURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdp
blgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4IDQ0ZDExYjU3YzNlYTZkNTE4YzE4ZDA0YjgyMmQy
ODZkNTNlOTY4Y2YuLjA3ZDU1NmMzYjdmYzYzNzE5YzJhMjU1OWUwYWFkNmMyMjZjMDdjYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9O
ZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMTM2LDEwICsxMzYsMTAg
QEAgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDExPiBOZXRzY2FwZVBsdWdpblgxMTo6
Y3JlYXRlKE5ldHNjYXBlUGx1Z2luJiBwbHUKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAo
cGx1Z2luLmlzV2luZG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0
c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxheSwgd2luZG93SUQpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJ
RCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2lu
WDExPihwbHVnaW4sIGRpc3BsYXkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1
Z2luWDExPihwbHVnaW4sIGRpc3BsYXkpOwogfQogCiBOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2Nh
cGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVnaW4mIHBsdWdpbiwgRGlzcGxheSogZGlzcGxheSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIu
aAppbmRleCBhMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2YjM1Li5iNTcyYWEz
YTUzNmQ0ODVjYjliODE3YTE2ZTAyYzMzMmM0YmMyMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0xNTksNiArMTU5
LDcgQEAgY2xhc3MgUGx1Z2luQ29udHJvbGxlciB7CiAKICAgICAvLyBIZWxwZXIgY2xhc3MgZm9y
IGRlbGF5aW5nIGRlc3RydWN0aW9uIG9mIGEgcGx1Zy1pbi4KICAgICBjbGFzcyBQbHVnaW5EZXN0
cnVjdGlvblByb3RlY3RvciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoUGx1
Z2luQ29udHJvbGxlciogcGx1Z2luQ29udHJvbGxlcikKICAgICAgICAgICAgIDogbV9wbHVnaW5D
b250cm9sbGVyKHBsdWdpbkNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggZjM3YzJjYzI0ZTNkZDk3NjNmM2ViZGQ2
MzJkOGJmZGI3NzE0NDM0Ny4uOWFiNTgzNzMwYjg5ZGJkOTYwMWQ2NTIwZWY4ZjliMGJlMDA2ZGM1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcApAQCAtOTUsNyArOTUsNyBAQCBib29sIFBsdWdpblByb3h5Ojppbml0aWFsaXplKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgbV9jb25uZWN0aW9uLT5hZGRQbHVnaW5Qcm94
eSh0aGlzKTsKIAogICAgIC8vIEFzayB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBs
dWctaW4uCi0gICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7CisgICAgbV9wZW5kaW5nUGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzID0gbWFrZVVuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+
KCk7CiAKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPnBsdWdpbkluc3Rh
bmNlSUQgPSBtX3BsdWdpbkluc3RhbmNlSUQ7CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzLT53aW5kb3dOUE9iamVjdElEID0gd2luZG93TlBPYmplY3RJRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA3YWI4
OTY2ZGI5MDVhZGQxMjM5NDgxNjUwYjE5ZGU0YTdlN2QyMjNmLi4xMTlkMmI5MGMyYjQ0MjMxZjI1
Njk1N2U2MmRkY2E4ZjEzMGZjNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtODk4LDcgKzg5OCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQoTW91c2VFdmVudCYgZXZlbnQp
IGNvbnN0CiAgICAgaWYgKGV2ZW50Lm1ldGFLZXkoKSkKICAgICAgICAgbW9kaWZpZXJzLmFkZChX
ZWJFdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5idXR0b25zKCksIG1fcGx1Z2lu
LT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVudC5vZmZzZXRYKCksIGV2ZW50Lm9mZnNl
dFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50LCBtb2Rp
ZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTW91c2VF
dmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5idXR0b25zKCksIG1fcGx1Z2luLT5jb252ZXJ0VG9S
b290VmlldyhJbnRQb2ludChldmVudC5vZmZzZXRYKCksIGV2ZW50Lm9mZnNldFkoKSkpLCBldmVu
dC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxU
aW1lIHsgfSwgMCk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6aGFuZGxlRXZlbnQoRXZlbnQmIGV2
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZmYzA5YzRmNjVi
MjQ1YjYwYmY0ZDRmNTk3YTlmOTBhZDRkMGFhZjkuLmExZmYwMzNiMjA0ZWFmYWRjODg4YTgyMDhh
ODlmNzlkYTAwYmNmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAg
LTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0
YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyQ29udAogCiAgICAgLy8gRklYTUU6
IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBtb3ZlZCBkaXJlY3RseSB0byBXZWJDb3JlOjpTV0NvbnRl
eHRNYW5hZ2VyOjpDb25uZWN0aW9uCiAgICAgLy8gSWYgaXQgd2VyZW4ndCBmb3IgU2VydmljZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50J3MgZGVwZW5kZW5jZSBvbiBXZWJEb2N1bWVudExvYWRlciwg
dGhpcyBjb3VsZCBhbHJlYWR5IGhhcHBlbi4KLSAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBz
ZXNzaW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQsIGVmZmVjdGl2
ZVVzZXJBZ2VudCk7CisgICAgYXV0byBmcmFtZUxvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8U2Vy
dmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PigqdGhpcywgc2Vzc2lvbklELCBtX3BhZ2VJRCwg
KyttX3ByZXZpb3VzU2VydmljZVdvcmtlcklELCBlZmZlY3RpdmVVc2VyQWdlbnQpOwogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IGZyYW1lTG9hZGVyQ2xp
ZW50LmdldCgpOwogICAgIG1fbG9hZGVycy5hZGQoV1RGTW92ZShmcmFtZUxvYWRlckNsaWVudCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09y
aWdpblRhYmxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdp
blRhYmxlLmgKaW5kZXggOTIwZGVkMDQwY2U1NjE4MzM5OWY2YzkzYjgyZWIzNmRmNzMwNDk2YS4u
OTMwZTQ2MTgxOWUxODZmNWE4MGQ4ZjY3MTZmYjExOGM0ZGMwZWE4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaApAQCAtMzcs
NiArMzcsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYlNXT3JpZ2luVGFibGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdlYlNXT3JpZ2luVGFibGUoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA0ZGY2ZjAxOWU1NTg1NzU1MmM4NGRmYWI5
MjUwYzQwMWE4NGNiODM1Li5mNGNmMjkxYTQwMTBiMWU3YzI0MTY3ZDQ1NGI1NGVjNGI4NjRjNGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQWx0
ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggM2M4NzJmNWFkZjM5YmVh
Y2QzYTcwNjY3YjI2ODlkMzhjOWIxMTEyZS4uNGQyNzQ3Njg2MjBlNWE0NmViOTUwOGZkZTQ3YjU3
MWU3OTZmMTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc5Myw3ICs3OTMsNyBAQCB2
b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luLAogCiBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQmIGNs
aWVudCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2UsICZjbGllbnQsIGluaXRpYWxDb2xvcik7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29sb3JDaG9vc2VyPigmbV9wYWdlLCAmY2xpZW50
LCBpbml0aWFsQ29sb3IpOwogfQogCiAjZW5kaWYKQEAgLTgwMiw3ICs4MDIsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbAogCiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihEYXRh
TGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPigmbV9wYWdlLCAmY2xpZW50KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2Us
ICZjbGllbnQpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBjZWQzNmE2YzI1
YjdlNGY4MzQ0YTU4OTk0MDA2NzkxZjdjYzkyNzZmLi5kNDU1NmQ5ODdhMzY2ZDE4MTE0MDhhZDkw
YmY3YTM0N2RkNTk4ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGNs
YXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlBhZ2UmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCA2YzI5YjRlMDgxMjZlN2NkNjY3OWNjNDcwMjM1
YzU1NzRkZTUwZDJlLi5jMWM4OWNkOTllODdhZWU4NGVkNTc0NmMyZTgxZjY0N2U4MmYxZmM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDog
cHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVudChXZWJQYWdlKiBwYWdl
KQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggMWFkNGMzZGUyY2I3
ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVkYTgyMS4uYjI0ZWNmNzZjNDU1MjRmNjBkODZhZWQ2ZmIx
ZWNmNmYwZjM5NDIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdl
KHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMjY4MTAyZmVhMWE3NzU3ZWQ3ZTE2ZGRlY2Nl
M2NhZDhlZTZiZDQzNS4uZDIyZDRjYjczZjI5NzNmNTY1NWE4NzNlYmQyMmQ2YjAwNmFlMGYzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xp
ZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCmluZGV4IDMwZjVhZDZiNGJjMmE2MzhkNjAzN2Y4ZWM5NzM4MDlkZjZlNTZi
MTguLjM1YTMxZmMyYTM0NGIzMTI4NzMwNTA0YjdmZTdhMTE1ZjAxMWI4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAg
IDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDdjZGFhY2Qx
ZmMxZDQ2ZDY1ZWFkYzNmM2E2MTM0YWEzNTU4YTJkMTEuLmQ2N2I2MmMwMmU2ODgzYjQ0ODY1ZmJh
MTU4NTE2ZWEwY2JjYjVjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNTEs
NyArMTUxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghbV9wYWludEluZGljYXRvckxheWVy
Q2xpZW50KQotICAgICAgICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRoaXMpOworICAgICAgICBtX3Bh
aW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBtYWtlVW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXll
ckNsaWVudD4oKnRoaXMpOwogCiAgICAgYXV0byBwYWludExheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1f
cGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCk7CiAgICAgCkBAIC0xNjIsOSArMTYyLDkgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogICAgIHBhaW50TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigxLjBmLCAwLjBmLCAw
LjBmLCAwLjJmKSk7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmYWRlS2V5ZnJhbWVzKEFuaW1h
dGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChzdGQ6Om1ha2Vf
dW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKKyAgICBmYWRlS2V5ZnJhbWVzLmlu
c2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKIAotICAgIGZhZGVL
ZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMC4y
NSwgMCkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRp
b25WYWx1ZT4oMC4yNSwgMCkpOwogICAgIAogICAgIGF1dG8gb3BhY2l0eUFuaW1hdGlvbiA9IEFu
aW1hdGlvbjo6Y3JlYXRlKCk7CiAgICAgb3BhY2l0eUFuaW1hdGlvbi0+c2V0RHVyYXRpb24oMC4y
NSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZjVlY2M2NGM5MjNmMzg2YzUwZTdiNTI5
NzdlZmMwOTllMGJjZmFkNi4uMjdjM2VlMTQyZTE2MTZlNDM1ZjQ4ZDQxZjI3MjcxNWZlOGUwMzgy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBXZWJQ
YWdlOwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCiBjbGFzcyBXZWJJbnNw
ZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwcml2YXRlIFdl
YkNvcmU6OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogZnJpZW5kIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudDsKIHB1YmxpYzoKICAg
ICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViUGFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCA1MzNiZTg0MGNhZDcxNDU1NWRhZjBhYTIwNzI4YTNj
OTMzNTVjOWJlLi40YmIzN2ZkZDYwNzc3NGVkODA5YTk2N2E3NzUxNWZiYWZiNmVmNmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtMzIsNiArMzIs
NyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyIDogcHVibGljIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmgKaW5kZXggMTYzN2FkMTA5N2Q3NjQ5ZTUwZGY3NGY1ZTA2MjI3MjcxZmFiODQ1YS4u
MDBjYzBhMDhkOTI2MDRmZGRmYjVjYTYyZjZiODg1OTVjMzFhYjBkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJQYWdlKik7CiAgICAgdmlydHVh
bCB+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRl
cy5jcHAKaW5kZXggNzkwMDg0Y2U0OGQyMjZiMTBlNjY1YjgyODQ0MzQ5ZmRhYWZmZWU0Ni4uNjlm
MGFlODI3OTUwN2I3Mjk2NWY2NWMyMTY4NzNjNDgxYWRmNGQ2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0
ZWJvYXJkT3ZlcnJpZGVzLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRP
dmVycmlkZXM6OmFkZE92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cgogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vdmVycmlkZXNNYXAuYWRkKHBhc3RlYm9hcmRO
YW1lLCBudWxscHRyKTsKIAogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVN
YXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+Pigp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90
Pj4+IHR5cGVNYXAgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+
PigpOwogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZSh0eXBlTWFw
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAppbmRleCBmNmUwMTQ5NTdlZGMyNzdkYjk4Mzcz
MTI3ZWMxMDYzZTkzNTU4Y2I4Li5jZjkwYTVkZmNmZGE2M2VjYjk4OTdjYzY2ZDBkNDgxMjk0NDgx
M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGx1Z0luQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUGx1Z0luQ2xpZW50IDogcHVibGljIFdl
YkNvcmU6OlBsdWdJbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViUGx1Z0luQ2xpZW50KFdlYlBhZ2UmKTsKICAgICB2aXJ0dWFs
IH5XZWJQbHVnSW5DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaApp
bmRleCA1ZGQ2NWJmYTBkNTBjY2ZkYjE0NjFmZWIzZmU1MjQxZmNhYTBmYmE2Li42M2Q3NzRlNWE5
NDI3YzczNWI1MjQ5MGJkMDFjZDc5YWI3NGExMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJh
Y2tlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6OlByb2dyZXNzVHJhY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KFdlYlBhZ2Um
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaAppbmRleCBlYWQxN2Qz
MGYwNTkwZDc0NDY3MjA1NWNhZDc3ZDk1YzZkMGE0NzcwLi43YmQ4NzU5MDVhNjVjNzdkOTZjM2Y3
ODg0MDAxODU4MmNmYWY3NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5o
CkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKICAg
ICAKIGNsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVl
Y2hTeW50aGVzaXNDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudChXZWJQYWdlJiBwYWdlKQogICAgICAgICA6
IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCmluZGV4IDEwOTMwNDUzY2U3OTdl
ZGQ5MGRlNzZmMDM1NGI5YTFkNDA2ZjJlNmUuLjY5NTIxNzRiOTEyYzk3MWUzNTc4NmUyN2M0ODIy
NWQyZmNhMTQwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJVc2VyTWVkaWFD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJVc2VyTWVkaWFDbGllbnQoV2ViUGFnZSYp
OwogICAgIH5XZWJVc2VyTWVkaWFDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRl
eCA5Y2ZmY2M5YTlmZDJiNjQ0NDkyMmY4NTRhZDk3ZDFkMzMxZTcwYjBlLi5iMjQ1ODFjOTdlN2E4
ODE2ZjQ2YWY5MzE5YTkxZWEyMWI3MmJkNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC01
NTAsNyArNTUwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkKICAgICAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpOwogICAgIH0g
ZWxzZSB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAgICBtX2xheWVyVHJl
ZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyVHJlZUhvc3Q+KG1fd2ViUGFnZSk7CisgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQYWdl
KTsKICNlbHNlCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG51bGxwdHI7CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmNwcAppbmRleCBjMDczOTZmMDJmMWZhNjVmNDVhY2VlNzJmMTM0ZjRmYjJkOWU4OTA5Li41MzU4
Y2Q2ODYzYjMyMjY5NThlZTI3NGVmZDAzMmFkMjAwNjRkZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC01MCwxMyArNTAsMTMg
QEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5nQXJlYTo6Y3JlYXRlKFdlYlBh
Z2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2UKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1h
dGlvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7
CiAjZW5kaWYKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZToKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KHdl
YlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZWxpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKICAgICBjYXNlIERyYXdpbmdB
cmVhVHlwZUNvb3JkaW5hdGVkR3JhcGhpY3M6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGlj
cz4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCmluZGV4IDBmMjY0MDNl
YmI3MGE4MTFiMThlOTg3OTVlMTlkZTc3NDBiZTgzNjAuLjFhNTM1ZjE3ZDk3ZjY2NjgzOTcyNjlh
ODZlMjg1N2IyOWI5NzJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEZpbmRDb250cm9sbGVyIDogcHJpdmF0ZSBXZWJD
b3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGaW5kQ29udHJvbGxlcik7CiAKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNDUy
ZjUzYmNlZGMwMDQ3ZjczM2QxYzM0YmNkNzY1MTE5MmNiOGJlNi4uNDZlOGFhMDk5ODY0NWE4Y2U1
ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQobV9wcm9wZXJ0aWVz
LmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsKIAogICAgIGlmICghbV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOworICAgICAgICBtX3Byb3BlcnRpZXMu
YmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4odGhpcyk7
CiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKIH0KQEAgLTUyMSw3ICs1MjEsNyBAQCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnRyYW5zZm9ybSgpIGNvbnN0
CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAgbV9wcm9w
ZXJ0aWVzLnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVl
KTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNTMyLDcgKzUzMiw3IEBA
IFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c3VibGF5ZXJUcmFu
c2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U3VibGF5ZXJU
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJv
cGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRp
b25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPSBt
YWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0aWVz
Lm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U3VibGF5
ZXJUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQogCiB2b2lkIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
KQogewotICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJP
cGVyYXRpb25zPihmaWx0ZXJzKTsKKyAgICBtX3Byb3BlcnRpZXMuZmlsdGVycyA9IG1ha2VVbmlx
dWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9w
ZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RmlsdGVyc0NoYW5nZWQp
OwogfQogCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFIKICAgICBp
ZiAobV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgJiYgKm1fcHJvcGVydGllcy5zaGFwZVJv
dW5kZWRSZWN0ID09IHJvdW5kZWRSZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb3Bl
cnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVj
dD4ocm91bmRlZFJlY3QpOworICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID0gbWFr
ZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAgbV9wcm9wZXJ0aWVz
Lm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U2hhcGVS
b3VuZGVkUmVjdENoYW5nZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCmluZGV4IDFjYmQxYjRi
YTc5YTdkZjljZTU1ZTA0MjFkNDRlNjViNDA4ODIxYzIuLjA5OTUzNmI5M2MwMTFhYzNmMmEwNzNj
M2NhNDY0ZjA3MjY0NjljZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJh
Y2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyhMYXllclR5cGUgbGF5ZXJU
eXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0
JiBjb250ZXh0KQogICAgIDogUGxhdGZvcm1DQUxheWVyUmVtb3RlKGxheWVyVHlwZSwgb3duZXIs
IGNvbnRleHQpCi0gICAgLCBtX3RpbGVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNv
bnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV90aWxlQ29udHJvbGxlcihtYWtlVW5pcXVlPFRpbGVD
b250cm9sbGVyPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDVlNTBlMGJhMWVmMTI0NmM2YWUwOGYy
OWQ5MmE4MzBlMGRiNGYyMzcuLjQ0NDZmMzRkMDRjY2ZiZmJlYjM2OWJhNDRjMzIwNmJmMGRkMjNl
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQ
YWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCBwYXJh
bWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciwgd2ViUGFnZSkKLSAgICAsIG1fcmVtb3RlTGF5
ZXJUcmVlQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+KHdl
YlBhZ2UpKQorICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCiAgICAgLCBtX3Jvb3RMYXllcihHcmFwaGljc0xh
eWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQogICAgICwgbV9sYXll
ckZsdXNoVGltZXIoKnRoaXMsICZSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXll
cnMpCiB7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6Zmx1c2hMYXllcnMoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbi50cmFuc2Fj
dGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9uLCBzY3JvbGxpbmdU
cmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
UEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpD
b21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5j
b2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExh
eWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0
KCkpOwogICAgIGNvbW1pdEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAog
ICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1lbnQg
dG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5oCmluZGV4IGFhZGUzZDlmMTg0NGQ3ZjA1YzA5MjE4ZDhlMjA0NGQ1OGEyZjA1Zjgu
LmIyYmRjNDFiNzIzMzZiYjZlNDg0OTBmNzMxYjI0ODVkMjcwNzgyZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIDogcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdlJik7CiAg
ICAgflZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA2MGNmZDhkMmExNzU0YTdhY2VkNThk
NjFkZjE3YmU0YzE0MzEzNjk0Li5iZGQ0YjM5NTI1NGE3MTY3NjM5YWVjZDczODYwZTA3MmQ2OWM0
MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CkBAIC0xMjAsNyArMTIwLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENv
cmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIAogUmVmPFdlYkZy
YW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewotICAg
IGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVu
dD4oKSk7CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShtYWtlVW5pcXVlPFdlYkZyYW1lTG9hZGVy
Q2xpZW50PigpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENy
ZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGF1dG8gY29yZUZyYW1lID0g
RnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2Zy
YW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggMTMzNjU3MGQ5M2FhNTExMDY5Nzg1NjExNzAyNjA4OTNiOGEz
Y2RiNC4uZGIzMmRhNDgxMzllMTlmNzE0MjEyNTY1NDBhMjE2MzIzNGNjOTEwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4MywyMSArMzgz
LDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fdGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5KG1ha2VVbmlxdWVSZWY8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5PigqdGhp
cykpCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQotICAgICwg
bV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQorICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yKG1ha2VVbmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMp
KQogI2VsaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKICAgICAsIG1f
YWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQogI2VuZGlmCiAgICAgLCBtX3NldENhblN0YXJ0
TWVkaWFUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlOjpzZXRDYW5TdGFydE1l
ZGlhVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4
dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29u
dGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlmCi0g
ICAgLCBtX2VkaXRvckNsaWVudCB7IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6RWRpdG9yQ2xpZW50PigpIH0KLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBtX2xvYWRlckNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+
KCkpCi0gICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCisgICAg
LCBtX2VkaXRvckNsaWVudCB7IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9y
Q2xpZW50PigpIH0KKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OkZvcm1DbGllbnQ+KCkpCisgICAgLCBtX2xvYWRlckNsaWVudChtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCkpCisgICAgLCBtX3Jlc291cmNl
TG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENs
aWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlVUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKG1ha2VVbmlxdWVSZWY8
RmluZENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVy
KHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI+KCp0aGlz
KSkKKyAgICAsIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3VzZXJDb250ZW50Q29u
dHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBhcmFtZXRlcnMu
dXNlckNvbnRlbnRDb250cm9sbGVySUQpKQogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICAs
IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIobWFrZVVuaXF1ZVJlZjxHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMpKQpAQCAtNDY0LDIxICs0NjQs
MjEgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJ
bkNsaWVudCA9IG5ldyBXZWJQbHVnSW5DbGllbnQoKnRoaXMpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudDsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcgV2ViUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQ+KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4oKnRo
aXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25m
aWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViUGVyZm9y
bWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24ud2ViR0xTdGF0ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
U3RhdGVUcmFja2VyPihbdGhpc10oYm9vbCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpIHsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlciA9IG1ha2VVbmlxdWU8V2Vi
R0xTdGF0ZVRyYWNrZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkg
ewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldElzVXNpbmdIaWdoUGVy
Zm9ybWFuY2VXZWJHTChpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpKTsKICAgICB9KTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgcGFnZUNvbmZpZ3VyYXRp
b24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTcGVlY2hTeW50
aGVzaXNDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5zcGVlY2hTeW50aGVz
aXNDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRoaXMpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxp
ZGF0aW9uTWVzc2FnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2Fn
ZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlzKTsK
ICNlbmRpZgogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2Ug
PSAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKTsKQEAg
LTQ5MywxNCArNDkzLDE0IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcj4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigqdGhp
cyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gcGFyYW1ldGVycy5hcHBsaWNhdGlv
bk1hbmlmZXN0OwogI2VuZGlmCiAKLSAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+
KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBtX3BhZ2UgPSBtYWtlVW5pcXVlPFBh
Z2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIC8vIFNldCB0aGUgc2Vzc2lv
bklEICpiZWZvcmUqIHVwZGF0aW5nIHRoZSBwcmVmZXJlbmNlcyBhcyB0aGUgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCBwcmVmZXJlbmNlcyBtYXkgbmVlZCB0byBvdmVycmlkZSBpdC4KICAgICBpZiAo
cGFyYW1ldGVycy5zZXNzaW9uSUQuaXNWYWxpZCgpKQpAQCAtODUzLDcgKzg1Myw3IEBAIHVpbnQ2
NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHZvaWQgV2Vi
UGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PiYmIGNvbnRleHRNZW51
Q2xpZW50KQogewogICAgIGlmICghY29udGV4dE1lbnVDbGllbnQpIHsKLSAgICAgICAgbV9jb250
ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZUNvbnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIFdlYlBhZ2U6
OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
SW5qZWN0ZWRCdQogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PiYmIGVkaXRv
ckNsaWVudCkKIHsKICAgICBpZiAoIWVkaXRvckNsaWVudCkgewotICAgICAgICBtX2VkaXRvckNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50
PigpOworICAgICAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6RWRpdG9yQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NzQs
NyArODc0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZToKIHZvaWQgV2ViUGFnZTo6c2V0SW5q
ZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxl
OjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0g
ICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1D
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkYKIHZvaWQgV2ViUGFn
ZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PiYmIGxvYWRlckNsaWVudCkKIHsKICAg
ICBpZiAoIWxvYWRlckNsaWVudCkgewotICAgICAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAgICAg
ICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VM
b2FkZXJDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkwNSw3ICs5MDUs
NyBAQCB2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudChX
S0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNlKgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1
bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UmVzb3VyY2VMb2FkQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIW1fcmVzb3VyY2VM
b2FkQ2xpZW50KQotICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOworICAgICAgICBt
X3Jlc291cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVz
b3VyY2VMb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGll
bnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBXZWJQYWdl
OjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJbmplY3RlZEIKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PiYmIHVpQ2xpZW50
KQogewogICAgIGlmICghdWlDbGllbnQpIHsKLSAgICAgICAgbV91aUNsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgICAgICBt
X3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0MTAsMTQgKzE0MTAsMTQgQEAgdm9p
ZCBXZWJQYWdlOjpjbG9zZSgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQot
ICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+
KCk7CiAjZW5kaWYKLSAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKLSAgICBtX2xv
YWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxv
YWRlckNsaWVudD4oKTsKKyAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICBtX2xvYWRlckNsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsK
ICAgICBtX3BvbGljeUNsaWVudC5pbml0aWFsaXplKDApOwotICAgIG1fcmVzb3VyY2VMb2FkQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRD
bGllbnQ+KCk7Ci0gICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAg
bV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50
PigpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX2Z1bGxTY3JlZW5DbGllbnQu
aW5pdGlhbGl6ZSgwKTsKICNlbmRpZgpAQCAtNDY5Niw3ICs0Njk2LDcgQEAgdm9pZCBXZWJQYWdl
OjpiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvKQogI2VuZGlmCiAKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KSB7Ci0gICAgICAgIG1fcHJp
bnRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+KGNvcmVGcmFtZSk7Cisg
ICAgICAgIG1fcHJpbnRDb250ZXh0ID0gbWFrZVVuaXF1ZTxQcmludENvbnRleHQ+KGNvcmVGcmFt
ZSk7CiAgICAgICAgIG1fcGFnZS0+ZGlzcGF0Y2hCZWZvcmVQcmludEV2ZW50KCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJp
bnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCA3MzU2NmExMzM4NWRlM2FhYzY0NmZiOTQ5
NmJkZGFmY2I1YWY0NmI2Li40NjczNGZmZjI2OTFlYTY1YWJkZmY0ZmU1MDQ3MGZjYzRlMzRkMWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJp
bnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFdl
YlByaW50T3BlcmF0aW9uR3RrOjpwcmludChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGRvdWJs
ZSB4RFBJLCBkb3VibGUgeQogewogICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7CiAKLSAgICBh
dXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKKyAgICBh
dXRvIGRhdGEgPSBtYWtlVW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKICAgICBpZiAoIWRh
dGEtPmlzVmFsaWQpIHsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV9maW5pc2goc3VyZmFjZSk7CiAg
ICAgICAgIHByaW50RG9uZShpbnZhbGlkUGFnZVJhbmdlVG9QcmludChmcmFtZVVSTCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRy
b2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENv
bnRyb2xsZXJJT1MubW0KaW5kZXggOWFiYjJhNzkyOTlkNTk2YjkxZTZlZjYxY2E0M2VmODYxOTBh
OTA0OS4uOTM0MThhYjIxZDc0ZmM5NDU4YTAyMjRlNGNiNDhhNzM0MTc4MDlmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJv
bGxlcklPUy5tbQpAQCAtOTgsNyArOTgsNyBAQCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVG
aW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAg
IGlmICghdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9maW5k
SW5kaWNhdG9yT3ZlcmxheUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RmluZEluZGljYXRvck92
ZXJsYXlDbGllbnRJT1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOworICAg
IG1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQgPSBtYWtlVW5pcXVlPEZpbmRJbmRpY2F0b3JP
dmVybGF5Q2xpZW50SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdldCgpKTsKICAg
ICBtX2ZpbmRJbmRpY2F0b3JSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0SW5kaWNhdG9yLT5z
ZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpOwogICAgIG1fZmluZEluZGljYXRv
ck92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKCptX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xp
ZW50LCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKICAgICBtX3dlYlBhZ2Ut
PmNvcmVQYWdlKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheSgq
bV9maW5kSW5kaWNhdG9yT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05vdEZhZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdp
bmdBcmVhTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3
aW5nQXJlYU1hYy5jcHAKaW5kZXggOTA2ODdjOTc0YWNmMzNkODJiOGM2NGI5NDhlNmVlOWEzMGVl
MmU5Yy4uMDZmY2M0NzE1OTNlYjc4ZWRlYmZjYzYzZjg5NDRiM2RmYWU5ZGFiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFN
YWMuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpy
ZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKICAgICBpZiAoIW1faGFzU2VudE1lc3NhZ2UpIHsKICAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTdGFydERpc3BsYXlMaW5rKG1fb2JzZXJ2
ZXJJRCwgZGlzcGxheUlEKCkpLCAwKTsKICAgICAgICAgbV9oYXNTZW50TWVzc2FnZSA9IHRydWU7
Ci0gICAgICAgIG1fcnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2Jz
ZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3RoaXNdKCkgeworICAgICAgICBtX3J1bkxvb3BPYnNl
cnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlz
XSgpIHsKICAgICAgICAgICAgIHRoaXMtPm1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3Ag
PSB0cnVlOwogICAgICAgICB9KTsKICAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxl
KENGUnVuTG9vcEdldEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0KaW5kZXggZGY2MDAzNjQ1OThmMTM0NjI5ZGFiNjI3MDZlYWY2ODYxZTVmZjMzZC4u
NGNiM2RmOWFlYTUyOWVmZjUyNjMzNmM4MWYxMzAyMDQ1YmEzZTBjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtODcsNyArODcsNyBAQCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFn
ZSYgd2ViUGFnZSwgYwogICAgIFttX2hvc3RpbmdMYXllciBzZXRPcGFxdWU6WUVTXTsKICAgICBb
bV9ob3N0aW5nTGF5ZXIgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAKLSAgICBtX2xheWVyRmx1
c2hSdW5Mb29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNl
cnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5M
b29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1fbGF5ZXJGbHVzaFJ1bkxv
b3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNf
Y2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okxh
eWVyRmx1c2gpLCBbdGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hSdW5Mb29wQ2Fs
bGJhY2soKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IGEyZGExMmM2MDIyOTM3M2NmODc4OTJiODNkYWE1NzczNTAwYTc3ZjIuLmE5ZTM3NDQ0
ZmJkMzY4NDRhNDkyOGM5NjEyMmQ3NGVkMWYwZmJiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1NzMsNyArMTU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
bWFya0FsbExheWVyc1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuCiAgICAgQVNTRVJUKCFtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIp
OwogICAgIG1fY291bnRPZlBhZ2VzRmFpbGluZ1RvTWFya1ZvbGF0aWxlID0gMDsKIAotICAgIG1f
cGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKKyAgICBt
X3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBtYWtlVW5pcXVlPFBhZ2VNYXJr
aW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXI+KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmQ291bnRlckV2ZW50KSB7CiAgICAgICAgIGlm
IChtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTE4MzgsNyArMTgzOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0
RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25T
ZXJ2CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZGVudGlmaWVyKQogewotICAgIG1fYXV0b21hdGlvblNlc3Npb25Q
cm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oc2Vzc2lv
bklkZW50aWZpZXIpOworICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IG1ha2VVbmlxdWU8
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOwogfQogCiB2b2lk
IFdlYlByb2Nlc3M6OmRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKQEAgLTE4NzEsNyAr
MTg3MSw3IEBAIGJvb2wgV2ViUHJvY2Vzczo6aGFzVmlzaWJsZVdlYlBhZ2UoKSBjb25zdAogTGli
V2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB7CiAgICAgaWYg
KCFtX2xpYldlYlJUQ05ldHdvcmspCi0gICAgICAgIG1fbGliV2ViUlRDTmV0d29yayA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDTmV0d29yaz4oKTsKKyAgICAgICAgbV9saWJXZWJSVENOZXR3
b3JrID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENOZXR3b3JrPigpOwogICAgIHJldHVybiAqbV9saWJX
ZWJSVENOZXR3b3JrOwogfQogCkBAIC0xODgyLDcgKzE4ODIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRf
dCBwYWdlRwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6
Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5
bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24oc3RkOjptYWtlX3VuaXF1ZTxXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQsIHBhZ2VJ
RCwgc3RvcmUpKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0
aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rp
b24sIHBhZ2VHcm91cElELCBwYWdlSUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAppbmRleCBkNGMwMWJhYjFmOTNkYTkwODViMGYyMTk0Y2QzMjdkNDcxODY1MGIyLi4y
ZjRmYjUzMGFiY2VkN2VmYzczNzY0MjIzMDlmZDMxODg3YTQ3YjBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBXZWJQcm9jZXNz
CiAgICAgLCBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OkNsaWVudAogI2VuZGlmCiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlByb2Nlc3Mm
IHNpbmdsZXRvbigpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5
cGUgPSBQcm9jZXNzVHlwZTo6V2ViQ29udGVudDsKQEAgLTE0Niw3ICsxNDcsNyBAQCBjbGFzcyBX
ZWJQcm9jZXNzCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVt
ZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1l
KCksIHN0ZDo6bWFrZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5h
ZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAog
ICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNw
cAppbmRleCAyNzIwYjg2ZmNkMmZmZWU2MDIyZjVhZDVlZWQ1MGJjZjM2OTJkN2Y4Li45YWYwMGVl
OGFhMGYxY2Q4NDBhODE3Mzc5MGZhMDYyMzAwNDZmZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6
IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXZp
Y2VUeXBlICE9IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd24pOwogICAgICAgICBp
ZiAodHlwZSA9PSBUeXBlOjpBdWRpbykKLSAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJT
dG9yYWdlPihudWxscHRyKSk7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVl
PENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVs
bHB0cikpOwogICAgIH0KIAogICAgIH5Tb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAppbmRleCBiYWVk
MGNkOWUwOWI0OWQyMjFlOTQwMThmNjQ5ZmU2ZGJjZjkyNTE5Li5jMWQ0M2ZjYjNhZjU4NDE0NTNh
ZDM0MzRjN2NmOTNlYmZjOWU3ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAtNDYsNiArNDYsNyBA
QCBjbGFzcyBDcm9zc1Byb2Nlc3NSZWFsdGltZUF1ZGlvU291cmNlOwogY2xhc3MgV2ViUHJvY2Vz
czsKIAogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1
cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OkF1
ZGlvQ2FwdHVyZUZhY3RvcnksIHB1YmxpYyBXZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5LCBw
dWJsaWMgV2ViQ29yZTo6RGlzcGxheUNhcHR1cmVGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
cihXZWJQcm9jZXNzJik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBi
NDdkMWQ4YWZhMDNmZWQzNmRlY2FkOTg5ZDcyZGJjNDE4NDg3ZjU5Li4zYjkwNmE4MGM1YWQ4ZjY5
YmVmNzdmOWE4Yzc2NGFmODA5ZjQ5NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6OnByb2Nlc3NUYXNrU3RhdGVEaWRDaGFuZ2UoUHJvY2Vzc1Rhc2tTdGF0ZU9ic2Vy
dmVyOjpUYXNrU3RhdGUgdAogCiAgICAgLy8gV2Ugd2VyZSBhd2FrZW5lZCBmcm9tIHN1c3BlbnNp
b24gdW5leHBlY3RlZGx5LiBOb3RpZnkgdGhlIFdlYlByb2Nlc3NQcm94eSwgYnV0IHRha2UgYSBw
cm9jZXNzIGFzc2VydGlvbiBvbiBvdXIgcGFyZW50IFBJRAogICAgIC8vIHRvIGVuc3VyZSB0aGF0
IGl0IHRvbyBpcyBhd2FrZW5lZC4KLSAgICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
cmVtb3RlUHJvY2Vzc0lEKCksICJVbmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRl
OjpCYWNrZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246OkZpbmlzaFRhc2spOworICAgIGF1dG8gdWlQ
cm9jZXNzQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVk
IiwgQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFz
ayk7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRl
ZCgpLCBbdWlQcm9jZXNzQXNzZXJ0aW9uID0gV1RGTW92ZSh1aVByb2Nlc3NBc3NlcnRpb24pXSB7
IH0pOwogfQogI2VuZGlmCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRh
dGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbiByZWFzb24pCiAgICAgfQog
CiAgICAgaWYgKCFtX2NwdU1vbml0b3IpIHsKLSAgICAgICAgbV9jcHVNb25pdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxDUFVNb25pdG9yPihjcHVNb25pdG9yaW5nSW50ZXJ2YWwsIFt0aGlzXShkb3Vi
bGUgY3B1VXNhZ2UpIHsKKyAgICAgICAgbV9jcHVNb25pdG9yID0gbWFrZVVuaXF1ZTxDUFVNb25p
dG9yPihjcHVNb25pdG9yaW5nSW50ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2UpIHsKICAg
ICAgICAgICAgIGlmIChtX3Byb2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpTZXJ2aWNlV29ya2Vy
KQogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywg
IiVwIC0gU2VydmljZSB3b3JrZXIgcHJvY2VzcyBleGNlZWRlZCBDUFUgbGltaXQgb2YgJS4xZiUl
ICh3YXMgdXNpbmcgJS4xZiUlKSIsIHRoaXMsIG1fY3B1TGltaXQudmFsdWUoKSAqIDEwMCwgY3B1
VXNhZ2UgKiAxMDApOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAppbmRleCAzNjkwOTVjZGFkMWQzNDcx
MWEwNjc2ZDg3MzZhOTBlMTkzZTI5MDVlLi4yMjhmNGEzNmQ0YjBmMjIyYzE3ODYwZDBiYzQ5OGMx
ZjllMDg5YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVN5bmNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVN5bmNNYW5hZ2VyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZWY8U3RvcmFnZVN5bmNNYW5hZ2Vy
PiBTdG9yYWdlU3luY01hbmFnZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB9CiAKIFN0
b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCkK
LSAgICA6IG1fdGhyZWFkKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICA6
IG1fdGhyZWFkKG1ha2VVbmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKICAgICAsIG1fcGF0aChwYXRo
Lmlzb2xhdGVkQ29weSgpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggNDQzOTM4Mjk1
ZjRlMWMyOWRkMDQ4NmI0MzFiYTdmZWEzNTI5ZDE2ZC4uOWM3NTE0ZTM0NjJjNGI0ZDhhODU2MDVl
ZDAyOWRiZDE5MjVkNmIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlVGhyZWFkLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3Bh
dGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWQpOwotICAg
IG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1v
dmUoZnVuY3Rpb24pKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2
b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0
ZXJtaW5hdGUoKQpAQCAtODcsNyArODcsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0
ZSgpCiAgICAgaWYgKCFtX3RocmVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKKyAgICBt
X3F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10gewogICAg
ICAgICBwZXJmb3JtVGVybWluYXRlKCk7CiAgICAgfSkpOwogICAgIG1fdGhyZWFkLT53YWl0Rm9y
Q29tcGxldGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJh
Y2tlci5jcHAKaW5kZXggYjkzNGQxYTNiMWJhYTgzMWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2ZhMi4u
ODA2Y2IwOTk1ZDBhMDdjNzE4MjcxZDIxMDUwNzAzOThjNDAzYmM4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBA
IFN0b3JhZ2VUcmFja2VyJiBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpCiBTdG9yYWdlVHJhY2tl
cjo6U3RvcmFnZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKICAgICA6IG1fc3Rv
cmFnZURpcmVjdG9yeVBhdGgoc3RvcmFnZVBhdGguaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2Ns
aWVudCgwKQotICAgICwgbV90aHJlYWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigp
KQorICAgICwgbV90aHJlYWQobWFrZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9p
c0FjdGl2ZShmYWxzZSkKICAgICAsIG1fbmVlZHNJbml0aWFsaXphdGlvbihmYWxzZSkKICAgICAs
IG1fU3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRlZmF1bHRTdG9yYWdlRGF0YWJhc2VJZGxl
SW50ZXJ2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNv
cmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKaW5kZXggNDNlYTQ1ZGFlODky
MDZjODI5YTUxNGQ0ZGE4ZTNkMWM5N2NjMTI4NC4uODUxY2MxMDE3ZGVkMDBjMDZkNDZkMmM4NTlk
NzAwMDBiNmQ3MmQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24qIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcDo6c3RvcmFnZVNlc3Npb24oY29uc3QgUAogV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
CiB7CiAgICAgaWYgKCFkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIGRl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKKyAgICAgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOwogICAgIHJldHVybiAqZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwog
fQogCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9w
dENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgc2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIGRlZmF1bHROZXR3b3JrU3RvcmFn
ZVNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24p
LCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCkgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShj
b29raWVTdG9yYWdlKSk7CiAjZW5kaWYKIH0KIApAQCAtMTAwLDExICsxMDAsMTEgQEAgdm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCwgY28KICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9D
RlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
c3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFn
ZSkpOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9u
KSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAKICNlbGlmIFVTRShDVVJMKQogICAgIGdsb2Jh
bFNlc3Npb25NYXAoKS5lbnN1cmUoc2Vzc2lvbklELCBbc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vz
c2lvbklEKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihzZXNzaW9uSUQpOwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENG
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Q0YuY3BwCmluZGV4IDE4NzZiOTYwYjk0NzA4MTRjMzUwYmM1OTI2YTRjODFhZWRmMzkw
MjMuLjdiODY5ODFhM2Y0OGU1MGY4YjNjY2FjMzcwNjkxN2Q0YWYxZmRiZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC0xNTksNSArMTU5LDUgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0
b3JDbGkKICAgICAgICAgICAgIGRlbGV0ZVNldHRpbmcobmFtZSk7CiAgICAgICAgIH0KICAgICB9
OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3ND
Rj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCmluZGV4IDNiMWE0NTA3MDc4ZmE0Y2MwNjhlNzQw
MzAzMjIxMjM5YjJhZDcxMjMuLjE0NTc3MjIyYTllMTNlNjNlNDkxZDZkM2I5MmNhMWJjODllN2Ni
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJX
ZWJDaHJvbWVDbGllbnQuaCIKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50SU9TIGZpbmFsIDogcHVi
bGljIFdlYkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50SU9TKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDog
V2ViQ2hyb21lQ2xpZW50KHdlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1t
CmluZGV4IDIxN2E0ZWQwYTg1YTZiYjQxNGQzMTk0Y2I3YmZhZWZkZTAzNmQ0N2EuLjhkYWQ2MDQ0
NjJmODM3NjQ1NzNmMDA2MjllYTEwNDllZWI4NmRjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRp
b25Db250ZW50Lm1tCkBAIC0xNzgsNyArMTc4LDcgQEAgLSAodm9pZClzZXRWaWV3cG9ydENvbnN0
cmFpbmVkTGF5ZXJzOihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBzdGQ6OnVuaXF1ZV9wdHI8V2UK
IAogICAgIGZvciAoYXV0byYgbGF5ZXJBbmRDb25zdHJhaW50cyA6IGxheWVyTWFwKSB7CiAgICAg
ICAgIENBTGF5ZXIqIGxheWVyID0gbGF5ZXJBbmRDb25zdHJhaW50cy5rZXk7Ci0gICAgICAgIGF1
dG8gbGF5ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJE
YXRhPigpOworICAgICAgICBhdXRvIGxheWVyRGF0YSA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25z
dHJhaW5lZExheWVyRGF0YT4oKTsKIAogICAgICAgICBsYXllckRhdGEtPm1fZW5jbG9zaW5nQWNj
ZWxlcmF0ZWRTY3JvbGxMYXllciA9IHN0aWNreUNvbnRhaW5lcnMuZ2V0KGxheWVyKTsKICAgICAg
ICAgbGF5ZXJEYXRhLT5tX3ZpZXdwb3J0Q29uc3RyYWludHMgPSBXVEZNb3ZlKGxheWVyQW5kQ29u
c3RyYWludHMudmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlz
dG9yeS9XZWJIaXN0b3J5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJI
aXN0b3J5Lm1tCmluZGV4IGE4YjZhMDQzOTNlYzAwMDE0NjUzOGQ0Y2Y2NWJkNjQwYzc0YmQ5MDEu
LjVhZDgxYjRhM2I0OWI1ZDA2MzkzNjU2ODNhMWJjZjVkNTdlZjM4NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KQEAgLTEzMyw3ICsxMzMsNyBA
QCAtIChpZClpbml0CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgX2VudHJpZXNCeVVS
TCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgX2VudHJpZXNCeURh
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CisgICAgX2VudHJpZXNC
eURhdGUgPSBtYWtlVW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCmluZGV4IGI3Mzk1OTM1ZTUxMGJmM2I3ZjBjNDhlZGQ0MzZjNThiYmM0ODFkOGUuLjg2
ZjlkM2Q0MjIzODQ2YmM5NWNiYzk1NjQ1YTFjYTczMjBhZmUxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMzQ4LDcgKzM0
OCw3IEBAIC0gKGlkKWluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOihOU0RpY3Rpb25h
cnkgKilkaWN0CiAgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJl
KHRydWUpOwogICAgIAogICAgIGlmIChOU0FycmF5ICpyZWRpcmVjdFVSTHMgPSBbZGljdCBfd2Vi
a2l0X2FycmF5Rm9yS2V5OnJlZGlyZWN0VVJMc0tleV0pIHsKLSAgICAgICAgYXV0byByZWRpcmVj
dFVSTHNWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAg
ICBhdXRvIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7
CiAgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbcmVk
aXJlY3RVUkxzIGNvdW50XSk7CiAKICAgICAgICAgZm9yIChpZCByZWRpcmVjdFVSTCBpbiByZWRp
cmVjdFVSTHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggZTE3Yzc4
ODFhNTE3ZjBjMzU1Zjg3NTY5YjYwZGEzZjIxNWExZWJhNy4uZjVlN2ZiY2YxMmU0N2Y5MGRlZWYx
ZWEyY2ZlYjcxNzQyNjg4MGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0K
QEAgLTQ5Myw3ICs0OTMsNyBAQCBrZXJuX3JldHVybl90IFdLUENHZXRTY3JpcHRhYmxlTlBPYmpl
Y3RSZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbAogICAgIGlmICghaW5z
dGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNl
UHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0
SUQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtl
VW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0
UmVwbHk+KG9iamVjdElEKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApAQCAtNTA5
LDcgKzUwOSw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5SZXBseShtYWNoX3BvcnRfdCBj
bGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW5JRCwgdWludDMyCiAgICAgaWYgKCFpbnN0YW5jZVBy
b3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogICAgIAotICAgIGluc3RhbmNlUHJv
eHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOworICAgIGluc3RhbmNl
UHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOwogICAgIHJldHVybiBLRVJO
X1NVQ0NFU1M7CiB9CiAKQEAgLTUyOCw3ICs1MjgsNyBAQCBrZXJuX3JldHVybl90IFdLUENCb29s
ZWFuQW5kRGF0YVJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklE
LAogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gcmVzdWx0ID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgcmVpbnRlcnByZXRfY2FzdDxVSW50
OCo+KHJlc3VsdERhdGEpLCByZXN1bHRMZW5ndGgpKTsKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRD
dXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6Qm9vbGVhbkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOwor
ICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5W
YWx1ZSwgcmVzdWx0KSk7CiAgICAgCiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KQEAgLTU0
NSw3ICs1NDUsNyBAQCBrZXJuX3JldHVybl90IFdLUENJbnN0YW50aWF0ZVBsdWdpblJlcGx5KG1h
Y2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbgogICAgIGlmICghaW5zdGFuY2VQ
cm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHkt
PnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpJbnN0YW50aWF0ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNv
bnRleHRJRCwgc3RhdGljX2Nhc3Q8UmVuZGVyZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CisgICAg
aW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwg
cmVuZGVyQ29udGV4dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkp
KTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5oCmluZGV4IDEwYTA4ZTk1MGEzZGMwYzkzNjcxZjFmYzFjNzRjOTQ3Nzkz
YTA3ZTguLmU1NmExMDNhMjhhNzYwZjljZTBiOTdlNzFkZDZiMjNhNjBjNTNlODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCkBAIC0xNzEsNiArMTcxLDcgQEAgY2xh
c3MgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3gKIAogICAgIC8vIFJlcGx5IHN0cnVjdHMKICAgICBzdHJ1Y3Qg
UmVwbHkgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IGVudW0gVHlwZSB7CiAgICAgICAgICAgICBJbnN0YW50aWF0ZVBsdWdpbiwKICAgICAgICAgICAg
IEdldFNjcmlwdGFibGVOUE9iamVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDIwMmM2ZGVhZjEzZDA3
YzZlM2E1Njk4YjFjZGI1OWExOWI1ZGEwMzkuLjUyYmY3YmQxMmU0ZTM3MTJkMzE0NzVlMmE1Mzlh
NDI4Y2ZmOGZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMzYyLDcgKzM2Miw3IEBAIE1ldGhvZCog
UHJveHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAg
ICAvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVk
IHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0g
bV9tZXRob2RzLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3Vs
dC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlNZXRob2Q+KG1ldGhvZE5hbWUp
OworICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94
eU1ldGhvZD4obWV0aG9kTmFtZSk7CiAKICAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5nZXQoKTsKIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCBGaWVsZCogUHJveHlJbnN0YW5j
ZTo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5l
dyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2Vy
ZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX2ZpZWxkcy5hZGQo
bmFtZS5pbXBsKCksIG51bGxwdHIpOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAm
JiByZXBseS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOworICAgICAgICBtYXBB
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlm
aWVyKTsKICAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDljNzFhM2Nj
OTIzZjMzZDJlMGFiMzlhMWJmNmIxNGI0NDNlOTRkNGIuLmVlMTljNTY3YzAxZmExOGM1ZThkYzYx
YjA4Yzg5NGU1MjAwMmRhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW0KQEAgLTYwLDYgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogICAgIAogY2xhc3MgU29mdHdhcmVDQVJlbmRlcmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTb2Z0d2FyZUNBUmVuZGVy
ZXIodWludDMyX3QgY29udGV4dElEKQogICAgICAgICA6IG1fY29udGV4dCB7IFtDQUNvbnRleHQg
bG9jYWxDb250ZXh0XSB9CkBAIC0xNjgsNyArMTY5LDcgQEAgLSAoQk9PTCljcmVhdGVQbHVnaW4K
ICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYgKF9wcm94eS0+cmVuZGVyZXJUeXBlKCkgPT0g
VXNlU29mdHdhcmVSZW5kZXJlcikKLSAgICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNvZnR3YXJlQ0FSZW5kZXJlcj4oX3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7
CisgICAgICAgIF9zb2Z0d2FyZVJlbmRlcmVyID0gbWFrZVVuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVy
ZXI+KF9wcm94eS0+cmVuZGVyQ29udGV4dElEKCkpOwogICAgIGVsc2UKICAgICAgICAgW3NlbGYg
Y3JlYXRlUGx1Z2luTGF5ZXJdOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0K
aW5kZXggZjdhZWRiY2VkNGQ3ZjVjNGJhM2U5NmUzNTYxY2E3ZjBiMjY1YzhhYy4uOGVjMWJmNzll
ZTMyYTJhYzFiYmNmN2EyMWU3M2U3ZTFlMDFkYjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyLm1tCkBAIC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlcj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyCiB7CiAg
ICAgc3dpdGNoIChbcGx1Z2luVmlldyBldmVudE1vZGVsXSkgewogICAgIGNhc2UgTlBFdmVudE1v
ZGVsQ29jb2E6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdpblZpZXcpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5WaWV3KTsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCmluZGV4IDcw
ODM3NzZkMjhhNzVjZmI1NDI1MzNkOTBmMzc3OGU4NWFiY2QxZDIuLmJiZDljNWQ1ODIxZjg1ZjY1
ZWJjOGY3NzdlYzY1NTIyOWQ1ZTg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXJDb2NvYS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXIuaCIKIAogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2Nv
YSA6IHB1YmxpYyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXJDb2NvYShXZWJOZXRzY2FwZVBsdWdpblZpZXcqKTsgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXgg
MDJmZjIxODZkZjg0YTlhOTBkN2U5YzI2YzA3NjI3OWUzMjIxMTM3OC4uMTYwNjYzZTg2MWY3MTBl
YmZlZDFkNzY4NTY1ZGQyMmExMTRlOGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE2NTUsNyAr
MTY1NSw3IEBAIC0gKHVpbnQzMl90KXNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90
KWludGVydmFsIHJlcGVhdDooTlBCb29sKXJlcGVhdCB0CiAgICAgICAgIHJldHVybiAwOwogICAg
IAogICAgIGlmICghdGltZXJzKQotICAgICAgICB0aW1lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhh
c2hNYXA8dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4+PigpOworICAgICAg
ICB0aW1lcnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQ
bHVnaW5UaW1lcj4+PigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPiogc2xv
dDsKICAgICB1aW50MzJfdCB0aW1lcklEOwpAQCAtMTY2Myw3ICsxNjYzLDcgQEAgLSAodWludDMy
X3Qpc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoodWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihO
UEJvb2wpcmVwZWF0IHQKICAgICAgICAgdGltZXJJRCA9ICsrY3VycmVudFRpbWVySUQ7CiAgICAg
d2hpbGUgKCF0aW1lcnMtPmlzVmFsaWRLZXkodGltZXJJRCkgfHwgKihzbG90ID0gJnRpbWVycy0+
YWRkKHRpbWVySUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZSkpOwogCi0gICAgYXV0byB0aW1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luVGltZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2
YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKKyAgICBhdXRvIHRpbWVyID0gbWFrZVVuaXF1ZTxQbHVn
aW5UaW1lcj4ocGx1Z2luLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwog
CiAgICAgaWYgKF9zaG91bGRGaXJlVGltZXJzKQogICAgICAgICB0aW1lci0+c3RhcnQoX2lzQ29t
cGxldGVseU9ic2N1cmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KaW5kZXggNzA0Y2QwOTVlODhm
ZTFhMjM4MTE4NmM2YmZmMTMwZmM5MDIwNDFlYi4uNTdmYmJmYWQ5ZTY0Yjc2NzhhZDNhY2NlODA3
NzhiYWNmMDM3ODFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KQEAgLTk0LDEwICs5NCwxMSBA
QCBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6On5XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQog
fQogCiBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4pCiAgICAgewotICAgICAgICBhdXRvIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERp
ZE1vZGlmeU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjb250ZXh0
ID0gbWFrZVVuaXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdpbik7CiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSB7CiAgICAg
ICAgICAgICBjb250ZXh0LT5jbGllbnQuZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29udGV4dC0+
b3JpZ2luKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmlu
ZGV4IGEzYjE1OThlZTM1M2Q2N2UyM2FmODA5NThlYjdmNzVlYjE2N2Y0ZDguLmNkNzI2NDI2ODI1
YmE3MjIxNTU3ZTA1NjZmYTkyZWMwODExMTQ1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIH5XZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YS5oCmluZGV4IDc4YjUzOWUzNzJiODY1YzU5NGZjMDc2ZjVhMWZjODRhYWZlOThiZjAuLjI3MTQy
N2UyZDQ2ZWUzYTI5N2QwNTQwMTJhN2E4NWFiOGIzZTFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCiBjbGFzcyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJD
b3JlOjpDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoaWQgd2ViRG9jdW1l
bnRWaWV3KSA6IG1fd2ViRG9jdW1lbnRWaWV3KHdlYkRvY3VtZW50VmlldykgeyB9CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCmluZGV4IGZkYzRjYzc4MTk2ZmNiY2YzMjYwMmQxOGUyODlmMDdhMTE1NGNj
OTUuLmMwZmJkYTliMmRhMWRkNDUxMGZmZTA4OWJmNjhmNWE3NjdkZDQxNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiAvLyBiYXNl
IGNsYXNzIG9mIHRoZSBjb25jcmV0ZSBjbGFzcywgV2ViQ2hyb21lQ2xpZW50SU9TLiBCZWNhdXNl
IG9mIHRoYXQsIHRoaXMgY2xhc3MgYW5kCiAvLyBtYW55IG9mIGl0cyBmdW5jdGlvbnMgYXJlIG5v
dCBtYXJrZWQgZmluYWwuIFRoYXQgaXMgbWVzc3kgd2F5IHRvIG9yZ2FuaXplIHRoaW5ncy4KIGNs
YXNzIFdlYkNocm9tZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudChX
ZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDE4ODVmMDMxMzEzNWI4
MTdiMzBmOTQ1Nzc3ZDhlMjRiMTUzOWJmOTAuLmE3ZjY2ZWVlZjMwNmE2ODYwNTQyMGU3OTg3NjIw
MjU3YmUwNmI2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNiArNDQsNyBA
QCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVu
dUNsaWVudAogICAgICwgcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50CiAjZW5k
aWYKIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250
ZXh0TWVudUNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5XZWJDb250ZXh0
TWVudUNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDg0N2E3M2IxN2E0NjE3YmQ1NGE4ZDI4YTky
M2MxZDRhNjNiZGQxMmUuLjMwZGYzZjczZDg1MGVhNzY5YzcxMzUyMjFkMmU4ODY1ZWE2N2UwM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFz
cyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGYwNTllMDU5ZTExODdhM2JjNWJkMjQ3Y2MyNDFmNTlh
ZGQ0NTA5NTAuLmI1MTA3ODdkODA5YmNmOTdiNzY4OWU3NDA5MzI4Mzc1YWEwYjBiMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC00NSw2ICs0NSw3IEBACiBAY2xhc3MgV2ViRWRpdG9yVW5kb1Rhcmdl
dDsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRv
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8V2ViRWRpdG9yQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgdmlydHVhbCB+
V2ViRWRpdG9yQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDNkZDUw
ZTdiM2I5Y2Y5OTMzNDljOWFiYjRjYjQ5NzgzN2VlYzM1M2UuLjk0MGIwZmY5NjNhODVjZTlkODhk
N2JjNTZmZjZiM2VlYjJlM2Q5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0x
MDY3LDcgKzEwNjcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxI
aXN0b3J5KCkKIHN0YXRpYyB2b2lkIGFkZFJlZGlyZWN0VVJMKFdlYkhpc3RvcnlJdGVtICppdGVt
LCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWl0ZW0tPl9wcml2YXRlLT5fcmVkaXJl
Y3RVUkxzKQotICAgICAgICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVk
aXJlY3RVUkxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAogICAgIC8vIE91ciBB
UEkgYWxsb3dzIHVzIHRvIHN0b3JlIGFsbCB0aGUgVVJMcyBpbiB0aGUgcmVkaXJlY3QgY2hhaW4s
IGJ1dCBmb3IKICAgICAvLyBub3cgd2Ugb25seSBoYXZlIGEgdXNlIGZvciB0aGUgZmluYWwgVVJM
LgpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFt
ZSogY2FjaGVkRnJhbWUpCiB7Ci0gICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2Vi
RnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CisgICAgY2FjaGVk
RnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1l
bnRWaWV3KSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEF0IHRoaXMgcG9p
bnQgd2Uga25vdyB0aGlzIGZyYW1lIGlzIGdvaW5nIHRvIGJlIGNhY2hlZC4gU3RvcCBhbGwgcGx1
Z2lucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGZmZTI5OTMxMmViNDgwYmFmYjVm
MGVhYzQzNTJmMjQzZjk2ZTAwZjcuLmZmZGJhY2ZjMjc0MjFlOGQzNTg4OGYyY2U2YjE4MDc3YTE2
ZTMzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFz
cyBHZW9sb2NhdGlvblBvc2l0aW9uOwogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVu
dChXZWJWaWV3ICopOwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYmQ3ZjYyZmM4NWRjOTljMzg3MTZmMDc2NjY0
NjMxODI1MTFjNTRhNS4uMGM5NDhiM2FlZjk4NzYwOTYzMDM1MWQ1OWFjNzkwYjJhYmVhZGE3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgUGFnZTsKIGNs
YXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICppbnNwZWN0ZWRX
ZWJWaWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDFjMDA4MDk3NjkyZmY5YjA3
MWZjZTVhYzRhNGI0NjkyZDEzN2VkOTUuLjdkM2U1ZWM5ZTYxNWUxZDQ4YzNkMDVkNzFhNTljNDUx
ZmViNzY2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTEwOSw3ICsxMDksNyBAQCBG
cm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcAogICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldElu
c3BlY3RvckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93
Q29udHJvbGxlci5nZXQoKSBmcm9udGVuZFdlYlZpZXddKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0
ZWRXZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxl
ciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9u
dGVuZENsaWVudCA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5z
cGVjdGVkV2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRy
b2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogCiAgICAg
UmV0YWluUHRyPFdlYkluc3BlY3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFk
b3B0TlMoW1tXZWJJbnNwZWN0b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVu
dDptX2Zyb250ZW5kQ2xpZW50LmdldCgpXSk7CiAgICAgW1ttX2luc3BlY3RlZFdlYlZpZXcgaW5z
cGVjdG9yXSBzZXRGcm9udGVuZDp3ZWJJbnNwZWN0b3JGcm9udGVuZC5nZXQoKV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDE1YjQxODA0OGU0ZjFkNDYyNGMzMDNkY2JiZmVkMTY5
Nzk2NDQ4NjEuLjk0ZWQ2MThhYzc4ZWU4YmNmNTcxNTVjOWFkYWJjYmRhZGY2OGM3MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBAY2xhc3MgV2ViVmll
dzsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmll
dygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyLmgKaW5kZXggYTNkNmFlNjM2MzY0N2M1ZjMwY2M3OWZiZDYzNWY2NjRiY2EwMTIz
Yy4uZGM5ZDExYTM1ODdlZTA0ZjUwMTUxYmU4OGJjNWQ0YjE0OGJjZGU1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNz
IEludFBvaW50OwogfQogCiBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA6IHB1
YmxpYyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIoV2Vi
VmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQppbmRleCAyNTM2
NDhkOGU4NDU5MTFlMmFlMjhjMGJiODYzY2I1N2Y3YzMwMDM5Li4yNzZkOWYxNWVmOGZhNWUxZmVk
NDM4ZWQ5YzFkMjU5YTc4NTgzNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2subW0KQEAgLTM2LDcgKzM2LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IHN0
ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOworICAgIG1fY29y
ZSA9IG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOwogICAgIHJldHVy
biBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQppbmRleCBhOTA2MjJjMjA3NGUwY2RjZWNlZjJjNmMxYzg0OTQ1ZDRlOWRmZmFiLi4zYTk0YmI5
MTBkMjU5ZWZhYTg5MWQ1MjllODBkMmI1YjAwMjBiNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTM3OCw3ICszNzgsNyBAQCAtICh2b2lkKV9h
dHRhY2hTY3JpcHREZWJ1Z2dlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3ByaXZh
dGUtPnNjcmlwdERlYnVnZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4o
Z2xvYmFsT2JqZWN0KTsKKyAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBtYWtlVW5pcXVl
PFdlYlNjcmlwdERlYnVnZ2VyPihnbG9iYWxPYmplY3QpOwogfQogCiAtICh2b2lkKV9kZXRhY2hT
Y3JpcHREZWJ1Z2dlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCBkZmE3ZWZkMDYw
NmFkYzQ5ZmUyOTFkMDUyMWQxMzJlNmUxOWM1MDczLi5hMDcyZTgxOTUyNDkzOWFlMGYyMmJiOTgz
NmQzYWM3MDVkODU3OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtMzcsNiAr
MzcsNyBAQCBjbGFzcyBQYWdlOwogfQogCiBjbGFzcyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyIDogcHVibGljIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4gY3JlYXRlKFdlYkNvcmU6OlBhZ2Um
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDcyYzIwYzY5M2ZlY2JhOTcx
MDQ2MzQxNjQxY2NlMTE0OTRkZTRhNjkuLjYwMjQwMjk5NjJlYzM0ZjAwZjRhYWQ5NDMyYTdmYzQy
YmExZDE3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTMzLDcgKzMzLDcg
QEAKIAogc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+IFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OmNyZWF0ZShXZWJDb3JlOjpQYWdlJiBwYWdlKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+
KHBhZ2UpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXI+KHBhZ2UpOwogfQogCiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDFhNzI1OGI0
MjNhODQ1Nzg5MWU0MTVlMTBkMDAyNTY3MzBhYTJiZGUuLmUzNjNiODViMmIzZDVhZTE0NzNjODM3
MjcxODU4MzRkNTE3ODdiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0gKGlkKWluaXRXaXRo
UmFuZ2U6KERPTVJhbmdlICopcmFuZ2UKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgCiAgICAg
X3ByaXZhdGUgPSBbW1dlYlRleHRJdGVyYXRvclByaXZhdGUgYWxsb2NdIGluaXRdOwotICAgIF9w
cml2YXRlLT5fdGV4dEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRl
cmF0b3I+KGNvcmUocmFuZ2UpKTsKKyAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRl
eCBiY2NjNjRiMDdhM2QwNWY5YmU4NDVmZDE2YThhNGUxNThiNTY0NzVkLi4xMGYyMTg4NGViNGE5
Yzk4NGFjMzJlNjAxNDE0OTg1MGI4YzE5YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMjI5LDcgKzEyMjksNyBAQCBzdGF0aWMgTlNTdHJpbmcg
KmxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCkKIC0odm9pZClfaW5qZWN0T3V0
bG9va1F1aXJrc1NjcmlwdAogewogICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1Nj
cmlwdENvbnRlbnRzID0gbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKLSAg
ICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQo
KmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlw
dD4ob3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMp
KTsKKyAgICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
Y3JpcHQoKmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlxdWU8VXNlclNjcmlw
dD4ob3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMp
KTsKIAogfQogI2VuZGlmCkBAIC0xNDQzLDcgKzE0NDMsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZToo
TlNTdAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVD
bGllbnQoc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBu
ZXcgV2ViQ29udGV4dE1lbnVDbGllbnQoc2VsZik7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBl
bmFibGUgdGhpcyBvbiBpT1MgYXMgd2VsbC4KLSAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0
aW9uTWVzc2FnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQ+KHNlbGYpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7CiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVu
dChzZWxmKTsKICNlbHNlCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3
IFdlYkNocm9tZUNsaWVudElPUyhzZWxmKTsKQEAgLTQ2MzMsNyArNDYzMyw3IEBAICsgKHZvaWQp
X2FkZFVzZXJTY3JpcHRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2Ny
aXB0V29ybGQgKil3b3JsCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byB1c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVy
bCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwg
aW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3Vt
ZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmpl
Y3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkp
OworICAgIGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1
cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCks
IGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1
bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5q
ZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5
KTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQo
KmNvcmUod29ybGQpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtNDY1Niw3ICs0NjU2
LDcgQEAgKyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3Vw
TmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICBpZiAoIXdvcmxkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHls
ZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdW
ZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMg
PyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2Vy
TGV2ZWwpOworICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXQ+
KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3Rvcihi
bGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVj
dEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7
CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVl
dCgqY29yZSh3b3JsZCksIFdURk1vdmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1
bWVudHMpOwogfQogCkBAIC05NDE2LDcgKzk0MTYsNyBAQCAtIChWZWN0b3I8U3RyaW5nPilfZGlj
dGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0CiAtIChXZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlciYpX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyCiB7CiAg
ICAgaWYgKCFfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKQotICAgICAgICBf
cHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CisgICAgICAgIF9wcml2YXRlLT5f
c2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyPihzZWxmKTsKICAgICByZXR1cm4gKl9wcml2YXRlLT5fc2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXI7CiB9CiAjZW5kaWYKQEAgLTk0NzUsNyArOTQ3NSw3IEBAIC0gKHZvaWQp
X3NldFRleHRJbmRpY2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3IKIC0gKHZvaWQp
X3NldFRleHRJbmRpY2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3Igd2l0aExpZmV0
aW1lOihUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUpbGlmZXRpbWUKIHsKICAgICBpZiAoIV9w
cml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93KQotICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGlj
YXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7
CisgICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxUZXh0
SW5kaWNhdG9yV2luZG93PihzZWxmKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5X
aW5kb3dDb29yZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OltzZWxmIF9jb252ZXJ0UmVjdEZy
b21Sb290Vmlldzp0ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoKV0gdG9WaWV3Om5pbF07CiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVl
bkNvb3JkaW5hdGVzID0gW3NlbGYud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46dGV4dEJvdW5k
aW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXggMTA2MGMyZDg1NGFkYTBkY2FmYjMzNTU5Yzgx
MWU0ZWU0OTRjYzZlMC4uODIzOGE0ZWM1ZmVlMTY4MzY0ZWQxMzA0YmM3NTE1ZjU1MTdmZTg5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBA
IC05Niw3ICs5Niw3IEBAIExheWVyRmx1c2hDb250cm9sbGVyOjpMYXllckZsdXNoQ29udHJvbGxl
cihXZWJWaWV3KiB3ZWJWaWV3KQogV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdM
YXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVyKiBmbHVzaENvbnRyb2xsZXIp
CiAgICAgOiBtX2ZsdXNoQ29udHJvbGxlcihmbHVzaENvbnRyb2xsZXIpCiB7Ci0gICAgbV9ydW5M
b29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4o
c3RhdGljX2Nhc3Q8Q0ZJbmRleD4oV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25S
dW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1fcnVuTG9vcE9ic2Vy
dmVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENG
SW5kZXg+KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6
TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaENhbGxiYWNr
KCk7CiAgICAgfSk7CiB9CkBAIC0yMDgsNyArMjA4LDcgQEAgLSAoaWQpaW5pdAogICAgIHBsdWdp
bkRhdGFiYXNlQ2xpZW50Q291bnQrKzsKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVT
KQotICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7CisgICAgbV9hbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcj4oKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4
IDY0NmU2YWVmOTMyZjFjOTkyOTg1MzZjODJmMmM5NTVhNzFhMTkyY2YuLmZlNDRlNzUxY2MxMWMw
ZWFhZmUyODE4MTc5ZWRjZjY1YTdmMWM3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCkBAIC0yNDYsMTAgKzI0Niwx
MCBAQCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KCkKICAgICAsIG1fbW92aW5nV2luZG93KGZhbHNlKQogICAgICwgbV90aW1lcigqdGhpcywgJkZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnRpbWVyRmlyZWQpCiAjaWYgVVNFKENBKQotICAgICwg
bV9sYXllckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKKyAgICAs
IG1fbGF5ZXJDbGllbnQobWFrZVVuaXF1ZTxMYXllckNsaWVudD4odGhpcykpCiAgICAgLCBtX3Jv
b3RDaGlsZChQbGF0Zm9ybUNBTGF5ZXJXaW46OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZUxheWVyLCBtX2xheWVyQ2xpZW50LmdldCgpKSkKICNlbmRpZgotICAgICwgbV9mdWxsc2Ny
ZWVuV2luZG93KHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRo
aXMpKSkKKyAgICAsIG1fZnVsbHNjcmVlbldpbmRvdyhtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5DbGllbnQqPih0aGlzKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCBhYmE2M2RhYjhiMzFlNDdhYmQ4MDg4
YjM3ODNhODBlYzU0YzEwMjE4Li4wZjZiZWVmZmFkMWRjMDE1YzhhNDc3ZTdmYmU1YzliNmFhZmFm
ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJl
YW0uY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIKIAogICAg
IGlmIChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9k
ZWxpdmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPGNoYXI+PigpOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBtYWtlVW5p
cXVlPFZlY3RvcjxjaGFyPj4oKTsKIAogICAgICAgICBpbnQgb2xkU2l6ZSA9IG1fZGVsaXZlcnlE
YXRhLT5zaXplKCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5yZXNpemUob2xkU2l6ZSArIGxl
bmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCAyMTM2MzE3ZjI5OTlkNWUxMzc0OWRmMzhlMTlhOGY0ZDJmMjViZDYwLi41NDcxNmEw
YmIyYjFmYWI3NWQ4MWRlNDJhZWU5NmVlYTJmNmIxM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTUxMCw3ICs1MTAsNyBAQCBOUEVy
cm9yIFBsdWdpblZpZXc6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3Qs
IGJvb2wgc2VuZE5vdGlmaWNhdAogICAgIH0gZWxzZSBpZiAoIW1fcGFyZW50RnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1cmwpKQogICAgICAgICByZXR1cm4g
TlBFUlJfR0VORVJJQ19FUlJPUjsKIAotICAgIHNjaGVkdWxlUmVxdWVzdChzdGQ6Om1ha2VfdW5p
cXVlPFBsdWdpblJlcXVlc3Q+KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHNlbmROb3RpZmlj
YXRpb24sIG5vdGlmeURhdGEsIGFyZVBvcHVwc0FsbG93ZWQoKSkpOworICAgIHNjaGVkdWxlUmVx
dWVzdChtYWtlVW5pcXVlPFBsdWdpblJlcXVlc3Q+KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCks
IHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEsIGFyZVBvcHVwc0FsbG93ZWQoKSkpOwogCiAg
ICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMDU3MjhmM2VkMzcyMDUwNGFmNTVm
OTg3N2Y4NjIxYmRjMDVjZTYyMi4uNTIwNDU5NGFiNmY4NGQ1NzAwMDQwZGZkMjk4MWMzZjU2M2Vk
ZmYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXdXaW4uY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgUGx1Z2luVmlldzo6d25kUHJvYyhIV05EIGhX
bmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAo
bWVzc2FnZSA9PSBXTV9VU0VSICsgMSAmJgogICAgICAgICBtX3BsdWdpbi0+cXVpcmtzKCkuY29u
dGFpbnMoUGx1Z2luUXVpcmtUaHJvdHRsZVdNVXNlclBsdXNPbmVNZXNzYWdlcykpIHsKICAgICAg
ICAgaWYgKCFtX21lc3NhZ2VUaHJvdHRsZXIpCi0gICAgICAgICAgICBtX21lc3NhZ2VUaHJvdHRs
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4+KHRoaXMpOwor
ICAgICAgICAgICAgbV9tZXNzYWdlVGhyb3R0bGVyID0gbWFrZVVuaXF1ZTxQbHVnaW5NZXNzYWdl
VGhyb3R0bGVyV2luPih0aGlzKTsKIAogICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXItPmFwcGVu
ZE1lc3NhZ2UoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwogICAgICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oCmluZGV4IDUzMGI2OWVkNzE5YzI3YWNjNmIwN2UzNTE1OTIyMWY1NTI2YzUzMDUu
LjNiZjQ0ZDg3ZDE4ZDVmMjczY2QyOTUzNTY3NmIyNDA4ZjJjOTE0ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEu
aD4KIAogY2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6
Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKElXZWJEYXRhU291cmNlKiB3
ZWJEYXRhU291cmNlKSA6IG1fd2ViRGF0YVNvdXJjZSh3ZWJEYXRhU291cmNlKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKaW5kZXggNGE0OWI5NGJiYTU4ZDBjNTQ2MzMyOWMzZjZlZjIzZTg0ODhi
N2FmMy4uN2IyOTljZWUyNWVjZDEwYmJhNjIxYzg1ODFiMDZhZTA2YzVhMWQxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4Rmls
ZVBhdGhzTGlzdFNpemUgPSBVU0hSVF9NQVg7CiBXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNs
aWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCi0gICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShzdGQ6Om1h
a2VfdW5pcXVlPFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZpZXcpKQorICAg
ICwgbV9ub3RpZmljYXRpb25zRGVsZWdhdGUobWFrZVVuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlPih3ZWJWaWV3KSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRl
eCA0MWQ1ZjA2YWVhY2I3ZTE0MTdkNGI3MDI0MDA2MGJiZTU3ZjY5MzBmLi43ODc1NDMyNTNkNWRm
ZjRlYzY2OGViZTg4ZjA4ODVkMGJhZGI2NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzgsNiAr
MzgsNyBAQCBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOwogaW50ZXJmYWNl
IElXZWJVSURlbGVnYXRlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaAppbmRleCBjOWRlNDliM2NkMTQ1NTE3MjhmYjJmOWQ5NmVmNDkwZTk5MTU4YmQ0Li5m
NDhlZTczMGVlZjcxOTc5ZTRkOGQyYzMyN2VkMWJhMTdiOTRmZmE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdl
YkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVu
dUNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBiNTk4OTMzMjkxMDA5ZTI4NTFl
ZDc1NDE1ZWM0YWEwZmU0MDNkNjExLi40NWUzY2E3Mjc1M2FkMWFjMTE1M2JlOTYxOTNmNmVkNjIx
ZmY4OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiBjbGFzcyBXZWJWaWV3Owog
CiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2Vi
VmlldyopOwogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAppbmRleCBkYjYzNTJkNjM4MTZmN2M5YWVlZTlmNzQ0ZTQ4ZTM4MWU4NTZkMmI1
Li42OWQ3ZWQzZTBhYTMxZjEzYmVhNjRjZjBjMjc2NWUyNTRmYmY4ZTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBXZWJF
ZGl0b3JVbmRvVGFyZ2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRvckNs
aWVudChXZWJWaWV3Kik7CiAgICAgfldlYkVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDhlMzU0YjcxY2RmZDJhNWY5YjhiMDExYTAzMjlkNzQyNGJjOTBi
YmMuLjc3MWY4ZWE2ZjcxNjgwOWNkZmFkZDdlMzhjNjBkYzdhMDNlMDFmYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBjbGFzcyBXZWJGcmFtZUxv
YWRlckNsaWVudDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUgewogfTsKIAogV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiB3ZWJGcmFtZSkK
LSAgICA6IG1fcG9saWN5TGlzdGVuZXJQcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByaXZhdGU+KCkpCisgICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZSht
YWtlVW5pcXVlPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQogICAgICwgbV93ZWJG
cmFtZSh3ZWJGcmFtZSkKICAgICAsIG1fbWFudWFsTG9hZGVyKDApCiAgICAgLCBtX2hhc1NlbnRS
ZXNwb25zZVRvUGx1Z2luKGZhbHNlKSAKQEAgLTk3Myw3ICs5NzMsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSog
Y2FjaGVkRnJhbQogCiAgICAgQVNTRVJUKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSA9PSBjYWNoZWRGcmFtZS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAKLSAgICBjYWNoZWRGcmFt
ZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRG
cmFtZVBsYXRmb3JtRGF0YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRh
U291cmNlKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CisgICAgY2Fj
aGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGE+KHN0YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0
YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkpOwogI2Vsc2UK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApp
bmRleCBlYjk3NThiZDQyMTA3ZDJmOWE4NTRlNGU2ODgxNjZhNmY1MTVmYjlmLi5iYmE5YzlmNDQ1
MzU4ZDdjZTNlYTAzZjg5NjY0MWJkNmU1ZTA0MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdl
b2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCmluZGV4IDc1Njk1OTBjMWIzY2YzODE2ZmM0MmEzNWJmM2Y2NmJmZDc4OTAyMjQuLmY4
MGFlMDQ4YjgyZGJkYjIzNDY1NDY4ZDkzM2M2MGE3MDk3MmM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2Vi
Vmlldy5nZXQoKSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRX
ZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJW
aWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5k
Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0
ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRl
bmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRp
bmdzKCkpOwogICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9u
dGVuZEhhbmRsZSA9IGZyb250ZW5kSHduZDsKICAgICByZXR1cm4gdGhpczsKQEAgLTE4NSw3ICsx
ODUsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KCkKICAgICBib29sIGNy
ZWF0aW5nSGlnaGxpZ2h0ID0gIW1faGlnaGxpZ2h0OwogCiAgICAgaWYgKGNyZWF0aW5nSGlnaGxp
Z2h0KQotICAgICAgICBtX2hpZ2hsaWdodCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViTm9kZUhpZ2hs
aWdodD4obV9pbnNwZWN0ZWRXZWJWaWV3KTsKKyAgICAgICAgbV9oaWdobGlnaHQgPSBtYWtlVW5p
cXVlPFdlYk5vZGVIaWdobGlnaHQ+KG1faW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBpZiAobV9o
aWdobGlnaHQtPmlzU2hvd2luZygpKQogICAgICAgICBtX2hpZ2hsaWdodC0+dXBkYXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oCmluZGV4IDk1YzlhZmE4NTAwMmE1NDMyNzBiN2NlNmIzODhjNzBk
NDg5MTg1MTguLmYyMGVhZWJkNjYxZjkxMmJhY2YyZDk5ZjQ0MDlkYmNkN2E5NzFlNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFdlYk5vZGVIaWdobGln
aHQ7CiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY4YzZiZDQ5MzljZjliMDQ4
OTU3YmM3NTAwYmQ4NTQ4YTAxZWUzYjIuLjE2MjdlYzVmYTI2YmY1OTAxZDA1OTNiNWExODM5Njk0
NzkyMTkwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMzQ3LDYgKzM0Nyw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpk
ZWxldGVBbGxJbmRleGVkRGF0YWJhc2VzKCkKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0
YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRGlkTW9kaWZ5T3JpZ2luRGF0YSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2VyKiBkYXRhYmFzZU1hbmFnZXIsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggMjdhZjFiYWU2NTNlZmYwMmY2NzA0
ZjdlMzlhZDBlMWFjNTBhZDcwYi4uOGFmYmEwZjZkNTNhZmQ1NTU4NDVjMTk1MzZjMmE5YzFlYzVm
MzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3Bl
cnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVy
dHlCYWcuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAv
LyBXZWJFbGVtZW50UHJvcGVydHlCYWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5
QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKLSAgICA6IG1fcmVzdWx0KHN0ZDo6bWFr
ZV91bmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKKyAgICA6IG1fcmVzdWx0KG1ha2VVbmlx
dWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggYTgxYzAwZTU2YzVkZTJhZWJj
MTJhYjhiNmRiMTFiYzkzNGViYmJkYS4uZmI4OGUzOWU3YjU2YWMzMmRjZjVjZjUwMTFjMzU0ODE3
MWE2YzNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlv
bmFyeVJlcHJlc2VudGF0aW9uKF9Jbl9vcHRfIHZvaWQqIGRpY3Rpb25hCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxTdHJpbmc+PiByZWRpcmVjdFVSTHNWZWN0b3I7CiAgICAgaWYgKENGQXJy
YXlSZWYgcmVkaXJlY3RVUkxzUmVmID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoZGljdGlvbmFyeVJlZiwgcmVkaXJlY3RVUkxzS2V5KSkpIHsKICAgICAgICAg
Q0ZJbmRleCBzaXplID0gQ0ZBcnJheUdldENvdW50KHJlZGlyZWN0VVJMc1JlZik7Ci0gICAgICAg
IHJlZGlyZWN0VVJMc1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KHNp
emUpOworICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJp
bmc+PihzaXplKTsKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQog
ICAgICAgICAgICAgKCpyZWRpcmVjdFVSTHNWZWN0b3IpW2ldID0gU3RyaW5nKHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlZGlyZWN0VVJMc1JlZiwgaSkp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAppbmRleCAyZjFm
MmY0ODA3ZWI5YzRmZTcwODM1ZGI3OGUzNGEzNGJjZmYzNmQwLi5kNjVkZTE5ZWU5OWM0NTE0NDVk
ZmJmMWIxMzU5ZGMyYThiYTM4Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJl
ci5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RDNEUG9zdFByb2Nlc3Np
bmdDb250ZXh0PiBDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2luZwogICAgIG1l
bWNweShvdmVybGF5UXVhZEJ1ZmZlciwgb3ZlcmxheVF1YWRWZXJ0aWNlcywgc2l6ZW9mKG92ZXJs
YXlRdWFkVmVydGljZXMpKTsKICAgICBvdmVybGF5UXVhZC0+VW5sb2NrKCk7CiAKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4dHVy
ZSwgb3ZlcmxheVF1YWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5n
Q29udGV4dD4oc2NlbmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CiB9CiAKIC8vIEZJWE1FOiA8cmRh
cjovLzY1MDc4NTE+IFNoYXJlIHRoaXMgY29kZSB3aXRoIENvcmVBbmltYXRpb24ncwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXgg
N2JkOTg4OTYxMTFjM2IzZmU2ZmU1NGYwYTI0Nzk2NjA2YjIyYTc1Zi4uYjIwYmFjZDYyOWViNWFj
MGQyNzIwNDJkODc4YjE2MGU4NDVhYzFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0cnVjdCBX
ZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlIHsKIElXZWJOb3RpZmljYXRpb25DZW50ZXIqIFdl
Yk5vdGlmaWNhdGlvbkNlbnRlcjo6bV9kZWZhdWx0Q2VudGVyID0gMDsKIAogV2ViTm90aWZpY2F0
aW9uQ2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIoKQotICAgIDogZChzdGQ6Om1ha2VfdW5p
cXVlPFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCisgICAgOiBkKG1ha2VVbmlxdWU8
V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwog
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDk3NjE0OGUzM2Y3NDQ2ZDdjMzg0OTk1OWQ2
Y2Y3M2RlZjQ4ZjY3ZmYuLjkyZDM5YWM0YmM1YTA1ZWVjMTRkZDFlYWI0MDk1MTZmNDQ0NjRkOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xODgwLDcgKzE4ODAsNyBAQCBi
b29sIFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFt
LCBMUEFSQU0gbFBhcmFtKQogICAgICAgICBtb3VzZUV2ZW50LnNldENsaWNrQ291bnQoZ2xvYmFs
Q2xpY2tDb3VudCk7CiAgICAgICAgIGhhbmRsZWQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50
SGFuZGxlcigpLm1vdXNlTW92ZWQobW91c2VFdmVudCk7CiAgICAgICAgIGlmICghbV9tb3VzZU91
dFRyYWNrZXIpIHsKLSAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUUkFDS01PVVNFRVZFTlQ+KCk7CisgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9
IG1ha2VVbmlxdWU8VFJBQ0tNT1VTRUVWRU5UPigpOwogICAgICAgICAgICAgbV9tb3VzZU91dFRy
YWNrZXItPmNiU2l6ZSA9IHNpemVvZihUUkFDS01PVVNFRVZFTlQpOwogICAgICAgICAgICAgbV9t
b3VzZU91dFRyYWNrZXItPmR3RmxhZ3MgPSBUTUVfTEVBVkU7CiAgICAgICAgICAgICBtX21vdXNl
T3V0VHJhY2tlci0+aHduZFRyYWNrID0gbV92aWV3V2luZG93OwpAQCAtNjc5NCw3ICs2Nzk0LDcg
QEAgSFJFU1VMVCBXZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmlld01JTUVUeXBlKF9Jbl8gQlNU
UiBtaW1lVHlwZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIGlmICghbV9lbWJl
ZGRlZFZpZXdNSU1FVHlwZXMpCi0gICAgICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzID0gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAgIG1fZW1iZWRkZWRWaWV3
TUlNRVR5cGVzID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAKICAgICBtX2VtYmVk
ZGVkVmlld01JTUVUeXBlcy0+YWRkKHRvU3RyaW5nKG1pbWVUeXBlKSk7CiAgICAgcmV0dXJuIFNf
T0s7CkBAIC02ODk0LDcgKzY4OTQsNyBAQCB2b2lkIFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2Ny
ZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudAogICAgICAg
ICBBU1NFUlQoIW1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlcik7CiAgICAgfQogCi0gICAgbV9m
dWxsU2NyZWVuVmlkZW9Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyPigpOworICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IG1ha2VV
bmlxdWU8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcj4oKTsKICAgICBtX2Z1bGxTY3JlZW5WaWRl
b0NvbnRyb2xsZXItPnNldFZpZGVvRWxlbWVudCgmdmlkZW9FbGVtZW50KTsKICAgICBtX2Z1bGxT
Y3JlZW5WaWRlb0NvbnRyb2xsZXItPmVudGVyRnVsbHNjcmVlbigpOwogI2VuZGlmCkBAIC02OTQ2
LDcgKzY5NDYsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8g
QlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxX
ZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7Ci0gICAgYXV0byB1c2VyU2NyaXB0ID0gc3RkOjptYWtl
X3VuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdo
aXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLAorICAgIGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlx
dWU8VXNlclNjcmlwdD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxp
c3QsIHdoaXRlbGlzdENvdW50KSwKICAgICAgICAgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBi
bGFja2xpc3RDb3VudCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0
ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwKICAgICAgICAg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1l
cyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29u
dHJvbGxlcigpLmFkZFVzZXJTY3JpcHQod29ybGQtPndvcmxkKCksIFdURk1vdmUodXNlclNjcmlw
dCkpOwpAQCAtNjk3Myw3ICs2OTczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU3R5bGVT
aGVldFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8gc3R5bGVTaGVl
dCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwodXJsKSwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVjdG9y
KGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLAorICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VV
bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Io
d2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxh
Y2tsaXN0Q291bnQpLAogICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZy
YW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHls
ZVVzZXJMZXZlbCk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRV
c2VyU3R5bGVTaGVldCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0
SW5FeGlzdGluZ0RvY3VtZW50cyk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC03MjM3LDcgKzcyMzcs
NyBAQCB2b2lkIFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBhY2NlbGVy
YXRlZCkKICAgICB9CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgaWYgKGFjY2Vs
ZXJhdGVkICYmICFtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQotICAgICAgICBtX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dD4oKnRoaXMpOworICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4o
KnRoaXMpOwogICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gYWNjZWxlcmF0ZWQ7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmgKaW5kZXggZWVjYTczOWQyYjM5NGU4NjAz
NTFiYTFiNDY0ZGU1NDc4YjliYjE2Ny4uZGIzNmViOWRlZDJiOWUwZjVmNmVmNDBkYjZjNjk5MTlh
NzMwNmQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVi
bGljOiBcCiAgICAgXAogICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRl
bGV0ZTsgXAogICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgPSBkZWxldGU7IFwK
K3R5cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVm
IGludCBfX21ha2VCaXNvTWFsbG9jZWRNYWNyb1NlbWljb2xvbmlmaWVyCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvSGVhcElubGluZXMuaAppbmRleCBjMDQ0ZDc3M2I4NzlhNjZkZmFkZDJlMmNh
MzE1ZWVlYTM3NmZmYTRhLi4zYWExZDIwOTUxZGJmMzM2NGU3ZDE2ZGQyMzY0M2QwY2Q5N2Y2ZjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oCkBAIC0xMjMsNiArMTIz
LDcgQEAgcHVibGljOiBcCiAgICAgXAogICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBz
aXplKSA9IGRlbGV0ZTsgXAogICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgPSBk
ZWxldGU7IFwKK3R5cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBc
CiB0eXBlZGVmIGludCBfX21ha2VCaXNvTWFsbG9jZWRJbmxpbmVNYWNyb1NlbWljb2xvbmlmaWVy
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2
MmZmM2VlYjJkNzBjMDk4MDExNGRjMTg3YzcwZjk4MDNmMWNlOTA4Li4wYmE3NTllNDZmZTQxYzI4
YTI5YzViNGNmMWFlNGFmOGYyNmVjM2YyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDE5LTA4LTEzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayk6CisgICAgICAgIChz
ZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
cnVuVUlTY3JpcHQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAg
KGR1bXBGcmFtZXNBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNl
bmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dp
enpsZXJGb3JWaWV3QW5kRXZlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EUlRE
YXRhT2JqZWN0LmNwcDoKKyAgICAgICAgKERSVERhdGFPYmplY3Q6OlNldERhdGEpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChG
cmFtZUxvYWREZWxlZ2F0ZTo6RnJhbWVMb2FkRGVsZWdhdGUpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKERSVFVuZG9NYW5hZ2VyOjpEUlRV
bmRvTWFuYWdlcik6CisgICAgICAgIChVSURlbGVnYXRlOjpVSURlbGVnYXRlKToKKyAgICAgICAg
KFVJRGVsZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dw
ZS9tYWluLmNwcDoKKyAgICAgICAgKGNyZWF0ZVZpZXdCYWNrZW5kKToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29u
dGV4dC5oOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6
emxlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ291bnRlcnMuaDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnJ1bkpTVGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9FeHBlY3RlZC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoTWFwLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdE1vdmluZ1VzaW5nRW5zdXJlKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnRlc3RNb3ZpbmdVc2luZ0FkZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaFNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Mb2NrLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkxvY2tUZXN0KToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNBUmluZ0J1ZmZlclRlc3Q6OlNldFVwKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVUZXN0VmFsdWUpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3Jl
YXRlUGFnZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRlc3Q6OlNl
dFVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyV2lsbExvYWRUZXN0OjpTZXRVcCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJh
bmNlSW5CdW5kbGVfQnVuZGxlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Rm9yY2VMaWdo
dEFwcGVhcmFuY2VJbkJ1bmRsZVRlc3Q6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcDoKKyAg
ICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRp
b25Qcm94eUhUVFBTKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
V2ViUHJvY2Vzc1Rlc3QuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9ET01ET01XaW5kb3dUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6
OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGll
c0NvY29hLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKGFwcGx5
V29ya2Fyb3VuZFRvQWxsb3dXcml0aW5nQXR0cmlidXRlZFN0cmluZ3NUb0l0ZW1Qcm92aWRlcnMp
OgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjph
ZGRUb1dpbmRvdzpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJLaXRUZXN0U2VydmVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRP
cHRpb25zLm1tOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgaW5pdFdpdGhGb250T3B0aW9u
czpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0
T3BlblBhbmVsRmlsZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9T
dHJpbmdGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdUUjo6dG9TVEQpOgorICAgICAgICAoV1RSOjp0
b1dURlN0cmluZyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6Cisg
ICAgICAgIChXVFI6OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cnVuVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0
ZVdlYlZpZXcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnNldERlZmF1bHRDYWxlbmRhclR5cGUpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RSOjpnZXRH
REtLZXlTeW1Gb3JLZXlSZWYpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RD
b250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1S
ZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmllcik6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5k
ZXJQcm94eTo6bW91c2VEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91
c2VVcCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcDoKKyAg
ICAgICAgKFdUUjo6d3BlS2V5U3ltRm9yS2V5UmVmKToKKwogMjAxOS0wOC0xMiAgVGFrYXNoaSBL
b21vcmkgIDxUYWthc2hpLktvbW9yaUBzb255LmNvbT4KIAogICAgICAgICBbV1RGXSBUaHJlYWQ6
OnJlbW92ZUZyb21UaHJlYWRHcm91cCBsZWFrcyB3ZWFrIHBvaW50ZXJzLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmNwcAppbmRleCBlODE3YTU3M2E1OGQxNTlkNGNmMjM0OTgyY2NhMDRkY2Q2
NGI2MDRhLi44ZjEzZWUwMDNhM2RlMGEwZDk0ODYxMTkxMzIyZjM0ZjhhZGVlZDI0IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMzYzLDExICszNjMsMTEgQEAgc3RhdGljIEpT
VmFsdWVSZWYgYWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW4KICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IG1h
eExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShvcmlnaW4uZ2V0KCkp
OwotICAgIGF1dG8gb3JpZ2luQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExl
bmd0aCArIDEpOworICAgIGF1dG8gb3JpZ2luQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhD
U3RyaW5nKG9yaWdpbi5nZXQoKSwgb3JpZ2luQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsK
IAogICAgIG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShkZXN0
aW5hdGlvbi5nZXQoKSk7Ci0gICAgYXV0byBkZXN0aW5hdGlvbkJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAx
KTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGRlc3RpbmF0aW9uLmdldCgpLCBkZXN0aW5h
dGlvbkJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250
cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7CkBAIC0xMzA0LDcgKzEzMDQsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRXaWxs
U2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKUwog
ICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJp
bmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGhlYWRlci5nZXQoKSk7Ci0gICAgYXV0byBoZWFk
ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAg
YXV0byBoZWFkZXJCdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFy
W10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaGVhZGVyLmdl
dCgpLCBoZWFkZXJCdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgVGVzdFJ1bm5l
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOwpAQCAtMjM3OSw3ICsyMzc5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkKIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChKU1N0cmluZ1JlZiBj
aGFubmVsKQogewogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4
Q1N0cmluZ1NpemUoY2hhbm5lbCk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5n
R2V0VVRGOENTdHJpbmcoY2hhbm5lbCwgYnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAog
ICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZSh7IGJ1ZmZl
ci5nZXQoKSB9KTsKQEAgLTI0NDksNyArMjQ0OSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cnVuVUlT
Y3JpcHQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHNjcmlwdCwgSlNWYWx1ZVJl
CiAgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soY2FsbGJhY2tJRCwgY2FsbGJhY2spOwogCiAg
ICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdUUjo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1f
VUlTY3JpcHRDb250ZXh0ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V1RSOjpV
SVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKIAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcoSlNTdHJp
bmdHZXRDaGFyYWN0ZXJzUHRyKHNjcmlwdCksIEpTU3RyaW5nR2V0TGVuZ3RoKHNjcmlwdCkpOwog
ICAgIG1fVUlTY3JpcHRDb250ZXh0LT5ydW5VSVNjcmlwdChzY3JpcHRTdHJpbmcsIGNhbGxiYWNr
SUQpOwpAQCAtMjUwNiw3ICsyNTA2LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxG
aWxlcyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAg
ICAgIGF1dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZh
bHVlLCBudWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5n
R2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8g
ZmlsZUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7Cisg
ICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5n
KGZpbGUuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCksIGZpbGVCdWZmZXJTaXplKTsKIAogICAgICAg
ICBtX29wZW5QYW5lbEZpbGVzLnB1c2hfYmFjayhmaWxlQnVmZmVyLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA2NGRiMWQxN2Y5YmM5Y2I4
Y2U2ZDgyZjliNzdkYmYzODc1YWNhMGNhLi45NTdjNGU2Mzk1OTExODYzNWQ3MjIxNWUwY2FjN2Ni
NmZkNzIwY2RmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CkBAIC0xNTM1LDcgKzE1MzUsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQo
V2ViRnJhbWUgKmZyYW1lKQogICAgIC8vIHRoZSByZXN1bHQgd2l0aG91dCBhbnkgY29udmVyc2lv
bi4KICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nUmVmID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpaW5uZXJUZXh0KSk7
CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1Np
emUoc3RyaW5nUmVmLmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xl
bmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25TdHJpY3Qoc3RyaW5nUmVmLmdldCgpLCBi
dWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiJUBc
biIsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJp
bmdMZW5ndGggLSAxKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXTsKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCA0NjFiZDNk
ZjNlYmIyNjAzYWMzMjE4Mjg4MjE4ZGQ4ZjY5MTY4ZmZkLi4zYmUzMzIyMWQ2YjNlYmMzNTZkNTFl
MzM0YTI0ZDkyOWFlMjUzYTllIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8Q2xhc3NNZXRob2RTd2l6emxlcj4gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
U3dpenpsZXJGb3JWCiB7CiAgICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3
IGNsYXNzXV0pCiAgICAgICAgIHZpZXcgPSBbKFdlYkhUTUxWaWV3ICopdmlldyBfaGl0Vmlld0Zv
ckV2ZW50OmV2ZW50XTsKLSAgICByZXR1cm4gIVt2aWV3IGlzS2luZE9mQ2xhc3M6W05TU2Nyb2xs
ZXIgY2xhc3NdXSA/IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZl
bnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpIDogTlVMTDsKKyAgICBy
ZXR1cm4gIVt2aWV3IGlzS2luZE9mQ2xhc3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IG1ha2VVbmlx
dWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3Nl
ZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3Nl
ZE1vdXNlQnV0dG9ucykpIDogTlVMTDsKIH0KIAogc3RhdGljIE5TVUludGVnZXIgc3dpenpsZWRF
dmVudFByZXNzZWRNb3VzZUJ1dHRvbnMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0RSVERhdGFPYmplY3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERh
dGFPYmplY3QuY3BwCmluZGV4IGVmMmQyZWZiODU5ZjRiOGEyMmYzMGM0NjdhY2UxZjhhYWQxNTdh
NGQuLjc2YTIxYTU4YTlmNjZkZGUxNjA3MjlmOGZlZTFlMTVmOTQ5ZTY2MjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBT
VERNRVRIT0RJTVAgRFJURGF0YU9iamVjdDo6U2V0RGF0YShfSW5fIEZPUk1BVEVUQyogcGZvcm1h
dGV0YywgX0luXyBTVEdNRURJVU0qCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0byBmb3JtYXRldGMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZPUk1BVEVUQz4oKTsKKyAgICBhdXRvIGZvcm1hdGV0YyA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1BVEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAg
ICAgWmVyb01lbW9yeShmb3JtYXRldGMuZ2V0KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCmluZGV4IGM4MGRm
MWJlNWYyZGU0N2QzYjgzMTYzN2VmNmU5ZmJjZDkzNGM4ZTYuLjExYzkzMzliMTZkODA0ZDJjMjAx
YzkzMjlmNGE4YzM1NDQyYTgzY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Zy
YW1lTG9hZERlbGVnYXRlLmNwcApAQCAtNzIsOSArNzIsOSBAQCBzdHJpbmcgZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQoSVdlYkZyYW1lKiB3ZWJGcmFtZSkKIH0KIAogRnJhbWVMb2Fk
RGVsZWdhdGU6OkZyYW1lTG9hZERlbGVnYXRlKCkKLSAgICA6IG1fZ2NDb250cm9sbGVyKHN0ZDo6
bWFrZV91bmlxdWU8R0NDb250cm9sbGVyPigpKQotICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPigpKQotICAgICwg
bV90ZXh0SW5wdXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dElucHV0Q29udHJvbGxl
cj4oKSkKKyAgICA6IG1fZ2NDb250cm9sbGVyKG1ha2VVbmlxdWU8R0NDb250cm9sbGVyPigpKQor
ICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihtYWtlVW5pcXVlPEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyPigpKQorICAgICwgbV90ZXh0SW5wdXRDb250cm9sbGVyKG1ha2VVbmlxdWU8VGV4
dElucHV0Q29udHJvbGxlcj4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1VJRGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVs
ZWdhdGUuY3BwCmluZGV4IGYwYWRiY2U0Nzk2ZmFiZjRmMGQ0MmIyNzExNjMzNzAxYWM3ODEzMTQu
LjQ3YWEyNzJiZjE5NWNkOWEyNWFmMjg2NTVkMzcxZjQxNjAwZjQ1OTggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKQEAgLTEwMSw4ICsxMDEsOCBAQCBjbGFzcyBEUlRV
bmRvTWFuYWdlciB7CiB9OwogCiBEUlRVbmRvTWFuYWdlcjo6RFJUVW5kb01hbmFnZXIoKQotICAg
IDogbV9yZWRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCi0gICAgLCBt
X3VuZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKKyAgICA6IG1fcmVk
b1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigpKQorICAgICwgbV91bmRvU3RhY2sobWFr
ZVVuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCiB7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IERSVFVuZG9NYW5hZ2VyOjp1bmRvKCkKIH0KIAogVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCi0g
ICAgOiBtX3VuZG9NYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb01hbmFnZXI+KCkpCisg
ICAgOiBtX3VuZG9NYW5hZ2VyKG1ha2VVbmlxdWU8RFJUVW5kb01hbmFnZXI+KCkpCiAgICAgLCBt
X2Rlc2t0b3BOb3RpZmljYXRpb25zKG5ldyBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVy
KQogewogICAgIG1fZnJhbWUuYm90dG9tID0gMDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBVSURlbGVn
YXRlOjpVSURlbGVnYXRlKCkKIAogdm9pZCBVSURlbGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKCkK
IHsKLSAgICBtX3VuZG9NYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4o
KTsKKyAgICBtX3VuZG9NYW5hZ2VyID0gbWFrZVVuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKIH0K
IAogSFJFU1VMVCBVSURlbGVnYXRlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAppbmRleCBi
ZTY0NjBlNTZiN2I3MGNkMjQ4MGZjODdkZTJiOWJhOTcwZTU4YzM4Li40MzkxOTI5NzkxZGQ2NzEz
MWM4NThhMTY2ODljNTJiYWRjMWRkODYyIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCkBAIC0xMjks
OCArMTI5LDggQEAgc3RhdGljIGdib29sZWFuIGRlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktp
dFdlYlZpZXcgKiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8V1BFVG9vbGluZ0JhY2tlbmRzOjpWaWV3QmFja2VuZD4gY3JlYXRlVmlld0JhY2tlbmQodWlu
dDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKIHsKICAgICBpZiAoaGVhZGxlc3NNb2RlKQot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OkhlYWRs
ZXNzVmlld0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6V2luZG93Vmlld0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNz
Vmlld0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdQRVRv
b2xpbmdCYWNrZW5kczo6V2luZG93Vmlld0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQpOwogfQogCiB0
eXBlZGVmIHN0cnVjdCB7CkBAIC0yNTEsNyArMjUxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIgKmFyZ3ZbXSkKICAgICAgICAgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X3VucmVmKHNldHRp
bmdzKTsKIAotICAgIGJhY2tlbmRQdHItPnNldElucHV0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
SW5wdXRDbGllbnQ+KGxvb3AsIHdlYlZpZXcpKTsKKyAgICBiYWNrZW5kUHRyLT5zZXRJbnB1dENs
aWVudChtYWtlVW5pcXVlPElucHV0Q2xpZW50Pihsb29wLCB3ZWJWaWV3KSk7CiAjaWYgZGVmaW5l
ZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQogICAgIGF1dG8qIGFj
Y2Vzc2libGUgPSB3cGVfdmlld19iYWNrZW5kX2Rpc3BhdGNoX2dldF9hY2Nlc3NpYmxlKHdwZUJh
Y2tlbmQpOwogICAgIGlmIChBVEtfSVNfT0JKRUNUKGFjY2Vzc2libGUpKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0Lmgg
Yi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQu
aAppbmRleCA0ZTAyMGYxOTZjZDAzM2Q2MWVlMGU2MjhmNmExZTU5Y2ExYzMzNDU4Li4wYjg0ZDJk
NDU0NTU4M2RlOWZjMGRlYzEyYTRhYTg4YTY1OWVkMTk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaAorKysgYi9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaApAQCAt
NjgsNiArNjgsNyBAQCB0eXBlZGVmIGVudW0gIHsKIH0gQ2FsbGJhY2tUeXBlOwogCiBjbGFzcyBV
SVNjcmlwdENvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFVJU2NyaXB0Q29udGV4dCk7CiBwdWJsaWM6CiAgICAgVUlTY3JpcHRD
b250ZXh0KFVJU2NyaXB0Q29udGV4dERlbGVnYXRlJik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oCmluZGV4IDI4ZGIxMGE0Nzk5NjMw
YzY0YzU1ZDA3ODZjMDBlZTA5NDg5MTQ1ZTIuLjM5YjRlNWVhNzE4MzY4OGNkZWM5YmVmY2M5NjRj
ZTg5M2E1NDNmMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xh
c3NNZXRob2RTd2l6emxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xh
c3NNZXRob2RTd2l6emxlci5oCkBAIC0yNiw5ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBjbGFzcyBDbGFzc01ldGhvZFN3aXp6bGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
bGFzc01ldGhvZFN3aXp6bGVyKTsKIHB1YmxpYzoKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyKENs
YXNzLCBTRUwsIElNUCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJz
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgKaW5kZXggZjllYTIyNDAyNjE1MGQ4
ZTFhYzZiYjc2MTViNmRlMzg5MGFmNjcwZS4uYWI1YzUyZjc1ZDFhYzZhZjk2MGFjMTRjYTcwYjVj
Yjc0ZmEzNjI4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaApAQCAtMjcsNiArMjcsOCBAQAogI2lm
bmRlZiBDb3VudGVyc19oCiAjZGVmaW5lIENvdW50ZXJzX2gKIAorI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CisKIHN0cnVjdCBDb3B5TW92ZUNvdW50ZXIgewogICAgIHN0YXRpYyB1bnNpZ25l
ZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29weUNvdW50OwpAQCAt
NTAsNiArNTIsNyBAQCBzdHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsKIAogCiBzdHJ1Y3QgQ29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIHN0YXRpYyB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0aWMg
dW5zaWduZWQgZGVzdHJ1Y3Rpb25Db3VudDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRU
ZXN0LmNwcAppbmRleCAyMTM2ZTk4ZDhlYmI4NzVkNTk3ZmM2ZTA3YzdiMDFlZDViODRhZTE2Li42
YTIzMzYzMjk0MWFjZjYwNzA1OTQ5NDI2NDAxYjMyNzMzN2M3MDgxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0phdmFTY3JpcHRUZXN0LmNwcApAQCAtNzUsNyArNzUsNyBAQCA6OnRlc3Rpbmc6OkFzc2Vy
dGlvblJlc3VsdCBydW5KU1Rlc3QoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFy
KiwgV0tQYQogICAgIFV0aWw6OnJ1bigmY29udGV4dC5kaWRGaW5pc2gpOwogCiAgICAgc2l6ZV90
IGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY29udGV4dC5h
Y3R1YWxTdHJpbmcuZ2V0KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxj
aGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBKU1N0cmluZ0dldFVURjhD
U3RyaW5nKGNvbnRleHQuYWN0dWFsU3RyaW5nLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNp
emUpOwogICAgIAogICAgIHJldHVybiBjb21wYXJlSlNSZXN1bHQoc2NyaXB0LCBidWZmZXIuZ2V0
KCksIGV4cGVjdGVkUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1VdGlsaXRpZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGll
cy5jcHAKaW5kZXggOGY4ZDc2OGE1M2MyNzUxYTI0M2UwNTk1ZTJjMGMwZjQ0NWRkOTZjOC4uYmJi
ZmY3MDllNjdkMzU5YjRlNDgxNzFlZDdjNGMyNDAwOGE1NjdmNCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgV0tDb250ZXh0UmVm
IGNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRl
c3ROYW1lLCBXS1QKIHN0ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShz
dHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZl
clNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJp
bmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAg
cmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCBhZDJhNzMyZDUxOTQ3YmJjN2Fm
YzY0ZTI3ZDQyMTVjZTMyODdkZGVlLi4wYzI3YTQ2MTY0NWZiYTEyYTVjNjk1ZDkzMjY0MzA1MjZj
NGVmMTI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5o
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2LDYgKzI2
LDggQEAKICNpZm5kZWYgUGxhdGZvcm1XZWJWaWV3X2gKICNkZWZpbmUgUGxhdGZvcm1XZWJWaWV3
X2gKIAorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKICNpZiBVU0UoQ0cpCiAjaW5jbHVk
ZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KICNlbmRpZgpAQCAtNjMsNiArNjUsNyBAQCB0
eXBlZGVmIHVpbnQzMl90IFdLRXZlbnRNb2RpZmllcnM7CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKIGNsYXNzIFBsYXRmb3JtV2ViVmlldyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZpZ3Vy
YXRpb25SZWYpOwogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdL
UGFnZUdyb3VwUmVmID0gMCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9FeHBlY3RlZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3Rl
ZC5jcHAKaW5kZXggNGIxMGM4NmEyYWI3MzJlMWVhNjI3NDg0Y2M3ODk0MGZiNmNkNmU5Ni4uMmEw
NmY4YmE1Y2E5ZmViNDkyYTM1MjJjNWM2NTUwMTM4ZDIyMzdlNSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcApAQCAtNDA3LDYgKzQwNyw3IEBAIFRFU1QoV1RG
X0V4cGVjdGVkLCBkZXN0cnVjdG9ycykKIHN0YXRpYyBpbnQgc25vd2ZsYWtlcyA9IDA7CiBzdGF0
aWMgaW50IG1lbHRlZCA9IDA7CiBzdHJ1Y3Qgc25vd2ZsYWtlIHsKKyAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc3RhdGljIHZvaWQgcmVzZXQoKSB7IHNub3dmbGFrZXMg
PSBtZWx0ZWQgPSAwOyB9CiAgICAgc25vd2ZsYWtlKCkgeyArK3Nub3dmbGFrZXM7IH0KICAgICB+
c25vd2ZsYWtlKCkgeyArK21lbHRlZDsgfQpAQCAtNDE2LDcgKzQxNyw3IEBAIFRFU1QoV1RGX0V4
cGVjdGVkLCB1bmlxdWVfcHRyKQogewogICAgIC8vIFVuaXF1ZSBzbm93Zmxha2VzIGNhbm5vdCBi
ZSBjb3BpZWQuCiAgICAgewotICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1h
a2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVk
KG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMs
IDEpOwogICAgICAgICBFWFBFQ1RfRVEobWVsdGVkLCAwKTsKICAgICB9CkBAIC00MjUsNyArNDI2
LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpyZXNl
dCgpOwogCiAgICAgewotICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2Vf
dW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1h
a2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAgVW5leHBlY3RlZDxzdGQ6OnVuaXF1ZV9w
dHI8c25vd2ZsYWtlPj4gYyhXVEZNb3ZlKHMpKTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFr
ZXMsIDEpOwogICAgICAgICBFWFBFQ1RfRVEobWVsdGVkLCAwKTsKQEAgLTQ0Niw3ICs0NDcsNyBA
QCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICB9OwogCiAgICAgewotICAgICAg
ICBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPiwgaW50PiBzKHN0ZDo6bWFrZV91
bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNu
b3dmbGFrZT4sIGludD4gcyhtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIHBsb3co
V1RGTW92ZShzKS52YWx1ZSgpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEp
OwpAQCAtNDU0LDcgKzQ1NSw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAg
IHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8aW50LCBzdGQ6
OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVl
PHNub3dmbGFrZT4oKSkpOworICAgICAgICBFeHBlY3RlZDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxz
bm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAg
ICAgICAgIHBsb3coV1RGTW92ZShzKS5lcnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNu
b3dmbGFrZXMsIDEpOwpAQCAtNDYyLDcgKzQ2Myw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlx
dWVfcHRyKQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0
ZWQ8dm9pZCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQoc3Rk
OjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgc3Rk
Ojp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93
Zmxha2U+KCkpKTsKICAgICAgICAgcGxvdyhXVEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAg
ICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKaW5kZXggODRkYTVlYzNmZmMyNDhhY2RkOWUzNjMz
MDM4YzY5ZGFlODkxMjA5OS4uN2I4ZmFmMjg4YWJjMDdjZmFmOGI1MjcxMjM4Zjc2ZDAxMzAxMmVl
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRT
ZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0
LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQ
dHJLZXkpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAg
YXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBF
WFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNv
dW50KTsKQEAgLTI1OSw3ICsyNTksNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVl
UHRyS2V5SW5pdGlhbENvdW50KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRy
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1
dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0
ciksIDEyKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIFRFU1QoV1RGX0hhc2hD
b3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNo
Q291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBh
dXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1
ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50
KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUo
dW5pcXVlUHRyKSk7CiAKQEAgLTMxMiw3ICszMTIsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNl
dCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3Vu
dGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0
ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpKTsKIApAQCAtMzIzLDcgKzMyMyw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBV
bmlxdWVQdHJLZXlfR2V0VXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1
ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsK
IApAQCAtMzM3LDcgKzMzNyw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJL
ZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlx
dWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAot
ICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIq
IHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1
bmlxdWVQdHIpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaE1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcApp
bmRleCAxZTE2M2QzODk5OGU2YmFiZmZmNTM4NDEzY2NhMjhhYTZkMjk4OTgyLi5hODBjYTc0OTRh
OGY5YTc5NjdlMWU0OTQ2ZmU4Y2NhNjM5Y2JiNThiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9IYXNoTWFwLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAs
IFVuaXF1ZVB0cktleSkKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8g
dW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwog
ICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIAogICAgIEVYUEVDVF9FUSgxdSwg
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjMw
LDcgKzIzMCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQ
b2ludGVyKQogewogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0
byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwog
ICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpLCAyKTsKIApAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1
ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsK
ICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI1NSw3ICsyNTUsNyBA
QCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfR2V0VXNpbmdSYXdQb2ludGVyKQogewog
ICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRy
ID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsK
IApAQCAtMjY5LDcgKzI2OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9SZW1v
dmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBh
dXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0
KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yODksNyArMjg5
LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1BvaW50ZXIp
CiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1h
a2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChX
VEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC01NjMsMTIgKzU2MywxMiBAQCBURVNUKFdURl9I
YXNoTWFwLCBFbnN1cmVfVW5pcXVlUG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBz
dGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQ+PiBtYXA7CiAgICAgewotICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25l
ZD4oMSk7IH0pOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5lbnN1cmUoMSwgW10geyBy
ZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDEpOyB9KTsK
ICAgICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgx
dSwgKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEo
MXUsIGFkZFJlc3VsdC5pdGVyYXRvci0+a2V5KTsKICAgICAgICAgRVhQRUNUX1RSVUUoYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEs
IFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDIpOyB9KTsKKyAgICAgICAg
YXV0byBhZGRSZXN1bHQyID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZD4oMik7IH0pOwogICAgICAgICBFWFBFQ1RfRVEo
MXUsICptYXAuZ2V0KDEpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqYWRkUmVzdWx0Mi5pdGVy
YXRvci0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIGFkZFJlc3VsdDIuaXRl
cmF0b3ItPmtleSk7CkBAIC01OTAsNiArNTkwLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJl
X1JlZlB0cikKIH0KIAogY2xhc3MgT2JqZWN0V2l0aFJlZkxvZ2dlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgT2JqZWN0V2l0aFJlZkxvZ2dlcihSZWY8UmVm
TG9nZ2VyPiYmIGxvZ2dlcikKICAgICAgICAgOiBtX2xvZ2dlcihXVEZNb3ZlKGxvZ2dlcikpCkBA
IC02MDQsNyArNjA1LDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdFbnN1cmUoUmVmPFJlZkxvZ2dl
cj4mJiBsb2dnZXIpCiB7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9i
amVjdFdpdGhSZWZMb2dnZXI+PiBtYXA7CiAgICAgCi0gICAgbWFwLmVuc3VyZSgxLCBbJl0geyBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dl
cikpOyB9KTsKKyAgICBtYXAuZW5zdXJlKDEsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPE9iamVj
dFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7IH0pOwogfQogCiB2b2lkIHRlc3RNb3Zp
bmdVc2luZ0FkZChSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKQEAgLTYxMiw3ICs2MTMsNyBAQCB2
b2lkIHRlc3RNb3ZpbmdVc2luZ0FkZChSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKICAgICBIYXNo
TWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0V2l0aFJlZkxvZ2dlcj4+IG1hcDsK
IAogICAgIGF1dG8mIHNsb3QgPSBtYXAuYWRkKDEsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
LSAgICBzbG90ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3Zl
KGxvZ2dlcikpOworICAgIHNsb3QgPSBtYWtlVW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdU
Rk1vdmUobG9nZ2VyKSk7CiB9CiAKIFRFU1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9MYW1iZGFzQ2Fw
dHVyaW5nQnlSZWZlcmVuY2UpCkBAIC02ODMsNiArNjg0LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwg
VmFsdWVJc0Rlc3RydWN0ZWRPblJlbW92ZSkKIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFpl
cm9lZEJlZm9yZURlcmVmKQogewogICAgIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9p
ZCByZWYoKQogICAgICAgICB7CiAgICAgICAgICAgICArK2NvdW50OwpAQCAtNjk3LDcgKzY5OSw3
IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogICAgICAg
ICBjb25zdCBEZXJlZk9ic2VydmVyKiBvYnNlcnZlZEJ1Y2tldCB7IG51bGxwdHIgfTsKICAgICB9
OwogCi0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4o
KTsKKyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAg
ICAgSGFzaE1hcDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4sIGludD4gbWFwOwogICAgIG1hcC5hZGQo
YWRvcHRSZWYob2JzZXJ2ZXIuZ2V0KCkpLCA1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvSGFzaFNldC5jcHAKaW5kZXggNzFlY2ZkZGI4NDJiNmJkNTE2NDFjYTA1YjYxMDhhZDQ4ZjYy
YmI3ZC4uODcyNjhjNzRmMGNiOGZjMTQ5ZWJmNjBjODU4OGZjZWQzNTgxYTIwNSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBU
RVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVl
X3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNU
X0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7
CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRV
c2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0
OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAg
YXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUp
OwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1
bmlxdWVQdHIpKTsKIApAQCAtMTU4LDcgKzE1OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1
ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAg
c2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xNzEsNyArMTcxLDcgQEAgVEVTVChX
VEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhh
c2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0
cikpOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5
X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0
byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgp
OwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMjgzLDYgKzI4Myw3IEBA
IFRFU1QoV1RGX0hhc2hTZXQsIENvcHlDYXBhY2l0eUlzTm90T25Cb3VuZGFyeSkKIFRFU1QoV1RG
X0hhc2hTZXQsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogewogICAgIHN0cnVjdCBEZXJl
Zk9ic2VydmVyIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBORVZFUl9JTkxJTkUgdm9pZCByZWYoKQogICAgICAgICB7CiAgICAgICAgICAgICArK2Nv
dW50OwpAQCAtMjk3LDcgKzI5OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0ck5vdFplcm9l
ZEJlZm9yZURlcmVmKQogICAgICAgICBjb25zdCBEZXJlZk9ic2VydmVyKiBvYnNlcnZlZEJ1Y2tl
dCB7IG51bGxwdHIgfTsKICAgICB9OwogCi0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxE
ZXJlZk9ic2VydmVyPigpOwogCiAgICAgSGFzaFNldDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4+IHNl
dDsKICAgICBzZXQuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAKaW5kZXggNjU3YmU0MWQ2MjA3MjQ0
NjdhNTU0OWUyYWI1YTE5NDFjNGUzNzNjMS4uYjc3MGE1YjI3YzFkMmIwOTVhNWJiNTlkNjVhYzNm
NGRjNGU0ZTY4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlz
dEhhc2hTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNo
U2V0LmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQ
dHJLZXkpCiAKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBsaXN0
LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0zOTYsNyArMzk2LDcg
QEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVy
KQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAg
YXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlx
dWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGF1
dG8gcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRy
KSk7CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRy
S2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAg
IGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTQyMSw5ICs0MjEsOSBAQCBURVNU
KFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRl
cikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAg
IGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMik7CisgICAgYXV0
byB1bmlxdWVQdHJXaXRoMiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4o
Mik7CiAgICAgYXV0byBwdHJXaXRoMiA9IHVuaXF1ZVB0cldpdGgyLmdldCgpOwotICAgIGF1dG8g
dW5pcXVlUHRyV2l0aDQgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNCk7CisgICAgYXV0byB1bmlx
dWVQdHJXaXRoNCA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNCk7CiAg
ICAgYXV0byBwdHJXaXRoNCA9IHVuaXF1ZVB0cldpdGg0LmdldCgpOwogCiAgICAgbGlzdC5hZGQo
V1RGTW92ZSh1bmlxdWVQdHJXaXRoMikpOwpAQCAtNDM1LDcgKzQzNSw3IEBAIFRFU1QoV1RGX0xp
c3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfSW5zZXJ0QmVmb3JlVXNpbmdSYXdQb2ludGVyKQogICAg
IEFTU0VSVF9FUShwdHJXaXRoNCwgbGlzdC5sYXN0KCkuZ2V0KCkpOwogICAgIEFTU0VSVF9FUSg0
LCAqbGlzdC5sYXN0KCkuZ2V0KCkpOwogCi0gICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IHN0ZDo6
bWFrZV91bmlxdWU8aW50PigzKTsKKyAgICBhdXRvIHVuaXF1ZVB0cldpdGgzID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50PigzKTsKICAgICBhdXRvIHB0cldpdGgzID0gdW5p
cXVlUHRyV2l0aDMuZ2V0KCk7CiAKICAgICBsaXN0Lmluc2VydEJlZm9yZShwdHJXaXRoNCwgV1RG
TW92ZSh1bmlxdWVQdHJXaXRoMykpOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIFRFU1QoV1RGX0xpc3RI
YXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgTGlzdEhh
c2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0
OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgYXV0byogcHRyID0gdW5pcXVlUHRyLmdl
dCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvTG9jay5jcHAKaW5kZXggMmRjY2VkY2FkY2M2YzIyMjczZGViYzIwZjNmZjY3
N2M4NzMyOTAyNy4uNWZkMzFiZjFjOWFiZWNmYjhhYmU3MzU2MDhhNDdjNTYwNDMwNDc3MiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKQEAgLTQyLDkgKzQyLDkgQEAgc3Ry
dWN0IExvY2tJbnNwZWN0b3IgewogdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiB2b2lkIHJ1
bkxvY2tUZXN0KHVuc2lnbmVkIG51bVRocmVhZEdyb3VwcywgdW5zaWduZWQgbnVtVGhyZWFkc1Bl
ckdyb3VwLCB1bnNpZ25lZCB3b3JrUGVyQ3JpdGljYWxTZWN0aW9uLCB1bnNpZ25lZCBudW1JdGVy
YXRpb25zKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9IHN0ZDo6
bWFrZV91bmlxdWU8TG9ja1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8ZG91YmxlW10+IHdvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxkb3VibGVbXT4obnVtVGhy
ZWFkR3JvdXBzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFk
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICog
bnVtVGhyZWFkc1Blckdyb3VwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9j
a3MgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxMb2NrVHlwZVtdPihudW1UaHJl
YWRHcm91cHMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAq
IG51bVRocmVhZHNQZXJHcm91cCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIHRocmVhZEdyb3VwSW5k
ZXggPSBudW1UaHJlYWRHcm91cHM7IHRocmVhZEdyb3VwSW5kZXgtLTspIHsKICAgICAgICAgd29y
ZHNbdGhyZWFkR3JvdXBJbmRleF0gPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9QYXJraW5nTG90LmNwcAppbmRleCA0NTJlMjI3NzFkYzA2NGFkYWFmZTYyMGViMzNlODAxMzBm
NzlmMTk3Li5lMDBhMDliMmExN2FhNzM0ODU2ZTQyYzExNDVjYmU2MDg2M2YwYTA1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcApAQCAtMTgyLDcgKzE4
Miw3IEBAIHN0cnVjdCBTaW5nbGVMYXRjaFRlc3QgewogCiB2b2lkIHJ1blBhcmtpbmdUZXN0KHVu
c2lnbmVkIG51bUxhdGNoZXMsIHVuc2lnbmVkIGRlbGF5LCB1bnNpZ25lZCBudW1UaHJlYWRzLCB1
bnNpZ25lZCBudW1TaW5nbGVVbnBhcmtzKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVM
YXRjaFRlc3RbXT4gdGVzdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbmdsZUxhdGNoVGVzdFtdPihu
dW1MYXRjaGVzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3Rz
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8U2luZ2xlTGF0Y2hUZXN0W10+KG51
bUxhdGNoZXMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBsYXRjaEluZGV4ID0gbnVtTGF0Y2hlczsg
bGF0Y2hJbmRleC0tOykKICAgICAgICAgdGVzdHNbbGF0Y2hJbmRleF0uaW5pdGlhbGl6ZShudW1U
aHJlYWRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNv
dW50ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAK
aW5kZXggMDgxZGY5ZTRmYzFkMjUxZDgxNGIyMjY0YmQyZDBlMDUyYzBiZDQxZi4uZjRlZjk4M2Ix
YTlmYmU4OTgwN2M3NWFjMjhmZGI2MjZkOWE5NmExMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBURVNUKFdURiwg
UmVmQ291bnRlcikKIFRFU1QoV1RGLCBSZWZDb3VudGVyRGVsZXRlQ291bnRlcldpdGhPdXRzdGFu
ZGluZ1Rva2VucykKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRl
cj4gY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZDb3VudGVy
RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBjb3Vu
dGVyID0gbWFrZVVuaXF1ZTxUZXN0Q291bnRlcj4oWyZdKFJlZkNvdW50ZXJFdmVudCBldmVudCkg
ewogICAgICAgICAgICAgaWYgKCFjb3VudGVyLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgIGNv
dW50ZXIgPSBudWxscHRyOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VbmlxdWVSZWYuY3BwCmluZGV4IDRkMmIyMmFhNTRmOGIwMjU0ODBmNTllNTYxYTNjY2U3
MTU1MDIzMTIuLjFhZmUzZTk3NzliYjg0ODg3ZTk0MzBkZTQxNzI2Yzc0Mzg1MzJmZGMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcApAQCAtMzAsOCArMzAs
MTEgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogICAgIAotY2xhc3MgQSB7IH07Citj
bGFzcyBBIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK307CiBjbGFzcyBCIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCKGludCBhLCBpbnQgYiwg
aW50IGMpCiAgICAgICAgIDogYShhKQpAQCAtNDMsNiArNDYsNyBAQCBjbGFzcyBCIHsKICAgICBp
bnQgYzsKIH07CiBjbGFzcyBDIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBDKFVuaXF1ZVJlZjxBPiYmIGEpCiAgICAgICAgIDogYShXVEZNb3ZlKGEpKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAppbmRleCAwZWYxZjFkYTQ0YmFj
NTE1NGZmZmQzMzIxMzk1ZTlmMWUyZDJhN2MyLi41MWVjYTA3NjhkMmNjZTFjOWEzMjk1NTUyZDM1
MDA5ZmY0ZmQ1NmJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9W
YXJpYW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNw
cApAQCAtMjEyLDcgKzIxMiw3IEBAIFRFU1QoV1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1
Y3RvcikKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2Nv
cGU7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICAgICAgVmFy
aWFudDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4g
diA9IFdURk1vdmUodW5pcXVlUHRyKTsKIAogICAgICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKaW5kZXggMTUwYjliNzZjOGE1NjVlMzY1NTQ4MzZl
MGJiZWMwNTA1Yzc4NDhmMi4uN2U2MzA2OTNlZWM2MDQxYTM3NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTUwLDYg
KzUwLDcgQEAgc3RydWN0IEludCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnQ+IHsKIH07CiAK
IGNsYXNzIEJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QmFzZT4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJhc2UoKSB7IH0KIApAQCAtNTc4LDEwICs1
NzksMTAgQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hhc2hTZXRFeHBhbnNpb24pCiAgICAgICAg
IEVYUEVDVF9FUSh3ZWFrSGFzaFNldC5jYXBhY2l0eSgpLCAwdSk7CiAgICAgICAgIEVYUEVDVF9U
UlVFKGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXApOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgaW5pdGlhbENhcGFjaXR5IC8gbWF4TG9hZENhcDsgKytpKSB7Ci0gICAgICAg
ICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAg
IGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hT
ZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmpl
Y3QpKTsKLSAgICAgICAgICAgIG90aGVyT2JqZWN0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxC
YXNlPigpKTsKKyAgICAgICAgICAgIG90aGVyT2JqZWN0cy5hcHBlbmQobWFrZVVuaXF1ZTxCYXNl
PigpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAg
ICAgfQogICAgICAgICBFWFBFQ1RfRVEoc19iYXNlV2Vha1JlZmVyZW5jZXMsIG90aGVyT2JqZWN0
cy5zaXplKCkpOwpAQCAtNjE1LDcgKzYxNiw3IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNo
U2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwg
MHUpOwogICAgICAgICB1bnNpZ25lZCBvYmplY3RDb3VudCA9IGluaXRpYWxDYXBhY2l0eSAqIDI7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAg
ICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vh
a0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92
ZShvYmplY3QpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsK
QEAgLTY2NywxMCArNjY4LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0
ZXNFbXB0eSkKICAgICB7CiAgICAgICAgIFdlYWtIYXNoU2V0PEJhc2U+IHdlYWtIYXNoU2V0Owog
ICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2U+PiBvYmplY3RzOwotICAgICAgICBh
dXRvIGZpcnN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRv
IGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5h
ZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgZG8gewotICAgICAgICAgICAgYXV0byBvYmplY3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1h
a2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsK
ICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgIH0g
d2hpbGUgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgPT0gZmlyc3RPYmplY3QuZ2V0KCkpOwpA
QCAtNzM0LDggKzczNSw4IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNp
emUpCiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFz
aFNldDsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4o
KTsKLSAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOwor
ICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOworICAgICAgICBh
dXRvIGxhc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0
LmFkZCgqZmlyc3RPYmplY3QpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmxhc3RPYmplY3Qp
OwogICAgICAgICBpZiAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSAhPSBmaXJzdE9iamVjdC5n
ZXQoKSkKQEAgLTc1OSwxMCArNzYwLDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0
Q29tcHV0ZVNpemUpCiAgICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNl
dDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAg
ICAgYXV0byBub25GaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAg
ICAgYXV0byBub25GaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vh
a0hhc2hTZXQuYWRkKCpub25GaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAg
IGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0
byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5h
ZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkp
OwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IG5vbkZpcnN0
T2JqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9DQVJpbmdCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggMmFhYjY1ZGQ4ZmQ3ZWYwNzA1MWZiNmY3NTY3NThjZGU3
MDJlMDdhMS4uODFkN2JhMjkxYWU5ZjRhYjdjZjJlNWY5YWFkNjJjOTQyNDM1MzY3MiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQogICAgIHsKICAgICAgICAgV1RGOjpp
bml0aWFsaXplTWFpblRocmVhZCgpOwotICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Q0FSaW5nQnVmZmVyPigpOwogICAgIH0KIAogICAgIC8v
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkb3VibGUgc2FtcGxlUmF0ZSwgVUludDMyIG51bUNo
YW5uZWxzLCBQQ01Gb3JtYXQgZm9ybWF0LCBib29sIGlzSW50ZXJsZWF2ZWQsIHNpemVfdCBjYXBh
Y2l0eSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxj
dWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxj
dWxhdGlvblZhbHVlLmNwcAppbmRleCA3NzhlNjE1NWYwNmNjMTI4Mzk3OTc1ZjA0NTg3MTJhMmM3
MTA0MGZhLi5kY2E0NjM2MDJlOTZkNjBhMDQ1MTM4MTIxY2JiZGNlZmJlZTllNWMyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFs
dWUuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHN0YXRp
YyB1bnNpZ25lZCBkZWxldGlvbkNvdW50OwogCiBjbGFzcyBDYWxjdWxhdGlvbkRlbGV0aW9uVGVz
dE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25Ob2RlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWxjdWxhdGlvbkRlbGV0
aW9uVGVzdE5vZGUoKQogICAgIHsKQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25E
ZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CiAK
IHN0YXRpYyBSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkK
IHsKLSAgICBhdXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25U
ZXN0Tm9kZT4oKTsKKyAgICBhdXRvIG5vZGUgPSBtYWtlVW5pcXVlPENhbGN1bGF0aW9uRGVsZXRp
b25UZXN0Tm9kZT4oKTsKICAgICByZXR1cm4gV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3Jl
YXRlKFdURk1vdmUobm9kZSksIFdlYkNvcmU6OlZhbHVlUmFuZ2VBbGwpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRl
c3QuY3BwCmluZGV4IGY1OGRhOGE0MjA3M2VjOTliYmVlMzRhODViZWMzNGMwODVjNTJhNjQuLjBj
MWEwNjlmMTNjMzljNDA5ZTVkNWUxYjAzYTdlOTJiZjliMzY2YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3Bw
CkBAIC00OCwxMCArNDgsMTAgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRT
aXplKQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUwNjA3MDg7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGE7CiAKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
ZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwg
VmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0
ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAg
IEVYUEVDVF9FUSg2NHUsIGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsK
IAotICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlk
Q29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOworICAgIGF1
dG8gY29udGludWF0aW9uUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFj
a2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGNv
bnRpbnVhdGlvblBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCkpOwogfQogCkBAIC03
MCw3ICs3MCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YSkKICAg
ICB1aW50MzJfdCBjaGFubmVsSWQgPSAweEY1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprV2luazsKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEp
LCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlk
SW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5z
aXplKCkpOwogICAgIHNpemVfdCBpbmRleCA9IDA7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc2Vy
aWFsaXplZCA9IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CkBAIC05NCw3ICs5NCw3
IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5k
IGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsKICAgICBzaXplX3QgbGVuZ3RoID0g
ZGF0YS5zaXplKCk7Ci0gICAgYXV0byBvcmlnUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRv
SGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7Cisg
ICAgYXV0byBvcmlnUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5l
bElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CiAKICAgICBzaXplX3QgcGF5bG9hZExl
bmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ob3JpZ1BhY2tldC0+cGF5bG9hZExlbmd0aCgpKTsK
ICAgICBWZWN0b3I8dWludDhfdD4gb3JpZ0RhdGEgPSBvcmlnUGFja2V0LT5nZXRTZXJpYWxpemVk
RGF0YSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zp
bGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKaW5kZXggMWVkMTMyOGY4MTMwOWUxMmUxMzcxY2IzYWRmZTZiMGE5NzgzZWViNi4u
MjI4MzgzYTBmMzBhOWIxMzlmNmFhZjQzZjk1Y2VkZDgwOTE2NmU2YSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiAgICAgYXV0
byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAg
ICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBh
dGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlw
ZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVt
cEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0xOTAsNyArMTkwLDcgQEAgVEVTVF9GKEZpbGVNb25p
dG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVDaGFuZ2VzKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBX
b3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVl
LmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAg
YXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRl
c3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmlj
YXRpb246CkBAIC0yNTAsNyArMjUwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0
RGVsZXRpb24pCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0
IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
ZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5p
cXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10g
KEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTI4OSw3ICsyODks
NyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQog
CiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVl
Iik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0
ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxl
Q2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9u
aXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMzQ2LDcgKzM0Niw3IEBAIFRF
U1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2Up
CiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVl
dWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+
KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVN
b25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDkyZDhhMTkyY2E3
YjJhMTA4MTU2NTk5N2IwZWE1YjFmOWFlYThmNjUuLjIxOWU5NjZkYmViYWE4NGQzNjAyNzIyZTk1
OWUzMmY2NGZiNGRiMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEN1cmxDb29raWVz
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgewogICAgICAgICBtX2Nvb2tpZURpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwogCi0gICAgICAgIG1f
Y29va2llSmFyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2ll
ZGIuc3FsIikpOworICAgICAgICBtX2Nvb2tpZUphciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29v
a2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURp
cmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKICAgICAgICAgbV9jb29raWVKYXItPm9wZW4oKTsK
ICAgICAgICAgbV9jb29raWVKYXItPnNldEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3k6
OkFsd2F5cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAppbmRleCA1YzBhZTMz
MTMyOGIzNmIwYmE3MGExOGQ5OTM2Njk0MTJhY2EyOWE5Li5iM2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5
ZGRhMTIxMmYxOTMyYTBkMjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2Us
IFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9w
ZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtl
VW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVp
Q2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEku
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3Bw
CmluZGV4IGE0ZmJhMTI3YzZlNGQwM2U2M2Q5YTgxNzJhMzliM2NiOGIxNDcyYzcuLjdiYzM1MjRm
MmJkYjlkYmQ3YTQzNWEzY2M2YWQzODMyZTk0NGVkZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJM
UmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdl
YlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50
OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRF
bmRFZGl0aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVs
ZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKaW5kZXggMGY3ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4
MDM4ZDE5MjIxZWRiZjdkNS4uY2QxOWQ3Y2RlNTg4OTYyNWYxMjIxMmZjNzUzY2ZkNTVlMjc4ZDky
MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxk
RGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHN0cnVjdCBXZWJLaXQyVGV4dEZpZWxkQmVnaW5BbmRFZGl0RWRpdGluZ1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBj
b250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0
KCJUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdFdmVudHNUZXN0IikpOwogICAgICAgICBz
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3
ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkp
OworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQu
Z2V0KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhp
cyk7CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCmluZGV4IGM3YjAyNTFiZmNmMjFh
YTRhYmQxMTRjODU1MDc5MjQxZDY2MTc0ZTkuLjlkYzNhNmRhOTk1MDljMjcxMTIxZDRjM2E0NTMw
ODRmZWU5ODliZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L1VzZXJNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9V
c2VyTWVzc2FnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgV2ViS2l0MlVzZXJNZXNzYWdl
Um91bmRUcmlwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0
ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJVc2Vy
TWVzc2FnZVRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQu
Z2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJD
bGllbnQod2ViVmlldy0+cGFnZSgpLCB0aGlzKTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxs
TG9hZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAK
aW5kZXggZWQ5ZjBmZmM3MDI1YWIxMmNiNTM5NjdmNzIwNWZmOTZjODliZTY5OS4uNTJmMThkY2Vi
NDJkNTFhYzA4Mzk1YjYyMDAxZDRhOTU0MGY3NDUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBXZWJL
aXQyV2lsbExvYWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnRl
eHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIldp
bGxMb2FkVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5n
ZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8
UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKIAogICAgICAgICBkaWRSZWNlaXZlTWVz
c2FnZSA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUlu
QnVuZGxlX0J1bmRsZS5tbQppbmRleCBhZWJhMWMzNDhmYmM2NmExNzBlNTM5ZTBhNzI4NmFlZTkx
NTNlNjA0Li4yOTFhNDc4YTI3ODQyNDJkYWQ0NWEzYThmMTczOTA1ZDdkM2IyZjIxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVh
cmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBhZG9wdChKU1Zh
bHVlVG9TdHJpbmdDb3B5KHNjcmlwdENvbnRleHQsIHJlc3VsdCwgbnVsbHB0cikpOwogCiAgICAg
ICAgIGF1dG8gYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShy
ZXN1bHRTdHJpbmcuZ2V0KCkpOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0
cmluZ0dldFVURjhDU3RyaW5nKHJlc3VsdFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZm
ZXJTaXplKTsKIAogICAgICAgICBXS0J1bmRsZVBhZ2VTZXRVc2VEYXJrQXBwZWFyYW5jZShtX3Bh
Z2UsIHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAppbmRleCBkNmNjMmZiMjQ3ZTU2MjA2Njk3
NzYxMGIyNTY3OWI3ZWQxZGNjOGJhLi43YzhjOGI1MjE1NGFjNGViMDk4ZTY5NTE3OTA2OWEwNWVi
ZGM2NmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdEF1dGhlbnRpY2F0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcApAQCAtMjU2LDYgKzI1Niw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25FbXB0eVJlYWxtKEF1dGhlbnRpY2F0aW9u
VGVzdCogdGVzdCwgZ2NvbnN0CiB9CiAKIGNsYXNzIFR1bm5lbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVHVubmVsKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291
cE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIDogbV9zZXJ2ZXIoc2VydmVyKQpAQCAtMjk5LDcg
KzMwMCw3IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwg
U291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1l
dGhvZCA9PSBTT1VQX01FVEhPRF9DT05ORUNUKSB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQo
c291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSwgPT0sIGdQcm94eVNlcnZlclBvcnQpOwotICAg
ICAgICBhdXRvIHR1bm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3Nh
Z2UpOworICAgICAgICBhdXRvIHR1bm5lbCA9IG1ha2VVbmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1l
c3NhZ2UpOwogICAgICAgICBhdXRvKiB0dW5uZWxQdHIgPSB0dW5uZWwuZ2V0KCk7CiAgICAgICAg
IHR1bm5lbFB0ci0+Y29ubmVjdChbdHVubmVsID0gV1RGTW92ZSh0dW5uZWwpXShjb25zdCBjaGFy
KiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKQEAgLTM5
NCw3ICszOTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHko
UHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyhQcm94eUF1dGhlbnRpY2F0aW9uVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBhdXRvIGh0dHBzU2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXRUZXN0U2VydmVyPihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7
CisgICAgYXV0byBodHRwc1NlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2Vi
S2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOwogICAgIGh0dHBzU2VydmVyLT5ydW4oc2VydmVy
Q2FsbGJhY2spOwogCiAgICAgdGVzdC0+bG9hZFVSSShodHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0
aCgiL3Byb3h5L2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNi
MDVjZDRiYzAyN2UxMmQxMTAzZmFmNmEwMDdhYzZmNDBmMy4uYjZiNzI4ZTQ1ZTA5YzUxYTZkNmJh
OTliZjcxN2UxOTVlOWEwZTBjMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNlbmRp
ZgogCiBjbGFzcyBXZWJQcm9jZXNzVGVzdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSopID0gMDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdp
bmRvd1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9N
V2luZG93VGVzdC5jcHAKaW5kZXggMTI1NjI0MTk2YTcxYzZkM2FkNWJjZGQyOWYxNDJiODZhYmI5
ZmQxMS4uZTQwMDA3NjMzZjIzNjI0MDUyOWRmNTRhZTg2MzIwODdiZDM2OTUyZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93
VGVzdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgc3RhdGljIGdib29sZWFuIGNsaWNrZWRDYWxsYmFj
ayhXZWJLaXRET01ET01XaW5kb3cqLCBXZWJLaXRET01FdmVudCosIFdlYktpdERPTUQKIAogY2xh
c3MgV2ViS2l0RE9NRE9NV2luZG93VGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkg
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1
cm4gbWFrZVVuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CiAKIHByaXZhdGU6CiAg
ICAgZ3VpbnQ2NCB3ZWJQYWdlRnJvbUFyZ3MoR1ZhcmlhbnQqIGFyZ3MpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggOGQy
ZWU4YWQxNmNhZDY3OTU2OGVkOWI2ZDc1Y2VjZDgyMTUwZmVkYi4uMzQ5MGVmMWNlYjZmMTc4MDUw
MmYwY2RjOTE5Yzk3MWUyOTJiZTkwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzgsNyArMzgsNyBAQCBzdGQ6OnN0
cmluZyB0b1NURChOU1N0cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmco
KTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gW3N0cmluZyBsZW5ndGhPZkJ5dGVzVXNpbmdF
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIE5TVUlu
dGVnZXIgc3RyaW5nTGVuZ3RoOwogICAgIFtzdHJpbmcgZ2V0Qnl0ZXM6YnVmZmVyLmdldCgpIG1h
eExlbmd0aDpidWZmZXJTaXplIHVzZWRMZW5ndGg6JnN0cmluZ0xlbmd0aCBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZyBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBs
ZW5ndGhdKSByZW1haW5pbmdSYW5nZTowXTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVy
LmdldCgpLCBzdHJpbmdMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3Lm1tCmluZGV4IDU0NmNhNmUyMjJkOWZlYTgxY2U3YmU0ZTJjMmQzOTg1YzViNDRmMGYu
LjI0NzU3Mjg5OGI2YTg3OWM3YTM2YjRmYzY1YjkxNTMzMDQ3MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0
aWMgdm9pZCBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9J
dGVtUHJvdmlkZXJzKCkKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dp
enpsZXI+IHN3aXp6bGVyOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwog
ICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgc3dpenpsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFz
cywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVy
V2l0aG91dFB1YmxpY1JURkQpKTsKKyAgICAgICAgc3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNz
TWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRh
YmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQp
KTsKICAgICB9KTsKIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJh
dGlvCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyB3b3JrYXJvdW5kIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NTIwND4gaXMgZml4ZWQu
Ci0gICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NN
ZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxs
b3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7Cisg
ICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6
emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CiAgICAgX2lucHV0
U2Vzc2lvbkNoYW5nZUNvdW50ID0gMDsKICAgICBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGlu
Z0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaApp
bmRleCA2OTBmMGE3NzU2Y2ZlM2FmYjA3ZDkwYmVlZmYwOTU3OGIyZmM1NWRlLi4yODE0NTI3ZjE5
Yjk1NGY4MmFlYjg3YmMwZTRjOGRjMGI5YTdmNWI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCkBAIC0yNSw2ICsy
NSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBjbGFzcyBXZWJLaXRUZXN0
U2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIGVu
dW0gU2VydmVyT3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlv
bnMubW0KaW5kZXggODYyNjM1NDQzMzVhN2Y1ZDk3MWI1ZGMwZDI1OWU1NWRjMGQ3M2M2Ni4uNGJk
ZTZjNTEwMGQyYmQ2ZmU0YmI5MGZhY2JlMjVkMzM5YTUwNTRiYiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCiAK
ICAgICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXplWmVybzsKICAgICBfc2hhZG93Qmx1clJhZGl1cyA9
IDA7Ci0gICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
bGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSwg
QHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNoYXJl
ZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOworICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxl
ciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJO
U0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKICAgICBfaGFzUGVuZGlu
Z1NoYWRvd0NoYW5nZXMgPSBOTzsKICAgICBfaGFzTXVsdGlwbGVGb250cyA9IE5POwogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDE1MzIyMTgyNjk5ZTBl
YTMwNzU0YTAyMjZjM2E3YjYyOTU5NzZkMDAuLjExMzk5YjM5MGZlOTE3MGY2YzUyNTI3NWFjMjM0
NTgyZGFmNzUwZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5k
ZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
CkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBXVFJFdmVudFF1ZXVlSXRlbTsKICNlbmRpZgogCiBj
bGFzcyBFdmVudFNlbmRlclByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKik7CiAg
ICAgfkV2ZW50U2VuZGVyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2Vv
bG9jYXRpb25Qcm92aWRlck1vY2suaAppbmRleCA3ZDk0NWQ2N2VjNjc1MGJlNzA2NDM1YTJhNmIz
Yzc0ZDFhZDE3NDNjLi4xZWQ0YWRmOWIzOTM5M2EzMzNhYTMyNTEwOTdiOWUzYWE0MmNjMzZiIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2Nr
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5o
CkBAIC0yNywxMCArMjcsMTIgQEAKICNkZWZpbmUgR2VvbG9jYXRpb25Qcm92aWRlck1vY2tfaAog
CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2Nr
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHZW9sb2NhdGlv
blByb3ZpZGVyTW9jayhXS0NvbnRleHRSZWYpOwogICAgIH5HZW9sb2NhdGlvblByb3ZpZGVyTW9j
aygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9F
dmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKaW5kZXggMWY5ZDNlZmM5NjRmYjEz
NzdiYzY2M2MwMTYwYzM0YTg4YjIzMjhhNi4uYzlhNTJjMTVmNzcwODMwNjgzYzhlZmY2ODk0Mjli
ZDBiYzFmNTY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCkBAIC02MTIsNiAr
NjEyLDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb25pdG9yV2hlZWxFdmVudHMo
KQogfQogCiBzdHJ1Y3QgU2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEpTQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAg
ICAgSlNPYmplY3RSZWYgbV9mdW5jdGlvbjsKIApAQCAtNjQ3LDcgKzY0OCw3IEBAIHZvaWQgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVS
ZWYgZnVuY3Rpb25DYWxsCiAgICAgCiAgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgZnVuY3Rp
b25DYWxsYmFja09iamVjdCk7CiAKLSAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0Rh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRl
eHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOworICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNh
bGxiYWNrRGF0YSA9IG1ha2VVbmlxdWU8U2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YT4oY29u
dGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9u
Q2FsbGJhY2tEYXRhUHRyID0gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YS5yZWxlYXNlKCk7
CiAgICAgYm9vbCBjYWxsYmFja1dpbGxCZUNhbGxlZCA9IFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Ny
b2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Ny
b2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0cik7CiAgICAgaWYgKCFjYWxsYmFja1dpbGxCZUNh
bGxlZCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA3MTE2Y2M5ODE1NjY5ZDk0OTRkYmY4ZGU0OGJh
ZWVjZDYzNzRjMzc2Li44M2IyYjMwYjEzMzJlYzc3YmZlZmNjMjlmZGQxYTJlNDgzY2I1ZjIzIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25V
c2VyCiB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBw
YWdlKQogewogICAgIGJvb2wgaXNNYWluUGFnZSA9IG1fcGFnZXMuaXNFbXB0eSgpOwotICAgIG1f
cGFnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7
CisgICAgbV9wYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+KHBhZ2Up
KTsKIAogICAgIHNldFVwSW5qZWN0ZWRCdW5kbGVDbGllbnRzKHBhZ2UpOwogCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuaAppbmRleCA1OWQzZTFiMGQwMmUyMmM1MmZhNzY1NDMzMjljMjNmNmI2MmEzODlhLi5i
MzIzYzI1MDQ0ZjU1MDM2MDc2ZjQ4ZWRkZDQ3YmNlYWEzZTIwZjE4IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBJbmplY3Rl
ZEJ1bmRsZVBhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IEluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYpOwogICAgIH5JbmplY3RlZEJ1bmRs
ZVBhZ2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCmluZGV4IDU5ZjI1YzFiYmFjNmVkODllOTRjZmE4OGE5YWZmYzAzZmI3
MjRhMTguLjNiMGVkNmFhY2E3NTk5NTVlZDE1Y2U4YjBjMTBjZjM3MmM5OTFkMzEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cApAQCAtMjM3NCw3ICsyMzc0LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxl
cyhKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNW
YWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAg
c2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXpl
KGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7
CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5n
ZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGZpbGVV
UkxzLmdldCgpLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aEJhc2VVUkwobV90ZXN0VVJMLmdldCgp
LCBmaWxlQnVmZmVyLmdldCgpKSkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAppbmRleCAwZTVjMDdjYTcyOWI2ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMy
YzAwMTdjLi4xOGU1N2QyZmNmNjI5NzY3YTczMjk3OWJjMmVkYzU3YWNmMTA5Y2UyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNzMwLDcgKzczMCw3
IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRUb0pTT2JqZWN0QXJyYXkoY29uc3QgVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBX
S0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKIAogICAgIHNpemVf
dCBlbGVtZW50Q291bnQgPSBjaGlsZHJlbi5zaXplKCk7Ci0gICAgYXV0byB2YWx1ZUVsZW1lbnRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ZhbHVlUmVmW10+KGVsZW1lbnRDb3VudCk7CisgICAgYXV0
byB2YWx1ZUVsZW1lbnRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SlNWYWx1
ZVJlZltdPihlbGVtZW50Q291bnQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVu
dENvdW50OyBpKyspCiAgICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29u
dGV4dCwgY2hpbGRyZW5baV0tPndyYXBwZXJDbGFzcygpLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGY3NGNjMmQzOTNk
NTMwNWZkMzY2NWJiMGUwYTM1NTE4NDQ3MzEwOWYuLmNhNGZkYmQ3MjIxNWFmNDhiZGE5NjdkNWJj
YWI0ODE1NmJhZGNjNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZv
cm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUZXN0T3B0aW9u
cy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkg
JiYgIWRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgpAQCAtNjQsNiArNjUsNyBAQCB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1J
bWFnZTsKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFBsYXRmb3JtV2ViVmlldyhXS1dlYlZpZXdDb25maWd1cmF0aW9uKiwgY29uc3QgVGVzdE9wdGlv
bnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25z
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCmluZGV4IGRhZjE0
Y2E3MDU0ODZiZmMyMDY0MzEyM2RlNTA5MWI3OWU1ZDAxMzEuLmJiYTE3YzJlZmZiMDk2NjVlZmMy
OGVlYjY5ZTcyMzI5YjFkNjliNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
U3RyaW5nRnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5j
dGlvbnMuaApAQCAtNzMsNyArNzMsNyBAQCBpbmxpbmUgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IHRvSlMoY29uc3QgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+JiBzdHJpbmcpCiBpbmxpbmUgc3Rk
OjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJT
aXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0
byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0
byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZl
clNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5n
KHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gc3RkOjpzdHJp
bmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAg
aW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYg
c3RyaW5nKQogaW5saW5lIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmlu
ZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3Ro
ID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmcsIGJ1ZmZlci5nZXQoKSwg
YnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFG
YWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAxNjU0NjI5Y2FhNmY2ZDhjODk0NTQ4
MzUxYzBjOGZiMGEzMzMzNzJhLi5mOTdmMTVlNjEyYzBiMWE0NzAzOGRkYmQzNzhiNjZkMGU3YWM0
Mjc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDc5
LDcgKzQ3OSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNv
bnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3Vw
SWRlbnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktp
dFRlc3RSdW5uZXJQYWdlR3JvdXAiKSk7CiAgICAgbV9wYWdlR3JvdXAuYWRvcHQoV0tQYWdlR3Jv
dXBDcmVhdGVXaXRoSWRlbnRpZmllcihwYWdlR3JvdXBJZGVudGlmaWVyLmdldCgpKSk7CiAKLSAg
ICBtX2V2ZW50U2VuZGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+
KHRoaXMpOworICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5kZXJQ
cm94eT4odGhpcyk7CiB9CiAKIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+
IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RP
cHRpb25zOjpDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykgY29uc3QKQEAgLTUyMSw3ICs1MjEsNyBA
QCBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2Vu
ZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjbwogICAgICAgICBtX2NvbnRleHQgPSBwbGF0Zm9ybUFk
anVzdENvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb250
ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSkpLmdldCgpLCBjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQo
KSk7CiAgICAgICAgIG1fY29udGV4dE9wdGlvbnMgPSBvcHRpb25zLmNvbnRleHRPcHRpb25zOwog
Ci0gICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9j
YXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZ2VvbG9jYXRp
b25Qcm92aWRlciA9IG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4
dC5nZXQoKSk7CiAKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9
IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5
Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwpAQCAtOTUxLDcg
Kzk1MSw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgLy8gRklYTUU6IFRoaXMgZnVu
Y3Rpb24gc2hvdWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVu
LgogCiAgICAgLy8gUmVzZXQgdGhlIEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCi0gICAgbV9l
dmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlz
KTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+
KHRoaXMpOwogCiAgICAgLy8gRklYTUU6IElzIHRoaXMgbmVlZGVkPyBOb3RoaW5nIGluIFRlc3RD
b250cm9sbGVyIGNoYW5nZXMgcHJlZmVyZW5jZXMgZHVyaW5nIHRlc3RzLCBhbmQgaWYgdGhlcmUg
aXMKICAgICAvLyBzb21lIG90aGVyIGNvZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5
IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVhbnVwIHRvby4KQEAgLTEyMzQsMTEgKzEyMzQsMTEgQEAg
c3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOwogICAgIGlmIChpc0Fic29sdXRlUGF0
aCkgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVu
Z3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CiAgICAgICAg
IHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwogICAgICAgICBzdHJjcHkoYnVmZmVy
LmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01B
WCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFyYXRvcgorICAgICAgICBidWZm
ZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0
aCArIFBBVEhfTUFYICsgbGVuZ3RoICsgMik7IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCiAg
ICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwogICAgICAgICBpZiAoIWdl
dGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIFBBVEhfTUFYKSkKICAgICAgICAgICAg
IHJldHVybiAwOwpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cnVu
VGVzdChjb25zdCBjaGFyKiBpbnB1dExpbmUpCiAgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyA9IHRl
c3RPcHRpb25zRm9yVGVzdChjb21tYW5kKTsKIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3
a1VSTCA9IGFkb3B0V0soY3JlYXRlVGVzdFVSTChjb21tYW5kLnBhdGhPclVSTC5jX3N0cigpKSk7
Ci0gICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdEludm9jYXRp
b24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gbWFr
ZVVuaXF1ZTxUZXN0SW52b2NhdGlvbj4od2tVUkwuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYg
KGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3Nob3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0
cykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+c2V0SXNQaXhlbFRlc3QoY29tbWFuZC5l
eHBlY3RlZFBpeGVsSGFzaCk7CkBAIC0yOTYwLDcgKzI5NjAsNyBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybVdpbGxSdW5UZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJikKIAogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9t
YWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0
aW9uLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXcqIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBh
cmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCmluZGV4IDEwNzNhYjE1MWEwZTM1NDlhNDEyYTVkMjVmNTRmN2IxYjRlOWRjYjguLjA5MTA4
YjBlNTIyNDQzYTY3NWI1MTE0ZjQyOGM3OWFhMTBkMjgzZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjY5LDcgKzE2NjksNyBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0LCB1bnNpZ25lZCBz
Y3JpcHRDYWxsYmFjawogICAgIG1fcGVuZGluZ1VJU2NyaXB0SW52b2NhdGlvbkRhdGEgPSBudWxs
cHRyOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAgICAg
ICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWU8VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7
CiAgICAgCiAgICAgbV9VSVNjcmlwdENvbnRleHQtPnJ1blVJU2NyaXB0KHRvV1RGU3RyaW5nKHNj
cmlwdCksIHNjcmlwdENhbGxiYWNrSUQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oCmluZGV4IDc4ODBkZDhkZjU1MmZjOWQ4MmI5NGQxZDJmMmRkZmQ2ZGY4MmVjMmIu
Ljg1YjFiMDIwNmViODkyMjZlODZjNmI0MWFiOTNlNWRiOTVlYmZkOTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBX
VFIgewogCiBjbGFzcyBUZXN0SW52b2NhdGlvbiBmaW5hbCA6IHB1YmxpYyBVSVNjcmlwdENvbnRl
eHREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoVGVzdEludm9jYXRpb24pOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRlc3RJ
bnZvY2F0aW9uKFdLVVJMUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDBmYmY4
ZWE1MjNkMzQ4ZDI1NmVjYzUyMzA0MmRlYTAyZmVjZGQxZGMuLjBlYmY3YmZkMDAzOWY0ZWY4MDkz
MmMxZWI1MTkyZmY1NGVlM2M0YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiwgY29uc3QgVGVzdE9wdAogICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0QXBwbGlj
YXRpb25NYW5pZmVzdDpbX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0
RnJvbUpTT046dGV4dCBtYW5pZmVzdFVSTDpuaWwgZG9jdW1lbnRVUkw6bmlsXV07CiAgICAgfQog
Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihj
b3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvcGllZENvbmZpZ3VyYXRpb24uZ2V0KCksIG9w
dGlvbnMpOwogICAgIGZpbmlzaENyZWF0aW5nUGxhdGZvcm1XZWJWaWV3KG1fbWFpbldlYlZpZXcu
Z2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKG9wdGlvbnMucHVuY2hPdXRXaGl0ZUJhY2tncm91
bmRzSW5EYXJrTW9kZSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXREZWZhdWx0Q2FsZW5kYXJUeXBlKE5TU3RyaW5nICppZGVudGlmaWVyKQogewogICAgIG1fb3Zl
cnJpZGRlbkNhbGVuZGFySWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgaWYgKCFtX2NhbGVu
ZGFyU3dpenpsZXIpCi0gICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3Vy
cmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsK
KyAgICAgICAgbV9jYWxlbmRhclN3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6
bGVyPihbTlNDYWxlbmRhciBjbGFzc10sIEBzZWxlY3RvcihjdXJyZW50Q2FsZW5kYXIpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRDYWxlbmRhcikpOwogfQogCiB2b2lkIFRlc3RDb250
cm9sbGVyOjpyZXNldENvbnRlbnRFeHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggZGU1NzhmNzNmYzM2ZWNk
MTU4OWM5OWY4ZGJmOGZjY2MzOTg3YjQyZS4uZWY5ZTM4ZTcyM2JhYTk1ZGZmZTcwZWM1YTg3NWNm
ZWM4NGUzMjg3NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRT
ZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRT
ZW5kZXJQcm94eUd0ay5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCBpbnQgZ2V0R0RLS2V5U3ltRm9y
S2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2Rp
ZmllcgogICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTI7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6
ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShrZXlSZWYpOwotICAgIGF1dG8g
YnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8g
YnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJT
aXplKTsKICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtleVJlZiwgYnVmZmVyLmdldCgpLCBi
dWZmZXJTaXplKTsKICAgICBjaGFyIGNoYXJDb2RlID0gYnVmZmVyLmdldCgpWzBdOwogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IDZh
NjFkZjhlMzVkNmZhMDhjOGIxNGM1MWE4MjNjNjJkMDgwNWQ0ZDIuLmYzYzQxN2M3ZmI3Y2FhNGRl
NDc3N2M3YTQ5NGY1M2FmMzJhMThiZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0xNTEsOCArMTUxLDggQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RP
cHRpb25zJiBvcHQKIAogICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuY2xlYXIoKTsKICAg
ICBpZiAoIW9wdGlvbnMuc2hvdWxkUHJlc2VudFBvcG92ZXJzKSB7Ci0gICAgICAgIG1fcHJlc2Vu
dFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RT
d2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdD
b250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwotICAgICAgICBtX3ByZXNl
bnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9k
U3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQ
b3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDop
LCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBv
cG92ZXIpKSk7CisgICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKG1ha2VV
bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBA
c2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVy
KSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVl
PEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNl
bGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0
aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmll
d0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CiAgICAgfQogICAgIAogICAgIEJPT0wgc2hvdWxkUmVz
dG9yZUZpcnN0UmVzcG9uZGVyID0gTk87CkBAIC0yNjksOSArMjY5LDkgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcikKIAogICAgIGF1dG8gY29udHJvbGxlckNsYXNzID0gVUlLZXlib2FyZElucHV0TW9k
ZUNvbnRyb2xsZXIuY2xhc3M7CiAgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMucmVzZXJ2ZUNhcGFj
aXR5KDMpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVj
dG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJl
bnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNz
LCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6
bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkpOworICAgIG1faW5wdXRN
b2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dp
enpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1
dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RT
d2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJl
ZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkp
KTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJ
bnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVz
KSkpOwogICAgIFtVSUtleWJvYXJkSW1wbC5zaGFyZWRJbnN0YW5jZSBwcmVwYXJlS2V5Ym9hcmRJ
bnB1dE1vZGVGcm9tUHJlZmVyZW5jZXM6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KaW5kZXggZDFjZmM2YTMzMjFlMDI5YzhiYTgx
MTVmNGE2ZDkyMDdmOGU3MTg0Zi4uODljZTRlZjEyNmMxNWQ5MmRjZjc2NjUwY2U2ZWVmNWI4OTIz
MTcyZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5
Lm1tCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24o
dW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWUKIAogICAgIE5T
VmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0
Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHRh
cmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3Nd
LCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihz
d2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVy
PihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAg
ICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgW3RhcmdldFZpZXcg
bW91c2VEb3duOmV2ZW50XTsKICAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsK
QEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWdu
ZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycwogICAgICAgICB0YXJn
ZXRWaWV3ID0gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7
CiAKICAgICBBU1NFUlQodGFyZ2V0Vmlldyk7Ci0gICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1
dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05T
RXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgIGF1dG8g
ZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9k
U3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMp
LCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMp
KTsKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgW3RhcmdldFZpZXcg
bW91c2VVcDpldmVudF07CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTU5
Myw3ICs1OTMsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4
LCBkb3VibGUgeSkKICAgICAvLyBBbHdheXMgdGFyZ2V0IGRyYWdzIGF0IHRoZSBXS1dlYlZpZXcg
dG8gYWxsb3cgZm9yIGRyYWctc2Nyb2xsaW5nIG91dHNpZGUgdGhlIHZpZXcuCiAgICAgTlNWaWV3
ICp0YXJnZXRWaWV3ID0gaXNEcmFnID8gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCkgOiBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZv
cm1WaWV3KCkgaGl0VGVzdDp3aW5kb3dMb2NhdGlvbl07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsK
LSAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3Io
cHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0
dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBj
bGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBf
c2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgaWYgKGlzRHJhZykKICAgICAgICAgICAg
IFt0YXJnZXRWaWV3IG1vdXNlRHJhZ2dlZDpldmVudF07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCmluZGV4IDQ2OWJmYWYwZThjZjI5
MDczMGJhYmZhMDc4MzZkODc3ZWM3MGU4ZjUuLjY5NmY0NTU3NTg5NmZlODI2NjQ4N2QwOThlOGZl
OGVlNjFlNTRkNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50
U2VuZGVyUHJveHlXUEUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50
U2VuZGVyUHJveHlXUEUuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIHVpbnQzMl90IHdw
ZUtleVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1
aW50MzIKICAgICAgICAgcmV0dXJuIFdQRV9LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVy
U2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwg
YnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376156</attachid>
            <date>2019-08-13 05:08:25 -0700</date>
            <delta_ts>2019-08-13 05:15:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190813050824.patch</filename>
            <type>text/plain</type>
            <size>1762557</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDkyMDFmZjM5Y2JiMDFhNDJhYWQ1MTg2YzRkZWIxMDgzYWZiOWZhLi42NDFhZDIzY2U3MzZiZDFi
Mzk0ZmQzMGEzYTZjMDFhNjNhNGZjY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgbXVs
dGlwYXJhbWV0ZXIgb3ZlcmxvYWRzIG9mIGFwcGVuZCgpIGluIFN0cmluZ0J1aWxkZXIgYXMgYSBm
aXJzdCBzdGVwIHRvd2FyZCBzdGFuZGFyZGl6aW5naW5nIG9uIHRoZSBmbGV4aWJsZUFwcGVuZCgp
IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZmUzNjczMjEwMThkZDVhMWQ0N2Y1NWMxYTcxZjBhODJm
OGM1NzIuLjBjMDY1NzVlZDQ2ZTFiN2Y5MDU4YzQ3M2U5MTZlMjU5NjdlZDAwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAgICAgICogYmVu
Y2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFZlY3Rv
ci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAgICAgICAqIHd0
Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9u
Lmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICog
d3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9T
dHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAg
ICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3Ip
OgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29t
PgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdl
YWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTExY2FkMjk0OThjYTNlMDc4ZDllZjgyZTBkMzA4
MGMxOWMwMmEwYy4uMmI2ZjdmOTVkODkzZDEyMmUzZTcwYjFhZjg2OGY2ZGM1Yzk0ZjBmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4MjUgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcpOgorICAgICAgICAqIE1vZHVsZXMv
YmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JC
ZWFjb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUNETTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lz
dGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y2xpZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6c2V0Q2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9s
b2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJl
Y29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5k
ZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVP
cGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRl
U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9w
ZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFu
c2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2
ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURC
VHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFu
YWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2
ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tl
bmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
OjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRl
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJl
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rh
c2s6OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVj
b2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2Rp
bmdUYXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
YW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNl
dEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBh
bm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2Fn
ZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVG
cm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5k
VmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVh
dGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50
cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29t
cHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFt
ZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlBhcnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJ
bml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRl
cyk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRo
b2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFt
ZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0Ns
YXNzOjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29t
YmluZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1
bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRz
Ojpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAg
KiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9E
T01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNl
dEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAg
ICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNl
dDo6YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNj
YWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgor
ICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6Cisg
ICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJJbXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6
OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNv
bnN1bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZVN1cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1l
S2V5ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRv
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvRWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
U2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hh
cGVQYXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2Up
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhP
YmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0
ZXJDU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvbVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRF
dmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAg
ICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAg
KiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRv
bS9NaWNyb3Rhc2tzLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdyk6Cisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFn
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNl
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURh
dGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNl
bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kQ3Jl
YXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhU
TUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHls
ZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAg
KiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25G
aWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxl
U3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6
CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjptYXBN
b3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRU
b1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAg
ICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVx
dWVzdFRvSGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0
VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpp
bnNlcnRBZGphY2VudEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNl
V2hvbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNo
U3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJs
ZVN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEluc3BlY3RlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9y
eUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0
b3JQYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dl
YkhlYXBBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uTG9nKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBs
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0
ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25E
aXNhYmxlci5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNj
aGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5l
Y3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRl
eHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpp
bml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJs
YXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9u
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAgICAg
ICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0
aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdl
L1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0
ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJzUHJv
cGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBwYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUp
OgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVu
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNaXhlZFR5cGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJlck9m
Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNo
YW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bGVu
Z3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bXV0
YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpkYXRh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVybyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50Rmxh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2Ft
cGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6
OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGVu
b3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1plcm8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NSKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVm
ZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZl
Y3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNl
RWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0
YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6RHlu
YW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2FpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5l
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJPZkF6
aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNl
UmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkVGltZUZyYW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2
ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5w
dXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6
d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6CisgICAgICAgIChXZWJDb3JlOjpaZXJv
UG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJl
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRQb2xlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYVBsYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNo
YXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lvbjo6Y29weVNoYXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lv
bjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpu
b3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3Vy
Y2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0
QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
Um90YXRpb25TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVr
YWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1l
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVj
dG9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNv
bW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNo
YXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlRpbGVkQmFja2luZ0xheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBj
cmVhdGVUaWxlQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6
UGxhdGZvcm1DQUxheWVyV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnN3YXBC
dWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZv
bnRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90
YXRpb25Qcm9wZXJ0aWVzOjppc0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3Bl
cnRpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpyb3RhdGVkU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YubW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3Bp
ZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXll
cjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNl
UHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1
bmNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6
OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1
ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3Vl
OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRlQ29tbWFuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6OnNldFNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
bkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldL
Q0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6
OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2Fj
aGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1f
Y2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1
cmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVh
dGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRvWVVWKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlh
RW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0ZURlY29kZVRhc2spOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxDYWNoZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
X3Jlc3RhcnRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJjaENvb2tpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4
dDo6Q3VybENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6d2lsbFNldHVw
U3NsQ3R4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0
aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNS
ZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVudDo6
cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
ZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAgICAg
KiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6
OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NEYXRh
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxl
eExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRp
bmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
bG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0
RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0ZUJh
c2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2Vk
VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjphZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0SW50b1RyYWNr
ZWRSZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25lZERlc2NlbmRhbnRz
TWFwOjphZGREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWdp
blVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZUJsb2NrUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExp
bmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxv
YXRpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJl
TGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxp
emVSYXJlQmxvY2tGbG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJh
Z21lbnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFn
bWVudE1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5
VHJhY2tzRm9yQXV0b1JlcGVhdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGlu
ZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVBbmNlc3RvckNsaXBwaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OlJlbmRlckxheWVyQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdl
UXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWlu
dFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVj
dEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFw
cGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRv
U2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50
ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJh
c3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2lj
U2hhcGVQYXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93
U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5k
ZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0
ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21S
ZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXpl
TWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0
ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdl
Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OkludmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRp
b25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAg
ICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NW
R1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6
Y29weSBjb25zdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5UGFpckFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQ
cmltaXRpdmUuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFu
aW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlM
aXN0QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJG
cm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9j
a1NwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQ
cmludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RN
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAg
ICAqIHRlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lN
b2NrQ0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0u
aDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2Ft
ZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVu
cXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrQW5kVGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrRm9yTW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtl
clRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25E
YXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICog
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGll
bnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OmV2YWx1YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5k
aW5nQ2FsbGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xMyAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlciBBZ2VudCBhbmQgU2Vz
c2lvbklEIHNob3VsZCBiZSBnaXZlbiB0byBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gc2V0IHVwIHRo
ZSBjb3JyZWN0IHByb3h5IGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwZTFiZmU3
MzU0MTQyNGMwZDE5ZGI5MThjNDUyZmUwNWY5ZTY3NWFmLi4xMjgxZDMyNTgzNjcyMDRlMTJkNjI3
NWZmZTE5OWU1M2JlYzg2YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwOgorICAgICAgICAoUEFMOjpD
cnlwdG9EaWdlc3RDb250ZXh0SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL0Ns
b2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChQQUw6OkNsb2NrOjpjcmVhdGUpOgorICAgICAgICAq
IHBhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW06CisgICAgICAgIChDbG9jazo6Y3JlYXRlKToKKwog
MjAxOS0wOC0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUYXBwaW5nIGJ1dHRvbnMgaW4gRGF0YSBEZXRlY3RvcnMgbG9va3VwIHByZXZpZXdzIGRv
ZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCAzNThmMmJmMDA1YWU2NDRkODEyMzI4ZDVkZWRl
NDE5YzhiYTAxY2ZiLi5hM2YyYjc2NjhjNWJjMmNlY2QyY2Y1NjI4ZGY1NWM3M2RkMTQzMTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4s
IHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAg
ICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6CisgICAg
ICAgICogZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNz
aW9uSG9zdDo6bGF1bmNoQnJvd3Nlcik6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0
OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisKIDIwMTktMDYtMDMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0NTU2Nyk6
IFtHVEtdW1dQRV0gWzIuMjUuMV0gV2ViS2l0V2ViRHJpdmVyIGdldHMgaW5zdGFsbGVkIGFzIFdl
YkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAyYjgwYzhjODA5ZjQ3ZmI2MWZlMWZmYTUwYjc3N2QwZjY0NGFj
NjVmLi5lMjk4OGE1YTQwOTJjMWI1MDlmOTBiZGI1MWY1Zjc0MDNiMGNkYWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDYyMSBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVz
IFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25p
dG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5h
Z2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYXA6
OmFkZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpl
c3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVzZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRT
dXBwbGVtZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0
b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpDYWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNh
Y2hlOjptYWtlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpt
YWtlUmVkaXJlY3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OnVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9y
YWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVM
b2FkOjpyZWdpc3RlclN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
OjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3Bl
Y3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0
b3JhZ2U6OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjpyZWFkUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2
ZUZyb21NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJl
dHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6
ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246
ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29v
cmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bS5jcHA6CisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1l
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6TmV0d29ya1JUQ1Byb3ZpZGVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2Rlcik6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKToKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp1
bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
OgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmMpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5l
Y3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hk
b2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nKToKKyAgICAgICAgKElQQzo6Q29ubmVj
dGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNl
bmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25X
aW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhv
c3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAq
IFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwpOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAgICAgIChBUEk6OlVSTDo6Y3JlYXRlKToKKyAgICAg
ICAgKEFQSTo6VVJMOjpwYXJzZVVSTElmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU9iamVjdEludm9jYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFnZTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFnZVByb3h5Ol0pOgorICAgICAgICAoLVtfV0tSZW1v
dGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9jYXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAq
IFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAod2Vi
a2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVf
aXRlbV9uZXcpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dh
Y3Rpb24pOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2Nr
X2FjdGlvbik6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3Rv
Y2tfYWN0aW9uX3dpdGhfbGFiZWwpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X25ld193aXRoX3N1Ym1lbnUpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19zZXBhcmF0b3IpOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOgorICAgICAgICAqIFNoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NoYXJlZFJp
bmdCdWZmZXJTdG9yYWdlLmg6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGV4bWFwTGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJv
b3RMYXllcik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKToKKyAgICAgICAgKiBTaGFyZWQvUGx1
Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5z
L05QUmVtb3RlT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSZW1vdGVPYmplY3RN
YXA6OnJlZ2lzdGVyTlBPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFyZWFi
bGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9t
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElG
b3JtQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAgICAo
QVBJOjpIVFRQQ29va2llU3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
SWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9h
ZGluZ0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdL
Q29udGV4dFNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5j
cHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdL
Tm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6
CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQpOgorICAgICAg
ICAoV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRN
YXRjaGVzQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBv
bGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFj
L1dLUGFnZVByaXZhdGVNYWMubW06CisgICAgICAgICgtW1dLT2JzZXJ2YWJsZVBhZ2VTdGF0ZSBp
bml0V2l0aFBhZ2U6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3Bw
OgorICAgICAgICAoV0tWaWV3U2V0Vmlld0NsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciBfaW5pdFdpdGhQYWdlUmVmOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgICgtW1dLSFRU
UENvb2tpZVN0b3JlIGFkZE9ic2VydmVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0RG93bmxv
YWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0QXV0b21hdGlvbkRl
bGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOm5hbWU6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9s
bGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOnVzZXJDb250ZW50V29ybGQ6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoLVtfV0tBdXRvbWF0
aW9uU2Vzc2lvbiBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWR5U1FM
aXRlU3RhdGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwOgorICAgICAgICAod2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1
Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xp
ZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmNwcDoKKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNw
cDoKKyAgICAgICAgKGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdl
YmtpdEZhdmljb25EYXRhYmFzZU9wZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgICh3ZWJraXRGaW5kQ29udHJvbGxlckNv
bnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVu
dC5jcHA6CisgICAgICAgIChhdHRhY2hGb3JtQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdl
YmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEljb25Mb2Fk
aW5nQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGll
bnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmlj
YXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6
CisgICAgICAgICh3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21l
c3NhZ2VfaGFuZGxlcik6CisgICAgICAgICh3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9pbl93b3JsZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29u
dGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21h
dGlvbl9hbGxvd2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHA6CisgICAgICAgICh3ZWJraXRFbW9qaUNo
b29zZXJTZXR1cEVtb2ppU2VjdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYkluc3BlY3RvckNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5kbGVyKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBtYXliZUluc3RhbGxJY29uTG9h
ZGluZ0NsaWVudF0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9v
bDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVh
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwOgorICAgICAg
ICAoV0tXUEU6OlZpZXc6OlZpZXcpOgorICAgICAgICAoV0tXUEU6OlZpZXc6OnNldENsaWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcDoKKyAgICAgICAg
KFdQRVF0Vmlldzo6bm90aWZ5TG9hZENoYW5nZWRDYWxsYmFjayk6CisgICAgICAgIChXUEVRdFZp
ZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFjayk6CisgICAgICAgIChXUEVRdFZpZXc6OnJ1bkph
dmFTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tl
bmQuY3BwOgorICAgICAgICAoV1BFUXRWaWV3QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0
OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9J
Y29uTG9hZGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2Fk
aW5nRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU6OmNy
ZWF0ZUljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVN
ZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlRHJh
d2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRUZXh0SW5k
aWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1cmVDb250
cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdp
bmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRj
aEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZTo6Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVw
YWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5lY3RlZEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktp
dDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGx1Z2luUmVxdWlyZXNHdGsyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RUb1Byb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OmluaXRpYWxpemVEZWJ1Z0luZGljYXRvcik6CisgICAgICAgICog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQ
ZXJmb3JtYW5jZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAg
KFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5Ojpz
ZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6
c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRp
b25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldFVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJ
Y29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Rmlu
ZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXND
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdl
SWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9S
dW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2lu
Z0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
c2V0QXV0b21hdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fkcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1l
ZGlhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2ds
aWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5z
cGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Fu
ZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21wb3Np
dG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1h
Z2VDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJvbGxl
cjo6ZW5zdXJlRWRpdGFibGVJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FwcGxp
Y2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW06CisgICAgICAgICgtW1dLQXBwbGljYXRpb25TdGF0
ZVRyYWNraW5nVmlldyBkaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRp
YWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZp
ZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyRm9yV2ViVmlld10pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50RGlkRm9jdXM6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1
clByZXZpb3VzTm9kZTphY3Rpdml0eVN0YXRlQ2hhbmdlczp1c2VyT2JqZWN0Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAg
ICAgKC1bV0tUZXh0RmluZGVyQ2xpZW50IGluaXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmlu
ZFVJOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3Jl
RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tl
bmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6V2ViVmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFs
R2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRD
b25uZWN0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVTZXRDbGllbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAg
ICAgKFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VT
ZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQp
OgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAg
KFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV0tCdW5kbGVQ
YWdlT3ZlcmxheUNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tOgorICAgICAgICAoV0tCdW5kbGVQYWdl
QmFubmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Z2V0T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHA6Cisg
ICAgICAgICh3ZWJraXRXZWJFZGl0b3JDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYkV4dGVuc2lvbkNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcDoKKyAgICAgICAgKHdlYmtpdEZyYW1lR2V0
T3JDcmVhdGUpOgorICAgICAgICAod2Via2l0V2ViUGFnZUNyZWF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tOgorICAg
ICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBpbml0V2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlciBfc2V0Rm9ybURlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0
ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldENsaWVudCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ01lc3NhZ2U6OlBlbmRpbmdNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVNlcnZlclRjcFNv
Y2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0ZVVk
cFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OkNyZWF0
ZUNsaWVudFRjcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rv
cnk6OmNyZWF0ZU5ld0Nvbm5lY3Rpb25Tb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJS
VENTb2NrZXRGYWN0b3J5OjpDcmVhdGVBc3luY1Jlc29sdmVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yOjpQbHVnaW5EZXN0cnVjdGlv
blByb3RlY3Rvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxl
VGltZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
ZWxpdmVyRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9O
ZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDEx
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZzo6UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1
YmZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Om1fdGV4dEF1dG9TaXppbmdBZGp1c3RtZW50VGltZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNl
TG9hZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxl
VUlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmJlZ2luUHJpbnRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmludE9wZXJhdGlvbkd0azo6cHJpbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVy
Ojp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0RyYXdpbmdBcmVhTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2Vi
S2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OlNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpw
cm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
dXBkYXRlQ1BVTW9uaXRvclN0YXRlKToKKwogMjAxOS0wOC0xMyAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlciBBZ2VudCBhbmQgU2Vzc2lvbklEIHNob3Vs
ZCBiZSBnaXZlbiB0byBOZXR3b3JrUlRDUHJvdmlkZXIgdG8gc2V0IHVwIHRoZSBjb3JyZWN0IHBy
b3h5IGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDRjNTFlOTY1ZjY4MjZiZWMz
ZWU5MmU3NTI5NTg3ZTFiMWIyZDA0M2EuLjgyYjYwMzFiMWI5YjQ2OWJhYTkwYjRhZGE4OGMxMzcw
NGM1NDI0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTktMDgt
MTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBB
ZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdl
cjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVybWluYXRlKToKKyAgICAgICAgKiBTdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OlN0
b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXAuY3BwOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIwMTktMDgtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJREItc3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9jZi9DaGFuZ2VMb2cKaW5kZXggYzYzZWZhYmE1ZDg4NjgzYmVmYmYxNjk1OGZmMWZlMDAwNGVh
OWM2Yi4uNWRlZDIzNjZiM2FlZTExYzgzM2E4Njc5YWI4ZjU4MThiYWFhN2Y1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVl
PFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVGcm9u
dGVuZFNldHRpbmdzKToKKwogMjAxOS0wOC0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihyMjQ4NDU0KTogV0sx
IGluc3BlY3RvciBmcm9udGVuZCBjbGllbnQgZG9lc24ndCBxdWV1ZSBtZXNzYWdlcyB0byB0aGUg
ZnJvbnRlbmQgYmVmb3JlIGl0J3MgbG9hZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5k
ZXggODViZmU3ZmU3YWE0YzNmN2ZjYmIyZDcyOGRiNWRlYTdhZGFiYThmZi4uMjIzYzlmMDZkYzMw
ZWRlMTAyMTUxODQ5MzRlYmRmMTI1OWFiMzY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3Vy
ZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbToKKyAgICAg
ICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVy
czpzdGlja3lDb250YWluZXJNYXA6XSk6CisKIDIwMTktMDctMjkgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBkaWRGaW5p
c2hDb250ZW50Q2hhbmdlT2JzZXJ2aW5nIHNob3VsZCBpbmNsdWRlIHRoZSB0eXBlIG9mIGNvbnRl
bnQgY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDY4NTUzNTY2Mjg4MWU3
MTI3ODc2OWU0MTZiNDllOTgxZmE5NTdmMmIuLjRmZTk3MWM5ZWQ0MWJiYjYwNzdjNWZjODZlOWU3
NThmNTVkMzY5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBA
QAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxv
Y2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
SGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBpbml0
XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbToKKyAgICAgICAgKC1bV2Vi
SGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246XSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChX
S1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkpOgorICAgICAgICAoV0tQQ0Jvb2xlYW5SZXBs
eSk6CisgICAgICAgIChXS1BDQm9vbGVhbkFuZERhdGFSZXBseSk6CisgICAgICAgIChXS1BDSW5z
dGFudGlhdGVQbHVnaW5SZXBseSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQpOgor
ICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgt
W1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBjcmVhdGVQbHVnaW5dKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tOgorICAgICAgICAoV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZSk6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmg6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBz
Y2hlZHVsZVRpbWVyV2l0aEludGVydmFsOnJlcGVhdDp0aW1lckZ1bmM6XSk6CisgICAgICAgICog
U3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW06CisgICAgICAgIChEaWRNb2RpZnlP
cmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKGFkZFJlZGlyZWN0
VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06CisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2F0dGFjaFNjcmlwdERlYnVnZ2VyXSk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmg6CisgICAgICAg
ICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tOgorICAgICAgICAoV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV2ViVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFu
Z2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgrW1dl
YlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJs
YWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJW
aWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6
YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRUZXh0SW5kaWNh
dG9yOndpdGhMaWZldGltZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgor
ICAgICAgICAoV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2No
ZWR1bGVyKToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5pdF0pOgorCiAyMDE5LTA4LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRocmVhZGlu
ZyBhc3NlcnRpb25zIHRvIFJlZkNvdW50ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRl
eCBmNTFlMDQ0MmU1NmJmNzIzYTAxYjMwZGU4OGZiYzgxNTgzMTg0NDA5Li4yZWJhNjEzOTAwN2Uy
MTM2MjFlYTEwMjQyMzVmM2EyMzA3MWU0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6Cisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmxvYWQpOgorICAgICAgICAqIFBs
dWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojp3
bmRQcm9jKToKKyAgICAgICAgKiBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJv
bWVDbGllbnQ6OldlYkNocm9tZUNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojpv
cGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdo
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVy
dHlCYWcuY3BwOgorICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJv
cGVydHlCYWcpOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhp
c3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgICog
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdL
UUNBOjpDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQpOgorICAg
ICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHA6CisgICAgICAgIChXZWJOb3RpZmljYXRp
b25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAgICogV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6
OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUpOgorICAgICAgICAoV2ViVmlldzo6ZW50ZXJW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNl
clNjcmlwdFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dy
b3VwKToKKyAgICAgICAgKFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorCiAy
MDE5LTA4LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgSURCLXNwZWNpZmljIHF1b3RhCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggM2YwZmIyZTFjZWVhZWYwNjU5
YzM0YzgyNzFiZWVjMTA4MjM3NTZlZC4uMGQ1NWZlN2UxYmI2NTFlOTgxMGNjOGIyMzk4MTg3ZjY3
ZTk5N2VmMCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTEzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXAuaDoKKyAg
ICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg6CisKIDIwMTktMDctMjQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbYm1hbGxvY10gQWRkIElzb0hl
YXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBub3QgYWxsb2NhdGluZyB0
b28gbGFyZ2UgVkEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKaW5kZXggMDdkNzA5YmExMmM4MmM4NTQ4MmQ3M2M3MjM3N2Y1MTllN2ZjMmE1Yy4uZDBlNjI1
MjgyYTg0ZjRmMzVlZWRlZDE5NWVkYjhkYzg5N2IxYTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IEpT
Q2FsbGJhY2tPYmplY3REYXRhIHsKICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKLSAgICAgICAg
ICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTUHJpdmF0ZVByb3Bl
cnR5TWFwPigpOworICAgICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8
SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7CiAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPnNl
dFByaXZhdGVQcm9wZXJ0eSh2bSwgb3duZXIsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKaW5kZXggYWUzYTZmZTNhY2Y5YzZhODAzOTRlMWQ3MzRmYTMxN2Q5MDhm
YWUyYy4uOWNhM2I0YmY0MDg1MDc1MGI4YmM0MTk0OWY3NTA0MmIzNTcyMzFlYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PiogSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+Ojphc0NhbGxiYWNrT2JqZWN0KEVuY28KIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNz
LCB2b2lkKiBkYXRhKQogICAgIDogUGFyZW50KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKLSAgICAs
IG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxsYmFja09iamVjdERh
dGE+KGRhdGEsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVjdERhdGEobWFrZVVuaXF1
ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwganNDbGFzcykpCiB7CiB9CiAKQEAgLTY3LDcg
KzY3LDcgQEAgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+
CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoVk0mIHZtLCBKU0Ns
YXNzUmVmIGpzQ2xhc3MsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDogUGFyZW50KHZtLCBz
dHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpT
Q2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKKyAgICAsIG1fY2FsbGJhY2tP
YmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xh
c3MpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAppbmRl
eCBmMWM5ZDU3MDJhOGFhNjkwNDRkZmIyOTViNDcxZmNmY2JjODkwYjZiLi43ZWVjMmE5MGE0NGY4
NjBiYWEyMjc2Yjk2ZDQ1ZjJiZDY4NjE3MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDbGFzc1JlZi5jcHAKQEAgLTU5LDIxICs1OSwyMSBAQCBPcGFxdWVKU0NsYXNzOjpPcGFxdWVK
U0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBPcGFxdWVKU0NsYXNz
KgogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogICAgIGlmIChjb25zdCBKU1N0YXRpY1Zh
bHVlKiBzdGF0aWNWYWx1ZSA9IGRlZmluaXRpb24tPnN0YXRpY1ZhbHVlcykgewotICAgICAgICBt
X3N0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVl
c1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IG1ha2VVbmlxdWU8T3BhcXVlSlND
bGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3RhdGljVmFsdWUtPm5h
bWUpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0
YXRpY1ZhbHVlLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghdmFsdWVOYW1lLmlzTnVsbCgpKQot
ICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1lLmltcGwoKSwgc3Rk
OjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVydHks
IHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVl
TmFtZSkpOworICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1lLmlt
cGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVy
dHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJpYnV0ZXMsIHZh
bHVlTmFtZSkpOwogICAgICAgICAgICAgKytzdGF0aWNWYWx1ZTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGlmIChjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5jdGlvbiA9IGRlZmlu
aXRpb24tPnN0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IHN0
ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAg
ICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1
bmN0aW9uc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3RhdGljRnVuY3Rpb24tPm5hbWUpIHsK
ICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRp
Y0Z1bmN0aW9uLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghZnVuY3Rpb25OYW1lLmlzTnVsbCgp
KQotICAgICAgICAgICAgICAgIG1fc3RhdGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmlt
cGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihzdGF0aWNGdW5jdGlv
bi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0aW9uLT5hdHRyaWJ1dGVzKSk7CisgICAgICAg
ICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBtYWtl
VW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5jYWxsQXNGdW5jdGlv
biwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgICAgICsrc3RhdGljRnVu
Y3Rpb247CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjgsMjEgKzEyOCwyMSBAQCBPcGFxdWVKU0Ns
YXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShKU0M6OlZNJiwgT3BhcXVl
SlNDbGFzcyoganNDbAogICAgIDogbV9jbGFzcyhqc0NsYXNzKQogewogICAgIGlmIChqc0NsYXNz
LT5tX3N0YXRpY1ZhbHVlcykgewotICAgICAgICBzdGF0aWNWYWx1ZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAgICAgICAgc3RhdGljVmFs
dWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CiAgICAg
ICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
anNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmVuZCgpOwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xh
c3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRp
Y1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQo
IWl0LT5rZXktPmlzQXRvbSgpKTsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBpdC0+
a2V5LT5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKHZhbHVl
TmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQtPnZhbHVl
LT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5hdHRyaWJ1
dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKHZhbHVlTmFt
ZS5pbXBsKCksIG1ha2VVbmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQtPnZhbHVlLT5nZXRQcm9w
ZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1
ZU5hbWUpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChqc0NsYXNzLT5tX3N0YXRpY0Z1
bmN0aW9ucykgewotICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9w
YXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAgICAgc3RhdGljRnVuY3Rp
b25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CiAg
ICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0ganNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMtPmVuZCgpOwogICAgICAgICBmb3IgKE9w
YXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0Ns
YXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKLSAgICAgICAgICAgIHN0YXRpY0Z1
bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0
YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rpb24sIGl0LT52YWx1ZS0+
YXR0cmlidXRlcykpOworICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5hZGQoaXQtPmtleS0+
aXNvbGF0ZWRDb3B5KCksIG1ha2VVbmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oaXQtPnZhbHVl
LT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzKSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBPcGFx
dWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHREYXRhID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5vcGFxdWVKU0NsYXNzRGF0YSgpLmFkZCh0aGlzLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFjb250ZXh0RGF0YSkKLSAgICAgICAgY29udGV4
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4oZXhlYy0+
dm0oKSwgdGhpcyk7CisgICAgICAgIGNvbnRleHREYXRhID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0Ns
YXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwogICAgIHJldHVybiAqY29udGV4dERh
dGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5n
Q29uc3RyYWludFByaXZhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKaW5kZXggZDllZTY3NDAzNDljZmVmZGZiY2MwZDMxMDk0
ZjFmNGRlNWE1MmMxZS4uYmE0YTVhMTY2OTdhZjVmOGE5NzIyZTU3NDY5ZTM5NGQ5NzkwNDJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25z
dHJhaW50UHJpdmF0ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU0NvbnRleHRHcm91cEFk
ZE1hcmtpbmdDb25zdHJhaW50KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBKU01hcmtpbmdDb25z
dHIKICAgICAvLyBlbHNlIGdldHMgbWFya2VkLgogICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZv
bGF0aWxpdHkgPSBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVkQnlNYXJraW5nOwogICAgIAot
ICAgIGF1dG8gY29uc3RyYWludCA9IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0
cmFpbnQ+KAorICAgIGF1dG8gY29uc3RyYWludCA9IG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0Nv
bnN0cmFpbnQ+KAogICAgICAgICB0b0NTdHJpbmcoIkFtYyIsIGNvbnN0cmFpbnRJbmRleCwgIigi
LCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWludENhbGxiYWNrKSksICIp
IiksCiAgICAgICAgIHRvQ1N0cmluZygiQVBJIE1hcmtpbmcgQ29uc3RyYWludCAjIiwgY29uc3Ry
YWludEluZGV4LCAiICgiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWlu
dENhbGxiYWNrKSksICIsICIsIFJhd1BvaW50ZXIodXNlckRhdGEpLCAiKSIpLAogICAgICAgICBb
Y29uc3RyYWludENhbGxiYWNrLCB1c2VyRGF0YV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1dyYXBwZXJNYXAubW0KaW5kZXggZDQ2OWI3NWEzMWYwZWZjYTlkMDdhYmIwM2IwYmU2NjE2MWIz
OTU2Ny4uNGI1OTkwNzNmZTc2YjQ4NjQ0MzY5OWFiZGNiMzRjNDE2NGJjMmUzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYwNiw3ICs2MDYsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRS
ZWYpY29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0g
TlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBl
cnNvbmFsaXR5OwogICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9j
XSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25z
IGNhcGFjaXR5OjBdOwogCi0gICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4o
dG9KUyhjb250ZXh0KS0+dm0oKSk7CisgICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gbWFrZVVuaXF1
ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4o
dG9KUyhjb250ZXh0KS0+dm0oKSk7CiAKICAgICBBU1NFUlQoIXRvSlNHbG9iYWxPYmplY3QoY29u
dGV4dCktPndyYXBwZXJNYXAoKSk7CiAgICAgdG9KU0dsb2JhbE9iamVjdChjb250ZXh0KS0+c2V0
V3JhcHBlck1hcChzZWxmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakND
YWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IGVlOTMyODIxZWY3NGJkNjg5MWFlOGYyOWZhZDdiYmE1
YWZlYTBjYmMuLjczY2I0MjcwNDM4MTgzMWU4MTlkOWQ5NDNlYjllNTQ0MDMwOTZmOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQpA
QCAtMTk1LDE4ICsxOTUsMTggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZURv
dWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50RG91YmxlPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50RG91YmxlPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVC
b29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3Vt
ZW50Qm9vbGVhbj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgp
CkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudElk
PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNo
YXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpCkBAIC0yMjgsMTkgKzIyOCwxOSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAoY2xzID09IFtKU1Zh
bHVlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
QXJndW1lbnRKU1ZhbHVlPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudEpTVmFsdWU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TU3RyaW5nIGNsYXNz
XSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRO
U1N0cmluZz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1l
bnROU1N0cmluZz4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNOdW1iZXIgY2xhc3NdKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TTnVtYmVy
PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TTnVt
YmVyPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0RhdGUgY2xhc3NdKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RhdGU+KCk7CiAgICAg
ICAgIGlmIChjbHMgPT0gW05TQXJyYXkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKICAgICAgICAgaWYgKGNs
cyA9PSBbTlNEaWN0aW9uYXJ5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEaWN0aW9uYXJ5PigpOwogCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqKQpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFN0
cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChOU0ludm9jYXRpb24gKmlu
dm9jYXRpb24gPSB2YWx1ZVRvVHlwZUludm9jYXRpb25Gb3IoY29weSkpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3RydWN0PihpbnZvY2F0aW9u
LCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRT
dHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiB9OwpAQCAtMzM1LDQ1ICszMzUsNDUgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBl
RG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
UmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tS
ZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVC
b29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVz
dWx0Qm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRC
b29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lkKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lkPigpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVN0cnVjdChjb25zdCBjaGFyKiBiZWdpbiwgY29uc3Qg
Y2hhciogZW5kKQogICAgIHsKICAgICAgICAgU3RyaW5nUmFuZ2UgY29weShiZWdpbiwgZW5kKTsK
ICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IHR5cGVUb1ZhbHVlSW52b2Nh
dGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxi
YWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMg
SlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JJbnZvY2F0aW9uKEpTQ29udGV4dCAq
Y29udGV4dCwgTlNJbnZvYwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKICAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKLSAgICBhdXRvIGltcGwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihpbnZvY2F0aW9uLCB0eXBl
LCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUocmVzdWx0KSk7Cisg
ICAgYXV0byBpbXBsID0gbWFrZVVuaXF1ZTxKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4o
aW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZN
b3ZlKHJlc3VsdCkpOwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IGltcGwtPm5hbWUoKTsKICAg
ICByZXR1cm4gdG9SZWYoSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG5hbWUsIFdURk1vdmUoaW1wbCkpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCBlMDFlOTcw
YzdmNTgwMzY1NjE4ZWYxZGFiODU1NDRkNzA0ZjliNDdhLi43OGQ3NjU1ZmY4MDc3NjBkNDYwOGE2
MTdlNTdjOTBmMTU0Mjc5OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ0NvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHZvaWQganNjQ29udGV4
dFNldFZpcnR1YWxNYWNoaW5lKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdSZWZQdHI8SlNDVmlydHVh
bE0KICAgICAgICAgICAgIHByaXYtPmpzQ29udGV4dCA9IEpTUmV0YWluUHRyPEpTR2xvYmFsQ29u
dGV4dFJlZj4oQWRvcHQsIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoanNjVmlydHVhbE1h
Y2hpbmVHZXRDb250ZXh0R3JvdXAocHJpdi0+dm0uZ2V0KCkpLCBudWxscHRyKSk7CiAgICAgICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlNHbG9iYWxPYmplY3QocHJpdi0+anNDb250ZXh0Lmdl
dCgpKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPndyYXBwZXJNYXAoKSkKLSAgICAgICAg
ICAgIGdsb2JhbE9iamVjdC0+c2V0V3JhcHBlck1hcChzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V3Jh
cHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgpKSk7CisgICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldFdyYXBwZXJNYXAobWFrZVVuaXF1ZTxKU0M6OldyYXBwZXJNYXA+KHByaXYtPmpzQ29u
dGV4dC5nZXQoKSkpOwogICAgICAgICBqc2NWaXJ0dWFsTWFjaGluZUFkZENvbnRleHQocHJpdi0+
dm0uZ2V0KCksIGNvbnRleHQpOwogICAgIH0gZWxzZSBpZiAocHJpdi0+dm0pIHsKICAgICAgICAg
QVNTRVJUKHByaXYtPmpzQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKaW5kZXggMTFiYjdjMGI4NzM3ZGI2N2RkMTdkY2QyNGY3
MDI5NDM0NDY5YTgwMy4uZjUyM2VhNDE5OWY4YWJkNzMyZjc3YjYyODE0MTIwMTM0YmI4YmVhOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFdyYXBwZXJNYXA6OldyYXBw
ZXJNYXAoSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCkKLSAgICA6IG1fY2FjaGVkSlNXcmFw
cGVycyhzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpTT2Jq
ZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKKyAgICA6IG1fY2FjaGVkSlNXcmFwcGVycyht
YWtlVW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhq
c0NvbnRleHQpLT52bSgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHAKaW5kZXggYTc1ZjU4ZGMxNDZiM2I2NDk1Y2ViMTY3YWRmNGRh
YmZmMDZiMGM4OS4uZGE0NzcwNTFmMzQ1ZTA3MTY4ZmM3ZDA2ZTBjN2Y1MjYzMTE4NmU2MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCkBAIC0x
MzQsNyArMTM0LDcgQEAgUGFnZSogU3RhY2s6OmVuc3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcykK
ICAgICBpZiAoTElLRUxZKGl0ICE9IG1fcGFnZXMuZW5kKCkpKQogICAgICAgICBtX2xhc3RBY2Nl
c3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYWdlPiBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihi
YXNlQWRkcmVzcyk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFzZUFkZHJl
c3MsIFdURk1vdmUocGFnZSkpOwogICAgICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKaW5kZXggMmM5YzNiMGRlODllYjNlMzgzZjRjYmRjZjIxMmQyNjhjMWMx
OWRiYS4uN2Y2ODU4NmMxYzAyODljMGEzMjUyMmZkZTllMDY3ZGYxZjQxZTIxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTEyNDEsNyArMTI0MSw3IEBA
IGNsYXNzIExvd2VyVG9BaXIgewogICAgIHZvaWQgcHJpbnQoVmFsdWUqIG9yaWdpbiwgQXJndW1l
bnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgYXV0byBwcmludExpc3QgPSBQcmlu
dGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0KGFyZ3VtZW50cy4uLik7Ci0gICAgICAgIGF1dG8gcHJp
bnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3Bl
Y2lhbChzdGQ6Om1ha2VfdW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmludExpc3QpKSk7Cisg
ICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwq
PihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmludExp
c3QpKSk7CiAgICAgICAgIEluc3QgaW5zdChBaXI6OlBhdGNoLCBvcmlnaW4sIEFyZzo6c3BlY2lh
bChwcmludFNwZWNpYWwpKTsKICAgICAgICAgUHJpbnRlcjo6YXBwZW5kQWlyQXJncyhpbnN0LCBz
dGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKICAgICAgICAgYXBwZW5kKFdU
Rk1vdmUoaW5zdCkpOwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgY2xhc3MgTG93ZXJUb0FpciB7CiAg
ICAgewogICAgICAgICBpZiAoIWZpZWxkKSB7CiAgICAgICAgICAgICBmaWVsZCA9IHN0YXRpY19j
YXN0PFQqPigKLSAgICAgICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5p
cXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKSk7CisgICAgICAg
ICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJn
dW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmaWVs
ZDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAppbmRleCBm
ZmNiMmQ0ZTI3MTQ0Mjk3MGU1NDY0MzY2NzBmN2YyOWRlYjFhYjFjLi4yZWNjZGFjMDQ5ZTY4ZDEx
M2UyM2Y5N2YyNDM1M2E1ZDRhYWEzYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CiBQcm9jZWR1cmU6OlByb2NlZHVyZSgpCiAgICAgOiBtX2NmZyhuZXcgQ0ZHKCp0aGlzKSkK
ICAgICAsIG1fbGFzdFBoYXNlTmFtZSgiaW5pdGlhbCIpCi0gICAgLCBtX2J5cHJvZHVjdHMoc3Rk
OjptYWtlX3VuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQorICAgICwgbV9ieXByb2R1Y3RzKG1h
a2VVbmlxdWU8T3BhcXVlQnlwcm9kdWN0cz4oKSkKICAgICAsIG1fY29kZShuZXcgQWlyOjpDb2Rl
KCp0aGlzKSkKIHsKICAgICBtX2NvZGUtPnNldE51bUVudHJ5cG9pbnRzKG1fbnVtRW50cnlwb2lu
dHMpOwpAQCAtMzExLDI4ICszMTEsMjggQEAgdm9pZCBQcm9jZWR1cmU6OmRlbGV0ZU9ycGhhbnMo
KQogRG9taW5hdG9ycyYgUHJvY2VkdXJlOjpkb21pbmF0b3JzKCkKIHsKICAgICBpZiAoIW1fZG9t
aW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxEb21pbmF0
b3JzPigqdGhpcyk7CisgICAgICAgIG1fZG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8RG9taW5hdG9y
cz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9kb21pbmF0b3JzOwogfQogCiBOYXR1cmFsTG9vcHMm
IFByb2NlZHVyZTo6bmF0dXJhbExvb3BzKCkKIHsKICAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQot
ICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigq
dGhpcyk7CisgICAgICAgIG1fbmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxOYXR1cmFsTG9vcHM+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOwogfQogCiBCYWNrd2FyZHNDRkcm
IFByb2NlZHVyZTo6YmFja3dhcmRzQ0ZHKCkKIHsKICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZHKQot
ICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZHPigq
dGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNDRkc+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQogCiBCYWNrd2FyZHNEb21p
bmF0b3JzJiBQcm9jZWR1cmU6OmJhY2t3YXJkc0RvbWluYXRvcnMoKQogewogICAgIGlmICghbV9i
YWNrd2FyZHNEb21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNr
d2FyZHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTM1OCw3ICszNTgs
NyBAQCB2b2lkKiBQcm9jZWR1cmU6OmFkZERhdGFTZWN0aW9uKHNpemVfdCBzaXplKQogewogICAg
IGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YVNlY3Rpb24+
KHNpemUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4gZGF0YVNlY3Rpb24gPSBt
YWtlVW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKICAgICB2b2lkKiByZXN1bHQgPSBkYXRhU2Vj
dGlvbi0+ZGF0YSgpOwogICAgIG1fYnlwcm9kdWN0cy0+YWRkKFdURk1vdmUoZGF0YVNlY3Rpb24p
KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29k
ZS5jcHAKaW5kZXggMzNmOGFiZmVmYmMxZjhmOTE2NTQ1YTNiZGNhMTk2YjBjYzY2YzM5OC4uZDVk
NjljMzBhNTk5MTc1ZjI4MTQ4MzYyODYzNmZjYjc3MDY4MDE2NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgQ0NhbGxTcGVjaWFs
KiBDb2RlOjpjQ2FsbFNwZWNpYWwoKQogewogICAgIGlmICghbV9jQ2FsbFNwZWNpYWwpIHsKICAg
ICAgICAgbV9jQ2FsbFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxDQ2FsbFNwZWNpYWwqPigKLSAgICAg
ICAgICAgIGFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbFNwZWNpYWw+KCkpKTsKKyAg
ICAgICAgICAgIGFkZFNwZWNpYWwobWFrZVVuaXF1ZTxDQ2FsbFNwZWNpYWw+KCkpKTsKICAgICB9
CiAKICAgICByZXR1cm4gbV9jQ2FsbFNwZWNpYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGYzNmI5YjJmZTY2ODE2MGI4ODk5YjBjNTBiMzE5
N2Q3NTg4MjRmODAuLjk1Y2FhMDA0ZDhlYjM5MjMzMGUxY2NiYjYzOWE1Y2VlNzljYmM3OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCkBAIC0xMDAs
NyArMTAwLDcgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAg
ICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvZGUubV9nZW5lcmF0
ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9j
YXRlUmVnaXN0ZXJzPihjb2RlKTsKKyAgICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVS
ZWdpc3RlcnMgPSBtYWtlVW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM+KGNvZGUp
OwogICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycy0+cHJlcGFyZUZv
ckdlbmVyYXRpb24oKTsKIAogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci90ZXN0YWlyLmNwcAppbmRleCBlZjE1NDRjMDdiYjMyYTkwMzdmMmNiNzFlMTVlNzRhOWJl
NjFiZjk0Li4zZGNhMjk2Nzg4YjAwMTA2OGUwMWY0MjNlMTE2YzdjMmE0ZTdkYTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gY29tcGlsZShCMzo6UHJvY2VkdXJlJiBwcm9j
KQogICAgIGdlbmVyYXRlKHByb2MuY29kZSgpLCBqaXQpOwogICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcihqaXQsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNv
bXBpbGF0aW9uPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAg
ICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0
YWlyIGNvbXBpbGF0aW9uIiksIHByb2MucmVsZWFzZUJ5cHJvZHVjdHMoKSk7CiB9CiAKQEAgLTE4
NTUsNyArMTg1NSw3IEBAIHZvaWQgdGVzdEludmFsaWRhdGVDYWNoZWRUZW1wUmVnaXN0ZXJzKCkK
ICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjpiaWdJbW0oYml0d2lzZV9jYXN0
PGludHB0cl90PigmdGhpbmdzKSksIGJhc2UpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIHBhdGNo
UG9pbnQxUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRj
aHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRj
aHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNp
YWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkp
OwogCiAgICAgLy8gSW4gUGF0Y2hwb2ludCwgTG9hZCB0aGluZ3NbMF0gLT4gdG1wLiBUaGlzIHdp
bGwgbWF0ZXJpYWxpemUgdGhlIGFkZHJlc3MgaW4geDE3IChkYXRhTWVtb3J5UmVnaXN0ZXIpLgog
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQxID0gcGF0Y2hQb2ludDFSb290LT5h
cHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4o
KSk7CkBAIC0xOTMwLDcgKzE5MzAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZCgpCiAg
ICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJl
Z2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lh
bCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFk
ZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6
OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1
ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2
b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDIoKQogICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZv
Ojphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQpOwogCi0gICAgQjM6
OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjpt
YWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNp
YWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBh
dGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9v
dC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3Jp
Z2luKCkpOwpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQz
KCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2Mu
cGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRT
cGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRT
cGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNv
ZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAg
ICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuaAppbmRleCAxNTVjYTRhYjQ3MGIwMTQ0MmFkOTU0M2E4YWUxZmMxZmM1OWY3ZTNhLi4x
YzdhZDBmOTRlMDZiOGMzMWJmZTdjYzk0ZDA1NTJjNDc3OTYwN2U3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiMy5oCkBAIC0xODksNyArMTg5LDcgQEAgZXh0ZXJuIExvY2sgY3Jhc2hMb2NrOwog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY29tcGlsZVByb2MoUHJvY2VkdXJl
JiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsID0gT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2
ZWwoKSkKIHsKICAgICBwcm9jZWR1cmUuc2V0T3B0TGV2ZWwob3B0TGV2ZWwpOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1cmUpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJl
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBjMTA4
NTlhY2VkM2RiNzhiNjY0OTc2YTA4YjhlNWI0OGQ2NTJiMmYzLi43N2ZiNjVkYTBiN2EwNmM3ZDY1
OGJhYmRiNGU1MTA4YTc5MTdlZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC04NTMsNyArODUzLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpn
ZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIHN0
YXRlLnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcihzcGlsbFN0YXRlKTsKIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWFjY2Vzcy5jYWxsTGlua0luZm8oKSk7Ci0gICAgICAgICAg
ICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rSW5mbz4o
KTsKKyAgICAgICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IG1ha2VVbmlxdWU8Q2FsbExp
bmtJbmZvPigpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2VuZXJhdGVkIGEgcG9s
eW1vcnBoaWMgY2FsbCBzdHViIHRoYXQganVtcGVkIGJhY2sgdG8gdGhlIGdldHRlcgogICAgICAg
ICAgICAgLy8gc3R1Yiwgd2hpY2ggdGhlbiBqdW1wZWQgYmFjayB0byB0aGUgbWFpbiBjb2RlLCB0
aGVuIHdlJ2QgaGF2ZSBhIHJlYWNoYWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKaW5kZXggMmJk
OWZlNjUxOTlkMDdmMTczZTM4MzBkYzc0ZTQ2N2ViOWQ1NDFmYy4uOTI1N2ZjMjI2NjUyOWY4NjEz
N2Q1ZGFkOGM5MjQ5NzE4MzkwNDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCkBAIC0xMDMsNyAr
MTAzLDcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyA6IHB1Ymxp
YyBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6U2xvd1AKICAgICB2b2lkIEFjY2Vzc0Nhc2VTbmlw
cGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJv
bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBl
IHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvID0gaml0LmxhYmVsKCk7IFwKLSAgICAgICAgbV9nZW5l
cmF0b3JzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhB
cmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlw
ZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAor
ICAgICAgICBtX2dlbmVyYXRvcnMuYXBwZW5kKG1ha2VVbmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJh
dG9yV2l0aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBS
ZXN1bHRUeXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJn
cykpOyBcCiAgICAgfSBcCiAKIFNOSVBQRVRfU0xPV19QQVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FM
TF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCAzM2JiMGMwNjYzNTM4MWU4OThmNjVhODc0ZjFm
MzZhOGM5NDgyM2FmLi4xMGM2NWJiOWRkNzA5YTlhZjdhYmE2Y2ViOGE5YjczNTk3NzE2NDFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcApAQCAtNjUsMTUgKzY1LDE1IEBAIHZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAg
ICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Js
b2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CiAKLSAgICBhdXRv
IGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFz
aWNCbG9jazo6RW50cnlCbG9jayk7Ci0gICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7
CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29k
ZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZmlyc3RCbG9jayA9IG1ha2VVbmlx
dWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOwog
ICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCiAgICAgYXBw
ZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVu
dCA9IGZpcnN0QmxvY2suZ2V0KCk7CiAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2Nr
KSk7CiAKLSAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9j
az4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOworICAgIGF1dG8gZXhpdCA9IG1ha2VV
bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7
CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAKQEAgLTg0LDcg
Kzg0LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBib29sIGNyZWF0ZWRCbG9j
ayA9IGZhbHNlOwogICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29kZSBpcyBhIGp1bXAg
dGFyZ2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgogICAg
ICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZz
ZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7Ci0gICAgICAgICAgICBhdXRvIG5ld0Js
b2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGluc3RydWN0aW9uKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9j
az4oaW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwog
ICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAg
Y3JlYXRlZEJsb2NrID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDhkYWMxNTg1ZmFiMmI5OThjMWU1ZDg4NzUyYmExMmRm
NmRhZGJkZS4uMzkzZjE4MjRlNDFhNGJlYjUxNGM2MmE2OTZmMzNhODM3MjQ5NWNkZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTI2
NSw3ICsyNjUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKIAogdm9p
ZCBDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1lU2h1ZmZs
ZURhdGEmIHNodWZmbGVEYXRhKQogewotICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKKyAgICBtX2ZyYW1l
U2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0
YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBlZjFjYWJmYTcxOGIwODBkN2YzZTg2MzdmOWY5NGY2
MDU4NmVlNGU4Li4zOWEyM2I0YzdmNDdkOGZjZTVlMzBlZWNhNTUwZTc3ZGFkMzE1ODZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTMzNyw3
ICsxMzM3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQog
Q29kZUJsb2NrOjpKSVREYXRhJiBDb2RlQmxvY2s6OmVuc3VyZUpJVERhdGFTbG93KGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYpCiB7CiAgICAgQVNTRVJUKCFtX2ppdERhdGEpOwotICAgIG1faml0
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGF0YT4oKTsKKyAgICBtX2ppdERhdGEgPSBtYWtl
VW5pcXVlPEpJVERhdGE+KCk7CiAgICAgcmV0dXJuICptX2ppdERhdGE7CiB9CiAKQEAgLTE1NTAs
NyArMTU1MCw3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6cmFyZUNhc2VQcm9maWxlQ291bnRGb3JC
eXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrCiB2b2lkIENvZGVCbG9jazo6c2V0
Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogewog
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBlbnN1cmVKSVREYXRh
KGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3Rl
ckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CisgICAgZW5zdXJlSklURGF0YShs
b2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8UmVnaXN0ZXJBdE9mZnNl
dExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOwogfQogCiB2b2lkIENvZGVCbG9jazo6c2V0Q2Fs
bGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJl
Z2lzdGVyQXRPZmZzZXRMaXN0KQpAQCAtMTc5MCw3ICsxNzkwLDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXRTbG93KGNvbnN0
IE9wQ2F0Y2gKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytpKQog
ICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
KTsKIAotICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgIGF1dG8gcHJvZmlsZXMg
PSBtYWtlVW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5z
aXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5tX3NpemUgPT0gbGl2ZU9wZXJh
bmRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3Np
emU7ICsraSkKICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9
IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCA4NzA2OGJhNjVkZDg1YzIzZmJlNGE0OTBlOTc0YTcyODFmMjU2
MDRjLi4zMTQzOGUwYWM1MDY5YjI3NDk2OTg4ODZhYjExMjAwNzZiY2I3M2IxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC05NDMsNyArOTQzLDcgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0
YUlmTmVjZXNzYXJ5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkgewotICAgICAg
ICAgICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAg
ICAgICAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAg
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIG1fY2F0Y2hQcm9maWxlcyBjYW4gYmUgdG91
Y2hlZCBmcm9tIGNvbXBpbGVyIHRocmVhZHMuCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RG
TW92ZShyYXJlRGF0YSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4IDJkOTQzMWNmMGIxNDRmYTNhMmMyMjFh
NjZlOTQwNzBjNzc1MGUwZTAuLmIxYTAxZmZhNGQ5MzQ4ZmVjYjI0Yzk2ODhiYzgwMDUyZjkzODg2
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9m
aWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIEV4aXRQcm9maWxlOjphZGQoQ29kZUJsb2Nr
KiBvd25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAvLyBJZiB3ZSd2ZSBu
ZXZlciBzZWVuIGFueSBmcmVxdWVudCBleGl0cyB0aGVuIGNyZWF0ZSB0aGUgbGlzdCBhbmQgcHV0
IHRoaXMgc2l0ZQogICAgIC8vIGludG8gaXQuCiAgICAgaWYgKCFwcm9maWxlLm1fZnJlcXVlbnRF
eGl0U2l0ZXMpIHsKLSAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CisgICAgICAgIHByb2ZpbGUu
bV9mcmVxdWVudEV4aXRTaXRlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+
PigpOwogICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMtPmFwcGVuZChzaXRlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcApp
bmRleCA0ZjQ4YTFkNmM5ODcyMmU1YWMyZWNlODdlNTA0MDIzMmY5YTVkNmIxLi40ZmIxMTU3MzAw
M2I1MmVmZDlhODY2ZmIzYmRmNzc1MDk4Y2VmYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6
Y29tcGlsYXRpb25EaWRDb21wbGV0ZShDb2RlQmxvY2sqLCBDb2RlQmxvY2sqLAogVmVjdG9yPERl
ZmVycmVkU291cmNlRHVtcD4mIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6ZW5zdXJlRGVm
ZXJyZWRTb3VyY2VEdW1wKCkKIHsKICAgICBpZiAoIW1fZGVmZXJyZWRTb3VyY2VEdW1wKQotICAg
ICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPERlZmVy
cmVkU291cmNlRHVtcD4+KCk7CisgICAgICAgIG1fZGVmZXJyZWRTb3VyY2VEdW1wID0gbWFrZVVu
aXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPj4oKTsKICAgICByZXR1cm4gKm1fZGVmZXJy
ZWRTb3VyY2VEdW1wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggZGI5YWQxNjBhYzI4MTMwZjM5ODQxZmYzYmZlYjMyYjY4
M2RkZWFkNi4uZGY0ZDc3Y2UzZjYzYjUyMDA3NTU0NGM0MWExNmNiMjMxZDdkZmE2NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcApAQCAt
MjQzLDcgKzI0Myw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0
dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6Okdl
dHRlcjogewotICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3Rh
dHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gYWNjZXNzLmFzPEdldHRlclNldHRlckFj
Y2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZvKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpj
YWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgY2Fs
bEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRWYXJpYW50LmNwcAppbmRleCBmYzFmNDYwZGU5NjU0MWQ4ZmEwOTljYmI0NWYyMzA5YzJh
MzMzODBmLi5lZDhkNDkzZjdlZTZmMWRhMmI5MDlhZDU3YzYyNzcxODEzYzJkNmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgR2V0QnlJZFZhcmlhbnQmIEdldEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0o
Y29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQogICAgIG1fY3VzdG9tQWNjZXNzb3JHZXR0ZXIg
PSBvdGhlci5tX2N1c3RvbUFjY2Vzc29yR2V0dGVyOwogICAgIG1fZG9tQXR0cmlidXRlID0gb3Ro
ZXIubV9kb21BdHRyaWJ1dGU7CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtTdGF0dXMpCi0gICAg
ICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPigq
b3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBtYWtl
VW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CiAgICAgZWxz
ZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICByZXR1cm4gKnRoaXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcAppbmRleCAwOTI5ZDZmYjQxMjY3NGVkN2YyMDQwNDVmYjQyNWVi
N2QzOGQzYzkzLi42ZWViMTQ1YjMzNzk2NjJhZjFjMTUwMDE5MDc2NzI3YTM5ZWUyYmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUqIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKAogICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5
JiBrZXkpCiB7CiAgICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7CisgICAgICAgIG1fZGF0YSA9
IG1ha2VVbmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKSB7
CiAgICAgICAgICAgICBpZiAobV9kYXRhLT5hdChpKS5rZXkoKSA9PSBrZXkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCmlu
ZGV4IGI0OWU0ZTI0MmU1MmYwODEzMTVlNDhmYjFlMWJjYzI5N2U1MjhhZTAuLmExZWNiOTRkZDBk
MTg2NzA4NjM1MmY1MmI1YjU4YzMxOTNlZWNmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
b2x5UHJvdG9BY2Nlc3NDaGFpbj4gY2xvbmUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKICAgICB9CiAKICAgICBj
b25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jaGFpbjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0Fj
Y2Vzcy5jcHAKaW5kZXggMjJmNDU1ODE0Yjg0YWY0ZmU3NGNhZjIzNDAxZDMwYWRhZGFlNWM2ZS4u
M2IzMDIzMzlmMDM1MGRhYzQyOGYzZjA0Y2M3MzUyYTNhZTUyMWI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC02
MTYsNyArNjE2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6
cmVnZW5lcmF0ZSgKICAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29k
ZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgY29kZUJsb2NrVGhhdE93
bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsK
ICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CiAgICAgaWYg
KCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5j
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1v
dmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IG1h
a2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFr
UmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3Nl
KQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAppbmRleCBjMmQ5NTMyMGNlYmQ1NmRiZGM5M2VlYmQ2YzMxNDBhN2RmN2NjMjA5Li5kNjQyYmNj
ZmU3OTc2NmM1Mjc5YmJjODEwODcwMWViN2Y4NTgyNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAg
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxleEdldFN0YXR1czo6SW5s
aW5lYWJsZTogewogICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtT
dGF0dXM+IGNhbGxMaW5rU3RhdHVzID0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtl
VW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4o
KS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxMaW5rU3Rh
dHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVE
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
VmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCmluZGV4IDVkNmIyOTA0NWNhNjc1YzU2ZmE3MWQ1NDc1YTExNWIyZGY2ZjNjNWUuLjcy
YzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZlNjM2MmY3MmU2YzBhMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcApAQCAtNDYsNyArNDYs
NyBAQCBQdXRCeUlkVmFyaWFudCYgUHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBQdXRC
eUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jb25kaXRpb25TZXQgPSBvdGhlci5tX2NvbmRpdGlv
blNldDsKICAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zmc2V0OwogICAgIGlmIChvdGhlci5tX2Nh
bGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOworICAgICAgICBtX2Nh
bGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExp
bmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG51bGxwdHI7
CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IDk2ZDIyZWNmYTBhNGM3NTZlZGZmNjFmMDAx
M2Y3MjU4ZTdkM2ZiZDUuLjUzZjIwOGJjYWRlZDNkZWEyZGVlMThhMGU4OTYwNWM0OTBhMTk1YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0
dXNlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0
dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAKIENhbGxMaW5rU3RhdHVzKiBSZWNvcmRl
ZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LCBjb25zdCBDYWxsTGlua1N0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1
c1B0ciA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CiAgICAgQ2FsbExpbmtT
dGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBjYWxscy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTUzLDcgKzUzLDcgQEAgQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6
OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4KIAogR2V0QnlJ
ZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0
byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7Cisg
ICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7CiAg
ICAgR2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGdldHMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAg
IHJldHVybiByZXN1bHQ7CkBAIC02MSw3ICs2MSw3IEBAIEdldEJ5SWRTdGF0dXMqIFJlY29yZGVk
U3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwK
ICAgICAKIFB1dEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgUHV0QnlJZFN0YXR1cyYgc3RhdHVz
KQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQdXRCeUlkU3RhdHVz
PihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxQdXRCeUlkU3RhdHVz
PihzdGF0dXMpOwogICAgIFB1dEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsK
ICAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1
c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjksNyArNjksNyBAQCBQdXRCeUlkU3Rh
dHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sCiAKIEluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlk
U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEluQnlJZFN0YXR1cyYg
c3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbkJ5SWRT
dGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEluQnlJZFN0
YXR1cz4oc3RhdHVzKTsKICAgICBJbkJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQo
KTsKICAgICBpbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKaW5kZXggMzBhMWYwNTUyNTllM2RlZDFhNzE2OGVlMzUyNmY3MmMwODRiZWU1YS4u
ZmNjMjkxMTgwMjQ0ZTBiMzIyOWUyZmQ3NjMwMDdiZTc5YTg3NDFjZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJ1Y3R1cmVTdHViQ2xl
YXJpbmdXYXRjaHBvaW50KiBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJl
ZmVyZW5jZQogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24mIGtleSkKIHsKICAgICBpZiAoIWhvbGRlclJlZikKLSAgICAgICAgaG9s
ZGVyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+
KGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBob2xkZXJSZWYgPSBtYWtlVW5pcXVlPFdh
dGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJsb2NrLCBzdHViSW5mbyk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fY29kZUJsb2NrID09IGNvZGVCbG9j
ayk7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fc3R1YkluZm8gPT0gc3R1YkluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKaW5kZXggNzIyMmQ0ODJhZDFlNWUyODZjZWY1OWQ0ZmYxZTFmNWViMDcxMDc4ZC4uNDkx
OTVkMTU3MjFkMmNkYTRmNzQ4YWU4ZGJlMmFmMDA5YTI4YTdhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0xNjAs
NyArMTYwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRk
QWNjZXNzQ2FzZSgKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3Jw
aGljQWNjZXNzPiBhY2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigp
OworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3Mg
PSBtYWtlVW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsK
ICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggZTAwNmQxNmI5YjhhMGZjMzBmMDQzM2NkZTYwMmVj
YzNiMTY4ZDQyZS4uMmM5YTBiMzAxZWIwOThlMTE1ZWYxZTM2YjEyN2JlMjllM2FiZGEyMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBVbmxp
bmtlZENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coQ29kZUJsb2NrKiBjb2QKICAgICAg
ICAgaWYgKCFtX2xpdmVuZXNzKSB7CiAgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIGNoYW5jZSB0
d28gY29tcGlsZXIgdGhyZWFkcyByYWNlZCB0byB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAg
Ly8gR3JhYmJpbmcgdGhlIGxvY2sgYWJvdmUgZGVmZW5kcyBhZ2FpbnN0IGNvbXB1dGluZyBsaXZl
bmVzcyB0d2ljZS4KLSAgICAgICAgICAgIG1fbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKKyAgICAgICAgICAgIG1fbGl2ZW5l
c3MgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKICAg
ICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNDM3MDk1MTllYjYxNmUyNjUxMDZlZjFkNTUy
OTYxN2Q2NDVjOWJjOS4uNTEyNTM2YzBkNDQ4NTdhNGNhNzZlODEzZmUxNDgwM2E5NzNmZmE1MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKQEAgLTQwMiw3ICs0MDIsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7CiAgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKCpoZWFwKCksIGNlbGxMb2NrKCkpOwot
ICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7Cisg
ICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggZmJlYzlmNzJjYTJmZDFh
MThiYWNiMDczZTY4NzI1NGI3MGI5ZWJlMS4uNDlkOWQyZmQzZTZmZTlmYjRiNTI3ZjY3N2FiZDVi
ZDRhNTEyMjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0yNzUsNyArMjc1LDcg
QEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2Nr
cyhWTSYgdm0pCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQogewogICAgIEFTU0VSVCgh
bV9yYXJlRGF0YSk7Ci0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+
KCk7CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmV0dXJu
ICptX3JhcmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTk3Njg2YWEzZWRjZGQ4ZDNmOWI1
N2M0YTZkMTIzYmFjOWNiMzk4Ny4uMTc4YTYxZGY2OTEzM2FmZGNjMTI3MjhjYmZkOTZlYjM5ZjQy
YWViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDAxLDcgKzQwMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAg
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUs
IHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2Vu
ZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwg
ZW52aXJvbm1lbnQpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRv
ci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9y
dEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5oCmluZGV4IGJjZDcyZWEwOWY1ZjcxN2E2NWY2NWQ3ZDJlZmMxNzVlMDIzZTY5
OTAuLmViYWJiNTlkNDM1OWE5ZTM2NGYyY2EzYWY2YWZkMGVmZDAzOTBiMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNz
IFZNOwogdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwogCiBjbGFzcyBKU19FWFBPUlRfUFJJ
VkFURSBEZWJ1Z2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRGVidWdnZXIoVk0mKTsKICAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCmluZGV4IGYyMGEzNTdlY2I3M2FhN2VmZTRjYjEwN2QxY2NiN2U5ZGM5MDAzMzkuLjI3NjU2
OTI2YThkMjlkMjdlYmVlYWE5ZmZkY2EyMDNjYzI1ZmEwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTU4LDcgKzU4LDcgQEAgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46
OkFic3RyYWN0SW50ZXJwcmV0ZXIoR3JhcGgmIGdyYXBoLCBBYnN0cmEKICAgICAsIG1fc3RhdGUo
c3RhdGUpCiB7CiAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgbV9waGlD
aGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOworICAgICAg
ICBtX3BoaUNoaWxkcmVuID0gbWFrZVVuaXF1ZTxQaGlDaGlsZHJlbj4obV9ncmFwaCk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAppbmRleCAzMmEyYzkwNDlmZWQ2ZjgyYzZhYmE0MDc2NzY2YmY0Mjli
MTM5MzgzLi4wODc0ZWE3MWNiZGViN2M2MWZlNWEwOGUwNTUyYjBiMzdiNGIxMzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtNzQsNyArNzQsNyBAQCBHcmFwaDo6
R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2Nv
ZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKCkpCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2sobV9jb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNT
QUNGRz4oKnRoaXMpKQorICAgICwgbV9zc2FDRkcobWFrZVVuaXF1ZTxTU0FDRkc+KCp0aGlzKSkK
ICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9y
ZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZlTm90U3Rh
cnRlZFJlZ2lzdGVyaW5nKQpAQCAtODYsOCArODYsOCBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQ
bGFuJiBwbGFuKQogICAgIAogICAgIG1faGFzRGVidWdnZXJFbmFibGVkID0gbV9wcm9maWxlZEJs
b2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgT3B0aW9uczo6Zm9yY2VE
ZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwogICAgIAotICAgIG1faW5kZXhpbmdDYWNoZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7Ci0gICAgbV9hYnN0cmFjdFZh
bHVlc0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhp
cyk7CisgICAgbV9pbmRleGluZ0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlz
KTsKKyAgICBtX2Fic3RyYWN0VmFsdWVzQ2FjaGUgPSBtYWtlVW5pcXVlPEZsb3dNYXA8QWJzdHJh
Y3RWYWx1ZT4+KCp0aGlzKTsKIAogICAgIHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cnVjdHVyZVN0
cnVjdHVyZS5nZXQoKSk7CiAgICAgdGhpcy0+c3RyaW5nU3RydWN0dXJlID0gcmVnaXN0ZXJTdHJ1
Y3R1cmUodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKQEAgLTEwODAsNyArMTA4MCw3IEBAIEZ1
bGxCeXRlY29kZUxpdmVuZXNzJiBHcmFwaDo6bGl2ZW5lc3NGb3IoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUxpdmVuZXNzLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gKml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNv
ZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVu
ZXNzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5l
c3MgPSBtYWtlVW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVuZXNzPigpOwogICAgIGNvZGVCbG9jay0+
bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVGdWxsTGl2ZW5lc3MoY29kZUJsb2NrLCAqbGl2ZW5l
c3MpOwogICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQgPSAqbGl2ZW5lc3M7CiAgICAg
bV9ieXRlY29kZUxpdmVuZXNzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUobGl2ZW5lc3MpKTsKQEAg
LTEwOTgsNyArMTA5OCw3IEBAIEJ5dGVjb2RlS2lsbHMmIEdyYXBoOjpraWxsc0ZvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlS2lsbHMuZW5kKCkpCiAg
ICAgICAgIHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlS2lsbHM+IGtpbGxzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzPigpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBraWxscyA9IG1ha2VVbmlxdWU8Qnl0
ZWNvZGVLaWxscz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlzaXMoKS5jb21wdXRl
S2lsbHMoY29kZUJsb2NrLCAqa2lsbHMpOwogICAgIEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCA9ICpr
aWxsczsKICAgICBtX2J5dGVjb2RlS2lsbHMuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShraWxscykp
OwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgQ1BTQ0ZHJiBHcmFwaDo6ZW5zdXJlQ1BTQ0ZHKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9u
KTsKICAgICBpZiAoIW1fY3BzQ0ZHKQotICAgICAgICBtX2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q1BTQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fY3BzQ0ZHID0gbWFrZVVuaXF1ZTxDUFNDRkc+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzQ0ZHOwogfQogCkBAIC0xNTQ0LDcgKzE1NDQsNyBA
QCBDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAg
aWYgKCFtX2Nwc0RvbWluYXRvcnMpCi0gICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2Nwc0RvbWluYXRvcnMg
PSBtYWtlVW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzRG9t
aW5hdG9yczsKIH0KIApAQCAtMTU1Miw3ICsxNTUyLDcgQEAgU1NBRG9taW5hdG9ycyYgR3JhcGg6
OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBT
U0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX3NzYURvbWluYXRvcnMpCi0g
ICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBRG9taW5hdG9ycz4o
KnRoaXMpOworICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBtYWtlVW5pcXVlPFNTQURvbWluYXRv
cnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0KIApAQCAtMTU2MSw3
ICsxNTYxLDcgQEAgQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3Bz
KCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJz
aW9uKTsKICAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFtX2Nwc05hdHVyYWxM
b29wcykKLSAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU05h
dHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG1ha2VVbmlx
dWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc05hdHVyYWxMb29w
czsKIH0KIApAQCAtMTU3MCw3ICsxNTcwLDcgQEAgU1NBTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5z
dXJlU1NBTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsK
ICAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykK
LSAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxM
b29wcz4oKnRoaXMpOworICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8U1NB
TmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3NzYU5hdHVyYWxMb29wczsKIH0K
IApAQCAtMTU3OSw3ICsxNTc5LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dh
cmRzQ0ZHKCkKICAgICAvLyBXZSBjb3VsZCBlYXNpbHkgcmVsYXggdGhpcyBpbiB0aGUgZnV0dXJl
IHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0b2RheSwgaXQncyBvbmx5IHVzZWQgaW4gU1NBLgogICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAKICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZH
KQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZH
PigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHND
Rkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQogCkBAIC0xNTg3LDcg
KzE1ODcsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9t
aW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYg
KCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9
IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBt
X2JhY2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0
aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMTU5NSw3
ICsxNTk1LDcgQEAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjplbnN1cmVDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKQotICAgICAgICBt
X2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOworICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzID0gbWFrZVVuaXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA2MzkwNDNlOWUyN2Zi
ZTBlMGI5MmFiNDZhNjY5YmUxNDEwNTAzMzcwLi5mMmI2NjQwMmUzYWQwZTcyZGZjZTA1YjY1YWYz
ZmM5MjZkMDA5ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCBKSVRDb21waWxlcjo6SklUQ29tcGlsZXIoR3JhcGgm
IGRmZykKICAgICAsIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKGRmZy5tX3ZtKQogewogICAg
IGlmIChVTkxJS0VMWShzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBtX2dyYXBoLm1fdm0ubV9w
ZXJCeXRlY29kZVByb2ZpbGVyKSkKLSAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKKyAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtl
VW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBtX2pp
dENvZGUtPnRpZXJVcEluTG9vcEhpZXJhcmNoeSA9IFdURk1vdmUobV9ncmFwaC5tX3BsYW4udGll
clVwSW5Mb29wSGllcmFyY2h5KCkpOwogICAgIGZvciAodW5zaWduZWQgdGllclVwQnl0ZWNvZGUg
OiBtX2dyYXBoLm1fcGxhbi50aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlcygpKQpAQCAtMzQzLDcg
KzM0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikK
ICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVpbGRNYXBw
aW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1h
a2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyKSwgbGlua0J1ZmZlcikpOworICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVP
cmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2Rl
T3JpZ2luTWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgZW1pdFN0
YWNrT3ZlcmZsb3dDaGVjayhKSVRDb21waWxlciYgaml0LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QmIHN0YWNrT3ZlcmZsb3cpCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZSgpCiAKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwot
ICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhp
cyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlz
KTsKIAogICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWls
YWJsZSBpbiB0aGUgSlNTdGFjay4KICAgICBKdW1wTGlzdCBzdGFja092ZXJmbG93OwpAQCAtNDAy
LDkgKzQwMiw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIG1fc3BlY3VsYXRp
dmUtPmNyZWF0ZU9TUkVudHJpZXMoKTsKICAgICBzZXRFbmRPZkNvZGUoKTsKIAotICAgIGF1dG8g
bGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJs
b2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIGF1dG8gbGlua0J1ZmZlciA9IG1ha2VV
bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAg
IG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFs
aXplcj4obV9ncmFwaC5tX3BsYW4pKTsKKyAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxp
emVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGUoKQogCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIpOwogCi0gICAgbV9n
cmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigK
KyAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+
KAogICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVhc2VOb25OdWxsKCksIFdU
Rk1vdmUobGlua0J1ZmZlcikpKTsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgY29tcGlsZUVudHJ5RXhlY3V0aW9uRmxhZygp
OwogCiAgICAgLy8gPT09IEZ1bmN0aW9uIGJvZHkgY29kZSBnZW5lcmF0aW9uID09PQotICAgIG1f
c3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7Cisg
ICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKICAg
ICBjb21waWxlQm9keSgpOwogICAgIHNldEVuZE9mTWFpblBhdGgoKTsKIApAQCAtNTA3LDkgKzUw
Nyw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgc2V0RW5kT2ZD
b2RlKCk7CiAKICAgICAvLyA9PT0gTGluayA9PT0KLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRp
b25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+
KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlu
a0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxhbi5z
ZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9w
bGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZh
aWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBsaW5rKCpsaW5rQnVmZmVyKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlRnVuY3Rpb24oKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50
cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5
UHRyVGFnPihhcml0eUNoZWNrKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihz
dGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5tX3BsYW4uc2V0Rmlu
YWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJp
dHlDaGVjaykpOwogfQogCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCogSklUQ29tcGlsZXI6OmFk
ZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOwogCiAgICAgaWYgKCFtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzKQotICAgICAgICBtX2dy
YXBoLm1fZG91YmxlQ29uc3RhbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxCYWc8ZG91YmxlPj4oKTsK
KyAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IG1ha2VVbmlxdWU8QmFnPGRvdWJs
ZT4+KCk7CiAKICAgICBkb3VibGUqIGFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IG1fZ3JhcGgubV9k
b3VibGVDb25zdGFudHMtPmFkZCgpOwogICAgICphZGRyZXNzSW5Db25zdGFudFBvb2wgPSB2YWx1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcAppbmRleCBiYjgwMDI3NGRkY2I2MzAzNDc4MzczN2UzOGFkMWU2MWU5YzVl
YTA0Li5hOTQ0MDQ3NDU5MjUyMTg0NWJhMzE4ODM3YjEzYjlmNGEzMTdlZjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2Uu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIExpdmVuZXNzQW5hbHlzaXNQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICwgbV9saXZlQXRUYWlsKG1fZ3JhcGgpCiAgICAgewogICAgICAg
ICBtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+cmVjb21wdXRlKCk7Ci0gICAgICAgIG1fd29ya3Nl
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya3NldD4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51
bUluZGljZXMoKSk7CisgICAgICAgIG1fd29ya3NldCA9IG1ha2VVbmlxdWU8V29ya3NldD4obV9n
cmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CiAgICAgfQogCiAgICAgYm9vbCBy
dW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggNGRiY2VlOGE2YmIy
ZGMzOGRmYzUwNWRiY2FiNmUzOWZjMGUyNzZmMi4uMDc4MzBlZDJmNWU4MTY2NDg4YjkxYWRjNTJh
NzE5MmRiMjhjMTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC0y
OTYsNyArMjk2LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVh
ZEltcGwoKQogICAgIGlmIChtX21vZGUgPT0gRlRMRm9yT1NSRW50cnlNb2RlKSB7CiAgICAgICAg
IGJvb2wgcmVzdWx0ID0gcGVyZm9ybU9TUkVudHJ5cG9pbnRDcmVhdGlvbihkZmcpOwogICAgICAg
ICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBt
YWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZh
aWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIFJVTl9QSEFTRShwZXJmb3JtQ1BTUmV0aHJlYWRp
bmcpOwpAQCAtMzk3LDcgKzM5Nyw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21w
aWxlSW5UaHJlYWRJbXBsKCkKICAgICBjYXNlIEZUTEZvck9TUkVudHJ5TW9kZTogewogI2lmIEVO
QUJMRShGVExfSklUKQogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxlKGRmZykgPT0gRlRMOjpD
YW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlx
dWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9IG1h
a2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gRmFp
bFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NzcsNyArNDc3LDcgQEAgUGxhbjo6Q29t
cGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAgICAgICBSVU5fUEhB
U0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlmIChG
VEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6OkNhbm5vdENvbXBpbGUpIHsKLSAgICAgICAgICAg
IG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsK
KyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0
aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKaW5k
ZXggODcxNTk1YjFmZjI1OWJlZTQ0YzcxY2UwM2Q3ZDhlOGJkNjQzNjUzNy4uNTM0ZDY0YjUzOGZh
MTgwYWY0OGU4OWQ0ZjgyNjAyZmI0NWM5MjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBA
IGNsYXNzIFNTQUNvbnZlcnNpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBi
bG9jay0+dmFyaWFibGVzQXRUYWlsLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVz
QXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7
Ci0gICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpT
U0FEYXRhPihibG9jayk7CisgICAgICAgICAgICBibG9jay0+c3NhID0gbWFrZVVuaXF1ZTxCYXNp
Y0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBlbnRyeXBvaW50SW5kZXhUb0FyZ3VtZW50c0Jsb2NrKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggN2NmNDI1MjFh
NjIxMTc4ZmY4NTEyYWZmOWZmZmEzMjUyMDAyMjRkNi4uY2RjZGFhNjBkODk4YTNiNjZkN2IyOThm
NjY4MThjNzlkYzQ4Yzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTkzLDcgKzE5Myw3IEBAIGlubGluZSBzdGQ6OnVuaXF1
ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBTcGlsbFJlZ2lzdGVy
c01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAog
ICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRzKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVy
YXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+PigK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4o
CiAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJl
c3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBEZXN0aW5hdGlvblR5cGUsIHR5cGVuYW1lIFNvdXJj
ZVR5cGUsIHVuc2lnCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aE1vdmUoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU291
cmNlVHlwZSBzb3VyY2VbbnVtYmVyT2ZBc3NpZ25tZW50c10sIERlc3RpbmF0aW9uVHlwZSBkZXN0
aW5hdGlvbltudW1iZXJPZkFzc2lnbm1lbnRzXSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBl
LCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwg
U291cmNlVHlwZSwgbnVtYmVyT2ZBc3NpZ25tZW50cz4+KAogICAgICAgICBmcm9tLCBqaXQsIGRl
c3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCkBAIC0yNDksNyArMjQ5LDcgQEAgaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJj
ZVR5cGUgc291cmNlQXJyYXlbMV0gPSB7IHNvdXJjZSB9OwogICAgIERlc3RpbmF0aW9uVHlwZSBk
ZXN0aW5hdGlvbkFycmF5WzFdID0geyBkZXN0aW5hdGlvbiB9OwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlv
blR5cGUsIFNvdXJjZVR5cGUsIDE+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3NpZ25pbmdT
bG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAx
Pj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwog
fQogCkBAIC0yNTksNyArMjU5LDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdl
bmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJjZVR5cGUgc291cmNlQXJyYXlbMl0g
PSB7IHNvdXJjZTEsIHNvdXJjZTIgfTsKICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25B
cnJheVsyXSA9IHsgZGVzdGluYXRpb24xLCBkZXN0aW5hdGlvbjIgfTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGlu
YXRpb25UeXBlLCBTb3VyY2VUeXBlLCAyPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWdu
aW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlw
ZSwgMj4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCAyYWJjZGIzZmQ1Zjk3MGYzZmJiOTBkM2IwZjZlM2NkOWQ0MGZjZTM3Li4wMzlh
NDZhNzU4NjEwNDhjODVmMDMyODJhMjZmZWFmYjdlZjliZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQxLDcgKzE0MSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0
R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiAgICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRoYXQg
YWxzbyBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQncwogICAgIC8vIHdo
YXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMg
bWUuIEl0J3MgYSBsb3QKICAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2Yg
ZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRv
cj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3UmF3T2JqZWN0LCByZXN1
bHRHUFIsIHN0b3JhZ2VHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoKSk7CiAK
QEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBu
b2RlLCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAgICAgICBzbG93UGF0
aC5hcHBlbmQoanVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2RlLT5hcnJh
eU1vZGUoKSkpOwogICAgIH0KICAgICAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1h
a2VfdW5pcXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKG1ha2VVbmlxdWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNs
b3dQYXRoLCB0aGlzLCBub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdGVtcEdQUiwgc3RydWN0
dXJlR1BSKSk7CiAgICAgCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CkBAIC0yMjQyLDEw
ICsyMjQyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5n
KE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb3RvdHlwZUNoYWluSXNTYW5l
KSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAor
ICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0
QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRo
aXMsIEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogI2Vs
c2UKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2Fu
ZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRv
cj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ1JlZywgc2NyYXRjaFJlZyksCiAgICAgICAgICAgICAgICAgYmFzZVJlZywgcHJvcGVydHlS
ZWcpKTsKICNlbmRpZgpAQCAtNzYxOSw3ICs3NjE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgICAgICAgICAgICAg
IHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMsIHJlc3VsdEdQ
Uiwgc3RydWN0dXJlLAogICAgICAgICAgICAgICAgIGtub3duTGVuZ3RoLCBtaW5DYXBhY2l0eSkp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICBh
dXRvIGdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQ
YXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCByZXN1bHRHUFIsIHN0
cnVjdHVyZSwgbGVuZ3RoR1BSLCBtaW5DYXBhY2l0eSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURk1vdmUoZ2VuZXJhdG9yKSk7CiAgICAgfQpAQCAtODQzOSw3ICs4NDM5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2Nh
dG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAor
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRv
cldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVz
dWx0R1BSLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIpKTsKICAgICB9CiAK
QEAgLTkxMzUsNyArOTEzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJ1Y3R1cmVD
aGVjayhOb2RlKiBub2RlLCBHUFJSZWcgY2VsbEdQUiwgR1BSUmVnIHRlbXBHCiAgICAgICAgIEdQ
UlJlZyBzdHJ1Y3R1cmVHUFI7CiAgICAgICAgIAogICAgICAgICBpZiAodGVtcEdQUiA9PSBJbnZh
bGlkR1BSUmVnKSB7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdQ
UlRlbXBvcmFyeT4odGhpcyk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBtYWtlVW5pcXVlPEdQ
UlRlbXBvcmFyeT4odGhpcyk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUt
PmdwcigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHRlbXBH
UFI7CkBAIC0xMzE3Niw3ICsxMzE3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
bGxvY2F0ZU5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAg
ICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXpl
U2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8
Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRH
UFIsCiAgICAgICAgIHN0cnVjdHVyZSwKICAgICAgICAgc2hvdWxkQ29udmVydExhcmdlU2l6ZVRv
QXJyYXlTdG9yYWdlID8gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdp
dGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVjdHVyZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXgg
ZmEzOTZmNGYxOTJhOGJiNGFlZjk5ZDAzNzE5MjRhMmEzOGM2NDVlOC4uYmE2MTI4ZWZlOWJiMzY4
ZmUzYjA2NjIzYjUxZWUzZWVhZDNjNGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTk1
LDggKzk1LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICBjYXNlIFBoYXNlTW9kZTo6R2xvYmFsOiB7CiAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAKLSAgICAg
ICAgICAgIG1fc3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluUGxhY2VBYnN0cmFjdFN0YXRlPiht
X2dyYXBoKTsKLSAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFi
c3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0
ZSk7CisgICAgICAgICAgICBtX3N0YXRlID0gbWFrZVVuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0
ZT4obV9ncmFwaCk7CisgICAgICAgICAgICBtX2ludGVycHJldGVyID0gbWFrZVVuaXF1ZTxBYnN0
cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2lzQ29udmVyZ2VkID0gZmFsc2U7CiAgICAg
ICAgICAgICAKQEAgLTEwNyw4ICsxMDcsOCBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyB0b3dhcmRzIGJlbGlldmluZyB0
aGF0IGFsbCBub2RlcyBuZWVkIGJhcnJpZXJzLiAiTmVlZGluZyBhIGJhcnJpZXIiIGlzIGxpa2UK
ICAgICAgICAgICAgIC8vIHNheWluZyB0aGF0IHRoZSBub2RlIGlzIGluIGEgcGFzdCBlcG9jaC4g
Ik5vdCBuZWVkaW5nIGEgYmFycmllciIgaXMgbGlrZSBzYXlpbmcKICAgICAgICAgICAgIC8vIHRo
YXQgdGhlIG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgZXBvY2guCi0gICAgICAgICAgICBtX3N0YXRl
QXRIZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3Jh
cGgpOwotICAgICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tN
YXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1fc3RhdGVBdEhlYWQg
PSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFwaCk7CisgICAgICAg
ICAgICBtX3N0YXRlQXRUYWlsID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+
KG1fZ3JhcGgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCbG9ja0xpc3QgcG9zdE9yZGVy
ID0gbV9ncmFwaC5ibG9ja3NJblBvc3RPcmRlcigpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IGU2YzIyMjFlZTMwMTU0NGM3MmE5
Y2U4MzVmOTgwZmYzNmYwMjRiN2QuLjhmOTMwMzRiMGM2ZjkwYmE2NmY0YmY1YzUzYmUxYjRmMGZi
YTc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCkBAIC0x
NTAsNyArMTUwLDcgQEAgY2xhc3MgV29ya2xpc3Q6OlRocmVhZEJvZHkgOiBwdWJsaWMgQXV0b21h
dGljVGhyZWFkIHsKICAgICAgICAgaWYgKG1fcmVsYXRpdmVQcmlvcml0eSkKICAgICAgICAgICAg
IFRocmVhZDo6Y3VycmVudCgpLmNoYW5nZVByaW9yaXR5KG1fcmVsYXRpdmVQcmlvcml0eSk7CiAg
ICAgICAgIAotICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bXBpbGF0aW9uU2NvcGU+KCk7CisgICAgICAgIG1fY29tcGlsYXRpb25TY29wZSA9IG1ha2VVbmlx
dWU8Q29tcGlsYXRpb25TY29wZT4oKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB0aHJlYWRJc1N0
b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKQEAgLTIxNCw3ICsyMTQsNyBA
QCB2b2lkIFdvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMs
IGludCByZWxhdGl2ZVByaW9yaXR5KQogCiB2b2lkIFdvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQo
Y29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgaW50IHJlbGF0aXZlUHJpb3JpdHkpCiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFRo
cmVhZERhdGE+KHRoaXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWREYXRhPiBkYXRhID0g
bWFrZVVuaXF1ZTxUaHJlYWREYXRhPih0aGlzKTsKICAgICBkYXRhLT5tX3RocmVhZCA9IGFkb3B0
UmVmKG5ldyBUaHJlYWRCb2R5KGxvY2tlciwgKnRoaXMsICpkYXRhLCBtX2xvY2ssIG1fcGxhbkVu
cXVldWVkLmNvcHlSZWYoKSwgcmVsYXRpdmVQcmlvcml0eSkpOwogICAgIG1fdGhyZWFkcy5hcHBl
bmQoV1RGTW92ZShkYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggMTliMTE1YzlmZGQ2N2NiYzhhZTEwOWM2
NDQ1NzQyOGJhM2FkZmE1My4uMDBiZGE2NTcyNzljZjdhOTlkYmFiMTQ5YjA5YzcwM2Q2OGIzNWJl
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3Nl
bWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNz
ZW1ibGVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIEFzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlciYg
YXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHZvaWQgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNs
eSgKICAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVSZWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBw
cmVmaXgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IHN0
ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aXNhc3NlbWJseVRhc2s+IHRhc2sgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmx5VGFzaz4oKTsKICAg
ICB0YXNrLT5oZWFkZXIgPSBzdHJkdXAoaGVhZGVyLmRhdGEoKSk7IC8vIFl1Y2shIFdlIG5lZWQg
dGhpcyBiZWNhdXNlIENTdHJpbmcgZG9lcyByYWN5IHJlZmNvdW50aW5nLgogICAgIHRhc2stPmNv
ZGVSZWYgPSBjb2RlUmVmOwogICAgIHRhc2stPnNpemUgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDkwYWUyZjRmZTA2YTE1MmNh
ZTU3ODVlMmMwM2M5OTliNjgzMmJjMWIuLmVjODBlYTY3YjI1NmY4OTE4ZDQ4ODNhOGM1MmI4ZjM3
OTU4M2FiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cC5jcHAKQEAgLTE1NywxMSArMTU3LDExIEBAIGNvbnN0IEFic3RyYWN0SGVhcCYgSW5kZXhlZEFi
c3RyYWN0SGVhcDo6YXRTbG93KHB0cmRpZmZfdCBpbmRleCkKICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihpbmRleCkgPj0gbV9zbWFsbEluZGljZXMuc2l6ZSgpKTsKICAgICAKICAgICBp
ZiAoVU5MSUtFTFkoIW1fbGFyZ2VJbmRpY2VzKSkKLSAgICAgICAgbV9sYXJnZUluZGljZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1hcFR5cGU+KCk7CisgICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gbWFr
ZVVuaXF1ZTxNYXBUeXBlPigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFic3RyYWN0SGVhcD4m
IGZpZWxkID0gbV9sYXJnZUluZGljZXMtPmFkZChpbmRleCwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghZmllbGQpIHsKLSAgICAgICAgZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFic3RyYWN0SGVhcD4oKTsKKyAgICAgICAgZmllbGQgPSBtYWtlVW5pcXVlPEFic3RyYWN0SGVh
cD4oKTsKICAgICAgICAgaW5pdGlhbGl6ZSgqZmllbGQsIGluZGV4KTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDVkMDRiNzJmMDQ4MzFkMDYz
MDIzMDRkMWViN2U0OTI5ZDQ4MDQyN2YuLjQ2MzVjYzk2ZjkxMDkxZjczZjA4ZDFmNzUyYjA0N2Qx
MDUzYmZiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGls
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAt
NjIsNyArNjIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3Vs
dCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07CiAKICAgICBpZiAo
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCi0gICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXRE
aXNhc3NlbWJsZXIoc3RkOjptYWtlX3VuaXF1ZTxCMzo6QWlyOjpEaXNhc3NlbWJsZXI+KCkpOwor
ICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKG1ha2VVbmlxdWU8QjM6
OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAogICAgIHsKICAgICAgICAgR3JhcGhTYWZlcG9pbnQg
c2FmZXBvaW50KHN0YXRlLmdyYXBoLCBzYWZlcG9pbnRSZXN1bHQpOwpAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50
UmVzdWx0KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lz
dGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rlck9mZnNldHMgPQotICAgICAgICBzdGQ6Om1ha2VfdW5p
cXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5jYWxsZWVTYXZlUmVnaXN0ZXJB
dE9mZnNldExpc3QoKSk7CisgICAgICAgIG1ha2VVbmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKICAgICBpZiAo
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2coIlVud2luZCBpbmZvIGZv
ciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVFR5cGU6OkZUTEpJVCksICI6
ICIsICpyZWdpc3Rlck9mZnNldHMsICJcbiIpOwogICAgIGNvZGVCbG9jay0+c2V0Q2FsbGVlU2F2
ZVJlZ2lzdGVycyhXVEZNb3ZlKHJlZ2lzdGVyT2Zmc2V0cykpOwpAQCAtMTQyLDcgKzE0Miw3IEBA
IHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRS
ZXN1bHQpCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihsb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogCi0g
ICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxM
aW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBz
dGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+
KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCiAgICAgaWYgKHN0YXRl
LmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAg
ICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2
b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVz
dWx0KQogICAgIAogICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9IHN0YXRlLnByb2Mt
PnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7CiAgICAgaWYgKHZtLnNob3VsZEJ1aWxkZXJQQ1RvQ29k
ZU9yaWdpbk1hcHBpbmcoKSkKLSAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1h
cChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxp
bmtCdWZmZXIpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtl
VW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdU
Rk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsK
IAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IGxhYmVsID0gc3RhdGUuZmlu
YWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KHN0YXRl
LnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSk7CiAgICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24g
PSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCmluZGV4IDE2NTMzNTA5
Y2QwYjQ4MmM3NGJjYTY3MzE4NzYzZjJlMGYwOWRkZjEuLmMzZjkzMzkyZjI2ZTZmYzk1ZjljMmNj
NTkyOWVkMzRjNmJjMzBjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMRmFpbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcApA
QCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogCiB2b2lkIGZhaWwoU3RhdGUm
IHN0YXRlKQogewotICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtl
X3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikpOworICAgIHN0YXRl
LmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0
YXRlLmdyYXBoLm1fcGxhbikpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAwODU0MDU2ZWM3ZDE2MmIxMWNkYzIx
Y2Q3OGZlMTUxN2Y3YWNmM2ViLi45NWRiNjk2MWU4ZTkwNzcwY2Q2ZTU1NjczMDIyYjQ0NzYzYjU4
MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAgLTE2Niw3ICsxNjYs
NyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0LnVudGFnUmV0dXJu
QWRkcmVzcygpOwogICAgICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7
CiAKLSAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+
KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgICAgICAgICAgbGlu
a0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBp
bGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxs
b2NhdGUoKSkgewogICAgICAgICAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIGxpbmso
U3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAK
LSAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgIGxpbmtCdWZmZXIgPSBt
YWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAg
ICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5k
ZXggYWYxYmE0YmY5MGE4ZmQwYmEyNTAyYzY0N2UyYzE3MTQxMjJkZTdkNC4uMDliMzQyNzNjYmI3
Y2FiNDRjZDg2M2U5OWIyODU5MGU4N2M5NGIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTUwODAsNyArMTUwODAsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVy
LmxpbmsoZ2VuZXJhdG9ySnVtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2bS0+Z2V0Q1RJU3R1YihsYXp5U2xv
d1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gc3RkOjptYWtlX3VuaXF1ZTxM
YXp5U2xvd1BhdGg+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IG1ha2VVbmlxdWU8TGF6eVNsb3dQ
YXRoPigpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua2VkUGF0
Y2hhYmxlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRhZz4obGlua0J1ZmZl
ci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZUp1bXApKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCA2NTNlYzZmNjk2MDQ5Yjc1MmFjMjRh
Nzc5MzEwZDRhZDk3YmIwM2RiLi40YTQ4NGZhNmQ0NjQzMGQ3MWU1NzAwOGJmMWU5OWY2YzI1Yjg0
ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApAQCAtNjAsMTAgKzYw
LDEwIEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5h
bGl6ZXI+KGdyYXBoLm1fcGxhbikpOworICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFr
ZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOwogICAgIGZpbmFsaXplciA9IHN0
YXRpY19jYXN0PEpJVEZpbmFsaXplcio+KGdyYXBoLm1fcGxhbi5maW5hbGl6ZXIoKSk7CiAKLSAg
ICBwcm9jID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZWR1cmU+KCk7CisgICAgcHJvYyA9IG1ha2VV
bmlxdWU8UHJvY2VkdXJlPigpOwogCiAgICAgcHJvYy0+c2V0T3JpZ2luUHJpbnRlcigKICAgICAg
ICAgW10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2luKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCmluZGV4IDIyZDdmZDY1
ZDVhMTc1NWI1YjJkM2I3OGRkYTU1YzBkMDA3ZTFjY2IuLjAyMWIwY2RiOWRmYWMxOGIzNjg2NDI4
YTk4MjNmMjgxMTBiYjc5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
bXBsZXRlU3Vic3BhY2UuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1
YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgICAgICBkYXRhTG9nKCJD
cmVhdGluZyBCbG9ja0RpcmVjdG9yeS9Mb2NhbEFsbG9jYXRvciBmb3IgIiwgbV9uYW1lLCAiLCAi
LCBhdHRyaWJ1dGVzKCksICIsICIsIHNpemVDbGFzcywgIi5cbiIpOwogICAgIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVlRGlyZWN0b3J5ID0KLSAgICAgICAgc3Rk
OjptYWtlX3VuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNpemVDbGFzcyk7
CisgICAgICAgIG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXpl
Q2xhc3MpOwogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSB1bmlxdWVEaXJlY3Rvcnku
Z2V0KCk7CiAgICAgbV9kaXJlY3Rvcmllcy5hcHBlbmQoV1RGTW92ZSh1bmlxdWVEaXJlY3Rvcnkp
KTsKICAgICAKQEAgLTg4LDcgKzg4LDcgQEAgQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6OmFs
bG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgbV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9y
eShsb2NrZXIsIGRpcmVjdG9yeSk7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPExvY2FsQWxs
b2NhdG9yPiB1bmlxdWVMb2NhbEFsbG9jYXRvciA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8
TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CisgICAgICAgIG1ha2VVbmlxdWU8TG9jYWxBbGxv
Y2F0b3I+KGRpcmVjdG9yeSk7CiAgICAgTG9jYWxBbGxvY2F0b3IqIGxvY2FsQWxsb2NhdG9yID0g
dW5pcXVlTG9jYWxBbGxvY2F0b3IuZ2V0KCk7CiAgICAgbV9sb2NhbEFsbG9jYXRvcnMuYXBwZW5k
KFdURk1vdmUodW5pcXVlTG9jYWxBbGxvY2F0b3IpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKaW5kZXggYTAxYjVhMmI0YWVmZDNlNTI5Njk3N2E1YzgzODQwNDJlNWEyOTU2
YS4uOTcxOTllMTg2ZGU3MmQ3NzI3OTczNWM5ZDNjOTk0MGM4NWM0OGFmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTI4OSwxNSArMjg5LDE1IEBAIEhlYXA6OkhlYXAoVk0q
IHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4RWRlblNpemUobV9taW5CeXRlc1Bl
ckN5Y2xlKQogICAgICwgbV9tYXhIZWFwU2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBt
X29iamVjdFNwYWNlKHRoaXMpCi0gICAgLCBtX21hY2hpbmVUaHJlYWRzKHN0ZDo6bWFrZV91bmlx
dWU8TWFjaGluZVRocmVhZHM+KCkpCi0gICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKHN0ZDo6
bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiQyIpKQotICAgICwgbV9tdXRhdG9yU2xv
dFZpc2l0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJNIikpCi0gICAg
LCBtX211dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkK
LSAgICAsIG1fcmFjZU1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQotICAgICwgbV9jb25zdHJhaW50U2V0KHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFp
bnRTZXQ+KCp0aGlzKSkKKyAgICAsIG1fbWFjaGluZVRocmVhZHMobWFrZVVuaXF1ZTxNYWNoaW5l
VGhyZWFkcz4oKSkKKyAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90
VmlzaXRvcj4oKnRoaXMsICJDIikpCisgICAgLCBtX211dGF0b3JTbG90VmlzaXRvcihtYWtlVW5p
cXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKKyAgICAsIG1fbXV0YXRvck1hcmtTdGFjayht
YWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9yYWNlTWFya1N0YWNrKG1ha2VV
bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX2NvbnN0cmFpbnRTZXQobWFrZVVuaXF1
ZTxNYXJraW5nQ29uc3RyYWludFNldD4oKnRoaXMpKQogICAgICwgbV9oYW5kbGVTZXQodm0pCi0g
ICAgLCBtX2NvZGVCbG9ja3Moc3RkOjptYWtlX3VuaXF1ZTxDb2RlQmxvY2tTZXQ+KCkpCi0gICAg
LCBtX2ppdFN0dWJSb3V0aW5lcyhzdGQ6Om1ha2VfdW5pcXVlPEpJVFN0dWJSb3V0aW5lU2V0Pigp
KQorICAgICwgbV9jb2RlQmxvY2tzKG1ha2VVbmlxdWU8Q29kZUJsb2NrU2V0PigpKQorICAgICwg
bV9qaXRTdHViUm91dGluZXMobWFrZVVuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKICAgICAs
IG1fdm0odm0pCiAgICAgLy8gV2Ugc2VlZCB3aXRoIDEwbXMgc28gdGhhdCBHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNuJ3QgY29udGludW91c2x5IAogICAgIC8vIHNjaGVkdWxl
IHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlvbi4KQEAgLTMwNSw4ICsz
MDUsOCBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2Vk
ZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVy
KHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKCpuZXcgSW5jcmVtZW50YWxTd2VlcGVy
KHRoaXMpKSkKICAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYoKm5ldyBTdG9w
SWZOZWNlc3NhcnlUaW1lcih2bSkpKQotICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJrU3RhY2so
c3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fc2hhcmVkTXV0YXRv
ck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9z
aGFyZWRDb2xsZWN0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAg
ICAsIG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkpCiAgICAgLCBtX3RocmVh
ZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fdGhyZWFkQ29uZGl0aW9uKEF1dG9t
YXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCkBAIC0zMTQsNyArMzE0LDcgQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG1fd29ybGRTdGF0ZS5zdG9yZSgw
KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIG51bWJlck9mUGFyYWxsZWxUaHJlYWRzID0g
aGVhcEhlbHBlclBvb2woKS5udW1iZXJPZlRocmVhZHMoKTsgaSA8IG51bWJlck9mUGFyYWxsZWxU
aHJlYWRzOyArK2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNp
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRvQ1N0cmluZygiUCIs
IGkgKyAxKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9
IG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOwog
ICAgICAgICBpZiAoT3B0aW9uczo6b3B0aW1pemVQYXJhbGxlbFNsb3RWaXNpdG9yc0ZvclN0b3Bw
ZWRNdXRhdG9yKCkpCiAgICAgICAgICAgICB2aXNpdG9yLT5vcHRpbWl6ZUZvclN0b3BwZWRNdXRh
dG9yKCk7CiAgICAgICAgIG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRvcnMuYXBwZW5kKHZp
c2l0b3IuZ2V0KCkpOwpAQCAtMzIzLDE3ICszMjMsMTcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgIAogICAgIGlmIChPcHRpb25zOjp1c2VDb25jdXJyZW50R0Mo
KSkgewogICAgICAgICBpZiAoT3B0aW9uczo6dXNlU3RvY2hhc3RpY011dGF0b3JTY2hlZHVsZXIo
KSkKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9jaGFzdGlj
U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVs
ZXIgPSBtYWtlVW5pcXVlPFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhp
cyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX3Nj
aGVkdWxlciA9IG1ha2VVbmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHNpbXVsYXRlIHR1cm5pbmcgb2ZmIGNvbmN1cnJl
bnQgR0MgYnkgbWFraW5nIHRoZSBzY2hlZHVsZXIgc2F5IHRoYXQgdGhlIHdvcmxkCiAgICAgICAg
IC8vIHNob3VsZCBhbHdheXMgYmUgc3RvcHBlZCB3aGVuIHRoZSBjb2xsZWN0b3IgaXMgcnVubmlu
Zy4KLSAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzU3Rv
cFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKKyAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtl
VW5pcXVlPFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmlmeUhlYXAoKSkKLSAgICAgICAgbV92ZXJpZmll
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRpb25zOjpudW1iZXJP
ZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24oKSk7CisgICAgICAgIG1fdmVyaWZpZXIg
PSBtYWtlVW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xl
c1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uKCkpOwogICAgIAogICAgIG1fY29sbGVjdG9yU2xvdFZp
c2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11dGF0b3IoKTsKIApAQCAtODk5LDcgKzg5OSw3IEBA
IHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmplY3RDb3VudCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlw
ZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9
IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIGZvckVhY2hQcm90ZWN0ZWRDZWxsKAog
ICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgewogICAgICAgICAgICAgcmVjb3JkVHlwZSgqdm0o
KSwgKnJlc3VsdCwgY2VsbCk7CkBAIC05MDksNyArOTA5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFR5
cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlw
ZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9
IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVy
YXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCiAg
ICAgICAgIGl0ZXJhdGlvblNjb3BlLApAQCAtMjg1Niw3ICsyODU2LDcgQEAgdm9pZCBIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICB9LAogICAgICAgICBDb25zdHJhaW50Vm9sYXRp
bGl0eTo6U2VsZG9tR3JleWVkKTsKICAgICAKLSAgICBtX2NvbnN0cmFpbnRTZXQtPmFkZChzdGQ6
Om1ha2VfdW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhpcykpOworICAgIG1f
Y29uc3RyYWludFNldC0+YWRkKG1ha2VVbmlxdWU8TWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+
KCp0aGlzKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWRkTWFya2luZ0NvbnN0cmFpbnQoc3RkOjp1bmlx
dWVfcHRyPE1hcmtpbmdDb25zdHJhaW50PiBjb25zdHJhaW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5kZXggNWI2OWNkNWUzNWY2MmI1MDY2M2E5Y2JkYzczOTRk
MWJkNjdhZDFkOC4uZTFlYjZjNzgzM2Q0ODU4NzFhOWM1MzNjZmQ0NzMxYzc1ZjliMTFmZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBAIC0yMTcsNyArMjE3LDcg
QEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQo
KQogaW5saW5lIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYgSGVhcDo6bWFya0xpc3RT
ZXQoKQogewogICAgIGlmICghbV9tYXJrTGlzdFNldCkKLSAgICAgICAgbV9tYXJrTGlzdFNldCA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOworICAg
ICAgICBtX21hcmtMaXN0U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVm
ZmVyKj4+KCk7CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmluZGV4IDViOWFj
ODlkYWJmMDRhMDYxNGRjMTBmYmJhZjE2YzBmNGE0OTlmN2UuLjJkMmJjOGZiOWIyN2ZlOWY5YjFi
NWJlNTRjYjc1MWY4M2UwZDNkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSGVhcFNu
YXBzaG90QnVpbGRlcjo6YnVpbGRTbmFwc2hvdCgpCiAKICAgICBQcmV2ZW50Q29sbGVjdGlvblNj
b3BlIHByZXZlbnRDb2xsZWN0aW9uU2NvcGUobV9wcm9maWxlci52bSgpLmhlYXApOwogCi0gICAg
bV9zbmFwc2hvdCA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2ZpbGVyLm1v
c3RSZWNlbnRTbmFwc2hvdCgpKTsKKyAgICBtX3NuYXBzaG90ID0gbWFrZVVuaXF1ZTxIZWFwU25h
cHNob3Q+KG1fcHJvZmlsZXIubW9zdFJlY2VudFNuYXBzaG90KCkpOwogICAgIHsKICAgICAgICAg
bV9wcm9maWxlci5zZXRBY3RpdmVTbmFwc2hvdEJ1aWxkZXIodGhpcyk7CiAgICAgICAgIG1fcHJv
ZmlsZXIudm0oKS5oZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5kZXggYjhlNDMwMTkx
ZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOS4uN2MyZWQyNDAyZmQ3MzAxZmMwOTlhOGRm
YjVkM2MzMzZhZWFkMTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNl
dC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgTkVWRVJfSU5MSU5FIEJpdG1hcDxNYXJrZWRCbG9jazo6
YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6ZV90IGJsb2MKICAgICBhdXRv
JiBiaXRzUHRyUmVmID0gbV9iaXRzW2Jsb2NrSW5kZXhdOwogICAgIGF1dG8qIGJpdHMgPSBiaXRz
UHRyUmVmLmdldCgpOwogICAgIGlmICghYml0cykgewotICAgICAgICBiaXRzUHRyUmVmID0gc3Rk
OjptYWtlX3VuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+PigpOworICAg
ICAgICBiaXRzUHRyUmVmID0gbWFrZVVuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVy
QmxvY2s+PigpOwogICAgICAgICBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsKICAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICAgICAgbV9ibG9ja3NXaXRoQml0c1tibG9ja0luZGV4
XSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKaW5k
ZXggZDUxMDAwZWJhODdmMzFkZTQ4MWJlZDA4YTVmMmZlZDhhNjM5ZmY5OS4uY2QzZTdlNTYxNTQ1
NjZkY2Y4YzE1MTYzYTE1YjcyZjI3NjhmMjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlLmNwcApAQCAtMzksNyArMzksNyBAQCBJc29TdWJzcGFjZTo6SXNvU3Vi
c3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlw
ZSwgcwogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2RpcmVjdG9yeSgmaGVhcCwgV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCiAgICAgLCBt
X2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9yeSkKLSAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisg
ICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJc29BbGlnbmVkTWVt
b3J5QWxsb2NhdG9yPigpKQogewogICAgIGluaXRpYWxpemUoaGVhcENlbGxUeXBlLCBtX2lzb0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKaW5kZXggYjNhYmQyYzUyMjRmY2Uz
ZTVjZTEyYzRmMTYzZWQ0ODIzZGFlNjk4ZS4uMTc4MGMwOGE0NzBmMjc2MjMxNjM3ZWY2ODExN2M5
YTRlMzJjMWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2lu
Z0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtp
bmdDb25zdHJhaW50U2V0LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1hcmtpbmdDb25zdHJh
aW50U2V0OjpkaWRTdGFydE1hcmtpbmcoKQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0Ojph
ZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgOjpGdW5jdGlvbjx2b2lk
KFNsb3RWaXNpdG9yJik+IGZ1bmN0aW9uLCBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5
LCBDb25zdHJhaW50Q29uY3VycmVuY3kgY29uY3VycmVuY3ksIENvbnN0cmFpbnRQYXJhbGxlbGlz
bSBwYXJhbGxlbGlzbSkKIHsKLSAgICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5n
Q29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSwgY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtKSk7Cisg
ICAgYWRkKG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2
aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHks
IGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOwogfQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50
U2V0OjphZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKaW5kZXggODJiZTNiYmI0NGNi
NmM1Nzc2YjhlY2Y3ZmEwYzk0MGQ1ZDVhNTgyNS4uNTNhOTFhMjNjMWQ4OTI5MThlZTQyOTQxYTY1
ZjUyNzg2N2Q0MzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcApAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBl
QW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzcwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CiAg
ICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7Ci0gICAgbV9j
b25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2Us
IFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMp
KTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OmNvdW50KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGl0bGUgPT0gdGl0bGUpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBm
b3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUu
aXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJp
bmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgICAg
ICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICAgICAg
ICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxl
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYgdGl0bAogCiAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJv
bnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1w
dHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0
aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgd2FybmluZykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsK
IH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnN0YXJ0Q29uc29sZVByb2Zp
bGUoKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
OjpzY3JlZW5zaG90KEV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpCiB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6d2FyblVuaW1wbGVtZW50ZWQoY29uc3QgU3RyaW5n
JiBtZXRob2QpCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtZXRob2QgKyAiIGlzIGN1cnJlbnRs
eSBpZ25vcmVkIGluIEphdmFTY3JpcHQgY29udGV4dCBpbnNwZWN0aW9uLiI7Ci0gICAgbV9jb25z
b2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdl
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZGE1MmVmZDEzYzQ5MWNjYWU2Mzk1ZTA3NGM0NjQ0
ZTcwY2MwYTcuLmJkYmQzMWQ2MzEyYjJjMDU2ZDdjNDc4MTVkYzYxNWQxMjI2ZDkyNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAg
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCi0gICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdl
cj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJ
bmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNo
KFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGdsb2JhbE9i
amVjdCkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQpA
QCAtNzEsMTEgKzcxLDExIEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqCiB7CiAgICAgYXV0byBj
b250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8g
Y29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQp
OwogICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50LmdldCgpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1fY29uc29sZUFn
ZW50KTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29u
c29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwogCiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gt
PnN0YXJ0KCk7CiB9CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2UK
ICAgICAgICAgICAgIENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVz
c2FnZSwgU3RyaW5nKCksIDAsIDApOwogICAgIH0KIAotICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1l
c3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFdU
Rk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiBDb25zb2xlQ2xpZW50KiBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbnNvbGVDbGllbnQoKSBjb25zdApAQCAtMjgwLDcgKzI4MCw3
IEBAIEluc3BlY3RvckFnZW50JiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVu
c3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpIHsKICAg
ICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNw
ZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOwor
ICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JBZ2VudD4o
Y29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQo
KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKICAg
ICB9CkBAIC0yOTEsNyArMjkxLDcgQEAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCYgSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVEZWJ1Z2dlckFnZW50KCkKIHsKICAgICBp
ZiAoIW1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBhdXRvIGNvbnRleHQgPSBqc0FnZW50Q29u
dGV4dCgpOwotICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpT
R2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOworICAg
ICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOwogICAgICAgICBtX2RlYnVnZ2VyQWdl
bnQgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgICAgICBtX2NvbnNvbGVDbGllbnQtPnNldElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQobV9kZWJ1Z2dlckFnZW50KTsKICAgICAgICAgbV9hZ2VudHMu
YXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwpAQCAtMzI3LDIwICszMjcsMjAgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQog
CiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNv
bnRleHQpKTsKIAogICAgIGVuc3VyZURlYnVnZ2VyQWdlbnQoKTsKIAotICAgIGF1dG8gc2NyaXB0
UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Pihjb250ZXh0KTsKICAgICBtX2Nv
bnNvbGVDbGllbnQtPnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmls
ZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJv
ZmlsZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBoZWFwQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBoZWFwQWdlbnQgPSBtYWtl
VW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CiAgICAgaWYgKG1fY29uc29sZUFn
ZW50KQogICAgICAgICBtX2NvbnNvbGVBZ2VudC0+c2V0SW5zcGVjdG9ySGVhcEFnZW50KGhlYXBB
Z2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaGVhcEFnZW50KSk7CiAK
LSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0
QWdlbnQ+KGNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxKU0dsb2Jh
bE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzBiNWM5YWFkMThjMDhjZWRkYzM2OTY2YmYwNDY4
NTE0MTc2MjY0My4uNDE3ZTc3NWZiODAyNDljMDQwMzEzN2E4Mjc4MjEzNzMyN2QzMzJiNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkluc3BlY3RvciJfcykKICAgICAsIG1fZW52aXJvbm1l
bnQoY29udGV4dC5lbnZpcm9ubWVudCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9y
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuY3BwCmluZGV4IDdlZGJjODA2NjBmMzZkNmE4MWFhOTFmYjhmYTNmZGRkZWRhZTZmMjYuLjVk
MjRjNjllNmJmNDVkNzJmYjBiZGE1M2I0YzQ1NzU5ODYxM2NiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29uc3QgaW50IGV4cGly
ZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDsKIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVj
dG9yQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiQ29uc29sZSJfcykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRl
eHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8Q29uc29sZUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBsYWJlCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAv
LyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwog
ICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJc
IiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywg
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogICAgIH0KIH0KIApA
QCAtMTU5LDE0ICsxNTksMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWlu
ZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwKICAgICBpZiAoaXQg
PT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRo
ZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1h
a2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwogICAgIFNlY29uZHMgZWxh
cHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwogICAgIFN0cmluZyBtZXNz
YWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRo
KGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKLSAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2Us
IFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2Fn
ZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdl
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiB2b2lkIElu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE4NCwxNCArMTg0LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IGxhYmVsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkpIHsKICAgICAgICAgLy8gRklYTUU6
IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAg
U3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBu
b3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6
VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNr
KSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1
ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGlt
ZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6ICIsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAzKSwgIm1zIik7Ci0g
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2
ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBhZGRNZXNzYWdl
VG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2Us
IFdURk1vdmUoY2FsbFN0YWNrKSkpOwogCiAgICAgbV90aW1lcy5yZW1vdmUoaXQpOwogfQpAQCAt
MjI0LDcgKzIyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudChKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICAvLyBGSVhNRTogV2ViIElu
c3BlY3RvciBzaG91bGQgaGF2ZSBhIGJldHRlciBVSSBmb3IgY291bnRlcnMsIGJ1dCBmb3Igbm93
IHdlIGp1c3QgbG9nIGFuIHVwZGF0ZWQgY291bnRlciB2YWx1ZS4KIAogICAgIFN0cmluZyBtZXNz
YWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0g
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEp
KSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEp
KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZv
aWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fY291bnRzLmVuZCgpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6
YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiQ291bnRlciBcIiIs
IGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29s
ZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNy
ZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5p
bmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBl
NWYyNDgyYTNjYWEwOGFhODE2NDVmYThjNzljNTI5YmE0MzgwZDBhLi4yNWYxZDNlNzI4MWM2YjBm
YjgzMzBmZjEzNzg3MzY0M2ViYzYwZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9yQnJlYWtw
b2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3RpbwogCiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGVidWdnZXIiX3MpCi0gICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihEZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3Nj
cmlwdERlYnVnU2VydmVyKGNvbnRleHQuZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKSkK
ICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggYjUzNWZmNjE5MmFhY2VmYzc5YjRm
NmNkOTNkZjEyMDFhMzcxNDhhYy4uNTgyYzM1ZDM2N2RmZTFlNGY3ZGM0ZTlhNTY4NGRjYTJhNGUz
YjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogSW5zcGVjdG9ySGVhcEFnZW50OjpJbnNwZWN0b3JIZWFwQWdlbnQo
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJIZWFwIl9z
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1h
bmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEhlYXBG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSGVhcEJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDU2ZmMxYjc5OGRhMGVlZWVhMDIzMzFl
ZDUyNTRhOTUwMjEwMDU4NzQuLmNiYWQ4MWQ2OTk0NDBhNzMzYjBhZjA0MTY5NGE4NmNhOWU2ZThl
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KEFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiU2NyaXB0UHJvZmlsZXIiX3MpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8U2NyaXB0UHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+
KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihTY3Jp
cHRQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKaW5kZXggM2FjYTQxMDUxMGZlNTAwZjA1YmZi
YWFjNDY3ZmZkYWNjYjIxYzUyNC4uOTM1MDY4YzdhZTExOTcxMDU0NGMxZjc2Nzk4MjJkZmI2NmU1
NmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRh
cmdldEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNo
ZXImIGJhY2tlbmREaXNwYXRjaGVyKQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUYXJnZXQi
X3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFRhcmdldEZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVy
KSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVGFyZ2V0QmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlMzI5YTNiNDNjZDYwOTY1ZDlmNzc4NWE0ODIy
MDExYWIzNjZmYTUzLi45YjNmMzc5ZDVlNWE0OTBkYmUzNzVjNzJhYzk5ZmE3MjBiOWFjY2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGUKIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdl
VG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggMTQ1ZDA1MTZiOGUz
OTY4ODc4ZDkyY2I1OTRhYTU5OWJhZmEzOWQzMi4uM2I3YzNlMjFkMzFjMWMyZjViNmQxYmEwYzE2
ZjQ4ODgzZTZjZjMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNw
cApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEpTQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCi0gICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoUnVudGltZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2ds
b2JhbE9iamVjdChjb250ZXh0Lmluc3BlY3RlZEdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCmluZGV4IDcx
MDE2NjhhOTdjODc0NDgxMmY0NjU2ZjE2ZTBiN2RkNTk0ZjFhNjAuLmNjOTY0MDA1Njc5ZGJmY2Q0
ZmUwMjkwNmJjOTNjMjNiMmM4MmVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtMTQ0LDExICsxNDQsMTEgQEAgT3B0
aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KFBsYXRmb3JtU29ja2UKIAogICAgIFNvY2tldDo6c2V0dXAoc29ja2V0KTsKIAotICAg
IGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U29ja2V0OjpDb25uZWN0aW9uPigp
OworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8U29ja2V0OjpDb25uZWN0aW9uPigp
OwogCiAgICAgY29ubmVjdGlvbi0+cG9sbCA9IFNvY2tldDo6cHJlcGFyZVBvbGxpbmcoc29ja2V0
KTsKICAgICBjb25uZWN0aW9uLT5zb2NrZXQgPSBzb2NrZXQ7Ci0gICAgY29ubmVjdGlvbi0+cGFy
c2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpCdWZmZXJT
aXplKTsKKyAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBtYWtlVW5pcXVlPE1lc3NhZ2VQYXJzZXI+
KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwogICAgIGNvbm5lY3Rpb24tPnBhcnNlci0+c2V0RGlk
UGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNdKENvbm5lY3Rpb25JRCBpZCwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkgewogICAgICAgICBpZiAobV9pbnNwZWN0b3JDbGllbnQpCiAgICAgICAgICAg
ICBtX2luc3BlY3RvckNsaWVudC0+ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KGlkLCBXVEZN
b3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50LmgKaW5kZXggNzBmMmQ3YTQ4MTM0NzBmODEzNzMyYjNiOTc3YjViNzNhNDE5NjBi
NS4uMzIwNDAwZmQ1YjNjZGIyYzRiMTVkYmRjOTMwNDZiYmZkMDBjYWRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQ+IGNyZWF0ZShSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50
KiBpbnNwZWN0b3JDbGllbnQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludD4oaW5zcGVj
dG9yQ2xpZW50LCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFtZSk7CiAgICAgfQogCiAgICAg
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudCosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weQppbmRleCA1MGM4ZjZmZGU3Y2U2ODk4YjA4MjgxNDk5N2JlNTdkNzMw
MTliMjUzLi4xMDE3ODllMWRmNzU0ODFmNjFlOGMwMGYyMTFhY2E3NDliNTA1OGVhIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpj
X2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC0xMzYs
OCArMTM2LDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvclRlbXBsYXRlczoKICAgICBbXyR7dmFyaWFi
bGVOYW1lUHJlZml4fUhhbmRsZXIgcmVsZWFzZV07CiAgICAgXyR7dmFyaWFibGVOYW1lUHJlZml4
fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4+KCIke2Rv
bWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikp
OworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rv
ciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRm
b3JtLmpzb24tcmVzdWx0CmluZGV4IDNlOTkxNDcxZDMyNGEzNTUxNjkyOGU0M2U5NDEwOGI0NDg3
MzEyMDguLmIwNGE4NTBkZjExNTJkNmZkYTU5NjJkZjM3YzJlNDllMWViZDk1ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhw
ZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9k
ZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxl
YXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0
byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0
d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdv
cmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJv
bGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXgg
YTcxNGZiMTMxODMyOTNkMTgzMmZjNTgxZTZjNTMzNzg2ODAyZDU3Mi4uYzBlMTczMzdmZDRhNzk4
ODMwZTg1ZDI5ZTg1ZDhlZDMwMjBjYTc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTExODksOCArMTE4OSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAg
X2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9z
LCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8g
YWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtl
VW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpf
Y29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xs
ZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggNTNiZDU1M2I3YmE3NGRkZDI5ZTI1NTFjYzBi
ODRmYTQzMDcxNGNhZS4uYWVkMDdiNzVlOGI4ODhkZDU5MzM5MGFmYTIxZDJjODkwZGRmYzU4MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2Fs
bC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTA2OCw4ICsxMDY4LDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsK
ICAgICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0
ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJh
c2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29u
dHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CmluZGV4IDY3OGM2YWFhODVhY2EzODQy
NDhiOTkyOTAzNGNjZjA5NDExOGRlZTcuLjFhZGNiZDNmZDJhY2I5Y2ExNDYxYzMwOGU0NWM0OTJl
YzNlMDMyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdApAQCAtNzgyLDgg
Kzc4Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kb21haW5BSGFuZGxl
ciByZWxlYXNlXTsKICAgICBfZG9tYWluQUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0g
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVj
dG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21h
aW5BQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJEb21haW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikp
OworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rv
ckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWlu
QSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBf
Y29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9
CiAKQEAgLTgwMCw4ICs4MDAsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
ZG9tYWluQkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkJIYW5kbGVyID0gW2hhbmRsZXIg
cmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAg
YXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5CQmFja2Vu
ZERpc3BhdGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVl
PE9iakNJbnNwZWN0b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1
dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRj
aGVyPj4oIkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRj
aGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5h
dGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29t
bWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCBmNmM1ZWRjY2I5Mjg1YWY0OGM2ZGViOTg0MjJh
NzIzNmI4NzAyZDRlLi5hM2UyN2RmMzhjZWFmYmIzYzQ1MWUxM2I2MTE5ZTJlNTRjM2QyYThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKQEAgLTEwMzksOCArMTAzOSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmsxSGFuZGxlciA9
IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdU
Rk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hl
ciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURp
c3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92
ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdl
bnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC0xMDU3LDggKzEwNTcsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazNIYW5kbGVyIHJlbGVhc2Vd
OwogICAgIF9uZXR3b3JrM0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsz
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVt
LXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCA0ZDk0YWQ5NGFkODUxZjU4NWY0OGU5MTE1ZTNiZWNj
Zjk3YjdhZDVmLi5iZDZiOTgxNWY3NjAxYWUxZDBmZWRjMjZjNDU0MzViYTQzZjYxZTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdApAQCAtODE1LDggKzgxNSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAgICAgW19jb21tYW5kRG9tYWluSGFuZGxlciByZWxlYXNlXTsKICAgICBfY29tbWFu
ZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4+
KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0
Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0lu
c3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFj
a2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3Zl
KGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2Vu
dChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCA2ZjZiZjM2
MjU3YWU5ZWVmMDVmMWJmMjY3M2U2MTEzZjNiY2U4OTgwLi41Y2JjY2JmZWQ1M2M0YmYzNDEzNmY3
NjhlZGE1OWZmYjQ5MDcwYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlu
cy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC03OTgsOCArNzk4LDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsK
ICAgICBfbmV0d29yazFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0
ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29y
azEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29u
dHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVj
dGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDNlOTkx
NDcxZDMyNGEzNTUxNjkyOGU0M2U5NDEwOGI0NDg3MzEyMDguLmIwNGE4NTBkZjExNTJkNmZkYTU5
NjJkZjM3YzJlNDllMWViZDk1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMt
cGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxl
cik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFj
a2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCAwNWY3MGYxYWVhZjRjNGQ5ZjUyYzEwNmFiNjZkYjllY2QyZWFiOGJlLi45OWU4YTQ3ZmQ1ZTBj
MjA3ZTcyN2I4NmZlMjM2MTkwNTdiNjUwMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgfQogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlv
bnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYg
T3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpKSkKLSAgICAgICAgbV9k
aXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxv
Y2spOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8SklURGlzYXNzZW1ibGVy
PihtX2NvZGVCbG9jayk7CiAgICAgaWYgKFVOTElLRUxZKG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9m
aWxlcikpIHsKICAgICAgICAgbV9jb21waWxhdGlvbiA9IGFkb3B0UmVmKAogICAgICAgICAgICAg
bmV3IFByb2ZpbGVyOjpDb21waWxhdGlvbigKQEAgLTkwMSw3ICs5MDEsNyBAQCBDb21waWxhdGlv
blJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFw
QnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9D
b2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUo
bV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOworICAgICAgICBtX2Nv
ZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1h
cD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKSk7CiAg
ICAgCiAgICAgQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXN1bHQgPSBGSU5BTElaRV9DT0RFKAog
ICAgICAgICBwYXRjaEJ1ZmZlciwgSlNFbnRyeVB0clRhZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmNwcAppbmRleCAxNmJmNzBkODAxNzQ0MjMwNTAyYTJkOGIxOTdjZDQwMWM4
MDI0ZjM4Li41YmRmODMwNDY1MDQzOTk0ZTExYmFmZmVkNTJiYjc4NWMxYmEwYTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogSklUVGh1bmtzOjpKSVRUaHVua3MoKQotICAgIDogbV9ob3N0RnVuY3Rp
b25TdHViTWFwKHN0ZDo6bWFrZV91bmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4oKSkKKyAgICA6
IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChtYWtlVW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGUzODhmYjBl
NjI3MDhiMzRlY2I5NzFlOTQ2YjQ2YjE5M2M0Y2FlM2IuLjhmOWE4NjRlNGZlODYyNmExZmVmYzBj
MzA3YzllNDY1NjYyZjVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApA
QCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsRnJhbWVTaHVmZmxlcj4gZnJhbWVTaHVmZmxlcjsKICAgICBpZiAoY2Fs
bExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSkgewogICAgICAgICBBU1NFUlQoY2FsbExpbmtJ
bmZvLmlzVGFpbENhbGwoKSk7Ci0gICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZs
ZURhdGEoKSk7CisgICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNo
dWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSk7CiAjaWYg
VVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgLy8gV2Ugd291bGQgaGF2ZSBhbHJlYWR5IGNoZWNr
ZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbCwgYW5kIHdlIGNhbgogICAgICAgICAvLyB1c2Ug
dGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIgdGhpcyBidXlzIHVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApp
bmRleCA0MTIyZmJlZDIyZWUxNTUyM2QxNGU0YTg3OWFiYTFhYjg0Nzg2YTA3Li43MDJkMzY5NGQ5
Zjc2ODg0MjBmMGNkYWJkMTBlODg4YTczM2YyODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAt
Mjk2OSw3ICsyOTY5LDcgQEAgaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGluZSYgb3B0aW9ucywg
Ym9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykKICAgICAgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcih2bSk7CiAKICAgICAgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlICYmICF2bS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXIpCi0gICAgICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOworICAgICAgICAgICAgdm0u
bV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZt
KTsKIAogICAgICAgICBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3Vt
ZW50cyk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChv
cHRpb25zLm1fZW5hYmxlUmVtb3RlRGVidWdnaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCBmOGRiZTcxOTZmMTExNzE2ZDBhNThmN2Y1N2UzZjhmNjdiN2Ey
YWNmLi5hMTY0ZmQ5MDNmMzZlOTQyMGE3MzY0ZWY0MjdjNmMyZmZlMzIyY2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUGFyc2Vy
PExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQ
YXJzZXJCdWlsdGluTW9kZQogICAgICwgbV9pbW1lZGlhdGVQYXJlbnRBbGxvd3NGdW5jdGlvbkRl
Y2xhcmF0aW9uSW5TdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX2RlYnVnZ2VyUGFyc2VEYXRhKGRl
YnVnZ2VyUGFyc2VEYXRhKQogewotICAgIG1fbGV4ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExleGVy
VHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKKyAgICBtX2xleGVyID0gbWFrZVVu
aXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2NyaXB0TW9kZSk7CiAgICAgbV9sZXhl
ci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRp
b24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpOwogICAgIG1fdG9rZW4u
bV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNjlhYTBiYzE5MGFmNjc4M2Q4OTI4YzM1OWFh
M2IxMGJiMWZiZDg3My4uMGE1ZWRlNGI4NDI1Y2ZkMWIzMTdjNzZjNTFlYTczNzgxNzgwYjUyMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMDQsNyArMjA0LDcgQEAg
c3RydWN0IFNjb3BlIHsKICAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyKiBsYWJl
bCwgYm9vbCBpc0xvb3ApCiAgICAgewogICAgICAgICBpZiAoIW1fbGFiZWxzKQotICAgICAgICAg
ICAgbV9sYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExhYmVsU3RhY2s+KCk7CisgICAgICAgICAg
ICBtX2xhYmVscyA9IG1ha2VVbmlxdWU8TGFiZWxTdGFjaz4oKTsKICAgICAgICAgbV9sYWJlbHMt
PmFwcGVuZChTY29wZUxhYmVsSW5mbyB7IGxhYmVsLT5pbXBsKCksIGlzTG9vcCB9KTsKICAgICB9
CiAKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAgICAgICAg
IGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1cnJlbnRMaW5lU3RhcnRP
ZmZzZXQoKTsKICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJy
ZW50T2Zmc2V0KCk7CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IGVuZExvY2F0aW9uLnN0
YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwotICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEsCisgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmRMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0Q29sdW1uLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oCmluZGV4IGRmMTdiZTUzNjYzZTdjYjdiNzBjNDg3NzBmOWEwNTI5Y2YzM2E3
ZWUuLjQxMDAwNmQ5Mjc1MWNlOTZiOTJjYjk2MjU2MzVlYTdjZjc4ZWM0ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllckFyZW5hJiBpZGVudGlmaWVyQXJlbmEo
KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkgKCFtX2lkZW50aWZpZXJBcmVu
YSkpCi0gICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBzdGQ6Om1ha2VfdW5pcXVl
PElkZW50aWZpZXJBcmVuYT4oKTsKKyAgICAgICAgICAgICAgICBtX2lkZW50aWZpZXJBcmVuYSA9
IG1ha2VVbmlxdWU8SWRlbnRpZmllckFyZW5hPigpOwogICAgICAgICAgICAgcmV0dXJuICptX2lk
ZW50aWZpZXJBcmVuYTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKaW5kZXggMDUwMzJiNWQxMzEw
OGMwZWI2MjBlOWRhZTgyMGNlZjdhYzc1MzE4Yy4uMzU3MTFiNWZhNjQyNjllNjc3NGFiNzBlMjFk
ZDUwMjUxNjljOGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcApAQCAtNzksNyArNzksNyBAQCBFeGVjdXRpb25D
b3VudGVyKiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZvcihjb25zdCBPcmlnaW5TdGFj
ayYgb3JpZ2luKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGVjdXRpb25Db3VudGVyPiYgY291
bnRlciA9IG1fY291bnRlcnMuYWRkKG9yaWdpbiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghY291bnRlcikKLSAgICAgICAgY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXhl
Y3V0aW9uQ291bnRlcj4oKTsKKyAgICAgICAgY291bnRlciA9IG1ha2VVbmlxdWU8RXhlY3V0aW9u
Q291bnRlcj4oKTsKIAogICAgIHJldHVybiBjb3VudGVyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDcwYzcxNDczMzI0NDQwODA3ODc5MzQwMTk4
NjY3M2M5N2UxZWE4M2QuLmE2NGRlM2ZkZDY2MjU1MThhYzVkMTI2Y2VhYzc4YjZmMjEyNWE0ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTE3NCw3ICsxNzQs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBnZXRTdGFja1RyYWNlKEV4
ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iagogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIHNpemVfdCBmcmFtZXNUb1NraXAgPSB1c2VDdXJyZW50RnJhbWUgPyAwIDogMTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0YWNrRnJhbWU+
PigpOwogICAgIHZtLmludGVycHJldGVyLT5nZXRTdGFja1RyYWNlKG9iaiwgKnN0YWNrVHJhY2Us
IGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2JqZWN0LT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZSgpKTsK
ICAgICBpZiAoIXN0YWNrVHJhY2UtPmlzRW1wdHkoKSkKICAgICAgICAgQVNTRVJUX1VOVVNFRChl
eGVjLCBleGVjID09IHZtLnRvcENhbGxGcmFtZSB8fCBleGVjLT5pc0dsb2JhbEV4ZWMoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcAppbmRleCA0MzllMjA5YjBhNWY4ZmI4MjliNzkxOTc1NzQ4OGM0MTU2MzQyNzNmLi5lZjJl
ODMwODc0MWI4ODUyZTU2MjMyNmY5NjI1N2M5ZDAyOTM1ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTExMCw3
ICsxMTAsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUds
b2JhbENvZGUoCiBGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhKTsKLSAg
ICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICBhdXRv
IHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByYXJlRGF0YS0+bV9saW5l
Q291bnQgPSBsaW5lQ291bnQoKTsKICAgICByYXJlRGF0YS0+bV9lbmRDb2x1bW4gPSBlbmRDb2x1
bW4oKTsKICAgICByYXJlRGF0YS0+bV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJz
U3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUmFyZURhdGEuaAppbmRleCA0NjIzNjQxYzU5OGUzZWJiNWZiYTZiYzAyMzcyNjRlNTA1MmZk
MTc5Li41MmIyOGIxM2M3ZTJlMjVkMjFiYmJhYjNhZDMxZDViNmJjMGNkZWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCkBAIC0xNTYs
NyArMTU2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlvblByb2ZpbGVDbGVh
cmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2gKIGlubGluZSBXYXRjaHBvaW50KiBG
dW5jdGlvblJhcmVEYXRhOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWhhc0FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdX
YXRjaHBvaW50KCkpOwotICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0
aGlzKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CiAgICAgcmV0
dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQuZ2V0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAxYTU3ZWYzZGNmZTkxOWU3MGIzN2ZhN2UzNDg1NGExM2U5MDUzZmFlLi5jYzg3NzY3ZjEwOGJj
YzQ4M2IzMTVmMTEyZmE5YzUzNDdmNTIwMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NzcsOCArNDc3LDggQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9kZWJ1Z2dlciA9IDA7CiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
PigqdGhpcyk7Ci0gICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxK
U0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKKyAgICBtX2luc3BlY3RvckNvbnRyb2xs
ZXIgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gbWFrZVVuaXF1ZTxKU0ds
b2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKICAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUt
PmluaXQoKTsKICAgICBtX2NvbnNvbGVDbGllbnQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNv
bnNvbGVDbGllbnQoKTsKICNlbmRpZgpAQCAtMTE0NSw1NyArMTE0NSw1NyBAQCBjYXBpdGFsTmFt
ZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcg
PyBjYXBpdGFsTmFtZQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBj
b25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0ZXJhdG9yUHJvdG90eXBl
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90
b3R5cGVOZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90
b3R5cGVOZXh0ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVO
ZXh0LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLT5hcnJheVBy
b3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAg
bV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
KTsKKyAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1h
a2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2lu
dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtYXBJdGVyYXRvclBy
b3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9tYXBJdGVyYXRv
clByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBJ
dGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBJ
dGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAg
ewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0
aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5p
dGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVy
YXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dChzZXRJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAg
ICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
KyAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
ICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90
b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldFBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAg
ICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFk
YXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpLCBtX3ZtLnBy
b3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4
dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7
CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRp
dmVXYXRjaHBvaW50KG1fc3RyaW5nUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3Ry
aW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0cmluZ1Byb3RvdHlw
ZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5n
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
ICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFt
ZXMtPnNldCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludCA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50KTsKKyAgICAg
ICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFByb3RvdHlwZVNldFdh
dGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQ
cm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKLSAgICAgICAgbV9zZXRQ
cm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNo
cG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hwb2lu
dCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAg
ICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rvciog
bG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAg
ICAgICB0aGlzLT5zeW1ib2xQcm90b3R5cGUoKTsKIAogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChudW1iZXJQcm90b3R5
cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpOwotICAgICAgICBtX251bWJlclByb3Rv
dHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRp
dGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOworICAgICAgICBtX251bWJlclByb3Rv
dHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwg
bV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOwogICAgICAgICBtX251bWJlclByb3RvdHlwZVRv
U3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG9Ub1N0
cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24qPihudW1iZXJQcm90
b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpKSk7CiAgICAg
fQpAQCAtMTkzMiwxMCArMTkzMiwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxs
QXJyYXlTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludC5pc0JlaW5nV2F0Y2hlZCgpKTsKICAgICBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnQudG91Y2godm0sICJTZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRj
aHBvaW50LiIpOwogCi0gICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5
U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNo
cG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJh
eVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKIAotICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9h
cnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlT
cGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCAwNDdjMTY2NTNlNzFiMWE4MDZiZDlmYzdkNTY2NDNhNWY5
ODhmMTFlLi44NDUzNWNhNWM2MDBjZWNiZDhiNDc4ZjY1YjUzY2QwN2UzNmE4MzlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTUyMSw3
ICs1MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICB7CiAgICAgICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9i
amVjdFJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxKU0dsb2Jh
bE9iamVjdFJhcmVEYXRhPigpOwogICAgIH0KICAgICAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKaW5kZXggMWFmMDAz
NjUzY2I4YzNkZTY0M2Y4YzQ5MTI3YWJiM2U1NTEzZDVhZC4uMzI3ZmVkMDZjNjdhNWJmMTEyNTFm
OWY0ZGVkODM5ZTcwMzNjOGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUnVuTG9vcFRpbWVyLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIEpTUnVuTG9vcFRp
bWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OnNldFJ1bkxvb3AoTWFuYWdlciogbWFuYWdlciwgQ0ZS
dW5Mb29wUgogI2Vsc2UKIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBlclZN
RGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQogICAgIDogcnVuTG9vcCgmUnVuTG9vcDo6Y3VycmVudCgp
KQotICAgICwgdGltZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5hZ2VyPj4o
KnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmly
ZUNhbGxiYWNrKSkKKyAgICAsIHRpbWVyKG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdl
cj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRp
ZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICB0aW1lci0+
c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpKYXZhc2NyaXB0VGltZXIpOwpAQCAt
MTcyLDcgKzE3Miw3IEBAIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyJiBKU1J1bkxvb3BUaW1lcjo6
TWFuYWdlcjo6c2hhcmVkKCkKIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6cmVnaXN0
ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQZXJWTURh
dGE+KCp0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFBlclZNRGF0YT4oKnRoaXMp
OwogI2lmIFVTRShDRikKICAgICBkYXRhLT5zZXRSdW5Mb29wKHRoaXMsIHZtLnJ1bkxvb3AoKSk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCmluZGV4IDVmMDc4ZDJhNTA5ZDJiNDQyMDBmN2E0YWYzODgxMjQ2Y2Iy
ZDU4YTcuLjUyOTAyMGRmMGYxZGMyYTI4NmY4MDBhYmFkOWQ3ZWI3ZDNmOGVlOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxl
OjpnZXREZWxldGVkT2Zmc2V0KCkKIGlubGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0
ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICghbV9kZWxldGVkT2Zm
c2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFByb3BlcnR5T2Zmc2V0Pj4oKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlx
dWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBl
bmQob2Zmc2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVRhYmxlLmNwcAppbmRleCA1OWVjNDFjNDlhZTgyZjQ3ZjY5ODY4MDZkZDYxNDM5NDRhNDJi
NWQ2Li5iMWJiNjc5MTk5MjY1YWZjYmNjYzgzNjU2ZDhkNTZmYzViNGEzNTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgY29uc3QgUHJvcGVy
dHlUYWJsZSYgb3RoZXIpCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3Iu
CiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVy
Lm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0g
ICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0
cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNl
dHMpOwogfQogCiBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgdW5zaWduZWQg
aW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTEwNyw3ICsx
MDcsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgdW5zaWduZWQgaW5p
dGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYgogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRl
ZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRl
ZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRl
bGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAg
IG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpv
dGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogdm9pZCBQcm9wZXJ0eVRhYmxlOjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4
IDA3MWIxZjY2MzE1Y2UzYWU4ZGNmZTE3NWZmNjM2NmY1YzYzMmFmZmMuLjcwZTU5M2Q1M2ViZGQ4
MWQ4YzA4MTNhMjk3NzBlOTQwY2UwNDExM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVnRXhwOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCiAKICAgICBtX251bVN1YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBh
dHRlcm5zOwogICAgIGlmICghcGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzLmlzRW1wdHkoKSB8
fCAhcGF0dGVybi5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICBtX3Jh
cmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9j
YXB0dXJlR3JvdXBOYW1lcy5zd2FwKHBhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcyk7CiAgICAg
ICAgIG1fcmFyZURhdGEtPm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5zd2FwKHBhdHRlcm4ubV9u
YW1lZEdyb3VwVG9QYXJlbkluZGV4KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5oCmluZGV4IDM5Y2RkOTExNmUwMjdlM2RiNjA0MGRiZDhmZTUyNzBkMmU5OTVkOGQu
LmU4ZGE4NTI2ZTdjN2U4MWZiZWE3NWM4ODk4ODE2MWI5YWY4OTE3MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0xNjQsNyArMTY0LDcgQEAgY2xhc3MgUmVnRXhw
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgWWFycjo6WWFyckNvZGVCbG9jayYgZW5zdXJl
UmVnRXhwSklUQ29kZSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcmVnRXhwSklUQ29kZSkKLSAg
ICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8WWFycjo6WWFyckNv
ZGVCbG9jaz4oKTsKKyAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IG1ha2VVbmlxdWU8WWFy
cjo6WWFyckNvZGVCbG9jaz4oKTsKICAgICAgICAgcmV0dXJuICptX3JlZ0V4cEpJVENvZGUuZ2V0
KCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDIzN2Q3ZGU2ODhkZDIwNzY1MDIwMTIxNmNkMGQ1
NDY4MGM0OTZlYWEuLmVlNmUxOGNlZmRiZTc5ZjRiYzJlYjIxOTdmZjUzOTEwNGUxZjc5OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUu
Y3BwCkBAIC00NjksNyArNDY5LDcgQEAgYXV0byBTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1w
bGF0ZU9iamVjdE1hcEltcGwoc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWMKIHsKICAgICBp
ZiAoZGVzdCkKICAgICAgICAgcmV0dXJuICpkZXN0OwotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VV
bmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+KCk7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsK
ICAgICBkZXN0ID0gV1RGTW92ZShyZXN1bHQpOwogICAgIHJldHVybiAqZGVzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDI5M2M0NjQ3MmU3NDg5
NDFjYTljYzJhZGFjMTZhM2QyZGM1ZGVlZWMuLjAxY2QyYmQ1NDdmZTAyYjUwNDdhNmQ0NWIzYzhh
ZDZmZDUyYmRiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIFdhdGNocG9pbnRTZXQqIFN0cnVjdHVyZTo6ZW5zdXJl
UHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQoVk0mIHZtLCBQcm9wZXJ0CiAgICAgU3Ry
dWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+cmFyZURhdGEoKTsKICAgICBpZiAoIXJh
cmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMpIHsKICAgICAgICAgcmFyZURhdGEt
Pm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5p
cXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+KCk7CisgICAgICAg
ICAgICBtYWtlVW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+
KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgfQogICAgIGF1dG8gcmVz
dWx0ID0gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cy0+YWRkKG9mZnNldCwg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YS5jcHAKaW5kZXggOTlhOGQ5ZjdkYWFjMjE3ZTRjODFlN2U3MTI2ZTljMDJiMzc0
ZWQzZi4uZDNjZjE4M2IwZjZkN2M0ODk4ODAwYWI2OGVlNDhjZDEyOGY3ZmUyNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3Ry
aW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyCiAgICAgQVNTRVJUKGNv
bmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHkoKSk7CiAgICAgZm9yIChPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgaWYg
KGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNl
bmNlKSB7Ci0gICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVl
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVy
cmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0aGlzKTsKKyAgICAg
ICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0
Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOwogICAgICAgICAgICAgbV9vYmplY3RUb1N0
cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVdhdGNocG9pbnRT
ZXQuYWRkKGNvbmRpdGlvbiwgdGhpcyktPmluc3RhbGwodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDM5MmYyMTdjMTRlZmFlYjU0NWJm
MGQ0Zjc3OTBjMTEyNzkzMmJjODUuLmE0YTg3MGZjMWZjYWQzNWM0Mzk1ZjEwOWIyMmE5OWM0MjBk
NzQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCBjb25zdCBTeW1ib2xUYWJsZTo6TG9jYWxUb0VudHJ5VmVj
JiBTeW1ib2xUYWJsZTo6bG9jYWxUb0VudHJ5KGNvbnN0IENvbmN1cnJlbnRKUwogICAgICAgICAg
ICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBvZmZzZXQuc2NvcGVPZmZzZXQoKS5vZmZzZXQo
KSArIDEpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIG1fbG9jYWxUb0VudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIpOworICAgICAgICBtX2xv
Y2FsVG9FbnRyeSA9IG1ha2VVbmlxdWU8TG9jYWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsK
ICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbWFwKSB7CiAgICAgICAgICAgICBWYXJPZmZz
ZXQgb2Zmc2V0ID0gZW50cnkudmFsdWUudmFyT2Zmc2V0KCk7CiAgICAgICAgICAgICBpZiAob2Zm
c2V0LmlzU2NvcGUoKSkKQEAgLTE1OSw3ICsxNTksNyBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFi
bGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgcmVzdWx0LT5tX2FyZ3VtZW50cy5z
ZXQodm0sIHJlc3VsdCwgYXJndW1lbnRzKTsKICAgICAKICAgICBpZiAobV9yYXJlRGF0YSkgewot
ICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxl
UmFyZURhdGE+KCk7CisgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8U3lt
Ym9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLmJlZ2luKCk7CkBAIC0xOTEsNyArMTkxLDcgQEAg
dm9pZCBTeW1ib2xUYWJsZTo6cHJlcGFyZUZvclR5cGVQcm9maWxpbmcoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAg
ICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAg
Zm9yIChhdXRvIGl0ZXIgPSBtX21hcC5iZWdpbigpLCBlbmQgPSBtX21hcC5lbmQoKTsgaXRlciAh
PSBlbmQ7ICsraXRlcikgewogICAgICAgICBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLnNldChp
dGVyLT5rZXksIFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0aW9uKTsKQEAgLTIxMCw3
ICsyMTAsNyBAQCBDb2RlQmxvY2sqIFN5bWJvbFRhYmxlOjpyYXJlRGF0YUNvZGVCbG9jaygpCiB2
b2lkIFN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBt
YWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICBBU1NFUlQoIW1fcmFyZURh
dGEtPm1fY29kZUJsb2NrKTsKICAgICBtX3JhcmVEYXRhLT5tX2NvZGVCbG9jay5zZXQoKmNvZGVC
bG9jay0+dm0oKSwgdGhpcywgY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVNldC5jcHAKaW5kZXggNDEwZWI2ZDVhZTE2ZjM2MDIyNmRiMzgyM2Y3ZWU4MjhlY2Nh
YjM4My4uNDFhY2E5ZDNkNGQ5YjhhNTZhZTY4NTIzMGU4ZDY2NzUyYWMwZDAyOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCBT
dHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCgpCiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fcHJvdG8tPnByb3BlcnR5SGFzaCgpKTsKICAgICB9CiAKLSAgICBtX3Byb3BlcnR5SGFz
aCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIG1f
cHJvcGVydHlIYXNoID0gbWFrZVVuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAg
ICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDRlMmQwZDMyNGEyNGUyMzJjZDE5NTM4OTJlZDhiMGEzM2IwYjA1ZWUuLmI3
MDkyYzA4ZWY3MmIwZWNhODlmZjBiNWM0YmUxYWU1OWFhMWRiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTI1MiwxOCArMjUyLDE4IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcnVuTG9vcChDRlJ1bkxvb3BHZXRDdXJy
ZW50KCkpCiAjZW5kaWYgLy8gVVNFKENGKQogICAgICwgaGVhcCh0aGlzLCBoZWFwVHlwZSkKLSAg
ICAsIGZhc3RNYWxsb2NBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxGYXN0TWFsbG9jQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0
ZDo6bWFrZV91bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6
UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQot
ICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBl
PihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxp
YXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3Vu
aXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQotICAgICwgY2VsbEhlYXBD
ZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9l
c05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0
dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgc3Ry
aW5nSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkp
Ci0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxK
U0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIGZhc3RNYWxsb2NBbGxv
Y2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAg
ICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVk
TWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKKyAgICAsIGpzVmFsdWVHaWdh
Y2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4o
R2lnYWNhZ2U6OkpTVmFsdWUpKQorICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlx
dWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBI
ZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5
cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQorICAgICwg
Y2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMo
RG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQorICAgICwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJp
YnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQorICAgICwgc3RyaW5n
SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBk
ZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZT4oKSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJB
c3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVh
cENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlw
ZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5
RnVuY3Rpb25IZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxXZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlPigpKQogI2VuZGlmCiAgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNl
N2NkNzYyCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdh
Y2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFs
dWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYKQEAgLTI5Niw3ICsy
OTYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBt
X2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0
b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFt
ZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKLSAgICAsIG1hY2hpbmVD
b2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNp
bXBsZVN0YXRzPigpKQorICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJh
c2VsaW5lSklUKG1ha2VVbmlxdWU8U2ltcGxlU3RhdHM+KCkpCiAgICAgLCBjdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykKICAgICAsIHN0cmluZ0NhY2hlKCp0aGlzKQogICAgICwg
c3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0aGlzKQpAQCAtMzEyLDggKzMxMiw4IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faW5pdGlhbGl6aW5nT2Jq
ZWN0Q2xhc3MoMCkKICNlbmRpZgogICAgICwgbV9zdGFja1BvaW50ZXJBdFZNRW50cnkoMCkKLSAg
ICAsIG1fY29kZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUNhY2hlPigpKQotICAgICwgbV9i
dWlsdGluRXhlY3V0YWJsZXMoc3RkOjptYWtlX3VuaXF1ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0
aGlzKSkKKyAgICAsIG1fY29kZUNhY2hlKG1ha2VVbmlxdWU8Q29kZUNhY2hlPigpKQorICAgICwg
bV9idWlsdGluRXhlY3V0YWJsZXMobWFrZVVuaXF1ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0aGlz
KSkKICAgICAsIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50KDApCiAgICAgLCBtX3ByaW1pdGl2
ZUdpZ2FjYWdlRW5hYmxlZChJc1dhdGNoZWQpCiAgICAgLCBtX2NvbnRyb2xGbG93UHJvZmlsZXJF
bmFibGVkQ291bnQoMCkKQEAgLTQwNyw3ICs0MDcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKCp0
aGlzKTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlUHJvZmlsZXIoKSkpIHsK
LSAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxl
cjo6RGF0YWJhc2U+KCp0aGlzKTsKKyAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFr
ZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKIAogICAgICAgICBTdHJpbmdQcmlu
dFN0cmVhbSBwYXRoT3V0OwogICAgICAgICBjb25zdCBjaGFyKiBwcm9maWxlclBhdGggPSBnZXRl
bnYoIkpTQ19QUk9GSUxFUl9QQVRIIik7CkBAIC00MjMsNyArNDIzLDcgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIC8vIHdvbid0IHVzZSB0aGlzLgogICAg
IG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgU2ltcGxlVHlwZWRBcnJheUNv
bnRyb2xsZXIoKSk7CiAKLSAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsKKyAgICBtX2J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnk+KCp0aGlzKTsKIAogICAgIGlmIChPcHRpb25zOjp1c2VUeXBlUHJvZmlsZXIoKSkKICAgICAg
ICAgZW5hYmxlVHlwZVByb2ZpbGVyKCk7CkBAIC00NDIsOSArNDQyLDkgQEAgVk06OlZNKFZNVHlw
ZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19Q
Uk9GSUxFUikKIAogICAgIGlmIChPcHRpb25zOjp1c2VSYW5kb21pemluZ0Z1enplckFnZW50KCkp
Ci0gICAgICAgIHNldEZ1enplckFnZW50KHN0ZDo6bWFrZV91bmlxdWU8UmFuZG9taXppbmdGdXp6
ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxSYW5k
b21pemluZ0Z1enplckFnZW50PigqdGhpcykpOwogICAgIGVsc2UgaWYgKE9wdGlvbnM6OnVzZURv
dWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRGdXp6ZXJBZ2VudChzdGQ6
Om1ha2VfdW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAg
ICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+
KCp0aGlzKSk7CiAKICAgICBpZiAoT3B0aW9uczo6YWx3YXlzR2VuZXJhdGVQQ1RvQ29kZU9yaWdp
bk1hcCgpKQogICAgICAgICBzZXRTaG91bGRCdWlsZFBDVG9Db2RlT3JpZ2luTWFwcGluZygpOwpA
QCAtNDU3LDkgKzQ1Nyw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0
IHRoZSBKSVQgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZCBpbiBub24tY29tcGlsYXRp
b24gdGhyZWFkcy4KICAgICBpZiAoY2FuVXNlSklUKCkpIHsKLSAgICAgICAgaml0U3R1YnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKKyAgICAgICAgaml0U3R1YnMgPSBtYWtlVW5p
cXVlPEpJVFRodW5rcz4oKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICAgICAgZnRsVGh1bmtz
ID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKKyAgICAgICAgZnRsVGh1bmtzID0g
bWFrZVVuaXF1ZTxGVEw6OlRodW5rcz4oKTsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAg
ICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwog
ICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3Ry
dWN0KTsKQEAgLTYxOSw3ICs2MTksNyBAQCBXYXRjaGRvZyYgVk06OmVuc3VyZVdhdGNoZG9nKCkK
IEhlYXBQcm9maWxlciYgVk06OmVuc3VyZUhlYXBQcm9maWxlcigpCiB7CiAgICAgaWYgKCFtX2hl
YXBQcm9maWxlcikKLSAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhl
YXBQcm9maWxlcj4oKnRoaXMpOworICAgICAgICBtX2hlYXBQcm9maWxlciA9IG1ha2VVbmlxdWU8
SGVhcFByb2ZpbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2hlYXBQcm9maWxlcjsKIH0KIApA
QCAtMTA0MSw4ICsxMDQxLDggQEAgc3RhdGljIGJvb2wgZGlzYWJsZVByb2ZpbGVyV2l0aFJlc3Bl
Y3RUb0NvdW50KHVuc2lnbmVkJiBjb3VudGVyLCBjb25zdCBGdW5jJiBkb0QKIGJvb2wgVk06OmVu
YWJsZVR5cGVQcm9maWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVUeXBlUHJvZmlsZXIgPSBbdGhp
c10gKCkgewotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
VHlwZVByb2ZpbGVyPigpOwotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlckxvZyA9IHN0ZDo6
bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CisgICAgICAgIHRoaXMtPm1fdHlw
ZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXI+KCk7CisgICAgICAgIHRoaXMtPm1f
dHlwZVByb2ZpbGVyTG9nID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXJMb2c+KCp0aGlzKTsKICAg
ICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KG1fdHlw
ZVByb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVUeXBlUHJvZmlsZXIpOwpAQCAtMTA2MSw3ICsx
MDYxLDcgQEAgYm9vbCBWTTo6ZGlzYWJsZVR5cGVQcm9maWxlcigpCiBib29sIFZNOjplbmFibGVD
b250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93UHJvZmlsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CisgICAgICAgIHRoaXMtPm1f
Y29udHJvbEZsb3dQcm9maWxlciA9IG1ha2VVbmlxdWU8Q29udHJvbEZsb3dQcm9maWxlcj4oKTsK
ICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KG1f
Y29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudCwgZW5hYmxlQ29udHJvbEZsb3dQcm9maWxl
cik7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFZNOjpkdW1wVHlwZVByb2ZpbGVyRGF0YSgp
CiAKIHZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKIHsKLSAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0aGlzLCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KHRhc2spKSk7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxRdWV1ZWRU
YXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFZN
OjpkcmFpbk1pY3JvdGFza3MoKQpAQCAtMTIzMCwxNCArMTIzMCwxNCBAQCB2b2lkIFZNOjplbnN1
cmVTaGFkb3dDaGlja2VuKCkKIHsKICAgICBpZiAobV9zaGFkb3dDaGlja2VuKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9zaGFkb3dDaGlja2VuID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dDaGlj
a2VuPigpOworICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8U2hhZG93Q2hpY2tlbj4o
KTsKIH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
bmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCiAgICAgSXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNT
bG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBh
dXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFr
ZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBl
LCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBcCiAgICAgICAgIG1f
IyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgp
OyBcCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYQogICAgIElz
b1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7IFwKICAgICAgICAgQVNTRVJUKCFt
XyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VB
bmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAg
ICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAgICAgICAgV1RGOjpzdG9yZVN0b3Jl
RmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCiAgICAgICAg
IHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAyNGYxOGFkMDJkZTJmZWY5MDA5MzQ0
ODY0MzBjOThmZTk0OTQyNGVmLi41MzM5M2NiMjU4Zjc0MmM2YWNmZGRlYWVjNmM3MTc1NjQ0ZDc5
NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVy
YXRvci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAgICAg
dm9pZCBlbWl0UGF0Y2hwb2ludChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrLCBCMzo6UGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaCwgVG1wIHJlc3VsdCwgVmVjdG9yPENvbnN0cmFpbmVkVG1wLCBpbmxpbmVT
aXplPiYmIGFyZ3MpCiAgICAgewogICAgICAgICBpZiAoIW1fcGF0Y2hwb2ludFNwZWNpYWwpCi0g
ICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBhdGNocG9p
bnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hw
b2ludFNwZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIG1fcGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0
aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5p
cXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSkpOwogCiAgICAgICAgIEluc3QgaW5zdChQYXRj
aCwgcGF0Y2gsIEFyZzo6c3BlY2lhbChtX3BhdGNocG9pbnRTcGVjaWFsKSk7CiAgICAgICAgIElu
c3QgcmVzdWx0TW92OwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsK
IAogICAgICAgICAvLyBGSVhNRTogTWFrZSBhIGhhc2htYXAgb2YgdGhlc2UuCiAgICAgICAgIEIz
OjpDaGVja1NwZWNpYWw6OktleSBrZXkoYnJhbmNoKTsKLSAgICAgICAgQjM6OkNoZWNrU3BlY2lh
bCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwqPihtX2NvZGUuYWRkU3Bl
Y2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtleSkpKTsKKyAgICAgICAg
QjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwq
PihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtleSkpKTsK
IAogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBkdW1teSB2YWx1ZXMKICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0MApA
QCAtMjEzOSwxMCArMjEzOSwxMCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBC
Mzo6T3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwg
U3RyaW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxl
bmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENv
dW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7Cisg
ICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAKLSAgICBj
b21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50
SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25D
b250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigp
OworICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8
Q0NhbGxIZWxwZXJzPigpOwogCiAgICAgQjM6OlByb2NlZHVyZSBwcm9jZWR1cmU7CiAgICAgQ29k
ZSYgY29kZSA9IHByb2NlZHVyZS5jb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMjA5NDE3N2VkNmYxODNhYjRkODYyZWMy
MjY3ZDMwZjI4YjdkZTViNi4uMTU4ZGY5ZmE5ZjBjOWY3MjFhYzI5Mjc3ODE4OGRjZjI4ZTcwN2Zm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcApAQCAtMTU1MSwxMCArMTU1MSwxMCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6Om9yaWdpbigp
IC0+IE9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4s
IFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25D
b250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5n
dGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNt
Q2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYg
aW5mbywgTWVtb3J5TW9kZSBtb2RlLCBDb21waWxhdGlvbk1vZGUgY29tcGlsYXRpb25Nb2RlLCB1
aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNl
cHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVy
RW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOwotICAgIGNv
bXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0Nh
bGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRK
SVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQu
d2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKIAogICAgIFBy
b2NlZHVyZSBwcm9jZWR1cmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQ
bGFuLmNwcAppbmRleCBmOTg1ZDUyM2MyZTkzZjNiZDIzZmI3YzU3MTJiNTg2OGNjMTZhNjg1Li41
MDZkZjRiZWZkMGQ1NjQxODQ0Y2U1Mjc5NTExNWY2MTI4NzE2MWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBC
QlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
bV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVudHJ5cG9pbnQuY29tcGls
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisgICAgICAgICAgICAg
ICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVudHJ5cG9pbnQuY29t
cGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAg
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIldlYkFz
c2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIGZ1bmN0aW9uSW5kZXgsIHNpZ25h
dHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1
bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChm
dW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLAogICAgICAgICAgICAgICAgICAg
ICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7CiAgICAgICAgICAg
ICB9CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0
cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0
aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGls
YXRpb24+KAorICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+
ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAg
ICAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9u
UHRyVGFnLCAiRW1iZWRkZXItPldlYkFzc2VtYmx5IGVudHJ5cG9pbnRbJWldICVzIG5hbWUgJXMi
LCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFr
ZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRp
b24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgp
KSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250ZXh0LmVtYmVkZGVyRW50cnlwb2lu
dEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdQbGFuLmNwcAppbmRleCBjNTEzZmQyZjUwZWQ2ZmIxN2MzMzg1ZWYyOTA1Mjc4MTcz
OTIxMDM3Li4wZDdhMDNjMzYxMjljZDFkZTJjNTRmZmNkNTAyOTViNTZjNWI4OTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEIzOjpDb21waWxhdGlvbj4oCisgICAgb21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VV
bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVy
LCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2ViQXNzZW1ibHkgT01HIGZ1bmN0aW9uWyVpXSAlcyBu
YW1lICVzIiwgbV9mdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxl
SW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lp
KCkuZGF0YSgpKSwKICAgICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9k
dWN0cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29y
a2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcApp
bmRleCAzNmQ3NGMxNGIxOGM3MDdiODEyYTA0ODdmOTFlMjljMzg1MzkxZGUyLi42NjBmOTU2NTcz
OGIxMGEzMGYzZTdjYzgxOGEzMmM4NTg3ODIxMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBXb3JrbGlzdDo6V29y
a2xpc3QoKQogICAgIG1fdGhyZWFkcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDb21waWxhdGlv
blRocmVhZHMpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNvbXBpbGF0aW9uVGhyZWFkczsgaSsrKQotICAgICAg
ICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2xpc3Q6OlRo
cmVhZD4obG9ja2VyLCAqdGhpcykpOworICAgICAgICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5k
KG1ha2VVbmlxdWU8V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykpOwogfQogCiBXb3Jr
bGlzdDo6fldvcmtsaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNt
LmNwcAppbmRleCA1ZGQ0NTFiZWE4NGQ1OTBiYmYwZmNiMDc2ZTI2ZmZkM2NjN2I4MWFjLi43MzUy
MjAyODkzN2M2ZGFjMWZjNDczYzdlNGNkYzY0OTU4Y2U4ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25D
b250ZXh0JiBjb21wCiB7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29tcGlsYXRpb25Db250
ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVDsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwog
CiAgICAgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFzIGNvZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdmMDMzZmVjMWMzNjlhOTQyM2IzM2Nm
OGViMzMzNGM1MWNlMDgwOGIuLmM0Yjc3Y2FkYmU1ZWVhNTczZWM4NTJiOTVlZjZhNzg5YjgyODUz
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cApAQCAtMTcwNiw3ICsxNzA2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgICAg
IGR1bXBEaXNqdW5jdGlvbihtX2JvZHlEaXNqdW5jdGlvbi5nZXQoKSk7CiAjZW5kaWYKIAotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9i
b2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0
b3IsIGxvY2spOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdU
Rk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJu
LCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tJbnB1dCh1bnNpZ25l
ZCBjb3VudCkKQEAgLTE5MjYsNyArMTkyNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAg
ICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCA9IHBhcmVudGhlc2VzQmVnaW4uYXRvbS5zdWJwYXR0
ZXJuSWQ7CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBsYXN0U3VicGF0dGVy
bklkIC0gc3VicGF0dGVybklkICsgMTsKLSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBj
YWxsRnJhbWVTaXplKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFr
ZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsK
IAogICAgICAgICB1bnNpZ25lZCBmaXJzdFRlcm1JblBhcmVudGhlc2VzID0gYmVnaW5UZXJtICsg
MTsKICAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+dGVybXMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShlbmRUZXJtIC0gZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyArIDIpOwpAQCAtMTk5Nyw3
ICsxOTk3LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKIAogICAgIHZvaWQgcmVnZXhCZWdpbih1
bnNpZ25lZCBudW1TdWJwYXR0ZXJucywgdW5zaWduZWQgY2FsbEZyYW1lU2l6ZSwgYm9vbCBvbmNl
VGhyb3VnaCkKICAgICB7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAg
ICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVt
U3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+
dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbihvbmNlVGhyb3VnaCkp
OwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbMF0uZnJhbWVMb2NhdGlvbiA9IDA7
CiAgICAgICAgIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcAppbmRleCA3YTdjMjA2YzdlNDM1OTdjZmU0YzRkNGRjYThhMDdh
YzVhYzFmNjYwLi44YWI2MmI3YmEzOTgxMDUxZWJiZGFjZDZlNDdhMDU4YWFkZDNkOWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMzg5OSw3ICszODk5LDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fz
c2VtYmxlciB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6ZHVtcFJlZ0V4cERpc2Fzc2VtYmx5KCkpKQotICAg
ICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnJEaXNhc3NlbWJs
ZXI+KHRoaXMpOworICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPFlhcnJE
aXNhc3NlbWJsZXI+KHRoaXMpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAg
ICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRTdGFydE9mQ29kZShsYWJlbCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCA0OWY3N2Y2OWM2ODVjNjUy
MDNkZjNmMDM0YzkwZDE4NzdjOTJkYzliLi5mY2M1MWIyNzdmNTAxMTAzYjdjNjViYmQzM2E1Y2E0
MTBkODFjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3Bw
CkBAIC0yNDAsNyArMjQwLDcgQEAgY2xhc3MgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvciB7CiAg
ICAgewogICAgICAgICBjb2FsZXNjZVRhYmxlcygpOwogCi0gICAgICAgIGF1dG8gY2hhcmFjdGVy
Q2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpOworICAgICAgICBhdXRv
IGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKIAogICAgICAg
ICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLnN3YXAobV9tYXRjaGVzKTsKICAgICAgICAgY2hh
cmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLnN3YXAobV9yYW5nZXMpOwpAQCAtNDQxLDcgKzQ0MSw3IEBA
IGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAsIG1fY2hhcmFjdGVyQ2xh
c3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2UoKSwgcGF0dGVybi51bmljb2RlKCkgPyBD
YW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNTMikKICAgICAgICAgLCBt
X3N0YWNrTGltaXQoc3RhY2tMaW1pdCkKICAgICB7Ci0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBt
YWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9k
eSA9IGJvZHkuZ2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRl
cm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1v
dmUoYm9keSkpOwpAQCAtNDU2LDcgKzQ1Niw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0
b3IgewogICAgICAgICBtX3BhdHRlcm4ucmVzZXRGb3JSZXBhcnNpbmcoKTsKICAgICAgICAgbV9j
aGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnJlc2V0KCk7CiAKLSAgICAgICAgYXV0byBib2R5ID0g
c3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgIGF1dG8gYm9k
eSA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4u
bV9ib2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5l
d0FsdGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQo
V1RGTW92ZShib2R5KSk7CkBAIC02MDgsNyArNjA4LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25z
dHJ1Y3RvciB7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJUKCFvcHRHcm91cE5h
bWUpOwogCi0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKKyAgICAgICAgYXV0byBw
YXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1f
YWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0
ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiwgc3VicGF0dGVy
bklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBjYXB0dXJlLCBmYWxzZSkpOwogICAg
ICAgICBtX2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJu
YXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3Zl
KHBhcmVudGhlc2VzRGlzanVuY3Rpb24pKTsKQEAgLTYxNiw3ICs2MTYsNyBAQCBjbGFzcyBZYXJy
UGF0dGVybkNvbnN0cnVjdG9yIHsKIAogICAgIHZvaWQgYXRvbVBhcmVudGhldGljYWxBc3NlcnRp
b25CZWdpbihib29sIGludmVydCA9IGZhbHNlKQogICAgIHsKLSAgICAgICAgYXV0byBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1f
YWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBtYWtl
VW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CiAgICAgICAgIG1fYWx0
ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFy
ZW50aGV0aWNhbEFzc2VydGlvbiwgbV9wYXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgKyAxLCBwYXJl
bnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBmYWxzZSwgaW52ZXJ0KSk7CiAgICAgICAgIG1fYWx0
ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgpOwog
ICAgICAgICBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb24gPSBpbnZlcnQ7CkBAIC03MDcs
NyArNzA3LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICBQ
YXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRp
dmVzW2FsdF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWZpbHRlclN0YXJ0c1dpdGhCT0wgfHwg
IWFsdGVybmF0aXZlLT5tX3N0YXJ0c1dpdGhCT0wpIHsKICAgICAgICAgICAgICAgICBpZiAoIW5l
d0Rpc2p1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgICAgICAgICAgICAg
IG5ld0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAg
ICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uLT5tX3BhcmVudCA9IGRpc2p1bmN0aW9uLT5t
X3BhcmVudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVy
bmF0aXZlKiBuZXdBbHRlcm5hdGl2ZSA9IG5ld0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2
ZSgpOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBZYXJyUGF0dGVybjo6ZHVtcFBhdHRlcm4o
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5nKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGFueWNoYXJDcmVhdGUoKQogewotICAgIGF1dG8gY2hh
cmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpOworICAgIGF1
dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwogICAgIGNo
YXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgwMCwgMHg3Zikp
OwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBwZW5kKENoYXJhY3RlclJh
bmdlKDB4MDA4MCwgMHgxMGZmZmYpKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9jaGFyYWN0ZXJX
aWR0aHMgPSBDaGFyYWN0ZXJDbGFzc1dpZHRoczo6SGFzQm90aEJNUEFuZE5vbkJNUDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4IDBiN2RiMmViYThhZDUyZGVk
MmI1ZjdlNjdlNTQ1YjhjMTZjOTQ1YzcuLjdlODJjODU1YTg3OGU2YzE4MGVkNTIxZjFmN2FkNDhk
OGMxZmJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0
ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaApAQCAt
MzQxLDcgKzM0MSw3IEBAIHN0cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb24gewogICAgIAogICAgIFBh
dHRlcm5BbHRlcm5hdGl2ZSogYWRkTmV3QWx0ZXJuYXRpdmUoKQogICAgIHsKLSAgICAgICAgbV9h
bHRlcm5hdGl2ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkFsdGVybmF0aXZlPih0
aGlzKSk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChtYWtlVW5pcXVlPFBhdHRlcm5B
bHRlcm5hdGl2ZT4odGhpcykpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGF0dGVybkFs
dGVybmF0aXZlKj4obV9hbHRlcm5hdGl2ZXMubGFzdCgpLmdldCgpKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzCmluZGV4IGMxZjlm
OTlkZTA5MWNlY2IyZTFkYjU1YzM4ZmEzNjAzMTFlZTM3ZjQuLjY5Y2Q4ODg2NTc4NTRjZDU0NDVm
ODYzZTIyZDU1ZmZiOWM0MGVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
Y3JlYXRlX3JlZ2V4X3RhYmxlcwpAQCAtOTUsMTEgKzk1LDExIEBAIGZvciBuYW1lLCBjbGFzc2Vz
IGluIHR5cGVzLml0ZW1zKCk6CiAgICAgZnVuY3Rpb24gKz0gKCJ7XG4iKQogICAgIGlmIGVtaXRU
YWJsZXMgYW5kIGNsYXNzZXNbIlVzZVRhYmxlIl06CiAgICAgICAgIGlmICJJbnZlcnNlIiBpbiBj
bGFzc2VzOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIHRydWUpO1xuIiAl
IChjbGFzc2VzWyJJbnZlcnNlIl0pKQorICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0
byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIHRy
dWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQogICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCisgICAgICAg
ICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxD
aGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkKICAgICBlbHNlOgot
ICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtl
X3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCisgICAgICAgIGZ1bmN0aW9uICs9ICgiICAg
IGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpO1xuIikK
ICAgICBoYXNCTVBDaGFyYWN0ZXJzID0gRmFsc2UKICAgICBoYXNOb25CTVBDaGFyYWN0ZXJzID0g
RmFsc2UKICAgICBmb3IgKG1pbiwgbWF4KSBpbiByYW5nZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlU
YWJsZXMucHkKaW5kZXggZjlmZWY0NjhkMmI1ZGRhNmFhZWVhYjBiM2ZjMDU4Y2QzZWVjZWFjMS4u
NTI2ZmI2ZTdhYzNhMjI3YTZkNDNjYmJlZmQyNzAyZDFhMGM1NGNlOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVz
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQ
cm9wZXJ0eVRhYmxlcy5weQpAQCAtNTI5LDcgKzUyOSw3IEBAIGRlZiBkdW1wTWF0Y2hEYXRhKHNl
bGYsIGZpbGUsIHZhbHVlc1BlckxpbmUsIGRhdGFMaXN0LCBmb3JtYXR0ZXIpOgogICAgIGRlZiBk
dW1wKHNlbGYsIGZpbGUsIGNvbW1hQWZ0ZXIpOgogICAgICAgICBmaWxlLndyaXRlKCJzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiB7fSgpXG57e1xuIi5mb3JtYXQoc2VsZi5n
ZXRDcmVhdGVGdW5jTmFtZSgpKSkKICAgICAgICAgZmlsZS53cml0ZSgiICAgIC8vIE5hbWUgPSB7
fSwgbnVtYmVyIG9mIGNvZGVQb2ludHM6IHt9XG4iLmZvcm1hdChzZWxmLm5hbWUsIHNlbGYuY29k
ZVBvaW50Q291bnQpKQotICAgICAgICBmaWxlLndyaXRlKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KFxuIikKKyAgICAgICAgZmlsZS53
cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNz
PihcbiIpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0
PFVDaGFyMzI+KCIpCiAgICAgICAgIHNlbGYuZHVtcE1hdGNoRGF0YShmaWxlLCA4LCBzZWxmLm1h
dGNoZXMsIGxhbWJkYSBmaWxlLCBtYXRjaDogKGZpbGUud3JpdGUoInswOjA9IzR4fSIuZm9ybWF0
KG1hdGNoKSkpKQogICAgICAgICBmaWxlLndyaXRlKCIpLFxuIikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcCBiL1NvdXJjZS9XVEYvYmVuY2ht
YXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcAppbmRleCBjYzcwN2RlM2ZmNGVjMTM4Y2ZhNDZhYjRj
OGUxM2FiYjY1OTNjYmExLi44Yzk3YzFhMjQxYjcyOWFmOGYzMWYzNTljN2Y1MTc3YTYzNDA5ZGFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAK
KysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCkBAIC02MSw4
ICs2MSw4IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHN0YXRpYyB2b2lkIHJ1bihjb25zdCBj
aGFyKiBuYW1lKQogICAgIHsKICAgICAgICAgTG9ja1R5cGUgbG9jazsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWRb
XT4obnVtVGhyZWFkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltd
PiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkW10+KG51bVRocmVhZHMpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZHMpOwogICAg
IAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAgYi9Tb3VyY2UvV1RG
L2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggZjE1NjUwZDRjOWM4ZmE2NzcwZjg5
MTJmMDlkZmUzOTI5MTMwN2MzNC4uYmU3YWJhMzkwZWI1M2UzNTgxZTM2ZjRhOGI5NTAwZDBlMjk5
Zjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcApAQCAtNzQsOSAr
NzQsOSBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlw
ZT4KICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Bl
ckdyb3VwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPExvY2tUeXBlPltd
PiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdpdGhQYWRkaW5nPExv
Y2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0
aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1U
aHJlYWRzUGVyR3JvdXApOwogCiAgICAgICAgIHZvbGF0aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oIGIvU291
cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCmluZGV4IDBiNTQxYjhjNzNkMGY1OTg2NTFi
Zjk1ZTc2OTNiODA3Yzk5OWY3OGEuLjg4NGVkNzMyMzM3NjFhMjlmYjQ5NmYwYWQwOTg5Njc1NDVl
NzAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKQEAgLTI1NCw3ICsyNTQsNyBAQCBj
bGFzcyBDb25jdXJyZW50VmVjdG9yIGZpbmFsIHsKICAgICB2b2lkIGFsbG9jYXRlU2VnbWVudCgp
CiAgICAgewogICAgICAgICBtX3NlZ21lbnRzLmdyb3cobV9udW1TZWdtZW50cyArIDEpOwotICAg
ICAgICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBzdGQ6Om1ha2VfdW5pcXVlPFNlZ21l
bnQ+KCk7CisgICAgICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9IG1ha2VVbmlxdWU8
U2VnbWVudD4oKTsKICAgICB9CiAKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAppbmRleCA4M2MyMDc1MWY4NWY0ZTRkMjAx
NTYxNDQxY2E4MzE0MWNiNWMzN2ZmLi5jNjNjMDU1YTBhMDM0MWRmNmE1YWYyNzBhNGFjY2I4ZDU3
ZDc4NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApAQCAt
NzMsNyArNzMsNyBAQCB2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnRhc2tSdW5Mb29wKCkK
IAogICAgIHdoaWxlICghbV90YXNrUXVldWUuaXNLaWxsZWQoKSkgewogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wg
PSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNl
KSA/IHN0ZDo6bWFrZV91bmlxdWU8QXV0b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKKyAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9kcmFpbmVkUG9vbCA9
IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpVc2Up
ID8gbWFrZVVuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOwogCiAgICAgICAgICAg
ICBtX3Rhc2tRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBlcmZvcm1UYXNrKCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RNYWxsb2MuaAppbmRleCBlZmVmYjNhMzEzM2U4M2Y2NDMzNmZkMmVjMmRhNTJhNTQ4MzJl
NjIxLi45NWI2NzU5NzJkMzEwZTNkZGJkNDEzZDRhOGY4ZDEyODhmMjBmYWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1h
bGxvYy5oCkBAIC0zMDEsOSArMzAxLDExIEBAIHVzaW5nIFdURjo6ZmFzdEFsaWduZWRGcmVlOwog
I2RlZmluZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBcCiBwdWJsaWM6IFwKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNz
OyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xv
bkFmdGVyVGhpc01hY3JvCiAKICNkZWZpbmUgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
IFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFz
dEFsbG9jYXRlZENsYXNzOyBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWlj
b2xvbkFmdGVyVGhpc01hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRT
dHJlYW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAppbmRleCAzZTI1
M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFlZmM3Y2E3OWI2NGVhLi43MDc0YzAzYWJhZjhmY2YzOTc3
ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJp
bnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVhbT4gRmlsZVByaW50
U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb24KICAgICBpZiAoIWZpbGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmls
ZVByaW50U3RyZWFtPihmaWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWxlUHJpbnRTdHJl
YW0+KGZpbGUpOwogfQogCiB2b2lkIEZpbGVQcmludFN0cmVhbTo6dnByaW50Zihjb25zdCBjaGFy
KiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmluZGV4IDA1ZTM2OTc4MjViYzNk
MzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4M2UuLjBiNzk1ODY3NDgwZmQwMzIyNDEyNDU0ZTdkMGFm
ODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKKysrIGIv
U291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtNjcsMTEgKzY3LDExIEBAIGNsYXNzIEZ1bmN0
aW9uPE91dChJbi4uLik+IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwg
Y2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJs
ZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Bv
aW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZl
cmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24oQ2FsbGFi
bGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjptYWtl
X3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+
PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1h
a2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4u
Pj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8
RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVu
Y3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjpt
YWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGYpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIobWFrZVVu
aXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihX
VEZNb3ZlKGYpKSkgeyB9CiAKICAgICBPdXQgb3BlcmF0b3IoKShJbi4uLiBpbikgY29uc3QKICAg
ICB7CkBAIC04NCwxNCArODQsMTQgQEAgY2xhc3MgRnVuY3Rpb248T3V0KEluLi4uKT4gewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6Omlz
X2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlw
ZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2
YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxs
YWJsZSkKICAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZN
b3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxE
ZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3Zl
KGNhbGxhYmxlKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+
Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oRnVuY3Rpb25UeXBlIGYpCiAgICAgewot
ICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxs
YWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CisgICAg
ICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBl
cjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAzYjFlOTUzMDNkZTU0MDUxNDNmYjU2
M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQwNzdmODRmMDJhMWZhMWMxYmUwMzRhODZlYjM1MGQ2ZDdm
NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNTg4LDEwICs1ODgsMTAgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFU
T1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKLSAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFr
ZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkK
ICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQotICAgICAgICAsIG1f
c3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VV
bmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTMzNCwxMCArMTMzNCwx
MCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENI
RUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9ycyhudWxscHRyKQot
ICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1f
bXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlmCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RB
VFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigq
b3RoZXIubV9zdGF0cykpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigqb3Ro
ZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG90aGVyS2V5Q291
bnQgPSBvdGhlci5zaXplKCk7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9u
cywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYgb3RoZXIpCiAjaWYg
Q0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0b3JzKG51bGxwdHIp
Ci0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwg
bV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG90aGVy
LmludmFsaWRhdGVJdGVyYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwCmluZGV4IDllODcyMGY2ZDlhNzk4MGI5NWU1YjEzYzVlNjU1YzM4OTQ5MzA0YjUuLjUz
NzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUwZDZhMThjNWQ5ZmVjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKGJvb2wgdXNl
KQogICAgIH0KIAogICAgIGlmICh1c2UpIHsKLSAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50
VGltZXJGaXJlZCk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG1ha2VVbmlxdWU8UnVu
TG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwogICAgICAg
ICBtX21lYXN1cmVtZW50VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3MpOwogICAgIH0gZWxzZQog
ICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApp
bmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlmMTljM2MxZmMxZmRjNTdhYjRkNGFiLi5kZWY4MzQwZTNj
OGFjYzg1ODZkYTRmMDBiYjhlOWRjNTZlMDEzZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAt
NTY1LDYgKzU2NSwyNCBAQCBjb25zdGV4cHIgc2l6ZV90IGNseih1aW50MzJfdCB2YWx1ZSwgWmVy
b1N0YXR1cyBtaWdodEJlWmVybyA9IFplcm9TdGF0dXM6Ok1heUJlWgogCiB9IC8vIG5hbWVzcGFj
ZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFy
Z3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWUoQXJncyYmLi4uIGFy
Z3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6X19mYXN0
QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCit0ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lOTElORSBkZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKK3sKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCiAjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0ZDo6bW92ZTxXVEY6
OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCiAKIHVzaW5nIFdURjo6S0I7CkBAIC01ODUsMyAr
NjAzLDUgQEAgdXNpbmcgV1RGOjptZXJnZURlZHVwbGljYXRlZFNvcnRlZDsKIHVzaW5nIFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZjsKIHVzaW5nIFdURjo6c2FmZUNhc3Q7CiB1c2luZyBXVEY6OnRy
eUJpbmFyeVNlYXJjaDsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZTsKK3VzaW5nIFdURjo6bWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
dHJlYW1CdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCmluZGV4IDI2YmJj
OGZkNjdhNDkzNDYzMjIxZDYxOTYxOGViN2M2NDY4NjQwMzAuLmNhMzNmODY3ZDM4YjU3NTkyMDE0
MWQ1MjNjMzA3YWFlN2M4MjBiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCkBAIC02MCw3ICs2MCw3
IEBAIGNsYXNzIFN0cmVhbUJ1ZmZlciB7CiAgICAgICAgIG1fc2l6ZSArPSBzaXplOwogICAgICAg
ICB3aGlsZSAoc2l6ZSkgewogICAgICAgICAgICAgaWYgKCFtX2J1ZmZlci5zaXplKCkgfHwgbV9i
dWZmZXIubGFzdCgpLT5zaXplKCkgPT0gQmxvY2tTaXplKQotICAgICAgICAgICAgICAgIG1fYnVm
ZmVyLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigpKTsKKyAgICAgICAgICAgICAgICBt
X2J1ZmZlci5hcHBlbmQobWFrZVVuaXF1ZTxCbG9jaz4oKSk7CiAgICAgICAgICAgICBzaXplX3Qg
YXBwZW5kU2l6ZSA9IHN0ZDo6bWluKEJsb2NrU2l6ZSAtIG1fYnVmZmVyLmxhc3QoKS0+c2l6ZSgp
LCBzaXplKTsKICAgICAgICAgICAgIG1fYnVmZmVyLmxhc3QoKS0+YXBwZW5kKGRhdGEsIGFwcGVu
ZFNpemUpOwogICAgICAgICAgICAgZGF0YSArPSBhcHBlbmRTaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRl
eCA3M2U5ZGZlYzA2ZmQ3ODdmM2IwNmIzZGM5ZGE2NWE1NTA0ZDFjMDI5Li42NTkxMjUxYjg2Mjdk
ZjM2Y2YyZWI5Zjc0NzkzZWY0ODljYTFlOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9V
bmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApAQCAtMzMsMTEgKzMz
LDE4IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVl
UmVmOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgotVW5pcXVlUmVmPFQ+
IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCiB7CiAgICAgcmV0dXJuIFVu
aXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1
ZVJlZihBcmdzJiYuLi4gYXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0
eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0ZWRDbGFzcywgaW50Pjo6dmFsdWUpOworICAgIHJldHVy
biBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxUPihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgVW5pcXVlUmVm
IHsKIHB1YmxpYzoKQEAgLTYzLDcgKzcwLDcgQEAgY2xhc3MgVW5pcXVlUmVmIHsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5pcXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7
IH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmll
bmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZX
aXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4g
ZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAogICAgIFVuaXF1ZVJlZihUJiBvdGhlcikKQEAgLTc5
LDMgKzg2LDQgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAogdXNpbmcgV1RGOjpVbmlxdWVSZWY7CiB1
c2luZyBXVEY6Om1ha2VVbmlxdWVSZWY7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0
RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29w
R0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAppbmRleCA1ZTVi
YThhYmViZGJkNDliYmI4MzdkZDRjNGZkNjliZDZmZmMzNjFmLi5mYjIxMWQwYTI5NjFkZmMxNmFh
NmUyMWEyMWE5NzRkZmYxNTI2OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcApA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1
cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgZ19zb3VyY2Vfc2V0X25h
bWUoc291cmNlLmdldCgpLCAiW1dlYktpdF0gUnVuTG9vcCBkaXNwYXRjaEFmdGVyIik7CiAgICAg
Z19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUoc291cmNlLmdldCgpLCBnX2dldF9tb25vdG9uaWNfdGlt
ZSgpICsgZHVyYXRpb24ubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlzcGF0Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BhdGNo
QWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZ19zb3VyY2Vfc2V0X2NhbGxi
YWNrKHNvdXJjZS5nZXQoKSwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0KHN0YXRp
Y19jYXN0PERpc3BhdGNoQWZ0ZXJDb250ZXh0Kj4odXNlckRhdGEpKTsKICAgICAgICAgY29udGV4
dC0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IGRjYmEwNjA4
MmM1ZjY2ZTMxOWExNWVlNTk3ZmM2NDk3NjZiMDVlNmMuLjViZjRlNmQwMWRlODQzZWQyODc4ODNl
YTNhMDNlODQ5NDkzYmVjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMTc5
LDcgKzE3OSw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9y
OjpJbXBsIHsKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJ
dGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKLSAg
ICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcu
aXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwg
aW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5n
Vmlldy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmll
dykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmNwcAppbmRleCBmZGI4Y2UyOTJkNzM4ZGE0MjAzOGFhOTY1YWYzYWNhMTc4YTgwY2Vi
Li44ZGM3NmZhMmU1OWVhNjdlMDIxNzM4YzMxMWEzNTc3ZjRkMzZlNjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1h
bmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZv
aWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eUludmFsaWRV
UkwoY29uc3QgU3RyaW5nJiBwcm9wCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6Omxv
Z0RldmVsb3Blcldhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX2Nv
bnNvbGVDb250ZXh0KQotICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5hZGRDb25zb2xlTWVzc2Fn
ZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KEpTQzo6TWVzc2Fn
ZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFuaWZlc3QgIl9zLCBt
X21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7CisgICAgICAgIG1fY29u
c29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNlOjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6
TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBs
aWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZlc3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVz
c2FnZSkpKTsKIH0KIAogVVJMIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlU3RhcnRV
UkwoY29uc3QgSlNPTjo6T2JqZWN0JiBtYW5pZmVzdCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3Bw
CmluZGV4IDliZmE1Zjk0OTk0YjA1NDUwNmI4MjZhMzE0YjgyNTgyN2VhNDFhZGIuLjdlNGY3OTQ3
MWUyYzU5ZmU3MWMxNDgxMzJmNGI1NTFkOGZmYzc5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcApAQCAtNTIsNyArNTIsNyBAQCBO
YXZpZ2F0b3JCZWFjb24qIE5hdmlnYXRvckJlYWNvbjo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRv
cikKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yQmVhY29u
Kj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmlnYXRvcik7CisgICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0
b3IpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NV2luZG93Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2lu
ZG93Q2FjaGVzLmNwcAppbmRleCA1ZWQxZjVjY2E2NDFlYjA0ZWMwZTBhMGNlMDZjODM3MjQ1Njhh
MmZmLi42MTUzOTQzMGRmYjk2MTZmZDI4OGZlZDkyY2I5NDRmZjQ0NmIwMTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIERPTVdpbmRvd0NhY2hlcyogRE9NV2luZG93Q2FjaGVzOjpmcm9tKERPTVdpbmRv
dyogd2luZG93KQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5k
b3dDYWNoZXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5kb3cpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93
KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHBy
b3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2Vy
R2xvYmFsU2NvcGVDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKaW5kZXggMDY1NmJlZjBiMTcxOGUzM2RiYzdmYTBlZTYw
YzU3ZDQ4ZTM4ZDRlOC4uNTExOGE0ODg1MGYyNDJkMDQ0ZDNiNDBmZjBlM2IyM2JiOTZlMjhmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29w
ZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9i
YWxTY29wZUNhY2hlcy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV29ya2VyR2xvYmFsU2NvcGVDYWNo
ZXMqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKFdvcmtlckdsb2JhbFNjb3BlJiBzY29w
ZSkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2Nv
cGVDYWNoZXMqPihTdXBwbGVtZW50PFdvcmtlckdsb2JhbFNjb3BlPjo6ZnJvbSgmc2NvcGUsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUNhY2hlcz4o
c2NvcGUpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlckds
b2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3Jl
ZGVudGlhbHMuY3BwCmluZGV4IDcxZjQzOGNmNzg2Yzc2ZDdiNTg3MjE1NTk3NjY4YjYyMzYxYjU5
OTMuLjExODFiZDk4NWEyMmJhNDkzZjgzNjMxZDdlNDFmZWU4NzliNTZiM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3Jl
ZGVudGlhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFn
ZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5hdmlnYXRv
ckNyZWRlbnRpYWxzKiBOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmln
YXRvcikKIHsKICAgICBOYXZpZ2F0b3JDcmVkZW50aWFscyogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PE5hdmlnYXRvckNyZWRlbnRpYWxzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5h
dmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckNyZWRl
bnRpYWxzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmln
YXRvckNyZWRlbnRpYWxzPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5n
ZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggYjZm
ZDY4ZDY3MmVkZTM4Nzc4YzE1YzZmZWFhZjQ2YjQ1NWU1YTFjZC4uNzVlZGI2YTkzNjM4ODBlNTg3
YzM1NzU2YjE0ZGVjOWY5YjQ1ZTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC0xMzMsNyAr
MTMzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lz
dGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICAgICAgICAgYXV0byBzeXN0ZW1JRCA9
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGVla1N5c3RlbUlEKHZpZXcs
IG9mZnNldCk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAg
ICAgICBpZiAoc3lzdGVtSUQgPT0gSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94OjpmYWlyUGxh
eVN5c3RlbUlEKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IHN0ZDo6bWFrZV91bmlx
dWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOworICAgICAgICAgICAgYXV0byBmcHNQ
c3NoID0gbWFrZVVuaXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CiAgICAgICAg
ICAgICBpZiAoIWZwc1Bzc2gtPnJlYWQodmlldywgb2Zmc2V0KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgcHNzaEJveGVzLmFwcGVuZChXVEZNb3Zl
KGZwc1Bzc2gpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHN5c3RlbUlEKTsKICNlbmRpZgotICAgICAgICBh
dXRvIHBzc2hCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveD4oKTsKKyAgICAgICAgYXV0byBwc3NoQm94ID0gbWFrZVVuaXF1ZTxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7CiAgICAgICAgIGlmICghcHNzaEJveC0+
cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggODI2Mjg5M2ZlMGFmOTk5MTRlZDM5ZTk2MGNmMTBhNzUz
NDA3MDViNi4uODM3ZGYxMjNhZTU5NmYzNTM3YzkxNTI3MDNlM2QyNzFiMzQ2ZWI1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE0uY3BwCkBAIC02MSwxNSArNjEsMTUgQEAgc3RydWN0IENETUZhY3Rvcnkgewog
c3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGluc3RhbGxlZENETUZhY3RvcmllcygpCiB7CiAg
ICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8Q0RNRmFjdG9y
eSo+IHsKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5PihjZG0pOyB9LAorICAg
ICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1
ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCiAgICAgICAgICAgICBMZWdhY3lD
RE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtLCBMZWdhY3lDRE1Qcml2YXRlQ2xl
YXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAgICAgICAgIC8vIEZJWE1F
OiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMuIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzE4
LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMyMAotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShM
ZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQ
bGF5ZXI+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2Rt
KSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXllcj4oY2RtKTsgfSwKICAg
ICAgICAgICAgIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVBy
aXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICNpZiAo
SEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKSB8fCBIQVZFKEFWU1RSRUFNU0VTU0lPTikpICYmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSog
Y2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7
IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KGNkbSk7IH0s
CiAgICAgICAgICAgICBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5
c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRN
aW1lVHlwZSksCiAjZW5kaWYKICAgICB9KTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5Q0RNPiBMZWdhY3lDRE06OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNPihrZXlT
eXN0ZW0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeUNETT4oa2V5U3lzdGVtKTsKIH0K
IAogTGVnYWN5Q0RNOjpMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5oCmluZGV4IDQ1OGVjNTNiNDMzN2IxNzEwNTU2ZjhhMTdiNGVmMDFlZmNlMTU2NGUuLmZi
NWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1ZmUwYTVlODk2NDA2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5o
CkBAIC01MCw3ICs1MCw4IEBAIGNsYXNzIExlZ2FjeUNETUNsaWVudCB7CiAgICAgdmlydHVhbCBS
ZWZQdHI8TWVkaWFQbGF5ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNETSopIGNvbnN0
ID0gMDsKIH07CiAKLWNsYXNzIExlZ2FjeUNETSB7CitjbGFzcyBMZWdhY3lDRE0gZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2Fj
eUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZh
dGUuaAppbmRleCAwYThkNTRlNWM1NjVmMzQ1MDg1NjJjNWE4YzFlMDAzNWFmMTRhNzRmLi5mMjQ5
NzA3MmU3ODU3NjBjNTllMjMwMzkzNGZiN2Y5Y2M0NzcyZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNUHJpdmF0ZS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIExlZ2FjeUNETVNlc3Npb247CiBj
bGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OwogCiBjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRl
SW50ZXJmYWNlKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVJbnRlcmZhY2Uo
KSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5
LmNwcAppbmRleCBjOTMxNmRmZDhhYmI0MDU0OTJmNTU1ZWIzZDFiM2QwOTE3Y2VmZjUwLi4zYThj
MDBmNTIzMWY1MmE2ZTg5ZDE4M2QxNTExYzNhYzg3NzNhMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xl
YXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBM
ZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeUNETVBy
aXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGll
bnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkNsZWFyS2V5Pihj
bGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25DbGVhcktleT4oY2xpZW50
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaApp
bmRleCAyZjdiMDM1MzllZjhlYTQ3NGUyMzZkMDVkOWUxN2ZlYzQ4NGU2MjdlLi5kOGE0NDliMWJl
ZTQ0ZTI1OTI3NDgyZjQwYmNmYjJjNmJjMzgwOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1TZXNzaW9uQ2xlYXJLZXkuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIENETVNlc3Npb25DbGVhcktleSA6IHB1YmxpYyBMZWdhY3lDRE1TZXNz
aW9uIHsKK2NsYXNzIENETVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1T
ZXNzaW9uIHsKIHB1YmxpYzoKICAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCopOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25DbGVhcktleSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBhZGRjNTQ4
OTZiOGE0NDM4Y2ZiZmQwNjU4MGFkYmM4NjBhODFmODY0Li5kYjYzOTBlN2Y5OTI1OTc3Yjg3Y2Ew
MDllZGFiZDUxY2RiNjY3MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3du
ZXI6OmxvYWRCbG9iKGNvbnN0IEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1l
cikKICAgICB9CiAKICAgICBtX2Jsb2JMb2FkZXIuZW1wbGFjZSgqdGhpcyk7Ci0gICAgbV9ibG9i
TG9hZGVyLT5sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9h
ZGVyLCBjb25zdW1lcik7CisgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIgPSBtYWtlVW5pcXVlPEZl
dGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1lcik7CiAKICAgICBtX2Jsb2JMb2FkZXIt
PmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CiAgICAgaWYg
KCFtX2Jsb2JMb2FkZXItPmxvYWRlci0+aXNTdGFydGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGNkMzQ1ZWI5ZWMzNDBjMzZl
MGYwYTZlZWQ4MmRkOTg4YjRmOTdkMzkuLjk0MDEzY2Y0ZWE2NTIzOGQ4M2I5YjRjODFkYjdkMTgx
NjUzMjQ3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0CiAKICAg
ICByZXNwb25zZS0+YWRkQWJvcnRTdGVwcyhyZXF1ZXN0LnNpZ25hbCgpKTsKIAotICAgIHJlc3Bv
bnNlLT5tX2JvZHlMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEJvZHlMb2FkZXI+KHJlc3BvbnNl
LmdldCgpLCBXVEZNb3ZlKHJlc3BvbnNlQ2FsbGJhY2spKTsKKyAgICByZXNwb25zZS0+bV9ib2R5
TG9hZGVyID0gbWFrZVVuaXF1ZTxCb2R5TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShy
ZXNwb25zZUNhbGxiYWNrKSk7CiAgICAgaWYgKCFyZXNwb25zZS0+bV9ib2R5TG9hZGVyLT5zdGFy
dChjb250ZXh0LCByZXF1ZXN0KSkKICAgICAgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG51
bGxwdHI7CiB9CkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogYm9v
bCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9sb2FkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5
LT5jb25zdW1lcigpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCp0
aGlzLCAmbV9yZXNwb25zZS5tX2JvZHktPmNvbnN1bWVyKCkpOwogICAgIG1fbG9hZGVyLT5zdGFy
dChjb250ZXh0LCByZXF1ZXN0KTsKICAgICByZXR1cm4gbV9sb2FkZXItPmlzU3RhcnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdh
bWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVw
YWQuY3BwCmluZGV4IDYxMDIwODk5Y2JjNGE3ZTQzM2IxNTFkY2NhZWJmZTkwNzY0ZDNlMmQuLjg1
MGQyMmRlMjg1YmIzMzVkMjJlOGMyZTI1M2I3YWI2ZTBjNjAzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgTmF2aWdhdG9yR2FtZXBhZCogTmF2aWdhdG9yR2FtZXBhZDo6ZnJvbShOYXZpZ2F0
b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JHYW1lcGFkKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yR2FtZXBhZCo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShu
YXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHYW1l
cGFkPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRv
ckdhbWVwYWQ+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwog
ICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5l
d1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYjA5ZmMz
NDMzYmJmYmI3MjhmMzE1YzE1MzNhNmYyYzllNGZjMDA3MS4uY2Q4MDcwYjIwN2RiOGEzNDQwMjZj
ZmY2MTA1Yjg1ZWUxOWJjNTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTU1LDcg
KzE1NSw3IEBAIGNvbnN0IGNoYXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5h
bWUoKQogdm9pZCBwcm92aWRlR2VvbG9jYXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNs
aWVudCYgY2xpZW50KQogewogICAgIEFTU0VSVChwYWdlKTsKLSAgICBTdXBwbGVtZW50PFBhZ2U+
Ojpwcm92aWRlVG8ocGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgp
LCBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkp
OworICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Db250cm9sbGVy
PigqcGFnZSwgY2xpZW50KSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xv
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9y
R2VvbG9jYXRpb24uY3BwCmluZGV4IGIzNGY0OWE2NzFkODVmNTE0MmI4YmFmMGY1MmJhOTkxYWM0
MzU5ZGMuLjM1ZGZiZjhmM2YyNTY5YzAxMzUzNTY2MzAwZjViNzgzN2RlMjhmYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9y
R2VvbG9jYXRpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBO
YXZpZ2F0b3JHZW9sb2NhdGlvbjo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKICAgICBO
YXZpZ2F0b3JHZW9sb2NhdGlvbiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdl
b2xvY2F0aW9uKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHZW9sb2NhdGlvbj4obmF2aWdh
dG9yKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JH
ZW9sb2NhdGlvbj4obmF2aWdhdG9yKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1l
bnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgp
LCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNw
cAppbmRleCBjNzIwM2E5YTg2NDA5NzA1MGQzZGMwMDc5MmY3YTZiNTgxZmFhMjVlLi41ZTlkOTc5
NjZiZmRlNThlNjYwOTlhNTA5ZTYxOGI4NGMxOGQwNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFz
ZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRE9NV2luZG93SW5kZXhlZERhdGFiYXNlKiBET01XaW5k
b3dJbmRleGVkRGF0YWJhc2U6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2lu
ZG93SW5kZXhlZERhdGFiYXNlKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxl
bWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2lu
ZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2U+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZjQzMDkwYzRkY2MzZWRl
NWUyN2QxYWE0NDM4NDQ0N2Q4NDljNjQwYi4uOWE3ODEyNzg0NjNlZDBhNGEwYWRkZDNmN2RiMGM1
NjU2OTYyYjljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNTE3LDcgKzUxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJ
REJJbmRleD4+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkK
ICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9y
LCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2luZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgc3Bl
Y2lmaWVkIGluZGV4IHdhcyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBhdXRvIGluZGV4ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8s
ICp0aGlzKTsKKyAgICBhdXRvIGluZGV4ID0gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKIAogICAgIFJlZjxJREJJbmRleD4gcmVm
ZXJlbmNlZEluZGV4IHsgKmluZGV4IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBmYTJjZDdlYWQwOWI2MDU1MjVi
OGNiNDQxZWY3MDAxZDgzMzUwMTAwLi40MjI0M2ZiYTU3MzEyOTU0MTg4OTRhMzIwNDNlODllMGIy
YzFhNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9i
amVjdFN0b3JlPj4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2Jq
ZWMKICAgICBpZiAoIWluZm8gfHwgKCFmb3VuZCAmJiAhaXNWZXJzaW9uQ2hhbmdlKCkpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRl
ICdvYmplY3RTdG9yZScgb24gJ0lEQlRyYW5zYWN0aW9uJzogVGhlIHNwZWNpZmllZCBvYmplY3Qg
c3RvcmUgd2FzIG5vdCBmb3VuZC4iX3MgfTsKIAotICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAq
aW5mbywgKnRoaXMpOworICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVj
dFN0b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwogICAgIGF1
dG8qIHJhd09iamVjdFN0b3JlID0gb2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2Vk
T2JqZWN0U3RvcmVzLnNldChvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUob2JqZWN0U3RvcmUpKTsK
IApAQCAtNjY3LDcgKzY2Nyw3IEBAIFJlZjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246
OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYKIAogICAgIExvY2tl
cjxMb2NrPiBsb2NrZXIobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsKIAotICAgIGF1dG8g
b2JqZWN0U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9yZSA9IG1h
a2VVbmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8s
ICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwog
ICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQoaW5mby5uYW1lKCksIFdURk1vdmUob2Jq
ZWN0U3RvcmUpKTsKIApAQCAtNzU1LDcgKzc1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRl
eD4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9y
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmNyZWF0ZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBp
bmZvKTsKICAgICB9KSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJJbmRleD4o
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBv
YmplY3RTdG9yZSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25TZXJ2
ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJ
bmRleEluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAK
aW5kZXggYTQ4NTAzYjRkMmQ4MDQyOTQ2ODRhNjVhNjVlYmQ2NGYyMzNjZDdiOS4uOWI3NTc3NDky
MWI0NjUwNmY1ODNkZTdmZWM0MjUwZTg1NGFjZTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3Bl
SW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTksNyArNTksNyBAQCBXb3JrZXJHbG9iYWxTY29wZUlu
ZGV4ZWREYXRhYmFzZSogV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20oV29y
a2VyRwogICAgICAgICBpZiAoIWNvbm5lY3Rpb25Qcm94eSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblByb3h5
KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxT
Y29wZUluZGV4ZWREYXRhYmFzZT4oc2NvcGUsICpjb25uZWN0aW9uUHJveHkpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZzY29w
ZSwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA5NDhjZjc0NjYzYWU2OWM4MmRhNDQ0
ZTA5MzQ3M2RkODU2ZDRkZTkzLi4zNzcxMWRjMTAzZGI2YzlhOWI4MTNkYmM5ZGY3OTliN2UyNmE2
ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNTAsNyArNTAsNyBA
QCBSZWY8SURCQ29ubmVjdGlvblRvU2VydmVyPiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0
ZShJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZQogCiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNv
bm5lY3Rpb25Ub1NlcnZlcihJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZSYgZGVsZWdhdGUp
CiAgICAgOiBtX2RlbGVnYXRlKG1ha2VXZWFrUHRyKGRlbGVnYXRlKSkKLSAgICAsIG1fcHJveHko
c3RkOjptYWtlX3VuaXF1ZTxJREJDb25uZWN0aW9uUHJveHk+KCp0aGlzKSkKKyAgICAsIG1fcHJv
eHkobWFrZVVuaXF1ZTxJREJDb25uZWN0aW9uUHJveHk+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9u
T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9U
cmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKaW5kZXggMjc1M2ZkMGMyNDU3YjljMDlkOWQ4OWU0Zjc2
MmI0NzlmOGI0NDBiMS4uOGUxZGUwNmQ3MWU4ZjBiMjIzZDY4NmU1ZTFhOGEyMjA5Yjc0Mzg0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFRyYW5z
YWN0aW9uT3BlcmF0aW9uOjpUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIElEQlJlcXVlCiAgICAgaWYgKG1faW5kZXhJZGVudGlmaWVyKQogICAgICAgICBt
X2luZGV4UmVjb3JkVHlwZSA9IHJlcXVlc3QucmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCk7CiAg
ICAgaWYgKGF1dG8qIGN1cnNvciA9IHJlcXVlc3QucGVuZGluZ0N1cnNvcigpKQotICAgICAgICBt
X2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmll
cj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jdXJzb3JJZGVudGlm
aWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlk
ZW50aWZpZXIoKSk7CiAKICAgICBtX2lkYlJlcXVlc3QgPSAmcmVxdWVzdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAK
aW5kZXggZjZhYjRmM2FiMmMyOGIwZWUyMjQ2ODk0YTBkZTU4NGJkMDg3NTFmZC4uZjU1NjhlMzI1
ZDM3MDExYTI3NWUwMWRmOTY2ZGZkZjU5NTJlOGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEyMyw3ICsx
MjMsNyBAQCBVbmlxdWVJREJEYXRhYmFzZSYgSURCU2VydmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlE
QkRhdGFiYXNlKGNvbnN0IElEQkRhdGFiYXNlSWRlbgogCiAgICAgYXV0byB1bmlxdWVJREJEYXRh
YmFzZSA9IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwog
ICAgIGlmICh1bmlxdWVJREJEYXRhYmFzZS5pc05ld0VudHJ5KQotICAgICAgICB1bmlxdWVJREJE
YXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXF1ZUlEQkRhdGFi
YXNlPigqdGhpcywgaWRlbnRpZmllcik7CisgICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJh
dG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlm
aWVyKTsKIAogICAgIHJldHVybiAqdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlOwog
fQpAQCAtMTM1LDcgKzEzNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElE
QlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiAgICAgaWYgKG1f
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6Y3JlYXRlKGlkZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwg
bV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRs
ZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9zZXNz
aW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdTdG9y
ZVRlbXBvcmFyeUZpbGVIYW5kbGVyKTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFz
ZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCkBAIC03NTMsNyArNzUzLDcgQEAg
dm9pZCBJREJTZXJ2ZXI6OlF1b3RhVXNlcjo6aW5pdGlhbGl6ZVNwYWNlVXNlZCh1aW50NjRfdCBz
cGFjZVVzZWQpCiBJREJTZXJ2ZXI6OlF1b3RhVXNlciYgSURCU2VydmVyOjplbnN1cmVRdW90YVVz
ZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgcmV0dXJuICptX3F1b3RhVXNl
cnMuZW5zdXJlKG9yaWdpbiwgW3RoaXMsICZvcmlnaW5dIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UXVvdGFVc2VyPigqdGhpcywgbV9xdW90YU1hbmFnZXJHZXR0ZXIobV9zZXNz
aW9uSUQsIG9yaWdpbiksIENsaWVudE9yaWdpbiB7IG9yaWdpbiB9KTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UXVvdGFVc2VyPigqdGhpcywgbV9xdW90YU1hbmFnZXJHZXR0ZXIobV9zZXNz
aW9uSUQsIG9yaWdpbiksIENsaWVudE9yaWdpbiB7IG9yaWdpbiB9KTsKICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKaW5kZXggNjk4M2M5ZDdlYWZmNTYx
NjcyMDRkOTUyZjFmMjI2N2JiNDBjYTRiYS4uOGQ5MjFkOGVmZTZiYTg0MGEzMGQ2MWRmZGM2YTcy
MWU4MjhhNDNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSURC
RXJyb3IgSW5kZXhWYWx1ZVN0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYgaW5kZXhL
ZXksIGNvbnN0IElEQktleURhdGEKICAgICAgICAgcmV0dXJuIElEQkVycm9yKENvbnN0cmFpbnRF
cnJvcik7CiAKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGV4VmFsdWVFbnRyeT4obV91bmlxdWUp
OworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxJbmRleFZhbHVl
RW50cnk+KG1fdW5pcXVlKTsKIAogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZEtleSh2
YWx1ZUtleSk7CiAgICAgbV9vcmRlcmVkS2V5cy5pbnNlcnQoaW5kZXhLZXkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKaW5kZXggNDdjYzQyZmQyNmQ2
NDczYzY0MTkyN2U5OTJkNGVjNmU4ZDdiZjhlZS4uNWU3MTQ0OTc4NGEwZGEwNzY3Nzg5YThkZWRj
NTIyNjg5ZjRkOGRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+IE1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUoTWVtb3J5SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3Rv
cmUsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0b3JlLCBp
bmZvKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bj4oYmFja2luZ1N0b3JlLCBpbmZvKTsKIH0KIAogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYg
YmFja2luZ1N0b3JlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCkBAIC01Miw3ICs1
Miw3IEBAIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbihNZW1vcnlJREJCYWNraW5nU3RvCiAgICAgICAgIElEQkRhdGFiYXNlSW5mbyBp
bmZvOwogICAgICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUuZ2V0T3JFc3RhYmxpc2hE
YXRhYmFzZUluZm8oaW5mbyk7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAg
ICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CisgICAgICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIH0KIH0KIApAQCAtMTk1LDcgKzE5NSw3
IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJlY29yZFZhbHVlQ2hhbmdl
ZChNZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0CiAKICAgICBhdXRvIG9yaWdpbmFsQWRkUmVzdWx0
ID0gbV9vcmlnaW5hbFZhbHVlcy5hZGQoJm9iamVjdFN0b3JlLCBudWxscHRyKTsKICAgICBpZiAo
b3JpZ2luYWxBZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgb3JpZ2luYWxBZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKKyAgICAg
ICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxLZXlWYWx1
ZU1hcD4oKTsKIAogICAgIGF1dG8qIG1hcCA9IG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA3ZDE0
MmIwMDUwYWI2MDg4MWUzODdiZThjMTk4OTQ3YWM2ZThkZDgxLi5jZmZlMzMzN2Y3OTQ0OGI4YzIx
M2RiYmU1ZmEzNWI0ZDNhNzBmMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNw
cApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUg
PSAweDIwMDAwMDAwMDAwMDAwOwogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5SURCQmFja2luZ1N0
b3JlPiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUlkZW50
aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5
SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1v
cnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOwogfQogCiBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlk
ZW50aWZpZXIpCkBAIC02MSw3ICs2MSw3IEBAIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6fk1lbW9y
eUlEQkJhY2tpbmdTdG9yZSgpID0gZGVmYXVsdDsKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvKQog
ewogICAgIGlmICghbV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUo
KSwgMCk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CiAKICAgICBpbmZvID0gKm1fZGF0
YWJhc2VJbmZvOwogICAgIHJldHVybiBJREJFcnJvciB7IH07CkBAIC03Miw3ICs3Miw3IEBAIHZv
aWQgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpzZXREYXRhYmFzZUluZm8oY29uc3QgSURCRGF0YWJh
c2VJbmZvJiBpbmZvKQogICAgIC8vIEl0IGlzIG5vdCB2YWxpZCB0byBkaXJlY3RseSBzZXQgZGF0
YWJhc2UgaW5mbyBvbiBhIGJhY2tpbmcgc3RvcmUgdGhhdCBoYXNuJ3QgYWxyZWFkeSBzZXQgaXRz
IG93biBkYXRhYmFzZSBpbmZvLgogICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CiAKLSAgICBt
X2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsK
KyAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsK
IH0KIAogSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCmluZGV4IDQ5ZGRjYTZi
ZDQwZDI5ZDQyZTM4Yjg1MTMxYzg5ZmRmZTdkNDc5MmQuLjg1OTVkYmI4ZjRhN2VlM2QxOTFlMzFm
YjYxMGIwNDk3NWI4NzQ2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIElE
QkVycm9yIE1lbW9yeUluZGV4OjpwdXRJbmRleEtleShjb25zdCBJREJLZXlEYXRhJiB2YWx1ZUtl
eSwgY29uc3QgSW5kZXhLZXkmIGluCiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUluZGV4Ojpw
cm92aXNpb25hbFB1dEluZGV4S2V5Iik7CiAKICAgICBpZiAoIW1fcmVjb3JkcykgewotICAgICAg
ICBtX3JlY29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGV4VmFsdWVTdG9yZT4obV9pbmZvLnVu
aXF1ZSgpKTsKKyAgICAgICAgbV9yZWNvcmRzID0gbWFrZVVuaXF1ZTxJbmRleFZhbHVlU3RvcmU+
KG1faW5mby51bmlxdWUoKSk7CiAgICAgICAgIG5vdGlmeUN1cnNvcnNPZkFsbFJlY29yZHNDaGFu
Z2VkKCk7CiAgICAgfQogCkBAIC0yNTksNyArMjU5LDcgQEAgTWVtb3J5SW5kZXhDdXJzb3IqIE1l
bW9yeUluZGV4OjptYXliZU9wZW5DdXJzb3IoY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKICAg
ICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUluZGV4Q3Vy
c29yPigqdGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0aGlzLCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXgg
ZWQ2ZWJhOTI3ZjFmNGY2YjljMzA2OGY2YjVkODhkZTI5OTcyNjdlYi4uNWI0NGE3Mzg3OGM5ZmRk
N2ExZTA1YTk1Yjc2NTdlYmU2MzYzNTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBA
IC0yNTksOCArMjU5LDggQEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZChN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24KIAogICAgIGlmICghbV9r
ZXlWYWx1ZVN0b3JlKSB7CiAgICAgICAgIEFTU0VSVCghbV9vcmRlcmVkS2V5cyk7Ci0gICAgICAg
IG1fa2V5VmFsdWVTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8S2V5VmFsdWVNYXA+KCk7Ci0gICAg
ICAgIG1fb3JkZXJlZEtleXMgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGFTZXQ+KCk7Cisg
ICAgICAgIG1fa2V5VmFsdWVTdG9yZSA9IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+KCk7CisgICAg
ICAgIG1fb3JkZXJlZEtleXMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxJREJL
ZXlEYXRhU2V0PigpOwogICAgIH0KIAogICAgIGF1dG8gbWFwUmVzdWx0ID0gbV9rZXlWYWx1ZVN0
b3JlLT5zZXQoa2V5RGF0YSwgdmFsdWUuZGF0YSgpKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBNZW1v
cnlPYmplY3RTdG9yZUN1cnNvciogTWVtb3J5T2JqZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcihj
b25zdCBJREJDdXJzb3JJbmZvJgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4o
KnRoaXMsIGluZm8pOwogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDRmMjA4ZTRkMDYwNGI4
NzdkZDFkNzQ4NjdiOGUzZTI4NzI3YWMwNDQuLjZlODkzZjk4NDRlNzA4ZWQxOTcyYjRhMmMxOGIx
NTlmYTcwYjU5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02MjMs
NyArNjIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwKICAgICB9CiAKICAgICAvLyBUaGlz
IGluaXRpYWwgZGF0YWJhc2UgaW5mbyBtYXRjaGVzIHRoZSBkZWZhdWx0IHZhbHVlcyB3ZSBqdXN0
IHB1dCBpbnRvIHRoZSBtZXRhZGF0YSBkYXRhYmFzZS4KLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJh
c2VOYW1lKCksIDApOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5mbygpCkBAIC02NTgs
NyArNjU4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGF1dG8gZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VWZXJzaW9uKTsKKyAgICBhdXRvIGRhdGFiYXNlSW5mbyA9
IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lv
bik7CiAKICAgICB7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsICJT
RUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMsIG1heEluZGV4SUQgRlJPTSBPYmplY3RT
dG9yZUluZm87Il9zKTsKQEAgLTgyMCw3ICs4MjAsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5m
bwogCiAgICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7CiAKLSAgICBt
X3NxbGl0ZURCID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKKyAgICBtX3Nx
bGl0ZURCID0gbWFrZVVuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKICAgICBpZiAoIW1fc3FsaXRl
REItPm9wZW4oZGJGaWxlbmFtZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3Bl
biBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwpAQCAtOTAzLDExICs5MDMsMTEgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBlc3RhYmxpc2ggdHJhbnNhY3Rpb24gaWRlbnRpZmllciB0aGF0IGFscmVh
ZHkgZXhpc3RzIl9zIH07CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rpb24+KCp0aGlzLCBpbmZvKTsKKyAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJUcmFuc2Fj
dGlvbj4oKnRoaXMsIGluZm8pOwogCiAgICAgYXV0byBlcnJvciA9IGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUtPmJlZ2luKCptX3NxbGl0ZURCKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkgJiYg
aW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7Ci0gICAg
ICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdlID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX2RhdGFiYXNlSW5mbyk7CisgICAgICAgIG1fb3Jp
Z2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdlID0gbWFrZVVuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KCptX2RhdGFiYXNlSW5mbyk7CiAKICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHNx
bCgqbV9zcWxpdGVEQiwgIlVQREFURSBJREJEYXRhYmFzZUluZm8gU0VUIHZhbHVlID0gPyB3aGVy
ZSBrZXkgPSAnRGF0YWJhc2VWZXJzaW9uJzsiX3MpOwogICAgICAgICBpZiAoc3FsLnByZXBhcmUo
KSAhPSBTUUxJVEVfT0sKQEAgLTI2MTEsNyArMjYxMSw3IEBAIFNRTGl0ZVN0YXRlbWVudCogU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQoU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpTCiAgICAgfQogCiAgICAgaWYgKG1fc3FsaXRlREIpIHsKLSAgICAgICAgbV9jYWNoZWRTdGF0
ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0
ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0YXRlbWVudCk7CisgICAgICAgIG1fY2FjaGVkU3Rh
dGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0
ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQpOwogICAgICAgICBpZiAobV9jYWNoZWRTdGF0
ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0tPnByZXBhcmUoKSAhPSBTUUxJVEVfT0sp
CiAgICAgICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwp
XSA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCBmODQwNWE3OThh
MzY4MTBkYzU3NmFmMWU3M2JjYWY1MzEwMjM3YmFmLi5jNmIzZmQ5NTNhMGQ1M2FjMTU2OGUyODQ4
Y2JjNzhhMTJmMTk1NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtNDYsNyArNDYsNyBA
QCBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoTGltaXQgPSA4OwogCiBzdGQ6OnVuaXF1ZV9w
dHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKFNRTGl0ZUlE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsK
LSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFu
c2FjdGlvbiwgaW5mbyk7CisgICAgYXV0byBjdXJzb3IgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQkN1
cnNvcj4odHJhbnNhY3Rpb24sIGluZm8pOwogCiAgICAgaWYgKCFjdXJzb3ItPmVzdGFibGlzaFN0
YXRlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU5LDcgKzU5LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0
ZShTUUxpdGVJREJUcmFuc2FjdGkKIAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4g
U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNvcihTUUxpdGVJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IHVpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNv
bnN0IHVpbnQ2NF90IGluZGV4SUQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0g
ICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNh
Y3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIHJhbmdlKTsKKyAgICBhdXRvIGN1cnNvciA9
IG1ha2VVbmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwg
aW5kZXhJRCwgcmFuZ2UpOwogCiAgICAgaWYgKCFjdXJzb3ItPmVzdGFibGlzaFN0YXRlbWVudCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5OSw3ICsxOTksNyBAQCBib29sIFNRTGl0
ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogICAg
IEFTU0VSVCghbV9jdXJyZW50VXBwZXJLZXkuaXNOdWxsKCkpOwogICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpKTsKIAotICAgIG1fc3RhdGVtZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0
aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7CisgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNR
TGl0ZVN0YXRlbWVudD4obV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJh
c2UoKSwgc3FsKTsKIAogICAgIGlmIChtX3N0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9P
SykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVu
dCAocHJlcGFyZS9pZCkgLSAnJXMnIiwgbV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24o
KS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CkBAIC00NjQsNyArNDY0LDcgQEAgU1FMaXRl
SURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0
UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2N1cnNvclR5cGUg
PT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlBbmRWYWx1ZSkKLSAgICAgICAgICAgIHJlY29y
ZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRo
cyk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1
ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVS
THMsIGJsb2JGaWxlUGF0aHMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghZGVzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEuZGF0YSgpLCBrZXlEYXRhLnNpemUoKSwgcmVjb3JkLnJlY29y
ZC5wcmltYXJ5S2V5KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJp
YWxpemUgdmFsdWUgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxlIGFkdmFuY2luZyBpbmRleCBjdXJz
b3IiKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNR
TGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogCiAgICAg
ICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewogICAgICAgICAgICAgb2JqZWN0U3RvcmVT
dGF0ZW1lbnQuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDAsIGtleURhdGEpOwotICAgICAgICAgICAg
cmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkpOworICAgICAgICAgICAgcmVj
b3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dCA9PSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0
aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0byByZXRyaWV2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20g
dGhlIG9iamVjdCBzdG9yZS4KICAgICAgICAgICAgIC8vIFNraXAgb3ZlciBpdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGE2YTNjNWZmZjMzODBjMjVlZjczNjFlNjg4YmVm
MzZjMDYxNWZjODMuLmQyMTJkZTJiNmI4OGFmZmUwYTM1YjBmZDBmZDMzZmM4NjdjZWNiZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJUcmFuc2FjdGlvbjo6YmVnaW4oU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQog
ewogICAgIEFTU0VSVCghbV9zcWxpdGVUcmFuc2FjdGlvbik7CiAKLSAgICBtX3NxbGl0ZVRyYW5z
YWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4oZGF0YWJhc2UsIG1f
aW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CisgICAgbV9zcWxp
dGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KGRhdGFiYXNlLCBt
X2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIG1fc3Fs
aXRlVHJhbnNhY3Rpb24tPmJlZ2luKCk7CiAKICAgICBpZiAobV9zcWxpdGVUcmFuc2FjdGlvbi0+
aW5Qcm9ncmVzcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggMWViYzA4MThmODll
ZjNmNzZiNDZiMjdkZTc0ZjMxY2NjM2U0NmNjZi4uYmU1OTFiOTg4NDBlZGFkNjQ4MGFmMGM0MWI3
YzhlOTJjNWYxMmE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC00MzQsNyArNDM0
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKHVpbnQ2
NF90IGRlbGV0ZWRWZXJzaW9uKQogICAgIC8vIHdlIHdvbid0IGhhdmUgYSBtX21vc3RSZWNlbnRE
ZWxldGVkRGF0YWJhc2VJbmZvLiBJbiB0aGF0IGNhc2UsIHdlJ2xsIG1hbnVmYWN0dXJlIG9uZSB1
c2luZyB0aGUKICAgICAvLyBwYXNzZWQgaW4gZGVsZXRlZFZlcnNpb24gYXJndW1lbnQuCiAgICAg
aWYgKCFtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvKQotICAgICAgICBtX21vc3RSZWNl
bnREZWxldGVkRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgZGVsZXRlZFZlcnNpb24pOworICAgICAgICBt
X21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgZGVsZXRlZFZlcnNpb24pOwogCiAgICAg
aWYgKG1fY3VycmVudE9wZW5EQlJlcXVlc3QpIHsKICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVx
dWVzdC0+bm90aWZ5RGlkRGVsZXRlRGF0YWJhc2UoKm1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFz
ZUluZm8pOwpAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9w
ZW5CYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvLCBjb25zdCBJCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlIik7CiAgICAgCi0gICAgbV9kYXRhYmFz
ZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgbV9k
YXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAgbV9i
YWNraW5nU3RvcmVPcGVuRXJyb3IgPSBlcnJvcjsKIAogICAgIEFTU0VSVChtX2lzT3BlbmluZ0Jh
Y2tpbmdTdG9yZSk7CkBAIC0xNzQ5LDcgKzE3NDksNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
CiAgICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9PSB0cmFuc2FjdGlv
bik7CiAgICAgICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25uZWN0aW9uIHx8
ICZtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+ZGF0YWJhc2VDb25uZWN0aW9uKCkgPT0gbV92
ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25uZWN0aW9uKTsKICAgICAgICAgQVNTRVJUKG1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKLSAgICAgICAgbV9k
YXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKKyAgICAgICAgbV9k
YXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fdmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKICAgICB9CiAKICAgICBJREJF
cnJvciByZXN1bHQgPSB0cmFuc2FjdGlvbi0+c3RhdGUoKSA9PSBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRlZCA/IHRyYW5zYWN0aW9uLT5yZXN1bHQoKSA6IGVycm9y
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmluZGV4IGFm
OTJlYmM2MzY4ODVjNjljMjVlNTAyOTljZTZjNGFjZWFhNjU5YzguLmU0ZDY2OWRhOGFjNjI5MTZm
N2JjZTAzMjgwOWE1NTllODUzY2M4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNv
bm4KICAgICBBU1NFUlQoZGF0YWJhc2UpOwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb25JbmZvLm1v
ZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpCi0gICAgICAgIG1fb3Jp
Z2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0
YWJhc2UtPmluZm8oKSk7CisgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5p
cXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmluZm8oKSk7CiAKICAgICBhdXRvJiBzZXJ2
ZXIgPSBkYXRhYmFzZS0+c2VydmVyKCk7CiAgICAgbV9zZXJ2ZXIgPSBtYWtlV2Vha1B0cihzZXJ2
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlcXVlc3REYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKaW5kZXggYjEwZDg0MDk5YjI1MjhlNmY3M2MyOGIxNTA0
YThhOTMyNGQwYjIxYS4uMjE2NDE2YWZhMTFjZjI1NWQzNmRlZmIzZWZmMzZlZmFmMTk1NzEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVxdWVzdERhdGEuY3BwCkBAIC00MCw3ICs0MCw3IEBAIElEQlJlcXVlc3REYXRhOjpJ
REJSZXF1ZXN0RGF0YSgpCiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByb3h5LCBjb25zdCBJREJP
cGVuREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIDogbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cihjb25uZWN0aW9uUHJveHkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1f
cmVxdWVzdElkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KGNvbm5lY3Rpb25Qcm94eSwgcmVxdWVzdCkpCisgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG1h
a2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3Qp
KQogICAgICwgbV9kYXRhYmFzZUlkZW50aWZpZXIocmVxdWVzdC5kYXRhYmFzZUlkZW50aWZpZXIo
KSkKICAgICAsIG1fcmVxdWVzdGVkVmVyc2lvbihyZXF1ZXN0LnZlcnNpb24oKSkKICAgICAsIG1f
cmVxdWVzdFR5cGUocmVxdWVzdC5yZXF1ZXN0VHlwZSgpKQpAQCAtNDksOCArNDksOCBAQCBJREJS
ZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkmIGNvbm5lY3Rpb25QcgogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoSURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgIDogbV9zZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcihvcGVyYXRpb24udHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLmNv
bm5lY3Rpb25Qcm94eSgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX3Jl
cXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihv
cGVyYXRpb24uaWRlbnRpZmllcigpKSkKLSAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKHN0
ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rp
b25JZGVudGlmaWVyKCkpKQorICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCisgICAgLCBtX3Ry
YW5zYWN0aW9uSWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4ob3Bl
cmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKICAgICAsIG1fb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKG9wZXJhdGlvbi5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSkKICAgICAsIG1faW5kZXhJ
ZGVudGlmaWVyKG9wZXJhdGlvbi5pbmRleElkZW50aWZpZXIoKSkKIHsKQEAgLTU4LDcgKzU4LDcg
QEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSBvcGVyYXRp
b24uaW5kZXhSZWNvcmRUeXBlKCk7CiAKICAgICBpZiAob3BlcmF0aW9uLmN1cnNvcklkZW50aWZp
ZXIoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KCpvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKTsKKyAgICAg
ICAgbV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KCpvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKTsKIH0KIAogSURCUmVxdWVzdERhdGE6OklE
QlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKQEAgLTcxLDExICs3MSwx
MSBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEm
IG90aGVyKQogICAgICwgbV9yZXF1ZXN0VHlwZShvdGhlci5tX3JlcXVlc3RUeXBlKQogewogICAg
IGlmIChvdGhlci5tX3JlcXVlc3RJZGVudGlmaWVyKQotICAgICAgICBtX3JlcXVlc3RJZGVudGlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3Jl
cXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CiAg
ICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKQotICAgICAgICBtX3RyYW5zYWN0
aW9uSWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigq
b3RoZXIubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBtX3RyYW5zYWN0aW9uSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV90cmFu
c2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX2N1cnNvcklkZW50aWZpZXIpCi0g
ICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jdXJzb3JJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1
cnNvcklkZW50aWZpZXIpOwogfQogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29u
c3QgSURCUmVxdWVzdERhdGEmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTEwMiwxMSArMTAy
LDExIEBAIHZvaWQgSURCUmVxdWVzdERhdGE6Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXF1ZXN0
RGF0YSYgc291cmNlLCBJREJSZXF1ZXN0RGF0YSYKICAgICAgICAgZGVzdGluYXRpb24ubV9kYXRh
YmFzZUlkZW50aWZpZXIgPSBzb3VyY2UubV9kYXRhYmFzZUlkZW50aWZpZXItPmlzb2xhdGVkQ29w
eSgpOwogCiAgICAgaWYgKHNvdXJjZS5tX3JlcXVlc3RJZGVudGlmaWVyKQotICAgICAgICBkZXN0
aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGRlc3Rp
bmF0aW9uLm1fcmVxdWVzdElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRp
Zmllcj4oKnNvdXJjZS5tX3JlcXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAoc291cmNlLm1fdHJh
bnNhY3Rpb25JZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRl
bnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNl
Lm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90cmFuc2Fj
dGlvbklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJj
ZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKHNvdXJjZS5tX2N1cnNvcklkZW50
aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fY3Vyc29ySWRlbnRpZmll
cik7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAK
IHVpbnQ2NF90IElEQlJlcXVlc3REYXRhOjpzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4IDQ1Y2ZmYWVhNjAzYTUzYjU5OTA0YzhiMTRiN2ExZGVm
N2QyNWYzMTAuLjQwOGI0ZTQ2Mjg3MzM3YjlhYzM0NGFmYmY0NjkxNTg2OGU4MGYzNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXF1ZXN0RGF0YS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
IChoYXNPYmplY3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRp
Zmllcj4gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9
IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBy
ZXF1ZXN0Lm1fcmVxdWVzdElkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xNjUsNyAr
MTY1LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fdHJhbnNhY3Rpb25JZGVu
dGlmaWVyID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgSURCUmVx
dWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlm
aWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmVxdWVzdC5tX2N1cnNvcklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVzdWx0RGF0YS5jcHAKaW5kZXggYTg5NDU0ZTZlNjNmNmViN2NiNTAzOGI5YzkzMmZhMjE4
NjMzZWRjNi4uNGNiZDVkOWJkZjBhODUyM2JmN2Y1MmFjNWJjNWNiNGI3ZWQxMDQ3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXN1bHREYXRhLmNwcApAQCAtNTcsMTUgKzU3LDE1IEBAIElEQlJlc3VsdERhdGE6OklEQlJlc3Vs
dERhdGEoY29uc3QgSURCUmVzdWx0RGF0YSYgb3RoZXIpCiAgICAgLCBtX3Jlc3VsdEludGVnZXIo
b3RoZXIubV9yZXN1bHRJbnRlZ2VyKQogewogICAgIGlmIChvdGhlci5tX2RhdGFiYXNlSW5mbykK
LSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oKm90aGVyLm1fZGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm90aGVyLm1fZGF0YWJhc2VJbmZvKTsKICAgICBpZiAo
b3RoZXIubV90cmFuc2FjdGlvbkluZm8pCi0gICAgICAgIG1fdHJhbnNhY3Rpb25JbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpvdGhlci5tX3RyYW5zYWN0aW9uSW5m
byk7CisgICAgICAgIG1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCpvdGhlci5tX3RyYW5zYWN0aW9uSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fcmVzdWx0
S2V5KQotICAgICAgICBtX3Jlc3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4o
Km90aGVyLm1fcmVzdWx0S2V5KTsKKyAgICAgICAgbV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElE
QktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtleSk7CiAgICAgaWYgKG90aGVyLm1fZ2V0UmVzdWx0
KQotICAgICAgICBtX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigq
b3RoZXIubV9nZXRSZXN1bHQpOworICAgICAgICBtX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURC
R2V0UmVzdWx0Pigqb3RoZXIubV9nZXRSZXN1bHQpOwogICAgIGlmIChvdGhlci5tX2dldEFsbFJl
c3VsdCkKLSAgICAgICAgbV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFs
bFJlc3VsdD4oKm90aGVyLm1fZ2V0QWxsUmVzdWx0KTsKKyAgICAgICAgbV9nZXRBbGxSZXN1bHQg
PSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKm90aGVyLm1fZ2V0QWxsUmVzdWx0KTsKIH0K
IAogSURCUmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiB0aGF0
LCBJc29sYXRlZENvcHlUYWcpCkBAIC04NywxNSArODcsMTUgQEAgdm9pZCBJREJSZXN1bHREYXRh
Ojppc29sYXRlZENvcHkoY29uc3QgSURCUmVzdWx0RGF0YSYgc291cmNlLCBJREJSZXN1bHREYXRh
JiBkZXMKICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEludGVnZXIgPSBzb3VyY2UubV9yZXN1bHRJ
bnRlZ2VyOwogCiAgICAgaWYgKHNvdXJjZS5tX2RhdGFiYXNlSW5mbykKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
KnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwor
ICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqc291cmNlLm1fZGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVk
Q29weSk7CiAgICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSW5mbykKLSAgICAgICAgZGVzdGlu
YXRpb24ubV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9u
SW5mbz4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29s
YXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VV
bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvLCBJREJU
cmFuc2FjdGlvbkluZm86Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX3Jlc3VsdEtl
eSkKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QktleURhdGE+KCpzb3VyY2UubV9yZXN1bHRLZXksIElEQktleURhdGE6Oklzb2xhdGVkQ29weSk7
CisgICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRh
Pigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJLZXlEYXRhOjpJc29sYXRlZENvcHkpOwogICAgIGlm
IChzb3VyY2UubV9nZXRSZXN1bHQpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2UubV9nZXRSZXN1bHQsIElEQkdl
dFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9nZXRSZXN1bHQg
PSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0UmVz
dWx0OjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV9nZXRBbGxSZXN1bHQpCi0gICAg
ICAgIGRlc3RpbmF0aW9uLm1fZ2V0QWxsUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRB
bGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxSZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0
ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVl
PElEQkdldEFsbFJlc3VsdD4oKnNvdXJjZS5tX2dldEFsbFJlc3VsdCwgSURCR2V0QWxsUmVzdWx0
OjpJc29sYXRlZENvcHkpOwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmVycm9y
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElE
QkVycm9yJiBlcnJvcikKQEAgLTExMSw3ICsxMTEsNyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3Vs
dERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZQogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICBy
ZXN1bHQubV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlU3VjY2VzczsKICAgICBy
ZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlm
aWVyKCk7Ci0gICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKKyAgICByZXN1bHQu
bV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlvbi5k
YXRhYmFzZSgpLT5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyMSwxNSAr
MTIxLDE1IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFk
ZU5lZWRlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgSURCUmVzdWx0RGF0YSByZXN1
bHQgeyByZXF1ZXN0SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRU
eXBlOjpPcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5pZGVu
dGlmaWVyKCk7Ci0gICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNl
KCktPmluZm8oKSk7Ci0gICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KHRyYW5zYWN0aW9uLmluZm8oKSk7CisgICAgcmVzdWx0
Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KHRyYW5zYWN0aW9u
LmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCktPmluZm8oKSk7CisgICAgcmVzdWx0Lm1f
dHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KHRyYW5zYWN0
aW9uLmluZm8oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJS
ZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogewog
ICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHtJREJSZXN1bHRUeXBlOjpEZWxldGVEYXRhYmFzZVN1
Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIHJlc3VsdC5tX2Rh
dGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0xNzEsMjEgKzE3MSwyMSBAQCBJREJSZXN1bHREYXRhIElEQlJl
c3VsdERhdGE6OnJlbmFtZUluZGV4U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcQogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpwdXRPckFkZFN1Y2Nlc3MoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0
YSYgcmVzdWx0S2V5KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlw
ZTo6UHV0T3JBZGRTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX3Jl
c3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKKyAgICBy
ZXN1bHQubV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KHJlc3VsdEtleSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRS
ZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEg
cmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6R2V0UmVjb3JkU3VjY2VzcywgcmVxdWVzdElkZW50aWZp
ZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJl
c3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElE
QkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1
bHREYXRhIElEQlJlc3VsdERhdGE6OmdldEFsbFJlY29yZHNTdWNjZXNzKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlc3VsdCYg
Z2V0QWxsUmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlw
ZTo6R2V0QWxsUmVjb3Jkc1N1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0
Lm1fZ2V0QWxsUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KGdldEFs
bFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRB
bGxSZXN1bHQ+KGdldEFsbFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjA0
LDE0ICsyMDQsMTQgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpkZWxldGVSZWNvcmRT
dWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmUKIElEQlJlc3VsdERhdGEgSURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAg
ICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2Vz
cywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1
bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNj
ZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsg
SURCUmVzdWx0VHlwZTo6SXRlcmF0ZUN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07
Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+
KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRS
ZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgK
aW5kZXggNzE3YjNlMmRlNTNiMzUzZmViNmRkNzU1MDBhMGU1ZTY4Yzk0N2EzZi4uNjIwNjJhMWUy
OTVmN2I1OTgxNTg5NWI1N2JlYzAwOGU1YjE4NzZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCkBAIC0xODQs
NyArMTg0LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0
YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhh
c09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZv
ID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNv
ZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKKyAgICAgICAgYXV0
byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IFdURk1vdmUob2JqZWN0KTsK
QEAgLTIwMiw3ICsyMDIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJS
ZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJLZXlEYXRhPigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCS2V5
RGF0YT4oKTsKICAgICAgICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CiAgICAgICAg
IGRlY29kZXIgPj4gb3B0aW9uYWw7CiAgICAgICAgIGlmICghb3B0aW9uYWwpCkBAIC0yMTQsNyAr
MjE0LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4g
SURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09i
amVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVz
dWx0PigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gV1RGTW92ZShv
YmplY3QpOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgq
b2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3Vs
dC5tX2dldEFsbFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5m
by5jcHAKaW5kZXggOTgzYzFjMTFjOTliNDViNmNlNTQ0ZGZjYWMwMzdlNGM3MzcyOTVjMy4uNGZi
OTk5MTlmNjdkNWY3YzlhYmMxMDllMmUzMDAwY2NlNGM0NDA5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0
aW9uSW5mby5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvIElEQlRyYW5z
YWN0aW9uSW5mbzo6dmVyc2lvbkNoYW5nZShjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3QKICAg
ICBJREJUcmFuc2FjdGlvbkluZm8gcmVzdWx0KChJREJSZXNvdXJjZUlkZW50aWZpZXIoY29ubmVj
dGlvbikpKTsKICAgICByZXN1bHQubV9tb2RlID0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9u
Y2hhbmdlOwogICAgIHJlc3VsdC5tX25ld1ZlcnNpb24gPSBuZXdWZXJzaW9uOwotICAgIHJlc3Vs
dC5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KG9yaWdpbmFsRGF0YWJhc2VJbmZvKTsKKyAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNl
SW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNjcsNyArNjcsNyBAQCBJREJUcmFuc2FjdGlv
bkluZm86OklEQlRyYW5zYWN0aW9uSW5mbyhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8p
CiAgICAgLCBtX29iamVjdFN0b3JlcyhpbmZvLm1fb2JqZWN0U3RvcmVzKQogewogICAgIGlmIChp
bmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pCi0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKmluZm8ubV9vcmlnaW5hbERh
dGFiYXNlSW5mbyk7CisgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oKmluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyk7CiB9CiAKIElE
QlRyYW5zYWN0aW9uSW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9u
SW5mbyYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uSW5mbzo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgc291
cmNlLCBJREJUcmFucwogICAgICAgICBkZXN0aW5hdGlvbi5tX29iamVjdFN0b3Jlcy51bmNoZWNr
ZWRBcHBlbmQob2JqZWN0U3RvcmUuaXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgaWYgKHNvdXJjZS5t
X29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX29yaWdpbmFsRGF0
YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9v
cmlnaW5hbERhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOworICAg
ICAgICBkZXN0aW5hdGlvbi5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KCpzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJ
bmZvOjpJc29sYXRlZENvcHkpOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0
aW9uSW5mby5oCmluZGV4IDkzMGQ4MDIzNjE4MjMyYWJmNmMwODFkZjIxMjk1OGZmNjJhNTU1ZWQu
LjdiOTQ3N2U4ZWM1NTRjOTEzZDJhNDhiZTU1OGUxNjMzZDkzZmNlOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNh
Y3Rpb25JbmZvLmgKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIElEQlRyYW5zYWN0aW9uSW5mbzo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4g
b2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggODdiMWFkY2Q5NjY2MjA2ZWM5NzE2NjAzNjJiNDBlNWFk
N2Q4MDFkMS4uYzk2ODk0NDRmZDIyNDAyY2VkMjExM2IzYmZhMGI5YTUyNmM2NzNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPEluUHJvY2Vzc0lE
QlNlcnZlcj4gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb24KIFN0b3JhZ2VRdW90YU1hbmFnZXIqIEluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFN
YW5hZ2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVybiBtX3F1b3Rh
TWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVv
dGEoKSwgW10odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qg
c3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEo
KSwgW10odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3Bh
Y2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgewogICAgICAgICAgICAgY2FsbGJhY2socXVvdGEg
KyBjdXJyZW50U3BhY2UgKyBzcGFjZUluY3JlYXNlKTsKICAgICAgICAgfSk7CiAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBmODcyNTc0ZTg1YzI0MDg3NzJiMWQxMWEyZThiY2I2ZGQ2MGRhMjk3Li5h
MzFiYWRiNTRhYzk4MWUwZTNiYWRhZmUyMDk4NzgyOWQzZjc0MDM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVz
L05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBOYXZpZ2F0
b3JNZWRpYUNhcGFiaWxpdGllcyYgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM6OmZyb20oTmF2
aWdhdG9yJiBuYXZpZ2F0bwogewogICAgIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzKiBzdXBw
bGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMqPihTdXBwbGVt
ZW50PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzPigpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzPigpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggNTBkMGJiMGIxZWQ1M2E0
MzI0NThkOWZiNzEzNTcwYWUwZWNhMGQwNi4uYjk3NDM0YzRlNjI0NWQ3M2NjZjJkNjI1YTBhMWIw
M2UxMjkwY2JkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJgogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQogewogICAgIGlmICghbV9w
aWNrZXJPdmVycmlkZSkKLSAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IHN0ZDo6bWFrZV91bmlx
dWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKKyAgICAgICAgbV9waWNr
ZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0
aGlzKTsKIAogICAgIHJldHVybiAqbV9waWNrZXJPdmVycmlkZS5nZXQoKTsKIH0KQEAgLTE0NSw3
ICsxNDUsNyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYQogCiAgICAgTE9HKE1lZGlhLCAiV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoJXAgKyAl
bGx1KSIsICZjbGllbnQsIGNvbnRleHRJZCk7CiAKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOworICAgIG1f
Y2xpZW50U3RhdGUuYXBwZW5kKG1ha2VVbmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4
dElkKSk7CiAKICAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3Bs
YXliYWNrVGFyZ2V0KQogICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1
cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGQ0
MTdhMTIxNjkxMTEyMTVkNTQyMjkxZTAzYzU5ZDVkNmU3ZWIzZjQuLjdjYmM2YTEzMzUxZTBkMzJj
ZTI1NWE5YmFkY2I5NzQ0ZGFmNGQ0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xNzgsOSArMTc4LDkgQEAgTWVkaWFU
aW1lIE1lZGlhU291cmNlOjpjdXJyZW50VGltZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogewogICAgIGlm
IChtX2J1ZmZlcmVkICYmIG1fYWN0aXZlU291cmNlQnVmZmVycy0+bGVuZ3RoKCkgJiYgc3RkOjph
bGxfb2YobV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5iZWdpbigpLCBtX2FjdGl2ZVNvdXJjZUJ1ZmZl
cnMtPmVuZCgpLCBbXShhdXRvJiBidWZmZXIpIHsgcmV0dXJuICFidWZmZXItPmlzQnVmZmVyZWRE
aXJ0eSgpOyB9KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCi0gICAgbV9idWZmZXJlZCA9IHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIG1fYnVmZmVyZWQgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6ICpt
X2FjdGl2ZVNvdXJjZUJ1ZmZlcnMpCiAgICAgICAgIHNvdXJjZUJ1ZmZlci0+c2V0QnVmZmVyZWRE
aXJ0eShmYWxzZSk7CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogCiAgICAgLy8gMS4g
SWYgYWN0aXZlU291cmNlQnVmZmVycy5sZW5ndGggZXF1YWxzIDAgdGhlbiByZXR1cm4gYW4gZW1w
dHkgVGltZVJhbmdlcyBvYmplY3QgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmIChhY3Rp
dmVSYW5nZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyAyLiBMZXQgYWN0aXZl
IHJhbmdlcyBiZSB0aGUgcmFuZ2VzIHJldHVybmVkIGJ5IGJ1ZmZlcmVkIGZvciBlYWNoIFNvdXJj
ZUJ1ZmZlciBvYmplY3QgaW4gYWN0aXZlU291cmNlQnVmZmVycy4KICAgICAvLyAzLiBMZXQgaGln
aGVzdCBlbmQgdGltZSBiZSB0aGUgbGFyZ2VzdCByYW5nZSBlbmQgdGltZSBpbiB0aGUgYWN0aXZl
IHJhbmdlcy4KQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1l
UmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogCiAgICAgLy8gUmV0dXJuIGFu
IGVtcHR5IHJhbmdlIGlmIGFsbCByYW5nZXMgYXJlIGVtcHR5LgogICAgIGlmICghaGlnaGVzdEVu
ZFRpbWUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KCptX2J1ZmZlcmVkKTsKIAogICAgIC8vIDQuIExldCBpbnRlcnNlY3Rpb24gcmFuZ2Vz
IGVxdWFsIGEgVGltZVJhbmdlIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdlIGZyb20g
MCB0byBoaWdoZXN0IGVuZCB0aW1lLgogICAgIG1fYnVmZmVyZWQtPmFkZChNZWRpYVRpbWU6Onpl
cm9UaW1lKCksIGhpZ2hlc3RFbmRUaW1lKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAog
ICAgICAgICBtX2J1ZmZlcmVkLT5pbnRlcnNlY3RXaXRoKHNvdXJjZVJhbmdlcyk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZm
ZXJlZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZm
ZXJlZCk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1l
JiB0aW1lKQpAQCAtMzQ0LDcgKzM0NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNl
OjpzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCiAKICAgICAv
LyBTZXQgbGl2ZSBzZWVrYWJsZSByYW5nZSB0byBiZSBhIG5ldyBub3JtYWxpemVkIFRpbWVSYW5n
ZXMgb2JqZWN0IGNvbnRhaW5pbmcgYSBzaW5nbGUgcmFuZ2UKICAgICAvLyB3aG9zZSBzdGFydCBw
b3NpdGlvbiBpcyBzdGFydCBhbmQgZW5kIHBvc2l0aW9uIGlzIGVuZC4KLSAgICBtX2xpdmVTZWVr
YWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7
CisgICAgbV9saXZlU2Vla2FibGUgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91
YmxlKGVuZCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApp
bmRleCBlNDE4Mjc4MzhkNjJjYTM4ZmMzYmYzYmU3OGY4ZjRhYThhZTUyNTk2Li43YjM1OGY1ZTBk
ZTQyZmIyMjY4ZDM2OTAzZTU4ZGI1ZWI3OGU5MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3Bw
CkBAIC01MSw3ICs1MSw3IEBAIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogTmF2aWdhdG9yTWVkaWFE
ZXZpY2VzOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvck1lZGlh
RGV2aWNlcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlhRGV2aWNlcyo+
KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkp
KTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93
KCkpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvck1l
ZGlhRGV2aWNlcz4obmF2aWdhdG9yLT53aW5kb3coKSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBu
ZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVt
ZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVy
LmNwcAppbmRleCA4ZDdlNjNjYzYwNmQ2ZGExOWZiZGIxMmRlNTRmYjg1NWZkZjYyYzk5Li4xNGRm
MTE2MWRhZTY4Y2M0NmNiNDllYWFlMjFmNWVmOTg5ZTJhY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgVXNlck1lZGlhQ29udHJvbGxlcjo6flVzZXJNZWRpYUNvbnRy
b2xsZXIoKQogCiB2b2lkIHByb3ZpZGVVc2VyTWVkaWFUbyhQYWdlKiBwYWdlLCBVc2VyTWVkaWFD
bGllbnQqIGNsaWVudCkKIHsKLSAgICBVc2VyTWVkaWFDb250cm9sbGVyOjpwcm92aWRlVG8ocGFn
ZSwgVXNlck1lZGlhQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1
ZTxVc2VyTWVkaWFDb250cm9sbGVyPihjbGllbnQpKTsKKyAgICBVc2VyTWVkaWFDb250cm9sbGVy
Ojpwcm92aWRlVG8ocGFnZSwgVXNlck1lZGlhQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwg
bWFrZVVuaXF1ZTxVc2VyTWVkaWFDb250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIGlzU2VjdXJlKERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGFh
YTQwMDAyMDczNjVmZmNiZTUyODEyOGUyOGNlMDJmNmM2MDdjZGQuLmM5ODViYzE5YTMxZDAxMTQ1
NjVhYmFiYTVmMDYwZWU1MGRhNjExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCBSZWY8UlRDRGF0YUNo
YW5uZWxFdmVudD4gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjaGFubmVsRXZlbnQoU2Ny
aXB0RXhlY3V0aQogICAgIGluaXQubmVnb3RpYXRlZCA9IGRhdGFDaGFubmVsLT5uZWdvdGlhdGVk
KCk7CiAgICAgaW5pdC5pZCA9IGRhdGFDaGFubmVsLT5pZCgpOwogCi0gICAgYXV0byBoYW5kbGVy
ID0gIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3Zl
KGRhdGFDaGFubmVsKSk7CisgICAgYXV0byBoYW5kbGVyID0gIG1ha2VVbmlxdWU8TGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGRhdGFDaGFubmVsKSk7CiAgICAgYXV0byBjaGFu
bmVsID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKGhhbmRsZXIpLCBm
cm9tU3RkU3RyaW5nKGxhYmVsKSwgV1RGTW92ZShpbml0KSk7CiAKICAgICByZXR1cm4gUlRDRGF0
YUNoYW5uZWxFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhY2hhbm5lbEV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUoY2hhbm5l
bCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBk
ZWYxZjkxZWVlOWVkNmVjNzhkMTNjNjllYzQzNDhmMGFhNjhkMzY3Li5kMWE3NGI4NTcxYmVlN2Vl
NWU5YzMxNjJlY2EyZjRkNmZmNDFlNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6YWRkUmVtb3RlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVj
ZWl2CiAgICAgfQogICAgIH0KIAotICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkp
OworICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOwogICAgIGF1dG8mIHRyYWNrID0gcmVj
ZWl2ZXItPnRyYWNrKCk7CiAgICAgYWRkUGVuZGluZ1RyYWNrRXZlbnQocmVjZWl2ZXIucmVsZWFz
ZU5vbk51bGwoKSwgdHJhY2ssIHJ0Y1N0cmVhbXMsIG51bGxwdHIpOwogfQpAQCAtNDc4LDcgKzQ3
OCw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygp
CiAgICAgICAgIGlmICghc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVy
KSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgIH0KIH0KIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRw
VHJhbnNjCiAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG5l
d1RyYW5zY2VpdmVyID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2
ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1v
dmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8m
IG5ld1RyYW5zY2VpdmVyID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNj
ZWl2ZXIobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUo
cnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgYWRkUGVu
ZGluZ1RyYWNrRXZlbnQobWFrZVJlZihuZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpKSwgbmV3VHJh
bnNjZWl2ZXIucmVjZWl2ZXIoKS50cmFjaygpLCBydGNSZWNlaXZlci0+c3RyZWFtcygpLCBtYWtl
UmVmKG5ld1RyYW5zY2VpdmVyKSk7CiB9CkBAIC01MzQsNyArNTM0LDcgQEAgT3B0aW9uYWw8TGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6QmFja2VuZHM+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNy
ZWF0ZVRyYW5zY2UKICAgICBpZiAoIXJlc3VsdC5vaygpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCi0gICAgYXV0byB0cmFuc2NlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92ZVZhbHVlKCkpOworICAgIGF1dG8g
dHJhbnNjZWl2ZXIgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4o
cmVzdWx0Lk1vdmVWYWx1ZSgpKTsKICAgICByZXR1cm4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
QmFja2VuZHMgeyB0cmFuc2NlaXZlci0+Y3JlYXRlU2VuZGVyQmFja2VuZChtX3BlZXJDb25uZWN0
aW9uQmFja2VuZCwgV1RGTW92ZShzb3VyY2UpKSwgdHJhbnNjZWl2ZXItPmNyZWF0ZVJlY2VpdmVy
QmFja2VuZCgpLCBXVEZNb3ZlKHRyYW5zY2VpdmVyKSB9OwogfQogCkBAIC01ODUsNyArNTg1LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4gTGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6dHJhbnNjZWkKIHsKICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVy
IDogbV9iYWNrZW5kLT5HZXRUcmFuc2NlaXZlcnMoKSkgewogICAgICAgICBpZiAodHJhbnNjZWl2
ZXItPnNlbmRlcigpLmdldCgpID09IGJhY2tlbmQucnRjU2VuZGVyKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2Nl
aXZlcikpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2NlaXZlcklu
dGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBA
IC02NTQsNyArNjU0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4g
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlRGF0YUNoYW5uZWwKIHsKICAgICBhdXRvIGlu
aXQgPSBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmZyb21SVENEYXRhQ2hhbm5lbEluaXQo
b3B0aW9ucyk7CiAgICAgYXV0byBjaGFubmVsID0gbV9iYWNrZW5kLT5DcmVhdGVEYXRhQ2hhbm5l
bChsYWJlbC51dGY4KCkuZGF0YSgpLCAmaW5pdCk7Ci0gICAgcmV0dXJuIGNoYW5uZWwgPyBzdGQ6
Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFubmVs
KSkgOiBudWxscHRyOworICAgIHJldHVybiBjaGFubmVsID8gbWFrZVVuaXF1ZTxMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKIH0KIAogdm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkRhdGFDaGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPiBkYXRhQ2hhbm5lbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIw
N2YxNWU2NDU3YjlkZmNhYzFjMzM5ZWEzOWZlYTFkNzc4NTlkOGIuLmZjOTFjY2QwYmJkMWZkYmJh
NzY0MmU3MDRmMzdmZTg1Y2M3MmZkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gY3JlYXRlTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZQogCiAgICAgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5zZXRFbmFi
bGVXZWJSVENFbmNyeXB0aW9uKHBhZ2UtPnNldHRpbmdzKCkud2ViUlRDRW5jcnlwdGlvbkVuYWJs
ZWQoKSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ+KHBlZXJDb25uZWN0aW9uLCBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+KHBl
ZXJDb25uZWN0aW9uLCBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpKTsKIH0KIAogQ3JlYXRlUGVl
ckNvbm5lY3Rpb25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRl
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOwpAQCAtMzExLDcgKzMxMSw3IEBAIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJl
Y2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0
cik7CiAKLSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tl
bmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRy
KTsKICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENS
dHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgInZpZGVvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFj
a2VuZCkpLCByZWNlaXZlci5jb3B5UmVmKCksIG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5k
aXNhYmxlU2VuZGluZ0RpcmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNj
ZWl2ZXIoV1RGTW92ZSh0cmFuc2NlaXZlcikpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6QXVkaW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2Vp
dmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0cik7
CiAKLSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsK
ICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBT
ZW5kZXI6OmNyZWF0ZSgqdGhpcywgImF1ZGlvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFja2Vu
ZCkpLCByZWNlaXZlci5jb3B5UmVmKCksIG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNh
YmxlU2VuZGluZ0RpcmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2
ZXIoV1RGTW92ZSh0cmFuc2NlaXZlcikpOwpAQCAtNDAwLDcgKzQwMCw3IEBAIHN0YXRpYyBpbmxp
bmUgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gZmluZEV4aXN0aW5nU2VuZGVyKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8UlRDUnRwCiBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgVmVj
dG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcykKIHsKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkgewot
ICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNr
ZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0
cik7CiAgICAgICAgIGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soKnNlbmRlckJhY2tlbmQsIHRy
YWNrLCBtZWRpYVN0cmVhbUlkcykpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiVW5hYmxlIHRvIGFkZCB0cmFjayJfcyB9OwogCkBAIC00MzgsNyArNDM4LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6YWRkVHJhY2soTWVkaWFTdHIKICAgICAgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQg
PSB0cmFjay5raW5kKCk7CiAgICAgICAgIFN0cmluZyB0cmFja0lkID0gY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpOwogCi0gICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgICAg
ICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5k
ZXI6OmNyZWF0ZSgqdGhpcywgbWFrZVJlZih0cmFjayksIFZlY3RvcjxTdHJpbmc+IHsgbWVkaWFT
dHJlYW1JZHMgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgICAgIGF1dG8gcmVjZWl2
ZXIgPSBjcmVhdGVSZWNlaXZlcih0cmFja0tpbmQsIHRyYWNrSWQpOwogICAgICAgICBhdXRvIHRy
YW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciks
IFdURk1vdmUocmVjZWl2ZXIpLCBudWxscHRyKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBFeGNlcHRp
b25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdgogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRk
VW5pZmllZFBsYW5UcmFuc2NlaXZlcihTdHJpbmcgeyB0cmFja0tpbmQgfSwgaW5pdCk7CiAKLSAg
ICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtl
VW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBh
dXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBTdHJpbmcodHJhY2tL
aW5kKSwgVmVjdG9yPFN0cmluZz4oKSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgcmV0
dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoV1RGTW92ZShuZXdTZW5kZXIpLCBpbml0LCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIHRyYWNrS2luZCk7CiB9CkBAIC00ODIsNyArNDgyLDcg
QEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGluaXQpOwog
Ci0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0g
bWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAg
ICAgYXV0byYgYmFja2VuZCA9ICpzZW5kZXJCYWNrZW5kOwogICAgIGF1dG8gc2VuZGVyID0gUlRD
UnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIHRyYWNrLmNvcHlSZWYoKSwgVmVjdG9yPFN0cmluZz4o
KSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFj
ayhiYWNrZW5kLCB0cmFjaywgVmVjdG9yPFN0cmluZz4geyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKaW5kZXggNjg1MGU2YTg1ZTkwMjRiYjEx
NDViNmI5NDIyOWMwZjYxNDJkZjdhYS4uNmFlZWExMzM4OTJkMjA2M2YwMzUzOWI4ZWVjNGRiOWJj
ZTY0ZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6
OnNldFBhcmFtZXRlcnMoY29uc3QgUlRDUnRwU2VuZFBhcmFtZXRlcnMmIHBhcmFtZQogCiBzdGQ6
OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ6OmNyZWF0ZURUTUZCYWNrZW5kKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIoKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRj
U2VuZGVyLT5HZXREdG1mU2VuZGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCBlYjg3MWViN2RiMDM4ODRmNGNjN2UwYWRlZjY4NzgyZTFjMDk3MmQ3Li41YzBkN2U5
NWUyZmQxMmUzZjg0ZjE3Y2ZiZWI2ZDg2N2E1MWYyZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTM1LDEyICszNSwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBS
ZWNlaXZlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlUmVj
ZWl2ZXJCYWNrZW5kKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENS
dHBSZWNlaXZlckJhY2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFuc2Nl
aXZlci0+cmVjZWl2ZXIoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVNlbmRlckJh
Y2tlbmQoTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBiYWNrZW5kLCBMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjpTb3VyY2UmJiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oYmFja2VuZCwgbV9ydGNUcmFuc2Nl
aXZlci0+c2VuZGVyKCksIFdURk1vdmUoc291cmNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oYmFja2VuZCwgbV9ydGNUcmFuc2NlaXZlci0+c2Vu
ZGVyKCksIFdURk1vdmUoc291cmNlKSk7CiB9CiAKIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9u
IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6ZGlyZWN0aW9uKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5j
cHAKaW5kZXggMGMzMjhmYWU0NDIzNTk5MjUzMzA3MmM4NWQ2YjMyZmRjNmMxMzgzOC4uMGViYWZm
ODlmZmJjNTAwM2UyNDYxYmFkZWU1MjAzOTExNzFjYmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb24KICAgICAsIG1fYm9keShvcHRpb25zLmJv
ZHkpCiAgICAgLCBtX3RhZyhvcHRpb25zLnRhZykKICAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAs
IG1fdGFza1RpbWVyKHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3coKTsg
fSkpCisgICAgLCBtX3Rhc2tUaW1lcihtYWtlVW5pcXVlPFRpbWVyPihbdGhpc10gKCkgeyBzaG93
KCk7IH0pKQogewogICAgIGlmICghb3B0aW9ucy5pY29uLmlzRW1wdHkoKSkgewogICAgICAgICBh
dXRvIGljb25VUkwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGE2MjAzNTM5M2M3ZmIzZjZkZGYwMWM1Yzg5ZDc0
ZjNiNWVkZDJkNDQuLmQ0OGYyMDVhOWUyNDE0ZTA3ZDcyMmY5MDMyNWE3YzM2NGQ0ODk0MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgY2hh
ciogTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogCiB2b2lkIHByb3Zp
ZGVOb3RpZmljYXRpb24oUGFnZSogcGFnZSwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCiB7
Ci0gICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0
aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6cHJv
dmlkZVRvKHBhZ2UsIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1h
a2VVbmlxdWU8Tm90aWZpY2F0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
RE9NV2luZG93UXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5k
b3dRdW90YS5jcHAKaW5kZXggMDNmZTllMzg2NzhmNDA1MDczMjU1MDljMjAzODY3YzljZjgyMGZm
MS4uYzk4Yzk5ODZkZWQ2Y2QyMDU0MjYxNzIxNWY2NTM2Y2U1OGYyNzk1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgRE9NV2luZG93UXVvdGEqIERPTVdpbmRvd1F1b3RhOjpmcm9tKERPTVdpbmRvdyogd2lu
ZG93KQogewogICAgIERPTVdpbmRvd1F1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9N
V2luZG93UXVvdGEqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVt
ZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93UXVvdGE+KHdpbmRvdyk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93UXVvdGE+KHdpbmRv
dyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmln
YXRvclN0b3JhZ2VRdW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmln
YXRvclN0b3JhZ2VRdW90YS5jcHAKaW5kZXggN2JhMWQzZDRiMzY5NDQwYzY0ZTE3ZGQyMGNhOTQ1
MzhiOGFkOWI3NC4uN2EwODA0NTk1Njk4M2EzMWY2ZDgzNGVmN2VhNzcyZmE2NjczNmE2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVv
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhLmNwcApAQCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIE5hdmln
YXRvclN0b3JhZ2VRdW90YTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZp
Z2F0b3JTdG9yYWdlUXVvdGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JTdG9y
YWdlUXVvdGEqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVt
ZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cp
OworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvclN0b3Jh
Z2VRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1v
dmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA5
NWMzZTQzNjQ3MzE2MmE1MGQ2MWI1Y2U3NTE2NWVlNjhiMjFiNzI3Li4xYTFjODQ3ZGM0OTdkYzY0
ODQ1ZjU2ZWNlNTkyNjNhNDI2YWY2MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSogV29ya2VyTmF2aWdhdG9y
U3RvcmFnZVF1b3RhOjpmcm9tKFdvcmtlck5hdmlnYXRvcioKIHsKICAgICBXb3JrZXJOYXZpZ2F0
b3JTdG9yYWdlUXVvdGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JT
dG9yYWdlUXVvdGEqPihTdXBwbGVtZW50PFdvcmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVu
dCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNp
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50
aGVzaXMuY3BwCmluZGV4IDM3OTU2NTI2ZmJmMjg2OTBlY2YwMzk5NTJjNTJmNmUwNDQ2YmNiNGMu
Ljk2OWMyMzdmN2M4MTU1MTUzZGUwNzFlYzk2YTYxYTRhNDYyZDNmOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhl
c2lzLmNwcApAQCAtNTUsNyArNTUsNyBAQCBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMqIERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01X
aW5kb3dTcGVlY2hTeW50aGVzaXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dT
cGVlY2hTeW50aGVzaXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3
aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IDcyYjU2M2U0YmJmN2RjZTAz
ZmEzMDg4MGQyZmE3NzBiODk4NjkzYTQuLmU3YjYyYTFhMTdiZDk2YTlmNWExM2ZkMDllNzQ5YWI0
YmNlMTk4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6dm9p
Y2VzRGlkQ2hhbmdlKCkKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXImIFNwZWVjaFN5bnRoZXNp
czo6ZW5zdXJlUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpCiB7CiAgICAgaWYgKCFtX3BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIpCi0gICAgICAgIG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyk7Cisg
ICAgICAgIG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciA9IG1ha2VVbmlxdWU8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcj4odGhpcyk7CiAgICAgcmV0dXJuICptX3BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggNjJmNjhlYzY2M2E4MDIxMmM2ZjNhZjdiODVl
MjNjNmI0Zjc0MmEwYS4uMmY1NDI3MmFjNWMwMWQwYTIzMGU1YzBkZjA0NTI0YWZiMmE0ZTIzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlv
RGVjb2Rlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVj
b2RlQXN5bmMoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmEKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPERlY29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVS
YXRlLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwor
ICAgIGF1dG8gZGVjb2RpbmdUYXNrID0gbWFrZVVuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1vdmUo
YXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spKTsKICAgICBtX3F1ZXVlLmFwcGVuZChXVEZNb3ZlKGRlY29kaW5nVGFz
aykpOyAvLyBub3RlIHRoYXQgb3duZXJzaGlwIG9mIHRoZSB0YXNrIGlzIGVmZmVjdGl2ZWx5IHRh
a2VuIGJ5IHRoZSBxdWV1ZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4IGJjMDBlYjlmODdkMWJjZDU4Y2JmNzQ5
YjdkYTdjNDkzY2Y3ZTg4NzYuLmNmOTI2OWMzMDQ0YzQzMjJkNzQ0ZDA2MjlkZGEwZmE4OTQ5M2Vj
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVk
aW9EZWNvZGVyLmgKQEAgLTQyLDcgKzQyLDggQEAgY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsK
IC8vIEFzeW5jQXVkaW9EZWNvZGVyIGFzeW5jaHJvbm91c2x5IGRlY29kZXMgYXVkaW8gZmlsZSBk
YXRhIGZyb20gYW4gQXJyYXlCdWZmZXIgaW4gYSB3b3JrZXIgdGhyZWFkLgogLy8gVXBvbiBzdWNj
ZXNzZnVsIGRlY29kaW5nLCBhIGNvbXBsZXRpb24gY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIHdp
dGggdGhlIGRlY29kZWQgUENNIGRhdGEgaW4gYW4gQXVkaW9CdWZmZXIuCiAKLWNsYXNzIEFzeW5j
QXVkaW9EZWNvZGVyIHsKK2NsYXNzIEFzeW5jQXVkaW9EZWNvZGVyIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY0F1ZGlv
RGVjb2Rlcik7CiBwdWJsaWM6CiAgICAgQXN5bmNBdWRpb0RlY29kZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZS5jcHAKaW5kZXggYmE4YzI1NWFlN2Q3ZGE3M2JjOWZmNjU1NDNmMWUzN2JjOTU0MDRiMy4u
MGZiNTViMDhmMGMxYTJiZTJkMDcwYzRlMGQ4ZDhmNDY3ZTM0NmE3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZS5jcHAKQEAgLTQwLDggKzQwLDggQEAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2EKICAgICA6
IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVU
eXBlQmFzaWNJbnNwZWN0b3IpOwotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3VudCkpOworICAgIGFkZElucHV0KG1ha2VV
bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxB
dWRpb05vZGVPdXRwdXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3VudCkpOwogfQogCiAvLyBXZSBv
dmVycmlkZSBwdWxsSW5wdXRzKCkgYXMgYW4gb3B0aW1pemF0aW9uIGFsbG93aW5nIHRoaXMgbm9k
ZSB0byB0YWtlIGFkdmFudGFnZSBvZiBpbi1wbGFjZSBwcm9jZXNzaW5nLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmNwcAppbmRleCBiYzE4OWMwOGNiZWZjN2MxOTYwNjQ2NmMwNzY4YjhmYTYzNGIxNmFiLi4w
YjlmMWNlZDg3NDViNWQ5OThkYzM4ZDYzNmU3OTBhYmZiZTZlOTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmNwcApAQCAtNDIsOCArNDIsOCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewotICAgIGFkZElucHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICAvLyBUaGUgc3ViY2xhc3MgbXVz
dCBjcmVhdGUgbV9wcm9jZXNzb3IuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggNDBhYzMyYzVj
NTVjM2QzMmQwZTE0YjZhN2QyMmIyNDY3MzkwZjRiZi4uMjUxMGM0MGE3ZjYxMjNkNGM3ZmMyZDY0
MGE5MGI0ZjBhOThlNmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZQogICAgIG1fcGxheWJhY2tSYXRlID0gQXVkaW9QYXJhbTo6
Y3JlYXRlKGNvbnRleHQsICJwbGF5YmFja1JhdGUiLCAxLjAsIC1NYXhSYXRlLCBNYXhSYXRlKTsK
IAogICAgIC8vIERlZmF1bHQgdG8gbW9uby4gIEEgY2FsbCB0byBzZXRCdWZmZXIoKSB3aWxsIHNl
dCB0aGUgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscyB0byB0aGF0IG9mIHRoZSBidWZmZXIuCi0g
ICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAK
ICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggOTk1NmMxNTg2MjE4OWM3MTQyOWNiY2ZkNjAwNDJm
MDBjOThiYWVmNi4uZDRjZGI3NjU4YzBmMzViNWZjOWEyMmNlODk4YmNiMmI5OWVlNGRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBk
b2N1bWVudCkKICAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCiAj
ZW5kaWYKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUo
KnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50
UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVu
dFF1ZXVlPigqdGhpcykpCiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0
IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBuYXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQg
YXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGlu
IGNsZWFyIG1ldGhvZC4KQEAgLTE2Niw3ICsxNjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dAogI2VuZGlmCiAgICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFT
ZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVu
dFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAs
IG1fZXZlbnRRdWV1ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiB7CiAg
ICAgY29uc3RydWN0Q29tbW9uKCk7CiAKQEAgLTQzMiw3ICs0MzIsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8QXVkaW9CdWZmZXI+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYg
YXJyYXlCdWZmZQogdm9pZCBBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlC
dWZmZXI+JiYgYXVkaW9EYXRhLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNz
Q2FsbGJhY2ssIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCiB7
CiAgICAgaWYgKCFtX2F1ZGlvRGVjb2RlcikKLSAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigpOworICAgICAgICBtX2F1ZGlvRGVjb2Rl
ciA9IG1ha2VVbmlxdWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7CiAgICAgbV9hdWRpb0RlY29kZXIt
PmRlY29kZUFzeW5jKFdURk1vdmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSgpLCBXVEZNb3ZlKHN1
Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwCmluZGV4IDk3NTg4NzU0NzQ3ZTE1MjQ4MTg5ZjQ5NzBjNmQzM2UzYzZhZTFlMTEuLmQ5YWJi
OTc3N2E5ZDI1ZWVhZjI0MmZmNGZmZmM1ZWM1ZWY0ODZjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhCiAgICAgLCBtX211dGVkKGZh
bHNlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVzdGluYXRpb24pOwotICAgIGFkZElu
cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRJbnB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiB9CiAKIEF1ZGlvRGVzdGluYXRp
b25Ob2RlOjp+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5kZXggMTYzNzNjZTkzNzhk
MzIyZmRkOWMyNTNmOWM3NmQ5NjNlNjEzY2QzYi4uNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4
YjYzNmFiMmQ3NTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIEJpcXVhZEZpbHRlck5v
ZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmlxdWFkRmlsdGVyKTsKIAogICAgIC8vIElu
aXRpYWxseSBzZXR1cCBhcyBsb3dwYXNzIGZpbHRlci4KLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6
bWFrZV91bmlxdWU8QmlxdWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxz
ZSk7CisgICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4
dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2UpOwogfQogCiBCaXF1YWRGaWx0ZXJUeXBlIEJpcXVhZEZp
bHRlck5vZGU6OnR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCmluZGV4IDBlNGUzNjg1YjgyY2U0NzdlYzRlNTg1
NDdmMTZhZDhiNzBmYzc5MDQuLmU4NGI5ODAzNTY3MGZiMWRjYzMyNzA5NjYzZDJiMzkwNTUyZTY1
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFBy
b2Nlc3Nvci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgQmlxdWFkUHJvY2Vzc29yOjp+QmlxdWFkUHJv
Y2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBCaXF1YWRQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFk
RFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+
KHRoaXMpOwogfQogCiB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6Y2hlY2tGb3JEaXJ0eUNvZWZmaWNp
ZW50cygpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1
ZW5jeVJlc3BvbnNlKGludCBuRnJlcXVlbmNpZXMsIGNvbnN0IGZsb2F0KiBmcmVxdWUKICAgICAv
LyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIHRoZSBwcm9jZXNzaW5nIHJ1bm5pbmcgaW4gdGhl
IGF1ZGlvCiAgICAgLy8gdGhyZWFkIG9uIHRoZSBtYWluIGtlcm5lbHMuCiAgICAgCi0gICAgYXV0
byByZXNwb25zZUtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlz
KTsKKyAgICBhdXRvIHJlc3BvbnNlS2VybmVsID0gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+
KHRoaXMpOwogCiAgICAgcmVzcG9uc2VLZXJuZWwtPmdldEZyZXF1ZW5jeVJlc3BvbnNlKG5GcmVx
dWVuY2llcywgZnJlcXVlbmN5SHosIG1hZ1Jlc3BvbnNlLCBwaGFzZVJlc3BvbnNlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9k
ZS5jcHAKaW5kZXggMjBiOGRhMTllNWY0MzljZmU1NDU1ZjAxZGMyOTA4NzQ0NmIyM2MwOC4uZGY1
MGYyNjg3MzY4YWE1YzMyOTU0MTQ4MTUwNzc3YTAyOTE3MzJkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTU5
LDkgKzU5LDkgQEAgQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW4KIAogICAgIC8vIENyZWF0ZSB0aGUg
cmVxdWVzdGVkIG51bWJlciBvZiBpbnB1dHMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mSW5wdXRzOyArK2kpCi0gICAgICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOwogCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9k
ZS5jcHAKaW5kZXggNDYzNTQ5OGMwMzRjNTkzMGI0ZThmMjIwODZlMTRiMmI0YmQyOTExNy4uODJm
NjlhMDRmOTk5MjYxZDU4YzE1MmJmYzYwMmEzNjYwOTYwOTFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBA
IC01MCwxMSArNTAsMTEgQEAgQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUKIHsKICAgICBzZXROb2Rl
VHlwZShOb2RlVHlwZUNoYW5uZWxTcGxpdHRlcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxB
dWRpb05vZGVJbnB1dD4odGhpcykpOwogCiAgICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVtYmVyIG9m
IG91dHB1dHMgKGFibGUgdG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBm
ZWQgdG8gYW4gaW5wdXQpLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91
dHB1dHM7ICsraSkKLSAgICAgICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CisgICAgICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IDIz
ODJkYWJjYzljOTkyN2NhYzMxZDMyNzVmMjIwM2NjOGY1OGEwOTMuLmUzNjY3N2NmZDc0NWU4YmJl
MDJkYTNkYzRkZDdiYTFmMWE1M2RkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAtNTIsOCArNTIsOCBAQCBDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNvbnZvbHZlcik7CiAKLSAgICBhZGRJbnB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkSW5w
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtl
VW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVjaWZp
YyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CkBAIC0xNDYs
NyArMTQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKEF1
ZGlvQnVmZmVyKiBidWZmZXIpCiAKICAgICAvLyBDcmVhdGUgdGhlIHJldmVyYiB3aXRoIHRoZSBn
aXZlbiBpbXB1bHNlIHJlc3BvbnNlLgogICAgIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMgPSAh
Y29udGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKTsKLSAgICBhdXRvIHJldmVyYiA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1Np
emVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFs
aXplKTsKKyAgICBhdXRvIHJldmVyYiA9IG1ha2VVbmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0
KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNl
QmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFsaXplKTsKIAogICAgIHsKICAgICAgICAgLy8gU3lu
Y2hyb25pemUgd2l0aCBwcm9jZXNzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggNDI2NWEwMDc0OWVhZmZmNmE5ZTFiOWQxZGRhNjBkNGRi
NzAyOGIwMy4uODFiZDdkMTliMjdlNzQxYjUwZjZmODRlNTFmN2NlMjU1NzgwMmI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBpbmxpbmUgRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RAogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURl
bGF5KTsKLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlQcm9jZXNzb3I+
KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CisgICAgbV9wcm9jZXNzb3Ig
PSBtYWtlVW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhE
ZWxheVRpbWUpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gRGVsYXlOb2RlOjpj
cmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4
RGVsYXlUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmNwcAppbmRleCBhNzViYTZiN2M5MmU3NDQ0YzY1NjA4ZThhZTE4ZjlkNTAwMDI2
YTA0Li4xMDM2NmVmNmVhZmI2YzQ0ZGIxOTEyNzFhOTk1ZDllNmQyYWNiYTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBEZWxheVByb2Nlc3Nvcjo6fkRlbGF5UHJvY2Vzc29yKCkKIAogc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWxheURTUEtlcm5lbD4odGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCBhYTBlNGE4MDExOWViZWQ5
ZGQzNjk2YjNmYTEzMDVkZGYzMmJkMDUyLi4xNDA5NmQ4ZjBjNTk2YTUyOTcxNjY2ZWY4MjY3YTAy
M2ZkYjQ0YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgRHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXAKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29t
cHJlc3Nvcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOworICAgIGFkZElucHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSk7
CiAKICAgICBtX3RocmVzaG9sZCA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAidGhyZXNo
b2xkIiwgLTI0LCAtMTAwLCAwKTsKICAgICBtX2tuZWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29u
dGV4dCwgImtuZWUiLCAzMCwgMCwgNDApOwpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGU6OmluaXRpYWxpemUoKQogICAgICAgICByZXR1cm47CiAKICAgICBBdWRp
b05vZGU6OmluaXRpYWxpemUoKTsgICAgCi0gICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPER5bmFtaWNzQ29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBtYWtlVW5p
cXVlPER5bmFtaWNzQ29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRw
dXRDaGFubmVscyk7CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6dW5pbml0aWFs
aXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKaW5k
ZXggNmM5NGE1MjNjM2IyYTAyMTJiMmE1NGExYTljOGYwMjZiYmQxZGI1Zi4uMjU3ZGYyZWNlMjMz
OGNiY2JhYjllZDA1MTIzM2M2NGIxYzU3ZjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9HYWluTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgR2Fpbk5vZGU6OkdhaW5O
b2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIAogICAgIG1fZ2Fp
biA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiIsIDEuMCwgMC4wLCAxLjApOwog
Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwot
ICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkp
OworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBh
ZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGlu
aXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAzODFhZTcy
Nzk0ZmIwZTdmZWE2MzMxYWJkMzNiMjBjMTU4NDVmZjliLi45MTJlNmViMjMyMTQ1NjQzZDZmZGFm
YmMxMWU5Njc2NGMzZDJmNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwKICAgICBzZXROb2RlVHlwZShOb2Rl
VHlwZU1lZGlhRWxlbWVudEF1ZGlvU291cmNlKTsKIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVv
LiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gd2hhdCB0aGUgbWVkaWEgZWxlbWVudCAu
c3JjIGlzIHNldCB0by4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRw
dXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgZmxvYXQgc291cmMKIAogICAgICAgICBpZiAoc291cmNlU2FtcGxlUmF0ZSAh
PSBzYW1wbGVSYXRlKCkpIHsKICAgICAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJj
ZVNhbXBsZVJhdGUgLyBzYW1wbGVSYXRlKCk7Ci0gICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJl
c2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZh
Y3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2Ft
cGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVt
YmVyT2ZDaGFubmVscyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBCeXBhc3Mg
cmVzYW1wbGluZy4KICAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggNWIyYTUwMGRkMjk0ZDEwNTU4YmM3
YTA4Y2Y3NzE2ZTQyNmI1YzJhYy4uZTQzZjU0NDhiYzI2Yjg2YWY2OTNkMDA5OTk1YzY3MzRmNjk1
NWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgTWUKICAgICBhdWRpb1NvdXJjZVByb3ZpZGVyLT5zZXRDbGllbnQo
dGhpcyk7CiAgICAgCiAgICAgLy8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdl
IGRlcGVuZGluZyBvbiB0aGUgZm9ybWF0IG9mIHRoZSBNZWRpYVN0cmVhbSdzIGF1ZGlvIHRyYWNr
LgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MikpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikp
OwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZs
b2F0IHNvdXJjZQogICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUg
LyBzYW1wbGVSYXRlOwotICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFu
bmVscyk7CisgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0
aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICB9
CiAKICAgICBtX3NvdXJjZU51bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApp
bmRleCA1YjUwMjliZmJjZTc3YWQ1YjZjM2M4ODMyNjBkYjlkZWZkZjYxMDRiLi5hOTljZWFhZDZi
NWMyMWUwOWRkMjI1M2MyYWNmMzA0NTU0NzUzZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBP
c2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQogICAgIHNldFR5cGUobV90eXBlKTsKIAogICAgIC8vIEFuIG9zY2lsbGF0
b3IgaXMgYWx3YXlzIG1vbm8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBmNjQ3NDY5ZTIzNTVl
YjNhMGMwOWIzYjA4NTJiZmJlYzZlNDhkMjhkLi41MWM2OTkxNmZmZGU3MGY1ZTY4MGFhOTI3Y2Vm
ZWY3Y2E3MzJjM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAKQEAgLTU4LDggKzU4LDggQEAgUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgLy8gTG9hZCB0aGUgSFJU
RiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9jayB0aGUgSmF2YXNjcmlw
dCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2UuCiAgICAgbV9ocnRmRGF0
YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFuZExvYWRBc3luY2hyb25v
dXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKIAotICAgIGFkZElucHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRJbnB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICAvLyBOb2RlLXNwZWNpZmljIGRl
ZmF1bHQgbWl4aW5nIHJ1bGVzLgogICAgIG1fY2hhbm5lbENvdW50ID0gMjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcAppbmRleCBiYjJhMDdk
MjM1NGViYWY5NGQwMDQ2NWE0YjQxZDg2MDU1NTk5ODZiLi5lYzlhMTdjNGY1NmViOTk2NmRjMTc2
MjdlOTM0MDViYTFmZDQ4YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBQZXJpb2RpY1dh
dmU6OmNyZWF0ZUJhbmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiByZWFsRGF0YSwgY29uc3Qg
ZmxvYXQqIGkKICAgICAgICAgcmVhbFBbMF0gPSAwOwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUg
YmFuZC1saW1pdGVkIHRhYmxlLgotICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7Cisg
ICAgICAgIG1fYmFuZExpbWl0ZWRUYWJsZXMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFy
cmF5PihtX3BlcmlvZGljV2F2ZVNpemUpKTsKIAogICAgICAgICAvLyBBcHBseSBhbiBpbnZlcnNl
IEZGVCB0byBnZW5lcmF0ZSB0aGUgdGltZS1kb21haW4gdGFibGUgZGF0YS4KICAgICAgICAgZmxv
YXQqIGRhdGEgPSBtX2JhbmRMaW1pdGVkVGFibGVzW3JhbmdlSW5kZXhdLT5kYXRhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNw
cAppbmRleCAzYjYyODFkMWU4NDNlZDI5OWNmNjE1M2M3MzI3OTcwNzQxODA2Nzc4Li44MDIzNzM0
MDdmNzVkNDdlMjU5ZWI2MDU2MzgwZjYzNWYxM2FjZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgUmVhbHRpbWVBbmFseXNlcjo6UmVhbHRpbWVBbmFseXNlcigpCiAgICAgLCBtX21pbkRl
Y2liZWxzKERlZmF1bHRNaW5EZWNpYmVscykKICAgICAsIG1fbWF4RGVjaWJlbHMoRGVmYXVsdE1h
eERlY2liZWxzKQogewotICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZU
RnJhbWU+KERlZmF1bHRGRlRTaXplKTsKKyAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVl
PEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CiB9CiAKIFJlYWx0aW1lQW5hbHlzZXI6On5SZWFs
dGltZUFuYWx5c2VyKCkgPSBkZWZhdWx0OwpAQCAtODMsNyArODMsNyBAQCBib29sIFJlYWx0aW1l
QW5hbHlzZXI6OnNldEZmdFNpemUoc2l6ZV90IHNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChtX2ZmdFNpemUgIT0gc2l6ZSkgewotICAgICAgICBtX2FuYWx5c2lzRnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihzaXplKTsKKyAgICAgICAgbV9hbmFseXNpc0Zy
YW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7CiAgICAgICAgIC8vIG1fbWFnbml0dWRl
QnVmZmVyIGhhcyBzaXplID0gZmZ0U2l6ZSAvIDIgYmVjYXVzZSBpdCBjb250YWlucyBmbG9hdHMg
cmVkdWNlZCBmcm9tIGNvbXBsZXggdmFsdWVzIGluIG1fYW5hbHlzaXNGcmFtZS4KICAgICAgICAg
bV9tYWduaXR1ZGVCdWZmZXIuYWxsb2NhdGUoc2l6ZSAvIDIpOwogICAgICAgICBtX2ZmdFNpemUg
PSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2Ny
aXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggZDU5ZGVjZjk5NTE2ZjZkMDFhZjljMWQ5ZmRiZjFk
MGIxMDE5ZTQwZi4uZDViM2FmYmYyNzEwMTQ1MTQ5NGIxODkzNzc2OGI2MDVmNmEzYjQ3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwCkBAIC02OCw4ICs2OCw4IEBAIFNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlw
dFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiAg
ICAgQVNTRVJUKG51bWJlck9mSW5wdXRDaGFubmVscyA8PSBBdWRpb0NvbnRleHQ6Om1heE51bWJl
ck9mQ2hhbm5lbHMoKSk7CiAKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUphdmFTY3JpcHQpOwot
ICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAg
ICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlu
cHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BL
ZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcAppbmRleCA0MTBkMWRhZjVjODk1NDAwOWZmMDYzNmE4MjkwMGJmOTRhZjRmOGYx
Li5mM2QyMTIyZGY1MWM0ZjFhMjkyMjRlNjkzYWI0OTViYmMyYjkzOGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5j
cHAKQEAgLTQ5LDEyICs0OSwxMiBAQCB2b2lkIFdhdmVTaGFwZXJEU1BLZXJuZWw6OmxhenlJbml0
aWFsaXplT3ZlcnNhbXBsaW5nKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
aWYgKCFtX3RlbXBCdWZmZXIpIHsKLSAgICAgICAgbV90ZW1wQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV90
ZW1wQnVmZmVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdR
dWFudHVtICogNCk7Ci0gICAgICAgIG1fdXBTYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0pOwotICAgICAgICBtX2Rvd25TYW1wbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAgICAgICBt
X3VwU2FtcGxlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1
bSAqIDIpOwotICAgICAgICBtX2Rvd25TYW1wbGVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKKyAgICAgICAgbV90ZW1wQnVmZmVyID0gbWFr
ZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAg
bV90ZW1wQnVmZmVyMiA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFu
dHVtICogNCk7CisgICAgICAgIG1fdXBTYW1wbGVyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJl
bmRlcmluZ1F1YW50dW0pOworICAgICAgICBtX2Rvd25TYW1wbGVyID0gbWFrZVVuaXF1ZTxEb3du
U2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX3VwU2FtcGxlcjIgPSBt
YWtlVW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX2Rv
d25TYW1wbGVyMiA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiA0
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggODQ4Njk5M2YyMTA4NGNjYzYxY2NkODBiMmMxODdlMDhj
MTU1ZmQwMS4uNmU3ZThkZDFjOWMxOWZhM2M4NWUzZDlkODU1YWI5ZjQ1Nzg1Yjc5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgV2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNv
bnRleHQuc2FtcGxlUmF0ZSgpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBl
cik7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNz
b3I+KGNvbnRleHQuc2FtcGxlUmF0ZSgpLCAxKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlx
dWU8V2F2ZVNoYXBlclByb2Nlc3Nvcj4oY29udGV4dC5zYW1wbGVSYXRlKCksIDEpOwogCiAgICAg
aW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKaW5kZXggMjg5YzM5ZjVmM2Y5ZjdhNzllOWE1
YjZhNmQ4MzE1YjU5MWY0MzJkYS4uYmZlNWUwZTQ3ZmI4NGEyOGM2M2M2ZTI4YjMyZTBmYzExZTVj
NjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdhdmVTaGFwZXJQcm9jZXNz
b3I6On5XYXZlU2hhcGVyUHJvY2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2Vy
bmVsPiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFdhdmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB2b2lkIFdhdmVTaGFw
ZXJQcm9jZXNzb3I6OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaAppbmRleCBiMWM0OWRiNTIzYjkzNmIwYTRlYzIyMTA0MWI3N2RhN2NjMTQ3OGZkLi4yMGQ2
MDY5NzI0Mjg5NzM3Nzk4MmI4NGVlNzNkNGRhNjM0ZWQ4ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9uczsKIHVzaW5nIENyZWRlbnRpYWxQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51
bGxhYmxlPElETEludGVyZmFjZTxCYXNpY0NyZWRlbnRpYWw+Pj47CiAKIGNsYXNzIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKTsKIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1
bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNw
cAppbmRleCA4YzNkMTM0NmM0MDMwY2ZiM2Q4Mjc3MzdhMGExNWYzZjFjYjliYWQ3Li4xYjkxMmQ5
OGQ5ZjA0ZjMwNzRhMWI4ZTFhNjI2MDFhNDJmYWYzNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKQEAgLTE1
MCw5ICsxNTAsOSBAQCBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UodWludDMyX3QgY2hh
bm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZCB0eXBlLCBjbwogICAgIHVpbnQ4X3Qgc2VxdWVu
Y2UgPSAwOwogCiAgICAgc2l6ZV90IHBvcyA9IGRhdGEuc2l6ZSgpID4ga0hpZEluaXRQYWNrZXRE
YXRhU2l6ZSA/IGtIaWRJbml0UGFja2V0RGF0YVNpemUgOiBkYXRhLnNpemUoKTsKLSAgICBtX3Bh
Y2tldHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJ
ZCwgdHlwZSwgZ2V0SW5pdFBhY2tldERhdGEoZGF0YSksIGRhdGEuc2l6ZSgpKSk7CisgICAgbV9w
YWNrZXRzLmFwcGVuZChtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5
cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBkYXRhLnNpemUoKSkpOwogICAgIGZvciAoOyBw
b3MgPCBkYXRhLnNpemUoKTsgcG9zICs9IGtIaWRDb250aW51YXRpb25QYWNrZXREYXRhU2l6ZSkK
LSAgICAgICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51
YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0
RGF0YShkYXRhLCBwb3MpKSk7CisgICAgICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxG
aWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRp
bnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOwogfQogCiBGaWRvSGlkTWVzc2FnZTo6Rmlk
b0hpZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBpbml0UGFja2V0
LCBzaXplX3QgcmVtYWluaW5nU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAppbmRleCA1NWI3YjJkNzE1MzZhMjM1
NDkxM2FlMzZlOWZiOTFlZjAwYThmMDgzLi4yNmI4MGFhOGE1ZjEzOTYzYzc2OGU3ZTkyM2JiYWFi
MmI4N2I1ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb0hpZFBhY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxGaWRvSGlkSW5pdFBhY2tldD4gRmlkb0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxp
emVkRGF0YShjCiAgICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CiAgICAgZGF0YS5h
cHBlbmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNvbW1hbmQs
IFdURk1vdmUoZGF0YSksIHBheWxvYWRTaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRv
SGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2Fk
U2l6ZSk7CiB9CiAKIC8vIFUyRiBJbml0aWFsaXphdGlvbiBwYWNrZXQgaXMgZGVmaW5lZCBhczoK
QEAgLTEyMyw3ICsxMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldD4gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbQogICAgIGF1dG8gZGF0
YSA9IFZlY3Rvcjx1aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4o
KSArIGluZGV4LCBkYXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRv
SGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFu
bmVsSWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAogLy8gVTJGIENvbnRpbnVhdGlv
biBwYWNrZXQgaXMgZGVmaW5lZCBhczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggMDIxNDVkMGNjMmU4YzllYWRiMGM4ODI5NDFiODU5
ZmMwYWU4MDUyZC4uNWI2NGEwODc0NmFmODA4MGNkMmU3MjUwM2ZhMDBkM2M5NDlmYjAwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAg
LTI1MCw3ICsyNTAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZTo6b3BlbkFuZFZlcmlm
eVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBy
ZXN1bHQ7Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9wZW5UYXNr
PigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVzdWx0KTsK
KyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRW
ZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5z
Y2hlZHVsZUltbWVkaWF0ZVRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndh
aXRGb3JUYXNrQ29tcGxldGlvbigpOwogCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEYXRhYmFz
ZTo6Y2xvc2UoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyZWFkLnNjaGVkdWxl
SW1tZWRpYXRlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlQ2xvc2VUYXNrPigqdGhpcywg
c3luY2hyb25pemVyKSk7CisgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhtYWtlVW5p
cXVlPERhdGFiYXNlQ2xvc2VUYXNrPigqdGhpcywgc3luY2hyb25pemVyKSk7CiAKICAgICAvLyBG
SVhNRTogaU9TIGRlcGVuZHMgb24gdGhpcyBmdW5jdGlvbiBibG9ja2luZyB1bnRpbCB0aGUgZGF0
YWJhc2UgaXMgY2xvc2VkIGFzIHBhcnQKICAgICAvLyBvZiBjbG9zaW5nIGFsbCBvcGVuIGRhdGFi
YXNlcyBmcm9tIGEgcHJvY2VzcyBhc3NlcnRpb24gZXhwaXJhdGlvbiBoYW5kbGVyLgpAQCAtNTMy
LDcgKzUzMiw3IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgIG1f
dHJhbnNhY3Rpb25JblByb2dyZXNzID0gdHJ1ZTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBt
X3RyYW5zYWN0aW9uUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtl
X3VuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOwor
ICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1v
dmUodHJhbnNhY3Rpb24pKTsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJh
c2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0
YXNrLT50cmFuc2FjdGlvbigpKTsKICAgICBkYXRhYmFzZVRocmVhZCgpLnNjaGVkdWxlVGFzayhX
VEZNb3ZlKHRhc2spKTsKIH0KQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hl
ZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAg
YXV0byYgdGhyZWFkID0gZGF0YWJhc2VUaHJlYWQoKTsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6
bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CisgICAg
YXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oJnRyYW5zYWN0
aW9uKTsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlv
blRhc2sgJXAgZm9yIHRoZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKICAgICB0
aHJlYWQuc2NoZWR1bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQpAQCAtNzYzLDcgKzc2Myw3IEBA
IFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKICAgICBpZiAodGhyZWFkLnRl
cm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogCi0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRhYmxlTmFtZXNU
YXNrPigqdGhpcywgc3luY2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VV
bmlxdWU8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0
KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwogICAg
IHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAz
YmFiZDQ5NTY2ZjE0YTFiM2MwZDNiMTdiZjRjN2YzMmM1ZTNkNWY3Li5kNjQ5N2MzOTdmYTQ3NDI4
NTllMDU4NjIyMzZlZGVlNDNkNGVmMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMzksNyArMzksNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBEYXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQoKQot
ICAgIDogbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8U1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvcj4oKSkKKyAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihtYWtl
VW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCiB7CiAgICAgbV9zZWxmUmVmID0g
dGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBkOGRkY2M1OTg1NTE1NzZkMmEyYzEwZjQyZTRhZDEy
YTgyNTliNTE5Li5jMjhhOTZmNDU4MzllZjU0ZGFmMWY5OWExYWQ1OGQ3ZWNkNGE2NzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9w
ZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJh
c2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCiAgICAgaWYgKCFtX29wZW5EYXRh
YmFzZU1hcCkKLSAgICAgICAgbV9vcGVuRGF0YWJhc2VNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERh
dGFiYXNlT3JpZ2luTWFwPigpOworICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9IG1ha2VVbmlx
dWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CiAKICAgICBhdXRvIG9yaWdpbiA9IGRhdGFiYXNlLnNl
Y3VyaXR5T3JpZ2luKCk7CiAKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6cmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgYwogICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9pZCBt
YWtpbmcgYW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAgYXV0
byogbmFtZVNldCA9IG1fYmVpbmdDcmVhdGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZVNl
dCkgewotICAgICAgICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoQ291bnRl
ZFNldDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxIYXNo
Q291bnRlZFNldDxTdHJpbmc+PigpOwogICAgICAgICBuYW1lU2V0ID0gb3duZWRTZXQuZ2V0KCk7
CiAgICAgICAgIG1fYmVpbmdDcmVhdGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIFdURk1v
dmUob3duZWRTZXQpKTsKICAgICB9CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIERhdGFiYXNl
VHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgYwogICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBh
dm9pZCBtYWtpbmcgYW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAg
ICAgYXV0byogbmFtZVNldCA9IG1fYmVpbmdEZWxldGVkLmdldChvcmlnaW4pOwogICAgIGlmICgh
bmFtZVNldCkgewotICAgICAgICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNo
U2V0PFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8gb3duZWRTZXQgPSBtYWtlVW5pcXVlPEhhc2hT
ZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFtZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAg
ICBtX2JlaW5nRGVsZXRlZC5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVk
U2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50LmgKaW5kZXggODVmMWI2MzVjM2U0OWIzZmUxYTgxZjk0ODc4MjQ4MGUxZGU0
OGZiNS4uOGE1NGEzNjY3YTA3YWFjZTAzYTk2MGZiMjU2NGY3ZWJkZjNiZDk5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCkBAIC00
NCw2ICs0NCw3IEBAIGNsYXNzIFNRTFJlc3VsdFNldDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQmFj
a2VuZDsKIAogY2xhc3MgU1FMU3RhdGVtZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBTUUxTdGF0ZW1lbnQoRGF0YWJhc2UmLCBjb25zdCBTdHJpbmcmLCBW
ZWN0b3I8U1FMVmFsdWU+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4mJiwgUmVmUHRy
PFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+JiYsIGludCBwZXJtaXNzaW9ucyk7CiAgICAgflNR
TFN0YXRlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCAyMGQ2OTczNDc3NGRiZmJmMzBiZDhmMzljZTRj
NTk1NzIxNGU5MDBjLi40Y2IwNDFlNDUyYzgwZjVmNTliYjI3MjFlYWI4ZWMxYThmNjE4MzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcApAQCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2Fj
dGlvbjo6ZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYQogICAg
IGVsc2UgaWYgKG1fcmVhZE9ubHkpCiAgICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0
aG9yaXplcjo6UmVhZE9ubHlNYXNrOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMu
dmFsdWVPcihWZWN0b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtl
VW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMu
dmFsdWVPcihWZWN0b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7CiAKICAgICBpZiAobV9kYXRhYmFzZS0+ZGVs
ZXRlZCgpKQogICAgICAgICBzdGF0ZW1lbnQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKCk7CkBA
IC0yMzQsNyArMjM0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5k
UHJlZmxpZ2h0KCkKICAgICB9CiAKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwot
ICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5zYWN0
aW9uPihtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLCBtX3JlYWRPbmx5KTsKKyAgICBtX3Nx
bGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFz
ZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9yZWFkT25seSk7CiAKICAgICBtX2RhdGFiYXNlLT5yZXNl
dERlbGV0ZXMoKTsKICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZl
ci5jcHAKaW5kZXggNzlhYTU2MTgxZmZlZjNhYjFhOTJhYTU3ZmVjZGI2ZmJhNTllNmYwYi4uMTI5
ZDg2ZmZjZmJkMTU3YTgwYjAxOTJlM2I0OTk3MTMzYmViNzgwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIE5hdmlnYXRvcldlYkRyaXZlciogTmF2aWdhdG9yV2ViRHJpdmVyOjpm
cm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvcldlYkRyaXZlciogc3Vw
cGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYkRyaXZlcio+KFN1cHBsZW1lbnQ8TmF2
aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxOYXZpZ2F0b3JXZWJEcml2ZXI+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKaW5kZXggODhhOTc4MDQ0YmMxZTcw
ODkzMzU2NWRjNjJkMGEzMTQ2YjM4YjQyNi4uMzc2ZDE1NWNhOWIyZjVkMmE0YWIxODUyYzc3NmQ5
YzE4ZjJlNTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2
aWdhdG9yR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0
b3JHUFUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIE5hdmlnYXRvckdQVSogTmF2aWdhdG9yR1BVOjpm
cm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdQVSogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJv
bShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JH
UFU+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9y
R1BVPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAg
ICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaApp
bmRleCAxYjM0MjUwNGQ2OTU1MDhmMDgxNmNjYjU1ODJmNWJkOWFhNzYxYTZiLi41ZjU3ZWYxMTc3
NTMxYTBhYzNkOTYwZGViMWQ0Mzg3MTFhNGYwNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJh
dGlvbkRlZmluaXRpb24uaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBFbnVtZXJhdGlvbkRlZmlu
aXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKIAogICAgIGJvb2wgYWRkKEVudW1lcmF0
aW9uTWVtYmVyJiYgbWVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJl
cnMuYWRkKG1lbWJlci5uYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8RW51bWVyYXRpb25NZW1iZXI+
KFdURk1vdmUobWVtYmVyKSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQo
bWVtYmVyLm5hbWUoKSwgbWFrZVVuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1i
ZXIpKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50
cnlQb2ludFNjYWZmb2xkaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCmluZGV4IDBlMzFmZmJkZTBiMTQ4
NmY2YzZmNjVlMjBlYjYzOGFlODgxYjg3ZjguLmNiY2M0ODRiNjgyNTBjMGFhMDliNTk5NDNhZGM3
OWU4MTAwOTI3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcu
aApAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgTWV0YWwgewogY2xhc3MgVHlwZU5hbWVyOwog
CiBjbGFzcyBFbnRyeVBvaW50U2NhZmZvbGRpbmcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVm
YXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAppbmRleCBjYTM0NmUzMmIy
OTlhMTBjZWQyNTY1ZDAxZDg1NDUzYmQ4MGQxNDc0Li40N2IwNjBhN2M1YWFmYzMyZTg4ODc1ZmZj
NGFmODk4OTY4OTYyNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApAQCAt
NzY0LDkgKzc2NCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IFJl
bmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50CiAgICAgICAgIHJldHVybiB0
aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICB9OwogICAgIGlmICgmZnVuY3Rp
b25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXIpCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVu
Y3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1h
bnRpY3MudmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MudmVy
dGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVu
Y3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1h
bnRpY3MudmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MudmVy
dGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7CiAg
ICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50
U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGcmFnbWVudEVudHJ5UG9p
bnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5h
bWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1f
bWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZENvbG9yQXR0YWNobWVudHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGcmFnbWVudEVu
dHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1f
dHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRl
bXMsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91
dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3Mu
bWF0Y2hlZENvbG9yQXR0YWNobWVudHMpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC03
OTAsNyArNzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gQ29t
cHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW4KICAgICAgICAgcmV0dXJuIHRo
aXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIH07CiAgICAgaWYgKCZmdW5jdGlv
bkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnNoYWRlcikKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25E
ZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3Mu
ZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5b3V0
LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24s
IG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50
SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUo
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
VHlwZU5hbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMVHlwZU5hbWVyLmNwcAppbmRleCAxODViYTBiMDg4YTVjZWQ0YzViNjYzNmZhOTQ0MmMw
MDM0MGRkMDJhLi40MGI2MmMzN2RiZTI1ODBlMjNkNTkwYzA5MWViYjQxN2NhOWI4MDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5
cGVOYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xUeXBlTmFtZXIuY3BwCkBAIC0yNzIsMTkgKzI3MiwxOSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QmFzZVR5cGVOYW1lTm9kZT4gVHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZShBU1Q6OlVubmFt
ZWRUeXBlJiB1bgogICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2FzZSBB
U1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIHR5
cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihw
YXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBl
KCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBh
cmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUo
KSk7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewog
ICAgICAgICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVu
bmFtZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGVO
YW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRy
ZXNzU3BhY2UoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5v
ZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1Nw
YWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVm
ZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFT
VDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRl
TmV4dFR5cGVOYW1lKCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQs
IGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2Uo
KSk7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAg
ICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRU
eXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+
KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBn
ZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CiAgICAgfQog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNw
cAppbmRleCAzMzNiZGY2MmMwMjk4NjZhNzQ5YTNjNjEyZTVlNGRiYTE2YjI2YTdlLi5iZGVkNTNl
MThhZmM4YTQ4MTc1ODFmYTNhZGMyMjc4NTZlYmQ0ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTk2NiwxNCAr
OTY2LDE0IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2
YXJpYWJsZURlY2xhcmF0aW9uKQogCiB2b2lkIENoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZShB
U1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB1bm5hbWVk
VHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1
ZSgpKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwg
c3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOwor
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1
ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOwogICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgZXhwcmVzc2lvbi5zZXRU
eXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CiB9CiAKIHZvaWQgQ2hlY2tl
cjo6YXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZT4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UsIEFTVDo6VHlwZUFubm90
YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVz
b2x2aW5nVHlwZT4oV1RGTW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKKyAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2
aW5nVHlwZT4oV1RGTW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKICAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJlc3Npb24u
c2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwogfQpAQCAtOTgxLDEw
ICs5ODEsMTAgQEAgdm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhw
cmVzc2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXIKIHZvaWQgQ2hlY2tlcjo6Zm9yd2Fy
ZFR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZXNvbHZpbmdUeXBlJiByZXNvbHZp
bmdUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZh
bHVlKCkpCiB7CiAgICAgcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShS
ZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlw
ZT4ocmVzdWx0LmNvcHlSZWYoKSkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1h
cC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlS
ZWYoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3
RW50cnkpOwogICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXN1
bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9u
LCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5p
cXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9KSk7CiAgICAgZXhw
cmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAK
aW5kZXggN2NhYjZjOTVlYzM1NmU3NmFjNWZjNGY3MDJiZGNjMWVhY2M5Zjg3MC4uZTY4ZTQ4NmU3
ODViNGNjN2U3M2E0YjFkODQ3Nzg4ODUwMWVlOTJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApAQCAtNzQwLDE5ICs3NDAs
MTkgQEAgYXV0byBQYXJzZXI6OnBhcnNlU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxzdGQ6OnVuaXF1
ZV9wdHI8QVNUOjpTZW1hbnRpYz4sIEVycm9yPgogICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpIHsK
ICAgICBjYXNlIFRva2VuOjpUeXBlOjpBdHRyaWJ1dGU6IHsKICAgICAgICAgUEFSU0UocmVzdWx0
LCBTdGFnZUluT3V0U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVl
PEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1h
a2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAg
Y2FzZSBUb2tlbjo6VHlwZTo6U3BlY2lhbGl6ZWQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwg
U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpt
YWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAg
ICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlJlZ2lzdGVyOiAgewogICAgICAgICBQQVJTRShy
ZXN1bHQsIFJlc291cmNlU2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5p
cXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7
IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAg
ICAgZGVmYXVsdDogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBCdWlsdEluU2VtYW50aWMpOwot
ICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUo
KnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4o
V1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAppbmRl
eCA1NTljZThiYTkzYjI5ZDUxN2ZhNzczZjZhNWY1MjdkZGY0YTg1YjAxLi40NTcwMGNlZDhmZDM0
NDljNGRhNDk1OWY3MWE0MDJhYTAyZDZlNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApAQCAtNzQsNiAr
NzQsNyBAQCBjbGFzcyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiB7CiAvLyBJdCBleGlzdHMgc28gd2UgY2FuIG1ha2Ug
c3VyZSB0aGF0IHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgog
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTgg
VGhpcyB3cmFwcGVyIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCiBjbGFzcyBSZXNvbHZpbmdUeXBl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvbHZpbmdU
eXBlKCkKICAgICAgICAgOiBtX2lubmVyKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4o
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmln
YXRvckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0
b3JHUFUuY3BwCmluZGV4IGJmOTBmNmMzNjA1NDhkNTJjOGZkOGVlZWM3NTNjNzhkOGZhOWJmMWMu
LmQ5NTIyMzA1YWRhMWVlOTcxZjE2NTI4ZGUwNjYwNGJiNmE5NmIwZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBXb3JrZXJOYXZpZ2F0b3JHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6ZnJv
bShXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBXb3JrZXJOYXZpZ2F0b3JHUFUq
IHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50
PFdvcmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAg
ICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VyTmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxl
bWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3Is
IHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXgg
ZWQ1YTNjYzgzNGZlMTlkNDg4OGI4NTU1MDRiYTE1NWQ0ODNmYzQwNy4uYzFiYWM4NmQzYWIyYjBk
OTEzZmNlNzQyMTQzMWE5NDQ1OWVlZDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQoKQogCiB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgp
CiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7CiAg
ICAgfSkpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiAgICAgfSkpOwpAQCAtMTc1LDcgKzE3NSw3IEBA
IHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZl
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJiBi
aW5hcnlEYXRhKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtl
VW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBpZiAobV9jbGllbnQpCiAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5hcnlE
YXRhKSk7CiAgICAgfSkpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWlu
dDhfCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRV
cGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBidWZmZXJlZEFtb3VudCkKIHsKLSAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJlZEFt
b3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0pKTsKQEAg
LTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYgogCiB2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtl
KCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2lu
Z0hhbmRzaGFrZSgpOwogICAgIH0pKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtl
KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENs
b3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29t
cGxldGlvbiwgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7Ci0g
ICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdW5o
YW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCBy
ZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
eworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVuaGFu
ZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVh
c29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
ICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
Q2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9u
LCBjb2RlLCByZWFzb24pOwogICAgICAgICB9KSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVk
IHVuaGFuZGxlZEJ1ZmZlcmUKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewotICAgIG1fcGVuZGluZ1Rhc2tz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwogICAgIH0pKTsKQEAg
LTIzMCw3ICsyMzAsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKCkKIHsKLSAgICBtX3BlbmRpbmdU
YXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKICAgICB9KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggNjA3MTQ0MDkyNGZiMmNlNjdmNTM0MDYyZDc5ZThlM2IwNGVlMWM1MC4uYTA3YTg3
NjNhZmI5NjliNDIwNzBiYzQ5YTg2MjM5Yjc4M2Q2ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtOTcs
NyArOTcsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5u
ZWw6OmNvbm5lY3QoY29uc3QgVVJMJiByZXF1ZXN0ZWRVUgogICAgIG1fYWxsb3dDb29raWVzID0g
dmFsaWRhdGVkVVJMLT5hcmVDb29raWVzQWxsb3dlZDsKICAgICBTdHJpbmcgdXNlckFnZW50ID0g
bV9kb2N1bWVudC0+dXNlckFnZW50KG1fZG9jdW1lbnQtPnVybCgpKTsKICAgICBTdHJpbmcgY2xp
ZW50T3JpZ2luID0gbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotICAg
IG1faGFuZHNoYWtlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlk
YXRlZFVSTC0+dXJsLCBwcm90b2NvbCwgdXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dD
b29raWVzKTsKKyAgICBtX2hhbmRzaGFrZSA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SGFuZHNoYWtl
Pih2YWxpZGF0ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwgY2xpZW50T3JpZ2luLCBt
X2FsbG93Q29va2llcyk7CiAgICAgbV9oYW5kc2hha2UtPnJlc2V0KCk7CiAgICAgaWYgKG1fZGVm
bGF0ZUZyYW1lci5jYW5EZWZsYXRlKCkpCiAgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNp
b25Qcm9jZXNzb3IobV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsK
QEAgLTcwMyw3ICs3MDMsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgp
CiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYg
c3RyaW5nKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRn
b2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxR
dWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4o
KTsKICAgICBmcmFtZS0+b3BDb2RlID0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZVRleHQ7CiAgICAg
ZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlwZVN0cmluZzsKICAgICBmcmFtZS0+c3Ry
aW5nRGF0YSA9IHN0cmluZzsKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUs
IGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291
dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBh
dXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZy
YW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BD
b2RlOwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7CiAgICAg
ZnJhbWUtPnZlY3RvckRhdGEucmVzaXplKGRhdGFMZW5ndGgpOwpAQCAtNzI1LDcgKzcyNSw3IEBA
IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpP
cENvZGUgb3BDb2RlLCBjb25zdCBjaGFyCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVC
bG9iRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIEJsb2ImIGJsb2IpCiB7CiAg
ICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1
ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigp
OworICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1l
LT5vcENvZGUgPSBvcENvZGU7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlw
ZUJsb2I7CiAgICAgZnJhbWUtPmJsb2JEYXRhID0gJmJsb2I7CkBAIC03NjMsNyArNzYzLDcgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAg
ICAgICAgICAgICByZWYoKTsgLy8gV2lsbCBiZSBkZXJlZmVkIGFmdGVyIGRpZEZpbmlzaExvYWRp
bmcoKSBvciBkaWRGYWlsKCkuCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2Jsb2JMb2FkZXIp
OwogICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZS0+YmxvYkRhdGEpOwotICAgICAgICAgICAg
ICAgIG1fYmxvYkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmls
ZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpOworICAgICAgICAgICAgICAg
IG1fYmxvYkxvYWRlciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxv
YWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpOwogICAgICAgICAgICAgICAgIG1fYmxvYkxv
YWRlclN0YXR1cyA9IEJsb2JMb2FkZXJTdGFydGVkOwogICAgICAgICAgICAgICAgIG1fYmxvYkxv
YWRlci0+c3RhcnQobV9kb2N1bWVudC5nZXQoKSwgKmZyYW1lLT5ibG9iRGF0YSk7CiAgICAgICAg
ICAgICAgICAgbV9vdXRnb2luZ0ZyYW1lUXVldWUucHJlcGVuZChXVEZNb3ZlKGZyYW1lKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci5jcHAKaW5kZXggZjJmYTYyMDljMDQ4ZjUxNTE4YTI1ZWVjMTNhZWYy
NTY0YzlmNGU3Yi4uZWUzM2VhMGZlNWNmMWQ1YmY3OWEyZGEwNjcwN2I3M2NkM2E3OGM5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFdlYlNvY2tldERlZmxh
dGVGcmFtZXI6OldlYlNvY2tldERlZmxhdGVGcmFtZXIoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNv
Y2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKIH0KIAogYm9vbCBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKQEAgLTE3MCw4ICsxNzAsOCBAQCBi
b29sIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUoKSBjb25zdAogI2lmIFVTRSha
TElCKQogdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5k
b3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVyTW9kZSBtb2RlKQogewot
ICAgIG1fZGVmbGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5k
b3dCaXRzLCBtb2RlKTsKLSAgICBtX2luZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2Nr
ZXRJbmZsYXRlcj4oKTsKKyAgICBtX2RlZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXREZWZs
YXRlcj4od2luZG93Qml0cywgbW9kZSk7CisgICAgbV9pbmZsYXRlciA9IG1ha2VVbmlxdWU8V2Vi
U29ja2V0SW5mbGF0ZXI+KCk7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5pbml0aWFsaXplKCkgfHwg
IW1faW5mbGF0ZXItPmluaXRpYWxpemUoKSkgewogICAgICAgICBtX2RlZmxhdGVyID0gbnVsbHB0
cjsKICAgICAgICAgbV9pbmZsYXRlciA9IG51bGxwdHI7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9p
ZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBX
ZWJTb2NrZXREZWZsYXRlcjo6Q28KIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVy
PiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkK
IHsKICNpZiBVU0UoWkxJQikKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGVm
bGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPERl
ZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2Nr
ZXRGcmFtZTo6aXNOb25Db250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgfHwgIWZyYW1lLnBheWxv
YWRMZW5ndGgpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5h
ZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9kZWZsYXRl
ci0+ZmluaXNoKCkpIHsKQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVmbGF0
ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShXZWJTb2NrZXRG
cgogICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBtX2RlZmxhdGVyLT5zaXplKCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKICNlbHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0ZVJl
c3VsdEhvbGRlcj4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhv
bGRlcj4odGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViU29j
a2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXREZWZsYXRlQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKFdl
YlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5p
cXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpICYmIGZy
YW1lLmNvbXByZXNzKSB7CiAgICAgICAgIHJlc3VsdC0+ZmFpbCgiQ29tcHJlc3NlZCBiaXQgbXVz
dCBiZSAwIGlmIG5vIG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24iKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCmluZGV4IDFkNmYxNzgyMmM4MDUyODFiNzBh
NDE2MjBkY2RlZTZhZDJhYjg4OWMuLjRhNDg2NWY4NDk0ZDA2MTNlYWMzMjFhNTk0ZjhiYWUxOTk5
NmJiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBXZWJTb2NrZXREZWZsYXRl
cjo6V2ViU29ja2V0RGVmbGF0ZXIoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUg
Y29udGV4dAogewogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPj0gOCk7CiAgICAgQVNTRVJUKG1f
d2luZG93Qml0cyA8PSAxNSk7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3Ry
ZWFtPigpOworICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
el9zdHJlYW0+KCk7CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJl
YW0pKTsKIH0KIApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJl
c2V0KCkKIFdlYlNvY2tldEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcihpbnQgd2luZG93Qml0
cykKICAgICA6IG1fd2luZG93Qml0cyh3aW5kb3dCaXRzKQogewotICAgIG1fc3RyZWFtID0gc3Rk
OjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5nZXQo
KSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IDk5NDA3M2VhYTVlOGIyMzBkMWM4YjAwYzE2YzU5NjQzZTk3
ODQyNjguLmRjNmY2NjBmZDM4OGNlZmZhZjBlYmVmNmU2NjBlNmI2OTViYjYzMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVh
ZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0CiAKICAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS5w
b3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHsKICAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssCi0gICAgICAgIFtjbGllbnRXcmFwcGVyID0g
Y2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250ZXh0
LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVy
LmNvcHlSZWYoKSwgJmxvYWRlclByb3h5LCBwZWVyID0gbWFrZVVuaXF1ZTxQZWVyPihjbGllbnRX
cmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3Zl
KHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewog
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFs
U2NvcGUoKSk7CiAgICAgICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+ZmFpbGVkV2ViU29ja2V0
Q2hhbm5lbENyZWF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiBCcmlkZ2U6OmluaXRp
YWxpemUoKSBxdWl0dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBtYWluVGhyZWFkRGVzdHJv
eSgpIHRvIGRlbGV0ZSB0aGUgcGVlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2
ci9OYXZpZ2F0b3JXZWJWUi5jcHAKaW5kZXggZDk3YjVjMmE4NWE5ZDIzMjhmOTg0MGY0NGQzZDFl
OTYzMmM4MmQ5ZS4uNzc2YzQzYWVjMGI5YjViZGVhZGMzZGQ4OTEyNmFjZWQ2YmE3NTE2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgTmF2aWdhdG9yV2ViVlIqIE5hdmlnYXRvcldlYlZSOjpmcm9tKE5hdmln
YXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvcldlYlZSKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yV2ViVlIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2
aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViVlI+
KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yV2Vi
VlI+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAg
ICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0
by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAppbmRleCBiYzIzZDU5Y2Mz
MTIzN2IxNDk3YTc2YWNjNTlkM2VhZjVkMmI1ODQwLi42Y2E2N2YzOTFhMzFmY2QzODY5MjU1YjIx
ZjJmY2I3ZjNmYmY5YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0
by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHRJbXBsIDogcHVibGljIENyeXB0b0RpZ2Vz
dENvbnRleHQgewogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250
ZXh0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvRGlnZXN0Q29udGV4dEltcGw+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0
b0RpZ2VzdENvbnRleHRJbXBsPigpOwogICAgIH0KIAogICAgIENyeXB0b0RpZ2VzdENvbnRleHRJ
bXBsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2Vu
ZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3Bw
CmluZGV4IDMxNTMxNjgwODA3YjcyZDVlZjkzODA5MTRlN2FlMjQwYWQ5ZDAzOTcuLmU1M2UxOTVi
MzVmNDk4Zjc5NTI1MTUxZWJjMmFjZWI1ZmFmY2QyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgUEFMIHsKIAogc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2xvY2tHZW5lcmljPigpOwogfQogCiBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJp
YygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tD
TS5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCmluZGV4
IGM2ODkzMjE1ZjA2YjBjNjc0ZDU0NjA4MzNiMWE0ZDUxY2MzMmI2MTQuLjllMDcxYjc4MTRlNDRm
ZTAwNDQyZTY2YzcyMGIyYmZiMzEzMDY5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3lzdGVtL21hYy9DbG9ja0NNLm1tCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBjb25zdCBpbnQz
Ml90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAwOwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IENs
b2NrOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENsb2NrQ00+KCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2xvY2tDTT4oKTsKIH0KIAogQ2xvY2tDTTo6Q2xvY2tD
TSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApp
bmRleCBjYWNhYjg1NjhjODYxMTJkOWNkZmVmYzMwOTAyNmFkOWM4MTUzM2U1Li5iMzVmYzE1NjQz
N2YxY2EwOWQ2NDIyYmQ1OWM3MTMzZmFjMmM2MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE1NzUsNyArMTU3NSw3IEBAIHZvaWQg
QVhPYmplY3RDYWNoZTo6cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIp
CiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRl
c1VudGlsVHJlZU11dGF0ZXMoKQogewogICAgIGlmICghbV9jb21wdXRlZE9iamVjdEF0dHJpYnV0
ZUNhY2hlKQotICAgICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsKKyAgICAgICAgbV9j
b21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlID0gbWFrZVVuaXF1ZTxBWENvbXB1dGVkT2JqZWN0
QXR0cmlidXRlQ2FjaGU+KCk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdD
b21wdXRlZE9iamVjdEF0dHJpYnV0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5p
bWF0aW9uLmNwcAppbmRleCBlZGZkYmIwYTA2ZmQ2ZWRhMjUwNDhiOTcxOWI5ZWYxYmE5ZTEzNDQz
Li5lNmRlYTk2MTFmOWI0ODgwYTVhMTliOWFkMWUxYmRlNzFjMTg0Nzg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQg
V2ViQW5pbWF0aW9uOjp1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWsgZGlkU2VlaywgU3luY2hy
b25vdXNseU5vdGlmeSBzeW5jCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHN5bmNocm9u
b3VzbHkgbm90aWZ5IGlzIGZhbHNlLCBxdWV1ZSBhIG1pY3JvdGFzayB0byBydW4gZmluaXNoIG5v
dGlmaWNhdGlvbiBzdGVwcyBmb3IgYW5pbWF0aW9uIHVubGVzcyB0aGVyZQogICAgICAgICAgICAg
Ly8gaXMgYWxyZWFkeSBhIG1pY3JvdGFzayBxdWV1ZWQgdG8gcnVuIHRob3NlIHN0ZXBzIGZvciBh
bmltYXRpb24uCiAgICAgICAgICAgICBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNr
UGVuZGluZyA9IHRydWU7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1
ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVl
dWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKICAgICAgICAgICAgICAg
ICBpZiAobV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcpIHsKICAgICAg
ICAgICAgICAgICAgICAgbV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcg
PSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgZmluaXNoTm90aWZpY2F0aW9uU3RlcHMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKaW5kZXggN2Rh
NDZhNjE1MDRlZjI0ODE1YTY5NGRmYmExMmMyOGIxZWY0ZmU2Ni4uNjIxYjg5MDUxYmI0OGRiMDMw
MWVhODA0N2M3YWZlZmZiNjhjZGU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NUHJvbWlzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NUHJvbWlzZVByb3h5LmgKQEAgLTYwLDYgKzYwLDcgQEAgY2xhc3MgRE9NUHJvbWlzZVByb3h5
IHsKIAogdGVtcGxhdGU8PgogY2xhc3MgRE9NUHJvbWlzZVByb3h5PElETFZvaWQ+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01Qcm9taXNlUHJveHkoKSA9
IGRlZmF1bHQ7CiAgICAgfkRPTVByb21pc2VQcm94eSgpID0gZGVmYXVsdDsKQEAgLTg0LDYgKzg1
LDcgQEAgY2xhc3MgRE9NUHJvbWlzZVByb3h5PElETFZvaWQ+IHsKIC8vIEZvbnRGYWNlIGFuZCBG
b250RmFjZVNldC4KIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiBjbGFzcyBET01Qcm9taXNl
UHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB1c2luZyBSZXNvbHZlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHR5cGVu
YW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgKCk+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCBkYjBjMWRjNzZmOGEyODk3MDQ1ZWUy
Y2ZjOTE5MjNkNThkZjFiNmY5Li5jNWM0NzA2MWJmYWNhMWZjYTcyOGJlMjdiMGEyYjRhOWYwYjMw
MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9F
dmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEpTQzo6TWljcgogICAgIEpTRE9N
V2luZG93QmFzZSYgdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSY+KG9i
amVjdCk7CiAKICAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRl
KHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjpt
YWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1h
aW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgIGF1dG8gbWljcm90
YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVl
dWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBj
YWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCmluZGV4IDYyOTVmNTg0Y2ZlOGExNzI5ZGRm
NmIxOGQ3NzU0OWZkNDRjOWEwYmUuLmRiNWU3NzM0OTBiZWRmYmYzZTBjMTBjZjIzZDBhMzZjOGEz
YmRhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXRDdXN0b20uY3BwCkBAIC01NiwxMSArNTYsMTEgQEAgRXZlbnRUYXJnZXQqIEpTRXZlbnRUYXJn
ZXQ6OnRvV3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiBzdGQ6OnVuaXF1ZV9wdHI8SlNF
dmVudFRhcmdldFdyYXBwZXI+IGpzRXZlbnRUYXJnZXRDYXN0KFZNJiB2bSwgSlNWYWx1ZSB0aGlz
VmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGpzRHluYW1pY0Nhc3Q8SlNFdmVudFRh
cmdldCo+KHZtLCB0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxK
U0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVkKCksICp0YXJnZXQpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVk
KCksICp0YXJnZXQpOwogICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHZtLCB0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0
V3JhcHBlcj4od2luZG93LT53cmFwcGVkKCksICp3aW5kb3cpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4od2luZG93LT53cmFwcGVkKCksICp3aW5kb3cp
OwogICAgIGlmIChhdXRvKiBzY29wZSA9IHRvSlNXb3JrZXJHbG9iYWxTY29wZSh2bSwgdGhpc1Zh
bHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBw
ZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEpTRXZlbnRUYXJnZXRXcmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZDgzMTYwNGNiYWViODdmMDdkMTJl
YWRkYTRiZjA1MzFhNzBiYjQwMi4uOWJkNjY0NDYwMTcwNTQ5NWE5NGU3YjNmYWRmMDQ4ZjNjN2Iw
NDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3Qs
IFJlZjxKCiAKICAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRl
KHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwogICAgIGF1dG8mIGNvbnRleHQgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4
dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBt
aWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0
Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cAppbmRleCAxZDAwNTRjMjg5MmQ1MDEzZGYyNmFiZmZhM2UxYzJmNjdkZWU0ODE5Li5hMzUzNzg1
NWU3YTdkNGZkMmJkMmM0Yzg4YjdmYTdiNjI5NTU0YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTMzMDAsNyAr
MzMwMCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5Pj4gdHJhbnNmZXJBcnJheUJ1ZmZlCiAgICAgaWYgKGFycmF5QnVmZmVycy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjb250ZW50cyA9
IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1ZmZlcnMu
c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXplKCkpOwogCiAgICAgSGFzaFNldDxKU0M6OkFycmF5
QnVmZmVyKj4gdmlzaXRlZDsKICAgICBmb3IgKHNpemVfdCBhcnJheUJ1ZmZlckluZGV4ID0gMDsg
YXJyYXlCdWZmZXJJbmRleCA8IGFycmF5QnVmZmVycy5zaXplKCk7IGFycmF5QnVmZmVySW5kZXgr
KykgewpAQCAtMzQ1MSw3ICszNDUxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IHdhc21Nb2R1bGVzOwogI2Vu
ZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVk
QnVmZmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZl
cnMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICBhdXRvIGNv
ZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmc3RhdGUsIHZhbHVlLCBtZXNzYWdlUG9y
dHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICAgICAgd2FzbU1vZHVsZXMsIApAQCAtMzQ2OSw3ICszNDY5LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KEV4ZWNTdGF0ZSYKIAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXku
cmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQgPT0gU2VyaWFsaXphdGlvbkNvbnRleHQ6Oldv
cmtlclBvc3RNZXNzYWdlID8gV1RGTW92ZShzaGFyZWRCdWZmZXJzKSA6IG51bGxwdHIsIFdURk1v
dmUoaW1hZ2VCdWZmZXJzKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgICAgICAg
ICAsIHN0ZDo6bWFrZV91bmlxdWU8V2FzbU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKKyAgICAg
ICAgICAgICAgICAsIG1ha2VVbmlxdWU8V2FzbU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKICNl
bmRpZgogICAgICAgICAgICAgICAgICkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA1YzQ2NjI5NGJlZTU2YzIxYmYw
ZjYzZDE1YjBmOGRmMGYyN2EzYTBlLi40ZjRiMGNmM2I3ZWVjZGRkMDc4NzAyNTUyMDg4OTVlNDVm
YTJhMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaApAQCAtMTY0LDcgKzE2NCw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFTU0VSVChhcnJheUxlbmd0aCk7CiAKLSAgICBh
dXRvIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5PigpOworICAgIGF1dG8gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0g
bWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgd2hpbGUgKGFycmF5
TGVuZ3RoLS0pIHsKICAgICAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKaW5kZXggMjQ2ZjY0YTlmNjMyMmI1ODcwY2Ji
NjgyZWRiMmQ0ZWRiOTUzZWM3Yy4uM2IxMTI1MmFlNjRjYWYyZTRmZTczOWUzMWVlMTA5OTU0ZDU2
YTU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xp
ZW50RGF0YS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5v
cm1hbFdvcmxkKFZNKiB2bSkKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IG5ldyBK
U1ZNQ2xpZW50RGF0YSgqdm0pOwogICAgIHZtLT5jbGllbnREYXRhID0gY2xpZW50RGF0YTsgLy8g
flZNIGRlbGV0ZXMgdGhpcyBwb2ludGVyLgogICAgIAotICAgIHZtLT5oZWFwLmFkZE1hcmtpbmdD
b25zdHJhaW50KHN0ZDo6bWFrZV91bmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpj
bGllbnREYXRhKSk7CisgICAgdm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFpbnQobWFrZVVuaXF1
ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERhdGEpKTsKICAgICAgICAgCiAg
ICAgY2xpZW50RGF0YS0+bV9ub3JtYWxXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKCp2
bSwgdHJ1ZSk7CiAgICAgdm0tPm1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcg
V2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAxNmE3NmM0OTUy
OWE0YmI4NzFjYjY2Y2EzYWQ3NWEyZDc2YTgwNjU1Li5kMjM5ODU3YWEzYmRkZTlmZWI5Y2I4NzQw
ZmNmNWQ2NDllMzUwZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiAgICAgQVNTRVJUKG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5n
ZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9i
YWxTY29wZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9jb25z
b2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV93b3JrZXJHbG9i
YWxTY29wZSk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGll
bnQobV9jb25zb2xlQ2xpZW50LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19jbGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNz
LmNwcAppbmRleCAyOWM4MTg2ODM2ZWEwNTQxMWU4ZjFlZDY0MWMwNTcwY2U4MTc2ODE1Li5hYTU2
ZTJmZGU4NTU3N2FjZjljMDQ3NGM4OTg3N2Y0ZTBkNWM1MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2NsYXNzLmNwcApAQCAtODEsNyArODEsNyBAQCBNZXRob2QqIENDbGFzczo6bWV0aG9kTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAog
ICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+
KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAg
aWYgKG1faXNhLT5oYXNNZXRob2QgJiYgbV9pc2EtPmhhc01ldGhvZChvYmosIGlkZW50KSkgewot
ICAgICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q01ldGhvZD4oaWRlbnQpOwor
ICAgICAgICBhdXRvIG1ldGhvZCA9IG1ha2VVbmlxdWU8Q01ldGhvZD4oaWRlbnQpOwogICAgICAg
ICBDTWV0aG9kKiByZXQgPSBtZXRob2QuZ2V0KCk7CiAgICAgICAgIG1fbWV0aG9kcy5zZXQobmFt
ZS5pbXBsKCksIFdURk1vdmUobWV0aG9kKSk7CiAgICAgICAgIHJldHVybiByZXQ7CkBAIC0xMDMs
NyArMTAzLDcgQEAgRmllbGQqIENDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29uc3QgQ0luc3RhbmNlKiBp
bnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2Jq
ZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9pc2EtPmhhc1Byb3BlcnR5
ICYmIG1faXNhLT5oYXNQcm9wZXJ0eShvYmosIGlkZW50KSkgewotICAgICAgICBhdXRvIGZpZWxk
ID0gc3RkOjptYWtlX3VuaXF1ZTxDRmllbGQ+KGlkZW50KTsKKyAgICAgICAgYXV0byBmaWVsZCA9
IG1ha2VVbmlxdWU8Q0ZpZWxkPihpZGVudCk7CiAgICAgICAgIENGaWVsZCogcmV0ID0gZmllbGQu
Z2V0KCk7CiAgICAgICAgIG1fZmllbGRzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShmaWVsZCkp
OwogICAgICAgICByZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2pzYy9CcmlkZ2VKU0MuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgK
aW5kZXggZjJmNjIwODJhODA4YTE5ZjEwYTVkOTM1ZDkyMmI3NzNjMTIyMWMyOC4uMDRjZGRjZDI0
Y2FhODI5YzMyZTU2ZWMyNzNhZmJkMzUxZjI1NGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNj
L0JyaWRnZUpTQy5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFJvb3RPYmplY3Q7CiBjbGFzcyBS
dW50aW1lT2JqZWN0OwogCiBjbGFzcyBGaWVsZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNT
dGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZXRW
YWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25z
dCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNz
Lm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQppbmRleCBiODZm
NzUxYTBhNzEzOGJlMDA3NzZhNzhjYmMyYTZkNDVkZDM3NTAyLi5hM2Q4ZDMyZjI4ZGQ4MDU4YTRh
YjQ0MjczOTUzNDQwNzRmMjZjNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2NsYXNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
Y2xhc3MubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCBNZXRob2QqIE9iamNDbGFzczo6bWV0aG9kTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdAogICAgICAgICAg
ICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3Rvcjpv
YmpjTWV0aG9kU2VsZWN0b3JdOwogCiAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21h
cHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcqKW1ldGhvZE5hbWUuZ2V0KCldKSB8
fCAhc3RyY21wKG9iamNNZXRob2RTZWxlY3Rvck5hbWUsIGJ1ZmZlci5kYXRhKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KHRo
aXNDbGFzcywgb2JqY01ldGhvZFNlbGVjdG9yKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1ldGhv
ZCA9IG1ha2VVbmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3Ip
OwogICAgICAgICAgICAgICAgIG1ldGhvZFB0ciA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgICAg
ICAgICBtX21ldGhvZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShtZXRob2QpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTE4OSw3ICsxODksNyBAQCBGaWVsZCogT2JqY0NsYXNz
OjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5j
ZSkgY29ucwogICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlw
dE5hbWVGb3JLZXk6VVRGOEtleU5hbWVdOwogCiAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUg
JiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0
KCldKSB8fCBba2V5TmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5n
ZXQoKV0pIHsKLSAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilrZXlOYW1lKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIG5ld0ZpZWxkID0gbWFrZVVuaXF1ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBDRlN0
cmluZ1JlZilrZXlOYW1lKTsKICAgICAgICAgICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdldCgp
OwogICAgICAgICAgICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUo
bmV3RmllbGQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyMCw3ICsyMjAsNyBAQCBG
aWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIElu
c3RhbmNlKiBpbnN0YW5jZSkgY29ucwogICAgICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0g
W3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5Om9iamNJdmFyTmFtZV07CiAKICAgICAgICAg
ICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2Ug
TlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB8fCAhc3RyY21wKG9iamNJdmFyTmFtZSwganNO
YW1lLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqY0ZpZWxkPihvYmpjSVZhcik7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOwogICAgICAgICAg
ICAgICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBt
X2ZpZWxkQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCmluZGV4IGUwOGIwNDhlM2I1Njg0Mjk4Y2RlZmQ5M2ViOTE4ODM4OTE1NmY0MzguLjNi
OTNlMTg3ODM4NTRjMjQ0NDZlMWNmYTU3NTg0NjZmMGYwYTdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICAKICAgICBpZiAoW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3Vt
ZW50czopXSl7CiAgICAgICAgIE9iamNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2Jq
Y0NsYXNzKj4ob2JqY0luc3RhbmNlLT5nZXRDbGFzcygpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9kKHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhv
ZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21X
ZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpj
TWV0aG9kPiBmYWxsYmFja01ldGhvZChtYWtlVW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+
aXNhKCksIEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhB
cmd1bWVudHM6KSkpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3Rh
dGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+anNDYWxsZWUoKSktPnByb3Bl
cnR5TmFtZSgpOwogICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFt
ZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9i
amNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVS
TEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRV
UkxGaWx0ZXJzLmNwcAppbmRleCA4M2Q0NGUwNjdmYmRmNTQ3ZjZjODhiNjdhMzZlYjUzZjY5MTQ2
NmVlLi5mMTcxYTU4MjAzZjk4YWYxNTU0NzgwZTA1MTllMDRhMWU1M2EwYmQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVy
cy5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6cHJpbnQo
KSBjb25zdAogI2VuZGlmCiAKIENvbWJpbmVkVVJMRmlsdGVyczo6Q29tYmluZWRVUkxGaWx0ZXJz
KCkKLSAgICA6IG1fcHJlZml4VHJlZVJvb3Qoc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVy
dGV4PigpKQorICAgIDogbV9wcmVmaXhUcmVlUm9vdChtYWtlVW5pcXVlPFByZWZpeFRyZWVWZXJ0
ZXg+KCkpCiB7CiB9CiAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVy
czo6YWRkUGF0dGVybih1aW50NjRfdCBhY3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0
ZQogICAgICAgICBpZiAobmV4dEVudHJ5SW5kZXggIT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAg
ICAgIGxhc3RQcmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUtPmVkZ2VzW25leHRFbnRyeUluZGV4
XS5jaGlsZC5nZXQoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBsYXN0UHJlZml4VHJl
ZS0+ZWRnZXMuYXBwZW5kKFByZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0LmludGVybmVkKHRlcm0p
LCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCl9KSk7CisgICAgICAgICAgICBs
YXN0UHJlZml4VHJlZS0+ZWRnZXMuYXBwZW5kKFByZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0Lmlu
dGVybmVkKHRlcm0pLCBtYWtlVW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCl9KSk7CiAgICAgICAg
ICAgICBsYXN0UHJlZml4VHJlZSA9IGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5sYXN0KCkuY2hpbGQu
Z2V0KCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCmluZGV4IDhjN2Uz
ZjdkN2YxZTBkNTVhYWQ4OTM0YWJiYTVhYTcwZmI4Zjg1Y2YuLjc3ZmViNjBjNTBiYzhhNGYyNGIy
NzY5NmFkMTEwZDFlZGE3NDI4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC00OSw2ICs0
OSw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOwogLy8gMSkgSXQgc3RvcmVzIHRoZSBydWxl
cyBmb3IgZWFjaCBjb250ZW50IGV4dGVuc2lvbi4KIC8vIDIpIEl0IHByb3ZpZGVzIEFQSXMgZm9y
IHRoZSBXZWJDb3JlIGludGVyZmFjZXMgdG8gdXNlIHRob3NlIHJ1bGVzIGVmZmljaWVudGx5Lgog
Y2xhc3MgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICAvLyAtIFJ1bGUgbWFuYWdlbWVudCBpbnRlcmZhY2UuIFRoaXMg
Y2FuIGJlIHVzZWQgYnkgdXBwZXIgbGF5ZXIuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNy
eXB0by5jcHAKaW5kZXggOTZlMmQ2MzRiODkzYjM5OTMwNGE4YjJiMjg1ZTYxZjRlNDY5ZGMwYy4u
YjJhOWE3ODM1MjI3NzI4M2Y5NWQ4NDlkMDNiMTU2ZmNkYzcyMWRlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKQEAgLTExNSwzMSArMTE1LDMxIEBAIHN0YXRpYyBFeGNl
cHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1h
bGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpEZWNyeXB0OgogICAgICAgICBzd2l0
Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6UlNBRVNfUEtDUzFfdjFfNToKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QV9PQUVQOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENy
eXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfQ0JDOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DRkI6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8
Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkFFU19DVFI6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29u
dmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihzdGF0ZSwgdmFsdWUu
Z2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9u
IHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1z
ID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZh
dWx0OgpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
IHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpITUFDOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6
IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxn
b3JpdGhtRWNkc2FQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CkBAIC0xNjAsMTMgKzE2MCwx
MyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlm
aWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIg
PSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZHNhUGFy
YW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOiB7CiAgICAgICAgICAgICBhdXRv
IHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4o
c3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNh
UHNzUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgZGVmYXVsdDoKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAg
ICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihw
YXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTE5MSw3ICsxOTEs
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1z
ID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihzdGF0
ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FL
ZXlHZW5QYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgpA
QCAtMjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBp
ZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5o
YXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNo
ZWRLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0NUUjoKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9B
bAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzogewogICAg
ICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1B
ZXNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwot
ICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNL
ZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewpA
QCAtMjIzLDE0ICsyMjMsMTQgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAg
IGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1z
Lmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNL
ZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6IHsKICAgICAgICAg
ICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQ
YXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFt
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBkZWZhdWx0OgpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0
b0FsCiAKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRv
QWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4oc3RhdGUsIG5ld1ZhbHVlKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1
bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHBhcmFt
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkhLREY6IHsKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6UEJLREYyOiB7CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIEV4Y2VwdGlv
bk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXpl
Q3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigp
OwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVs
ZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI3OSw3ICsy
NzksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6SW1w
b3J0S2V5OgogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNToKLSAgICAgICAgICAgIHJl
c3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1z
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6CkBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGlj
IEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4g
bm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNl
cHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4
Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50
aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVk
SW1wb3J0UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgpAQCAtMjk4LDcg
KzI5OCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfQ0ZCOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19LVzoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VV
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsKICAg
ICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGht
SG1hY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKQEAgLTMwNywxOSArMzA3LDE5IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJl
bGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhh
c2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFy
YW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNv
bnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUu
Z2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9u
IHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlBCS0RGMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OlVud3JhcEtleToKICAgICAgICAgc3dp
dGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19LVzoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VV
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5
cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6IHsK
ICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3Jp
dGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGht
QWVzS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6
IHsKQEAgLTM1NCwxMiArMzU0LDEyIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
ICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBh
cmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1I
bWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RG
OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CkBAIC01MjAsMTYgKzUyMCwxNiBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+IGNyb3NzVGhyZWFkQ29weUltcG9ydFBhcmFtcyhjbwogewogICAgIHN3
aXRjaCAoaW1wb3J0UGFyYW1zLnBhcmFtZXRlcnNDbGFzcygpKSB7CiAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6Tm9uZTogewotICAgICAgICBhdXRvIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CiAg
ICAgICAgIHJlc3VsdC0+aWRlbnRpZmllciA9IGltcG9ydFBhcmFtcy5pZGVudGlmaWVyOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM6OkNsYXNzOjpFY0tleVBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxD
cnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5
KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6SG1hY0tleVBhcmFtczoK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBh
cmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJh
bXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtSG1hY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobUhtYWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM6OkNsYXNzOjpSc2FIYXNoZWRJbXBvcnRQYXJhbXM6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFt
cz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9y
dFBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlw
dG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRp
b25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
aW5kZXggZGJjY2M5MDBmMzM3NDhjZDIwNjdmNjBjYjI5MGMwYmQ2MDA2NTUzMy4uYTQyZjU2NGY4
MWZlMWYwZWEwOTQ0M2QxZjEwNTNjMWMzY2QwY2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMjE3LDEyICsyMTcsMTIgQEAgY2xhc3MgQ1NTQ2Fs
Y1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGNhdGVnb3J5KCkpIHsKICAgICAgICAgY2FzZSBDYWxjdWxh
dGlvbkNhdGVnb3J5OjpOdW1iZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDYWxjRXhwcmVzc2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9h
dFZhbHVlKCkpOwogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0aDoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihM
ZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJD
b3JlOjpGaXhlZCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Np
b25MZW5ndGg+KExlbmd0aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9u
RGF0YSksIFdlYkNvcmU6OkZpeGVkKSk7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29y
eTo6UGVyY2VudDoKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50TGVu
Z3RoOiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lv
bkxlbmd0aD4obV92YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwg
UGVyY2VudENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obV92YWx1ZS0+Y29udmVydFRvTGVuZ3Ro
PEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRh
KSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gT25seSB0eXBlcyB0aGF0IGNvdWxkIGJlIHBhcnQg
b2YgYSBMZW5ndGggZXhwcmVzc2lvbiBjYW4gYmUgY29udmVydGVkCiAgICAgICAgIC8vIHRvIGEg
Q2FsY0V4cHJlc3Npb25Ob2RlLiBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50TnVtYmVyIG1h
a2VzIG5vIHNlbnNlIGFzIGEgTGVuZ3RoLgpAQCAtNTIwLDcgKzUyMCw3IEBAIGNsYXNzIENTU0Nh
bGNPcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIG5vZGVzLnVuY2hlY2tlZEFw
cGVuZChXVEZNb3ZlKG5vZGUpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShub2RlcyksIG1fb3BlcmF0
b3IpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4o
V1RGTW92ZShub2RlcyksIG1fb3BlcmF0b3IpOwogICAgIH0KIAogICAgIGRvdWJsZSBkb3VibGVW
YWx1ZSgpIGNvbnN0IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVT
aGVldHMuY3BwCmluZGV4IGM0NGNlYmM1MTIwZWQ4MzI2ZDlhMWIyYTY1NmI5MzY3YjZlMTkxMjgu
LmU1YWU4Yjc3YTUxNGYwOWMzYjQ5NDQxYjU2MmY1YzJhMWVjNzUxNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCkBAIC0xNjcsMTEgKzE2NywxMSBA
QCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogICAg
ICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwotICAgICAgICBkZWZhdWx0UXVpcmtzU3R5bGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgICAgICBkZWZhdWx0
UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIH0KIAot
ICAgIGRlZmF1bHRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7
Ci0gICAgZGVmYXVsdFByaW50U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVs
ZWFzZSgpOworICAgIGRlZmF1bHRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNl
KCk7CisgICAgZGVmYXVsdFByaW50U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFz
ZSgpOwogICAgIG1lZGlhUXVlcnlTdHlsZVNoZWV0ID0gJlN0eWxlU2hlZXRDb250ZW50czo6Y3Jl
YXRlKENTU1BhcnNlckNvbnRleHQoVUFTaGVldE1vZGUpKS5sZWFrUmVmKCk7CiAKICAgICAvLyBT
dHJpY3QtbW9kZSBydWxlcy4KQEAgLTE5MCwxMCArMTkwLDEwIEBAIHZvaWQgQ1NTRGVmYXVsdFN0
eWxlU2hlZXRzOjpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKICAgICBBU1NFUlQoIWRlZmF1bHRT
dHlsZSk7CiAgICAgQVNTRVJUKCFzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCk7CiAKLSAgICBkZWZh
dWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRl
ZmF1bHRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgLy8gVGhl
cmUgYXJlIG5vIG1lZGlhLXNwZWNpZmljIHJ1bGVzIGluIHRoZSBzaW1wbGUgZGVmYXVsdCBzdHls
ZS4KICAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IGRlZmF1bHRTdHlsZTsKLSAgICBkZWZhdWx0UXVp
cmtzU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRl
ZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAKICAg
ICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChzaW1wbGVVc2VyQWdlbnRT
dHlsZVNoZWV0LCBzdHJsZW4oc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgIGRlZmF1
bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKnNpbXBsZURlZmF1bHRTdHlsZVNoZWV0LCBzY3Jl
ZW5FdmFsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggNzcwOWI1ZGVhZmJm
ZTlmOWFiMTFhYzA3N2M2MTlkNzk0ZDE2NDJmMi4uNjQ2YzE0YTExYWM2NDViOTkyNjE0OWYyOWU5
ODAwYzRjNzI2N2JjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC03NywxMCAr
NzcsMTAgQEAgdm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9u
dEZhY2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgRG8KICAgICAgICAgICAgIGJvb2wgYWxsb3dE
b3dubG9hZGluZyA9IGZvdW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25s
b2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCgpKTsKICAgICAgICAgICAgIGlmIChhbGxvd0Rvd25s
b2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBkb2N1bWVudCkgewogICAgICAg
ICAgICAgICAgIGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KGRv
Y3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRv
d1RyZWUpKQotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENT
U0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsK
KyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJj
ZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxD
U1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwgZm9u
dEZhY2VFbGVtZW50KTsKKyAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZh
Y2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxl
bWVudCk7CiAKICAgICAgICAgaWYgKHNvdXJjZSkKICAgICAgICAgICAgIGZvbnRGYWNlLmFkb3B0
U291cmNlKFdURk1vdmUoc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNw
cAppbmRleCAwNWUzYTNmNmUyMWJjOTI4MTc4NTU2OWExNGFhNTBmZjUyZTRhMjcwLi4xOGU4MzRk
NjkwYTZlYjUxMDFkYzkwYzhkZTVkYjVlN2ExYjBjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNldC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0Ojpl
bnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29uc3QgU3RyaW5nJiBmYW1p
bAogICAgICAgICBmYW1pbHlMaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVGb250RmFtaWx5VmFsdWUoZmFtaWx5TmFtZSkpOwogICAgICAgICBmYWNlLT5zZXRGYW1p
bGllcyhmYW1pbHlMaXN0LmdldCgpKTsKICAgICAgICAgZmFjZS0+c2V0Rm9udFNlbGVjdGlvbkNh
cGFiaWxpdGllcyhpdGVtKTsKLSAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2Uoc3RkOjptYWtlX3Vu
aXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOworICAgICAg
ICBmYWNlLT5hZG9wdFNvdXJjZShtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmYWNlLmdl
dCgpLCBmYW1pbHlOYW1lKSk7CiAgICAgICAgIEFTU0VSVCghZmFjZS0+Y29tcHV0ZUZhaWx1cmVT
dGF0ZSgpKTsKICAgICAgICAgZmFjZXMuYXBwZW5kKFdURk1vdmUoZmFjZSkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKaW5kZXggZGU2ZjM5ZDNmNWQ4NzMxZDk5
ZTVlYjNjOTY4ZTI5YWQxZWFjYmZlNi4uYzZjNWMzOTU0MGE1YzUwNWNkZjRkNTljNzQ2YzM5MTg1
YzllMDNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBDU1NSdWxlKiBDU1NHcm91cGluZ1J1bGU6Oml0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0CiBDU1NSdWxlTGlzdCYgQ1NTR3JvdXBpbmdSdWxlOjpjc3NSdWxlcygpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NT
T01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTR3JvdXBpbmdS
dWxlPj4oY29uc3RfY2FzdDxDU1NHcm91cGluZ1J1bGUmPigqdGhpcykpOworICAgICAgICBtX3J1
bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTR3JvdXBp
bmdSdWxlPj4oY29uc3RfY2FzdDxDU1NHcm91cGluZ1J1bGUmPigqdGhpcykpOwogICAgIHJldHVy
biAqbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IGZmZGQzZDBhYTY1N2YyNWVhZjMxZDU3MGM1
ODY4ZWQ1MzA5ZTJlZmQuLjU1NTFmMmM2OTE3ZDAzMzA3MjZhY2RmODEwOTFhOTFmYWI0ZTBiNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAg
LTExMCw3ICsxMTAsNyBAQCBHZW5lcmF0ZWRJbWFnZSogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6
Y2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplKQogdm9pZCBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplLCBHZW5lcmF0ZWRJ
bWFnZSYgaW1hZ2UpCiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlcy5jb250YWlucyhzaXplKSk7Ci0g
ICAgbV9pbWFnZXMuYWRkKHNpemUsIHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkR2VuZXJhdGVkSW1h
Z2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOworICAgIG1faW1hZ2VzLmFkZChzaXplLCBtYWtlVW5p
cXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKIH0KIAogdm9p
ZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEZsb2F0
U2l6ZSBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IGM5
MDk4MzJkYTBlNTE5MDI1MzUxM2EzOTgzMTkxYTdjMmYzOTMwMDUuLjZmMWViMzM4NmQ5ZmJjNzJk
NDQzNzg1ZDFkMTljNGRkOGM1YzM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVz
UnVsZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBDU1NLZXlmcmFtZVJ1bGUqIENTU0tleWZyYW1l
c1J1bGU6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiBDU1NSdWxlTGlzdCYgQ1NTS2V5ZnJh
bWVzUnVsZTo6Y3NzUnVsZXMoKQogewogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikK
LSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNT
U1J1bGVMaXN0PENTU0tleWZyYW1lc1J1bGU+PigqdGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RD
U1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNSdWxl
Pj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDQ4MGE4OTg1MjM3YWRhOTBhMTE3OGUw
YjI3OWUwZTY2ODA3ZTMzNDEuLmM4OGQxZWRjOTNiN2E2YzgzZjIxNzdiYWM3NjdmOWI3ODJlZTc1
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMyOSw3ICszMjksNyBA
QCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKCkKICAgICBpZiAo
IWNhbkFjY2Vzc1J1bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghbV9y
dWxlTGlzdENTU09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0
ZDo6bWFrZV91bmlxdWU8U3R5bGVTaGVldENTU1J1bGVMaXN0Pih0aGlzKTsKKyAgICAgICAgbV9y
dWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8U3R5bGVTaGVldENTU1J1bGVMaXN0Pih0
aGlzKTsKICAgICByZXR1cm4gbV9ydWxlTGlzdENTU09NV3JhcHBlci5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAppbmRleCA2NWEyZmRmOGRmYWNi
NGQ3ZjcxZDc2MWNiMjE2NmIxYTkyODRjMDcwLi45MTRiZGU0YTJkZTlhYTIxMDZjMDEwNjNiODA4
ZDljYTRmZmY2ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRX
b3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNw
cApAQCAtNDUsNyArNDUsNyBAQCBET01DU1NQYWludFdvcmtsZXQqIERPTUNTU1BhaW50V29ya2xl
dDo6ZnJvbShET01DU1NOYW1lc3BhY2UmIGNzcykKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RE9NQ1NTUGFpbnRXb3JrbGV0Kj4oU3VwcGxlbWVudDxET01DU1NOYW1lc3Bh
Y2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01DU1NQ
YWludFdvcmtsZXQ+KGNzcyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlx
dWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3MpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAppbmRleCA3ZWNkOTNkN2RjM2Q0
MzJlYWY4MmJjOTU2ZTYxZDQ4OWE1MTA2MjViLi4wZGY2YWFlOTZmMGUxYzcwYjM3NTU2MTY0OWVl
MzVkMjhlYjRjMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0
ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lz
dGVyQ3VzdG9tUHJvcGVydHkuY3BwCkBAIC04NCw3ICs4NCw3IEBAIERPTUNTU1JlZ2lzdGVyQ3Vz
dG9tUHJvcGVydHkqIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20oRE9NQ1NTTmFt
ZXNwYWNlCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1JlZ2lz
dGVyQ3VzdG9tUHJvcGVydHkqPihTdXBwbGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZyb20oJmNz
cywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3VzdG9t
UHJvcGVydHk+KGNzcyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8
RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eT4oY3NzKTsKICAgICAgICAgc3VwcGxlbWVudCA9
IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmY3NzLCBzdXBwbGVtZW50
TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RG9jdW1lbnRSdWxlU2V0cy5jcHAKaW5kZXggZDg1OTZmZDFiMjQ1OWRlMDdlMWM4OTljYzA3OWZj
MTk4NTExNjVlOS4uODJiN2ZjYzMwZTU4Mjc0OTkyMDJlMjhiODMwODZjZjBmYTQ0YWM1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBi
b29sIERvY3VtZW50UnVsZVNldHM6OnNfaXNJbnZhbGlkYXRpbmdTdHlsZVdpdGhSdWxlU2V0cyB7
IGZhbHNlIH07CiBEb2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIpCiAgICAgOiBtX3N0eWxlUmVzb2x2ZXIoc3R5bGVSZXNvbHZlcikK
IHsKLSAgICBtX2F1dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAg
IG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV9hdXRob3JTdHls
ZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNlckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQo
KSBjb25zdAogCiAgICAgLy8gTWVkaWEgcXVlcmllcyBvbiB1c2VyIGFnZW50IHNoZWV0IG5lZWQg
dG8gZXZhbHVhdGVkIGluIGRvY3VtZW50IGNvbnRleHQuIFRoZXkgYmVoYXZlIGxpa2UgYXV0aG9y
IHNoZWV0cyBpbiB0aGlzIHJlc3BlY3QuCiAgICAgYXV0byYgbWVkaWFRdWVyeUV2YWx1YXRvciA9
IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7Ci0gICAgbV91c2VyQWdlbnRN
ZWRpYVF1ZXJ5U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV91c2Vy
QWdlbnRNZWRpYVF1ZXJ5U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV91c2Vy
QWdlbnRNZWRpYVF1ZXJ5U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpDU1NEZWZhdWx0U3R5bGVT
aGVldHM6Om1lZGlhUXVlcnlTdHlsZVNoZWV0LCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCAmbV9zdHls
ZVJlc29sdmVyKTsKIAogICAgIC8vIFZpZXdwb3J0IGRlcGVuZGVudCBxdWVyaWVzIGFyZSBjdXJy
ZW50bHkgdG9vIGluZWZmaWNpZW50IHRvIGFsbG93IG9uIFVBIHNoZWV0LgpAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5bGUoKQogewogICAg
IGF1dG8mIGV4dGVuc2lvblN0eWxlU2hlZXRzID0gbV9zdHlsZVJlc29sdmVyLmRvY3VtZW50KCku
ZXh0ZW5zaW9uU3R5bGVTaGVldHMoKTsKICAgICBhdXRvJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yID0g
bV9zdHlsZVJlc29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3IoKTsKLSAgICBhdXRvIHRlbXBVc2Vy
U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgYXV0byB0ZW1wVXNlclN0
eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYWdl
VXNlclNoZWV0ID0gZXh0ZW5zaW9uU3R5bGVTaGVldHMucGFnZVVzZXJTaGVldCgpKQogICAgICAg
ICB0ZW1wVXNlclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYWdlVXNlclNoZWV0LT5jb250ZW50
cygpLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCAmbV9zdHlsZVJlc29sdmVyKTsKICAgICBjb2xsZWN0
UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGV4dGVuc2lvblN0eWxlU2hlZXRzLmluamVjdGVkVXNl
clN0eWxlU2hlZXRzKCksICp0ZW1wVXNlclN0eWxlLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCBtX3N0
eWxlUmVzb2x2ZXIpOwpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMpCiAg
ICAgc2l6ZV90IHNpemUgPSBydWxlcy5zaXplKCk7CiAgICAgaWYgKCFzaXplKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVT
ZXQ+KCk7CisgICAgYXV0byBydWxlU2V0ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBydWxlU2V0LT5hZGRSdWxl
KHJ1bGVzW2ldLnJ1bGUsIHJ1bGVzW2ldLnNlbGVjdG9ySW5kZXgsIHJ1bGVzW2ldLnNlbGVjdG9y
TGlzdEluZGV4KTsKICAgICBydWxlU2V0LT5zaHJpbmtUb0ZpdCgpOwpAQCAtMTI4LDcgKzEyOCw3
IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVj
dG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMpCiB2b2lkIERvY3VtZW50UnVsZVNldHM6OnJlc2V0QXV0
aG9yU3R5bGUoKQogewogICAgIG1faXNBdXRob3JTdHlsZURlZmluZWQgPSB0cnVlOwotICAgIG1f
YXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRob3JT
dHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxl
QXV0b1Nocmlua1RvRml0KCk7CiB9CiAKQEAgLTE5NSwxMiArMTk1LDEyIEBAIHN0YXRpYyBWZWN0
b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0
IEF0b21TdHJpbmcmCiAgICAgICAgICAgICBhdXRvIGFycmF5SW5kZXggPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oKmZlYXR1cmUubWF0Y2hFbGVtZW50KTsKICAgICAgICAgICAgIGF1dG8mIHJ1bGVT
ZXQgPSBtYXRjaEVsZW1lbnRBcnJheVthcnJheUluZGV4XTsKICAgICAgICAgICAgIGlmICghcnVs
ZVNldCkKLSAgICAgICAgICAgICAgICBydWxlU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpOworICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAg
ICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKGZlYXR1cmUucnVsZSwgZmVhdHVyZS5zZWxlY3Rv
ckluZGV4LCBmZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICAgICAgICAgIGlmIChmZWF0
dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKQogICAgICAgICAgICAgICAgIGludmFsaWRhdGlvblNl
bGVjdG9yQXJyYXlbYXJyYXlJbmRleF0uYXBwZW5kKGZlYXR1cmUuaW52YWxpZGF0aW9uU2VsZWN0
b3IpOwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKKyAgICAgICAgYXV0
byBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1
bGVTZXQ+PigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0Y2hFbGVtZW50
QXJyYXkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChtYXRjaEVsZW1lbnRBcnJheVtp
XSkKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25SdWxlU2V0cy0+YXBwZW5kKHsgc3RhdGlj
X2Nhc3Q8TWF0Y2hFbGVtZW50PihpKSwgV1RGTW92ZShtYXRjaEVsZW1lbnRBcnJheVtpXSksIFdU
Rk1vdmUoaW52YWxpZGF0aW9uU2VsZWN0b3JBcnJheVtpXSkgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAppbmRleCAwNWQzODVhNTU4YzQ4YzQ4ZWU4ZGE5
MGY2YTE4Y2I0ZTc1YTZhOTVhLi4wNWI0NTdmZDY4MjBjNjdmMGUwZmJlOTMwODdiOGNlZjA4Mjll
YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKQEAg
LTI5MSw3ICsyOTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+
IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZQogICAgIGlmIChtX21hdGNo
ZWRSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHJ1bGVE
YXRhVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4oKTsK
KyAgICBhdXRvIHJ1bGVEYXRhVmVjdG9yID0gbWFrZVVuaXF1ZTxSdWxlU2V0OjpSdWxlRGF0YVZl
Y3Rvcj4oKTsKICAgICBydWxlRGF0YVZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX21h
dGNoZWRSdWxlcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBtX21hdGNo
ZWRSdWxlcykKICAgICAgICAgcnVsZURhdGFWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCgqbWF0Y2hl
ZFJ1bGUucnVsZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggMjEyMjQ1ZGVkY2Fm
Zjk1NmFkNDQxMDdiOWViNDRjYjQxMzI4YWFkYi4uZTFiMWFmMjBmYjExYWUzZGZlZTE5MmNhYzky
ZTYyY2RlYTU1N2RjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgcG9wdWxhdGVGb250RmFjZVdpdGhB
cnJheUJ1ZmZlcihDU1NGb250RmFjZSYgZm9udEZhY2UsIFJlZjxKU0M6OkFycmF5QnVmZmVyVmll
dz4mJiBhcnJheUJ1ZmZlclZpZXcpCiB7Ci0gICAgYXV0byBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxw
dHIsIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CisgICAgYXV0byBzb3VyY2UgPSBtYWtlVW5p
cXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxw
dHIsIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgZm9udEZhY2UuYWRvcHRTb3VyY2Uo
V1RGTW92ZShzb3VyY2UpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDNi
MjBkNDEzMzM3NTMzZDZjYjNjNThjYjNkMTA0ZjBmMDRiNWU2MTkuLmUxZTFkNzIxMjExZTZkZTAx
YThhODZlMGQ0MGQ4NTI4OTk3YjM1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zMjksNyArMzI5LDcgQEAg
UmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b246OndyYXBGb3JEZXByZWNhdGVkQ1MKICAgICAvLyBUaGUgbWFwIGlzIGhlcmUgdG8gbWFpbnRh
aW4gdGhlIG9iamVjdCBpZGVudGl0eSBvZiB0aGUgQ1NTVmFsdWVzIG92ZXIgbXVsdGlwbGUgaW52
b2NhdGlvbnMuCiAgICAgLy8gRklYTUU6IEl0IGlzIGxpa2VseSB0aGF0IHRoZSBpZGVudGl0eSBp
cyBub3QgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eSBhbmQgdGhpcyBjb2RlIHNob3Vs
ZCBiZSByZW1vdmVkLgogICAgIGlmICghbV9jc3NvbVZhbHVlV3JhcHBlcnMpCi0gICAgICAgIG1f
Y3Nzb21WYWx1ZVdyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPENTU1ZhbHVlKiwg
V2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4+PigpOworICAgICAgICBtX2Nzc29tVmFsdWVX
cmFwcGVycyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRl
ZENTU09NVmFsdWU+Pj4oKTsKICAgICAKICAgICBhdXRvJiBjbG9uZWRWYWx1ZSA9IG1fY3Nzb21W
YWx1ZVdyYXBwZXJzLT5hZGQoaW50ZXJuYWxWYWx1ZSwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01W
YWx1ZT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmIChjbG9uZWRWYWx1ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZUZlYXR1cmUuY3BwCmluZGV4IGRmZmRhNmY1MWRmOTU0ZDIwNmYwM2QwYzczNTYwZGRh
MzkyZDE0MzAuLjQ0ZWViMWQ3MDJkMmY5ZGNiNmIxMmI1NTI3ODE1NjdmZDAwZDJlNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUnVsZUZl
YXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAKICAg
ICBmb3IgKGF1dG8mIG5hbWVBbmRNYXRjaCA6IHNlbGVjdG9yRmVhdHVyZXMuY2xhc3Nlcykgewog
ICAgICAgICBjbGFzc1J1bGVzLmVuc3VyZShuYW1lQW5kTWF0Y2guZmlyc3QsIFtdIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAg
ICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxl
KCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgo
KSwgbmFtZUFuZE1hdGNoLnNlY29uZCkpOwogICAgICAgICBpZiAobmFtZUFuZE1hdGNoLnNlY29u
ZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBjbGFzc2VzQWZmZWN0aW5nSG9z
dC5hZGQobmFtZUFuZE1hdGNoLmZpcnN0KTsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFJ1bGVG
ZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAg
ICAgICBhdXRvKiBzZWxlY3RvciA9IHNlbGVjdG9yQW5kTWF0Y2guZmlyc3Q7CiAgICAgICAgIGF1
dG8gbWF0Y2hFbGVtZW50ID0gc2VsZWN0b3JBbmRNYXRjaC5zZWNvbmQ7CiAgICAgICAgIGF0dHJp
YnV0ZVJ1bGVzLmVuc3VyZShzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKSwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3JJbmRl
eCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBtYXRjaEVsZW1lbnQsIHNlbGVjdG9y
KSk7CiAgICAgICAgIGlmIChtYXRjaEVsZW1lbnQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAg
ICAgICAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKHNlbGVjdG9yLT5hdHRyaWJ1dGUo
KS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKQEAgLTIwMSwxNCArMjAx
LDE0IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3Ro
ZXIpCiAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmRWZWN0b3Iob3RoZXIudW5jb21t
b25BdHRyaWJ1dGVSdWxlcyk7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5j
bGFzc1J1bGVzKSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5rZXks
IFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVh
dHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1
cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFs
dWVQYWlyLnZhbHVlKTsKICAgICB9CiAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVy
LmNsYXNzZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmNsYXNzZXNBZmZlY3RpbmdIb3N0
LmVuZCgpKTsKIAogICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuYXR0cmlidXRl
UnVsZXMpIHsKICAgICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5rZXks
IFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVh
dHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1
cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFs
dWVQYWlyLnZhbHVlKTsKICAgICB9CiAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKG90
aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmF0dHJpYnV0ZXNBZmZl
Y3RpbmdIb3N0LmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCBmYTZiOTEyMDIxM2Vj
NTRiYjY1OTAzY2ZhZTY2OWJkNDY2ZmJiMDI3Li4zYmJiYmZlYmNhMDA5OTc4MmFmMzk4MWViODY3
MzZjZTY4MDM2ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAg
dm9pZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoY29uc3QgQXRvbVN0cmluZyYga2V5LCBBdG9tUnVs
ZU1hcCYgbWFwLCBjb25zdCBSdWxlRGEKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIHJ1bGVz
ID0gbWFwLmFkZChrZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXJ1bGVz
KQotICAgICAgICBydWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZURhdGFWZWN0b3I+KCk7Cisg
ICAgICAgIHJ1bGVzID0gbWFrZVVuaXF1ZTxSdWxlRGF0YVZlY3Rvcj4oKTsKICAgICBydWxlcy0+
YXBwZW5kKHJ1bGVEYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oCmluZGV4IDY5YWY1NTgxNTY1NGJlMzIwZjFhOWZkNzFhNzc2NjdkOTI5M2ZhOTcu
Ljg4Nzc1YWQ3YmE4YWE1OTBhZDdiZjcyYTM3ZDNiNWY2NWI1ZDJkNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTM0OCw5ICszNDgsOSBAQCBpbmxp
bmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVz
TGVuZ3RoKGNvbnN0IExlbmd0aAogICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2FsYyBleHByZXNz
aW9uOiBjYWxjKDEwMCUgLSBsZW5ndGgpCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYWxj
RXhwcmVzc2lvbk5vZGU+PiBsZW5ndGhzOwogICAgIGxlbmd0aHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSgyKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENh
bGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOwotICAgIGxlbmd0aHMu
dW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxl
bmd0aCkpOwotICAgIGF1dG8gb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uT3Bl
cmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKKyAgICBs
ZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihM
ZW5ndGgoMTAwLCBQZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VV
bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOworICAgIGF1dG8gb3AgPSBtYWtl
VW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3Bl
cmF0b3I6OlN1YnRyYWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggOWExOTFkMTdkZDhlM2VkY2MxYzEzMGMyNjU5MGUw
Y2E2ZjRlMzZhMy4uYzVjMmJmNWQwZjVmYzc5MTBhZmYxNjI1OTk5MGM0Mzg2NjBjMTQyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtODEzLDcgKzgxMyw3IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1
ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2
ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKnNoYWRvd1ZhbHVlLmNvbG9yKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmNvbG9yKCk7
Ci0gICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4o
SW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENT
U1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9y
Ojp0cmFuc3BhcmVudCk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IG1ha2VVbmlxdWU8U2hh
ZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHByb3Bl
cnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xv
ciA6IENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9w
ZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRl
eHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0
aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQpAQCAt
ODI5LDcgKzgyOSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsVGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sCiAKIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyKQogewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRv
dyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSA/IHN0ZDo6bWFrZV91
bmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRv
dygpKSA6IG51bGxwdHIpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRv
dyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSA/IG1ha2VVbmlxdWU8
U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpKSA6
IG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1
ZSkKQEAgLTg0NCw3ICs4NDQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5pdGlhbEJveFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdgogCiBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEJveFNoYWRvdyhTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94
U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNo
YWRvdygpKSA6IG51bGxwdHIpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hh
ZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBtYWtlVW5pcXVl
PFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpKSA6
IG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVl
KQpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlQ29udGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAgICAgICAg
ICAgQ1NTVmFsdWVJRCBsaXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlSWRl
bnQoKTsKICAgICAgICAgICAgIGlmIChsaXN0U3R5bGVJZGVudCAhPSBDU1NWYWx1ZU5vbmUpCiAg
ICAgICAgICAgICAgICAgbGlzdFN0eWxlVHlwZSA9IHN0YXRpY19jYXN0PExpc3RTdHlsZVR5cGU+
KGxpc3RTdHlsZUlkZW50IC0gQ1NTVmFsdWVEaXNjKTsKLSAgICAgICAgICAgIGF1dG8gY291bnRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXJWYWx1ZS0+aWRlbnRp
ZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpKTsKKyAgICAg
ICAgICAgIGF1dG8gY291bnRlciA9IG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXJW
YWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRv
cigpKTsKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudChXVEZN
b3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAg
ICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggNGNm
NmM2ZjdhYjdkZjlmYzA0MzM0YmJlOGRkMDVhM2I1NTllOTM1Yy4uMTljYjAzM2Q3MGJiNWE4OTY4
NjU1NzI3NTViOTZiOTc3MDUxY2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5jcHAKQEAgLTE1MzAsNyArMTUzMCw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24mIE11dGFibGVT
dHlsZVByb3BlcnRpZXM6OmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKQogICAgICAgICBBU1NF
UlQoIW1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVtZW50KCkpOwogICAgICAgICByZXR1cm4gKm1f
Y3Nzb21XcmFwcGVyOwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcyk7CisgICAgbV9jc3NvbVdy
YXBwZXIgPSBtYWtlVW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiB9CiAKQEAgLTE1NDAsNyArMTU0MCw3IEBA
IENTU1N0eWxlRGVjbGFyYXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlubGlu
ZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5CiAgICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+
cGFyZW50RWxlbWVudCgpID09ICZwYXJlbnRFbGVtZW50KTsKICAgICAgICAgcmV0dXJuICptX2Nz
c29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKKyAgICBt
X2Nzc29tV3JhcHBlciA9IG1ha2VVbmlxdWU8SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRo
aXMsIHBhcmVudEVsZW1lbnQpOwogICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAzYTUyYzM2MTk5YTc5YTI1ZTA5YzAx
ZDhmYTBjNTBhZWZmNjgyYmI1Li5kZTRkYTVmNTUxMjk5MDkzMWRhODZjNWM3ZTgzYmNiMTAxODA4
YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNzE1LDcgKzE3MTUs
NyBAQCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNh
c2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKAogICAgICAgICBpZiAoYXV0aG9yUm9sbGJhY2sp
CiAgICAgICAgICAgICByZXR1cm4gYXV0aG9yUm9sbGJhY2s7CiAKLSAgICAgICAgYXV0byBuZXdB
dXRob3JSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0
aW9uLCB3cml0aW5nTW9kZSkpOworICAgICAgICBhdXRvIG5ld0F1dGhvclJvbGxiYWNrKG1ha2VV
bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CiAKICAg
ICAgICAgLy8gVGhpcyBzcGVjaWFsIHJvbGxiYWNrIGNhc2NhZGUgY29udGFpbnMgVUEgcnVsZXMg
YW5kIHVzZXIgcnVsZXMgYnV0IG5vIGF1dGhvciBydWxlcy4KICAgICAgICAgbmV3QXV0aG9yUm9s
bGJhY2stPmFkZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5m
aXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKQEAgLTE3
MzIsNyArMTczMiw3IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVS
ZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgICAgIGlmICh1c2Vy
Um9sbGJhY2spCiAgICAgICAgICAgICByZXR1cm4gdXNlclJvbGxiYWNrOwogCi0gICAgICAgIGF1
dG8gbmV3VXNlclJvbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3VXNlclJvbGxiYWNrKG1h
a2VVbmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CiAK
ICAgICAgICAgLy8gVGhpcyBzcGVjaWFsIHJvbGxiYWNrIGNhc2NhZGUgY29udGFpbnMgb25seSBV
QSBydWxlcy4KICAgICAgICAgbmV3VXNlclJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVzKG1hdGNo
UmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdl
cy5sYXN0VUFSdWxlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFr
ZXByb3AucGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKaW5kZXggOTk3YzRjMDM2
N2RkNWQwZDY0NWQ1ZWRmNTFlZWM0YmZiMGMzMjEwNS4uMDJhMzZlZmUwNWQzY2M5ZmU5N2RkNWMw
ZTI1OTNhZTc5ZmQ2YzJjNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9w
LnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtODExLDcgKzgxMSw3
IEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSBu
dWxscHRyO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGF1dG8qIHBh
cmVudCA9ICZzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlv
bigkbmFtZSkgLiAiKCk7IHBhcmVudCAmJiBwYXJlbnQtPiIgLiAkdGVzdEZ1bmN0aW9uIC4gIigp
OyBwYXJlbnQgPSBwYXJlbnQtPm5leHQoKSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgaWYgKCFjaGlsZCkge1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICIgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxs
TGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CisgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KG1ha2VV
bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOwog
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgY2hpbGQgPSBwcmV2aW91c0No
aWxkLT5uZXh0KCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICB9XG4i
OwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBjaGlsZC0+IiAuICRzZXR0ZXIg
LiAiKHBhcmVudC0+IiAuICRnZXR0ZXIgLiAiKCkpO1xuIjsKQEAgLTgzNyw3ICs4MzcsNyBAQCBz
dWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eVZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgLy8gV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBh
IGxheWVyLCBjcmVhdGluZyBuZXcgbGF5ZXJzIGFzIG5lZWRlZC5cbiI7CiAgICRzZXR0ZXJDb250
ZW50IC49ICRpbmRlbnQgLiAiICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVl
TGlzdD4odmFsdWUpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAg
ICAgaWYgKCFjaGlsZCkge1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
ICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVy
PigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQobWFrZVVu
aXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgY2hpbGQgPSBwcmV2aW91
c0NoaWxkLT5uZXh0KCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAg
ICAgfVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGVNYXAoKS0+IiAuIGdldEZpbGxMYXllck1hcGZ1bmN0aW9uKCRuYW1lKSAuICIo
IiAuICRDU1NQcm9wZXJ0eUlkIC4gIiwgKmNoaWxkLCBpdGVtKTtcbiI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAppbmRleCA2N2NmZGY1NmQ2MjUwNTNhMDEx
MTk5MmQ3MTFmOGM4ZmZkYjk1ZGMyLi5kNzVlNGZjOTJjNzdiMDdiMWU1M2RhZDMzODdlNTUxYTM5
MGMyNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgQ1NTUGFyc2VySW1wbDo6Q1NTUGFyc2VySW1wbChjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHN0cmkKICAgICAsIG1fc3R5bGVT
aGVldChzdHlsZVNoZWV0KQogICAgICwgbV9vYnNlcnZlcldyYXBwZXIod3JhcHBlcikKIHsKLSAg
ICBtX3Rva2VuaXplciA9IHdyYXBwZXIgPyBzdGQ6Om1ha2VfdW5pcXVlPENTU1Rva2VuaXplcj4o
c3RyaW5nLCAqd3JhcHBlcikgOiBzdGQ6Om1ha2VfdW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5n
KTsKKyAgICBtX3Rva2VuaXplciA9IHdyYXBwZXIgPyBtYWtlVW5pcXVlPENTU1Rva2VuaXplcj4o
c3RyaW5nLCAqd3JhcHBlcikgOiBtYWtlVW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nKTsKICAg
ICBpZiAoY29udGV4dC5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgJiYgIXdyYXBwZXIgJiYgc3R5
bGVTaGVldCAmJiBydWxlUGFyc2luZyA9PSBDU1NQYXJzZXI6OlJ1bGVQYXJzaW5nOjpEZWZlcnJl
ZCkKICAgICAgICAgbV9kZWZlcnJlZFBhcnNlciA9IENTU0RlZmVycmVkUGFyc2VyOjpjcmVhdGUo
Y29udGV4dCwgc3RyaW5nLCAqc3R5bGVTaGVldCk7CiB9CkBAIC0yODIsOSArMjgyLDkgQEAgQ1NT
U2VsZWN0b3JMaXN0IENTU1BhcnNlckltcGw6OnBhcnNlUGFnZVNlbGVjdG9yKENTU1BhcnNlclRv
a2VuUmFuZ2UgcmFuZ2UsIFN0eWwKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gc2VsZWN0b3I7CiAgICAgaWYgKCF0eXBlU2VsZWN0b3IuaXNOdWxsKCkgJiYgcHNldWRv
LmlzTnVsbCgpKQotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHlsZVNo
ZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKKyAgICAgICAgc2VsZWN0b3IgPSBtYWtlVW5pcXVl
PENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxlY3Rv
ciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAg
ICAgc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBp
ZiAoIXBzZXVkby5pc051bGwoKSkgewogICAgICAgICAgICAgc2VsZWN0b3IgPSBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+KENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1
ZG9TZWxlY3Rvcihwc2V1ZG8pKTsKICAgICAgICAgICAgIGlmICghc2VsZWN0b3IgfHwgc2VsZWN0
b3ItPm1hdGNoKCkgIT0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcykKQEAgLTUzNSw3ICs1
MzUsNyBAQCBSZWZQdHI8U3R5bGVSdWxlTmFtZXNwYWNlPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1l
TmFtZXNwYWNlUnVsZShDU1NQYXJzZXJUb2tlblJhbgogUmVmUHRyPFN0eWxlUnVsZU1lZGlhPiBD
U1NQYXJzZXJJbXBsOjpjb25zdW1lTWVkaWFSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVk
ZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBibG9jaykKIHsKICAgICBpZiAobV9kZWZlcnJlZFBhcnNl
cikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZU1lZGlhOjpjcmVhdGUoTWVkaWFRdWVyeVBhcnNl
cjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KHByZWx1ZGUsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KG1f
Y29udGV4dCkpLnJlbGVhc2VOb25OdWxsKCksICBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5
bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0
dXJuIFN0eWxlUnVsZU1lZGlhOjpjcmVhdGUoTWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYVF1
ZXJ5U2V0KHByZWx1ZGUsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KG1fY29udGV4dCkpLnJlbGVh
c2VOb25OdWxsKCksICBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9j
aywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFz
ZT4+IHJ1bGVzOwogCkBAIC01NjMsNyArNTYzLDcgQEAgUmVmUHRyPFN0eWxlUnVsZVN1cHBvcnRz
PiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lU3VwcG9ydHNSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vIFBhcnNlIGVycm9yLCBpbnZhbGlkIEBzdXBwb3J0
cyBjb25kaXRpb24KIAogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1cm4g
U3R5bGVSdWxlU3VwcG9ydHM6OmNyZWF0ZShwcmVsdWRlLnNlcmlhbGl6ZSgpLnN0cmlwV2hpdGVT
cGFjZSgpLCBzdXBwb3J0ZWQsIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVs
ZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVS
dWxlU3VwcG9ydHM6OmNyZWF0ZShwcmVsdWRlLnNlcmlhbGl6ZSgpLnN0cmlwV2hpdGVTcGFjZSgp
LCBzdXBwb3J0ZWQsIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2Nr
LCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKSB7CiAg
ICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhlYWRlcihTdHls
ZVJ1bGU6OlN1cHBvcnRzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZzZXQocHJlbHVkZSkp
OwpAQCAtNjM1LDcgKzYzNSw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IENTU1BhcnNl
ckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKGJvb2wgd2Via2l0UHJlZml4CiAgICAgICAgIHJl
dHVybiBudWxscHRyOyAvLyBQYXJzZSBlcnJvcjsgZXhwZWN0ZWQgaWRlbnQgdG9rZW4gaW4gQGtl
eWZyYW1lcyBoZWFkZXIKIAogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1
cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVhdGUobmFtZSwgc3RkOjptYWtlX3VuaXF1ZTxEZWZl
cnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAg
ICAgIHJldHVybiBTdHlsZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1lLCBtYWtlVW5pcXVlPERl
ZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAog
ICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+
b2JzZXJ2ZXIoKS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpLZXlmcmFtZXMsIG1fb2JzZXJ2
ZXJXcmFwcGVyLT5zdGFydE9mZnNldChyYW5nZUNvcHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAKaW5kZXggNGRiZWY0MDU4YzcxNjJjZDk2
NDZlYTc2NGRjYmI5YmJjZjMxZTQ1OS4uYTA4NzBkMzc2MmNlYTQyZjViNWVhYmQwNWVhNzQ0ZjJk
OWQ2YjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJT
ZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxl
Y3Rvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IoU3QKICAgICBl
bHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWxlY3RvciA9IG1h
a2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldE1hdGNoKENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpOwogICAgIHNlbGVjdG9yLT5t
X3NlbGVjdG9yLT5zZXRQYWdlUHNldWRvVHlwZShwc2V1ZG9UeXBlKTsKICAgICByZXR1cm4gc2Vs
ZWN0b3I7CkBAIC02Myw3ICs2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFNlbGVjdG9yCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlbGVjdG9yID0gbWFr
ZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwogICAgIHNlbGVjdG9yLT5tX3Nl
bGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9UeXBlKTsKICAgICBBdG9tU3RyaW5n
IG5hbWU7CkBAIC04NCwxMyArODQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yKFMKIHsKICAg
ICBhdXRvIHBzZXVkb1R5cGUgPSBwYXJzZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1l
bnRTdHJpbmcocHNldWRvVHlwZVN0cmluZyk7CiAgICAgaWYgKHBzZXVkb1R5cGUucHNldWRvQ2xh
c3MgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVW5rbm93bikgewotICAgICAgICBhdXRvIHNl
bGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAgICAg
YXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAg
IHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3Mp
OwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvQ2xhc3NUeXBlKHBzZXVk
b1R5cGUucHNldWRvQ2xhc3MpOwogICAgICAgICByZXR1cm4gc2VsZWN0b3I7CiAgICAgfQogICAg
IGlmIChwc2V1ZG9UeXBlLmNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50ICE9IENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50VW5rbm93bikgewotICAgICAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAgICAgYXV0byBzZWxlY3RvciA9
IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3Nl
bGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNl
bGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9UeXBlLmNvbXBh
dGliaWxpdHlQc2V1ZG9FbGVtZW50KTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dFZhbHVlKHBzZXVkb1R5cGVTdHJpbmcuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CkBAIC0x
MDAsMTIgKzEwMCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1Bh
cnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IoUwogfQogCiBDU1NQYXJzZXJT
ZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IoKQotICAgIDogbV9zZWxlY3RvcihzdGQ6Om1ha2Vf
dW5pcXVlPENTU1NlbGVjdG9yPigpKQorICAgIDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENTU1Nl
bGVjdG9yPigpKQogewogfQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3Io
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUpCi0gICAgOiBtX3NlbGVjdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lKSkKKyAgICA6IG1fc2VsZWN0b3IobWFrZVVu
aXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUpKQogewogfQogCkBAIC0xMjYsNyArMTI2LDcgQEAg
Q1NTUGFyc2VyU2VsZWN0b3I6On5DU1NQYXJzZXJTZWxlY3RvcigpCiAKIHZvaWQgQ1NTUGFyc2Vy
U2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4+JiYgc2VsZWN0b3JWZWN0b3IpCiB7Ci0gICAgbV9zZWxlY3Rvci0+c2V0
U2VsZWN0b3JMaXN0KHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3JMaXN0PihXVEZNb3ZlKHNl
bGVjdG9yVmVjdG9yKSkpOworICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChtYWtlVW5p
cXVlPENTU1NlbGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsKIH0KIAogdm9p
ZCBDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0TGFuZ0FyZ3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPEF0b21TdHJpbmc+PiBhcmd1bWVudExpc3QpCkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2
b2lkIENTU1BhcnNlclNlbGVjdG9yOjphcHBlbmRUYWdIaXN0b3J5KENTU1BhcnNlclNlbGVjdG9y
Q29tYmluYXRvciByZWxhdGlvbiwgcwogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjpwcmVwZW5k
VGFnU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIGJvb2wgdGFnSXNGb3JO
YW1lc3BhY2VSdWxlKQogewotICAgIGF1dG8gc2Vjb25kID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQ
YXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlY29uZCA9IG1ha2VVbmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KCk7CiAgICAgc2Vjb25kLT5tX3NlbGVjdG9yID0gV1RGTW92ZShtX3NlbGVjdG9y
KTsKICAgICBzZWNvbmQtPm1fdGFnSGlzdG9yeSA9IFdURk1vdmUobV90YWdIaXN0b3J5KTsKICAg
ICBtX3RhZ0hpc3RvcnkgPSBXVEZNb3ZlKHNlY29uZCk7CiAKLSAgICBtX3NlbGVjdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lzRm9yTmFtZXNwYWNlUnVs
ZSk7CisgICAgbV9zZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lLCB0
YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOwogICAgIG1fc2VsZWN0b3ItPnNldFJlbGF0aW9uKENTU1Nl
bGVjdG9yOjpTdWJzZWxlY3Rvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggNDg4ZTYwMjNmMjAwMjRhZmZlZjg2MTdhNTE0
YzQwOWJmNDlkMWVmMy4uNzA4ZWM3NzczYzE4ZDZlMDhlMDAxY2FmYTNkMjhjODBkOWY4NzJmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAK
QEAgLTI0MzUsNyArMjQzNSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBhdGg+IGNv
bnN1bWVCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzCiAgICAgaWYgKGFy
Z3MucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tlbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgCi0gICAgYXV0byBieXRlU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0
ZVN0cmVhbT4oKTsKKyAgICBhdXRvIGJ5dGVTdHJlYW0gPSBtYWtlVW5pcXVlPFNWR1BhdGhCeXRl
U3RyZWFtPigpOwogICAgIGlmICghYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoYXJn
cy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgKmJ5dGVT
dHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKaW5k
ZXggNmIzYWNjODVlNmZjNWU1Y2JiOTVhYjlmZTFhNmM3Y2E5ZWY4MTA0Ny4uZjMzMjNiMjI2YjRi
MDEwMGM5ODNjNDg2NjM3NWYxZTY1N2IxNzM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKQEAgLTU2NCw3ICs1NjQsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNl
dWRvKENTU1BhcnNlclRvawogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzTGFuZzogewogICAgICAgICAgICAgLy8gRklYTUU6IENTUyBTZWxlY3RvcnMgTGV2
ZWwgNCBhbGxvd3MgOmxhbmcoKi1mb28pCi0gICAgICAgICAgICBhdXRvIGFyZ3VtZW50TGlzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEF0b21TdHJpbmc+PigpOworICAgICAgICAgICAgYXV0
byBhcmd1bWVudExpc3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5nPj4oKTsKICAgICAg
ICAgICAgIGlmICghY29uc3VtZUxhbmdBcmd1bWVudExpc3QoYXJndW1lbnRMaXN0LCBibG9jaykp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBzZWxlY3Rvci0+
c2V0TGFuZ0FyZ3VtZW50TGlzdChXVEZNb3ZlKGFyZ3VtZW50TGlzdCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKaW5kZXggOWViNWQ3
ZTQ5ZjU2YTFlOThkMWZiYjliMjNlNmVhNzJlMjI2MTU4Zi4uODgxMTdmMTllNGIyNmJhMjViZmYy
NWE4NTU5MTczMmJiN2EzZTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWU6OkVsZW1lbnRRdWV1ZSYgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6
OmVuc3VyZUJhY2sKIHsKICAgICBpZiAoIXNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRRdWV1ZSkg
ewogICAgICAgICBzX3Byb2Nlc3NpbmdCYWNrdXBFbGVtZW50UXVldWUgPSB0cnVlOwotICAgICAg
ICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8QmFja3VwRWxlbWVudFF1ZXVlTWljcm90YXNrPigpKTsKKyAgICAgICAgTWljcm90YXNrUXVl
dWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPEJhY2t1cEVsZW1lbnRRdWV1
ZU1pY3JvdGFzaz4oKSk7CiAgICAgfQogICAgIHJldHVybiBiYWNrdXBFbGVtZW50UXVldWUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggY2I3NTIzMjgwYzdiMzI1YzY2
Y2RlNjQ2YzE1YmY1YTkxMzE3NDViYy4uYzA5Yjg0MzYzNTUzNDFhOGVkNDBhNWE4Yjg1MTZiNmQ5
N2JhNmRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI5MCw3ICsyOTAs
NyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6ZGlkQWRkRmlsZVRvSXRlbUxpc3QoKQogRGF0YVRyYW5z
ZmVySXRlbUxpc3QmIERhdGFUcmFuc2Zlcjo6aXRlbXMoKQogewogICAgIGlmICghbV9pdGVtTGlz
dCkKLSAgICAgICAgbV9pdGVtTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YVRyYW5zZmVySXRl
bUxpc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9pdGVtTGlzdCA9IG1ha2VVbmlxdWU8RGF0YVRyYW5z
ZmVySXRlbUxpc3Q+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faXRlbUxpc3Q7CiB9CiAKQEAgLTQx
Niw3ICs0MTYsNyBAQCBib29sIERhdGFUcmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJ
bnB1dEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBwbGFpblRl
eHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpCiB7Ci0gICAgYXV0byBwYXN0ZWJvYXJkID0gc3Rk
OjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOworICAgIGF1dG8gcGFzdGVib2FyZCA9
IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0
cmluZygidGV4dC9wbGFpbiJfcywgcGxhaW5UZXh0KTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0
cmluZygidGV4dC9odG1sIl9zLCBodG1sVGV4dCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3Rl
Ym9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CkBAIC00NzEsNyArNDcxLDcgQEAgUmVmPERhdGFU
cmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3Rh
cnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNm
ZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFk
V3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSwgVHlwZTo6RHJhZ0Fu
ZERyb3BEYXRhKSk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFU
cmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFkV3JpdGUsIG1ha2VVbmlxdWU8U3RhdGlj
UGFzdGVib2FyZD4oKSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiAgICAgZGF0YVRyYW5zZmVy
LT5tX29yaWdpbklkZW50aWZpZXIgPSBkb2N1bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVi
b2FyZCgpOwogICAgIHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CkBAIC01MDgsNyArNTA4LDcgQEAg
dm9pZCBEYXRhVHJhbnNmZXI6OnNldERyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBpbnQgeCwg
aW50IHkpCiAgICAgbV9kcmFnSW1hZ2UgPSBpbWFnZTsKICAgICBpZiAobV9kcmFnSW1hZ2UpIHsK
ICAgICAgICAgaWYgKCFtX2RyYWdJbWFnZUxvYWRlcikKLSAgICAgICAgICAgIG1fZHJhZ0ltYWdl
TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOworICAgICAg
ICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPERyYWdJbWFnZUxvYWRlcj4odGhp
cyk7CiAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyLT5zdGFydExvYWRpbmcobV9kcmFnSW1hZ2Up
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyLmNwcAppbmRleCAzMzYyMjMxMDgxYjEzZjcyZGMxOGRhYzVmMzkwN2E1ZTdjMTdi
MGJmLi5mMjExMzFmZjgyNzgyMWRjNzRlODUwYTk4ZjFiYjIzMDk5ZTAyNzA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIGJvb2wgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjppc0FjdGl2
ZUF0KFBhZ2UqIHBhZ2UpCiAKIHZvaWQgcHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8oUGFnZSYg
cGFnZSwgRGV2aWNlT3JpZW50YXRpb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICBEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CisgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
Ojpwcm92aWRlVG8oJnBhZ2UsIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVu
dE5hbWUoKSwgbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCBkMTdmZjJjZmVjMTg3OGU2N2M1ODEwNzkyODBiNDkxYjg4NTkzZTU5Li5lZDQ4NDg5N2ZhZDE5
OTc3OGU4ODM5MzlkZDEyM2FlMmQ2YzZjMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTUyMSwxOSArNTIxLDE5IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX3F1aXJr
cyhtYWtlVW5pcXVlUmVmPFF1aXJrcz4oKnRoaXMpKQogICAgICwgbV9jYWNoZWRSZXNvdXJjZUxv
YWRlcihtX2ZyYW1lID8gUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPihtX2ZyYW1lLT5sb2FkZXIo
KS5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKSA6IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpjcmVhdGUobnVsbHB0cikpCiAgICAgLCBtX2RvbVRyZWVWZXJzaW9u
KCsrc19nbG9iYWxUcmVlVmVyc2lvbikKLSAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2VfdW5p
cXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQotICAgICwgbV9leHRlbnNpb25TdHlsZVNoZWV0cyhz
dGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvblN0eWxlU2hlZXRzPigqdGhpcykpCi0gICAgLCBtX3Zp
c2l0ZWRMaW5rU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxWaXNpdGVkTGlua1N0YXRlPigqdGhpcykp
Ci0gICAgLCBtX21hcmtlcnMoc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI+KCp0aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4o
KnRoaXMpKQorICAgICwgbV9leHRlbnNpb25TdHlsZVNoZWV0cyhtYWtlVW5pcXVlPEV4dGVuc2lv
blN0eWxlU2hlZXRzPigqdGhpcykpCisgICAgLCBtX3Zpc2l0ZWRMaW5rU3RhdGUobWFrZVVuaXF1
ZTxWaXNpdGVkTGlua1N0YXRlPigqdGhpcykpCisgICAgLCBtX21hcmtlcnMobWFrZVVuaXF1ZTxE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fc3R5bGVSZWNhbGNUaW1l
cihbdGhpc10geyB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7IH0pCiAgICAgLCBtX2RvY3VtZW50Q3Jl
YXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQotICAgICwgbV9zY3JpcHRSdW5uZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRSdW5uZXI+KCp0aGlzKSkKLSAgICAsIG1fbW9kdWxlTG9hZGVy
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TW9kdWxlTG9hZGVyPigqdGhpcykpCisgICAgLCBtX3Nj
cmlwdFJ1bm5lcihtYWtlVW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQorICAgICwgbV9tb2R1
bGVMb2FkZXIobWFrZVVuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+KCp0aGlzKSkKICNpZiBFTkFC
TEUoWFNMVCkKICAgICAsIG1fYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyKCp0aGlzLCAm
RG9jdW1lbnQ6OmFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lckZpcmVkKQogI2VuZGlmCiAg
ICAgLCBtX3htbFZlcnNpb24oIjEuMCJfcykKLSAgICAsIG1fY29uc3RhbnRQcm9wZXJ0eU1hcChz
dGQ6Om1ha2VfdW5pcXVlPENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlzKSkKKyAgICAsIG1fY29u
c3RhbnRQcm9wZXJ0eU1hcChtYWtlVW5pcXVlPENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlzKSkK
ICAgICAsIG1fZG9jdW1lbnRDbGFzc2VzKGRvY3VtZW50Q2xhc3NlcykKICAgICAsIG1fZXZlbnRR
dWV1ZSgqdGhpcykKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC01NDUsMTAgKzU0NSwx
MCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5z
aWduZWQgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZwogI2VuZGlmCiAgICAgLCBtX2xvYWRFdmVudERl
bGF5VGltZXIoKnRoaXMsICZEb2N1bWVudDo6bG9hZEV2ZW50RGVsYXlUaW1lckZpcmVkKQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAg
LCBtX2RldmljZU1vdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERldmljZU1vdGlvbkNsaWVu
dElPUz4oKSkKLSAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVl
PERldmljZU1vdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU1vdGlvbkNsaWVudCkpCi0gICAgLCBt
X2RldmljZU9yaWVudGF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRp
b25DbGllbnRJT1M+KCkpCi0gICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihzdGQ6
Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlT3JpZW50
YXRpb25DbGllbnQpKQorICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQobWFrZVVuaXF1ZTxEZXZp
Y2VNb3Rpb25DbGllbnRJT1M+KCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VNb3Rpb25DbGllbnQpKQor
ICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChtYWtlVW5pcXVlPERldmljZU9yaWVudGF0
aW9uQ2xpZW50SU9TPigpKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9u
Q2xpZW50KSkKICNlbmRpZgogICAgICwgbV9wZW5kaW5nVGFza3NUaW1lcigqdGhpcywgJkRvY3Vt
ZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKQogICAgICwgbV92aXN1YWxVcGRhdGVzU3VwcHJl
c3Npb25UaW1lcigqdGhpcywgJkRvY3VtZW50Ojp2aXN1YWxVcGRhdGVzU3VwcHJlc3Npb25UaW1l
ckZpcmVkKQpAQCAtNzU3LDcgKzc1Nyw3IEBAIEVsZW1lbnQqIERvY3VtZW50OjplbGVtZW50Rm9y
QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KQogCiB2b2lkIERvY3VtZW50OjpidWlsZEFjY2Vz
c0tleUNhY2hlKCkKIHsKLSAgICBtX2FjY2Vzc0tleUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxI
YXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0aGlz
XSB7CisgICAgbV9hY2Nlc3NLZXlDYWNoZSA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVs
ZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PihbdGhpc10gewogICAgICAgICBIYXNo
TWFwPFN0cmluZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbWFwOwogICAg
ICAgICBmb3IgKGF1dG8mIG5vZGUgOiBjb21wb3NlZFRyZWVEZXNjZW5kYW50cygqdGhpcykpIHsK
ICAgICAgICAgICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCkBAIC03ODIsNyArNzgyLDcgQEAg
RXhjZXB0aW9uT3I8U2VsZWN0b3JRdWVyeSY+IERvY3VtZW50OjpzZWxlY3RvclF1ZXJ5Rm9yU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc2VsZWMKICAgICBpZiAoc2VsZWN0b3JTdHJpbmcuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKICAgICBpZiAoIW1f
c2VsZWN0b3JRdWVyeUNhY2hlKQotICAgICAgICBtX3NlbGVjdG9yUXVlcnlDYWNoZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVyeUNhY2hlPigpOworICAgICAgICBtX3NlbGVjdG9yUXVl
cnlDYWNoZSA9IG1ha2VVbmlxdWU8U2VsZWN0b3JRdWVyeUNhY2hlPigpOwogICAgIHJldHVybiBt
X3NlbGVjdG9yUXVlcnlDYWNoZS0+YWRkKHNlbGVjdG9yU3RyaW5nLCAqdGhpcyk7CiB9CiAKQEAg
LTg0Nyw3ICs4NDcsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCiBE
T01JbXBsZW1lbnRhdGlvbiYgRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkKIHsKICAgICBpZiAo
IW1faW1wbGVtZW50YXRpb24pCi0gICAgICAgIG1faW1wbGVtZW50YXRpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPERPTUltcGxlbWVudGF0aW9uPigqdGhpcyk7CisgICAgICAgIG1faW1wbGVtZW50YXRp
b24gPSBtYWtlVW5pcXVlPERPTUltcGxlbWVudGF0aW9uPigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X2ltcGxlbWVudGF0aW9uOwogfQogCkBAIC0xNzYyLDcgKzE3NjIsNyBAQCBOb2RlOjpOb2RlVHlw
ZSBEb2N1bWVudDo6bm9kZVR5cGUoKSBjb25zdAogRm9ybUNvbnRyb2xsZXImIERvY3VtZW50Ojpm
b3JtQ29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2Zvcm1Db250cm9sbGVyKQotICAgICAgICBt
X2Zvcm1Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ29udHJvbGxlcj4oKTsKKyAg
ICAgICAgbV9mb3JtQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8Rm9ybUNvbnRyb2xsZXI+KCk7CiAg
ICAgcmV0dXJuICptX2Zvcm1Db250cm9sbGVyOwogfQogCkBAIC0xOTg3LDcgKzE5ODcsNyBAQCB2
b2lkIERvY3VtZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zm
c2V0T2ZSZXBsYWNlZFRleHQsIHVucwogICAgIEFTU0VSVCghbV9pblJlbmRlclRyZWVVcGRhdGUp
OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGluUmVuZGVyVHJlZVVwZGF0ZShtX2luUmVuZGVyVHJl
ZVVwZGF0ZSwgdHJ1ZSk7CiAKLSAgICBhdXRvIHRleHRVcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN0eWxlOjpVcGRhdGU+KCp0aGlzKTsKKyAgICBhdXRvIHRleHRVcGRhdGUgPSBtYWtlVW5pcXVl
PFN0eWxlOjpVcGRhdGU+KCp0aGlzKTsKICAgICB0ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQsIHsg
b2Zmc2V0T2ZSZXBsYWNlZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0LCBXVEY6Om51bGxvcHQg
fSk7CiAKICAgICBSZW5kZXJUcmVlVXBkYXRlciByZW5kZXJUcmVlVXBkYXRlcigqdGhpcyk7CkBA
IC0yMjY5LDcgKzIyNjksNyBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogU3R5bGVSZXNvbHZl
ciYgRG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKIHsKICAgICBp
ZiAoIW1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpCi0gICAgICAgIG1fdXNlckFn
ZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVzb2x2
ZXI+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9
IG1ha2VVbmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2VyQWdl
bnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcjsKIH0KIApAQCAtMjY3Miw3ICsyNjcyLDcgQEAgQVhP
YmplY3RDYWNoZSogRG9jdW1lbnQ6OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogCiAgICAgQVNTRVJU
KCZ0b3BEb2N1bWVudCA9PSB0aGlzIHx8ICFtX2F4T2JqZWN0Q2FjaGUpOwogICAgIGlmICghdG9w
RG9jdW1lbnQubV9heE9iamVjdENhY2hlKSB7Ci0gICAgICAgIHRvcERvY3VtZW50Lm1fYXhPYmpl
Y3RDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8QVhPYmplY3RDYWNoZT4odG9wRG9jdW1lbnQpOwor
ICAgICAgICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBtYWtlVW5pcXVlPEFYT2JqZWN0
Q2FjaGU+KHRvcERvY3VtZW50KTsKICAgICAgICAgaGFzRXZlckNyZWF0ZWRBbkFYT2JqZWN0Q2Fj
aGUgPSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hl
LmdldCgpOwpAQCAtMzAzNiw3ICszMDM2LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0UGFyc2luZyhi
b29sIGIpCiAgICAgbV9iUGFyc2luZyA9IGI7CiAKICAgICBpZiAobV9iUGFyc2luZyAmJiAhbV9z
aGFyZWRPYmplY3RQb29sKQotICAgICAgICBtX3NoYXJlZE9iamVjdFBvb2wgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4oKTsKKyAgICAgICAgbV9zaGFyZWRPYmpl
Y3RQb29sID0gbWFrZVVuaXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7CiAKICAgICBp
ZiAoIW1fYlBhcnNpbmcgJiYgdmlldygpICYmICF2aWV3KCktPm5lZWRzTGF5b3V0KCkpCiAgICAg
ICAgIHZpZXcoKS0+ZmlyZUxheW91dFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKQEAgLTU1
NjYsNyArNTU2Niw3IEBAIGNvbnN0IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogRG9jdW1lbnQ6OnN2
Z0V4dGVuc2lvbnMoKQogU1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBEb2N1bWVudDo6YWNjZXNzU1ZH
RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX3N2Z0V4dGVuc2lvbnMpCi0gICAgICAgIG1fc3Zn
RXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRG9jdW1lbnRFeHRlbnNpb25zPigqdGhp
cyk7CisgICAgICAgIG1fc3ZnRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8U1ZHRG9jdW1lbnRFeHRl
bnNpb25zPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3N2Z0V4dGVuc2lvbnM7CiB9CiAKQEAgLTU3
NzEsNyArNTc3MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAg
ICAgICAvLyBUaGlzIGNhbiBvY2N1ciB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRl
RG9jdW1lbnQoKS4KICAgICAgICAgc2V0Q29va2llVVJMKFVSTCh7IH0sIGVtcHR5U3RyaW5nKCkp
KTsKICAgICAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6
OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsKLSAgICAgICAgc2V0Q29u
dGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
PihVUkwgeyB7IH0sIGVtcHR5U3RyaW5nKCkgfSwgKnRoaXMpKTsKKyAgICAgICAgc2V0Q29udGVu
dFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB7
IH0sIGVtcHR5U3RyaW5nKCkgfSwgKnRoaXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNTc5MCw3ICs1NzkwLDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgp
CiAgICAgICAgIGlzU2VjdXJpdHlPcmlnaW5VbmlxdWUgPSBkb2N1bWVudExvYWRlciAmJiBkb2N1
bWVudExvYWRlci0+cmVzcG9uc2UoKS50YWludGluZygpID09IFJlc291cmNlUmVzcG9uc2U6OlRh
aW50aW5nOjpPcGFxdWU7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9y
aWdpblBvbGljeTo6Y3JlYXRlKGlzU2VjdXJpdHlPcmlnaW5VbmlxdWUgPyBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSkpOwotICAg
IHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0
eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0
aGlzKSk7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBtX2Zy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpOwog
ICAgIGlmICghb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kuaXNOdWxsKCkpCkBAIC02MDI4
LDcgKzYwMjgsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6Om5hbWVGb3JDU1NDYW52YXNFbGVtZW50KGNv
bnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50KQogVGV4dEF1dG9TaXppbmcmIERv
Y3VtZW50Ojp0ZXh0QXV0b1NpemluZygpCiB7CiAgICAgaWYgKCFtX3RleHRBdXRvU2l6aW5nKQot
ICAgICAgICBtX3RleHRBdXRvU2l6aW5nID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1Npemlu
Zz4oKTsKKyAgICAgICAgbV90ZXh0QXV0b1NpemluZyA9IG1ha2VVbmlxdWU8VGV4dEF1dG9TaXpp
bmc+KCk7CiAgICAgcmV0dXJuICptX3RleHRBdXRvU2l6aW5nOwogfQogI2VuZGlmIC8vIEVOQUJM
RShURVhUX0FVVE9TSVpJTkcpCkBAIC02Mzk1LDcgKzYzOTUsNyBAQCB2b2lkIERvY3VtZW50Ojp3
aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKCkKIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZl
bnRIYW5kbGVyKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKCFtX3doZWVsRXZlbnRUYXJnZXRzKQot
ICAgICAgICBtX3doZWVsRXZlbnRUYXJnZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdl
dFNldD4oKTsKKyAgICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IG1ha2VVbmlxdWU8RXZlbnRU
YXJnZXRTZXQ+KCk7CiAKICAgICBtX3doZWVsRXZlbnRUYXJnZXRzLT5hZGQoJm5vZGUpOwogCkBA
IC02NDU1LDcgKzY0NTUsNyBAQCB2b2lkIERvY3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxl
cihOb2RlJiBoYW5kbGVyKQogewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKCFt
X3RvdWNoRXZlbnRUYXJnZXRzKQotICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKKyAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0
cyA9IG1ha2VVbmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CiAKICAgICBtX3RvdWNoRXZlbnRUYXJn
ZXRzLT5hZGQoJmhhbmRsZXIpOwogCkBAIC04MDQzLDcgKzgwNDMsNyBAQCB2b2lkIERvY3VtZW50
OjpkaWRMb2dNZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xldmVs
IGxldmVsLCBWZQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gbWVzc2FnZUxl
dmVsID0gbWVzc2FnZUxldmVsRnJvbVdURkxvZ0xldmVsKGxldmVsKTsKLSAgICAgICAgYXV0byBt
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNz
YWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobG9nTWVz
c2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOworICAgICAgICBhdXRvIG1lc3Nh
Z2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1h
aW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgpKSk7CiAKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2Uo
V1RGTW92ZShtZXNzYWdlKSk7CiAgICAgfSk7CkBAIC04MDc4LDcgKzgwNzgsNyBAQCBTdHJpbmcg
RG9jdW1lbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0CiAKIGJvb2wgRG9jdW1lbnQ6OnJlZ2lzdGVyQ1NTUHJvcGVydHkoQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5JiYgcHJvcCkKIHsKLSAgICByZXR1cm4gbV9DU1NSZWdp
c3RlcmVkUHJvcGVydHlTZXQuYWRkKHByb3AubmFtZSwgc3RkOjptYWtlX3VuaXF1ZTxDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1vdmUocHJvcCkpKS5pc05ld0VudHJ5OworICAgIHJl
dHVybiBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBtYWtlVW5pcXVl
PENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9wKSkpLmlzTmV3RW50cnk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmRldGFjaEZyb21GcmFtZSgpCkBAIC04MTcyLDcgKzgxNzIs
NyBAQCBEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXImIERvY3VtZW50
OjpkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbgogICAgICAgICByZXR1cm4gdG9wRG9jdW1lbnQo
KS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKTsKIAogICAgIGlm
ICghbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpCi0gICAgICAg
IG1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlz
KTsKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0Nv
bnRyb2xsZXI7CiB9CiAKQEAgLTgyMDMsNyArODIwMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFBh
aW50V29ya2xldEdsb2JhbFNjb3BlRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZjxQYWlu
dFdvCiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXImIERvY3VtZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2
ZXIoKQogewogICAgIGlmICghbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fY29u
dGVudENoYW5nZU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50Q2hhbmdlT2JzZXJ2
ZXI+KCp0aGlzKTsKKyAgICAgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBtYWtlVW5pcXVl
PENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250ZW50Q2hh
bmdlT2JzZXJ2ZXI7IAogfQogCkBAIC04MjExLDcgKzgyMTEsNyBAQCBET01UaW1lckhvbGRpbmdU
YW5rJiBEb2N1bWVudDo6ZG9tVGltZXJIb2xkaW5nVGFuaygpCiB7CiAgICAgaWYgKG1fZG9tVGlt
ZXJIb2xkaW5nVGFuaykKICAgICAgICAgcmV0dXJuICptX2RvbVRpbWVySG9sZGluZ1Rhbms7Ci0g
ICAgbV9kb21UaW1lckhvbGRpbmdUYW5rID0gc3RkOjptYWtlX3VuaXF1ZTxET01UaW1lckhvbGRp
bmdUYW5rPigpOworICAgIG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IG1ha2VVbmlxdWU8RE9NVGlt
ZXJIb2xkaW5nVGFuaz4oKTsKICAgICByZXR1cm4gKm1fZG9tVGltZXJIb2xkaW5nVGFuazsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBmOTdkYmU3NTFiZDUwNDM2MjczYzA3OGY3MGVlYTE1
YjY1Yzc2MmE5Li5hNWUzMjAzOTI1OTQ5NTU1M2M1OTM2YzViODA3MWU0MGUwZjhlNjIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMTI4NCw3ICsxMjg0LDcgQEAgY2xhc3MgRG9jdW1lbnQKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+IGNyZWF0ZVBhcnNl
cllpZWxkVG9rZW4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RG9j
dW1lbnRQYXJzZXJZaWVsZFRva2VuPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOwogICAgIH0KIAogICAgIGJvb2wgaGFz
QWN0aXZlUGFyc2VyWWllbGRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyWWllbGRUb2tl
bkNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1
ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4
IDAxYzdmOTZlMDJlOWViZDU4ODUzZmI1ZGIxYzRiODgyMWUyZjk3MjguLjAzNzAzYjYyYmM2NTA1
NTc4YjM4OWI5OTkzOGE0ZGFhYjZkNzZjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEV2ZW50UXVldWUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIERvY3VtZW50RXZlbnRRdWV1
ZTo6VGltZXIgZmluYWwgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7CiAKIERvY3VtZW50RXZl
bnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1f
ZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKHN0ZDo6bWFrZV91
bmlxdWU8VGltZXI+KCp0aGlzKSkKKyAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIobWFrZVVuaXF1
ZTxUaW1lcj4oKnRoaXMpKQogICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKIHsKICAgICBtX3BlbmRp
bmdFdmVudFRpbWVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggNzI5MWQ0YWRlZTlmNDE3N2ZkYmZl
ZmVlZmRkZjI2NzA1NGE5YzRmMC4uZTc2NDFhZjYyMThiZjEzYWIwZTNjNjg5MjAyMGRlODg5YzRl
OTA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6
YWRkTWFya2VyKE5vZGUmIG5vZGUsIGNvbnN0IERvY3VtZW50TWFya2VyJiBuZXdNYQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxNYXJrZXJMaXN0PiYgbGlzdCA9IG1fbWFya2Vycy5hZGQoJm5vZGUsIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGlmICghbGlzdCkgewotICAgICAgICBsaXN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJMaXN0PigpOworICAgICAgICBsaXN0ID0gbWFrZVVu
aXF1ZTxNYXJrZXJMaXN0PigpOwogICAgICAgICBsaXN0LT5hcHBlbmQoUmVuZGVyZWREb2N1bWVu
dE1hcmtlcihuZXdNYXJrZXIpKTsKICAgICB9IGVsc2UgaWYgKHNob3VsZEluc2VydEFzU2VwYXJh
dGVNYXJrZXIobmV3TWFya2VyKSkgewogICAgICAgICAvLyBXZSBkb24ndCBtZXJnZSBkaWN0YXRp
b24gbWFya2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5j
cHAKaW5kZXggODFlZmIxMGQ1ZTc2ZWRiNmY2ZDM4MzUzMDA1MWQyOWMzODhlYWZkYi4uODU1YTJh
MDY1NmY3MWI0NWVlOGQ0ZmZmMjg0YTUzNTM3OWEzODc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgRG9jdW1lbnRT
dG9yYWdlQWNjZXNzKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MqPihTdXBwbGVtZW50PERvY3VtZW50Pjo6ZnJvbSgmZG9jdW1lbnQsIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFN0b3JhZ2VBY2Nlc3M+KGRvY3VtZW50
KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M+KGRvY3VtZW50KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmZG9jdW1lbnQsIHN1cHBsZW1lbnROYW1lKCksIFdU
Rk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIERv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogICAgICAgICBib29sIHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUg
PSB3YXNHcmFudGVkID09IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgfHwgcHJvbXB0V2Fz
U2hvd24gPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsKIAogICAgICAgICBpZiAo
c2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSkgewotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6
Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+
KFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsKKyAgICAg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1
ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqZG9jdW1l
bnQpXSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRS
ZWZlcmVuY2UuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5lbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsKQEAgLTE5OSw3ICsxOTks
NyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNo
b3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjpt
YWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihb
ZG9jdW1lbnRSZWZlcmVuY2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgeworICAg
ICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5p
cXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRS
ZWZlcmVuY2UpXSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9j
dW1lbnRSZWZlcmVuY2UuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5jb25z
dW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAgICB9KSk7CkBAIC0yMDks
NyArMjA5LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIAogdm9pZCBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCiB7Ci0gICAgbV90ZW1w
b3JhcnlVc2VyR2VzdHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+
KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgJm1fZG9jdW1lbnQpOworICAgIG1fdGVtcG9yYXJ5VXNl
ckdlc3R1cmUgPSBtYWtlVW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNl
ckdlc3R1cmUsICZtX2RvY3VtZW50KTsKIH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6
OmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDcxMjAwOGYyMWIyMzFjNGRlMjFjNDEzYjVkMTA4NWQ5M2YyNWRhZjMuLmIwZDhhZDVkMTY0
MDlhN2JlNTZiYzNjMTBiNjlkMzJiYTc1MGRjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTQ3Nyw3ICs0NzcsNyBAQCBOYW1lZE5vZGVNYXAmIEVsZW1lbnQ6OmF0dHJpYnV0ZXMoKSBjb25z
dAogICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IHJhcmVEYXRhLmF0dHJpYnV0
ZU1hcCgpKQogICAgICAgICByZXR1cm4gKmF0dHJpYnV0ZU1hcDsKIAotICAgIHJhcmVEYXRhLnNl
dEF0dHJpYnV0ZU1hcChzdGQ6Om1ha2VfdW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3RfY2FzdDxF
bGVtZW50Jj4oKnRoaXMpKSk7CisgICAgcmFyZURhdGEuc2V0QXR0cmlidXRlTWFwKG1ha2VVbmlx
dWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVsZW1lbnQmPigqdGhpcykpKTsKICAgICByZXR1
cm4gKnJhcmVEYXRhLmF0dHJpYnV0ZU1hcCgpOwogfQogCkBAIC0yMzA3LDcgKzIzMDcsNyBAQCB2
b2lkIEVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlJiBlbGVtZW50SW50ZXJmYQogICAgIHNldEZsYWcoSXNDdXN0b21FbGVtZW50KTsKICAg
ICBhdXRvJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmN1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCkpCi0gICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJ
bnRlcmZhY2UpKTsKICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoKnRoaXMpOwog
fQpAQCAtMjM0NCw3ICsyMzQ0LDcgQEAgdm9pZCBFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKEpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVyZmFjZSkKICAgICBhdXRvJiBkYXRh
ID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgYm9vbCBhbHJlYWR5U2NoZWR1bGVkVG9V
cGdyYWRlID0gZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpOwogICAgIGlmICghYWxy
ZWFkeVNjaGVkdWxlZFRvVXBncmFkZSkKLSAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihl
bGVtZW50SW50ZXJmYWNlKSk7CisgICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUobWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVy
ZmFjZSkpOwogICAgIGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKS0+ZW5xdWV1ZUVs
ZW1lbnRVcGdyYWRlKCp0aGlzLCBhbHJlYWR5U2NoZWR1bGVkVG9VcGdyYWRlKTsKIH0KIApAQCAt
MzQ4MCw3ICszNDgwLDcgQEAgRE9NVG9rZW5MaXN0JiBFbGVtZW50OjpjbGFzc0xpc3QoKQogewog
ICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAg
IGlmICghZGF0YS5jbGFzc0xpc3QoKSkKLSAgICAgICAgZGF0YS5zZXRDbGFzc0xpc3Qoc3RkOjpt
YWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwor
ICAgICAgICBkYXRhLnNldENsYXNzTGlzdChtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMs
IEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CiAgICAgcmV0dXJuICpkYXRhLmNsYXNzTGlzdCgpOwog
fQogCkBAIC0zNDg4LDcgKzM0ODgsNyBAQCBEYXRhc2V0RE9NU3RyaW5nTWFwJiBFbGVtZW50Ojpk
YXRhc2V0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKTsKICAgICBpZiAoIWRhdGEuZGF0YXNldCgpKQotICAgICAgICBkYXRhLnNldERhdGFz
ZXQoc3RkOjptYWtlX3VuaXF1ZTxEYXRhc2V0RE9NU3RyaW5nTWFwPigqdGhpcykpOworICAgICAg
ICBkYXRhLnNldERhdGFzZXQobWFrZVVuaXF1ZTxEYXRhc2V0RE9NU3RyaW5nTWFwPigqdGhpcykp
OwogICAgIHJldHVybiAqZGF0YS5kYXRhc2V0KCk7CiB9CiAKQEAgLTM2MzIsNyArMzYzMiw3IEBA
IEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpOwogICAgIGlmICghcmFyZURhdGEuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCkpCi0gICAg
ICAgIHJhcmVEYXRhLnNldEludGVyc2VjdGlvbk9ic2VydmVyRGF0YShzdGQ6Om1ha2VfdW5pcXVl
PEludGVyc2VjdGlvbk9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJhcmVEYXRhLnNldEludGVy
c2VjdGlvbk9ic2VydmVyRGF0YShtYWtlVW5pcXVlPEludGVyc2VjdGlvbk9ic2VydmVyRGF0YT4o
KSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5pbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKTsKIH0K
IApAQCAtMzY1OCw3ICszNjU4LDcgQEAgUmVzaXplT2JzZXJ2ZXJEYXRhJiBFbGVtZW50OjplbnN1
cmVSZXNpemVPYnNlcnZlckRhdGEoKQogewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxl
bWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRhdGEoKSkK
LSAgICAgICAgcmFyZURhdGEuc2V0UmVzaXplT2JzZXJ2ZXJEYXRhKHN0ZDo6bWFrZV91bmlxdWU8
UmVzaXplT2JzZXJ2ZXJEYXRhPigpKTsKKyAgICAgICAgcmFyZURhdGEuc2V0UmVzaXplT2JzZXJ2
ZXJEYXRhKG1ha2VVbmlxdWU8UmVzaXplT2JzZXJ2ZXJEYXRhPigpKTsKICAgICByZXR1cm4gKnJh
cmVEYXRhLnJlc2l6ZU9ic2VydmVyRGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
aXN0ZW5lck1hcC5jcHAKaW5kZXggZDllNjYzNDljYmRiYTBiYjgxZDJhY2ZiZmRjMGQ0MzM3OGM2
NThkYi4uMGIwOWQwODJjMzZlZGRkODRiOWNkZTk4ODI1MjcyZGI1Zjk2ZTViZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wg
RXZlbnRMaXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2
ZW50TGlzdGVuZXI+JiYgbGlzCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1
dG8gbGlzdGVuZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudExpc3RlbmVyVmVjdG9yPigpOwor
ICAgIGF1dG8gbGlzdGVuZXJzID0gbWFrZVVuaXF1ZTxFdmVudExpc3RlbmVyVmVjdG9yPigpOwog
ICAgIGxpc3RlbmVycy0+dW5jaGVja2VkQXBwZW5kKFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOjpj
cmVhdGUoV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpKTsKICAgICBtX2VudHJpZXMuYXBwZW5k
KHsgZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVycykgfSk7CiAgICAgcmV0dXJuIHRydWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA5ZTkzMDhiYjVkYTE0NjFlMzU4ZTNjYzYyZmVhZmRj
ZmNkMGNjN2FkLi41YjZhYjY4NzU1YjYxYmZlMmQ0YTY4YmNiZTc1MjRmZDBkZGFiYjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTMzOSwxMyArMzM5LDEzIEBAIHN0cnVjdCBFdmVudE5h
bWVzIHsKICAgICBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0goRE9NX0VWRU5UX05BTUVTX0RFQ0xB
UkUpCiAjdW5kZWYgRE9NX0VWRU5UX05BTUVTX0RFQ0xBUkUKIAotICAgIC8vIEZJWE1FOiBUaGUg
ZnJpZW5kIGRlY2xhcmF0aW9uIHRvIHN0ZDo6bWFrZV91bmlxdWUgYmVsb3cgZG9lcyBub3Qgd29y
ayBpbiB3aW5kb3dzIHBvcnQuCisgICAgLy8gRklYTUU6IFRoZSBmcmllbmQgZGVjbGFyYXRpb24g
dG8gbWFrZVVuaXF1ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdpbmRvd3MgcG9ydC4KICAgICAv
LwogICAgIC8vIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFyZ3M+Ci0gICAgLy8gZnJpZW5k
IHR5cGVuYW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3Qgc3RkOjptYWtlX3Vu
aXF1ZShBcmdzJiYuLi4pOworICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVfaWY8
VD46Ol9TaW5nbGVfb2JqZWN0IG1ha2VVbmlxdWUoQXJncyYmLi4uKTsKICAgICAvLwogICAgIC8v
IFRoaXMgY3JlYXRlIGZ1bmN0aW9uIHNob3VsZCBiZSBkZWxldGVkIGxhdGVyIGFuZCBpcyBvbmx5
IGZvciBrZWVwaW5nIEV2ZW50TmFtZXMgYXMgcHJpdmF0ZS4KLSAgICAvLyBzdGQ6Om1ha2VfdW5p
cXVlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisgICAgLy8gbWFrZVVuaXF1ZSBzaG91bGQgYmUg
dXNlZCBpbnN0ZWFkLgogICAgIC8vCiAgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEV2ZW50TmFtZXM+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKaW5kZXggZGIxNDI4ZDFkNDI2MDU4Y2I2NWIxZWI2ZmFj
YTIzZGI5ODkyODJiZC4uYTBhZDBhZDdjNDgyNjkyZTYzOGU1NzI4MGYxYTI5MjQ3YWNlYzE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKQEAgLTExNSwxNyArMTE1LDE3IEBAIHZvaWQgRXZl
bnRQYXRoOjpidWlsZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKIHsK
ICAgICB1c2luZyBNYWtlRXZlbnRDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4
dD4gKCopKE5vZGUmLCBFdmVudFRhcmdldCosIEV2ZW50VGFyZ2V0KiwgaW50IGNsb3NlZFNoYWRv
d0RlcHRoKTsKICAgICBNYWtlRXZlbnRDb250ZXh0IG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9k
ZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQs
IGludCBjbG9zZWRTaGFkb3dEZXB0aCkgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxFdmVudENvbnRleHQ+KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRv
d0RlcHRoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwg
Y3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgfTsKICAgICBp
ZiAoaXM8TW91c2VFdmVudD4oZXZlbnQpIHx8IGV2ZW50LmlzRm9jdXNFdmVudCgpKSB7CiAgICAg
ICAgIG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJl
bnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkgLT4g
c3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0
LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0
LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCiAgICAgaWYgKGlzPFRvdWNoRXZlbnQ+KGV2ZW50KSkgewogICAgICAgICBtYWtl
RXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0
LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5p
cXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRvdWNoRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3Nl
ZFNoYWRvd0RlcHRoKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRvdWNoRXZlbnRD
b250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsK
ICAgICAgICAgfTsKICAgICB9CiAjZW5kaWYKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEV2ZW50
UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2V0LCBFdmVudCYgZXZlbnQpCiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
dGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KCpub2RlKS5kb21XaW5kb3coKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2luZG93RXZlbnRDb250ZXh0
Pigqbm9kZSwgKndpbmRvdywgKnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlxdWU8V2luZG93RXZlbnRD
b250ZXh0Pigqbm9kZSwgKndpbmRvdywgKnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0zMDgsNyArMzA4LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVj
dG9yPEVsZW1lbnQqPiYgdGFyZ2V0cykKICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAg
IE5vZGUqIG9yaWdpbiA9ICp0YXJnZXRzLmJlZ2luKCk7CiAgICAgICAgIGlmICghdGFyZ2V0LT5p
c0Nsb3NlZFNoYWRvd0hpZGRlbigqb3JpZ2luKSkKLSAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KHRhcmdldCwgdGFyZ2V0LCBvcmlnaW4sIDAp
KTsKKyAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KHRh
cmdldCwgdGFyZ2V0LCBvcmlnaW4sIDApKTsKICAgICB9CiB9CiAKQEAgLTMxNyw3ICszMTcsNyBA
QCBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RXZlbnRUYXJnZXQqPiYgdGFyZ2V0
cykKICAgICBmb3IgKGF1dG8qIHRhcmdldCA6IHRhcmdldHMpIHsKICAgICAgICAgQVNTRVJUKHRh
cmdldCk7CiAgICAgICAgIEFTU0VSVCghaXM8Tm9kZT4odGFyZ2V0KSk7Ci0gICAgICAgIG1fcGF0
aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KG51bGxwdHIsIHRhcmdldCwg
KnRhcmdldHMuYmVnaW4oKSwgMCkpOworICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlxdWU8
RXZlbnRDb250ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggZWRkOWNh
MjhlYTQ5M2FjN2M5NGM4YmRlMjg1YjE2NjZjMzg4MjU1OS4uYTcwYmNhZWNjYzg3OTVhNGY0YmE0
MjZlMjUxM2RmZjdhMGY3NGIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxz
Y3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2Vy
LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgUmVuZGVyVHJlZUJ1aWxkZXI7CiBjbGFzcyBSZW5k
ZXJTdHlsZTsKIAogY2xhc3MgRnVsbHNjcmVlbk1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEZ1bGxzY3JlZW5NYW5hZ2VyKERvY3VtZW50Jik7CiAg
ICAgfkZ1bGxzY3JlZW5NYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwCmluZGV4IGIzYTA2ZTQ3YjA3MDBmN2M0N2QzZDlhZWYzM2Y0
NDM3MjRlMGM1NWUuLjk0MGVmY2FlZDgzMDkxYzI1ODNmYTllMzM2ZWYzZDc4YzU0YWEzZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCkBA
IC0zNyw3ICszNyw3IEBAIHZvaWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZl
cihjb25zdCBBdG9tU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlCiAgICAgCiAgICAgSWRUb09i
c2VydmVyU2V0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9yZWdpc3RyeS5hZGQoaWQuaW1wbCgp
LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9ic2VydmVyU2V0PigpOworICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPYnNlcnZlclNldD4oKTsKIAog
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZChvYnNlcnZlcik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXggN2U3YTM0Nzk3Yjg2MjlmNjJmN2Y3ODZhYjE0YzVj
NmY1YmQ5MGIxNC4uY2U4NTZiYjU1ZDViZDk5ZTY2ZjUwY2I1NWIwYmU0NzkwZTA5ODQ1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcApAQCAtOTYsNyArOTYsNyBAQCBpbmxpbmUg
S2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIGlubGluZSBLZXlib2Fy
ZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5LCBS
ZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKICAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZl
bnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIENhbkJ1YmJsZTo6WWVzLCBJ
c0NhbmNlbGFibGU6OlllcywgSXNDb21wb3NlZDo6WWVzLAogICAgICAgICBrZXkudGltZXN0YW1w
KCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBrZXkubW9k
aWZpZXJzKCksIElzVHJ1c3RlZDo6WWVzKQotICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVu
dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKKyAgICAsIG1f
dW5kZXJseWluZ1BsYXRmb3JtRXZlbnQobWFrZVVuaXF1ZTxQbGF0Zm9ybUtleWJvYXJkRXZlbnQ+
KGtleSkpCiAjaWYgRU5BQkxFKEtFWUJPQVJEX0tFWV9BVFRSSUJVVEUpCiAgICAgLCBtX2tleShr
ZXkua2V5KCkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rh
c2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCmluZGV4IGI2MzE4NDE1MGY1
YTM5MTQyNTJiODQyZWQ5ZDA3ZGVhYWY2YjQwMzYuLmJhNzIyYTExYzcwZmNhODA4MzJlNjRjODUy
N2VlNDZiOWMzNDc2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaApAQCAtNjksNyArNjksOCBA
QCBjbGFzcyBWb2lkTWljcm90YXNrIGZpbmFsIDogcHVibGljIE1pY3JvdGFzayB7CiAgICAgRnVu
Y3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOwogfTsKIAotY2xhc3MgTWljcm90YXNrUXVldWUgewor
Y2xhc3MgTWljcm90YXNrUXVldWUgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNaWNyb3Rhc2tRdWV1ZT47CiAgICAgZnJpZW5k
IGNsYXNzIE1pY3JvdGFzazsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcAppbmRleCA2NmM1ZWEwYjlkNjM0NTQ0MzgxMmZiMTMxZmZlNWRiZTZjYTFkZGYzLi4x
OTNmMjc4MDVhNWFlZDRiNjA2ZTljZWVhM2E5YTM1ZDhiMWU5OTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIHZvaWQg
cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2soKQogICAgIGlmIChtdXRhdGlv
bk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnKQogICAgICAgICByZXR1cm47CiAg
ICAgbXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVkRmxhZyA9IHRydWU7Ci0g
ICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkpOworICAgIE1pY3JvdGFza1F1ZXVlOjpt
YWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90
YXNrPigpKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1ZXVlTXV0YXRpb25SZWNv
cmQoUmVmPE11dGF0aW9uUmVjb3JkPiYmIG11dGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggNTJkYTYxZjc0
ZjFmNTdhZjY4NTQ5ZjM2NjU2MzA2ZDhkMTcwM2M3OS4uMDI3NmU0MmJlNWJkODNmZjQyYTc5MzU2
YmRlOWNlNzM2MDk5Y2JkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA6OmNyCiAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4oV1RGTW92ZShv
YnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOwogfQogCiBib29sIE11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBjOGZjMDEw
NjcyNDVlNGUzNjE5N2EyZjZkNGQxZTQ1NzU0N2JiYzhhLi5lNWM2ZGQxNmE0ZGI2MDliYTUyNzNh
NDdhZjdmYTY4MjY2MmEyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6b2JzZXJ2ZWRTdWJ0cmVlTm9kZVdpbGxEZXRhY2goTm9k
ZSYgbm9kZSkKICAgICBtX29ic2VydmVyLT5zZXRIYXNUcmFuc2llbnRSZWdpc3RyYXRpb24oKTsK
IAogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcykgewotICAgICAgICBtX3Ry
YW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PEdDUmVh
Y2hhYmxlUmVmPE5vZGU+Pj4oKTsKKyAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rl
cyA9IG1ha2VVbmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7CiAKICAgICAg
ICAgQVNTRVJUKCFtX25vZGVLZXB0QWxpdmUpOwogICAgICAgICBtX25vZGVLZXB0QWxpdmUgPSAm
bV9ub2RlOyAvLyBCYWxhbmNlZCBpbiB0YWtlVHJhbnNpZW50UmVnaXN0cmF0aW9ucy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCA3NmQ0ZWE5ZDczMGE5MjM3MmE5ZjhlN2E2ZDhmNjdkMDBmZDNkYmY1Li5j
YWJmMWViNThjOWMyM2NhZDg4NWJkMDFkZjEyMmI2NTFhZTAyYmQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0zOTgsOSArMzk4LDkgQEAgdm9pZCBOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKCkKIHsK
ICAgICBOb2RlUmFyZURhdGEqIGRhdGE7CiAgICAgaWYgKGlzPEVsZW1lbnQ+KCp0aGlzKSkKLSAg
ICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxS
ZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKKyAgICAgICAgZGF0
YSA9IG1ha2VVbmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50Piht
X2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2Uo
KTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9yZW5k
ZXJlcikucmVsZWFzZSgpOwogICAgIEFTU0VSVChkYXRhKTsKIAogICAgIG1fZGF0YS5tX3JhcmVE
YXRhID0gZGF0YTsKQEAgLTIyMTUsNyArMjIxNSw3IEBAIEV2ZW50VGFyZ2V0RGF0YSYgTm9kZTo6
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19l
dmVudFRhcmdldERhdGFNYXBMb2NrKTsKICAgICBzZXRIYXNFdmVudFRhcmdldERhdGEodHJ1ZSk7
Ci0gICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhpcywgc3RkOjptYWtlX3Vu
aXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKmV2
ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0RGF0YT4o
KSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIE5vZGU6OmNsZWFyRXZlbnRUYXJnZXREYXRh
KCkKQEAgLTIyODcsNyArMjI4Nyw3IEBAIHZvaWQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2Vy
dmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9ic2VydmVyCiAgICAgfQog
CiAgICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKLSAgICAgICAgcmVnaXN0cnkuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4ob2JzZXJ2ZXIsICp0aGlz
LCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKKyAgICAgICAgcmVnaXN0cnkuYXBwZW5kKG1h
a2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4ob2JzZXJ2ZXIsICp0aGlzLCBv
cHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKICAgICAgICAgcmVnaXN0cmF0aW9uID0gcmVnaXN0
cnkubGFzdCgpLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4
IDc2OTBkNTk5ZmNhN2RjOTljYjQ5ZTE2MGZiZTJhZmFkZGYwMGNkZjQuLjc2NmQ2N2YzZjZkNjI5
YWYwODk0MmFkYzIzZTJjMjJjMjlmM2U0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgK
QEAgLTI4MSw3ICsyODEsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVE
YXRhQmFzZSB7CiAgICAgTm9kZUxpc3RzTm9kZURhdGEmIGVuc3VyZU5vZGVMaXN0cygpCiAgICAg
ewogICAgICAgICBpZiAoIW1fbm9kZUxpc3RzKQotICAgICAgICAgICAgbV9ub2RlTGlzdHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOworICAgICAgICAgICAgbV9ub2Rl
TGlzdHMgPSBtYWtlVW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOwogICAgICAgICByZXR1cm4g
Km1fbm9kZUxpc3RzOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OSw3IEBAIGNsYXNzIE5vZGVSYXJl
RGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsKICAgICBOb2RlTXV0YXRpb25PYnNlcnZl
ckRhdGEmIGVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkKICAgICB7CiAgICAgICAgIGlmICgh
bV9tdXRhdGlvbk9ic2VydmVyRGF0YSkKLSAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKKyAgICAg
ICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBtYWtlVW5pcXVlPE5vZGVNdXRhdGlvbk9i
c2VydmVyRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICptX211dGF0aW9uT2JzZXJ2ZXJEYXRhOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKaW5kZXggNTMz
N2M1OGNkZmJiYWFiMjMwMTg0NTAyNjM4ZGM2MzQ0OWY3OTZhYy4uNjFiYmM0ZWRmZjkzNGE2NDQ2
ZWEyNTY3NTU2NjNmZDU0Njg3N2UzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
ZGlvQnV0dG9uR3JvdXBzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25H
cm91cHMuY3BwCkBAIC0xOTgsMTEgKzE5OCwxMSBAQCB2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjph
ZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQotICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gc3Rk
OjptYWtlX3VuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKKyAgICAgICAgbV9uYW1lVG9Hcm91cE1h
cCA9IG1ha2VVbmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CiAKICAgICBhdXRvJiBncm91cCA9IG1f
bmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50Lm5hbWUoKS5pbXBsKCksIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoIWdyb3VwKQotICAgICAgICBncm91cCA9IHN0ZDo6bWFrZV91
bmlxdWU8UmFkaW9CdXR0b25Hcm91cD4oKTsKKyAgICAgICAgZ3JvdXAgPSBtYWtlVW5pcXVlPFJh
ZGlvQnV0dG9uR3JvdXA+KCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGM4MjVhN2Vk
ZWU2YmIyZDVmNTE2YzZkM2U2ZWE3NDEwZTZlY2M3NTYuLjA0YWZlOWQ3OGFkMGJkMTAyOGE2NzAz
YzBmYzNkNGY2NTNiMTNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKQEAgLTM3OSw4ICszNzksOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bgogewogICAgIGlmIChtX2luRGlzcGF0Y2hFcnJvckV2ZW50KSB7CiAgICAgICAgIGlmICghbV9w
ZW5kaW5nRXhjZXB0aW9ucykKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2VwdGlvbj4+Pigp
OwotICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQ
ZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
c291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0V4
Y2VwdGlvbnMgPSBtYWtlVW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2Vw
dGlvbj4+PigpOworICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQobWFrZVVuaXF1
ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNDE0LDkgKzQxNCw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVw
b3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhCiAgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlv
bjogIiwgcmVzdWx0TWVzc2FnZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2Fn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVz
c2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtZXNzYWdlID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjYWxsU3Rh
Y2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVy
cm9yTWVzc2FnZSk7CiAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9
CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBSZWplY3RlZFByb21pc2VUcmFja2VyJiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdwogICAgIC8vIFdo
ZW4gaW5pdGlhbGl6aW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHZtKCkgaXMgbm90IHJlYWR5
LgogCiAgICAgQVNTRVJUKCFtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIpOwotICAgIG1fcmVqZWN0
ZWRQcm9taXNlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tl
cj4oKnRoaXMsIHZtKCkpOworICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IG1ha2VVbmlx
dWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOwogICAgIHJldHVybiAqbV9y
ZWplY3RlZFByb21pc2VUcmFja2VyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JR
dWVyeS5jcHAKaW5kZXggNTVkYzJjODdhNGFjMjAyZDcxYWRkYTY2ZDU5NmI1ZmVhMGJjODg1Ni4u
MjEwOWNlNGEyMjhjM2U3YmE4N2E0YmE1MmIyZGIyODIzNjA4NzEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVj
dG9yUXVlcnkmPiBTZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBTdHJpbmcmIHNlbGVjdG9y
cywgRG9jCiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbWF4aW11bVNlbGVjdG9yUXVlcnlD
YWNoZVNpemUpCiAgICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRyaWVzLnJhbmRvbSgpKTsK
IAotICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIHN0ZDo6bWFrZV91bmlxdWU8
U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIG1ha2VVbmlxdWU8U2VsZWN0b3JR
dWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjk2M2I2ODM3OWQ4OGYyN2E4NGUyZjFkYTY1
MTUzODE4MDViMjkzYy4uNjc4NmMwZDIxZTFiMmMyYTU3ODUxYmQwODUxNjRjMWExZTkyYzk5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNTgsNyArNTgsNyBAQCBTaGFkb3dSb290
OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93Um9vdE1vZGUgdHlwZSkKICAg
ICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBU
cmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50KQogICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX3N0
eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1f
c3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogewogfQogCkBAIC02
Nyw3ICs2Nyw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYgc2xvCiAgICAgOiBEb2N1bWVudEZyYWdt
ZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBk
b2N1bWVudCkKICAgICAsIG1fdHlwZShTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQotICAgICwg
bV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAg
LCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKICAgICAsIG1f
c2xvdEFzc2lnbm1lbnQoV1RGTW92ZShzbG90QXNzaWdubWVudCkpCiB7CiB9CkBAIC0xNDcsNyAr
MTQ3LDcgQEAgdm9pZCBTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQmIG5ld0RvY3VtZW50KQogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oIXBhcmVudFRyZWVTY29wZSgpIHx8ICZwYXJlbnRUcmVlU2NvcGUoKS0+ZG9jdW1l
bnRTY29wZSgpID09ICZuZXdEb2N1bWVudCk7CiAKICAgICAvLyBTdHlsZSBzY29wZXMgYXJlIGRv
Y3VtZW50IHNwZWNpZmljLgotICAgIG1fc3R5bGVTY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5
bGU6OlNjb3BlPigqdGhpcyk7CisgICAgbV9zdHlsZVNjb3BlID0gbWFrZVVuaXF1ZTxTdHlsZTo6
U2NvcGU+KCp0aGlzKTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50KTsKIH0KIApAQCAt
MjI4LDcgKzIyOCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29u
c3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzCiB7CiAgICAgQVNTRVJUKCZz
bG90LnJvb3ROb2RlKCkgPT0gdGhpcyk7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50KQotICAg
ICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90QXNzaWdubWVudD4o
KTsKKyAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IG1ha2VVbmlxdWU8U2xvdEFzc2lnbm1lbnQ+
KCk7CiAKICAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+YWRkU2xvdEVsZW1lbnRCeU5hbWUo
bmFtZSwgc2xvdCwgKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Ns
b3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAK
aW5kZXggYTQxOWRkYTUyOGFjY2JkYTZkZTlkZGYxYTU0ODY0Y2ZkZjkxNjBlZi4uNDVjMDhlYTM2
YWZlMTM5N2JlMGVjYmZiMjllMjI4ZWNkMGM5OTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFz
c2lnbm1lbnQuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6YWRk
U2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW4K
ICAgICAgICAgLy8gdG8gYXZvaWQgYWx3YXlzIGhhdmluZyBhIHZlY3RvciBvZiBhbGwgY2hpbGQg
bm9kZXMgb2YgYSBzaGFkb3cgaG9zdC4KICAgICAgICAgaWYgKHNsb3ROYW1lID09IGRlZmF1bHRT
bG90TmFtZSgpKQogICAgICAgICAgICAgbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYXV0byYgc2xvdCA9ICphZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIGJvb2wgbmVlZHNTbG90Y2hhbmdlRXZlbnQgPSBzaGFk
b3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNBc3NpZ25lZE5vZGVzKHNo
YWRvd1Jvb3QsIHNsb3QpOwpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6
OmFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWUpCiAg
ICAgfQogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nsb3RzLmVuc3VyZShzbG90TmFtZSwgW10g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90PigpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUtPmFzc2lnbmVkTm9kZXMuYXBwZW5kKCZjaGlsZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGUuY3BwCmluZGV4IDJmMjg3MGQxNjY5ZDQ0YmM2MTg0YTcyZWM2M2ViMzIzZjUyN2QzOWYuLjUz
MWFjZGY0ZGQ2NTY4ZTBmNDYyMWViNTBkODlkZWU0NjdkNTVhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFRyZWVTY29wZTo6VHJlZVNjb3BlKFNoYWRvd1Jv
b3QmIHNoYWRvd1Jvb3QsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUoc2hh
ZG93Um9vdCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50
VHJlZVNjb3BlKCZkb2N1bWVudCkKLSAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0
ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQorICAgICwgbV9pZFRh
cmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+
KCkpCiB7CiAgICAgc2hhZG93Um9vdC5zZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtNzMsNyAr
NzMsNyBAQCBUcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBt
X3Jvb3ROb2RlKGRvY3VtZW50KQogICAgICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQogICAg
ICwgbV9wYXJlbnRUcmVlU2NvcGUobnVsbHB0cikKLSAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQorICAg
ICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnk+KCkpCiB7CiAgICAgZG9jdW1lbnQuc2V0VHJlZVNjb3BlKCp0aGlzKTsKIH0KQEAg
LTE0MSw3ICsxNDEsNyBAQCBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBUcmVlU2NvcGU6OmdldEFs
bEVsZW1lbnRzQnlJZChjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50SQogdm9pZCBUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBlbGVtZW50SWQsIEVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wgbm90aWZ5T2JzZXJ2ZXJzKQogewogICAgIGlmICghbV9lbGVtZW50c0J5
SWQpCi0gICAgICAgIG1fZWxlbWVudHNCeUlkID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVP
cmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IG1ha2VVbmlxdWU8VHJlZVNj
b3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlJZC0+YWRkKGVsZW1lbnRJZCwgZWxl
bWVudCwgKnRoaXMpOwogICAgIGlmIChub3RpZnlPYnNlcnZlcnMpCiAgICAgICAgIG1faWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVudElkKTsKQEAgLTE2OCw3
ICsxNjgsNyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRv
bVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlOYW1lKGNv
bnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICgh
bV9lbGVtZW50c0J5TmFtZSkKLSAgICAgICAgbV9lbGVtZW50c0J5TmFtZSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9lbGVtZW50c0J5TmFtZSA9
IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlOYW1l
LT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdm9p
ZCBUcmVlU2NvcGU6OmFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50JiBpbWFnZU1hcCkKICAgICBp
ZiAoIW5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1faW1hZ2VNYXBzQnlOYW1lKQot
ICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3Jk
ZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVT
Y29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9pbWFnZU1hcHNCeU5hbWUtPmFkZCgqbmFtZSwgaW1h
Z2VNYXAsICp0aGlzKTsKIH0KIApAQCAtMjYzLDcgKzI2Myw3IEBAIEhUTUxNYXBFbGVtZW50KiBU
cmVlU2NvcGU6OmdldEltYWdlTWFwKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lk
IFRyZWVTY29wZTo6YWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoY29uc3QgQXRvbVN0cmluZ0ltcGwm
IG5hbWUsIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2ltYWdlc0J5
VXNlbWFwKQotICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVl
U2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gbWFrZVVuaXF1
ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIHJldHVybiBtX2ltYWdlc0J5VXNlbWFwLT5h
ZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgSFRNTExh
YmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJlbEVsZW1lbnRGb3JJZChjb25zdCBBdG9tU3RyaW5n
JiBmb3JBdHRyaWJ1dGVWYWwKIAogICAgIGlmICghbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSkgewog
ICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgbWFwIG9uIGZpcnN0IGFjY2Vzcy4KLSAgICAgICAgbV9s
YWJlbHNCeUZvckF0dHJpYnV0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1h
cD4oKTsKKyAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8VHJlZVNj
b3BlT3JkZXJlZE1hcD4oKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGxhYmVsIDogZGVzY2VuZGFu
dHNPZlR5cGU8SFRNTExhYmVsRWxlbWVudD4obV9yb290Tm9kZSkpIHsKICAgICAgICAgICAgIGNv
bnN0IEF0b21TdHJpbmcmIGZvclZhbHVlID0gbGFiZWwuYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihmb3JBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAppbmRleCBkZGE0OTBiMTNjZGMyZGRiODNmYjFmYzhmZmFiMDlkZjAwODhkODJj
Li40MjY4MTk2Zjg5MmFmMzA1NTEwM2M0ODcyZmU4ZWNiZGQ1ZjExYWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC00MSw2ICs0MSw3IEBA
IGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiBjbGFzcyBUZXh0OwogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5
VW5kb1JlcGxhY2VkVGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgQWNjZXNzaWJpbGl0eVVuZG9SZXBsYWNlZFRleHQoKSB7IH0KICAgICB2b2lkIGNvbmZp
Z3VyZVJhbmdlRGVsZXRlZEJ5UmVhcHBseVdpdGhTdGFydGluZ1NlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNzkzNDJjNDk3
NzUzZDlhMTUyNmUwNTU1NDlmYzc3OTcyMTRiZjZlNC4uODkxYzEyODhjNmUzMTRhY2NhZTliNjI3
MTk3ODE4ODFlNzQyZGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzgwLDEy
ICszODAsMTIgQEAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZv
ckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCwKICAgICBzd2l0Y2ggKGtpbmQpIHsK
ICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6Q29weToKICAgICBjYXNlIENsaXBib2FyZEV2
ZW50S2luZDo6Q3V0OgotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGUsIHN0
ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAgICAgIHJldHVybiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpT
dG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKICAg
ICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1BsYWluVGV4dDoKICAgICAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVib2Fy
ZERhdGFFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0VHlwZSA9ICJ0ZXh0
L3BsYWluIl9zOwogICAgICAgICAgICAgYXV0byBwbGFpblRleHQgPSBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoKS0+cmVhZFN0cmluZyhwbGFpblRleHRUeXBlKTsKLSAgICAgICAg
ICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4o
KTsKKyAgICAgICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKHBsYWluVGV4dFR5
cGUsIHBsYWluVGV4dCk7CiAgICAgICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25s
eSwgV1RGTW92ZShwYXN0ZWJvYXJkKSk7CiAgICAgICAgIH0KQEAgLTM5NiwxMCArMzk2LDEwIEBA
IHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRF
dmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJl
Zm9yZUNvcHk6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJlZm9yZUN1dDoKICAgICBj
YXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlUGFzdGU6Ci0gICAgICAgIHJldHVybiBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpT
dG9yZU1vZGU6OkludmFsaWQsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7
CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1
bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIG1ha2VVbmlxdWU8U3RhdGlj
UGFzdGVib2FyZD4oKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRy
YW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKSk7CisgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1ZTxT
dGF0aWNQYXN0ZWJvYXJkPigpKTsKIH0KIAogLy8gUmV0dXJucyB3aGV0aGVyIGNhbGxlciBzaG91
bGQgY29udGludWUgd2l0aCAidGhlIGRlZmF1bHQgcHJvY2Vzc2luZyIsIHdoaWNoIGlzIHRoZSBz
YW1lIGFzCkBAIC0xMTgzLDkgKzExODMsOSBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGlu
ZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikKIAogRWRpdG9yOjpFZGl0b3Io
RnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKLSAgICAsIG1fa2lsbFJpbmcoc3Rk
OjptYWtlX3VuaXF1ZTxQQUw6OktpbGxSaW5nPigpKQotICAgICwgbV9zcGVsbENoZWNrZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTcGVsbENoZWNrZXI+KGZyYW1lKSkKLSAgICAsIG1fYWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+
KGZyYW1lKSkKKyAgICAsIG1fa2lsbFJpbmcobWFrZVVuaXF1ZTxQQUw6OktpbGxSaW5nPigpKQor
ICAgICwgbV9zcGVsbENoZWNrZXIobWFrZVVuaXF1ZTxTcGVsbENoZWNrZXI+KGZyYW1lKSkKKyAg
ICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAsIG1fZWRpdG9yVUlVcGRhdGVUaW1lcigqdGhpcywg
JkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1lckZpcmVkKQogI2lmIEVOQUJMRShURUxFUEhPTkVf
TlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3RlbGVw
aG9uZU51bWJlckRldGVjdGlvblVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjpzY2FuU2VsZWN0
aW9uRm9yVGVsZXBob25lTnVtYmVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggMGRkYzE1YmRjMGQzMDRmNDU0M2EwNTk2
MmJjNmNjNzY0NWY1NDc5NC4uMmMyMDI4Y2M2M2MxYjkzOGJjNjZmZjRiZWE1ODk5MjU4ZTlhNGE0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKQEAgLTE2MzEsNyArMTYzMSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OnVwZGF0ZU5vZGVzSW5zZXJ0ZWQoTm9kZSAqbm9kZSkKIFJlcGxhY2VtZW50RnJhZ21lbnQq
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNlbWVudEZyYWdtZW50KCkKIHsK
ICAgICBpZiAoIW1fcmVwbGFjZW1lbnRGcmFnbWVudCkKLSAgICAgICAgbV9yZXBsYWNlbWVudEZy
YWdtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlbWVudEZyYWdtZW50PihtX2RvY3VtZW50
RnJhZ21lbnQuZ2V0KCksIGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICAgICAgbV9yZXBsYWNlbWVu
dEZyYWdtZW50ID0gbWFrZVVuaXF1ZTxSZXBsYWNlbWVudEZyYWdtZW50PihtX2RvY3VtZW50RnJh
Z21lbnQuZ2V0KCksIGVuZGluZ1NlbGVjdGlvbigpKTsKICAgICByZXR1cm4gbV9yZXBsYWNlbWVu
dEZyYWdtZW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvblJlY3RHYXRoZXJlci5jcHAKaW5kZXggM2I0MDY4OGNiNGRhNjU2YjM0NDU4N2MwODg4NjM2
YzBhYjE1NjZjZi4uZjliNjRjNWM4Yzg5NmJmMzIyNjMwODcwOWYyNmFhNjY3ZTFlZDk4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcApA
QCAtODEsNyArODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpO
b3RpZmllcj4gU2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZAogICAgIG1fZ2FwUmVjdHMu
Y2xlYXIoKTsKICAgICBtX2lzVGV4dE9ubHkgPSB0cnVlOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Tm90aWZpZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOb3RpZmll
cj4oKnRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggMTg5NmUxYTIyODFjMWE5YjA0NmU4ZWZhY2Q5MTE5
YWY1ZTI3N2Q1Ni4uZjFkMTljMTAxMTRjMWE5ODViOGI0MjZmYTY4ZmRiODEyMmE2MGM3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtNjUwLDcgKzY1MCw3IEBA
IGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgIHVuc2lnbmVkIGVu
ZFBvc2l0aW9uID0gKG1fbm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9lbmRPZmZzZXQpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICBpZiAo
IW1fZmxvd1J1blJlc29sdmVyQ2FjaGUgfHwgJm1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPmZsb3co
KSAhPSAmYmxvY2tGbG93KSB7CiAgICAgICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExl
bmd0aEluRmxvdyA9IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPyAwIDogdGV4dE5vZGVPZmZzZXRJ
bkZsb3codGV4dE5vZGUpOwotICAgICAgICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywg
KmxheW91dCk7CisgICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gbWFrZVVuaXF1
ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKICAg
ICAgICAgfQogICAgICAgICAvLyBTa2lwIHRvIG1fb2Zmc2V0IHBvc2l0aW9uLgogICAgICAgICBh
dXRvIHJhbmdlID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+cmFuZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
aW5kZXggMGE4M2FjMDk1OTI3NGMwNzgwZDVkN2IzODVmMDE5YzBlODZlM2M3NC4uOWNmODZhNGEx
NWYxYzdjNmYwMjgxNTU2NDdhZmEwMDU5YWUzYjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzgwLDcgKzM4MCw3IEBAIEhUTUxDb252
ZXJ0ZXI6OkhUTUxDb252ZXJ0ZXIoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlv
biYgZW5kKQogICAgIF9mbGFncy5yZWFjaGVkU3RhcnQgPSBmYWxzZTsKICAgICBfZmxhZ3MucmVh
Y2hlZEVuZCA9IGZhbHNlOwogICAgIAotICAgIF9jYWNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhU
TUxDb252ZXJ0ZXJDYWNoZXM+KCk7CisgICAgX2NhY2hlcyA9IG1ha2VVbmlxdWU8SFRNTENvbnZl
cnRlckNhY2hlcz4oKTsKIH0KIAogSFRNTENvbnZlcnRlcjo6fkhUTUxDb252ZXJ0ZXIoKQpAQCAt
NTUxLDcgKzU1MSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gSFRNTENvbnZlcnRlckNhY2hlczo6Y29t
cHV0ZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudChFbGVtZW50JiBlCiAKICAgICBhdXRvIHJlc3Vs
dCA9IG1fY29tcHV0ZWRTdHlsZXMuYWRkKCZlbGVtZW50LCBudWxscHRyKTsKICAgICBpZiAocmVz
dWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+KCZlbGVtZW50LCB0cnVlKTsKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8Q29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcj4oJmVsZW1lbnQsIHRydWUpOwogICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3ImIGNvbXB1
dGVkU3R5bGUgPSAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4gY29tcHV0ZWRT
dHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5SWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAppbmRleCAy
NTc3ZDVhNzY5NjgxNjIyZjVkMGE3YjYzZmY0ZDA5ZDg4Yzk1ZGMxLi4yOWM1YThkYTdlZTMyNTU2
MTI2NTY5MDU0ZTMwMjIyOGE1MzAxODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMzcsNiArMzcs
NyBAQCBPQkpDX0NMQVNTIE5TVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoKSB7IH0KICAgICAvLyBS
ZXR1cm5zIGEgY29udGV4dCBJRC4KQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyIHsKICAgICB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKIAogICAg
IGNsYXNzIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFsZXJuYXRpdmVUZXh0Q29u
dGV4dENvbnRyb2xsZXIoKSB7IH0KICAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNv
bnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggZmI0MzcxNjMwM2FlMjViODE5MjkyZDI3MWNhMmNhZTY4NGI5YzAyZS4uYzNj
OGY4YjMyNGJmZWNkY2U5ZTVjNGViMTliNWI3NDYwODkyOGMzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVh
dGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3Vy
YXRpb24gPSBwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKTsKICAgICAKLSAgICBh
dXRvIHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24pKTsKICAgICBwYWdlLT5zZXRJc0ZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAg
ICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2UpOwogICAgIHBhZ2UtPnNl
dHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggYTA5NWVlYWU5YjJhNzk3YmRhYmFlMzQ5NDBmZGM2
YTNjZTMwNDI0Yi4uZDU4MTEyZmY5YmRmNmNkN2QxOTg1NTJkODY2OTkxZjg1YjdhMWMzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtOTQsMTEgKzk0
LDExIEBAIHN0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rpb248dm9pZCAoKT4mJiBm
dW5jdGlvbikKICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBxdWV1ZS5nZXQoKS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsK
KyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RG
TW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0o
RmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQotICAgIDogbV9pbnRlcm5hbHMoc3RkOjptYWtlX3Vu
aXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkpCisgICAgOiBtX2ludGVybmFscyhtYWtlVW5pcXVlPElu
dGVybmFscz4oY2xpZW50KSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggOWFkM2RhOWVmZmYwZjNhNzA3YTA2
MDFmNzg2MDFkNWQ4NjgyNThmNS4uOTlhN2I1YzZmOTg3YTE0YmExOTA5NDU4OTg3YWU4NGVjZmM0
ZjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMzksNyArMTM5
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmlsZVJlYWRlcjo6cmVhZEludGVybmFsKEJsb2ImIGJs
b2IsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXAKICAgICBtX3N0YXRlID0gTE9BRElORzsKICAg
ICBtX2Vycm9yID0gbnVsbHB0cjsKIAotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlUmVhZGVyTG9hZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVy
Q2xpZW50Kj4odGhpcykpOworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9h
ZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhp
cykpOwogICAgIG1fbG9hZGVyLT5zZXRFbmNvZGluZyhtX2VuY29kaW5nKTsKICAgICBtX2xvYWRl
ci0+c2V0RGF0YVR5cGUobV9ibG9iLT50eXBlKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcAppbmRleCA2YWU1NTJjYmNlZmJhMzVhZjU0OTRhZDgwYTE0NzMxZDAwYWNhM2QxLi41
YzhmMThlM2RhYjBlYjI1OTdhZDVlODIyMTM5YmQ4OGZmMzI0ZTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIENhY2hlZEZyYW1lOjpD
YWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAKICAgICAvLyBDcmVhdGUgdGhlIENhY2hlZEZyYW1l
cyBmb3IgYWxsIEZyYW1lcyBpbiB0aGUgRnJhbWVUcmVlLgogICAgIGZvciAoRnJhbWUqIGNoaWxk
ID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUo
KS5uZXh0U2libGluZygpKQotICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKKyAgICAgICAgbV9jaGlsZEZyYW1lcy5hcHBl
bmQobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4oKmNoaWxkKSk7CiAKICAgICBSRUxFQVNFX0FTU0VS
VChtX2RvY3VtZW50LT5kb21XaW5kb3coKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVu
dC0+ZnJhbWUoKSk7CkBAIC0xNzIsNyArMTcyLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1l
KEZyYW1lJiBmcmFtZSkKICAgICAvLyBBY3RpdmUgRE9NIG9iamVjdHMgbXVzdCBiZSBzdXNwZW5k
ZWQgYmVmb3JlIHdlIGNhY2hlIHRoZSBmcmFtZSBzY3JpcHQgZGF0YS4KICAgICBtX2RvY3VtZW50
LT5zdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZSk7CiAKLSAgICBtX2NhY2hl
ZEZyYW1lU2NyaXB0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0Q2FjaGVkRnJhbWVEYXRh
PihmcmFtZSk7CisgICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEgPSBtYWtlVW5pcXVlPFNjcmlw
dENhY2hlZEZyYW1lRGF0YT4oZnJhbWUpOwogCiAgICAgbV9kb2N1bWVudC0+ZG9tV2luZG93KCkt
PnN1c3BlbmRGb3JQYWdlQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5j
cHAKaW5kZXggMDY4NmFlOGZlY2U0NGYxZWY2OTBlNWY4ZjZhYmU4NDYxNDYzZGY3ZC4uOTc0N2E0
MDQwMTZhYzg2OGQyZjc3OTZlNTMzMDQzNmZmYTU4NzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZFBhZ2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JB
TChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgY2FjaGVkUGFnZUNvdW50ZXIsICgiQ2FjaGVk
CiBDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkK
ICAgICAsIG1fZXhwaXJhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBTZWNvbmRzKHBh
Z2Uuc2V0dGluZ3MoKS5iYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsKCkpKQotICAg
ICwgbV9jYWNoZWRNYWluRnJhbWUoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5t
YWluRnJhbWUoKSkpCisgICAgLCBtX2NhY2hlZE1haW5GcmFtZShtYWtlVW5pcXVlPENhY2hlZEZy
YW1lPihwYWdlLm1haW5GcmFtZSgpKSkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2FjaGVkUGFn
ZUNvdW50ZXIuaW5jcmVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5k
ZXggMDAyOTY1NTg5MmQxNTRjYjUwNDNlMWRhMjI4MjU4NzlmNjNlZGRlNS4uM2JhMjRiOWRlMmU5
OTQxOTZhMGRmOTJmYzM2NjNjZWVhNWJmNGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNh
Y2hlLmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBAIGJvb2wgUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJs
ZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKICAgICAgICAgLy8gTWFrZSBzdXJlIHdl
IGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHRE
aXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAg
ICAgICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFBhZ2U+KCpw
YWdlKTsKKyAgICAgICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBtYWtlVW5pcXVlPENhY2hlZFBhZ2U+
KCpwYWdlKTsKICAgICAgICAgaXRlbS5tX3BydW5pbmdSZWFzb24gPSBQcnVuaW5nUmVhc29uOjpO
b25lOwogICAgICAgICBtX2l0ZW1zLmFkZCgmaXRlbSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAKaW5kZXggN2E5OTFmMTdiMDNkODNlOTA1ZjdkM2UwNjA3YmY1MmE5
OWI4MGU0NS4uYjE0ZDMxMDE1OGI2NDVmZTg2OTlmN2Y5OWY0MTg1OGJkNTVhZTI4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBG
aWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAg
ICAgICAgIG1fZmlsZUljb25Mb2FkZXItPmludmFsaWRhdGUoKTsKIAogICAgIEZpbGVJY29uTG9h
ZGVyQ2xpZW50JiBjbGllbnQgPSAqdGhpczsKLSAgICBtX2ZpbGVJY29uTG9hZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxGaWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKKyAgICBtX2ZpbGVJY29uTG9hZGVy
ID0gbWFrZVVuaXF1ZTxGaWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKIAogICAgIGNocm9tZS0+bG9h
ZEljb25Gb3JGaWxlcyhwYXRocywgKm1fZmlsZUljb25Mb2FkZXIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IDgwNmU1ZjNkYWViZTI5
NGUzMzAyMzBkZmE1ZWRlOGM5MmQ1OGMzMTguLjE3YzAyN2NmZGZhMWJiNDNiNjQ1ZWU2MmQ1OGM4
YWMzMjA2ZDg3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0
ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6
c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHZvaWQgRm9ybUFzc29jaWF0
ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oYXNIVE1MRWxlbWVudCgpLmlzQ29ubmVjdGVk
KCkpOwotICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMpOworICAgIG1fZm9ybUF0dHJp
YnV0ZVRhcmdldE9ic2VydmVyID0gbWFrZVVuaXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1B
dHRyKSwgKnRoaXMpOwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJp
YnV0ZVRhcmdldENoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApp
bmRleCBlYTViMDlhYWEwOGRiMjczOTYxYjk1MzQyMmYwM2RkN2FkNmU0NjcxLi5kMGUwM2Y1NmNi
MDYzZTI3ZjExMzQwYTI3MTNkNGY5NjFiNWFlNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZv
cm1TdGF0ZT4gU2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+
CiAgICAgc2l6ZV90IGl0ZW1Db3VudCA9IHN0YXRlVmVjdG9yW2luZGV4KytdLnRvVUludCgpOwog
ICAgIGlmICghaXRlbUNvdW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNh
dmVkRm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKKyAgICBh
dXRvIHNhdmVkRm9ybVN0YXRlID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAgICB3
aGlsZSAoaXRlbUNvdW50LS0pIHsKICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSBzdGF0ZVZlY3Rv
ci5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2NSwxMyArMzY1LDEz
IEBAIHN0YXRpYyBTdHJpbmcgZm9ybVN0YXRlU2lnbmF0dXJlKCkKIHN0ZDo6dW5pcXVlX3B0cjxG
b3JtQ29udHJvbGxlcjo6U2F2ZWRGb3JtU3RhdGVNYXA+IEZvcm1Db250cm9sbGVyOjpjcmVhdGVT
YXZlZEZvcm1TdGF0ZU1hcChjb25zdCBGb3JtRWxlbWVudExpc3RIYXNoU2V0JiBjb250cm9sTGlz
dCkKIHsKICAgICBGb3JtS2V5R2VuZXJhdG9yIGtleUdlbmVyYXRvcjsKLSAgICBhdXRvIHN0YXRl
TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4oKTsKKyAgICBhdXRvIHN0
YXRlTWFwID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4oKTsKICAgICBmb3IgKGF1dG8m
IGNvbnRyb2wgOiBjb250cm9sTGlzdCkgewogICAgICAgICBpZiAoIWNvbnRyb2wtPnNob3VsZFNh
dmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGF1dG8mIGZvcm1TdGF0ZSA9IHN0YXRlTWFwLT5hZGQoa2V5R2VuZXJhdG9yLmZvcm1L
ZXkoKmNvbnRyb2wpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBp
ZiAoIWZvcm1TdGF0ZSkKLSAgICAgICAgICAgIGZvcm1TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
U2F2ZWRGb3JtU3RhdGU+KCk7CisgICAgICAgICAgICBmb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNh
dmVkRm9ybVN0YXRlPigpOwogICAgICAgICBmb3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0ZShj
b250cm9sLT5uYW1lKCksIGNvbnRyb2wtPnR5cGUoKSwgY29udHJvbC0+c2F2ZUZvcm1Db250cm9s
U3RhdGUoKSk7CiAgICAgfQogICAgIHJldHVybiBzdGF0ZU1hcDsKQEAgLTQwMyw3ICs0MDMsNyBA
QCBGb3JtQ29udHJvbFN0YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVu
dChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbAogICAgIGlmIChtX3NhdmVkRm9ybVN0YXRlTWFwLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoKTsKICAgICBpZiAoIW1f
Zm9ybUtleUdlbmVyYXRvcikKLSAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxGb3JtS2V5R2VuZXJhdG9yPigpOworICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3Ig
PSBtYWtlVW5pcXVlPEZvcm1LZXlHZW5lcmF0b3I+KCk7CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9zYXZlZEZvcm1TdGF0ZU1hcC5maW5kKG1fZm9ybUtleUdlbmVyYXRv
ci0+Zm9ybUtleShjb250cm9sKS5pbXBsKCkpOwogICAgIGlmIChpdCA9PSBtX3NhdmVkRm9ybVN0
YXRlTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAxMDQ3YzU4ZWVjMzUzNmUz
ZDM5OTNhN2I2ZTU4NjI1YjAxNTk1MmYxLi5lYjliZDA2ODVkNTkyZWE2OTIzMTNhZDQxNmMyN2Q3
ZjI4MjYxZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApA
QCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6Omhhc1JlbChSZWxhdGlv
biByZWxhdGlvbikgY29uc3QKIERPTVRva2VuTGlzdCYgSFRNTEFuY2hvckVsZW1lbnQ6OnJlbExp
c3QoKSBjb25zdAogewogICAgIGlmICghbV9yZWxMaXN0KSB7Ci0gICAgICAgIG1fcmVsTGlzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0PEhUTUxBbmNob3JFbGVt
ZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmll
dyB0b2tlbikgeworICAgICAgICBtX3JlbExpc3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4o
Y29uc3RfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCY+KCp0aGlzKSwgSFRNTE5hbWVzOjpyZWxBdHRy
LCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJ
RVcpCiAgICAgICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm5v
cmVmZXJyZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAibm9vcGVuZXIiKSB8
fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAiYXIiKTsKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggYWMwNzU4ZGU4M2IwNDg4MmE1ZDg5MjJm
ZDQwNTU0OGVmOTU2ZGNhMi4uNDlhYmZhNWY3MGE3YWI5N2Q3M2UyYzgyYjc2N2IwNTM1MWFkZWY4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtODMsNyArODMs
NyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFJlZ2lvbigpCiBib29s
IEhUTUxBcmVhRWxlbWVudDo6bWFwTW91c2VFdmVudChMYXlvdXRQb2ludCBsb2NhdGlvbiwgY29u
c3QgTGF5b3V0U2l6ZSYgc2l6ZSwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlmICht
X2xhc3RTaXplICE9IHNpemUpIHsKLSAgICAgICAgbV9yZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhdGg+KGdldFJlZ2lvbihzaXplKSk7CisgICAgICAgIG1fcmVnaW9uID0gbWFrZVVuaXF1ZTxQ
YXRoPihnZXRSZWdpb24oc2l6ZSkpOwogICAgICAgICBtX2xhc3RTaXplID0gc2l6ZTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggYTliYjRm
YjhlMDYzZTcwMTVmMWE2NGU3ZDg2ZmViMzU4ZmZjMjdjZC4uODk0ZTYzOThiOGE0ZWNkZGVkZjll
MTk4OGE0MTRjMTcxYjI4NjliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAKQEAgLTk1OSw3ICs5NTksNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRJ
bWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKSBjbwogICAg
IG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVl
KTsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShkZWZhdWx0SW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIG1faW1hZ2VCdWZmZXItPmNv
bnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7Ci0gICAgbV9jb250ZXh0U3RhdGVTYXZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcj4obV9pbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpKTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gbWFrZVVuaXF1ZTxHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayhIVE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT52bSgpKTsKICAgICBIVE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52
bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQobWVtb3J5Q29zdCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggOTc2YzhlMGE5YTA2YTliODNkNmNh
OTQxYmQ1ZGQzN2I5ZjMzODVjNS4uMzI4MTc2YjY5ZThjZDFiZjIyZDRlNzYzMjdlOWYyOTI5Njhh
YjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTIwNSw3ICsy
MDUsNyBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNv
bnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRD
YWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVt
ZW50Q2FjaGU+KCk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGYxNTc4NzRlNmQ1MzRlM2Y2MTM0ZTRhNWRmNGY1MWJl
MmY2N2EzMWEuLjYwZGQxZmIyNTIwMzg2MGQzZDkyYTdhNWFjYjMzMWMyYWIwNGI1OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTg4LDcgKzg4LDcg
QEAgY29uc3QgQXRvbVN0cmluZyYgRGV0YWlsc1Nsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhv
c3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkKIFJlZjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxE
ZXRhaWxzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIGRldGFpbHMgPSBhZG9wdFJlZigqbmV3IEhUTUxE
ZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIGRldGFpbHMtPmFkZFNoYWRv
d1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERldGFp
bHNTbG90QXNzaWdubWVudD4oKSkpOworICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93
Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlVW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4o
KSkpOwogICAgIHJldHVybiBkZXRhaWxzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBkODg5M2IxZjA5NDllZjEwMmUyOWQwM2M1
ODk2N2M0ZGQ0ZjNmZDVhLi5lMTUzMTZhMTllZWZiNDc3ZTNmMzY3YzgwZjdjM2MxYTJhNjM0Yjg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAK
QEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZp
c2libGVWYWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlk
YXRlKCkpCiAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZSgpLnN0cmlwV2hpdGVT
cGFjZSgpOwogICAgIGlmICghbV92YWxpZGF0aW9uTWVzc2FnZSkKLSAgICAgICAgbV92YWxpZGF0
aW9uTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMpOwor
ICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gbWFrZVVuaXF1ZTxWYWxpZGF0aW9uTWVzc2Fn
ZT4odGhpcyk7CiAgICAgbV92YWxpZGF0aW9uTWVzc2FnZS0+dXBkYXRlVmFsaWRhdGlvbk1lc3Nh
Z2UobWVzc2FnZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggNmVjMjJkNzc0OWYyZjc4YmQzMWVmNzdlYTYzNjA3
M2I3MWM1OWZmMi4uYTJiMDBlOGY4MTZkYTFjMjIxYjFjMzY2ZWE2ZTY4OWMzYjFjNjhiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1
cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENh
Y2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFr
ZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKICAgICBIYXNoU2V0PEF0
b21TdHJpbmdJbXBsKj4gZm91bmRJbnB1dEVsZW1lbnRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKaW5kZXggYzc2ZDQ5M2E2MmNlZDgzMDg4MDFiNmIwMWQzMzIxZTBh
MzMzZjUxZC4uNDM1ZDk1MTRkZDI5ZGRkMWY2ZGZiMWQxNjllMzQ3ZTMxNWEzMDE5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIHZv
aWQgSFRNTEZvcm1FbGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcChGb3JtTmFtZWRJdGVtKiBpdGVt
LCBjb25zdCBBdG9tU3RyaW5nJiBwCiAgICAgaWYgKHBhc3ROYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghbV9wYXN0TmFtZXNNYXApCi0gICAgICAgIG1fcGFzdE5hbWVz
TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7CisgICAgICAgIG1fcGFzdE5h
bWVzTWFwID0gbWFrZVVuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7CiAgICAgbV9wYXN0TmFtZXNNYXAt
PnNldChwYXN0TmFtZS5pbXBsKCksIGl0ZW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDAyZDdkNGU0ZmJlODZmNTI3MGY1ODRiNmE4ZGViOWJl
NDZmOTdhYTkuLmIxYzgyMWRkOWJhYmEyYTIwY2IyOWUxYzFjZmQ5MGQ3MWZlYzU4YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IFJlZjxIVE1MSUZyYW1lRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiBET01Ub2tlbkxpc3QmIEhUTUxJRnJhbWVFbGVtZW50
OjpzYW5kYm94KCkKIHsKICAgICBpZiAoIW1fc2FuZGJveCkgewotICAgICAgICBtX3NhbmRib3gg
PSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShE
b2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9zYW5kYm94ID0gbWFrZVVu
aXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzYW5kYm94QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJp
bmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAgICByZXR1cm4gU2VjdXJpdHlDb250ZXh0Ojppc1N1
cHBvcnRlZFNhbmRib3hQb2xpY3kodG9rZW4pOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAwYzI1Y2RkODBkNWY4YTc3MGEx
ZDk3MDA1Nzg0N2E4OWM1NjgzZGJkLi4zNzZjNTIxOTY0ZTBmNzFiNmZkOWMyMTcyZDYyMDFjMjky
NTdhMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE0
OCw3ICsxNDgsNyBAQCBSZWY8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogSFRNTEltYWdlTG9hZGVyJiBI
VE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxvYWRlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdl
TG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1h
Z2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRN
TEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCkBA
IC0xNjQxLDcgKzE2NDEsNyBAQCBSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gSFRNTElucHV0
RWxlbWVudDo6ZGF0YUxpc3QoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNldExp
c3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCi0g
ICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxM
aXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obGlzdEF0dHIpLCB0aGlzKTsKKyAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXIgPSBtYWtlVW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0ciksIHRoaXMpOwogICAgIGVsc2UKICAgICAgICAg
bV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGI4NjM0Y2FkYWZhMThhMGEyN2NjZjcyOGY5
YmJmNTZjYjdmNzhkMTYuLmY2YTdiYzgwMjRmZmE1ZTRiZDcxZjY5YTI3Yzk3YzhjOTM2YmI0ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEs
NyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6c3R5bGVTaGVldElzTG9hZGluZygpIGNvbnN0CiBE
T01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxlbWVudDo6c2l6ZXMoKQogewogICAgIGlmICghbV9zaXpl
cykKLSAgICAgICAgbV9zaXplcyA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhp
cywgc2l6ZXNBdHRyKTsKKyAgICAgICAgbV9zaXplcyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0
PigqdGhpcywgc2l6ZXNBdHRyKTsKICAgICByZXR1cm4gKm1fc2l6ZXM7CiB9CiAKQEAgLTUyMiw3
ICs1MjIsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlu
a0V2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50
OjpyZWxMaXN0KCkKIHsKICAgICBpZiAoIW1fcmVsTGlzdCkgCi0gICAgICAgIG1fcmVsTGlzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpyZWxBdHRy
LCBbXShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9y
ZWxMaXN0ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0
dHIsIFtdKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tlbikgewogICAgICAgICAg
ICAgcmV0dXJuIExpbmtSZWxBdHRyaWJ1dGU6OmlzU3VwcG9ydGVkKGRvY3VtZW50LCB0b2tlbik7
CiAgICAgICAgIH0pOwogICAgIHJldHVybiAqbV9yZWxMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZjc0MGNjYWMyNDJlOWUwZjNiYzhkZGM5NTc1ZmIz
MmE0ZWYxOThhZi4uZjNhY2ZjZGUwMDA3YTI0ZjI3NWE0Yzk1NGQ1MjUxMjA4Mzc4Mjk5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgxLDcg
QEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5p
c2hJbml0aWFsaXphdGlvbigpCiB7Ci0gICAgbV9tZWRpYVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhRWxlbWVudFNlc3Npb24+KCp0aGlzKTsKKyAgICBtX21lZGlhU2Vzc2lvbiA9IG1h
a2VVbmlxdWU8TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOwogCiAgICAgbV9tZWRpYVNlc3Np
b24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVz
ZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7CiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2Fk
TWVkaWEpOwpAQCAtMzAyNyw3ICszMDI3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVr
V2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0KIAog
ICAgIC8vIDUgLSBJZiB0aGUgc2VlayB3YXMgaW4gcmVzcG9uc2UgdG8gYSBET00gbWV0aG9kIGNh
bGwgb3Igc2V0dGluZyBvZiBhbiBJREwgYXR0cmlidXRlLCB0aGVuIGNvbnRpbnVlCiAgICAgLy8g
dGhlIHNjcmlwdC4gVGhlIHJlbWFpbmRlciBvZiB0aGVzZSBzdGVwcyBtdXN0IGJlIHJ1biBhc3lu
Y2hyb25vdXNseS4KLSAgICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5n
U2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOwor
ICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUsIG5l
Z2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CiAgICAgaWYgKGZyb21ET00pIHsK
ICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImVucXVldWluZyBzZWVrIGZyb20gIiwg
bm93LCAiIHRvICIsIHRpbWUpOwogICAgICAgICBtX3NlZWtUYXNrUXVldWUuc2NoZWR1bGVUYXNr
KHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZDBiYWI5ZmM5ZDZlZGExYzFiYzJhNjA5
NjgzZjI3NmZlNzYwM2NmOC4uZjI0ZTg3NmExM2I2MTU1OWUyYzk5NWJiYTRhNWU0NTIzNDk3MDA4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk5MCw2ICs5OTAs
NyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50CiAgICAgUmVmUHRyPE1lZGlhRXJyb3I+IG1fZXJy
b3I7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1NlZWsgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdTZWVrKGNvbnN0IE1lZGlhVGltZSYgbm93
LCBjb25zdCBNZWRpYVRpbWUmIHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVU
b2xlcmFuY2UsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUb2xlcmFuY2UpCiAgICAgICAgICAg
ICA6IG5vdyhub3cpCiAgICAgICAgICAgICAsIHRhcmdldFRpbWUodGFyZ2V0VGltZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggZGQ0ZmEyZDcwZTRmNDNm
NDJiODIyMmQzN2Q0NDE4ZjFhMTMxZWQ4Ny4uNTZiNzIwNmFlM2JlOGYxMGE4ODE0YWU5YWZhYzYy
YmZlYjU2MDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAK
QEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXREZWZhdWx0VmFs
dWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIERPTVRva2VuTGlzdCYgSFRNTE91dHB1dEVsZW1lbnQ6
Omh0bWxGb3IoKQogewogICAgIGlmICghbV90b2tlbnMpCi0gICAgICAgIG1fdG9rZW5zID0gc3Rk
OjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBmb3JBdHRyKTsKKyAgICAgICAgbV90
b2tlbnMgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOwogICAgIHJl
dHVybiAqbV90b2tlbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCmluZGV4IGRkYTk0NDlkNTdhZDQyMDg1ODYyN2RlZDNmZGQ5MTgxMzIx
NWZlMmIuLjViOTlkNTU1NTMwNDk3MDkzYzZiY2E5OTU4N2M3YTJmNzI1NTkwOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjg3LDcg
KzI4Nyw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJl
c29sdXRpb24oKQogICAgIGlmIChyZW5kZXJlcigpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkg
ewogICAgICAgICBpZiAoaXNJbWFnZVR5cGUoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdl
TG9hZGVyKQotICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIg
PSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgaWYgKG1f
bmVlZHNJbWFnZVJlbG9hZCkKICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVG
cm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IDEwYmMwOWZmMDk5
Yzg4OGIyMjYyNjkzOTBiOGUxZjhiZTRjZTM5NjcuLmIwNDkzOWI5YzJkNzI3MDIxMzc5YzVhNGRk
MzQwNDdkODEyYWQ5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1h
cnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVu
dC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU3VtbWFyeVNsb3RFbGVtZW50IGZpbmFsIDog
cHVibGljIFNsb3RBc3NpZ25tZW50IHsKIFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IEhUTUxTdW1t
YXJ5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICBSZWY8SFRNTFN1bW1hcnlFbGVtZW50PiBzdW1tYXJ5ID0gYWRv
cHRSZWYoKm5ldyBIVE1MU3VtbWFyeUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAgICBz
dW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3RkOjpt
YWtlX3VuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsKKyAgICBzdW1tYXJ5LT5hZGRTaGFk
b3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVVuaXF1ZTxTdW1tYXJ5U2xv
dEVsZW1lbnQ+KCkpKTsKICAgICByZXR1cm4gc3VtbWFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggYTVlNzVhYWZmNTJkZGY5ZjU3NTQ1YmEwNjdl
ZWM3ODk4ODhkZDlhYi4uNjdmZjIxMjUyZjFiOGU4MzEwYTFkN2NiYjIzMmVhOGM3MzkzOGEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC05NCw3ICs5NCw3
IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICB1cGRh
dGVEaXNwbGF5U3RhdGUoKTsKICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsK
ICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICBt
X2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAg
ICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICAgICAgaWYgKGF1dG8q
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5pbWFn
ZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW4KIAogICAgICAgICBpZiAoc2hv
dWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRl
cikKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1M
SW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFr
ZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgICAgIG1faW1hZ2VMb2Fk
ZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggZDViOWJlZGJh
ZDA0NzA0NjFhNThhYjVjYjAxNGE2OGMwNDdkN2ZiMC4uODU0NTFkMTQzNzBlMjRjZDdkNGRkNTY5
MDE0NjM3MzVhZDY4MzA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNV
UkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIu
Y3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVf
cHRyPFB1YmxpY1VSTE1hbmFnZXI+IFB1YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9IHN0
ZDo6bWFrZV91bmlxdWU8UHVibGljVVJMTWFuYWdlcj4oY29udGV4dCk7CisgICAgYXV0byBwdWJs
aWNVUkxNYW5hZ2VyID0gbWFrZVVuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKICAg
ICBwdWJsaWNVUkxNYW5hZ2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcHVibGlj
VVJMTWFuYWdlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlv
bk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAK
aW5kZXggOGFmNzNhOGEwMDU0OTgwYWQxNzkwNjk1NmE4NDMyYTZmOWNkYjE0Yi4uZjVkYWIwZjQy
ZjJkMDUzZTcwM2M2YzU3MjNjYTE2MDM3MWQxYTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9W
YWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTExNSw5ICsxMTUsOSBAQCB2b2lkIFZhbGlkYXRpb25N
ZXNzYWdlOjpzZXRNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQoIW1l
c3NhZ2UuaXNFbXB0eSgpKTsKICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOwogICAgIGlmICghbV9i
dWJibGUpCi0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywg
JlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0g
bWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVU
cmVlKTsKICAgICBlbHNlCi0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVy
PigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7
CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25N
ZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7CiAgICAgbV90aW1lci0+c3RhcnRP
bmVTaG90KDBfcyk7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNz
YWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcigpCiAgICAgaWYgKG1hZ25pZmljYXRpb24g
PD0gMCkKICAgICAgICAgbV90aW1lciA9IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1f
dGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdl
OjpkZWxldGVCdWJibGVUcmVlKTsKKyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+
KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgICAgICBt
X3RpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoNV9zLCAxX21zICogc3RhdGljX2Nhc3Q8ZG91
YmxlPihtX21lc3NhZ2UubGVuZ3RoKCkpICogbWFnbmlmaWNhdGlvbikpOwogICAgIH0KIH0KQEAg
LTIzNCw3ICsyMzQsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVz
c2FnZSgpCiAgICAgfQogCiAgICAgLy8gV2UgbXVzdCBub3QgbW9kaWZ5IHRoZSBET00gdHJlZSBp
biB0aGlzIGNvbnRleHQgYnkgdGhlIHNhbWUgcmVhc29uIGFzIHNldE1lc3NhZ2UoKS4KLSAgICBt
X3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2Fn
ZTo6ZGVsZXRlQnViYmxlVHJlZSk7CisgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0
aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgIG1fdGltZXIt
PnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGIxNjc3
ODQ0MjhjM2JmZTllNmYxNmE3Nzg0MGQzZjNiYjk3MDViOTYuLjUzYzljNTY2MDQyN2M0ODZlMzJh
YmMwYzJkNjU0Y2NjNTZjMDI4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC05OSw3ICs5
OSw3IEBAIHN0cnVjdCBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0IHsKIAogICAgIERpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25z
dCBGbG9hdFJlY3QmIGNsaXApCiAgICAgICAgIDogY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0
JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlz
dCwgc3RhdGUsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNw
bGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSkKICAg
ICB7CiAgICAgfQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgaWYg
KFVOTElLRUxZKG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZykpIHsKICAgICAgICAgaWYgKCFtX3Jl
Y29yZGluZ0NvbnRleHQpCi0gICAgICAgICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dFN0YXRl
KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpKTsK
KyAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KEZsb2F0UG9p
bnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOwogICAgICAgICByZXR1cm4gJm1fcmVj
b3JkaW5nQ29udGV4dC0+Y29udGV4dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjMxMTkxNzU3
MGYyZGIyODU5NGNiYjM0OTAyNDY5OTdiNTgzZmJlMC4uY2Q0NzIxMjYxYjJlMDIyYjU1MjVkZDNk
M2NhNTQ2OWY5YzBiM2VhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEzNTksNyArMTM1OSw3IEBAIFdlYkdM
RXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKQogI2RlZmluZSBFTkFCTEVfSUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBu
YW1lTGl0ZXJhbCwgY2FuRW5hYmxlKSBcCiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSwgbmFtZUxpdGVyYWwpKSB7IFwKICAgICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAg
ICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigq
dGhpcykgOiBudWxscHRyOyBcCisgICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8g
bWFrZVVuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFy
aWFibGUgIT0gbnVsbHB0cikgXAogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IGUwNmJmOTlkNTkxNTk2Mzk4MGE2MTFjMzJhODM5ZTI5N2YxMjgwNDUuLmU1ZmRl
NzAzMzc0NTZhMzFlMTU3MWVlMTBmM2ZkMjY0MmRiMDM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTE2LDcg
KzExNiw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlw
ZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlh
YmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2Vf
dW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0g
KGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAg
ICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAg
ICAgICAgIH0gXApAQCAtMTMyLDcgKzEzMiw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAg
ICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwotICAgICAgICAgICAgICAgIG1fZXh0
U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4o
KnRoaXMpOworICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG1ha2VVbmlx
dWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU5LDcgKzE1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbnVsbHB0cjsKICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwotICAgICAgICAgICAgICAgIG1fd2Vi
Z2xEcmF3QnVmZmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMp
OworICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG1ha2VVbmlxdWU8V2ViR0xE
cmF3QnVmZmVycz4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAg
ICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICAgICAgICAgICAgICBtX2FuZ2xl
SW5zdGFuY2VkQXJyYXlzID0gc3RkOjptYWtlX3VuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4o
KnRoaXMpOworICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBtYWtlVW5p
cXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDNlY2U3ZWViNzQyZmFk
YjZmZTE4YjMzZWI1YTYxMzljZWQ0MWJhNTYuLmQxNjZmYjIzOTA3NmQzNjI2NWQ5NmM2NDVmMDcx
ODc1YWM4MmJiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03OTksOCArNzk5LDggQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9j
b250ZXh0LT52aWV3cG9ydCgwLCAwLCBjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVp
Z2h0KCkpOwogICAgIG1fY29udGV4dC0+c2Npc3NvcigwLCAwLCBjYW52YXNTaXplLndpZHRoKCks
IGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogCi0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENh
bGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNr
Pih0aGlzKSk7Ci0gICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhzdGQ6Om1h
a2VfdW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlz
KSk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG1ha2VVbmlxdWU8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0LT5z
ZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhtYWtlVW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dEVy
cm9yTWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6c2V0dXBGbGFncygpCkBAIC0xNTc5LDcgKzE1NzksNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKICAg
ICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVj
dG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpKTsK
IAogICAgICAgICBmb3IgKGF1dG8mIGVycm9yIDogZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpLnNw
bGl0KCdcbicpKQotICAgICAgICAgICAgY2FudmFzLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNz
YWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
V2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsKKyAgICAgICAgICAgIGNh
bnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3IsIHN0YWNrVHJhY2UuY29w
eVJlZigpKSk7CiAgICAgfQogfQogCkBAIC01ODA4LDkgKzU4MDgsOSBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
c3QgU3RyaW5nJgogICAgIC8vIEVycm9yIG1lc3NhZ2VzIGNhbiBvY2N1ciBkdXJpbmcgZnVuY3Rp
b24gY2FsbHMsIHNvIHNob3cgc3RhY2sgdHJhY2VzIGZvciB0aGVtLgogICAgIGlmIChsZXZlbCA9
PSBNZXNzYWdlTGV2ZWw6OkVycm9yKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENh
bGxTdGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpT
RXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSk7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpS
ZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKHN0YWNr
VHJhY2UpKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6Okxv
ZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOwogICAgIH0gZWxzZQotICAg
ICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZl
bCwgbWVzc2FnZSk7CisgICAgICAgIGNvbnNvbGVNZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBl
OjpMb2csIGxldmVsLCBtZXNzYWdlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMo
KTsKICAgICBpZiAoY2FudmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NT
UHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGU4NTkwY2NjNjk3MjhhZjM5MzAxZDNhZThkODk4OGY1
YzE1YTRiMmEuLmFlZmU0NTdmNGVmZjA0MzY1NzYzY2IyNmY3MTc4NDYzZTMyZTFkN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAg
LTIwMSw3ICsyMDEsNyBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAg
ICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50VVJM
OyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2Fk
U2Nhbm5lciB2aWEgc2NhbigpOiB3aXRob3V0IGl0IHdlIHdpbGwgZ2V0IHJlbGF0aXZlIFVSTHMg
d3JvbmcuCiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgaW5jbHVkaW5nIHRo
ZSBjaGFyc2V0IGluIHRoZSBwcmVsb2FkIHJlcXVlc3Q/Ci0gICAgICAgICAgICBtX3JlcXVlc3Rz
LT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwgYmFz
ZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmco
KSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0
eVN0cmluZykpOworICAgICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKG1ha2VVbmlxdWU8UHJl
bG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6
VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3Jp
cHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAg
ICBtX3N0YXRlID0gSW5pdGlhbDsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKHJ1bGUsICJjaGFyc2V0IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggNTFiYWU0YzIxY2Y5NDBkY2Q4
YzZkMzIwYmM0ZGJkNjYyNmJlN2Q5Zi4uOWFjNDQ0ZWYwYTY3MWY4YTQ3Njk5NTdhZTMyMjJiZDhk
MTAwN2Q5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25z
dHJ1Y3Rpb25TaXRlLmNwcApAQCAtNTAzLDcgKzUwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXN0
b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4gSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhU
TUxFCiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBlbGVtZW50SW50ZXJmYWNlID0gbnVs
bHB0cjsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50T3JG
aW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSh0b2tlbiwgJmVsZW1lbnRJbnRlcmZhY2UpOwogICAg
IGlmIChVTkxJS0VMWShlbGVtZW50SW50ZXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJmYWNl
LCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygpKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPigqZWxlbWVudElu
dGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBXVEZNb3ZlKHRva2VuLmF0dHJpYnV0ZXMoKSkpOwogICAg
IGF0dGFjaExhdGVyKGN1cnJlbnROb2RlKCksICplbGVtZW50KTsKICAgICBtX29wZW5FbGVtZW50
cy5wdXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0ZShlbGVtZW50LnJlbGVhc2VOb25OdWxsKCksIFdU
Rk1vdmUodG9rZW4pKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA0ZmY0ZTJiODc4OGE5
MTliZjQyZDE3YWQ5ZmQ2NTFiOWIwM2FkMTliLi5kZDllYTA0YzZmNTAwYzg2NGI4Yzk0YzE5Mzgz
Nzg3N2FmZmRlNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5jcHAKQEAgLTUzLDExICs1MywxMSBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6
OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV9vcHRpb25zKGRvY3VtZW50KQog
ICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zKQotICAgICwgbV9zY3JpcHRSdW5uZXIoc3RkOjpt
YWtlX3VuaXF1ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNj
cmlwdFJ1bm5lckhvc3QmPigqdGhpcykpKQotICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1ha2Vf
dW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9s
aWN5KCksIG1fb3B0aW9ucykpCi0gICAgLCBtX3BhcnNlclNjaGVkdWxlcihzdGQ6Om1ha2VfdW5p
cXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVyKG1h
a2VVbmlxdWU8SFRNTFNjcmlwdFJ1bm5lcj4oZG9jdW1lbnQsIHN0YXRpY19jYXN0PEhUTUxTY3Jp
cHRSdW5uZXJIb3N0Jj4oKnRoaXMpKSkKKyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1ZTxI
VE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBkb2N1bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBt
X29wdGlvbnMpKQorICAgICwgbV9wYXJzZXJTY2hlZHVsZXIobWFrZVVuaXF1ZTxIVE1MUGFyc2Vy
U2NoZWR1bGVyPigqdGhpcykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShkb2N1bWVudCkK
LSAgICAsIG1fcHJlbG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFJlc291cmNlUHJlbG9hZGVy
Pihkb2N1bWVudCkpCisgICAgLCBtX3ByZWxvYWRlcihtYWtlVW5pcXVlPEhUTUxSZXNvdXJjZVBy
ZWxvYWRlcj4oZG9jdW1lbnQpKQogewogfQogCkBAIC03MCw3ICs3MCw3IEBAIGlubGluZSBIVE1M
RG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFn
bWVudCwgRWxlbWVuCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9j
dW1lbnQoKSwgcmF3UG9saWN5KQogICAgICwgbV9vcHRpb25zKGZyYWdtZW50LmRvY3VtZW50KCkp
CiAgICAgLCBtX3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6
bWFrZV91bmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVt
ZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCisgICAgLCBtX3RyZWVCdWls
ZGVyKG1ha2VVbmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRF
bGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCiAgICAgLCBtX3hzc0F1
ZGl0b3JEZWxlZ2F0ZShmcmFnbWVudC5kb2N1bWVudCgpKQogewogICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctaHRtbC1mcmFn
bWVudHMKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRv
a2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0
cygpKSB7CiAgICAgICAgIEFTU0VSVChtX3Rva2VuaXplci5pc0luRGF0YVN0YXRlKCkpOwogICAg
ICAgICBpZiAoIW1fcHJlbG9hZFNjYW5uZXIpIHsKLSAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5u
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1
bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAg
ICAgICBtX3ByZWxvYWRTY2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1f
b3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9y
KCkpOwogICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1dC5j
dXJyZW50KCkpOwogICAgICAgICB9CiAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKm1f
cHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6Omluc2VydChTZWdtZW50ZWRTdHJpbmcmJiBzb3VyY2UpCiAgICAgICAgIC8v
IENoZWNrIHRoZSBkb2N1bWVudC53cml0ZSgpIG91dHB1dCB3aXRoIGEgc2VwYXJhdGUgcHJlbG9h
ZCBzY2FubmVyIGFzCiAgICAgICAgIC8vIHRoZSBtYWluIHNjYW5uZXIgY2FuJ3QgZGVhbCB3aXRo
IGluc2VydGlvbnMuCiAgICAgICAgIGlmICghbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lcikKLSAg
ICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhU
TUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQo
KS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAgICBtX2luc2VydGlvblByZWxvYWRT
Y2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1l
bnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBt
X2luc2VydGlvblByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChzb3VyY2UpOwogICAgICAgICBt
X2luc2VydGlvblByZWxvYWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVt
ZW50U3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFj
ay5jcHAKaW5kZXggMzBjNWI0NmRmMTAzZGJkZjZmNGI3Y2U0MDljYzNhYTE2YzU0NjAxMi4uNmVm
MTcxMmI5ZDYzYjcxYWNiN2MxNjlmNjJiNDljODJmMzEwNTgxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKQEAgLTMzOSw3ICszMzksNyBA
QCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6Omluc2VydEFib3ZlKFJlZjxIVE1MU3RhY2tJdGVtPiYm
IGl0ZW0sIEVsZW1lbnRSZWNvcmQmIHJlYwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgKyttX3N0YWNrRGVwdGg7Ci0gICAgICAgIHJlY29yZEFib3ZlLT5zZXROZXh0KHN0ZDo6bWFr
ZV91bmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgcmVjb3JkQWJvdmUtPnJlbGVh
c2VOZXh0KCkpKTsKKyAgICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQobWFrZVVuaXF1ZTxFbGVt
ZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkpOwog
ICAgICAgICByZWNvcmRBYm92ZS0+bmV4dCgpLT5lbGVtZW50KCkuYmVnaW5QYXJzaW5nQ2hpbGRy
ZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIEhU
TUxFbGVtZW50U3RhY2s6OnB1c2hDb21tb24oUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSkKICAg
ICBBU1NFUlQobV9yb290Tm9kZSk7CiAKICAgICArK21fc3RhY2tEZXB0aDsKLSAgICBtX3RvcCA9
IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92ZSht
X3RvcCkpOworICAgIG1fdG9wID0gbWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0
ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wQ29t
bW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwCmluZGV4IDUzYTE3MmQzM2FmY2RhOGZmODhkMzQ0ZDljMGVmMDkwM2NkZWNjOTIuLjMz
ZDdiM2JiMDhiNjUyZDBjZDY5YmNlZGYxZjg2MDYzMWFmYWExNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTYxLDcgKzE2
MSw3IEBAIGNsYXNzIFRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lciB7CiAgICAg
ICAgIGlmICghTGlua0xvYWRlcjo6aXNTdXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgbV90eXBl
QXR0cmlidXRlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8g
cmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvciht
X3RhZ0lkKSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9t
ZWRpYUF0dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOworICAgICAg
ICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JGb3Io
bV90YWdJZCksIG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCB0eXBlLnZhbHVlKCksIG1f
bWVkaWFBdHRyaWJ1dGUsIG1fbW9kdWxlU2NyaXB0LCBtX3JlZmVycmVyUG9saWN5KTsKICAgICAg
ICAgcmVxdWVzdC0+c2V0Q3Jvc3NPcmlnaW5Nb2RlKG1fY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICAg
ICAgcmVxdWVzdC0+c2V0Tm9uY2UobV9ub25jZUF0dHJpYnV0ZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggZjcxYjIxZDI3ODk1ZTU3OGFiNDdmNWNmNTQwMjU4
M2UzNjEyMWQwMi4uM2Y3NDZkYzZkNjY3YzQzNzExYjY4ZDA5YjQyMDJkMjNmZjBjMDg4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBp
bmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9DVFlQRSgpCiB7CiAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBET0NUWVBFOwotICAgIG1fZG9jdHlw
ZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3R5cGVEYXRhPigpOworICAgIG1fZG9jdHlwZURh
dGEgPSBtYWtlVW5pcXVlPERvY3R5cGVEYXRhPigpOwogfQogCiBpbmxpbmUgdm9pZCBIVE1MVG9r
ZW46OmJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGFjNmU3OTQ0MzAwNzAzNjQyMWViMTZkZjgzYTkwZDNk
Mjc3MmY4NTYuLjA2MWQ5NTY3Yjc4NGQ5YjBiYWNmM2Y2ZGI5Y2RlNWE4MDZiMDFjMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0zNzYsNyArMzc2LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFhTU0luZm8+IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNvbnN0
IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBib29sIGRpZEJsb2NrRW50aXJlUGFnZSA9IG1feHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90ZWN0
aW9uRGlzcG9zaXRpb246OkJsb2NrRW5hYmxlZDsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZh
bGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8WFNTSW5mbz4o
bV9kb2N1bWVudFVSTCwgZGlkQmxvY2tFbnRpcmVQYWdlLCBtX2RpZFNlbmRWYWxpZFhTU1Byb3Rl
Y3Rpb25IZWFkZXIpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclN0YXJ0VG9rZW4oY29u
c3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzEyLDcgKzcxMiw3IEBAIFN1ZmZp
eFRyZWU8QVNDSUlDb2RlYm9vaz4qIFhTU0F1ZGl0b3I6OmRlY29kZWRIVFRQQm9keVN1ZmZpeFRy
ZWUoKQogICAgIGNvbnN0IHVuc2lnbmVkIHN1ZmZpeFRyZWVEZXB0aCA9IDU7CiAKICAgICBpZiAo
IW1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSAmJiBtX2RlY29kZWRIVFRQQm9keS5sZW5ndGgo
KSA+PSBtaW5pbXVtTGVuZ3RoRm9yU3VmZml4VHJlZSkKLSAgICAgICAgbV9kZWNvZGVkSFRUUEJv
ZHlTdWZmaXhUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+
PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4VHJlZURlcHRoKTsKKyAgICAgICAgbV9kZWNvZGVk
SFRUUEJvZHlTdWZmaXhUcmVlID0gbWFrZVVuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+
PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4VHJlZURlcHRoKTsKICAgICByZXR1cm4gbV9kZWNv
ZGVkSFRUUEJvZHlTdWZmaXhUcmVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAzYTYz
N2RhZWYwMTI0ZTJlNGVkMzM2YjY2Mzc1MmQwMDIyYjViZTAxLi5kNTY2YmNjNzk0YWE3MjRhYmU2
MGEwODBhM2YyY2Y5NTFmNDUzN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTE3NCw3ICsxNzQsNyBA
QCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dDo6cmVuZGVyZXIoKSBjb25zdAogT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IGRv
d25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJ
bm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKLSAgICByZXR1cm4gRWxlbWVudFN0eWxl
KHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CisgICAgcmV0
dXJuIEVsZW1lbnRTdHlsZShtYWtlVW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkp
OwogfQogCiAvLyBNQVJLOiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5k
ZXggZTQwMjAwYTlhN2EyMjVkZGZkODc0NGQ4YzkzYmRlNjkwOTY0NzAwOS4uNDkzNGQ3MjljMTk4
ZDA4MDU5YWM4YzlmMGIxNzRhOTVlNzZmNzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCkBAIC0xNzQsNyArMTc0LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlQ3VlKFRl
eHRUcmFja0N1ZSYgY3VlKQogV2ViVlRUUGFyc2VyJiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpw
YXJzZXIoKQogewogICAgIGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRUUGFy
c2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBh
cnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBt
X3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJW
VFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBy
ZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggODU1YmIyMzkyN2ViMTBhMzVh
NTlkMTJiZTBkMjM1YTczY2FiYzEwZS4uMTBmYWExMmY5MGI0NjBiNTA1NmYyNTY3Y2MyZDk4MTI3
ZDhmYWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJW
VFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6
On5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKSA9IGRlZmF1bHQ7CiBXZWJWVFRQYXJzZXImIEluYmFu
ZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKCkKIHsKICAgICBpZiAoIW1fd2ViVlRUUGFyc2VyKQot
ICAgICAgICBtX3dlYlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihz
dGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKKyAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNl
cj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICptX3dlYlZUVFBhcnNlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCA4ZjI5Yzdm
MTY3OWEwZmEyOTE4ZGVjZmE1MTNlMmQ4MDI3MWEzNWUyLi43YTFlMWJjNDY5MWIyMTE2ODhjM2Nm
NWRhNjE5YWM2MWRiZDZmZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRy
YWNrOjpsb2FkVGltZXJGaXJlZCgpCiAgICAgLy8gNC4gRG93bmxvYWQ6IElmIFVSTCBpcyBub3Qg
dGhlIGVtcHR5IHN0cmluZywgcGVyZm9ybSBhIHBvdGVudGlhbGx5IENPUlMtZW5hYmxlZCBmZXRj
aCBvZiBVUkwsIHdpdGggdGhlCiAgICAgLy8gbW9kZSBiZWluZyB0aGUgc3RhdGUgb2YgdGhlIG1l
ZGlhIGVsZW1lbnQncyBjcm9zc29yaWdpbiBjb250ZW50IGF0dHJpYnV0ZSwgdGhlIG9yaWdpbiBi
ZWluZyB0aGUKICAgICAvLyBvcmlnaW4gb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBEb2N1bWVudCwg
YW5kIHRoZSBkZWZhdWx0IG9yaWdpbiBiZWhhdmlvdXIgc2V0IHRvIGZhaWwuCi0gICAgbV9sb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRy
YWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7CisgICAgbV9sb2FkZXIgPSBtYWtl
VW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50
Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tF
bGVtZW50LT5kb2N1bWVudCgpKSk7CiAgICAgaWYgKCFtX2xvYWRlci0+bG9hZChtX3VybCwgKm1f
dHJhY2tFbGVtZW50KSkKICAgICAgICAgbV90cmFja0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZChI
VE1MVHJhY2tFbGVtZW50OjpGYWlsdXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKaW5kZXggMDMxMDgwZTFhYjY2ZDMyY2M5YzA3MTc4
ZjAyZjkzNTIzYmM3MDZiMC4uOTAyOWI5MmQ4YjgzZjJkN2JlZDZkOGU1NDU3NmMwYTE2OGNhNTI1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPENvbW1hbmRMaW5lQVBJSG9zdD4gQ29tbWFuZExpbmVB
UElIb3N0OjpjcmVhdGUoKQogfQogCiBDb21tYW5kTGluZUFQSUhvc3Q6OkNvbW1hbmRMaW5lQVBJ
SG9zdCgpCi0gICAgOiBtX2luc3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rh
YmxlT2JqZWN0PigpKQorICAgIDogbV9pbnNwZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNwZWN0
YWJsZU9iamVjdD4oKSkKIHsKIH0KIApAQCAtMTk2LDcgKzE5Niw3IEBAIEpTVmFsdWUgQ29tbWFu
ZExpbmVBUElIb3N0Ojp3cmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iCiB2b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycygpCiB7
CiAgICAgbV93cmFwcGVycy5jbGVhckFsbFdyYXBwZXJzKCk7Ci0gICAgbV9pbnNwZWN0ZWRPYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOworICAgIG1faW5zcGVj
dGVkT2JqZWN0ID0gbWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRl
eCA2YzMxZTQ5OGU0MzRkMzAwYjBmMWM2ZWFiODQzNDY3NzZjZjBhMmZjLi44Mzg5MDhkYzkzNmVm
YTZiYTI2Yzc5MTY3MTQ0ZGI3ZGU5ZTJhZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
RWRpdG9yLmNwcApAQCAtODksNyArODksNyBAQCBjbGFzcyBET01FZGl0b3I6Okluc2VydEJlZm9y
ZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHBlcmZvcm0oKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKG1fbm9k
ZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBt
X25vZGUpOworICAgICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IG1ha2VVbmlxdWU8UmVt
b3ZlQ2hpbGRBY3Rpb24+KCptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlKTsKICAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9yZW1vdmVDaGlsZEFjdGlvbi0+cGVyZm9ybSgpOwogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKQEAgLTM4NSwyNyArMzg1LDI3IEBAIERPTUVkaXRv
cjo6fkRPTUVkaXRvcigpID0gZGVmYXVsdDsKIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9y
OjppbnNlcnRCZWZvcmUoTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYgbm9kZSwgTm9kZSog
YW5jaG9yTm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3Vu
aXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hv
ck5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJbnNlcnRC
ZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVDaGlsZChOb2RlJiBwYXJlbnRO
b2RlLCBOb2RlJiBub2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1h
a2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPihwYXJlbnROb2RlLCBub2RlKSk7CisgICAgcmV0
dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVu
dE5vZGUsIG5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRBdHRy
aWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVl
PFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwgdmFsdWUpKTsKKyAgICByZXR1cm4g
bV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQs
IG5hbWUsIHZhbHVlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVtb3Zl
QXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBy
ZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVB
Y3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFr
ZVVuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29uc3Qg
U3RyaW5nJiBodG1sLCBOb2RlKiYgbmV3Tm9kZSkKIHsKLSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKKyAgICBhdXRvIGFj
dGlvbiA9IG1ha2VVbmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKICAgICBh
dXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwogICAgIGF1dG8gcmVzdWx0ID0gbV9oaXN0b3J5LnBl
cmZvcm0oV1RGTW92ZShhY3Rpb24pKTsKICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
QEAgLTQxNSwyMiArNDE1LDIyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0
ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSomCiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5zZXJ0QWRqYWNlbnRIVE1MKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCkKIHsKLSAgICByZXR1cm4g
bV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rp
b24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3Jt
KG1ha2VVbmlxdWU8SW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uPihlbGVtZW50LCB3aGVyZSwgaHRt
bCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQo
VGV4dCYgdGV4dE5vZGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICByZXR1cm4gbV9oaXN0
b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0
Tm9kZSwgdGV4dCkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJl
cGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0KSk7CiB9CiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUsIFJlZjxOb2Rl
PiYmIG5ld05vZGUsIE5vZGUmIG9sZE5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJm
b3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwg
V1RGTW92ZShuZXdOb2RlKSwgb2xkTm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9y
bShtYWtlVW5pcXVlPFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUo
bmV3Tm9kZSksIG9sZE5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpz
ZXROb2RlVmFsdWUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXROb2RlVmFsdWVBY3Rpb24+
KG5vZGUsIHZhbHVlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8
U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSkpOwogfQogCiBzdGF0aWMgYm9vbCBwb3B1
bGF0ZUVycm9yU3RyaW5nKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0LCBFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwCmluZGV4IDIwZGEzNDMwYzE1Yzg1NTE0ODVjNTczOGM1NDdmYTBjMzQzMWExYmEuLjJlOWQ3
NTU2NTVjODNlZjg4MTU5NmFhZDIwYzk2ZTEwZTY4ODI2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RhdGlj
IHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0Y2hTdXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9y
dDo6Y3JlYXRlRGlnZXN0KE5vZGUmIG5vZGUsIFVudXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01h
cCkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlnZXN0PigpOworICAg
IGF1dG8gZGlnZXN0ID0gbWFrZVVuaXF1ZTxEaWdlc3Q+KCk7CiAgICAgZGlnZXN0LT5ub2RlID0g
Jm5vZGU7CiAgICAgU0hBMSBzaGExOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNTIwMzcwNmI1M2IzMmIwYmE0ZjBlZDRkNGJh
NDAwYjZjNzliNWUxNS4uNjNmZjNhYjYyM2E0NDZjZDYyMGVlNDdlMzkyMDU1Y2VhNTFhODc2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cApAQCAtOTMsMTAgKzkzLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3Bl
Y3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9y
Q2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5z
dHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywg
V2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYklu
amVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9u
dGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQotICAgICwgbV9v
dmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9y
Q2xpZW50KSkKKyAgICAsIG1fb3ZlcmxheShtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBh
Z2UsIGluc3BlY3RvckNsaWVudCkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0
Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihwYWdlKQogICAgICwgbV9w
YWdlKHBhZ2UpCkBAIC0xMDYsNyArMTA2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKIAog
ICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNv
bnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRl
eHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxQYWdlQ29uc29sZUFnZW50
PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xl
QWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShj
b25zb2xlQWdlbnQpKTsKIH0KQEAgLTE1MywzNyArMTUzLDM3IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsK
ICAgICBlbnN1cmVQYWdlQWdlbnQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAotICAgIGF1
dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KHBh
Z2VDb250ZXh0KTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VEZWJ1
Z2dlckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gZGVi
dWdnZXJBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFn
ZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTmV0d29y
a0FnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAg
ICAgZW5zdXJlRE9NQWdlbnQoKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0
cikpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4o
cGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOworICAgIG1fYWdlbnRzLmFwcGVuZCht
YWtlVW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4o
cGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JX
b3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1
ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMu
YXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBt
X2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNv
bnRleHQpKTsKICNlbmRpZgogCi0gICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCk7
CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQ
dHIuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdl
bnRQdHIpKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLSAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50PihwYWdlQ29udGV4
dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck1lbW9y
eUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPElu
c3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5k
aWYKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlSGVhcEFnZW50Pihw
YWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VB
dWRpdEFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckNhbnZhc0FnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250
ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZUhlYXBBZ2VudD4ocGFn
ZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlQXVkaXRBZ2Vu
dD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0
b3JDYW52YXNBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihwYWdlQ29udGV4dCkpOwogCiAgICAgaWYgKGF1
dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5k
TGluZUFQSUhvc3QoKSkKICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zdHJ1
bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIEluc3BlY3RvckFn
ZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAgICAg
aWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdl
QWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgICAgIGF1dG8gaW5zcGVj
dG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAg
ICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JBZ2VudChtX2luc3BlY3RvckFnZW50KTsK
ICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKQEAgLTQz
Myw3ICs0MzMsNyBAQCBJbnNwZWN0b3JET01BZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5z
dXJlRE9NQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JET01BZ2VudCkgewogICAgICAg
ICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRv
bUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQs
IG1fb3ZlcmxheS5nZXQoKSk7CisgICAgICAgIGF1dG8gZG9tQWdlbnQgPSBtYWtlVW5pcXVlPElu
c3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAgICAg
bV9pbnNwZWN0b3JET01BZ2VudCA9IGRvbUFnZW50LmdldCgpOwogICAgICAgICBtX2FnZW50cy5h
cHBlbmQoV1RGTW92ZShkb21BZ2VudCkpOwogICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCBJbnNw
ZWN0b3JQYWdlQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCgpCiB7
CiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2VBZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250
ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0b3JD
bGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgICAgIGF1dG8gcGFnZUFnZW50ID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVudCwg
bV9vdmVybGF5LmdldCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JQYWdlQWdlbnQgPSBwYWdlQWdl
bnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHBhZ2VBZ2VudCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5oCmluZGV4IDI4ZWU3MjdhMzZkNjZjZTIxMDk2OTc4MzFhZTBhOGFh
YzQyMzg1NzUuLjZjMWI1MWFkZWU5YTM4NDI2MzMzOGY0NWQ4ODg0YTZkOWMzN2VhODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsIDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTZXR0aW5n
cyB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAg
ICAgU2V0dGluZ3MoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflNldHRpbmdzKCkgPSBk
ZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3Bw
CmluZGV4IDAwZDVmMTg1MmNlYmEyNzBjM2FmODFjMTMyMDkwMDVkYTdiMTE4YTguLmM4MTAzZGQ3
ZGJiODMyMGVhYjJlNmFkNWUzMmMyZDUyZDcyYjA2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gSW5zcGVjdG9ySGlzdG9yeTo6cGVyZm9ybShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9u
PiBhY3Rpb24pCiAKIHZvaWQgSW5zcGVjdG9ySGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUoKQog
ewotICAgIHBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7Cisg
ICAgcGVyZm9ybShtYWtlVW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigpKTsKIH0KIAogRXhjZXB0
aW9uT3I8dm9pZD4gSW5zcGVjdG9ySGlzdG9yeTo6dW5kbygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggY2EzMGUxYTI3YmY0MDYx
ODVhNDgzMjBhMjYzMTgzZWE3ZTZlNDdlMy4uMjI5Yzk4YTQ0N2QyMjI0OGRkZWYzYmEzNGIzN2M1
YzRjMDQ3NTk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUGFyc2VkU3R5bGVTaGVldDo6
c2V0U291cmNlRGF0YShzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBzb3VyY2VE
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NvdXJjZURhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKKyAgICBtX3NvdXJjZURhdGEgPSBtYWtlVW5p
cXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVt
cG9yYXJ5IHNvbHV0aW9uIHRvIHJldGFpbiB0aGUgb3JpZ2luYWwgZmxhdCBzb3VyY2VEYXRhIHN0
cnVjdHVyZQogICAgIC8vIGNvbnRhaW5pbmcgb25seSBzdHlsZSBydWxlcywgZXZlbiB0aG91Z2gg
Q1NTUGFyc2VyIG5vdyBwcm92aWRlcyB0aGUgZnVsbCBydWxlIHNvdXJjZSBkYXRhIHRyZWUuCkBA
IC0xMzM0LDcgKzEzMzQsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJj
ZURhdGEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIG5ld1N0eWxlU2hlZXQg
PSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOwotICAgIGF1dG8gcnVsZVNvdXJjZURhdGFS
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKKyAgICBhdXRv
IHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7
CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRGb3JEb2N1
bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHlsZVNoZWV0
SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VTdHlsZVNo
ZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4
IGQzYjc1OWYyOWNjZjFhZTE4MDI4MGQ1ZTE3MzY3MGQyOWM0ZjhjYzEuLmZkN2NhZDMwNzY3ZTc3
NWIxNjc1ZWM0NTRlZjdhMDhiYjAzNmQ1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVl
c3RJZCk7CiAKLSAgICBhdXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3Vy
Y2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9IG1h
a2VVbmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNvdXJj
ZURhdGEtPnNldFR5cGUodHlwZSk7CiAgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5z
ZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJlc291cmNlRGF0YSkpOwogfQpAQCAtMTQ1LDcgKzE0NSw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVz
dElkKHJlcXVlc3RJZCk7CiAKLSAgICBhdXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291cmNl
RGF0YSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAg
ICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKCZjYWNoZWRSZXNvdXJjZSk7CiAgICAg
bV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJlc291
cmNlRGF0YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDQzNTFlODcyYTllNWEzNjQ3MjlmNWI0ZmIy
NjIxNmM3MzMwMmM4ZGQuLjM2NGFlYTdkNGI1ZDkxMTc5MzI3NWQ2NDZmMjk1ZTY3YmYwZWVlZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgOiBtX2luc3RydW1l
bnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
cj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9u
dGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVm
KCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKQEAg
LTY5LDcgKzY5LDcgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKIAogICAgIGF1dG8gd29ya2Vy
Q29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7Cisg
ICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29y
a2VyQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdl
bnQoY29uc29sZUFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25z
b2xlQWdlbnQpKTsKIH0KQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnJl
c2V0KCk7CiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiAKLSAgICBtX2Zvcndh
cmRpbmdDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5u
ZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBtYWtl
VW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29wZSk7
CiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKCptX2ZvcndhcmRpbmdDaGFu
bmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1f
ZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0KQEAg
LTE2NCwxOCArMTY0LDE4IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRl
TGF6eUFnZW50cygpCiAKICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENvbnRl
eHQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRp
bWVBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2VyQ29udGV4dCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2Vy
R2xvYmFsU2NvcGUpKSB7Ci0gICAgICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgICAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQp
KTsKKyAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckFnZW50
Pih3b3JrZXJDb250ZXh0KSk7CisgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdv
cmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOwogICAgIH0KICNlbmRpZgogCi0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJDb250
ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdn
ZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlckF1ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxXZWJIZWFwQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2Fn
ZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyQXVkaXRBZ2VudD4od29y
a2VyQ29udGV4dCkpOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAgY29tbWFu
ZExpbmVBUElIb3N0LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IGE4ZDNjODk5YzMyODBhMjhlNjcz
MmNmODhhYjg0ZDAwMGQ0NWVkMmQuLmZkZjA0NGM1NzliMzY4YzMyMDUxYjY1ZGM0NDBlMzg3ZjYw
MThmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoUGFnZUFnZW50Q29udGV4
dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQXBwbGljYXRpb25DYWNoZSJf
cywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpBcHBsaWNh
dGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2Up
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcAppbmRleCBjZjk0Y2E4MDk2ZmY1NzFkNzRkNzcz
YjFmMDAyNzUwNTRjMGNlMWY5Li4xMTYyNGUyNDA5NDY0ZmMxZTFlNjVhNjk5OGRiZDFiMDY4MmYw
YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudDo6SW5zcGVj
dG9yQ1BVUHJvZmlsZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKCJDUFVQcm9maWxlciJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3I6OkNQVVByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNGI2OTk0NWVj
NzA2N2Y5NjQzZTQ4MDczMDM0ODQyNjg2ZDYxOWZiOC4uNDRlOWM1YWJlYjRjOTY2YWJhZWE5NDRh
NDBkNWUwM2Q0NzJkMTFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBDU1NTdHls
ZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShDU1NSdWxlJiBydWxlKQog
CiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDU1MiX3MsIGNvbnRleHQpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPENTU0Zyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihtYWtlVW5pcXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CkBAIC02MjYsNyArNjI2
LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2Vf
dW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0
KSk7CisgICAgYXV0byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VV
bmlxdWU8U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQp
KTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBlcnJvclN0cmluZyA9
IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCkpOwogfQpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0
eWxlVGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+
aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihp
bnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CisgICAgYXV0byBwZXJmb3Jt
UmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxl
VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkpOwogICAg
IGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5n
ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgSlNPTjo6T2IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVy
Zm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1
ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQs
IHNlbGVjdG9yKSk7CisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3Rvcnko
KS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5
bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5o
YXNFeGNlcHRpb24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50
Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFk
ZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOworICAgIGF1
dG8gYWN0aW9uID0gbWFrZVVuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0
LCBzZWxlY3Rvcik7CiAgICAgYXV0byYgcmF3QWN0aW9uID0gKmFjdGlvbjsKICAgICBhdXRvIHBl
cmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKFdURk1vdmUoYWN0aW9u
KSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5j
cHAKaW5kZXggOWJlMDYxMTlmYjMyMTk3MDA3Mjk3MjJkODM2YTgxNmIyNWYxYzAxNS4uMGU1MGM3
NWJhNDg3NTE1NTZlNDEyZGNiOTdhZDE5NjY5NjVhOTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAg
LTcxLDcgKzcxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNhbnZhcyJfcywgY29udGV4dCkKLSAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6Q2FudmFzQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQu
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5z
cGVjdGVkUGFnZSkKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
OjpyZWNvcmRDYW52YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZAog
ICAgIGlmICghaW5zcGVjdG9yQ2FudmFzLT5jdXJyZW50RnJhbWVIYXNEYXRhKCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNv
bnRleHQoKS5jYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAg
ICAgICBhdXRvJiBxdWV1ZSA9IE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKTsKLSAg
ICAgICAgICAgIHF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNr
TWljcm90YXNrPihxdWV1ZSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0ZWRJ
bnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpXSB7CisgICAgICAgICAg
ICBxdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVl
dWUsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFz
ID0gaW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKV0gewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBjYW52YXNFbGVtZW50ID0gcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzLT5jYW52YXNFbGVtZW50
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhc0VsZW1lbnQtPmlzRGVzY2VuZGFu
dE9mKGNhbnZhc0VsZW1lbnQtPmRvY3VtZW50KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCA2YzE5NmUwY2M2ODJiNDQyNTZjN2RkYWFlMDkwYWEwYWFk
NTUzMTdkLi5mMGEyOGMxMzMxYzViYjMwODhkNTNlNzI0M2RiYWY0ZWViNjNlN2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJv
clN0cmluZyhFeGNlcHRpb24mJiBleGNlcHRpb24pCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVj
dG9yRE9NQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yT3ZlcmxheSog
b3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRE9NIl9zLCBjb250ZXh0KQogICAg
ICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIp
Ci0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6
RE9NRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkpCkBAIC0zMDEsOCArMzAxLDggQEAgSW5z
cGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCgpCiAKIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9oaXN0b3J5ID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOwotICAgIG1fZG9tRWRpdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxET01FZGl0b3I+KCptX2hpc3RvcnkpOworICAgIG1faGlzdG9yeSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsKKyAgICBtX2RvbUVkaXRvciA9IG1ha2VV
bmlxdWU8RE9NRWRpdG9yPigqbV9oaXN0b3J5KTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKICAgICBtX2RvY3VtZW50ID0gbV9pbnNwZWN0
ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CkBAIC02NTMsNyArNjUzLDcgQEAgaW50IElu
c3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gp
CiAgICAgICAgIE5vZGUqIHBhcmVudCA9IGlubmVyUGFyZW50Tm9kZShub2RlKTsKICAgICAgICAg
aWYgKCFwYXJlbnQpIHsKICAgICAgICAgICAgIC8vIE5vZGUgYmVpbmcgcHVzaGVkIGlzIGRldGFj
aGVkIC0+IHB1c2ggc3VidHJlZSByb290LgotICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5vZGVUb0lkTWFwPigpOworICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBt
YWtlVW5pcXVlPE5vZGVUb0lkTWFwPigpOwogICAgICAgICAgICAgZGFuZ2xpbmdNYXAgPSBuZXdN
YXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVuZChuZXdN
YXAucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwpAQCAtMTE3Nyw3ICsx
MTc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhp
Z2hsaWdodENvbmZpZz4oKTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8
SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgIGJvb2wgc2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVs
dDogZmFsc2UgKGRvIG5vdCBzaG93IGEgdG9vbHRpcCkuCiAgICAgaGlnaGxpZ2h0SW5zcGVjdG9y
T2JqZWN0LT5nZXRCb29sZWFuKCJzaG93SW5mbyIsIHNob3dJbmZvKTsKICAgICBoaWdobGlnaHRD
b25maWctPnNob3dJbmZvID0gc2hvd0luZm87CkBAIC0xMTk2LDEzICsxMTk2LDEzIEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGJvb2wgZW5hCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJl
Y3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29u
c3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3Is
IGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIHF1YWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
KyAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdp
ZHRoLCBoZWlnaHQpKTsKICAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGTW92ZShxdWFkKSwgY29s
b3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IEpTT046OkFycmF5JiBxdWFkQXJyYXksIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0
IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0
ZXMpCiB7Ci0gICAgYXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCk7Cisg
ICAgYXV0byBxdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCk7CiAgICAgaWYgKCFwYXJzZVF1
YWQocXVhZEFycmF5LCBxdWFkLmdldCgpKSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZh
bGlkIFF1YWQgZm9ybWF0Il9zOwogICAgICAgICByZXR1cm47CkBAIC0xMjEyLDcgKzEyMTIsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgSlNPTjo6QXJyYQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojppbm5l
ckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0
IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9
IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0
Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgaGlnaGxpZ2h0Q29u
ZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5j
b250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKICAgICBoaWdobGlnaHRD
b25maWctPnVzZVBhZ2VDb29yZGluYXRlcyA9IHVzZVBhZ2VDb29yZGluYXRlcyA/ICp1c2VQYWdl
Q29vcmRpbmF0ZXMgOiBmYWxzZTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBmCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50
KCkpIHsKLSAgICAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhp
Z2hsaWdodENvbmZpZz4oKTsKKyAgICAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5p
cXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5m
byA9IHRydWU7IC8vIEFsd2F5cyBzaG93IHRvb2x0aXBzIGZvciBmcmFtZXMuCiAgICAgICAgIGhp
Z2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAgICAgICBoaWdo
bGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwpA
QCAtMTM5OCw3ICsxMzk4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVk
Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAgbV9pbnNwZWN0
ZWROb2RlID0gbm9kZTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBzdGF0
aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImPihtX2luamVjdGVkU2NyaXB0TWFuYWdl
cikuY29tbWFuZExpbmVBUElIb3N0KCkpCi0gICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRk
SW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7
CisgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KG1ha2VVbmlx
dWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CiAKICAgICBtX3N1cHByZXNzRXZlbnRMaXN0ZW5l
ckNoYW5nZWRFdmVudCA9IGZhbHNlOwogfQpAQCAtMjMxNCw3ICsyMzE0LDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50KQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2spCi0g
ICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmFs
aWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KHRoaXMpOworICAgICAgICBtX3JldmFsaWRhdGVTdHls
ZUF0dHJUYXNrID0gbWFrZVVuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlz
KTsKICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5zY2hlZHVsZUZvcigmZWxlbWVudCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCBlOTcxYTk5ZjcwNTI0ZDgzMTgxYWU3
MTVkODI2NTg4MTFmZTA4ODA4Li44MWYxNGRjMTdiZmEwNDc0N2UzZDIzZTQ1M2Y1ZTRhZjhkMDlm
ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoIkRPTVN0b3JhZ2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggYjM3YTU2MGNlODA3NjhjNjY0NDA4
NTE1ZmIwNTUxMjYxNjViZWQ4Mi4uMzU4YTg1NjUxMmVhNGQ3MTk2MzMyYTIwNjk5MGRlMzI1MDA0
MTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQog
CiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KFdlYkFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGF0YWJhc2UiX3Ms
IGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRh
dGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwCmluZGV4IGUxZTA4MmU0MWFkMmQ1MjRmNTdlZjEwNjQwMjg4NzYxMTU2ODI0
YjkuLmI1OTgyY2VlMzdlMzc0NDcwNTM5NDZiY2Y0YzQzNGI0MzFlZjlhOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChXZWJB
Z2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkxheWVyVHJl
ZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5jcHAKaW5kZXggMjljNzZkMGM3ZmVhOTIyYzJhM2Q5OTQxNGM5ODZlYThkMjhk
NzdiNS4uMjgzMjk1MWY1MzgwMTIxZmE0NTJiZmE4ZDQ3MGY0ZDM1ZTc4OWIxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KFBhZ2VBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIk1lbW9yeSJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3Rvcjo6TWVtb3J5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250
ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRl
eCAzZTRlOTZlYjIzMWEwNTRiMjEyMTI0N2JjMmNiMDkxNjVmMDI2NWIzLi41ZDA4MTYzODBjZGM2
NmM3ZDc5NjBjMTJkMzQ4YTBmYmYzZjdiMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNzIs
MTAgKzE3MiwxMCBAQCBjbGFzcyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGZpbmFs
IDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogCiBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6Okluc3BlY3Rvck5ldHdvcmtBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoIk5ldHdvcmsiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0Lmlu
amVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fcmVzb3VyY2VzRGF0YShzdGQ6Om1ha2VfdW5p
cXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQorICAgICwgbV9yZXNvdXJjZXNEYXRhKG1ha2VV
bmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAz
MjllMWIwYzVhZDkyZmI0NTFkZjE3NjczM2FlMmFlMzU4ZmI0OTM3Li5jNjQxYTZhMDQ4NDE5MzI2
OGUyOWU5MGZmMDEyNmFiOTExYzkzMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zMzMsNyArMzMzLDcg
QEAgRG9jdW1lbnRMb2FkZXIqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2Fk
ZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0
b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yQ2xpZW50KiBj
bGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoIlBhZ2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3Bl
Y3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3Bl
Y3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAKaW5kZXggM2EzNjFlOTFlNmYyZGViMDA0MmUxOGE3YzY0YzdiNTE2
ZjliODBjNS4uMzBkODZjNzQ2M2M0N2Y1YjNhZDJiMzhjZjVkZTI0OWQ0NGViOWE1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3Vy
cmVudFJ1bkxvb3AoKQogCiBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoIlRpbWVsaW5lIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6VGltZWxpbmVC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
KQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKQEAgLTE5
Myw3ICsxOTMsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQo
Y29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKICAgICAvLyBGSVhNRTogQWJzdHJhY3QgYXdh
eSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0Mjc0OCBpcyBmaXhlZC4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IG1fZnJhbWVTdGFydE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+
KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9y
ZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdpbiksIFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3RhcnRP
YnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4
PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1l
QmVnaW4pLCBbdGhpc10oKSB7CiAgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vudmlyb25t
ZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJu
YWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgICAgICBtX3J1bkxvb3BO
ZXN0aW5nTGV2ZWwrKzsKICAgICB9KTsKIAotICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9v
cE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0
aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3RvcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2Jz
ZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVu
TG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7CiAgICAgICAgIGlmICgh
bV90cmFja2luZyB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nCiAgICAgICAgICAgICAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29s
ZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZv
ciBsb2NhbGl6YXRpb24/CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0
bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VT
dHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6
UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTMxNiw3ICsz
MTYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZShKU0M6
OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bAogICAgIGlmIChXZWJDb25zb2xlQWdlbnQq
IGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkg
ewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9j
YWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJO
byBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwi
IGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29u
c29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nKSk7CisgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDkxNjFkODQzY2QzOGU0ZDk2NjEyNmFjZGQzNmU4
M2RkMThmNTEwMDIuLjFlMzk4ZWRkMWE5ZWEzZWYyNmJlMDllYzAzZDZjNmMyY2QzOThkZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
V29ya2VyQWdlbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIEluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChQYWdlQWdl
bnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJXb3JrZXIiX3Ms
IGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpXb3Jr
ZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2UoY29udGV4
dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDJlZWQxY2U2MGIzMDIyYWQ5ODI0ZmE2Mjhh
MzVkZGM1NDQ0OTYwZDkuLmMyMDk0Yjk5MmQzNTQxNjBmMTdlZTI4ZjY0MTBhNzkzZGNkZTlmMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVB
Z2VudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdAogCiAgICAg
aWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7CiAgICAgICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIg
cmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwg
IiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsKLSAgICAgICAgYWRkTWVzc2Fn
ZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdl
LCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZp
ZXIpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0
ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKICAgICB9CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgdm9p
ZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IFJlc28KICAgICAgICAgbWVzc2FnZS5hcHBlbmQoZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKSk7CiAgICAgfQogCi0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6
Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVy
cm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1l
c3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1
ZXN0SWRlbnRpZmllcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKaW5kZXggYmI1ZDFi
ZWM2YzYzMjIzOWJlZTY0NjM0MzdhZWZlZDEyYmE0NzFkNS4uMDljYjZmNDY2NmFiNGM5MWNiZWUy
ZDBmY2ZkZDRiYTZhNjFhMTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvV2ViSGVhcEFnZW50LmNwcApAQCAtNDEsNiArNDEsNyBAQCBzdHJ1Y3QgR2FyYmFnZUNv
bGxlY3Rpb25EYXRhIHsKIH07CiAKIGNsYXNzIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rh
c2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNlbmRHYXJi
YWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2soV2ViSGVhcEFnZW50Jik7CiAgICAgdm9pZCBhZGRHYXJi
YWdlQ29sbGVjdGlvbihHYXJiYWdlQ29sbGVjdGlvbkRhdGEmJik7CkBAIC05Niw3ICs5Nyw3IEBA
IHZvaWQgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6dGltZXJGaXJlZCgpCiBXZWJI
ZWFwQWdlbnQ6OldlYkhlYXBBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JIZWFwQWdlbnQoY29udGV4dCkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhj
b250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX3NlbmRHYXJiYWdlQ29sbGVjdGlv
bkV2ZW50c1Rhc2soc3RkOjptYWtlX3VuaXF1ZTxTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNU
YXNrPigqdGhpcykpCisgICAgLCBtX3NlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2sobWFr
ZVVuaXF1ZTxTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrPigqdGhpcykpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVu
dGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
UnVudGltZUFnZW50LmNwcAppbmRleCA1ZWFmYjZhMzI4NDZlNzAwMTUzYWM4MjY4MWI3YmU1MGQz
YWZlNDhjLi44OTg1YmM5NDVmZTc1ZTBlODUxYTM2ZGUzNTg0YWIwNDcxYzBmZGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50
aW1lQWdlbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoUGFnZUFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQu
aW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3Bl
Y3RlZFBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGIyMGNiYmM5NTA3MDI4
MTFiNjU4OWFjMWRmYmQ1NzMzOTE5M2QzMzcuLjgwODJlZTMxZWVjNjBhMmY2MDMyOWRiYWJkNGQ5
ODQyZjZhNTVmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC01MCw3ICs1MCw3
IEBAIFdvcmtlckRlYnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFnZW50KCkgPSBkZWZhdWx0
OwogCiB2b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coRXhlY1N0
YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fd29ya2VyR2xvYmFs
U2NvcGUuYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBt
ZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSkpOworICAgIG1fd29ya2VyR2xv
YmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNz
YWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSkpOwogfQogCiBJbmplY3RlZFNjcmlw
dCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4IGJkOWQ0Y2FkZWZiMmZhYTFmMmUwYjI1Nzk1NWFk
NTEyNGUxNzk0ZWUuLjFmM2ZhYmEzMTI2ZjJlOWIzNmI4NGQxM2U3M2JmMWZkYTMxNzU0MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lk
IExheW91dFN0YXRlOjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQm94JiBs
YXlvdXRSb290KQogRGlzcGxheTo6Qm94JiBMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91
dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICByZXR1cm4gKm1fbGF5b3V0
VG9EaXNwbGF5Qm94LmVuc3VyZSgmbGF5b3V0Qm94LCBbJmxheW91dEJveF0gewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpCb3g+KGxheW91dEJveC5zdHlsZSgpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5bGUo
KSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCkBAIC0xNDAsMTMgKzE0MCwxMyBAQCBG
b3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3Jt
YXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCBpbnRlcmZl
cmUgd2l0aCB0aGUgY29udGVudCBpbnNpZGUuCiAgICAgICAgICAgICAvLyA8ZGl2IHN0eWxlPSJm
bG9hdDogbGVmdCI+PC9kaXY+PGRpdiBzdHlsZT0ib3ZlcmZsb3c6IGhpZGRlbiI+IDwtIGlzIGEg
bm9uLWludHJ1c2l2ZSBmbG9hdCwgYmVjYXVzZSBvdmVyZmxvdzogaGlkZGVuIHRyaWdnZXJzIG5l
dyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuPC9kaXY+CiAgICAgICAgICAgICBpZiAoZm9ybWF0
dGluZ1Jvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9h
dGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRp
bmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKIAogICAgICAg
ICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZm9ybWF0dGluZyBjb250ZXh0IGluaGVyaXRzIHRoZSBm
bG9hdHMgZnJvbSB0aGUgcGFyZW50IGZvcm1hdHRpbmcgY29udGV4dC4KICAgICAgICAgICAgIC8v
IEZpbmQgdGhlIGZvcm1hdHRpbmcgc3RhdGUgaW4gd2hpY2ggdGhpcyBmb3JtYXR0aW5nIHJvb3Qg
bGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNyZWF0ZXMgYW5kIHVzZSBpdHMgZmxvYXRpbmcgc3RhdGUu
CiAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGb3JtYXR0aW5nU3RhdGUgPSBjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdSb290LmZvcm1hdHRp
bmdDb250ZXh0Um9vdCgpKTsgCiAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGbG9hdGluZ1N0YXRl
ID0gcGFyZW50Rm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50RmxvYXRp
bmdTdGF0ZSwgKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9y
bWF0dGluZ1N0YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRlLCAqdGhpcyk7CiAgICAgICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBGb3JtYXR0aW5nU3Rh
dGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElm
TmVlZGVkKGNvbgogICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZv
cm1hdHRpbmdSb290LCBbJl0gewogCiAgICAgICAgICAgICAvLyBCbG9jayBmb3JtYXR0aW5nIGNv
bnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0aW5nIHN0YXRlLgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5n
U3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6
Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYg
TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVk
ZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0
dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIFRhYmxlIGZvcm1hdHRpbmcgY29udGV4
dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUgLWFuZCBpdCBzdGF5cyBl
bXB0eS4KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9ybWF0dGlu
Z1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRo
aXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+
KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAg
ICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE3NCwxOCArMTc0LDE4IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gTGF5b3V0U3RhdGU6OmNyZWF0ZUZv
cm1hdHRpbmdDb250ZXh0KGNvbnN0IEJvCiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9v
dC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIGlmIChmb3JtYXR0aW5nQ29u
dGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAg
IGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdT
dGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaW5saW5lRm9ybWF0
dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKICAg
ICB9CiAKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0T25seSgpKTsKICAgICAgICAgYXV0byYg
YmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oY3Jl
YXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3JtYXR0
aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgYmxvY2tGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIGlm
IChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0
KCkpIHsKICAgICAgICAgYXV0byYgdGFibGVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxUYWJs
ZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJ
Zk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VGFibGVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0
YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5nU3Rh
dGUpOwogICAgIH0KIAogICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAppbmRleCA3YWUzYjQwOWQ3NjExNmYyZTlkMTNjYzMxZWI2
ZTU2MDYzYjEwNzZmLi43OTkxNjI3NTc0MDE4M2YzNTNmNWFmZDViMTUyMmU1NjUzZmM4OTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKQEAg
LTM2LDcgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXkgewog
CiBzdHJ1Y3QgUnVuIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
c3RydWN0IFRleHRDb250ZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dENvbnRleHQodW5zaWduZWQgcG9zaXRpb24s
IHVuc2lnbmVkIGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCBhMWNkNmQ2ZjFiN2ViOTBmY2M3OTA1ZTMxZTlmMDRmZTNiZjgyNjBiLi41MDhkNjYxMjlk
MTQ4N2M0ZTg0NDA5MzkzZGEzMzQwOTE5ZWE3Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQoKSBjb25zdAogICAgICAgICAgICAgaWYgKCF0cmVh
dEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJveCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFydCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChl
LmcuIDxzcGFuPikuCi0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShz
dGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6
Q29udGFpbmVyU3RhcnQpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJ
dGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpD
b250YWluZXJTdGFydCkpOwogICAgICAgICAgICAgYXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8
Q29udGFpbmVyPihsYXlvdXRCb3gpOwogICAgICAgICAgICAgaWYgKCFjb250YWluZXIuaGFzSW5G
bG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTIsMTcg
KzI5MiwxNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29u
dGVudCgpIGNvbnN0CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVldWUu
dGFrZUxhc3QoKTsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiBhbiBpbmxpbmUg
Y29udGFpbmVyIChlLmcuIDwvc3Bhbj4pLgogICAgICAgICAgICAgaWYgKHRyZWF0QXNJbmxpbmVD
b250YWluZXIobGF5b3V0Qm94KSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
SW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5l
SXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGlu
ZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVuZCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0
Qm94LmlzTGluZUJyZWFrQm94KCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGlu
ZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWspKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5n
U3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5s
aW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhaykpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5
b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRC
b3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3goKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGxheW91dEJveC5oYXNUZXh0Q29udGVudCgpKQogICAgICAgICAgICAgICAgICAgICBJ
bmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKGZvcm1hdHRpbmdTdGF0ZS5p
bmxpbmVJdGVtcygpLCBsYXlvdXRCb3gpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1
ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkJveCkpOworICAgICAg
ICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElu
bGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9IGxheW91dEJveC5uZXh0
SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKaW5kZXggZjc0MWRlNDg5ZTk0MjQ2MWQ3NjkyZTJl
NDA0MTU5MzgzYjBjODE2MC4uMGEyMTMwMjEzZjEyNGVlYjVmN2Y3MTEyZTg4NmQ3MTJjNTMxZGEw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQu
Y3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5s
aW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAg
ICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChsb2dpY2FsUmVjdC50b3BMZWZ0KCkpOwogICAgICAg
ICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgobG9naWNhbFJlY3Qud2lkdGgoKSk7
CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQobG9naWNhbFJlY3Qu
aGVpZ2h0KCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6
Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2lj
YWxSZWN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00MDcsNyAr
NDA3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVh
dGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgICAgICB0b3BMZWZ0
ICs9IEdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZzZXQobGF5b3V0U3RhdGUo
KSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdCh0b3BMZWZ0
KTsKICAgICAgICAgICAgIGxpbmVCb3hSZWN0LmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVj
dC53aWR0aCgpKTsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3Rk
OjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CisgICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dp
Y2FsUmVjdCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQyLDcg
KzQ0Miw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3Jl
YXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAgICAgICBhdXRvIHByZXZp
b3VzUnVuQ2FuQmVFeHRlbmRlZCA9IHByZXZpb3VzTGluZVJ1biAmJiBwcmV2aW91c0xpbmVSdW4t
PnRleHRDb250ZXh0KCkgPyBwcmV2aW91c0xpbmVSdW4tPnRleHRDb250ZXh0KCktPmNhbkJlRXh0
ZW5kZWQgOiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gcmVxdWlyZXNOZXdSdW4gPSAhaW5kZXgg
fHwgIXByZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCB8fCAmbGF5b3V0Qm94ICE9ICZwcmV2aW91c0xp
bmVSdW4tPmxheW91dEJveCgpOwogICAgICAgICAgICAgaWYgKHJlcXVpcmVzTmV3UnVuKQotICAg
ICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1
ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsg
dGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKKyAgICAgICAgICAg
ICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVu
Pihsb2dpY2FsUmVjdCwgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5z
dGFydCwgdGV4dENvbnRleHQtPmxlbmd0aCB9KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICBhdXRvJiBsYXN0RGlzcGxheVJ1biA9IGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVS
dW5zKCkubGFzdCgpOwogICAgICAgICAgICAgICAgIGxhc3REaXNwbGF5UnVuLT5leHBhbmRIb3Jp
em9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKaW5kZXggYjAwMTNiNmVkNTYzYmNi
ZjgyODEzOTEzNDFmMmRkNTYxNWVjNTNlZi4uNzkwNjE5NjgxZTY3NTJkMjg3MjQ5Mzg2MjJlM2E3
NGJlMDMzZmYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUl0ZW0uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgSW5saW5lSXRlbSA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxJbmxpbmVJdGVtPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgVGV4dCwgSGFyZExpbmVCcmVhaywgQm94LCBGbG9h
dCwgQ29udGFpbmVyU3RhcnQsIENvbnRhaW5lckVuZCB9OwogICAgIElubGluZUl0ZW0oY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAppbmRleCA0ZjIwYTZmZjFkNzBjZTM0OWJk
ZTBlYmVkZmU4ZjgwYTM1ZTg1YTI4Li5lZDY1MjA1YjdkYjk5YjBmNmFiMTBmM2VlZWFhMDdjNDQ2
YjdmOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lLmNwcApAQCAtNTQsNyArNTQsNyBAQCBMaW5lOjpDb250ZW50OjpSdW46
OlJ1bihjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBUZXh0Q29udGV4dCYgdGV4
dENvbgogCiBMaW5lOjpMaW5lKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
SW5pdGlhbENvbnN0cmFpbnRzJiBpbml0aWFsQ29uc3RyYWludHMsIFNraXBWZXJ0aWNhbEFsaWdt
ZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50KQogICAgIDogbV9sYXlvdXRTdGF0ZShsYXlvdXRTdGF0
ZSkKLSAgICAsIG1fY29udGVudChzdGQ6Om1ha2VfdW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkpCisg
ICAgLCBtX2NvbnRlbnQobWFrZVVuaXF1ZTxMaW5lOjpDb250ZW50PigpKQogICAgICwgbV9sb2dp
Y2FsVG9wTGVmdChpbml0aWFsQ29uc3RyYWludHMubG9naWNhbFRvcExlZnQpCiAgICAgLCBtX2Jh
c2VsaW5lKHsgaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5lT2Zm
c2V0LCBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuaGVpZ2h0IC0gaW5pdGlh
bENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5lT2Zmc2V0IH0pCiAgICAgLCBt
X2luaXRpYWxTdHJ1dChpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuc3RydXQp
CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYg
aW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiAKIHZvaWQgTGluZTo6YXBwZW5k
Tm9uQnJlYWthYmxlU3BhY2UoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgRGlz
cGxheTo6UmVjdCYgbG9naWNhbFJlY3QpCiB7Ci0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkp
OworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4o
aW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKICAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0g
bG9naWNhbFJlY3Qud2lkdGgoKTsKIH0KIApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgTGluZTo6
YXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0sIExheW91
dFVuaXQgbG9naWNhCiAgICAgfQogCiAgICAgYXV0byB0ZXh0Q29udGV4dCA9IENvbnRlbnQ6OlJ1
bjo6VGV4dENvbnRleHQgeyBpbmxpbmVJdGVtLnN0YXJ0KCksIGlubGluZUl0ZW0uaXNDb2xsYXBz
ZWQoKSA/IDEgOiBpbmxpbmVJdGVtLmxlbmd0aCgpLCBpc0NvbXBsZXRlbHlDb2xsYXBzZWQsIGlu
bGluZUl0ZW0uaXNXaGl0ZXNwYWNlKCksIGNhbkJlRXh0ZW5kZWQgfTsKLSAgICBhdXRvIGxpbmVJ
dGVtID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIHRleHRDb250
ZXh0LCBsb2dpY2FsUmVjdCk7CisgICAgYXV0byBsaW5lSXRlbSA9IG1ha2VVbmlxdWU8Q29udGVu
dDo6UnVuPihpbmxpbmVJdGVtLCB0ZXh0Q29udGV4dCwgbG9naWNhbFJlY3QpOwogICAgIGlmIChp
c1RyaW1tYWJsZSAmJiAhaXNDb21wbGV0ZWx5Q29sbGFwc2VkKQogICAgICAgICBtX3RyaW1tYWJs
ZUNvbnRlbnQuYWRkKGxpbmVJdGVtLmdldCgpKTsKIApAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQg
TGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgSW5saW5lSXRlbSYgaW5saW5l
SXRlbSwgTGF5b3V0VW5pdCBsCiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChpbmxpbmVJ
dGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKSk7CiAgICAgfQogCi0gICAgbV9jb250ZW50LT5y
dW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBs
b2dpY2FsUmVjdCkpOworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENv
bnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKICAgICBtX2NvbnRlbnRMb2dp
Y2FsV2lkdGggKz0gKGxvZ2ljYWxXaWR0aCArIGhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBob3Jp
em9udGFsTWFyZ2luLmVuZCk7CiAgICAgbV90cmltbWFibGVDb250ZW50LmNsZWFyKCk7CiB9CkBA
IC0zMjMsNyArMzIzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmRIYXJkTGluZUJyZWFrKGNvbnN0IElu
bGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdo
dChpbmxpbmVJdGVtLCB7IH0pOwogICAgICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9naWNh
bEhlaWdodCgpKTsKICAgICB9Ci0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1f
Y29udGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRl
bSwgbG9naWNhbFJlY3QpKTsKIH0KIAogdm9pZCBMaW5lOjphZGp1c3RCYXNlbGluZUFuZExpbmVI
ZWlnaHQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBydW5IZWlnaHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lLmgKaW5kZXggZmFmMDU0NzUzZDM3MjJhYmMwMWQ4YTczZjQ3OTkzNDliY2IxYWExMS4uNzM3
YTA3YjAzMmFmNmZmMTE5OTA5NmY3YTM3NTc1N2U2ZGE5ZjFiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApAQCAtNTIsOCAr
NTIsMTAgQEAgY2xhc3MgTGluZSB7CiAgICAgTGluZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEluaXRpYWxDb25zdHJhaW50cyYsIFNraXBWZXJ0aWNhbEFsaWdtZW50KTsKIAogICAgIGNsYXNz
IENvbnRlbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0cnVjdCBSdW4geworICAgICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICAgICAgc3RydWN0IFRleHRDb250ZXh0IHsKICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5n
dGggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKaW5kZXggZjEzMDg5YTcwOGYzZmUzZmY5Yjc3Zjcy
MDk2Y2RhNDJlZjM2ZTIyMi4uNWU2YzI1NmRiMGIzMDlhYWYxZTI1ODIxZjBlMWUxOGU1NjQ1MmYx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lVGV4dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZVRleHRJdGVtLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIElubGluZVRleHRJ
dGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQs
IGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0ID0gaW5saW5lQm94LnRleHRDb250ZW50KCk7CiAgICAg
aWYgKCF0ZXh0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8
SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgMCwgMCwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBh
dXRvJiBzdHlsZSA9IGlubGluZUJveC5zdHlsZSgpOwogICAgIGF1dG8gcHJlc2VydmVOZXdsaW5l
ID0gc3R5bGUucHJlc2VydmVOZXdsaW5lKCk7CkBAIC05OSwyMCArOTksMjAgQEAgdm9pZCBJbmxp
bmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVD
b250ZW50LCBjb25zdAogICAgIHdoaWxlIChjdXJyZW50UG9zaXRpb24gPCB0ZXh0Lmxlbmd0aCgp
KSB7CiAgICAgICAgIC8vIFNvZnQgbGluZWJyZWFrPwogICAgICAgICBpZiAoaXNTb2Z0TGluZUJy
ZWFrKHRleHRbY3VycmVudFBvc2l0aW9uXSwgcHJlc2VydmVOZXdsaW5lKSkgewotICAgICAgICAg
ICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4o
aW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIDEsIHRydWUsIGZhbHNlKSk7CisgICAgICAgICAg
ICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVC
b3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICsrY3Vy
cmVudFBvc2l0aW9uOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGlzV2hpdGVzcGFjZUNoYXJhY3Rlcih0ZXh0W2N1cnJlbnRQb3NpdGlvbl0sIHByZXNlcnZl
TmV3bGluZSkpIHsKICAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gbW92ZVRvTmV4dE5vbldoaXRl
c3BhY2VQb3NpdGlvbih0ZXh0LCBjdXJyZW50UG9zaXRpb24sIHByZXNlcnZlTmV3bGluZSk7CiAg
ICAgICAgICAgICBhdXRvIGlzQ29sbGFwc2VkID0gY29sbGFwc2VXaGl0ZVNwYWNlICYmIGxlbmd0
aCA+IDE7Ci0gICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0cnVl
LCBpc0NvbGxhcHNlZCkpOworICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVu
aXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwg
dHJ1ZSwgaXNDb2xsYXBzZWQpKTsKICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBsZW5n
dGg7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gbGVu
Z3RoID0gbW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbiwgbGluZUJy
ZWFrSXRlcmF0b3IsIHN0eWxlKTsKLSAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxl
bmd0aCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VV
bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgs
IGZhbHNlLCBmYWxzZSkpOwogICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gbGVuZ3RoOwogICAg
IH0KIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+
IElubGluZVRleHRJdGVtOjpzcGxpdCh1bnNpZ25lZCBzcGxpdFBvc2l0aW9uLCB1bgogewogICAg
IFJFTEVBU0VfQVNTRVJUKHNwbGl0UG9zaXRpb24gPj0gdGhpcy0+c3RhcnQoKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiArIGxlbmd0aCA8PSBlbmQoKSk7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGxheW91dEJveCgpLCBzcGxpdFBvc2l0
aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFjZSgpLCBpc0NvbGxhcHNlZCgpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24sIGxl
bmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCBlZGYyZDRiMjc2
NjIyYzg5NWQxNzc5NzE0Y2Y3Y2YyMDhhY2Q5YzQyLi5mNTZlMWE2MTZhMmRmNTc3MWJiNDhhNzU4
MDNhZTU3M2ZjZjhjNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQm94OjpCb3goT3B0aW9uYWw8RWxlbWVu
dEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmwK
ICAgICAsIG1faGFzUmFyZURhdGEoZmFsc2UpCiB7CiAgICAgaWYgKGlzUmVwbGFjZWQoKSkKLSAg
ICAgICAgZW5zdXJlUmFyZURhdGEoKS5yZXBsYWNlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFj
ZWQ+KCp0aGlzKTsKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5yZXBsYWNlZCA9IG1ha2VVbmlx
dWU8UmVwbGFjZWQ+KCp0aGlzKTsKIH0KIAogQm94OjpCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJp
YnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCkBAIC00MjMsNyArNDIzLDcg
QEAgY29uc3QgQm94OjpCb3hSYXJlRGF0YSYgQm94OjpyYXJlRGF0YSgpIGNvbnN0CiBCb3g6OkJv
eFJhcmVEYXRhJiBCb3g6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNSYXJlRGF0YSh0
cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Qm94UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlx
dWU8Qm94UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBCb3g6OnJl
bW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCA1ZmVlY2VlNzJmMDhjNDg1MDg4ZWU0ODUx
OTQ1YzY2NDBjZmU1N2QzLi5iYzJiYmVlNzhhMzY4NjgyNmIyMDRkZmI1ZjY5NjI1Zjk1NmYyYjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVl
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
VHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjgsMjUgKzEyOCwyNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94
PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVu
dFJlbgogICAgIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAgICAv
LyBGSVhNRTogQ2xlYXJseSB0aGVyZSBtdXN0IGJlIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGlz
LgogICAgICAgICBpZiAocGFyZW50UmVuZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxh
eVR5cGU6OklubGluZSkKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3Vu
aXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4
dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4
dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJl
bnRSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxk
UmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5
bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5l
KSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3duY2Fz
dDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVuZGVyZXIuc3R5bGUoKSwg
RGlzcGxheVR5cGU6OklubGluZSkpOwogICAgICAgICByZXR1cm4gY2hpbGRMYXlvdXRCb3g7CiAg
ICAgfQogCiAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGls
ZFJlbmRlcmVyKTsKICAgICBhdXRvIGRpc3BsYXlUeXBlID0gcmVuZGVyZXIuc3R5bGUoKS5kaXNw
bGF5KCk7CiAgICAgaWYgKGlzPFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpKQotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwg
UmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpj
bG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAKICAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRl
cmVyKSkgewogICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIHByaW5jaXBhbCB0YWJsZSB3cmFwcGVy
IGJveCAoYW5kIG5vdCB0aGUgdGFibGUgYm94IGl0c2VsZikuCi0gICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMg
eyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZVdyYXBwZXJCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25l
KHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVl
PENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRh
YmxlV3JhcHBlckJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwog
ICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKSkgewogICAgICAgICBp
ZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OkJsb2NrKQotICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVy
ZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAg
Y2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVy
ZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVt
ZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHls
ZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVt
ZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHls
ZSgpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCB5ZXQgc3VwcG9ydCBhbGwgcmVwbGFj
ZWQgZWxlbWVudHMgYW5kIHRoaXMgaXMgdGVtcG9yYXJ5IGFueXdheS4KICAgICAgICAgaWYgKGNo
aWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpKQogICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnJl
cGxhY2VkKCktPnNldEludHJpbnNpY1NpemUoZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHJlbmRl
cmVyKS5pbnRyaW5zaWNTaXplKCkpOwpAQCAtMTYxLDE4ICsxNjEsMTggQEAgc3RkOjp1bmlxdWVf
cHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25zdCBSZW5kZXJFbGVtZW50
JiBwYXJlbnRSZW4KICAgICAgICAgICAgICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKHJlbmRlcmVyLnN0eWxlKCkpOwogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRUb3Ao
eyBvZmZzZXQtPmhlaWdodCgpLCBGaXhlZCB9KTsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
TGVmdCh7IG9mZnNldC0+d2lkdGgoKSwgRml4ZWQgfSk7Ci0gICAgICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMo
cmVuZGVyZXIpLCBXVEZNb3ZlKCpzdHlsZSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwg
V1RGTW92ZSgqc3R5bGUpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNo
aWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAg
ICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVt
ZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHls
ZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6Oklu
bGluZSkKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250
YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJl
bmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1
ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0g
RGlzcGxheVR5cGU6OklubGluZUJsb2NrKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVy
ZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNl
IGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uIHx8IGRpc3BsYXlU
eXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwpIHsKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRl
cmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAg
IGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVz
KHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAg
ICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cCB8
fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cCB8fCBkaXNwbGF5
VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91cAogICAgICAgICAgICAgfHwgZGlz
cGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93IHx8IGRpc3BsYXlUeXBlID09IERpc3Bs
YXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpU
YWJsZUNvbHVtbikgewotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6
Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBt
YWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJT
dHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgIHJldHVybiB7
IH07CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1
Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRhYmxlUmVuZGVyZXIsIENvbnRhaW4KICAgICAgICAg
dGFibGVDaGlsZCA9IHRhYmxlQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogCi0gICAgYXV0
byB0YWJsZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRy
aWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25l
KHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOworICAgIGF1dG8gdGFibGVCb3ggPSBtYWtlVW5pcXVl
PENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRh
YmxlQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZSh0YWJsZVJlbmRlcmVyLnN0eWxlKCkpKTsKICAg
ICBhcHBlbmRDaGlsZCh0YWJsZVdyYXBwZXJCb3gsICp0YWJsZUJveCk7CiAgICAgd2hpbGUgKHRh
YmxlQ2hpbGQpIHsKICAgICAgICAgVHJlZUJ1aWxkZXI6OmNyZWF0ZVN1YlRyZWUoZG93bmNhc3Q8
UmVuZGVyRWxlbWVudD4oKnRhYmxlQ2hpbGQpLCAqdGFibGVCb3gpOwpAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHZvaWQgcHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAgICAgICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gb3V0cHV0IGdlb21ldHJ5IHdpdGhvdXQgbGF5b3V0
IGNvbnRleHQuCiAgICAgICAgIGF1dG8mIHJlbmRlclZpZXcgPSAqZG9jdW1lbnQtPnJlbmRlclZp
ZXcoKTsKICAgICAgICAgYXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrID0gVHJlZUJ1aWxkZXI6
OmNyZWF0ZUxheW91dFRyZWUocmVuZGVyVmlldyk7Ci0gICAgICAgIGF1dG8gbGF5b3V0U3RhdGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCppbml0aWFsQ29udGFpbmlu
Z0Jsb2NrKTsKKyAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IG1ha2VVbmlxdWU8TGF5b3V0OjpM
YXlvdXRTdGF0ZT4oKmluaXRpYWxDb250YWluaW5nQmxvY2spOwogICAgICAgICBsYXlvdXRTdGF0
ZS0+c2V0UXVpcmtzTW9kZShyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5MaW1pdGVkUXVpcmtzTW9k
ZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6OkxpbWl0ZWQgOiAocmVuZGVyVmlldy5kb2N1
bWVudCgpLmluUXVpcmtzTW9kZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6OlllcyA6IExh
eW91dFN0YXRlOjpRdWlya3NNb2RlOjpObykpOwogICAgICAgICBsYXlvdXRTdGF0ZS0+dXBkYXRl
TGF5b3V0KCk7CiAgICAgICAgIHNob3dMYXlvdXRUcmVlKCppbml0aWFsQ29udGFpbmluZ0Jsb2Nr
LCBsYXlvdXRTdGF0ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKaW5kZXggNTFkNzdlNGFmMWRiZGRmMDQ1YTkyYzFjOGFkM2I5OWVhY2ViOTdiNS4uYjQ5OGEy
MjRiMTkwYzZjZTg0NGViOWRkN2ViOWI3YTEwNWQ3NmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29u
dGVudEZpbHRlcj4gQ29udGVudEZpbHRlcjo6Y3JlYXRlKERvY3VtZW50TG9hZGVyJiBkb2N1bWVu
dExvYQogICAgIGlmIChmaWx0ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZp
bHRlcnMpLCBkb2N1bWVudExvYWRlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudEZp
bHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOwogfQogCiBDb250ZW50Rmls
dGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5lciYmIGNvbnRlbnRGaWx0ZXJzLCBEb2N1bWVudExv
YWRlciYgZG9jdW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4IGQwZDU0Yjk3ZWFlNzIwNDI2Zjk2MWM4ZGFl
ODk1ZTIwMzY5Y2VkY2MuLmM0Y2U1ZjU1MjE3MGIzY2ZjOGI4NDFiNTlhNTEwZmQ3NWFhODNmYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCB2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICBp
ZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIHNlY3VyaXR5T3JpZ2luLCBlcnJvckRlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAg
YXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJ
dGVtPihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAgICAgaWYgKCFyZXN1bHQtPnBhcnNlKHJl
c3BvbnNlKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09yaWdpbk1ldGhvZChyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3JpcHRp
b24pCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2luSGVhZGVycyhyZXF1ZXN0
Lmh0dHBIZWFkZXJGaWVsZHMoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3Jp
cHRpb24pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBk
ZTA5ZTcwMzk5Y2M3NDdlODg3MzY5NzgzNzI0ZTZkYWE5ZmM3ODhiLi4wNDU1Y2FmYzU5ZmY3YjZl
YTFmOWEyY2QzOTMxYTY5ZTlmNjk0NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRM
b2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRAog
ICAgICwgbV9vcmlnaW5hbFN1YnN0aXR1dGVEYXRhV2FzVmFsaWQoc3Vic3RpdHV0ZURhdGEuaXNW
YWxpZCgpKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyKCp0aGlzLCAm
RG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJlZCkKICAg
ICAsIG1fZGF0YUxvYWRUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0
dXRlRGF0YUxvYWROb3cpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0KHN0ZDo6bWFrZV91
bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKSkKKyAgICAsIG1fYXBwbGljYXRpb25D
YWNoZUhvc3QobWFrZVVuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQogewogfQog
CkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB1aW50NjRfdCBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxp
Y2F0aW9uTWFuaWZlc3QoKQogICAgIGlmIChtYW5pZmVzdFVSTC5pc0VtcHR5KCkgfHwgIW1hbmlm
ZXN0VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIG1hbmlmZXN0
TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhp
cywgbWFuaWZlc3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKKyAgICBhdXRvIG1hbmlmZXN0TG9hZGVy
ID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RV
UkwsIHVzZUNyZWRlbnRpYWxzKTsKICAgICBhdXRvKiByYXdNYW5pZmVzdExvYWRlciA9IG1hbmlm
ZXN0TG9hZGVyLmdldCgpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG5leHRDYWxsYmFja0lEKys7
CiAgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy5zZXQoV1RGTW92ZShtYW5pZmVzdExv
YWRlciksIGNhbGxiYWNrSUQpOwpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6c2V0QXJjaGl2ZShSZWY8QXJjaGl2ZT4mJiBhcmNoaXZlKQogdm9pZCBEb2N1bWVudExv
YWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJiBhcmNoaXZlKQogewogICAgIGlm
ICghbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+
KCk7CisgICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24tPmFkZEFsbFJlc291cmNlcyhhcmNoaXZlKTsKIH0KIApAQCAtMTQzNiw3ICsxNDM2LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJiBhcmNo
aXZlKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZl
UmVzb3VyY2U+JiYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24pCi0gICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKKyAgICAgICAgbV9hcmNoaXZlUmVz
b3VyY2VDb2xsZWN0aW9uID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigp
OwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkUmVzb3VyY2UoV1RGTW92ZShy
ZXNvdXJjZSkpOwogfQogCkBAIC0xOTYzLDcgKzE5NjMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
Ojpsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIC8v
IElmIHRoZSBsb2FkIHdhcyBhYm9ydGVkIGJ5IGNsZWFyaW5nIG1fcmVxdWVzdCwgaXQncyBwb3Nz
aWJsZSB0aGUgQXBwbGljYXRpb25DYWNoZUhvc3QKICAgICAgICAgLy8gaXMgbm93IGluIGEgc3Rh
dGUgd2hlcmUgc3RhcnRpbmcgYW4gZW1wdHkgbG9hZCB3aWxsIGJlIGluY29uc2lzdGVudC4gUmVw
bGFjZSBpdCB3aXRoCiAgICAgICAgIC8vIGEgbmV3IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LgotICAg
ICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlv
bkNhY2hlSG9zdD4oKnRoaXMpOworICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0gbWFr
ZVVuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpOwogICAgICAgICBtYXliZUxvYWRF
bXB0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjEyMiw3ICsyMTIyLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9u
LCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
aWNvbkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRlcj4oKnRoaXMsIGljb24udXJs
KTsKKyAgICBhdXRvIGljb25Mb2FkZXIgPSBtYWtlVW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBp
Y29uLnVybCk7CiAgICAgYXV0byogcmF3SWNvbkxvYWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7CiAg
ICAgbV9pY29uTG9hZGVycy5zZXQoV1RGTW92ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzQ1MGMwODcwYzBk
YjkwMDJiOTA0YzdiNmNiY2U0Yzk2OTAyYzZkYy4uYWNhMzQ1Mjk4NWI3MzExOWJjYjIzYzQzYmEy
M2VlZmI3NWE3YTM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAg
LTU4Miw3ICs1ODIsNyBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhF
bXB0eUNsaWVudHMoKQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFbXB0eVByb2dyZXNzVHJh
Y2tlckNsaWVudD4gZHVtbXlQcm9ncmVzc1RyYWNrZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0gJmR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50
LmdldCgpOwogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPEVt
cHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5h
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUo
eyB9LCB7IH0pOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBhZG9w
dFJlZigqbmV3IEVtcHR5RGF0YWJhc2VQcm92aWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCBlMGY0NjE0OGYyZGZhYTg3ZjZiMjQyNjM3ZDUwODkxODUyMGE2MGEy
Li44M2JlYjI3MTdkMzM3YzM0MWMwMTVlY2Y0NmQ0ZjM3M2UwOGIxNTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI3MCwxMCArMjcwLDEwIEBAIGNsYXNzIEZyYW1l
TG9hZGVyOjpGcmFtZVByb2dyZXNzVHJhY2tlciB7CiBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIo
RnJhbWUmIGZyYW1lLCBGcmFtZUxvYWRlckNsaWVudCYgY2xpZW50KQogICAgIDogbV9mcmFtZShm
cmFtZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcG9saWN5Q2hlY2tlcihzdGQ6
Om1ha2VfdW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1lKSkKLSAgICAsIG1faGlzdG9yeShzdGQ6
Om1ha2VfdW5pcXVlPEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCisgICAgLCBtX3BvbGljeUNo
ZWNrZXIobWFrZVVuaXF1ZTxQb2xpY3lDaGVja2VyPihmcmFtZSkpCisgICAgLCBtX2hpc3Rvcnko
bWFrZVVuaXF1ZTxIaXN0b3J5Q29udHJvbGxlcj4oZnJhbWUpKQogICAgICwgbV9ub3RpZmllcihm
cmFtZSkKLSAgICAsIG1fc3ViZnJhbWVMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxTdWJmcmFtZUxv
YWRlcj4oZnJhbWUpKQorICAgICwgbV9zdWJmcmFtZUxvYWRlcihtYWtlVW5pcXVlPFN1YmZyYW1l
TG9hZGVyPihmcmFtZSkpCiAgICAgLCBtX21peGVkQ29udGVudENoZWNrZXIoZnJhbWUpCiAgICAg
LCBtX3N0YXRlKEZyYW1lU3RhdGVQcm92aXNpb25hbCkKICAgICAsIG1fbG9hZFR5cGUoRnJhbWVM
b2FkVHlwZTo6U3RhbmRhcmQpCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
aW5pdCgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNo
aW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpOwogCiAgICAgbV9uZXR3b3JraW5n
Q29udGV4dCA9IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9n
cmVzc1RyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2Zy
YW1lKTsKKyAgICBtX3Byb2dyZXNzVHJhY2tlciA9IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1Ry
YWNrZXI+KG1fZnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6
ZWREb2N1bWVudChjb25zdCBVUkwmKQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KGNvbnN0IFVSTCYpCiAgICAgbV9uZWVkc0Ns
ZWFyID0gdHJ1ZTsKIAogICAgIG1fbmV0d29ya2luZ0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVO
ZXR3b3JraW5nQ29udGV4dCgpOwotICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3Vu
aXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNr
ZXIgPSBtYWtlVW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9p
ZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKQEAgLTI2NzgsNyAr
MjY3OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRldGFjaENoaWxkcmVuKCkKICAgICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwj
bmF2aWdhdGUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF2aWdhdGlvbkRpc2FibGVyPiBuYXZpZ2F0
aW9uRGlzYWJsZXI7CiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgbmF2
aWdhdGlvbkRpc2FibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+KCZt
X2ZyYW1lKTsKKyAgICAgICAgbmF2aWdhdGlvbkRpc2FibGVyID0gbWFrZVVuaXF1ZTxOYXZpZ2F0
aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsKIAogICAgIC8vIEFueSBzdWJmcmFtZSBpbnNlcnRlZCBi
eSB1bmxvYWQgZXZlbnQgaGFuZGxlcnMgZXhlY3V0ZWQgaW4gdGhlIGxvb3AgYmVsb3cgd2lsbCBu
b3QgZ2V0IHVubG9hZGVkCiAgICAgLy8gYmVjYXVzZSB3ZSBjcmVhdGUgYSBjb3B5IG9mIHRoZSBz
dWJmcmFtZXMgbGlzdCBiZWZvcmUgbG9vcGluZy4gVGhlcmVmb3JlLCBpdCB3b3VsZCBiZSB1bnNh
ZmUgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggOGUzYTQ2YjUxMGE5OTgw
YzJhZmI4MGEzNDQ4YTQ5ODllYWMxOWUxOS4uNWZmZjY3ZDk0MmViZTkxZTAzYTUyOTZlNmU5ZGEy
NGRiM2I3Y2NiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTk2LDYgKzk2
LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIHVzaW5n
IENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBvbGlj
eUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyKT47CiAKIGNsYXNzIEZyYW1lTG9hZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShG
cmFtZUxvYWRlcik7CiBwdWJsaWM6CiAgICAgRnJhbWVMb2FkZXIoRnJhbWUmLCBGcmFtZUxvYWRl
ckNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGNkZjY0OTUy
NmZlM2QxZjMzMjhkNmUzNmMyMDEwODdjMzFmMTY1NWIuLjQwOGM1MzY0MjllM2IwODc3OThlYjk3
ZTc2ODY0Y2M5NDg2NjY3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAg
LTE0MiwyMiArMTQyLDIyIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNv
dXJjZUNsaWVudD4gY3JlYXRlTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVuCiB7CiAgICAgc3dpdGNo
IChyZXNvdXJjZS50eXBlKCkpIHsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFn
ZVJlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZElt
YWdlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNl
KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNs
aWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRJbWFnZT4ocmVzb3VyY2UpKTsKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0
PENhY2hlZFNjcmlwdD4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlu
a1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2Ny
aXB0PihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxl
U2hlZXQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkU3R5bGVS
ZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXNv
dXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZFN0eWxlUmVzb3Vy
Y2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVzb3VyY2Up
KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpGb250UmVzb3VyY2U6Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihs
b2FkZXIsIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPExpbmtQcmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0
PENhY2hlZEZvbnQ+KHJlc291cmNlKSk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlRleHRUcmFja1Jlc291cmNlOgotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9h
ZGVyLCBkb3duY2FzdDxDYWNoZWRUZXh0VHJhY2s+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRv
d25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2UpKTsKICNlbmRpZgogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlR5cGU6Ok1lZGlhUmVzb3VyY2U6CiAgICAgICAgIEFTU0VSVChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLm1lZGlhUHJlbG9hZGluZ0VuYWJsZWQo
KSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6
OlJhd1Jlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9h
ZFJhd1Jlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihy
ZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291
cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkp
OwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZToKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpJY29uOgogI2lmIEVOQUJMRShTVkdfRk9OVFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKaW5kZXggMDJjYzdkMTIwY2E0
YmNmZjM1MjVjOGY3NDljYzQxODBmZTZkNDVlMi4uOGFlNGIzMWI4YjY5Zjk4ZDAxYWRhNzg4OTlh
OThiZDExZGQ0MjczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25EaXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJs
ZXIuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOYXZp
Z2F0aW9uRGlzYWJsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIE5hdmlnYXRpb25EaXNhYmxlcihGcmFtZSogZnJhbWUpCiAgICAgICAgIDogbV9mcmFtZShm
cmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApp
bmRleCA1NThjNzgwNDk1N2VjODgyODgxOGVmNTYxOWJmOTgzZDNmOTQwYTU1Li4zYzJjMjUyYWE1
MWI5NjkyOTVlY2YxNDgxMjU0YTMyNDBlYzQyYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KERvY3VtZW50JiBpbml0aWF0aW5nRG9j
dW1lbnQsIGRvdWJsZQogICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRl
bSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCiAgICAgaWYgKCFtX3JlZGly
ZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpIHsKICAgICAgICAgYXV0byBsb2Nr
QmFja0ZvcndhcmRMaXN0ID0gZGVsYXkgPD0gMSA/IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyA6
IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vOwotICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5p
cXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAmbV9mcmFt
ZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxv
Y2tCYWNrRm9yd2FyZExpc3QpKTsKKyAgICAgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVs
ZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3VtZW50LCBkZWxheSwgJm1fZnJhbWUuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0Zvcndh
cmRMaXN0KSk7CiAgICAgfQogfQogCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBOYXZpZ2F0aW9u
U2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKERvY3VtZW50JiBpbml0aWF0aW5nRG9j
dW1lbnQsIFMKICAgICAvLyBUaGlzIG1heSBoYXBwZW4gd2hlbiBhIGZyYW1lIGNoYW5nZXMgdGhl
IGxvY2F0aW9uIG9mIGFub3RoZXIgZnJhbWUuCiAgICAgYm9vbCBkdXJpbmdMb2FkID0gIWxvYWRl
ci5zdGF0ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKTsKIAotICAg
IHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRp
YXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9y
eSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdl
Pihpbml0aWF0aW5nRG9jdW1lbnQsICZzZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgbG9j
a0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVG
b3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvbikKQEAgLTQ2OCw3
ICs0NjgsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Np
b24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3NpbwogICAgICAgICBsb2NrQmFja0Zvcndh
cmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzOwogICAgIH0KICAgICAKLSAgICBzY2hl
ZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihXVEZNb3ZlKHN1
Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CisgICAgc2NoZWR1
bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lvbj4oV1RGTW92ZShzdWJtaXNzaW9u
KSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOwogfQogCiB2b2lkIE5hdmlnYXRp
b25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50
KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVS
ZWZyZXNoKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQpCiAgICAgaWYgKHVybC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2No
ZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGluZ0RvY3VtZW50LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLCB1cmwsIG1fZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigp
KSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0aWF0aW5n
RG9jdW1lbnQsICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgbV9m
cmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9u
U2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKQEAgLTQ5OCwx
MyArNDk4LDEzIEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2
aWdhdGlvbihpbnQgc3RlcHMpCiAgICAgfQogCiAgICAgLy8gSW4gYWxsIG90aGVyIGNhc2VzLCBz
Y2hlZHVsZSB0aGUgaGlzdG9yeSB0cmF2ZXJzYWwgdG8gb2NjdXIgYXN5bmNocm9ub3VzbHkuCi0g
ICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbj4o
c3RlcHMpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0
aW9uPihzdGVwcykpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUGFn
ZUJsb2NrKERvY3VtZW50JiBvcmlnaW5Eb2N1bWVudCkKIHsKICAgICBpZiAoc2hvdWxkU2NoZWR1
bGVOYXZpZ2F0aW9uKCkpCi0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1
bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkpOworICAgICAgICBzY2hlZHVsZShtYWtlVW5p
cXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3JpZ2luRG9jdW1lbnQpKTsKIH0KIAogdm9pZCBOYXZp
Z2F0aW9uU2NoZWR1bGVyOjp0aW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5oCmluZGV4IGEyZGRhY2UyOGYwN2MzOTFmZTI0ZTE5MThkMjU0YTUw
MDJmYWI0NzYuLjk3YzIzYjE1MDkyYmYzOTNiMzFkMjBjOGYzNGQyNTc3MjYzMWNjOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaApAQCAtNDYsNiArNDYs
NyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGVudW0gY2xhc3MgTmV3TG9hZEluUHJvZ3Jlc3Mg
OiBib29sIHsgTm8sIFllcyB9OwogICAgIAogY2xhc3MgTmF2aWdhdGlvblNjaGVkdWxlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTmF2aWdh
dGlvblNjaGVkdWxlcihGcmFtZSYpOwogICAgIH5OYXZpZ2F0aW9uU2NoZWR1bGVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCmluZGV4IGUxN2E5ZGM3MmRlMDM3
Yzk2MzRiYzFjYzkzYzJjMWE3N2E4NmJmYTMuLjI4MTdhNzY2NjQ1N2IyMzk3M2E2OGZjZjdiYzAx
ODBjMTJiZjVjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1Ry
YWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3Bw
CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dy
ZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2UKIAogICAgIGF1dG8m
IGl0ZW0gPSBtX3Byb2dyZXNzSXRlbXMuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgaXRlbSA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0ZWRMZW5ndGgpOworICAgICAgICBpdGVtID0gbWFrZVVu
aXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApp
bmRleCBlYTVkYmZiYWFiMjBiZmQ0M2RlYWNmMWU3NzYxMWMzNDMzYWJhYjgzLi44MjQ2YmIwNzA2
Y2QwYzA3MWY4OTk2Mjg5ODZhNWJhNTFjNDhiNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBAIC01MzUsNyArNTM1LDcgQEAgYm9vbCBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjaGVja0ZvckhlYWRDaGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW4sIGJvb2wKICAgICBpZiAobV9jb250ZW50VHlwZSA9PSBYTUwpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgbV9jaGFyc2V0UGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1M
TWV0YUNoYXJzZXRQYXJzZXI+KCk7CisgICAgbV9jaGFyc2V0UGFyc2VyID0gbWFrZVVuaXF1ZTxI
VE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7CiAgICAgcmV0dXJuIGNoZWNrRm9yTWV0YUNoYXJzZXQo
ZGF0YSwgbGVuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNw
cAppbmRleCBjYTllNmM0MzQzZDc0MDEwNTUzYTllMTBmYTY1NjNlZTUyMzkxYmJlLi5mYTkyNmVh
MDYyYWRmZjIwNTcwYzhhMzY5MTI0NjcyYjllZjU2NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFRleHRUcmFja0xv
YWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIW1fY3VlUGFyc2VyKQotICAgICAgICBtX2N1ZVBhcnNlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJD
bGllbnQqPih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgbV9jdWVQ
YXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2Vy
Q2xpZW50Kj4odGhpcyksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICB3aGlsZSAo
bV9wYXJzZU9mZnNldCA8IGJ1ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEobV9wYXJzZU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTEyNjNlMmYwNDU3NGI0ZjBl
ZTczYzA0ZThiNjJmNWM4MDcyYTc1OC4uNzc1MzJmODYxMzRlMDQzYWQzN2QzZjU5OTk4YTZmNTdh
NDI0MTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtMTE1LDExICsxMTUsMTEgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4K
ICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KTsKIAogICAgIGF1dG8gc2VjdXJpdHlP
cmlnaW5Db3B5ID0gc2VjdXJpdHlPcmlnaW4tPmlzb2xhdGVkQ29weSgpOwotICAgIGF1dG8gY29u
dGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5
UG9saWN5PihnbG9iYWxTY29wZS51cmwoKS5pc29sYXRlZENvcHkoKSk7CisgICAgYXV0byBjb250
ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBjb250ZW50U2VjdXJpdHlQ
b2xpY3lDb3B5LT5jb3B5U3RhdGVGcm9tKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgY29u
dGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RTdGF0ZUZy
b20oKmNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKLSAgICBhdXRvIG9wdGlvbnNDb3B5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMb2FkZXJUYXNrT3B0aW9ucz4ob3B0aW9ucywgcmVxdWVzdC5odHRwUmVm
ZXJyZXIoKS5pc051bGwoKSA/IG91dGdvaW5nUmVmZXJyZXIgOiByZXF1ZXN0Lmh0dHBSZWZlcnJl
cigpLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luQ29weSkpOworICAgIGF1dG8gb3B0aW9uc0NvcHkg
PSBtYWtlVW5pcXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZl
cnJlcigpLmlzTnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVy
KCksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7CiAKICAgICAvLyBBbGwgbG9hZHMgc3Rh
cnQgb3V0IGFzIERvY3VtZW50LiBJbnNpZGUgV29ya2VyVGhyZWFkYWJsZUxvYWRlciB3ZSB1cGdy
YWRlIHRoaXMgdG8gYSBXb3JrZXIgbG9hZC4KICAgICBBU1NFUlQob3B0aW9uc0NvcHktPm9wdGlv
bnMuaW5pdGlhdG9yQ29udGV4dCA9PSBJbml0aWF0b3JDb250ZXh0OjpEb2N1bWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCmluZGV4IGY5N2ViMDA0MjViZDI5YjNjYjZiY2IzNDVmYmZkNjUyMjQwOGY4Y2UuLmJiYTkx
MDQxOTE1NGVjZjQzYzEyMmUyZDkwY2Y4NjQ1NTk3YTk5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC00MjMs
NyArNDIzLDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZShOb2RlJiBub2RlLCBXVEY6OkZ1bmN0aW9uPGJvb2wKICAgICAvLyBidXQgd2UgY2FuIGFw
cHJveGltYXRlIHRoYXQgYnkgY2hlY2tpbmcgaWYgc2NyaXB0aW5nIGlzIGVuYWJsZWQgcmlnaHQg
bm93LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+IHRhZ05hbWVz
VG9GaWx0ZXI7CiAgICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+c2V0dGlu
Z3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkgewotICAgICAgICB0YWdOYW1lc1RvRmlsdGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+KCk7CisgICAgICAgIHRhZ05hbWVz
VG9GaWx0ZXIgPSBtYWtlVW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4oKTsKICAgICAgICAg
dGFnTmFtZXNUb0ZpbHRlci0+YXBwZW5kKEhUTUxOYW1lczo6bm9zY3JpcHRUYWcpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggZjMx
MjkwNzI4ZjY5OTBkODAwOGJhMjY0NDAyMWNiMWQ4ODViOTQ1Ny4uNzBmNTg2ODQ4ZWFlZTI5MTI2
YzRiYWU5MTA2YzE1ZTI5NmE5MDc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6c2V0
Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAgbV9p
bWFnZU9ic2VydmVyLT5jYWNoZWRJbWFnZXMoKS5hZGQodGhpcyk7CiAKICAgICBpZiAobV9pbWFn
ZSAmJiBpczxTVkdJbWFnZT4oKm1faW1hZ2UpKQotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1h
Z2UpKTsKKyAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hl
PigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6
OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQpAQCAtMzU3LDcgKzM1
Nyw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSgpCiAKICAgICBpZiAo
bV9pbWFnZSkgewogICAgICAgICBpZiAoaXM8U1ZHSW1hZ2U+KCptX2ltYWdlKSkKLSAgICAgICAg
ICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRv
d25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hl
ID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdl
KSk7CiAKICAgICAgICAgLy8gU2VuZCBxdWV1ZWQgY29udGFpbmVyIHNpemUgcmVxdWVzdHMuCiAg
ICAgICAgIGlmIChtX2ltYWdlLT51c2VzQ29udGFpbmVyU2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCBiZTYxODNh
YmZhNTlkNWM4ZTE2MmZlYzFkNjU1MjQ1MjNhZGUyNzhjLi5mOWE3NWYzNTQ1Mjc2OTAyYTllNGE1
YzM1YjZhYzZiMWYxNTBjMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFJlc291cgogICAgICAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZN
b3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
IGVsc2UgewogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKFJlZGlyZWN0UGFpcihyZXF1
ZXN0LCByZXNwb25zZSkpOwotICAgICAgICBpdGVyYXRlQ2xpZW50cyhDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4obV9jbGllbnRzKSwgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBXVEZNb3ZlKHJlcXVlc3QpLCBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVzcG9uc2U+KHJlc3BvbnNlKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3BvbnNl
XSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgIGl0ZXJhdGVD
bGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhp
cyksIFdURk1vdmUocmVxdWVzdCksIG1ha2VVbmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9u
c2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVx
dWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCmluZGV4IGU0MzBlNDQ3YWM0OTQ2MzZjOTg0ZTc0ZDQwYjkxZTY1Y2RlYmI1MGIuLjA1Njdk
MWQ1ZGU4YzZmMTNlMTg2ODQ0YWVkNzU1NzVjZjE3ZTE3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNTQ2LDcgKzU0Niw3IEBAIGJv
b2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBj
bGllbnQpCiAgICAgICAgIC8vIFRoZXJlZm9yZSwgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgc2Vu
ZGluZyBjYWxsYmFja3Mgb24gYSBjYWNoZSBoaXQgbGlrZSBvdGhlciBDYWNoZWRSZXNvdXJjZXMs
CiAgICAgICAgIC8vIHdlIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kIGVuc3VyZSB3ZSBuZXZl
ciBmaW5pc2ggc3luY2hyb25vdXNseS4KICAgICAgICAgQVNTRVJUKCFtX2NsaWVudHNBd2FpdGlu
Z0NhbGxiYWNrLmNvbnRhaW5zKCZjbGllbnQpKTsKLSAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdD
YWxsYmFjay5hZGQoJmNsaWVudCwgc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsIGNs
aWVudCkpOworICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50LCBt
YWtlVW5pcXVlPENhbGxiYWNrPigqdGhpcywgY2xpZW50KSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg0M2E5ZDFmOWQ2Yzg1ZjEwMDBhMmM0MGYxOTY0YjQ3
YTJlYjFjN2EuLmIzNGI4ZmQzNWMxMDc3YTU0NTJhYmIzNDMyMzYxYjRjYzNkMTFjOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgLy8g
RW50cnkgcG9pbnQgdG8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI21haW4tZmV0Y2gu
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gb3JpZ2luYWxSZXF1ZXN0Owog
ICAgIGlmIChDYWNoZWRSZXNvdXJjZTo6c2hvdWxkVXNlUGluZ0xvYWQodHlwZSkgfHwgcmVxdWVz
dC5vcHRpb25zKCkuZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1w
dHlTdHJpbmcpIHsKLSAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZXNvdXJjZVJlcXVlc3Q+KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpOworICAgICAgICBvcmln
aW5hbFJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKSk7CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdC0+Y2xlYXJIVFRQUmVmZXJyZXIo
KTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBPcmlnaW4oKTsKICAgICB9CkBA
IC0xMzkxLDcgKzEzOTEsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbAogICAgICAgICByZXNv
dXJjZVZhbHVlLT5pbmNyZWFzZVByZWxvYWRDb3VudCgpOwogCiAgICAgICAgIGlmICghbV9wcmVs
b2FkcykKLSAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNo
U2V0PENhY2hlZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICBtX3ByZWxvYWRzID0gbWFrZVVu
aXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICBtX3ByZWxvYWRz
LT5hZGQocmVzb3VyY2VWYWx1ZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZTsK
QEAgLTE0MzMsNyArMTQzMyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJl
bG9hZHMoQ2xlYXJQcmVsb2Fkc01vZGUgbW9kZSkKICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsK
ICAgICAgICAgaWYgKG1vZGUgPT0gQ2xlYXJQcmVsb2Fkc01vZGU6OkNsZWFyU3BlY3VsYXRpdmVQ
cmVsb2FkcyAmJiByZXNvdXJjZS0+aXNMaW5rUHJlbG9hZCgpKSB7CiAgICAgICAgICAgICBpZiAo
IXJlbWFpbmluZ0xpbmtQcmVsb2FkcykKLSAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJl
bG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7
CisgICAgICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0
SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICAgICAgcmVtYWluaW5nTGlua1By
ZWxvYWRzLT5hZGQocmVzb3VyY2UpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dFJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlLmgKaW5kZXggNzBjYjFhZmE0Y2YxZDNhNmU2NDJhOGFlOWRiODQ0OGY4NGQx
NGJkNi4uMjJhZTcyZDhmZjVlZjcyOWExNjRjNzZhNGZkYmIwZTQ5ZDcxZjRiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlLmgKQEAgLTM1LDcgKzM1LDggQEAgY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CiBjbGFz
cyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAK
LWNsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIDogcHVibGljIENhY2hlZFNWR0RvY3Vt
ZW50Q2xpZW50IHsKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIGZpbmFsIDogcHVi
bGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXgg
ZDNiODA1MTQyM2MzZmM1MjRiZDhiNmY1NWYzNWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhj
ZjdjZGYwM2FmZmNiZWYzOTI3ODI2M2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVu
c3VyZVNlc3Npb25SZXNvdXJjZU1hcChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hl
ZFJlCiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1f
c2Vzc2lvblJlc291cmNlcy5hZGQoc2Vzc2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVz
b3VyY2VNYXA+KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+
KCk7CiAgICAgcmV0dXJuICptYXA7CiB9CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9y
eUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4K
IAogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1h
Z2UpLCBudWxscHRyKTsKLSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxD
YWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIs
IGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVu
aXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29r
aWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRD
bGllbnQoZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVj
b2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBA
IGF1dG8gTWVtb3J5Q2FjaGU6OmxydUxpc3RGb3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAt
PiBMUlVMaXN0JgogCiAgICAgbV9hbGxSZXNvdXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5k
ZXggKyAxKTsKICAgICB3aGlsZSAobV9hbGxSZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgp
Ci0gICAgICAgIG1fYWxsUmVzb3VyY2VzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PExSVUxpc3Q+KCkpOworICAgICAgICBtX2FsbFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFr
ZVVuaXF1ZTxMUlVMaXN0PigpKTsKICAgICByZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5k
ZXhdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCmluZGV4
IDYxOGU5NDI5NTAxN2RjM2I4MzAzNjVjMTE2NzYxNTM4YjFkYjYyMzguLjE1MDNkNzhlM2FmNTk5
NDk1NGIzM2MyYTgwODRmNGZlYTYzMDA3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvUHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
UHJldmlld0xvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFByZXZpZXdMb2FkZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdMb2Fk
ZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4g
Y3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCmluZGV4IGY2YjgyMjE3OTE2Y2Fk
OTViZmU5NjBiYjNlMzc4NGEyNzBhOWJhNjcuLmM1Y2E1YzI1ZjExYjRkOGE5Y2E5M2VmYzg4OTA5
OTA3ZjZiNzY2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmll
d0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIu
bW0KQEAgLTg2LDcgKzg2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2Fk
ZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJjZVIKIAogICAgIF9yZXNv
dXJjZUxvYWRlciA9IG1ha2VXZWFrUHRyKHJlc291cmNlTG9hZGVyKTsKICAgICBfcmVzcG9uc2Ug
PSByZXNvdXJjZVJlc3BvbnNlOwotICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBy
ZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSk7CisgICAgX2NvbnZlcnRlciA9IG1ha2VV
bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKICAgICBfYnVmZmVyZWRE
YXRhQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBf
c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkt
PnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZp
ZXcoKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25u
ZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAg
fQogCiAgICAgX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFtzZWxmLCByZXRhaW5lZFNlbGYg
PSByZXRhaW5QdHIoc2VsZildIChjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSB7Ci0gICAgICAgIF9j
b252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNw
b25zZSwgcGFzc3dvcmQpOworICAgICAgICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3
Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UsIHBhc3N3b3JkKTsKICAgICAgICAgW19jb252ZXJ0
ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgYXBwZW5kRGF0YUFycmF5Ol9idWZmZXJlZERhdGFBcnJh
eS5nZXQoKV07CiAgICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZpbmlz
aGVkQXBwZW5kaW5nRGF0YV07CiAgICAgfSk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUHJldmlld0xv
YWRlcjo6flByZXZpZXdMb2FkZXIoKQogc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFBy
ZXZpZXdMb2FkZXI6OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQoUHJldmlld0NvbnZlcnRlcjo6c3Vw
cG9ydHNNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CiB9CiAKIGJvb2wgUHJl
dmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAppbmRleCBlNmFk
YjY3ZGE5NDg2ODYyNmZlMjA2ZmYxNmU2NGRkYWNlMjcwMWZlLi42MTNlNzg5MmI0MTBmM2IyYTQ5
NGVjZmI2ODAwMGFhYzBkYzY2MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBUZXh0VHJhY2tMaXN0Owog
c3RydWN0IE1lZGlhU2VsZWN0aW9uT3B0aW9uOwogCiBjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYXB0aW9u
VXNlclByZWZlcmVuY2VzKFBhZ2VHcm91cCYpOwogICAgIHZpcnR1YWwgfkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcAppbmRleCBjNDc5Y2ExZjljYjA3ZDRhYzdiNGI5ZmIyMjg1MWYwYzk5NGIxNzE0Li40Y2Nk
YWIwNGI3YjNmNTUzNGNlY2MyYTE5ZWMwYTRiY2I3YWIxN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6Om1heWJlQ3Jl
YXRlQ29udGV4dE1lbnUoRXZlbnQKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENvbnRleHRNZW51PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRleHRN
ZW51PigpOwogfQogCiB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51
KEV2ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
aW5kZXggZjYzZGFhN2Y2MzQ3MjU1ODg3M2RiM2I1ODNiYzI1MTJhMTc3NTI3YS4uY2RjNzRmNmRl
MDllOTNkZTlhYWI5MjM1NmVmMmZiZjQ0ZGQyZDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgTW91c2VXaGVlbFJl
Z2lvbk92ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7CiAKIGJvb2wgTW91c2VX
aGVlbFJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCiB7Ci0gICAgYXV0byByZWdpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlZ2lvbj4oKTsKKyAgICBhdXRvIHJlZ2lvbiA9IG1ha2VVbmlxdWU8
UmVnaW9uPigpOwogICAgIAogICAgIGZvciAoY29uc3QgRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkg
ewogICAgICAgICBpZiAoIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDQ4YzA3MzQ3NzBlYjExMGMxYzVkODQ1
M2RkMDg3OTkyZTU2NDlhMWUuLmQyMGI5OGM0MTVlZWM4Mjc2Zjg5MDBmMjRjNjdhOTdmMTAxZDBh
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM4NSw3ICszODUsNyBA
QCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSYgZnJhbWUpCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgICwgbV9wZW5kaW5nTW9tZW50dW1XaGVlbEV2ZW50c1RpbWVyKCp0aGlzLCAmRXZl
bnRIYW5kbGVyOjpjbGVhckxhdGNoZWRTdGF0ZSkKICNlbmRpZgotICAgICwgbV9hdXRvc2Nyb2xs
Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQorICAg
ICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcihtYWtlVW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVy
PigpKQogI2lmICFFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICAsIG1fZmFrZU1vdXNlTW92
ZUV2ZW50VGltZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRpbWVy
RmlyZWQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAyMzM3Mjk0MmIz
NzYzZDkyOTNkMjY1YjM1YWNjMTUyNWUzNGNjMDBmLi5hNWU1ZWRlMGI0Yjc0N2U0Nzk0ZGM3OTQw
NmFlZmNjYmIzODVkZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjkxLDcg
KzEyOTEsNyBAQCBSZW5kZXJCb3gqIEZyYW1lVmlldzo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29u
c3QKIHZvaWQgRnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVk
ZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKIHsKICAgICBpZiAoIW1fZW1iZWRkZWRPYmplY3Rz
VG9VcGRhdGUpCi0gICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CisgICAgICAgIG1f
ZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PFJlbmRlckVt
YmVkZGVkT2JqZWN0Kj4+KCk7CiAKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQg
PSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwogICAgIGlmIChpczxIVE1MT2Jq
ZWN0RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkpIHsK
QEAgLTE0MjcsNyArMTQyNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVj
dChSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICBib29sIGhhZFNsb3dSZXBhaW50T2JqZWN0
cyA9IGhhc1Nsb3dSZXBhaW50T2JqZWN0cygpOwogCiAgICAgaWYgKCFtX3Nsb3dSZXBhaW50T2Jq
ZWN0cykKLSAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhh
c2hTZXQ8Y29uc3QgUmVuZGVyRWxlbWVudCo+PigpOworICAgICAgICBtX3Nsb3dSZXBhaW50T2Jq
ZWN0cyA9IG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CiAKICAg
ICBtX3Nsb3dSZXBhaW50T2JqZWN0cy0+YWRkKCZyZW5kZXJlcik7CiAgICAgaWYgKGhhZFNsb3dS
ZXBhaW50T2JqZWN0cykKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1v
dmVTbG93UmVwYWludE9iamVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHZvaWQgRnJhbWVW
aWV3OjphZGRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCi0gICAg
ICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+KCk7CisgICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMgPSBtYWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+KCk7CiAK
ICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmNvbnRhaW5zKG9iamVjdCkp
IHsKICAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YWRkKG9iamVjdCk7CkBA
IC00ODY2LDcgKzQ4NjYsNyBAQCBTdHJpbmcgRnJhbWVWaWV3Ojp0cmFja2VkUmVwYWludFJlY3Rz
QXNUZXh0KCkgY29uc3QKIGJvb2wgRnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxh
YmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykK
LSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGFibGVB
cmVhU2V0PigpOworICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IG1ha2VVbmlxdWU8U2Nyb2xs
YWJsZUFyZWFTZXQ+KCk7CiAgICAgCiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWFzLT5hZGQoc2Ny
b2xsYWJsZUFyZWEpLmlzTmV3RW50cnkpIHsKICAgICAgICAgc2Nyb2xsYWJsZUFyZWFTZXRDaGFu
Z2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNw
cAppbmRleCA3MzA5OGYxZmExZjEwNzFlNjFmY2QzYWE2NTM1MzMwZDNlODliZjU5Li5lODU4Yzky
Y2JmOGMzMWEzMjFiZjM4MDA5N2FiYTU1ZjE1NzAwMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKQEAgLTU5NiwxNCArNTk2LDE0IEBAIHZv
aWQgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKFJlbmRlckVsZW1lbnQm
IHJvb3QpCiAgICAgQVNTRVJUKCFtX3BhaW50T2Zmc2V0Q2FjaGVEaXNhYmxlQ291bnQpOwogICAg
IEFTU0VSVCghbGF5b3V0U3RhdGUoKSk7CiAKLSAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsKKyAgICBtX2xheW91
dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsK
IH0KIAogYm9vbCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdp
bmF0aW9uSWZOZWVkZWQoUmVuZGVyQmxvY2tGbG93JiBsYXlvdXRSb290KQogewogICAgIGlmIChs
YXlvdXRTdGF0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9sYXlvdXRTdGF0ZVN0
YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihsYXlvdXRSb290
LCBSZW5kZXJMYXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOworICAgIG1fbGF5b3V0U3Rh
dGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwg
UmVuZGVyTGF5b3V0U3RhdGU6OklzUGFnaW5hdGVkOjpZZXMpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KICAgICAKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6
OnB1c2hMYXlvdXRTdGF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaQogICAg
IGF1dG8qIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKICAgICBpZiAoIWxheW91
dFN0YXRlIHx8ICFuZWVkc0Z1bGxSZXBhaW50KCkgfHwgbGF5b3V0U3RhdGUtPmlzUGFnaW5hdGVk
KCkgfHwgcmVuZGVyZXIuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKQogICAgICAgICB8fCBsYXlv
dXRTdGF0ZS0+bGluZUdyaWQoKSB8fCAocmVuZGVyZXIuc3R5bGUoKS5saW5lR3JpZCgpICE9IFJl
bmRlclN0eWxlOjppbml0aWFsTGluZUdyaWQoKSAmJiByZW5kZXJlci5pc1JlbmRlckJsb2NrRmxv
dygpKSkgewotICAgICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyTGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9mZnNl
dCwgcGFnZUhlaWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsKKyAgICAgICAgbV9sYXlvdXRTdGF0
ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihtX2xheW91dFN0YXRl
U3RhY2ssIHJlbmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VIZWlnaHRDaGFuZ2VkKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCA4YzNjNTJhMDczNTIyNzkwY2QwYzRhNjBk
YzA1ZTYxNDEyYzE5YWU5Li41MjI3ZTQyYWMwOTZjZTY5MjVkN2VjNmExOGU1MTkyNWQyZTAwNmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBA
QCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyJiBOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKCkK
IHsKICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXJ2aWNlV29ya2VyRW5hYmxlZCgpKTsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbnRhaW5l
cikKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gc3RkOjptYWtlX3VuaXF1ZTxT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsK
KyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29y
a2VyQ29udGFpbmVyPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsKICAgICByZXR1
cm4gKm1fc2VydmljZVdvcmtlckNvbnRhaW5lcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXgg
ZWRhN2M1ZmE1ZDY0NzliYTcxMDkwMjBiNTI4MzJjZTI2MWJjZDdlOS4uMjlhMmFmNzRiY2FkZDZi
MzBjNmFmZjYwZWM0ZTMxZDBiNDcyYmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMTEsMjYg
KzIxMSwyNiBAQCBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFn
PiBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKQogfQogCiBQYWdlOjpQYWdlKFBhZ2VDb25maWd1
cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5p
cXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQotICAg
ICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NhcmV0Q29udHJv
bGxlcj4oKSkKKyAgICA6IG1fY2hyb21lKG1ha2VVbmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VD
b25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCisgICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCi0gICAgLCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NvbnRyb2xs
ZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCisgICAgLCBtX2RyYWdD
b250cm9sbGVyKG1ha2VVbmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3Vy
YXRpb24uZHJhZ0NsaWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6
bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUluaXRpYWxBY3Rpdml0eVN0
YXRlKCkpKQorICAgICwgbV9mb2N1c0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxGb2N1c0NvbnRyb2xs
ZXI+KCp0aGlzLCBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVl
PENvbnRleHRNZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0
TWVudUNsaWVudCkpCisgICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihtYWtlVW5pcXVlPENv
bnRleHRNZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVu
dUNsaWVudCkpCiAjZW5kaWYKLSAgICAsIG1fdXNlcklucHV0QnJpZGdlKHN0ZDo6bWFrZV91bmlx
dWU8VXNlcklucHV0QnJpZGdlPigqdGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3Vy
YXRpb24uaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAsIG1fdXNlcklucHV0QnJpZGdlKG1ha2VVbmlx
dWU8VXNlcklucHV0QnJpZGdlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24u
aW5zcGVjdG9yQ2xpZW50KSkKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgLCBtX3Bv
aW50ZXJDYXB0dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJDYXB0dXJlQ29u
dHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIobWFrZVVu
aXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCi0gICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wb2ludGVyTG9j
a0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKICNl
bmRpZgogICAgICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9w
cm9ncmVzcyhzdGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0
aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCi0gICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxl
cihzdGQ6Om1ha2VfdW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKKyAgICAsIG1fcHJvZ3Jlc3Mo
bWFrZVVuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1Ry
YWNrZXJDbGllbnQpKQorICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIobWFrZVVuaXF1ZTxC
YWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJh
Y2tGb3J3YXJkQ2xpZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShGcmFtZTo6Y3JlYXRlKHRoaXMs
IG51bGxwdHIsIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSkpCiAg
ICAgLCBtX2VkaXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVu
dCkpCiAgICAgLCBtX3BsdWdJbkNsaWVudChwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQp
CkBAIC0yNTAsOSArMjUwLDkgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VD
b25maWd1cmF0aW9uKQogICAgICwgbV9kb21UaW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VU
aW1lcigqdGhpcywgJlBhZ2U6OmRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVy
RmlyZWQpCiAgICAgLCBtX2FjdGl2aXR5U3RhdGUocGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkp
CiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5h
dGl2ZVRleHRDbGllbnQpCi0gICAgLCBtX2NvbnNvbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQorICAgICwgbV9jb25zb2xlQ2xpZW50KG1ha2VVbmlx
dWU8UGFnZUNvbnNvbGVDbGllbnQ+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKLSAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1
Z2dhYmxlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUobWFrZVVuaXF1ZTxQ
YWdlRGVidWdnYWJsZT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIpKQogICAgICwgbV9jb29raWVK
YXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb29raWVKYXIpKQpAQCAtMjY4LDE2ICsyNjgs
MTYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQog
ICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyKCp0aGlzLCAmUGFnZTo6
cGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCiAgICAgLCBt
X2lzVXRpbGl0eVBhZ2UoaXNVdGlsaXR5UGFnZUNocm9tZUNsaWVudChjaHJvbWUoKS5jbGllbnQo
KSkpCi0gICAgLCBtX3BlcmZvcm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRy
IDogc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKLSAgICAsIG1f
bG93UG93ZXJNb2RlTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmll
cj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dl
ckNoYW5nZShpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpOyB9KSkKLSAgICAsIG1fcGVyZm9ybWFuY2VM
b2dnaW5nKHN0ZDo6bWFrZV91bmlxdWU8UGVyZm9ybWFuY2VMb2dnaW5nPigqdGhpcykpCisgICAg
LCBtX3BlcmZvcm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogbWFrZVVu
aXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKKyAgICAsIG1fbG93UG93ZXJNb2RlTm90
aWZpZXIobWFrZVVuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQ
b3dlck1vZGVFbmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShpc0xvd1Bvd2VyTW9k
ZUVuYWJsZWQpOyB9KSkKKyAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nKG1ha2VVbmlxdWU8UGVy
Zm9ybWFuY2VMb2dnaW5nPigqdGhpcykpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAoRU5BQkxFKFNF
UlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikpCi0g
ICAgLCBtX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIobWFrZVVuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAjZW5k
aWYKICAgICAsIG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyKFdoZWVsRXZlbnREZWx0YUZp
bHRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BhZ2VPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wYWdlT3Zlcmxh
eUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNp
ZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgICwgbV9wYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtl
X3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29v
cmRpbmF0b3JDbGllbnQpKQorICAgICwgbV9wYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQ
YXltZW50Q29vcmRpbmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JD
bGllbnQpKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAsIG1fYXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yPihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCkp
KQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgUGFnZTo6aW5pdEdyb3VwKCkKIHsKICAgICBBU1NF
UlQoIW1fc2luZ2xlUGFnZUdyb3VwKTsKICAgICBBU1NFUlQoIW1fZ3JvdXApOwotICAgIG1fc2lu
Z2xlUGFnZUdyb3VwID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlR3JvdXA+KCp0aGlzKTsKKyAgICBt
X3NpbmdsZVBhZ2VHcm91cCA9IG1ha2VVbmlxdWU8UGFnZUdyb3VwPigqdGhpcyk7CiAgICAgbV9n
cm91cCA9IG1fc2luZ2xlUGFnZUdyb3VwLmdldCgpOwogfQogCkBAIC0yNjU0LDcgKzI2NTQsNyBA
QCB2b2lkIFBhZ2U6OnNldFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZShib29sIHZpc2libGUp
CiAgICAgfQogCiAgICAgaWYgKCFtX3Jlc291cmNlVXNhZ2VPdmVybGF5ICYmIG1fc2V0dGluZ3Mt
PmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkpCi0gICAgICAgIG1fcmVzb3VyY2VVc2Fn
ZU92ZXJsYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5PigqdGhpcyk7
CisgICAgICAgIG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBtYWtlVW5pcXVlPFJlc291cmNlVXNh
Z2VPdmVybGF5PigqdGhpcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b25zb2xlQ2xpZW50LmNwcAppbmRleCBkMDMyZmNmNzBmODZhNjNhYWRkMTFmMjI3ZmE5NmRkMDYz
YzFlYTYxLi42M2Y2NTZmMWE1YWI4ZTI2ZmI5NTVlNjM0ZTQ1YTlhOGExMmZkZDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMTYwLDkgKzE2MCw5IEBA
IHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBt
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3Vy
Y2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVh
c2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9n
LCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0
SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdn
ZXN0ZWRDb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1l
c3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVz
c2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3Rl
ZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlm
aWVyKTsKIAogICAgIGFkZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CkBAIC0xNzMsNyAr
MTczLDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwo
TWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGwKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7
CiAgICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJp
bmcobWVzc2FnZVRleHQpOwogCi0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOworICAgIGF1
dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBhcmd1bWVudHMu
Y29weVJlZigpLCBleGVjKTsKIAogICAgIFN0cmluZyB1cmwgPSBtZXNzYWdlLT51cmwoKTsKICAg
ICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gbWVzc2FnZS0+bGluZSgpOwpAQCAtMzc5LDcgKzM3OSw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0
YVVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBN
ZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3QgY2FwdHVy
ZSBzY3JlZW5zaG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICAgICAgICAgIGFkZE1l
c3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJD
b3VsZCBub3QgY2FwdHVyZSBzY3JlZW5zaG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTM4OSw3ICszODksNyBAQCB2
b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
UmVmPFNjcmlwdEFyZ3VtZW50cz4mJgogICAgIGZvciAoc2l6ZV90IGkgPSAoIXRhcmdldCA/IDAg
OiAxKTsgaSA8IGFyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFkanVz
dGVkQXJndW1lbnRzLmFwcGVuZCh7IHN0YXRlLT52bSgpLCBhcmd1bWVudHMtPmFyZ3VtZW50QXQo
aSkgfSk7CiAgICAgYXJndW1lbnRzID0gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoKnN0YXRlLCBX
VEZNb3ZlKGFkanVzdGVkQXJndW1lbnRzKSk7Ci0gICAgYWRkTWVzc2FnZShzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUo
YXJndW1lbnRzKSkpOworICAgIGFkZE1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2Us
IE1lc3NhZ2VMZXZlbDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDkx
OTM2MDQ1YzJmYWY3NmNhYzVlMmM2OWU2MjMzZjJjZTMwYmY5YjEuLjEyOGMxOGYxNGI5MDhlNzFi
YzdjZWZiMzk2MjA3ZmViYmMwMGYyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAg
LTExNiw5ICsxMTYsOSBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBQYWdlR3JvdXA6OmNhcHRp
b25QcmVmZXJlbmNlcygpCiB7CiAgICAgaWYgKCFtX2NhcHRpb25QcmVmZXJlbmNlcykgewogI2lm
IFBMQVRGT1JNKE1BQykgfHwgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKLSAg
ICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXNNZWRpYUFGPigqdGhpcyk7CisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2Vz
ID0gbWFrZVVuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRj4oKnRoaXMpOwogI2Vs
c2UKLSAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMg
PSBtYWtlVW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlzKTsKICNlbmRpZgogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCA2YzE1YjNmYWE4M2Y1Y2Fl
MGQ5MTc2ZDAwYzhhZmMxNWI3NjY5MzE2Li5jYmJhYzIxZDQwMDViMWIwZTExODAyMmY3YWExNGE4
YmNmZWQ4NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMjY1LDcgKzI2
NSw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVyRmly
ZWQoKQogRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3RyaW5nJiBt
YXJrTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5n
ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRp
bWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQg
PSBtX3VzZXJUaW1pbmctPm1hcmsobWFya05hbWUpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCkBAIC0yNzksMTQgKzI3OSwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5j
ZTo6bWFyayhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogdm9pZCBQZXJmb3JtYW5jZTo6Y2xlYXJN
YXJrcyhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQot
ICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlz
KTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7
CiAgICAgbV91c2VyVGltaW5nLT5jbGVhck1hcmtzKG1hcmtOYW1lKTsKIH0KIAogRXhjZXB0aW9u
T3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1lYXN1cmUoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwg
Y29uc3QgU3RyaW5nJiBzdGFydE1hcmssIGNvbnN0IFN0cmluZyYgZW5kTWFyaykKIHsKICAgICBp
ZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1
ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8
VXNlclRpbWluZz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3VzZXJUaW1pbmctPm1l
YXN1cmUobWVhc3VyZU5hbWUsIHN0YXJ0TWFyaywgZW5kTWFyayk7CiAgICAgaWYgKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSkKQEAgLTMwMCw3ICszMDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJm
b3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcm
CiB2b2lkIFBlcmZvcm1hbmNlOjpjbGVhck1lYXN1cmVzKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5h
bWUpCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0
ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcg
PSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmctPmNsZWFy
TWVhc3VyZXMobWVhc3VyZU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5m
b3JtYXRpb24uaAppbmRleCA5OWE0MzcyZTU0ZDg0MDI5YmFmYmY5YjhmN2E1ODIwMDFmYTYzYTFi
Li4xNmJjZjA0MzkwYTE3MGYzZGU3ODI2NTBjMmZjMjUyMmNmNTA1NGEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RydWN0IFdFQkNPUkVfRVhQT1JUIFByZXdhcm1JbmZvcm1hdGlvbiB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEZvbnRDYWNoZTo6UHJl
d2FybUluZm9ybWF0aW9uIGZvbnRDYWNoZTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcAppbmRleCAwMzcwZjI4ODdmNjViNTdiM2NkODk3ZTRmYzY5ZThhMmVmYjg3NWRmLi40NDI5
MWFlZmEzN2M4YTdhODQ0OGJlYzM5YWVlYWMyNDM5ZWM0NzViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcmludENvbnRleHQ6Om91
dHB1dExpbmtlZERlc3RpbmF0aW9ucyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
RG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2xpbmtlZERlc3RpbmF0aW9ucykgewot
ICAgICAgICBtX2xpbmtlZERlc3RpbmF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxT
dHJpbmcsIFJlZjxFbGVtZW50Pj4+KCk7CisgICAgICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0g
bWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4oKTsKICAgICAgICAgY29s
bGVjdExpbmtlZERlc3RpbmF0aW9ucyhkb2N1bWVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKaW5kZXggNTZhMDExYzRj
ZWU5OTc4OTkwMWZhZDM2MzAyYmUxMGMzNDU2NjUyNy4uM2I4ODFkZmJiMTcxN2Y0ZTQxMWE2YzUz
NDQ1OTVmYmQzYWI0MzA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIFJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcjo6aXNTY2hlZHVsZWQoKSBjb25zdAogdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXI6OnN0YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAgICBBU1NFUlQoIWlzU2NoZWR1
bGVkKCkpOwotICAgIG1fcmVmcmVzaFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRo
aXMsICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOworICAg
IG1fcmVmcmVzaFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOwogICAgIG1fcmVmcmVzaFRpbWVyLT5z
dGFydE9uZVNob3QoZGVsYXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIuaAppbmRleCBmYWRlNjJmYzc4N2VlNDg5NzlhZjZkZDgyNjYyNzc5
ODA0ZDM3NTE3Li42ZjA2MDgxNzgyNmVjNTZjNmVlOGE1ZjhjZDM5NDRlYzJkNDE5MGQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyCiBwdWJsaWM6CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+IGNyZWF0ZShQ
YWdlJiBwYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyPihwYWdlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyaW5nVXBkYXRlU2NoZWR1bGVyPihwYWdlKTsKICAgICB9CiAKICAgICBSZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNp
emVPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCmluZGV4
IDk1YjFjOGI1YmU4M2Q4OWIyNDk3OWVhZWQ5YjlkNGU5MGQzZjRmODcuLmVlZWJmOWI5ZTYxYmQ1
ODhmZDNiYTk5ZmFiMTUwMTkxY2M4ZjY3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVzaXplT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2Vy
dmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50Owog
CiBzdHJ1Y3QgUmVzaXplT2JzZXJ2ZXJEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgVmVjdG9yPFdlYWtQdHI8UmVzaXplT2JzZXJ2ZXI+PiBvYnNlcnZlcnM7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDQyMzQxODI4
MGVhMmVlM2M5YmZkZmM5MWNkMTI3Yjk2OGViMWUxYmYuLjBkZWIwNjQxNDhmOTcyNmNkMzhiNDEw
MDVkNTIyOTcyNjBjMWM2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KICAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51
bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOwor
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nlc3NX
aGl0ZUxpc3Q+KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRy
eShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2lu
QWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0
SVBBZGRyZXNzQXNJUEFkZHJlc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApp
bmRleCBiNjg0ODk2ZjM5ODg0NjI1NGExNzk3YWRjZGVkNjY2NjA1ZTg1ZDVjLi4yN2VlYTZjMGFi
OTM4ZWJjOGY5NjVkYWNiODIwMzExNDQzMTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
c0Jhc2UuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGxheW91dFNj
aGVkdWxlVGhyZXNob2xkID0gMjUwX21zOwogCiBTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZShQ
YWdlKiBwYWdlKQogICAgIDogbV9wYWdlKG51bGxwdHIpCi0gICAgLCBtX2ZvbnRHZW5lcmljRmFt
aWxpZXMoc3RkOjptYWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQorICAgICwgbV9m
b250R2VuZXJpY0ZhbWlsaWVzKG1ha2VVbmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKICAg
ICAsIG1fbGF5b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAgICAgLCBtX21p
bmltdW1ET01UaW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkp
CiAgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jh
c2U6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNw
ZW5kYWJsZVRpbWVyLmgKaW5kZXggNTU4NDQzNDA3ODM0NmZiOWI1N2E2ZWE1OWFmY2UyN2E2MjQw
YjU1YS4uM2MzZDQ5ZTA1OGFiMTMxNzQ3ZWI0OWJiMGM5M2EwZmQyOTQ1MThmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgU3VzcGVuZGFibGVUaW1lciA6IHByaXZhdGUgVGltZXJCYXNl
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKTsKICAgICB2aXJ0dWFsIH5TdXNwZW5kYWJsZVRpbWVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggYjljZTk4Y2M2Y2E1YzI0
NTZjZGI5NGY1ZGM0MWI0ZDJiNTBlOThmNi4uNjUyMzExZDdhNTVmNTUwN2EwNWFhNDNiNjJjODAy
MDg3MjJkYmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9s
bGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6Zm9y
RWFjaFVzZXJNZXNzYWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFVzZXJNZQogCiB2b2lk
IFVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChET01XcmFwcGVyV29ybGQmIHdv
cmxkLCBzdGQ6OnVuaXF1ZV9wdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCkKIHsKLSAgICBhdXRv
JiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOworICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndv
cmxkLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJTY3Jp
cHQpKTsKIH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVy
OjpyZW1vdmVVc2VyU2NyaXB0cyhET01XcmFwcGVyV29ybGQmIHdvcmxkKQogCiB2b2lkIFVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCwgc3RkOjp1bmlxdWVfcHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCwgVXNlclN0
eWxlSW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewotICAgIGF1dG8mIHN0eWxlU2hlZXRz
SW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFs
dWU7CisgICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5z
dXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+
KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZChX
VEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CiAKICAgICBpZiAoaW5qZWN0aW9uVGltZSA9PSBJbmpl
Y3RJbkV4aXN0aW5nRG9jdW1lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9X
aGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50
RGVsdGFGaWx0ZXIuY3BwCmluZGV4IGYyNTlhZWIxYTBhOWU1Y2U3YTEzNGYwZDEyNjllYzMxNGM5
YTljMzEuLjMwNGQ5NGE3NWJmMzYxZDhkZDQ2ZjZhZmZhZmUzMWMzZWY4MmE0NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKQEAgLTQzLDkgKzQz
LDkgQEAgV2hlZWxFdmVudERlbHRhRmlsdGVyOjp+V2hlZWxFdmVudERlbHRhRmlsdGVyKCkgPSBk
ZWZhdWx0Owogc3RkOjp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0YUZpbHRlcj4gV2hlZWxFdmVu
dERlbHRhRmlsdGVyOjpjcmVhdGUoKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2hlZWxFdmVudERlbHRhRmlsdGVyTWFjPigpOwogI2Vsc2UKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRp
b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDE0NDY2M2NhZTk1OTc5Y2ZjYzdjNGEyMjQyZTFkMTYx
ZDYxMDI5MjUuLjEzYzMxZjU3NjRiN2IyMjRhMmI3ZWE1NWFlMzNhNmIzOTg2Yjk2ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwCkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBDU1NBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZTo6YW5pbWF0aW9uV2lsbEJlUmVtb3ZlZChBbmltYXRpb25CYXNlJiBhbmltYXQK
IH0KIAogQ1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcihGcmFt
ZSYgZnJhbWUpCi0gICAgOiBtX2RhdGEoc3RkOjptYWtlX3VuaXF1ZTxDU1NBbmltYXRpb25Db250
cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQorICAgIDogbV9kYXRhKG1ha2VVbmlxdWU8Q1NTQW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU+KGZyYW1lKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDc0
ZWVkYzk5NjZlOWY4MWFjYjk5NmNmMzc2OTgzZGFiNjg1NTQwYzYuLmJhZWIyNDc2NTcxNjczN2I4
NGExY2M4ZjE5ZGUwMTczZjM2N2U5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTExNyw5ICsxMTcsOSBA
QCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZEZ1bmMoY29u
c3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaQogewogICAgIEFTU0VSVChmcm9tICYmIHRvKTsKICAg
ICBpZiAoZnJvbS0+c3R5bGUoKSAhPSB0by0+c3R5bGUoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKnRvKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U2hhZG93RGF0YT4oKnRvKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0Rh
dGE+KGJsZW5kKGZyb20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlvbigpLCBwcm9ncmVzcyksCisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJvbS0+bG9jYXRpb24oKSwg
dG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmQoZnJvbS0+cmFkaXVzKCks
IHRvLT5yYWRpdXMoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5zcHJlYWQoKSwg
dG8tPnNwcmVhZCgpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLT5z
dHlsZSgpLCB0by0+c3R5bGUoKSwgcHJvZ3Jlc3MpLApAQCAtOTc0LDE1ICs5NzQsMTUgQEAgY2xh
c3MgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IgOiBwdWJsaWMgQW5pbWF0aW9u
UHJvcGVydHlXcmFwcGVyQmFzZQogICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENv
bG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KmdldHRl
cikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IENvbG9yJiksCiAg
ICAgICAgIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0
LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAg
ICAgIDogQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3Jh
cHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIs
IHNldHRlcikpCi0gICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFBy
b3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkK
KyAgICAgICAgLCBtX3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJv
cCwgZ2V0dGVyLCBzZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIobWFrZVVuaXF1
ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRl
cikpCiAgICAgewogICAgIH0KICAgICBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xv
cihDU1NQcm9wZXJ0eUlEIHByb3AsIE1heWJlSW52YWxpZENvbG9yVGFnLCBjb25zdCBDb2xvciYg
KFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRl
cikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZp
c2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlciko
Y29uc3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHBy
b3ApCi0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVy
TWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAgICAgICAgLCBtX3Zp
c2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlk
Q29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1f
d3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9w
LCBnZXR0ZXIsIHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVl
PFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2
aXNpdGVkU2V0dGVyKSkKICAgICB7CiAgICAgfQogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRl
clN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikgY29uc3Qgb3ZlcnJpZGUKQEAgLTEyMjks
MTkgKzEyMjksMTkgQEAgY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBB
bmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkg
ewogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6Ci0gICAgICAgICAgICBtX2ZpbGxM
YXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Q
cm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5
ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5
ZXI6OnNldEJhY2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CisgICAgICAgICAgICBtX2Zp
bGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9w
ZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6
OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5ZXI6
OnNldEJhY2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgotICAgICAgICAgICAgbV9maWxsTGF5
ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJv
cGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVy
OjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVy
OjpzZXRCYWNrZ3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKKyAgICAgICAgICAgIG1fZmls
bExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3Bl
cnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6
c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWU9yaWdpbiwgJkZpbGxMYXllcjo6
c2V0QmFja2dyb3VuZFlPcmlnaW4sIEVkZ2U6OkJvdHRvbSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrU2l6ZToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHBy
b3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3Ro
KTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxG
aWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmlsbExheWVy
OjpzaXplTGVuZ3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3RoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgotICAgICAgICAg
ICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXll
clN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjppbWFnZSwg
JkZpbGxMYXllcjo6c2V0SW1hZ2UpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdy
YXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXI+KHBy
b3BlcnR5LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3
NzAsNyArMTc3MCw3IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVy
dHlBbmltYXRpb25XcmFwcGVyTWFwKCkKICAgICAgICAgICAgIGxvbmdoYW5kV3JhcHBlcnMudW5j
aGVja2VkQXBwZW5kKG1fcHJvcGVydHlXcmFwcGVyc1t3cmFwcGVySW5kZXhdLmdldCgpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIFdURk1v
dmUobG9uZ2hhbmRXcmFwcGVycykpKTsKKyAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hl
Y2tlZEFwcGVuZChtYWtlVW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJ
RCwgV1RGTW92ZShsb25naGFuZFdyYXBwZXJzKSkpOwogICAgICAgICBpbmRleEZyb21Qcm9wZXJ0
eUlEKHByb3BlcnR5SUQpID0gYW5pbWF0YWJsZUxvbmdoYW5kUHJvcGVydGllc0NvdW50ICsgaTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcAppbmRleCA3MDQ3ZTgzZGU3ODVkYjgxYjZkOTkwYTk0ODM3YmE3MWQ3MjgyOWEw
Li44ZjBmNmJmNTNiMDNlMDhmNzAzMzE2NmViOGM3NGQ2YmY5NzI4MzcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTIzOCw3
ICsyMzgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcihj
b25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaQogdm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnVwZGF0ZVNvdXJjZVNlbGYoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3Jp
Z2luKQogewogICAgIG1fc2VsZlNvdXJjZVByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9j
b2woKTsKLSAgICBtX3NlbGZTb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdp
bi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZh
bHNlKTsKKyAgICBtX3NlbGZTb3VyY2UgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0
KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsK
IH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFwcGx5UG9saWN5VG9TY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKaW5kZXggYThmMWQ0ZjBiZGUxNGYxNGI4OGFh
Mzk0MGVkZDhjODk2MjYxZTNkZS4uYmJkOTE4OWUyNDgzNGRhY2M4ZDdiYWUxNWNjNTgxNmNhMzIw
Y2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDsKIAogY2xhc3Mg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGlyZWN0aXZlTGlzdCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICA6IG1fbmFtZShuYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCBkZGJkOGNkZTI3ODBlOTJkYmEyMGUw
YWJkOTljZjA0OTg0M2Y0YzRkLi5jMDE1NmRkZjAxYzk0N2U1MDRiNTY5ZDBhNDExNjk4YzU1OGYz
ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OkNvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3QoQ29udGVudFNlCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojpj
cmVhdGUoQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaGVhZGVy
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHR5cGUsIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UG9saWN5RnJvbSBmcm9tKQogewotICAgIGF1dG8gZGlyZWN0aXZlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBl
KTsKKyAgICBhdXRvIGRpcmVjdGl2ZXMgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CiAgICAgZGlyZWN0aXZlcy0+cGFyc2UoaGVh
ZGVyLCBmcm9tKTsKIAogICAgIGlmICghY2hlY2tFdmFsKGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURp
cmVjdGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkpKSB7CkBAIC00NTIsNyArNDUy
LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJl
Y3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAgbV9wb2xpY3kucmVwb3J0RHVw
bGljYXRlRGlyZWN0aXZlKG5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRpcmVj
dGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZh
bHVlKTsKKyAgICBkaXJlY3RpdmUgPSBtYWtlVW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KCp0aGlz
LCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6YXBwbHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBzYW5kYm94UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29u
dGVudENoYW5nZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hh
bmdlT2JzZXJ2ZXIuaAppbmRleCBjYWJkMDEzOWU1M2QzOTNmNTE3MzUxMDViYjBiNzFmMWI4YzE2
MGNhLi5kYmIwNmRlNTZkMDU3NDc3MzdjMTQ1OTcyZmI4MzAzNjVmMmExODliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaApAQCAtNDQsNiAr
NDQsNyBAQCBjbGFzcyBET01UaW1lcjsKIGNsYXNzIEVsZW1lbnQ7CiAKIGNsYXNzIENvbnRlbnRD
aGFuZ2VPYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDb250ZW50Q2hhbmdlT2JzZXJ2
ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250ZW50
Q2hhbmdlT2JzZXJ2ZXIoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RE9NVGltZXJIb2xkaW5nVGFuay5oCmluZGV4IGI2MjE4NGZlMTc5NDJkYTk0ODU5YTgwMmNlZmRl
NzZlMjQyZDNlNGMuLmJiZjc5NDVhYWE0OTlhNzZiN2UxMmFiM2M3NWQ1OTQ0MjFlNDVlZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmgKQEAgLTM1
LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NVGltZXI7CiAKIGNsYXNz
IERPTVRpbWVySG9sZGluZ1RhbmsgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIERPTVRpbWVySG9sZGluZ1RhbmsoKTsKICAgICB+RE9NVGltZXJIb2xkaW5nVGFu
aygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdl
T3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlMaW51eC5jcHAKaW5kZXggNGZkZjc1NmMwMjE5ODg1MzNiMmYxMjU1YzkxYTRlY2M5
MTQ4NGZhNC4uYzA3YjEyNzY5Y2QwNGJhN2IzMWY4OGM0NmE5ZjA2YjZhZDZiNDlkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5
TGludXguY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2NUaW1lclN0cmluZyhN
b25vdG9uaWNUaW1lIHRpbWVyRmlyZURhdGUsIE1vbm90b25pY1RpbWUgbm93KQogc3RhdGljIGNv
bnN0IGZsb2F0IGdGb250U2l6ZSA9IDE0OwogCiBjbGFzcyBSZXNvdXJjZVVzYWdlT3ZlcmxheVBh
aW50ZXIgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVy
KFJlc291cmNlVXNhZ2VPdmVybGF5JiBvdmVybGF5KQogICAgICAgICA6IG1fb3ZlcmxheShvdmVy
bGF5KQpAQCAtMTMyLDcgKzEzMyw3IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRl
ciBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIAogdm9pZCBSZXNvdXJjZVVz
YWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAgICBtX292ZXJsYXlQYWludGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsK
KyAgICBtX292ZXJsYXlQYWludGVyID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBh
aW50ZXI+KCp0aGlzKTsKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUo
b3ZlcmxheSgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3Rvcnko
KSwgKm1fb3ZlcmxheVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQo
RmxvYXRQb2ludDNEKCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0U2l6ZSh7IG5vcm1hbFdpZHRo
LCBub3JtYWxIZWlnaHQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9Q
YWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQppbmRleCBkN2Fk
ZmZkNzJmOWZhOGZlOTdhZmNkYTA3MThkODNjNmUwOTA4NTBjLi4wODYzYWQyNjcyNWQ2NTU0NzUy
YjdhYzIxNDhlZWQxYzZkZmMyM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9QYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KQEAg
LTkwLDcgKzkwLDcgQEAgdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogdm9pZCBQYWdl
OjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogewogICAgIGlmICgh
bV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJz
ID0gc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOworICAgICAgICBtX3Nj
aGVkdWxlZFJ1bkxvb3BQYWlycyA9IG1ha2VVbmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsK
ICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1Rl
eHRJbmRpY2F0b3JXaW5kb3cuaAppbmRleCBkY2RkOTUwNDhiZDk1OGFhNzQ0MGEwZmMzZDliY2U3
ZGYyZjU0ODBmLi42NDc1Y2U1ZWJjOTA3YWUxODgwYWYxNzFjMDczNmZmM2VjYjUwMjZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCkBAIC01Miw2
ICs1Miw3IEBAIGVudW0gY2xhc3MgVGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlv
biA6IHVpbnQ4X3QgewogI2lmIFBMQVRGT1JNKE1BQykKIAogY2xhc3MgVGV4dEluZGljYXRvcldp
bmRvdyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVGV4dEluZGljYXRvcldpbmRvdyk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKaW5kZXggMzA2Y2ZlZDE5Y2U2ZDAwYjYyYTg1MjQ5NzAwMjhiODA0NWZhZDgyMy4uMDBhZjM5
NDc4ZGM3NWY3MDI5YzI0ODQ1NGVmMDFhYjBjNmM3ZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKiBwYWdlKQogICAgIDog
U2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkKICAgICAsIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0
aW9uVGltZXIoKnRoaXMsICZBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQ
b3NpdGlvbkFmdGVyQXN5bmNTY3JvbGxUaW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxpbmdTdGF0
ZVRyZWUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQorICAgICwg
bV9zY3JvbGxpbmdTdGF0ZVRyZWUobWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxTbmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bFNuYXBPZmZzZXRzSW5mby5oCmluZGV4IDYzYmQ5NjM4YjYzYTFhMTFjYTQwZjM2NzIxMjlmNzE0
MTBjNmZmMmUuLjNhYjY0MDY4MjY0YzUwNDA4YmFiNGVlMzhkMmNjZDRhNjQxYzc4NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRz
SW5mby5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTY3JvbGxPZmZzZXRSYW5nZSB7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZlY3RvcjxUPiBob3Jpem9udGFs
U25hcE9mZnNldHM7CiAgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25hcE9mZnNldHM7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IDc2NDBkNTVkOTZhM2YwOTU5YjkzMWVmMDQzM2VjMTVm
YTIwN2RiZDQuLmM4OTBmOWViYTAwNGNhODc4MDE0MWI4NWNlZWUwMDU1NjJlMmU0NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yLmNwcApAQCAtNzEsNyArNzEsNyBAQCBGbG9hdFNpemUgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25z
dCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
VmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZz
ZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250ZW50
U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQog
CiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNj
cm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCmluZGV4
IGJlOTlkMGVlNmEzZjA3ODlmYzRkN2RjNjkyODg1YjUyNDAwNDM4MDIuLjIxYzMxMWNkODliNzk0
MDg0YTg0OTBkNWZjOWJhNTVhOTNiOWFlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCkBAIC0z
OSw2ICszOSw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiAKIGNsYXNz
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0
U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBG
bG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0
UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAppbmRleCA5NjgyZDJjMWJjZWUz
NzU3MTNjMzQ2ZDNlMzNjZDRkYzEzNWFmYzc4Li5iZTU3YzliODY5ZDBjYzUyMzg2YjAwNDZhNTA3
ZDM0Yzg0MGM4MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFNjcm9sbGlu
Z1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4mJiBjaGlsZE5v
ZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBpZiAoIW1fY2hpbGRy
ZW4pCi0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8
U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVl
PFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+
YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKENoaWxk
Tm9kZXMpOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpp
bnNlcnRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90CiAK
ICAgICBpZiAoIW1fY2hpbGRyZW4pIHsKICAgICAgICAgQVNTRVJUKCFpbmRleCk7Ci0gICAgICAg
IG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3Rh
dGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQ
dHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgfQogCiAgICAgaWYgKGluZGV4ID4gbV9j
aGlsZHJlbi0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAppbmRleCBmNjFlMjhlMGVjNTAzMDEyYjM3MmZiMjU1
NjlhOGNiN2RkNTNhYTcwLi43MTU3ZTE2ODYwZjQ5YzkxZGRhMzViYmM0ZWFmZTk4MTllYWNiZTZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlVHJlZS5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5n
U3RhdGVUcmVlPiBTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdChMYXllclJlcHJlc2VudGF0aQog
ICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVzIGFuZCByZXNldHMgdGhlIGN1cnJl
bnQgc3RhdGUgdHJlZSwgYnV0IGxlYXZlcyB0aGUgdHJlZSBzdHJ1Y3R1cmUgaW50YWN0LgotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRyZWVTdGF0ZUNsb25lID0gc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBtYWtlVW5pcXVlPFNjcm9sbGlu
Z1N0YXRlVHJlZT4oKTsKICAgICB0cmVlU3RhdGVDbG9uZS0+c2V0UHJlZmVycmVkTGF5ZXJSZXBy
ZXNlbnRhdGlvbihwcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKTsKIAogICAgIGlmIChtX3Jv
b3RTdGF0ZU5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlTm9kZS5jcHAKaW5kZXggZWE3NGUyY2E0MjQyOWE4ZTJiZTlmOWEzNzllMzY3ZGE0
ZGRkYTNkMS4uNzI5NjE1YTY5ZjAxMjI2MzE1MTQ3ZWNmZGI1NTI4YjAxOTlmMzg2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNw
cApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZChS
ZWY8U2Nyb2xsaW5nVHJlZU5vZGU+JiYgY2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0UGFy
ZW50KHRoaXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVuID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7Cisg
ICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nVHJl
ZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RGTW92ZShjaGlsZE5vZGUpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KaW5kZXggMWM3YWI3NmEx
NTFlNjM1MGQ4YjYxNGMzNmQwNWJjZTY1YzZjOTU4NC4uYjQzZWE5OTVmYWY2YjQ3MDMzNWZiZjA3
YTIwODZhNmIzNWY3MGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1t
CkBAIC0zNiw3ICszNiw3IEBAIHN0YXRpYyBib29sIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Ny
b2xsaW5nUHJlZGljdGlvbiA9IHRydWU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNp
emUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxv
Y2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVs
dGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBl
bmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCmluZGV4IDcxZTQzZDNmM2I5
NDYxMDYwOGNiZjExZGI1MTE1YmNiZWMwNTQ4OTAuLjA4OGRmNTQzZTA0NzkxMTdjODM3YWZlMjIz
YmJjYzU1MTQ4OGE3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1v
bml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKQEAgLTMz
LDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1BVTW9uaXRvciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgRXhjZWVkZWRD
UFVMaW1pdEhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoZG91YmxlKT47CiAgICAgV0VCQ09S
RV9FWFBPUlQgQ1BVTW9uaXRvcihTZWNvbmRzIGNoZWNrSW50ZXJ2YWwsIEV4Y2VlZGVkQ1BVTGlt
aXRIYW5kbGVyJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1v
bml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKaW5kZXggZTYw
Zjc3MTNmNjJiYjI1NjJhODQyODg4YzdmYzYyOWYyYzU0N2YzMy4uNmIyODhlMWUxN2U0NDhiYjg2
ZmI5ZWNlMjljYzllNWJkYjlkZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRv
ci5oCkBAIC00Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVN
b25pdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIEZpbGVDaGFuZ2VUeXBlIHsgTW9kaWZpY2F0aW9uLCBSZW1vdmFsIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4IDRmZjk4MDRlYWVjMTMwNmIyNjhhMjQ1ZjI3NzFh
MTEyZTI4ZDJhMWUuLjNmYzQzMWE0NzQ2MWQ4YzQ0M2RiNGI2MjJkNmVhOTA2MzRkYTBmMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMjg4LDkgKzI4OCw5IEBAIExlbmd0aCBj
b252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAg
Ly8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkK
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0aHM7
CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgIGxlbmd0aHMudW5j
aGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0
aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0byBvcCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3Rocyks
IENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1h
a2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7Cisg
ICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0
aD4obGVuZ3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVy
YXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAgIHJl
dHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJh
bmdlQWxsKSk7CiB9CiAKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgTGVuZ3RoIGJsZW5kTWl4
ZWRUeXBlcyhjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9n
cgogICAgIGlmIChwcm9ncmVzcyA+PSAxLjApCiAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAg
Ci0gICAgYXV0byBibGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExl
bmd0aD4oZnJvbSwgdG8sIHByb2dyZXNzKTsKKyAgICBhdXRvIGJsZW5kID0gbWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3MpOwogICAgIHJldHVy
biBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBWYWx1ZVJh
bmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21t
YW5kTGlzdGVuZXIuY3BwCmluZGV4IDU1MmIxMmY2YzFlOGNkYTZmZmVhNjQ3ODY5MjIyOWVhOTNl
ZDE3Y2EuLjhlMzVlMzA0YzFlNzI1N2JjNjRjNmFkMTBlZGRlOTY0MjA0ZTY1OGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgKCFQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oTUFDKSkgfHwgIUhBVkUoTUVESUFfUExBWUVSKQogc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVh
dGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihjbGllbnQpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCmluZGV4IDJlNWY2M2Jj
ZWYyYmZkZmNmZjkyMTZkOTg2YjBmNDM2MGM2ODBiNDEuLmI3YzFkMjRlYjQ5ZTVhNTVmNjkxZjA2
Y2U5ZTFkODBiMjFiY2NhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbi5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBTY3JvbGxh
YmxlQXJlYTsKIAogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb24oKSB7IH07CiAg
ICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHksIGZsb2F0IC8qIHN0ZXAgKi8sIGZsb2F0IC8qIG11bHRpcGxpZXIgKi8pIHsgcmV0dXJu
IHRydWU7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5k
ZXggZDkxNTRkOTM1MWEyZjMzNjZkZGQwNWZlNjBmZGViYjljMWExZTczOC4uZjhlZGM4ODJkN2Yz
NjAwMmUxOTg1MTBkODFiOGViMzRhYTUwMDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjaWYgIUVOQUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgIVBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xs
QW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFibGVBcmVhKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApp
bmRleCBjNjJhZDgzNGU2YjM4MDhlMWVjZGE4YmExMzEyZDNkOTU3MDVlOTZhLi45NmQwZjMwMGIz
NDE4ZTYwODIxZGEyZGEyYTY0MTg5YzRkZWUwYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFNjcm9sbEFuaW1hdG9yJiBT
Y3JvbGxhYmxlQXJlYTo6c2Nyb2xsQW5pbWF0b3IoKSBjb25zdAogewogICAgIGlmICghbV9zY3Jv
bGxBbmltYXRvcikgewogICAgICAgICBpZiAodXNlc01vY2tTY3JvbGxBbmltYXRvcigpKSB7Ci0g
ICAgICAgICAgICBtX3Njcm9sbEFuaW1hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmlt
YXRvck1vY2s+KGNvbnN0X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0
aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIGxv
Z01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSBlbHNlCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFz
TGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdAogU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91
dFVuaXQ+JiBTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKIHsKICAgICBp
ZiAoIW1fc25hcE9mZnNldHNJbmZvKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PigpOworICAgICAg
ICBtX3NuYXBPZmZzZXRzSW5mbyA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExh
eW91dFVuaXQ+PigpOwogICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0c0luZm87CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCmluZGV4IDcyYjAwNDUxMzE0
MmM4ZjRlOTVkZjIyODE4YzNkZGMxODBhYWVjZWQuLjBkNzRiMTZlNTkyNTk4YWI4M2IwYzhjMGVi
NTRiNDQ2ZGZkMzhkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRl
blRlcm1pbmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWlu
YXRpb24uaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAog
ICAgIGNsYXNzIFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIgeworICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3VkZGVuVGVybWlu
YXRpb25EaXNhYmxlcik7CiAgICAgcHVibGljOgogICAgICAgICBTdWRkZW5UZXJtaW5hdGlvbkRp
c2FibGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2Jh
bERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAK
aW5kZXggYTI4MDEwZWNmZTVhMzY3YWQ5ZDBiMjlhMjAwNTYzYTBmNTYxZDU2MC4uMjdhNzM2NDE2
YmEwNGMwNTNjMmU3N2RiMmM1NTgxNDQ0MGQyZjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKLSAgICA6
IG1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhzdGQ6Om1ha2VfdW5pcXVlPENhY2hl
ZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+KCkpCisgICAgOiBtX2NhY2hlZFJlc291cmNlUmVx
dWVzdEluaXRpYXRvcnMobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
PigpKQogICAgICwgbV9ldmVudE5hbWVzKEV2ZW50TmFtZXM6OmNyZWF0ZSgpKQotICAgICwgbV90
aHJlYWRUaW1lcnMoc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCi0gICAgLCBtX3F1
YWxpZmllZE5hbWVDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkK
KyAgICAsIG1fdGhyZWFkVGltZXJzKG1ha2VVbmlxdWU8VGhyZWFkVGltZXJzPigpKQorICAgICwg
bV9xdWFsaWZpZWROYW1lQ2FjaGUobWFrZVVuaXF1ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCiAj
aWZuZGVmIE5ERUJVRwogICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5k
aWYKLSAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKHN0ZDo6bWFrZV91bmlxdWU8SUNVQ29udmVy
dGVyV3JhcHBlcj4oKSkKKyAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKG1ha2VVbmlxdWU8SUNV
Q29udmVydGVyV3JhcHBlcj4oKSkKIHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2
ZSBiZWVuIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBvbgog
ICAgIC8vIGFueSBvdGhlciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJl
YWQgLSB0aGlzIG1ha2VzIHRoaXMgYSBjb252ZW5pZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5jcHAKaW5kZXggMmY4OTJkNmIxOWFiYTQyMzBlOTI0Yzc2MTg3Mzhm
YzZjYjQ4ZjdlYy4uZTcwZDQ2ZDBiOWYyNDA3ZjkwODU0OGZhOGYyZTk4YzlkYTQ1NjNiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBBdWRpb0J1czo6QXVkaW9CdXModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90
IGxlbmd0aCwgYm9vbCBhbGxvY2F0ZSkKICAgICBtX2NoYW5uZWxzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRl
ID8gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvQ2hhbm5lbD4obnVsbHB0ciwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byBjaGFubmVs
ID0gYWxsb2NhdGUgPyBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IG1ha2VVbmlx
dWU8QXVkaW9DaGFubmVsPihudWxscHRyLCBsZW5ndGgpOwogICAgICAgICBtX2NoYW5uZWxzLnVu
Y2hlY2tlZEFwcGVuZChXVEZNb3ZlKGNoYW5uZWwpKTsKICAgICB9CiAKQEAgLTQ4OSw3ICs0ODks
NyBAQCB2b2lkIEF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3Vy
Y2VCdXMsIGZsb2F0KiBsYXN0TWl4R2FpbiwgZgogCiAgICAgaWYgKGZyYW1lc1RvRGV6aXBwZXIp
IHsKICAgICAgICAgaWYgKCFtX2RlemlwcGVyR2FpblZhbHVlcy5nZXQoKSB8fCBtX2RlemlwcGVy
R2FpblZhbHVlcy0+c2l6ZSgpIDwgZnJhbWVzVG9EZXppcHBlcikKLSAgICAgICAgICAgIG1fZGV6
aXBwZXJHYWluVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1l
c1RvRGV6aXBwZXIpOworICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBtYWtlVW5p
cXVlPEF1ZGlvRmxvYXRBcnJheT4oZnJhbWVzVG9EZXppcHBlcik7CiAKICAgICAgICAgZmxvYXQq
IGdhaW5WYWx1ZXMgPSBtX2RlemlwcGVyR2FpblZhbHVlcy0+ZGF0YSgpOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhbWVzVG9EZXppcHBlcjsgKytpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCAyMTczZGM5MzgzZTRhMzNjMWI1OTM0
NzY1YTFlNWIxMDc0NmYwM2ExLi5iYmIzZDJhY2QyMmM1NzJiYzkyM2E0OGIxZjcwYWY4NTRjMGNi
MDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQW4gQXVkaW9CdXMgcmVwcmVzZW50cyBh
IGNvbGxlY3Rpb24gb2Ygb25lIG9yIG1vcmUgQXVkaW9DaGFubmVscy4KIC8vIFRoZSBkYXRhIGxh
eW91dCBpcyAicGxhbmFyIiBhcyBvcHBvc2VkIHRvICJpbnRlcmxlYXZlZCIuCiAvLyBBbiBBdWRp
b0J1cyB3aXRoIG9uZSBjaGFubmVsIGlzIG1vbm8sIGFuIEF1ZGlvQnVzIHdpdGggdHdvIGNoYW5u
ZWxzIGlzIHN0ZXJlbywgZXRjLgotY2xhc3MgQXVkaW9CdXMgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8QXVkaW9CdXM+IHsKK2NsYXNzIEF1ZGlvQnVzIGZpbmFsIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEF1ZGlvQnVzPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVk
aW9CdXMpOwogcHVibGljOgogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0NoYW5uZWwuaAppbmRleCBiYmMxMzU3YTNkNTNmMDU0OGY4ODc4ZTU4N2RiN2Q2
ZGQxYzRmYWQ4Li43Yjk4OTNkMzhhYzQxNzQ1MzE3NDFiNzcyNGM2ZmYyYWJkMDFkZjkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaApAQCAtMzcsNyAr
MzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvQ2hhbm5lbCByZXByZXNl
bnRzIGEgYnVmZmVyIG9mIG5vbi1pbnRlcmxlYXZlZCBmbG9hdGluZy1wb2ludCBhdWRpbyBzYW1w
bGVzLgogLy8gVGhlIFBDTSBzYW1wbGVzIGFyZSBub3JtYWxseSBhc3N1bWVkIHRvIGJlIGluIGEg
bm9taW5hbCByYW5nZSAtMS4wIC0+ICsxLjAKLWNsYXNzIEF1ZGlvQ2hhbm5lbCB7CitjbGFzcyBB
dWRpb0NoYW5uZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvQ2hhbm5lbCk7CiBwdWJsaWM6CiAgICAgLy8gTWVtb3J5
IGNhbiBiZSBleHRlcm5hbGx5IHJlZmVyZW5jZWQsIG9yIGNhbiBiZSBpbnRlcm5hbGx5IGFsbG9j
YXRlZCB3aXRoIGFuIEF1ZGlvRmxvYXRBcnJheS4KQEAgLTU2LDcgKzU3LDcgQEAgY2xhc3MgQXVk
aW9DaGFubmVsIHsKICAgICAgICAgLCBtX3Jhd1BvaW50ZXIoMCkKICAgICAgICAgLCBtX3NpbGVu
dCh0cnVlKQogICAgIHsKLSAgICAgICAgbV9tZW1CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvRmxvYXRBcnJheT4obGVuZ3RoKTsKKyAgICAgICAgbV9tZW1CdWZmZXIgPSBtYWtlVW5pcXVl
PEF1ZGlvRmxvYXRBcnJheT4obGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBBICJibGFuayIgYXVk
aW8gY2hhbm5lbCAtLSBtdXN0IGNhbGwgc2V0KCkgYmVmb3JlIGl0J3MgdXNlZnVsLi4uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCmluZGV4IDc1YzlhYmQ3NDk0ZDM1
ODIyZjgyYWNlN2NjZDBkODU2ODYxMWQ3ZWEuLjBmNDM4ZGQ3ZDBmYTU5ZmI2NDRkNGRmNTcyZjU1
OWZkNjYzMDhiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5o
CkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9G
SUZPIHsKK2NsYXNzIEF1ZGlvRklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgRklGTyBsYXJnZSBlbm91Z2ggdG8gaG9sZCB8
Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxz
LgogICAgIEF1ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xl
bmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1
bGxGSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgK
aW5kZXggYmZiZTk4M2E1NzVhNDU0YWFjMmIwYzNjYmU0NTc1ZWZhZjZiNzhkNy4uZDc0OGZhNDEz
ODczNzlkYjM5NWJlYWU2NWY4ODJiYTI1OGU5ZmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyB0aGUgRklGTyB3aWxsIGFzayB0aGUgcHJvdmlkZXIgZm9yIG1vcmUgZGF0
YSB3aGVuIG5lY2Vzc2FyeSB0byBmdWxmaWxsIGEgcmVxdWVzdC4gQ29udHJhc3QgdGhpcwogLy8g
d2l0aCBhICJwdXNoIiBGSUZPLCB3aGVyZSB0aGUgc2VuZGVyIHB1c2hlcyBkYXRhIHRvIHRoZSBG
SUZPIHdoaWNoIHdpbGwgaXRzZWxmIHB1c2ggdGhlIGRhdGEgdG8KIC8vIHRoZSByZWNlaXZlciB3
aGVuIHRoZSBGSUZPIGlzIGZ1bGwuCi1jbGFzcyBBdWRpb1B1bGxGSUZPIHsKK2NsYXNzIEF1ZGlv
UHVsbEZJRk8gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJvdmlkZXJ8LiBUaGUg
RklGTyB3aWxsIGJlIGxhcmdlIGVub3VnaCB0byBob2xkCiAgICAgLy8gfGZpZm9MZW5ndGh8IGZy
YW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4gVGhlIEF1ZGlvU291
cmNlUHJvdmlkZXIgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9SZXNhbXBsZXIuY3BwCmluZGV4IDg2OTA2YmE1MTI0NzU4NjkyYzY4M2UyYmM5MDM4MzUw
MWVhYjhmZDkuLjI4NGMwNTQ5NDMyNTkzNDRlYWNlMzI0MThhZGE5YjgzMDNkYTJlNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgY29uc3QgZG91YmxlIEF1ZGlvUmVzYW1wbGVyOjpNYXhSYXRlID0gOC4w
OwogQXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKCkKICAgICA6IG1fcmF0ZSgxLjApCiB7
Ci0gICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2Vy
bmVsPih0aGlzKSk7CisgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1w
bGVyS2VybmVsPih0aGlzKSk7CiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEs
IDAsIGZhbHNlKTsKIH0KIApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9S
ZXNhbXBsZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IG1fcmF0ZSgxLjApCiB7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAg
ICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2Vy
bmVsPih0aGlzKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jl
c2FtcGxlcktlcm5lbD4odGhpcykpOwogCiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3Jl
YXRlKG51bWJlck9mQ2hhbm5lbHMsIDAsIGZhbHNlKTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9p
ZCBBdWRpb1Jlc2FtcGxlcjo6Y29uZmlndXJlQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscykKICAgICAvLyBGaXJzdCBkZWFsIHdpdGggYWRkaW5nIG9yIHJlbW92aW5nIGtlcm5lbHMu
CiAgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPiBjdXJyZW50U2l6ZSkgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBjdXJyZW50U2l6ZTsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAg
ICAgICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxl
cktlcm5lbD4odGhpcykpOworICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVl
PEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fa2Vy
bmVscy5yZXNpemUobnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCmluZGV4IGQxMWZhOTNlYmFhY2JkOGU1NmI5OGRh
MzM3NWZhZTE0MDY4ZTNiYzkuLjIwMTZiYWZmN2M4OGRmMThhZjVkMzUyYzMwMWY1ZmY0Mzc2ODlm
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1w
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIu
aApAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgYXVkaW8gc3Ry
ZWFtIG1heSBiZSBzaW5nbGUgb3IgbXVsdGktY2hhbm5lbC4KIC8vIFRoZSBkZWZhdWx0IGNvbnN0
cnVjdG9yIGRlZmF1bHRzIHRvIHNpbmdsZS1jaGFubmVsIChtb25vKS4KIAotY2xhc3MgQXVkaW9S
ZXNhbXBsZXIgeworY2xhc3MgQXVkaW9SZXNhbXBsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVyKCk7CiAgICAgQXVkaW9S
ZXNhbXBsZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAppbmRleCA5OWQ4Nzdi
YjdjZDY4ZGJiMDUzNjc3YTA5N2NkNGUwZWFjODNiNzgyLi44YWMyYmFhNDJjNTg3YTM0ODVkNTM0
MDIzYWRlZTI0Zjg4MzI2ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKQEAgLTM0LDcgKzM0LDkgQEAgY2xhc3MgQXVk
aW9SZXNhbXBsZXI7CiAvLyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBkb2VzIHJlc2FtcGxpbmcgb24g
YSBzaW5nbGUgbW9ubyBjaGFubmVsLgogLy8gSXQgdXNlcyBhIHNpbXBsZSBsaW5lYXIgaW50ZXJw
b2xhdGlvbiBmb3IgZ29vZCBwZXJmb3JtYW5jZS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJu
ZWwgeworY2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvUmVzYW1wbGVyS2Vy
bmVsKTsKIHB1YmxpYzoKICAgICBBdWRpb1Jlc2FtcGxlcktlcm5lbChBdWRpb1Jlc2FtcGxlciop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApp
bmRleCA1YzFiZjJhMzE3MzQyZWEzZTUyOTJhNzk3ZThlNjZlMWE4ZGEzOTdjLi5iNWZiNTgwNjQ4
ZjljZjhlYzRmMTg2ZmFmYTQ4ZTEzZmRjZjJmNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgYm9vbCBBdWRp
b1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiB9OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IDE3ZGE4MWIzYjc1ZDdhNWFh
YjgyMTQ4NmI3YzFlMzNmMWE4ZGY0NjkuLmU3MDA4MjJmZjFmZWViZDc4MjlhZWM3NTBjY2U0MGE2
MGI5MjU2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lv
bi5oCkBAIC00NCw3ICs0NCw4IEBAIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWlu
dDhfdCB7CiAgICAgTG9uZ0Zvcm1WaWRlbwogfTsKIAotY2xhc3MgQXVkaW9TZXNzaW9uIHsKK2Ns
YXNzIEF1ZGlvU2Vzc2lvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uKTsKIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQXVkaW9TZXNzaW9uJiBzaGFyZWRTZXNzaW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCmluZGV4IGJiNzIxYTIzYTdmY2M3NzRiNjA5M2U0
ZWE5MDhjNjBlODkwODEwN2MuLjcxMzQ5NGM5MTRkMzM3ODY0M2UyOWE4MGJjMzllNzczNjZkZjE4
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCkBAIC00MSw2ICs0MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vICAgIGxvd3Bhc3MsIGhpZ2hwYXNzLCBzaGVsdmlu
ZywgcGFyYW1ldGVyaWMsIG5vdGNoLCBhbGxwYXNzLCAuLi4KIAogY2xhc3MgQmlxdWFkIGZpbmFs
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBCaXF1YWQo
KTsKICAgICB+QmlxdWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9Db25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKaW5kZXgg
ZDgxYzA1ZGM2OGU2ZTJmYTIxZDI0NWRkMTM3YjRmMTc4YTIxMjBiNC4uYTdhY2EzYTRjNTRkMjc0
YjNhYTNkNDBhZDlkMTQzZWJkZmM0NWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQ29uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Nv
bmUuaApAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbmUgZ2Fp
biBpcyBkZWZpbmVkIGFjY29yZGluZyB0byB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24KIAotY2xh
c3MgQ29uZUVmZmVjdCB7CitjbGFzcyBDb25lRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb25lRWZmZWN0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAppbmRleCA2ZTlmNGUw
MWRhZTZkNDVkMDIxMTFkNWQ1YjEyOGVmMzg4NmIyMjQyLi5lMGIzZWZkODBmNzhmZmFhMzA2NTcz
MzIzMTQ3MDJkYzczYTJmMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EZW5vcm1hbERpc2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRGVub3JtYWxEaXNhYmxlci5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9ERU5PUk1BTAotY2xhc3MgRGVub3JtYWxEaXNhYmxl
ciB7CitjbGFzcyBEZW5vcm1hbERpc2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBEZW5vcm1hbERpc2FibGVyKCkKICAgICAgICAgICAgIDog
bV9zYXZlZENTUigwKQpAQCAtMTAzLDcgKzEwNCw4IEBAIGNsYXNzIERlbm9ybWFsRGlzYWJsZXIg
ewogCiAjZWxzZQogLy8gRklYTUU6IGFkZCBpbXBsZW1lbnRhdGlvbnMgZm9yIG90aGVyIGFyY2hp
dGVjdHVyZXMgYW5kIGNvbXBpbGVycwotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBE
ZW5vcm1hbERpc2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBEZW5vcm1hbERpc2FibGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKaW5kZXggNmYyZmFmNDBlNjFiZjZlMzJh
NGY0OTk5NzY1YzllMWJiNTE5NDFhOC4uNzgzMDhjZTE5OTk5OWJiMWQ2ODBiYjNiN2UyM2FlMDRj
ZDdjYjIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0
Q29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29u
dm9sdmVyLmgKQEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBEaXJlY3RDb252b2x2ZXIgeworY2xhc3MgRGlyZWN0Q29udm9sdmVyIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXJlY3RD
b252b2x2ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IERpcmVjdENvbnZvbHZlcihzaXplX3Qg
aW5wdXRCbG9ja1NpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EaXN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2Uu
aAppbmRleCA5MWQzNDliOTdlNjI3NzMzMmQ3NjMxYTg4NDQyNmIxNjY4ZGNmMjgzLi5iM2ViNzc5
NzNjZmE0Nzk1ZjE1MDUzNjliN2U0YjJmODlmZmI2YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0Rpc3RhbmNlLmgKQEAgLTQwLDcgKzQwLDggQEAgZW51bSBjbGFzcyBEaXN0YW5j
ZU1vZGVsVHlwZSB7CiAgICAgRXhwb25lbnRpYWwKIH07CiAKLWNsYXNzIERpc3RhbmNlRWZmZWN0
IHsKK2NsYXNzIERpc3RhbmNlRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBEaXN0YW5jZUVmZmVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaAppbmRleCBmNGI0MjAxN2VlNzYyN2NhZDY1NmJm
ZjQ1N2FhZTk4OTQ4MDE0YmYyLi45NTcwYjg5MWM5N2ZmYTkxMWEwMTEzNDAwM2I0ZmRjYjVmNzZm
OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBEb3duU2FtcGxlciBkb3du
LXNhbXBsZXMgdGhlIHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCiAKLWNsYXNzIERv
d25TYW1wbGVyIHsKK2NsYXNzIERvd25TYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEb3duU2FtcGxlcihzaXplX3QgaW5w
dXRCbG9ja1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5jcHAKaW5kZXggYjI1NTE4ZDg4MGE4ZDJkOTk0YTc2OTZiOGZhZGE5
ZTU1NDhjMjllYi4uNTEzNzk5YTg1MTJmNDI3YjRlNGI4ZDliMjk0NWE5NGQzNDkxODc3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3IuY3BwCkBAIC0yNzEsOCArMjcxLDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldE51
bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICBtX3ByZUZpbHRl
clBhY2tzLmNsZWFyKCk7CiAgICAgbV9wb3N0RmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIG1f
cHJlRmlsdGVyUGFja3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNr
ND4oKSk7Ci0gICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVu
ZChtYWtlVW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBtX3Bvc3RGaWx0
ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAgICB9
CiAKICAgICBtX3NvdXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4o
bnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5oCmluZGV4IGVmOGMwOTNhMWI5NjUzMjI5ZDc5OWYxYTZiMjky
YWZhZGJkYWJhZDEuLjgyMmM5MzFmMzhjZTBlYzhkYzYyODJmMGY4YzM0M2FmNjc3Zjk4NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ci5oCkBAIC00Myw4ICs0Myw5IEBAIGNsYXNzIEF1ZGlvQnVzOwogLy8gb2YgdGhlIGxvdWRlc3Qg
cGFydHMgb2YgdGhlIHNpZ25hbCBhbmQgcmFpc2VzIHRoZSB2b2x1bWUgb2YgdGhlIHNvZnRlc3Qg
cGFydHMsCiAvLyBtYWtpbmcgdGhlIHNvdW5kIHJpY2hlciwgZnVsbGVyLCBhbmQgbW9yZSBjb250
cm9sbGVkLgogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgeworY2xhc3MgRHluYW1pY3NDb21w
cmVzc29yIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEeW5hbWljc0NvbXByZXNzb3IpOwogcHVibGljOgogICAgIGVudW0gewog
ICAgICAgICBQYXJhbVRocmVzaG9sZCwKQEAgLTk1LDkgKzk2LDEwIEBAIGNsYXNzIER5bmFtaWNz
Q29tcHJlc3NvciB7CiAgICAgZmxvYXQgbV9sYXN0QW5jaG9yOwogICAgIGZsb2F0IG1fbGFzdEZp
bHRlclN0YWdlR2FpbjsKIAotICAgIHR5cGVkZWYgc3RydWN0IHsKKyAgICBzdHJ1Y3QgWmVyb1Bv
bGVGaWx0ZXJQYWNrNCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgWmVyb1BvbGUgZmlsdGVyc1s0XTsKLSAgICB9IFplcm9Qb2xlRmlsdGVyUGFjazQ7
CisgICAgfTsKIAogICAgIC8vIFBlci1jaGFubmVsIGVtcGhhc2lzIGZpbHRlcnMuCiAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4gbV9wcmVGaWx0ZXJQYWNr
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuY3BwCmluZGV4IDczNGIwNjZjZGE0OGJjMmM3YTc5ZWRmNTA3ZDA2
YzA1NmM3MGEwOTAuLmFmZWRiN2I0Y2QwYTVhNjFkMWE5ZmUyNzhjMzQwMzgzZjk4ZTIxYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbDo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
KQogCiAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuY2xlYXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICBtX3ByZURlbGF5QnVmZmVy
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJh
bWVzKSk7CisgICAgICAgIG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKIH0KIAogdm9pZCBEeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWw6OnNldFByZURlbGF5VGltZShmbG9hdCBwcmVEZWxheVRpbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5oCmluZGV4IGI3YmNlYTJmYWZkODk5NmNhNTI4YjBiNWRhYjQ5Y2I4ODk1OGRjYzQuLmUx
MWY0N2JhYWYwYmM2YzVkMGNhN2UzZDcyMDA4MjYzOWQyNzBjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5o
CkBAIC0zNSw3ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCBmaW5h
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
RHluYW1pY3NDb21wcmVzc29yS2VybmVsKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9FcXVhbFBvd2VyUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmgKaW5kZXggOGNmNTk5MTc5NWYzZjFmNjNlMjgxZDllMTZhY2FmM2Q3YTU3
YTVkYS4uNGU0NjNiMTI4MWE3ZmEzYmIzOTdhNmIwNjVjZTAzM2NjYmY5YWQyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaApAQCAtMzEs
NyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbW1vbiB0eXBlIG9mIHN0ZXJl
byBwYW5uZXIgYXMgZm91bmQgaW4gbm9ybWFsIGF1ZGlvIG1peGluZyBlcXVpcG1lbnQuCiAKLWNs
YXNzIEVxdWFsUG93ZXJQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKK2NsYXNzIEVxdWFsUG93ZXJQ
YW5uZXIgZmluYWwgOiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFcXVh
bFBvd2VyUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCmluZGV4IDQ1NDJiNmZiMjU3ODU0OTVhYjIwNmFiYzNj
OTBjNzViYzJmMTZlYTAuLjM4NjIyN2YxOTcwNGFmZDc5MmUzNjYyMmJkZGE5YzFhY2VhNzUxMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCkBAIC0z
NCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRkZUQ29udm9sdmVy
IHsKK2NsYXNzIEZGVENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRkZUQ29udm9sdmVyKTsKIHB1YmxpYzoKICAg
ICAvLyBmZnRTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28KICAgICBGRlRDb252b2x2ZXIoc2l6
ZV90IGZmdFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZURnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3Bw
CmluZGV4IDRjMDJiNjk5MmIwNjM4M2I4MDM1NzM3ODc4ZGJmNjVhMjZmYjljMzEuLjRjMTUyMDY3
ZDQ0YWM0Yjg1NDE5MjFhYWVkMjk1OTgyYjk2OTM3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBGRlRGcmFtZTo6
ZG9QYWRkZWRGRlQoY29uc3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIAogc3RkOjp1
bmlxdWVfcHRyPEZGVEZyYW1lPiBGRlRGcmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUoY29u
c3QgRkZURnJhbWUmIGZyYW1lMSwgY29uc3QgRkZURnJhbWUmIGZyYW1lMiwgZG91YmxlIHgpCiB7
Ci0gICAgYXV0byBuZXdGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZyYW1lMS5m
ZnRTaXplKCkpOworICAgIGF1dG8gbmV3RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmcmFt
ZTEuZmZ0U2l6ZSgpKTsKIAogICAgIG5ld0ZyYW1lLT5pbnRlcnBvbGF0ZUZyZXF1ZW5jeUNvbXBv
bmVudHMoZnJhbWUxLCBmcmFtZTIsIHgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZS5oCmluZGV4IDc1N2JjZmE0YjZhZWZkNzBlYmFlODY1NDg3MjVmYTQw
NjI5YzZlOWUuLmE1MTkzNDk4MTUwNDUyNmQ2ZmM2NGQ0NWI5NzkwYjM3ODEwM2E0NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJURktlcm5lbDsKIAotY2xhc3Mg
SFJURkRhdGFiYXNlIHsKK2NsYXNzIEhSVEZEYXRhYmFzZSBmaW5hbCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkRhdGFiYXNlKTsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZE
YXRhYmFzZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuY3BwCmluZGV4IGY0NWJlODQ3Y2U3MTBkY2VkYTJlMGVjMTA2Yjc1YmYyNjg1
Nzg5Y2QuLmE0NzRhNzBjNDA4NTJhZTJlMWY5ZjU4YTQ5YTAwMDM2MTU4MGIzMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNw
cApAQCAtODUsNyArODUsNyBAQCB2b2lkIEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZCgpCiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSkg
ewogICAgICAgICAvLyBMb2FkIHRoZSBkZWZhdWx0IEhSVEYgZGF0YWJhc2UuCi0gICAgICAgIG1f
aHJ0ZkRhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VT
YW1wbGVSYXRlKTsKKyAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBtYWtlVW5pcXVlPEhSVEZEYXRh
YmFzZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBjODRhYjk3NTFhMTQ1
OTg5YTAzNzdmYWQxZjRhNzVlOGYxN2UyYjI0Li42MDUyMzJjZDFhOTljOTIzM2Q5YWQxMDQ5YmEz
MDdlMjE3NzM4ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RWxldmF0aW9uLmNwcApAQCAtMjQ0LDggKzI0NCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxl
dmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3Vi
CiAgICAgaWYgKCFpc0VsZXZhdGlvbkdvb2QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICAKLSAgICBhdXRvIGtlcm5lbExpc3RMID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVs
TGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKLSAgICBhdXRvIGtlcm5lbExpc3RSID0gc3Rk
OjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAg
ICBhdXRvIGtlcm5lbExpc3RMID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZU
b3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RSID0gbWFrZVVuaXF1ZTxIUlRGS2Vy
bmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKIAogICAgIC8vIExvYWQgY29udm9sdXRp
b24ga2VybmVscyBmcm9tIEhSVEYgZmlsZXMuCiAgICAgaW50IGludGVycG9sYXRlZEluZGV4ID0g
MDsKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJU
RkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1YgogICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+
KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgZWxldmF0aW9uLCBz
YW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3Zl
KGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0
ZSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpj
cmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjEs
IEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24yLCBmbG9hdCB4LCBmbG9hdCBzYW1wbGVSYXRl
KQpAQCAtMjg1LDggKzI4NSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRG
RWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgICAgIAog
ICAgIEFTU0VSVCh4ID49IDAuMCAmJiB4IDwgMS4wKTsKICAgICAKLSAgICBhdXRvIGtlcm5lbExp
c3RMID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11
dGhzKTsKLSAgICBhdXRvIGtlcm5lbExpc3RSID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVs
TGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RMID0gbWFr
ZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRv
IGtlcm5lbExpc3RSID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6
aW11dGhzKTsKIAogICAgIEhSVEZLZXJuZWxMaXN0KiBrZXJuZWxMaXN0TDEgPSBocnRmRWxldmF0
aW9uMS0+a2VybmVsTGlzdEwoKTsKICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdFIxID0g
aHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RSKCk7CkBAIC0zMDIsNyArMzAyLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xh
dGluZ1NsaWNlcyhIUlRGRWwKICAgICAvLyBJbnRlcnBvbGF0ZSBlbGV2YXRpb24gYW5nbGUuCiAg
ICAgZG91YmxlIGFuZ2xlID0gKDEuMCAtIHgpICogaHJ0ZkVsZXZhdGlvbjEtPmVsZXZhdGlvbkFu
Z2xlKCkgKyB4ICogaHJ0ZkVsZXZhdGlvbjItPmVsZXZhdGlvbkFuZ2xlKCk7CiAgICAgCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0
TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xlKSwgc2FtcGxl
UmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJu
ZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xlKSwg
c2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQgSFJURkVsZXZhdGlvbjo6Z2V0S2VybmVsc0Zyb21Bemlt
dXRoKGRvdWJsZSBhemltdXRoQmxlbmQsIHVuc2lnbmVkIGF6aW11dGhJbmRleCwgSFJURktlcm5l
bCogJmtlcm5lbEwsIEhSVEZLZXJuZWwqICZrZXJuZWxSLCBkb3VibGUmIGZyYW1lRGVsYXlMLCBk
b3VibGUmIGZyYW1lRGVsYXlSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkVsZXZhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5oCmluZGV4IDJhOTU5MDQ1NTIxODQzYTE1MTYyZWNjOGUzMjExNzM5ZTA3MDUz
ZjcuLmVmNzUyYzNjMDFiZTM5ZWNkYjdlZjY0ZGY0MzkwOTI2NmQ2ZWQ5NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKQEAgLTM5LDcgKzM5LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBIUlRGRWxldmF0aW9uIGNvbnRhaW5zIGFsbCBv
ZiB0aGUgSFJURktlcm5lbHMgKG9uZSBsZWZ0IGVhciBhbmQgb25lIHJpZ2h0IGVhciBwZXIgYXpp
bXV0aCBhbmdsZSkgZm9yIGEgcGFydGljdWxhciBlbGV2YXRpb24uCiAKLWNsYXNzIEhSVEZFbGV2
YXRpb24geworY2xhc3MgSFJURkVsZXZhdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkVsZXZhdGlvbik7CiBwdWJs
aWM6CiAgICAgSFJURkVsZXZhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtl
cm5lbExpc3RMLCBzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RSLCBp
bnQgZWxldmF0aW9uLCBmbG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGS2VybmVsLmNwcAppbmRleCBlZGY2YzYwZDBkYjgxNGQ5NGMwZjcxYjYzMDZl
NDM4MjY1M2FhNGM3Li4zNzU1MjE2YWUyODdhNzFjNzQyOTI5YTUzYzk1OTA5NmRiMWRiYjdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcApAQCAtOTIs
NyArOTIsNyBAQCBIUlRGS2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwg
c2l6ZV90IGZmdFNpemUsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2ZmdEZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CisgICAg
bV9mZnRGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOwogICAgIG1fZmZ0RnJh
bWUtPmRvUGFkZGVkRkZUKGltcHVsc2VSZXNwb25zZSwgdHJ1bmNhdGVkUmVzcG9uc2VMZW5ndGgp
OwogfQogCkBAIC0xMDMsNyArMTAzLDcgQEAgc2l6ZV90IEhSVEZLZXJuZWw6OmZmdFNpemUoKSBj
b25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9DaGFubmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJ
bXB1bHNlUmVzcG9uc2UoKQogewotICAgIGF1dG8gY2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9DaGFubmVsPihmZnRTaXplKCkpOworICAgIGF1dG8gY2hhbm5lbCA9IG1ha2VVbmlxdWU8
QXVkaW9DaGFubmVsPihmZnRTaXplKCkpOwogICAgIEZGVEZyYW1lIGZmdEZyYW1lKCptX2ZmdEZy
YW1lKTsKIAogICAgIC8vIEFkZCBsZWFkaW5nIGRlbGF5IGJhY2sgaW4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKaW5kZXggYmY1ZWVmYWE1ZTRjNmQyYmYxN2E5
OTAwMzA3NDE2NWM2ZTQzM2FkNy4uY2FhYTQ0MWYxZDE0ZWEzNmY1ZTk2OGFkOGE3N2QwYjdhNjBk
ZDk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaApAQCAt
MzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhSVEZQYW5uZXIg
OiBwdWJsaWMgUGFubmVyIHsKK2NsYXNzIEhSVEZQYW5uZXIgZmluYWwgOiBwdWJsaWMgUGFubmVy
IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIUlRGUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUsIEhS
VEZEYXRhYmFzZUxvYWRlciopOwogICAgIHZpcnR1YWwgfkhSVEZQYW5uZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIu
Y3BwCmluZGV4IGJiYmYxNjQ0NjIwNzYzOWUzNWNmNzk1NjQ4MjgyNjNkM2U5MzczYWUuLjViZjlh
Yjk1ZDAxNTc1MDA4MTVkNjEzMWFiMWQ4OTc0MWJlMWZlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcApAQCAt
OTcsNyArOTcsNyBAQCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxl
cihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlcgogewogICAgIC8vIENyZWF0ZSBl
YWNoIGNoYW5uZWwncyByZXNhbXBsZXIuCiAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXgg
PSAwOyBjaGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkKLSAg
ICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNj
YWxlRmFjdG9yKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxTaW5jUmVz
YW1wbGVyPihzY2FsZUZhY3RvcikpOwogfQogCiB2b2lkIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92aWRlciwgQXVkaW9CdXMqIGRlc3RpbmF0
aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAppbmRleCA0NDE3NTQ3NjA1ODNk
MjgwMzRhNDViM2JkOGE2MTg4ZDQ2NWEyZjM2Li42MTQ2ZTkyNWMwNmEyZGRhNzZjYjQxMmYwY2Mx
ZTBhMjQ2YWM4MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
dWx0aUNoYW5uZWxSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVzOwogICAgIAotY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1w
bGVyIHsKK2NsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAgZXhwbGljaXQgTXVsdGlDaGFubmVsUmVz
YW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAppbmRleCBhYzcyODZhYzlhMDYw
Yjc1MzRjYjJlZGU5MjFkNmNiZDc3YTk3YTg4Li40MGI5ZDAxZGMxODRiOTZkNWRmM2FiOWI3ZjQw
OTQ2M2E5NzgzNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
YW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAK
QEAgLTQzLDExICs0MywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVyPiBQYW5uZXI6OmNyZWF0
ZShQYW5uaW5nTW9kZWxUeXBlIG1vZGVsLCBmbG9hdCBzYW1wbGVSYXRlLAogCiAgICAgc3dpdGNo
IChtb2RlbCkgewogICAgIGNhc2UgUGFubmluZ01vZGVsVHlwZTo6RXF1YWxwb3dlcjoKLSAgICAg
ICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxFcXVhbFBvd2VyUGFubmVyPihzYW1wbGVSYXRl
KTsKKyAgICAgICAgcGFubmVyID0gbWFrZVVuaXF1ZTxFcXVhbFBvd2VyUGFubmVyPihzYW1wbGVS
YXRlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFBhbm5pbmdNb2RlbFR5cGU6OkhSVEY6
Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURlBhbm5lcj4oc2FtcGxlUmF0
ZSwgZGF0YWJhc2VMb2FkZXIpOworICAgICAgICBwYW5uZXIgPSBtYWtlVW5pcXVlPEhSVEZQYW5u
ZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlv
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEu
aAppbmRleCBjZGE3MmU4YWIzYzRjZGMwYTg2OGZhYWM0ZjA1Y2U2MWM0NDQwMmQwLi40NjM1YTY3
MzNlY2MzZjNhMDc1MDJmYzdhNzUwMTczZTMzZTExZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmgKQEAgLTI4LDYgKzI4LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGEgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3JtQXVk
aW9EYXRhKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggZTAyMzk0YWE1YjE0OWNkMTU5
NjkxMmEyNTY4MWZmNWVhNDRhZDhkMi4uYzhiZDY0YTQxYmY2MTJlODllM2MyMTRmYTIyZGNjNTk5
NDhlNTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFN0cmluZyBjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENv
bW1hbmRUeXBlCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gUGxhdGZv
cm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihj
bGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGll
bnQpOwogfQogCiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmIuY3BwCmluZGV4IDMwNDNmYzhhMDRkZjBkNzdjMTBhYTAzNzliZDI2YTM5ZDQ2
Y2U2YmEuLjhhNjc1NWM1NGFkMDBhM2E4MTAxODc0MjE2MmNjZDA3NGRlMTBlMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZv
aWQgUmV2ZXJiOjppbml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1bHNlUmVzcG9uc2VCdWZmZXIsIHNp
emVfdCByZW5kZXJTbGljZVNpemUsCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1SZXNw
b25zZUNoYW5uZWxzOyArK2kpIHsKICAgICAgICAgQXVkaW9DaGFubmVsKiBjaGFubmVsID0gaW1w
dWxzZVJlc3BvbnNlQnVmZmVyLT5jaGFubmVsKGkpOwogCi0gICAgICAgIG1fY29udm9sdmVycy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNs
aWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2UsIHVzZUJhY2tncm91bmRU
aHJlYWRzKSk7CisgICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQobWFrZVVuaXF1ZTxSZXZlcmJD
b252b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVy
UmVuZGVyUGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7CiAKICAgICAgICAgY29udm9sdmVy
UmVuZGVyUGhhc2UgKz0gcmVuZGVyU2xpY2VTaXplOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiLmgKaW5kZXggM2UyNTc2YjM1NzU3ZGJhMjQ3MGM4ZWI3ZGEzYzE3YmVl
YmJmZGNlZC4uMjM0ZTMxZGFlYmJkNGRkYWEzNmExZTkwNTMxMWViOTkyMmZhYTY3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3Mg
QXVkaW9CdXM7CiAgICAgCiAvLyBNdWx0aS1jaGFubmVsIGNvbnZvbHV0aW9uIHJldmVyYiB3aXRo
IGNoYW5uZWwgbWF0cml4aW5nIC0gb25lIG9yIG1vcmUgUmV2ZXJiQ29udm9sdmVyIG9iamVjdHMg
YXJlIHVzZWQgaW50ZXJuYWxseS4KIAotY2xhc3MgUmV2ZXJiIHsKK2NsYXNzIFJldmVyYiBmaW5h
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSB7IE1h
eEZyYW1lU2l6ZSA9IDI1NiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaAppbmRleCA1MTJiNmFkZTM0MWEyODU2
OTcyZWUzZjdiY2IyMTE2NmJiNzIxYTFmLi5hNjI4MzVmOWMwZDdkNzQzYzllOTI3Y2VkZTJkNmEx
ZGE0NTU4NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJBY2N1bXVsYXRpb25CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgaXMgYSBjaXJjdWxhciBkZWxh
eSBidWZmZXIgd2l0aCBvbmUgY2xpZW50IHJlYWRpbmcgZnJvbSBpdCBhbmQgbXVsdGlwbGUgY2xp
ZW50cwogLy8gd3JpdGluZy9hY2N1bXVsYXRpbmcgdG8gaXQgYXQgZGlmZmVyZW50IGRlbGF5IG9m
ZnNldHMgZnJvbSB0aGUgcmVhZCBwb3NpdGlvbi4gIFRoZSByZWFkIG9wZXJhdGlvbiB3aWxsIHpl
cm8gdGhlIG1lbW9yeQogLy8ganVzdCByZWFkIGZyb20gdGhlIGJ1ZmZlciwgc28gaXQgd2lsbCBi
ZSByZWFkeSBmb3IgYWNjdW11bGF0aW9uIHRoZSBuZXh0IHRpbWUgYXJvdW5kLgotY2xhc3MgUmV2
ZXJiQWNjdW11bGF0aW9uQnVmZmVyIHsKK2NsYXNzIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciBm
aW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyKHNpemVfdCBsZW5ndGgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCAxNDVk
ZjgxZTJhNmJhMmMyZGFhOWJiNDFlNmI1Y2FiYWYzODVmOTFjLi5hOWM5MzVjMWEyODVhYjEzNjJk
OGZmMWRmOGNlYmE1YTdlNWFhNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgUmV2ZXJiQ29udm9s
dmVyOjpSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVf
dCByZW5kZXJTbGkKIAogICAgICAgICBib29sIHVzZURpcmVjdENvbnZvbHZlciA9ICFzdGFnZU9m
ZnNldDsKIAotICAgICAgICBhdXRvIHN0YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmJDb252
b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5ndGgsIHJldmVyYlRvdGFsTGF0
ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2UsIHJlbmRl
clNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1c2VEaXJlY3RDb252b2x2ZXIpOwor
ICAgICAgICBhdXRvIHN0YWdlID0gbWFrZVVuaXF1ZTxSZXZlcmJDb252b2x2ZXJTdGFnZT4ocmVz
cG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5ndGgsIHJldmVyYlRvdGFsTGF0ZW5jeSwgc3RhZ2VPZmZz
ZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2UsIHJlbmRlclNsaWNlU2l6ZSwgJm1f
YWNjdW11bGF0aW9uQnVmZmVyLCB1c2VEaXJlY3RDb252b2x2ZXIpOwogCiAgICAgICAgIGJvb2wg
aXNCYWNrZ3JvdW5kU3RhZ2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaAppbmRleCA1YjgxOWUxYTNlNmY0ZmIxZjhkYjBjNTk2
OTcyNjJhYWMwOWM2YmRlLi4zMjAwYjQ1ZWE4ZGY3YzIxY2U2ZmEzN2UwOGJiMjc5MWY4YWU1ZjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
aApAQCAtNDMsOCArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ2hh
bm5lbDsKIAotY2xhc3MgUmV2ZXJiQ29udm9sdmVyIHsKK2NsYXNzIFJldmVyYkNvbnZvbHZlciBm
aW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmV2ZXJiQ29udm9sdmVyKTsKIHB1YmxpYzoKICAgICAvLyBtYXhGRlRTaXplIGNhbiBi
ZSBhZGp1c3RlZCAoZnJvbSBzYXkgMjA0OCB0byAzMjc2OCkgZGVwZW5kaW5nIG9uIGhvdyBtdWNo
IHByZWNpc2lvbiBpcyBuZWNlc3NhcnkuCiAgICAgLy8gRm9yIGNlcnRhaW4gdHdlYWt5IGRlLWNv
bnZvbHZpbmcgYXBwbGljYXRpb25zIHRoZSBwaGFzZSBlcnJvcnMgYWRkIHVwIHF1aWNrbHkgYW5k
IGxlYWQgdG8gbm9uLXNlbnNpY2FsIHJlc3VsdHMgd2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCmluZGV4IDBmZGU0
MjFhZjJmODJmZDQ4NzRkOTRmNmFmMWQ2MzQ3MjM5YzY1NmUuLjRmZjk1M2IyNjA0OTE3ZDM0NTIw
Mzk0MDViNjVkZTJiZDVhMWVhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKQEAgLTU1LDE2ICs1NSwxNiBAQCBS
ZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UoY29uc3QgZmxvYXQqIGlt
cHVsc2VSZXNwb25zZSwgc2l6ZV90LAogICAgIEFTU0VSVChhY2N1bXVsYXRpb25CdWZmZXIpOwog
CiAgICAgaWYgKCFtX2RpcmVjdE1vZGUpIHsKLSAgICAgICAgbV9mZnRLZXJuZWwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKKyAgICAgICAgbV9mZnRLZXJuZWwgPSBtYWtl
VW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKICAgICAgICAgbV9mZnRLZXJuZWwtPmRvUGFkZGVk
RkZUKGltcHVsc2VSZXNwb25zZSArIHN0YWdlT2Zmc2V0LCBzdGFnZUxlbmd0aCk7Ci0gICAgICAg
IG1fZmZ0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRDb252b2x2ZXI+KGZmdFNpemUp
OworICAgICAgICBtX2ZmdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RkZUQ29udm9sdmVyPihmZnRT
aXplKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIXN0YWdlT2Zmc2V0KTsKICAgICAg
ICAgQVNTRVJUKHN0YWdlTGVuZ3RoIDw9IGZmdFNpemUgLyAyKTsKIAotICAgICAgICBtX2RpcmVj
dEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihmZnRTaXplIC8gMik7
CisgICAgICAgIG1fZGlyZWN0S2VybmVsID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZm
dFNpemUgLyAyKTsKICAgICAgICAgbV9kaXJlY3RLZXJuZWwtPmNvcHlUb1JhbmdlKGltcHVsc2VS
ZXNwb25zZSwgMCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8RGlyZWN0Q29udm9sdmVyPihyZW5kZXJTbGljZVNpemUpOworICAgICAg
ICBtX2RpcmVjdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RGlyZWN0Q29udm9sdmVyPihyZW5kZXJT
bGljZVNpemUpOwogICAgIH0KICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hbGxvY2F0ZShyZW5kZXJT
bGljZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXJTdGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyU3RhZ2UuaAppbmRleCBhMDQ5MDk3MDM0MGFiM2IzMzYwMGIwODllNTk4NDc0
ZmIzZDQ1NWU2Li4zYzAzYmUzNDFiM2I3ZDY0NjIxZGM4MDM4MTY2OTM2MGY0ZGI0YzlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0
YWdlLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRGlyZWN0Q29udm9sdmVyOwogICAgIAogLy8g
QSBSZXZlcmJDb252b2x2ZXJTdGFnZSByZXByZXNlbnRzIHRoZSBjb252b2x1dGlvbiBhc3NvY2lh
dGVkIHdpdGggYSBzdWItc2VjdGlvbiBvZiBhIGxhcmdlIGltcHVsc2UgcmVzcG9uc2UuCiAvLyBJ
dCBpbmNvcnBvcmF0ZXMgYSBkZWxheSBsaW5lIHRvIGFjY291bnQgZm9yIHRoZSBvZmZzZXQgb2Yg
dGhlIHN1Yi1zZWN0aW9uIHdpdGhpbiB0aGUgbGFyZ2VyIGltcHVsc2UgcmVzcG9uc2UuCi1jbGFz
cyBSZXZlcmJDb252b2x2ZXJTdGFnZSB7CitjbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSBmaW5h
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gcmVuZGVy
UGhhc2UgaXMgdXNlZnVsIHRvIGtub3cgc28gdGhhdCB3ZSBjYW4gbWFuaXB1bGF0ZSB0aGUgcHJl
IHZlcnN1cyBwb3N0IGRlbGF5IHNvIHRoYXQgc3RhZ2VzIHdpbGwgcGVyZm9ybQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKaW5kZXggYmIw
NmU0ZWVkNjMzZjBlN2M2ODJlMjBlNGU2YTU3MmFhMWZhYTk2Ni4uYWY5ZWQwMGQ3MzNlODQyYjZl
ZDNhNjQ3NDg1NDIwZDNjNzY3NzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCkBAIC0zNCw3ICszNCw4IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIFJldmVyYklucHV0QnVmZmVyIGlzIHVzZWQgdG8gYnVmZmVyIGlucHV0
IHNhbXBsZXMgZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcgYnkgdGhlIGJhY2tncm91bmQgdGhyZWFk
cy4KLWNsYXNzIFJldmVyYklucHV0QnVmZmVyIHsKK2NsYXNzIFJldmVyYklucHV0QnVmZmVyIGZp
bmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBSZXZlcmJJbnB1dEJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCmluZGV4IDJmY2Q4OWY3ZWNhMzc1ODU4NjMx
YTliMjc2NWExMGQyMDFiMzQxYzcuLmMxMzJmNWQ5NzYyYzc1NjZiMjMyNWMwNjRiMjhkZThiNmUz
OTAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNh
bXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVy
LmgKQEAgLTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTaW5jUmVzYW1w
bGVyIGlzIGEgaGlnaC1xdWFsaXR5IHNhbXBsZS1yYXRlIGNvbnZlcnRlci4KIAotY2xhc3MgU2lu
Y1Jlc2FtcGxlciB7CitjbGFzcyBTaW5jUmVzYW1wbGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICAvLyBzY2FsZUZhY3RvciA9PSBzb3VyY2VT
YW1wbGVSYXRlIC8gZGVzdGluYXRpb25TYW1wbGVSYXRlCiAgICAgLy8ga2VybmVsU2l6ZSBjYW4g
YmUgYWRqdXN0ZWQgZm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBiZXR0ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCmluZGV4IDI2NmJjYWY5ODBkNzI2ZmEyZjYzN2Nm
ZTkzYTVkNGMzOGIyNGVlMDYuLjY3NWVlNGFkMGM0NDY3Y2QxZGQ2ZDFkNTE2MTFlNzdiOThjNGM2
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVXBTYW1wbGVyIHVwLXNhbXBsZXMg
dGhlIHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCiAKLWNsYXNzIFVwU2FtcGxlciB7
CitjbGFzcyBVcFNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFVwU2FtcGxlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKaW5kZXggODMxZGU5MDkzYjAw
NTYxNmI0YmQ3N2VhN2IwNzc4YzM3ZGFhN2I2ZS4uMDJmZmFjZDVlYWNhN2NlMjc1ODkyYmU4ZDY0
Mzk0YzczM2RjN2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
WmVyb1BvbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5o
CkBAIC0zMyw3ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gWmVyb1BvbGUgaXMg
YSBzaW1wbGUgZmlsdGVyIHdpdGggb25lIHplcm8gYW5kIG9uZSBwb2xlLgogCi1jbGFzcyBaZXJv
UG9sZSB7CitjbGFzcyBaZXJvUG9sZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgWmVyb1BvbGUoKQogICAgICAgICA6IG1femVybygwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZl
ckxpc3QuaAppbmRleCA4NmI2NWEyMjUzYWYxYWViMmExY2E5Y2FhMzY2Nzg2Y2Q3ZDY1NTIwLi44
YTdlN2EwM2FjMzNhNGU1NWM0M2MzMWFlYzYzN2IxODljYjFjN2ViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3Qu
aApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbjsKIAotY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0IDogcHVibGljIFBs
YXRmb3JtQXVkaW9EYXRhIHsKK2NsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdCBmaW5hbCA6IHB1Ymxp
YyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CiBwdWJsaWM6CiAgICAgV2ViQXVkaW9CdWZmZXJMaXN0KGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFdlYkF1
ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50MzJfdCBz
YW1wbGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5k
ZXggNWJmOGZkYTZiMjkxMmIxOGYxMTkwZGNiZTcwODJiZjY4NGJlZTk4Zi4uMWE1NDk1ZmQ3NjRk
OWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9E
ZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2Fs
bAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAgICAgIExPRyhNZWRp
YSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBvdXRw
dXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsK
IH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcAppbmRleCA4YWY4NzdlYzJjNGNhMGFiZDMwNzQ4MzVmNTRiMzRhZWJmMDQzM2Ey
Li40YmRlN2U0MWUyYjY0MzdjZDBmZjcyNWU0ZDA3OWQ2OGY4OWU3ZGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9u
PiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYg
KG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9E
ZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVs
cyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxl
UmF0ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9T
PihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0
aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3Rp
bmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggZGM2YzhiY2NlMzY5ZDA2
YWVkYzhmZDMzM2M3MzhjMGJlOTU3NWRkNC4uNjM5ODI0MGJiZDhkOTY3MzAyZGY3ZTllY2ZmNDA3
NTAyZGE2ZTIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiBjYXRlZ29yeU5hbWUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiAjZW5k
aWYKIAogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKTsK
ICAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7CkBAIC03
MSw3ICs3Miw3IEBAIEF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVk
aW9TZXNzaW9uKikKIH0KIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9w
cml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhpcykpCisgICAg
OiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0aGlzKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVz
dGluYXRpb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
RGVzdGluYXRpb25NYWMuY3BwCmluZGV4IDc2NGEzNDdmOTgyOWUxZTg0NzViZDJlYTEyODBhYTE3
NTAyNmVjZmMuLjlmZTY0YmFhYTQ3ODRmZWNkYWIzZDZkZGI1ZTI3ODM4MWUxZTA3MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0
aW5hdGlvbk1hYy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVz
dGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwK
ICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEs
ICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0
IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGlu
YXRpb25NYWM+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxB
dWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1
ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQpp
bmRleCA3N2Q0MzE2NTY2OTkwZTkwMWI5MjBiZjc3OGQ5NjllOWYxOGYxODhhLi40MWFmZTM5ZjIz
MmFlNTg4MDg2MGYwODRkNTU2Y2I0YTVkOGFlMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAg
LTEwOCw3ICsxMDgsNyBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0
Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZgogewogICAgIEFTU0VSVChm
b3JtYXQuc2FtcGxlUmF0ZSgpID49IDApOwogCi0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CisgICAgbV9p
bnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZv
cm1hdCk7CiAgICAgaWYgKG1fb3V0cHV0RGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBzZXR1
cENvbnZlcnRlcigpOwogCkBAIC0xMjAsOSArMTIwLDkgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVE
YXRhU291cmNlOjpzZXRPdXRwdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JgogICAgIEFTU0VSVChtX2lucHV0RGVzY3JpcHRpb24pOwogICAgIEFTU0VSVChmb3JtYXQuc2Ft
cGxlUmF0ZSgpID49IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOworICAgIG1fb3V0cHV0RGVz
Y3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsK
ICAgICBpZiAoIW1fcmluZ0J1ZmZlcikKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlx
dWU8Q0FSaW5nQnVmZmVyPigpOwogCiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShmb3JtYXQs
IHN0YXRpY19jYXN0PHNpemVfdD4obV9tYXhpbXVtU2FtcGxlQ291bnQpKTsKICAgICBtX3NjcmF0
Y2hCdWZmZXIgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZShtX291dHB1dERlc2NyaXB0
aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX21heGltdW1TYW1wbGVDb3VudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3Bw
CmluZGV4IDdmNmVmOWQzM2RiMWZiNDdlN2NmMTRjNTkwNGE0NjExMmIxNTIyMzIuLmNjMDRmMGJl
MzA5NzQ5OGI4MzY2ZTkyNDIwNzNlY2UzZTE5NzVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewogfTsKIAogQXVkaW9TZXNzaW9uOjpB
dWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TZXNz
aW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlv
U2Vzc2lvblByaXZhdGU+KGlzTXV0ZWQoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAppbmRleCAxOGEyNmFiNmRjNWM4ZGQw
MTI1MmRiMDY0NmQ0ZjViOWI0N2I2ZmY1Li4wNGFjZWZjOGRhYWQ3MTMyOGE0ZGRmYWJiZDA0YWY5
ZWNkOGViOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
Q0FSaW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NB
UmluZ0J1ZmZlci5oCkBAIC0zOSw2ICszOSw3IEBAIHR5cGVkZWYgc3RydWN0IEF1ZGlvQnVmZmVy
TGlzdCBBdWRpb0J1ZmZlckxpc3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENBUmlu
Z0J1ZmZlclN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgfkNBUmluZ0J1ZmZlclN0b3JhZ2UoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVh
bCB2b2lkIGFsbG9jYXRlKHNpemVfdCkgPSAwOwpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBDQVJp
bmdCdWZmZXJTdG9yYWdlIHsKICAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKSA9IDA7CiB9OwogCi1j
bGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yIDogcHVibGljIENBUmluZ0J1ZmZlclN0b3Jh
Z2UgeworY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvciBmaW5hbCA6IHB1YmxpYyBDQVJp
bmdCdWZmZXJTdG9yYWdlIHsKIHB1YmxpYzoKICAgICB+Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rv
cigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWREZWNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNv
ZGVyQ0YuY3BwCmluZGV4IGI5ODAzYmZhMDIzMjQzNTdjMGRmZTA0NzMxM2QyYzNlYzMwNGNiOTIu
LjdhNDdmNTYwOGJiYjZkZTlkMzc3M2IxN2U5OGU0NzY0YTI0MjIyYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXll
ZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyQ0Y+KGRhdGEsIHNpemUpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckNGPihkYXRhLCBzaXplKTsKIH0KIAog
S2V5ZWREZWNvZGVyQ0Y6OktleWVkRGVjb2RlckNGKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
CmluZGV4IDFhNjI3ZWEwMGI5MmNiYWE2Y2Y3YzM1NWQ1ZTQ0NWVjNDg2MWE0MTIuLjQ0NzNlYzI4
ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6
OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckNG
PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2RlckNGPigpOwogfQogCiBzdGF0
aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZURpY3Rpb25hcnkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCmluZGV4IGI2ODkyMjgwNWU1ZDM3M2RlN2YwYWVkNzg5MDgyNWFjY2NjMTIwMzku
LjA3YTQ1Y2FkNzhiNmQ0MzdmYWE4NDI1MjY5OWMwZDQ4NmQ3OGVkNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAK
QEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBQb3dlck9ic2VydmVyKCkKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgc3RhdGljIFBvd2VyT2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7CiAg
ICAgaWYgKCFwb3dlck9ic2VydmVyKQotICAgICAgICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKKyAg
ICAgICAgcG93ZXJPYnNlcnZlciA9IG1ha2VVbmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNo
YXJlZFRpbWVyKS5yZWxlYXNlKCk7CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0
YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IGZhbHNlOwog
ICAgIGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyLm1tCmluZGV4IDQ3MDVlZDE1YTVjNThjNDExYzQ5ZjM0ZmFmNzNlZWIz
MDdiMmM5NDguLmFiOTVmZmQwZjg3MWVjMDQ2MDhkNTA5NjQ2YjQzZTNkMDM0OWY1MTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpj
cmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
Ojppbml0aWFsaXplKGNvbnN0IFVSTCogdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpp
bmRleCBhZTBiZDIwOWNjZDZmMzE3YzkxOTMyNWExNmExOGE5OWNkMTU3MmU0Li4wZDJhNjIxODZi
NWE1NGUyYjg1MWZmOTZkNTI4MTAxZjg0NjZmNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5tbQpAQCAtNTAsNyArNTAsNyBAQCBib29sIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
OjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKIH0K
IAogc3RhdGljIGlubGluZSBib29sIGNhbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbENvbnRyb2xsZXIubW0KaW5kZXggZTgzNjljNmU1MDE2ZTIzY2Y4NzNiOTUzN2QyYWZiNGYw
YmM2ODUyMi4uOGZlMzhhZDBjY2UyZmQ1NDJkMjk3MDE3ZmRhMmQxY2IzNTViNzcyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCkBA
IC02MjAsNyArNjIwLDcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFw
UG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3IKICAgICAgICAgaWYgKHNu
YXBQb2ludHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fc2Ny
b2xsU25hcFN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4o
KTsKKyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlPigpOwogICAgIH0KIAogICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBt
X3Njcm9sbFNuYXBTdGF0ZS0+c25hcE9mZnNldHNGb3JBeGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlz
KGF4aXMpKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggNTAz
Zjk3YjkyMDE4ZGE4N2MyNDg4OTFiMjI2NzlhYmI3MDA1YjMwMC4uOTZjODUxMjkzNWFiOWI2OThl
ODk4NTUxNjNiYjZkMjJhYzliODJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApA
QCAtMzAzLDcgKzMwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBDRE1GYWN0b3J5
Q2xlYXJLZXk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlCiAjZWxzZQogICAgIEFT
U0VSVChzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKTsKICNlbmRpZgotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVDbGVhcktleT4oKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUNsZWFyS2V5
OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oCmluZGV4IGQ0NzMwNGM5NWIyNmVmMjA0ZjVkYTRhZGNiYjhhMDg2NGRlMThi
YjMuLjBiOTEwNjQ5Y2E0YTQ3YTkxNWQ1NDhjOWQ5NGFmZmYzMzUzNTkyNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDRE1GYWN0b3J5Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIENETUZhY3Rv
cnlDbGVhcktleSYgc2luZ2xldG9uKCk7CiAKQEAgLTU0LDYgKzU1LDcgQEAgY2xhc3MgQ0RNRmFj
dG9yeUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgewogfTsKIAogY2xhc3MgQ0RN
UHJpdmF0ZUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETVByaXZhdGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVByaXZhdGVDbGVhcktleSgpOwogICAg
IHZpcnR1YWwgfkNETVByaXZhdGVDbGVhcktleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJH
YW1lcGFkUHJvdmlkZXIubW0KaW5kZXggZjcyMGNmZDMzNDNmOWJhZDMzYTQ5MTlhNzhmODY2Zjlk
ODYyYTBhZC4uNWE2ZWI0MDQzOWVmNTkwNTcyYTdjMjllZmMzMzhkOTJmMjM5YzVlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC02MSw3ICs2MSw3IEBA
IHZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0
KEdDQ29udHJvbGxlciAqY29udHJvbGxlCiAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlciBjb250cm9sbGVyICVwIGFkZGVkIiwgY29udHJvbGxlcik7CiAKICAg
ICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBh
dXRvIGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29u
dHJvbGxlciwgaW5kZXgpOworICAgIGF1dG8gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8R2FtZUNvbnRy
b2xsZXJHYW1lcGFkPihjb250cm9sbGVyLCBpbmRleCk7CiAKICAgICBpZiAobV9nYW1lcGFkVmVj
dG9yLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmdyb3coaW5kZXgg
KyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVw
YWQuaAppbmRleCAxNWYwNGM3MDhlOTAwN2JiNGRhZGVlNTQzNWMzNTdmMDJmNTMxYzkzLi5hMjUy
MzRmYjg3NWE3NTFjNjNjMzdiYTZhNWNlZTdkNDUzNGQ1YTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCkBAIC0zNiw2ICszNiw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBISURHYW1lcGFkRWxlbWVudCB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEhJREdhbWVwYWRFbGVtZW50KGRv
dWJsZSB0aGVNaW4sIGRvdWJsZSB0aGVNYXgsIElPSElERWxlbWVudFJlZiBlbGVtZW50KQogICAg
ICAgICA6IG1pbih0aGVNaW4pCiAgICAgICAgICwgbWF4KHRoZU1heCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
Y3BwCmluZGV4IDU3NDM5MWI1YzExMWEzMmJlOTEyNWNhNmNlMDYwMGY1ZDYzODIyNTcuLjZkMTRi
NmIyMTYxMGI4NmNlNGMwMDEzZTUwOTExYjg4Zjk1ZTFhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNw
cApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRl
ZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJv
dmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0g
aW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxISURH
YW1lcGFkPiBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1ZTxISURHYW1lcGFkPihkZXZpY2UsIGlu
ZGV4KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gZ2FtZXBhZCA9IG1ha2VVbmlx
dWU8SElER2FtZXBhZD4oZGV2aWNlLCBpbmRleCk7CiAKICAgICBpZiAobV9nYW1lcGFkVmVjdG9y
LnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmdyb3coaW5kZXggKyAx
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNv
ZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVj
b2RlckdlbmVyaWMuY3BwCmluZGV4IGE0YTMwYjUyYWJlNDhhZjg1MGRjN2M3NDdhM2JjZGUxZDUx
ZmRhNWYuLjBlNTk3MjMyMWI1ZjczZjU3MmJkNzk2NTg4MTFmMDAzYTk1ZWQ0OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5l
cmljLmNwcApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBLZXllZERlY29kZXJHZW5lcmljOjpEaWN0
aW9uYXJ5IHsKICAgICB1c2luZyBOb2RlID0gVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIGJvb2ws
IHVpbnQzMl90LCB1aW50NjRfdCwgaW50MzJfdCwgaW50NjRfdCwgZmxvYXQsIGRvdWJsZSwgU3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+
OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGQoY29uc3QgU3RyaW5n
JiBrZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPE5vZGU+
KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQorICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYg
a2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgbWFrZVVuaXF1ZTxOb2RlPihzdGQ6OmZv
cndhcmQ8VD4odmFsdWUpKSk7IH0KICAgICBOb2RlJiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpIHsg
cmV0dXJuICptX21hcC5nZXQoa2V5KTsgfQogCiBwcml2YXRlOgpAQCAtNzcsNyArNzcsNyBAQCBz
dGF0aWMgYm9vbCByZWFkU2ltcGxlVmFsdWUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVj
b2RlciwgS2V5ZWREZWNvZGVyR2VuZQogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBL
ZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwg
c2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwg
c2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCkBAIC04Niw3ICs4Niw3IEBAIEtleWVkRGVj
b2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiAgICAgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZSB0eXBlOwogICAgIFN0cmlu
ZyBrZXk7CiAKLSAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9u
YXJ5PigpOworICAgIG1fcm9vdERpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7
CiAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG1fcm9vdERpY3Rpb25hcnkuZ2V0KCkpOwog
CiAgICAgYm9vbCBvayA9IHRydWU7CkBAIC0xNDQsNyArMTQ0LDcgQEAgS2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBhdXRvKiBjdXJyZW50RGljdGluYXJ5ID0gbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpOwot
ICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9u
YXJ5PigpOworICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0
aW9uYXJ5PigpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rp
b25hcnkuZ2V0KCkpOwogICAgICAgICAgICAgY3VycmVudERpY3RpbmFyeS0+YWRkKGtleSwgV1RG
TW92ZShuZXdEaWN0aW9uYXJ5KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NiwxMyArMTU2
LDEzIEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICBvayA9IHJlYWRTdHJpbmcoZGVj
b2Rlciwga2V5KTsKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheT4oKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5PigpOwogICAgICAg
ICAgICAgbV9hcnJheVN0YWNrLmFwcGVuZChuZXdBcnJheS5nZXQoKSk7CiAgICAgICAgICAgICBt
X2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmFkZChrZXksIFdURk1vdmUobmV3QXJyYXkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2Vu
ZXJpYzo6VHlwZTo6QmVnaW5BcnJheUVsZW1lbnQ6IHsKLSAgICAgICAgICAgIGF1dG8gbmV3RGlj
dGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIGF1
dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICAgICAgICAg
IG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAg
ICAgIG1fYXJyYXlTdGFjay5sYXN0KCktPmFwcGVuZChXVEZNb3ZlKG5ld0RpY3Rpb25hcnkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggMmY4NDEwNDc0NjM5NTU4ZjI5
NWU4MWE1MTcxOWE4NzM0YjMyZDU4YS4uMjFjYzFlYmU0YTkwMWExM2M3NDQwM2RjMDFjZjJmYzgx
ODEzMDEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNv
ZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmlj
PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2RlckdlbmVyaWM+KCk7CiB9CiAK
IHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmlt
YXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxB
bmltYXRvckdlbmVyaWMuY3BwCmluZGV4IDdhZTY1YzVhOGQzMDllM2RlZWY1M2NlOGNmMWUzMDI0
MjZkMjdjMTQuLjIwOGFmN2I4NDc5ZWNhZWY1NTMwY2NjNTU3YjczNmViYWJjYmNiOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBz
Y3JvbGxDYXB0dXJlVGhyZXNob2xkIHsgMTUwX21zIH07CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5p
bWF0b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
ICAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9vdmVybGF5U2Ny
b2xsYmFyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRvckdlbmVyaWM6Om92ZXJs
YXlTY3JvbGxiYXJBbmltYXRpb25UaW1lckZpcmVkKQogewotICAgIG1fa2luZXRpY0FuaW1hdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9zY3JvbGxhYmxl
QXJlYSwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAgIG1fa2luZXRpY0FuaW1h
dGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9zY3JvbGxhYmxlQXJl
YSwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogI2lmIEVOQUJMRShTTU9PVEhfU0NS
T0xMSU5HKQogICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgICAgICBtX3Nt
b290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKQEAgLTczLDcgKzcz
LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3VyZVNtb290aFNjcm9sbGluZ0Fu
aW1hdGlvbigpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0aW9u
U21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZsb2F0
UG9pbnQmJiBwb3NpdGlvbikgeworICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxT
Y3JvbGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBvc2l0aW9u
LCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAgICAgICAgIHVwZGF0ZVBvc2l0aW9u
KFdURk1vdmUocG9zaXRpb24pKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCmluZGV4IGU3ZGQxOTE0MDQxNzE5Njhm
OTBkNmZlYTMzNTRlMTRjZWY2ZjU1NjcuLjM2MWU5ZGYzMjQ1YmU1NjViMGUyYTQxZGYxOGIyNmZm
YmM3MTljZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRE
ZWNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERl
Y29kZXJHbGliLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxLZXllZERlY29kZXJHbGliPihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxL
ZXllZERlY29kZXJHbGliPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyR2xpYjo6S2V5
ZWREZWNvZGVyR2xpYihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDc0
MDRiY2JkNDQ5YWE0OTIxYjhjZTJiN2UwMTg0NDk1MDEwNmY2ODAuLjcwZDI0YzExOTNmOGU1Yzcw
ZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6
ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2xp
Yj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJHbGliPigpOwogfQogCiBL
ZXllZEVuY29kZXJHbGliOjpLZXllZEVuY29kZXJHbGliKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBhMjNlMjE5ZDFhNjg2ZGE3
MzBjMDExYmUwZDEyNDljY2UwYmE0NWNkLi5lZmNjYzVjNmY3OWE1YTlhMmVlNDc3MGJmNWNjOTk0
Zjg0MmI5NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2xlYXJU
aW1lcigpCiB2b2lkIEJpdG1hcEltYWdlOjpzdGFydFRpbWVyKFNlY29uZHMgZGVsYXkpCiB7CiAg
ICAgQVNTRVJUKCFtX2ZyYW1lVGltZXIpOwotICAgIG1fZnJhbWVUaW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGltZXI+KCp0aGlzLCAmQml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOworICAg
IG1fZnJhbWVUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmQml0bWFwSW1hZ2U6OmFk
dmFuY2VBbmltYXRpb24pOwogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsK
IH0KIApAQCAtNTIwLDcgKzUyMCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9u
KCkKIHZvaWQgQml0bWFwSW1hZ2U6OmRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIW1fZGVjb2RpbmdDYWxsYmFja3MpCi0gICAgICAgIG1fZGVjb2Rp
bmdDYWxsYmFja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAx
Pj4oKTsKKyAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZ1
bmN0aW9uPHZvaWQoKT4sIDE+PigpOwogCiAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcy0+YXBwZW5k
KFdURk1vdmUoY2FsbGJhY2spKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMGQzNTU2MTg5
NzBmYjI3N2Y3MmU3ODk5MGUzZjRmMmEyMTZmYmM2OS4uMzUzZmNhNjYwMTMyNjRiMDI0NjJhNTcx
MjI0ZDA1YTE4MWQ5Njg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IGNsYXNzIFRleHRMYXlvdXQgewogICAgIFRleHRMYXlvdXQoUmVuZGVyVGV4dCYgdGV4dCwgY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHhQb3MpCiAgICAgICAgIDogbV9mb250KGZvbnQp
CiAgICAgICAgICwgbV9ydW4oY29uc3RydWN0VGV4dFJ1bih0ZXh0LCB4UG9zKSkKLSAgICAgICAg
LCBtX2NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4VGV4dENvbnRyb2xsZXI+KG1f
Zm9udCwgbV9ydW4sIHRydWUpKQorICAgICAgICAsIG1fY29udHJvbGxlcihtYWtlVW5pcXVlPENv
bXBsZXhUZXh0Q29udHJvbGxlcj4obV9mb250LCBtX3J1biwgdHJ1ZSkpCiAgICAgewogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2lu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCmluZGV4
IDcyMDQ1M2Q5ZjA0NmQ3OWY0OGEwOWI4MWFmNzAwMGY0ZGUzYmUwMjUuLmNlZmQ4ZDQyMjQ0ZDA2
ZmNiODI0YmU1ZTNiNzM0MTljZDQ5OGE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvaW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSW50UG9pbnQ7
CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBGbG9hdFBvaW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGbG9hdFBvaW50KCkgeyB9CiAgICAgRmxvYXRQb2lu
dChmbG9hdCB4LCBmbG9hdCB5KSA6IG1feCh4KSwgbV95KHkpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAxODRiNDRiMDdhNDEyMjE2YjllYzU5ODQy
MmYwNzg3ZjBlNmM3YWViLi5lMGI0OWYyNDdjMjAwOWJkZDVmMWQwYzhlYmE3YWQ2YzdlYjhjYmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtMzk0LDcg
KzM5NCw3IEBAIEdseXBoRGF0YSBGb250OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBj
aGFyYWN0ZXIpIGNvbnN0CiBhdXRvIEZvbnQ6OmVuc3VyZURlcml2ZWRGb250RGF0YSgpIGNvbnN0
IC0+IERlcml2ZWRGb250cyYKIHsKICAgICBpZiAoIW1fZGVyaXZlZEZvbnREYXRhKQotICAgICAg
ICBtX2Rlcml2ZWRGb250RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZEZvbnRzPigpOwor
ICAgICAgICBtX2Rlcml2ZWRGb250RGF0YSA9IG1ha2VVbmlxdWU8RGVyaXZlZEZvbnRzPigpOwog
ICAgIHJldHVybiAqbV9kZXJpdmVkRm9udERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaAppbmRleCAyZTU4YmQ2OWViYjUzOTFlMDM2ZDI4YzI3MDJjMWY0NTA1
MDhiMzEyLi5lZjYwNTIyMDE5NzA4ZWYxNWYwODI5ZmE3ZDljNTY5ODE1MmM5NmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0zNDUsNyArMzQ1LDcgQEAgQUxX
QVlTX0lOTElORSBGbG9hdFJlY3QgRm9udDo6Ym91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNv
bnN0CiAKICAgICBib3VuZHMgPSBwbGF0Zm9ybUJvdW5kc0ZvckdseXBoKGdseXBoKTsKICAgICBp
ZiAoIW1fZ2x5cGhUb0JvdW5kc01hcCkKLSAgICAgICAgbV9nbHlwaFRvQm91bmRzTWFwID0gc3Rk
OjptYWtlX3VuaXF1ZTxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4oKTsKKyAgICAgICAgbV9n
bHlwaFRvQm91bmRzTWFwID0gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4o
KTsKICAgICBtX2dseXBoVG9Cb3VuZHNNYXAtPnNldE1ldHJpY3NGb3JHbHlwaChnbHlwaCwgYm91
bmRzKTsKICAgICByZXR1cm4gYm91bmRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMGE2MmEyNzViYzY5MmVmMzk5MTE0MGUwMjhm
NTgwMDQyMWQwYzcxMS4uMzcwOWI0MWViMmI3YmQwYmY3YjEwMmFjNWRiZWZlMmY3NzczYWYxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBA
IC0yNDQsNyArMjQ0LDcgQEAgRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRG
b250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KICAgICAgICAgICAgICAg
ICBpdCA9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgpLmZpbmQoa2V5KTsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoaXQgIT0gZm9udFBsYXRmb3JtRGF0YUNhY2hlKCkuZW5kKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkKLSAgICAgICAgICAg
ICAgICAgICAgaXQtPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigq
Zm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBp
dC0+dmFsdWUgPSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KCpmb250UGxhdGZvcm1EYXRh
Rm9yQWx0ZXJuYXRlTmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXgg
NzI3NGRiMGRiMzJiM2I0MWIzZTBlMWIxZWQwZmIyYWVhOGIzNmEzYi4uNjQ4MThmNGI1MTU1ZDQy
YmZhYzgxYjYxZjRiNWY5Y2RlYTU0NTJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyBS
ZWY8Rm9udENhc2NhZGVGb250cz4gcmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0IEZvbnRD
YXNjYWRlRGVzY3JpcHRpCiAgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LT5mb250cy5nZXQoKTsKIAogICAgIGF1dG8mIG5ld0VudHJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKLSAgICBuZXdFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udENhc2NhZGVDYWNo
ZUVudHJ5PihXVEZNb3ZlKGtleSksIEZvbnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZv
bnRTZWxlY3RvcikpKTsKKyAgICBuZXdFbnRyeSA9IG1ha2VVbmlxdWU8Rm9udENhc2NhZGVDYWNo
ZUVudHJ5PihXVEZNb3ZlKGtleSksIEZvbnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZv
bnRTZWxlY3RvcikpKTsKICAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gZ2x5cGhzID0gbmV3RW50
cnktPmZvbnRzLmdldCgpOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVucmVmZXJlbmNl
ZFBydW5lSW50ZXJ2YWwgPSA1MDsKQEAgLTMyNiw5ICszMjYsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0
UnVuKEdyYQogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q+IGRpc3BsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gZGlz
cGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKICAgICBH
cmFwaGljc0NvbnRleHQgcmVjb3JkaW5nQ29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNw
bGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxh
eUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4
dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwg
KmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zv
cm0oKSk7CiAgICAgfSk7CiAgICAgCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwg
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZUZvbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlRm9udHMuY3BwCmluZGV4IGRiNzQzMDJlOWRhYTRlYjUyYzBjZTA4MWZkNTYwNTI3OTU3OGZi
ZjQuLjEyYWM4MzdmY2QyNDY1ZjlmODFkZWIwNjg3YWE3NzZkNWVhMDY0NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3Bw
CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgRm9udENhc2NhZGVGb250czo6R2x5cGhQYWdlQ2FjaGVF
bnRyeTo6c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhCiB7CiAgICAgQVNTRVJU
KCFnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKS5nbHlwaCk7CiAgICAgaWYgKCFtX21p
eGVkRm9udCkgewotICAgICAgICBtX21peGVkRm9udCA9IHN0ZDo6bWFrZV91bmlxdWU8TWl4ZWRG
b250R2x5cGhQYWdlPihtX3NpbmdsZUZvbnQuZ2V0KCkpOworICAgICAgICBtX21peGVkRm9udCA9
IG1ha2VVbmlxdWU8TWl4ZWRGb250R2x5cGhQYWdlPihtX3NpbmdsZUZvbnQuZ2V0KCkpOwogICAg
ICAgICBtX3NpbmdsZUZvbnQgPSBudWxscHRyOwogICAgIH0KICAgICBtX21peGVkRm9udC0+c2V0
R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgZ2x5cGhEYXRhKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKaW5kZXggMjU5
ZTk3NTMzY2FlZGNmYzE0NWZmN2FiNDI4ZWExNjlmNjRiMTU5NC4uNzllMmY1Mzg4YzQ2ZTU4OTIz
MDE2MWM0NzQ1MjU0MTkyNDdlODJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKQEAgLTEzMCwxMCArMTMwLDEwIEBAIHRlbXBs
YXRlPGNsYXNzIFQ+IHR5cGVuYW1lIEdseXBoTWV0cmljc01hcDxUPjo6R2x5cGhNZXRyaWNzUGFn
ZSYgR2x5cGhNZXRyaWNzTWFwCiAgICAgfQogCiAgICAgaWYgKCFtX3BhZ2VzKQotICAgICAgICBt
X3BhZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPGludCwgc3RkOjp1bmlxdWVfcHRyPEds
eXBoTWV0cmljc1BhZ2U+Pj4oKTsKKyAgICAgICAgbV9wYWdlcyA9IG1ha2VVbmlxdWU8SGFzaE1h
cDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+KCk7CiAKICAgICBhdXRv
JiBwYWdlID0gbV9wYWdlcy0+ZW5zdXJlKHBhZ2VOdW1iZXIsIFtdIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4odW5rbm93bk1ldHJpY3MoKSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVua25vd25NZXRyaWNz
KCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4gKnBhZ2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmlu
ZGV4IGRkYzdjYWM4NTc4MTdiNzdlOTU0Mjg0NWIwNjk4OTc3OWQyYzY5NmIuLjNiYmIxMjU1OWI4
NzcxZTE2NjlhMmViNmIyMjIxNDIxZjYwOGMzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC01NTcsNiArNTU3LDcgQEAg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBib29sIHNob3VsZEluY2x1ZGVDaGlsZFdpbmRv
d3MoKSBjb25zdDsKIAogICAgIGNsYXNzIFdpbmRvd3NCaXRtYXAgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2luZG93c0Jp
dG1hcCk7CiAgICAgcHVibGljOgogICAgICAgICBXaW5kb3dzQml0bWFwKEhEQywgY29uc3QgSW50
U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCAxYjQyMjg2ZGRmNDY1YzBlMmIxMjRk
OGFmZGYwZjdjZDY0NzdjYmI3Li5lMzNmOGZiZTczODkyZTM0YjhkZWY4MzZkNDZmNWM3MGM3OWM2
MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmgKaW5kZXggMGJhZDRlNzA2MzQyMTk5ODY4OTQ0OTJkZmU2ZjYxZDMxNzg4MTlkMy4u
Yjg3MzE5NGVlMjQ2MDFmZTRlMDcxNDdhYTcxZWEzMDU4N2E4NGE0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApA
QCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0Nv
bnRleHRJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShHcmFwaGljc0NvbnRleHRJbXBsKTsKIHB1YmxpYzoKICAgICBHcmFwaGljc0Nv
bnRleHRJbXBsKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCA5NGFhYzFkZjgzNTZiZGIxMGRmN2Qw
ODZmYWNlMjZjMWUzNzE4MzI2Li42Y2QwMGMyNjU3MGQ5ZGIzYjlmYWE3ZTIwMjNhZjFhNWU3ZTYz
YTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgR3JhcGhpY3NMYXllcjo6c3VwcG9y
dHNDb250ZW50c1RpbGluZygpCiAjZW5kaWYKIAogLy8gU2luZ2xldG9uIGNsaWVudCB1c2VkIGZv
ciBsYXllcnMgb24gd2hpY2ggY2xlYXJDbGllbnQgaGFzIGJlZW4gY2FsbGVkLgotY2xhc3MgRW1w
dHlHcmFwaGljc0xheWVyQ2xpZW50IDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgeworY2xh
c3MgRW1wdHlHcmFwaGljc0xheWVyQ2xpZW50IGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJD
bGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBFbXB0eUdyYXBoaWNzTGF5ZXJDbGllbnQmIHNpbmdsZXRvbigpOwpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgpCiAgICAgaWYgKG1fdHJhbnNmb3JtKQogICAgICAgICAqbV90cmFuc2Zv
cm0gPSBtYXRyaXg7CiAgICAgZWxzZQotICAgICAgICBtX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CisgICAgICAgIG1fdHJhbnNmb3Jt
ID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKIH0KIAogY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIEdyYXBoaWNzTGF5ZXI6OmNoaWxkcmVuVHJhbnNmb3JtKCkg
Y29uc3QKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVu
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAgICAgaWYgKG1f
Y2hpbGRyZW5UcmFuc2Zvcm0pCiAgICAgICAgICptX2NoaWxkcmVuVHJhbnNmb3JtID0gbWF0cml4
OwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJlblRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CisgICAgICAgIG1fY2hpbGRyZW5UcmFu
c2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJiBs
YXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaAppbmRleCAwMDlkNDg2ODk1ZDU2ODYyNTQwMTFkZjU2MDBhNzIxMTI0MzBlNjJmLi43YTFm
ZWFhYzc5ZTc4YmE4OGZjYWRjYjg1ZTMyOTlmZDc5YTAwNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0xMTEsNyArMTExLDcg
QEAgY2xhc3MgRmxvYXRBbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25W
YWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQpAQCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZh
bHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmlt
YXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAg
ICB9CiAKICAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShjb25zdCBUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZSYgb3RoZXIpCkBAIC0xNjMsNyArMTYzLDcgQEAgY2xhc3MgRmlsdGVyQW5pbWF0aW9u
VmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFu
aW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0K
IAogICAgIEZpbHRlckFuaW1hdGlvblZhbHVlKGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBv
dGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBl
NDRhNjFlMjI0Y2ExMTk0ZDA5MThkNDQ0M2JlYTdjMWU3ZTRhMGUxLi5jMjFmZTI5ZDBmMDVmZGRl
MzllMGM0YmY0YjYxYTFjOTc2Y2NiMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBJbWFnZTo6Y29tcHV0ZUlu
dHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5z
aWMKIHZvaWQgSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5bmNocm9ub3VzbHkoKQogewogICAgIGlm
ICghbV9hbmltYXRpb25TdGFydFRpbWVyKQotICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJkltYWdlOjpzdGFydEFuaW1hdGlvbik7
CisgICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlz
LCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKTsKICAgICBpZiAobV9hbmltYXRpb25TdGFydFRpbWVy
LT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9hbmltYXRpb25TdGFydFRpbWVy
LT5zdGFydE9uZVNob3QoMF9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAppbmRleCBiZTc2NzYwZjhlMzU2NWQ0MjY3MmIwMDVh
OTZkY2RiN2ZhNGIyZDY5Li4yNWU3OWE2ZGMwYTViMjE5M2E3MmEyMjdhYWNhMTc3M2E3ZTNjMjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1T
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RN
U2Vzc2lvbi5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IExlZ2FjeUNETVNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7
CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGlu
YXRpb25VUkwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcAppbmRleCA3NTdmMDk1NjdkYzVkZmRmNWJlMDI2Mzk2MzlkMWVmZWM3MThj
MGRiLi5hYmU4Njk0MTk0ZmY3YzE3NTEwMGI2OTg4MDRhMTI0MGJkNjJjODRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xNDgs
NyArMTQ4LDcgQEAgY2xhc3MgTnVsbE1lZGlhUGxheWVyUHJpdmF0ZSBmaW5hbCA6IHB1YmxpYyBN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogCiAgICAgZmxvYXQgbWF4VGltZVNlZWthYmxl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH0KIAogICAgIGRvdWJsZSBzZWVrYWJsZVRpbWVSYW5nZXNM
YXN0TW9kaWZpZWRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBs
aXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBAIC0zNTUsNyAr
MzU1LDcgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVy
Q2xpZW50JiBjbGllbnQpCiBNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGll
bnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX3JlbG9hZFRpbWVy
KCp0aGlzLCAmTWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQpCi0gICAgLCBtX3ByaXZhdGUo
c3RkOjptYWtlX3VuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1f
cHJpdmF0ZShtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQogewogfQog
CkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFF
bmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogI2VuZGlmCiAgICAgICAg
IG1fcHJpdmF0ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
bV9wcml2YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlz
KTsKKyAgICAgICAgbV9wcml2YXRlID0gbWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRl
Pih0aGlzKTsKICAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKHRoaXMp
OwogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKHRoaXMp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMDBkODVhNDk5NjQyYjNmNTIzN2IzMGJmZjVmNGU2YjQy
OTEzMGVjZC4uMWQyZmMwMDkyMDRhOGMwMjU1NDFiMmEyZDdjNWYwZDBiZTVjOTljZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2UgewogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0
YXRlKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heE1lZGlhVGltZVNlZWthYmxl
KCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpID8gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVk
aWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7IH0KKyAgICB2aXJ0dWFs
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2FibGUoKSA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkgPyBt
YWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsg
fQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsg
fQogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QgeyBy
ZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1heFRpbWVTZWVrYWJsZSgpKTsgfQog
ICAgIHZpcnR1YWwgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5j
cHAKaW5kZXggM2U2ODgwNTViZGNjMGIxMGU0MTYwY2YxNDBkNGZhY2U5MjMyMGE2NS4uNWFkOTMz
NDliZmI0MGRhNGZmMzA4YWRhOTg0OTdmYzM3NWUxMDhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgRmxvYXRQb2ludEdyYXBoOjpOb2RlKiBGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5v
ZGUoRmxvYXRQb2ludCBwb2ludCkKICAgICAgICAgICAgIHJldHVybiB0ZXN0Tm9kZS5nZXQoKTsK
ICAgICB9CiAKLSAgICBtX2FsbE5vZGVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UG9p
bnRHcmFwaDo6Tm9kZT4ocG9pbnQpKTsKKyAgICBtX2FsbE5vZGVzLmFwcGVuZChtYWtlVW5pcXVl
PEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4ocG9pbnQpKTsKICAgICByZXR1cm4gbV9hbGxOb2Rlcy5s
YXN0KCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdp
b24uY3BwCmluZGV4IDlkY2VlODc2MTYyNWMwMTQ4OGI0ZDkwZDFhZjIyZTM1NDM1ZDRhNWUuLjZh
NzAxYzFhMTI4OTc5ZDRjOTQ4YjFhN2JhYjU2OGYxMDI0N2NmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcApAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQg
UmVnaW9uOjpzZXRTaGFwZShTaGFwZSYmIHNoYXBlKQogICAgIH0KIAogICAgIGlmICghbV9zaGFw
ZSkKLSAgICAgICAgbV9zaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+KFdURk1vdmUoc2hh
cGUpKTsKKyAgICAgICAgbV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hhcGU+KFdURk1vdmUoc2hhcGUp
KTsKICAgICBlbHNlCiAgICAgICAgICptX3NoYXBlID0gV1RGTW92ZShzaGFwZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCmluZGV4IDc5NjMzZmRiNmFkZjM0
ZmZmZWU4ZjgyNjc0ODNiOGNmZjVjZTFmM2MuLmJjMzljMzAwMDBlYThiNmI1YTllNjBjZjJiYzVh
ZTE4NjY2NGI2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5o
CkBAIC05MSw2ICs5MSw3IEBAIGNsYXNzIFJlZ2lvbiB7CiAgICAgfTsKIAogICAgIGNsYXNzIFNo
YXBlIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAg
ICAgICBTaGFwZSgpID0gZGVmYXVsdDsKICAgICAgICAgU2hhcGUoY29uc3QgSW50UmVjdCYpOwpA
QCAtMTQ4LDcgKzE0OSw3IEBAIGNsYXNzIFJlZ2lvbiB7CiAgICAgICAgIGZyaWVuZCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2hhcGUmLCBjb25zdCBTaGFwZSYpOwogICAgIH07CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2hhcGU+IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBz
dGQ6Om1ha2VfdW5pcXVlPFNoYXBlPigqbV9zaGFwZSkgOiBudWxscHRyOyB9CisgICAgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBjb3B5U2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlID8gbWFr
ZVVuaXF1ZTxTaGFwZT4oKm1fc2hhcGUpIDogbnVsbHB0cjsgfQogICAgIHZvaWQgc2V0U2hhcGUo
U2hhcGUmJik7CiAKICAgICBJbnRSZWN0IG1fYm91bmRzOwpAQCAtMjg5LDcgKzI5MCw3IEBAIE9w
dGlvbmFsPFJlZ2lvbj4gUmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
ZGVjb2RlciA+PiBzaGFwZTsKICAgICAgICAgaWYgKCFzaGFwZSkKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJlZ2lvbi5tX3NoYXBlID0gc3RkOjptYWtlX3VuaXF1
ZTxTaGFwZT4oV1RGTW92ZSgqc2hhcGUpKTsKKyAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBtYWtl
VW5pcXVlPFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOwogICAgIH0KIAogICAgIHJldHVybiB7IHJl
Z2lvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCmluZGV4IDFlNGU3ZmFjMzZjN2MzMGE2NTZm
MWVmZDAwYWFjZTZkNGM5NWNlZGEuLjY5MzlmOTE3YWU2ZmFiMTNlYzFjOTFkNGFhODE1NTY2YTkx
NzBkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRU
cmFja1JlcHJlc2VudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uIDogcHVibGljIFRleHRUcmFja1JlcHJlc2VudGF0
aW9uIHsKIAogc3RkOjp1bmlxdWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JikK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9u
PigpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZlbG9jaXR5RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmVsb2NpdHlEYXRhLmgKaW5kZXggN2FlYjc1OWIzNGIxOGExZTg0NjgzZjI5YzYxNmE2Y2RiMDI1
NzRkOC4uNmEwNmNjNmViYTM0Yjk1OWQyZjE4NjAyMjllMWYyZjM4ZmYzMTkzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKQEAgLTY1LDYg
KzY1LDcgQEAgc3RydWN0IFZlbG9jaXR5RGF0YSAgewogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVmVsb2NpdHlEYXRhJik7CiAKIGNsYXNz
IEhpc3RvcmljYWxWZWxvY2l0eURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEhpc3RvcmljYWxWZWxvY2l0eURhdGEoKSA9IGRlZmF1bHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dDNEQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAKaW5kZXggNzdhM2UxOGMxYzZjMmUyN2RkNjNhZTI5
NmY2ZWM5YTFlYTJmYWUxZi4uNjEyNjBlOWM4M2RjNGE1NTI4NTcxYzk5ZDRhMjcwNWIxNmNhNGUw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0M0RBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAKQEAgLTM2Miw3ICszNjIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBF
eHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBp
ZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1
ZTxFeHRlbnNpb25zM0RBTkdMRT4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAg
bV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RBTkdMRT4odGhpcywgaXNHTEVT
MkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKaW5kZXggYTllY2QzMjEzNmRh
ODc3MDJmNDc4YWZjZDhhY2M4ZWI5N2MyMzk0MC4uOTlkZGRkOGY4NTAyNzMwM2JiOGE3NjNlY2Fj
MmI4Njk4ODJmYTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbC5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1l
ZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzsKIAogY2xhc3MgQVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbChBVlBsYXllckl0ZW1UcmFjayopOwogICAgIGV4
cGxpY2l0IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwoQVZBc3NldFRyYWNrKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggNWNkNzc3
MmFjMmVlMWNlYTkwMTBlODMzNzFlYTZhYWVmN2YwNjk1OC4uNmIzYzkyMmU2YWViZTU5MjBhZTY1
ZTU3YWYwNWVkZTRhZDAzNzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtMzEzLDEyICszMTMsMTIgQEAgdm9pZCBBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1
ZGlvU3RyZWEKIHsKICAgICBBU1NFUlQobWF4RnJhbWVzID49IDApOwogCi0gICAgbV90YXBEZXNj
cmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigq
cHJvY2Vzc2luZ0Zvcm1hdCk7CisgICAgbV90YXBEZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3Np
bmdGb3JtYXQpOwogICAgIGludCBudW1iZXJPZkNoYW5uZWxzID0gcHJvY2Vzc2luZ0Zvcm1hdC0+
bUNoYW5uZWxzUGVyRnJhbWU7CiAgICAgZG91YmxlIHNhbXBsZVJhdGUgPSBwcm9jZXNzaW5nRm9y
bWF0LT5tU2FtcGxlUmF0ZTsKICAgICBBU1NFUlQoc2FtcGxlUmF0ZSA+PSAwKTsKIAotICAgIG1f
b3V0cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbj4oKTsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOwogICAgIG1fb3V0
cHV0RGVzY3JpcHRpb24tPm1TYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICBtX291dHB1dERl
c2NyaXB0aW9uLT5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CiAgICAgbV9vdXRw
dXREZXNjcmlwdGlvbi0+bUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9h
dFBhY2tlZDsKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcmVwYXJlKENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogICAg
IC8vIE1ha2UgdGhlIHJpbmdidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIHN0b3JlIGF0IGxlYXN0IHR3
byBjYWxsYmFja3Mgd29ydGggb2YgYXVkaW8sIG9yIDFzLCB3aGljaGV2ZXIgaXMgbGFyZ2VyLgog
ICAgIHNpemVfdCBjYXBhY2l0eSA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHNpemVfdD4oMiAqIG1h
eEZyYW1lcyksIHN0YXRpY19jYXN0PHNpemVfdD4oa1JpbmdCdWZmZXJEdXJhdGlvbiAqIHNhbXBs
ZVJhdGUpKTsKIAotICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVm
ZmVyPigpOworICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwog
ICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKCpwcm9j
ZXNzaW5nRm9ybWF0KSwgY2FwYWNpdHkpOwogCiAgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEg
dmFyaWFibGUtbGVuZ3RoIHN0cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5l
cmljIG5ldygpIG9wZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcAppbmRleCAzNjFhOTkyZjBjNDY1MGNmMmI5NjI4YTY0MmU5N2I1ZGJhMGUyYTNjLi40ZmM2
Nzg3ZGQ4ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0o
Y29uc3QgU3RyaW5nJgogICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nPigpOwogfQogCiBib29sIENETUZhY3RvcnlGYWlyUGxheVN0
cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IDg5MThlODBlMGMzOTBkN2U4
ZGFjYTE5MDM5NDc5YTBkMGY2OTVhZDguLjUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1
NTFlMjhiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC0z
NSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBGb3VyQ0M7CiAKIGNsYXNz
IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ0RNRmFj
dG9yeUZhaXJQbGF5U3RyZWFtaW5nJiBzaW5nbGV0b24oKTsKIApAQCAtNDksNiArNTAsNyBAQCBj
bGFzcyBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9y
eSB7CiB9OwogCiBjbGFzcyBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJs
aWMgQ0RNUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCA0YTUwZWI0MWE1ODM2ODNmNjZhNjc2MjI5NTQ2YzU4
MDFiMjBiNTg4Li5kODFiY2EzNTQ5MDM5MThhMWJkYTBhZGRkOTU4ZDU5NDNmNzAxYjE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAg
LTM3LDYgKzM3LDcgQEAgY2xhc3MgTGVnYWN5Q0RNOwogY2xhc3MgQ0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQzsKIAogY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyA6IHB1Ymxp
YyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKExlZ2FjeUNE
TSogY2RtKQogICAgICAgICA6IG1fY2RtKGNkbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMmNjMDhhOWEzYjUxY2JmN2FiMTk3
NDIwMmE5OGIxNjlkYjQzYzEwMS4uMGNkMDEyOWEzY2Q5ZWFmODYzYWQ0Nzg5ODM4NTAzMWQ4Yjc2
ZWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KQEAgLTE0NywxMCArMTQ3LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1T
ZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKExlCiAj
ZW5kaWYKICAgICAKICAgICBpZiAoc2hvdWxkVXNlQVZDb250ZW50S2V5U2Vzc2lvbiAmJiBDRE1T
ZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFibGUoKSkKLSAgICAgICAgc2Vzc2lv
biA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24+KFdURk1v
dmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyksIHBhcmFtZXRlcnMudmFsdWUoKS52ZXJz
aW9uLCAqdGhpcywgY2xpZW50KTsKKyAgICAgICAgc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vz
c2lvbkFWQ29udGVudEtleVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3Rv
Y29scyksIHBhcmFtZXRlcnMudmFsdWUoKS52ZXJzaW9uLCAqdGhpcywgY2xpZW50KTsKICAgICBl
bHNlCiAjaWYgSEFWRShBVlNUUkVBTVNFU1NJT04pCi0gICAgICAgIHNlc3Npb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPENETVNlc3Npb25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52
YWx1ZSgpLnByb3RvY29scyksICp0aGlzLCBjbGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFr
ZVVuaXF1ZTxDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFs
dWUoKS5wcm90b2NvbHMpLCAqdGhpcywgY2xpZW50KTsKICNlbHNlCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1p
bmdQc3NoQm94LmgKaW5kZXggZTQ2MDE0ODMwNWNlZWQxYjU2NDg0MTk5NmNiOWZjMzRjZGMzYWI1
Mi4uMTQ3YzM3OWYxMjcwNjgyZTU1ZmQyMTVjZTIzYTM5ZWExMjQ5NWFmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaApAQCAtMzAsNyArMzAs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nSW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09G
dWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gImZwc2kiOyB9CiAKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggewogICAgIEZvdXJD
QyBtX3NjaGVtZTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVxdWVzdEluZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IGZpbmFsIDogcHVi
bGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUo
KSB7IHJldHVybiAiZmtyaSI7IH0KIApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IDogcHVibGljIElTT0Z1
bGxCb3ggewogICAgIEtleUlEIG1fa2V5SUQ7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCBmaW5hbCA6
IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUo
KSB7IHJldHVybiAiZmthaSI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggOiBwdWJsaWMgSVNPQm94IHsK
ICAgICBWZWN0b3I8dWludDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggZmluYWwg
OiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1l
KCkgeyByZXR1cm4gImZrY3giOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IDogcHVibGljIElTT0JveCB7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RC
b3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJv
eFR5cGVOYW1lKCkgeyByZXR1cm4gImZrdmwiOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
IHZlcnNpb25zKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uczsgfQpAQCAtODgsNyArODgsNyBA
QCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0
Qm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fdmVyc2lvbnM7CiB9
OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RC
b3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nS2V5UmVxdWVzdEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAg
IHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzayI7IH0KIApAQCAtMTA2
LDcgKzEwNiw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVxdWVzdEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIE9wdGlvbmFsPElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g+IG1fdmVyc2lvbkxpc3Q7CiB9OwogCi1jbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IDogcHVibGljIElTT0Jv
eCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94
IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hU
eXBlTmFtZSgpIHsgcmV0dXJuICJmcHNkIjsgfQogCkBAIC0xMjAsNyArMTIwLDcgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCA6IHB1YmxpYyBJ
U09Cb3ggewogICAgIFZlY3RvcjxJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3g+IG1f
cmVxdWVzdHM7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWlu
Z1Bzc2hCb3ggOiBwdWJsaWMgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94IHsK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCBmaW5hbCA6
IHB1YmxpYyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8dWludDhfdD4mIGZhaXJQbGF5U3lzdGVtSUQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcAppbmRleCA4NTdmMzFmMjc3MmY0MDgxZmJhNjM4ZjgxMGMxMTQ5NDI4NThiOTRiLi41OWNm
OGJhMjEzMTZiMzA3YzA1MDIzZWQ1NmQ5YjM5ZDI1NjE3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMzg0LDcg
KzM4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6YnVmZmVyZWQoKSBjCiAgICAgaWYgKCFtX2NhY2hlZExvYWRl
ZFRpbWVSYW5nZXMpCiAgICAgICAgIG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyA9IHBsYXRmb3Jt
QnVmZmVyZWRUaW1lUmFuZ2VzKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7
CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Om1heE1lZGlh
VGltZVNlZWthYmxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjLmNwcAppbmRleCAzOTVjZTc4MmU4YzU4MDQ1OTYxNjI0Njk4MGYzM2VhZGYw
M2I3OGIyLi41ZjViNmY2OTUyYjQ5M2E5ODg3YmFmYzdmMzBiN2JlZTczMzQxNWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVk
aWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6On5XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyTWFjKCkgPSBkZWZhdWx0OwogV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1QaWNrZXIoKQogewogICAgIGlmICgh
bV90YXJnZXRQaWNrZXIpCi0gICAgICAgIG1fdGFyZ2V0UGlja2VyID0gc3RkOjptYWtlX3VuaXF1
ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjPigqdGhpcyk7CisgICAgICAgIG1fdGFyZ2V0
UGlja2VyID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjPigqdGhpcyk7
CiAKICAgICByZXR1cm4gKm1fdGFyZ2V0UGlja2VyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAK
aW5kZXggYWYwYTdjYzc3YmYyOTJjZGZkNjZhYmM2ZTdmNjNhNTA5MDBhYWQ2Ny4uNWE1MThjNTE1
MWQwNWMzZWY1YjA5NDJjNDJlM2IyNDAyMDM2MGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0z
NDMsNyArMzQzLDcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdh
dGVRdWV1ZSgpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAo
aXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIp
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0Y+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihw
bGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwg
MCwgMCwgMCwgc3VwcG9ydHNLZXlTeXN0ZW0pOwogfQogCkBAIC02NzIsNyArNjcyLDcgQEAgc3Rh
dGljIGJvb2wgdGltZVJhbmdlSXNWYWxpZEFuZE5vdEVtcHR5KENNVGltZSBzdGFydCwgQ01UaW1l
IGR1cmF0aW9uKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBj
b25zdAogewotICAgIGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOwogCiAgICAgaWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkKICAg
ICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CkBAIC0xMTM3LDcgKzExMzcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OmNyZWF0ZVNlc3NpbwogICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CiAKICNl
bGlmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQpAQCAtMTcwOCw3ICsxNzA4LDcgQEAg
dm9pZCBBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRl
clJlZiwgdm9pZCogb2JzZXJ2ZXIsIEMKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpub3Rp
ZmljYXRpb25DYWxsYmFjayhpZj0lZCkgJXMiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
b2JzZXJ2ZXIpLCBub3RpZmljYXRpb25OYW1lKTsKICNlbmRpZgogCi0gICAgYXV0byBub3RpZmlj
YXRpb25EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHBy
b3BlcnR5TmFtZSwgb2JzZXJ2ZXIpOworICAgIGF1dG8gbm90aWZpY2F0aW9uRGF0YSA9IG1ha2VV
bmlxdWU8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsK
IAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbm90aWZp
Y2F0aW9uRGF0YS5yZWxlYXNlKCksIHByb2Nlc3NOb3RpZmljYXRpb24pOwogfQpAQCAtMTgzMyw3
ICsxODMzLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCog
Y29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHUKIAogICAgIEFTU0VSVChsZWdpYmxl
T3V0cHV0ID09IHNlbGYtPm1fbGVnaWJsZU91dHB1dCk7CiAKLSAgICBhdXRvIGxlZ2libGVPdXRw
dXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0
cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBj
b250ZXh0KTsKKyAgICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gbWFrZVVuaXF1ZTxMZWdpYmxl
T3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6
dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2Yo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbGVnaWJsZU91dHB1dERhdGEucmVsZWFzZSgpLCBw
cm9jZXNzQ3VlKTsKIH0KQEAgLTE5MjYsNyArMTkyNiw3IEBAIEJvb2xlYW4gQVZGV3JhcHBlcjo6
cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZD
RkFzCiAKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdh
aXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSglcCkiLCBzZWxmKTsKIAotICAgIGF1dG8g
bG9hZFJlcXVlc3REYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRp
bmdSZXF1ZXN0LCBjb250ZXh0KTsKKyAgICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IG1ha2VVbmlx
dWU8TG9hZFJlcXVlc3REYXRhPihsb2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CiAKICAgICBkaXNw
YXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGxvYWRSZXF1ZXN0RGF0YS5y
ZWxlYXNlKCksIHByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOwogCkBAIC0x
OTUzLDcgKzE5NTMsNyBAQCBQbGF0Zm9ybUxheWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVy
KCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBDcmVhdGUgYSBQbGF0Zm9ybUNBTGF5ZXIg
c28gd2UgY2FuIHJlc2l6ZSB0aGUgdmlkZW8gbGF5ZXIgdG8gbWF0Y2ggdGhlIGVsZW1lbnQgc2l6
ZS4KLSAgICBtX2xheWVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhp
cyk7CisgICAgbV9sYXllckNsaWVudCA9IG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOwog
ICAgIGlmICghbV9sYXllckNsaWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlv
VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMTRh
ZjFhMjdmMjZiZDFhZDYwMjg2MDRhNTc1MmYwZGY5YThkZjUyLi43ZGUxNGMyNTcxZjdkMzhlZWNi
YjM0OGZkYTNjNzRhNDNkZWI4MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCkBAIC0zMywxMyArMzMsMTMgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFr
ZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBs
KG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9w
dGlvbikKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KG9wdGlvbikpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPihvcHRpb24pKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwog
fQpAQCAtNTksNyArNTksNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQ
cm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNl
dFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBs
ID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7Cisg
ICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7
CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTY5LDE0ICs2OSwxNCBA
QCBBVlBsYXllckl0ZW1UcmFjayogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVt
VHJhY2soKQogfQogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VV
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogfQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6
c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1w
bCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC04Nyw3ICs4Nyw3IEBAIEFWQXNzZXRU
cmFjayogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjphc3NldFRyYWNrKCkKIAogdm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKE1lZGlhU2VsZWN0
aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtl
VW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9w
ZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBl
YzBkMGVkZGJmNzNiZWVkYTY3MTdiN2E1MThjNzMyMTI2MDk1YWUyLi5kZjUyMjZhNGVhMDM2ZTU2
ZmEyNTM5YTYyNzYyYTIzOGFlNzBlMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBA
IC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhB
VkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQot
ICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
dHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bD4odHJhY2spKQogICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJlc2V0UHJvcGVydGll
c0Zyb21UcmFjaygpOwpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFj
ayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5oCmluZGV4IDIyYWFmZWM3YjgzNDI3YjgxMzBhN2MwNDNmOGY2NzIwODM0Y2NhNDcu
LjVkOGUyNTA3NDcwYmM3YTQ5OTk1NWM5ODFiMTc2ZmY0NDRmYmM2ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaApAQCAtMzks
NyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM7CiAKLWNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIDog
cHVibGljIExlZ2FjeUNETVNlc3Npb24sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQz4geworY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgZmlu
YWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAg
dmlydHVhbCB+Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDJmZTI1MjQ5OTRjM2IxOTQ0NTll
YzMzMzAyOWFiZDllOTg1Yzc1YjQuLmJiMDc3NzYxMzgyYzg4MDgwN2JhNTNjOGRhZGIyOTQ1NmU1
NmViNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNr
TWV0YWRhdGEoKQogICAgICAgICB8fCAhbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3Jt
KCkKICAgICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkudmFsdWUo
KSAhPSBmaW5hbFRyYW5zZm9ybQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5z
aXplKCkgIT0gc2l6ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSks
IHNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6
OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CisgICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Np
b24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFu
c2Zvcm0pLCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwogCiAgICAgbV9zaXplID0gZXhwYW5k
ZWRJbnRTaXplKG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJvdGF0ZWRTaXplKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggYzY1OTBiZGVlNjdiNGUyMDk4ODhlOTZhMmMzMzBmMmZl
MjMzODY5Ny4uODQ5OTA0YWNmOTI5YzdjZmUzZjk0YmM0MTBlMGQwYjJlOGIxYjQ0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmEKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCisgICAgcmVn
aXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdl
dFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFy
TWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0p
OwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFi
bGUoKSk7CiB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIAog
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uKHBsYXllcikKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkK
KyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0
eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQogICAgICwgbV9vYmpjT2Jz
ZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBs
YXllcjptYWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZh
bHNlKQpAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0
byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7Cisg
ICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAK
ICAgICBpZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAg
LTE4OTIsNyArMTg5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6dXBkYXRlUm90YXRpb25TZXNzaW9uKCkKICAgICAgICAgJiYgbV9pbWFnZVJvdGF0aW9uU2Vz
c2lvbi0+c2l6ZSgpID09IG5hdHVyYWxTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lt
YWdlUm90YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0
VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6
Olllcyk7CisgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3Rh
dGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQ
aXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VD
b21wYXRpYmxlOjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMjIxNiw3
ICsyMjE2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRh
dGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogI2Vsc2UKICAgICAgICAgTlNEaWN0aW9uYXJ5
ICphdHRyaWJ1dGVzID0gbmlsOwogI2VuZGlmCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3Jt
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBD
RkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3Jt
ZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CkBAIC0yMjY1LDcgKzIyNjUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHNpemVf
dCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgp
KTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0
dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRl
eHQpOworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0
dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGll
ci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdp
ZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KQEAgLTIz
MzAsNyArMjMzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzCiB7CiAgICAgaWYgKCFrZXlT
eXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBhdXRvIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDPih0aGlzLCBjbGllbnQpOworICAgIGF1dG8gc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVudCk7CiAgICAgbV9zZXNzaW9uID0gbWFr
ZVdlYWtQdHIoKnNlc3Npb24pOwogICAgIHJldHVybiBXVEZNb3ZlKHNlc3Npb24pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCA3Mzk2ZTViMWI0MzExOThlNWU2MGQ4ZmNkMDYzNTli
YjI3Y2Y0OWY3Li5hMWRkMGY5MDkxZmIyODY0NjhkYmUwYWUxMGNlOGIzYzE0MmMwYmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjY4LDYgKzI2OCw3IEBAIGNsYXNzIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQwogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDOwogCiAgICAgc3RydWN0IFBlbmRpbmdTZWVrIHsKKyAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nU2Vlayhjb25zdCBN
ZWRpYVRpbWUmIHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQs
IGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpCiAgICAgICAgICAgICA6IHRhcmdl
dFRpbWUodGFyZ2V0VGltZSkKICAgICAgICAgICAgICwgbmVnYXRpdmVUaHJlc2hvbGQobmVnYXRp
dmVUaHJlc2hvbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZjE5NTE1NmQ4Y2Yy
MjU2ZjYwZjlmNTUzMjQxMjllODUyM2Q5ZDM4Yi4uOWMwYWVmNjE5YWRjMmEzMThmMGRiN2QyZTM4
NjdjMjFkZmMzMWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTM3LDcgKzEz
Nyw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKE1lZGlhCiAgICAgLCBtX3BsYXlpbmcoMCkKICAgICAs
IG1fc2Vla2luZyhmYWxzZSkKICAgICAsIG1fbG9hZGluZ1Byb2dyZXNzZWQoZmFsc2UpCi0gICAg
LCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAg
ICAgLCBtX2VmZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXIoRWZmZWN0aXZlUmF0ZUNoYW5nZWRM
aXN0ZW5lcjo6Y3JlYXRlKCp0aGlzLCBbbV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJM
b2dnZXIoKSkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdAogICAg
IGlmICghaXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtd
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1F
VHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKIH0KQEAgLTQzNyw3ICs0Mzcs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhU
b2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiB0aQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJ0aW1lID0gIiwgdGltZSwgIiwgbmVnYXRpdmVUaHJlc2hvbGQgPSAiLCBuZWdhdGl2ZVRocmVz
aG9sZCwgIiwgcG9zaXRpdmVUaHJlc2hvbGQgPSAiLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAg
ICBtX3NlZWtpbmcgPSB0cnVlOwotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBlbmRpbmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRocmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQp
OworICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPih0aW1lLCBuZWdh
dGl2ZVRocmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgaWYgKG1fc2Vla1RpbWVy
LmlzQWN0aXZlKCkpCiAgICAgICAgIG1fc2Vla1RpbWVyLnN0b3AoKTsKQEAgLTU0Myw3ICs1NDMs
NyBAQCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnJlYWR5U3RhdGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWthYmxl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2Fi
bGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QK
QEAgLTU1OCw3ICs1NTgsNyBAQCBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjptaW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/
IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9t
ZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAKICAg
ICBpZiAoIW1fcmdiQ29uZm9ybWVyKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IEB7IChf
X2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtD
VlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH07Ci0gICAgICAgIG1fcmdiQ29uZm9ybWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9u
YXJ5UmVmKWF0dHJpYnV0ZXMpOworICAgICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1
dGVzKTsKICAgICB9CiAKICAgICBtX2xhc3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJ
bWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CkBAIC02NDksNyAr
NjQ5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmEKICAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQ
aXhlbEJ1ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBpZiAo
IW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0
ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAgICAg
bV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigq
Y29udGV4dCk7CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRv
UGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBv
dXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0
LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KaW5kZXggY2EzYjExMzU1MmIzODg1Yzk5OTc3ZGFlMmEyMWVhMTY1NzdlZGE4MC4uOWRl
ZWU0NmYyY2EyNDUyOTUzZGY1Y2E4OGJiNjlmODE4ZTdlNGU2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbQpAQCAtMTgzLDcgKzE4Myw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKE1lZGlhCiAg
ICAgOiBtX3BsYXllcihwbGF5ZXIpCiAgICAgLCBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyKGFkb3B0
TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0
aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2Nsb2NrKFBBTDo6Q2xvY2s6OmNyZWF0ZSgpKQotICAg
ICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBs
YXllckxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJM
b2dJZGVudGlmaWVyKCkpCkBAIC0yMjAsNyArMjIwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlh
RW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFp
bGFibGUoKSkKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
PihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAg
ICAgICAgIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiB9CiAKQEAgLTEwNTQsMTIgKzEwNTQs
MTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRy
YWNrcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdAogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YnVm
ZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNzMs
NyArMTA3Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9p
bWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1faW1hZ2VQYWludGVy
LnBpeGVsQnVmZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAq
KWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8z
MkJHUkEpIH0pOworICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9
IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlw
ZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIAogICAgIEFTU0VSVChtX2lt
YWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcik7CiAgICAgaWYgKCFtX2ltYWdlUGFpbnRl
ci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwCmluZGV4IGM4NzFjNTk0ODM1NTA4NTcxODJjN2Ey
NGQ1NTM0Yjg1YTVkNGVmN2UuLjI5NDgzYmE1ZTk4ZDk1ZmE4ZTVlYzlhNmExMGJmNjQxYWFlMzU1
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDLmNwcApAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVy
SXRlbVRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9t
VHJhY2soKTsKIH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtl
VW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFBy
b3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMoTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24p
Ci0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
PihvcHRpb24pKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4ob3B0aW9uKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAg
LTY2LDcgKzY2LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJlc2V0UHJvcGVy
dGllc0Zyb21UcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5
ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1f
aW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAg
IHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIEFWUGxh
eWVySXRlbVRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygp
CiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRU
cmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCk7CiB9CiAKQEAgLTg4LDcgKzg4LDcgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OmFzc2V0VHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6
c2V0TWVkaWFTZWxlY3Rvbk9wdGlvbihNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlv
bikKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KG9wdGlvbik7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPihvcHRpb24pOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGZjYzI0OTZhMTM1YWE0ZjczYThmZTU0OGQx
NGUwYzgwMDA0YWQxYjAuLjk3NTZjZmZhZmQ4YzNmNmZlM2I0N2EyMzMzNzFiNzRkZWM5OGQwNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VV
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJlbnQo
cGFyZW50KQogICAgICwgbV90cmFja0lEKC0xKQogICAgICwgbV9zZWxlY3RlZChmYWxzZSkKQEAg
LTU2LDcgKzU2LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAg
IG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJh
Y2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
dHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNw
cAppbmRleCAxNzFmMjc3MmM5NGE2OWNkYTczNDkzY2M5YzhjNzg3OGIwMDEwOGRkLi44NzY1MzQ0
NTIwMjRlNjE2NTE0MTdhMDRhMGQ5NDUwNThhOTU0MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE2
MzYsMTIgKzE2MzYsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENo
YW5nZXMoQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25zdCBUcmEKICAgICBpZiAodXNlc0Rp
c3BsYXlMaXN0RHJhd2luZygpICYmIG1fZHJhd3NDb250ZW50ICYmICghbV9oYXNFdmVyUGFpbnRl
ZCB8fCBoYWREaXJ0eVJlY3RzKSkgewogICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShE
aXNwbGF5TGlzdFJlY29yZFN0YXJ0LCBEaXNwbGF5TGlzdFJlY29yZEVuZCk7CiAKLSAgICAgICAg
bV9kaXNwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
PigpOworICAgICAgICBtX2Rpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q+KCk7CiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91
bmRzT3JpZ2luKCksIHNpemUoKSk7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQo
WyZdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlz
dCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4o
Y29udGV4dCwgKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxD
bGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pOwogICAgICAgICBwYWludEdyYXBo
aWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkp
KTsKICAgICB9CkBAIC0yODY3LDcgKzI4NjcsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNS
dW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9uKCkgY29uc3QKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpl
bnN1cmVMYXllckFuaW1hdGlvbnMoKQogewogICAgIGlmICghbV9hbmltYXRpb25zKQotICAgICAg
ICBtX2FuaW1hdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKKyAg
ICAgICAgbV9hbmltYXRpb25zID0gbWFrZVVuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmlt
YXRpb24mIGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcm
IGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1YkluZGV4LCBTZWNvbmRzIHRpbWVPZmZz
ZXQpCkBAIC0zOTAzLDcgKzM5MDMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xv
bmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPgogICAgIGNv
bnRlbnRzTGF5ZXIgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQotICAgICAg
ICBtX2xheWVyQ2xvbmVzID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsb25lcz4oKTsKKyAgICAg
ICAgbV9sYXllckNsb25lcyA9IG1ha2VVbmlxdWU8TGF5ZXJDbG9uZXM+KCk7CiAKICAgICBwcmlt
YXJ5TGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9sYXllci5nZXQoKSwgbV9sYXll
ckNsb25lcy0+cHJpbWFyeUxheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKICAgICBzdHJ1Y3R1cmFs
TGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCks
IG1fbGF5ZXJDbG9uZXMtPnN0cnVjdHVyYWxMYXllckNsb25lcywgY2xvbmVMZXZlbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVy
Q0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCmluZGV4IDNhYzRjMWUzMmExNTQ4ZDU4YzY5MTExN2NjNjlhMjljNGRjZjBlMWEuLmM0YjJj
OWMzNDcwODBhNmI3Yzk2ZDY3MDJmNGE0ZDhhMzBjN2Y2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTcs
NiArMTU3LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIs
IHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIEZsb2F0U2l6ZSBwaXhlbEFsaWdu
bWVudE9mZnNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGl4ZWxBbGlnbm1lbnRPZmZz
ZXQ7IH0KIAogICAgIHN0cnVjdCBDb21taXRTdGF0ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdW5zaWduZWQgdHJlZURlcHRoIHsgMCB9OwogICAg
ICAgICB1bnNpZ25lZCB0b3RhbEJhY2tkcm9wRmlsdGVyQXJlYSB7IDAgfTsKICAgICAgICAgYm9v
bCBhbmNlc3RvckhhZENoYW5nZXMgeyBmYWxzZSB9OwpAQCAtMzA5LDYgKzMxMCw3IEBAIGNsYXNz
IEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1D
QUxheWVyQ2xpZW50IHsKICAgICB0eXBlZGVmIHVuc2lnbmVkIENvbXB1dGVWaXNpYmxlUmVjdEZs
YWdzOwogICAgIAogICAgIHN0cnVjdCBWaXNpYmxlQW5kQ292ZXJhZ2VSZWN0cyB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgRmxvYXRSZWN0IHZpc2li
bGVSZWN0OwogICAgICAgICBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0OwogICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBhbmltYXRpbmdUcmFuc2Zvcm07CkBAIC0zMjgsNiArMzMwLDcgQEAgY2xh
c3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQgewogCiAgICAgLy8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRo
ZSB0cmVlIGZvciByZXBsaWNhIGxheWVycy4KICAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IG1heFJlcGxpY2FEZXB0aCA9IDE2OwogICAgICAgICBlbnVtIFJlcGxpY2FCcmFu
Y2hUeXBlIHsgQ2hpbGRCcmFuY2ggPSAwLCBSZXBsaWNhQnJhbmNoID0gMSB9OwogICAgICAgICBS
ZXBsaWNhU3RhdGUoUmVwbGljYUJyYW5jaFR5cGUgZmlyc3RCcmFuY2gpCkBAIC01NzksNiArNTgy
LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1Ymxp
YyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogCiAgICAgLy8gUmVmZXJlbmNlcyB0byBjbG9uZXMg
b2Ygb3VyIGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJzLgogICAgIHN0cnVjdCBMYXllckNs
b25lcyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAg
TGF5ZXJNYXAgcHJpbWFyeUxheWVyQ2xvbmVzOwogICAgICAgICBMYXllck1hcCBzdHJ1Y3R1cmFs
TGF5ZXJDbG9uZXM7CiAgICAgICAgIExheWVyTWFwIGNvbnRlbnRzTGF5ZXJDbG9uZXM7CkBAIC02
MDgsNiArNjEyLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5
ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPj4gQW5pbWF0aW9uc1RvUHJv
Y2Vzc01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQcm9wZXJ0
eUFuaW1hdGlvbj4+IEFuaW1hdGlvbnNNYXA7CiAgICAgc3RydWN0IExheWVyQW5pbWF0aW9ucyB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgVmVjdG9y
PExheWVyUHJvcGVydHlBbmltYXRpb24+IHVuY29taXR0ZWRBbmltYXRpb25zOwogICAgICAgICBB
bmltYXRpb25zVG9Qcm9jZXNzTWFwIGFuaW1hdGlvbnNUb1Byb2Nlc3M7CiAgICAgICAgIEFuaW1h
dGlvbnNNYXAgcnVubmluZ0FuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggNGQ2NGMyYzRiMTli
MzFiODA1NGMxYmM0MWFjMDIyNTczYmVmZjU2Mi4uMzA1ZWZkMzMzYmQ2MTFjNmVmNWU0YzFiMjYy
Mjg4NzUyNTZmMjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcgVGls
ZUNvbnRyb2xsZXI6Onpvb21lZE91dFRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCkKIFRpbGVD
b250cm9sbGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RQbGF0Zm9ybUxh
eWVyKQogICAgIDogbV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1MYXllcikKICAgICAsIG1f
ZGV2aWNlU2NhbGVGYWN0b3Iob3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNBTGF5ZXJE
ZXZpY2VTY2FsZUZhY3RvcigpKQotICAgICwgbV90aWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPFRp
bGVHcmlkPigqdGhpcykpCisgICAgLCBtX3RpbGVHcmlkKG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0
aGlzKSkKICAgICAsIG1fdGlsZVJldmFsaWRhdGlvblRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xs
ZXI6OnRpbGVSZXZhbGlkYXRpb25UaW1lckZpcmVkKQogICAgICwgbV90aWxlU2l6ZUNoYW5nZVRp
bWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVTaXplQ2hhbmdlVGltZXJGaXJlZCwgdGls
ZVNpemVVcGRhdGVEZWxheSkKICAgICAsIG1fbWFyZ2luRWRnZXMoZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29u
dGVudHNTY2FsZShmbG9hdCBzY2FsZSkKICAgICBpZiAobV96b29tZWRPdXRDb250ZW50c1NjYWxl
ICYmIG1fem9vbWVkT3V0Q29udGVudHNTY2FsZSA9PSB0aWxlR3JpZCgpLnNjYWxlKCkgJiYgdGls
ZUdyaWQoKS5zY2FsZSgpICE9IHNjYWxlICYmICFtX2hhc1RpbGVzV2l0aFRlbXBvcmFyeVNjYWxl
RmFjdG9yKSB7CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQgPSBXVEZNb3ZlKG1fdGlsZUdy
aWQpOwogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT5zZXRJc1pvb21lZE91dFRpbGVHcmlk
KHRydWUpOwotICAgICAgICBtX3RpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4o
KnRoaXMpOworICAgICAgICBtX3RpbGVHcmlkID0gbWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMp
OwogICAgICAgICB0aWxlR3JpZHNDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC01MDAsNyArNTAwLDcg
QEAgRmxvYXRSZWN0IFRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9yU2Ny
b2xsaW5nKGNvbnN0IEZsb2F0UmVjdCYgY28KICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBpZiAoIW1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSkKLSAgICAgICAgICAgIG1faGlzdG9yaWNh
bFZlbG9jaXR5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yaWNhbFZlbG9jaXR5RGF0YT4o
KTsKKyAgICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSA9IG1ha2VVbmlxdWU8SGlz
dG9yaWNhbFZlbG9jaXR5RGF0YT4oKTsKIAogICAgICAgICBtX3ZlbG9jaXR5ID0gbV9oaXN0b3Jp
Y2FsVmVsb2NpdHlEYXRhLT52ZWxvY2l0eUZvck5ld0RhdGEoc2Nyb2xsT2Zmc2V0LCBjb250ZW50
c1NjYWxlLCBNb25vdG9uaWNUaW1lOjpub3coKSk7CiAgICAgfTsKQEAgLTY4NSw3ICs2ODUsNyBA
QCBJbnRSZWN0IFRpbGVDb250cm9sbGVyOjp0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3QKIFBsYXRm
b3JtQ0FMYXllciogVGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIo
KQogewogICAgIGlmICghbV9jb3ZlcmFnZU1hcCkKLSAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IHN0
ZDo6bWFrZV91bmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CisgICAgICAgIG1fY292ZXJh
Z2VNYXAgPSBtYWtlVW5pcXVlPFRpbGVDb3ZlcmFnZU1hcD4oKnRoaXMpOwogCiAgICAgcmV0dXJu
ICZtX2NvdmVyYWdlTWFwLT5sYXllcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQppbmRleCBhNDg1MjNjZjUxNzZiMzFmMmFjYzQ5ODRiMmVjZDhlMmM4NzRmNjA3Li4zNmFj
MmY3ODRiMDA2ZmY5YzcwM2Y0MWU3YmZmNjg3YTFhYTRjNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9y
bUNBTGF5ZXJDb2NvYS5tbQpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVy
Q29jb2E6OmNvbW1vbkluaXQoKQogICAgICAgICBXZWJUaWxlZEJhY2tpbmdMYXllciogdGlsZWRC
YWNraW5nTGF5ZXIgPSBzdGF0aWNfY2FzdDxXZWJUaWxlZEJhY2tpbmdMYXllcio+KG1fbGF5ZXIu
Z2V0KCkpOwogICAgICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSBbdGlsZWRC
YWNraW5nTGF5ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6dGhpc107CiAKLSAgICAgICAgbV9jdXN0
b21TdWJsYXllcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVD
b250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJz
ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFp
bmVyTGF5ZXJzKCkpOwogICAgIH0KIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAg
LTk0Nyw3ICs5NDcsNyBAQCBGbG9hdFJvdW5kZWRSZWN0IFBsYXRmb3JtQ0FMYXllckNvY29hOjpz
aGFwZVJvdW5kZWRSZWN0KCkgY29uc3QKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNo
YXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCiB7CiAg
ICAgQVNTRVJUKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNoYXBlTGF5ZXIpOwotICAgIG1fc2hh
cGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRl
ZFJlY3QpOworICAgIG1fc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVk
UmVjdD4ocm91bmRlZFJlY3QpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAg
ICAgUGF0aCBzaGFwZVBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCmluZGV4
IGMxOTFmMzkxYzY0NTcyY2M5OTU1YTQ3YzZjYjdiOTAwNzg2NzI2MzkuLmIzZTIxZjY0MGFlOTFh
MGQxZjU5Mzg0NmE4NTBmZWMyMmZhNzhhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xh
eWVyLm1tCkBAIC02Miw3ICs2Miw3IEBAIC0gKGlkKWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCiAt
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlciopY3JlYXRlVGlsZUNvbnRyb2xsZXI6KFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllciopcm9vdExheWVyCiB7CiAgICAgQVNTRVJUKCFfdGlsZUNvbnRyb2xs
ZXIpOwotICAgIF90aWxlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGls
ZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CisgICAgX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAgICByZXR1cm4gX3RpbGVD
b250cm9sbGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDE1
ZDRlNDZiMDZjNzZjMTdmMzQwNTEzOWM2Yzk3OWMxMDE3YjM2OTYuLmQ2YTdjMTY4ZjBlNDQxZmQ3
ZDI5MGZjNGZlMzEzNjBjNTg1ZDU2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBA
IC0xNTIsNyArMTUyLDcgQEAgUGxhdGZvcm1DQUxheWVyV2luOjpQbGF0Zm9ybUNBTGF5ZXJXaW4o
TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1MYXllciogbGF5ZXIKICAgICBpZiAodXNlc1Rp
bGVkQmFja2luZ0xheWVyKCkpIHsKICAgICAgICAgaW50ZXJuID0gbmV3IFdlYlRpbGVkQmFja2lu
Z0xheWVyV2luKHRoaXMpOwogICAgICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIg
PSByZWludGVycHJldF9jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyV2luKj4oaW50ZXJuKS0+Y3Jl
YXRlVGlsZUNvbnRyb2xsZXIodGhpcyk7Ci0gICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFp
bmVyTGF5ZXJzKCkpOworICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IG1ha2VVbmlxdWU8UGxh
dGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgaW50ZXJuID0gbmV3IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFs
KHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAppbmRleCAyMjRk
OGJiZWVkMzk5MmFlZWZjOTMyYTFiZWU4MGRjNjNmY2EyZjhiLi5jNWE3M2U4ZDNhZTliYjQ5YTk2
YmUyN2Y1MzI3ZTA2YzA2MjE0ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldp
bi5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpz
ZXRCb3JkZXJDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCiBUaWxlQ29udHJvbGxlciogV2ViVGls
ZWRCYWNraW5nTGF5ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciog
cm9vdExheWVyKQogewogICAgIEFTU0VSVCghbV90aWxlQ29udHJvbGxlcik7Ci0gICAgbV90aWxl
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7
CisgICAgbV90aWxlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RM
YXllcik7CiAgICAgcmV0dXJuIG1fdGlsZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBjMzFjYzZlMzhiYTU5OWM5ZmI4MjZhYTAzOTc2YjIw
NTFjYzExNWJlLi4xOGYzNDA1MGFhOWUzYjc0MzRhNjI3YTA3N2NkMmNjZjJmOTljOWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC00MSw2ICs0MSw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoKICAgICBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggNTBiN2Q5YzIzYzAxYWJmYzNhMDUxNzhjMTA1MjUx
MDcwZjE1ZDZkYi4uMDRmMmE5ZmY1NDY5YWE1YmEyNGQxNDk1NjU0YjYwZjBiYzQzZDJhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdy
YXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhp
Y3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250
ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU0
LDE0ICs1NCwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGlj
c0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbY2Fpcm9Db250
ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwg
Y2Fpcm9Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAK
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZm
aW5lVHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4
dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlx
dWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7
CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZh
dGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQu
Y3IoKSk7CkBAIC02OSw5ICs2OSw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhCiAKIEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY2Fpcm9fdCogY2Fpcm9Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250
ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAg
ICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4
dENhaXJvPihjYWlyb0NvbnRleHQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtl
VW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQogICAgICwgbV9wbGF0
Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1D
b250ZXh0KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0
LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZh
dGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKaW5kZXggOTllMTgzY2M3MDU2
MDNkMjM0ZThlOGVkOWZkNjY5ZDU5NmZiZWVhMi4uMDgzNzI1ZDZmZDM4MzI2MDdhYTc2MWZmOWY2
ODM1OTA2NjRjOTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGVDYWlyby5oCkBAIC00NSw2ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgIDogcGxhdGZv
cm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggMTg4
ZTdiYzNkYjg1ODI5NjVjYWJiMjg5YmM1YzAyYmM3MTYyM2FhNS4uMWY3NjNiNTA3NzNiZGY1ZDFl
NTJlNWQxOWMwYjgwZmJhZDM3YjQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE2NSw3
ICsxNjUsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAg
ICAgICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHku
bG9jaygpKTsKLSAgICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2Vf
dW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0
dXJlLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKKyAg
ICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKICAgICAgICAgICAgIH07CiAjaWYg
VVNFKE5JQ09TSUEpCiAgICAgICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94
eSgpKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogCiAgICAg
UmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZh
Y2UuZ2V0KCkpKTsKICAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkp
OwotICAgIG1fZGF0YS5tX2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRm
b3JtQ29udGV4dCkpOworICAgIG1fZGF0YS5tX2NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNz
Q29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5t
X3BsYXRmb3JtQ29udGV4dCkpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1D
b250ZXh0Q2Fpcm8uaAppbmRleCA4MGVjNzI1OGI2NDIxZmJmOThiM2ViNTUxM2QwY2VhZmJlN2Fk
ZmRjLi45OWM4MmUyZTZlOTkzMWM4ZmVhOWRlMjE1ZDBmMzZjNzE5YzM4OTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRm
b3JtQ29udGV4dENhaXJvLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IFNoYWRvd1N0YXRlOwog
Ly8gY29kZSBmcm9tIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQuCiAK
IGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNvbnRleHRDYWlybyk7CiBwdWJs
aWM6CiAgICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8oY2Fpcm9fdCopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4
MGI1ZDRmYmQyNzJkZWU0MzViNWNlN2MwODRlZTM1OWE1MDFlZDY0Li5kMzVmZjBlZmY5NzE5NTBl
ZWQxZTNmZDAyNmJjZGE5ZWFmYTM0ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBA
IEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ0dDb2xvclNwCiAgICAgICAgIGlmICghY2dDb250ZXh0KQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZGF0YS5jb250
ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CiAgICAg
fQogCiAgICAgY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29y
ZVRleHQuY3BwCmluZGV4IDcyNTJlNDk1MjRmNjA5ODZiMDM4Y2E4N2M4ZTdlMjY1ZDA1NzQ3MGQu
LmMwMTYwMWUxMDExMTI3OThiMjY4ZGZhZjI2OTM4MmI2NTMxOWQ1YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHAKQEAgLTEzNzEsNyArMTM3MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxh
dGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERl
CiAKICAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVO
ZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1
ZVBhaXIoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+
KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnRE
ZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCks
IGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2Ny
aXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUo
KSk7CiB9CiAKIHR5cGVkZWYgSGFzaFNldDxSZXRhaW5QdHI8Q1RGb250UmVmPiwgV1RGOjpSZXRh
aW5QdHJPYmplY3RIYXNoPENURm9udFJlZj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaFRyYWl0
czxDVEZvbnRSZWY+PiBGYWxsYmFja0RlZHVwU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAppbmRleCAxY2UwYzk0N2UxN2U5YTY4ZWVhZDNhNGQ1
N2I1OWQ4ZmExNmNlZjI5Li4wZGU5MzRhN2IzODQxMDBlZWI3NmQ3N2Y0NTZhMTgyZmJiYWJjZWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApA
QCAtMTEyLDcgKzExMiw3IEBAIEZvbnRSYW5nZXMgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dDo6Zm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAKICAgICAgICAgYXV0
byBbc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3lu
dGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9u
KS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
b250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1
ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZh
cmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxz
ZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnRE
ZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdN
b2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVChmb250UGxhdGZv
cm1EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCmluZGV4IDg5MmI0YTk4YzAw
N2I2Zjk3MGEzNjg2MWJlOTE3MTQ4YmIwNDY3MmMuLjU3OWYxYjkxOGRiYmU3NWI4NDEzZTZkNmZk
MTVkZmFmNjRhMzU2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtOTIs
NiArOTIsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQgPSA1
OwogLy8gRklYTUU6IFRoaXMgY2xhc3MgaXMgY3VycmVudGx5IGVtcHR5IG9uIE1hYywgYnV0IHdp
bGwgZ2V0IHBvcHVsYXRlZCBhcwogLy8gdGhlIHJlc3RydWN0dXJpbmcgaW4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTAzIGlzIGRvbmUKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKikgeyB9CiAg
ICAgCkBAIC0yMTIsNyArMjEzLDcgQEAgc3RhdGljIHZvaWQgc2V0R1BVQnlEaXNwbGF5TWFzayhQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIGNvbnRleHRPYmosIENHTFBpeGVsRm8KIAogR3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRl
cyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
clN0eWxlLCBHcmFwaGljc0NvbnRleHQzRCogc2hhcmVkQ29udGV4dCkKICAgICA6IG1fYXR0cnMo
YXR0cnMpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU+KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlPih0aGlzKSkKIHsKICNpZiAhVVNFKEFOR0xFKQogI2lmIFVTRShPUEVOR0xf
RVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KaW5kZXggNWM3MzNlM2JhZDFlOWQzZDI1YzFlZDU3ZjVhY2RmZmYzYTRjYjk5Zi4u
Mzg3NWZjZmQzMDZkZjg2ZDM0NzRlZTE4NjBiYTU5MGEzYThiYzEyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzI2
LDcgKzMyNiw3IEBAIEdyYXBoaWNzQ29udGV4dCYgSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0Nv
bnRleHQoKQogICAgIGlmIChtX2dyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuICptX2dy
YXBoaWNzQ29udGV4dDsKIAotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxHcmFwaGljc0NvbnRleHQ+KGVuc3VyZVBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBtX2dyYXBo
aWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNv
bnRleHQoKSk7CiAgICAgbV9ncmFwaGljc0NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0
KHRydWUpOwogCiAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCmluZGV4IDZlNjBlYmYxZmZhNjU5MGY2ZjM0ZTUy
OGEzZTMzNTgzMThiNWViZGYuLjI3ODc0NjgxNjZmZWYxYjVmNjQ2MjFmZWI1YmI1ZTUwZDlkNmRh
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQpAQCAtMTA4
LDcgKzEwOCw3IEBAIEBlbmQKIAogc3RkOjp1bmlxdWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0
aW9uPiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0
aW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYT4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOwogfQogCiBUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbkNvY29hOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKaW5kZXgg
YWRjOTdhZGMxZmEyNDU4MDk5MDAzYzNkZTljMGFhMzhkODc2MTg3ZC4uNjAwMWJiNzBhMTAwNDE3
NDQxMDkyMTM2ZjNmZTViNjE3NjJjYjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaApAQCAt
MzYsNyArMzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKiBDVlBpeGVs
QnVmZmVyUG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUIHsKK2NsYXNzIEltYWdlUm90YXRpb25TZXNzaW9uVlQgZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBSb3RhdGlvblBy
b3BlcnRpZXMgewogICAgICAgICBib29sIGZsaXBYIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9y
bWVyQ1YuaAppbmRleCBkZDEzNTY5ZTA4MWExYjM5OWRjYmFiZjNmNWU4ODM3Zjg0YzJhYjRlLi5j
ZDViNmZjYzAwZDc3NDY0ZTZlNmJlNzQ2MzExZTEzZDBkMjdlMzJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25m
b3JtZXJDVi5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNW
UGl4ZWxCdWZmZXJSZWY7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1YgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YoQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOwogICAg
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNh
Y2hlQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNo
ZUNWLmgKaW5kZXggODFhYjJmOTI0ZGFmMjZjZGEyMmM1ZTIwMDc3NmMyMTgwMjAyM2EzYi4uYzlm
ZjQxOWQ0M2JlNDVmNDA0NDAzMDQwYWRkOGM0ZDA0NDAyYmEyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCkBAIC00NCw2
ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwog
CiBjbGFzcyBUZXh0dXJlQ2FjaGVDViA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0dXJlQ2Fj
aGVDVj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQz
RCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9U
ZXh0dXJlQ2FjaGVDVi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1Rl
eHR1cmVDYWNoZUNWLm1tCmluZGV4IDU3N2VjMjg0NjM5MmE3MjE1ZDk5OGFhMzEwZDNkOGQ2MzNm
NWYxZWMuLjlmMWY2NmIzYmQ1OWY1OWIxYWQzY2I3MDVjODU2NTQ0MjI3ZWMzOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNW
Lm1tCkBAIC01MCw3ICs1MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gVGV4
dHVyZUNhY2hlQ1Y6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCYgY29udGV4CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+IHN0cm9uZ0Nh
Y2hlID0gYWRvcHRDRihjYWNoZSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVy
ZUNhY2hlQ1Y+KGNvbnRleHQsIFdURk1vdmUoc3Ryb25nQ2FjaGUpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUZXh0dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOwog
fQogCiBUZXh0dXJlQ2FjaGVDVjo6VGV4dHVyZUNhY2hlQ1YoR3JhcGhpY3NDb250ZXh0M0QmIGNv
bnRleHQsIFJldGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiYmIGNhY2hlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1Yu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGll
ckNWLmgKaW5kZXggNDNhOTZkYzE0MzY1ODRhZmE3NzE4NzhiMTk3ZjJhOTU0N2RjY2NlZS4uOWQz
OTJlYTA1OGIzNjAwOGNhNTY5Y2E0NGZkNzEyODgzYjBkNmY1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJD
Vi5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVD
YWNoZUNWOwogCiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJDViB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3ND
b250ZXh0M0QmKTsKICAgICB+VmlkZW9UZXh0dXJlQ29waWVyQ1YoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA4ZmVhYTJmNWQ3NTMyOGU0MzZiZjlkODhi
OGRjMDViYWMxYzJlMWYzLi5jNTYxZjVmOWVhYjk5NjIxMWE4YjIyMjE5Nzc2ZDY4ZjM5ZTE2NDQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25z
dCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheUxpc3Q+IHJlcGxheUxpc3Q7CiAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkp
Ci0gICAgICAgIHJlcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0PigpOwor
ICAgICAgICByZXBsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKIAogICAgIHNp
emVfdCBudW1JdGVtcyA9IG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1JdGVtczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5k
ZXggNTU3YjhlMDA4NjJkNmFiYzU4MDRiNDE0MzIxMDA4MGE4MzUxNmQxZS4uMzBiYjQ4Y2M4ZjBj
NDk1NDQ4YWI2NWY2ODExNzJjY2M2YmNhNTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApA
QCAtNjcsNyArNjcsNyBAQCB2b2lkIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVy
bmFsRG9jdW1lbnRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlcgogICAgICAgICByZXR1cm47
CiAgICAgaWYgKCFTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UobV91cmws
ICpjYWNoZWRSZXNvdXJjZUxvYWRlci5kb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlPihtX3VybCk7CisgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZSA9IG1ha2VVbmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKICAg
ICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVy
LCBvcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDY1NjNj
OGJmZWViMzViYTUzMjdmNDg5NjFlZDYyMWZlM2Q1M2FhNDEuLjcxYTRhYjJmNDgyNWYxYTU0MzE5
MTgwMzRiMzUzMWVjZGE4YTBmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAg
LTQ1NSw3ICs0NTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENh
Y2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgICAgICAgICAgRmNQ
YXR0ZXJuQWRkU3RyaW5nKHJlc3VsdFBhdHRlcm4uZ2V0KCksIEZDX0ZPTlRfVkFSSUFUSU9OUywg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBGY0NoYXI4Kj4odmFyaWFudHMudXRmOCgpLmRhdGEoKSkp
OwogICAgIH0KICNlbmRpZgotICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxGb250UGxhdGZvcm1EYXRhPihmb250RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRp
Y0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsK
KyAgICBhdXRvIHBsYXRmb3JtRGF0YSA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9u
dEZhY2UuZ2V0KCksIHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpLCBmaXhlZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVl
LCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSk7CiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhp
cyBmb250IGhhcyBhbiBlbmNvZGluZyBjb21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNv
bmZpZyBjdXJyZW50bHkKICAgICAvLyBzdXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVl
VHlwZUNoYXJJbmRleDogVW5pY29kZSwgU3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElm
IHRoaXMgZm9udCBkb2Vzbid0IGhhdmUgb25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9u
J3Qgc2VsZWN0IGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKaW5kZXggMTM3NjVmNDNkYTg2NjhkMmRlODJlNjcxZDgxODBkNjg0NDI4NDNi
MC4uNTg5NDNkMmE5MGRmYzU1MDFmMmRjYWE4ZWNmMGU5MGUxYWM3ZjcwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzAsNyAr
MTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFj
ZTsKICAgICBpZiAoRlRfTmV3X01lbW9yeV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgRlRfQnl0ZSo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5
cGVGYWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwg
YnVmZmVyKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1h
dChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmNwcAppbmRleCA4Njk4MTM2NDUxM2I4ZTZmMGQ3YjJkZGE1YmI4
ZDFmODcyZTdmNTc2Li43MWZkYTBkOTI0Y2QyNTVkYjNlZjEwNzdmOWUxMDc4MTRlMjQzZGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3Bw
CkBAIC05NSw3ICs5NSw3IEBAIFJlZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIEZvcm1hdCBmb3JtYXQsIGludCB3CiAgICAgICAgIG51bVRp
bGVzID0gMDsKICAgICB9CiAKLSAgICBhdXRvIHRleHR1cmVJZHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3Rvcjx1bnNpZ25lZD4+KG51bVRpbGVzKTsKKyAgICBhdXRvIHRleHR1cmVJZHMgPSBtYWtl
VW5pcXVlPFZlY3Rvcjx1bnNpZ25lZD4+KG51bVRpbGVzKTsKICAgICB0ZXh0dXJlSWRzLT5maWxs
KDAsIG51bVRpbGVzKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCBmNGE0YmExYThhY2FkNWUyMDVhNTkzYTQ4Zjc0ODZiMjhjN2JlMWQ1Li5mNmUxZTE0NjkzYzc5
ODQyNTJmNzhlYjc4MGQwMjRjZjY0NWVhNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyIHJlZ2lzCiB7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aW5p
dGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAg
ICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCisgICAgICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBv
cnRzS2V5U3lzdGVtKTsKICAgICB9CiB9CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQ
aXRjaCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2Vz
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1l
UmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fZXJy
b3JPY2N1cmVkIHx8IGlzTGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsK
IApAQCAtMjM3Niw3ICsyMzc2LDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjphdWRpb1NpbmsoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJj
ZVByb3ZpZGVyKQotICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI+KCk7CisgICAgICAgIG1fYXVkaW9Tb3Vy
Y2VQcm92aWRlciA9IG1ha2VVbmlxdWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsK
IH0KIAogQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjph
dWRpb1NvdXJjZVByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCAwNzI4ZWViNjQyMGFmZmI5NmM3YTFhNDlmNTU1
NWQ5ZjNiM2Q5OGQ1Li5lZThmYmRkYTU3MmZmNTdlZDRjMTc3YzBjNDljN2U1ODJkZjk5ZmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCkBAIC03MTAsMTkgKzcxMCwxOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKICAgICAgICAgICAgIGlmICghcHJveHku
aXNBY3RpdmUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBl
ckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKTsKKyAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0
VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAh
bV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKTsKIAogICAgICAgICAgICAgR0x1aW50IHRleHR1cmVJ
RCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAg
ICAgICBpZiAodGV4dHVyZUlEKSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQs
IGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSk7CisgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5z
aXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAg
ICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIo
V1RGTW92ZShmcmFtZUhvbGRlcikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBsYXllckJ1ZmZlciA9IHByb3h5LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhvbGRlci0+
c2l6ZSgpLCBHTF9ET05UX0NBUkUpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbGF5
ZXJCdWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRl
eHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkpOwog
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChmcmFtZUhvbGRlci0+c2l6ZSgpLCBm
cmFtZUhvbGRlci0+aGFzQWxwaGFDaGFubmVsKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0Fs
cGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEZNb3ZlKHRleHR1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBt
YWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1
cmUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnVw
ZGF0ZVRleHR1cmUobGF5ZXJCdWZmZXItPnRleHR1cmVHTCgpKTsKICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlci0+c2V0RXh0cmFGbGFncyhtX3RleHR1cmVNYXBwZXJGbGFncyB8IChmcmFtZUhv
bGRlci0+aGFzQWxwaGFDaGFubmVsKCkgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDog
MCkpOwpAQCAtOTEyLDcgKzkxMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgaWYg
KCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90
ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0Zy
YW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4o
bV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8g
dGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlE
KQpAQCAtOTIzLDcgKzkyMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgICAgIHNp
emUgPSBzaXplLnRyYW5zcG9zZWRTaXplKCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29w
aWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZM
QUcpOworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwog
CiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUodGV4dHVyZUlELCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQs
IGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJj
ZU9yaWVudGF0aW9uKTsKIH0KQEAgLTkzOSw3ICs5MzksNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkK
ICAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFt
ZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUu
Z2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJh
bWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAK
ICAgICBhdXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAo
IXRleHR1cmVJRCkKQEAgLTk1Myw3ICs5NTMsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBj
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVD
b3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxW
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRf
RkxBRyk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7
CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUodGV4dHVyZUlELCBzaXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3VyY2VP
cmllbnRhdGlvbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEyNSw2ICsxMTI1LDcg
QEAgc3RhdGljIHZvaWQgc2V0UmVjdGFuZ2xlVG9WaWRlb1NpbmsoR3N0RWxlbWVudCogdmlkZW9T
aW5rLCBjb25zdCBJbnRSZWN0JiByZWN0KQogfQogCiBjbGFzcyBHU3RyZWFtZXJIb2xlUHVuY2hD
bGllbnQgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OkhvbGVQdW5j
aENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0
cmVhbWVySG9sZVB1bmNoQ2xpZW50KEdSZWZQdHI8R3N0RWxlbWVudD4mJiB2aWRlb1NpbmspIDog
bV92aWRlb1NpbmsoV1RGTW92ZSh2aWRlb1NpbmspKSB7IH07CiAgICAgdm9pZCBzZXRWaWRlb1Jl
Y3RhbmdsZShjb25zdCBJbnRSZWN0JiByZWN0KSBmaW5hbCB7IHNldFJlY3RhbmdsZVRvVmlkZW9T
aW5rKG1fdmlkZW9TaW5rLmdldCgpLCByZWN0KTsgfQpAQCAtMTE0Nyw4ICsxMTQ4LDggQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZl
cigpCiAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94
eSkKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygp
KTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90Qmxl
bmQsIEdMX0RPTlRfQ0FSRSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVy
SG9sZVB1bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJl
YW1lckhvbGVQdW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOworICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZl
ciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6
ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5j
aENsaWVudCA9IG1ha2VVbmlxdWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2lu
ay5nZXQoKSk7CiAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0SG9sZVB1bmNoQ2xpZW50KFdU
Rk1vdmUoaG9sZVB1bmNoQ2xpZW50KSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZl
cihXVEZNb3ZlKGxheWVyQnVmZmVyKSk7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA4MDc5YTVmZWFhYTc5N2Zh
ZGMzODI0NjcyNGViYmNkN2Y2Zjk5NWUzLi5hZDRlZGY1ZTZlNWRmYjM3ODRmY2ViMTc4YmE4Mjc3
MTRkZjljY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmgKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmwKICNl
bmRpZgogI2VuZGlmCiB7Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJl
Q29waWVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKaW5kZXggMjBmYjY2M2VmMTI0MzEw
MTY2NTQ3ZjQwMmNlNzYzMDNlMGM3MTUxNS4uZjAxNjAwYTNjNDU5NGRmOGQxNmY0ZjBjYzE0Njg1
MmFlMTVjNGI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXIuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTsK
IGNsYXNzIEltYWdlT3JpZW50YXRpb247CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBj
bGFzcyBDb2xvckNvbnZlcnNpb24gewogICAgICAgICBDb252ZXJ0QkdSQVRvUkdCQSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTczZjRkNGYwMDMy
MzU2ZjE3N2ViZDdmYzRiOWU5NGE1MjkyZjk1YS4uOTgxMGMyNTdiMzc3NmZmZDhkNDIxMmU5Njk0
YmU5MmIyNTk3MzUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5l
IExPV19RVUVVRV9GQUNUT1JfVEhSRVNIT0xEIDAuMgogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudCBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KTsKIHB1YmxpYzoKICAgICBDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudChXZWJLaXRXZWJTcmMqLCBSZXNvdXJjZVJlcXVlc3QmJik7CkBA
IC02MzIsNyArNjMzLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0
KEdzdEJhc2VTcmMqIGJhc2VTcmMsIGJvb2wgbm90aWZ5QXN5bmNDb20KICAgICAgICAgICAgIGxv
YWRPcHRpb25zIHw9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVm
ZmVyRGF0YTsKICAgICAgICAgcHJpdi0+cmVzb3VyY2UgPSBwcml2LT5sb2FkZXItPnJlcXVlc3RS
ZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGxvYWRPcHRpb25zKTsKICAgICAgICAg
aWYgKHByaXYtPnJlc291cmNlKSB7Ci0gICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3Rl
Y3Rvci5nZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CisgICAgICAgICAgICBwcml2
LT5yZXNvdXJjZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ+KHByb3RlY3Rvci5nZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CiAgICAg
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHByb3RlY3Rvci5nZXQoKSwgIlN0YXJ0ZWQgcmVxdWVz
dCIpOwogICAgICAgICAgICAgaWYgKG5vdGlmeUFzeW5jQ29tcGxldGlvbikKICAgICAgICAgICAg
ICAgICBnc3RfYmFzZV9zcmNfc3RhcnRfY29tcGxldGUoR1NUX0JBU0VfU1JDKHNyYyksIEdTVF9G
TE9XX09LKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFLmNwcAppbmRleCA0ZTlkMTlkODUyN2Q2OTYyMGNmNWFhOTQxMDczNjI4Mzgx
YjNjOWYwLi5lNjg4MGQ5OGU3ZmNhZDFkMDUzZjg0ZWQzOGE2ZmQ4MTk4ZGU3Yjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0Uu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlCiAgICAgaW5pdGlh
bGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMoKTsKICAgICBHU1RfREVCVUdf
Q0FURUdPUllfSU5JVCh3ZWJraXRfbXNlX2RlYnVnLCAid2Via2l0bXNlIiwgMCwgIldlYktpdCBN
U0UgbWVkaWEgcGxheWVyIik7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVn
aXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBw
b3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBw
b3J0c0tleVN5c3RlbSk7CiAgICAgfQogfQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzZXRSYXRlKGZsb2F0KQogCiBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1
ZmZlcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3Vy
Y2UtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
KyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBt
YWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnNvdXJjZVNldHVwKEdzdEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gv
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmluZGV4
IDExNzI0NTg0MTBlOWExNDUzYjYzNWIwZjhkOTFiOWZiNGE2OTZjNTguLjBmMDhjMTlkYmRiZTY5
YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0
aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewog
ICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FS
RSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBH
TF9ET05UX0NBUkUpOwogICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShs
YXllckJ1ZmZlcikpOwogICAgICAgICB9OwogCkBAIC0xNDEsNyArMTQxLDcgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlw
ZShjb25zdCBNZWRpYUUKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIo
W10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVIb2xlUHVuY2g+KHBsYXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggZjBkMDRk
NGM2M2Q5MzEyMGJjZTgwNWFiOGZlYTI4N2EwMWUwNDQyYS4uOGJmNzIxMzE4ODE5YzQwMjY3Yjcy
MWZhOWI4MmFjMWNkOTI2ZjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2guaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwog
ICAgICwgcHVibGljIFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogewotCisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKE1l
ZGlhUGxheWVyKik7CiAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCgpOwpAQCAtNzks
NyArNzksNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6
OkVtcHR5OyB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9OwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OwogCiAgICAgYm9v
bCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IGUx
YTNhODY2MzE0NzVjYWI3YTliMTcxYjQwNjJkMzkzZDg5MGU2MDYuLmVjZjg5NjkzZGEzMzg1MjAx
MmU3NTAyMTEyOTk4MDk5ZWM4ZGFjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgRGF0YVZpZXc7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SVNPQm94KCkg
PSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCmluZGV4IDcwYmI4NjExMzE2ZTY4NWI3
NmI3ODgzOGI1ZWQwNjAzNzZiOWIxYTkuLjE4ODNiYTQ3YmRmM2E1MmFmYjJmZjdkMGRkNWNkOWRj
ZDdjZGQ4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09PcmlnaW5hbEZvcm1hdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2luYWxGb3Jt
YXRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFs
Rm9ybWF0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZv
dXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcm1hIjsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9C
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rp
b25TY2hlbWVJbmZvQm94LmNwcAppbmRleCBkOGQ3NDAxYTc1NjAwNDZjOThhZmY4Y2IxMWViMmU3
MjIzYzk4MWNlLi5iZGZkYmRjOTZjZjBlMWI1MGE3Mjg1ODI4OGM5YjJmNDc0ZjdkMGZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blNjaGVtZUluZm9Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYm9v
bCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2ln
bmVkJiBvZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChvcHRpb25hbEJv
eFR5cGUudmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVUeXBlQm94Ojpib3hUeXBlTmFtZSgpKSB7
Ci0gICAgICAgIG1fc2NoZW1lVHlwZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lVHlw
ZUJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0gbWFrZVVuaXF1ZTxJU09TY2hlbWVU
eXBlQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lVHlwZUJveC0+cmVhZCh2aWV3LCBsb2Nh
bE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTY4LDcgKzY4LDcgQEAg
Ym9vbCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVu
c2lnbmVkJiBvZmZzZXQpCiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgp
LmZpcnN0ID09IElTT1NjaGVtZUluZm9ybWF0aW9uQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAg
ICAgIG1fc2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZUlu
Zm9ybWF0aW9uQm94PigpOworICAgICAgICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0gbWFrZVVu
aXF1ZTxJU09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZUlu
Zm9ybWF0aW9uQm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAppbmRleCBmMzdiNzYy
NDlkOGUwMGZhMTdhMDU1OTI5ZTc3NjY4NTEzNzMzMzY2Li44ZTU2NzNlMDUxNmE2NTAxNGY1Y2Q0
OWY2MWFhN2I3NTM4ZDJjYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJU09TY2hlbWVUeXBl
Qm94OwogY2xhc3MgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g7CiAKLWNsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJ
U09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVy
biAic2luZiI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKaW5kZXggYjRmMjc3
YTY4NDdjYzIwZDRmYzlkNjI2ZjljYWNjNzQzMGFkYWY3MC4uYzgzYzRmZjdiMzhhYmYxYWUyMmZm
ZTVlNzJjN2ExZjg2YTA4ZWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIGJvb2wgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKERhdGFW
aWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICBpZiAobG9jYWxPZmZzZXQgKyBz
Y2hlbWVTcGVjaWZpY0JveFR5cGUudmFsdWUoKS5zZWNvbmQgPiBvZmZzZXQgKyBtX3NpemUpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9zY2hlbWVTcGVjaWZpY0RhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKKyAgICAgICAgbV9z
Y2hlbWVTcGVjaWZpY0RhdGEgPSBtYWtlVW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsK
ICAgICAgICAgaWYgKCFtX3NjaGVtZVNwZWNpZmljRGF0YS0+cmVhZCh2aWV3LCBsb2NhbE9mZnNl
dCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRp
b25Cb3guaAppbmRleCA5ZWRiMTg3OGE5YmE5MTliZWIxOWQ3YjYyMjNkOWU3ZTQ2NGY2ODU4Li5l
OGVjMGM0YzY5Yjc0ZTgzMzQ0OTg5NDFmMjRlZWU0MTBmMmNkZDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5m
b3JtYXRpb25Cb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9ybWF0aW9uQm94IDogcHVibGljIElT
T0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCBmaW5h
bCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5h
bWUoKSB7IHJldHVybiAic2NoaSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKaW5kZXggNjE5NjEwMzlmNDhj
ZjJiYzZlZTdiODg0ODA3M2M4Mzc2ZTU4MzEzMC4uNGI4ZjI2MzM3NTBmOGFkZjkwYmMyN2MyZDBj
ZjE0ZWY5ODJjMTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlwZUJveCA6
IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVC
b3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJD
QyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJzY2htIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94
LmgKaW5kZXggZjRlZmUyODEwNTFlM2M3YjI5ZGJlZjc4ZTQ0ZGEzYjAzODc4MDNmMy4uNDdmYTQ5
NzI0NmM3MTViZTFkMmNlZjliMGVhODdkZDdmNzllZjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25C
b3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCA6IHB1YmxpYyBJU09GdWxsQm94IHsK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCBmaW5hbCA6IHB1Ymxp
YyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkg
eyByZXR1cm4gInRlbmMiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKaW5kZXggOWVjNDA4OTRmMWUyOGEwNWEyMTRjYjMyMzUx
NGY3YjEzOTU1ZDI4NC4uNGI1MTZlZThkZDdmN2QyMzdlOGQ2MjcyNzk3YjAzMmRkMWY1YWNjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1
ZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgSlNDOjpEYXRhVmlldzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBJU09TdHJpbmdCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNz
IElTT1N0cmluZ0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgY29udGVudHMoKSB7IHJldHVybiBtX2NvbnRlbnRzOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAppbmRleCBhNjE2MGI2
NmFlOTQ2ODIwNjc3YWQyOTM0YjE4MWRlYjkzY2M0ZjQ5Li5hZTIzYmVmZmZlZDY0YTZkZTI4OTE3
NmU0MTUxMDExZjA2N2M5ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIE4gYnl0ZXMgOiBDdWVUaW1lQm94IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMg
OiBDdWVTZXR0aW5nc0JveCA6IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlUGF5bG9h
ZEJveCA6IGJveCA6IHJlcXVpcmVkCi1jbGFzcyBJU09XZWJWVFRDdWUgOiBwdWJsaWMgSVNPQm94
IHsKK2NsYXNzIElTT1dlYlZUVEN1ZSBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgog
ICAgIElTT1dlYlZUVEN1ZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGNvbnN0
IE1lZGlhVGltZSYgZHVyYXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5k
ZXggM2Q1ZWYwOWI3ZDk0MDMwNTk3NDFkODA4MjhmNTE4ZGVmYzg0MjNiNS4uZWYxMGIzM2E1NGIz
NWQ3ZDU3MWYwNmU0MTZmMTI5MjIwODlhYzA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcApAQCAtODQsNyArODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpKTsK
IH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBT
dHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oCmluZGV4
IDgzZjc3NjY3OWUxODljNmZjZTRlZjg2MjU3YjAwNWQxMTM3NGUyMmQuLjZmMjE1YjI3YWFkOTZj
M2ZhOWMyMDdmMzIwZWY5ZTMyYjQzYjdjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdP
cGVyYXRpb24uaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgTmljb3NpYSB7CiBzdHJ1Y3Qg
UGFpbnRpbmdPcGVyYXRpb25SZXBsYXkgeyB9OwogCiBzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb24g
eworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICB2aXJ0dWFsIH5QYWlu
dGluZ09wZXJhdGlvbigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYWlu
dGluZ09wZXJhdGlvblJlcGxheSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChXVEY6OlRl
eHRTdHJlYW0mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmlu
ZGV4IDEwOWMyYzU3NzY3OWExMjE0YWE2ZWExMDFjNmY0ODBmYmEyZWM2MDEuLjViZWU2MTNmY2Y2
YjQ2YTA3YzYyOGU1ODAxNmY0OWJiOTAyMWIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5l
SW50ZWdyYXRpb24uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6
cmVxdWVzdFVwZGF0ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRh
dGVTY29wZT4gU2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKIH0KIAogU2Nl
bmVJbnRlZ3JhdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAy
YjFhZWNmMGQxYjdlNmEzNDFiZjk0YmZmYWVkMjIwZjFhNDU4NjM4Li41MGUwYzNjN2Q5NzY4MjZi
YTdiYjgxODVkMWVlMTQyMTI5YWRhMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBhdXRv
IGNyZWF0ZUNvbW1hbmQoQXJncyYmLi4uIGFyZ3VtZW50cykgLT4gc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2Jhc2Vfb2Y8T3BlcgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGF1dG8gY3JlYXRlQ29t
bWFuZCgpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXJhdGlvbkRhdGE8
PiwgVD46OnZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+PgogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VD4o
KTsKIH0KIAogQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5j
cHAKaW5kZXggMGM4YTY3MGUzYTBhMzYzMDdlM2YyOTllY2RhMDI1NTJmZDc3NGVkMS4uYjM1MDhk
NTE3YjI0ZTQ3NWMwOGFmNDhiMzNlNDMxZmQyNzkyMDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250
ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcApAQCAtNzAsOCArNzAsOCBA
QCBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYg
YnVmZmVyKQogICAgICAgICB9KTsKIAogICAgIG1fY2Fpcm8uY29udGV4dCA9IGFkb3B0UmVmKGNh
aXJvX2NyZWF0ZShtX2NhaXJvLnN1cmZhY2UuZ2V0KCkpKTsKLSAgICBtX3BsYXRmb3JtQ29udGV4
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fp
cm8uY29udGV4dC5nZXQoKSk7Ci0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpjcmVhdGVGYWN0b3J5KCptX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fcGxhdGZv
cm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9j
YWlyby5jb250ZXh0LmdldCgpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmNyZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CiB9CiAKIFBhaW50aW5nQ29u
dGV4dENhaXJvOjpGb3JQYWludGluZzo6fkZvclBhaW50aW5nKCkKQEAgLTEwNCwxMCArMTA0LDEw
IEBAIHZvaWQgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkoY29uc3Qg
UGFpbnRpbmdPcGVyYXRpb25zJiBwYWludGluCiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JS
ZWNvcmRpbmc6OkZvclJlY29yZGluZyhQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0
aW9ucykKIHsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0PigKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PigKICAgICAgICAgWyZwYWludGluZ09wZXJhdGlvbnNd
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4
dCwgcGFpbnRpbmdPcGVyYXRpb25zKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CiAgICAg
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBkNGM5YjYwNWI0Y2QyOGUz
NDhlZmQ4NTMzNTAzOGI1OGM5YTRkZGZhLi44ZTM3OTBmN2FiNTRmNmIzZDk1NmYzMDcwNGM0Mjlj
MmFjZGMzMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0
byBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3Rv
cnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10oQmFja2luZ1N0b3JlJikgewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVU
ZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5n
U3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgK
aW5kZXggZWFkNDk3NzZlNTBhMjNjZmQ1MDE0YTdlOTY0MzBiM2RlMTI0ZGIwYS4uZDQzNmYyMGMz
MTYxYzA1NTRhNWFhMjJhMzkzMGE5OTVlZWMzNWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRl
eHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKQEAg
LTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgQmFja2luZ1N0b3Jl
VGV4dHVyZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgQmFja2luZ1N0b3JlOjpJbXBsLCBwdWJs
aWMgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9z
aXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCAzOGZkZDkzZGE2YjEzODgzMTQw
NTkxNjUzY2RmMjllMDdkZTMyMzk2Li43NTY5MmM3YzRhN2JmZGIxODcxZGYxODAyZTM4Nzc1MzZi
NjE1NTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBA
QCBhdXRvIENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgp
IC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10odWludDY0X3Qs
IENvbXBvc2l0aW9uTGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAg
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggNjU1NWJmYjA4MDI2
MWU4YTMwOTViZGU0ODNhMDYxYmI1NDIxNDU3NC4uNTMwYTY3NTEwMTcyNmVhMjg3MjhjNTNkODg4
ZGJkZWY3YWFlNzk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDAsNiArNDAs
NyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNs
YXNzIENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb21w
b3NpdGlvbkxheWVyOjpJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250
ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGwuY3BwCmluZGV4IDU2MTcyOGI1ZWYxZjQwZDgwYzUzNTk5MjY3MTA2NmFkODc0ODE5YTcuLjJm
YjBlYzk1OTE1YWViMGJhMDk2ZjgwYmM2OTBkMmYzYjI4NDhjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRvIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsOjpjcmVhdGVGYWN0b3J5KENsaWVudCYgY2xpZW50KSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0
dXJuIEZhY3RvcnkoCiAgICAgICAgIFsmY2xpZW50XShDb250ZW50TGF5ZXImKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bD4oY2xpZW50KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsPihjbGllbnQpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGwuaAppbmRleCBlZjk2YTYwODMxNjJkZTQxYzI3ZGU0YmYzNTdiOGE0ZmNhZjhkOWNmLi5iMDEw
NWI3M2FjMjI2NGY1N2NhN2I3ZTUwM2VjZjcwZGE1MjdkYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExh
eWVyVGV4dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwu
aApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
OwogbmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbCBmaW5hbCA6IHB1YmxpYyBDb250ZW50TGF5ZXI6OkltcGwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUdDM0RMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAppbmRleCA1MmVjNzBiNjgxZjdi
YzU2M2E2NzQ3NTQzNjIzODc2YjAzMTM5YTliLi45YTliZDQ2ODNiMjY3NDJhZmVjYjE0OTFmNjE0
NGYyYTc4YzU5NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcApA
QCAtODgsNyArODgsNyBAQCB2b2lkIEdDM0RMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAg
ICAgICAgIGF1dG8mIHByb3h5ID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGw+KG1fY29udGVudExheWVyLT5pbXBsKCkpLnByb3h5KCk7CiAKICAgICAgICAg
TG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgcHJveHkucHVzaE5leHRC
dWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4o
bV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250
ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOworICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZl
cihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQu
bV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRl
cm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBv
c2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaAppbmRleCAzMmRiOWRk
MzdhNmYwZDlmYThkNGQxODhlYjE4ZjhhZTE0NzVhMDBiLi45ZjU0NDViYmUxMTgzY2U3NDg1NTkz
Y2JiYmYxNjUwZWRjY2U0MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5o
CkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEdMQ29udGV4dDsKIG5hbWVzcGFjZSBOaWNvc2lhIHsK
IAogY2xhc3MgR0MzRExheWVyIDogcHVibGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdD
M0RMYXllcihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCYsIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAgICAgdmlydHVhbCB+R0MzRExheWVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVN
YXBwZXJJbXBsLmNwcAppbmRleCBhMmFlMzRhMzEzMjdlODcxNTY1NDE0NmQxOGY3N2M3YTY3ZjI0
MjE2Li5kMzUzYzhiZTFiNWJmYTExNmI2Y2I4NTIwOTcwMjc3Y2M5MzI0NWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJl
TWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBJbWFnZUJhY2tpbmdUZXh0dXJl
TWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFj
dG9yeSgKICAgICAgICAgW10oSW1hZ2VCYWNraW5nJikgewotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsK
ICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggMWE2MjNhZmE0MDkzYjIy
YWMyMGQxM2IzMjkzNjA4M2FjYjA4ZWE4MC4uNDliMWU5YjJlYzAzNTUyYTBiZDYxMjBhZTc3Yjhl
Njk0YTk0NjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3Mg
SW1hZ2U7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIEltYWdlQmFja2luZ1RleHR1cmVN
YXBwZXJJbXBsIGZpbmFsIDogcHVibGljIEltYWdlQmFja2luZzo6SW1wbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFj
dG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKaW5kZXggN2M2MTRm
YjQwMzM1OGVhNDA0NTZkODQ2MmNmOGRjNWJjM2E0ZWIxOS4uMTQ3MjE3OTA3NzI3Y2FlZWEyN2Vm
NjhhMDY5Y2MwNTMxMDgyMGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24u
aApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlbnNp
b25zM0RPcGVuR0xDb21tb24gOiBwdWJsaWMgRXh0ZW5zaW9uczNEIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zM0RPcGVuR0xD
b21tb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTY4
NDhmY2VjYTQxZTk3MzZmMmEzODE3YTlmZDAzY2ViYWUzYWMxMS4uYjk2MzYzYjU1MTkzNTZjOGNk
ZjQ2NTQzNjMyNmVkMDZjZWNlZDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJE
ZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0
ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dM
RVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVu
c2lvbnMzRE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1f
ZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHAKaW5kZXggYjI0ZGYwMzVlMjg4ZTFlYjJmOGFmOWY3YWI5MWQ3NzlkMGFj
YTQ5ZS4uMmEwZTViNzZlNGQ2YmFiNzBlOTBiMmYzZDI4ZWI0M2MwN2Y0MjUxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC02NTYsNyArNjU2
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2Jq
ZWN0IHNoYWRlcikKICAgICBBTkdMRVJlc291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZv
clNoYWRlcjsKIAogICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1l
SGFzaE1hcEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwor
ICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNo
PigpOwogICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNo
YWRlcnMuZ2V0KCkpOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2Vz
KTsKIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBw
ZWRTeW1ib2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAgICAg
ICAgLy8gQXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVlc3Rl
ZCBiZWZvcmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBhbmQg
YXJlbid0IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0uCiAg
ICAgICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhhc2hN
YXBGb3JTaGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAg
ICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+
KCk7CiAgICAgICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZv
clNoYWRlcnMuZ2V0KCkpOwogCiAgICAgICAgIGF1dG8gZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRl
SGFzaGVkTmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cAppbmRleCAyNDMwNDZkOTg5YWQ3MzhmN2M5ZjcxNDk1NTY3Yzk2YmIzNGM1NjQxLi43MGEyMGQ1
MGMzNTIxYTYxMjNlNmVmYWYxZjQ3NjhmNjQ5NWNkZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMRVMuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMp
Ci0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3Bl
bkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQo
KSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEs
NyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUo
R3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3ND
b250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNz
Q29udGV4dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQogICAg
ICwgbV9jb21waWxlcihpc0dMRVMyQ29tcGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dM
U0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1
ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKKyAgICAsIG1f
cHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVy
U3R5bGUpKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRl
eHQpOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlZDZjY2YxOTRiYmVlMWUwMGZkNDM5ZjYx
YTZkZTYyZTQwMzAyZWEzLi44ZmQzYWQ0ZjcyZDc2NGJkOTVkMjIwZjU4MWVkMmI3OTYyODgzYzlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApA
QCAtMTA2LDkgKzEwNiw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChH
cmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAjaWYgVVNFKE5JQ09TSUEp
Ci0gICAgbV9uaWNvc2lhTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5pY29zaWE6OkdDM0RMYXll
cj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8
Tmljb3NpYTo6R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2Vsc2UKLSAgICBtX3Rl
eG1hcExheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CisgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8
VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2Vu
ZGlmCiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTMyNSwxMCArMzI1LDEwIEBAIEV4
dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgIGlmICgh
bV9leHRlbnNpb25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICAgICAgLy8gZ2xHZXRTdHJp
bmdpIGlzIG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0
ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CisgICAg
ICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMs
ICBmYWxzZSk7CiAjZWxzZQogICAgICAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRo
ZSBDb3JlIHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCi0gICAg
ICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0
aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIG1f
ZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRl
eHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICB9CiAgICAgcmV0
dXJuICptX2V4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRm
b3JtTGF5ZXIuY3BwCmluZGV4IDE0ZjFkYmYxOGQ5MWIzOTA3NWUyZDUwZjIxNDliNzc2YmJjMTc0
OTMuLjY2MzIzMTU2OTViYTIxYzI2N2QxNTU5MzJlYmE5MTQ3ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3
IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVl
ZGVkKCkKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVy
UHJveHktPmxvY2soKSk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1
ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiht
X2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRl
eHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5
LT5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBt
X2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0
Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBs
YXRmb3JtTGF5ZXIuaAppbmRleCA4YjYwMjE0YWJhOWI4M2NhMTkzMGYxMzVjNzUzNDhiMjY2ZmU1
Y2FjLi5lNmYwOWM4Nzk4NTQ4NjMyZWU0YjBhYTVhNTYzMDYxNWEyNGEzNzg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdD
M0RQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oCkBAIC0zMiw2ICszMiw3IEBA
IGNsYXNzIEdMQ29udGV4dDsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7
CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllciA6IHB1YmxpYyBQbGF0Zm9y
bUxheWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXh0
dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIoR3JhcGhpY3NDb250ZXh0M0QmLCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyU3R5bGUpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJHQzNEUGxh
dGZvcm1MYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA5NzRiODU3OGI4OGFhNjQz
NTA5MWU4YjBjMzhiYjJkYjcxMGVmMTAyLi5hMmY3NTg2NmUzMjNiOGZkYmE0M2EwMDdkNDQ3YWFh
NDY1NzZiZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIFRl
eHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKCkKIAogICAgIG1fZGF0YSA9IG5ldyBUZXh0
dXJlTWFwcGVyR0xEYXRhKHBsYXRmb3JtQ29udGV4dCk7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQotICAgIG1fdGV4dHVyZVBvb2wgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFRleHR1cmVQ
b29sPihtX2NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBtX3RleHR1cmVQb29sID0gbWFrZVVuaXF1
ZTxCaXRtYXBUZXh0dXJlUG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7CiAjZW5kaWYKIH0KIApA
QCAtNzkwLDcgKzc5MCw3IEBAIFJlZjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNy
ZWF0ZVRleHR1cmUoR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOwogfQogCiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggN2FmZGYzMGEw
NWJjYTUzOTdiODAxOGJmZWJkODllMGUxZGE1MDMzMy4uZTExYTBiYjI3YjgxMGMyZDUyNzZiMmE5
YjBjNTA5Zjg4OTUwNjZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmCiAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1h
cHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7CiAgICAgdGV4
dHVyZS0+cmVzZXQobV9zaXplKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0
ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0
cmFGbGFncyk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmNwcAppbmRleCBjNzE0ZjZkNzhjMWNmMWE2MWQ0ZGZmNmI0MjA1MjFi
MDJlY2Q3YzUwLi4zNzkzNjc1YWM4ZDZiM2MzMmEzYjMxODE5M2U0OWE3YjM3ZGM0ODgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC03
MSw4ICs3MSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZh
dGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvCiAgICAgaWYgKG1fdGFyZ2V0TGF5
ZXIgJiYgbV9jdXJyZW50QnVmZmVyKQogICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50
c0xheWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKLSAgICBtX3JlbGVhc2VVbnVzZWRCdWZm
ZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOwot
ICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5M
b29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3Vy
cmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRv
clRocmVhZFVwZGF0ZVRpbWVyRmlyZWQpOworICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1l
ciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7CisgICAgbV9jb21wb3Np
dG9yVGhyZWFkVXBkYXRlVGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJG
aXJlZCk7CiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIG1fY29tcG9zaXRvclRocmVh
ZFVwZGF0ZVRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkNvbXBvc2l0
aW5nVGhyZWFkVXBkYXRlVGltZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAzNjdkOGE1M2NmMzcwZDIyMDJkNmYz
NDAxY2RjYjNhMDJmZjQyYzJiLi5kNDc1NzEwYmEwY2RkZmJjZGJkYTBjNjhjZTMwYjgxZWZhYWQ2
OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcApAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKICAgICAvLyBFbnN1cmUgdGhlIFRpbGVk
QmFja2luZ1N0b3JlIG9iamVjdCwgYW5kIGVuZm9yY2UgYSBjb21wbGV0ZSByZXBhaW50IGlmIGl0
J3Mgbm90IGJlZW4gcHJlc2VudCB5ZXQuCiAgICAgaWYgKCFsYXllclN0YXRlLm1haW5CYWNraW5n
U3RvcmUpIHsKLSAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gc3RkOjptYWtl
X3VuaXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgp
KTsKKyAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxUaWxl
ZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKICAgICAgICAg
bV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50ID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9U
aWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVGlsZS5oCmluZGV4IDJjMjRlMDg0ZTMyOTZhNDdlMDllOTYxMGQ3NDhkNmE4OGZlNDk2NTYu
LmZiYzI0NWJlMWU1MDM4NTNjNzMyZjAxZTVhMzRlNTU4NGE1YjNjMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1RpbGUuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUaWxl
ZEJhY2tpbmdTdG9yZTsKIAogY2xhc3MgVGlsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBDb29yZGluYXRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzYmU0MzExZGVh
YTAyNDk3YzdlZDFjZGNhMTM0NWJhNWE2ODAzMTA5Li40YTY5NzgyMmU0ZGUyY2RiOGI2NmY4MWQ0
MDRkOGRiZTgyYjQ5ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tp
bmdTdG9yZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpj
cmVhdGVUaWxlcyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgcwog
ICAgIHVuc2lnbmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgpOwog
ICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikgewog
ICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25dOwot
ICAgICAgICBtX3RpbGVzLmFkZChjb29yZGluYXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFRpbGU+KCp0
aGlzLCBjb29yZGluYXRlKSk7CisgICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIG1ha2VV
bmlxdWU8VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKICAgICB9CiAgICAgcmVxdWlyZWRUaWxl
Q291bnQgLT0gdGlsZXNUb0NyZWF0ZUNvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3Bw
CmluZGV4IGM4OGU5YmVmOWQ2NmNhMmI1NTAxOGM5MGY0YjBhNDI4YjQ2ODJlZjguLjRlYWYwMDEx
MjBjNDdmZmNlNTVhYjRkZmE5MjE4M2NlOGIzMTk0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3Rh
dGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6
b3BlcmF0b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBpZiAobV9tYXBRdWFk
KSB7CiAgICAgICAgIG1fbGFzdFBsYW5hclF1YWQgPSBvdGhlci5tX2xhc3RQbGFuYXJRdWFkOwog
ICAgICAgICBpZiAob3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAgICAg
IG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4o
Km90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5h
clNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgVHJhbnNm
b3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUm
IG90aGVyKQogICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBudWxscHRyOwogCiAgICAgaWYg
KG90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFu
c2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBt
YWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSk7CiAgICAgICAgIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTEyOSwxMiArMTI5LDEy
IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm1Gcm9tQ29uCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBhY2N1bXVs
YXRlZCB0cmFuc2Zvcm0gZnJvbSBsYXN0IHRpbWUsIG11bHRpcGx5IGluIHRoaXMgdHJhbnNmb3Jt
CiAgICAgaWYgKG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKG1fZGlyZWN0
aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQotICAgICAgICAgICAgbV9hY2N1bXVsYXRl
ZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5z
Zm9ybUZyb21Db250YWluZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgICAg
ICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdGlwbHko
dHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRlID09IEFj
Y3VtdWxhdGVUcmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3RhcnRlZCB0
byBhY2N1bXVsYXRlCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKKyAg
ICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25N
YXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAgIH0KICAgICAKICAgICBpZiAoYWNj
dW11bGF0ZSA9PSBGbGF0dGVuVHJhbnNmb3JtKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBU
cmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRRdWFk
KiBxdWFkKQogICAgIC8vIE1hcCB0aGUgcXVhZCBiYWNrIHRocm91Z2ggYW55IHRyYW5zZm9ybSBv
ciBvZmZzZXQgYmFjayBpbnRvIHRoZSBsYXN0IGZsYXR0ZW5pbmcgY29vcmRpbmF0ZSBzcGFjZS4K
ICAgICBGbG9hdFF1YWQgYmFja01hcHBlZFF1YWQoKnF1YWQpOwogICAgIG1hcFF1YWQoYmFja01h
cHBlZFF1YWQsIGludmVyc2VEaXJlY3Rpb24oKSk7Ci0gICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5
UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CisgICAg
bV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihiYWNrTWFw
cGVkUXVhZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBx
dWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sKiB3YXNDbGFtcGVkKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCmluZGV4IDEwODYzNzQwMGEyMGZhMmYwOWRmNmFkNDM5
MzNjYTdkYTE3ZjQ4NjEuLmI2MjU4MzZhNWNlMjI1YmY0N2YzMzBjMDhjMjlkOGM3NTY1MmVlNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgVHJhbnNm
b3JtU3RhdGUgewogICAgICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0YXRlIChu
byBhY2N1bXVsYXRlZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBxdWFkLgog
ICAgICAgICBBU1NFUlQobV9hY2N1bXVsYXRlZE9mZnNldCA9PSBMYXlvdXRTaXplKCkpOwogICAg
ICAgICBpZiAocXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHAKaW5kZXggZDMxYTI1NzlmYjFlMWM3OTQyNWQwMjkwNWViZWJjODhkMTRh
ZGQ1MC4uOGY3NzAyNzVkZTY5OTU2OGM4NTE1YWVhMGYyY2ZhMGU1MjA1NjcyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5j
cHAKQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4g
Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgIGJvb2wg
c3ludGhlc2l6ZUJvbGQgPSBpc0dESUZvbnRXZWlnaHRCb2xkKHdlaWdodCkgJiYgIWlzR0RJRm9u
dFdlaWdodEJvbGQobG9nRm9udC5sZldlaWdodCk7CiAgICAgYm9vbCBzeW50aGVzaXplSXRhbGlj
ID0gaXNJdGFsaWMoZm9udERlc2NyaXB0aW9uLml0YWxpYygpKSAmJiAhbG9nRm9udC5sZkl0YWxp
YzsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRh
PihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5
bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRh
bGljLCB1c2VHREkpOwogCiAjaWYgVVNFKENHKQogICAgIGJvb2wgZm9udENyZWF0aW9uRmFpbGVk
ID0gIXJlc3VsdC0+Y2dGb250KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXgg
Mzg3YTIzOWY4MjljMmQ3ODA5YzJjOTZkM2ZlMTI0ZGVlMTRiZDNkNy4uNjQ4NDg1YWMyNmNiMjM3
NWNmNjU3NGY4MWZmNGNkNjU2NzJjNTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cApAQCAtMTEzLDcgKzExMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgZm9udFJl
ZmVyZW5jZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAgICBp
ZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZv
bnROYW1lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihm
b250UmVmZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaAppbmRleCAxOTA0NDkwMDQ1ZjRlN2U3ZjdkYjgxZDk1ZjBhNmEyNDJiZDU0ODM4Li5l
YWI4MDZlNDJjMDYyZDU1OTc4OTk0NTJlZmU3NDc0ZTU5OWY5MmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKQEAgLTQxLDYgKzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9u
dEZlYXR1cmVTZXR0aW5nczsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
SEFORExFIGZvbnRSZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggYWI3Yzc5MGQ2MGYyZThmNzRhZjAzYzA2YWNm
YzcyYzhlMzljMjJkOS4uZWVlYWZlYmQ5MzNjYTljNzhkZDA1MTQxM2QyMzM0NGNhODUzYjAxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTkxLDcgKzkxLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1l
KTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25z
dCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI5NTM1NTAz
YzMwNmM1MDFhYTM5M2YzMWZmZDkyODg1ZWRlOWJkZWYuLmNjN2FkM2VjMzEwYmFmZjlmMmQ1MzEz
ZWEzN2ViYjY2N2M3OWQ0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcApAQCAtNDMsNiAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgaW50IGtGdWxsU2NyZWVu
QW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7IC8vIG1pbGxpc2Vjb25kcyAKIAogY2xhc3MgRnVsbFNj
cmVlbkNvbnRyb2xsZXI6OlByaXZhdGUgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbkNsaWVudCAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFByaXZhdGUoRnVsbFNjcmVlbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIEZ1bGxTY3JlZW5Db250
cm9sbGVyQ2xpZW50KiBjbGllbnQpIAogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVy
KQpAQCAtMTAzLDcgKzEwNCw3IEBAIExSRVNVTFQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZh
dGU6OmZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQgaHduZCwgVUlOVCBtCiB9CiAKIEZ1bGxT
Y3JlZW5Db250cm9sbGVyOjpGdWxsU2NyZWVuQ29udHJvbGxlcihGdWxsU2NyZWVuQ29udHJvbGxl
ckNsaWVudCogY2xpZW50KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UHJpdmF0
ZT4odGhpcywgY2xpZW50KSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFByaXZhdGU+KHRo
aXMsIGNsaWVudCkpCiB7CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CiB9CkBAIC0x
MzEsMTMgKzEzMiwxMyBAQCB2b2lkIEZ1bGxTY3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3Jl
ZW4oKQogICAgIG1fcHJpdmF0ZS0+bV9vcmlnaW5hbEZyYW1lID0gb3JpZ2luYWxGcmFtZTsKIAog
ICAgIEFTU0VSVCghbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cpOwotICAgIG1fcHJpdmF0
ZS0+bV9iYWNrZ3JvdW5kV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9i
YWNrZ3JvdW5kV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2lu
ZG93LT5jcmVhdGVXaW5kb3coMCk7CiAgICAgOjpBbmltYXRlV2luZG93KG1fcHJpdmF0ZS0+bV9i
YWNrZ3JvdW5kV2luZG93LT5od25kKCksIGtGdWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24sIEFX
X0JMRU5EIHwgQVdfQUNUSVZBVEUpOwogCiAgICAgbV9wcml2YXRlLT5tX2NsaWVudC0+ZnVsbFNj
cmVlbkNsaWVudFdpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS0+
bV9mdWxsU2NyZWVuV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9
IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9w
cml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IG1ha2VV
bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgp
KTsKICAgICBBU1NFUlQobV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwogICAgIG1fcHJp
dmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWly
b1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0Q2Fpcm9XaW4uY3BwCmluZGV4IDEwNjdiOTYwOTNkYjJlZDU5MWEyMWEzMWQ5ZDAyNTZk
YzEyOTNlODkuLmYxNDQyNTcyY2M2ZDFkNTRiYmVlNThiZGJjMzZlZGY3NzRhYWJiNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9vbCBoYXNBbHBoYSkKIAogICAgIGNh
aXJvX3QqIGNyID0gY3JlYXRlQ2Fpcm9Db250ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOwogCi0g
ICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOworICAgIG1fZGF0YSA9IG5ldyBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWly
bz4oY3IpKTsKICAgICBtX2RhdGEtPnBsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQ
cml2YXRlKG1fZGF0YSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXgg
YzJiYWZhZjk2YTE2MDcwODBiNzYzMzk1MjY2MmU3Njc3NjE0YjAwYy4uOTZjODI4MWFmNGIyMmM2
Njg2YWNiMTRjNWU4MmMxZDY5YjkwZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhE
QyBoZGMsIElEMkQxRENSZW5kZXJUYXJnZXQqKiByZW5kZXJUYXJnZXQsIFJFCiAKICAgICAoKnJl
bmRlclRhcmdldCktPkJpbmREQyhoZGMsICZyZWN0KTsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9y
bUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVu
ZGVyVGFyZ2V0KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7CiAgICAgbV9kYXRhID0gbmV3
IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250
ZXh0KSwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRh
LT5tX2hkYyA9IGhkYzsKIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6cGxhdGZvcm1Jbml0KEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgaWYgKCFTVUNDRUVE
RUQoaHIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0
LmdldCgpKTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKICAgICBtX2RhdGEgPSBu
ZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNv
bnRleHQpLCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2Rh
dGEtPm1faGRjID0gaGRjOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3Bw
CmluZGV4IGJkNzZlZmJiYTlkMGU4OTdkM2QyODhlODVlOGQyNDQ0Y2M0ZjhmNGUuLjFlYmI1YjA5
ZDM4NTM3YzAxOTIyMGI5NDdkY2FkOTQ0ZDhlMTAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3Jh
cGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVh
dGVGCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3Rv
cnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4
dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU1LDE0ICs1NSwxNCBA
QCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6Okdy
YXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbcmVuZGVyVGFyZ2V0XShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFy
Z2V0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29u
dGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwg
QWZmaW5lVHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29u
dGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFw
UmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVu
aXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBH
cmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQog
ewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2
YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0
KTsKQEAgLTcwLDkgKzcwLDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXgKIAogR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIDog
R3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zv
cm0geyB9KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQorICAgICwgbV9vd25lZFBsYXRm
b3JtQ29udGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJn
ZXQpKQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0g
ICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmlu
Z0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3ND
b250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBt
X3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQo
KSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRXaW4uY3BwCmluZGV4IDViZGU0Y2VkZjUxNmE5MTc5YTZkM2QzYjNlMzNkMTM0ZWQ1
YWI1MTEuLjFkODA0MjBjZjdlYzZjZDc3NWE2MmJhZWEyMmY5OTA2MDdlYjRjYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6V2luZG93
c0JpdG1hcDo6fldpbmRvd3NCaXRtYXAoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0OjpXaW5kb3dzQml0bWFwPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXAo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaW5k
b3dzQml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxX
aW5kb3dzQml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyRC5jcHAKaW5kZXggMDZjMTc0NTc5YTRiYzEzMDkxZjM0YjU3OTRhYWE5Mjk5M2Ji
YmEyNC4uMzVhOWZmNjExMzUxYzMzYzcxNzRkOTJhMWZkY2Y0NDcwZTgxYTg4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0
MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcApAQCAtMTEyLDggKzExMiw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vdGU6IFRoaXMgcGxhY2VzIHRoZSBiaXRt
YXBjb250ZXh0IGludG8gYSBsb2NrZWQgc3RhdGUgYmVjYXVzZSBvZiB0aGUgQmVnaW5EcmF3IGNh
bGwgaW4gdGhlIGNvbnN0cnVjdG9yLgotICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgp
KTsKLSAgICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
PihtX2RhdGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJl
bmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOworICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRl
eHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0Lmdl
dCgpKTsKKyAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0Piht
X2RhdGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRl
cmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAppbmRleCBlMDY2
MzEwYTBhY2E3MWJkOWFjODFkZDE2YmEwZGIxNWE3ZDUxMWQ1Li5kMjg1MzhhMTU4MjI4YjJjODll
MTgzYzczOTE0ZTEyYjhhMTg5MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbkNsaWVudCB7CiB9OwogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5DbGllbnQqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRv
dygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApp
bmRleCA1ODM4ZWMxNTdhMmM3YjcxNjNiNzE2ODJhNGViOGM4MDM0ZTk2MzIxLi42ZDY0YWU5YTZl
M2E0MTdmYjE0ZjEyMTY2ZjY4ZDNjOWE1NTI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtODIsNyArODIsNyBAQCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24oKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2
YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bj4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIp
IHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihw
bGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwg
MCwgMCwgMCwgMCk7CiAgICAgfQogfQpAQCAtMzAxLDcgKzMwMSw3IEBAIGZsb2F0IE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIAogc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpidWZmZXJlZCgpIGNvbnN0CiB7IAotICAgIGF1dG8gcmFuZ2VzID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byByYW5nZXMgPSBtYWtl
VW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBpZiAobV9wcmVzZW50ZXIgJiYgbV9w
cmVzZW50ZXItPm1heFRpbWVMb2FkZWQoKSA+IDApCiAgICAgICAgIHJhbmdlcy0+YWRkKE1lZGlh
VGltZTo6emVyb1RpbWUoKSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fcHJlc2VudGVy
LT5tYXhUaW1lTG9hZGVkKCkpKTsKICAgICByZXR1cm4gcmFuZ2VzOwpAQCAtODg4LDcgKzg4OCw3
IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50
ZXI6OkN1c3RvbVZpZGVvUHJlc2VudGVyKE1lCiAgICAgbV9zb3VyY2VSZWN0LmJvdHRvbSA9IDE7
CiAgICAgbV9zb3VyY2VSZWN0LnJpZ2h0ID0gMTsKIAotICAgIG1fcHJlc2VudGVyRW5naW5lID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKKyAgICBtX3ByZXNlbnRlckVu
Z2luZSA9IG1ha2VVbmlxdWU8RGlyZWN0M0RQcmVzZW50ZXI+KCk7CiAgICAgaWYgKCFtX3ByZXNl
bnRlckVuZ2luZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmgKaW5kZXggOTBlOWI3MjE1NzA4YWMyYTJlZmY3ZDRhNmFkZTE0
N2VlZTI4ODQ2Ni4uYTIxNjYxMTBiMzgwMGYxNzY0NzE2NWMyZDAyYTBkYTllYTk1MTAyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaApAQCAtNDcsNiAr
NDcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKE1lZGlhUGxheWVyKik7CiAgICAgfk1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpOwpAQCAtMTY4LDYgKzE2OSw3IEBAIGNs
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgfTsKIAogICAgIGNsYXNzIEFzeW5jQ2FsbGJhY2sg
OiBwdWJsaWMgSU1GQXN5bmNDYWxsYmFjaywgcHVibGljIE1lZGlhUGxheWVyTGlzdGVuZXIgewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFz
eW5jQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKiwgYm9vbCBldmVu
dCk7CiAgICAgICAgIH5Bc3luY0NhbGxiYWNrKCk7CkBAIC0xOTEsNiArMTkzLDcgQEAgY2xhc3Mg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmEKICAgICB0eXBlZGVmIERlcXVlPENPTVB0cjxJTUZTYW1wbGU+PiBW
aWRlb1NhbXBsZUxpc3Q7CiAKICAgICBjbGFzcyBWaWRlb1NhbXBsZVBvb2wgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFZpZGVvU2FtcGxl
UG9vbCgpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+VmlkZW9TYW1wbGVQb29sKCkgPSBk
ZWZhdWx0OwpAQCAtMjEyLDYgKzIxNSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAg
Y2xhc3MgRGlyZWN0M0RQcmVzZW50ZXI7CiAKICAgICBjbGFzcyBWaWRlb1NjaGVkdWxlciB7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVmlk
ZW9TY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflZpZGVvU2NoZWR1bGVy
KCkgPSBkZWZhdWx0OwpAQCAtMjU3LDYgKzI2MSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
CiAgICAgfTsKIAogICAgIGNsYXNzIERpcmVjdDNEUHJlc2VudGVyIHsKKyAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBEaXJlY3QzRFByZXNlbnRl
cigpOwogICAgICAgICB+RGlyZWN0M0RQcmVzZW50ZXIoKTsKQEAgLTMxOSw2ICszMjQsNyBAQCBj
bGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYQogICAgICAgICAsIHB1YmxpYyBJTUZWaWRlb0Rpc3BsYXlD
b250cm9sCiAgICAgICAgICwgcHVibGljIElNRkFzeW5jQ2FsbGJhY2sKICAgICAgICAgLCBwdWJs
aWMgTWVkaWFQbGF5ZXJMaXN0ZW5lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHB1YmxpYzoKICAgICAgICAgQ3VzdG9tVmlkZW9QcmVzZW50ZXIoTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uKik7CiAgICAgICAgIH5DdXN0b21WaWRlb1ByZXNlbnRlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRm
b3JtQ29udGV4dERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaAppbmRleCA2ZmJlMmI1ZWQ3NWFiM2JhMDRlMzAy
NTQ5Y2NlYjkxNjFhZjVjMDEzLi4xOTA1NDBlMDMzZDliN2NjOGM1NGI4YjFiZWY3NzY5MmJkNWY5
NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaApAQCAtNDUsNiArNDUsNyBAQCBzdHJ1
Y3QgU2hhZG93U3RhdGU7CiB9CiAKIGNsYXNzIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRCk7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQoSUQyRDFSZW5kZXJUYXJnZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCmluZGV4IDMzN2ZhZjM3OGRhNzk1
NWJlYTYxMGFlYzkwNzU3OTY2ZDZjNDgyMDAuLjlkN2Q5MmU4ZWFkOTZhMWJiZGZiZDFkOTJkYzk2
NjIxYzZjNDJmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBXS0NBSW1hZ2VRdWV1ZVByaXZhdGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJldGFpblB0cjxDQUltYWdlUXVldWVSZWY+
IG1faW1hZ2VRdWV1ZTsKIH07CkBAIC01MCwxMyArNTEsMTMgQEAgc3RhdGljIHZvaWQgV0tDQUlt
YWdlUXVldWVSZWxlYXNlKENBSW1hZ2VRdWV1ZVJlZiBpcSkKIH0KIAogV0tDQUltYWdlUXVldWU6
OldLQ0FJbWFnZVF1ZXVlKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90
IGNhcGFjaXR5KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdlUXVl
dWVQcml2YXRlPigpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8V0tDQUltYWdlUXVldWVQ
cml2YXRlPigpKQogewogICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlID0gYWRvcHRDRih3a0NB
SW1hZ2VRdWV1ZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBjYXBhY2l0eSkpOwogfQogCiBXS0NBSW1h
Z2VRdWV1ZTo6V0tDQUltYWdlUXVldWUoY29uc3QgV0tDQUltYWdlUXVldWUmIG8pCi0gICAgOiBt
X3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCisgICAg
OiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCiB7CiAgICAg
bV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBvLm1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDcx
YTAwYTMwYzBmYWVkZDliNDBlYzRmZmFkZjE3ODYzOGYyNWI4NTQuLjQyMjUyZDM0YjU0ZmU2YzJj
MjZiNTIyYzY2MGU4NjJmMDU2ZWYwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTQzLDI0ICs0MywyNCBAQCBlbnVtIENsaXBib2FyZERh
dGFUeXBlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVi
b2FyZD4oIkNMSVBCT0FSRCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJD
TElQQk9BUkQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGFzdGVib2FyZD4oIlBSSU1BUlkiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJv
YXJkPigiUFJJTUFSWSIpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0YTo6
Y3JlYXRlKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRh
dGE6OmNyZWF0ZSgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBBU1NFUlQoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5jcHAKaW5kZXggNDkwMzcxYWQ4OWVmMmU3OTZlMzQwMWFhYzFkYmI4MDZlYTk2NmViMC4uYWY4
ZmYzNDI0NmJjOTcyZjFhNWZmNzM3Zjk5Mjk4MDlmYjY2OWIwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApAQCAtMjY2LDYgKzI2Niw3
IEBAIFZlY3RvcjxHZGtBdG9tPiBQYXN0ZWJvYXJkSGVscGVyOjpkcm9wQXRvbXNGb3JDb250ZXh0
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnCiBzdGF0aWMgU2VsZWN0aW9uRGF0YSogc2V0dGlu
Z0NsaXBib2FyZFNlbGVjdGlvbjsKIAogc3RydWN0IENsaXBib2FyZFNldERhdGEgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVj
dGlvbkRhdGEmIHNlbGVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xl
YXJlZENhbGxiYWNrKQogICAgICAgICA6IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAg
ICAsIHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjaykpCkBAIC0zMDAsNyArMzAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNs
aXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWwKIAogICAg
IGlmIChudW1iZXJPZlRhcmdldHMgPiAwICYmIHRhYmxlKSB7CiAgICAgICAgIFNldEZvclNjb3Bl
PFNlbGVjdGlvbkRhdGEqPiBjaGFuZ2Uoc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgY29uc3Rf
Y2FzdDxTZWxlY3Rpb25EYXRhKj4oJnNlbGVjdGlvbikpOwotICAgICAgICBhdXRvIGRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPENsaXBib2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0
aW9uLCBXVEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSk7CisgICAgICAgIGF1dG8gZGF0
YSA9IG1ha2VVbmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rp
b24sIFdURk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19j
bGlwYm9hcmRfc2V0X3dpdGhfZGF0YShjbGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMs
IGdldENsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxs
YmFjaywgZGF0YS5nZXQoKSkpIHsKICAgICAgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9z
dG9yZShjbGlwYm9hcmQsIG51bGxwdHIsIDApOwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xp
cGJvYXJkX3NldF93aXRoX2RhdGEoKSBzdWNjZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2Fs
bGJhY2sgdGFrZXMgdGhlIG93bmVyc2hpcCBvZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcApp
bmRleCBiZGNjOTllODU5ZDQ5NzUwNzhmZjNjNWUyZWJjMzg1ZDliOTViOTUyLi43M2UwNzU4YTZl
ZGQxZTE5MzIzMTA4M2Y4OWE3ZTdmZGYyMGQxMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKQEAgLTM1LDIwICszNSwyMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVHYWRnZXQ+IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVh
dGUoY29uc3QgUmVuZGVyVGhlbWVHYQogewogICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CiAgICAg
Y2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJpYzoKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3Ms
IHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+
KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1l
R2FkZ2V0OjpUeXBlOjpUZXh0RmllbGQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3Np
dGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2Fk
Z2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJU
aGVtZUdhZGdldDo6VHlwZTo6UmFkaW86CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlw
ZTo6Q2hlY2s6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9n
Z2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNp
YmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QXJy
b3c6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRn
ZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVuZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywg
cG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6Okljb246Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywg
cGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZUljb25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsK
ICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpTY3JvbGxiYXI6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBw
YXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlv
bik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFy
ZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKaW5kZXggMDVkMTJkZDllYWZiZWYw
MmE0NTljYTUyNzY0MTdhNWI5YjBlODk3Ni4uY2E2ZWQ5MThhNTAzM2UyOTc2ZGI4NGQ4OWMyMDQ4
ODcwMGYwMmJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVXaWRnZXQuY3BwCkBAIC00Miw0OSArNDIsNDkgQEAgUmVuZGVyVGhlbWVXaWRnZXQmIFJl
bmRlclRoZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZShUeXBlIHdpZGdldFR5cGUpCiAgICAgYXV0byBh
ZGRSZXN1bHQgPSB3aWRnZXRNYXAoKS5lbnN1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdpZGdl
dFR5cGUpLCBbd2lkZ2V0VHlwZV0oKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVXaWRn
ZXQ+IHsKICAgICAgICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyUmlnaHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAg
IGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdDoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihH
VEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxs
LCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xsYmFyOgotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElP
Tl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFU
SU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JS
aWdodDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Ny
b2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpN
b2RlOjpJbmRpY2F0b3IpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhl
bWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxi
YXI6Ok1vZGU6OkluZGljYXRvcik7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5
cGU6OlZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9yTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElD
QUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Ny
b2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6SG9yaXpvbnRhbFNjcm9sbEluZGljYXRvcjoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9S
SVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFU
SU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpDaGVja0J1dHRvbjoKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihS
ZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6Q2hlY2spOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0
dG9uOjpUeXBlOjpDaGVjayk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6
OlJhZGlvQnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4o
UmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlvKTsKICAgICAgICAgY2FzZSBSZW5k
ZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpO
byk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVu
ZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Ok5vKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6QnV0dG9uRGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVz
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5k
ZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6Q29tYm9Cb3g6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJUaGVtZUNvbWJvQm94PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVDb21ib0JveD4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6
VHlwZTo6RW50cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZUVudHJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVF
bnRyeT4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VsZWN0ZWRF
bnRyeToKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50
cnk+KFJlbmRlclRoZW1lRW50cnk6OlNlbGVjdGVkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6
Olllcyk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNlYXJjaEVudHJ5
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hF
bnRyeT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2VhcmNo
RW50cnk+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNwaW5CdXR0
b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNwaW5C
dXR0b24+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNwaW5C
dXR0b24+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2Fs
U2xpZGVyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVT
bGlkZXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKICAg
ICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNsaWRlcjoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtf
T1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1l
UHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1v
ZGU6OkRldGVybWluYXRlKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
SW5kZXRlcm1pbmF0ZVByb2dyZXNzQmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9k
ZTo6SW5kZXRlcm1pbmF0ZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWlu
YXRlKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6TGlzdFZpZXc6Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lSWNvbj4oKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbj4oKTsKICAgICAgICAgY2FzZSBSZW5k
ZXJUaGVtZVdpZGdldDo6VHlwZTo6V2luZG93OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVXaW5kb3c+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4oKTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzksNyArMTM5LDcgQEAg
UmVuZGVyVGhlbWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKEd0a09yaWVudGF0aW9u
IG9yaWVudGF0aW9uLCBNb2RlIG1vZGUKICAgICBpbmZvLnR5cGUgPSBSZW5kZXJUaGVtZUdhZGdl
dDo6VHlwZTo6R2VuZXJpYzsKICAgICBpbmZvLm5hbWUgPSAiY29udGVudHMiOwogICAgIGluZm8u
Y2xhc3NMaXN0LmNsZWFyKCk7Ci0gICAgbV9jb250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRy
ZW4sIG1fc2Nyb2xsYmFyLmdldCgpKTsKKyAgICBtX2NvbnRlbnRzID0gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJl
biwgbV9zY3JvbGxiYXIuZ2V0KCkpOwogICAgIGluZm8ubmFtZSA9ICJzbGlkZXIiOwogICAgIG1f
c2xpZGVyID0gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShpbmZvLCBtX2NvbnRlbnRzLT5jaGls
ZChtX3Ryb3VnaFBvc2l0aW9uKSk7CiB9CkBAIC0xOTcsNyArMTk3LDcgQEAgUmVuZGVyVGhlbWVD
b21ib0JveDo6UmVuZGVyVGhlbWVDb21ib0JveCgpCiAgICAgfTsKICAgICBpbmZvLm5hbWUgPSAi
Ym94IjsKICAgICBpbmZvLmNsYXNzTGlzdCA9IHsgImhvcml6b250YWwiLCAibGlua2VkIiB9Owot
ICAgIG1fYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywg
R1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsK
KyAgICBtX2JveCA9IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19P
UklFTlRBVElPTl9IT1JJWk9OVEFMLCBjaGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CiAgICAg
UmVuZGVyVGhlbWVHYWRnZXQqIGJ1dHRvbiA9IG1fYm94LT5jaGlsZCgwKTsKICAgICBpbmZvLmNs
YXNzTGlzdC5yZW1vdmVMYXN0KCk7CiAgICAgbV9idXR0b25Cb3ggPSBSZW5kZXJUaGVtZUdhZGdl
dDo6Y3JlYXRlKGluZm8sIGJ1dHRvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4
IDg0MDdjMTEwMWRkZDZkYjZlMzc4ZGVmY2IzYWI4MjZiZjcyNjQ1NGQuLjc4Njk3ZWIwMDAwZjdm
N2I4MmE3ZDBlY2Y1Zjk4NWExZTkyODljMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIoYm9v
bCBvbmx5U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3JlYWRlcikg
ewotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRo
aXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwgZmFsc2UpOworICAgICAgICBtX3Jl
YWRlciA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwg
aW1nRGF0YU9mZnNldCwgZmFsc2UpOwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEu
Z2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3YmE3ZWQ5
MTAxY2UyNWE5YmY2ZTIzMTA4N2JmMGJjMTE0Y2MyMmQ2Li40ZjM0ODdlMzM0NzY0MDU0NzRjZjg2
YjVjNjA2ZDJjMTk4OGM3Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzM0
LDcgKzMzNCw3IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0
RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5LCBib29sIGFsbERhdGFSCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmICghbV9yZWFkZXIpIHsKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdJRkltYWdlUmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEdJ
RkltYWdlUmVhZGVyPih0aGlzKTsKICAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdl
dCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDFjY2E1ZTU5ZWVi
MzUxYjA1OGEyMWRiMTM0ZjY0Mzc5MWU1MDc3Y2EuLmQ3NzE4NmVhOTczOWJkZmIyYzU2MjI4ZWU0
Y2Y1ZTg4MjhkODg1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcApAQCAtMzIxLDcgKzMy
MSw3IEBAIGJvb2wgR0lGRnJhbWVDb250ZXh0OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6CiAgICAgICAgIGlmICghaXNEYXRhU2l6ZURl
ZmluZWQoKSB8fCAhaXNIZWFkZXJEZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgICAgICBtX2x6d0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkxaV0NvbnRleHQ+
KGNsaWVudCwgdGhpcyk7CisgICAgICAgIG1fbHp3Q29udGV4dCA9IG1ha2VVbmlxdWU8R0lGTFpX
Q29udGV4dD4oY2xpZW50LCB0aGlzKTsKICAgICAgICAgaWYgKCFtX2x6d0NvbnRleHQtPnByZXBh
cmVUb0RlY29kZSgpKSB7CiAgICAgICAgICAgICBtX2x6d0NvbnRleHQgPSBudWxscHRyOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgR0lGSW1hZ2VS
ZWFkZXI6OnNldFJlbWFpbmluZ0J5dGVzKHNpemVfdCByZW1haW5pbmdCeXRlcykKIHZvaWQgR0lG
SW1hZ2VSZWFkZXI6OmFkZEZyYW1lSWZOZWNlc3NhcnkoKQogewogICAgIGlmIChtX2ZyYW1lcy5p
c0VtcHR5KCkgfHwgbV9mcmFtZXMubGFzdCgpLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIG1fZnJh
bWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6
ZSgpKSk7CisgICAgICAgIG1fZnJhbWVzLmFwcGVuZChtYWtlVW5pcXVlPEdJRkZyYW1lQ29udGV4
dD4obV9mcmFtZXMuc2l6ZSgpKSk7CiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIHRv
IGNsb3NlIHRvIGRvTFpXKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDE4NzBi
YjE2MGI4NDk0OGYwYjU5ZGU0NTExNjM2YmE0YzBmMzhmMmUuLmZmNmExYzg3YWU2ZjA1YjQ5Y2Nj
MTI4YWJlMDVjMzAzZDZlZWJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0x
OTUsNyArMTk1LDcgQEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90
IGluZGV4KQogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBoYXZlIGFscmVhZHkgc2l6ZWQgbV9m
cmFtZUJ1ZmZlckNhY2hlIGJlZm9yZSB0aGlzLCBhbmQKICAgICAgICAgICAgIC8vIHdlIG11c3Qg
bm90IHJlc2l6ZSBpdCBhZ2FpbiBsYXRlciAoc2VlIGNhdXRpb24gaW4gZnJhbWVDb3VudCgpKS4K
ICAgICAgICAgICAgIEFTU0VSVChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpID09IG1fZGlyRW50
cmllcy5zaXplKCkpOwotICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAs
IHRydWUpOworICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IG1ha2VVbmlxdWU8Qk1Q
SW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOwogICAg
ICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAg
ICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0QnVmZmVyKCZtX2ZyYW1lQnVmZmVyQ2Fj
aGVbaW5kZXhdKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggYjcyYzU1YTJjYjkwOWZhMzQ2MWNmNzk1ZjA0ZGNlYWQ1MTA0ZThlZS4uZDBiOTE2YTVkYWY4
YTNhYTI1NGY0OTczNDczYTgzMTU1NzI5ZGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUo
Ym9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmICghbV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxK
UEVHSW1hZ2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8SlBF
R0ltYWdlUmVhZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUg
aW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBo
YXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjMThhMzliNTkxMzNh
MzE4ZjE1MTA1ODFlOGY5MWViZGQ3Njg3OWFiLi42MmNiOWIyMmEwMWYyNmU5ZjJjZDQxZGVhMzgx
YjM2MzY4OTdlZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTU2LDcgKzU1
Niw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5zaWdu
ZWQgaGFsdEF0RnJhbWUsIGJvb2wgYWxsRGF0YVJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFn
ZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxQTkdJbWFnZVJl
YWRlcj4odGhpcyk7CiAKICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1
dCB3ZSd2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmlu
ZGV4IDIwOWY4OGY0N2EzYjdjZGMwMTQzZGU5MmUyNGJhZGRmOTY2NGI1ZjQuLmNhZTNkY2YxNjQ3
OTZjZWVjYjY4YjI0NDhmMTEzM2MxMGVjOWMyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZShXQUtXaW5kb3cqIHdp
bmRvdykKICAgICA6IG1fd2luZG93KHdpbmRvdykKICAgICAsIG1fdG9tYnN0b25lKGFkb3B0TlMo
W1tMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmUgYWxsb2NdIGluaXRdKSkKLSAgICAsIG1fem9vbWVk
T3V0VGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGls
ZVNpemUpKQorICAgICwgbV96b29tZWRPdXRUaWxlR3JpZChtYWtlVW5pcXVlPExlZ2FjeVRpbGVH
cmlkPigqdGhpcywgbV90aWxlU2l6ZSkpCiAgICAgLCBtX3RpbGVDcmVhdGlvblRpbWVyKCp0aGlz
LCAmTGVnYWN5VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1lckZpcmVkKQogewogICAgIFtob3N0
TGF5ZXIoKSBpbnNlcnRTdWJsYXllcjptX3pvb21lZE91dFRpbGVHcmlkLT50aWxlSG9zdExheWVy
KCkgYXRJbmRleDowXTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6
Y29tbWl0U2NhbGVDaGFuZ2UoKQogCiAgICAgaWYgKG1fY3VycmVudFNjYWxlICE9IG1fem9vbWVk
T3V0VGlsZUdyaWQtPnNjYWxlKCkpIHsKICAgICAgICAgaWYgKCFtX3pvb21lZEluVGlsZUdyaWQp
IHsKLSAgICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGVn
YWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKKyAgICAgICAgICAgIG1fem9vbWVkSW5U
aWxlR3JpZCA9IG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsK
ICAgICAgICAgICAgIFtob3N0TGF5ZXIoKSBhZGRTdWJsYXllcjptX3pvb21lZEluVGlsZUdyaWQt
PnRpbGVIb3N0TGF5ZXIoKV07CiAgICAgICAgICAgICBob3N0TGF5ZXJTaXplQ2hhbmdlZCgpOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5o
CmluZGV4IDY2NDdlYzNhMzZkMTU4Nzg2OTRmMDdkMDJiMWZiMWU4YzM1MGQ1M2YuLjMwZWY5ZmMz
MWM4N2YxMWJmYWZlNGNhNmE5ZWE4MTI0ZDVmYzNhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVRpbGVHcmlkVGlsZTsKIAogY2xhc3MgTGVnYWN5VGlsZUdy
aWQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYg
SW50UG9pbnQgVGlsZUluZGV4OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tCmluZGV4IDE5MWFjNzY5NjIxNTEyMTUzZGJkY2IwNzhkZDY2ZjQ2NTUzYmMy
MWQuLjAyNzFiOTNlNzA1Y2UyYzQyZDYzMmZlMmRiMjlhYTQ2ZTgzNmQyMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02NiwxMiArNjYsMTIg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2lu
dCYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4o
ImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
c3RlYm9hcmQ+KCJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9hcmQiKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0
IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0
ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsKIH0KIAogI2VuZGlmCkBA
IC0xMDEsNyArMTAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJp
bmcmKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PihjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKCkpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggYTlkOWU0NzEwNTAxN2Q2NGQ4MmUz
N2M4YWEzMWNlNjQ2OTAyNTY4NS4uYzJiNWEwYjA4YmRmNzVlOGMwMWNkOWJkMmQ1MWMzMTQ5MzA1
ZjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC04NCw3
ICs4NCw3IEBAIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3Q29udmVy
dGVySWZOZWVkZWQoTlNVUkwgKnVybCwgTlNTdHJpbmcKICAgICBpZiAoW1FMUHJldmlld0dldFN1
cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OnVwZGF0ZWRNSU1FVHlwZS5nZXQo
KV0pIHsKICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB1dGkgPSBhZG9wdE5TKFBBTDo6c29m
dExpbmtfUXVpY2tMb29rX1FMVHlwZUNvcHlVVElGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIHVwZGF0
ZWRNSU1FVHlwZS5nZXQoKSkpOwogCi0gICAgICAgIGF1dG8gY29udmVydGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0KCkpOworICAgICAgICBhdXRv
IGNvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdldCgp
KTsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZXZpZXdSZXF1ZXN0ID0gY29udmVydGVyLT5w
cmV2aWV3UmVxdWVzdCgpOwogCiAgICAgICAgIC8vIFdlIHVzZSBbcmVxdWVzdCBVUkxdIGhlcmUg
aW5zdGVhZCBvZiB1cmwgc2luY2UgaXQgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KaW5kZXggMTA3Yzc3
Yzc1M2VhYjdkOTJkYTI5NDg3Y2E2ZjY1ZjgwNzA0ODIxMy4uNmQ5Y2NlMTViODc0ZjE1ZjE1NDg3
NWVhMGVlNmI5ZjEwMzVhODM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5l
cjo6Y3JlYXRlKFJlbW90ZUNvbW1hCiAgICAgaWYgKCFNZWRpYVBsYXllckxpYnJhcnkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVt
b3RlQ29tbWFuZExpc3RlbmVySU9TPihjbGllbnQpOwogfQogCiBSZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1M6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGll
bnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3Jv
bGxBbmltYXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmlt
YXRvcklPUy5tbQppbmRleCAwMWYwYTliYjIwYTI0OGI2OTk4ODU2NDcwYWVlMzc0YTk4Y2ZhNTFj
Li5lZDYzMmVhNWUzZjU1OTdlOWQ3NmZkMmU1NTY5NTYxZmU2YzRjMjI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCkBAIC00MCw3ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1h
dG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Ny
b2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihz
Y3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9ySU9TOjpTY3JvbGxBbmltYXRvcklP
UyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggMDU0M2VkNWU5ZmM5
ZmNmZTNiYmFhNDAzNTVlNDA3MmY5ZjNjM2Y0MC4uZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3Y2Q2
NzZlZmI5ZGU1YmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3Bl
L1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKTsKIH0KIAogUGFzdGVib2Fy
ZDo6UGFzdGVib2FyZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCmluZGV4IDUxNTIwZGNiYmVhNTkyMTg1YzMyNjcwMmNiYTY5ZmU4OGI0ZDRkZGUuLjhl
YjE1Y2Y4ODUyZDk4NTc0NDdlMDU5YzM4YWNhZWJhMjM0MTVkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgUGFz
dGVib2FyZDo6UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcHJvbWkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4o
TlNHZW5lcmFsUGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0dl
bmVyYWxQYm9hcmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQog
CkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVi
b2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0
ZWJvYXJkPihOU0RyYWdQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+
KE5TRHJhZ1Bib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFn
QW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEu
ZmlsZU5hbWVzKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRh
LnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3Rl
bmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYy5tbQppbmRleCAwNWNjMDg5NTdlMWQ1MDEyNGRkNjMyZTJhNGM4OTIxMjk4OTY5NjEx
Li4xYWEyY2Q4MDEzMmYyYzIxZWUzOGI5ZmZiZGI4MzM3M2JiZjRjMTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMu
bW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShS
ZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGllbnQpOwogfQogCiB2b2lk
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4
IGE4MzE3NTEyMmVjMmU0YjZiNmRlNTFiZTZkZjUyNjRiNDFhMWY4YzQuLjY4NjBlMzNjM2EzYjIx
NTYzMDVmYjMxYWY0MjdkYzQ5MDIzNTg3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5p
bWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEp
OwogfQogCiBTY3JvbGxBbmltYXRvck1hYzo6U2Nyb2xsQW5pbWF0b3JNYWMoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwu
Y3BwCmluZGV4IDFiOWRjNTM0NWI4ODFlYjM2ZDk2ZmNlMzU4MmRmMGU1NGExMzg1YmEuLmUyNDQ1
YmM4MjNmODZlMDU1YjBlNTc4NzdkNmNmNTMxYTRmZmNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
OjpjcmVhdGUKICAgICBpZiAoIXdyaXRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdy
aXRlci5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlk
ZW9UcmFja0lkKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVB
VkZJbXBsPih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBX
VEZNb3ZlKHZpZGVvVHJhY2tJZCkpOwogfQogCiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI+JiYgd3JpdGVyLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQsIFN0cmluZyYmIHZpZGVvVHJhY2tJ
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCmluZGV4IGQ0YWRiMTUyYmQ0
YmFlZjdlZjdiZjA1NWY2ZDlhODNkODY3ZTY3ZWIuLmEyMmY1NzFiYzUxNjExZjYxNzQ0OTEwNGNm
NWZjODYwZTUyZTlhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApA
QCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVN0cmVhbVBy
aXZhdGU7CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbCBmaW5hbCA6IHB1Ymxp
YyBNZWRpYVJlY29yZGVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGw+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBkYjk0ZmRh
ZjgzYThhYmQ2N2FmY2ZkNmVhMzY5ZmFhODljNDZjM2UyLi41OWFiMzg0MGZkNzM2Y2ExNDUwMTZj
N2Y2NjBlY2EzYjA5MDMyNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtOTEsMTQgKzkxLDE0IEBAIEF1ZGlvQ2FwdHVyZUZh
Y3RvcnkmIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpCiAKIEdTdHJlYW1l
ckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKEdTdHJlYW1l
ckNhcHR1cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1l
TWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0cmluZyB7IGRl
dmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3Zl
KGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJB
dWRpb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJl
YW1lckF1ZGlvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRl
YnVnKCk7CiB9CiAKIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBo
YXNoU2FsdCkKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZTo6QXVkaW8sIFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhh
c2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRp
b0NhcHR1cmVyPigpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlv
Q2FwdHVyZXI+KCkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKaW5kZXggOTUzZjNhOGEwZTRmNmEwNjJiOWI5
NGE4ZjQxNTFhNDlmMWE0MzAxZC4uMzQxNTQ5MjUxZWQ1NzFiNzVlZjVkMGMyZGVkZjFlNzdiNzUy
Mzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaApAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBHU3RyZWFtZXJBdWRpb0RhdGEgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgewor
Y2xhc3MgR1N0cmVhbWVyQXVkaW9EYXRhIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRh
IHsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJBdWRpb0RhdGEoR1JlZlB0cjxHc3RTYW1wbGU+JiYg
c2FtcGxlLCBHc3RBdWRpb0luZm8gaW5mbykKICAgICAgICAgOiBtX3NhbXBsZShXVEZNb3ZlKHNh
bXBsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCmluZGV4IGJiZTVhZTczOTU0
YWU1M2NjMjE2NTc5M2VjMDk2YTg4NzkyYWQ0ZjIuLmY5MmE2YTliMTI2MTEwMGYxOTM0NWY0ZWNh
MjE5NGJmZTFiOGEzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCkBAIC0z
Miw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lckNhcHR1
cmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFt
ZXJDYXB0dXJlcihHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLCBHUmVmUHRyPEdzdENhcHM+KTsKICAg
ICBHU3RyZWFtZXJDYXB0dXJlcihjb25zdCBjaGFyKiBzb3VyY2VGYWN0b3J5LCBHUmVmUHRyPEdz
dENhcHM+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3Vy
Y2UuY3BwCmluZGV4IGIzYWYzNWFmODI0ODhkZDRjZjgyMWNkM2VlYWU2M2Q5Y2YxYWNkODQuLmYz
ZTUxODZiZjY2ODc4MWVmYjEzOTVmZTg1MWIzNDMyM2M0MmEzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0
cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtMTA3LDYgKzEwNyw3
IEBAIEdzdFN0cmVhbSogd2Via2l0TWVkaWFTdHJlYW1OZXcoTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUqIHRyYWNrKQogCiBjbGFzcyBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIKICAgICA6
IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFt
VHJhY2tPYnNlcnZlcigpIHsgfTsKICAgICBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIo
V2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNyYykKQEAgLTE0Myw2ICsxNDQsNyBAQCBjbGFzcyBXZWJL
aXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIKIAogY2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1PYnNl
cnZlcgogICAgIDogcHVibGljIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlh
U3RyZWFtT2JzZXJ2ZXIoKSB7IH07CiAgICAgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcihXZWJL
aXRNZWRpYVN0cmVhbVNyYyogc3JjKQpAQCAtMzUxLDggKzM1Myw4IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF9tZWRpYV9zdHJlYW1fc3JjX2NsYXNzX2luaXQoV2ViS2l0TWVkaWFTdHJlYW1TcmNDbGFz
cyoga2xhc3MpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQoV2Vi
S2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYpCiB7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09i
c2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+
KHNlbGYpOwotICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFt
VHJhY2tPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVy
PihzZWxmKTsKKyAgICBzZWxmLT5tZWRpYVN0cmVhbU9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJL
aXRNZWRpYVN0cmVhbU9ic2VydmVyPihzZWxmKTsKICAgICBzZWxmLT5mbG93Q29tYmluZXIgPSBn
c3RfZmxvd19jb21iaW5lcl9uZXcoKTsKICAgICBzZWxmLT5maXJzdEF1ZGlvQnVmZmVyUHRzID0g
R1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgICBzZWxmLT5maXJzdEZyYW1lUHRzID0gR1NUX0NMT0NL
X1RJTUVfTk9ORTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZS5jcHAKaW5kZXggZTVkOWIwZTAyNzZlZGRhNWRiZDUyMGJjMTBmMzUxODBkMDE1ZDY5
Yi4uOTdiZTFmMTJmYmIyMmRjMzU4Yzk5YzgzOWY5ODFmMTY1NmE4ZTEyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEyNywx
NCArMTI3LDE0IEBAIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlOjpkaXNwbGF5RmFjdG9yeSgpCiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBu
YW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIgKnNvdXJjZV9mYWN0b3J5KQogICAg
IDogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUo
bmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5p
cXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKKyAgICAsIG1fY2Fw
dHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9yeSkp
CiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1
cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lVmlkZW9D
YXB0dXJlU291cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBk
ZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3Rk
OjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9j
YXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAg
ICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVy
RmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0dTdHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaAppbmRleCBlNGQ1MDhlMzE3OWFjNDdiZjFk
MTBmNGYyODdjNTQ3YmMyNTYwMDJhLi5lZmRhMjliZTM5NzE4YmJhNzkxMzQxOGNjNzNlYjlhZDM2
ODRmOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJG
YWN0b3J5LmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRGVjb2Rl
ckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdT
dHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBuZXdTb3VyY2Uo
U3RyaW5nIHRyYWNrSWQsIEdzdEVsZW1lbnQgKnNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNv
ZGVyRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKaW5kZXggNjk5NWM2MDJjYjE3
NDQ3ZmE3NDFkMzlkNDQ5NGMzNTYxZGMxYmI4Mi4uODM1ODFlODVhMzk2MmQ5N2UwMTc0M2IxMGU1
NmNlYWExNTFjZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5LmNwcApAQCAtNjAsNiArNjAsNyBAQCBHU1RfREVCVUdfQ0FURUdPUlko
d2Via2l0X3dlYnJ0Y2VuY19kZWJ1Zyk7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdT
dHJlYW1lclZpZGVvRW5jb2RlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9FbmNv
ZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmKQogICAgICAgICA6IG1fZmlyc3RGcmFt
ZVB0cyhHU1RfQ0xPQ0tfVElNRV9OT05FKQpAQCAtNTEyLDE0ICs1MTMsMTQgQEAgc3RkOjp1bmlx
dWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyPiBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5
OjpDcmVhdGVWaWRlb0UKICAgICAgICAgZ19vYmplY3RfZ2V0KHdlYnJ0Y2VuY29kZXIuZ2V0KCks
ICJlbmNvZGVyIiwgJmVuY29kZXIub3V0UHRyKCksIE5VTEwpOwogCiAgICAgICAgIGlmIChlbmNv
ZGVyKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVlA4RW5j
b2Rlcj4oZm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZQ
OEVuY29kZXI+KGZvcm1hdCk7CiAKICAgICAgICAgR1NUX0lORk8oIlVzaW5nIFZQOCBFbmNvZGVy
IGZyb20gTGliV2ViUlRDLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx3ZWJy
dGM6OkxpYnZweFZwOEVuY29kZXI+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazx3ZWJydGM6OkxpYnZweFZwOEVuY29kZXI+KCk7CiAgICAgfQogCiAg
ICAgaWYgKGZvcm1hdC5uYW1lID09IGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKQotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5oCmluZGV4IDc5NmEyMGY5NDVlM2E5NTE5OGVjZTEwZmU3MGQ5
YjUyZjcyMzNkMTEuLjE0ODNhMmIyMGIzNTE1YzcxYjdhMGM3YTUyMjYyNmU5ZmY1MzkyMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9H
U3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaApA
QCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJW
aWRlb0VuY29kZXJGYWN0b3J5IGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFj
dG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVh
bWVyVmlkZW9FbmNvZGVyRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEVE1GU2VuZGVyQmFja2VuZC5oCmluZGV4IGRjNmY4ZjNmYjA1N2ZiNTQwZDkwYzAwMjI2OGE5
OTc3NDQxMDI3N2YuLjRhMDYxZmNjOTUzYjEzZDU4M2JhZTU1NDUxNTViY2UwOGRmOGY5ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCkBAIC00
MCw2ICs0MCw3IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBS
VENEVE1GU2VuZGVyQmFja2VuZCwgcHJpdmF0ZSB3ZWJydGM6OkR0bWZTZW5kZXJPYnNlcnZlcklu
dGVyZmFjZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5k
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RHRt
ZlNlbmRlckludGVyZmFjZT4mJik7CiAgICAgfkxpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCAyMDdhYjc4YTlhMmJi
ZTQwYTBlZDRkYTY5NTY5YWVkYjEyMjk5ZTIwLi43NDUzM2M1ZmE0ZGYwZDRlNWE2NGQ3NWNlNjI3
YjMyNDJjNDZiODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAg
LTc5LDkgKzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNzIHByZXBhcmVT
b2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIH0KIAogY2xhc3MgQmFzaWNQ
YWNrZXRTb2NrZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBC
YXNpY1BhY2tldFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQmIG5ldHdvcmtUaHJlYWQpCi0gICAg
ICAgIDogbV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tl
dEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAgOiBtX3NvY2tldEZhY3RvcnkobWFr
ZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZh
Y3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAgfQogCkBAIC0xNzksNyArMTgwLDcg
QEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMo
UGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1bHQgPSBmYWN0b3J5QW5kVGhyZWFk
cy5zaWduYWxpbmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAKLSAgICBm
YWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDQXVkaW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZpY2VN
b2R1bGUgPSBtYWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpOwogfQogCiBzdGF0aWMg
aW5saW5lIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHN0YXRpY0ZhY3RvcnlBbmRU
aHJlYWRzKCkKQEAgLTI4OCwxMCArMjg5LDEwIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAg
ICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyht
X3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKIAogICAgIGlmICghZmFjdG9yeUFu
ZFRocmVhZHMubmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdv
cmtNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7
CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogCiAgICAg
aWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5KQotICAgICAgICBmYWN0
b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNp
Y1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsK
KyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSA9IG1ha2VVbmlx
dWU8QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1Ro
cmVhZCk7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeS0+c2V0RGlz
YWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rp
b25zKTsKIAogICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKmZhY3Rv
cnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29j
a2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbnVsbHB0cik7CkBAIC0zMTQsNyAr
MzE1LDcgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZh
Y2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxj
cmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7CiAgICAgZmFjdG9yeUFu
ZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZd
KCkgewotICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8
Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2Nr
ZXRGYWN0b3J5KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRBbGxvY2F0b3IgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3
b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwogICAgICAgICBpZiAoIW1fZW5hYmxl
RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAgICAgICAgICAgIGJhc2ljUG9ydEFs
bG9jYXRvci0+c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRvci0+ZmxhZ3MoKSB8IGNyaWNrZXQ6
OlBPUlRBTExPQ0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1FUkFUSU9OKTsKICAgICAgICAgcG9y
dEFsbG9jYXRvciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2NhdG9yKTsKQEAgLTMzNSw3ICszMzYs
NyBAQCBydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBMaWJXZWJSVENQcm92aWRlcjo6Y2Vy
dGlmaWNhdGVHZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gZ2V0
U3RhdGljRmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZl
cik7CiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcikKLSAg
ICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+KGZhY3RvcnlBbmRUaHJlYWRzLnNp
Z25hbGluZ1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5nZXQo
KSk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRv
cj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhy
ZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJldHVybiAqZmFjdG9yeUFuZFRocmVh
ZHMuY2VydGlmaWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5oCmluZGV4IGJkZjA5MDA0MGM5MDY1N2Y0OWYwY2U0YWUyODA3NzM4YTFlOGJlNzkuLjdhYThk
ZTJlYjNhNGM1NTVlMDlhNjBkN2Q3YzNhZDgzMTliMTE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5oCkBAIC02NCw2ICs2NCw3IEBAIHN0cnVjdCBSVENSdHBDYXBhYmlsaXRp
ZXM7CiBlbnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1wbGVtZW50ZWQsIEJhZFBh
cmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIExpYldlYlJUQ1Byb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiBjcmVhdGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmgKaW5kZXggNzcyYTM5
NWYwY2JiNDNlNzMwNzUwY2NiOTYzNjE2MWNhYTM0MWM2My4uZDNjMzgzOTVjMDc3ZjM0NjA0YjVi
YjBmNGI0M2FlMTEwMGNkZjIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXJDb2NvYS5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3Zp
ZGVyQ29jb2EgOiBwdWJsaWMgTGliV2ViUlRDUHJvdmlkZXIgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKSA9IGRlZmF1
bHQ7CiAgICAgfkxpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDE1ZTJhODc4OWMwN2ZiMGQw
YWVjNmY2YzIwZjdiYjE3ZmE4ZGI3ZDIuLjViODI3M2IwODUxOTZmZmQzMGU0ZDdhN2Y2NTUxMGJl
YzA4MDMxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0
cmVhbWVyLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIGJvb2wgTGliV2ViUlRDUHJvdmlkZXI6Ondl
YlJUQ0F2YWlsYWJsZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZh
Y3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFj
dG9yeT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0
b3J5PigpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5
PiBMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4o
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAppbmRleCA4MmNiY2IxYzY2ZDMyZWExOGNk
ZWIxNjc5MzhkNjhkM2IxMmU0MTlhLi5mN2Q4NWRjNjBhNjFhODE0NmRiYTBkMDNlNTVkNzU3NjJm
ZTkwZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hLmNwcApAQCAtMTg4LDggKzE4OCw4IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzCiAg
ICAgICAgIGlmICghcmVtb3RlSU9Vbml0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlw
dGlvbik7CisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNj
cmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNj
cmlwdGlvbik7CiAKICAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNl
OjpjcmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMiwgc3RyZWFtVHJhY2soKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBlOGUzZDM0ODZk
YTQzYWFjMWRkNTRiNzhlNmI0ZGY0ZGM5ODE2NzkwLi42MTFhYzE2YjllY2I4Njg5OGEzNzI2NDcx
Yzc2MjA3MTJmYjliMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
Lm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6
cmVjb25maWd1cmUoKQogICAgIGNvbnN0IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CiAg
ICAgRmlsbE91dEFTQkRGb3JMUENNKG1fc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCksIGNoYW5u
ZWxDb3VudCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBiaXRzUGVyQnl0ZSAqIGJ5dGVz
UGVyRmxvYXQsIGlzRmxvYXQsIGlzQmlnRW5kaWFuLCBpc05vbkludGVybGVhdmVkKTsKIAotICAg
IG1fYXVkaW9CdWZmZXJMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+
KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1p
dW1GcmFtZUNvdW50KTsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVk
aW9CdWZmZXJMaXN0PihtX3N0cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJh
bWUgKiBtX21heGltaXVtRnJhbWVDb3VudCk7CiAKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVm
IGZvcm1hdERlc2NyaXB0aW9uOwogICAgIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShO
VUxMLCAmbV9zdHJlYW1Gb3JtYXQsIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXREZXNj
cmlwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29j
b2EubW0KaW5kZXggZjlkYzRhODQ3ZjRhMzU1ZDljY2ZmNGNkZTAzMDhkMGQ1YzVjNDQ1Ni4uMzg4
ZDcxZTI0YjI1ZWJmNmQ3Nzg4MTRmZGQwYTk2NjNiMTcwNTQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29j
b2E6OmNvbnZlcnRUb1lVVihDVlBpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlm
ICghbV9waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVs
Rm9ybWF0VHlwZUtleTogQChwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpIH0pOworICAgICAg
ICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtD
VlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3Jt
YXQoKSkgfSk7CiAKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y29udmVydChw
aXhlbEJ1ZmZlcik7CiB9CkBAIC03NSw3ICs3NSw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIo
CiAgICAgICAgIEludFNpemUgc2l6ZSA9IHsgKGludClDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4
ZWxCdWZmZXIpICwgKGludClDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSB9Owog
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0ucm90
YXRlKHJvdGF0aW9uVG9BbmdsZShyb3RhdGlvbikpOwotICAgICAgICBtX3JvdGF0aW9uU2Vzc2lv
biA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFu
c2Zvcm0pLCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVy
KSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOworICAg
ICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25W
VD4oV1RGTW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRU
eXBlKHBpeGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0
aWJsZTo6Tm8pOwogICAgIH0KIAogICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRl
KHBpeGVsQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAppbmRleCA4ZTI5ZDdiODFhMTcz
ZGZhNTM3MDVmYTFlNjJjOWU4ODNjNGY5NTAyLi5kNDc2OWQ2OWU0YWYwNDcwZDYyY2U5MGI3NTQ0
MGUyODI3NjllN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCkBAIC0zNSw2ICszNSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5k
bGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrLmgKaW5kZXggM2M2ZGUxYzRlYmU0ZWM3NDczNTQwYWVjY2I4OTc2MmIxOTU1NWNk
NC4uMTM4OGFkMDUxMzEwOGIyZWI5MmVjMmJiZTI4OTMzNjUyZTk5YTA4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jayBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIsIHB1YmxpYyBUaW1lckV2ZW50QmFzZWRNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAppbmRleCAyZjFmYjU1ZWU2NzFmMmYy
MjhmYzUxNTFkMGRkNjljZjhlYzY5NWNiLi4yYzdjNDFiZDY5NmZmMWY5YmFiMzgzODFhNGI1ODM4
NTY4YjE4YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05v
dGlmaWVyc01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90
aWZpZXJzTW9jay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmll
cjo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGkK
IAogdm9pZCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKCkKIHsKLSAgICBtX2NsaWVu
dC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoc3RkOjptYWtlX3VuaXF1ZTxSVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVs
SW5pdCgpKSk7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKG1ha2VVbmlx
dWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2si
LCBSVENEYXRhQ2hhbm5lbEluaXQoKSkpOwogfQogCiBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI6
OkRhdGFDaGFubmVsU3RhdGVOb3RpZmllcihSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNs
aWVudCwgUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggNTU5OTMzODJiM2ExZGMzNmQ4MzU2YjYxYjI1Yzcw
MDJlMDczNDdmZS4uMzg3YTIxZGFmNDU1MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4ODY5MGQ3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQK
IHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQ
bGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCisgICAgcmVnaXN0cmFy
KFtdIChNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAg
c3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
OjpidWZmZXJlZCgpIGNvbnN0CiAgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2YXRlKQogICAgICAg
ICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCk7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBib29sIE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGNj
NjdjZTY4OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjguLjkwNTE0MzE2MjFhOGMxMDhh
NmVmMGY1MWViNjBmNzc0YWZjYzBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE1OSw5ICsxNTksOSBA
QCBCbG9iUmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRh
dGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdAogICAgICwgbV9hc3luYyB7IGFzeW5jIH0KIHsKICAg
ICBpZiAobV9hc3luYykKLSAgICAgICAgbV9hc3luY1N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8
QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIG1fYXN5bmNTdHJlYW0gPSBtYWtlVW5p
cXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJlYW0g
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVTdHJlYW0+KCk7CisgICAgICAgIG1fc3RyZWFtID0gbWFr
ZVVuaXF1ZTxGaWxlU3RyZWFtPigpOwogfQogCiBCbG9iUmVzb3VyY2VIYW5kbGU6On5CbG9iUmVz
b3VyY2VIYW5kbGUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCmluZGV4IDgxMTJiOTczZWVmNTRlZDdhNWM3YTUx
NGNmMTAyYWM5OTFlNzY1MzMuLmI1NDFmNjJlZTAwNTIwMzYyYzE1NTdmN2NhNDk2NGEyMzdiODc0
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERl
Y29kZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgRGVjb2RpbmdSZXN1bHREaXNwYXRj
aGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlY29kaW5nUmVzdWx0RGlzcGEKIAog
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNrKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2Rl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxEZWNvZGVUYXNrPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVU
YXNrPigKICAgICAgICAgdXJsLnN0cmluZygpLAogICAgICAgICBzY2hlZHVsZUNvbnRleHQsCiAg
ICAgICAgIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggYTk4NDNmNTBlNWE0
MzQwM2Q4ZjUyZjBhOTY3ZjkwMjc4NjVlOGQ1Ni4uOGRhZWM1NGExMzQyZGFiNTljMzVjYzQ5Mjdh
MDBmZTYyMjk0OTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMzcsNiArMzcsNyBAQCBXRUJDT1JFX0VYUE9SVCBl
eHRlcm4gY29uc3QgY2hhciogY29uc3QgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbDsgLy8gVXNl
ZCBmb3IgZQogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yRG9t
YWluV2ViS2l0U2VydmljZVdvcmtlcjsgLy8gVXNlZCBmb3IgZXJyb3JzIHRoYXQgaGFwcGVuIHdo
ZW4gbG9hZGluZyBhIHJlc291cmNlIGZyb20gYSBzZXJ2aWNlIHdvcmtlci4KIAogY2xhc3MgUmVz
b3VyY2VFcnJvckJhc2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5j
cHAKaW5kZXggMzBjMjdmNTc2YTE3N2U2YjZhYjE5NDc0MGE3ZDkwMjViNjU5ZmNhZC4uNmEzMWUz
ZTUyN2Y4ZWM5MmQ2ZjYyYjk2Y2RkODE5NDQxNGI1NWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTc0LDcgKzc0LDcg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIo
Y29uc3QgQXRvbVN0cmluZyYgcHJvdG9jb2wKIH0KIAogUmVzb3VyY2VIYW5kbGU6OlJlc291cmNl
SGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGlu
ZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25p
ZmYpCi0gICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhp
cywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50
U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZikpCisgICAgOiBkKG1ha2VVbmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRl
cm5hbD4odGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91
bGRDb250ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBz
aG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikpCiB7CiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLmlz
VmFsaWQoKSkgewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUoSW52YWxpZFVSTEZhaWx1cmUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZGFkOTAxMGY5NTcwZWJjNTY3
NjMzNTQzZmQxZmM1MDJmODQ2OWI5OS4uNzEzYjRkZmIzMGIyYWZkZmJlYWZmNGVlNTM3MGEyNTQ2
ZmFkM2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xNjksNyAr
MTY5LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICB9OwogCiAgICAgaWYgKG1fbWVz
c2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkp
OwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAg
ICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZl
UmVzcG9uc2UKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBA
IC0yMjYsNyArMjI2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICB9OwogICAgIAog
ICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAg
ICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdU
Rk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92
ZSh3b3JrKSk7CiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKCkK
ICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdl
UXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUo
d29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRG
YWlsKENGRXJyb3JSZWYKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAg
ICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgp
Pj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VV
bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTMxMSw3ICszMTEsNyBA
QCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OgogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2Fn
ZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwog
ICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBt
X3NlbWFwaG9yZS53YWl0KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hh
bGxlbmcKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRp
ZFNlbmRCb2R5RGF0YShDRgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAg
ICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFr
ZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzgwLDcgKzM4MCw3
IEBAIEJvb2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNz
YWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1
ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7
CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAg
IG1fc2VtYXBob3JlLndhaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBjOWI1M2Uz
MTJhZDg1NTc2ZDM2NmVmNGRjNTM3NDM5MWZlOGM2OTBjLi5iYTU1ZjAwNDhiOGU0ZGRjNWIwNzM0
ZDk5M2RjOWIxM2I4Y2IyYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01MjMsNyAr
NTIzLDcgQEAgLSAodm9pZClfcmVzdGFydAogCiAgICAgX3Jlc291cmNlID0gc2VsZi5zZXNzaW9u
LmxvYWRlci5yZXF1ZXN0UmVzb3VyY2Uoc2VsZi5vcmlnaW5hbFJlcXVlc3QsIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAo
X3Jlc291cmNlKQotICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2VsZikpOworICAgICAgICBfcmVz
b3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudD4oc2VsZikpOwogfQogCiAtICh2b2lkKV9jYW5jZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGE0NWE1ZjRl
NGEwMjhmZTZlN2YyZGZiNzVlYzJjOGFlYzkzZWQyYmIuLjEwMTYyNGYyOTAwYTk0Y2M3ZDFhODk5
ODk2NzZkNmI0NWFiN2ZhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIE9wdGlvbmFs
PFZlY3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0CiAgICAgICAgICJBTkQgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdM
T0IgPykpICJcCiAgICAgICAgICJPUkRFUiBCWSBsZW5ndGgocGF0aCkgREVTQywgbGFzdHVwZGF0
ZWQiOwogCi0gICAgYXV0byBwc3RtdCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50
PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8gcHN0bXQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0
YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpZiAoIXBzdG10KQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCkBAIC01NjYsNyArNTY2LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6
ZGVsZXRlQWxsQ29va2llcygpCiAKIHZvaWQgQ29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0
ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0
YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwog
ICAgIGludCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlQocmV0ID09IFNR
TElURV9PSyk7CiAgICAgbV9zdGF0ZW1lbnRzLmFkZChzcWwsIFdURk1vdmUoc3RhdGVtZW50KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5oCmluZGV4IDBjMDNlOWQ2OTJjN2Y2ZGM2MTMwODZmZjI1NWMyMGU1YzZiYmU5ZTkuLjI2ODdh
ZTc0ZmI5ZDk5NDI5NzJiZWRjYWM2YWI5YjExNTlhN2U1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCkBAIC00MSw2ICs0MSw3
IEBAIGVudW0gY2xhc3MgQ29va2llQWNjZXB0UG9saWN5IHsKIH07CiAKIGNsYXNzIENvb2tpZUph
ckRCIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShDb29raWVKYXJEQik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggMTEwMjdjZTNiM2Nm
NjM4OGY5OTU0YWFmNDljNDkwM2ZlOTNmZGZmNS4uOGNlMTE0Mzg0OGZiMjMxOGJhMTk5MGVhZDE4
ZTE1ZjM3ZDg0MzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ3VybENhY2hlRW50cnkgewotCisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmws
IFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpOwogICAgIH5DdXJs
Q2FjaGVFbnRyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGZhNWM4ZDJkMjFiNjI3MzgxNWQw
MjNhNGYyMDQ1NTAxNmU5NjM4YWYuLmUyYjRiNWRmYmRhNjJhM2MwY2I2YmY5MTgxYmJkNjhmZDdh
NGEwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEN1cmxD
YWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIC0tZW5kOyAvLyBMYXN0IGxpbmUgaXMg
ZW1wdHkKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBpdC0+
c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CisgICAgICAg
IGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0
ciwgbV9jYWNoZURpcik7CiAKICAgICAgICAgaWYgKGNhY2hlRW50cnktPmlzQ2FjaGVkKCkgJiYg
Y2FjaGVFbnRyeS0+ZW50cnlTaXplKCkgPCBtX3N0b3JhZ2VTaXplTGltaXQpIHsKICAgICAgICAg
ICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IGNhY2hlRW50cnktPmVudHJ5U2l6ZSgpOwpAQCAt
MjEzLDcgKzIxMyw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlSGFuZGxlJiBqb2IsIFJlc291cmNlUmVzcG9uc2UmCiAKICAgICAgICAgaW52YWxp
ZGF0ZUNhY2hlRW50cnkodXJsKTsgLy8gSW52YWxpZGF0ZSBleGlzdGluZyBlbnRyeSBvbiAyMDAK
IAotICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxDYWNoZUVu
dHJ5Pih1cmwsICZqb2IsIG1fY2FjaGVEaXIpOworICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBt
YWtlVW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2IsIG1fY2FjaGVEaXIpOwogICAgICAg
ICBib29sIGNhY2hlYWJsZSA9IGNhY2hlRW50cnktPnBhcnNlUmVzcG9uc2VIZWFkZXJzKHJlc3Bv
bnNlKTsKICAgICAgICAgaWYgKGNhY2hlYWJsZSkgewogICAgICAgICAgICAgY2FjaGVFbnRyeS0+
c2V0SXNMb2FkaW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggN2QxNzIxN2MyZTQ0MmFjNmYzZGU4YzRi
NjBhOTUyNmM5ZjY1ODQyYS4uN2IwNGZhMjZhNDJhYjk3OGFlMDdiZDMxZjBlNjkxNTUxYmJjNDYw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENvbnRleHQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgQ3VybENvbnRleHQ6OkN1cmxDb250ZXh0
KCkKICAgICBpZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFkQXM8c2lnbmVkPigiV0VCS0lUX0NV
UkxfTUFYX0hPU1RfQ09OTkVDVElPTlMiKSkKICAgICAgICAgbWF4SG9zdENvbm5lY3Rpb25zID0g
KnZhbHVlOwogCi0gICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxSZXF1ZXN0
U2NoZWR1bGVyPihtYXhDb25uZWN0cywgbWF4VG90YWxDb25uZWN0aW9ucywgbWF4SG9zdENvbm5l
Y3Rpb25zKTsKKyAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVs
ZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMp
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fdmVyYm9zZSA9IGVudlZhci5kZWZpbmVkKCJERUJV
R19DVVJMIik7CkBAIC0zMzYsNyArMzM2LDcgQEAgQ1VSTGNvZGUgQ3VybEhhbmRsZTo6d2lsbFNl
dHVwU3NsQ3R4KHZvaWQqIHNzbEN0eCkKICAgICAgICAgcmV0dXJuIENVUkxFX0FCT1JURURfQllf
Q0FMTEJBQ0s7CiAKICAgICBpZiAoIW1fc3NsVmVyaWZpZXIpCi0gICAgICAgIG1fc3NsVmVyaWZp
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxTU0xWZXJpZmllcj4oc3NsQ3R4KTsKKyAgICAgICAg
bV9zc2xWZXJpZmllciA9IG1ha2VVbmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOwogCiAg
ICAgcmV0dXJuIENVUkxFX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAppbmRleCA3ZDA2MDY4Y2Q5ZDFhZWJlZTQyZDM4NTk0
YWJkMDk0YjkwMTE0NDQ0Li5hNGY4YzAyODI3NjdiMGI0ODc3MGEwNDhlZTg1MmYxNjZlMDdhN2Y1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIGNsYXNzIEN1cmxDb250ZXh0IDogcHVibGljIEN1
cmxHbG9iYWwgewogLy8gQ3VybE11bHRpSGFuZGxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIEN1cmxNdWx0aUhhbmRsZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybE11bHRpSGFu
ZGxlKTsKIAogcHVibGljOgpAQCAtMjAyLDYgKzIwMyw3IEBAIGNsYXNzIEhUVFBIZWFkZXJNYXA7
CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiAKIGNsYXNzIEN1cmxIYW5kbGUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxIYW5k
bGUpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IGRkNjNhNGFiNDI3MDNm
NmU5NDJmOGVmOTU1MTM2YTg2YmNkZjY2NTEuLjJiNDc3MzZmNmU3MWYxYzQ5NzgxYmUxOTQ2YzBi
OGUzNmJkNjc1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC03Niw3ICs3Niw3IEBAIGNv
bnN0IFZlY3RvcjxjaGFyPiogQ3VybEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFtX3Bvc3REYXRhKQotICAgICAgICBtX3Bv
c3REYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0
ZW4oKSk7CisgICAgICAgIG1fcG9zdERhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9m
b3JtRGF0YS0+ZmxhdHRlbigpKTsKIAogICAgIHJldHVybiBtX3Bvc3REYXRhLmdldCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGE4YmI4ZDgxYTdhYmQ3MTc0M2JkMzk1ZGNjODY2
MzE3OWZkZTJkNTUuLmNjZGJiMjgyMzlmMjJjMzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEN1cmxNdWx0aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVk
KEN1cmxNdWwKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwg
KmJvdW5kYXJ5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihj
bGllbnQsICpib3VuZGFyeSk7CiB9CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhh
bmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuaAppbmRleCA4MDRjNzQ0NmM0NTNiNjcxNWY4ODVlOWFmYzI3Mzg4NThlMjY4
NzFhLi43MjBjNjk4MGVkZDNkYWUzZTEyYzYzZjA4YjYzYzZmODk2ZTUzMzAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEN1
cmxNdWx0aXBhcnRIYW5kbGU+IGNyZWF0ZUlmTmVlZGVkKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGll
bnQmLCBjb25zdCBDdXJsUmVzcG9uc2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMTdmZWRkZjBlMDgxNGQ1
ZWFkMDY4MmY2ZWYxNGY3NjVjOTFlNTkwOC4uYzFkMTU3YmVmZjk0NDU0NjMxY2QwNTk2MmYyMzEx
MzJmZDhkYjhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDdXJsUmVxdWVz
dDo6Y2FsbENsaWVudChGdW5jdGlvbjx2b2lkKEN1cmxSZXF1ZXN0JiwgQ3VybFJlcXVlc3RDbGll
bnQmKT4mJgogdm9pZCBDdXJsUmVxdWVzdDo6cnVuT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrKQogewogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdl
UXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUo
dGFzaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKICAgICBlbHNlIGlmIChpc01haW5UaHJlYWQo
KSkKICAgICAgICAgdGFzaygpOwogICAgIGVsc2UKQEAgLTIwNSw3ICsyMDUsNyBAQCBDVVJMKiBD
dXJsUmVxdWVzdDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgYXV0byBodHRwSGVhZGVyRmllbGRzID0g
bV9yZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICBhcHBlbmRBY2NlcHRMYW5ndWFnZUhl
YWRlcihodHRwSGVhZGVyRmllbGRzKTsKIAotICAgIG1fY3VybEhhbmRsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3VybEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUgPSBtYWtlVW5pcXVlPEN1cmxI
YW5kbGU+KCk7CiAKICAgICBtX2N1cmxIYW5kbGUtPnNldFVybChtX3JlcXVlc3QudXJsKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAppbmRleCA5MTgzN2FmOWYzZTQ3NzNiNWM3MWMxYzI2
MGRiOTZmNTg2YjIxMWFmLi4zYWE1ZjUyZGI2MjdhYmIwZWNjYWYyOTIxM2RjZTEyZmJjNmZiYzky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEN1
cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQoKQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgbV9jdXJsTXVsdGlIYW5kbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1
cmxNdWx0aUhhbmRsZT4oKTsKKyAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IG1ha2VVbmlxdWU8Q3Vy
bE11bHRpSGFuZGxlPigpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhDb25uZWN0cyht
X21heENvbm5lY3RzKTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4VG90YWxDb25uZWN0
aW9ucyhtX21heFRvdGFsQ29ubmVjdGlvbnMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRN
YXhIb3N0Q29ubmVjdGlvbnMobV9tYXhIb3N0Q29ubmVjdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVs
ZXIuaAppbmRleCBjYTNiYmE4MTM0NDBiZmY2ZTgwMzEyNjQwOTc2Y2MzODhhNzQ4NjRmLi40Yjk1
YzBkMTlhZDkwNDJkMmFjNzBlZDRiMTMzZjhkMWQwYzYzMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVs
ZXIuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVx
dWVzdFNjaGVkdWxlckNsaWVudDsKIAogY2xhc3MgQ3VybFJlcXVlc3RTY2hlZHVsZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxS
ZXF1ZXN0U2NoZWR1bGVyKTsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8Q3VybFJlcXVlc3RT
Y2hlZHVsZXI+OwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5oCmluZGV4IDQ1MmY3MDVmOWNiOGZlMjkxOWNm
Mjg1NmRlZThkMGFkMWE4MTRmMWEuLjNiNTljYjFmODYzNjU0ODgxZDQ2ZTY1YmJlOTU1NGU5ZjY2
MzQzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU1NMVmVyaWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFNTTFZlcmlmaWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ3VybFNTTFZlcmlmaWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsU1NMVmVyaWZpZXIpOwogcHVibGljOgog
ICAgIGVudW0gY2xhc3MgU1NMQ2VydGlmaWNhdGVGbGFncyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CmluZGV4IDdiZTAwYWQzNGI4ZTU5ODgyZGUwZjUxM2I2YzJkZGY5MDExZjk5ZTEuLjdkNGE3MmZk
ODc1NTc2ZDlhNTk4YWExNTg0MDRlODlmMTI0ZDcwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CkBAIC0xNjIsNyArMTYyLDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhhbmRsZTo6Y3Jl
YXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmUKIEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICgh
ZC0+bV9kZWxlZ2F0ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKKyAgICAgICAgZC0+bV9kZWxlZ2F0
ZSA9IG1ha2VVbmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKIAogICAg
IHJldHVybiBkLT5tX2RlbGVnYXRlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsQ3VybC5jcHAKaW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5NTVlNjg4OWM2NTcyMGM5ZWZhZjIx
Yi4uMTNhODMyYzI2NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkwMmRmYTk0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgIG1fdGFza1F1
ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsK
IH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpleGVjdXRlVGFza3MoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRl
ci5oCmluZGV4IDVhMDZmMmVmODllZjVjMjFiZTE1N2M3MWRhMTQxOWVjODQ4MDllZjcuLjc2NTQz
YWQxNmMxNDk0ODU4ODIyOTkxZjMwNWZmN2EzM2UxN2FlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTM2
LDYgKzM2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIAogY2xhc3MgUHJldmlld0NvbnZlcnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6
CiAgICAgUHJldmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRl
MGI3ZTFmMTg3YjUwNzY1YTlkMTdjMmVjNGVjODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5
Mjc4MDdjZWMxZTJmZjZlNzNmMjRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcg
QEAgLSAodm9pZCljYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilm
dW5jdGlvbgogewogICAgIC8vIFN5bmMgeGhyIHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAg
aWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7
CisgICAgICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNv
bW1vbiBjYXNlLgogICAgIGlmICghc2NoZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2No
ZWR1bGVkUGFpcnMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcw
MzliN2I3MTkzNGZlYzM3NjNhNWE0YTgyZDkuLmQ0YmE0ZTk1MDQxNWJiNDA2YmFiYzAxYjZkMjBj
NjZkNGY4NGIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSwgdWludDY0X3QgaWRlbnRpZmllciwgRAogCiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpF
Q1QoYWRkcmVzcy5nZXQoKSksICJpZGVudGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlm
aWVyKSk7CiAKLSAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmll
ciwgc3RkOjptYWtlX3VuaXF1ZTxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2Fu
Y2VsSGFuZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxh
YmxlKSkpOworICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVy
LCBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxETlNSZXNvbHZlUXVldWVTb3VwOjpD
b21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBX
VEZNb3ZlKGNhbmNlbGxhYmxlKSkpOwogfQogCiB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0
b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAKaW5kZXggZTRjOGIwZjEzZTZkMDg5YTU4OTJhYTdhZTBhOWI4MjE1ODViYjlhNC4u
YmQwNjJmNzI4ZjE2ZjcwMGM0NjgwM2JjODM5ZWMwYmM1NTc4ZTMyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtMTM0LDYgKzEzNCw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBhdXRoVHlwZUZyb21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZShQcm90
ZWN0aW9uU3BhCiB9CiAKIHN0cnVjdCBTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNlY3JldFNlcnZpY2VTZWFyY2hEYXRh
KEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZvaWQgKENyZWRlbnRpYWwmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogY2FuY2VsbGFibGUoY2FuY2VsbGFibGUp
CiAgICAgICAgICwgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENyZWRl
bnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjcmV0U2Vy
dmljZVNlYXJjaERhdGE+KGNhbmNlbGxhYmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2Fu
Y2VsbGFibGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBzZWNyZXRfc2Vydmlj
ZV9zZWFyY2gobnVsbHB0ciwgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRl
cy5nZXQoKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9T
RUFSQ0hfVU5MT0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NFQ1JFVFMpLCBjYW5jZWxsYWJsZSwK
ICAgICAgICAgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50
ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZl
ci5oCmluZGV4IDEwZmVjYmM0MTk0Nzk1ZjMyZDFjYTdlNzYwOWFjNGZmMjA5MmNkMjMuLmFhZmVk
M2RlNzliOTlhYWM0NzY5Yzc2YjU1ZjZjMWNiYjY2MWI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmlk
aVJlc29sdmVyQmFzZTxJdGVyYXRvciwgUnVuLCBEZXJpdmVkQ2xhc3M+OjphcHBlbmRSdW5JbnRl
cm5hbCgpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZW5kT2Zmc2V0ID49IHN0YXJ0T2Zmc2V0
KQotICAgICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPFJ1bj4oc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKKyAgICAg
ICAgICAgIG1fcnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxSdW4+KHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5j
cmVtZW50KCk7CiAgICAgICAgIG1fc29yID0gbV9lb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZUlDVS5jcHAKaW5kZXggNTllMWZjNzJhMmJmMjk2OTQ1YTg2Zjg1NTJiODYz
NzZhOWVhNTg2ZC4uMmM4Y2NlNzMwODhmYTVhZDBjZjU5NTljY2U0Zjk2OTFiZjM1N2EwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtNDQsNyArNDQs
NyBAQCB1c2luZyBuYW1lc3BhY2UgaWN1OwogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2Nh
bGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiB9CiAKIExvY2FsZUlDVTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAg
LTE2MywyMiArMTYzLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29u
c3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQpCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmlu
Zz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVG
b3JtYXQsIFVEYXRlRm9ybWF0U3ltYm9sVHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGlu
dDMyX3Qgc2l6ZSkKIHsKICAgICBpZiAoIWRhdGVGb3JtYXQpCi0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1h
dCwgdHlwZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKIAotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmlu
Zz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQz
Ml90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOwogICAgICAgICBpbnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhk
YXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAg
IGlmIChzdGF0dXMgIT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1
ZmZlcihsZW5ndGgpOwogICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIHVk
YXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgYnVmZmVyLmRh
dGEoKSwgbGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAg
bGFiZWxzLT5hcHBlbmQoU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICB9CiAg
ICAgcmV0dXJuIFdURk1vdmUobGFiZWxzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3Qg
VURhdGVGb3JtYXQqCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNy
ZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8
VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZ
X0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxh
YmVscy0+YXBwZW5kKFdURjo6bW9udGhGdWxsTmFtZVtpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQogCiBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMo
KQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
KTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAg
bGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIkFNIik7CiAg
ICAgbGFiZWxzLT5hcHBlbmQoIlBNIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGVOb25lLmNwcAppbmRleCBiYjZiMjZiYTU5Y2IzNmI5ODliN2U2ZjU4NjMwYzdhN2IzYjU2
ZWE3Li43ODE1YTQ3OGUwMjk3NDU1OTY1NzZjMmRlZDIyMTE5MzZhYTk2YTFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
Y2xhc3MgTG9jYWxlTm9uZSA6IHB1YmxpYyBMb2NhbGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9j
YWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJikKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxMb2NhbGVOb25lPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2Fs
ZU5vbmU+KCk7CiB9CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVOb25lKCkgPSBkZWZhdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmluZGV4IGY4ZTE2
NzA4NDlhOTU4OThhMTQ1N2JjOThkYTkxZTRiZGU3ODRjNzkuLmU1ZjI4MTY2YzZkZDM0YmM1MzUw
OWI2YTAwMjBhODg4OTA3YzJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjSUNVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY0lDVS5jcHAKQEAgLTE1Niw0MyArMTU2LDQzIEBAIHZvaWQgVGV4dENvZGVjSUNV
OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICAv
LyBodHRwOi8vZGVtby5pY3UtcHJvamVjdC5vcmcvaWN1LWJpbi9jb252ZXhwCiAgICAgICAgIGlm
ICghc3RyY21wKG5hbWUsICJ3aW5kb3dzLTg3NCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIo
bmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoIXN0cmNtcChuYW1lLCAid2luZG93cy05NDkiKSkgewogICAgICAgICAgICAgcmVn
aXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5
LTIwMDAiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWN5cmlsbGljIikpIHsKICAgICAg
ICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTdfMy0xMC4yIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFj
b3MtN18zLTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWdyZWVrIikpIHsKICAg
ICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTZfMi0xMC40Iik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAi
bWFjb3MtNl8yLTEwLjQiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWNlbnRyYWxldXJy
b21hbiIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNv
cy0yOS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVj
SUNVPihuYW1lLCAibWFjb3MtMjktMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMt
dHVya2lzaCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJt
YWNvcy0zNS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENv
ZGVjSUNVPihuYW1lLCAibWFjb3MtMzUtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiRVVD
LUtSIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRv
d3MtOTQ5Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNV
PihuYW1lLCAid2luZG93cy05NDkiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6
cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgY29u
c3QgY2hhciogY2Fub25pY2FsQ29udmVydGVyTmFtZSA9IHVjbnZfZ2V0Q2Fub25pY2FsTmFtZShu
YW1lLCAiSUFOQSIsICZlcnJvcik7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1MoZXJyb3IpKTsK
ICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lXSB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUs
IGNhbm9uaWNhbENvbnZlcnRlck5hbWUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VGV4dENvZGVjSUNVPihuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lKTsKICAgICAgICAgfSk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNMYXRpbjEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNM
YXRpbjEuY3BwCmluZGV4IDkzMTQ1MzMyOGE2ZjY2OTQ4NWVlMDFmOGE0ZTJjZWRlNTAyNjc3ZmYu
LjkyYzY2MTNjYjFmY2MwZTMwOGE3M2MzNTBhOWUwN2VmNzczNDYyZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGlu
Z05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVy
Q29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ3
aW5kb3dzLTEyNTIiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY0xhdGluMT4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjTGF0aW4x
PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCmluZGV4IDE3NjViZjc5MjE1OTc1YjE1N2M4YjNm
NzRjNTU3MmM0NzFlMjExNDEuLmM4YjU1OGM4Y2EyZDNhZmQzMDIxNGJjZmMzN2ExNDU3NzU2YTEz
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVw
bGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
UmVwbGFjZW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1l
bnQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFy
CiB2b2lkIFRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdp
c3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigicmVwbGFjZW1lbnQiLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNVVEYxNi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2
LmNwcAppbmRleCBiZTAwNjU2NDQ2NDhmY2UwYzM3OWQzYzc0M2VlMjI3ZWE5ZWRhNmY0Li45MGM0
NDc1ZDAyMGI5ZjQ3MWI1YmU3N2MzY2FhYzBmZGM5OGNiYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBA
IHZvaWQgVGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVS
ZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3Mo
VGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi0xNkxF
IiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4o
dHJ1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsK
ICAgICB9KTsKICAgICByZWdpc3RyYXIoIlVURi0xNkJFIiwgW10gewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCBhM2RhZDRl
OWQxNjM3Njg2MzA4OGIxOTcxMGY4MzlkYmJmZmVhOGRkLi5lMWQwYTUzYzcxN2FhZTczOTkzOWY1
MWM0ZDMyOTM0NWFmODljYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VURjguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjVVRGOC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4Ojpy
ZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZv
aWQgVGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi04IiwgW10gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUZXh0Q29kZWNVVEY4PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCmluZGV4IDI5NmM0Njlm
MTY5ZmI5MTFkYzhkYmQ3YTY0N2VhNTY0MWUyZmZlMTkuLjQ4YWRiYTlkNGIxYTdhOWE2NThhZWY5
ZGZhZGY4NWFkZGU5ZGNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgVGV4
dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdp
c3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVj
cyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigieC11c2Vy
LWRlZmluZWQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2Rl
Y1VzZXJEZWZpbmVkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVc2Vy
RGVmaW5lZD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvTG9jYWxlTWFjLm1tCmluZGV4IGE1MTdiZTM0MWY2YWM0YmU4ZTg5M2NmYWQ3YzIyODg0
NWQ2YTgyODAuLjJiM2QwM2EzOGE1ZDIwMWJiNmRjYjhlYmU0NGY0NmZlZWZjNjdlMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTY3LDcg
KzY3LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9jYWxlKGNvbnN0
IFN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0
cmluZygpKS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBj
cmVhdGVEYXRlVGltZUZvcm1hdHRlcihOU0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFyKiBjYWxl
bmRhciwgTlNEYXRlRm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0ZXJTdHls
ZSB0aW1lU3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dp
bi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxl
V2luLmNwcAppbmRleCA2YTE2MGRlY2NmYzkyNmFlZjM3ZGUyM2U5N2Y2MmU4ZjVjNjc5MDZhLi5h
YTAwYTRhZDZmNWI1OTk4MmI2YjQ3NzMxNzFjOGJjN2MwMzM5MDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
c3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBs
b2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlV2luPihMQ0lERnJv
bUxvY2FsZShsb2NhbGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVXaW4+KExDSURG
cm9tTG9jYWxlKGxvY2FsZSkpOwogfQogCiBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJ
RCBsY2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4
dENvZGVjV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2Rl
Y1dpbi5jcHAKaW5kZXggYWY0NjkxMzkwODFlODBjMTIwN2I4MmM5N2ZkZmEzYzc3MjFhNjUxMS4u
MmNlYjQ3NWU1ZmFlYmI2NzBjNzQxNDQ3NWE0NzI5MjQ5NTJkY2E5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMzEsNyAr
MTMxLDcgQEAgc3RhdGljIFVJTlQgZ2V0Q29kZVBhZ2UoY29uc3QgY2hhciogbmFtZSkKIAogc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0
RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFt
ZSgpKSk7CiB9CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURp
c3BsYXlPcGVuVlIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtRGlzcGxheU9wZW5WUi5oCmluZGV4IGRkNmFlNzM2MDQ2NzlmMTg4ZTAxZTExMGU0ZmViZTU5
M2Q1MzdmMWIuLmY3MWJkOWYwZDU4OWNjMmY4MzliMDY3YzIzZWM4Y2I1MTgxMDY4ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxh
eU9wZW5WUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtRGlzcGxheU9wZW5WUi5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSIDogcHVibGljIFZSUGxhdGZvcm1EaXNw
bGF5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBWUlBsYXRmb3JtRGlzcGxheU9wZW5WUih2cjo6SVZSU3lzdGVtKiwgdnI6OklWUkNoYXBlcm9u
ZSosIHZyOjpJVlJDb21wb3NpdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCmluZGV4
IGQxZGM2NzM2ODZmNjUxZTNlMDMyOTFiN2MwMmMzMWIwYzE2OWJiYzIuLmU3Y2Y3MTM3ZTMzYWE1
NWJmN2U1ODVlZTE2NGU2NzNkM2FhZWVjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcApA
QCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+
IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUoKQogICAgIGlmICghdnI6OlZSX0lzUnVu
dGltZUluc3RhbGxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOwogfQogCiBWUlBsYXRmb3JtTWFu
YWdlck9wZW5WUjo6flZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSKCkKQEAgLTc4LDcgKzc4LDcgQEAg
VmVjdG9yPFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBWUlBsYXRmb3JtTWFuYWdlck9wZW5W
Ujo6Z2V0VlJEaXNwbGF5cygpCiAKICAgICBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxh
eT4+IGRpc3BsYXlzOwogICAgIGlmICghbV9kaXNwbGF5KQotICAgICAgICBtX2Rpc3BsYXkgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVy
b25lLCBjb21wb3NpdG9yKTsKKyAgICAgICAgbV9kaXNwbGF5ID0gbWFrZVVuaXF1ZTxWUlBsYXRm
b3JtRGlzcGxheU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CiAgICAg
ZGlzcGxheXMuYXBwZW5kKG1ha2VXZWFrUHRyKCptX2Rpc3BsYXkpKTsKICAgICByZXR1cm4gZGlz
cGxheXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIv
VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29w
ZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCmluZGV4IDZhNDM4N2NjMzA4MTVlMDBjMzQx
NmM4OTY2YWQyOWQ0YjczZjcwZDkuLjZhNzgyM2JjN2I5NWVkNDBkY2VjZGYwZjU3MzNlMTZkODQ0
NWFhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBs
YXRmb3JtTWFuYWdlck9wZW5WUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29w
ZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSOwogCiBjbGFzcyBWUlBs
YXRmb3JtTWFuYWdlck9wZW5WUiA6IHB1YmxpYyBWUlBsYXRmb3JtTWFuYWdlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4gY3JlYXRlKCk7CiAgICAgZXhwbGljaXQgVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYWJhZGRjN2ZiY2EyMzU5ZWZmNWI5ODExYzE5
NWY2YjVhYmMxYmE4My4uMTY5Nzg1NWZlNzJmNjM3ZTY1YWQ0Nzc3MmFmYTYxYzc0NzE5MjQ0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAt
OTMsNyArOTMsNyBAQCBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBQYXN0ZWJvYXJkT3duZXJXbmRQ
cm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gdwogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICBh
dXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgYXV0
byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOwogICAgIENPTVB0cjxJRGF0
YU9iamVjdD4gY2xpcGJvYXJkRGF0YTsKICAgICBpZiAoIVNVQ0NFRURFRChPbGVHZXRDbGlwYm9h
cmQoJmNsaXBib2FyZERhdGEpKSkKICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IDA7CkBAIC0xMDYs
MTYgKzEwNiwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3AoKQogewogICAgIENPTVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmpl
Y3Q7CiAgICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CiB9CiAK
IC8vIHN0YXRpYwogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBpZiAoZHJh
Z0RhdGEucGxhdGZvcm1EYXRhKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogICAgIC8vIEZJWE1F
OiBTaG91bGQgYWRkIGEgY29uc3Qgb3ZlcmxvYWQgb2YgZHJhZ0RhdGFNYXAgc28gd2UgZG9uJ3Qg
bmVlZCBhIGNvbnN0X2Nhc3QgaGVyZS4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0
ZWJvYXJkPihjb25zdF9jYXN0PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihk
cmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKaW5kZXggMTk2NDljNTY2Y2Zj
ZjVmNDI0MzA5ZDFkOGQxMDBiMGI0ZmY3NzBhOC4uNmY3ZjRiYTE2NjBiNGY3YTk3NzIxMmM4NTYz
YTQzYzY2NWUzMGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudURCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgaW50IFNlYXJjaFBvcHVwTWVu
dURCOjpleGVjdXRlU2ltcGxlU3FsKGNvbnN0IFN0cmluZyYgc3FsLCBib29sIGlnbm9yZUVycm9y
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBTZWFyY2hQb3B1cE1lbnVEQjo6
Y3JlYXRlUHJlcGFyZWRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBz
dGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwg
c3FsKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50Piht
X2RhdGFiYXNlLCBzcWwpOwogICAgIGludCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAg
ICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IFNRTElURV9PSyk7CiAgICAgcmV0dXJuIHN0YXRl
bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKaW5k
ZXggZGJmOTlhNDVjZTcwM2E5ZDg1N2EwZTYwMTlkNjgwNmRkMTFmYTE3Yi4uMjQxMDAzYTEwMDMx
YTNkN2U2ZDdhYTFlMjRhNDljYjk4OTgyMGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dDRGF0YU9iamVjdC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBTVERNRVRIT0RJTVAg
V0NEYXRhT2JqZWN0OjpTZXREYXRhKEZPUk1BVEVUQyogcGZvcm1hdGV0YywgU1RHTUVESVVNKiBw
bWVkaXVtLCBCTwogICAgIGlmICghcGZvcm1hdGV0YyB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8gZmV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFU
RVRDPigpOworICAgIGF1dG8gZmV0YyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PEZPUk1BVEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1E
ZWxldGVyPiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmZXRjLmdl
dCgpLCBzaXplb2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwCmluZGV4IGMwMDRmYzllNzA0YTZhZDMyMzQ5ZmI4MjRjZGM1ZGRkMDM2MDFiNWMuLjQ3OTgx
YWU2OTkxZGM2NDkxNTIwZmM4MjQzMmVjYzQ5NTg2NDQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gQ1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgRmkKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKIAotICAgIGF1dG8gYnVp
bGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0
KTsKKyAgICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2
aW91c0VmZmVjdCk7CiAgICAgbV9zb3VyY2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQo
U291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSk7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1l
bnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+
KCpmaWx0ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxl
eExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5
b3V0LmNwcAppbmRleCAwMTMzNzg3ZDlkMzA2MmIxY2E3OWIxNjA3OTYzZjIwYzEwNzFlZDUzLi5i
ZDNjOWJlZTg3Mjk4NmVjNjFiMWEzMGEwNDk1YjhjMGEyNmZkNjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAg
c3RhdGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJ
bmxpbmVJdGVyYXRvciBpdGVyKQogCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGNy
ZWF0ZVJ1bihpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRp
UmVzb2x2ZXImIHJlc29sdmVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlS
dW4+KHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZl
ci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKIH0KIAogdm9pZCBDb21wbGV4TGluZUxheW91
dDo6YXBwZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0
YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNv
bHZlcikKQEAgLTEzMCwxMiArMTMwLDEyIEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVu
ZFJ1bnNGb3JPYmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFyCiBzdGQ6
OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4gQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJ
bmxpbmVCb3goKQogewogICAgIGlmIChpczxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7Ci0gICAg
ICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSb290SW5saW5lQm94Pihkb3duY2Fz
dDxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKTsKKyAgICAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVl
PFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOwogICAg
ICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBi
b3g7CiAgICAgfQogICAgICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5s
aW5lQm94PihtX2Zsb3cpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1f
Zmxvdyk7CiB9CiAKIFJvb3RJbmxpbmVCb3gqIENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVBbmRB
cHBlbmRSb290SW5saW5lQm94KCkKQEAgLTEwODUsNyArMTA4NSw3IEBAIGlubGluZSBCaWRpUnVu
KiBDb21wbGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8Qmlk
aVJ1bj4mIGJpCiAgICAgICAgIHdoaWxlIChCaWRpQ29udGV4dCogcGFyZW50ID0gYmFzZUNvbnRl
eHQtPnBhcmVudCgpKQogICAgICAgICAgICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7CiAKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IG5ld1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3Vu
aXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWls
aW5nU3BhY2VSdW4tPnJlbmRlcmVyKCksIGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBtYWtlVW5p
cXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxp
bmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAg
ICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIHRy
YWlsaW5nU3BhY2VSdW4gPSBuZXdUcmFpbGluZ1J1bi5nZXQoKTsKICAgICAgICAgaWYgKGRpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2b2lkIENv
bXBsZXhMaW5lTGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBs
YXlvdXRTdGF0ZSkKICAgICAgICAgaWYgKGxheW91dFN0YXRlLmNoZWNrRm9yRmxvYXRzRnJvbUxh
c3RMaW5lKCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tVmlzdWFsT3ZlcmZsb3cg
PSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAg
ICAgIExheW91dFVuaXQgYm90dG9tTGF5b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dp
Y2FsQm90dG9tTGF5b3V0T3ZlcmZsb3coKTsKLSAgICAgICAgICAgIGF1dG8gbmV3TGluZUJveCA9
IHN0ZDo6bWFrZV91bmlxdWU8VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94PihtX2Zsb3cpOwor
ICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94ID0gbWFrZVVuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jv
b3RJbmxpbmVCb3g+KG1fZmxvdyk7CiAgICAgICAgICAgICBhdXRvIHRyYWlsaW5nRmxvYXRzTGlu
ZUJveCA9IG5ld0xpbmVCb3guZ2V0KCk7CiAgICAgICAgICAgICBtX2xpbmVCb3hlcy5hcHBlbmRM
aW5lQm94KFdURk1vdmUobmV3TGluZUJveCkpOwogICAgICAgICAgICAgdHJhaWxpbmdGbG9hdHNM
aW5lQm94LT5zZXRDb25zdHJ1Y3RlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxv
YXRpbmdPYmplY3RzLmNwcAppbmRleCA0Y2RkMTM5YzQ4NzUxNmVhMGU3YjEyMTNiNzAzYmQzNDI3
YWIwMThjLi5hNmM2NDgxOGM0OTc0NTYwOTBmNjYyM2MzMDRiNWQ2Mjc3MDdhZTc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtNzUsNyArNzUs
NyBAQCBGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94JiByZW5kZXJlciwg
VHlwZSB0eXBlLCBjb25zdCBMYXlvdXRSZWN0JgogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdP
YmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikKIHsKLSAg
ICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVy
KTsKKyAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVy
KTsKICAgICBvYmplY3QtPnNldFNob3VsZFBhaW50KCFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdM
YXllcigpKTsgLy8gSWYgYSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2Vs
Zi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgogICAgIG9iamVjdC0+c2V0SXNEZXNjZW5k
YW50KHRydWUpOwogICAgIHJldHVybiBvYmplY3Q7CkBAIC04MywxMiArODMsMTIgQEAgc3RkOjp1
bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJv
eCYgcmVuZGVyZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdP
YmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lcihMYXlvdXRTaXplIG9mZnNldCwgYm9vbCBzaG91bGRQ
YWludCwgYm9vbCBpc0Rlc2NlbmRhbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFt
ZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5P
ZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJl
Y3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZz
ZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxG
bG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50KCkgY29uc3QK
IHsKLSAgICBhdXRvIGNsb25lT2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVj
dD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hv
dWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKKyAgICBhdXRvIGNsb25lT2JqZWN0ID0gbWFrZVVu
aXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9t
YXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKICAgICBjbG9uZU9i
amVjdC0+bV9wYWdpbmF0aW9uU3RydXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBjbG9uZU9i
amVjdC0+bV9pc1BsYWNlZCA9IG1faXNQbGFjZWQ7CiAgICAgcmV0dXJuIGNsb25lT2JqZWN0OwpA
QCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxv
YXRzVHJlZSgpCiAgICAgaWYgKG1fc2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdFRy
ZWU+KCk7CisgICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVj
dFRyZWU+KCk7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zZXQuYmVnaW4oKSwgZW5kID0gbV9zZXQu
ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRp
bmdPYmplY3QgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFj
ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCBjNzJkMDFkODFjN2Q3MTY2MTU3
OWUzYmEwMTgzMGU0MjlkMzBmNjg4Li4xZTkxMWFlNjBhNjEyNjg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4
N2UyOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVh
KHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdU
cmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6
IG1fZ3JpZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZW
YXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNF
bXB0eUFyZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4o
R3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5k
ZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29s
dW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRT
cGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsg
cm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbklu
ZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5j
ZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCBy
ZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3Zh
cnlpbmdUcmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggNWZj
MzI4MTUzYTZkOGJmYzQ4ODNiYTUxMjFjY2EwYmY2ZjJlOTlkMC4uNjYwOTA5OGY5Yzg3MDQ2ODgx
MTQxOGFiMTc4Mjk0MTdiZWUyZDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdy
aWRCYXNlbGluZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KEl0ZW1Q
b3NpdGlvbiBwcmVmZXJlbgogCiAgICAgLy8gTG9va2luZyBmb3IgYSBjb21wYXRpYmxlIGJhc2Vs
aW5lLXNoYXJpbmcgZ3JvdXAuCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlbGluZUNv
bnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOworICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxk
LCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOwogICAgIGVsc2UgewogICAgICAgICBhdXRv
KiBjb250ZXh0ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICAgICAgY29u
dGV4dC0+dXBkYXRlU2hhcmVkR3JvdXAoY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2Vu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5n
QWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uY3BwCmluZGV4IGFkZGVkYzQyOGIxZjJmZGIzNTAzZTgxMjYyNmI5NzY5M2EzZTdi
NWYuLmIyYjAxMWJkZjc0OTFiMzVhYjFkYmI3YWM2YjI2Mzk2MTcyMWNjYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3Bw
CkBAIC02ODEsNyArNjgxLDcgQEAgZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29t
cHV0ZUZsZXhGYWN0b3JVbml0U2l6ZShjb25zdCBWZWN0b3I8R3JpZFRyYWMKICAgICAgICAgICAg
IGxlZnRPdmVyU3BhY2UgLT0gYmFzZVNpemU7CiAgICAgICAgICAgICBmbGV4RmFjdG9yU3VtIC09
IGZsZXhGYWN0b3I7CiAgICAgICAgICAgICBpZiAoIXRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUp
Ci0gICAgICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJ
bmZsZXhpYmxlID0gbWFrZVVuaXF1ZTxUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgdHJh
Y2tzVG9UcmVhdEFzSW5mbGV4aWJsZS0+YWRkKGluZGV4KTsKICAgICAgICAgICAgIHZhbGlkRmxl
eEZhY3RvclVuaXQgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMTI2MCwxMCArMTI2MCwxMCBAQCB2
b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbiwgdW5zaWduZQogICAgIG1fc2l6aW5nT3BlcmF0aW9uID0gc2l6aW5nT3Bl
cmF0aW9uOwogICAgIHN3aXRjaCAobV9zaXppbmdPcGVyYXRpb24pIHsKICAgICBjYXNlIEludHJp
bnNpY1NpemVDb21wdXRhdGlvbjoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5kZWZpbml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0g
bWFrZVVuaXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgVHJhY2tTaXppbmc6Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kg
PSBtYWtlVW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmlu
ZGV4IDczYjM2NTQ3NjcxNDBhMDM3MGU0ZDU2OTU2ZTU0ZjI2NzRiNThiMzYuLmIzYzQwMDc5MDJk
ZjYwNDg2MmE1YWM3YzI5OThjYmFkNzNmMTEyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faXNPdmVyV2lk
Z2V0KG90aGVyLmlzT3ZlcldpZGdldCgpKQogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNl
dCBpbiBjYXNlIG9mIGxpc3QgaGl0IHRlc3QuCi0gICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0g
b3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0Pigq
b3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CisgICAgbV9saXN0QmFzZWRU
ZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gbWFrZVVuaXF1ZTxOb2Rl
U2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CiB9CiAKIEhpdFRl
c3RSZXN1bHQ6On5IaXRUZXN0UmVzdWx0KCkgPSBkZWZhdWx0OwpAQCAtMTEzLDcgKzExMyw3IEBA
IEhpdFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVz
dWx0JiBvdGhlcikKICAgICBtX2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwog
CiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4K
LSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQg
PyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQp
IDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNl
ZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RS
ZXN1bHQpIDogbnVsbHB0cjsKIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTY5MCwxNCArNjkw
LDE0IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90
aGVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxCiBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2Rl
U2V0JiBIaXRUZXN0UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RS
ZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRl
c3RSZXN1bHQ7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Om11
dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KCkKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJl
c3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxO
b2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5v
ZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggNDNjNjUzODc2Y2Y5ODRh
NjJiNmZjOTI5NDVkM2RkNjkwY2EzZWRiOS4uMTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkwYTUx
ZjkyNWNjMmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0
ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgK
QEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG51bWJlck9mSXNvbGF0
ZUFuY2VzdG9ycyhjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRlcikKIC8vIG9mIEJpZGlSZXNvbHZl
ciB3aGljaCBrbm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdHMuCiBzdGF0aWMgaW5saW5l
IHZvaWQgYWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZShJbmxpbmVCaWRpUmVzb2x2
ZXImIHJlc29sdmVyLCBSZW5kZXJPYmplY3QmIG9iaiwgdW5zaWduZWQgcG9zLCBSZW5kZXJFbGVt
ZW50JiByb290KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9
IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4
dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xh
dGVkUnVuID0gbWFrZVVuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250
ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKICAgICAvLyBGSVhNRTogaXNvbGF0ZWRSdW5zKCkgY291
bGQgYmUgYSBoYXNoIG9mIG9iamVjdC0+cnVuIGFuZCB0aGVuIHdlIGNvdWxkIGNoZWFwbHkKICAg
ICAvLyBBU1NFUlQgaGVyZSB0aGF0IHdlIGRpZG4ndCBjcmVhdGUgbXVsdGlwbGUgb2JqZWN0cyBm
b3IgdGhlIHNhbWUgaW5saW5lLgogICAgIHJlc29sdmVyLnNldFdoaXRlc3BhY2VDb2xsYXBzaW5n
VHJhbnNpdGlvbkZvcklzb2xhdGVkUnVuKCppc29sYXRlZFJ1biwgcmVzb2x2ZXIud2hpdGVzcGFj
ZUNvbGxhcHNpbmdTdGF0ZSgpLmN1cnJlbnRUcmFuc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAppbmRleCAyODVhYTVmOWZlOWJhZTdkZmM4
NTI4YzI0YzFkNTU2N2Q0MTI5ZmYzLi45NmFmOTVhNDU1Njk1MGU4MTI2Yjk1MzczNTM0ZDQ3NmRh
ZTM1NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFw
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNw
cApAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgUmVjdExpc3QmIHJlY3RMaXN0KQogLy8gQ2hlY2tpbmcgZm9yIG92ZXJs
YXAgaW52b2x2ZXMgZmluZGluZyB0aGUgbm9kZSBmb3IgdGhlIGNsaXBwaW5nIGxheWVyIGVuY2xv
c2luZyB0aGUgZ2l2ZW4gbGF5ZXIgKG9yIHRoZSByb290KSwKIC8vIGFuZCBjb21wYXJpbmcgYWdh
aW5zdCB0aGUgYm91bmRzIG9mIGVhcmxpZXIgc2libGluZ3MuCiBjbGFzcyBPdmVybGFwTWFwQ29u
dGFpbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPdmVy
bGFwTWFwQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyJiByb290TGF5ZXIpCiAgICAgICAgIDog
bV9yb290U2NvcGUocm9vdExheWVyKQpAQCAtMjk2LDcgKzI5Nyw3IEBAIGJvb2wgTGF5ZXJPdmVy
bGFwTWFwOjpvdmVybGFwc0xheWVycyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IExh
eW91dFJlY3QmCiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdDb250YWlu
ZXIoKQogewotICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE92ZXJs
YXBNYXBDb250YWluZXI+KG1fcm9vdExheWVyKSk7CisgICAgbV9vdmVybGFwU3RhY2suYXBwZW5k
KG1ha2VVbmlxdWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9yb290TGF5ZXIpKTsKIH0KIAogdm9p
ZCBMYXllck92ZXJsYXBNYXA6OnBvcENvbXBvc2l0aW5nQ29udGFpbmVyKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRkYmEzZjFjNDEwNWFmYjBlOGU0Yzc2
YTdjZmNiOWU1ZmZmNzE4NTQuLjAwMTkyNTg4MmU1MDI4YzhhMjA5OWI0YmJkZTM3MzE2NWI0YTI0
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0
IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8m
IGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAtPmVuc3VyZSgmY29u
dGFpbmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5k
ZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVu
ZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBib29s
IGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKCZkZXNjZW5kYW50KS5pc05ld0VudHJ5OwpAQCAt
MTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBz
KGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAg
IGF1dG8mIGNvbnRhaW5lclNldCA9IHBlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmVuc3VyZSgm
ZGVzY2VuZGFudCwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0
PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hT
ZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAg
ICBBU1NFUlQoIWNvbnRhaW5lclNldC0+Y29udGFpbnMoJmNvbnRhaW5lcikpOwpAQCAtMTYxLDcg
KzE2MSw3IEBAIGNsYXNzIFBvc2l0aW9uZWREZXNjZW5kYW50c01hcCB7CiAgICAgICAgIH0KIAog
ICAgICAgICBhdXRvJiBkZXNjZW5kYW50cyA9IG1fZGVzY2VuZGFudHNNYXAuZW5zdXJlKCZjb250
YWluaW5nQmxvY2ssIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRy
YWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIAogICAgICAgICBib29sIGlzTmV3RW50cnkgPSBtb3ZlRGVzY2VuZGFudFRvRW5kID09
IE1vdmVEZXNjZW5kYW50VG9FbmQ6OlllcyA/IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVUb0xh
c3QoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5CkBAIC01MjgsNyArNTI4LDcgQEAg
c3RhdGljIGlubGluZSBVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbiogY3Vy
cmVudFVwZGF0ZVNjcm9sbEluZm9BZnQKIHZvaWQgUmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Ny
b2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKQogewogICAgIGlmICghdXBkYXRlU2Nyb2xs
SW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpKQotICAgICAgICB1cGRhdGVTY3JvbGxJ
bmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5
ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRl
ckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IG1ha2VVbmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9s
bEluZm9TdGFjaz4oKTsKICAgICBpZiAodXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNh
Y3Rpb25TdGFjaygpLT5pc0VtcHR5KCkgfHwgY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxh
eW91dFRyYW5zYWN0aW9uKCktPnZpZXcgIT0gJnZpZXcoKSkKICAgICAgICAgdXBkYXRlU2Nyb2xs
SW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5hcHBlbmQoVXBkYXRlU2Nyb2xsSW5m
b0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24odmlldygpKSk7CiAgICAgKytjdXJyZW50VXBkYXRlU2Ny
b2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+bmVzdGVkQ291bnQ7CkBAIC02MjAsNyAr
NjIwLDcgQEAgc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEmIGVuc3VyZUJsb2NrUmFyZURhdGEo
Y29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQogICAgIAogICAgIGF1dG8mIHJhcmVEYXRhID0gZ1Jh
cmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KCFyYXJlRGF0YSkKLSAgICAgICAgcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJs
b2NrUmFyZURhdGE+KCk7CisgICAgICAgIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9j
a1JhcmVEYXRhPigpOwogICAgIHJldHVybiAqcmFyZURhdGEuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggN2YxZTYzOTcwNjNi
ZTRmOGRmOWI1N2YxNzVkNmUyNmU3OGVmYjEzNC4uYjg2NDJkMTcyMDNiZDRiZjI1YmRlMTcxZjk4
NzBhZjdkNWE0M2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0
SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZQogICAg
IG1fc2ltcGxlTGluZUxheW91dCA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fY29tcGxleExpbmVM
YXlvdXQpCi0gICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CisgICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBt
YWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKICAgICBtX2NvbXBsZXhMaW5l
TGF5b3V0LT5sYXlvdXRMaW5lQm94ZXMocmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxU
b3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKIH0KQEAgLTIwMTksNyArMjAxOSw3IEBAIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgpCiAgICAgCiAgICAgc2V0TGluZUdy
aWRCb3goMCk7CiAKLSAgICBhdXRvIGxpbmVHcmlkQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSb290
SW5saW5lQm94PigqdGhpcyk7CisgICAgYXV0byBsaW5lR3JpZEJveCA9IG1ha2VVbmlxdWU8Um9v
dElubGluZUJveD4oKnRoaXMpOwogICAgIGxpbmVHcmlkQm94LT5zZXRIYXNUZXh0Q2hpbGRyZW4o
KTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhlIGxpbmUgYXNjZW50L2Rlc2NlbnQgYWN0dWFsbHkgYmUg
aG9ub3JlZCBpbiBxdWlya3MgbW9kZS4KICAgICBsaW5lR3JpZEJveC0+c2V0Q29uc3RydWN0ZWQo
KTsKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0ZXh0Qm94RGF0YU1hcDsK
QEAgLTIyNjAsNyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRp
bmdPYmplY3RzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBhaW50CiAKIHZvaWQgUmVu
ZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMoKQogewotICAgIG1fZmxvYXRpbmdP
YmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsKKyAgICBt
X2Zsb2F0aW5nT2JqZWN0cyA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3RzPigqdGhpcyk7CiB9
CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVjdHMoKQpAQCAtMzY3
Nyw3ICszNjc3LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcygpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9jb21wbGV4TGluZUxheW91dCk7Ci0gICAg
bV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+
KCp0aGlzKTsKKyAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4TGlu
ZUxheW91dD4oKnRoaXMpOwogCiAgICAgaWYgKFNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckxp
bmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KSkgewogICAgICAgICBTaW1wbGVM
aW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0
KTsKQEAgLTM3MzUsNyArMzczNSw3IEBAIFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93
UmFyZURhdGEmIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFyZUJsb2NrRmxvd0RhCiB2b2lkIFJl
bmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0YSgpCiB7CiAgICAgQVNT
RVJUKCFoYXNSYXJlQmxvY2tGbG93RGF0YSgpKTsKLSAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRh
PigqdGhpcyk7CisgICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9IG1ha2VVbmlxdWU8UmVuZGVyQmxv
Y2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOwogfQogCiAjaWYgRU5BQkxF
KFRFWFRfQVVUT1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5k
ZXggZTIwZmMyMDcxNGExMGUxMjIwZDJlZmQwYTljOGFhY2EyOTlkODU0MS4uYTQ2NzNkMTE4ODJi
MzFlOTNmMmJhNzA5MGYyMmVlMzA2MDY4ZDEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgQ29udHJvbFN0YXRlc1JlbmRl
cmVyTWFwJiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQogc3RhdGljIENvbnRyb2xTdGF0ZXMq
IGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogewog
ICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5lbnN1cmUoJnJlbmRlcmVyLCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CiAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlLmdldCgpOwogfQogCkBAIC0yMTE1LDcgKzIxMTUsNyBAQCBMYXlvdXRTaXplIFJl
bmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNv
bnN0IExheW91dAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gUmVuZGVyQm94
OjpjcmVhdGVJbmxpbmVCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGlu
ZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVFbGVtZW50
Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1
bGxMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAppbmRleCA0MjQzMGRmOGJhN2I2YWI4NjMyMzI4ZTYyZWY5MjU3MDFhZjNiNzc4
Li5jZGNhNDU4YTFjMWY0MGU5Njk2MjA0Y2Y0NjhkOTkxNGVkYTI0ZWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI1Mzgs
NyArMjUzOCw3IEBAIGF1dG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlv
bkNoYWluTm9kZSgpIC0+IENvbnRpbnVhdGlvbkNoYWluTm9kCiB7CiAgICAgc2V0SGFzQ29udGlu
dWF0aW9uQ2hhaW5Ob2RlKHRydWUpOwogICAgIHJldHVybiAqY29udGludWF0aW9uQ2hhaW5Ob2Rl
TWFwKCkuZW5zdXJlKHRoaXMsIFsmXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAy
MjEwNDQzNGU0NWQ2Yzk4NDc2ZmZkMjlhYjU1MGJkNjJhYzQwOGZlLi5jMWUwM2YwOTdlZjU5YWQ1
YTE2YjE5NGM5YzA1ZDY0OWY3ZmYxNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBt
YWtlQ291bnRlck5vZGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpbmcm
IGkKICAgICBpZiAocGxhY2UucGFyZW50KQogICAgICAgICBwbGFjZS5wYXJlbnQtPmluc2VydEFm
dGVyKG5ld05vZGUsIHBsYWNlLnByZXZpb3VzU2libGluZy5nZXQoKSwgaWRlbnRpZmllcik7CiAK
LSAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlck1hcD4oKSku
aXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkpOworICAg
IG1hcHMuYWRkKCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+
dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7CiAgICAgcmVuZGVyZXIu
c2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7CiAKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFp
bmVyLmNwcAppbmRleCA1MWE5ZTQ2ODQzNDRkMjYzN2QwNGE5MWZiNTlhM2NkNmVmOGYwNmVkLi43
ZjZjYWJjMDU5MTIxMDgxYzRkNzI4NjAyMTliZDRiOWM4NWI5NGY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKQEAgLTMw
Myw3ICszMDMsNyBAQCBSZW5kZXJCb3hGcmFnbWVudEluZm8qIFJlbmRlckZyYWdtZW50Q29udGFp
bmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8oY29uc3QgUgogewogICAgIEFTU0VSVChpc1Zh
bGlkKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveEZyYWdtZW50SW5mbz4mIGJv
eEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQoYm94LCBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5z
ZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVy
Qm94RnJhZ21lbnRJbmZvLmFkZChib3gsIG1ha2VVbmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJbmZv
Pihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hh
aW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBib3hJbmZvLmdldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRl
ZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93
LmNwcAppbmRleCA0NGY1NjM1YmE1M2FlM2Y3ZTk0ZDdhYzhlNDk2NzM5MGY1OGMyZTU2Li44NDZk
ZDNhMDJhYTg2YWFmNzE1YzA5NGU4YzM1MGMxNjZhODY3YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKQEAgLTExMTUsNyArMTEx
NSw3IEBAIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y3Vy
cmVudEZyYWdtZW50KCkgY29uc3QKIENvbnRhaW5pbmdGcmFnbWVudE1hcCYgUmVuZGVyRnJhZ21l
bnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVudE1hcCgpCiB7CiAgICAgaWYgKCFtX2xpbmVUb0Zy
YWdtZW50TWFwKQotICAgICAgICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+KCk7CisgICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAg
PSBtYWtlVW5pcXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKIAogICAgIHJldHVybiAqbV9s
aW5lVG9GcmFnbWVudE1hcC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IGI5MDQ1ZTY3OTA4NzNhYmY4MWE5MGRmYTViYmIx
MTA5M2M2NzdiMDIuLjUyYzc5MGQ0ZTU3ODliMTc4ZTI2YzhhYmQ4YmE3YjEzY2M1OTE1MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAt
MjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2goY29uc3QgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NCiAgICAgCiAgICAgUmVuZGVy
R2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwog
ICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQotICAgICAgICBzdGVwLm1fdHJhbnNm
b3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odCk7CisgICAgICAg
IHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsK
ICAgICBlbHNlCiAgICAgICAgIHN0ZXAubV9vZmZzZXQgPSBMYXlvdXRTaXplKHQuZSgpLCB0LmYo
KSk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmll
dyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIFJl
bmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9u
XTsKICAgICBzdGVwLm1fb2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OwogICAgIGlmICh0KQotICAgICAg
ICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4oKnQpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4oKnQpOwogICAgIAogICAgIHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBlMzVhMmMxMzIyNWQ0NzI1Y2Q4
OGMyMmY2ZDA0Y2NjOWQwZjM0OTdmLi40OWFkMDM1NTUzNzM0MjI1ZjFkZGQ2MzNiNDJjMTM4MzJj
Y2VmYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC01NDQs
NyArNTQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJH
cmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICB1bnNpZ25lZCBsYXN0QXV0
b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBlYXRUcmFj
a3MoZGlyZWN0aW9uKTsKIAogICAgIGlmICghZ3JpZC5oYXNHcmlkSXRlbXMoKSkgewotICAgICAg
ICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhT
ZXQ+KCk7CisgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJh
Y2tJbmRleFNldD4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFja0luZGV4ID0gZmlyc3RB
dXRvUmVwZWF0VHJhY2s7IHRyYWNrSW5kZXggPCBsYXN0QXV0b1JlcGVhdFRyYWNrOyArK3RyYWNr
SW5kZXgpCiAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5kZXgpOwog
ICAgIH0gZWxzZSB7CkBAIC01NTIsNyArNTUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRU
cmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEK
ICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBkaXJlY3Rpb24sIHRyYWNr
SW5kZXgpOwogICAgICAgICAgICAgaWYgKCFpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgewogICAg
ICAgICAgICAgICAgIGlmICghZW1wdHlUcmFja0luZGV4ZXMpCi0gICAgICAgICAgICAgICAgICAg
IGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNl
dD4oKTsKKyAgICAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVl
PE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRl
eGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTczMiw3
ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVt
cHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dAogICAgIGNvbnN0IHVuc2lnbmVkIGVu
ZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAg
dW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6
c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAg
IEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWRE
ZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24g
KyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlv
blBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JpZEFyZWE+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMs
IHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDog
Y3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3Bl
Y2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRl
ckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKaW5kZXggZjZjYjU2MTgxMmQyMjI2ODY2OTgzZjNhYjljNzQwYTU2ZGIwMjZl
OC4uYzM1NWZmMzcxYjQxMWE1OGU3OTA2Yzg3N2VhZDRiNTM0NjcxNWJjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNv
bnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJlcGxhY2VkKGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uo
c3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4o
KSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJ
bWFnZVJlc291cmNlPigpKQogICAgICwgbV9pbWFnZURldmljZVBpeGVsUmF0aW8oaW1hZ2VEZXZp
Y2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKQEAgLTE0NCw3ICsxNDQsNyBA
QCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bAogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9j
dW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUlt
YWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRT
aXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShz
dHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0
eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDlkOGE2NTkzNGJh
M2ZkMjU0NzRjMzljOTFmZWVjNDNhYTBjOWY5ZjUuLjE1MzI1Y2RhMTY5MDY3YTU2OTFiODg1YThk
ZmRjN2FhOTAzNjQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6ZGVsZXRlTGluZXMo
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gUmVuZGVySW5saW5lOjpjcmVhdGVJ
bmxpbmVGbG93Qm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGbG93
Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMp
OwogfQogCiBJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElubGlu
ZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
Mjc2Y2U4MjcyYmNkYjMzNjQ1NDFkZTQ2MTEyZjJhM2Y5NzQxMDE3MS4uNjQwNjI4ZmQ2NGJkMWFk
YjJiMjY5ODg5NWFmY2M5M2E0ODA4YWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRl
Tm9ybWFsRmxvd0xpc3QoKQogICAgICAgICAvLyBJZ25vcmUgbm9uLW92ZXJmbG93IGxheWVycyBh
bmQgcmVmbGVjdGlvbnMuCiAgICAgICAgIGlmIChjaGlsZC0+aXNOb3JtYWxGbG93T25seSgpICYm
ICFpc1JlZmxlY3Rpb25MYXllcigqY2hpbGQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fbm9ybWFs
Rmxvd0xpc3QpCi0gICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAgICAgICAgICAgbV9ub3JtYWxG
bG93TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CiAgICAgICAgICAg
ICBtX25vcm1hbEZsb3dMaXN0LT5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9CiAgICAgfQpAQCAt
NzU2LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNs
dWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yCiAgICAgaWYgKGluY2x1ZGVI
aWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93T25seSgpKSB7CiAgICAgICAgIGF1dG8mIGxheWVy
TGlzdCA9ICh6SW5kZXgoKSA+PSAwKSA/IHBvc2l0aXZlWk9yZGVyTGlzdCA6IG5lZ2F0aXZlWk9y
ZGVyTGlzdDsKICAgICAgICAgaWYgKCFsYXllckxpc3QpCi0gICAgICAgICAgICBsYXllckxpc3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOworICAgICAgICAgICAg
bGF5ZXJMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAg
bGF5ZXJMaXN0LT5hcHBlbmQodGhpcyk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGJvb2wgaGFkVHJhbnNmb3Jt
ID0gISFtX3RyYW5zZm9ybTsKICAgICBpZiAoaGFzVHJhbnNmb3JtICE9IGhhZFRyYW5zZm9ybSkg
ewogICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQotICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOworICAgICAgICAgICAgbV90
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX3RyYW5zZm9ybSA9IG51bGxwdHI7CiAgICAgICAgIApAQCAtNTUx
OSw3ICs1NTE5LDcgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0
cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb24KICAgICB9CiAgICAgCiAgICAg
aWYgKCFtX2NsaXBSZWN0c0NhY2hlKQotICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0gc3RkOjpt
YWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKKyAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9
IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fY2xp
cFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0Nv
bnRleHQucm9vdExheWVyOwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fc2Nyb2xsYmFyUmVsZXZh
bmN5W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4dC5vdmVybGF5U2Nyb2xsYmFyU2l6
ZVJlbGV2YW5jeTsKQEAgLTYwOTcsNyArNjA5Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFy
Q2xpcFJlY3RzKENsaXBSZWN0c1R5cGUgdHlwZVRvQ2xlYXIpCiBSZW5kZXJMYXllckJhY2tpbmcq
IFJlbmRlckxheWVyOjplbnN1cmVCYWNraW5nKCkKIHsKICAgICBpZiAoIW1fYmFja2luZykgewot
ICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4o
KnRoaXMpOworICAgICAgICBtX2JhY2tpbmcgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQmFja2lu
Zz4oKnRoaXMpOwogICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVDb21wb3NpdGVkKCp0
aGlzKTsKIAogICAgICAgICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CkBAIC02NTE1
LDcgKzY1MTUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJl
bmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogCiAgICAgaWYgKHJlbmRlcmVy
KCkuaXNIVE1MTWFycXVlZSgpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5tYXJxdWVlQmVoYXZpb3Io
KSAhPSBNYXJxdWVlQmVoYXZpb3I6Ok5vbmUgJiYgcmVuZGVyZXIoKS5pc0JveCgpKSB7CiAgICAg
ICAgIGlmICghbV9tYXJxdWVlKQotICAgICAgICAgICAgbV9tYXJxdWVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWFycXVlZSA9IG1ha2VV
bmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7CiAgICAgICAgIG1fbWFycXVlZS0+dXBkYXRlTWFy
cXVlZVN0eWxlKCk7CiAgICAgfSBlbHNlIGlmIChtX21hcnF1ZWUpCiAgICAgICAgIG1fbWFycXVl
ZSA9IG51bGxwdHI7CkBAIC02NzI3LDcgKzY3MjcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjplbnN1
cmVMYXllckZpbHRlcnMoKQogICAgIGlmIChtX2ZpbHRlcnMpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBtX2ZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyRmlsdGVycz4o
KnRoaXMpOworICAgIG1fZmlsdGVycyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigq
dGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyTGF5ZXJGaWx0ZXJzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggN2Yx
NDM2NmE3ZTU2MTEwMzM3MjA3N2JlZmUyYTYwODM0MmY3YmE0OS4uNzVmOWViMGYyOTdhMjM2Yzdh
NzgyNTY4NjNkMDUyODU3YjRjZGNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE2MjcsNyArMTYyNyw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5nU3RhY2soVmVjdG9yPENvbXBvc2l0
ZWRDbGlwRGF0YT4mCiAgICAgfQogICAgIAogICAgIGlmICghbV9hbmNlc3RvckNsaXBwaW5nU3Rh
Y2spIHsKLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3RhY2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkpOworICAg
ICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9IG1ha2VVbmlxdWU8TGF5ZXJBbmNlc3RvckNs
aXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7CiAgICAgICAgIExPR19XSVRIX1NU
UkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJsYXllciAiIDw8ICZtX293bmluZ0xheWVyIDw8
ICIgYW5jZXN0b3JDbGlwcGluZ1N0YWNrICIgPDwgKm1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3OCwxNyArMzE3OCwxNyBAQCBib29s
IFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNv
bnN0IEFuaW1hdGlvbiYgYW5pbQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0
S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkgPT0gMTsKICAgICAgICAgaWYgKChoYXNUcmFuc2Zv
cm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSkpCi0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0
b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwg
a2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1W
ZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5
ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CiAKICAgICAgICAgaWYgKChoYXNPcGFjaXR5
ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJv
cGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5z
ZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0
eWxlLT5vcGFjaXR5KCksIHRmKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydCht
YWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0
eSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgoaGFzRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlm
cmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0
ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwor
ICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlv
blZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwogCiAjaWYgRU5BQkxF
KEZJTFRFUlNfTEVWRUxfMikKICAgICAgICAgaWYgKChoYXNCYWNrZHJvcEZpbHRlciAmJiBpc0Zp
cnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpKQotICAgICAgICAgICAgYmFja2Ryb3BGaWx0
ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtl
eSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGJh
Y2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVl
PihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCksIHRmKSk7CiAjZW5kaWYKICAg
ICB9CiAKQEAgLTMyNDMsOCArMzI0Myw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFy
dFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAg
ICAgIGNvbnN0IEFuaW1hdGlvbiogb3BhY2l0eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9y
UHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KTsKICAgICAgICAgaWYgKG9wYWNpdHlBbmltICYm
ICFvcGFjaXR5QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtl
eWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwot
ICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFu
aW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkp
KSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZs
b2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5
KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0
QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHko
KSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkp
KTsKICAgICAgICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJh
bnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNv
IHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NM
YXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEZsb2F0U2l6ZSgpLCBvcGFjaXR5QW5p
bSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3Vy
ZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24g
ZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9wYWNpdHkuCkBAIC0zMjU4LDggKzMyNTgsOCBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIHRyYW5zZm9y
bUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zv
cm0pOwogICAgICAgICBpZiAodHJhbnNmb3JtQW5pbSAmJiAhdHJhbnNmb3JtQW5pbS0+aXNFbXB0
eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5z
Zm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHRyYW5z
Zm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVj
dG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigxLCB0
b1N0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2Vy
dChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPnRyYW5z
Zm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAg
ICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9y
LCBzbmFwcGVkSW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKS5zaXplKCksIHRy
YW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFu
aW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAg
IC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4g
dGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAg
ICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgqdG9TdHlsZSk7CkBAIC0zMjcyLDggKzMyNzIsOCBA
QCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zm
c2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRl
ckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIp
OwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1
cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihB
bmltYXRlZFByb3BlcnR5RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQo
c3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0
ZXIoKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVl
PEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigw
LCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0
KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7
CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVj
dG9yLCBGbG9hdFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFt
ZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZp
c2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIu
CiAgICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVycygqdG9TdHlsZSk7CkBAIC0zMjg3LDggKzMy
ODcsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0
aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24q
IGJhY2tkcm9wRmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKICAgICAgICAgaWYgKGJhY2tkcm9wRmlsdGVy
QW5pbSAmJiAhYmFja2Ryb3BGaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewog
ICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgYmFja2Ryb3BGaWx0ZXJWZWN0b3IoQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmls
dGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigw
LCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmls
dGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigx
LCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRl
clZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0
eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rv
ci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFj
a2Ryb3BGaWx0ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5p
bWF0aW9uKGJhY2tkcm9wRmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgYmFja2Ryb3BGaWx0ZXJB
bmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFBy
b3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAg
ICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGJhY2tkcm9wIGZpbHRlciBpcyB2aXNp
YmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgYmFja2Ryb3Ag
ZmlsdGVyLgogICAgICAgICAgICAgICAgIHVwZGF0ZUJhY2tkcm9wRmlsdGVycygqdG9TdHlsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IGFiZTRkNGQ2NzVhMjIxODZlMmVhODlkNDEyZmZhODE1MzhjNWM5MjkuLjMyMTIy
OWQ2ZjIzY2ZhZTY2YTA1YTUyODA4ZGQwYjBjYmE4YzE0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yOTUsNyArMjk1
LDcgQEAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVy
VmlldyYgcmVuZGVyVmlldykKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICht
X3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgbV9sZWdh
Y3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lXZWJL
aXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlz
TWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKKyAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNv
b3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5h
dG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsK
ICNlbmRpZgogfQogCkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllcioK
IHsKICAgICBpZiAoIW1fbGF5ZXJVcGRhdGVyKSB7CiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCA9IHBhZ2UoKS5jaHJvbWUoKS5kaXNwbGF5SUQoKTsKLSAgICAgICAgbV9sYXll
clVwZGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywg
ZGlzcGxheUlEKTsKKyAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNz
TGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKICAgICB9CiAgICAgCiAgICAgbV9sYXll
clVwZGF0ZXItPnNjaGVkdWxlVXBkYXRlKCk7CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2b2lkIExl
Z2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRD
b25zdHJhaW5lZExheWVycwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0
cmFpbnRzPiBjb25zdHJhaW50czsKICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmlzU3Rp
Y2tpbHlQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtl
X3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29t
cHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25z
dHJhaW50cyA9IG1ha2VVbmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihj
b21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAg
ICAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVy
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChjb21wb3NpdG9yLmlzQXN5bmNTY3JvbGxhYmxl
U3RpY2t5TGF5ZXIoKmxheWVyLCAmZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpICYmIGVu
Y2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVu
Y2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CkBAIC00ODAwLDcg
KzQ4MDAsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJl
Z2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogICAgICAgICAgICAgICAgIHN0aWNr
eUNvbnRhaW5lck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0
Zm9ybUxheWVyKCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5iYWNraW5nKCktPnNj
cm9sbENvbnRhaW5lckxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNGaXhlZFBvc2l0aW9uZWQoKSkK
LSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxGaXhlZFBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0
cmFpbnRzKCpsYXllcikpOworICAgICAgICAgICAgY29uc3RyYWludHMgPSBtYWtlVW5pcXVlPEZp
eGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZp
ZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHAKaW5kZXggNGI4NmZlMmFkMTc1ZGNlODZhZDM4NTJiZGZjMTUyZmQxMzA4
ZDQ1ZS4uMTI4Yzk2ZGFlMGIzMTAwNmNhMjVkNWE1NmM3MjBiYzg5MGQzNGYwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApA
QCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXll
cigpCiB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmNyZWF0ZUxheWVyKCkKIHsKICAgICBB
U1NFUlQoIW1fbGF5ZXIpOwotICAgIG1fbGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxh
eWVyPigqdGhpcyk7CisgICAgbV9sYXllciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlz
KTsKICAgICBzZXRIYXNMYXllcih0cnVlKTsKICAgICBtX2xheWVyLT5pbnNlcnRPbmx5VGhpc0xh
eWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
CmluZGV4IGJjNTUyN2I4YzQ2YTRkZTA2NmY2OWU1YTMxMGM4ODY4MTk2ZmMyM2EuLjFhYWUwOWQw
MGIyNmVhM2NhZGVhODY3MmUyNzc5MjliZmQxN2E2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC04OSw3ICs4OSw3IEBAIGludCBSZW5kZXJM
aW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9v
bCBmaXJzdExpbmUsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJM
aW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGlu
ZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OnNldElubGlu
ZUJveFdyYXBwZXIoSW5saW5lRWxlbWVudEJveCogaW5saW5lQm94KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAppbmRleCA5YmI5YTUz
OWQ2NjQyZGY5MDAyNmE3ODJhZjhjZjg0ZGM0OWRhMmE5Li40MTAzZGFkNDg0NGRkMjRhMzAyYTcz
MmFmMjIxOWFjOTAwMDFjYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcApAQCAtNDIsNyArNDIsNyBAQCBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVsdGlDb2x1bW5GbG93KTsKIAogUmVuZGVyTXVsdGlDb2x1
bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhZ21lbnRlZEZsb3coZG9jdW1lbnQsIFdURk1v
dmUoc3R5bGUpKQotICAgICwgbV9zcGFubmVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8U3Bhbm5lck1h
cD4oKSkKKyAgICAsIG1fc3Bhbm5lck1hcChtYWtlVW5pcXVlPFNwYW5uZXJNYXA+KCkpCiAgICAg
LCBtX2xhc3RTZXRXb3JrZWRPbihudWxscHRyKQogICAgICwgbV9jb2x1bW5Db3VudCgxKQogICAg
ICwgbV9jb2x1bW5XaWR0aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAppbmRleCA0ZGEzYmQ3Mzc3MWJhMTcxOTBlYWMzNWRhNjM4ZTI0M2YxOTAyOTA3Li4wYmY1
MTkzZGU0ODQ0NWJjYzY3N2U5MTRlOGFkM2RmODFjZWI4MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg5Myw3ICsxODkzLDcgQEAgY29uc3QgUmVu
ZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YSYgUmVuZGVyT2JqZWN0OjpyYXJlRGF0YSgp
IGNvbnN0CiBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6
OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAgICByZXR1
cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1
cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBSZW5k
ZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDNmYWFmYTExMjA2NTI2MjNl
MDY1ZTZhMjFjZTFjNzUxZGJhOTFhMzcuLjAzZGQwOGZlNmI3ZjBhNmRkMTVmMjFmMjMzNWNjYWJj
NWFmMDJhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOwogCiBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zbmFwc2hvdFJlc291cmNlKHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1fc25hcHNob3RSZXNvdXJj
ZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiAgICAgbV9zbmFwc2hvdFJl
c291cmNlLT5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCmluZGV4IDE4NmNhODcwZWQxMDkxM2Q1OGI4NTQ5ZWI5NmRlMzM2ZTM0NTUz
NTkuLmU5MWExMzM3MTk5MTJkMThmYTU1ZTM2ZDgzNTU4ODU3YzJkMThiMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQg
UmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5CiAgICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NTMiBzcGVj
LCB5b3Ugb25seSB1c2UgZml4ZWQgdGFibGUgbGF5b3V0IGlmIGFuCiAgICAgICAgIC8vIGV4cGxp
Y2l0IHdpZHRoIGlzIHNwZWNpZmllZCBvbiB0aGUgdGFibGUuICBBdXRvIHdpZHRoIGltcGxpZXMg
YXV0byB0YWJsZSBsYXlvdXQuCiAgICAgICAgIGlmIChzdHlsZSgpLnRhYmxlTGF5b3V0KCkgPT0g
VGFibGVMYXlvdXRUeXBlOjpGaXhlZCAmJiAhc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8o
KSkKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkVGFi
bGVMYXlvdXQ+KHRoaXMpOworICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IG1ha2VVbmlxdWU8
Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGFi
bGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CisgICAg
ICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxBdXRvVGFibGVMYXlvdXQ+KHRoaXMp
OwogICAgIH0KIAogICAgIC8vIElmIGJvcmRlciB3YXMgY2hhbmdlZCwgaW52YWxpZGF0ZSBjb2xs
YXBzZWQgYm9yZGVycyBjYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNw
cAppbmRleCA2OGMzYTE1ZDk1MTZiNWIzYzdjMmRkYWI0YWRhNDA5YTVkYzIwZGZhLi5hMDJkOWMx
NmYzYTI3Y2M1MjIwOTcxMDJjMjY5Yjc1NTUwOWQwMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIFJlbmRlclRleHQ6
OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKIAogc3RkOjp1bmlxdWVfcHRyPElubGlu
ZVRleHRCb3g+IFJlbmRlclRleHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dDo6cG9zaXRpb25M
aW5lQm94KElubGluZVRleHRCb3gmIHRleHRCb3gpCkBAIC0xNTQ1LDcgKzE1NDUsNyBAQCB2b2lk
IFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVk
IG9mZnNldEFmdGVyTGFzdFR5cAogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgc2VjdXJlVGV4
dFRpbWVyID0gc2VjdXJlVGV4dFRpbWVycygpLmFkZCh0aGlzLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFzZWN1cmVUZXh0VGltZXIpCi0gICAgICAgIHNlY3VyZVRleHRUaW1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7CisgICAgICAgIHNl
Y3VyZVRleHRUaW1lciA9IG1ha2VVbmlxdWU8U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7CiAgICAg
c2VjdXJlVGV4dFRpbWVyLT5yZXN0YXJ0KG9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGMxNDQ1MWEx
OGVlYTdhNTcxYTI3Nzc4OThhNzljYzhiNDNmZjMxNDIuLjVmZWM2NzhjNmJiNWRmMGU0OTIyYjAx
MmMzZjI2OGRiYWI0YTdiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFu
Z2xlKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0KSBjb25zdAogICAgIC8vIEZJWE1FOiBN
YXliZSB0aGVyZSBzaG91bGQgYmUgYSByZWdpb24gdHlwZSB0aGF0IGRvZXMgdGhpcyBhdXRvbWF0
aWNhbGx5LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtUmVwYWludFJlZ2lvbkdy
aWRTaXplID0gMTYgKiAxNjsKICAgICBpZiAobV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24tPmdy
aWRTaXplKCkgPiBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplKQotICAgICAgICBtX2FjY3Vt
dWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPihtX2FjY3VtdWxh
dGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOworICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWlu
dFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+
Ym91bmRzKCkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmZsdXNoQWNjdW11bGF0ZWRSZXBhaW50
UmVnaW9uKCkgY29uc3QKQEAgLTcyNCw3ICs3MjQsNyBAQCBib29sIFJlbmRlclZpZXc6OnVzZXND
b21wb3NpdGluZygpIGNvbnN0CiBSZW5kZXJMYXllckNvbXBvc2l0b3ImIFJlbmRlclZpZXc6OmNv
bXBvc2l0b3IoKQogewogICAgIGlmICghbV9jb21wb3NpdG9yKQotICAgICAgICBtX2NvbXBvc2l0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOworICAg
ICAgICBtX2NvbXBvc2l0b3IgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRvcj4oKnRo
aXMpOwogCiAgICAgcmV0dXJuICptX2NvbXBvc2l0b3I7CiB9CkBAIC03NDUsNyArNzQ1LDcgQEAg
dm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIEltYWdlUXVhbGl0eUNvbnRyb2xsZXImIFJlbmRlclZp
ZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9pbWFnZVF1YWxpdHlD
b250cm9sbGVyKQotICAgICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICAgICAgbV9pbWFnZVF1
YWxpdHlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbWFnZVF1YWxpdHlDb250cm9sbGVyPigqdGhp
cyk7CiAgICAgcmV0dXJuICptX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CiB9CiAKQEAgLTgzNCw3
ICs4MzQsNyBAQCBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3I6OlJlcGFpbnRS
ZWdpb25BY2N1bXVsYXRvcihSZW5kZXJWaWV3KiB2aWV3KQogCiAgICAgbV93YXNBY2N1bXVsYXRp
bmdSZXBhaW50UmVnaW9uID0gISFyb290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRS
ZWdpb247CiAgICAgaWYgKCFtX3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRSZWdpb24pCi0gICAgICAg
IHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVnaW9uPigpOworICAgICAgICByb290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJl
cGFpbnRSZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICBtX3Jvb3RWaWV3ID0gbWFr
ZVdlYWtQdHIoKnJvb3RSZW5kZXJWaWV3KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGZkY2Q1OWM1MmM1ZjMyOGY1MjA5ZjAwYzFmOGQ4MTZh
ZGM1Zjc2NjguLjQ0NTU4NDFhZjMyZmYxNTI1MmNmYTI4ZWQ4YTY5YzNlNDlmMWYzMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTEyOSw3ICsxMjks
NyBAQCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcm
IGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGZsbwogICAgICAgICBnRWxsaXBzaXNCb3hNYXAgPSBu
ZXcgRWxsaXBzaXNCb3hNYXAoKTsKIAogICAgIEFTU0VSVCghaGFzRWxsaXBzaXNCb3goKSk7Ci0g
ICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBzdGQ6Om1h
a2VfdW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVs
bGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDAp
LCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBt
YXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgYXV0byogZWxsaXBzaXNCb3gg
PSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBtYWtlVW5pcXVlPEVsbGlwc2lzQm94PihibG9j
a0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8g
bWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXBy
ZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CiAgICAgc2V0SGFzRWxsaXBzaXNCb3godHJ1ZSk7CiAgICAgLy8gRklYTUU6IERvIHdl
IG5lZWQgYW4gUlRMIHZlcnNpb24gb2YgdGhpcz8KICAgICBpZiAobHRyICYmICh4KCkgKyBsb2dp
Y2FsV2lkdGgoKSArIGVsbGlwc2lzV2lkdGgpIDw9IGJsb2NrUmlnaHRFZGdlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCA3ZGYyODI4OGE0ZDU1YzJjN2Qy
NmFkNGJjMDE3NmQwYjc2MTc4MzY0Li4yNDdlNTVjMDY5ZTlmZTg4MWNhZjRiZmJjMmI0YWVmMTll
MzYxN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTE0
NSw3ICsxNDUsNyBAQCBjbGFzcyBSb290SW5saW5lQm94IDogcHVibGljIElubGluZUZsb3dCb3gs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSb290SW5saW5lQm94PgogICAgICAgICBpZiAobV9mbG9h
dHMpCiAgICAgICAgICAgICBtX2Zsb2F0cy0+YXBwZW5kKG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZmxvYXRzID0gc3RkOjptYWtlX3VuaXF1
ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CisgICAg
ICAgICAgICBtX2Zsb2F0cyA9IG1ha2VVbmlxdWU8Q2xlYW5MaW5lRmxvYXRMaXN0PigxLCBtYWtl
V2Vha1B0cihmbG9hdGluZ0JveCkpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlRmxvYXQoUmVu
ZGVyQm94JiBmbG9hdGluZ0JveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5jcHAKaW5kZXggZWM1ZTczNTZhNjRkMTI0OWRkYTExNDdlOGJiYTMxZjQ3
OTBiNGJmMi4uYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNmNGU4MTFjM2VhMWI5M2ZjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKQEAgLTEz
MSwxMyArMTMxLDEzIEBAIHN0YXRpYyBTZWxlY3Rpb25EYXRhIGNvbGxlY3QoY29uc3QgU2VsZWN0
aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24sIGJvb2wKICAgICB3aGlsZSAoc3RhcnQg
JiYgc3RhcnQgIT0gc3RvcCkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0
aW9uKCpzdGFydCwgc2VsZWN0aW9uKSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNw
b25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0
IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRl
cmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0
YXJ0LCB0cnVlKSk7CisgICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQo
c3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CiAg
ICAgICAgICAgICBpZiAocmVwYWludERpZmZlcmVuY2UpIHsKICAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8qIGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpzdGFydCk7IGJsb2NrOyBi
bG9jayA9IGNvbnRhaW5pbmdCbG9ja0JlbG93VmlldygqYmxvY2spKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8mIGJsb2NrSW5mbyA9IG9sZFNlbGVjdGlvbkRhdGEuYmxvY2tzLmFkZChibG9j
aywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoYmxv
Y2tJbmZvKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZv
PigqYmxvY2spOworICAgICAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJl
bmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmJsb2NrKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMywxMyArMjEzLDEzIEBAIEludFJlY3QgU2VsZWN0
aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50IGNsaXBUb1Zp
c2libGVDb250CiAgICAgICAgIGlmICgoc3RhcnQtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IHN0
YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9u
Q29udGV4dC5lbmQoKSkKICAgICAgICAgICAgICYmIHN0YXJ0LT5zZWxlY3Rpb25TdGF0ZSgpICE9
IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFy
ZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhl
eSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICByZW5kZXJlcnMuc2V0KHN0
YXJ0LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRv
VmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOworICAgICAgICAg
ICAgcmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigq
c3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMp
KTsKICAgICAgICAgICAgIGF1dG8qIGJsb2NrID0gc3RhcnQtPmNvbnRhaW5pbmdCbG9jaygpOwog
ICAgICAgICAgICAgd2hpbGUgKGJsb2NrICYmICFpczxSZW5kZXJWaWV3PigqYmxvY2spKSB7CiAg
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+JiBibG9j
a0luZm8gPSByZW5kZXJlcnMuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxl
Y3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVD
b250ZW50OjpZZXMpOworICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVu
ZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2NrLCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9W
aXNpYmxlQ29udGVudDo6WWVzKTsKICAgICAgICAgICAgICAgICBibG9jayA9IGJsb2NrLT5jb250
YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjgxLDcgKzI4MSw3
IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxl
Y3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxl
Y3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAgICAgZm9yIChhdXRvKiBjdXJyZW50UmVu
ZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsgY3VycmVudFJlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJl
ciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5l
eHQoKSkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpjdXJyZW50
UmVuZGVyZXIsIG1fc2VsZWN0aW9uQ29udGV4dCkpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0cnVlKTsKKyAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0g
bWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0cnVlKTsK
ICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAgICAgICAgIGZvciAoYXV0byYgcmVj
dCA6IHNlbGVjdGlvbkluZm8tPmNvbGxlY3RlZFNlbGVjdGlvblJlY3RzKCkpCiAgICAgICAgICAg
ICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkUmVjdChzZWxlY3Rpb25JbmZvLT5yZXBh
aW50Q29udGFpbmVyKCksIHJlY3QpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgU2VsZWN0aW9u
UmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2Rl
IGJsb2NrUmVwCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2Vs
ZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVjdGVkQmxvY2tzLmFkZChjb250YWluaW5n
QmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxv
Y2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9j
a0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRh
aW5pbmdCbG9jayk7CisgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5k
ZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpjb250YWluaW5nQmxvY2spOwogICAgICAgICAgICAgICAg
IGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25S
ZWN0R2F0aGVyZXIuYWRkR2FwUmVjdHMoYmxvY2tJbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIGJs
b2NrSW5mby0+cmVjdHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dC5jcHAKaW5kZXggOGM3NjZlNmRlMmM3NGFkMDM3OTczMzMxZmM3ZjVhNDc0OTAxNWI4
ZS4uYzM2MmY0ZTU3YjAwZjljZTM5YTczZWNlODExYzJjODMyZDY1MGJhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtOTk3LDcgKzk5Nyw3
IEBAIExheW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBs
aW5lQ291bnQsIGNvbnN0IFJlbmRlckJsb2NrCiBjb25zdCBSdW5SZXNvbHZlciYgTGF5b3V0Ojpy
dW5SZXNvbHZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3J1blJlc29sdmVyKQotICAgICAgICBt
X3J1blJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dS
ZW5kZXJlciwgKnRoaXMpOworICAgICAgICBtX3J1blJlc29sdmVyID0gbWFrZVVuaXF1ZTxSdW5S
ZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOwogICAgIHJldHVybiAqbV9ydW5S
ZXNvbHZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDFiZjk4ZTRlZWI0M2JhMjJjZGE0ZTZmNWQz
YmMyYTVmOWZjNGI0YjcuLjA2MjViMTZiZDU0MzE5NzNlZDMxZGU5OThhZWQ4ODliMDEyYmEzYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVu
Y3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBS
ZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBh
aQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGRlYnVnU2hhZG93ID0gbnVsbHB0
cjsKICAgICBpZiAoZmxvdy5zZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNF
bmFibGVkKCkpIHsKLSAgICAgICAgZGVidWdTaGFkb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRv
d0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUs
IENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CisgICAgICAgIGRlYnVnU2hhZG93ID0gbWFrZVVuaXF1
ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6Tm9ybWFs
LCB0cnVlLCBDb2xvcigwLCAyNTUsIDAsIDIwMCkpOwogICAgICAgICB0ZXh0UGFpbnRlci5zZXRT
aGFkb3coZGVidWdTaGFkb3cuZ2V0KCkpOwogICAgIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZv
aWQgZ2VuZXJhdGVMaW5lQm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91
dCYgbGF5b3V0KQogICAgICAgICBCaWRpUnVuTGlzdDxCaWRpUnVuPiBiaWRpUnVuczsKICAgICAg
ICAgZm9yIChhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsgaXQgIT0gcmFuZ2UuZW5kKCk7ICsraXQp
IHsKICAgICAgICAgICAgIGF1dG8gcnVuID0gKml0OwotICAgICAgICAgICAgYmlkaVJ1bnMuYXBw
ZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocnVuLmxvY2FsU3RhcnQoKSwgcnVuLmxv
Y2FsRW5kKCksIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4ocnVuLnJlbmRlcmVyKCkpLCBiaWRp
Q29udGV4dC5wdHIoKSwgVV9MRUZUX1RPX1JJR0hUKSk7CisgICAgICAgICAgICBiaWRpUnVucy5h
cHBlbmRSdW4obWFrZVVuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxF
bmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250
ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKICAgICAgICAgfQogCiAgICAgICAgIExpbmVJ
bmZvIGxpbmVJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRB
dXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5j
cHAKaW5kZXggM2JhMTMwZDQ1NTlkNzI5MmQ4OTFmNTUzY2YxNDgwZjg2NmJiMmJhZC4uNGI0M2U2
YWNiZTBlZWRhZjRlYWY0ZDJlNWQ1YTQ0NjM5MDYwNTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBUZXh0
QXV0b1NpemluZzo6YWRkVGV4dE5vZGUoVGV4dCYgbm9kZSwgZmxvYXQgY2FuZGlkYXRlU2l6ZSkK
ICAgICBMT0coVGV4dEF1dG9zaXppbmcsICIgYWRkQXV0b1NpemVkTm9kZSAlcCBjYW5kaWRhdGVT
aXplPSVmIiwgJm5vZGUsIGNhbmRpZGF0ZVNpemUpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90
ZXh0Tm9kZXMuYWRkPFRleHRBdXRvU2l6aW5nSGFzaFRyYW5zbGF0b3I+KG5vZGUucmVuZGVyZXIo
KS0+c3R5bGUoKSwgbnVsbHB0cik7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0
b1NpemluZ1ZhbHVlPigpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUtPmFkZFRleHROb2RlKG5vZGUsIGNhbmRpZGF0ZVNpemUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKaW5kZXggMmIxYzFmYTAzY2Ex
YzU3NTY5MDI3N2E1ZTgxMjg3MTAxMGQ0NDY3ZS4uZDExNjYxNWE3MjZjNWEwYTk0M2Q5YjlmNmUw
OTQwYjk1ZTY5MDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVC
cmVha2VyLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIExpbmVCcmVha2VyOjpza2lwTGVhZGlu
Z1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mCiAgICAg
ICAgIGlmIChvYmplY3QuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgIHNl
dFN0YXRpY1Bvc2l0aW9ucyhtX2Jsb2NrLCBkb3duY2FzdDxSZW5kZXJCb3g+KG9iamVjdCksIHdp
ZHRoLnNob3VsZEluZGVudFRleHQoKSk7CiAgICAgICAgICAgICBpZiAob2JqZWN0LnN0eWxlKCku
aXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZl
ci5ydW5zKCkuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0
LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CisgICAgICAgICAgICAgICAg
cmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlSdW4+KDAsIDEsIG9iamVj
dCwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSkpOwogICAgICAgICAgICAgICAg
IGxpbmVJbmZvLmluY3JlbWVudFJ1bnNGcm9tTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChvYmplY3QuaXNGbG9hdGluZygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAppbmRleCA0YjE1OTdl
OWYyMWM5Y2Q0YjJmMGQ4ODM0NzQ0Nzc1ZjFkOGJkZTAxLi5kNTIwOTJiNjhlZDhlMmM4ZmRhNTE1
YzkwY2Q1MjIzNTZkNjU1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBJbnRTaGFwZUludGVydmFsIE1h
cmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KGludCB5KSBjb25zdAogc3RkOjp1bmlx
dWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0
ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3QKIHsKICAgICBpbnQg
bWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChvZmZzZXQoKSA+IHNoYXBlTWFyZ2luKSA/IHNpemUoKSA6
IHNpemUoKSAtIG9mZnNldCgpICogMiArIHNoYXBlTWFyZ2luICogMjsKLSAgICBhdXRvIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpbkludGVydmFs
c1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFyZ2luLCBvZmZzZXQoKSkpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwg
c3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5l
cmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ioc2hhcGVNYXJnaW4pOwogCiAgICAgZm9yIChp
bnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygpLm1heFkoKTsgKyt5KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDMwMjMxYTBiZTFiYmM2M2U0
YmUzZDI1MDUxMmJlZDNkMTk1OTQwOTkuLmY1ZWZlZmRkMzJiMzA1NDdhZGJkOGViMDhmNTRlNjNi
MDI0MGZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBA
IC00NiwyNCArNDYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxTaGFwZT4gY3JlYXRlSW5zZXRTaGFwZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3Vu
ZHMpCiB7CiAgICAgQVNTRVJUKGJvdW5kcy5yZWN0KCkud2lkdGgoKSA+PSAwICYmIGJvdW5kcy5y
ZWN0KCkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hh
cGU+KGJvdW5kcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CiB9
CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUNpcmNsZVNoYXBlKGNvbnN0
IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQgcmFkaXVzKQogewogICAgIEFTU0VSVChyYWRpdXMg
Pj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0
UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIueSgpIC0gcmFkaXVzLCByYWRpdXMqMiwg
cmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRl
ci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJh
ZGl1cykpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNl
U2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQog
ewogICAgIEFTU0VSVChyYWRpaS53aWR0aCgpID49IDAgJiYgcmFkaWkuaGVpZ2h0KCkgPj0gMCk7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChj
ZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCBy
YWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lk
dGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlp
LmhlaWdodCgpKjIpLCByYWRpaSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IGNyZWF0ZVBvbHlnb25TaGFwZShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2
ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBvbHlnb25TaGFwZT4oV1RGTW92ZSh2ZXJ0aWNlcyksIGZpbGxSdWxlKTsK
IH0KIAogc3RhdGljIGlubGluZSBGbG9hdFJlY3QgcGh5c2ljYWxSZWN0VG9Mb2dpY2FsKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbG9naWNhbEJveEhlaWdodCwgV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUpCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFw
ZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFwZSwgY29uc3QgTGEKICAg
ICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVlcyA9IHBvbHlnb24udmFsdWVzKCk7CiAg
ICAgICAgIHNpemVfdCB2YWx1ZXNTaXplID0gdmFsdWVzLnNpemUoKTsKICAgICAgICAgQVNTRVJU
KCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9h
dFBvaW50Pj4gdmVydGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4o
dmFsdWVzU2l6ZSAvIDIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9p
bnQ+PiB2ZXJ0aWNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXpl
IC8gMik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZXNTaXplOyBpICs9
IDIpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgdmVydGV4KAogICAgICAgICAgICAgICAgIGZs
b2F0VmFsdWVGb3JMZW5ndGgodmFsdWVzLmF0KGkpLCBib3hXaWR0aCksCkBAIC0xNzksNyArMTc5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1h
Z2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKIAogICAgIEludFJlY3QgaW1hZ2VSZWN0ID0g
c25hcHBlZEludFJlY3QoaW1hZ2VSKTsKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVk
SW50UmVjdChtYXJnaW5SKTsKLSAgICBhdXRvIGludGVydmFscyA9IHN0ZDo6bWFrZV91bmlxdWU8
UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0Lnko
KSk7CisgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxz
PihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgx
NDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2Vs
ZXJhdGVkLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFVuYWNjZWxlcmF0ZWQpOwogCkBA
IC0yMTgsNyArMjE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFz
dGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICAgICAgfQogICAg
IH0KIAotICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBl
PihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKKyAgICBhdXRvIHJhc3Rl
clNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJn
aW5SZWN0LnNpemUoKSk7CiAgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5n
TW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBtYXJnaW47CiAgICAgcmV0dXJuIHJh
c3RlclNoYXBlOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hh
cGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgV3JpCiAK
ICAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCByb3VuZGVkUmVjdC5yZWN0KCkud2lkdGgoKSwgcm91
bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpKTsKICAgICBGbG9hdFJvdW5kZWRSZWN0IGJvdW5kcyhy
ZWN0LCByb3VuZGVkUmVjdC5yYWRpaSgpKTsKLSAgICBhdXRvIHNoYXBlID0gc3RkOjptYWtlX3Vu
aXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICBhdXRvIHNoYXBlID0gbWFrZVVuaXF1ZTxCb3hT
aGFwZT4oYm91bmRzKTsKICAgICBzaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwog
ICAgIHNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAppbmRleCBjZDk0Zjg5YzAyYjBiOGMx
MzUxOTQ1N2U0NGQwZGRhZjZkODdmMWZhLi45NDg0MzE3MTk0N2MwMjMwOWFiN2Y0ZmIxYjk3YzI2
Mzg4MmVlMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uaApAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNoYXBlT3V0c2lkZUlu
Zm8gZmluYWwgewogICAgICAgICBJbmZvTWFwJiBpbmZvTWFwID0gU2hhcGVPdXRzaWRlSW5mbzo6
aW5mb01hcCgpOwogICAgICAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogaW5mbyA9IGluZm9NYXAu
Z2V0KCZrZXkpKQogICAgICAgICAgICAgcmV0dXJuICppbmZvOwotICAgICAgICBhdXRvIHJlc3Vs
dCA9IGluZm9NYXAuYWRkKCZrZXksIHN0ZDo6bWFrZV91bmlxdWU8U2hhcGVPdXRzaWRlSW5mbz4o
a2V5KSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQoJmtleSwgbWFrZVVuaXF1
ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKICAgICAgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOwogICAgIH0KICAgICBzdGF0aWMgdm9pZCByZW1vdmVJbmZvKGNvbnN0IFJlbmRl
ckJveCYga2V5KSB7IGluZm9NYXAoKS5yZW1vdmUoJmtleSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4IDBjOThmOTE2NmY3ZTE1Mjk3
MDNiY2RiMmM4YzgzY2M4MGJiN2JmMjQuLjc0NGM5MGI4ZmIzZjUyNzY4YTUzOGQyMTM1ODM2MmNh
NjM0ODI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hh
cGVzLmNwcApAQCAtMzU4LDcgKzM1OCw3IEBAIFJlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlUGF0
aDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjCiAKICAg
ICBhdXRvJiBmcm9tUGF0aCA9IGRvd25jYXN0PEJhc2ljU2hhcGVQYXRoPihmcm9tKTsKIAotICAg
IGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0
cmVhbT4oKTsKKyAgICBhdXRvIHJlc3VsdGluZ1BhdGhCeXRlcyA9IG1ha2VVbmlxdWU8U1ZHUGF0
aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKCpmcm9t
UGF0aC5tX2J5dGVTdHJlYW0sICptX2J5dGVTdHJlYW0sICpyZXN1bHRpbmdQYXRoQnl0ZXMsIHBy
b2dyZXNzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gQmFzaWNTaGFwZVBhdGg6OmNyZWF0ZShXVEZN
b3ZlKHJlc3VsdGluZ1BhdGhCeXRlcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQ29udGVudERhdGEuaAppbmRleCBlN2JiMDYxNjUwMmQ5OWQ2ZGI0MzkyYmI0NjhhOWFiNDY5
Y2U0OTRhLi4yYzEyZGQ5YjQwZGQ0MGIzYzBiZjY3NDkzMjJhZTJiMGZkMWUwNzBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaApAQCAtOTUsNyArOTUs
NyBAQCBjbGFzcyBJbWFnZUNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsK
ICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1l
bnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAg
ICBhdXRvIGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihtX2ltYWdl
LmNvcHlSZWYoKSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBtYWtlVW5pcXVlPEltYWdlQ29udGVu
dERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKICAgICAgICAgaW1hZ2UtPnNldEFsdFRleHQoYWx0
VGV4dCgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBA
QCBjbGFzcyBUZXh0Q29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBw
cml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJl
cihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KG1fdGV4dCk7IH0KKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQogCiAgICAgU3RyaW5n
IG1fdGV4dDsKIH07CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgQ291bnRlckNvbnRlbnREYXRh
IGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0
PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNv
bnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5h
bCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
b3VudGVyQ29udGVudERhdGE+KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50
ZXIoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KG1h
a2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOwogICAgIH0KIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gbV9jb3VudGVyOwpAQCAtMTkwLDcgKzE5MCw3IEBA
IGNsYXNzIFF1b3RlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBw
cml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJl
cihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1ha2VVbmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUoKSk7IH0KIAogICAgIFF1
b3RlVHlwZSBtX3F1b3RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5jcHAKaW5kZXggZjNkOTFkYzhkYmM4ZDllNDZjNjAxYjk1ODQzYjlhOTUyZjNiMmQx
ZC4uMzAwMTRkMDRmNzBmYjkxODE3NDI4NzYwM2ZkZWFiNzIzOTU2MTRmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAg
RmlsbExheWVyOjpGaWxsTGF5ZXIoRmlsbExheWVyVHlwZSB0eXBlKQogfQogCiBGaWxsTGF5ZXI6
OkZpbGxMYXllcihjb25zdCBGaWxsTGF5ZXImIG8pCi0gICAgOiBtX25leHQoby5tX25leHQgPyBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgOiBt
X25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxw
dHIpCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAgICAsIG1feFBvc2l0aW9uKG8ubV94UG9z
aXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBvc2l0aW9uKQpAQCAtMTE3LDcgKzExNyw3
IEBAIEZpbGxMYXllcjo6fkZpbGxMYXllcigpCiAKIEZpbGxMYXllciYgRmlsbExheWVyOjpvcGVy
YXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQogewotICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gc3Rk
OjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOworICAgIG1fbmV4
dCA9IG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRy
OwogCiAgICAgbV9pbWFnZSA9IG8ubV9pbWFnZTsKICAgICBtX3hQb3NpdGlvbiA9IG8ubV94UG9z
aXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAppbmRleCAyNDliYTQ3ZTU4NDNlY2M2MmU2ZmQ0ZjI2YWYxY2Y1MzhhMTYzZjljLi5mYjQzYzIw
ZTVjZTk5ZWNlMTlmNDUyZmQ5Zjg3OTY0ZDgxNGJiN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBSZW5k
ZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
U3R5bGU+KHN0eWxlLCBDbG9uZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+
KHN0eWxlLCBDbG9uZSk7CiB9CiAKIFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRGlz
cGxheVR5cGUgZGlzcGxheSkKQEAgLTQwOSw3ICs0MDksNyBAQCBSZW5kZXJTdHlsZSogUmVuZGVy
U3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
cHNldQogICAgIFJlbmRlclN0eWxlKiByZXN1bHQgPSBwc2V1ZG8uZ2V0KCk7CiAKICAgICBpZiAo
IW1fY2FjaGVkUHNldWRvU3R5bGVzKQotICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKKyAgICAgICAgbV9jYWNoZWRQc2V1
ZG9TdHlsZXMgPSBtYWtlVW5pcXVlPFBzZXVkb1N0eWxlQ2FjaGU+KCk7CiAKICAgICBtX2NhY2hl
ZFBzZXVkb1N0eWxlcy0+YXBwZW5kKFdURk1vdmUocHNldWRvKSk7CiAKQEAgLTEwNTgsNyArMTA1
OCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCk7CiAgICAgaWYgKCFkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMp
Ci0gICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91
bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hl
ZFByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKICAgICBkYXRhLmN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMtPmFkZChuYW1lKTsKIH0KIApAQCAtMTMwMSw3ICsx
MzAxLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChSZWZQdHI8U3R5bGVJbWFnZT4m
JiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwot
ICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5y
ZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8SW1hZ2VD
b250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwoKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQpAQCAt
MTMxMCwxMyArMTMxMCwxMyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBib29sIGFkZCkKICAgICBpZiAoYWRkICYmIGRhdGEuY29udGVudCkgewog
ICAgICAgICBhdXRvJiBsYXN0ID0gbGFzdENvbnRlbnQoKmRhdGEuY29udGVudCk7CiAgICAgICAg
IGlmICghaXM8VGV4dENvbnRlbnREYXRhPihsYXN0KSkKLSAgICAgICAgICAgIGxhc3Quc2V0TmV4
dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CisgICAgICAgICAg
ICBsYXN0LnNldE5leHQobWFrZVVuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRDb250ZW50ID0gZG93bmNhc3Q8VGV4
dENvbnRlbnREYXRhPihsYXN0KTsKICAgICAgICAgICAgIHRleHRDb250ZW50LnNldFRleHQodGV4
dENvbnRlbnQudGV4dCgpICsgc3RyaW5nKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGRhdGEuY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJp
bmcpOworICAgICAgICBkYXRhLmNvbnRlbnQgPSBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4o
c3RyaW5nKTsKICAgICAgICAgYXV0byYgYWx0VGV4dCA9IGRhdGEuYWx0VGV4dDsKICAgICAgICAg
aWYgKCFhbHRUZXh0LmlzTnVsbCgpKQogICAgICAgICAgICAgZGF0YS5jb250ZW50LT5zZXRBbHRU
ZXh0KGFsdFRleHQpOwpAQCAtMTMyNywxMiArMTMyNywxMiBAQCB2b2lkIFJlbmRlclN0eWxlOjpz
ZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gY291bnRlciwgYm9vbCBh
ZGQpCiB7CiAgICAgaWYgKCFjb3VudGVyKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVu
dChzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSks
IGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RG
TW92ZShjb3VudGVyKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQo
UXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkKIHsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91
bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFr
ZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVy
U3R5bGU6OnNldENvbnRlbnRBbHRUZXh0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTU1MSw3
ICsxNTUxLDcgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50
ZXJEaXJlY3RpdmVzKCkKIHsKICAgICBhdXRvJiBtYXAgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLmNvdW50ZXJEaXJlY3RpdmVzOwogICAgIGlmICghbWFwKQotICAgICAgICBtYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCk7CisgICAgICAgIG1hcCA9
IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKIH0K
IApAQCAtMTY3MSwxNCArMTY3MSwxNCBAQCB2b2lkIFJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0
aW9ucygpCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucygpCiB7
CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMpCi0g
ICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucyA9IHN0ZDo6
bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gbWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0PigpOwog
ICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9uczsKIH0KIAogQW5p
bWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKCkKIHsKICAgICBpZiAo
IW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMpCi0gICAgICAgIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCkudHJhbnNpdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0
dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9uczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcApp
bmRleCAyMGIyYTgxMTRiMGM4ZTllYmQ0ODI3MDc5YTk4MjBmMmVjMGRjZGMyLi42ZTM3Y2Y4ZmI4
YWJhNTVlYzMzMGE5NjAzM2E4YTk1NGM3Y2IwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcApAQCAtMjAxLDcgKzIw
MSw3IEBAIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKCkKIAogaW5saW5l
IFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKGNvbnN0IFN0eWxlU2hhZG93
U1ZHRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlU2hhZG93U1ZHRGF0YT4oKQot
ICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4o
Km90aGVyLnNoYWRvdykgOiBudWxscHRyKQorICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IG1h
a2VVbmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggM2Q2
MWM5NGMwMTY2MTYwODU4ZGFiZDg0MDlmYzQwODY3MGU1MDFjYS4uYzE3ZWFmODU5YjBiZmFhN2Rh
YmMwMDhkNGU3NDBmYzYzMGE0YjgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMzMsNyArMzMsNyBAQCBTaGFkb3dEYXRhOjpTaGFkb3dE
YXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCiAgICAgLCBtX2NvbG9yKG8ubV9jb2xvcikKICAgICAs
IG1fc3R5bGUoby5tX3N0eWxlKQogICAgICwgbV9pc1dlYmtpdEJveFNoYWRvdyhvLm1faXNXZWJr
aXRCb3hTaGFkb3cpCi0gICAgLCBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPFNo
YWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQorICAgICwgbV9uZXh0KG8ubV9uZXh0ID8g
bWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby5tX25leHQpIDogbnVsbHB0cikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVy
aXRlZERhdGEuY3BwCmluZGV4IGFkMmNiZDk1N2VlZjgyNTYwY2ZiMzUyZTlmNTBiMzllNjMzYTI2
ZmYuLjk2ZGJiYTAwN2U2YTY0YTdkNjk3YTI5YTIxZDYyMWFkNDQ3NTRiNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogICAg
ICwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihvLnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lz
Q29sb3IpCiAgICAgLCBjYXJldENvbG9yKG8uY2FyZXRDb2xvcikKICAgICAsIHZpc2l0ZWRMaW5r
Q2FyZXRDb2xvcihvLnZpc2l0ZWRMaW5rQ2FyZXRDb2xvcikKLSAgICAsIHRleHRTaGFkb3coby50
ZXh0U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hhZG93KSA6
IG51bGxwdHIpCisgICAgLCB0ZXh0U2hhZG93KG8udGV4dFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hh
ZG93RGF0YT4oKm8udGV4dFNoYWRvdykgOiBudWxscHRyKQogICAgICwgY3Vyc29yRGF0YShvLmN1
cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQpCiAgICAgLCBlZmZlY3RpdmVab29tKG8u
ZWZmZWN0aXZlWm9vbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA2ZmJiMmI3YjBjM2Vi
MDNlODY5YTFlYWFjOTE2MTExOWM5YzYxZTliLi5iZGQwMTkxNWFhMjc4ZGQ2YTY2NDhmZjRjM2Zi
ZGIzZmNjZDE0MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xMzksMTMgKzEzOSwx
MyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwgc2Nyb2xsU25hcEFyZWEoby5zY3Jv
bGxTbmFwQXJlYSkKICNlbmRpZgogICAgICwgY29udGVudChvLmNvbnRlbnQgPyBvLmNvbnRlbnQt
PmNsb25lKCkgOiBudWxscHRyKQotICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGly
ZWN0aXZlcyA/IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRl
ckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKKyAgICAsIGNvdW50ZXJEaXJlY3RpdmVzKG8uY291bnRl
ckRpcmVjdGl2ZXMgPyBtYWtlVW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCpvLmNvdW50ZXJE
aXJlY3RpdmVzKSA6IG51bGxwdHIpCiAgICAgLCBhbHRUZXh0KG8uYWx0VGV4dCkKLSAgICAsIGJv
eFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94
U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBib3hTaGFkb3coby5ib3hTaGFkb3cgPyBtYWtlVW5p
cXVlPFNoYWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBudWxscHRyKQogICAgICwgd2lsbENoYW5n
ZShvLndpbGxDaGFuZ2UpCiAgICAgLCBib3hSZWZsZWN0KG8uYm94UmVmbGVjdCkKLSAgICAsIGFu
aW1hdGlvbnMoby5hbmltYXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigq
by5hbmltYXRpb25zKSA6IG51bGxwdHIpCi0gICAgLCB0cmFuc2l0aW9ucyhvLnRyYW5zaXRpb25z
ID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby50cmFuc2l0aW9ucykgOiBudWxs
cHRyKQorICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlv
bkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKKyAgICAsIHRyYW5zaXRpb25zKG8udHJh
bnNpdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51
bGxwdHIpCiAgICAgLCBtYXNrKG8ubWFzaykKICAgICAsIG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJ
bWFnZSkKICAgICAsIHBhZ2VTaXplKG8ucGFnZVNpemUpCkBAIC0xNzAsNyArMTcwLDcgQEAgaW5s
aW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEo
Y29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykK
ICAgICAsIGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYpCiAgICAgLCBjdXN0b21Qcm9wZXJ0aWVz
KG8uY3VzdG9tUHJvcGVydGllcykKLSAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMo
by5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0
PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKKyAg
ICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzID8gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hl
ZFByb3BlcnRpZXMpIDogbnVsbHB0cikKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAg
LCB0b3VjaEFjdGlvbnMoby50b3VjaEFjdGlvbnMpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMmM2ZjMxNzhlZWIyNmM3
YjJjMGQ5NWFlMTA4YjdlZmNjNmUyMmM0ZS4uMjRjZGU0YmQ2MWU3MTRjMjMyM2I5ZTVjZDJjZjI2
OWUyODQ1ZjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0lt
YWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9u
ZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUo
dHJ1ZSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdl
UmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3VyY2UobWFrZVVuaXF1ZTxSZW5kZXJJbWFn
ZVJlc291cmNlPigpKQogewogICAgIGltYWdlUmVzb3VyY2UoKS5pbml0aWFsaXplKCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cAppbmRleCAzYzMxMDU2ZDFjYWIxZmVhMTA0OTA3ODBkMDBjOGRjZDJjNzk4MDY4Li5iYTFjZDA1
MmRhZGFhMWNlMTg0MWM3YzIzY2FmMzNmYWE0ZTM0N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJl
bmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBS
ZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQogewotICAgIGF1dG8gYm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgYXV0byBib3gg
PSBtYWtlVW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1Zp
cnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IDY3
ZTZmOTg5N2QyNzc0NGZkNDEzM2ZmMjc2NzE0YzRlOWRhNjY1YjAuLmRiZjQ5MDNmODlmNGRjOTJl
ZGZmMzA1MzkyNTg2OWYzMmUyZDk5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZv
aWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBS
ZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KCkKIHsKLSAgICBhdXRvIGJveCA9IHN0
ZDo6bWFrZV91bmlxdWU8U1ZHSW5saW5lVGV4dEJveD4oKnRoaXMpOworICAgIGF1dG8gYm94ID0g
bWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0
dWFsTG9naWNhbEhlaWdodCgpOwogICAgIHJldHVybiBib3g7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmlu
ZGV4IDFiM2VmMjRjYzkyZDIwNTJhMzRhYWQyMDg4MjMzMGUxYTEyM2I4NGYuLjFhZDI2NDk2NDY3
MDljMjNmMGRiOWNmYWU0Yjg2M2MyNDdiMzY5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC04OCw3
ICs4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgRmxvYXRSZWN0IHRhcmdldEJv
dW5kaW5nQm94ID0gZmlsdGVyLnRhcmdldEJvdW5kaW5nQm94KCk7CiAKICAgICAvLyBBZGQgZWZm
ZWN0cyB0byB0aGUgYnVpbGRlcgotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOworICAgIGF1
dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6
Y3JlYXRlKGZpbHRlcikpOwogICAgIGJ1aWxkZXItPnNldFByaW1pdGl2ZVVuaXRzKGZpbHRlckVs
ZW1lbnQoKS5wcmltaXRpdmVVbml0cygpKTsKICAgICBidWlsZGVyLT5zZXRUYXJnZXRCb3VuZGlu
Z0JveCh0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBbHJlYWR5IGJ1aWx0
LCBvciB3ZSdyZSBpbiBhIGN5Y2xlLCBvciB3ZSdyZSBtYXJrZWQgZm9yIHJlbW92YWwuIFJlZ2Fy
ZGxlc3MsIGp1c3QgZG8gbm90aGluZyBtb3JlIG5vdy4KICAgICB9CiAKLSAgICBhdXRvIGZpbHRl
ckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckRhdGE+KCk7CisgICAgYXV0byBmaWx0ZXJE
YXRhID0gbWFrZVVuaXF1ZTxGaWx0ZXJEYXRhPigpOwogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3Vu
ZGluZ0JveCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCk7CiAKICAgICBmaWx0ZXJEYXRh
LT5ib3VuZGFyaWVzID0gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0
ZXJFbGVtZW50PigmZmlsdGVyRWxlbWVudCgpLCBmaWx0ZXJFbGVtZW50KCkuZmlsdGVyVW5pdHMo
KSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggZDhhZDA4MDQ2
NmM1YzZkOWVlY2YwNzhjZGZmNjQyNmM2MTRhMGNlMi4uNTUyY2U1YTMzYTgwNjJlNmJlZTBiMDRh
ZTNmMTYwZjA5OWViNTJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xMTksNyArMTE5LDcg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KIAogICAgIGF1dG8mIGdyYWRpZW50RGF0YSA9IG1f
Z3JhZGllbnRNYXAuYWRkKCZyZW5kZXJlciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAg
IGlmICghZ3JhZGllbnREYXRhKQotICAgICAgICBncmFkaWVudERhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdyYWRpZW50RGF0YT4oKTsKKyAgICAgICAgZ3JhZGllbnREYXRhID0gbWFrZVVuaXF1ZTxH
cmFkaWVudERhdGE+KCk7CiAKICAgICBib29sIGlzUGFpbnRpbmdUZXh0ID0gcmVzb3VyY2VNb2Rl
LmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1RleHQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuY3BwCmluZGV4IGFhNTc2NWVkMzc5YjZhYjFiOTQ0NzI2ZjViNWVlNDU0MzgzYzQ2NGUuLjRj
ODE5YjliYzU1ZGMyYmZhODJmYmJjMDk3ZjYzNzU4NWI1YjEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVz
b3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBib29sIG1p
c3NpbmdNYXNrZXJEYXRhID0gIW1fbWFza2VyLmNvbnRhaW5zKCZyZW5kZXJlcik7CiAgICAgaWYg
KG1pc3NpbmdNYXNrZXJEYXRhKQotICAgICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBzdGQ6
Om1ha2VfdW5pcXVlPE1hc2tlckRhdGE+KCkpOworICAgICAgICBtX21hc2tlci5zZXQoJnJlbmRl
cmVyLCBtYWtlVW5pcXVlPE1hc2tlckRhdGE+KCkpOwogCiAgICAgTWFza2VyRGF0YSogbWFza2Vy
RGF0YSA9IG1fbWFza2VyLmdldCgmcmVuZGVyZXIpOwogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNv
bHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0
aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRl
eCAyOWU4ZTdjMjQ3NTY1ODc5MmVlNGVkNGVkMDgyMGZhZWVjOWJkYzBjLi5kZjAxN2JhMWJmYzBj
Y2Y3YWVhOTNhM2JiMmY3ZmM3ODhmNjk2Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC0zMSw2ICszMSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogc3RydWN0
IE1hc2tlckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAppbmRleCBjYzJjYmZjZjBmZTlhNTllY2UxNWY1MmYzNTcyZGI1OWQxNjMyMGQ2Li4zMWJj
NWYxOTMxYmRhZTUwYWFjNjYxMzU5ZmMwYTI2ZjE3ODU4NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CkBAIC0xMTcsNyArMTE3LDcgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIGF1dG8gcGF0dGVybkRh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EYXRhPigpOworICAgIGF1dG8gcGF0dGVybkRh
dGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJu
ID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRy
dWUpOwogCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCAz
NGIwYWU3NWJkYzAwNTY1NzZkNTEzODAxODVlZmU2YmM3MmM3MDZlLi42YTY3MTE4ZmYxYjI1OGIz
MDNjOTU2Mzg1OTNmNDc0ZWU4OWJiZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtNzksNyArNzksNyBAQCBSZW5kZXJTVkdTaGFw
ZTo6flJlbmRlclNWR1NoYXBlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbmRlclNWR1NoYXBlOjp1
cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKIHsKLSAgICBtX3BhdGggPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhdGg+KHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KCZncmFwaGljc0VsZW1lbnQoKSkpOworICAg
IG1fcGF0aCA9IG1ha2VVbmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBo
aWNzRWxlbWVudCgpKSk7CiAgICAgcHJvY2Vzc01hcmtlclBvc2l0aW9ucygpOwogCiAgICAgbV9m
aWxsQm91bmRpbmdCb3ggPSBjYWxjdWxhdGVPYmplY3RCb3VuZGluZ0JveCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4IGJmNzg2NDQzZGRk
NjBkNjIxYmNkNTc5Yjg3NzBlZGNkOTFkMjlmYTkuLjljNzM3Y2FmZjhiOTI3NmNjNDEwNjAyZjU3
OWE5ZjM2NGU1YTA4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlcy5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0Q2xp
cHBlcihSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIpCiAgICAgQVNTRVJUKGNsaXBw
ZXItPnJlc291cmNlVHlwZSgpID09IENsaXBwZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFt
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAg
ICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1h
c2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyID0g
Y2xpcHBlcjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyOSw3ICs1MjksNyBAQCBib29sIFNWR1Jl
c291cmNlczo6c2V0RmlsdGVyKFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCiAgICAg
QVNTRVJUKGZpbHRlci0+cmVzb3VyY2VUeXBlKCkgPT0gRmlsdGVyUmVzb3VyY2VUeXBlKTsKIAog
ICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmls
dGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+
KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+
ZmlsdGVyID0gZmlsdGVyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTUwLDcgKzU1MCw3IEBAIGJv
b2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciog
bWFya2VyU3RhcnQpCiAgICAgQVNTRVJUKG1hcmtlclN0YXJ0LT5yZXNvdXJjZVR5cGUoKSA9PSBN
YXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1f
bWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9t
YXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRh
LT5tYXJrZXJTdGFydCA9IG1hcmtlclN0YXJ0OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTcxLDcg
KzU3MSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJNaWQoUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXJrZXIqIG1hcmtlck1pZCkKICAgICBBU1NFUlQobWFya2VyTWlkLT5yZXNvdXJjZVR5cGUo
KSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAg
ICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAg
ICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJr
ZXJEYXRhLT5tYXJrZXJNaWQgPSBtYXJrZXJNaWQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01OTIs
NyArNTkyLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZChSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlciogbWFya2VyRW5kKQogICAgIEFTU0VSVChtYXJrZXJFbmQtPnJlc291cmNlVHlw
ZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAg
ICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAg
ICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21h
cmtlckRhdGEtPm1hcmtlckVuZCA9IG1hcmtlckVuZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYx
Myw3ICs2MTMsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFza2VyKFJlbmRlclNWR1Jlc291
cmNlTWFza2VyKiBtYXNrZXIpCiAgICAgQVNTRVJUKG1hc2tlci0+cmVzb3VyY2VUeXBlKCkgPT0g
TWFza2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0
YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tl
ckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyID0gbWFza2VyOwogICAgIHJldHVybiB0cnVl
OwpAQCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWxsKFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKQogICAgICAgICAgICB8fCBmaWxsLT5yZXNvdXJjZVR5
cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0
cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxG
aWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPmZpbGwgPSBmaWxsOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtNjU5LDcgKzY1OSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpz
ZXRTdHJva2UoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHN0cm9rZSkKICAgICAgICAgICAg
fHwgc3Ryb2tlLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7
CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJv
a2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9r
ZURhdGEtPnN0cm9rZSA9IHN0cm9rZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXggMTkxOTVh
YTFkYWJjNjZlNGIzNTY1OTcyZWM5MWY4OTQ3N2Y0MDM5Yi4uMWVlYjc4ZjU3YjNlYmIzMWI0Y2Rl
OGU1MzAyZGRlMDllMDQ4YzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBTVkdSZXNv
dXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdAogICAgIEFTU0VSVCghbV9jYWNoZS5jb250YWlucygmcmVuZGVyZXIpKTsKIAog
ICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBhbGwgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUg
cGFzc2VkIFJlbmRlck9iamVjdAotICAgIGF1dG8gbmV3UmVzb3VyY2VzID0gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdSZXNvdXJjZXM+KCk7CisgICAgYXV0byBuZXdSZXNvdXJjZXMgPSBtYWtlVW5pcXVl
PFNWR1Jlc291cmNlcz4oKTsKICAgICBpZiAoIW5ld1Jlc291cmNlcy0+YnVpbGRDYWNoZWRSZXNv
dXJjZXMocmVuZGVyZXIsIHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5k
ZXggMzI0MTAyNTg0YzFmMTEzZDBlZWQzMzIxNGE2N2Y1NTM0YWIwZjU5YS4uODEwYTBiODgwYThh
YTRkYWUwMmZhYjQ0NmE5NDFlZGQ5YzVhNzFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApAQCAtMTAzLDcgKzEw
Myw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRX
aXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAgICAgaWYgKG1faXNDb21wbGV4VGV4dCkK
ICAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbnVsbHB0cjsKICAgICBlbHNlCi0gICAg
ICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2lkdGhJdGVyYXRv
cj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsKKyAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0g
bWFrZVVuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4pOwogfQogCiBzdHJ1
Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGQzN2JlZThjYmNlNTU2MTUx
MWIyNGUzNjRlMWFmNjRhYWQ3YWE3NWQuLmU2YjI3MzIwZDkyZmU4NTZkODM3NDEwOGVkOTU0MmUw
OTFlZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMTIyLDIyICsxMjIsMjIgQEAgc3RhdGljIHZv
aWQgZ2V0SW5saW5lUnVuKFJlbmRlck9iamVjdCogc3RhcnQsIFJlbmRlck9iamVjdCogYm91bmRh
cnksIFJlbmRlck9iamUKIAogUmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKFJl
bmRlclZpZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fZmlyc3RMZXR0ZXJC
dWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKLSAgICAsIG1fbGlz
dEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxMaXN0PigqdGhpcykpCi0gICAgLCBtX211bHRpQ29s
dW1uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ29sdW1uPigqdGhpcykpCi0gICAgLCBt
X3RhYmxlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlPigqdGhpcykpCi0gICAgLCBtX3J1
YnlCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVieT4oKnRoaXMpKQotICAgICwgbV9mb3JtQ29u
dHJvbHNCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhpcykpCi0gICAg
LCBtX2Jsb2NrQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigqdGhpcykpCi0gICAgLCBt
X2Jsb2NrRmxvd0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKLSAg
ICAsIG1faW5saW5lQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPElubGluZT4oKnRoaXMpKQotICAg
ICwgbV9zdmdCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8U1ZHPigqdGhpcykpCisgICAgLCBtX2Zp
cnN0TGV0dGVyQnVpbGRlcihtYWtlVW5pcXVlPEZpcnN0TGV0dGVyPigqdGhpcykpCisgICAgLCBt
X2xpc3RCdWlsZGVyKG1ha2VVbmlxdWU8TGlzdD4oKnRoaXMpKQorICAgICwgbV9tdWx0aUNvbHVt
bkJ1aWxkZXIobWFrZVVuaXF1ZTxNdWx0aUNvbHVtbj4oKnRoaXMpKQorICAgICwgbV90YWJsZUJ1
aWxkZXIobWFrZVVuaXF1ZTxUYWJsZT4oKnRoaXMpKQorICAgICwgbV9ydWJ5QnVpbGRlcihtYWtl
VW5pcXVlPFJ1Ynk+KCp0aGlzKSkKKyAgICAsIG1fZm9ybUNvbnRyb2xzQnVpbGRlcihtYWtlVW5p
cXVlPEZvcm1Db250cm9scz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0J1aWxkZXIobWFrZVVuaXF1
ZTxCbG9jaz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0Zsb3dCdWlsZGVyKG1ha2VVbmlxdWU8Qmxv
Y2tGbG93PigqdGhpcykpCisgICAgLCBtX2lubGluZUJ1aWxkZXIobWFrZVVuaXF1ZTxJbmxpbmU+
KCp0aGlzKSkKKyAgICAsIG1fc3ZnQnVpbGRlcihtYWtlVW5pcXVlPFNWRz4oKnRoaXMpKQogI2lm
IEVOQUJMRShNQVRITUwpCi0gICAgLCBtX21hdGhNTEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxN
YXRoTUw+KCp0aGlzKSkKKyAgICAsIG1fbWF0aE1MQnVpbGRlcihtYWtlVW5pcXVlPE1hdGhNTD4o
KnRoaXMpKQogI2VuZGlmCi0gICAgLCBtX2NvbnRpbnVhdGlvbkJ1aWxkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxDb250aW51YXRpb24+KCp0aGlzKSkKKyAgICAsIG1fY29udGludWF0aW9uQnVpbGRlciht
YWtlVW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKLSAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGdWxsU2NyZWVu
PigqdGhpcykpCisgICAgLCBtX2Z1bGxTY3JlZW5CdWlsZGVyKG1ha2VVbmlxdWU8RnVsbFNjcmVl
bj4oKnRoaXMpKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNfY3VycmVudCB8fCAm
bV92aWV3ICE9ICZzX2N1cnJlbnQtPm1fdmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCBmNDJiY2Ez
YjM0NjllNmQ1NmU2YTRkN2I5NDQ1ZTE2N2IxMTExYjJiLi4yNjg1NDRhMWU2NWJmYTNkMzhmNDNl
YjViYmNlNGVlZWNhYWM0NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUmVu
ZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
eWxlOjpFbGVtZW50VXBkYXRlcyoKIAogUmVuZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRh
dGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAg
LCBtX2dlbmVyYXRlZENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmF0ZWRDb250ZW50Pigq
dGhpcykpCisgICAgLCBtX2dlbmVyYXRlZENvbnRlbnQobWFrZVVuaXF1ZTxHZW5lcmF0ZWRDb250
ZW50PigqdGhpcykpCiAgICAgLCBtX2J1aWxkZXIocmVuZGVyVmlldygpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCmluZGV4IDdmZTdmNjg3MzIwNDEwZWYwNDgz
ODdkNDgxZjkyN2IxMmMyMzgzYWMuLmI5YzcyZWI4ODBlOWJiODc1OThmNDE0NDA3N2QwMjMwMTY2
NjViODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgZW51bSBjbGFzcyBJbnB1dFNvdXJjZSB7CiB9OwogCiBjbGFzcyBVc2VySW5wdXRC
cmlkZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFVzZXJJbnB1dEJyaWRnZSk7CiBwdWJsaWM6CiAgICAgVXNlcklucHV0QnJpZGdlKFBh
Z2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggZGFl
MTFjYjJmNjI4OTkxODQ1M2ExMjgwOWFlNDNiODEyNGI2YjEyYi4uNmQ2OTVhNjYwZDBlNGUwNDVh
MjZkYWJlMzMzMWVjYTI2ZmFkMmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVJbnZhbGlkYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZh
bGlkYXRvci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkRGlydHlBbGxT
dHlsZShjb25zdCBWZWN0b3I8U3R5bGVTaGVldENvbnRlbnRzKj4mIHNoZWV0cykKIH0KIAogSW52
YWxpZGF0b3I6OkludmFsaWRhdG9yKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYg
c2hlZXRzLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKQot
ICAgIDogbV9vd25lZFJ1bGVTZXQoc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpKQorICAgIDog
bV9vd25lZFJ1bGVTZXQobWFrZVVuaXF1ZTxSdWxlU2V0PigpKQogICAgICwgbV9ydWxlU2V0KCpt
X293bmVkUnVsZVNldCkKICAgICAsIG1fZGlydGllc0FsbFN0eWxlKHNob3VsZERpcnR5QWxsU3R5
bGUoc2hlZXRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVs
YXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAppbmRl
eCA0ZDgxNDhiNGUzMWQ3NGQ2YTBhNTE3NTRkZWU1ZWFiODA3NTlhYmFhLi4wNjJkNTk2NGQ3N2Vj
NWRiODNiM2Y0MWFjYmFhODdlZmNlOThkZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZWxhdGlvbnMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZWxhdGlvbnM+
IGNvbW1pdFJlbGF0aW9uc1RvUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zCiAK
ICAgICBhdXRvIGFwcGVuZFN0eWxlUmVsYXRpb24gPSBbJnJlbWFpbmluZ1JlbGF0aW9uc10gKGNv
bnN0IFJlbGF0aW9uJiByZWxhdGlvbikgewogICAgICAgICBpZiAoIXJlbWFpbmluZ1JlbGF0aW9u
cykKLSAgICAgICAgICAgIHJlbWFpbmluZ1JlbGF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVs
YXRpb25zPigpOworICAgICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gbWFrZVVuaXF1ZTxS
ZWxhdGlvbnM+KCk7CiAgICAgICAgIHJlbWFpbmluZ1JlbGF0aW9ucy0+YXBwZW5kKHJlbGF0aW9u
KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCmluZGV4IDlmMGQxYWQ3
NDkwYmZlYWIyNDA3Y2U3YmM4OGIwOTUxMTZkMGIyMjIuLmRjYjY1YmMwOWMzNDc3OWI2M2EyOTMy
NGUyNGQzNzJiZmM2YTIzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC05
Niw3ICs5Niw3IEBAIFN0eWxlUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCiAgICAgaWYgKCFt
X3Jlc29sdmVyKSB7CiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJl
c29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciwgdHJ1ZSB9OwogCi0gICAgICAgIG1f
cmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOwor
ICAgICAgICBtX3Jlc29sdmVyID0gbWFrZVVuaXF1ZTxTdHlsZVJlc29sdmVyPihtX2RvY3VtZW50
KTsKIAogICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkgewogICAgICAgICAgICAgbV9kb2N1bWVu
dC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBjb25z
dCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNG
b3JJbnNwZWN0b3IoKQogYm9vbCBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyhjb25z
dCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgY29uc3QKIHsKICAgICBpZiAoIW1fd2Vha0NvcHlPZkFj
dGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCkgewotICAgICAgICBtX3dlYWtDb3B5T2ZB
Y3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hT
ZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOworICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVT
dHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NT
U3R5bGVTaGVldCo+PigpOwogICAgICAgICBmb3IgKGF1dG8mIGFjdGl2ZVN0eWxlU2hlZXQgOiBt
X2FjdGl2ZVN0eWxlU2hlZXRzKQogICAgICAgICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVT
aGVldExpc3RGb3JGYXN0TG9va3VwLT5hZGQoYWN0aXZlU3R5bGVTaGVldC5nZXQoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDg0NmEy
MzFhZDJiMThiNWQ3ZjI5NDkwMTZkMDlmMjIzZGQ2OWU4OGIuLmEwMGY0ZmUwZjRjY2I1MmRkODMx
YTk0ZTI2YTU4NjRlNWMxYjc5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBU
cmVlUmVzb2x2ZXI6OnJlc29sdmUoKQogCiAgICAgbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9
IG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLmhhc1BlbmRpbmdTaGVldHNCZWZvcmVCb2R5KCk7CiAK
LSAgICBtX3VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlPihtX2RvY3VtZW50KTsKKyAg
ICBtX3VwZGF0ZSA9IG1ha2VVbmlxdWU8VXBkYXRlPihtX2RvY3VtZW50KTsKICAgICBtX3Njb3Bl
U3RhY2suYXBwZW5kKGFkb3B0UmVmKCpuZXcgU2NvcGUobV9kb2N1bWVudCkpKTsKICAgICBtX3Bh
cmVudFN0YWNrLmFwcGVuZChQYXJlbnQobV9kb2N1bWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IGJjNTE0MzRiMGIyYjhlMGJmNzdl
NTdhNGE3NmU0ZDRiY2VlZTk5NjUuLjI1ZjM4NjNkMDc5NTRhYzhkNmE2M2U2ODY0YTFmMDc2YjBk
NTFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDog
bV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcmVzb3VyY2VzQ2FjaGUoc3RkOjptYWtlX3Vu
aXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKKyAgICAsIG1fcmVzb3VyY2VzQ2FjaGUobWFrZVVu
aXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKICAgICAsIG1fYXJlQW5pbWF0aW9uc1BhdXNlZCgh
ZG9jdW1lbnQucGFnZSgpIHx8ICFkb2N1bWVudC5wYWdlKCktPmlzVmlzaWJsZSgpKQogewogfQpA
QCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5n
UmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIEVsZW1lbnQmIGVsCiAKICAgICBhdXRvIHJl
c3VsdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGVuZGluZ0VsZW1lbnRzPigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7CiAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+YWRkKCZlbGVtZW50KTsKIAogICAgIGVsZW1lbnQuc2V0SGFzUGVuZGluZ1Jlc291
cmNlcygpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiBTVkdEb2N1
bWVudEV4dGVuc2lvbnM6OnNldE9mRWxlbWVudHNSZWZlcmVuY2luZ1RhcmdldChTVkdFCiB2b2lk
IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KFNWR0Vs
ZW1lbnQmIHJlZmVyZW5jaW5nRWxlbWVudCwgU1ZHRWxlbWVudCYgcmVmZXJlbmNlZEVsZW1lbnQp
CiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZW5zdXJlKCZyZWZl
cmVuY2VkRWxlbWVudCwgWyZyZWZlcmVuY2luZ0VsZW1lbnRdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTVkdFbGVtZW50Kj4+KHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxTVkdFbGVtZW50Kj4geyAmcmVmZXJlbmNpbmdFbGVtZW50IH0pOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0PFNW
R0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7CiAgICAgfSk7CiAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZy
ZWZlcmVuY2luZ0VsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGE4MDk2
ZGRhZGE4MWVhZDZhN2ExZWEzMjRjZDg1MDY3ZjVjMGIyOGIuLmU0ZGUzYjc0OWYwYTAwMzliYzVj
NGNmY2QwOGUxOTM5NmNkNjU2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTE2
MSw3ICsxNjEsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwq
LCBDU1NQcm9wZXJ0eUlEPiBjcmVhdGVBdHRyaWJ1dGVOYW1lVAogU1ZHRWxlbWVudDo6U1ZHRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVTVkdFbGVtZW50KQog
ICAgICwgU1ZHTGFuZ1NwYWNlKHRoaXMpCi0gICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5
KHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCisgICAgLCBt
X3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KG1ha2VVbmlxdWU8U1ZHUHJvcGVydHlBbmltYXRvckZh
Y3Rvcnk+KCkpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdF
bGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSBjaGFuZ2UpCiBTVkdFbGVtZW50
UmFyZURhdGEmIFNWR0VsZW1lbnQ6OmVuc3VyZVNWR1JhcmVEYXRhKCkKIHsKICAgICBpZiAoIW1f
c3ZnUmFyZURhdGEpCi0gICAgICAgIG1fc3ZnUmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0VsZW1lbnRSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9zdmdSYXJlRGF0YSA9IG1ha2VVbmlxdWU8
U1ZHRWxlbWVudFJhcmVEYXRhPigpOwogICAgIHJldHVybiAqbV9zdmdSYXJlRGF0YTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBhNzU4OTBmMzE4
MDQ2OGQxNTI0YmVlODU0MzU5ZDAzNTZlYjUyMjJkLi44MGVjN2ZjODYyOTJiNjNiYmJhODUxZTEx
ZTEwNmZhMTUyZjkxNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50
LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGljc0VsZW1l
bnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogQWZmaW5lVHJhbnNmb3JtKiBTVkdH
cmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1
cHBsZW1lbnRhbFRyYW5zZm9ybSkKLSAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBz
dGQ6Om1ha2VfdW5pcXVlPEFmZmluZVRyYW5zZm9ybT4oKTsKKyAgICAgICAgbV9zdXBwbGVtZW50
YWxUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPEFmZmluZVRyYW5zZm9ybT4oKTsKICAgICByZXR1cm4g
bV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhCeXRlU3RyZWFtLmgKaW5kZXggNmYwYWNhY2YxOWVlODUwZGI0ZTY5MTBkM2U4M2QyNjQ5NGQ2
N2ViMC4uNDM0ZDkxZWIzZGY4YWQ4NzlmODM5YTQ4OTY2ODY3ODBiNDA5ZjI1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgU1ZH
UGF0aEJ5dGVTdHJlYW0gewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFt
PiBjb3B5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1Bh
dGhCeXRlU3RyZWFtPigqdGhpcyk7CiAgICAgfQogCiAgICAgRGF0YUl0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKaW5kZXggZTA0MjNjZTk4MTVmYTBm
MjU1NjNhM2I1NDMxNDA4NmFjMzU2ZmY0NC4uM2ViNTdhZDJmMjFkZmE2NGI5YjExODAxZjQyNzI4
MzYwMmI3NWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlM
VGltZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlM
VGltZUNvbnRhaW5lci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5l
cjo6c2NoZWR1bGUoU1ZHU01JTEVsZW1lbnQqIGFuaW1hdGlvbiwgU1ZHRWxlbWVudCogdGFyZ2V0
LAogICAgIEVsZW1lbnRBdHRyaWJ1dGVQYWlyIGtleSh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25zVmVjdG9yPiYgc2NoZWR1bGVkID0gbV9zY2hl
ZHVsZWRBbmltYXRpb25zLmFkZChrZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBp
ZiAoIXNjaGVkdWxlZCkKLSAgICAgICAgc2NoZWR1bGVkID0gc3RkOjptYWtlX3VuaXF1ZTxBbmlt
YXRpb25zVmVjdG9yPigpOworICAgICAgICBzY2hlZHVsZWQgPSBtYWtlVW5pcXVlPEFuaW1hdGlv
bnNWZWN0b3I+KCk7CiAgICAgQVNTRVJUKCFzY2hlZHVsZWQtPmNvbnRhaW5zKGFuaW1hdGlvbikp
OwogICAgIHNjaGVkdWxlZC0+YXBwZW5kKGFuaW1hdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDQwZWU5OTE1NTg1ZWNhOWExMDA0NGI5ZTMzMGM4
NzUyODBjMjUxZTcuLjNiMjdkMDYwOGJmOTBmZGFhMGU1YjE1NjAwZWE0YWQ1ZmUxMzRkMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3
IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFS
ZWNlaXZlZCkKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgYXV0byBwYWdl
Q29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwotICAg
ICAgICBtX2Nocm9tZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGll
bnQ+KHRoaXMpOworICAgICAgICBtX2Nocm9tZUNsaWVudCA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VD
aHJvbWVDbGllbnQ+KHRoaXMpOwogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGll
bnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBT
VkcgZW5kcyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UgbWlnaHQgbGVhayB0aGUgd29ybGQuCkBAIC00
NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBUaGlzIHdpbGwgYmVjb21lIGFuIGlzc3Vl
IHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxvYWQgb3RoZXIKICAgICAgICAgLy8gU1ZH
SW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdlIGNhbiBv
bmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRvcC1sZXZlbCBkb2N1bWVudC4KLSAgICAg
ICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uKSk7CisgICAgICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFibGVk
KGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoZmFs
c2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0UGx1Z2luc0VuYWJsZWQoZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oCmluZGV4IGQ5NzAzMDJhZGY4NjU4NTUwOWM2NTA4ZDUwNDk1MmEyNTUzMjM2
MmIuLmM3N2FlMDhiYWM2NWMzYzJjZmM4OTc0ZmEzM2U3NjQ2MGNlOTdmYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU1ZHRmlsdGVy
RWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoU2V0PEZpbHRlckVmZmVjdCo+IEZp
bHRlckVmZmVjdFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IGU1ZWZhYWVhNzEx
MWJjNmM5NTdkOTcyZDc0NTQ4ZGU5MmQ4YTEzM2UuLmNlYmFhMzYzYmY1MjdiYmIzOGU1NjdkM2Uz
ZDQyYmY4NDMxMDJhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKQEAgLTM2LDcgKzM2LDcg
QEAgY2xhc3MgU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eSA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1l
IEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PgogICAgIHN0
YXRpYyBSZWY8QW5pbWF0ZWRQcm9wZXJ0eT4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0
eShjb250ZXh0RWxlbWVudCwgc3RkOjptYWtlX3VuaXF1ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNv
cmF0aW9uVHlwZSwgUHJvcGVydHlUeXBlPj4oKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBtYWtlVW5pcXVlPERlY29yYXRl
ZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFByb3Bl
cnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
ckltcGwuaAppbmRleCAyODg3NDFiMTI5MDVjYjg1MTQzMDU0MDkwYzRlMmM5MTM5YjM1YmYzLi5k
MDczN2FjYmEzMzFmZTEyMzQ3YjgzNGZmN2FhMzAxMDBhZDE1NjE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9ySW1wbC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5p
CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBTVkdBbmlt
YXRlZEJvb2xlYW5BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3I8U1ZHQQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQs
IGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODksNyArODksNyBAQCBjbGFz
cyBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxF
bnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIFNWR0Fu
aW1hdGVkSW50ZWdlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMzIsNyArMTMyLDcgQEAg
Y2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmlt
YXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9v
bCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9k
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVu
Z3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTUzLDcgKzE1Myw3IEBA
IGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0Fu
aW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4m
IGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2Rl
LCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5n
dGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE3
Miw3ICsxNzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogcHVibGljOgogICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
QW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
VkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAog
cHJpdmF0ZToKQEAgLTE4OSw3ICsxODksNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckxpc3RB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogcHVi
bGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yMDYsNyArMjA2LDcg
QEAgY2xhc3MgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjwKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUGF0
aFNlZ0xpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC0yMjQsNyArMjI0LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExp
c3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1YK
IHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUG9pbnRMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlv
bk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRl
ZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQs
IGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjQzLDcgKzI0Myw3
IEBAIGNsYXNzIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE9y
aWVudFR5cGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5cGVBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZH
QW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQog
CiBwcml2YXRlOgpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpb0FuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBCiBw
dWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+JiBhbmltYXRlZCwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtMjgxLDcgKzI4MSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltCiAKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR0FuaW1hdGVkUmVjdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUmVj
dEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC0yOTgsNyArMjk4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRTdHJpbmdBbmlt
YXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1
YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zMzgsNyArMzM4LDcgQEAgY2xhc3MgU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG8KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4mIGFu
aW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaAppbmRleCA0ZWRhMzRjOWIx
ODg4ZmZkNmQzZDY2MzJjZjBjZjZkMzNhNmZhOWUxLi4zOTdmZjA5MTU5NDAwZDMzYzA1MmIxMWQ4
MjhjYjhlMzdiM2M4MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgK
QEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWEKIHB1YmxpYzoKICAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+
JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
MSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNW
R0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFBy
b3BlcnR5UGFpckFuaW1hCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmlt
YXRlZDEsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFu
aW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0CiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVy
PiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTVkdBbmltYXRlZE51bWJlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQx
LCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaAppbmRleCA2NGE2NWIxODYyZmZiOTY5
NjAzYzcxNTYwN2I1NDRmNTU2ZTAwODNhLi4wMjJlZGVkYTgyMWI1MzM1NWIzZmRkMzk1OGYyNDM2
ODAxOWFhZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
dHRyaWJ1dGVBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0F0dHJpYnV0ZUFuaW1hdG9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBDYWxjTW9k
ZSA6IHVpbnQ4X3QgewogfTsKIAogY2xhc3MgU1ZHQXR0cmlidXRlQW5pbWF0b3IgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9y
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgIDogbV9hdHRyaWJ1
dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaAppbmRleCAyNjRjMzZiNjkwNzRjY2Yz
ZTJlMjlkMjY3NzIxY2Y1Mzc0NTcwMzExLi5hMzVlMjUwYTliMTUxZjllODk3Zjg1ZjYzNjdjMzg3
ZGJiM2NhNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdE
ZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHRGVj
b3JhdGVkRW51bWVyYXRpb24gOiBwdWJsaWMgU1ZHRGVjb3JhdGVkUHJpbWl0aXZlPERlY29yYXRp
b25UeXBlLCBFbnUKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRW51bVR5cGUmIHZhbHVl
KQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPERlY29yYXRp
b25UeXBlPjo6dmFsdWUsICJEZWNvcmF0aW9uVHlwZSBmb3JtIGVudW0gc2hvdWxkIGJlIGludGVn
cmFsLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbj4odmFsdWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdEZWNvcmF0ZWRF
bnVtZXJhdGlvbj4odmFsdWUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IGU0YWIw
MzcwYjk0NzllNTU1MGJiYjExMDg3MzQyMzUzMTE2NjUwNzAuLmFiMTRmM2NiZTVhN2ZjMjBlMTMw
ZmRhOWJkNDg3OTdkZGRkM2U4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERlY29yYXRpb25UeXBlPgogY2xhc3Mg
U1ZHRGVjb3JhdGVkUHJvcGVydHkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFNWR0RlY29yYXRlZFByb3BlcnR5KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwg
flNWR0RlY29yYXRlZFByb3BlcnR5KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5o
CmluZGV4IDQxMjE3MjIwYmRmY2ZlZmY2N2MxNjA5MTNhZDE0ZDZiOTliYTE0MmMuLjY4YjJlMGIx
MTM3YWRlOGQzN2Y4MGUwZTI5OGI1ZGUyNGQwMWE4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9y
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvciA6
IHB1YmxpYyBTVkdQcm9wZXJ0eUFuaW1hdG9yPEFuaW1hdGlvbkZ1bmN0aW8KIHB1YmxpYzoKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1ByaW1pdGl2ZVByb3Bl
cnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5QW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCmluZGV4IGFkNTBkNDIzNjI5Njk0MmQxZGM4NzE4
YTJkYThlNmFkZjhkMWJjY2IuLjVlMzAxOGY1YTQwMmE5YzdmMTI5ZDQxZDQxOWFjNWU5NDlmZWUw
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
QW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHlBbmltYXRvckZhY3RvcnkuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rv
cnkoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAxMTg4ODZjNGY4
YmI3MjM2YTQ0NmZmYWQwMzg2OWZmMGIwZGNkZTk1Li5mZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUy
Y2RlMWEyODc5YTdlZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVy
dHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4m
JiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9k
ZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
V1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhN
b2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCmluZGV4IDVlZThh
YzNkMGY0ZTEyYzYyYTVlZmMwMGZmNTNiNTkwZTQwMGYzNjguLmFlOTRlMjllZDRiODYxM2I5OWNk
OTc0ODZlZDBiMDYyODI2YzAyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaApA
QCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJs
aWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcjxTVkdMZW5ndAogcHVibGljOgogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2Fs
Y01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
V1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQo
U1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGMxMTMxZDI1YjM4OGJiYTgzNjY1M2QyOTcw
OGU2YTViYmU0YmRmYzQuLjI0Mzc4OWJiOWQyNzlhNmU4NTNlMDg2NDRiNjRiZWU4NTFlNWVlMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMjMx
LDYgKzIzMSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0
dGluZ3MmIHNldHRpbmdzKQogfQogCiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzV3JhcHBlciA6IHB1
YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzV3JhcHBlcihQYWdlKiBwYWdlKQog
ICAgICAgICA6IG1faW50ZXJuYWxTZXR0aW5ncyhJbnRlcm5hbFNldHRpbmdzOjpjcmVhdGUocGFn
ZSkpIHsgfQpAQCAtMjUyLDcgKzI1Myw3IEBAIGNvbnN0IGNoYXIqIEludGVybmFsU2V0dGluZ3M6
OnN1cHBsZW1lbnROYW1lKCkKIEludGVybmFsU2V0dGluZ3MqIEludGVybmFsU2V0dGluZ3M6OmZy
b20oUGFnZSogcGFnZSkKIHsKICAgICBpZiAoIVN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwg
c3VwcGxlbWVudE5hbWUoKSkpCi0gICAgICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhw
YWdlLCBzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFsU2V0dGluZ3NX
cmFwcGVyPihwYWdlKSk7CisgICAgICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdl
LCBzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihw
YWdlKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludGVybmFsU2V0dGluZ3NXcmFwcGVyKj4o
U3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSktPmludGVybmFs
U2V0dGluZ3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUx
NzhiNDk2ODU4NzU1MWJmMDcwNGQ4MzAyMDU2MmRkMTJkZjRlYmIuLjYyZTczNDlhMWNhMTY2MmQw
NjJjNjA3OTM4OTJmYzcwZmY2MDU4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTM0MSw3ICszNDEsNyBAQCBjbGFzcyBJbnNwZWN0b3JTdHViRnJvbnRlbmQgZmluYWwg
OiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgcHVibGljCiB9OwogCiBJbnNw
ZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZChQYWdlJiBpbnNwZWN0ZWRQ
YWdlLCBSZWZQdHI8RE9NV2luZG93PiYmIGZyb250ZW5kV2luZG93KQotICAgIDogSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCks
IGZyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+KCkpCisgICAgOiBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwg
ZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgbWFrZVVuaXF1ZTxJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKICAgICAsIG1fZnJvbnRlbmRXaW5kb3co
ZnJvbnRlbmRXaW5kb3cuY29weVJlZigpKQogewogICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRXaW5k
b3csIGZyb250ZW5kV2luZG93KTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCBJbnRlcm5hbHM6OkludGVy
bmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFt
ZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5pc01haW5GcmFt
ZSgpKSB7CiAgICAgICAgIGF1dG8gbW9ja1BheW1lbnRDb29yZGluYXRvciA9IG5ldyBNb2NrUGF5
bWVudENvb3JkaW5hdG9yKCpmcmFtZS0+cGFnZSgpKTsKLSAgICAgICAgZnJhbWUtPnBhZ2UoKS0+
c2V0UGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3JkaW5hdG9y
PigqbW9ja1BheW1lbnRDb29yZGluYXRvcikpOworICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQ
YXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5
bWVudENvb3JkaW5hdG9yKSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBA
QCB2b2lkIEludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCkKICAgICBpZiAo
IXN5bnRoZXNpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9y
bVN5bnRoZXNpemVyKHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1v
Y2s+KHN5bnRoZXNpcykpOworICAgIHN5bnRoZXNpcy0+c2V0UGxhdGZvcm1TeW50aGVzaXplciht
YWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPihzeW50aGVzaXMpKTsKIH0K
IAogI2VuZGlmCkBAIC0yNDg5LDcgKzI0ODksNyBAQCBSZWZQdHI8V2luZG93UHJveHk+IEludGVy
bmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAg
YXV0byogaW5zcGVjdGVkUGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7
CiAgICAgYXV0byogd2luZG93ID0gaW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCk7CiAgICAgYXV0byBmcm9udGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5v
cGVuKCp3aW5kb3csICp3aW5kb3csIHVybCwgIiIsICIiKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LSAgICBtX2luc3BlY3RvckZyb250ZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTdHVi
RnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2lu
ZG93UHJveHktPndpbmRvdygpKSk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlx
dWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9NV2lu
ZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3coKSkpOwogICAgIHJldHVybiBmcm9udGVu
ZFdpbmRvd1Byb3h5OwogfQogCkBAIC0zMDA5LDcgKzMwMDksNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBJbnRlcm5hbHM6OnNldFZpZXdFeHBvc2VkUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3
aWR0aCwgZgogCiB2b2lkIEludGVybmFsczo6c2V0UHJpbnRpbmcoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQogewotICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IHN0ZDo6bWFrZV91bmlxdWU8
UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKKyAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkgPSBt
YWtlVW5pcXVlPFByaW50Q29udGV4dD4oZnJhbWUoKSk7CiAgICAgcHJpbnRDb250ZXh0Rm9yVGVz
dGluZygpLT5iZWdpbih3aWR0aCwgaGVpZ2h0KTsKIH0KIApAQCAtMzQ0OCw3ICszNDQ4LDcgQEAg
dm9pZCBJbnRlcm5hbHM6OmVuYWJsZUF1dG9TaXplTW9kZShib29sIGVuYWJsZWQsIGludCB3aWR0
aCwgaW50IGhlaWdodCkKIAogdm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKIHsK
LSAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwKKyAgICBMZWdh
Y3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1h
a2VVbmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwKICAgICAgICAgTGVnYWN5TW9ja0NETTo6
c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWlt
ZVR5cGUpOwogfQogCkBAIC00MjQxLDcgKzQyNDEsNyBAQCB2b2lkIEludGVybmFsczo6cXVldWVN
aWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNh
bGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICpkb2N1
bWVudCwgW2RvY3VtZW50LCB0ZXN0TnVtYmVyXSgpIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1h
a2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgewogICAg
ICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1pY3JvVGFzayAjIiwgdGVzdE51bWJlciwgIiBo
YXMgcnVuLiIpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NE
TS5jcHAKaW5kZXggNjQyODdkMjM5YWY1NzNlOTIwM2QyNTg0MzFiMjczYzdiODc0OTAwNi4uNjAy
NzJkMzQ5N2Y0Yjg2NWNkYjAzNzBmZTQxZDNkNmZiZGU4YjdlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1vY2tDRE1TZXNzaW9uIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1vY2tDRE1TZXNz
aW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lv
bigpID0gZGVmYXVsdDsKQEAgLTczLDcgKzc0LDcgQEAgYm9vbCBMZWdhY3lNb2NrQ0RNOjpzdXBw
b3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxM
ZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNl
c3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2Nr
Q0RNU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNU2Vzc2lv
bj4oY2xpZW50KTsKIH0KIAogc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKaW5kZXggMjRiOWI4MDA4YzRmNTE5YjRh
NjY2ZWM2ZDE1MjVhYzYyZWMxYzMwYS4uYjkzYWViOTNmZjYzMjllNTE1NDdjMTNmZjc2YTY5MmVl
NmE3MTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RN
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKQEAgLTM0LDYg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogCiBjbGFzcyBM
ZWdhY3lNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2FjeU1vY2tDRE0oTGVn
YWN5Q0RNKiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA1Njc5NmVlOTAwYmJmM2I2Y2MwNWNmNmEyMjk2ZWZk
NDNiOWVmN2I2Li5jZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2ZDcxYjM2OTY2MzJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMTAwLDcgKzEwMCw3
IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZERhdGFUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYmIHR5cGVzKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rv
cnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKIH0KIAogTW9ja0NETTo6TW9ja0NETShXZWFr
UHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5oCmluZGV4IDMzOTZjZDAyYWQwMmRkMTRlOTJmMTU3OWUyNzUxNmU2YmMzZjQyOTgu
LjM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBNb2Nr
Q0RNRmFjdG9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDRE1GYWN0b3J5PiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPAogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9ja0NETT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIE1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxMTgx
ZGFlNzJlMTNlMmJiZDE1M2U4MTFjMTQzNjRkMWNkOGExODcuLjc3OGE5MThhNmI5MDc1NWNiODZk
M2FhYTc0Zjc5YjNlNjE4ZDRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6
OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0NvbnRlbnRGaWx0ZXI+IE1vY2tDb250
ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tD
b250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDb250ZW50RmlsdGVy
PigpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAK
aW5kZXggZDNhYzVkODdkMTllMmE4NTM2MWMxMTU3MmNmMzExZjBjODNiMjQ1Yi4uZDQwZGVkMWRh
MTE5OGNhYTM0NTlkNjc3ZTFmZTg0ZjViZmI5NDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgTW9j
a0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBj
b25zdCBTdHJpbmcmIGdhCiAgICAgaWYgKG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdKQogICAg
ICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XS0+dXBkYXRlRGV0YWlscyhnYW1lcGFkSUQs
IGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwogICAgIGVsc2UKLSAgICAgICAgbV9tb2NrR2FtZXBh
ZFZlY3RvcltpbmRleF0gPSBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2Ft
ZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKKyAgICAgICAgbV9tb2NrR2FtZXBhZFZl
Y3RvcltpbmRleF0gPSBtYWtlVW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBh
eGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKIH0KIAogYm9vbCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpj
b25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAppbmRleCBkYmU5MDczZDZhZGViZmM1MDE1OWNj
MmVkYmIyMjgzY2NkMTdiYTg1Li44ZjE2NDdjMWYzMjI1MTgxNmM3Y2YwODk2MTgyYWUzNDIzNWM1
MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0
aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwKIHsKICAgICBTdHJp
bmcgbWVzc2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmco
bWVzc2FnZVRleHQpOwotICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOworICAgIGF1dG8gbWVz
c2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50
cyksIGV4ZWMpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RG
TW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50
UXVldWUuY3BwCmluZGV4IGY0M2JkMmE3YTYwNTkzNzI3YWQwYTZhOTFkZWNkNmViZWM3MjI2ODgu
LjY5MDNiZTVlYzI1ZmI5MWVmZjc3NzZlNDQ3NmFkNGVhMmJjZTczMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtNDQsNiArNDQsNyBAQCBXb3Jr
ZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgpCiAKIGNsYXNzIFdvcmtlckV2ZW50UXVl
dWU6OkV2ZW50RGlzcGF0Y2hlcgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEV2ZW50RGlzcGF0Y2hlcihSZWZQdHI8RXZlbnQ+JiYgZXZlbnQsIFdvcmtlckV2
ZW50UXVldWUmIGV2ZW50UXVldWUpCiAgICAgICAgIDogbV9ldmVudChXVEZNb3ZlKGV2ZW50KSkK
QEAgLTg0LDcgKzg1LDcgQEAgYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVm
PEV2ZW50PiYmIGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvKiBldmVu
dFB0ciA9IGV2ZW50LnB0cigpOwotICAgIGF1dG8gZXZlbnREaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUoZXZlbnQpLCAqdGhpcyk7CisgICAgYXV0
byBldmVudERpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShl
dmVudCksICp0aGlzKTsKICAgICBtX2V2ZW50RGlzcGF0Y2hlck1hcC5hZGQoZXZlbnRQdHIsIGV2
ZW50RGlzcGF0Y2hlci5nZXQoKSk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnBvc3RU
YXNrKFtldmVudERpc3BhdGNoZXIgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hlcildIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBldmVudERpc3BhdGNoZXItPmRpc3BhdGNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCmluZGV4IDYxMTVlZjRh
MTM2NTJhNmVhZDEwYWYzN2NmYjQ5NDI4MjBjM2NiMmIuLmQ4OTczZDViY2FlMTdiOTU1MDA0NGM3
ZTgwMTYwNWI5OWQ1NDlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRR
dWV1ZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWUgZmluYWwgOiBwdWJs
aWMgRXZlbnRRdWV1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAg
ICAgdmlydHVhbCB+V29ya2VyRXZlbnRRdWV1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3YmE2ZWRiNTIwOGYyMmMzZjhmMTZkZTI5ZDgy
NWI3NzFmNmMzZTllLi5iMTdkNjYzNjNhYzM1ODBlN2EzNDQwMDgxYTJmN2M2M2EwNzM4NzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjIs
OSArNjIsOSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJM
JiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQpCiAgICAgLCBtX3RocmVhZCh0
aHJlYWQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclNjcmlwdENvbnRy
b2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQotICAgICwgbV9taWNyb3Rhc2tR
dWV1ZShzdGQ6Om1ha2VfdW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCisg
ICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQor
ICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9taWNyb3Rhc2tRdWV1ZShtYWtlVW5pcXVlPE1pY3Jv
dGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCiAgICAgLCBtX2lzT25saW5lKGlzT25saW5lKQog
ICAgICwgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICwgbV9ldmVudFF1ZXVl
KCp0aGlzKQpAQCAtODYsNyArODYsNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICAg
ICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCk7CiAKICAgICBz
ZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1v
dmUob3JpZ2luKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBz
ZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2Vy
R2xvYmFsU2NvcGUoKQpAQCAtMzYyLDkgKzM2Miw5IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6
OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2Fn
ZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVu
dGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNh
bGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxzZQot
ICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNl
VVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7
CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkws
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdU
Rk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGE3NWMwMTU2YzU5ZTM4ZGQ5OTlkNmNlYzFkZGVlZGUy
M2JlMTg3YjMuLjRlOWY1MTlhZWZlZGQyNWY4ODNmNjNhY2EwYTQ3ODlmZjAyN2U0YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlUHJveHkmIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHk6OmNyZWF0ZShXb3JrZXImIHdvcmtlcikKIAogV29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtl
ck1lc3NhZ2luZ1Byb3h5KFdvcmtlciYgd29ya2VyT2JqZWN0KQogICAgIDogbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAg
LCBtX2luc3BlY3RvclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+
KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQorICAgICwgbV9pbnNwZWN0b3JQcm94eShtYWtl
VW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmplY3QuaWRlbnRpZmllcigpKSkK
ICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAgICAgQVNTRVJUKChpczxE
b2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCkBA
IC0xMjUsNyArMTI1LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VU
b1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnQKICAgICAgICAgKyttX3Vu
Y29uZmlybWVkTWVzc2FnZUNvdW50OwogICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVlZEVh
cmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5k
KG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkp
OwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHAKaW5kZXggYmNkOTRlNmFjMDQwM2FjZDZhNTRiYWM0MWZhYjQxZTViZjU1
MjdkYS4uYmZhYzk1OTJkZmFhNzkyMTAwNjViMzQ1OWJkMjIxNjE5NTc4NDg3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNz
IE1vZGVQcmVkaWNhdGUgewogfTsKIAogV29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCgpCi0g
ICAgOiBtX3NoYXJlZFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkp
CisgICAgOiBtX3NoYXJlZFRpbWVyKG1ha2VVbmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCiB7
CiB9CiAKQEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAKIHZvaWQgV29ya2VyUnVuTG9v
cDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRh
c2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChzdGQ6Om1ha2VfdW5pcXVl
PFRhc2s+KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1
ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1v
ZGUoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAg
IG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFz
ayksIG1vZGUpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxUYXNrPihX
VEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdERlYnVn
Z2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAxOTkxMmYwMjc1ZmVh
MTk0ODA1NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1Li4yMjhmM2QxN2ZmMDAyMmU2MmU2MzY0NTMyZDU1
NmI5NTA3YTAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6Omxv
YWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXQKIAog
ICAgIEFTU0VSVChzY3JpcHRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiR0VUIik7CiAKLSAgICBh
dXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92ZShz
Y3JpcHRSZXF1ZXN0KSk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJl
cXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRM
b2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVx
dWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFr
ZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKICAgICByZXF1ZXN0LT5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgIHJlcXVlc3QtPnNldEluaXRpYXRvcklkZW50aWZpZXIoaW5pdGlh
dG9ySWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAKaW5kZXggMWY3NTYxODZhMjBmMDE2OWU0Nzg0Mzk1MWJlZTM2ODdl
MDAyNGZiYS4uM2MzODU4YmRhOWI0NGI1N2ZhZGIzOWVmYTJlMGEwZjNhMzA0MTE4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFdv
cmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAgLCBtX3dvcmtlckRlYnVnZ2VyUHJveHkod29ya2Vy
RGVidWdnZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29ya2VyUmVwb3J0
aW5nUHJveHkpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX3N0
YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNjcmlw
dFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgc291cmNlQ29kZSwg
c3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2lu
LCBzZXNzaW9uSUQpKQorICAgICwgbV9zdGFydHVwRGF0YShtYWtlVW5pcXVlPFdvcmtlclRocmVh
ZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNP
bmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIHRv
cE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKICAgICAsIG1faWRiQ29ubmVjdGlvblByb3h5KGNvbm5lY3Rpb25Qcm94eSkKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwCmluZGV4IGIyZDI2MTVhMTI2M2QxNjI2NjE4MjAwNDY0OGY5MGVk
YTY5MjA2YjUuLjU5YzcxYzRkMTQ3NjI3Y2ZkOWQzMWE0NWVhYmNjY2RhZTEwM2U3OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpkZXJlZkV2ZW50VGFyZ2V0KCkKIGF1dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVh
ZHkoKSAtPiBSZWFkeVByb21pc2UmCiB7CiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZSkgewotICAg
ICAgICBtX3JlYWR5UHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZHlQcm9taXNlPigpOwor
ICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWU8UmVhZHlQcm9taXNlPigpOwogCiAg
ICAgICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNz
aW9uSUQoKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gKm1fcmVhZHlQcm9taXNlOwpA
QCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0
cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0YS50
eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOwogICAgIGpvYkRhdGEucmVnaXN0
cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5p
cXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpv
YkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigq
dGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3Bl
VVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJM
JiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIu
IEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRv
VUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29y
a2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAg
IHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJM
JiBzY3JpcHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0
ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBDT05U
QUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBVcGRhdGlu
ZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigp
LmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2Vf
dW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9i
PigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2
aWNlV29ya2VySm9iPiYmIGpvYikKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVm
PERlZmVycgogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9
ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21p
c2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBt
YWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1h
a2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJ
ZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKQEAgLTMzNCw3ICszMzQsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9t
aXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1
dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZN
b3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5k
aW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSks
IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQo
cGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAg
ICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5oCmluZGV4IDdhYzljOTgzODNiMDRiNmViODljOTlmMjIwODg1ZTc2NzM5NzZjM2Yu
LjNiZDZiOWIwNmU1NzM3NjY1YjU4Zjk2OWUyOTNkMGZlZDYyYzNjY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aApAQCAtMTM5LDYgKzEzOSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXIgZmluYWwg
OiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjCiAjZW5kaWYKIAog
ICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1Byb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBSZWY8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiYm
IHBlbmRpbmdBY3Rpdml0eSkKICAgICAgICAgICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2Up
KQogICAgICAgICAgICAgLCBwZW5kaW5nQWN0aXZpdHkoV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGJjOGY5MWVlNDM0NjJhNTA0OWU4OGMxY2Vm
NWVmYTc2MmM5OGZmLi5jYjVjMjIxZmM5NDg4ZDdjMDA3Mjk4M2ExNTc4OTVkY2E4YzZjZWM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU1dDb250ZXh0
TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFNlY29uCiAKICAgICBzZXJ2aWNlV29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5h
dGVkKCk7CiAKLSAgICBtX3BlbmRpbmdTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5h
ZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25S
ZXF1ZXN0PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91dCkpOworICAgIG1fcGVuZGluZ1NlcnZp
Y2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNl
cnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0
KSk7CiAKICAgICBhdXRvJiB0aHJlYWQgPSBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKTsKICAgICB0
aHJlYWQuc3RvcChbdGhpcywgaWRlbnRpZmllciwgc2VydmljZVdvcmtlciA9IFdURk1vdmUoc2Vy
dmljZVdvcmtlciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRl
eCBjNjE3MzYxM2NhY2I1NWQ2OTA1OGJlMmM3ZTJhNWZiZDg1MjljNzc2Li45ZTcyOGMzYTdhZmE0
NmM5NDljZGNiZTBkNmZlYjA0YTk1MzFjY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQog
ICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkuYWRkKHRoaXMpOwogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9yZW1vdGVEZWJ1Z2dhYmxlID0gc3RkOjptYWtl
X3VuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEpOworICAgIG1fcmVt
b3RlRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlz
LCBkYXRhKTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93
ZWQodHJ1ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5pbml0KCk7CiAjZW5kaWYKQEAgLTE2
OCw3ICsxNjgsNyBAQCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8
RmV0Y2hMb2FkZXI+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQmxvYkxvYWRlcihG
ZXRjaExvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBVUkwmIGJsb2JVUkwpCiB7Ci0gICAgYXV0
byBsb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIp
OworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oY2xpZW50LCBudWxs
cHRyKTsKICAgICBsb2FkZXItPnN0YXJ0TG9hZGluZ0Jsb2JVUkwobV9kb2N1bWVudCwgYmxvYlVS
TCk7CiAgICAgaWYgKCFsb2FkZXItPmlzU3RhcnRlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggMWM3ODMxMmM4NTQ4MmY5ODY5YTVm
YzBjNmQyY2M2YzZmZGZjMTBhMC4uZTRiODQzMTY4NGY3ZDg3ZDJiZmRlNmRkNDI3ZjMzOTAzMDM0
YmFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2
b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBmdWxsRmlsZW5hbWUpCiAKICAgICBTUUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURp
cmVjdG9yeUV4aXN0cyhtX2RhdGFiYXNlRGlyZWN0b3J5KTsKIAotICAgIG1fZGF0YWJhc2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAgIG1fZGF0YWJhc2UgPSBtYWtl
VW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9kYXRhYmFzZS0+b3BlbihmdWxs
RmlsZW5hbWUpKSB7CiAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJGYWlsZWQgdG8gb3BlbiByZWdp
c3RyYXRpb24gZGF0YWJhc2UiOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGZlNWNjODU5ZTY1
YTZlMzJhNzhiNTI4OTc1YTEzMmU3NGJmMTc4N2UuLjkzMjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4
ODQ2ZGY0ZDBlOTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBTV1NlcnZlcjo6
YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEp
CiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJl
Z2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGlsZSB0aGUgaW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcg
cGxhY2UuCiAgICAgQVNTRVJUKCFtX3JlZ2lzdHJhdGlvbnMuY29udGFpbnMoZGF0YS5yZWdpc3Ry
YXRpb24ua2V5KSk7CiAKLSAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEu
cmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwg
ZGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1Nl
cnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdp
c3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRh
LnNjcmlwdFVSTCk7CiAgICAgcmVnaXN0cmF0aW9uLT5zZXRMYXN0VXBkYXRlVGltZShkYXRhLnJl
Z2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZSk7CiAgICAgYXV0byByZWdpc3RyYXRpb25QdHIgPSBy
ZWdpc3RyYXRpb24uZ2V0KCk7CiAgICAgYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0
aW9uKSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxT
V09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBTdHJpbmcmJiByZWdpc3RyYXRpb24KIHsKICAg
ICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpCi0gICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lz
dHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9y
eSkpOworICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlID0gbWFrZVVuaXF1ZTxSZWdpc3RyYXRp
b25TdG9yZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsK
ICAgICBlbHNlCiAgICAgICAgIHJlZ2lzdHJhdGlvblN0b3JlSW1wb3J0Q29tcGxldGUoKTsKIApA
QCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiYgam9iRGF0YSkKICAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0
aCB0aGF0IGpvYi4KIAogICAgIGF1dG8mIGpvYlF1ZXVlID0gKm1fam9iUXVldWVzLmVuc3VyZShq
b2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBbdGhpcywgJmpvYkRhdGFdIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVn
aXN0cmF0aW9uS2V5KCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1
ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CiAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwogCiAgICAgam9iUXVldWUuZW5xdWV1ZUpvYihqb2JEYXRhKTsKQEAgLTgyMCw3ICs4
MjAsNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogCiAgICAgaWYgKGNsaWVudElkZW50aWZp
ZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5h
dGVTZXJ2aWNlV29ya2Vyc1RpbWVyKTsKLSAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihbY2xpZW50T3Jp
Z2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhpc10geworICAgICAgICBpdGVyYXRvci0+
dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KFtj
bGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlzXSB7CiAgICAgICAgICAg
ICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJzVG9UZXJtaW5hdGU7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZhbHVl
cygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2Vy
LT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA4YjY4
YjcwZjAxZDI1Mjc4YWY1MzhhYmNlOTE0YjhjN2M2OGFiODM3Li5kY2FmNWE4YTcxMGY3OTQ0NjQ3
ZGUzY2Q1ZTk4MDYzOTlhOGZkNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTI4Niw3ICsy
ODYsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNldFVwZGF0
ZVZpYUNhY2hlKGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlKTsKICAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
UmVnaXN0ZXJKb2I6IEZvdW5kIHJlZ2lzdHJhdGlvbiAlbGx1IGZvciBqb2IgJXMgYnV0IGl0IG5l
ZWRzIHVwZGF0aW5nIiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5y
ZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3Jp
cHRVUkwpOworICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJh
dGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7
CiAgICAgICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlv
bikpOwogCiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVy
Sm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iOiBObyBleGlzdGluZyByZWdpc3RyYXRpb24gZm9yIGpv
YiAlcywgY29uc3RydWN0aW5nIGEgbmV3IG9uZS4iLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAyYjdhMmZlM2ZiYjU4ZDRj
NGVlMzhmYzA0YjUzNmEzZTRlMGM3N2U3Li4zYmU3NTdlMDJhZTE5ZDc1OTBlYzA3YjNmYTRjYmU3
ZDYzY2U4MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLAogICAgICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1
ZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgICAgICBhdXRvIHBhaW50
RGVmaW5pdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWlu
dENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0
UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKKyAgICAgICAgYXV0byBwYWlu
dERlZmluaXRpb24gPSBtYWtlVW5pcXVlPFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25z
dHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3Bl
cnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CiAgICAgICAgIHBhaW50RGVmaW5pdGlv
bk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKaW5k
ZXggOTZjZjE4NTBiMGNhZTNhYWU5NjA3ZGIxMzQxNjczNThiNjcxYzFkOS4uNjRmYzc4ZWVlNzg4
MGVkOWJlZGNmYzJhNzAxMmNhNmVjM2NlMWMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNz
IFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CiAK
ICAgICAvLyBBbGwgcGFpbnQgZGVmaW5pdGlvbnMgbXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRo
ZSB2bSBpcyBkZXN0cm95ZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZXkgd2lsbCBwb2ludCB0byBm
cmVlZCBtZW1vcnkuCiAgICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxQYWludERlZmluaXRpb24+IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBQYWludERlZmluaXRpb24oY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+
JiYsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRQcm9wZXJ0aWVzLCBWZWN0b3I8U3RyaW5nPiYmIGlu
cHV0QXJndW1lbnRzKTsKIAogICAgICAgICBjb25zdCBBdG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKaW5kZXggOGU4
YTJhNGNhMjNlMmI5M2RhMTM0YWZiNTJkMGU5NTc2YzQwMjE1OS4uM2YwOTI1NjNiZDUyYWM0YTRi
YmVkYTQxNWMyMzdhMmQxZGZkYWRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFdvcmtsZXRD
b25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZQogewogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdl
dEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRz
KSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2Nv
cGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDRiYjc4OGVhNjNj
ZDZiYmRjNTMyNTg3ZTA1MTBkNTMyNTI2MDZmZmEuLmNlZjgyZjdiNDExZDIxOGM3MzNkNjZmYTlk
YmEyZDkzMTI1YWU4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmNwcApAQCAtNDksNyArNDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoV29ya2xldEdsb2JhbFNjb3BlKTsKIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2Jh
bFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAg
OiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1f
ZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVl
PFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICAg
ICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQpAQCAtNjIsNyArNjIsNyBAQCBXb3JrbGV0R2xvYmFs
U2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJj
ZUNvZGUmJiBjbwogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCiAgICAgc2V0U2VjdXJp
dHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5j
b3B5UmVmKCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fY29kZS51cmwoKSB9LCAqdGhpcykpOwor
ICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBv
bGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtsZXRHbG9iYWxT
Y29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBXb3Jr
bGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
b3I6OkNvbnNvbGVNZXMKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZv
cmJpZGRlbigpIHx8ICFtZXNzYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgp
LCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJj
ZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2Uo
KSwgMCkpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDFjZWU5
ZWIzNDIxY2Q5OWE1NmM4ODYwYjhlY2RkNDU5NmY4MGQyZGUuLjcxMzM5MDBmMTcxZWVmNDE1Njcz
ZDRlOTBkNWNmNzdjZmViYzJiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKICAgICBBU1NF
UlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmts
ZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3Qo
KSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2Jh
bFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtsZXRDb25zb2xl
Q2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYjAyMWNjZTE1M2MzMTkyOTUwYTJiZjc3ZDgwOWEyODQ3
YWIwZjBjMS4uYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYwMzgxNTI0MjhjNzFhYTgyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxFcnJvcnMuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBEb2N1bWVudDsKIAogY2xhc3MgWE1MRXJyb3JzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBYTUxFcnJvcnMoRG9jdW1lbnQmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZjAxOTNkOGM5NmUzNWM5ZmY3
NWU2YTYzYTM1MGM2NTVkY2E4NjBlZi4uZjg2NjMzYThkNmRiNzA1NDMwMTg4Mjg1NzViNTlmMjY2
N2M2NmVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNzMsNyAr
MjczLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVVSTCgpIGNvbnN0CiBYTUxI
dHRwUmVxdWVzdFVwbG9hZCYgWE1MSHR0cFJlcXVlc3Q6OnVwbG9hZCgpCiB7CiAgICAgaWYgKCFt
X3VwbG9hZCkKLSAgICAgICAgbV91cGxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFhNTEh0dHBSZXF1
ZXN0VXBsb2FkPigqdGhpcyk7CisgICAgICAgIG1fdXBsb2FkID0gbWFrZVVuaXF1ZTxYTUxIdHRw
UmVxdWVzdFVwbG9hZD4oKnRoaXMpOwogICAgIHJldHVybiAqbV91cGxvYWQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IGFkN2UxM2M4YTE5NGFkNTZkNjIzNDIw
MDAxN2NiYTc3ZmU4MGI3NDIuLmE5MjQ0MDllZTQ2YzUzZTczYjI3YTQ5YTE5ZWZlOTY5NzIxNjcz
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtNDUsNyArNDUsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGMpCiAgICAgcmV0dXJuIGMg
PT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicgfHwgYyA9PSAnXHQnOwogfQogCi0jZGVm
aW5lIERFRklORV9GVU5DVElPTl9DUkVBVE9SKFN1ZmZpeCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rpb24jI1N1ZmZpeCgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RnVuIyNTdWZmaXg+KCk7IH0KKyNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFUT1Io
U3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMj
U3VmZml4KCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQogCiBjbGFzcyBJ
bnRlcnZhbCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQ
cmVkaWNhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAppbmRl
eCAwNDYxNWMzZDVmMDMxMzEwNjkzOGZhYTA1ZmIzOWM5OWNlMTIzYjVjLi5jMWJiYzU0ZWI4MzAx
NjkxMTljODY4MzFhNGYyYTZlN2MwMDQ1NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhQcmVkaWNhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRp
Y2F0ZS5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIGV2YWx1YXRlUHJlZGljYXRlKGNvbnN0
IEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCiAKICAgICAvLyBmb29bM10gbWVhbnMgZm9vW3Bvc2l0
aW9uKCk9M10KICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBFcVRl
c3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1bmN0aW9uOjpjcmVhdGUoInBvc2l0aW9uIl9zKSwgc3Rk
OjptYWtlX3VuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jv
b2xlYW4oKTsKKyAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rp
b246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBtYWtlVW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVt
YmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOwogCiAgICAgcmV0dXJuIHJlc3VsdC50b0Jv
b2xlYW4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0
TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3Bw
CmluZGV4IGVjMmM2YWUwNDU5YTA2OTI1NmE2NjJmNzJjODcyNjdmZWExYTQ1YmQuLjYzMDRlOTI4
MTFhOTM0ZjdkZTc0YzhjOTRiMmI2OWMwMDRlYTQ5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgWFNMU3R5
bGVTaGVldDo6bG9hZENoaWxkU2hlZXRzKCkKIAogdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hp
bGRTaGVldChjb25zdCBTdHJpbmcmIGhyZWYpCiB7Ci0gICAgYXV0byBjaGlsZFJ1bGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYpOworICAgIGF1dG8gY2hpbGRS
dWxlID0gbWFrZVVuaXF1ZTxYU0xJbXBvcnRSdWxlPih0aGlzLCBocmVmKTsKICAgICBtX2NoaWxk
cmVuLmFwcGVuZChjaGlsZFJ1bGUucmVsZWFzZSgpKTsKICAgICBtX2NoaWxkcmVuLmxhc3QoKS0+
bG9hZFNoZWV0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCmluZGV4IGUwMjRlZmI1NmJmNjUyYjkwYTlhMWQ0ZjgxMzA2NDkxODMwZDhl
MGYuLjcwNDg4OTJhNWFhMGVmOWE1NWZiZDI0MDhjZDE3OTE0ZDAyYTljODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMjgsNyAr
MTI4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBs
PiYmIGlucHV0U291cmNlKQogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1M
RXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwgVGV4dFBvc2l0aW9uIHBvc2l0
aW9uKQogewogICAgIGlmICghbV94bWxFcnJvcnMpCi0gICAgICAgIG1feG1sRXJyb3JzID0gc3Rk
OjptYWtlX3VuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVudCgpKTsKKyAgICAgICAgbV94bWxFcnJv
cnMgPSBtYWtlVW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkpOwogICAgIG1feG1sRXJyb3Jz
LT5oYW5kbGVFcnJvcih0eXBlLCBtLCBwb3NpdGlvbik7CiAgICAgaWYgKHR5cGUgIT0gWE1MRXJy
b3JzOjp3YXJuaW5nKQogICAgICAgICBtX3Nhd0Vycm9yID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRl
eCBiOTMxMDFiOGFhYzQ4MzlhMzliYjU0YjJiODlkZTg5OGM3OWI3NWFiLi5iOTliMzA4OTczODU1
MDllYmFiMDQ1MjEzOTc1MzliMDcwY2VlNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC05Miw3ICs5Miw3
IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogcHVibGljOgogICAgIHZvaWQgYXBwZW5kU3Rh
cnRFbGVtZW50TlNDYWxsYmFjayhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHht
bENoYXIqIHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciogeG1sVVJJLCBpbnQgbnVtTmFtZXNwYWNl
cywgY29uc3QgeG1sQ2hhcioqIG5hbWVzcGFjZXMsIGludCBudW1BdHRyaWJ1dGVzLCBpbnQgbnVt
RGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyKiogYXR0cmlidXRlcykKICAgICB7Ci0gICAgICAgIGF1
dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxi
YWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU3RhcnRF
bGVtZW50TlNDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+eG1sTG9jYWxOYW1lID0g
eG1sU3RyZHVwKHhtbExvY2FsTmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT54bWxQcmVmaXggPSB4
bWxTdHJkdXAoeG1sUHJlZml4KTsKQEAgLTEyMiwxMiArMTIyLDEyIEBAIGNsYXNzIFBlbmRpbmdD
YWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFbmRFbGVtZW50TlNDYWxsYmFjaygpCiAgICAg
ewotICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRW5k
RWxlbWVudE5TQ2FsbGJhY2s+KCkpOworICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOwogICAgIH0KIAogICAgIHZvaWQg
YXBwZW5kQ2hhcmFjdGVyc0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiAgICAg
ewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2hhcmFj
dGVyc0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5k
aW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3Ry
bmR1cChzLCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+bGVuID0gbGVuOwpAQCAtMTM3LDcgKzEz
Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb25DYWxsYmFjayhjb25zdCB4bWxDaGFyKiB0YXJnZXQsIGNvbnN0IHhtbENo
YXIqIGRhdGEpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFj
az4oKTsKIAogICAgICAgICBjYWxsYmFjay0+dGFyZ2V0ID0geG1sU3RyZHVwKHRhcmdldCk7CiAg
ICAgICAgIGNhbGxiYWNrLT5kYXRhID0geG1sU3RyZHVwKGRhdGEpOwpAQCAtMTQ3LDcgKzE0Nyw3
IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRDREFUQUJsb2Nr
Q2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7
CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDREFUQUJsb2NrQ2Fs
bGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAg
ICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgUGVu
ZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZENvbW1lbnRDYWxsYmFjayhjb25zdCB4
bWxDaGFyKiBzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1h
a2VVbmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+
cyA9IHhtbFN0cmR1cChzKTsKIApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNzIFBlbmRpbmdDYWxs
YmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKGNvbnN0IHht
bENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIqIHN5
c3RlbUlEKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8
UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sg
PSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrPigpOwogCiAgICAgICAg
IGNhbGxiYWNrLT5uYW1lID0geG1sU3RyZHVwKG5hbWUpOwogICAgICAgICBjYWxsYmFjay0+ZXh0
ZXJuYWxJRCA9IHhtbFN0cmR1cChleHRlcm5hbElEKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFz
cyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kRXJyb3JDYWxsYmFjayhYTUxF
cnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCB4bWxDaGFyKiBtZXNzYWdlLCBPcmRpbmFsTnVt
YmVyIGxpbmVOdW1iZXIsIE9yZGluYWxOdW1iZXIgY29sdW1uTnVtYmVyKQogICAgIHsKLSAgICAg
ICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+
KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdFcnJvckNhbGxi
YWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5tZXNzYWdlID0geG1sU3RyZHVwKG1lc3NhZ2Up
OwogICAgICAgICBjYWxsYmFjay0+dHlwZSA9IHR5cGU7CkBAIC0xOTcsNiArMTk3LDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBlbmRpbmdDYWxs
YmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAg
dmlydHVhbCB+UGVuZGluZ0NhbGxiYWNrKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIHZv
aWQgY2FsbChYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyKSA9IDA7CiAgICAgfTsKQEAgLTU2NCw3
ICs1NjUsNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpzdXBwb3J0c1hNTFZlcnNpb24oY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKQogWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2Vy
KERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgOiBTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX3ZpZXcoZnJhbWVWaWV3KQotICAg
ICwgbV9wZW5kaW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4o
KSkKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtlVW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+
KCkpCiAgICAgLCBtX2N1cnJlbnROb2RlKCZkb2N1bWVudCkKICAgICAsIG1fc2NyaXB0U3RhcnRQ
b3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogewpAQCAtNTcyLDcg
KzU3Myw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCYg
ZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQogCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1M
RG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVu
dEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKICAgICA6
IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1bWVudCgpLCBwYXJzZXJDb250
ZW50UG9saWN5KQotICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ0NhbGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtlVW5pcXVlPFBl
bmRpbmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJlbnROb2RlKCZmcmFnbWVudCkKICAgICAs
IG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigp
KQogICAgICwgbV9wYXJzaW5nRnJhZ21lbnQodHJ1ZSkKQEAgLTEzMjgsNyArMTMyOSw3IEBAIHZv
aWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAgICAgICAgeG1sVHJlZVZpZXdlci50cmFu
c2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKTsKICAgICB9IGVsc2UgaWYgKG1fc2F3WFNMVHJhbnNm
b3JtKSB7CiAgICAgICAgIHhtbERvY1B0ciBkb2MgPSB4bWxEb2NQdHJGb3JTdHJpbmcoZG9jdW1l
bnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9y
bS50b1N0cmluZygpLCBkb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIGRvY3Vt
ZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybVNvdXJj
ZT4oZG9jKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShtYWtlVW5p
cXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CiAKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0UGFy
c2luZyhmYWxzZSk7IC8vIE1ha2UgdGhlIGRvY3VtZW50IHRoaW5rIGl0J3MgZG9uZSwgc28gaXQg
d2lsbCBhcHBseSBYU0wgc3R5bGVzaGVldHMuCiAgICAgICAgIGRvY3VtZW50KCktPmFwcGx5UGVu
ZGluZ1hTTFRyYW5zZm9ybXNOb3dJZlNjaGVkdWxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVy
U2VydmljZS5jcHAKaW5kZXggMDViYzk1M2Y3ZjBkZGM3ODdiMWU2MzA0ODc2OTZjMjA4NTljYWUw
Zi4uZDY5ZTE0OTkyZDU4Njc1MWNhMDQzNDI2MzYyYTZmNDFjMjY5OWY0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBXZWJEcml2
ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJp
bGl0aWVzTGlzdCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2Vzc2lvbkhv
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlc3Npb25Ib3N0PihjYXBhYmlsaXRpZXNMaXN0LnRha2VM
YXN0KCkpOworICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBtYWtlVW5pcXVlPFNlc3Npb25Ib3N0Pihj
YXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0KCkpOwogICAgIGF1dG8qIHNlc3Npb25Ib3N0UHRyID0g
c2Vzc2lvbkhvc3QuZ2V0KCk7CiAgICAgc2Vzc2lvbkhvc3RQdHItPmNvbm5lY3RUb0Jyb3dzZXIo
W3RoaXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxpdGllc0xpc3QpLCBzZXNz
aW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKGVycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIv
U2Vzc2lvbkhvc3RHbGliLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEds
aWIuY3BwCmluZGV4IDdhMjBiODk0MWFmZjcyYTg1MmI3NmY1YzU1MTA2MjY1NDc3NGExY2MuLjE3
N2FhNTRmMjIyOTdhYzMxNjE0ZDM1M2JlOWYzYTc5ZDFhYWIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2
ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0xMTMsNiArMTEzLDcgQEAgYm9vbCBTZXNz
aW9uSG9zdDo6aXNDb25uZWN0ZWQoKSBjb25zdAogfQogCiBzdHJ1Y3QgQ29ubmVjdFRvQnJvd3Nl
ckFzeW5jRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIENv
bm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEoU2Vzc2lvbkhvc3QqIHNlc3Npb25Ib3N0LCBHVW5pcXVl
UHRyPGNoYXI+JiYgZGJ1c0FkZHJlc3MsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0
aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ICAgICAgICA6IHNlc3Npb25Ib3N0KHNlc3Npb25Ib3N0KQogICAgICAgICAsIGRidXNBZGRyZXNz
KFdURk1vdmUoZGJ1c0FkZHJlc3MpKQpAQCAtMTczLDcgKzE3NCw3IEBAIHZvaWQgU2Vzc2lvbkhv
c3Q6OmxhdW5jaEJyb3dzZXIoRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+
JiYgY29tcGxlCiAgICAgfSwgdGhpcyk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRidXNBZGRy
ZXNzKGdfc3RyZHVwX3ByaW50ZigidGNwOmhvc3Q9JXMscG9ydD0ldSIsICIxMjcuMC4wLjEiLCBw
b3J0KSk7Ci0gICAgY29ubmVjdFRvQnJvd3NlcihzdGQ6Om1ha2VfdW5pcXVlPENvbm5lY3RUb0Jy
b3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxl
LmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIGNvbm5lY3RUb0Jyb3dz
ZXIobWFrZVVuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPih0aGlzLCBXVEZNb3ZlKGRi
dXNBZGRyZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKIH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6Y29ubmVjdFRvQnJvd3NlcihzdGQ6OnVuaXF1
ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4mJiBkYXRhKQpAQCAtMzcxLDYgKzM3Miw3
IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBjb25u
ZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElECiB9CiAKIHN0cnVjdCBNZXNzYWdlQ29udGV4dCB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIGxvbmcgbWVzc2FnZUlE
OwogICAgIFNlc3Npb25Ib3N0KiBob3N0OwogfTsKQEAgLTM4MSw3ICszODMsNyBAQCB2b2lkIFNl
c3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIG1lc3NhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25JRCk7CiAgICAgQVNTRVJUKG1f
dGFyZ2V0LmlkKTsKIAotICAgIGF1dG8gbWVzc2FnZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKKyAg
ICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0gbWFrZVVuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2Fn
ZUNvbnRleHQgeyBtZXNzYWdlSUQsIHRoaXMgfSk7CiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2Fs
bChtX2RidXNDb25uZWN0aW9uLmdldCgpLCBudWxscHRyLAogICAgICAgICBJTlNQRUNUT1JfREJV
U19PQkpFQ1RfUEFUSCwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfSU5URVJGQUNFLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1h
bmFnZXIuaAppbmRleCBiNjJmMTJlMTgyZjIxZWI4ZDUxMDc0Y2IyNTRkN2IyMTJlMGNlZDE5Li5i
NDQ1ZTdhNjVhNDhkMDc0OGJkN2U5MjA1YTM0NDBmN2YxYTk1NmNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIu
aApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFkQ2xpY2tB
dHRyaWJ1dGlvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QWRDbGlja0F0dHJpYnV0
aW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogCiAg
ICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5jcHAKaW5kZXggMmUyOTZiMjlmNDNhNGZjODhlNzAwOTMyNGE1ZTIzYjBiZTljZDUx
Yy4uOTMwM2QyYWRjMTVlZjZmYjMxMGI2ZmIxNmQwNzBjYzg1M2ZkYzNjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5j
cHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzaygpCiAgICAgaWYgKHJlc291cmNlTG9nUGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNv
cHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0
b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBtX2ZpbGVNb25pdG9yID0gbWFrZVVuaXF1
ZTxGaWxlTW9uaXRvcj4ocmVzb3VyY2VMb2dQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hh
bmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9y
RGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Zp
bGVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1f
d29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUg
dHlwZSkgeworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPihzdG9y
YWdlUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxl
Q2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgICAgICBpZiAodHlwZSA9PSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6OlJlbW92YWwp
IHsKICAgICAgICAgICAgIC8vIERpcmVjdG9yeSB3YXMgcmVtb3ZlZCEKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAppbmRleCA0
YzAzM2UzNTNkNGYzMDhmN2Y3NjAwMTJjYTk2Mjk2MzAzYzEwNzMwLi43MWYzNGJmYTNkNmMyYjUy
NzYxNjg5NDRlZTMzNGM3M2RhZjUwMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNs
YXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTsKIAogLy8gQ2FuIG9ubHkgYmUg
Y29uc3RydWN0ZWQgLyBkZXN0cm95ZWQgLyB1c2VkIGZyb20gdGhlIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpYyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlJiwgV29ya1F1ZXVlJiwgY29uc3Qg
U3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAgICAgflJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCmluZGV4IGFkZWMxNGNmOWNjZDk2NGMyOTAxY2UyZDg0ZWEzNTZkZjZkYjBmZjIuLjVk
YzdkOTk0NzhiMzRjYTMyYjc3MjBmMDk3NDVkMDIxYTZlYzQxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTc3LDYgKzc3LDcgQEAgZW51bSBjbGFzcyBP
cGVyYXRpbmdEYXRlc1dpbmRvdyA6IGJvb2wgeyBMb25nLCBTaG9ydCB9OwogCiAvLyBUaGlzIGlz
IGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQgb24gdGhlIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3MgcXVldWUuCiBjbGFzcyBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3M7CiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKaW5kZXggZGE4ODY2YjYxYzhiMDU3MmNkZDUwOGViNjlhOWQ4YTk4OWU3NWQyMS4uOGI0
YTg4MjM5NzRkNmNmMTU1NjlkY2Y5ZmZlOTkxYzFlMWMwZmI1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE1OSwxNSArMTU5LDE1IEBA
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBuCiAgICAgCiAgICAgcG9zdFRhc2soW3RoaXMsIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5Lmlzb2xhdGVkQ29weSgpLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0XSB7CiAgICAgICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlzSVRQRGF0YWJhc2VF
bmFibGVkKCkpIHsKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlz
dGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gbWFrZVVuaXF1ZTxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1
ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KTsKIAotICAgICAgICAgICAgYXV0byBtZW1vcnlTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVl
dWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAgICAgICAgICAgYXV0byBwZXJzaXN0ZW50
U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBhdXRvIG1lbW9yeVN0b3JlID0gbWFrZVVu
aXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3Rp
Y3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CisgICAgICAgICAgICBhdXRvIHBlcnNp
c3RlbnRTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KTsKIAogICAgICAgICAgICAgZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZS5nZXQoKSkucG9wdWxhdGVG
cm9tTWVtb3J5U3RvcmUoKm1lbW9yeVN0b3JlKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIG1fc3RhdGlzdGljc1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCk7Ci0gICAgICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KGRvd25jYXN0
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSwg
bV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAg
ICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0KTsKKyAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBtYWtlVW5pcXVl
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRp
c3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBGSVhNRSgxOTMyOTcpOiBUaGlzIHNob3VsZCBiZSByZXZpc2VkIGFmdGVy
IHRoZSBVSVByb2Nlc3MgdmVyc2lvbiBnb2VzIGF3YXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCA2MDVh
ZWYzZTZlZTk1MGYzOTQ4M2ZjZDhjYzRkOGU2NThlMDJjZjBjLi5iYmUzOTg0NzUyYmUxNDYwNTBk
NTAzNTcxMzcxNTUwZmIyY2I2M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIAogY2xhc3MgV2ViQ29v
a2llTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV2ViQ29va2llTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgV2ViQ29v
a2llTWFuYWdlcihOZXR3b3JrUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBkYzc5ZWViY2YxOGRiZjY3YjQ2NGMzNTg2MTBm
YjNjZTdjZmU5MGNjLi5mOTBmMGZjYjQxOTAyNGI4YTk1ZjU3NzBjOWI3OTk3YjU3ODRiMzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApAQCAt
NjMsNiArNjMsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
IDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcihOZXR3b3JrUHJvY2VzcyYpOwpAQCAtNzgs
NiArNzksNyBAQCBjbGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOgogI2VuZGlmCiAjaWYgVVNFKFNPVVAp
CiAgICAgc3RydWN0IFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhIHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YShH
UmVmUHRyPEdUYXNrPiYmLCBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqKTsKICAgICAgICAgfldl
YlNvdXBSZXF1ZXN0QXN5bmNEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29s
cy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDJjNGQyZmY5
NDgwOWM0MmE2MTE2NzNiNWZiNWNhZGJmYTU5MTYwNGUuLmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0
ZjM5ZmI1ZWZjZDc1ZTcxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291
cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBj
bGFzcyBDdXN0b21Qcm90b2NvbFJlcXVlc3RDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291
cFJlcXVlc3RHZW5lcmljQ2xpZW50CiAgICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9
IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2woc3RkOjptYWtlX3VuaXF1
ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihX
VEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CisgICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9
IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3Zl
KHRhc2spLCByZXF1ZXN0KSk7CiAgICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+c3RhcnRM
b2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVl
c3QocmVxdWVzdCkpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCA4MGZlMWEy
ZGRjM2UxM2EwMjBiMjU2NGE2MmRjNTUzZjBiNWQ0NGQwLi5iNGQyZGFjNWQwZGI1NzNiYzc1ZWVj
ZWVmOGZiMDYwZTgzZDYxNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBEb3dubG9hZElEIGRvd25sb2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJl
ZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3JrQmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVx
dWVzdC51cmwoKSk7CiAgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNl
IDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fk
cy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xp
ZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1l
dGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtCbG9i
UmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGlu
Z0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1f
Y2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFy
YW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtC
bG9iUmVnaXN0cnkoKS5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCiB2b2lk
IERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBk
b3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2Fk
RGVzdGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6
Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAg
IEFTU0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBt
X3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGlu
Z0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2Fkcygp
LCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25s
b2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChk
b3dubG9hZElELCBtYWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOwog
fQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWRE
ZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxv
d092ZXJ3cml0ZSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVz
dW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwog
I2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKLSAgICBh
dXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2Fk
SUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8
RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwogCiAgICAg
ZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFwLmNwcAppbmRleCBhODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3YmJjNDMz
ZTY1Li5hZTNjYTdlMGU0ZWU3ZWM4NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6OkFkZFJl
c3VsdCBEb3dubG9hZE1hcDo6YWRkKERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBhdXRvIHJl
c3VsdCA9IG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAg
ICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbV9kb3du
bG9hZEFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywg
QXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2Fk
QXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldlYktp
dCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKICAg
ICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQgZG93bmxv
YWRzJyBhc3NlcnRpb24gaW4gTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuY3BwCmluZGV4IGEyNzgyOGQ3YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5NmQuLjU5
MTIzZjJjNDhmMWMxZTQxNzliYjFkNWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6OkNvbm5l
Y3Rpb24qIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3Jr
U2Vzc2lvbiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVycyks
IG5ldHdvcmtTZXNzaW9uKSkKKyAgICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3Jr
TG9hZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nl
c3Npb24pKQogICAgICwgbV9wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbikKIHsKICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gcGFy
YW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6
Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCA5YjFiOWI4NjA0MzhkOWI2YTNmMTI2ODkxNDYyYjMzNmJjNTlmYzRkLi44MmExZTgzYmU5
NWMzMDdmN2UwYTdlMDcwNDE5YTk5NjU3ZDM0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBzZXJ2ZXIg
PSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBh
dXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4o
bV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7
CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+
KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQp
OwogICAgIAogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uIC0gJXMiLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4IDQ0NDIw
ZmY1ZmYyMjk5YmUzNzU0Y2UzN2NkZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIxYWYwYmFk
ZTBjMDI3NWJlMmYwOTVhMTY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCkBAIC02
OSw3ICs2OSw3IEBAIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRF
eHRlbnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAgICBhdXRv
JiBiYWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVudGlmaWVy
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRvJiYgY29u
dGVudFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2Y2ExZjA5
NWUxMDNjNTQyYWQ0ZTQzMDAwYmNiNzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIyMTA0ZGYw
OTQ2OTJjYzNmNjU1MjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291
cmNlIjsKIAogTmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBD
b250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykKICAg
ICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJlYW0oc3Rk
OjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3RyZWFtKG1h
a2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZlcmVuY2Vz
KGZpbGVSZWZlcmVuY2VzKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5ldHdvcmtQ
cm9jZXNzKCkpCiB7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9i
Ojpkb3dubG9hZCgpCiAgICAgfQogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9uZXR3
b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6
bWFrZV91bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJ
RCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOwor
ICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIs
IG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdn
ZXN0ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgp
OwogICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRp
bmdEb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENy
ZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyLmNwcAppbmRleCBmNjU0Mjk1OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMxMTZjLi4x
OTMyNmYyZjQ3ZGM5ZjRmNjIyOGE0YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U+KCk7CisgICAgICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlPigpOwogICAgICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9kYXRhYmFz
ZS0+b3BlbihwYXRoLCBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJlYWRPbmx5
KTsKICAgICAgICAgaWYgKCFpc0RhdGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtODAsNyArODAsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIoKQogICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJR
dWV1ZSwgdGhlIHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlm
ZmVyZW50IHRocmVhZHMuCiAgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVj
a3MoKTsKIAotICAgICAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsK
KyAgICAgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dD4oKm1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAgIGludCBp
c1N0YXRlbWVudFByZXBhcmVkID0gKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FMSVRFX09L
KTsKICAgICAgICAgQVNTRVJUKGlzU3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBpZiAoIWlz
U3RhdGVtZW50UHJlcGFyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKaW5kZXggZGNkNDZhNjAxYmU2MzA5
ODZmYzJhZTBjMWM5NjU1OGM5NTkyMjA4YS4uNTFkMjAzMTRlYWE0OWU5NmE0MWE1N2NlOGQ0MjIy
NmJiZmIwNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBT
ZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CiAgICAgfk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmlu
ZGV4IDkxMDdmZWMxZTM0ZGI0NDg4MTYyMjg2ODYyMmM4ZmJlYjViMzg4M2MuLmVlODBhYzZlYTFh
Nzc5NzczYTA3MTBlMTc4ODcwNjM3NjdjNTEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVz
cG9uc2VDb21wbGUKICAgICB9CiAKICAgICBpZiAobV9sb2FkVGhyb3R0bGVMYXRlbmN5ID4gMF9z
KSB7Ci0gICAgICAgIG1fdGhyb3R0bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocm90dGxlPigqdGhp
cywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX3Rocm90dGxlID0gbWFrZVVuaXF1ZTxUaHJvdHRs
ZT4oKnRoaXMsIG1fbG9hZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmlu
ZGV4IDQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlhMTYwODE3ZjI0Nzk2N2IwMTYuLmUxYWUwMGJkOWQ5
NTQ3Nzc4MTc0Mzk4NWRmMDczYThiMWNkMjUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBA
QCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogICAgICAgICBtX2ZyYW1lSUQsCiAgICAgICAgIG1f
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1fY29yc1ByZWZsaWdodENoZWNr
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3
b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
aGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgp
XShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBt
YWtlVW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5n
ZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdU
Rk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJy
b3IpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja0NPUlNS
ZXF1ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJl
ZmxpZ2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwg
ZXJyb3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFlcnJvci5pc051
bGwoKSkgewpAQCAtNDQ2LDcgKzQ0Niw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeSogTmV0d29y
a0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3koKQogewogICAgIGlmICghbV9jb250
ZW50U2VjdXJpdHlQb2xpY3kgJiYgbV9jc3BSZXNwb25zZUhlYWRlcnMpIHsKICAgICAgICAgLy8g
RklYTUU6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGluc3RlYWQgb2Yg
aXRzIG9yaWdpbi4KLSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRv
U3RyaW5nKCkgfSk7CisgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmlu
ZygpIH0pOwogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2ZUhlYWRl
cnMoKm1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0KICAgICByZXR1
cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDljYjRhOTI1MjIwOTA1YjRjMjFh
NGY3NmFlNzc2YWUxNDUwMjVmODcuLmJiYTdiYmUwMmI5ZTZiOTBjNGY5M2FmNTg4ZjI1MzNhYTU1
Njk5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC01MDMsOSArNTAzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihf
Q0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4o
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RG
TW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2ll
U3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIG1fZGVmYXVsdE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBt
X2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAj
ZW5kaWYKIH0KIApAQCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3Vy
ZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAg
ICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNv
cHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgp
KSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNl
c3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RG
TW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNF
KENVUkwpIHx8IFVTRShTT1VQKQotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KHNlc3Npb25JRCk7CiAjZW5kaWYKIH0KIApAQCAtMjQyOCw3ICsyNDI4LDcgQEAgU1dTZXJ2ZXIm
IE5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6
OlNlc3Npb25JRCBjb21lIGZyb20/CiAgICAgICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVy
YWwoKSB8fCAhcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICAKLSAgICAgICAgYXV0byB2YWx1ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9y
ZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IG1h
a2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RG
TW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKICAgICAgICAgICAgIHZhbHVlLT5kaXNh
YmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgICAgIHJldHVy
biB2YWx1ZTsKQEAgLTI1NDAsNiArMjU0MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVl
c3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPCiB9
CiAKIGNsYXNzIFF1b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0
b3JhZ2VRdW90YVVzZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFF1b3RhVXNlckluaXRpYWxpemVyKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1h
bmFnZXIpCiAgICAgICAgIDogbV9tYW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQpAQCAtMjU3
NCw3ICsyNTc1LDcgQEAgY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U3RvcmFnZVF1b3RhVXNlciB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRp
YWxpemVRdW90YVVzZXJzKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBz
ZXNzaW9uSUQsIG9yaWdpbiwgdXNlciA9IHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VySW5pdGlh
bGl6ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4s
IHVzZXIgPSBtYWtlVW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgdGhpcy0+aWRiU2VydmVyKHNlc3Npb25JRCkuaW5pdGlhbGl6ZVF1b3RhVXNlcihvcmlnaW4p
OwpAQCAtMjU4OCw3ICsyNTg5LDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nl
c3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAg
cmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXJzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgcmV0dXJuICpzdG9yYWdlUXVvdGFNYW5hZ2Vycy5tYW5hZ2Vyc1Blck9yaWdpbigpLmVu
c3VyZShvcmlnaW4sIFt0aGlzLCAmc3RvcmFnZVF1b3RhTWFuYWdlcnMsIHNlc3Npb25JRCwgJm9y
aWdpbl0gewotICAgICAgICBhdXRvIG1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VR
dW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBb
dGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50
U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAg
YXV0byBtYW5hZ2VyID0gbWFrZVVuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVv
dGFNYW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3JpZ2lu
XSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUlu
Y3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAgICB0aGlzLT5yZXF1ZXN0U3RvcmFn
ZVNwYWNlKHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwgY3VycmVudFNwYWNlLCBzcGFjZUluY3Jl
YXNlLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIH0pOwogICAgICAgICBpbml0aWFsaXpl
UXVvdGFVc2VycygqbWFuYWdlciwgc2Vzc2lvbklELCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGZiN2E2Y2QzNmVhOWYzNTk0
YTdmYjlkZTg1NTM1MzIzZmE4MjE3MDguLmM2ZTE2OGRkNDdmNjNmNDIyNmJmNjVkZjRmMzQ0YzQ5
ZWRhMGUzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBB
dXhpbGlhcnlQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAg
ICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5p
cXVlPFQ+KCp0aGlzKSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnRO
YW1lKCksIG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZU5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggY2UwNmUzNjEzYWMyMGVmOGIzMzE0YzdlYjI2ZTJjNGFiYWZi
NGU4OC4uZmY5OTJiZmYxYmNmZWZhNTA0MjhjNGZhMWEwYTlmMzY2M2NkYTFmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jl
c291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAKICAgICBp
ZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3Bv
bnNlQWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUpIHsKICAgICAgICAgTmV0
d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBpc01haW5GcmFtZUxv
YWQoKSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok1haW5GcmFtZSA6IE5ldHdvcmtM
b2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFy
YW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJz
LnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9y
aWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVz
dExvYWRUeXBlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5l
dHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlv
bnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRlck1h
cCB7IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigp
LCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVm
ZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAgIGlm
IChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3b3Jr
TG9hZENoZWNrZXItPnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkg
fSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTExOSw3ICsxMTksNyBAQCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmIHBhcgogI2VuZGlmCiAgICAgfQogICAgIGlmIChzeW5jaHJvbm91
c1JlcGx5KQotICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN5bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOworICAgICAg
ICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+
KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
On5OZXR3b3JrUmVzb3VyY2VMb2FkZXIoKQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIEZpcnN0TG9hCiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KTsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9h
ZD4oKnRoaXMsICZtX2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5l
dHdvcmtMb2FkPigqdGhpcywgJm1fY29ubmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUo
cGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVi
bGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggYzJiZjQzZDI0ZTA5MWZmNzZkOWRiOGI3MGExNmFl
M2ZhMTdiMmQ1MC4uYTA0YWE5MzQ4ZjI0NzNiZjliNjcyNWIwYTM2NDg4YTdmYmMzMmZkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNjQs
NiArNjQsNyBAQCBjbGFzcyBDYWNoZTsKIH0KIAogY2xhc3MgTmV0d29ya1Nlc3Npb24gOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNz
aW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycyYmKTsKICAgICB2aXJ0dWFsIH5OZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRleCAw
NGUzZDAyNTIyMGRlNGM0M2M3MzYyZGExNDFkZjMyYmEyMDMwZmFmLi41OTE4ODU3NTdhODQ3NTFj
ODMxOGY3YmU1ZDI3NWE3ZjExYzVhNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRD
aGFubmVsPiBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3Qg
aWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1NvY2tldENoYW5uZWw+KGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7
CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25u
ZWN0aW9uLCBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0LT5t
X3NvY2tldCkgewogICAgICAgICByZXN1bHQtPmRpZENsb3NlKDAsICJDYW5ub3QgY3JlYXRlIGEg
d2ViIHNvY2tldCB0YXNrIl9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXgg
NjcyYjM3ODFhNGQ0YTM0YjljMWUxZTI0MTViZDQ5MTBlNzc5ZWQ3MS4uOWRmOWFhY2RjYjMzMmUw
NDFkYjY5YmQwNjgxMDIyOWNmOGJiNGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFz
cyBOZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3Jr
U29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gY3JlYXRlKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlk
ZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCmluZGV4IGQ5MGNjY2E5ODBhOGVmZmMyZDRmMzhmNWUzZjZiYzBhYTJjMmU1NDYu
LjJjNjQyN2U2NDgyMmNlZjVkMWE4MTIwMjVlZmQ2Yzg1NDU0MWNlODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC01Myw3ICs1Myw3
IEBAIFByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIE5ldHdvcmtMb2FkUGFyYW1lCiAgICAgfQogCiAgICAgQVNTRVJUKHBhcmFtZXRl
cnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPT0gUHJlY29ubmVjdE9ubHk6Olllcyk7Ci0gICAgbV9u
ZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRy
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xv
YWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25l
U2hvdCg2MDAwMF9zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IGJm
NTE1NzhmYjE0N2RkZGM4N2U2NmQ5MGE1ZWRkMDJhNGNkNzI2OTMuLmNjODc4NGQ0MjgzYTYyNWZj
MGUxZDllZmFhNTI3MDUyM2FjNzExODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxl
RGF0YWJhc2VVcGRhdGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGlzYWJsZVN1
ZGRlblRlcm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UpCi0gICAgICAgIG1fZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXI+KCk7CisgICAgICAgIG1fZGlzYWJs
ZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBtYWtlVW5pcXVl
PFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXI+KCk7CiAKICAgICBtX2RpZFNjaGVkdWxlRGF0YWJh
c2VVcGRhdGUgPSB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggM2U5ZDE3ZDYwMmQzNDE3NzAzM2M5MzM4YjRi
YmU2ZGEwYmFiYThhNC4uYjA4M2Q1ZDMyYTUxZTYxZGE0Mzc2ZGY5NDQ2ZWYxMTE0ZWE2YmYxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcApAQCAtODQsMTcgKzg0LDE3IEBAIENhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDCiB7CiAj
aWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlm
IChvcHRpb25zLmNvbnRhaW5zKENhY2hlT3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikp
IHsKLSAgICAgICAgbV9sb3dQb3dlck1vZGVOb3RpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5h
YmxlZCkgeworICAgICAgICBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFi
bGVkKSB7CiAgICAgICAgICAgICBBU1NFUlQoV1RGOjpSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgICAgICBpZiAoaXNMb3dQb3dlck1vZGVFbmFibGVkKQogICAgICAgICAgICAgICAgIG1fc3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIW1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlcik7Ci0gICAgICAgICAg
ICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
KTsKICAgICAgICAgaWYgKCFtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyLT5pc0xvd1Bvd2VyTW9kZUVu
YWJsZWQoKSkKLSAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7
CisgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgIH0KICNlbmRp
ZgogCkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIAog
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVz
dCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFr
ZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJD
b3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVz
dCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVx
dWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVx
dWVzdCwgcmVzcG9uc2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hl
S2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0
VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
Q2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IENhY2hlOjp1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBleGlzdGlu
Z0VudHJ5LnJlc3BvbnNlKCk7CiAgICAgV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0
ZXJSZXZhbGlkYXRpb24ocmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKLSAgICBhdXRv
IHVwZGF0ZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXko
KSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSwgb3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSkpOworICAgIGF1dG8gdXBkYXRlRW50cnkgPSBt
YWtlVW5pcXVlPEVudHJ5PihleGlzdGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdF
bnRyeS5idWZmZXIoKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3
b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJl
c3BvbnNlKSk7CiAgICAgYXV0byB1cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRyeS0+ZW5jb2RlQXNT
dG9yYWdlUmVjb3JkKCk7CiAKICAgICBtX3N0b3JhZ2UtPnN0b3JlKHVwZGF0ZVJlY29yZCwgeyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggN2FlMWMyZmU3ZGNlNjA3YjlmOGE1M2Q5OWExYmQ3OTg1
Mzk5YmNmMS4uMWY0MTQ0YThmYWU4N2JmNWZjNWM4M2VkOTAyYjZmZjA4YTA2NGFlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50
cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50
cnkpCiB7Ci0gICAgYXV0byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KHN0b3JhZ2VF
bnRyeSk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7
CiAKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5Lmhl
YWRlci5kYXRhKCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGVudHJ5LT5tX3Jlc3BvbnNlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcAppbmRleCBlN2ZjNWI4OTMyMmI5OTFjNzA5ZDA2OGJlMmRlNzc3MzgzY2I0YmMwLi4y
MjAxOTQxN2E4YzUwMWJmOTU1YmY1MzIyYzA2OWNiMDMyYTQxZTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6
U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFs
RnJhbWVJCiAgICAgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBDb250ZW50U25p
ZmZpbmdQb2xpY3k6OkRvTm90U25pZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29udGVudEVu
Y29kaW5nU25pZmZpbmdQb2xpY3kgPSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25p
ZmY7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0gICAgbV9u
ZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRy
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisgICAgbV9uZXR3b3Jr
TG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CiB9CiAKIFNwZWN1bGF0aXZlTG9hZDo6flNw
ZWN1bGF0aXZlTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyLmNwcAppbmRleCAxY2Q2YjQ5MmY4MWE1YTgxZDI0Y2E3OTEwOGRhNmIxOWUwYzAwM2YxLi41
N2U4ZTc1OTliMWNjYTY1YjI2ZTA2ZWMzODcyZWUyZGQ5NDlkZjY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBj
bGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJl
ZkNvdW50ZWQ8UGVuZGluZ0ZyYW1lTAogICAgIHZvaWQgcmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHN1YnJlc291cmNlS2V5
KQogICAgIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgbV9z
dWJyZXNvdXJjZUxvYWRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlTG9hZD4o
cmVxdWVzdCwgc3VicmVzb3VyY2VLZXkpKTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFw
cGVuZChtYWtlVW5pcXVlPFN1YnJlc291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VLZXkp
KTsKICAgICAgICAgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5LmltcHVsc2UoKTsKICAgICB9CiAK
QEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZl
KGNvbnN0IEtleSYgc3RvcmFnZUtleSwgUmV0cmlldmVDb21wbGV0aW9uSAogICAgIEFTU0VSVCht
X3BlbmRpbmdQcmVsb2Fkcy5jb250YWlucyhzdG9yYWdlS2V5KSk7CiAgICAgLy8gRklYTUU6IFRo
aXMgYnJlYWtzIGluY3JlbWVudGFsIGxvYWRpbmcgd2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5v
dCBzdWNjZXNzZnVsLgogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmlldmVSZXF1
ZXN0cy5lbnN1cmUoc3RvcmFnZUtleSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKICAgICB9
KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwg
Y29uCiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRp
b24oKSk7CiAgICAgYXV0byBrZXkgPSBlbnRyeS0+a2V5KCk7Ci0gICAgbV9wcmVsb2FkZWRFbnRy
aWVzLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50
cnkpLCBXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7
CisgICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1ha2VVbmlxdWU8UHJlbG9hZGVkRW50
cnk+KFdURk1vdmUoZW50cnkpLCBXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywg
a2V5LCBmcmFtZUlEXSB7CiAgICAgICAgIGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRl
ZEVudHJpZXMudGFrZShrZXkpOwogICAgICAgICBBU1NFUlQocHJlbG9hZGVkRW50cnkpOwogICAg
ICAgICBpZiAocHJlbG9hZGVkRW50cnktPndhc1JldmFsaWRhdGVkKCkpCkBAIC00NDksNyArNDQ5
LDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3Rz
KGNvbnN0IEtleSYga2V5LCBFbnRyeSogZW50cnkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgZm9yIChhdXRvJiBjb21wbGV0aW9uSGFuZGxlciA6ICpjb21wbGV0aW9uSGFuZGxlcnMpCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVudHJ5ID8gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4o
KmVudHJ5KSA6IG51bGxwdHIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IG1h
a2VVbmlxdWU8RW50cnk+KCplbnRyeSkgOiBudWxscHRyKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxp
ZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVzCiAKICAgICBMT0co
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVj
dWxhdGl2ZWx5IHJldmFsaWRhdGluZyAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBhdXRvIHJldmFsaWRhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUo
ZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFsaWRhdG9y
ID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRh
dGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1
ZXN0LCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsK
ICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVudHJ5LT5u
ZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCBy
ZXZhbGlkYXRlZEVudHJ5LT5rZXkoKSA9PSBrZXkpOwogCkBAIC01NTksNyArNTU5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGYKICAgICAgICAgICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJl
c291cmNlSW5mbywgZnJhbWVJRCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTE9HKE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgTm90IHBy
ZWxvYWRpbmcgJyVzJyBiZWNhdXNlIGl0IGlzIG1hcmtlZCBhcyB0cmFuc2llbnQiLCBrZXkuaWRl
bnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRy
aWVzLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwg
ZnJhbWVJRF0geworICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1h
a2VVbmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICAg
ICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKG1fY2FjaGUubmV0
d29ya1Byb2Nlc3MoKSwgZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVJpZ2h0
bHlOb3RXYXJtZWRVcEtleSgpKTsKICAgICAgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJp
ZXMucmVtb3ZlKGtleSk7CiAgICAgICAgICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRl
eCBiYmZjNjQ5ODkwZjk1Y2M3ZTA0Y2U4MmE0ZmUzMjk0NGRjMWFiMWYwLi44MDRjNDI5OGNjM2Uz
YzI4MTRmZGJjMmJiYjZjYmVlNTc1ODRhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTI5
MCw4ICsyOTAsOCBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICBMT0coTmV0d29y
a0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vzcykgc3luY2hyb25pemluZyBjYWNoZSIpOwog
CiAgICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwotICAgICAgICBhdXRvIGJsb2JG
aWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRv
IHJlY29yZEZpbHRlciA9IG1ha2VVbmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1
dG8gYmxvYkZpbHRlciA9IG1ha2VVbmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CiAKICAgICAgICAg
Ly8gTW9zdCBvZiB0aGUgZGlzayBzcGFjZSB1c2FnZSBpcyBpbiBibG9icyBpZiB3ZSBhcmUgdXNp
bmcgdGhlbS4gQXBwcm94aW1hdGUgcmVjb3JkcyBmaWxlIHNpemVzIHRvIGF2b2lkIGV4cGVuc2l2
ZSBzdGF0KCkgY2FsbHMuCiAgICAgICAgIHNpemVfdCByZWNvcmRzU2l6ZSA9IDA7CkBAIC00ODks
NyArNDg5LDcgQEAgdm9pZCBTdG9yYWdlOjpyZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mIHJlYWRP
cGVyYXRpb24sIGNvbnN0IERhdGEmIHJlY29yZERhdGEpCiAgICAgfQogCiAgICAgcmVhZE9wZXJh
dGlvbi5leHBlY3RlZEJvZHlIYXNoID0gbWV0YURhdGEuYm9keUhhc2g7Ci0gICAgcmVhZE9wZXJh
dGlvbi5yZXN1bHRSZWNvcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3Rv
cmFnZTo6UmVjb3JkIHsKKyAgICByZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IG1ha2VVbmlx
dWU8U3RvcmFnZTo6UmVjb3JkPihTdG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0YS5r
ZXksCiAgICAgICAgIG1ldGFEYXRhLnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKQEAg
LTc1OCw3ICs3NTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZyb21NZW1v
cnkoY29uc3QgVCYgb3BlcmF0aW9ucywgY29uc3QgS2V5JiBrZXksCiAgICAgICAgIGlmIChvcGVy
YXRpb24tPnJlY29yZC5rZXkgPT0ga2V5KSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hl
U3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgZm91bmQgd3JpdGUgb3BlcmF0aW9uIGluIHByb2dy
ZXNzIik7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlY29yZCA9IG9w
ZXJhdGlvbi0+cmVjb3JkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVj
b3JkKSwgeyB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0
IEtleSYga2V5LCB1bnNpZ25lZCBwcmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZAogICAg
IGlmIChyZXRyaWV2ZUZyb21NZW1vcnkobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMsIGtleSwgY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlYWRPcGVyYXRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBtYWtlVW5pcXVl
PFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IAogICAgIHJlYWRPcGVyYXRpb24tPnRpbWluZ3Muc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6
bm93KCk7CiAgICAgcmVhZE9wZXJhdGlvbi0+dGltaW5ncy5kaXNwYXRjaENvdW50QXRTdGFydCA9
IG1fcmVhZE9wZXJhdGlvbkRpc3BhdGNoQ291bnQ7CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBT
dG9yYWdlOjpzdG9yZShjb25zdCBSZWNvcmQmIHJlY29yZCwgTWFwcGVkQm9keUhhbmRsZXImJiBt
YXBwZWRCb2R5SGFuZGxlciwKICAgICBpZiAoIW1fY2FwYWNpdHkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRlT3BlcmF0
aW9uPigqdGhpcywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBtYWtlVW5pcXVl
PFdyaXRlT3BlcmF0aW9uPigqdGhpcywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVy
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0
aW9ucy5wcmVwZW5kKFdURk1vdmUod3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFkZCBrZXkg
dG8gdGhlIGZpbHRlciBhbHJlYWR5IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRoZSBwZW5k
aW5nIG9wZXJhdGlvbnMgdG9vLgpAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgU3RvcmFnZTo6dHJh
dmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywg
VHJhdmVyCiAgICAgQVNTRVJUKHRyYXZlcnNlSGFuZGxlcik7CiAgICAgLy8gQXZvaWQgbm9uLXRo
cmVhZCBzYWZlIEZ1bmN0aW9uIGNvcGllcy4KIAotICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25Q
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwg
dHlwZSwgZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CisgICAgYXV0byB0cmF2ZXJz
ZU9wZXJhdGlvblB0ciA9IG1ha2VVbmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRo
aXMpLCB0eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKICAgICBhdXRvJiB0
cmF2ZXJzZU9wZXJhdGlvbiA9ICp0cmF2ZXJzZU9wZXJhdGlvblB0cjsKICAgICBtX2FjdGl2ZVRy
YXZlcnNlT3BlcmF0aW9ucy5hZGQoV1RGTW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN1YnJlc291cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IDdiODg5MjI5OTUzOWRi
MzRjNWIzOTE0ZDNiMjE0Y2U4YjgxNDNiOTguLjYzYWQwNDA5ZmRkMjM2ZjZlM2MyY2EzMGU4N2U0
YTdjMGEyOTU5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBA
IC05Myw3ICs5Myw3IEBAIFN0b3JhZ2U6OlJlY29yZCBTdWJyZXNvdXJjZXNFbnRyeTo6ZW5jb2Rl
QXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0Vu
dHJ5PiBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdl
OjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0g
bWFrZVVuaXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwg
c3RvcmFnZUVudHJ5LmhlYWRlci5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50
cnktPm1fc3VicmVzb3VyY2VzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IGQ4YTA1OTQwZDcxOTdlYjMyMjVhMzZi
YzUxM2EyZGI2MTBkYjBjZDguLjcxMDRkMWY3NGNkNzAxY2JjZWNmYWI1N2QyNGViZmY4ZGFlYmVk
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmNwcApAQCAtNzMsOCArNzMsOCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBp
cmF0aW9uVGltZW91dCB7IDVfcyB9Owogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBV
UkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Np
b25QcmVmZXRjaGVzKQotICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Np
b25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENh
Y2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOworICAgICAg
ICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVy
bCwgbWFrZVVuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdU
Rk1vdmUoYnVmZmVyKSkpOwogICAgIC8vIExpbWl0IHByZWZldGNoZXMgZm9yIHNhbWUgdXJsIHRv
IDEuCiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwpAQCAt
ODYsOSArODYsOSBAQCB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVz
dFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBQcmVmZXRjaENhY2hl
OjpzdG9yZVJlZGlyZWN0KGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCkKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAg
IG1fc2Vzc2lvblByZWZldGNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50cmllc01h
cD4oKTsKKyAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hF
bnRyaWVzTWFwPigpOwogICAgIHJlZGlyZWN0UmVxdWVzdC5jbGVhclB1cnBvc2UoKTsKLSAgICBt
X3Nlc3Npb25QcmVmZXRjaGVzLT5zZXQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVm
ZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZWRp
cmVjdFJlcXVlc3QpKSk7CisgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmws
IG1ha2VVbmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25z
ZSksIFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSkpOwogICAgIG1fc2Vzc2lvbkV4cGlyYXRpb25M
aXN0LmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUocmVxdWVzdFVybCwgV2FsbFRpbWU6Om5vdygpKSk7
CiAgICAgaWYgKCFtX2V4cGlyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2V4cGly
YXRpb25UaW1lci5zdGFydE9uZVNob3QoZXhwaXJhdGlvblRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMTcx
MGJhZTllNWE4ODUyNmNlZmEzYjM5YWE3ODhmYWFmMmNmYTBlLi5hMjUxNTIwYjMxZWFjOTIxYzIy
ZDMxMTUxZDZkMjMxYTFiZWQxMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBQcmVm
ZXRjaENhY2hlIHsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBzdHJ1Y3QgRW50cnkgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEVudHJ5KFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7
CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggMDc3ZjE2ZmE2NTA2NTJj
Nzg3YTZmMDMxNjA5MDkwMjY4ZWJiOGFjMC4uY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjViYmM4ZTRh
NWU5OGExNWM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29u
c3QgTmV0d29ya1Byb2Nlc3NDCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBOZXR3b3JrUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25z
dApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vz
c0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIm
IE5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiB7CiAgICAgaWYg
KCFtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKQotICAgICAgICBtX25ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
cj4oKTsKKyAgICAgICAgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IG1ha2VVbmlxdWU8
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI+KCk7CiAgICAgcmV0dXJuICptX25ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMWY4ZDRjYmZjN2E1
MzM4Y2YwZWY1MjRlOWE2NzU0MzFiNDAxN2ZjOS4uMDliMjQzYTZkN2M4MTY4ZTc0NTk5NGNkZTg3
Mzc0N2I2NzU1NDgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODAwLDcgKzgwMCw3IEBAIC0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4g
cHJvdGVjdGVkTmV0d29ya0RhdGFUYXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRv
IGRvd25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CiAgICAg
ICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRv
d25sb2FkTWFuYWdlcigpOwotICAgICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2Fk
VGFzaywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZp
bGVuYW1lKCkpOworICAgICAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkRv
d25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Np
b24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
ICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxv
YWQoKmRvd25sb2FkKTsKICAgICAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0
d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25s
b2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9h
ZExvY2F0aW9uKCkpOwpAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2Nv
YTo6c2V0Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVh
dGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya1Nlc3Npb25Db2NvYT4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9j
ZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFyeSAqcHJv
eHlEaWN0aW9uYXJ5KGNvbnN0IFVSTCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkp
CkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0
d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrUwogewogICAgIC8v
IEZJWE1FOiBVc2UgcHJvdG9jb2wuCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tl
dFRhc2s+IHRhc2sgPSBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpIHdlYlNv
Y2tldFRhc2tXaXRoUmVxdWVzdDogcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJv
ZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsK
IH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tl
dFRhc2smIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCmluZGV4IGJlNjgwMWYzMGNkZjQ5MDAyNTRjMjI0
YjliMTFmYmRmNzNmZTJlMzEuLjViZTE3MDI2NmY0NWI4YmY3MmVmNTZiMTAwODdjYjU5YmI1NmRi
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
UHJvY2Vzc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphbGxv
d1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAppbmRleCBkNDcw
OWE1ZTRhYzhhMmZiNmFjZWI1NmM1N2ViZjBiNWM3NDBkNDU2Li5lMThhNDM5MGIxODhhMjdlOTMx
OGM1MjQwNDU1ZjA2NGNmNmJkNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCkBAIC0zNSw3ICszNSw3IEBAIGNs
YXNzIE5ldHdvcmtTZXNzaW9uQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRl
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0
d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vz
c2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25DdXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzSU9TLm1tCmluZGV4IDIzNzQ1Mjg4YTA2ZDAxMTQ1OTE5NjhiNTA4NmRlYjVmNDVh
YTBhYzYuLmM4Yjg2YzUxMTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IoKQogewogICAgIGlmICghbV9wYXlt
ZW50Q29vcmRpbmF0b3IpCi0gICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3Bh
eW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcGF5bWVudENvb3JkaW5hdG9yOwogfQogCkBAIC04Miw3
ICs4Miw3IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBh
eW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmIGNvb3JkaW5hdG9yLCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxl
cj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRB
dXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRl
eCA4N2U4NWI1NWU5MWVjNjk2YWMxNWIxYzVmMWExMTM1MWEzZTI2YWI3Li5jOTM2NGM1ZDA0YWIz
NjMxNzAyMGIyY2FlMjlmMDdlYjdhOTViYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC04OTcs
NyArODk3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAgbV9k
b3dubG9hZE91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihHX09VVFBVVF9TVFJFQU0ob3V0cHV0U3Ry
ZWFtLmxlYWtSZWYoKSkpOwogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9zZXNzaW9u
LT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rv
d25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFt
ZSgpKTsKKyAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRN
YW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQo
KSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9h
ZC5nZXQoKTsKICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2so
bV9wZW5kaW5nRG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRy
LT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAKaW5kZXggODNjMmYyOGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFmOS4u
N2E3NDgxZjdkNDI1ZjAyMzM3YTBjMTBhZGY5ZDY1NGY3MGVjN2RkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJv
b2wgaWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCA3MzU1MjU3YmVkYTFlNWFk
Y2RlNTU0ZTZiZDMzYmNlOWUyZjYwZDBkLi45YzhmYjhkNjkyOWQ4MTc3N2NkMTQ1MTE0ZWViZmYw
ZjgwMDhmNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAo
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycykKLSAgICAsIG1fbmV0d29ya1Nlc3Npb24oc3RkOjptYWtlX3VuaXF1ZTxT
b3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKKyAgICAsIG1fbmV0d29ya1Nlc3Npb24o
bWFrZVVuaXF1ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKIHsKICAgICBhdXRv
KiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIEFTU0VSVChz
dG9yYWdlU2Vzc2lvbik7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3Jr
U28KICAgICByZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpKTsKICAg
ICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChzb3VwTWVzc2FnZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKHdl
YlNvY2tldE1lc3NhZ2VOZXR3b3JrRXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCks
IHNvdXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
U29ja2V0VGFzaz4oY2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHBy
b3RvY29sKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggZjll
ZjRiYjU0MzBiYmY3M2IwNGEwZTNiZWMyNDc5MjhkNTllNzE2Yi4uNDY2YjI3ODJiZjkzYzc3MDcw
Zjc5N2RkMzY1MjM0Y2MxZGUzZmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBj
bGFzcyBOZXR3b3JrU2Vzc2lvblNvdXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewog
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHdvcmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1l
dGVycykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5l
dHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nl
c3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMmJik7CiAgICAgfk5ldHdvcmtTZXNzaW9uU291cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5w
dXRTdHJlYW0uY3BwCmluZGV4IDZkZGM4MWEzNmQ4NDljYmMyODM3OTNiNjE3MDY3YTI3ZTI5ZDkx
ZjAuLjg3NDUyNWUzOGNlNzA0ZWJlMWRhYTcxMGJiNTVjMDFjYzA1OGVhZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0
U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3
dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIHN0cnVjdCBBc3luY1JlYWREYXRhIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQXN5bmNSZWFkRGF0YShHUmVmUHRyPEdU
YXNrPiYmIHRhc2ssIHZvaWQqIGJ1ZmZlciwgZ3NpemUgY291bnQpCiAgICAgICAgIDogdGFzayhX
VEZNb3ZlKHRhc2spKQogICAgICAgICAsIGJ1ZmZlcihidWZmZXIpCkBAIC0zOSw2ICs0MCw3IEBA
IHN0cnVjdCBBc3luY1JlYWREYXRhIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbVByaXZhdGUgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICB1aW50NjRfdCBjb250ZW50TGVuZ3RoOwogICAgIHVpbnQ2NF90IGJ5dGVzUmVjZWl2ZWQ7
CiAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwpAQCAtOTksNyArMTAxLDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlucHV0
U3RyZWFtLCB2b2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0cmVhbS0+cHJpdi0+
cGVuZGluZ0FzeW5jUmVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92
ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7CisgICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNS
ZWFkID0gbWFrZVVuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIsIGNv
dW50KTsKIH0KIAogc3RhdGljIGdzc2l6ZSB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVh
ZEZpbmlzaChHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
R0Vycm9yKiogZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5oCmluZGV4IGRhODc2MTEwNjQ4MWY5NmE5ZDZhMDAwMTg0
Y2NkMjQwN2IxZjI2NTAuLjVlZjdiNDhlNDIwODM5ZWVmODAwODExYjBkOTc0MGY0NGUwMWYwYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2Nr
ZXRUYXNrU291cC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
TmV0d29ya1NvY2tldENoYW5uZWw7CiAKIGNsYXNzIFdlYlNvY2tldFRhc2sgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNvY2tldFRhc2soTmV0d29ya1Nv
Y2tldENoYW5uZWwmLCBTb3VwU2Vzc2lvbiosIFNvdXBNZXNzYWdlKiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCk7CiAgICAgfldlYlNvY2tldFRhc2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKaW5k
ZXggOGYyMDVjZTAyOTcxM2Q4YmEyMTNmMTQzYmE3MWJiMTE0NzUyZGVmNS4uMjJhYmRlYzY5ZGIy
NDVhNGNmOTgzZjI0N2IzOGY3MmQ5MDBhNmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKQEAg
LTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrUlRDUHJvdmlk
ZXI7CiAKIGNsYXNzIExpYldlYlJUQ1NvY2tldENsaWVudCBmaW5hbCA6IHB1YmxpYyBzaWdzbG90
OjpoYXNfc2xvdHM8PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZW51bSBjbGFzcyBUeXBlIHsgVURQLCBTZXJ2ZXJUQ1AsIENsaWVudFRDUCwgU2VydmVyQ29u
bmVjdGlvblRDUCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IGU3ODY1NjhmZjUwNWE3
Yjg3MTc4NzBkZjU3ZmE1N2QxNWY1ZDc3NjMuLjkyNjY2OGMzOGZmZjcwOGFlNTAyZjU4ZmQ0MTUy
ODgwM2VjNTU1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBAIHZv
aWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJDb3JlOjpEb2N1
bWVudElkZW50aWZpZXIgZG9jdW1lCiB9CiAKIHN0cnVjdCBQZW5kaW5nUmVnaXN0cmF0aW9uUmVx
dWVzdCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFBlbmRpbmdS
ZWdpc3RyYXRpb25SZXF1ZXN0KFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24sIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAgICAgICAgIDogY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICAg
ICAsIHJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3RJZGVudGlmaWVyKQpAQCAtMTM1LDcgKzEzNiw3
IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSh1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgUEFMOjpTZXNzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nUmVnaXN0cmF0
aW9uUmVxdWVzdD4obWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgcmVxdWVzdElk
ZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHNlc3Npb25JRCk7CisgICAgYXV0byBwZW5kaW5nUmVx
dWVzdCA9IG1ha2VVbmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VSZWYobV9j
b25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUp
LCBzZXNzaW9uSUQpOwogICAgIGF1dG8qIHJlY29yZCA9ICZwZW5kaW5nUmVxdWVzdC0+cmVjb3Jk
OwogICAgIGF1dG8gZXJyb3IgPSBETlNTZXJ2aWNlUmVnaXN0ZXJSZWNvcmQoc2VydmljZSwKICAg
ICAgICAgcmVjb3JkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCmluZGV4IDM1M2VhYzhjZTExYjY5MDZlZmFk
ZDJmZDI3MThiOTdhYjUyY2RhNGQuLmFiNzA2ZGMyZTkzNGE5YTdlZjk5MjY4OTc5NzRiZGM3NTRl
YTNkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBOZXR3b3Jr
UlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZygpCiB7CiAgICAgbV9pc1N0YXJ0ZWQgPSB0cnVlOwog
ICAgIG1fcnRjUHJvdmlkZXIuY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpc10oKSB7Ci0gICAg
ICAgIG1fbWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2Vy
PigpOworICAgICAgICBtX21hbmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CiAgICAgICAgIG1fbWFuYWdlci0+U2lnbmFs
TmV0d29ya3NDaGFuZ2VkLmNvbm5lY3QodGhpcywgJk5ldHdvcmtSVENNb25pdG9yOjpvbk5ldHdv
cmtzQ2hhbmdlZCk7CiAgICAgICAgIG1fbWFuYWdlci0+U3RhcnRVcGRhdGluZygpOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTVhYzU3MjEzNzlkYjNkMWIyNTg3NTU4NjEwMzBi
YmE0ZGI5ZWI4ZS4uMTVkNDRkMGFkOWRiMGYzYjA1OTllMWEzM2VmY2ZkYjg5NjFhNjVkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIE5ldHdvcmtSVENQcm92aWRlcjo6
TmV0d29ya1JUQ1Byb3ZpZGVyKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uCiAgICAgOiBtX2Nvbm5lY3Rpb24oJmNvbm5lY3Rpb24pCiAgICAgLCBtX3J0Y01vbml0b3Io
KnRoaXMpCiAgICAgLCBtX3J0Y05ldHdvcmtUaHJlYWQoY3JlYXRlVGhyZWFkKCkpCi0gICAgLCBt
X3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeT4obV9ydGNOZXR3b3JrVGhyZWFkLmdldCgpKSkKKyAgICAsIG1fcGFja2V0U29ja2V0
RmFjdG9yeShtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeT4obV9ydGNOZXR3b3JrVGhyZWFkLmdldCgpKSkKIHsKICNpZiBkZWZp
bmVkKE5ERUJVRykKICAgICBydGM6OkxvZ01lc3NhZ2U6OkxvZ1RvRGVidWcocnRjOjpMU19OT05F
KTsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29j
a2V0KHVpbnQ2NF90IGlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxydGM6OgogICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBX
VEZNb3ZlKHNvY2tldCksIHR5cGUpKTsKKyAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgbWFrZVVu
aXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNv
Y2tldCksIHR5cGUpKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVEUFNv
Y2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBSVENOZXR3b3JrOjpTb2NrZXRBZGRyZXNz
JiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KQpAQCAtMTUzLDcg
KzE1Myw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlvbih1
aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDCiB7CiAgICAgY2FsbE9uUlRDTmV0d29y
a1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXJd
KCkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29j
a2V0ID0gbV9wZW5kaW5nSW5jb21pbmdTb2NrZXRzLnRha2UobmV3Q29ubmVjdGlvblNvY2tldElk
ZW50aWZpZXIpOwotICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tl
dCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCkpOwor
ICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXRD
bGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIExpYldlYlJUQ1NvY2tl
dENsaWVudDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCkpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDM4MzgyYjA5ZDRmYjNi
ZTI2NGY4OWI3Nzg0MWE0MWQ3YzA4Y2FjMDUuLmM1ZWY2ZDk5YTU2MGRkMTQ4OGYxODQ5OTVhZThh
N2IxNmQ5YWQyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxF
bmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBh
dXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2Fn
ZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNv
ZGVyIGFuZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIuCiAgICAg
d29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgZGVj
b2RlciwgcmVwbHlFbmNvZGVyKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIENvbm5lY3Rpb246
Om1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpCiB7Ci0g
ICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZTxFbmNvZGVyPihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVz
dGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+c2V0SXNTeW5jTWVzc2FnZSh0cnVlKTsKIAogICAg
IC8vIEVuY29kZSB0aGUgc3luYyByZXF1ZXN0IElELgpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6ZW5hYmxlSW5jb21pbmdNZXNzYWdlc1Rocm90dGxpbmcoKQogICAgIGlmICht
X2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5j
b21pbmdNZXNzYWdlc1Rocm90dGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZXNUaHJvdHRs
ZXI+KCp0aGlzLCAmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VzKTsKKyAgICBt
X2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPE1lc3NhZ2VzVGhyb3R0bGVy
PigqdGhpcywgJkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk7CiB9CiAKIHZv
aWQgQ29ubmVjdGlvbjo6cG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1
ZSgpCkBAIC04NDMsNyArODQzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNz
YWdlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IHJlcGx5RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVz
c2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQp
OwogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciKSB7
CiAgICAgICAgIGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3Rpbmcp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCAyMGY1ZWM1YjIw
MmJlYzJiZGY1OGYwMjBlYmRlZWY4MzE0OTMxMWJmLi5hZGM0YWFkOTg4MThmYTA2YWZjNmJlODk2
MTQ1ZDU2MzE1ODMyZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
CkBAIC00MzMsNyArNDMzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4KIHsKICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRv
IGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8
RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgIAogICAgIHJldHVy
biBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CkBAIC00NDgsNyAr
NDQ4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2Us
IEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QKIHsKICAgICBDT01QSUxFX0FTU0VSVCgh
VDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6
cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgdWludDY0X3Qg
bGlzdGVuZXJJRCA9IG5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKGxpc3RlbmVySUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggY2NhMDczOTBhZGVj
NDQ2ZGU3NDY2Y2Y4ZTEwMTIzYzI3OTM4NTM1Mi4uZmQ1MTcwMTcxMmIwNjI5ZDQ3MjUyZDA0MDg5
NmM2NGZjYmNiYjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAg
LTEyMyw3ICsxMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gRGVjb2Rlcjo6dW53cmFw
Rm9yVGVzdGluZyhEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUod3Jh
cHBlZE1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERlY29kZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEoKSwgd3JhcHBlZE1lc3Nh
Z2Uuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RGVjb2Rlcj4od3JhcHBlZE1lc3NhZ2UuZGF0YSgpLCB3cmFwcGVkTWVzc2FnZS5z
aXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBjb25zdCB1aW50OF90KiByb3VuZFVwVG9BbGlnbm1lbnQoY29uc3QgdWludDhfdCogcHRyLCB1
bnNpZ25lZCBhbGlnbm1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmgKaW5kZXggODU0NTJjZGE3ZTA0NWU0NDU1ZTA3YjkzYmFmY2EzNWIxMDIwMDExZS4uYTc0
OWFhYjg3MDA1NGNlYjY5MGU1ZjE0ZjQwNzU2M2ZmY2QwZjliOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgaGFu
ZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIs
IEMqIG9iamVjdCwgTUYKICAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBs
ZXRpb25IYW5kbGVyID0gW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9IG1h
a2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7Ci0gICAgICAgIGF1
dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIkFzeW5jUmVwbHkiLCBUOjph
c3luY01lc3NhZ2VSZXBseU5hbWUoKSwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oIkFzeW5jUmVwbHkiLCBUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwg
MCk7CiAgICAgICAgICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CiAgICAgICAgIFQ6OnNlbmQoV1RG
TW92ZShlbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCAzZDZmMzQyODky
YmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2Li43NzE0NDhhNDRkMDg4NmRkMDFiYjBjMmRl
NjRkYzlhNDI4NjI3YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNl
bmRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lc3NhZ2VTZW5kZXIgewogICAgIHsKICAg
ICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5jISIpOwogCi0g
ICAgICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oVTo6cmVjZWl2
ZXJOYW1lKCksIFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6cmVjZWl2ZXJOYW1lKCksIFU6Om5hbWUoKSwgZGVz
dGluYXRpb25JRCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygp
KTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIp
LCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9Db25uZWN0aW9uQ29jb2EubW0KaW5kZXggMzcwMmFjYzdkZjUxYmQ4NDZiOTNhZjY0YmYwNzBh
NGMxMDAzOTE5Zi4uODdkZDI4ZjgwODY3ODJjZTJhM2RmNzkwZjRhYzBlNmQ3NDlkYWI0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2Nv
YS5tbQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgICAgICA6IG1feHBjQ29ubmVjdGlv
bih4cGNDb25uZWN0aW9uKQogICAgICAgICAsIG1fd2F0Y2hkb2dUaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZzo6d2F0Y2hkb2dUaW1lckZp
cmVkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICwgbV9hc3NlcnRpb24oc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlByb2Nlc3NBbmRVSUFzc2VydGlvbj4oeHBjX2Nvbm5lY3Rp
b25fZ2V0X3BpZChtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpLCAiQ29ubmVjdGlvblRlcm1pbmF0aW9u
V2F0Y2hkb2ciX3MsIFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpKQorICAgICAg
ICAsIG1fYXNzZXJ0aW9uKG1ha2VVbmlxdWU8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3NlcnRpb24+
KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdldCgpKSwgIkNvbm5lY3Rp
b25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlvblN0YXRlOjpCYWNrZ3Jv
dW5kKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hv
dChpbnRlcnZhbCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkK
ICAgICAgICAgbV9pc0Nvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICAvLyBTZW5k
IHRoZSBpbml0aWFsaXplIG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3Ig
dGhlIHNlcnZlciB0byB1c2UuCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RW5jb2Rlcj4oIklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIsIDApOworICAgICAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNvbm5l
Y3Rpb24iLCAwKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBv
cnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CiAKICAgICAgICAgaW5pdGlhbGl6ZVNlbmRT
b3VyY2UoKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAg
ICAgIHVpbnQ4X3QqIGJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihoZWFkZXIgKyAx
KTsKICAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUgLSBzaXplb2Yo
bWFjaF9tc2dfaGVhZGVyX3QpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERl
Y29kZXI+KGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4oYm9keSwgYm9keVNpemUsIG51bGxw
dHIsIFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOwogICAgIH0KIAogICAgIGJvb2wgbWVzc2FnZUJv
ZHlJc09PTCA9IGhlYWRlci0+bXNnaF9pZCA9PSBvdXRPZkxpbmVCb2R5TWVzc2FnZUlEOwpAQCAt
NDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVz
c2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWludDhfdCog
bWVzc2FnZUJvZHkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzY3JpcHRvci0+b3V0X29mX2xp
bmUuYWRkcmVzcyk7CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBkZXNjcmlwdG9y
LT5vdXRfb2ZfbGluZS5zaXplOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERl
Y29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFtdKGNvbnN0IHVpbnQ4X3QqIGJ1
ZmZlciwgc2l6ZV90IGxlbmd0aCkgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVy
PihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBbXShjb25zdCB1aW50OF90KiBidWZmZXIs
IHNpemVfdCBsZW5ndGgpIHsKICAgICAgICAgICAgIHZtX2RlYWxsb2NhdGUobWFjaF90YXNrX3Nl
bGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KGJ1ZmZlciksIGxlbmd0aCk7CiAg
ICAgICAgIH0sIFdURk1vdmUoYXR0YWNobWVudHMpKTsKICAgICB9CkBAIC00NTgsNyArNDU4LDcg
QEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2Rlciht
YWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gZGVz
Y3JpcHRvckRhdGE7CiAgICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9z
aXplIC0gKGRlc2NyaXB0b3JEYXRhIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVy
KSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwg
bWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgbnVs
bHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogfQogCiAvLyBUaGUgcmVjZWl2ZSBidWZmZXIg
c2l6ZSBzaG91bGQgYWx3YXlzIGluY2x1ZGUgdGhlIG1heGltdW0gdHJhaWxlciBzaXplLgpAQCAt
NTI2LDcgKzUyNiw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxl
cigpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBkZWNvZGVyLT5z
ZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8SW1wb3J0YW5jZUFzc2VydGlv
bj4oaGVhZGVyKSk7CisgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihtYWtlVW5p
cXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOwogI2VuZGlmCiAKICAgICBpZiAoZGVj
b2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXItPm1lc3NhZ2VO
YW1lKCkgPT0gIkluaXRpYWxpemVDb25uZWN0aW9uIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCA2M2I2YmU3MjcxZTQ0
NTg4Mzk1MDVhYTkxNWUzODczZjg1MTRkZWRkLi43N2FmOWIyODU4NDUyNmJiNzBjN2ZmYzhlMzI1
NmEzYmFhMTNhMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4
L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
cHJvY2Vzc01lc3NhZ2UoKQogICAgIGlmIChtZXNzYWdlSW5mby5pc0JvZHlPdXRPZkxpbmUoKSkK
ICAgICAgICAgbWVzc2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvb2xNZXNz
YWdlQm9keS0+ZGF0YSgpKTsKIAotICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIG51bGxwdHIsIFdU
Rk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29k
ZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBXVEZNb3Zl
KGF0dGFjaG1lbnRzKSk7CiAKICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURk1vdmUoZGVj
b2RlcikpOwogCkBAIC00ODIsNyArNDgyLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0cHV0
TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVXT1VMREJMT0NLKSB7
CiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBtX3BlbmRpbmdPdXRwdXRNZXNzYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxVbml4TWVzc2FnZT4oV1RGTW92ZShvdXRwdXRNZXNzYWdlKSk7CisgICAg
ICAgICAgICBtX3BlbmRpbmdPdXRwdXRNZXNzYWdlID0gbWFrZVVuaXF1ZTxVbml4TWVzc2FnZT4o
V1RGTW92ZShvdXRwdXRNZXNzYWdlKSk7CiAgICAgICAgICAgICBtX3dyaXRlU29ja2V0TW9uaXRv
ci5zdGFydChtX3NvY2tldC5nZXQoKSwgR19JT19PVVQsIG1fY29ubmVjdGlvblF1ZXVlLT5ydW5M
b29wKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChHSU9Db25kaXRp
b24gY29uZGl0aW9uKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlv
biAmIEdfSU9fT1VUKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdPdXRw
dXRNZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9D
b25uZWN0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcAppbmRleCA2NDBmNDUyOTllM2IyNjZlMDI2OWNjY2NjOTQ1MmIzYmE1NzllZmIx
Li41YWRmZDgyYmVjYTQ2ZGIwMjQ0N2U4YmNiNmQzODRjMmMwMTU2YTYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC0xNDAsNyAr
MTQwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKCkKICAgICAgICAgaWYg
KCFtX3JlYWRCdWZmZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgbWVz
c2FnZSwgbGV0J3MgZGlzcGF0Y2ggaXQuCiAgICAgICAgICAgICBWZWN0b3I8QXR0YWNobWVudD4g
YXR0YWNobWVudHMoMCk7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlY29kZXI+KG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51
bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9
IG1ha2VVbmlxdWU8RGVjb2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNp
emUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAgICAgICAgICAgcHJvY2Vz
c0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9Nb2R1bGUuaAppbmRleCBkZDJiNjZhN2NhMTk1OTFiNmVlNjdiOGYyODRmZDI1NGEzODI3
ODVkLi41NjgzNzIxM2RmYmVhZWI0ZDU5ZTkzYzNkNDlmNmM3YWMyZjUzNGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vTW9kdWxlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dNb2R1bGUg
R01vZHVsZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBNb2R1bGUgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1vZHVsZSk7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgTW9kdWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQppbmRleCA4
MjMyZGI0ZWI1NmVhY2I2ZjhjZTg1NTY2NGI4Yjc4MmFiNjUwYTk4Li43YWVlNDdlYWI5NWY1OGE2
YjQxNzg1YzBmNGZmN2YwMmIwNGNmNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhv
c3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlcnZlclBv
cnQpCiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxM
YXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1h
a2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKIAogICAgIE5TRGljdGlvbmFyeSAqb3B0
aW9ucyA9IEB7CiAgICAgICAgIGtDQUNvbnRleHRQb3J0TnVtYmVyIDogQChzZXJ2ZXJQb3J0LnNl
bmRSaWdodCgpKSwKQEAgLTUyLDcgKzUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGlu
Z0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWEKICNp
ZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5
ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxI
b3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykK
IHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVy
SG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1f
bGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKQEAgLTgyLDcg
KzgyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGlu
Z0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGkKICNpZiBQTEFURk9STShNQUMpCiBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpCiB7Ci0gICAgYXV0byBsYXllckhv
c3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwor
ICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4oKTsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBM
YXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+
bV9jb250ZXh0ID0gW0NBQ29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNv
bm5lY3Rpb25JRCgpIG9wdGlvbnM6QHsga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImln
bm9yZSIgfV07CiAgICAgcmV0dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggOTdl
MmRmMzUzYjM2ODIzOTI5YTMxYWU5NTdhMWRkY2RjMjFjMzdkNi4uYjk4Y2E5NGJjOWVmYzIzYjJl
ZDgxOGE1Yjc4NDMzNzIzMTdlOWM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApAQCAtNDksNyArNDksOCBAQCBjbGFzcyBT
aGFyZWFibGVCaXRtYXA7CiBjbGFzcyBXZWJQcm9jZXNzQ29ubmVjdGlvbjsKIHN0cnVjdCBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIFBsdWdpbkNvbnRyb2xsZXJQcm94eSA6IFBs
dWdpbkNvbnRyb2xsZXIgeworY2xhc3MgUGx1Z2luQ29udHJvbGxlclByb3h5IDogcHVibGljIFBs
dWdpbkNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFBsdWdpbkNvbnRyb2xsZXJQcm94eSk7CiAKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDM2NmI5ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUuLmNlODI2N2Qy
ZWU3OGNhY2IzZGRhMGE5YjM3NWJmYWFmYzY4NmVlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjEyLDcgKzIx
Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluCiAKIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZVBsdWdpbkludGVybmFsKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYg
Y3JlYXRpb25QYXJhbWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVudHMs
IHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKQogewotICAgIGF1dG8gcGx1Z2luQ29udHJv
bGxlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJveHk+KHRoaXMs
IGNyZWF0aW9uUGFyYW1ldGVycyk7CisgICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBt
YWtlVW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJhbWV0ZXJz
KTsKIAogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5UHRy
ID0gcGx1Z2luQ29udHJvbGxlclByb3h5LmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVVJMLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJM
LmgKaW5kZXggYmJkNDIzYmNmNTcxNWU0YWQ3MGJmNTJkZWY4YzJjMzBjNDFiZjBmNi4uM2U2MWJi
ZDAwMGUxZjRjZGI2YzJhMzZjYTRmNzVlOTA0ZjgzNWNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElVUkwuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxP
YmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2VVUkwpOwogICAg
ICAgICBiYXNlVVJMLT5wYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGF1dG8gYWJzb2x1
dGVVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwu
Z2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IG1ha2VVbmlx
dWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOwog
ICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNvbHV0ZVVS
TC0+c3RyaW5nKCk7CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVBJOjpVUkwoV1RG
TW92ZShhYnNvbHV0ZVVSTCksIGFic29sdXRlVVJMU3RyaW5nKSk7CkBAIC0xMjEsNyArMTIxLDcg
QEAgY2xhc3MgVVJMIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsKICAg
ICB7CiAgICAgICAgIGlmIChtX3BhcnNlZFVSTCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9wYXJzZWRVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgpLCBt
X3N0cmluZyk7CisgICAgICAgIG1fcGFyc2VkVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVSTD4oV1RG
OjpVUkwoKSwgbV9zdHJpbmcpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIG1fc3RyaW5nOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdElu
dm9jYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0
SW52b2NhdGlvbi5tbQppbmRleCAyNTkyODQ3ZTM0MWEzYjZmNzI4NzU0YmQ3ODhhNjY1M2RkMjIx
NWIwLi5kM2ZmNjIxZWMwZjRhMTBkNzU2NDg3Y2MyMTZmNDk1Y2U4NmQ3MmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2Nh
dGlvbi5tbQpAQCAtODMsNyArODMsNyBAQCBib29sIFJlbW90ZU9iamVjdEludm9jYXRpb246OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZU9iamVjdEludm9jYXRpbwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGJsb2NrU2lnbmF0dXJlKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICByZXN1bHQubV9yZXBseUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlcGx5SW5mbz4ocmVwbHlJRCwgV1RGTW92ZShibG9ja1NpZ25hdHVyZSkpOworICAgICAgICBy
ZXN1bHQubV9yZXBseUluZm8gPSBtYWtlVW5pcXVlPFJlcGx5SW5mbz4ocmVwbHlJRCwgV1RGTW92
ZShibG9ja1NpZ25hdHVyZSkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCmluZGV4IDY1ZGE5ZWZmMDFiNDNlYTU3MTA4MDJmNmM0NmE2ZDAyMDI2NTY5M2UuLjQ4
OTk3NjI5MzJiN2FmNjkyMjFkMDUwYWY2NzQ1ODM2ZmMzODdiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnku
bW0KQEAgLTEwOSw3ICsxMDksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQYWdlOihXZWJLaXQ6Oldl
YlBhZ2UmKXBhZ2UKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CisgICAgX3JlbW90ZU9i
amVjdFJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5Pihz
ZWxmLCBwYWdlKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTE5LDcgKzExOSw3IEBAIC0g
KGlkKV9pbml0V2l0aFdlYlBhZ2VQcm94eTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBhZ2UKICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVP
YmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CisgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsKIAog
ICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIC0gKHZvaWQpX3NlbmRJbnZv
Y2F0aW9uOihOU0ludm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVtb3RlT2Jq
ZWN0SW50CiAgICAgICAgIGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdp
dGhPYmpDVHlwZXM6cmVwbHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlwZSwgInYiKSkK
ICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlv
biBmb3JtYXQ6QCJSZXR1cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBiZSAndm9pZCcu
ICglcykiLCBzZWxfZ2V0TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAgICAgICAgcmVw
bHlJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246
OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVy
ZSk7CisgICAgICAgIHJlcGx5SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJ
bnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIHJlcGx5Qmxv
Y2tTaWduYXR1cmUpOwogCiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGJsb2NrIG9iamVjdCBzbyB3
ZSB3b24ndCB0cnkgdG8gZW5jb2RlIGl0LgogICAgICAgICBpZCBudWxsID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51
SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVu
dUl0ZW0uY3BwCmluZGV4IDdlZDExZTZjMTcxZTIwYmUxZTllYWRiMzA3ZTcxZmM0OGJmZGU4NDku
LmZhZWZlZDJkY2M4MzhlZTk1NzM5MDY1ZGFjNjNmMTM1NjNmMGQzYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNw
cApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdENvbnRleHRN
ZW51SXRlbUNyZWF0ZShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJgogewogICAgIFdlYktp
dENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIE5VTEwpKTsKIAotICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGli
PihpdGVtRGF0YSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNv
bnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4mIHN1Yk1lbnUgPSBpdGVtRGF0YS5zdWJtZW51KCk7CiAgICAgaWYgKCFz
dWJNZW51LmlzRW1wdHkoKSkKICAgICAgICAgd2Via2l0Q29udGV4dE1lbnVJdGVtU2V0U3ViTWVu
dShpdGVtLCBhZG9wdEdSZWYod2Via2l0Q29udGV4dE1lbnVDcmVhdGUoc3ViTWVudSkpKTsKQEAg
LTE0MCw3ICsxNDAsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21l
bnVfaXRlbV9uZXcoR3RrQWN0aW9uKiBhY3Rpb24pCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
R1RLX0lTX0FDVElPTihhY3Rpb24pLCBudWxscHRyKTsKIAogICAgIFdlYktpdENvbnRleHRNZW51
SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51
SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uKTsK
KyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVt
R2xpYj4oYWN0aW9uKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMTY3LDcgKzE2Nyw3IEBA
IFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9t
X2dhY3Rpb24oR0FjdGlvbiogYWN0aW9uCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIXRhcmdl
dCB8fCBnX3ZhcmlhbnRfaXNfb2ZfdHlwZSh0YXJnZXQsIGdfYWN0aW9uX2dldF9wYXJhbWV0ZXJf
dHlwZShhY3Rpb24pKSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0
ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NP
TlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbiwgU3RyaW5nOjpm
cm9tVVRGOChsYWJlbCksIHRhcmdldCk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtl
VW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbiwgU3RyaW5nOjpmcm9tVVRGOChs
YWJlbCksIHRhcmdldCk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTE5NCw3ICsxOTQsNyBA
QCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJv
bV9zdG9ja19hY3Rpb24oV2ViS2l0Q29udAogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBp
dGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9D
T05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAgIENvbnRleHRNZW51SXRlbVR5cGUgdHlw
ZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVja2FibGUoYWN0aW9uKSA/IENoZWNrYWJs
ZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0
TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdl
dExhYmVsKGFjdGlvbikpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxX
ZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFj
dGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldExhYmVsKGFjdGlvbikp
OwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0yMTYsNyArMjE2LDcgQEAgV2ViS2l0Q29udGV4
dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9u
X3dpdGhfbGFiZWwKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9D
T05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lU
RU0sIG51bGxwdHIpKTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250
ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDog
QWN0aW9uVHlwZTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRB
Y3Rpb25UYWcoYWN0aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0ZW0tPnBy
aXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3
ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBTdHJpbmc6OmZyb21V
VEY4KGxhYmVsKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTIzOSw3ICsyMzksNyBAQCBX
ZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9z
dWJtZW51KGNvbnN0IGdjaGFyKiBsYQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFdl
YktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVt
R2xpYj4oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnLCBTdHJp
bmc6OmZyb21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5p
cXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbUJh
c2VBcHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogICAgIGl0ZW0tPnBy
aXYtPnN1Yk1lbnUgPSBzdWJtZW51OwogICAgIHdlYmtpdENvbnRleHRNZW51U2V0UGFyZW50SXRl
bShzdWJtZW51LCBpdGVtKTsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIFdlYktpdENvbnRleHRNZW51
SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2No
YXIqIGxhCiBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfc2VwYXJhdG9yKHZvaWQpCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0g
V0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhU
X01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBhcmF0b3JUeXBlLCBDb250ZXh0
TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBhcmF0b3JUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuaAppbmRleCA1ZWQxNDNhOTk4NTkwNDk2YzMzNzZhNTY5ODgxMTUz
YTZhMDJiMjhjLi5mMzNjYWIzMDVmZWUxMjc0ZmFhN2IyMTgzOGU5YmI3ZWY3NmJiZjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkKICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+CiAgICAgLCBwdWJs
aWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IENsaWVudCB7CiAgICAgICAgIHZp
cnR1YWwgfkNsaWVudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1h
Yy5tbQppbmRleCA3YWQzMzMxNDUzOTE4ODg5ZmQzYjk4OTYzODZhOGJlZDFmNTE5YTE0Li4zOTE0
YTRjMjAxNGE5YTU0YTYzNDg4YTRlNzQzODE5YzZhOGRiM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWFjLm1tCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5n
VVJMCiAKICAgICAgICAgQVNTRVJUKHZpZXdDb250cm9sbGVyKTsKIAotICAgICAgICBwYXltZW50
Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigqcGF5bWVudENvb3JkaW5h
dG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJvbGxlcik7CisgICAgICAg
IHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBtYWtl
VW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXltZW50Q29vcmRp
bmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVyKTsKIAogICAg
ICAgICBBU1NFUlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93KTsKICAg
ICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cgPSBbTlNXaW5kb3cg
d2luZG93V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5oCmluZGV4IDg2ZTc0NGMxMDhkZjRjYmNmNWQwNDc2MDlhY2Y5NmM2ODIzZDZi
MTYuLjRmODM3MDI0ZWU1ZjM0ZmZhMGU2OWJhZjdiM2JmYzg4MWE1MjgwMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5oCkBAIC01NSw2ICs1NSw3IEBAIGVudW0gY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbiA6IHVpbnQ4X3Q7CiB1c2luZyBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPjsKIAogY2xhc3MgQXV0aGVu
dGljYXRpb25NYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRp
b25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXV0aGVudGljYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBBdXRoZW50aWNhdGlvbk1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCA1NmE3
ODNhMGIyM2IyNmEyMGM1YjhmYTRhNTlmMTU3YTRjMDM3YmI3Li4yZDVkMWFmYzA4MjdhNDFhMGJk
ODNiYmFhODBmNzhmNjE0ZjViZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Fu
ZGJveEV4dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlIHR5cGUsIE9wdGlvbmFsPHBpZF90PiBwaWQgPSBXVEY6Om51bGxvcHQpCiAgICAg
ewpAQCAtMTYwLDcgKzE2MSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxIYW5kbGU+CiAgICAgICAgIHJl
dHVybiB7eyB9fTsKIAogICAgIEhhbmRsZSBoYW5kbGU7Ci0gICAgaGFuZGxlLm1fc2FuZGJveEV4
dGVuc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2FuZGJveEV4dGVuc2lvbkltcGw+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5j
ZS5zaXplKCkpOworICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBtYWtlVW5pcXVlPFNh
bmRib3hFeHRlbnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVm
ZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gV1RGTW92
ZShoYW5kbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAK
aW5kZXggMThkYzJmYjhlZDEzZDE1MzQxMmVhMzBlMjkxMTE3OGVhY2VmYzVhZS4uNzA0MzBmNDQz
MTJjOGE1NjJjZTE1ZmM3MzJmNjlkMzg3NmZlOWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIFRleHR1cmVNYXBwZXJMYXll
ciYgdGV4bWFwTGF5ZXIoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllciYgY29tcG9zaXRpb25MYXll
cikKIHsKICAgICBhdXRvJiBjb21wb3NpdGlvblN0YXRlID0gY29tcG9zaXRpb25MYXllckltcGwo
Y29tcG9zaXRpb25MYXllcikuY29tcG9zaXRpb25TdGF0ZSgpOwogICAgIGlmICghY29tcG9zaXRp
b25TdGF0ZS5sYXllcikgewotICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAgICAgIGNvbXBvc2l0aW9uU3Rh
dGUubGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICAgICAgY29t
cG9zaXRpb25TdGF0ZS5sYXllci0+c2V0SUQoY29tcG9zaXRpb25MYXllci5pZCgpKTsKICAgICB9
CiAgICAgcmV0dXJuICpjb21wb3NpdGlvblN0YXRlLmxheWVyOwpAQCAtNDE4LDcgKzQxOCw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIoKQogICAgIGlm
IChtX3Jvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yb290TGF5ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKKyAgICBtX3Jvb3RMYXllciA9IG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOwogICAgIG1fcm9vdExheWVyLT5zZXRNYXNr
c1RvQm91bmRzKGZhbHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNl
KTsKICAgICBtX3Jvb3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDAp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuY3BwCmluZGV4IGNkM2U1N2M2YmNiOWQ4ZGMxZmY5OWNhZDU5YzRlMTNmZjY2MDNh
NmIuLmJjYjIzNTk3NWIxMzNkMmUyNzY3NmQyODNmZTg5MTM4MWEwZDVkMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNw
cApAQCAtNTMsNyArNTMsNyBAQCBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENvbXBv
c2l0b3I6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbAogVGhyZWFkZWRDb21w
b3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlzcGxh
eVJlZnJlc2hNb25pdG9yOjpDbGllbnQmIGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCwgUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGZs
b2F0IHNjYWxlRmFjdG9yLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIHBhaW50RmxhZ3MpCiAg
ICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3BhaW50RmxhZ3MocGFpbnRGbGFncykKLSAg
ICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5M
b29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUoKTsgfSkpCisgICAgLCBtX2NvbXBvc2l0aW5n
UnVuTG9vcChtYWtlVW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5
ZXJUcmVlKCk7IH0pKQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01P
TklUT1IpCiAgICAgLCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZERpc3BsYXlSZWZy
ZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50
KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9i
amVjdE1lc3NhZ2VSZWNlaXZlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9i
amVjdE1lc3NhZ2VSZWNlaXZlci5oCmluZGV4IDFhMDU0NzUwN2VjMWMxYTgxMjQ3MmJiN2ViZDlm
YTBkNGFkMTNhNDguLjA3ZThiYmM5YjVjOWMzYzZjOWQ4ZDZjM2I5NDVlNTM5MzI3Yjg3NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVj
ZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgTlBWYXJpYW50RGF0YTsKIGNsYXNz
IFBsdWdpbjsKIAogY2xhc3MgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVn
aW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAppbmRleCA2MWUxZjk0MDI1MjM4NWRiODA1ZWMxMjJk
ZmYxYzllNGYxYjcyNTYzLi5kNGI1MjRjODI5ZWM2NjcyMWRmMWE3MGQyZDUxM2FlNGViM2YzZDJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0
TWFwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE5QUmVtb3RlT2JqZWN0TWFwOjpucE9iamVj
dFByb3h5RGVzdHJveWVkKE5QT2JqZWN0KiBucE9iamVjdCkKIHVpbnQ2NF90IE5QUmVtb3RlT2Jq
ZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCwgUGx1Z2luKiBwbHVn
aW4pCiB7CiAgICAgdWludDY0X3QgbnBPYmplY3RJRCA9IGdlbmVyYXRlTlBPYmplY3RJRCgpOwot
ICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQobnBPYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1
ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcj4odGhpcywgcGx1Z2luLCBucE9iamVjdElELCBucE9i
amVjdCkucmVsZWFzZSgpKTsKKyAgICBtX3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0
SUQsIG1ha2VVbmlxdWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBP
YmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gbnBPYmplY3RJRDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5kZXggN2IwMmI1ZTEyZjMyYzcyZDM4ZjUy
MDQ1YmI2ZDZhMjNiNjJhZTJlMS4uMjYxZDdhODk2OTMwNmE4OTI1YzRhYjM2ZTQ3OTQ3YjM5NmMx
MjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBz
dGF0aWMgYm9vbCBtb2R1bGVNaXhlc0d0a1N5bWJvbHMoTW9kdWxlKiBtb2R1bGUpCiAKIGJvb2wg
TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQogewotICAgIG1fbW9kdWxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7CisgICAgbV9tb2R1bGUgPSBtYWtlVW5p
cXVlPE1vZHVsZT4obV9wbHVnaW5QYXRoKTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApp
bmRleCBlYTJiZTkzMDhjYmJlNmRkN2ViOGNmMmM1ODhjOGZmNjE5ZWE5OTNjLi45NTUxM2Y0Nzk4
MmZkNjdlZTVmOThkZDc5OTZjODU5OGYxZjQ2M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24uaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBFbmNvZGVyOwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIExheWVyQ2hhbmdlIHsKICAgICAg
ICAgTmFtZUNoYW5nZWQgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMSwKQEAgLTk0LDYg
Kzk1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAg
ICBzdHJ1Y3QgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzKCk7CiAK
ICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CkBAIC0xMDksNiArMTEx
LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAgICBz
dHJ1Y3QgTGF5ZXJQcm9wZXJ0aWVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICBMYXllclByb3BlcnRpZXMoKTsKICAgICAgICAgTGF5ZXJQcm9wZXJ0
aWVzKGNvbnN0IExheWVyUHJvcGVydGllcyYgb3RoZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KaW5kZXggMWYyZGU0ZDAzN2VhM2U4MzAyODdhYjk4Y2IyYThmMjFjNGVj
ZWEyZS4uMGQyMjdmZmMxZDljNTU1NmFhZDkyZTdlZTE1NzY1ZTE2YjM0NDJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTUyLDEzICsxNTIsMTMgQEAgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKGNv
bnN0IExheWVyUHJvcGVydGkKICAgICAvLyBGSVhNRTogTGF5ZXJQcm9wZXJ0aWVzIHNob3VsZG4n
dCBiZSBjb3B5YWJsZTsgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZSBzaG91bGQgY29weSB0
aGUgcmVsZXZhbnQgcHJvcGVydGllcy4KIAogICAgIGlmIChvdGhlci50cmFuc2Zvcm0pCi0gICAg
ICAgIHRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOworICAgICAgICB0cmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKIAogICAg
IGlmIChvdGhlci5zdWJsYXllclRyYW5zZm9ybSkKLSAgICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIu
c3VibGF5ZXJUcmFuc2Zvcm0pOworICAgICAgICBzdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXllclRyYW5zZm9y
bSk7CiAKICAgICBpZiAob3RoZXIuZmlsdGVycykKLSAgICAgICAgZmlsdGVycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOworICAg
ICAgICBmaWx0ZXJzID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigqb3Ro
ZXIuZmlsdGVycyk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTM1NCw3
ICszNTQsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRp
ZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0g
ICAgICAgIHJlc3VsdC50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1bHQudHJhbnNmb3JtID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKICAg
ICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgU3VibGF5ZXJUcmFuc2Zv
cm1DaGFuZ2VkKSB7CkBAIC0zNjIsNyArMzYyLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAgICAg
ICAgcmVzdWx0LnN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5n
ZWRQcm9wZXJ0aWVzICYgSGlkZGVuQ2hhbmdlZCkgewpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyb3VuZGVkUmVj
dCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQu
c2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVk
UmVjdD4ocm91bmRlZFJlY3QpOworICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwogICAgIH0K
IAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBTaGFwZVBhdGhDaGFuZ2VkKSB7
CkBAIC00NzEsNyArNDcxLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc0Zyb250QnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKGhhc0Zyb250QnVmZmVyKSB7Ci0gICAgICAgICAgICBhdXRvIGJhY2tp
bmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KG51bGxw
dHIpOworICAgICAgICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlPihudWxscHRyKTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoKmJhY2tpbmdTdG9yZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgCkBAIC00ODYsNyArNDg2LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgIH0K
IAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBGaWx0ZXJzQ2hhbmdlZCkgewot
ICAgICAgICBhdXRvIGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbnM+KCk7CisgICAgICAgIGF1dG8gZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
RmlsdGVyT3BlcmF0aW9ucz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqZmlsdGVy
cykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlc3VsdC5maWx0ZXJzID0g
V1RGTW92ZShmaWx0ZXJzKTsKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllclRy
ZWVUcgogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRpZXM+
IGxheWVyUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJQcm9wZXJ0aWVzPigpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMg
PSBtYWtlVW5pcXVlPExheWVyUHJvcGVydGllcz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqbGF5ZXJQcm9wZXJ0aWVzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDk3OGM0YmJlZDdiNWNkOTFjYWFlYzE1NGJjOGJhMTRiYWI3NTM0NjEuLmU4MjZhMzBiMTJl
MjRlY2Y0MzBjNjliNzZiMWE2ZjI4ZjViYjk4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTUyMiw3ICs1MjIsNyBAQCBi
b29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNOZXdSb290Tm9kZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOworICAgIG1fc2Nyb2xsaW5n
U3RhdGVUcmVlID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CiAKICAgICBib29s
IGhhc0NoYW5nZWRQcm9wZXJ0aWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ2hhbmdl
ZFByb3BlcnRpZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVh
YmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IGM3MzQ3Yzc5ZTY2OTM4Mzc4NWQwNWQyMjllNDdiNzQ3
YzFmMGNhNTUuLmIyY2Q0ODQ2Njc3Y2U5N2RmYWMyODU4NDkwYzFlYTQzNGY5NjI5MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5j
cHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IGltYWdlID0gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CiAgICAgUmVmUHRyPGNh
aXJvX3Q+IGJpdG1hcENvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoaW1hZ2UuZ2V0KCkp
KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lkIFNo
YXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQ
b2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggOTJmMTA2MmIyOTBmNzc1ZGI1
YWU3ZWQxOTUyYTljYTg1OGFiMzEyMi4uMDE2YWJiZDk5M2UxOGE0NWMwMWE3ZjA0OTdkY2MzMWE1
M2I0MzcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKICAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwgMCwgbV9zaXplLmhlaWdodCgpKTsKICAg
ICBDR0NvbnRleHRTY2FsZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAxLCAtMSk7CiAKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0
KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29udGV4
dC5nZXQoKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW50UmVjdCYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1No
YXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFy
ZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKaW5kZXggNjBmOGYzY2I3MzI4OWI2YjBkMmY0YzM1MTQ2
ZjFjZmVkNDAzNGE4MC4uMTAwMWVlM2U1MjkyZWRjYjUzNmY4MjMzMDNjMmM3NGMyYjFlOTI5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVj
dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGly
ZWN0MkQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRl
eHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBtX2Jp
dG1hcCA9IGNyZWF0ZURpcmVjdDJEU3VyZmFjZSgpOwogICAgIENPTVB0cjxJRDJEMVJlbmRlclRh
cmdldD4gYml0bWFwQ29udGV4dCA9IERpcmVjdDJEOjpjcmVhdGVSZW5kZXJUYXJnZXRGcm9tV0lD
Qml0bWFwKG1fYml0bWFwLmdldCgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShi
aXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29u
dGV4dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0
b21hdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRp
b25DbGllbnQuaAppbmRleCAyOTk1ODEwOTVkZDFkMWIxNWFmZWFiYjRkYWNiZWQwNWQyYmRkMTE0
Li41NDVhN2JlNGQ0ODE5NzEzMjhkMWMzZjc5ZDI3MWVkOWEyMWY4MzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKQEAgLTM1LDYg
KzM1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3Mg
QXV0b21hdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+QXV0b21hdGlvbkNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmlu
ZGV4IDI4ZmFmNjg3MTlhOWQ3MjhkNTFiNmM3NzJkODRlMTdiNjQ5MDk3Y2EuLjJhZTJhNTAzNGMz
YTQxNzFjY2Y0NzdiOTc4NWI3M2E2ZjI0ZGI4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC00MSw2
ICs0MSw3IEBAIGVudW0gQXV0b21hdGlvblNlc3Npb25Ccm93c2luZ0NvbnRleHRPcHRpb25zIDog
dWludDE2X3QgewogfTsKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgSmF2YVNjcmlw
dERpYWxvZ1R5cGUgewogICAgICAgICBBbGVydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggYWYxMDljMWRmNjcwMGRjMjNl
MmUzMzFiMGI1MGVmYmNmZjQyODY2Ny4uODE2ZjcxZTEyNjcwY2IzZDY1YjFlNjMyODAzYTZiNDBl
ZjdkYmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
eHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
eHRNZW51Q2xpZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFt
ZXNwYWNlIEFQSSB7CiAKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggMGY4Y2FiOTczMjlmMDk1N2YzMmI0
N2MyNzc4MWQxZTc4NmZhMTQ3ZC4uOGI0NGEzZjQ1NmM1MzJhZDMzODA2ZWY2OWI0N2VhZDA5NDFk
ZjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaAppbmRleCA5MmIyZDY3NWRmY2EyY2FmZGEyMTFiM2Y3MWM1Nzk4YWZkNDVkNjJhLi5iNGUy
YWRlNzI5ZWE2NmQ4ZGRhOGRkNTAyMTE4YWU0YWJkYjIxODYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaApA
QCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIERpY3Rpb25hcnk7CiAKIGNs
YXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmlu
ZGV4IDAyMzc2ZTFlMTEwZDQ3NmViMmI5MTg1ZTRlMmZjZDhkNmUxMzMyZTEuLmIyZWFjYzliODMy
NTk4YjE3YTk5ZGJkOWQ2N2VmMjRlNDczYWVkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00Niw2ICs0Niw3IEBAIGVudW0gY2xh
c3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3Mg
RG93bmxvYWRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCmluZGV4IGYzMTIzYWYxOTUxNjVhNjY5ZDY2NjgzMThi
ODEyZTkzMzY1ZTZkYzIuLjZkMWUzYjIxMWZlMGRkOTVhOTQ4NTA1ODQxN2RiNGRlMDgyNDBkNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaApAQCAtMzks
NiArMzksNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3Mg
RmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+RmluZENsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCmluZGV4IGM2ZjQ1NzM0MmQxMTE5MDFkY2E2
ZDNjMzA5MDMzN2ZlZTdhMWZlYzIuLmZhZTFkY2QzY2Q2ODgzNTA3ZWZiZTNkOTVkNWQ2ZjcyYTAz
NjlkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0
Y2hlc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0
Y2hlc0NsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVz
cGFjZSBBUEkgewogCiBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZE1hdGNoZXNDbGllbnQoKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKaW5kZXgg
NWIwYzZjY2EyNGVlZmMxYTk1ODE5MWUwZTI3OTRhNDdiNGY1NGU3Yy4uZjBjYTA2MDExMTk4MDJl
ZDM2OWI0ZDA3OGQ4M2M4NjJhNTE2MTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRm9ybUNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xh
c3MgT2JqZWN0OwogCiBjbGFzcyBGb3JtQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Gb3JtQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCmluZGV4IDEz
NzU1MjljZGEyNWYyNWNiYjE3OWJkYzg5ODkxNzFjODllZTg4NTcuLjg5NzRjZDEzMzk0Nzc1MDI3
M2Y0NTBmMGU4Mzk2YzBlNmIxMzIwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBXZWJQ
YWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRnVsbHNjcmVlbkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAg
ICAgICAgQVBJVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElHZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
R2VvbG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDUyNjZiYzJjYTU0Y2YwOTljMjM4Y2FjYzYyMTQ0
Yzk3OTlhMDk3OTcuLjdjNmY1NjI5Y2I2MGU1M2JjN2I4NWFhODg4OWY3MmU2OGQ3YTRjMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJv
dmlkZXIuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlv
blByb3ZpZGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggOTgxYTk4NWJiZGU1ZjFjYjY1Zjk2Y2JiMjEzOWZi
Y2YxOWQ3ZGNlNS4uZTEyMmVlM2VkYjFjNDIxOWQxZDg0MTk5MzIxYTgwMDNkNTJjODIxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5j
cHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6cmVnaXN0ZXJPYnNl
cnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCiAKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZWRDb29raWVN
YW5hZ2VyUHJveHkpOwogCi0gICAgbV9jb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsKKyAg
ICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0gbWFrZVVuaXF1ZTxBUElXZWJDb29raWVN
YW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRoaXMpOwogCiAgICAgYXV0byogcG9vbCA9IG1fb3duaW5n
RGF0YVN0b3JlLT5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCmluZGV4IGZj
ZjQ2MDYxZjZiZmE2ZGNiNzYwZTEyYzY2MzNiNmI0NWYxNTZkZDQuLjExODRhYTQzMmMzYjlmZmNi
MTVkYTVmODI4ZWY0YWM0ZjFhZGIxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUhpc3RvcnlDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBIaXN0b3J5Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IaXN0
b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJY29uRGF0YWJhc2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJY29uRGF0YWJhc2VDbGllbnQuaAppbmRleCBlYTllYmE1MGUxZWZlOGYwMzIxYzRkZmUzYTQ0
NmYwZGNiYjVkOGM5Li5iZTQzYWVlYzU0ZmYyZDRhYmI1YTI4ZmYzNjMxNDVjNDkwYzdlODU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNs
aWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBJY29uRGF0YWJhc2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRp
bmdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oCmluZGV4IDZmOWU3YWY5Yzk4MDkyMzNiNmE1NjVlYzNlMzgwYmUwYWFjZDU2N2UuLjJm
ZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zNyw2ICsz
Nyw3IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNv
bkxvYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgfkljb25Mb2FkaW5nQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggYzM1
ZTdiM2FlNDkzZDlhYzYzY2IzYTRiNTgxZmUzMmZjYjQwYWNlOC4uOWQ0MzQ4OWEyZDYyNTdjYjBj
YWY5MjJiM2ZiMDkzMjk1Y2U5YmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xh
c3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5k
bGVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfkluamVjdGVkQnVuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNs
aWVudC5oCmluZGV4IGNiYjllMGE5NzE0NWJkMTdkZGVmOGUwYmIxNGFmOGMzNzZkZmIzODguLmRi
NWQ5MGMzMWY5Mjc2OWQzMDNhMDFhZDc4YmRhN2ZiZDFhNGQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNs
aWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwog
bmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5kZXggMzQ4ZDZiZjc3MjkyNzJlOGYyYWJhZWMzNzU1YzIw
ZGU1NDJkNjQ1ZC4uYjJlYTQxZDllMmYyZTgxZTJjOWViM2I4Nzc5MWZjM2VmOGMzZjBkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaApAQCAtNTMs
NiArNTMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBMb2Fk
ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfkxvYWRlckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IGE2ZTAx
OWNjNDUxODYzYTQxYWNmYzhiZWE3YmYzMDI4OTZiMWJiNzMuLmNkMjJhMjY3NjQ2OGQxODIzNGE2
MDg0MmZlOWQ5MTY3MWIyMGE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNzMsNiArNzMsNyBAQCBjbGFzcyBOYXZpZ2F0
aW9uUmVzcG9uc2U7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfk5hdmln
YXRpb25DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBvbGljeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBv
bGljeUNsaWVudC5oCmluZGV4IDVlYmU0NDA3NDJhNzY1NDFiMWQ5Y2NmMjk5NWM5YTk1ZmU4NGQ1
YWQuLjZhZThlNzUyMDVmZmZjODY1MmY0ZjliODNiYjNkZTMwZWU2Y2ZhZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3LDcg
QEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIFBvbGljeUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9s
aWN5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
LmgKaW5kZXggZDlkZDBkYjQ2NjM3NzIyYjYwMmIyMGRkZGY2NzM4MTM1ZjY0NmY2Mi4uNzcyZGE2
ZTVhODY5NzdlYzhhZTJkYzA3NTQyZDhmY2YxZTE0OTYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTcxLDYgKzcxLDcgQEAgY2xhc3MgT3BlblBhbmVs
UGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBVSUNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlDbGll
bnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
aW5kZXggYWZjZTcwYjYyN2ZlZWY3YjViZjg4Mjg5YWQ4MjJmMTljMTljZGI2Zi4uM2QwMTYxMWMw
MjlmOTNmNWNlM2U1ZWIzZTMwNjQ3NDg4OWFiOGYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tDb250ZXh0
U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDbGllbnRC
YXNlKiB3a0NsCiAKIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFz
ZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVj
dGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJl
ZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0
SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlz
dG9yeUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV0tDb250
ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250
ZXh0SGlzdG9yeUNsCiAgICAgfTsKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sID0gKldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpOwotICAgIHByb2Nlc3NQb29sLnNl
dEhpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkp
OworICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxIaXN0b3J5Q2xp
ZW50Pih3a0NsaWVudCkpOwogCiAgICAgYm9vbCBhZGRzVmlzaXRlZExpbmtzID0gcHJvY2Vzc1Bv
b2wuaGlzdG9yeUNsaWVudCgpLmFkZHNWaXNpdGVkTGlua3MoKTsKIApAQCAtMjY2LDcgKzI2Niw3
IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4
dFJlZiktPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xp
ZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xp
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2Nh
dGlvbk1hbmFnZXIuY3BwCmluZGV4IDExYjgzNGI0ZWUyYTlhNjg3NjI2YzczMmJmNThhNDg4MjNm
NjMzNGEuLjg4OGI3NWJjN2NlYzg5ZDE2ZTA3ZjYxN2U3YmIyY2UyOTc5ZmE2MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdl
ci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tHZW9sb2NhdGlvbk1hbmFnZXJHZXRU
eXBlSUQoKQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tHZW9sb2Nh
dGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBjb25zdCBXS0dlb2xvY2F0aW9u
UHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFn
ZXJSZWYpLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlk
ZXI+KHdrUHJvdmlkZXIpKTsKKyAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0
UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7
CiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBvc2l0aW9u
KFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tHZW9sb2Nh
dGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYjIyM2Q2Zjg3
YmZhNWU5NmUzZTUwZGEyZGQ3OGZmMGQyZGQ0MTZjZS4uNzY5MjM5OTBhYjViOWVhMjEzODVmMWQz
NTY5ZThiNTBhYTdmNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdLVHlw
ZUlEIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tOb3RpZmljYXRp
b25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYs
IGNvbnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRv
SW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmlj
YXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0
UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikp
OwogfQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNh
dGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0
N2VjNzI2YjBjZTQ0MDU3ZjAwMmI1NDBiZWE3NjhlNDNiMTBhOGQ0Li42MWE2OWIxZjNhNmRhNzQ5
NmFkNDcyNjk3MGI4NWYyYzkxMTgxM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKQEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0
TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAog
ICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q29udGV4dE1lbnVD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAg
ICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4
dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVm
KTsKICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VDb250ZXh0TWVudUNsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5n
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGljTG9n
Z2luZ0NsaWVudChtYWtlVW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4od2tD
bGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtOTk1LDcgKzk5
NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVu
dD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRDbGllbnQobWFrZVVu
aXF1ZTxGaW5kQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5k
TWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXND
bGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5k
TWF0Y2hlc0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRG
aW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRNYXRjaGVzQ2xpZW50Pih3a0Ns
aWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFrZVVu
aXF1ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlSW5qZWN0ZWRCdQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Rm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGll
bnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFn
ZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRl
ckNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJD
bGllbnRCYXNlKgogCiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0b0ltcGwocGFn
ZVJlZik7CiAKLSAgICBhdXRvIGxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVy
Q2xpZW50Pih3a0NsaWVudCk7CisgICAgYXV0byBsb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPExv
YWRlckNsaWVudD4od2tDbGllbnQpOwogCiAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQg
cmlkIG9mIHRoaXMgY29kZSBhbmQgdHJhbnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRM
YXlvdXQgaW5zdGVhZCBvZgogICAgIC8vIGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlz
IHJlcXVpcmVkCkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAg
ICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRQb2xpY3lDbGllbnQobWFrZVVuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50
KSk7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjA3NSw3ICsyMDc1LDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xp
ZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJl
ZiktPnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7Cisg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0Ns
aWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCkBA
IC0yMjkzLDE2NCArMjI5MywxNjYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICB3ZWJQ
YWdlUHJveHktPnNldE5hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxOYXZpZ2F0aW9uQ2xp
ZW50Pih3a0NsaWVudCkpOwogfQogCi12b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1Bh
Z2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgY2xhc3Mg
U3RhdGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGllbnRC
YXNlPiwgcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xp
ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7Ci0gICAgICAg
IH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VJc0xv
YWRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2ls
bENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Citj
bGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNs
aWVudEJhc2U+LCBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0
IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6
ZShjbGllbnQpOworICAgIH0KK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5n
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUlzTG9h
ZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlz
TG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IGRpZENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFu
Z2VUaXRsZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
d2lsbENoYW5nZVRpdGxlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1f
Y2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
aWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVRpdGxlKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VB
Y3RpdmVVUkwoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LndpbGxDaGFuZ2VBY3RpdmVVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUFjdGl2
ZVVSTCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
Q2hhbmdlQWN0aXZlVVJMKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJl
Q29udGVudCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
d2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlSGFz
T25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVu
dC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlT
ZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VI
YXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0
ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxs
Q2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VF
c3RpbWF0ZWRQcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFBy
b2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VF
c3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2Fu
R29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5n
ZUNhbkdvQmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENo
YW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAg
ICB2b2lkIGRpZENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2so
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0Jh
Y2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdv
QmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdp
bGxDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29G
b3J3YXJkKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5n
ZUNhbkdvRm9yd2FyZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2ls
bENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAot
ICAgICAgICB2b2lkIGRpZENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9y
d2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRD
aGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdl
TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Q
cm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IGRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJv
Z3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlk
Q2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGll
bnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8o
KSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFu
Z2VDZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRl
SW5mbykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNl
cnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAg
ICB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmlj
YXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBk
aWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQcm9jZXNzSXNS
ZXNwb25zaXZlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hh
bmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENo
YW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJv
Y2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vz
c0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAg
ICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgfTsKKyAgICB2b2lkIGRpZFN3YXBX
ZWJQcm9jZXNzZXMoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRT
d2FwV2ViUHJvY2Vzc2VzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5k
aWRTd2FwV2ViUHJvY2Vzc2VzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQorfTsK
Kwordm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0
YXRlQ2xpZW50QmFzZSogY2xpZW50KQorewogICAgIGlmIChjbGllbnQpCi0gICAgICAgIHRvSW1w
bChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6bWFrZV91bmlxdWU8U3RhdGVD
bGllbnQ+KGNsaWVudCkpOworICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVP
YnNlcnZlcihtYWtlVW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCiAgICAg
ICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZh
dGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0
ZU1hYy5tbQppbmRleCBmNzYzYWY2MDAzZGE0NjY3MzYzMWU5MWVhODFiODNiNWM5N2EwODdkLi4z
NWVmOTIyMTU0ZTE5NjMwMGU0YjZlZTc1ZDRjOTgxNzg1YmMzZTI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAt
NTIsNyArNTIsNyBAQCAtIChpZClpbml0V2l0aFBhZ2U6KFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQ
cm94eT4mJilwYWdlCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfcGFnZSA9IFdURk1vdmUo
cGFnZSk7Ci0gICAgX29ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2Fk
U3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsKKyAgICBfb2JzZXJ2ZXIgPSBtYWtlVW5pcXVl
PFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmLCBAIlVSTCIpOwogICAgIF9wYWdl
LT5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKl9vYnNlcnZlcik7CiAKICAgICByZXR1cm4g
c2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1Zp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKaW5k
ZXggNzhiYmEzOTY3YjYxOTdjMGU4YTdjMjNhYzNkYThjZDEzMmU3YzRiZS4uOTY0MDZkMGFhZmJj
MzU1NTYwYjVkMzE5N2EwMGMyNWY1NzU5YTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKQEAgLTY4LDUgKzY4LDUgQEAgdm9pZCBXS1ZpZXdTZXRW
aWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3LCBjb25zdCBXS1ZpZXdDbGllbnRCYXNlKiBjbGllbnQp
CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsKKyAgICB0b0ltcGwodmlldyktPnNldENs
aWVudChtYWtlVW5pcXVlPFZpZXdDbGllbnQ+KGNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIubW0KaW5kZXggMjY1NTU0ZjNkN2YyZDdhZDI5NmU5ZjNmOWZhMTEzODhiNzhm
ZDU2NC4uNDk2Nzc4OGExMDU3ZmE4ODJhMGEwMWM4ZGJmNTAwMmU5MjI2ZWMwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MDIsNyArNjAyLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKV9pbml0V2l0aFBhZ2VSZWY6KFdLUGFnZVJlZilwYWdlUmVmCiAKICAgICBfcGFnZSA9IFdl
YktpdDo6dG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgX3BhZ2VMb2FkU3RhdGVPYnNlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYpOworICAg
IF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0
ZU9ic2VydmVyPihzZWxmKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVy
KCpfcGFnZUxvYWRTdGF0ZU9ic2VydmVyKTsKIAogICAgIEFTU0VSVCghYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlck1hcCgpLmNvbnRhaW5zKF9wYWdlLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXgg
MTM3MmNhNDEwNmM3NmUxZDYyMzVkNjE0YWQ1YzFlNmE1NmVhMDVhMS4uODFkMzcwM2IwZWVhODJl
NWU2YzYyZjMyMjJhYzRlNjgxOWY2YjNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMTA4LDcgKzEwOCw3
IEBAIC0gKHZvaWQpYWRkT2JzZXJ2ZXI6KGlkPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KW9i
c2VydmVyCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V0tIVFRQQ29va2ll
U3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKICAgICBfY29v
a2llU3RvcmUtPnJlZ2lzdGVyT2JzZXJ2ZXIoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCmluZGV4IGJhY2U1YWM3ZWMwMGIxODk4YWQyZGY3MmNiMWIxOTQ0NjdkY2VjOWQuLmViYWM1
NjhlM2RkYjY4NzBmODViMDE1MDhlYzIwZmFhYjdmMjA0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zNzMsNyArMzcz
LDcgQEAgLSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiAtICh2
b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxv
YWREZWxlZ2F0ZQogewogICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsK
LSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNzUG9v
bC0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Pihk
b3dubG9hZERlbGVnYXRlKSk7CiB9CiAKIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9h
dXRvbWF0aW9uRGVsZWdhdGUKQEAgLTM4NCw3ICszODQsNyBAQCAtIChpZCA8X1dLQXV0b21hdGlv
bkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uRGVs
ZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KWF1dG9tYXRpb25EZWxlZ2F0ZQogewog
ICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUgPSBhdXRvbWF0aW9uRGVsZWdhdGU7Ci0gICAgX3Byb2Nl
c3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRv
bWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bv
b2wtPnNldEF1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGll
bnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxlZ2F0ZSkpOwogfQogCiAtICh2b2lkKV93YXJtSW5pdGlh
bFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA4YjZkZjI0Zjg5NTJkODRmNjA3
NTQ0YzZhMzFhMmRkMWI4YWEzNTVkLi5hMDBiMjAzY2M5MDU5MzAxYmVjYzQ2MWQ2MWI0NjczMmI4
NTYxMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0xMTgsNiArMTE4LDcgQEAgLSAo
dm9pZClyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzCiB9CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VI
YW5kbGVyRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlKFdLVXNlckNvbnRlbnRDb250cm9sbGVyICpj
b250cm9sbGVyLCBpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciwgTlNTdHJpbmcg
Km5hbWUpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC0xNDUsNyArMTQ2
LDcgQEAgcHJpdmF0ZToKIAogLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5n
ICopbmFtZQogewotICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdh
dGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29u
dGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6Oldl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFu
ZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQ
STo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgaWYgKCFfdXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdl
dCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0
aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBu
YW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFtZV07CiB9CkBAIC0yMjksNyAr
MjMwLDcgQEAgLSAodm9pZClfcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzQXNzb2NpYXRlZFdpdGhV
c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFcKIAogLSAodm9pZClfYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFu
ZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRl
bnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6
OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRN
ZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSks
IG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CisgICAgYXV0byBo
YW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlx
dWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRs
ZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOwog
ICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVz
c2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5h
bWVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggMDM5MWExOTkyZTM1MzJkYmU1ZjIxZGI2OTFkZDgxMDhhYWUyYTY2Yy4uMDhmNDJl
YzhiMTNiZjcwYmQyYjZiMzdiYzdkODE1NjgyM2Q2YzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03NTcsNyArNzU3LDcgQEAgLSAo
dm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICopY29uZmlndXJhdGlvbgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgX2ltcGwg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nl
c3NQb29sLCBwYWdlQ29uZmlndXJhdGlvbi5jb3B5UmVmKCkpOworICAgIF9pbXBsID0gbWFrZVVu
aXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNv
bmZpZ3VyYXRpb24uY29weVJlZigpKTsKICAgICBfcGFnZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAg
ICAgX2ltcGwtPnNldEF1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2V0cyh0cnVlKTsKQEAg
LTc2OSwxNCArNzY5LDE0IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjoo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIAogICAgIF9wYWdlLT5zZXRB
cHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KGNvbmZpZ3VyYXRpb24uX2FwcGxpY2F0
aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpOwogCi0gICAgX25hdmlnYXRpb25TdGF0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNlbGYpOworICAgIF9uYXZp
Z2F0aW9uU3RhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxmKTsK
ICAgICBfcGFnZS0+c2V0TmF2aWdhdGlvbkNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVO
YXZpZ2F0aW9uQ2xpZW50KCkpOwogCi0gICAgX3VpRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7Ci0gICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CisgICAgX3VpRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdl
YktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7CisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFrZVVu
aXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50
PihzZWxmKSk7CiAKLSAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKKyAgICBfaWNvbkxvYWRpbmdEZWxl
Z2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKIAog
ICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IFlFUzsKIApAQCAtMzQyNSw3ICszNDI1LDcgQEAgLSAo
dm9pZClzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczooQk9PTClhbGxvd3NC
YWNrRm9yd2FyZE5hdmlnYXRpb24KICAgICBfYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsKIAogICAgIGlmIChh
bGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyAmJiAhX2dlc3R1cmVDb250cm9sbGVy
KSB7Ci0gICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAgICAgIF9nZXN0dXJlQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7
CiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxmLCBb
c2VsZiBzY3JvbGxWaWV3XSk7CiAgICAgICAgIGlmIChXS1dlYlZpZXcgKmFsdGVybmF0ZVdlYlZp
ZXcgPSBbX2NvbmZpZ3VyYXRpb24gX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVy
ZXNdKQogICAgICAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyLT5zZXRBbHRlcm5hdGVCYWNrRm9y
d2FyZExpc3RTb3VyY2VQYWdlKGFsdGVybmF0ZVdlYlZpZXctPl9wYWdlLmdldCgpKTsKQEAgLTU2
NzgsNyArNTY3OCw3IEBAIC0gKHZvaWQpX3NldElucHV0RGVsZWdhdGU6KGlkIDxfV0tJbnB1dERl
bGVnYXRlPilpbnB1dERlbGVnYXRlCiAgICAgfTsKIAogICAgIGlmIChpbnB1dERlbGVnYXRlKQot
ICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+
KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xp
ZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChudWxs
cHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQppbmRleCA3YWQwNzNiOGNkNmRkNDIwM2UxYTc2MDU4
ZjdjN2RmMmE5ZjhhZDdiLi4yYWRlZWE3NjBjNjk4YjE4YWU1OTFlNTcwNTcxMzI5NWYyNGM1NmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21h
dGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F1dG9tYXRpb25TZXNzaW9uLm1tCkBAIC03Miw3ICs3Miw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0
aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQogLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9X
S0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0
cik7CisgICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IG1ha2VVbmlxdWU8V2ViS2l0
OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CiB9CiAKIC0g
KE5TU3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCBiMzdiMDUwNTNmMTI0YWNiNzBmZDZhZGU2ZGY0MjBm
ZTgyNWQ1NGNmLi4wZGQ0MDlhNDNkZTY1MzAwYzlmMGNjODU0NDdhYzJmNzEzZWM5NDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0zOCw2ICsz
OCw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBfV0tSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eUNsaWVudCBmaW5hbCA6IHB1YmxpYyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgX1dLUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQoX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIgKmNvbnRyb2xsZXIpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCkBA
IC03NSw3ICs3Niw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0gV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6Y3JlYXRlKCk7Ci0gICAgbV9yZW1vdGVJbnNwZWN0b3JDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQ+KHNlbGYp
OworICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ol9XS1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKICAgICBtX3JlbW90ZUluc3BlY3Rv
clByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0b3JDbGllbnQuZ2V0KCkpOwogCiAgICAg
cmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcAppbmRleCA4ZDJmODhhZTAwMzJhMGQ5MzQ1ZTY4MDBhOTc4NThiNDI4YTRk
NmQ5Li4wNjg3MGQyMWRlZTdjYTRmODlkYjllMzQyZjZmMGY1ZmQzZjU0YTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE2
OTEsNyArMTY5MSw3IEBAIGlubGluZSB2b2lkIHJlYWR5U1FMaXRlU3RhdGVtZW50KHN0ZDo6dW5p
cXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIFNRCiAgICAgICAgIHN0YXRlbWVu
dCA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAgIHN0YXRl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYiwgc3RyKTsKKyAgICAg
ICAgc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KGRiLCBzdHIpOwogICAg
ICAgICBpZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAg
TE9HX0VSUk9SKCJQcmVwYXJpbmcgc3RhdGVtZW50ICVzIGZhaWxlZCIsIHN0ci5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuaAppbmRleCBiYWJkOGE5ODI5ZmI4MGQxOTg1MmVjOTc0YWVlYTcwY2VlMGI5MTU4
Li44YThjYWJiZDUzYzFlNjVmNzBhZGQwODVkNGY1NWVhMzEwMTE2MDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDQsNiArNDQs
NyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSWNv
bkRhdGFiYXNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5JY29uRGF0YWJhc2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKQEAgLTU4LDYg
KzU5LDcgQEAgY2xhc3MgSWNvbkRhdGFiYXNlIHsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBJY29u
U25hcHNob3QgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
CiAgICAgICAgIEljb25TbmFwc2hvdCgpID0gZGVmYXVsdDsKIApAQCAtMTE4LDYgKzEyMCw3IEBA
IGNsYXNzIEljb25EYXRhYmFzZSB7CiAgICAgfTsKIAogICAgIGNsYXNzIFBhZ2VVUkxTbmFwc2hv
dCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAg
ICAgUGFnZVVSTFNuYXBzaG90KCkgPSBkZWZhdWx0OwogCkBAIC0xNzIsNiArMTc1LDcgQEAgY2xh
c3MgSWNvbkRhdGFiYXNlIHsKICAgICB9OwogCiAgICAgY2xhc3MgTWFpblRocmVhZE5vdGlmaWVy
IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAg
ICBNYWluVGhyZWFkTm90aWZpZXIoKQogICAgICAgICAgICAgOiBtX3RpbWVyKFJ1bkxvb3A6Om1h
aW4oKSwgdGhpcywgJk1haW5UaHJlYWROb3RpZmllcjo6dGltZXJGaXJlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLmNwcAppbmRleCBkMmFmNjRiYWQ4NmE4YTMzZjEzMzU0NzI1ODFiNzAyZTQxYTY3ZWMy
Li4yMTg2NjA0NTE5Mjc2OWJlNmRmZjg1OWE2MzIwNDNkNTEzNTY5YzE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1Rf
U0lHTkFMXSA9IHsgMCwgfTsKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbiwgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbiwgR19UWVBFX09CSkVDVCkKIAogY2xhc3Mg
QXV0b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoV2ViS2l0QXV0b21hdGlvblNlc3Npb24q
IHNlc3Npb24pCiAgICAgICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCkBAIC0yMjMsNyArMjI0LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uID0gYWRvcHRSZWYobmV3IFdl
YkF1dG9tYXRpb25TZXNzaW9uKCkpOwogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldFNl
c3Npb25JZGVudGlmaWVyKFN0cmluZzo6ZnJvbVVURjgoc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgp
KSk7Ci0gICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKKyAgICBzZXNzaW9uLT5wcml2
LT5zZXNzaW9uLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4o
c2Vzc2lvbikpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkRpc3Bv
c2UoR09iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDk3ZTkyNTYw
MTc3MzdiNzY2NWFjYzhlYjJmMzU4ZWIyZWM1OTAwYjkuLjI4NThkZjZmMzRkNGZhNjIxMjA5YmYx
ZWIxZTEwODg1YWQwNWU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTU2LDYgKzU2
LDYgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWw6IHB1YmxpYyBBUEk6OkNvbnRleHRN
ZW51Q2xpZW50IHsKIAogdm9pZCBhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyhXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNl
dENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdl
YlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRDb250ZXh0TWVu
dUNsaWVudChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCmluZGV4IGQzMmI1OWM1NDc2
NjdhN2VjODc3MTgxMDUyYmQxYTc0OWMwZGJjMWMuLmEzNzNiMjk0NTcxNjc5MWEyZDRjMzA3YmQ1
ZTBhOTI5YzgxNDBhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmNwcApAQCAtNTYsNSArNTYsNSBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbgogCiB2b2lkIGF0
dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0
KiB3ZWJDb250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJD
b250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJr
aXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZWFkNGYyMzQ5OTE2NzA0
ZDE3ZDFmMjMwNjQwODlmN2ExYTA0NTk0Zi4uZTc3MWRkNzE4N2U1ODU5YWRiZDVhMDE2ZjhjYTkz
NWQyOGU4NGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcApAQCAtMTE4LDUgKzExOCw1IEBAIGNsYXNz
IERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgewogCiB2
b2lkIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNv
bnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQp
LnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdlYkNv
bnRleHQpKTsKKyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCku
c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggMjE4MDgzZTc2OTdhNTEzOThmMmVlMDk0Y2Ri
MDY4YzIwODM3YjFmYS4uOWI1ODE4YTk4MzZmMzc2MmQ4OTYyMmUzNjJjM2ZjOGIyZDNlYmZkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNv
bkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0yNjcsOCArMjY3LDggQEAgdm9pZCB3ZWJraXRGYXZp
Y29uRGF0YWJhc2VPcGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0
cmluZyYgcGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJp
dmF0ZSogcHJpdiA9IGRhdGFiYXNlLT5wcml2OwotICAgIHByaXYtPmljb25EYXRhYmFzZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SWNvbkRhdGFiYXNlPigpOwotICAgIHByaXYtPmljb25EYXRhYmFzZS0+
c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SWNvbkRhdGFiYXNlQ2xpZW50PihkYXRh
YmFzZSkpOworICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG1ha2VVbmlxdWU8SWNvbkRhdGFiYXNl
PigpOworICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
SWNvbkRhdGFiYXNlQ2xpZW50PihkYXRhYmFzZSkpOwogICAgIEljb25EYXRhYmFzZTo6ZGVsYXlE
YXRhYmFzZUNsZWFudXAoKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldEVuYWJsZWQodHJ1
ZSk7CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdl
YlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRy
b2xsZXIuY3BwCmluZGV4IDRmOTgwZDRlZTI1OGFjYWM0NTU4MzIzY2E3YmQ3MWNjZGYzYmVlYjEu
Ljc2NzVjOWNiM2E1ZWRhZjg4NjRkMTdhMTc5MjE3Y2I5NDIzMzY1YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxl
ci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRGaW5kQ29udHJvbGxl
ckNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
ZmluZF9jb250cm9sbGVyX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKICAg
ICBXZWJLaXRGaW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIgPSBXRUJLSVRfRklORF9DT05U
Uk9MTEVSKG9iamVjdCk7Ci0gICAgZ2V0UGFnZShmaW5kQ29udHJvbGxlcikuc2V0RmluZENsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRDb250cm9sbGVyKSk7CisgICAgZ2V0
UGFnZShmaW5kQ29udHJvbGxlcikuc2V0RmluZENsaWVudChtYWtlVW5pcXVlPEZpbmRDbGllbnQ+
KGZpbmRDb250cm9sbGVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVy
R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKaW5kZXggMTM0ZDFjNmNlYmU1NjdmYzU0
ZDk3MGY4NzZiZTAyOTMxZDMyODIyZC4uYmM2N2EzNTdkYzA3NDQ1YTM1MjhmODBmMGFiZDc5ZDA3
YzNiYzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Rm9ybUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Rm9ybUNsaWVudC5jcHAKQEAgLTQ4LDUgKzQ4LDUgQEAgY2xhc3MgRm9ybUNsaWVudCBm
aW5hbCA6IHB1YmxpYyBBUEk6OkZvcm1DbGllbnQgewogCiB2b2lkIGF0dGFjaEZvcm1DbGllbnRU
b1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFn
ZSh3ZWJWaWV3KS5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4od2Vi
VmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1DbGllbnQo
bWFrZVVuaXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2Vy
LmNwcAppbmRleCAyZTE1OTQ1ZGZhZDI5YzMxNTUwZDFhZDNjNGRkMTQ5OGJlN2I3MjA0Li44Y2Jh
NDIyZWQ1ZTM4YmY4NGM3NjA1OTRkNmNmMGY2NTg4Y2JlYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFu
YWdlci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlv
bk1hbmFnZXJTdGFydChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIpCiAgICAgfQog
CiAgICAgaWYgKCFtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIpIHsKLSAgICAgICAgbWFu
YWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZW9jbHVlR2Vv
bG9jYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3Zp
ZGVyID0gbWFrZVVuaXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICAgICAg
bWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3kobWFu
YWdlci0+cHJpdi0+aGlnaEFjY3VyYWN5RW5hYmxlZCk7CiAgICAgfQogICAgIG1hbmFnZXItPnBy
aXYtPmdlb2NsdWVQcm92aWRlci0+c3RhcnQoW21hbmFnZXJdKEdlb2xvY2F0aW9uUG9zaXRpb24m
JiBjb3JlUG9zaXRpb24sIE9wdGlvbmFsPENTdHJpbmc+IGVycm9yKSB7CkBAIC0zMTIsNyArMzEy
LDcgQEAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiB3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJD
cmVhdGUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHIKIHsKICAgICBhdXRvKiBtYW5hZ2VyID0gV0VC
S0lUX0dFT0xPQ0FUSU9OX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0dFT0xPQ0FU
SU9OX01BTkFHRVIsIG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5wcml2LT5tYW5hZ2VyID0gcHJv
eHk7Ci0gICAgcHJveHktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Q
cm92aWRlcj4obWFuYWdlcikpOworICAgIHByb3h5LT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPEdl
b2xvY2F0aW9uUHJvdmlkZXI+KG1hbmFnZXIpKTsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxv
YWRpbmdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
SWNvbkxvYWRpbmdDbGllbnQuY3BwCmluZGV4IGI4ZjAxZmIyNGZmMjc2NTRjMGFkNjA5YWRkMzI0
MTk1ZWU0MWNhNTkuLjY1ZmQ3YzY5OTIzODgwMTE1NThjNjdkZWIyNWZkYWEyN2Y2NmM1MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2Fk
aW5nQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRJY29uTG9hZGluZ0NsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxv
YWRpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAg
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBAIC02MSw1ICs2Miw1IEBAIGNsYXNzIEljb25Mb2Fk
aW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgewogCiB2b2lkIGF0dGFj
aEljb25Mb2FkaW5nQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAg
d2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZp
ZXdHZXRQYWdlKHdlYlZpZXcpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxv
YWRpbmdDbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApp
bmRleCBhOTNmZjI1YjM5YTI5MjU2MDBkMmM0YWVjY2VjYmM3NTcwZDVkZjNkLi45MjYyYTg0ZGVj
ZTI1YmYwYmRmNWM1OWI0OGQwMDI1ODUyZjM2YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGll
bnQuY3BwCkBAIC0xNzksNSArMTc5LDUgQEAgY2xhc3MgV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGll
bnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudCB7CiAKIHZvaWQgYXR0
YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29u
dGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCku
c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJbmplY3RlZEJ1
bmRsZUNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNz
UG9vbCh3ZWJDb250ZXh0KS5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPFdlYktp
dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlci5jcHAKaW5kZXggMjM2ZTgxYzEzOTBiM2VjM2MxNTQ5MTg2ODZiYWZhNWU1Mzg2NDY4
Ny4uNTUxNjM2NDQ3NzU1NzQ3YjcwYWM1ZTc2YjFkMTA0ZDYxYzBiNWNhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlm
aWNhdGlvblByb3ZpZGVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBXZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlcjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdl
clBybwogICAgICwgbV9ub3RpZmljYXRpb25NYW5hZ2VyKG5vdGlmaWNhdGlvbk1hbmFnZXIpCiB7
CiAgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uTWFuYWdlcik7Ci0gICAgbV9ub3RpZmljYXRpb25N
YW5hZ2VyLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvblByb3ZpZGVy
PigqdGhpcykpOworICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlkZXIobWFrZVVu
aXF1ZTxOb3RpZmljYXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKIH0KIAogV2ViS2l0Tm90aWZpY2F0
aW9uUHJvdmlkZXI6On5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuaAppbmRleCA5ZTU4YmNiMGIxYWIzM2ZhYWQ5N2ZjZjg1OTgxMjdlNjEwYTEyMzM2
Li4zNmI3ODM0Mzg4MGQ5NjAzMGU3MmZmYWExNTM3NDhlZTViMWUzYThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9uOwog
Y2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViS2l0Tm90aWZp
Y2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiwgV2ViS2l0V2ViQ29u
dGV4dCopOwogICAgIH5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDVi
Y2VmNjhmNjVkMjMxODk4MGNmOTFkYWU1OTNkNzY2NzE0OGE5ODkuLjg5NmUxM2RhZDk3YmU3ZmY3
NzZjMDNiZjZlN2QwMjc4MmUwMzIxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIyNSw2ICsyMjUsNiBAQCBjbGFz
cyBVSUNsaWVudCA6IHB1YmxpYyBBUEk6OlVJQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hVSUNsaWVu
dFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQ
YWdlKHdlYlZpZXcpLnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdlYlZp
ZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRVSUNsaWVudChtYWtl
VW5pcXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3Bw
CmluZGV4IDQ4YjM4ZWFjMDhkOTEyYzk2MzllZjU1MDk0YjEwZjFmZmFkMWQ5ZjkuLjI1NWU4ZTVh
Njc5Mjc2NDgzM2QzN2RhZmY5ZjU3OTBmMDg1OTY2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcApAQCAtMTgyLDYgKzE4Miw3IEBAIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X3JlbW92ZV9hbGxfc2NyaXB0cyhXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIG1hCiB9CiAKIGNs
YXNzIFNjcmlwdE1lc3NhZ2VDbGllbnRHdGsgZmluYWwgOiBwdWJsaWMgV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgU2NyaXB0TWVzc2FnZUNsaWVudEd0ayhXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIG1h
bmFnZXIsIGNvbnN0IGNoYXIqIGhhbmRsZXJOYW1lKQogICAgICAgICA6IG1faGFuZGxlck5hbWUo
Z19xdWFya19mcm9tX3N0cmluZyhoYW5kbGVyTmFtZSkpCkBAIC0yMzgsNyArMjM5LDcgQEAgZ2Jv
b2xlYW4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdl
X2hhbmRsZXIoV2ViS2l0VXNlckMKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxT
RSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAg
ICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSks
IEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgICAgIFdlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3Rr
PihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVu
dFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNlckNv
bnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQo
KSk7CiB9CiAKQEAgLTI4OCw3ICsyODksNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9pbl93b3JsZChXZQogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHdvcmxkTmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1h
bmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdv
cmxkKHdvcmxkTmFtZSkpOworICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmlu
Zzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CiAg
ICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNj
cmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGJm
YzU2N2NlZDViYjE3MDFkM2FjOTI3NjdhZWJhYTQyZGIyYzM5N2EuLmE1N2RiNDJhNDE5ZmJjYzdi
ZWZkNWY3Yjk2NGIwMDYwY2ZhNjVlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0xOTgsNiArMTk4LDcgQEAg
c3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiBjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDog
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViS2l0QXV0b21hdGlvbkNsaWVudChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgICAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0
KQpAQCAtMzY3LDkgKzM2OCw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0
KTsKIAogICAgIHByaXYtPmdlb2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRHZW9s
b2NhdGlvbk1hbmFnZXJDcmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpKTsKLSAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92aWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYtPnBy
b2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSwgd2Vi
Q29udGV4dCk7CisgICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdl
YktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdlYkNvbnRleHQpOwogI2lmIFBMQVRGT1JN
KEdUSykgJiYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgcHJpdi0+cmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXI+KHdlYkNvbnRleHQpOworICAgIHByaXYtPnJlbW90ZUluc3BlY3RvclByb3Rv
Y29sSGFuZGxlciA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPih3
ZWJDb250ZXh0KTsKICNlbmRpZgogfQogCkBAIC02NzgsNyArNjc5LDcgQEAgdm9pZCB3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0LCBnYm9vbGUKICAgICAgICAgICAgIGdfd2FybmluZygiTm90IGVuYWJsaW5nIGF1dG9tYXRp
b24gb24gV2ViS2l0V2ViQ29udGV4dCBiZWNhdXNlIHRoZXJlJ3MgYW5vdGhlciBjb250ZXh0IHdp
dGggYXV0b21hdGlvbiBlbmFibGVkLCBvbmx5IG9uZSBpcyBhbGxvd2VkIik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0QXV0b21hdGlvbkNsaWVudD4oY29udGV4dCk7
CisgICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPFdl
YktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQpOwogICAgIH0gZWxzZQogICAgICAgICBjb250
ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBi
MjM5YWM0ZTE5ZTYzZDMzYTg2OWRlZmI2NmZjM2MwYjQ1MDBiNzg1Li43NDMwYzNmY2ZkNTRjNDZl
ZmE2NGUxMmZkOTdkZTVhOTMyOThhNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjAxLDYgKzIwMSw3IEBAIGNsYXNz
IFBhZ2VMb2FkU3RhdGVPYnNlcnZlcjsKICNpZiBQTEFURk9STShXUEUpCiBzdGF0aWMgdW5zaWdu
ZWQgZnJhbWVEaXNwbGF5Q2FsbGJhY2tJRDsKIHN0cnVjdCBGcmFtZURpc3BsYXllZENhbGxiYWNr
IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRnJhbWVEaXNwbGF5
ZWRDYWxsYmFjayhXZWJLaXRGcmFtZURpc3BsYXllZENhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRl
ciB1c2VyRGF0YSA9IG51bGxwdHIsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lOb3RpZnlGdW5jdGlv
biA9IG51bGxwdHIpCiAgICAgICAgIDogaWQoKytmcmFtZURpc3BsYXlDYWxsYmFja0lEKQogICAg
ICAgICAsIGNhbGxiYWNrKGNhbGxiYWNrKQpAQCAtMjI3LDYgKzIyOCw3IEBAIHN0cnVjdCBGcmFt
ZURpc3BsYXllZENhbGxiYWNrIHsKICNlbmRpZiAvLyBQTEFURk9STShXUEUpCiAKIHN0cnVjdCBf
V2ViS2l0V2ViVmlld1ByaXZhdGUgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICB+X1dlYktpdFdlYlZpZXdQcml2YXRlKCkKICAgICB7CiAgICAgICAgIC8vIEZvciBt
b2RhbCBkaWFsb2dzLCBtYWtlIHN1cmUgdGhlIG1haW4gbG9vcCBpcyBzdG9wcGVkIHdoZW4gZmlu
YWxpemluZyB0aGUgd2ViVmlldy4KQEAgLTMyNiw2ICszMjgsNyBAQCB2b2lkIHdlYmtpdFdlYlZp
ZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KIAogY2xh
c3MgUGFnZUxvYWRTdGF0ZU9ic2VydmVyIGZpbmFsIDogcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9i
c2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBtX3dl
YlZpZXcod2ViVmlldykKQEAgLTM5OSw2ICs0MDIsNyBAQCBjbGFzcyBQYWdlTG9hZFN0YXRlT2Jz
ZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewogCiAjaWYgUExB
VEZPUk0oV1BFKQogY2xhc3MgV2ViVmlld0NsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OlZpZXdD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFdlYlZpZXdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBtX3dl
YlZpZXcod2ViVmlldykKQEAgLTcyNSw3ICs3MjksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgd2Via2l0V2ViQ29udGV4dENy
ZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHByaXYtPnVz
ZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOwogCi0gICAgcHJpdi0+
bG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHdl
YlZpZXcpOworICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IG1ha2VVbmlxdWU8UGFnZUxvYWRTdGF0
ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdlYlZpZXcpLnBhZ2VMb2FkU3RhdGUo
KS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVyKTsKIAogICAgIC8vIFRoZSByZWxhdGVk
IHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlvbi4KQEAgLTc0MSw3ICs3
NDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogI2VuZGlmCiAKICNpZiBQTEFURk9STShXUEUpCi0gICAgcHJpdi0+dmlldy0+c2V0Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmlldykpOworICAgIHByaXYt
PnZpZXctPnNldENsaWVudChtYWtlVW5pcXVlPFdlYlZpZXdDbGllbnQ+KHdlYlZpZXcpKTsKICNl
bmRpZgogCiAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBhZnRlciBhdHRhY2hVSUNsaWVudFRvVmll
dygpIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudCgpIGNhbGxzIHNldENhblJ1bk1v
ZGFsKCkgd2l0aCB0cnVlLgpAQCAtMzcwMSw2ICszNzA1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dl
Yl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBj
aGFyKgogfQogCiBzdHJ1Y3QgVmlld1NhdmVBc3luY0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJEYXRhOwogICAgIEdS
ZWZQdHI8R0ZpbGU+IGZpbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBmMDlkNmM3ZTkyMDY4M2E3NTY2NTI3Njk2
N2U3NDdjYzZjZWViNDgxLi4wNmIzYjgzNjA2NWQ5ZjY2YTA3OThhMjA5NTUxM2NhODY4YjMxYzU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwo
R3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5j
dGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3
V2lkZ2V0KSksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9X
RUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJlZ2lv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1v
amlDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1v
amlDaG9vc2VyLmNwcAppbmRleCAzMWUwOTczZmUxMDAzYzZlYTY1MjMwNjFhNjdjOTQ5ZDUzZWJk
NmI3Li4yZDFjMmNiMzY4YTk5MzMxNjk3NDI0NmEwZWQ1OTljMjhkY2FlNmNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIu
Y3BwCkBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RW1vamlDaG9vc2VyU2V0
dXBFbW9qaVNlY3Rpb25zKFdlYktpdEVtb2ppQ2hvb3NlciogY2hvb3NlciwgR3QKICAgICAgICAg
Y2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbnVsbHB0cjsKICAgICB9Owog
Ci0gICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsKKyAgICBjaG9v
c2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBtYWtlVW5pcXVlPENhbGxiYWNrVGlt
ZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVs
YXRlU2VjdGlvbnNUaW1lci0+c2V0UHJpb3JpdHkoR19QUklPUklUWV9ERUZBVUxUX0lETEUpOwog
ICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0TmFtZSgiW1dlYktp
dEVtb2ppQ2hvb3Nlcl0gcG9wdWxhdGUgc2VjdGlvbnMgdGltZXIiKTsKICAgICBjaG9vc2VyLT5w
cml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnN0YXJ0UmVwZWF0aW5nKHsgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMGY2NzQ4NjQ1MmNk
MWZhODdhODI4NjJlN2U2MDU3MzRkZmMzNTk2OC4uNWJhNjEwZTdkOWE0NGQwNDczODM4MWUyM2Qw
NDBiZGE5MmMzZmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBjbGFzcyBTY3JpcHRNZXNzYWdlQ2xpZW50IGZpbmFsIDogcHVibGlj
IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3NhZ2VDbGllbnQoUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyJiBpbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIpCiAgICAgICAgIDogbV9p
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXIoaW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKQpAQCAtMTA1
LDEzICsxMDYsMTMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRs
ZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWUKICAgICBhdXRvKiB1c2VyQ29u
dGVudE1hbmFnZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdl
YlZpZXcpOwogICAgIGF1dG8gdXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0ID0gbV91c2VyQ29udGVu
dE1hbmFnZXJzLmFkZCh1c2VyQ29udGVudE1hbmFnZXIpOwogICAgIGlmICh1c2VyQ29udGVudE1h
bmFnZXJSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNs
aWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxX
b3JsZCgpKTsKKyAgICAgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6
OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3Rv
ciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgICAgIHdlYmtp
dFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250
ZW50TWFuYWdlciktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsK
ICAgICAgICAgZ19vYmplY3Rfd2Vha19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwg
cmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVk
KSwgdGhpcyk7CiAgICAgfQogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRz
LmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJl
cXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCks
ICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50
PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1
ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgR1N0cmlu
ZyogaHRtbCA9IGdfc3RyaW5nX25ldygKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcAppbmRleCAwZjAxNzExZTc5NjFlOGIw
MGM1ZTU3NGQyODg1MGQwNWIyNDFmNmVjLi44MGQyMGFhNzYwM2JhZGFiOTAwZmU0YmQxNTkwYWFk
MzliMzBlMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCkBAIC0yODQsNiArMjg0LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9pbnNwZWN0b3JfY2xhc3NfaW5pdChXZWJLaXRXZWJJbnNwZWN0b3JDbGFzcyog
ZmluZENsYXNzKQogfQogCiBjbGFzcyBXZWJLaXRJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJs
aWMgV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYktpdEluc3BlY3RvckNsaWVudChXZWJLaXRXZWJJ
bnNwZWN0b3IqIGluc3BlY3RvcikKICAgICAgICAgOiBtX2luc3BlY3RvcihpbnNwZWN0b3IpCkBA
IC0zNjAsNyArMzYxLDcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRXZWJJbnNwZWN0b3JD
cmVhdGUoV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvcikKIHsKICAgICBXZWJLaXRXZWJJ
bnNwZWN0b3IqIGluc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBOVUxMKSk7CiAgICAgaW5zcGVjdG9yLT5wcml2LT53
ZWJJbnNwZWN0b3IgPSB3ZWJJbnNwZWN0b3I7Ci0gICAgd2ViSW5zcGVjdG9yLT5zZXRDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOworICAg
IHdlYkluc3BlY3Rvci0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50
PihpbnNwZWN0b3IpKTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4
IDFiOWRkOGQxZjQ2MDIxNGY1YTc3MjY3MmMyZmI2NTM3MGI1MjBjNWUuLjg4YjNjZjQzYmZlNjhl
ZTk3YzczMWI3NjRkNDQ5OTBhN2JmYzVhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC01NjYsNyArNTY2LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmpl
Y3QpCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmlld1dpZGdldCwgUGFzdGVi
b2FyZEhlbHBlcjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdCgpKTsKIAogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKG9iamVjdCktPnByaXY7
Ci0gICAgcHJpdi0+cGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+
KHZpZXdXaWRnZXQpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFBhZ2VDbGll
bnRJbXBsPih2aWV3V2lkZ2V0KTsKICAgICBwcml2LT5kaWFsb2cgPSBudWxscHRyOwogfQogCkBA
IC0xMjIwLDcgKzEyMjAsNyBAQCBHZXN0dXJlQ29udHJvbGxlciYgd2Via2l0V2ViVmlld0Jhc2VH
ZXN0dXJlQ29udHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldwogewogICAgIFdlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICgh
cHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3
QmFzZSksIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmlld0Jh
c2UpKTsKKyAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEdlc3R1
cmVDb250cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgbWFrZVVuaXF1ZTxUb3VjaEdl
c3R1cmVDb250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVybiAqcHJpdi0+Z2VzdHVy
ZUNvbnRyb2xsZXI7CiB9CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIERyYWdBbmREcm9wSGFuZGxl
ciYgd2Via2l0V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jh
c2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIpCi0gICAgICAgIHBy
aXYtPmRyYWdBbmREcm9wSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0FuZERyb3BIYW5k
bGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVy
ID0gbWFrZVVuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAg
IHJldHVybiAqcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyOwogfQogI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
RGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZQogICAgIGlmIChwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIpCiAgICAgICAgIHByaXYtPnZp
ZXdHZXN0dXJlQ29udHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwogICAgIGVsc2UgewotICAg
ICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJp
di0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgICAgIHByaXYtPnZpZXdHZXN0dXJl
Q29udHJvbGxlci0+c2V0U3dpcGVHZXN0dXJlRW5hYmxlZChwcml2LT5pc0JhY2tGb3J3YXJkTmF2
aWdhdGlvbkdlc3R1cmVFbmFibGVkKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDJjYWIyZTA1Mzg2ZDQyYjM3MWY0NDA2YWI3MWE3ZjY1
OTMwZjdkNzcuLjE0NjAzZDVhZmViYWY2ZGVlMDExOTc5NTc3MDM4ODM0OWQ0ZTdiMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04OTUsNiArODk1LDcg
QEAgLSAodm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogewogICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQg
OiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdDbGll
bnQoV0tWaWV3ICp3a1ZpZXcpCiAgICAgICAgICAgICA6IG1fd2tWaWV3KHdrVmlldykKQEAgLTkz
Miw3ICs5MzMsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW3NlbGYgcmVzcG9u
ZHNUb1NlbGVjdG9yOkljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNlbGVjdG9yKCldKQotICAg
ICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9kYXRhLT5faW1wbC0+
cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+
KHNlbGYpKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFt
ZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmln
dXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbgpAQCAt
OTQ0LDcgKzk0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAgICAgV2ViS2l0OjpJbml0
aWFsaXplV2ViS2l0MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxsb2NdIGluaXRd
OwotICAgIF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1w
bD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwor
ICAgIF9kYXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwg
bnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCiAgICAgW3Nl
bGYgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDg1MTI5YTU0ODdj
OWZmYmVkNTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3NTg4NTczZGZmNDM2MDMz
NzdlZjhkMTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6OlZpZXcmIHZpZXcpCiAg
ICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fc2Nyb2xsR2Vz
dHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKIHsK
IH0KIApAQCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6Omhv
c3RGaWxlRGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcucGFn
ZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlz
cGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkxMDlhYTI4NTViOGJiNDE1
NzE3MDQ0Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQwMzBjZTA0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC00Miw4ICs0Miw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tXUEUgewogCiBWaWV3OjpW
aWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNs
aWVudEltcGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAwIH0KICAgICAsIG1fdmll
d1N0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJ
c1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgfQogICAgICwgbV9i
YWNrZW5kKGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6flZpZXcoKQogdm9pZCBW
aWV3OjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0NsaWVudD4mJiBjbGllbnQp
CiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OlZpZXdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xp
ZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQv
V1BFUXRWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRW
aWV3LmNwcAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1YjEzNTYxY2IzNjZjLi5i
NGYyN2I2ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCkBAIC0xNTAsNyArMTUw
LDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2Vi
VmlldyosIFdlYktpdExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChzdGF0dXNTZXQpIHsKICAg
ICAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1ZXN0UHJpdmF0ZSh2aWV3
LT51cmwoKSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRW
aWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdM
b2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BFUXRWaWV3
TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAgIFFfRU1JVCB2aWV3LT5s
b2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQogfQpAQCAtMTY2LDcgKzE2
Niw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2Vi
VmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9hZFN0YXR1cyA9IFdQRVF0
Vmlldzo6TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAgIFdQRVF0Vmlld0xvYWRS
ZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3RyaW5nKGZhaWxpbmdVUkkp
KSwgbG9hZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVR
dFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmll
d0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
UEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xv
YWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5n
Q2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0
aWMgdm9pZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3OjpydW5KYXZhU2NyaXB0KGNv
bnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxiYWNrKQogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BFUXRWaWV3
Pih0aGlzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+IGRh
dGEgPSBtYWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNrLCBRUG9pbnRl
cjxXUEVRdFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQo
bV93ZWJWaWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRhKCksIG51bGxwdHIsIGpz
QXN5bmNSZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCmlu
ZGV4IGE4NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQxZjkuLjEzZmQzN2FlZmYy
YjY1MzVkNTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4gV1BFUXRWaWV3QmFja2Vu
ZDo6Y3JlYXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICghZWdsQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVR
dFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNw
bGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BFUXRWaWV3QmFja2VuZDo6
V1BFUXRWaWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERpc3BsYXkgZGlzcGxheSwg
RUdMQ29udGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29udGV4dD4gY29udGV4dCwg
UVBvaW50ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBjY2U1
YzQ4MTdhODA0OTE3Y2RjMTk5YzFiMDE2MGUyNTZlOWJlMjk3Li5hNTkxNTBkYjdhNDBkYzdiYzE1
ZGI1MWJlOGVmNGUxMTM1NmRjNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzMsMTEg
KzczLDExIEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQgPSAz
MDBfczsKIHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdl
TG9hZFN0cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwogCiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAgIDogbV9jbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQorICAgIDogbV9jbGllbnQo
bWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQogICAgICwgbV9mcm9u
dGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVm
KCkpKQogICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9kb21haW5Ob3Rp
ZmllcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJv
bnRlbmRSb3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmllcihtYWtlVW5pcXVlPEF1dG9tYXRp
b25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9sb2FkVGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21hdGlvblNlc3Npb246OmxvYWRUaW1l
ckZpcmVkKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDZiMDliYWRi
OGQwY2ViYWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3ZTg3YzUxZGM0YWU5ZDYz
OWIxZDRmMzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9j
ZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlv
blNldDwKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBl
Y3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5jb2Rl
cj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0
byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFy
Z3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBz
ZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9B
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAxMGE4ZTQyNDEzYjI5YWZmYjYzNzdkODRh
MDliZTUxMWJkMjUxZDVjLi5kZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFhNDAxNTdjOTRmMmZhOWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRp
b25TZXNzaW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChpZCA8X1dLQXV0b21hdGlv
blNlc3Npb25EZWxlZ2F0ZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3MjM5NzMyMDVjYzZkZjRj
YzY2YTY3OTA2YzAyOWIwZC4uMDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlkZjQyYzIzYzE0ZDYwNWFk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdE
ZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IEljb25Mb2FkaW5nRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3ICopOwogICAg
IH5JY29uTG9hZGluZ0RlbGVnYXRlKCk7CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNzIEljb25Mb2Fk
aW5nRGVsZWdhdGUgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDog
cHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50
KEljb25Mb2FkaW5nRGVsZWdhdGUmKTsKICAgICAgICAgfkljb25Mb2FkaW5nQ2xpZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVn
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0
ZS5tbQppbmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIyYmViNWJjYmQ3YzBkNzRjZmI0Li4xNjNm
Yjk1MmVlMGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KQEAgLTQ0LDcg
KzQ0LDcgQEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fkljb25Mb2FkaW5nRGVsZWdhdGUoKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4gSWNvbkxvYWRpbmdEZWxlZ2F0
ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SWNv
bkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tJY29uTG9hZGlu
Z0RlbGVnYXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmRlbGVnYXRlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGE1MWEyMjM2MjM4NDE1MWFi
MTFkNDg5NDM2OWY4YTE4NTgwMDY3ZGEuLmY1MTM3ZjljYzczMTYzODhlNjFkZTEwNzczZmYzNDI4
NTYyNTA1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bQpAQCAtNzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6On5VSURlbGVnYXRlKCkKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50
PiBVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOwogfQogI2VuZGlmCiAKIHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPFdLVUlEZWxl
Z2F0ZT4gPiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IDQ4YzJiMmI0ZTA2MTA2OTI3MmFlYjhiOTRhMjM0ZWFhOTI2YWY3NmQuLjkxY2Y5NDgw
Yzc1MThjZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuY3BwCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJj
ZVByb3h5IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyLCBwdWJsaWMgU2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2U6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgU291cmNlUHJveHkodWludDY0X3QgaWQsIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQog
ICAgICAgICA6IG1faWQoaWQpCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29u
c3RyYWkKICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsKICAgICAgICAgc2V0dGlu
Z3MgPSBzb3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRh
aW5zKGlkKSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8U291
cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7
CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlkLCAq
bV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5lcnJvck1l
c3NhZ2UpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwgaW52YWxpZENvbnN0cmFp
bnRzLCBXVEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXggOWNh
NmZhMzUzNDk2MDE4MDNkZjVkM2QxYjJhYmEzMTY1NTc0MGMzOS4uOWJkZGI5OTA5ZGY3ZThmZWYx
ZTU0ODA2Y2JlNmJjNWM0MGNmYzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtMzks
NiArMzksNyBAQCBjbGFzcyBTaGFyZWRNZW1vcnk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAK
IGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQcm94eSYpOwog
ICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzMDcwZDU3
NDQzZmRmNzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQyZmEyYTA4NjA0MTdjNmNm
ODBkN2JjZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIGlmICghW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFN1cHByZXNzTWVt
b3J5UHJlc3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIoKTsKIAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisgICAgc2V0
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8TGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGlu
ayhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9ic2UKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlMaW5rID0gc3RkOjpt
YWtlX3VuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKKyAgICBhdXRvIGRpc3BsYXlMaW5r
ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKICAgICBkaXNwbGF5TGluay0+
YWRkT2JzZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAgbV9kaXNwbGF5TGlua3Mu
YXBwZW5kKFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggNWMyMWNhNzVh
MTgyOWM1MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3YjQ2MDU0OGNlMGY4NmQ3
YTVkMTE3YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRs
ZXIgPSBbYWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhw
ZWN0ZWRseVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tncm91bmQgYWN0aXZpdHkgdGltZWQg
b3V0Iiwgd2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAgbV91bmV4cGVjdGVkQWN0aXZpdHlU
aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4o
V1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rp
dml0eUR1cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRBY3Rp
dml0eVRpbWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOwogICAgIGNv
bXBsZXRpb24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQppbmRleCBmMTc2ZjFhNjVhOTkyYzUxYWMzNDRlZDAwODg1N2UwMTNlZjk5
NGIxLi4zN2Y1NGRhNGFkMmQ2YTI1NDdjMWRkMzU5Yjg5NWM4YTU0YTI1OTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTMzNCw3ICsxMzM0
LDcgQEAgc3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0cmFja2luZ0FyZWFPcHRpb25zKCkK
IAogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4g
KnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBt
X3ZpZXcodmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGll
bnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlx
dWU8UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCiAgICAgLCBtX3BhZ2UocHJv
Y2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSkKICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKG1fcGFnZS0+
cHJlZmVyZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAgICwgbV9pbnRyaW5zaWNDb250ZW50
U2l6ZShDR1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0cmljLCBOU1ZpZXdOb0ludHJpbnNp
Y01ldHJpYykpCkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwo
TlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldlYgog
ICAgIHZpZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQbGFj
ZW1lbnRUb3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fcGFnZS0+
c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNs
aWVudD4odmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVl
PFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwogI2VuZGlmCiAKICAgICBXZWJQcm9j
ZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0xNzMwLDkgKzE3MzAsOSBA
QCBDR1NpemUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2lu
Z0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgaWYgKFtbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXQyVXNl
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFsdWVdKQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2Us
IHByb2Nlc3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc1VzaW5nVUlT
aWRlQ29tcG9zaXRpbmcoKSBjb25zdApAQCAtMzM3NSw3ICszMzc1LDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGV4dElu
ZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yLCBXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAgICAgaWYgKCFtX3RleHRJ
bmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxl
YXNlZCgpKTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOwogCiAg
ICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW1ttX3ZpZXcg
d2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcgY29udmVydFJlY3Q6dGV4dEluZGlj
YXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5pbF1d
OwogICAgIG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNh
dG9yLCBOU1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyks
IGxpZmV0aW1lKTsKQEAgLTQzNzcsNyArNDM3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNhdmVC
YWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQog
Vmlld0dlc3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRyb2xs
ZXIoKQogewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgbV9nZXN0dXJl
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3Bh
Z2UpOworICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICptX2dlc3R1cmVDb250cm9sbGVyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5ZTU4Y2NkYTEwZjNlYTQ0
NGMyNzYuLjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2NWQyODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXAKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5n
U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6
ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAgICAg
ICBtX2JhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZvLnZp
ZXdTaXplLCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7CiAK
ICAgICBtX2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAKQEAg
LTQ0Miw3ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNz
OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuYwogICAgIH0KIAogICAgIGlm
ICghbV9kcmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdNb25p
dG9yPihtX3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBtYWtlVW5p
cXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4o
bV93ZWJQYWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0b3ItPnN0YXJ0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJkMDM4NmFjZjVkOGFkNTM1Yzc5MTJh
ODg2Y2JkMGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2NjVlZTFiNzg2OTZhNmE0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRT
dG9yYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9yCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGFzaFNhbHRGb3JPcmln
aW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5
T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFs
dWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgIGF1dG8gaGFzaFNhbHRGb3JP
cmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3Jp
Z2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUo
KSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgaGFzaFNhbHRGb3JPcmlnaW4t
Pmxhc3RUaW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0VGltZVVzZWQpOwog
CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxl
dGVEZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKIAogICAgICAgICBT
dHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgICAgICBh
dXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9y
aWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RG
TW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JPcmln
aW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3JpZ2lu
KSwgV1RGTW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAog
ICAgICAgICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5OWE1MDM0NGYzMTI1MWY1
ZTk2ODQuLmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1Y2E3YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1h
cC5jcHAKQEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFw
OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbAogCiAgICAg
aWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hvdWxkVGFrZUFzc2VydGlvbikgewog
ICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxv
YWRVSUFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3Vy
cmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVu
Ym91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBtYWtl
VW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBk
b3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAg
ICAgICBBU1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3Nl
cnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpV
bmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRp
b24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWRO
ZXR3b3JraW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJ
UHJvY2VzcyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb25zIGZvciBVSVByb2Nlc3Mg
YW5kIE5ldHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5oCmluZGV4IDNkZWY1ZDc5ZjA3Y2I5MTQwYjgyNTYyZGI5ZjZmMmJjNmQw
ZjcyZjYuLjU2MDZjNTExNjUzNGY0M2NmYzgwNmQ1MTFkNDFlZDk4Y2ZiMjUxNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAg
Y2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBEcmF3
aW5nQXJlYVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcm90ZWN0ZWQgSVBD
OjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEcmF3aW5nQXJlYVByb3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApp
bmRleCBlY2FhYzMwMWI0YmRmNDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRmNjQwLi5mNGI3YmVhNjU4
NTA5OTFlOTQ5NGE2MjIzZDU0Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTEsNyArOTEs
NyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMo
Y29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZAogICAgIGZvciAoYXV0byogZ2FtZXBhZCA6IGlu
aXRpYWxHYW1lcGFkcykgewogICAgICAgICBpZiAoIWdhbWVwYWQpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IHN0ZDo6bWFrZV91
bmlxdWU8VUlHYW1lcGFkPigqZ2FtZXBhZCk7CisgICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+
aW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOwogICAgIH0KIAogICAg
IGZvciAoYXV0byYgcG9vbCA6IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcykKQEAgLTEwNiw3
ICsxMDYsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0
ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkKQogICAgICAgICBtX2dhbWVwYWRzLmdyb3coZ2Ft
ZXBhZC5pbmRleCgpICsgMSk7CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRl
eCgpXSk7Ci0gICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1
ZTxVSUdhbWVwYWQ+KGdhbWVwYWQpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9
IG1ha2VVbmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKIAogICAgIHNjaGVkdWxlR2FtZXBhZFN0
YXRlU3luYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVy
Zm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAppbmRleCA3ZDU2YjBhMjQ2M2Rl
ZGYxNjY5NThjMjhmZmI3NWFhMGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVlZTJlZmExYmQwNWEyYTc1
NjExMWExNWQ5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVy
Zm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKQEAgLTMyLDYgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgSGln
aFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNh
Z2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBkM2QwM2Nl
ZWQ4MzEzYmNhMjdiMzkxNWFjMzdjZTZlM2VkNzMwOTkuLmVlYjQwOTg5NWNlMGUyM2M5ZmMzZTk1
ZjM1ODE4MGZjOWFiMDQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJh
Y2tncm91bmQpCiBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3du
bG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAg
IGlmICghbV9kb3dubG9hZFByb3h5TWFwKQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9kb3du
bG9hZFByb3h5TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CiAKICAg
ICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJvY2Vz
c1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBXZQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2FkQXNz
ZXJ0aW9uKCkKIHsKICAgICBBU1NFUlQoIW1fdXBsb2FkQXNzZXJ0aW9uKTsKLSAgICBtX3VwbG9h
ZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzc0lk
ZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVk
TmV0d29ya2luZyk7CisgICAgbV91cGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NB
c3NlcnRpb24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0
aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmNsZWFyVXBsb2FkQXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzViODIxM2MyOGZj
YjZiOTQwYTEwOTliZTE0MDhmOTA2YTNiOTJiYi4uMWZkYjY2YzE1NWQ4N2IyMjYyZjJhM2Q1ZTEw
ZGUyMzkxNDM4YTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNzIE5l
dHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBw
cml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3
b3JrUHJvY2Vzc1Byb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKICAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJhYWZmMWVj
MmE2NTQ5MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIuLjQ3YTNlOWIyM2JhMTI2NTE5OGI2MGVk
ZGY2YzRkZDk4NmZjZDIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5jcHAKQEAgLTU2LDE0ICs1NiwxNCBAQCBSZWY8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUAogCiBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQ
cm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9j
ZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlmaWNh
dGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZp
Y2F0aW9uUHJvdmlkZXI+KCkpCiB7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRl
cj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVyKSB7Ci0gICAgICAgIG1fcHJvdmlk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7CisgICAg
ICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAppbmRleCBlYzY0YmM5ZTE2MmNiN2NhMWU3NTM3ZTkzMzFkNGYxMzk1ODdlYzQxLi42Y2Y1ZTE0
ZWE1NjlmMjNkYTg0NzU0MDk2Y2E1MTE0NTNjMjk4YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4
dElEID0gdWludDMyX3Q7CiAjZW5kaWYKIAogY2xhc3MgUGFnZUNsaWVudCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxQYWdlQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgK
aW5kZXggMDFhN2RhN2I4OTFhOTAwNjZjOTBlODQyOWM2NTZiZDcwMGIxNjZiZC4uZWE0MzkyN2Q0
OGQ3NTJiZWI2NzI4MDk0OTljOWFkMGJmZTA3YmM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaApAQCAt
MzUsNiArMzUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsK
IAogY2xhc3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5QZXJBY3Rpdml0eVN0YXRlQ1BV
VXNhZ2VTYW1wbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggZjZmNDc5
YjFlMDM5MmYzMjIxNjBhNjQ5NGFlYzYyZTBhMDY3OTZkZC4uODQzNjlkMzM0NDA3Y2ZiYzJlODNh
YTgyN2M1Y2MwZTVkYjkxMjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAt
NjMsNyArNjMsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXpl
UGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYQogI2lmIFBMQVRGT1JNKEdUSykK
IHN0YXRpYyBib29sIHBsdWdpblJlcXVpcmVzR3RrMihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1
ZTxNb2R1bGU+KHBsdWdpblBhdGgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVs
ZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKICAgICBpZiAoIW1vZHVsZS0+bG9h
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1vZHVsZS0+ZnVuY3Rpb25Q
b2ludGVyPGdwb2ludGVyPigiZ3RrX29iamVjdF9nZXRfdHlwZSIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAwMGE5OTE4ODYxNDg3MzkzOGE2
Y2I0YWJkOTkxNGJjODYyOTQ1Y2Y3Li40Y2UyNjJlOWRjYmI0YjFiMGZmMGFkNWRiOTdlYjk3ZjM2
MDczNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNw
cApAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRv
UHJvY2VzcyhQcm9jZXNzSUQgcGlkKQogCiAgICAgbV9zdXNwZW5kVGltZXIuc3RvcCgpOwogICAg
IGlmIChtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCi0gICAgICAgIG1fYXNzZXJ0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldlYiBj
b250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fzc2Vy
dGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVu
dCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
YXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJXZWIg
Y29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9hc3Nl
cnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZp
c2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwogICAgIG1fcHJvY2Vzcy5kaWRTZXRBc3Nl
cnRpb25TdGF0ZShhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX2Fzc2VydGlvbi0+c2V0Q2xpZW50
KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0KaW5kZXggNjBmMDJjNjEwZmNkOTg4MzA2MzljNTdiM2U5ZDYxZmYxZmQ1MjVmZC4uMjc0
YWJkMzAyOWMwMDc3MzM5ZGZlMzc0OGZmMzA2OTdjOWI0OGI0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEwNyw3ICsxMDcsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQ
cm94eSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIDogRHJhd2luZ0FyZWFQcm94eShE
cmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBhZ2VQcm94eSwgcHJvY2VzcykKLSAg
ICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJl
ZUhvc3Q+KCp0aGlzKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChtYWtlVW5pcXVlPFJl
bW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKIHsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICAv
LyBXZSBkb24ndCB3YW50IHRvIHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJIHByb2Nlc3MuCkBAIC0z
NzYsNyArMzc2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp1cGRh
dGVEZWJ1Z0luZGljYXRvcihJbnRTaXplIGNvbnRlbnRzU2l6ZSwKIAogdm9pZCBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKQogewotICAg
IG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVM
YXllclRyZWVIb3N0PigqdGhpcyk7CisgICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3Qg
PSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKICAgICBtX2RlYnVnSW5k
aWNhdG9yTGF5ZXJUcmVlSG9zdC0+c2V0SXNEZWJ1Z0xheWVyVHJlZUhvc3QodHJ1ZSk7CiAKICAg
ICBtX3RpbGVNYXBIb3N0TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCAzMDAyNWQ0Mjk5ZjNiY2EwNDg1ZDMwNGQ4
MzM1ODE3NjEwYmE1MGJkLi44YTRlNTA0ODE3ZWJjMTI1Y2U4OThjMWMyOTFkOWE2ZTRkNWY1ODJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQg
UmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyQ3JlCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4g
UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIGF1dG8g
bWFrZVdpdGhMYXllciA9IFsmXSAoUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyKSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMu
bGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1v
dGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKICAg
ICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENBTGF5ZXIqIGxheWVyKSB7
CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMobGF5ZXIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVOb2RlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZU5vZGUubW0KaW5kZXggZTg4YmJjNjA4ZDRmYjA1ODM4NGQyOWIyNjk4MTU5MmVk
YTgxNGViYS4uNGZkNGVhMjY5ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBkODQyNDA2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZU5vZGUubW0KQEAgLTczLDcgKzczLDcgQEAgUmVtb3RlTGF5ZXJUcmVl
Tm9kZTo6flJlbW90ZUxheWVyVHJlZU5vZGUoKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVy
VHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKQogewogICAgIFJldGFp
blB0cjxDQUxheWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1BsYWluUmVtb3RlTGF5ZXIgYWxsb2Nd
IGluaXRdKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2Rl
PihsYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwogfQogCiB2b2lkIFJlbW90
ZUxheWVyVHJlZU5vZGU6OmRldGFjaEZyb21QYXJlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1Bl
cmZvcm1hbmNlRGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCmluZGV4IGMyNzgxZGM4
YWRhMzQzMzlmNzllZDg1YTdlM2U5ZmY3NjUyMjI1MjguLjI5ZGZlZmU2Y2I3MmMxMjBhNjFjYzIy
ZDBkM2JhNjRhNmQ5NDQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OwogCiBjbGFz
cyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1Bl
cmZvcm1hbmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Jik7CiAgICAgflJl
bW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5kZXggODZkMGRlZmM2OTY1ZTRmYTZi
YTExNjQ3NjFiYzlhYzcxOThjNzJlNi4uMWE3Njk0M2YyNDViZTFjZDgyMmYxOTYxM2NkZDM1ZjU0
MGE5NGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGluZ1RyZWU7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiAKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVy
VHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggNjI5YTljNjUwZDQzYzBkNTYxYzgx
OTMzYmEwZDE0ZThkMzNlYTQ0NC4uMGMxMjZhZTZhZjc1ZTQxMzhhZmQwMDg2ODM5NTY2MjlmZjcw
MDIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNjEs
NyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4gY3JlYXRlUmVtb3RlVmlldyhwaWRf
dCBwaWQsIHVpbnQzMl90IGNvbnRleHRJRCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRy
ZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7CiAg
ICAgYXV0byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0cjxVSVZpZXc+IHZpZXcpIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVy
dGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsK
ICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9IFsmXSAoVUlWaWV3KiB2aWV3KSB7
CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1v
dGVJT1MubW0KaW5kZXggODFhMmViOWE2MzVkNTk4NDE2MDBmNzgzNTIwNGFjODRiZDZkNWMyOC4u
Yjg5MDY4MWU5ZTdhNTEzYmEzNDM2N2NlZjM5ODliZTNiMTlkOWNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90
ZUlPUy5tbQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgUwogCiAgICAg
aWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAgICAgaWYgKHNjcm9sbENvbnRhaW5l
ckxheWVyKCkpCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOwor
ICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5tbQppbmRleCBiNTZlMmVhNjRkYTUyMDMxZGZhZjEyOGVjMjQ4Y2QxNWM3MTAwOTI2Li5k
MGJkZDNjNTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFhYjU3ZDk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1t
CkBAIC00Myw3ICs0Myw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TCiAKIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgV2ViQ29yZTo6
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxpbmdOb2RlRGVs
ZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShtYWtlVW5pcXVlPFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2N2MwYjYxNjJlMDY3ODNjZjM3NmNm
NjE5MDdlMi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3OWM3NDUyOTQzNzI5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNj
cm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDog
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlVHlwZSwgbm9kZUlE
KQotICAgICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+
KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFj
PigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90
ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IGQ4OTYw
Y2VjMzBlNDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMuLmI2Y2EzY2JiYTgwODA3YWY3Yjlm
Njk5YmU5YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90
ZU1hYz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTgogCiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVJRCBub2Rl
SUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5v
ZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWly
TWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFp
ck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRl
eCBmNTA1ZTI4MGM0NDI5MGE4MDNkYmRiNjhjOThlZWE2MzBiMWM5YmI2Li44NjhiNTRlNzkyYWYy
YWJkOTg2YmM4NjYwMDVjYjEyZjQ1NjgyNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKICAgICB+VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNl
Lm1tCmluZGV4IGNhMjZlNTFkN2E0MDY0YWEyODEyN2MwZjAxZDU0YTRlMGFjMjQ0NjMuLjM5M2Ix
MzY3MWY2MDE0MTZhNmVkN2MyZmRhYjBjZDJlYjA4MWUzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2Vy
dmljZS5tbQpAQCAtOTIsNyArOTIsNyBAQCBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2Vy
dmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQg
SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIGF1
dG8gZHJpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25u
ZWN0aW9uKGRldmljZSkpOworICAgIGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJp
dmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwogICAgIC8vIEdldCBhdXRoZW50aWNh
dG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgogICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1w
dHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9y
R2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdl
dCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewogICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5LmgKaW5kZXggODVjZTY5MDYxMTE0NDJiYzY3OWNjN2E3NzViODY4MmRkMTU3Mjhj
OS4uZjg1MmJlZDIxMzBiNDdjMmY3ZGQyOThhZDM1NmFlYWM4N2MwMjY4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC00NCw2ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHJveHkmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdl
clByb3h5LmNwcAppbmRleCA5OWQ2ZWEzMzQxNTNlY2Y0OWQ0NTg0Yzc0M2RjNjgxNjg4NDE1NTIw
Li44NDZhNWFhMjdkZmFiM2QyNzRjZmZhNDg3Mzg2MWYyNTg3ZDE3ZmQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vCiAKIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9v
bCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkK
LSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlk
ZXI+KCkpCisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3Zp
ZGVyPigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KQEAgLTU0LDcgKzU0LDcgQEAgV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQ
b29sKiBwcm9jZXNzUG8KIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3Zp
ZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIp
CiB7CiAgICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtX3Byb3ZpZGVyID0g
bWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgZWxzZQogICAgICAg
ICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAppbmRleCAy
Y2RjZDE3NjUyOTlmZTc3NjQ5YmFiZjlkZTNlNzRlOGIwZjAwZTM3Li4zMzY0YmNiY2M5MTE4NGE2
YmE3NTQxZWY5MGIwZjk2MDRjZGU0ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBkYXRlUGxheWJhY2tBdHRy
aWJ1dGVzRnJvbU1lZGlhU3RhdGUoV2ViUGFnZQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQYWdlUHJveHkmIHByb3h5LCB1aW50
NjRfdCBlbGVtZW50SUQpCiB7Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CisgICAgbV9m
b2N1c2VkTWVkaWFFbGVtZW50ID0gbWFrZVVuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJv
eHksIGVsZW1lbnRJRCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpj
bGVhckZvY3VzZWRNZWRpYUVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJO
YXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5ZWI5ZDI4YWRkZDViNWIwMDZkNTBiMDhhM2Q3NGZiNjlk
MTYyMzkyLi4xNmE3NTlhYzhhMWZmMzE0NjA1YjA5NDZmZmM1YWE2NTgxOGUwNzQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaApAQCAtNDUsNiArNDUs
NyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwog
CiBjbGFzcyBXZWJOYXZpZ2F0aW9uU3RhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5hdmlnYXRpb25TdGF0ZSgpOwogICAgIH5XZWJO
YXZpZ2F0aW9uU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggNjUyOTgyYTgxMmE5ZWZiZWY1MjFhNmE5
ODk5ZmE0YmVlNWZhZjM0Yy4uMWIyOWY3OWRkZmFlYTA3YjllNzI0OWJkNzcyMzg0ZWViZjUzMGZk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCA6IHB1
YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2U+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6
T2JqZWN0Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0KiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggYzRiOTJjODNjZmVhMjliMzFlZGJiMzRhYTg0MDI1YmE1YzhiMDNiNy4uYmRhNTljZDgw
NTE1NzY0NmIzMDhkMmZkMjM2ZjNkMTE4MjcxZTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVu
ZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogewotICAgIGF1dG8g
dGFyZ2V0QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2Vu
dD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7Cisg
ICAgYXV0byB0YXJnZXRBZ2VudCA9IG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFn
ZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsK
IAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2ZhMmI0ZDZkM2MxNjYxYTcwMDNiNzc4
NTU4ZGE3YzJmZjI0ZjA3ZS4uMGI0MGRiMjc3ODNmZGU5ZDI1NmZmNTI5MmVlYTdlYmZlMzE2Y2Ew
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zOTcsMTUg
KzM5NywxNSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9jb25maWd1cmF0aW9u
KFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFrZVVu
aXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQo
bWFrZVVuaXF1ZVJlZjxBUEk6Okhpc3RvcnlDbGllbnQ+KCkpCi0gICAgLCBtX2ljb25Mb2FkaW5n
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKLSAgICAs
IG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKLSAgICAs
IG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQotICAgICwgbV9m
aW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQotICAgICwgbV9m
aW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+
KCkpCisgICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGlu
Z0NsaWVudD4oKSkKKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVu
dD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQorICAg
ICwgbV9maW5kQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQorICAgICwgbV9m
aW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4dE1l
bnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlmCi0g
ICAgLCBtX25hdmlnYXRpb25TdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0
ZT4oKSkKKyAgICAsIG1fbmF2aWdhdGlvblN0YXRlKG1ha2VVbmlxdWU8V2ViTmF2aWdhdGlvblN0
YXRlPigpKQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cCgqbV9j
b25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKICAgICAsIG1fcHJlZmVyZW5jZXMoKm1fY29uZmln
dXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIFBhZwogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IG1fY29u
ZmlndXJhdGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSB9CiAgICAgLCBtX3Ry
ZWF0c1NIQTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1fY29uZmlndXJhdGlvbi0+dHJlYXRzU0hB
MVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCi0gICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxz
Y3JlZW5DbGllbnQ+KCkpCisgICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxBUEk6
OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCiAjZW5kaWYKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcigqdGhpcykKQEAgLTQzNSw5ICs0MzUsOSBAQCBXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MsIFBhZwogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRoaXMpCiAgICAgLCBtX2Nv
bmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZh
bHVlcygpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJv
bGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiAjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKICNlbmRp
ZgogICAgICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKIHsKQEAgLTQ3Nyw3ICs0
NzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZl
cjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7
CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8UnVuTG9v
cE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93
blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10gewogICAgICAgICB0
aGlzLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgpAQCAt
NjAxLDcgKzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQb2xpY3lDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmIHBvbGljeUNsCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1D
bGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAgICAgICBtX2Zvcm1DbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJiB1
aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7Ci0gICAgICAgIG1fdWlDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTYyOCw3ICs2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogewogICAgIGJvb2wgaGFz
Q2xpZW50ID0gaWNvbkxvYWRpbmdDbGllbnQuZ2V0KCk7CiAgICAgaWYgKCFpY29uTG9hZGluZ0Ns
aWVudCkKLSAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpJY29uTG9hZGluZ0NsaWVudD4oKTsKKyAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1f
aWNvbkxvYWRpbmdDbGllbnQgPSBXVEZNb3ZlKGljb25Mb2FkaW5nQ2xpZW50KTsKIApAQCAtNjUw
LDcgKzY1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIo
c3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VyCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGll
bnQpCiB7CiAgICAgaWYgKCFmaW5kQ2xpZW50KSB7Ci0gICAgICAgIG1fZmluZENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRDbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rmlu
ZE1hdGNoZXNDbGllbnQ+JiYgZmluZE1hdGNoZXNDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kTWF0
Y2hlc0NsaWVudCkgewotICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERp
YWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRpYWdub3N0aWNMb2cK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpDb250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAgICBpZiAo
IWNvbnRleHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4
dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnRCYXNlKgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pbmplY3RlZEJ1bmRsZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PigpOwor
ICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudD4oKTsKICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5pbml0aWFsaXplKGNs
aWVudCk7CiB9CiAKQEAgLTc3Niw3ICs3NzYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVu
ZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAog
ICAgIH0KIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHBy
b2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBhdXRv
IHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRo
aXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5n
VW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKKyAgICBhdXRvIHN1c3Bl
bmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vz
cy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmlu
Z0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAogICAgIExPRyhQcm9jZXNzU3dhcHBpbmcs
ICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3Ig
cHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRv
VUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmco
KSA6IDApOwogCkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFj
aFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIEFT
U0VSVCghbV9mdWxsU2NyZWVuTWFuYWdlcik7Ci0gICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGll
bnQoKS5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOworICAgIG1fZnVsbFNjcmVlbk1h
bmFnZXIgPSBtYWtlVW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdl
Q2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpIHx8IChQTEFURk9STShNQUMpICYmIEVO
QUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgQVNTRVJUKCFtX3BsYXliYWNrU2Vz
c2lvbk1hbmFnZXIpOwpAQCAtODYwLDIyICs4NjAsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBB
U1NFUlQoIW1fcGF5bWVudENvb3JkaW5hdG9yKTsKLSAgICBtX3BheW1lbnRDb29yZGluYXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAg
ICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIEFT
U0VSVCghbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcik7Ci0gICAgbV9zeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlz
KTsKKyAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxTeXN0ZW1QcmV2
aWV3Q29udHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
ICAgIEFTU0VSVCghbV9jcmVkZW50aWFsc01lc3Nlbmdlcik7Ci0gICAgbV9jcmVkZW50aWFsc01l
c3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gbWFrZVVuaXF1ZTxXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBIQVZF
KFBFTkNJTEtJVCkKICAgICBBU1NFUlQoIW1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOwotICAg
IG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlciA9IG1h
a2VVbmlxdWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogfQogCkBA
IC05NDMsNyArOTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYXdpbmdBcmVhKHN0ZDo6
dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmUKIAogI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX2RyYXdpbmdBcmVh
LT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlKSB7Ci0gICAgICAgIG1f
c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0
aGlzKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBPbiBpT1MsIG1haW4g
ZnJhbWUgc2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBvZiB2aXNpYmxlIHJlY3QgdXBkYXRlcy4K
ICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LT5zZXRQcm9wYWdhdGVzTWFpbkZy
YW1lU2Nyb2xscyhmYWxzZSk7CkBAIC0xMDA2LDE3ICsxMDA2LDE3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbG9zZSgpCiAgICAgbV9sb2FkZXJDbGllbnQgPSBudWxscHRyOwogICAgIG1fbmF2aWdh
dGlvbkNsaWVudCA9IG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpOwogICAg
IG1fcG9saWN5Q2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOwotICAgIG1fZm9ybUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOwotICAgIG1fdWlDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7Ci0gICAgbV9maW5kQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7Ci0gICAgbV9maW5kTWF0Y2hlc0Ns
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICBt
X2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50Pigp
OworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAg
IG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgbV9maW5kQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CisgICAgbV9maW5kTWF0Y2hlc0Ns
aWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICBtX2RpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRN
ZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
Ci0gICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3Jl
ZW5DbGllbnQ+KCk7CisgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1
bGxzY3JlZW5DbGllbnQ+KCk7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwpAQCAtMTIyNiw3ICsxMjI2
LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9KTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9
IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24oc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2Rp
bmcsIGJhc2VVUkwsIHVzZXJEYXRhKSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0
aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihtYWtlVW5pcXVlPEFQSTo6U3Vic3Rp
dHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNl
ckRhdGEpKTsKICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNl
ckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCwgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CkBA
IC0yNDE1LDcgKzI0MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChj
b25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9
IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOwogICAgIGNvYWxlc2Nl
ZFdoZWVsRXZlbnQtPmFwcGVuZChldmVudCk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVl
bEV2ZW50cy5hcHBlbmQoV1RGTW92ZShjb2FsZXNjZWRXaGVlbEV2ZW50KSk7CiAgICAgc2VuZFdo
ZWVsRXZlbnQoZXZlbnQpOwpAQCAtMjQyMyw3ICsyNDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQoKQogewotICAgIGF1
dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2Vi
V2hlZWxFdmVudD4+KCk7CisgICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBtYWtlVW5pcXVl
PFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBXZWJXaGVlbEV2ZW50IG5leHRX
aGVlbEV2ZW50ID0gY29hbGVzY2VkV2hlZWxFdmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5leHRD
b2FsZXNjZWRFdmVudC5nZXQoKSk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50
cy5hcHBlbmQoV1RGTW92ZShuZXh0Q29hbGVzY2VkRXZlbnQpKTsKICAgICBzZW5kV2hlZWxFdmVu
dChuZXh0V2hlZWxFdmVudCk7CkBAIC0yOTg0LDcgKzI5ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgcwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CiAgICAgfQogCi0g
ICAgbV9wcm92aXNpb25hbFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3Zpc2lvbmFsUGFnZVBy
b3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3VzcGVuZGVkUGFnZVBy
b3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVz
dElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50KTsKKyAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJv
dmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShz
dXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9u
LmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCks
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwogCiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBu
YXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgewogICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQ
cm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAl
cyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTcwMiw3ICs1NzAyLDcg
QEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpmdWxsU2NyZWVuTWFu
YWdlcigpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVu
dCkgewotICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTc0MzcsNyArNzQzNyw3IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5JiBXZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgaWYgKG1f
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKQogICAgICAgICByZXR1cm4gKm1fdXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogCi0gICAgbV91c2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIgPSBtYWtlVW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcjsKIH0KIApAQCAtODE0Myw3ICs4MTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKICAg
ICBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkID0gZW5hYmxlZDsKIAog
ICAgIGlmIChtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkICYmICFtX3Nj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YSkKLSAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2lu
Z0FyZWEpKTsKKyAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBtYWtlVW5pcXVl
PFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKICAgICBlbHNlIGlm
ICghbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCkKICAgICAgICAgbV9z
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBudWxscHRyOwogfQpAQCAtOTE5MCw3ICs5MTkwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKQogV2ViUGFnZVBy
b3h5OjpTcGVlY2hTeW50aGVzaXNEYXRhJiBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc0Rh
dGEoKQogewogICAgIGlmICghbV9zcGVlY2hTeW50aGVzaXNEYXRhKQotICAgICAgICBtX3NwZWVj
aFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBT
cGVlY2hTeW50aGVzaXNEYXRhIHsgbWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
Pih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9Owog
ICAgIHJldHVybiAqbV9zcGVlY2hTeW50aGVzaXNEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA4YmRmOGNmODM4OGNkYzdiZmFjZmYy
YjdlNjA1ZDBhODE4ZGFhYzY0Li45NjJmM2JlZDJkODI1NjlhMDdkZDRlOWNkYWI4ZmNjNzIxMTlm
N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAg
LTg0LDcgKzg0LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxl
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSBnZW5lcmF0ZUFkZFJlcXVlc3RJZGVu
dGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVy
LCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7Cisg
ICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5pcXVl
PENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CiAKICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2li
bGUoKTogQ2hlY2tpbmcgaWYgcHJvY2VzcyAlaSBpcyByZXNwb25zaXZlIGJlZm9yZSBjYWNoaW5n
IGl0Li4uIiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgcHJvY2Vz
cy0+aXNSZXNwb25zaXZlKFt0aGlzLCBwcm9jZXNzUG9vbCA9IG1ha2VSZWYocHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKSksIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGlzUmVzcG9uc2l2ZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGRiZTI1MzUyYjUy
NTg4ZDhhM2NjODY5NDg0NDQwZTc5ZTg1YTA5NmQuLmZlZGE4ZWU4ZThkMzBmMzk0ZmYxMDhmYmZh
ODA0MTVkODEwNzdhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTIzMywxNSArMjMzLDE1IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90CiBXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5jb3B5
KCkpCiAgICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3VwOjpjcmVhdGUoKSkKLSAg
ICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlQ2xpZW50PigpKQotICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQotICAgICwgbV9kb3dubG9hZENsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCi0gICAgLCBtX2hpc3RvcnlDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQot
ICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKKyAgICAsIG1faW5qZWN0ZWRCdW5kbGVD
bGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQorICAgICwgbV9h
dXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQorICAg
ICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCisg
ICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50PigpKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1
ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAgICAsIG1fdmlzaXRlZExp
bmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlx
dWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0aGlzKSkKLSAgICAsIG1f
cGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBlckFjdGl2
aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1faGlnaFBlcmZvcm1hbmNl
R3JhcGhpY3NVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyKG1ha2VVbmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQog
I2VuZGlmCiAgICAgLCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eShtX2NvbmZpZ3Vy
YXRpb24tPmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQogICAgICwgbV9zaG91bGRU
YWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkVGFrZVVJQmFj
a2dyb3VuZEFzc2VydGlvbigpKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xp
ZW50KQotICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOwogICAgIGVsc2UK
ICAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KQEAg
LTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ29ubmVjdGlv
bkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Qgogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudD4mJiBoaXN0b3J5Q2xpZW50KQogewogICAgIGlmICghaGlzdG9yeUNsaWVu
dCkKLSAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOworICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7CiAgICAgZWxzZQogICAg
ICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGllbnQpOwogfQpAQCAtMzg1
LDcgKzM4NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4m
JiBkb3dubG9hZENsaWVudCkKIHsKICAgICBpZiAoIWRvd25sb2FkQ2xpZW50KQotICAgICAgICBt
X2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50Pigp
OworICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xp
ZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUoZG93
bmxvYWRDbGllbnQpOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiYm
IGRvCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKIHsKICAgICBp
ZiAoIWF1dG9tYXRpb25DbGllbnQpCi0gICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAgICAgICBtX2F1dG9tYXRp
b25DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1vdmUoYXV0b21hdGlvbkNsaWVudCk7
CiB9CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkMKIHsKICNpZiBF
TkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIGlmICghY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KQotICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7
CisgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQpOwogI2VuZGlmCkBAIC00OTIsNyArNDkyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdp
dGgKICAgICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogICAgIH0KIAotICAgIGF1dG8g
bmV0d29ya1Byb2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtQcm9jZXNzUHJveHk+KCp0
aGlzKTsKKyAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gbWFrZVVuaXF1ZTxOZXR3b3JrUHJvY2Vz
c1Byb3h5PigqdGhpcyk7CiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwogCkBAIC0yNTEwLDcgKzI1MTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpk
aWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YQogICAgICAgICBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92
ZShtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJhbmRvbSgpKTsKIAog
ICAgIGF1dG8mIHZhbHVlID0gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFp
bi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7CiAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlOwogCiAgICAgKnZhbHVlID0gcHJld2FybUluZm9ybWF0aW9uOwpAQCAtMjU1Nywx
MiArMjU1NywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fk
cyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnRha2VVcGxvYWRBc3NlcnRpb24oKTsKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCghbV91aVBy
b2Nlc3NVcGxvYWRBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJ
RCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3Jr
aW5nKTsKKyAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFBy
b2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRzIl9z
LCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAgICAgfQogICAgIAogICAg
IGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5hZGQocHJvY2Vzc0lELCBudWxs
cHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVu
Ym91bmRlZE5ldHdvcmtpbmcpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5p
cXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJL
aXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJRCkKQEAgLTI1OTksMTIgKzI1OTksMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUaGUg
bnVtYmVyIG9mIHByb2Nlc3NlcyBwbGF5aW5nIGF1ZGlibGUgbWVkaWEgaXMgbm93IG9uZS4gVGFr
aW5nIFVJIHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwogCiAgICAgICAgIEFTU0VSVCghbV91aVByb2Nl
c3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBsYXli
YWNrQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJy
ZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRl
OjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOworICAgICAgICBt
X3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywg
QXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFj
ayk7CiAgICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nlc1BsYXlpbmdBdWRpYmxl
TWVkaWEuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1lZGlh
IFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29u
OjpNZWRpYVBsYXliYWNrKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0
IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9u
UmVhc29uOjpNZWRpYVBsYXliYWNrKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJX
ZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDBiMjQyYTJiYjU4Njc0YzAzOGNmN2NmYTQ5MmRiN2Q5NWNhZTAwMWUuLmRhMzZmNmJh
NThhNTMwNTZlMDhjMmI2NmIyMzhlN2VlMzM4N2U3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIFdlYlByb2Nlc3NQ
cm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0
ZURhdGFTdG9yZSoKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVy
RXZlbnQpIHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKICAgICAs
IG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5KHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRo
aXMpKQorICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8VXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2lzUHJl
d2FybWVkKGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q2xpZW50LmgKaW5kZXggZTlmY2YwMDE1Mzk5NWRjMWNjZTEzNWY4YzA5MmU5MmU2NmRiZmYzYS4u
ZDBiYmE1NjRjMjc1ODJkNzgyNmU5ZjJjMjA2MjIzNzAyMjcyOTUzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYnNpdGVE
YXRhU3RvcmVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDE4Mjk0ZDM3ZmU0OWVlZDZkNjlkZmZm
ZjVmMmY2NTA3MGI2NmNkOTAuLjdiZGQwM2QzYzhlYzhlMDY2MmU3N2QwMTgyNTBiNTA4OGMyNmNm
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3Rv
cmVDYWlyby5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogICAgICAgICBH
ZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dlYlBhZ2VQcm94eS52
aWV3V2lkZ2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdka192aXN1YWxfZ2V0
X3NjcmVlbih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVOX1hESVNQTEFZKHNjcmVl
bikpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5k
Q2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVl
bikpLAorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9Y
MTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAog
ICAgICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdka192aXN1YWxfZ2V0X2Rl
cHRoKHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgfQogI2VuZGlm
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9J
bXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rv
cik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGI4NzRmYjBmYjJlMmE3ZTdlYzM2Y2M0
NGUzOWQ2MjQ5MDZhNGM1ZjEuLmY4ODhjMGY0NDZjNjI3MTI3YzgzNzViZTBkODFhNmEzZjJjMDlm
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVj
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUlu
c3BlY3RvckNsaWVudC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
ckNsaWVudDo6Y29ubmVjdGlvbkNsb3NlZCgpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6
aW5zcGVjdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKQogewogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3Bh
aXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElE
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5
PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7
CiAgICAgfSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zaG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3Bw
CmluZGV4IDM4MzEwMDA1ODg5NGRlYzBmYjdiNTFjYWEwOWEyMzlkNzdkMDhhOGIuLjg5MzI3OWZi
Y2Y1OGFlYWYyYWZkNmIxYTQ3YzFjNzZjMjNkODJiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQuY3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kOjpjaGVja1JlcXVpcmVtZW50cygpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNp
ZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3Bl
bkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdM
RVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25z
M0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xF
Uz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRl
bnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9u
czNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMy
MCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5z
aW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6
OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGdsRXh0
ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVuc2lvbnMtPnN1
cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAgICAgICAgICBnbEltYWdl
VGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVY
VFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJl
MkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0Fu
ZERyb3BIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJv
cEhhbmRsZXIuY3BwCmluZGV4IGU5YWU2NTUyYTdhMmQ4NjJjNGJkNGVlMTBlZDJlYzM2ZTkyZjgz
MWQuLmNhNjUzZTVlYmE3MGM5NjE1NWZmNzY0ODhjM2VkZjQyODFmODU3MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCkBAIC0y
MDIsNyArMjAyLDcgQEAgU2VsZWN0aW9uRGF0YSogRHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRGF0
YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY28KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RHJvcHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0ID0gbV9kcm9wcGluZ0NvbnRleHRz
LmFkZChjb250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFkcm9wcGlu
Z0NvbnRleHQpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBtX3BhZ2Uudmlld1dpZGdl
dCgpOwotICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERyb3BwaW5n
Q29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOworICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBt
YWtlVW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOwogICAgICAgICBW
ZWN0b3I8R2RrQXRvbT4gYWNjZXB0YWJsZVRhcmdldHMoUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xl
dG9uKCkuZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGRyb3BwaW5nQ29udGV4dC0+Z2RrQ29u
dGV4dCkpOwogICAgICAgICBkcm9wcGluZ0NvbnRleHQtPnBlbmRpbmdEYXRhUmVxdWVzdHMgPSBh
Y2NlcHRhYmxlVGFyZ2V0cy5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0byYgdGFyZ2V0IDogYWNj
ZXB0YWJsZVRhcmdldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
RHJhZ0FuZERyb3BIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0Fu
ZERyb3BIYW5kbGVyLmgKaW5kZXggNTI1NDIwMzcxZjYxYmQ0YjhmM2MxYTM5OWI3YjgyNjFiOTk0
ZWExMC4uNTkxNGI3ZTBkZjU0MzFhY2Y2NjM3MTAzZTY4ODA0MDRlZDQ0M2YzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaApAQCAtNDks
NiArNDksNyBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAK
IGNsYXNzIERyYWdBbmREcm9wSGFuZGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhZ0FuZERyb3BIYW5kbGVyKTsKIHB1YmxpYzoK
ICAgICBEcmFnQW5kRHJvcEhhbmRsZXIoV2ViUGFnZVByb3h5Jik7CkBAIC02NCw2ICs2NSw3IEBA
IGNsYXNzIERyYWdBbmREcm9wSGFuZGxlciB7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IERyb3Bw
aW5nQ29udGV4dCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgRHJvcHBpbmdDb250ZXh0KEdka0RyYWdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvc2l0aW9uKTsKIAogICAgICAgICBHZGtEcmFnQ29udGV4dCogZ2RrQ29udGV4dCB7
IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENv
bXBvc2l0b3IuY3BwCmluZGV4IGNiZTM4MGIyNDBkOTYwMTExNzI3Yjc3MGE4MjVlMDllMDU0N2M5
ZWQuLmMzZDk5NzNjNzBkYzIwODljNjgzZDY1YTkxM2RhMjk0ZDVmZmViYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcApAQCAtNDIw
LDkgKzQyMCw5IEBAIGJvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0woKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1
ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0
ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxzZQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVy
c2lvbigpID49IDMyMCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4g
Z2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdM
Q29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgIGlmIChn
bEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikgfHwgZ2xFeHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQogICAgICAgICBnbEltYWdl
VGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVY
VFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJl
MkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIubW0KaW5kZXggYzIzNDExYzFmMDliMDEwYTY1MjU0YjM2OWRkMzE2
OWQzMWYwYzBlMC4uNjFlODU5NGQ1YjdjNDFhYWY5ZmM4MmM2NTM4ZGI5YWQ3MTg1NjM0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29u
dHJvbGxlci5tbQpAQCAtNTgsNyArNTgsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6fkVk
aXRhYmxlSW1hZ2VDb250cm9sbGVyKCkKIEVkaXRhYmxlSW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250
cm9sbGVyOjplbnN1cmVFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9lZGl0YWJs
ZUltYWdlcy5lbnN1cmUoZW1iZWRkZWRWaWV3SUQsIFsmXSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxFZGl0YWJsZUltYWdlPiBpbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFibGVJbWFn
ZT4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gbWFr
ZVVuaXF1ZTxFZGl0YWJsZUltYWdlPigpOwogICAgICAgICBpbWFnZS0+ZHJhd2luZ1ZpZXcgPSBt
X3dlYlBhZ2VQcm94eS0+cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdWaWV3KGVtYmVkZGVkVmll
d0lEKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1Zp
ZXcubW0KaW5kZXggZDAzYTE3MjZhYjMzNGEwMGU2MGZiYzA1MGI1MGU1YzMzNzVhZjcyMC4uN2Yw
Zjk0ODRmZDc3NzRkZDExNTdhZTI4ODVjOTBhM2JmMmVlNzlhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tp
bmdWaWV3Lm1tCkBAIC02NSw3ICs2NSw3IEBAIC0gKHZvaWQpZGlkTW92ZVRvV2luZG93CiAgICAg
aWYgKCFzZWxmLl9jb250ZW50Vmlldy53aW5kb3cgfHwgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2Vy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNlbGYsIEBzZWxl
Y3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0
aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpLCBAc2VsZWN0
b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOworICAgIF9hcHBsaWNhdGlvblN0
YXRlVHJhY2tlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4o
c2VsZiwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCksIEBzZWxlY3Rv
cihfYXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3Vu
ZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKSk7CiAgICAgCiAg
ICAgaWYgKF9sYXN0T2JzZXJ2ZWRTdGF0ZVdhc0JhY2tncm91bmQgJiYgIVtzZWxmIGlzQmFja2dy
b3VuZF0pCiAgICAgICAgIFtzZWxmIF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCA2ODEx
ZTg3YTRhNDIxMDA1YmQ5NGE3YWMyMTY1NDNlY2MwMGE3N2ZjLi40MzFmYWNkMWU2ODM5N2VjODU3
MzkxYWIxY2Y4ODhkMzg0MTU3YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wm
KXByCiAgICAgX3BhZ2UtPnNldERlbGVnYXRlc1Njcm9sbGluZyh0cnVlKTsKIAogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKLSAgICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4oX3dlYlZpZXcpKTsKKyAgICBfcGFn
ZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVu
dD4oX3dlYlZpZXcpKTsKICNlbmRpZgogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3Rh
dGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0yMzksNyArMjM5LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIF9w
YWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPihzZWxm
LCB3ZWJWaWV3KTsKKyAgICBfcGFnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogCiAgICAg
cmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9jZXNz
UG9vbCBjb25maWd1cmF0aW9uOldURk1vdmUoY29uZmlndXJhdGlvbildOwpAQCAtNTQxLDcgKzU0
MSw3IEBAIC0gKHZvaWQpX3dlYlZpZXdEZXN0cm95ZWQKIAogLSAoc3RkOjp1bmlxdWVfcHRyPFdl
YktpdDo6RHJhd2luZ0FyZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6KFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5Jilwcm9jZXNzCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UsIHByb2Nlc3Mp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eT4oKl9wYWdlLCBwcm9jZXNzKTsKIH0KIAogLSAodm9pZClfcHJvY2Vzc0RpZEV4aXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IDllMTZjY2JmZDZiMjAxY2I1OWY3Mzg3YWJhZmY4MThiNTU2MDY5
NzIuLmQzZWRhMzY5YzAzNzFjMWYyYzEzYTFkMDU5OTE1ZGI2ZGQ1ZTkyYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQpAQCAtODA2LDcgKzgwNiw3IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogICAgIAog
ICAgIF9hY3Rpb25TaGVldEFzc2lzdGFudCA9IGFkb3B0TlMoW1tXS0FjdGlvblNoZWV0QXNzaXN0
YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwogICAgIFtfYWN0aW9uU2hlZXRBc3Npc3Rh
bnQgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4o
c2VsZik7CisgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdl
YktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4oc2VsZik7CiAgICAgX2lzRXhwZWN0
aW5nRmFzdFNpbmdsZVRhcENvbW1pdCA9IE5POwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNz
ID0gTk87CiAgICAgX2lzRG91YmxlVGFwUGVuZGluZyA9IE5POwpAQCAtODIxLDcgKzgyMSw3IEBA
IC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoUExBVEZPUk1f
RFJJVkVOX1RFWFRfQ0hFQ0tJTkcpCi0gICAgX3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlcj4oKl9wYWdlKTsKKyAg
ICBfdGV4dENoZWNraW5nQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpUZXh0Q2hlY2tp
bmdDb250cm9sbGVyPigqX3BhZ2UpOwogI2VuZGlmCiAKICAgICBfaGFzU2V0VXBJbnRlcmFjdGlv
bnMgPSBZRVM7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCAtIChCT09MKWJlY29tZUZpcnN0UmVzcG9u
ZGVyRm9yV2ViVmlldwogICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoIV9pbnB1dFZpZXdV
cGRhdGVEZWZlcnJlcikKLSAgICAgICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKKyAgICAg
ICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmll
d1VwZGF0ZURlZmVycmVyPihzZWxmKTsKIAogICAgIEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25k
ZXI7CiAgICAgewpAQCAtNTMxMSw3ICs1MzExLDcgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3Vz
Oihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUK
ICAgICAgICAgLy8gRGVmZXIgdmlldyB1cGRhdGVzIHVudGlsIHRoZSBlbmQgb2YgdGhpcyBmdW5j
dGlvbiB0byBhdm9pZCBhIG5vdGljZWFibGUgZmxhc2ggd2hlbiBzd2l0Y2hpbmcgZm9jdXMKICAg
ICAgICAgLy8gYmV0d2VlbiBlbGVtZW50cyB0aGF0IHJlcXVpcmUgdGhlIGtleWJvYXJkLgogICAg
ICAgICBpZiAoIWlucHV0Vmlld1VwZGF0ZURlZmVycmVyKQotICAgICAgICAgICAgaW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRl
RGVmZXJyZXI+KHNlbGYpOworICAgICAgICAgICAgaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBt
YWtlVW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOwogICAgICAg
ICBbc2VsZiBfZWxlbWVudERpZEJsdXJdOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggYjAyODI0ODkyMDAzYTA0OTg5Mjll
NzA2YTU5MDQ1OWE0Zjg3MWFjZC4uYzA4Zjk3ODZmMGVhYWI0YTk3NWJiNTY0OGM3NDI3YzU2MzZk
YmUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCkBAIC05MTIsNyArOTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1
cyhjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbiwKICAgICBBUEk6
Ok9iamVjdCogdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCk7CiAgICAgaWYgKG1fZWRpdG9yU3RhdGUuaXNN
aXNzaW5nUG9zdExheW91dERhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkg
dG8gZWxpbWluYXRlIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgYWx0b2dldGhl
ciwgaW4gZmF2b3Igb2Ygb25seSBkZWZlcnJpbmcgYWN0aW9ucyB0aGF0IGFyZSBkZXBlbmRlbnQg
b24gcG9zdC1sYXlvdXQgZWRpdG9yIHN0YXRlIGluZm9ybWF0aW9uLgotICAgICAgICBtX2RlZmVy
cmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50RGlk
Rm9jdXNBcmd1bWVudHM+KEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7IGluZm9ybWF0aW9uLCB1
c2VySXNJbnRlcmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZXMs
IHVzZXJEYXRhT2JqZWN0IH0pOworICAgICAgICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJn
dW1lbnRzID0gbWFrZVVuaXF1ZTxFbGVtZW50RGlkRm9jdXNBcmd1bWVudHM+KEVsZW1lbnREaWRG
b2N1c0FyZ3VtZW50cyB7IGluZm9ybWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1clByZXZp
b3VzTm9kZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIHVzZXJEYXRhT2JqZWN0IH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJl
ZChSZWY8VwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+
IFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYgcGF5bWVudENvb3JkaW5hdG9yUHJveHksIFBLUGF5
bWVudFJlcXVlc3QgKnBheW1lbnRSZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGluYXRv
clByb3h5LCBwYXltZW50UmVxdWVzdCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1l
bnRSZXF1ZXN0KTsKIH0KIAogVUlWaWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50
Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1
bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbQppbmRl
eCA4YjEyM2IwYTk3YzAzMGU5NDUwZjVlZDRmOGMxNzRiMzIxYmI0MDdiLi44ZmY4YTBiZjQ3NWIz
ZjdiMjM2MjI5ZjQxMmUzZjMyNjZjZjk1OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3
Q29udHJvbGxlci5tbQpAQCAtODgsNiArODgsNyBAQCBwcml2YXRlOgogfTsKIAogY2xhc3MgV0tG
dWxsU2NyZWVuVmlld0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCA6IFdlYkNv
cmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5WaWV3Q29udHJv
bGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCA4MzQzNDg4OWNkY2Yy
NDljMWMyNzkxYmQwN2JmZmZhMjAxY2Y0ODdkLi5hOTEyOTUzZWM5MWMyNzMzNjI2NzYzZGFmOWRh
MjZiMjQ5MzNjNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VD
bGllbnRJbXBsKE5TVmlldyogdmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogUGFnZUNs
aWVudEltcGxDb2NvYSh3ZWJWaWV3KQogICAgICwgbV92aWV3KHZpZXcpCiAjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCi0gICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSkKKyAgICAsIG1f
YWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyPigpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IDQz
ZTlmOTY3YmM4OTc3ZmJmZjhjODY2OGE1Y2NhMWYzODI0YzA4MDkuLjM0YTY5YmJlMGJiMGQxNzZi
NTUxYmFmMmQ3YTM1YzFmYWFjMDM3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCkBAIC01NCw2
ICs1NCw3IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBEZWZhdWx0V2F0Y2hkb2dUaW1l
ckludGVydmFsID0gMTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAq
cGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKQEAgLTE1MCw3ICsxNTEsNyBAQCAtIChp
ZClpbml0V2l0aFdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgd2ViVmlldzooTlNWaWV3ICopd2Vi
VmlldyBwYWdlOihXZWJLaXQ6OgogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKICAgICBfcGFnZSA9
ICZwYWdlOwogCi0gICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxD
bGllbnQ+KCk7CisgICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+
KCk7CiAgICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC0+c2V0UGFyZW50KHNlbGYpOwogCiAgICAg
W3NlbGYgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggNjYwMzE3YzJmYmM3
OWI2OGJiNWI3MzQ3NmE1OGJlZmVhMDliMDZkMy4uNjlkOWQ5ZTJkNDQ0ODQzZDE1MjcwZjUxMTdm
Nzc0Y2QyMzdkNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
VGV4dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tU
ZXh0RmluZGVyQ2xpZW50Lm1tCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFRleHRGaW5kZXJGaW5kQ2xpZW50IDog
cHVibGljIEFQSTo6RmluZE1hdGNoZXNDbGllbnQsIHB1YmxpYyBBUEk6OkZpbmRDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRleHRG
aW5kZXJGaW5kQ2xpZW50KFdLVGV4dEZpbmRlckNsaWVudCAqdGV4dEZpbmRlckNsaWVudCkKICAg
ICAgICAgOiBtX3RleHRGaW5kZXJDbGllbnQodGV4dEZpbmRlckNsaWVudCkKQEAgLTE2OCw4ICsx
NjksOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYWdlOihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYpcGFnZSB2aWV3OihOU1ZpZXcgKil2aWV3IHVzZQogICAgIF92aWV3ID0gdmlldzsKICAgICBf
dXNlUGxhdGZvcm1GaW5kVUkgPSB1c2VQbGF0Zm9ybUZpbmRVSTsKICAgICAKLSAgICBfcGFnZS0+
c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJG
aW5kQ2xpZW50PihzZWxmKSk7Ci0gICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CisgICAgX3BhZ2UtPnNl
dEZpbmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVu
dD4oc2VsZikpOworICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpU
ZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JD
bGllbnQuY3BwCmluZGV4IGVkMGQ1ZmZlOTU4OWY5NWU0NGEwN2YyMjE4ZWQ4MmMwMGYwMTdkN2Uu
LmU3NGFkYWMxZTY1ZWJlNWM5OWIzMWQ5MDY3YWU2MTE1OGYzOTg3ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQu
Y3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OmRpZENs
b3NlKENvbm5lY3Rpb25JRCkKIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KENv
bm5lY3Rpb25JRCBjb25uZWN0aW9uSUQsIFRhcmdldElEIHRhcmdldElELCBjb25zdCBTdHJpbmcm
IHR5cGUpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2luc3BlY3RvclByb3h5TWFwLmVuc3Vy
ZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHRhcmdldElEKSwgW3RoaXMsIGNvbm5lY3Rp
b25JRCwgdGFyZ2V0SUQsICZ0eXBlXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCwgdHlw
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhp
cywgY29ubmVjdGlvbklELCB0YXJnZXRJRCwgdHlwZSk7CiAgICAgfSk7CiAKICAgICBpZiAoIWFk
ZFJlc3VsdC5pc05ld0VudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmlu
ZGV4IDFiNmQ5Y2M1NGZjNjBiNTNlNDQwMjcxZjIzMDhlN2MwZjQ3Yzg3NGMuLmE4ODMzZjYyNDg3
ZjlhNjcyMTAzOTllYzlmOGZmNWUwOTI3MTJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuY3BwCkBAIC04NCwxMSArODQsMTEgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZVByb3h5LAogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvKiBjbGllbnQgPSBtX2luc3BlY3RvckNsaWVudHMuZW5z
dXJlKHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgW3RoaXMsICZyZXF1ZXN0VVJMXSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVz
dFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRo
aXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJl
cXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCks
ICp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKICAgICAvLyBTZXR1cCB0
YXJnZXQgcG9zdE1lc3NhZ2UgbGlzdGVuZXIKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVu
dD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3Js
ZCgpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICBwYWdlUHJveHkucGFnZUdy
b3VwKCkudXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVy
KGhhbmRsZXIuZ2V0KCkpOwogCiAgICAgU3RyaW5nQnVpbGRlciBodG1sQnVpbGRlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3Bw
CmluZGV4IGI2N2Q3M2E0ZGM0ODhiMzFmZGM5YTQ3MjE5NjkxNDA0Mjc0NDg4MjUuLjVkNTBhZTU1
NDY4MGE2ZTllM2RhMmNlODRiZTU2NGQ1YzMyMzdmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcApAQCAtNDEsNyArNDEs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjp1bmlxdWVfcHRyPEJhY2tpbmdT
dG9yZUJhY2tlbmREaXJlY3QyRD4gQmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKCkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBs
PihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJh
Y2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rv
cik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChJRDJEMVJlbmRlclRhcmdldCogcmVu
ZGVyVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggY2Q2ZjA4ZmYxOGJkNTVjMTU1NDQ2M2Q0
YTQwYjUxZTQ1YjJlYWI5Zi4uMDMwN2M0ZjlmMTQzZjg2ZGM2MjA4YjQ4NGJlOGRiNDIyZGMwZjQx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3Bw
CkBAIC00Niw3ICs0Niw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChXZWJWaWV3
JiB2aWV3KQogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5jdGlvbnMKIHN0ZDo6dW5p
cXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0Fy
ZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFn
ZSgpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcz4oKm1fdmlldy5wYWdlKCksIHByb2Nlc3MpOwogfQogCiB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYg
cmVnaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGNkNTM1
MmRmN2FhMDRlNjlkOWIwZjk4ZWQwMDFlNWM2MzMyZjc1OTMuLjY3ZTVlNGIyN2EzYWU4MGFiNjY4
ZjZjMzQxN2MwZjBjZTZiN2YwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCBib29sIFdlYlZpZXc6OnJlZ2lzdGVyV2ViVmlld1dp
bmRvd0NsYXNzKCkKIH0KIAogV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEhXTkQgcGFyZW50V2luZG93KQotICAg
IDogbV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkK
KyAgICA6IG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCiB7
CiAgICAgcmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmlu
ZGV4IGI2ZDRhMDQyMGQ1YTVkYmQ2NDYwODNhZjY3ODgwNTFiZjZjYzQ3ZTAuLmYyZDYyZWE5Nzkw
ZjgwN2E2NWI1ZDNlNThmODBiOTdmMDZhZGJmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTUx
LDYgKzUxLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwogY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlBheW1lbnRDb29yZGluYXRvckNsaWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiAg
ICAgZXhwbGljaXQgV2ViUGF5bWVudENvb3JkaW5hdG9yKFdlYlBhZ2UmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3Bw
CmluZGV4IDRmODEwY2NmMzhlY2ZhMmM5OWVjYmRhODlkMDQxY2ViOGQyMzMzYjguLmFhYjM0NTdj
ZWQ2NGE1YTkxMGNkYzU2MmFjYzAxMTUwMGQzYzZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtNjIs
NyArNjIsNyBAQCB2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdhbWVwYWRzKGNv
bnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVwYWREYQogICAgICAgICBpZiAoZ2FtZXBhZERh
dGFzW2ldLmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9nYW1l
cGFkc1tpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGFzW2ldKTsK
KyAgICAgICAgbV9nYW1lcGFkc1tpXSA9IG1ha2VVbmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERh
dGFzW2ldKTsKICAgICAgICAgbV9yYXdHYW1lcGFkc1tpXSA9IG1fZ2FtZXBhZHNbaV0uZ2V0KCk7
CiAgICAgfQogfQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6Z2Ft
ZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYgZ2FtZXBhZERhdGEpCiAKICAgICBBU1NF
UlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0pOwogCi0gICAgbV9nYW1lcGFkc1tn
YW1lcGFkRGF0YS5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBh
ZERhdGEpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBtYWtlVW5pcXVl
PFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhKTsKICAgICBtX3Jhd0dhbWVwYWRzW2dhbWVwYWREYXRh
LmluZGV4KCldID0gbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXS5nZXQoKTsKIAogICAg
IGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBmZDY1MjNkNmZhN2Q3NTkzZDFiOGQzYjMy
YmFiNDYzYTk2OGVhYTI4Li42MzNmMjJmZGZlNDI3MmIzOWRlMjVlYTBlNGEwYTA0ZDdjZGU2Y2My
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApA
QCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNs
YXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRl
eCAwYmI0ZjJiNDIxYTNlYzIyODc1NGU2MzgyOWQ0MWFiYmUyZTA2ZjhkLi5hNmMyODcxNmFiMTY3
OGFmZGQ1NzRjOWRmOWZlMjg2ODYzNDYzMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBA
IC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYlByb2Nlc3M7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFz
cyBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyKTsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZS5jcHAKaW5kZXggZjNlYzcyMDg3Y2EyODg2N2Y1NGQ5ZGYwZjUwZDg3MTAyZTAx
NmZhMi4uY2E4NWQ1ODVkY2YxYjc2ZWYwYjhkMTFkNTlhZDY2MDRhYzNmMTg2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlR2V0VHlwZUlE
KCkKIAogdm9pZCBXS0J1bmRsZVNldENsaWVudChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVu
ZGxlQ2xpZW50QmFzZSAqd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVm
KS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVu
dD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5zZXRDbGllbnQo
bWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLQnVuZGxlU2V0U2VydmljZVdvcmtlclByb3h5Q3JlYXRpb25DYWxsYmFjayhXS0J1
bmRsZVJlZiBidW5kbGVSZWYsIHZvaWQgKCpjYWxsYmFjaykodWludDY0X3QpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcAppbmRleCBmMTJhNWJhNzc0ZDZjYzY4ZDA4NGYxZjYwMjFjZWJmMzgx
YWEzYTU4Li5kYzA3NThhZDc1YWYzNjFkZmJlODE2ZWIxMTNmNDFjN2YwOWQ4MWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNzcsNyArNzcsNyBAQCBXS1R5cGVJRCBXS0J1bmRs
ZVBhZ2VHZXRUeXBlSUQoKQogdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNl
KiB3a0NsaWVudCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBXZWJLaXQ6OnRv
SW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHdr
Q2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxl
Q29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFn
ZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKQEAgLTg2LDIyICs4NiwyMiBAQCB2
b2lkIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS0J1bmRsZVBhZ2VDb250ZQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVu
dChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50QmFzZSog
d2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50ID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudD4oKndrQ2xpZW50KSA6IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpKTsKKyAgICBXZWJLaXQ6OnRvSW1w
bChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQod2tDbGllbnQgPyBtYWtl
VW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pigqd2tDbGllbnQp
IDogbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkpOwogfQog
CiB2b2lkIFdLQnVuZGxlUGFnZVNldEZvcm1DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYs
IFdLQnVuZGxlUGFnZUZvcm1DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRv
SW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0NsaWVudCkpOworICAg
IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFr
ZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7
CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0g
ICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRS
ZXNvdXJjZUxvYWRDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVJl
c291cmNlTG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBh
Z2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Pih3a0NsaWVu
dCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291
cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGlj
eUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50
QmFzZSogd2tDbGllbnQpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQ
b2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNs
aWUKIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRv
SW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2Vi
S2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQobWFrZVVuaXF1
ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2
b2lkIFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAppbmRleCBlYmQzZWY1ZjI5MzA4YzE0MTkz
YTE4MWI3ZTFlNGE0MjVmZDIxZGQyLi42OWY3YWYyMmI1Njc1MDRkNGYzMWYwZDdhNzBiODc0ZTA5
ZmE1NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCkBAIC01
NCw2ICs1NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VP
dmVybGF5QWNjZXNzaWJpbGl0eUNsaWVudEJhc2U+IHsKIH0KIAogY2xhc3MgUGFnZU92ZXJsYXlD
bGllbnRJbXBsIDogQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEJhc2U+LCBw
dWJsaWMgV2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlT3ZlcmxheUNsaWVudEltcGwo
V0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEJhc2UqIGNsaWVudCkKICAgICB7CkBAIC0yMTYsNyAr
MjE3LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdlT3ZlcmxheUdldFR5cGVJRCgpCiAKIFdLQnVu
ZGxlUGFnZU92ZXJsYXlSZWYgV0tCdW5kbGVQYWdlT3ZlcmxheUNyZWF0ZShXS0J1bmRsZVBhZ2VP
dmVybGF5Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgYXV0byBjbGllbnRJbXBsID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsKKyAgICBhdXRv
IGNsaWVudEltcGwgPSBtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4od2tDbGllbnQp
OwogICAgIHJldHVybiB0b0FQSSgmV2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6Y3JlYXRlKFdURk1v
dmUoY2xpZW50SW1wbCkpLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVy
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21h
Yy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KaW5kZXggYWNjMzVhMjFiNTlmMWFhMzFlMzMwNTFh
NjZiYzEzMDU5OTY2OTlkMy4uZDZmZmQxY2NjMDRhOTNhN2EwOWQyYjM2NTU5YThmMGMwOTUwZmYx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0K
QEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogY2xhc3MgUGFnZUJhbm5lckNsaWVudEltcGwgOiBBUEk6OkNsaWVudDxXS0J1bmRs
ZVBhZ2VCYW5uZXJDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VCYW5uZXI6OkNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGFnZUJhbm5l
ckNsaWVudEltcGwoV0tCdW5kbGVQYWdlQmFubmVyQ2xpZW50QmFzZSogY2xpZW50KQogICAgIHsK
QEAgLTEwMyw3ICsxMDQsNyBAQCBXS0J1bmRsZVBhZ2VCYW5uZXJSZWYgV0tCdW5kbGVQYWdlQmFu
bmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5ZXIoQ0FMYXllciAqbGF5ZXIsCiAgICAgaWYgKHdrQ2xp
ZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8g
Y2xpZW50SW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlQmFubmVyQ2xpZW50SW1w
bD4od2tDbGllbnQpOworICAgIGF1dG8gY2xpZW50SW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQ
YWdlQmFubmVyQ2xpZW50SW1wbD4od2tDbGllbnQpOwogICAgIHJldHVybiB0b0FQSSgmV2ViS2l0
OjpQYWdlQmFubmVyOjpjcmVhdGUobGF5ZXIsIGhlaWdodCwgY2xpZW50SW1wbC5yZWxlYXNlKCkp
LmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNo
ZS5jcHAKaW5kZXggNDIxMDFmOGM4MmNiMmE1NDgzYmFlNGRjODQ4MDdiNDE2NWE5MmQ4Ni4uMjJi
NDBlNDM5YmJiNjAxNWUxOGFhOGMyNTU4ZTBlNjkzZjVlYjFhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgRE9NT2JqZWN0Q2FjaGVEYXRhIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRE9NT2JqZWN0Q2FjaGVEYXRhKEdPYmplY3QqIHdy
YXBwZXIpCiAgICAgICAgIDogb2JqZWN0KHdyYXBwZXIpCiAgICAgICAgICwgY2FjaGVSZWZlcmVu
Y2VzKDEpCkBAIC03NywxNSArNzgsOCBAQCBzdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyTWFwJiBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkKICAgICByZXR1cm4gbWFwOwog
fQogCi1zdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyJiBnZXRPckNyZWF0ZURPTU9i
amVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCi17Ci0gICAgRE9N
T2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0
Q2FjaGVGcmFtZU9ic2VydmVycygpLmFkZCgmZnJhbWUsIG51bGxwdHIpOwotICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyPihmcmFtZSk7Ci0gICAgcmV0dXJu
ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotfQotCiBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1l
T2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERPTU9iamVjdENh
Y2hlRnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCiAgICAgICAgIDogRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyKCZmcmFtZSkKQEAgLTEwNSw3ICs5OSw3IEBAIGNsYXNzIERPTU9i
amVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlCiAgICAgICAgIGlmIChkb21XaW5kb3cgJiYgKCFtX2RvbVdpbmRvd09ic2Vy
dmVyIHx8IG1fZG9tV2luZG93T2JzZXJ2ZXItPndpbmRvdygpICE9IGRvbVdpbmRvdykpIHsKICAg
ICAgICAgICAgIC8vIE5ldyBET01XaW5kb3csIGNsZWFyIHRoZSBjYWNoZSBhbmQgY3JlYXRlIGEg
bmV3IERPTVdpbmRvd09ic2VydmVyLgogICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgICAg
IG1fZG9tV2luZG93T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd09ic2VydmVy
PigqZG9tV2luZG93LCAqdGhpcyk7CisgICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0g
bWFrZVVuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOwogICAgICAg
ICB9CiAKICAgICAgICAgbV9vYmplY3RzLmFwcGVuZCgmZGF0YSk7CkBAIC0xOTEsNiArMTg1LDE0
IEBAIGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNv
cmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlCiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTVdpbmRv
d09ic2VydmVyPiBtX2RvbVdpbmRvd09ic2VydmVyOwogfTsKIAorc3RhdGljIERPTU9iamVjdENh
Y2hlRnJhbWVPYnNlcnZlciYgZ2V0T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIo
V2ViQ29yZTo6RnJhbWUmIGZyYW1lKQoreworICAgIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZl
ck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcnMoKS5h
ZGQoJmZyYW1lLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hlRnJhbWVP
YnNlcnZlcj4oZnJhbWUpOworICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30K
KwogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBzdGQ6OnVuaXF1ZV9wdHI8RE9NT2JqZWN0Q2FjaGVE
YXRhPj4gRE9NT2JqZWN0TWFwOwogCiBzdGF0aWMgRE9NT2JqZWN0TWFwJiBkb21PYmplY3RzKCkK
QEAgLTIxNSw3ICsyMTcsNyBAQCB2b2lkIERPTU9iamVjdENhY2hlOjpwdXQodm9pZCogb2JqZWN0
SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQogewogICAgIERPTU9iamVjdE1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IGRvbU9iamVjdHMoKS5hZGQob2JqZWN0SGFuZGxlLCBudWxscHRyKTsKICAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBlcikpOworICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZURh
dGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKIH0KIAogdm9pZCBET01PYmplY3RDYWNoZTo6cHV0KFdl
YkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikKQEAgLTIyNCw3ICsyMjYs
NyBAQCB2b2lkIERPTU9iamVjdENhY2hlOjpwdXQoV2ViQ29yZTo6Tm9kZSogb2JqZWN0SGFuZGxl
LCB2b2lkKiB3cmFwcGVyKQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPERP
TU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBlcikpOworICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBl
cikpOwogICAgIGlmIChXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBvYmplY3RIYW5kbGUtPmRvY3Vt
ZW50KCkuZnJhbWUoKSkKICAgICAgICAgZ2V0T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2Jz
ZXJ2ZXIoKmZyYW1lKS5hZGRPYmplY3RDYWNoZURhdGEoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3Bw
CmluZGV4IDRjY2VjNjJlZjBlMTEzMWZhMTNmN2ZiMDYwYzgwZTA3ZWU0MjUxYWYuLjRkNzQyZTQw
OWJiZmM3Y2ZhYjQwOGNkNjUzOGFlZjlmMjI4ZmQ3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lk
IFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRs
ZSwgQVBJOjpPYmplY3QqIHVzZQogICAgIHNjYW5Nb2R1bGVzKHdlYkV4dGVuc2lvbnNEaXJlY3Rv
cnksIG1vZHVsZVBhdGhzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0
aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byBtb2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PE1vZHVsZT4obW9kdWxlUGF0aHNbaV0pOworICAgICAgICBhdXRvIG1vZHVsZSA9IG1ha2VVbmlx
dWU8TW9kdWxlPihtb2R1bGVQYXRoc1tpXSk7CiAgICAgICAgIGlmICghbW9kdWxlLT5sb2FkKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGluaXRpYWxpemVXZWJFeHRlbnNp
b24obW9kdWxlLmdldCgpLCB1c2VyRGF0YS5nZXQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRXZWJFZGl0b3IuY3BwCmluZGV4IDA0MDcyZWI4NjRkYmUzNWY4MGRmYzg2YWQwZTg4M2MzZTk5
Y2U0NGYuLmNjYjUxZTBkOTY0MGM2NmY4NTk2ZTQ3NDE3MTQwNThlOTEzOTc2ODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRXZWJFZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFdlYktp
dFdlYkVkaXRvciogd2Via2l0V2ViRWRpdG9yQ3JlYXRlKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2Up
CiB7CiAgICAgV2ViS2l0V2ViRWRpdG9yKiBlZGl0b3IgPSBXRUJLSVRfV0VCX0VESVRPUihnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VESVRPUiwgbnVsbHB0cikpOwogICAgIGVkaXRvci0+
cHJpdi0+d2ViUGFnZSA9IHdlYlBhZ2U7Ci0gICAgd2Via2l0V2ViUGFnZUdldFBhZ2Uod2ViUGFn
ZSktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUVk
aXRvckNsaWVudD4oZWRpdG9yKSk7CisgICAgd2Via2l0V2ViUGFnZUdldFBhZ2Uod2ViUGFnZSkt
PnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUVkaXRvckNsaWVu
dD4oZWRpdG9yKSk7CiAgICAgcmV0dXJuIGVkaXRvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAppbmRleCA0YTIzYmY1NjAxMDdjMzFmMWE0ZGUyYzk2
MTI5OWE3MDEwODE3NTAxLi5lMzA2ZTNmZWYyNjMxZDU0NjY1NTcxMTZlNWU0ODdkMzcxYzc4NTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMTk2
LDcgKzE5Niw3IEBAIGNsYXNzIFdlYkV4dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xpZW50IGZpbmFs
IDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVuCiBXZWJLaXRXZWJFeHRlbnNpb24q
IHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlKQogewogICAg
IFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uID0gV0VCS0lUX1dFQl9FWFRFTlNJT04oZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FWFRFTlNJT04sIE5VTEwpKTsKLSAgICBidW5kbGUt
PnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkV4dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xp
ZW50PihleHRlbnNpb24pKTsKKyAgICBidW5kbGUtPnNldENsaWVudChtYWtlVW5pcXVlPFdlYkV4
dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xpZW50PihleHRlbnNpb24pKTsKICAgICByZXR1cm4gZXh0
ZW5zaW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggY2Zj
NTAzMWVkNmU0YTI5NTRmZTAyYTAzZGE4N2ExNjFjZDJkMzA4Mi4uYzkyMDRiMjM5ODFkN2YxN2Fk
MDczYjllZDQxMmE4Nzc2ODVjZTdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdl
LmNwcApAQCAtOTUsNiArOTUsNyBAQCBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViUGFnZSwg
d2Via2l0X3dlYl9wYWdlLCBHX1RZUEVfT0JKRUNUKQogc3RhdGljIHZvaWQgd2ViRnJhbWVEZXN0
cm95ZWQoV2ViRnJhbWUqKTsKIAogY2xhc3MgV2ViS2l0RnJhbWVXcmFwcGVyIGZpbmFsOiBwdWJs
aWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJLaXRGcmFtZVdyYXBwZXIoV2ViRnJhbWUmIHdlYkZyYW1lKQog
ICAgICAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcih3ZWJGcmFtZS5jb3JlRnJhbWUoKSkK
QEAgLTEyOCw3ICsxMjksNyBAQCBzdGF0aWMgV2ViS2l0RnJhbWUqIHdlYmtpdEZyYW1lR2V0T3JD
cmVhdGUoV2ViRnJhbWUqIHdlYkZyYW1lKQogICAgIGlmICh3cmFwcGVyUHRyKQogICAgICAgICBy
ZXR1cm4gd3JhcHBlclB0ci0+d2Via2l0RnJhbWUoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJLaXRGcmFtZVdyYXBwZXI+IHdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEZyYW1l
V3JhcHBlcj4oKndlYkZyYW1lKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFw
cGVyPiB3cmFwcGVyID0gbWFrZVVuaXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7
CiAgICAgd3JhcHBlclB0ciA9IHdyYXBwZXIuZ2V0KCk7CiAgICAgd2ViRnJhbWVNYXAoKS5zZXQo
d2ViRnJhbWUsIFdURk1vdmUod3JhcHBlcikpOwogICAgIHJldHVybiB3cmFwcGVyUHRyLT53ZWJr
aXRGcmFtZSgpOwpAQCAtNjc4LDExICs2NzksMTEgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2Vi
UGFnZUNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSBX
RUJLSVRfV0VCX1BBR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QQUdFLCBOVUxMKSk7
CiAgICAgcGFnZS0+cHJpdi0+d2ViUGFnZSA9IHdlYlBhZ2U7CiAKLSAgICB3ZWJQYWdlLT5zZXRJ
bmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSZXNv
dXJjZUxvYWRDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7
Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VDb250ZXh0TWVudUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNl
dEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVUlDbGllbnQ+KHBh
Z2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVk
QnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVu
dD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dChtYWtlVW5pcXVlPFBhZ2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJ
bmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnRleHRNZW51
Q2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudCht
YWtlVW5pcXVlPFBhZ2VVSUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVk
QnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7CiAKICAg
ICByZXR1cm4gcGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0K
aW5kZXggODEwNTVjZTdmZGViYTMxOGRhYjA2ODI2MzRjNmJkODRhMzdmYWU4Yy4uMDg0ZjMwMDVk
NjEwM2Q0ZTI1MDMzYzI1NmM3MGMwZTA2NDA0MWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01UZXh0SXRlcmF0b3IubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZToo
V0tET01SYW5nZSAqKXJhbmdlCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgX3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJh
dG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CisgICAgX3RleHRJdGVyYXRvciA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdl
KHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQppbmRleCA0ODgwMGJiMzE3OTA2NWU0ZTczMjkzMDY5MDU0NjgwZTQzNGFmMWZmLi40
MjAyMzk2YWJhZmFmMzBkNzE4OWFlYjY4NTA5ZWEyNzE3MWI5NzQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCkBAIC01NDQsNyArNTQ0LDcgQEAgLSAodm9pZClfc2V0Rm9ybURl
bGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4pZm9ybURl
bGVnYXQKICAgICB9OwogCiAgICAgaWYgKGZvcm1EZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNl
dEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNl
bGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5p
cXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmpl
Y3RlZEJ1bmRsZUZvcm1DbGllbnQobnVsbHB0cik7CiB9CkBAIC02NzMsNyArNjczLDcgQEAgLSAo
dm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0Rl
bGVnYXRlPillZGl0aW5nRGVsZWcKICAgICB9OwogCiAgICAgaWYgKGVkaXRpbmdEZWxlZ2F0ZSkK
LSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8Q2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudChtYWtlVW5pcXVlPENsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAg
X3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG51bGxwdHIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKaW5kZXggMjBjZTU1OTExZDcwNjUxYzMzNWE3MGFjZjI0ZTViZGZjMjFiZDYz
MS4uOTk3OWQ2Mzg0ZGZmNWM5ODA1OTFmMjkwODNjOTM3Mjk2MzQ0YTkwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmpl
Y3RlZEJ1bmRsZTo6Y3JlYXRlKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIElu
amVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5k
bGVQYXRoKQogICAgICwgbV9wbGF0Zm9ybUJ1bmRsZSgwKQotICAgICwgbV9jbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCisgICAgLCBtX2NsaWVu
dChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKSkKIHsKIH0KIApAQCAt
MTE0LDcgKzExNCw3IEBAIEluamVjdGVkQnVuZGxlOjp+SW5qZWN0ZWRCdW5kbGUoKQogdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVu
ZGxlOjpDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2Ns
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOwor
ICAgICAgICBtX2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50
PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9X
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMGNhNWVhNmQyYWJlNTcyMTU0ZDIxYmVk
MGNjOWEwNTNlN2Q2NmMxOC4uYmZiM2QwNDUxNDM3MzZjMzFkZjk4OGFiMWIwMGRlNDJiODUzMDg5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRp
YUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaApAQCAtMzksNiArMzksNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIoV2ViUHJvY2VzcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5oCmluZGV4IGQ3YzVjNjgzNDRiNzI3MzhkOTQ5N2RmMDEyY2EzNzZiYjg0MTg4
ZGEuLmIwYmQ1MzRjZTE5ZDczODYxZDgxNzZhODIwNWNkY2U2MTk1ZmQwNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyPiwgcHJpdmF0ZSBXZWJDb3JlOjpNZWRpYUNhblN0YXJ0TGlz
dGVuZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAgICAgflVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggNzMzNTI3NjU4NzFkODI1NWEyM2RiN2I1NWU2ZDQ0ZWU3MzM5MjJkNy4uMmU1N2FmMjQ4M2Jk
MzZiM2RkODVlNGVjMThkZGUxMGY0NDM2ZTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMiwzOCArMTMy
LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZE1l
c3NhZ2UoVCYmIG1lc3NhZ2UsIHNpemVfdCBieXRlCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKLXsKLSAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJbkJ5dGVz
KCk7Ci0gICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAg
ICByZXR1cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgp
KQotICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNl
bmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1l
c3NhZ2UpKTsKLQotICAgIHJldHVybiBTZW5kU3VjY2VzczsKLX0KLQotV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZm
ZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
Ci17Ci0gICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAg
ICByZXR1cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgp
KQotICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNl
bmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVu
Z3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVu
Z3RoKSk7Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KIGNsYXNzIEJsb2JMb2FkZXIg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmxvYkxvYWRlcihXZWJDb3JlOjpE
b2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgOiBtX2xvYWRlcihzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJM
b2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKKyAgICAgICAgOiBtX2xvYWRlcihtYWtl
VW5pcXVlPFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2Fk
ZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsKICAgICAgICAgbV9sb2FkZXIt
PnN0YXJ0KGRvY3VtZW50LCBibG9iKTsKQEAgLTIyNiw3ICsxOTksNyBAQCBjbGFzcyBQZW5kaW5n
TWVzc2FnZSB7CiAKICAgICBQZW5kaW5nTWVzc2FnZShXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1l
bnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6QmxvYikKLSAgICAgICAgLCBt
X2Jsb2JMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKQorICAgICAgICAsIG1fYmxvYkxvYWRlcihtYWtl
VW5pcXVlPEJsb2JMb2FkZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpCiAgICAgewogICAgIH0KIApAQCAtMjQ0LDEzICsyMTcsNDAgQEAgY2xhc3MgUGVuZGlu
Z01lc3NhZ2UgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7
CiB9OwogCitXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGF1dG8gYnl0ZUxlbmd0aCA9IG1lc3Nh
Z2Uuc2l6ZUluQnl0ZXMoKTsKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxl
bmd0aCkpCisgICAgICAgIHJldHVybiBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNz
YWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29j
a2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0aCk7CisgICAgZWxz
ZQorICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVz
c2FnZT4obWVzc2FnZSkpOworCisgICAgcmV0dXJuIFNlbmRTdWNjZXNzOworfQorCitXZWJTb2Nr
ZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgSlNDOjpB
cnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKK3sKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkp
CisgICAgICAgIHJldHVybiBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5p
c0VtcHR5KCkpCisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hh
bm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCB9IH0s
IGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5k
KG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KGJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVM
ZW5ndGgpKTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKwogV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKFdlYkNvcmU6OkJsb2ImIGJsb2Ip
CiB7CiAgICAgLy8gQXZvaWQgdGhlIEJsb2IgcXVldWUgYW5kIGxvYWRpbmcgZm9yIGVtcHR5IGJs
b2JzLgogICAgIGlmICghYmxvYi5zaXplKCkpCiAgICAgICAgIHJldHVybiBzZW5kKEpTQzo6QXJy
YXlCdWZmZXI6OmNyZWF0ZShibG9iLnNpemUoKSwgMSksIDAsIDApOwogCi0gICAgbV9wZW5kaW5n
TWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1l
bnQuZ2V0KCksIGJsb2IsIFt0aGlzXSB7CisgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1h
a2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0aGlzXSB7
CiAgICAgICAgIHdoaWxlICghbV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBhdXRvJiBtZXNzYWdlID0gbV9wZW5kaW5nTWVzc2FnZXMuZmlyc3QoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5jcHAKaW5kZXggMDk0YWM3MWY3ZTVlZmZhYjc0ODVmY2VmY2FlNTQ4OTNk
YjNlMDUwNi4uN2VjMzdjZGYwOWQzOTBhMzgyN2E2OWNhM2Y2MGE2YzMwNTZkYTcwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIEFzeW5jUmVzb2x2ZXJGYWN0b3J5
IDogcHVibGljIHdlYnJ0Yzo6QXN5bmNSZXNvbHZlckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKICAgICBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2Uq
IENyZWF0ZSgpIGZpbmFsCiAgICAgewpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBBc3luY1Jlc29s
dmVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKIAogcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJU
Q1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3Rvcnks
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uKQogewotICAgIHJldHVybiBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3Jl
YXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldl
YlJUQ05ldHdvcmsoKS5tb25pdG9yKCksICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9i
c2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRv
cigpLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxB
c3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmRp
c2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCmluZGV4
IDVkNjM4M2Y2YjUwNjUzYjVjNjcwNzA3MDVjNmMxMDI4NzBmYTAyMzEuLjM5OTA2OTlkMDc3OGZl
YjE3YjBjYThlNjA3ODE0MTA4YTVjMDBhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCkBAIC00
MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTGliV2ViUlRDU29ja2V0RmFj
dG9yeTsKIAogY2xhc3MgTGliV2ViUlRDUmVzb2x2ZXIgZmluYWwgOiBwdWJsaWMgcnRjOjpBc3lu
Y1Jlc29sdmVySW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBMaWJXZWJSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlmaWVyKSA6IG1faWRlbnRp
ZmllcihpZGVudGlmaWVyKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3Bw
CmluZGV4IGY4YjdlZDIyOWM0ZjZmMmRjMDM2MTMyY2M5NmU0MTFlZWNhNTcwMmUuLjIzNTgyZGU3
NTliOTg0NWViN2ZlNDA2NDQzNjVlZmJjMTliNzVkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29j
a2V0RmFjdG9yeS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGlubGluZSBydGM6OlNvY2tl
dEFkZHJlc3MgcHJlcGFyZVNvY2tldEFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJgog
CiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVT
ZXJ2ZXJUY3BTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZf
dCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0LCBpbnQgb3B0aW9ucykKIHsKLSAgICBhdXRvIHNv
Y2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1
ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyVENQLCBhZGRy
ZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVl
PExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJX
ZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwgYWRkcmVzcywgcnRjOjpTb2NrZXRBZGRyZXNz
KCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQo
KSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0gc29ja2V0LT5pZGVudGlm
aWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVzcyhhZGRyZXNzLCBtX2Rpc2FibGVO
b25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1heFBvcnQsIG9wdGlvbnNdKCkgewpA
QCAtNjYsNyArNjYsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRG
YWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFzeW5jUGFj
a2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVVZHBTb2NrZXQoY29uc3Qg
cnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBt
YXhQb3J0KQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENT
b2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0
OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKKyAgICBhdXRvIHNv
Y2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tl
dElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6VURQLCBhZGRyZXNzLCBydGM6OlNv
Y2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwg
c29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBzb2Nr
ZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9IHByZXBhcmVTb2NrZXRBZGRyZXNzKGFkZHJlc3Ms
IG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKSwgbWluUG9ydCwgbWF4UG9ydF0oKSB7
CkBAIC04MCw3ICs4MCw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6OlNvY2tlCiAKIHJ0Yzo6QXN5bmNQ
YWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUNsaWVudFRjcFNvY2tl
dChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGxvY2FsQWRkcmVzcywgY29uc3QgcnRjOjpTb2Nr
ZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyYmIHVzZXJBZ2VudCwgaW50IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1h
a2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlm
aWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OkNsaWVudFRDUCwgbG9jYWxBZGRyZXNzLCByZW1v
dGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0
PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlw
ZTo6Q2xpZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MpOwogICAgIHNvY2tldC0+
c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05ORUNUSU5HKTsKICAgICBtX3NvY2tl
dHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCkBAIC05Niw3ICs5
Niw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNy
ZWF0ZUNsaWVudFRjcFNvY2tldChjb25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQq
IExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZU5ld0Nvbm5lY3Rpb25Tb2NrZXQoTGliV2Vi
UlRDU29ja2V0JiBzZXJ2ZXJTb2NrZXQsIHVpbnQ2NF90IG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVu
dGlmaWVyLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZUFkZHJlc3MpCiB7Ci0gICAg
YXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsr
c191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlckNv
bm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5sb2NhbEFkZHJlc3MoKSwgcmVtb3RlQWRkcmVzcyk7
CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsr
c191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlckNv
bm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5sb2NhbEFkZHJlc3MoKSwgcmVtb3RlQWRkcmVzcyk7
CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENTb2NrZXQ6OlNUQVRFX0NPTk5FQ1RFRCk7
CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsK
IApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6ZGV0YWNo
KExpYldlYlJUQ1NvY2tldCYgc29ja2V0KQogCiBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2Uq
IExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUFzeW5jUmVzb2x2ZXIoKQogewotICAgIGF1
dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1Jlc29sdmVyPigrK3NfdW5p
cXVlUmVzb2x2ZXJJZGVudGlmaWVyKTsKKyAgICBhdXRvIHJlc29sdmVyID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSZXNvbHZlcj4oKytzX3VuaXF1ZVJlc29sdmVySWRlbnRpZmllcik7CiAgICAgYXV0
byogcmVzb2x2ZXJQb2ludGVyID0gcmVzb2x2ZXIuZ2V0KCk7CiAgICAgbV9yZXNvbHZlcnMuc2V0
KHJlc29sdmVyUG9pbnRlci0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKHJlc29sdmVyKSk7CiAgICAg
cmV0dXJuIHJlc29sdmVyUG9pbnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRl
eCAyZDFlODQyNDdiZDBhMzBjOTRkMWYyZWEzMDFkZDU1ZDAyYTZlMDc2Li5iMjcxM2Y0NmMxZmMx
M2M5ZjI3YmJlMzljYTVkYzUxODUwYjE4M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJQcm9jZXNzOwog
CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVt
ZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIp
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIoV2ViUHJvY2Vz
cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDE2YTFhN2Y4MzQ0
NjA1M2YzM2Q2NTRlODMzMzIyOTUwZWU5OTRkNzIuLmQ3M2YxZjE2Zjg5MDc2OWM3MmNjOWRkNDQw
ZDIyOTIxZmY1ZmZhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgewogICAgIGV4
cGxpY2l0IFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKE5ldHNjYXBlUGx1Z2luKiBwbHVnaW4p
CiAgICAgewogICAgICAgICBpZiAocGx1Z2luKQotICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVj
dG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpOworICAgICAg
ICAgICAgbV9wcm90ZWN0b3IgPSBtYWtlVW5pcXVlPFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRl
c3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9s
bGVyKCkpOwogICAgIH0KICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5k
ZXggNjlhM2M5M2YxMzI2ZmE0YzZmN2ZlYmY4YWIxYjJjYTRjNzc2YmMwZS4uNTlmNDgyNTFmMjg4
NTRjNmQxNjgwYjFkNjRkZmFhNWE0N2M2ODEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApA
QCAtMzUwLDcgKzM1MCw3IEBAIHVpbnQzMl90IE5ldHNjYXBlUGx1Z2luOjpzY2hlZHVsZVRpbWVy
KHVuc2lnbmVkIGludGVydmFsLCBib29sIHJlcGVhdCwgdm9pZCAoKnRpCiAgICAgLy8gRklYTUU6
IEhhbmRsZSB3cmFwcGluZyBhcm91bmQuCiAgICAgdW5zaWduZWQgdGltZXJJRCA9ICsrbV9uZXh0
VGltZXJJRDsKIAotICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPih0aGlz
LCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIg
PSBtYWtlVW5pcXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1l
ckZ1bmMpOwogICAgIAogICAgIC8vIEZJWE1FOiBCYXNlZCBvbiB0aGUgcGx1Zy1pbiB2aXNpYmls
aXR5LCBmaWd1cmUgb3V0IGlmIHdlIHNob3VsZCB0aHJvdHRsZSB0aGUgdGltZXIsIG9yIGlmIHdl
IHNob3VsZCBzdGFydCBpdCBhdCBhbGwuCiAgICAgdGltZXItPnN0YXJ0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaAppbmRleCBlMGFiYzJjN2I0MTI5OTMwMDJiYmFiOGJkZmFiN2YyNjUxYWRjNTdmLi5i
NmM3NmI2ZWQ3MTRjYWFhM2E0MWRkZTQxYzFkNmExMDRmYjdhZWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKQEAgLTMwOCw2ICszMDgsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQ
bHVnaW4gewogICAgIFZlY3Rvcjxib29sLCA4PiBtX3BvcHVwRW5hYmxlZFN0YXRlczsKIAogICAg
IGNsYXNzIFRpbWVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbWVyKTsKIAogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAwNDk2MjhmNWM2MjcwMmU0ZDVkNDExMTgyMDEy
M2JhNWY0Yjk2NTI0Li5iZGFhMTQ0Nzg0MjI2OTVkNTBlYTg0OGFhZmNjYmNlMTJkMmFkOTJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAg
dm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpCiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkg
ewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAgbV9kZWxpdmVyeURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4oKTsKKyAgICAgICAgICAgIG1f
ZGVsaXZlcnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7CiAKICAgICAgICAg
bV9kZWxpdmVyeURhdGEtPnJlc2VydmVDYXBhY2l0eShtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpICsg
bGVuZ3RoKTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gx
MS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4IDQ0ZDExYjU3YzNlYTZk
NTE4YzE4ZDA0YjgyMmQyODZkNTNlOTY4Y2YuLjA3ZDU1NmMzYjdmYzYzNzE5YzJhMjU1OWUwYWFk
NmMyMjZjMDdjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAt
MTM2LDEwICsxMzYsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDExPiBOZXRz
Y2FwZVBsdWdpblgxMTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2luJiBwbHUKIAogI2lmIFBMQVRGT1JN
KEdUSykKICAgICBpZiAocGx1Z2luLmlzV2luZG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxheSwgd2luZG93SUQp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBk
aXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkpOwogfQogCiBOZXRzY2FwZVBs
dWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVnaW4mIHBsdWdpbiwgRGlzcGxh
eSogZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmgKaW5kZXggNDFlOWI2
YzlkODRjYWE0OTU4ZTM4NWI5ZWQ4MGZkZDdlMTFkY2E1Yi4uMWY5ZmQ4N2ZhM2EzMGM5MzYwNDM4
ZWQ1OTdkYzMyYzg5NTg3YWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmgK
QEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXRzY2FwZVBsdWdp
bjsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5YMTEgZmluYWwgOiBwdWJsaWMgTmV0c2NhcGVQbHVn
aW5Vbml4IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDExPiBjcmVhdGUoTmV0c2NhcGVQbHVn
aW4mKTsKICAgICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYsIERpc3BsYXkqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaAppbmRleCBhMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRmZjRkMTc2YjM1Li5iNTcy
YWEzYTUzNmQ0ODVjYjliODE3YTE2ZTAyYzMzMmM0YmMyMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0xNTksNiAr
MTU5LDcgQEAgY2xhc3MgUGx1Z2luQ29udHJvbGxlciB7CiAKICAgICAvLyBIZWxwZXIgY2xhc3Mg
Zm9yIGRlbGF5aW5nIGRlc3RydWN0aW9uIG9mIGEgcGx1Zy1pbi4KICAgICBjbGFzcyBQbHVnaW5E
ZXN0cnVjdGlvblByb3RlY3RvciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3Io
UGx1Z2luQ29udHJvbGxlciogcGx1Z2luQ29udHJvbGxlcikKICAgICAgICAgICAgIDogbV9wbHVn
aW5Db250cm9sbGVyKHBsdWdpbkNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggZjM3YzJjYzI0ZTNkZDk3NjNmM2Vi
ZGQ2MzJkOGJmZGI3NzE0NDM0Ny4uOWFiNTgzNzMwYjg5ZGJkOTYwMWQ2NTIwZWY4ZjliMGJlMDA2
ZGM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcApAQCAtOTUsNyArOTUsNyBAQCBib29sIFBsdWdpblByb3h5Ojppbml0aWFsaXplKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgbV9jb25uZWN0aW9uLT5hZGRQbHVnaW5Q
cm94eSh0aGlzKTsKIAogICAgIC8vIEFzayB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBh
IHBsdWctaW4uCi0gICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7CisgICAgbV9wZW5kaW5nUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gbWFrZVVuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnM+KCk7CiAKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPnBsdWdpbklu
c3RhbmNlSUQgPSBtX3BsdWdpbkluc3RhbmNlSUQ7CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLT53aW5kb3dOUE9iamVjdElEID0gd2luZG93TlBPYmplY3RJRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA3
YWI4OTY2ZGI5MDVhZGQxMjM5NDgxNjUwYjE5ZGU0YTdlN2QyMjNmLi4xMTlkMmI5MGMyYjQ0MjMx
ZjI1Njk1N2U2MmRkY2E4ZjEzMGZjNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtODk4LDcgKzg5OCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQoTW91c2VFdmVudCYgZXZl
bnQpIGNvbnN0CiAgICAgaWYgKGV2ZW50Lm1ldGFLZXkoKSkKICAgICAgICAgbW9kaWZpZXJzLmFk
ZChXZWJFdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5idXR0b25zKCksIG1fcGx1
Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVudC5vZmZzZXRYKCksIGV2ZW50Lm9m
ZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50LCBt
b2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTW91
c2VFdmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5idXR0b25zKCksIG1fcGx1Z2luLT5jb252ZXJ0
VG9Sb290VmlldyhJbnRQb2ludChldmVudC5vZmZzZXRYKCksIGV2ZW50Lm9mZnNldFkoKSkpLCBl
dmVudC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdh
bGxUaW1lIHsgfSwgMCk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6aGFuZGxlRXZlbnQoRXZlbnQm
IGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZmYzA5YzRm
NjViMjQ1YjYwYmY0ZDRmNTk3YTlmOTBhZDRkMGFhZjkuLmExZmYwMzNiMjA0ZWFmYWRjODg4YTgy
MDhhODlmNzlkYTAwYmNmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
QEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpp
bnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyQ29udAogCiAgICAgLy8gRklY
TUU6IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBtb3ZlZCBkaXJlY3RseSB0byBXZWJDb3JlOjpTV0Nv
bnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uCiAgICAgLy8gSWYgaXQgd2VyZW4ndCBmb3IgU2Vydmlj
ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50J3MgZGVwZW5kZW5jZSBvbiBXZWJEb2N1bWVudExvYWRl
ciwgdGhpcyBjb3VsZCBhbHJlYWR5IGhhcHBlbi4KLSAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KCp0aGlz
LCBzZXNzaW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQsIGVmZmVj
dGl2ZVVzZXJBZ2VudCk7CisgICAgYXV0byBmcmFtZUxvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8
U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PigqdGhpcywgc2Vzc2lvbklELCBtX3BhZ2VJ
RCwgKyttX3ByZXZpb3VzU2VydmljZVdvcmtlcklELCBlZmZlY3RpdmVVc2VyQWdlbnQpOwogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IGZyYW1lTG9hZGVy
Q2xpZW50LmdldCgpOwogICAgIG1fbG9hZGVycy5hZGQoV1RGTW92ZShmcmFtZUxvYWRlckNsaWVu
dCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V09yaWdpblRhYmxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09y
aWdpblRhYmxlLmgKaW5kZXggOTIwZGVkMDQwY2U1NjE4MzM5OWY2YzkzYjgyZWIzNmRmNzMwNDk2
YS4uOTMwZTQ2MTgxOWUxODZmNWE4MGQ4ZjY3MTZmYjExOGM0ZGMwZWE4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaApAQCAt
MzcsNiArMzcsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdlYlNXT3JpZ2luVGFibGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFdlYlNXT3JpZ2luVGFibGUoKSA9IGRlZmF1bHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA0ZGY2ZjAxOWU1NTg1NzU1MmM4NGRm
YWI5MjUwYzQwMWE4NGNiODM1Li5mNGNmMjkxYTQwMTBiMWU3YzI0MTY3ZDQ1NGI1NGVjNGI4NjRj
NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBAIC0zMiw2ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggM2M4NzJmNWFkZjM5
YmVhY2QzYTcwNjY3YjI2ODlkMzhjOWIxMTEyZS4uNGQyNzQ3Njg2MjBlNWE0NmViOTUwOGZkZTQ3
YjU3MWU3OTZmMTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTc5Myw3ICs3OTMsNyBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLAogCiBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2Vy
PiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQm
IGNsaWVudCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2UsICZjbGllbnQsIGluaXRpYWxDb2xv
cik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29sb3JDaG9vc2VyPigmbV9wYWdlLCAmY2xp
ZW50LCBpbml0aWFsQ29sb3IpOwogfQogCiAjZW5kaWYKQEAgLTgwMiw3ICs4MDIsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hv
b3NlcihDb2xvckNob29zZXJDbAogCiBzdGQ6OnVuaXF1ZV9wdHI8RGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcihE
YXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPigmbV9wYWdlLCAmY2xpZW50KTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3Bh
Z2UsICZjbGllbnQpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBjZWQzNmE2
YzI1YjdlNGY4MzQ0YTU4OTk0MDA2NzkxZjdjYzkyNzZmLi5kNDU1NmQ5ODdhMzY2ZDE4MTE0MDhh
ZDkwYmY3YTM0N2RkNTk4ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBA
IGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlBhZ2UmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCA2YzI5YjRlMDgxMjZlN2NkNjY3OWNjNDcw
MjM1YzU1NzRkZTUwZDJlLi5jMWM4OWNkOTllODdhZWU4NGVkNTc0NmMyZTgxZjY0N2U4MmYxZmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50
IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVudChXZWJQYWdlKiBw
YWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggMWFkNGMzZGUy
Y2I3ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVkYTgyMS4uYjI0ZWNmNzZjNDU1MjRmNjBkODZhZWQ2
ZmIxZWNmNmYwZjM5NDIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9w
YWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMjY4MTAyZmVhMWE3NzU3ZWQ3ZTE2ZGRl
Y2NlM2NhZDhlZTZiZDQzNS4uZDIyZDRjYjczZjI5NzNmNTY1NWE4NzNlYmQyMmQ2YjAwNmFlMGYz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9y
Q2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCmluZGV4IDMwZjVhZDZiNGJjMmE2MzhkNjAzN2Y4ZWM5NzM4MDlkZjZl
NTZiMTguLjM1YTMxZmMyYTM0NGIzMTI4NzMwNTA0YjdmZTdhMTE1ZjAxMWI4ODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAg
ICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDdjZGFh
Y2QxZmMxZDQ2ZDY1ZWFkYzNmM2E2MTM0YWEzNTU4YTJkMTEuLmQ2N2I2MmMwMmU2ODgzYjQ0ODY1
ZmJhMTU4NTE2ZWEwY2JjYjVjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0x
NTEsNyArMTUxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghbV9wYWludEluZGljYXRvckxh
eWVyQ2xpZW50KQotICAgICAgICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRoaXMpOworICAgICAgICBt
X3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBtYWtlVW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JM
YXllckNsaWVudD4oKnRoaXMpOwogCiAgICAgYXV0byBwYWludExheWVyID0gR3JhcGhpY3NMYXll
cjo6Y3JlYXRlKG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKSwg
Km1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCk7CiAgICAgCkBAIC0xNjIsOSArMTYyLDkgQEAg
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgIHBhaW50TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigxLjBmLCAwLjBm
LCAwLjBmLCAwLjJmKSk7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmYWRlS2V5ZnJhbWVzKEFu
aW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKKyAgICBmYWRlS2V5ZnJhbWVz
Lmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKIAotICAgIGZh
ZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4o
MC4yNSwgMCkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmlt
YXRpb25WYWx1ZT4oMC4yNSwgMCkpOwogICAgIAogICAgIGF1dG8gb3BhY2l0eUFuaW1hdGlvbiA9
IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CiAgICAgb3BhY2l0eUFuaW1hdGlvbi0+c2V0RHVyYXRpb24o
MC4yNSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZjVlY2M2NGM5MjNmMzg2YzUwZTdi
NTI5NzdlZmMwOTllMGJjZmFkNi4uMjdjM2VlMTQyZTE2MTZlNDM1ZjQ4ZDQxZjI3MjcxNWZlOGUw
MzgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBX
ZWJQYWdlOwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCiBjbGFzcyBXZWJJ
bnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwcml2YXRl
IFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogZnJpZW5kIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudDsKIHB1YmxpYzoK
ICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViUGFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCA1MzNiZTg0MGNhZDcxNDU1NWRhZjBhYTIwNzI4
YTNjOTMzNTVjOWJlLi40YmIzN2ZkZDYwNzc3NGVkODA5YTk2N2E3NzUxNWZiYWZiNmVmNmExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtMzIsNiAr
MzIsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmgKaW5kZXggMTYzN2FkMTA5N2Q3NjQ5ZTUwZGY3NGY1ZTA2MjI3MjcxZmFiODQ1
YS4uMDBjYzBhMDhkOTI2MDRmZGRmYjVjYTYyZjZiODg1OTVjMzFhYjBkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJO
b3RpZmljYXRpb25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJQYWdlKik7CiAgICAgdmly
dHVhbCB+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJy
aWRlcy5jcHAKaW5kZXggNzkwMDg0Y2U0OGQyMjZiMTBlNjY1YjgyODQ0MzQ5ZmRhYWZmZWU0Ni4u
NjlmMGFlODI3OTUwN2I3Mjk2NWY2NWMyMTY4NzNjNDgxYWRmNGQ2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlk
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFdlYlBhc3RlYm9h
cmRPdmVycmlkZXM6OmFkZE92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cgogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vdmVycmlkZXNNYXAuYWRkKHBhc3RlYm9h
cmROYW1lLCBudWxscHRyKTsKIAogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5
cGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+
PigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50
OF90Pj4+IHR5cGVNYXAgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhf
dD4+PigpOwogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZSh0eXBl
TWFwKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAppbmRleCBmNmUwMTQ5NTdlZGMyNzdkYjk4
MzczMTI3ZWMxMDYzZTkzNTU4Y2I4Li5jZjkwYTVkZmNmZGE2M2VjYjk4OTdjYzY2ZDBkNDgxMjk0
NDgxM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGx1Z0luQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUGx1Z0luQ2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OlBsdWdJbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgV2ViUGx1Z0luQ2xpZW50KFdlYlBhZ2UmKTsKICAgICB2aXJ0
dWFsIH5XZWJQbHVnSW5DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQu
aAppbmRleCA1ZGQ2NWJmYTBkNTBjY2ZkYjE0NjFmZWIzZmU1MjQxZmNhYTBmYmE2Li42M2Q3NzRl
NWE5NDI3YzczNWI1MjQ5MGJkMDFjZDc5YWI3NGExMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNz
VHJhY2tlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50IDogcHVibGljIFdl
YkNvcmU6OlByb2dyZXNzVHJhY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KFdlYlBh
Z2UmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaAppbmRleCBlYWQx
N2QzMGYwNTkwZDc0NDY3MjA1NWNhZDc3ZDk1YzZkMGE0NzcwLi43YmQ4NzU5MDVhNjVjNzdkOTZj
M2Y3ODg0MDAxODU4MmNmYWY3NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsK
ICAgICAKIGNsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpT
cGVlY2hTeW50aGVzaXNDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudChXZWJQYWdlJiBwYWdlKQogICAgICAg
ICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCmluZGV4IDEwOTMwNDUzY2U3
OTdlZGQ5MGRlNzZmMDM1NGI5YTFkNDA2ZjJlNmUuLjY5NTIxNzRiOTEyYzk3MWUzNTc4NmUyN2M0
ODIyNWQyZmNhMTQwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKQEAgLTI5LDYgKzI5LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJVc2VyTWVk
aWFDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJVc2VyTWVkaWFDbGllbnQoV2ViUGFn
ZSYpOwogICAgIH5XZWJVc2VyTWVkaWFDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFD
b29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcApp
bmRleCA5Y2ZmY2M5YTlmZDJiNjQ0NDkyMmY4NTRhZDk3ZDFkMzMxZTcwYjBlLi5iMjQ1ODFjOTdl
N2E4ODE2ZjQ2YWY5MzE5YTkxZWEyMWI3MmJkNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBA
IC01NTAsNyArNTUwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkKICAgICAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpOwogICAg
IH0gZWxzZSB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAgICBtX2xheWVy
VHJlZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyVHJlZUhvc3Q+KG1fd2ViUGFnZSk7Cisg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQ
YWdlKTsKICNlbHNlCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG51bGxwdHI7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcAppbmRleCBjMDczOTZmMDJmMWZhNjVmNDVhY2VlNzJmMTM0ZjRmYjJkOWU4OTA5Li41
MzU4Y2Q2ODYzYjMyMjY5NThlZTI3NGVmZDAzMmFkMjAwNjRkZDY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC01MCwxMyArNTAs
MTMgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5nQXJlYTo6Y3JlYXRlKFdl
YlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2UKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFu
aW1hdGlvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVy
cyk7CiAjZW5kaWYKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZToKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+
KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZWxpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKICAgICBjYXNlIERyYXdp
bmdBcmVhVHlwZUNvb3JkaW5hdGVkR3JhcGhpY3M6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVy
cyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFw
aGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCmluZGV4IDBmMjY0
MDNlYmI3MGE4MTFiMThlOTg3OTVlMTlkZTc3NDBiZTgzNjAuLjFhNTM1ZjE3ZDk3ZjY2NjgzOTcy
NjlhODZlMjg1N2IyOWI5NzJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEZpbmRDb250cm9sbGVyIDogcHJpdmF0ZSBX
ZWJDb3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGaW5kQ29udHJvbGxlcik7CiAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXgg
NDUyZjUzYmNlZGMwMDQ3ZjczM2QxYzM0YmNkNzY1MTE5MmNiOGJlNi4uNDZlOGFhMDk5ODY0NWE4
Y2U1ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQobV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsKIAogICAgIGlmICghbV9wcm9wZXJ0aWVzLmJhY2tp
bmdTdG9yZSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOworICAgICAgICBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4odGhp
cyk7CiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKIH0KQEAgLTUyMSw3ICs1MjEsNyBAQCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnRyYW5zZm9ybSgpIGNv
bnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAgbV9w
cm9wZXJ0aWVzLnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZh
bHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNTMyLDcgKzUzMiw3
IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c3VibGF5ZXJU
cmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U3VibGF5
ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1f
cHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0g
PSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0
aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U3Vi
bGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKQogewotICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxGaWx0
ZXJPcGVyYXRpb25zPihmaWx0ZXJzKTsKKyAgICBtX3Byb3BlcnRpZXMuZmlsdGVycyA9IG1ha2VV
bmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQ
cm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RmlsdGVyc0NoYW5n
ZWQpOwogfQogCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFIKICAg
ICBpZiAobV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgJiYgKm1fcHJvcGVydGllcy5zaGFw
ZVJvdW5kZWRSZWN0ID09IHJvdW5kZWRSZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVk
UmVjdD4ocm91bmRlZFJlY3QpOworICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID0g
bWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAgbV9wcm9wZXJ0
aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U2hh
cGVSb3VuZGVkUmVjdENoYW5nZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGls
ZWRCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCmluZGV4IDFjYmQx
YjRiYTc5YTdkZjljZTU1ZTA0MjFkNDRlNjViNDA4ODIxYzIuLjA5OTUzNmI5M2MwMTFhYzNmMmEw
NzNjM2NhNDY0ZjA3MjY0NjljZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCkBAIC0zNiw3ICszNiw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxl
ZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyhMYXllclR5cGUgbGF5
ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250
ZXh0JiBjb250ZXh0KQogICAgIDogUGxhdGZvcm1DQUxheWVyUmVtb3RlKGxheWVyVHlwZSwgb3du
ZXIsIGNvbnRleHQpCi0gICAgLCBtX3RpbGVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8VGls
ZUNvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV90aWxlQ29udHJvbGxlcihtYWtlVW5pcXVlPFRp
bGVDb250cm9sbGVyPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDVlNTBlMGJhMWVmMTI0NmM2YWUw
OGYyOWQ5MmE4MzBlMGRiNGYyMzcuLjQ0NDZmMzRkMDRjY2ZiZmJlYjM2OWJhNDRjMzIwNmJmMGRk
MjNlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShX
ZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCBw
YXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciwgd2ViUGFnZSkKLSAgICAsIG1fcmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+
KHdlYlBhZ2UpKQorICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KG1ha2VVbmlxdWU8UmVt
b3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCiAgICAgLCBtX3Jvb3RMYXllcihHcmFwaGlj
c0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQogICAgICwgbV9s
YXllckZsdXNoVGltZXIoKnRoaXMsICZSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hM
YXllcnMpCiB7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbi50cmFu
c2FjdGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9uLCBzY3JvbGxp
bmdUcmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6
RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1p
dExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogICAgIGNvbW1pdEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsK
IAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1l
bnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5oCmluZGV4IGFhZGUzZDlmMTg0NGQ3ZjA1YzA5MjE4ZDhlMjA0NGQ1OGEyZjA1
ZjguLmIyYmRjNDFiNzIzMzZiYjZlNDg0OTBmNzMxYjI0ODVkMjcwNzgyZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdlJik7
CiAgICAgflZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA2MGNmZDhkMmExNzU0YTdhY2Vk
NThkNjFkZjE3YmU0YzE0MzEzNjk0Li5iZGQ0YjM5NTI1NGE3MTY3NjM5YWVjZDczODYwZTA3MmQ2
OWM0MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0
aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIAogUmVmPFdl
YkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewot
ICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNs
aWVudD4oKSk7CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShtYWtlVW5pcXVlPFdlYkZyYW1lTG9h
ZGVyQ2xpZW50PigpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGF1dG8gY29yZUZyYW1l
ID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25lckVsZW1lbnQsIGZyYW1lLT5t
X2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTMzNjU3MGQ5M2FhNTExMDY5Nzg1NjExNzAyNjA4OTNi
OGEzY2RiNC4uZGIzMmRhNDgxMzllMTlmNzE0MjEyNTY1NDBhMjE2MzIzNGNjOTEwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4MywyMSAr
MzgzLDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fdGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5KG1ha2VVbmlxdWVSZWY8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Pigq
dGhpcykpCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQotICAg
ICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQorICAgICwgbV92aWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yKG1ha2VVbmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRo
aXMpKQogI2VsaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKICAgICAs
IG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQogI2VuZGlmCiAgICAgLCBtX3NldENhblN0
YXJ0TWVkaWFUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlOjpzZXRDYW5TdGFy
dE1lZGlhVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29u
dGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
Q29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlm
Ci0gICAgLCBtX2VkaXRvckNsaWVudCB7IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBtX2xvYWRlckNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGll
bnQ+KCkpCi0gICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCisg
ICAgLCBtX2VkaXRvckNsaWVudCB7IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRp
dG9yQ2xpZW50PigpIH0KKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCisgICAgLCBtX2xvYWRlckNsaWVudChtYWtlVW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCkpCisgICAgLCBtX3Jlc291
cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9h
ZENsaWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlVUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKG1ha2VVbmlxdWVS
ZWY8RmluZENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI+KCp0
aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBh
Z2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3VzZXJDb250ZW50
Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBhcmFtZXRl
cnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAg
ICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIobWFrZVVuaXF1ZVJlZjxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMpKQpAQCAtNDY0LDIxICs0
NjQsMjEgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBs
dWdJbkNsaWVudCA9IG5ldyBXZWJQbHVnSW5DbGllbnQoKnRoaXMpOwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVu
dDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcgV2Vi
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFn
bm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ+KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJmb3JtYW5jZUxvZ2dp
bmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4o
KnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViUGVy
Zm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAg
cGFnZUNvbmZpZ3VyYXRpb24ud2ViR0xTdGF0ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMU3RhdGVUcmFja2VyPihbdGhpc10oYm9vbCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wp
IHsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlciA9IG1ha2VVbmlxdWU8
V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJH
TCkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldElzVXNpbmdIaWdo
UGVyZm9ybWFuY2VXZWJHTChpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpKTsKICAgICB9KTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTcGVlY2hT
eW50aGVzaXNDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5zcGVlY2hTeW50
aGVzaXNDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRoaXMp
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi52
YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1l
c3NhZ2VDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVz
c2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlz
KTsKICNlbmRpZgogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UgPSAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKTsK
QEAgLTQ5MywxNCArNDkzLDE0IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcj4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigq
dGhpcyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBw
YWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gcGFyYW1ldGVycy5hcHBsaWNh
dGlvbk1hbmlmZXN0OwogI2VuZGlmCiAKLSAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBtX3BhZ2UgPSBtYWtlVW5pcXVl
PFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIC8vIFNldCB0aGUgc2Vz
c2lvbklEICpiZWZvcmUqIHVwZGF0aW5nIHRoZSBwcmVmZXJlbmNlcyBhcyB0aGUgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCBwcmVmZXJlbmNlcyBtYXkgbmVlZCB0byBvdmVycmlkZSBpdC4KICAgICBp
ZiAocGFyYW1ldGVycy5zZXNzaW9uSUQuaXNWYWxpZCgpKQpAQCAtODUzLDcgKzg1Myw3IEBAIHVp
bnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHZvaWQg
V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PiYmIGNvbnRleHRN
ZW51Q2xpZW50KQogewogICAgIGlmICghY29udGV4dE1lbnVDbGllbnQpIHsKLSAgICAgICAgbV9j
b250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIFdlYlBh
Z2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SW5qZWN0ZWRCdQogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PiYmIGVk
aXRvckNsaWVudCkKIHsKICAgICBpZiAoIWVkaXRvckNsaWVudCkgewotICAgICAgICBtX2VkaXRv
ckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xp
ZW50PigpOworICAgICAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04
NzQsNyArODc0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZToKIHZvaWQgV2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVu
ZGxlOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7
Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZv
cm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkYKIHZvaWQgV2Vi
UGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PiYmIGxvYWRlckNsaWVudCkKIHsK
ICAgICBpZiAoIWxvYWRlckNsaWVudCkgewotICAgICAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAg
ICAgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkwNSw3ICs5
MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVu
dChXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNlKgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIW1fcmVzb3Vy
Y2VMb2FkQ2xpZW50KQotICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOworICAgICAg
ICBtX3Jlc291cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UmVzb3VyY2VMb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZUxvYWRD
bGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpJbmplY3RlZEIKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PiYmIHVpQ2xp
ZW50KQogewogICAgIGlmICghdWlDbGllbnQpIHsKLSAgICAgICAgbV91aUNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgICAg
ICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGll
bnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0MTAsMTQgKzE0MTAsMTQgQEAg
dm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQotICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGll
bnQ+KCk7CiAjZW5kaWYKLSAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKLSAgICBt
X2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZUxvYWRlckNsaWVudD4oKTsKKyAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VV
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICBtX2xvYWRlckNs
aWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4o
KTsKICAgICBtX3BvbGljeUNsaWVudC5pbml0aWFsaXplKDApOwotICAgIG1fcmVzb3VyY2VMb2Fk
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxv
YWRDbGllbnQ+KCk7Ci0gICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7Cisg
ICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xp
ZW50PigpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX2Z1bGxTY3JlZW5DbGll
bnQuaW5pdGlhbGl6ZSgwKTsKICNlbmRpZgpAQCAtNDY5Niw3ICs0Njk2LDcgQEAgdm9pZCBXZWJQ
YWdlOjpiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJp
bnRJbmZvKQogI2VuZGlmCiAKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KSB7Ci0gICAgICAgIG1f
cHJpbnRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+KGNvcmVGcmFtZSk7
CisgICAgICAgIG1fcHJpbnRDb250ZXh0ID0gbWFrZVVuaXF1ZTxQcmludENvbnRleHQ+KGNvcmVG
cmFtZSk7CiAgICAgICAgIG1fcGFnZS0+ZGlzcGF0Y2hCZWZvcmVQcmludEV2ZW50KCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCA3MzU2NmExMzM4NWRlM2FhYzY0NmZi
OTQ5NmJkZGFmY2I1YWY0NmI2Li4zMWVmZjExZjdhZTBhM2ViOGNmYmI2ZmYyYjNkYmE1MTYyNGMx
ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTIxMyw2ICsyMTMsNyBAQCBjbGFz
cyBXZWJQcmludE9wZXJhdGlvbkd0a1dpbjMyIGZpbmFsOiBwdWJsaWMgV2ViUHJpbnRPcGVyYXRp
b25HdGsgewogI2VuZGlmCiAKIHN0cnVjdCBQcmludFBhZ2VzRGF0YSB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFByaW50UGFnZXNEYXRhKFdlYlByaW50T3BlcmF0
aW9uR3RrKiBwcmludE9wZXJhdGlvbikKICAgICAgICAgOiBwcmludE9wZXJhdGlvbihwcmludE9w
ZXJhdGlvbikKICAgICAgICAgLCB0b3RhbFByaW50ZWQoLTEpCkBAIC03MjYsNyArNzI3LDcgQEAg
dm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
LCBkb3VibGUgeERQSSwgZG91YmxlIHkKIHsKICAgICBBU1NFUlQobV9wcmludENvbnRleHQpOwog
Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludFBhZ2VzRGF0YT4odGhpcyk7
CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQcmludFBhZ2VzRGF0YT4odGhpcyk7CiAgICAg
aWYgKCFkYXRhLT5pc1ZhbGlkKSB7CiAgICAgICAgIGNhaXJvX3N1cmZhY2VfZmluaXNoKHN1cmZh
Y2UpOwogICAgICAgICBwcmludERvbmUoaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoZnJhbWVVUkwo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0Zp
bmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L0ZpbmRDb250cm9sbGVySU9TLm1tCmluZGV4IDlhYmIyYTc5Mjk5ZDU5NmI5MWU2ZWY2MWNhNDNl
Zjg2MTkwYTkwNDkuLjkzNDE4YWIyMWQ3NGZjOTQ1OGEwMjI0ZTRjYjQ4YTczNDE3ODA5ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJv
bGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmlu
ZENvbnRyb2xsZXJJT1MubW0KQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGaW5kQ29udHJvbGxlcjo6
dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdP
dmUKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbmRJbmRp
Y2F0b3JPdmVybGF5Q2xpZW50SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdldCgp
KTsKKyAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50ID0gbWFrZVVuaXF1ZTxGaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4dEluZGljYXRvci5nZXQo
KSk7CiAgICAgbV9maW5kSW5kaWNhdG9yUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodGV4dEluZGlj
YXRvci0+c2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpKTsKICAgICBtX2ZpbmRJ
bmRpY2F0b3JPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqbV9maW5kSW5kaWNhdG9yT3Zl
cmxheUNsaWVudCwgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7CiAgICAgbV93
ZWJQYWdlLT5jb3JlUGFnZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5pbnN0YWxsUGFnZU92
ZXJsYXkoKm1fZmluZEluZGljYXRvck92ZXJsYXksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RG9O
b3RGYWRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9EcmF3aW5nQXJlYU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvRHJhd2luZ0FyZWFNYWMuY3BwCmluZGV4IDkwNjg3Yzk3NGFjZjMzZDgyYjhjNjRiOTQ4ZTZl
ZTlhMzBlZTJlOWMuLjA2ZmNjNDcxNTkzZWI3OGVkZWJmY2M2M2Y4OTQ0YjNkZmFlOWRhYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJl
YU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdp
bmdBcmVhTWFjLmNwcApAQCAtODMsNyArODMsNyBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCiAgICAgaWYgKCFtX2hhc1NlbnRNZXNzYWdl
KSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGluayht
X29ic2VydmVySUQsIGRpc3BsYXlJRCgpKSwgMCk7CiAgICAgICAgIG1faGFzU2VudE1lc3NhZ2Ug
PSB0cnVlOwotICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVu
TG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKKyAgICAgICAgbV9ydW5M
b29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9vcEVudHJ5
LCBbdGhpc10oKSB7CiAgICAgICAgICAgICB0aGlzLT5tX2ZpcnN0Q2FsbGJhY2tJbkN1cnJlbnRS
dW5sb29wID0gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fcnVuTG9vcE9ic2VydmVyLT5z
Y2hlZHVsZShDRlJ1bkxvb3BHZXRDdXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tCmluZGV4IGRmNjAwMzY0NTk4ZjEzNDYyOWRhYjYyNzA2ZWFmNjg2MWU1
ZmYzM2QuLjRjYjNkZjlhZWE1MjllZmY1MjYzMzZjODFmMTMwMjA0NWJhM2UwYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg3LDcgKzg3LDcgQEAgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
KFdlYlBhZ2UmIHdlYlBhZ2UsIGMKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0T3BhcXVlOllFU107
CiAgICAgW21faG9zdGluZ0xheWVyIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwogCi0gICAgbV9s
YXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpSdW5M
b29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtu
b3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBtX2xheWVyRmx1
c2hSdW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4o
c3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3Jk
ZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgewogICAgICAgICB0aGlzLT5sYXllckZsdXNoUnVu
TG9vcENhbGxiYWNrKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBhMmRhMTJjNjAyMjkzNzNjZjg3ODkyYjgzZGFhNTc3MzUwMGE3N2YyLi5h
OWUzNzQ0NGZiZDM2ODQ0YTQ5MjhjOTYxMjJkNzRlZDFmMGZiYjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTczLDcgKzE1NzMsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbgogICAgIEFTU0VSVCghbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVD
b3VudGVyKTsKICAgICBtX2NvdW50T2ZQYWdlc0ZhaWxpbmdUb01hcmtWb2xhdGlsZSA9IDA7CiAK
LSAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXI+KFt0aGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmQ291bnRlckV2ZW50KSB7
CisgICAgbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyID0gbWFrZVVuaXF1ZTxQ
YWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyPihbdGhpcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50ZXJFdmVudCkgewogICAg
ICAgICBpZiAobV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyLT52YWx1ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xODM4LDcgKzE4MzgsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OnNldEVuYWJsZWRTZXJ2aWNlcyhib29sIGhhc0ltYWdlU2VydmljZXMsIGJvb2wgaGFzU2Vs
ZWN0aW9uU2VydgogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJv
eHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikKIHsKLSAgICBtX2F1dG9tYXRpb25T
ZXNzaW9uUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+
KHNlc3Npb25JZGVudGlmaWVyKTsKKyAgICBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBtYWtl
VW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+KHNlc3Npb25JZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpCkBAIC0x
ODcxLDcgKzE4NzEsNyBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKCkgY29u
c3QKIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogewog
ICAgIGlmICghbV9saWJXZWJSVENOZXR3b3JrKQotICAgICAgICBtX2xpYldlYlJUQ05ldHdvcmsg
PSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ05ldHdvcms+KCk7CisgICAgICAgIG1fbGliV2Vi
UlRDTmV0d29yayA9IG1ha2VVbmlxdWU8TGliV2ViUlRDTmV0d29yaz4oKTsKICAgICByZXR1cm4g
Km1fbGliV2ViUlRDTmV0d29yazsKIH0KIApAQCAtMTg4Miw3ICsxODgyLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
dWludDY0X3QgcGFnZUcKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWlu
ZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
IGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCiAgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9
IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKHN0ZDo6bWFrZV91bmlxdWU8
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElE
LCBwYWdlSUQsIHN0b3JlKSk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0
Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGND
b25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBzdG9yZSkpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKaW5kZXggZDRjMDFiYWIxZjkzZGE5MDg1YjBmMjE5NGNkMzI3ZDQ3MTg2
NTBiMi4uMmY0ZmI1MzBhYmNlZDdlZmM3Mzc2NDIyMzA5ZmQzMTg4N2E0N2IwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMzMsNiArMTMzLDcgQEAgY2xhc3MgV2Vi
UHJvY2VzcwogICAgICwgUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpDbGllbnQKICNlbmRpZgog
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBXZWJQ
cm9jZXNzJiBzaW5nbGV0b24oKTsKICAgICBzdGF0aWMgY29uc3RleHByIFByb2Nlc3NUeXBlIHBy
b2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ7CkBAIC0xNDYsNyArMTQ3LDcgQEAg
Y2xhc3MgV2ViUHJvY2VzcwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRk
U3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVt
ZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7CisgICAgICAgIG1fc3VwcGxl
bWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsKICAg
ICB9CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJv
Y2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5jcHAKaW5kZXggMjcyMGI4NmZjZDJmZmVlNjAyMmY1YWQ1ZWVkNTBiY2YzNjkyZDdmOC4u
OWFmMDBlZThhYTBmMWNkODQwYTgxNzM3OTBmYTA2MjMwMDQ2ZmRlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpT
b3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiAgICAgewogICAgICAgICBBU1NF
UlQoZGV2aWNlVHlwZSAhPSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duKTsKICAg
ICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBtX3JpbmdCdWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5n
QnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOworICAgICAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFr
ZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2U+KG51bGxwdHIpKTsKICAgICB9CiAKICAgICB+U291cmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKaW5k
ZXggYmFlZDBjZDllMDliNDlkMjIxZTk0MDE4ZjY0OWZlNmRiY2Y5MjUxOS4uYzFkNDNmY2IzYWY1
ODQxNDUzYWQzNDM0YzdjZjkzZWJmYzllN2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKQEAgLTQ2LDYg
KzQ2LDcgQEAgY2xhc3MgQ3Jvc3NQcm9jZXNzUmVhbHRpbWVBdWRpb1NvdXJjZTsKIGNsYXNzIFdl
YlByb2Nlc3M7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIDogcHVibGljIFdlYlBy
b2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJD
b3JlOjpBdWRpb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6VmlkZW9DYXB0dXJlRmFj
dG9yeSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIoV2ViUHJvY2VzcyYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
aW5kZXggYjQ3ZDFkOGFmYTAzZmVkMzZkZWNhZDk4OWQ3MmRiYzQxODQ4N2Y1OS4uM2I5MDZhODBj
NWFkOGY2OWJlZjc3ZjlhOGM3NjRhZjgwOWY0OTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zMTAsNyArMzEwLDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKFByb2Nlc3NUYXNrU3Rh
dGVPYnNlcnZlcjo6VGFza1N0YXRlIHQKIAogICAgIC8vIFdlIHdlcmUgYXdha2VuZWQgZnJvbSBz
dXNwZW5zaW9uIHVuZXhwZWN0ZWRseS4gTm90aWZ5IHRoZSBXZWJQcm9jZXNzUHJveHksIGJ1dCB0
YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gb24gb3VyIHBhcmVudCBQSUQKICAgICAvLyB0byBlbnN1
cmUgdGhhdCBpdCB0b28gaXMgYXdha2VuZWQuCi0gICAgYXV0byB1aVByb2Nlc3NBc3NlcnRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5IHJlc3VtZWQiLCBBc3NlcnRp
b25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5pc2hUYXNrKTsKKyAgICBh
dXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCksICJVbmV4cGVjdGVkbHkg
cmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246OkZp
bmlzaFRhc2spOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5z
dXNwZW5kZWQoKSwgW3VpUHJvY2Vzc0Fzc2VydGlvbiA9IFdURk1vdmUodWlQcm9jZXNzQXNzZXJ0
aW9uKV0geyB9KTsKIH0KICNlbmRpZgpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgV2ViUHJvY2Vz
czo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24gcmVhc29uKQog
ICAgIH0KIAogICAgIGlmICghbV9jcHVNb25pdG9yKSB7Ci0gICAgICAgIG1fY3B1TW9uaXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBbdGhp
c10oZG91YmxlIGNwdVVzYWdlKSB7CisgICAgICAgIG1fY3B1TW9uaXRvciA9IG1ha2VVbmlxdWU8
Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVzYWdl
KSB7CiAgICAgICAgICAgICBpZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6U2Vydmlj
ZVdvcmtlcikKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxv
Z2dpbmcsICIlcCAtIFNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgZXhjZWVkZWQgQ1BVIGxpbWl0IG9m
ICUuMWYlJSAod2FzIHVzaW5nICUuMWYlJSkiLCB0aGlzLCBtX2NwdUxpbWl0LnZhbHVlKCkgKiAx
MDAsIGNwdVVzYWdlICogMTAwKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggMzY5MDk1Y2Rh
ZDFkMzQ3MTFhMDY3NmQ4NzM2YTkwZTE5M2UyOTA1ZS4uMjI4ZjRhMzZkNGIwZjIyMmMxNzg2MGQw
YmM0OThjMWY5ZTA4OWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVmPFN0b3JhZ2VTeW5j
TWFuYWdlcj4gU3RvcmFnZVN5bmNNYW5hZ2VyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQog
fQogCiBTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcihjb25zdCBTdHJpbmcm
IHBhdGgpCi0gICAgOiBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkp
CisgICAgOiBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAgICAgLCBtX3Bh
dGgocGF0aC5pc29sYXRlZENvcHkoKSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4IDQ0
MzkzODI5NWY0ZTFjMjlkZDA0ODZiNDMxYmE3ZmVhMzUyOWQxNmQuLjljNzUxNGUzNDYyYzRiNGQ4
YTg1NjA1ZWQwMjlkYmQxOTI1ZDZiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFk
OjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxlZCgpICYmIG1fdGhyZWFk
KTsKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+
PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRo
cmVhZDo6dGVybWluYXRlKCkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0
ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7
CisgICAgbV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3RoaXNd
IHsKICAgICAgICAgcGVyZm9ybVRlcm1pbmF0ZSgpOwogICAgIH0pKTsKICAgICBtX3RocmVhZC0+
d2FpdEZvckNvbXBsZXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwCmluZGV4IGI5MzRkMWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNm
NzdmYTIuLjgwNmNiMDk5NWQwYTA3YzcxODI3MWQyMTA1MDcwMzk4YzQwM2JjODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtOTgsNyAr
OTgsNyBAQCBTdG9yYWdlVHJhY2tlciYgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKQogU3RvcmFn
ZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgpCiAgICAg
OiBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0b3JhZ2VQYXRoLmlzb2xhdGVkQ29weSgpKQogICAg
ICwgbV9jbGllbnQoMCkKLSAgICAsIG1fdGhyZWFkKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVRo
cmVhZD4oKSkKKyAgICAsIG1fdGhyZWFkKG1ha2VVbmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKICAg
ICAsIG1faXNBY3RpdmUoZmFsc2UpCiAgICAgLCBtX25lZWRzSW5pdGlhbGl6YXRpb24oZmFsc2Up
CiAgICAgLCBtX1N0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkZWZhdWx0U3RvcmFnZURhdGFi
YXNlSWRsZUludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCmluZGV4IDQzZWE0
NWRhZTg5MjA2YzgyOWE1MTRkNGRhOGUzZDFjOTdjYzEyODQuLjg1MWNjMTAxN2RlZDAwYzA2ZDQ2
ZDJjODU5ZDcwMDAwYjZkNzJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKQEAg
LTU1LDcgKzU1LDcgQEAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXA6OnN0b3JhZ2VTZXNzaW9uKGNvbnN0IFAKIFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKQogewogICAgIGlmICghZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQotICAg
ICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSk7CisgICAgICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gKmRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24oKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9yYWdl
ID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBkZWZhdWx0TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShz
ZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdU
Rk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMCwxMSArMTAwLDExIEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRv
cHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tp
ZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdl
U2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogCiAjZWxpZiBVU0UoQ1VSTCkKICAg
ICBnbG9iYWxTZXNzaW9uTWFwKCkuZW5zdXJlKHNlc3Npb25JRCwgW3Nlc3Npb25JRF0gewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24+KHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKICAgICB9KTsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcAppbmRleCAxODc2Yjk2MGI5NDcwODE0YzM1MGJjNTkyNmE0Yzgx
YWVkZjM5MDIzLi43Yjg2OTgxYTNmNDhlNTBmOGIzY2NhYzM3MDY5MTdkNGFmMWZkYmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtMTU5LDUgKzE1OSw1IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gV2Vi
SW5zcGVjdG9yQ2xpCiAgICAgICAgICAgICBkZWxldGVTZXR0aW5nKG5hbWUpOwogICAgICAgICB9
CiAgICAgfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNl
dHRpbmdzQ0Y+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0
aW5nc0NGPigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCAzYjFhNDUwNzA3OGZhNGNj
MDY4ZTc0MDMwMzIyMTIzOWIyYWQ3MTIzLi4xNDU3NzIyMmE5ZTEzZTYzZTQ5MWQ2ZDNiOTJjYTFi
Yzg5ZTdjYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaApAQCAtMjgsNiArMjgsNyBAQAogI2lt
cG9ydCAiV2ViQ2hyb21lQ2xpZW50LmgiCiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudElPUyBmaW5h
bCA6IHB1YmxpYyBXZWJDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudElPUyhXZWJWaWV3KiB3ZWJWaWV3KQogICAg
ICAgICA6IFdlYkNocm9tZUNsaWVudCh3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29u
dGVudC5tbQppbmRleCAyMTdhNGVkMGE4NWE2YmI0MTRkMzE5NGNiN2JmYWVmZGUwMzZkNDdhLi44
ZGFkNjA0NDYyZjgzNzY0NTczZjAwNjI5ZWExMDQ5ZWViODZkYzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhl
ZFBvc2l0aW9uQ29udGVudC5tbQpAQCAtMTc4LDcgKzE3OCw3IEBAIC0gKHZvaWQpc2V0Vmlld3Bv
cnRDb25zdHJhaW5lZExheWVyczooV1RGOjpIYXNoTWFwPENBTGF5ZXIgKiwgc3RkOjp1bmlxdWVf
cHRyPFdlCiAKICAgICBmb3IgKGF1dG8mIGxheWVyQW5kQ29uc3RyYWludHMgOiBsYXllck1hcCkg
ewogICAgICAgICBDQUxheWVyKiBsYXllciA9IGxheWVyQW5kQ29uc3RyYWludHMua2V5OwotICAg
ICAgICBhdXRvIGxheWVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5l
ZExheWVyRGF0YT4oKTsKKyAgICAgICAgYXV0byBsYXllckRhdGEgPSBtYWtlVW5pcXVlPFZpZXdw
b3J0Q29uc3RyYWluZWRMYXllckRhdGE+KCk7CiAKICAgICAgICAgbGF5ZXJEYXRhLT5tX2VuY2xv
c2luZ0FjY2VsZXJhdGVkU2Nyb2xsTGF5ZXIgPSBzdGlja3lDb250YWluZXJzLmdldChsYXllcik7
CiAgICAgICAgIGxheWVyRGF0YS0+bV92aWV3cG9ydENvbnN0cmFpbnRzID0gV1RGTW92ZShsYXll
ckFuZENvbnN0cmFpbnRzLnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rv
cnkvV2ViSGlzdG9yeS5tbQppbmRleCBhOGI2YTA0MzkzZWMwMDAxNDY1MzhkNGNmNjViZDY0MGM3
NGJkOTAxLi41YWQ4MWI0YTNiNDliNWQwNjM5MzY1NjgzYTFiY2Y1ZDU3ZWYzODZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC0xMzMsNyAr
MTMzLDcgQEAgLSAoaWQpaW5pdAogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIF9lbnRy
aWVzQnlVUkwgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIF9lbnRy
aWVzQnlEYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOworICAgIF9l
bnRyaWVzQnlEYXRlID0gbWFrZVVuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5
L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJI
aXN0b3J5SXRlbS5tbQppbmRleCBiNzM5NTkzNWU1MTBiZjNiN2YwYzQ4ZWRkNDM2YzU4YmJjNDgx
ZDhlLi44NmY5ZDNkNDIyMzg0NmJjOTVjYmM5NTY0NWExY2E3MzIwYWZlMTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTM0
OCw3ICszNDgsNyBAQCAtIChpZClpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooTlNE
aWN0aW9uYXJ5ICopZGljdAogICAgICAgICBjb3JlKF9wcml2YXRlKS0+c2V0TGFzdFZpc2l0V2Fz
RmFpbHVyZSh0cnVlKTsKICAgICAKICAgICBpZiAoTlNBcnJheSAqcmVkaXJlY3RVUkxzID0gW2Rp
Y3QgX3dlYmtpdF9hcnJheUZvcktleTpyZWRpcmVjdFVSTHNLZXldKSB7Ci0gICAgICAgIGF1dG8g
cmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsK
KyAgICAgICAgYXV0byByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJp
bmc+PigpOwogICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3ItPnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoW3JlZGlyZWN0VVJMcyBjb3VudF0pOwogCiAgICAgICAgIGZvciAoaWQgcmVkaXJlY3RVUkwg
aW4gcmVkaXJlY3RVUkxzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4
IGUxN2M3ODgxYTUxN2YwYzM1NWY4NzU2OWI2MGRhM2YyMTVhMWViYTcuLmY1ZTdmYmNmMTJlNDdm
OTBkZWVmMWVhMmNmZWI3MTc0MjY4ODBhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFBy
b3h5Lm1tCkBAIC00OTMsNyArNDkzLDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDR2V0U2NyaXB0YWJs
ZU5QT2JqZWN0UmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGwKICAgICBp
ZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKLSAgICBp
bnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHk+
KG9iamVjdElEKSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJ
RCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkdldFNjcmlwdGFibGVO
UE9iamVjdFJlcGx5PihvYmplY3RJRCkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAK
QEAgLTUwOSw3ICs1MDksNyBAQCBrZXJuX3JldHVybl90IFdLUENCb29sZWFuUmVwbHkobWFjaF9w
b3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQsIHVpbnQzMgogICAgIGlmICghaW5z
dGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKICAgICAKLSAgICBpbnN0
YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXN1bHQpKTsKKyAgICBp
bnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXN1bHQpKTsKICAgICByZXR1
cm4gS0VSTl9TVUNDRVNTOwogfQogCkBAIC01MjgsNyArNTI4LDcgQEAga2Vybl9yZXR1cm5fdCBX
S1BDQm9vbGVhbkFuZERhdGFSZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBw
bHVnaW5JRCwKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAogICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8VUludDgqPihyZXN1bHREYXRhKSwgcmVzdWx0TGVuZ3RoKSk7Ci0gICAgaW5zdGFuY2VQcm94
eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJldHVyblZhbHVlLCByZXN1
bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtl
VW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhbkFuZERhdGFSZXBseT4o
cmV0dXJuVmFsdWUsIHJlc3VsdCkpOwogICAgIAogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9
CkBAIC01NDUsNyArNTQ1LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDSW5zdGFudGlhdGVQbHVnaW5S
ZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW4KICAgICBpZiAoIWlu
c3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKLSAgICBpbnN0YW5j
ZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBseT4ocmVzdWx0LCBy
ZW5kZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4ocmVuZGVyZXJUeXBlKSkp
OworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlx
dWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpJbnN0YW50aWF0ZVBsdWdpblJlcGx5Pihy
ZXN1bHQsIHJlbmRlckNvbnRleHRJRCwgc3RhdGljX2Nhc3Q8UmVuZGVyZXJUeXBlPihyZW5kZXJl
clR5cGUpKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkuaAppbmRleCAxMGEwOGU5NTBhM2RjMGM5MzY3MWYxZmMxYzc0
Yzk0Nzc5M2EwN2U4Li5lNTZhMTAzYTI4YTc2MGY5Y2UwYjk3ZTcxZGQ2YjIzYTYwYzUzZTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaApAQCAtMTcxLDYgKzE3MSw3
IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVk
PE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94CiAKICAgICAvLyBSZXBseSBzdHJ1Y3RzCiAgICAg
c3RydWN0IFJlcGx5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICBlbnVtIFR5cGUgewogICAgICAgICAgICAgSW5zdGFudGlhdGVQbHVnaW4sCiAgICAg
ICAgICAgICBHZXRTY3JpcHRhYmxlTlBPYmplY3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCAyMDJjNmRl
YWYxM2QwN2M2ZTNhNTY5OGIxY2RiNTlhMTliNWRhMDM5Li41MmJmN2JkMTJlNGUzNzEyZDMxNDc1
ZTJhNTM5YTQyOGNmZjhmYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTM2Miw3ICszNjIsNyBAQCBN
ZXRob2QqIFByb3h5SW5zdGFuY2U6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdh
cyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBhdXRvIG1hcEFkZFJl
c3VsdCA9IG1fbWV0aG9kcy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIpOwogICAgIGlmIChtYXBB
ZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiByZXBseS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3h5TWV0aG9kPihtZXRo
b2ROYW1lKTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8UHJveHlNZXRob2Q+KG1ldGhvZE5hbWUpOwogCiAgICAgcmV0dXJuIG1hcEFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CkBAIC0zOTcsNyArMzk3LDcgQEAgRmllbGQqIFByb3h5
SW5zdGFuY2U6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBB
ZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVkIHdoaWxl
IHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0gbV9maWVs
ZHMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3
RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlmaWVyKTsKKyAgICAg
ICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJveHlGaWVsZD4o
aWRlbnRpZmllcik7CiAgICAgcmV0dXJuIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA5
YzcxYTNjYzkyM2YzM2QyZTBhYjM5YTFiZjZiMTRiNDQzZTk0ZDRiLi5lZTE5YzU2N2MwMWZhMThj
NWU4ZGM2MWIwOGM4OTRlNTIwMDJkYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCkBAIC02MCw2ICs2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBu
YW1lc3BhY2UgV2ViS2l0IHsKICAgICAKIGNsYXNzIFNvZnR3YXJlQ0FSZW5kZXJlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU29mdHdhcmVD
QVJlbmRlcmVyKHVpbnQzMl90IGNvbnRleHRJRCkKICAgICAgICAgOiBtX2NvbnRleHQgeyBbQ0FD
b250ZXh0IGxvY2FsQ29udGV4dF0gfQpAQCAtMTY4LDcgKzE2OSw3IEBAIC0gKEJPT0wpY3JlYXRl
UGx1Z2luCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlmIChfcHJveHktPnJlbmRlcmVyVHlw
ZSgpID09IFVzZVNvZnR3YXJlUmVuZGVyZXIpCi0gICAgICAgIF9zb2Z0d2FyZVJlbmRlcmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+KF9wcm94eS0+cmVuZGVyQ29udGV4
dElEKCkpOworICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9IG1ha2VVbmlxdWU8U29mdHdhcmVD
QVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRleHRJRCgpKTsKICAgICBlbHNlCiAgICAgICAg
IFtzZWxmIGNyZWF0ZVBsdWdpbkxheWVyXTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyLm1tCmluZGV4IGY3YWVkYmNlZDRkN2Y1YzRiYTNlOTZlMzU2MWNhN2YwYjI2NWM4YWMuLjhl
YzFiZjc5ZWUzMmEyYWMxYmJjZjdhMjFlNzNlN2UxZTAxZGIxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
bkV2ZW50SGFuZGxlci5tbQpAQCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI+IFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyOjpj
cgogewogICAgIHN3aXRjaCAoW3BsdWdpblZpZXcgZXZlbnRNb2RlbF0pIHsKICAgICBjYXNlIE5Q
RXZlbnRNb2RlbENvY29hOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5WaWV3KTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmll
dyk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaApp
bmRleCA3MDgzNzc2ZDI4YTc1Y2ZiNTQyNTMzZDkwZjM3NzhlODVhYmNkMWQyLi5iYmQ5YzVkNTgy
MWY4NWY2NWViYzhmNzc3ZWM2NTUyMjlkNWU4OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyQ29jb2EuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYk5ldHNjYXBl
UGx1Z2luRXZlbnRIYW5kbGVyLmgiCiAKIGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyQ29jb2EgOiBwdWJsaWMgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyQ29jb2EoV2ViTmV0c2NhcGVQbHVnaW5WaWV3Kik7IAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CmluZGV4IDAyZmYyMTg2ZGY4NGE5YTkwZDdlOWMyNmMwNzYyNzllMzIyMTEzNzguLjE2MDY2M2U4
NjFmNzEwZWJmZWQxZDc2ODU2NWRkMjJhMTE0ZThlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0x
NjU1LDcgKzE2NTUsNyBAQCAtICh1aW50MzJfdClzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1
aW50MzJfdClpbnRlcnZhbCByZXBlYXQ6KE5QQm9vbClyZXBlYXQgdAogICAgICAgICByZXR1cm4g
MDsKICAgICAKICAgICBpZiAoIXRpbWVycykKLSAgICAgICAgdGltZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxIYXNoTWFwPHVpbnQzMl90LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+Pj4oKTsK
KyAgICAgICAgdGltZXJzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPHVpbnQzMl90LCBzdGQ6OnVuaXF1
ZV9wdHI8UGx1Z2luVGltZXI+Pj4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1l
cj4qIHNsb3Q7CiAgICAgdWludDMyX3QgdGltZXJJRDsKQEAgLTE2NjMsNyArMTY2Myw3IEBAIC0g
KHVpbnQzMl90KXNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVydmFsIHJl
cGVhdDooTlBCb29sKXJlcGVhdCB0CiAgICAgICAgIHRpbWVySUQgPSArK2N1cnJlbnRUaW1lcklE
OwogICAgIHdoaWxlICghdGltZXJzLT5pc1ZhbGlkS2V5KHRpbWVySUQpIHx8ICooc2xvdCA9ICZ0
aW1lcnMtPmFkZCh0aW1lcklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWUpKTsKIAotICAgIGF1
dG8gdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpblRpbWVyPihwbHVnaW4sIHRpbWVySUQs
IGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlx
dWU8UGx1Z2luVGltZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJG
dW5jKTsKIAogICAgIGlmIChfc2hvdWxkRmlyZVRpbWVycykKICAgICAgICAgdGltZXItPnN0YXJ0
KF9pc0NvbXBsZXRlbHlPYnNjdXJlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCmluZGV4IDcwNGNk
MDk1ZTg4ZmUxYTIzODExODZjNmJmZjEzMGZjOTAyMDQxZWIuLjU3ZmJiZmFkOWU2NGI3Njc4YWQz
YWNjZTgwNzc4YmFjZjAzNzgxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCkBAIC05NCwxMCAr
OTQsMTEgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50KCkKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJl
YWQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luKQogICAgIHsKLSAgICAgICAgYXV0byBjb250ZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdpbik7CisgICAgICAgIGF1dG8g
Y29udGV4dCA9IG1ha2VVbmlxdWU8RGlkTW9kaWZ5T3JpZ2luRGF0YT4oY2xpZW50LCBvcmlnaW4p
OwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KV0g
ewogICAgICAgICAgICAgY29udGV4dC0+Y2xpZW50LmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNv
bnRleHQtPm9yaWdpbik7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaAppbmRleCBhM2IxNTk4ZWUzNTNkNjdlMjNhZjgwOTU4ZWI3Zjc1ZWIxNjdmNGQ4Li5jZDcy
NjQyNjgyNWJhNzIyMTU1N2UwNTY2ZmE5MmVjMDgxMTE0NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNs
YXNzIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3Kik7CiAgICAgdmlydHVh
bCB+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGEuaAppbmRleCA3OGI1MzllMzcyYjg2NWM1OTRmYzA3NmY1YTFmYzg0YWFmZTk4YmYw
Li4yNzE0MjdlMmQ0NmVlM2EyOTdkMDU0MDEyYTdhODVhYjhiM2UxYjBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogY2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJs
aWMgV2ViQ29yZTo6Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKGlkIHdl
YkRvY3VtZW50VmlldykgOiBtX3dlYkRvY3VtZW50Vmlldyh3ZWJEb2N1bWVudFZpZXcpIHsgfQog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBmZGM0Y2M3ODE5NmZjYmNmMzI2MDJkMThlMjg5ZjA3
YTExNTRjYzk1Li5jMGZiZGE5YjJkYTFkZDQ1MTBmZmUwODliZjY4ZjVhNzY3ZGQ0MTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50Owog
Ly8gYmFzZSBjbGFzcyBvZiB0aGUgY29uY3JldGUgY2xhc3MsIFdlYkNocm9tZUNsaWVudElPUy4g
QmVjYXVzZSBvZiB0aGF0LCB0aGlzIGNsYXNzIGFuZAogLy8gbWFueSBvZiBpdHMgZnVuY3Rpb25z
IGFyZSBub3QgbWFya2VkIGZpbmFsLiBUaGF0IGlzIG1lc3N5IHdheSB0byBvcmdhbml6ZSB0aGlu
Z3MuCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVD
bGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCAxODg1ZjAz
MTMxMzViODE3YjMwZjk0NTc3N2Q4ZTI0YjE1MzliZjkwLi5hN2Y2NmVlZWYzMDZhNjg2MDU0MjBl
Nzk4NzYyMDI1N2JlMDZiNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29u
dGV4dE1lbnVDbGllbnQKICAgICAsIHB1YmxpYyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVu
dAogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
V2ViQ29udGV4dE1lbnVDbGllbnQoV2ViVmlldyAqd2ViVmlldyk7CiAgICAgdmlydHVhbCB+V2Vi
Q29udGV4dE1lbnVDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA4NDdhNzNiMTdhNDYxN2JkNTRh
OGQyOGE5MjNjMWQ0YTYzYmRkMTJlLi4zMGRmM2Y3M2Q4NTBlYTc2OWM3MTM1MjIxZDJlODg2NWVh
NjdlMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiBAY2xhc3MgV2ViVmlldzsK
IAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdl
YlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBmMDU5ZTA1OWUxMTg3YTNiYzViZDI0N2Nj
MjQxZjU5YWRkNDUwOTUwLi5iNTEwNzg3ZDgwOWJjZjk3Yjc2ODllNzQwOTMyODM3NWFhMGIwYjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNDUsNiArNDUsNyBAQAogQGNsYXNzIFdlYkVkaXRvclVu
ZG9UYXJnZXQ7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFdlYkVkaXRvckNsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVudChXZWJWaWV3ICopOwogICAgIHZp
cnR1YWwgfldlYkVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRl
eCAzZGQ1MGU3YjNiOWNmOTkzMzQ5YzlhYmI0Y2I0OTc4MzdlZWMzNTNlLi45NDBiMGZmOTYzYTg1
Y2U5ZDg4ZDdiYzU2ZmY2YjNlZWIyZTNkOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQpAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRl
R2xvYmFsSGlzdG9yeSgpCiBzdGF0aWMgdm9pZCBhZGRSZWRpcmVjdFVSTChXZWJIaXN0b3J5SXRl
bSAqaXRlbSwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKCFpdGVtLT5fcHJpdmF0ZS0+
X3JlZGlyZWN0VVJMcykKLSAgICAgICAgaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBpdGVtLT5fcHJpdmF0
ZS0+X3JlZGlyZWN0VVJMcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAKICAgICAv
LyBPdXIgQVBJIGFsbG93cyB1cyB0byBzdG9yZSBhbGwgdGhlIFVSTHMgaW4gdGhlIHJlZGlyZWN0
IGNoYWluLCBidXQgZm9yCiAgICAgLy8gbm93IHdlIG9ubHkgaGF2ZSBhIHVzZSBmb3IgdGhlIGZp
bmFsIFVSTC4KQEAgLTEzODAsNyArMTM4MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2Fj
aGVkRnJhbWUqIGNhY2hlZEZyYW1lKQogewotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
PihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOworICAg
IGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVlPFdlYkNh
Y2hlZEZyYW1lUGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3
LmRvY3VtZW50VmlldykpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBdCB0
aGlzIHBvaW50IHdlIGtub3cgdGhpcyBmcmFtZSBpcyBnb2luZyB0byBiZSBjYWNoZWQuIFN0b3Ag
YWxsIHBsdWdpbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmZmUyOTkzMTJlYjQ4
MGJhZmI1ZjBlYWM0MzUyZjI0M2Y5NmUwMGY3Li5mZmRiYWNmYzI3NDIxZThkMzU4ODhmMmNlNmIx
ODA3N2ExNmUzM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcg
QEAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBX
ZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRp
b25DbGllbnQoV2ViVmlldyAqKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93
ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGJkN2Y2MmZjODVkYzk5YzM4NzE2
ZjA3NjY2NDYzMTgyNTExYzU0YTUuLjBjOTQ4YjNhZWY5ODc2MDk2MzAzNTFkNTlhYzc5MGIyYWJl
YWRhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFBh
Z2U7CiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIAogY2xhc3MgV2ViSW5zcGVj
dG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGlj
IEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqaW5z
cGVjdGVkV2ViVmlldyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCAxYzAwODA5NzY5
MmZmOWIwNzFmY2U1YWM0YTRiNDY5MmQxMzdlZDk1Li43ZDNlNWVjOWU2MTVlMWQ0OGMzZDA1ZDcx
YTU5YzQ1MWZlYjc2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0xMDksNyArMTA5
LDcgQEAgRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250
ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3AKICAgICBbd2luZG93Q29udHJvbGxlci5nZXQo
KSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUo
W3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZnJvbnRlbmRXZWJWaWV3XSk7Ci0gICAgbV9mcm9udGVu
ZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1f
aW5zcGVjdGVkV2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNv
bnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAg
IG1fZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
PihtX2luc3BlY3RlZFdlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RlZFBh
Z2VDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsK
IAogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRl
bmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRl
bmRDbGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV9pbnNwZWN0ZWRXZWJW
aWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90
aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAxNWI0MTgwNDhlNGYxZDQ2MjRjMzAzZGNi
YmZlZDE2OTc5NjQ0ODYxLi45NGVkNjE4YWM3OGVlOGJjZjU3MTU1YzlhZGFiY2JkYWRmNjhjNzM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJO
b3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQAogQGNsYXNz
IFdlYlZpZXc7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFdlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJWaWV3ICopOwogICAgIFdlYlZpZXcg
KndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlci5oCmluZGV4IGEzZDZhZTYzNjM2NDdjNWYzMGNjNzlmYmQ2MzVmNjY0
YmNhMDEyM2MuLmRjOWQxMWEzNTg3ZWUwNGY1MDE1MWJlODhiYzVkNGIxNDhiY2RlNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlv
blNlcnZpY2VDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaApAQCAtNDMsNiArNDMsNyBA
QCBjbGFzcyBJbnRQb2ludDsKIH0KIAogY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xs
ZXIgOiBwdWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyKFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KaW5k
ZXggMjUzNjQ4ZDhlODQ1OTExZTJhZTI4YzBiYjg2M2NiNTdmN2MzMDAzOS4uMjc2ZDlmMTVlZjhm
YTVlMWZlZDQzOGVkOWMxZDI1OWE3ODU4MzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJv
dmlkZXJNb2NrLm1tCkBAIC0zNiw3ICszNiw3IEBAIC0gKGlkKWluaXQKICAgICBzZWxmID0gW3N1
cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2Nv
cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKKyAg
ICBtX2NvcmUgPSBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKICAg
ICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KaW5kZXggYTkwNjIyYzIwNzRlMGNkY2VjZWYyYzZjMWM4NDk0NWQ0ZTlkZmZhYi4u
M2E5NGJiOTEwZDI1OWVmYWE4OTFkNTI5ZTgwZDJiNWIwMDIwYjRmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0zNzgsNyArMzc4LDcgQEAgLSAo
dm9pZClfYXR0YWNoU2NyaXB0RGVidWdnZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2NyaXB0RGVi
dWdnZXI+KGdsb2JhbE9iamVjdCk7CisgICAgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gbWFr
ZVVuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAogLSAodm9pZClf
ZGV0YWNoU2NyaXB0RGVidWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKaW5kZXggZGZh
N2VmZDA2MDZhZGM0OWZlMjkxZDA1MjFkMTMyZTZlMTljNTA3My4uYTA3MmU4MTk1MjQ5MzlhZTBm
MjJiYjk4MzZkM2FjNzA1ZDg1NzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKQEAg
LTM3LDYgKzM3LDcgQEAgY2xhc3MgUGFnZTsKIH0KIAogY2xhc3MgV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlciA6IHB1YmxpYyBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+IGNyZWF0ZShXZWJDb3Jl
OjpQYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQppbmRleCA3MmMyMGM2OTNm
ZWNiYTk3MTA0NjM0MTY0MWNjZTExNDk0ZGU0YTY5Li42MDI0MDI5OTYyZWMzNGYwMGY0YWFkOTQz
MmE3ZmM0MmJhMWQxNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCkBAIC0zMyw3
ICszMyw3IEBACiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
PiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUoV2ViQ29yZTo6UGFnZSYgcGFn
ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyPihwYWdlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyPihwYWdlKTsKIH0KIAogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6V2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQYWdlJiBwYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQppbmRleCAx
YTcyNThiNDIzYTg0NTc4OTFlNDE1ZTEwZDAwMjU2NzMwYWEyYmRlLi5lMzYzYjg1YjJiM2Q1YWUx
NDczYzgzNzI3MTg1ODM0ZDUxNzg3YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpAQCAtNjksNyArNjksNyBAQCAtIChpZClp
bml0V2l0aFJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgICAgIHJldHVybiBzZWxmOwogICAg
IAogICAgIF9wcml2YXRlID0gW1tXZWJUZXh0SXRlcmF0b3JQcml2YXRlIGFsbG9jXSBpbml0XTsK
LSAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CisgICAgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3Ig
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5nZSkpOwogICAgIHJl
dHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggYmNjYzY0YjA3YTNkMDVmOWJlODQ1ZmQxNmE4YTRlMTU4YjU2NDc1ZC4uMTBmMjE4
ODRlYjRhOWM5ODRhYzMyZTYwMTQxNDk4NTBiOGMxOWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTIyOSw3ICsxMjI5LDcgQEAgc3RhdGljIE5T
U3RyaW5nICpsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpCiAtKHZvaWQpX2lu
amVjdE91dGxvb2tRdWlya3NTY3JpcHQKIHsKICAgICBzdGF0aWMgTlNTdHJpbmcgKm91dGxvb2tR
dWlya3NTY3JpcHRDb250ZW50cyA9IGxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRz
KCk7Ci0gICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2Vy
U2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJp
bmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxs
RnJhbWVzKSk7CisgICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5h
ZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBtYWtlVW5pcXVlPFVz
ZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJp
bmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxs
RnJhbWVzKSk7CiAKIH0KICNlbmRpZgpAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgLSAodm9pZClfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91
cE5hbWU6KE5TU3QKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2Vi
Q2hyb21lQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xp
ZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHNlbGYpOwogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZW5hYmxlIHRoaXMgb24gaU9TIGFzIHdlbGwuCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24u
dmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50PihzZWxmKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVz
c2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KHNlbGYp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0
b3JDbGllbnQoc2VsZik7CiAjZWxzZQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVu
dCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CkBAIC00NjMzLDcgKzQ2MzMsNyBAQCAr
ICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6
KFdlYlNjcmlwdFdvcmxkICopd29ybAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291
cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0
QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0g
V2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJh
bWVPbmx5KTsKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNv
dXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFj
a2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVj
dEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09
IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZy
YW1lT25seSk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2Vy
U2NyaXB0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTQ2NTYs
NyArNDY1Niw3IEBAICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcg
Kilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopCiAgICAgaWYgKCF3b3JsZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzdHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxV
c2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRv
U3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxs
RnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0
eWxlVXNlckxldmVsKTsKKyAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHls
ZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdW
ZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMg
PyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2Vy
TGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0
eWxlU2hlZXQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0
aW5nRG9jdW1lbnRzKTsKIH0KIApAQCAtOTQxNiw3ICs5NDE2LDcgQEAgLSAoVmVjdG9yPFN0cmlu
Zz4pX2RpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dAogLSAo
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXImKV9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cgogewogICAgIGlmICghX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcikKLSAg
ICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOworICAgICAgICBfcHJp
dmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CiAgICAgcmV0dXJuICpfcHJpdmF0ZS0+X3NlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyOwogfQogI2VuZGlmCkBAIC05NDc1LDcgKzk0NzUsNyBAQCAt
ICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yCiAt
ICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yIHdp
dGhMaWZldGltZTooVGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKWxpZmV0aW1lCiB7CiAgICAg
aWYgKCFfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdykKLSAgICAgICAgX3ByaXZhdGUtPnRl
eHRJbmRpY2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+
KHNlbGYpOworICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9IG1ha2VVbmlx
dWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CiAKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5n
UmVjdEluV2luZG93Q29vcmRpbmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpbc2VsZiBfY29udmVy
dFJlY3RGcm9tUm9vdFZpZXc6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzKCldIHRvVmlldzpuaWxdOwogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0
SW5TY3JlZW5Db29yZGluYXRlcyA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOnRl
eHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4IDEwNjBjMmQ4NTRhZGEwZGNhZmIz
MzU1OWM4MTFlNGVlNDk0Y2M2ZTAuLjgyMzhhNGVjNWZlZTE2ODM2NGVkMTMwNGJjNzUxNWY1NTE3
ZmU4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5tbQpAQCAtOTYsNyArOTYsNyBAQCBMYXllckZsdXNoQ29udHJvbGxlcjo6TGF5ZXJGbHVzaENv
bnRyb2xsZXIoV2ViVmlldyogd2ViVmlldykKIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpX
ZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihMYXllckZsdXNoQ29udHJvbGxlciogZmx1c2hDb250
cm9sbGVyKQogICAgIDogbV9mbHVzaENvbnRyb2xsZXIoZmx1c2hDb250cm9sbGVyKQogewotICAg
IG1fcnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2Jz
ZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2Vs
bEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBtX3J1bkxv
b3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNf
Y2FzdDxDRkluZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BP
cmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hD
YWxsYmFjaygpOwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKGlkKWluaXQKICAg
ICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOworICAgIG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI+KCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cAppbmRleCA2NDZlNmFlZjkzMmYxYzk5Mjk4NTM2YzgyZjJjOTU1YTcxYTE5MmNmLi5mZTQ0ZTc1
MWNjMTFjMGVhYWZlMjgxODE3OWVkY2Y2NWE3ZjFjNzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMjQ2LDEw
ICsyNDYsMTAgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcigpCiAgICAgLCBtX21vdmluZ1dpbmRvdyhmYWxzZSkKICAgICAsIG1fdGltZXIoKnRo
aXMsICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1lckZpcmVkKQogI2lmIFVTRShDQSkK
LSAgICAsIG1fbGF5ZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcykp
CisgICAgLCBtX2xheWVyQ2xpZW50KG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQogICAg
ICwgbV9yb290Q2hpbGQoUGxhdGZvcm1DQUxheWVyV2luOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVMYXllciwgbV9sYXllckNsaWVudC5nZXQoKSkpCiAjZW5kaWYKLSAgICAsIG1f
ZnVsbHNjcmVlbldpbmRvdyhzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGll
bnQqPih0aGlzKSkpCisgICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3cobWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhpcykpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKaW5kZXggYWJhNjNkYWI4YjMxZTQ3
YWJkODA4OGIzNzgzYTgwZWM1NGMxMDIxOC4uMGY2YmVlZmZhZDFkYzAxNWM4YTQ3N2U3ZmJlNWM5
YjZhYWZhZmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luU3RyZWFtLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFy
CiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkgewogICAgICAgICBp
ZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4oKTsKKyAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0g
bWFrZVVuaXF1ZTxWZWN0b3I8Y2hhcj4+KCk7CiAKICAgICAgICAgaW50IG9sZFNpemUgPSBtX2Rl
bGl2ZXJ5RGF0YS0+c2l6ZSgpOwogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+cmVzaXplKG9sZFNp
emUgKyBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKaW5kZXggMjEzNjMxN2YyOTk5ZDVlMTM3NDlkZjM4ZTE5YThmNGQyZjI1YmQ2MC4u
NTQ3MTZhMGJiMmIxZmFiNzVkODFkZTQyYWVlOTZlZWEyZjZiMTNlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC01MTAsNyArNTEwLDcg
QEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRS
ZXF1ZXN0LCBib29sIHNlbmROb3RpZmljYXQKICAgICB9IGVsc2UgaWYgKCFtX3BhcmVudEZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkodXJsKSkKICAgICAgICAg
cmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAKLSAgICBzY2hlZHVsZVJlcXVlc3Qoc3RkOjpt
YWtlX3VuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBzZW5k
Tm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNBbGxvd2VkKCkpKTsKKyAgICBzY2hl
ZHVsZVJlcXVlc3QobWFrZVVuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZyYW1lTG9hZFJl
cXVlc3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNBbGxvd2VkKCkp
KTsKIAogICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDA1NzI4ZjNlZDM3MjA1
MDRhZjU1Zjk4NzdmODYyMWJkYzA1Y2U2MjIuLjUyMDQ1OTRhYjZmODRkNTcwMDA0MGRmZDI5ODFj
M2Y1NjNlZGZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5WaWV3V2luLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFBsdWdpblZpZXc6OnduZFByb2Mo
SFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAg
ICAgaWYgKG1lc3NhZ2UgPT0gV01fVVNFUiArIDEgJiYKICAgICAgICAgbV9wbHVnaW4tPnF1aXJr
cygpLmNvbnRhaW5zKFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25lTWVzc2FnZXMpKSB7
CiAgICAgICAgIGlmICghbV9tZXNzYWdlVGhyb3R0bGVyKQotICAgICAgICAgICAgbV9tZXNzYWdl
VGhyb3R0bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luPih0
aGlzKTsKKyAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IG1ha2VVbmlxdWU8UGx1Z2lu
TWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CiAKICAgICAgICAgbV9tZXNzYWdlVGhyb3R0bGVy
LT5hcHBlbmRNZXNzYWdlKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKICAgICAgICAg
cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRG
cmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEuaAppbmRleCA1MzBiNjllZDcxOWMyN2FjYzZiMDdlMzUxNTkyMjFmNTUy
NmM1MzA1Li4zYmY0NGQ4N2QxOGQ1ZjI3M2NkMjk1MzU2NzZiMjQwOGYyYzkxNGUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIDogcHVibGljIFdl
YkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShJV2ViRGF0YVNv
dXJjZSogd2ViRGF0YVNvdXJjZSkgOiBtX3dlYkRhdGFTb3VyY2Uod2ViRGF0YVNvdXJjZSkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDRhNDliOTRiYmE1OGQwYzU0NjMzMjljM2Y2ZWYy
M2U4NDg4YjdhZjMuLjdiMjk5Y2VlMjVlY2QxMGJiYTYyMWM4NTgxYjA2YWUwNmM1YTFkMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90
IG1heEZpbGVQYXRoc0xpc3RTaXplID0gVVNIUlRfTUFYOwogV2ViQ2hyb21lQ2xpZW50OjpXZWJD
aHJvbWVDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICwgbV9ub3RpZmljYXRpb25zRGVsZWdhdGUo
c3RkOjptYWtlX3VuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlPih3ZWJWaWV3
KSkKKyAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKG1ha2VVbmlxdWU8V2ViRGVza3RvcE5v
dGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggNDFkNWYwNmFlYWNiN2UxNDE3ZDRiNzAyNDAwNjBiYmU1N2Y2OTMwZi4uNzg3NTQz
MjUzZDVkZmY0ZWM2NjhlYmU4OGYwODg1ZDBiYWRiNjU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAg
LTM4LDYgKzM4LDcgQEAgY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTsKIGlu
dGVyZmFjZSBJV2ViVUlEZWxlZ2F0ZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmgKaW5kZXggYzlkZTQ5YjNjZDE0NTUxNzI4ZmIyZjlkOTZlZjQ5MGU5OTE1
OGJkNC4uZjQ4ZWU3MzBlZWY3MTk3OWU0ZDhkMmMzMjdlZDFiYTE3Yjk0ZmZhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBj
bGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29u
dGV4dE1lbnVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggYjU5ODkzMzI5MTAw
OWUyODUxZWQ3NTQxNWVjNGFhMGZlNDAzZDYxMS4uNDVlM2NhNzI3NTNhZDFhYzExNTNiZTk2MTkz
ZjZlZDYyMWZmODlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQAogY2xhc3MgV2Vi
VmlldzsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xp
ZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZGI2MzUyZDYzODE2ZjdjOWFlZWU5Zjc0NGU0OGUzODFl
ODU2ZDJiNS4uNjlkN2VkM2UwYWEzMWYxM2JlYTY0Y2YwYzI3NjVlMjU0ZmJmOGU2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9uOwogY2xh
c3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2Vy
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJF
ZGl0b3JDbGllbnQoV2ViVmlldyopOwogICAgIH5XZWJFZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZTM1NGI3MWNkZmQyYTVmOWI4YjAxMWEwMzI5ZDc0
MjRiYzkwYmJjLi43NzFmOGVhNmY3MTY4MDljZGZhZGQ3ZTM4YzYwZGM3YTAzZTAxZmFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgY2xhc3MgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlIHsKIH07CiAK
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSogd2Vi
RnJhbWUpCi0gICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQorICAgIDogbV9wb2xpY3lMaXN0ZW5lclBy
aXZhdGUobWFrZVVuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZT4oKSkKICAgICAs
IG1fd2ViRnJhbWUod2ViRnJhbWUpCiAgICAgLCBtX21hbnVhbExvYWRlcigwKQogICAgICwgbV9o
YXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkgCkBAIC05NzMsNyArOTczLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVk
RnJhbWUqIGNhY2hlZEZyYW0KIAogICAgIEFTU0VSVChjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCkgPT0gY2FjaGVkRnJhbWUtPmRvY3VtZW50TG9hZGVyKCkpOwogCi0gICAgY2Fj
aGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4oZ2V0
V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkpOwor
ICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVlPFdl
YkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihzdGF0aWNfY2FzdDxJV2ViRGF0YVNvdXJjZSo+KGdl
dFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkpKTsK
ICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmgKaW5kZXggZWI5NzU4YmQ0MjEwN2QyZjlhODU0ZTRlNjg4MTY2YTZmNTE1ZmI5Zi4uYmJh
OWM5ZjQ0NTM1OGQ3Y2UzZWEwM2Y4OTY2NDFiZDZlNWUwNDBkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiBj
bGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcAppbmRleCA3NTY5NTkwYzFiM2NmMzgxNmZjNDJhMzViZjNmNjZiZmQ3ODkw
MjI0Li5mODBhZTA0OGI4MmRiZGIyMzQ2NTQ2OGQ5MzNjNjBhNzA5NzJjN2Y2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JD
b250cgogICAgICAgICByZXR1cm4gMDsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9u
dGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5z
cGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250
ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9m
cm9udGVuZENsaWVudCA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1f
aW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQs
IGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRl
bmRTZXR0aW5ncygpKTsKICAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogICAg
IG1fZnJvbnRlbmRIYW5kbGUgPSBmcm9udGVuZEh3bmQ7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0x
ODUsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCgpCiAgICAg
Ym9vbCBjcmVhdGluZ0hpZ2hsaWdodCA9ICFtX2hpZ2hsaWdodDsKIAogICAgIGlmIChjcmVhdGlu
Z0hpZ2hsaWdodCkKLSAgICAgICAgbV9oaWdobGlnaHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5v
ZGVIaWdobGlnaHQ+KG1faW5zcGVjdGVkV2ViVmlldyk7CisgICAgICAgIG1faGlnaGxpZ2h0ID0g
bWFrZVVuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3BlY3RlZFdlYlZpZXcpOwogCiAgICAg
aWYgKG1faGlnaGxpZ2h0LT5pc1Nob3dpbmcoKSkKICAgICAgICAgbV9oaWdobGlnaHQtPnVwZGF0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5NWM5YWZhODUwMDJhNTQzMjcwYjdjZTZi
Mzg4YzcwZDQ4OTE4NTE4Li5mMjBlYWViZDY2MWY5MTJiYWNmMmQ5OWY0NDA5ZGJjZDdhOTcxZTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBXZWJOb2Rl
SGlnaGxpZ2h0OwogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCA2OGM2YmQ0OTM5
Y2Y5YjA0ODk1N2JjNzUwMGJkODU0OGEwMWVlM2IyLi4xNjI3ZWM1ZmEyNmJmNTkwMWQwNTkzYjVh
MTgzOTY5NDc5MjE5MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
YXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFi
YXNlTWFuYWdlci5jcHAKQEAgLTM0Nyw2ICszNDcsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFu
YWdlcjo6ZGVsZXRlQWxsSW5kZXhlZERhdGFiYXNlcygpCiB9CiAKIGNsYXNzIERpZE1vZGlmeU9y
aWdpbkRhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKERpZE1vZGlmeU9yaWdpbkRhdGEpOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlciogZGF0YWJhc2VNYW5hZ2Vy
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDI3YWYxYmFlNjUzZWZm
MDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIuLjhhZmJhMGY2ZDUzYWZkNTU1ODQ1YzE5NTM2YzJh
OWMxZWM1ZjM3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogLy8gV2ViRWxlbWVudFByb3BlcnR5QmFnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQ
cm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCi0gICAgOiBtX3Jlc3VsdChz
dGQ6Om1ha2VfdW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCisgICAgOiBtX3Jlc3VsdCht
YWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
ICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IGE4MWMwMGU1NmM1
ZGUyYWViYzEyYWI4YjZkYjExYmM5MzRlYmJiZGEuLmZiODhlMzllN2I1NmFjMzJkY2Y1Y2Y1MDEx
YzM1NDgxNzFhNmMzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRl
bS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjppbml0RnJv
bURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihfSW5fb3B0XyB2b2lkKiBkaWN0aW9uYQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gcmVkaXJlY3RVUkxzVmVjdG9yOwogICAgIGlm
IChDRkFycmF5UmVmIHJlZGlyZWN0VVJMc1JlZiA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnlSZWYsIHJlZGlyZWN0VVJMc0tleSkpKSB7CiAg
ICAgICAgIENGSW5kZXggc2l6ZSA9IENGQXJyYXlHZXRDb3VudChyZWRpcmVjdFVSTHNSZWYpOwot
ICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJp
bmc+PihzaXplKTsKKyAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oc2l6ZSk7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHNpemU7
ICsraSkKICAgICAgICAgICAgICgqcmVkaXJlY3RVUkxzVmVjdG9yKVtpXSA9IFN0cmluZyhzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZWRpcmVjdFVSTHNS
ZWYsIGkpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5k
ZXggMmYxZjJmNDgwN2ViOWM0ZmU3MDgzNWRiNzhlMzRhMzRiY2ZmMzZkMC4uZDY1ZGUxOWVlOTlj
NDUxNDQ1ZGZiZjFiMTM1OWRjMmE4YmEzOGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNE
UmVuZGVyZXIuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEQzRFBvc3RQ
cm9jZXNzaW5nQ29udGV4dD4gQ0FEM0RSZW5kZXJlcjo6Y3JlYXRlRDNEUG9zdFByb2Nlc3NpbmcK
ICAgICBtZW1jcHkob3ZlcmxheVF1YWRCdWZmZXIsIG92ZXJsYXlRdWFkVmVydGljZXMsIHNpemVv
ZihvdmVybGF5UXVhZFZlcnRpY2VzKSk7CiAgICAgb3ZlcmxheVF1YWQtPlVubG9jaygpOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0PihzY2Vu
ZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEM0RQb3N0UHJv
Y2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1YWQpOwogfQogCiAvLyBGSVhN
RTogPHJkYXI6Ly82NTA3ODUxPiBTaGFyZSB0aGlzIGNvZGUgd2l0aCBDb3JlQW5pbWF0aW9uJ3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3Bw
CmluZGV4IDdiZDk4ODk2MTExYzNiM2ZlNmZlNTRmMGEyNDc5NjYwNmIyMmE3NWYuLmIyMGJhY2Q2
MjllYjVhYzBkMjcyMDQyZDg3OGIxNjBlODQ1YWMxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTMsNyArNTMsNyBAQCBz
dHJ1Y3QgV2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZSB7CiBJV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyKiBXZWJOb3RpZmljYXRpb25DZW50ZXI6Om1fZGVmYXVsdENlbnRlciA9IDA7CiAKIFdlYk5v
dGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKLSAgICA6IGQoc3RkOjpt
YWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQorICAgIDogZChtYWtl
VW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA5NzYxNDhlMzNmNzQ0NmQ3YzM4
NDk5NTlkNmNmNzNkZWY0OGY2N2ZmLi45MmQzOWFjNGJjNWEwNWVlYzE0ZGQxZWFiNDA5NTE2ZjQ0
NDY0ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTg4MCw3ICsxODgw
LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KFVJTlQgbWVzc2FnZSwgV1BBUkFN
IHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICAgICAgbW91c2VFdmVudC5zZXRDbGlja0NvdW50
KGdsb2JhbENsaWNrQ291bnQpOwogICAgICAgICBoYW5kbGVkID0gbV9wYWdlLT5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKS5tb3VzZU1vdmVkKG1vdXNlRXZlbnQpOwogICAgICAgICBpZiAoIW1f
bW91c2VPdXRUcmFja2VyKSB7Ci0gICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9IHN0ZDo6
bWFrZV91bmlxdWU8VFJBQ0tNT1VTRUVWRU5UPigpOworICAgICAgICAgICAgbV9tb3VzZU91dFRy
YWNrZXIgPSBtYWtlVW5pcXVlPFRSQUNLTU9VU0VFVkVOVD4oKTsKICAgICAgICAgICAgIG1fbW91
c2VPdXRUcmFja2VyLT5jYlNpemUgPSBzaXplb2YoVFJBQ0tNT1VTRUVWRU5UKTsKICAgICAgICAg
ICAgIG1fbW91c2VPdXRUcmFja2VyLT5kd0ZsYWdzID0gVE1FX0xFQVZFOwogICAgICAgICAgICAg
bV9tb3VzZU91dFRyYWNrZXItPmh3bmRUcmFjayA9IG1fdmlld1dpbmRvdzsKQEAgLTY3OTQsNyAr
Njc5NCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlwZShf
SW5fIEJTVFIgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBpZiAo
IW1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzKQotICAgICAgICBtX2VtYmVkZGVkVmlld01JTUVUeXBl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBtX2VtYmVk
ZGVkVmlld01JTUVUeXBlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogCiAgICAg
bV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMtPmFkZCh0b1N0cmluZyhtaW1lVHlwZSkpOwogICAgIHJl
dHVybiBTX09LOwpAQCAtNjg5NCw3ICs2ODk0LDcgQEAgdm9pZCBXZWJWaWV3OjplbnRlclZpZGVv
RnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQK
ICAgICAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwogICAgIH0KIAot
ICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcj4oKTsKKyAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+KCk7CiAgICAgbV9mdWxsU2Ny
ZWVuVmlkZW9Db250cm9sbGVyLT5zZXRWaWRlb0VsZW1lbnQoJnZpZGVvRWxlbWVudCk7CiAgICAg
bV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKICNlbmRpZgpA
QCAtNjk0Niw3ICs2OTQ2LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91
cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8gdXNlclNjcmlwdCA9IHN0
ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1Zl
Y3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBt
YWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Io
d2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCiAgICAgICAgIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCwgYmxhY2tsaXN0Q291bnQpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1l
bnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsCiAg
ICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5B
bGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29u
dGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHVz
ZXJTY3JpcHQpKTsKQEAgLTY5NzMsNyArNjk3Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNl
clN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3Jp
CiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQg
PSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHN0
eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJM
KHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmlu
Z1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwKKyAgICBhdXRvIHN0eWxlU2hlZXQg
PSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5n
VmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QsIGJsYWNrbGlzdENvdW50KSwKICAgICAgICAgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0
SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBV
c2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVy
KCkuYWRkVXNlclN0eWxlU2hlZXQod29ybGQtPndvcmxkKCksIFdURk1vdmUoc3R5bGVTaGVldCks
IEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogICAgIHJldHVybiBTX09LOwpAQCAtNzIzNyw3
ICs3MjM3LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJvb2wg
YWNjZWxlcmF0ZWQpCiAgICAgfQogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIGlm
IChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKLSAgICAg
ICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJh
dGVkOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hl
YXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCmluZGV4IGVlY2E3MzlkMmIz
OTRlODYwMzUxYmExYjQ2NGRlNTQ3OGI5YmIxNjcuLmRiMzZlYjlkZWQyYjllMGY1ZjZlZjQwZGI2
YzY5OTE5YTczMDZkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVh
cC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCkBAIC04Miw2ICs4Miw3
IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6
ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApID0gZGVs
ZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJpdmF0ZTogXAog
dHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkTWFjcm9TZW1pY29sb25pZmllcgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKaW5kZXggYzA0NGQ3NzNiODc5YTY2ZGZh
ZGQyZTJjYTMxNWVlZWEzNzZmZmE0YS4uM2FhMWQyMDk1MWRiZjMzNjRlN2QxNmRkMjM2NDNkMGNk
OTdmNmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaApAQCAtMTIz
LDYgKzEyMyw3IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQq
IHApID0gZGVsZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJp
dmF0ZTogXAogdHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkSW5saW5lTWFjcm9TZW1pY29s
b25pZmllcgogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNjJmZjNlZWIyZDcwYzA5ODAxMTRkYzE4N2M3MGY5ODAzZjFjZTkwOC4uMGJhNzU5ZTQ2
ZmU0MWMyOGEyOWM1YjRjZjFhZTRhZjhmMjZlYzNmMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxOS0wOC0xMyAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBt
YWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChhZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2spOgorICAg
ICAgICAoc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayk6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKToKKyAgICAgICAgKFRlc3RS
dW5uZXI6OnJ1blVJU2NyaXB0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZp
bGVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06Cisg
ICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKGV2ZW50UHJlc3NlZE1vdXNlQnV0
dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vRFJURGF0YU9iamVjdC5jcHA6CisgICAgICAgIChEUlREYXRhT2JqZWN0OjpTZXREYXRhKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwOgorICAg
ICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9hZERlbGVnYXRlKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChEUlRVbmRvTWFuYWdl
cjo6RFJUVW5kb01hbmFnZXIpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSk6Cisg
ICAgICAgIChVSURlbGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci93cGUvbWFpbi5jcHA6CisgICAgICAgIChjcmVhdGVWaWV3QmFja2VuZCk6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRleHQuaDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0
aG9kU3dpenpsZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmg6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpydW5KU1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGls
aXRpZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaE1hcC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RNb3ZpbmdVc2luZ0Vuc3VyZSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdBZGQpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTG9jay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5Mb2NrVGVzdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHA6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9W
YXJpYW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1
ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDQVJpbmdCdWZmZXJUZXN0OjpTZXRV
cCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFs
dWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVGVzdFZhbHVlKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tp
ZXMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdp
dGhpbkNyZWF0ZVBhZ2UuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFn
ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEku
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5n
LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyVXNlck1lc3NhZ2VSb3VuZFRyaXBU
ZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExv
YWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0MldpbGxMb2FkVGVzdDo6U2V0
VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0
QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkZv
cmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVUZXN0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5j
cHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICh0ZXN0V2ViVmlld0F1dGhl
bnRpY2F0aW9uUHJveHlIVFRQUyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1dlYlByb2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01ET01XaW5k
b3dUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1V
dGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAg
IChhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJv
dmlkZXJzKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3Vy
YXRpb246YWRkVG9XaW5kb3c6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rl
c3RGb250T3B0aW9ucy5tbToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIGluaXRXaXRoRm9u
dE9wdGlvbnM6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlOjpkaWRDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OnNldE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvU3RyaW5nRnVuY3Rpb25zLmg6CisgICAgICAgIChXVFI6OnRvU1REKToKKyAgICAgICAg
KFdUUjo6dG9XVEZTdHJpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMpOgorICAgICAgICAoV1RSOjpjcmVhdGVUZXN0VVJMKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnJ1blVJU2lkZVNjcmlwdCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdU
Ujo6Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lv
cy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAgIChXVFI6OkV2
ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJv
eHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVU
byk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5j
cHA6CisgICAgICAgIChXVFI6OndwZUtleVN5bUZvcktleVJlZik6CisKIDIwMTktMDgtMTIgIFRh
a2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CiAKICAgICAgICAgW1dURl0g
VGhyZWFkOjpyZW1vdmVGcm9tVGhyZWFkR3JvdXAgbGVha3Mgd2VhayBwb2ludGVycy4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZTgxN2E1NzNhNThkMTU5ZDRjZjIzNDk4MmNj
YTA0ZGNkNjRiNjA0YS4uOGYxM2VlMDAzYTNkZTBhMGQ5NDg2MTE5MTMyMmYzNGY4YWRlZWQyNCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTM2MywxMSArMzYzLDExIEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuCiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAogICAgIHNp
emVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUob3JpZ2lu
LmdldCgpKTsKLSAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltd
PihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhvcmlnaW4uZ2V0KCksIG9yaWdpbkJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3Ro
ICsgMSk7CiAKICAgICBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1Np
emUoZGVzdGluYXRpb24uZ2V0KCkpOwotICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBkZXN0aW5hdGlv
bkJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVu
Z3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSwg
ZGVzdGluYXRpb25CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgVGVzdFJ1bm5l
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYg
c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlMKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9
IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShoZWFkZXIuZ2V0KCkpOwotICAgIGF1
dG8gaGVhZGVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEp
OworICAgIGF1dG8gaGVhZGVyQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGhl
YWRlci5nZXQoKSwgaGVhZGVyQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFRl
c3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIzNzksNyArMjM3OSw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sIHNob3VsZFBhaW50QnJva2VuSW1h
Z2UpCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoSlNTdHJp
bmdSZWYgY2hhbm5lbCkKIHsKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhp
bXVtVVRGOENTdHJpbmdTaXplKGNoYW5uZWwpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBK
U1N0cmluZ0dldFVURjhDU3RyaW5nKGNoYW5uZWwsIGJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsg
MSk7CiAKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUo
eyBidWZmZXIuZ2V0KCkgfSk7CkBAIC0yNDQ5LDcgKzI0NDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6
OnJ1blVJU2NyaXB0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpT
VmFsdWVSZQogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKGNhbGxiYWNrSUQsIGNhbGxiYWNr
KTsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAgIG1fVUlTY3JpcHRDb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXVFI6OlVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAg
ICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PFdUUjo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAKICAgICBTdHJpbmcgc2NyaXB0U3RyaW5n
KEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzY3JpcHQpLCBKU1N0cmluZ0dldExlbmd0aChzY3Jp
cHQpKTsKICAgICBtX1VJU2NyaXB0Q29udGV4dC0+cnVuVUlTY3JpcHQoc2NyaXB0U3RyaW5nLCBj
YWxsYmFja0lEKTsKQEAgLTI1MDYsNyArMjUwNiw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0T3Bl
blBhbmVsRmlsZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZmlsZXNWYWx1ZSkK
IAogICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IGZpbGVWYWx1ZSwgbnVsbHB0cikpOwogICAgICAgICBzaXplX3QgZmlsZUJ1ZmZlclNpemUgPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoZmlsZS5nZXQoKSkgKyAxOwotICAgICAg
ICBhdXRvIGZpbGVCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oZmlsZUJ1ZmZlclNp
emUpOworICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4
Q1N0cmluZyhmaWxlLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpLCBmaWxlQnVmZmVyU2l6ZSk7CiAK
ICAgICAgICAgbV9vcGVuUGFuZWxGaWxlcy5wdXNoX2JhY2soZmlsZUJ1ZmZlci5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggNjRkYjFkMTdm
OWJjOWNiOGNlNmQ4MmY5Yjc3ZGJmMzg3NWFjYTBjYS4uOTU3YzRlNjM5NTkxMTg2MzVkNzIyMTVl
MGNhYzdjYjZmZDcyMGNkZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQpAQCAtMTUzNSw3ICsxNTM1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVz
QXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKICAgICAvLyB0aGUgcmVzdWx0IHdpdGhvdXQgYW55IGNv
bnZlcnNpb24uCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZiA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKWlubmVy
VGV4dCkpOwogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKHN0cmluZ1JlZi5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBz
dHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KHN0cmluZ1JlZi5n
ZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBbcmVzdWx0IGFwcGVuZEZvcm1h
dDpAIiVAXG4iLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGJ1ZmZlci5nZXQo
KSwgc3RyaW5nTGVuZ3RoIC0gMSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV07CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXgg
NDYxYmQzZGYzZWJiMjYwM2FjMzIxODI4ODIxOGRkOGY2OTE2OGZmZC4uM2JlMzMyMjFkNmIzZWJj
MzU2ZDUxZTMzNGEyNGQ5MjlhZTI1M2E5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTU2OCw3ICs1NjgsNyBAQCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IGV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9uc1N3aXp6bGVyRm9yVgogewogICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJI
VE1MVmlldyBjbGFzc11dKQogICAgICAgICB2aWV3ID0gWyhXZWJIVE1MVmlldyAqKXZpZXcgX2hp
dFZpZXdGb3JFdmVudDpldmVudF07Ci0gICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltO
U1Njcm9sbGVyIGNsYXNzXV0gPyBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+
KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVy
cHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5VTEw7
CisgICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Njcm9sbGVyIGNsYXNzXV0gPyBt
YWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9y
KHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVu
dFByZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5VTEw7CiB9CiAKIHN0YXRpYyBOU1VJbnRlZ2VyIHN3
aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EUlREYXRhT2JqZWN0LmNwcAppbmRleCBlZjJkMmVmYjg1OWY0YjhhMjJmMzBjNDY3YWNlMWY4
YWFkMTU3YTRkLi43NmEyMWE1OGE5ZjY2ZGRlMTYwNzI5ZjhmZWUxZTE1Zjk0OWU2NjI0IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCkBAIC0yNDksNyArMjQ5
LDcgQEAgU1RETUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEoX0luXyBGT1JNQVRFVEMq
IHBmb3JtYXRldGMsIF9Jbl8gU1RHTUVESVVNKgogICAgIGlmICghcGZvcm1hdGV0YyB8fCAhcG1l
ZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8gZm9ybWF0ZXRjID0g
c3RkOjptYWtlX3VuaXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0byBmb3JtYXRldGMgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxGT1JNQVRFVEM+KCk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFNUR01FRElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0Z01lZChuZXcgU1RHTUVESVVN
KTsKIAogICAgIFplcm9NZW1vcnkoZm9ybWF0ZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAppbmRl
eCBjODBkZjFiZTVmMmRlNDdkM2I4MzE2MzdlZjZlOWZiY2Q5MzRjOGU2Li4xMWM5MzM5YjE2ZDgw
NGQyYzIwMWM5MzI5ZjRhOGMzNTQ0MmE4M2NiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgc3RyaW5nIGRlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KElXZWJGcmFtZSogd2ViRnJhbWUpCiB9CiAKIEZy
YW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSgpCi0gICAgOiBtX2djQ29udHJvbGxl
cihzdGQ6Om1ha2VfdW5pcXVlPEdDQ29udHJvbGxlcj4oKSkKLSAgICAsIG1fYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4oKSkK
LSAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbnB1dENv
bnRyb2xsZXI+KCkpCisgICAgOiBtX2djQ29udHJvbGxlcihtYWtlVW5pcXVlPEdDQ29udHJvbGxl
cj4oKSkKKyAgICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcj4oKSkKKyAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihtYWtlVW5p
cXVlPFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9VSURlbGVnYXRlLmNwcAppbmRleCBmMGFkYmNlNDc5NmZhYmY0ZjBkNDJiMjcxMTYzMzcwMWFj
NzgxMzE0Li40N2FhMjcyYmYxOTVjZDlhMjVhZjI4NjU1ZDM3MWY0MTYwMGY0NTk4IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCkBAIC0xMDEsOCArMTAxLDggQEAgY2xh
c3MgRFJUVW5kb01hbmFnZXIgewogfTsKIAogRFJUVW5kb01hbmFnZXI6OkRSVFVuZG9NYW5hZ2Vy
KCkKLSAgICA6IG1fcmVkb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb1N0YWNrPigpKQot
ICAgICwgbV91bmRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCisgICAg
OiBtX3JlZG9TdGFjayhtYWtlVW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKKyAgICAsIG1fdW5kb1N0
YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigpKQogewogfQogCkBAIC0xNDYsNyArMTQ2LDcg
QEAgdm9pZCBEUlRVbmRvTWFuYWdlcjo6dW5kbygpCiB9CiAKIFVJRGVsZWdhdGU6OlVJRGVsZWdh
dGUoKQotICAgIDogbV91bmRvTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5hZ2Vy
PigpKQorICAgIDogbV91bmRvTWFuYWdlcihtYWtlVW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpKQog
ICAgICwgbV9kZXNrdG9wTm90aWZpY2F0aW9ucyhuZXcgRFJURGVza3RvcE5vdGlmaWNhdGlvblBy
ZXNlbnRlcikKIHsKICAgICBtX2ZyYW1lLmJvdHRvbSA9IDA7CkBAIC0xNTcsNyArMTU3LDcgQEAg
VUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCiAKIHZvaWQgVUlEZWxlZ2F0ZTo6cmVzZXRVbmRvTWFu
YWdlcigpCiB7Ci0gICAgbV91bmRvTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb01h
bmFnZXI+KCk7CisgICAgbV91bmRvTWFuYWdlciA9IG1ha2VVbmlxdWU8RFJUVW5kb01hbmFnZXI+
KCk7CiB9CiAKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQg
cmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Ub29scy9N
aW5pQnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAK
aW5kZXggYmU2NDYwZTU2YjdiNzBjZDI0ODBmYzg3ZGUyYjliYTk3MGU1OGMzOC4uNDM5MTkyOTc5
MWRkNjcxMzFjODU4YTE2Njg5YzUyYmFkYzFkZDg2MiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApA
QCAtMTI5LDggKzEyOSw4IEBAIHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQZXJtaXNzaW9uUmVxdWVz
dChXZWJLaXRXZWJWaWV3ICosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0CiBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ+IGNyZWF0ZVZpZXdCYWNr
ZW5kKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiB7CiAgICAgaWYgKGhlYWRsZXNz
TW9kZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRz
OjpIZWFkbGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpI
ZWFkbGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxXUEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsK
IH0KIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMjUxLDcgKzI1MSw3IEBAIGludCBtYWluKGludCBh
cmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgIG51bGxwdHIpKTsKICAgICBnX29iamVjdF91bnJl
ZihzZXR0aW5ncyk7CiAKLSAgICBiYWNrZW5kUHRyLT5zZXRJbnB1dENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPElucHV0Q2xpZW50Pihsb29wLCB3ZWJWaWV3KSk7CisgICAgYmFja2VuZFB0ci0+c2V0
SW5wdXRDbGllbnQobWFrZVVuaXF1ZTxJbnB1dENsaWVudD4obG9vcCwgd2ViVmlldykpOwogI2lm
IGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkKICAgICBh
dXRvKiBhY2Nlc3NpYmxlID0gd3BlX3ZpZXdfYmFja2VuZF9kaXNwYXRjaF9nZXRfYWNjZXNzaWJs
ZSh3cGVCYWNrZW5kKTsKICAgICBpZiAoQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29u
dGV4dC5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRD
b250ZXh0LmgKaW5kZXggNGUwMjBmMTk2Y2QwMzNkNjFlZTBlNjI4ZjZhMWU1OWNhMWMzMzQ1OC4u
MGI4NGQyZDQ1NDU1ODNkZTlmYzBkZWMxMmE0YWE4OGE2NTllZDE5OCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmgKKysr
IGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0
LmgKQEAgLTY4LDYgKzY4LDcgQEAgdHlwZWRlZiBlbnVtICB7CiB9IENhbGxiYWNrVHlwZTsKIAog
Y2xhc3MgVUlTY3JpcHRDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShVSVNjcmlwdENvbnRleHQpOwogcHVibGljOgogICAgIFVJ
U2NyaXB0Q29udGV4dChVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSYpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmggYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaAppbmRleCAyOGRiMTBh
NDc5OTYzMGM2NGM1NWQwNzg2YzAwZWUwOTQ4OTE0NWUyLi4zOWI0ZTVlYTcxODM2ODhjZGVjOWJl
ZmNjOTY0Y2U4OTNhNTQzZjA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaApAQCAtMjYsOSArMjYsMTEgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogY2xhc3MgQ2xhc3NNZXRob2RTd2l6
emxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQ2xhc3NNZXRob2RTd2l6emxlcik7CiBwdWJsaWM6CiAgICAgQ2xhc3NNZXRob2RTd2l6
emxlcihDbGFzcywgU0VMLCBJTVApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b3VudGVycy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCmluZGV4IGY5ZWEyMjQw
MjYxNTBkOGUxYWM2YmI3NjE1YjZkZTM4OTBhZjY3MGUuLmFiNWM1MmY3NWQxYWM2YWY5NjBhYzE0
Y2E3MGI1Y2I3NGZhMzYyODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRl
cnMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgKQEAgLTI3LDYgKzI3LDgg
QEAKICNpZm5kZWYgQ291bnRlcnNfaAogI2RlZmluZSBDb3VudGVyc19oCiAKKyNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorCiBzdHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsKICAgICBzdGF0aWMg
dW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvcHlDb3Vu
dDsKQEAgLTUwLDYgKzUyLDcgQEAgc3RydWN0IENvcHlNb3ZlQ291bnRlciB7CiAKIAogc3RydWN0
IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CiAgICAg
c3RhdGljIHVuc2lnbmVkIGRlc3RydWN0aW9uQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZh
U2NyaXB0VGVzdC5jcHAKaW5kZXggMjEzNmU5OGQ4ZWJiODc1ZDU5N2ZjNmUwN2M3YjAxZWQ1Yjg0
YWUxNi4uNmEyMzM2MzI5NDFhY2Y2MDcwNTk0OTQyNjQwMWIzMjczMzdjNzA4MSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgOjp0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQgcnVuSlNUZXN0KGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29u
c3QgY2hhciosIFdLUGEKICAgICBVdGlsOjpydW4oJmNvbnRleHQuZGlkRmluaXNoKTsKIAogICAg
IHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGNv
bnRleHQuYWN0dWFsU3RyaW5nLmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgSlNTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhjb250ZXh0LmFjdHVhbFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBi
dWZmZXJTaXplKTsKICAgICAKICAgICByZXR1cm4gY29tcGFyZUpTUmVzdWx0KHNjcmlwdCwgYnVm
ZmVyLmdldCgpLCBleHBlY3RlZFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1V
dGlsaXRpZXMuY3BwCmluZGV4IDhmOGQ3NjhhNTNjMjc1MWEyNDNlMDU5NWUyYzBjMGY0NDVkZDk2
YzguLmJiYmZmNzA5ZTY3ZDM1OWI0ZTQ4MTcxZWQ3YzRjMjQwMDhhNTY3ZjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFdLQ29u
dGV4dFJlZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0ZXN0TmFtZSwgV0tUCiBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcp
CiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmlu
Z1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltd
PihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9
IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUp
OwogICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEp
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggYWQyYTczMmQ1MTk0
N2JiYzdhZmM2NGUyN2Q0MjE1Y2UzMjg3ZGRlZS4uMGMyN2E0NjE2NDVmYmExMmE1YzY5NWQ5MzI2
NDMwNTI2YzRlZjEyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdl
YlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCkBAIC0y
Niw2ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtV2ViVmlld19oCiAjZGVmaW5lIFBsYXRmb3Jt
V2ViVmlld19oCiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCiAjaWYgVVNFKENHKQog
I2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAjZW5kaWYKQEAgLTYzLDYgKzY1
LDcgQEAgdHlwZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZpZXJzOwogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2ViVmlldyhXS1BhZ2VD
b25maWd1cmF0aW9uUmVmKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RXhwZWN0ZWQuY3BwCmluZGV4IDRiMTBjODZhMmFiNzMyZTFlYTYyNzQ4NGNjNzg5NDBmYjZjZDZl
OTYuLjJhMDZmOGJhNWNhOWZlYjQ5MmEzNTIyYzVjNjU1MDEzOGQyMjM3ZTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKQEAgLTQwNyw2ICs0MDcsNyBAQCBU
RVNUKFdURl9FeHBlY3RlZCwgZGVzdHJ1Y3RvcnMpCiBzdGF0aWMgaW50IHNub3dmbGFrZXMgPSAw
Owogc3RhdGljIGludCBtZWx0ZWQgPSAwOwogc3RydWN0IHNub3dmbGFrZSB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0KCkgeyBzbm93
Zmxha2VzID0gbWVsdGVkID0gMDsgfQogICAgIHNub3dmbGFrZSgpIHsgKytzbm93Zmxha2VzOyB9
CiAgICAgfnNub3dmbGFrZSgpIHsgKyttZWx0ZWQ7IH0KQEAgLTQxNiw3ICs0MTcsNyBAQCBURVNU
KFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKIHsKICAgICAvLyBVbmlxdWUgc25vd2ZsYWtlcyBj
YW5ub3QgYmUgY29waWVkLgogICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQo
c3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBhdXRvIHMgPSBtYWtlVW5l
eHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIEVYUEVDVF9FUShzbm93
Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7CiAgICAgfQpAQCAtNDI1
LDcgKzQyNiw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFr
ZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQoc3Rk
OjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBl
Y3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIFVuZXhwZWN0ZWQ8c3RkOjp1
bmlxdWVfcHRyPHNub3dmbGFrZT4+IGMoV1RGTW92ZShzKSk7CiAgICAgICAgIEVYUEVDVF9FUShz
bm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7CkBAIC00NDYsNyAr
NDQ3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgfTsKIAogICAgIHsK
LSAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4sIGludD4gcyhzdGQ6
Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVl
X3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAg
ICBwbG93KFdURk1vdmUocykudmFsdWUoKSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxh
a2VzLCAxKTsKQEAgLTQ1NCw3ICs0NTUsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0
cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPGlu
dCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtl
X3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8aW50LCBzdGQ6OnVuaXF1
ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4o
KSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAgICAgfQogICAgIEVYUEVD
VF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ2Miw3ICs0NjMsNyBAQCBURVNUKFdURl9FeHBlY3Rl
ZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAg
IEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVj
dGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKSk7CisgICAgICAgIEV4cGVjdGVkPHZv
aWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlx
dWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS5lcnJvcigpKTsKICAg
ICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCmluZGV4IDg0ZGE1ZWMzZmZjMjQ4YWNk
ZDllMzYzMzAzOGM2OWRhZTg5MTIwOTkuLjdiOGZhZjI4OGFiYzA3Y2ZhZjhiNTI3MTIzOGY3NmQw
MTMwMTJlZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hD
b3VudGVkU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291
bnRlZFNldC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwg
VW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5p
cXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwog
CiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1
Y3Rpb25Db3VudCk7CkBAIC0yNTksNyArMjU5LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQs
IFVuaXF1ZVB0cktleUluaXRpYWxDb3VudCkKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5p
cXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1
bmlxdWVQdHIpLCAxMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBURVNUKFdU
Rl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAg
ICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0Owog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0
byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwog
ICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChX
VEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgVEVTVChXVEZfSGFzaENv
dW50ZWRTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBI
YXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAg
aW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSk7CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBURVNUKFdURl9IYXNoQ291bnRl
ZFNldCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRl
ZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIg
PSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVl
UHRyKSk7CiAKQEAgLTMzNyw3ICszMzcsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5p
cXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0
ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRT
ZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1h
cC5jcHAKaW5kZXggMWUxNjNkMzg5OThlNmJhYmZmZjUzODQxM2NjYTI4YWE2ZDI5ODk4Mi4uYTgw
Y2E3NDk0YThmOWE3OTY3ZTFlNDk0NmZlOGNjYTYzOWNiYjU4YiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBURVNUKFdURl9I
YXNoTWFwLCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4oKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKICAgICBFWFBFQ1Rf
RVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsK
QEAgLTIzMCw3ICsyMzAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfRmluZFVz
aW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+
IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50
Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKFdURl9IYXNoTWFw
LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDxz
dGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIu
Z2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yNTUsNyAr
MjU1LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRl
cikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAg
IGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5p
cXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBp
bnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRy
KSwgMik7CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJL
ZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVl
UHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjg5
LDcgKzI4OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9UYWtlVXNpbmdSYXdQ
b2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1h
cC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtNTYzLDEyICs1NjMsMTIgQEAgVEVT
VChXVEZfSGFzaE1hcCwgRW5zdXJlX1VuaXF1ZVBvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDx1bnNp
Z25lZCwgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkPj4gbWFwOwogICAgIHsKLSAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
dW5zaWduZWQ+KDEpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEs
IFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkPigx
KTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1hcC5nZXQoMSkpOwogICAgICAgICBFWFBF
Q1RfRVEoMXUsICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKDF1LCBhZGRSZXN1bHQuaXRlcmF0b3ItPmtleSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQyID0gbWFwLmVu
c3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkPigyKTsgfSk7Cisg
ICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDIpOyB9KTsKICAgICAgICAgRVhQ
RUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKmFkZFJlc3Vs
dDIuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1
bHQyLml0ZXJhdG9yLT5rZXkpOwpAQCAtNTkwLDYgKzU5MCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAs
IEVuc3VyZV9SZWZQdHIpCiB9CiAKIGNsYXNzIE9iamVjdFdpdGhSZWZMb2dnZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE9iamVjdFdpdGhSZWZMb2dnZXIo
UmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgICAgIDogbV9sb2dnZXIoV1RGTW92ZShsb2dn
ZXIpKQpAQCAtNjA0LDcgKzYwNSw3IEBAIHZvaWQgdGVzdE1vdmluZ1VzaW5nRW5zdXJlKFJlZjxS
ZWZMb2dnZXI+JiYgbG9nZ2VyKQogewogICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVl
X3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogICAgIAotICAgIG1hcC5lbnN1cmUoMSwg
WyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92
ZShsb2dnZXIpKTsgfSk7CisgICAgbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1
ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9KTsKIH0KIAogdm9pZCB0
ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCkBAIC02MTIsNyArNjEz
LDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFdpdGhSZWZMb2dnZXI+
PiBtYXA7CiAKICAgICBhdXRvJiBzbG90ID0gbWFwLmFkZCgxLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7Ci0gICAgc2xvdCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4o
V1RGTW92ZShsb2dnZXIpKTsKKyAgICBzbG90ID0gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9n
Z2VyPihXVEZNb3ZlKGxvZ2dlcikpOwogfQogCiBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfTGFt
YmRhc0NhcHR1cmluZ0J5UmVmZXJlbmNlKQpAQCAtNjgzLDYgKzY4NCw3IEBAIFRFU1QoV1RGX0hh
c2hNYXAsIFZhbHVlSXNEZXN0cnVjdGVkT25SZW1vdmUpCiBURVNUKFdURl9IYXNoTWFwLCBSZWZQ
dHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKIHsKICAgICBzdHJ1Y3QgRGVyZWZPYnNlcnZlciB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTkVWRVJfSU5M
SU5FIHZvaWQgcmVmKCkKICAgICAgICAgewogICAgICAgICAgICAgKytjb3VudDsKQEAgLTY5Nyw3
ICs2OTksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikK
ICAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2ZWRCdWNrZXQgeyBudWxscHRyIH07
CiAgICAgfTsKIAotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVmT2Jz
ZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8RGVyZWZPYnNlcnZlcj4o
KTsKIAogICAgIEhhc2hNYXA8UmVmUHRyPERlcmVmT2JzZXJ2ZXI+LCBpbnQ+IG1hcDsKICAgICBt
YXAuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSwgNSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hTZXQuY3BwCmluZGV4IDcxZWNmZGRiODQyYjZiZDUxNjQxY2EwNWI2MTA4
YWQ0OGY2MmJiN2QuLjg3MjY4Yzc0ZjBjYjhmYzE0OWViZjYwYzg1ODhmY2VkMzU4MWEyMDUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCkBAIC0xMjgsNyArMTI4
LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaFNldDxzdGQ6
OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1
dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAg
IEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9u
Q291bnQpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktl
eV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGlu
dD4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBURVNUKFdURl9IYXNoU2V0
LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaFNldDxz
dGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgp
OwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTcxLDcgKzE3MSw3IEBA
IFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAK
ICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVl
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1
bmlxdWVQdHIpKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1
ZVB0cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9w
dHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVl
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0
ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTI4Myw2ICsy
ODMsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBDb3B5Q2FwYWNpdHlJc05vdE9uQm91bmRhcnkpCiBU
RVNUKFdURl9IYXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKIHsKICAgICBzdHJ1
Y3QgRGVyZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAgICAgICAgewogICAgICAgICAg
ICAgKytjb3VudDsKQEAgLTI5Nyw3ICsyOTgsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBSZWZQdHJO
b3RaZXJvZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2
ZWRCdWNrZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VV
bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPERlcmVmT2JzZXJ2
ZXI+PiBzZXQ7CiAgICAgc2V0LmFkZChhZG9wdFJlZihvYnNlcnZlci5nZXQoKSkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCmluZGV4IDY1N2JlNDFk
NjIwNzI0NDY3YTU1NDllMmFiNWExOTQxYzRlMzczYzEuLmI3NzBhNWIyN2MxZDJiMDk1YTViYjU5
ZDY1YWMzZjRkYzRlNGU2OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0xpc3RIYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9M
aXN0SGFzaFNldC5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwg
VW5pcXVlUHRyS2V5KQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1
bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAg
ICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMzk2LDcg
KzM5Niw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3
UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsK
IAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1
dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsK
ICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVu
aXF1ZVB0cikpOwogCkBAIC00MTAsNyArNDEwLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVu
aXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxz
dGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQo
KTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00MjEsOSArNDIxLDkg
QEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9JbnNlcnRCZWZvcmVVc2luZ1Jh
d1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDIpOwor
ICAgIGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxpbnQ+KDIpOwogICAgIGF1dG8gcHRyV2l0aDIgPSB1bmlxdWVQdHJXaXRoMi5nZXQoKTsKLSAg
ICBhdXRvIHVuaXF1ZVB0cldpdGg0ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDQpOworICAgIGF1
dG8gdW5pcXVlUHRyV2l0aDQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+
KDQpOwogICAgIGF1dG8gcHRyV2l0aDQgPSB1bmlxdWVQdHJXaXRoNC5nZXQoKTsKIAogICAgIGxp
c3QuYWRkKFdURk1vdmUodW5pcXVlUHRyV2l0aDIpKTsKQEAgLTQzNSw3ICs0MzUsNyBAQCBURVNU
KFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRl
cikKICAgICBBU1NFUlRfRVEocHRyV2l0aDQsIGxpc3QubGFzdCgpLmdldCgpKTsKICAgICBBU1NF
UlRfRVEoNCwgKmxpc3QubGFzdCgpLmdldCgpKTsKIAotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDMg
PSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMyk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMyk7CiAgICAgYXV0byBwdHJXaXRo
MyA9IHVuaXF1ZVB0cldpdGgzLmdldCgpOwogCiAgICAgbGlzdC5pbnNlcnRCZWZvcmUocHRyV2l0
aDQsIFdURk1vdmUodW5pcXVlUHRyV2l0aDMpKTsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBURVNUKFdU
Rl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAg
IExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGF1dG8qIHB0ciA9IHVuaXF1
ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCmluZGV4IDJkY2NlZGNhZGNjNmMyMjI3M2RlYmMy
MGYzZmY2NzdjODczMjkwMjcuLjVmZDMxYmYxYzlhYmVjZmI4YWJlNzM1NjA4YTQ3YzU2MDQzMDQ3
NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCkBAIC00Miw5ICs0Miw5
IEBAIHN0cnVjdCBMb2NrSW5zcGVjdG9yIHsKIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPgog
dm9pZCBydW5Mb2NrVGVzdCh1bnNpZ25lZCBudW1UaHJlYWRHcm91cHMsIHVuc2lnbmVkIG51bVRo
cmVhZHNQZXJHcm91cCwgdW5zaWduZWQgd29ya1BlckNyaXRpY2FsU2VjdGlvbiwgdW5zaWduZWQg
bnVtSXRlcmF0aW9ucykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9ja3Mg
PSBzdGQ6Om1ha2VfdW5pcXVlPExvY2tUeXBlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8ZG91YmxlW10+
KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+
IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdy
b3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPExvY2tUeXBl
W10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8TG9ja1R5cGVbXT4o
bnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlW10+IHdvcmRzID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8ZG91YmxlW10+KG51bVRocmVhZEdyb3Vw
cyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRH
cm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAgZm9yICh1bnNpZ25lZCB0aHJlYWRH
cm91cEluZGV4ID0gbnVtVGhyZWFkR3JvdXBzOyB0aHJlYWRHcm91cEluZGV4LS07KSB7CiAgICAg
ICAgIHdvcmRzW3RocmVhZEdyb3VwSW5kZXhdID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKaW5kZXggNDUyZTIyNzcxZGMwNjRhZGFhZmU2MjBlYjMz
ZTgwMTMwZjc5ZjE5Ny4uZTAwYTA5YjJhMTdhYTczNDg1NmU0MmMxMTQ1Y2JlNjA4NjNmMGEwNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKQEAgLTE4
Miw3ICsxODIsNyBAQCBzdHJ1Y3QgU2luZ2xlTGF0Y2hUZXN0IHsKIAogdm9pZCBydW5QYXJraW5n
VGVzdCh1bnNpZ25lZCBudW1MYXRjaGVzLCB1bnNpZ25lZCBkZWxheSwgdW5zaWduZWQgbnVtVGhy
ZWFkcywgdW5zaWduZWQgbnVtU2luZ2xlVW5wYXJrcykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxTaW5nbGVMYXRjaFRl
c3RbXT4obnVtTGF0Y2hlcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNpbmdsZUxhdGNoVGVzdFtd
PiB0ZXN0cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFNpbmdsZUxhdGNoVGVz
dFtdPihudW1MYXRjaGVzKTsKIAogICAgIGZvciAodW5zaWduZWQgbGF0Y2hJbmRleCA9IG51bUxh
dGNoZXM7IGxhdGNoSW5kZXgtLTspCiAgICAgICAgIHRlc3RzW2xhdGNoSW5kZXhdLmluaXRpYWxp
emUobnVtVGhyZWFkcyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWZDb3VudGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50
ZXIuY3BwCmluZGV4IDA4MWRmOWU0ZmMxZDI1MWQ4MTRiMjI2NGJkMmQwZTA1MmMwYmQ0MWYuLmY0
ZWY5ODNiMWE5ZmJlODk4MDdjNzVhYzI4ZmRiNjI2ZDlhOTZhMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgVEVT
VChXVEYsIFJlZkNvdW50ZXIpCiBURVNUKFdURiwgUmVmQ291bnRlckRlbGV0ZUNvdW50ZXJXaXRo
T3V0c3RhbmRpbmdUb2tlbnMpCiB7CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVz
dENvdW50ZXI+IGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RDb3VudGVyPihbJl0oUmVm
Q291bnRlckV2ZW50IGV2ZW50KSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRl
cj4gY291bnRlciA9IG1ha2VVbmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZDb3VudGVyRXZlbnQg
ZXZlbnQpIHsKICAgICAgICAgICAgIGlmICghY291bnRlci0+dmFsdWUoKSkKICAgICAgICAgICAg
ICAgICBjb3VudGVyID0gbnVsbHB0cjsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAppbmRleCA0ZDJiMjJhYTU0ZjhiMDI1NDgwZjU5ZTU2
MWEzY2NlNzE1NTAyMzEyLi4xYWZlM2U5Nzc5YmI4NDg4N2U5NDMwZGU0MTcyNmM3NDM4NTMyZmRj
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKQEAgLTMw
LDggKzMwLDExIEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKICAgICAKLWNsYXNzIEEg
eyB9OworY2xhc3MgQSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cit9OwogY2xhc3Mg
QiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQihpbnQgYSwg
aW50IGIsIGludCBjKQogICAgICAgICA6IGEoYSkKQEAgLTQzLDYgKzQ2LDcgQEAgY2xhc3MgQiB7
CiAgICAgaW50IGM7CiB9OwogY2xhc3MgQyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQyhVbmlxdWVSZWY8QT4mJiBhKQogICAgICAgICA6IGEoV1RGTW92ZShh
KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKaW5kZXggMGVmMWYx
ZGE0NGJhYzUxNTRmZmZkMzMyMTM5NWU5ZjFlMmQyYTdjMi4uNTFlY2EwNzY4ZDJjY2UxYzlhMzI5
NTU1MmQzNTAwOWZmNGZkNTZiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVmFyaWFudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFy
aWFudC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBURVNUKFdURl9WYXJpYW50LCBDb25zdHJ1Y3Rv
ckRlc3RydWN0b3IpCiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6VGVzdGluZ1Nj
b3BlIHNjb3BlOwogCiAgICAgewotICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICAgICAgYXV0byB1bmlx
dWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAg
ICAgIFZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
LCBpbnQ+IHYgPSBXVEZNb3ZlKHVuaXF1ZVB0cik7CiAKICAgICAgICAgRVhQRUNUX0VRKDF1LCBD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCmluZGV4IDE1MGI5Yjc2YzhhNTY1ZTM2
NTU0ODM2ZTBiYmVjMDUwNWM3ODQ4ZjIuLjdlNjMwNjkzZWVjNjA0MWEzNzUwNDRhZjk0OWQ4NzQ2
YjY5NWNhNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQ
dHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCkBA
IC01MCw2ICs1MCw3IEBAIHN0cnVjdCBJbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW50PiB7
CiB9OwogCiBjbGFzcyBCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEJhc2U+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCYXNlKCkgeyB9CiAKQEAgLTU3
OCwxMCArNTc5LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQog
ICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICBF
WFBFQ1RfVFJVRShpbml0aWFsQ2FwYWNpdHkgLyBtYXhMb2FkQ2FwKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXA7ICsraSkgewot
ICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAg
ICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdl
YWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1v
dmUob2JqZWN0KSk7Ci0gICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8QmFzZT4oKSk7CisgICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKG1ha2VVbmlx
dWU8QmFzZT4oKSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7
CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKHNfYmFzZVdlYWtSZWZlcmVuY2VzLCBvdGhl
ck9iamVjdHMuc2l6ZSgpKTsKQEAgLTYxNSw3ICs2MTYsNyBAQCBURVNUKFdURl9XZWFrUHRyLCBX
ZWFrSGFzaFNldEV4cGFuc2lvbikKICAgICAgICAgRVhQRUNUX0VRKHdlYWtIYXNoU2V0LmNhcGFj
aXR5KCksIDB1KTsKICAgICAgICAgdW5zaWduZWQgb2JqZWN0Q291bnQgPSBpbml0aWFsQ2FwYWNp
dHkgKiAyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7ICsr
aSkgewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7
CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAg
ICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5k
KFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3Rl
bmN5KCk7CkBAIC02NjcsMTAgKzY2OCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNl
dENvbXB1dGVzRW1wdHkpCiAgICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFz
aFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAg
ICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAg
ICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hh
c2hTZXQuYWRkKCpmaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8g
b2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBvYmpl
Y3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9i
amVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAg
ICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IGZpcnN0T2JqZWN0Lmdl
dCgpKTsKQEAgLTczNCw4ICs3MzUsOCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENv
bXB1dGVTaXplKQogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4g
d2Vha0hhc2hTZXQ7Ci0gICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJhc2U+KCk7Ci0gICAgICAgIGF1dG8gbGFzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFz
ZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKKyAg
ICAgICAgYXV0byBsYXN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFr
SGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpsYXN0
T2JqZWN0KTsKICAgICAgICAgaWYgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgIT0gZmlyc3RP
YmplY3QuZ2V0KCkpCkBAIC03NTksMTAgKzc2MCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFr
SGFzaFNldENvbXB1dGVTaXplKQogICAgIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vh
a0hhc2hTZXQ7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzZT4+IG9iamVjdHM7
Ci0gICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7
CisgICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAg
ICAgIHdlYWtIYXNoU2V0LmFkZCgqbm9uRmlyc3RPYmplY3QpOwogICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAg
ICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hh
c2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShv
YmplY3QpKTsKICAgICAgICAgfSB3aGlsZSAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSA9PSBu
b25GaXJzdE9iamVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCmluZGV4IDJhYWI2NWRkOGZkN2VmMDcwNTFmYjZmNzU2
NzU4Y2RlNzAyZTA3YTEuLjgxZDdiYTI5MWFlOWY0YWI3Y2YyZTVmOWFhZDYyYzk0MjQzNTM2NzIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZm
ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZm
ZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAg
IFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPENBUmluZ0J1ZmZlcj4oKTsKICAgICB9CiAK
ICAgICAvLyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oZG91YmxlIHNhbXBsZVJhdGUsIFVJbnQz
MiBudW1DaGFubmVscywgUENNRm9ybWF0IGZvcm1hdCwgYm9vbCBpc0ludGVybGVhdmVkLCBzaXpl
X3QgY2FwYWNpdHkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNzc4ZTYxNTVmMDZjYzEyODM5Nzk3NWYwNDU4
NzEyYTJjNzEwNDBmYS4uZGNhNDYzNjAyZTk2ZDYwYTA0NTEzODEyMWNiYmRjZWZiZWU5ZTVjMiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9u
VmFsdWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxh
dGlvblZhbHVlLmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiBzdGF0aWMgdW5zaWduZWQgZGVsZXRpb25Db3VudDsKIAogY2xhc3MgQ2FsY3VsYXRpb25EZWxl
dGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FsY3VsYXRp
b25EZWxldGlvblRlc3ROb2RlKCkKICAgICB7CkBAIC01Miw3ICs1Myw3IEBAIGNsYXNzIENhbGN1
bGF0aW9uRGVsZXRpb25UZXN0Tm9kZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbk5v
ZGUgewogCiBzdGF0aWMgUmVmPFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZVRlc3RW
YWx1ZSgpCiB7Ci0gICAgYXV0byBub2RlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjdWxhdGlvbkRl
bGV0aW9uVGVzdE5vZGU+KCk7CisgICAgYXV0byBub2RlID0gbWFrZVVuaXF1ZTxDYWxjdWxhdGlv
bkRlbGV0aW9uVGVzdE5vZGU+KCk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFs
dWU6OmNyZWF0ZShXVEZNb3ZlKG5vZGUpLCBXZWJDb3JlOjpWYWx1ZVJhbmdlQWxsKTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNz
YWdlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1l
c3NhZ2VUZXN0LmNwcAppbmRleCBmNThkYThhNDIwNzNlYzk5YmJlZTM0YTg1YmVjMzRjMDg1YzUy
YTY0Li4wYzFhMDY5ZjEzYzM5YzQwOWU1ZDVlMWIwM2E3ZTkyYmY5YjM2NmMyIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VU
ZXN0LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0
UGFja2V0U2l6ZSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweDA1MDYwNzA4OwogICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwogCi0gICAgYXV0byBpbml0UGFja2V0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6
a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5p
dFBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgRmlkb0hp
ZERldmljZUNvbW1hbmQ6OmtJbml0LCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgp
KTsKICAgICBFWFBFQ1RfRVEoNjR1LCBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpLnNp
emUoKSk7CiAKLSAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8
Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsK
KyAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVh
dGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsKICAgICBFWFBFQ1RfRVEo
NjR1LCBjb250aW51YXRpb25QYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKIH0K
IApAQCAtNzAsNyArNzAsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldERh
dGEpCiAgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHhGNTA2MDcwODsKICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBjbWQgPSBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7Ci0gICAgYXV0byBpbml0UGFja2V0ID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90
PihkYXRhKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5pdFBhY2tldCA9IG1ha2VVbmlxdWU8
Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBWZWN0b3I8dWludDhfdD4oZGF0YSks
IGRhdGEuc2l6ZSgpKTsKICAgICBzaXplX3QgaW5kZXggPSAwOwogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHNlcmlhbGl6ZWQgPSBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpAQCAtOTQs
NyArOTQsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldENvbnN0cnVjdG9y
cykKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2aWNl
Q29tbWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7CiAgICAgc2l6ZV90IGxl
bmd0aCA9IGRhdGEuc2l6ZSgpOwotICAgIGF1dG8gb3JpZ1BhY2tldCA9IHN0ZDo6bWFrZV91bmlx
dWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5n
dGgpOworICAgIGF1dG8gb3JpZ1BhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+
KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5ndGgpOwogCiAgICAgc2l6ZV90IHBh
eWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG9yaWdQYWNrZXQtPnBheWxvYWRMZW5n
dGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9yaWdEYXRhID0gb3JpZ1BhY2tldC0+Z2V0U2Vy
aWFsaXplZERhdGEoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RmlsZU1vbml0b3IuY3BwCmluZGV4IDFlZDEzMjhmODEzMDllMTJlMTM3MWNiM2FkZmU2YjBhOTc4
M2VlYjYuLjIyODM4M2EwZjMwYTliMTM5ZjZhYWY0M2Y5NWNlZGQ4MDkxNjZlNmEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZSkKIAog
ICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIp
OwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVt
cEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0
b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6
OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpG
aWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMTkwLDcgKzE5MCw3IEBAIFRFU1RfRihG
aWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdlcykKIAogICAgIGF1dG8gdGVzdFF1
ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBt
b25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRl
c3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
eworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0
aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBl
IHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3
aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6
TW9kaWZpY2F0aW9uOgpAQCAtMjUwLDcgKzI1MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3Qs
IERldGVjdERlbGV0aW9uKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0
ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10g
KEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0g
bWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVm
KCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAg
IGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yODks
NyArMjg5LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlQW5kVGhlbkRl
bGV0ZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29y
ayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9u
aXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8
RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmls
ZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgY2FzZSBG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTM0Niw3ICszNDYs
NyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50
Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBX
b3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVN
b25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1
ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNl
IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRleCA5MmQ4
YTE5MmNhN2IyYTEwODE1NjU5OTdiMGVhNWIxZjlhZWE4ZjY1Li4yMTllOTY2ZGJlYmFhODRkMzYw
MjcyMmU5NTllMzJmNjRmYjRkYjJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBDdXJs
Q29va2llczogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHsKICAgICAgICAgbV9jb29raWVE
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKIAotICAg
ICAgICBtX2Nvb2tpZUphciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwg
ImNvb2tpZWRiLnNxbCIpKTsKKyAgICAgICAgbV9jb29raWVKYXIgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OkNvb2tpZUphckRCPihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9j
b29raWVEaXJlY3RvcnksICJjb29raWVkYi5zcWwiKSk7CiAgICAgICAgIG1fY29va2llSmFyLT5v
cGVuKCk7CiAgICAgICAgIG1fY29va2llSmFyLT5zZXRBY2NlcHRQb2xpY3koQ29va2llQWNjZXB0
UG9saWN5OjpBbHdheXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKaW5kZXgg
NWMwYWUzMzEzMjhiMzZiMGJhNzBhMThkOTkzNjY5NDEyYWNhMjlhOS4uYjNiM2JjM2NmNDlkNzg1
NDMwNTg0OWRkYTEyMTJmMTkzMmEwZDIwZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJl
ZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsKICAgICBFWFBFQ1Rf
VFJVRShvcGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVkV2ViVmlldyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBvcGVuZWRXZWJWaWV3
ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQYWdlVUlDbGll
bnRWNSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxl
cnRzU1BJLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRz
U1BJLmNwcAppbmRleCBhNGZiYTEyN2M2ZTRkMDNlNjNkOWE4MTcyYTM5YjNjYjhiMTQ3MmM3Li43
YmMzNTI0ZjJiZGI5ZGJkN2E0MzVhM2NjNmFkMzgzMmU5NDRlZGQ1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdl
LCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsKICAgICBFWFBFQ1RfVFJVRShv
cGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVkV2ViVmlldyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBvcGVuZWRXZWJWaWV3ID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQYWdlVUlDbGllbnRWNSB1
aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJl
Z2luQW5kRW5kRWRpdGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9U
ZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCmluZGV4IDBmN2ZkNDBhNjNlNWVjZjc4
Yzk2OGRmODAzOGQxOTIyMWVkYmY3ZDUuLmNkMTlkN2NkZTU4ODk2MjVmMTIyMTJmYzc1M2NmZDU1
ZTI3OGQ5MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Rl
eHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcApAQCAtOTcs
NyArOTcsNyBAQCBzdHJ1Y3QgV2ViS2l0MlRleHRGaWVsZEJlZ2luQW5kRWRpdEVkaXRpbmdUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLQ29udGV4
dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVu
ZGxlVGVzdCgiVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nRXZlbnRzVGVzdCIpKTsKICAg
ICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAg
ICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0
LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihj
b250ZXh0LmdldCgpKTsKICAgICAgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LT5wYWdl
KCksIHRoaXMpOwogCiAgICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcAppbmRleCBjN2IwMjUx
YmZjZjIxYWE0YWJkMTE0Yzg1NTA3OTI0MWQ2NjE3NGU5Li45ZGMzYTZkYTk5NTA5YzI3MTEyMWQ0
YzNhNDUzMDg0ZmVlOTg5YmQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvVXNlck1lc3NhZ2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFdlYktpdDJVc2Vy
TWVzc2FnZVJvdW5kVHJpcFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAg
Y29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVz
dCgiVXNlck1lc3NhZ2VUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChj
b250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBzZXRQYWdl
TG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAgZGlkRmluaXNo
TG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvV2lsbExvYWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExv
YWQuY3BwCmluZGV4IGVkOWYwZmZjNzAyNWFiMTJjYjUzOTY3ZjcyMDVmZjk2Yzg5YmU2OTkuLjUy
ZjE4ZGNlYjQyZDUxYWMwODM5NWI2MjAwMWQ0YTk1NDBmNzQ1MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgY2xh
c3MgV2ViS2l0MldpbGxMb2FkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAg
ICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVU
ZXN0KCJXaWxsTG9hZFRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNv
bnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtl
VW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgZGlkUmVj
ZWl2ZU1lc3NhZ2UgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVh
cmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KaW5kZXggYWViYTFjMzQ4ZmJjNjZhMTcwZTUzOWUwYTcy
ODZhZWU5MTUzZTYwNC4uMjkxYTQ3OGEyNzg0MjQyZGFkNDVhM2E4ZjE3MzkwNWQ3ZDNiMmYyMSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGln
aHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQpA
QCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gYWRv
cHQoSlNWYWx1ZVRvU3RyaW5nQ29weShzY3JpcHRDb250ZXh0LCByZXN1bHQsIG51bGxwdHIpKTsK
IAogICAgICAgICBhdXRvIGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmlu
Z1NpemUocmVzdWx0U3RyaW5nLmdldCgpKTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICAg
ICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhyZXN1bHRTdHJpbmcuZ2V0KCksIGJ1ZmZlci5nZXQo
KSwgYnVmZmVyU2l6ZSk7CiAKICAgICAgICAgV0tCdW5kbGVQYWdlU2V0VXNlRGFya0FwcGVhcmFu
Y2UobV9wYWdlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKaW5kZXggZDZjYzJmYjI0N2U1
NjIwNjY5Nzc2MTBiMjU2NzliN2VkMWRjYzhiYS4uN2M4YzhiNTIxNTRhYzRlYjA5OGU2OTUxNzkw
NjlhMDVlYmRjNjZhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKQEAgLTI1Niw2ICsyNTYsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uRW1wdHlSZWFsbShBdXRoZW50
aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogfQogCiBjbGFzcyBUdW5uZWwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFR1bm5lbChTb3VwU2VydmVyKiBzZXJ2
ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICA6IG1fc2VydmVyKHNlcnZlcikKQEAg
LTI5OSw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBz
ZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogewogICAgIGlmIChtZXNz
YWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfQ09OTkVDVCkgewogICAgICAgICBnX2Fzc2VydF9j
bXB1aW50KHNvdXBfc2VydmVyX2dldF9wb3J0KHNlcnZlciksID09LCBnUHJveHlTZXJ2ZXJQb3J0
KTsKLSAgICAgICAgYXV0byB0dW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFR1bm5lbD4oc2VydmVy
LCBtZXNzYWdlKTsKKyAgICAgICAgYXV0byB0dW5uZWwgPSBtYWtlVW5pcXVlPFR1bm5lbD4oc2Vy
dmVyLCBtZXNzYWdlKTsKICAgICAgICAgYXV0byogdHVubmVsUHRyID0gdHVubmVsLmdldCgpOwog
ICAgICAgICB0dW5uZWxQdHItPmNvbm5lY3QoW3R1bm5lbCA9IFdURk1vdmUodHVubmVsKV0oY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7
CkBAIC0zOTQsNyArMzk1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlv
blByb3h5KFByb3h5QXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3QKIAogc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRUUFMoUHJveHlBdXRoZW50aWNhdGlv
blRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgYXV0byBodHRwc1NlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVy
SFRUUFMpOworICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdFRlc3RTZXJ2
ZXI+KFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFBTKTsKICAgICBodHRwc1NlcnZlci0+cnVu
KHNlcnZlckNhbGxiYWNrKTsKIAogICAgIHRlc3QtPmxvYWRVUkkoaHR0cHNTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9wcm94eS9hdXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCmluZGV4
IDdhNDRjYjA1Y2Q0YmMwMjdlMTJkMTEwM2ZhZjZhMDA3YWM2ZjQwZjMuLmI2YjcyOGU0NWUwOWM1
MWE2ZDZiYTk5YmY3MTdlMTk1ZTlhMGUwYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjZW5kaWYKIAogY2xhc3MgV2ViUHJvY2Vzc1Rlc3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlByb2Nlc3NUZXN0KCkgeyB9CiAgICAg
dmlydHVhbCBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdGVzdE5hbWUsIFdlYktpdFdlYlBhZ2Uq
KSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9E
T01ET01XaW5kb3dUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L0RPTURPTVdpbmRvd1Rlc3QuY3BwCmluZGV4IDEyNTYyNDE5NmE3MWM2ZDNhZDViY2RkMjlmMTQy
Yjg2YWJiOWZkMTEuLmU0MDAwNzYzM2YyMzYyNDA1MjlkZjU0YWU4NjMyMDg3YmQzNjk1MmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRv
d1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURP
TVdpbmRvd1Rlc3QuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBjbGlja2Vk
Q2FsbGJhY2soV2ViS2l0RE9NRE9NV2luZG93KiwgV2ViS2l0RE9NRXZlbnQqLCBXZWJLaXRET01E
CiAKIGNsYXNzIFdlYktpdERPTURPTVdpbmRvd1Rlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3Qg
ewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNy
ZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4o
KTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgp
IHsgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQogCiBwcml2
YXRlOgogICAgIGd1aW50NjQgd2ViUGFnZUZyb21BcmdzKEdWYXJpYW50KiBhcmdzKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCmlu
ZGV4IDhkMmVlOGFkMTZjYWQ2Nzk1NjhlZDliNmQ3NWNlY2Q4MjE1MGZlZGIuLjM0OTBlZjFjZWI2
ZjE3ODA1MDJmMGNkYzkxOWM5NzFlMjkyYmU5MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KQEAgLTM4LDcgKzM4LDcgQEAg
c3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJpbmcgKnN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKCk7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFtzdHJpbmcgbGVuZ3RoT2ZCeXRl
c1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgIGF1dG8gYnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAg
ICBOU1VJbnRlZ2VyIHN0cmluZ0xlbmd0aDsKICAgICBbc3RyaW5nIGdldEJ5dGVzOmJ1ZmZlci5n
ZXQoKSBtYXhMZW5ndGg6YnVmZmVyU2l6ZSB1c2VkTGVuZ3RoOiZzdHJpbmdMZW5ndGggZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmcgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtz
dHJpbmcgbGVuZ3RoXSkgcmVtYWluaW5nUmFuZ2U6MF07CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5n
KGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbQppbmRleCA1NDZjYTZlMjIyZDlmZWE4MWNlN2JlNGUyYzJkMzk4NWM1
YjQ0ZjBmLi4yNDc1NzI4OThiNmE4NzljN2EzNmI0ZmM2NWI5MTUzMzA0NzBmZmQwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yOTQsNyArMjk0LDcg
QEAgc3RhdGljIHZvaWQgYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3Ry
aW5nc1RvSXRlbVByb3ZpZGVycygpCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc01l
dGhvZFN3aXp6bGVyPiBzd2l6emxlcjsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHN3aXp6bGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJp
bmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRl
ciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Q
cm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CisgICAgICAgIHN3aXp6bGVyID0gbWFrZVVuaXF1
ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rv
cih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJs
aWNSVEZEKSk7CiAgICAgfSk7CiB9CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0Nv
bmZpZ3VyYXRpbwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzUyMDQ+IGlz
IGZpeGVkLgotICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hh
cmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJh
cikpOworICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0
aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91
dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOwogICAg
IF9pbnB1dFNlc3Npb25DaGFuZ2VDb3VudCA9IDA7CiAgICAgYXBwbHlXb3JrYXJvdW5kVG9BbGxv
d1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmgKaW5kZXggNjkwZjBhNzc1NmNmZTNhZmIwN2Q5MGJlZWZmMDk1NzhiMmZjNTVkZS4uMjgx
NDUyN2YxOWI5NTRmODJhZWI4N2JjMGU0YzhkYzBiOWE3ZjViNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaApAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogY2xhc3MgV2Vi
S2l0VGVzdFNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAK
ICAgICBlbnVtIFNlcnZlck9wdGlvbnMgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZv
bnRPcHRpb25zLm1tCmluZGV4IDg2MjYzNTQ0MzM1YTdmNWQ5NzFiNWRjMGQyNTllNTVkYzBkNzNj
NjYuLjRiZGU2YzUxMDBkMmJkNmZlNGJiOTBmYWNiZTI1ZDMzOWE1MDU0YmIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KQEAgLTg0LDcgKzg0LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRm9udE9wdGlvbnM6KE5TRm9udE9wdGlvbnMgKilmb250T3B0
aW9ucwogCiAgICAgX3NoYWRvd09mZnNldCA9IENHU2l6ZVplcm87CiAgICAgX3NoYWRvd0JsdXJS
YWRpdXMgPSAwOwotICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRp
b25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKKyAgICBfcmVwbGFjZUZvbnRPcHRpb25z
U3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQ2xhc3NGcm9tU3Ry
aW5nKEAiTlNGb250T3B0aW9ucyIpLCBAc2VsZWN0b3Ioc2hhcmVkRm9udE9wdGlvbnMpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc2hhcmVkRm9udE9wdGlvbnNGb3JUZXN0aW5nKSk7CiAgICAgX2hh
c1BlbmRpbmdTaGFkb3dDaGFuZ2VzID0gTk87CiAgICAgX2hhc011bHRpcGxlRm9udHMgPSBOTzsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAppbmRleCAxNTMyMjE4
MjY5OWUwZWEzMDc1NGEwMjI2YzNhN2I2Mjk1OTc2ZDAwLi4xMTM5OWIzOTBmZTkxNzBmNmM1MjUy
NzVhYzIzNDU4MmRhZjc1MGY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2
ZW50U2VuZGVyUHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaApAQCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgV1RSRXZlbnRRdWV1ZUl0ZW07CiAjZW5k
aWYKIAogY2xhc3MgRXZlbnRTZW5kZXJQcm94eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxl
ciopOwogICAgIH5FdmVudFNlbmRlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKaW5kZXggN2Q5NDVkNjdlYzY3NTBiZTcwNjQz
NWEyYTZiM2M3NGQxYWQxNzQzYy4uMWVkNGFkZjliMzkzOTNhMzMzYWEzMjUxMDk3YjllM2FhNDJj
YzM2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3Zp
ZGVyTW9jay5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRl
ck1vY2suaApAQCAtMjcsMTAgKzI3LDEyIEBACiAjZGVmaW5lIEdlb2xvY2F0aW9uUHJvdmlkZXJN
b2NrX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBHZW9sb2NhdGlvblByb3Zp
ZGVyTW9jayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR2Vv
bG9jYXRpb25Qcm92aWRlck1vY2soV0tDb250ZXh0UmVmKTsKICAgICB+R2VvbG9jYXRpb25Qcm92
aWRlck1vY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDFmOWQzZWZj
OTY0ZmIxMzc3YmM2NjNjMDE2MGMzNGE4OGIyMzI4YTYuLmM5YTUyYzE1Zjc3MDgzMDY4M2M4ZWZm
Njg5NDI5YmQwYmMxZjU2NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcApAQCAt
NjEyLDYgKzYxMiw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW9uaXRvcldoZWVs
RXZlbnRzKCkKIH0KIAogc3RydWN0IFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgeworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBKU0NvbnRleHRSZWYgbV9jb250
ZXh0OwogICAgIEpTT2JqZWN0UmVmIG1fZnVuY3Rpb247CiAKQEAgLTY0Nyw3ICs2NDgsNyBAQCB2
b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhK
U1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbAogICAgIAogICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRleHQs
IGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogCi0gICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2Fs
bGJhY2tEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRh
Pihjb250ZXh0LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsKKyAgICBhdXRvIHNjcm9sbENvbXBs
ZXRpb25DYWxsYmFja0RhdGEgPSBtYWtlVW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0Rh
dGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogICAgIGF1dG8gc2Nyb2xsQ29t
cGxldGlvbkNhbGxiYWNrRGF0YVB0ciA9IHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEucmVs
ZWFzZSgpOwogICAgIGJvb2wgY2FsbGJhY2tXaWxsQmVDYWxsZWQgPSBXS0J1bmRsZVBhZ2VSZWdp
c3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhwYWdlLCBleGVjdXRlQ2FsbGJh
Y2ssIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGFQdHIpOwogICAgIGlmICghY2FsbGJhY2tX
aWxsQmVDYWxsZWQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNzExNmNjOTgxNTY2OWQ5NDk0ZGJm
OGRlNDhiYWVlY2Q2Mzc0YzM3Ni4uODNiMmIzMGIxMzMyZWM3N2JmZWZjYzI5ZmRkMWEyZTQ4M2Ni
NWYyMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxp
emF0aW9uVXNlcgogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSkKIHsKICAgICBib29sIGlzTWFpblBhZ2UgPSBtX3BhZ2VzLmlzRW1wdHkoKTsK
LSAgICBtX3BhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkQnVuZGxlUGFnZT4o
cGFnZSkpOworICAgIG1fcGFnZXMuYXBwZW5kKG1ha2VVbmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdl
PihwYWdlKSk7CiAKICAgICBzZXRVcEluamVjdGVkQnVuZGxlQ2xpZW50cyhwYWdlKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmgKaW5kZXggNTlkM2UxYjBkMDJlMjJjNTJmYTc2NTQzMzI5YzIzZjZiNjJh
Mzg5YS4uYjMyM2MyNTA0NGY1NTAzNjA3NmY0OGVkZGQ0N2JjZWFhM2UyMGYxOCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVQYWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmKTsKICAgICB+SW5qZWN0
ZWRCdW5kbGVQYWdlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1OWYyNWMxYmJhYzZlZDg5ZTk0Y2ZhODhhOWFm
ZmMwM2ZiNzI0YTE4Li4zYjBlZDZhYWNhNzU5OTU1ZWQxNWNlOGIwYzEwY2YzNzJjOTkxZDMxIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKQEAgLTIzNzQsNyArMjM3NCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0T3BlblBh
bmVsRmlsZXMoSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1dG8gZmlsZSA9IGFk
b3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBudWxscHRyKSk7CiAg
ICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gZmlsZUJ1
ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oZmlsZUJ1ZmZl
clNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZpbGVC
dWZmZXIuZ2V0KCksIGZpbGVCdWZmZXJTaXplKTsKIAogICAgICAgICBXS0FycmF5QXBwZW5kSXRl
bShmaWxlVVJMcy5nZXQoKSwgYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhCYXNlVVJMKG1fdGVzdFVS
TC5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSkpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggMGU1YzA3Y2E3MjliNmRmY2IzOGM4MDQyNmQz
OTI0NGUzMmMwMDE3Yy4uMThlNTdkMmZjZjYyOTc2N2E3MzI5NzliYzJlZGM1N2FjZjEwOWNlMiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTczMCw3
ICs3MzAsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0VG9KU09iamVjdEFycmF5KGNvbnN0
IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbQogICAgIEpTQ29udGV4dFJlZiBjb250
ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CiAKICAg
ICBzaXplX3QgZWxlbWVudENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgIGF1dG8gdmFsdWVF
bGVtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOwor
ICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PEpTVmFsdWVSZWZbXT4oZWxlbWVudENvdW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGVsZW1lbnRDb3VudDsgaSsrKQogICAgICAgICB2YWx1ZUVsZW1lbnRzW2ldID0gSlNPYmplY3RN
YWtlKGNvbnRleHQsIGNoaWxkcmVuW2ldLT53cmFwcGVyQ2xhc3MoKSwgY2hpbGRyZW5baV0uZ2V0
KCkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmll
dy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCBmNzRj
YzJkMzkzZDUzMDVmZDM2NjViYjBlMGEzNTUxODQ0NzMxMDlmLi5jYTRmZGJkNzIyMTVhZjQ4YmRh
OTY3ZDViY2FiNDgxNTZiYWRjYzcxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1X
ZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGVz
dE9wdGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpICYmICFkZWZpbmVkKEJVSUxESU5HX0dUS19fKQogI2luY2x1ZGUgPFdlYktpdC9XS0Zv
dW5kYXRpb24uaD4KQEAgLTY0LDYgKzY1LDcgQEAgdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIFBs
YXRmb3JtSW1hZ2U7CiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBQbGF0Zm9ybVdlYlZpZXcoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiosIGNvbnN0IFRl
c3RPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1
bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaAppbmRl
eCBkYWYxNGNhNzA1NDg2YmZjMjA2NDMxMjNkZTUwOTFiNzllNWQwMTMxLi5iYmExN2MyZWZmYjA5
NjY1ZWZjMjhlZWI2OWU3MjMyOWIxZDY5Yjc0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3Ry
aW5nRnVuY3Rpb25zLmgKQEAgLTczLDcgKzczLDcgQEAgaW5saW5lIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiB0b0pTKGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5s
aW5lIHN0ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3Qg
YnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwot
ICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOwor
ICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltd
PihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4
Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0
ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CkBAIC04Niw3ICs4
Niw3IEBAIGlubGluZSBzdGQ6OnN0cmluZyB0b1NURChjb25zdCBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4mIHN0cmluZykKIGlubGluZSBXVEY6OlN0cmluZyB0b1dURlN0cmluZyhXS1N0cmluZ1Jl
ZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1V
VEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmlu
Z0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25TdHJpY3Qoc3RyaW5nLCBidWZmZXIu
Z2V0KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBXVEY6OlN0cmluZzo6ZnJvbVVURjhXaXRo
TGF0aW4xRmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTY1NDYyOWNhYTZmNmQ4
Yzg5NDU0ODM1MWMwYzhmYjBhMzMzMzcyYS4uZjk3ZjE1ZTYxMmMwYjFhNDcwMzhkZGJkMzc4YjY2
ZDBlN2FjNDI3NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
QEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBh
cmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBh
Z2VHcm91cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJXZWJLaXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAgIG1fcGFnZUdyb3VwLmFkb3B0KFdL
UGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdyb3VwSWRlbnRpZmllci5nZXQoKSkp
OwogCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRl
clByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50
U2VuZGVyUHJveHk+KHRoaXMpOwogfQogCiBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25z
dCBUZXN0T3B0aW9uczo6Q29udGV4dE9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CkBAIC01MjEsNyAr
NTIxLDcgQEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xs
ZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY28KICAgICAgICAgbV9jb250ZXh0ID0gcGxh
dGZvcm1BZGp1c3RDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRp
b24oY29udGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpKS5nZXQoKSwgY29udGV4dENvbmZpZ3VyYXRp
b24uZ2V0KCkpOwogICAgICAgICBtX2NvbnRleHRPcHRpb25zID0gb3B0aW9ucy5jb250ZXh0T3B0
aW9uczsKIAotICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX2dl
b2xvY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPiht
X2NvbnRleHQuZ2V0KCkpOwogCiAgICAgICAgIGlmIChjb25zdCBjaGFyKiBkdW1wUmVuZGVyVHJl
ZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKSkgewogICAgICAgICAgICAgU3RyaW5nIHRl
bXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKQEAg
LTk1MSw3ICs5NTEsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIC8vIEZJWE1FOiBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGVuc3VyZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHBh
Z2Ugb3Blbi4KIAogICAgIC8vIFJlc2V0IHRoZSBFdmVudFNlbmRlciBmb3IgZWFjaCB0ZXN0Lgot
ICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRTZW5kZXJQcm94
eT4odGhpcyk7CisgICAgbV9ldmVudFNlbmRlclByb3h5ID0gbWFrZVVuaXF1ZTxFdmVudFNlbmRl
clByb3h5Pih0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBJcyB0aGlzIG5lZWRlZD8gTm90aGluZyBp
biBUZXN0Q29udHJvbGxlciBjaGFuZ2VzIHByZWZlcmVuY2VzIGR1cmluZyB0ZXN0cywgYW5kIGlm
IHRoZXJlIGlzCiAgICAgLy8gc29tZSBvdGhlciBjb2RlIGRvaW5nIHRoaXMsIGl0IHNob3VsZCBw
cm9iYWJseSBiZSByZXNwb25zaWJsZSBmb3IgY2xlYW51cCB0b28uCkBAIC0xMjM0LDExICsxMjM0
LDExIEBAIHN0YXRpYyBXS1VSTFJlZiBjcmVhdGVUZXN0VVJMKGNvbnN0IGNoYXIqIHBhdGhPclVS
TCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGJ1ZmZlcjsKICAgICBpZiAoaXNBYnNv
bHV0ZVBhdGgpIHsKLSAgICAgICAgYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHBy
ZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOworICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOwog
ICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKICAgICAgICAgc3RyY3B5
KGJ1ZmZlci5nZXQoKSArIHByZWZpeExlbmd0aCwgcGF0aE9yVVJMKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsg
UEFUSF9NQVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHBhdGhTZXBhcmF0b3IKKyAgICAg
ICAgYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihwcmVm
aXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFy
YXRvcgogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKICAgICAgICAg
aWYgKCFnZXRjd2QoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBQQVRIX01BWCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIGJvb2wgVGVzdENvbnRyb2xs
ZXI6OnJ1blRlc3QoY29uc3QgY2hhciogaW5wdXRMaW5lKQogICAgIFRlc3RPcHRpb25zIG9wdGlv
bnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QoY29tbWFuZCk7CiAKICAgICBXS1JldGFpblB0cjxXS1VS
TFJlZj4gd2tVUkwgPSBhZG9wdFdLKGNyZWF0ZVRlc3RVUkwoY29tbWFuZC5wYXRoT3JVUkwuY19z
dHIoKSkpOwotICAgIG1fY3VycmVudEludm9jYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJ
bnZvY2F0aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9jdXJyZW50SW52b2NhdGlv
biA9IG1ha2VVbmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKIAog
ICAgIGlmIChjb21tYW5kLnNob3VsZER1bXBQaXhlbHMgfHwgbV9zaG91bGREdW1wUGl4ZWxzRm9y
QWxsVGVzdHMpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPnNldElzUGl4ZWxUZXN0KGNv
bW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwpAQCAtMjk2MCw3ICsyOTYwLDcgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpCiAK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29u
ZmlndXJhdGlvbiwgb3B0aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxh
dGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAogUGxhdGZvcm1XZWJW
aWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJW
aWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNv
bnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAppbmRleCAxMDczYWIxNTFhMGUzNTQ5YTQxMmE1ZDI1ZjU0ZjdiMWI0ZTlkY2I4
Li4wOTEwOGIwZTUyMjQ0M2E2NzViNTExNGY0MjhjNzlhYTEwZDI4M2ZjIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTY2OSw3ICsxNjY5LDcgQEAgdm9p
ZCBUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCwgdW5z
aWduZWQgc2NyaXB0Q2FsbGJhY2sKICAgICBtX3BlbmRpbmdVSVNjcmlwdEludm9jYXRpb25EYXRh
ID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAgIG1fVUlT
Y3JpcHRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsK
KyAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBtYWtlVW5pcXVlPFVJU2NyaXB0Q29udGV4dD4o
KnRoaXMpOwogICAgIAogICAgIG1fVUlTY3JpcHRDb250ZXh0LT5ydW5VSVNjcmlwdCh0b1dURlN0
cmluZyhzY3JpcHQpLCBzY3JpcHRDYWxsYmFja0lEKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaAppbmRleCA3ODgwZGQ4ZGY1NTJmYzlkODJiOTRkMWQyZjJkZGZkNmRm
ODJlYzJiLi44NWIxYjAyMDZlYjg5MjI2ZTg2YzZiNDFhYjkzZTVkYjk1ZWJmZDkyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1l
c3BhY2UgV1RSIHsKIAogY2xhc3MgVGVzdEludm9jYXRpb24gZmluYWwgOiBwdWJsaWMgVUlTY3Jp
cHRDb250ZXh0RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFRlc3RJbnZvY2F0aW9uKTsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBUZXN0SW52b2NhdGlvbihXS1VSTFJlZiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRl
eCAwZmJmOGVhNTIzZDM0OGQyNTZlY2M1MjMwNDJkZWEwMmZlY2RkMWRjLi4wZWJmN2JmZDAwMzlm
NGVmODA5MzJjMWViNTE5MmZmNTRlZTNjNGEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0xNjgsNyArMTY4LDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3Vy
YXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKICAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gX3Nl
dEFwcGxpY2F0aW9uTWFuaWZlc3Q6W19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25N
YW5pZmVzdEZyb21KU09OOnRleHQgbWFuaWZlc3RVUkw6bmlsIGRvY3VtZW50VVJMOm5pbF1dOwog
ICAgIH0KIAotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2Vi
Vmlldz4oY29waWVkQ29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9tYWluV2Vi
VmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdl
dCgpLCBvcHRpb25zKTsKICAgICBmaW5pc2hDcmVhdGluZ1BsYXRmb3JtV2ViVmlldyhtX21haW5X
ZWJWaWV3LmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChvcHRpb25zLnB1bmNoT3V0V2hpdGVC
YWNrZ3JvdW5kc0luRGFya01vZGUpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZShOU1N0cmluZyAqaWRlbnRpZmllcikKIHsKICAg
ICBtX292ZXJyaWRkZW5DYWxlbmRhcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGlmICgh
bV9jYWxlbmRhclN3aXp6bGVyKQotICAgICAgICBtX2NhbGVuZGFyU3dpenpsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0NhbGVuZGFyIGNsYXNzXSwgQHNlbGVj
dG9yKGN1cnJlbnRDYWxlbmRhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZENhbGVu
ZGFyKSk7CisgICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRo
b2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFy
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsKIH0KIAogdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cmVzZXRDb250ZW50RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCmluZGV4IGRlNTc4Zjcz
ZmMzNmVjZDE1ODljOTlmOGRiZjhmY2NjMzk4N2I0MmUuLmVmOWUzOGU3MjNiYWE5NWRmZmU3MGVj
NWE4NzVjZmVjODRlMzI4NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3Rr
L0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3Rr
L0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgaW50IGdldEdES0tl
eVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCBndWlu
dCogbW9kaWZpZXIKICAgICAgICAgcmV0dXJuIEdES19LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1
ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4o
YnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5n
ZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJ
T1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpp
bmRleCA2YTYxZGY4ZTM1ZDZmYTA4YzhiMTRjNTFhODIzYzYyZDA4MDVkNGQyLi5mM2M0MTdjN2Zi
N2NhYTRkZTQ3NzdjN2E0OTRmNTNhZjMyYTE4YmZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAtMTUxLDggKzE1MSw4IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25z
dCBUZXN0T3B0aW9ucyYgb3B0CiAKICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmNsZWFy
KCk7CiAgICAgaWYgKCFvcHRpb25zLnNob3VsZFByZXNlbnRQb3BvdmVycykgewotICAgICAgICBt
X3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNl
TWV0aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNl
bnRWaWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKLSAgICAgICAg
bV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihw
cmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5p
bWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9s
bGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVu
ZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNs
YXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9y
UG9wb3ZlcikpKTsKKyAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFz
c10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJv
d0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJl
c2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwogICAgIH0KICAgICAKICAgICBCT09MIHNo
b3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRlciA9IE5POwpAQCAtMjY5LDkgKzI2OSw5IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpCiAKICAgICBhdXRvIGNvbnRyb2xsZXJDbGFzcyA9IFVJS2V5Ym9hcmRJ
bnB1dE1vZGVDb250cm9sbGVyLmNsYXNzOwogICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnJlc2Vy
dmVDYXBhY2l0eSgzKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3Ms
IEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVDdXJyZW50SW5wdXRNb2RlKSkpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tl
ZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xs
ZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVy
cHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1v
ZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRo
b2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2Rlcyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKKyAgICBt
X2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2Rl
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOworICAg
IG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNl
TWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1v
ZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1
dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VV
bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3Io
YWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZlSW5w
dXRNb2RlcykpKTsKICAgICBbVUlLZXlib2FyZEltcGwuc2hhcmVkSW5zdGFuY2UgcHJlcGFyZUtl
eWJvYXJkSW5wdXRNb2RlRnJvbVByZWZlcmVuY2VzOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCmluZGV4IGQxY2ZjNmEzMzIxZTAy
OWM4YmE4MTE1ZjRhNmQ5MjA3ZjhlNzE4NGYuLjg5Y2U0ZWYxMjZjMTVkOTJkY2Y3NjY1MGNlNmVl
ZjViODkyMzE3MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50
U2VuZGVyUHJveHkubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5k
ZXJQcm94eS5tbQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91
c2VEb3duKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllCiAK
ICAgICBOU1ZpZXcgKnRhcmdldFZpZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXco
KS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOwogICAg
IGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
U3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50
IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0
PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0byBl
dmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RT
d2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykp
OwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgICAgIFt0YXJn
ZXRWaWV3IG1vdXNlRG93bjpldmVudF07CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50
Om5pbF07CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVw
KHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMKICAgICAg
ICAgdGFyZ2V0VmlldyA9IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpOwogCiAgICAgQVNTRVJUKHRhcmdldFZpZXcpOwotICAgIGF1dG8gZXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenps
ZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAg
ICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFz
c01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VC
dXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VC
dXR0b25zKSk7CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgIFt0YXJn
ZXRWaWV3IG1vdXNlVXA6ZXZlbnRdOwogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07
CkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyhk
b3VibGUgeCwgZG91YmxlIHkpCiAgICAgLy8gQWx3YXlzIHRhcmdldCBkcmFncyBhdCB0aGUgV0tX
ZWJWaWV3IHRvIGFsbG93IGZvciBkcmFnLXNjcm9sbGluZyBvdXRzaWRlIHRoZSB2aWV3LgogICAg
IE5TVmlldyAqdGFyZ2V0VmlldyA9IGlzRHJhZyA/IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtVmlldygpIDogW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6d2luZG93TG9jYXRpb25dOwogICAgIGlmICh0YXJnZXRW
aWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNl
bGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenps
ZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0byBldmVudFByZXNzZWRN
b3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05T
RXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwogICAgICAgICBb
TlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgICAgIGlmIChpc0RyYWcpCiAgICAg
ICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZURyYWdnZWQ6ZXZlbnRdOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAppbmRleCA0NjliZmFm
MGU4Y2YyOTA3MzBiYWJmYTA3ODM2ZDg3N2VjNzBlOGY1Li42OTZmNDU1NzU4OTZmZTgyNjY0ODdk
MDk4ZThmZThlZTYxZTU0ZDU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dw
ZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dw
ZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB1aW50
MzJfdCB3cGVLZXlTeW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2Nh
dGlvbiwgdWludDMyCiAgICAgICAgIHJldHVybiBXUEVfS0VZX0YxMjsKIAogICAgIHNpemVfdCBi
dWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGtleVJlZik7Ci0g
ICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7Cisg
ICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+
KGJ1ZmZlclNpemUpOwogICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIu
Z2V0KCksIGJ1ZmZlclNpemUpOwogICAgIGNoYXIgY2hhckNvZGUgPSBidWZmZXIuZ2V0KClbMF07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376157</attachid>
            <date>2019-08-13 05:15:57 -0700</date>
            <delta_ts>2019-08-13 12:11:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190813051555.patch</filename>
            <type>text/plain</type>
            <size>1762629</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDkyMDFmZjM5Y2JiMDFhNDJhYWQ1MTg2YzRkZWIxMDgzYWZiOWZhLi42NDFhZDIzY2U3MzZiZDFi
Mzk0ZmQzMGEzYTZjMDFhNjNhNGZjY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgbXVs
dGlwYXJhbWV0ZXIgb3ZlcmxvYWRzIG9mIGFwcGVuZCgpIGluIFN0cmluZ0J1aWxkZXIgYXMgYSBm
aXJzdCBzdGVwIHRvd2FyZCBzdGFuZGFyZGl6aW5naW5nIG9uIHRoZSBmbGV4aWJsZUFwcGVuZCgp
IGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI1ZmUzNjczMjEwMThkZDVhMWQ0N2Y1NWMxYTcxZjBhODJm
OGM1NzIuLjBjMDY1NzVlZDQ2ZTFiN2Y5MDU4YzQ3M2U5MTZlMjU5NjdlZDAwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAgICAgICogYmVu
Y2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFZlY3Rv
ci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAgICAgICAqIHd0
Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9u
Lmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0
Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICog
d3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9T
dHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAg
ICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3Ip
OgorCiAyMDE5LTA4LTEyICBUYWthc2hpIEtvbW9yaSAgPFRha2FzaGkuS29tb3JpQHNvbnkuY29t
PgogCiAgICAgICAgIFtXVEZdIFRocmVhZDo6cmVtb3ZlRnJvbVRocmVhZEdyb3VwIGxlYWtzIHdl
YWsgcG9pbnRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc0NzUxMWY1N2MyYzA4NmEwNDkyNTI1ZjQ4ZmIx
YzE0Zjg2NDg3Zi4uNDliMmNhZGIwMjgzZWM3YzQxNTMwODlhZDY2MmY3OTRkNzJjNTk1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4MjUgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcpOgorICAgICAgICAqIE1vZHVsZXMv
YmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JC
ZWFjb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0NhY2hlczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeUNETTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lz
dGVtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y2xpZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6c2V0Q2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZl
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9O
YXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9s
b2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRp
b246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJl
Y29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5k
ZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVP
cGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RT
dG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0
YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRl
U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9w
ZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHRE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFu
c2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2
ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURC
VHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6
aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRl
Y29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFu
YWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNl
OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2
ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6
Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tl
bmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjph
ZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
OjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRl
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJl
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rh
c2s6OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVj
b2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2Rp
bmdUYXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
YW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNl
dEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBh
bm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2Fn
ZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVG
cm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5k
VmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFk
OjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVh
dGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3Jk
RGVsZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50
cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29t
cHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFt
ZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OlBhcnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2
aWdhdG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQp
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJ
bml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRl
cyk6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRo
b2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFt
ZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamND
bGFzczo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0Ns
YXNzOjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29t
YmluZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMp
OgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1
bGxEZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRz
Ojpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAg
KiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5n
UnVsZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVD
YWNoZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9E
T01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50
UnVsZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNl
ckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNl
dEF1dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVT
ZXRzKToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVu
dFJ1bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAg
ICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNl
dDo6YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
dWxlU2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94
U2hhZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNj
YWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgor
ICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6Cisg
ICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAq
IGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJJbXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6
OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNv
bnN1bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZVN1cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1l
S2V5ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRv
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNl
dWRvRWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
U2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hh
cGVQYXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAg
ICAgKiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAg
ICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2Up
OgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBk
YXRlVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhP
YmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0
ZXJDU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRvbVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRF
dmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAg
ICAgICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TGlzdGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAg
KiBkb20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQ
YXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAg
KiBkb20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eTo6YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRv
bS9NaWNyb3Rhc2tzLmg6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdyk6Cisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFn
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNl
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURh
dGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNl
bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kQ3Jl
YXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhU
TUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHls
ZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAg
KiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25G
aWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxl
U3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6
CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAq
IGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjptYXBN
b3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxz
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlz
aWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRU
b1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAg
ICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVy
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9N
QW5kU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVx
dWVzdFRvSGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRl
cmZhY2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0
VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9s
SW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpp
bnNlcnRBZGphY2VudEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNl
V2hvbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNo
U3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJs
ZVN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEluc3BlY3RlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9y
eUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0
b3JQYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25z
b2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dl
YkhlYXBBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uTG9nKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBs
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0
ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6Cisg
ICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25E
aXNhYmxlci5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNj
aGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5l
Y3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRl
eHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQp
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpp
bml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJs
YXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0aW9u
UHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFu
Y2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAgICAg
ICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0
aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcik6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdl
L1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZpc2l0
ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJzUHJv
cGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBwYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUp
OgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVu
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNaXhlZFR5cGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJlck9m
Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNo
YW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hh
bm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bGVu
Z3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bXV0
YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpkYXRh
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVybyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50Rmxh
Zyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2Ft
cGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6
OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGVu
b3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1plcm8p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NSKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVm
ZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZl
Y3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNl
RWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0
YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6RHlu
YW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29y
S2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2FpbiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5l
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJPZkF6
aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9h
ZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpI
UlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmluaXRpYWxpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNl
UmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkVGltZUZyYW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2
ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5w
dXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6
d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6CisgICAgICAgIChXZWJDb3JlOjpaZXJv
UG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJl
c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRQb2xlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5
bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpNZWRpYVBsYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNo
YXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lvbjo6Y29weVNoYXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lv
bjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpu
b3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3Vy
Y2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0
QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
Um90YXRpb25TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVr
YWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1l
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVj
dG9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FM
YXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNv
bW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNo
YXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dl
YlRpbGVkQmFja2luZ0xheWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBj
cmVhdGVUaWxlQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6
UGxhdGZvcm1DQUxheWVyV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnN3YXBC
dWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZv
bnRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90
YXRpb25Qcm9wZXJ0aWVzOjppc0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3Bl
cnRpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpyb3RhdGVkU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YubW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3Bp
ZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXll
cjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246
OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNl
UHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1
bmNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6
OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1
ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3Vl
OjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRlQ29tbWFuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6OnNldFNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
bkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldL
Q0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6
OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2Fj
aGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1f
Y2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1
cmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0
b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVh
dGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRvWVVWKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlh
RW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmNyZWF0ZURlY29kZVRhc2spOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxDYWNoZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1By
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
X3Jlc3RhcnRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJjaENvb2tpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4
dDo6Q3VybENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6d2lsbFNldHVw
U3NsQ3R4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9u
UXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRT
dG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0
aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNS
ZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVudDo6
cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENv
ZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAgICAg
KiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6
OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NEYXRh
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxl
eExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRp
bmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
bG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0
RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0ZUJh
c2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2Vk
VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjphZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0SW50b1RyYWNr
ZWRSZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25lZERlc2NlbmRhbnRz
TWFwOjphZGREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWdp
blVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZUJsb2NrUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxp
bmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExp
bmVHcmlkQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxv
YXRpbmdPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJl
TGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxp
emVSYXJlQmxvY2tGbG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5v
ZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJh
Z21lbnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFn
bWVudE1hcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5
VHJhY2tzRm9yQXV0b1JlcGVhdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGlu
ZUZsb3dCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVBbmNlc3RvckNsaXBwaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OlJlbmRlckxheWVyQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdl
UXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWlu
dFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAq
IHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxp
bmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVj
dEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFw
cGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRv
U2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50
ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJh
c3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2lj
U2hhcGVQYXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93
U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5k
ZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlS
ZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0
ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21S
ZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXpl
TWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1
aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0
ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdl
Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OkludmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRp
b25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAg
ICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NW
R1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6
Y29weSBjb25zdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5UGFpckFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQ
cmltaXRpdmUuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFu
aW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlM
aXN0QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJG
cm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9j
a1NwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1
bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQ
cmludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RN
KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAg
ICAqIHRlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lN
b2NrQ0RNOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0u
aDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2Ft
ZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVu
cXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
OjpXb3JrZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrQW5kVGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RU
YXNrRm9yTW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtl
clRocmVhZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6Y3JlYXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25E
YXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICog
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGll
bnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpX
b3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3Bl
OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OmV2YWx1YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5k
aW5nQ2FsbGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRp
bmdDYWxsYmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xMyAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQmxvYiByZWdpc3RyaWVzIHNo
b3VsZCBiZSBrZXllZCBieSBzZXNzaW9uIElEcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGUxYmZl
NzM1NDE0MjRjMGQxOWRiOTE4YzQ1MmZlMDVmOWU2NzVhZi4uMTI4MWQzMjU4MzY3MjA0ZTEyZDYy
NzVmZmUxOTllNTNiZWM4NmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2Nh
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBh
bC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAgICAgICAgKFBBTDo6
Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL3N5c3RlbS9D
bG9ja0dlbmVyaWMuY3BwOgorICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRlKToKKyAgICAgICAg
KiBwYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6OmNyZWF0ZSk6CisK
IDIwMTktMDgtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVGFwcGluZyBidXR0b25zIGluIERhdGEgRGV0ZWN0b3JzIGxvb2t1cCBwcmV2aWV3cyBk
b2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggMzU4ZjJiZjAwNWFlNjQ0ZDgxMjMyOGQ1ZGVk
ZTQxOWM4YmEwMWNmYi4uYTNmMmI3NjY4YzViYzJjZWNkMmNmNTYyOGRmNTVjNzNkZDE0MzEzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRy
aXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+
LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6CisgICAg
ICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIpOgorICAg
ICAgICAqIGdsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vz
c2lvbkhvc3Q6OmxhdW5jaEJyb3dzZXIpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9z
dDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorCiAyMDE5LTA2LTAzICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDU1Njcp
OiBbR1RLXVtXUEVdIFsyLjI1LjFdIFdlYktpdFdlYkRyaXZlciBnZXRzIGluc3RhbGxlZCBhcyBX
ZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMWE0ZTRlNTNhNzZlY2ZkYzcyYzUxNGQxMTkxODE1YjM1ZTYy
MGJmNy4uMGRlOTMxMzdhOTFlZmFjZGZjYzgzOWEzZDczZjNjNWY0YjVhM2I1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MjEgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzayk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9u
aXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFw
OjphZGQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9h
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtM
b2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjppbml0aWFsaXplUXVvdGFVc2Vycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRk
U3VwcGxlbWVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxT
dG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRhdGUpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6bWFrZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6
bWFrZVJlZGlyZWN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hl
Ojp1cGRhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVj
dWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1l
TG9hZDo6cmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRy
eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdl
cjo6c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNw
ZWN1bGF0aXZlUmV2YWxpZGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
dG9yYWdlOjpzeW5jaHJvbml6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Rv
cmFnZTo6cmVhZFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmV0cmll
dmVGcm9tTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpy
ZXRyaWV2ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRy
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50cnk6
OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1By
ZWZldGNoQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRjaENhY2hlOjpzdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlUmVkaXJlY3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENv
b3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFz
ayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJl
YW0uY3BwOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFt
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29ja2V0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlvbik6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZyk6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNl
bmQpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6
dW53cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2Uu
aDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25u
ZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNo
ZG9nOjpDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246Om9wZW4pOgorICAgICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpz
ZW5kT3V0cHV0TWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9u
V2luLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6Cisg
ICAgICAgICogUGxhdGZvcm0vTW9kdWxlLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xheWVy
SG9zdGluZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6
OmNyZWF0ZUZvclBvcnQpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0Ojpj
cmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJI
b3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2Vzcyk6Cisg
ICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAg
ICAgIChBUEk6OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdl
YmtpdENvbnRleHRNZW51SXRlbUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51
X2l0ZW1fbmV3KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9n
YWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9j
a19hY3Rpb24pOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0
b2NrX2FjdGlvbl93aXRoX2xhYmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9uZXdfd2l0aF9zdWJtZW51KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfc2VwYXJhdG9yKToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRleG1hcExh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVS
b290TGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OlRocmVhZGVkQ29tcG9zaXRvcik6CisgICAgICAgICogU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lu
cy9OUFJlbW90ZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVtb3RlT2JqZWN0
TWFwOjpyZWdpc3Rlck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luTW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJv
cGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVh
YmxlQml0bWFwRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRv
bWF0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
Rm9ybUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6SFRUUENvb2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUljb25EYXRhYmFzZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxv
YWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxl
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6
CisgICAgICAgIChXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChX
S0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2Fk
Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChX
S05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5k
TWF0Y2hlc0NsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAg
ICAgIChXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQ
b2xpY3lDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAg
KFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21h
Yy9XS1BhZ2VQcml2YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUg
aW5pdFdpdGhQYWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNw
cDoKKyAgICAgICAgKFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hU
VFBDb29raWVTdG9yZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25s
b2FkRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25E
ZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJv
bGxlciBfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21h
dGlvblNlc3Npb24gc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNR
TGl0ZVN0YXRlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3Ry
dWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNs
aWVudC5jcHA6CisgICAgICAgIChhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5jcHA6CisgICAgICAgIChhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRl
eHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5j
cHA6CisgICAgICAgIChhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICh3
ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAod2Via2l0RmluZENvbnRyb2xsZXJD
b25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGll
bnQuY3BwOgorICAgICAgICAoYXR0YWNoRm9ybUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgICh3
ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hJY29uTG9h
ZGluZ0NsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdElu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEluamVjdGVkQnVuZGxlQ2xp
ZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZp
Y2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6
OldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3Bw
OgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9t
ZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3Jl
Z2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNv
bnRleHRDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9t
YXRpb25fYWxsb3dlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwOgorICAgICAgICAod2Via2l0RW1vamlD
aG9vc2VyU2V0dXBFbW9qaVNlY3Rpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgICh3
ZWJraXRXZWJJbnNwZWN0b3JDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0
ZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJvbGxlcik6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcik6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgbWF5YmVJbnN0YWxsSWNvbkxv
YWRpbmdDbGllbnRdKToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bv
b2w6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJl
YVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAgICAg
ICAgKFdLV1BFOjpWaWV3OjpWaWV3KToKKyAgICAgICAgKFdLV1BFOjpWaWV3OjpzZXRDbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHA6CisgICAgICAg
IChXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRW
aWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3OjpydW5K
YXZhU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdQRVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9h
ZGluZ0RlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlOjpj
cmVhdGVJY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNyZWF0ZUNvbnRleHRNZW51
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6Y3JlYXRlVUlDbGllbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRl
TWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0RGlzcGxheUxpbmspOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5Ojpwcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNyZWF0ZURy
YXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0VGV4dElu
ZGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbnN1cmVHZXN0dXJlQ29u
dHJvbGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6ZGlzcGF0
Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFz
aFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2U6OmdldERhdGFGcm9tRGVjb2RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlk
SGFzaFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmljZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxsKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VUlHYW1l
cGFkUHJvdmlkZXI6OnNldEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyk6CisgICAgICAgIChXZWJL
aXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dGFrZVVwbG9hZEFzc2VydGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1By
b3h5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsdWdpblJlcXVpcmVzR3RrMik6CisgICAg
ICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
cm9jZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0VG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5n
UGVyZm9ybWFuY2VEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1v
dGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW06CisgICAgICAg
IChXZWJLaXQ6OkhpZFNlcnZpY2U6OmRldmljZUFkZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
c2V0UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6
OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOYXZpZ2F0
aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjptX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
SWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZp
bmRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRjaGVz
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFn
ZUlmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRv
UnVubmluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERyYXdp
bmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNldEF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVN
ZWRpYSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
bGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlu
c3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdB
bmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9z
aXRvcjo6aW5pdGlhbGl6ZUVHTCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXI6OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBcHBs
aWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS0FwcGxpY2F0aW9uU3Rh
dGVUcmFja2luZ1ZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjp3ZWJW
aWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVEcmF3aW5nQXJlYVByb3h5
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJs
dXJQcmV2aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBpbml0V2l0aFdpbmRvdzp3ZWJWaWV3OnBhZ2U6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW06CisgICAg
ICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBpbml0V2l0aFBhZ2U6dmlldzp1c2VQbGF0Zm9ybUZp
bmRVSTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6
CisgICAgICAgICogVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6
OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9y
ZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjpjcmVhdGVCYWNr
ZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXc6OldlYlZpZXcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92
aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlh
bEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFk
Q29ubmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlU2V0Q2xpZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdl
U2V0Rm9ybUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAg
IChXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcDoKKyAgICAgICAgKFdLQnVuZGxl
UGFnZU92ZXJsYXlDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbToKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKToKKyAgICAgICAg
KFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwOgor
ICAgICAgICAod2Via2l0V2ViRWRpdG9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHA6CisgICAgICAgICh3
ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRGcmFtZUdl
dE9yQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAg
ICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdh
dGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZSk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRDbGllbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdNZXNzYWdlOjpQZW5kaW5nTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVTZXJ2ZXJUY3BT
b2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVV
ZHBTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVh
dGVDbGllbnRUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0
b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TGliV2Vi
UlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlQXN5bmNSZXNvbHZlcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcjo6UGx1Z2luRGVzdHJ1Y3Rp
b25Qcm90ZWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzY2hlZHVs
ZVRpbWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6
ZGVsaXZlckRhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgx
MTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OmNyZWF0ZVdlYkV2ZW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRS
ZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
c3RlYm9hcmRPdmVycmlkZXM6OmFkZE92ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OlBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxl
ZEJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxl
ZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjcmVhdGVT
dWJmcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRpbWVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJj
ZUxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRs
ZVVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJpbnRPcGVyYXRpb25HdGs6OnByaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxl
cjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9EcmF3aW5nQXJlYU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpTb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZSk6CisKIDIwMTktMDgtMTMgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEJsb2IgcmVnaXN0cmllcyBzaG91bGQgYmUga2V5
ZWQgYnkgc2Vzc2lvbiBJRHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNGM1MWU5NjVmNjgyNmJl
YzNlZTkyZTc1Mjk1ODdlMWIxYjJkMDQzYS4uODJiNjAzMWIxYjliNDY5YmFhOTBiNGFkYTg4YzEz
NzA0YzU0MjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0w
OC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZd
IEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9T
dG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5h
Z2VyOjpTdG9yYWdlU3luY01hbmFnZXIpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUpOgorICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6
U3RvcmFnZVRyYWNrZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcC5jcHA6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjplbnN1cmVTZXNzaW9uKToKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2NmL0NoYW5nZUxvZwppbmRleCBjNjNlZmFiYTVkODg2ODNiZWZiZjE2OTU4ZmYxZmUwMDA0
ZWE5YzZiLi41ZGVkMjM2NmIzYWVlMTFjODMzYTg2NzlhYjhmNTgxOGJhYWE3ZjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4LTEzICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZy
b250ZW5kU2V0dGluZ3MpOgorCiAyMDE5LTA4LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNDg0NTQpOiBX
SzEgaW5zcGVjdG9yIGZyb250ZW5kIGNsaWVudCBkb2Vzbid0IHF1ZXVlIG1lc3NhZ2VzIHRvIHRo
ZSBmcm9udGVuZCBiZWZvcmUgaXQncyBsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpp
bmRleCA4NWJmZTdmZTdhYTRjM2Y3ZmNiYjJkNzI4ZGI1ZGVhN2FkYWJhOGZmLi4yMjNjOWYwNmRj
MzBlZGUxMDIxNTE4NDkzNGViZGYxMjU5YWIzNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAg
ICAgICAoLVtXZWJGaXhlZFBvc2l0aW9uQ29udGVudCBzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5
ZXJzOnN0aWNreUNvbnRhaW5lck1hcDpdKToKKwogMjAxOS0wNy0yOSAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJdIGRpZEZp
bmlzaENvbnRlbnRDaGFuZ2VPYnNlcnZpbmcgc2hvdWxkIGluY2x1ZGUgdGhlIHR5cGUgb2YgY29u
dGVudCBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMGM0NGMyYzBkYzQ2
YjU3N2ZhODFlNzVkYjg0MThhMDE0ZmQxMGU1ZC4uNjAyZmIzNmVmYzQ5MTYxMWI0NDAyYjg5OGMz
N2U0YjIyZTMwOWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2
IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGlu
aXRdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoLVtX
ZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpdKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAg
KFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhblJl
cGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuQW5kRGF0YVJlcGx5KToKKyAgICAgICAgKFdLUENJ
bnN0YW50aWF0ZVBsdWdpblJlcGx5KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZCk6
CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgorICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAg
KC1bV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdpbl0pOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW06CisgICAgICAgIChXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaDoKKyAgICAgICAgKiBQbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3
IHNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6cmVwZWF0OnRpbWVyRnVuYzpdKToKKyAgICAgICAg
KiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlm
eU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoYWRkUmVkaXJl
Y3RVUkwpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFU
b0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0YWNoU2NyaXB0RGVidWdnZXJdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaDoKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06CisgICAgICAgIChX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgaW5pdFdpdGhS
YW5nZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHRdKToKKyAgICAgICAgKC1bV2ViVmlldyBfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKCtb
V2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6
YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgrW1dl
YlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlz
dDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRp
Y2F0b3I6d2l0aExpZmV0aW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06
CisgICAgICAgIChXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hT
Y2hlZHVsZXIpOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6CisKIDIwMTktMDgt
MTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEJsb2IgcmVn
aXN0cmllcyBzaG91bGQgYmUga2V5ZWQgYnkgc2Vzc2lvbiBJRHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCBhYjkzNWUwYmIzNDI5OTU1YTU1ODAxOWFkN2Y2NDhjNzk5MDc3YjAxLi4w
M2ViMzZlM2JlOGE1N2I3OWQwNDRlMGM5YTg1YTI1YTUyYWQ2MWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwg
d2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcik6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmxvYWQpOgor
ICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3Ojp3bmRQcm9jKToKKyAgICAgICAgKiBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNsaWVudCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGll
bnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJF
bGVtZW50UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpX
ZWJFbGVtZW50UHJvcGVydHlCYWcpOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkhpc3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6
CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcDoK
KyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2luZ0Nv
bnRleHQpOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHA6CisgICAgICAgIChX
ZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAgICog
V2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAg
ICAgKFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUpOgorICAgICAgICAoV2Vi
Vmlldzo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2Vi
Vmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNlclN0
eWxlU2hlZXRUb0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcpOgorCiAyMDE5LTA4LTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBCbG9iIHJlZ2lzdHJpZXMgc2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Npb24gSURz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cKaW5kZXggM2YwZmIyZTFjZWVhZWYwNjU5YzM0YzgyNzFiZWVjMTA4MjM3NTZlZC4u
MGQ1NWZlN2UxYmI2NTFlOTgxMGNjOGIyMzk4MTg3ZjY3ZTk5N2VmMCAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBp
cyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXAuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJ
bmxpbmVzLmg6CisKIDIwMTktMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbYm1hbGxvY10gQWRkIElzb0hlYXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJ
c29IZWFwIHBhZ2VzIGFyZSBub3QgYWxsb2NhdGluZyB0b28gbGFyZ2UgVkEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggMDdkNzA5YmExMmM4MmM4
NTQ4MmQ3M2M3MjM3N2Y1MTllN2ZjMmE1Yy4uZDBlNjI1MjgyYTg0ZjRmMzVlZWRlZDE5NWVkYjhk
Yzg5N2IxYTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0LmgKQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAg
ICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlm
ICghbV9wcml2YXRlUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEpTUHJpdmF0ZVByb3BlcnR5TWFwPigpOworICAgICAgICAgICAg
bV9wcml2YXRlUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7
CiAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPnNldFByaXZhdGVQcm9wZXJ0eSh2bSwgb3du
ZXIsIHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggYWUz
YTZmZTNhY2Y5YzZhODAzOTRlMWQ3MzRmYTMxN2Q5MDhmYWUyYy4uOWNhM2I0YmY0MDg1MDc1MGI4
YmM0MTk0OWY3NTA0MmIzNTcyMzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTU4LDcgKzU4LDcgQEAgaW5s
aW5lIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PiogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojph
c0NhbGxiYWNrT2JqZWN0KEVuY28KIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogICAgIDogUGFy
ZW50KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0
ZDo6bWFrZV91bmlxdWU8SlNDYWxsYmFja09iamVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQorICAg
ICwgbV9jYWxsYmFja09iamVjdERhdGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4o
ZGF0YSwganNDbGFzcykpCiB7CiB9CiAKQEAgLTY3LDcgKzY3LDcgQEAgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OkpTQ2FsbGJhY2tPYmplY3QoVk0mIHZtLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgIDogUGFyZW50KHZtLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxi
YWNrT2JqZWN0RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxs
cHRyLCBqc0NsYXNzKSkKKyAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlxdWU8SlND
YWxsYmFja09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3MpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAppbmRleCBmMWM5ZDU3MDJhOGFhNjkwNDRkZmIy
OTViNDcxZmNmY2JjODkwYjZiLi43ZWVjMmE5MGE0NGY4NjBiYWEyMjc2Yjk2ZDQ1ZjJiZDY4NjE3
MDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTU5LDIx
ICs1OSwyMSBAQCBPcGFxdWVKU0NsYXNzOjpPcGFxdWVKU0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZp
bml0aW9uKiBkZWZpbml0aW9uLCBPcGFxdWVKU0NsYXNzKgogICAgIGluaXRpYWxpemVUaHJlYWRp
bmcoKTsKIAogICAgIGlmIChjb25zdCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZSA9IGRlZmlu
aXRpb24tPnN0YXRpY1ZhbHVlcykgewotICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBtX3N0
YXRpY1ZhbHVlcyA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigp
OwogICAgICAgICB3aGlsZSAoc3RhdGljVmFsdWUtPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmlu
ZyB2YWx1ZU5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRpY1ZhbHVlLT5uYW1lKTsKICAgICAg
ICAgICAgIGlmICghdmFsdWVOYW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGlj
VmFsdWVzLT5zZXQodmFsdWVOYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1
ZUVudHJ5PihzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0
eSwgc3RhdGljVmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOworICAgICAgICAgICAgICAg
IG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNW
YWx1ZUVudHJ5PihzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9w
ZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOwogICAgICAgICAgICAg
KytzdGF0aWNWYWx1ZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChjb25zdCBKU1N0YXRp
Y0Z1bmN0aW9uKiBzdGF0aWNGdW5jdGlvbiA9IGRlZmluaXRpb24tPnN0YXRpY0Z1bmN0aW9ucykg
ewotICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlND
bGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9
IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwogICAgICAg
ICB3aGlsZSAoc3RhdGljRnVuY3Rpb24tPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmluZyBmdW5j
dGlvbk5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRpY0Z1bmN0aW9uLT5uYW1lKTsKICAgICAg
ICAgICAgIGlmICghZnVuY3Rpb25OYW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3Rh
dGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxT
dGF0aWNGdW5jdGlvbkVudHJ5PihzdGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRp
Y0Z1bmN0aW9uLT5hdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlv
bnMtPnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50
cnk+KHN0YXRpY0Z1bmN0aW9uLT5jYWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJp
YnV0ZXMpKTsKICAgICAgICAgICAgICsrc3RhdGljRnVuY3Rpb247CiAgICAgICAgIH0KICAgICB9
CkBAIC0xMjgsMjEgKzEyOCwyMSBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YShKU0M6OlZNJiwgT3BhcXVlSlNDbGFzcyoganNDbAogICAgIDogbV9j
bGFzcyhqc0NsYXNzKQogewogICAgIGlmIChqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcykgewotICAg
ICAgICBzdGF0aWNWYWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNW
YWx1ZXNUYWJsZT4oKTsKKyAgICAgICAgc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVK
U0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNW
YWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMt
PmVuZCgpOwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKICAg
ICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBpdC0+a2V5LT5pc29sYXRlZENvcHkoKTsKLSAg
ICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKHZhbHVlTmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91
bmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQtPnZhbHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVl
LT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAg
ICAgICAgIHN0YXRpY1ZhbHVlcy0+YWRkKHZhbHVlTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8U3Rh
dGljVmFsdWVFbnRyeT4oaXQtPnZhbHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9w
ZXJ0eSwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKICAgICAgICAgfQogICAg
IH0KIAogICAgIGlmIChqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBzdGF0
aWNGdW5jdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlv
bnNUYWJsZT4oKTsKKyAgICAgICAgc3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0
aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNG
dW5jdGlvbnMtPmVuZCgpOwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlv
bnNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXkt
PmlzQXRvbSgpKTsKLSAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlz
b2xhdGVkQ29weSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52
YWx1ZS0+Y2FsbEFzRnVuY3Rpb24sIGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOworICAgICAgICAg
ICAgc3RhdGljRnVuY3Rpb25zLT5hZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIG1ha2VVbmlx
dWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZh
bHVlLT5hdHRyaWJ1dGVzKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTEsNyArMTUxLDcg
QEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhJiBPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YT4mIGNvbnRleHREYXRhID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vcGFx
dWVKU0NsYXNzRGF0YSgpLmFkZCh0aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
aWYgKCFjb250ZXh0RGF0YSkKLSAgICAgICAgY29udGV4dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CisgICAgICAgIGNv
bnRleHREYXRhID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMtPnZt
KCksIHRoaXMpOwogICAgIHJldHVybiAqY29udGV4dERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAK
aW5kZXggZDllZTY3NDAzNDljZmVmZGZiY2MwZDMxMDk0ZjFmNGRlNWE1MmMxZS4uYmE0YTVhMTY2
OTdhZjVmOGE5NzIyZTU3NDY5ZTM5NGQ5NzkwNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKQEAgLTcx
LDcgKzcxLDcgQEAgdm9pZCBKU0NvbnRleHRHcm91cEFkZE1hcmtpbmdDb25zdHJhaW50KEpTQ29u
dGV4dEdyb3VwUmVmIGdyb3VwLCBKU01hcmtpbmdDb25zdHIKICAgICAvLyBlbHNlIGdldHMgbWFy
a2VkLgogICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkgPSBDb25zdHJhaW50Vm9s
YXRpbGl0eTo6R3JleWVkQnlNYXJraW5nOwogICAgIAotICAgIGF1dG8gY29uc3RyYWludCA9IHN0
ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KAorICAgIGF1dG8gY29uc3Ry
YWludCA9IG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KAogICAgICAgICB0b0NT
dHJpbmcoIkFtYyIsIGNvbnN0cmFpbnRJbmRleCwgIigiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oY29uc3RyYWludENhbGxiYWNrKSksICIpIiksCiAgICAgICAgIHRvQ1N0cmluZygi
QVBJIE1hcmtpbmcgQ29uc3RyYWludCAjIiwgY29uc3RyYWludEluZGV4LCAiICgiLCBSYXdQb2lu
dGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWludENhbGxiYWNrKSksICIsICIsIFJhd1Bv
aW50ZXIodXNlckRhdGEpLCAiKSIpLAogICAgICAgICBbY29uc3RyYWludENhbGxiYWNrLCB1c2Vy
RGF0YV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFw
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KaW5kZXggZDQ2
OWI3NWEzMWYwZWZjYTlkMDdhYmIwM2IwYmU2NjE2MWIzOTU2Ny4uNGI1OTkwNzNmZTc2YjQ4NjQ0
MzY5OWFiZGNiMzRjNDE2NGJjMmUzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dy
YXBwZXJNYXAubW0KQEAgLTYwNiw3ICs2MDYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhH
bG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpY29udGV4dAogICAgIE5TUG9pbnRl
ckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01l
bW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIG1fY2FjaGVk
T2JqQ1dyYXBwZXJzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5
T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBdOwogCi0gICAgbV9j
YWNoZWRKU1dyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2Fm
ZV91bnJldGFpbmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7Cisg
ICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gbWFrZVVuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2Fm
ZV91bnJldGFpbmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7CiAK
ICAgICBBU1NFUlQoIXRvSlNHbG9iYWxPYmplY3QoY29udGV4dCktPndyYXBwZXJNYXAoKSk7CiAg
ICAgdG9KU0dsb2JhbE9iamVjdChjb250ZXh0KS0+c2V0V3JhcHBlck1hcChzZWxmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4
IGVlOTMyODIxZWY3NGJkNjg5MWFlOGYyOWZhZDdiYmE1YWZlYTBjYmMuLjczY2I0MjcwNDM4MTgz
MWU4MTlkOWQ5NDNlYjllNTQ0MDMwOTZmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQpAQCAtMTk1LDE4ICsxOTUsMTggQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZUludGVnZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudEludGVnZXI8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxi
YWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZURvdWJsZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRCb29sZWFuPigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50Qm9vbGVhbj4oKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRJZD4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudElkPigpOwogICAgIH0KIAogICAgIHN0YXRp
YyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBl
bmQpCkBAIC0yMjgsMTkgKzIyOCwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgICAgICBpZiAoY2xzID09IFtKU1ZhbHVlIGNsYXNzXSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRKU1ZhbHVlPigpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEpTVmFsdWU+KCk7CiAg
ICAgICAgIGlmIChjbHMgPT0gW05TU3RyaW5nIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU1N0cmluZz4oKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU1N0cmluZz4oKTsKICAgICAgICAg
aWYgKGNscyA9PSBbTlNOdW1iZXIgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TTnVtYmVyPigpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TTnVtYmVyPigpOwogICAgICAgICBpZiAoY2xz
ID09IFtOU0RhdGUgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENhbGxiYWNrQXJndW1lbnROU0RhdGU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TQXJyYXkg
Y2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1
bWVudE5TQXJyYXk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50TlNBcnJheT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNEaWN0aW9uYXJ5IGNsYXNz
XSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRO
U0RpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50TlNEaWN0aW9uYXJ5PigpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVz
dWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQpAQCAtMjUyLDcgKzI1
Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVu
ZCk7CiAgICAgICAgIGlmIChOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSB2YWx1ZVRvVHlwZUlu
dm9jYXRpb25Gb3IoY29weSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
YWxsYmFja0FyZ3VtZW50U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9OwpAQCAtMzM1LDQ1ICszMzUsNDUg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5
cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
YWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlRG91YmxlKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0Qm9vbGVhbj4oKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRCb29sZWFuPigpOwogICAgIH0KIAogICAg
IHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRU
eXBlIHR5cGVJZCgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxs
YmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3Vs
dElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxi
YWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2Nr
KGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZVN0cnVjdChjb25zdCBjaGFyKiBiZWdpbiwgY29uc3QgY2hhciogZW5kKQogICAgIHsKICAgICAg
ICAgU3RyaW5nUmFuZ2UgY29weShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlv
biAqaW52b2NhdGlvbiA9IHR5cGVUb1ZhbHVlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0
aW9uLCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0
U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogfTsKQEAgLTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMgSlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNr
RnVuY3Rpb25Gb3JJbnZvY2F0aW9uKEpTQ29udGV4dCAqY29udGV4dCwgTlNJbnZvYwogICAgIEpT
Qzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsK
ICAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
a2VyKHZtKTsKLSAgICBhdXRvIGltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6T2JqQ0NhbGxi
YWNrRnVuY3Rpb25JbXBsPihpbnZvY2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3Zl
KGFyZ3VtZW50cyksIFdURk1vdmUocmVzdWx0KSk7CisgICAgYXV0byBpbXBsID0gbWFrZVVuaXF1
ZTxKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFu
Y2VDbGFzcywgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIGNvbnN0
IFN0cmluZyYgbmFtZSA9IGltcGwtPm5hbWUoKTsKICAgICByZXR1cm4gdG9SZWYoSlNDOjpPYmpD
Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IG5hbWUsIFdURk1vdmUoaW1wbCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCBlMDFlOTcwYzdmNTgwMzY1NjE4ZWYxZGFiODU1NDRk
NzA0ZjliNDdhLi43OGQ3NjU1ZmY4MDc3NjBkNDYwOGE2MTdlNTdjOTBmMTU0Mjc5OWQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCkBAIC0xMDcs
NyArMTA3LDcgQEAgc3RhdGljIHZvaWQganNjQ29udGV4dFNldFZpcnR1YWxNYWNoaW5lKEpTQ0Nv
bnRleHQqIGNvbnRleHQsIEdSZWZQdHI8SlNDVmlydHVhbE0KICAgICAgICAgICAgIHByaXYtPmpz
Q29udGV4dCA9IEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4oQWRvcHQsIEpTR2xvYmFs
Q29udGV4dENyZWF0ZUluR3JvdXAoanNjVmlydHVhbE1hY2hpbmVHZXRDb250ZXh0R3JvdXAocHJp
di0+dm0uZ2V0KCkpLCBudWxscHRyKSk7CiAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRv
SlNHbG9iYWxPYmplY3QocHJpdi0+anNDb250ZXh0LmdldCgpKTsKICAgICAgICAgaWYgKCFnbG9i
YWxPYmplY3QtPndyYXBwZXJNYXAoKSkKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0V3Jh
cHBlck1hcChzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anNDb250ZXh0
LmdldCgpKSk7CisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnNldFdyYXBwZXJNYXAobWFrZVVu
aXF1ZTxKU0M6OldyYXBwZXJNYXA+KHByaXYtPmpzQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBq
c2NWaXJ0dWFsTWFjaGluZUFkZENvbnRleHQocHJpdi0+dm0uZ2V0KCksIGNvbnRleHQpOwogICAg
IH0gZWxzZSBpZiAocHJpdi0+dm0pIHsKICAgICAgICAgQVNTRVJUKHByaXYtPmpzQ29udGV4dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1h
cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAK
aW5kZXggMTFiYjdjMGI4NzM3ZGI2N2RkMTdkY2QyNGY3MDI5NDM0NDY5YTgwMy4uZjUyM2VhNDE5
OWY4YWJkNzMyZjc3YjYyODE0MTIwMTM0YmI4YmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcApAQCAtMzMsNyArMzMsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIFdyYXBwZXJNYXA6OldyYXBwZXJNYXAoSlNHbG9iYWxDb250ZXh0UmVm
IGpzQ29udGV4dCkKLSAgICA6IG1fY2FjaGVkSlNXcmFwcGVycyhzdGQ6Om1ha2VfdW5pcXVlPEpT
Qzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52
bSgpKSkKKyAgICA6IG1fY2FjaGVkSlNXcmFwcGVycyhtYWtlVW5pcXVlPEpTQzo6V2Vha0dDTWFw
PGdwb2ludGVyLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKaW5k
ZXggYTc1ZjU4ZGMxNDZiM2I2NDk1Y2ViMTY3YWRmNGRhYmZmMDZiMGM4OS4uZGE0NzcwNTFmMzQ1
ZTA3MTY4ZmM3ZDA2ZTBjN2Y1MjYzMTE4NmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgUGFnZSogU3Rh
Y2s6OmVuc3VyZVBhZ2VGb3Iodm9pZCogYWRkcmVzcykKICAgICBpZiAoTElLRUxZKGl0ICE9IG1f
cGFnZXMuZW5kKCkpKQogICAgICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYWdlPiBwYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7CiAgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9wYWdlcy5hZGQoYmFzZUFkZHJlc3MsIFdURk1vdmUocGFnZSkpOwogICAg
ICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMmM5
YzNiMGRlODllYjNlMzgzZjRjYmRjZjIxMmQyNjhjMWMxOWRiYS4uN2Y2ODU4NmMxYzAyODljMGEz
MjUyMmZkZTllMDY3ZGYxZjQxZTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKQEAgLTEyNDEsNyArMTI0MSw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAg
IHZvaWQgcHJpbnQoVmFsdWUqIG9yaWdpbiwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAg
IHsKICAgICAgICAgYXV0byBwcmludExpc3QgPSBQcmludGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0
KGFyZ3VtZW50cy4uLik7Ci0gICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8
QWlyOjpQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEFp
cjo6UHJpbnRTcGVjaWFsPihwcmludExpc3QpKSk7CisgICAgICAgIGF1dG8gcHJpbnRTcGVjaWFs
ID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtl
VW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmludExpc3QpKSk7CiAgICAgICAgIEluc3QgaW5z
dChBaXI6OlBhdGNoLCBvcmlnaW4sIEFyZzo6c3BlY2lhbChwcmludFNwZWNpYWwpKTsKICAgICAg
ICAgUHJpbnRlcjo6YXBwZW5kQWlyQXJncyhpbnN0LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihh
cmd1bWVudHMpLi4uKTsKICAgICAgICAgYXBwZW5kKFdURk1vdmUoaW5zdCkpOwpAQCAtMTMwOCw3
ICsxMzA4LDcgQEAgY2xhc3MgTG93ZXJUb0FpciB7CiAgICAgewogICAgICAgICBpZiAoIWZpZWxk
KSB7CiAgICAgICAgICAgICBmaWVsZCA9IHN0YXRpY19jYXN0PFQqPigKLSAgICAgICAgICAgICAg
ICBtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1
bWVudHM+KGFyZ3VtZW50cykuLi4pKSk7CisgICAgICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNp
YWwobWFrZVVuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmaWVsZDsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAppbmRleCBmZmNiMmQ0ZTI3MTQ0Mjk3MGU1NDY0MzY2
NzBmN2YyOWRlYjFhYjFjLi4yZWNjZGFjMDQ5ZTY4ZDExM2UyM2Y5N2YyNDM1M2E1ZDRhYWEzYjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiBQcm9jZWR1cmU6OlByb2NlZHVy
ZSgpCiAgICAgOiBtX2NmZyhuZXcgQ0ZHKCp0aGlzKSkKICAgICAsIG1fbGFzdFBoYXNlTmFtZSgi
aW5pdGlhbCIpCi0gICAgLCBtX2J5cHJvZHVjdHMoc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVCeXBy
b2R1Y3RzPigpKQorICAgICwgbV9ieXByb2R1Y3RzKG1ha2VVbmlxdWU8T3BhcXVlQnlwcm9kdWN0
cz4oKSkKICAgICAsIG1fY29kZShuZXcgQWlyOjpDb2RlKCp0aGlzKSkKIHsKICAgICBtX2NvZGUt
PnNldE51bUVudHJ5cG9pbnRzKG1fbnVtRW50cnlwb2ludHMpOwpAQCAtMzExLDI4ICszMTEsMjgg
QEAgdm9pZCBQcm9jZWR1cmU6OmRlbGV0ZU9ycGhhbnMoKQogRG9taW5hdG9ycyYgUHJvY2VkdXJl
Ojpkb21pbmF0b3JzKCkKIHsKICAgICBpZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21p
bmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1f
ZG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAq
bV9kb21pbmF0b3JzOwogfQogCiBOYXR1cmFsTG9vcHMmIFByb2NlZHVyZTo6bmF0dXJhbExvb3Bz
KCkKIHsKICAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxMb29wcyA9
IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fbmF0dXJh
bExvb3BzID0gbWFrZVVuaXF1ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
bmF0dXJhbExvb3BzOwogfQogCiBCYWNrd2FyZHNDRkcmIFByb2NlZHVyZTo6YmFja3dhcmRzQ0ZH
KCkKIHsKICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9
IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dh
cmRzQ0ZHID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
YmFja3dhcmRzQ0ZHOwogfQogCiBCYWNrd2FyZHNEb21pbmF0b3JzJiBQcm9jZWR1cmU6OmJhY2t3
YXJkc0RvbWluYXRvcnMoKQogewogICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0b3JzKQotICAg
ICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbWFrZVVu
aXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJk
c0RvbWluYXRvcnM7CiB9CiAKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkKiBQcm9jZWR1cmU6OmFk
ZERhdGFTZWN0aW9uKHNpemVfdCBzaXplKQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YVNlY3Rpb24+KHNpemUpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxEYXRhU2VjdGlvbj4gZGF0YVNlY3Rpb24gPSBtYWtlVW5pcXVlPERhdGFTZWN0aW9uPihz
aXplKTsKICAgICB2b2lkKiByZXN1bHQgPSBkYXRhU2VjdGlvbi0+ZGF0YSgpOwogICAgIG1fYnlw
cm9kdWN0cy0+YWRkKFdURk1vdmUoZGF0YVNlY3Rpb24pKTsKICAgICByZXR1cm4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKaW5kZXggMzNmOGFiZmVmYmMx
ZjhmOTE2NTQ1YTNiZGNhMTk2YjBjYzY2YzM5OC4uZDVkNjljMzBhNTk5MTc1ZjI4MTQ4MzYyODYz
NmZjYjc3MDY4MDE2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3Bw
CkBAIC0xNzksNyArMTc5LDcgQEAgQ0NhbGxTcGVjaWFsKiBDb2RlOjpjQ2FsbFNwZWNpYWwoKQog
ewogICAgIGlmICghbV9jQ2FsbFNwZWNpYWwpIHsKICAgICAgICAgbV9jQ2FsbFNwZWNpYWwgPSBz
dGF0aWNfY2FzdDxDQ2FsbFNwZWNpYWwqPigKLSAgICAgICAgICAgIGFkZFNwZWNpYWwoc3RkOjpt
YWtlX3VuaXF1ZTxDQ2FsbFNwZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIGFkZFNwZWNpYWwobWFr
ZVVuaXF1ZTxDQ2FsbFNwZWNpYWw+KCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jQ2FsbFNw
ZWNpYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmlu
ZGV4IGYzNmI5YjJmZTY2ODE2MGI4ODk5YjBjNTBiMzE5N2Q3NTg4MjRmODAuLjk1Y2FhMDA0ZDhl
YjM5MjMzMGUxY2NiYjYzOWE1Y2VlNzljYmM3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBwcmVwYXJl
Rm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgICAgICAgICAgZGF0YUxvZyhjb2RlKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0g
c3RkOjptYWtlX3VuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2RlKTsKKyAg
ICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPEdl
bmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM+KGNvZGUpOwogICAgICAgICBjb2RlLm1fZ2VuZXJh
dGVBbmRBbGxvY2F0ZVJlZ2lzdGVycy0+cHJlcGFyZUZvckdlbmVyYXRpb24oKTsKIAogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3Rh
aXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAppbmRleCBl
ZjE1NDRjMDdiYjMyYTkwMzdmMmNiNzFlMTVlNzRhOWJlNjFiZjk0Li4zZGNhMjk2Nzg4YjAwMTA2
OGUwMWY0MjNlMTE2YzdjMmE0ZTdkYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
dGVzdGFpci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxh
dGlvbj4gY29tcGlsZShCMzo6UHJvY2VkdXJlJiBwcm9jKQogICAgIGdlbmVyYXRlKHByb2MuY29k
ZSgpLCBqaXQpOwogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtC
dWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YWlyIGNvbXBpbGF0aW9uIiksIHByb2Mu
cmVsZWFzZUJ5cHJvZHVjdHMoKSk7CiB9CiAKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgdGVz
dEludmFsaWRhdGVDYWNoZWRUZW1wUmVnaXN0ZXJzKCkKICAgICByb290LT5hcHBlbmQoTW92ZSwg
bnVsbHB0ciwgQXJnOjpiaWdJbW0oYml0d2lzZV9jYXN0PGludHB0cl90PigmdGhpbmdzKSksIGJh
c2UpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIHBhdGNoUG9pbnQxUm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRk
U3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAg
QjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFr
ZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgLy8gSW4gUGF0Y2hwb2lu
dCwgTG9hZCB0aGluZ3NbMF0gLT4gdG1wLiBUaGlzIHdpbGwgbWF0ZXJpYWxpemUgdGhlIGFkZHJl
c3MgaW4geDE3IChkYXRhTWVtb3J5UmVnaXN0ZXIpLgogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQxID0gcGF0Y2hQb2ludDFSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRW
YWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0xOTMwLDcgKzE5MzAsNyBA
QCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZCgpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUklu
Zm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBC
Mzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6
Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3Bl
Y2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6
UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNS
b290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpP
cmlnaW4oKSk7CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5l
ZDIoKQogICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJv
Yy5waW5SZWdpc3RlcihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2lu
dFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2lu
dFNwZWNpYWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0g
Y29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAog
ICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBv
aW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMjAwMCw3ICsyMDAw
LDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQzKCkKICAgICBHUFJSZWcgcGlubmVkID0g
R1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAot
ICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFs
KHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWly
OjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVl
PEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290
ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQg
PSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwg
QjM6Ok9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCAxNTVjYTRhYjQ3
MGIwMTQ0MmFkOTU0M2E4YWUxZmMxZmM1OWY3ZTNhLi4xYzdhZDBmOTRlMDZiOGMzMWJmZTdjYzk0
ZDA1NTJjNDc3OTYwN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC0xODksNyAr
MTg5LDcgQEAgZXh0ZXJuIExvY2sgY3Jhc2hMb2NrOwogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxD
b21waWxhdGlvbj4gY29tcGlsZVByb2MoUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9w
dExldmVsID0gT3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSkKIHsKICAgICBwcm9jZWR1cmUu
c2V0T3B0TGV2ZWwob3B0TGV2ZWwpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBp
bGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1cmUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
b21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJlKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcAppbmRleCBjMTA4NTlhY2VkM2RiNzhiNjY0OTc2YTA4Yjhl
NWI0OGQ2NTJiMmYzLi43N2ZiNjVkYTBiN2EwNmM3ZDY1OGJhYmRiNGU1MTA4YTc5MTdlZWM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC04
NTMsNyArODUzLDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJh
dGlvblN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIHN0YXRlLnNldFNwaWxsU3RhdGVGb3JKU0dl
dHRlclNldHRlcihzcGlsbFN0YXRlKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFj
Y2Vzcy5jYWxsTGlua0luZm8oKSk7Ci0gICAgICAgICAgICBhY2Nlc3MubV9jYWxsTGlua0luZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rSW5mbz4oKTsKKyAgICAgICAgICAgIGFjY2Vzcy5t
X2NhbGxMaW5rSW5mbyA9IG1ha2VVbmlxdWU8Q2FsbExpbmtJbmZvPigpOwogCiAgICAgICAgICAg
ICAvLyBGSVhNRTogSWYgd2UgZ2VuZXJhdGVkIGEgcG9seW1vcnBoaWMgY2FsbCBzdHViIHRoYXQg
anVtcGVkIGJhY2sgdG8gdGhlIGdldHRlcgogICAgICAgICAgICAgLy8gc3R1Yiwgd2hpY2ggdGhl
biBqdW1wZWQgYmFjayB0byB0aGUgbWFpbiBjb2RlLCB0aGVuIHdlJ2QgaGF2ZSBhIHJlYWNoYWJp
bGl0eQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nh
c2VTbmlwcGV0UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlU25pcHBldFBhcmFtcy5jcHAKaW5kZXggMmJkOWZlNjUxOTlkMDdmMTczZTM4MzBkYzc0
ZTQ2N2ViOWQ1NDFmYy4uOTI1N2ZjMjI2NjUyOWY4NjEzN2Q1ZGFkOGM5MjQ5NzE4MzkwNDc0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlw
cGV0UGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZVNuaXBwZXRQYXJhbXMuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgU2xvd1BhdGhD
YWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50cyA6IHB1YmxpYyBBY2Nlc3NDYXNlU25pcHBldFBhcmFt
czo6U2xvd1AKICAgICB2b2lkIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjphZGRTbG93UGF0aENh
bGxJbXBsKENDYWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9w
ZXJhdGlvblR5cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZB
X0FSR1NfXz4gYXJncykgXAogICAgIHsgXAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRv
ID0gaml0LmxhYmVsKCk7IFwKLSAgICAgICAgbV9nZW5lcmF0b3JzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0
bywgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAorICAgICAgICBtX2dlbmVyYXRvcnMuYXBw
ZW5kKG1ha2VVbmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czxDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZBX0FSR1NfXz4+
KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBcCiAgICAgfSBcCiAKIFNOSVBQ
RVRfU0xPV19QQVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApp
bmRleCAzM2JiMGMwNjYzNTM4MWU4OThmNjVhODc0ZjFmMzZhOGM5NDgyM2FmLi4xMGM2NWJiOWRk
NzA5YTlhZjdhYmE2Y2ViOGE5YjczNTk3NzE2NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNjUsMTUgKzY1
LDE1IEBAIHZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJs
b2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFu
ZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVt
cFRhcmdldHMuc2l6ZSgpICsgMik7CiAKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1
ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7Ci0g
ICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+
KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VV
bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2sp
OworICAgIGF1dG8gZmlyc3RCbG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihC
eXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0
KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCiAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShlbnRyeSkp
OwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZpcnN0QmxvY2suZ2V0KCk7CiAg
ICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7CiAKLSAgICBhdXRvIGV4aXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpF
eGl0QmxvY2spOworICAgIGF1dG8gZXhpdCA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVj
dGlvbklzTGVhZGVyID0gZmFsc2U7CiAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBCeXRlY29kZUJh
c2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9u
U3RyZWFtJgogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwogICAgICAgICAvLyBJ
ZiB0aGUgY3VycmVudCBieXRlY29kZSBpcyBhIGp1bXAgdGFyZ2V0LCB0aGVuIGl0J3MgdGhlIGxl
YWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9w
Y29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklz
TGVhZGVyKSB7Ci0gICAgICAgICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxC
eXRlY29kZUJhc2ljQmxvY2s+KGluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gbmV3Qmxv
Y2sgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24pOwogICAgICAg
ICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwogICAgICAgICAgICAgYXBwZW5kQmxvY2so
V1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXgg
ZDhkYWMxNTg1ZmFiMmI5OThjMWU1ZDg4NzUyYmExMmRmNmRhZGJkZS4uMzkzZjE4MjRlNDFhNGJl
YjUxNGM2MmE2OTZmMzNhODM3MjQ5NWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIENhbGxM
aW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKIAogdm9pZCBDYWxsTGlua0luZm86OnNldEZyYW1l
U2h1ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEmIHNodWZmbGVEYXRhKQogewot
ICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEZyYW1lU2h1ZmZs
ZURhdGE+KHNodWZmbGVEYXRhKTsKKyAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVl
PENhbGxGcmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCBlZjFjYWJmYTcxOGIwODBkN2YzZTg2MzdmOWY5NGY2MDU4NmVlNGU4Li4zOWEyM2I0YzdmNDdk
OGZjZTVlMzBlZWNhNTUwZTc3ZGFkMzE1ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogQ29kZUJsb2NrOjpKSVREYXRhJiBDb2Rl
QmxvY2s6OmVuc3VyZUpJVERhdGFTbG93KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiB7CiAg
ICAgQVNTRVJUKCFtX2ppdERhdGEpOwotICAgIG1faml0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
SklURGF0YT4oKTsKKyAgICBtX2ppdERhdGEgPSBtYWtlVW5pcXVlPEpJVERhdGE+KCk7CiAgICAg
cmV0dXJuICptX2ppdERhdGE7CiB9CiAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHVuc2lnbmVkIENv
ZGVCbG9jazo6cmFyZUNhc2VQcm9maWxlQ291bnRGb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25j
dXJyZW50SlNMb2NrCiB2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdp
c3RlclNldCBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIobV9sb2NrKTsKLSAgICBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9jYWxsZWVTYXZlUmVn
aXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2
ZVJlZ2lzdGVycyk7CisgICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lz
dGVycyA9IG1ha2VVbmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KGNhbGxlZVNhdmVSZWdpc3Rl
cnMpOwogfQogCiB2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVu
aXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQpAQCAt
MTc5MCw3ICsxNzkwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0Nv
bXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXRTbG93KGNvbnN0IE9wQ2F0Y2gKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytpKQogICAgICAgICBsaXZlT3BlcmFuZHMuYXBw
ZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKIAotICAgIGF1dG8gcHJvZmlsZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVy
YW5kcy5zaXplKCkpOworICAgIGF1dG8gcHJvZmlsZXMgPSBtYWtlVW5pcXVlPFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHByb2ZpbGVzLT5tX3NpemUgPT0gbGl2ZU9wZXJhbmRzLnNpemUoKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKICAgICAgICAgcHJvZmls
ZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA4NzA2
OGJhNjVkZDg1YzIzZmJlNGE0OTBlOTc0YTcyODFmMjU2MDRjLi4zMTQzOGUwYWM1MDY5YjI3NDk2
OTg4ODZhYjExMjAwNzZiY2I3M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCkBAIC05NDMsNyArOTQzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7CiAg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkgewotICAgICAgICAgICAgYXV0byByYXJlRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgICAgICBhdXRvIHJhcmVEYXRhID0g
bWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7IC8vIG1fY2F0Y2hQcm9maWxlcyBjYW4gYmUgdG91Y2hlZCBmcm9tIGNvbXBpbGVyIHRocmVh
ZHMuCiAgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGTW92ZShyYXJlRGF0YSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
Y3BwCmluZGV4IDJkOTQzMWNmMGIxNDRmYTNhMmMyMjFhNjZlOTQwNzBjNzc1MGUwZTAuLmIxYTAx
ZmZhNGQ5MzQ4ZmVjYjI0Yzk2ODhiYzgwMDUyZjkzODg2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcApAQCAtNTgsNyArNTgsNyBA
QCBib29sIEV4aXRQcm9maWxlOjphZGQoQ29kZUJsb2NrKiBvd25lciwgY29uc3QgRnJlcXVlbnRF
eGl0U2l0ZSYgc2l0ZSkKICAgICAvLyBJZiB3ZSd2ZSBuZXZlciBzZWVuIGFueSBmcmVxdWVudCBl
eGl0cyB0aGVuIGNyZWF0ZSB0aGUgbGlzdCBhbmQgcHV0IHRoaXMgc2l0ZQogICAgIC8vIGludG8g
aXQuCiAgICAgaWYgKCFwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMpIHsKLSAgICAgICAgcHJv
ZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnJlcXVl
bnRFeGl0U2l0ZT4+KCk7CisgICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IG1h
a2VVbmlxdWU8VmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+PigpOwogICAgICAgICBwcm9maWxlLm1f
ZnJlcXVlbnRFeGl0U2l0ZXMtPmFwcGVuZChzaXRlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlZmVycmVk
Q29tcGlsYXRpb25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAppbmRleCA0ZjQ4YTFkNmM5ODcyMmU1YWMy
ZWNlODdlNTA0MDIzMmY5YTVkNmIxLi40ZmIxMTU3MzAwM2I1MmVmZDlhODY2ZmIzYmRmNzc1MDk4
Y2VmYWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2
b2lkIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZShD
b2RlQmxvY2sqLCBDb2RlQmxvY2sqLAogVmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4mIERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjazo6ZW5zdXJlRGVmZXJyZWRTb3VyY2VEdW1wKCkKIHsKICAg
ICBpZiAoIW1fZGVmZXJyZWRTb3VyY2VEdW1wKQotICAgICAgICBtX2RlZmVycmVkU291cmNlRHVt
cCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4+KCk7CisgICAg
ICAgIG1fZGVmZXJyZWRTb3VyY2VEdW1wID0gbWFrZVVuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3Vy
Y2VEdW1wPj4oKTsKICAgICByZXR1cm4gKm1fZGVmZXJyZWRTb3VyY2VEdW1wOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXgg
ZGI5YWQxNjBhYzI4MTMwZjM5ODQxZmYzYmZlYjMyYjY4M2RkZWFkNi4uZGY0ZDc3Y2UzZjYzYjUy
MDA3NTU0NGM0MWExNmNiMjMxZDdkZmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVl
ZGJhY2soCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkdldHRlcjogewotICAgICAgICAgICAgICAg
ICAgICBjYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7
CisgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gYWNjZXNzLmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZv
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwg
cHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAppbmRleCBm
YzFmNDYwZGU5NjU0MWQ4ZmEwOTljYmI0NWYyMzA5YzJhMzMzODBmLi5lZDhkNDkzZjdlZTZmMWRh
MmI5MDlhZDU3YzYyNzcxODEzYzJkNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgR2V0QnlJZFZh
cmlhbnQmIEdldEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90
aGVyKQogICAgIG1fY3VzdG9tQWNjZXNzb3JHZXR0ZXIgPSBvdGhlci5tX2N1c3RvbUFjY2Vzc29y
R2V0dGVyOwogICAgIG1fZG9tQXR0cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1dGU7CiAgICAg
aWYgKG90aGVyLm1fY2FsbExpbmtTdGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7
CisgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigq
b3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3Rh
dHVzID0gbnVsbHB0cjsKICAgICByZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAppbmRl
eCAwOTI5ZDZmYjQxMjY3NGVkN2YyMDQwNDVmYjQyNWViN2QzOGQzYzkzLi42ZWViMTQ1YjMzNzk2
NjJhZjFjMTUwMDE5MDc2NzI3YTM5ZWUyYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIENvbXByZXNzZWRMYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpCiB7CiAgICAgaWYgKCFtX2Rh
dGEpCi0gICAgICAgIG1fZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGU6Okxpc3Q+KCk7CisgICAgICAgIG1fZGF0YSA9IG1ha2VVbmlxdWU8TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGU6Okxpc3Q+KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2RhdGEtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobV9kYXRh
LT5hdChpKS5rZXkoKSA9PSBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCmluZGV4IGI0OWU0ZTI0MmU1MmYwODEzMTVl
NDhmYjFlMWJjYzI5N2U1MjhhZTAuLmExZWNiOTRkZDBkMTg2NzA4NjM1MmY1MmI1YjU4YzMxOTNl
ZWNmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJv
dG9BY2Nlc3NDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
UHJvdG9BY2Nlc3NDaGFpbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vz
c0NoYWluIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY2xv
bmUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+KCp0aGlzKTsKICAgICB9CiAKICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4m
IGNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9jaGFpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMjJmNDU1ODE0
Yjg0YWY0ZmU3NGNhZjIzNDAxZDMwYWRhZGFlNWM2ZS4uM2IzMDIzMzlmMDM1MGRhYzQyOGYzZjA0
Y2M3MzUyYTNhZTUyMWI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgQWNjZXNzR2Vu
ZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICBtX3N0dWJS
b3V0aW5lID0gY3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIGNvZGVCbG9jaywgZG9lc0Nh
bGxzLCBjZWxsc1RvTWFyaywgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2Fs
bFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKICAgICBtX3dhdGNocG9pbnRzID0gV1RG
TW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5p
c0VtcHR5KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMp
KTsKKyAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFy
cmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwogICAgIGlmIChQ
b2x5bW9ycGhpY0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1
cm5pbmc6ICIsIGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCBjMmQ5NTMyMGNlYmQ1NmRi
ZGM5M2VlYmQ2YzMxNDBhN2RmN2NjMjA5Li5kNjQyYmNjZmU3OTc2NmM1Mjc5YmJjODEwODcwMWVi
N2Y4NTgyNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGNhc2UgQ29tcGxleEdldFN0YXR1czo6SW5saW5lYWJsZTogewogICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzID0K
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBh
Y2Nlc3MuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgKmNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJs
b2NrLCAqY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCmluZGV4IDVkNmIyOTA0NWNh
Njc1YzU2ZmE3MWQ1NDc1YTExNWIyZGY2ZjNjNWUuLjcyYzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZl
NjM2MmY3MmU2YzBhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRWYXJpYW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBQdXRCeUlkVmFyaWFudCYgUHV0
QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBQdXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAg
bV9jb25kaXRpb25TZXQgPSBvdGhlci5tX2NvbmRpdGlvblNldDsKICAgICBtX29mZnNldCA9IG90
aGVyLm1fb2Zmc2V0OwogICAgIGlmIChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAgICAgICBt
X2NhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVy
Lm1fY2FsbExpbmtTdGF0dXMpOworICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1
ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVsc2UKICAg
ICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3Bw
CmluZGV4IDk2ZDIyZWNmYTBhNGM3NTZlZGZmNjFmMDAxM2Y3MjU4ZTdkM2ZiZDUuLjUzZjIwOGJj
YWRlZDNkZWEyZGVlMThhMGU4OTYwNWM0OTBhMTk1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgUmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYg
b3RoZXIpCiAKIENhbGxMaW5rU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua1N0YXR1cyYg
c3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8Q2FsbExp
bmtTdGF0dXM+KHN0YXR1cyk7CiAgICAgQ2FsbExpbmtTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0
ci5nZXQoKTsKICAgICBjYWxscy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RG
TW92ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUzLDcgKzUzLDcgQEAg
Q2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4KIAogR2V0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBH
ZXRCeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtl
VW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7CiAgICAgR2V0QnlJZFN0YXR1cyogcmVzdWx0
ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGdldHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVP
cmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02MSw3
ICs2MSw3IEBAIEdldEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0
dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwKICAgICAKIFB1dEJ5SWRTdGF0dXMqIFJl
Y29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9y
aWdpbiwgY29uc3QgUHV0QnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQdXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3Rh
dHVzUHRyID0gbWFrZVVuaXF1ZTxQdXRCeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIFB1dEJ5SWRT
dGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBwdXRzLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtNjksNyArNjksNyBAQCBQdXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjph
ZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sCiAKIEluQnlJZFN0
YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sIGNvbnN0IEluQnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3Rh
dHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0
byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEluQnlJZFN0YXR1cz4oc3RhdHVzKTsKICAgICBJbkJ5
SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBpbnMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggMzBhMWYwNTUy
NTllM2RlZDFhNzE2OGVlMzUyNmY3MmMwODRiZWU1YS4uZmNjMjkxMTgwMjQ0ZTBiMzIyOWUyZmQ3
NjMwMDdiZTc5YTg3NDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApA
QCAtNzIsNyArNzIsNyBAQCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KiBXYXRjaHBv
aW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZQogICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSkKIHsK
ICAgICBpZiAoIWhvbGRlclJlZikKLSAgICAgICAgaG9sZGVyUmVmID0gc3RkOjptYWtlX3VuaXF1
ZTxXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOwor
ICAgICAgICBob2xkZXJSZWYgPSBtYWtlVW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHVi
SW5mbz4oY29kZUJsb2NrLCBzdHViSW5mbyk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVCho
b2xkZXJSZWYtPm1fY29kZUJsb2NrID09IGNvZGVCbG9jayk7CiAgICAgICAgIEFTU0VSVChob2xk
ZXJSZWYtPm1fc3R1YkluZm8gPT0gc3R1YkluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNzIyMmQ0ODJhZDFl
NWUyODZjZWY1OWQ0ZmYxZTFmNWViMDcxMDc4ZC4uNDkxOTVkMTU3MjFkMmNkYTRmNzQ4YWU4ZGJl
MmFmMDA5YTI4YTdhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgQWNjZXNzR2VuZXJh
dGlvblJlc3VsdCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3MgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigpOworICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3MgPSBtYWtlVW5pcXVlPFBvbHltb3JwaGlj
QWNjZXNzPigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEFjY2Vzc0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5k
ZXggZTAwNmQxNmI5YjhhMGZjMzBmMDQzM2NkZTYwMmVjYzNiMTY4ZDQyZS4uMmM5YTBiMzAxZWIw
OThlMTE1ZWYxZTM2YjEyN2JlMjllM2FiZGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00MTQsNyArNDE0LDcg
QEAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBVbmxpbmtlZENvZGVCbG9jazo6bGl2ZW5lc3NB
bmFseXNpc1Nsb3coQ29kZUJsb2NrKiBjb2QKICAgICAgICAgaWYgKCFtX2xpdmVuZXNzKSB7CiAg
ICAgICAgICAgICAvLyBUaGVyZSBpcyBhIGNoYW5jZSB0d28gY29tcGlsZXIgdGhyZWFkcyByYWNl
ZCB0byB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgLy8gR3JhYmJpbmcgdGhlIGxvY2sgYWJv
dmUgZGVmZW5kcyBhZ2FpbnN0IGNvbXB1dGluZyBsaXZlbmVzcyB0d2ljZS4KLSAgICAgICAgICAg
IG1fbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4o
Y29kZUJsb2NrKTsKKyAgICAgICAgICAgIG1fbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
aW5kZXggNDM3MDk1MTllYjYxNmUyNjUxMDZlZjFkNTUyOTYxN2Q2NDVjOWJjOS4uNTEyNTM2YzBk
NDQ4NTdhNGNhNzZlODEzZmUxNDgwM2E5NzNmZmE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQwMiw3ICs0MDIsNyBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAg
ICAgaWYgKCFtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGxvY2tEdXJp
bmdNYXJraW5nKCpoZWFwKCksIGNlbGxMb2NrKCkpOwotICAgICAgICAgICAgbV9yYXJlRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhID0g
bWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAKaW5kZXggZmJlYzlmNzJjYTJmZDFhMThiYWNiMDczZTY4NzI1NGI3MGI5ZWJl
MS4uNDlkOWQyZmQzZTZmZTlmYjRiNTI3ZjY3N2FiZDViZDRhNTEyMjZjYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcyhWTSYgdm0pCiBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1
cmVSYXJlRGF0YVNsb3coKQogewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgbV9yYXJl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9IG1h
a2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICptX3JhcmVEYXRhOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKaW5kZXggZTk3Njg2YWEzZWRjZGQ4ZDNmOWI1N2M0YTZkMTIzYmFjOWNiMzk4Ny4uMTc4
YTYxZGY2OTEzM2FmZGNjMTI3MjhjYmZkOTZlYjM5ZjQyYWViNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAt
NDAxLDcgKzQwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGJlZm9yZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0u
aGVhcCk7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2Rl
R2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVH
ZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5r
ZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOwogICAgICAgICAg
ICAgYXV0byByZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IGJjZDcy
ZWEwOWY1ZjcxN2E2NWY2NWQ3ZDJlZmMxNzVlMDIzZTY5OTAuLmViYWJiNTlkNDM1OWE5ZTM2NGYy
Y2EzYWY2YWZkMGVmZDAzOTBiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFZNOwogdHlwZWRlZiBFeGVjU3RhdGUg
Q2FsbEZyYW1lOwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVidWdnZXIoVk0mKTsKICAgICB2
aXJ0dWFsIH5EZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGYyMGEzNTdlY2I3M2Fh
N2VmZTRjYjEwN2QxY2NiN2U5ZGM5MDAzMzkuLjI3NjU2OTI2YThkMjlkMjdlYmVlYWE5ZmZkY2Ey
MDNjYzI1ZmEwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTU4LDcgKzU4LDcgQEAgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OkFic3RyYWN0SW50ZXJwcmV0ZXIoR3Jh
cGgmIGdyYXBoLCBBYnN0cmEKICAgICAsIG1fc3RhdGUoc3RhdGUpCiB7CiAgICAgaWYgKG1fZ3Jh
cGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgbV9waGlDaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlx
dWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOworICAgICAgICBtX3BoaUNoaWxkcmVuID0gbWFrZVVu
aXF1ZTxQaGlDaGlsZHJlbj4obV9ncmFwaCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3Ry
YWN0U3RhdGVUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAz
MmEyYzkwNDlmZWQ2ZjgyYzZhYmE0MDc2NzY2YmY0MjliMTM5MzgzLi4wODc0ZWE3MWNiZGViN2M2
MWZlNWEwOGUwNTUyYjBiMzdiNGIxMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcApAQCAtNzQsNyArNzQsNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFu
KQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2Nr
KCkpCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0g
ICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNTQUNGRz4oKnRoaXMpKQorICAgICwgbV9z
c2FDRkcobWFrZVVuaXF1ZTxTU0FDRkc+KCp0aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2Nh
bCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1
Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZlTm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtODYs
OCArODYsOCBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgIAogICAgIG1f
aGFzRGVidWdnZXJFbmFibGVkID0gbV9wcm9maWxlZEJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1
Z2dpbmdPcGNvZGVzKCkgfHwgT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlv
bigpOwogICAgIAotICAgIG1faW5kZXhpbmdDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0lu
ZGV4aW5nPigqdGhpcyk7Ci0gICAgbV9hYnN0cmFjdFZhbHVlc0NhY2hlID0gc3RkOjptYWtlX3Vu
aXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhpcyk7CisgICAgbV9pbmRleGluZ0NhY2hl
ID0gbWFrZVVuaXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlzKTsKKyAgICBtX2Fic3RyYWN0VmFsdWVz
Q2FjaGUgPSBtYWtlVW5pcXVlPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0aGlzKTsKIAogICAg
IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSk7CiAgICAgdGhp
cy0+c3RyaW5nU3RydWN0dXJlID0gcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RyaW5nU3RydWN0dXJl
LmdldCgpKTsKQEAgLTEwODAsNyArMTA4MCw3IEBAIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBHcmFw
aDo6bGl2ZW5lc3NGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKGl0ZXIgIT0gbV9i
eXRlY29kZUxpdmVuZXNzLmVuZCgpKQogICAgICAgICByZXR1cm4gKml0ZXItPnZhbHVlOwogICAg
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVuZXNzPigpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEZ1bGxCeXRl
Y29kZUxpdmVuZXNzPigpOwogICAgIGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1
dGVGdWxsTGl2ZW5lc3MoY29kZUJsb2NrLCAqbGl2ZW5lc3MpOwogICAgIEZ1bGxCeXRlY29kZUxp
dmVuZXNzJiByZXN1bHQgPSAqbGl2ZW5lc3M7CiAgICAgbV9ieXRlY29kZUxpdmVuZXNzLmFkZChj
b2RlQmxvY2ssIFdURk1vdmUobGl2ZW5lc3MpKTsKQEAgLTEwOTgsNyArMTA5OCw3IEBAIEJ5dGVj
b2RlS2lsbHMmIEdyYXBoOjpraWxsc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBpZiAo
aXRlciAhPSBtX2J5dGVjb2RlS2lsbHMuZW5kKCkpCiAgICAgICAgIHJldHVybiAqaXRlci0+dmFs
dWU7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUtpbGxzPiBraWxscyA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKICAgICBjb2Rl
QmxvY2stPmxpdmVuZXNzQW5hbHlzaXMoKS5jb21wdXRlS2lsbHMoY29kZUJsb2NrLCAqa2lsbHMp
OwogICAgIEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCA9ICpraWxsczsKICAgICBtX2J5dGVjb2RlS2ls
bHMuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShraWxscykpOwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAg
Q1BTQ0ZHJiBHcmFwaDo6ZW5zdXJlQ1BTQ0ZHKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zv
cm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fY3BzQ0ZHKQot
ICAgICAgICBtX2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CisgICAg
ICAgIG1fY3BzQ0ZHID0gbWFrZVVuaXF1ZTxDUFNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
Y3BzQ0ZHOwogfQogCkBAIC0xNTQ0LDcgKzE1NDQsNyBAQCBDUFNEb21pbmF0b3JzJiBHcmFwaDo6
ZW5zdXJlQ1BTRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNT
QSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX2Nwc0RvbWluYXRvcnMpCi0g
ICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4o
KnRoaXMpOworICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPENQU0RvbWluYXRv
cnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKIH0KIApAQCAtMTU1Miw3
ICsxNTUyLDcgQEAgU1NBRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lv
bik7CiAgICAgaWYgKCFtX3NzYURvbWluYXRvcnMpCi0gICAgICAgIG1fc3NhRG9taW5hdG9ycyA9
IHN0ZDo6bWFrZV91bmlxdWU8U1NBRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX3NzYURv
bWluYXRvcnMgPSBtYWtlVW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1fc3NhRG9taW5hdG9yczsKIH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgQ1BTTmF0dXJhbExv
b3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVCht
X2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBlbnN1cmVDUFNEb21p
bmF0b3JzKCk7CiAgICAgaWYgKCFtX2Nwc05hdHVyYWxMb29wcykKLSAgICAgICAgbV9jcHNOYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAg
ICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhp
cyk7CiAgICAgcmV0dXJuICptX2Nwc05hdHVyYWxMb29wczsKIH0KIApAQCAtMTU3MCw3ICsxNTcw
LDcgQEAgU1NBTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKICAg
ICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBlbnN1cmVTU0FEb21pbmF0b3Jz
KCk7CiAgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykKLSAgICAgICAgbV9zc2FOYXR1cmFsTG9v
cHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBt
X3NzYU5hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3NzYU5hdHVyYWxMb29wczsKIH0KIApAQCAtMTU3OSw3ICsxNTc5LDcgQEAg
QmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKCkKICAgICAvLyBXZSBjb3Vs
ZCBlYXNpbHkgcmVsYXggdGhpcyBpbiB0aGUgZnV0dXJlIHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0
b2RheSwgaXQncyBvbmx5IHVzZWQgaW4gU1NBLgogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9
PSBTU0EpOyAKICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NG
RyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFj
a3dhcmRzQ0ZHID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1fYmFja3dhcmRzQ0ZHOwogfQogCkBAIC0xNTg3LDcgKzE1ODcsNyBAQCBCYWNrd2FyZHNEb21p
bmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMp
Ci0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dh
cmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBt
YWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFj
a3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMTU5NSw3ICsxNTk1LDcgQEAgQ29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzKQotICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5
c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMp
OworICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbWFrZVVuaXF1ZTxDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAppbmRleCA2MzkwNDNlOWUyN2ZiZTBlMGI5MmFiNDZhNjY5YmUxNDEwNTAz
MzcwLi5mMmI2NjQwMmUzYWQwZTcyZGZjZTA1YjY1YWYzZmM5MjZkMDA5ZGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNTcsNyArNTcsNyBA
QCBKSVRDb21waWxlcjo6SklUQ29tcGlsZXIoR3JhcGgmIGRmZykKICAgICAsIG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyKGRmZy5tX3ZtKQogewogICAgIGlmIChVTkxJS0VMWShzaG91bGREdW1w
RGlzYXNzZW1ibHkoKSB8fCBtX2dyYXBoLm1fdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyKSkKLSAg
ICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZn
KTsKKyAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZn
KTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBtX2ppdENvZGUtPnRpZXJVcEluTG9vcEhpZXJh
cmNoeSA9IFdURk1vdmUobV9ncmFwaC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkpOwog
ICAgIGZvciAodW5zaWduZWQgdGllclVwQnl0ZWNvZGUgOiBtX2dyYXBoLm1fcGxhbi50aWVyVXBB
bmRPU1JFbnRlckJ5dGVjb2RlcygpKQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9wY1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVpbGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJs
b2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2lu
TWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOwor
ICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1Rv
Q29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtC
dWZmZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDb21w
aWxlciYgaml0LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHN0YWNrT3ZlcmZsb3cpCkBAIC0z
NjMsNyArMzYzLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKICAgICBzZXRTdGFy
dE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9
IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKIAogICAgIC8vIFBsYW50IGEgY2hl
Y2sgdGhhdCBzdWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFjay4KICAg
ICBKdW1wTGlzdCBzdGFja092ZXJmbG93OwpAQCAtNDAyLDkgKzQwMiw5IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGUoKQogICAgIG1fc3BlY3VsYXRpdmUtPmNyZWF0ZU9TUkVudHJpZXMoKTsK
ICAgICBzZXRFbmRPZkNvZGUoKTsKIAotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOworICAgIGF1dG8gbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMs
IG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVy
LT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFs
aXplcihzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsK
KyAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmlu
YWxpemVyPihtX2dyYXBoLm1fcGxhbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApA
QCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAgICAgZGlz
YXNzZW1ibGUoKmxpbmtCdWZmZXIpOwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVy
KHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRG
aW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxh
biwgbV9qaXRDb2RlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlcikpKTsKIH0K
IApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigp
CiAgICAgY29tcGlsZUVudHJ5RXhlY3V0aW9uRmxhZygpOwogCiAgICAgLy8gPT09IEZ1bmN0aW9u
IGJvZHkgY29kZSBnZW5lcmF0aW9uID09PQotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VV
bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKICAgICBjb21waWxlQm9keSgpOwogICAgIHNl
dEVuZE9mTWFpblBhdGgoKTsKIApAQCAtNTA3LDkgKzUwNyw5IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgc2V0RW5kT2ZDb2RlKCk7CiAKICAgICAvLyA9PT0gTGlu
ayA9PT0KLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+
KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxp
bmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklU
Q29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2Nh
dGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3Vu
aXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgu
bV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5t
X3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBsaW5rKCpsaW5rQnVmZmVyKTsK
QEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQog
CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNr
ID0gbGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihhcml0eUNoZWNrKTsKIAot
ICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFs
aXplcj4oCisgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmlu
YWxpemVyPigKICAgICAgICAgbV9ncmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVs
bCgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjaykpOwogfQogCkBAIC01NTAs
NyArNTUwLDcgQEAgdm9pZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5v
ZGUqIG5vZGUpCiAgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogCiAgICAgaWYgKCFtX2dyYXBo
Lm1fZG91YmxlQ29uc3RhbnRzKQotICAgICAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0g
c3RkOjptYWtlX3VuaXF1ZTxCYWc8ZG91YmxlPj4oKTsKKyAgICAgICAgbV9ncmFwaC5tX2RvdWJs
ZUNvbnN0YW50cyA9IG1ha2VVbmlxdWU8QmFnPGRvdWJsZT4+KCk7CiAKICAgICBkb3VibGUqIGFk
ZHJlc3NJbkNvbnN0YW50UG9vbCA9IG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMtPmFkZCgpOwog
ICAgICphZGRyZXNzSW5Db25zdGFudFBvb2wgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAppbmRleCBiYjgw
MDI3NGRkY2I2MzAzNDc4MzczN2UzOGFkMWU2MWU5YzVlYTA0Li5hOTQ0MDQ3NDU5MjUyMTg0NWJh
MzE4ODM3YjEzYjlmNGEzMTdlZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGNs
YXNzIExpdmVuZXNzQW5hbHlzaXNQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICwgbV9s
aXZlQXRUYWlsKG1fZ3JhcGgpCiAgICAgewogICAgICAgICBtX2dyYXBoLm1faW5kZXhpbmdDYWNo
ZS0+cmVjb21wdXRlKCk7Ci0gICAgICAgIG1fd29ya3NldCA9IHN0ZDo6bWFrZV91bmlxdWU8V29y
a3NldD4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CisgICAgICAgIG1f
d29ya3NldCA9IG1ha2VVbmlxdWU8V29ya3NldD4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51
bUluZGljZXMoKSk7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAKaW5kZXggNGRiY2VlOGE2YmIyZGMzOGRmYzUwNWRiY2FiNmUzOWZjMGUy
NzZmMi4uMDc4MzBlZDJmNWU4MTY2NDg4YjkxYWRjNTJhNzE5MmRiMjhjMTM0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgUGxhbjo6Q29t
cGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAgIGlmIChtX21vZGUg
PT0gRlRMRm9yT1NSRW50cnlNb2RlKSB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGVyZm9ybU9T
UkVudHJ5cG9pbnRDcmVhdGlvbihkZmcpOwogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAg
ICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRo
aXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXpl
cj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAg
ICAgIFJVTl9QSEFTRShwZXJmb3JtQ1BTUmV0aHJlYWRpbmcpOwpAQCAtMzk3LDcgKzM5Nyw3IEBA
IFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBj
YXNlIEZUTEZvck9TUkVudHJ5TW9kZTogewogI2lmIEVOQUJMRShGVExfSklUKQogICAgICAgICBp
ZiAoRlRMOjpjYW5Db21waWxlKGRmZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAg
ICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhp
cyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVy
PigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC00NzcsNyArNDc3LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBp
bGVJblRocmVhZEltcGwoKQogICAgICAgICBSVU5fUEhBU0UocGVyZm9ybVdhdGNocG9pbnRDb2xs
ZWN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBG
VEw6OkNhbm5vdENvbXBpbGUpIHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtl
X3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVy
ID0gbWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVy
biBGYWlsUGF0aDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKaW5kZXggODcxNTk1YjFmZjI1OWJlZTQ0Yzcx
Y2UwM2Q3ZDhlOGJkNjQzNjUzNy4uNTM0ZDY0YjUzOGZhMTgwYWY0OGU4OWQ0ZjgyNjAyZmI0NWM5
MjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJz
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIFNTQUNvbnZlcnNpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRUYWlsLmNs
ZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+c3Nh
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CisgICAgICAg
ICAgICBibG9jay0+c3NhID0gbWFrZVVuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7
CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnRyeXBvaW50SW5kZXhU
b0FyZ3VtZW50c0Jsb2NrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ns
b3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggN2NmNDI1MjFhNjIxMTc4ZmY4NTEyYWZmOWZmZmEzMjUy
MDAyMjRkNi4uY2RjZGFhNjBkODk4YTNiNjZkN2IyOThmNjY4MThjNzlkYzQ4Yzg1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAt
MTkzLDcgKzE5Myw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoQ2FsbCgKICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50IHJlcXVpcmVtZW50LAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBB
cmd1bWVudHMuLi4gYXJndW1lbnRzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25U
eXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
YWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9u
VHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oCiAgICAgICAgIGZyb20sIGppdCwgZnVu
Y3Rpb24sIHNwaWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0K
IApAQCAtMjM5LDcgKzIzOSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFt
ZSBEZXN0aW5hdGlvblR5cGUsIHR5cGVuYW1lIFNvdXJjZVR5cGUsIHVuc2lnCiBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgSnVtcFR5
cGUgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgU291cmNlVHlwZSBzb3VyY2VbbnVtYmVyT2ZB
c3NpZ25tZW50c10sIERlc3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlvbltudW1iZXJPZkFzc2lnbm1l
bnRzXSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdl
bmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCBudW1iZXJPZkFz
c2lnbm1lbnRzPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5l
cmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgbnVtYmVyT2ZBc3Np
Z25tZW50cz4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQog
CkBAIC0yNDksNyArMjQ5LDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJjZVR5cGUgc291cmNlQXJyYXlbMV0gPSB7
IHNvdXJjZSB9OwogICAgIERlc3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlvbkFycmF5WzFdID0geyBk
ZXN0aW5hdGlvbiB9OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQ
YXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDE+PigK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlw
ZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAxPj4oCiAgICAgICAgIGZyb20sIGppdCwg
ZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwogfQogCkBAIC0yNTksNyArMjU5LDcgQEAg
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAog
ewogICAgIFNvdXJjZVR5cGUgc291cmNlQXJyYXlbMl0gPSB7IHNvdXJjZTEsIHNvdXJjZTIgfTsK
ICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25BcnJheVsyXSA9IHsgZGVzdGluYXRpb24x
LCBkZXN0aW5hdGlvbjIgfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdT
bG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAy
Pj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVt
cFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMj4+KAogICAgICAgICBmcm9tLCBq
aXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAyYWJjZGIzZmQ1Zjk3
MGYzZmJiOTBkM2IwZjZlM2NkOWQ0MGZjZTM3Li4wMzlhNDZhNzU4NjEwNDhjODVmMDMyODJhMjZm
ZWFmYjdlZjliZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJl
CiAgICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRoYXQgYWxzbyBsb2FkcyBvdXQgdGhlIHN0b3Jh
Z2UgcG9pbnRlciwgYW5kIHRoYXQncwogICAgIC8vIHdoYXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBsb3QKICAgICAvLyBv
ZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxD
YWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uTmV3UmF3T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCiAgICAg
ICAgIHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoKSk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBub2RlLCBHUFJSZWcgYmFzZVJlZywgR1BS
UmVnIHByb3BlcnR5UmVnKQogICAgICAgICBzbG93UGF0aC5hcHBlbmQoanVtcFNsb3dGb3JVbndh
bnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2RlLT5hcnJheU1vZGUoKSkpOwogICAgIH0KICAgICAK
LSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEFycmF5aWZ5U2xvd1Bh
dGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8QXJyYXlp
ZnlTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBub2RlLCBiYXNl
UmVnLCBwcm9wZXJ0eVJlZywgdGVtcEdQUiwgc3RydWN0dXJlR1BSKSk7CiAgICAgCiAgICAgbm9S
ZXN1bHQobV9jdXJyZW50Tm9kZSk7CkBAIC0yMjQyLDEwICsyMjQyLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHByb3RvdHlwZUNoYWluSXNTYW5lKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0
cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4o
CiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIEpTVmFsdWVSZWdzKHNjcmF0Y2hS
ZWcpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogI2Vsc2UKLSAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhH
ZW5lcmF0b3I+KAorICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxT
YW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0
T2ZCb3VuZHMsIHRoaXMsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ1JlZywgc2NyYXRjaFJlZyksCiAg
ICAgICAgICAgICAgICAgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbmRpZgpAQCAtNzYxOSw3
ICs3NjE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3Vt
ZW50cyhOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25DcmVhdGVEaXJlY3RBcmd1bWVudHMsIHJlc3VsdEdQUiwgc3RydWN0dXJlLAogICAgICAgICAg
ICAgICAgIGtub3duTGVuZ3RoLCBtaW5DYXBhY2l0eSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGF1dG8gZ2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1l
bnRzU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICBhdXRvIGdlbmVyYXRvciA9IG1ha2VVbmlx
dWU8Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAg
ICAgIHNsb3dQYXRoLCB0aGlzLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwgbGVuZ3RoR1BSLCBtaW5D
YXBhY2l0eSk7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoZ2VuZXJhdG9y
KSk7CiAgICAgfQpAQCAtODQzOSw3ICs4NDM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuanVtcCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJl
VmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZh
cmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCB0ZW1wVmFsdWUsIHNpemVH
UFIsIHN0b3JhZ2VSZXN1bHRHUFIpKTsKICAgICB9CiAKQEAgLTkxMzUsNyArOTEzNSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJ1Y3R1cmVDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcg
Y2VsbEdQUiwgR1BSUmVnIHRlbXBHCiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFI7CiAgICAg
ICAgIAogICAgICAgICBpZiAodGVtcEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7Ci0gICAgICAgICAg
ICBzdHJ1Y3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CisgICAg
ICAgICAgICBzdHJ1Y3R1cmUgPSBtYWtlVW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CiAgICAg
ICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUtPmdwcigpOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHRlbXBHUFI7CkBAIC0xMzE3Niw3ICsxMzE3Niw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNpemUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1f
aml0LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxD
YWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAorICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZh
cmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwK
ICAgICAgICAgc2hvdWxkQ29udmVydExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlID8gbV9qaXQuZ3Jh
cGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVj
dHVyZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggZmEzOTZmNGYxOTJhOGJiNGFlZjk5ZDAz
NzE5MjRhMmEzOGM2NDVlOC4uYmE2MTI4ZWZlOWJiMzY4ZmUzYjA2NjIzYjUxZWUzZWVhZDNjNGZk
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTk1LDggKzk1LDggQEAgY2xhc3MgU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIFBoYXNl
TW9kZTo6R2xvYmFsOiB7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIs
IG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAKLSAgICAgICAgICAgIG1fc3RhdGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluUGxhY2VBYnN0cmFjdFN0YXRlPihtX2dyYXBoKTsKLSAgICAgICAgICAgIG1f
aW50ZXJwcmV0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFic3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFj
ZUFic3RyYWN0U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0ZSk7CisgICAgICAgICAgICBtX3N0YXRl
ID0gbWFrZVVuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7CisgICAgICAgICAg
ICBtX2ludGVycHJldGVyID0gbWFrZVVuaXF1ZTxBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VB
YnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX2lzQ29udmVyZ2VkID0gZmFsc2U7CiAgICAgICAgICAgICAKQEAgLTEwNyw4ICsxMDcs
OCBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICAvLyB0b3dhcmRzIGJlbGlldmluZyB0aGF0IGFsbCBub2RlcyBuZWVkIGJhcnJp
ZXJzLiAiTmVlZGluZyBhIGJhcnJpZXIiIGlzIGxpa2UKICAgICAgICAgICAgIC8vIHNheWluZyB0
aGF0IHRoZSBub2RlIGlzIGluIGEgcGFzdCBlcG9jaC4gIk5vdCBuZWVkaW5nIGEgYmFycmllciIg
aXMgbGlrZSBzYXlpbmcKICAgICAgICAgICAgIC8vIHRoYXQgdGhlIG5vZGUgaXMgaW4gdGhlIGN1
cnJlbnQgZXBvY2guCi0gICAgICAgICAgICBtX3N0YXRlQXRIZWFkID0gc3RkOjptYWtlX3VuaXF1
ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOwotICAgICAgICAgICAgbV9zdGF0
ZUF0VGFpbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dy
YXBoKTsKKyAgICAgICAgICAgIG1fc3RhdGVBdEhlYWQgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhh
c2hTZXQ8Tm9kZSo+Pj4obV9ncmFwaCk7CisgICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gbWFr
ZVVuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBCbG9ja0xpc3QgcG9zdE9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblBvc3RP
cmRlcigpOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xp
c3QuY3BwCmluZGV4IGU2YzIyMjFlZTMwMTU0NGM3MmE5Y2U4MzVmOTgwZmYzNmYwMjRiN2QuLjhm
OTMwMzRiMGM2ZjkwYmE2NmY0YmY1YzUzYmUxYjRmMGZiYTc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgV29y
a2xpc3Q6OlRocmVhZEJvZHkgOiBwdWJsaWMgQXV0b21hdGljVGhyZWFkIHsKICAgICAgICAgaWYg
KG1fcmVsYXRpdmVQcmlvcml0eSkKICAgICAgICAgICAgIFRocmVhZDo6Y3VycmVudCgpLmNoYW5n
ZVByaW9yaXR5KG1fcmVsYXRpdmVQcmlvcml0eSk7CiAgICAgICAgIAotICAgICAgICBtX2NvbXBp
bGF0aW9uU2NvcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7CisgICAg
ICAgIG1fY29tcGlsYXRpb25TY29wZSA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb25TY29wZT4oKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9j
a2VyJikgb3ZlcnJpZGUKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFdvcmtsaXN0OjpmaW5pc2hD
cmVhdGlvbih1bnNpZ25lZCBudW1iZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5KQog
CiB2b2lkIFdvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlciwgaW50IHJlbGF0aXZlUHJpb3JpdHkpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRocmVh
ZERhdGE+IGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZERhdGE+KHRoaXMpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxUaHJlYWREYXRhPiBkYXRhID0gbWFrZVVuaXF1ZTxUaHJlYWREYXRhPih0
aGlzKTsKICAgICBkYXRhLT5tX3RocmVhZCA9IGFkb3B0UmVmKG5ldyBUaHJlYWRCb2R5KGxvY2tl
ciwgKnRoaXMsICpkYXRhLCBtX2xvY2ssIG1fcGxhbkVucXVldWVkLmNvcHlSZWYoKSwgcmVsYXRp
dmVQcmlvcml0eSkpOwogICAgIG1fdGhyZWFkcy5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5j
cHAKaW5kZXggMTliMTE1YzlmZGQ2N2NiYzhhZTEwOWM2NDQ1NzQyOGJhM2FkZmE1My4uMDBiZGE2
NTcyNzljZjdhOTlkYmFiMTQ5YjA5YzcwM2Q2OGIzNWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtMTMwLDcgKzEz
MCw3IEBAIEFzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVy
KCkKIHZvaWQgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNseSgKICAgICBjb25zdCBDU3RyaW5nJiBo
ZWFkZXIsIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxEaXNhc3NlbWJseVB0clRhZz4mIGNv
ZGVSZWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgpCiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1i
bHlUYXNrPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBt
YWtlVW5pcXVlPERpc2Fzc2VtYmx5VGFzaz4oKTsKICAgICB0YXNrLT5oZWFkZXIgPSBzdHJkdXAo
aGVhZGVyLmRhdGEoKSk7IC8vIFl1Y2shIFdlIG5lZWQgdGhpcyBiZWNhdXNlIENTdHJpbmcgZG9l
cyByYWN5IHJlZmNvdW50aW5nLgogICAgIHRhc2stPmNvZGVSZWYgPSBjb2RlUmVmOwogICAgIHRh
c2stPnNpemUgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXAuY3BwCmluZGV4IDkwYWUyZjRmZTA2YTE1MmNhZTU3ODVlMmMwM2M5OTliNjgzMmJjMWIu
LmVjODBlYTY3YjI1NmY4OTE4ZDQ4ODNhOGM1MmI4ZjM3OTU4M2FiZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKQEAgLTE1NywxMSArMTU3LDEx
IEBAIGNvbnN0IEFic3RyYWN0SGVhcCYgSW5kZXhlZEFic3RyYWN0SGVhcDo6YXRTbG93KHB0cmRp
ZmZfdCBpbmRleCkKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPj0gbV9z
bWFsbEluZGljZXMuc2l6ZSgpKTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoIW1fbGFyZ2VJbmRp
Y2VzKSkKLSAgICAgICAgbV9sYXJnZUluZGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcFR5cGU+
KCk7CisgICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gbWFrZVVuaXF1ZTxNYXBUeXBlPigpOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFic3RyYWN0SGVhcD4mIGZpZWxkID0gbV9sYXJnZUluZGljZXMt
PmFkZChpbmRleCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZmllbGQpIHsK
LSAgICAgICAgZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFic3RyYWN0SGVhcD4oKTsKKyAgICAg
ICAgZmllbGQgPSBtYWtlVW5pcXVlPEFic3RyYWN0SGVhcD4oKTsKICAgICAgICAgaW5pdGlhbGl6
ZSgqZmllbGQsIGluZGV4KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bXBpbGUuY3BwCmluZGV4IDVkMDRiNzJmMDQ4MzFkMDYzMDIzMDRkMWViN2U0OTI5ZDQ4MDQyN2Yu
LjQ2MzVjYzk2ZjkxMDkxZjczZjA4ZDFmNzUyYjA0N2QxMDUzYmZiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGNvbXBp
bGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAg
IFZNJiB2bSA9IGdyYXBoLm1fdm07CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkp
Ci0gICAgICAgIHN0YXRlLnByb2MtPmNvZGUoKS5zZXREaXNhc3NlbWJsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxCMzo6QWlyOjpEaXNhc3NlbWJsZXI+KCkpOworICAgICAgICBzdGF0ZS5wcm9jLT5jb2Rl
KCkuc2V0RGlzYXNzZW1ibGVyKG1ha2VVbmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsK
IAogICAgIHsKICAgICAgICAgR3JhcGhTYWZlcG9pbnQgc2FmZXBvaW50KHN0YXRlLmdyYXBoLCBz
YWZlcG9pbnRSZXN1bHQpOwpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0
YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rl
ck9mZnNldHMgPQotICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0
PihzdGF0ZS5wcm9jLT5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CisgICAgICAg
IG1ha2VVbmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVS
ZWdpc3RlckF0T2Zmc2V0TGlzdCgpKTsKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkp
CiAgICAgICAgIGRhdGFMb2coIlVud2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlw
ZShjb2RlQmxvY2ssIEpJVFR5cGU6OkZUTEpJVCksICI6ICIsICpyZWdpc3Rlck9mZnNldHMsICJc
biIpOwogICAgIGNvZGVCbG9jay0+c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhXVEZNb3ZlKHJlZ2lz
dGVyT2Zmc2V0cykpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3Rh
dGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgICAgICBsaW5r
QnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsb29rdXBFeGNl
cHRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogCi0gICAgc3RhdGUuZmluYWxpemVyLT5iM0Nv
ZGVMaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxp
bmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21w
aWxhdGlvbkNhbkZhaWwpOwogCiAgICAgaWYgKHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1
ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFp
bGVkID0gdHJ1ZTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRl
LCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIAogICAgIEIzOjpQQ1Rv
T3JpZ2luTWFwIG9yaWdpbk1hcCA9IHN0YXRlLnByb2MtPnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7
CiAgICAgaWYgKHZtLnNob3VsZEJ1aWxkZXJQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKSkKLSAgICAg
ICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9D
b2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2lu
TWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsKKyAgICAgICAgY29k
ZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFw
PihQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0
ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsKIAogICAgIENvZGVMb2NhdGlvbkxhYmVs
PEpTRW50cnlQdHJUYWc+IGxhYmVsID0gc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVy
LT5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KHN0YXRlLnByb2MtPmVudHJ5cG9pbnRMYWJlbCgw
KSk7CiAgICAgc3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24gPSBsYWJlbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEZhaWwuY3BwCmluZGV4IDE2NTMzNTA5Y2QwYjQ4MmM3NGJjYTY3MzE4NzYzZjJl
MGYwOWRkZjEuLmMzZjkzMzkyZjI2ZTZmYzk1ZjljMmNjNTkyOWVkMzRjNmJjMzBjMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcApAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBu
YW1lc3BhY2UgREZHOwogCiB2b2lkIGZhaWwoU3RhdGUmIHN0YXRlKQogewotICAgIHN0YXRlLmdy
YXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+
KHN0YXRlLmdyYXBoLm1fcGxhbikpOworICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6
ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikpOwogfQog
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcAppbmRleCAwODU0MDU2ZWM3ZDE2MmIxMWNkYzIxY2Q3OGZlMTUxN2Y3YWNmM2ViLi45NWRi
Njk2MWU4ZTkwNzcwY2Q2ZTU1NjczMDIyYjQ0NzYzYjU4MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICAgICAg
bWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7CiAKLSAgICAgICAgICAgIGxpbmtCdWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21w
aWxhdGlvbkNhbkZhaWwpOworICAgICAgICAgICAgbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlu
a0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAg
ICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICAgICAg
ICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBq
aXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWlu
UGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAKLSAgICAgICAgbGlua0J1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9u
Q2FuRmFpbCk7CisgICAgICAgIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGpp
dCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1
ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlv
bkZhaWxlZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWYxYmE0YmY5MGE4ZmQwYmEyNTAy
YzY0N2UyYzE3MTQxMjJkZTdkNC4uMDliMzQyNzNjYmI3Y2FiNDRjZDg2M2U5OWIyODU5MGU4N2M5
NGIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtMTUwODAsNyArMTUwODAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZ2VuZXJhdG9ySnVtcCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRo
dW5rUHRyVGFnPih2bS0+Z2V0Q1RJU3R1YihsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5l
cmF0b3IpLmNvZGUoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExhenlTbG93UGF0aD4g
bGF6eVNsb3dQYXRoID0gc3RkOjptYWtlX3VuaXF1ZTxMYXp5U2xvd1BhdGg+KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxh
enlTbG93UGF0aCA9IG1ha2VVbmlxdWU8TGF6eVNsb3dQYXRoPigpOwogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbGlua2VkUGF0Y2hhYmxlSnVtcCA9IENvZGVMb2NhdGlv
bkp1bXA8SlNJbnRlcm5hbFB0clRhZz4obGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQ
dHJUYWc+KHBhdGNoYWJsZUp1bXApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRl
LmNwcAppbmRleCA2NTNlYzZmNjk2MDQ5Yjc1MmFjMjRhNzc5MzEwZDRhZDk3YmIwM2RiLi40YTQ4
NGZhNmQ0NjQzMGQ3MWU1NzAwOGJmMWU5OWY2YzI1Yjg0ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFN0YXRlLmNwcApAQCAtNjAsMTAgKzYwLDEwIEBAIFN0YXRlOjpTdGF0ZShHcmFw
aCYgZ3JhcGgpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGdyYXBoLm1fcGxhbi5zZXRG
aW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOwor
ICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdy
YXBoLm1fcGxhbikpOwogICAgIGZpbmFsaXplciA9IHN0YXRpY19jYXN0PEpJVEZpbmFsaXplcio+
KGdyYXBoLm1fcGxhbi5maW5hbGl6ZXIoKSk7CiAKLSAgICBwcm9jID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9jZWR1cmU+KCk7CisgICAgcHJvYyA9IG1ha2VVbmlxdWU8UHJvY2VkdXJlPigpOwogCiAg
ICAgcHJvYy0+c2V0T3JpZ2luUHJpbnRlcigKICAgICAgICAgW10gKFByaW50U3RyZWFtJiBvdXQs
IEIzOjpPcmlnaW4gb3JpZ2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
bXBsZXRlU3Vic3BhY2UuY3BwCmluZGV4IDIyZDdmZDY1ZDVhMTc1NWI1YjJkM2I3OGRkYTU1YzBk
MDA3ZTFjY2IuLjAyMWIwY2RiOWRmYWMxOGIzNjg2NDI4YTk4MjNmMjgxMTBiYjc5ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCkBAIC04
MCw3ICs4MCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93
KHNpemVfdCBzaXplKQogICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBCbG9ja0RpcmVjdG9yeS9M
b2NhbEFsbG9jYXRvciBmb3IgIiwgbV9uYW1lLCAiLCAiLCBhdHRyaWJ1dGVzKCksICIsICIsIHNp
emVDbGFzcywgIi5cbiIpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9y
eT4gdW5pcXVlRGlyZWN0b3J5ID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0RpcmVj
dG9yeT4obV9zcGFjZS5oZWFwKCksIHNpemVDbGFzcyk7CisgICAgICAgIG1ha2VVbmlxdWU8Qmxv
Y2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3MpOwogICAgIEJsb2NrRGlyZWN0
b3J5KiBkaXJlY3RvcnkgPSB1bmlxdWVEaXJlY3RvcnkuZ2V0KCk7CiAgICAgbV9kaXJlY3Rvcmll
cy5hcHBlbmQoV1RGTW92ZSh1bmlxdWVEaXJlY3RvcnkpKTsKICAgICAKQEAgLTg4LDcgKzg4LDcg
QEAgQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNp
emUpCiAgICAgbV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9yeShsb2NrZXIsIGRpcmVjdG9yeSk7CiAg
ICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPExvY2FsQWxsb2NhdG9yPiB1bmlxdWVMb2NhbEFsbG9j
YXRvciA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9y
eSk7CisgICAgICAgIG1ha2VVbmlxdWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CiAgICAg
TG9jYWxBbGxvY2F0b3IqIGxvY2FsQWxsb2NhdG9yID0gdW5pcXVlTG9jYWxBbGxvY2F0b3IuZ2V0
KCk7CiAgICAgbV9sb2NhbEFsbG9jYXRvcnMuYXBwZW5kKFdURk1vdmUodW5pcXVlTG9jYWxBbGxv
Y2F0b3IpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggYTAxYjVh
MmI0YWVmZDNlNTI5Njk3N2E1YzgzODQwNDJlNWEyOTU2YS4uOTcxOTllMTg2ZGU3MmQ3NzI3OTcz
NWM5ZDNjOTk0MGM4NWM0OGFmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAg
LTI4OSwxNSArMjg5LDE1IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICAsIG1fbWF4RWRlblNpemUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9tYXhIZWFw
U2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCi0gICAg
LCBtX21hY2hpbmVUaHJlYWRzKHN0ZDo6bWFrZV91bmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCi0g
ICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+
KCp0aGlzLCAiQyIpKQotICAgICwgbV9tdXRhdG9yU2xvdFZpc2l0b3Ioc3RkOjptYWtlX3VuaXF1
ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJNIikpCi0gICAgLCBtX211dGF0b3JNYXJrU3RhY2soc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fcmFjZU1hcmtTdGFjayhz
dGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQotICAgICwgbV9jb25zdHJhaW50U2V0
KHN0ZDo6bWFrZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnRTZXQ+KCp0aGlzKSkKKyAgICAsIG1f
bWFjaGluZVRocmVhZHMobWFrZVVuaXF1ZTxNYWNoaW5lVGhyZWFkcz4oKSkKKyAgICAsIG1fY29s
bGVjdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCisg
ICAgLCBtX211dGF0b3JTbG90VmlzaXRvcihtYWtlVW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywg
Ik0iKSkKKyAgICAsIG1fbXV0YXRvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5
PigpKQorICAgICwgbV9yYWNlTWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkp
CisgICAgLCBtX2NvbnN0cmFpbnRTZXQobWFrZVVuaXF1ZTxNYXJraW5nQ29uc3RyYWludFNldD4o
KnRoaXMpKQogICAgICwgbV9oYW5kbGVTZXQodm0pCi0gICAgLCBtX2NvZGVCbG9ja3Moc3RkOjpt
YWtlX3VuaXF1ZTxDb2RlQmxvY2tTZXQ+KCkpCi0gICAgLCBtX2ppdFN0dWJSb3V0aW5lcyhzdGQ6
Om1ha2VfdW5pcXVlPEpJVFN0dWJSb3V0aW5lU2V0PigpKQorICAgICwgbV9jb2RlQmxvY2tzKG1h
a2VVbmlxdWU8Q29kZUJsb2NrU2V0PigpKQorICAgICwgbV9qaXRTdHViUm91dGluZXMobWFrZVVu
aXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKICAgICAsIG1fdm0odm0pCiAgICAgLy8gV2Ugc2Vl
ZCB3aXRoIDEwbXMgc28gdGhhdCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNu
J3QgY29udGludW91c2x5IAogICAgIC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZl
ciBkb25lIGEgY29sbGVjdGlvbi4KQEAgLTMwNSw4ICszMDUsOCBAQCBIZWFwOjpIZWFwKFZNKiB2
bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0
aXZpdHlDYWxsYmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVy
KGFkb3B0UmVmKCpuZXcgSW5jcmVtZW50YWxTd2VlcGVyKHRoaXMpKSkKICAgICAsIG1fc3RvcElm
TmVjZXNzYXJ5VGltZXIoYWRvcHRSZWYoKm5ldyBTdG9wSWZOZWNlc3NhcnlUaW1lcih2bSkpKQot
ICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3Rh
Y2tBcnJheT4oKSkKLSAgICAsIG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5p
cXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJrU3RhY2so
bWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fc2hhcmVkTXV0YXRvck1hcmtT
dGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQogICAgICwgbV9oZWxwZXJDbGllbnQo
JmhlYXBIZWxwZXJQb29sKCkpCiAgICAgLCBtX3RocmVhZExvY2soQm94PExvY2s+OjpjcmVhdGUo
KSkKICAgICAsIG1fdGhyZWFkQ29uZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3Jl
YXRlKCkpCkBAIC0zMTQsNyArMzE0LDcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgIG1fd29ybGRTdGF0ZS5zdG9yZSgwKTsKIAogICAgIGZvciAodW5zaWduZWQg
aSA9IDAsIG51bWJlck9mUGFyYWxsZWxUaHJlYWRzID0gaGVhcEhlbHBlclBvb2woKS5udW1iZXJP
ZlRocmVhZHMoKTsgaSA8IG51bWJlck9mUGFyYWxsZWxUaHJlYWRzOyArK2kpIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxT
bG90VmlzaXRvcj4oKnRoaXMsIHRvQ1N0cmluZygiUCIsIGkgKyAxKSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9IG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+
KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOwogICAgICAgICBpZiAoT3B0aW9uczo6b3B0
aW1pemVQYXJhbGxlbFNsb3RWaXNpdG9yc0ZvclN0b3BwZWRNdXRhdG9yKCkpCiAgICAgICAgICAg
ICB2aXNpdG9yLT5vcHRpbWl6ZUZvclN0b3BwZWRNdXRhdG9yKCk7CiAgICAgICAgIG1fYXZhaWxh
YmxlUGFyYWxsZWxTbG90VmlzaXRvcnMuYXBwZW5kKHZpc2l0b3IuZ2V0KCkpOwpAQCAtMzIzLDE3
ICszMjMsMTcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIAog
ICAgIGlmIChPcHRpb25zOjp1c2VDb25jdXJyZW50R0MoKSkgewogICAgICAgICBpZiAoT3B0aW9u
czo6dXNlU3RvY2hhc3RpY011dGF0b3JTY2hlZHVsZXIoKSkKLSAgICAgICAgICAgIG1fc2NoZWR1
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxl
cj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFN0b2NoYXN0
aWNTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2No
ZWR1bGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8U3Bh
Y2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IFdlIHNpbXVsYXRlIHR1cm5pbmcgb2ZmIGNvbmN1cnJlbnQgR0MgYnkgbWFraW5nIHRoZSBzY2hl
ZHVsZXIgc2F5IHRoYXQgdGhlIHdvcmxkCiAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgYmUgc3Rv
cHBlZCB3aGVuIHRoZSBjb2xsZWN0b3IgaXMgcnVubmluZy4KLSAgICAgICAgbV9zY2hlZHVsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxl
cj4oKTsKKyAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzU3RvcFRo
ZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKICAgICB9CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6
OnZlcmlmeUhlYXAoKSkKLSAgICAgICAgbV92ZXJpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVh
cFZlcmlmaWVyPih0aGlzLCBPcHRpb25zOjpudW1iZXJPZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJp
ZmljYXRpb24oKSk7CisgICAgICAgIG1fdmVyaWZpZXIgPSBtYWtlVW5pcXVlPEhlYXBWZXJpZmll
cj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9u
KCkpOwogICAgIAogICAgIG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBl
ZE11dGF0b3IoKTsKIApAQCAtODk5LDcgKzg5OSw3IEBAIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRP
YmplY3RDb3VudCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3Rl
Y3RlZE9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRT
ZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0
PigpOwogICAgIGZvckVhY2hQcm90ZWN0ZWRDZWxsKAogICAgICAgICBbJl0gKEpTQ2VsbCogY2Vs
bCkgewogICAgICAgICAgICAgcmVjb3JkVHlwZSgqdm0oKSwgKnJlc3VsdCwgY2VsbCk7CkBAIC05
MDksNyArOTA5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVj
dGVkT2JqZWN0VHlwZUNvdW50cygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhl
YXA6Om9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRT
ZXQ+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0
PigpOwogICAgIEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAg
bV9vYmplY3RTcGFjZS5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAgIGl0ZXJhdGlvblNjb3BlLApA
QCAtMjg1Niw3ICsyODU2LDcgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAg
ICAgICB9LAogICAgICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eTo6U2VsZG9tR3JleWVkKTsKICAg
ICAKLSAgICBtX2NvbnN0cmFpbnRTZXQtPmFkZChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja01l
cmdpbmdDb25zdHJhaW50PigqdGhpcykpOworICAgIG1fY29uc3RyYWludFNldC0+YWRkKG1ha2VV
bmlxdWU8TWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+KCp0aGlzKSk7CiB9CiAKIHZvaWQgSGVh
cDo6YWRkTWFya2luZ0NvbnN0cmFpbnQoc3RkOjp1bmlxdWVfcHRyPE1hcmtpbmdDb25zdHJhaW50
PiBjb25zdHJhaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5k
ZXggNWI2OWNkNWUzNWY2MmI1MDY2M2E5Y2JkYzczOTRkMWJkNjdhZDFkOC4uZTFlYjZjNzgzM2Q0
ODU4NzFhOWM1MzNjZmQ0NzMxYzc1ZjliMTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwSW5saW5lcy5oCkBAIC0yMTcsNyArMjE3LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVj
cmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKQogaW5saW5lIEhhc2hTZXQ8TWFya2Vk
QXJndW1lbnRCdWZmZXIqPiYgSGVhcDo6bWFya0xpc3RTZXQoKQogewogICAgIGlmICghbV9tYXJr
TGlzdFNldCkKLSAgICAgICAgbV9tYXJrTGlzdFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNl
dDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOworICAgICAgICBtX21hcmtMaXN0U2V0ID0gbWFr
ZVVuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7CiAgICAgcmV0dXJuICpt
X21hcmtMaXN0U2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBTbmFwc2hvdEJ1aWxkZXIuY3BwCmluZGV4IDViOWFjODlkYWJmMDRhMDYxNGRjMTBmYmJhZjE2
YzBmNGE0OTlmN2UuLjJkMmJjOGZiOWIyN2ZlOWY5YjFiNWJlNTRjYjc1MWY4M2UwZDNkMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIu
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSGVhcFNuYXBzaG90QnVpbGRlcjo6YnVpbGRTbmFw
c2hvdCgpCiAKICAgICBQcmV2ZW50Q29sbGVjdGlvblNjb3BlIHByZXZlbnRDb2xsZWN0aW9uU2Nv
cGUobV9wcm9maWxlci52bSgpLmhlYXApOwogCi0gICAgbV9zbmFwc2hvdCA9IHN0ZDo6bWFrZV91
bmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKKyAg
ICBtX3NuYXBzaG90ID0gbWFrZVVuaXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIubW9zdFJl
Y2VudFNuYXBzaG90KCkpOwogICAgIHsKICAgICAgICAgbV9wcm9maWxlci5zZXRBY3RpdmVTbmFw
c2hvdEJ1aWxkZXIodGhpcyk7CiAgICAgICAgIG1fcHJvZmlsZXIudm0oKS5oZWFwLmNvbGxlY3RO
b3coU3luYywgQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvQ2VsbFNldC5jcHAKaW5kZXggYjhlNDMwMTkxZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJi
MTk4ZmRhOS4uN2MyZWQyNDAyZmQ3MzAxZmMwOTlhOGRmYjVkM2MzMzZhZWFkMTEwZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAg
TkVWRVJfSU5MSU5FIEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxT
ZXQ6OmFkZFNsb3coc2l6ZV90IGJsb2MKICAgICBhdXRvJiBiaXRzUHRyUmVmID0gbV9iaXRzW2Js
b2NrSW5kZXhdOwogICAgIGF1dG8qIGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgIGlmICgh
Yml0cykgewotICAgICAgICBiaXRzUHRyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXA8TWFy
a2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+PigpOworICAgICAgICBiaXRzUHRyUmVmID0gbWFrZVVu
aXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+PigpOwogICAgICAgICBiaXRz
ID0gYml0c1B0clJlZi5nZXQoKTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAg
ICAgICAgbV9ibG9ja3NXaXRoQml0c1tibG9ja0luZGV4XSA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKaW5kZXggZDUxMDAwZWJhODdmMzFkZTQ4MWJl
ZDA4YTVmMmZlZDhhNjM5ZmY5OS4uY2QzZTdlNTYxNTQ1NjZkY2Y4YzE1MTYzYTE1YjcyZjI3Njhm
MjkzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcApAQCAt
MzksNyArMzksNyBAQCBJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFw
JiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgcwogICAgICwgbV9zaXplKHNpemUp
CiAgICAgLCBtX2RpcmVjdG9yeSgmaGVhcCwgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtl
ZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCiAgICAgLCBtX2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVj
dG9yeSkKLSAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVl
PElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBtX2lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IobWFrZVVuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQogewogICAg
IGluaXRpYWxpemUoaGVhcENlbGxUeXBlLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29u
c3RyYWludFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3Ry
YWludFNldC5jcHAKaW5kZXggYjNhYmQyYzUyMjRmY2UzZTVjZTEyYzRmMTYzZWQ0ODIzZGFlNjk4
ZS4uMTc4MGMwOGE0NzBmMjc2MjMxNjM3ZWY2ODExN2M5YTRlMzJjMWQyOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcApAQCAt
NjcsNyArNjcsNyBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjpkaWRTdGFydE1hcmtpbmco
KQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5h
bWUsIENTdHJpbmcgbmFtZSwgOjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJik+IGZ1bmN0aW9u
LCBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5LCBDb25zdHJhaW50Q29uY3VycmVuY3kg
Y29uY3VycmVuY3ksIENvbnN0cmFpbnRQYXJhbGxlbGlzbSBwYXJhbGxlbGlzbSkKIHsKLSAgICBh
ZGQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJy
ZXZpYXRlZE5hbWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0
eSwgY29uY3VycmVuY3ksIHBhcmFsbGVsaXNtKSk7CisgICAgYWRkKG1ha2VVbmlxdWU8U2ltcGxl
TWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1l
KSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlz
bSkpOwogfQogCiB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQoCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29u
c29sZUNsaWVudC5jcHAKaW5kZXggODJiZTNiYmI0NGNiNmM1Nzc2YjhlY2Y3ZmEwYzk0MGQ1ZDVh
NTgyNS4uNTNhOTFhMjNjMWQ4OTI5MThlZTQyOTQxYTY1ZjUyNzg2N2Q0MzM0YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlw
ZSwgTWVzcwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFy
Z3VtZW50QXNTdHJpbmcobWVzc2FnZSk7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhl
YykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBt
ZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9i
amVjdENvbnNvbGVDbGllbnQ6OmNvdW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBs
YWJlbCkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6
OnByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgICAgICAg
ICAgaWYgKGV4aXN0aW5nVGl0bGUgPT0gdGl0bGUpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAg
ICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJv
ZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwg
IlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgICAgICAgICAgbV9jb25zb2xlQWdlbnQtPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgd2FybmluZykpOworICAgICAgICAgICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bAogCiAgICAg
Ly8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8K
ICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlz
dCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0
Iik7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgIG1f
Y29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQ6OnN0YXJ0Q29uc29sZVByb2ZpbGUoKQpAQCAtMTg1LDcgKzE4NSw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEV4ZWNTdGF0ZSos
IFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dDo6d2FyblVuaW1wbGVtZW50ZWQoY29uc3QgU3RyaW5nJiBtZXRob2QpCiB7CiAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtZXRob2QgKyAiIGlzIGN1cnJlbnRseSBpZ25vcmVkIGluIEphdmFTY3JpcHQg
Y29udGV4dCBpbnNwZWN0aW9uLiI7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdl
KSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4
IGM4ZGE1MmVmZDEzYzQ5MWNjYWU2Mzk1ZTA3NGM0NjQ0ZTcwY2MwYTcuLmJkYmQzMWQ2MzEyYjJj
MDU2ZDdjNDc4MTVkYzYxNWQxMjI2ZDkyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2dsb2Jh
bE9iamVjdChnbG9iYWxPYmplY3QpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6
Om1ha2VfdW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVkU2NyaXB0
SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1
ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0
ZSgpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAg
ICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGdsb2JhbE9iamVjdCkKICAgICAsIG1fZnJvbnRlbmRS
b3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQpAQCAtNzEsMTEgKzcxLDExIEBAIEpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyKEpTR2xvYmFsT2JqCiB7CiAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQo
KTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JD
b25zb2xlQWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQpOwogICAgIG1fY29uc29sZUFnZW50ID0g
Y29uc29sZUFnZW50LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVB
Z2VudCkpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQ+KG1fY29uc29sZUFnZW50KTsKKyAgICBtX2NvbnNvbGVDbGll
bnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xlQWdl
bnQpOwogCiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiB9CkBAIC0yMDAsNyAr
MjAwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2UKICAgICAgICAgICAgIENvbnNvbGVDbGll
bnQ6OnByaW50Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpM
b2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgU3RyaW5nKCksIDAsIDApOwog
ICAgIH0KIAotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNr
KSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogfQog
CiBDb25zb2xlQ2xpZW50KiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbnNv
bGVDbGllbnQoKSBjb25zdApAQCAtMjgwLDcgKzI4MCw3IEBAIEluc3BlY3RvckFnZW50JiBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsK
ICAgICBpZiAoIW1faW5zcGVjdG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNB
Z2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOworICAgICAgICBhdXRvIGluc3BlY3RvckFn
ZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oY29udGV4dCk7CiAgICAgICAgIG1faW5z
cGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBw
ZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKICAgICB9CkBAIC0yOTEsNyArMjkxLDcgQEAg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjplbnN1cmVEZWJ1Z2dlckFnZW50KCkKIHsKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudCkgewog
ICAgICAgICBhdXRvIGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRl
YnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOworICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQg
PSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25z
b2xlQWdlbnQpOwogICAgICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50LmdldCgp
OwogICAgICAgICBtX2NvbnNvbGVDbGllbnQtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQobV9k
ZWJ1Z2dlckFnZW50KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJB
Z2VudCkpOwpAQCAtMzI3LDIwICszMjcsMjAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdl
bnQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNvbnRleHQpKTsKIAogICAgIGVuc3VyZURl
YnVnZ2VyQWdlbnQoKTsKIAotICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CisgICAg
YXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50Pihjb250ZXh0KTsKICAgICBtX2NvbnNvbGVDbGllbnQtPnNldEluc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAg
bV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCi0gICAg
YXV0byBoZWFwQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29u
dGV4dCk7CisgICAgYXV0byBoZWFwQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckhlYXBBZ2Vu
dD4oY29udGV4dCk7CiAgICAgaWYgKG1fY29uc29sZUFnZW50KQogICAgICAgICBtX2NvbnNvbGVB
Z2VudC0+c2V0SW5zcGVjdG9ySGVhcEFnZW50KGhlYXBBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKFdURk1vdmUoaGVhcEFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKKyAgICBt
X2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRl
eHQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5k
ZXggYzBiNWM5YWFkMThjMDhjZWRkYzM2OTY2YmYwNDY4NTE0MTc2MjY0My4uNDE3ZTc3NWZiODAy
NDljMDQwMzEzN2E4Mjc4MjEzNzMyN2QzMzJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDAs
NyArNDAsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIEluc3BlY3RvckFnZW50OjpJbnNwZWN0
b3JBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
Ikluc3BlY3RvciJfcykKICAgICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDdlZGJjODA2NjBm
MzZkNmE4MWFhOTFmYjhmYTNmZGRkZWRhZTZmMjYuLjVkMjRjNjllNmJmNDVkNzJmYjBiZGE1M2I0
YzQ1NzU5ODYxM2NiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDUs
NyArNDUsNyBAQCBzdGF0aWMgY29uc3QgaW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAx
MDsKIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEFnZW50Q29u
dGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ29uc29sZSJfcykKICAg
ICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENvbnNvbGVCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdGFy
dFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlCiAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRv
IHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9
IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAg
ICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShl
eGVjLCAxKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9y
Q29uc29sZShleGVjLCAxKSkpOwogICAgIH0KIH0KIApAQCAtMTU5LDE0ICsxNTksMTQgQEAgdm9p
ZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBsYWJlbCwKICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0
aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFi
ZWwsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0
ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RG
TW92ZShjYWxsU3RhY2spKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFj
aykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRU
aW1lID0gaXQtPnZhbHVlOwogICAgIFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5v
dygpIC0gc3RhcnRUaW1lOwogICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwg
IjogIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCks
IDMpLCAibXMiKTsKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1p
bmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RG
TW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGlt
aW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdU
Rk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3Rv
cFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE4
NCwxNCArMTg0LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1f
dGltZXMuZW5kKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJv
bnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3Ry
aW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRk
TWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdl
VG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fybmlu
ZywgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBN
b25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQg
PSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9
IG1ha2VTdHJpbmcobGFiZWwsICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFw
c2VkLm1pbGxpc2Vjb25kcygpLCAzKSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZN
b3ZlKGNhbGxTdGFjaykpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1p
bmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwog
CiAgICAgbV90aW1lcy5yZW1vdmUoaXQpOwogfQpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgSW5z
cGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbCkKICAgICAvLyBGSVhNRTogV2ViIEluc3BlY3RvciBzaG91bGQgaGF2ZSBhIGJl
dHRlciBVSSBmb3IgY291bnRlcnMsIGJ1dCBmb3Igbm93IHdlIGp1c3QgbG9nIGFuIHVwZGF0ZWQg
Y291bnRlciB2YWx1ZS4KIAogICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwg
IjogIiwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgYWRkTWVzc2FnZVRvQ29u
c29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcmIGxhYmVsKQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpjb3VudFJlc2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsCiAg
ICAgaWYgKGl0ID09IG1fY291bnRzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFu
IGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3
YXJuaW5nID0gbWFrZVN0cmluZygiQ291bnRlciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhp
c3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNv
bnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFj
a0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlNWYyNDgyYTNjYWEwOGFhODE2NDVmYThj
NzljNTI5YmE0MzgwZDBhLi4yNWYxZDNlNzI4MWM2YjBmYjgzMzBmZjEzNzg3MzY0M2ViYzYwZWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCBz
dGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRC
cmVha3BvaW50QWN0aW9uJiBhY3RpbwogCiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiRGVidWdnZXIiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8RGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5k
RGlzcGF0Y2hlcihEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGNvbnRleHQu
ZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2Vu
dC5jcHAKaW5kZXggYjUzNWZmNjE5MmFhY2VmYzc5YjRmNmNkOTNkZjEyMDFhMzcxNDhhYy4uNTgy
YzM1ZDM2N2RmZTFlNGY3ZGM0ZTlhNTY4NGRjYTJhNGUzYjRiYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFw
QWdlbnQuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSW5zcGVj
dG9ySGVhcEFnZW50OjpJbnNwZWN0b3JIZWFwQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJIZWFwIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1
ZTxIZWFwRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSGVhcEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQu
ZW52aXJvbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwCmluZGV4IDU2ZmMxYjc5OGRhMGVlZWVhMDIzMzFlZDUyNTRhOTUwMjEwMDU4NzQuLmNiYWQ4
MWQ2OTk0NDBhNzMzYjBhZjA0MTY5NGE4NmNhOWU2ZThlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3Jp
cHRQcm9maWxlckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiU2NyaXB0UHJvZmlsZXIiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
U2NyaXB0UHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihTY3JpcHRQcm9maWxlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vu
dmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2Vu
dC5jcHAKaW5kZXggM2FjYTQxMDUxMGZlNTAwZjA1YmZiYWFjNDY3ZmZkYWNjYjIxYzUyNC4uOTM1
MDY4YzdhZTExOTcxMDU0NGMxZjc2Nzk4MjJkZmI2NmU1NmI4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRh
cmdldEFnZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVy
JiBmcm9udGVuZFJvdXRlciwgQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUYXJnZXQiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3Bh
dGNoZXIoVGFyZ2V0QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApp
bmRleCBlMzI5YTNiNDNjZDYwOTY1ZDlmNzc4NWE0ODIyMDExYWIzNjZmYTUzLi45YjNmMzc5ZDVl
NWE0OTBkYmUzNzVjNzJhYzk5ZmE3MjBiOWFjY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSlNH
bG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJp
bmcmIGUKIAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rp
b25Mb2coSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0g
ICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSwgMCkp
OworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1
bnRpbWVBZ2VudC5jcHAKaW5kZXggMTQ1ZDA1MTZiOGUzOTY4ODc4ZDkyY2I1OTRhYTU5OWJhZmEz
OWQzMi4uM2I3YzNlMjFkMzFjMWMyZjViNmQxYmEwYzE2ZjQ4ODgzZTZjZjMxNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RS
dW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50KEpTQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVj
dG9yUnVudGltZUFnZW50KGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxSdW50aW1lRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2dsb2JhbE9iamVjdChjb250ZXh0Lmluc3Bl
Y3RlZEdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCmluZGV4IDcxMDE2NjhhOTdjODc0NDgxMmY0NjU2ZjE2
ZTBiN2RkNTk0ZjFhNjAuLmNjOTY0MDA1Njc5ZGJmY2Q0ZmUwMjkwNmJjOTNjMjNiMmM4MmVjY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50LmNwcApAQCAtMTQ0LDExICsxNDQsMTEgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIAog
ICAgIFNvY2tldDo6c2V0dXAoc29ja2V0KTsKIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8U29ja2V0OjpDb25uZWN0aW9uPigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9
IG1ha2VVbmlxdWU8U29ja2V0OjpDb25uZWN0aW9uPigpOwogCiAgICAgY29ubmVjdGlvbi0+cG9s
bCA9IFNvY2tldDo6cHJlcGFyZVBvbGxpbmcoc29ja2V0KTsKICAgICBjb25uZWN0aW9uLT5zb2Nr
ZXQgPSBzb2NrZXQ7Ci0gICAgY29ubmVjdGlvbi0+cGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxN
ZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpCdWZmZXJTaXplKTsKKyAgICBjb25uZWN0aW9uLT5w
YXJzZXIgPSBtYWtlVW5pcXVlPE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUp
OwogICAgIGNvbm5lY3Rpb24tPnBhcnNlci0+c2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoW3Ro
aXNdKENvbm5lY3Rpb25JRCBpZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBp
ZiAobV9pbnNwZWN0b3JDbGllbnQpCiAgICAgICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+ZGlk
UmVjZWl2ZVdlYkluc3BlY3RvckV2ZW50KGlkLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKaW5kZXggNzBmMmQ3
YTQ4MTM0NzBmODEzNzMyYjNiOTc3YjViNzNhNDE5NjBiNS4uMzIwNDAwZmQ1YjNjZGIyYzRiMTVk
YmRjOTMwNDZiYmZkMDBjYWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSlNfRVhQT1JU
X1BSSVZBVEUgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQgewogcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+IGNyZWF0
ZShSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQsIGNvbnN0
IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3Bl
Y3RvckNsaWVudCwgbmFtZSk7CiAgICAgfQogCiAgICAgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCosIGNvbnN0IGNoYXIqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRleCA1
MGM4ZjZmZGU3Y2U2ODk4YjA4MjgxNDk5N2JlNTdkNzMwMTliMjUzLi4xMDE3ODllMWRmNzU0ODFm
NjFlOGMwMGYyMTFhY2E3NDliNTA1OGVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC0xMzYsOCArMTM2LDggQEAgY2xhc3MgT2JqQ0dl
bmVyYXRvclRlbXBsYXRlczoKICAgICBbXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgcmVs
ZWFzZV07CiAgICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgPSBbaGFuZGxlciByZXRh
aW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmpDSW5zcGVjdG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAg
ICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRj
aGFibGVBZ2VudDwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9t
YWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xs
ZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1l
fSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBf
Y29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4
cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDNl
OTkxNDcxZDMyNGEzNTUxNjkyOGU0M2U5NDEwOGI0NDg3MzEyMDguLmIwNGE4NTBkZjExNTJkNmZk
YTU5NjJkZjM3YzJlNDllMWViZDk1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1t
YWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0
Zm9ybS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29ya0hhbmRs
ZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPiho
YW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRl
cm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0
ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdU
Rk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hl
ciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3Jr
QmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFs
dGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChX
VEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggYTcxNGZiMTMxODMyOTNkMTgzMmZjNTgx
ZTZjNTMzNzg2ODAyZDU3Mi4uYzBlMTczMzdmZDRhNzk4ODMwZTg1ZDI5ZTg1ZDhlZDMwMjBjYTc5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1
bHQKQEAgLTExODksOCArMTE4OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAg
W19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFtoYW5k
bGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsK
LSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUo
YWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1h
a2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIp
OworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNo
YWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RG
TW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9j
b21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQK
aW5kZXggNTNiZDU1M2I3YmE3NGRkZDI5ZTI1NTFjYzBiODRmYTQzMDcxNGNhZS4uYWVkMDdiNzVl
OGI4ODhkZDU5MzM5MGFmYTIxZDJjODkwZGRmYzU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFu
ZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29u
LXJlc3VsdApAQCAtMTA2OCw4ICsxMDY4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsKICAgICBfZGF0YWJhc2VIYW5kbGVyID0g
W2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RG
TW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVy
ID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3Zl
KGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2Vu
dChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFp
bi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpz
b24tcmVzdWx0CmluZGV4IDY3OGM2YWFhODVhY2EzODQyNDhiOTkyOTAzNGNjZjA5NDExOGRlZTcu
LjFhZGNiZDNmZDJhY2I5Y2ExNDYxYzMwOGU0NWM0OTJlYzNlMDMyNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2
YWlsYWJpbGl0eS5qc29uLXJlc3VsdApAQCAtNzgyLDggKzc4Miw4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAgICAgW19kb21haW5BSGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWlu
QUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRj
aGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQUJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5BQmFja2VuZERpc3BhdGNoZXIsIEFs
dGVybmF0ZURvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5BIl9zLCAqX2NvbnRyb2xs
ZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hl
cj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVE
b21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQSJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFB
Z2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKQEAgLTgwMCw4ICs4MDAsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZG9tYWluQkhhbmRsZXIgcmVsZWFzZV07
CiAgICAgX2RvbWFpbkJIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0
ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkJC
YWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQkJhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5CQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQiJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRv
IGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5CQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtl
VW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hl
ciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkIiX3MsICpfY29u
dHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXIt
PmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdApp
bmRleCBmNmM1ZWRjY2I5Mjg1YWY0OGM2ZGViOTg0MjJhNzIzNmI4NzAyZDRlLi5hM2UyN2RmMzhj
ZWFmYmIzYzQ1MWUxM2I2MTE5ZTJlNTRjM2QyYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5z
LXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFp
bnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTEwMzksOCArMTAz
OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIg
cmVsZWFzZV07CiAgICAgX25ldHdvcmsxSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
Pj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hl
cikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3Bl
Y3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+Pigi
TmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2Vu
dCkpOwogfQogCkBAIC0xMDU3LDggKzEwNTcsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogICAgIFtfbmV0d29yazNIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrM0hhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRl
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9sbGVyLCBX
VEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPiho
YW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmszIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFn
ZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51
bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRl
eCA0ZDk0YWQ5NGFkODUxZjU4NWY0OGU5MTE1ZTNiZWNjZjk3YjdhZDVmLi5iZDZiOTgxNWY3NjAx
YWUxZDBmZWRjMjZjNDU0MzViYTQzZjYxZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVl
cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtODE1
LDggKzgxNSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19jb21tYW5kRG9t
YWluSGFuZGxlciByZWxlYXNlXTsKICAgICBfY29tbWFuZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxl
ciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpDSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVy
KTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudDxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0
ZUNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2Nv
bnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VV
bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFu
ZERvbWFpbiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsK
ICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCA2ZjZiZjM2MjU3YWU5ZWVmMDVmMWJmMjY3M2U2MTEz
ZjNiY2U4OTgwLi41Y2JjY2JmZWQ1M2M0YmYzNDEzNmY3NjhlZGE1OWZmYjQ5MDcwYjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpz
b24tcmVzdWx0CkBAIC03OTgsOCArNzk4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICBbX25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVyID0g
W2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RG
TW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVy
ID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3Zl
KGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2Vu
dChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlv
bnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFj
LXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDNlOTkxNDcxZDMyNGEzNTUxNjkyOGU0M2U5NDEw
OGI0NDg3MzEyMDguLmIwNGE4NTBkZjExNTJkNmZkYTU5NjJkZjM3YzJlNDllMWViZDk1ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9t
YWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBl
Y3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzcxLDgg
Kzc3MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrSGFuZGxl
ciByZWxlYXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0g
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVj
dG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3
b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikp
OworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rv
ck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29y
ayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBf
Y29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAwNWY3MGYxYWVhZjRjNGQ5ZjUyYzEw
NmFiNjZkYjllY2QyZWFiOGJlLi45OWU4YTQ3ZmQ1ZTBjMjA3ZTcyN2I4NmZlMjM2MTkwNTdiNjUw
MmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC02NTQsNyArNjU0LDcgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQp
CiAgICAgfQogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8
IChtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNl
bGluZUZvclByb2ZpbGVyKCkpKSkKLSAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2spOworICAgICAgICBtX2Rpc2Fzc2Vt
YmxlciA9IG1ha2VVbmlxdWU8SklURGlzYXNzZW1ibGVyPihtX2NvZGVCbG9jayk7CiAgICAgaWYg
KFVOTElLRUxZKG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikpIHsKICAgICAgICAgbV9jb21w
aWxhdGlvbiA9IGFkb3B0UmVmKAogICAgICAgICAgICAgbmV3IFByb2ZpbGVyOjpDb21waWxhdGlv
bigKQEAgLTkwMSw3ICs5MDEsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAg
IH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1hcHBpbmco
KSkKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91
bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIpLCBwYXRjaEJ1ZmZlcikpOworICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmln
aW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKSk7CiAgICAgCiAgICAgQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPiByZXN1bHQgPSBGSU5BTElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwgSlNF
bnRyeVB0clRhZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1
bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCAx
NmJmNzBkODAxNzQ0MjMwNTAyYTJkOGIxOTdjZDQwMWM4MDI0ZjM4Li41YmRmODMwNDY1MDQzOTk0
ZTExYmFmZmVkNTJiYjc4NWMxYmEwYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRU
aHVua3MuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogSklUVGh1bmtz
OjpKSVRUaHVua3MoKQotICAgIDogbV9ob3N0RnVuY3Rpb25TdHViTWFwKHN0ZDo6bWFrZV91bmlx
dWU8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4oKSkKKyAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcCht
YWtlVW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGUzODhmYjBlNjI3MDhiMzRlY2I5NzFlOTQ2YjQ2YjE5
M2M0Y2FlM2IuLjhmOWE4NjRlNGZlODYyNmExZmVmYzBjMzA3YzllNDY1NjYyZjVhOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9p
ZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRnJhbWVTaHVm
Zmxlcj4gZnJhbWVTaHVmZmxlcjsKICAgICBpZiAoY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURh
dGEoKSkgewogICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSk7Ci0gICAg
ICAgIGZyYW1lU2h1ZmZsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxGcmFtZVNodWZmbGVyPihz
dHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSk7CisgICAgICAgIGZyYW1l
U2h1ZmZsZXIgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExp
bmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAg
ICAgLy8gV2Ugd291bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEg
Y2VsbCwgYW5kIHdlIGNhbgogICAgICAgICAvLyB1c2UgdGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIg
dGhpcyBidXlzIHVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0MTIyZmJlZDIyZWUxNTUyM2Qx
NGU0YTg3OWFiYTFhYjg0Nzg2YTA3Li43MDJkMzY5NGQ5Zjc2ODg0MjBmMGNkYWJkMTBlODg4YTcz
M2YyODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjk2OSw3ICsyOTY5LDcgQEAgaW50IHJ1
bkpTQyhjb25zdCBDb21tYW5kTGluZSYgb3B0aW9ucywgYm9vbCBpc1dvcmtlciwgY29uc3QgRnVu
YyYgZnVuYykKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKICAgICAgICAgaWYg
KG9wdGlvbnMubV9wcm9maWxlICYmICF2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCi0gICAgICAg
ICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVy
OjpEYXRhYmFzZT4odm0pOworICAgICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0g
bWFrZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZtKTsKIAogICAgICAgICBnbG9iYWxPYmpl
Y3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50cyk7CiAgICAgICAgIGdsb2JhbE9i
amVjdC0+c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChvcHRpb25zLm1fZW5hYmxlUmVtb3RlRGVi
dWdnaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmOGRi
ZTcxOTZmMTExNzE2ZDBhNThmN2Y1N2UzZjhmNjdiN2EyYWNmLi5hMTY0ZmQ5MDNmMzZlOTQyMGE3
MzY0ZWY0MjdjNmMyZmZlMzIyY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSog
dm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgICwg
bV9pbW1lZGlhdGVQYXJlbnRBbGxvd3NGdW5jdGlvbkRlY2xhcmF0aW9uSW5TdGF0ZW1lbnQoZmFs
c2UpCiAgICAgLCBtX2RlYnVnZ2VyUGFyc2VEYXRhKGRlYnVnZ2VyUGFyc2VEYXRhKQogewotICAg
IG1fbGV4ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBz
Y3JpcHRNb2RlKTsKKyAgICBtX2xleGVyID0gbWFrZVVuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWls
dGluTW9kZSwgc2NyaXB0TW9kZSk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsICZtX3Bh
cnNlckFyZW5hKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExp
bmUoKS5vbmVCYXNlZEludCgpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldCA9
IHNvdXJjZS5zdGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
aW5kZXggNjlhYTBiYzE5MGFmNjc4M2Q4OTI4YzM1OWFhM2IxMGJiMWZiZDg3My4uMGE1ZWRlNGI4
NDI1Y2ZkMWIzMTdjNzZjNTFlYTczNzgxNzgwYjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICB2b2lk
IHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyKiBsYWJlbCwgYm9vbCBpc0xvb3ApCiAgICAgewog
ICAgICAgICBpZiAoIW1fbGFiZWxzKQotICAgICAgICAgICAgbV9sYWJlbHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExhYmVsU3RhY2s+KCk7CisgICAgICAgICAgICBtX2xhYmVscyA9IG1ha2VVbmlxdWU8
TGFiZWxTdGFjaz4oKTsKICAgICAgICAgbV9sYWJlbHMtPmFwcGVuZChTY29wZUxhYmVsSW5mbyB7
IGxhYmVsLT5pbXBsKCksIGlzTG9vcCB9KTsKICAgICB9CiAKQEAgLTE5NDEsNyArMTk0MSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFy
c2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAgICAgICAgIGVuZExvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldCA9IG1fbGV4ZXItPmN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAgICAgZW5kTG9j
YXRpb24uc3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCk7CiAgICAgICAgIHVu
c2lnbmVkIGVuZENvbHVtbiA9IGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24u
bGluZVN0YXJ0T2Zmc2V0OwotICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNl
ZE5vZGU+KG1fcGFyc2VyQXJlbmEsCisgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8UGFyc2Vk
Tm9kZT4obV9wYXJzZXJBcmVuYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXJ0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRM
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1u
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IGRmMTdi
ZTUzNjYzZTdjYjdiNzBjNDg3NzBmOWEwNTI5Y2YzM2E3ZWUuLjQxMDAwNmQ5Mjc1MWNlOTZiOTJj
Yjk2MjU2MzVlYTdjZjc4ZWM0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlckFyZW5hLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SWRlbnRpZmllckFyZW5hJiBpZGVudGlmaWVyQXJlbmEoKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkgKCFtX2lkZW50aWZpZXJBcmVuYSkpCi0gICAgICAgICAgICAgICAgbV9p
ZGVudGlmaWVyQXJlbmEgPSBzdGQ6Om1ha2VfdW5pcXVlPElkZW50aWZpZXJBcmVuYT4oKTsKKyAg
ICAgICAgICAgICAgICBtX2lkZW50aWZpZXJBcmVuYSA9IG1ha2VVbmlxdWU8SWRlbnRpZmllckFy
ZW5hPigpOwogICAgICAgICAgICAgcmV0dXJuICptX2lkZW50aWZpZXJBcmVuYTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJD
b21waWxhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJD
b21waWxhdGlvbi5jcHAKaW5kZXggMDUwMzJiNWQxMzEwOGMwZWI2MjBlOWRhZTgyMGNlZjdhYzc1
MzE4Yy4uMzU3MTFiNWZhNjQyNjllNjc3NGFiNzBlMjFkZDUwMjUxNjljOGVhNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9u
LmNwcApAQCAtNzksNyArNzksNyBAQCBFeGVjdXRpb25Db3VudGVyKiBDb21waWxhdGlvbjo6ZXhl
Y3V0aW9uQ291bnRlckZvcihjb25zdCBPcmlnaW5TdGFjayYgb3JpZ2luKQogewogICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeGVjdXRpb25Db3VudGVyPiYgY291bnRlciA9IG1fY291bnRlcnMuYWRkKG9y
aWdpbiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghY291bnRlcikKLSAgICAg
ICAgY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKKyAgICAg
ICAgY291bnRlciA9IG1ha2VVbmlxdWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKIAogICAgIHJldHVy
biBjb3VudGVyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3Bw
CmluZGV4IDcwYzcxNDczMzI0NDQwODA3ODc5MzQwMTk4NjY3M2M5N2UxZWE4M2QuLmE2NGRlM2Zk
ZDY2MjU1MThhYzVkMTI2Y2VhYzc4YjZmMjEyNWE0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFN0YWNrRnJhbWU+PiBnZXRTdGFja1RyYWNlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBK
U09iagogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHNpemVfdCBmcmFtZXNUb1NraXAg
PSB1c2VDdXJyZW50RnJhbWUgPyAwIDogMTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0
YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RhY2tGcmFt
ZT4+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFj
ZSA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0YWNrRnJhbWU+PigpOwogICAgIHZtLmludGVycHJldGVy
LT5nZXRTdGFja1RyYWNlKG9iaiwgKnN0YWNrVHJhY2UsIGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2Jq
ZWN0LT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZSgpKTsKICAgICBpZiAoIXN0YWNrVHJhY2UtPmlz
RW1wdHkoKSkKICAgICAgICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjID09IHZtLnRvcENhbGxG
cmFtZSB8fCBleGVjLT5pc0dsb2JhbEV4ZWMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA0MzllMjA5YjBhNWY4
ZmI4MjliNzkxOTc1NzQ4OGM0MTU2MzQyNzNmLi5lZjJlODMwODc0MWI4ODUyZTU2MjMyNmY5NjI1
N2M5ZDAyOTM1ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBGdW5jdGlvbkV4ZWN1
dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiBGdW5jdGlvbkV4ZWN1
dGFibGU6OlJhcmVEYXRhJiBGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygp
CiB7CiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhKTsKLSAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxS
YXJlRGF0YT4oKTsKICAgICByYXJlRGF0YS0+bV9saW5lQ291bnQgPSBsaW5lQ291bnQoKTsKICAg
ICByYXJlRGF0YS0+bV9lbmRDb2x1bW4gPSBlbmRDb2x1bW4oKTsKICAgICByYXJlRGF0YS0+bV9w
YXJhbWV0ZXJzU3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCA0NjIz
NjQxYzU5OGUzZWJiNWZiYTZiYzAyMzcyNjRlNTA1MmZkMTc5Li41MmIyOGIxM2M3ZTJlMjVkMjFi
YmJhYjNhZDMxZDViNmJjMGNkZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgRnVuY3Rp
b25SYXJlRGF0YTo6QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmluYWwgOiBw
dWJsaWMgV2F0Y2gKIGlubGluZSBXYXRjaHBvaW50KiBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVB
bGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoIWhhc0FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkpOwotICAgIG1fYWxs
b2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsbG9j
YXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0aGlzKTsKKyAgICBtX2FsbG9jYXRpb25Q
cm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNs
ZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CiAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVD
bGVhcmluZ1dhdGNocG9pbnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxYTU3ZWYzZGNmZTkxOWU3MGIzN2Zh
N2UzNDg1NGExM2U5MDUzZmFlLi5jYzg3NzY3ZjEwOGJjYzQ4M2IzMTVmMTEyZmE5YzUzNDdmNTIw
MTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC00NzcsOCArNDc3LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgbV9kZWJ1Z2dlciA9IDA7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
LSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcyk7Ci0gICAgbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+
KCp0aGlzKTsKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9pbnNw
ZWN0b3JEZWJ1Z2dhYmxlID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0
aGlzKTsKICAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQoKTsKICAgICBtX2NvbnNvbGVD
bGllbnQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNvbnNvbGVDbGllbnQoKTsKICNlbmRpZgpA
QCAtMTE0NSw1NyArMTE0NSw1NyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJO
YW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgewog
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZl
V2F0Y2hwb2ludChhcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5l
eHQpOwotICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnQpOworICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gbWFrZVVuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwog
ICAgICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LT5pbnN0YWxsKHZtKTsKICAgICB9
CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1
cEFkYXB0aXZlV2F0Y2hwb2ludCh0aGlzLT5hcnJheVByb3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwg
bV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheVByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRp
dGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9hcnJh
eVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQog
CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1
cEFkYXB0aXZlV2F0Y2hwb2ludChtYXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5h
bWVzLT5uZXh0KTsKLSAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRj
aHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3Rv
dHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAg
IG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
KyAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQp
OwogICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBj
b25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChzZXRJdGVyYXRvclByb3RvdHlwZSwg
bV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlw
ZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBt
X3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRJdGVyYXRvclBy
b3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBt
X3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRJdGVyYXRvclBy
b3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hw
b2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5
bWJvbCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNo
cG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAg
ICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnQpOworICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQg
PSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nUHJv
dG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAg
ICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnQpOworICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2lu
dCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFw
UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnNldCk7Ci0gICAgICAgIG1fbWFw
UHJvdG90eXBlU2V0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRp
dGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRj
aHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9p
bnQpOwogICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwog
ICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9u
ID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJv
cGVydHlOYW1lcy0+YWRkKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQp
OworICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0UHJvdG90
eXBlQWRkV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYs
NyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9y
ID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICB0aGlzLT5zeW1ib2xQcm90b3R5
cGUoKTsKIAogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1
cEFkYXB0aXZlV2F0Y2hwb2ludChudW1iZXJQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmcpOwotICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dh
dGNocG9pbnQpOworICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9
IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9p
bnQpOwogICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhp
cywganNDYXN0PEpTRnVuY3Rpb24qPihudW1iZXJQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpKSk7CiAgICAgfQpAQCAtMTkzMiwxMCArMTkzMiwxMCBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fYXJyYXlTcGVjaWVzV2F0Y2hw
b2ludC5pc0JlaW5nV2F0Y2hlZCgpKTsKICAgICBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQudG91
Y2godm0sICJTZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRjaHBvaW50LiIpOwogCi0gICAgbV9hcnJh
eVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAg
IG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKICAg
ICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKIAot
ICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsK
KyAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAg
bV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAw
NDdjMTY2NTNlNzFiMWE4MDZiZDlmYzdkNTY2NDNhNWY5ODhmMTFlLi44NDUzNWNhNWM2MDBjZWNi
ZDhiNDc4ZjY1YjUzY2QwN2UzNmE4MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICB7CiAgICAg
ICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3JhcmVE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOworICAgICAg
ICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOwogICAg
IH0KICAgICAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHAKaW5kZXggMWFmMDAzNjUzY2I4YzNkZTY0M2Y4YzQ5MTI3YWJi
M2U1NTEzZDVhZC4uMzI3ZmVkMDZjNjdhNWJmMTEyNTFmOWY0ZGVkODM5ZTcwMzNjOGFiOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcApA
QCAtODcsNyArODcsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6
OnNldFJ1bkxvb3AoTWFuYWdlciogbWFuYWdlciwgQ0ZSdW5Mb29wUgogI2Vsc2UKIEpTUnVuTG9v
cFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQog
ICAgIDogcnVuTG9vcCgmUnVuTG9vcDo6Y3VycmVudCgpKQotICAgICwgdGltZXIoc3RkOjptYWtl
X3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5hZ2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNS
dW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZUNhbGxiYWNrKSkKKyAgICAsIHRpbWVy
KG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdlciwg
JkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYg
VVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICB0aW1lci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJj
ZVByaW9yaXR5OjpKYXZhc2NyaXB0VGltZXIpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIEpTUnVuTG9v
cFRpbWVyOjpNYW5hZ2VyJiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6c2hhcmVkKCkKIAogdm9p
ZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6cmVnaXN0ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0
byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKKyAgICBhdXRvIGRh
dGEgPSBtYWtlVW5pcXVlPFBlclZNRGF0YT4oKnRoaXMpOwogI2lmIFVTRShDRikKICAgICBkYXRh
LT5zZXRSdW5Mb29wKHRoaXMsIHZtLnJ1bkxvb3AoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCmluZGV4IDVm
MDc4ZDJhNTA5ZDJiNDQyMDBmN2E0YWYzODgxMjQ2Y2IyZDU4YTcuLjUyOTAyMGRmMGYxZGMyYTI4
NmY4MDBhYmFkOWQ3ZWI3ZDNmOGVlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGlu
bGluZSBQcm9wZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKIGlu
bGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KQogewogICAgIGlmICghbV9kZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVk
T2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKKyAg
ICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0
Pj4oKTsKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAppbmRleCA1OWVj
NDFjNDlhZTgyZjQ3ZjY5ODY4MDZkZDYxNDM5NDRhNDJiNWQ2Li5iMWJiNjc5MTk5MjY1YWZjYmNj
YzgzNjU2ZDhkNTZmYzViNGEzNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVRhYmxlLmNwcApAQCAtODMsNyArODMsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQ
cm9wZXJ0eVRhYmxlKFZNJiB2bSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiAgICAgLy8g
Q29weSB0aGUgbV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zm
c2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7
CiAgICAgaWYgKG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRP
ZmZzZXRzKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFBy
b3BlcnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOwogfQogCiBQcm9wZXJ0eVRhYmxl
OjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQ
cm9wZXJ0eVRhYmxlJiBvdGhlcikKQEAgLTEwNyw3ICsxMDcsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQ
cm9wZXJ0eVRhYmxlKFZNJiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9w
ZXJ0eVRhYgogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZl
Y3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0
ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBt
X2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+
Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtl
VW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0K
IAogdm9pZCBQcm9wZXJ0eVRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDA3MWIxZjY2MzE1Y2UzYWU4ZGNmZTE3
NWZmNjM2NmY1YzYzMmFmZmMuLjcwZTU5M2Q1M2ViZGQ4MWQ4YzA4MTNhMjk3NzBlOTQwY2UwNDEx
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtMTc4LDcg
KzE3OCw3IEBAIHZvaWQgUmVnRXhwOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKICAgICBtX251
bVN1YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zOwogICAgIGlmICghcGF0dGVy
bi5tX2NhcHR1cmVHcm91cE5hbWVzLmlzRW1wdHkoKSB8fCAhcGF0dGVybi5tX25hbWVkR3JvdXBU
b1BhcmVuSW5kZXguaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJl
RGF0YT4oKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jYXB0dXJlR3JvdXBOYW1lcy5zd2FwKHBh
dHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcyk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fbmFtZWRH
cm91cFRvUGFyZW5JbmRleC5zd2FwKHBhdHRlcm4ubV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDM5Y2RkOTEx
NmUwMjdlM2RiNjA0MGRiZDhmZTUyNzBkMmU5OTVkOGQuLmU4ZGE4NTI2ZTdjN2U4MWZiZWE3NWM4
ODk4ODE2MWI5YWY4OTE3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5o
CkBAIC0xNjQsNyArMTY0LDcgQEAgY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgWWFycjo6WWFyckNvZGVCbG9jayYgZW5zdXJlUmVnRXhwSklUQ29kZSgpCiAgICAgewog
ICAgICAgICBpZiAoIW1fcmVnRXhwSklUQ29kZSkKLSAgICAgICAgICAgIG1fcmVnRXhwSklUQ29k
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKKyAgICAgICAgICAg
IG1fcmVnRXhwSklUQ29kZSA9IG1ha2VVbmlxdWU8WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKICAg
ICAgICAgcmV0dXJuICptX3JlZ0V4cEpJVENvZGUuZ2V0KCk7CiAgICAgfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDIzN2Q3ZGU2ODhkZDIwNzY1MDIwMTIxNmNkMGQ1NDY4MGM0OTZlYWEuLmVlNmUxOGNlZmRi
ZTc5ZjRiYzJlYjIxOTdmZjUzOTEwNGUxZjc5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCkBAIC00NjksNyArNDY5LDcgQEAg
YXV0byBTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcEltcGwoc3RkOjp1
bmlxdWVfcHRyPFRlbXBsYXRlT2JqZWMKIHsKICAgICBpZiAoZGVzdCkKICAgICAgICAgcmV0dXJu
ICpkZXN0OwotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZW1wbGF0ZU9iamVj
dE1hcD4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+
KCk7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICBkZXN0ID0gV1RGTW92ZShyZXN1
bHQpOwogICAgIHJldHVybiAqZGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCmluZGV4IDI5M2M0NjQ3MmU3NDg5NDFjYTljYzJhZGFjMTZhM2QyZGM1ZGVl
ZWMuLjAxY2QyYmQ1NDdmZTAyYjUwNDdhNmQ0NWIzYzhhZDZmZDUyYmRiNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtODU2LDcgKzg1Niw3IEBA
IFdhdGNocG9pbnRTZXQqIFN0cnVjdHVyZTo6ZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNo
cG9pbnRTZXQoVk0mIHZtLCBQcm9wZXJ0CiAgICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRh
ID0gdGhpcy0+cmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0
Y2hwb2ludFNldHMpIHsKICAgICAgICAgcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50
U2V0cyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQ
cm9wZXJ0eVdhdGNocG9pbnRNYXA+KCk7CisgICAgICAgICAgICBtYWtlVW5pcXVlPFN0cnVjdHVy
ZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+KCk7CiAgICAgICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7CiAgICAgfQogICAgIGF1dG8gcmVzdWx0ID0gcmFyZURhdGEtPm1fcmVwbGFj
ZW1lbnRXYXRjaHBvaW50U2V0cy0+YWRkKG9mZnNldCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKaW5kZXggOTlh
OGQ5ZjdkYWFjMjE3ZTRjODFlN2U3MTI2ZTljMDJiMzc0ZWQzZi4uZDNjZjE4M2IwZjZkN2M0ODk4
ODAwYWI2OGVlNDhjZDEyOGY3ZmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQg
U3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBWTSYgdm0sIFN0cnVjdHVyCiAgICAgQVNTRVJUKGNvbmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5z
dXJlVmFsaWRpdHkoKSk7CiAgICAgZm9yIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gOiBjb25kaXRpb25TZXQpIHsKICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRpb24oKS5r
aW5kKCkgPT0gUHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKSB7Ci0gICAgICAgICAgICBtX29i
amVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnQ+KGVxdWl2Q29uZGl0aW9uLCB0aGlzKTsKKyAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdB
ZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RUb1N0cmlu
Z0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24s
IHRoaXMpOwogICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1
ZVdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1f
b2JqZWN0VG9TdHJpbmdBZGFwdGl2ZVdhdGNocG9pbnRTZXQuYWRkKGNvbmRpdGlvbiwgdGhpcykt
Pmluc3RhbGwodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwCmluZGV4IDM5MmYyMTdjMTRlZmFlYjU0NWJmMGQ0Zjc3OTBjMTEyNzkzMmJjODUuLmE0
YTg3MGZjMWZjYWQzNWM0Mzk1ZjEwOWIyMmE5OWM0MjBkNzQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBj
b25zdCBTeW1ib2xUYWJsZTo6TG9jYWxUb0VudHJ5VmVjJiBTeW1ib2xUYWJsZTo6bG9jYWxUb0Vu
dHJ5KGNvbnN0IENvbmN1cnJlbnRKUwogICAgICAgICAgICAgICAgIHNpemUgPSBzdGQ6Om1heChz
aXplLCBvZmZzZXQuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSArIDEpOwogICAgICAgICB9CiAgICAg
Ci0gICAgICAgIG1fbG9jYWxUb0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbFRvRW50cnlW
ZWM+KHNpemUsIG51bGxwdHIpOworICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IG1ha2VVbmlxdWU8
TG9jYWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IG1fbWFwKSB7CiAgICAgICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFsdWUu
dmFyT2Zmc2V0KCk7CiAgICAgICAgICAgICBpZiAob2Zmc2V0LmlzU2NvcGUoKSkKQEAgLTE1OSw3
ICsxNTksNyBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2
bSkKICAgICAgICAgcmVzdWx0LT5tX2FyZ3VtZW50cy5zZXQodm0sIHJlc3VsdCwgYXJndW1lbnRz
KTsKICAgICAKICAgICBpZiAobV9yYXJlRGF0YSkgewotICAgICAgICByZXN1bHQtPm1fcmFyZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIHJl
c3VsdC0+bV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAog
ICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlE
TWFwLmJlZ2luKCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBTeW1ib2xUYWJsZTo6cHJlcGFy
ZUZvclR5cGVQcm9maWxpbmcoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKICAgICBpZiAobV9y
YXJlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1
ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX21hcC5i
ZWdpbigpLCBlbmQgPSBtX21hcC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAg
ICBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLnNldChpdGVyLT5rZXksIFR5cGVQcm9maWxlck5l
ZWRzVW5pcXVlSURHZW5lcmF0aW9uKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBDb2RlQmxvY2sqIFN5
bWJvbFRhYmxlOjpyYXJlRGF0YUNvZGVCbG9jaygpCiB2b2lkIFN5bWJvbFRhYmxlOjpzZXRSYXJl
RGF0YUNvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBpZiAoIW1fcmFyZURh
dGEpCi0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFy
ZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFy
ZURhdGE+KCk7CiAKICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fY29kZUJsb2NrKTsKICAgICBt
X3JhcmVEYXRhLT5tX2NvZGVCbG9jay5zZXQoKmNvZGVCbG9jay0+dm0oKSwgdGhpcywgY29kZUJs
b2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNDEw
ZWI2ZDVhZTE2ZjM2MDIyNmRiMzgyM2Y3ZWU4MjhlY2NhYjM4My4uNDFhY2E5ZDNkNGQ5YjhhNTZh
ZTY4NTIzMGU4ZDY2NzUyYWMwZDAyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVNldC5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnBy
b3BlcnR5SGFzaCgpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcHJvdG8tPnByb3BlcnR5SGFz
aCgpKTsKICAgICB9CiAKLSAgICBtX3Byb3BlcnR5SGFzaCA9IHN0ZDo6bWFrZV91bmlxdWU8U3Ry
aW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIG1fcHJvcGVydHlIYXNoID0gbWFrZVVuaXF1
ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgcmV0dXJuICptX3Byb3BlcnR5SGFz
aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDRlMmQwZDMyNGEy
NGUyMzJjZDE5NTM4OTJlZDhiMGEzM2IwYjA1ZWUuLmI3MDkyYzA4ZWY3MmIwZWNhODlmZjBiNWM0
YmUxYWU1OWFhMWRiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI1
MiwxOCArMjUyLDE4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICAsIG1fcnVuTG9vcChDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCiAjZW5kaWYgLy8gVVNFKENG
KQogICAgICwgaGVhcCh0aGlzLCBoZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3Io
c3RkOjptYWtlX3VuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAg
ICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8R2lnYWNhZ2VB
bGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFs
dWVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90
TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVC
dXR0ZXJmbHlIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxB
dHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50
ZXJpb3JQb2ludGVycykpKQotICAgICwgY2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVl
PEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVh
cENlbGw6OkpTQ2VsbCkpKQotICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShzdGQ6
Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlv
biwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKHN0ZDo6bWFr
ZV91bmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmpl
Y3RIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBD
ZWxsVHlwZT4oKSkKKyAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFs
bG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxs
b2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2Fn
ZTo6UHJpbWl0aXZlKSkKKyAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVl
PEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQorICAg
ICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0
cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCisg
ICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5
cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0Nl
bGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQorICAgICwgY2VsbEhlYXBDZWxsVHlwZShtYWtlVW5p
cXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkpTQ2VsbCkpKQorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZSht
YWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkpTQ2VsbCkpKQorICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUobWFrZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxs
VHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+
KCkpCi0gICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlx
dWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5
Q29kZUJsb2NrSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hl
YXBDZWxsVHlwZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUobWFr
ZVVuaXF1ZTxXZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlPigpKQogI2VuZGlmCiAgICAg
LCBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4
aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBwcmltaXRpdmVHaWdh
Y2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCiAgICAgLCBqc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBh
dXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQo
KSkgLy8gSGFzaDoweDI0MWU5NDYKQEAgLTI5Niw3ICsyOTYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZt
VHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2F0b21TdHJpbmdUYWJsZSh2bVR5cGUg
PT0gRGVmYXVsdCA/IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0
b21TdHJpbmdUYWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5
TGlzdChuZXcgQXJnTGlzdCkKLSAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRG
b3JCYXNlbGluZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQorICAgICwgbWFj
aGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKG1ha2VVbmlxdWU8U2lt
cGxlU3RhdHM+KCkpCiAgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykK
ICAgICAsIHN0cmluZ0NhY2hlKCp0aGlzKQogICAgICwgc3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0
aGlzKQpAQCAtMzEyLDggKzMxMiw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICAsIG1faW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCkKICNlbmRpZgogICAg
ICwgbV9zdGFja1BvaW50ZXJBdFZNRW50cnkoMCkKLSAgICAsIG1fY29kZUNhY2hlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29kZUNhY2hlPigpKQotICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoc3RkOjpt
YWtlX3VuaXF1ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0aGlzKSkKKyAgICAsIG1fY29kZUNhY2hl
KG1ha2VVbmlxdWU8Q29kZUNhY2hlPigpKQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMobWFr
ZVVuaXF1ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0aGlzKSkKICAgICAsIG1fdHlwZVByb2ZpbGVy
RW5hYmxlZENvdW50KDApCiAgICAgLCBtX3ByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZChJc1dhdGNo
ZWQpCiAgICAgLCBtX2NvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVkQ291bnQoMCkKQEAgLTQwNyw3
ICs0MDcsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAg
TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKCp0aGlzKTsKICAgICAKICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6dXNlUHJvZmlsZXIoKSkpIHsKLSAgICAgICAgbV9wZXJCeXRlY29kZVBy
b2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKKyAg
ICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJh
c2U+KCp0aGlzKTsKIAogICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBwYXRoT3V0OwogICAgICAg
ICBjb25zdCBjaGFyKiBwcm9maWxlclBhdGggPSBnZXRlbnYoIkpTQ19QUk9GSUxFUl9QQVRIIik7
CkBAIC00MjMsNyArNDIzLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgIC8vIHdvbid0IHVzZSB0aGlzLgogICAgIG1fdHlwZWRBcnJheUNvbnRyb2xsZXIg
PSBhZG9wdFJlZihuZXcgU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CiAKLSAgICBtX2J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnk+KCp0aGlzKTsKKyAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgPSBt
YWtlVW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsKIAogICAgIGlmIChP
cHRpb25zOjp1c2VUeXBlUHJvZmlsZXIoKSkKICAgICAgICAgZW5hYmxlVHlwZVByb2ZpbGVyKCk7
CkBAIC00NDIsOSArNDQyLDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAogICAgIGlmIChPcHRp
b25zOjp1c2VSYW5kb21pemluZ0Z1enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50
KHN0ZDo6bWFrZV91bmlxdWU8UmFuZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAg
ICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxSYW5kb21pemluZ0Z1enplckFnZW50PigqdGhp
cykpOwogICAgIGVsc2UgaWYgKE9wdGlvbnM6OnVzZURvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2Vu
dCgpKQotICAgICAgICBzZXRGdXp6ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPERvdWJsZVByZWRp
Y3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFrZVVu
aXF1ZTxEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAKICAgICBpZiAoT3B0
aW9uczo6YWx3YXlzR2VuZXJhdGVQQ1RvQ29kZU9yaWdpbk1hcCgpKQogICAgICAgICBzZXRTaG91
bGRCdWlsZFBDVG9Db2RlT3JpZ2luTWFwcGluZygpOwpAQCAtNDU3LDkgKzQ1Nyw5IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNpZiBFTkFCTEUoSklUKQogICAg
IC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBzdHVicyB0aGF0IHRoZSBKSVQgaXMgZ29pbmcgdG8gdXNl
IGFyZSBpbml0aWFsaXplZCBpbiBub24tY29tcGlsYXRpb24gdGhyZWFkcy4KICAgICBpZiAoY2Fu
VXNlSklUKCkpIHsKLSAgICAgICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5r
cz4oKTsKKyAgICAgICAgaml0U3R1YnMgPSBtYWtlVW5pcXVlPEpJVFRodW5rcz4oKTsKICNpZiBF
TkFCTEUoRlRMX0pJVCkKLSAgICAgICAgZnRsVGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6
OlRodW5rcz4oKTsKKyAgICAgICAgZnRsVGh1bmtzID0gbWFrZVVuaXF1ZTxGVEw6OlRodW5rcz4o
KTsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5j
dGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1
bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ29uc3RydWN0KTsKQEAgLTYxOSw3ICs2MTksNyBA
QCBXYXRjaGRvZyYgVk06OmVuc3VyZVdhdGNoZG9nKCkKIEhlYXBQcm9maWxlciYgVk06OmVuc3Vy
ZUhlYXBQcm9maWxlcigpCiB7CiAgICAgaWYgKCFtX2hlYXBQcm9maWxlcikKLSAgICAgICAgbV9o
ZWFwUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhlYXBQcm9maWxlcj4oKnRoaXMpOworICAg
ICAgICBtX2hlYXBQcm9maWxlciA9IG1ha2VVbmlxdWU8SGVhcFByb2ZpbGVyPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2hlYXBQcm9maWxlcjsKIH0KIApAQCAtMTA0MSw4ICsxMDQxLDggQEAgc3Rh
dGljIGJvb2wgZGlzYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KHVuc2lnbmVkJiBjb3Vu
dGVyLCBjb25zdCBGdW5jJiBkb0QKIGJvb2wgVk06OmVuYWJsZVR5cGVQcm9maWxlcigpCiB7CiAg
ICAgYXV0byBlbmFibGVUeXBlUHJvZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5t
X3R5cGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyPigpOwotICAgICAg
ICB0aGlzLT5tX3R5cGVQcm9maWxlckxvZyA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVy
TG9nPigqdGhpcyk7CisgICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxU
eXBlUHJvZmlsZXI+KCk7CisgICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gbWFrZVVu
aXF1ZTxUeXBlUHJvZmlsZXJMb2c+KCp0aGlzKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJs
ZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50LCBl
bmFibGVUeXBlUHJvZmlsZXIpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgYm9vbCBWTTo6ZGlzYWJs
ZVR5cGVQcm9maWxlcigpCiBib29sIFZNOjplbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsK
ICAgICBhdXRvIGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAg
ICB0aGlzLT5tX2NvbnRyb2xGbG93UHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xG
bG93UHJvZmlsZXI+KCk7CisgICAgICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9IG1h
a2VVbmlxdWU8Q29udHJvbEZsb3dQcm9maWxlcj4oKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVu
YWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJs
ZWRDb3VudCwgZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcik7CkBAIC0xMDg3LDcgKzEwODcsNyBA
QCB2b2lkIFZNOjpkdW1wVHlwZVByb2ZpbGVyRGF0YSgpCiAKIHZvaWQgVk06OnF1ZXVlTWljcm90
YXNrKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykK
IHsKLSAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRh
c2s+KCp0aGlzLCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgbV9taWNyb3Rh
c2tRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVj
dCwgV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFZNOjpkcmFpbk1pY3JvdGFza3MoKQpAQCAt
MTIzMCwxNCArMTIzMCwxNCBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKIHsKICAg
ICBpZiAobV9zaGFkb3dDaGlja2VuKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zaGFkb3dDaGlj
a2VuID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dDaGlja2VuPigpOworICAgIG1fc2hhZG93Q2hp
Y2tlbiA9IG1ha2VVbmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKIH0KIAogI2RlZmluZSBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBl
KSBcCiAgICAgSXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAg
ICBBU1NFUlQoIW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3Vu
aXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0
eXBlKTsgXAorICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6
OnN0b3JlU3RvcmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7
IFwKICAgICAgICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCkBAIC0xMjY4LDcgKzEyNjgsNyBA
QCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb25TcGFjZSwgY2VsbEhlYQogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xv
dygpIFwKICAgICB7IFwKICAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0
byBzcGFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklU
KGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VV
bmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwg
dHlwZSk7IFwKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMj
bmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCiAgICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNl
OyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcAppbmRleCAyNGYxOGFkMDJkZTJmZWY5MDA5MzQ0ODY0MzBjOThmZTk0OTQyNGVmLi41MzM5
M2NiMjU4Zjc0MmM2YWNmZGRlYWVjNmM3MTc1NjQ0ZDc5NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTQxNyw3ICs0MTcs
NyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAgICAgdm9pZCBlbWl0UGF0Y2hwb2ludChCYXNp
Y0Jsb2NrKiBiYXNpY0Jsb2NrLCBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCwgVG1wIHJlc3Vs
dCwgVmVjdG9yPENvbnN0cmFpbmVkVG1wLCBpbmxpbmVTaXplPiYmIGFyZ3MpCiAgICAgewogICAg
ICAgICBpZiAoIW1fcGF0Y2hwb2ludFNwZWNpYWwpCi0gICAgICAgICAgICBtX3BhdGNocG9pbnRT
cGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBhdGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpKTsKKyAgICAg
ICAgICAgIG1fcGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNw
ZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSkpOwogCiAgICAgICAgIEluc3QgaW5zdChQYXRjaCwgcGF0Y2gsIEFyZzo6c3BlY2lhbCht
X3BhdGNocG9pbnRTcGVjaWFsKSk7CiAgICAgICAgIEluc3QgcmVzdWx0TW92OwpAQCAtNDg3LDcg
KzQ4Nyw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsKIAogICAgICAgICAvLyBGSVhNRTogTWFr
ZSBhIGhhc2htYXAgb2YgdGhlc2UuCiAgICAgICAgIEIzOjpDaGVja1NwZWNpYWw6OktleSBrZXko
YnJhbmNoKTsKLSAgICAgICAgQjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0
PEIzOjpDaGVja1NwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIz
OjpDaGVja1NwZWNpYWw+KGtleSkpKTsKKyAgICAgICAgQjM6OkNoZWNrU3BlY2lhbCogc3BlY2lh
bCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtl
VW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtleSkpKTsKIAogICAgICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoZSBuZWVkIGZvciBkdW1teSB2YWx1ZXMKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDA0MApAQCAtMjEzOSwxMCArMjEzOSwxMCBAQCBh
dXRvIEFpcklSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBCMzo6T3JpZ2luCiAKIEV4cGVjdGVkPHN0
ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGVB
aXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIGNvbnN0IHVpbnQ4X3Qq
IGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlJiBz
aWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9X
YXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUs
IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4
Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5p
cXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRk
ZXJFbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAg
Y29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxD
Q2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2lu
dEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4
dC53YXNtRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAg
QjM6OlByb2NlZHVyZSBwcm9jZWR1cmU7CiAgICAgQ29kZSYgY29kZSA9IHByb2NlZHVyZS5jb2Rl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHAKaW5kZXggMjA5NDE3N2VkNmYxODNhYjRkODYyZWMyMjY3ZDMwZjI4YjdkZTViNi4uMTU4ZGY5
ZmE5ZjBjOWY3MjFhYzI5Mjc3ODE4OGRjZjI4ZTcwN2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMTU1MSwxMCArMTU1MSwx
MCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6Om9yaWdpbigpIC0+IE9yaWdpbgogCiBFeHBlY3RlZDxz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxl
KENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBm
dW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCBD
b21waWxhdGlvbk1vZGUgY29tcGlsYXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBU
aWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9u
KQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9u
PigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwog
Ci0gICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50
cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBp
bGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVs
cGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtl
VW5pcXVlPENDYWxsSGVscGVycz4oKTsKIAogICAgIFByb2NlZHVyZSBwcm9jZWR1cmU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCBmOTg1ZDUyM2My
ZTkzZjNiZDIzZmI3YzU3MTJiNTg2OGNjMTZhNjg1Li41MDZkZjRiZWZkMGQ1NjQxODQ0Y2U1Mjc5
NTExNWY2MTI4NzE2MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBs
YW4uY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBB
YnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNb
ZnVuY3Rpb25JbmRleF0tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEIzOjpDb21waWxhdGlvbj4oCisgICAgICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlv
bnNbZnVuY3Rpb25JbmRleF0tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIz
OjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1
ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0g
JXMgbmFtZSAlcyIsIGZ1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCku
ZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1
bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNj
aWkoKS5kYXRhKCkpLAogICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVu
dHJ5cG9pbnRCeXByb2R1Y3RzKSk7CiAgICAgICAgICAgICB9CkBAIC0zMjcsNyArMzI3LDcgQEAg
dm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAg
IGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9
IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgICAgICAgICAgICAgRklOQUxJ
WkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiRW1iZWRkZXItPldlYkFz
c2VtYmx5IGVudHJ5cG9pbnRbJWldICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1
cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5j
dGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVu
Y3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAg
V1RGTW92ZShjb250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCBj
NTEzZmQyZjUwZWQ2ZmIxN2MzMzg1ZWYyOTA1Mjc4MTczOTIxMDM3Li4wZDdhMDNjMzYxMjljZDFk
ZTJjNTRmZmNkNTAyOTViNTZjNWI4OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9NR1BsYW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21w
aWxhdGlvbkVmZm9ydCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG9tZ0VudHJ5cG9p
bnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisgICAg
b21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigK
ICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAi
V2ViQXNzZW1ibHkgT01HIGZ1bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgbV9mdW5jdGlvbkluZGV4
LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9y
TmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9u
LT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgV1RG
TW92ZShjb250ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAppbmRleCAzNmQ3NGMxNGIxOGM3MDdiODEy
YTA0ODdmOTFlMjljMzg1MzkxZGUyLi42NjBmOTU2NTczOGIxMGEzMGYzZTdjYzgxOGEzMmM4NTg3
ODIxMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xp
c3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAK
QEAgLTIxMCw3ICsyMTAsNyBAQCBXb3JrbGlzdDo6V29ya2xpc3QoKQogICAgIG1fdGhyZWFkcy5y
ZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHMpOwogICAgIExvY2tIb2xk
ZXIgbG9ja2VyKCptX2xvY2spOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJP
ZkNvbXBpbGF0aW9uVGhyZWFkczsgaSsrKQotICAgICAgICBtX3RocmVhZHMudW5jaGVja2VkQXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykpOwor
ICAgICAgICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8V29ya2xpc3Q6OlRo
cmVhZD4obG9ja2VyLCAqdGhpcykpOwogfQogCiBXb3JrbGlzdDo6fldvcmtsaXN0KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAppbmRleCA1ZGQ0NTFiZWE4NGQ1
OTBiYmYwZmNiMDc2ZTI2ZmZkM2NjN2I4MWFjLi43MzUyMjAyODkzN2M2ZGFjMWZjNDczYzdlNGNk
YzY0OTU4Y2U4ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20u
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBj
cmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21wCiB7CiAgICAgQ0Nh
bGxIZWxwZXJzJiBqaXQgPSAqY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJ
VDsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9u
PigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwog
ICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAgICAgLy8gRklYTUUgU3RvcCB1c2lu
ZyAwIGFzIGNvZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjUzMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRl
cnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIu
Y3BwCmluZGV4IDdmMDMzZmVjMWMzNjlhOTQyM2IzM2NmOGViMzMzNGM1MWNlMDgwOGIuLmM0Yjc3
Y2FkYmU1ZWVhNTczZWM4NTJiOTVlZjZhNzg5YjgyODUzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcApAQCAtMTcwNiw3ICsxNzA2LDcgQEAg
Y2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgICAgIGR1bXBEaXNqdW5jdGlvbihtX2JvZHlE
aXNqdW5jdGlvbi5nZXQoKSk7CiAjZW5kaWYKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBh
cmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24p
LCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwogICAg
IH0KIAogICAgIHZvaWQgY2hlY2tJbnB1dCh1bnNpZ25lZCBjb3VudCkKQEAgLTE5MjYsNyArMTky
Niw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5J
ZCA9IHBhcmVudGhlc2VzQmVnaW4uYXRvbS5zdWJwYXR0ZXJuSWQ7CiAKICAgICAgICAgdW5zaWdu
ZWQgbnVtU3VicGF0dGVybnMgPSBsYXN0U3VicGF0dGVybklkIC0gc3VicGF0dGVybklkICsgMTsK
LSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxC
eXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAgICAgICAg
YXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+
KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKIAogICAgICAgICB1bnNpZ25lZCBmaXJz
dFRlcm1JblBhcmVudGhlc2VzID0gYmVnaW5UZXJtICsgMTsKICAgICAgICAgcGFyZW50aGVzZXNE
aXNqdW5jdGlvbi0+dGVybXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbmRUZXJtIC0gZmlyc3RU
ZXJtSW5QYXJlbnRoZXNlcyArIDIpOwpAQCAtMTk5Nyw3ICsxOTk3LDcgQEAgY2xhc3MgQnl0ZUNv
bXBpbGVyIHsKIAogICAgIHZvaWQgcmVnZXhCZWdpbih1bnNpZ25lZCBudW1TdWJwYXR0ZXJucywg
dW5zaWduZWQgY2FsbEZyYW1lU2l6ZSwgYm9vbCBvbmNlVGhyb3VnaCkKICAgICB7Ci0gICAgICAg
IG1fYm9keURpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51
bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24g
PSBtYWtlVW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNp
emUpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpC
b2R5QWx0ZXJuYXRpdmVCZWdpbihvbmNlVGhyb3VnaCkpOwogICAgICAgICBtX2JvZHlEaXNqdW5j
dGlvbi0+dGVybXNbMF0uZnJhbWVMb2NhdGlvbiA9IDA7CiAgICAgICAgIG1fY3VycmVudEFsdGVy
bmF0aXZlSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRl
eCA3YTdjMjA2YzdlNDM1OTdjZmU0YzRkNGRjYThhMDdhYzVhYzFmNjYwLi44YWI2MmI3YmEzOTgx
MDUxZWJiZGFjZDZlNDdhMDU4YWFkZDNkOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcApAQCAtMzg5OSw3ICszODk5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9u
czo6ZHVtcFJlZ0V4cERpc2Fzc2VtYmx5KCkpKQotICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnJEaXNhc3NlbWJsZXI+KHRoaXMpOworICAgICAgICAgICAg
bV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPFlhcnJEaXNhc3NlbWJsZXI+KHRoaXMpOwogCiAg
ICAgICAgIGlmIChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5z
ZXRTdGFydE9mQ29kZShsYWJlbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmNwcAppbmRleCA0OWY3N2Y2OWM2ODVjNjUyMDNkZjNmMDM0YzkwZDE4NzdjOTJkYzli
Li5mY2M1MWIyNzdmNTAxMTAzYjdjNjViYmQzM2E1Y2E0MTBkODFjMGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgY2xh
c3MgQ2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvciB7CiAgICAgewogICAgICAgICBjb2FsZXNjZVRh
YmxlcygpOwogCi0gICAgICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVl
PENoYXJhY3RlckNsYXNzPigpOworICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVu
aXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKIAogICAgICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRj
aGVzLnN3YXAobV9tYXRjaGVzKTsKICAgICAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLnN3
YXAobV9yYW5nZXMpOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3Ry
dWN0b3IgewogICAgICAgICAsIG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmln
bm9yZUNhc2UoKSwgcGF0dGVybi51bmljb2RlKCkgPyBDYW5vbmljYWxNb2RlOjpVbmljb2RlIDog
Q2Fub25pY2FsTW9kZTo6VUNTMikKICAgICAgICAgLCBtX3N0YWNrTGltaXQoc3RhY2tMaW1pdCkK
ICAgICB7Ci0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1
bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5j
dGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CiAgICAgICAg
IG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX3Bh
dHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoYm9keSkpOwpAQCAtNDU2LDcgKzQ1
Niw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICBtX3BhdHRlcm4u
cmVzZXRGb3JSZXBhcnNpbmcoKTsKICAgICAgICAgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9y
LnJlc2V0KCk7CiAKLSAgICAgICAgYXV0byBib2R5ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJu
RGlzanVuY3Rpb24+KCk7CisgICAgICAgIGF1dG8gYm9keSA9IG1ha2VVbmlxdWU8UGF0dGVybkRp
c2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9keS5nZXQoKTsKICAg
ICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgICAg
IG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShib2R5KSk7CkBAIC02MDgs
NyArNjA4LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgQVNTRVJUKCFvcHRHcm91cE5hbWUpOwogCi0gICAgICAgIGF1dG8gcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9u
PihtX2FsdGVybmF0aXZlKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0g
bWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBt
X2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlw
ZVBhcmVudGhlc2VzU3VicGF0dGVybiwgc3VicGF0dGVybklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uLmdldCgpLCBjYXB0dXJlLCBmYWxzZSkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0
ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKHBhcmVudGhlc2VzRGlzanVuY3Rpb24p
KTsKQEAgLTYxNiw3ICs2MTYsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKIAog
ICAgIHZvaWQgYXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbihib29sIGludmVydCA9IGZh
bHNlKQogICAgIHsKLSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBh
dXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlv
bj4obV9hbHRlcm5hdGl2ZSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5k
KFBhdHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbiwgbV9w
YXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgKyAxLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgp
LCBmYWxzZSwgaW52ZXJ0KSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX2ludmVydFBhcmVudGhl
dGljYWxBc3NlcnRpb24gPSBpbnZlcnQ7CkBAIC03MDcsNyArNzA3LDcgQEAgY2xhc3MgWWFyclBh
dHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVy
bmF0aXZlID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCk7CiAgICAgICAg
ICAgICBpZiAoIWZpbHRlclN0YXJ0c1dpdGhCT0wgfHwgIWFsdGVybmF0aXZlLT5tX3N0YXJ0c1dp
dGhCT0wpIHsKICAgICAgICAgICAgICAgICBpZiAoIW5ld0Rpc2p1bmN0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlz
anVuY3Rpb24+KCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gbWFrZVVu
aXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1
bmN0aW9uLT5tX3BhcmVudCA9IGRpc2p1bmN0aW9uLT5tX3BhcmVudDsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBuZXdBbHRlcm5hdGl2ZSA9
IG5ld0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgpOwpAQCAtMTQ3Myw3ICsxNDczLDcg
QEAgdm9pZCBZYXJyUGF0dGVybjo6ZHVtcFBhdHRlcm4oUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
U3RyaW5nJiBwYXR0ZXJuU3RyaW5nKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+
IGFueWNoYXJDcmVhdGUoKQogewotICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPigpOworICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtl
VW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5h
cHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgwMCwgMHg3ZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5t
X3Jhbmdlc1VuaWNvZGUuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MDA4MCwgMHgxMGZmZmYpKTsK
ICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9jaGFyYWN0ZXJXaWR0aHMgPSBDaGFyYWN0ZXJDbGFzc1dp
ZHRoczo6SGFzQm90aEJNUEFuZE5vbkJNUDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5oCmluZGV4IDBiN2RiMmViYThhZDUyZGVkMmI1ZjdlNjdlNTQ1YjhjMTZjOTQ1Yzcu
LjdlODJjODU1YTg3OGU2YzE4MGVkNTIxZjFmN2FkNDhkOGMxZmJhYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaApAQCAtMzQxLDcgKzM0MSw3IEBAIHN0cnVjdCBQ
YXR0ZXJuRGlzanVuY3Rpb24gewogICAgIAogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWRkTmV3
QWx0ZXJuYXRpdmUoKQogICAgIHsKLSAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8UGF0dGVybkFsdGVybmF0aXZlPih0aGlzKSk7CisgICAgICAgIG1fYWx0ZXJu
YXRpdmVzLmFwcGVuZChtYWtlVW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOwogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGF0dGVybkFsdGVybmF0aXZlKj4obV9hbHRlcm5hdGl2
ZXMubGFzdCgpLmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9jcmVhdGVfcmVnZXhfdGFibGVzCmluZGV4IGMxZjlmOTlkZTA5MWNlY2IyZTFkYjU1YzM4ZmEz
NjAzMTFlZTM3ZjQuLjY5Y2Q4ODg2NTc4NTRjZDU0NDVmODYzZTIyZDU1ZmZiOWM0MGVmZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwpAQCAt
OTUsMTEgKzk1LDExIEBAIGZvciBuYW1lLCBjbGFzc2VzIGluIHR5cGVzLml0ZW1zKCk6CiAgICAg
ZnVuY3Rpb24gKz0gKCJ7XG4iKQogICAgIGlmIGVtaXRUYWJsZXMgYW5kIGNsYXNzZXNbIlVzZVRh
YmxlIl06CiAgICAgICAgIGlmICJJbnZlcnNlIiBpbiBjbGFzc2VzOgotICAgICAgICAgICAgZnVu
Y3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hh
cmFjdGVyQ2xhc3M+KF8lc0RhdGEsIHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQor
ICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VV
bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZl
cnNlIl0pKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0
byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0Rh
dGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBh
dXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwg
ZmFsc2UpO1xuIiAlIChuYW1lKSkKICAgICBlbHNlOgotICAgICAgICBmdW5jdGlvbiArPSAoIiAg
ICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4o
KTtcbiIpCisgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBt
YWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpO1xuIikKICAgICBoYXNCTVBDaGFyYWN0ZXJzID0g
RmFsc2UKICAgICBoYXNOb25CTVBDaGFyYWN0ZXJzID0gRmFsc2UKICAgICBmb3IgKG1pbiwgbWF4
KSBpbiByYW5nZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5l
cmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkKaW5kZXggZjlmZWY0Njhk
MmI1ZGRhNmFhZWVhYjBiM2ZjMDU4Y2QzZWVjZWFjMS4uNTI2ZmI2ZTdhYzNhMjI3YTZkNDNjYmJl
ZmQyNzAyZDFhMGM1NGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
Z2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQpAQCAtNTI5
LDcgKzUyOSw3IEBAIGRlZiBkdW1wTWF0Y2hEYXRhKHNlbGYsIGZpbGUsIHZhbHVlc1BlckxpbmUs
IGRhdGFMaXN0LCBmb3JtYXR0ZXIpOgogICAgIGRlZiBkdW1wKHNlbGYsIGZpbGUsIGNvbW1hQWZ0
ZXIpOgogICAgICAgICBmaWxlLndyaXRlKCJzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENoYXJhY3Rl
ckNsYXNzPiB7fSgpXG57e1xuIi5mb3JtYXQoc2VsZi5nZXRDcmVhdGVGdW5jTmFtZSgpKSkKICAg
ICAgICAgZmlsZS53cml0ZSgiICAgIC8vIE5hbWUgPSB7fSwgbnVtYmVyIG9mIGNvZGVQb2ludHM6
IHt9XG4iLmZvcm1hdChzZWxmLm5hbWUsIHNlbGYuY29kZVBvaW50Q291bnQpKQotICAgICAgICBm
aWxlLndyaXRlKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hh
cmFjdGVyQ2xhc3M+KFxuIikKKyAgICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVy
Q2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPihcbiIpCiAgICAgICAgIGZpbGUud3Jp
dGUoIiAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PFVDaGFyMzI+KCIpCiAgICAgICAgIHNl
bGYuZHVtcE1hdGNoRGF0YShmaWxlLCA4LCBzZWxmLm1hdGNoZXMsIGxhbWJkYSBmaWxlLCBtYXRj
aDogKGZpbGUud3JpdGUoInswOjA9IzR4fSIuZm9ybWF0KG1hdGNoKSkpKQogICAgICAgICBmaWxl
LndyaXRlKCIpLFxuIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFp
cm5lc3NUZXN0LmNwcCBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNw
cAppbmRleCBjYzcwN2RlM2ZmNGVjMTM4Y2ZhNDZhYjRjOGUxM2FiYjY1OTNjYmExLi44Yzk3YzFh
MjQxYjcyOWFmOGYzMWYzNTljN2Y1MTc3YTYzNDA5ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAKKysrIGIvU291cmNlL1dURi9iZW5jaG1h
cmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCkBAIC02MSw4ICs2MSw4IEBAIHN0cnVjdCBCZW5jaG1h
cmsgewogICAgIHN0YXRpYyB2b2lkIHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKICAgICAg
ICAgTG9ja1R5cGUgbG9jazsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNv
dW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PHVuc2lnbmVkW10+KG51bVRocmVhZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRy
PFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJl
ZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZHMpOwogICAgIAogICAgICAgICB2b2xhdGlsZSBib29s
IGtlZXBHb2luZyA9IHRydWU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFy
a3MvTG9ja1NwZWVkVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVz
dC5jcHAKaW5kZXggZjE1NjUwZDRjOWM4ZmE2NzcwZjg5MTJmMDlkZmUzOTI5MTMwN2MzNC4uYmU3
YWJhMzkwZWI1M2UzNTgxZTM2ZjRhOGI5NTAwZDBlMjk5Zjk5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvYmVuY2ht
YXJrcy9Mb2NrU3BlZWRUZXN0LmNwcApAQCAtNzQsOSArNzQsOSBAQCBzdHJ1Y3QgQmVuY2htYXJr
IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KICAgICBzdGF0aWMgdm9pZCBydW4o
Y29uc3QgY2hhciogbmFtZSkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFk
ZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPExv
Y2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0
aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8
ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVm
UHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5b
XT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3VwKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRHcm91
cHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3b3Jk
cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdpdGhQYWRkaW5nPGRvdWJsZT5b
XT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJl
YWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8
VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAg
ICAgIHZvbGF0aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZl
Y3Rvci5oCmluZGV4IDBiNTQxYjhjNzNkMGY1OTg2NTFiZjk1ZTc2OTNiODA3Yzk5OWY3OGEuLjg4
NGVkNzMyMzM3NjFhMjlmYjQ5NmYwYWQwOTg5Njc1NDVlNzAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJy
ZW50VmVjdG9yLmgKQEAgLTI1NCw3ICsyNTQsNyBAQCBjbGFzcyBDb25jdXJyZW50VmVjdG9yIGZp
bmFsIHsKICAgICB2b2lkIGFsbG9jYXRlU2VnbWVudCgpCiAgICAgewogICAgICAgICBtX3NlZ21l
bnRzLmdyb3cobV9udW1TZWdtZW50cyArIDEpOwotICAgICAgICBtX3NlZ21lbnRzW21fbnVtU2Vn
bWVudHMrK10gPSBzdGQ6Om1ha2VfdW5pcXVlPFNlZ21lbnQ+KCk7CisgICAgICAgIG1fc2VnbWVu
dHNbbV9udW1TZWdtZW50cysrXSA9IG1ha2VVbmlxdWU8U2VnbWVudD4oKTsKICAgICB9CiAKICAg
ICBzaXplX3QgbV9zaXplIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRUYXNrSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5k
bGVyLmNwcAppbmRleCA4M2MyMDc1MWY4NWY0ZTRkMjAxNTYxNDQxY2E4MzE0MWNiNWMzN2ZmLi5j
NjNjMDU1YTBhMDM0MWRmNmE1YWYyNzBhNGFjY2I4ZDU3ZDc4NDNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENyb3Nz
VGhyZWFkVGFza0hhbmRsZXI6OnRhc2tSdW5Mb29wKCkKIAogICAgIHdoaWxlICghbV90YXNrUXVl
dWUuaXNLaWxsZWQoKSkgewogICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJhaW5lZFBvb2wg
PT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNlKSA/IHN0ZDo6bWFrZV91bmlxdWU8QXV0
b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxB
dXRvZHJhaW5lZFBvb2w+IGF1dG9kcmFpbmVkUG9vbCA9IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9
PSBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpVc2UpID8gbWFrZVVuaXF1ZTxBdXRvZHJhaW5l
ZFBvb2w+KCkgOiBudWxscHRyOwogCiAgICAgICAgICAgICBtX3Rhc2tRdWV1ZS53YWl0Rm9yTWVz
c2FnZSgpLnBlcmZvcm1UYXNrKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCBlZmVm
YjNhMzEzM2U4M2Y2NDMzNmZkMmVjMmRhNTJhNTQ4MzJlNjIxLi45NWI2NzU5NzJkMzEwZTNkZGJk
NDEzZDRhOGY4ZDEyODhmMjBmYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFs
bG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0zMDEsOSArMzAxLDEx
IEBAIHVzaW5nIFdURjo6ZmFzdEFsaWduZWRGcmVlOwogI2RlZmluZSBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRCBcCiBwdWJsaWM6IFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwK
K3R5cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVm
IGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCiAKICNkZWZp
bmUgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEIFwKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiB0eXBl
ZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIGIvU291cmNlL1dURi93
dGYvRmlsZVByaW50U3RyZWFtLmNwcAppbmRleCAzZTI1M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFl
ZmM3Y2E3OWI2NGVhLi43MDc0YzAzYWJhZjhmY2YzOTc3ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEZpbGVQcmludFN0cmVhbT4gRmlsZVByaW50U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIq
IGZpbGVuYW1lLCBjb24KICAgICBpZiAoIWZpbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxGaWxlUHJpbnRTdHJlYW0+KGZpbGUpOwogfQogCiB2b2lkIEZp
bGVQcmludFN0cmVhbTo6dnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlz
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0
Zi9GdW5jdGlvbi5oCmluZGV4IDA1ZTM2OTc4MjViYzNkMzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4
M2UuLjBiNzk1ODY3NDgwZmQwMzIyNDEyNDU0ZTdkMGFmODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24u
aApAQCAtNjcsMTEgKzY3LDExIEBAIGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6Omlz
X2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlw
ZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2
YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAg
ICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxl
V3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsg
fQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJs
ZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYg
c3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlw
ZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0g
ICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxh
YmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9Cisg
ICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIobWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3Jh
cHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CiAKICAgICBP
dXQgb3BlcmF0b3IoKShJbi4uLiBpbikgY29uc3QKICAgICB7CkBAIC04NCwxNCArODQsMTQgQEAg
Y2xhc3MgRnVuY3Rpb248T3V0KEluLi4uKT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxh
YmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRl
cjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2
YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rp
b24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKICAgICB7Ci0gICAgICAgIG1f
Y2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBl
cjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CisgICAgICAg
IG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxD
YWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUs
IGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9u
VHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9p
bnRlcjxGdW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBv
cGVyYXRvcj0oRnVuY3Rpb25UeXBlIGYpCiAgICAgewotICAgICAgICBtX2NhbGxhYmxlV3JhcHBl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBl
LCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0g
bWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGYpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFi
bGUuaAppbmRleCAzYjFlOTUzMDNkZTU0MDUxNDNmYjU2M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQw
NzdmODRmMDJhMWZhMWMxYmUwMzRhODZlYjM1MGQ2ZDdmNDljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAt
NTg4LDEwICs1ODgsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291
bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRv
cnMoMCkKLSAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAg
ICAgLCBtX211dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRB
QkxFX1NUQVRTX1BFUl9UQUJMRQotICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxT
dGF0cz4oKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYK
ICAgICB7CiAgICAgfQpAQCAtMTMzNCwxMCArMTMzNCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMK
ICAgICAgICAgLCBtX2l0ZXJhdG9ycyhudWxscHRyKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjpt
YWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigp
KQogI2VuZGlmCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwg
bV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCisgICAgICAg
ICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAjZW5kaWYKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXplKCk7CkBAIC0x
MzgyLDcgKzEzODIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgSGFzaFRhYmxlPEtl
eSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpI
YXNoVGFibGUoSGFzaFRhYmxlJiYgb3RoZXIpCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9S
UwogICAgICAgICA6IG1faXRlcmF0b3JzKG51bGxwdHIpCi0gICAgICAgICwgbV9tdXRleChzdGQ6
Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+
KCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDllODcyMGY2ZDlh
Nzk4MGI5NWU1YjEzYzVlNjU1YzM4OTQ5MzA0YjUuLjUzNzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUw
ZDZhMThjNWQ5ZmVjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cApAQCAtNjksNyArNjksNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxk
VXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKGJvb2wgdXNlKQogICAgIH0KIAogICAgIGlmICh1c2Up
IHsKLSAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29w
OjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CisgICAgICAgIG1f
bWVhc3VyZW1lbnRUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1
cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwogICAgICAgICBtX21lYXN1cmVtZW50VGltZXItPnN0
YXJ0UmVwZWF0aW5nKDMwX3MpOwogICAgIH0gZWxzZQogICAgICAgICBtX21lYXN1cmVtZW50VGlt
ZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlm
MTljM2MxZmMxZmRjNTdhYjRkNGFiLi5kZWY4MzQwZTNjOGFjYzg1ODZkYTRmMDBiYjhlOWRjNTZl
MDEzZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtNTY1LDYgKzU2NSwyNCBAQCBjb25zdGV4
cHIgc2l6ZV90IGNseih1aW50MzJfdCB2YWx1ZSwgWmVyb1N0YXR1cyBtaWdodEJlWmVybyA9IFpl
cm9TdGF0dXM6Ok1heUJlWgogCiB9IC8vIG5hbWVzcGFjZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0
eXBlKGF1dG8pIG1ha2VVbmlxdWUoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6X19mYXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZh
bHVlKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pOworfQorCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgorQUxXQVlT
X0lOTElORSBkZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjayhB
cmdzJiYuLi4gYXJncykKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZGVm
aW5lIFdURk1vdmUodmFsdWUpIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFs
dWUpCiAKIHVzaW5nIFdURjo6S0I7CkBAIC01ODUsMyArNjAzLDUgQEAgdXNpbmcgV1RGOjptZXJn
ZURlZHVwbGljYXRlZFNvcnRlZDsKIHVzaW5nIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjsKIHVz
aW5nIFdURjo6c2FmZUNhc3Q7CiB1c2luZyBXVEY6OnRyeUJpbmFyeVNlYXJjaDsKK3VzaW5nIFdU
Rjo6bWFrZVVuaXF1ZTsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL1N0cmVhbUJ1ZmZlci5oCmluZGV4IDI2YmJjOGZkNjdhNDkzNDYzMjIxZDYxOTYxOGVi
N2M2NDY4NjQwMzAuLmNhMzNmODY3ZDM4YjU3NTkyMDE0MWQ1MjNjMzA3YWFlN2M4MjBiNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1N0cmVhbUJ1ZmZlci5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFN0cmVhbUJ1ZmZlciB7
CiAgICAgICAgIG1fc2l6ZSArPSBzaXplOwogICAgICAgICB3aGlsZSAoc2l6ZSkgewogICAgICAg
ICAgICAgaWYgKCFtX2J1ZmZlci5zaXplKCkgfHwgbV9idWZmZXIubGFzdCgpLT5zaXplKCkgPT0g
QmxvY2tTaXplKQotICAgICAgICAgICAgICAgIG1fYnVmZmVyLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEJsb2NrPigpKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQobWFrZVVuaXF1
ZTxCbG9jaz4oKSk7CiAgICAgICAgICAgICBzaXplX3QgYXBwZW5kU2l6ZSA9IHN0ZDo6bWluKEJs
b2NrU2l6ZSAtIG1fYnVmZmVyLmxhc3QoKS0+c2l6ZSgpLCBzaXplKTsKICAgICAgICAgICAgIG1f
YnVmZmVyLmxhc3QoKS0+YXBwZW5kKGRhdGEsIGFwcGVuZFNpemUpOwogICAgICAgICAgICAgZGF0
YSArPSBhcHBlbmRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRleCA3M2U5ZGZlYzA2ZmQ3ODdmM2IwNmIz
ZGM5ZGE2NWE1NTA0ZDFjMDI5Li42NTkxMjUxYjg2MjdkZjM2Y2YyZWI5Zjc0NzkzZWY0ODljYTFl
OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9VbmlxdWVSZWYuaApAQCAtMzMsMTEgKzMzLDE4IEBAIG5hbWVzcGFjZSBXVEYgewog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVlUmVmOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBjbGFzcy4uLiBBcmdzPgotVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4u
IGFyZ3MpCitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2so
QXJncyYmLi4uIGFyZ3MpCiB7CiAgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNz
Li4uIEFyZ3M+CitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK3sK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0
ZWRDbGFzcywgaW50Pjo6dmFsdWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgVW5pcXVlUmVmIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzcw
LDcgQEAgY2xhc3MgVW5pcXVlUmVmIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5p
cXVlUHRyKCkgeyByZXR1cm4gV1RGTW92ZShtX3JlZik7IH0KIAogcHJpdmF0ZToKLSAgICB0ZW1w
bGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlx
dWVSZWYoQXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBm
cmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFy
Z3MmJi4uLik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsK
IAogICAgIFVuaXF1ZVJlZihUJiBvdGhlcikKQEAgLTc5LDMgKzg2LDQgQEAgY2xhc3MgVW5pcXVl
UmVmIHsKIAogdXNpbmcgV1RGOjpVbmlxdWVSZWY7CiB1c2luZyBXVEY6Om1ha2VVbmlxdWVSZWY7
Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9nbGliL1J1bkxvb3BHTGliLmNwcAppbmRleCA1ZTViYThhYmViZGJkNDliYmI4MzdkZDRjNGZk
NjliZDZmZmMzNjFmLi5mYjIxMWQwYTI5NjFkZmMxNmFhNmUyMWEyMWE5NzRkZmYxNTI2OTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQg
UnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCiAgICAgZ19zb3VyY2Vfc2V0X25hbWUoc291cmNlLmdldCgpLCAiW1dlYktp
dF0gUnVuTG9vcCBkaXNwYXRjaEFmdGVyIik7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUo
c291cmNlLmdldCgpLCBnX2dldF9tb25vdG9uaWNfdGltZSgpICsgZHVyYXRpb24ubWljcm9zZWNv
bmRzQXM8Z2ludDY0PigpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29u
dGV4dD4gY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGF0Y2hBZnRlckNvbnRleHQ+KFdU
Rk1vdmUoZnVuY3Rpb24pKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRl
eHQ+IGNvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BhdGNoQWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1
bmN0aW9uKSk7CiAgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKHNvdXJjZS5nZXQoKSwgW10oZ3Bv
aW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERp
c3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0KHN0YXRpY19jYXN0PERpc3BhdGNoQWZ0ZXJDb250
ZXh0Kj4odXNlckRhdGEpKTsKICAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCmluZGV4IGRjYmEwNjA4MmM1ZjY2ZTMxOWExNWVlNTk3ZmM2NDk3
NjZiMDVlNmMuLjViZjRlNmQwMWRlODQzZWQyODc4ODNlYTNhMDNlODQ5NDkzYmVjZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIGNsYXNzIFN0cmlu
Z1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsIHsKIH07CiAKIFN0cmluZ1Zp
ZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5p
cXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBXVEY6Om51bGxvcHQg
OiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQorICAgIDogbV9pbXBsKG1h
a2VVbmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IFdURjo6bnVs
bG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+KE5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGlj
YXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBmZGI4Y2Uy
OTJkNzM4ZGE0MjAzOGFhOTY1YWYzYWNhMTc4YTgwY2ViLi44ZGM3NmZhMmU1OWVhNjdlMDIxNzM4
YzMxMWEzNTc3ZjRkMzZlNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZl
c3RQYXJzZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBh
cnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eUludmFsaWRVUkwoY29uc3QgU3RyaW5nJiBwcm9wCiB2
b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX2NvbnNvbGVDb250ZXh0KQotICAgICAgICBt
X2NvbnNvbGVDb250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KEpTQzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVz
c2FnZVR5cGU6OkxvZywgSlNDOjpNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBh
cnNpbmcgYXBwbGljYXRpb24gbWFuaWZlc3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAi
OiAiX3MsIG1lc3NhZ2UpKSk7CisgICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVN
ZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdl
U291cmNlOjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6
V2FybmluZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1f
bWFuaWZlc3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVzc2FnZSkpKTsKIH0KIAogVVJMIEFwcGxp
Y2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlU3RhcnRVUkwoY29uc3QgSlNPTjo6T2JqZWN0JiBt
YW5pZmVzdCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCmluZGV4IDliZmE1Zjk0OTk0YjA1NDUw
NmI4MjZhMzE0YjgyNTgyN2VhNDFhZGIuLjdlNGY3OTQ3MWUyYzU5ZmU3MWMxNDgxMzJmNGI1NTFk
OGZmYzc5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmln
YXRvckJlYWNvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdh
dG9yQmVhY29uLmNwcApAQCAtNTIsNyArNTIsNyBAQCBOYXZpZ2F0b3JCZWFjb24qIE5hdmlnYXRv
ckJlYWNvbjo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKICAgICBhdXRvKiBzdXBwbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yQmVhY29uKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+
Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1l
bnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZp
Z2F0b3JCZWFjb24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0b3IpOwogICAgICAgICBzdXBwbGVtZW50
ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAppbmRleCA1ZWQx
ZjVjY2E2NDFlYjA0ZWMwZTBhMGNlMDZjODM3MjQ1NjhhMmZmLi42MTUzOTQzMGRmYjk2MTZmZDI4
OGZlZDkyY2I5NDRmZjQ0NmIwMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIERPTVdpbmRvd0NhY2hl
cyogRE9NV2luZG93Q2FjaGVzOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIGF1dG8q
IHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dDYWNoZXMqPihTdXBwbGVtZW50PERP
TVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
RE9NV2luZG93Q2FjaGVzPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9
IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1l
bnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAK
aW5kZXggMDY1NmJlZjBiMTcxOGUzM2RiYzdmYTBlZTYwYzU3ZDQ4ZTM4ZDRlOC4uNTExOGE0ODg1
MGYyNDJkMDQ0ZDNiNDBmZjBlM2IyM2JiOTZlMjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMqIFdvcmtlckdsb2JhbFNjb3BlQ2Fj
aGVzOjpmcm9tKFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkKIHsKICAgICBhdXRvKiBzdXBwbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGVDYWNoZXMqPihTdXBwbGVtZW50PFdv
cmtlckdsb2JhbFNjb3BlPjo6ZnJvbSgmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBp
ZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUNhY2hlcz4oc2NvcGUpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCmluZGV4IDcxZjQz
OGNmNzg2Yzc2ZDdiNTg3MjE1NTk3NjY4YjYyMzYxYjU5OTMuLjExODFiZDk4NWEyMmJhNDkzZjgz
NjMxZDdlNDFmZWU4NzliNTZiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlh
bHMuY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBOYXZpZ2F0b3JD
cmVkZW50aWFsczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JD
cmVkZW50aWFscyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckNyZWRlbnRpYWxz
Kj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUo
KSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckNyZWRlbnRpYWxzPigpOworICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckNyZWRlbnRpYWxzPigpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggYjZmZDY4ZDY3MmVkZTM4Nzc4YzE1YzZmZWFh
ZjQ2YjQ1NWU1YTFjZC4uNzVlZGI2YTkzNjM4ODBlNTg3YzM1NzU2YjE0ZGVjOWY5YjQ1ZTY5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgT3B0aW9uYWw8VmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4g
SW5pdERhdGEKICAgICAgICAgYXV0byBzeXN0ZW1JRCA9IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGVla1N5c3RlbUlEKHZpZXcsIG9mZnNldCk7CiAjaWYgSEFWRShGQUlS
UExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgICAgICBpZiAoc3lzdGVtSUQgPT0gSVNP
RmFpclBsYXlTdHJlYW1pbmdQc3NoQm94OjpmYWlyUGxheVN5c3RlbUlEKCkpIHsKLSAgICAgICAg
ICAgIGF1dG8gZnBzUHNzaCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQ
c3NoQm94PigpOworICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gbWFrZVVuaXF1ZTxJU09GYWly
UGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CiAgICAgICAgICAgICBpZiAoIWZwc1Bzc2gtPnJlYWQo
dmlldywgb2Zmc2V0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
ICAgICAgICAgcHNzaEJveGVzLmFwcGVuZChXVEZNb3ZlKGZwc1Bzc2gpKTsKQEAgLTE0Miw3ICsx
NDIsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0
ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKHN5c3RlbUlEKTsKICNlbmRpZgotICAgICAgICBhdXRvIHBzc2hCb3ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKKyAgICAgICAg
YXV0byBwc3NoQm94ID0gbWFrZVVuaXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g+KCk7CiAgICAgICAgIGlmICghcHNzaEJveC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKaW5kZXgg
ODI2Mjg5M2ZlMGFmOTk5MTRlZDM5ZTk2MGNmMTBhNzUzNDA3MDViNi4uODM3ZGYxMjNhZTU5NmYz
NTM3YzkxNTI3MDNlM2QyNzFiMzQ2ZWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCkBAIC02MSwx
NSArNjEsMTUgQEAgc3RydWN0IENETUZhY3Rvcnkgewogc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5
Kj4mIGluc3RhbGxlZENETUZhY3RvcmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gY2RtcyA9IG1h
a2VOZXZlckRlc3Ryb3llZChWZWN0b3I8Q0RNRmFjdG9yeSo+IHsKLSAgICAgICAgbmV3IENETUZh
Y3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5
Q0RNUHJpdmF0ZUNsZWFyS2V5PihjZG0pOyB9LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShM
ZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJL
ZXk+KGNkbSk7IH0sCiAgICAgICAgICAgICBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBv
cnRzS2V5U3lzdGVtLCBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVt
QW5kTWltZVR5cGUpLAogCiAgICAgICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHNwZWNpZmljIFVB
IENETXMuIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzE4LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEw
OTMyMAotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCisgICAgICAg
IG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENE
TVByaXZhdGVNZWRpYVBsYXllcj4oY2RtKTsgfSwKICAgICAgICAgICAgIENETVByaXZhdGVNZWRp
YVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9y
dHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICNpZiAoSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9O
KSB8fCBIQVZFKEFWU1RSRUFNU0VTU0lPTikpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAg
ICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KGNkbSk7IH0sCisgICAgICAgIG5l
dyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KGNkbSk7IH0sCiAgICAgICAgICAgICBDRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAjZW5kaWYKICAgICB9
KTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNPiBMZWdhY3lD
RE06OmNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICBpZiAoIXN1cHBvcnRzS2V5
U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNPihrZXlTeXN0ZW0pOworICAgIHJldHVybiBtYWtl
VW5pcXVlPExlZ2FjeUNETT4oa2V5U3lzdGVtKTsKIH0KIAogTGVnYWN5Q0RNOjpMZWdhY3lDRE0o
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCmluZGV4IDQ1OGVjNTNiNDMz
N2IxNzEwNTU2ZjhhMTdiNGVmMDFlZmNlMTU2NGUuLmZiNWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1
ZmUwYTVlODk2NDA2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCkBAIC01MCw3ICs1MCw4IEBAIGNsYXNz
IExlZ2FjeUNETUNsaWVudCB7CiAgICAgdmlydHVhbCBSZWZQdHI8TWVkaWFQbGF5ZXI+IGNkbU1l
ZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNETSopIGNvbnN0ID0gMDsKIH07CiAKLWNsYXNzIExlZ2Fj
eUNETSB7CitjbGFzcyBMZWdhY3lDRE0gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaAppbmRleCAwYThkNTRlNWM1NjVm
MzQ1MDg1NjJjNWE4YzFlMDAzNWFmMTRhNzRmLi5mMjQ5NzA3MmU3ODU3NjBjNTllMjMwMzkzNGZi
N2Y5Y2M0NzcyZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCkBAIC0zNSw2ICsz
NSw3IEBAIGNsYXNzIExlZ2FjeUNETVNlc3Npb247CiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xp
ZW50OwogCiBjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlSW50ZXJmYWNlKCkgPSBkZWZhdWx0Owog
ICAgIHZpcnR1YWwgfkNETVByaXZhdGVJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAppbmRleCBjOTMxNmRmZDhhYmI0
MDU0OTJmNTU1ZWIzZDFiM2QwOTE3Y2VmZjUwLi4zYThjMDBmNTIzMWY1MmE2ZTg5ZDE4M2QxNTEx
YzNhYzg3NzNhMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVh
cktleS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogc3RkOjp1bmlxdWVf
cHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vz
c2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkNsZWFyS2V5PihjbGllbnQpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPENETVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vz
c2lvbkNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaAppbmRleCAyZjdiMDM1MzllZjhlYTQ3NGUy
MzZkMDVkOWUxN2ZlYzQ4NGU2MjdlLi5kOGE0NDliMWJlZTQ0ZTI1OTI3NDgyZjQwYmNmYjJjNmJj
MzgwOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaApA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENETVNlc3Np
b25DbGVhcktleSA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKK2NsYXNzIENETVNlc3Npb25D
bGVhcktleSBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKIHB1YmxpYzoKICAgICBD
RE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwg
fkNETVNlc3Npb25DbGVhcktleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBhZGRjNTQ4OTZiOGE0NDM4Y2ZiZmQwNjU4MGFkYmM4
NjBhODFmODY0Li5kYjYzOTBlN2Y5OTI1OTc3Yjg3Y2EwMDllZGFiZDUxY2RiNjY3MzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAt
MjQ0LDcgKzI0NCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKGNvbnN0IEJsb2Im
IGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikKICAgICB9CiAKICAgICBtX2Jsb2JM
b2FkZXIuZW1wbGFjZSgqdGhpcyk7Ci0gICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1lcik7CisgICAgbV9i
bG9iTG9hZGVyLT5sb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVy
LCBjb25zdW1lcik7CiAKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CiAgICAgaWYgKCFtX2Jsb2JMb2FkZXItPmxvYWRlci0+
aXNTdGFydGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCmluZGV4IGNkMzQ1ZWI5ZWMzNDBjMzZlMGYwYTZlZWQ4MmRkOTg4YjRmOTdkMzku
Ljk0MDEzY2Y0ZWE2NTIzOGQ4M2I5YjRjODFkYjdkMTgxNjUzMjQ3MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMjQzLDcgKzI0Myw3
IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0CiAKICAgICByZXNwb25zZS0+YWRkQWJvcnRTdGVw
cyhyZXF1ZXN0LnNpZ25hbCgpKTsKIAotICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJvZHlMb2FkZXI+KHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKHJlc3BvbnNl
Q2FsbGJhY2spKTsKKyAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gbWFrZVVuaXF1ZTxCb2R5
TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNrKSk7CiAgICAg
aWYgKCFyZXNwb25zZS0+bV9ib2R5TG9hZGVyLT5zdGFydChjb250ZXh0LCByZXF1ZXN0KSkKICAg
ICAgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG51bGxwdHI7CiB9CkBAIC0zODIsNyArMzgy
LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogYm9vbCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJl
cXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNo
TG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigpKTsKKyAgICBtX2xv
YWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlzLCAmbV9yZXNwb25zZS5tX2JvZHkt
PmNvbnN1bWVyKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChjb250ZXh0LCByZXF1ZXN0KTsKICAg
ICByZXR1cm4gbV9sb2FkZXItPmlzU3RhcnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCmluZGV4IDYxMDIwODk5Y2Jj
NGE3ZTQzM2IxNTFkY2NhZWJmZTkwNzY0ZDNlMmQuLjg1MGQyMmRlMjg1YmIzMzVkMjJlOGMyZTI1
M2I3YWI2ZTBjNjAzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVw
YWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdhdG9yR2FtZXBh
ZCogTmF2aWdhdG9yR2FtZXBhZDo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBO
YXZpZ2F0b3JHYW1lcGFkKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yR2FtZXBh
ZCo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdh
dG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYjA5ZmMzNDMzYmJmYmI3MjhmMzE1YzE1MzNhNmYy
YzllNGZjMDA3MS4uY2Q4MDcwYjIwN2RiOGEzNDQwMjZjZmY2MTA1Yjg1ZWUxOWJjNTI0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGNvbnN0IGNoYXIqIEdl
b2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogdm9pZCBwcm92aWRlR2VvbG9j
YXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50KQogewogICAgIEFT
U0VSVChwYWdlKTsKLSAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgR2VvbG9j
YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xv
Y2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOworICAgIFN1cHBsZW1lbnQ8UGFnZT46
OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCks
IG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Db250cm9sbGVyPigqcGFnZSwgY2xpZW50KSk7CiB9CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCmluZGV4IGIz
NGY0OWE2NzFkODVmNTE0MmI4YmFmMGY1MmJhOTkxYWM0MzU5ZGMuLjM1ZGZiZjhmM2YyNTY5YzAx
MzUzNTY2MzAwZjViNzgzN2RlMjhmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCkBAIC01MCw3
ICs1MCw3IEBAIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2NhdGlvbjo6ZnJv
bShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JHZW9sb2NhdGlvbiogc3Vw
cGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdlb2xvY2F0aW9uKj4oU3VwcGxlbWVudDxO
YXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAo
IXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxOYXZpZ2F0b3JHZW9sb2NhdGlvbj4obmF2aWdhdG9yKTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHZW9sb2NhdGlvbj4obmF2aWdhdG9yKTsK
ICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3Zp
ZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9E
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBjNzIwM2E5YTg2NDA5NzA1
MGQzZGMwMDc5MmY3YTZiNTgxZmFhMjVlLi41ZTlkOTc5NjZiZmRlNThlNjYwOTlhNTA5ZTYxOGI4
NGMxOGQwNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9E
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
RE9NV2luZG93SW5kZXhlZERhdGFiYXNlKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OmZyb20o
RE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93SW5kZXhlZERhdGFiYXNlKiBzdXBw
bGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlKj4oU3VwcGxlbWVu
dDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICgh
c3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dJbmRleGVkRGF0YWJhc2U+KHdpbmRvdyk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggZjQzMDkwYzRkY2MzZWRlNWUyN2QxYWE0NDM4NDQ0N2Q4NDljNjQw
Yi4uOWE3ODEyNzg0NjNlZDBhNGEwYWRkZDNmN2RiMGM1NjU2OTYyYjljZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAt
NTE3LDcgKzUxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9iamVjdFN0b3Jl
OjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKICAgICBpZiAoIWluZm8pCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2lu
ZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgc3BlY2lmaWVkIGluZGV4IHdhcyBub3QgZm91
bmQuIl9zIH07CiAKLSAgICBhdXRvIGluZGV4ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJJbmRleD4o
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBhdXRvIGluZGV4
ID0gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8s
ICp0aGlzKTsKIAogICAgIFJlZjxJREJJbmRleD4gcmVmZXJlbmNlZEluZGV4IHsgKmluZGV4IH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCBmYTJjZDdlYWQwOWI2MDU1MjViOGNiNDQxZWY3MDAxZDgzMzUwMTAwLi40
MjI0M2ZiYTU3MzEyOTU0MTg4OTRhMzIwNDNlODllMGIyYzFhNWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0xNzks
NyArMTc5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9iamVjdFN0b3JlPj4gSURCVHJhbnNhY3Rp
b246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWMKICAgICBpZiAoIWluZm8gfHwgKCFm
b3VuZCAmJiAhaXNWZXJzaW9uQ2hhbmdlKCkpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdvYmplY3RTdG9yZScgb24gJ0lEQlRy
YW5zYWN0aW9uJzogVGhlIHNwZWNpZmllZCBvYmplY3Qgc3RvcmUgd2FzIG5vdCBmb3VuZC4iX3Mg
fTsKIAotICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQk9iamVjdFN0
b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOworICAgIGF1dG8g
b2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJhd09iamVjdFN0b3JlID0gb2Jq
ZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChvYmplY3RT
dG9yZU5hbWUsIFdURk1vdmUob2JqZWN0U3RvcmUpKTsKIApAQCAtNjY3LDcgKzY2Nyw3IEBAIFJl
ZjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYKIAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9yZWZlcmVu
Y2VkT2JqZWN0U3RvcmVMb2NrKTsKIAotICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCAq
dGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9yZSA9IG1ha2VVbmlxdWU8SURCT2JqZWN0U3RvcmU+
KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0aGlzKTsKICAgICBhdXRvKiByYXdP
YmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwogICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0
b3Jlcy5zZXQoaW5mby5uYW1lKCksIFdURk1vdmUob2JqZWN0U3RvcmUpKTsKIApAQCAtNzU1LDcg
Kzc1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4gSURCVHJhbnNhY3Rpb246OmNyZWF0
ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yCiAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmNyZWF0ZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBpbmZvKTsKICAgICB9KSk7CiAKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgaW5mbywgb2JqZWN0U3RvcmUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkluZGV4Pigq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUlu
ZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3Jr
ZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYTQ4NTAzYjRkMmQ4MDQyOTQ2
ODRhNjVhNjVlYmQ2NGYyMzNjZDdiOS4uOWI3NTc3NDkyMWI0NjUwNmY1ODNkZTdmZWM0MjUwZTg1
NGFjZTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29y
a2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcApAQCAt
NTksNyArNTksNyBAQCBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSogV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20oV29ya2VyRwogICAgICAgICBpZiAoIWNvbm5l
Y3Rpb25Qcm94eSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVk
RGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblByb3h5KTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZT4oc2Nv
cGUsICpjb25uZWN0aW9uUHJveHkpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVu
dC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZzY29wZSwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVy
LmNwcAppbmRleCA5NDhjZjc0NjYzYWU2OWM4MmRhNDQ0ZTA5MzQ3M2RkODU2ZDRkZTkzLi4zNzcx
MWRjMTAzZGI2YzlhOWI4MTNkYmM5ZGY3OTliN2UyNmE2ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZWY8SURCQ29ubmVjdGlvblRvU2Vy
dmVyPiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZShJREJDb25uZWN0aW9uVG9TZXJ2ZXJE
ZQogCiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcihJREJDb25u
ZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZSYgZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVnYXRlKG1ha2VX
ZWFrUHRyKGRlbGVnYXRlKSkKLSAgICAsIG1fcHJveHkoc3RkOjptYWtlX3VuaXF1ZTxJREJDb25u
ZWN0aW9uUHJveHk+KCp0aGlzKSkKKyAgICAsIG1fcHJveHkobWFrZVVuaXF1ZTxJREJDb25uZWN0
aW9uUHJveHk+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAK
aW5kZXggMjc1M2ZkMGMyNDU3YjljMDlkOWQ4OWU0Zjc2MmI0NzlmOGI0NDBiMS4uOGUxZGUwNmQ3
MWU4ZjBiMjIzZDY4NmU1ZTFhOGEyMjA5Yjc0Mzg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVy
YXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFRyYW5zYWN0aW9uT3BlcmF0aW9uOjpUcmFuc2Fj
dGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQlJlcXVlCiAgICAg
aWYgKG1faW5kZXhJZGVudGlmaWVyKQogICAgICAgICBtX2luZGV4UmVjb3JkVHlwZSA9IHJlcXVl
c3QucmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCk7CiAgICAgaWYgKGF1dG8qIGN1cnNvciA9IHJl
cXVlc3QucGVuZGluZ0N1cnNvcigpKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CiAKICAgICBtX2lk
YlJlcXVlc3QgPSAmcmVxdWVzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggZjZhYjRmM2FiMmMyOGIwZWUy
MjQ2ODk0YTBkZTU4NGJkMDg3NTFmZC4uZjU1NjhlMzI1ZDM3MDExYTI3NWUwMWRmOTY2ZGZkZjU5
NTJlOGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBVbmlxdWVJREJEYXRhYmFz
ZSYgSURCU2VydmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElEQkRhdGFi
YXNlSWRlbgogCiAgICAgYXV0byB1bmlxdWVJREJEYXRhYmFzZSA9IG1fdW5pcXVlSURCRGF0YWJh
c2VNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogICAgIGlmICh1bmlxdWVJREJEYXRhYmFz
ZS5pc05ld0VudHJ5KQotICAgICAgICB1bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXF1ZUlEQkRhdGFiYXNlPigqdGhpcywgaWRlbnRpZmllcik7
CisgICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKIAogICAgIHJldHVybiAqdW5p
cXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlOwogfQpAQCAtMTM1LDcgKzEzNSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0
b3JlKGNvbnN0IElEQkRhdGFiYXNlCiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKGlk
ZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlSURCQmFja2lu
Z1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgs
IG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0
YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyKTsK
IH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEpCkBAIC03NTMsNyArNzUzLDcgQEAgdm9pZCBJREJTZXJ2ZXI6OlF1b3RhVXNl
cjo6aW5pdGlhbGl6ZVNwYWNlVXNlZCh1aW50NjRfdCBzcGFjZVVzZWQpCiBJREJTZXJ2ZXI6OlF1
b3RhVXNlciYgSURCU2VydmVyOjplbnN1cmVRdW90YVVzZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4pCiB7CiAgICAgcmV0dXJuICptX3F1b3RhVXNlcnMuZW5zdXJlKG9yaWdpbiwgW3RoaXMs
ICZvcmlnaW5dIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VyPigq
dGhpcywgbV9xdW90YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9y
aWdpbiB7IG9yaWdpbiB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGFVc2VyPigq
dGhpcywgbV9xdW90YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9y
aWdpbiB7IG9yaWdpbiB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFs
dWVTdG9yZS5jcHAKaW5kZXggNjk4M2M5ZDdlYWZmNTYxNjcyMDRkOTUyZjFmMjI2N2JiNDBjYTRi
YS4uOGQ5MjFkOGVmZTZiYTg0MGEzMGQ2MWRmZGM2YTcyMWU4MjhhNDNhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFs
dWVTdG9yZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSURCRXJyb3IgSW5kZXhWYWx1ZVN0b3JlOjph
ZGRSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYgaW5kZXhLZXksIGNvbnN0IElEQktleURhdGEKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yKENvbnN0cmFpbnRFcnJvcik7CiAKICAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluZGV4VmFsdWVFbnRyeT4obV91bmlxdWUpOworICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKIAogICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZEtleSh2YWx1ZUtleSk7CiAgICAgbV9vcmRlcmVk
S2V5cy5pbnNlcnQoaW5kZXhLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbi5jcHAKaW5kZXggNDdjYzQyZmQyNmQ2NDczYzY0MTkyN2U5OTJkNGVjNmU4ZDdi
ZjhlZS4uNWU3MTQ0OTc4NGEwZGEwNzY3Nzg5YThkZWRjNTIyNjg5ZjRkOGRjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3
IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24+IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUo
TWVtb3J5SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQlRyYW5zYWN0aW9u
SW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsK
IH0KIAogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mIGluZm8pCkBAIC01Miw3ICs1Miw3IEBAIE1lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihNZW1vcnlJREJCYWNr
aW5nU3RvCiAgICAgICAgIElEQkRhdGFiYXNlSW5mbyBpbmZvOwogICAgICAgICBhdXRvIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUuZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oaW5mbyk7CiAgICAg
ICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgICAgICAg
ICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGlu
Zm8pOwogICAgIH0KIH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb246OnJlY29yZFZhbHVlQ2hhbmdlZChNZW1vcnlPYmplY3RTdG9yZSYgb2Jq
ZWN0CiAKICAgICBhdXRvIG9yaWdpbmFsQWRkUmVzdWx0ID0gbV9vcmlnaW5hbFZhbHVlcy5hZGQo
Jm9iamVjdFN0b3JlLCBudWxscHRyKTsKICAgICBpZiAob3JpZ2luYWxBZGRSZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKIAogICAgIGF1dG8qIG1h
cCA9IG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA3ZDE0MmIwMDUwYWI2MDg4MWUzODdiZThjMTk4
OTQ3YWM2ZThkZDgxLi5jZmZlMzMzN2Y3OTQ0OGI4YzIxM2RiYmU1ZmEzNWI0ZDNhNzBmMmY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0
aWMgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCiBz
dGQ6OnVuaXF1ZV9wdHI8TWVtb3J5SURCQmFja2luZ1N0b3JlPiBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlm
aWVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50
aWZpZXIpOwogfQogCiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9y
ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCkBAIC02MSw3ICs2MSw3
IEBAIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6fk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpID0gZGVm
YXVsdDsKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRh
YmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogewogICAgIGlmICghbV9kYXRhYmFzZUlu
Zm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CisgICAgICAgIG1fZGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFz
ZU5hbWUoKSwgMCk7CiAKICAgICBpbmZvID0gKm1fZGF0YWJhc2VJbmZvOwogICAgIHJldHVybiBJ
REJFcnJvciB7IH07CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgTWVtb3J5SURCQmFja2luZ1N0b3Jl
OjpzZXREYXRhYmFzZUluZm8oY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogICAgIC8vIEl0
IGlzIG5vdCB2YWxpZCB0byBkaXJlY3RseSBzZXQgZGF0YWJhc2UgaW5mbyBvbiBhIGJhY2tpbmcg
c3RvcmUgdGhhdCBoYXNuJ3QgYWxyZWFkeSBzZXQgaXRzIG93biBkYXRhYmFzZSBpbmZvLgogICAg
IEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CiAKLSAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICBtX2RhdGFiYXNlSW5mbyA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKIH0KIAogSURCRXJyb3IgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYg
aW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SW5kZXguY3BwCmluZGV4IDQ5ZGRjYTZiZDQwZDI5ZDQyZTM4Yjg1MTMxYzg5ZmRm
ZTdkNDc5MmQuLjg1OTVkYmI4ZjRhN2VlM2QxOTFlMzFmYjYxMGIwNDk3NWI4NzQ2MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRl
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUluZGV4LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIElEQkVycm9yIE1lbW9yeUluZGV4OjpwdXRJ
bmRleEtleShjb25zdCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgY29uc3QgSW5kZXhLZXkmIGluCiAg
ICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUluZGV4Ojpwcm92aXNpb25hbFB1dEluZGV4S2V5Iik7
CiAKICAgICBpZiAoIW1fcmVjb3JkcykgewotICAgICAgICBtX3JlY29yZHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluZGV4VmFsdWVTdG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKKyAgICAgICAgbV9yZWNv
cmRzID0gbWFrZVVuaXF1ZTxJbmRleFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUoKSk7CiAgICAg
ICAgIG5vdGlmeUN1cnNvcnNPZkFsbFJlY29yZHNDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC0yNTks
NyArMjU5LDcgQEAgTWVtb3J5SW5kZXhDdXJzb3IqIE1lbW9yeUluZGV4OjptYXliZU9wZW5DdXJz
b3IoY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0
aGlzLCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggZWQ2ZWJhOTI3ZjFmNGY2YjljMzA2OGY2
YjVkODhkZTI5OTcyNjdlYi4uNWI0NGE3Mzg3OGM5ZmRkN2ExZTA1YTk1Yjc2NTdlYmU2MzYzNTE1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0yNTksOCArMjU5LDggQEAgSURCRXJy
b3IgTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24KIAogICAgIGlmICghbV9rZXlWYWx1ZVN0b3JlKSB7CiAgICAgICAg
IEFTU0VSVCghbV9vcmRlcmVkS2V5cyk7Ci0gICAgICAgIG1fa2V5VmFsdWVTdG9yZSA9IHN0ZDo6
bWFrZV91bmlxdWU8S2V5VmFsdWVNYXA+KCk7Ci0gICAgICAgIG1fb3JkZXJlZEtleXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQktleURhdGFTZXQ+KCk7CisgICAgICAgIG1fa2V5VmFsdWVTdG9yZSA9
IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG1fb3JkZXJlZEtleXMgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxJREJLZXlEYXRhU2V0PigpOwogICAgIH0KIAog
ICAgIGF1dG8gbWFwUmVzdWx0ID0gbV9rZXlWYWx1ZVN0b3JlLT5zZXQoa2V5RGF0YSwgdmFsdWUu
ZGF0YSgpKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvciogTWVt
b3J5T2JqZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJDdXJzb3JJbmZvJgogICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5T2JqZWN0U3Rv
cmVDdXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4oKnRoaXMsIGluZm8pOwogICAgIHJldHVy
biByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCmluZGV4IDRmMjA4ZTRkMDYwNGI4NzdkZDFkNzQ4NjdiOGUzZTI4NzI3YWMw
NDQuLjZlODkzZjk4NDRlNzA4ZWQxOTcyYjRhMmMxOGIxNTlmYTcwYjU5NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02MjMsNyArNjIzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1
bGF0ZUluaXRpYWwKICAgICB9CiAKICAgICAvLyBUaGlzIGluaXRpYWwgZGF0YWJhc2UgaW5mbyBt
YXRjaGVzIHRoZSBkZWZhdWx0IHZhbHVlcyB3ZSBqdXN0IHB1dCBpbnRvIHRoZSBtZXRhZGF0YSBk
YXRhYmFzZS4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1f
aWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURC
RGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJh
Y3RFeGlzdGluZ0RhdGFiYXNlSW5mbygpCkBAIC02NTgsNyArNjU4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3Rp
bmdEYXRhYmFzZUkKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gZGF0YWJhc2VJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VW
ZXJzaW9uKTsKKyAgICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPihkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7CiAKICAgICB7CiAgICAgICAgIFNR
TGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsICJTRUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgs
IGF1dG9JbmMsIG1heEluZGV4SUQgRlJPTSBPYmplY3RTdG9yZUluZm87Il9zKTsKQEAgLTgyMCw3
ICs4MjAsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNo
RGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbwogCiAgICAgU3RyaW5nIGRiRmlsZW5h
bWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7CiAKLSAgICBtX3NxbGl0ZURCID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKKyAgICBtX3NxbGl0ZURCID0gbWFrZVVuaXF1ZTxTUUxp
dGVEYXRhYmFzZT4oKTsKICAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4oZGJGaWxlbmFtZSkpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0
aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVE
QigpOwpAQCAtOTAzLDExICs5MDMsMTEgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBlc3RhYmxpc2gg
dHJhbnNhY3Rpb24gaWRlbnRpZmllciB0aGF0IGFscmVhZHkgZXhpc3RzIl9zIH07CiAgICAgfQog
Ci0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRl
SURCVHJhbnNhY3Rpb24+KCp0aGlzLCBpbmZvKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJUcmFuc2FjdGlvbj4oKnRoaXMsIGluZm8pOwogCiAg
ICAgYXV0byBlcnJvciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmJlZ2luKCptX3NxbGl0
ZURCKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkgJiYgaW5mby5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7Ci0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm9CZWZvcmVWZXJzaW9uQ2hhbmdlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCptX2RhdGFiYXNlSW5mbyk7CisgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVW
ZXJzaW9uQ2hhbmdlID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX2RhdGFiYXNlSW5m
byk7CiAKICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9zcWxpdGVEQiwgIlVQREFURSBJ
REJEYXRhYmFzZUluZm8gU0VUIHZhbHVlID0gPyB3aGVyZSBrZXkgPSAnRGF0YWJhc2VWZXJzaW9u
JzsiX3MpOwogICAgICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKQEAgLTI2MTEs
NyArMjYxMSw3IEBAIFNRTGl0ZVN0YXRlbWVudCogU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjYWNo
ZWRTdGF0ZW1lbnQoU1FMaXRlSURCQmFja2luZ1N0b3JlOjpTCiAgICAgfQogCiAgICAgaWYgKG1f
c3FsaXRlREIpIHsKLSAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVf
dD4oc3FsKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIs
IHN0YXRlbWVudCk7CisgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNxbCldID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0
ZW1lbnQpOwogICAgICAgICBpZiAobV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVf
dD4oc3FsKV0tPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBtX2NhY2hlZFN0
YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IG51bGxwdHI7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcAppbmRleCBmODQwNWE3OThhMzY4MTBkYzU3NmFmMWU3M2JjYWY1MzEw
MjM3YmFmLi5jNmIzZmQ5NTNhMGQ1M2FjMTU2OGUyODQ4Y2JjNzhhMTJmMTk1NzU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vy
c29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IHBy
ZWZldGNoTGltaXQgPSA4OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxp
dGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7CisgICAgYXV0
byBjdXJzb3IgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8p
OwogCiAgICAgaWYgKCFjdXJzb3ItPmVzdGFibGlzaFN0YXRlbWVudCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTU5LDcgKzU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1
cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGkKIAog
c3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNy
ZWF0ZUJhY2tpbmdTdG9yZUN1cnNvcihTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IGNvbnN0IHVpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IHVpbnQ2NF90IGluZGV4SUQsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQsIGlu
ZGV4SUQsIHJhbmdlKTsKKyAgICBhdXRvIGN1cnNvciA9IG1ha2VVbmlxdWU8U1FMaXRlSURCQ3Vy
c29yPih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFuZ2UpOwogCiAgICAg
aWYgKCFjdXJzb3ItPmVzdGFibGlzaFN0YXRlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTE5OSw3ICsxOTksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRl
U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogICAgIEFTU0VSVCghbV9jdXJyZW50VXBwZXJL
ZXkuaXNOdWxsKCkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlv
bigpKTsKIAotICAgIG1fc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1l
bnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7
CisgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV90cmFuc2Fj
dGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsKIAogICAgIGlmICht
X3N0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAocHJlcGFyZS9pZCkgLSAnJXMnIiwg
bV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JN
c2coKSk7CkBAIC00NjQsNyArNDY0LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBT
UUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBl
OjpLZXlBbmRWYWx1ZSkKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
a2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CisgICAgICAgICAgICByZWNvcmQu
cmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEuZGF0
YSgpLCBrZXlEYXRhLnNpemUoKSwgcmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5KSkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgdmFsdWUgZGF0YSBmcm9tIGRh
dGFiYXNlIHdoaWxlIGFkdmFuY2luZyBpbmRleCBjdXJzb3IiKTsKQEAgLTQ4Niw3ICs0ODYsNyBA
QCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxG
ZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gU1FMSVRF
X1JPVykgewogICAgICAgICAgICAgb2JqZWN0U3RvcmVTdGF0ZW1lbnQuZ2V0Q29sdW1uQmxvYkFz
VmVjdG9yKDAsIGtleURhdGEpOwotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShrZXlEYXRhKSkpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VV
bmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlE
YXRhKSkpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewogICAg
ICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0
byByZXRyaWV2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIG9iamVjdCBzdG9yZS4KICAgICAg
ICAgICAgIC8vIFNraXAgb3ZlciBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IGE2YTNjNWZmZjMzODBjMjVlZjczNjFlNjg4YmVmMzZjMDYxNWZjODMuLmQyMTJkZTJiNmI4
OGFmZmUwYTM1YjBmZDBmZDMzZmM4NjdjZWNiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0
aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCBJREJFcnJvciBTUUxpdGVJREJUcmFuc2FjdGlvbjo6
YmVnaW4oU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogewogICAgIEFTU0VSVCghbV9zcWxpdGVU
cmFuc2FjdGlvbik7CiAKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxTUUxpdGVUcmFuc2FjdGlvbj4oZGF0YWJhc2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb25Nb2RlOjpSZWFkb25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlx
dWU8U1FMaXRlVHJhbnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8ubW9kZSgpID09IElEQlRyYW5z
YWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24tPmJlZ2luKCk7
CiAKICAgICBpZiAobV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKaW5kZXggMWViYzA4MThmODllZjNmNzZiNDZiMjdkZTc0ZjMxY2NjM2U0
NmNjZi4uYmU1OTFiOTg4NDBlZGFkNjQ4MGFmMGM0MWI3YzhlOTJjNWYxMmE5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKHVpbnQ2NF90IGRlbGV0ZWRWZXJzaW9uKQogICAg
IC8vIHdlIHdvbid0IGhhdmUgYSBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvLiBJbiB0
aGF0IGNhc2UsIHdlJ2xsIG1hbnVmYWN0dXJlIG9uZSB1c2luZyB0aGUKICAgICAvLyBwYXNzZWQg
aW4gZGVsZXRlZFZlcnNpb24gYXJndW1lbnQuCiAgICAgaWYgKCFtX21vc3RSZWNlbnREZWxldGVk
RGF0YWJhc2VJbmZvKQotICAgICAgICBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5h
bWUoKSwgZGVsZXRlZFZlcnNpb24pOworICAgICAgICBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFz
ZU5hbWUoKSwgZGVsZXRlZFZlcnNpb24pOwogCiAgICAgaWYgKG1fY3VycmVudE9wZW5EQlJlcXVl
c3QpIHsKICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+bm90aWZ5RGlkRGVsZXRlRGF0
YWJhc2UoKm1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8pOwpAQCAtNzg1LDcgKzc4NSw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURC
RGF0YWJhc2VJbmZvJiBpbmZvLCBjb25zdCBJCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFj
a2luZ1N0b3JlIik7CiAgICAgCi0gICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAgbV9iYWNraW5nU3RvcmVPcGVuRXJyb3IgPSBl
cnJvcjsKIAogICAgIEFTU0VSVChtX2lzT3BlbmluZ0JhY2tpbmdTdG9yZSk7CkBAIC0xNzQ5LDcg
KzE3NDksNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2Fj
dGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsCiAgICAgICAgIEFTU0VSVChtX3ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbiA9PSB0cmFuc2FjdGlvbik7CiAgICAgICAgIEFTU0VSVCghbV92
ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25uZWN0aW9uIHx8ICZtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbi0+ZGF0YWJhc2VDb25uZWN0aW9uKCkgPT0gbV92ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25u
ZWN0aW9uKTsKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmln
aW5hbERhdGFiYXNlSW5mbygpKTsKLSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmln
aW5hbERhdGFiYXNlSW5mbygpKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oKm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERh
dGFiYXNlSW5mbygpKTsKICAgICB9CiAKICAgICBJREJFcnJvciByZXN1bHQgPSB0cmFuc2FjdGlv
bi0+c3RhdGUoKSA9PSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRl
ZCA/IHRyYW5zYWN0aW9uLT5yZXN1bHQoKSA6IGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmluZGV4IGFmOTJlYmM2MzY4ODVjNjljMjVlNTAyOTlj
ZTZjNGFjZWFhNjU5YzguLmU0ZDY2OWRhOGFjNjI5MTZmN2JjZTAzMjgwOWE1NTllODUzY2M4MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm4KICAgICBBU1NFUlQoZGF0YWJhc2Up
OwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb25JbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1v
ZGU6OlZlcnNpb25jaGFuZ2UpCi0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmluZm8oKSk7CisgICAgICAg
IG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0
YWJhc2UtPmluZm8oKSk7CiAKICAgICBhdXRvJiBzZXJ2ZXIgPSBkYXRhYmFzZS0+c2VydmVyKCk7
CiAgICAgbV9zZXJ2ZXIgPSBtYWtlV2Vha1B0cihzZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAK
aW5kZXggYjEwZDg0MDk5YjI1MjhlNmY3M2MyOGIxNTA0YThhOTMyNGQwYjIxYS4uMjE2NDE2YWZh
MTFjZjI1NWQzNmRlZmIzZWZmMzZlZmFmMTk1NzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCkBA
IC00MCw3ICs0MCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YSgpCiAKIElEQlJl
cXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eSYgY29ubmVjdGlvblByb3h5LCBjb25zdCBJREJPcGVuREJSZXF1ZXN0JiByZXF1ZXN0KQog
ICAgIDogbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9uUHJveHkuc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIoc3RkOjpt
YWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGNvbm5lY3Rpb25Qcm94eSwgcmVxdWVz
dCkpCisgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQogICAgICwgbV9kYXRhYmFzZUlkZW50
aWZpZXIocmVxdWVzdC5kYXRhYmFzZUlkZW50aWZpZXIoKSkKICAgICAsIG1fcmVxdWVzdGVkVmVy
c2lvbihyZXF1ZXN0LnZlcnNpb24oKSkKICAgICAsIG1fcmVxdWVzdFR5cGUocmVxdWVzdC5yZXF1
ZXN0VHlwZSgpKQpAQCAtNDksOCArNDksOCBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERh
dGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25QcgogCiBJ
REJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJh
dGlvbiYgb3BlcmF0aW9uKQogICAgIDogbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihvcGVy
YXRpb24udHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLmNvbm5lY3Rpb25Qcm94eSgpLnNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFr
ZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24uaWRlbnRpZmllcigpKSkK
LSAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQorICAgICwg
bV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4ob3Bl
cmF0aW9uLmlkZW50aWZpZXIoKSkpCisgICAgLCBtX3RyYW5zYWN0aW9uSWRlbnRpZmllcihtYWtl
VW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRp
ZmllcigpKSkKICAgICAsIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyKG9wZXJhdGlvbi5vYmplY3RT
dG9yZUlkZW50aWZpZXIoKSkKICAgICAsIG1faW5kZXhJZGVudGlmaWVyKG9wZXJhdGlvbi5pbmRl
eElkZW50aWZpZXIoKSkKIHsKQEAgLTU4LDcgKzU4LDcgQEAgSURCUmVxdWVzdERhdGE6OklEQlJl
cXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKICAg
ICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSBvcGVyYXRpb24uaW5kZXhSZWNvcmRUeXBlKCk7CiAK
ICAgICBpZiAob3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSkKLSAgICAgICAgbV9jdXJzb3JJ
ZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvcGVy
YXRpb24uY3Vyc29ySWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvcGVyYXRpb24uY3Vyc29ySWRlbnRp
ZmllcigpKTsKIH0KIAogSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJl
cXVlc3REYXRhJiBvdGhlcikKQEAgLTcxLDExICs3MSwxMSBAQCBJREJSZXF1ZXN0RGF0YTo6SURC
UmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEmIG90aGVyKQogICAgICwgbV9yZXF1ZXN0
VHlwZShvdGhlci5tX3JlcXVlc3RUeXBlKQogewogICAgIGlmIChvdGhlci5tX3JlcXVlc3RJZGVu
dGlmaWVyKQotICAgICAgICBtX3JlcXVlc3RJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3JlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVy
Pigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rp
b25JZGVudGlmaWVyKQotICAgICAgICBtX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV90cmFuc2FjdGlvbklkZW50
aWZpZXIpOworICAgICAgICBtX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAg
IGlmIChvdGhlci5tX2N1cnNvcklkZW50aWZpZXIpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmll
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV9jdXJz
b3JJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
REJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1cnNvcklkZW50aWZpZXIpOwogfQogCiBJ
REJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEmIHRoYXQs
IElzb2xhdGVkQ29weVRhZykKQEAgLTEwMiwxMSArMTAyLDExIEBAIHZvaWQgSURCUmVxdWVzdERh
dGE6Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXF1ZXN0RGF0YSYgc291cmNlLCBJREJSZXF1ZXN0
RGF0YSYKICAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUlkZW50aWZpZXIgPSBzb3VyY2Uu
bV9kYXRhYmFzZUlkZW50aWZpZXItPmlzb2xhdGVkQ29weSgpOwogCiAgICAgaWYgKHNvdXJjZS5t
X3JlcXVlc3RJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9y
ZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fcmVxdWVzdElkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3JlcXVlc3RJ
ZGVudGlmaWVyKTsKICAgICBpZiAoc291cmNlLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKQotICAg
ICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmll
cik7CiAgICAgaWYgKHNvdXJjZS5tX2N1cnNvcklkZW50aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0
aW9uLm1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPigqc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcik7CisgICAgICAgIGRlc3RpbmF0aW9u
Lm1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigq
c291cmNlLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAKIHVpbnQ2NF90IElEQlJlcXVlc3REYXRh
OjpzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4
IDQ1Y2ZmYWVhNjAzYTUzYjU5OTA0YzhiMTRiN2ExZGVmN2QyNWYzMTAuLjQwOGI0ZTQ2Mjg3MzM3
YjlhYzM0NGFmYmY0NjkxNTg2OGU4MGYzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBAIC0xNTYsNyAr
MTU2LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fcmVxdWVzdElkZW50aWZp
ZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgYm9vbCBJREJSZXF1ZXN0
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291
cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50
aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+
IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICByZXF1ZXN0Lm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gV1RGTW92ZShvYmplY3Qp
OwpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0
KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVl
PElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgq
b2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX2N1
cnNvcklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKaW5kZXgg
YTg5NDU0ZTZlNjNmNmViN2NiNTAzOGI5YzkzMmZhMjE4NjMzZWRjNi4uNGNiZDVkOWJkZjBhODUy
M2JmN2Y1MmFjNWJjNWNiNGI3ZWQxMDQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcApAQCAtNTcsMTUg
KzU3LDE1IEBAIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3QgSURCUmVzdWx0RGF0
YSYgb3RoZXIpCiAgICAgLCBtX3Jlc3VsdEludGVnZXIob3RoZXIubV9yZXN1bHRJbnRlZ2VyKQog
ewogICAgIGlmIChvdGhlci5tX2RhdGFiYXNlSW5mbykKLSAgICAgICAgbV9kYXRhYmFzZUluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm90aGVyLm1fZGF0YWJhc2VJbmZv
KTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
Km90aGVyLm1fZGF0YWJhc2VJbmZvKTsKICAgICBpZiAob3RoZXIubV90cmFuc2FjdGlvbkluZm8p
Ci0gICAgICAgIG1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2Fj
dGlvbkluZm8+KCpvdGhlci5tX3RyYW5zYWN0aW9uSW5mbyk7CisgICAgICAgIG1fdHJhbnNhY3Rp
b25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpvdGhlci5tX3RyYW5zYWN0
aW9uSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fcmVzdWx0S2V5KQotICAgICAgICBtX3Jlc3VsdEtl
eSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKm90aGVyLm1fcmVzdWx0S2V5KTsKKyAg
ICAgICAgbV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCpvdGhlci5tX3Jlc3Vs
dEtleSk7CiAgICAgaWYgKG90aGVyLm1fZ2V0UmVzdWx0KQotICAgICAgICBtX2dldFJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqb3RoZXIubV9nZXRSZXN1bHQpOworICAg
ICAgICBtX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigqb3RoZXIubV9nZXRS
ZXN1bHQpOwogICAgIGlmIChvdGhlci5tX2dldEFsbFJlc3VsdCkKLSAgICAgICAgbV9nZXRBbGxS
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKm90aGVyLm1fZ2V0QWxs
UmVzdWx0KTsKKyAgICAgICAgbV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldEFsbFJl
c3VsdD4oKm90aGVyLm1fZ2V0QWxsUmVzdWx0KTsKIH0KIAogSURCUmVzdWx0RGF0YTo6SURCUmVz
dWx0RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiB0aGF0LCBJc29sYXRlZENvcHlUYWcpCkBAIC04
NywxNSArODcsMTUgQEAgdm9pZCBJREJSZXN1bHREYXRhOjppc29sYXRlZENvcHkoY29uc3QgSURC
UmVzdWx0RGF0YSYgc291cmNlLCBJREJSZXN1bHREYXRhJiBkZXMKICAgICBkZXN0aW5hdGlvbi5t
X3Jlc3VsdEludGVnZXIgPSBzb3VyY2UubV9yZXN1bHRJbnRlZ2VyOwogCiAgICAgaWYgKHNvdXJj
ZS5tX2RhdGFiYXNlSW5mbykKLSAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2RhdGFiYXNlSW5mbywg
SURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2Rh
dGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fZGF0YWJh
c2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5t
X3RyYW5zYWN0aW9uSW5mbykKLSAgICAgICAgZGVzdGluYXRpb24ubV90cmFuc2FjdGlvbkluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJjZS5tX3RyYW5zYWN0
aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0
aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZv
Pigqc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvLCBJREJUcmFuc2FjdGlvbkluZm86Oklzb2xhdGVk
Q29weSk7CiAgICAgaWYgKHNvdXJjZS5tX3Jlc3VsdEtleSkKLSAgICAgICAgZGVzdGluYXRpb24u
bV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCpzb3VyY2UubV9yZXN1
bHRLZXksIElEQktleURhdGE6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1f
cmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1fcmVzdWx0S2V5LCBJ
REJLZXlEYXRhOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV9nZXRSZXN1bHQpCi0g
ICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRS
ZXN1bHQ+KCpzb3VyY2UubV9nZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsK
KyAgICAgICAgZGVzdGluYXRpb24ubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3Vs
dD4oKnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0UmVzdWx0OjpJc29sYXRlZENvcHkpOwogICAg
IGlmIChzb3VyY2UubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0QWxs
UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRB
bGxSZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGlu
YXRpb24ubV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKnNvdXJj
ZS5tX2dldEFsbFJlc3VsdCwgSURCR2V0QWxsUmVzdWx0OjpJc29sYXRlZENvcHkpOwogfQogCiBJ
REJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmVycm9yKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKQEAgLTExMSw3
ICsxMTEsNyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nl
c3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZQogICAgIElEQlJlc3VsdERhdGEgcmVz
dWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1bHQubV90eXBlID0gSURCUmVzdWx0
VHlwZTo6T3BlbkRhdGFiYXNlU3VjY2VzczsKICAgICByZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCk7Ci0gICAgcmVzdWx0Lm1fZGF0
YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGNvbm5lY3Rpb24u
ZGF0YWJhc2UoKS0+aW5mbygpKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5p
cXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlvbi5kYXRhYmFzZSgpLT5pbmZvKCkpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyMSwxNSArMTIxLDE1IEBAIElEQlJlc3VsdERhdGEg
SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpCiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyByZXF1ZXN0SWRlbnRpZmllciB9
OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRUeXBlOjpPcGVuRGF0YWJhc2VVcGdyYWRl
TmVlZGVkOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSB0cmFu
c2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5pZGVudGlmaWVyKCk7Ci0gICAgcmVzdWx0Lm1f
ZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KHRyYW5zYWN0
aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCktPmluZm8oKSk7Ci0gICAgcmVzdWx0
Lm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+
KHRyYW5zYWN0aW9uLmluZm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRh
dGFiYXNlKCktPmluZm8oKSk7CisgICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVu
aXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KHRyYW5zYWN0aW9uLmluZm8oKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFz
ZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0
IHtJREJSZXN1bHRUeXBlOjpEZWxldGVEYXRhYmFzZVN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVy
IH07Ci0gICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KGluZm8pOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8
SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNzEs
MjEgKzE3MSwyMSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OnJlbmFtZUluZGV4U3Vj
Y2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcQogSURCUmVzdWx0RGF0YSBJREJS
ZXN1bHREYXRhOjpwdXRPckFkZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYgcmVzdWx0S2V5KQogewogICAgIElE
QlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6UHV0T3JBZGRTdWNjZXNzLCByZXF1
ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKKyAgICByZXN1bHQubV9yZXN1bHRLZXkgPSBtYWtl
VW5pcXVlPElEQktleURhdGE+KHJlc3VsdEtleSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRSZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJlc3VsdCYg
Z2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6
R2V0UmVjb3JkU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRS
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICBy
ZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Omdl
dEFsbFJlY29yZHNTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlc3VsdCYgZ2V0QWxsUmVzdWx0KQogewogICAgIElE
QlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6R2V0QWxsUmVjb3Jkc1N1Y2Nlc3Ms
IHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KGdldEFsbFJlc3VsdCk7CisgICAgcmVzdWx0Lm1f
Z2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KGdldEFsbFJlc3VsdCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjA0LDE0ICsyMDQsMTQgQEAgSURCUmVzdWx0
RGF0YSBJREJSZXN1bHREYXRhOjpkZWxldGVSZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgcmUKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1
Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQg
eyBJREJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsK
LSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4o
Z2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJl
c3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRh
IElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0
KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6SXRlcmF0ZUN1
cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0
Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKaW5kZXggNzE3YjNlMmRlNTNiMzUzZmVi
NmRkNzU1MDBhMGU1ZTY4Yzk0N2EzZi4uNjIwNjJhMWUyOTVmN2I1OTgxNTg5NWI1N2JlYzAwOGU1
YjE4NzZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlc3VsdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCkBAIC0xODQsNyArMTg0LDcgQEAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2Rl
KERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRv
IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOworICAgICAgICBh
dXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICAgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gV1RGTW92ZShvYmplY3QpOwpAQCAt
MTkzLDcgKzE5Myw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3Vs
dERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlm
IChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QlRyYW5zYWN0aW9uSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElE
QlRyYW5zYWN0aW9uSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0
KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX3Ry
YW5zYWN0aW9uSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIwMiw3ICsyMDIsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRh
OjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAg
ICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigpOworICAgICAg
ICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKTsKICAgICAgICAgT3B0aW9u
YWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CiAgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CiAg
ICAgICAgIGlmICghb3B0aW9uYWwpCkBAIC0yMTQsNyArMjE0LDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERl
Y29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PigpOworICAgICAgICBhdXRvIG9i
amVjdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PigpOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAg
ICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMjIzLDcgKzIyMyw3
IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJl
c3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNP
YmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3Qp
IHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3Vs
dD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4o
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IFdURk1v
dmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAKaW5kZXggOTgzYzFjMTFjOTli
NDViNmNlNTQ0ZGZjYWMwMzdlNGM3MzcyOTVjMy4uNGZiOTk5MTlmNjdkNWY3YzlhYmMxMDllMmUz
MDAwY2NlNGM0NDA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvIElEQlRyYW5zYWN0aW9uSW5mbzo6dmVyc2lvbkNoYW5n
ZShjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3QKICAgICBJREJUcmFuc2FjdGlvbkluZm8gcmVz
dWx0KChJREJSZXNvdXJjZUlkZW50aWZpZXIoY29ubmVjdGlvbikpKTsKICAgICByZXN1bHQubV9t
b2RlID0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlOwogICAgIHJlc3VsdC5tX25l
d1ZlcnNpb24gPSBuZXdWZXJzaW9uOwotICAgIHJlc3VsdC5tX29yaWdpbmFsRGF0YWJhc2VJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG9yaWdpbmFsRGF0YWJhc2VJbmZv
KTsKKyAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0
YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CiAKICAgICByZXR1cm4gcmVzdWx0Owog
fQpAQCAtNjcsNyArNjcsNyBAQCBJREJUcmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0aW9uSW5m
byhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgLCBtX29iamVjdFN0b3Jlcyhp
bmZvLm1fb2JqZWN0U3RvcmVzKQogewogICAgIGlmIChpbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8pCi0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oKmluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyk7CisgICAgICAgIG1f
b3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKmluZm8u
bV9vcmlnaW5hbERhdGFiYXNlSW5mbyk7CiB9CiAKIElEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJh
bnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgdGhhdCwgSXNvbGF0ZWRDb3B5
VGFnKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uSW5mbzo6aXNvbGF0ZWRD
b3B5KGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgc291cmNlLCBJREJUcmFucwogICAgICAgICBk
ZXN0aW5hdGlvbi5tX29iamVjdFN0b3Jlcy51bmNoZWNrZWRBcHBlbmQob2JqZWN0U3RvcmUuaXNv
bGF0ZWRDb3B5KCkpOwogCiAgICAgaWYgKHNvdXJjZS5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKQot
ICAgICAgICBkZXN0aW5hdGlvbi5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbywgSURC
RGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX29yaWdp
bmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9v
cmlnaW5hbERhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwogfQog
CiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCmluZGV4IDkzMGQ4MDIz
NjE4MjMyYWJmNmMwODFkZjIxMjk1OGZmNjJhNTU1ZWQuLjdiOTQ3N2U4ZWM1NTRjOTEzZDJhNDhi
ZTU1OGUxNjMzZDkzZmNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKQEAgLTExOSw3ICsx
MTksNyBAQCBib29sIElEQlRyYW5zYWN0aW9uSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZv
PiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGluZm8ubV9vcmlnaW5hbERhdGFiYXNl
SW5mbyA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXgg
ODdiMWFkY2Q5NjY2MjA2ZWM5NzE2NjAzNjJiNDBlNWFkN2Q4MDFkMS4uYzk2ODk0NDRmZDIyNDAy
Y2VkMjExM2IzYmZhMGI5YTUyNmM2NzNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Qcm9jZXNzSURCU2Vy
dmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb24KIFN0b3JhZ2VRdW90YU1h
bmFnZXIqIEluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKGNvbnN0IENsaWVudE9yaWdp
biYgb3JpZ2luKQogewogICAgIHJldHVybiBtX3F1b3RhTWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwg
W10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2Vy
PihTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10odWludDY0X3QgcXVvdGEs
IHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxs
YmFjaykgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihT
dG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10odWludDY0X3QgcXVvdGEsIHVp
bnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFj
aykgewogICAgICAgICAgICAgY2FsbGJhY2socXVvdGEgKyBjdXJyZW50U3BhY2UgKyBzcGFjZUlu
Y3JlYXNlKTsKICAgICAgICAgfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0
b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2Fw
YWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmODcyNTc0ZTg1
YzI0MDg3NzJiMWQxMWEyZThiY2I2ZGQ2MGRhMjk3Li5hMzFiYWRiNTRhYzk4MWUwZTNiYWRhZmUy
MDk4NzgyOWQzZjc0MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
Y2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0
aWVzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcyYgTmF2
aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM6OmZyb20oTmF2aWdhdG9yJiBuYXZpZ2F0bwogewogICAg
IE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20oJm5h
dmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1l
bnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHAKaW5kZXggNTBkMGJiMGIxZWQ1M2E0MzI0NThkOWZiNzEzNTcwYWUwZWNhMGQw
Ni4uYjk3NDM0YzRlNjI0NWQ3M2NjZjJkNjI1YTBhMWIwM2UxMjkwY2JkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3Ry
aW5nJgogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6Om1vY2tQaWNrZXIoKQogewogICAgIGlmICghbV9waWNrZXJPdmVycmlkZSkKLSAgICAgICAg
bV9waWNrZXJPdmVycmlkZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1vY2s+KCp0aGlzKTsKKyAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKIAogICAgIHJldHVybiAqbV9w
aWNrZXJPdmVycmlkZS5nZXQoKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB1aW50NjRfdCBXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudChXZWJNZWRp
YVNlc3Npb25NYQogCiAgICAgTE9HKE1lZGlhLCAiV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRk
UGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoJXAgKyAlbGx1KSIsICZjbGllbnQsIGNvbnRleHRJ
ZCk7CiAKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENsaWVudFN0
YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOworICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKG1ha2VV
bmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CiAKICAgICBpZiAobV9leHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0KQogICAgICAgICBz
Y2hlZHVsZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1cmF0aW9uVGFzayB8IFRhcmdldENsaWVu
dHNDb25maWd1cmF0aW9uVGFzayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGQ0MTdhMTIxNjkxMTEyMTVkNTQyMjkxZTAz
YzU5ZDVkNmU3ZWIzZjQuLjdjYmM2YTEzMzUxZTBkMzJjZTI1NWE5YmFkY2I5NzQ0ZGFmNGQ0NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuY3BwCkBAIC0xNzgsOSArMTc4LDkgQEAgTWVkaWFUaW1lIE1lZGlhU291cmNlOjpjdXJyZW50
VGltZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNv
dXJjZTo6YnVmZmVyZWQoKSBjb25zdAogewogICAgIGlmIChtX2J1ZmZlcmVkICYmIG1fYWN0aXZl
U291cmNlQnVmZmVycy0+bGVuZ3RoKCkgJiYgc3RkOjphbGxfb2YobV9hY3RpdmVTb3VyY2VCdWZm
ZXJzLT5iZWdpbigpLCBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmVuZCgpLCBbXShhdXRvJiBidWZm
ZXIpIHsgcmV0dXJuICFidWZmZXItPmlzQnVmZmVyZWREaXJ0eSgpOyB9KSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQp
OwogCi0gICAgbV9idWZmZXJlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigpOworICAgIG1fYnVmZmVyZWQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
ICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6ICptX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMpCiAg
ICAgICAgIHNvdXJjZUJ1ZmZlci0+c2V0QnVmZmVyZWREaXJ0eShmYWxzZSk7CiAKQEAgLTE5MCw3
ICsxOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJj
ZTo6YnVmZmVyZWQoKSBjb25zdAogCiAgICAgLy8gMS4gSWYgYWN0aXZlU291cmNlQnVmZmVycy5s
ZW5ndGggZXF1YWxzIDAgdGhlbiByZXR1cm4gYW4gZW1wdHkgVGltZVJhbmdlcyBvYmplY3QgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmIChhY3RpdmVSYW5nZXMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZl
cmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9i
dWZmZXJlZCk7CiAKICAgICAvLyAyLiBMZXQgYWN0aXZlIHJhbmdlcyBiZSB0aGUgcmFuZ2VzIHJl
dHVybmVkIGJ5IGJ1ZmZlcmVkIGZvciBlYWNoIFNvdXJjZUJ1ZmZlciBvYmplY3QgaW4gYWN0aXZl
U291cmNlQnVmZmVycy4KICAgICAvLyAzLiBMZXQgaGlnaGVzdCBlbmQgdGltZSBiZSB0aGUgbGFy
Z2VzdCByYW5nZSBlbmQgdGltZSBpbiB0aGUgYWN0aXZlIHJhbmdlcy4KQEAgLTIwMyw3ICsyMDMs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVm
ZmVyZWQoKSBjb25zdAogCiAgICAgLy8gUmV0dXJuIGFuIGVtcHR5IHJhbmdlIGlmIGFsbCByYW5n
ZXMgYXJlIGVtcHR5LgogICAgIGlmICghaGlnaGVzdEVuZFRpbWUpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAog
ICAgIC8vIDQuIExldCBpbnRlcnNlY3Rpb24gcmFuZ2VzIGVxdWFsIGEgVGltZVJhbmdlIG9iamVj
dCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdlIGZyb20gMCB0byBoaWdoZXN0IGVuZCB0aW1lLgog
ICAgIG1fYnVmZmVyZWQtPmFkZChNZWRpYVRpbWU6Onplcm9UaW1lKCksIGhpZ2hlc3RFbmRUaW1l
KTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogICAgICAgICBtX2J1ZmZlcmVkLT5pbnRl
cnNlY3RXaXRoKHNvdXJjZVJhbmdlcyk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiB9CiAKIHZvaWQgTWVkaWFT
b3VyY2U6OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQpAQCAtMzQ0LDcgKzM0NCw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXRMaXZlU2Vla2FibGVSYW5nZShk
b3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCiAKICAgICAvLyBTZXQgbGl2ZSBzZWVrYWJsZSByYW5n
ZSB0byBiZSBhIG5ldyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IGNvbnRhaW5pbmcgYSBz
aW5nbGUgcmFuZ2UKICAgICAvLyB3aG9zZSBzdGFydCBwb3NpdGlvbiBpcyBzdGFydCBhbmQgZW5k
IHBvc2l0aW9uIGlzIGVuZC4KLSAgICBtX2xpdmVTZWVrYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7CisgICAgbV9saXZlU2Vla2FibGUgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCkpOwogCiAgICAgcmV0dXJu
IHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcAppbmRleCBlNDE4Mjc4MzhkNjJjYTM4ZmMz
YmYzYmU3OGY4ZjRhYThhZTUyNTk2Li43YjM1OGY1ZTBkZTQyZmIyMjY4ZDM2OTAzZTU4ZGI1ZWI3
OGU5MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCkBAIC01MSw3ICs1MSw3IEBAIE5hdmln
YXRvck1lZGlhRGV2aWNlcyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9tKE5hdmlnYXRvciog
bmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PE5hdmlnYXRvck1lZGlhRGV2aWNlcyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6
ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0
b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvck1lZGlhRGV2aWNlcz4obmF2aWdhdG9yLT53
aW5kb3coKSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAg
ICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1
cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCA4ZDdlNjNjYzYwNmQ2
ZGExOWZiZGIxMmRlNTRmYjg1NWZkZjYyYzk5Li4xNGRmMTE2MWRhZTY4Y2M0NmNiNDllYWFlMjFm
NWVmOTg5ZTJhY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgVXNl
ck1lZGlhQ29udHJvbGxlcjo6flVzZXJNZWRpYUNvbnRyb2xsZXIoKQogCiB2b2lkIHByb3ZpZGVV
c2VyTWVkaWFUbyhQYWdlKiBwYWdlLCBVc2VyTWVkaWFDbGllbnQqIGNsaWVudCkKIHsKLSAgICBV
c2VyTWVkaWFDb250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgVXNlck1lZGlhQ29udHJvbGxlcjo6
c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFDb250cm9sbGVyPihj
bGllbnQpKTsKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgVXNlck1l
ZGlhQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxVc2VyTWVkaWFDb250
cm9sbGVyPihjbGllbnQpKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzU2VjdXJlKERvY3Vt
ZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGFhYTQwMDAyMDczNjVmZmNiZTUyODEyOGUy
OGNlMDJmNmM2MDdjZGQuLmM5ODViYzE5YTMxZDAxMTQ1NjVhYmFiYTVmMDYwZWU1MGRhNjExNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtNjksNyArNjksNyBAQCBSZWY8UlRDRGF0YUNoYW5uZWxFdmVudD4gTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpjaGFubmVsRXZlbnQoU2NyaXB0RXhlY3V0aQogICAgIGluaXQubmVn
b3RpYXRlZCA9IGRhdGFDaGFubmVsLT5uZWdvdGlhdGVkKCk7CiAgICAgaW5pdC5pZCA9IGRhdGFD
aGFubmVsLT5pZCgpOwogCi0gICAgYXV0byBoYW5kbGVyID0gIHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGRhdGFDaGFubmVsKSk7CisgICAgYXV0
byBoYW5kbGVyID0gIG1ha2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZN
b3ZlKGRhdGFDaGFubmVsKSk7CiAgICAgYXV0byBjaGFubmVsID0gUlRDRGF0YUNoYW5uZWw6OmNy
ZWF0ZShjb250ZXh0LCBXVEZNb3ZlKGhhbmRsZXIpLCBmcm9tU3RkU3RyaW5nKGxhYmVsKSwgV1RG
TW92ZShpbml0KSk7CiAKICAgICByZXR1cm4gUlRDRGF0YUNoYW5uZWxFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5kYXRhY2hhbm5lbEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUoY2hhbm5lbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBkZWYxZjkxZWVlOWVkNmVjNzhkMTNjNjll
YzQzNDhmMGFhNjhkMzY3Li5kMWE3NGI4NTcxYmVlN2VlNWU5YzMxNjJlY2EyZjRkNmZmNDFlNDVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcApAQCAtMzk3
LDcgKzM5Nyw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2so
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2CiAgICAgfQogICAgIH0KIAotICAg
IHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOworICAgIHJlY2VpdmVyLT5zZXRCYWNr
ZW5kKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1Jl
Y2VpdmVyKSkpOwogICAgIGF1dG8mIHRyYWNrID0gcmVjZWl2ZXItPnRyYWNrKCk7CiAgICAgYWRk
UGVuZGluZ1RyYWNrRXZlbnQocmVjZWl2ZXIucmVsZWFzZU5vbk51bGwoKSwgdHJhY2ssIHJ0Y1N0
cmVhbXMsIG51bGxwdHIpOwogfQpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlmICghc291cmNlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5l
d1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2
ZXIobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRj
VHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIH0KIApAQCAt
NDk5LDcgKzQ5OSw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2
ZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjCiAgICAgaWYgKCFzb3VyY2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG5ld1RyYW5zY2VpdmVyID0gbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291
cmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8mIG5ld1RyYW5zY2VpdmVyID0gbV9wZWVy
Q29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIobWFrZVVuaXF1ZTxMaWJXZWJS
VENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNl
LnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgYWRkUGVuZGluZ1RyYWNrRXZlbnQobWFrZVJlZihu
ZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpKSwgbmV3VHJhbnNjZWl2ZXIucmVjZWl2ZXIoKS50cmFj
aygpLCBydGNSZWNlaXZlci0+c3RyZWFtcygpLCBtYWtlUmVmKG5ld1RyYW5zY2VpdmVyKSk7CiB9
CkBAIC01MzQsNyArNTM0LDcgQEAgT3B0aW9uYWw8TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6QmFj
a2VuZHM+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVRyYW5zY2UKICAgICBpZiAoIXJl
c3VsdC5vaygpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byB0cmFu
c2NlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
PihyZXN1bHQuTW92ZVZhbHVlKCkpOworICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1vdmVWYWx1ZSgpKTsKICAg
ICByZXR1cm4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6QmFja2VuZHMgeyB0cmFuc2NlaXZlci0+
Y3JlYXRlU2VuZGVyQmFja2VuZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZCwgV1RGTW92ZShzb3Vy
Y2UpKSwgdHJhbnNjZWl2ZXItPmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpLCBXVEZNb3ZlKHRyYW5z
Y2VpdmVyKSB9OwogfQogCkBAIC01ODUsNyArNTg1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6dHJhbnNj
ZWkKIHsKICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDogbV9iYWNrZW5kLT5HZXRUcmFuc2Nl
aXZlcnMoKSkgewogICAgICAgICBpZiAodHJhbnNjZWl2ZXItPnNlbmRlcigpLmdldCgpID09IGJh
Y2tlbmQucnRjU2VuZGVyKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2NlaXZlcikpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2NlaXZlckludGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsK
ICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC02NTQsNyArNjU0LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
Y3JlYXRlRGF0YUNoYW5uZWwKIHsKICAgICBhdXRvIGluaXQgPSBMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXI6OmZyb21SVENEYXRhQ2hhbm5lbEluaXQob3B0aW9ucyk7CiAgICAgYXV0byBjaGFu
bmVsID0gbV9iYWNrZW5kLT5DcmVhdGVEYXRhQ2hhbm5lbChsYWJlbC51dGY4KCkuZGF0YSgpLCAm
aW5pdCk7Ci0gICAgcmV0dXJuIGNoYW5uZWwgPyBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFubmVsKSkgOiBudWxscHRyOworICAgIHJldHVy
biBjaGFubmVsID8gbWFrZVVuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1v
dmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpPbkRhdGFDaGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50
ZXJmYWNlPiBkYXRhQ2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIwN2YxNWU2NDU3YjlkZmNhYzFjMzM5ZWEz
OWZlYTFkNzc4NTlkOGIuLmZjOTFjY2QwYmJkMWZkYmJhNzY0MmU3MDRmMzdmZTg1Y2M3MmZkNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25u
ZWN0aW9uQmFja2VuZD4gY3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZQogCiAgICAg
cGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5zZXRFbmFibGVXZWJSVENFbmNyeXB0aW9uKHBhZ2Ut
PnNldHRpbmdzKCkud2ViUlRDRW5jcnlwdGlvbkVuYWJsZWQoKSk7CiAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+KHBlZXJDb25uZWN0
aW9uLCBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+KHBlZXJDb25uZWN0aW9uLCBwYWdlLT5saWJX
ZWJSVENQcm92aWRlcigpKTsKIH0KIAogQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNrZW5kIFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOwpAQCAtMzExLDcgKzMxMSw3IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAg
YXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRy
LCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJG
b3JTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAKLSAgICBhdXRvIHNlbmRlckJh
Y2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlz
LCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvIHRyYW5zY2VpdmVy
ID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywg
InZpZGVvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpLCByZWNlaXZlci5jb3B5UmVm
KCksIG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNhYmxlU2VuZGluZ0RpcmVjdGlvbigp
OwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFuc2NlaXZl
cikpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
QXVkaW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0
byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBX
VEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JT
b3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAKLSAgICBhdXRvIHNlbmRlckJhY2tl
bmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBu
dWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvIHRyYW5zY2VpdmVyID0g
UlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgImF1
ZGlvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpLCByZWNlaXZlci5jb3B5UmVmKCks
IG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNhYmxlU2VuZGluZ0RpcmVjdGlvbigpOwog
ICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFuc2NlaXZlcikp
OwpAQCAtNDAwLDcgKzQwMCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFJUQ1J0cFNlbmRlcj4g
ZmluZEV4aXN0aW5nU2VuZGVyKGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRwCiBFeGNlcHRpb25P
cjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRU
cmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVh
bUlkcykKIHsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkgewotICAgICAgICBhdXRvIHNlbmRlckJhY2tl
bmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBu
dWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGlmICghbV9lbmRw
b2ludC0+YWRkVHJhY2soKnNlbmRlckJhY2tlbmQsIHRyYWNrLCBtZWRpYVN0cmVhbUlkcykpCiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVW5hYmxlIHRvIGFkZCB0
cmFjayJfcyB9OwogCkBAIC00MzgsNyArNDM4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNl
bmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHIK
ICAgICAgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay5raW5kKCk7CiAgICAgICAg
IFN0cmluZyB0cmFja0lkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogCi0gICAgICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBt
YWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAg
ICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgbWFrZVJl
Zih0cmFjayksIFZlY3RvcjxTdHJpbmc+IHsgbWVkaWFTdHJlYW1JZHMgfSwgV1RGTW92ZShzZW5k
ZXJCYWNrZW5kKSk7CiAgICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlcih0cmFj
a0tpbmQsIHRyYWNrSWQpOwogICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNj
ZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpLCBudWxs
cHRyKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2
ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdgogICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQ
bGFuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRkVW5pZmllZFBsYW5UcmFuc2NlaXZlcihT
dHJpbmcgeyB0cmFja0tpbmQgfSwgaW5pdCk7CiAKLSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRy
KTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNl
bmRlcjo6Y3JlYXRlKCp0aGlzLCBTdHJpbmcodHJhY2tLaW5kKSwgVmVjdG9yPFN0cmluZz4oKSwg
V1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgcmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2
ZXIoV1RGTW92ZShuZXdTZW5kZXIpLCBpbml0LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCks
IHRyYWNrS2luZCk7CiB9CkBAIC00ODIsNyArNDgyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2Nl
aXYKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJS
VENVbmlmaWVkUGxhbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJh
bnNjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGluaXQpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5k
ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVs
bHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byYgYmFja2VuZCA9ICpzZW5k
ZXJCYWNrZW5kOwogICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMs
IHRyYWNrLmNvcHlSZWYoKSwgVmVjdG9yPFN0cmluZz4oKSwgV1RGTW92ZShzZW5kZXJCYWNrZW5k
KSk7CiAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFjayhiYWNrZW5kLCB0cmFjaywgVmVjdG9y
PFN0cmluZz4geyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZC5jcHAKaW5kZXggNjg1MGU2YTg1ZTkwMjRiYjExNDViNmI5NDIyOWMwZjYxNDJkZjdhYS4u
NmFlZWExMzM4OTJkMjA2M2YwMzUzOWI4ZWVjNGRiOWJjZTY0ZDdkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBA
QCB2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnNldFBhcmFtZXRlcnMoY29uc3QgUlRD
UnRwU2VuZFBhcmFtZXRlcnMmIHBhcmFtZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRl
ckJhY2tlbmQ+IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEVE1GU2VuZGVyQmFja2Vu
ZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2VuZGVyLT5HZXREdG1mU2VuZGVyKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAppbmRleCBlYjg3MWViN2RiMDM4ODRm
NGNjN2UwYWRlZjY4NzgyZTFjMDk3MmQ3Li41YzBkN2U5NWUyZmQxMmUzZjg0ZjE3Y2ZiZWI2ZDg2
N2E1MWYyZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5z
Y2VpdmVyQmFja2VuZC5jcHAKQEAgLTM1LDEyICszNSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+IExpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KG1fcnRj
VHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJU
Q1J0cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFuc2NlaXZlci0+cmVjZWl2ZXIoKSk7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVNlbmRlckJhY2tlbmQoTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kJiBiYWNrZW5kLCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpTb3VyY2Um
JiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZD4oYmFja2VuZCwgbV9ydGNUcmFuc2NlaXZlci0+c2VuZGVyKCksIFdURk1vdmUo
c291cmNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZD4oYmFja2VuZCwgbV9ydGNUcmFuc2NlaXZlci0+c2VuZGVyKCksIFdURk1vdmUoc291cmNlKSk7
CiB9CiAKIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIExpYldlYlJUQ1J0cFRyYW5zY2VpdmVy
QmFja2VuZDo6ZGlyZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggMGMzMjhmYWU0NDIzNTk5
MjUzMzA3MmM4NWQ2YjMyZmRjNmMxMzgzOC4uMGViYWZmODlmZmJjNTAwM2UyNDYxYmFkZWU1MjAz
OTExNzFjYmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTm90aWZpY2F0aW9uOjpO
b3RpZmljYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBPcHRpb24KICAgICAsIG1fYm9keShvcHRpb25zLmJvZHkpCiAgICAgLCBtX3RhZyhvcHRpb25z
LnRhZykKICAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAsIG1fdGFza1RpbWVyKHN0ZDo6bWFrZV91
bmlxdWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3coKTsgfSkpCisgICAgLCBtX3Rhc2tUaW1lciht
YWtlVW5pcXVlPFRpbWVyPihbdGhpc10gKCkgeyBzaG93KCk7IH0pKQogewogICAgIGlmICghb3B0
aW9ucy5pY29uLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIGljb25VUkwgPSBkb2N1bWVudC5j
b21wbGV0ZVVSTChvcHRpb25zLmljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGE2MjAzNTM5M2M3ZmIzZjZkZGYwMWM1Yzg5ZDc0ZjNiNWVkZDJkNDQuLmQ0OGYyMDVhOWUy
NDE0ZTA3ZDcyMmY5MDMyNWE3YzM2NGQ0ODk0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgY2hhciogTm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6c3VwcGxlbWVudE5hbWUoKQogCiB2b2lkIHByb3ZpZGVOb3RpZmljYXRpb24oUGFnZSogcGFn
ZSwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgTm90aWZpY2F0aW9uQ29udHJv
bGxlcjo6cHJvdmlkZVRvKHBhZ2UsIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7
CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9uQ29u
dHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKaW5kZXggMDNmZTll
Mzg2NzhmNDA1MDczMjU1MDljMjAzODY3YzljZjgyMGZmMS4uYzk4Yzk5ODZkZWQ2Y2QyMDU0MjYx
NzIxNWY2NTM2Y2U1OGYyNzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9x
dW90YS9ET01XaW5kb3dRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90
YS9ET01XaW5kb3dRdW90YS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRE9NV2luZG93UXVvdGEqIERP
TVdpbmRvd1F1b3RhOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIERPTVdpbmRvd1F1
b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93UXVvdGEqPihTdXBwbGVtZW50
PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8RE9NV2luZG93UXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8RE9NV2luZG93UXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQg
PSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93LCBzdXBwbGVt
ZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKaW5k
ZXggN2JhMWQzZDRiMzY5NDQwYzY0ZTE3ZGQyMGNhOTQ1MzhiOGFkOWI3NC4uN2EwODA0NTk1Njk4
M2EzMWY2ZDgzNGVmN2VhNzcyZmE2NjczNmE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIE5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbShO
YXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIHN1cHBs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqPihTdXBwbGVtZW50PE5h
dmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhu
YXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdh
dG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2Vy
TmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA5NWMzZTQzNjQ3MzE2MmE1MGQ2MWI1Y2U3
NTE2NWVlNjhiMjFiNzI3Li4xYTFjODQ3ZGM0OTdkYzY0ODQ1ZjU2ZWNlNTkyNjNhNDI2YWY2MzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRv
clN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3Jr
ZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdvcmtlck5hdmln
YXRvclN0b3JhZ2VRdW90YSogV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKFdvcmtl
ck5hdmlnYXRvcioKIHsKICAgICBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIHN1cHBsZW1l
bnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqPihTdXBwbGVtZW50
PFdvcmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAg
ICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlck5hdmlnYXRvclN0b3JhZ2VR
dW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7
CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUo
bmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IDM3OTU2NTI2
ZmJmMjg2OTBlY2YwMzk5NTJjNTJmNmUwNDQ2YmNiNGMuLjk2OWMyMzdmN2M4MTU1MTUzZGUwNzFl
Yzk2YTYxYTRhNDYyZDNmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcApAQCAtNTUsNyArNTUsNyBA
QCBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMqIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczo6ZnJv
bShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMqIHN1
cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dTcGVlY2hTeW50aGVzaXMqPihTdXBwbGVt
ZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYg
KCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3aW5kb3cpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcz4od2luZG93
KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHBy
b3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuY3BwCmluZGV4IDcyYjU2M2U0YmJmN2RjZTAzZmEzMDg4MGQyZmE3NzBiODk4NjkzYTQu
LmU3YjYyYTFhMTdiZDk2YTlmNWExM2ZkMDllNzQ5YWI0YmNlMTk4NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApAQCAtNzMsNyAr
NzMsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6dm9pY2VzRGlkQ2hhbmdlKCkKIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXImIFNwZWVjaFN5bnRoZXNpczo6ZW5zdXJlUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcigpCiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpCi0g
ICAgICAgIG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyk7CisgICAgICAgIG1fcGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplciA9IG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyk7
CiAgICAgcmV0dXJuICptX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAK
aW5kZXggNjJmNjhlYzY2M2E4MDIxMmM2ZjNhZjdiODVlMjNjNmI0Zjc0MmEwYS4uMmY1NDI3MmFj
NWMwMWQwYTIzMGU1YzBkZjA0NTI0YWZiMmE0ZTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMoUmVmPEFycmF5QnVmZmVy
PiYmIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmEKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kaW5n
VGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxs
YmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOworICAgIGF1dG8gZGVjb2RpbmdUYXNrID0g
bWFrZVVuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1vdmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwg
V1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spKTsKICAgICBt
X3F1ZXVlLmFwcGVuZChXVEZNb3ZlKGRlY29kaW5nVGFzaykpOyAvLyBub3RlIHRoYXQgb3duZXJz
aGlwIG9mIHRoZSB0YXNrIGlzIGVmZmVjdGl2ZWx5IHRha2VuIGJ5IHRoZSBxdWV1ZS4KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rl
ci5oCmluZGV4IGJjMDBlYjlmODdkMWJjZDU4Y2JmNzQ5YjdkYTdjNDkzY2Y3ZTg4NzYuLmNmOTI2
OWMzMDQ0YzQzMjJkNzQ0ZDA2MjlkZGEwZmE4OTQ5M2VjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKQEAgLTQyLDcgKzQy
LDggQEAgY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsKIC8vIEFzeW5jQXVkaW9EZWNvZGVyIGFz
eW5jaHJvbm91c2x5IGRlY29kZXMgYXVkaW8gZmlsZSBkYXRhIGZyb20gYW4gQXJyYXlCdWZmZXIg
aW4gYSB3b3JrZXIgdGhyZWFkLgogLy8gVXBvbiBzdWNjZXNzZnVsIGRlY29kaW5nLCBhIGNvbXBs
ZXRpb24gY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIHdpdGggdGhlIGRlY29kZWQgUENNIGRhdGEg
aW4gYW4gQXVkaW9CdWZmZXIuCiAKLWNsYXNzIEFzeW5jQXVkaW9EZWNvZGVyIHsKK2NsYXNzIEFz
eW5jQXVkaW9EZWNvZGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY0F1ZGlvRGVjb2Rlcik7CiBwdWJsaWM6CiAgICAg
QXN5bmNBdWRpb0RlY29kZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKaW5kZXggYmE4YzI1NWFl
N2Q3ZGE3M2JjOWZmNjU1NDNmMWUzN2JjOTU0MDRiMy4uMGZiNTViMDhmMGMxYTJiZTJkMDcwYzRl
MGQ4ZDhmNDY3ZTM0NmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKQEAgLTQwLDggKzQwLDgg
QEAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2EKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0b3IpOwotICAg
IGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBh
ZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG91dHB1dENo
YW5uZWxDb3VudCkpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRo
aXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG91
dHB1dENoYW5uZWxDb3VudCkpOwogfQogCiAvLyBXZSBvdmVycmlkZSBwdWxsSW5wdXRzKCkgYXMg
YW4gb3B0aW1pemF0aW9uIGFsbG93aW5nIHRoaXMgbm9kZSB0byB0YWtlIGFkdmFudGFnZSBvZiBp
bi1wbGFjZSBwcm9jZXNzaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAppbmRleCBiYzE4OWMwOGNi
ZWZjN2MxOTYwNjQ2NmMwNzY4YjhmYTYzNGIxNmFiLi4wYjlmMWNlZDg3NDViNWQ5OThkYzM4ZDYz
NmU3OTBhYmZiZTZlOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcApAQCAtNDIsOCArNDIsOCBA
QCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwog
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKQogewotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
SW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAxKSk7CiAKICAgICAvLyBUaGUgc3ViY2xhc3MgbXVzdCBjcmVhdGUgbV9wcm9jZXNzb3IuCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5jcHAKaW5kZXggNDBhYzMyYzVjNTVjM2QzMmQwZTE0YjZhN2QyMmIyNDY3
MzkwZjRiZi4uMjUxMGM0MGE3ZjYxMjNkNGM3ZmMyZDY0MGE5MGI0ZjBhOThlNmY5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1
ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZQog
ICAgIG1fcGxheWJhY2tSYXRlID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJwbGF5YmFj
a1JhdGUiLCAxLjAsIC1NYXhSYXRlLCBNYXhSYXRlKTsKIAogICAgIC8vIERlZmF1bHQgdG8gbW9u
by4gIEEgY2FsbCB0byBzZXRCdWZmZXIoKSB3aWxsIHNldCB0aGUgbnVtYmVyIG9mIG91dHB1dCBj
aGFubmVscyB0byB0aGF0IG9mIHRoZSBidWZmZXIuCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggOTk1NmMxNTg2MjE4OWM3MTQyOWNiY2ZkNjAwNDJmMDBjOThiYWVmNi4uZDRjZGI3NjU4YzBm
MzViNWZjOWEyMmNlODk4YmNiMmI5OWVlNGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIEF1ZGlv
Q29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAgICAsIG1fbG9nSWRl
bnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCiAjZW5kaWYKICAgICAsIG1fbWVkaWFTZXNz
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVudFF1
ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1f
ZXZlbnRRdWV1ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiB7CiAgICAg
Ly8gQWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFn
ZSBuYXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2JqZWN0IHdpdGgg
cGVuZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4KQEAgLTE2Niw3
ICsxNjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdAogI2VuZGlmCiAgICAgLCBtX2lzT2Zm
bGluZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8
R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShtYWtlVW5pcXVl
PEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiB7CiAgICAgY29uc3RydWN0Q29tbW9uKCk7CiAK
QEAgLTQzMiw3ICs0MzIsNyBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBBdWRpb0Nv
bnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYXJyYXlCdWZmZQogdm9pZCBBdWRpb0Nv
bnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRhLCBSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxBdWRpb0J1
ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2F1ZGlvRGVjb2Rl
cikKLSAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jQXVkaW9E
ZWNvZGVyPigpOworICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IG1ha2VVbmlxdWU8QXN5bmNBdWRp
b0RlY29kZXI+KCk7CiAgICAgbV9hdWRpb0RlY29kZXItPmRlY29kZUFzeW5jKFdURk1vdmUoYXVk
aW9EYXRhKSwgc2FtcGxlUmF0ZSgpLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUo
ZXJyb3JDYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDk3NTg4NzU0NzQ3ZTE1
MjQ4MTg5ZjQ5NzBjNmQzM2UzYzZhZTFlMTEuLmQ5YWJiOTc3N2E5ZDI1ZWVhZjI0MmZmNGZmZmM1
ZWM1ZWY0ODZjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhCiAgICAgLCBtX211dGVkKGZhbHNlKQogewogICAgIHNldE5vZGVUeXBl
KE5vZGVUeXBlRGVzdGluYXRpb24pOwotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlu
cHV0Pih0aGlzKSk7CiB9CiAKIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjp+QXVkaW9EZXN0aW5hdGlv
bk5vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1
YWRGaWx0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFk
RmlsdGVyTm9kZS5jcHAKaW5kZXggMTYzNzNjZTkzNzhkMzIyZmRkOWMyNTNmOWM3NmQ5NjNlNjEz
Y2QzYi4uNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4YjYzNmFiMmQ3NTZlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIEJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHNldE5vZGVUeXBlKE5v
ZGVUeXBlQmlxdWFkRmlsdGVyKTsKIAogICAgIC8vIEluaXRpYWxseSBzZXR1cCBhcyBsb3dwYXNz
IGZpbHRlci4KLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFkUHJvY2Vz
c29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxzZSk7CisgICAgbV9wcm9jZXNzb3IgPSBt
YWtlVW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2Up
OwogfQogCiBCaXF1YWRGaWx0ZXJUeXBlIEJpcXVhZEZpbHRlck5vZGU6OnR5cGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNz
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3Iu
Y3BwCmluZGV4IDBlNGUzNjg1YjgyY2U0NzdlYzRlNTg1NDdmMTZhZDhiNzBmYzc5MDQuLmU4NGI5
ODAzNTY3MGZiMWRjYzMyNzA5NjYzZDJiMzkwNTUyZTY1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgQmlxdWFkUHJvY2Vzc29yOjp+QmlxdWFkUHJvY2Vzc29yKCkKIAogc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRFNQS2VybmVsPiBCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOwogfQogCiB2b2lkIEJpcXVh
ZFByb2Nlc3Nvcjo6Y2hlY2tGb3JEaXJ0eUNvZWZmaWNpZW50cygpCkBAIC0xMjUsNyArMTI1LDcg
QEAgdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKGludCBuRnJlcXVl
bmNpZXMsIGNvbnN0IGZsb2F0KiBmcmVxdWUKICAgICAvLyB0byBhdm9pZCBpbnRlcmZlcmluZyB3
aXRoIHRoZSBwcm9jZXNzaW5nIHJ1bm5pbmcgaW4gdGhlIGF1ZGlvCiAgICAgLy8gdGhyZWFkIG9u
IHRoZSBtYWluIGtlcm5lbHMuCiAgICAgCi0gICAgYXV0byByZXNwb25zZUtlcm5lbCA9IHN0ZDo6
bWFrZV91bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKKyAgICBhdXRvIHJlc3BvbnNlS2Vy
bmVsID0gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOwogCiAgICAgcmVzcG9uc2VL
ZXJuZWwtPmdldEZyZXF1ZW5jeVJlc3BvbnNlKG5GcmVxdWVuY2llcywgZnJlcXVlbmN5SHosIG1h
Z1Jlc3BvbnNlLCBwaGFzZVJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKaW5kZXggMjBiOGRhMTllNWY0
MzljZmU1NDU1ZjAxZGMyOTA4NzQ0NmIyM2MwOC4uZGY1MGYyNjg3MzY4YWE1YzMyOTU0MTQ4MTUw
Nzc3YTAyOTE3MzJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTU5LDkgKzU5LDkgQEAgQ2hhbm5lbE1lcmdl
ck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW4KIAogICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBpbnB1
dHMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRzOyArK2kpCi0g
ICAgICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsK
KyAgICAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwogCi0g
ICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAg
ICAgCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKaW5kZXggNDYzNTQ5OGMwMzRj
NTkzMGI0ZThmMjIwODZlMTRiMmI0YmQyOTExNy4uODJmNjlhMDRmOTk5MjYxZDU4YzE1MmJmYzYw
MmEzNjYwOTYwOTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBAIC01MCwxMSArNTAsMTEgQEAgQ2hhbm5l
bFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNoYW5uZWxTcGxp
dHRlcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0
aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwog
CiAgICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVtYmVyIG9mIG91dHB1dHMgKGFibGUgdG8gaGFuZGxl
IHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBmZWQgdG8gYW4gaW5wdXQpLgogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsraSkKLSAgICAgICAgYWRk
T3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAg
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAg
IAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IDIzODJkYWJjYzljOTkyN2NhYzMxZDMyNzVm
MjIwM2NjOGY1OGEwOTMuLmUzNjY3N2NmZDc0NWU4YmJlMDJkYTNkYzRkZDdiYTFmMWE1M2RkNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmNwcApAQCAtNTIsOCArNTIsOCBAQCBDb252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShO
b2RlVHlwZUNvbnZvbHZlcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJ
bnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4K
ICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CkBAIC0xNDYsNyArMTQ2LDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQ29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKEF1ZGlvQnVmZmVyKiBidWZmZXIpCiAKICAg
ICAvLyBDcmVhdGUgdGhlIHJldmVyYiB3aXRoIHRoZSBnaXZlbiBpbXB1bHNlIHJlc3BvbnNlLgog
ICAgIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMgPSAhY29udGV4dCgpLmlzT2ZmbGluZUNvbnRl
eHQoKTsKLSAgICBhdXRvIHJldmVyYiA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiPihidWZmZXJC
dXMuZ2V0KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcywgTWF4RkZUU2l6ZSwg
MiwgdXNlQmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFsaXplKTsKKyAgICBhdXRvIHJldmVyYiA9
IG1ha2VVbmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2lu
Z1NpemVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRocmVhZHMsIG1fbm9y
bWFsaXplKTsKIAogICAgIHsKICAgICAgICAgLy8gU3luY2hyb25pemUgd2l0aCBwcm9jZXNzKCku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXgg
NDI2NWEwMDc0OWVhZmZmNmE5ZTFiOWQxZGRhNjBkNGRiNzAyOGIwMy4uODFiZDdkMTliMjdlNzQx
YjUwZjZmODRlNTFmN2NlMjU1NzgwMmI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBpbmxpbmUgRGVsYXlOb2Rl
OjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3Vi
bGUgbWF4RAogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlbGF5KTsKLSAgICBtX3Byb2Nlc3NvciA9
IHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEs
IG1heERlbGF5VGltZSk7CisgICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPERlbGF5UHJvY2Vz
c29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpOwogfQogCiBFeGNlcHRp
b25PcjxSZWY8RGVsYXlOb2RlPj4gRGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAppbmRleCBhNzVi
YTZiN2M5MmU3NDQ0YzY1NjA4ZThhZTE4ZjlkNTAwMDI2YTA0Li4xMDM2NmVmNmVhZmI2YzQ0ZGIx
OTEyNzFhOTk1ZDllNmQyYWNiYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApAQCAtNDcsNyArNDcsNyBAQCBEZWxheVByb2Nl
c3Nvcjo6fkRlbGF5UHJvY2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVs
PiBEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEZWxheURTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVs
YXlEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNz
b3JOb2RlLmNwcAppbmRleCBhYTBlNGE4MDExOWViZWQ5ZGQzNjk2YjNmYTEzMDVkZGYzMmJkMDUy
Li4xNDA5NmQ4ZjBjNTk2YTUyOTcxNjY2ZWY4MjY3YTAyM2ZkYjQ0YjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
Tm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXAKIHsKICAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJlc3Nvcik7CiAKLSAgICBhZGRJbnB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZhdWx0TnVtYmVyT2ZP
dXRwdXRDaGFubmVscykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+
KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMs
IGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CiAKICAgICBtX3RocmVzaG9sZCA9IEF1
ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAidGhyZXNob2xkIiwgLTI0LCAtMTAwLCAwKTsKICAg
ICBtX2tuZWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImtuZWUiLCAzMCwgMCwgNDAp
OwpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmluaXRpYWxp
emUoKQogICAgICAgICByZXR1cm47CiAKICAgICBBdWRpb05vZGU6OmluaXRpYWxpemUoKTsgICAg
Ci0gICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPER5bmFtaWNzQ29t
cHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7Cisg
ICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBtYWtlVW5pcXVlPER5bmFtaWNzQ29tcHJlc3Nvcj4o
c2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiB9CiAKIHZvaWQg
RHluYW1pY3NDb21wcmVzc29yTm9kZTo6dW5pbml0aWFsaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKaW5kZXggNmM5NGE1MjNjM2IyYTAyMTJiMmE1
NGExYTljOGYwMjZiYmQxZGI1Zi4uMjU3ZGYyZWNlMjMzOGNiY2JhYjllZDA1MTIzM2M2NGIxYzU3
ZjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAK
QEAgLTQ2LDggKzQ2LDggQEAgR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIAogICAgIG1fZ2FpbiA9IEF1ZGlvUGFyYW06OmNyZWF0ZShj
b250ZXh0LCAiZ2FpbiIsIDEuMCwgMC4wLCAxLjApOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZElucHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAzODFhZTcyNzk0ZmIwZTdmZWE2MzMxYWJkMzNiMjBj
MTU4NDVmZjliLi45MTJlNmViMjMyMTQ1NjQzZDZmZGFmYmMxMWU5Njc2NGMzZDJmNWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIE1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZU1lZGlhRWxlbWVudEF1ZGlvU291
cmNlKTsKIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBl
bmRpbmcgb24gd2hhdCB0aGUgbWVkaWEgZWxlbWVudCAuc3JjIGlzIHNldCB0by4KLSAgICBhZGRP
dXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBh
ZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIGlu
aXRpYWxpemUoKTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmMK
IAogICAgICAgICBpZiAoc291cmNlU2FtcGxlUmF0ZSAhPSBzYW1wbGVSYXRlKCkpIHsKICAgICAg
ICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUgLyBzYW1wbGVSYXRl
KCk7Ci0gICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IHN0ZDo6bWFrZV91bmlx
dWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVscyk7
CisgICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG1ha2VVbmlxdWU8TXVsdGlD
aGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBCeXBhc3MgcmVzYW1wbGluZy4KICAgICAgICAgICAg
IG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5jcHAKaW5kZXggNWIyYTUwMGRkMjk0ZDEwNTU4YmM3YTA4Y2Y3NzE2ZTQyNmI1YzJhYy4uZTQz
ZjU0NDhiYzI2Yjg2YWY2OTNkMDA5OTk1YzY3MzRmNjk1NWQzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWUKICAg
ICBhdWRpb1NvdXJjZVByb3ZpZGVyLT5zZXRDbGllbnQodGhpcyk7CiAgICAgCiAgICAgLy8gRGVm
YXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgZm9ybWF0
IG9mIHRoZSBNZWRpYVN0cmVhbSdzIGF1ZGlvIHRyYWNrLgotICAgIGFkZE91dHB1dChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFkZE91dHB1dChtYWtl
VW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwog
fQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpzZXRG
b3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjZQogICAgICAgICBtX211
bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CiAgICAgZWxzZSB7CiAgICAgICAgIGRvdWJs
ZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUgLyBzYW1wbGVSYXRlOwotICAgICAgICBt
X211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlDaGFubmVsUmVz
YW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgIG1fbXVsdGlD
aGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxl
RmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICB9CiAKICAgICBtX3NvdXJjZU51bWJlck9m
Q2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCA1YjUwMjliZmJjZTc3YWQ1YjZj
M2M4ODMyNjBkYjlkZWZkZjYxMDRiLi5hOTljZWFhZDZiNWMyMWUwOWRkMjI1M2MyYWNmMzA0NTU0
NzUzZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHNldFR5
cGUobV90eXBlKTsKIAogICAgIC8vIEFuIG9zY2lsbGF0b3IgaXMgYWx3YXlzIG1vbm8uCi0gICAg
YWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7Cisg
ICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAg
ICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Q
YW5uZXJOb2RlLmNwcAppbmRleCBmNjQ3NDY5ZTIzNTVlYjNhMGMwOWIzYjA4NTJiZmJlYzZlNDhk
MjhkLi41MWM2OTkxNmZmZGU3MGY1ZTY4MGFhOTI3Y2VmZWY3Y2E3MzJjM2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTU4LDggKzU4
LDggQEAgUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgLy8gTG9hZCB0aGUgSFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNs
eSBzbyB3ZSBkb24ndCBibG9jayB0aGUgSmF2YXNjcmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcg
dGhlIEhSVEYgZGF0YWJhc2UuCiAgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJh
c2VMb2FkZXI6OmNyZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQu
c2FtcGxlUmF0ZSgpKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
SW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAyKSk7CiAKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgogICAg
IG1fY2hhbm5lbENvdW50ID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGVyaW9kaWNXYXZlLmNwcAppbmRleCBiYjJhMDdkMjM1NGViYWY5NGQwMDQ2NWE0YjQxZDg2
MDU1NTk5ODZiLi5lYzlhMTdjNGY1NmViOTk2NmRjMTc2MjdlOTM0MDViYTFmZDQ4YzQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCkBA
IC0xOTIsNyArMTkyLDcgQEAgdm9pZCBQZXJpb2RpY1dhdmU6OmNyZWF0ZUJhbmRMaW1pdGVkVGFi
bGVzKGNvbnN0IGZsb2F0KiByZWFsRGF0YSwgY29uc3QgZmxvYXQqIGkKICAgICAgICAgcmVhbFBb
MF0gPSAwOwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUgYmFuZC1saW1pdGVkIHRhYmxlLgotICAg
ICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CisgICAgICAgIG1fYmFuZExpbWl0ZWRUYWJs
ZXMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihtX3BlcmlvZGljV2F2ZVNpemUp
KTsKIAogICAgICAgICAvLyBBcHBseSBhbiBpbnZlcnNlIEZGVCB0byBnZW5lcmF0ZSB0aGUgdGlt
ZS1kb21haW4gdGFibGUgZGF0YS4KICAgICAgICAgZmxvYXQqIGRhdGEgPSBtX2JhbmRMaW1pdGVk
VGFibGVzW3JhbmdlSW5kZXhdLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCAzYjYyODFkMWU4NDNlZDI5
OWNmNjE1M2M3MzI3OTcwNzQxODA2Nzc4Li44MDIzNzM0MDdmNzVkNDdlMjU5ZWI2MDU2MzgwZjYz
NWYxM2FjZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Jl
YWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgUmVhbHRpbWVBbmFseXNlcjo6
UmVhbHRpbWVBbmFseXNlcigpCiAgICAgLCBtX21pbkRlY2liZWxzKERlZmF1bHRNaW5EZWNpYmVs
cykKICAgICAsIG1fbWF4RGVjaWJlbHMoRGVmYXVsdE1heERlY2liZWxzKQogewotICAgIG1fYW5h
bHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KERlZmF1bHRGRlRTaXplKTsK
KyAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6
ZSk7CiB9CiAKIFJlYWx0aW1lQW5hbHlzZXI6On5SZWFsdGltZUFuYWx5c2VyKCkgPSBkZWZhdWx0
OwpAQCAtODMsNyArODMsNyBAQCBib29sIFJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUoc2l6
ZV90IHNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX2ZmdFNpemUgIT0g
c2l6ZSkgewotICAgICAgICBtX2FuYWx5c2lzRnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZy
YW1lPihzaXplKTsKKyAgICAgICAgbV9hbmFseXNpc0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFt
ZT4oc2l6ZSk7CiAgICAgICAgIC8vIG1fbWFnbml0dWRlQnVmZmVyIGhhcyBzaXplID0gZmZ0U2l6
ZSAvIDIgYmVjYXVzZSBpdCBjb250YWlucyBmbG9hdHMgcmVkdWNlZCBmcm9tIGNvbXBsZXggdmFs
dWVzIGluIG1fYW5hbHlzaXNGcmFtZS4KICAgICAgICAgbV9tYWduaXR1ZGVCdWZmZXIuYWxsb2Nh
dGUoc2l6ZSAvIDIpOwogICAgICAgICBtX2ZmdFNpemUgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5k
ZXggZDU5ZGVjZjk5NTE2ZjZkMDFhZjljMWQ5ZmRiZjFkMGIxMDE5ZTQwZi4uZDViM2FmYmYyNzEw
MTQ1MTQ5NGIxODkzNzc2OGI2MDVmNmEzYjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC02OCw4ICs2
OCw4IEBAIFNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiAgICAgQVNTRVJUKG51bWJlck9mSW5wdXRD
aGFubmVscyA8PSBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSk7CiAKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUphdmFTY3JpcHQpOwotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKKyAg
ICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAppbmRleCA0MTBkMWRh
ZjVjODk1NDAwOWZmMDYzNmE4MjkwMGJmOTRhZjRmOGYxLi5mM2QyMTIyZGY1MWM0ZjFhMjkyMjRl
NjkzYWI0OTViYmMyYjkzOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKQEAgLTQ5LDEyICs0OSwxMiBAQCB2
b2lkIFdhdmVTaGFwZXJEU1BLZXJuZWw6OmxhenlJbml0aWFsaXplT3ZlcnNhbXBsaW5nKCkKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3RlbXBCdWZmZXIpIHsKLSAg
ICAgICAgbV90ZW1wQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJl
bmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV90ZW1wQnVmZmVyMiA9IHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogNCk7Ci0gICAgICAgIG1f
dXBTYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0p
OwotICAgICAgICBtX2Rvd25TYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEb3duU2FtcGxlcj4o
UmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAgICAgICBtX3VwU2FtcGxlcjIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAgICAgICBtX2Rvd25T
YW1wbGVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0g
KiA0KTsKKyAgICAgICAgbV90ZW1wQnVmZmVyID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+
KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV90ZW1wQnVmZmVyMiA9IG1ha2VVbmlx
dWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogNCk7CisgICAgICAgIG1fdXBT
YW1wbGVyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0pOworICAgICAg
ICBtX2Rvd25TYW1wbGVyID0gbWFrZVVuaXF1ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1
bSAqIDIpOworICAgICAgICBtX3VwU2FtcGxlcjIgPSBtYWtlVW5pcXVlPFVwU2FtcGxlcj4oUmVu
ZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX2Rvd25TYW1wbGVyMiA9IG1ha2VVbmlxdWU8
RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXgg
ODQ4Njk5M2YyMTA4NGNjYzYxY2NkODBiMmMxODdlMDhjMTU1ZmQwMS4uNmU3ZThkZDFjOWMxOWZh
M2M4NWUzZDlkODU1YWI5ZjQ1Nzg1Yjc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV2F2ZVNo
YXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKICAgICA6IEF1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpKQogewog
ICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBlcik7Ci0gICAgbV9wcm9jZXNzb3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2FtcGxlUmF0ZSgp
LCAxKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8V2F2ZVNoYXBlclByb2Nlc3Nvcj4o
Y29udGV4dC5zYW1wbGVSYXRlKCksIDEpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nv
ci5jcHAKaW5kZXggMjg5YzM5ZjVmM2Y5ZjdhNzllOWE1YjZhNmQ4MzE1YjU5MWY0MzJkYS4uYmZl
NWUwZTQ3ZmI4NGEyOGM2M2M2ZTI4YjMyZTBmYzExZTVjNjdiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIFdhdmVTaGFwZXJQcm9jZXNzb3I6On5XYXZlU2hhcGVyUHJvY2Vzc29y
KCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBXYXZlU2hhcGVyUHJvY2Vzc29y
OjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFw
ZXJEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdhdmVTaGFwZXJEU1BL
ZXJuZWw+KHRoaXMpOwogfQogCiB2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6OnNldEN1cnZlKEZs
b2F0MzJBcnJheSogY3VydmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAppbmRleCBiMWM0OWRiNTIzYjkz
NmIwYTRlYzIyMTA0MWI3N2RhN2NjMTQ3OGZkLi4yMGQ2MDY5NzI0Mjg5NzM3Nzk4MmI4NGVlNzNk
NGRhNjM0ZWQ4ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgc3Ry
dWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKIHVzaW5nIENyZWRlbnRpYWxQ
cm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETEludGVyZmFjZTxCYXNp
Y0NyZWRlbnRpYWw+Pj47CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGluYXRvciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAppbmRleCA4YzNkMTM0NmM0MDMwY2Zi
M2Q4Mjc3MzdhMGExNWYzZjFjYjliYWQ3Li4xYjkxMmQ5OGQ5ZjA0ZjMwNzRhMWI4ZTFhNjI2MDFh
NDJmYWYzNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKQEAgLTE1MCw5ICsxNTAsOSBAQCBGaWRvSGlkTWVz
c2FnZTo6Rmlkb0hpZE1lc3NhZ2UodWludDMyX3QgY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29t
bWFuZCB0eXBlLCBjbwogICAgIHVpbnQ4X3Qgc2VxdWVuY2UgPSAwOwogCiAgICAgc2l6ZV90IHBv
cyA9IGRhdGEuc2l6ZSgpID4ga0hpZEluaXRQYWNrZXREYXRhU2l6ZSA/IGtIaWRJbml0UGFja2V0
RGF0YVNpemUgOiBkYXRhLnNpemUoKTsKLSAgICBtX3BhY2tldHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgdHlwZSwgZ2V0SW5pdFBhY2tldERh
dGEoZGF0YSksIGRhdGEuc2l6ZSgpKSk7CisgICAgbV9wYWNrZXRzLmFwcGVuZChtYWtlVW5pcXVl
PEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQYWNrZXREYXRhKGRh
dGEpLCBkYXRhLnNpemUoKSkpOwogICAgIGZvciAoOyBwb3MgPCBkYXRhLnNpemUoKTsgcG9zICs9
IGtIaWRDb250aW51YXRpb25QYWNrZXREYXRhU2l6ZSkKLSAgICAgICAgbV9wYWNrZXRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwg
c2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0RGF0YShkYXRhLCBwb3MpKSk7CisgICAg
ICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0
PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRpbnVhdGlvblBhY2tldERhdGEoZGF0YSwg
cG9zKSkpOwogfQogCiBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPEZpZG9IaWRJbml0UGFja2V0PiBpbml0UGFja2V0LCBzaXplX3QgcmVtYWluaW5nU2l6ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlk
UGFja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlk
UGFja2V0LmNwcAppbmRleCA1NWI3YjJkNzE1MzZhMjM1NDkxM2FlMzZlOWZiOTFlZjAwYThmMDgz
Li4yNmI4MGFhOGE1ZjEzOTYzYzc2OGU3ZTkyM2JiYWFiMmI4N2I1ZWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5pdFBhY2tldD4gRmlk
b0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShjCiAgICAgYXV0byBkYXRh
ID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CiAgICAgZGF0YS5hcHBlbmQoc2VyaWFsaXplZC5iZWdpbigp
ICsgaW5kZXgsIGRhdGFTaXplKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9I
aWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNvbW1hbmQsIFdURk1vdmUoZGF0YSksIHBheWxvYWRT
aXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElk
LCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CiB9CiAKIC8vIFUyRiBJbml0
aWFsaXphdGlvbiBwYWNrZXQgaXMgZGVmaW5lZCBhczoKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4gRmlkb0hpZENvbnRpbnVhdGlv
blBhY2tldDo6Y3JlYXRlRnJvbQogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1aW50OF90PigpOwog
ICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBkYXRhU2l6ZSk7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0Pihj
aGFubmVsSWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlLCBXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogLy8gVTJGIENvbnRpbnVhdGlvbiBwYWNrZXQgaXMgZGVmaW5lZCBhczoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5k
ZXggMDIxNDVkMGNjMmU4YzllYWRiMGM4ODI5NDFiODU5ZmMwYWU4MDUyZC4uNWI2NGEwODc0NmFm
ODA4MGNkMmU3MjUwM2ZhMDBkM2M5NDlmYjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9vbCBzZXRWZXJzaW9u
SW5OZXdEYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXN1bHQ7Ci0gICAgYXV0byB0YXNrID0g
c3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9wZW5UYXNrPigqdGhpcywgc2V0VmVyc2lvbkluTmV3
RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5p
cXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3lu
Y2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soV1RG
TW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwog
CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2UoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhzdGQ6Om1ha2Vf
dW5pcXVlPERhdGFiYXNlQ2xvc2VUYXNrPigqdGhpcywgc3luY2hyb25pemVyKSk7CisgICAgdGhy
ZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhtYWtlVW5pcXVlPERhdGFiYXNlQ2xvc2VUYXNrPigq
dGhpcywgc3luY2hyb25pemVyKSk7CiAKICAgICAvLyBGSVhNRTogaU9TIGRlcGVuZHMgb24gdGhp
cyBmdW5jdGlvbiBibG9ja2luZyB1bnRpbCB0aGUgZGF0YWJhc2UgaXMgY2xvc2VkIGFzIHBhcnQK
ICAgICAvLyBvZiBjbG9zaW5nIGFsbCBvcGVuIGRhdGFiYXNlcyBmcm9tIGEgcHJvY2VzcyBhc3Nl
cnRpb24gZXhwaXJhdGlvbiBoYW5kbGVyLgpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgRGF0YWJh
c2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0g
dHJ1ZTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9uUXVldWUudGFrZUZp
cnN0KCk7Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0
aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlx
dWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1vdmUodHJhbnNhY3Rpb24pKTsKICAgICBM
T0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9y
IHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0YXNrLT50cmFuc2FjdGlvbigpKTsKICAg
ICBkYXRhYmFzZVRocmVhZCgpLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsKIH0KQEAgLTU0
MSw3ICs1NDEsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgYXV0byYgdGhyZWFkID0gZGF0YWJhc2VU
aHJlYWQoKTsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFu
c2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxE
YXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oJnRyYW5zYWN0aW9uKTsKICAgICBMT0coU3RvcmFnZUFQ
SSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRoZSB0cmFuc2Fj
dGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKICAgICB0aHJlYWQuc2NoZWR1bGVUYXNrKFdURk1v
dmUodGFzaykpOwogfQpAQCAtNzYzLDcgKzc2Myw3IEBAIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNl
Ojp0YWJsZU5hbWVzKCkKICAgICBpZiAodGhyZWFkLnRlcm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5j
aHJvbml6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgYXV0byB0YXNrID0gc3Rk
OjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPigqdGhpcywgc3luY2hyb25pemVy
LCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUYWJsZU5hbWVz
VGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJ
bW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFz
a0NvbXBsZXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAzYmFiZDQ5NTY2ZjE0YTFiM2MwZDNiMTdi
ZjRjN2YzMmM1ZTNkNWY3Li5kNjQ5N2MzOTdmYTQ3NDI4NTllMDU4NjIyMzZlZGVlNDNkNGVmMzk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVGhyZWFkLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBE
YXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQoKQotICAgIDogbV90cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcj4oKSkKKyAg
ICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihtYWtlVW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29v
cmRpbmF0b3I+KCkpCiB7CiAgICAgbV9zZWxmUmVmID0gdGhpczsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRl
eCBkOGRkY2M1OTg1NTE1NzZkMmEyYzEwZjQyZTRhZDEyYTgyNTliNTE5Li5jMjhhOTZmNDU4Mzll
ZjU0ZGFmMWY5OWExYWQ1OGQ3ZWNkNGE2NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC01NDksNyArNTQ5
LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0
YWJhc2UpCiAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNl
TWFwR3VhcmQpOwogCiAgICAgaWYgKCFtX29wZW5EYXRhYmFzZU1hcCkKLSAgICAgICAgbV9vcGVu
RGF0YWJhc2VNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOworICAg
ICAgICBtX29wZW5EYXRhYmFzZU1hcCA9IG1ha2VVbmlxdWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7
CiAKICAgICBhdXRvIG9yaWdpbiA9IGRhdGFiYXNlLnNlY3VyaXR5T3JpZ2luKCk7CiAKQEAgLTk1
Niw3ICs5NTYsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkQ3JlYXRpbmdEYXRhYmFz
ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgYwogICAgIC8vIFdlIGRvbid0IHVz
ZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9pZCBtYWtpbmcgYW4gaXNvbGF0ZWQgY29weSBv
ZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAgYXV0byogbmFtZVNldCA9IG1fYmVpbmdDcmVh
dGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZVNldCkgewotICAgICAgICBhdXRvIG93bmVk
U2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoQ291bnRlZFNldDxTdHJpbmc+PigpOworICAgICAg
ICBhdXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxIYXNoQ291bnRlZFNldDxTdHJpbmc+PigpOwog
ICAgICAgICBuYW1lU2V0ID0gb3duZWRTZXQuZ2V0KCk7CiAgICAgICAgIG1fYmVpbmdDcmVhdGVk
LmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUob3duZWRTZXQpKTsKICAgICB9CkBA
IC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdE
YXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgYwogICAgIC8vIFdlIGRv
bid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9pZCBtYWtpbmcgYW4gaXNvbGF0ZWQg
Y29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAgYXV0byogbmFtZVNldCA9IG1fYmVp
bmdEZWxldGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZVNldCkgewotICAgICAgICBhdXRv
IG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAg
IGF1dG8gb3duZWRTZXQgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKICAgICAgICAg
bmFtZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nRGVsZXRlZC5hZGQob3Jp
Z2luLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmgKaW5kZXggODVm
MWI2MzVjM2U0OWIzZmUxYTgxZjk0ODc4MjQ4MGUxZGU0OGZiNS4uOGE1NGEzNjY3YTA3YWFjZTAz
YTk2MGZiMjU2NGY3ZWJkZjNiZDk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFNRTFJl
c3VsdFNldDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQmFja2VuZDsKIAogY2xhc3MgU1FMU3RhdGVt
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTUUxTdGF0
ZW1lbnQoRGF0YWJhc2UmLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8U1FMVmFsdWU+JiYsIFJlZlB0
cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4mJiwgUmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJh
Y2s+JiYsIGludCBwZXJtaXNzaW9ucyk7CiAgICAgflNRTFN0YXRlbWVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApp
bmRleCAyMGQ2OTczNDc3NGRiZmJmMzBiZDhmMzljZTRjNTk1NzIxNGU5MDBjLi40Y2IwNDFlNDUy
YzgwZjVmNTliYjI3MjFlYWI4ZWMxYThmNjE4MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtODMsNyArODMs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChjb25zdCBT
dHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYQogICAgIGVsc2UgaWYgKG1fcmVhZE9ubHkpCiAg
ICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0aG9yaXplcjo6UmVhZE9ubHlNYXNrOwog
Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTFN0YXRlbWVudD4obV9k
YXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFsdWVPcihWZWN0b3I8U1FMVmFsdWU+
IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNz
aW9ucyk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTFN0YXRlbWVudD4obV9k
YXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFsdWVPcihWZWN0b3I8U1FMVmFsdWU+
IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNz
aW9ucyk7CiAKICAgICBpZiAobV9kYXRhYmFzZS0+ZGVsZXRlZCgpKQogICAgICAgICBzdGF0ZW1l
bnQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKCk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBT
UUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KCkKICAgICB9CiAKICAg
ICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwotICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihtX2RhdGFiYXNlLT5zcWxpdGVE
YXRhYmFzZSgpLCBtX3JlYWRPbmx5KTsKKyAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVu
aXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9y
ZWFkT25seSk7CiAKICAgICBtX2RhdGFiYXNlLT5yZXNldERlbGV0ZXMoKTsKICAgICBtX2RhdGFi
YXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKaW5kZXggNzlhYTU2MTgxZmZl
ZjNhYjFhOTJhYTU3ZmVjZGI2ZmJhNTllNmYwYi4uMTI5ZDg2ZmZjZmJkMTU3YTgwYjAxOTJlM2I0
OTk3MTMzYmViNzgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2
ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIE5hdmlnYXRv
cldlYkRyaXZlciogTmF2aWdhdG9yV2ViRHJpdmVyOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9y
KQogewogICAgIE5hdmlnYXRvcldlYkRyaXZlciogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5h
dmlnYXRvcldlYkRyaXZlcio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3Is
IHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JXZWJEcml2ZXI+KCk7
CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yV2ViRHJp
dmVyPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAg
ICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmln
YXRvckdQVS5jcHAKaW5kZXggODhhOTc4MDQ0YmMxZTcwODkzMzU2NWRjNjJkMGEzMTQ2YjM4YjQy
Ni4uMzc2ZDE1NWNhOWIyZjVkMmE0YWIxODUyYzc3NmQ5YzE4ZjJlNTIyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIE5hdmlnYXRvckdQVSogTmF2aWdhdG9yR1BVOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9y
KQogewogICAgIE5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRv
ckdQVSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVt
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7CisgICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR1BVPigpOwogICAgICAgICBzdXBwbGVt
ZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAppbmRleCAxYjM0MjUwNGQ2OTU1MDhmMDgx
NmNjYjU1ODJmNWJkOWFhNzYxYTZiLi41ZjU3ZWYxMTc3NTMxYTBhYzNkOTYwZGViMWQ0Mzg3MTFh
NGYwNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaApAQCAtNjMs
NyArNjMsNyBAQCBjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24gZmluYWwgOiBwdWJsaWMgTmFt
ZWRUeXBlIHsKIAogICAgIGJvb2wgYWRkKEVudW1lcmF0aW9uTWVtYmVyJiYgbWVtYmVyKQogICAg
IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIHN0
ZDo6bWFrZV91bmlxdWU8RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUoKSwgbWFrZVVuaXF1
ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQuaXNOZXdFbnRyeTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRT
Y2FmZm9sZGluZy5oCmluZGV4IDBlMzFmZmJkZTBiMTQ4NmY2YzZmNjVlMjBlYjYzOGFlODgxYjg3
ZjguLmNiY2M0ODRiNjgyNTBjMGFhMDliNTk5NDNhZGM3OWU4MTAwOTI3NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2lu
dFNjYWZmb2xkaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaApAQCAtNTAsNiArNTAsNyBAQCBuYW1l
c3BhY2UgTWV0YWwgewogY2xhc3MgVHlwZU5hbWVyOwogCiBjbGFzcyBFbnRyeVBvaW50U2NhZmZv
bGRpbmcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgfkVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1
bmN0aW9uV3JpdGVyLmNwcAppbmRleCBjYTM0NmUzMmIyOTlhMTBjZWQyNTY1ZDAxZDg1NDUzYmQ4
MGQxNDc0Li40N2IwNjBhN2M1YWFmYzMyZTg4ODc1ZmZjNGFmODk4OTY4OTYyNTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0
aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApAQCAtNzY0LDkgKzc2NCw5IEBAIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6Y3JlYXRlRW50CiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUoKTsKICAgICB9OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hl
ZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJp
bnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyRW50cnlQ
b2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1f
bGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFu
dGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJp
bnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyRW50cnlQ
b2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1f
bGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFu
dGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRp
b24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyKQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25E
ZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3Mu
ZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVu
dFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZENvbG9yQXR0YWNobWVudHMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVu
Y3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1h
bnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5m
cmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZENvbG9yQXR0YWNobWVudHMp
OwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC03OTAsNyArNzkwLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gQ29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldy
aXRlcjo6Y3JlYXRlRW4KICAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSgpOwogICAgIH07CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVk
U2VtYW50aWNzLnNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcHV0
ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3Ms
IG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNo
ZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21wdXRlRW50cnlQb2lu
dFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFt
ZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGlj
cy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAppbmRl
eCAxODViYTBiMDg4YTVjZWQ0YzViNjYzNmZhOTQ0MmMwMDM0MGRkMDJhLi40MGI2MmMzN2RiZTI1
ODBlMjNkNTkwYzA5MWViYjQxN2NhOWI4MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCkBA
IC0yNzIsMTkgKzI3MiwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFzZVR5cGVOYW1lTm9kZT4gVHlw
ZU5hbWVyOjpjcmVhdGVOYW1lTm9kZShBU1Q6OlVubmFtZWRUeXBlJiB1bgogICAgIHN3aXRjaCAo
dW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpU
eXBlUmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxB
U1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVO
YW1lKCksIHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5h
bWUoKSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CiAgICAgfQogICAgIGNhc2UgQVNU
OjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewogICAgICAgICBhdXRvJiBwb2ludGVyVHlw
ZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0
ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0
VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNl
IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8m
IGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1
bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5UmVmZXJl
bmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5UmVm
ZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEFy
cmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCks
IGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CiAgICAgfQogICAgIGNhc2UgQVNU
OjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYgYXJyYXlUeXBlID0g
ZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlw
ZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBh
cnJheVR5cGUubnVtRWxlbWVudHMoKSk7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAppbmRleCAzMzNiZGY2MmMwMjk4NjZh
NzQ5YTNjNjEyZTVlNGRiYTE2YjI2YTdlLi5iZGVkNTNlMThhZmM4YTQ4MTc1ODFmYTNhZGMyMjc4
NTZlYmQ0ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTk2NiwxNCArOTY2LDE0IEBAIHZvaWQgQ2hlY2tlcjo6
dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xhcmF0aW9uKQogCiB2
b2lkIENoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Np
b24sIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB1bm5hbWVkVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlv
biB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewotICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZp
bmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90
eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3Zl
KHVubmFtZWRUeXBlKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiAgICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5
cGVBbm5vdGF0aW9uKSk7CiB9CiAKIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlwZShBU1Q6OkV4cHJl
c3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gcmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2UsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb24gPSBB
U1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQo
JmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZShyZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5h
ZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZShyZXNvbHZh
YmxlVHlwZVJlZmVyZW5jZSkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92
ZSh0eXBlQW5ub3RhdGlvbikpOwogfQpAQCAtOTgxLDEwICs5ODEsMTAgQEAgdm9pZCBDaGVja2Vy
Ojphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmUHRyPFJlc29sdmFi
bGVUeXBlUmVmZXIKIHZvaWQgQ2hlY2tlcjo6Zm9yd2FyZFR5cGUoQVNUOjpFeHByZXNzaW9uJiBl
eHByZXNzaW9uLCBSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0
aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7CiAgICAgcmVzb2x2aW5n
VHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJl
c3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Np
b24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOwor
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VV
bmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0sIFsmXShSZWZQ
dHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29s
dmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3Vs
dC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKICAgICB9KSk7CiAgICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlv
bihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKaW5kZXggN2NhYjZjOTVlYzM1NmU3NmFj
NWZjNGY3MDJiZGNjMWVhY2M5Zjg3MC4uZTY4ZTQ4NmU3ODViNGNjN2U3M2E0YjFkODQ3Nzg4ODUw
MWVlOTJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUGFyc2VyLmNwcApAQCAtNzQwLDE5ICs3NDAsMTkgQEAgYXV0byBQYXJzZXI6OnBhcnNl
U2VtYW50aWMoKSAtPiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpTZW1hbnRpYz4sIEVy
cm9yPgogICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpIHsKICAgICBjYXNlIFRva2VuOjpUeXBlOjpB
dHRyaWJ1dGU6IHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBTdGFnZUluT3V0U2VtYW50aWMpOwot
ICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUo
KnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4o
V1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6U3BlY2lh
bGl6ZWQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGlj
PihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6
U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5
cGU6OlJlZ2lzdGVyOiAgewogICAgICAgICBQQVJTRShyZXN1bHQsIFJlc291cmNlU2VtYW50aWMp
OwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1v
dmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRp
Yz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgZGVmYXVsdDogIHsKICAgICAgICAg
UEFSU0UocmVzdWx0LCBCdWlsdEluU2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1h
a2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJl
dHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAg
ICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAppbmRleCA1NTljZThiYTkzYjI5ZDUxN2ZhNzcz
ZjZhNWY1MjdkZGY0YTg1YjAxLi40NTcwMGNlZDhmZDM0NDljNGRhNDk1OWY3MWE0MDJhYTAyZDZl
NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFJlc29sdmluZ1R5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmluZ1R5cGUuaApAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBSZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc29sdmFibGVUeXBlUmVmZXJlbmNl
PiB7CiAvLyBJdCBleGlzdHMgc28gd2UgY2FuIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWZhdWx0IGNv
bnN0cnVjdG9yIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgogLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTggVGhpcyB3cmFwcGVyIG1pZ2h0IG5vdCBi
ZSBuZWNlc3NhcnkuCiBjbGFzcyBSZXNvbHZpbmdUeXBlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvbHZpbmdUeXBlKCkKICAgICAgICAgOiBtX2lubmVy
KFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCmluZGV4IGJmOTBmNmMz
NjA1NDhkNTJjOGZkOGVlZWM3NTNjNzhkOGZhOWJmMWMuLmQ5NTIyMzA1YWRhMWVlOTcxZjE2NTI4
ZGUwNjYwNGJiNmE5NmIwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBXb3JrZXJOYXZp
Z2F0b3JHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3IqIG5hdmln
YXRvcikKIHsKICAgICBXb3JrZXJOYXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxXb3JrZXJOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PFdvcmtlck5hdmlnYXRvcj46OmZyb20o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmF2aWdh
dG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtl
ck5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1v
dmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggZWQ1YTNjYzgzNGZlMTlkNDg4OGI4NTU1
MDRiYTE1NWQ0ODNmYzQwNy4uYzFiYWM4NmQzYWIyYjBkOTEzZmNlNzQyMTQzMWE5NDQ1OWVlZDJk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3Mu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7CiAgICAgfSkpOwpAQCAtMTY0LDcgKzE2NCw3
IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25u
ZWN0KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3BlbmRpbmdU
YXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVzc2Fn
ZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2Uu
aXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAo
bV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2Fn
ZSk7CiAgICAgfSkpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
CiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNl
aXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogewotICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJpbmFyeURhdGEg
PSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUg
eworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJpbmFy
eURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11
dGFibGUgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5hcnlEYXRhKSk7CiAgICAgfSkpOwpAQCAtMTg2
LDcgKzE4Niw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfCiAKIHZvaWQgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNp
Z25lZCBidWZmZXJlZEFtb3VudCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBp
ZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkVXBkYXRlQnVmZmVyZWRBbW91
bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0pKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRB
bW91bnQodW5zaWduZWQgYgogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwogICAgIH0pKTsK
QEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIAogdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1
ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29t
cGxldGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgdW5zaWduZWQgc2hvcnQg
Y29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNs
b3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRD
b3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFw
cGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9z
aW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29w
eSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVu
dCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRB
bW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOwogICAgICAg
ICB9KSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1ZmZlcmUKIAogdm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNz
YWdlRXJyb3IoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rh
c2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZU1lc3NhZ2VFcnJvcigpOwogICAgIH0pKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VF
cnJvcigpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRVcGdyYWRlVVJMKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRp
bmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZFVwZ3JhZGVVUkwoKTsKICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNjA3MTQ0MDkyNGZiMmNl
NjdmNTM0MDYyZDc5ZThlM2IwNGVlMWM1MC4uYTA3YTg3NjNhZmI5NjliNDIwNzBiYzQ5YTg2MjM5
Yjc4M2Q2ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtOTcsNyArOTcsNyBAQCBXZWJTb2NrZXRDaGFu
bmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMJiBy
ZXF1ZXN0ZWRVUgogICAgIG1fYWxsb3dDb29raWVzID0gdmFsaWRhdGVkVVJMLT5hcmVDb29raWVz
QWxsb3dlZDsKICAgICBTdHJpbmcgdXNlckFnZW50ID0gbV9kb2N1bWVudC0+dXNlckFnZW50KG1f
ZG9jdW1lbnQtPnVybCgpKTsKICAgICBTdHJpbmcgY2xpZW50T3JpZ2luID0gbV9kb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotICAgIG1faGFuZHNoYWtlID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJsLCBwcm90b2NvbCwg
dXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29raWVzKTsKKyAgICBtX2hhbmRzaGFr
ZSA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJv
dG9jb2wsIHVzZXJBZ2VudCwgY2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CiAgICAgbV9o
YW5kc2hha2UtPnJlc2V0KCk7CiAgICAgaWYgKG1fZGVmbGF0ZUZyYW1lci5jYW5EZWZsYXRlKCkp
CiAgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3IobV9kZWZsYXRlRnJh
bWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKQEAgLTcwMyw3ICs3MDMsNyBAQCBib29s
IFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewogICAgIEFTU0VSVCht
X291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAg
ICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRv
IGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0g
V2ViU29ja2V0RnJhbWU6Ok9wQ29kZVRleHQ7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVl
ZEZyYW1lVHlwZVN0cmluZzsKICAgICBmcmFtZS0+c3RyaW5nRGF0YSA9IHN0cmluZzsKQEAgLTcx
Myw3ICs3MTMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29u
c3QgQ1N0cmluZyYgc3RyaW5nKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9
PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3Vu
aXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRG
cmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5mcmFtZVR5
cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7CiAgICAgZnJhbWUtPnZlY3RvckRhdGEucmVzaXpl
KGRhdGFMZW5ndGgpOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFy
CiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVCbG9iRnJhbWUoV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZSBvcENvZGUsIEJsb2ImIGJsb2IpCiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFt
ZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtl
VW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBvcENvZGU7CiAgICAg
ZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlwZUJsb2I7CiAgICAgZnJhbWUtPmJsb2JE
YXRhID0gJmJsb2I7CkBAIC03NjMsNyArNzYzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpw
cm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgICAgICAgICByZWYoKTsgLy8gV2ls
bCBiZSBkZXJlZmVkIGFmdGVyIGRpZEZpbmlzaExvYWRpbmcoKSBvciBkaWRGYWlsKCkuCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFtX2Jsb2JMb2FkZXIpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChmcmFtZS0+YmxvYkRhdGEpOwotICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJy
YXlCdWZmZXIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlciA9IG1ha2VVbmlx
dWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIs
IHRoaXMpOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJT
dGFydGVkOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlci0+c3RhcnQobV9kb2N1bWVudC5n
ZXQoKSwgKmZyYW1lLT5ibG9iRGF0YSk7CiAgICAgICAgICAgICAgICAgbV9vdXRnb2luZ0ZyYW1l
UXVldWUucHJlcGVuZChXVEZNb3ZlKGZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKaW5k
ZXggZjJmYTYyMDljMDQ4ZjUxNTE4YTI1ZWVjMTNhZWYyNTY0YzlmNGU3Yi4uZWUzM2VhMGZlNWNm
MWQ1YmY3OWEyZGEwNjcwN2I3M2NkM2E3OGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcApA
QCAtMTU1LDcgKzE1NSw3IEBAIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OldlYlNvY2tldERlZmxh
dGVGcmFtZXIoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
PiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFt
ZT4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lPih0aGlzKTsKIH0KIAogYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZs
YXRlKCkgY29uc3QKQEAgLTE3MCw4ICsxNzAsOCBAQCBib29sIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmNhbkRlZmxhdGUoKSBjb25zdAogI2lmIFVTRShaTElCKQogdm9pZCBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRl
cjo6Q29udGV4dFRha2VPdmVyTW9kZSBtb2RlKQogewotICAgIG1fZGVmbGF0ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5kb3dCaXRzLCBtb2RlKTsKLSAgICBtX2lu
ZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4oKTsKKyAgICBtX2Rl
ZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXREZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7
CisgICAgbV9pbmZsYXRlciA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SW5mbGF0ZXI+KCk7CiAgICAg
aWYgKCFtX2RlZmxhdGVyLT5pbml0aWFsaXplKCkgfHwgIW1faW5mbGF0ZXItPmluaXRpYWxpemUo
KSkgewogICAgICAgICBtX2RlZmxhdGVyID0gbnVsbHB0cjsKICAgICAgICAgbV9pbmZsYXRlciA9
IG51bGxwdHI7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q28KIHN0
ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKICNpZiBVU0UoWkxJQikKLSAgICBh
dXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7
CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMp
OwogICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNOb25Db250cm9sT3BD
b2RlKGZyYW1lLm9wQ29kZSkgfHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBm
cmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkpIHsKQEAgLTE5Niw3
ICsxOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0
RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShXZWJTb2NrZXRGcgogICAgIGZyYW1lLnBheWxvYWRMZW5n
dGggPSBtX2RlZmxhdGVyLT5zaXplKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CiAjZW5kaWYKIH0K
IApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXRE
ZWZsYXRlQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4o
dGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+
KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpICYmIGZyYW1lLmNvbXByZXNzKSB7CiAgICAgICAg
IHJlc3VsdC0+ZmFpbCgiQ29tcHJlc3NlZCBiaXQgbXVzdCBiZSAwIGlmIG5vIG5lZ290aWF0ZWQg
ZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuY3BwCmluZGV4IDFkNmYxNzgyMmM4MDUyODFiNzBhNDE2MjBkY2RlZTZhZDJhYjg4OWMuLjRh
NDg2NWY4NDk0ZDA2MTNlYWMzMjFhNTk0ZjhiYWUxOTk5NmJiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcApA
QCAtNTIsNyArNTIsNyBAQCBXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIoaW50
IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUgY29udGV4dAogewogICAgIEFTU0VSVCht
X3dpbmRvd0JpdHMgPj0gOCk7CiAgICAgQVNTRVJUKG1fd2luZG93Qml0cyA8PSAxNSk7Ci0gICAg
bV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3RyZWFtPigpOworICAgIG1fc3RyZWFtID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8el9zdHJlYW0+KCk7CiAgICAgbWVtc2V0
KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKIH0KIApAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0KCkKIFdlYlNvY2tldEluZmxhdGVy
OjpXZWJTb2NrZXRJbmZsYXRlcihpbnQgd2luZG93Qml0cykKICAgICA6IG1fd2luZG93Qml0cyh3
aW5kb3dCaXRzKQogewotICAgIG1fc3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4o
KTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHpfc3Ry
ZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5nZXQoKSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk5
NDA3M2VhYTVlOGIyMzBkMWM4YjAwYzE2YzU5NjQzZTk3ODQyNjguLmRjNmY2NjBmZDM4OGNlZmZh
ZjBlYmVmNmU2NjBlNmI2OTViYjYzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0
CiAKICAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckds
b2JhbFNjb3BlKHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51
cFRhc2ssCi0gICAgICAgIFtjbGllbnRXcmFwcGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCks
ICZsb2FkZXJQcm94eSwgcGVlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGVlcj4oY2xpZW50V3JhcHBl
ci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92
aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgJmxvYWRlclByb3h5
LCBwZWVyID0gbWFrZVVuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVy
UHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgICAgICBp
ZiAoY2xpZW50V3JhcHBlci0+ZmFpbGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0aW9uKCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBJZiBCcmlkZ2U6OmluaXRpYWxpemUoKSBxdWl0dGVkIGVhcmxpZXIs
IHdlIG5lZWQgdG8ga2ljayBtYWluVGhyZWFkRGVzdHJveSgpIHRvIGRlbGV0ZSB0aGUgcGVlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKaW5k
ZXggZDk3YjVjMmE4NWE5ZDIzMjhmOTg0MGY0NGQzZDFlOTYzMmM4MmQ5ZS4uNzc2YzQzYWVjMGI5
YjViZGVhZGMzZGQ4OTEyNmFjZWQ2YmE3NTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgTmF2aWdhdG9y
V2ViVlIqIE5hdmlnYXRvcldlYlZSOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAg
IE5hdmlnYXRvcldlYlZSKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yV2ViVlIq
PihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViVlI+KCk7CisgICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yV2ViVlI+KCk7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBz
dXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9w
ZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9E
aWdlc3RPcGVuU1NMLmNwcAppbmRleCBiYzIzZDU5Y2MzMTIzN2IxNDk3YTc2YWNjNTlkM2VhZjVk
MmI1ODQwLi42Y2E2N2YzOTFhMzFmY2QzODY5MjU1YjIxZjJmY2I3ZjNmYmY5YmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9w
ZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5
cHRvRGlnZXN0T3BlblNTTC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RydWN0IENyeXB0b0RpZ2Vz
dENvbnRleHRJbXBsIDogcHVibGljIENyeXB0b0RpZ2VzdENvbnRleHQgewogCiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBjcmVhdGUoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHRJbXBsPigpOwog
ICAgIH0KIAogICAgIENyeXB0b0RpZ2VzdENvbnRleHRJbXBsKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCmluZGV4IDMxNTMxNjgwODA3YjcyZDVl
ZjkzODA5MTRlN2FlMjQwYWQ5ZDAzOTcuLmU1M2UxOTViMzVmNDk4Zjc5NTI1MTUxZWJjMmFjZWI1
ZmFmY2QyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2Nr
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5l
cmljLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAogc3RkOjp1bmlxdWVf
cHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDbG9ja0dlbmVyaWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2xvY2tHZW5lcmljPigp
OwogfQogCiBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbSBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCmluZGV4IGM2ODkzMjE1ZjA2YjBjNjc0ZDU0NjA4
MzNiMWE0ZDUxY2MzMmI2MTQuLjllMDcxYjc4MTRlNDRmZTAwNDQyZTY2YzcyMGIyYmZiMzEzMDY5
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NN
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCkBA
IC0zOSw3ICszOSw3IEBAIHN0YXRpYyBjb25zdCBpbnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAx
MDAwOwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IENsb2NrOjpjcmVhdGUoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENsb2NrQ00+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2xvY2tDTT4oKTsKIH0KIAogQ2xvY2tDTTo6Q2xvY2tDTSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBjYWNhYjg1NjhjODYxMTJkOWNk
ZmVmYzMwOTAyNmFkOWM4MTUzM2U1Li5iMzVmYzE1NjQzN2YxY2EwOWQ2NDIyYmQ1OWM3MTMzZmFj
MmM2MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKQEAgLTE1NzUsNyArMTU3NSw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVjb21wdXRl
SXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0
YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11dGF0ZXMoKQogewog
ICAgIGlmICghbV9jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKQotICAgICAgICBtX2NvbXB1
dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFYQ29tcHV0ZWRPYmpl
Y3RBdHRyaWJ1dGVDYWNoZT4oKTsKKyAgICAgICAgbV9jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNh
Y2hlID0gbWFrZVVuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU+KCk7CiB9CiAK
IHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBlZGZkYmIw
YTA2ZmQ2ZWRhMjUwNDhiOTcxOWI5ZWYxYmE5ZTEzNDQzLi5lNmRlYTk2MTFmOWI0ODgwYTVhMTli
OWFkMWUxYmRlNzFjMTg0Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
V2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0
aW9uLmNwcApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjp1cGRhdGVGaW5p
c2hlZFN0YXRlKERpZFNlZWsgZGlkU2VlaywgU3luY2hyb25vdXNseU5vdGlmeSBzeW5jCiAgICAg
ICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHN5bmNocm9ub3VzbHkgbm90aWZ5IGlzIGZhbHNlLCBx
dWV1ZSBhIG1pY3JvdGFzayB0byBydW4gZmluaXNoIG5vdGlmaWNhdGlvbiBzdGVwcyBmb3IgYW5p
bWF0aW9uIHVubGVzcyB0aGVyZQogICAgICAgICAgICAgLy8gaXMgYWxyZWFkeSBhIG1pY3JvdGFz
ayBxdWV1ZWQgdG8gcnVuIHRob3NlIHN0ZXBzIGZvciBhbmltYXRpb24uCiAgICAgICAgICAgICBt
X2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IHRydWU7Ci0gICAgICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFw
cGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldICgpIHsKICAgICAgICAgICAgICAgICBpZiAobV9maW5pc2hOb3RpZmljYXRp
b25TdGVwc01pY3JvdGFza1BlbmRpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgbV9maW5pc2hO
b3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoTm90aWZpY2F0aW9uU3RlcHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NUHJvbWlzZVByb3h5LmgKaW5kZXggN2RhNDZhNjE1MDRlZjI0ODE1YTY5NGRmYmEx
MmMyOGIxZWY0ZmU2Ni4uNjIxYjg5MDUxYmI0OGRiMDMwMWVhODA0N2M3YWZlZmZiNjhjZGU2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKQEAgLTYw
LDYgKzYwLDcgQEAgY2xhc3MgRE9NUHJvbWlzZVByb3h5IHsKIAogdGVtcGxhdGU8PgogY2xhc3Mg
RE9NUHJvbWlzZVByb3h5PElETFZvaWQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBET01Qcm9taXNlUHJveHkoKSA9IGRlZmF1bHQ7CiAgICAgfkRPTVByb21p
c2VQcm94eSgpID0gZGVmYXVsdDsKQEAgLTg0LDYgKzg1LDcgQEAgY2xhc3MgRE9NUHJvbWlzZVBy
b3h5PElETFZvaWQ+IHsKIC8vIEZvbnRGYWNlIGFuZCBGb250RmFjZVNldC4KIHRlbXBsYXRlPHR5
cGVuYW1lIElETFR5cGU+CiBjbGFzcyBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNr
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBSZXNv
bHZlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5
cGUgKCk+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAppbmRleCBkYjBjMWRjNzZmOGEyODk3MDQ1ZWUyY2ZjOTE5MjNkNThkZjFiNmY5Li5jNWM0
NzA2MWJmYWNhMWZjYTcyOGJlMjdiMGEyYjRhOWYwYjMwMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2
b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3Qm
IG9iamVjdCwgUmVmPEpTQzo6TWljcgogICAgIEpTRE9NV2luZG93QmFzZSYgdGhpc09iamVjdCA9
IHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSY+KG9iamVjdCk7CiAKICAgICBhdXRvIGNhbGxi
YWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFz
aykpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxs
YmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09i
amVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVE
T01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAq
dGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0
b20uY3BwCmluZGV4IDYyOTVmNTg0Y2ZlOGExNzI5ZGRmNmIxOGQ3NzU0OWZkNDRjOWEwYmUuLmRi
NWU3NzM0OTBiZWRmYmYzZTBjMTBjZjIzZDBhMzZjOGEzYmRhODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCkBAIC01NiwxMSAr
NTYsMTEgQEAgRXZlbnRUYXJnZXQqIEpTRXZlbnRUYXJnZXQ6OnRvV3JhcHBlZChWTSYgdm0sIEpT
VmFsdWUgdmFsdWUpCiBzdGQ6OnVuaXF1ZV9wdHI8SlNFdmVudFRhcmdldFdyYXBwZXI+IGpzRXZl
bnRUYXJnZXRDYXN0KFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CiAgICAgaWYgKGF1dG8q
IHRhcmdldCA9IGpzRHluYW1pY0Nhc3Q8SlNFdmVudFRhcmdldCo+KHZtLCB0aGlzVmFsdWUpKQot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFy
Z2V0LT53cmFwcGVkKCksICp0YXJnZXQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2
ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVkKCksICp0YXJnZXQpOwogICAgIGlmIChh
dXRvKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHZtLCB0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4od2luZG93LT53cmFwcGVk
KCksICp3aW5kb3cpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3Jh
cHBlcj4od2luZG93LT53cmFwcGVkKCksICp3aW5kb3cpOwogICAgIGlmIChhdXRvKiBzY29wZSA9
IHRvSlNXb3JrZXJHbG9iYWxTY29wZSh2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVkKCksICpz
Y29wZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPihz
Y29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZS5jcHAKaW5kZXggZDgzMTYwNGNiYWViODdmMDdkMTJlYWRkYTRiZjA1MzFhNzBiYjQwMi4uOWJk
NjY0NDYwMTcwNTQ5NWE5NGU3YjNmYWRmMDQ4ZjNjN2IwNDNmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAt
MTM1LDcgKzEzNSw3IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1Rv
RXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKCiAKICAgICBhdXRvIGNhbGxi
YWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFz
aykpOwogICAgIGF1dG8mIGNvbnRleHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRv
IG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+
KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFj
dGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRl
eHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBj
YWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAxMTRmZjNjOGE1ZGYwMzkw
MjgzYjFhNjdjZTYwOGQ3ZjQyNDZlN2MyLi4zNWNjZDQ5NjM1ZTA2MTE5NGU5NzI5M2U3MTJmN2Fh
MzcyYzQ5YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTMzMDAsNyArMzMwMCw3IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4gdHJhbnNmZXJB
cnJheUJ1ZmZlCiAgICAgaWYgKGFycmF5QnVmZmVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgYXV0byBjb250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRl
bnRzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5z
aXplKCkpOwogCiAgICAgSGFzaFNldDxKU0M6OkFycmF5QnVmZmVyKj4gdmlzaXRlZDsKICAgICBm
b3IgKHNpemVfdCBhcnJheUJ1ZmZlckluZGV4ID0gMDsgYXJyYXlCdWZmZXJJbmRleCA8IGFycmF5
QnVmZmVycy5zaXplKCk7IGFycmF5QnVmZmVySW5kZXgrKykgewpAQCAtMzQ1MSw3ICszNDUxLDcg
QEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
V2FzbU1vZHVsZUFycmF5IHdhc21Nb2R1bGVzOwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBtYWtlVW5pcXVlPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4oKTsKICAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZSgmc3RhdGUsIHZhbHVlLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywgaW1hZ2VC
aXRtYXBzLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgd2FzbU1vZHVsZXMsIApA
QCAtMzQ2OSw3ICszNDY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYKIAogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJs
b2JVUkxzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZVJldHVyblZhbHVlKCksIGNv
bnRleHQgPT0gU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlID8gV1RGTW92
ZShzaGFyZWRCdWZmZXJzKSA6IG51bGxwdHIsIFdURk1vdmUoaW1hZ2VCdWZmZXJzKQogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgICAgICAgICAsIHN0ZDo6bWFrZV91bmlxdWU8V2Fz
bU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKKyAgICAgICAgICAgICAgICAsIG1ha2VVbmlxdWU8
V2FzbU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKICNlbmRpZgogICAgICAgICAgICAgICAgICkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCA1YzQ2NjI5NGJlZTU2YzIxYmYwZjYzZDE1YjBmOGRmMGYyN2EzYTBlLi40
ZjRiMGNmM2I3ZWVjZGRkMDc4NzAyNTUyMDg4OTVlNDVmYTJhMDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMTY0LDcg
KzE2NCw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIEFTU0VSVChhcnJheUxlbmd0aCk7CiAKLSAgICBhdXRvIGFycmF5QnVmZmVyQ29udGVudHNB
cnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOworICAg
IGF1dG8gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk+KCk7CiAgICAgd2hpbGUgKGFycmF5TGVuZ3RoLS0pIHsKICAgICAgICAgdW5z
aWduZWQgYnVmZmVyU2l6ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXpl
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5jcHAKaW5kZXggMjQ2ZjY0YTlmNjMyMmI1ODcwY2JiNjgyZWRiMmQ0ZWRiOTUzZWM3Yy4uM2Ix
MTI1MmFlNjRjYWYyZTRmZTczOWUzMWVlMTA5OTU0ZDU2YTU5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgdm9pZCBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKFZNKiB2bSkKICAgICBK
U1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IG5ldyBKU1ZNQ2xpZW50RGF0YSgqdm0pOwogICAg
IHZtLT5jbGllbnREYXRhID0gY2xpZW50RGF0YTsgLy8gflZNIGRlbGV0ZXMgdGhpcyBwb2ludGVy
LgogICAgIAotICAgIHZtLT5oZWFwLmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6bWFrZV91bmlx
dWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGllbnREYXRhKSk7CisgICAgdm0tPmhl
YXAuYWRkTWFya2luZ0NvbnN0cmFpbnQobWFrZVVuaXF1ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+
KCp2bSwgKmNsaWVudERhdGEpKTsKICAgICAgICAgCiAgICAgY2xpZW50RGF0YS0+bV9ub3JtYWxX
b3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKCp2bSwgdHJ1ZSk7CiAgICAgdm0tPm1fdHlw
ZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9s
bGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCAxNmE3NmM0OTUyOWE0YmI4NzFjYjY2Y2EzYWQ3NWEyZDc2
YTgwNjU1Li5kMjM5ODU3YWEzYmRkZTlmZWI5Y2I4NzQwZmNmNWQ2NDllMzUwZGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5p
dFNjcmlwdCgpCiAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2Jq
ZWN0KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0p
KS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogCi0gICAg
bV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50Pigq
bV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxX
b3JrZXJDb25zb2xlQ2xpZW50PigqbV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobV9jb25zb2xlQ2xpZW50LmdldCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAppbmRleCAyOWM4MTg2ODM2ZWEw
NTQxMWU4ZjFlZDY0MWMwNTcwY2U4MTc2ODE1Li5hYTU2ZTJmZGU4NTU3N2FjZjljMDQ3NGM4OTg3
N2Y0ZTBkNWM1MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcApAQCAtODEsNyAr
ODEsNyBAQCBNZXRob2QqIENDbGFzczo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogICAgIGNvbnN0IENJbnN0YW5jZSogaW5z
dCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVj
dCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAgaWYgKG1faXNhLT5oYXNNZXRob2QgJiYg
bV9pc2EtPmhhc01ldGhvZChvYmosIGlkZW50KSkgewotICAgICAgICBhdXRvIG1ldGhvZCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q01ldGhvZD4oaWRlbnQpOworICAgICAgICBhdXRvIG1ldGhvZCA9IG1h
a2VVbmlxdWU8Q01ldGhvZD4oaWRlbnQpOwogICAgICAgICBDTWV0aG9kKiByZXQgPSBtZXRob2Qu
Z2V0KCk7CiAgICAgICAgIG1fbWV0aG9kcy5zZXQobmFtZS5pbXBsKCksIFdURk1vdmUobWV0aG9k
KSk7CiAgICAgICAgIHJldHVybiByZXQ7CkBAIC0xMDMsNyArMTAzLDcgQEAgRmllbGQqIENDbGFz
czo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFu
Y2UpIGNvbnN0CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmpl
Y3QoKTsKICAgICBpZiAobV9pc2EtPmhhc1Byb3BlcnR5ICYmIG1faXNhLT5oYXNQcm9wZXJ0eShv
YmosIGlkZW50KSkgewotICAgICAgICBhdXRvIGZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxDRmll
bGQ+KGlkZW50KTsKKyAgICAgICAgYXV0byBmaWVsZCA9IG1ha2VVbmlxdWU8Q0ZpZWxkPihpZGVu
dCk7CiAgICAgICAgIENGaWVsZCogcmV0ID0gZmllbGQuZ2V0KCk7CiAgICAgICAgIG1fZmllbGRz
LnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShmaWVsZCkpOwogICAgICAgICByZXR1cm4gcmV0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKaW5kZXggZjJmNjIwODJhODA4YTE5ZjEw
YTVkOTM1ZDkyMmI3NzNjMTIyMWMyOC4uMDRjZGRjZDI0Y2FhODI5YzMyZTU2ZWMyNzNhZmJkMzUx
ZjI1NGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCkBAIC00OSw2ICs0
OSw3IEBAIGNsYXNzIFJvb3RPYmplY3Q7CiBjbGFzcyBSdW50aW1lT2JqZWN0OwogCiBjbGFzcyBG
aWVsZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRl
KiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19jbGFzcy5tbQppbmRleCBiODZmNzUxYTBhNzEzOGJlMDA3NzZhNzhjYmMy
YTZkNDVkZDM3NTAyLi5hM2Q4ZDMyZjI4ZGQ4MDU4YTRhYjQ0MjczOTUzNDQwNzRmMjZjNzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KQEAgLTEzNCw3ICsxMzQs
NyBAQCBNZXRob2QqIE9iamNDbGFzczo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSW5zdGFuY2UqKSBjb25zdAogICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhp
c0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpvYmpjTWV0aG9kU2VsZWN0b3JdOwogCiAg
ICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlk
Z2UgTlNTdHJpbmcqKW1ldGhvZE5hbWUuZ2V0KCldKSB8fCAhc3RyY21wKG9iamNNZXRob2RTZWxl
Y3Rvck5hbWUsIGJ1ZmZlci5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBtZXRob2Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KHRoaXNDbGFzcywgb2JqY01ldGhvZFNlbGVj
dG9yKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IG1ha2VVbmlxdWU8T2JqY01ldGhv
ZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpOwogICAgICAgICAgICAgICAgIG1ldGhv
ZFB0ciA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtX21ldGhvZENhY2hlLmFkZChu
YW1lLmltcGwoKSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTE4OSw3ICsxODksNyBAQCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29ucwogICAgICAgICAgICAgICAg
IG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JLZXk6VVRGOEtleU5hbWVd
OwogCiAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBlZE5hbWUgaXNFcXVhbDoo
X19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB8fCBba2V5TmFtZSBpc0VxdWFs
OihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBD
RlN0cmluZ1JlZilrZXlOYW1lKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gbWFr
ZVVuaXF1ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilrZXlOYW1lKTsKICAgICAg
ICAgICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdldCgpOwogICAgICAgICAgICAgICAgIG1fZmll
bGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobmV3RmllbGQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTIyMCw3ICsyMjAsNyBAQCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5h
bWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29ucwog
ICAgICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1l
Rm9yS2V5Om9iamNJdmFyTmFtZV07CiAKICAgICAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUg
JiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0
KCldKSB8fCAhc3RyY21wKG9iamNJdmFyTmFtZSwganNOYW1lLmRhdGEoKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY0ZpZWxkPihv
YmpjSVZhcik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVl
PE9iamNGaWVsZD4ob2JqY0lWYXIpOwogICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IG5ld0Zp
ZWxkLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBtX2ZpZWxkQ2FjaGUuYWRkKG5hbWUuaW1w
bCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IGUwOGIwNDhlM2I1
Njg0Mjk4Y2RlZmQ5M2ViOTE4ODM4OTE1NmY0MzguLjNiOTNlMTg3ODM4NTRjMjQ0NDZlMWNmYTU3
NTg0NjZmMGYwYTdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW0KQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBp
ZiAoW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9rZVVuZGVm
aW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopXSl7CiAgICAgICAgIE9iamND
bGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0NsYXNzKj4ob2JqY0luc3RhbmNlLT5n
ZXRDbGFzcygpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+IGZhbGxiYWNr
TWV0aG9kKHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNl
bGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czop
KSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZCht
YWtlVW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZva2VV
bmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOwogICAgICAgICBj
b25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKj4oZXhlYy0+anNDYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwogICAgICAgICBmYWxs
YmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+aW52b2tlT2JqY01l
dGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAppbmRleCA4M2Q0
NGUwNjdmYmRmNTQ3ZjZjODhiNjdhMzZlYjUzZjY5MTQ2NmVlLi5mMTcxYTU4MjAzZjk4YWYxNTU0
NzgwZTA1MTllMDRhMWU1M2EwYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6cHJpbnQoKSBjb25zdAogI2VuZGlmCiAKIENvbWJp
bmVkVVJMRmlsdGVyczo6Q29tYmluZWRVUkxGaWx0ZXJzKCkKLSAgICA6IG1fcHJlZml4VHJlZVJv
b3Qoc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpKQorICAgIDogbV9wcmVmaXhU
cmVlUm9vdChtYWtlVW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkpCiB7CiB9CiAKQEAgLTIwOSw3
ICsyMDksNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybih1aW50NjRfdCBh
Y3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZQogICAgICAgICBpZiAobmV4dEVudHJ5
SW5kZXggIT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlID0gbGFz
dFByZWZpeFRyZWUtPmVkZ2VzW25leHRFbnRyeUluZGV4XS5jaGlsZC5nZXQoKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBsYXN0UHJlZml4VHJlZS0+ZWRnZXMuYXBwZW5kKFByZWZpeFRy
ZWVFZGdlKHttX2FscGhhYmV0LmludGVybmVkKHRlcm0pLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZp
eFRyZWVWZXJ0ZXg+KCl9KSk7CisgICAgICAgICAgICBsYXN0UHJlZml4VHJlZS0+ZWRnZXMuYXBw
ZW5kKFByZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0LmludGVybmVkKHRlcm0pLCBtYWtlVW5pcXVl
PFByZWZpeFRyZWVWZXJ0ZXg+KCl9KSk7CiAgICAgICAgICAgICBsYXN0UHJlZml4VHJlZSA9IGxh
c3RQcmVmaXhUcmVlLT5lZGdlcy5sYXN0KCkuY2hpbGQuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5oCmluZGV4IDhjN2UzZjdkN2YxZTBkNTVhYWQ4OTM0YWJiYTVh
YTcwZmI4Zjg1Y2YuLjc3ZmViNjBjNTBiYzhhNGYyNGIyNzY5NmFkMTEwZDFlZGE3NDI4MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC00OSw2ICs0OSw3IEBAIHN0cnVjdCBSZXNvdXJjZUxv
YWRJbmZvOwogLy8gMSkgSXQgc3RvcmVzIHRoZSBydWxlcyBmb3IgZWFjaCBjb250ZW50IGV4dGVu
c2lvbi4KIC8vIDIpIEl0IHByb3ZpZGVzIEFQSXMgZm9yIHRoZSBXZWJDb3JlIGludGVyZmFjZXMg
dG8gdXNlIHRob3NlIHJ1bGVzIGVmZmljaWVudGx5LgogY2xhc3MgQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyAt
IFJ1bGUgbWFuYWdlbWVudCBpbnRlcmZhY2UuIFRoaXMgY2FuIGJlIHVzZWQgYnkgdXBwZXIgbGF5
ZXIuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKaW5kZXggOTZlMmQ2MzRi
ODkzYjM5OTMwNGE4YjJiMjg1ZTYxZjRlNDY5ZGMwYy4uYjJhOWE3ODM1MjI3NzI4M2Y5NWQ4NDlk
MDNiMTU2ZmNkYzcyMWRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRs
ZUNyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAK
QEAgLTExNSwzMSArMTE1LDMxIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBP
cGVyYXRpb25zOjpEZWNyeXB0OgogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNToKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQOiB7CiAgICAgICAgICAgICBh
dXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1z
PihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOgogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6IHsKICAgICAgICAgICAg
IGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2Zi
UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2Zi
UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9B
bGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6
IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxn
b3JpdGhtQWVzQ3RyUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFF
U19HQ006IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5
cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRp
b25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTUxLDcgKzE1MSw3IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFf
NToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6IHsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHN0YXRl
LCB2YWx1ZS5nZXQoKSk7CkBAIC0xNjAsMTMgKzE2MCwxMyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlw
dG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAg
ICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpSU0FfUFNTOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9u
YXJ5PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE4MCw3ICsx
ODAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzM4NDoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfNTEyOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVu
aXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlw
dG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1Mx
X3YxXzU6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5
cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0YXRp
YyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+
IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VF
eGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVu
dGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hl
ZEtleUdlblBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjoKQEAgLTIxMyw3
ICsyMTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19LVzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBj
b252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1
ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4o
cGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewpAQCAtMjIzLDE0ICsyMjMsMTQgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNF
eGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFz
ZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElk
ZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkVDREg6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVy
dERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQo
KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMjQ5
LDcgKzI0OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAKICAgICAgICAgICAgIGF1dG8g
cGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBh
cmFtcz4oc3RhdGUsIG5ld1ZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQ
YXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6
IHsKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAg
ICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJh
bXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSGtk
ZlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOiB7CkBA
IC0yNjksNyArMjY5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlm
IChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
aGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhh
c2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBia2RmMlBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6SW1wb3J0S2V5OgogICAgICAgICBzd2l0Y2gg
KCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBRVNfUEtDUzFfdjFfNToKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNT
QV9QS0NTMV92MV81OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QV9QU1M6CkBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAg
cGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVl
KCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6
ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dD
TToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgogICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKLSAgICAgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0g
Y29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oc3RhdGUsIHZh
bHVlLmdldCgpKTsKQEAgLTMwNywxOSArMzA3LDE5IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0Fs
CiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAg
ICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RI
OiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0Fs
Z29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RG
OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBjYXNlIE9w
ZXJhdGlvbnM6OlVud3JhcEtleToKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKLSAgICAgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC0z
NDQsNyArMzQ0LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1z
ID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsKQEAgLTM1NCwxMiArMzU0LDEyIEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJl
bGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhh
c2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFy
YW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOgogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC01MjAsMTYgKzUyMCwxNiBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyb3NzVGhy
ZWFkQ29weUltcG9ydFBhcmFtcyhjbwogewogICAgIHN3aXRjaCAoaW1wb3J0UGFyYW1zLnBhcmFt
ZXRlcnNDbGFzcygpKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFz
czo6Tm9uZTogewotICAgICAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CiAgICAgICAgIHJlc3VsdC0+aWRlbnRpZmll
ciA9IGltcG9ydFBhcmFtcy5pZGVudGlmaWVyOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpFY0tleVBhcmFt
czoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQ
YXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFt
cz4oaW1wb3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1FY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRo
bUVjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzOjpDbGFzczo6SG1hY0tleVBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oY3Jv
c3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGltcG9y
dFBhcmFtcykpKTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpS
c2FIYXNoZWRJbXBvcnRQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25j
YXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oaW1wb3J0UGFyYW1zKSkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBv
cnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FIYXNo
ZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggZGJjY2M5MDBmMzM3NDhjZDIw
NjdmNjBjYjI5MGMwYmQ2MDA2NTUzMy4uYTQyZjU2NGY4MWZlMWYwZWEwOTQ0M2QxZjEwNTNjMWMz
Y2QwY2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApA
QCAtMjE3LDEyICsyMTcsMTIgQEAgY2xhc3MgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDog
cHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNh
dGVnb3J5KCkpIHsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXI6Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk51bWJlcj4o
bV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENh
bGNFeHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9hdFZhbHVlKCkpOwogICAgICAgICBjYXNl
IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0aDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxl
bmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aChtX3ZhbHVl
LT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNvcmU6OkZpeGVkKSk7
CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudDoKICAgICAgICAgY2Fz
ZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50TGVuZ3RoOiB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obV92YWx1ZS0+Y29udmVy
dFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24+KGNvbnZl
cnNpb25EYXRhKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lv
bkxlbmd0aD4obV92YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwg
UGVyY2VudENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7CiAgICAgICAgIH0KICAgICAgICAg
Ly8gT25seSB0eXBlcyB0aGF0IGNvdWxkIGJlIHBhcnQgb2YgYSBMZW5ndGggZXhwcmVzc2lvbiBj
YW4gYmUgY29udmVydGVkCiAgICAgICAgIC8vIHRvIGEgQ2FsY0V4cHJlc3Npb25Ob2RlLiBDYWxj
dWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50TnVtYmVyIG1ha2VzIG5vIHNlbnNlIGFzIGEgTGVuZ3Ro
LgpAQCAtNTIwLDcgKzUyMCw3IEBAIGNsYXNzIENTU0NhbGNPcGVyYXRpb24gZmluYWwgOiBwdWJs
aWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgICAgIG5vZGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5vZGUpKTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9w
ZXJhdGlvbj4oV1RGTW92ZShub2RlcyksIG1fb3BlcmF0b3IpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShub2RlcyksIG1fb3BlcmF0
b3IpOwogICAgIH0KIAogICAgIGRvdWJsZSBkb3VibGVWYWx1ZSgpIGNvbnN0IGZpbmFsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCmluZGV4IGM0NGNlYmM1
MTIwZWQ4MzI2ZDlhMWIyYTY1NmI5MzY3YjZlMTkxMjguLmU1YWU4Yjc3YTUxNGYwOWMzYjQ5NDQx
YjU2MmY1YzJhMWVjNzUxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZh
dWx0U3R5bGVTaGVldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5
bGVTaGVldHMuY3BwCkBAIC0xNjcsMTEgKzE2NywxMSBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNo
ZWV0czo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogICAgICAgICBzaW1wbGVEZWZhdWx0U3R5bGVT
aGVldCA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFkZWZhdWx0U3R5
bGUpOwotICAgICAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVT
ZXQ+KCkucmVsZWFzZSgpOworICAgICAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVl
PFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIH0KIAotICAgIGRlZmF1bHRTdHlsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7Ci0gICAgZGVmYXVsdFByaW50U3R5bGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRTdHls
ZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFByaW50U3R5
bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIG1lZGlhUXVlcnlTdHls
ZVNoZWV0ID0gJlN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKENTU1BhcnNlckNvbnRleHQoVUFT
aGVldE1vZGUpKS5sZWFrUmVmKCk7CiAKICAgICAvLyBTdHJpY3QtbW9kZSBydWxlcy4KQEAgLTE5
MCwxMCArMTkwLDEwIEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkU2ltcGxlRGVm
YXVsdFN0eWxlKCkKICAgICBBU1NFUlQoIWRlZmF1bHRTdHlsZSk7CiAgICAgQVNTRVJUKCFzaW1w
bGVEZWZhdWx0U3R5bGVTaGVldCk7CiAKLSAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRTdHlsZSA9IG1ha2VVbmlxdWU8
UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgLy8gVGhlcmUgYXJlIG5vIG1lZGlhLXNwZWNpZmlj
IHJ1bGVzIGluIHRoZSBzaW1wbGUgZGVmYXVsdCBzdHlsZS4KICAgICBkZWZhdWx0UHJpbnRTdHls
ZSA9IGRlZmF1bHRTdHlsZTsKLSAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VV
bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAKICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVl
dCA9IHBhcnNlVUFTaGVldChzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0LCBzdHJsZW4oc2ltcGxl
VXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQoKnNpbXBsZURlZmF1bHRTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5jcHAKaW5kZXggNzcwOWI1ZGVhZmJmZTlmOWFiMTFhYzA3N2M2MTlkNzk0ZDE2
NDJmMi4uNjQ2YzE0YTExYWM2NDViOTkyNjE0OWYyOWU5ODAwYzRjNzI2N2JjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC03NywxMCArNzcsMTAgQEAgdm9pZCBDU1NGb250RmFj
ZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZhY2UsIENTU1ZhbHVlTGlzdCYgc3Jj
TGlzdCwgRG8KICAgICAgICAgICAgIGJvb2wgYWxsb3dEb3dubG9hZGluZyA9IGZvdW5kU1ZHRm9u
dCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxl
ZCgpKTsKICAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0
ZWRGb3JtYXQoKSAmJiBkb2N1bWVudCkgewogICAgICAgICAgICAgICAgIGlmIChDYWNoZWRGb250
KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KGRvY3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlz
SW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpKQotICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFj
ZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3Vy
Y2UoKSwgY2FjaGVkRm9udCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZh
Y2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwgZm9udEZhY2VFbGVtZW50KTsKKyAgICAgICAg
ICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVt
LnJlc291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxlbWVudCk7CiAKICAgICAgICAgaWYgKHNv
dXJjZSkKICAgICAgICAgICAgIGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCAwNWUzYTNmNmUyMWJjOTI4
MTc4NTU2OWExNGFhNTBmZjUyZTRhMjcwLi4xOGU4MzRkNjkwYTZlYjUxMDFkYzkwYzhkZTVkYjVl
N2ExYjBjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKQEAgLTExOSw3
ICsxMTksNyBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZh
bWlseVJlZ2lzdGVyZWQoY29uc3QgU3RyaW5nJiBmYW1pbAogICAgICAgICBmYW1pbHlMaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVGb250RmFtaWx5VmFsdWUoZmFt
aWx5TmFtZSkpOwogICAgICAgICBmYWNlLT5zZXRGYW1pbGllcyhmYW1pbHlMaXN0LmdldCgpKTsK
ICAgICAgICAgZmFjZS0+c2V0Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyhpdGVtKTsKLSAgICAg
ICAgZmFjZS0+YWRvcHRTb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4o
ZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOworICAgICAgICBmYWNlLT5hZG9wdFNvdXJjZShtYWtl
VW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmYWNlLmdldCgpLCBmYW1pbHlOYW1lKSk7CiAgICAg
ICAgIEFTU0VSVCghZmFjZS0+Y29tcHV0ZUZhaWx1cmVTdGF0ZSgpKTsKICAgICAgICAgZmFjZXMu
YXBwZW5kKFdURk1vdmUoZmFjZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5n
UnVsZS5jcHAKaW5kZXggZGU2ZjM5ZDNmNWQ4NzMxZDk5ZTVlYjNjOTY4ZTI5YWQxZWFjYmZlNi4u
YzZjNWMzOTU0MGE1YzUwNWNkZjRkNTljNzQ2YzM5MTg1YzllMDNiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBDU1NSdWxlKiBDU1NH
cm91cGluZ1J1bGU6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiBDU1NSdWxlTGlzdCYgQ1NT
R3JvdXBpbmdSdWxlOjpjc3NSdWxlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NT
T01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTR3JvdXBpbmdSdWxlPj4oY29uc3RfY2FzdDxDU1NHcm91
cGluZ1J1bGUmPigqdGhpcykpOworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFr
ZVVuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTR3JvdXBpbmdSdWxlPj4oY29uc3RfY2FzdDxDU1NH
cm91cGluZ1J1bGUmPigqdGhpcykpOwogICAgIHJldHVybiAqbV9ydWxlTGlzdENTU09NV3JhcHBl
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3Bw
CmluZGV4IGZmZGQzZDBhYTY1N2YyNWVhZjMxZDU3MGM1ODY4ZWQ1MzA5ZTJlZmQuLjU1NTFmMmM2
OTE3ZDAzMzA3MjZhY2RmODEwOTFhOTFmYWI0ZTBiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBHZW5lcmF0
ZWRJbWFnZSogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0
U2l6ZSBzaXplKQogdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzYXZlQ2FjaGVkSW1hZ2VG
b3JTaXplKEZsb2F0U2l6ZSBzaXplLCBHZW5lcmF0ZWRJbWFnZSYgaW1hZ2UpCiB7CiAgICAgQVNT
RVJUKCFtX2ltYWdlcy5jb250YWlucyhzaXplKSk7Ci0gICAgbV9pbWFnZXMuYWRkKHNpemUsIHN0
ZDo6bWFrZV91bmlxdWU8Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXplLCBpbWFnZSkp
OworICAgIG1faW1hZ2VzLmFkZChzaXplLCBtYWtlVW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdl
PigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKIH0KIAogdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
OjpldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEZsb2F0U2l6ZSBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IGM5MDk4MzJkYTBlNTE5MDI1MzUxM2EzOTgz
MTkxYTdjMmYzOTMwMDUuLjZmMWViMzM4NmQ5ZmJjNzJkNDQzNzg1ZDFkMTljNGRkOGM1YzM3ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTIyMCw3ICsyMjAs
NyBAQCBDU1NLZXlmcmFtZVJ1bGUqIENTU0tleWZyYW1lc1J1bGU6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0CiBDU1NSdWxlTGlzdCYgQ1NTS2V5ZnJhbWVzUnVsZTo6Y3NzUnVsZXMoKQogewog
ICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09N
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0tleWZyYW1lc1J1
bGU+PigqdGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVl
PExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMpOwogICAgIHJldHVybiAq
bV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCmluZGV4IDQ4MGE4OTg1MjM3YWRhOTBhMTE3OGUwYjI3OWUwZTY2ODA3ZTMzNDEuLmM4OGQx
ZWRjOTNiN2E2YzgzZjIxNzdiYWM3NjdmOWI3ODJlZTc1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IENT
U1N0eWxlU2hlZXQ6OmNzc1J1bGVzKCkKICAgICBpZiAoIWNhbkFjY2Vzc1J1bGVzKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKLSAg
ICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVTaGVl
dENTU1J1bGVMaXN0Pih0aGlzKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1h
a2VVbmlxdWU8U3R5bGVTaGVldENTU1J1bGVMaXN0Pih0aGlzKTsKICAgICByZXR1cm4gbV9ydWxl
TGlzdENTU09NV3JhcHBlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFp
bnRXb3JrbGV0LmNwcAppbmRleCA2NWEyZmRmOGRmYWNiNGQ3ZjcxZDc2MWNiMjE2NmIxYTkyODRj
MDcwLi45MTRiZGU0YTJkZTlhYTIxMDZjMDEwNjNiODA4ZDljYTRmZmY2ZGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcApAQCAtNDUsNyArNDUsNyBAQCBET01D
U1NQYWludFdvcmtsZXQqIERPTUNTU1BhaW50V29ya2xldDo6ZnJvbShET01DU1NOYW1lc3BhY2Um
IGNzcykKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NQ1NTUGFpbnRX
b3JrbGV0Kj4oU3VwcGxlbWVudDxET01DU1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01DU1NQYWludFdvcmtsZXQ+KGNzcyk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihj
c3MpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1
c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5LmNwcAppbmRleCA3ZWNkOTNkN2RjM2Q0MzJlYWY4MmJjOTU2ZTYxZDQ4OWE1MTA2
MjViLi4wZGY2YWFlOTZmMGUxYzcwYjM3NTU2MTY0OWVlMzVkMjhlYjRjMzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkqIERPTUNTU1JlZ2lz
dGVyQ3VzdG9tUHJvcGVydHk6OmZyb20oRE9NQ1NTTmFtZXNwYWNlCiB7CiAgICAgYXV0byogc3Vw
cGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkqPihTdXBw
bGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZyb20oJmNzcywgc3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNzcyk7CisgICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eT4oY3NzKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgIHByb3ZpZGVUbygmY3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRS
dWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKaW5k
ZXggZDg1OTZmZDFiMjQ1OWRlMDdlMWM4OTljYzA3OWZjMTk4NTExNjVlOS4uODJiN2ZjYzMwZTU4
Mjc0OTkyMDJlMjhiODMwODZjZjBmYTQ0YWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBib29sIERvY3VtZW50UnVsZVNldHM6OnNf
aXNJbnZhbGlkYXRpbmdTdHlsZVdpdGhSdWxlU2V0cyB7IGZhbHNlIH07CiBEb2N1bWVudFJ1bGVT
ZXRzOjpEb2N1bWVudFJ1bGVTZXRzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiAgICAg
OiBtX3N0eWxlUmVzb2x2ZXIoc3R5bGVSZXNvbHZlcikKIHsKLSAgICBtX2F1dGhvclN0eWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5p
cXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0Zp
dCgpOwogfQogCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6dXBkYXRl
VXNlckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQoKSBjb25zdAogCiAgICAgLy8gTWVkaWEg
cXVlcmllcyBvbiB1c2VyIGFnZW50IHNoZWV0IG5lZWQgdG8gZXZhbHVhdGVkIGluIGRvY3VtZW50
IGNvbnRleHQuIFRoZXkgYmVoYXZlIGxpa2UgYXV0aG9yIHNoZWV0cyBpbiB0aGlzIHJlc3BlY3Qu
CiAgICAgYXV0byYgbWVkaWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1
ZXJ5RXZhbHVhdG9yKCk7Ci0gICAgbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUgPSBt
YWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUtPmFk
ZFJ1bGVzRnJvbVNoZWV0KCpDU1NEZWZhdWx0U3R5bGVTaGVldHM6Om1lZGlhUXVlcnlTdHlsZVNo
ZWV0LCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCAmbV9zdHlsZVJlc29sdmVyKTsKIAogICAgIC8vIFZp
ZXdwb3J0IGRlcGVuZGVudCBxdWVyaWVzIGFyZSBjdXJyZW50bHkgdG9vIGluZWZmaWNpZW50IHRv
IGFsbG93IG9uIFVBIHNoZWV0LgpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNl
dHM6OmluaXRpYWxpemVVc2VyU3R5bGUoKQogewogICAgIGF1dG8mIGV4dGVuc2lvblN0eWxlU2hl
ZXRzID0gbV9zdHlsZVJlc29sdmVyLmRvY3VtZW50KCkuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKTsK
ICAgICBhdXRvJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yID0gbV9zdHlsZVJlc29sdmVyLm1lZGlhUXVl
cnlFdmFsdWF0b3IoKTsKLSAgICBhdXRvIHRlbXBVc2VyU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTZXQ+KCk7CisgICAgYXV0byB0ZW1wVXNlclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0
PigpOwogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0ID0gZXh0ZW5zaW9uU3R5
bGVTaGVldHMucGFnZVVzZXJTaGVldCgpKQogICAgICAgICB0ZW1wVXNlclN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChwYWdlVXNlclNoZWV0LT5jb250ZW50cygpLCBtZWRpYVF1ZXJ5RXZhbHVhdG9y
LCAmbV9zdHlsZVJlc29sdmVyKTsKICAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRz
KGV4dGVuc2lvblN0eWxlU2hlZXRzLmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCksICp0ZW1wVXNl
clN0eWxlLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCBtX3N0eWxlUmVzb2x2ZXIpOwpAQCAtMTE4LDcg
KzExOCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29u
c3QgVmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMpCiAgICAgc2l6ZV90IHNpemUgPSBydWxlcy5z
aXplKCk7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IHJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgYXV0byBydWxlU2V0
ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQogICAgICAgICBydWxlU2V0LT5hZGRSdWxlKHJ1bGVzW2ldLnJ1bGUsIHJ1bGVzW2ld
LnNlbGVjdG9ySW5kZXgsIHJ1bGVzW2ldLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICBydWxlU2V0
LT5zaHJpbmtUb0ZpdCgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMp
CiB2b2lkIERvY3VtZW50UnVsZVNldHM6OnJlc2V0QXV0aG9yU3R5bGUoKQogewogICAgIG1faXNB
dXRob3JTdHlsZURlZmluZWQgPSB0cnVlOwotICAgIG1fYXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRob3JTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNl
dD4oKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAK
QEAgLTE5NSwxMiArMTk1LDEyIEBAIHN0YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4q
IGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmCiAgICAgICAgICAg
ICBhdXRvIGFycmF5SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKmZlYXR1cmUubWF0Y2hF
bGVtZW50KTsKICAgICAgICAgICAgIGF1dG8mIHJ1bGVTZXQgPSBtYXRjaEVsZW1lbnRBcnJheVth
cnJheUluZGV4XTsKICAgICAgICAgICAgIGlmICghcnVsZVNldCkKLSAgICAgICAgICAgICAgICBy
dWxlU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgICAgICAgICAgICAgIHJ1
bGVTZXQgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgICAgICAgICBydWxlU2V0LT5hZGRS
dWxlKGZlYXR1cmUucnVsZSwgZmVhdHVyZS5zZWxlY3RvckluZGV4LCBmZWF0dXJlLnNlbGVjdG9y
TGlzdEluZGV4KTsKICAgICAgICAgICAgIGlmIChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9y
KQogICAgICAgICAgICAgICAgIGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlbYXJyYXlJbmRleF0u
YXBwZW5kKGZlYXR1cmUuaW52YWxpZGF0aW9uU2VsZWN0b3IpOwogICAgICAgICB9Ci0gICAgICAg
IGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxJbnZh
bGlkYXRpb25SdWxlU2V0Pj4oKTsKKyAgICAgICAgYXV0byBpbnZhbGlkYXRpb25SdWxlU2V0cyA9
IG1ha2VVbmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PigpOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0Y2hFbGVtZW50QXJyYXkuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgICAgIGlmIChtYXRjaEVsZW1lbnRBcnJheVtpXSkKICAgICAgICAgICAgICAgICBpbnZh
bGlkYXRpb25SdWxlU2V0cy0+YXBwZW5kKHsgc3RhdGljX2Nhc3Q8TWF0Y2hFbGVtZW50PihpKSwg
V1RGTW92ZShtYXRjaEVsZW1lbnRBcnJheVtpXSksIFdURk1vdmUoaW52YWxpZGF0aW9uU2VsZWN0
b3JBcnJheVtpXSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1
bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmNwcAppbmRleCAwNWQzODVhNTU4YzQ4YzQ4ZWU4ZGE5MGY2YTE4Y2I0ZTc1YTZhOTVhLi4wNWI0
NTdmZDY4MjBjNjdmMGUwZmJlOTMwODdiOGNlZjA4MjllYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpj
b2xsZWN0U2xvdHRlZFBzZQogICAgIGlmIChtX21hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHJ1bGVEYXRhVmVjdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4oKTsKKyAgICBhdXRvIHJ1bGVEYXRhVmVjdG9y
ID0gbWFrZVVuaXF1ZTxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4oKTsKICAgICBydWxlRGF0YVZl
Y3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX21hdGNoZWRSdWxlcy5zaXplKCkpOwogICAg
IGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBtX21hdGNoZWRSdWxlcykKICAgICAgICAgcnVsZURh
dGFWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCgqbWF0Y2hlZFJ1bGUucnVsZURhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAKaW5kZXggMjEyMjQ1ZGVkY2FmZjk1NmFkNDQxMDdiOWViNDRjYjQxMzI4
YWFkYi4uZTFiMWFmMjBmYjExYWUzZGZlZTE5MmNhYzkyZTYyY2RlYTU1N2RjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIGJvb2wgcG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcihDU1NGb250RmFjZSYg
Zm9udEZhY2UsIFJlZjxKU0M6OkFycmF5QnVmZmVyVmlldz4mJiBhcnJheUJ1ZmZlclZpZXcpCiB7
Ci0gICAgYXV0byBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihm
b250RmFjZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoYXJyYXlCdWZmZXJW
aWV3KSk7CisgICAgYXV0byBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihm
b250RmFjZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoYXJyYXlCdWZmZXJW
aWV3KSk7CiAgICAgZm9udEZhY2UuYWRvcHRTb3VyY2UoV1RGTW92ZShzb3VyY2UpKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDNiMjBkNDEzMzM3NTMzZDZjYjNjNThjYjNk
MTA0ZjBmMDRiNWU2MTkuLmUxZTFkNzIxMjExZTZkZTAxYThhODZlMGQ0MGQ4NTI4OTk3YjM1NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZh
bHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OndyYXBGb3JEZXByZWNhdGVkQ1MK
ICAgICAvLyBUaGUgbWFwIGlzIGhlcmUgdG8gbWFpbnRhaW4gdGhlIG9iamVjdCBpZGVudGl0eSBv
ZiB0aGUgQ1NTVmFsdWVzIG92ZXIgbXVsdGlwbGUgaW52b2NhdGlvbnMuCiAgICAgLy8gRklYTUU6
IEl0IGlzIGxpa2VseSB0aGF0IHRoZSBpZGVudGl0eSBpcyBub3QgaW1wb3J0YW50IGZvciB3ZWIg
Y29tcGF0aWJpbGl0eSBhbmQgdGhpcyBjb2RlIHNob3VsZCBiZSByZW1vdmVkLgogICAgIGlmICgh
bV9jc3NvbVZhbHVlV3JhcHBlcnMpCi0gICAgICAgIG1fY3Nzb21WYWx1ZVdyYXBwZXJzID0gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoTWFwPENTU1ZhbHVlKiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01W
YWx1ZT4+PigpOworICAgICAgICBtX2Nzc29tVmFsdWVXcmFwcGVycyA9IG1ha2VVbmlxdWU8SGFz
aE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKTsKICAgICAK
ICAgICBhdXRvJiBjbG9uZWRWYWx1ZSA9IG1fY3Nzb21WYWx1ZVdyYXBwZXJzLT5hZGQoaW50ZXJu
YWxWYWx1ZSwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4oKSkuaXRlcmF0b3ItPnZhbHVl
OwogICAgIGlmIChjbG9uZWRWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9S
dWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCmluZGV4
IGRmZmRhNmY1MWRmOTU0ZDIwNmYwM2QwYzczNTYwZGRhMzkyZDE0MzAuLjQ0ZWViMWQ3MDJkMmY5
ZGNiNmIxMmI1NTI3ODE1NjdmZDAwZDJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNw
cApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJl
cyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAKICAgICBmb3IgKGF1dG8mIG5hbWVBbmRNYXRj
aCA6IHNlbGVjdG9yRmVhdHVyZXMuY2xhc3NlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVuc3Vy
ZShuYW1lQW5kTWF0Y2guZmlyc3QsIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUt
PmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5k
ZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwgbmFtZUFuZE1hdGNoLnNlY29uZCkp
OwogICAgICAgICBpZiAobmFtZUFuZE1hdGNoLnNlY29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3Qp
CiAgICAgICAgICAgICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQobmFtZUFuZE1hdGNoLmZpcnN0
KTsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVy
ZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAgICAgICBhdXRvKiBzZWxlY3RvciA9IHNl
bGVjdG9yQW5kTWF0Y2guZmlyc3Q7CiAgICAgICAgIGF1dG8gbWF0Y2hFbGVtZW50ID0gc2VsZWN0
b3JBbmRNYXRjaC5zZWNvbmQ7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVuc3VyZShzZWxlY3Rv
ci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgW10g
ewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJl
Pj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+
KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVE
YXRhLnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxp
c3RJbmRleCgpLCBtYXRjaEVsZW1lbnQsIHNlbGVjdG9yKSk7CiAgICAgICAgIGlmIChtYXRjaEVs
ZW1lbnQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgYXR0cmlidXRlc0FmZmVj
dGluZ0hvc3QuYWRkKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpKTsKQEAgLTIwMSwxNCArMjAxLDE0IEBAIHZvaWQgUnVsZUZlYXR1cmVT
ZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3RoZXIpCiAgICAgdW5jb21tb25BdHRyaWJ1
dGVSdWxlcy5hcHBlbmRWZWN0b3Iob3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CiAgICAg
Zm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5jbGFzc1J1bGVzKSB7CiAgICAgICAgIGNs
YXNzUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5rZXksIFtdIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVlKTsKICAgICB9CiAg
ICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLmNsYXNzZXNBZmZlY3RpbmdIb3N0LmJl
Z2luKCksIG90aGVyLmNsYXNzZXNBZmZlY3RpbmdIb3N0LmVuZCgpKTsKIAogICAgIGZvciAoYXV0
byYga2V5VmFsdWVQYWlyIDogb3RoZXIuYXR0cmlidXRlUnVsZXMpIHsKICAgICAgICAgYXR0cmli
dXRlUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5rZXksIFtdIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVlKTsKICAgICB9CiAg
ICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdI
b3N0LmJlZ2luKCksIG90aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmVuZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmNwcAppbmRleCBmYTZiOTEyMDIxM2VjNTRiYjY1OTAzY2ZhZTY2OWJkNDY2ZmJi
MDI3Li4zYmJiYmZlYmNhMDA5OTc4MmFmMzk4MWViODY3MzZjZTY4MDM2ZWQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1J1bGVTZXQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBSdWxlU2V0OjphZGRUb1J1bGVT
ZXQoY29uc3QgQXRvbVN0cmluZyYga2V5LCBBdG9tUnVsZU1hcCYgbWFwLCBjb25zdCBSdWxlRGEK
ICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIHJ1bGVzID0gbWFwLmFkZChrZXksIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXJ1bGVzKQotICAgICAgICBydWxlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVsZURhdGFWZWN0b3I+KCk7CisgICAgICAgIHJ1bGVzID0gbWFrZVVuaXF1
ZTxSdWxlRGF0YVZlY3Rvcj4oKTsKICAgICBydWxlcy0+YXBwZW5kKHJ1bGVEYXRhKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDY5YWY1NTgx
NTY1NGJlMzIwZjFhOWZkNzFhNzc2NjdkOTI5M2ZhOTcuLjg4Nzc1YWQ3YmE4YWE1OTBhZDdiZjcy
YTM3ZDNiNWY2NWI1ZDJkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmgKQEAgLTM0OCw5ICszNDgsOSBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aAogICAg
IC8vIFR1cm4gdGhpcyBpbnRvIGEgY2FsYyBleHByZXNzaW9uOiBjYWxjKDEwMCUgLSBsZW5ndGgp
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+PiBsZW5ndGhz
OwogICAgIGxlbmd0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICBsZW5ndGhzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5n
dGgoMTAwLCBQZXJjZW50KSkpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOwotICAgIGF1dG8gb3AgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMp
LCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZCht
YWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOwor
ICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5n
dGg+KGxlbmd0aCkpOworICAgIGF1dG8gb3AgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3Bl
cmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKICAgICBy
ZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVS
YW5nZUFsbCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5k
ZXggOWExOTFkMTdkZDhlM2VkY2MxYzEzMGMyNjU5MGUwY2E2ZjRlMzZhMy4uYzVjMmJmNWQwZjVm
Yzc5MTBhZmYxNjI1OTk5MGM0Mzg2NjBjMTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaApAQCAtODEzLDcgKzgxMyw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJl
CiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFs
dWUoKnNoYWRvd1ZhbHVlLmNvbG9yKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29sb3Ig
PSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmNvbG9yKCk7Ci0gICAgICAgIGF1dG8gc2hhZG93RGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNw
cmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93
LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAg
IGF1dG8gc2hhZG93RGF0YSA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSks
IGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0
Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7
CiAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAg
ICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dE
YXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0
aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQpAQCAtODI5LDcgKzgyOSw3IEBAIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dFNoYWRvdyhTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sCiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bmhlcml0VGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPnRleHRTaGFkb3coKSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKnN0eWxl
UmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpKSA6IG51bGxwdHIpOworICAgIHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPnRleHRTaGFkb3coKSA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2
ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpKSA6IG51bGxwdHIpOwogfQogCiBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0U2hhZG93KFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTg0NCw3ICs4NDQsNyBAQCBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEJveFNoYWRvdyhTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdgogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdEJveFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewot
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpz
dHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpKSA6IG51bGxwdHIpOworICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50
U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29s
dmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpKSA6IG51bGxwdHIpOwogfQogCiBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVCb3hTaGFkb3coU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtMTM1OSw3ICsxMzU5LDcgQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudChTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAgICAgICAgICAgQ1NTVmFsdWVJRCBsaXN0U3R5bGVJ
ZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlSWRlbnQoKTsKICAgICAgICAgICAgIGlmIChs
aXN0U3R5bGVJZGVudCAhPSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICAgICAgbGlzdFN0eWxl
VHlwZSA9IHN0YXRpY19jYXN0PExpc3RTdHlsZVR5cGU+KGxpc3RTdHlsZUlkZW50IC0gQ1NTVmFs
dWVEaXNjKTsKLSAgICAgICAgICAgIGF1dG8gY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q291
bnRlckNvbnRlbnQ+KGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBj
b3VudGVyVmFsdWUtPnNlcGFyYXRvcigpKTsKKyAgICAgICAgICAgIGF1dG8gY291bnRlciA9IG1h
a2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0
U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpKTsKICAgICAgICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwog
ICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggNGNmNmM2ZjdhYjdkZjlmYzA0MzM0YmJlOGRk
MDVhM2I1NTllOTM1Yy4uMTljYjAzM2Q3MGJiNWE4OTY4NjU1NzI3NTViOTZiOTc3MDUxY2I2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTE1MzAsNyArMTUzMCw3
IEBAIENTU1N0eWxlRGVjbGFyYXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUNT
U1N0eWxlRGVjbGFyYXRpb24oKQogICAgICAgICBBU1NFUlQoIW1fY3Nzb21XcmFwcGVyLT5wYXJl
bnRFbGVtZW50KCkpOwogICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogICAgIH0KLSAg
ICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uPigqdGhpcyk7CisgICAgbV9jc3NvbVdyYXBwZXIgPSBtYWtlVW5pcXVlPFByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jc3NvbVdy
YXBwZXI7CiB9CiAKQEAgLTE1NDAsNyArMTU0MCw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24mIE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5
CiAgICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpID09ICZwYXJl
bnRFbGVtZW50KTsKICAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAg
bV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUNTU1N0eWxlRGVjbGFyYXRp
b24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKKyAgICBtX2Nzc29tV3JhcHBlciA9IG1ha2VVbmlx
dWU8SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMsIHBhcmVudEVsZW1lbnQpOwogICAg
IHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAppbmRleCAzYTUyYzM2MTk5YTc5YTI1ZTA5YzAxZDhmYTBjNTBhZWZmNjgyYmI1Li5kZTRk
YTVmNTUxMjk5MDkzMWRhODZjNWM3ZTgzYmNiMTAxODA4YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNzE1LDcgKzE3MTUsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxi
YWNrKAogICAgICAgICBpZiAoYXV0aG9yUm9sbGJhY2spCiAgICAgICAgICAgICByZXR1cm4gYXV0
aG9yUm9sbGJhY2s7CiAKLSAgICAgICAgYXV0byBuZXdBdXRob3JSb2xsYmFjayhzdGQ6Om1ha2Vf
dW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOworICAg
ICAgICBhdXRvIG5ld0F1dGhvclJvbGxiYWNrKG1ha2VVbmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVz
PihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CiAKICAgICAgICAgLy8gVGhpcyBzcGVjaWFsIHJv
bGxiYWNrIGNhc2NhZGUgY29udGFpbnMgVUEgcnVsZXMgYW5kIHVzZXIgcnVsZXMgYnV0IG5vIGF1
dGhvciBydWxlcy4KICAgICAgICAgbmV3QXV0aG9yUm9sbGJhY2stPmFkZE5vcm1hbE1hdGNoZXMo
bWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQu
cmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKQEAgLTE3MzIsNyArMTczMiw3IEBAIFN0eWxlUmVz
b2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0
aWVzRm9yUm9sbGJhY2soCiAgICAgICAgIGlmICh1c2VyUm9sbGJhY2spCiAgICAgICAgICAgICBy
ZXR1cm4gdXNlclJvbGxiYWNrOwogCi0gICAgICAgIGF1dG8gbmV3VXNlclJvbGxiYWNrKHN0ZDo6
bWFrZV91bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7
CisgICAgICAgIGF1dG8gbmV3VXNlclJvbGxiYWNrKG1ha2VVbmlxdWU8Q2FzY2FkZWRQcm9wZXJ0
aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CiAKICAgICAgICAgLy8gVGhpcyBzcGVjaWFs
IHJvbGxiYWNrIGNhc2NhZGUgY29udGFpbnMgb25seSBVQSBydWxlcy4KICAgICAgICAgbmV3VXNl
clJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5n
ZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBmYWxzZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvbWFrZXByb3AucGwKaW5kZXggOTk3YzRjMDM2N2RkNWQwZDY0NWQ1ZWRmNTFlZWM0YmZi
MGMzMjEwNS4uMDJhMzZlZmUwNWQzY2M5ZmU5N2RkNWMwZTI1OTNhZTc5ZmQ2YzJjNiAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9tYWtlcHJvcC5wbApAQCAtODExLDcgKzgxMSw3IEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXll
clByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICJGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSBudWxscHRyO1xuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGF1dG8qIHBhcmVudCA9ICZzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7IHBhcmVudCAm
JiBwYXJlbnQtPiIgLiAkdGVzdEZ1bmN0aW9uIC4gIigpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQo
KSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKCFjaGlsZCkg
e1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hp
bGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJU
eXBlKCRuYW1lKSAuICIpKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAg
ICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExheWVyPigiIC4gZ2V0
RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIiAgICAgICAgY2hpbGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7XG4iOwogICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICB9XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gIiAgICBjaGlsZC0+IiAuICRzZXR0ZXIgLiAiKHBhcmVudC0+IiAuICRnZXR0ZXIg
LiAiKCkpO1xuIjsKQEAgLTgzNyw3ICs4MzcsNyBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9w
ZXJ0eVZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgLy8g
V2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVhdGluZyBuZXcgbGF5
ZXJzIGFzIG5lZWRlZC5cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGZv
ciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7XG4iOwogICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgaWYgKCFjaGlsZCkge1xuIjsKLSAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBwcmV2aW91c0NoaWxkLT5z
ZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgk
bmFtZSkgLiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAg
ICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQobWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRG
aWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgICAgICAgICAgY2hpbGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7XG4iOwogICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgfVxuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGVNYXAoKS0+IiAuIGdl
dEZpbGxMYXllck1hcGZ1bmN0aW9uKCRuYW1lKSAuICIoIiAuICRDU1NQcm9wZXJ0eUlkIC4gIiwg
KmNoaWxkLCBpdGVtKTtcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcAppbmRleCA2N2NmZGY1NmQ2MjUwNTNhMDExMTk5MmQ3MTFmOGM4ZmZkYjk1ZGMyLi5k
NzVlNGZjOTJjNzdiMDdiMWU1M2RhZDMzODdlNTUxYTM5MGMyNWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgQ1NTUGFy
c2VySW1wbDo6Q1NTUGFyc2VySW1wbChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHN0cmkKICAgICAsIG1fc3R5bGVTaGVldChzdHlsZVNoZWV0KQogICAgICwg
bV9vYnNlcnZlcldyYXBwZXIod3JhcHBlcikKIHsKLSAgICBtX3Rva2VuaXplciA9IHdyYXBwZXIg
PyBzdGQ6Om1ha2VfdW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nLCAqd3JhcHBlcikgOiBzdGQ6
Om1ha2VfdW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nKTsKKyAgICBtX3Rva2VuaXplciA9IHdy
YXBwZXIgPyBtYWtlVW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nLCAqd3JhcHBlcikgOiBtYWtl
VW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nKTsKICAgICBpZiAoY29udGV4dC5kZWZlcnJlZENT
U1BhcnNlckVuYWJsZWQgJiYgIXdyYXBwZXIgJiYgc3R5bGVTaGVldCAmJiBydWxlUGFyc2luZyA9
PSBDU1NQYXJzZXI6OlJ1bGVQYXJzaW5nOjpEZWZlcnJlZCkKICAgICAgICAgbV9kZWZlcnJlZFBh
cnNlciA9IENTU0RlZmVycmVkUGFyc2VyOjpjcmVhdGUoY29udGV4dCwgc3RyaW5nLCAqc3R5bGVT
aGVldCk7CiB9CkBAIC0yODIsOSArMjgyLDkgQEAgQ1NTU2VsZWN0b3JMaXN0IENTU1BhcnNlcklt
cGw6OnBhcnNlUGFnZVNlbGVjdG9yKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFN0eWwKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2VsZWN0b3I7CiAgICAgaWYg
KCF0eXBlU2VsZWN0b3IuaXNOdWxsKCkgJiYgcHNldWRvLmlzTnVsbCgpKQotICAgICAgICBzZWxl
Y3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KFF1YWxpZmllZE5hbWUo
bnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHlsZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkp
KTsKKyAgICAgICAgc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFs
aWZpZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5h
bWVzcGFjZSgpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNlbGVjdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAgICAgc2VsZWN0b3IgPSBtYWtlVW5pcXVl
PENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBpZiAoIXBzZXVkby5pc051bGwoKSkgewog
ICAgICAgICAgICAgc2VsZWN0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
KENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcihwc2V1ZG8pKTsKICAg
ICAgICAgICAgIGlmICghc2VsZWN0b3IgfHwgc2VsZWN0b3ItPm1hdGNoKCkgIT0gQ1NTU2VsZWN0
b3I6OlBhZ2VQc2V1ZG9DbGFzcykKQEAgLTUzNSw3ICs1MzUsNyBAQCBSZWZQdHI8U3R5bGVSdWxl
TmFtZXNwYWNlPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lTmFtZXNwYWNlUnVsZShDU1NQYXJzZXJU
b2tlblJhbgogUmVmUHRyPFN0eWxlUnVsZU1lZGlhPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lTWVk
aWFSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBi
bG9jaykKIHsKICAgICBpZiAobV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxl
UnVsZU1lZGlhOjpjcmVhdGUoTWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KHBy
ZWx1ZGUsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KG1fY29udGV4dCkpLnJlbGVhc2VOb25OdWxs
KCksICBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywg
Km1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZU1lZGlhOjpjcmVh
dGUoTWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KHByZWx1ZGUsIE1lZGlhUXVl
cnlQYXJzZXJDb250ZXh0KG1fY29udGV4dCkpLnJlbGVhc2VOb25OdWxsKCksICBtYWtlVW5pcXVl
PERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsK
IAogICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IHJ1bGVzOwogCkBAIC01NjMsNyAr
NTYzLDcgQEAgUmVmUHRyPFN0eWxlUnVsZVN1cHBvcnRzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1l
U3VwcG9ydHNSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
IC8vIFBhcnNlIGVycm9yLCBpbnZhbGlkIEBzdXBwb3J0cyBjb25kaXRpb24KIAogICAgIGlmICht
X2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1cm4gU3R5bGVSdWxlU3VwcG9ydHM6OmNyZWF0
ZShwcmVsdWRlLnNlcmlhbGl6ZSgpLnN0cmlwV2hpdGVTcGFjZSgpLCBzdXBwb3J0ZWQsIHN0ZDo6
bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJl
ZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlU3VwcG9ydHM6OmNyZWF0ZShwcmVs
dWRlLnNlcmlhbGl6ZSgpLnN0cmlwV2hpdGVTcGFjZSgpLCBzdXBwb3J0ZWQsIG1ha2VVbmlxdWU8
RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwog
CiAgICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKSB7CiAgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVy
LT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OlN1cHBvcnRzLCBtX29ic2Vy
dmVyV3JhcHBlci0+c3RhcnRPZmZzZXQocHJlbHVkZSkpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIFJl
ZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IENTU1BhcnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNS
dWxlKGJvb2wgd2Via2l0UHJlZml4CiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBl
cnJvcjsgZXhwZWN0ZWQgaWRlbnQgdG9rZW4gaW4gQGtleWZyYW1lcyBoZWFkZXIKIAogICAgIGlm
IChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpj
cmVhdGUobmFtZSwgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4o
YmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVLZXlm
cmFtZXM6OmNyZWF0ZShuYW1lLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0
PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIGlmIChtX29ic2VydmVyV3JhcHBl
cikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIoKS5zdGFydFJ1bGVIZWFk
ZXIoU3R5bGVSdWxlOjpLZXlmcmFtZXMsIG1fb2JzZXJ2ZXJXcmFwcGVyLT5zdGFydE9mZnNldChy
YW5nZUNvcHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxl
Y3Rvci5jcHAKaW5kZXggNGRiZWY0MDU4YzcxNjJjZDk2NDZlYTc2NGRjYmI5YmJjZjMxZTQ1OS4u
YTA4NzBkMzc2MmNlYTQyZjViNWVhYmQwNWVhNzQ0ZjJkOWQ2YjM1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6
cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IoU3QKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2Vs
ZWN0b3I+KCk7CisgICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0
b3I+KCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQ
YWdlUHNldWRvQ2xhc3MpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQYWdlUHNldWRv
VHlwZShwc2V1ZG9UeXBlKTsKICAgICByZXR1cm4gc2VsZWN0b3I7CkBAIC02Myw3ICs2Myw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBh
cnNlUHNldWRvRWxlbWVudFNlbGVjdG9yCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxl
Y3Rvcj4oKTsKKyAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rv
cj4oKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBz
ZXVkb0VsZW1lbnQpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50
VHlwZShwc2V1ZG9UeXBlKTsKICAgICBBdG9tU3RyaW5nIG5hbWU7CkBAIC04NCwxMyArODQsMTMg
QEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6
cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yKFMKIHsKICAgICBhdXRvIHBzZXVkb1R5cGUgPSBwYXJz
ZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRTdHJpbmcocHNldWRvVHlwZVN0cmlu
Zyk7CiAgICAgaWYgKHBzZXVkb1R5cGUucHNldWRvQ2xhc3MgIT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVW5rbm93bikgewotICAgICAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAgICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlx
dWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5z
ZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwogICAgICAgICBzZWxlY3Rvci0+bV9z
ZWxlY3Rvci0+c2V0UHNldWRvQ2xhc3NUeXBlKHBzZXVkb1R5cGUucHNldWRvQ2xhc3MpOwogICAg
ICAgICByZXR1cm4gc2VsZWN0b3I7CiAgICAgfQogICAgIGlmIChwc2V1ZG9UeXBlLmNvbXBhdGli
aWxpdHlQc2V1ZG9FbGVtZW50ICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VW5rbm93bikg
ewotICAgICAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxl
Y3Rvcj4oKTsKKyAgICAgICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2Vs
ZWN0b3I+KCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQ
c2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9UeXBlLmNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50KTsK
ICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFZhbHVlKHBzZXVkb1R5cGVTdHJpbmcu
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CkBAIC0xMDAsMTIgKzEwMCwxMiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVk
b0NsYXNzU2VsZWN0b3IoUwogfQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0
b3IoKQotICAgIDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPigpKQor
ICAgIDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENTU1NlbGVjdG9yPigpKQogewogfQogCiBDU1NQ
YXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
UU5hbWUpCi0gICAgOiBtX3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRh
Z1FOYW1lKSkKKyAgICA6IG1fc2VsZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5h
bWUpKQogewogfQogCkBAIC0xMjYsNyArMTI2LDcgQEAgQ1NTUGFyc2VyU2VsZWN0b3I6On5DU1NQ
YXJzZXJTZWxlY3RvcigpCiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JW
ZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiYgc2VsZWN0
b3JWZWN0b3IpCiB7Ci0gICAgbV9zZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0KHN0ZDo6bWFrZV91
bmlxdWU8Q1NTU2VsZWN0b3JMaXN0PihXVEZNb3ZlKHNlbGVjdG9yVmVjdG9yKSkpOworICAgIG1f
c2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChtYWtlVW5pcXVlPENTU1NlbGVjdG9yTGlzdD4oV1RG
TW92ZShzZWxlY3RvclZlY3RvcikpKTsKIH0KIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0
TGFuZ0FyZ3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21TdHJpbmc+PiBhcmd1
bWVudExpc3QpCkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjph
cHBlbmRUYWdIaXN0b3J5KENTU1BhcnNlclNlbGVjdG9yQ29tYmluYXRvciByZWxhdGlvbiwgcwog
CiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnUU5hbWUsIGJvb2wgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKQogewotICAgIGF1
dG8gc2Vjb25kID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBh
dXRvIHNlY29uZCA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2Vjb25k
LT5tX3NlbGVjdG9yID0gV1RGTW92ZShtX3NlbGVjdG9yKTsKICAgICBzZWNvbmQtPm1fdGFnSGlz
dG9yeSA9IFdURk1vdmUobV90YWdIaXN0b3J5KTsKICAgICBtX3RhZ0hpc3RvcnkgPSBXVEZNb3Zl
KHNlY29uZCk7CiAKLSAgICBtX3NlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rv
cj4odGFnUU5hbWUsIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSk7CisgICAgbV9zZWxlY3RvciA9IG1h
a2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lLCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOwog
ICAgIG1fc2VsZWN0b3ItPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpTdWJzZWxlY3Rvcik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAK
aW5kZXggNDg4ZTYwMjNmMjAwMjRhZmZlZjg2MTdhNTE0YzQwOWJmNDlkMWVmMy4uNzA4ZWM3Nzcz
YzE4ZDZlMDhlMDAxY2FmYTNkMjhjODBkOWY4NzJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTI0MzUsNyArMjQzNSw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBhdGg+IGNvbnN1bWVCYXNpY1NoYXBlUGF0aChDU1NQ
YXJzZXJUb2tlblJhbmdlJiBhcmdzCiAgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSAhPSBTdHJp
bmdUb2tlbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgYXV0byBieXRlU3Ry
ZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIGJ5
dGVTdHJlYW0gPSBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOwogICAgIGlmICghYnVp
bGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgKmJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKaW5kZXggNmIzYWNjODVlNmZjNWU1Y2JiOTVh
YjlmZTFhNmM3Y2E5ZWY4MTA0Ny4uZjMzMjNiMjI2YjRiMDEwMGM5ODNjNDg2NjM3NWYxZTY1N2Ix
NzM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNl
ci5jcHAKQEAgLTU2NCw3ICs1NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKENTU1BhcnNlclRvawogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTGFuZzogewogICAgICAg
ICAgICAgLy8gRklYTUU6IENTUyBTZWxlY3RvcnMgTGV2ZWwgNCBhbGxvd3MgOmxhbmcoKi1mb28p
Ci0gICAgICAgICAgICBhdXRvIGFyZ3VtZW50TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PEF0b21TdHJpbmc+PigpOworICAgICAgICAgICAgYXV0byBhcmd1bWVudExpc3QgPSBtYWtlVW5p
cXVlPFZlY3RvcjxBdG9tU3RyaW5nPj4oKTsKICAgICAgICAgICAgIGlmICghY29uc3VtZUxhbmdB
cmd1bWVudExpc3QoYXJndW1lbnRMaXN0LCBibG9jaykpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgICAgICBzZWxlY3Rvci0+c2V0TGFuZ0FyZ3VtZW50TGlzdChXVEZN
b3ZlKGFyZ3VtZW50TGlzdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZS5jcHAKaW5kZXggOWViNWQ3ZTQ5ZjU2YTFlOThkMWZiYjliMjNlNmVh
NzJlMjI2MTU4Zi4uODgxMTdmMTllNGIyNmJhMjViZmYyNWE4NTU5MTczMmJiN2EzZTdmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3Bw
CkBAIC0zMzQsNyArMzM0LDcgQEAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OkVsZW1lbnRR
dWV1ZSYgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2sKIHsKICAgICBpZiAo
IXNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRRdWV1ZSkgewogICAgICAgICBzX3Byb2Nlc3NpbmdC
YWNrdXBFbGVtZW50UXVldWUgPSB0cnVlOwotICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRo
cmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmFja3VwRWxlbWVudFF1ZXVlTWlj
cm90YXNrPigpKTsKKyAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFw
cGVuZChtYWtlVW5pcXVlPEJhY2t1cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4oKSk7CiAgICAgfQog
ICAgIHJldHVybiBiYWNrdXBFbGVtZW50UXVldWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKaW5kZXggY2I3NTIzMjgwYzdiMzI1YzY2Y2RlNjQ2YzE1YmY1YTkxMzE3NDViYy4u
YzA5Yjg0MzYzNTUzNDFhOGVkNDBhNWE4Yjg1MTZiNmQ5N2JhNmRkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6
ZGlkQWRkRmlsZVRvSXRlbUxpc3QoKQogRGF0YVRyYW5zZmVySXRlbUxpc3QmIERhdGFUcmFuc2Zl
cjo6aXRlbXMoKQogewogICAgIGlmICghbV9pdGVtTGlzdCkKLSAgICAgICAgbV9pdGVtTGlzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8RGF0YVRyYW5zZmVySXRlbUxpc3Q+KCp0aGlzKTsKKyAgICAgICAg
bV9pdGVtTGlzdCA9IG1ha2VVbmlxdWU8RGF0YVRyYW5zZmVySXRlbUxpc3Q+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1faXRlbUxpc3Q7CiB9CiAKQEAgLTQxNiw3ICs0MTYsNyBAQCBib29sIERhdGFU
cmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogUmVmPERhdGFU
cmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRl
eHQpCiB7Ci0gICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0
ZWJvYXJkPigpOworICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVi
b2FyZD4oKTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9wbGFpbiJfcywgcGxh
aW5UZXh0KTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9odG1sIl9zLCBodG1s
VGV4dCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBT
dG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50
KSk7CkBAIC00NzEsNyArNDcxLDcgQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIAogUmVmPERhdGFUcmFuc2Zl
cj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFU
cmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFkV3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8
U3RhdGljUGFzdGVib2FyZD4oKSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CisgICAgYXV0byBk
YXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVN
b2RlOjpSZWFkV3JpdGUsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSwgVHlwZTo6RHJh
Z0FuZERyb3BEYXRhKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5tX29yaWdpbklkZW50aWZpZXIgPSBk
b2N1bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOwogICAgIHJldHVybiBkYXRh
VHJhbnNmZXI7CiB9CkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERy
YWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBpbnQgeCwgaW50IHkpCiAgICAgbV9kcmFnSW1hZ2Ug
PSBpbWFnZTsKICAgICBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAgICAgaWYgKCFtX2RyYWdJbWFn
ZUxvYWRlcikKLSAgICAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOworICAgICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIg
PSBtYWtlVW5pcXVlPERyYWdJbWFnZUxvYWRlcj4odGhpcyk7CiAgICAgICAgIG1fZHJhZ0ltYWdl
TG9hZGVyLT5zdGFydExvYWRpbmcobV9kcmFnSW1hZ2UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAppbmRleCAzMzYy
MjMxMDgxYjEzZjcyZGMxOGRhYzVmMzkwN2E1ZTdjMTdiMGJmLi5mMjExMzFmZjgyNzgyMWRjNzRl
ODUwYTk4ZjFiYjIzMDk5ZTAyNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjppc0FjdGl2ZUF0KFBhZ2UqIHBhZ2UpCiAKIHZvaWQg
cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8oUGFnZSYgcGFnZSwgRGV2aWNlT3JpZW50YXRpb25D
bGllbnQmIGNsaWVudCkKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnByb3Zp
ZGVUbygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgp
LCBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7
CisgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8oJnBhZ2UsIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkMTdmZjJjZmVjMTg3OGU2N2M1ODEw
NzkyODBiNDkxYjg4NTkzZTU5Li5lZDQ4NDg5N2ZhZDE5OTc3OGU4ODM5MzlkZDEyM2FlMmQ2YzZj
MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUyMSwxOSArNTIxLDE5IEBAIERvY3Vt
ZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1
bWVudENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX3F1aXJrcyhtYWtlVW5pcXVlUmVmPFF1aXJrcz4o
KnRoaXMpKQogICAgICwgbV9jYWNoZWRSZXNvdXJjZUxvYWRlcihtX2ZyYW1lID8gUmVmPENhY2hl
ZFJlc291cmNlTG9hZGVyPihtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigp
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKSA6IENhY2hlZFJlc291cmNlTG9hZGVyOjpjcmVhdGUo
bnVsbHB0cikpCiAgICAgLCBtX2RvbVRyZWVWZXJzaW9uKCsrc19nbG9iYWxUcmVlVmVyc2lvbikK
LSAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMp
KQotICAgICwgbV9leHRlbnNpb25TdHlsZVNoZWV0cyhzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lv
blN0eWxlU2hlZXRzPigqdGhpcykpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rU3RhdGUoc3RkOjptYWtl
X3VuaXF1ZTxWaXNpdGVkTGlua1N0YXRlPigqdGhpcykpCi0gICAgLCBtX21hcmtlcnMoc3RkOjpt
YWtlX3VuaXF1ZTxEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc3R5
bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9leHRlbnNp
b25TdHlsZVNoZWV0cyhtYWtlVW5pcXVlPEV4dGVuc2lvblN0eWxlU2hlZXRzPigqdGhpcykpCisg
ICAgLCBtX3Zpc2l0ZWRMaW5rU3RhdGUobWFrZVVuaXF1ZTxWaXNpdGVkTGlua1N0YXRlPigqdGhp
cykpCisgICAgLCBtX21hcmtlcnMobWFrZVVuaXF1ZTxEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI+
KCp0aGlzKSkKICAgICAsIG1fc3R5bGVSZWNhbGNUaW1lcihbdGhpc10geyB1cGRhdGVTdHlsZUlm
TmVlZGVkKCk7IH0pCiAgICAgLCBtX2RvY3VtZW50Q3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6
Om5vdygpKQotICAgICwgbV9zY3JpcHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRSdW5u
ZXI+KCp0aGlzKSkKLSAgICAsIG1fbW9kdWxlTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
TW9kdWxlTG9hZGVyPigqdGhpcykpCisgICAgLCBtX3NjcmlwdFJ1bm5lcihtYWtlVW5pcXVlPFNj
cmlwdFJ1bm5lcj4oKnRoaXMpKQorICAgICwgbV9tb2R1bGVMb2FkZXIobWFrZVVuaXF1ZTxTY3Jp
cHRNb2R1bGVMb2FkZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoWFNMVCkKICAgICAsIG1fYXBwbHlQ
ZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmFwcGx5UGVuZGluZ1hT
TFRyYW5zZm9ybXNUaW1lckZpcmVkKQogI2VuZGlmCiAgICAgLCBtX3htbFZlcnNpb24oIjEuMCJf
cykKLSAgICAsIG1fY29uc3RhbnRQcm9wZXJ0eU1hcChzdGQ6Om1ha2VfdW5pcXVlPENvbnN0YW50
UHJvcGVydHlNYXA+KCp0aGlzKSkKKyAgICAsIG1fY29uc3RhbnRQcm9wZXJ0eU1hcChtYWtlVW5p
cXVlPENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlzKSkKICAgICAsIG1fZG9jdW1lbnRDbGFzc2Vz
KGRvY3VtZW50Q2xhc3NlcykKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCkBAIC01NDUsMTAgKzU0NSwxMCBAQCBEb2N1bWVudDo6RG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzLCB1
bnNpZwogI2VuZGlmCiAgICAgLCBtX2xvYWRFdmVudERlbGF5VGltZXIoKnRoaXMsICZEb2N1bWVu
dDo6bG9hZEV2ZW50RGVsYXlUaW1lckZpcmVkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgLCBtX2RldmljZU1vdGlvbkNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPERldmljZU1vdGlvbkNsaWVudElPUz4oKSkKLSAgICAsIG1fZGV2aWNl
TW90aW9uQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERldmljZU1vdGlvbkNvbnRyb2xsZXI+
KCptX2RldmljZU1vdGlvbkNsaWVudCkpCi0gICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1M+KCkpCi0gICAgLCBt
X2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQpKQorICAgICwgbV9k
ZXZpY2VNb3Rpb25DbGllbnQobWFrZVVuaXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCisg
ICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIobWFrZVVuaXF1ZTxEZXZpY2VNb3Rpb25Db250
cm9sbGVyPigqbV9kZXZpY2VNb3Rpb25DbGllbnQpKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlv
bkNsaWVudChtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TPigpKQorICAgICwg
bV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIobWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KSkKICNlbmRpZgogICAgICwg
bV9wZW5kaW5nVGFza3NUaW1lcigqdGhpcywgJkRvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZp
cmVkKQogICAgICwgbV92aXN1YWxVcGRhdGVzU3VwcHJlc3Npb25UaW1lcigqdGhpcywgJkRvY3Vt
ZW50Ojp2aXN1YWxVcGRhdGVzU3VwcHJlc3Npb25UaW1lckZpcmVkKQpAQCAtNzU3LDcgKzc1Nyw3
IEBAIEVsZW1lbnQqIERvY3VtZW50OjplbGVtZW50Rm9yQWNjZXNzS2V5KGNvbnN0IFN0cmluZyYg
a2V5KQogCiB2b2lkIERvY3VtZW50OjpidWlsZEFjY2Vzc0tleUNhY2hlKCkKIHsKLSAgICBtX2Fj
Y2Vzc0tleUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVudCos
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0aGlzXSB7CisgICAgbV9hY2Nlc3NLZXlDYWNo
ZSA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+PihbdGhpc10gewogICAgICAgICBIYXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIG5vZGUgOiBj
b21wb3NlZFRyZWVEZXNjZW5kYW50cygqdGhpcykpIHsKICAgICAgICAgICAgIGlmICghaXM8RWxl
bWVudD4obm9kZSkpCkBAIC03ODIsNyArNzgyLDcgQEAgRXhjZXB0aW9uT3I8U2VsZWN0b3JRdWVy
eSY+IERvY3VtZW50OjpzZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgc2VsZWMK
ICAgICBpZiAoc2VsZWN0b3JTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU3ludGF4RXJyb3IgfTsKICAgICBpZiAoIW1fc2VsZWN0b3JRdWVyeUNhY2hlKQotICAg
ICAgICBtX3NlbGVjdG9yUXVlcnlDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVy
eUNhY2hlPigpOworICAgICAgICBtX3NlbGVjdG9yUXVlcnlDYWNoZSA9IG1ha2VVbmlxdWU8U2Vs
ZWN0b3JRdWVyeUNhY2hlPigpOwogICAgIHJldHVybiBtX3NlbGVjdG9yUXVlcnlDYWNoZS0+YWRk
KHNlbGVjdG9yU3RyaW5nLCAqdGhpcyk7CiB9CiAKQEAgLTg0Nyw3ICs4NDcsNyBAQCB2b2lkIERv
Y3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCiBET01JbXBsZW1lbnRhdGlvbiYgRG9jdW1l
bnQ6OmltcGxlbWVudGF0aW9uKCkKIHsKICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24pCi0gICAg
ICAgIG1faW1wbGVtZW50YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUltcGxlbWVudGF0aW9u
PigqdGhpcyk7CisgICAgICAgIG1faW1wbGVtZW50YXRpb24gPSBtYWtlVW5pcXVlPERPTUltcGxl
bWVudGF0aW9uPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltcGxlbWVudGF0aW9uOwogfQogCkBA
IC0xNzYyLDcgKzE3NjIsNyBAQCBOb2RlOjpOb2RlVHlwZSBEb2N1bWVudDo6bm9kZVR5cGUoKSBj
b25zdAogRm9ybUNvbnRyb2xsZXImIERvY3VtZW50Ojpmb3JtQ29udHJvbGxlcigpCiB7CiAgICAg
aWYgKCFtX2Zvcm1Db250cm9sbGVyKQotICAgICAgICBtX2Zvcm1Db250cm9sbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxGb3JtQ29udHJvbGxlcj4oKTsKKyAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9
IG1ha2VVbmlxdWU8Rm9ybUNvbnRyb2xsZXI+KCk7CiAgICAgcmV0dXJuICptX2Zvcm1Db250cm9s
bGVyOwogfQogCkBAIC0xOTg3LDcgKzE5ODcsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUZXh0
UmVuZGVyZXIoVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIHVucwog
ICAgIEFTU0VSVCghbV9pblJlbmRlclRyZWVVcGRhdGUpOwogICAgIFNldEZvclNjb3BlPGJvb2w+
IGluUmVuZGVyVHJlZVVwZGF0ZShtX2luUmVuZGVyVHJlZVVwZGF0ZSwgdHJ1ZSk7CiAKLSAgICBh
dXRvIHRleHRVcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpVcGRhdGU+KCp0aGlzKTsK
KyAgICBhdXRvIHRleHRVcGRhdGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpVcGRhdGU+KCp0aGlzKTsK
ICAgICB0ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQsIHsgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIGxl
bmd0aE9mUmVwbGFjZWRUZXh0LCBXVEY6Om51bGxvcHQgfSk7CiAKICAgICBSZW5kZXJUcmVlVXBk
YXRlciByZW5kZXJUcmVlVXBkYXRlcigqdGhpcyk7CkBAIC0yMjY5LDcgKzIyNjksNyBAQCB2b2lk
IERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRT
aXplJiBwYWdlU2l6ZSwgaW50JgogU3R5bGVSZXNvbHZlciYgRG9jdW1lbnQ6OnVzZXJBZ2VudFNo
YWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKIHsKICAgICBpZiAoIW1fdXNlckFnZW50U2hhZG93VHJl
ZVN0eWxlUmVzb2x2ZXIpCi0gICAgICAgIG1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsKKyAgICAgICAgbV91
c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9IG1ha2VVbmlxdWU8U3R5bGVSZXNvbHZl
cj4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZl
cjsKIH0KIApAQCAtMjY3Miw3ICsyNjcyLDcgQEAgQVhPYmplY3RDYWNoZSogRG9jdW1lbnQ6OmF4
T2JqZWN0Q2FjaGUoKSBjb25zdAogCiAgICAgQVNTRVJUKCZ0b3BEb2N1bWVudCA9PSB0aGlzIHx8
ICFtX2F4T2JqZWN0Q2FjaGUpOwogICAgIGlmICghdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hl
KSB7Ci0gICAgICAgIHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8QVhPYmplY3RDYWNoZT4odG9wRG9jdW1lbnQpOworICAgICAgICB0b3BEb2N1bWVudC5tX2F4
T2JqZWN0Q2FjaGUgPSBtYWtlVW5pcXVlPEFYT2JqZWN0Q2FjaGU+KHRvcERvY3VtZW50KTsKICAg
ICAgICAgaGFzRXZlckNyZWF0ZWRBbkFYT2JqZWN0Q2FjaGUgPSB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlLmdldCgpOwpAQCAtMzAzNiw3ICszMDM2
LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0UGFyc2luZyhib29sIGIpCiAgICAgbV9iUGFyc2luZyA9
IGI7CiAKICAgICBpZiAobV9iUGFyc2luZyAmJiAhbV9zaGFyZWRPYmplY3RQb29sKQotICAgICAg
ICBtX3NoYXJlZE9iamVjdFBvb2wgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50U2hhcmVkT2Jq
ZWN0UG9vbD4oKTsKKyAgICAgICAgbV9zaGFyZWRPYmplY3RQb29sID0gbWFrZVVuaXF1ZTxEb2N1
bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7CiAKICAgICBpZiAoIW1fYlBhcnNpbmcgJiYgdmlldygp
ICYmICF2aWV3KCktPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHZpZXcoKS0+ZmlyZUxheW91dFJl
bGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKQEAgLTU1NjYsNyArNTU2Niw3IEBAIGNvbnN0IFNW
R0RvY3VtZW50RXh0ZW5zaW9ucyogRG9jdW1lbnQ6OnN2Z0V4dGVuc2lvbnMoKQogU1ZHRG9jdW1l
bnRFeHRlbnNpb25zJiBEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucygpCiB7CiAgICAgaWYg
KCFtX3N2Z0V4dGVuc2lvbnMpCi0gICAgICAgIG1fc3ZnRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8U1ZHRG9jdW1lbnRFeHRlbnNpb25zPigqdGhpcyk7CisgICAgICAgIG1fc3ZnRXh0ZW5z
aW9ucyA9IG1ha2VVbmlxdWU8U1ZHRG9jdW1lbnRFeHRlbnNpb25zPigqdGhpcyk7CiAgICAgcmV0
dXJuICptX3N2Z0V4dGVuc2lvbnM7CiB9CiAKQEAgLTU3NzEsNyArNTc3MSw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICAvLyBUaGlzIGNhbiBvY2N1ciB2
aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoKS4KICAgICAgICAgc2V0
Q29va2llVVJMKFVSTCh7IH0sIGVtcHR5U3RyaW5nKCkpKTsKICAgICAgICAgc2V0U2VjdXJpdHlP
cmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlVW5pcXVlKCkpKTsKLSAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB7IH0sIGVtcHR5U3RyaW5n
KCkgfSwgKnRoaXMpKTsKKyAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlx
dWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB7IH0sIGVtcHR5U3RyaW5nKCkgfSwgKnRo
aXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTc5MCw3ICs1NzkwLDcgQEAgdm9p
ZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIGlzU2VjdXJpdHlPcmln
aW5VbmlxdWUgPSBkb2N1bWVudExvYWRlciAmJiBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS50
YWludGluZygpID09IFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpPcGFxdWU7CiAKICAgICBz
ZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKGlzU2Vj
dXJpdHlPcmlnaW5VbmlxdWUgPyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGlj
eShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwg
KnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50
U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiAKICAgICBTdHJpbmcgb3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5v
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogICAgIGlmICghb3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3kuaXNOdWxsKCkpCkBAIC02MDI4LDcgKzYwMjgsNyBAQCBTdHJpbmcgRG9j
dW1lbnQ6Om5hbWVGb3JDU1NDYW52YXNFbGVtZW50KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBj
YW52YXNFbGVtZW50KQogVGV4dEF1dG9TaXppbmcmIERvY3VtZW50Ojp0ZXh0QXV0b1NpemluZygp
CiB7CiAgICAgaWYgKCFtX3RleHRBdXRvU2l6aW5nKQotICAgICAgICBtX3RleHRBdXRvU2l6aW5n
ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1NpemluZz4oKTsKKyAgICAgICAgbV90ZXh0QXV0
b1NpemluZyA9IG1ha2VVbmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7CiAgICAgcmV0dXJuICptX3Rl
eHRBdXRvU2l6aW5nOwogfQogI2VuZGlmIC8vIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC02
Mzk1LDcgKzYzOTUsNyBAQCB2b2lkIERvY3VtZW50Ojp3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2Vk
KCkKIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUmIG5vZGUpCiB7
CiAgICAgaWYgKCFtX3doZWVsRXZlbnRUYXJnZXRzKQotICAgICAgICBtX3doZWVsRXZlbnRUYXJn
ZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKKyAgICAgICAgbV93aGVl
bEV2ZW50VGFyZ2V0cyA9IG1ha2VVbmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CiAKICAgICBtX3do
ZWVsRXZlbnRUYXJnZXRzLT5hZGQoJm5vZGUpOwogCkBAIC02NDU1LDcgKzY0NTUsNyBAQCB2b2lk
IERvY3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcihOb2RlJiBoYW5kbGVyKQogewogI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKCFtX3RvdWNoRXZlbnRUYXJnZXRzKQotICAg
ICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldFNl
dD4oKTsKKyAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cyA9IG1ha2VVbmlxdWU8RXZlbnRUYXJn
ZXRTZXQ+KCk7CiAKICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzLT5hZGQoJmhhbmRsZXIpOwogCkBA
IC04MDQzLDcgKzgwNDMsNyBAQCB2b2lkIERvY3VtZW50OjpkaWRMb2dNZXNzYWdlKGNvbnN0IFdU
RkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xldmVsIGxldmVsLCBWZQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGF1dG8gbWVzc2FnZUxldmVsID0gbWVzc2FnZUxldmVsRnJvbVdU
RkxvZ0xldmVsKGxldmVsKTsKLSAgICAgICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6
TG9nLCBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3Rh
dGUoZnJhbWUoKSkpOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3Nh
Z2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgp
KSk7CiAKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiAgICAg
fSk7CkBAIC04MDc4LDcgKzgwNzgsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0CiAKIGJvb2wg
RG9jdW1lbnQ6OnJlZ2lzdGVyQ1NTUHJvcGVydHkoQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
JiYgcHJvcCkKIHsKLSAgICByZXR1cm4gbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRkKHBy
b3AubmFtZSwgc3RkOjptYWtlX3VuaXF1ZTxDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdU
Rk1vdmUocHJvcCkpKS5pc05ld0VudHJ5OworICAgIHJldHVybiBtX0NTU1JlZ2lzdGVyZWRQcm9w
ZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBtYWtlVW5pcXVlPENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9w
ZXJ0eT4oV1RGTW92ZShwcm9wKSkpLmlzTmV3RW50cnk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmRl
dGFjaEZyb21GcmFtZSgpCkBAIC04MTcyLDcgKzgxNzIsNyBAQCBEZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXImIERvY3VtZW50OjpkZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbgogICAgICAgICByZXR1cm4gdG9wRG9jdW1lbnQoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXIoKTsKIAogICAgIGlmICghbV9kZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpCi0gICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICAgICAgbV9kZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPERldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9k
ZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI7CiB9CiAKQEAgLTgyMDMs
NyArODIwMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFBhaW50V29ya2xldEdsb2JhbFNjb3BlRm9y
TmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZjxQYWludFdvCiBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXImIERvY3VtZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKQogewogICAgIGlmICghbV9jb250
ZW50Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fY29udGVudENoYW5nZU9ic2VydmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsKKyAgICAgICAgbV9j
b250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXI7IAogfQogCkBAIC04
MjExLDcgKzgyMTEsNyBAQCBET01UaW1lckhvbGRpbmdUYW5rJiBEb2N1bWVudDo6ZG9tVGltZXJI
b2xkaW5nVGFuaygpCiB7CiAgICAgaWYgKG1fZG9tVGltZXJIb2xkaW5nVGFuaykKICAgICAgICAg
cmV0dXJuICptX2RvbVRpbWVySG9sZGluZ1Rhbms7Ci0gICAgbV9kb21UaW1lckhvbGRpbmdUYW5r
ID0gc3RkOjptYWtlX3VuaXF1ZTxET01UaW1lckhvbGRpbmdUYW5rPigpOworICAgIG1fZG9tVGlt
ZXJIb2xkaW5nVGFuayA9IG1ha2VVbmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4oKTsKICAgICBy
ZXR1cm4gKm1fZG9tVGltZXJIb2xkaW5nVGFuazsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCBmOTdkYmU3NTFiZDUwNDM2MjczYzA3OGY3MGVlYTE1YjY1Yzc2MmE5Li5hNWUzMjAzOTI1OTQ5
NTU1M2M1OTM2YzViODA3MWU0MGUwZjhlNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTI4
NCw3ICsxMjg0LDcgQEAgY2xhc3MgRG9jdW1lbnQKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEb2N1
bWVudFBhcnNlcllpZWxkVG9rZW4+IGNyZWF0ZVBhcnNlcllpZWxkVG9rZW4oKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuPigq
dGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tl
bj4oKnRoaXMpOwogICAgIH0KIAogICAgIGJvb2wgaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyWWllbGRUb2tlbkNvdW50OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4IDAxYzdmOTZlMDJlOWViZDU4ODUzZmI1
ZGIxYzRiODgyMWUyZjk3MjguLjAzNzAzYjYyYmM2NTA1NTc4YjM4OWI5OTkzOGE0ZGFhYjZkNzZj
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC01OSw3
ICs1OSw3IEBAIGNsYXNzIERvY3VtZW50RXZlbnRRdWV1ZTo6VGltZXIgZmluYWwgOiBwdWJsaWMg
U3VzcGVuZGFibGVUaW1lciB7CiAKIERvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1
ZXVlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAg
LCBtX3BlbmRpbmdFdmVudFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzKSkKKyAg
ICAsIG1fcGVuZGluZ0V2ZW50VGltZXIobWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMpKQogICAgICwg
bV9pc0Nsb3NlZChmYWxzZSkKIHsKICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5jcHAKaW5kZXggNzI5MWQ0YWRlZTlmNDE3N2ZkYmZlZmVlZmRkZjI2NzA1NGE5YzRmMC4uZTc2
NDFhZjYyMThiZjEzYWIwZTNjNjg5MjAyMGRlODg5YzRlOTA2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTM2NCw3ICszNjQsNyBA
QCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKE5vZGUmIG5vZGUsIGNv
bnN0IERvY3VtZW50TWFya2VyJiBuZXdNYQogICAgIHN0ZDo6dW5pcXVlX3B0cjxNYXJrZXJMaXN0
PiYgbGlzdCA9IG1fbWFya2Vycy5hZGQoJm5vZGUsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
IAogICAgIGlmICghbGlzdCkgewotICAgICAgICBsaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJr
ZXJMaXN0PigpOworICAgICAgICBsaXN0ID0gbWFrZVVuaXF1ZTxNYXJrZXJMaXN0PigpOwogICAg
ICAgICBsaXN0LT5hcHBlbmQoUmVuZGVyZWREb2N1bWVudE1hcmtlcihuZXdNYXJrZXIpKTsKICAg
ICB9IGVsc2UgaWYgKHNob3VsZEluc2VydEFzU2VwYXJhdGVNYXJrZXIobmV3TWFya2VyKSkgewog
ICAgICAgICAvLyBXZSBkb24ndCBtZXJnZSBkaWN0YXRpb24gbWFya2Vycy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKaW5kZXggODFlZmIxMGQ1ZTc2ZWRi
NmY2ZDM4MzUzMDA1MWQyOWMzODhlYWZkYi4uODU1YTJhMDY1NmY3MWI0NWVlOGQ0ZmZmMjg0YTUz
NTM3OWEzODc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFn
ZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vz
cy5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzKiBEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OmZyb20oRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGF1dG8qIHN1cHBs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqPihTdXBwbGVtZW50PERv
Y3VtZW50Pjo6ZnJvbSgmZG9jdW1lbnQsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxEb2N1bWVudFN0b3JhZ2VBY2Nlc3M+KGRvY3VtZW50KTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxEb2N1bWVudFN0b3JhZ2VBY2Nlc3M+KGRvY3VtZW50KTsKICAg
ICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVU
bygmZG9jdW1lbnQsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwog
ICAgIH0KQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAg
ICBib29sIHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUgPSB3YXNHcmFudGVkID09IFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkOjpZZXMgfHwgcHJvbXB0V2FzU2hvd24gPT0gU3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duOjpObzsKIAogICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVy
ZSkgewotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IG1h
a2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjpt
YWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1l
bnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCiAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LT5lbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsK
ICAgICAgICAgICAgIH0pKTsKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIERvY3VtZW50U3RvcmFn
ZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUp
IHsKLSAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBXVEZN
b3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVldWU6
Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1
bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRSZWZlcmVuY2UpXSAoKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCiAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5jb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0
dXJlKCk7CiAgICAgICAgICAgICB9KSk7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBEb2N1bWVu
dFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmVuYWJsZVRlbXBvcmFy
eVRpbWVVc2VyR2VzdHVyZSgpCiB7Ci0gICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVyZSA9IHN0ZDo6
bWFrZV91bmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwg
Jm1fZG9jdW1lbnQpOworICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBtYWtlVW5pcXVlPFVz
ZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50KTsK
IH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNl
ckdlc3R1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDcxMjAwOGYyMWIyMzFjNGRlMjFj
NDEzYjVkMTA4NWQ5M2YyNWRhZjMuLmIwZDhhZDVkMTY0MDlhN2JlNTZiYzNjMTBiNjlkMzJiYTc1
MGRjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBOYW1lZE5v
ZGVNYXAmIEVsZW1lbnQ6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIGlmIChOYW1lZE5vZGVNYXAq
IGF0dHJpYnV0ZU1hcCA9IHJhcmVEYXRhLmF0dHJpYnV0ZU1hcCgpKQogICAgICAgICByZXR1cm4g
KmF0dHJpYnV0ZU1hcDsKIAotICAgIHJhcmVEYXRhLnNldEF0dHJpYnV0ZU1hcChzdGQ6Om1ha2Vf
dW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpKSk7CisgICAg
cmFyZURhdGEuc2V0QXR0cmlidXRlTWFwKG1ha2VVbmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9j
YXN0PEVsZW1lbnQmPigqdGhpcykpKTsKICAgICByZXR1cm4gKnJhcmVEYXRhLmF0dHJpYnV0ZU1h
cCgpOwogfQogCkBAIC0yMzA3LDcgKzIzMDcsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldElzRGVmaW5l
ZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYQog
ICAgIHNldEZsYWcoSXNDdXN0b21FbGVtZW50KTsKICAgICBhdXRvJiBkYXRhID0gZW5zdXJlRWxl
bWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
KCkpCi0gICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtl
X3VuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOwor
ICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKICAgICBpbnZhbGlk
YXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
aGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoKnRoaXMpOwogfQpAQCAtMjM0NCw3ICsyMzQ0LDcgQEAg
dm9pZCBFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYg
ZWxlbWVudEludGVyZmFjZSkKICAgICBhdXRvJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRh
KCk7CiAgICAgYm9vbCBhbHJlYWR5U2NoZWR1bGVkVG9VcGdyYWRlID0gZGF0YS5jdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZSgpOwogICAgIGlmICghYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSkK
LSAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShzdGQ6Om1ha2VfdW5p
cXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CisgICAg
ICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUobWFrZVVuaXF1ZTxDdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOwogICAgIGRhdGEuY3VzdG9t
RWxlbWVudFJlYWN0aW9uUXVldWUoKS0+ZW5xdWV1ZUVsZW1lbnRVcGdyYWRlKCp0aGlzLCBhbHJl
YWR5U2NoZWR1bGVkVG9VcGdyYWRlKTsKIH0KIApAQCAtMzQ4MCw3ICszNDgwLDcgQEAgRE9NVG9r
ZW5MaXN0JiBFbGVtZW50OjpjbGFzc0xpc3QoKQogewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0
YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5jbGFzc0xpc3QoKSkK
LSAgICAgICAgZGF0YS5zZXRDbGFzc0xpc3Qoc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+
KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikpOworICAgICAgICBkYXRhLnNldENsYXNzTGlz
dChtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7
CiAgICAgcmV0dXJuICpkYXRhLmNsYXNzTGlzdCgpOwogfQogCkBAIC0zNDg4LDcgKzM0ODgsNyBA
QCBEYXRhc2V0RE9NU3RyaW5nTWFwJiBFbGVtZW50OjpkYXRhc2V0KCkKIHsKICAgICBFbGVtZW50
UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEu
ZGF0YXNldCgpKQotICAgICAgICBkYXRhLnNldERhdGFzZXQoc3RkOjptYWtlX3VuaXF1ZTxEYXRh
c2V0RE9NU3RyaW5nTWFwPigqdGhpcykpOworICAgICAgICBkYXRhLnNldERhdGFzZXQobWFrZVVu
aXF1ZTxEYXRhc2V0RE9NU3RyaW5nTWFwPigqdGhpcykpOwogICAgIHJldHVybiAqZGF0YS5kYXRh
c2V0KCk7CiB9CiAKQEAgLTM2MzIsNyArMzYzMiw3IEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0
YSYgRWxlbWVudDo6ZW5zdXJlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRv
JiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEu
aW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRhLnNldEludGVyc2Vj
dGlvbk9ic2VydmVyRGF0YShzdGQ6Om1ha2VfdW5pcXVlPEludGVyc2VjdGlvbk9ic2VydmVyRGF0
YT4oKSk7CisgICAgICAgIHJhcmVEYXRhLnNldEludGVyc2VjdGlvbk9ic2VydmVyRGF0YShtYWtl
VW5pcXVlPEludGVyc2VjdGlvbk9ic2VydmVyRGF0YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0
YS5pbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKTsKIH0KIApAQCAtMzY1OCw3ICszNjU4LDcgQEAg
UmVzaXplT2JzZXJ2ZXJEYXRhJiBFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEoKQog
ewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYg
KCFyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRhdGEoKSkKLSAgICAgICAgcmFyZURhdGEuc2V0UmVz
aXplT2JzZXJ2ZXJEYXRhKHN0ZDo6bWFrZV91bmlxdWU8UmVzaXplT2JzZXJ2ZXJEYXRhPigpKTsK
KyAgICAgICAgcmFyZURhdGEuc2V0UmVzaXplT2JzZXJ2ZXJEYXRhKG1ha2VVbmlxdWU8UmVzaXpl
T2JzZXJ2ZXJEYXRhPigpKTsKICAgICByZXR1cm4gKnJhcmVEYXRhLnJlc2l6ZU9ic2VydmVyRGF0
YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1h
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKaW5kZXggZDll
NjYzNDljYmRiYTBiYjgxZDJhY2ZiZmRjMGQ0MzM3OGM2NThkYi4uMGIwOWQwODJjMzZlZGRkODRi
OWNkZTk4ODI1MjcyZGI1Zjk2ZTViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgRXZlbnRMaXN0ZW5lck1hcDo6YWRkKGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1dG8gbGlzdGVuZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxFdmVudExpc3RlbmVyVmVjdG9yPigpOworICAgIGF1dG8gbGlzdGVuZXJzID0gbWFr
ZVVuaXF1ZTxFdmVudExpc3RlbmVyVmVjdG9yPigpOwogICAgIGxpc3RlbmVycy0+dW5jaGVja2Vk
QXBwZW5kKFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShsaXN0ZW5lciks
IG9wdGlvbnMpKTsKICAgICBtX2VudHJpZXMuYXBwZW5kKHsgZXZlbnRUeXBlLCBXVEZNb3ZlKGxp
c3RlbmVycykgfSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRl
eCA5ZTkzMDhiYjVkYTE0NjFlMzU4ZTNjYzYyZmVhZmRjZmNkMGNjN2FkLi41YjZhYjY4NzU1YjYx
YmZlMmQ0YTY4YmNiZTc1MjRmZDBkZGFiYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAg
LTMzOSwxMyArMzM5LDEzIEBAIHN0cnVjdCBFdmVudE5hbWVzIHsKICAgICBET01fRVZFTlRfTkFN
RVNfRk9SX0VBQ0goRE9NX0VWRU5UX05BTUVTX0RFQ0xBUkUpCiAjdW5kZWYgRE9NX0VWRU5UX05B
TUVTX0RFQ0xBUkUKIAotICAgIC8vIEZJWE1FOiBUaGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIHN0
ZDo6bWFrZV91bmlxdWUgYmVsb3cgZG9lcyBub3Qgd29yayBpbiB3aW5kb3dzIHBvcnQuCisgICAg
Ly8gRklYTUU6IFRoZSBmcmllbmQgZGVjbGFyYXRpb24gdG8gbWFrZVVuaXF1ZSBiZWxvdyBkb2Vz
IG5vdCB3b3JrIGluIHdpbmRvd3MgcG9ydC4KICAgICAvLwogICAgIC8vIHRlbXBsYXRlPGNsYXNz
IFQsIGNsYXNzLi4uIEFyZ3M+Ci0gICAgLy8gZnJpZW5kIHR5cGVuYW1lIHN0ZDo6X1VuaXF1ZV9p
ZjxUPjo6X1NpbmdsZV9vYmplY3Qgc3RkOjptYWtlX3VuaXF1ZShBcmdzJiYuLi4pOworICAgIC8v
IGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5nbGVfb2JqZWN0IG1ha2VV
bmlxdWUoQXJncyYmLi4uKTsKICAgICAvLwogICAgIC8vIFRoaXMgY3JlYXRlIGZ1bmN0aW9uIHNo
b3VsZCBiZSBkZWxldGVkIGxhdGVyIGFuZCBpcyBvbmx5IGZvciBrZWVwaW5nIEV2ZW50TmFtZXMg
YXMgcHJpdmF0ZS4KLSAgICAvLyBzdGQ6Om1ha2VfdW5pcXVlIHNob3VsZCBiZSB1c2VkIGluc3Rl
YWQuCisgICAgLy8gbWFrZVVuaXF1ZSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgogICAgIC8vCiAg
ICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEV2
ZW50TmFtZXM+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAK
aW5kZXggZGIxNDI4ZDFkNDI2MDU4Y2I2NWIxZWI2ZmFjYTIzZGI5ODkyODJiZC4uYTBhZDBhZDdj
NDgyNjkyZTYzOGU1NzI4MGYxYTI5MjQ3YWNlYzE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5j
cHAKQEAgLTExNSwxNyArMTE1LDE3IEBAIHZvaWQgRXZlbnRQYXRoOjpidWlsZFBhdGgoTm9kZSYg
b3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKIHsKICAgICB1c2luZyBNYWtlRXZlbnRDb250
ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gKCopKE5vZGUmLCBFdmVudFRhcmdl
dCosIEV2ZW50VGFyZ2V0KiwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICBNYWtlRXZlbnRD
b250ZXh0IG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1
cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KCZub2RlLCBj
dXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBj
bG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgfTsKICAgICBpZiAoaXM8TW91c2VFdmVudD4oZXZlbnQp
IHx8IGV2ZW50LmlzRm9jdXNFdmVudCgpKSB7CiAgICAgICAgIG1ha2VFdmVudENvbnRleHQgPSBb
XSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0
YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29u
dGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW91c2VPckZvY3Vz
RXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0Rl
cHRoKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29u
dGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAg
ICAgICAgIH07CiAgICAgfQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKGlzPFRv
dWNoRXZlbnQ+KGV2ZW50KSkgewogICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUm
IG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBp
bnQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoRXZlbnRDb250ZXh0Pihu
b2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRvdWNoRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFy
Z2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICAgICAgfTsKICAgICB9CiAjZW5k
aWYKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9y
aWdpbmFsVGFyZ2V0LCBFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0
YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpub2RlKS5k
b21XaW5kb3coKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8V2luZG93RXZlbnRDb250ZXh0Pigqbm9kZSwgKndpbmRvdywgKnRhcmdl
dCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
dGguYXBwZW5kKG1ha2VVbmlxdWU8V2luZG93RXZlbnRDb250ZXh0Pigqbm9kZSwgKndpbmRvdywg
KnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDgsNyArMzA4LDcg
QEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgdGFyZ2V0cykK
ICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgIE5vZGUqIG9yaWdpbiA9ICp0YXJnZXRz
LmJlZ2luKCk7CiAgICAgICAgIGlmICghdGFyZ2V0LT5pc0Nsb3NlZFNoYWRvd0hpZGRlbigqb3Jp
Z2luKSkKLSAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENv
bnRleHQ+KHRhcmdldCwgdGFyZ2V0LCBvcmlnaW4sIDApKTsKKyAgICAgICAgICAgIG1fcGF0aC5h
cHBlbmQobWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KHRhcmdldCwgdGFyZ2V0LCBvcmlnaW4sIDAp
KTsKICAgICB9CiB9CiAKQEAgLTMxNyw3ICszMTcsNyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChj
b25zdCBWZWN0b3I8RXZlbnRUYXJnZXQqPiYgdGFyZ2V0cykKICAgICBmb3IgKGF1dG8qIHRhcmdl
dCA6IHRhcmdldHMpIHsKICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgIEFTU0VSVCgh
aXM8Tm9kZT4odGFyZ2V0KSk7Ci0gICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxFdmVudENvbnRleHQ+KG51bGxwdHIsIHRhcmdldCwgKnRhcmdldHMuYmVnaW4oKSwgMCkpOwor
ICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0PihudWxscHRyLCB0
YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggZWRkOWNhMjhlYTQ5M2FjN2M5NGM4YmRlMjg1YjE2
NjZjMzg4MjU1OS4uYTcwYmNhZWNjYzg3OTVhNGY0YmE0MjZlMjUxM2RmZjdhMGY3NGIwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xh
c3MgUmVuZGVyVHJlZUJ1aWxkZXI7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAogY2xhc3MgRnVsbHNj
cmVlbk1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IEZ1bGxzY3JlZW5NYW5hZ2VyKERvY3VtZW50Jik7CiAgICAgfkZ1bGxzY3JlZW5NYW5hZ2VyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCmlu
ZGV4IGIzYTA2ZTQ3YjA3MDBmN2M0N2QzZDlhZWYzM2Y0NDM3MjRlMGM1NWUuLjk0MGVmY2FlZDgz
MDkxYzI1ODNmYTllMzM2ZWYzZDc4YzU0YWEzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcihjb25zdCBBdG9tU3RyaW5nJiBpZCwg
SWRUYXJnZXRPYnNlcnZlCiAgICAgCiAgICAgSWRUb09ic2VydmVyU2V0TWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9yZWdpc3RyeS5hZGQoaWQuaW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAocmVz
dWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9ic2VydmVyU2V0PigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxPYnNlcnZlclNldD4oKTsKIAogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPmFkZChvYnNlcnZlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5
Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5k
ZXggN2U3YTM0Nzk3Yjg2MjlmNjJmN2Y3ODZhYjE0YzVjNmY1YmQ5MGIxNC4uY2U4NTZiYjU1ZDVi
ZDk5ZTY2ZjUwY2I1NWIwYmU0NzkwZTA5ODQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcApAQCAtOTYsNyArOTYsNyBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRF
dmVudCgpID0gZGVmYXVsdDsKIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dykKICAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5
cGUoa2V5LnR5cGUoKSksIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcywgSXNDb21w
b3NlZDo6WWVzLAogICAgICAgICBrZXkudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNU
aW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBrZXkubW9kaWZpZXJzKCksIElzVHJ1c3RlZDo6WWVz
KQotICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKKyAgICAsIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQo
bWFrZVVuaXF1ZTxQbGF0Zm9ybUtleWJvYXJkRXZlbnQ+KGtleSkpCiAjaWYgRU5BQkxFKEtFWUJP
QVJEX0tFWV9BVFRSSUJVVEUpCiAgICAgLCBtX2tleShrZXkua2V5KCkpCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWljcm90YXNrcy5oCmluZGV4IGI2MzE4NDE1MGY1YTM5MTQyNTJiODQyZWQ5ZDA3ZGVhYWY2
YjQwMzYuLmJhNzIyYTExYzcwZmNhODA4MzJlNjRjODUyN2VlNDZiOWMzNDc2ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01pY3JvdGFza3MuaApAQCAtNjksNyArNjksOCBAQCBjbGFzcyBWb2lkTWljcm90YXNrIGZp
bmFsIDogcHVibGljIE1pY3JvdGFzayB7CiAgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9u
OwogfTsKIAotY2xhc3MgTWljcm90YXNrUXVldWUgeworY2xhc3MgTWljcm90YXNrUXVldWUgZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBOZXZlckRlc3Ry
b3llZDxNaWNyb3Rhc2tRdWV1ZT47CiAgICAgZnJpZW5kIGNsYXNzIE1pY3JvdGFzazsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA2NmM1ZWEwYjlk
NjM0NTQ0MzgxMmZiMTMxZmZlNWRiZTZjYTFkZGYzLi4xOTNmMjc4MDVhNWFlZDRiNjA2ZTljZWVh
M2E5YTM1ZDhiMWU5OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIHZvaWQgcXVldWVNdXRhdGlvbk9ic2VydmVyQ29t
cG91bmRNaWNyb3Rhc2soKQogICAgIGlmIChtdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rh
c2tRdWV1ZWRGbGFnKQogICAgICAgICByZXR1cm47CiAgICAgbXV0YXRpb25PYnNlcnZlckNvbXBv
dW5kTWljcm90YXNrUXVldWVkRmxhZyA9IHRydWU7Ci0gICAgTWljcm90YXNrUXVldWU6Om1haW5U
aHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNy
b3Rhc2s+KCkpOworICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQo
bWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90YXNrPigpKTsKIH0KIAogdm9pZCBNdXRh
dGlvbk9ic2VydmVyOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoUmVmPE11dGF0aW9uUmVjb3JkPiYm
IG11dGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cC5jcHAKaW5kZXggNTJkYTYxZjc0ZjFmNTdhZjY4NTQ5ZjM2NjU2MzA2ZDhk
MTcwM2M3OS4uMDI3NmU0MmJlNWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5Y2JkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAu
Y3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyCiAgICAgaWYgKG9i
c2VydmVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUo
b2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcp
OwogfQogCiBib29sIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjppc09sZFZhbHVlUmVx
dWVzdGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBjOGZjMDEwNjcyNDVlNGUzNjE5N2EyZjZkNGQxZTQ1
NzU0N2JiYzhhLi5lNWM2ZGQxNmE0ZGI2MDliYTUyNzNhNDdhZjdmYTY4MjY2MmEyYzRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24u
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6
b2JzZXJ2ZWRTdWJ0cmVlTm9kZVdpbGxEZXRhY2goTm9kZSYgbm9kZSkKICAgICBtX29ic2VydmVy
LT5zZXRIYXNUcmFuc2llbnRSZWdpc3RyYXRpb24oKTsKIAogICAgIGlmICghbV90cmFuc2llbnRS
ZWdpc3RyYXRpb25Ob2RlcykgewotICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVz
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKKyAg
ICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxH
Q1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7CiAKICAgICAgICAgQVNTRVJUKCFtX25vZGVLZXB0QWxp
dmUpOwogICAgICAgICBtX25vZGVLZXB0QWxpdmUgPSAmbV9ub2RlOyAvLyBCYWxhbmNlZCBpbiB0
YWtlVHJhbnNpZW50UmVnaXN0cmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3NmQ0ZWE5ZDcz
MGE5MjM3MmE5ZjhlN2E2ZDhmNjdkMDBmZDNkYmY1Li5jYWJmMWViNThjOWMyM2NhZDg4NWJkMDFk
ZjEyMmI2NTFhZTAyYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zOTgsOSArMzk4LDkgQEAgdm9p
ZCBOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKCkKIHsKICAgICBOb2RlUmFyZURhdGEqIGRhdGE7
CiAgICAgaWYgKGlzPEVsZW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihtX2RhdGEubV9y
ZW5kZXJlcikpLnJlbGVhc2UoKTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8RWxlbWVudFJh
cmVEYXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVh
c2UoKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVSYXJl
RGF0YT4obV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsKKyAgICAgICAgZGF0YSA9IG1ha2VV
bmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOwogICAgIEFT
U0VSVChkYXRhKTsKIAogICAgIG1fZGF0YS5tX3JhcmVEYXRhID0gZGF0YTsKQEAgLTIyMTUsNyAr
MjIxNSw3IEBAIEV2ZW50VGFyZ2V0RGF0YSYgTm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkK
IAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ldmVudFRhcmdldERhdGFNYXBMb2NrKTsK
ICAgICBzZXRIYXNFdmVudFRhcmdldERhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpldmVudFRhcmdl
dERhdGFNYXAoKS5hZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkp
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0
aGlzLCBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogfQog
CiB2b2lkIE5vZGU6OmNsZWFyRXZlbnRUYXJnZXREYXRhKCkKQEAgLTIyODcsNyArMjI4Nyw3IEBA
IHZvaWQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9i
c2VydmVyLCBNdXRhdGlvbk9ic2VydmVyCiAgICAgfQogCiAgICAgaWYgKCFyZWdpc3RyYXRpb24p
IHsKLSAgICAgICAgcmVnaXN0cnkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbj4ob2JzZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0
ZXIpKTsKKyAgICAgICAgcmVnaXN0cnkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJhdGlvbj4ob2JzZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIp
KTsKICAgICAgICAgcmVnaXN0cmF0aW9uID0gcmVnaXN0cnkubGFzdCgpLmdldCgpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDc2OTBkNTk5ZmNhN2RjOTljYjQ5ZTE2
MGZiZTJhZmFkZGYwMGNkZjQuLjc2NmQ2N2YzZjZkNjI5YWYwODk0MmFkYzIzZTJjMjJjMjlmM2U0
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTI4MSw3ICsyODEsNyBAQCBjbGFz
cyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgTm9kZUxpc3Rz
Tm9kZURhdGEmIGVuc3VyZU5vZGVMaXN0cygpCiAgICAgewogICAgICAgICBpZiAoIW1fbm9kZUxp
c3RzKQotICAgICAgICAgICAgbV9ub2RlTGlzdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVMaXN0
c05vZGVEYXRhPigpOworICAgICAgICAgICAgbV9ub2RlTGlzdHMgPSBtYWtlVW5pcXVlPE5vZGVM
aXN0c05vZGVEYXRhPigpOwogICAgICAgICByZXR1cm4gKm1fbm9kZUxpc3RzOwogICAgIH0KIApA
QCAtMjg5LDcgKzI4OSw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURh
dGFCYXNlIHsKICAgICBOb2RlTXV0YXRpb25PYnNlcnZlckRhdGEmIGVuc3VyZU11dGF0aW9uT2Jz
ZXJ2ZXJEYXRhKCkKICAgICB7CiAgICAgICAgIGlmICghbV9tdXRhdGlvbk9ic2VydmVyRGF0YSkK
LSAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5v
ZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKKyAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZl
ckRhdGEgPSBtYWtlVW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKICAgICAgICAg
cmV0dXJuICptX211dGF0aW9uT2JzZXJ2ZXJEYXRhOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKaW5kZXggNTMzN2M1OGNkZmJiYWFiMjMwMTg0NTAyNjM4
ZGM2MzQ0OWY3OTZhYy4uNjFiYmM0ZWRmZjkzNGE2NDQ2ZWEyNTY3NTU2NjNmZDU0Njg3N2UzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCkBAIC0xOTgsMTEgKzE5
OCwxMSBAQCB2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjphZGRCdXR0b24oSFRNTElucHV0RWxlbWVu
dCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFw
KQotICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOYW1lVG9Hcm91
cE1hcD4oKTsKKyAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IG1ha2VVbmlxdWU8TmFtZVRvR3Jv
dXBNYXA+KCk7CiAKICAgICBhdXRvJiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVt
ZW50Lm5hbWUoKS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWdy
b3VwKQotICAgICAgICBncm91cCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFkaW9CdXR0b25Hcm91cD4o
KTsKKyAgICAgICAgZ3JvdXAgPSBtYWtlVW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CiAgICAg
Z3JvdXAtPmFkZChlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGM4MjVhN2VkZWU2YmIyZDVmNTE2YzZkM2U2ZWE3NDEw
ZTZlY2M3NTYuLjA0YWZlOWQ3OGFkMGJkMTAyOGE2NzAzYzBmYzNkNGY2NTNiMTNkZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM3OSw4
ICszNzksOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbgogewogICAgIGlmIChtX2luRGlzcGF0
Y2hFcnJvckV2ZW50KSB7CiAgICAgICAgIGlmICghbV9wZW5kaW5nRXhjZXB0aW9ucykKLSAgICAg
ICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOwotICAgICAgICBtX3BlbmRpbmdFeGNl
cHRpb25zLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1l
c3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxT
dGFjaykpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBtYWtlVW5pcXVlPFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOworICAgICAgICBtX3Bl
bmRpbmdFeGNlcHRpb25zLT5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNh
bGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE0LDkgKzQxNCw5IEBA
IHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVj
dGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VT
dHJpbmcoIlVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogIiwgcmVzdWx0TWVzc2FnZSk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAg
ICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpM
b2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VO
b25OdWxsKCkpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VU
eXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7CiAgICAgYWRkQ29u
c29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBS
ZWplY3RlZFByb21pc2VUcmFja2VyJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWpl
Y3RlZFByb21pc2VUcmFja2VyU2xvdwogICAgIC8vIFdoZW4gaW5pdGlhbGl6aW5nIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHZtKCkgaXMgbm90IHJlYWR5LgogCiAgICAgQVNTRVJUKCFtX3JlamVj
dGVkUHJvbWlzZVRyYWNrZXIpOwotICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOworICAgIG1f
cmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IG1ha2VVbmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tl
cj4oKnRoaXMsIHZtKCkpOwogICAgIHJldHVybiAqbV9yZWplY3RlZFByb21pc2VUcmFja2VyLmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggNTVkYzJjODdh
NGFjMjAyZDcxYWRkYTY2ZDU5NmI1ZmVhMGJjODg1Ni4uMjEwOWNlNGEyMjhjM2U3YmE4N2E0YmE1
MmIyZGIyODIzNjA4NzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAt
NjMzLDcgKzYzMyw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBTZWxlY3RvclF1ZXJ5
Q2FjaGU6OmFkZChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRG9jCiAgICAgaWYgKG1fZW50cmll
cy5zaXplKCkgPT0gbWF4aW11bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUpCiAgICAgICAgIG1fZW50
cmllcy5yZW1vdmUobV9lbnRyaWVzLnJhbmRvbSgpKTsKIAotICAgIHJldHVybiAqbV9lbnRyaWVz
LmFkZChzZWxlY3RvcnMsIHN0ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShz
ZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqbV9lbnRyaWVzLmFk
ZChzZWxlY3RvcnMsIG1ha2VVbmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxp
c3QpKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
aW5kZXggNjk2M2I2ODM3OWQ4OGYyN2E4NGUyZjFkYTY1MTUzODE4MDViMjkzYy4uNjc4NmMwZDIx
ZTFiMmMyYTU3ODUxYmQwODUxNjRjMWExZTkyYzk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcApAQCAtNTgsNyArNTgsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBk
b2N1bWVudCwgU2hhZG93Um9vdE1vZGUgdHlwZSkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9j
dW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50
KQogICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1
ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0
eWxlOjpTY29wZT4oKnRoaXMpKQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIFNoYWRvd1Jvb3Q6
OlNoYWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2ln
bm1lbnQ+JiYgc2xvCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFk
b3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShT
aGFkb3dSb290TW9kZTo6VXNlckFnZW50KQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91
bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1
ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKICAgICAsIG1fc2xvdEFzc2lnbm1lbnQoV1RGTW92ZShz
bG90QXNzaWdubWVudCkpCiB7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBTaGFkb3dSb290
Ojptb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXBhcmVudFRyZWVTY29w
ZSgpIHx8ICZwYXJlbnRUcmVlU2NvcGUoKS0+ZG9jdW1lbnRTY29wZSgpID09ICZuZXdEb2N1bWVu
dCk7CiAKICAgICAvLyBTdHlsZSBzY29wZXMgYXJlIGRvY3VtZW50IHNwZWNpZmljLgotICAgIG1f
c3R5bGVTY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CisgICAg
bV9zdHlsZVNjb3BlID0gbWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKTsKICAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZtX3N0eWxlU2NvcGUtPmRvY3Vt
ZW50KCkgPT0gJm5ld0RvY3VtZW50KTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2hh
ZG93Um9vdDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRN
TFNsb3RFbGVtZW50JiBzCiB7CiAgICAgQVNTRVJUKCZzbG90LnJvb3ROb2RlKCkgPT0gdGhpcyk7
CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxTbG90QXNzaWdubWVudD4oKTsKKyAgICAgICAgbV9zbG90QXNzaWdu
bWVudCA9IG1ha2VVbmlxdWU8U2xvdEFzc2lnbm1lbnQ+KCk7CiAKICAgICByZXR1cm4gbV9zbG90
QXNzaWdubWVudC0+YWRkU2xvdEVsZW1lbnRCeU5hbWUobmFtZSwgc2xvdCwgKnRoaXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggYTQxOWRkYTUyOGFjY2JkYTZk
ZTlkZGYxYTU0ODY0Y2ZkZjkxNjBlZi4uNDVjMDhlYTM2YWZlMTM5N2JlMGVjYmZiMjllMjI4ZWNk
MGM5OTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0xMjAsNyAr
MTIwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3Qg
QXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW4KICAgICAgICAgLy8gdG8gYXZvaWQgYWx3
YXlzIGhhdmluZyBhIHZlY3RvciBvZiBhbGwgY2hpbGQgbm9kZXMgb2YgYSBzaGFkb3cgaG9zdC4K
ICAgICAgICAgaWYgKHNsb3ROYW1lID09IGRlZmF1bHRTbG90TmFtZSgpKQogICAgICAgICAgICAg
bV9zbG90QXNzaWdubWVudHNJc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNsb3Q+KCk7CiAg
ICAgfSk7CiAgICAgYXV0byYgc2xvdCA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAg
IGJvb2wgbmVlZHNTbG90Y2hhbmdlRXZlbnQgPSBzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hh
bmdlRXZlbnQoKSAmJiBoYXNBc3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsIHNsb3QpOwpAQCAtNDEw
LDcgKzQxMCw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xvdChOb2RlJiBjaGls
ZCwgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWUpCiAgICAgfQogCiAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3Nsb3RzLmVuc3VyZShzbG90TmFtZSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTbG90PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwog
ICAgIH0pOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFzc2lnbmVkTm9kZXMuYXBw
ZW5kKCZjaGlsZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDJmMjg3MGQxNjY5
ZDQ0YmM2MTg0YTcyZWM2M2ViMzIzZjUyN2QzOWYuLjUzMWFjZGY0ZGQ2NTY4ZTBmNDYyMWViNTBk
ODlkZWU0NjdkNTVhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIFRyZWVTY29wZTo6VHJlZVNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIERvY3VtZW50
JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUoc2hhZG93Um9vdCkKICAgICAsIG1fZG9jdW1l
bnRTY29wZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKCZkb2N1bWVudCkKLSAg
ICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFr
ZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgc2hhZG93Um9vdC5z
ZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtNzMsNyArNzMsNyBAQCBUcmVlU2NvcGU6OlRyZWVT
Y29wZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKGRvY3VtZW50KQogICAg
ICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUobnVs
bHB0cikKLSAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVn
aXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgZG9j
dW1lbnQuc2V0VHJlZVNjb3BlKCp0aGlzKTsKIH0KQEAgLTE0MSw3ICsxNDEsNyBAQCBjb25zdCBW
ZWN0b3I8RWxlbWVudCo+KiBUcmVlU2NvcGU6OmdldEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9t
U3RyaW5nJiBlbGVtZW50SQogdm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0
b21TdHJpbmdJbXBsJiBlbGVtZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgbm90aWZ5T2Jz
ZXJ2ZXJzKQogewogICAgIGlmICghbV9lbGVtZW50c0J5SWQpCi0gICAgICAgIG1fZWxlbWVudHNC
eUlkID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBt
X2VsZW1lbnRzQnlJZCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBt
X2VsZW1lbnRzQnlJZC0+YWRkKGVsZW1lbnRJZCwgZWxlbWVudCwgKnRoaXMpOwogICAgIGlmIChu
b3RpZnlPYnNlcnZlcnMpCiAgICAgICAgIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3Rp
ZnlPYnNlcnZlcnMoZWxlbWVudElkKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBFbGVtZW50KiBUcmVl
U2NvcGU6OmdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZv
aWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1l
LCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghbV9lbGVtZW50c0J5TmFtZSkKLSAgICAg
ICAgbV9lbGVtZW50c0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1h
cD4oKTsKKyAgICAgICAgbV9lbGVtZW50c0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3Jk
ZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlOYW1lLT5hZGQobmFtZSwgZWxlbWVudCwgKnRo
aXMpOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlTWFw
KEhUTUxNYXBFbGVtZW50JiBpbWFnZU1hcCkKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAoIW1faW1hZ2VNYXBzQnlOYW1lKQotICAgICAgICBtX2ltYWdlTWFwc0J5TmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9p
bWFnZU1hcHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAg
bV9pbWFnZU1hcHNCeU5hbWUtPmFkZCgqbmFtZSwgaW1hZ2VNYXAsICp0aGlzKTsKIH0KIApAQCAt
MjYzLDcgKzI2Myw3IEBAIEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkSW1hZ2VFbGVt
ZW50QnlVc2VtYXAoY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUsIEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2ltYWdlc0J5VXNlbWFwKQotICAgICAgICBtX2ltYWdl
c0J5VXNlbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAg
ICAgICBtX2ltYWdlc0J5VXNlbWFwID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigp
OwogICAgIHJldHVybiBtX2ltYWdlc0J5VXNlbWFwLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMp
OwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgSFRNTExhYmVsRWxlbWVudCogVHJlZVNjb3BlOjps
YWJlbEVsZW1lbnRGb3JJZChjb25zdCBBdG9tU3RyaW5nJiBmb3JBdHRyaWJ1dGVWYWwKIAogICAg
IGlmICghbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSkgewogICAgICAgICAvLyBQb3B1bGF0ZSB0aGUg
bWFwIG9uIGZpcnN0IGFjY2Vzcy4KLSAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9sYWJlbHNC
eUZvckF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKIAogICAg
ICAgICBmb3IgKGF1dG8mIGxhYmVsIDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTExhYmVsRWxlbWVu
dD4obV9yb290Tm9kZSkpIHsKICAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvclZhbHVl
ID0gbGFiZWwuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAppbmRleCBkZGE0OTBi
MTNjZGMyZGRiODNmYjFmYzhmZmFiMDlkZjAwODhkODJjLi40MjY4MTk2Zjg5MmFmMzA1NTEwM2M0
ODcyZmU4ZWNiZGQ1ZjExYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiBj
bGFzcyBUZXh0OwogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VW5kb1JlcGxhY2VkVGV4dCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVVuZG9S
ZXBsYWNlZFRleHQoKSB7IH0KICAgICB2b2lkIGNvbmZpZ3VyZVJhbmdlRGVsZXRlZEJ5UmVhcHBs
eVdpdGhTdGFydGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNzkzNDJjNDk3NzUzZDlhMTUyNmUwNTU1NDlmYzc3OTcy
MTRiZjZlNC4uODkxYzEyODhjNmUzMTRhY2NhZTliNjI3MTk3ODE4ODFlNzQyZGMyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzgwLDEyICszODAsMTIgQEAgc3RhdGljIFJlZjxE
YXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50
JiBkb2N1bWVudCwKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50
S2luZDo6Q29weToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6Q3V0OgotICAgICAgICBy
ZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFU
cmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFz
dGVib2FyZD4oKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFr
ZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2lu
ZDo6UGFzdGVBc1BsYWluVGV4dDoKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKICAgICAg
ICAgICAgIGF1dG8gcGxhaW5UZXh0VHlwZSA9ICJ0ZXh0L3BsYWluIl9zOwogICAgICAgICAgICAg
YXV0byBwbGFpblRleHQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+cmVh
ZFN0cmluZyhwbGFpblRleHRUeXBlKTsKLSAgICAgICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0
ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKKyAgICAgICAgICAgIGF1dG8gcGFz
dGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKICAgICAgICAgICAgIHBh
c3RlYm9hcmQtPndyaXRlU3RyaW5nKHBsYWluVGV4dFR5cGUsIHBsYWluVGV4dCk7CiAgICAgICAg
ICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQs
IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSk7
CiAgICAgICAgIH0KQEAgLTM5NiwxMCArMzk2LDEwIEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVy
PiBjcmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQs
CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJlZm9yZUNvcHk6CiAgICAgY2FzZSBDbGlw
Ym9hcmRFdmVudEtpbmQ6OkJlZm9yZUN1dDoKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6
QmVmb3JlUGFzdGU6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIHN0ZDo6
bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9y
ZU1vZGU6OkludmFsaWQsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFs
aWQsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAgcmV0dXJuIERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6
OlN0b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKIH0K
IAogLy8gUmV0dXJucyB3aGV0aGVyIGNhbGxlciBzaG91bGQgY29udGludWUgd2l0aCAidGhlIGRl
ZmF1bHQgcHJvY2Vzc2luZyIsIHdoaWNoIGlzIHRoZSBzYW1lIGFzCkBAIC0xMTgzLDkgKzExODMs
OSBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9u
JiBjb21wb3NpdGlvbikKIAogRWRpdG9yOjpFZGl0b3IoRnJhbWUmIGZyYW1lKQogICAgIDogbV9m
cmFtZShmcmFtZSkKLSAgICAsIG1fa2lsbFJpbmcoc3RkOjptYWtlX3VuaXF1ZTxQQUw6OktpbGxS
aW5nPigpKQotICAgICwgbV9zcGVsbENoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxTcGVsbENoZWNr
ZXI+KGZyYW1lKSkKLSAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKKyAgICAsIG1fa2lsbFJp
bmcobWFrZVVuaXF1ZTxQQUw6OktpbGxSaW5nPigpKQorICAgICwgbV9zcGVsbENoZWNrZXIobWFr
ZVVuaXF1ZTxTcGVsbENoZWNrZXI+KGZyYW1lKSkKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKICAg
ICAsIG1fZWRpdG9yVUlVcGRhdGVUaW1lcigqdGhpcywgJkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVU
aW1lckZpcmVkKQogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3RlbGVwaG9uZU51bWJlckRldGVjdGlvblVwZGF0
ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjpzY2FuU2VsZWN0aW9uRm9yVGVsZXBob25lTnVtYmVycykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKaW5kZXggMGRkYzE1YmRjMGQzMDRmNDU0M2EwNTk2MmJjNmNjNzY0NWY1NDc5NC4uMmMyMDI4
Y2M2M2MxYjkzOGJjNjZmZjRiZWE1ODk5MjU4ZTlhNGE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTE2MzEsNyArMTYz
MSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnVwZGF0ZU5vZGVzSW5zZXJ0ZWQo
Tm9kZSAqbm9kZSkKIFJlcGxhY2VtZW50RnJhZ21lbnQqIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjplbnN1cmVSZXBsYWNlbWVudEZyYWdtZW50KCkKIHsKICAgICBpZiAoIW1fcmVwbGFjZW1lbnRG
cmFnbWVudCkKLSAgICAgICAgbV9yZXBsYWNlbWVudEZyYWdtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXBsYWNlbWVudEZyYWdtZW50PihtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIGVuZGluZ1Nl
bGVjdGlvbigpKTsKKyAgICAgICAgbV9yZXBsYWNlbWVudEZyYWdtZW50ID0gbWFrZVVuaXF1ZTxS
ZXBsYWNlbWVudEZyYWdtZW50PihtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCksIGVuZGluZ1NlbGVj
dGlvbigpKTsKICAgICByZXR1cm4gbV9yZXBsYWNlbWVudEZyYWdtZW50LmdldCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKaW5k
ZXggM2I0MDY4OGNiNGRhNjU2YjM0NDU4N2MwODg4NjM2YzBhYjE1NjZjZi4uZjliNjRjNWM4Yzg5
NmJmMzIyNjMwODcwOWYyNmFhNjY3ZTFlZDk4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcApAQCAtODEsNyArODEsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpOb3RpZmllcj4gU2VsZWN0aW9uUmVjdEdh
dGhlcmVyOjpjbGVhckFuZAogICAgIG1fZ2FwUmVjdHMuY2xlYXIoKTsKICAgICBtX2lzVGV4dE9u
bHkgPSB0cnVlOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpZXI+KCp0aGlz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5k
ZXggMTg5NmUxYTIyODFjMWE5YjA0NmU4ZWZhY2Q5MTE5YWY1ZTI3N2Q1Ni4uZjFkMTljMTAxMTRj
MWE5ODViOGI0MjZmYTY4ZmRiODEyMmE2MGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcApAQCAtNjUwLDcgKzY1MCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Tm9kZSgpCiAgICAgICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gKG1fbm9kZSA9PSBt
X2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9lbmRPZmZzZXQpIDogcmVu
ZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICBpZiAoIW1fZmxvd1J1blJlc29sdmVyQ2FjaGUg
fHwgJm1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPmZsb3coKSAhPSAmYmxvY2tGbG93KSB7CiAgICAg
ICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyA9IG1fZmxvd1J1blJl
c29sdmVyQ2FjaGUgPyAwIDogdGV4dE5vZGVPZmZzZXRJbkZsb3codGV4dE5vZGUpOwotICAgICAg
ICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTGlu
ZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7CisgICAgICAgICAgICBt
X2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gbWFrZVVuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5S
ZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKICAgICAgICAgfQogICAgICAgICAvLyBTa2lw
IHRvIG1fb2Zmc2V0IHBvc2l0aW9uLgogICAgICAgICBhdXRvIHJhbmdlID0gbV9mbG93UnVuUmVz
b2x2ZXJDYWNoZS0+cmFuZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMGE4M2FjMDk1OTI3NGMwNzgw
ZDVkN2IzODVmMDE5YzBlODZlM2M3NC4uOWNmODZhNGExNWYxYzdjNmYwMjgxNTU2NDdhZmEwMDU5
YWUzYjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQpAQCAtMzgwLDcgKzM4MCw3IEBAIEhUTUxDb252ZXJ0ZXI6OkhUTUxDb252ZXJ0ZXIoY29u
c3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogICAgIF9mbGFncy5yZWFj
aGVkU3RhcnQgPSBmYWxzZTsKICAgICBfZmxhZ3MucmVhY2hlZEVuZCA9IGZhbHNlOwogICAgIAot
ICAgIF9jYWNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxDb252ZXJ0ZXJDYWNoZXM+KCk7Cisg
ICAgX2NhY2hlcyA9IG1ha2VVbmlxdWU8SFRNTENvbnZlcnRlckNhY2hlcz4oKTsKIH0KIAogSFRN
TENvbnZlcnRlcjo6fkhUTUxDb252ZXJ0ZXIoKQpAQCAtNTUxLDcgKzU1MSw3IEBAIFJlZlB0cjxD
U1NWYWx1ZT4gSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHlsZVByb3BlcnR5Rm9yRWxl
bWVudChFbGVtZW50JiBlCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fY29tcHV0ZWRTdHlsZXMuYWRk
KCZlbGVtZW50LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I+KCZlbGVtZW50LCB0cnVlKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1lbnQsIHRydWUpOwog
ICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3ImIGNvbXB1dGVkU3R5bGUgPSAqcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKICAgICByZXR1cm4gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3Bl
cnR5SWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAppbmRleCAyNTc3ZDVhNzY5NjgxNjIyZjVkMGE3YjYz
ZmY0ZDA5ZDg4Yzk1ZGMxLi4yOWM1YThkYTdlZTMyNTU2MTI2NTY5MDU0ZTMwMjIyOGE1MzAxODEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMzcsNiArMzcsNyBAQCBPQkpDX0NMQVNTIE5TVmlldzsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIoKSB7IH0KICAgICAvLyBSZXR1cm5zIGEgY29udGV4dCBJRC4KQEAg
LTUyLDYgKzUzLDcgQEAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKICAgICB2
b2lkIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKIAogICAgIGNsYXNzIEFsZXJuYXRpdmVUZXh0Q29u
dGV4dENvbnRyb2xsZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIoKSB7IH0KICAg
ICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRl
cm5hdGl2ZXM+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZmI0MzcxNjMwM2Fl
MjViODE5MjkyZDI3MWNhMmNhZTY4NGI5YzAyZS4uYzNjOGY4YjMyNGJmZWNkY2U5ZTVjNGViMTli
NWI3NDYwODkyOGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTc4LDcgKzE3
OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNv
bnRlbnQoKQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMoKTsKICAgICAKLSAgICBhdXRvIHBhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBhdXRvIHBhZ2UgPSBt
YWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICBwYWdlLT5z
ZXRJc0ZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRN
ZWRpYUVuYWJsZWQoZmFsc2UpOwogICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxl
ZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5k
ZXggYTA5NWVlYWU5YjJhNzk3YmRhYmFlMzQ5NDBmZGM2YTNjZTMwNDI0Yi4uZDU4MTEyZmY5YmRm
NmNkN2QxOTg1NTJkODY2OTkxZjg1YjdhMWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyB2b2lkIGNhbGxP
bkZpbGVUaHJlYWQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICAgICAgfSk7CiAg
ICAgfSk7CiAKLSAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlv
bjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQo
bWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAog
QXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50
KQotICAgIDogbV9pbnRlcm5hbHMoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkp
CisgICAgOiBtX2ludGVybmFscyhtYWtlVW5pcXVlPEludGVybmFscz4oY2xpZW50KSkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5jcHAKaW5kZXggOWFkM2RhOWVmZmYwZjNhNzA3YTA2MDFmNzg2MDFkNWQ4NjgyNThmNS4uOTlh
N2I1YzZmOTg3YTE0YmExOTA5NDU4OTg3YWU4NGVjZmM0ZjA4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKEJsb2ImIGJsb2IsIEZpbGVSZWFkZXJMb2FkZXI6OlJl
YWRUeXAKICAgICBtX3N0YXRlID0gTE9BRElORzsKICAgICBtX2Vycm9yID0gbnVsbHB0cjsKIAot
ICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRU
eXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOworICAgIG1f
bG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNf
Y2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOwogICAgIG1fbG9hZGVyLT5zZXRF
bmNvZGluZyhtX2VuY29kaW5nKTsKICAgICBtX2xvYWRlci0+c2V0RGF0YVR5cGUobV9ibG9iLT50
eXBlKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJs
b2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCA2YWU1NTJjYmNl
ZmJhMzVhZjU0OTRhZDgwYTE0NzMxZDAwYWNhM2QxLi41YzhmMThlM2RhYjBlYjI1OTdhZDVlODIy
MTM5YmQ4OGZmMzI0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApA
QCAtMTYzLDcgKzE2Myw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUp
CiAKICAgICAvLyBDcmVhdGUgdGhlIENhY2hlZEZyYW1lcyBmb3IgYWxsIEZyYW1lcyBpbiB0aGUg
RnJhbWVUcmVlLgogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQotICAgICAg
ICBtX2NoaWxkRnJhbWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEZyYW1lPigqY2hp
bGQpKTsKKyAgICAgICAgbV9jaGlsZEZyYW1lcy5hcHBlbmQobWFrZVVuaXF1ZTxDYWNoZWRGcmFt
ZT4oKmNoaWxkKSk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5kb21XaW5kb3co
KSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7CkBAIC0xNzIsNyAr
MTcyLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFtZSkKICAgICAvLyBB
Y3RpdmUgRE9NIG9iamVjdHMgbXVzdCBiZSBzdXNwZW5kZWQgYmVmb3JlIHdlIGNhY2hlIHRoZSBm
cmFtZSBzY3JpcHQgZGF0YS4KICAgICBtX2RvY3VtZW50LT5zdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb246OlBhZ2VDYWNoZSk7CiAKLSAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0Q2FjaGVkRnJhbWVEYXRhPihmcmFtZSk7CisgICAgbV9jYWNoZWRG
cmFtZVNjcmlwdERhdGEgPSBtYWtlVW5pcXVlPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4oZnJhbWUp
OwogCiAgICAgbV9kb2N1bWVudC0+ZG9tV2luZG93KCktPnN1c3BlbmRGb3JQYWdlQ2FjaGUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggMDY4NmFlOGZlY2U0NGYx
ZWY2OTBlNWY4ZjZhYmU4NDYxNDYzZGY3ZC4uOTc0N2E0MDQwMTZhYzg2OGQyZjc3OTZlNTMzMDQz
NmZmYTU4NzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291
bnRlciwgY2FjaGVkUGFnZUNvdW50ZXIsICgiQ2FjaGVkCiBDYWNoZWRQYWdlOjpDYWNoZWRQYWdl
KFBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fZXhwaXJhdGlvblRpbWUo
TW9ub3RvbmljVGltZTo6bm93KCkgKyBTZWNvbmRzKHBhZ2Uuc2V0dGluZ3MoKS5iYWNrRm9yd2Fy
ZENhY2hlRXhwaXJhdGlvbkludGVydmFsKCkpKQotICAgICwgbV9jYWNoZWRNYWluRnJhbWUoc3Rk
OjptYWtlX3VuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkpCisgICAgLCBtX2Nh
Y2hlZE1haW5GcmFtZShtYWtlVW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgpKSkK
IHsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2FjaGVkUGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggMDAyOTY1NTg5MmQxNTRjYjUwNDNl
MWRhMjI4MjU4NzlmNjNlZGRlNS4uM2JhMjRiOWRlMmU5OTQxOTZhMGRmOTJmYzM2NjNjZWVhNWJm
NGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDc4LDcgKzQ3OCw3
IEBAIGJvb2wgUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFn
ZSogcGFnZSkKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50
cyBpbiB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRo
cmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5tX2NhY2hlZFBhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKKyAgICAgICAgaXRlbS5tX2Nh
Y2hlZFBhZ2UgPSBtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKICAgICAgICAgaXRlbS5t
X3BydW5pbmdSZWFzb24gPSBQcnVuaW5nUmVhc29uOjpOb25lOwogICAgICAgICBtX2l0ZW1zLmFk
ZCgmaXRlbSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXgg
N2E5OTFmMTdiMDNkODNlOTA1ZjdkM2UwNjA3YmY1MmE5OWI4MGU0NS4uYjE0ZDMxMDE1OGI2NDVm
ZTg2OTlmN2Y5OWY0MTg1OGJkNTVhZTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNv
bihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgIG1fZmlsZUljb25Mb2FkZXIt
PmludmFsaWRhdGUoKTsKIAogICAgIEZpbGVJY29uTG9hZGVyQ2xpZW50JiBjbGllbnQgPSAqdGhp
czsKLSAgICBtX2ZpbGVJY29uTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlSWNvbkxvYWRl
cj4oY2xpZW50KTsKKyAgICBtX2ZpbGVJY29uTG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlSWNvbkxv
YWRlcj4oY2xpZW50KTsKIAogICAgIGNocm9tZS0+bG9hZEljb25Gb3JGaWxlcyhwYXRocywgKm1f
ZmlsZUljb25Mb2FkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwCmluZGV4IDgwNmU1ZjNkYWViZTI5NGUzMzAyMzBkZmE1ZWRlOGM5MmQ1OGMz
MTguLjE3YzAyN2NmZGZhMWJiNDNiNjQ1ZWU2MmQ1OGM4YWMzMjA2ZDg3NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTI3OSw3ICsyNzks
NyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3Qg
U3RyaW5nJiBlcnJvcikKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oYXNIVE1MRWxlbWVudCgpLmlzQ29ubmVjdGVkKCkpOwotICAgIG1fZm9ybUF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZv
cm1BdHRyKSwgKnRoaXMpOworICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbWFr
ZVVuaXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMpOwogfQogCiB2b2lk
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCBlYTViMDlhYWEwOGRiMjczOTYx
Yjk1MzQyMmYwM2RkN2FkNmU0NjcxLi5kMGUwM2Y1NmNiMDYzZTI3ZjExMzQwYTI3MTNkNGY5NjFi
NWFlNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMjAwLDcg
KzIwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4gU2F2ZWRGb3JtU3RhdGU6
OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgc2l6ZV90IGl0ZW1Db3VudCA9
IHN0YXRlVmVjdG9yW2luZGV4KytdLnRvVUludCgpOwogICAgIGlmICghaXRlbUNvdW50KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gc3RkOjptYWtl
X3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKKyAgICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gbWFr
ZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAgICB3aGlsZSAoaXRlbUNvdW50LS0pIHsKICAg
ICAgICAgaWYgKGluZGV4ICsgMSA+PSBzdGF0ZVZlY3Rvci5zaXplKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTM2NSwxMyArMzY1LDEzIEBAIHN0YXRpYyBTdHJpbmcgZm9ybVN0
YXRlU2lnbmF0dXJlKCkKIHN0ZDo6dW5pcXVlX3B0cjxGb3JtQ29udHJvbGxlcjo6U2F2ZWRGb3Jt
U3RhdGVNYXA+IEZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1hcChjb25zdCBG
b3JtRWxlbWVudExpc3RIYXNoU2V0JiBjb250cm9sTGlzdCkKIHsKICAgICBGb3JtS2V5R2VuZXJh
dG9yIGtleUdlbmVyYXRvcjsKLSAgICBhdXRvIHN0YXRlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxT
YXZlZEZvcm1TdGF0ZU1hcD4oKTsKKyAgICBhdXRvIHN0YXRlTWFwID0gbWFrZVVuaXF1ZTxTYXZl
ZEZvcm1TdGF0ZU1hcD4oKTsKICAgICBmb3IgKGF1dG8mIGNvbnRyb2wgOiBjb250cm9sTGlzdCkg
ewogICAgICAgICBpZiAoIWNvbnRyb2wtPnNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xT
dGF0ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8mIGZvcm1TdGF0ZSA9
IHN0YXRlTWFwLT5hZGQoa2V5R2VuZXJhdG9yLmZvcm1LZXkoKmNvbnRyb2wpLmltcGwoKSwgbnVs
bHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAoIWZvcm1TdGF0ZSkKLSAgICAgICAg
ICAgIGZvcm1TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CisgICAg
ICAgICAgICBmb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwogICAgICAg
ICBmb3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1lKCksIGNvbnRyb2wt
PnR5cGUoKSwgY29udHJvbC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CiAgICAgfQogICAgIHJl
dHVybiBzdGF0ZU1hcDsKQEAgLTQwMyw3ICs0MDMsNyBAQCBGb3JtQ29udHJvbFN0YXRlIEZvcm1D
b250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRyb2xF
bAogICAgIGlmIChtX3NhdmVkRm9ybVN0YXRlTWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IEZvcm1Db250cm9sU3RhdGUoKTsKICAgICBpZiAoIW1fZm9ybUtleUdlbmVyYXRvcikKLSAgICAg
ICAgbV9mb3JtS2V5R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtS2V5R2VuZXJhdG9y
PigpOworICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEZvcm1LZXlHZW5l
cmF0b3I+KCk7CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zYXZlZEZv
cm1TdGF0ZU1hcC5maW5kKG1fZm9ybUtleUdlbmVyYXRvci0+Zm9ybUtleShjb250cm9sKS5pbXBs
KCkpOwogICAgIGlmIChpdCA9PSBtX3NhdmVkRm9ybVN0YXRlTWFwLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmNwcAppbmRleCAxMDQ3YzU4ZWVjMzUzNmUzZDM5OTNhN2I2ZTU4NjI1YjAxNTk1MmYx
Li5lYjliZDA2ODVkNTkyZWE2OTIzMTNhZDQxNmMyN2Q3ZjI4MjYxZjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wg
SFRNTEFuY2hvckVsZW1lbnQ6Omhhc1JlbChSZWxhdGlvbiByZWxhdGlvbikgY29uc3QKIERPTVRv
a2VuTGlzdCYgSFRNTEFuY2hvckVsZW1lbnQ6OnJlbExpc3QoKSBjb25zdAogewogICAgIGlmICgh
bV9yZWxMaXN0KSB7Ci0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9r
ZW5MaXN0Pihjb25zdF9jYXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6
OnJlbEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3Jl
bExpc3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oY29uc3RfY2FzdDxIVE1MQW5jaG9yRWxl
bWVudCY+KCp0aGlzKSwgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1Zp
ZXcgdG9rZW4pIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgICAgICAgICByZXR1cm4g
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm5vcmVmZXJyZXIiKSB8fCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKHRva2VuLCAibm9vcGVuZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHRva2VuLCAiYXIiKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5j
cHAKaW5kZXggYWMwNzU4ZGU4M2IwNDg4MmE1ZDg5MjJmZDQwNTU0OGVmOTU2ZGNhMi4uNDlhYmZh
NWY3MGE3YWI5N2Q3M2UyYzgyYjc2N2IwNTM1MWFkZWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVu
dDo6aW52YWxpZGF0ZUNhY2hlZFJlZ2lvbigpCiBib29sIEhUTUxBcmVhRWxlbWVudDo6bWFwTW91
c2VFdmVudChMYXlvdXRQb2ludCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlmIChtX2xhc3RTaXplICE9IHNpemUpIHsKLSAg
ICAgICAgbV9yZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7
CisgICAgICAgIG1fcmVnaW9uID0gbWFrZVVuaXF1ZTxQYXRoPihnZXRSZWdpb24oc2l6ZSkpOwog
ICAgICAgICBtX2xhc3RTaXplID0gc2l6ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggYTliYjRmYjhlMDYzZTcwMTVmMWE2NGU3ZDg2ZmVi
MzU4ZmZjMjdjZC4uODk0ZTYzOThiOGE0ZWNkZGVkZjllMTk4OGE0MTRjMTcxYjI4NjliYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTk1OSw3ICs5NTks
NyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKSBjbwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQo
KS5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKICAgICBtX2ltYWdlQnVmZmVyLT5j
b250ZXh0KCkuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShkZWZhdWx0SW50ZXJwb2xhdGlv
blF1YWxpdHkpOwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25l
c3MoMSk7Ci0gICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlcj4obV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX2Nv
bnRleHRTdGF0ZVNhdmVyID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPiht
X2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhI
VE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpKTsKICAgICBIVE1MRWxl
bWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1v
cnlBbGxvY2F0ZWQobWVtb3J5Q29zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKaW5kZXggOTc2YzhlMGE5YTA2YTliODNkNmNhOTQxYmQ1ZGQzN2I5ZjMzODVjNS4uMzI4
MTc2YjY5ZThjZDFiZjIyZDRlNzYzMjdlOWYyOTI5NjhhYjQxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEhUTUxDb2xsZWN0
aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxl
bWVudENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hl
ID0gbWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKICAgICB1bnNp
Z25lZCBzaXplID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4
IGYxNTc4NzRlNmQ1MzRlM2Y2MTM0ZTRhNWRmNGY1MWJlMmY2N2EzMWEuLjYwZGQxZmIyNTIwMzg2
MGQzZDkyYTdhNWFjYjMzMWMyYWIwNGI1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
ZXRhaWxzRWxlbWVudC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgRGV0
YWlsc1Nsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGls
ZCkKIFJlZjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBh
dXRvIGRldGFpbHMgPSBhZG9wdFJlZigqbmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwotICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRl
KGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOwor
ICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBt
YWtlVW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOwogICAgIHJldHVybiBkZXRhaWxz
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAppbmRleCBkODg5M2IxZjA5NDllZjEwMmUyOWQwM2M1ODk2N2M0ZGQ0ZjNmZDVhLi5lMTUzMTZh
MTllZWZiNDc3ZTNmMzY3YzgwZjdjM2MxYTJhNjM0Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgp
CiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpCiAgICAgICAgIG1lc3NhZ2Ug
PSB2YWxpZGF0aW9uTWVzc2FnZSgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIGlmICghbV92YWxp
ZGF0aW9uTWVzc2FnZSkKLSAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IHN0ZDo6bWFrZV91
bmlxdWU8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMpOworICAgICAgICBtX3ZhbGlkYXRpb25NZXNz
YWdlID0gbWFrZVVuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CiAgICAgbV92YWxpZGF0
aW9uTWVzc2FnZS0+dXBkYXRlVmFsaWRhdGlvbk1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5k
ZXggNmVjMjJkNzc0OWYyZjc4YmQzMWVmNzdlYTYzNjA3M2I3MWM1OWZmMi4uYTJiMDBlOGY4MTZk
YTFjMjIxYjFjMzY2ZWE2ZTY4OWMzYjFjNjhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2
b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgp
IGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1l
bnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRF
bGVtZW50Q2FjaGU+KCk7CiAKICAgICBIYXNoU2V0PEF0b21TdHJpbmdJbXBsKj4gZm91bmRJbnB1
dEVsZW1lbnRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXgg
Yzc2ZDQ5M2E2MmNlZDgzMDg4MDFiNmIwMWQzMzIxZTBhMzMzZjUxZC4uNDM1ZDk1MTRkZDI5ZGRk
MWY2ZGZiMWQxNjllMzQ3ZTMxNWEzMDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjphZGRU
b1Bhc3ROYW1lc01hcChGb3JtTmFtZWRJdGVtKiBpdGVtLCBjb25zdCBBdG9tU3RyaW5nJiBwCiAg
ICAgaWYgKHBhc3ROYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9w
YXN0TmFtZXNNYXApCi0gICAgICAgIG1fcGFzdE5hbWVzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YXN0TmFtZXNNYXA+KCk7CisgICAgICAgIG1fcGFzdE5hbWVzTWFwID0gbWFrZVVuaXF1ZTxQYXN0
TmFtZXNNYXA+KCk7CiAgICAgbV9wYXN0TmFtZXNNYXAtPnNldChwYXN0TmFtZS5pbXBsKCksIGl0
ZW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4
IDAyZDdkNGU0ZmJlODZmNTI3MGY1ODRiNmE4ZGViOWJlNDZmOTdhYTkuLmIxYzgyMWRkOWJhYmEy
YTIwY2IyOWUxYzFjZmQ5MGQ3MWZlYzU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFJlZjxIVE1MSUZyYW1lRWxlbWVudD4g
SFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
CiBET01Ub2tlbkxpc3QmIEhUTUxJRnJhbWVFbGVtZW50OjpzYW5kYm94KCkKIHsKICAgICBpZiAo
IW1fc2FuZGJveCkgewotICAgICAgICBtX3NhbmRib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRv
a2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9r
ZW4pIHsKKyAgICAgICAgbV9zYW5kYm94ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlz
LCBzYW5kYm94QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAg
ICAgICByZXR1cm4gU2VjdXJpdHlDb250ZXh0Ojppc1N1cHBvcnRlZFNhbmRib3hQb2xpY3kodG9r
ZW4pOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAppbmRleCAwYzI1Y2RkODBkNWY4YTc3MGExZDk3MDA1Nzg0N2E4OWM1NjgzZGJkLi4z
NzZjNTIxOTY0ZTBmNzFiNmZkOWMyMTcyZDYyMDFjMjkyNTdhMWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBSZWY8SFRNTElu
cHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvYwogSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJ
bWFnZUxvYWRlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdl
TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAg
ICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCkBAIC0xNjQxLDcgKzE2NDEsNyBAQCBSZWZQ
dHI8SFRNTERhdGFMaXN0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6ZGF0YUxpc3QoKSBjb25z
dAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
cigpCiB7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCi0gICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRh
cmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXI+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGlzdEF0dHIpLCB0aGlzKTsKKyAg
ICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPExpc3RBdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0
QXR0ciksIHRoaXMpOwogICAgIGVsc2UKICAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CmluZGV4IGI4NjM0Y2FkYWZhMThhMGEyN2NjZjcyOGY5YmJmNTZjYjdmNzhkMTYuLmY2YTdiYzgw
MjRmZmE1ZTRiZDcxZjY5YTI3Yzk3YzhjOTM2YmI0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVu
dDo6c3R5bGVTaGVldElzTG9hZGluZygpIGNvbnN0CiBET01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxl
bWVudDo6c2l6ZXMoKQogewogICAgIGlmICghbV9zaXplcykKLSAgICAgICAgbV9zaXplcyA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRyKTsKKyAgICAgICAg
bV9zaXplcyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRyKTsKICAg
ICByZXR1cm4gKm1fc2l6ZXM7CiB9CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVyKiBldmVudFNlbmRl
cikKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpyZWxMaXN0KCkKIHsKICAgICBpZiAo
IW1fcmVsTGlzdCkgCi0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9r
ZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYgZG9jdW1lbnQs
IFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9yZWxMaXN0ID0gbWFrZVVuaXF1ZTxET01U
b2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiBkb2N1bWVu
dCwgU3RyaW5nVmlldyB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuIExpbmtSZWxBdHRyaWJ1
dGU6OmlzU3VwcG9ydGVkKGRvY3VtZW50LCB0b2tlbik7CiAgICAgICAgIH0pOwogICAgIHJldHVy
biAqbV9yZWxMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggZjc0MGNjYWMyNDJlOWUwZjNiYzhkZGM5NTc1ZmIzMmE0ZWYxOThhZi4uZjNhY2ZjZGUwMDA3
YTI0ZjI3NWE0Yzk1NGQ1MjUxMjA4Mzc4Mjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRN
TE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXphdGlvbigpCiB7Ci0g
ICAgbV9tZWRpYVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhRWxlbWVudFNlc3Npb24+
KCp0aGlzKTsKKyAgICBtX21lZGlhU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TWVkaWFFbGVtZW50U2Vz
c2lvbj4oKnRoaXMpOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rp
b24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7
CiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50
U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwpAQCAtMzAyNyw3ICszMDI3
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRp
YVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0KIAogICAgIC8vIDUgLSBJZiB0aGUgc2VlayB3
YXMgaW4gcmVzcG9uc2UgdG8gYSBET00gbWV0aG9kIGNhbGwgb3Igc2V0dGluZyBvZiBhbiBJREwg
YXR0cmlidXRlLCB0aGVuIGNvbnRpbnVlCiAgICAgLy8gdGhlIHNjcmlwdC4gVGhlIHJlbWFpbmRl
ciBvZiB0aGVzZSBzdGVwcyBtdXN0IGJlIHJ1biBhc3luY2hyb25vdXNseS4KLSAgICBtX3BlbmRp
bmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2
ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOworICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtl
VW5pcXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2
ZVRvbGVyYW5jZSk7CiAgICAgaWYgKGZyb21ET00pIHsKICAgICAgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgImVucXVldWluZyBzZWVrIGZyb20gIiwgbm93LCAiIHRvICIsIHRpbWUpOwogICAg
ICAgICBtX3NlZWtUYXNrUXVldWUuc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxl
bWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgKaW5kZXggZDBiYWI5ZmM5ZDZlZGExYzFiYzJhNjA5NjgzZjI3NmZlNzYwM2NmOC4uZjI0ZTg3
NmExM2I2MTU1OWUyYzk5NWJiYTRhNWU0NTIzNDk3MDA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKQEAgLTk5MCw2ICs5OTAsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVt
ZW50CiAgICAgUmVmUHRyPE1lZGlhRXJyb3I+IG1fZXJyb3I7CiAKICAgICBzdHJ1Y3QgUGVuZGlu
Z1NlZWsgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IFBlbmRpbmdTZWVrKGNvbnN0IE1lZGlhVGltZSYgbm93LCBjb25zdCBNZWRpYVRpbWUmIHRhcmdl
dFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlhVGlt
ZSYgcG9zaXRpdmVUb2xlcmFuY2UpCiAgICAgICAgICAgICA6IG5vdyhub3cpCiAgICAgICAgICAg
ICAsIHRhcmdldFRpbWUodGFyZ2V0VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0
RWxlbWVudC5jcHAKaW5kZXggZGQ0ZmEyZDcwZTRmNDNmNDJiODIyMmQzN2Q0NDE4ZjFhMTMxZWQ4
Ny4uNTZiNzIwNmFlM2JlOGYxMGE4ODE0YWU5YWZhYzYyYmZlYjU2MDlhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lk
IEhUTUxPdXRwdXRFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IERPTVRva2VuTGlzdCYgSFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IoKQogewogICAgIGlmICgh
bV90b2tlbnMpCi0gICAgICAgIG1fdG9rZW5zID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxp
c3Q+KCp0aGlzLCBmb3JBdHRyKTsKKyAgICAgICAgbV90b2tlbnMgPSBtYWtlVW5pcXVlPERPTVRv
a2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOwogICAgIHJldHVybiAqbV90b2tlbnM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGRk
YTk0NDlkNTdhZDQyMDg1ODYyN2RlZDNmZGQ5MTgxMzIxNWZlMmIuLjViOTlkNTU1NTMwNDk3MDkz
YzZiY2E5OTU4N2M3YTJmNzI1NTkwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24oKQogICAgIGlmIChyZW5k
ZXJlcigpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgewogICAgICAgICBpZiAoaXNJbWFnZVR5
cGUoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAg
IG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMp
OworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxv
YWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgaWYgKG1fbmVlZHNJbWFnZVJlbG9hZCkKICAgICAg
ICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlv
dXNFcnJvcigpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3Vt
bWFyeUVsZW1lbnQuY3BwCmluZGV4IDEwYmMwOWZmMDk5Yzg4OGIyMjYyNjkzOTBiOGUxZjhiZTRj
ZTM5NjcuLmIwNDkzOWI5YzJkNzI3MDIxMzc5YzVhNGRkMzQwNDdkODEyYWQ5NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
Y2xhc3MgU3VtbWFyeVNsb3RFbGVtZW50IGZpbmFsIDogcHVibGljIFNsb3RBc3NpZ25tZW50IHsK
IFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWY8
SFRNTFN1bW1hcnlFbGVtZW50PiBzdW1tYXJ5ID0gYWRvcHRSZWYoKm5ldyBIVE1MU3VtbWFyeUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAgICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNo
YWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxTdW1tYXJ5U2xvdEVs
ZW1lbnQ+KCkpKTsKKyAgICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0
ZShkb2N1bWVudCwgbWFrZVVuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsKICAgICByZXR1
cm4gc3VtbWFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
aW5kZXggYTVlNzVhYWZmNTJkZGY5ZjU3NTQ1YmEwNjdlZWM3ODk4ODhkZDlhYi4uNjdmZjIxMjUy
ZjFiOGU4MzEwYTFkN2NiYjIzMmVhOGM3MzkzOGEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVu
dDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKICAgICBp
ZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgaWYgKCFtX2ltYWdlTG9h
ZGVyKQotICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTElt
YWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1
ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRl
RnJvbUVsZW1lbnQoKTsKICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5pbWFnZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1h
Z2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBIVE1M
VmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW4KIAogICAgICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkp
IHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAgICBtX2lt
YWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAg
ICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+
KCp0aGlzKTsKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdu
b3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVi
bGljVVJMTWFuYWdlci5jcHAKaW5kZXggN2JlYmM3YTEwY2NiZWQ1M2NmZThjYWY4YTA3Yzc4ZTZj
NTc5ZDY0Zi4uYjY2OGRhMWYzMjE0ZGJmOWI5MTYxZWZhODMyNTZjOTVjYTgyMTFkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFB1YmxpY1VSTE1hbmFnZXI+IFB1
YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ewotICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHVibGljVVJM
TWFuYWdlcj4oY29udGV4dCk7CisgICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0gbWFrZVVuaXF1
ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKICAgICBwdWJsaWNVUkxNYW5hZ2VyLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcHVibGljVVJMTWFuYWdlcjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggOGFmNzNhOGEwMDU0OTgwYWQx
NzkwNjk1NmE4NDMyYTZmOWNkYjE0Yi4uZjVkYWIwZjQyZjJkMDUzZTcwM2M2YzU3MjNjYTE2MDM3
MWQxYTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAg
LTExNSw5ICsxMTUsOSBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICBt
X21lc3NhZ2UgPSBtZXNzYWdlOwogICAgIGlmICghbV9idWJibGUpCi0gICAgICAgIG1fdGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWls
ZEJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKTsKICAgICBlbHNlCi0gICAgICAg
IG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNz
YWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7CisgICAgICAgIG1fdGltZXIgPSBtYWtl
VW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5k
U3RhcnRUaW1lcik7CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKQEAgLTE0
Myw3ICsxNDMsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3Rh
cnRUaW1lcigpCiAgICAgaWYgKG1hZ25pZmljYXRpb24gPD0gMCkKICAgICAgICAgbV90aW1lciA9
IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKKyAg
ICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3Nh
Z2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3Qoc3Rk
OjptYXgoNV9zLCAxX21zICogc3RhdGljX2Nhc3Q8ZG91YmxlPihtX21lc3NhZ2UubGVuZ3RoKCkp
ICogbWFnbmlmaWNhdGlvbikpOwogICAgIH0KIH0KQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFZh
bGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSgpCiAgICAgfQogCiAgICAgLy8g
V2UgbXVzdCBub3QgbW9kaWZ5IHRoZSBET00gdHJlZSBpbiB0aGlzIGNvbnRleHQgYnkgdGhlIHNh
bWUgcmVhc29uIGFzIHNldE1lc3NhZ2UoKS4KLSAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7Cisg
ICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6
OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGIxNjc3ODQ0MjhjM2JmZTllNmYxNmE3Nzg0MGQz
ZjNiYjk3MDViOTYuLjUzYzljNTY2MDQyN2M0ODZlMzJhYmMwYzJkNjU0Y2NjNTZjMDI4YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0cnVjdCBEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0IHsKIAogICAgIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCiAgICAg
ICAgIDogY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRl
cj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRy
YW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpS
ZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFm
ZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSkKICAgICB7CiAgICAgfQpAQCAtMjExOCw3ICsy
MTE4LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpk
cmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKFVOTElLRUxZKG1fdXNlc0Rpc3BsYXlM
aXN0RHJhd2luZykpIHsKICAgICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRleHQpCi0gICAgICAg
ICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50
Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fcmVjb3JkaW5n
Q29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3ND
b250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgp
LnNpemUoKSkpOwogICAgICAgICByZXR1cm4gJm1fcmVjb3JkaW5nQ29udGV4dC0+Y29udGV4dDsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjMxMTkxNzU3MGYyZGIyODU5NGNiYjM0OTAyNDY5OTdi
NTgzZmJlMC4uY2Q0NzIxMjYxYjJlMDIyYjU1MjVkZDNkM2NhNTQ2OWY5YzBiM2VhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTEzNTksNyArMTM1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2RlZmluZSBFTkFC
TEVfSUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgY2FuRW5hYmxlKSBc
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgbmFtZUxpdGVyYWwpKSB7IFwK
ICAgICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5F
bmFibGUpID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCisgICAg
ICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0eXBlPigqdGhpcykg
OiBudWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAg
ICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9u
KCp0aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGUwNmJmOTlkNTkxNTk2
Mzk4MGE2MTFjMzJhODM5ZTI5N2YxMjgwNDUuLmU1ZmRlNzAzMzc0NTZhMzFlMTU3MWVlMTBmM2Zk
MjY0MmRiMDM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIFdlYkdMRXh0ZW5zaW9u
KiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUp
CiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFs
LCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1l
TGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZh
cmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51
bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVl
PHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBu
dWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApAQCAtMTMyLDcgKzEz
Miw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lv
bihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJl
TE9EID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiX3MpOwotICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6
bWFrZV91bmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOworICAgICAgICAgICAgICAg
IG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG1ha2VVbmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4o
KnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5h
YmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MTU5LDcgKzE1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV93ZWJnbERy
YXdCdWZmZXJzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiX3MpOwotICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fd2Vi
Z2xEcmF3QnVmZmVycyA9IG1ha2VVbmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOwogICAg
ICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9u
KCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTcxLDcgKzE3MSw3
IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5
cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJy
YXlzIl9zKTsKLSAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gc3RkOjpt
YWtlX3VuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4oKnRoaXMpOworICAgICAgICAgICAgICAg
IG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBtYWtlVW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlz
PigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCmluZGV4IDNlY2U3ZWViNzQyZmFkYjZmZTE4YjMzZWI1YTYxMzljZWQ0MWJh
NTYuLmQxNjZmYjIzOTA3NmQzNjI2NWQ5NmM2NDVmMDcxODc1YWM4MmJiMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCkBAIC03OTksOCArNzk5LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBj
YW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogICAgIG1fY29udGV4dC0+
c2Npc3NvcigwLCAwLCBjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwog
Ci0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8
V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7Ci0gICAgbV9jb250ZXh0
LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMUmVuZGVyaW5n
Q29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0LT5zZXRD
b250ZXh0TG9zdENhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENh
bGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayht
YWtlVW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlz
KSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncygpCkBA
IC0xNTc5LDcgKzE1NzksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBp
bGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2Ny
aXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGVy
cm9yIDogZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpLnNwbGl0KCdcbicpKQotICAgICAgICAgICAg
Y2FudmFzLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tU
cmFjZS5jb3B5UmVmKCkpKTsKKyAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25z
b2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwg
IldlYkdMOiAiICsgZXJyb3IsIHN0YWNrVHJhY2UuY29weVJlZigpKSk7CiAgICAgfQogfQogCkBA
IC01ODA4LDkgKzU4MDgsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50
VG9Db25zb2xlKE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJgogICAgIC8vIEVycm9y
IG1lc3NhZ2VzIGNhbiBvY2N1ciBkdXJpbmcgZnVuY3Rpb24gY2FsbHMsIHNvIHNob3cgc3RhY2sg
dHJhY2VzIGZvciB0aGVtLgogICAgIGlmIChsZXZlbCA9PSBNZXNzYWdlTGV2ZWw6OkVycm9yKSB7
CiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IElu
c3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUo
KSk7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpM
b2csIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICAgICAgY29uc29s
ZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1v
dmUoc3RhY2tUcmFjZSkpOwogICAgIH0gZWxzZQotICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSk7CisgICAgICAgIGNv
bnNvbGVNZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlKTsK
IAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKICAgICBpZiAoY2FudmFzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4
IGU4NTkwY2NjNjk3MjhhZjM5MzAxZDNhZThkODk4OGY1YzE1YTRiMmEuLmFlZmU0NTdmNGVmZjA0
MzY1NzYzY2IyNmY3MTc4NDYzZTMyZTFkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENT
U1ByZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2Nhbm5lciB2aWEgc2NhbigpOiB3aXRo
b3V0IGl0IHdlIHdpbGwgZ2V0IHJlbGF0aXZlIFVSTHMgd3JvbmcuCiAgICAgICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIHRoaXMgYmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGluIHRoZSBwcmVsb2Fk
IHJlcXVlc3Q/Ci0gICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291
cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVs
ZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOworICAgICAgICAgICAg
bV9yZXF1ZXN0cy0+YXBwZW5kKG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmws
IGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3Ry
aW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6
RW1wdHlTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAgICBtX3N0YXRlID0gSW5pdGlhbDsKICAg
ICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJ1bGUsICJjaGFyc2V0
IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKaW5kZXggNTFiYWU0YzIxY2Y5NDBkY2Q4YzZkMzIwYmM0ZGJkNjYyNmJlN2Q5Zi4u
OWFjNDQ0ZWYwYTY3MWY4YTQ3Njk5NTdhZTMyMjJiZDhkMTAwN2Q5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNTAz
LDcgKzUwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0
YT4gSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxFCiAgICAgSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKiBlbGVtZW50SW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICBSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFj
ZSh0b2tlbiwgJmVsZW1lbnRJbnRlcmZhY2UpOwogICAgIGlmIChVTkxJS0VMWShlbGVtZW50SW50
ZXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudENv
bnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJmYWNlLCB0b2tlbi5uYW1lKCksIFdURk1vdmUo
dG9rZW4uYXR0cmlidXRlcygpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPigqZWxlbWVudEludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBX
VEZNb3ZlKHRva2VuLmF0dHJpYnV0ZXMoKSkpOwogICAgIGF0dGFjaExhdGVyKGN1cnJlbnROb2Rl
KCksICplbGVtZW50KTsKICAgICBtX29wZW5FbGVtZW50cy5wdXNoKEhUTUxTdGFja0l0ZW06OmNy
ZWF0ZShlbGVtZW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUodG9rZW4pKSk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCA0ZmY0ZTJiODc4OGE5MTliZjQyZDE3YWQ5ZmQ2NTFiOWIwM2Fk
MTliLi5kZDllYTA0YzZmNTAwYzg2NGI4Yzk0YzE5MzgzNzg3N2FmZmRlNWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTUz
LDExICs1MywxMSBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1M
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3Vt
ZW50KQogICAgICwgbV9vcHRpb25zKGRvY3VtZW50KQogICAgICwgbV90b2tlbml6ZXIobV9vcHRp
b25zKQotICAgICwgbV9zY3JpcHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MU2NyaXB0UnVu
bmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhvc3QmPigqdGhpcykp
KQotICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4o
KnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCi0gICAg
LCBtX3BhcnNlclNjaGVkdWxlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+
KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVyKG1ha2VVbmlxdWU8SFRNTFNjcmlwdFJ1bm5l
cj4oZG9jdW1lbnQsIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0Jj4oKnRoaXMpKSkK
KyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBk
b2N1bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQorICAgICwgbV9wYXJz
ZXJTY2hlZHVsZXIobWFrZVVuaXF1ZTxIVE1MUGFyc2VyU2NoZWR1bGVyPigqdGhpcykpCiAgICAg
LCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShkb2N1bWVudCkKLSAgICAsIG1fcHJlbG9hZGVyKHN0ZDo6
bWFrZV91bmlxdWU8SFRNTFJlc291cmNlUHJlbG9hZGVyPihkb2N1bWVudCkpCisgICAgLCBtX3By
ZWxvYWRlcihtYWtlVW5pcXVlPEhUTUxSZXNvdXJjZVByZWxvYWRlcj4oZG9jdW1lbnQpKQogewog
fQogCkBAIC03MCw3ICs3MCw3IEBAIGlubGluZSBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1
bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVuCiAgICAgOiBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9jdW1lbnQoKSwgcmF3UG9saWN5KQogICAg
ICwgbV9vcHRpb25zKGZyYWdtZW50LmRvY3VtZW50KCkpCiAgICAgLCBtX3Rva2VuaXplcihtX29w
dGlvbnMpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRyZWVCdWls
ZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5
KCksIG1fb3B0aW9ucykpCisgICAgLCBtX3RyZWVCdWlsZGVyKG1ha2VVbmlxdWU8SFRNTFRyZWVC
dWlsZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9s
aWN5KCksIG1fb3B0aW9ucykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShmcmFnbWVudC5k
b2N1bWVudCgpKQogewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL3N5bnRheC5odG1sI3BhcnNpbmctaHRtbC1mcmFnbWVudHMKQEAgLTMxNSw3ICszMTUsNyBA
QCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUg
bW9kZSkKICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CiAgICAgICAgIEFTU0VSVCht
X3Rva2VuaXplci5pc0luRGF0YVN0YXRlKCkpOwogICAgICAgICBpZiAoIW1fcHJlbG9hZFNjYW5u
ZXIpIHsKLSAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhU
TUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQo
KS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0g
bWFrZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJs
KCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICAgICAgbV9wcmVs
b2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOwogICAgICAgICB9CiAg
ICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7
CkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChTZWdt
ZW50ZWRTdHJpbmcmJiBzb3VyY2UpCiAgICAgICAgIC8vIENoZWNrIHRoZSBkb2N1bWVudC53cml0
ZSgpIG91dHB1dCB3aXRoIGEgc2VwYXJhdGUgcHJlbG9hZCBzY2FubmVyIGFzCiAgICAgICAgIC8v
IHRoZSBtYWluIHNjYW5uZXIgY2FuJ3QgZGVhbCB3aXRoIGluc2VydGlvbnMuCiAgICAgICAgIGlm
ICghbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lcikKLSAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJl
bG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRp
b25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CisgICAgICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gbWFrZVVuaXF1ZTxIVE1M
UHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCkt
PmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVy
LT5hcHBlbmRUb0VuZChzb3VyY2UpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVy
LT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKaW5kZXggMzBjNWI0NmRmMTAz
ZGJkZjZmNGI3Y2U0MDljYzNhYTE2YzU0NjAxMi4uNmVmMTcxMmI5ZDYzYjcxYWNiN2MxNjlmNjJi
NDljODJmMzEwNTgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TEVsZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVs
ZW1lbnRTdGFjay5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6
Omluc2VydEFib3ZlKFJlZjxIVE1MU3RhY2tJdGVtPiYmIGl0ZW0sIEVsZW1lbnRSZWNvcmQmIHJl
YwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgKyttX3N0YWNrRGVwdGg7Ci0gICAg
ICAgIHJlY29yZEFib3ZlLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJlY29yZD4o
V1RGTW92ZShpdGVtKSwgcmVjb3JkQWJvdmUtPnJlbGVhc2VOZXh0KCkpKTsKKyAgICAgICAgcmVj
b3JkQWJvdmUtPnNldE5leHQobWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0p
LCByZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkpOwogICAgICAgICByZWNvcmRBYm92ZS0+bmV4
dCgpLT5lbGVtZW50KCkuYmVnaW5QYXJzaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnB1c2hDb21t
b24oUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSkKICAgICBBU1NFUlQobV9yb290Tm9kZSk7CiAK
ICAgICArK21fc3RhY2tEZXB0aDsKLSAgICBtX3RvcCA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVu
dFJlY29yZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShtX3RvcCkpOworICAgIG1fdG9wID0gbWFr
ZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CiB9
CiAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wQ29tbW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDUzYTE3MmQzM2Fm
Y2RhOGZmODhkMzQ0ZDljMGVmMDkwM2NkZWNjOTIuLjMzZDdiM2JiMDhiNjUyZDBjZDY5YmNlZGYx
Zjg2MDYzMWFmYWExNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFRva2VuUHJlbG9h
ZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lciB7CiAgICAgICAgIGlmICghTGlua0xvYWRlcjo6aXNT
dXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgbV90eXBlQXR0cmlidXRlKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91cmxUb0xvYWQsIHBy
ZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0ZSwgbV9tb2R1bGVT
Y3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5p
cXVlPFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JGb3IobV90YWdJZCksIG1fdXJsVG9Mb2FkLCBw
cmVkaWN0ZWRCYXNlVVJMLCB0eXBlLnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1dGUsIG1fbW9kdWxl
U2NyaXB0LCBtX3JlZmVycmVyUG9saWN5KTsKICAgICAgICAgcmVxdWVzdC0+c2V0Q3Jvc3NPcmln
aW5Nb2RlKG1fY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICAgICAgcmVxdWVzdC0+c2V0Tm9uY2UobV9u
b25jZUF0dHJpYnV0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5k
ZXggZjcxYjIxZDI3ODk1ZTU3OGFiNDdmNWNmNTQwMjU4M2UzNjEyMWQwMi4uM2Y3NDZkYzZkNjY3
YzQzNzExYjY4ZDA5YjQyMDJkMjNmZjBjMDg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRva2VuLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJl
Z2luRE9DVFlQRSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKICAg
ICBtX3R5cGUgPSBET0NUWVBFOwotICAgIG1fZG9jdHlwZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PERvY3R5cGVEYXRhPigpOworICAgIG1fZG9jdHlwZURhdGEgPSBtYWtlVW5pcXVlPERvY3R5cGVE
YXRhPigpOwogfQogCiBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9DVFlQRShVQ2hhciBj
aGFyYWN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4
IGFjNmU3OTQ0MzAwNzAzNjQyMWViMTZkZjgzYTkwZDNkMjc3MmY4NTYuLjA2MWQ5NTY3Yjc4NGQ5
YjBiYWNmM2Y2ZGI5Y2RlNWE4MDZiMDFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhTU0lu
Zm8+IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVx
dWUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGRpZEJsb2NrRW50aXJlUGFn
ZSA9IG1feHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb246OkJsb2NrRW5h
YmxlZDsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJM
LCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8WFNTSW5mbz4obV9kb2N1bWVudFVSTCwgZGlkQmxvY2tF
bnRpcmVQYWdlLCBtX2RpZFNlbmRWYWxpZFhTU1Byb3RlY3Rpb25IZWFkZXIpOwogfQogCiBib29s
IFhTU0F1ZGl0b3I6OmZpbHRlclN0YXJ0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0KQpAQCAtNzEyLDcgKzcxMiw3IEBAIFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4qIFhT
U0F1ZGl0b3I6OmRlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUoKQogICAgIGNvbnN0IHVuc2lnbmVk
IHN1ZmZpeFRyZWVEZXB0aCA9IDU7CiAKICAgICBpZiAoIW1fZGVjb2RlZEhUVFBCb2R5U3VmZml4
VHJlZSAmJiBtX2RlY29kZWRIVFRQQm9keS5sZW5ndGgoKSA+PSBtaW5pbXVtTGVuZ3RoRm9yU3Vm
Zml4VHJlZSkKLSAgICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0gc3RkOjptYWtl
X3VuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3Vm
Zml4VHJlZURlcHRoKTsKKyAgICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0gbWFr
ZVVuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3Vm
Zml4VHJlZURlcHRoKTsKICAgICByZXR1cm4gbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlLmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAzYTYzN2RhZWYwMTI0ZTJlNGVkMzM2YjY2Mzc1
MmQwMDIyYjViZTAxLi5kNTY2YmNjNzk0YWE3MjRhYmU2MGEwODBhM2YyY2Y5NTFmNDUzN2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVy
QmxvY2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25zdAogT3B0
aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVD
dXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dI
b3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9z
dFN0eWxlKTsKLSAgICByZXR1cm4gRWxlbWVudFN0eWxlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
U3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CisgICAgcmV0dXJuIEVsZW1lbnRTdHlsZShtYWtlVW5p
cXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOwogfQogCiAvLyBNQVJLOiBUZXh0Q29u
dHJvbFBsYWNlaG9sZGVyRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggZTQwMjAwYTlhN2EyMjVkZGZkODc0
NGQ4YzkzYmRlNjkwOTY0NzAwOS4uNDkzNGQ3MjljMTk4ZDA4MDU5YWM4YzlmMGIxNzRhOTVlNzZm
NzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmlj
VGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVy
aWNUZXh0VHJhY2suY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5i
YW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYgY3VlKQogV2ViVlRU
UGFyc2VyJiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICghbV93
ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlx
dWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRl
eHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRU
cmFjay5jcHAKaW5kZXggODU1YmIyMzkyN2ViMTBhMzVhNTlkMTJiZTBkMjM1YTczY2FiYzEwZS4u
MTBmYWExMmY5MGI0NjBiNTA1NmYyNTY3Y2MyZDk4MTI3ZDhmYWE4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtNTQs
NyArNTQsNyBAQCBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6On5JbmJhbmRXZWJWVFRUZXh0VHJhY2so
KSA9IGRlZmF1bHQ7CiBXZWJWVFRQYXJzZXImIEluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2Vy
KCkKIHsKICAgICBpZiAoIW1fd2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dlYlZUVFBhcnNlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJD
bGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV93ZWJW
VFRQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFy
c2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJu
ICptX3dlYlZUVFBhcnNlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCA4ZjI5YzdmMTY3OWEwZmEyOTE4ZGVjZmE1MTNlMmQ4
MDI3MWEzNWUyLi43YTFlMWJjNDY5MWIyMTE2ODhjM2NmNWRhNjE5YWM2MWRiZDZmZTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAt
ODQsNyArODQsNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCgpCiAg
ICAgLy8gNC4gRG93bmxvYWQ6IElmIFVSTCBpcyBub3QgdGhlIGVtcHR5IHN0cmluZywgcGVyZm9y
bSBhIHBvdGVudGlhbGx5IENPUlMtZW5hYmxlZCBmZXRjaCBvZiBVUkwsIHdpdGggdGhlCiAgICAg
Ly8gbW9kZSBiZWluZyB0aGUgc3RhdGUgb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBjcm9zc29yaWdp
biBjb250ZW50IGF0dHJpYnV0ZSwgdGhlIG9yaWdpbiBiZWluZyB0aGUKICAgICAvLyBvcmlnaW4g
b2YgdGhlIG1lZGlhIGVsZW1lbnQncyBEb2N1bWVudCwgYW5kIHRoZSBkZWZhdWx0IG9yaWdpbiBi
ZWhhdmlvdXIgc2V0IHRvIGZhaWwuCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRUcmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMp
LCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5k
b2N1bWVudCgpKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPFRleHRUcmFja0xvYWRlcj4o
c3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7CiAg
ICAgaWYgKCFtX2xvYWRlci0+bG9hZChtX3VybCwgKm1fdHJhY2tFbGVtZW50KSkKICAgICAgICAg
bV90cmFja0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZChIVE1MVHJhY2tFbGVtZW50OjpGYWlsdXJl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5j
cHAKaW5kZXggMDMxMDgwZTFhYjY2ZDMyY2M5YzA3MTc4ZjAyZjkzNTIzYmM3MDZiMC4uOTAyOWI5
MmQ4YjgzZjJkN2JlZDZkOGU1NDU3NmMwYTE2OGNhNTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVm
PENvbW1hbmRMaW5lQVBJSG9zdD4gQ29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGUoKQogfQogCiBD
b21tYW5kTGluZUFQSUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCgpCi0gICAgOiBtX2luc3BlY3Rl
ZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpKQorICAgIDogbV9p
bnNwZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKSkKIHsKIH0KIApA
QCAtMTk2LDcgKzE5Niw3IEBAIEpTVmFsdWUgQ29tbWFuZExpbmVBUElIb3N0Ojp3cmFwcGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIENvbW1hbmRM
aW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycygpCiB7CiAgICAgbV93cmFwcGVycy5jbGVhckFs
bFdyYXBwZXJzKCk7Ci0gICAgbV9pbnNwZWN0ZWRPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RhYmxlT2JqZWN0PigpOworICAgIG1faW5zcGVjdGVkT2JqZWN0ID0gbWFrZVVuaXF1ZTxJ
bnNwZWN0YWJsZU9iamVjdD4oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA2YzMxZTQ5OGU0MzRkMzAwYjBmMWM2
ZWFiODQzNDY3NzZjZjBhMmZjLi44Mzg5MDhkYzkzNmVmYTZiYTI2Yzc5MTY3MTQ0ZGI3ZGU5ZTJh
ZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtODksNyArODks
NyBAQCBjbGFzcyBET01FZGl0b3I6Okluc2VydEJlZm9yZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBlcmZvcm0o
KSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAg
ICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGls
ZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOworICAgICAgICAgICAgbV9y
ZW1vdmVDaGlsZEFjdGlvbiA9IG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KCptX25vZGUt
PnBhcmVudE5vZGUoKSwgbV9ub2RlKTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9yZW1v
dmVDaGlsZEFjdGlvbi0+cGVyZm9ybSgpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KTsKQEAgLTM4NSwyNyArMzg1LDI3IEBAIERPTUVkaXRvcjo6fkRPTUVkaXRvcigpID0gZGVmYXVs
dDsKIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRCZWZvcmUoTm9kZSYgcGFy
ZW50Tm9kZSwgUmVmPE5vZGU+JiYgbm9kZSwgTm9kZSogYW5jaG9yTm9kZSkKIHsKLSAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+
KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKKyAgICByZXR1cm4gbV9o
aXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUs
IFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9N
RWRpdG9yOjpyZW1vdmVDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBOb2RlJiBub2RlKQogewotICAg
IHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0
aW9uPihwYXJlbnROb2RlLCBub2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1h
a2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUoRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBt
X2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxl
bWVudCwgbmFtZSwgdmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVu
aXF1ZTxTZXRBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0o
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsK
KyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVB
Y3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9y
OjpzZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYgbmV3
Tm9kZSkKIHsKLSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2V0T3V0ZXJIVE1M
QWN0aW9uPihub2RlLCBodG1sKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VVbmlxdWU8U2V0T3V0
ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9u
OwogICAgIGF1dG8gcmVzdWx0ID0gbV9oaXN0b3J5LnBlcmZvcm0oV1RGTW92ZShhY3Rpb24pKTsK
ICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTQxNSwyMiArNDE1LDIyIEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0
IFN0cmluZyYgaHRtbCwgTm9kZSomCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5z
ZXJ0QWRqYWNlbnRIVE1MKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNv
bnN0IFN0cmluZyYgaHRtbCkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjpt
YWtlX3VuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1s
KSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8SW5zZXJ0QWRqYWNl
bnRIVE1MQWN0aW9uPihlbGVtZW50LCB3aGVyZSwgaHRtbCkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQoVGV4dCYgdGV4dE5vZGUsIGNvbnN0IFN0
cmluZyYgdGV4dCkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3Vu
aXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCkpOworICAgIHJldHVy
biBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRl
eHROb2RlLCB0ZXh0KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFj
ZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUsIFJlZjxOb2RlPiYmIG5ld05vZGUsIE5vZGUmIG9sZE5v
ZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVw
bGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdOb2RlKSwgb2xkTm9k
ZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlcGxhY2VDaGls
ZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobmV3Tm9kZSksIG9sZE5vZGUpKTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXROb2RlVmFsdWUoTm9kZSYgbm9kZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3Rk
OjptYWtlX3VuaXF1ZTxTZXROb2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CisgICAgcmV0
dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihub2Rl
LCB2YWx1ZSkpOwogfQogCiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUVycm9yU3RyaW5nKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYgcmVzdWx0LCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDIwZGEzNDMwYzE1Yzg1
NTE0ODVjNTczOGM1NDdmYTBjMzQzMWExYmEuLjJlOWQ3NTU2NTVjODNlZjg4MTU5NmFhZDIwYzk2
ZTEwZTY4ODI2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRj
aFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBv
cnQuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNI
QTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0
Y2hTdXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUmIG5v
ZGUsIFVudXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8RGlnZXN0PigpOworICAgIGF1dG8gZGlnZXN0ID0gbWFrZVVuaXF1
ZTxEaWdlc3Q+KCk7CiAgICAgZGlnZXN0LT5ub2RlID0gJm5vZGU7CiAgICAgU0hBMSBzaGExOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
aW5kZXggNTIwMzcwNmI1M2IzMmIwYmE0ZjBlZDRkNGJhNDAwYjZjNzliNWUxNS4uNjNmZjNhYjYy
M2E0NDZjZDYyMGVlNDdlMzkyMDU1Y2VhNTFhODc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtOTMsMTAgKzkzLDEwIEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQp
CiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRl
KCp0aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8
V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0Ojpj
cmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYklu
amVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRl
KCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9u
dGVuZFJvdXRlci5jb3B5UmVmKCkpKQotICAgICwgbV9vdmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAsIG1fb3Zlcmxh
eShtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCiAg
ICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9z
Y3JpcHREZWJ1Z1NlcnZlcihwYWdlKQogICAgICwgbV9wYWdlKHBhZ2UpCkBAIC0xMDYsNyArMTA2
LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdl
LCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKIAogICAgIGF1dG8gcGFnZUNvbnRleHQgPSBw
YWdlQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91
bmlxdWU8UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFn
ZW50ID0gbWFrZVVuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgp
KTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIH0KQEAgLTE1
MywzNyArMTUzLDM3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50
cygpCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKICAgICBlbnN1cmVQYWdlQWdlbnQoKTsK
IAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+
KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZVJ1bnRp
bWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAotICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIGRl
YnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCk7
CiAgICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICBt
X2FnZW50cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdlQ29udGV4dCkpOwot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNTU0FnZW50Pihw
YWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VOZXR3b3Jr
QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5z
cGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAgICAgZW5zdXJlRE9NQWdlbnQoKTsKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOwotICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNv
bnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JM
YXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJB
Z2VudFB0cikpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2Fn
ZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVj
dG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1
ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgogCi0gICAg
YXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxl
ckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50PihwYWdl
Q29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIpKTsKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9VU0FHRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JDUFVQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck1lbW9yeUFnZW50PihwYWdlQ29udGV4dCkpOwor
ICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+
KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9y
TWVtb3J5QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYKLSAgICBtX2FnZW50cy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VBdWRpdEFnZW50PihwYWdlQ29udGV4dCkp
OwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNhbnZhc0Fn
ZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8UGFnZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBt
X2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDYW52YXNBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFn
ZW50PihwYWdlQ29udGV4dCkpOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAg
Y29tbWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkp
OwpAQCAtNDIxLDcgKzQyMSw3IEBAIEluc3BlY3RvckFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVy
OjplbnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7
CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAg
IGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50Pihw
YWdlQ29udGV4dCk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPElu
c3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBp
bnNwZWN0b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJ
bnNwZWN0b3JBZ2VudChtX2luc3BlY3RvckFnZW50KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBJbnNwZWN0b3JE
T01BZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQoKQogewogICAgIGlm
ICghbV9pbnNwZWN0b3JET01BZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFn
ZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRvbUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAg
ICAgIGF1dG8gZG9tQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29u
dGV4dCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JET01BZ2VudCA9IGRv
bUFnZW50LmdldCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkb21BZ2VudCkp
OwogICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQmIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvclBh
Z2VBZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgp
OwotICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFn
ZUFnZW50PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7
CisgICAgICAgIGF1dG8gcGFnZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+
KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAg
ICAgbV9pbnNwZWN0b3JQYWdlQWdlbnQgPSBwYWdlQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdl
bnRzLmFwcGVuZChXVEZNb3ZlKHBhZ2VBZ2VudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4
IDI4ZWU3MjdhMzZkNjZjZTIxMDk2OTc4MzFhZTBhOGFhYzQyMzg1NzUuLjZjMWI1MWFkZWU5YTM4
NDI2MzMzOGY0NWQ4ODg0YTZkOWMzN2VhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApAQCAtNTAsNiArNTAs
NyBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIDogcHVibGljIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTZXR0aW5ncyB7CisgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgU2V0dGluZ3MoKSA9IGRlZmF1bHQ7
CiAgICAgICAgIHZpcnR1YWwgflNldHRpbmdzKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCmluZGV4IDAwZDVmMTg1MmNlYmEyNzBj
M2FmODFjMTMyMDkwMDVkYTdiMTE4YTguLmM4MTAzZGQ3ZGJiODMyMGVhYjJlNmFkNWUzMmMyZDUy
ZDcyYjA2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JI
aXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9y
eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5zcGVjdG9ySGlzdG9y
eTo6cGVyZm9ybShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24pCiAKIHZvaWQgSW5zcGVj
dG9ySGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUoKQogewotICAgIHBlcmZvcm0oc3RkOjptYWtl
X3VuaXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7CisgICAgcGVyZm9ybShtYWtlVW5pcXVlPFVu
ZG9hYmxlU3RhdGVNYXJrPigpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW5zcGVjdG9ySGlz
dG9yeTo6dW5kbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKaW5kZXggY2EzMGUxYTI3YmY0MDYxODVhNDgzMjBhMjYzMTgzZWE3ZTZlNDdl
My4uMjI5Yzk4YTQ0N2QyMjI0OGRkZWYzYmEzNGIzN2M1YzRjMDQ3NTk1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMTE3LDcg
KzExNyw3IEBAIHZvaWQgUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0YShzdGQ6OnVuaXF1
ZV9wdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBzb3VyY2VECiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX3NvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlz
dD4oKTsKKyAgICBtX3NvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4o
KTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIHRvIHJldGFp
biB0aGUgb3JpZ2luYWwgZmxhdCBzb3VyY2VEYXRhIHN0cnVjdHVyZQogICAgIC8vIGNvbnRhaW5p
bmcgb25seSBzdHlsZSBydWxlcywgZXZlbiB0aG91Z2ggQ1NTUGFyc2VyIG5vdyBwcm92aWRlcyB0
aGUgZnVsbCBydWxlIHNvdXJjZSBkYXRhIHRyZWUuCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBib29s
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBhdXRvIG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNy
ZWF0ZSgpOwotICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKKyAgICBhdXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0g
bWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29u
dGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRGb3JEb2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5v
d25lckRvY3VtZW50KCkpKTsKICAgICBTdHlsZVNoZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2Vk
U3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1
bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGQzYjc1OWYyOWNjZjFhZTE4MDI4MGQ1
ZTE3MzY3MGQyOWM0ZjhjYzEuLmZkN2NhZDMwNzY3ZTc3NWIxNjc1ZWM0NTRlZjdhMDhiYjAzNmQ1
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJl
c291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nCiB7CiAg
ICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAKLSAgICBhdXRvIHJlc291
cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRl
cklkKTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VEYXRhPihy
ZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNvdXJjZURhdGEtPnNldFR5cGUodHlwZSk7CiAg
ICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJl
c291cmNlRGF0YSkpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3Ry
aW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAKLSAgICBh
dXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0
SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVzb3Vy
Y2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNvdXJjZURhdGEtPnNldENhY2hl
ZFJlc291cmNlKCZjYWNoZWRSZXNvdXJjZSk7CiAgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0
YU1hcC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJlc291cmNlRGF0YSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IDQzNTFlODcyYTllNWEzNjQ3MjlmNWI0ZmIyNjIxNmM3MzMwMmM4ZGQuLjM2NGFlYTdk
NGI1ZDkxMTc5MzI3NWQ2NDZmMjk1ZTY3YmYwZWVlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGlu
Z0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0
ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0
ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciht
YWtlVW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2Ny
aXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRl
cjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25T
dG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKQEAgLTY5LDcgKzY5LDcgQEAgV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxT
Y29wZSYgd29ya2VyR2wKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29u
dGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtl
ckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7CisgICAgYXV0byBjb25zb2xlQWdlbnQgPSBt
YWtlVW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7CiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsK
ICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIH0KQEAgLTEwNSw3
ICsxMDUsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVu
ZCgpCiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnJlc2V0KCk7CiAgICAgbV9leGVjdXRpb25T
dG9wd2F0Y2gtPnN0YXJ0KCk7CiAKLSAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gc3RkOjptYWtl
X3VuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUp
OworICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBtYWtlVW5pcXVlPFdvcmtlclRvUGFnZUZyb250
ZW5kQ2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV9mcm9udGVuZFJvdXRlci0+
Y29ubmVjdEZyb250ZW5kKCptX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpKTsKICAgICBtX2FnZW50
cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0KQEAgLTE2NCwxOCArMTY0LDE4IEBAIHZvaWQg
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAKICAgICBhdXRv
IHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENvbnRleHQoKTsKIAotICAgIG1fYWdlbnRzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2VyQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29y
a2VyQ29udGV4dCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyR2xvYmFsU2NvcGUpKSB7Ci0gICAgICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29y
a2VyQ29udGV4dCkpOwotICAgICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxX
b3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAg
ICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2Vy
Q29udGV4dCkpOwogICAgIH0KICNlbmRpZgogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4od29ya2VyQ29udGV4dCkp
OwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckF1ZGl0QWdlbnQ+
KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXZWJIZWFw
QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxX
b3JrZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5k
KG1ha2VVbmlxdWU8V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkpOwogCiAgICAgaWYg
KGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21t
YW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwCmluZGV4IGE4ZDNjODk5YzMyODBhMjhlNjczMmNmODhhYjg0ZDAwMGQ0NWVkMmQuLmZk
ZjA0NGM1NzliMzY4YzMyMDUxYjY1ZGM0NDBlMzg3ZjYwMThmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZSgiQXBwbGljYXRpb25DYWNoZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNh
Y2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hl
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5z
cGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50
LmNwcAppbmRleCBjZjk0Y2E4MDk2ZmY1NzFkNzRkNzczYjFmMDAyNzUwNTRjMGNlMWY5Li4xMTYy
NGUyNDA5NDY0ZmMxZTFlNjVhNjk5OGRiZDFiMDY4MmYwYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJB
Z2VudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudChQYWdl
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDUFVQcm9m
aWxlciJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNQVVByb2ZpbGVy
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNGI2OTk0NWVjNzA2N2Y5NjQzZTQ4MDczMDM0ODQyNjg2
ZDYxOWZiOC4uNDRlOWM1YWJlYjRjOTY2YWJhZWE5NDRhNDBkNWUwM2Q0NzJkMTFlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50
Ojphc0NTU1N0eWxlUnVsZShDU1NSdWxlJiBydWxlKQogCiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5z
cGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJDU1MiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJv
dXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENTU0Zyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKENTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdl
bnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0
QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CisgICAgYXV0byByZXN1bHQgPSBk
b21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0U3R5bGVTaGVldFRleHRB
Y3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vy
cm9yU3RyaW5nKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogfQpAQCAtNjQ2LDcgKzY0Niw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6
bWFrZV91bmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21w
b3VuZElkLCB0ZXh0KSk7CisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3Rv
cnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5
bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRv
RXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICBy
ZXR1cm47CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVs
ZVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2IKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5o
aXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+
KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7CisgICAgYXV0byBw
ZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNl
dFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2Vs
ZWN0b3IpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAg
ICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1S
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzU3LDcgKzc1
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVj
dG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOworICAgIGF1dG8gYWN0aW9uID0gbWFrZVVuaXF1ZTxB
ZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CiAgICAgYXV0byYg
cmF3QWN0aW9uID0gKmFjdGlvbjsKICAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+
aGlzdG9yeSgpLT5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1
bHQuaGFzRXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggOWJlMDYxMTlmYjMyMTk3
MDA3Mjk3MjJkODM2YTgxNmIyNWYxYzAxNS4uMGU1MGM3NWJhNDg3NTE1NTZlNDEyZGNiOTdhZDE5
NjY5NjVhOTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZh
c0FnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJh
c2UoIkNhbnZhcyJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6Q2FudmFzQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQog
ICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKQEAgLTQzNiw3ICs0
MzYsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24oQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZAogICAgIGlmICghaW5zcGVjdG9yQ2FudmFz
LT5jdXJyZW50RnJhbWVIYXNEYXRhKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNvbnRleHQoKS5jYW52YXNCYXNlKCkuc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBxdWV1ZSA9IE1pY3Jv
dGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKTsKLSAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihxdWV1ZSwgKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0
b3JDYW52YXMuY29weVJlZigpXSB7CisgICAgICAgICAgICBxdWV1ZS5hcHBlbmQobWFrZVVuaXF1
ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUsICpzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0gaW5zcGVjdG9yQ2FudmFzLmNvcHlS
ZWYoKV0gewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVtZW50ID0gcHJvdGVj
dGVkSW5zcGVjdG9yQ2FudmFzLT5jYW52YXNFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGNhbnZhc0VsZW1lbnQtPmlzRGVzY2VuZGFudE9mKGNhbnZhc0VsZW1lbnQtPmRvY3Vt
ZW50KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2
YzE5NmUwY2M2ODJiNDQyNTZjN2RkYWFlMDkwYWEwYWFkNTUzMTdkLi5mMGEyOGMxMzMxYzViYjMw
ODhkNTNlNzI0M2RiYWY0ZWViNjNlN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBA
IFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhFeGNlcHRpb24mJiBleGNl
cHRpb24pCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoUGFnZUFnZW50Q29u
dGV4dCYgY29udGV4dCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3Rv
ckFnZW50QmFzZSgiRE9NIl9zLCBjb250ZXh0KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9vdmVybGF5
KG92ZXJsYXkpCkBAIC0zMDEsOCArMzAxLDggQEAgSW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0
b3JET01BZ2VudCgpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciopCiB7Ci0gICAgbV9oaXN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JIaXN0b3J5PigpOwotICAgIG1fZG9tRWRpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxET01FZGl0
b3I+KCptX2hpc3RvcnkpOworICAgIG1faGlzdG9yeSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9ySGlz
dG9yeT4oKTsKKyAgICBtX2RvbUVkaXRvciA9IG1ha2VVbmlxdWU8RE9NRWRpdG9yPigqbV9oaXN0
b3J5KTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2VudCh0
aGlzKTsKICAgICBtX2RvY3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCk7CkBAIC02NTMsNyArNjUzLDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9k
ZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgIE5vZGUqIHBhcmVudCA9
IGlubmVyUGFyZW50Tm9kZShub2RlKTsKICAgICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICAg
ICAgIC8vIE5vZGUgYmVpbmcgcHVzaGVkIGlzIGRldGFjaGVkIC0+IHB1c2ggc3VidHJlZSByb290
LgotICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVUb0lkTWFw
PigpOworICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBtYWtlVW5pcXVlPE5vZGVUb0lkTWFwPigp
OwogICAgICAgICAgICAgZGFuZ2xpbmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBt
X2RhbmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKICAgICAgICAg
ICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRP
TTo6Tm9kZT46OmNyZWF0ZSgpOwpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21J
bnNwZWN0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBoaWdo
bGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICBh
dXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAg
IGJvb2wgc2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDogZmFsc2UgKGRvIG5vdCBzaG93IGEg
dG9vbHRpcCkuCiAgICAgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LT5nZXRCb29sZWFuKCJzaG93
SW5mbyIsIHNob3dJbmZvKTsKICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gc2hvd0lu
Zm87CkBAIC0xMTk2LDEzICsxMTk2LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldElu
c3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hCiAKIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29y
ZGluYXRlcykKIHsKLSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4o
RmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICBhdXRvIHF1YWQgPSBtYWtlVW5p
cXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKICAgICBpbm5l
ckhpZ2hsaWdodFF1YWQoV1RGTW92ZShxdWFkKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFn
ZUNvb3JkaW5hdGVzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVh
ZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OkFycmF5JiBxdWFkQXJyYXks
IGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNv
bG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBxdWFkID0g
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCk7CisgICAgYXV0byBxdWFkID0gbWFrZVVuaXF1
ZTxGbG9hdFF1YWQ+KCk7CiAgICAgaWYgKCFwYXJzZVF1YWQocXVhZEFycmF5LCBxdWFkLmdldCgp
KSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIFF1YWQgZm9ybWF0Il9zOwogICAg
ICAgICByZXR1cm47CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJy
YQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlx
dWVfcHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRl
cykKIHsKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxp
Z2h0Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdo
bGlnaHRDb25maWc+KCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xv
cihjb2xvcik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29s
b3Iob3V0bGluZUNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPnVzZVBhZ2VDb29yZGluYXRl
cyA9IHVzZVBhZ2VDb29yZGluYXRlcyA/ICp1c2VQYWdlQ29vcmRpbmF0ZXMgOiBmYWxzZTsKQEAg
LTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1l
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAgICAgYXV0byBoaWdo
bGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICAg
ICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsK
ICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHRydWU7IC8vIEFsd2F5cyBzaG93
IHRvb2x0aXBzIGZvciBmcmFtZXMuCiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9
IHBhcnNlQ29sb3IoY29sb3IpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRs
aW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwpAQCAtMTM5OCw3ICsxMzk4LDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBub2RlSWQpCiAgICAgbV9pbnNwZWN0ZWROb2RlID0gbm9kZTsKIAogICAgIGlm
IChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBzdGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlw
dE1hbmFnZXImPihtX2luamVjdGVkU2NyaXB0TWFuYWdlcikuY29tbWFuZExpbmVBUElIb3N0KCkp
Ci0gICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CisgICAgICAgIGNvbW1hbmRMaW5lQVBJ
SG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KG1ha2VVbmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2Rl
KSk7CiAKICAgICBtX3N1cHByZXNzRXZlbnRMaXN0ZW5lckNoYW5nZWRFdmVudCA9IGZhbHNlOwog
fQpAQCAtMjMxNCw3ICsyMzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxp
ZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIW1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2spCi0gICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxl
QXR0clRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+
KHRoaXMpOworICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gbWFrZVVuaXF1ZTxS
ZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKICAgICBtX3JldmFsaWRhdGVTdHls
ZUF0dHJUYXNrLT5zY2hlZHVsZUZvcigmZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmNwcAppbmRleCBlOTcxYTk5ZjcwNTI0ZDgzMTgxYWU3MTVkODI2NTg4MTFmZTA4ODA4Li44MWYx
NGRjMTdiZmEwNDc0N2UzZDIzZTQ1M2Y1ZTRhZjhkMDlmZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KFBhZ2VBZ2Vu
dENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRPTVN0b3JhZ2Ui
X3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAKaW5kZXggYjM3YTU2MGNlODA3NjhjNjY0NDA4NTE1ZmIwNTUxMjYxNjViZWQ4Mi4uMzU4
YTg1NjUxMmVhNGQ3MTk2MzMyYTIwNjk5MGRlMzI1MDA0MTBiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQu
Y3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRP
cGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50
OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiRGF0YWJhc2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5z
cGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGUxZTA4
MmU0MWFkMmQ1MjRmNTdlZjEwNjQwMjg4NzYxMTU2ODI0YjkuLmI1OTgyY2VlMzdlMzc0NDcwNTM5
NDZiY2Y0YzQzNGI0MzFlZjlhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC00OCw3ICs0
OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkxheWVyVHJlZSJfcywgY29udGV4dCkKLSAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRj
aGVyKEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggMjlj
NzZkMGM3ZmVhOTIyYzJhM2Q5OTQxNGM5ODZlYThkMjhkNzdiNS4uMjgzMjk1MWY1MzgwMTIxZmE0
NTJiZmE4ZDQ3MGY0ZDM1ZTc4OWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Oklu
c3BlY3Rvck1lbW9yeUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoIk1lbW9yeSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpNZW1vcnlGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
bWFrZVVuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TWVt
b3J5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCAzZTRlOTZlYjIzMWEwNTRiMjEyMTI0
N2JjMmNiMDkxNjVmMDI2NWIzLi41ZDA4MTYzODBjZGM2NmM3ZDc5NjBjMTJkMzQ4YTBmYmYzZjdi
MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNzIsMTAgKzE3MiwxMCBAQCBjbGFzcyBJbnNw
ZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQgewogCiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIk5l
dHdvcmsiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3Bl
Y3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAg
ICAsIG1fcmVzb3VyY2VzRGF0YShzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRh
PigpKQorICAgICwgbV9yZXNvdXJjZXNEYXRhKG1ha2VVbmlxdWU8TmV0d29ya1Jlc291cmNlc0Rh
dGE+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzMjllMWIwYzVhZDkyZmI0NTFkZjE3Njcz
M2FlMmFlMzU4ZmI0OTM3Li5jNjQxYTZhMDQ4NDE5MzI2OGUyOWU5MGZmMDEyNmFiOTExYzkzMGRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgRG9jdW1lbnRMb2FkZXIqIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW4KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29u
dGV4dCYgY29udGV4dCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkq
IG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlBhZ2UiX3MsIGNvbnRleHQpCi0g
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFn
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXgg
M2EzNjFlOTFlNmYyZGViMDA0MmUxOGE3YzY0YzdiNTE2ZjliODBjNS4uMzBkODZjNzQ2M2M0N2Y1
YjNhZDJiMzhjZjVkZTI0OWQ0NGViOWE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQogCiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KFBhZ2VBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRpbWVsaW5lIl9zLCBjb250ZXh0
KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdl
KGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tE
ZXB0aCkKICAgICAvLyBGSVhNRTogQWJzdHJhY3QgYXdheSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2Rl
IG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc0OCBpcyBm
aXhlZC4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1
bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdp
biksIFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVu
TG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxL
bm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lQmVnaW4pLCBbdGhpc10oKSB7CiAgICAg
ICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCku
aXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIHZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENh
bGxTdGFja0RlcHRoKQogICAgICAgICBtX3J1bkxvb3BOZXN0aW5nTGV2ZWwrKzsKICAgICB9KTsK
IAotICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNl
cnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5M
b29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3Rv
cE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5k
ZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJh
bWVFbmQpLCBbdGhpc10oKSB7CiAgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vudmlyb25t
ZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRG
cm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nCiAgICAgICAgICAg
ICAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAg
ICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQg
UHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRs
ZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGVBZ2Vu
dC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVBZ2Vu
dC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgdGl0bAogICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2Vu
ZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJp
bmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1h
a2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAg
ICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJv
ZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgIGNvbnNv
bGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmlu
ZGV4IDkxNjFkODQzY2QzOGU0ZDk2NjEyNmFjZGQzNmU4M2RkMThmNTEwMDIuLjFlMzk4ZWRkMWE5
ZWEzZWYyNmJlMDllYzAzZDZjNmMyY2QzOThkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zNiw3
ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvcldvcmtlckFn
ZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKCJXb3JrZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6OldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
CmluZGV4IDJlZWQxY2U2MGIzMDIyYWQ5ODI0ZmE2MjhhMzVkZGM1NDQ0OTYwZDkuLmMyMDk0Yjk5
MmQzNTQxNjBmMTdlZTI4ZjY0MTBhNzkzZGNkZTlmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25n
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdAogCiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkgPj0gNDAwKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFp
bGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMg
b2YgIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1
c1RleHQoKSwgJyknKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmco
KSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICAgICAgYWRkTWVzc2Fn
ZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3
b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNw
b25zZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsK
ICAgICB9CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZh
aWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFJlc28KICAg
ICAgICAgbWVzc2FnZS5hcHBlbmQoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CiAgICAg
fQogCi0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwg
bnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VU
eXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3Iu
ZmFpbGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL1dlYkhlYXBBZ2VudC5jcHAKaW5kZXggYmI1ZDFiZWM2YzYzMjIzOWJlZTY0NjM0MzdhZWZl
ZDEyYmE0NzFkNS4uMDljYjZmNDY2NmFiNGM5MWNiZWUyZDBmY2ZkZDRiYTZhNjFhMTMzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcApA
QCAtNDEsNiArNDEsNyBAQCBzdHJ1Y3QgR2FyYmFnZUNvbGxlY3Rpb25EYXRhIHsKIH07CiAKIGNs
YXNzIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2sgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2so
V2ViSGVhcEFnZW50Jik7CiAgICAgdm9pZCBhZGRHYXJiYWdlQ29sbGVjdGlvbihHYXJiYWdlQ29s
bGVjdGlvbkRhdGEmJik7CkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgU2VuZEdhcmJhZ2VDb2xsZWN0
aW9uRXZlbnRzVGFzazo6dGltZXJGaXJlZCgpCiBXZWJIZWFwQWdlbnQ6OldlYkhlYXBBZ2VudChX
ZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JIZWFwQWdlbnQoY29udGV4
dCkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2Vu
dHMpCi0gICAgLCBtX3NlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2soc3RkOjptYWtlX3Vu
aXF1ZTxTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrPigqdGhpcykpCisgICAgLCBtX3Nl
bmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2sobWFrZVVuaXF1ZTxTZW5kR2FyYmFnZUNvbGxl
Y3Rpb25FdmVudHNUYXNrPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCA1
ZWFmYjZhMzI4NDZlNzAwMTUzYWM4MjY4MWI3YmU1MGQzYWZlNDhjLi44OTg1YmM5NDVmZTc1ZTBl
ODUxYTM2ZGUzNTg0YWIwNDcxYzBmZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCkBAIC01Nyw3ICs1
Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFBhZ2VSdW50aW1lQWdlbnQ6OlBh
Z2VSdW50aW1lQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rv
clJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAg
ICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKICAg
ICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IGIyMGNiYmM5NTA3MDI4MTFiNjU4OWFjMWRmYmQ1NzMzOTE5M2Qz
MzcuLjgwODJlZTMxZWVjNjBhMmY2MDMyOWRiYWJkNGQ5ODQyZjZhNTVmZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdvcmtlckRlYnVnZ2VyQWdlbnQ6
On5Xb3JrZXJEZWJ1Z2dlckFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFdvcmtlckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2Uo
c3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxs
U3RhY2soJnN0YXRlKSkpOworICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3Nh
Z2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VU
eXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2soJnN0YXRlKSkpOwogfQogCiBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojpp
bmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQq
IGV4ZWN1dGlvbkNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmlu
ZGV4IGJkOWQ0Y2FkZWZiMmZhYTFmMmUwYjI1Nzk1NWFkNTEyNGUxNzk0ZWUuLjFmM2ZhYmEzMTI2
ZjJlOWIzNmI4NGQxM2U3M2JmMWZkYTMxNzU0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91
dFN0YXRlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIExheW91dFN0YXRlOjpsYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQm94JiBsYXlvdXRSb290KQogRGlzcGxheTo6Qm94
JiBMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJv
eCkgY29uc3QKIHsKICAgICByZXR1cm4gKm1fbGF5b3V0VG9EaXNwbGF5Qm94LmVuc3VyZSgmbGF5
b3V0Qm94LCBbJmxheW91dEJveF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxE
aXNwbGF5OjpCb3g+KGxheW91dEJveC5zdHlsZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5bGUoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCkBAIC0xNDAsMTMgKzE0MCwxMyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0
YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgog
ICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgY29udGVudCBpbnNp
ZGUuCiAgICAgICAgICAgICAvLyA8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+PC9kaXY+PGRpdiBz
dHlsZT0ib3ZlcmZsb3c6IGhpZGRlbiI+IDwtIGlzIGEgbm9uLWludHJ1c2l2ZSBmbG9hdCwgYmVj
YXVzZSBvdmVyZmxvdzogaGlkZGVuIHRyaWdnZXJzIG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRl
eHQuPC9kaXY+CiAgICAgICAgICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMs
IGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBm
b3JtYXR0aW5nUm9vdCksICp0aGlzKTsKIAogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUg
Zm9ybWF0dGluZyBjb250ZXh0IGluaGVyaXRzIHRoZSBmbG9hdHMgZnJvbSB0aGUgcGFyZW50IGZv
cm1hdHRpbmcgY29udGV4dC4KICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGZvcm1hdHRpbmcgc3Rh
dGUgaW4gd2hpY2ggdGhpcyBmb3JtYXR0aW5nIHJvb3QgbGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNy
ZWF0ZXMgYW5kIHVzZSBpdHMgZmxvYXRpbmcgc3RhdGUuCiAgICAgICAgICAgICBhdXRvJiBwYXJl
bnRGb3JtYXR0aW5nU3RhdGUgPSBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9v
dElmTmVlZGVkKGZvcm1hdHRpbmdSb290LmZvcm1hdHRpbmdDb250ZXh0Um9vdCgpKTsgCiAgICAg
ICAgICAgICBhdXRvJiBwYXJlbnRGbG9hdGluZ1N0YXRlID0gcGFyZW50Rm9ybWF0dGluZ1N0YXRl
LmZsb2F0aW5nU3RhdGUoKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50RmxvYXRpbmdTdGF0ZSwgKnRoaXMpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGbG9h
dGluZ1N0YXRlLCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAK
QEAgLTE1NCw3ICsxNTQsNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVG
b3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICByZXR1
cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0gewogCiAg
ICAgICAgICAgICAvLyBCbG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVz
IGEgbmV3IGZsb2F0aW5nIHN0YXRlLgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9y
bWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9j
a0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5n
Um9vdCksICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAt
MTYyLDcgKzE2Miw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1h
dHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgIHJldHVybiAq
bV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAg
ICAgICAgIC8vIFRhYmxlIGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBu
ZXcgZmxvYXRpbmcgc3RhdGUgLWFuZCBpdCBzdGF5cyBlbXB0eS4KLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpj
cmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgq
dGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKICAgICB9CiAKQEAgLTE3NCwxOCArMTc0LDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0
aW5nQ29udGV4dD4gTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJv
CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdD
b250ZXh0KCkpOwogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdT
dGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0
YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0dGlu
Z0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAg
ICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0T25seSgpKTsKICAgICAgICAgYXV0byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBk
b3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9y
bWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgYmxvY2tG
b3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
ZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0byYgdGFi
bGVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRl
Rm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4
dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGFibGVGb3JtYXR0aW5n
Q29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRpbmdTdGF0ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRp
bmdDb250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIENSQVNI
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaApp
bmRleCA3YWUzYjQwOWQ3NjExNmYyZTlkMTNjYzMxZWI2ZTU2MDYzYjEwNzZmLi43OTkxNjI3NTc0
MDE4M2YzNTNmNWFmZDViMTUyMmU1NjUzZmM4OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKQEAgLTM2LDcgKzM2LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXkgewogCiBzdHJ1Y3QgUnVuIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc3RydWN0IFRleHRDb250ZXh0IHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAg
ICAgVGV4dENvbnRleHQodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBhMWNkNmQ2ZjFiN2ViOTBmY2M3
OTA1ZTMxZTlmMDRmZTNiZjgyNjBiLi41MDhkNjYxMjlkMTQ4N2M0ZTg0NDA5MzkzZGEzMzQwOTE5
ZWE3Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yODEsNyAr
MjgxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRl
bnQoKSBjb25zdAogICAgICAgICAgICAgaWYgKCF0cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91
dEJveCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBzdGFydCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcuIDxzcGFuPikuCi0gICAgICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0
ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyU3RhcnQpKTsKKyAgICAg
ICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRl
bT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCkpOwogICAgICAg
ICAgICAgYXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwog
ICAgICAgICAgICAgaWYgKCFjb250YWluZXIuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTIsMTcgKzI5MiwxNyBAQCB2b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAg
ICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVldWUudGFrZUxhc3QoKTsKICAgICAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIGVuZCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcuIDwvc3Bhbj4p
LgogICAgICAgICAgICAgaWYgKHRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKLSAg
ICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5p
cXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5k
KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVu
aXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVu
ZCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCkpCi0g
ICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3Vu
aXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJl
YWspKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtl
VW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVC
cmVhaykpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlv
bmVkKCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZs
b2F0KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFr
ZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
SW5saW5lTGV2ZWxCb3goKSk7CiAgICAgICAgICAgICAgICAgaWYgKGxheW91dEJveC5oYXNUZXh0
Q29udGVudCgpKQogICAgICAgICAgICAgICAgICAgICBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5k
QXBwZW5kVGV4dEl0ZW1zKGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygpLCBsYXlvdXRCb3gp
OwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gs
IElubGluZUl0ZW06OlR5cGU6OkJveCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5n
U3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5s
aW5lSXRlbTo6VHlwZTo6Qm94KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChh
dXRvKiBuZXh0U2libGluZyA9IGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmco
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5j
cHAKaW5kZXggZjc0MWRlNDg5ZTk0MjQ2MWQ3NjkyZTJlNDA0MTU5MzgzYjBjODE2MC4uMGEyMTMw
MjEzZjEyNGVlYjVmN2Y3MTEyZTg4NmQ3MTJjNTMxZGEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5l
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAg
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5
UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVm
dChsb2dpY2FsUmVjdC50b3BMZWZ0KCkpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRDb250
ZW50Qm94V2lkdGgobG9naWNhbFJlY3Qud2lkdGgoKSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94
LnNldENvbnRlbnRCb3hIZWlnaHQobG9naWNhbFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1
bj4obG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVS
dW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5l
OjpDb250ZW4KICAgICAgICAgICAgICAgICB0b3BMZWZ0ICs9IEdlb21ldHJ5OjppbkZsb3dQb3Np
dGlvbmVkUG9zaXRpb25PZmZzZXQobGF5b3V0U3RhdGUoKSwgbGF5b3V0Qm94KTsKICAgICAgICAg
ICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdCh0b3BMZWZ0KTsKICAgICAgICAgICAgIGxpbmVCb3hS
ZWN0LmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVjdC53aWR0aCgpKTsKLSAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpS
dW4+KGxvZ2ljYWxSZWN0KSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5l
UnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGlu
ZTo6Q29udGVuCiAgICAgICAgICAgICBhdXRvIHByZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCA9IHBy
ZXZpb3VzTGluZVJ1biAmJiBwcmV2aW91c0xpbmVSdW4tPnRleHRDb250ZXh0KCkgPyBwcmV2aW91
c0xpbmVSdW4tPnRleHRDb250ZXh0KCktPmNhbkJlRXh0ZW5kZWQgOiBmYWxzZTsKICAgICAgICAg
ICAgIGF1dG8gcmVxdWlyZXNOZXdSdW4gPSAhaW5kZXggfHwgIXByZXZpb3VzUnVuQ2FuQmVFeHRl
bmRlZCB8fCAmbGF5b3V0Qm94ICE9ICZwcmV2aW91c0xpbmVSdW4tPmxheW91dEJveCgpOwogICAg
ICAgICAgICAgaWYgKHJlcXVpcmVzTmV3UnVuKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdT
dGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxS
ZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0
Q29udGV4dC0+bGVuZ3RoIH0pKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
SW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCwgRGlzcGxheTo6
UnVuOjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5zdGFydCwgdGV4dENvbnRleHQtPmxlbmd0
aCB9KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRvJiBsYXN0RGlz
cGxheVJ1biA9IGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpOwogICAgICAgICAg
ICAgICAgIGxhc3REaXNwbGF5UnVuLT5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lk
dGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVJdGVtLmgKaW5kZXggYjAwMTNiNmVkNTYzYmNiZjgyODEzOTEzNDFmMmRkNTYxNWVjNTNl
Zi4uNzkwNjE5NjgxZTY3NTJkMjg3MjQ5Mzg2MjJlM2E3NGJlMDMzZmYzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaApAQCAt
MzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAog
Y2xhc3MgSW5saW5lSXRlbSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbmxpbmVJdGVtPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBl
IHsgVGV4dCwgSGFyZExpbmVCcmVhaywgQm94LCBGbG9hdCwgQ29udGFpbmVyU3RhcnQsIENvbnRh
aW5lckVuZCB9OwogICAgIElubGluZUl0ZW0oY29uc3QgQm94JiBsYXlvdXRCb3gsIFR5cGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lLmNwcAppbmRleCA0ZjIwYTZmZjFkNzBjZTM0OWJkZTBlYmVkZmU4ZjgwYTM1ZTg1YTI4Li5l
ZDY1MjA1YjdkYjk5YjBmNmFiMTBmM2VlZWFhMDdjNDQ2YjdmOGQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcApAQCAt
NTQsNyArNTQsNyBAQCBMaW5lOjpDb250ZW50OjpSdW46OlJ1bihjb25zdCBJbmxpbmVJdGVtJiBp
bmxpbmVJdGVtLCBjb25zdCBUZXh0Q29udGV4dCYgdGV4dENvbgogCiBMaW5lOjpMaW5lKGNvbnN0
IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgSW5pdGlhbENvbnN0cmFpbnRzJiBpbml0
aWFsQ29uc3RyYWludHMsIFNraXBWZXJ0aWNhbEFsaWdtZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50
KQogICAgIDogbV9sYXlvdXRTdGF0ZShsYXlvdXRTdGF0ZSkKLSAgICAsIG1fY29udGVudChzdGQ6
Om1ha2VfdW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkpCisgICAgLCBtX2NvbnRlbnQobWFrZVVuaXF1
ZTxMaW5lOjpDb250ZW50PigpKQogICAgICwgbV9sb2dpY2FsVG9wTGVmdChpbml0aWFsQ29uc3Ry
YWludHMubG9naWNhbFRvcExlZnQpCiAgICAgLCBtX2Jhc2VsaW5lKHsgaW5pdGlhbENvbnN0cmFp
bnRzLmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsQ29uc3RyYWludHMu
aGVpZ2h0QW5kQmFzZWxpbmUuaGVpZ2h0IC0gaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJh
c2VsaW5lLmJhc2VsaW5lT2Zmc2V0IH0pCiAgICAgLCBtX2luaXRpYWxTdHJ1dChpbml0aWFsQ29u
c3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuc3RydXQpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9p
ZCBMaW5lOjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGgpCiAKIHZvaWQgTGluZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UoY29uc3Qg
SW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgRGlzcGxheTo6UmVjdCYgbG9naWNhbFJlY3Qp
CiB7Ci0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29udGVudC0+cnVucygp
LmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3Qp
KTsKICAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0gbG9naWNhbFJlY3Qud2lkdGgoKTsKIH0K
IApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3Qg
SW5saW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNhCiAgICAgfQogCiAg
ICAgYXV0byB0ZXh0Q29udGV4dCA9IENvbnRlbnQ6OlJ1bjo6VGV4dENvbnRleHQgeyBpbmxpbmVJ
dGVtLnN0YXJ0KCksIGlubGluZUl0ZW0uaXNDb2xsYXBzZWQoKSA/IDEgOiBpbmxpbmVJdGVtLmxl
bmd0aCgpLCBpc0NvbXBsZXRlbHlDb2xsYXBzZWQsIGlubGluZUl0ZW0uaXNXaGl0ZXNwYWNlKCks
IGNhbkJlRXh0ZW5kZWQgfTsKLSAgICBhdXRvIGxpbmVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50OjpSdW4+KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2FsUmVjdCk7CisgICAg
YXV0byBsaW5lSXRlbSA9IG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCB0ZXh0
Q29udGV4dCwgbG9naWNhbFJlY3QpOwogICAgIGlmIChpc1RyaW1tYWJsZSAmJiAhaXNDb21wbGV0
ZWx5Q29sbGFwc2VkKQogICAgICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuYWRkKGxpbmVJdGVtLmdl
dCgpKTsKIApAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJ
bmxpbmVCb3goY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsCiAgICAg
ICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChpbmxpbmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJ
dGVtKSk7CiAgICAgfQogCi0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29u
dGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwg
bG9naWNhbFJlY3QpKTsKICAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0gKGxvZ2ljYWxXaWR0
aCArIGhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBob3Jpem9udGFsTWFyZ2luLmVuZCk7CiAgICAg
bV90cmltbWFibGVDb250ZW50LmNsZWFyKCk7CiB9CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBM
aW5lOjphcHBlbmRIYXJkTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAg
ICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVtLCB7IH0pOwogICAg
ICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCgpKTsKICAgICB9Ci0gICAg
bV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihp
bmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZCht
YWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKIH0KIAog
dm9pZCBMaW5lOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgSW5saW5lSXRlbSYg
aW5saW5lSXRlbSwgTGF5b3V0VW5pdCBydW5IZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKaW5kZXggZmFmMDU0NzUzZDM3
MjJhYmMwMWQ4YTczZjQ3OTkzNDliY2IxYWExMS4uNzM3YTA3YjAzMmFmNmZmMTE5OTA5NmY3YTM3
NTc1N2U2ZGE5ZjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuaApAQCAtNTIsOCArNTIsMTAgQEAgY2xhc3MgTGluZSB7CiAg
ICAgTGluZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50cyYsIFNr
aXBWZXJ0aWNhbEFsaWdtZW50KTsKIAogICAgIGNsYXNzIENvbnRlbnQgeworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0cnVjdCBSdW4gewor
ICAgICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAgICAg
c3RydWN0IFRleHRDb250ZXh0IHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCB7IDAg
fTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5j
cHAKaW5kZXggZjEzMDg5YTcwOGYzZmUzZmY5Yjc3ZjcyMDk2Y2RhNDJlZjM2ZTIyMi4uNWU2YzI1
NmRiMGIzMDlhYWYxZTI1ODIxZjBlMWUxOGU1NjQ1MmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0
SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0
ID0gaW5saW5lQm94LnRleHRDb250ZW50KCk7CiAgICAgaWYgKCF0ZXh0Lmxlbmd0aCgpKQotICAg
ICAgICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVU
ZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJu
IGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJv
eCwgMCwgMCwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBhdXRvJiBzdHlsZSA9IGlubGluZUJveC5z
dHlsZSgpOwogICAgIGF1dG8gcHJlc2VydmVOZXdsaW5lID0gc3R5bGUucHJlc2VydmVOZXdsaW5l
KCk7CkBAIC05OSwyMCArOTksMjAgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBw
ZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogICAgIHdoaWxl
IChjdXJyZW50UG9zaXRpb24gPCB0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIC8vIFNvZnQgbGlu
ZWJyZWFrPwogICAgICAgICBpZiAoaXNTb2Z0TGluZUJyZWFrKHRleHRbY3VycmVudFBvc2l0aW9u
XSwgcHJlc2VydmVOZXdsaW5lKSkgewotICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRp
b24sIDEsIHRydWUsIGZhbHNlKSk7CisgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZCht
YWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwg
dHJ1ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICsrY3VycmVudFBvc2l0aW9uOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzV2hpdGVzcGFjZUNoYXJhY3Rl
cih0ZXh0W2N1cnJlbnRQb3NpdGlvbl0sIHByZXNlcnZlTmV3bGluZSkpIHsKICAgICAgICAgICAg
IGF1dG8gbGVuZ3RoID0gbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbih0ZXh0LCBjdXJy
ZW50UG9zaXRpb24sIHByZXNlcnZlTmV3bGluZSk7CiAgICAgICAgICAgICBhdXRvIGlzQ29sbGFw
c2VkID0gY29sbGFwc2VXaGl0ZVNwYWNlICYmIGxlbmd0aCA+IDE7Ci0gICAgICAgICAgICBpbmxp
bmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVC
b3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBpc0NvbGxhcHNlZCkpOworICAgICAg
ICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5s
aW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgdHJ1ZSwgaXNDb2xsYXBzZWQpKTsKICAg
ICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gbGVuZ3RoID0gbW92ZVRvTmV4dEJyZWFrYWJs
ZVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbiwgbGluZUJyZWFrSXRlcmF0b3IsIHN0eWxlKTsKLSAg
ICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRl
bT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgZmFsc2UsIGZhbHNlKSk7Cisg
ICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlu
bGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIGZhbHNlLCBmYWxzZSkpOwogICAgICAg
ICBjdXJyZW50UG9zaXRpb24gKz0gbGVuZ3RoOwogICAgIH0KIH0KQEAgLTEzMCw3ICsxMzAsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IElubGluZVRleHRJdGVtOjpzcGxpdCh1
bnNpZ25lZCBzcGxpdFBvc2l0aW9uLCB1bgogewogICAgIFJFTEVBU0VfQVNTRVJUKHNwbGl0UG9z
aXRpb24gPj0gdGhpcy0+c3RhcnQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlv
biArIGxlbmd0aCA8PSBlbmQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGxheW91dEJveCgpLCBzcGxpdFBvc2l0aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFj
ZSgpLCBpc0NvbGxhcHNlZCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRl
bT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24sIGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlz
Q29sbGFwc2VkKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcAppbmRleCBlZGYyZDRiMjc2NjIyYzg5NWQxNzc5NzE0Y2Y3Y2YyMDhh
Y2Q5YzQyLi5mNTZlMWE2MTZhMmRmNTc3MWJiNDhhNzU4MDNhZTU3M2ZjZjhjNzM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgQm94OjpCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMs
IFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmwKICAgICAsIG1faGFzUmFyZURhdGEoZmFs
c2UpCiB7CiAgICAgaWYgKGlzUmVwbGFjZWQoKSkKLSAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5y
ZXBsYWNlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZWQ+KCp0aGlzKTsKKyAgICAgICAgZW5z
dXJlUmFyZURhdGEoKS5yZXBsYWNlZCA9IG1ha2VVbmlxdWU8UmVwbGFjZWQ+KCp0aGlzKTsKIH0K
IAogQm94OjpCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRl
clN0eWxlJiYgc3R5bGUpCkBAIC00MjMsNyArNDIzLDcgQEAgY29uc3QgQm94OjpCb3hSYXJlRGF0
YSYgQm94OjpyYXJlRGF0YSgpIGNvbnN0CiBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OmVuc3VyZVJh
cmVEYXRhKCkKIHsKICAgICBzZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVE
YXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94UmFy
ZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCku
ZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWU8Qm94UmFyZURhdGE+KCk7IH0pLml0
ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBCb3g6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cAppbmRleCA1ZmVlY2VlNzJmMDhjNDg1MDg4ZWU0ODUxOTQ1YzY2NDBjZmU1N2QzLi5iYzJiYmVl
NzhhMzY4NjgyNmIyMDRkZmI1ZjY5NjI1Zjk1NmYyYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjgs
MjUgKzEyOCwyNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5
b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgIGlmIChpczxSZW5kZXJU
ZXh0PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAgICAvLyBGSVhNRTogQ2xlYXJseSB0aGVyZSBt
dXN0IGJlIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGlzLgogICAgICAgICBpZiAocGFyZW50UmVu
ZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSkKLSAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRl
clRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
cGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBt
YWtlVW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2lu
YWxUZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgp
LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5k
ZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CisgICAgICAgICAgICBjaGlsZExh
eW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRl
cmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0
aERpc3BsYXkocGFyZW50UmVuZGVyZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkpOwog
ICAgICAgICByZXR1cm4gY2hpbGRMYXlvdXRCb3g7CiAgICAgfQogCiAgICAgYXV0byYgcmVuZGVy
ZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZFJlbmRlcmVyKTsKICAgICBhdXRvIGRp
c3BsYXlUeXBlID0gcmVuZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCk7CiAgICAgaWYgKGlzPFJlbmRl
ckxpbmVCcmVhaz4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxC
b3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRl
cmVyLnN0eWxlKCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0
cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7
CiAKICAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSkgewogICAgICAgICAvLyBDb25z
dHJ1Y3QgdGhlIHByaW5jaXBhbCB0YWJsZSB3cmFwcGVyIGJveCAoYW5kIG5vdCB0aGUgdGFibGUg
Ym94IGl0c2VsZikuCi0gICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJs
ZVdyYXBwZXJCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50
QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBSZW5kZXJT
dHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVy
UmVwbGFjZWQ+KHJlbmRlcmVyKSkgewogICAgICAgICBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxh
eVR5cGU6OkJsb2NrKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5p
cXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
cmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5p
cXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
cmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGls
ZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBkb24ndCB5ZXQgc3VwcG9ydCBhbGwgcmVwbGFjZWQgZWxlbWVudHMgYW5kIHRoaXMgaXMg
dGVtcG9yYXJ5IGFueXdheS4KICAgICAgICAgaWYgKGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgp
KQogICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCktPnNldEludHJpbnNpY1Np
emUoZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKS5pbnRyaW5zaWNTaXplKCkpOwpA
QCAtMTYxLDE4ICsxNjEsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNy
ZWF0ZUxheW91dEJveChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICAgICAgICAg
ICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKHJlbmRlcmVyLnN0eWxlKCkp
OwogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRUb3AoeyBvZmZzZXQtPmhlaWdodCgpLCBGaXhl
ZCB9KTsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0TGVmdCh7IG9mZnNldC0+d2lkdGgoKSwg
Rml4ZWQgfSk7Ci0gICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKCpzdHls
ZSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWlu
ZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZSgqc3R5bGUpKTsKICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5
bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OklubGluZSkKLSAgICAgICAgICAgIGNoaWxk
TGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVz
KHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
ICAgICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OklubGluZUJsb2Nr
KQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5l
cj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENv
bnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
cmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNw
bGF5VHlwZTo6VGFibGVDYXB0aW9uIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJs
ZUNlbGwpIHsKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25l
KHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6
OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlw
ZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5
VHlwZTo6VGFibGVIZWFkZXJHcm91cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVGb290ZXJHcm91cAogICAgICAgICAgICAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6
OlRhYmxlUm93IHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3Vw
IHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbikgewotICAgICAgICAg
ICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0
dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkp
OworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxl
bWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5
bGUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1F
TlRFRF9ZRVQoKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0xOTYsNyArMTk2LDcgQEAg
dm9pZCBUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUm
IHRhYmxlUmVuZGVyZXIsIENvbnRhaW4KICAgICAgICAgdGFibGVDaGlsZCA9IHRhYmxlQ2hpbGQt
Pm5leHRTaWJsaW5nKCk7CiAgICAgfQogCi0gICAgYXV0byB0YWJsZUJveCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlw
ZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkp
OworICAgIGF1dG8gdGFibGVCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50
QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlQm94IH0sIFJlbmRlclN0eWxlOjpj
bG9uZSh0YWJsZVJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICBhcHBlbmRDaGlsZCh0YWJsZVdyYXBw
ZXJCb3gsICp0YWJsZUJveCk7CiAgICAgd2hpbGUgKHRhYmxlQ2hpbGQpIHsKICAgICAgICAgVHJl
ZUJ1aWxkZXI6OmNyZWF0ZVN1YlRyZWUoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnRhYmxlQ2hp
bGQpLCAqdGFibGVCb3gpOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgcHJpbnRMYXlvdXRUcmVl
Rm9yTGl2ZURvY3VtZW50cygpCiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkg
dG8gb3V0cHV0IGdlb21ldHJ5IHdpdGhvdXQgbGF5b3V0IGNvbnRleHQuCiAgICAgICAgIGF1dG8m
IHJlbmRlclZpZXcgPSAqZG9jdW1lbnQtPnJlbmRlclZpZXcoKTsKICAgICAgICAgYXV0byBpbml0
aWFsQ29udGFpbmluZ0Jsb2NrID0gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dFRyZWUocmVuZGVy
Vmlldyk7Ci0gICAgICAgIGF1dG8gbGF5b3V0U3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExheW91
dDo6TGF5b3V0U3RhdGU+KCppbml0aWFsQ29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgYXV0byBs
YXlvdXRTdGF0ZSA9IG1ha2VVbmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oKmluaXRpYWxDb250
YWluaW5nQmxvY2spOwogICAgICAgICBsYXlvdXRTdGF0ZS0+c2V0UXVpcmtzTW9kZShyZW5kZXJW
aWV3LmRvY3VtZW50KCkuaW5MaW1pdGVkUXVpcmtzTW9kZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJr
c01vZGU6OkxpbWl0ZWQgOiAocmVuZGVyVmlldy5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpID8g
TGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6OlllcyA6IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpO
bykpOwogICAgICAgICBsYXlvdXRTdGF0ZS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIHNob3dM
YXlvdXRUcmVlKCppbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBsYXlvdXRTdGF0ZS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTFkNzdlNGFmMWRiZGRm
MDQ1YTkyYzFjOGFkM2I5OWVhY2ViOTdiNS4uYjQ5OGEyMjRiMTkwYzZjZTg0NGViOWRkN2ViOWI3
YTEwNWQ3NmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
NzgsNyArNzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRl
cjo6Y3JlYXRlKERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYQogICAgIGlmIChmaWx0ZXJzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwg
ZG9jdW1lbnRMb2FkZXIpOwogfQogCiBDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRh
aW5lciYmIGNvbnRlbnRGaWx0ZXJzLCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CmluZGV4IGQwZDU0Yjk3ZWFlNzIwNDI2Zjk2MWM4ZGFlODk1ZTIwMzY5Y2VkY2MuLmM0Y2U1ZjU1
MjE3MGIzY2ZjOGI4NDFiNTlhNTEwZmQ3NWFhODNmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBAIC0yMDUsNyArMjA1LDcg
QEAgYm9vbCB2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xD
aGVjayhyZXNwb25zZSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlY3VyaXR5T3JpZ2luLCBl
cnJvckRlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVt
PihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVl
PENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPihzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSk7CiAgICAgaWYgKCFyZXN1bHQtPnBhcnNlKHJlc3BvbnNlKQogICAgICAgICB8fCAhcmVz
dWx0LT5hbGxvd3NDcm9zc09yaWdpbk1ldGhvZChyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3JpcHRpb24pCiAgICAgICAgIHx8ICFyZXN1bHQt
PmFsbG93c0Nyb3NzT3JpZ2luSGVhZGVycyhyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSwgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3JpcHRpb24pKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBkZTA5ZTcwMzk5Y2M3NDdlODg3MzY5Nzgz
NzI0ZTZkYWE5ZmM3ODhiLi4wNDU1Y2FmYzU5ZmY3YjZlYTFmOWEyY2QzOTMxYTY5ZTlmNjk0NDU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE4OSw3ICsx
ODksNyBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRAogICAgICwgbV9vcmlnaW5hbFN1YnN0aXR1
dGVEYXRhV2FzVmFsaWQoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICwgbV9zdWJzdGl0
dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1
dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGF0YUxvYWRUaW1lcigqdGhp
cywgJkRvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpCi0gICAgLCBt
X2FwcGxpY2F0aW9uQ2FjaGVIb3N0KHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25DYWNoZUhv
c3Q+KCp0aGlzKSkKKyAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3QobWFrZVVuaXF1ZTxBcHBs
aWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQogewogfQogCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB1
aW50NjRfdCBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKQogICAgIGlm
IChtYW5pZmVzdFVSTC5pc0VtcHR5KCkgfHwgIW1hbmlmZXN0VVJMLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRl
bnRpYWxzKTsKKyAgICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKICAg
ICBhdXRvKiByYXdNYW5pZmVzdExvYWRlciA9IG1hbmlmZXN0TG9hZGVyLmdldCgpOwogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG5leHRDYWxsYmFja0lEKys7CiAgICAgbV9hcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVycy5zZXQoV1RGTW92ZShtYW5pZmVzdExvYWRlciksIGNhbGxiYWNrSUQpOwpAQCAt
MTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QXJjaGl2ZShSZWY8QXJj
aGl2ZT4mJiBhcmNoaXZlKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291
cmNlcyhBcmNoaXZlJiBhcmNoaXZlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CisgICAgICAgIG1fYXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4o
KTsKICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFkZEFsbFJlc291cmNlcyhhcmNo
aXZlKTsKIH0KIApAQCAtMTQzNiw3ICsxNDM2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6YWRk
QWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJiBhcmNoaXZlKQogdm9pZCBEb2N1bWVudExvYWRl
cjo6YWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgcmVzb3VyY2UpCiB7
CiAgICAgaWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIG1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbj4oKTsKKyAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gbWFrZVVu
aXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbi0+YWRkUmVzb3VyY2UoV1RGTW92ZShyZXNvdXJjZSkpOwogfQogCkBAIC0xOTYz
LDcgKzE5NjMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIC8vIElmIHRoZSBsb2FkIHdhcyBhYm9ydGVk
IGJ5IGNsZWFyaW5nIG1fcmVxdWVzdCwgaXQncyBwb3NzaWJsZSB0aGUgQXBwbGljYXRpb25DYWNo
ZUhvc3QKICAgICAgICAgLy8gaXMgbm93IGluIGEgc3RhdGUgd2hlcmUgc3RhcnRpbmcgYW4gZW1w
dHkgbG9hZCB3aWxsIGJlIGluY29uc2lzdGVudC4gUmVwbGFjZSBpdCB3aXRoCiAgICAgICAgIC8v
IGEgbmV3IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LgotICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVI
b3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpOworICAg
ICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbkNhY2hl
SG9zdD4oKnRoaXMpOwogICAgICAgICBtYXliZUxvYWRFbXB0eSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjEyMiw3ICsyMTIyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gaWNvbkxvYWRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SWNvbkxvYWRlcj4oKnRoaXMsIGljb24udXJsKTsKKyAgICBhdXRvIGljb25Mb2FkZXIg
PSBtYWtlVW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAgICAgYXV0byogcmF3
SWNvbkxvYWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7CiAgICAgbV9pY29uTG9hZGVycy5zZXQoV1RG
TW92ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggYzQ1MGMwODcwYzBkYjkwMDJiOTA0YzdiNmNiY2U0Yzk2OTAy
YzZkYy4uYWNhMzQ1Mjk4NWI3MzExOWJjYjIzYzQzYmEyM2VlZmI3NWE3YTM0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCBQYWdlQ29u
ZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKQogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxFbXB0eVByb2dyZXNzVHJhY2tlckNsaWVudD4gZHVtbXlQcm9ncmVz
c1RyYWNrZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50ID0gJmR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmdldCgpOwogCi0gICAgcGFnZUNvbmZp
Z3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEVtcHR5
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQ+KCk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoeyB9LCB7IH0pOwogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IEVtcHR5RGF0YWJhc2VQ
cm92aWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBlMGY0NjE0
OGYyZGZhYTg3ZjZiMjQyNjM3ZDUwODkxODUyMGE2MGEyLi44M2JlYjI3MTdkMzM3YzM0MWMwMTVl
Y2Y0NmQ0ZjM3M2UwOGIxNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
QEAgLTI3MCwxMCArMjcwLDEwIEBAIGNsYXNzIEZyYW1lTG9hZGVyOjpGcmFtZVByb2dyZXNzVHJh
Y2tlciB7CiBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUmIGZyYW1lLCBGcmFtZUxvYWRl
ckNsaWVudCYgY2xpZW50KQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fY2xpZW50KGNs
aWVudCkKLSAgICAsIG1fcG9saWN5Q2hlY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFBvbGljeUNoZWNr
ZXI+KGZyYW1lKSkKLSAgICAsIG1faGlzdG9yeShzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcnlDb250
cm9sbGVyPihmcmFtZSkpCisgICAgLCBtX3BvbGljeUNoZWNrZXIobWFrZVVuaXF1ZTxQb2xpY3lD
aGVja2VyPihmcmFtZSkpCisgICAgLCBtX2hpc3RvcnkobWFrZVVuaXF1ZTxIaXN0b3J5Q29udHJv
bGxlcj4oZnJhbWUpKQogICAgICwgbV9ub3RpZmllcihmcmFtZSkKLSAgICAsIG1fc3ViZnJhbWVM
b2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUpKQorICAgICwgbV9z
dWJmcmFtZUxvYWRlcihtYWtlVW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFtZSkpCiAgICAgLCBt
X21peGVkQ29udGVudENoZWNrZXIoZnJhbWUpCiAgICAgLCBtX3N0YXRlKEZyYW1lU3RhdGVQcm92
aXNpb25hbCkKICAgICAsIG1fbG9hZFR5cGUoRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQpCkBAIC0z
MjEsNyArMzIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAgbV9zdGF0ZU1hY2hp
bmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVt
cHR5RG9jdW1lbnQpOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LmNyZWF0
ZU5ldHdvcmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAgICBtX3Byb2dyZXNzVHJh
Y2tlciA9IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQpA
QCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXRGb3JTeW50aGVzaXplZERv
Y3VtZW50KGNvbnN0IFVSTCYpCiAgICAgbV9uZWVkc0NsZWFyID0gdHJ1ZTsKIAogICAgIG1fbmV0
d29ya2luZ0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwotICAg
IG1fcHJvZ3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tl
cj4obV9mcmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5pcXVlPEZyYW1lUHJv
Z3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJz
TG9hZGluZyhib29sIGRlZmVycykKQEAgLTI2NzgsNyArMjY3OCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmRldGFjaENoaWxkcmVuKCkKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwjbmF2aWdhdGUKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TmF2aWdhdGlvbkRpc2FibGVyPiBuYXZpZ2F0aW9uRGlzYWJsZXI7CiAgICAgaWYgKG1f
ZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgbmF2aWdhdGlvbkRpc2FibGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsKKyAgICAgICAgbmF2aWdh
dGlvbkRpc2FibGVyID0gbWFrZVVuaXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsK
IAogICAgIC8vIEFueSBzdWJmcmFtZSBpbnNlcnRlZCBieSB1bmxvYWQgZXZlbnQgaGFuZGxlcnMg
ZXhlY3V0ZWQgaW4gdGhlIGxvb3AgYmVsb3cgd2lsbCBub3QgZ2V0IHVubG9hZGVkCiAgICAgLy8g
YmVjYXVzZSB3ZSBjcmVhdGUgYSBjb3B5IG9mIHRoZSBzdWJmcmFtZXMgbGlzdCBiZWZvcmUgbG9v
cGluZy4gVGhlcmVmb3JlLCBpdCB3b3VsZCBiZSB1bnNhZmUgdG8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKaW5kZXggOGUzYTQ2YjUxMGE5OTgwYzJhZmI4MGEzNDQ4YTQ5ODllYWMxOWUx
OS4uNWZmZjY3ZDk0MmViZTkxZTAzYTUyOTZlNmU5ZGEyNGRiM2I3Y2NiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTk2LDYgKzk2LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIHVzaW5nIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVu
dGlmaWVyKT47CiAKIGNsYXNzIEZyYW1lTG9hZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZUxvYWRlcik7CiBwdWJsaWM6CiAg
ICAgRnJhbWVMb2FkZXIoRnJhbWUmLCBGcmFtZUxvYWRlckNsaWVudCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGNkZjY0OTUyNmZlM2QxZjMzMjhkNmUzNmMyMDEwODdj
MzFmMTY1NWIuLjQwOGM1MzY0MjllM2IwODc3OThlYjk3ZTc2ODY0Y2M5NDg2NjY3YWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTE0MiwyMiArMTQyLDIyIEBAIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gY3JlYXRlTGlua1By
ZWxvYWRSZXNvdXJjZUNsaWVuCiB7CiAgICAgc3dpdGNoIChyZXNvdXJjZS50eXBlKCkpIHsKICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZEltYWdlUmVzb3VyY2VDbGllbnQ+KGxvYWRl
ciwgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxD
YWNoZWRJbWFnZT4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpT
Y3JpcHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVs
dFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFNjcmlwdD4ocmVzb3VyY2Up
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VD
bGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOwogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBk
b3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxMaW5rUHJlbG9hZFN0eWxlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNh
c3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpUeXBlOjpGb250UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtQcmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEZv
bnQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRm9u
dFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlKSk7
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6
OlRleHRUcmFja1Jlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5r
UHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRUZXh0
VHJhY2s+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2Fk
RGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4o
cmVzb3VyY2UpKTsKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1lZGlh
UmVzb3VyY2U6CiAgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLm1lZGlhUHJlbG9hZGluZ0VuYWJsZWQoKSk7CiAgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlJhd1Jlc291cmNlOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50Pihsb2Fk
ZXIsIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25j
YXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGU6Ok1haW5SZXNvdXJjZToKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJ
Y29uOgogI2lmIEVOQUJMRShTVkdfRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkRpc2FibGVyLmgKaW5kZXggMDJjYzdkMTIwY2E0YmNmZjM1MjVjOGY3NDljYzQxODBmZTZk
NDVlMi4uOGFlNGIzMWI4YjY5Zjk4ZDAxYWRhNzg4OTlhOThiZDExZGQ0MjczZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaApAQCAtMzAsNiArMzAsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOYXZpZ2F0aW9uRGlzYWJsZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdmlnYXRpb25EaXNhYmxlcihG
cmFtZSogZnJhbWUpCiAgICAgICAgIDogbV9mcmFtZShmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRleCA1NThjNzgwNDk1N2VjODgyODgx
OGVmNTYxOWJmOTgzZDNmOTQwYTU1Li4zYzJjMjUyYWE1MWI5NjkyOTVlY2YxNDgxMjU0YTMyNDBl
YzQyYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
Y3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVs
ZVJlZGlyZWN0KERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIGRvdWJsZQogICAgIC8vIFdl
IHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0
IGlzID4gMSBzZWNvbmQuCiAgICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJl
Y3QtPmRlbGF5KCkpIHsKICAgICAgICAgYXV0byBsb2NrQmFja0ZvcndhcmRMaXN0ID0gZGVsYXkg
PD0gMSA/IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyA6IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5v
OwotICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihp
bml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKKyAg
ICAgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0Rv
Y3VtZW50LCBkZWxheSwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJs
LCBMb2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0ZvcndhcmRMaXN0KSk7CiAgICAgfQogfQogCkBA
IC00NDUsNyArNDQ1LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0
aW9uQ2hhbmdlKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIFMKICAgICAvLyBUaGlzIG1h
eSBoYXBwZW4gd2hlbiBhIGZyYW1lIGNoYW5nZXMgdGhlIGxvY2F0aW9uIG9mIGFub3RoZXIgZnJh
bWUuCiAgICAgYm9vbCBkdXJpbmdMb2FkID0gIWxvYWRlci5zdGF0ZU1hY2hpbmUoKS5jb21taXR0
ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKTsKIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlx
dWU8U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5
T3JpZ2luLCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwg
ZHVyaW5nTG9hZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBzY2hlZHVsZSht
YWtlVW5pcXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZz
ZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIGR1cmluZ0xvYWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZv
aWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1
Ym1pc3Npb24+JiYgc3VibWlzc2lvbikKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIE5hdmlnYXRp
b25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYm
IHN1Ym1pc3NpbwogICAgICAgICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJk
TGlzdDo6WWVzOwogICAgIH0KICAgICAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNj
aGVkdWxlZEZvcm1TdWJtaXNzaW9uPihXVEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFja0Zvcndh
cmRMaXN0LCBkdXJpbmdMb2FkKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRG
b3JtU3VibWlzc2lvbj4oV1RGTW92ZShzdWJtaXNzaW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwg
ZHVyaW5nTG9hZCkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVm
cmVzaChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZv
aWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBpbml0aWF0
aW5nRG9jdW1lbnQpCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGlu
Z0RvY3VtZW50LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1f
ZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CisgICAgc2NoZWR1bGUobWFrZVVu
aXF1ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2ZyYW1lLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1Jl
ZmVycmVyKCkpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3Rv
cnlOYXZpZ2F0aW9uKGludCBzdGVwcykKQEAgLTQ5OCwxMyArNDk4LDEzIEBAIHZvaWQgTmF2aWdh
dGlvblNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCiAgICAg
fQogCiAgICAgLy8gSW4gYWxsIG90aGVyIGNhc2VzLCBzY2hlZHVsZSB0aGUgaGlzdG9yeSB0cmF2
ZXJzYWwgdG8gb2NjdXIgYXN5bmNocm9ub3VzbHkuCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3Vu
aXF1ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbj4oc3RlcHMpKTsKKyAgICBzY2hlZHVsZSht
YWtlVW5pcXVlPFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uPihzdGVwcykpOwogfQogCiB2b2lk
IE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKERvY3VtZW50JiBvcmlnaW5E
b2N1bWVudCkKIHsKICAgICBpZiAoc2hvdWxkU2NoZWR1bGVOYXZpZ2F0aW9uKCkpCi0gICAgICAg
IHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1
bWVudCkpOworICAgICAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4o
b3JpZ2luRG9jdW1lbnQpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjp0aW1lckZp
cmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCmluZGV4
IGEyZGRhY2UyOGYwN2MzOTFmZTI0ZTE5MThkMjU0YTUwMDJmYWI0NzYuLjk3YzIzYjE1MDkyYmYz
OTNiMzFkMjBjOGYzNGQyNTc3MjYzMWNjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKIGVudW0gY2xhc3MgTmV3TG9hZEluUHJvZ3Jlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAg
IAogY2xhc3MgTmF2aWdhdGlvblNjaGVkdWxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTmF2aWdhdGlvblNjaGVkdWxlcihGcmFtZSYpOwog
ICAgIH5OYXZpZ2F0aW9uU2NoZWR1bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwCmluZGV4IGUxN2E5ZGM3MmRlMDM3Yzk2MzRiYzFjYzkzYzJjMWE3N2E4NmJm
YTMuLjI4MTdhNzY2NjQ1N2IyMzk3M2E2OGZjZjdiYzAxODBjMTJiZjVjZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9p
ZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2UKIAogICAgIGF1dG8mIGl0ZW0gPSBtX3Byb2dyZXNzSXRlbXMu
YWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWl0ZW0p
IHsKLSAgICAgICAgaXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0
ZWRMZW5ndGgpOworICAgICAgICBpdGVtID0gbWFrZVVuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGlt
YXRlZExlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCBlYTVkYmZiYWFiMjBiZmQ0M2Rl
YWNmMWU3NzYxMWMzNDMzYWJhYjgzLi44MjQ2YmIwNzA2Y2QwYzA3MWY4OTk2Mjg5ODZhNWJhNTFj
NDhiNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIu
Y3BwCkBAIC01MzUsNyArNTM1LDcgQEAgYm9vbCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjaGVja0Zv
ckhlYWRDaGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4sIGJvb2wKICAgICBpZiAo
bV9jb250ZW50VHlwZSA9PSBYTUwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9jaGFy
c2V0UGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7Cisg
ICAgbV9jaGFyc2V0UGFyc2VyID0gbWFrZVVuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7
CiAgICAgcmV0dXJuIGNoZWNrRm9yTWV0YUNoYXJzZXQoZGF0YSwgbGVuKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCBjYTllNmM0MzQzZDc0MDEw
NTUzYTllMTBmYTY1NjNlZTUyMzkxYmJlLi5mYTkyNmVhMDYyYWRmZjIwNTcwYzhhMzY5MTI0Njcy
YjllZjU2NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApA
QCAtOTIsNyArOTIsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
Y3VlUGFyc2VyKQotICAgICAgICBtX2N1ZVBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRU
UGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgbV9jdWVQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZU
VFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICB3aGlsZSAobV9wYXJzZU9mZnNldCA8IGJ1ZmZlci0+
c2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEobV9wYXJz
ZU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKaW5kZXggYTEyNjNlMmYwNDU3NGI0ZjBlZTczYzA0ZThiNjJmNWM4MDcyYTc1OC4u
Nzc1MzJmODYxMzRlMDQzYWQzN2QzZjU5OTk4YTZmNTdhNDI0MTc0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTE1LDExICsx
MTUsMTEgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRo
cmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICBBU1NFUlQoY29udGVudFNlY3Vy
aXR5UG9saWN5KTsKIAogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5Db3B5ID0gc2VjdXJpdHlPcmln
aW4tPmlzb2xhdGVkQ29weSgpOwotICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihnbG9iYWxTY29wZS51cmwo
KS5pc29sYXRlZENvcHkoKSk7CisgICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0g
bWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xh
dGVkQ29weSgpKTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5U3RhdGVGcm9t
KGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+
Y29weVVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RTdGF0ZUZyb20oKmNvbnRlbnRTZWN1cml0eVBvbGlj
eSk7CiAKLSAgICBhdXRvIG9wdGlvbnNDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJUYXNr
T3B0aW9ucz4ob3B0aW9ucywgcmVxdWVzdC5odHRwUmVmZXJyZXIoKS5pc051bGwoKSA/IG91dGdv
aW5nUmVmZXJyZXIgOiByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBXVEZNb3ZlKHNlY3VyaXR5T3Jp
Z2luQ29weSkpOworICAgIGF1dG8gb3B0aW9uc0NvcHkgPSBtYWtlVW5pcXVlPExvYWRlclRhc2tP
cHRpb25zPihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8gb3V0Z29p
bmdSZWZlcnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJpdHlPcmln
aW5Db3B5KSk7CiAKICAgICAvLyBBbGwgbG9hZHMgc3RhcnQgb3V0IGFzIERvY3VtZW50LiBJbnNp
ZGUgV29ya2VyVGhyZWFkYWJsZUxvYWRlciB3ZSB1cGdyYWRlIHRoaXMgdG8gYSBXb3JrZXIgbG9h
ZC4KICAgICBBU1NFUlQob3B0aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9PSBJ
bml0aWF0b3JDb250ZXh0OjpEb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGY5N2ViMDA0MjViZDI5
YjNjYjZiY2IzNDVmYmZkNjUyMjQwOGY4Y2UuLmJiYTkxMDQxOTE1NGVjZjQzYzEyMmUyZDkwY2Y4
NjQ1NTk3YTk5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShOb2RlJiBub2RlLCBXVEY6OkZ1
bmN0aW9uPGJvb2wKICAgICAvLyBidXQgd2UgY2FuIGFwcHJveGltYXRlIHRoYXQgYnkgY2hlY2tp
bmcgaWYgc2NyaXB0aW5nIGlzIGVuYWJsZWQgcmlnaHQgbm93LgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+IHRhZ05hbWVzVG9GaWx0ZXI7CiAgICAgaWYgKGZyYW1l
LT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkg
ewotICAgICAgICB0YWdOYW1lc1RvRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UXVh
bGlmaWVkTmFtZT4+KCk7CisgICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBtYWtlVW5pcXVlPFZl
Y3RvcjxRdWFsaWZpZWROYW1lPj4oKTsKICAgICAgICAgdGFnTmFtZXNUb0ZpbHRlci0+YXBwZW5k
KEhUTUxOYW1lczo6bm9zY3JpcHRUYWcpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggZjMxMjkwNzI4ZjY5OTBkODAwOGJhMjY0NDAy
MWNiMWQ4ODViOTQ1Ny4uNzBmNTg2ODQ4ZWFlZTI5MTI2YzRiYWU5MTA2YzE1ZTI5NmE5MDc0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0xMDUs
NyArMTA1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAgbV9pbWFnZU9ic2VydmVyLT5jYWNoZWRJbWFn
ZXMoKS5hZGQodGhpcyk7CiAKICAgICBpZiAobV9pbWFnZSAmJiBpczxTVkdJbWFnZT4oKm1faW1h
Z2UpKQotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdl
Q2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAgICAgbV9zdmdJbWFn
ZUNhY2hlID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCpt
X2ltYWdlKSk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCYgY2xpZW50KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIGlubGluZSB2b2lkIENhY2hl
ZEltYWdlOjpjcmVhdGVJbWFnZSgpCiAKICAgICBpZiAobV9pbWFnZSkgewogICAgICAgICBpZiAo
aXM8U1ZHSW1hZ2U+KCptX2ltYWdlKSkKLSAgICAgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFn
ZSkpOworICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNh
Y2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CiAKICAgICAgICAgLy8gU2VuZCBx
dWV1ZWQgY29udGFpbmVyIHNpemUgcmVxdWVzdHMuCiAgICAgICAgIGlmIChtX2ltYWdlLT51c2Vz
Q29udGFpbmVyU2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCBiZTYxODNhYmZhNTlkNWM4ZTE2MmZlYzFkNjU1MjQ1
MjNhZGUyNzhjLi5mOWE3NWYzNTQ1Mjc2OTAyYTllNGE1YzM1YjZhYzZiMWYxNTBjMzA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
QEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2Vp
dmVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cgogICAgICAgICBDYWNo
ZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UgewogICAgICAgICBtX3JlZGly
ZWN0Q2hhaW4uYXBwZW5kKFJlZGlyZWN0UGFpcihyZXF1ZXN0LCByZXNwb25zZSkpOwotICAgICAg
ICBpdGVyYXRlQ2xpZW50cyhDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudD4obV9jbGllbnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+KHRoaXMpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNl
UmVzcG9uc2U+KHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkgbXV0YWJsZSB7CisgICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xp
ZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIG1h
a2VVbmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIENhY2hlZFJlc291
cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGU0MzBlNDQ3YWM0OTQ2
MzZjOTg0ZTc0ZDQwYjkxZTY1Y2RlYmI1MGIuLjA1NjdkMWQ1ZGU4YzZmMTNlMTg2ODQ0YWVkNzU1
NzVjZjE3ZTE3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtNTQ2LDcgKzU0Niw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENs
aWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIC8vIFRoZXJl
Zm9yZSwgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgc2VuZGluZyBjYWxsYmFja3Mgb24gYSBjYWNo
ZSBoaXQgbGlrZSBvdGhlciBDYWNoZWRSZXNvdXJjZXMsCiAgICAgICAgIC8vIHdlIHNjaGVkdWxl
IHRoZSBjYWxsYmFja3MgYW5kIGVuc3VyZSB3ZSBuZXZlciBmaW5pc2ggc3luY2hyb25vdXNseS4K
ICAgICAgICAgQVNTRVJUKCFtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmNvbnRhaW5zKCZjbGll
bnQpKTsKLSAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoJmNsaWVudCwgc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsIGNsaWVudCkpOworICAgICAgICBtX2NsaWVu
dHNBd2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50LCBtYWtlVW5pcXVlPENhbGxiYWNrPigqdGhp
cywgY2xpZW50KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDg0M2E5ZDFmOWQ2Yzg1ZjEwMDBhMmM0MGYxOTY0YjQ3YTJlYjFjN2EuLmIzNGI4ZmQzNWMxMDc3
YTU0NTJhYmIzNDMyMzYxYjRjYzNkMTFjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNzkxLDcgKzc5MSw3IEBA
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgLy8gRW50cnkgcG9pbnQgdG8gaHR0cHM6Ly9m
ZXRjaC5zcGVjLndoYXR3Zy5vcmcvI21haW4tZmV0Y2guCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
c291cmNlUmVxdWVzdD4gb3JpZ2luYWxSZXF1ZXN0OwogICAgIGlmIChDYWNoZWRSZXNvdXJjZTo6
c2hvdWxkVXNlUGluZ0xvYWQodHlwZSkgfHwgcmVxdWVzdC5vcHRpb25zKCkuZGVzdGluYXRpb24g
PT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpIHsKLSAgICAgICAgb3Jp
Z2luYWxSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KHJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkpOworICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBtYWtlVW5pcXVl
PFJlc291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIG9y
aWdpbmFsUmVxdWVzdC0+Y2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAgICAgb3JpZ2luYWxSZXF1
ZXN0LT5jbGVhckhUVFBPcmlnaW4oKTsKICAgICB9CkBAIC0xMzkxLDcgKzEzOTEsNyBAQCBSZXNv
dXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cHJlbAogICAgICAgICByZXNvdXJjZVZhbHVlLT5pbmNyZWFzZVByZWxv
YWRDb3VudCgpOwogCiAgICAgICAgIGlmICghbV9wcmVsb2FkcykKLSAgICAgICAgICAgIG1fcHJl
bG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7
CisgICAgICAgICAgICBtX3ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRS
ZXNvdXJjZSo+PigpOwogICAgICAgICBtX3ByZWxvYWRzLT5hZGQocmVzb3VyY2VWYWx1ZS5nZXQo
KSk7CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZTsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMoQ2xlYXJQcmVsb2Fkc01vZGUg
bW9kZSkKICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICAgICAgaWYgKG1vZGUgPT0gQ2xl
YXJQcmVsb2Fkc01vZGU6OkNsZWFyU3BlY3VsYXRpdmVQcmVsb2FkcyAmJiByZXNvdXJjZS0+aXNM
aW5rUHJlbG9hZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZ0xpbmtQcmVsb2FkcykK
LSAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICAgICAgcmVtYWlu
aW5nTGlua1ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+
PigpOwogICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzLT5hZGQocmVzb3VyY2UpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKaW5kZXggNzBj
YjFhZmE0Y2YxZDNhNmU2NDJhOGFlOWRiODQ0OGY4NGQxNGJkNi4uMjJhZTcyZDhmZjVlZjcyOWEx
NjRjNzZhNGZkYmIwZTQ5ZDcxZjRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKQEAgLTM1LDcgKzM1LDgg
QEAgY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
IHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKLWNsYXNzIENhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKK2NsYXNzIENhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlIGZpbmFsIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQyM2MzZmM1MjRiZDhiNmY1
NWYzNWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2FmZmNiZWYzOTI3ODI2M2M0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC04
Niw3ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAgQVNTRVJUKHNlc3Npb25J
RC5pc1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJlc291cmNlcy5hZGQoc2Vz
c2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFtYXApCi0gICAgICAg
IG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CisgICAgICAgIG1h
cCA9IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAgcmV0dXJuICptYXA7CiB9
CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUo
TmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmVtb3Zl
SW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBj
YWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1dG8gYml0bWFwSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBhdXRv
IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJ
bWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9u
KTsKKyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBi
aXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJbWFnZUNs
aWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRl
Y29kZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmxydUxp
c3RGb3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0JgogCiAgICAgbV9hbGxS
ZXNvdXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsKICAgICB3aGlsZSAobV9h
bGxSZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAgIG1fYWxsUmVzb3VyY2Vz
LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+KCkpOworICAgICAgICBt
X2FsbFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxMUlVMaXN0PigpKTsKICAg
ICByZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCmluZGV4IDYxOGU5NDI5NTAxN2RjM2I4MzAzNjVj
MTE2NzYxNTM4YjFkYjYyMzguLjE1MDNkNzhlM2FmNTk5NDk1NGIzM2MyYTgwODRmNGZlYTYzMDA3
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCkBAIC0zOSw2
ICszOSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFByZXZpZXdMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdMb2FkZXIpOwogcHVibGljOgogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2
aWV3TG9hZGVyLm1tCmluZGV4IGY2YjgyMjE3OTE2Y2FkOTViZmU5NjBiYjNlMzc4NGEyNzBhOWJh
NjcuLmM1Y2E1YzI1ZjExYjRkOGE5Y2E5M2VmYzg4OTA5OTA3ZjZiNzY2MDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTg2LDcgKzg2LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNv
dXJjZUxvYWRlciByZXNvdXJjZVIKIAogICAgIF9yZXNvdXJjZUxvYWRlciA9IG1ha2VXZWFrUHRy
KHJlc291cmNlTG9hZGVyKTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwotICAg
IF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9y
ZXNwb25zZSk7CisgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4o
c2VsZiwgX3Jlc3BvbnNlKTsKICAgICBfYnVmZmVyZWREYXRhQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3Jl
TG9hZGluZyA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRl
UG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKTsKIApAQCAtMjQ2LDcgKzI0Niw3
IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRG
YWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgfQogCiAgICAgX2NsaWVudC0+ZGlkUmVx
dWVzdFBhc3N3b3JkKFtzZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChjb25z
dCBTdHJpbmcmIHBhc3N3b3JkKSB7Ci0gICAgICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOworICAgICAg
ICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9u
c2UsIHBhc3N3b3JkKTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkg
YXBwZW5kRGF0YUFycmF5Ol9idWZmZXJlZERhdGFBcnJheS5nZXQoKV07CiAgICAgICAgIFtfY29u
dmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZpbmlzaGVkQXBwZW5kaW5nRGF0YV07CiAgICAg
fSk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUHJldmlld0xvYWRlcjo6flByZXZpZXdMb2FkZXIoKQog
c3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2FkZXI6OmNyZWF0ZShSZXNv
dXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBBU1NFUlQoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShyZXNwb25zZS5t
aW1lVHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0xvYWRlcj4o
bG9hZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UHJldmlld0xvYWRlcj4o
bG9hZGVyLCByZXNwb25zZSk7CiB9CiAKIGJvb2wgUHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nh
cHRpb25Vc2VyUHJlZmVyZW5jZXMuaAppbmRleCBlNmFkYjY3ZGE5NDg2ODYyNmZlMjA2ZmYxNmU2
NGRkYWNlMjcwMWZlLi42MTNlNzg5MmI0MTBmM2IyYTQ5NGVjZmI2ODAwMGFhYzBkYzY2MDgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaApAQCAtNDAs
NiArNDAsNyBAQCBjbGFzcyBUZXh0VHJhY2tMaXN0Owogc3RydWN0IE1lZGlhU2VsZWN0aW9uT3B0
aW9uOwogCiBjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VHcm91
cCYpOwogICAgIHZpcnR1YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBjNDc5Y2ExZjljYjA3
ZDRhYzdiNGI5ZmIyMjg1MWYwYzk5NGIxNzE0Li40Y2NkYWIwNGI3YjNmNTUzNGNlY2MyYTE5ZWMw
YTRiY2I3YWIxN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENvbnRleHRNZW51
PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4dE1lbnUoRXZlbnQKICAg
ICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Pigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRleHRNZW51PigpOwogfQogCiB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51KEV2ZW50JiBldmVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggZjYzZGFhN2Y2MzQ3MjU1ODg3
M2RiM2I1ODNiYzI1MTJhMTc3NTI3YS4uY2RjNzRmNmRlMDllOTNkZTlhYWI5MjM1NmVmMmZiZjQ0
ZGQyZDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAg
LTg4LDcgKzg4LDcgQEAgY2xhc3MgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXkgZmluYWwgOiBwdWJs
aWMgUmVnaW9uT3ZlcmxheSB7CiAKIGJvb2wgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXk6OnVwZGF0
ZVJlZ2lvbigpCiB7Ci0gICAgYXV0byByZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lvbj4o
KTsKKyAgICBhdXRvIHJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigpOwogICAgIAogICAgIGZv
ciAoY29uc3QgRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1lLT52
aWV3KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCmluZGV4IDQ4YzA3MzQ3NzBlYjExMGMxYzVkODQ1M2RkMDg3OTkyZTU2NDlhMWUuLmQyMGI5
OGM0MTVlZWM4Mjc2Zjg5MDBmMjRjNjdhOTdmMTAxZDBhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFu
ZGxlcihGcmFtZSYgZnJhbWUpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9wZW5kaW5nTW9t
ZW50dW1XaGVlbEV2ZW50c1RpbWVyKCp0aGlzLCAmRXZlbnRIYW5kbGVyOjpjbGVhckxhdGNoZWRT
dGF0ZSkKICNlbmRpZgotICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5p
cXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQorICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxl
cihtYWtlVW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQogI2lmICFFTkFCTEUoSU9TX1RP
VUNIX0VWRU5UUykKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGltZXIoKnRoaXMsICZFdmVu
dEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRpbWVyRmlyZWQpCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAppbmRleCAyMzM3Mjk0MmIzNzYzZDkyOTNkMjY1YjM1YWNjMTUyNWUz
NGNjMDBmLi5hNWU1ZWRlMGI0Yjc0N2U0Nzk0ZGM3OTQwNmFlZmNjYmIzODVkZDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBSZW5kZXJCb3gqIEZy
YW1lVmlldzo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKIHZvaWQgRnJhbWVWaWV3OjphZGRF
bWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVj
dCkKIHsKICAgICBpZiAoIW1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUpCi0gICAgICAgIG1fZW1i
ZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PFJlbmRl
ckVtYmVkZGVkT2JqZWN0Kj4+KCk7CisgICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUg
PSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CiAKICAg
ICBIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93
bmVyRWxlbWVudCgpOwogICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgfHwg
aXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkpIHsKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHZv
aWQgRnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJl
cikKICAgICBib29sIGhhZFNsb3dSZXBhaW50T2JqZWN0cyA9IGhhc1Nsb3dSZXBhaW50T2JqZWN0
cygpOwogCiAgICAgaWYgKCFtX3Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgbV9zbG93UmVw
YWludE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyRWxlbWVu
dCo+PigpOworICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IG1ha2VVbmlxdWU8SGFzaFNl
dDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CiAKICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cy0+
YWRkKCZyZW5kZXJlcik7CiAgICAgaWYgKGhhZFNsb3dSZXBhaW50T2JqZWN0cykKQEAgLTE0NjIs
NyArMTQ2Miw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWludE9iamVjdChSZW5k
ZXJFbGVtZW50JiByZW5kZXJlcikKIHZvaWQgRnJhbWVWaWV3OjphZGRWaWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIG9iamVjdCkKIHsKICAgICBpZiAoIW1f
dmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCi0gICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+
KCk7CisgICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBtYWtlVW5pcXVlPFZp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+KCk7CiAKICAgICBpZiAoIW1fdmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMtPmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAgICAgbV92aWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cy0+YWRkKG9iamVjdCk7CkBAIC00ODY2LDcgKzQ4NjYsNyBAQCBTdHJp
bmcgRnJhbWVWaWV3Ojp0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3QKIGJvb2wgRnJh
bWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEp
CiB7CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJl
YXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOworICAgICAgICBtX3Nj
cm9sbGFibGVBcmVhcyA9IG1ha2VVbmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CiAgICAgCiAg
ICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWFzLT5hZGQoc2Nyb2xsYWJsZUFyZWEpLmlzTmV3RW50cnkp
IHsKICAgICAgICAgc2Nyb2xsYWJsZUFyZWFTZXRDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAppbmRleCA3MzA5OGYxZmExZjEwNzFl
NjFmY2QzYWE2NTM1MzMwZDNlODliZjU5Li5lODU4YzkyY2JmOGMzMWEzMjFiZjM4MDA5N2FiYTU1
ZjE1NzAwMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91
dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29u
dGV4dC5jcHAKQEAgLTU5NiwxNCArNTk2LDE0IEBAIHZvaWQgRnJhbWVWaWV3TGF5b3V0Q29udGV4
dDo6cHVzaExheW91dFN0YXRlKFJlbmRlckVsZW1lbnQmIHJvb3QpCiAgICAgQVNTRVJUKCFtX3Bh
aW50T2Zmc2V0Q2FjaGVEaXNhYmxlQ291bnQpOwogICAgIEFTU0VSVCghbGF5b3V0U3RhdGUoKSk7
CiAKLSAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
TGF5b3V0U3RhdGU+KHJvb3QpKTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VV
bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXdMYXlv
dXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQoUmVuZGVyQmxv
Y2tGbG93JiBsYXlvdXRSb290KQogewogICAgIGlmIChsYXlvdXRTdGF0ZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlckxheW91dFN0YXRlPihsYXlvdXRSb290LCBSZW5kZXJMYXlvdXRTdGF0ZTo6SXNQ
YWdpbmF0ZWQ6OlllcykpOworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1
ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0U3RhdGU6OklzUGFn
aW5hdGVkOjpZZXMpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKQEAgLTYxMyw3ICs2MTMs
NyBAQCBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZShSZW5kZXJC
b3gmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaQogICAgIGF1dG8qIGxheW91dFN0YXRlID0gdGhp
cy0+bGF5b3V0U3RhdGUoKTsKICAgICBpZiAoIWxheW91dFN0YXRlIHx8ICFuZWVkc0Z1bGxSZXBh
aW50KCkgfHwgbGF5b3V0U3RhdGUtPmlzUGFnaW5hdGVkKCkgfHwgcmVuZGVyZXIuZW5jbG9zaW5n
RnJhZ21lbnRlZEZsb3coKQogICAgICAgICB8fCBsYXlvdXRTdGF0ZS0+bGluZUdyaWQoKSB8fCAo
cmVuZGVyZXIuc3R5bGUoKS5saW5lR3JpZCgpICE9IFJlbmRlclN0eWxlOjppbml0aWFsTGluZUdy
aWQoKSAmJiByZW5kZXJlci5pc1JlbmRlckJsb2NrRmxvdygpKSkgewotICAgICAgICBtX2xheW91
dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KG1f
bGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFnZUhlaWdo
dENoYW5nZWQpKTsKKyAgICAgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVl
PFJlbmRlckxheW91dFN0YXRlPihtX2xheW91dFN0YXRlU3RhY2ssIHJlbmRlcmVyLCBvZmZzZXQs
IHBhZ2VIZWlnaHQsIHBhZ2VIZWlnaHRDaGFuZ2VkKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNw
cAppbmRleCA4YzNjNTJhMDczNTIyNzkwY2QwYzRhNjBkYzA1ZTYxNDEyYzE5YWU5Li41MjI3ZTQy
YWMwOTZjZTY5MjVkN2VjNmExOGU1MTkyNWQyZTAwNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yQmFzZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
JiBOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKCkKIHsKICAgICBBU1NFUlQoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29ya2VyRW5hYmxlZCgpKTsK
ICAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbnRhaW5lcikKLSAgICAgICAgbV9zZXJ2aWNlV29y
a2VyQ29udGFpbmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2Vy
Q29udGFpbmVyID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICp0aGlzKTsKICAgICByZXR1cm4gKm1fc2VydmljZVdvcmtlckNvbnRh
aW5lcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZWRhN2M1ZmE1ZDY0NzliYTcxMDkwMjBi
NTI4MzJjZTI2MWJjZDdlOS4uMjlhMmFmNzRiY2FkZDZiMzBjNmFmZjYwZWM0ZTMxZDBiNDcyYmY1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMTEsMjYgKzIxMSwyNiBAQCBzdGF0aWMgY29uc3Rl
eHByIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBwYWdlSW5pdGlhbEFjdGl2aXR5U3Rh
dGUoKQogfQogCiBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRp
b24pCi0gICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5pcXVlPENocm9tZT4oKnRoaXMsICpwYWdl
Q29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQotICAgICwgbV9kcmFnQ2FyZXRDb250cm9sbGVy
KHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NhcmV0Q29udHJvbGxlcj4oKSkKKyAgICA6IG1fY2hyb21l
KG1ha2VVbmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVu
dCkpCisgICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIobWFrZVVuaXF1ZTxEcmFnQ2FyZXRDb250
cm9sbGVyPigpKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgLCBtX2RyYWdDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3Vy
YXRpb24uZHJhZ0NsaWVudCkpCisgICAgLCBtX2RyYWdDb250cm9sbGVyKG1ha2VVbmlxdWU8RHJh
Z0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCiAjZW5k
aWYKLSAgICAsIG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9s
bGVyPigqdGhpcywgcGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpKQorICAgICwgbV9mb2N1c0Nv
bnRyb2xsZXIobWFrZVVuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdlSW5pdGlhbEFj
dGl2aXR5U3RhdGUoKSkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRl
eHRNZW51Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q29udHJvbGxlcj4o
KnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkpCisgICAgLCBtX2Nv
bnRleHRNZW51Q29udHJvbGxlcihtYWtlVW5pcXVlPENvbnRleHRNZW51Q29udHJvbGxlcj4oKnRo
aXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkpCiAjZW5kaWYKLSAgICAs
IG1fdXNlcklucHV0QnJpZGdlKHN0ZDo6bWFrZV91bmlxdWU8VXNlcklucHV0QnJpZGdlPigqdGhp
cykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50KSkK
KyAgICAsIG1fdXNlcklucHV0QnJpZGdlKG1ha2VVbmlxdWU8VXNlcklucHV0QnJpZGdlPigqdGhp
cykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3JDb250
cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50KSkKICNpZiBF
TkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgLCBtX3BvaW50ZXJDYXB0dXJlQ29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwg
bV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRy
b2xsZXI+KCp0aGlzKSkKICNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgLCBt
X3BvaW50ZXJMb2NrQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJMb2NrQ29udHJv
bGxlcj4oKnRoaXMpKQorICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxQ
b2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhT
ZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9wcm9ncmVzcyhzdGQ6Om1ha2VfdW5pcXVl
PFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVu
dCkpCi0gICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEJhY2tG
b3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0Zv
cndhcmRDbGllbnQpKSkKKyAgICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1ZTxQcm9ncmVzc1RyYWNr
ZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQpKQorICAgICwgbV9i
YWNrRm9yd2FyZENvbnRyb2xsZXIobWFrZVVuaXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0
aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCiAgICAg
LCBtX21haW5GcmFtZShGcmFtZTo6Y3JlYXRlKHRoaXMsIG51bGxwdHIsIHBhZ2VDb25maWd1cmF0
aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSkpCiAgICAgLCBtX2VkaXRvckNsaWVudChXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCkpCiAgICAgLCBtX3BsdWdJbkNsaWVu
dChwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQpCkBAIC0yNTAsOSArMjUwLDkgQEAgUGFn
ZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9k
b21UaW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lcigqdGhpcywgJlBhZ2U6OmRvbVRp
bWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQpCiAgICAgLCBtX2FjdGl2aXR5
U3RhdGUocGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlVGV4
dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQpCi0gICAgLCBt
X2NvbnNvbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMp
KQorICAgICwgbV9jb25zb2xlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnNvbGVDbGllbnQ+KCp0
aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAsIG1faW5zcGVjdG9yRGVi
dWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCisgICAgLCBt
X2luc3BlY3RvckRlYnVnZ2FibGUobWFrZVVuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQog
I2VuZGlmCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24u
c29ja2V0UHJvdmlkZXIpKQogICAgICwgbV9jb29raWVKYXIoV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbi5jb29raWVKYXIpKQpAQCAtMjY4LDE2ICsyNjgsMTYgQEAgUGFnZTo6UGFnZShQYWdlQ29u
ZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9wbGF5YmFja0NvbnRyb2xz
TWFuYWdlclVwZGF0ZVRpbWVyKCp0aGlzLCAmUGFnZTo6cGxheWJhY2tDb250cm9sc01hbmFnZXJV
cGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCiAgICAgLCBtX2lzVXRpbGl0eVBhZ2UoaXNVdGlsaXR5
UGFnZUNocm9tZUNsaWVudChjaHJvbWUoKS5jbGllbnQoKSkpCi0gICAgLCBtX3BlcmZvcm1hbmNl
TW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogc3RkOjptYWtlX3VuaXF1ZTxQZXJm
b3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKLSAgICAsIG1fbG93UG93ZXJNb2RlTm90aWZpZXIoc3Rk
OjptYWtlX3VuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dl
ck1vZGVFbmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShpc0xvd1Bvd2VyTW9kZUVu
YWJsZWQpOyB9KSkKLSAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nKHN0ZDo6bWFrZV91bmlxdWU8
UGVyZm9ybWFuY2VMb2dnaW5nPigqdGhpcykpCisgICAgLCBtX3BlcmZvcm1hbmNlTW9uaXRvcihp
c1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogbWFrZVVuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+
KCp0aGlzKSkKKyAgICAsIG1fbG93UG93ZXJNb2RlTm90aWZpZXIobWFrZVVuaXF1ZTxMb3dQb3dl
ck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7IGhhbmRs
ZUxvd01vZGVQb3dlckNoYW5nZShpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpOyB9KSkKKyAgICAsIG1f
cGVyZm9ybWFuY2VMb2dnaW5nKG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VMb2dnaW5nPigqdGhpcykp
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAoRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJM
RShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikpCi0gICAgLCBtX3NlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyPigqdGhp
cykpCisgICAgLCBtX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fcmVjZW50V2hlZWxF
dmVudERlbHRhRmlsdGVyKFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKCkpCi0gICAgLCBt
X3BhZ2VPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VPdmVybGF5Q29udHJv
bGxlcj4oKnRoaXMpKQorICAgICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQ
YWdlT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAg
ICwgbV9wYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0
b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQpKQorICAgICwg
bV9wYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCpwYWdl
Q29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQpKQogI2VuZGlmCiAjaWYgRU5B
QkxFKFdFQl9BVVRITikKICAgICAsIG1fYXV0aGVudGljYXRvckNvb3JkaW5hdG9yKG1ha2VVbmlx
dWVSZWY8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
LmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCkpKQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZv
aWQgUGFnZTo6aW5pdEdyb3VwKCkKIHsKICAgICBBU1NFUlQoIW1fc2luZ2xlUGFnZUdyb3VwKTsK
ICAgICBBU1NFUlQoIW1fZ3JvdXApOwotICAgIG1fc2luZ2xlUGFnZUdyb3VwID0gc3RkOjptYWtl
X3VuaXF1ZTxQYWdlR3JvdXA+KCp0aGlzKTsKKyAgICBtX3NpbmdsZVBhZ2VHcm91cCA9IG1ha2VV
bmlxdWU8UGFnZUdyb3VwPigqdGhpcyk7CiAgICAgbV9ncm91cCA9IG1fc2luZ2xlUGFnZUdyb3Vw
LmdldCgpOwogfQogCkBAIC0yNjU0LDcgKzI2NTQsNyBAQCB2b2lkIFBhZ2U6OnNldFJlc291cmNl
VXNhZ2VPdmVybGF5VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgfQogCiAgICAgaWYgKCFtX3Jl
c291cmNlVXNhZ2VPdmVybGF5ICYmIG1fc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkKCkpCi0gICAgICAgIG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlc291cmNlVXNhZ2VPdmVybGF5PigqdGhpcyk7CisgICAgICAgIG1fcmVzb3VyY2VVc2Fn
ZU92ZXJsYXkgPSBtYWtlVW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5PigqdGhpcyk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCBk
MDMyZmNmNzBmODZhNjNhYWRkMTFmMjI3ZmE5NmRkMDYzYzFlYTYxLi42M2Y2NTZmMWE1YWI4ZTI2
ZmI5NTVlNjM0ZTQ1YTlhOGExMmZkZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcApAQCAtMTYwLDkgKzE2MCw5IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6
OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7
CiAKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVu
dGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNh
bGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxzZQot
ICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc3VnZ2Vz
dGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdnZXN0ZWRDb2x1bW5OdW1iZXIsIHN0YXRl
LCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1l
c3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENv
bHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKIAogICAgIGFkZE1lc3NhZ2Uo
V1RGTW92ZShtZXNzYWdlKSk7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBQYWdlQ29uc29s
ZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2Fn
ZUxldmVsIGwKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYm9vbCBnb3RNZXNzYWdlID0g
YXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwogCi0gICAg
YXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIGFy
Z3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBhcmd1bWVudHMuY29weVJlZigpLCBleGVjKTsKIAogICAg
IFN0cmluZyB1cmwgPSBtZXNzYWdlLT51cmwoKTsKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0g
bWVzc2FnZS0+bGluZSgpOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGll
bnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0YVVSTC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3QgY2FwdHVyZSBzY3JlZW5zaG90Il9zLCBXVEZNb3Zl
KGFyZ3VtZW50cykpKTsKKyAgICAgICAgICAgIGFkZE1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3QgY2FwdHVyZSBzY3JlZW5z
aG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50Ojpz
Y3JlZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJgog
ICAgIGZvciAoc2l6ZV90IGkgPSAoIXRhcmdldCA/IDAgOiAxKTsgaSA8IGFyZ3VtZW50cy0+YXJn
dW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFkanVzdGVkQXJndW1lbnRzLmFwcGVuZCh7IHN0
YXRlLT52bSgpLCBhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkgfSk7CiAgICAgYXJndW1lbnRzID0g
U2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoKnN0YXRlLCBXVEZNb3ZlKGFkanVzdGVkQXJndW1lbnRz
KSk7Ci0gICAgYWRkTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVz
c2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJndW1lbnRzKSkpOworICAgIGFkZE1l
c3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6TG9nLCBkYXRh
VVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDkxOTM2MDQ1YzJmYWY3NmNhYzVlMmM2OWU2
MjMzZjJjZTMwYmY5YjEuLjEyOGMxOGYxNGI5MDhlNzFiYzdjZWZiMzk2MjA3ZmViYmMwMGYyYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTExNiw5ICsxMTYsOSBAQCBDYXB0aW9u
VXNlclByZWZlcmVuY2VzJiBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcygpCiB7CiAgICAg
aWYgKCFtX2NhcHRpb25QcmVmZXJlbmNlcykgewogI2lmIFBMQVRGT1JNKE1BQykgfHwgSEFWRShN
RURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKLSAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5j
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGPigqdGhp
cyk7CisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRj4oKnRoaXMpOwogI2Vsc2UKLSAgICAgICAgbV9jYXB0aW9uUHJl
ZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlz
KTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM+KCp0aGlzKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlLmNwcAppbmRleCA2YzE1YjNmYWE4M2Y1Y2FlMGQ5MTc2ZDAwYzhhZmMxNWI3NjY5MzE2
Li5jYmJhYzIxZDQwMDViMWIwZTExODAyMmY3YWExNGE4YmNmZWQ4NTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6
OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVyRmlyZWQoKQogRXhjZXB0aW9uT3I8dm9pZD4g
UGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKIHsKICAgICBpZiAoIW1f
dXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2Vy
VGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRp
bWluZz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3VzZXJUaW1pbmctPm1hcmsobWFy
a05hbWUpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0yNzksMTQgKzI3OSwx
NCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhjb25zdCBTdHJpbmcmIG1h
cmtOYW1lKQogdm9pZCBQZXJmb3JtYW5jZTo6Y2xlYXJNYXJrcyhjb25zdCBTdHJpbmcmIG1hcmtO
YW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5n
ID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAgICAgbV91c2VyVGltaW5nLT5jbGVh
ck1hcmtzKG1hcmtOYW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1l
YXN1cmUoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgY29uc3QgU3RyaW5nJiBzdGFydE1hcmss
IGNvbnN0IFN0cmluZyYgZW5kTWFyaykKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAg
ICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7Cisg
ICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogCiAg
ICAgYXV0byByZXN1bHQgPSBtX3VzZXJUaW1pbmctPm1lYXN1cmUobWVhc3VyZU5hbWUsIHN0YXJ0
TWFyaywgZW5kTWFyayk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTMwMCw3
ICszMDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBT
dHJpbmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcmCiB2b2lkIFBlcmZvcm1hbmNlOjpjbGVh
ck1lYXN1cmVzKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUpCiB7CiAgICAgaWYgKCFtX3VzZXJU
aW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWlu
Zz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+
KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmctPmNsZWFyTWVhc3VyZXMobWVhc3VyZU5hbWUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaAppbmRleCA5OWE0Mzcy
ZTU0ZDg0MDI5YmFmYmY5YjhmN2E1ODIwMDFmYTYzYTFiLi4xNmJjZjA0MzkwYTE3MGYzZGU3ODI2
NTBjMmZjMjUyMmNmNTA1NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdh
cm1JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0
aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFdF
QkNPUkVfRVhQT1JUIFByZXdhcm1JbmZvcm1hdGlvbiB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIGZvbnRDYWNo
ZTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCAwMzcwZjI4ODdmNjVi
NTdiM2NkODk3ZTRmYzY5ZThhMmVmYjg3NWRmLi40NDI5MWFlZmEzN2M4YTdhODQ0OGJlYzM5YWVl
YWMyNDM5ZWM0NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCkBAIC0zMjEs
NyArMzIxLDcgQEAgdm9pZCBQcmludENvbnRleHQ6Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyhH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgRG8KICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX2xpbmtlZERlc3RpbmF0aW9ucykgewotICAgICAgICBtX2xpbmtlZERlc3RpbmF0
aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFJlZjxFbGVtZW50Pj4+KCk7
CisgICAgICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmlu
ZywgUmVmPEVsZW1lbnQ+Pj4oKTsKICAgICAgICAgY29sbGVjdExpbmtlZERlc3RpbmF0aW9ucyhk
b2N1bWVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRl
cmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1Vw
ZGF0ZVNjaGVkdWxlci5jcHAKaW5kZXggNTZhMDExYzRjZWU5OTc4OTkwMWZhZDM2MzAyYmUxMGMz
NDU2NjUyNy4uM2I4ODFkZmJiMTcxN2Y0ZTQxMWE2YzUzNDQ1OTVmYmQzYWI0MzA2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcApAQCAt
NzIsNyArNzIsNyBAQCBib29sIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6aXNTY2hlZHVsZWQo
KSBjb25zdAogdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnN0YXJ0VGltZXIoU2Vjb25k
cyBkZWxheSkKIHsKICAgICBBU1NFUlQoIWlzU2NoZWR1bGVkKCkpOwotICAgIG1fcmVmcmVzaFRp
bWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOworICAgIG1fcmVmcmVzaFRpbWVyID0gbWFrZVVu
aXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZy
ZXNoRmlyZWQpOwogICAgIG1fcmVmcmVzaFRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAppbmRl
eCBmYWRlNjJmYzc4N2VlNDg5NzlhZjZkZDgyNjYyNzc5ODA0ZDM3NTE3Li42ZjA2MDgxNzgyNmVj
NTZjNmVlOGE1ZjhjZDM5NDRlYzJkNDE5MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+IGNyZWF0ZShQYWdlJiBwYWdlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPihwYWdl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPihw
YWdlKTsKICAgICB9CiAKICAgICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoUGFnZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCmluZGV4IDk1YjFjOGI1YmU4M2Q4OWIyNDk3OWVh
ZWQ5YjlkNGU5MGQzZjRmODcuLmVlZWJmOWI5ZTYxYmQ1ODhmZDNiYTk5ZmFiMTUwMTkxY2M4ZjY3
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAg
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogCiBzdHJ1Y3QgUmVzaXplT2JzZXJ2ZXJE
YXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVmVjdG9yPFdl
YWtQdHI8UmVzaXplT2JzZXJ2ZXI+PiBvYnNlcnZlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDQyMzQxODI4MGVhMmVlM2M5YmZkZmM5MWNkMTI3Yjk2
OGViMWUxYmYuLjBkZWIwNjQxNDhmOTcyNmNkMzhiNDEwMDVkNTIyOTcyNjBjMWM2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgdm9p
ZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHNvdXJjZU8KICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vz
c01hcExvY2spOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdp
bkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7CiAKICAgICBPcmln
aW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
ICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBk
ZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nl
c3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3Vi
ZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3MpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBiNjg0ODk2ZjM5ODg0NjI1NGEx
Nzk3YWRjZGVkNjY2NjA1ZTg1ZDVjLi4yN2VlYTZjMGFiOTM4ZWJjOGY5NjVkYWNiODIwMzExNDQz
MTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC02OCw3ICs2OCw3
IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGxheW91dFNjaGVkdWxlVGhyZXNob2xkID0gMjUwX21z
OwogCiBTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZShQYWdlKiBwYWdlKQogICAgIDogbV9wYWdl
KG51bGxwdHIpCi0gICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMoc3RkOjptYWtlX3VuaXF1ZTxG
b250R2VuZXJpY0ZhbWlsaWVzPigpKQorICAgICwgbV9mb250R2VuZXJpY0ZhbWlsaWVzKG1ha2VV
bmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKICAgICAsIG1fbGF5b3V0SW50ZXJ2YWwobGF5
b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAgICAgLCBtX21pbmltdW1ET01UaW1lckludGVydmFsKERP
TVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAgLCBtX3NldEltYWdlTG9hZGlu
Z1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdlTG9hZGluZ1NldHRpbmdz
VGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVU
aW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKaW5kZXggNTU4
NDQzNDA3ODM0NmZiOWI1N2E2ZWE1OWFmY2UyN2E2MjQwYjU1YS4uM2MzZDQ5ZTA1OGFiMTMxNzQ3
ZWI0OWJiMGM5M2EwZmQyOTQ1MThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
dXNwZW5kYWJsZVRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRp
bWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3Vz
cGVuZGFibGVUaW1lciA6IHByaXZhdGUgVGltZXJCYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBT
dXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5T
dXNwZW5kYWJsZVRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAKaW5kZXggYjljZTk4Y2M2Y2E1YzI0NTZjZGI5NGY1ZGM0MWI0ZDJiNTBlOThm
Ni4uNjUyMzExZDdhNTVmNTUwN2EwNWFhNDNiNjJjODAyMDg3MjJkYmFkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtNzMsNyArNzMsNyBA
QCB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6Zm9yRWFjaFVzZXJNZXNzYWdlSGFuZGxlcihG
dW5jdGlvbjx2b2lkKGNvbnN0IFVzZXJNZQogCiB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6
YWRkVXNlclNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1ZV9wdHI8VXNl
clNjcmlwdD4gdXNlclNjcmlwdCkKIHsKLSAgICBhdXRvJiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNl
clNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXNl
clNjcmlwdFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHNjcmlwdHNJ
bldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gbWFrZVVu
aXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgc2NyaXB0
c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtMTAwLDcgKzEw
MCw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0cyhET01X
cmFwcGVyV29ybGQmIHdvcmxkKQogCiB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNl
clN0eWxlU2hlZXQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1bmlxdWVfcHRyPFVzZXJT
dHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCwgVXNlclN0eWxlSW5qZWN0aW9uVGltZSBpbmplY3Rp
b25UaW1lKQogewotICAgIGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hl
ZXRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHls
ZVNoZWV0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc3R5bGVTaGVl
dHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJu
IG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7
CiAKICAgICBpZiAoaW5qZWN0aW9uVGltZSA9PSBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCmluZGV4IGYy
NTlhZWIxYTBhOWU1Y2U3YTEzNGYwZDEyNjllYzMxNGM5YTljMzEuLjMwNGQ5NGE3NWJmMzYxZDhk
ZDQ2ZjZhZmZhZmUzMWMzZWY4MmE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVs
RXZlbnREZWx0YUZpbHRlci5jcHAKQEAgLTQzLDkgKzQzLDkgQEAgV2hlZWxFdmVudERlbHRhRmls
dGVyOjp+V2hlZWxFdmVudERlbHRhRmlsdGVyKCkgPSBkZWZhdWx0Owogc3RkOjp1bmlxdWVfcHRy
PFdoZWVsRXZlbnREZWx0YUZpbHRlcj4gV2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKQog
ewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaGVlbEV2
ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2hlZWxFdmVudERl
bHRhRmlsdGVyTWFjPigpOwogI2Vsc2UKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNp
Y1doZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1do
ZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4
IDE0NDY2M2NhZTk1OTc5Y2ZjYzdjNGEyMjQyZTFkMTYxZDYxMDI5MjUuLjEzYzMxZjU3NjRiN2Iy
MjRhMmI3ZWE1NWFlMzNhNmIzOTg2Yjk2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01OTYsNyAr
NTk2LDcgQEAgdm9pZCBDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YW5pbWF0aW9uV2ls
bEJlUmVtb3ZlZChBbmltYXRpb25CYXNlJiBhbmltYXQKIH0KIAogQ1NTQW5pbWF0aW9uQ29udHJv
bGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcihGcmFtZSYgZnJhbWUpCi0gICAgOiBtX2RhdGEo
c3RkOjptYWtlX3VuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQor
ICAgIDogbV9kYXRhKG1ha2VVbmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+KGZy
YW1lKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDc0ZWVkYzk5NjZlOWY4MWFjYjk5NmNmMzc2
OTgzZGFiNjg1NTQwYzYuLmJhZWIyNDc2NTcxNjczN2I4NGExY2M4ZjE5ZGUwMTczZjM2N2U5OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAKQEAgLTExNyw5ICsxMTcsOSBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5p
cXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0Ns
aQogewogICAgIEFTU0VSVChmcm9tICYmIHRvKTsKICAgICBpZiAoZnJvbS0+c3R5bGUoKSAhPSB0
by0+c3R5bGUoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4o
KnRvKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKnRvKTsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KGJsZW5kKGZyb20tPmxvY2F0aW9u
KCksIHRvLT5sb2NhdGlvbigpLCBwcm9ncmVzcyksCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hh
ZG93RGF0YT4oYmxlbmQoZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNz
KSwKICAgICAgICAgYmxlbmQoZnJvbS0+cmFkaXVzKCksIHRvLT5yYWRpdXMoKSwgcHJvZ3Jlc3Mp
LAogICAgICAgICBibGVuZChmcm9tLT5zcHJlYWQoKSwgdG8tPnNwcmVhZCgpLCBwcm9ncmVzcyks
CiAgICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLT5zdHlsZSgpLCB0by0+c3R5bGUoKSwgcHJv
Z3Jlc3MpLApAQCAtOTc0LDE1ICs5NzQsMTUgQEAgY2xhc3MgUHJvcGVydHlXcmFwcGVyVmlzaXRl
ZEFmZmVjdGVkQ29sb3IgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZQogICAg
IFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwg
Y29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVy
U3R5bGU6OipzZXR0ZXIpKGNvbnN0IENvbG9yJiksCiAgICAgICAgIGNvbnN0IENvbG9yJiAoUmVu
ZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZp
c2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVydHlX
cmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFBy
b3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCi0gICAgICAgICwgbV92
aXNpdGVkV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9w
LCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKKyAgICAgICAgLCBtX3dyYXBwZXIobWFr
ZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQorICAg
ICAgICAsIG1fdmlzaXRlZFdyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4o
cHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAgewogICAgIH0KICAgICBQ
cm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3AsIE1h
eWJlSW52YWxpZENvbG9yVGFnLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgp
IGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAg
ICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZv
aWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAg
OiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVy
KHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3As
IGdldHRlciwgc2V0dGVyKSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91
bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0
ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3Bl
cnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCisgICAg
ICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52
YWxpZENvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAg
ICAgfQogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJT
dHlsZSogYikgY29uc3Qgb3ZlcnJpZGUKQEAgLTEyMjksMTkgKzEyMjksMTkgQEAgY2xhc3MgRmls
bExheWVyc1Byb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJC
YXNlIHsKICAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblg6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0
ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5
LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxM
YXllcjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRYT3JpZ2lu
LCBFZGdlOjpSaWdodCk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9
IG1ha2VVbmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAm
RmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXll
cjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRYT3JpZ2luLCBF
ZGdlOjpSaWdodCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblk6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25ZOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwg
JkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5
ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWU9yaWdpbiwg
RWRnZTo6Qm90dG9tKTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0g
bWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZG
aWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVy
OjpiYWNrZ3JvdW5kWU9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFlPcmlnaW4sIEVk
Z2U6OkJvdHRvbSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKLSAgICAgICAg
ICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5
ZXJQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmlsbExheWVyOjpzaXpl
TGVuZ3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3RoKTsKKyAgICAgICAgICAgIG1fZmlsbExh
eWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8
TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExheWVy
OjpzZXRTaXplTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZEltYWdlOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdy
YXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBw
ZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UpOwor
ICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxM
YXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjppbWFn
ZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3NzAsNyArMTc3MCw3IEBAIENTU1Byb3Bl
cnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkK
ICAgICAgICAgICAgIGxvbmdoYW5kV3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1fcHJvcGVydHlX
cmFwcGVyc1t3cmFwcGVySW5kZXhdLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fcHJv
cGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTaG9ydGhhbmRQ
cm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIFdURk1vdmUobG9uZ2hhbmRXcmFwcGVycykpKTsK
KyAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFNo
b3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdyYXBw
ZXJzKSkpOwogICAgICAgICBpbmRleEZyb21Qcm9wZXJ0eUlEKHByb3BlcnR5SUQpID0gYW5pbWF0
YWJsZUxvbmdoYW5kUHJvcGVydGllc0NvdW50ICsgaTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA3MDQ3ZTgz
ZGU3ODVkYjgxYjZkOTkwYTk0ODM3YmE3MWQ3MjgyOWEwLi44ZjBmNmJmNTNiMDNlMDhmNzAzMzE2
NmViOGM3NGQ2YmY5NzI4MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29u
dGVudFNlY3VyaQogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZGF0ZVNvdXJjZVNlbGYo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewogICAgIG1fc2VsZlNvdXJj
ZVByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKTsKLSAgICBtX3NlbGZTb3VyY2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1f
c2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2lu
LnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX3NlbGZTb3VyY2Ug
PSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNv
dXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQo
KSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFwcGx5UG9saWN5VG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlLmgKaW5kZXggYThmMWQ0ZjBiZGUxNGYxNGI4OGFhMzk0MGVkZDhjODk2MjYxZTNkZS4uYmJk
OTE4OWUyNDgzNGRhY2M4ZDdiYWUxNWNjNTgxNmNhMzIwY2YxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgK
QEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdCYgZGlyZWN0aXZlTGlzdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQogICAgICAgICA6IG1fbmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
LmNwcAppbmRleCBkZGJkOGNkZTI3ODBlOTJkYmEyMGUwYWJkOTljZjA0OTg0M2Y0YzRkLi5jMDE1
NmRkZjAxYzk0N2U1MDRiNTY5ZDBhNDExNjk4YzU1OGYzZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QoQ29udGVudFNlCiAK
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0PiBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVhdGUoQ29udGVudFNlY3VyaXR5UG9s
aWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpdHlQb2xpY3lI
ZWFkZXJUeXBlIHR5cGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UG9saWN5RnJvbSBmcm9tKQog
ewotICAgIGF1dG8gZGlyZWN0aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsKKyAgICBhdXRvIGRpcmVjdGl2ZXMg
PSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+KHBvbGljeSwg
dHlwZSk7CiAgICAgZGlyZWN0aXZlcy0+cGFyc2UoaGVhZGVyLCBmcm9tKTsKIAogICAgIGlmICgh
Y2hlY2tFdmFsKGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3Nj
cmlwdFNyYy5nZXQoKSkpKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb24KICAgICAgICAgbV9wb2xpY3kucmVwb3J0RHVwbGljYXRlRGlyZWN0aXZlKG5hbWUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRpcmVjdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKKyAgICBkaXJlY3RpdmUgPSBt
YWtlVW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YXBwbHlTYW5kYm94UG9saWN5
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzYW5kYm94UG9saWN5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAppbmRleCBjYWJk
MDEzOWU1M2QzOTNmNTE3MzUxMDViYjBiNzFmMWI4YzE2MGNhLi5kYmIwNmRlNTZkMDU3NDc3Mzdj
MTQ1OTcyZmI4MzAzNjVmMmExODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9D
b250ZW50Q2hhbmdlT2JzZXJ2ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBET01UaW1lcjsK
IGNsYXNzIEVsZW1lbnQ7CiAKIGNsYXNzIENvbnRlbnRDaGFuZ2VPYnNlcnZlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIoRG9jdW1lbnQm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5n
VGFuay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5oCmlu
ZGV4IGI2MjE4NGZlMTc5NDJkYTk0ODU5YTgwMmNlZmRlNzZlMjQyZDNlNGMuLmJiZjc5NDVhYWE0
OTlhNzZiN2UxMmFiM2M3NWQ1OTQ0MjFlNDVlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRE9NVGltZXI7CiAKIGNsYXNzIERPTVRpbWVySG9sZGluZ1Rhbmsgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERPTVRpbWVySG9sZGlu
Z1RhbmsoKTsKICAgICB+RE9NVGltZXJIb2xkaW5nVGFuaygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKaW5kZXgg
NGZkZjc1NmMwMjE5ODg1MzNiMmYxMjU1YzkxYTRlY2M5MTQ4NGZhNC4uYzA3YjEyNzY5Y2QwNGJh
N2IzMWY4OGM0NmE5ZjA2YjZhZDZiNDlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC03MCw2ICs3MCw3
IEBAIHN0YXRpYyBTdHJpbmcgZ2NUaW1lclN0cmluZyhNb25vdG9uaWNUaW1lIHRpbWVyRmlyZURh
dGUsIE1vbm90b25pY1RpbWUgbm93KQogc3RhdGljIGNvbnN0IGZsb2F0IGdGb250U2l6ZSA9IDE0
OwogCiBjbGFzcyBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmluYWwgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyKFJlc291cmNlVXNhZ2VPdmVybGF5JiBv
dmVybGF5KQogICAgICAgICA6IG1fb3ZlcmxheShvdmVybGF5KQpAQCAtMTMyLDcgKzEzMyw3IEBA
IGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlciBmaW5hbCA6IHB1YmxpYyBHcmFwaGlj
c0xheWVyQ2xpZW50IHsKIAogdm9pZCBSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0
aWFsaXplKCkKIHsKLSAgICBtX292ZXJsYXlQYWludGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNv
dXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsKKyAgICBtX292ZXJsYXlQYWludGVyID0g
bWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsKICAgICBtX3Bh
aW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUob3ZlcmxheSgpLnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1fb3ZlcmxheVBhaW50ZXIpOwog
ICAgIG1fcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIG1f
cGFpbnRMYXllci0+c2V0U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3JtYWxIZWlnaHQgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvUGFnZU1hYy5tbQppbmRleCBkN2FkZmZkNzJmOWZhOGZlOTdhZmNkYTA3MThk
ODNjNmUwOTA4NTBjLi4wODYzYWQyNjcyNWQ2NTU0NzUyYjdhYzIxNDhlZWQxYzZkZmMyM2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQYWdl
OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUmVmPFNj
aGVkdWxlUGFpcj4mJiBwYWlyKQogewogICAgIGlmICghbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMp
Ci0gICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTY2hl
ZHVsZVBhaXJIYXNoU2V0PigpOworICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IG1h
a2VVbmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycy0+YWRkKHBhaXIucHRyKCkpOwogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWlu
RnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5k
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaAppbmRl
eCBkY2RkOTUwNDhiZDk1OGFhNzQ0MGEwZmMzZDliY2U3ZGYyZjU0ODBmLi42NDc1Y2U1ZWJjOTA3
YWUxODgwYWYxNzFjMDczNmZmM2VjYjUwMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvVGV4dEluZGljYXRvcldpbmRvdy5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3MgVGV4
dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlvbiA6IHVpbnQ4X3QgewogI2lmIFBMQVRG
T1JNKE1BQykKIAogY2xhc3MgVGV4dEluZGljYXRvcldpbmRvdyB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dEluZGljYXRvcldpbmRv
dyk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggMzA2Y2ZlZDE5Y2U2ZDAw
YjYyYTg1MjQ5NzAwMjhiODA0NWZhZDgyMy4uMDBhZjM5NDc4ZGM3NWY3MDI5YzI0ODQ1NGVmMDFh
YjBjNmM3ZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcihQYWdlKiBwYWdlKQogICAgIDogU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFn
ZSkKICAgICAsIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXIoKnRoaXMsICZBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGxU
aW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUoc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQorICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUobWFr
ZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCmluZGV4
IDYzYmQ5NjM4YjYzYTFhMTFjYTQwZjM2NzIxMjlmNzE0MTBjNmZmMmUuLjNhYjY0MDY4MjY0YzUw
NDA4YmFiNGVlMzhkMmNjZDRhNjQxYzc4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBAIC0zNyw2ICszNyw3IEBA
IHN0cnVjdCBTY3JvbGxPZmZzZXRSYW5nZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3Ry
dWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFZlY3RvcjxUPiBob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgVmVjdG9y
PFQ+IHZlcnRpY2FsU25hcE9mZnNldHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4
IDc2NDBkNTVkOTZhM2YwOTU5YjkzMWVmMDQzM2VjMTVmYTIwN2RiZDQuLmM4OTBmOWViYTAwNGNh
ODc4MDE0MWI4NWNlZWUwMDU1NjJlMmU0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcApA
QCAtNzEsNyArNzEsNyBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpw
cmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXpl
LCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRp
YWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdw
b3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlh
bFZlbG9jaXR5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5p
dGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVk
KGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCmluZGV4IGJlOTlkMGVlNmEzZjA3ODlmYzRkN2Rj
NjkyODg1YjUyNDAwNDM4MDIuLjIxYzMxMWNkODliNzk0MDg0YTg0OTBkNWZjOWJhNTVhOTNiOWFl
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEZsb2F0
UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiAKIGNsYXNzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25z
dCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
VmVsb2NpdHkpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVOb2RlLmNwcAppbmRleCA5NjgyZDJjMWJjZWUzNzU3MTNjMzQ2ZDNlMzNjZDRkYzEzNWFm
Yzc4Li5iZTU3YzliODY5ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0MGM4MTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQo
UmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQ
YXJlbnQodGhpcyk7CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIG1fY2hpbGRyZW4g
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7
CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5n
U3RhdGVOb2RlPj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2Rl
KSk7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKENoaWxkTm9kZXMpOwogfQpAQCAtMTEyLDcgKzEx
Miw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZChSZWY8U2Nyb2xsaW5n
U3RhdGVOb2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pIHsK
ICAgICAgICAgQVNTRVJUKCFpbmRleCk7Ci0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1f
Y2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+
KCk7CiAgICAgfQogCiAgICAgaWYgKGluZGV4ID4gbV9jaGlsZHJlbi0+c2l6ZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNw
cAppbmRleCBmNjFlMjhlMGVjNTAzMDEyYjM3MmZiMjU1NjlhOGNiN2RkNTNhYTcwLi43MTU3ZTE2
ODYwZjQ5YzkxZGRhMzViYmM0ZWFmZTk4MTllYWNiZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKQEAgLTI5Myw3ICsy
OTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBTY3JvbGxpbmdTdGF0
ZVRyZWU6OmNvbW1pdChMYXllclJlcHJlc2VudGF0aQogICAgIH0KIAogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gY2xvbmVzIGFuZCByZXNldHMgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSwgYnV0IGxlYXZl
cyB0aGUgdHJlZSBzdHJ1Y3R1cmUgaW50YWN0LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxp
bmdTdGF0ZVRyZWU+IHRyZWVTdGF0ZUNsb25lID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdT
dGF0ZVRyZWU+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJl
ZVN0YXRlQ2xvbmUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKICAgICB0cmVl
U3RhdGVDbG9uZS0+c2V0UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbihwcmVmZXJyZWRMYXll
clJlcHJlc2VudGF0aW9uKTsKIAogICAgIGlmIChtX3Jvb3RTdGF0ZU5vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKaW5kZXgg
ZWE3NGUyY2E0MjQyOWE4ZTJiZTlmOWEzNzllMzY3ZGE0ZGRkYTNkMS4uNzI5NjE1YTY5ZjAxMjI2
MzE1MTQ3ZWNmZGI1NTI4YjAxOTlmMzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lk
IFNjcm9sbGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+JiYg
Y2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFt
X2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtl
VW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxk
cmVuLT5hcHBlbmQoV1RGTW92ZShjaGlsZE5vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMubW0KaW5kZXggMWM3YWI3NmExNTFlNjM1MGQ4YjYxNGMzNmQwNWJjZTY1
YzZjOTU4NC4uYjQzZWE5OTVmYWY2YjQ3MDMzNWZiZjA3YTIwODZhNmIzNWY3MGVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIHN0YXRp
YyBib29sIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9IHRydWU7
CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFs
T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBp
bml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFs
T2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRl
bnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9
CiAKIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVt
U2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ1BVTW9uaXRvci5oCmluZGV4IDcxZTQzZDNmM2I5NDYxMDYwOGNiZjExZGI1MTE1YmNiZWMw
NTQ4OTAuLjA4OGRmNTQzZTA0NzkxMTdjODM3YWZlMjIzYmJjYzU1MTQ4OGE3ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ1BVTW9uaXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoZG91YmxlKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgQ1BVTW9uaXRvcihTZWNv
bmRzIGNoZWNrSW50ZXJ2YWwsIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyJiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKaW5kZXggZTYwZjc3MTNmNjJiYjI1NjJhODQyODg4Yzdm
YzYyOWYyYzU0N2YzMy4uNmIyODhlMWUxN2U0NDhiYjg2ZmI5ZWNlMjljYzllNWJkYjlkZDhkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCkBAIC00Miw2ICs0Miw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVNb25pdG9yIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEZpbGVDaGFuZ2VUeXBlIHsg
TW9kaWZpY2F0aW9uLCBSZW1vdmFsIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmlu
ZGV4IDRmZjk4MDRlYWVjMTMwNmIyNjhhMjQ1ZjI3NzFhMTEyZTI4ZDJhMWUuLjNmYzQzMWE0NzQ2
MWQ4YzQ0M2RiNGI2MjJkNmVhOTA2MzRkYTBmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmNwcApAQCAtMjg4LDkgKzI4OCw5IEBAIExlbmd0aCBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNM
ZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxj
IGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPENhbGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KDIpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAg
bGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxl
bmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJl
c3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3Qp
OworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25M
ZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBl
bmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7CisgICAgYXV0byBv
cCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3Rocyks
IENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25W
YWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKQEAgLTMwMiw3
ICszMDIsNyBAQCBzdGF0aWMgTGVuZ3RoIGJsZW5kTWl4ZWRUeXBlcyhjb25zdCBMZW5ndGgmIGZy
b20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncgogICAgIGlmIChwcm9ncmVzcyA+PSAx
LjApCiAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgCi0gICAgYXV0byBibGVuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aD4oZnJvbSwgdG8sIHByb2dyZXNz
KTsKKyAgICBhdXRvIGJsZW5kID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3Ro
Pihmcm9tLCB0bywgcHJvZ3Jlc3MpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1
ZTo6Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCmluZGV4IDU1
MmIxMmY2YzFlOGNkYTZmZmVhNjQ3ODY5MjIyOWVhOTNlZDE3Y2EuLjhlMzVlMzA0YzFlNzI1N2Jj
NjRjNmFkMTBlZGRlOTY0MjA0ZTY1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjaWYgKCFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKSkg
fHwgIUhBVkUoTUVESUFfUExBWUVSKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVy
Q2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29t
bWFuZExpc3RlbmVyPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1h
bmRMaXN0ZW5lcj4oY2xpZW50KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbi5oCmluZGV4IDJlNWY2M2JjZWYyYmZkZmNmZjkyMTZkOTg2YjBmNDM2
MGM2ODBiNDEuLmI3YzFkMjRlYjQ5ZTVhNTVmNjkxZjA2Y2U5ZTFkODBiMjFiY2NhZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBA
IGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIAogY2xhc3MgU2Nyb2xs
QW5pbWF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5TY3JvbGxBbmltYXRpb24oKSB7IH07CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChT
Y3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IC8qIHN0ZXAgKi8s
IGZsb2F0IC8qIG11bHRpcGxpZXIgKi8pIHsgcmV0dXJuIHRydWU7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggZDkxNTRkOTM1MWEyZjMzNjZkZGQw
NWZlNjBmZGViYjljMWExZTczOC4uZjhlZGM4ODJkN2YzNjAwMmUxOTg1MTBkODFiOGViMzRhYTUw
MDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIUVOQUJMRShTTU9PVEhfU0NS
T0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykKIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
Y3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCBjNjJhZDgzNGU2YjM4MDhlMWVj
ZGE4YmExMzEyZDNkOTU3MDVlOTZhLi45NmQwZjMwMGIzNDE4ZTYwODIxZGEyZGEyYTY0MTg5YzRk
ZWUwYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBA
IC04MCw3ICs4MCw3IEBAIFNjcm9sbEFuaW1hdG9yJiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsQW5p
bWF0b3IoKSBjb25zdAogewogICAgIGlmICghbV9zY3JvbGxBbmltYXRvcikgewogICAgICAgICBp
ZiAodXNlc01vY2tTY3JvbGxBbmltYXRvcigpKSB7Ci0gICAgICAgICAgICBtX3Njcm9sbEFuaW1h
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+KGNvbnN0X2Nhc3Q8U2Ny
b2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKKyAg
ICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9j
az4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3Nh
Z2UobWVzc2FnZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlCkBAIC00MzUsNyAr
NDM1LDcgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFzTGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBj
b25zdAogU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxlQXJlYTo6
ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKIHsKICAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQot
ICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcE9m
ZnNldHNJbmZvPExheW91dFVuaXQ+PigpOworICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IG1h
a2VVbmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PigpOwogICAgIHJldHVy
biAqbV9zbmFwT2Zmc2V0c0luZm87CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRk
ZW5UZXJtaW5hdGlvbi5oCmluZGV4IDcyYjAwNDUxMzE0MmM4ZjRlOTVkZjIyODE4YzNkZGMxODBh
YWVjZWQuLjBkNzRiMTZlNTkyNTk4YWI4M2IwYzhjMGViNTRiNDQ2ZGZkMzhkMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaApAQCAtNDIsNiArNDIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIGNsYXNzIFN1ZGRlblRlcm1pbmF0
aW9uRGlzYWJsZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoU3VkZGVuVGVybWluYXRpb25EaXNhYmxlcik7CiAgICAgcHVi
bGljOgogICAgICAgICBTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYTI4MDEwZWNmZTVhMzY3YWQ5
ZDBiMjlhMjAwNTYzYTBmNTYxZDU2MC4uMjdhNzM2NDE2YmEwNGMwNTNjMmU3N2RiMmM1NTgxNDQ0
MGQyZjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5j
cHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUaHJlYWRHbG9i
YWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKLSAgICA6IG1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycyhzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnM+KCkpCisgICAgOiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMobWFrZVVuaXF1
ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQogICAgICwgbV9ldmVudE5hbWVz
KEV2ZW50TmFtZXM6OmNyZWF0ZSgpKQotICAgICwgbV90aHJlYWRUaW1lcnMoc3RkOjptYWtlX3Vu
aXF1ZTxUaHJlYWRUaW1lcnM+KCkpCi0gICAgLCBtX3F1YWxpZmllZE5hbWVDYWNoZShzdGQ6Om1h
a2VfdW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkKKyAgICAsIG1fdGhyZWFkVGltZXJzKG1h
a2VVbmlxdWU8VGhyZWFkVGltZXJzPigpKQorICAgICwgbV9xdWFsaWZpZWROYW1lQ2FjaGUobWFr
ZVVuaXF1ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9p
c01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKLSAgICAsIG1fY2FjaGVkQ29udmVy
dGVySUNVKHN0ZDo6bWFrZV91bmlxdWU8SUNVQ29udmVydGVyV3JhcHBlcj4oKSkKKyAgICAsIG1f
Y2FjaGVkQ29udmVydGVySUNVKG1ha2VVbmlxdWU8SUNVQ29udmVydGVyV3JhcHBlcj4oKSkKIHsK
ICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNhbGxlZCBvbiB0aGUgbWFp
biB0aHJlYWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBvbgogICAgIC8vIGFueSBvdGhlciB0aHJlYWQs
IGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0aGlzIG1ha2VzIHRoaXMgYSBj
b252ZW5pZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKaW5k
ZXggMmY4OTJkNmIxOWFiYTQyMzBlOTI0Yzc2MTg3MzhmYzZjYjQ4ZjdlYy4uZTcwZDQ2ZDBiOWYy
NDA3ZjkwODU0OGZhOGYyZTk4YzlkYTQ1NjNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBBdWRpb0J1czo6QXVkaW9CdXMo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGxlbmd0aCwgYm9vbCBhbGxvY2F0ZSkK
ICAgICBtX2NoYW5uZWxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVscyk7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7
Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8gc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b0NoYW5uZWw+KGxlbmd0aCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4obnVsbHB0
ciwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byBjaGFubmVsID0gYWxsb2NhdGUgPyBtYWtlVW5pcXVl
PEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihudWxscHRy
LCBsZW5ndGgpOwogICAgICAgICBtX2NoYW5uZWxzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGNo
YW5uZWwpKTsKICAgICB9CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIEF1ZGlvQnVzOjpjb3B5
V2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZsb2F0KiBsYXN0TWl4R2Fp
biwgZgogCiAgICAgaWYgKGZyYW1lc1RvRGV6aXBwZXIpIHsKICAgICAgICAgaWYgKCFtX2Rlemlw
cGVyR2FpblZhbHVlcy5nZXQoKSB8fCBtX2RlemlwcGVyR2FpblZhbHVlcy0+c2l6ZSgpIDwgZnJh
bWVzVG9EZXppcHBlcikKLSAgICAgICAgICAgIG1fZGV6aXBwZXJHYWluVmFsdWVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6aXBwZXIpOworICAgICAgICAg
ICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZnJh
bWVzVG9EZXppcHBlcik7CiAKICAgICAgICAgZmxvYXQqIGdhaW5WYWx1ZXMgPSBtX2RlemlwcGVy
R2FpblZhbHVlcy0+ZGF0YSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJh
bWVzVG9EZXppcHBlcjsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuaAppbmRleCAyMTczZGM5MzgzZTRhMzNjMWI1OTM0NzY1YTFlNWIxMDc0NmYwM2ExLi5iYmIz
ZDJhY2QyMmM1NzJiYzkyM2E0OGIxZjcwYWY4NTRjMGNiMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8gQW4gQXVkaW9CdXMgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2Ygb25lIG9yIG1v
cmUgQXVkaW9DaGFubmVscy4KIC8vIFRoZSBkYXRhIGxheW91dCBpcyAicGxhbmFyIiBhcyBvcHBv
c2VkIHRvICJpbnRlcmxlYXZlZCIuCiAvLyBBbiBBdWRpb0J1cyB3aXRoIG9uZSBjaGFubmVsIGlz
IG1vbm8sIGFuIEF1ZGlvQnVzIHdpdGggdHdvIGNoYW5uZWxzIGlzIHN0ZXJlbywgZXRjLgotY2xh
c3MgQXVkaW9CdXMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9CdXM+IHsKK2Ns
YXNzIEF1ZGlvQnVzIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQnVz
PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9CdXMpOwogcHVibGljOgogICAgIGVu
dW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAppbmRl
eCBiYmMxMzU3YTNkNTNmMDU0OGY4ODc4ZTU4N2RiN2Q2ZGQxYzRmYWQ4Li43Yjk4OTNkMzhhYzQx
NzQ1MzE3NDFiNzcyNGM2ZmYyYWJkMDFkZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0NoYW5uZWwuaApAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIEFuIEF1ZGlvQ2hhbm5lbCByZXByZXNlbnRzIGEgYnVmZmVyIG9mIG5vbi1pbnRl
cmxlYXZlZCBmbG9hdGluZy1wb2ludCBhdWRpbyBzYW1wbGVzLgogLy8gVGhlIFBDTSBzYW1wbGVz
IGFyZSBub3JtYWxseSBhc3N1bWVkIHRvIGJlIGluIGEgbm9taW5hbCByYW5nZSAtMS4wIC0+ICsx
LjAKLWNsYXNzIEF1ZGlvQ2hhbm5lbCB7CitjbGFzcyBBdWRpb0NoYW5uZWwgZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlv
Q2hhbm5lbCk7CiBwdWJsaWM6CiAgICAgLy8gTWVtb3J5IGNhbiBiZSBleHRlcm5hbGx5IHJlZmVy
ZW5jZWQsIG9yIGNhbiBiZSBpbnRlcm5hbGx5IGFsbG9jYXRlZCB3aXRoIGFuIEF1ZGlvRmxvYXRB
cnJheS4KQEAgLTU2LDcgKzU3LDcgQEAgY2xhc3MgQXVkaW9DaGFubmVsIHsKICAgICAgICAgLCBt
X3Jhd1BvaW50ZXIoMCkKICAgICAgICAgLCBtX3NpbGVudCh0cnVlKQogICAgIHsKLSAgICAgICAg
bV9tZW1CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obGVuZ3RoKTsK
KyAgICAgICAgbV9tZW1CdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obGVuZ3Ro
KTsKICAgICB9CiAKICAgICAvLyBBICJibGFuayIgYXVkaW8gY2hhbm5lbCAtLSBtdXN0IGNhbGwg
c2V0KCkgYmVmb3JlIGl0J3MgdXNlZnVsLi4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvRklGTy5oCmluZGV4IDc1YzlhYmQ3NDk0ZDM1ODIyZjgyYWNlN2NjZDBkODU2ODYxMWQ3
ZWEuLjBmNDM4ZGQ3ZDBmYTU5ZmI2NDRkNGRmNTcyZjU1OWZkNjYzMDhiZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCkBAIC0zMyw3ICszMyw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9GSUZPIHsKK2NsYXNzIEF1ZGlvRklGTyBm
aW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gQ3Jl
YXRlIGEgRklGTyBsYXJnZSBlbm91Z2ggdG8gaG9sZCB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRh
dGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLgogICAgIEF1ZGlvRklGTyh1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKaW5kZXggYmZiZTk4M2E1NzVhNDU0YWFj
MmIwYzNjYmU0NTc1ZWZhZjZiNzhkNy4uZDc0OGZhNDEzODczNzlkYjM5NWJlYWU2NWY4ODJiYTI1
OGU5ZmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Q
dWxsRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJ
Rk8uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUgRklGTyB3
aWxsIGFzayB0aGUgcHJvdmlkZXIgZm9yIG1vcmUgZGF0YSB3aGVuIG5lY2Vzc2FyeSB0byBmdWxm
aWxsIGEgcmVxdWVzdC4gQ29udHJhc3QgdGhpcwogLy8gd2l0aCBhICJwdXNoIiBGSUZPLCB3aGVy
ZSB0aGUgc2VuZGVyIHB1c2hlcyBkYXRhIHRvIHRoZSBGSUZPIHdoaWNoIHdpbGwgaXRzZWxmIHB1
c2ggdGhlIGRhdGEgdG8KIC8vIHRoZSByZWNlaXZlciB3aGVuIHRoZSBGSUZPIGlzIGZ1bGwuCi1j
bGFzcyBBdWRpb1B1bGxGSUZPIHsKK2NsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhh
dCBnZXRzIGRhdGEgZnJvbSB8cHJvdmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdlIGVub3Vn
aCB0byBob2xkCiAgICAgLy8gfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJP
ZkNoYW5uZWxzfCBjaGFubmVscy4gVGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBiZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCmluZGV4
IDg2OTA2YmE1MTI0NzU4NjkyYzY4M2UyYmM5MDM4MzUwMWVhYjhmZDkuLjI4NGMwNTQ5NDMyNTkz
NDRlYWNlMzI0MThhZGE5YjgzMDNkYTJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgY29uc3QgZG91
YmxlIEF1ZGlvUmVzYW1wbGVyOjpNYXhSYXRlID0gOC4wOwogQXVkaW9SZXNhbXBsZXI6OkF1ZGlv
UmVzYW1wbGVyKCkKICAgICA6IG1fcmF0ZSgxLjApCiB7Ci0gICAgbV9rZXJuZWxzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgbV9rZXJu
ZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAgICAg
bV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIDAsIGZhbHNlKTsKIH0KIApAQCAtNDcs
NyArNDcsNyBAQCBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIodW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscykKICAgICA6IG1fcmF0ZSgxLjApCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgICAgIG1f
a2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwog
CiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIDAs
IGZhbHNlKTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBdWRpb1Jlc2FtcGxlcjo6Y29uZmln
dXJlQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICAvLyBGaXJzdCBkZWFs
IHdpdGggYWRkaW5nIG9yIHJlbW92aW5nIGtlcm5lbHMuCiAgICAgaWYgKG51bWJlck9mQ2hhbm5l
bHMgPiBjdXJyZW50U2l6ZSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjdXJyZW50U2l6
ZTsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgICAgIG1fa2VybmVscy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOworICAgICAg
ICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0
aGlzKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fa2VybmVscy5yZXNpemUobnVtYmVyT2ZDaGFu
bmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
UmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxl
ci5oCmluZGV4IGQxMWZhOTNlYmFhY2JkOGU1NmI5OGRhMzM3NWZhZTE0MDY4ZTNiYzkuLjIwMTZi
YWZmN2M4OGRmMThhZjVkMzUyYzMwMWY1ZmY0Mzc2ODlmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaApAQCAtMzcsNyArMzcsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgYXVkaW8gc3RyZWFtIG1heSBiZSBzaW5nbGUgb3IgbXVs
dGktY2hhbm5lbC4KIC8vIFRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHRzIHRvIHNpbmds
ZS1jaGFubmVsIChtb25vKS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXIgeworY2xhc3MgQXVkaW9S
ZXNhbXBsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEF1ZGlvUmVzYW1wbGVyKCk7CiAgICAgQXVkaW9SZXNhbXBsZXIodW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Jlc2FtcGxlcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9SZXNhbXBsZXJLZXJuZWwuaAppbmRleCA5OWQ4NzdiYjdjZDY4ZGJiMDUzNjc3YTA5N2NkNGUw
ZWFjODNiNzgyLi44YWMyYmFhNDJjNTg3YTM0ODVkNTM0MDIzYWRlZTI0Zjg4MzI2ZWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5l
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2Vy
bmVsLmgKQEAgLTM0LDcgKzM0LDkgQEAgY2xhc3MgQXVkaW9SZXNhbXBsZXI7CiAvLyBBdWRpb1Jl
c2FtcGxlcktlcm5lbCBkb2VzIHJlc2FtcGxpbmcgb24gYSBzaW5nbGUgbW9ubyBjaGFubmVsLgog
Ly8gSXQgdXNlcyBhIHNpbXBsZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmb3IgZ29vZCBwZXJmb3Jt
YW5jZS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgeworY2xhc3MgQXVkaW9SZXNhbXBs
ZXJLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1ZGlvUmVzYW1wbGVyS2VybmVsKTsKIHB1YmxpYzoKICAgICBBdWRp
b1Jlc2FtcGxlcktlcm5lbChBdWRpb1Jlc2FtcGxlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAppbmRleCA1YzFiZjJhMzE3MzQyZWEzZTUy
OTJhNzk3ZThlNjZlMWE4ZGEzOTdjLi5iNWZiNTgwNjQ4ZjljZjhlYzRmMTg2ZmFmYTQ4ZTEzZmRj
ZjJmNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lv
bi5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZl
KGJvb2wgYWN0aXZlKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogY2xhc3MgQXVkaW9TZXNzaW9u
UHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiB9OwogCiBBdWRpb1Nlc3Np
b246OkF1ZGlvU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
U2Vzc2lvbi5oCmluZGV4IDE3ZGE4MWIzYjc1ZDdhNWFhYjgyMTQ4NmI3YzFlMzNmMWE4ZGY0Njku
LmU3MDA4MjJmZjFmZWViZDc4MjlhZWM3NTBjY2U0MGE2MGI5MjU2NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC00NCw3ICs0NCw4IEBAIGVu
dW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdCB7CiAgICAgTG9uZ0Zvcm1WaWRl
bwogfTsKIAotY2xhc3MgQXVkaW9TZXNzaW9uIHsKK2NsYXNzIEF1ZGlvU2Vzc2lvbiBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QXVkaW9TZXNzaW9uKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXVkaW9T
ZXNzaW9uJiBzaGFyZWRTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9CaXF1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVh
ZC5oCmluZGV4IGJiNzIxYTIzYTdmY2M3NzRiNjA5M2U0ZWE5MDhjNjBlODkwODEwN2MuLjcxMzQ5
NGM5MTRkMzM3ODY0M2UyOWE4MGJjMzllNzczNjZkZjE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0JpcXVhZC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vICAgIGxvd3Bhc3MsIGhpZ2hwYXNzLCBzaGVsdmluZywgcGFyYW1ldGVyaWMsIG5vdGNoLCBh
bGxwYXNzLCAuLi4KIAogY2xhc3MgQmlxdWFkIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBCaXF1YWQoKTsKICAgICB+QmlxdWFkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKaW5kZXggZDgxYzA1ZGM2OGU2ZTJmYTIxZDI0NWRk
MTM3YjRmMTc4YTIxMjBiNC4uYTdhY2EzYTRjNTRkMjc0YjNhYTNkNDBhZDlkMTQzZWJkZmM0NWZj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaApAQCAtMzUsNyArMzUsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbmUgZ2FpbiBpcyBkZWZpbmVkIGFjY29yZGluZyB0
byB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24KIAotY2xhc3MgQ29uZUVmZmVjdCB7CitjbGFzcyBD
b25lRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBDb25lRWZmZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0Rlbm9ybWFsRGlzYWJsZXIuaAppbmRleCA2ZTlmNGUwMWRhZTZkNDVkMDIxMTFkNWQ1YjEyOGVm
Mzg4NmIyMjQyLi5lMGIzZWZkODBmNzhmZmFhMzA2NTczMzIzMTQ3MDJkYzczYTJmMDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCkBA
IC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWZkZWYgSEFW
RV9ERU5PUk1BTAotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBEZW5vcm1hbERpc2Fi
bGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBE
ZW5vcm1hbERpc2FibGVyKCkKICAgICAgICAgICAgIDogbV9zYXZlZENTUigwKQpAQCAtMTAzLDcg
KzEwNCw4IEBAIGNsYXNzIERlbm9ybWFsRGlzYWJsZXIgewogCiAjZWxzZQogLy8gRklYTUU6IGFk
ZCBpbXBsZW1lbnRhdGlvbnMgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMgYW5kIGNvbXBpbGVycwot
Y2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBEZW5vcm1hbERpc2FibGVyIGZpbmFsIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEZW5vcm1hbERpc2Fi
bGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rp
cmVjdENvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29u
dm9sdmVyLmgKaW5kZXggNmYyZmFmNDBlNjFiZjZlMzJhNGY0OTk5NzY1YzllMWJiNTE5NDFhOC4u
NzgzMDhjZTE5OTk5OWJiMWQ2ODBiYjNiN2UyM2FlMDRjZDdjYjIwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKQEAgLTMzLDcgKzMzLDkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEaXJlY3RDb252b2x2ZXIgeworY2xh
c3MgRGlyZWN0Q29udm9sdmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXJlY3RDb252b2x2ZXIpOwogcHVibGljOgogICAg
IGV4cGxpY2l0IERpcmVjdENvbnZvbHZlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaAppbmRleCA5MWQzNDliOTdlNjI3NzMz
MmQ3NjMxYTg4NDQyNmIxNjY4ZGNmMjgzLi5iM2ViNzc5NzNjZmE0Nzk1ZjE1MDUzNjliN2U0YjJm
ODlmZmI2YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKQEAg
LTQwLDcgKzQwLDggQEAgZW51bSBjbGFzcyBEaXN0YW5jZU1vZGVsVHlwZSB7CiAgICAgRXhwb25l
bnRpYWwKIH07CiAKLWNsYXNzIERpc3RhbmNlRWZmZWN0IHsKK2NsYXNzIERpc3RhbmNlRWZmZWN0
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEaXN0
YW5jZUVmZmVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9Eb3duU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBs
ZXIuaAppbmRleCBmNGI0MjAxN2VlNzYyN2NhZDY1NmJmZjQ1N2FhZTk4OTQ4MDE0YmYyLi45NTcw
Yjg5MWM5N2ZmYTkxMWEwMTEzNDAwM2I0ZmRjYjVmNzZmOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAvLyBEb3duU2FtcGxlciBkb3duLXNhbXBsZXMgdGhlIHNvdXJjZSBzdHJl
YW0gYnkgYSBmYWN0b3Igb2YgMnguCiAKLWNsYXNzIERvd25TYW1wbGVyIHsKK2NsYXNzIERvd25T
YW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBEb3duU2FtcGxlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKaW5k
ZXggYjI1NTE4ZDg4MGE4ZDJkOTk0YTc2OTZiOGZhZGE5ZTU1NDhjMjllYi4uNTEzNzk5YTg1MTJm
NDI3YjRlNGI4ZDliMjk0NWE5NGQzNDkxODc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCkBAIC0yNzEsOCArMjcxLDgg
QEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscykKICAgICBtX3ByZUZpbHRlclBhY2tzLmNsZWFyKCk7CiAgICAgbV9w
b3N0RmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIG1fcHJlRmlsdGVyUGFja3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7Ci0gICAgICAgIG1fcG9zdEZp
bHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkp
OworICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFplcm9Qb2xlRmls
dGVyUGFjazQ+KCkpOworICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1
ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAgICB9CiAKICAgICBtX3NvdXJjZUNoYW5uZWxz
ID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCmlu
ZGV4IGVmOGMwOTNhMWI5NjUzMjI5ZDc5OWYxYTZiMjkyYWZhZGJkYWJhZDEuLjgyMmM5MzFmMzhj
ZTBlYzhkYzYyODJmMGY4YzM0M2FmNjc3Zjk4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCkBAIC00Myw4ICs0Myw5IEBAIGNs
YXNzIEF1ZGlvQnVzOwogLy8gb2YgdGhlIGxvdWRlc3QgcGFydHMgb2YgdGhlIHNpZ25hbCBhbmQg
cmFpc2VzIHRoZSB2b2x1bWUgb2YgdGhlIHNvZnRlc3QgcGFydHMsCiAvLyBtYWtpbmcgdGhlIHNv
dW5kIHJpY2hlciwgZnVsbGVyLCBhbmQgbW9yZSBjb250cm9sbGVkLgogCi1jbGFzcyBEeW5hbWlj
c0NvbXByZXNzb3IgeworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yIGZpbmFsIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEeW5hbWljc0Nv
bXByZXNzb3IpOwogcHVibGljOgogICAgIGVudW0gewogICAgICAgICBQYXJhbVRocmVzaG9sZCwK
QEAgLTk1LDkgKzk2LDEwIEBAIGNsYXNzIER5bmFtaWNzQ29tcHJlc3NvciB7CiAgICAgZmxvYXQg
bV9sYXN0QW5jaG9yOwogICAgIGZsb2F0IG1fbGFzdEZpbHRlclN0YWdlR2FpbjsKIAotICAgIHR5
cGVkZWYgc3RydWN0IHsKKyAgICBzdHJ1Y3QgWmVyb1BvbGVGaWx0ZXJQYWNrNCB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgWmVyb1BvbGUgZmlsdGVy
c1s0XTsKLSAgICB9IFplcm9Qb2xlRmlsdGVyUGFjazQ7CisgICAgfTsKIAogICAgIC8vIFBlci1j
aGFubmVsIGVtcGhhc2lzIGZpbHRlcnMuCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJv
UG9sZUZpbHRlclBhY2s0Pj4gbV9wcmVGaWx0ZXJQYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCmlu
ZGV4IDczNGIwNjZjZGE0OGJjMmM3YTc5ZWRmNTA3ZDA2YzA1NmM3MGEwOTAuLmFmZWRiN2I0Y2Qw
YTVhNjFkMWE5ZmUyNzhjMzQwMzgzZjk4ZTIxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcApAQCAt
NzYsNyArNzYsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0TnVtYmVyT2ZD
aGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogCiAgICAgbV9wcmVEZWxheUJ1ZmZl
cnMuY2xlYXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVs
czsgKytpKQotICAgICAgICBtX3ByZURlbGF5QnVmZmVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVzKSk7CisgICAgICAgIG1fcHJlRGVs
YXlCdWZmZXJzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oTWF4UHJlRGVsYXlG
cmFtZXMpKTsKIH0KIAogdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5
VGltZShmbG9hdCBwcmVEZWxheVRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCmluZGV4IGI3YmNlYTJmYWZk
ODk5NmNhNTI4YjBiNWRhYjQ5Y2I4ODk1OGRjYzQuLmUxMWY0N2JhYWYwYmM2YzVkMGNhN2UzZDcy
MDA4MjYzOWQyNzBjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCkBAIC0zNSw3ICszNSw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRHluYW1pY3NDb21wcmVzc29yS2VybmVsIHsKK2Ns
YXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRHluYW1pY3NDb21wcmVzc29yS2VybmVs
KGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmgKaW5kZXggOGNm
NTk5MTc5NWYzZjFmNjNlMjgxZDllMTZhY2FmM2Q3YTU3YTVkYS4uNGU0NjNiMTI4MWE3ZmEzYmIz
OTdhNmIwNjVjZTAzM2NjYmY5YWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIC8vIENvbW1vbiB0eXBlIG9mIHN0ZXJlbyBwYW5uZXIgYXMgZm91bmQgaW4gbm9y
bWFsIGF1ZGlvIG1peGluZyBlcXVpcG1lbnQuCiAKLWNsYXNzIEVxdWFsUG93ZXJQYW5uZXIgOiBw
dWJsaWMgUGFubmVyIHsKK2NsYXNzIEVxdWFsUG93ZXJQYW5uZXIgZmluYWwgOiBwdWJsaWMgUGFu
bmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFcXVhbFBvd2VyUGFubmVyKGZsb2F0IHNhbXBs
ZVJhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRD
b252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5o
CmluZGV4IDQ1NDJiNmZiMjU3ODU0OTVhYjIwNmFiYzNjOTBjNzViYzJmMTZlYTAuLjM4NjIyN2Yx
OTcwNGFmZDc5MmUzNjYyMmJkZGE5YzFhY2VhNzUxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgRkZUQ29udm9sdmVyIHsKK2NsYXNzIEZGVENvbnZvbHZlciBm
aW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRkZUQ29udm9sdmVyKTsKIHB1YmxpYzoKICAgICAvLyBmZnRTaXplIG11c3QgYmUgYSBw
b3dlciBvZiB0d28KICAgICBGRlRDb252b2x2ZXIoc2l6ZV90IGZmdFNpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCmluZGV4IDRjMDJiNjk5MmIwNjM4M2I4
MDM1NzM3ODc4ZGJmNjVhMjZmYjljMzEuLjRjMTUyMDY3ZDQ0YWM0Yjg1NDE5MjFhYWVkMjk1OTgy
Yjk2OTM3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBGRlRGcmFtZTo6ZG9QYWRkZWRGRlQoY29uc3QgZmxvYXQq
IGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIAogc3RkOjp1bmlxdWVfcHRyPEZGVEZyYW1lPiBGRlRG
cmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lMSwgY29u
c3QgRkZURnJhbWUmIGZyYW1lMiwgZG91YmxlIHgpCiB7Ci0gICAgYXV0byBuZXdGcmFtZSA9IHN0
ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZyYW1lMS5mZnRTaXplKCkpOworICAgIGF1dG8gbmV3
RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKIAogICAgIG5l
d0ZyYW1lLT5pbnRlcnBvbGF0ZUZyZXF1ZW5jeUNvbXBvbmVudHMoZnJhbWUxLCBmcmFtZTIsIHgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCmluZGV4
IDc1N2JjZmE0YjZhZWZkNzBlYmFlODY1NDg3MjVmYTQwNjI5YzZlOWUuLmE1MTkzNDk4MTUwNDUy
NmQ2ZmM2NGQ0NWI5NzkwYjM3ODEwM2E0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZEYXRhYmFzZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSFJURktlcm5lbDsKIAotY2xhc3MgSFJURkRhdGFiYXNlIHsKK2NsYXNzIEhS
VEZEYXRhYmFzZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSFJURkRhdGFiYXNlKTsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCmluZGV4IGY0
NWJlODQ3Y2U3MTBkY2VkYTJlMGVjMTA2Yjc1YmYyNjg1Nzg5Y2QuLmE0NzRhNzBjNDA4NTJhZTJl
MWY5ZjU4YTQ5YTAwMDM2MTU4MGIzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lk
IEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZCgpCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSkgewogICAgICAgICAvLyBMb2FkIHRoZSBk
ZWZhdWx0IEhSVEYgZGF0YWJhc2UuCi0gICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gc3RkOjptYWtl
X3VuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKKyAgICAgICAgbV9o
cnRmRGF0YWJhc2UgPSBtYWtlVW5pcXVlPEhSVEZEYXRhYmFzZT4obV9kYXRhYmFzZVNhbXBsZVJh
dGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RWxldmF0aW9uLmNwcAppbmRleCBjODRhYjk3NTFhMTQ1OTg5YTAzNzdmYWQxZjRhNzVlOGYxN2Uy
YjI0Li42MDUyMzJjZDFhOTljOTIzM2Q5YWQxMDQ5YmEzMDdlMjE3NzM4ZmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcApAQCAtMjQ0LDgg
KzI0NCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpj
cmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViCiAgICAgaWYgKCFpc0VsZXZhdGlvbkdv
b2QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKLSAgICBhdXRvIGtlcm5lbExp
c3RMID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11
dGhzKTsKLSAgICBhdXRvIGtlcm5lbExpc3RSID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVs
TGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RMID0gbWFr
ZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRv
IGtlcm5lbExpc3RSID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6
aW11dGhzKTsKIAogICAgIC8vIExvYWQgY29udm9sdXRpb24ga2VybmVscyBmcm9tIEhSVEYgZmls
ZXMuCiAgICAgaW50IGludGVycG9sYXRlZEluZGV4ID0gMDsKQEAgLTI3NCw3ICsyNzQsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3Vi
amVjdChjb25zdCBTdHJpbmcmIHN1YgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBX
VEZNb3ZlKGtlcm5lbExpc3RSKSwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShr
ZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGlj
ZXMoSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjEsIEhSVEZFbGV2YXRpb24qIGhydGZFbGV2
YXRpb24yLCBmbG9hdCB4LCBmbG9hdCBzYW1wbGVSYXRlKQpAQCAtMjg1LDggKzI4NSw4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVy
cG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgICAgIAogICAgIEFTU0VSVCh4ID49IDAuMCAmJiB4
IDwgMS4wKTsKICAgICAKLSAgICBhdXRvIGtlcm5lbExpc3RMID0gc3RkOjptYWtlX3VuaXF1ZTxI
UlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKLSAgICBhdXRvIGtlcm5lbExp
c3RSID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11
dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RMID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4o
TnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RSID0gbWFrZVVuaXF1
ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKIAogICAgIEhSVEZLZXJu
ZWxMaXN0KiBrZXJuZWxMaXN0TDEgPSBocnRmRWxldmF0aW9uMS0+a2VybmVsTGlzdEwoKTsKICAg
ICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdFIxID0gaHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExp
c3RSKCk7CkBAIC0zMDIsNyArMzAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+
IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWwKICAgICAv
LyBJbnRlcnBvbGF0ZSBlbGV2YXRpb24gYW5nbGUuCiAgICAgZG91YmxlIGFuZ2xlID0gKDEuMCAt
IHgpICogaHJ0ZkVsZXZhdGlvbjEtPmVsZXZhdGlvbkFuZ2xlKCkgKyB4ICogaHJ0ZkVsZXZhdGlv
bjItPmVsZXZhdGlvbkFuZ2xlKCk7CiAgICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIp
LCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xlKSwgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVs
TGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xlKSwgc2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQg
SFJURkVsZXZhdGlvbjo6Z2V0S2VybmVsc0Zyb21BemltdXRoKGRvdWJsZSBhemltdXRoQmxlbmQs
IHVuc2lnbmVkIGF6aW11dGhJbmRleCwgSFJURktlcm5lbCogJmtlcm5lbEwsIEhSVEZLZXJuZWwq
ICZrZXJuZWxSLCBkb3VibGUmIGZyYW1lRGVsYXlMLCBkb3VibGUmIGZyYW1lRGVsYXlSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCmluZGV4IDJhOTU5
MDQ1NTIxODQzYTE1MTYyZWNjOGUzMjExNzM5ZTA3MDUzZjcuLmVmNzUyYzNjMDFiZTM5ZWNkYjdl
ZjY0ZGY0MzkwOTI2NmQ2ZWQ5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmgKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBIUlRGRWxldmF0aW9uIGNvbnRhaW5zIGFsbCBvZiB0aGUgSFJURktlcm5lbHMgKG9uZSBs
ZWZ0IGVhciBhbmQgb25lIHJpZ2h0IGVhciBwZXIgYXppbXV0aCBhbmdsZSkgZm9yIGEgcGFydGlj
dWxhciBlbGV2YXRpb24uCiAKLWNsYXNzIEhSVEZFbGV2YXRpb24geworY2xhc3MgSFJURkVsZXZh
dGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSFJURkVsZXZhdGlvbik7CiBwdWJsaWM6CiAgICAgSFJURkVsZXZhdGlvbihz
dGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RMLCBzdGQ6OnVuaXF1ZV9w
dHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RSLCBpbnQgZWxldmF0aW9uLCBmbG9hdCBzYW1w
bGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktl
cm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcApp
bmRleCBlZGY2YzYwZDBkYjgxNGQ5NGMwZjcxYjYzMDZlNDM4MjY1M2FhNGM3Li4zNzU1MjE2YWUy
ODdhNzFjNzQyOTI5YTUzYzk1OTA5NmRiMWRiYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcApAQCAtOTIsNyArOTIsNyBAQCBIUlRGS2VybmVsOjpI
UlRGS2VybmVsKEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGZsb2F0IHNh
bXBsZVJhdGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZmdEZyYW1lID0gc3RkOjptYWtl
X3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CisgICAgbV9mZnRGcmFtZSA9IG1ha2VVbmlxdWU8
RkZURnJhbWU+KGZmdFNpemUpOwogICAgIG1fZmZ0RnJhbWUtPmRvUGFkZGVkRkZUKGltcHVsc2VS
ZXNwb25zZSwgdHJ1bmNhdGVkUmVzcG9uc2VMZW5ndGgpOwogfQogCkBAIC0xMDMsNyArMTAzLDcg
QEAgc2l6ZV90IEhSVEZLZXJuZWw6OmZmdFNpemUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9DaGFubmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UoKQogewotICAg
IGF1dG8gY2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihmZnRTaXplKCkp
OworICAgIGF1dG8gY2hhbm5lbCA9IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihmZnRTaXplKCkp
OwogICAgIEZGVEZyYW1lIGZmdEZyYW1lKCptX2ZmdEZyYW1lKTsKIAogICAgIC8vIEFkZCBsZWFk
aW5nIGRlbGF5IGJhY2sgaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFu
bmVyLmgKaW5kZXggYmY1ZWVmYWE1ZTRjNmQyYmYxN2E5OTAwMzA3NDE2NWM2ZTQzM2FkNy4uY2Fh
YTQ0MWYxZDE0ZWEzNmY1ZTk2OGFkOGE3N2QwYjdhNjBkZDk5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhSVEZQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKK2NsYXNz
IEhSVEZQYW5uZXIgZmluYWwgOiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBIUlRGUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUsIEhSVEZEYXRhYmFzZUxvYWRlciopOwogICAg
IHZpcnR1YWwgfkhSVEZQYW5uZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCmluZGV4IGJiYmYxNjQ0NjIwNzYz
OWUzNWNmNzk1NjQ4MjgyNjNkM2U5MzczYWUuLjViZjlhYjk1ZDAxNTc1MDA4MTVkNjEzMWFiMWQ4
OTc0MWJlMWZlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCBNdWx0aUNoYW5u
ZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVu
c2lnbmVkIG51bWJlcgogewogICAgIC8vIENyZWF0ZSBlYWNoIGNoYW5uZWwncyByZXNhbXBsZXIu
CiAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1i
ZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkKLSAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yKSk7CisgICAgICAgIG1f
a2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOwog
fQogCiB2b2lkIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3Zp
ZGVyKiBwcm92aWRlciwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5u
ZWxSZXNhbXBsZXIuaAppbmRleCA0NDE3NTQ3NjA1ODNkMjgwMzRhNDViM2JkOGE2MTg4ZDQ2NWEy
ZjM2Li42MTQ2ZTkyNWMwNmEyZGRhNzZjYjQxMmYwY2MxZTBhMjQ2YWM4MGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIu
aApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVz
OwogICAgIAotY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyIHsKK2NsYXNzIE11bHRpQ2hhbm5l
bFJlc2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
ICAgCiAgICAgZXhwbGljaXQgTXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3Rv
ciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmNwcAppbmRleCBhYzcyODZhYzlhMDYwYjc1MzRjYjJlZGU5MjFkNmNiZDc3YTk3
YTg4Li40MGI5ZDAxZGMxODRiOTZkNWRmM2FiOWI3ZjQwOTQ2M2E5NzgzNGRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKQEAgLTQzLDExICs0MywxMSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UGFubmVyPiBQYW5uZXI6OmNyZWF0ZShQYW5uaW5nTW9kZWxUeXBlIG1vZGVs
LCBmbG9hdCBzYW1wbGVSYXRlLAogCiAgICAgc3dpdGNoIChtb2RlbCkgewogICAgIGNhc2UgUGFu
bmluZ01vZGVsVHlwZTo6RXF1YWxwb3dlcjoKLSAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxFcXVhbFBvd2VyUGFubmVyPihzYW1wbGVSYXRlKTsKKyAgICAgICAgcGFubmVyID0gbWFr
ZVVuaXF1ZTxFcXVhbFBvd2VyUGFubmVyPihzYW1wbGVSYXRlKTsKICAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIFBhbm5pbmdNb2RlbFR5cGU6OkhSVEY6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6
bWFrZV91bmlxdWU8SFJURlBhbm5lcj4oc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpOworICAg
ICAgICBwYW5uZXIgPSBtYWtlVW5pcXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNl
TG9hZGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaAppbmRleCBjZGE3MmU4YWIzYzRjZGMw
YTg2OGZhYWM0ZjA1Y2U2MWM0NDQwMmQwLi40NjM1YTY3MzNlY2MzZjNhMDc1MDJmYzdhNzUwMTcz
ZTMzZTExZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybUF1ZGlvRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtQXVkaW9EYXRhLmgKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUGxhdGZvcm1BdWRpb0RhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3JtQXVkaW9EYXRhKCkgPSBkZWZhdWx0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5jcHAKaW5kZXggZTAyMzk0YWE1YjE0OWNkMTU5NjkxMmEyNTY4MWZmNWVhNDRhZDhkMi4u
YzhiZDY0YTQxYmY2MTJlODllM2MyMTRmYTIyZGNjNTk5NDhlNTRkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApA
QCAtMTA5LDcgKzEwOSw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAKIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOwogfQogCiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQm
IGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCmluZGV4IDMw
NDNmYzhhMDRkZjBkNzdjMTBhYTAzNzliZDI2YTM5ZDQ2Y2U2YmEuLjhhNjc1NWM1NGFkMDBhM2E4
MTAxODc0MjE2MmNjZDA3NGRlMTBlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUmV2ZXJiOjppbml0aWFsaXplKEF1
ZGlvQnVzKiBpbXB1bHNlUmVzcG9uc2VCdWZmZXIsIHNpemVfdCByZW5kZXJTbGljZVNpemUsCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1SZXNwb25zZUNoYW5uZWxzOyArK2kpIHsKICAg
ICAgICAgQXVkaW9DaGFubmVsKiBjaGFubmVsID0gaW1wdWxzZVJlc3BvbnNlQnVmZmVyLT5jaGFu
bmVsKGkpOwogCi0gICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxS
ZXZlcmJDb252b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29u
dm9sdmVyUmVuZGVyUGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7CisgICAgICAgIG1fY29u
dm9sdmVycy5hcHBlbmQobWFrZVVuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNoYW5uZWwsIHJlbmRl
clNsaWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2UsIHVzZUJhY2tncm91
bmRUaHJlYWRzKSk7CiAKICAgICAgICAgY29udm9sdmVyUmVuZGVyUGhhc2UgKz0gcmVuZGVyU2xp
Y2VTaXplOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKaW5kZXgg
M2UyNTc2YjM1NzU3ZGJhMjQ3MGM4ZWI3ZGEzYzE3YmVlYmJmZGNlZC4uMjM0ZTMxZGFlYmJkNGRk
YWEzNmExZTkwNTMxMWViOTkyMmZhYTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9CdXM7CiAgICAgCiAvLyBNdWx0
aS1jaGFubmVsIGNvbnZvbHV0aW9uIHJldmVyYiB3aXRoIGNoYW5uZWwgbWF0cml4aW5nIC0gb25l
IG9yIG1vcmUgUmV2ZXJiQ29udm9sdmVyIG9iamVjdHMgYXJlIHVzZWQgaW50ZXJuYWxseS4KIAot
Y2xhc3MgUmV2ZXJiIHsKK2NsYXNzIFJldmVyYiBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSB7IE1heEZyYW1lU2l6ZSA9IDI1NiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9u
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRp
b25CdWZmZXIuaAppbmRleCA1MTJiNmFkZTM0MWEyODU2OTcyZWUzZjdiY2IyMTE2NmJiNzIxYTFm
Li5hNjI4MzVmOWMwZDdkNzQzYzllOTI3Y2VkZTJkNmExZGE0NTU4NDFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZm
ZXIuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBSZXZlcmJBY2N1
bXVsYXRpb25CdWZmZXIgaXMgYSBjaXJjdWxhciBkZWxheSBidWZmZXIgd2l0aCBvbmUgY2xpZW50
IHJlYWRpbmcgZnJvbSBpdCBhbmQgbXVsdGlwbGUgY2xpZW50cwogLy8gd3JpdGluZy9hY2N1bXVs
YXRpbmcgdG8gaXQgYXQgZGlmZmVyZW50IGRlbGF5IG9mZnNldHMgZnJvbSB0aGUgcmVhZCBwb3Np
dGlvbi4gIFRoZSByZWFkIG9wZXJhdGlvbiB3aWxsIHplcm8gdGhlIG1lbW9yeQogLy8ganVzdCBy
ZWFkIGZyb20gdGhlIGJ1ZmZlciwgc28gaXQgd2lsbCBiZSByZWFkeSBmb3IgYWNjdW11bGF0aW9u
IHRoZSBuZXh0IHRpbWUgYXJvdW5kLgotY2xhc3MgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIHsK
K2NsYXNzIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmV2ZXJiQWNjdW11bGF0aW9uQnVm
ZmVyKHNpemVfdCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCAxNDVkZjgxZTJhNmJhMmMyZGFhOWJiNDFlNmI1
Y2FiYWYzODVmOTFjLi5hOWM5MzVjMWEyODVhYjEzNjJkOGZmMWRmOGNlYmE1YTdlNWFhNzdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIoQXVk
aW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGkKIAogICAgICAgICBi
b29sIHVzZURpcmVjdENvbnZvbHZlciA9ICFzdGFnZU9mZnNldDsKIAotICAgICAgICBhdXRvIHN0
YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRv
dGFsUmVzcG9uc2VMZW5ndGgsIHJldmVyYlRvdGFsTGF0ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdl
U2l6ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2UsIHJlbmRlclNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0
aW9uQnVmZmVyLCB1c2VEaXJlY3RDb252b2x2ZXIpOworICAgICAgICBhdXRvIHN0YWdlID0gbWFr
ZVVuaXF1ZTxSZXZlcmJDb252b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5n
dGgsIHJldmVyYlRvdGFsTGF0ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwg
cmVuZGVyUGhhc2UsIHJlbmRlclNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1c2VE
aXJlY3RDb252b2x2ZXIpOwogCiAgICAgICAgIGJvb2wgaXNCYWNrZ3JvdW5kU3RhZ2UgPSBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
aAppbmRleCA1YjgxOWUxYTNlNmY0ZmIxZjhkYjBjNTk2OTcyNjJhYWMwOWM2YmRlLi4zMjAwYjQ1
ZWE4ZGY3YzIxY2U2ZmEzN2UwOGJiMjc5MWY4YWU1ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaApAQCAtNDMsOCArNDMsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ2hhbm5lbDsKIAotY2xhc3MgUmV2ZXJiQ29u
dm9sdmVyIHsKK2NsYXNzIFJldmVyYkNvbnZvbHZlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmV2ZXJiQ29udm9sdmVyKTsK
IHB1YmxpYzoKICAgICAvLyBtYXhGRlRTaXplIGNhbiBiZSBhZGp1c3RlZCAoZnJvbSBzYXkgMjA0
OCB0byAzMjc2OCkgZGVwZW5kaW5nIG9uIGhvdyBtdWNoIHByZWNpc2lvbiBpcyBuZWNlc3Nhcnku
CiAgICAgLy8gRm9yIGNlcnRhaW4gdHdlYWt5IGRlLWNvbnZvbHZpbmcgYXBwbGljYXRpb25zIHRo
ZSBwaGFzZSBlcnJvcnMgYWRkIHVwIHF1aWNrbHkgYW5kIGxlYWQgdG8gbm9uLXNlbnNpY2FsIHJl
c3VsdHMgd2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyU3RhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCmluZGV4IDBmZGU0MjFhZjJmODJmZDQ4NzRkOTRmNmFmMWQ2
MzQ3MjM5YzY1NmUuLjRmZjk1M2IyNjA0OTE3ZDM0NTIwMzk0MDViNjVkZTJiZDVhMWVhYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHAKQEAgLTU1LDE2ICs1NSwxNiBAQCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2
ZXJiQ29udm9sdmVyU3RhZ2UoY29uc3QgZmxvYXQqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90LAog
ICAgIEFTU0VSVChhY2N1bXVsYXRpb25CdWZmZXIpOwogCiAgICAgaWYgKCFtX2RpcmVjdE1vZGUp
IHsKLSAgICAgICAgbV9mZnRLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihmZnRT
aXplKTsKKyAgICAgICAgbV9mZnRLZXJuZWwgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmZnRTaXpl
KTsKICAgICAgICAgbV9mZnRLZXJuZWwtPmRvUGFkZGVkRkZUKGltcHVsc2VSZXNwb25zZSArIHN0
YWdlT2Zmc2V0LCBzdGFnZUxlbmd0aCk7Ci0gICAgICAgIG1fZmZ0Q29udm9sdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxGRlRDb252b2x2ZXI+KGZmdFNpemUpOworICAgICAgICBtX2ZmdENvbnZvbHZl
ciA9IG1ha2VVbmlxdWU8RkZUQ29udm9sdmVyPihmZnRTaXplKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBBU1NFUlQoIXN0YWdlT2Zmc2V0KTsKICAgICAgICAgQVNTRVJUKHN0YWdlTGVuZ3RoIDw9
IGZmdFNpemUgLyAyKTsKIAotICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9GbG9hdEFycmF5PihmZnRTaXplIC8gMik7CisgICAgICAgIG1fZGlyZWN0S2VybmVs
ID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZmdFNpemUgLyAyKTsKICAgICAgICAgbV9k
aXJlY3RLZXJuZWwtPmNvcHlUb1JhbmdlKGltcHVsc2VSZXNwb25zZSwgMCwgc3RhZ2VMZW5ndGgp
OwotICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGlyZWN0Q29u
dm9sdmVyPihyZW5kZXJTbGljZVNpemUpOworICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IG1h
a2VVbmlxdWU8RGlyZWN0Q29udm9sdmVyPihyZW5kZXJTbGljZVNpemUpOwogICAgIH0KICAgICBt
X3RlbXBvcmFyeUJ1ZmZlci5hbGxvY2F0ZShyZW5kZXJTbGljZVNpemUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAppbmRl
eCBhMDQ5MDk3MDM0MGFiM2IzMzYwMGIwODllNTk4NDc0ZmIzZDQ1NWU2Li4zYzAzYmUzNDFiM2I3
ZDY0NjIxZGM4MDM4MTY2OTM2MGY0ZGI0YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKQEAgLTQyLDcgKzQyLDcgQEAg
Y2xhc3MgRGlyZWN0Q29udm9sdmVyOwogICAgIAogLy8gQSBSZXZlcmJDb252b2x2ZXJTdGFnZSBy
ZXByZXNlbnRzIHRoZSBjb252b2x1dGlvbiBhc3NvY2lhdGVkIHdpdGggYSBzdWItc2VjdGlvbiBv
ZiBhIGxhcmdlIGltcHVsc2UgcmVzcG9uc2UuCiAvLyBJdCBpbmNvcnBvcmF0ZXMgYSBkZWxheSBs
aW5lIHRvIGFjY291bnQgZm9yIHRoZSBvZmZzZXQgb2YgdGhlIHN1Yi1zZWN0aW9uIHdpdGhpbiB0
aGUgbGFyZ2VyIGltcHVsc2UgcmVzcG9uc2UuCi1jbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSB7
CitjbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gcmVuZGVyUGhhc2UgaXMgdXNlZnVsIHRvIGtub3cg
c28gdGhhdCB3ZSBjYW4gbWFuaXB1bGF0ZSB0aGUgcHJlIHZlcnN1cyBwb3N0IGRlbGF5IHNvIHRo
YXQgc3RhZ2VzIHdpbGwgcGVyZm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKaW5kZXggYmIwNmU0ZWVkNjMzZjBlN2M2ODJlMjBlNGU2
YTU3MmFhMWZhYTk2Ni4uYWY5ZWQwMGQ3MzNlODQyYjZlZDNhNjQ3NDg1NDIwZDNjNzY3NzUzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZl
ci5oCkBAIC0zNCw3ICszNCw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFJldmVyYklu
cHV0QnVmZmVyIGlzIHVzZWQgdG8gYnVmZmVyIGlucHV0IHNhbXBsZXMgZm9yIGRlZmVycmVkIHBy
b2Nlc3NpbmcgYnkgdGhlIGJhY2tncm91bmQgdGhyZWFkcy4KLWNsYXNzIFJldmVyYklucHV0QnVm
ZmVyIHsKK2NsYXNzIFJldmVyYklucHV0QnVmZmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZXZlcmJJbnB1dEJ1ZmZlcihzaXpl
X3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
U2luY1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2Ft
cGxlci5oCmluZGV4IDJmY2Q4OWY3ZWNhMzc1ODU4NjMxYTliMjc2NWExMGQyMDFiMzQxYzcuLmMx
MzJmNWQ5NzYyYzc1NjZiMjMyNWMwNjRiMjhkZThiNmUzOTAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKQEAgLTM2LDcgKzM2LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTaW5jUmVzYW1wbGVyIGlzIGEgaGlnaC1xdWFsaXR5IHNh
bXBsZS1yYXRlIGNvbnZlcnRlci4KIAotY2xhc3MgU2luY1Jlc2FtcGxlciB7CitjbGFzcyBTaW5j
UmVzYW1wbGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzog
ICAKICAgICAvLyBzY2FsZUZhY3RvciA9PSBzb3VyY2VTYW1wbGVSYXRlIC8gZGVzdGluYXRpb25T
YW1wbGVSYXRlCiAgICAgLy8ga2VybmVsU2l6ZSBjYW4gYmUgYWRqdXN0ZWQgZm9yIHF1YWxpdHkg
KGhpZ2hlciBpcyBiZXR0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9VcFNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxl
ci5oCmluZGV4IDI2NmJjYWY5ODBkNzI2ZmEyZjYzN2NmZTkzYTVkNGMzOGIyNGVlMDYuLjY3NWVl
NGFkMGM0NDY3Y2QxZGQ2ZDFkNTE2MTFlNzdiOThjNGM2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gVXBTYW1wbGVyIHVwLXNhbXBsZXMgdGhlIHNvdXJjZSBzdHJlYW0gYnkgYSBm
YWN0b3Igb2YgMnguCiAKLWNsYXNzIFVwU2FtcGxlciB7CitjbGFzcyBVcFNhbXBsZXIgZmluYWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVw
U2FtcGxlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1plcm9Qb2xlLmgKaW5kZXggODMxZGU5MDkzYjAwNTYxNmI0YmQ3N2VhN2IwNzc4YzM3ZGFh
N2I2ZS4uMDJmZmFjZDVlYWNhN2NlMjc1ODkyYmU4ZDY0Mzk0YzczM2RjN2QxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCkBAIC0zMyw3ICszMyw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gWmVyb1BvbGUgaXMgYSBzaW1wbGUgZmlsdGVyIHdpdGggb25l
IHplcm8gYW5kIG9uZSBwb2xlLgogCi1jbGFzcyBaZXJvUG9sZSB7CitjbGFzcyBaZXJvUG9sZSBm
aW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgWmVyb1Bv
bGUoKQogICAgICAgICA6IG1femVybygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaAppbmRleCA4NmI2NWEyMjUz
YWYxYWViMmExY2E5Y2FhMzY2Nzg2Y2Q3ZDY1NTIwLi44YTdlN2EwM2FjMzNhNGU1NWM0M2MzMWFl
YzYzN2IxODljYjFjN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaApAQCAtMzksNyArMzksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIAotY2xh
c3MgV2ViQXVkaW9CdWZmZXJMaXN0IDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKK2NsYXNz
IFdlYkF1ZGlvQnVmZmVyTGlzdCBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CiBw
dWJsaWM6CiAgICAgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50MzJfdCBzYW1wbGVDb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggNWJmOGZkYTZiMjkxMmIxOGYxMTkw
ZGNiZTcwODJiZjY4NGJlZTk4Zi4uMWE1NDk1ZmQ3NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0
NTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtNjIs
NyArNjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5h
dGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1
dENoYW5uZWxzICE9IDIpCiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcj4oY2FsbGJh
Y2ssIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXI+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5h
dGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCA4YWY4Nzdl
YzJjNGNhMGFiZDMwNzQ4MzVmNTRiMzRhZWJmMDQzM2EyLi40YmRlN2U0MWUyYjY0MzdjZDBmZjcy
NWU0ZDA3OWQ2OGY4OWU3ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVh
dGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
IT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAl
dSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVs
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9TPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNh
bXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJh
dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
U2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nl
c3Npb25JT1MubW0KaW5kZXggZGM2YzhiY2NlMzY5ZDA2YWVkYzhmZDMzM2M3MzhjMGJlOTU3NWRk
NC4uNjM5ODI0MGJiZDhkOTY3MzAyZGY3ZTllY2ZmNDA3NTAyZGE2ZTIwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBA
IC01OSw2ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjYXRlZ29yeU5hbWUoQXVkaW9TZXNz
aW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiAjZW5kaWYKIAogY2xhc3MgQXVkaW9TZXNzaW9u
UHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXVk
aW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKTsKICAgICBBdWRpb1Nlc3Npb246OkNhdGVn
b3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7CkBAIC03MSw3ICs3Miw3IEBAIEF1ZGlvU2Vzc2lv
blByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKikKIH0KIAogQXVkaW9T
ZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhpcykpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxB
dWRpb1Nlc3Npb25Qcml2YXRlPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCmluZGV4
IDc2NGEzNDdmOTgyOWUxZTg0NzViZDJlYTEyODBhYTE3NTAyNmVjZmMuLjlmZTY0YmFhYTQ3ODRm
ZWNkYWIzZDZkZGI1ZTI3ODM4MWUxZTA3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRD
aGFubmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVh
dGUoJXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNrLCBzYW1w
bGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxs
YmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJl
U2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCA3N2Q0MzE2NTY2OTkwZTkwMWI5
MjBiZjc3OGQ5NjllOWYxOGYxODhhLi40MWFmZTM5ZjIzMmFlNTg4MDg2MGYwODRkNTU2Y2I0YTVk
OGFlMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBPU1N0YXR1
cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZgogewogICAgIEFTU0VSVChmb3JtYXQuc2FtcGxlUmF0ZSgpID49IDAp
OwogCi0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CisgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVu
aXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKG1fb3V0cHV0
RGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBzZXR1cENvbnZlcnRlcigpOwogCkBAIC0xMjAs
OSArMTIwLDkgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRPdXRwdXRGb3Jt
YXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJgogICAgIEFTU0VSVChtX2lucHV0RGVz
Y3JpcHRpb24pOwogICAgIEFTU0VSVChmb3JtYXQuc2FtcGxlUmF0ZSgpID49IDApOwogCi0gICAg
bV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPihmb3JtYXQpOworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKICAgICBpZiAoIW1fcmluZ0J1ZmZlcikK
LSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7
CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwogCiAg
ICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShmb3JtYXQsIHN0YXRpY19jYXN0PHNpemVfdD4obV9t
YXhpbXVtU2FtcGxlQ291bnQpKTsKICAgICBtX3NjcmF0Y2hCdWZmZXIgPSBBdWRpb1NhbXBsZUJ1
ZmZlckxpc3Q6OmNyZWF0ZShtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigp
LCBtX21heGltdW1TYW1wbGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCmluZGV4IDdmNmVmOWQzM2RiMWZiNDdl
N2NmMTRjNTkwNGE0NjExMmIxNTIyMzIuLmNjMDRmMGJlMzA5NzQ5OGI4MzY2ZTkyNDIwNzNlY2Uz
ZTE5NzVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1Nlc3Npb25NYWMuY3BwCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIEF1ZGlvU2Vzc2lv
blByaXZhdGUgewogfTsKIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9w
cml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkK
KyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KGlzTXV0ZWQo
KSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9DQVJpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJp
bmdCdWZmZXIuaAppbmRleCAxOGEyNmFiNmRjNWM4ZGQwMTI1MmRiMDY0NmQ0ZjViOWI0N2I2ZmY1
Li4wNGFjZWZjOGRhYWQ3MTMyOGE0ZGRmYWJiZDA0YWY5ZWNkOGViOTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCkBAIC0zOSw2ICsz
OSw3IEBAIHR5cGVkZWYgc3RydWN0IEF1ZGlvQnVmZmVyTGlzdCBBdWRpb0J1ZmZlckxpc3Q7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2UgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkNBUmluZ0J1ZmZl
clN0b3JhZ2UoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIGFsbG9jYXRlKHNpemVfdCkg
PSAwOwpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKICAgICB2
aXJ0dWFsIHZvaWQqIGRhdGEoKSA9IDA7CiB9OwogCi1jbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdl
VmVjdG9yIDogcHVibGljIENBUmluZ0J1ZmZlclN0b3JhZ2UgeworY2xhc3MgQ0FSaW5nQnVmZmVy
U3RvcmFnZVZlY3RvciBmaW5hbCA6IHB1YmxpYyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKIHB1Ymxp
YzoKICAgICB+Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvcigpID0gZGVmYXVsdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCmluZGV4IGI5ODAzYmZh
MDIzMjQzNTdjMGRmZTA0NzMxM2QyYzNlYzMwNGNiOTIuLjdhNDdmNTYwOGJiYjZkZTlkMzc3M2Ix
N2U5OGU0NzY0YTI0MjIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRGVjb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZERlY29kZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8S2V5ZWREZWNvZGVyQ0Y+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtl
eWVkRGVjb2RlckNGPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyQ0Y6OktleWVkRGVj
b2RlckNGKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDFhNjI3ZWEwMGI5MmNiYWE2
Y2Y3YzM1NWQ1ZTQ0NWVjNDg2MWE0MTIuLjQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNk
N2RlZDIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckNGPigpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEtleWVkRW5jb2RlckNGPigpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURp
Y3Rpb25hcnlSZWY+IGNyZWF0ZURpY3Rpb25hcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCmluZGV4IGI2ODkyMjgw
NWU1ZDM3M2RlN2YwYWVkNzg5MDgyNWFjY2NjMTIwMzkuLjA3YTQ1Y2FkNzhiNmQ0MzdmYWE4NDI1
MjY5OWMwZDQ4NmQ3OGVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGlj
IHZvaWQgc2V0dXBQb3dlck9ic2VydmVyKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGlj
IFBvd2VyT2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7CiAgICAgaWYgKCFwb3dlck9ic2VydmVyKQot
ICAgICAgICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihy
ZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKKyAgICAgICAgcG93ZXJPYnNlcnZlciA9IG1h
a2VVbmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CiAj
ZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JB
cHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IGZhbHNlOwogICAgIGlmICghcmVnaXN0ZXJlZEZvckFw
cGxpY2F0aW9uTm90aWZpY2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4
IDQ3MDVlZDE1YTVjNThjNDExYzQ5ZjM0ZmFmNzNlZWIzMDdiMmM5NDguLmFiOTVmZmQwZjg3MWVj
MDQ2MDhkNTA5NjQ2YjQzZTNkMDM0OWY1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1t
CkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmVu
YWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwogfQogCiB2
b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppbml0aWFsaXplKGNvbnN0IFVSTCog
dXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRleCBhZTBiZDIwOWNjZDZmMzE3Yzkx
OTMyNWExNmExOGE5OWNkMTU3MmU0Li4wZDJhNjIxODZiNWE1NGUyYjg1MWZmOTZkNTI4MTAxZjg0
NjZmNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpAQCAtNTAsNyArNTAsNyBAQCBi
b29sIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlx
dWVfcHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGNh
bkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXgg
ZTgzNjljNmU1MDE2ZTIzY2Y4NzNiOTUzN2QyYWZiNGYwYmM2ODUyMi4uOGZlMzhhZDBjY2UyZmQ1
NDJkMjk3MDE3ZmRhMmQxY2IzNTViNzcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBT
Y3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBh
eGlzLCBjb25zdCBWZWN0b3IKICAgICAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gc3RkOjptYWtl
X3VuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsKKyAgICAgICAgbV9zY3JvbGxTbmFw
U3RhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwogICAgIH0KIAog
ICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBTdGF0ZS0+c25hcE9m
ZnNldHNGb3JBeGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0VtcHR5KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggNTAzZjk3YjkyMDE4ZGE4N2MyNDg4OTFiMjI2
NzlhYmI3MDA1YjMwMC4uOTZjODUxMjkzNWFiOWI2OThlODk4NTUxNjNiYjZkMjJhYzliODJlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBDRE1GYWN0b3J5Q2xlYXJLZXk6OmNyZWF0ZUNETShjb25z
dCBTdHJpbmcmIGtleVN5c3RlCiAjZWxzZQogICAgIEFTU0VSVChzdXBwb3J0c0tleVN5c3RlbShr
ZXlTeXN0ZW0pKTsKICNlbmRpZgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZh
dGVDbGVhcktleT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+
KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IGQ0NzMw
NGM5NWIyNmVmMjA0ZjVkYTRhZGNiYjhhMDg2NGRlMThiYjMuLjBiOTEwNjQ5Y2E0YTQ3YTkxNWQ1
NDhjOWQ5NGFmZmYzMzUzNTkyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNDAs
NiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1GYWN0b3J5Q2xlYXJL
ZXkgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIENETUZhY3RvcnlDbGVhcktleSYgc2luZ2xldG9uKCk7
CiAKQEAgLTU0LDYgKzU1LDcgQEAgY2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZpbmFsIDogcHVi
bGljIENETUZhY3RvcnkgewogfTsKIAogY2xhc3MgQ0RNUHJpdmF0ZUNsZWFyS2V5IGZpbmFsIDog
cHVibGljIENETVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIENETVByaXZhdGVDbGVhcktleSgpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVDbGVh
cktleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KaW5kZXgg
ZjcyMGNmZDMzNDNmOWJhZDMzYTQ5MTlhNzhmODY2ZjlkODYyYTBhZC4uNWE2ZWI0MDQzOWVmNTkw
NTcyYTdjMjllZmMzMzhkOTJmMjM5YzVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KEdDQ29udHJvbGxlciAqY29udHJvbGxl
CiAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciBjb250cm9s
bGVyICVwIGFkZGVkIiwgY29udHJvbGxlcik7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4
Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBhdXRvIGdhbWVwYWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOworICAgIGF1
dG8gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPihjb250cm9sbGVy
LCBpbmRleCk7CiAKICAgICBpZiAobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA8PSBpbmRleCkKICAg
ICAgICAgbV9nYW1lcGFkVmVjdG9yLmdyb3coaW5kZXggKyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAppbmRleCAxNWYwNGM3MDhlOTAw
N2JiNGRhZGVlNTQzNWMzNTdmMDJmNTMxYzkzLi5hMjUyMzRmYjg3NWE3NTFjNjNjMzdiYTZhNWNl
ZTdkNDUzNGQ1YTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvSElER2FtZXBhZC5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBISURHYW1lcGFkRWxlbWVudCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIEhJREdhbWVwYWRFbGVtZW50KGRvdWJsZSB0aGVNaW4sIGRvdWJsZSB0aGVN
YXgsIElPSElERWxlbWVudFJlZiBlbGVtZW50KQogICAgICAgICA6IG1pbih0aGVNaW4pCiAgICAg
ICAgICwgbWF4KHRoZU1heCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDU3NDM5MWI1YzExMWEz
MmJlOTEyNWNhNmNlMDYwMGY1ZDYzODIyNTcuLjZkMTRiNmIyMTYxMGI4NmNlNGMwMDEzZTUwOTEx
Yjg4Zjk1ZTFhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZv
aWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2Up
CiAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwg
ZGV2aWNlKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERl
dmljZSgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBnYW1lcGFkID0gc3RkOjpt
YWtlX3VuaXF1ZTxISURHYW1lcGFkPihkZXZpY2UsIGluZGV4KTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SElER2FtZXBhZD4gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8SElER2FtZXBhZD4oZGV2aWNlLCBp
bmRleCk7CiAKICAgICBpZiAobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA8PSBpbmRleCkKICAgICAg
ICAgbV9nYW1lcGFkVmVjdG9yLmdyb3coaW5kZXggKyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IGE0
YTMwYjUyYWJlNDhhZjg1MGRjN2M3NDdhM2JjZGUxZDUxZmRhNWYuLjBlNTk3MjMyMWI1ZjczZjU3
MmJkNzk2NTg4MTFmMDAzYTk1ZWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBjbGFzcyBLZXllZERlY29kZXJHZW5lcmljOjpEaWN0aW9uYXJ5IHsKICAgICB1c2luZyBOb2Rl
ID0gVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIGJvb2wsIHVpbnQzMl90LCB1aW50NjRfdCwgaW50
MzJfdCwgaW50NjRfdCwgZmxvYXQsIGRvdWJsZSwgU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RGlj
dGlvbmFyeT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+OwogCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci0gICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBtX21h
cC5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkp
KTsgfQorICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAu
YWRkKGtleSwgbWFrZVVuaXF1ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KICAg
ICBOb2RlJiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0dXJuICptX21hcC5nZXQoa2V5KTsg
fQogCiBwcml2YXRlOgpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgYm9vbCByZWFkU2ltcGxlVmFs
dWUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2RlciwgS2V5ZWREZWNvZGVyR2VuZQog
CiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2Rl
ckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCkBAIC04Niw3ICs4Niw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2Rl
ckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6VHlwZSB0eXBlOwogICAgIFN0cmluZyBrZXk7CiAKLSAgICBtX3Jvb3REaWN0
aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgIG1fcm9vdERpY3Rp
b25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgbV9kaWN0aW9uYXJ5U3RhY2su
YXBwZW5kKG1fcm9vdERpY3Rpb25hcnkuZ2V0KCkpOwogCiAgICAgYm9vbCBvayA9IHRydWU7CkBA
IC0xNDQsNyArMTQ0LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJp
Yyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIGlmICghb2sp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvKiBjdXJyZW50RGljdGlu
YXJ5ID0gbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpOwotICAgICAgICAgICAgYXV0byBuZXdEaWN0
aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgYXV0
byBuZXdEaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgICAgICAgICAg
bV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25hcnkuZ2V0KCkpOwogICAgICAgICAg
ICAgY3VycmVudERpY3RpbmFyeS0+YWRkKGtleSwgV1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTE1NiwxMyArMTU2LDEzIEBAIEtleWVkRGVjb2RlckdlbmVy
aWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiAgICAgICAgICAgICBvayA9IHJlYWRTdHJpbmcoZGVjb2Rlciwga2V5KTsKICAgICAgICAgICAg
IGlmICghb2spCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBhdXRvIG5ld0Fy
cmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3QXJy
YXkgPSBtYWtlVW5pcXVlPEFycmF5PigpOwogICAgICAgICAgICAgbV9hcnJheVN0YWNrLmFwcGVu
ZChuZXdBcnJheS5nZXQoKSk7CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCkt
PmFkZChrZXksIFdURk1vdmUobmV3QXJyYXkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5BcnJheUVs
ZW1lbnQ6IHsKLSAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlx
dWU8RGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VV
bmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVu
ZChuZXdEaWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAgICAgIG1fYXJyYXlTdGFjay5sYXN0KCkt
PmFwcGVuZChXVEZNb3ZlKG5ld0RpY3Rpb25hcnkpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAKaW5kZXggMmY4NDEwNDc0NjM5NTU4ZjI5NWU4MWE1MTcxOWE4NzM0YjMyZDU4YS4u
MjFjYzFlYmU0YTkwMWExM2M3NDQwM2RjMDFjZjJmYzgxODEzMDEyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRy
PEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmljPigpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEtleWVkRW5jb2RlckdlbmVyaWM+KCk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4
IDdhZTY1YzVhOGQzMDllM2RlZWY1M2NlOGNmMWUzMDI0MjZkMjdjMTQuLjIwOGFmN2I4NDc5ZWNh
ZWY1NTMwY2NjNTU3YjczNmViYWJjYmNiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAgLTQ0LDE0
ICs0NCwxNCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBzY3JvbGxDYXB0dXJlVGhyZXNob2xkIHsg
MTUwX21zIH07CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0
b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3JvbGxhYmxl
QXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmlj
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNj
cm9sbGFibGVBcmVhKQogICAgICwgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXIoKnRo
aXMsICZTY3JvbGxBbmltYXRvckdlbmVyaWM6Om92ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1l
ckZpcmVkKQogewotICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2Ny
b2xsQW5pbWF0aW9uS2luZXRpYz4obV9zY3JvbGxhYmxlQXJlYSwgW3RoaXNdKEZsb2F0UG9pbnQm
JiBwb3NpdGlvbikgeworICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xs
QW5pbWF0aW9uS2luZXRpYz4obV9zY3JvbGxhYmxlQXJlYSwgW3RoaXNdKEZsb2F0UG9pbnQmJiBw
b3NpdGlvbikgewogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQogICAgICAgICBpZiAobV9z
bW9vdGhBbmltYXRpb24pCiAgICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVu
dFBvc2l0aW9uKHBvc2l0aW9uKTsKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRv
ckdlbmVyaWM6OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbigpCiAgICAgaWYgKG1fc21v
b3RoQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVh
LCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAg
IG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1f
c2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBv
c2l0aW9uKSB7CiAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRpb24pKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRE
ZWNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2Rl
ckdsaWIuY3BwCmluZGV4IGU3ZGQxOTE0MDQxNzE5NjhmOTBkNmZlYTMzNTRlMTRjZWY2ZjU1Njcu
LjM2MWU5ZGYzMjQ1YmU1NjViMGUyYTQxZGYxOGIyNmZmYmM3MTljZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29k
ZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29kZXJHbGliPihkYXRh
LCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJHbGliPihkYXRhLCBz
aXplKTsKIH0KIAogS2V5ZWREZWNvZGVyR2xpYjo6S2V5ZWREZWNvZGVyR2xpYihjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDc0MDRiY2JkNDQ5YWE0OTIxYjhjZTJiN2Uw
MTg0NDk1MDEwNmY2ODAuLjcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2xpYj4oKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxLZXllZEVuY29kZXJHbGliPigpOwogfQogCiBLZXllZEVuY29kZXJHbGliOjpLZXllZEVu
Y29kZXJHbGliKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcAppbmRleCBhMjNlMjE5ZDFhNjg2ZGE3MzBjMDExYmUwZDEyNDljY2UwYmE0NWNk
Li5lZmNjYzVjNmY3OWE1YTlhMmVlNDc3MGJmNWNjOTk0Zjg0MmI5NjBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNDgsNyAr
MzQ4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2xlYXJUaW1lcigpCiB2b2lkIEJpdG1hcEltYWdl
OjpzdGFydFRpbWVyKFNlY29uZHMgZGVsYXkpCiB7CiAgICAgQVNTRVJUKCFtX2ZyYW1lVGltZXIp
OwotICAgIG1fZnJhbWVUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmQml0
bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOworICAgIG1fZnJhbWVUaW1lciA9IG1ha2VVbmlx
dWU8VGltZXI+KCp0aGlzLCAmQml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOwogICAgIG1f
ZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIApAQCAtNTIwLDcgKzUyMCw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKIHZvaWQgQml0bWFwSW1hZ2U6OmRl
Y29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZGVj
b2RpbmdDYWxsYmFja3MpCi0gICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4oKTsKKyAgICAgICAgbV9kZWNvZGlu
Z0NhbGxiYWNrcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOwog
CiAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcy0+YXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMGQzNTU2MTg5NzBmYjI3N2Y3MmU3ODk5MGUzZjRmMmEy
MTZmYmM2OS4uMzUzZmNhNjYwMTMyNjRiMDI0NjJhNTcxMjI0ZDA1YTE4MWQ5Njg5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFRleHRMYXlvdXQgewogICAg
IFRleHRMYXlvdXQoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGZs
b2F0IHhQb3MpCiAgICAgICAgIDogbV9mb250KGZvbnQpCiAgICAgICAgICwgbV9ydW4oY29uc3Ry
dWN0VGV4dFJ1bih0ZXh0LCB4UG9zKSkKLSAgICAgICAgLCBtX2NvbnRyb2xsZXIoc3RkOjptYWtl
X3VuaXF1ZTxDb21wbGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUpKQorICAg
ICAgICAsIG1fY29udHJvbGxlcihtYWtlVW5pcXVlPENvbXBsZXhUZXh0Q29udHJvbGxlcj4obV9m
b250LCBtX3J1biwgdHJ1ZSkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCmluZGV4IDcyMDQ1M2Q5ZjA0NmQ3OWY0OGEwOWI4
MWFmNzAwMGY0ZGUzYmUwMjUuLmNlZmQ4ZDQyMjQ0ZDA2ZmNiODI0YmU1ZTNiNzM0MTljZDQ5OGE0
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9p
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgK
QEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFz
cyBGbG9hdFBvaW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBGbG9hdFBvaW50KCkgeyB9CiAgICAgRmxvYXRQb2ludChmbG9hdCB4LCBmbG9hdCB5KSA6IG1f
eCh4KSwgbV95KHkpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cAppbmRleCAxODRiNDRiMDdhNDEyMjE2YjllYzU5ODQyMmYwNzg3ZjBlNmM3YWViLi5lMGI0OWYy
NDdjMjAwOWJkZDVmMWQwYzhlYmE3YWQ2YzdlYjhjYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIEdseXBoRGF0YSBGb250
OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpIGNvbnN0CiBhdXRvIEZv
bnQ6OmVuc3VyZURlcml2ZWRGb250RGF0YSgpIGNvbnN0IC0+IERlcml2ZWRGb250cyYKIHsKICAg
ICBpZiAoIW1fZGVyaXZlZEZvbnREYXRhKQotICAgICAgICBtX2Rlcml2ZWRGb250RGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8RGVyaXZlZEZvbnRzPigpOworICAgICAgICBtX2Rlcml2ZWRGb250RGF0
YSA9IG1ha2VVbmlxdWU8RGVyaXZlZEZvbnRzPigpOwogICAgIHJldHVybiAqbV9kZXJpdmVkRm9u
dERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCAy
ZTU4YmQ2OWViYjUzOTFlMDM2ZDI4YzI3MDJjMWY0NTA1MDhiMzEyLi5lZjYwNTIyMDE5NzA4ZWYx
NWYwODI5ZmE3ZDljNTY5ODE1MmM5NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCkBAIC0zNDUsNyArMzQ1LDcgQEAgQUxXQVlTX0lOTElORSBGbG9hdFJlY3QgRm9u
dDo6Ym91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAKICAgICBib3VuZHMgPSBwbGF0
Zm9ybUJvdW5kc0ZvckdseXBoKGdseXBoKTsKICAgICBpZiAoIW1fZ2x5cGhUb0JvdW5kc01hcCkK
LSAgICAgICAgbV9nbHlwaFRvQm91bmRzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxHbHlwaE1ldHJp
Y3NNYXA8RmxvYXRSZWN0Pj4oKTsKKyAgICAgICAgbV9nbHlwaFRvQm91bmRzTWFwID0gbWFrZVVu
aXF1ZTxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4oKTsKICAgICBtX2dseXBoVG9Cb3VuZHNN
YXAtPnNldE1ldHJpY3NGb3JHbHlwaChnbHlwaCwgYm91bmRzKTsKICAgICByZXR1cm4gYm91bmRz
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAK
aW5kZXggMGE2MmEyNzViYzY5MmVmMzk5MTE0MGUwMjhmNTgwMDQyMWQwYzcxMS4uMzcwOWI0MWVi
MmI3YmQwYmY3YjEwMmFjNWRiZWZlMmY3NzczYWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgRm9udFBs
YXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm8KICAgICAgICAgICAgICAgICBpdCA9IGZvbnRQbGF0Zm9ybURhdGFD
YWNoZSgpLmZpbmQoa2V5KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gZm9udFBsYXRm
b3JtRGF0YUNhY2hlKCkuZW5kKCkpOwogICAgICAgICAgICAgICAgIGlmIChmb250UGxhdGZvcm1E
YXRhRm9yQWx0ZXJuYXRlTmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaXQtPnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZvckFsdGVy
bmF0ZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBpdC0+dmFsdWUgPSBtYWtlVW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KCpmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNzI3NGRiMGRiMzJiM2I0MWIzZTBlMWIx
ZWQwZmIyYWVhOGIzNmEzYi4uNjQ4MThmNGI1MTU1ZDQyYmZhYzgxYjYxZjRiNWY5Y2RlYTU0NTJk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyBSZWY8Rm9udENhc2NhZGVGb250cz4gcmV0
cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpCiAgICAgICAg
IHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5mb250cy5nZXQoKTsKIAogICAgIGF1
dG8mIG5ld0VudHJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICBuZXdFbnRyeSA9
IHN0ZDo6bWFrZV91bmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtleSksIEZv
bnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKKyAgICBuZXdF
bnRyeSA9IG1ha2VVbmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtleSksIEZv
bnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKICAgICBSZWY8
Rm9udENhc2NhZGVGb250cz4gZ2x5cGhzID0gbmV3RW50cnktPmZvbnRzLmdldCgpOwogCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwgPSA1MDsKQEAg
LTMyNiw5ICszMjYsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgIGlmIChnbHlwaEJ1
ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKICAgICBHcmFwaGljc0NvbnRleHQgcmVjb3JkaW5n
Q29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5
TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwg
QWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlz
dDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0
YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgfSk7CiAgICAgCiAg
ICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4IGRiNzQz
MDJlOWRhYTRlYjUyYzBjZTA4MWZkNTYwNTI3OTU3OGZiZjQuLjEyYWM4MzdmY2QyNDY1ZjlmODFk
ZWIwNjg3YWE3NzZkNWVhMDY0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
Rm9udENhc2NhZGVGb250czo6R2x5cGhQYWdlQ2FjaGVFbnRyeTo6c2V0R2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKFVDaGFyMzIgY2hhCiB7CiAgICAgQVNTRVJUKCFnbHlwaERhdGFGb3JDaGFyYWN0ZXIo
Y2hhcmFjdGVyKS5nbHlwaCk7CiAgICAgaWYgKCFtX21peGVkRm9udCkgewotICAgICAgICBtX21p
eGVkRm9udCA9IHN0ZDo6bWFrZV91bmlxdWU8TWl4ZWRGb250R2x5cGhQYWdlPihtX3NpbmdsZUZv
bnQuZ2V0KCkpOworICAgICAgICBtX21peGVkRm9udCA9IG1ha2VVbmlxdWU8TWl4ZWRGb250R2x5
cGhQYWdlPihtX3NpbmdsZUZvbnQuZ2V0KCkpOwogICAgICAgICBtX3NpbmdsZUZvbnQgPSBudWxs
cHRyOwogICAgIH0KICAgICBtX21peGVkRm9udC0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNo
YXJhY3RlciwgZ2x5cGhEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKaW5kZXggMjU5ZTk3NTMzY2FlZGNmYzE0NWZmN2FiNDI4
ZWExNjlmNjRiMTU5NC4uNzllMmY1Mzg4YzQ2ZTU4OTIzMDE2MWM0NzQ1MjU0MTkyNDdlODJhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNz
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNz
TWFwLmgKQEAgLTEzMCwxMCArMTMwLDEwIEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHR5cGVuYW1lIEds
eXBoTWV0cmljc01hcDxUPjo6R2x5cGhNZXRyaWNzUGFnZSYgR2x5cGhNZXRyaWNzTWFwCiAgICAg
fQogCiAgICAgaWYgKCFtX3BhZ2VzKQotICAgICAgICBtX3BhZ2VzID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoTWFwPGludCwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4oKTsKKyAg
ICAgICAgbV9wYWdlcyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxH
bHlwaE1ldHJpY3NQYWdlPj4+KCk7CiAKICAgICBhdXRvJiBwYWdlID0gbV9wYWdlcy0+ZW5zdXJl
KHBhZ2VOdW1iZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R2x5cGhN
ZXRyaWNzUGFnZT4odW5rbm93bk1ldHJpY3MoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEdseXBoTWV0cmljc1BhZ2U+KHVua25vd25NZXRyaWNzKCkpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKICAgICByZXR1cm4gKnBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGRkYzdjYWM4NTc4MTdiNzdlOTU0
Mjg0NWIwNjk4OTc3OWQyYzY5NmIuLjNiYmIxMjU1OWI4NzcxZTE2NjlhMmViNmIyMjIxNDIxZjYw
OGMzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCkBAIC01NTcsNiArNTU3LDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsK
ICAgICBib29sIHNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MoKSBjb25zdDsKIAogICAgIGNsYXNz
IFdpbmRvd3NCaXRtYXAgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2luZG93c0JpdG1hcCk7CiAgICAgcHVibGljOgogICAg
ICAgICBXaW5kb3dzQml0bWFwKEhEQywgY29uc3QgSW50U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaAppbmRleCAxYjQyMjg2ZGRmNDY1YzBlMmIxMjRkOGFmZGYwZjdjZDY0NzdjYmI3Li5lMzNm
OGZiZTczODkyZTM0YjhkZWY4MzZkNDZmNWM3MGM3OWM2MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBU
ZXh0dXJlR0w7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
KEdyYXBoaWNzQ29udGV4dDNEKiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAg
ICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggMGJhZDRlNzA2
MzQyMTk5ODY4OTQ0OTJkZmU2ZjYxZDMxNzg4MTlkMy4uYjg3MzE5NGVlMjQ2MDFmZTRlMDcxNDdh
YTcxZWEzMDU4N2E4NGE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRl
eHRJbXBsKTsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmNwcAppbmRleCA5NGFhYzFkZjgzNTZiZGIxMGRmN2QwODZmYWNlMjZjMWUzNzE4MzI2Li42Y2Qw
MGMyNjU3MGQ5ZGIzYjlmYWE3ZTIwMjNhZjFhNWU3ZTYzYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMTEyLDcgKzEx
Miw3IEBAIGJvb2wgR3JhcGhpY3NMYXllcjo6c3VwcG9ydHNDb250ZW50c1RpbGluZygpCiAjZW5k
aWYKIAogLy8gU2luZ2xldG9uIGNsaWVudCB1c2VkIGZvciBsYXllcnMgb24gd2hpY2ggY2xlYXJD
bGllbnQgaGFzIGJlZW4gY2FsbGVkLgotY2xhc3MgRW1wdHlHcmFwaGljc0xheWVyQ2xpZW50IDog
cHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgeworY2xhc3MgRW1wdHlHcmFwaGljc0xheWVyQ2xp
ZW50IGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBFbXB0eUdyYXBoaWNzTGF5ZXJDbGll
bnQmIHNpbmdsZXRvbigpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6
c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAgICAgaWYg
KG1fdHJhbnNmb3JtKQogICAgICAgICAqbV90cmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQot
ICAgICAgICBtX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRy
aXg+KG1hdHJpeCk7CisgICAgICAgIG1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4obWF0cml4KTsKIH0KIAogY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIEdy
YXBoaWNzTGF5ZXI6OmNoaWxkcmVuVHJhbnNmb3JtKCkgY29uc3QKQEAgLTM1Niw3ICszNTYsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtYXRyaXgpCiAgICAgaWYgKG1fY2hpbGRyZW5UcmFuc2Zvcm0pCiAgICAg
ICAgICptX2NoaWxkcmVuVHJhbnNmb3JtID0gbWF0cml4OwogICAgIGVsc2UKLSAgICAgICAgbV9j
aGlsZHJlblRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+
KG1hdHJpeCk7CisgICAgICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldE1h
c2tMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAwMDlkNDg2ODk1ZDU2
ODYyNTQwMTFkZjU2MDBhNzIxMTI0MzBlNjJmLi43YTFmZWFhYzc5ZTc4YmE4OGZjYWRjYjg1ZTMy
OTlmZDc5YTAwNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRmxvYXRBbmltYXRpb25W
YWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5p
bWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAog
ICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQpAQCAtMTMyLDcgKzEz
Miw3IEBAIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZh
bHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZShjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgb3RoZXIpCkBAIC0xNjMs
NyArMTYzLDcgQEAgY2xhc3MgRmlsdGVyQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9u
VmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNv
bnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWx0
ZXJBbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWx0
ZXJBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIEZpbHRlckFuaW1hdGlvblZh
bHVlKGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBlNDRhNjFlMjI0Y2ExMTk0ZDA5MThkNDQ0
M2JlYTdjMWU3ZTRhMGUxLi5jMjFmZTI5ZDBmMDVmZGRlMzllMGM0YmY0YjYxYTFjOTc2Y2NiMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0zNDks
NyArMzQ5LDcgQEAgdm9pZCBJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3Ro
JiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWMKIHZvaWQgSW1hZ2U6OnN0YXJ0QW5p
bWF0aW9uQXN5bmNocm9ub3VzbHkoKQogewogICAgIGlmICghbV9hbmltYXRpb25TdGFydFRpbWVy
KQotICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVy
PigqdGhpcywgJkltYWdlOjpzdGFydEFuaW1hdGlvbik7CisgICAgICAgIG1fYW5pbWF0aW9uU3Rh
cnRUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9u
KTsKICAgICBpZiAobV9hbmltYXRpb25TdGFydFRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9hbmltYXRpb25TdGFydFRpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24u
aAppbmRleCBiZTc2NzYwZjhlMzU2NWQ0MjY3MmIwMDVhOTZkY2RiN2ZhNGIyZDY5Li4yNWU3OWE2
ZGMwYTViMjE5M2E3MmEyMjdhYWNhMTc3M2E3ZTNjMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0zMyw2ICszMyw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExlZ2FjeUNETVNlc3Npb25DbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxl
Z2FjeUNETVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRN
ZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3NTdm
MDk1NjdkYzVkZmRmNWJlMDI2Mzk2MzlkMWVmZWM3MThjMGRiLi5hYmU4Njk0MTk0ZmY3YzE3NTEw
MGI2OTg4MDRhMTI0MGJkNjJjODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgY2xhc3MgTnVsbE1l
ZGlhUGxheWVyUHJpdmF0ZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2UgewogCiAgICAgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
MDsgfQogICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAw
OyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH0K
IAogICAgIGRvdWJsZSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAwOyB9CkBAIC0zNTUsNyArMzU1LDcgQEAgUmVmPE1lZGlhUGxheWVy
PiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiBNZWRpYVBs
YXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fY2xp
ZW50KCZjbGllbnQpCiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6OnJl
bG9hZFRpbWVyRmlyZWQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxOdWxsTWVk
aWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPE51bGxN
ZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQogewogfQogCkBAIC01MTEsNyArNTExLDcgQEAgdm9p
ZCBNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJG
YWN0b3J5KiBjdXJyZW50KQogI2VuZGlmCiAgICAgICAgIG1fcHJpdmF0ZS0+bG9hZChtX3VybC5z
dHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wcml2YXRlID0gc3RkOjptYWtlX3Vu
aXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKKyAgICAgICAgbV9wcml2YXRlID0g
bWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKICAgICAgICAgY2xpZW50
KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKHRoaXMpOwogICAgICAgICBjbGllbnQoKS5tZWRp
YVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXgg
MDBkODVhNDk5NjQyYjNmNTIzN2IzMGJmZjVmNGU2YjQyOTEzMGVjZC4uMWQyZmMwMDkyMDRhOGMw
MjU1NDFiMmEyZDdjNWYwZDBiZTVjOTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgIHZpcnR1YWwgTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogCi0gICAg
dmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGlt
ZSgpID8gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVk
aWFUaW1lU2Vla2FibGUoKSk7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkgPyBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVr
YWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4
VGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgTWVkaWFUaW1l
IG1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKG1heFRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZG91YmxlIG1pblRp
bWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggM2U2ODgwNTViZGNjMGIx
MGU0MTYwY2YxNDBkNGZhY2U5MjMyMGE2NS4uNWFkOTMzNDliZmI0MGRhNGZmMzA4YWRhOTg0OTdm
YzM3NWUxMDhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aFV0aWxpdGllcy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRmxvYXRQb2ludEdyYXBoOjpOb2Rl
KiBGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUoRmxvYXRQb2ludCBwb2ludCkKICAg
ICAgICAgICAgIHJldHVybiB0ZXN0Tm9kZS5nZXQoKTsKICAgICB9CiAKLSAgICBtX2FsbE5vZGVz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4ocG9pbnQpKTsK
KyAgICBtX2FsbE5vZGVzLmFwcGVuZChtYWtlVW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4o
cG9pbnQpKTsKICAgICByZXR1cm4gbV9hbGxOb2Rlcy5sYXN0KCkuZ2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCmluZGV4IDlkY2VlODc2MTYy
NWMwMTQ4OGI0ZDkwZDFhZjIyZTM1NDM1ZDRhNWUuLjZhNzAxYzFhMTI4OTc5ZDRjOTQ4YjFhN2Jh
YjU2OGYxMDI0N2NmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmNwcApAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgUmVnaW9uOjpzZXRTaGFwZShTaGFwZSYm
IHNoYXBlKQogICAgIH0KIAogICAgIGlmICghbV9zaGFwZSkKLSAgICAgICAgbV9zaGFwZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKKyAgICAgICAgbV9zaGFwZSA9
IG1ha2VVbmlxdWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKICAgICBlbHNlCiAgICAgICAgICpt
X3NoYXBlID0gV1RGTW92ZShzaGFwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5oCmluZGV4IDc5NjMzZmRiNmFkZjM0ZmZmZWU4ZjgyNjc0ODNiOGNmZjVjZTFm
M2MuLmJjMzljMzAwMDBlYThiNmI1YTllNjBjZjJiYzVhZTE4NjY2NGI2YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCkBAIC05MSw2ICs5MSw3IEBAIGNsYXNz
IFJlZ2lvbiB7CiAgICAgfTsKIAogICAgIGNsYXNzIFNoYXBlIHsKKyAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBTaGFwZSgpID0gZGVmYXVsdDsK
ICAgICAgICAgU2hhcGUoY29uc3QgSW50UmVjdCYpOwpAQCAtMTQ4LDcgKzE0OSw3IEBAIGNsYXNz
IFJlZ2lvbiB7CiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGUmLCBj
b25zdCBTaGFwZSYpOwogICAgIH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNvcHlT
aGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPigq
bV9zaGFwZSkgOiBudWxscHRyOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjb3B5U2hh
cGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlID8gbWFrZVVuaXF1ZTxTaGFwZT4oKm1fc2hhcGUp
IDogbnVsbHB0cjsgfQogICAgIHZvaWQgc2V0U2hhcGUoU2hhcGUmJik7CiAKICAgICBJbnRSZWN0
IG1fYm91bmRzOwpAQCAtMjg5LDcgKzI5MCw3IEBAIE9wdGlvbmFsPFJlZ2lvbj4gUmVnaW9uOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgZGVjb2RlciA+PiBzaGFwZTsKICAgICAg
ICAgaWYgKCFzaGFwZSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAg
IHJlZ2lvbi5tX3NoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RGTW92ZSgqc2hhcGUp
KTsKKyAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBlPihXVEZNb3ZlKCpz
aGFwZSkpOwogICAgIH0KIAogICAgIHJldHVybiB7IHJlZ2lvbiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24uY3BwCmluZGV4IDFlNGU3ZmFjMzZjN2MzMGE2NTZmMWVmZDAwYWFjZTZkNGM5NWNlZGEuLjY5
MzlmOTE3YWU2ZmFiMTNlYzFjOTFkNGFhODE1NTY2YTkxNzBkZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRh
dGlvbi5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTnVsbFRleHRUcmFja1JlcHJlc2VudGF0
aW9uIDogcHVibGljIFRleHRUcmFja1JlcHJlc2VudGF0aW9uIHsKIAogc3RkOjp1bmlxdWVfcHRy
PFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRl
KFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uPigpOwogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKaW5kZXggN2Fl
Yjc1OWIzNGIxOGExZTg0NjgzZjI5YzYxNmE2Y2RiMDI1NzRkOC4uNmEwNmNjNmViYTM0Yjk1OWQy
ZjE4NjAyMjllMWYyZjM4ZmYzMTkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKQEAgLTY1LDYgKzY1LDcgQEAgc3RydWN0IFZlbG9jaXR5
RGF0YSAgewogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgVmVsb2NpdHlEYXRhJik7CiAKIGNsYXNzIEhpc3RvcmljYWxWZWxvY2l0eURhdGEg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEhpc3RvcmljYWxW
ZWxvY2l0eURhdGEoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5j
cHAKaW5kZXggNzdhM2UxOGMxYzZjMmUyN2RkNjNhZTI5NmY2ZWM5YTFlYTJmYWUxZi4uNjEyNjBl
OWM4M2RjNGE1NTI4NTcxYzk5ZDRhMjcwNWIxNmNhNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0M0RBTkdMRS5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAg
ICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RBTkdMRT4odGhp
cywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1
ZTxFeHRlbnNpb25zM0RBTkdMRT4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1
cm4gKm1fZXh0ZW5zaW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsLmgKaW5kZXggYTllY2QzMjEzNmRhODc3MDJmNDc4YWZjZDhhY2M4ZWI5N2My
Mzk0MC4uOTlkZGRkOGY4NTAyNzMwM2JiOGE3NjNlY2FjMmI4Njk4ODJmYTk4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCkBAIC00NCw2ICs0NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2Jq
QzsKIAogY2xhc3MgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbChBVlBsYXllckl0ZW1UcmFjayopOwogICAgIGV4cGxpY2l0IEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGwoQVZBc3NldFRyYWNrKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggNWNkNzc3MmFjMmVlMWNlYTkwMTBlODMzNzFlYTZh
YWVmN2YwNjk1OC4uNmIzYzkyMmU2YWViZTU5MjBhZTY1ZTU3YWYwNWVkZTRhZDAzNzQzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAt
MzEzLDEyICszMTMsMTIgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFy
ZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEKIHsKICAgICBBU1NFUlQo
bWF4RnJhbWVzID49IDApOwogCi0gICAgbV90YXBEZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zvcm1hdCk7CisgICAg
bV90YXBEZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOwogICAgIGludCBudW1i
ZXJPZkNoYW5uZWxzID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bUNoYW5uZWxzUGVyRnJhbWU7CiAgICAg
ZG91YmxlIHNhbXBsZVJhdGUgPSBwcm9jZXNzaW5nRm9ybWF0LT5tU2FtcGxlUmF0ZTsKICAgICBB
U1NFUlQoc2FtcGxlUmF0ZSA+PSAwKTsKIAotICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsKKyAgICBtX291dHB1
dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8QXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uPigpOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1TYW1wbGVS
YXRlID0gc2FtcGxlUmF0ZTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tRm9ybWF0SUQgPSBr
QXVkaW9Gb3JtYXRMaW5lYXJQQ007CiAgICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUZvcm1hdEZs
YWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZDsKQEAgLTMzOCw3ICszMzgs
NyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKENNSXRlbUNvdW50
IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogICAgIC8vIE1ha2UgdGhlIHJpbmdidWZmZXIg
bGFyZ2UgZW5vdWdoIHRvIHN0b3JlIGF0IGxlYXN0IHR3byBjYWxsYmFja3Mgd29ydGggb2YgYXVk
aW8sIG9yIDFzLCB3aGljaGV2ZXIgaXMgbGFyZ2VyLgogICAgIHNpemVfdCBjYXBhY2l0eSA9IHN0
ZDo6bWF4KHN0YXRpY19jYXN0PHNpemVfdD4oMiAqIG1heEZyYW1lcyksIHN0YXRpY19jYXN0PHNp
emVfdD4oa1JpbmdCdWZmZXJEdXJhdGlvbiAqIHNhbXBsZVJhdGUpKTsKIAotICAgIG1fcmluZ0J1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAgIG1fcmluZ0J1ZmZl
ciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2Nh
dGUoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKCpwcm9jZXNzaW5nRm9ybWF0KSwgY2FwYWNpdHkp
OwogCiAgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUtbGVuZ3RoIHN0cnVjdCwg
c28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygpIG9wZXJhdG9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCAzNjFhOTkyZjBjNDY1
MGNmMmI5NjI4YTY0MmU5N2I1ZGJhMGUyYTNjLi40ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3ZjM5YjFl
ZDMyZWQ2NzlhNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFj
dG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJgogICAgIGlmICgh
c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc+
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nPigp
OwogfQogCiBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0
ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oCmluZGV4IDg5MThlODBlMGMzOTBkN2U4ZGFjYTE5MDM5NDc5YTBkMGY2OTVhZDgu
LjUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0cnVjdCBGb3VyQ0M7CiAKIGNsYXNzIENETUZhY3RvcnlGYWlyUGxheVN0cmVh
bWluZyBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nJiBz
aW5nbGV0b24oKTsKIApAQCAtNDksNiArNTAsNyBAQCBjbGFzcyBDRE1GYWN0b3J5RmFpclBsYXlT
dHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CiB9OwogCiBjbGFzcyBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nKCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRl
eCA0YTUwZWI0MWE1ODM2ODNmNjZhNjc2MjI5NTQ2YzU4MDFiMjBiNTg4Li5kODFiY2EzNTQ5MDM5
MThhMWJkYTBhZGRkOTU4ZDU5NDNmNzAxYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgTGVn
YWN5Q0RNOwogY2xhc3MgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzsKIAogY2xhc3MgQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyA6IHB1YmxpYyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDRE1Q
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKExlZ2FjeUNETSogY2RtKQogICAgICAgICA6IG1fY2Rt
KGNkbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggMmNjMDhhOWEzYjUxY2JmN2FiMTk3NDIwMmE5OGIxNjlkYjQzYzEwMS4uMGNk
MDEyOWEzY2Q5ZWFmODYzYWQ0Nzg5ODM4NTAzMWQ4Yjc2ZWY2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTE0NywxMCArMTQ3
LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKExlCiAjZW5kaWYKICAgICAKICAgICBpZiAoc2hv
dWxkVXNlQVZDb250ZW50S2V5U2Vzc2lvbiAmJiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bjo6aXNBdmFpbGFibGUoKSkKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnBy
b3RvY29scyksIHBhcmFtZXRlcnMudmFsdWUoKS52ZXJzaW9uLCAqdGhpcywgY2xpZW50KTsKKyAg
ICAgICAgc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24+
KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyksIHBhcmFtZXRlcnMudmFsdWUo
KS52ZXJzaW9uLCAqdGhpcywgY2xpZW50KTsKICAgICBlbHNlCiAjaWYgSEFWRShBVlNUUkVBTVNF
U1NJT04pCi0gICAgICAgIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVlN0
cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyksICp0aGlz
LCBjbGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZTdHJl
YW1TZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCAqdGhpcywg
Y2xpZW50KTsKICNlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFp
clBsYXlTdHJlYW1pbmdQc3NoQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKaW5kZXggZTQ2MDE0
ODMwNWNlZWQxYjU2NDg0MTk5NmNiOWZjMzRjZGMzYWI1Mi4uMTQ3YzM3OWYxMjcwNjgyZTU1ZmQy
MTVjZTIzYTM5ZWExMjQ5NWFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxh
eVN0cmVhbWluZ1Bzc2hCb3guaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCA6
IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2kiOyB9CiAKQEAgLTQyLDcg
KzQyLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94
IDogcHVibGljIElTT0Z1bGxCb3ggewogICAgIEZvdXJDQyBtX3NjaGVtZTsKIH07CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggOiBw
dWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVh
bWluZ0tleVJlcXVlc3RJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGlj
OgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmtyaSI7IH0KIApA
QCAtNTUsNyArNTUsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWlu
Z0tleVJlcXVlc3RJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggewogICAgIEtleUlEIG1fa2V5
SUQ7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFz
c2V0SWRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGlj
OgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmthaSI7IH0KICAg
ICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpA
QCAtNjYsNyArNjYsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWlu
Z0tleUFzc2V0SWRCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV9k
YXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlD
b250ZXh0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrY3giOyB9CiAg
ICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0K
QEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlDb250ZXh0Qm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
ZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
VmVyc2lvbkxpc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZr
dmwiOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IHZlcnNpb25zKCkgY29uc3QgeyByZXR1
cm4gbV92ZXJzaW9uczsgfQpAQCAtODgsNyArODgsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IDogcHVibGljIElTT0JveCB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG1fdmVyc2lvbnM7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCBmaW5h
bCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5h
bWUoKSB7IHJldHVybiAiZnBzayI7IH0KIApAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCA6IHB1YmxpYyBJU09C
b3ggewogICAgIE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g+
IG1fdmVyc2lvbkxpc3Q7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0luaXREYXRhQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNk
IjsgfQogCkBAIC0xMjAsNyArMTIwLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBs
YXlTdHJlYW1pbmdJbml0RGF0YUJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3RvcjxJU09G
YWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3g+IG1fcmVxdWVzdHM7CiB9OwogCi1jbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggOiBwdWJsaWMgSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCBmaW5hbCA6IHB1YmxpYyBJU09Qcm90ZWN0aW9uU3lz
dGVtU3BlY2lmaWNIZWFkZXJCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGZhaXJQbGF5U3lzdGVtSUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA4NTdmMzFmMjc3MmY0
MDgxZmJhNjM4ZjgxMGMxMTQ5NDI4NThiOTRiLi41OWNmOGJhMjEzMTZiMzA3YzA1MDIzZWQ1NmQ5
YjM5ZDI1NjE3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6YnVm
ZmVyZWQoKSBjCiAgICAgaWYgKCFtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpCiAgICAgICAgIG1f
Y2FjaGVkTG9hZGVkVGltZVJhbmdlcyA9IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCk7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hl
ZExvYWRlZFRpbWVSYW5nZXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9X
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAppbmRleCAz
OTVjZTc4MmU4YzU4MDQ1OTYxNjI0Njk4MGYzM2VhZGYwM2I3OGIyLi41ZjViNmY2OTUyYjQ5M2E5
ODg3YmFmYzdmMzBiN2JlZTczMzQxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWM6On5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjKCkgPSBkZWZhdWx0OwogV2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1h
Yzo6cGxhdGZvcm1QaWNrZXIoKQogewogICAgIGlmICghbV90YXJnZXRQaWNrZXIpCi0gICAgICAg
IG1fdGFyZ2V0UGlja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTWFjPigqdGhpcyk7CisgICAgICAgIG1fdGFyZ2V0UGlja2VyID0gbWFrZVVuaXF1ZTxNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fdGFyZ2V0
UGlja2VyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYWYwYTdjYzc3YmYyOTJjZGZk
NjZhYmM2ZTdmNjNhNTA5MDBhYWQ2Ny4uNWE1MThjNTE1MWQwNWMzZWY1YjA5NDJjNDJlM2IyNDAy
MDM2MGE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIGRp
c3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5l
UmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0sCisgICAgICAg
IHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAg
Z2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNLZXlTeXN0
ZW0pOwogfQogCkBAIC02NzIsNyArNjcyLDcgQEAgc3RhdGljIGJvb2wgdGltZVJhbmdlSXNWYWxp
ZEFuZE5vdEVtcHR5KENNVGltZSBzdGFydCwgQ01UaW1lIGR1cmF0aW9uKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJh
bmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8g
dGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAgICAgaWYg
KCFhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7
CkBAIC0xMTM3LDcgKzExMzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3NpbwogICAgIGlmICgh
a2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+
KCp0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25BVkZvdW5k
YXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CiAKICNlbGlmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQpAQCAtMTcwOCw3ICsxNzA4LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpub3RpZmlj
YXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIEMK
ICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhpZj0lZCkg
JXMiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ob2JzZXJ2ZXIpLCBub3RpZmljYXRpb25O
YW1lKTsKICNlbmRpZgogCi0gICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIpOwor
ICAgIGF1dG8gbm90aWZpY2F0aW9uRGF0YSA9IG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9uQ2FsbGJh
Y2tEYXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2Yo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbm90aWZpY2F0aW9uRGF0YS5yZWxlYXNlKCksIHBy
b2Nlc3NOb3RpZmljYXRpb24pOwogfQpAQCAtMTgzMyw3ICsxODMzLDcgQEAgdm9pZCBBVkZXcmFw
cGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1M
ZWdpYmxlT3V0cHUKIAogICAgIEFTU0VSVChsZWdpYmxlT3V0cHV0ID09IHNlbGYtPm1fbGVnaWJs
ZU91dHB1dCk7CiAKLSAgICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZl
cnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0KTsKKyAgICBhdXRvIGxlZ2li
bGVPdXRwdXREYXRhID0gbWFrZVVuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0
cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBj
b250ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgbGVnaWJsZU91dHB1dERhdGEucmVsZWFzZSgpLCBwcm9jZXNzQ3VlKTsKIH0KQEAgLTE5MjYs
NyArMTkyNiw3IEBAIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzCiAKICAgICBMT0coTWVkaWEsICJB
VkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRS
ZXNvdXJjZSglcCkiLCBzZWxmKTsKIAotICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKKyAg
ICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IG1ha2VVbmlxdWU8TG9hZFJlcXVlc3REYXRhPihsb2Fk
aW5nUmVxdWVzdCwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIGxvYWRSZXF1ZXN0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NTaG91bGRX
YWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOwogCkBAIC0xOTUzLDcgKzE5NTMsNyBAQCBQbGF0Zm9y
bUxheWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICAvLyBDcmVhdGUgYSBQbGF0Zm9ybUNBTGF5ZXIgc28gd2UgY2FuIHJlc2l6ZSB0aGUgdmlk
ZW8gbGF5ZXIgdG8gbWF0Y2ggdGhlIGVsZW1lbnQgc2l6ZS4KLSAgICBtX2xheWVyQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CisgICAgbV9sYXllckNsaWVudCA9
IG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOwogICAgIGlmICghbV9sYXllckNsaWVudCkK
ICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlv
VHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMTRhZjFhMjdmMjZiZDFhZDYwMjg2MDRhNTc1
MmYwZGY5YThkZjUyLi43ZGUxNGMyNTcxZjdkMzhlZWNiYjM0OGZkYTNjNzRhNDNkZWI4MmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
Lm1tCkBAIC0zMywxMyArMzMsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJh
Y2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwogfQogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
QyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1faW1wbChzdGQ6
Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCisgICAgOiBt
X2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQogewog
ICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNTksNyArNTksNyBAQCB2b2lk
IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAog
dm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBsYXll
ckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJv
bVRyYWNrKCk7CiB9CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCBBVlBsYXllckl0ZW1UcmFjayogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogfQogCiBBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRy
YWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQog
CiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJh
Y2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwogfQogCkBAIC04Nyw3ICs4Nyw3IEBAIEFWQXNzZXRUcmFjayogQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDOjphc3NldFRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNl
dE1lZGlhU2VsZWN0aW9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9u
KQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBlYzBkMGVkZGJmNzNiZWVkYTY3MTdiN2E1
MThjNzMyMTI2MDk1YWUyLi5kZjUyMjZhNGVhMDM2ZTU2ZmEyNTM5YTYyNzYyYTIzOGFlNzBlMGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1h
a2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJl
bnQocGFyZW50KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwpAQCAtNTIsNyAr
NTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZXNldFBy
b3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBs
ID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7Cisg
ICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7
CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIyYWFmZWM3
YjgzNDI3YjgxMzBhN2MwNDNmOGY2NzIwODM0Y2NhNDcuLjVkOGUyNTA3NDcwYmM3YTQ5OTk1NWM5
ODFiMTc2ZmY0NDRmYmM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaApAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiAKLWNs
YXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4geworY2xh
c3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vz
c2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50
LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCmluZGV4IDJmZTI1MjQ5OTRjM2IxOTQ0NTllYzMzMzAyOWFiZDllOTg1Yzc1YjQuLmJi
MDc3NzYxMzgyYzg4MDgwN2JhNTNjOGRhZGIyOTQ1NmU1NmViNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZv
aWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEoKQogICAgICAgICB8fCAh
bV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkKICAgICAgICAgfHwgbV9pbWFnZVJv
dGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkudmFsdWUoKSAhPSBmaW5hbFRyYW5zZm9ybQogICAg
ICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXplKCkgIT0gc2l6ZSkKLSAgICAgICAg
bV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNl
c3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNpemUsIGtDVlBpeGVsRm9ybWF0VHlw
ZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olll
cyk7CisgICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90
YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBzaXplLCBrQ1ZQaXhlbEZv
cm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRp
YmxlOjpZZXMpOwogCiAgICAgbV9zaXplID0gZXhwYW5kZWRJbnRTaXplKG1faW1hZ2VSb3RhdGlv
blNlc3Npb24tPnJvdGF0ZWRTaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXgg
YzY1OTBiZGVlNjdiNGUyMDk4ODhlOTZhMmMzMzBmMmZlMjMzODY5Ny4uODQ5OTA0YWNmOTI5Yzdj
ZmUzZjk0YmM0MTBlMGQwYjJlOGIxYjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0y
NzYsNyArMjc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKICAgICBpZiAoIWlzQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VSVChBVkFzc2V0TUlN
RVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CiB9CkBAIC0zNjYsNyArMzY2
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXll
ciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uKHBsYXllcikK
LSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4o
KSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2
aXR5UmVzaXplQXNwZWN0KQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVB
VkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBsYXllcjptYWtlV2Vha1B0cigqdGhpcyld
KSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQpAQCAtMTMzNyw3ICsxMzM3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRQcmVzZXJ2ZXNQ
aXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1l
UmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUJ1ZmZl
cmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBpZiAoIW1fYXZQbGF5ZXJJdGVt
KQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAgLTE4OTIsNyArMTg5Miw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlUm90YXRpb25TZXNzaW9u
KCkKICAgICAgICAgJiYgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+c2l6ZSgpID09IG5hdHVyYWxT
aXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNm
b3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRp
b25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CisgICAgbV9pbWFnZVJvdGF0
aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShm
aW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwogfQogCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMjIxNiw3ICsyMjE2LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0
eXBlKQogI2Vsc2UKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gbmlsOwogI2Vu
ZGlmCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBp
eGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRl
cyk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAg
ICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yMjY1LDcgKzIyNjUsNyBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAogICAgIGlmICghbV92aWRlb1Rl
eHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOworICAgICAgICBtX3ZpZGVvVGV4
dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsK
IAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRl
eHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1
cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHBy
ZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KQEAgLTIzMzAsNyArMjMzMCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVTZXNzCiB7CiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0
ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNlc3Npb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0aGlzLCBjbGllbnQpOworICAg
IGF1dG8gc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+KHRo
aXMsIGNsaWVudCk7CiAgICAgbV9zZXNzaW9uID0gbWFrZVdlYWtQdHIoKnNlc3Npb24pOwogICAg
IHJldHVybiBXVEZNb3ZlKHNlc3Npb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRl
eCA3Mzk2ZTViMWI0MzExOThlNWU2MGQ4ZmNkMDYzNTliYjI3Y2Y0OWY3Li5hMWRkMGY5MDkxZmIy
ODY0NjhkYmUwYWUxMGNlOGIzYzE0MmMwYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApA
QCAtMjY4LDYgKzI2OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQwogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOwogCiAgICAg
c3RydWN0IFBlbmRpbmdTZWVrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBQZW5kaW5nU2Vlayhjb25zdCBNZWRpYVRpbWUmIHRhcmdldFRpbWUsIGNv
bnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRp
dmVUaHJlc2hvbGQpCiAgICAgICAgICAgICA6IHRhcmdldFRpbWUodGFyZ2V0VGltZSkKICAgICAg
ICAgICAgICwgbmVnYXRpdmVUaHJlc2hvbGQobmVnYXRpdmVUaHJlc2hvbGQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KaW5kZXggZjE5NTE1NmQ4Y2YyMjU2ZjYwZjlmNTUzMjQxMjllODUyM2Q5
ZDM4Yi4uOWMwYWVmNjE5YWRjMmEzMThmMGRiN2QyZTM4NjdjMjFkZmMzMWRkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
KE1lZGlhCiAgICAgLCBtX3BsYXlpbmcoMCkKICAgICAsIG1fc2Vla2luZyhmYWxzZSkKICAgICAs
IG1fbG9hZGluZ1Byb2dyZXNzZWQoZmFsc2UpCi0gICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+
KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAgICAgLCBtX2VmZmVjdGl2ZVJhdGVDaGFu
Z2VkTGlzdGVuZXIoRWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzLCBb
bV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKQEAgLTIwMSw3ICsyMDEs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdAogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7
IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4o
cGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwg
MCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5p
c0F2YWlsYWJsZSgpKTsKIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1l
JiB0aQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ0aW1lID0gIiwgdGltZSwgIiwgbmVn
YXRpdmVUaHJlc2hvbGQgPSAiLCBuZWdhdGl2ZVRocmVzaG9sZCwgIiwgcG9zaXRpdmVUaHJlc2hv
bGQgPSAiLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBtX3NlZWtpbmcgPSB0cnVlOwotICAg
IG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTZWVrPih0aW1lLCBuZWdh
dGl2ZVRocmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOworICAgIG1fcGVuZGluZ1NlZWsgPSBt
YWtlVW5pcXVlPFBlbmRpbmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRocmVzaG9sZCwgcG9zaXRpdmVU
aHJlc2hvbGQpOwogCiAgICAgaWYgKG1fc2Vla1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
c2Vla1RpbWVyLnN0b3AoKTsKQEAgLTU0Myw3ICs1NDMsNyBAQCBNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlYWR5U3RhdGUoKSBj
b25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxl
KCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKQEAgLTU1OCw3ICs1NTgsNyBAQCBNZWRp
YVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjptaW5NZWRpYVRpbWVT
ZWVrYWJsZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6YnVmZmVyZWQoKSBjb25zdAogewot
ICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5i
dWZmZXJlZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAg
cmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZl
cmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNv
bnN0CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAKICAgICBpZiAoIW1fcmdiQ29uZm9ybWVyKSB7
CiAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IEB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBp
eGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEp
IH07Ci0gICAgICAgIG1fcmdiQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOworICAg
ICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4o
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9CiAKICAgICBtX2xh
c3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xh
c3RQaXhlbEJ1ZmZlci5nZXQoKSk7CkBAIC02NDksNyArNjQ5LDcgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZShHcmEKICAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChtX2xh
c3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQot
ICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0
dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBt
YWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CiAKICAgICByZXR1cm4g
bV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBp
eGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJn
ZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhh
LCBmbGlwWSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggY2EzYjExMzU1MmIz
ODg1Yzk5OTc3ZGFlMmEyMWVhMTY1NzdlZGE4MC4uOWRlZWU0NmYyY2EyNDUyOTUzZGY1Y2E4OGJi
NjlmODE4ZTdlNGU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMTgzLDcgKzE4
Myw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKE1lZGlhCiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCiAg
ICAgLCBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlclN0
YXR1c0NoYW5nZUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBt
X2Nsb2NrKFBBTDo6Q2xvY2s6OmNyZWF0ZSgpKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpD
PigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQogICAgICwgbV9s
b2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkpCkBAIC0yMjAs
NyArMjIwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVnaXN0
cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0
ZWRUeXBlcywKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5
ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgICAgIHN1cHBvcnRzVHlwZSwgMCwg
MCwgMCwgMCk7CiB9CiAKQEAgLTEwNTQsMTIgKzEwNTQsMTIgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2Vla2FibGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNzMsNyArMTA3Myw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJD
b25mb3JtZXIpCi0gICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3Jt
YXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOworICAgICAgICBtX2lt
YWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJD
b25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5
cGVfMzJCR1JBKSB9KTsKIAogICAgIEFTU0VSVChtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNv
bmZvcm1lcik7CiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMu
Y3BwCmluZGV4IGM4NzFjNTk0ODM1NTA4NTcxODJjN2EyNGQ1NTM0Yjg1YTVkNGVmN2UuLjI5NDgz
YmE1ZTk4ZDk1ZmE4ZTVlYzlhNmExMGJmNjQxYWFlMzU1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcApAQCAtMzQsMTkgKzM0
LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNrKiB0cmFjaykKLSAgICA6
IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNr
KSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRy
YWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0
cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0K
IAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoTWVk
aWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCi0gICAgOiBtX2ltcGwoc3RkOjptYWtl
X3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQorICAgIDogbV9pbXBs
KG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKIHsKICAgICBy
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBWaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQg
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVt
VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIEFWUGxheWVySXRlbVRyYWNrKiBWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9p
bXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7
CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
ayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTg4LDcgKzg4LDcg
QEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmFzc2V0VHJhY2soKQog
CiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rvbk9wdGlvbihN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKIHsKLSAgICBtX2ltcGwgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CisgICAgbV9p
bXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOwogICAg
IHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CmluZGV4IGZjYzI0OTZhMTM1YWE0ZjczYThmZTU0OGQxNGUwYzgwMDA0YWQxYjAuLjk3NTZjZmZh
ZmQ4YzNmNmZlM2I0N2EyMzMzNzFiNzRkZWM5OGQwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFy
ZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJlbnQocGFyZW50KQogICAgICwgbV90cmFja0lE
KC0xKQogICAgICwgbV9zZWxlY3RlZChmYWxzZSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBWaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRU
cmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VV
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVy
dGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAxNzFmMjc3MmM5NGE2OWNk
YTczNDkzY2M5YzhjNzg3OGIwMDEwOGRkLi44NzY1MzQ0NTIwMjRlNjE2NTE0MTdhMDRhMGQ5NDUw
NThhOTU0MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE2MzYsMTIgKzE2MzYsMTIgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoQ29tbWl0U3RhdGUmIGNvbW1p
dFN0YXRlLCBjb25zdCBUcmEKICAgICBpZiAodXNlc0Rpc3BsYXlMaXN0RHJhd2luZygpICYmIG1f
ZHJhd3NDb250ZW50ICYmICghbV9oYXNFdmVyUGFpbnRlZCB8fCBoYWREaXJ0eVJlY3RzKSkgewog
ICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShEaXNwbGF5TGlzdFJlY29yZFN0YXJ0LCBE
aXNwbGF5TGlzdFJlY29yZEVuZCk7CiAKLSAgICAgICAgbV9kaXNwbGF5TGlzdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOworICAgICAgICBtX2Rpc3BsYXlM
aXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CiAgICAgICAgIAog
ICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRzT3JpZ2luKCksIHNpemUoKSk7CiAK
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6
OlJlY29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUo
KSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxpc3Qs
IEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7
CiAgICAgICAgIH0pOwogICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpKTsKICAgICB9CkBAIC0yODY3LDcgKzI4
NjcsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9u
KCkgY29uc3QKIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMoKQog
ewogICAgIGlmICghbV9hbmltYXRpb25zKQotICAgICAgICBtX2FuaW1hdGlvbnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKKyAgICAgICAgbV9hbmltYXRpb25zID0gbWFr
ZVVuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpz
ZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24mIGNhQW5pbSwgQW5pbWF0ZWRQ
cm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRl
eCwgaW50IHN1YkluZGV4LCBTZWNvbmRzIHRpbWVPZmZzZXQpCkBAIC0zOTAzLDcgKzM5MDMsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlE
LCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPgogICAgIGNvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwog
CiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQotICAgICAgICBtX2xheWVyQ2xvbmVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxMYXllckNsb25lcz4oKTsKKyAgICAgICAgbV9sYXllckNsb25lcyA9IG1ha2VV
bmlxdWU8TGF5ZXJDbG9uZXM+KCk7CiAKICAgICBwcmltYXJ5TGF5ZXIgPSBmaW5kT3JNYWtlQ2xv
bmUoY2xvbmVJRCwgbV9sYXllci5nZXQoKSwgbV9sYXllckNsb25lcy0+cHJpbWFyeUxheWVyQ2xv
bmVzLCBjbG9uZUxldmVsKTsKICAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUo
Y2xvbmVJRCwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMtPnN0cnVjdHVy
YWxMYXllckNsb25lcywgY2xvbmVMZXZlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDNhYzRjMWUzMmExNTQ4
ZDU4YzY5MTExN2NjNjlhMjljNGRjZjBlMWEuLmM0YjJjOWMzNDcwODBhNmI3Yzk2ZDY3MDJmNGE0
ZDhhMzBjN2Y2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTcsNiArMTU3LDcgQEAgY2xhc3MgR3JhcGhp
Y3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQgewogICAgIEZsb2F0U2l6ZSBwaXhlbEFsaWdubWVudE9mZnNldCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7IH0KIAogICAgIHN0cnVjdCBDb21t
aXRTdGF0ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgdW5zaWduZWQgdHJlZURlcHRoIHsgMCB9OwogICAgICAgICB1bnNpZ25lZCB0b3RhbEJhY2tk
cm9wRmlsdGVyQXJlYSB7IDAgfTsKICAgICAgICAgYm9vbCBhbmNlc3RvckhhZENoYW5nZXMgeyBm
YWxzZSB9OwpAQCAtMzA5LDYgKzMxMCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKICAgICB0eXBl
ZGVmIHVuc2lnbmVkIENvbXB1dGVWaXNpYmxlUmVjdEZsYWdzOwogICAgIAogICAgIHN0cnVjdCBW
aXNpYmxlQW5kQ292ZXJhZ2VSZWN0cyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0OwogICAgICAgICBGbG9hdFJl
Y3QgY292ZXJhZ2VSZWN0OwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhbmltYXRpbmdU
cmFuc2Zvcm07CkBAIC0zMjgsNiArMzMwLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVi
bGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogCiAgICAg
Ly8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVlIGZvciByZXBsaWNhIGxheWVy
cy4KICAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFJlcGxpY2FEZXB0
aCA9IDE2OwogICAgICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBlIHsgQ2hpbGRCcmFuY2ggPSAw
LCBSZXBsaWNhQnJhbmNoID0gMSB9OwogICAgICAgICBSZXBsaWNhU3RhdGUoUmVwbGljYUJyYW5j
aFR5cGUgZmlyc3RCcmFuY2gpCkBAIC01NzksNiArNTgyLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXll
ckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQg
ewogCiAgICAgLy8gUmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3VyIGxheWVycywgZm9yIHJlcGxp
Y2F0ZWQgbGF5ZXJzLgogICAgIHN0cnVjdCBMYXllckNsb25lcyB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJNYXAgcHJpbWFyeUxheWVyQ2xv
bmVzOwogICAgICAgICBMYXllck1hcCBzdHJ1Y3R1cmFsTGF5ZXJDbG9uZXM7CiAgICAgICAgIExh
eWVyTWFwIGNvbnRlbnRzTGF5ZXJDbG9uZXM7CkBAIC02MDgsNiArNjEyLDcgQEAgY2xhc3MgR3Jh
cGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQgewogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxBbmltYXRpb25Q
cm9jZXNzaW5nQWN0aW9uPj4gQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDsKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4+IEFuaW1hdGlvbnNN
YXA7CiAgICAgc3RydWN0IExheWVyQW5pbWF0aW9ucyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
IHVuY29taXR0ZWRBbmltYXRpb25zOwogICAgICAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwIGFu
aW1hdGlvbnNUb1Byb2Nlc3M7CiAgICAgICAgIEFuaW1hdGlvbnNNYXAgcnVubmluZ0FuaW1hdGlv
bnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5jcHAKaW5kZXggNGQ2NGMyYzRiMTliMzFiODA1NGMxYmM0MWFjMDIyNTczYmVm
ZjU2Mi4uMzA1ZWZkMzMzYmQ2MTFjNmVmNWU0YzFiMjYyMjg4NzUyNTZmMjRkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVy
LmNwcApAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcgVGlsZUNvbnRyb2xsZXI6Onpvb21lZE91dFRp
bGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCkKIFRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxl
cihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RQbGF0Zm9ybUxheWVyKQogICAgIDogbV90aWxlQ2FjaGVM
YXllcihyb290UGxhdGZvcm1MYXllcikKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3Iob3duaW5n
R3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpKQotICAg
ICwgbV90aWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcykpCisgICAgLCBt
X3RpbGVHcmlkKG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkKICAgICAsIG1fdGlsZVJldmFs
aWRhdGlvblRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVSZXZhbGlkYXRpb25UaW1l
ckZpcmVkKQogICAgICwgbV90aWxlU2l6ZUNoYW5nZVRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xs
ZXI6OnRpbGVTaXplQ2hhbmdlVGltZXJGaXJlZCwgdGlsZVNpemVVcGRhdGVEZWxheSkKICAgICAs
IG1fbWFyZ2luRWRnZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCkBAIC0xMzIsNyArMTMy
LDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkK
ICAgICBpZiAobV96b29tZWRPdXRDb250ZW50c1NjYWxlICYmIG1fem9vbWVkT3V0Q29udGVudHNT
Y2FsZSA9PSB0aWxlR3JpZCgpLnNjYWxlKCkgJiYgdGlsZUdyaWQoKS5zY2FsZSgpICE9IHNjYWxl
ICYmICFtX2hhc1RpbGVzV2l0aFRlbXBvcmFyeVNjYWxlRmFjdG9yKSB7CiAgICAgICAgIG1fem9v
bWVkT3V0VGlsZUdyaWQgPSBXVEZNb3ZlKG1fdGlsZUdyaWQpOwogICAgICAgICBtX3pvb21lZE91
dFRpbGVHcmlkLT5zZXRJc1pvb21lZE91dFRpbGVHcmlkKHRydWUpOwotICAgICAgICBtX3RpbGVH
cmlkID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOworICAgICAgICBtX3RpbGVH
cmlkID0gbWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOwogICAgICAgICB0aWxlR3JpZHNDaGFu
Z2VkKCk7CiAgICAgfQogCkBAIC01MDAsNyArNTAwLDcgQEAgRmxvYXRSZWN0IFRpbGVDb250cm9s
bGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9yU2Nyb2xsaW5nKGNvbnN0IEZsb2F0UmVjdCYg
Y28KICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIW1faGlzdG9yaWNhbFZlbG9j
aXR5RGF0YSkKLSAgICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SGlzdG9yaWNhbFZlbG9jaXR5RGF0YT4oKTsKKyAgICAgICAgICAgIG1faGlzdG9y
aWNhbFZlbG9jaXR5RGF0YSA9IG1ha2VVbmlxdWU8SGlzdG9yaWNhbFZlbG9jaXR5RGF0YT4oKTsK
IAogICAgICAgICBtX3ZlbG9jaXR5ID0gbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhLT52ZWxvY2l0
eUZvck5ld0RhdGEoc2Nyb2xsT2Zmc2V0LCBjb250ZW50c1NjYWxlLCBNb25vdG9uaWNUaW1lOjpu
b3coKSk7CiAgICAgfTsKQEAgLTY4NSw3ICs2ODUsNyBAQCBJbnRSZWN0IFRpbGVDb250cm9sbGVy
Ojp0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3QKIFBsYXRmb3JtQ0FMYXllciogVGlsZUNvbnRyb2xs
ZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIoKQogewogICAgIGlmICghbV9jb3ZlcmFn
ZU1hcCkKLSAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvdmVy
YWdlTWFwPigqdGhpcyk7CisgICAgICAgIG1fY292ZXJhZ2VNYXAgPSBtYWtlVW5pcXVlPFRpbGVD
b3ZlcmFnZU1hcD4oKnRoaXMpOwogCiAgICAgcmV0dXJuICZtX2NvdmVyYWdlTWFwLT5sYXllcigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCBhNDg1MjNjZjUxNzZi
MzFmMmFjYzQ5ODRiMmVjZDhlMmM4NzRmNjA3Li4zNmFjMmY3ODRiMDA2ZmY5YzcwM2Y0MWU3YmZm
Njg3YTFhYTRjNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtMzEz
LDcgKzMxMyw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQoKQogICAg
ICAgICBXZWJUaWxlZEJhY2tpbmdMYXllciogdGlsZWRCYWNraW5nTGF5ZXIgPSBzdGF0aWNfY2Fz
dDxXZWJUaWxlZEJhY2tpbmdMYXllcio+KG1fbGF5ZXIuZ2V0KCkpOwogICAgICAgICBUaWxlQ29u
dHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSBbdGlsZWRCYWNraW5nTGF5ZXIgY3JlYXRlVGlsZUNv
bnRyb2xsZXI6dGhpc107CiAKLSAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXll
cnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNB
TGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOwogICAgIH0KIAog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTk0Nyw3ICs5NDcsNyBAQCBGbG9hdFJv
dW5kZWRSZWN0IFBsYXRmb3JtQ0FMYXllckNvY29hOjpzaGFwZVJvdW5kZWRSZWN0KCkgY29uc3QK
IHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJUeXBlID09
IExheWVyVHlwZVNoYXBlTGF5ZXIpOwotICAgIG1fc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgIG1fc2hhcGVSb3Vu
ZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwogCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgUGF0aCBzaGFwZVBhdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxl
ZEJhY2tpbmdMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCmluZGV4IGMxOTFmMzkxYzY0NTcyY2M5OTU1YTQ3
YzZjYjdiOTAwNzg2NzI2MzkuLmIzZTIxZjY0MGFlOTFhMGQxZjU5Mzg0NmE4NTBmZWMyMmZhNzhh
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCkBAIC02Miw3ICs2Miw3IEBA
IC0gKGlkKWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCiAtIChXZWJDb3JlOjpUaWxlQ29udHJvbGxl
ciopY3JlYXRlVGlsZUNvbnRyb2xsZXI6KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciopcm9vdExh
eWVyCiB7CiAgICAgQVNTRVJUKCFfdGlsZUNvbnRyb2xsZXIpOwotICAgIF90aWxlQ29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7
CisgICAgX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUaWxlQ29udHJvbGxl
cj4ocm9vdExheWVyKTsKICAgICByZXR1cm4gX3RpbGVDb250cm9sbGVyLmdldCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDE1ZDRlNDZiMDZjNzZjMTdmMzQwNTEzOWM2
Yzk3OWMxMDE3YjM2OTYuLmQ2YTdjMTY4ZjBlNDQxZmQ3ZDI5MGZjNGZlMzEzNjBjNTg1ZDU2ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgUGxhdGZv
cm1DQUxheWVyV2luOjpQbGF0Zm9ybUNBTGF5ZXJXaW4oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxh
dGZvcm1MYXllciogbGF5ZXIKICAgICBpZiAodXNlc1RpbGVkQmFja2luZ0xheWVyKCkpIHsKICAg
ICAgICAgaW50ZXJuID0gbmV3IFdlYlRpbGVkQmFja2luZ0xheWVyV2luKHRoaXMpOwogICAgICAg
ICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PFdlYlRp
bGVkQmFja2luZ0xheWVyV2luKj4oaW50ZXJuKS0+Y3JlYXRlVGlsZUNvbnRyb2xsZXIodGhpcyk7
Ci0gICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNB
TGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOworICAgICAgICBt
X2N1c3RvbVN1YmxheWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNv
bnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKICAgICB9IGVsc2UKICAgICAgICAgaW50ZXJu
ID0gbmV3IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKHRoaXMpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRp
bGVkQmFja2luZ0xheWVyV2luLmNwcAppbmRleCAyMjRkOGJiZWVkMzk5MmFlZWZjOTMyYTFiZWU4
MGRjNjNmY2EyZjhiLi5jNWE3M2U4ZDNhZTliYjQ5YTk2YmUyN2Y1MzI3ZTA2YzA2MjE0ZmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGls
ZWRCYWNraW5nTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKQEAgLTE2NCw3ICsxNjQsNyBA
QCB2b2lkIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpzZXRCb3JkZXJDb2xvcihjb25zdCBDb2xv
ciYgdmFsdWUpCiBUaWxlQ29udHJvbGxlciogV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OmNyZWF0
ZVRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVyKQogewogICAgIEFTU0VS
VCghbV90aWxlQ29udHJvbGxlcik7Ci0gICAgbV90aWxlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CisgICAgbV90aWxlQ29udHJvbGxlciA9
IG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CiAgICAgcmV0dXJuIG1fdGls
ZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCBjMzFjYzZlMzhiYTU5OWM5ZmI4MjZhYTAzOTc2YjIwNTFjYzExNWJlLi4xOGYzNDA1MGFhOWUz
Yjc0MzRhNjI3YTA3N2NkMmNjZjJmOTljOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC00MSw2ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFn
Z2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJl
U2V0dGluZ3M7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKTsKIHB1YmxpYzoKICAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2Us
IFNoYXJlZEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5k
ZXggNTBiN2Q5YzIzYzAxYWJmYzNhMDUxNzhjMTA1MjUxMDcwZjE1ZDZkYi4uMDRmMmE5ZmY1NDY5
YWE1YmEyNGQxNDk1NjU0YjYwZjBiYzQzZDJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAg
ICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1D
b250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU0LDE0ICs1NCwxNCBAQCBHcmFwaGljc0Nv
bnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4
dEltcGxGYWN0b3J5KAogICAgICAgICBbY2Fpcm9Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwg
Y2Fpcm9Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4
dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKICAgICAs
IG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNv
bnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQu
c2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0
ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CkBAIC02OSw5ICs2OSw5IEBA
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgUGxhCiAKIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY2Fpcm9fdCog
Y2Fpcm9Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJl
Y3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4
dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQor
ICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dENh
aXJvPihjYWlyb0NvbnRleHQpKQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0
Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkKKyAgICAsIG1fcHJpdmF0
ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNv
bnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZh
dGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZv
cm1Db250ZXh0LmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZUNhaXJvLmgKaW5kZXggOTllMTgzY2M3MDU2MDNkMjM0ZThlOGVkOWZkNjY5ZDU5NmZi
ZWVhMi4uMDgzNzI1ZDZmZDM4MzI2MDdhYTc2MWZmOWY2ODM1OTA2NjRjOTgxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCkBAIC00NSw2
ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQpCiAgICAgICAgIDogcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggMTg4ZTdiYzNkYjg1ODI5NjVjYWJiMjg5YmM1
YzAyYmM3MTYyM2FhNS4uMWY3NjNiNTA3NzNiZGY1ZDFlNTJlNWQxOWMwYjgwZmJhZDM3YjQzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEltYWdlQnVm
ZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgICAgICBbdGhpc10oVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgICAg
ICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKKyAgICAgICAgICAgICAgICBwcm94eS5wdXNo
TmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiht
X2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQs
IEdMX1JHQkEpKTsKICAgICAgICAgICAgIH07CiAjaWYgVVNFKE5JQ09TSUEpCiAgICAgICAgIHBy
b3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsKQEAgLTMwOCw3ICszMDgsNyBA
QCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogCiAgICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRv
cHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpKTsKICAgICBtX2RhdGEu
bV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwotICAgIG1fZGF0YS5tX2NvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fZGF0
YS5tX2NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dCkpOwogICAg
IHN1Y2Nlc3MgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaAppbmRleCA4MGVj
NzI1OGI2NDIxZmJmOThiM2ViNTUxM2QwY2VhZmJlN2FkZmRjLi45OWM4MmUyZTZlOTkzMWM4ZmVh
OWRlMjE1ZDBmMzZjNzE5YzM4OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgc3RydWN0IFNoYWRvd1N0YXRlOwogLy8gY29kZSBmcm9tIHRoZSBwbGF0Zm9y
bS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQuCiAKIGNsYXNzIFBsYXRmb3JtQ29udGV4dENh
aXJvIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShQbGF0Zm9ybUNvbnRleHRDYWlybyk7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0
Q2Fpcm8oY2Fpcm9fdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4MGI1ZDRmYmQyNzJkZWU0MzViNWNlN2Mw
ODRlZTM1OWE1MDFlZDY0Li5kMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFmYTM0ZTQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNw
CiAgICAgICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29u
dGV4dC5nZXQoKSk7CisgICAgICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGlj
c0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAgICAgY29udGV4dCgpLnNjYWxl
KEZsb2F0U2l6ZSgxLCAtMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDcyNTJlNDk1
MjRmNjA5ODZiMDM4Y2E4N2M4ZTdlMjY1ZDA1NzQ3MGQuLmMwMTYwMWUxMDExMTI3OThiMjY4ZGZh
ZjI2OTM4MmI2NTMxOWQ1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEzNzEsNyAr
MTM3MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNy
ZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAKICAgICBhdXRvIFtzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5n
ZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRo
ZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigp
LCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVu
ZGVyaW5nTW9kZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVz
Y3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBm
b250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiB9CiAKIHR5cGVkZWYgSGFzaFNl
dDxSZXRhaW5QdHI8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmplY3RIYXNoPENURm9udFJl
Zj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaFRyYWl0czxDVEZvbnRSZWY+PiBGYWxsYmFja0Rl
ZHVwU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cAppbmRleCAxY2UwYzk0N2UxN2U5YTY4ZWVhZDNhNGQ1N2I1OWQ4ZmExNmNlZjI5Li4wZGU5MzRh
N2IzODQxMDBlZWI3NmQ3N2Y0NTZhMTgyZmJiYWJjZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIEZvbnRS
YW5nZXMgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyhjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvCiAKICAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhl
dGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXND
b21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250Lmdl
dCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVu
dGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9u
LnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxh
dGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9u
dERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQo
KSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9y
LT52YWx1ZTsKIAogICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHQzRENvY29hLm1tCmluZGV4IDg5MmI0YTk4YzAwN2I2Zjk3MGEzNjg2MWJlOTE3MTQ4YmIw
NDY3MmMuLjU3OWYxYjkxOGRiYmU3NWI4NDEzZTZkNmZkMTVkZmFmNjRhMzU2NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dDNEQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtOTIsNiArOTIsNyBAQCBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQgPSA1OwogLy8gRklYTUU6IFRoaXMgY2xhc3Mg
aXMgY3VycmVudGx5IGVtcHR5IG9uIE1hYywgYnV0IHdpbGwgZ2V0IHBvcHVsYXRlZCBhcwogLy8g
dGhlIHJlc3RydWN0dXJpbmcgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY2OTAzIGlzIGRvbmUKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKikgeyB9CiAgICAgCkBAIC0yMTIsNyArMjEzLDcgQEAg
c3RhdGljIHZvaWQgc2V0R1BVQnlEaXNwbGF5TWFzayhQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
IGNvbnRleHRPYmosIENHTFBpeGVsRm8KIAogR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29u
dGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlLCBHcmFwaGljc0NvbnRleHQz
RCogc2hhcmVkQ29udGV4dCkKICAgICA6IG1fYXR0cnMoYXR0cnMpCi0gICAgLCBtX3ByaXZhdGUo
c3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMpKQorICAgICwg
bV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkKIHsK
ICNpZiAhVVNFKEFOR0xFKQogI2lmIFVTRShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KaW5kZXggNWM3MzNlM2Jh
ZDFlOWQzZDI1YzFlZDU3ZjVhY2RmZmYzYTRjYjk5Zi4uMzg3NWZjZmQzMDZkZjg2ZDM0NzRlZTE4
NjBiYTU5MGEzYThiYzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzI2LDcgKzMyNiw3IEBAIEdyYXBoaWNzQ29u
dGV4dCYgSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0NvbnRleHQoKQogICAgIGlmIChtX2dyYXBo
aWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29udGV4dDsKIAotICAgIG1f
Z3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGVuc3Vy
ZVBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgbV9ncmFwaGlj
c0NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KHRydWUpOwogCiAgICAgcmV0dXJuICpt
X2dyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tCmluZGV4IDZlNjBlYmYxZmZhNjU5MGY2ZjM0ZTUyOGEzZTMzNTgzMThiNWViZGYuLjI3ODc0
NjgxNjZmZWYxYjVmNjQ2MjFmZWI1YmI1ZTUwZDlkNmRhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIEBlbmQKIAogc3Rk
Ojp1bmlxdWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbjo6Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYT4o
Y2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNv
Y29hPihjbGllbnQpOwogfQogCiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JiBjbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFn
ZVJvdGF0aW9uU2Vzc2lvblZULmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKaW5kZXggYWRjOTdhZGMxZmEyNDU4MDk5MDAzYzNk
ZTljMGFhMzhkODc2MTg3ZC4uNjAwMWJiNzBhMTAwNDE3NDQxMDkyMTM2ZjNmZTViNjE3NjJjYjBj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VS
b3RhdGlvblNlc3Npb25WVC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaApAQCAtMzYsNyArMzYsOCBAQCB0eXBlZGVmIHN0
cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIHsKK2NsYXNzIElt
YWdlUm90YXRpb25TZXNzaW9uVlQgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0cnVjdCBSb3RhdGlvblByb3BlcnRpZXMgewogICAgICAgICBib29s
IGZsaXBYIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAppbmRleCBkZDEzNTY5ZTA4
MWExYjM5OWRjYmFiZjNmNWU4ODM3Zjg0YzJhYjRlLi5jZDViNmZjYzAwZDc3NDY0ZTZlNmJlNzQ2
MzExZTEzZDBkMjdlMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCkBAIC0zNiw2ICszNiw3
IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yo
Q0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKaW5kZXggODFhYjJmOTI0ZGFm
MjZjZGEyMmM1ZTIwMDc3NmMyMTgwMjAyM2EzYi4uYzlmZjQxOWQ0M2JlNDVmNDA0NDAzMDQwYWRk
OGM0ZDA0NDAyYmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVGV4dHVyZUNhY2hlQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBUZXh0dXJlQ2FjaGVDViA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0dXJlQ2FjaGVDVj4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVy
ZUNhY2hlQ1Y+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCmluZGV4IDU3
N2VjMjg0NjM5MmE3MjE1ZDk5OGFhMzEwZDNkOGQ2MzNmNWYxZWMuLjlmMWY2NmIzYmQ1OWY1OWIx
YWQzY2I3MDVjODU2NTQ0MjI3ZWMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCkBAIC01MCw3ICs1MCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gVGV4dHVyZUNhY2hlQ1Y6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRCYgY29udGV4CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmV0
YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+IHN0cm9uZ0NhY2hlID0gYWRvcHRDRihjYWNoZSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZUNhY2hlQ1Y+KGNvbnRleHQsIFdURk1v
dmUoc3Ryb25nQ2FjaGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlQ2FjaGVDVj4o
Y29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOwogfQogCiBUZXh0dXJlQ2FjaGVDVjo6VGV4
dHVyZUNhY2hlQ1YoR3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleHQsIFJldGFpblB0cjxUZXh0dXJl
Q2FjaGVUeXBlPiYmIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKaW5kZXggNDNhOTZkYzE0MzY1
ODRhZmE3NzE4NzhiMTk3ZjJhOTU0N2RjY2NlZS4uOWQzOTJlYTA1OGIzNjAwOGNhNTY5Y2E0NGZk
NzEyODgzYjBkNmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCkBAIC00MCw2ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVDYWNoZUNWOwogCiBjbGFzcyBWaWRlb1Rl
eHR1cmVDb3BpZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgVmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0M0QmKTsKICAgICB+VmlkZW9U
ZXh0dXJlQ29waWVyQ1YoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cAppbmRleCA4ZmVhYTJmNWQ3NTMyOGU0MzZiZjlkODhiOGRjMDViYWMxYzJlMWYzLi5jNTYxZjVm
OWVhYjk5NjIxMWE4YjIyMjE5Nzc2ZDY4ZjM5ZTE2NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBib29sCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheUxpc3Q7CiAg
ICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpCi0gICAgICAgIHJlcGxheUxpc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0PigpOworICAgICAgICByZXBsYXlMaXN0ID0gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKIAogICAgIHNpemVfdCBudW1JdGVtcyA9IG1fZGlzcGxh
eUxpc3QuaXRlbUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1JdGVtczsg
KytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNTU3YjhlMDA4NjJkNmFiYzU4MDRi
NDE0MzIxMDA4MGE4MzUxNmQxZS4uMzBiYjQ4Y2M4ZjBjNDk1NDQ4YWI2NWY2ODExNzJjY2M2YmNh
NTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1lbnRJZk5lZWRlZChDYWNo
ZWRSZXNvdXJjZUxvYWRlcgogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFTVkdVUklSZWZlcmVu
Y2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UobV91cmwsICpjYWNoZWRSZXNvdXJjZUxvYWRlci5k
b2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPihtX3Vy
bCk7CisgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VVbmlxdWU8Q2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKICAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRpb25zKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDY1NjNjOGJmZWViMzViYTUzMjdmNDg5NjFlZDYy
MWZlM2Q1M2FhNDEuLjcxYTRhYjJmNDgyNWYxYTU0MzE5MTgwMzRiMzUzMWVjZGE4YTBmMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZQogICAgICAgICAgICAgRmNQYXR0ZXJuQWRkU3RyaW5nKHJlc3VsdFBh
dHRlcm4uZ2V0KCksIEZDX0ZPTlRfVkFSSUFUSU9OUywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBG
Y0NoYXI4Kj4odmFyaWFudHMudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICNlbmRpZgotICAgIGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250
RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
UGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUs
IGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKKyAgICBhdXRvIHBsYXRmb3JtRGF0YSA9
IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2UuZ2V0KCksIHJlc3VsdFBhdHRl
cm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBmaXhlZFdpZHRo
LCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50
YXRpb24oKSk7CiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBmb250IGhhcyBhbiBlbmNvZGluZyBj
b21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNvbmZpZyBjdXJyZW50bHkKICAgICAvLyBz
dXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlwZUNoYXJJbmRleDogVW5pY29kZSwg
U3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElmIHRoaXMgZm9udCBkb2Vzbid0IGhhdmUg
b25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9uJ3Qgc2VsZWN0IGl0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggMTM3NjVm
NDNkYTg2NjhkMmRlODJlNjcxZDgxODBkNjg0NDI4NDNiMC4uNTg5NDNkMmE5MGRmYzU1MDFmMmRj
YWE4ZWNmMGU5MGUxYWM3ZjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmUKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAgICBpZiAoRlRfTmV3X01lbW9y
eV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1ZmZlci5k
YXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNlKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KIAogYm9vbCBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApp
bmRleCA4Njk4MTM2NDUxM2I4ZTZmMGQ3YjJkZGE1YmI4ZDFmODcyZTdmNTc2Li43MWZkYTBkOTI0
Y2QyNTVkYjNlZjEwNzdmOWUxMDc4MTRlMjQzZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC05NSw3ICs5NSw3IEBAIFJlZlB0
cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEZv
cm1hdCBmb3JtYXQsIGludCB3CiAgICAgICAgIG51bVRpbGVzID0gMDsKICAgICB9CiAKLSAgICBh
dXRvIHRleHR1cmVJZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1bnNpZ25lZD4+KG51bVRp
bGVzKTsKKyAgICBhdXRvIHRleHR1cmVJZHMgPSBtYWtlVW5pcXVlPFZlY3Rvcjx1bnNpZ25lZD4+
KG51bVRpbGVzKTsKICAgICB0ZXh0dXJlSWRzLT5maWxsKDAsIG51bVRpbGVzKTsKIAogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmNGE0YmExYThhY2FkNWUyMDVhNTkz
YTQ4Zjc0ODZiMjhjN2JlMWQ1Li5mNmUxZTE0NjkzYzc5ODQyNTJmNzhlYjc4MGQwMjRjZjY0NWVh
NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzCiB7CiAgICAgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsK
ICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5
ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4o
cGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICB9CiB9
CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAogc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJl
ZCgpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkIHx8IGlzTGl2ZVN0cmVh
bSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIApAQCAtMjM3Niw3ICsyMzc2LDcgQEAg
R3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsoKSBjb25z
dAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJv
dmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKQotICAgICAgICBtX2F1
ZGlvU291cmNlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU291cmNlUHJvdmlkZXJH
U3RyZWFtZXI+KCk7CisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IG1ha2VVbmlxdWU8
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKIH0KIAogQXVkaW9Tb3VyY2VQcm92aWRl
ciogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApp
bmRleCAwNzI4ZWViNjQyMGFmZmI5NmM3YTFhNDlmNTU1NWQ5ZjNiM2Q5OGQ1Li5lZThmYmRkYTU3
MmZmNTdlZDRjMTc3YzBjNDljN2U1ODJkZjk5ZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03MTAsMTkgKzcxMCwxOSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21w
b3NpdG9yKCkKICAgICAgICAgICAgIGlmICghcHJveHkuaXNBY3RpdmUoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1l
SG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRl
cj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNr
VmlkZW9TaW5rKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9s
ZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1w
bGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5r
KTsKIAogICAgICAgICAgICAgR0x1aW50IHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJl
SUQoKTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgICAgICBpZiAodGV4dHVyZUlEKSB7Ci0g
ICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZy
YW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAg
ICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFn
cygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZm
ZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGTW92ZShmcmFtZUhvbGRlcikpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHByb3h5
LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6ZSgpLCBHTF9ET05UX0NBUkUpOwog
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbGF5ZXJCdWZmZXIpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVN
YXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkpOwogICAgICAgICAgICAgICAgICAgICB0ZXh0
dXJlLT5yZXNldChmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+aGFzQWxwaGFDaGFu
bmVsKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9G
bGFnKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnVwZGF0ZVRleHR1cmUobGF5ZXJCdWZmZXIt
PnRleHR1cmVHTCgpKTsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0RXh0cmFGbGFn
cyhtX3RleHR1cmVNYXBwZXJGbGFncyB8IChmcmFtZUhvbGRlci0+aGFzQWxwaGFDaGFubmVsKCkg
PyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCkpOwpAQCAtOTEyLDcgKzkxMiw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxl
LmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdz
dFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRl
b0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9
IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVy
ZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXIt
PnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAtOTIzLDcgKzkyMyw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgICAgIHNpemUgPSBzaXplLnRyYW5zcG9zZWRTaXpl
KCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4
dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
PihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBtX3ZpZGVvVGV4
dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhU
VVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0
dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVyZUlELCBz
aXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwg
Zm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0KQEAgLTkz
OSw3ICs5MzksNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBpZiAoIUdTVF9JU19TQU1QTEUo
bV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZs
YWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJh
bWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgp
LCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9IGZy
YW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJRCkKQEAgLTk1Myw3ICs5
NTMsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJl
bnQoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9U
ZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CisgICAgICAgIG1fdmlkZW9U
ZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRF
WFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0
dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVyZUlELCBz
aXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTEyNSw2ICsxMTI1LDcgQEAgc3RhdGljIHZvaWQgc2V0UmVjdGFu
Z2xlVG9WaWRlb1NpbmsoR3N0RWxlbWVudCogdmlkZW9TaW5rLCBjb25zdCBJbnRSZWN0JiByZWN0
KQogfQogCiBjbGFzcyBHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQgOiBwdWJsaWMgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OkhvbGVQdW5jaENsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50KEdS
ZWZQdHI8R3N0RWxlbWVudD4mJiB2aWRlb1NpbmspIDogbV92aWRlb1NpbmsoV1RGTW92ZSh2aWRl
b1NpbmspKSB7IH07CiAgICAgdm9pZCBzZXRWaWRlb1JlY3RhbmdsZShjb25zdCBJbnRSZWN0JiBy
ZWN0KSBmaW5hbCB7IHNldFJlY3RhbmdsZVRvVmlkZW9TaW5rKG1fdmlkZW9TaW5rLmdldCgpLCBy
ZWN0KTsgfQpAQCAtMTE0Nyw4ICsxMTQ4LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAgICAgICAg
ICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3Np
emUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7Ci0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PiBob2xlUHVu
Y2hDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4obV92
aWRlb1NpbmsuZ2V0KCkpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxH
U3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9IG1ha2VVbmlxdWU8R1N0
cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQoKSk7CiAgICAgICAgICAgICBs
YXllckJ1ZmZlci0+c2V0SG9sZVB1bmNoQ2xpZW50KFdURk1vdmUoaG9sZVB1bmNoQ2xpZW50KSk7
CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3ZlKGxheWVyQnVmZmVyKSk7
CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaAppbmRleCA4MDc5YTVmZWFhYTc5N2ZhZGMzODI0NjcyNGViYmNkN2Y2Zjk5NWUz
Li5hZDRlZGY1ZTZlNWRmYjM3ODRmY2ViMTc4YmE4Mjc3MTRkZjljY2UxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTk3LDcgKzk3
LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmwKICNlbmRpZgogI2VuZGlmCiB7Ci0KKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplRGVidWdDYXRlZ29yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyLmgKaW5kZXggMjBmYjY2M2VmMTI0MzEwMTY2NTQ3ZjQwMmNlNzYzMDNlMGM3MTUx
NS4uZjAxNjAwYTNjNDU5NGRmOGQxNmY0ZjBjYzE0Njg1MmFlMTVjNGI2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaApAQCAtMzMsNiArMzMsNyBAQCBj
bGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTsKIGNsYXNzIEltYWdlT3JpZW50YXRpb247
CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDb2xvckNvbnZlcnNpb24gewog
ICAgICAgICBDb252ZXJ0QkdSQVRvUkdCQSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKaW5kZXggOTczZjRkNGYwMDMyMzU2ZjE3N2ViZDdmYzRiOWU5NGE1Mjky
Zjk1YS4uOTgxMGMyNTdiMzc3NmZmZDhkNDIxMmU5Njk0YmU5MmIyNTk3MzUwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIExPV19RVUVVRV9GQUNUT1JfVEhSRVNI
T0xEIDAuMgogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCBmaW5hbCA6IHB1
YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50KTsKIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudChXZWJL
aXRXZWJTcmMqLCBSZXNvdXJjZVJlcXVlc3QmJik7CkBAIC02MzIsNyArNjMzLDcgQEAgc3RhdGlj
IGdib29sZWFuIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KEdzdEJhc2VTcmMqIGJhc2VTcmMsIGJv
b2wgbm90aWZ5QXN5bmNDb20KICAgICAgICAgICAgIGxvYWRPcHRpb25zIHw9IFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0YTsKICAgICAgICAgcHJpdi0+
cmVzb3VyY2UgPSBwcml2LT5sb2FkZXItPnJlcXVlc3RSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3Qo
cmVxdWVzdCksIGxvYWRPcHRpb25zKTsKICAgICAgICAgaWYgKHByaXYtPnJlc291cmNlKSB7Ci0g
ICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5nZXQoKSwgUmVzb3VyY2VSZXF1
ZXN0KHJlcXVlc3QpKSk7CisgICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KG1h
a2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5nZXQoKSwg
UmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNU
KHByb3RlY3Rvci5nZXQoKSwgIlN0YXJ0ZWQgcmVxdWVzdCIpOwogICAgICAgICAgICAgaWYgKG5v
dGlmeUFzeW5jQ29tcGxldGlvbikKICAgICAgICAgICAgICAgICBnc3RfYmFzZV9zcmNfc3RhcnRf
Y29tcGxldGUoR1NUX0JBU0VfU1JDKHNyYyksIEdTVF9GTE9XX09LKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA0
ZTlkMTlkODUyN2Q2OTYyMGNmNWFhOTQxMDczNjI4MzgxYjNjOWYwLi5lNjg4MGQ5OGU3ZmNhZDFk
MDUzZjg0ZWQzOGE2ZmQ4MTk4ZGU3Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0cmFyIHJlCiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVy
V2ViS2l0RWxlbWVudHMoKTsKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfbXNl
X2RlYnVnLCAid2Via2l0bXNlIiwgMCwgIldlYktpdCBNU0UgbWVkaWEgcGxheWVyIik7CiAgICAg
aWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+
KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBl
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgfQog
fQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
OjpzZXRSYXRlKGZsb2F0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJj
ZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNvdXJj
ZVNldHVwKEdzdEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmluZGV4IDExNzI0NTg0MTBlOWExNDUzYjYzNWIw
ZjhkOTFiOWZiNGE2OTZjNTguLjBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5j
aC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3Bw
CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpwdXNo
TmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBo
b2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0g
bWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBU
ZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOwogICAgICAgICAg
ICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAgICAgICB9
OwogCkBAIC0xNDEsNyArMTQxLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUUKIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaD4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikg
eyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7
IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggZjBkMDRkNGM2M2Q5MzEyMGJjZTgwNWFiOGZlYTI4
N2EwMWUwNDQyYS4uOGJmNzIxMzE4ODE5YzQwMjY3YjcyMWZhOWI4MmFjMWNkOTI2ZjlkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaApAQCAtNDQsNyAr
NDQsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgICwgcHVibGljIFBsYXRmb3JtTGF5
ZXIKICNlbmRpZgogewotCisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKE1lZGlhUGxheWVyKik7CiAgICAgfk1lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaCgpOwpAQCAtNzksNyArNzksNyBAQCBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
LCBwdWJsaWMgQwogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkVtcHR5OyB9OwogICAgIE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBs
YXllcjo6SGF2ZU1ldGFkYXRhOyB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpOyB9OwogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IGUxYTNhODY2MzE0NzVjYWI3YTliMTcxYjQw
NjJkMzkzZDg5MGU2MDYuLmVjZjg5NjkzZGEzMzg1MjAxMmU3NTAyMTEyOTk4MDk5ZWM4ZGFjMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAg
LTM2LDYgKzM2LDcgQEAgY2xhc3MgRGF0YVZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SVNPQm94KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZv
cm1hdEJveC5oCmluZGV4IDcwYmI4NjExMzE2ZTY4NWI3NmI3ODgzOGI1ZWQwNjAzNzZiOWIxYTku
LjE4ODNiYTQ3YmRmM2E1MmFmYjJmZjdkMGRkNWNkOWRjZDdjZGQ4NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZv
cm1hdEJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2luYWxGb3JtYXRCb3ggOiBwdWJsaWMgSVNPQm94IHsK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0Qm94IGZpbmFsIDogcHVibGlj
IElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0
dXJuICJmcm1hIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcAppbmRl
eCBkOGQ3NDAxYTc1NjAwNDZjOThhZmY4Y2IxMWViMmU3MjIzYzk4MWNlLi5iZGZkYmRjOTZjZjBl
MWI1MGE3Mjg1ODI4OGM5YjJmNDc0ZjdkMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1l
SW5mb0JveC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5m
b0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChvcHRpb25hbEJveFR5cGUudmFsdWUoKS5maXJzdCA9PSBJ
U09TY2hlbWVUeXBlQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAgICAgIG1fc2NoZW1lVHlwZUJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lVHlwZUJveD4oKTsKKyAgICAgICAgbV9zY2hl
bWVUeXBlQm94ID0gbWFrZVVuaXF1ZTxJU09TY2hlbWVUeXBlQm94PigpOwogICAgICAgICBpZiAo
IW1fc2NoZW1lVHlwZUJveC0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU2NoZW1l
SW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgfQog
CiAgICAgaWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLmZpcnN0ID09IElTT1NjaGVtZUluZm9y
bWF0aW9uQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAgICAgIG1fc2NoZW1lSW5mb3JtYXRpb25C
b3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZUluZm9ybWF0aW9uQm94PigpOworICAgICAg
ICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0gbWFrZVVuaXF1ZTxJU09TY2hlbWVJbmZvcm1hdGlv
bkJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZUluZm9ybWF0aW9uQm94LT5yZWFkKHZpZXcs
IGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJ
bmZvQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVj
dGlvblNjaGVtZUluZm9Cb3guaAppbmRleCBmMzdiNzYyNDlkOGUwMGZhMTdhMDU1OTI5ZTc3NjY4
NTEzNzMzMzY2Li44ZTU2NzNlMDUxNmE2NTAxNGY1Y2Q0OWY2MWFhN2I3NTM4ZDJjYWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blNjaGVtZUluZm9Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJU09TY2hlbWVUeXBlQm94OwogY2xhc3MgSVNPU2NoZW1lSW5m
b3JtYXRpb25Cb3g7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1Byb3RlY3Rpb25TY2hlbWVJ
bmZvQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0
YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAic2luZiI7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0
aW9uQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hl
bWVJbmZvcm1hdGlvbkJveC5jcHAKaW5kZXggYjRmMjc3YTY4NDdjYzIwZDRmYzlkNjI2ZjljYWNj
NzQzMGFkYWY3MC4uYzgzYzRmZjdiMzhhYmYxYWUyMmZmZTVlNzJjN2ExZjg2YTA4ZWIwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUlu
Zm9ybWF0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgSVNP
U2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zm
c2V0KQogICAgICAgICBpZiAobG9jYWxPZmZzZXQgKyBzY2hlbWVTcGVjaWZpY0JveFR5cGUudmFs
dWUoKS5zZWNvbmQgPiBvZmZzZXQgKyBtX3NpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgbV9zY2hlbWVTcGVjaWZpY0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1Ry
YWNrRW5jcnlwdGlvbkJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVTcGVjaWZpY0RhdGEgPSBtYWtl
VW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZVNw
ZWNpZmljRGF0YS0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaAppbmRleCA5ZWRiMTg3OGE5
YmE5MTliZWIxOWQ3YjYyMjNkOWU3ZTQ2NGY2ODU4Li5lOGVjMGM0YzY5Yjc0ZTgzMzQ0OTg5NDFm
MjRlZWU0MTBmMmNkZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaApAQCAtMjksNyAr
MjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T1NjaGVtZUluZm9ybWF0aW9uQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVi
bGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAic2NoaSI7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Nj
aGVtZVR5cGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09T
Y2hlbWVUeXBlQm94LmgKaW5kZXggNjE5NjEwMzlmNDhjZjJiYzZlZTdiODg0ODA3M2M4Mzc2ZTU4
MzEzMC4uNGI4ZjI2MzM3NTBmOGFkZjkwYmMyN2MyZDBjZjE0ZWY5ODJjMTczYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlw
ZUJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlwZUJveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVs
bEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJu
ICJzY2htIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKaW5kZXggZjRlZmUyODEwNTFlM2M3
YjI5ZGJlZjc4ZTQ0ZGEzYjAzODc4MDNmMy4uNDdmYTQ5NzI0NmM3MTViZTFkMmNlZjliMGVhODdk
ZDdmNzllZjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaApAQCAtMjksNyArMjksNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1RyYWNrRW5j
cnlwdGlvbkJveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T1RyYWNrRW5jcnlwdGlvbkJveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInRlbmMiOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAK
aW5kZXggOWVjNDA4OTRmMWUyOGEwNWEyMTRjYjMyMzUxNGY3YjEzOTU1ZDI4NC4uNGI1MTZlZThk
ZDdmN2QyMzdlOGQ2MjcyNzk3YjAzMmRkMWY1YWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAg
dXNpbmcgSlNDOjpEYXRhVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJU09T
dHJpbmdCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT1N0cmluZ0JveCBmaW5hbCA6IHB1
YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgY29udGVudHMoKSB7IHJl
dHVybiBtX2NvbnRlbnRzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuaAppbmRleCBhNjE2MGI2NmFlOTQ2ODIwNjc3YWQyOTM0YjE4MWRl
YjkzY2M0ZjQ5Li5hZTIzYmVmZmZlZDY0YTZkZTI4OTE3NmU0MTUxMDExZjA2N2M5ODk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE4gYnl0ZXMgOiBDdWVUaW1l
Qm94IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVTZXR0aW5nc0JveCA6IGJveCA6
IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlUGF5bG9hZEJveCA6IGJveCA6IHJlcXVpcmVkCi1j
bGFzcyBJU09XZWJWVFRDdWUgOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT1dlYlZUVEN1ZSBm
aW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIElTT1dlYlZUVEN1ZShjb25zdCBN
ZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggM2Q1ZWYwOWI3ZDk0MDMwNTk3NDFk
ODA4MjhmNTE4ZGVmYzg0MjNiNS4uZWYxMGIzM2E1NGIzNWQ3ZDU3MWYwNmU0MTZmMTI5MjIwODlh
YzA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtODQsNyArODQsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9u
dERlc2NyaXB0b3IuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50
aW5nT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oCmluZGV4IDgzZjc3NjY3OWUxODljNmZjZTRlZjg2
MjU3YjAwNWQxMTM3NGUyMmQuLjZmMjE1YjI3YWFkOTZjM2ZhOWMyMDdmMzIwZWY5ZTMyYjQzYjdj
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaApAQCAtNDAsNiArNDAs
NyBAQCBuYW1lc3BhY2UgTmljb3NpYSB7CiBzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkg
eyB9OwogCiBzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb24geworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICB2aXJ0dWFsIH5QYWludGluZ09wZXJhdGlvbigpID0gZGVmYXVs
dDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2Vu
ZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDEwOWMyYzU3NzY3OWExMjE0YWE2
ZWExMDFjNmY0ODBmYmEyZWM2MDEuLjViZWU2MTNmY2Y2YjQ2YTA3YzYyOGU1ODAxNmY0OWJiOTAy
MWIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVxdWVzdFVwZGF0ZSgpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2NlbmVJbnRlZ3JhdGlv
bjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVw
ZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VXBkYXRl
U2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKIH0KIAogU2NlbmVJbnRlZ3JhdGlvbjo6Q2xpZW50Ojp+
Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAyYjFhZWNmMGQxYjdlNmEzNDFiZjk0YmZm
YWVkMjIwZjFhNDU4NjM4Li41MGUwYzNjN2Q5NzY4MjZiYTdiYjgxODVkMWVlMTQyMTI5YWRhMDJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBhdXRvIGNyZWF0ZUNvbW1hbmQoQXJncyYmLi4u
IGFyZ3VtZW50cykgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8T3BlcgogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIGF1dG8gY3JlYXRlQ29tbWFuZCgpIC0+IHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19iYXNlX29mPE9wZXJhdGlvbkRhdGE8PiwgVD46OnZhbHVlLCBzdGQ6OnVuaXF1
ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+PgogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VD4oKTsKIH0KIAogQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRl
eHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKaW5kZXggMGM4YTY3MGUzYTBhMzYz
MDdlM2YyOTllY2RhMDI1NTJmZDc3NGVkMS4uYjM1MDhkNTE3YjI0ZTQ3NWMwOGFmNDhiMzNlNDMx
ZmQyNzkyMDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5n
Q29udGV4dENhaXJvLmNwcApAQCAtNzAsOCArNzAsOCBAQCBQYWludGluZ0NvbnRleHRDYWlybzo6
Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICB9KTsKIAog
ICAgIG1fY2Fpcm8uY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2NhaXJvLnN1cmZh
Y2UuZ2V0KCkpKTsKLSAgICBtX3BsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4dC5nZXQoKSk7Ci0gICAg
bV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KCpt
X3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fcGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWlyby5jb250ZXh0LmdldCgpKTsKKyAg
ICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoKm1fcGxh
dGZvcm1Db250ZXh0KSk7CiB9CiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6
fkZvclBhaW50aW5nKCkKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHZvaWQgUGFpbnRpbmdDb250ZXh0
Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkoY29uc3QgUGFpbnRpbmdPcGVyYXRpb25zJiBwYWlu
dGluCiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OkZvclJlY29yZGluZyhQ
YWludGluZ09wZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0aW9ucykKIHsKLSAgICBtX2dyYXBoaWNz
Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PigKKyAg
ICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
PigKICAgICAgICAgWyZwYWludGluZ09wZXJhdGlvbnNdKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRpbmdPcGVyYXRpb25zKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhaXJvT3BlcmF0aW9uUmVjb3JkZXI+KGNv
bnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsLmNwcAppbmRleCBkNGM5YjYwNWI0Y2QyOGUzNDhlZmQ4NTMzNTAzOGI1OGM5YTRkZGZh
Li44ZTM3OTBmN2FiNTRmNmIzZDk1NmYzMDcwNGM0MjljMmFjZGMzMTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFj
a2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9y
eSgKICAgICAgICAgW10oQmFja2luZ1N0b3JlJikgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAg
ICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggZWFkNDk3NzZlNTBhMjNjZmQ1
MDE0YTdlOTY0MzBiM2RlMTI0ZGIwYS4uZDQzNmYyMGMzMTYxYzA1NTRhNWFhMjJhMzkzMGE5OTVl
ZWMzNWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFj
ZSBOaWNvc2lhIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwgZmluYWwg
OiBwdWJsaWMgQmFja2luZ1N0b3JlOjpJbXBsLCBwdWJsaWMgV2ViQ29yZTo6VGlsZWRCYWNraW5n
U3RvcmVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9u
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJ
bXBsLmNwcAppbmRleCAzOGZkZDkzZGE2YjEzODgzMTQwNTkxNjUzY2RmMjllMDdkZTMyMzk2Li43
NTY5MmM3YzRhN2JmZGIxODcxZGYxODAyZTM4Nzc1MzZiNjE1NTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9z
aXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1
cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRvIENvbXBvc2l0aW9uTGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1
cm4gRmFjdG9yeSgKICAgICAgICAgW10odWludDY0X3QsIENvbXBvc2l0aW9uTGF5ZXImKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGlvbkxheWVyVGV4dHVy
ZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21wb3NpdGlv
bkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1
cmVNYXBwZXJJbXBsLmgKaW5kZXggNjU1NWJmYjA4MDI2MWU4YTMwOTViZGU0ODNhMDYxYmI1NDIx
NDU3NC4uNTMwYTY3NTEwMTcyNmVhMjg3MjhjNTNkODg4ZGJkZWY3YWFlNzk5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVy
VGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVy
TGF5ZXI7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uTGF5ZXJUZXh0
dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb21wb3NpdGlvbkxheWVyOjpJbXBsIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgRmFjdG9yeSBj
cmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDU2MTcyOGI1ZWYx
ZjQwZDgwYzUzNTk5MjY3MTA2NmFkODc0ODE5YTcuLjJmYjBlYzk1OTE1YWViMGJhMDk2ZjgwYmM2
OTBkMmYzYjI4NDhjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBA
QCBhdXRvIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KENsaWVu
dCYgY2xpZW50KSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAgICAgIFsm
Y2xpZW50XShDb250ZW50TGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50KTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQp
OwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaAppbmRleCBlZjk2YTYwODMxNjJk
ZTQxYzI3ZGU0YmYzNTdiOGE0ZmNhZjhkOWNmLi5iMDEwNWI3M2FjMjI2NGY1N2NhN2I3ZTUwM2Vj
ZjcwZGE1MjdkYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFz
cyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OwogbmFtZXNwYWNlIE5pY29zaWEgewog
CiBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb250
ZW50TGF5ZXI6OkltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
R0MzRExheWVyLmNwcAppbmRleCA1MmVjNzBiNjgxZjdiYzU2M2E2NzQ3NTQzNjIzODc2YjAzMTM5
YTliLi45YTliZDQ2ODNiMjY3NDJhZmVjYjE0OTFmNjE0NGYyYTc4YzU5NTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
R0MzRExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEdD
M0RMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgIGF1dG8mIHByb3h5ID0gZG93
bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fY29udGVudExh
eWVyLT5pbXBsKCkpLnByb3h5KCk7CiAKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHku
bG9jaygpKTsKLSAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRl
eHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1h
dCkpOworICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4
dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAg
fQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNE
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFHQzNETGF5ZXIuaAppbmRleCAzMmRiOWRkMzdhNmYwZDlmYThkNGQxODhlYjE4Zjhh
ZTE0NzVhMDBiLi45ZjU0NDViYmUxMTgzY2U3NDg1NTkzY2JiYmYxNjUwZWRjY2U0MzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhR0MzRExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNz
IEdMQ29udGV4dDsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgR0MzRExheWVyIDogcHVi
bGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdDM0RMYXllcihXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRCYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAg
ICAgdmlydHVhbCB+R0MzRExheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1h
cHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBhMmFl
MzRhMzEzMjdlODcxNTY1NDE0NmQxOGY3N2M3YTY3ZjI0MjE2Li5kMzUzYzhiZTFiNWJmYTExNmI2
Y2I4NTIwOTcwMjc3Y2M5MzI0NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBl
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgYXV0byBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9y
eSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10oSW1hZ2VC
YWNraW5nJikgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VCYWNr
aW5nVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVN
YXBwZXJJbXBsLmgKaW5kZXggMWE2MjNhZmE0MDkzYjIyYWMyMGQxM2IzMjkzNjA4M2FjYjA4ZWE4
MC4uNDliMWU5YjJlYzAzNTUyYTBiZDYxMjBhZTc3YjhlNjk0YTk0NjE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUlt
YWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBw
ZXJJbXBsLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgSW1hZ2U7CiBuYW1lc3BhY2UgTmljb3Np
YSB7CiAKIGNsYXNzIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsIGZpbmFsIDogcHVibGlj
IEltYWdlQmFja2luZzo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdM
Q29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uczNET3BlbkdMQ29tbW9uLmgKaW5kZXggN2M2MTRmYjQwMzM1OGVhNDA0NTZkODQ2MmNmOGRj
NWJjM2E0ZWIxOS4uMTQ3MjE3OTA3NzI3Y2FlZWEyN2VmNjhhMDY5Y2MwNTMxMDgyMGQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnMzRE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaApAQCAtMzUsNiArMzUsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24gOiBwdWJs
aWMgRXh0ZW5zaW9uczNEIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zM0RPcGVuR0xDb21tb24oKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTY4NDhmY2VjYTQxZTk3MzZmMmEzODE3YTlm
ZDAzY2ViYWUzYWMxMS4uYjk2MzYzYjU1MTkzNTZjOGNkZjQ2NTQzNjMyNmVkMDZjZWNlZDg4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC00NzUsNyArNDc1LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQog
RXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAg
aWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAg
ICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgaXNH
TEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYjI0
ZGYwMzVlMjg4ZTFlYjJmOGFmOWY3YWI5MWQ3NzlkMGFjYTQ5ZS4uMmEwZTViNzZlNGQ2YmFiNzBl
OTBiMmYzZDI4ZWI0M2MwN2Y0MjUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBBTkdMRVJl
c291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZvclNoYWRlcjsKIAogICAgIGlmICghbmFt
ZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAgICBuYW1lSGFzaE1hcEZvclNo
YWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwogICAgIHNldEN1cnJlbnROYW1l
SGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMuZ2V0KCkpOwogICAgIG1fY29t
cGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIApAQCAtMTAyMyw3ICsxMDIzLDcg
QEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAgICAgICAgLy8gQXR0cmlidXRlcyBhcmUgYSBz
cGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZvcmUgYW55IHNoYWRlcnMgaGF2
ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBhbmQgYXJlbid0IGV2ZW4gcmVxdWlyZWQgdG8g
YmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0uCiAgICAgICAgIGlmICghbmFtZUhhc2hNYXBG
b3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hh
ZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAgICAgICAgIHNldEN1cnJlbnRO
YW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMuZ2V0KCkpOwogCiAgICAg
ICAgIGF1dG8gZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFzaGVkTmFtZShuYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRleCAyNDMwNDZkOTg5YWQ3Mzhm
N2M5ZjcxNDk1NTY3Yzk2YmIzNGM1NjQxLi43MGEyMGQ1MGMzNTIxYTYxMjNlNmVmYWYxZjQ3Njhm
NjQ5NWNkZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCkBA
IC0yNDIsNyArMjQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNE
Y2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5z
aW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21w
bGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNE
T3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVu
c2lvbnM7CiB9CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1
dGVzCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0
M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250ZXh0
KQogICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV9jb21waWxlcihpc0dMRVMyQ29t
cGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQp
Ci0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQogewogICAgIEFTU0VSVF9V
TlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNw
cAppbmRleCBlZDZjY2YxOTRiYmVlMWUwMGZkNDM5ZjYxYTZkZTYyZTQwMzAyZWEzLi44ZmQzYWQ0
ZjcyZDc2NGJkOTVkMjIwZjU4MWVkMmI3OTYyODgzYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFw
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTA2LDkgKzEwNiw5IEBAIEdyYXBo
aWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0
ZXMgYXR0cmlidXRlcywgSG9zCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRDb250ZXh0LCAh
c2hhcmVkQ29udGV4dCk7CiAjaWYgVVNFKE5JQ09TSUEpCi0gICAgbV9uaWNvc2lhTGF5ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsK
KyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6R0MzRExheWVyPigqdGhp
cywgcmVuZGVyU3R5bGUpOwogI2Vsc2UKLSAgICBtX3RleG1hcExheWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7
CisgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9y
bUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2VuZGlmCiAKICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKQEAgLTMyNSwxMCArMzI1LDEwIEBAIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgIGlmICghbV9leHRlbnNpb25zKSB7CiAjaWYgVVNF
KE9QRU5HTF9FUykKICAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5vdCBhdmFpbGFibGUgb24g
R0xFUzIuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9u
czNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VV
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CiAjZWxzZQogICAgICAg
ICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3JlIHByb2ZpbGUsIGFuZCB0aGVy
ZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6
bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQo
KS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigp
ID49IDMyMCk7CiAjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCmluZGV4IDE0ZjFk
YmYxOGQ5MWIzOTA3NWUyZDUwZjIxNDliNzc2YmJjMTc0OTMuLjY2MzIzMTU2OTViYTIxYzI2N2Qx
NTU5MzJlYmE5MTQ3ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdD
M0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIAogICAgIHsKICAgICAgICAg
TG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHktPmxvY2soKSk7Ci0gICAgICAg
IG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4
dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0
KSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3Np
dG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9y
Rm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaAppbmRleCA4YjYw
MjE0YWJhOWI4M2NhMTkzMGYxMzVjNzUzNDhiMjY2ZmU1Y2FjLi5lNmYwOWM4Nzk4NTQ4NjMyZWU0
YjBhYTVhNTYzMDYxNWEyNGEzNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIEdMQ29udGV4dDsKIGNsYXNz
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJH
QzNEUGxhdGZvcm1MYXllciA6IHB1YmxpYyBQbGF0Zm9ybUxheWVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXIoR3JhcGhpY3NDb250ZXh0M0QmLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUpOwog
ICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcAppbmRleCA5NzRiODU3OGI4OGFhNjQzNTA5MWU4YjBjMzhiYjJkYjcxMGVmMTAy
Li5hMmY3NTg2NmUzMjNiOGZkYmE0M2EwMDdkNDQ3YWFhNDY1NzZiZmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdMLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIFRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1h
cHBlckdMKCkKIAogICAgIG1fZGF0YSA9IG5ldyBUZXh0dXJlTWFwcGVyR0xEYXRhKHBsYXRmb3Jt
Q29udGV4dCk7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIG1fdGV4dHVyZVBvb2wg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFRleHR1cmVQb29sPihtX2NvbnRleHRBdHRyaWJ1dGVz
KTsKKyAgICBtX3RleHR1cmVQb29sID0gbWFrZVVuaXF1ZTxCaXRtYXBUZXh0dXJlUG9vbD4obV9j
b250ZXh0QXR0cmlidXRlcyk7CiAjZW5kaWYKIH0KIApAQCAtNzkwLDcgKzc5MCw3IEBAIFJlZjxC
aXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoR0xpbnQgaW50ZXJu
YWxGb3JtYXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVy
OjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1h
cHBlckdMPigpOwogfQogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKaW5kZXggN2FmZGYzMGEwNWJjYTUzOTdiODAxOGJmZWJkODllMGUx
ZGE1MDMzMy4uZTExYTBiYjI3YjgxMGMyZDUyNzZiMmE5YjBjNTA5Zjg4OTUwNjZjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02
NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAgYXV0byB0ZXh0dXJlID0g
Qml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpn
ZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7CiAgICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKICAg
ICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4
dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0
cmFGbGFncyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CiB9CiAKIHZvaWQgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAppbmRl
eCBjNzE0ZjZkNzhjMWNmMWE2MWQ0ZGZmNmI0MjA1MjFiMDJlY2Q3YzUwLi4zNzkzNjc1YWM4ZDZi
M2MzMmEzYjMxODE5M2U0OWE3YjM3ZGM0ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC03MSw4ICs3MSw4IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENv
bXBvc2l0b3IqIGNvCiAgICAgaWYgKG1fdGFyZ2V0TGF5ZXIgJiYgbV9jdXJyZW50QnVmZmVyKQog
ICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5n
ZXQoKSk7CiAKLSAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5M
b29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpy
ZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOwotICAgIG1fY29tcG9zaXRvclRocmVhZFVw
ZGF0ZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQp
OworICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6
VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRC
dWZmZXJzVGltZXJGaXJlZCk7CisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIgPSBt
YWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+
PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7CiAKICNpZiBVU0UoR0xJQl9F
VkVOVF9MT09QKQogICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyLT5zZXRQcmlvcml0
eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkNvbXBvc2l0aW5nVGhyZWFkVXBkYXRlVGltZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAppbmRleCAzNjdkOGE1M2NmMzcwZDIyMDJkNmYzNDAxY2RjYjNhMDJmZjQyYzJiLi5kNDc1
NzEwYmEwY2RkZmJjZGJkYTBjNjhjZTMwYjgxZWZhYWQ2OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTgxLDcg
Kzk4MSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVm
ZmVycygpCiAKICAgICAvLyBFbnN1cmUgdGhlIFRpbGVkQmFja2luZ1N0b3JlIG9iamVjdCwgYW5k
IGVuZm9yY2UgYSBjb21wbGV0ZSByZXBhaW50IGlmIGl0J3Mgbm90IGJlZW4gcHJlc2VudCB5ZXQu
CiAgICAgaWYgKCFsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUpIHsKLSAgICAgICAgbGF5ZXJT
dGF0ZS5tYWluQmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZEJhY2tpbmdTdG9y
ZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKKyAgICAgICAgbGF5ZXJTdGF0ZS5t
YWluQmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZm
ZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKICAgICAgICAgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1
c3RtZW50ID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oCmluZGV4IDJjMjRlMDg0
ZTMyOTZhNDdlMDllOTYxMGQ3NDhkNmE4OGZlNDk2NTYuLmZiYzI0NWJlMWU1MDM4NTNjNzMyZjAx
ZTVhMzRlNTU4NGE1YjNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaApAQCAtMzcsNiArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKIAogY2xhc3Mg
VGlsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBJbnRQb2ludCBDb29yZGluYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVk
QmFja2luZ1N0b3JlLmNwcAppbmRleCAzYmU0MzExZGVhYTAyNDk3YzdlZDFjZGNhMTM0NWJhNWE2
ODAzMTA5Li40YTY5NzgyMmU0ZGUyY2RiOGI2NmY4MWQ0MDRkOGRiZTgyYjQ5ODczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTIyMCw3ICsy
MjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyhjb25zdCBJbnRSZWN0
JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgcwogICAgIHVuc2lnbmVkIHRpbGVzVG9DcmVh
dGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgbiA9IDA7
IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikgewogICAgICAgICBUaWxlOjpDb29yZGluYXRl
IGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25dOwotICAgICAgICBtX3RpbGVzLmFkZChjb29y
ZGluYXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFRpbGU+KCp0aGlzLCBjb29yZGluYXRlKSk7CisgICAg
ICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIG1ha2VVbmlxdWU8VGlsZT4oKnRoaXMsIGNvb3Jk
aW5hdGUpKTsKICAgICB9CiAgICAgcmVxdWlyZWRUaWxlQ291bnQgLT0gdGlsZXNUb0NyZWF0ZUNv
dW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4IGM4OGU5YmVmOWQ2NmNhMmI1
NTAxOGM5MGY0YjBhNDI4YjQ2ODJlZjguLjRlYWYwMDExMjBjNDdmZmNlNTVhYjRkZmE5MjE4M2Nl
OGIzMTk0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9KGNvbnN0IFRyYW5zZm9y
bVN0YXRlJiBvdGhlcikKICAgICBpZiAobV9tYXBRdWFkKSB7CiAgICAgICAgIG1fbGFzdFBsYW5h
clF1YWQgPSBvdGhlci5tX2xhc3RQbGFuYXJRdWFkOwogICAgICAgICBpZiAob3RoZXIubV9sYXN0
UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1
YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKm90aGVyLm1fbGFzdFBsYW5hclNlY29u
ZGFyeVF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VV
bmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRy
OwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgVHJhbnNmb3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRl
OjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVyKQogICAgIG1fYWNjdW11bGF0
ZWRUcmFuc2Zvcm0gPSBudWxscHRyOwogCiAgICAgaWYgKG90aGVyLm1fYWNjdW11bGF0ZWRUcmFu
c2Zvcm0pCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7Cisg
ICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9u
TWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CiAgICAgICAgIAogICAgIHJl
dHVybiAqdGhpczsKIH0KQEAgLTEyOSwxMiArMTI5LDEyIEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6
OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Gcm9t
Q29uCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBhY2N1bXVsYXRlZCB0cmFuc2Zvcm0gZnJvbSBsYXN0
IHRpbWUsIG11bHRpcGx5IGluIHRoaXMgdHJhbnNmb3JtCiAgICAgaWYgKG1fYWNjdW11bGF0ZWRU
cmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGly
ZWN0aW9uKQotICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIgKiAqbV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
ID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5l
ciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdGlwbHkodHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7
CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRlID09IEFjY3VtdWxhdGVUcmFuc2Zvcm0pIHsKICAg
ICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3RhcnRlZCB0byBhY2N1bXVsYXRlCi0gICAgICAgIG1f
YWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250
YWluZXIpOwogICAgIH0KICAgICAKICAgICBpZiAoYWNjdW11bGF0ZSA9PSBGbGF0dGVuVHJhbnNm
b3JtKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBs
YW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRRdWFkKiBxdWFkKQogICAgIC8vIE1hcCB0aGUg
cXVhZCBiYWNrIHRocm91Z2ggYW55IHRyYW5zZm9ybSBvciBvZmZzZXQgYmFjayBpbnRvIHRoZSBs
YXN0IGZsYXR0ZW5pbmcgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBGbG9hdFF1YWQgYmFja01hcHBl
ZFF1YWQoKnF1YWQpOwogICAgIG1hcFF1YWQoYmFja01hcHBlZFF1YWQsIGludmVyc2VEaXJlY3Rp
b24oKSk7Ci0gICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8
RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CisgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVh
ZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CiB9CiAKIHZvaWQgVHJh
bnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24g
ZGlyZWN0aW9uLCBib29sKiB3YXNDbGFtcGVkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5o
CmluZGV4IDEwODYzNzQwMGEyMGZhMmYwOWRmNmFkNDM5MzNjYTdkYTE3ZjQ4NjEuLmI2MjU4MzZh
NWNlMjI1YmY0N2YzMzBjMDhjMjlkOGM3NTY1MmVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRl
LmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgVHJhbnNmb3JtU3RhdGUgewogICAgICAgICAvLyBX
ZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0YXRlIChubyBhY2N1bXVsYXRlZCBvZmZzZXQpIHdo
ZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBxdWFkLgogICAgICAgICBBU1NFUlQobV9hY2N1bXVs
YXRlZE9mZnNldCA9PSBMYXlvdXRTaXplKCkpOwogICAgICAgICBpZiAocXVhZCkKLSAgICAgICAg
ICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVh
ZD4oKnF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VV
bmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFz
dFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggZDMx
YTI1NzlmYjFlMWM3OTQyNWQwMjkwNWViZWJjODhkMTRhZGQ1MC4uOGY3NzAyNzVkZTY5OTU2OGM4
NTE1YWVhMGYyY2ZhMGU1MjA1NjcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTY0Miw3ICs2NDIsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgIGJvb2wgc3ludGhlc2l6ZUJvbGQgPSBpc0dESUZv
bnRXZWlnaHRCb2xkKHdlaWdodCkgJiYgIWlzR0RJRm9udFdlaWdodEJvbGQobG9nRm9udC5sZldl
aWdodCk7CiAgICAgYm9vbCBzeW50aGVzaXplSXRhbGljID0gaXNJdGFsaWMoZm9udERlc2NyaXB0
aW9uLml0YWxpYygpKSAmJiAhbG9nRm9udC5sZkl0YWxpYzsKIAotICAgIGF1dG8gcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERl
c2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXpl
SXRhbGljLCB1c2VHREkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxGb250UGxhdGZv
cm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXpl
KCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOwogCiAjaWYgVVNF
KENHKQogICAgIGJvb2wgZm9udENyZWF0aW9uRmFpbGVkID0gIXJlc3VsdC0+Y2dGb250KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMzg3YTIzOWY4MjljMmQ3ODA5YzJjOTZk
M2ZlMTI0ZGVlMTRiZDNkNy4uNjQ4NDg1YWMyNmNiMjM3NWNmNjU3NGY4MWZmNGNkNjU2NzJjNTA4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgZm9udFJlZmVyZW5jZSA9IHJlbmFtZUFuZEFjdGl2
YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7
CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3Qg
U3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCAxOTA0NDkwMDQ1
ZjRlN2U3ZjdkYjgxZDk1ZjBhNmEyNDJiZDU0ODM4Li5lYWI4MDZlNDJjMDYyZDU1OTc4OTk0NTJl
ZmU3NDc0ZTU5OWY5MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTQxLDYgKzQx
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIAogc3Ry
dWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVi
bGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoSEFORExFIGZvbnRSZWZlcmVuY2UsIGNv
bnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAK
aW5kZXggYWI3Yzc5MGQ2MGYyZThmNzRhZjAzYzA2YWNmYzcyYzhlMzljMjJkOS4uZWVlYWZlYmQ5
MzNjYTljNzhkZDA1MTQxM2QyMzM0NGNhODUzYjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFDYWlyby5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmUKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJl
ZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNj
cmVlbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI5NTM1NTAzYzMwNmM1MDFhYTM5M2YzMWZmZDkyODg1
ZWRlOWJkZWYuLmNjN2FkM2VjMzEwYmFmZjlmMmQ1MzEzZWEzN2ViYjY2N2M3OWQ0ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1
bGxTY3JlZW5Db250cm9sbGVyLmNwcApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdGF0aWMgY29uc3QgaW50IGtGdWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7
IC8vIG1pbGxpc2Vjb25kcyAKIAogY2xhc3MgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZhdGUg
OiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCAgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByaXZhdGUoRnVsbFNjcmVlbkNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIsIEZ1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50KiBjbGllbnQpIAog
ICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpAQCAtMTAzLDcgKzEwNCw3IEBAIExS
RVNVTFQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZhdGU6OmZ1bGxzY3JlZW5DbGllbnRXbmRQ
cm9jKEhXTkQgaHduZCwgVUlOVCBtCiB9CiAKIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpGdWxsU2Ny
ZWVuQ29udHJvbGxlcihGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudCogY2xpZW50KQotICAgIDog
bV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UHJpdmF0ZT4odGhpcywgY2xpZW50KSkKKyAgICA6
IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFByaXZhdGU+KHRoaXMsIGNsaWVudCkpCiB7CiAgICAgQVNT
RVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CiB9CkBAIC0xMzEsMTMgKzEzMiwxMyBAQCB2b2lkIEZ1
bGxTY3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4oKQogICAgIG1fcHJpdmF0ZS0+bV9v
cmlnaW5hbEZyYW1lID0gb3JpZ2luYWxGcmFtZTsKIAogICAgIEFTU0VSVCghbV9wcml2YXRlLT5t
X2JhY2tncm91bmRXaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93ID0g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3By
aXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93ID0gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkp
OwogICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAg
ICAgOjpBbmltYXRlV2luZG93KG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5od25kKCks
IGtGdWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24sIEFXX0JMRU5EIHwgQVdfQUNUSVZBVEUpOwog
CiAgICAgbV9wcml2YXRlLT5tX2NsaWVudC0+ZnVsbFNjcmVlbkNsaWVudFdpbGxFbnRlckZ1bGxT
Y3JlZW4oKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93KTsKLSAg
ICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3By
aXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKICAgICBBU1NFUlQobV9wcml2YXRl
LT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwogICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93
LT5jcmVhdGVXaW5kb3coMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCmluZGV4
IDEwNjdiOTYwOTNkYjJlZDU5MWEyMWEzMWQ5ZDAyNTZkYzEyOTNlODkuLmYxNDQyNTcyY2M2ZDFk
NTRiYmVlNThiZGJjMzZlZGY3NzRhYWJiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2lu
LmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0
KEhEQyBkYywgYm9vbCBoYXNBbHBoYSkKIAogICAgIGNhaXJvX3QqIGNyID0gY3JlYXRlQ2Fpcm9D
b250ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOwogCi0gICAgbV9kYXRhID0gbmV3IEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENh
aXJvPihjcikpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY3IpKTsKICAgICBtX2RhdGEtPnBs
YXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fZGF0YSk7CiAgICAgbV9k
YXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggYzJiYWZhZjk2YTE2MDcwODBiNzYzMzk1
MjY2MmU3Njc3NjE0YjAwYy4uOTZjODI4MWFmNGIyMmM2Njg2YWNiMTRjNWU4MmMxZDY5YjkwZGQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEdy
YXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMsIElEMkQxRENSZW5kZXJUYXJn
ZXQqKiByZW5kZXJUYXJnZXQsIFJFCiAKICAgICAoKnJlbmRlclRhcmdldCktPkJpbmREQyhoZGMs
ICZyZWN0KTsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFyZ2V0KTsKKyAgICBhdXRvIG93
bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4o
KnJlbmRlclRhcmdldCk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwgQml0bWFwUmVuZGVyaW5nQ29u
dGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGhkYzsKIH0KQEAgLTEy
Niw3ICsxMjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBoZGMs
IGJvb2wgaGFzQWxwaGEpCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBhdXRvIG93bmVk
UGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVu
ZGVyVGFyZ2V0LmdldCgpKTsKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNvbnRleHQpLCBCaXRtYXBSZW5kZXJpbmdD
b250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1faGRjID0gaGRjOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGJkNzZlZmJiYTlkMGU4OTdk
M2QyODhlODVlOGQyNDQ0Y2M0ZjhmNGUuLjFlYmI1YjA5ZDM4NTM3YzAxOTIyMGI5NDdkY2FkOTQ0
ZDhlMTAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3Rvcnkg
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1D
b250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29u
dGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAg
ICAgICAgfSk7CiB9CiAKQEAgLTU1LDE0ICs1NSwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBo
aWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRl
RgogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5
KAogICAgICAgICBbcmVuZGVyVGFyZ2V0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVy
VGFyZ2V0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29u
dGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKICAg
ICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9y
bUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQ
VU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJl
bmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0
LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZh
dGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKQEAgLTcwLDkgKzcwLDkgQEAgR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXgKIAogR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJRDJEMVJl
bmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250
ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9vd25lZFBs
YXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihy
ZW5kZXJUYXJnZXQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVlPFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQogICAgICwgbV9wbGF0Zm9ybUNv
bnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtl
X3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0
LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkp
KQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdD
b250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFw
aGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5j
Q29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCmluZGV4IDVi
ZGU0Y2VkZjUxNmE5MTc5YTZkM2QzYjNlMzNkMTM0ZWQ1YWI1MTEuLjFkODA0MjBjZjdlYzZjZDc3
NWE2MmJhZWEyMmY5OTA2MDdlYjRjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCkBAIC05NSw3
ICs5NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6V2luZG93c0JpdG1hcDo6fldpbmRvd3NCaXRtYXAo
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0OjpXaW5kb3dzQml0bWFwPiBHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dzQml0bWFwPihtX2RhdGEtPm1faGRj
LCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaW5kb3dzQml0bWFwPihtX2RhdGEtPm1f
aGRjLCBzaXplKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKaW5kZXggMDZj
MTc0NTc5YTRiYzEzMDkxZjM0YjU3OTRhYWE5Mjk5M2JiYmEyNC4uMzVhOWZmNjExMzUxYzMzYzcx
NzRkOTJhMWZkY2Y0NDcwZTgxYTg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcApAQCAtMTEy
LDggKzExMiw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIE5vdGU6IFRoaXMgcGxhY2VzIHRoZSBiaXRtYXBjb250ZXh0IGludG8gYSBsb2NrZWQg
c3RhdGUgYmVjYXVzZSBvZiB0aGUgQmVnaW5EcmF3IGNhbGwgaW4gdGhlIGNvbnN0cnVjdG9yLgot
ICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKLSAgICBtX2RhdGEuY29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEucGxhdGZvcm1Db250ZXh0
LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVN
ZW1vcnkpOworICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICBtX2RhdGEuY29udGV4
dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEucGxhdGZvcm1Db250ZXh0Lmdl
dCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1v
cnkpOwogCiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRv
dy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAppbmRleCBlMDY2MzEwYTBhY2E3MWJkOWFjODFkZDE2YmEw
ZGIxNWE3ZDUxMWQ1Li5kMjg1MzhhMTU4MjI4YjJjODllMTgzYzczOTE0ZTEyYjhhMTg5MTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCB7CiB9
OwogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqKTsKICAgICB+
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA1ODM4ZWMxNTdhMmM3YjcxNjNi
NzE2ODJhNGViOGM4MDM0ZTk2MzIxLi42ZDY0YWU5YTZlM2E0MTdmYjE0ZjEyMTY2ZjY4ZDNjOWE1
NTI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmNwcApAQCAtODIsNyArODIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsgfSwKKyAgICAgICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAg
Z2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgfQogfQpA
QCAtMzAxLDcgKzMwMSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCgpIGNv
bnN0CiB7IAotICAgIGF1dG8gcmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KCk7CisgICAgYXV0byByYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKTsKICAgICBpZiAobV9wcmVzZW50ZXIgJiYgbV9wcmVzZW50ZXItPm1heFRpbWVMb2FkZWQo
KSA+IDApCiAgICAgICAgIHJhbmdlcy0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fcHJlc2VudGVyLT5tYXhUaW1lTG9hZGVkKCkpKTsKICAg
ICByZXR1cm4gcmFuZ2VzOwpAQCAtODg4LDcgKzg4OCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVvUHJlc2VudGVy
KE1lCiAgICAgbV9zb3VyY2VSZWN0LmJvdHRvbSA9IDE7CiAgICAgbV9zb3VyY2VSZWN0LnJpZ2h0
ID0gMTsKIAotICAgIG1fcHJlc2VudGVyRW5naW5lID0gc3RkOjptYWtlX3VuaXF1ZTxEaXJlY3Qz
RFByZXNlbnRlcj4oKTsKKyAgICBtX3ByZXNlbnRlckVuZ2luZSA9IG1ha2VVbmlxdWU8RGlyZWN0
M0RQcmVzZW50ZXI+KCk7CiAgICAgaWYgKCFtX3ByZXNlbnRlckVuZ2luZSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgKaW5k
ZXggOTBlOWI3MjE1NzA4YWMyYTJlZmY3ZDRhNmFkZTE0N2VlZTI4ODQ2Ni4uYTIxNjYxMTBiMzgw
MGYxNzY0NzE2NWMyZDAyYTBkYTllYTk1MTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uaApAQCAtNDcsNiArNDcsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBw
dWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uKE1lZGlhUGxheWVyKik7CiAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbigpOwpAQCAtMTY4LDYgKzE2OSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAg
ICAgfTsKIAogICAgIGNsYXNzIEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMgSU1GQXN5bmNDYWxsYmFj
aywgcHVibGljIE1lZGlhUGxheWVyTGlzdGVuZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFzeW5jQ2FsbGJhY2soTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uKiwgYm9vbCBldmVudCk7CiAgICAgICAgIH5Bc3luY0NhbGxi
YWNrKCk7CkBAIC0xOTEsNiArMTkzLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICB0
eXBlZGVmIERlcXVlPENPTVB0cjxJTUZTYW1wbGU+PiBWaWRlb1NhbXBsZUxpc3Q7CiAKICAgICBj
bGFzcyBWaWRlb1NhbXBsZVBvb2wgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFZpZGVvU2FtcGxlUG9vbCgpID0gZGVmYXVsdDsKICAgICAg
ICAgdmlydHVhbCB+VmlkZW9TYW1wbGVQb29sKCkgPSBkZWZhdWx0OwpAQCAtMjEyLDYgKzIxNSw3
IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1Ymxp
YyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgY2xhc3MgRGlyZWN0M0RQcmVzZW50ZXI7
CiAKICAgICBjbGFzcyBWaWRlb1NjaGVkdWxlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVmlkZW9TY2hlZHVsZXIoKSA9IGRlZmF1bHQ7
CiAgICAgICAgIHZpcnR1YWwgflZpZGVvU2NoZWR1bGVyKCkgPSBkZWZhdWx0OwpAQCAtMjU3LDYg
KzI2MSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6
IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgfTsKIAogICAgIGNsYXNzIERp
cmVjdDNEUHJlc2VudGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgogICAgICAgICBEaXJlY3QzRFByZXNlbnRlcigpOwogICAgICAgICB+RGlyZWN0M0RQ
cmVzZW50ZXIoKTsKQEAgLTMxOSw2ICszMjQsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYQog
ICAgICAgICAsIHB1YmxpYyBJTUZWaWRlb0Rpc3BsYXlDb250cm9sCiAgICAgICAgICwgcHVibGlj
IElNRkFzeW5jQ2FsbGJhY2sKICAgICAgICAgLCBwdWJsaWMgTWVkaWFQbGF5ZXJMaXN0ZW5lciB7
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
Q3VzdG9tVmlkZW9QcmVzZW50ZXIoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKik7
CiAgICAgICAgIH5DdXN0b21WaWRlb1ByZXNlbnRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQuaAppbmRleCA2ZmJlMmI1ZWQ3NWFiM2JhMDRlMzAyNTQ5Y2NlYjkxNjFhZjVjMDEzLi4xOTA1
NDBlMDMzZDliN2NjOGM1NGI4YjFiZWY3NzY5MmJkNWY5NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQuaApAQCAtNDUsNiArNDUsNyBAQCBzdHJ1Y3QgU2hhZG93U3RhdGU7CiB9CiAKIGNs
YXNzIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCk7CiBw
dWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQoSUQyRDFSZW5kZXJUYXJnZXQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1h
Z2VRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUlt
YWdlUXVldWUuY3BwCmluZGV4IDMzN2ZhZjM3OGRhNzk1NWJlYTYxMGFlYzkwNzU3OTY2ZDZjNDgy
MDAuLjlkN2Q5MmU4ZWFkOTZhMWJiZGZiZDFkOTJkYzk2NjIxYzZjNDJmNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVl
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXS0NB
SW1hZ2VRdWV1ZVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFJldGFpblB0cjxDQUltYWdlUXVldWVSZWY+IG1faW1hZ2VRdWV1ZTsKIH07CkBAIC01
MCwxMyArNTEsMTMgQEAgc3RhdGljIHZvaWQgV0tDQUltYWdlUXVldWVSZWxlYXNlKENBSW1hZ2VR
dWV1ZVJlZiBpcSkKIH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKHVpbnQzMl90
IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGNhcGFjaXR5KQotICAgIDogbV9wcml2
YXRlKHN0ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQorICAgIDogbV9w
cml2YXRlKG1ha2VVbmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQogewogICAgIG1fcHJp
dmF0ZS0+bV9pbWFnZVF1ZXVlID0gYWRvcHRDRih3a0NBSW1hZ2VRdWV1ZUNyZWF0ZSh3aWR0aCwg
aGVpZ2h0LCBjYXBhY2l0eSkpOwogfQogCiBXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUo
Y29uc3QgV0tDQUltYWdlUXVldWUmIG8pCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1
ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxX
S0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUg
PSBvLm1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDcxYTAwYTMwYzBmYWVkZDliNDBlYzRmZmFk
ZjE3ODYzOGYyNWI4NTQuLjQyMjUyZDM0YjU0ZmU2YzJjMjZiNTIyYzY2MGU4NjJmMDU2ZWYwOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAg
LTQzLDI0ICs0MywyNCBAQCBlbnVtIENsaXBib2FyZERhdGFUeXBlIHsKIAogc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIkNMSVBCT0FSRCIpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlv
bigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIlBSSU1BUlki
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiUFJJTUFSWSIpOwogfQogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKIH0KIAogc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9w
KGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEucGxhdGZv
cm1EYXRhKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFn
RGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4o
KmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggNDkwMzcxYWQ4OWVm
MmU3OTZlMzQwMWFhYzFkYmI4MDZlYTk2NmViMC4uYWY4ZmYzNDI0NmJjOTcyZjFhNWZmNzM3Zjk5
Mjk4MDlmYjY2OWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmNwcApAQCAtMjY2LDYgKzI2Niw3IEBAIFZlY3RvcjxHZGtBdG9tPiBQYXN0
ZWJvYXJkSGVscGVyOjpkcm9wQXRvbXNGb3JDb250ZXh0KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtE
cmFnCiBzdGF0aWMgU2VsZWN0aW9uRGF0YSogc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbjsKIAog
c3RydWN0IENsaXBib2FyZFNldERhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKQogICAgICAgICA6
IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAgICAsIHNlbGVjdGlvbkNsZWFyZWRDYWxs
YmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykpCkBAIC0zMDAsNyArMzAxLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBi
b2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWwKIAogICAgIGlmIChudW1iZXJPZlRhcmdldHMgPiAw
ICYmIHRhYmxlKSB7CiAgICAgICAgIFNldEZvclNjb3BlPFNlbGVjdGlvbkRhdGEqPiBjaGFuZ2Uo
c2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgY29uc3RfY2FzdDxTZWxlY3Rpb25EYXRhKj4oJnNl
bGVjdGlvbikpOwotICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBib2Fy
ZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBXVEZNb3ZlKHByaW1hcnlTZWxl
Y3Rpb25DbGVhcmVkKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8Q2xpcGJvYXJk
U2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJpbWFyeVNlbGVj
dGlvbkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YShj
bGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENsaXBib2FyZENvbnRlbnRzQ2Fs
bGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgZGF0YS5nZXQoKSkpIHsKICAg
ICAgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShjbGlwYm9hcmQsIG51bGxwdHIs
IDApOwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEoKSBz
dWNjZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sgdGFrZXMgdGhlIG93bmVyc2hp
cCBvZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAppbmRleCBiZGNjOTllODU5ZDQ5NzUwNzhm
ZjNjNWUyZWJjMzg1ZDliOTViOTUyLi43M2UwNzU4YTZlZGQxZTE5MzIzMTA4M2Y4OWE3ZTdmZGYy
MGQxMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHYWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUdhZGdldC5jcHAKQEAgLTM1LDIwICszNSwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhl
bWVHYWRnZXQ+IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoY29uc3QgUmVuZGVyVGhlbWVHYQog
ewogICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6
VHlwZTo6R2VuZXJpYzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3Ms
IHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpUZXh0RmllbGQ6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2Fk
Z2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxp
bmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6UmFkaW86
CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6Q2hlY2s6Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQs
IHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRo
ZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAg
Y2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QXJyb3c6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGlu
Z3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVBcnJv
d0dhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVu
ZGVyVGhlbWVHYWRnZXQ6OlR5cGU6Okljb246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRp
b24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUljb25HYWRnZXQ+KGlu
Zm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2Fk
Z2V0OjpUeXBlOjpTY3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlv
bik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0
PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVt
ZUdhZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24p
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5m
bywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZVdpZGdldC5jcHAKaW5kZXggMDVkMTJkZDllYWZiZWYwMmE0NTljYTUyNzY0MTdhNWI5YjBlODk3
Ni4uY2E2ZWQ5MThhNTAzM2UyOTc2ZGI4NGQ4OWMyMDQ4ODcwMGYwMmJjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCkBAIC00Miw0
OSArNDIsNDkgQEAgUmVuZGVyVGhlbWVXaWRnZXQmIFJlbmRlclRoZW1lV2lkZ2V0OjpnZXRPckNy
ZWF0ZShUeXBlIHdpZGdldFR5cGUpCiAgICAgYXV0byBhZGRSZXN1bHQgPSB3aWRnZXRNYXAoKS5l
bnN1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdpZGdldFR5cGUpLCBbd2lkZ2V0VHlwZV0oKSAt
PiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVXaWRnZXQ+IHsKICAgICAgICAgc3dpdGNoICh3
aWRnZXRUeXBlKSB7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRp
Y2FsU2Nyb2xsYmFyUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6
OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUws
IFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6
VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9z
aXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jp
em9udGFsU2Nyb2xsYmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRo
ZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDoKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05f
VkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRB
VElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsSW5kaWNh
dG9yTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1l
U2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9u
OjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xs
YmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2Rl
OjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNjcm9s
bEluZGljYXRvcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRo
ZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpDaGVja0J1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6
VHlwZTo6Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVU
b2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7CiAgICAg
ICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlJhZGlvQnV0dG9uOgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRl
clRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246
OlR5cGU6OlJhZGlvKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0
dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0
b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6
Ok5vKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0dG9uRGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9u
PihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6
WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6Q29tYm9Cb3g6Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUNvbWJvQm94Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVDb21ib0JveD4oKTsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6RW50cnk6Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oKTsKICAgICAgICAgY2FzZSBS
ZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VsZWN0ZWRFbnRyeToKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJlbmRlclRoZW1lRW50cnk6OlNl
bGVjdGVkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVF
bnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7CiAgICAgICAgIGNhc2UgUmVu
ZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNlYXJjaEVudHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+KCk7CiAgICAgICAgIGNhc2Ug
UmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNwaW5CdXR0b246Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CiAgICAgICAgIGNhc2Ug
UmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2xpZGVyOgotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9W
RVJUSUNBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRl
cj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNsaWRlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09S
SUVOVEFUSU9OX0hPUklaT05UQUwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpU
eXBlOjpQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVy
bWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jl
c3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVybWluYXRlKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SW5kZXRlcm1pbmF0ZVByb2dyZXNzQmFy
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVz
c0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5kZXRlcm1pbmF0ZSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJU
aGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsKICAgICAgICAgY2FzZSBSZW5k
ZXJUaGVtZVdpZGdldDo6VHlwZTo6TGlzdFZpZXc6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVt
ZVdpZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lSWNvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lSWNvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6V2lu
ZG93OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVXaW5k
b3c+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4o
KTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlJl
bmRlclRoZW1lU2Nyb2xsYmFyKEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBNb2RlIG1vZGUK
ICAgICBpbmZvLnR5cGUgPSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJpYzsKICAgICBp
bmZvLm5hbWUgPSAiY29udGVudHMiOwogICAgIGluZm8uY2xhc3NMaXN0LmNsZWFyKCk7Ci0gICAg
bV9jb250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8s
IEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1fc2Nyb2xsYmFyLmdldCgpKTsK
KyAgICBtX2NvbnRlbnRzID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywg
R1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIuZ2V0KCkpOwog
ICAgIGluZm8ubmFtZSA9ICJzbGlkZXIiOwogICAgIG1fc2xpZGVyID0gUmVuZGVyVGhlbWVHYWRn
ZXQ6OmNyZWF0ZShpbmZvLCBtX2NvbnRlbnRzLT5jaGlsZChtX3Ryb3VnaFBvc2l0aW9uKSk7CiB9
CkBAIC0xOTcsNyArMTk3LDcgQEAgUmVuZGVyVGhlbWVDb21ib0JveDo6UmVuZGVyVGhlbWVDb21i
b0JveCgpCiAgICAgfTsKICAgICBpbmZvLm5hbWUgPSAiYm94IjsKICAgICBpbmZvLmNsYXNzTGlz
dCA9IHsgImhvcml6b250YWwiLCAibGlua2VkIiB9OwotICAgIG1fYm94ID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKKyAgICBtX2JveCA9IG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBj
aGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CiAgICAgUmVuZGVyVGhlbWVHYWRnZXQqIGJ1dHRv
biA9IG1fYm94LT5jaGlsZCgwKTsKICAgICBpbmZvLmNsYXNzTGlzdC5yZW1vdmVMYXN0KCk7CiAg
ICAgbV9idXR0b25Cb3ggPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGluZm8sIGJ1dHRvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDg0MDdjMTEwMWRkZDZkYjZlMzc4ZGVm
Y2IzYWI4MjZiZjcyNjQ1NGQuLjc4Njk3ZWIwMDAwZjdmN2I4MmE3ZDBlY2Y1Zjk4NWExZTkyODlj
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wg
Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIoYm9vbCBvbmx5U2l6ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1n
RGF0YU9mZnNldCwgZmFsc2UpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8Qk1QSW1h
Z2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwgZmFsc2UpOwog
ICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3YmE3ZWQ5MTAxY2UyNWE5YmY2ZTIzMTA4N2JmMGJj
MTE0Y2MyMmQ2Li40ZjM0ODdlMzM0NzY0MDU0NzRjZjg2YjVjNjA2ZDJjMTk4OGM3Y2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgR0lGSW1h
Z2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5LCBi
b29sIGFsbERhdGFSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpIHsKLSAg
ICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsK
KyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsKICAg
ICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuY3BwCmluZGV4IDFjY2E1ZTU5ZWViMzUxYjA1OGEyMWRiMTM0ZjY0Mzc5MWU1
MDc3Y2EuLmQ3NzE4NmVhOTczOWJkZmIyYzU2MjI4ZWU0Y2Y1ZTg4MjhkODg1OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlUmVhZGVyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIGJvb2wgR0lGRnJhbWVDb250
ZXh0OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2Vi
Q29yZTo6CiAgICAgICAgIGlmICghaXNEYXRhU2l6ZURlZmluZWQoKSB8fCAhaXNIZWFkZXJEZWZp
bmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBtX2x6d0NvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNsaWVudCwgdGhpcyk7CisgICAgICAg
IG1fbHp3Q29udGV4dCA9IG1ha2VVbmlxdWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlzKTsK
ICAgICAgICAgaWYgKCFtX2x6d0NvbnRleHQtPnByZXBhcmVUb0RlY29kZSgpKSB7CiAgICAgICAg
ICAgICBtX2x6d0NvbnRleHQgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OnNldFJlbWFpbmluZ0J5dGVz
KHNpemVfdCByZW1haW5pbmdCeXRlcykKIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OmFkZEZyYW1lSWZO
ZWNlc3NhcnkoKQogewogICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5KCkgfHwgbV9mcmFtZXMubGFz
dCgpLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7CisgICAgICAgIG1fZnJhbWVz
LmFwcGVuZChtYWtlVW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7CiB9
CiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIHRvIGNsb3NlIHRvIGRvTFpXKCkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDE4NzBiYjE2MGI4NDk0OGYwYjU5ZGU0NTExNjM2
YmE0YzBmMzhmMmUuLmZmNmExYzg3YWU2ZjA1YjQ5Y2NjMTI4YWJlMDVjMzAzZDZlZWJhZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBJQ09J
bWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBoYXZlIGFscmVhZHkgc2l6ZWQgbV9mcmFtZUJ1ZmZlckNhY2hlIGJlZm9yZSB0
aGlzLCBhbmQKICAgICAgICAgICAgIC8vIHdlIG11c3Qgbm90IHJlc2l6ZSBpdCBhZ2FpbiBsYXRl
ciAoc2VlIGNhdXRpb24gaW4gZnJhbWVDb3VudCgpKS4KICAgICAgICAgICAgIEFTU0VSVChtX2Zy
YW1lQnVmZmVyQ2FjaGUuc2l6ZSgpID09IG1fZGlyRW50cmllcy5zaXplKCkpOwotICAgICAgICAg
ICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+
KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOworICAgICAgICAgICAgbV9i
bXBSZWFkZXJzW2luZGV4XSA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2lu
ZGV4XS0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2lu
ZGV4XS0+c2V0QnVmZmVyKCZtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjcyYzU1YTJjYjkwOWZhMzQ2MWNm
Nzk1ZjA0ZGNlYWQ1MTA0ZThlZS4uZDBiOTE2YTVkYWY4YTNhYTI1NGY0OTczNDczYTgzMTU1NzI5
ZGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC02NTMsNyArNjUzLDcg
QEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0gICAg
ICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRoaXMpOwor
ICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8SlBFR0ltYWdlUmVhZGVyPih0aGlzKTsKIAog
ICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVk
IGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCBjMThhMzliNTkxMzNhMzE4ZjE1MTA1ODFlOGY5MWViZGQ3Njg3
OWFiLi42MmNiOWIyMmEwMWYyNmU5ZjJjZDQxZGVhMzgxYjM2MzY4OTdlZTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNv
ZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5zaWduZWQgaGFsdEF0RnJhbWUsIGJvb2wgYWxs
RGF0YVJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0gICAgICAgIG1f
cmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAg
IG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CiAKICAgICAvLyBJ
ZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2ZSByZWNlaXZlZCBhbGwgdGhl
IGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IDIwOWY4OGY0N2EzYjdjZGMwMTQz
ZGU5MmUyNGJhZGRmOTY2NGI1ZjQuLmNhZTNkY2YxNjQ3OTZjZWVjYjY4YjI0NDhmMTEzM2MxMGVj
OWMyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
Q2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBMZWdhY3lUaWxlQ2Fj
aGU6OkxlZ2FjeVRpbGVDYWNoZShXQUtXaW5kb3cqIHdpbmRvdykKICAgICA6IG1fd2luZG93KHdp
bmRvdykKICAgICAsIG1fdG9tYnN0b25lKGFkb3B0TlMoW1tMZWdhY3lUaWxlQ2FjaGVUb21ic3Rv
bmUgYWxsb2NdIGluaXRdKSkKLSAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQoc3RkOjptYWtlX3Vu
aXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQorICAgICwgbV96b29tZWRP
dXRUaWxlR3JpZChtYWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSkp
CiAgICAgLCBtX3RpbGVDcmVhdGlvblRpbWVyKCp0aGlzLCAmTGVnYWN5VGlsZUNhY2hlOjp0aWxl
Q3JlYXRpb25UaW1lckZpcmVkKQogewogICAgIFtob3N0TGF5ZXIoKSBpbnNlcnRTdWJsYXllcjpt
X3pvb21lZE91dFRpbGVHcmlkLT50aWxlSG9zdExheWVyKCkgYXRJbmRleDowXTsKQEAgLTIzNiw3
ICsyMzYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQogCiAg
ICAgaWYgKG1fY3VycmVudFNjYWxlICE9IG1fem9vbWVkT3V0VGlsZUdyaWQtPnNjYWxlKCkpIHsK
ICAgICAgICAgaWYgKCFtX3pvb21lZEluVGlsZUdyaWQpIHsKLSAgICAgICAgICAgIG1fem9vbWVk
SW5UaWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3Rp
bGVTaXplKTsKKyAgICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9IG1ha2VVbmlxdWU8TGVn
YWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKICAgICAgICAgICAgIFtob3N0TGF5ZXIo
KSBhZGRTdWJsYXllcjptX3pvb21lZEluVGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKV07CiAgICAg
ICAgICAgICBob3N0TGF5ZXJTaXplQ2hhbmdlZCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCmluZGV4IDY2NDdlYzNhMzZkMTU4Nzg2
OTRmMDdkMDJiMWZiMWU4YzM1MGQ1M2YuLjMwZWY5ZmMzMWM4N2YxMWJmYWZlNGNhNmE5ZWE4MTI0
ZDVmYzNhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3Jp
ZC5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVRp
bGVHcmlkVGlsZTsKIAogY2xhc3MgTGVnYWN5VGlsZUdyaWQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgSW50UG9pbnQgVGlsZUluZGV4OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE5MWFj
NzY5NjIxNTEyMTUzZGJkY2IwNzhkZDY2ZjQ2NTUzYmMyMWQuLjAyNzFiOTNlNzA1Y2UyYzQyZDYz
MmZlMmRiMjlhYTQ2ZTgzNmQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC02NiwxMiArNjYsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXRE
cmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVi
b2FyZCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJkYXRhIGludGVyYWN0
aW9uIHBhc3RlYm9hcmQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJv
YXJkTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5w
YXN0ZWJvYXJkTmFtZSgpKTsKIH0KIAogI2VuZGlmCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9h
cmQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY2hhbmdlQ291bnRGb3JQ
YXN0ZWJvYXJkKCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRXZWJDb250ZW50JiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xv
b2subW0KaW5kZXggYTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEzMWNlNjQ2OTAyNTY4NS4uYzJi
NWEwYjA4YmRmNzVlOGMwMWNkOWJkMmQ1MWMzMTQ5MzA1ZjM4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC04NCw3ICs4NCw3IEBAIFJldGFpblB0cjxOU1VS
TFJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKnVybCwg
TlNTdHJpbmcKICAgICBpZiAoW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNv
bnRhaW5zT2JqZWN0OnVwZGF0ZWRNSU1FVHlwZS5nZXQoKV0pIHsKICAgICAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiB1dGkgPSBhZG9wdE5TKFBBTDo6c29mdExpbmtfUXVpY2tMb29rX1FMVHlwZUNv
cHlVVElGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIHVwZGF0ZWRNSU1FVHlwZS5nZXQoKSkpOwogCi0g
ICAgICAgIGF1dG8gY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVydGVy
PihkYXRhLCB1dGkuZ2V0KCkpOworICAgICAgICBhdXRvIGNvbnZlcnRlciA9IG1ha2VVbmlxdWU8
UHJldmlld0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKICAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0IHByZXZpZXdSZXF1ZXN0ID0gY29udmVydGVyLT5wcmV2aWV3UmVxdWVzdCgpOwogCiAgICAg
ICAgIC8vIFdlIHVzZSBbcmVxdWVzdCBVUkxdIGhlcmUgaW5zdGVhZCBvZiB1cmwgc2luY2UgaXQg
d2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNv
bW1hbmRMaXN0ZW5lcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVD
b21tYW5kTGlzdGVuZXJJT1MubW0KaW5kZXggMTA3Yzc3Yzc1M2VhYjdkOTJkYTI5NDg3Y2E2ZjY1
ZjgwNzA0ODIxMy4uNmQ5Y2NlMTViODc0ZjE1ZjE1NDg3NWVhMGVlNmI5ZjEwMzVhODM2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21t
YW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hCiAg
ICAgaWYgKCFNZWRpYVBsYXllckxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+KGNs
aWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TPihj
bGllbnQpOwogfQogCiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6OlJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQppbmRleCAwMWYwYTli
YjIwYTI0OGI2OTk4ODU2NDcwYWVlMzc0YTk4Y2ZhNTFjLi5lZDYzMmVhNWUzZjU1OTdlOWQ3NmZk
MmU1NTY5NTYxZmU2YzRjMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Njcm9sbEFuaW1hdG9ySU9TLm1tCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3Jl
YXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNj
cm9sbEFuaW1hdG9ySU9TOjpTY3JvbGxBbmltYXRvcklPUyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFz
dGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVi
b2FyZExpYldQRS5jcHAKaW5kZXggMDU0M2VkNWU5ZmM5ZmNmZTNiYmFhNDAzNTVlNDA3MmY5ZjNj
M2Y0MC4uZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3Y2Q2NzZlZmI5ZGU1YmM4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UGFzdGVib2FyZD4oKTsKIH0KIAogUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDUxNTIwZGNiYmVh
NTkyMTg1YzMyNjcwMmNiYTY5ZmU4OGI0ZDRkZGUuLjhlYjE1Y2Y4ODUyZDk4NTc0NDdlMDU5YzM4
YWNhZWJhMjM0MTVkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgUGFzdGVib2FyZDo6UGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvbWkKIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFsUGJvYXJkKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOwogICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9hcmQpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CiAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZHJh
Z0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGRyYWdE
YXRhLmZpbGVOYW1lcygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQppbmRleCAwNWNjMDg5
NTdlMWQ1MDEyNGRkNjMyZTJhNGM4OTIxMjk4OTY5NjExLi4xYWEyY2Q4MDEzMmYyYzIxZWUzOGI5
ZmZiZGI4MzM3M2JiZjRjMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVy
PiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGll
bnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWM+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjPihjbGllbnQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IGE4MzE3NTEyMmVjMmU0YjZiNmRlNTFi
ZTZkZjUyNjRiNDFhMWY4YzQuLjY4NjBlMzNjM2EzYjIxNTYzMDVmYjMxYWY0MjdkYzQ5MDIzNTg3
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMubW0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Ny
b2xsQW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
Y3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvck1h
Yzo6U2Nyb2xsQW5pbWF0b3JNYWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDFiOWRjNTM0NWI4ODFl
YjM2ZDk2ZmNlMzU4MmRmMGU1NGExMzg1YmEuLmUyNDQ1YmM4MjNmODZlMDU1YjBlNTc4NzdkNmNm
NTMxYTRmZmNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKICAgICBpZiAoIXdyaXRl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgpLCBX
VEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lkKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFzZU5v
bk51bGwoKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJZCkpOwog
fQogCiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYgd3JpdGVyLCBTdHJpbmcmJiBh
dWRpb1RyYWNrSWQsIFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5oCmluZGV4IGQ0YWRiMTUyYmQ0YmFlZjdlZjdiZjA1NWY2ZDlhODNkODY3
ZTY3ZWIuLmEyMmY1NzFiYzUxNjExZjYxNzQ0OTEwNGNmNWZjODYwZTUyZTlhZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CiAKIGNsYXNzIE1lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbCBmaW5hbCA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJpdmF0ZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IGNyZWF0ZShjb25zdCBNZWRp
YVN0cmVhbVByaXZhdGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBkYjk0ZmRhZjgzYThhYmQ2N2FmY2ZkNmVhMzY5ZmFh
ODljNDZjM2UyLi41OWFiMzg0MGZkNzM2Y2ExNDUwMTZjN2Y2NjBlY2EzYjA5MDMyNDgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcApA
QCAtOTEsMTQgKzkxLDE0IEBAIEF1ZGlvQ2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1lckF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6ZmFjdG9yeSgpCiAKIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0
cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UgZGV2aWNlLCBT
dHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBT
dHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2Fw
dHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPihkZXZpY2UpKQor
ICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KGRldmlj
ZSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1lckF1
ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRl
dmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1l
TWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFdURk1vdmUoZGV2
aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVy
ZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPigpKQorICAgICwgbV9j
YXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkpCiB7CiAgICAgaW5p
dGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9E
YXRhLmgKaW5kZXggOTUzZjNhOGEwZTRmNmEwNjJiOWI5NGE4ZjQxNTFhNDlmMWE0MzAxZC4uMzQx
NTQ5MjUxZWQ1NzFiNzVlZjVkMGMyZGVkZjFlNzdiNzUyMzc4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJBdWRpb0RhdGEuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPGdzdC9hdWRp
by9hdWRpby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHU3RyZWFtZXJBdWRpb0Rh
dGEgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgeworY2xhc3MgR1N0cmVhbWVyQXVkaW9EYXRh
IGZpbmFsIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKIHB1YmxpYzoKICAgICBHU3RyZWFt
ZXJBdWRpb0RhdGEoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBHc3RBdWRpb0luZm8gaW5m
bykKICAgICAgICAgOiBtX3NhbXBsZShXVEZNb3ZlKHNhbXBsZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVy
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDYXB0dXJlci5oCmluZGV4IGJiZTVhZTczOTU0YWU1M2NjMjE2NTc5M2VjMDk2YTg4Nzky
YWQ0ZjIuLmY5MmE2YTliMTI2MTEwMGYxOTM0NWY0ZWNhMjE5NGJmZTFiOGEzYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJDYXB0dXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lckNhcHR1cmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJDYXB0dXJlcihHU3RyZWFtZXJDYXB0
dXJlRGV2aWNlLCBHUmVmUHRyPEdzdENhcHM+KTsKICAgICBHU3RyZWFtZXJDYXB0dXJlcihjb25z
dCBjaGFyKiBzb3VyY2VGYWN0b3J5LCBHUmVmUHRyPEdzdENhcHM+KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IGIzYWYzNWFmODI0
ODhkZDRjZjgyMWNkM2VlYWU2M2Q5Y2YxYWNkODQuLmYzZTUxODZiZjY2ODc4MWVmYjEzOTVmZTg1
MWIzNDMyM2M0MmEzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlh
U3RyZWFtU291cmNlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIEdzdFN0cmVhbSogd2Via2l0TWVk
aWFTdHJlYW1OZXcoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHRyYWNrKQogCiBjbGFzcyBXZWJL
aXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIKICAgICA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcigpIHsgfTsKICAg
ICBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNy
YykKQEAgLTE0Myw2ICsxNDQsNyBAQCBjbGFzcyBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2
ZXIKIAogY2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcgogICAgIDogcHVibGljIE1lZGlh
U3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXIoKSB7IH07CiAg
ICAgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcihXZWJLaXRNZWRpYVN0cmVhbVNyYyogc3JjKQpA
QCAtMzUxLDggKzM1Myw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2Ns
YXNzX2luaXQoV2ViS2l0TWVkaWFTdHJlYW1TcmNDbGFzcyoga2xhc3MpCiAKIHN0YXRpYyB2b2lk
IHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYp
CiB7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOwotICAgIHNlbGYtPm1lZGlh
U3RyZWFtT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2
ZXI+KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlciA9IG1ha2VVbmlx
dWU8V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyPihzZWxmKTsKKyAgICBzZWxmLT5tZWRp
YVN0cmVhbU9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyPihz
ZWxmKTsKICAgICBzZWxmLT5mbG93Q29tYmluZXIgPSBnc3RfZmxvd19jb21iaW5lcl9uZXcoKTsK
ICAgICBzZWxmLT5maXJzdEF1ZGlvQnVmZmVyUHRzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAg
ICBzZWxmLT5maXJzdEZyYW1lUHRzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJW
aWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggZTVkOWIw
ZTAyNzZlZGRhNWRiZDUyMGJjMTBmMzUxODBkMDE1ZDY5Yi4uOTdiZTFmMTJmYmIyMmRjMzU4Yzk5
YzgzOWY5ODFmMTY1NmE4ZTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEyNywxNCArMTI3LDE0IEBAIERpc3BsYXlDYXB0
dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwbGF5RmFjdG9yeSgp
CiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwg
Y29uc3QgZ2NoYXIgKnNvdXJjZV9mYWN0b3J5KQogICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVT
b3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQp
KQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZXI+KHNvdXJjZV9mYWN0b3J5KSkKKyAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9yeSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJl
YW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcm
JiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyB7IGRl
dmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3Zl
KGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJW
aWRlb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJl
YW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRl
YnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRGVjb2RlckZh
Y3RvcnkuaAppbmRleCBlNGQ1MDhlMzE3OWFjNDdiZjFkMTBmNGYyODdjNTQ3YmMyNTYwMDJhLi5l
ZmRhMjliZTM5NzE4YmJhNzkxMzQxOGNjNzNlYjlhZDM2ODRmOGJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9E
ZWNvZGVyRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmgKQEAgLTMwLDYgKzMwLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFj
dG9yeSA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lclZpZGVvRGVjb2RlckZhY3Rv
cnkoKTsKICAgICBzdGF0aWMgYm9vbCBuZXdTb3VyY2UoU3RyaW5nIHRyYWNrSWQsIEdzdEVsZW1l
bnQgKnNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNv
ZGVyRmFjdG9yeS5jcHAKaW5kZXggNjk5NWM2MDJjYjE3NDQ3ZmE3NDFkMzlkNDQ5NGMzNTYxZGMx
YmI4Mi4uODM1ODFlODVhMzk2MmQ5N2UwMTc0M2IxMGU1NmNlYWExNTFjZWZiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1l
clZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcApAQCAt
NjAsNiArNjAsNyBAQCBHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X3dlYnJ0Y2VuY19kZWJ1Zyk7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lclZpZGVvRW5jb2RlciA6IHB1
YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9FbmNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlk
ZW9Gb3JtYXQmKQogICAgICAgICA6IG1fZmlyc3RGcmFtZVB0cyhHU1RfQ0xPQ0tfVElNRV9OT05F
KQpAQCAtNTEyLDE0ICs1MTMsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNv
ZGVyPiBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0UKICAgICAgICAg
Z19vYmplY3RfZ2V0KHdlYnJ0Y2VuY29kZXIuZ2V0KCksICJlbmNvZGVyIiwgJmVuY29kZXIub3V0
UHRyKCksIE5VTEwpOwogCiAgICAgICAgIGlmIChlbmNvZGVyKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZQOEVuY29kZXI+KGZvcm1hdCk7CiAKICAg
ICAgICAgR1NUX0lORk8oIlVzaW5nIFZQOCBFbmNvZGVyIGZyb20gTGliV2ViUlRDLiIpOwotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx3ZWJydGM6OkxpYnZweFZwOEVuY29kZXI+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx3ZWJydGM6
OkxpYnZweFZwOEVuY29kZXI+KCk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdC5uYW1lID09IGNy
aWNrZXQ6OmtIMjY0Q29kZWNOYW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
U3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oCmlu
ZGV4IDc5NmEyMGY5NDVlM2E5NTE5OGVjZTEwZmU3MGQ5YjUyZjcyMzNkMTEuLjE0ODNhMmIyMGIz
NTE1YzcxYjdhMGM3YTUyMjYyNmU5ZmY1MzkyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0
b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaApAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5IGZpbmFs
IDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCmlu
ZGV4IGRjNmY4ZjNmYjA1N2ZiNTQwZDkwYzAwMjI2OGE5OTc3NDQxMDI3N2YuLjRhMDYxZmNjOTUz
YjEzZDU4M2JhZTU1NDUxNTViY2UwOGRmOGY5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCkBAIC00MCw2ICs0MCw3IEBAIEFMTE9XX1VOVVNF
RF9QQVJBTUVURVJTX0VORAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMaWJXZWJSVENE
VE1GU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENEVE1GU2VuZGVyQmFja2VuZCwgcHJp
dmF0ZSB3ZWJydGM6OkR0bWZTZW5kZXJPYnNlcnZlckludGVyZmFjZSwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGliV2ViUlRDRFRNRlNlbmRlckJhY2tl
bmQocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RHRtZlNlbmRlckludGVyZmFjZT4mJik7CiAg
ICAgfkxpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcAppbmRleCAyMDdhYjc4YTlhMmJiZTQwYTBlZDRkYTY5NTY5YWVkYjEyMjk5
ZTIwLi43NDUzM2M1ZmE0ZGYwZDRlNWE2NGQ3NWNlNjI3YjMyNDJjNDZiODEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTc5LDkgKzc5LDEwIEBAIHN0YXRpYyBp
bmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYKIH0KIAogY2xhc3MgQmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IDogcHVi
bGljIHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnko
cnRjOjpUaHJlYWQmIG5ldHdvcmtUaHJlYWQpCi0gICAgICAgIDogbV9zb2NrZXRGYWN0b3J5KG1h
a2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFk
KSkKKyAgICAgICAgOiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkK
ICAgICB7CiAgICAgfQogCkBAIC0xNzksNyArMTgwLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMoUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5k
VGgKICAgICByZXN1bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPlN0YXJ0
KCk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAKLSAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0Rl
dmljZU1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7Cisg
ICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBtYWtlVW5pcXVlPExpYldl
YlJUQ0F1ZGlvTW9kdWxlPigpOwogfQogCiBzdGF0aWMgaW5saW5lIFBlZXJDb25uZWN0aW9uRmFj
dG9yeUFuZFRocmVhZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkKQEAgLTI4OCwxMCArMjg5
LDEwIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVh
ZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29j
a2V0U2VydmVyKTsKIAogICAgIGlmICghZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIp
Ci0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gc3RkOjptYWtlX3Vu
aXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJl
YWRzLm5ldHdvcmtNYW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRj
OjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5w
YWNrZXRTb2NrZXRGYWN0b3J5KQotICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2Nr
ZXRGYWN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpm
YWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVh
ZHMucGFja2V0U29ja2V0RmFjdG9yeSA9IG1ha2VVbmlxdWU8QmFzaWNQYWNrZXRTb2NrZXRGYWN0
b3J5PigqZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZCk7CiAgICAgZmFjdG9yeUFuZFRo
cmVhZHMucGFja2V0U29ja2V0RmFjdG9yeS0+c2V0RGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rp
b25zKG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKTsKIAogICAgIHJldHVybiBjcmVh
dGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5h
Z2VyLCAqZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25m
aWd1cmF0aW9uKSwgbnVsbHB0cik7CkBAIC0zMTQsNyArMzE1LDcgQEAgcnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpj
cmVhdGVQZWUKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0
b3I+IHBvcnRBbGxvY2F0b3I7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFk
LT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgewotICAgICAgICBhdXRvIGJhc2lj
UG9ydEFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2Nh
dG9yPigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0b3J5KTsKKyAgICAgICAgYXV0
byBiYXNpY1BvcnRBbGxvY2F0b3IgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxj
cmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tl
dEZhY3RvcnkpOwogICAgICAgICBpZiAoIW1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50
ZXJmYWNlcykKICAgICAgICAgICAgIGJhc2ljUG9ydEFsbG9jYXRvci0+c2V0X2ZsYWdzKGJhc2lj
UG9ydEFsbG9jYXRvci0+ZmxhZ3MoKSB8IGNyaWNrZXQ6OlBPUlRBTExPQ0FUT1JfRElTQUJMRV9B
REFQVEVSX0VOVU1FUkFUSU9OKTsKICAgICAgICAgcG9ydEFsbG9jYXRvciA9IFdURk1vdmUoYmFz
aWNQb3J0QWxsb2NhdG9yKTsKQEAgLTMzNSw3ICszMzYsNyBAQCBydGM6OlJUQ0NlcnRpZmljYXRl
R2VuZXJhdG9yJiBMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNhdGVHZW5lcmF0b3IoKQogewog
ICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGljRmFjdG9yeUFuZFRocmVhZHMo
bV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAgICAgaWYgKCFmYWN0b3J5QW5k
VGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMu
Y2VydGlmaWNhdGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6UlRDQ2VydGlmaWNh
dGVHZW5lcmF0b3I+KGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgZmFj
dG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5nZXQoKSk7CisgICAgICAgIGZhY3RvcnlBbmRU
aHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2ln
bmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgp
KTsKIAogICAgIHJldHVybiAqZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3I7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4IGJkZjA5MDA0MGM5MDY1
N2Y0OWYwY2U0YWUyODA3NzM4YTFlOGJlNzkuLjdhYThkZTJlYjNhNGM1NTVlMDlhNjBkN2Q3YzNh
ZDgzMTliMTE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBAIC02NCw2
ICs2NCw3IEBAIHN0cnVjdCBSVENSdHBDYXBhYmlsaXRpZXM7CiBlbnVtIGNsYXNzIE1ETlNSZWdp
c3RlckVycm9yIHsgTm90SW1wbGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFs
LCBUaW1lb3V0IH07CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgVW5pcXVl
UmVmPExpYldlYlJUQ1Byb3ZpZGVyPiBjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlckNvY29hLmgKaW5kZXggNzcyYTM5NWYwY2JiNDNlNzMwNzUwY2NiOTYzNjE2
MWNhYTM0MWM2My4uZDNjMzgzOTVjMDc3ZjM0NjA0YjViYjBmNGI0M2FlMTEwMGNkZjIzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oCkBAIC0zNyw3ICszNyw2
IEBAIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EgOiBwdWJsaWMgTGliV2Vi
UlRDUHJvdmlkZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKSA9IGRlZmF1bHQ7CiAgICAgfkxpYldlYlJUQ1Byb3Zp
ZGVyQ29jb2EoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3Ry
ZWFtZXIuY3BwCmluZGV4IDE1ZTJhODc4OWMwN2ZiMGQwYWVjNmY2YzIwZjdiYjE3ZmE4ZGI3ZDIu
LjViODI3M2IwODUxOTZmZmQzMGU0ZDdhN2Y2NTUxMGJlYzA4MDMxNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtNDQsMTIgKzQ0
LDEyIEBAIGJvb2wgTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpCiAKIHN0ZDo6
dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVy
R1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5PigpOwogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlckdTdHJl
YW1lcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmNwcAppbmRleCA4MmNiY2IxYzY2ZDMyZWExOGNkZWIxNjc5MzhkNjhkM2IxMmU0MTlhLi5m
N2Q4NWRjNjBhNjFhODE0NmRiYTBkMDNlNTVkNzU3NjJmZTkwZjgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcApAQCAtMTg4LDggKzE4
OCw4IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzCiAgICAgICAgIGlmICghcmVtb3RlSU9Vbml0
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9u
KTsKLSAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1faW5wdXRE
ZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERl
c2NyaXB0aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CiAKICAgICAgICAgbV9k
YXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24uc2Ft
cGxlUmF0ZSgpICogMiwgc3RyZWFtVHJhY2soKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5tbQppbmRleCBlOGUzZDM0ODZkYTQzYWFjMWRkNTRiNzhlNmI0ZGY0ZGM5
ODE2NzkwLi42MTFhYzE2YjllY2I4Njg5OGEzNzI2NDcxYzc2MjA3MTJmYjliMzg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAg
dm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUoKQogICAgIGNvbnN0
IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CiAgICAgRmlsbE91dEFTQkRGb3JMUENNKG1f
c3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCksIGNoYW5uZWxDb3VudCwgYml0c1BlckJ5dGUgKiBi
eXRlc1BlckZsb2F0LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGlzRmxvYXQsIGlzQmln
RW5kaWFuLCBpc05vbkludGVybGVhdmVkKTsKIAotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVh
bUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKKyAgICBtX2F1
ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX3N0cmVhbUZv
cm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVDb3Vu
dCk7CiAKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uOwogICAg
IENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShOVUxMLCAmbV9zdHJlYW1Gb3JtYXQsIDAs
IE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXREZXNjcmlwdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggZjlkYzRhODQ3ZjRh
MzU1ZDljY2ZmNGNkZTAzMDhkMGQ1YzVjNDQ1Ni4uMzg4ZDcxZTI0YjI1ZWJmNmQ3Nzg4MTRmZGQw
YTk2NjNiMTcwNTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2VDb2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVihDVlBpeAog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNvbmZvcm1l
cikKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4
ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlk
Z2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChwcmVmZXJl
ZFBpeGVsQnVmZmVyRm9ybWF0KCkpIH0pOworICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVy
ID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9u
YXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRU
eXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7CiAKICAgICByZXR1cm4g
bV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y29udmVydChwaXhlbEJ1ZmZlcik7CiB9CkBAIC03NSw3
ICs3NSw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIoCiAgICAgICAgIEludFNpemUgc2l6ZSA9
IHsgKGludClDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICwgKGludClDVlBpeGVs
QnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSB9OwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
dHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJvdGF0aW9uVG9BbmdsZShyb3Rh
dGlvbikpOwotICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8SW1h
Z2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVsQnVm
ZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Npb25W
VDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOworICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9
IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0pLCBz
aXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOwogICAgIH0KIAogICAg
IHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHBpeGVsQnVmZmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2suaAppbmRleCA4ZTI5ZDdiODFhMTczZGZhNTM3MDVmYTFlNjJjOWU4ODNjNGY5
NTAyLi5kNDc2OWQ2OWU0YWYwNDcwZDYyY2U5MGI3NTQ0MGUyODI3NjllN2NmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jay5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrIGZpbmFsIDogcHVibGljIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrKTsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayhNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKaW5kZXggM2M2ZGUx
YzRlYmU0ZWM3NDczNTQwYWVjY2I4OTc2MmIxOTU1NWNkNC4uMTM4OGFkMDUxMzEwOGIyZWI5MmVj
MmJiZTI4OTMzNjUyZTk5YTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKQEAgLTMzLDYgKzMzLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayBm
aW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBUaW1lckV2ZW50QmFz
ZWRNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVs
SW5pdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05v
dGlmaWVyc01vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmll
cnNNb2NrLmNwcAppbmRleCAyZjFmYjU1ZWU2NzFmMmYyMjhmYzUxNTFkMGRkNjljZjhlYzY5NWNi
Li4yYzdjNDFiZDY5NmZmMWY5YmFiMzgzODFhNGI1ODM4NTY4YjE4YTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6UmVtb3RlRGF0YUNoYW5uZWxOb3Rp
ZmllcihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGkKIAogdm9pZCBSZW1vdGVEYXRhQ2hhbm5l
bE5vdGlmaWVyOjpmaXJlKCkKIHsKLSAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5u
ZWwoc3RkOjptYWtlX3VuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CisgICAgbV9jbGllbnQt
PmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKG1ha2VVbmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENEYXRhQ2hhbm5lbEluaXQoKSkp
OwogfQogCiBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI6OkRhdGFDaGFubmVsU3RhdGVOb3RpZmll
cihSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCwgUlRDRGF0YUNoYW5uZWxTdGF0
ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5k
ZXggNTU5OTMzODJiM2ExZGMzNmQ4MzU2YjYxYjI1YzcwMDJlMDczNDdmZS4uMzg3YTIxZGFmNDU1
MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4ODY5MGQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQgTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0
cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwg
Z2V0U3VwcG9ydGVkVHlwZXMsCisgICAgcmVnaXN0cmFyKFtdIChNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBtYWtlVW5pcXVlPE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5ZXIp
OyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAw
KTsKIH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAgICAg
aWYgKG1fbWVkaWFTb3VyY2VQcml2YXRlKQogICAgICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVBy
aXZhdGUtPmJ1ZmZlcmVkKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigpOwogfQogCiBib29sIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpkaWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGNjNjdjZTY4OGYzYmNhMjIyNjkwYjQzZjEw
NTg3OGJhOWUzYzI4ZjguLjkwNTE0MzE2MjFhOGMxMDhhNmVmMGY1MWViNjBmNzc0YWZjYzBhMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNv
dXJjZUhhbmRsZS5jcHAKQEAgLTE1OSw5ICsxNTksOSBAQCBCbG9iUmVzb3VyY2VIYW5kbGU6OkJs
b2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVz
dAogICAgICwgbV9hc3luYyB7IGFzeW5jIH0KIHsKICAgICBpZiAobV9hc3luYykKLSAgICAgICAg
bV9hc3luY1N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7
CisgICAgICAgIG1fYXN5bmNTdHJlYW0gPSBtYWtlVW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRo
aXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVT
dHJlYW0+KCk7CisgICAgICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZTxGaWxlU3RyZWFtPigpOwog
fQogCiBCbG9iUmVzb3VyY2VIYW5kbGU6On5CbG9iUmVzb3VyY2VIYW5kbGUoKSA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCmluZGV4IDgxMTJiOTczZWVmNTRlZDdhNWM3YTUxNGNmMTAyYWM5OTFlNzY1MzMuLmI1NDFm
NjJlZTAwNTIwMzYyYzE1NTdmN2NhNDk2NGEyMzdiODc0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCkBAIC0xNDUsNyArMTQ1
LDcgQEAgY2xhc3MgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPERlY29kaW5nUmVzdWx0RGlzcGEKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNrKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVs
ZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVUYXNr
PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVUYXNrPigKICAgICAgICAgdXJsLnN0cmlu
ZygpLAogICAgICAgICBzY2hlZHVsZUNvbnRleHQsCiAgICAgICAgIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlRXJyb3JCYXNlLmgKaW5kZXggYTk4NDNmNTBlNWE0MzQwM2Q4ZjUyZjBhOTY3ZjkwMjc4NjVl
OGQ1Ni4uOGRhZWM1NGExMzQyZGFiNTljMzVjYzQ5MjdhMDBmZTYyMjk0OTY4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApA
QCAtMzcsNiArMzcsNyBAQCBXRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciogY29uc3Qg
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbDsgLy8gVXNlZCBmb3IgZQogV0VCQ09SRV9FWFBPUlQg
ZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2ViS2l0U2VydmljZVdvcmtlcjsg
Ly8gVXNlZCBmb3IgZXJyb3JzIHRoYXQgaGFwcGVuIHdoZW4gbG9hZGluZyBhIHJlc291cmNlIGZy
b20gYSBzZXJ2aWNlIHdvcmtlci4KIAogY2xhc3MgUmVzb3VyY2VFcnJvckJhc2UgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291
cmNlRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggMzBjMjdmNTc2YTE3N2U2
YjZhYjE5NDc0MGE3ZDkwMjViNjU5ZmNhZC4uNmEzMWUzZTUyN2Y4ZWM5MmQ2ZjYyYjk2Y2RkODE5
NDQxNGI1NWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29uc3QgQXRvbVN0cmluZyYgcHJvdG9j
b2wKIH0KIAogUmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxl
Q2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpCi0gICAgOiBkKHN0ZDo6bWFrZV91
bmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xp
ZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNu
aWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikpCisgICAg
OiBkKG1ha2VVbmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhpcywgY29udGV4dCwgcmVx
dWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYgJiYgc2hvdWxk
Q29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
ZikpCiB7CiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLmlzVmFsaWQoKSkgewogICAgICAgICBzY2hl
ZHVsZUZhaWx1cmUoSW52YWxpZFVSTEZhaWx1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHAKaW5kZXggZGFkOTAxMGY5NTcwZWJjNTY3NjMzNTQzZmQxZmM1MDJmODQ2OWI5OS4u
NzEzYjRkZmIzMGIyYWZkZmJlYWZmNGVlNTM3MGEyNTQ2ZmFkM2E0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVm
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OndpbGxTZW4KICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBA
IC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UKICAgICB9OwogCiAgICAg
aWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBt
X21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdv
cmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRSZWNlaXZlRGF0YShDRkQKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkK
LSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVu
ZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNl
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNTEsNyAr
MjUxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICB9OwogICAgIAogICAgIGlmICht
X21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNz
YWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7
CiB9CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWlsKENGRXJyb3JSZWYKICAgICB9Owog
CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAg
ICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4o
V1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZN
b3ZlKHdvcmspKTsKIH0KQEAgLTMxMSw3ICszMTEsNyBAQCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVm
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OgogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0z
MzEsNyArMzMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmcKICAgICB9OwogCiAgICAgaWYg
KG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmsp
KTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRCb2R5RGF0YShDRgogICAgIH07
CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7Cisg
ICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+
PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdU
Rk1vdmUod29yaykpOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIEJvb2xlYW4gUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRv
UHJvCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVz
c2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBjOWI1M2UzMTJhZDg1NTc2ZDM2NmVmNGRjNTM3NDM5
MWZlOGM2OTBjLi5iYTU1ZjAwNDhiOGU0ZGRjNWIwNzM0ZDk5M2RjOWIxM2I4Y2IyYjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01MjMsNyArNTIzLDcgQEAgLSAodm9pZClfcmVzdGFy
dAogCiAgICAgX3Jlc291cmNlID0gc2VsZi5zZXNzaW9uLmxvYWRlci5yZXF1ZXN0UmVzb3VyY2Uo
c2VsZi5vcmlnaW5hbFJlcXVlc3QsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9w
dGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoX3Jlc291cmNlKQotICAgICAgICBfcmVz
b3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudD4oc2VsZikpOworICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5p
cXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2VsZikpOwogfQogCiAtICh2
b2lkKV9jYW5jZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGE0NWE1ZjRlNGEwMjhmZTZlN2YyZGZiNzVlYzJjOGFl
YzkzZWQyYmIuLjEwMTYyNGYyOTAwYTk0Y2M3ZDFhODk5ODk2NzZkNmI0NWFiN2ZhM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBDb29raWVK
YXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0CiAgICAgICAg
ICJBTkQgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdMT0IgPykpICJcCiAgICAgICAgICJPUkRF
UiBCWSBsZW5ndGgocGF0aCkgREVTQywgbGFzdHVwZGF0ZWQiOwogCi0gICAgYXV0byBwc3RtdCA9
IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAg
IGF1dG8gcHN0bXQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3Fs
KTsKICAgICBpZiAoIXBzdG10KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkBAIC01
NjYsNyArNTY2LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQWxsQ29va2llcygpCiAKIHZv
aWQgQ29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwp
CiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVu
dD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FM
aXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGludCByZXQgPSBzdGF0ZW1lbnQt
PnByZXBhcmUoKTsKICAgICBBU1NFUlQocmV0ID09IFNRTElURV9PSyk7CiAgICAgbV9zdGF0ZW1l
bnRzLmFkZChzcWwsIFdURk1vdmUoc3RhdGVtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCmluZGV4IDBjMDNlOWQ2OTJjN2Y2
ZGM2MTMwODZmZjI1NWMyMGU1YzZiYmU5ZTkuLjI2ODdhZTc0ZmI5ZDk5NDI5NzJiZWRjYWM2YWI5
YjExNTlhN2U1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gY2xhc3MgQ29va2llQWNj
ZXB0UG9saWN5IHsKIH07CiAKIGNsYXNzIENvb2tpZUphckRCIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb29raWVKYXJEQik7CiAKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmgKaW5kZXggMTEwMjdjZTNiM2NmNjM4OGY5OTU0YWFmNDljNDkwM2ZlOTNm
ZGZmNS4uOGNlMTE0Mzg0OGZiMjMxOGJhMTk5MGVhZDE4ZTE1ZjM3ZDg0MzQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybENh
Y2hlRW50cnkgewotCisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNv
bnN0IFN0cmluZyYgY2FjaGVEaXIpOwogICAgIH5DdXJsQ2FjaGVFbnRyeSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCmluZGV4IGZhNWM4ZDJkMjFiNjI3MzgxNWQwMjNhNGYyMDQ1NTAxNmU5NjM4YWYuLmUy
YjRiNWRmYmRhNjJhM2MwY2I2YmY5MTgxYmJkNjhmZDdhNGEwODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgp
CiAgICAgICAgIC0tZW5kOyAvLyBMYXN0IGxpbmUgaXMgZW1wdHkKICAgICB3aGlsZSAoaXQgIT0g
ZW5kKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBpdC0+c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAg
ICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVy
bCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VV
bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CiAKICAgICAg
ICAgaWYgKGNhY2hlRW50cnktPmlzQ2FjaGVkKCkgJiYgY2FjaGVFbnRyeS0+ZW50cnlTaXplKCkg
PCBtX3N0b3JhZ2VTaXplTGltaXQpIHsKICAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXpl
ICs9IGNhY2hlRW50cnktPmVudHJ5U2l6ZSgpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlJiBqb2IsIFJl
c291cmNlUmVzcG9uc2UmCiAKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsgLy8g
SW52YWxpZGF0ZSBleGlzdGluZyBlbnRyeSBvbiAyMDAKIAotICAgICAgICBhdXRvIGNhY2hlRW50
cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2IsIG1fY2FjaGVE
aXIpOworICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlVW5pcXVlPEN1cmxDYWNoZUVudHJ5
Pih1cmwsICZqb2IsIG1fY2FjaGVEaXIpOwogICAgICAgICBib29sIGNhY2hlYWJsZSA9IGNhY2hl
RW50cnktPnBhcnNlUmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsKICAgICAgICAgaWYgKGNhY2hl
YWJsZSkgewogICAgICAgICAgICAgY2FjaGVFbnRyeS0+c2V0SXNMb2FkaW5nKHRydWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5j
cHAKaW5kZXggN2QxNzIxN2MyZTQ0MmFjNmYzZGU4YzRiNjBhOTUyNmM5ZjY1ODQyYS4uN2IwNGZh
MjZhNDJhYjk3OGFlMDdiZDMxZjBlNjkxNTUxYmJjNDYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgQ3VybENvbnRleHQ6OkN1cmxDb250ZXh0KCkKICAgICBpZiAoYXV0byB2YWx1ZSA9
IGVudlZhci5yZWFkQXM8c2lnbmVkPigiV0VCS0lUX0NVUkxfTUFYX0hPU1RfQ09OTkVDVElPTlMi
KSkKICAgICAgICAgbWF4SG9zdENvbm5lY3Rpb25zID0gKnZhbHVlOwogCi0gICAgbV9zY2hlZHVs
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPihtYXhDb25uZWN0cywg
bWF4VG90YWxDb25uZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25zKTsKKyAgICBtX3NjaGVkdWxl
ciA9IG1ha2VVbmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3Rh
bENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOwogCiAjaWZuZGVmIE5ERUJVRwogICAg
IG1fdmVyYm9zZSA9IGVudlZhci5kZWZpbmVkKCJERUJVR19DVVJMIik7CkBAIC0zMzYsNyArMzM2
LDcgQEAgQ1VSTGNvZGUgQ3VybEhhbmRsZTo6d2lsbFNldHVwU3NsQ3R4KHZvaWQqIHNzbEN0eCkK
ICAgICAgICAgcmV0dXJuIENVUkxFX0FCT1JURURfQllfQ0FMTEJBQ0s7CiAKICAgICBpZiAoIW1f
c3NsVmVyaWZpZXIpCi0gICAgICAgIG1fc3NsVmVyaWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1
cmxTU0xWZXJpZmllcj4oc3NsQ3R4KTsKKyAgICAgICAgbV9zc2xWZXJpZmllciA9IG1ha2VVbmlx
dWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOwogCiAgICAgcmV0dXJuIENVUkxFX09LOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
aAppbmRleCA3ZDA2MDY4Y2Q5ZDFhZWJlZTQyZDM4NTk0YWJkMDk0YjkwMTE0NDQ0Li5hNGY4YzAy
ODI3NjdiMGI0ODc3MGEwNDhlZTg1MmYxNjZlMDdhN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaApAQCAtMTQ3LDYgKzE0Nyw3
IEBAIGNsYXNzIEN1cmxDb250ZXh0IDogcHVibGljIEN1cmxHbG9iYWwgewogLy8gQ3VybE11bHRp
SGFuZGxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNs
YXNzIEN1cmxNdWx0aUhhbmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybE11bHRpSGFuZGxlKTsKIAogcHVibGljOgpAQCAtMjAy
LDYgKzIwMyw3IEBAIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJp
Y3M7CiAKIGNsYXNzIEN1cmxIYW5kbGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxIYW5kbGUpOwogCiBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCmluZGV4IDJiYmE1YTZjM2E0YjI2OTVlYjliNGUxMDVmODUyZDUxNGU4YmY4
YzguLjI0N2M1ZjJlYjJkOWNkNWE0YmM2NjI3MWY1NmMwYTQyOWQxZTY4ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURh
dGFTdHJlYW0uY3BwCkBAIC03Niw3ICs3Niw3IEBAIGNvbnN0IFZlY3RvcjxjaGFyPiogQ3VybEZv
cm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKCFtX3Bvc3REYXRhKQotICAgICAgICBtX3Bvc3REYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7CisgICAgICAgIG1fcG9zdERh
dGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsKIAog
ICAgIHJldHVybiBtX3Bvc3REYXRhLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmlu
ZGV4IGE4YmI4ZDgxYTdhYmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZkZTJkNTUuLmNjZGJiMjgyMzlm
MjJjMzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+IEN1
cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwKICAgICBpZiAoIWJvdW5k
YXJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5KTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpib3VuZGFyeSk7CiB9CiAK
IE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNv
bnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA4MDRj
NzQ0NmM0NTNiNjcxNWY4ODVlOWFmYzI3Mzg4NThlMjY4NzFhLi43MjBjNjk4MGVkZDNkYWUzZTEy
YzYzZjA4YjYzYzZmODk2ZTUzMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM3LDYgKzM3
LDcgQEAgY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBD
dXJsTXVsdGlwYXJ0SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+IGNyZWF0
ZUlmTmVlZGVkKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBDdXJsUmVzcG9uc2Um
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAKaW5kZXggMTdmZWRkZjBlMDgxNGQ1ZWFkMDY4MmY2ZWYxNGY3NjVjOTFlNTkw
OC4uYzFkMTU3YmVmZjk0NDU0NjMxY2QwNTk2MmYyMzExMzJmZDhkYjhkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FsbENsaWVudChGdW5jdGlvbjx2
b2lkKEN1cmxSZXF1ZXN0JiwgQ3VybFJlcXVlc3RDbGllbnQmKT4mJgogdm9pZCBDdXJsUmVxdWVz
dDo6cnVuT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIGlmICht
X21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKKyAgICAgICAgbV9tZXNz
YWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFz
aykpKTsKICAgICBlbHNlIGlmIChpc01haW5UaHJlYWQoKSkKICAgICAgICAgdGFzaygpOwogICAg
IGVsc2UKQEAgLTIwNSw3ICsyMDUsNyBAQCBDVVJMKiBDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zl
cigpCiAgICAgYXV0byBodHRwSGVhZGVyRmllbGRzID0gbV9yZXF1ZXN0Lmh0dHBIZWFkZXJGaWVs
ZHMoKTsKICAgICBhcHBlbmRBY2NlcHRMYW5ndWFnZUhlYWRlcihodHRwSGVhZGVyRmllbGRzKTsK
IAotICAgIG1fY3VybEhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybEhhbmRsZT4oKTsKKyAg
ICBtX2N1cmxIYW5kbGUgPSBtYWtlVW5pcXVlPEN1cmxIYW5kbGU+KCk7CiAKICAgICBtX2N1cmxI
YW5kbGUtPnNldFVybChtX3JlcXVlc3QudXJsKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNw
cAppbmRleCA5MTgzN2FmOWYzZTQ3NzNiNWM3MWMxYzI2MGRiOTZmNTg2YjIxMWFmLi4zYWE1ZjUy
ZGI2MjdhYmIwZWNjYWYyOTIxM2RjZTEyZmJjNmZiYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxl
ci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3Jr
ZXJUaHJlYWQoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgbV9jdXJs
TXVsdGlIYW5kbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aUhhbmRsZT4oKTsKKyAgICBt
X2N1cmxNdWx0aUhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybE11bHRpSGFuZGxlPigpOwogICAgIG1f
Y3VybE11bHRpSGFuZGxlLT5zZXRNYXhDb25uZWN0cyhtX21heENvbm5lY3RzKTsKICAgICBtX2N1
cmxNdWx0aUhhbmRsZS0+c2V0TWF4VG90YWxDb25uZWN0aW9ucyhtX21heFRvdGFsQ29ubmVjdGlv
bnMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhIb3N0Q29ubmVjdGlvbnMobV9tYXhI
b3N0Q29ubmVjdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAppbmRleCBjYTNiYmE4MTM0NDBi
ZmY2ZTgwMzEyNjQwOTc2Y2MzODhhNzQ4NjRmLi40Yjk1YzBkMTlhZDkwNDJkMmFjNzBlZDRiMTMz
ZjhkMWQwYzYzMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaApAQCAtMzgsNiArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudDsKIAog
Y2xhc3MgQ3VybFJlcXVlc3RTY2hlZHVsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXF1ZXN0U2NoZWR1bGVyKTsKICAgICBm
cmllbmQgTmV2ZXJEZXN0cm95ZWQ8Q3VybFJlcXVlc3RTY2hlZHVsZXI+OwogcHVibGljOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJp
Zmllci5oCmluZGV4IDQ1MmY3MDVmOWNiOGZlMjkxOWNmMjg1NmRlZThkMGFkMWE4MTRmMWEuLjNi
NTljYjFmODYzNjU0ODgxZDQ2ZTY1YmJlOTU1NGU5ZjY2MzQzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVyaWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmgKQEAg
LTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFNTTFZlcmlm
aWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShDdXJsU1NMVmVyaWZpZXIpOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgU1NMQ2VydGlm
aWNhdGVGbGFncyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDdiZTAwYWQzNGI4ZTU5ODgy
ZGUwZjUxM2I2YzJkZGY5MDExZjk5ZTEuLjdkNGE3MmZkODc1NTc2ZDlhNTk4YWExNTg0MDRlODlm
MTI0ZDcwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgUmVm
PEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgUmUKIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKiBSZXNvdXJj
ZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICghZC0+bV9kZWxlZ2F0ZSkKLSAgICAgICAg
ZC0+bV9kZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU+KCp0aGlzKTsKKyAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8Q3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKIAogICAgIHJldHVybiBkLT5tX2RlbGVnYXRlLmdl
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggYTM2N2Zk
YTYyYTZkMjEyYTQ5NTVlNjg4OWM2NTcyMGM5ZWZhZjIxYi4uMTNhODMyYzI2NjliNGNlOGNiZWJm
MzEzNGJhMDg5ZDkwMmRmYTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwu
Y3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzdG9w
VGhyZWFkKCkKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFk
KEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgbV90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgp
Pj4oV1RGTW92ZSh0YXNrKSkpOworICAgIG1fdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1
bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpleGVjdXRlVGFza3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDVhMDZmMmVmODllZjVj
MjFiZTE1N2M3MWRhMTQxOWVjODQ4MDllZjcuLjc2NTQzYWQxNmMxNDk0ODU4ODIyOTkxZjMwNWZm
N2EzM2UxN2FlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogY2xhc3MgUHJldmlld0NvbnZl
cnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6CiAgICAgUHJldmlld0NvbnZlcnRlcihp
ZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgcGFzc3dv
cmQgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFmMTg3YjUwNzY1YTlkMTdjMmVj
NGVjODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdjZWMxZTJmZjZlNzNmMjRjMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZCljYWxsRnVuY3Rpb25P
bk1haW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogewogICAgIC8vIFN5bmMg
eGhyIHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAg
ICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgICAgIHJldHVybiBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5j
dGlvbikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlLgogICAgIGlmICghc2No
ZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVkUGFpcnMpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVR
dWV1ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3MTkzNGZlYzM3NjNhNWE0YTgy
ZDkuLmQ0YmE0ZTk1MDQxNWJiNDA2YmFiYzAxYjZkMjBjNjZkNGY4NGIyZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2
ZVF1ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwg
RAogCiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVu
dGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CiAKLSAgICBtX2NvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxETlNS
ZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworICAgIG1fY29tcGxldGlv
bkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxl
cnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOwog
fQogCiB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggZTRjOGIwZjEz
ZTZkMDg5YTU4OTJhYTdhZTBhOWI4MjE1ODViYjlhNC4uYmQwNjJmNzI4ZjE2ZjcwMGM0NjgwM2Jj
ODM5ZWMwYmM1NTc4ZTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApA
QCAtMTM0LDYgKzEzNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBhdXRoVHlwZUZyb21Qcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9uU3BhCiB9CiAKIHN0cnVjdCBT
ZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhKEdDYW5jZWxsYWJsZSogY2FuY2VsbGFi
bGUsIEZ1bmN0aW9uPHZvaWQgKENyZWRlbnRpYWwmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgICAgIDogY2FuY2VsbGFibGUoY2FuY2VsbGFibGUpCiAgICAgICAgICwgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCkBAIC0xNzMsNyArMTc0LDcgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3Jh
Z2UoY29uc3QgUHJvdGVjdGlvblMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
ZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjcmV0U2VydmljZVNlYXJjaERhdGE+KGNhbmNlbGxh
YmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBkYXRhID0gbWFrZVVu
aXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICBzZWNyZXRfc2VydmljZV9zZWFyY2gobnVsbHB0ciwgU0VDUkVU
X1NDSEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwKICAgICAgICAgc3RhdGlj
X2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5MT0NLIHwgU0VDUkVUX1NF
QVJDSF9MT0FEX1NFQ1JFVFMpLCBjYW5jZWxsYWJsZSwKICAgICAgICAgW10oR09iamVjdCogc291
cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCmluZGV4IDEwZmVjYmM0MTk0Nzk1
ZjMyZDFjYTdlNzYwOWFjNGZmMjA5MmNkMjMuLmFhZmVkM2RlNzliOTlhYWM0NzY5Yzc2YjU1ZjZj
MWNiYjY2MWI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlk
aVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2
ZXIuaApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyQmFzZTxJdGVyYXRvciwg
UnVuLCBEZXJpdmVkQ2xhc3M+OjphcHBlbmRSdW5JbnRlcm5hbCgpCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoZW5kT2Zmc2V0ID49IHN0YXJ0T2Zmc2V0KQotICAgICAgICAgICAgbV9ydW5zLmFw
cGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCArIDEs
IGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKKyAgICAgICAgICAgIG1fcnVucy5hcHBlbmRSdW4o
bWFrZVVuaXF1ZTxSdW4+KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgKyAxLCBjb250ZXh0KCksIG1f
ZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5jcmVtZW50KCk7CiAgICAgICAgIG1fc29y
ID0gbV9lb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2Fs
ZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKaW5k
ZXggNTllMWZjNzJhMmJmMjk2OTQ1YTg2Zjg1NTJiODYzNzZhOWVhNTg2ZC4uMmM4Y2NlNzMwODhm
YTVhZDBjZjU5NTljY2U0Zjk2OTFiZjM1N2EwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTG9jYWxlSUNVLmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgaWN1
OwogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3Ry
aW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlSUNVPihs
b2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9j
YWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIExvY2FsZUlDVTo6
TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAgLTE2MywyMiArMTYzLDIyIEBAIHN0YXRp
YyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3Jt
YXQpCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFi
ZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQsIFVEYXRlRm9ybWF0U3ltYm9s
VHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSkKIHsKICAgICBpZiAo
IWRhdGVGb3JtYXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJp
bmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAg
ICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSkgIT0gc3RhcnRJbmRleCAr
IHNpemUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+Pigp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAotICAgIGF1
dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRv
IGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNl
cnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICBp
bnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydElu
ZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChzdGF0dXMgIT0gVV9CVUZGRVJf
T1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJp
bmc+PigpOwogICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihsZW5ndGgpOwogICAgICAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0
LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCAmc3RhdHVzKTsK
ICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoU3RyaW5nOjph
ZG9wdChXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICB9CiAgICAgcmV0dXJuIFdURk1vdmUobGFiZWxz
KTsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExv
Y2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqCiAKIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMo
KQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
KTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAg
bGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5h
bWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChXVEY6
Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+YXBwZW5kKFdURjo6bW9udGhG
dWxsTmFtZVtpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExv
Y2FsZUlDVTo6bW9udGhMYWJlbHMoKQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxT
dHJpbmc+PiBjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1h
a2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHko
Mik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIkFNIik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIlBNIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAppbmRleCBiYjZi
MjZiYTU5Y2IzNmI5ODliN2U2ZjU4NjMwYzdhN2IzYjU2ZWE3Li43ODE1YTQ3OGUwMjk3NDU1OTY1
NzZjMmRlZDIyMTE5MzZhYTk2YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TG9jYWxlTm9uZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgTG9jYWxlTm9uZSA6IHB1Ymxp
YyBMb2NhbGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25z
dCBBdG9tU3RyaW5nJikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVOb25l
PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZU5vbmU+KCk7CiB9CiAKIExvY2FsZU5v
bmU6On5Mb2NhbGVOb25lKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmluZGV4IGY4ZTE2NzA4NDlhOTU4OThhMTQ1N2JjOThkYTkx
ZTRiZGU3ODRjNzkuLmU1ZjI4MTY2YzZkZDM0YmM1MzUwOWI2YTAwMjBhODg4OTA3YzJjZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKQEAgLTE1
Niw0MyArMTU2LDQzIEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29k
ZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICAvLyBodHRwOi8vZGVtby5pY3UtcHJvamVj
dC5vcmcvaWN1LWJpbi9jb252ZXhwCiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ3aW5kb3dz
LTg3NCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5k
b3dzLTg3NC0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENv
ZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAi
d2luZG93cy05NDkiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1l
LCAid2luZG93cy05NDktMjAwMCIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAo
bmFtZSwgIngtbWFjLWN5cmlsbGljIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBb
bmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2Rl
Y0lDVT4obmFtZSwgIm1hY29zLTdfMy0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEwLjIiKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFz
dHJjbXAobmFtZSwgIngtbWFjLWdyZWVrIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1l
LCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY0lDVT4obmFtZSwgIm1hY29zLTZfMi0xMC40Iik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8yLTEwLjQiKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KCFzdHJjbXAobmFtZSwgIngtbWFjLWNlbnRyYWxldXJyb21hbiIpKSB7CiAgICAgICAgICAgICBy
ZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMjktMTAu
MiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtdHVya2lzaCIpKSB7CiAgICAgICAgICAg
ICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4yIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMzUt
MTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiRVVDLUtSIikpIHsKICAgICAgICAgICAgIHJl
Z2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5Iik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDkiKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTIw
MSw3ICsyMDEsNyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVj
UmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgY29uc3QgY2hhciogY2Fub25pY2FsQ29udmVy
dGVyTmFtZSA9IHVjbnZfZ2V0Q2Fub25pY2FsTmFtZShuYW1lLCAiSUFOQSIsICZlcnJvcik7CiAg
ICAgICAgIEFTU0VSVChVX1NVQ0NFU1MoZXJyb3IpKTsKICAgICAgICAgcmVnaXN0cmFyKG5hbWUs
IFtuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWUp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCBjYW5v
bmljYWxDb252ZXJ0ZXJOYW1lKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCmluZGV4IDkzMTQ1MzMy
OGE2ZjY2OTQ4NWVlMDFmOGE0ZTJjZWRlNTAyNjc3ZmYuLjkyYzY2MTNjYjFmY2MwZTMwOGE3M2Mz
NTBhOWUwN2VmNzczNDYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBUZXh0Q29kZWNMYXRp
bjE6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFy
KQogdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJh
ciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ3aW5kb3dzLTEyNTIiLCBbXSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0xhdGluMT4oKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQu
Y3BwCmluZGV4IDE3NjViZjc5MjE1OTc1YjE1N2M4YjNmNzRjNTU3MmM0NzFlMjExNDEuLmM4YjU1
OGM4Y2EyZDNhZmQzMDIxNGJjZmMzN2ExNDU3NzU2YTEzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1l
cyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1JlcGxhY2Vt
ZW50OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAg
IHJlZ2lzdHJhcigicmVwbGFjZW1lbnQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCBiZTAwNjU2NDQ2NDhm
Y2UwYzM3OWQzYzc0M2VlMjI3ZWE5ZWRhNmY0Li45MGM0NDc1ZDAyMGI5ZjQ3MWI1YmU3N2MzY2Fh
YzBmZGM5OGNiYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VURjE2LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBAIHZvaWQgVGV4dENvZGVjVVRGMTY6OnJl
Z2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9p
ZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi0xNkxFIiwgW10gewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKICAgICB9KTsKICAgICByZWdpc3RyYXIo
IlVURi0xNkJFIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29k
ZWNVVEYxNj4oZmFsc2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEYx
Nj4oZmFsc2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCBhM2RhZDRlOWQxNjM3Njg2MzA4OGIxOTcxMGY4Mzlk
YmJmZmVhOGRkLi5lMWQwYTUzYzcxN2FhZTczOTkzOWY1MWM0ZDMyOTM0NWFmODljYWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5j
b2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjVVRGODo6cmVnaXN0
ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIo
IlVURi04IiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNV
VEY4PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VzZXJEZWZpbmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjVXNlckRlZmluZWQuY3BwCmluZGV4IDI5NmM0NjlmMTY5ZmI5MTFkYzhkYmQ3YTY0N2VhNTY0
MWUyZmZlMTkuLjQ4YWRiYTlkNGIxYTdhOWE2NThhZWY5ZGZhZGY4NWFkZGU5ZGNmNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmlu
ZWQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgVGV4dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lz
dGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRl
eHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVn
aXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigieC11c2VyLWRlZmluZWQiLCBbXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVkPigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVc2VyRGVmaW5lZD4oKTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCmluZGV4
IGE1MTdiZTM0MWY2YWM0YmU4ZTg5M2NmYWQ3YzIyODg0NWQ2YTgyODAuLjJiM2QwM2EzOGE1ZDIw
MWJiNmRjYjhlYmU0NGY0NmZlZWZjNjdlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIFJldGFpblB0
cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2Nh
bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVM
b2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9j
YWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CiB9CiAKIHN0
YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVEYXRlVGltZUZvcm1hdHRlcihO
U0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFyKiBjYWxlbmRhciwgTlNEYXRlRm9ybWF0dGVyU3R5
bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSB0aW1lU3R5bGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCA2YTE2MGRlY2Nm
YzkyNmFlZjM3ZGUyM2U5N2Y2MmU4ZjVjNjc5MDZhLi5hYTAwYTRhZDZmNWI1OTk4MmI2YjQ3NzMx
NzFjOGJjN2MwMzM5MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2lu
L0xvY2FsZVdpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2Nh
bGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBM
b2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TG9jYWxlV2luPihMQ0lERnJvbUxvY2FsZShsb2NhbGUpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOwogfQog
CiBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKaW5kZXggYWY0NjkxMzkw
ODFlODBjMTIwN2I4MmM5N2ZkZmEzYzc3MjFhNjUxMS4uMmNlYjQ3NWU1ZmFlYmI2NzBjNzQxNDQ3
NWE0NzI5MjQ5NTJkY2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC93aW4vVGV4dENvZGVjV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIFVJTlQgZ2V0
Q29kZVBhZ2UoY29uc3QgY2hhciogbmFtZSkKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25z
dCB2b2lkKikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNXaW4+KGdl
dENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRD
b2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CiB9CiAKIFRleHRDb2RlY1dp
bjo6VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCmluZGV4
IGRkNmFlNzM2MDQ2NzlmMTg4ZTAxZTExMGU0ZmViZTU5M2Q1MzdmMWIuLmY3MWJkOWYwZDU4OWNj
MmY4MzliMDY3YzIzZWM4Y2I1MTgxMDY4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCkBAIC0y
OSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFZSUGxhdGZvcm1EaXNw
bGF5T3BlblZSIDogcHVibGljIFZSUGxhdGZvcm1EaXNwbGF5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBWUlBsYXRmb3JtRGlzcGxheU9wZW5W
Uih2cjo6SVZSU3lzdGVtKiwgdnI6OklWUkNoYXBlcm9uZSosIHZyOjpJVlJDb21wb3NpdG9yKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtTWFuYWdlck9wZW5WUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIv
VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCmluZGV4IGQxZGM2NzM2ODZmNjUxZTNlMDMyOTFi
N2MwMmMzMWIwYzE2OWJiYzIuLmU3Y2Y3MTM3ZTMzYWE1NWJmN2U1ODVlZTE2NGU2NzNkM2FhZWVj
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtTWFuYWdlck9wZW5WUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3Bl
bnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcApAQCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZS
OjpjcmVhdGUoKQogICAgIGlmICghdnI6OlZSX0lzUnVudGltZUluc3RhbGxlZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZSUGxhdGZv
cm1NYW5hZ2VyT3BlblZSPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFZSUGxhdGZvcm1NYW5h
Z2VyT3BlblZSPigpOwogfQogCiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6flZSUGxhdGZvcm1N
YW5hZ2VyT3BlblZSKCkKQEAgLTc4LDcgKzc4LDcgQEAgVmVjdG9yPFdlYWtQdHI8VlJQbGF0Zm9y
bURpc3BsYXk+PiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cygpCiAKICAg
ICBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IGRpc3BsYXlzOwogICAgIGlmICgh
bV9kaXNwbGF5KQotICAgICAgICBtX2Rpc3BsYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPFZSUGxhdGZv
cm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVyb25lLCBjb21wb3NpdG9yKTsKKyAgICAg
ICAgbV9kaXNwbGF5ID0gbWFrZVVuaXF1ZTxWUlBsYXRmb3JtRGlzcGxheU9wZW5WUj4obV9zeXN0
ZW0sIGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CiAgICAgZGlzcGxheXMuYXBwZW5kKG1ha2VXZWFr
UHRyKCptX2Rpc3BsYXkpKTsKICAgICByZXR1cm4gZGlzcGxheXM7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9w
ZW5WUi5oCmluZGV4IDZhNDM4N2NjMzA4MTVlMDBjMzQxNmM4OTY2YWQyOWQ0YjczZjcwZDkuLjZh
NzgyM2JjN2I5NWVkNDBkY2VjZGYwZjU3MzNlMTZkODQ0NWFhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9w
ZW5WUi5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFZSUGxh
dGZvcm1EaXNwbGF5T3BlblZSOwogCiBjbGFzcyBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUiA6IHB1
YmxpYyBWUlBsYXRmb3JtTWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5W
Uj4gY3JlYXRlKCk7CiAgICAgZXhwbGljaXQgVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIoKSA9IGRl
ZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
aW5kZXggYWJhZGRjN2ZiY2EyMzU5ZWZmNWI5ODExYzE5NWY2YjVhYmMxYmE4My4uMTY5Nzg1NWZl
NzJmNjM3ZTY1YWQ0Nzc3MmFmYTYxYzc0NzE5MjQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgTFJF
U1VMVCBDQUxMQkFDSyBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNz
YWdlLCBXUEFSQU0gdwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1
ZTxQYXN0ZWJvYXJkPigpOwogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gY2xpcGJvYXJkRGF0YTsK
ICAgICBpZiAoIVNVQ0NFRURFRChPbGVHZXRDbGlwYm9hcmQoJmNsaXBib2FyZERhdGEpKSkKICAg
ICAgICAgY2xpcGJvYXJkRGF0YSA9IDA7CkBAIC0xMDYsMTYgKzEwNiwxNiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewog
ICAgIENPTVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NEYXRhT2JqZWN0Ojpj
cmVhdGVJbnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CiB9CiAKIC8vIHN0YXRpYwogc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBpZiAoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBsYXRm
b3JtRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0Rh
dGEucGxhdGZvcm1EYXRhKCkpOwogICAgIC8vIEZJWE1FOiBTaG91bGQgYWRkIGEgY29uc3Qgb3Zl
cmxvYWQgb2YgZHJhZ0RhdGFNYXAgc28gd2UgZG9uJ3QgbmVlZCBhIGNvbnN0X2Nhc3QgaGVyZS4K
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjb25zdF9jYXN0PERyYWdE
YXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
c3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nl
YXJjaFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQ
b3B1cE1lbnVEQi5jcHAKaW5kZXggMTk2NDljNTY2Y2ZjZjVmNDI0MzA5ZDFkOGQxMDBiMGI0ZmY3
NzBhOC4uNmY3ZjRiYTE2NjBiNGY3YTk3NzIxMmM4NTYzYTQzYzY2NWUzMGI1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCkBAIC0y
ODQsNyArMjg0LDcgQEAgaW50IFNlYXJjaFBvcHVwTWVudURCOjpleGVjdXRlU2ltcGxlU3FsKGNv
bnN0IFN0cmluZyYgc3FsLCBib29sIGlnbm9yZUVycm9yKQogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FM
aXRlU3RhdGVtZW50PiBTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRlUHJlcGFyZWRTdGF0ZW1lbnQo
Y29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVu
dCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGlu
dCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0
ID09IFNRTElURV9PSyk7CiAgICAgcmV0dXJuIHN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKaW5kZXggZGJmOTlhNDVjZTcwM2E5ZDg1N2Ew
ZTYwMTlkNjgwNmRkMTFmYTE3Yi4uMjQxMDAzYTEwMDMxYTNkN2U2ZDdhYTFlMjRhNDljYjk4OTgy
MGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAK
QEAgLTI1Niw3ICsyNTYsNyBAQCBTVERNRVRIT0RJTVAgV0NEYXRhT2JqZWN0OjpTZXREYXRhKEZP
Uk1BVEVUQyogcGZvcm1hdGV0YywgU1RHTUVESVVNKiBwbWVkaXVtLCBCTwogICAgIGlmICghcGZv
cm1hdGV0YyB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1
dG8gZmV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFURVRDPigpOworICAgIGF1dG8gZmV0YyA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1BVEVUQz4oKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBwU3RnTWVkKG5ldyBTVEdN
RURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IGMwMDRmYzllNzA0YTZh
ZDMyMzQ5ZmI4MjRjZGM1ZGRkMDM2MDFiNWMuLjQ3OTgxYWU2OTkxZGM2NDkxNTIwZmM4MjQzMmVj
YzQ5NTg2NDQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0x
MTEsNyArMTExLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZmVy
ZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKIAogICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGVmZmVjdDsKIAotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKKyAgICBhdXRvIGJ1aWxkZXIgPSBt
YWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0VmZmVjdCk7CiAgICAgbV9zb3Vy
Y2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUo
KSk7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0ZXIpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAppbmRleCAwMTMzNzg3ZDlk
MzA2MmIxY2E3OWIxNjA3OTYzZjIwYzEwNzFlZDUzLi5iZDNjOWJlZTg3Mjk4NmVjNjFiMWEzMGEw
NDk1YjhjMGEyNmZkNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29t
cGxleExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4
TGluZUxheW91dC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGly
ZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVyKQogCiBp
bmxpbmUgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGNyZWF0ZVJ1bihpbnQgc3RhcnQsIGludCBl
bmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHN0YXJ0LCBlbmQsIG9iaiwgcmVz
b2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRp
cigpKTsKIH0KIAogdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5kUnVuc0Zvck9iamVjdChC
aWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmpl
Y3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKQEAgLTEzMCwxMiArMTMwLDEy
IEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNGb3JPYmplY3QoQmlkaVJ1bkxp
c3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFyCiBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJv
eD4gQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKQogewogICAgIGlmIChp
czxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7Ci0gICAgICAgIGF1dG8gYm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxTVkdSb290SW5saW5lQm94Pihkb3duY2FzdDxSZW5kZXJTVkdUZXh0PihtX2Zsb3cp
KTsKKyAgICAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25j
YXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOwogICAgICAgICBib3gtPnNldEhhc1ZpcnR1YWxM
b2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBib3g7CiAgICAgfQogICAgICAgICAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiB9CiAKIFJvb3RJbmxpbmVC
b3gqIENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkKQEAg
LTEwODUsNyArMTA4NSw3IEBAIGlubGluZSBCaWRpUnVuKiBDb21wbGV4TGluZUxheW91dDo6aGFu
ZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpCiAgICAgICAgIHdoaWxl
IChCaWRpQ29udGV4dCogcGFyZW50ID0gYmFzZUNvbnRleHQtPnBhcmVudCgpKQogICAgICAgICAg
ICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlS
dW4+IG5ld1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNl
LCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVyKCks
IGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2Us
IHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwg
YmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4t
Pm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4gPSBuZXdUcmFp
bGluZ1J1bi5nZXQoKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjpsaW5rVG9F
bmRMaW5lSWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAgICAgICAgaWYg
KGxheW91dFN0YXRlLmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKCkpIHsKICAgICAgICAgICAg
IExheW91dFVuaXQgYm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2Fs
Qm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tTGF5
b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3co
KTsKLSAgICAgICAgICAgIGF1dG8gbmV3TGluZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhaWxp
bmdGbG9hdHNSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgICAgICAgICAgYXV0byBuZXdMaW5l
Qm94ID0gbWFrZVVuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiAg
ICAgICAgICAgICBhdXRvIHRyYWlsaW5nRmxvYXRzTGluZUJveCA9IG5ld0xpbmVCb3guZ2V0KCk7
CiAgICAgICAgICAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94KFdURk1vdmUobmV3TGluZUJv
eCkpOwogICAgICAgICAgICAgdHJhaWxpbmdGbG9hdHNMaW5lQm94LT5zZXRDb25zdHJ1Y3RlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA0
Y2RkMTM5YzQ4NzUxNmVhMGU3YjEyMTNiNzAzYmQzNDI3YWIwMThjLi5hNmM2NDgxOGM0OTc0NTYw
OTBmNjYyM2MzMDRiNWQ2Mjc3MDdhZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmxvYXRpbmdPYmplY3RzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBGbG9hdGluZ09iamVjdDo6Rmxv
YXRpbmdPYmplY3QoUmVuZGVyQm94JiByZW5kZXJlciwgVHlwZSB0eXBlLCBjb25zdCBMYXlvdXRS
ZWN0JgogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0Ojpj
cmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikKIHsKLSAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKKyAgICBhdXRvIG9iamVjdCA9IG1h
a2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKICAgICBvYmplY3QtPnNldFNob3Vs
ZFBhaW50KCFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBl
eGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxz
ZSB3aWxsLgogICAgIG9iamVjdC0+c2V0SXNEZXNjZW5kYW50KHRydWUpOwogICAgIHJldHVybiBv
YmplY3Q7CkBAIC04MywxMiArODMsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0
PiBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVuZGVyZXIpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5l
cihMYXlvdXRTaXplIG9mZnNldCwgYm9vbCBzaG91bGRQYWludCwgYm9vbCBpc0Rlc2NlbmRhbnQp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJl
bmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zm
c2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlz
RGVzY2VuZGFudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRl
cmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0
LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVz
Y2VuZGFudCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdP
YmplY3Q6OmNsb25lRm9yTmV3UGFyZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNsb25lT2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBt
X2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50
KTsKKyAgICBhdXRvIGNsb25lT2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVu
ZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFp
bnQsIG1faXNEZXNjZW5kYW50KTsKICAgICBjbG9uZU9iamVjdC0+bV9wYWdpbmF0aW9uU3RydXQg
PSBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBjbG9uZU9iamVjdC0+bV9pc1BsYWNlZCA9IG1faXNQ
bGFjZWQ7CiAgICAgcmV0dXJuIGNsb25lT2JqZWN0OwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQg
RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSgpCiAgICAgaWYgKG1fc2V0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGFjZWRGbG9hdHNUcmVlID0g
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CisgICAgbV9wbGFjZWRGbG9h
dHNUcmVlID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CiAgICAgZm9yIChhdXRv
IGl0ID0gbV9zZXQuYmVnaW4oKSwgZW5kID0gbV9zZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+Z2V0KCk7CiAg
ICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkLmNwcAppbmRleCBjNzJkMDFkODFjN2Q3MTY2MTU3OWUzYmEwMTgzMGU0MjlkMzBmNjg4Li4x
ZTkxMWFlNjBhNjEyNjg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4N2UyOTUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWQuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVh
PiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEK
ICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9u
ID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7CiAgICAg
Zm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5
aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93U3Bhbiwg
Y29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZp
bml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46
OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXgg
KyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IHJl
c3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVH
cmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFu
c2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29s
dW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQg
YW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVh
IG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4OwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggNWZjMzI4MTUzYTZkOGJmYzQ4ODNiYTUxMjFj
Y2EwYmY2ZjJlOTlkMC4uNjYwOTA5OGY5Yzg3MDQ2ODgxMTQxOGFiMTc4Mjk0MTdiZWUyZDE5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVu
dC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdyaWRCYXNlbGluZUFsaWdubWVudDo6dXBk
YXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KEl0ZW1Qb3NpdGlvbiBwcmVmZXJlbgogCiAgICAg
Ly8gTG9va2luZyBmb3IgYSBjb21wYXRpYmxlIGJhc2VsaW5lLXNoYXJpbmcgZ3JvdXAuCiAgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNl
LCBhc2NlbnQsIGRlc2NlbnQpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
bWFrZVVuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRl
c2NlbnQpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvKiBjb250ZXh0ID0gYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICAgICAgY29udGV4dC0+dXBkYXRlU2hhcmVkR3JvdXAo
Y2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCmluZGV4IGFkZGVk
YzQyOGIxZjJmZGIzNTAzZTgxMjYyNmI5NzY5M2EzZTdiNWYuLmIyYjAxMWJkZjc0OTFiMzVhYjFk
YmI3YWM2YjI2Mzk2MTcyMWNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC02ODEsNyArNjgxLDcgQEAgZG91
YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0U2l6ZShj
b25zdCBWZWN0b3I8R3JpZFRyYWMKICAgICAgICAgICAgIGxlZnRPdmVyU3BhY2UgLT0gYmFzZVNp
emU7CiAgICAgICAgICAgICBmbGV4RmFjdG9yU3VtIC09IGZsZXhGYWN0b3I7CiAgICAgICAgICAg
ICBpZiAoIXRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUpCi0gICAgICAgICAgICAgICAgdHJhY2tz
VG9UcmVhdEFzSW5mbGV4aWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tJbmRleFNldD4oKTsK
KyAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gbWFrZVVuaXF1ZTxU
cmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZS0+
YWRkKGluZGV4KTsKICAgICAgICAgICAgIHZhbGlkRmxleEZhY3RvclVuaXQgPSBmYWxzZTsKICAg
ICAgICAgfQpAQCAtMTI2MCwxMCArMTI2MCwxMCBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZQog
ICAgIG1fc2l6aW5nT3BlcmF0aW9uID0gc2l6aW5nT3BlcmF0aW9uOwogICAgIHN3aXRjaCAobV9z
aXppbmdPcGVyYXRpb24pIHsKICAgICBjYXNlIEludHJpbnNpY1NpemVDb21wdXRhdGlvbjoKLSAg
ICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZWZpbml0ZVNpemVTdHJhdGVn
eT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVuaXF1ZTxJbmRlZmluaXRlU2l6
ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHJhY2tTaXppbmc6
Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0
ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5pcXVlPERlZmluaXRlU2l6
ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDczYjM2NTQ3NjcxNDBhMDM3MGU0
ZDU2OTU2ZTU0ZjI2NzRiNThiMzYuLmIzYzQwMDc5MDJkZjYwNDg2MmE1YWM3YzI5OThjYmFkNzNm
MTEyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0
UmVzdWx0JiBvdGhlcikKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90aGVyLmlzT3ZlcldpZGdldCgp
KQogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIGxpc3QgaGl0IHRl
c3QuCi0gICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVz
dWx0ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVz
dWx0KSA6IG51bGxwdHI7CisgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0
QmFzZWRUZXN0UmVzdWx0ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRU
ZXN0UmVzdWx0KSA6IG51bGxwdHI7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6On5IaXRUZXN0UmVzdWx0
KCkgPSBkZWZhdWx0OwpAQCAtMTEzLDcgKzExMyw3IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRlc3RS
ZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICBtX2lzT3Zl
cldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAgLy8gT25seSBjb3B5IHRoZSBO
b2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVT
ZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RC
YXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVl
PE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIAogICAg
IHJldHVybiAqdGhpczsKIH0KQEAgLTY5MCwxNCArNjkwLDE0IEBAIHZvaWQgSGl0VGVzdFJlc3Vs
dDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxCiBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjpsaXN0
QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3Vs
dCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2Rl
U2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVT
ZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKIEhpdFRlc3RS
ZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0
KCkKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFz
ZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xp
c3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICpt
X2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgKaW5kZXggNDNjNjUzODc2Y2Y5ODRhNjJiNmZjOTI5NDVkM2RkNjkwY2EzZWRi
OS4uMTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhjb25zdCBJbmxpbmVJ
dGVyYXRvciYgaXRlcikKIC8vIG9mIEJpZGlSZXNvbHZlciB3aGljaCBrbm93cyBub3RoaW5nIGFi
b3V0IFJlbmRlck9iamVjdHMuCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGxhY2Vob2xkZXJSdW5G
b3JJc29sYXRlZElubGluZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBSZW5kZXJPYmpl
Y3QmIG9iaiwgdW5zaWduZWQgcG9zLCBSZW5kZXJFbGVtZW50JiByb290KQogewotICAgIHN0ZDo6
dW5pcXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1
bj4ocG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0gbWFrZVVuaXF1ZTxCaWRp
UnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsK
ICAgICAvLyBGSVhNRTogaXNvbGF0ZWRSdW5zKCkgY291bGQgYmUgYSBoYXNoIG9mIG9iamVjdC0+
cnVuIGFuZCB0aGVuIHdlIGNvdWxkIGNoZWFwbHkKICAgICAvLyBBU1NFUlQgaGVyZSB0aGF0IHdl
IGRpZG4ndCBjcmVhdGUgbXVsdGlwbGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgaW5saW5lLgogICAg
IHJlc29sdmVyLnNldFdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlvbkZvcklzb2xhdGVkUnVu
KCppc29sYXRlZFJ1biwgcmVzb2x2ZXIud2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSgpLmN1cnJl
bnRUcmFuc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xh
eWVyT3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFw
TWFwLmNwcAppbmRleCAyODVhYTVmOWZlOWJhZTdkZmM4NTI4YzI0YzFkNTU2N2Q0MTI5ZmYzLi45
NmFmOTVhNDU1Njk1MGU4MTI2Yjk1MzczNTM0ZDQ3NmRhZTM1NjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVjdExpc3Qm
IHJlY3RMaXN0KQogLy8gQ2hlY2tpbmcgZm9yIG92ZXJsYXAgaW52b2x2ZXMgZmluZGluZyB0aGUg
bm9kZSBmb3IgdGhlIGNsaXBwaW5nIGxheWVyIGVuY2xvc2luZyB0aGUgZ2l2ZW4gbGF5ZXIgKG9y
IHRoZSByb290KSwKIC8vIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgYm91bmRzIG9mIGVhcmxp
ZXIgc2libGluZ3MuCiBjbGFzcyBPdmVybGFwTWFwQ29udGFpbmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPdmVybGFwTWFwQ29udGFpbmVyKGNvbnN0IFJl
bmRlckxheWVyJiByb290TGF5ZXIpCiAgICAgICAgIDogbV9yb290U2NvcGUocm9vdExheWVyKQpA
QCAtMjk2LDcgKzI5Nyw3IEBAIGJvb2wgTGF5ZXJPdmVybGFwTWFwOjpvdmVybGFwc0xheWVycyhj
b25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IExheW91dFJlY3QmCiAKIHZvaWQgTGF5ZXJP
dmVybGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKQogewotICAgIG1fb3ZlcmxhcFN0
YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1fcm9vdExh
eWVyKSk7CisgICAgbV9vdmVybGFwU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8T3ZlcmxhcE1hcENv
bnRhaW5lcj4obV9yb290TGF5ZXIpKTsKIH0KIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnBvcENv
bXBvc2l0aW5nQ29udGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCmluZGV4IDRkYmEzZjFjNDEwNWFmYjBlOGU0Yzc2YTdjZmNiOWU1ZmZmNzE4NTQuLjAwMTky
NTg4MmU1MDI4YzhhMjA5OWI0YmJkZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIGlu
c2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIs
IFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50
SGVpZ2h0RGVzY2VuZGFudHNNYXAtPmVuc3VyZSgmY29udGFpbmVyLCBbXSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+
YWRkKCZkZXNjZW5kYW50KS5pc05ld0VudHJ5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2
b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250
YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGNvbnRhaW5lclNldCA9IHBl
cmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmVuc3VyZSgmZGVzY2VuZGFudCwgW10gewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4o
KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIWNvbnRhaW5lclNldC0+
Y29udGFpbnMoJmNvbnRhaW5lcikpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFBvc2l0aW9u
ZWREZXNjZW5kYW50c01hcCB7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvJiBkZXNjZW5kYW50
cyA9IG1fZGVzY2VuZGFudHNNYXAuZW5zdXJlKCZjb250YWluaW5nQmxvY2ssIFtdIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0
PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhh
c2hTZXQ+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICBib29sIGlz
TmV3RW50cnkgPSBtb3ZlRGVzY2VuZGFudFRvRW5kID09IE1vdmVEZXNjZW5kYW50VG9FbmQ6Olll
cyA/IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0aW9uZWREZXNjZW5kYW50
KS5pc05ld0VudHJ5CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGlubGluZSBVcGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbiogY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnQK
IHZvaWQgUmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNh
Y3Rpb24oKQogewogICAgIGlmICghdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b25TdGFjaygpKQotICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlv
blN0YWNrKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+
KCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2so
KSA9IG1ha2VVbmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKICAgICBpZiAo
dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkg
fHwgY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCktPnZpZXcg
IT0gJnZpZXcoKSkKICAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b25TdGFjaygpLT5hcHBlbmQoVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24o
dmlldygpKSk7CiAgICAgKytjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNh
Y3Rpb24oKS0+bmVzdGVkQ291bnQ7CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIFJlbmRlckJs
b2NrUmFyZURhdGEmIGVuc3VyZUJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2smIGJsb2Nr
KQogICAgIAogICAgIGF1dG8mIHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0YSkKLSAgICAgICAgcmFy
ZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CisgICAgICAg
IHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOwogICAgIHJldHVy
biAqcmFyZURhdGEuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAKaW5kZXggN2YxZTYzOTcwNjNiZTRmOGRmOWI1N2YxNzVkNmUyNmU3OGVm
YjEzNC4uYjg2NDJkMTcyMDNiZDRiZjI1YmRlMTcxZjk4NzBhZjdkNWE0M2E3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTY3OCw3ICs2Nzgs
NyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZQogICAgIG1fc2ltcGxlTGluZUxheW91dCA9IG51
bGxwdHI7CiAKICAgICBpZiAoIW1fY29tcGxleExpbmVMYXlvdXQpCi0gICAgICAgIG1fY29tcGxl
eExpbmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7
CisgICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5
b3V0PigqdGhpcyk7CiAKICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0LT5sYXlvdXRMaW5lQm94ZXMo
cmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9t
KTsKIH0KQEAgLTIwMTksNyArMjAxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRM
aW5lR3JpZEJveCgpCiAgICAgCiAgICAgc2V0TGluZUdyaWRCb3goMCk7CiAKLSAgICBhdXRvIGxp
bmVHcmlkQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PigqdGhpcyk7CisgICAg
YXV0byBsaW5lR3JpZEJveCA9IG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMpOwogICAg
IGxpbmVHcmlkQm94LT5zZXRIYXNUZXh0Q2hpbGRyZW4oKTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhl
IGxpbmUgYXNjZW50L2Rlc2NlbnQgYWN0dWFsbHkgYmUgaG9ub3JlZCBpbiBxdWlya3MgbW9kZS4K
ICAgICBsaW5lR3JpZEJveC0+c2V0Q29uc3RydWN0ZWQoKTsKICAgICBHbHlwaE92ZXJmbG93QW5k
RmFsbGJhY2tGb250c01hcCB0ZXh0Qm94RGF0YU1hcDsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIHZv
aWQgUmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiBy
b290QmxvY2ssIGNvbnN0IFBhaW50CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9h
dGluZ09iamVjdHMoKQogewotICAgIG1fZmxvYXRpbmdPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1
ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsKKyAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IG1ha2VV
bmlxdWU8RmxvYXRpbmdPYmplY3RzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjpyZW1vdmVGbG9hdGluZ09iamVjdHMoKQpAQCAtMzY3Nyw3ICszNjc3LDcgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFT
U0VSVCghbV9jb21wbGV4TGluZUxheW91dCk7Ci0gICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICBtX2NvbXBsZXhM
aW5lTGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAg
aWYgKFNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1w
bGVMaW5lTGF5b3V0KSkgewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVC
b3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KTsKQEAgLTM3MzUsNyArMzczNSw3IEBA
IFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIFJlbmRlckJsb2NrRmxv
dzo6ZW5zdXJlUmFyZUJsb2NrRmxvd0RhCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxp
emVSYXJlQmxvY2tGbG93RGF0YSgpCiB7CiAgICAgQVNTRVJUKCFoYXNSYXJlQmxvY2tGbG93RGF0
YSgpKTsKLSAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJC
bG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CisgICAgbV9yYXJlQmxv
Y2tGbG93RGF0YSA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dS
YXJlRGF0YT4oKnRoaXMpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZTIwZmMyMDcxNGExMGUxMjIwZDJl
ZmQwYTljOGFhY2EyOTlkODU0MS4uYTQ2NzNkMTE4ODJiMzFlOTNmMmJhNzA5MGYyMmVlMzA2MDY4
ZDEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTExOCw3ICsx
MTgsNyBAQCBzdGF0aWMgQ29udHJvbFN0YXRlc1JlbmRlcmVyTWFwJiBjb250cm9sU3RhdGVzUmVu
ZGVyZXJNYXAoKQogc3RhdGljIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cihjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogewogICAgIHJldHVybiBjb250cm9sU3RhdGVz
UmVuZGVyZXJNYXAoKS5lbnN1cmUoJnJlbmRlcmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENvbnRyb2xTdGF0ZXM+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCkBA
IC0yMTE1LDcgKzIxMTUsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRh
aW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91dAogCiBzdGQ6OnVuaXF1
ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gUmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3goKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQg
UmVuZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA0MjQzMGRm
OGJhN2I2YWI4NjMyMzI4ZTYyZWY5MjU3MDFhZjNiNzc4Li5jZGNhNDU4YTFjMWY0MGU5Njk2MjA0
Y2Y0NjhkOTkxNGVkYTI0ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI1MzgsNyArMjUzOCw3IEBAIGF1dG8gUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSgpIC0+IENvbnRpbnVh
dGlvbkNoYWluTm9kCiB7CiAgICAgc2V0SGFzQ29udGludWF0aW9uQ2hhaW5Ob2RlKHRydWUpOwog
ICAgIHJldHVybiAqY29udGludWF0aW9uQ2hhaW5Ob2RlTWFwKCkuZW5zdXJlKHRoaXMsIFsmXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4o
KnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+
KCp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAyMjEwNDQzNGU0NWQ2Yzk4NDc2ZmZkMjlh
YjU1MGJkNjJhYzQwOGZlLi5jMWUwM2YwOTdlZjU5YWQ1YTE2YjE5NGM5YzA1ZDY0OWY3ZmYxNWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0zMTIs
NyArMzEyLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICBpZiAocGxhY2UucGFyZW50
KQogICAgICAgICBwbGFjZS5wYXJlbnQtPmluc2VydEFmdGVyKG5ld05vZGUsIHBsYWNlLnByZXZp
b3VzU2libGluZy5nZXQoKSwgaWRlbnRpZmllcik7CiAKLSAgICBtYXBzLmFkZCgmcmVuZGVyZXIs
IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRl
bnRpZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkpOworICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgbWFr
ZVVuaXF1ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBu
ZXdOb2RlLmNvcHlSZWYoKSk7CiAgICAgcmVuZGVyZXIuc2V0SGFzQ291bnRlck5vZGVNYXAodHJ1
ZSk7CiAKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcAppbmRleCA1MWE5ZTQ2ODQz
NDRkMjYzN2QwNGE5MWZiNTlhM2NkNmVmOGYwNmVkLi43ZjZjYWJjMDU5MTIxMDgxYzRkNzI4NjAy
MTliZDRiOWM4NWI5NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJCb3hG
cmFnbWVudEluZm8qIFJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVu
dEluZm8oY29uc3QgUgogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdt
ZW50SW5mby5hZGQoYm94LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4o
bG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWlu
SXNJbnNldCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94
RnJhZ21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gs
IG1ha2VVbmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dp
Y2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZh
bHVlOwogICAgIHJldHVybiBib3hJbmZvLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAppbmRleCA0NGY1NjM1YmE1M2Fl
M2Y3ZTk0ZDdhYzhlNDk2NzM5MGY1OGMyZTU2Li44NDZkZDNhMDJhYTg2YWFmNzE1YzA5NGU4YzM1
MGMxNjZhODY3YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhZ21lbnRlZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFnbWVudGVkRmxvdy5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIFJlbmRlckZyYWdtZW50Q29u
dGFpbmVyKiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y3VycmVudEZyYWdtZW50KCkgY29uc3QKIENv
bnRhaW5pbmdGcmFnbWVudE1hcCYgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFn
bWVudE1hcCgpCiB7CiAgICAgaWYgKCFtX2xpbmVUb0ZyYWdtZW50TWFwKQotICAgICAgICBtX2xp
bmVUb0ZyYWdtZW50TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+
KCk7CisgICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAgPSBtYWtlVW5pcXVlPENvbnRhaW5pbmdG
cmFnbWVudE1hcD4oKTsKIAogICAgIHJldHVybiAqbV9saW5lVG9GcmFnbWVudE1hcC5nZXQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1h
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmlu
ZGV4IGI5MDQ1ZTY3OTA4NzNhYmY4MWE5MGRmYTViYmIxMTA5M2M2NzdiMDIuLjUyYzc5MGQ0ZTU3
ODliMTc4ZTI2YzhhYmQ4YmE3YjEzY2M1OTE1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVu
ZGVyR2VvbWV0cnlNYXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NCiAgICAgCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0g
bV9tYXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFu
c2xhdGlvbigpKQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD4odCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtl
VW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKICAgICBlbHNlCiAgICAgICAgIHN0ZXAu
bV9vZmZzZXQgPSBMYXlvdXRTaXplKHQuZSgpLCB0LmYoKSk7CiAKQEAgLTIzNSw3ICsyMzUsNyBA
QCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3
LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3Rl
cCA9IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0ID0g
c2Nyb2xsT2Zmc2V0OwogICAgIGlmICh0KQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3Rk
OjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOworICAgICAgICBzdGVwLm1f
dHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwogICAgIAog
ICAgIHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcAppbmRleCBlMzVhMmMxMzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0Y2NjOWQwZjM0OTdmLi40
OWFkMDM1NTUzNzM0MjI1ZjFkZGQ2MzNiNDJjMTM4MzJjY2VmYmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NG
b3JBdXRvUmVwZWEKICAgICB1bnNpZ25lZCBsYXN0QXV0b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRv
UmVwZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBlYXRUcmFja3MoZGlyZWN0aW9uKTsKIAogICAgIGlm
ICghZ3JpZC5oYXNHcmlkSXRlbXMoKSkgewotICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgIGVtcHR5VHJh
Y2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCB0cmFja0luZGV4ID0gZmlyc3RBdXRvUmVwZWF0VHJhY2s7IHRyYWNrSW5k
ZXggPCBsYXN0QXV0b1JlcGVhdFRyYWNrOyArK3RyYWNrSW5kZXgpCiAgICAgICAgICAgICBlbXB0
eVRyYWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5kZXgpOwogICAgIH0gZWxzZSB7CkBAIC01NTIsNyAr
NTUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlk
Ojpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICAgICAgICAgIEdyaWRJdGVyYXRv
ciBpdGVyYXRvcihncmlkLCBkaXJlY3Rpb24sIHRyYWNrSW5kZXgpOwogICAgICAgICAgICAgaWYg
KCFpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgewogICAgICAgICAgICAgICAgIGlmICghZW1wdHlU
cmFja0luZGV4ZXMpCi0gICAgICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3Rk
OjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICAg
ICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0Pigp
OwogICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTczMiw3ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBv
c2l0aW9uc091dAogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlk
Lm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25T
cGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRl
bShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9u
UG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jv
c3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXpl
KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0
aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBv
c2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3Np
dGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
R3JpZEFyZWE+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rp
b25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMp
OwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdy
aWQoR3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZjZjYjU2
MTgxMmQyMjI2ODY2OTgzZjNhYjljNzQwYTU2ZGIwMjZlOC4uYzM1NWZmMzcxYjQxMWE1OGU3OTA2
Yzg3N2VhZDRiNTM0NjcxNWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAog
UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4
ZWxSYXRpbykKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJ
bnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJj
ZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4o
KnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwg
bV9pbWFnZURldmljZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVw
ZGF0ZUFsdFRleHQoKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1h
Z2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5
bAogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQogICAgIDogUmVuZGVyUmVwbGFj
ZWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVz
b3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNv
dXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxS
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxS
ZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCmluZGV4IDlkOGE2NTkzNGJhM2ZkMjU0NzRjMzljOTFmZWVjNDNhYTBj
OWY5ZjUuLjE1MzI1Y2RhMTY5MDY3YTU2OTFiODg1YThkZmRjN2FhOTAzNjQwNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6ZGVsZXRlTGluZXMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5s
aW5lRmxvd0JveD4gUmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMpOwogfQogCiBJbmxpbmVGbG93Qm94KiBS
ZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMjc2Y2U4MjcyYmNkYjMzNjQ1NDFkZTQ2
MTEyZjJhM2Y5NzQxMDE3MS4uNjQwNjI4ZmQ2NGJkMWFkYjJiMjY5ODg5NWFmY2M5M2E0ODA4YWFj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03MDAsNyAr
NzAwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgICAg
ICAvLyBJZ25vcmUgbm9uLW92ZXJmbG93IGxheWVycyBhbmQgcmVmbGVjdGlvbnMuCiAgICAgICAg
IGlmIChjaGlsZC0+aXNOb3JtYWxGbG93T25seSgpICYmICFpc1JlZmxlY3Rpb25MYXllcigqY2hp
bGQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fbm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICAgICAg
ICAgbV9ub3JtYWxGbG93TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVy
Kj4+KCk7CisgICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IG1ha2VVbmlxdWU8VmVj
dG9yPFJlbmRlckxheWVyKj4+KCk7CiAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0LT5hcHBl
bmQoY2hpbGQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yCiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxG
bG93T25seSgpKSB7CiAgICAgICAgIGF1dG8mIGxheWVyTGlzdCA9ICh6SW5kZXgoKSA+PSAwKSA/
IHBvc2l0aXZlWk9yZGVyTGlzdCA6IG5lZ2F0aXZlWk9yZGVyTGlzdDsKICAgICAgICAgaWYgKCFs
YXllckxpc3QpCi0gICAgICAgICAgICBsYXllckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxSZW5kZXJMYXllcio+PigpOworICAgICAgICAgICAgbGF5ZXJMaXN0ID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAgbGF5ZXJMaXN0LT5hcHBlbmQodGhpcyk7
CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVU
cmFuc2Zvcm0oKQogICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3RyYW5zZm9ybTsKICAgICBp
ZiAoaGFzVHJhbnNmb3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNm
b3JtKQotICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9y
bWF0aW9uTWF0cml4PigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4PigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3RyYW5z
Zm9ybSA9IG51bGxwdHI7CiAgICAgICAgIApAQCAtNTUxOSw3ICs1NTE5LDcgQEAgUmVmPENsaXBS
ZWN0cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0
JiBjbGlwUmVjdHNDb24KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2NsaXBSZWN0c0NhY2hlKQot
ICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNo
ZT4oKTsKKyAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2Fj
aGU+KCk7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3Rz
Um9vdFtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyOwogICAgIG1f
Y2xpcFJlY3RzQ2FjaGUtPm1fc2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID0gY2xp
cFJlY3RzQ29udGV4dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeTsKQEAgLTYwOTcsNyAr
NjA5Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKENsaXBSZWN0c1R5cGUg
dHlwZVRvQ2xlYXIpCiBSZW5kZXJMYXllckJhY2tpbmcqIFJlbmRlckxheWVyOjplbnN1cmVCYWNr
aW5nKCkKIHsKICAgICBpZiAoIW1fYmFja2luZykgewotICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOworICAgICAgICBtX2JhY2tp
bmcgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOwogICAgICAgICBjb21w
b3NpdG9yKCkubGF5ZXJCZWNhbWVDb21wb3NpdGVkKCp0aGlzKTsKIAogICAgICAgICB1cGRhdGVG
aWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CkBAIC02NTE1LDcgKzY1MTUsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZQogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNIVE1MTWFycXVlZSgpICYmIHJl
bmRlcmVyKCkuc3R5bGUoKS5tYXJxdWVlQmVoYXZpb3IoKSAhPSBNYXJxdWVlQmVoYXZpb3I6Ok5v
bmUgJiYgcmVuZGVyZXIoKS5pc0JveCgpKSB7CiAgICAgICAgIGlmICghbV9tYXJxdWVlKQotICAg
ICAgICAgICAgbV9tYXJxdWVlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlz
KTsKKyAgICAgICAgICAgIG1fbWFycXVlZSA9IG1ha2VVbmlxdWU8UmVuZGVyTWFycXVlZT4odGhp
cyk7CiAgICAgICAgIG1fbWFycXVlZS0+dXBkYXRlTWFycXVlZVN0eWxlKCk7CiAgICAgfSBlbHNl
IGlmIChtX21hcnF1ZWUpCiAgICAgICAgIG1fbWFycXVlZSA9IG51bGxwdHI7CkBAIC02NzI3LDcg
KzY3MjcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjplbnN1cmVMYXllckZpbHRlcnMoKQogICAgIGlm
IChtX2ZpbHRlcnMpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX2ZpbHRlcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOworICAgIG1fZmlsdGVycyA9
IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVy
TGF5ZXI6OmNsZWFyTGF5ZXJGaWx0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggN2YxNDM2NmE3ZTU2MTEwMzM3MjA3N2JlZmUy
YTYwODM0MmY3YmE0OS4uNzVmOWViMGYyOTdhMjM2YzdhNzgyNTY4NjNkMDUyODU3YjRjZGNmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
QEAgLTE2MjcsNyArMTYyNyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNl
c3RvckNsaXBwaW5nU3RhY2soVmVjdG9yPENvbXBvc2l0ZWRDbGlwRGF0YT4mCiAgICAgfQogICAg
IAogICAgIGlmICghbV9hbmNlc3RvckNsaXBwaW5nU3RhY2spIHsKLSAgICAgICAgbV9hbmNlc3Rv
ckNsaXBwaW5nU3RhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0
YWNrPihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkpOworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdT
dGFjayA9IG1ha2VVbmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xp
cHBpbmdEYXRhKSk7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFt
IDw8ICJsYXllciAiIDw8ICZtX293bmluZ0xheWVyIDw8ICIgYW5jZXN0b3JDbGlwcGluZ1N0YWNr
ICIgPDwgKm1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQpAQCAtMzE3OCwxNyArMzE3OCwxNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbQogICAg
ICAgICAKICAgICAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBr
ZXkgPT0gMTsKICAgICAgICAgaWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZy
YW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5z
Zm9ybSkpCi0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlx
dWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3Jt
KCksIHRmKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCks
IHRmKSk7CiAKICAgICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFt
ZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5
KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7Cisg
ICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAgICAgICAgIGlm
ICgoaGFzRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1l
LmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVy
VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXks
IGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9y
Lmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5
bGUtPmZpbHRlcigpLCB0ZikpOwogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICAg
ICAgaWYgKChoYXNCYWNrZHJvcEZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1
cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BG
aWx0ZXIpKQotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFr
ZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ry
b3BGaWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2Vy
dChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJh
Y2tkcm9wRmlsdGVyKCksIHRmKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTMyNDMsOCArMzI0Myw4
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVP
ZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogb3Bh
Y2l0eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFj
aXR5KTsKICAgICAgICAgaWYgKG9wYWNpdHlBbmltICYmICFvcGFjaXR5QW5pbS0+aXNFbXB0eU9y
WmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlW
ZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rv
ci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3Np
dGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5
VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNv
bXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFj
aXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBv
c2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNp
dHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9z
aXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAgIC8vIFRoZSBi
b3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNo
IGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBo
ZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNp
dHlWZWN0b3IsIEZsb2F0U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0
aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0
KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNp
dHkgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFs
IG9wYWNpdHkuCkBAIC0zMjU4LDggKzMyNTgsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6
c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3Blcgog
ICAgICAgICBjb25zdCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0
aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAgICAgICBpZiAodHJhbnNm
b3JtQW5pbSAmJiAhdHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAg
ICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3Bl
cnR5VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjpt
YWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zv
cm0oKSkpOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5p
cXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOwor
ICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0
cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+
KDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xh
eWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJC
b3goKS0+Ym9yZGVyQm94UmVjdCgpKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5
ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0p
LCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBj
b3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNv
IHNldCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9y
bSgqdG9TdHlsZSk7CkBAIC0zMjcyLDggKzMyNzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3Bl
cgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0
aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5p
bSAmJiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAg
IEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5RmlsdGVyKTsK
LSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOwotICAgICAgICAgICAgZmls
dGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigx
LCB0b1N0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydCht
YWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7
CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0
aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFw
aGljc0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgZmlsdGVy
QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQ
cm9wZXJ0eUZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5z
dXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9u
IGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRl
RmlsdGVycygqdG9TdHlsZSk7CkBAIC0zMjg3LDggKzMyODcsOCBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlE
IHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGJhY2tkcm9wRmlsdGVyQW5pbSA9IHRv
U3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmls
dGVyKTsKICAgICAgICAgaWYgKGJhY2tkcm9wRmlsdGVyQW5pbSAmJiAhYmFja2Ryb3BGaWx0ZXJB
bmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1
ZUxpc3QgYmFja2Ryb3BGaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9w
RmlsdGVyKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1h
a2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmls
dGVyKCkpKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1h
a2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRl
cigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1
ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7
CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0
ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwogICAgICAg
ICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGJhY2tkcm9wRmlsdGVyVmVj
dG9yLCBGbG9hdFNpemUoKSwgYmFja2Ryb3BGaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmlt
YXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0
ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRo
ZSBjb3JyZWN0IGJhY2tkcm9wIGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBl
bmRzLCBhbHNvIHNldCB0aGUgZmluYWwgYmFja2Ryb3AgZmlsdGVyLgogICAgICAgICAgICAgICAg
IHVwZGF0ZUJhY2tkcm9wRmlsdGVycygqdG9TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGFiZTRkNGQ2NzVhMjIx
ODZlMmVhODlkNDEyZmZhODE1MzhjNWM5MjkuLjMyMTIyOWQ2ZjIzY2ZhZTY2YTA1YTUyODA4ZGQw
YjBjYmE4YzE0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYgcmVuZGVyVmlldykKIHsKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCku
cGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5h
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5h
dG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsK
KyAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxM
ZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xp
ZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKICNlbmRpZgogfQogCkBAIC02MTIsNyAr
NjEyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlz
cGxheVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllcioKIHsKICAgICBpZiAoIW1fbGF5ZXJVcGRh
dGVyKSB7CiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9IHBhZ2UoKS5jaHJv
bWUoKS5kaXNwbGF5SUQoKTsKLSAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKKyAgICAgICAgbV9s
YXllclVwZGF0ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlz
cGxheUlEKTsKICAgICB9CiAgICAgCiAgICAgbV9sYXllclVwZGF0ZXItPnNjaGVkdWxlVXBkYXRl
KCk7CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVy
Q29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogCiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBjb25zdHJhaW50czsKICAg
ICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpIHsKLSAg
ICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3Ry
YWludHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8U3Rp
Y2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lW
aWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAgICAgICAgICAgY29uc3QgUmVuZGVyTGF5
ZXIqIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0cjsKICAgICAgICAgICAg
IGlmIChjb21wb3NpdG9yLmlzQXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5ZXIoKmxheWVyLCAmZW5j
bG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpICYmIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxh
eWVyKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxh
eWVyLT5pc0NvbXBvc2l0ZWQoKSk7CkBAIC00ODAwLDcgKzQ4MDAsNyBAQCB2b2lkIExlZ2FjeVdl
YktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJh
aW5lZExheWVycwogICAgICAgICAgICAgICAgIHN0aWNreUNvbnRhaW5lck1hcC5hZGQobGF5ZXIt
PmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGVuY2xvc2luZ1Rv
dWNoU2Nyb2xsYWJsZUxheWVyLT5iYWNraW5nKCktPnNjcm9sbENvbnRhaW5lckxheWVyKCktPnBs
YXRmb3JtTGF5ZXIoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXIt
PnJlbmRlcmVyKCkuaXNGaXhlZFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29t
cG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAg
ICAgICAgY29uc3RyYWludHMgPSBtYWtlVW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVy
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggNGI4
NmZlMmFkMTc1ZGNlODZhZDM4NTJiZGZjMTUyZmQxMzA4ZDQ1ZS4uMTI4Yzk2ZGFlMGIzMTAwNmNh
MjVkNWE1NmM3MjBiYzg5MGQzNGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJl
bmRlckxheWVyTW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCiB2b2lkIFJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6OmNyZWF0ZUxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXIpOwotICAgIG1f
bGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyPigqdGhpcyk7CisgICAgbV9sYXll
ciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKICAgICBzZXRIYXNMYXllcih0cnVl
KTsKICAgICBtX2xheWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGJjNTUyN2I4YzQ2YTRkZTA2
NmY2OWU1YTMxMGM4ODY4MTk2ZmMyM2EuLjFhYWUwOWQwMGIyNmVhM2NhZGVhODY3MmUyNzc5Mjli
ZmQxN2E2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIGludCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsCiAKIHN0ZDo6dW5p
cXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJv
eCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRo
aXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0K
IAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OnNldElubGluZUJveFdyYXBwZXIoSW5saW5lRWxlbWVu
dEJveCogaW5saW5lQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5GbG93LmNwcAppbmRleCA5YmI5YTUzOWQ2NjQyZGY5MDAyNmE3ODJhZjhjZjg0
ZGM0OWRhMmE5Li40MTAzZGFkNDg0NGRkMjRhMzAyYTczMmFmMjIxOWFjOTAwMDFjYmI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNw
cApAQCAtNDIsNyArNDIsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVs
dGlDb2x1bW5GbG93KTsKIAogUmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVt
bkZsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVu
ZGVyRnJhZ21lbnRlZEZsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zcGFu
bmVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8U3Bhbm5lck1hcD4oKSkKKyAgICAsIG1fc3Bhbm5lck1h
cChtYWtlVW5pcXVlPFNwYW5uZXJNYXA+KCkpCiAgICAgLCBtX2xhc3RTZXRXb3JrZWRPbihudWxs
cHRyKQogICAgICwgbV9jb2x1bW5Db3VudCgxKQogICAgICwgbV9jb2x1bW5XaWR0aCgwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ZGEzYmQ3Mzc3MWJh
MTcxOTBlYWMzNWRhNjM4ZTI0M2YxOTAyOTA3Li4wYmY1MTkzZGU0ODQ0NWJjYzY3N2U5MTRlOGFk
M2RmODFjZWI4MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cApAQCAtMTg5Myw3ICsxODkzLDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RS
YXJlRGF0YSYgUmVuZGVyT2JqZWN0OjpyYXJlRGF0YSgpIGNvbnN0CiBSZW5kZXJPYmplY3Q6OlJl
bmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAg
ICBzZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJl
KHRoaXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+
KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJl
KHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRh
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uY3BwCmluZGV4IDNmYWFmYTExMjA2NTI2MjNlMDY1ZTZhMjFjZTFjNzUxZGJhOTFhMzcu
LjAzZGQwOGZlNmI3ZjBhNmRkMTVmMjFmMjMzNWNjYWJjNWFmMDJhNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4pOwogCiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKICAgICA6IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQot
ICAgICwgbV9zbmFwc2hvdFJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNv
dXJjZT4oKSkKKyAgICAsIG1fc25hcHNob3RSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdl
UmVzb3VyY2U+KCkpCiB7CiAgICAgbV9zbmFwc2hvdFJlc291cmNlLT5pbml0aWFsaXplKCp0aGlz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDE4NmNh
ODcwZWQxMDkxM2Q1OGI4NTQ5ZWI5NmRlMzM2ZTM0NTUzNTkuLmU5MWExMzM3MTk5MTJkMThmYTU1
ZTM2ZDgzNTU4ODU3YzJkMThiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcApAQCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQgUmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5CiAgICAg
ICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NTMiBzcGVjLCB5b3Ugb25seSB1c2UgZml4ZWQgdGFi
bGUgbGF5b3V0IGlmIGFuCiAgICAgICAgIC8vIGV4cGxpY2l0IHdpZHRoIGlzIHNwZWNpZmllZCBv
biB0aGUgdGFibGUuICBBdXRvIHdpZHRoIGltcGxpZXMgYXV0byB0YWJsZSBsYXlvdXQuCiAgICAg
ICAgIGlmIChzdHlsZSgpLnRhYmxlTGF5b3V0KCkgPT0gVGFibGVMYXlvdXRUeXBlOjpGaXhlZCAm
JiAhc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIG1fdGFibGVM
YXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkVGFibGVMYXlvdXQ+KHRoaXMpOworICAgICAg
ICAgICAgbV90YWJsZUxheW91dCA9IG1ha2VVbmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0g
bWFrZVVuaXF1ZTxBdXRvVGFibGVMYXlvdXQ+KHRoaXMpOwogICAgIH0KIAogICAgIC8vIElmIGJv
cmRlciB3YXMgY2hhbmdlZCwgaW52YWxpZGF0ZSBjb2xsYXBzZWQgYm9yZGVycyBjYWNoZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA2OGMzYTE1ZDk1MTZiNWIz
YzdjMmRkYWI0YWRhNDA5YTVkYzIwZGZhLi5hMDJkOWMxNmYzYTI3Y2M1MjIwOTcxMDJjMjY5Yjc1
NTUwOWQwMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0x
MzExLDcgKzEzMTEsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVs
bExheW91dCkKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclRleHQ6OmNy
ZWF0ZVRleHRCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRC
b3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7
CiB9CiAKIHZvaWQgUmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gmIHRl
eHRCb3gpCkBAIC0xNTQ1LDcgKzE1NDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5
UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogICAg
ICAgICByZXR1cm47CiAgICAgYXV0byYgc2VjdXJlVGV4dFRpbWVyID0gc2VjdXJlVGV4dFRpbWVy
cygpLmFkZCh0aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzZWN1cmVU
ZXh0VGltZXIpCi0gICAgICAgIHNlY3VyZVRleHRUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vj
dXJlVGV4dFRpbWVyPigqdGhpcyk7CisgICAgICAgIHNlY3VyZVRleHRUaW1lciA9IG1ha2VVbmlx
dWU8U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7CiAgICAgc2VjdXJlVGV4dFRpbWVyLT5yZXN0YXJ0
KG9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGMxNDQ1MWExOGVlYTdhNTcxYTI3Nzc4OThhNzljYzhi
NDNmZjMxNDIuLjVmZWM2NzhjNmJiNWRmMGU0OTIyYjAxMmMzZjI2OGRiYWI0YTdiNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2
b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHJl
cGFpbnRSZWN0KSBjb25zdAogICAgIC8vIEZJWE1FOiBNYXliZSB0aGVyZSBzaG91bGQgYmUgYSBy
ZWdpb24gdHlwZSB0aGF0IGRvZXMgdGhpcyBhdXRvbWF0aWNhbGx5LgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplID0gMTYgKiAxNjsKICAgICBp
ZiAobV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24tPmdyaWRTaXplKCkgPiBtYXhpbXVtUmVwYWlu
dFJlZ2lvbkdyaWRTaXplKQotICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRz
KCkpOworICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVn
aW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOwogfQogCiB2b2lkIFJl
bmRlclZpZXc6OmZsdXNoQWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uKCkgY29uc3QKQEAgLTcyNCw3
ICs3MjQsNyBAQCBib29sIFJlbmRlclZpZXc6OnVzZXNDb21wb3NpdGluZygpIGNvbnN0CiBSZW5k
ZXJMYXllckNvbXBvc2l0b3ImIFJlbmRlclZpZXc6OmNvbXBvc2l0b3IoKQogewogICAgIGlmICgh
bV9jb21wb3NpdG9yKQotICAgICAgICBtX2NvbXBvc2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOworICAgICAgICBtX2NvbXBvc2l0b3IgPSBtYWtl
VW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX2Nv
bXBvc2l0b3I7CiB9CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwK
IEltYWdlUXVhbGl0eUNvbnRyb2xsZXImIFJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIoKQogewogICAgIGlmICghbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyKQotICAgICAgICBtX2lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUXVhbGl0eUNvbnRy
b2xsZXI+KCp0aGlzKTsKKyAgICAgICAgbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyID0gbWFrZVVu
aXF1ZTxJbWFnZVF1YWxpdHlDb250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdl
UXVhbGl0eUNvbnRyb2xsZXI7CiB9CiAKQEAgLTgzNCw3ICs4MzQsNyBAQCBSZW5kZXJWaWV3OjpS
ZXBhaW50UmVnaW9uQWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcihSZW5kZXJW
aWV3KiB2aWV3KQogCiAgICAgbV93YXNBY2N1bXVsYXRpbmdSZXBhaW50UmVnaW9uID0gISFyb290
UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb247CiAgICAgaWYgKCFtX3dhc0Fj
Y3VtdWxhdGluZ1JlcGFpbnRSZWdpb24pCi0gICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3Vt
dWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgICAg
ICByb290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBtYWtlVW5pcXVl
PFJlZ2lvbj4oKTsKICAgICBtX3Jvb3RWaWV3ID0gbWFrZVdlYWtQdHIoKnJvb3RSZW5kZXJWaWV3
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4
IGZkY2Q1OWM1MmM1ZjMyOGY1MjA5ZjAwYzFmOGQ4MTZhZGM1Zjc2NjguLjQ0NTU4NDFhZjMyZmYx
NTI1MmNmYTI4ZWQ4YTY5YzNlNDlmMWYzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBmbG9hdCBSb290SW5saW5lQm94
OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIs
IGZsbwogICAgICAgICBnRWxsaXBzaXNCb3hNYXAgPSBuZXcgRWxsaXBzaXNCb3hNYXAoKTsKIAog
ICAgIEFTU0VSVCghaGFzRWxsaXBzaXNCb3goKSk7Ci0gICAgYXV0byogZWxsaXBzaXNCb3ggPSBn
RWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEVsbGlwc2lzQm94Pihi
bG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94
ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwg
IXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFs
dWUuZ2V0KCk7CisgICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0
aGlzLCBtYWtlVW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRo
aXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgo
KSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRh
bCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgc2V0SGFzRWxsaXBz
aXNCb3godHJ1ZSk7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYW4gUlRMIHZlcnNpb24gb2Yg
dGhpcz8KICAgICBpZiAobHRyICYmICh4KCkgKyBsb2dpY2FsV2lkdGgoKSArIGVsbGlwc2lzV2lk
dGgpIDw9IGJsb2NrUmlnaHRFZGdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaAppbmRleCA3ZGYyODI4OGE0ZDU1YzJjN2QyNmFkNGJjMDE3NmQwYjc2MTc4MzY0Li4y
NDdlNTVjMDY5ZTlmZTg4MWNhZjRiZmJjMmI0YWVmMTllMzYxN2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBSb290
SW5saW5lQm94IDogcHVibGljIElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxS
b290SW5saW5lQm94PgogICAgICAgICBpZiAobV9mbG9hdHMpCiAgICAgICAgICAgICBtX2Zsb2F0
cy0+YXBwZW5kKG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fZmxvYXRzID0gc3RkOjptYWtlX3VuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEs
IG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CisgICAgICAgICAgICBtX2Zsb2F0cyA9IG1ha2VV
bmlxdWU8Q2xlYW5MaW5lRmxvYXRMaXN0PigxLCBtYWtlV2Vha1B0cihmbG9hdGluZ0JveCkpOwog
ICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlRmxvYXQoUmVuZGVyQm94JiBmbG9hdGluZ0JveCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5kZXgg
ZWM1ZTczNTZhNjRkMTI0OWRkYTExNDdlOGJiYTMxZjQ3OTBiNGJmMi4uYjliYWQwYTA5ZjI5YmY3
YWRjOWQzMzNmNGU4MTFjM2VhMWI5M2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKQEAgLTEzMSwxMyArMTMxLDEzIEBAIHN0YXRpYyBT
ZWxlY3Rpb25EYXRhIGNvbGxlY3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBz
ZWxlY3Rpb24sIGJvb2wKICAgICB3aGlsZSAoc3RhcnQgJiYgc3RhcnQgIT0gc3RvcCkgewogICAg
ICAgICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpzdGFydCwgc2VsZWN0aW9uKSkg
ewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGlu
ZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0g
ICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CisgICAgICAgICAg
ICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVy
U2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CiAgICAgICAgICAgICBpZiAocmVwYWludERp
ZmZlcmVuY2UpIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGJsb2NrID0gY29udGFpbmlu
Z0Jsb2NrQmVsb3dWaWV3KCpzdGFydCk7IGJsb2NrOyBibG9jayA9IGNvbnRhaW5pbmdCbG9ja0Jl
bG93VmlldygqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGJsb2NrSW5mbyA9
IG9sZFNlbGVjdGlvbkRhdGEuYmxvY2tzLmFkZChibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOworICAgICAgICAgICAg
ICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4o
KmJsb2NrKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTIxMywxMyArMjEzLDEzIEBAIEludFJlY3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91
bmRzKENsaXBUb1Zpc2libGVDb250ZW50IGNsaXBUb1Zpc2libGVDb250CiAgICAgICAgIGlmICgo
c3RhcnQtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4
dC5zdGFydCgpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKICAgICAgICAg
ICAgICYmIHN0YXJ0LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9u
Tm9uZSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRp
bmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdl
bGwuCi0gICAgICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRv
VmlzaWJsZUNvbnRlbnQ6OlllcykpOworICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwg
bWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250
ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKICAgICAgICAgICAgIGF1dG8qIGJs
b2NrID0gc3RhcnQtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgd2hpbGUgKGJsb2Nr
ICYmICFpczxSZW5kZXJWaWV3PigqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSByZW5kZXJlcnMuYWRkKGJs
b2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2Nr
SW5mbykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJ
bmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBU
b1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOworICAgICAgICAg
ICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2Nr
LCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsKICAg
ICAgICAgICAgICAgICBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VE
YXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2Nr
UmVwCiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25T
dGFydCk7CiAgICAgZm9yIChhdXRvKiBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsg
Y3VycmVudFJlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJl
bnRSZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICBpZiAoaXNW
YWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpjdXJyZW50UmVuZGVyZXIsIG1fc2VsZWN0aW9uQ29u
dGV4dCkpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZv
PiBzZWxlY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigq
Y3VycmVudFJlbmRlcmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rp
b25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0cnVlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05U
Uk9MUykKICAgICAgICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHNlbGVjdGlvbkluZm8tPmNvbGxl
Y3RlZFNlbGVjdGlvblJlY3RzKCkpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0
aGVyZXIuYWRkUmVjdChzZWxlY3Rpb25JbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIHJlY3QpOwpA
QCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBD
b250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9
IG5ld1NlbGVjdGVkQmxvY2tzLmFkZChjb250YWluaW5nQmxvY2ssIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgICAg
ICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpj
b250YWluaW5nQmxvY2spOwogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRh
aW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkR2FwUmVjdHMo
YmxvY2tJbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIGJsb2NrSW5mby0+cmVjdHMoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggOGM3NjZl
NmRlMmM3NGFkMDM3OTczMzMxZmM3ZjVhNDc0OTAxNWI4ZS4uYzM2MmY0ZTU3YjAwZjljZTM5YTcz
ZWNlODExYzJjODMyZDY1MGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0LmNwcApAQCAtOTk3LDcgKzk5Nyw3IEBAIExheW91dDo6TGF5b3V0KGNvbnN0
IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQsIGNvbnN0IFJlbmRlckJs
b2NrCiBjb25zdCBSdW5SZXNvbHZlciYgTGF5b3V0OjpydW5SZXNvbHZlcigpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3J1blJlc29sdmVyKQotICAgICAgICBtX3J1blJlc29sdmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOworICAgICAg
ICBtX3J1blJlc29sdmVyID0gbWFrZVVuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5k
ZXJlciwgKnRoaXMpOwogICAgIHJldHVybiAqbV9ydW5SZXNvbHZlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3Bw
CmluZGV4IDFiZjk4ZTRlZWI0M2JhMjJjZGE0ZTZmNWQzYmMyYTVmOWZjNGI0YjcuLjA2MjViMTZi
ZDU0MzE5NzNlZDMxZGU5OThhZWQ4ODliMDEyYmEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTEwMiw3
ICsxMDIsNyBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNv
bnN0IExheW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaQogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNoYWRvd0RhdGE+IGRlYnVnU2hhZG93ID0gbnVsbHB0cjsKICAgICBpZiAoZmxvdy5zZXR0aW5n
cygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpIHsKLSAgICAgICAgZGVi
dWdTaGFkb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAx
MCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7
CisgICAgICAgIGRlYnVnU2hhZG93ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgw
LCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAs
IDIwMCkpOwogICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVidWdTaGFkb3cuZ2V0KCkp
OwogICAgIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgZ2VuZXJhdGVMaW5lQm94VHJlZShS
ZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQogICAgICAgICBCaWRp
UnVuTGlzdDxCaWRpUnVuPiBiaWRpUnVuczsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gcmFuZ2Uu
YmVnaW4oKTsgaXQgIT0gcmFuZ2UuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgIGF1dG8gcnVu
ID0gKml0OwotICAgICAgICAgICAgYmlkaVJ1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8
QmlkaVJ1bj4ocnVuLmxvY2FsU3RhcnQoKSwgcnVuLmxvY2FsRW5kKCksIGNvbnN0X2Nhc3Q8UmVu
ZGVyT2JqZWN0Jj4ocnVuLnJlbmRlcmVyKCkpLCBiaWRpQ29udGV4dC5wdHIoKSwgVV9MRUZUX1RP
X1JJR0hUKSk7CisgICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxCaWRp
UnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJP
YmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklH
SFQpKTsKICAgICAgICAgfQogCiAgICAgICAgIExpbmVJbmZvIGxpbmVJbmZvOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKaW5kZXggM2JhMTMwZDQ1NTlkNzI5
MmQ4OTFmNTUzY2YxNDgwZjg2NmJiMmJhZC4uNGI0M2U2YWNiZTBlZWRhZjRlYWY0ZDJlNWQ1YTQ0
NjM5MDYwNTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRv
U2l6aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcu
Y3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBUZXh0QXV0b1NpemluZzo6YWRkVGV4dE5vZGUo
VGV4dCYgbm9kZSwgZmxvYXQgY2FuZGlkYXRlU2l6ZSkKICAgICBMT0coVGV4dEF1dG9zaXppbmcs
ICIgYWRkQXV0b1NpemVkTm9kZSAlcCBjYW5kaWRhdGVTaXplPSVmIiwgJm5vZGUsIGNhbmRpZGF0
ZVNpemUpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0Tm9kZXMuYWRkPFRleHRBdXRvU2l6
aW5nSGFzaFRyYW5zbGF0b3I+KG5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKSwgbnVsbHB0cik7CiAg
ICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOworICAgICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZ1Zh
bHVlPigpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZFRleHROb2RlKG5vZGUs
IGNhbmRpZGF0ZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lQnJlYWtlci5jcHAKaW5kZXggMmIxYzFmYTAzY2ExYzU3NTY5MDI3N2E1ZTgxMjg3MTAxMGQ0
NDY3ZS4uZDExNjYxNWE3MjZjNWEwYTk0M2Q5YjlmNmUwOTQwYjk1ZTY5MDkxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIExpbmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJl
c29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mCiAgICAgICAgIGlmIChvYmplY3QuaXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgIHNldFN0YXRpY1Bvc2l0aW9ucyhtX2Jsb2Nr
LCBkb3duY2FzdDxSZW5kZXJCb3g+KG9iamVjdCksIHdpZHRoLnNob3VsZEluZGVudFRleHQoKSk7
CiAgICAgICAgICAgICBpZiAob2JqZWN0LnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVU
eXBlKCkpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKHN0ZDo6
bWFrZV91bmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJl
c29sdmVyLmRpcigpKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1
bihtYWtlVW5pcXVlPEJpZGlSdW4+KDAsIDEsIG9iamVjdCwgcmVzb2x2ZXIuY29udGV4dCgpLCBy
ZXNvbHZlci5kaXIoKSkpOwogICAgICAgICAgICAgICAgIGxpbmVJbmZvLmluY3JlbWVudFJ1bnNG
cm9tTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChvYmplY3QuaXNGbG9hdGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmNwcAppbmRleCA0YjE1OTdlOWYyMWM5Y2Q0YjJmMGQ4ODM0NzQ0Nzc1
ZjFkOGJkZTAxLi5kNTIwOTJiNjhlZDhlMmM4ZmRhNTE1YzkwY2Q1MjIzNTZkNjU1YzI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAt
NzYsNyArNzYsNyBAQCBJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjpp
bnRlcnZhbEF0KGludCB5KSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGlu
dCBzaGFwZU1hcmdpbikgY29uc3QKIHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChv
ZmZzZXQoKSA+IHNoYXBlTWFyZ2luKSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiAr
IHNoYXBlTWFyZ2luICogMjsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFz
dGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFy
Z2luLCBvZmZzZXQoKSkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFw
ZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9m
ZnNldCgpKSk7CiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5l
cmF0b3Ioc2hhcGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8
IGJvdW5kcygpLm1heFkoKTsgKyt5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwCmluZGV4IDMwMjMxYTBiZTFiYmM2M2U0YmUzZDI1MDUxMmJlZDNkMTk1OTQwOTku
LmY1ZWZlZmRkMzJiMzA1NDdhZGJkOGViMDhmNTRlNjNiMDI0MGZkOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC00NiwyNCArNDYsMjQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlSW5zZXRT
aGFwZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiB7CiAgICAgQVNTRVJUKGJvdW5k
cy5yZWN0KCkud2lkdGgoKSA+PSAwICYmIGJvdW5kcy5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8U2hhcGU+IGNyZWF0ZUNpcmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxv
YXQgcmFkaXVzKQogewogICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVz
LCBjZW50ZXIueSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFk
aXVzLCByYWRpdXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxv
YXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoy
LCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOwogfQogCiBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYg
Y2VudGVyLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChyYWRpaS53aWR0
aCgpID49IDAgJiYgcmFkaWkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgo
KSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhl
aWdodCgpKjIpLCByYWRpaSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjdGFuZ2xlU2hhcGU+
KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlp
LmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CiB9
CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1
bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3Zl
KHZlcnRpY2VzKSwgZmlsbFJ1bGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBvbHlnb25TaGFw
ZT4oV1RGTW92ZSh2ZXJ0aWNlcyksIGZpbGxSdWxlKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9h
dFJlY3QgcGh5c2ljYWxSZWN0VG9Mb2dpY2FsKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
bG9naWNhbEJveEhlaWdodCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCkBAIC0xMjgsNyArMTI4
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFz
aWNTaGFwZSYgYmFzaWNTaGFwZSwgY29uc3QgTGEKICAgICAgICAgY29uc3QgVmVjdG9yPExlbmd0
aD4mIHZhbHVlcyA9IHBvbHlnb24udmFsdWVzKCk7CiAgICAgICAgIHNpemVfdCB2YWx1ZXNTaXpl
ID0gdmFsdWVzLnNpemUoKTsKICAgICAgICAgQVNTRVJUKCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IG1ha2VVbmlx
dWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB2YWx1ZXNTaXplOyBpICs9IDIpIHsKICAgICAgICAgICAgIEZsb2F0
UG9pbnQgdmVydGV4KAogICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWVz
LmF0KGkpLCBib3hXaWR0aCksCkBAIC0xNzksNyArMTc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNo
YXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hv
bGQsIGMKIAogICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gc25hcHBlZEludFJlY3QoaW1hZ2VSKTsK
ICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKLSAgICBh
dXRvIGludGVydmFscyA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1h
cmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CisgICAgYXV0byBpbnRlcnZhbHMg
PSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAt
bWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91
bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdl
UmVjdC5zaXplKCksIFVuYWNjZWxlcmF0ZWQpOwogCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBm
bG9hdCB0aHJlc2hvbGQsIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gcmFzdGVyU2hh
cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1h
cmdpblJlY3Quc2l6ZSgpKTsKKyAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0
ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CiAgICAgcmFz
dGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKICAgICByYXN0ZXJTaGFwZS0+
bV9tYXJnaW4gPSBtYXJnaW47CiAgICAgcmV0dXJuIHJhc3RlclNoYXBlOwpAQCAtMjMwLDcgKzIz
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0
IFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgV3JpCiAKICAgICBGbG9hdFJlY3QgcmVjdCgwLCAw
LCByb3VuZGVkUmVjdC5yZWN0KCkud2lkdGgoKSwgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgp
KTsKICAgICBGbG9hdFJvdW5kZWRSZWN0IGJvdW5kcyhyZWN0LCByb3VuZGVkUmVjdC5yYWRpaSgp
KTsKLSAgICBhdXRvIHNoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsK
KyAgICBhdXRvIHNoYXBlID0gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKICAgICBzaGFw
ZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHNoYXBlLT5tX21hcmdpbiA9IG1h
cmdpbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZU91dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uaAppbmRleCBjZDk0Zjg5YzAyYjBiOGMxMzUxOTQ1N2U0NGQwZGRhZjZkODdmMWZh
Li45NDg0MzE3MTk0N2MwMjMwOWFiN2Y0ZmIxYjk3YzI2Mzg4MmVlMzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaApAQCAtMTEz
LDcgKzExMyw3IEBAIGNsYXNzIFNoYXBlT3V0c2lkZUluZm8gZmluYWwgewogICAgICAgICBJbmZv
TWFwJiBpbmZvTWFwID0gU2hhcGVPdXRzaWRlSW5mbzo6aW5mb01hcCgpOwogICAgICAgICBpZiAo
U2hhcGVPdXRzaWRlSW5mbyogaW5mbyA9IGluZm9NYXAuZ2V0KCZrZXkpKQogICAgICAgICAgICAg
cmV0dXJuICppbmZvOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGluZm9NYXAuYWRkKCZrZXksIHN0
ZDo6bWFrZV91bmlxdWU8U2hhcGVPdXRzaWRlSW5mbz4oa2V5KSk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gaW5mb01hcC5hZGQoJmtleSwgbWFrZVVuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkp
KTsKICAgICAgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KICAgICBz
dGF0aWMgdm9pZCByZW1vdmVJbmZvKGNvbnN0IFJlbmRlckJveCYga2V5KSB7IGluZm9NYXAoKS5y
ZW1vdmUoJmtleSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZXMuY3BwCmluZGV4IDBjOThmOTE2NmY3ZTE1Mjk3MDNiY2RiMmM4YzgzY2M4MGJiN2JmMjQu
Ljc0NGM5MGI4ZmIzZjUyNzY4YTUzOGQyMTM1ODM2MmNhNjM0ODI3ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzU4LDcgKzM1OCw3
IEBAIFJlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlUGF0aDo6YmxlbmQoY29uc3QgQmFzaWNTaGFw
ZSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjCiAKICAgICBhdXRvJiBmcm9tUGF0aCA9IGRvd25j
YXN0PEJhc2ljU2hhcGVQYXRoPihmcm9tKTsKIAotICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVz
ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIHJlc3Vs
dGluZ1BhdGhCeXRlcyA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVp
bGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKCpmcm9tUGF0aC5tX2J5dGVTdHJlYW0sICptX2J5
dGVTdHJlYW0sICpyZXN1bHRpbmdQYXRoQnl0ZXMsIHByb2dyZXNzKTsKIAogICAgIGF1dG8gcmVz
dWx0ID0gQmFzaWNTaGFwZVBhdGg6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdGluZ1BhdGhCeXRlcykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCBl
N2JiMDYxNjUwMmQ5OWQ2ZGI0MzkyYmI0NjhhOWFiNDY5Y2U0OTRhLi4yYzEyZGQ5YjQwZGQ0MGIz
YzBiZjY3NDkzMjJhZTJiMGZkMWUwNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ29udGVudERhdGEuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBJbWFnZUNvbnRlbnRE
YXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2Jq
ZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRl
cm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBhdXRvIGltYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihtX2ltYWdlLmNvcHlSZWYoKSk7CisgICAgICAgIGF1
dG8gaW1hZ2UgPSBtYWtlVW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigp
KTsKICAgICAgICAgaW1hZ2UtPnNldEFsdFRleHQoYWx0VGV4dCgpKTsKICAgICAgICAgcmV0dXJu
IGltYWdlOwogICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBUZXh0Q29udGVudERhdGEg
ZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxS
ZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBj
bG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
Q29udGVudERhdGE+KG1fdGV4dCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+
IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb250
ZW50RGF0YT4obV90ZXh0KTsgfQogCiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CkBAIC0xNjEsNyAr
MTYxLDcgQEAgY2xhc3MgQ291bnRlckNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnRE
YXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIo
RG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KHN0ZDo6
bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+
KGNvdW50ZXIoKSkpOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVu
dD4gbV9jb3VudGVyOwpAQCAtMTkwLDcgKzE5MCw3IEBAIGNsYXNzIFF1b3RlQ29udGVudERhdGEg
ZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxS
ZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBj
bG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90
ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0
YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGVD
b250ZW50RGF0YT4ocXVvdGUoKSk7IH0KIAogICAgIFF1b3RlVHlwZSBtX3F1b3RlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggZjNkOTFk
YzhkYmM4ZDllNDZjNjAxYjk1ODQzYjlhOTUyZjNiMmQxZC4uMzAwMTRkMDRmNzBmYjkxODE3NDI4
NzYwM2ZkZWFiNzIzOTU2MTRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgRmlsbExheWVyOjpGaWxsTGF5ZXIoRmls
bExheWVyVHlwZSB0eXBlKQogfQogCiBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25zdCBGaWxsTGF5
ZXImIG8pCi0gICAgOiBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXll
cj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgOiBtX25leHQoby5tX25leHQgPyBtYWtlVW5p
cXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCiAgICAgLCBtX2ltYWdlKG8ubV9p
bWFnZSkKICAgICAsIG1feFBvc2l0aW9uKG8ubV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlv
bihvLm1feVBvc2l0aW9uKQpAQCAtMTE3LDcgKzExNyw3IEBAIEZpbGxMYXllcjo6fkZpbGxMYXll
cigpCiAKIEZpbGxMYXllciYgRmlsbExheWVyOjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBv
KQogewotICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+
KCpvLm1fbmV4dCkgOiBudWxscHRyOworICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gbWFrZVVuaXF1
ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOwogCiAgICAgbV9pbWFnZSA9IG8ubV9p
bWFnZTsKICAgICBtX3hQb3NpdGlvbiA9IG8ubV94UG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAyNDliYTQ3ZTU4NDNlY2M2
MmU2ZmQ0ZjI2YWYxY2Y1MzhhMTYzZjljLi5mYjQzYzIwZTVjZTk5ZWNlMTlmNDUyZmQ5Zjg3OTY0
ZDgxNGJiN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xv
bmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CiB9CiAKIFJl
bmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNv
bnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKQEAgLTQw
OSw3ICs0MDksNyBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0
eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldQogICAgIFJlbmRlclN0eWxlKiBy
ZXN1bHQgPSBwc2V1ZG8uZ2V0KCk7CiAKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzKQot
ICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHNldWRvU3R5
bGVDYWNoZT4oKTsKKyAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMgPSBtYWtlVW5pcXVlPFBz
ZXVkb1N0eWxlQ2FjaGU+KCk7CiAKICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+YXBwZW5kKFdU
Rk1vdmUocHNldWRvKSk7CiAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6
OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
YXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFk
YXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpCi0gICAgICAgIGRhdGEuY3VzdG9tUGFp
bnRXYXRjaGVkUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+Pigp
OworICAgICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPSBtYWtlVW5pcXVl
PEhhc2hTZXQ8U3RyaW5nPj4oKTsKICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRp
ZXMtPmFkZChuYW1lKTsKIH0KIApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Q29udGVudChSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENvbnRlbnQoc3RkOjptYWtl
X3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsK
KyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFz
ZU5vbk51bGwoKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQpAQCAtMTMxMCwxMyArMTMxMCwxMyBAQCB2b2lk
IFJlbmRlclN0eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkK
ICAgICBpZiAoYWRkICYmIGRhdGEuY29udGVudCkgewogICAgICAgICBhdXRvJiBsYXN0ID0gbGFz
dENvbnRlbnQoKmRhdGEuY29udGVudCk7CiAgICAgICAgIGlmICghaXM8VGV4dENvbnRlbnREYXRh
PihsYXN0KSkKLSAgICAgICAgICAgIGxhc3Quc2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b250ZW50RGF0YT4oc3RyaW5nKSk7CisgICAgICAgICAgICBsYXN0LnNldE5leHQobWFrZVVuaXF1
ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IGF1dG8mIHRleHRDb250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPihsYXN0KTsKICAg
ICAgICAgICAgIHRleHRDb250ZW50LnNldFRleHQodGV4dENvbnRlbnQudGV4dCgpICsgc3RyaW5n
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGEuY29udGVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOworICAgICAgICBkYXRhLmNvbnRl
bnQgPSBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKTsKICAgICAgICAgYXV0byYg
YWx0VGV4dCA9IGRhdGEuYWx0VGV4dDsKICAgICAgICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQog
ICAgICAgICAgICAgZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFsdFRleHQpOwpAQCAtMTMyNywx
MiArMTMyNywxMiBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0
cjxDb3VudGVyQ29udGVudD4gY291bnRlciwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFjb3VudGVy
KQogICAgICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50
ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CisgICAgc2V0Q29udGVudCht
YWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CiB9
CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFk
ZCkKIHsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4o
cXVvdGUpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRh
PihxdW90ZSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnRBbHRUZXh0
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgQ291bnRlckRpcmVj
dGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCkKIHsKICAgICBh
dXRvJiBtYXAgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvdW50ZXJEaXJlY3Rp
dmVzOwogICAgIGlmICghbWFwKQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50
ZXJEaXJlY3RpdmVNYXA+KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q291bnRlckRpcmVj
dGl2ZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAtMTY3MSwxNCArMTY3MSwxNCBA
QCB2b2lkIFJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygpCiBBbmltYXRpb25MaXN0JiBS
ZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlz
dD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25z
ID0gbWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJldHVybiAqbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+YW5pbWF0aW9uczsKIH0KIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6
OmVuc3VyZVRyYW5zaXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCkudHJhbnNpdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCkudHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7Cisg
ICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBtYWtl
VW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT50cmFuc2l0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAppbmRleCAyMGIyYTgxMTRiMGM4ZTllYmQ0
ODI3MDc5YTk4MjBmMmVjMGRjZGMyLi42ZTM3Y2Y4ZmI4YWJhNTVlYzMzMGE5NjAzM2E4YTk1NGM3
Y2IwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGVEZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZH
UmVuZGVyU3R5bGVEZWZzLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIFN0eWxlU2hhZG93U1ZHRGF0
YTo6U3R5bGVTaGFkb3dTVkdEYXRhKCkKIAogaW5saW5lIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5
bGVTaGFkb3dTVkdEYXRhKGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYgb3RoZXIpCiAgICAgOiBS
ZWZDb3VudGVkPFN0eWxlU2hhZG93U1ZHRGF0YT4oKQotICAgICwgc2hhZG93KG90aGVyLnNoYWRv
dyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRy
KQorICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm90
aGVyLnNoYWRvdykgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggM2Q2MWM5NGMwMTY2MTYwODU4ZGFiZDg0MDlm
YzQwODY3MGU1MDFjYS4uYzE3ZWFmODU5YjBiZmFhN2RhYmMwMDhkNGU3NDBmYzYzMGE0YjgzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAt
MzMsNyArMzMsNyBAQCBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8p
CiAgICAgLCBtX2NvbG9yKG8ubV9jb2xvcikKICAgICAsIG1fc3R5bGUoby5tX3N0eWxlKQogICAg
ICwgbV9pc1dlYmtpdEJveFNoYWRvdyhvLm1faXNXZWJraXRCb3hTaGFkb3cpCi0gICAgLCBtX25l
eHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBu
dWxscHRyKQorICAgICwgbV9uZXh0KG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigq
by5tX25leHQpIDogbnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGFkMmNi
ZDk1N2VlZjgyNTYwY2ZiMzUyZTlmNTBiMzllNjMzYTI2ZmYuLjk2ZGJiYTAwN2U2YTY0YTdkNjk3
YTI5YTIxZDYyMWFkNDQ3NTRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTE3Miw3ICsxNzIs
NyBAQCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0
YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwgdmlzaXRlZExpbmtUZXh0RW1waGFz
aXNDb2xvcihvLnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IpCiAgICAgLCBjYXJldENvbG9y
KG8uY2FyZXRDb2xvcikKICAgICAsIHZpc2l0ZWRMaW5rQ2FyZXRDb2xvcihvLnZpc2l0ZWRMaW5r
Q2FyZXRDb2xvcikKLSAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gc3RkOjptYWtlX3Vu
aXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCB0ZXh0U2hh
ZG93KG8udGV4dFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8udGV4dFNoYWRvdykg
OiBudWxscHRyKQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQo
by5pbmRlbnQpCiAgICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcAppbmRleCA2ZmJiMmI3YjBjM2ViMDNlODY5YTFlYWFjOTE2MTExOWM5YzYx
ZTliLi5iZGQwMTkxNWFhMjc4ZGQ2YTY2NDhmZjRjM2ZiZGIzZmNjZDE0MmEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuY3BwCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVO
b25JbgogICAgICwgc2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgogICAg
ICwgY29udGVudChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAg
ICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IHN0ZDo6bWFrZV91bmlx
dWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikK
KyAgICAsIGNvdW50ZXJEaXJlY3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBtYWtlVW5pcXVl
PENvdW50ZXJEaXJlY3RpdmVNYXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCiAg
ICAgLCBhbHRUZXh0KG8uYWx0VGV4dCkKLSAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0
ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCisgICAg
LCBib3hTaGFkb3coby5ib3hTaGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLmJveFNo
YWRvdykgOiBudWxscHRyKQogICAgICwgd2lsbENoYW5nZShvLndpbGxDaGFuZ2UpCiAgICAgLCBi
b3hSZWZsZWN0KG8uYm94UmVmbGVjdCkKLSAgICAsIGFuaW1hdGlvbnMoby5hbmltYXRpb25zID8g
c3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5hbmltYXRpb25zKSA6IG51bGxwdHIp
Ci0gICAgLCB0cmFuc2l0aW9ucyhvLnRyYW5zaXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmlt
YXRpb25MaXN0Pigqby50cmFuc2l0aW9ucykgOiBudWxscHRyKQorICAgICwgYW5pbWF0aW9ucyhv
LmFuaW1hdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDog
bnVsbHB0cikKKyAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBtYWtlVW5pcXVlPEFu
aW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCiAgICAgLCBtYXNrKG8ubWFz
aykKICAgICAsIG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJbWFnZSkKICAgICAsIHBhZ2VTaXplKG8u
cGFnZVNpemUpCkBAIC0xNzAsNyArMTcwLDcgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAg
ICAsIGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKICAgICAsIGp1c3RpZnlTZWxmKG8uanVz
dGlmeVNlbGYpCiAgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykKLSAg
ICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9w
ZXJ0aWVzID8gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50
V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKKyAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFBy
b3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gbWFrZVVuaXF1ZTxIYXNo
U2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikK
ICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAgLCB0b3VjaEFjdGlvbnMoby50b3VjaEFj
dGlvbnMpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5jcHAKaW5kZXggMmM2ZjMxNzhlZWIyNmM3YjJjMGQ5NWFlMTA4YjdlZmNjNmUyMmM0
ZS4uMjRjZGU0YmQ2MWU3MTRjMjMyM2I5ZTVjZDJjZjI2OWUyODQ1ZjlhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxl
bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1
ZSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKLSAgICAsIG1faW1hZ2VSZXNv
dXJjZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2lt
YWdlUmVzb3VyY2UobWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogICAgIGlt
YWdlUmVzb3VyY2UoKS5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAzYzMxMDU2ZDFjYWIxZmVh
MTA0OTA3ODBkMDBjOGRjZDJjNzk4MDY4Li5iYTFjZDA1MmRhZGFhMWNlMTg0MWM3YzIzY2FmMzNm
YWE0ZTM0N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZH
SW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsCiAK
IHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlu
bGluZUZsb3dCb3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxp
bmVGbG93Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZUZs
b3dCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAg
ICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IDY3ZTZmOTg5N2QyNzc0NGZkNDEzM2ZmMjc2
NzE0YzRlOWRhNjY1YjAuLmRiZjQ5MDNmODlmNGRjOTJlZGZmMzA1MzkyNTg2OWYzMmUyZDk5YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmVUZXh0LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAK
IHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVh
dGVUZXh0Qm94KCkKIHsKLSAgICBhdXRvIGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW5saW5l
VGV4dEJveD4oKnRoaXMpOworICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0
Qm94PigqdGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAg
IHJldHVybiBib3g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDFiM2VmMjRjYzkyZDIwNTJhMzRh
YWQyMDg4MjMzMGUxYTEyM2I4NGYuLjFhZDI2NDk2NDY3MDljMjNmMGRiOWNmYWU0Yjg2M2MyNDdi
MzY5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRp
dmVzKFNWR0ZpCiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gZmlsdGVyLnRhcmdl
dEJvdW5kaW5nQm94KCk7CiAKICAgICAvLyBBZGQgZWZmZWN0cyB0byB0aGUgYnVpbGRlcgotICAg
IGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNl
R3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8
U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOwogICAgIGJ1
aWxkZXItPnNldFByaW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygp
KTsKICAgICBidWlsZGVyLT5zZXRUYXJnZXRCb3VuZGluZ0JveCh0YXJnZXRCb3VuZGluZ0JveCk7
CiAgICAgCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6
YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAg
ICAgcmV0dXJuIGZhbHNlOyAvLyBBbHJlYWR5IGJ1aWx0LCBvciB3ZSdyZSBpbiBhIGN5Y2xlLCBv
ciB3ZSdyZSBtYXJrZWQgZm9yIHJlbW92YWwuIFJlZ2FyZGxlc3MsIGp1c3QgZG8gbm90aGluZyBt
b3JlIG5vdy4KICAgICB9CiAKLSAgICBhdXRvIGZpbHRlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbHRlckRhdGE+KCk7CisgICAgYXV0byBmaWx0ZXJEYXRhID0gbWFrZVVuaXF1ZTxGaWx0ZXJE
YXRhPigpOwogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9IHJlbmRlcmVyLm9iamVj
dEJvdW5kaW5nQm94KCk7CiAKICAgICBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzID0gU1ZHTGVuZ3Ro
Q29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJFbGVtZW50PigmZmlsdGVyRWxlbWVu
dCgpLCBmaWx0ZXJFbGVtZW50KCkuZmlsdGVyVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5jcHAKaW5kZXggZDhhZDA4MDQ2NmM1YzZkOWVlY2YwNzhjZGZmNjQyNmM2
MTRhMGNlMi4uNTUyY2U1YTMzYTgwNjJlNmJlZTBiMDRhZTNmMTYwZjA5OWViNTJmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBS
ZW4KIAogICAgIGF1dG8mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKCZyZW5kZXJl
ciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZ3JhZGllbnREYXRhKQotICAg
ICAgICBncmFkaWVudERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKKyAg
ICAgICAgZ3JhZGllbnREYXRhID0gbWFrZVVuaXF1ZTxHcmFkaWVudERhdGE+KCk7CiAKICAgICBi
b29sIGlzUGFpbnRpbmdUZXh0ID0gcmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291
cmNlTW9kZTo6QXBwbHlUb1RleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IGFhNTc2NWVkMzc5
YjZhYjFiOTQ0NzI2ZjViNWVlNDU0MzgzYzQ2NGUuLjRjODE5YjliYzU1ZGMyYmZhODJmYmJjMDk3
ZjYzNzU4NWI1YjEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBib29sIG1pc3NpbmdNYXNrZXJEYXRhID0gIW1fbWFz
a2VyLmNvbnRhaW5zKCZyZW5kZXJlcik7CiAgICAgaWYgKG1pc3NpbmdNYXNrZXJEYXRhKQotICAg
ICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBzdGQ6Om1ha2VfdW5pcXVlPE1hc2tlckRhdGE+
KCkpOworICAgICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPE1hc2tlckRh
dGE+KCkpOwogCiAgICAgTWFza2VyRGF0YSogbWFza2VyRGF0YSA9IG1fbWFza2VyLmdldCgmcmVu
ZGVyZXIpOwogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRl
U3lzdGVtKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCAyOWU4ZTdjMjQ3NTY1ODc5MmVlNGVk
NGVkMDgyMGZhZWVjOWJkYzBjLi5kZjAxN2JhMWJmYzBjY2Y3YWVhOTNhM2JiMmY3ZmM3ODhmNjk2
Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogc3RydWN0IE1hc2tlckRhdGEgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IG1hc2tJbWFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBjYzJjYmZjZjBmZTlh
NTllY2UxNWY1MmYzNTcyZGI1OWQxNjMyMGQ2Li4zMWJjNWYxOTMxYmRhZTUwYWFjNjYxMzU5ZmMw
YTI2ZjE3ODU4NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgUGF0
dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBPcHQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBC
dWlsZCBwYXR0ZXJuLgotICAgIGF1dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
dHRlcm5EYXRhPigpOworICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5E
YXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGll
ZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgLy8gQ29tcHV0ZSBw
YXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCAzNGIwYWU3NWJkYzAwNTY1NzZkNTEzODAx
ODVlZmU2YmM3MmM3MDZlLi42YTY3MTE4ZmYxYjI1OGIzMDNjOTU2Mzg1OTNmNDc0ZWU4OWJiZTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cApAQCAtNzksNyArNzksNyBAQCBSZW5kZXJTVkdTaGFwZTo6flJlbmRlclNWR1NoYXBlKCkgPSBk
ZWZhdWx0OwogCiB2b2lkIFJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkK
IHsKLSAgICBtX3BhdGggPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KHBhdGhGcm9tR3JhcGhpY3NF
bGVtZW50KCZncmFwaGljc0VsZW1lbnQoKSkpOworICAgIG1fcGF0aCA9IG1ha2VVbmlxdWU8UGF0
aD4ocGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CiAgICAgcHJv
Y2Vzc01hcmtlclBvc2l0aW9ucygpOwogCiAgICAgbV9maWxsQm91bmRpbmdCb3ggPSBjYWxjdWxh
dGVPYmplY3RCb3VuZGluZ0JveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXMuY3BwCmluZGV4IGJmNzg2NDQzZGRkNjBkNjIxYmNkNTc5Yjg3NzBlZGNkOTFk
MjlmYTkuLjljNzM3Y2FmZjhiOTI3NmNjNDEwNjAyZjU3OWE5ZjM2NGU1YTA4YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTUwOCw3ICs1
MDgsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcihSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIqIGNsaXBwZXIpCiAgICAgQVNTRVJUKGNsaXBwZXItPnJlc291cmNlVHlwZSgpID09IENs
aXBwZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRh
KQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxD
bGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyID0gY2xpcHBlcjsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTUyOSw3ICs1MjksNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0RmlsdGVyKFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCiAgICAgQVNTRVJUKGZpbHRlci0+cmVzb3VyY2VU
eXBlKCkgPT0gRmlsdGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZp
bHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwog
CiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyID0gZmlsdGVyOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJTdGFydChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQpCiAgICAgQVNTRVJU
KG1hcmtlclN0YXJ0LT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAg
ICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxN
YXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1hcmtlclN0
YXJ0OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgU1ZHUmVzb3Vy
Y2VzOjpzZXRNYXJrZXJNaWQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlck1pZCkKICAg
ICBBU1NFUlQobWFya2VyTWlkLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUp
OwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVu
aXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSBtYXJr
ZXJNaWQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01OTIsNyArNTkyLDcgQEAgYm9vbCBTVkdSZXNv
dXJjZXM6OnNldE1hcmtlckVuZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyRW5kKQog
ICAgIEFTU0VSVChtYXJrZXJFbmQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlw
ZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtl
VW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlckVuZCA9IG1h
cmtlckVuZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFNWR1Jl
c291cmNlczo6c2V0TWFza2VyKFJlbmRlclNWR1Jlc291cmNlTWFza2VyKiBtYXNrZXIpCiAgICAg
QVNTRVJUKG1hc2tlci0+cmVzb3VyY2VUeXBlKCkgPT0gTWFza2VyUmVzb3VyY2VUeXBlKTsKIAog
ICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmls
dGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+
KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+
bWFza2VyID0gbWFza2VyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjM2LDcgKzYzNiw3IEBAIGJv
b2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWxsKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxs
KQogICAgICAgICAgICB8fCBmaWxsLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJl
c291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmls
bFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAg
ICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAg
IG1fZmlsbFN0cm9rZURhdGEtPmZpbGwgPSBmaWxsOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjU5
LDcgKzY1OSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UoUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIqIHN0cm9rZSkKICAgICAgICAgICAgfHwgc3Ryb2tlLT5yZXNvdXJjZVR5cGUo
KSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9r
ZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxT
dHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxs
U3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSA9IHN0cm9rZTsK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXggMTkxOTVhYTFkYWJjNjZlNGIzNTY1OTcyZWM5MWY4
OTQ3N2Y0MDM5Yi4uMWVlYjc4ZjU3YjNlYmIzMWI0Y2RlOGU1MzAyZGRlMDllMDQ4YzBiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2Vz
RnJvbVJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdAogICAgIEFTU0VSVCgh
bV9jYWNoZS5jb250YWlucygmcmVuZGVyZXIpKTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBh
bGwgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFzc2VkIFJlbmRlck9iamVjdAotICAg
IGF1dG8gbmV3UmVzb3VyY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7Cisg
ICAgYXV0byBuZXdSZXNvdXJjZXMgPSBtYWtlVW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKICAgICBp
ZiAoIW5ld1Jlc291cmNlcy0+YnVpbGRDYWNoZWRSZXNvdXJjZXMocmVuZGVyZXIsIHN0eWxlKSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggMzI0MTAyNTg0YzFmMTEzZDBlZWQz
MzIxNGE2N2Y1NTM0YWIwZjU5YS4uODEwYTBiODgwYThhYTRkYWUwMmZhYjQ0NmE5NDFlZGQ5YzVh
NzFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0
cmljc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dE1ldHJpY3NCdWlsZGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJp
Y3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNW
R0lubGluCiAgICAgaWYgKG1faXNDb21wbGV4VGV4dCkKICAgICAgICAgbV9zaW1wbGVXaWR0aEl0
ZXJhdG9yID0gbnVsbHB0cjsKICAgICBlbHNlCi0gICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2lkdGhJdGVyYXRvcj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsK
KyAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXaWR0aEl0ZXJhdG9y
Pigmc2NhbGVkRm9udCwgbV9ydW4pOwogfQogCiBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXIuY3BwCmluZGV4IGQzN2JlZThjYmNlNTU2MTUxMWIyNGUzNjRlMWFmNjRhYWQ3YWE3NWQu
LmU2YjI3MzIwZDkyZmU4NTZkODM3NDEwOGVkOTU0MmUwOTFlZWFmNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNw
cApAQCAtMTIyLDIyICsxMjIsMjIgQEAgc3RhdGljIHZvaWQgZ2V0SW5saW5lUnVuKFJlbmRlck9i
amVjdCogc3RhcnQsIFJlbmRlck9iamVjdCogYm91bmRhcnksIFJlbmRlck9iamUKIAogUmVuZGVy
VHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKFJlbmRlclZpZXcmIHZpZXcpCiAgICAgOiBt
X3ZpZXcodmlldykKLSAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8
Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKLSAgICAsIG1fbGlzdEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1
ZTxMaXN0PigqdGhpcykpCi0gICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihzdGQ6Om1ha2VfdW5p
cXVlPE11bHRpQ29sdW1uPigqdGhpcykpCi0gICAgLCBtX3RhYmxlQnVpbGRlcihzdGQ6Om1ha2Vf
dW5pcXVlPFRhYmxlPigqdGhpcykpCi0gICAgLCBtX3J1YnlCdWlsZGVyKHN0ZDo6bWFrZV91bmlx
dWU8UnVieT4oKnRoaXMpKQotICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKHN0ZDo6bWFrZV91
bmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrQnVpbGRlcihzdGQ6Om1h
a2VfdW5pcXVlPEJsb2NrPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKLSAgICAsIG1faW5saW5lQnVpbGRlcihzdGQ6
Om1ha2VfdW5pcXVlPElubGluZT4oKnRoaXMpKQotICAgICwgbV9zdmdCdWlsZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHPigqdGhpcykpCisgICAgLCBtX2ZpcnN0TGV0dGVyQnVpbGRlcihtYWtlVW5p
cXVlPEZpcnN0TGV0dGVyPigqdGhpcykpCisgICAgLCBtX2xpc3RCdWlsZGVyKG1ha2VVbmlxdWU8
TGlzdD4oKnRoaXMpKQorICAgICwgbV9tdWx0aUNvbHVtbkJ1aWxkZXIobWFrZVVuaXF1ZTxNdWx0
aUNvbHVtbj4oKnRoaXMpKQorICAgICwgbV90YWJsZUJ1aWxkZXIobWFrZVVuaXF1ZTxUYWJsZT4o
KnRoaXMpKQorICAgICwgbV9ydWJ5QnVpbGRlcihtYWtlVW5pcXVlPFJ1Ynk+KCp0aGlzKSkKKyAg
ICAsIG1fZm9ybUNvbnRyb2xzQnVpbGRlcihtYWtlVW5pcXVlPEZvcm1Db250cm9scz4oKnRoaXMp
KQorICAgICwgbV9ibG9ja0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9jaz4oKnRoaXMpKQorICAgICwg
bV9ibG9ja0Zsb3dCdWlsZGVyKG1ha2VVbmlxdWU8QmxvY2tGbG93PigqdGhpcykpCisgICAgLCBt
X2lubGluZUJ1aWxkZXIobWFrZVVuaXF1ZTxJbmxpbmU+KCp0aGlzKSkKKyAgICAsIG1fc3ZnQnVp
bGRlcihtYWtlVW5pcXVlPFNWRz4oKnRoaXMpKQogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgLCBt
X21hdGhNTEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxNYXRoTUw+KCp0aGlzKSkKKyAgICAsIG1f
bWF0aE1MQnVpbGRlcihtYWtlVW5pcXVlPE1hdGhNTD4oKnRoaXMpKQogI2VuZGlmCi0gICAgLCBt
X2NvbnRpbnVhdGlvbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRpb24+KCp0aGlz
KSkKKyAgICAsIG1fY29udGludWF0aW9uQnVpbGRlcihtYWtlVW5pcXVlPENvbnRpbnVhdGlvbj4o
KnRoaXMpKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVsbFNjcmVlbkJ1
aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCisgICAgLCBtX2Z1bGxT
Y3JlZW5CdWlsZGVyKG1ha2VVbmlxdWU8RnVsbFNjcmVlbj4oKnRoaXMpKQogI2VuZGlmCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoIXNfY3VycmVudCB8fCAmbV92aWV3ICE9ICZzX2N1cnJlbnQtPm1f
dmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCBmNDJiY2EzYjM0NjllNmQ1NmU2YTRkN2I5NDQ1ZTE2
N2IxMTExYjJiLi4yNjg1NDRhMWU2NWJmYTNkMzhmNDNlYjViYmNlNGVlZWNhYWM0NmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
VXBkYXRlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6
UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyoKIAog
UmVuZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2dlbmVyYXRlZENvbnRlbnQoc3Rk
OjptYWtlX3VuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCisgICAgLCBtX2dlbmVyYXRl
ZENvbnRlbnQobWFrZVVuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCiAgICAgLCBtX2J1
aWxkZXIocmVuZGVyVmlldygpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVw
bGF5L1VzZXJJbnB1dEJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJy
aWRnZS5oCmluZGV4IDdmZTdmNjg3MzIwNDEwZWYwNDgzODdkNDgxZjkyN2IxMmMyMzgzYWMuLmI5
YzcyZWI4ODBlOWJiODc1OThmNDE0NDA3N2QwMjMwMTY2NjViODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBjbGFzcyBJbnB1
dFNvdXJjZSB7CiB9OwogCiBjbGFzcyBVc2VySW5wdXRCcmlkZ2UgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJJbnB1dEJyaWRnZSk7
CiBwdWJsaWM6CiAgICAgVXNlcklucHV0QnJpZGdlKFBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggZGFlMTFjYjJmNjI4OTkxODQ1M2ExMjgwOWFl
NDNiODEyNGI2YjEyYi4uNmQ2OTVhNjYwZDBlNGUwNDVhMjZkYWJlMzMzMWVjYTI2ZmFkMmViZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkRGlydHlBbGxTdHlsZShjb25zdCBWZWN0b3I8U3R5bGVT
aGVldENvbnRlbnRzKj4mIHNoZWV0cykKIH0KIAogSW52YWxpZGF0b3I6OkludmFsaWRhdG9yKGNv
bnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzLCBjb25zdCBNZWRpYVF1ZXJ5
RXZhbHVhdG9yJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKQotICAgIDogbV9vd25lZFJ1bGVTZXQoc3Rk
OjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpKQorICAgIDogbV9vd25lZFJ1bGVTZXQobWFrZVVuaXF1
ZTxSdWxlU2V0PigpKQogICAgICwgbV9ydWxlU2V0KCptX293bmVkUnVsZVNldCkKICAgICAsIG1f
ZGlydGllc0FsbFN0eWxlKHNob3VsZERpcnR5QWxsU3R5bGUoc2hlZXRzKSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAppbmRleCA0ZDgxNDhiNGUzMWQ3NGQ2YTBhNTE3
NTRkZWU1ZWFiODA3NTlhYmFhLi4wNjJkNTk2NGQ3N2VjNWRiODNiM2Y0MWFjYmFhODdlZmNlOThk
ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCkBAIC00MCw3ICs0
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZWxhdGlvbnM+IGNvbW1pdFJlbGF0aW9uc1RvUmVuZGVy
U3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zCiAKICAgICBhdXRvIGFwcGVuZFN0eWxlUmVs
YXRpb24gPSBbJnJlbWFpbmluZ1JlbGF0aW9uc10gKGNvbnN0IFJlbGF0aW9uJiByZWxhdGlvbikg
ewogICAgICAgICBpZiAoIXJlbWFpbmluZ1JlbGF0aW9ucykKLSAgICAgICAgICAgIHJlbWFpbmlu
Z1JlbGF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVsYXRpb25zPigpOworICAgICAgICAgICAg
cmVtYWluaW5nUmVsYXRpb25zID0gbWFrZVVuaXF1ZTxSZWxhdGlvbnM+KCk7CiAgICAgICAgIHJl
bWFpbmluZ1JlbGF0aW9ucy0+YXBwZW5kKHJlbGF0aW9uKTsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuY3BwCmluZGV4IDlmMGQxYWQ3NDkwYmZlYWIyNDA3Y2U3YmM4OGIwOTUx
MTZkMGIyMjIuLmRjYjY1YmMwOWMzNDc3OWI2M2EyOTMyNGUyNGQzNzJiZmM2YTIzZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFN0eWxlUmVzb2x2
ZXImIFNjb3BlOjpyZXNvbHZlcigpCiAgICAgaWYgKCFtX3Jlc29sdmVyKSB7CiAgICAgICAgIFNl
dEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5
bGVSZXNvbHZlciwgdHJ1ZSB9OwogCi0gICAgICAgIG1fcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOworICAgICAgICBtX3Jlc29sdmVyID0gbWFr
ZVVuaXF1ZTxTdHlsZVJlc29sdmVyPihtX2RvY3VtZW50KTsKIAogICAgICAgICBpZiAoIW1fc2hh
ZG93Um9vdCkgewogICAgICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0
YXJ0ZWQoKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxl
U2hlZXQ+PiBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3IoKQogYm9vbCBTY29w
ZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyhjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFz
dExvb2t1cCkgewotICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZh
c3RMb29rdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+
PigpOworICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29r
dXAgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOwogICAgICAg
ICBmb3IgKGF1dG8mIGFjdGl2ZVN0eWxlU2hlZXQgOiBtX2FjdGl2ZVN0eWxlU2hlZXRzKQogICAg
ICAgICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwLT5h
ZGQoYWN0aXZlU3R5bGVTaGVldC5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDg0NmEyMzFhZDJiMThiNWQ3ZjI5NDkwMTZkMDlm
MjIzZGQ2OWU4OGIuLmEwMGY0ZmUwZjRjY2I1MmRkODMxYTk0ZTI2YTU4NjRlNWMxYjc5MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTU0OCw3ICs1
NDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmUoKQog
CiAgICAgbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9IG1fZG9jdW1lbnQuc3R5bGVTY29wZSgp
Lmhhc1BlbmRpbmdTaGVldHNCZWZvcmVCb2R5KCk7CiAKLSAgICBtX3VwZGF0ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VXBkYXRlPihtX2RvY3VtZW50KTsKKyAgICBtX3VwZGF0ZSA9IG1ha2VVbmlxdWU8
VXBkYXRlPihtX2RvY3VtZW50KTsKICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKGFkb3B0UmVmKCpu
ZXcgU2NvcGUobV9kb2N1bWVudCkpKTsKICAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnQo
bV9kb2N1bWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwCmluZGV4IGJjNTE0MzRiMGIyYjhlMGJmNzdlNTdhNGE3NmU0ZDRiY2VlZTk5NjUuLjI1
ZjM4NjNkMDc5NTRhYzhkNmE2M2U2ODY0YTFmMDc2YjBkNTFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVu
c2lvbnMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAg
ICAsIG1fcmVzb3VyY2VzQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4o
KSkKKyAgICAsIG1fcmVzb3VyY2VzQ2FjaGUobWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4o
KSkKICAgICAsIG1fYXJlQW5pbWF0aW9uc1BhdXNlZCghZG9jdW1lbnQucGFnZSgpIHx8ICFkb2N1
bWVudC5wYWdlKCktPmlzVmlzaWJsZSgpKQogewogfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQg
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbVN0cmlu
ZyYgaWQsIEVsZW1lbnQmIGVsCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Jlc291cmNl
cy5hZGQoaWQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0VsZW1lbnRz
PigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQZW5kaW5n
RWxlbWVudHM+KCk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZlbGVtZW50KTsK
IAogICAgIGVsZW1lbnQuc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpOwpAQCAtMjc5LDcgKzI3OSw3
IEBAIEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNldE9mRWxl
bWVudHNSZWZlcmVuY2luZ1RhcmdldChTVkdFCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6
YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQmIHJlZmVyZW5jaW5nRWxlbWVu
dCwgU1ZHRWxlbWVudCYgcmVmZXJlbmNlZEVsZW1lbnQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBt
X2VsZW1lbnREZXBlbmRlbmNpZXMuZW5zdXJlKCZyZWZlcmVuY2VkRWxlbWVudCwgWyZyZWZlcmVu
Y2luZ0VsZW1lbnRdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxT
VkdFbGVtZW50Kj4+KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVmZXJl
bmNpbmdFbGVtZW50IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PFNWR0Vs
ZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2lu
Z0VsZW1lbnQgfSk7CiAgICAgfSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZyZWZlcmVuY2luZ0VsZW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGE4MDk2ZGRhZGE4MWVhZDZhN2ExZWEzMjRjZDg1
MDY3ZjVjMGIyOGIuLmU0ZGUzYjc0OWYwYTAwMzliYzVjNGNmY2QwOGUxOTM5NmNkNjU2MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgTkVW
RVJfSU5MSU5FIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiBjcmVhdGVB
dHRyaWJ1dGVOYW1lVAogU1ZHRWxlbWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBDcmVhdGVTVkdFbGVtZW50KQogICAgICwgU1ZHTGFuZ1NwYWNlKHRoaXMp
Ci0gICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJv
cGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCisgICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5
KG1ha2VVbmlxdWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCiB7CiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBb
XSB7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUo
U3R5bGU6OkNoYW5nZSBjaGFuZ2UpCiBTVkdFbGVtZW50UmFyZURhdGEmIFNWR0VsZW1lbnQ6OmVu
c3VyZVNWR1JhcmVEYXRhKCkKIHsKICAgICBpZiAoIW1fc3ZnUmFyZURhdGEpCi0gICAgICAgIG1f
c3ZnUmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0YT4oKTsKKyAg
ICAgICAgbV9zdmdSYXJlRGF0YSA9IG1ha2VVbmlxdWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOwog
ICAgIHJldHVybiAqbV9zdmdSYXJlRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
cGhpY3NFbGVtZW50LmNwcAppbmRleCBhNzU4OTBmMzE4MDQ2OGQxNTI0YmVlODU0MzU5ZDAzNTZl
YjUyMjJkLi44MGVjN2ZjODYyOTJiNjNiYmJhODUxZTExZTEwNmZhMTUyZjkxNDcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zv
cm0oKSBjb25zdAogQWZmaW5lVHJhbnNmb3JtKiBTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1l
bnRhbFRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKLSAg
ICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFmZmluZVRy
YW5zZm9ybT4oKTsKKyAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PEFmZmluZVRyYW5zZm9ybT4oKTsKICAgICByZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0u
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0
cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKaW5kZXggNmYw
YWNhY2YxOWVlODUwZGI0ZTY5MTBkM2U4M2QyNjQ5NGQ2N2ViMC4uNDM0ZDkxZWIzZGY4YWQ4Nzlm
ODM5YTQ4OTY2ODY3ODBiNDA5ZjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhCeXRlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3Ry
ZWFtLmgKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW0gewogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5KCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CiAg
ICAgfQogCiAgICAgRGF0YUl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmJl
Z2luKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRp
bWVDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNv
bnRhaW5lci5jcHAKaW5kZXggZTA0MjNjZTk4MTVmYTBmMjU1NjNhM2I1NDMxNDA4NmFjMzU2ZmY0
NC4uM2ViNTdhZDJmMjFkZmE2NGI5YjExODAxZjQyNzI4MzYwMmI3NWI3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUoU1ZHU01JTEVsZW1l
bnQqIGFuaW1hdGlvbiwgU1ZHRWxlbWVudCogdGFyZ2V0LAogICAgIEVsZW1lbnRBdHRyaWJ1dGVQ
YWlyIGtleSh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmlt
YXRpb25zVmVjdG9yPiYgc2NoZWR1bGVkID0gbV9zY2hlZHVsZWRBbmltYXRpb25zLmFkZChrZXks
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNjaGVkdWxlZCkKLSAgICAgICAg
c2NoZWR1bGVkID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigpOworICAgICAg
ICBzY2hlZHVsZWQgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbnNWZWN0b3I+KCk7CiAgICAgQVNTRVJU
KCFzY2hlZHVsZWQtPmNvbnRhaW5zKGFuaW1hdGlvbikpOwogICAgIHNjaGVkdWxlZC0+YXBwZW5k
KGFuaW1hdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmlu
ZGV4IDQwZWU5OTE1NTg1ZWNhOWExMDA0NGI5ZTMzMGM4NzUyODBjMjUxZTcuLjNiMjdkMDYwOGJm
OTBmZGFhMGU1YjE1NjAwZWE0YWQ1ZmUxMzRkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNW
R0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIGlmIChhbGxE
YXRhUmVjZWl2ZWQpIHsKICAgICAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25m
aWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwotICAgICAgICBtX2Nocm9tZUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOworICAgICAgICBtX2No
cm9tZUNsaWVudCA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOwogICAg
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQo
KTsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2FkaW5nIGl0c2Vs
Ziwgd2UgbWlnaHQgbGVhayB0aGUgd29ybGQuCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERh
dGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAg
ICAgICAvLyBUaGlzIHdpbGwgYmVjb21lIGFuIGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBh
YmxlIHRvIGxvYWQgb3RoZXIKICAgICAgICAgLy8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3Jl
IHNhZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdlIGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRl
ZCBieSBhIHRvcC1sZXZlbCBkb2N1bWVudC4KLSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgICAgIG1fcGFnZSA9
IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgICAgICBt
X3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdl
LT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNl
dHRpbmdzKCkuc2V0UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IGQ5NzAz
MDJhZGY4NjU4NTUwOWM2NTA4ZDUwNDk1MmEyNTUzMjM2MmIuLmM3N2FlMDhiYWM2NWMzYzJjZmM4
OTc0ZmEzM2U3NjQ2MGNlOTdmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xh
c3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmls
dGVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBIYXNoU2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQ
cm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNv
cmF0ZWRQcm9wZXJ0eS5oCmluZGV4IGU1ZWZhYWVhNzExMWJjNmM5NTdkOTcyZDc0NTQ4ZGU5MmQ4
YTEzM2UuLmNlYmFhMzYzYmY1MjdiYmIzOGU1NjdkM2UzZDQyYmY4NDMxMDJhNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERl
Y29yYXRlZFByb3BlcnR5LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWREZWNv
cmF0ZWRQcm9wZXJ0eSA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5IHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdB
bmltYXRlZERlY29yYXRlZFByb3BlcnR5PgogICAgIHN0YXRpYyBSZWY8QW5pbWF0ZWRQcm9wZXJ0
eT4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgc3RkOjpt
YWtlX3VuaXF1ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZSwgUHJvcGVydHlUeXBl
Pj4oKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNv
bnRleHRFbGVtZW50LCBtYWtlVW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBl
LCBQcm9wZXJ0eVR5cGU+PigpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJv
cGVydHlUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0
ZWRQcm9wZXJ0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAyODg3NDFiMTI5
MDVjYjg1MTQzMDU0MDkwYzRlMmM5MTM5YjM1YmYzLi5kMDczN2FjYmEzMzFmZTEyMzQ3YjgzNGZm
N2FhMzAxMDBhZDE1NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC01MCw3
ICs1MCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmlt
YXRlZEFuZ2xlPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmlt
YXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQQogCiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdB
bmltYXRlZEJvb2xlYW4+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5B
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQog
CiBwcml2YXRlOgpAQCAtODksNyArODksNyBAQCBjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9u
QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVi
bGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4mIGFuaW1hdGVkLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
bmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdl
ckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4K
IAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxT
CiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0
aE1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE3Miw3ICsxNzIsNyBAQCBjbGFzcyBTVkdB
bmltYXRlZE51bWJlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjxTVkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRl
ZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBp
c0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE4OSw3ICsxODks
NyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNW
R0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
ICAgICAKIHByaXZhdGU6CkBAIC0yMDYsNyArMjA2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjwKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3Q+JiBhbmltYXRlZCwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMjQsNyAr
MjI0LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1YKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0
byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1h
dGVkUG9pbnRMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2Fs
Y01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9
CiAgICAgCiBwcml2YXRlOgpAQCAtMjQzLDcgKzI0Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkT3Jp
ZW50VHlwZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjxTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZCwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjYyLDcgKzI2
Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRp
dmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjgxLDcgKzI4MSw3
IEBAIGNsYXNzIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUmVjdD4mIGFu
aW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTgsNyArMjk4
LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdB
bmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
U3RyaW5nPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0zMzgsNyArMzM4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0
b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG8KIHB1YmxpYzoKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wg
aXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBh
aXJBbmltYXRvckltcGwuaAppbmRleCA0ZWRhMzRjOWIxODg4ZmZkNmQzZDY2MzJjZjBjZjZkMzNh
NmZhOWUxLi4zOTdmZjA5MTU5NDAwZDMzYzA1MmIxMWQ4MjhjYjhlMzdiM2M4MDUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFp
ckFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3Mg
U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHlQYWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmlt
YXRlZDEsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEs
IGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmlt
YXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hCiBwdWJsaWM6
CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZElu
dGVnZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTU2LDcgKzE1Niw3IEBAIGNs
YXNzIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlQYWlyQW5pbWF0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4m
IGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEs
IGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlclBhaXJB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRl
QW5pbWF0b3IuaAppbmRleCA2NGE2NWIxODYyZmZiOTY5NjAzYzcxNTYwN2I1NDRmNTU2ZTAwODNh
Li4wMjJlZGVkYTgyMWI1MzM1NWIzZmRkMzk1OGYyNDM2ODAxOWFhZDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKQEAg
LTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBDYWxjTW9kZSA6IHVpbnQ4X3QgewogfTsKIAogY2xh
c3MgU1ZHQXR0cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCiAgICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51
bWVyYXRpb24uaAppbmRleCAyNjRjMzZiNjkwNzRjY2YzZTJlMjlkMjY3NzIxY2Y1Mzc0NTcwMzEx
Li5hMzVlMjUwYTliMTUxZjllODk3Zjg1ZjYzNjdjMzg3ZGJiM2NhNTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9u
LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24gOiBwdWJs
aWMgU1ZHRGVjb3JhdGVkUHJpbWl0aXZlPERlY29yYXRpb25UeXBlLCBFbnUKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgRW51bVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPERlY29yYXRpb25UeXBlPjo6dmFsdWUsICJEZWNvcmF0
aW9uVHlwZSBmb3JtIGVudW0gc2hvdWxkIGJlIGludGVncmFsLiIpOwotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOwogICAg
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0RlY29yYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IGU0YWIwMzcwYjk0NzllNTU1MGJiYjExMDg3MzQy
MzUzMTE2NjUwNzAuLmFiMTRmM2NiZTVhN2ZjMjBlMTMwZmRhOWJkNDg3OTdkZGRkM2U4NDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3Bl
cnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJv
cGVydHkuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29yYXRpb25UeXBlPgogY2xhc3MgU1ZHRGVjb3JhdGVkUHJvcGVydHkgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNWR0RlY29yYXRlZFBy
b3BlcnR5KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgflNWR0RlY29yYXRlZFByb3BlcnR5KCkg
PSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCmluZGV4IDQxMjE3MjIwYmRmY2ZlZmY2
N2MxNjA5MTNhZDE0ZDZiOTliYTE0MmMuLjY4YjJlMGIxMTM3YWRlOGQzN2Y4MGUwZTI5OGI1ZGUy
NGQwMWE4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xh
c3MgU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvciA6IHB1YmxpYyBTVkdQcm9wZXJ0eUFuaW1h
dG9yPEFuaW1hdGlvbkZ1bmN0aW8KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3Bl
cnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1ByaW1pdGl2
ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9y
eS5oCmluZGV4IGFkNTBkNDIzNjI5Njk0MmQxZGM4NzE4YTJkYThlNmFkZjhkMWJjY2IuLjVlMzAx
OGY1YTQwMmE5YzdmMTI5ZDQxZDQxOWFjNWU5NDlmZWUwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnku
aApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQcm9w
ZXJ0eUFuaW1hdG9yRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkoKSA9IGRlZmF1bHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmlt
YXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVy
dHlBbmltYXRvckltcGwuaAppbmRleCAxMTg4ODZjNGY4YmI3MjM2YTQ0NmZmYWQwMzg2OWZmMGIw
ZGNkZTk1Li5mZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEyODc5YTdlZGJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0
b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9w
ZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNW
R0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2Rl
T3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAg
IHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5p
bWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9ySW1wbC5oCmluZGV4IDVlZThhYzNkMGY0ZTEyYzYyYTVlZmMwMGZmNTNi
NTkwZTQwMGYzNjguLmFlOTRlMjllZDRiODYxM2I5OWNkOTc0ODZlZDBiMDYyODI2YzAyZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlM
aXN0QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
VmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBT
VkdMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3RB
bmltYXRvcjxTVkdMZW5ndAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHks
IEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNB
Y2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3Zl
KHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xl
bmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2Rl
T3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
CmluZGV4IGMxMTMxZDI1YjM4OGJiYTgzNjY1M2QyOTcwOGU2YTViYmU0YmRmYzQuLjI0Mzc4OWJi
OWQyNzlhNmU4NTNlMDg2NDRiNjRiZWU4NTFlNWVlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMjMxLDYgKzIzMSw3IEBAIHZvaWQgSW50ZXJu
YWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogfQogCiBj
bGFzcyBJbnRlcm5hbFNldHRpbmdzV3JhcHBlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnRl
cm5hbFNldHRpbmdzV3JhcHBlcihQYWdlKiBwYWdlKQogICAgICAgICA6IG1faW50ZXJuYWxTZXR0
aW5ncyhJbnRlcm5hbFNldHRpbmdzOjpjcmVhdGUocGFnZSkpIHsgfQpAQCAtMjUyLDcgKzI1Myw3
IEBAIGNvbnN0IGNoYXIqIEludGVybmFsU2V0dGluZ3M6OnN1cHBsZW1lbnROYW1lKCkKIEludGVy
bmFsU2V0dGluZ3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFnZSogcGFnZSkKIHsKICAgICBp
ZiAoIVN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpCi0gICAg
ICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBz
dGQ6Om1ha2VfdW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CisgICAgICAg
IFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBtYWtl
VW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEludGVybmFsU2V0dGluZ3NXcmFwcGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShw
YWdlLCBzdXBwbGVtZW50TmFtZSgpKSktPmludGVybmFsU2V0dGluZ3MoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUxNzhiNDk2ODU4NzU1MWJmMDcwNGQ4MzAy
MDU2MmRkMTJkZjRlYmIuLjYyZTczNDlhMWNhMTY2MmQwNjJjNjA3OTM4OTJmYzcwZmY2MDU4MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCBj
bGFzcyBJbnNwZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbCwgcHVibGljCiB9OwogCiBJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3Bl
Y3RvclN0dWJGcm9udGVuZChQYWdlJiBpbnNwZWN0ZWRQYWdlLCBSZWZQdHI8RE9NV2luZG93PiYm
IGZyb250ZW5kV2luZG93KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5z
cGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kV2luZG93LT5kb2N1bWVu
dCgpLT5wYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6U2V0dGluZ3M+KCkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNw
ZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50
KCktPnBhZ2UoKSwgbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0
aW5ncz4oKSkKICAgICAsIG1fZnJvbnRlbmRXaW5kb3coZnJvbnRlbmRXaW5kb3cuY29weVJlZigp
KQogewogICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRXaW5kb3csIGZyb250ZW5kV2luZG93KTsKQEAg
LTU2Nyw3ICs1NjcsNyBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQp
CiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBm
cmFtZS0+cGFnZSgpICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGF1dG8gbW9j
a1BheW1lbnRDb29yZGluYXRvciA9IG5ldyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKCpmcmFtZS0+
cGFnZSgpKTsKLSAgICAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKHN0
ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqbW9ja1BheW1lbnRDb29yZGluYXRv
cikpOworICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3IobWFrZVVu
aXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CiAgICAg
fQogI2VuZGlmCiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxl
TW9ja1NwZWVjaFN5bnRoZXNpemVyKCkKICAgICBpZiAoIXN5bnRoZXNpcykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOworICAgIHN5
bnRoZXNpcy0+c2V0UGxhdGZvcm1TeW50aGVzaXplcihtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrPihzeW50aGVzaXMpKTsKIH0KIAogI2VuZGlmCkBAIC0yNDg5LDcgKzI0
ODksNyBAQCBSZWZQdHI8V2luZG93UHJveHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9y
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9IGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0gaW5z
cGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgYXV0
byBmcm9udGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3csIHVy
bCwgIiIsICIiKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5k
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdl
LCBkb3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7Cisg
ICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5k
PigqaW5zcGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5
LT53aW5kb3coKSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQogCkBAIC0z
MDA5LDcgKzMwMDksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldFZpZXdFeHBv
c2VkUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZgogCiB2b2lkIEludGVybmFs
czo6c2V0UHJpbnRpbmcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIHByaW50Q29udGV4
dEZvclRlc3RpbmcoKSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsK
KyAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4o
ZnJhbWUoKSk7CiAgICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpLT5iZWdpbih3aWR0aCwgaGVp
Z2h0KTsKIH0KIApAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZUF1
dG9TaXplTW9kZShib29sIGVuYWJsZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogdm9pZCBJ
bnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKIHsKLSAgICBMZWdhY3lDRE06OnJlZ2lzdGVy
Q0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwKKyAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9y
eShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5TW9ja0NETT4o
Y2RtKTsgfSwKICAgICAgICAgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2Fj
eU1vY2tDRE06OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpOwogfQogCkBAIC00MjQxLDcg
KzQyNDEsNyBAQCB2b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIp
CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBtaWNyb3Rh
c2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rh
c2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICpkb2N1bWVudCwgW2RvY3VtZW50LCB0ZXN0TnVt
YmVyXSgpIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50
LCBbZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgewogICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJp
bmcoIk1pY3JvVGFzayAjIiwgdGVzdE51bWJlciwgIiBoYXMgcnVuLiIpKTsKICAgICB9KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKaW5kZXggNjQyODdkMjM5YWY1
NzNlOTIwM2QyNTg0MzFiMjczYzdiODc0OTAwNi4uNjAyNzJkMzQ5N2Y0Yjg2NWNkYjAzNzBmZTQx
ZDNkNmZiZGU4YjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lN
b2NrQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDRE1T
ZXNzaW9uIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIE1vY2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGll
bnQqKTsKICAgICB2aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lvbigpID0gZGVmYXVsdDsKQEAgLTczLDcg
Kzc0LDcgQEAgYm9vbCBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lN
b2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogc3RhdGlj
IFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lN
b2NrQ0RNLmgKaW5kZXggMjRiOWI4MDA4YzRmNTE5YjRhNjY2ZWM2ZDE1MjVhYzYyZWMxYzMwYS4u
YjkzYWViOTNmZjYzMjllNTE1NDdjMTNmZjc2YTY5MmVlNmE3MTg2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTGVnYWN5Q0RNOwogCiBjbGFzcyBMZWdhY3lNb2NrQ0RNIDogcHVibGljIENE
TVByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IExlZ2FjeU1vY2tDRE0oTGVnYWN5Q0RNKiBjZG0pCiAgICAgICAgIDog
bV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRl
eCA1Njc5NmVlOTAwYmJmM2I2Y2MwNWNmNmEyMjk2ZWZkNDNiOWVmN2I2Li5jZTVkOGY3ZDZiZGYz
OGI1OTIyMDkzMDJhNmU2ZDcxYjM2OTY2MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6
OnNldFN1cHBvcnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJp
bmcmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRy
KCp0aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRo
aXMpKTsKIH0KIAogTW9ja0NETTo6TW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0
b3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDMzOTZjZDAy
YWQwMmRkMTRlOTJmMTU3OWUyNzUxNmU2YmMzZjQyOTguLjM5OTA5YjkzMDNhOTRjOTM2OGVhYTBm
NjI1ZjRiNjdlNTI1MDU5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBNb2NrQ0RNRmFjdG9yeSA6IHB1YmxpYyBSZWZD
b3VudGVkPE1vY2tDRE1GYWN0b3J5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPAogfTsKIAogY2xh
c3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9j
a0NETT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1vY2tD
RE0oV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxMTgxZGFlNzJlMTNlMmJiZDE1M2U4MTFjMTQz
NjRkMWNkOGExODcuLjc3OGE5MThhNmI5MDc1NWNiODZkM2FhYTc0Zjc5YjNlNjE4ZDRjOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8TW9ja0NvbnRlbnRGaWx0ZXI+IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE1vY2tDb250
ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZDNhYzVkODdkMTllMmE4NTM2
MWMxMTU3MmNmMzExZjBjODNiMjQ1Yi4uZDQwZGVkMWRhMTE5OGNhYTM0NTlkNjc3ZTFmZTg0ZjVi
ZmI5NDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgTW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9j
a0dhbWVwYWREZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGdhCiAgICAgaWYg
KG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdKQogICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9y
W2luZGV4XS0+dXBkYXRlRGV0YWlscyhnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQp
OwogICAgIGVsc2UKLSAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBzdGQ6Om1h
a2VfdW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRv
bkNvdW50KTsKKyAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBtYWtlVW5pcXVl
PE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsK
IH0KIAogYm9vbCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0TW9ja0dhbWVwYWQodW5zaWdu
ZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNv
bGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50
LmNwcAppbmRleCBkYmU5MDczZDZhZGViZmM1MDE1OWNjMmVkYmIyMjgzY2NkMTdiYTg1Li44ZjE2
NDdjMWYzMjI1MTgxNmM3Y2YwODk2MTgyYWUzNDIzNWM1MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9p
ZCBXb3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlw
ZSB0eXBlLCBNZXNzYWdlTGV2ZWwKIHsKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYXJn
dW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwotICAgIGF1dG8g
bWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3Zl
KGFyZ3VtZW50cyksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwogICAgIG1fd29ya2Vy
R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCmluZGV4IGY0M2JkMmE3
YTYwNTkzNzI3YWQwYTZhOTFkZWNkNmViZWM3MjI2ODguLjY5MDNiZTVlYzI1ZmI5MWVmZjc3NzZl
NDQ3NmFkNGVhMmJjZTczMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmNwcApAQCAtNDQsNiArNDQsNyBAQCBXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZl
bnRRdWV1ZSgpCiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlcgogewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEV2ZW50RGlzcGF0Y2hl
cihSZWZQdHI8RXZlbnQ+JiYgZXZlbnQsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUpCiAg
ICAgICAgIDogbV9ldmVudChXVEZNb3ZlKGV2ZW50KSkKQEAgLTg0LDcgKzg1LDcgQEAgYm9vbCBX
b3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvKiBldmVudFB0ciA9IGV2ZW50LnB0cigpOwotICAg
IGF1dG8gZXZlbnREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudERpc3BhdGNoZXI+
KFdURk1vdmUoZXZlbnQpLCAqdGhpcyk7CisgICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBtYWtl
VW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsKICAgICBtX2V2
ZW50RGlzcGF0Y2hlck1hcC5hZGQoZXZlbnRQdHIsIGV2ZW50RGlzcGF0Y2hlci5nZXQoKSk7CiAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnBvc3RUYXNrKFtldmVudERpc3BhdGNoZXIgPSBX
VEZNb3ZlKGV2ZW50RGlzcGF0Y2hlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAg
ICAgICBldmVudERpc3BhdGNoZXItPmRpc3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5oCmluZGV4IDYxMTVlZjRhMTM2NTJhNmVhZDEwYWYzN2NmYjQ5NDI4
MjBjM2NiMmIuLmQ4OTczZDViY2FlMTdiOTU1MDA0NGM3ZTgwMTYwNWI5OWQ1NDlhZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCkBAIC0zMyw2ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNs
YXNzIFdvcmtlckV2ZW50UXVldWUgZmluYWwgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV29ya2VyRXZlbnRR
dWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+V29ya2VyRXZlbnRR
dWV1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApp
bmRleCA3YmE2ZWRiNTIwOGYyMmMzZjhmMTZkZTI5ZDgyNWI3NzFmNmMzZTllLi5iMTdkNjYzNjNh
YzM1ODBlN2EzNDQwMDgxYTJmN2M2M2EwNzM4NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjIsOSArNjIsOSBAQCBXb3JrZXJHbG9iYWxT
Y29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiBvcmlnaQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJB
Z2VudCh1c2VyQWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9p
bnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcj4oKnRoaXMpKQotICAgICwgbV9taWNyb3Rhc2tRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPE1p
Y3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVl
PFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwg
bV9taWNyb3Rhc2tRdWV1ZShtYWtlVW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0o
KSkpCiAgICAgLCBtX2lzT25saW5lKGlzT25saW5lKQogICAgICwgbV9zaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5KQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQpAQCAtODYsNyArODYsNyBA
QCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICAgICBvcmlnaW4tPmdyYW50U3RvcmFnZUFj
Y2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShT
ZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSkpOwotICAgIHNldENv
bnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGlj
eT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3ko
bWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7
CiB9CiAKIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQpAQCAtMzYyLDkg
KzM2Miw5IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQot
ICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0
YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdl
VHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgp
LCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBl
OjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtl
VW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6Okxv
ZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4
IGE3NWMwMTU2YzU5ZTM4ZGQ5OTlkNmNlYzFkZGVlZGUyM2JlMTg3YjMuLjRlOWY1MTlhZWZlZGQy
NWY4ODNmNjNhY2EwYTQ3ODlmZjAyN2U0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdvcmtlckdsb2Jh
bFNjb3BlUHJveHkmIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OmNyZWF0ZShXb3JrZXImIHdvcmtl
cikKIAogV29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciYg
d29ya2VyT2JqZWN0KQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtlck9iamVj
dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2luc3BlY3RvclByb3h5KHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVy
KCkpKQorICAgICwgbV9pbnNwZWN0b3JQcm94eShtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvclBy
b3h5Pih3b3JrZXJPYmplY3QuaWRlbnRpZmllcigpKSkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3
b3JrZXJPYmplY3QpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnQKICAgICAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50Owog
ICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykp
OwogICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOwor
ICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sm
JiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggYmNk
OTRlNmFjMDQwM2FjZDZhNTRiYWM0MWZhYjQxZTViZjU1MjdkYS4uYmZhYzk1OTJkZmFhNzkyMTAw
NjViMzQ1OWJkMjIxNjE5NTc4NDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1
bkxvb3AuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIE1vZGVQcmVkaWNhdGUgewogfTsKIAog
V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCgpCi0gICAgOiBtX3NoYXJlZFRpbWVyKHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCisgICAgOiBtX3NoYXJlZFRpbWVyKG1h
a2VVbmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCiB7CiB9CiAKQEAgLTI1MCwxMiArMjUwLDEy
IEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmIHRhc2spCiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVl
dWUuYXBwZW5kQW5kS2lsbChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIGRl
ZmF1bHRNb2RlKCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlx
dWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOwogfQogCiB2b2lkIFdvcmtl
clJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYg
dGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsKKyAgICBtX21lc3Nh
Z2VRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9
CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAppbmRleCAxOTkxMmYwMjc1ZmVhMTk0ODA1NDJhMDcwOTc1ZGNiMGM3ZDI4
MDM1Li4yMjhmM2QxN2ZmMDAyMmU2MmU2MzY0NTMyZDU1NmI5NTA3YTAxOGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1
LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXQKIAogICAgIEFTU0VSVChzY3JpcHRSZXF1ZXN0
Lmh0dHBNZXRob2QoKSA9PSAiR0VUIik7CiAKLSAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CisgICAgYXV0
byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVx
dWVzdCkpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29u
c3QKIAogc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVy
OjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVy
KQogewotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0
PihtX3VybCk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+
KG1fdXJsKTsKICAgICByZXF1ZXN0LT5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgIHJlcXVl
c3QtPnNldEluaXRpYXRvcklkZW50aWZpZXIoaW5pdGlhdG9ySWRlbnRpZmllcik7CiAgICAgcmV0
dXJuIHJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXgg
MWY3NTYxODZhMjBmMDE2OWU0Nzg0Mzk1MWJlZTM2ODdlMDAyNGZiYS4uM2MzODU4YmRhOWI0NGI1
N2ZhZGIzOWVmYTJlMGEwZjNhMzA0MTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFk
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAg
ICAgLCBtX3dvcmtlckRlYnVnZ2VyUHJveHkod29ya2VyRGVidWdnZXJQcm94eSkKICAgICAsIG1f
d29ya2VyUmVwb3J0aW5nUHJveHkod29ya2VyUmVwb3J0aW5nUHJveHkpCiAgICAgLCBtX3J1bnRp
bWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX3N0YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwg
dXNlckFnZW50LCBpc09ubGluZSwgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQorICAgICwgbV9z
dGFydHVwRGF0YShtYWtlVW5pcXVlPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkws
IG5hbWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0
TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIHRvcE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vz
c2lvbklEKSkKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAsIG1faWRiQ29ubmVj
dGlvblByb3h5KGNvbm5lY3Rpb25Qcm94eSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4
IGIyZDI2MTVhMTI2M2QxNjI2NjE4MjAwNDY0OGY5MGVkYTY5MjA2YjUuLjU5YzcxYzRkMTQ3NjI3
Y2ZkOWQzMWE0NWVhYmNjY2RhZTEwM2U3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTg4LDcg
Kzg4LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXJlZkV2ZW50VGFyZ2V0KCkK
IGF1dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkoKSAtPiBSZWFkeVByb21pc2UmCiB7
CiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZSkgewotICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVhZHlQcm9taXNlPigpOworICAgICAgICBtX3JlYWR5UHJvbWlzZSA9
IG1ha2VVbmlxdWU8UmVhZHlQcm9taXNlPigpOwogCiAgICAgICAgIGlmIChtX2lzU3RvcHBlZCB8
fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gKm1fcmVhZHlQcm9taXNlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVs
YXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlJlZ2lzdGVyOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7
CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0
aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVK
b2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUK
IAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRp
b246IFVucmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JE
YXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgc2NoZWR1
bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8
U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0
YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRp
b24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlclR5cGUs
IFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwm
IHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBVcGRhdGluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElE
OiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQo
KSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+
KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1
bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNl
KSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYikKQEAg
LTI2OSw3ICsyNjksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJh
dGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycgogICAgIH0KIAogICAgIHVp
bnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJ
ZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlz
KSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+
KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3Bl
bmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRp
bmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4
dElkZW50aWZpZXIoKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQog
ICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0
UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGlu
Z0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8
UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVy
LCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVy
ID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdhYzljOTgz
ODNiMDRiNmViODljOTlmMjIwODg1ZTc2NzM5NzZjM2YuLjNiZDZiOWIwNmU1NzM3NjY1YjU4Zjk2
OWUyOTNkMGZlZDYyYzNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGNs
YXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSwgcHVibGljIEFjCiAjZW5kaWYKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlz
ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVu
ZGluZ1Byb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8UGVuZGluZ0Fj
dGl2aXR5PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiYmIHBlbmRpbmdBY3Rpdml0eSkKICAgICAg
ICAgICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogICAgICAgICAgICAgLCBwZW5kaW5n
QWN0aXZpdHkoV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApp
bmRleCBlZGJjOGY5MWVlNDM0NjJhNTA0OWU4OGMxY2VmNWVmYTc2MmM5OGZmLi5jYjVjMjIxZmM5
NDg4ZDdjMDA3Mjk4M2ExNTc4OTVkY2E4YzZjZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uCiAKICAgICBzZXJ2aWNl
V29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CiAKLSAgICBtX3BlbmRpbmdT
ZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtl
X3VuaXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywgaWRlbnRpZmll
ciwgdGltZW91dCkpOworICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVl
c3RzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJl
cXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CiAKICAgICBhdXRvJiB0aHJlYWQg
PSBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKTsKICAgICB0aHJlYWQuc3RvcChbdGhpcywgaWRlbnRp
Zmllciwgc2VydmljZVdvcmtlciA9IFdURk1vdmUoc2VydmljZVdvcmtlciksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBjNjE3MzYxM2NhY2I1NWQ2OTA1OGJl
MmM3ZTJhNWZiZDg1MjljNzc2Li45ZTcyOGMzYTdhZmE0NmM5NDljZGNiZTBkNmZlYjA0YTk1MzFj
Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTExNCw3ICsx
MTQsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94aWVzKCkuYWRkKHRoaXMpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgbV9yZW1vdGVEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRGVi
dWdnYWJsZT4oKnRoaXMsIGRhdGEpOworICAgIG1fcmVtb3RlRGVidWdnYWJsZSA9IG1ha2VVbmlx
dWU8U2VydmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBkYXRhKTsKICAgICBtX3JlbW90ZURl
YnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1ZSk7CiAgICAgbV9yZW1vdGVE
ZWJ1Z2dhYmxlLT5pbml0KCk7CiAjZW5kaWYKQEAgLTE2OCw3ICsxNjgsNyBAQCBSZWY8Q2FjaGVT
dG9yYWdlQ29ubmVjdGlvbj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0
b3JhZ2VDb25uZWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6Y3JlYXRlQmxvYkxvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xpZW50
LCBjb25zdCBVUkwmIGJsb2JVUkwpCiB7Ci0gICAgYXV0byBsb2FkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOworICAgIGF1dG8gbG9hZGVyID0gbWFr
ZVVuaXF1ZTxGZXRjaExvYWRlcj4oY2xpZW50LCBudWxscHRyKTsKICAgICBsb2FkZXItPnN0YXJ0
TG9hZGluZ0Jsb2JVUkwobV9kb2N1bWVudCwgYmxvYlVSTCk7CiAgICAgaWYgKCFsb2FkZXItPmlz
U3RhcnRlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAKaW5kZXggMWM3ODMxMmM4NTQ4MmY5ODY5YTVmYzBjNmQyY2M2YzZmZGZjMTBhMC4uZTRi
ODQzMTY4NGY3ZDg3ZDJiZmRlNmRkNDI3ZjMzOTAzMDM0YmFkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjpvcGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUpCiAKICAgICBT
UUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhtX2RhdGFiYXNl
RGlyZWN0b3J5KTsKIAotICAgIG1fZGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURh
dGFiYXNlPigpOworICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigp
OwogICAgIGlmICghbV9kYXRhYmFzZS0+b3BlbihmdWxsRmlsZW5hbWUpKSB7CiAgICAgICAgIGVy
cm9yTWVzc2FnZSA9ICJGYWlsZWQgdG8gb3BlbiByZWdpc3RyYXRpb24gZGF0YWJhc2UiOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGZlNWNjODU5ZTY1YTZlMzJhNzhiNTI4OTc1YTEzMmU3NGJm
MTc4N2UuLjkzMjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0ZDBlOTY5YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBA
IC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3Jl
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgLy8gUGFnZXMgc2hvdWxkIG5v
dCBoYXZlIGJlZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3
aGlsZSB0aGUgaW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCiAgICAgQVNTRVJUKCFtX3Jl
Z2lzdHJhdGlvbnMuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAKLSAgICBhdXRv
IHJlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0
aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNh
Y2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOworICAgIGF1
dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMs
IGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUs
IGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CiAgICAgcmVnaXN0
cmF0aW9uLT5zZXRMYXN0VXBkYXRlVGltZShkYXRhLnJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGlt
ZSk7CiAgICAgYXV0byByZWdpc3RyYXRpb25QdHIgPSByZWdpc3RyYXRpb24uZ2V0KCk7CiAgICAg
YWRkUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CkBAIC0zMDQsNyArMzA0LDcg
QEAgU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0
b3JlLCBTdHJpbmcmJiByZWdpc3RyYXRpb24KIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRh
dGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsK
ICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIG1fcmVnaXN0cmF0
aW9uU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RG
TW92ZShyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOworICAgICAgICBtX3JlZ2lzdHJh
dGlvblN0b3JlID0gbWFrZVVuaXF1ZTxSZWdpc3RyYXRpb25TdG9yZT4oKnRoaXMsIFdURk1vdmUo
cmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsKICAgICBlbHNlCiAgICAgICAgIHJlZ2lz
dHJhdGlvblN0b3JlSW1wb3J0Q29tcGxldGUoKTsKIApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQg
U1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKICAg
ICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4KIAogICAgIGF1dG8m
IGpvYlF1ZXVlID0gKm1fam9iUXVldWVzLmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgp
LCBbdGhpcywgJmpvYkRhdGFdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1dT
ZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdp
c3RyYXRpb25LZXkoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgam9iUXVldWUu
ZW5xdWV1ZUpvYihqb2JEYXRhKTsKQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIFNXU2VydmVyOjp1
bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9y
aWdpbiwgUwogCiAgICAgaWYgKGNsaWVudElkZW50aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAg
ICBBU1NFUlQoIWl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyKTsK
LSAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihbY2xpZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURv
bWFpbiwgdGhpc10geworICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdv
cmtlcnNUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lz
dHJhYmxlRG9tYWluLCB0aGlzXSB7CiAgICAgICAgICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIq
PiB3b3JrZXJzVG9UZXJtaW5hdGU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1f
cnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmln
aW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA4YjY4YjcwZjAxZDI1Mjc4YWY1MzhhYmNlOTE0
YjhjN2M2OGFiODM3Li5kY2FmNWE4YTcxMGY3OTQ0NjQ3ZGUzY2Q1ZTk4MDYzOTlhOGZkNTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
Sm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIFNXU2VydmVySm9i
UXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAg
ICAgICAgICAgICByZWdpc3RyYXRpb24tPnNldFVwZGF0ZVZpYUNhY2hlKGpvYi5yZWdpc3RyYXRp
b25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlKTsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IEZvdW5kIHJlZ2lz
dHJhdGlvbiAlbGx1IGZvciBqb2IgJXMgYnV0IGl0IG5lZWRzIHVwZGF0aW5nIiwgdGhpcywgcmVn
aXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgam9iLmlkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBu
ZXdSZWdpc3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPiht
X3NlcnZlciwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0
ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOworICAgICAgICBhdXRvIG5l
d1JlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVy
LCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2Fj
aGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CiAgICAgICAgIG1fc2VydmVyLmFkZFJl
Z2lzdHJhdGlvbihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlvbikpOwogCiAgICAgICAgIFJFTEVBU0Vf
TE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9i
OiBObyBleGlzdGluZyByZWdpc3RyYXRpb24gZm9yIGpvYiAlcywgY29uc3RydWN0aW5nIGEgbmV3
IG9uZS4iLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcAppbmRleCAyYjdhMmZlM2ZiYjU4ZDRjNGVlMzhmYzA0YjUzNmEzZTRlMGM3N2U3
Li4zYmU3NTdlMDJhZTE5ZDc1OTBlYzA3YjNmYTRjYmU3ZDYzY2U4MWY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0x
MzUsNyArMTM1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6
OnJlZ2lzdGVyUGFpbnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogICAgICAgICBSZWZQdHI8SlND
U1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NT
U1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRp
b25FcnJvciB9KTsKIAotICAgICAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWlu
dC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5w
dXRBcmd1bWVudHMpKTsKKyAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBtYWtlVW5pcXVl
PFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJn
dW1lbnRzKSk7CiAgICAgICAgIHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3Zl
KHBhaW50RGVmaW5pdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggOTZjZjE4NTBiMGNhZTNhYWU5NjA3
ZGIxMzQxNjczNThiNjcxYzFkOS4uNjRmYzc4ZWVlNzg4MGVkOWJlZGNmYzJhNzAxMmNhNmVjM2Nl
MWMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
IDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CiAKICAgICAvLyBBbGwgcGFpbnQgZGVmaW5p
dGlvbnMgbXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQsIGJlY2F1
c2Ugb3RoZXJ3aXNlIHRoZXkgd2lsbCBwb2ludCB0byBmcmVlZCBtZW1vcnkuCiAgICAgc3RydWN0
IFBhaW50RGVmaW5pdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWludERlZmluaXRpb24+
IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQYWlu
dERlZmluaXRpb24oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRD
b25zdHJ1Y3RvciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgaW5w
dXRQcm9wZXJ0aWVzLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0QXJndW1lbnRzKTsKIAogICAgICAg
ICBjb25zdCBBdG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0Q29uc29sZUNsaWVudC5jcHAKaW5kZXggOGU4YTJhNGNhMjNlMmI5M2RhMTM0YWZiNTJk
MGU5NTc2YzQwMjE1OS4uM2YwOTI1NjNiZDUyYWM0YTRiYmVkYTQxNWMyMzdhMmQxZGZkYWRiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNw
cApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0
aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZQogewogICAgIFN0cmlu
ZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyht
ZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNz
YWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRz
KSwgZXhlYyk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RG
TW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCmluZGV4IDRiYjc4OGVhNjNjZDZiYmRjNTMyNTg3ZTA1MTBkNTMyNTI2
MDZmZmEuLmNlZjgyZjdiNDExZDIxOGM3MzNkNjZmYTlkYmEyZDkzMTI1YWU4MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNDksNyAr
NDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2xldEdsb2JhbFNjb3BlKTsK
IFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVu
dCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRy
KGRvY3VtZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQot
ICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4o
dGhpcykpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
Pih0aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUo
KSkKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUp
KQpAQCAtNjIsNyArNjIsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29w
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjbwogICAgIEFTU0VSVChk
b2N1bWVudC5wYWdlKCkpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlP
cmlnaW5Qb2xpY3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVmKCkpKTsKLSAgICBzZXRDb250
ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KFVSTCB7IG1fY29kZS51cmwoKSB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBv
bGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgp
IH0sICp0aGlzKSk7CiB9CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29w
ZSgpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNv
bGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXMKIHsKICAgICBp
ZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwg
bWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDAp
KTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1l
c3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOwogfQogCiB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDFjZWU5ZWIzNDIxY2Q5OWE1NmM4ODYwYjhlY2Rk
NDU5NmY4MGQyZGUuLjcxMzM5MDBmMTcxZWVmNDE1NjczZDRlOTBkNWNmNzdjZmViYzJiYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpp
bml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKICAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwog
ICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3Rv
dHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
bGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVD
bGllbnQgPSBtYWtlVW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFs
U2NvcGUpOwogICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVu
dChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MRXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKaW5kZXgg
YjAyMWNjZTE1M2MzMTkyOTUwYTJiZjc3ZDgwOWEyODQ3YWIwZjBjMS4uYTYzMjdiOWRmZjFiNzZi
YjU4MmM2MzYwMzgxNTI0MjhjNzFhYTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApAQCAtMzcs
NiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3Mg
WE1MRXJyb3JzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBYTUxFcnJvcnMoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKaW5kZXggZjAxOTNkOGM5NmUzNWM5ZmY3NWU2YTYzYTM1MGM2NTVkY2E4NjBlZi4u
Zjg2NjMzYThkNmRiNzA1NDMwMTg4Mjg1NzViNTlmMjY2N2M2NmVkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgU3RyaW5nIFhNTEh0dHBS
ZXF1ZXN0OjpyZXNwb25zZVVSTCgpIGNvbnN0CiBYTUxIdHRwUmVxdWVzdFVwbG9hZCYgWE1MSHR0
cFJlcXVlc3Q6OnVwbG9hZCgpCiB7CiAgICAgaWYgKCFtX3VwbG9hZCkKLSAgICAgICAgbV91cGxv
YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CisgICAg
ICAgIG1fdXBsb2FkID0gbWFrZVVuaXF1ZTxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV91cGxvYWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMu
Y3BwCmluZGV4IGFkN2UxM2M4YTE5NGFkNTZkNjIzNDIwMDAxN2NiYTc3ZmU4MGI3NDIuLmE5MjQ0
MDllZTQ2YzUzZTczYjI3YTQ5YTE5ZWZlOTY5NzIxNjczYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoRnVuY3Rpb25zLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNX
aGl0ZXNwYWNlKFVDaGFyIGMpCiAgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBj
ID09ICdccicgfHwgYyA9PSAnXHQnOwogfQogCi0jZGVmaW5lIERFRklORV9GVU5DVElPTl9DUkVB
VE9SKFN1ZmZpeCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rp
b24jI1N1ZmZpeCgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RnVuIyNTdWZmaXg+KCk7IH0K
KyNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gbWFrZVVu
aXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQogCiBjbGFzcyBJbnRlcnZhbCB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAppbmRleCAwNDYxNWMzZDVmMDMxMzEwNjkzOGZh
YTA1ZmIzOWM5OWNlMTIzYjVjLi5jMWJiYzU0ZWI4MzAxNjkxMTljODY4MzFhNGYyYTZlN2MwMDQ1
NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI2Myw3ICsyNjMs
NyBAQCBib29sIGV2YWx1YXRlUHJlZGljYXRlKGNvbnN0IEV4cHJlc3Npb24mIGV4cHJlc3Npb24p
CiAKICAgICAvLyBmb29bM10gbWVhbnMgZm9vW3Bvc2l0aW9uKCk9M10KICAgICBpZiAocmVzdWx0
LmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBFcVRlc3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1
bmN0aW9uOjpjcmVhdGUoInBvc2l0aW9uIl9zKSwgc3RkOjptYWtlX3VuaXF1ZTxOdW1iZXI+KHJl
c3VsdC50b051bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKKyAgICAgICAgcmV0dXJu
IEVxVGVzdE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3Mp
LCBtYWtlVW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9v
bGVhbigpOwogCiAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCmluZGV4IGVjMmM2YWUwNDU5YTA2OTI1
NmE2NjJmNzJjODcyNjdmZWExYTQ1YmQuLjYzMDRlOTI4MTFhOTM0ZjdkZTc0YzhjOTRiMmI2OWMw
MDRlYTQ5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGli
eHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNw
cApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXRz
KCkKIAogdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldChjb25zdCBTdHJpbmcmIGhy
ZWYpCiB7Ci0gICAgYXV0byBjaGlsZFJ1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFhTTEltcG9ydFJ1
bGU+KHRoaXMsIGhyZWYpOworICAgIGF1dG8gY2hpbGRSdWxlID0gbWFrZVVuaXF1ZTxYU0xJbXBv
cnRSdWxlPih0aGlzLCBocmVmKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZFJ1bGUucmVs
ZWFzZSgpKTsKICAgICBtX2NoaWxkcmVuLmxhc3QoKS0+bG9hZFNoZWV0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGUwMjRl
ZmI1NmJmNjUyYjkwYTlhMWQ0ZjgxMzA2NDkxODMwZDhlMGYuLjcwNDg4OTJhNWFhMGVmOWE1NWZi
ZDI0MDhjZDE3OTE0ZDAyYTljODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBYTUxEb2N1bWVu
dFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogdm9pZCBY
TUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwg
Y29uc3QgY2hhciogbSwgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKQogewogICAgIGlmICghbV94bWxF
cnJvcnMpCi0gICAgICAgIG1feG1sRXJyb3JzID0gc3RkOjptYWtlX3VuaXF1ZTxYTUxFcnJvcnM+
KCpkb2N1bWVudCgpKTsKKyAgICAgICAgbV94bWxFcnJvcnMgPSBtYWtlVW5pcXVlPFhNTEVycm9y
cz4oKmRvY3VtZW50KCkpOwogICAgIG1feG1sRXJyb3JzLT5oYW5kbGVFcnJvcih0eXBlLCBtLCBw
b3NpdGlvbik7CiAgICAgaWYgKHR5cGUgIT0gWE1MRXJyb3JzOjp3YXJuaW5nKQogICAgICAgICBt
X3Nhd0Vycm9yID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBiOTMxMDFiOGFhYzQ4MzlhMzliYjU0
YjJiODlkZTg5OGM3OWI3NWFiLi5iOTliMzA4OTczODU1MDllYmFiMDQ1MjEzOTc1MzliMDcwY2Vl
NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFj
a3MgewogcHVibGljOgogICAgIHZvaWQgYXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayhjb25z
dCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIqIHhtbFByZWZpeCwgY29uc3Qg
eG1sQ2hhciogeG1sVVJJLCBpbnQgbnVtTmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhcioqIG5hbWVz
cGFjZXMsIGludCBudW1BdHRyaWJ1dGVzLCBpbnQgbnVtRGVmYXVsdGVkLCBjb25zdCB4bWxDaGFy
KiogYXR0cmlidXRlcykKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNh
bGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjaz4oKTsKIAog
ICAgICAgICBjYWxsYmFjay0+eG1sTG9jYWxOYW1lID0geG1sU3RyZHVwKHhtbExvY2FsTmFtZSk7
CiAgICAgICAgIGNhbGxiYWNrLT54bWxQcmVmaXggPSB4bWxTdHJkdXAoeG1sUHJlZml4KTsKQEAg
LTEyMiwxMiArMTIyLDEyIEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBh
cHBlbmRFbmRFbGVtZW50TlNDYWxsYmFjaygpCiAgICAgewotICAgICAgICBtX2NhbGxiYWNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOwor
ICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5T
Q2FsbGJhY2s+KCkpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyc0NhbGxiYWNr
KGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNr
ID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOworICAgICAg
ICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigp
OwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1cChzLCBsZW4pOwogICAgICAgICBj
YWxsYmFjay0+bGVuID0gbGVuOwpAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxs
YmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjayhj
b25zdCB4bWxDaGFyKiB0YXJnZXQsIGNvbnN0IHhtbENoYXIqIGRhdGEpCiAgICAgewotICAgICAg
ICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBl
bmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFj
ay0+dGFyZ2V0ID0geG1sU3RyZHVwKHRhcmdldCk7CiAgICAgICAgIGNhbGxiYWNrLT5kYXRhID0g
eG1sU3RyZHVwKGRhdGEpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFj
a3MgewogCiAgICAgdm9pZCBhcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2soY29uc3QgeG1sQ2hhciog
cywgaW50IGxlbikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sg
PSBtYWtlVW5pcXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2Fs
bGJhY2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBs
ZW47CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2
b2lkIGFwcGVuZENvbW1lbnRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzKQogICAgIHsKLSAgICAg
ICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFj
az4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NvbW1lbnRD
YWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cmR1cChzKTsKIApAQCAt
MTY2LDcgKzE2Niw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBl
bmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKGNvbnN0IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENo
YXIqIGV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIqIHN5c3RlbUlEKQogICAgIHsKLSAgICAgICAg
YXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2Fs
bGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRl
cm5hbFN1YnNldENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5uYW1lID0geG1sU3Ry
ZHVwKG5hbWUpOwogICAgICAgICBjYWxsYmFjay0+ZXh0ZXJuYWxJRCA9IHhtbFN0cmR1cChleHRl
cm5hbElEKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAog
ICAgIHZvaWQgYXBwZW5kRXJyb3JDYWxsYmFjayhYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBj
b25zdCB4bWxDaGFyKiBtZXNzYWdlLCBPcmRpbmFsTnVtYmVyIGxpbmVOdW1iZXIsIE9yZGluYWxO
dW1iZXIgY29sdW1uTnVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJh
Y2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdFcnJvckNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxi
YWNrLT5tZXNzYWdlID0geG1sU3RyZHVwKG1lc3NhZ2UpOwogICAgICAgICBjYWxsYmFjay0+dHlw
ZSA9IHR5cGU7CkBAIC0xOTcsNiArMTk3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAK
IHByaXZhdGU6CiAgICAgc3RydWN0IFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NhbGxiYWNr
KCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxEb2N1bWVudFBhcnNl
ciogcGFyc2VyKSA9IDA7CiAgICAgfTsKQEAgLTU2NCw3ICs1NjUsNyBAQCBib29sIFhNTERvY3Vt
ZW50UGFyc2VyOjpzdXBwb3J0c1hNTFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogWE1M
RG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1l
bnQpCiAgICAgLCBtX3ZpZXcoZnJhbWVWaWV3KQotICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKHN0
ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGluZ0NhbGxi
YWNrcyhtYWtlVW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJlbnROb2Rl
KCZkb2N1bWVudCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJl
bG93UmFuZ2VQb3NpdGlvbigpKQogewpAQCAtNTcyLDcgKzU3Myw3IEBAIFhNTERvY3VtZW50UGFy
c2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQsIEZyYW1lVmlldyogZnJh
bWVWaWV3KQogCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRG
cmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQ
b2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cihmcmFnbWVudC5kb2N1bWVudCgpLCBwYXJzZXJDb250ZW50UG9saWN5KQotICAgICwgbV9wZW5k
aW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKKyAgICAs
IG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtlVW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCiAgICAg
LCBtX2N1cnJlbnROb2RlKCZmcmFnbWVudCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihU
ZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwgbV9wYXJzaW5nRnJhZ21l
bnQodHJ1ZSkKQEAgLTEzMjgsNyArMTMyOSw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRv
RW5kKCkKICAgICAgICAgeG1sVHJlZVZpZXdlci50cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXco
KTsKICAgICB9IGVsc2UgaWYgKG1fc2F3WFNMVHJhbnNmb3JtKSB7CiAgICAgICAgIHhtbERvY1B0
ciBkb2MgPSB4bWxEb2NQdHJGb3JTdHJpbmcoZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKSwgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybS50b1N0cmluZygpLCBkb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9ybVNvdXJj
ZShzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CisgICAgICAgIGRvY3Vt
ZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShtYWtlVW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9j
KSk7CiAKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhmYWxzZSk7IC8vIE1ha2UgdGhl
IGRvY3VtZW50IHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSBYU0wgc3R5bGVzaGVl
dHMuCiAgICAgICAgIGRvY3VtZW50KCktPmFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNOb3dJZlNj
aGVkdWxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggMDViYzk1
M2Y3ZjBkZGM3ODdiMWU2MzA0ODc2OTZjMjA4NTljYWUwZi4uZDY5ZTE0OTkyZDU4Njc1MWNhMDQz
NDI2MzYyYTZmNDFjMjY5OWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2
ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
CkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93
c2VyKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFNl
c3Npb25Ib3N0PihjYXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0KCkpOworICAgIGF1dG8gc2Vzc2lv
bkhvc3QgPSBtYWtlVW5pcXVlPFNlc3Npb25Ib3N0PihjYXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0
KCkpOwogICAgIGF1dG8qIHNlc3Npb25Ib3N0UHRyID0gc2Vzc2lvbkhvc3QuZ2V0KCk7CiAgICAg
c2Vzc2lvbkhvc3RQdHItPmNvbm5lY3RUb0Jyb3dzZXIoW3RoaXMsIGNhcGFiaWxpdGllc0xpc3Qg
PSBXVEZNb3ZlKGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lv
bkhvc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShP
cHRpb25hbDxTdHJpbmc+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcCBiL1Nv
dXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCmluZGV4IDdhMjBiODk0MWFm
ZjcyYTg1MmI3NmY1YzU1MTA2MjY1NDc3NGExY2MuLjE3N2FhNTRmMjIyOTdhYzMxNjE0ZDM1M2Jl
OWYzYTc5ZDFhYWIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwCkBAIC0xMTMsNiArMTEzLDcgQEAgYm9vbCBTZXNzaW9uSG9zdDo6aXNDb25uZWN0ZWQoKSBj
b25zdAogfQogCiBzdHJ1Y3QgQ29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YSB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEo
U2Vzc2lvbkhvc3QqIHNlc3Npb25Ib3N0LCBHVW5pcXVlUHRyPGNoYXI+JiYgZGJ1c0FkZHJlc3Ms
IEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IHNlc3Npb25Ib3N0KHNl
c3Npb25Ib3N0KQogICAgICAgICAsIGRidXNBZGRyZXNzKFdURk1vdmUoZGJ1c0FkZHJlc3MpKQpA
QCAtMTczLDcgKzE3NCw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OmxhdW5jaEJyb3dzZXIoRnVuY3Rp
b248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxlCiAgICAgfSwgdGhpcyk7
CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRidXNBZGRyZXNzKGdfc3RyZHVwX3ByaW50ZigidGNw
Omhvc3Q9JXMscG9ydD0ldSIsICIxMjcuMC4wLjEiLCBwb3J0KSk7Ci0gICAgY29ubmVjdFRvQnJv
d3NlcihzdGQ6Om1ha2VfdW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+KHRoaXMsIFdU
Rk1vdmUoZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkpOworICAgIGNvbm5lY3RUb0Jyb3dzZXIobWFrZVVuaXF1ZTxDb25uZWN0VG9C
cm93c2VyQXN5bmNEYXRhPih0aGlzLCBXVEZNb3ZlKGRidXNBZGRyZXNzKSwgbV9jYW5jZWxsYWJs
ZS5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAogdm9pZCBTZXNzaW9u
SG9zdDo6Y29ubmVjdFRvQnJvd3NlcihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFz
eW5jRGF0YT4mJiBkYXRhKQpAQCAtMzcxLDYgKzM3Miw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdl
dElECiB9CiAKIHN0cnVjdCBNZXNzYWdlQ29udGV4dCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgIGxvbmcgbWVzc2FnZUlEOwogICAgIFNlc3Npb25Ib3N0KiBob3N0
OwogfTsKQEAgLTM4MSw3ICszODMsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRv
QmFja2VuZChsb25nIG1lc3NhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VS
VChtX2Nvbm5lY3Rpb25JRCk7CiAgICAgQVNTRVJUKG1fdGFyZ2V0LmlkKTsKIAotICAgIGF1dG8g
bWVzc2FnZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VDb250ZXh0PihNZXNzYWdl
Q29udGV4dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKKyAgICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0g
bWFrZVVuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2FnZUNvbnRleHQgeyBtZXNzYWdlSUQsIHRo
aXMgfSk7CiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbChtX2RidXNDb25uZWN0aW9uLmdldCgp
LCBudWxscHRyLAogICAgICAgICBJTlNQRUNUT1JfREJVU19PQkpFQ1RfUEFUSCwKICAgICAgICAg
SU5TUEVDVE9SX0RCVVNfSU5URVJGQUNFLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaAppbmRleCBiNjJmMTJlMTgy
ZjIxZWI4ZDUxMDc0Y2IyNTRkN2IyMTJlMGNlZDE5Li5iNDQ1ZTdhNjVhNDhkMDc0OGJkN2U5MjA1
YTM0NDBmN2YxYTk1NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaApAQCAtMzksNiArMzksNyBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogCiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggMmUyOTZi
MjlmNDNhNGZjODhlNzAwOTMyNGE1ZTIzYjBiZTljZDUxYy4uOTMwM2QyYWRjMTVlZjZmYjMxMGI2
ZmIxNmQwNzBjYzg1M2ZkYzNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9y
aW5nRGlzaygpCiAgICAgaWYgKHJlc291cmNlTG9nUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9y
PihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUp
IHsKKyAgICBtX2ZpbGVNb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4ocmVzb3VyY2VM
b2dQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGlj
cygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZpbGVNb25pdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWxlTW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3Ro
aXNdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0
b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVldWUuY29w
eVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAg
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAodHlwZSA9PSBGaWxl
TW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6OlJlbW92YWwpIHsKICAgICAgICAgICAgIC8vIERpcmVj
dG9yeSB3YXMgcmVtb3ZlZCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAppbmRleCA0YzAzM2UzNTNkNGYzMDhmN2Y3NjAwMTJj
YTk2Mjk2MzAzYzEwNzMwLi43MWYzNGJmYTNkNmMyYjUyNzYxNjg5NDRlZTMzNGM3M2RhZjUwMzI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTsKIAogLy8gQ2FuIG9ubHkgYmUgY29uc3RydWN0ZWQgLyBkZXN0cm95ZWQg
LyB1c2VkIGZyb20gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3Rp
YyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlJiwgV29ya1F1ZXVlJiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5
UGF0aCk7CiAgICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGFkZWMxNGNmOWNj
ZDk2NGMyOTAxY2UyZDg0ZWEzNTZkZjZkYjBmZjIuLjVkYzdkOTk0NzhiMzRjYTMyYjc3MjBmMDk3
NDVkMDIxYTZlYzQxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTc3LDYgKzc3LDcgQEAgZW51bSBjbGFzcyBPcGVyYXRpbmdEYXRlc1dpbmRvdyA6IGJv
b2wgeyBMb25nLCBTaG9ydCB9OwogCiAvLyBUaGlzIGlzIGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVz
ZWQgLyBkZXN0cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0
YXRpc3RpY3MgcXVldWUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgdXNpbmcgUmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZGE4ODY2YjYxYzhi
MDU3MmNkZDUwOGViNjlhOWQ4YTk4OWU3NWQyMS4uOGI0YTg4MjM5NzRkNmNmMTU1NjlkY2Y5ZmZl
OTkxYzFlMWMwZmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTE1OSwxNSArMTU5LDE1IEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBu
CiAgICAgCiAgICAgcG9zdFRhc2soW3RoaXMsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBzaG91
bGRJbmNsdWRlTG9jYWxob3N0XSB7CiAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmlzSVRQRGF0YWJhc2VFbmFibGVkKCkpIHsKLSAgICAgICAgICAg
IG1fc3RhdGlzdGljc1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAg
IG1fc3RhdGlzdGljc1N0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKIAotICAgICAgICAgICAgYXV0
byBtZW1vcnlTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QpOwotICAgICAgICAgICAgYXV0byBwZXJzaXN0ZW50U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBt
X3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAg
ICAgICAgICBhdXRvIG1lbW9yeVN0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCk7CisgICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9IG1ha2VVbmlxdWU8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1f
c3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKIAogICAg
ICAgICAgICAgZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCpt
X3N0YXRpc3RpY3NTdG9yZS5nZXQoKSkucG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUoKm1lbW9yeVN0
b3JlKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0g
c3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlz
LCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAgICAgICAg
ICBtX3BlcnNpc3RlbnRTdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3Rv
cmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMs
IG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKKyAgICAgICAgICAg
IG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRSgxOTMy
OTcpOiBUaGlzIHNob3VsZCBiZSByZXZpc2VkIGFmdGVyIHRoZSBVSVByb2Nlc3MgdmVyc2lvbiBn
b2VzIGF3YXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCA2MDVhZWYzZTZlZTk1MGYzOTQ4M2ZjZDhjYzRk
OGU2NThlMDJjZjBjLi5iYmUzOTg0NzUyYmUxNDYwNTBkNTAzNTcxMzcxNTUwZmIyY2I2M2FmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBOZXR3b3JrUHJvY2VzczsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdlciA6IHB1YmxpYyBOZXR3
b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29v
a2llTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgV2ViQ29va2llTWFuYWdlcihOZXR3b3JrUHJvY2Vz
cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90
b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApp
bmRleCBkYzc5ZWViY2YxOGRiZjY3YjQ2NGMzNTg2MTBmYjNjZTdjZmU5MGNjLi5mOTBmMGZjYjQx
OTAyNGI4YTk1ZjU3NzBjOWI3OTk3YjU3ODRiMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBOZXR3
b3JrUHJvY2VzczsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAog
Y2xhc3MgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNz
U3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlcihOZXR3b3JrUHJvY2VzcyYpOwpAQCAtNzgsNiArNzksNyBAQCBjbGFzcyBMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBw
dWJsaWMgSVBDOgogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgc3RydWN0IFdlYlNvdXBSZXF1
ZXN0QXN5bmNEYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YShHUmVmUHRyPEdUYXNrPiYmLCBXZWJLaXRT
b3VwUmVxdWVzdEdlbmVyaWMqKTsKICAgICAgICAgfldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDJjNGQyZmY5NDgwOWM0MmE2MTE2NzNiNWZiNWNhZGJm
YTU5MTYwNGUuLmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0ZjM5ZmI1ZWZjZDc1ZTcxNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJTb3VwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbFJlcXVl
c3RDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xpZW50CiAg
ICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+
YWRkQ3VzdG9tUHJvdG9jb2woc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7
CisgICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+
YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CiAgICAg
ICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQs
IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVlc3QocmVxdWVzdCkpOwogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBmZmZiNDczNWRiMjFlZDU0YTgwYjRkMDNmNGQ0ZTcw
NDU0NmJmOWRjLi41MjEwNjNjZTkxMjBiYjM1MDhkOTllNGJlOTI0ZDdlOTRhMmZhMDM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6
OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25s
b2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihyZXF1ZXN0
LnVybCgpKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwogCi0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNzaW9uLCAmY2xpZW50KCkubmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKS0+YmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKKyAgICBtX3BlbmRp
bmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPiht
X2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQog
CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxv
YWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBA
IC05MSw3ICs5MSw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rv
d25sb2FkRGVzdGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFu
YWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQs
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewogICAgIEFTU0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsK
LSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8
UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25s
b2FkcygpLCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRz
LmFkZChkb3dubG9hZElELCBtYWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25z
ZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9v
bCBhbGxvd092ZXJ3cml0ZSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdl
cjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRv
d25sbwogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UK
LSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRv
d25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VV
bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwog
CiAgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25s
b2FkSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFwLmNwcAppbmRleCBhODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3
YmJjNDMzZTY1Li5hZTNjYTdlMGU0ZWU3ZWM4NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6
OkFkZFJlc3VsdCBEb3dubG9hZE1hcDo6YWRkKERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBh
dXRvIHJlc3VsdCA9IG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2Fk
KSk7CiAgICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCgh
bV9kb3dubG9hZEFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2Fk
cyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rv
d25sb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwg
IldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5n
KTsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQg
ZG93bmxvYWRzJyBhc3NlcnRpb24gaW4gTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuY3BwCmluZGV4IGEyNzgyOGQ3YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5
NmQuLjU5MTIzZjJjNDhmMWMxZTQxNzliYjFkNWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6
OkNvbm5lY3Rpb24qIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBu
ZXR3b3JrU2Vzc2lvbiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1l
dGVycyksIG5ldHdvcmtTZXNzaW9uKSkKKyAgICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxO
ZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0
d29ya1Nlc3Npb24pKQogICAgICwgbV9wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbikKIHsKICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxz
ID0gcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQ
b2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCAyZTRmNTNkMmFkYzBlODUyMDI2YjAzNzFiNTE1NGQ0YjNjODk5NmMxLi40NzA5
NDBlMzdkZWY1OWY5ZDk3MjI1N2ZiMTNlY2I3NWJmZjBmYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBz
ZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsK
LSAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVj
dGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Np
b25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5l
Y3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNz
aW9uSUQpOwogICAgIAogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNl
cnZpY2VXb3JrZXIsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dT
ZXJ2ZXJDb25uZWN0aW9uIC0gJXMiLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4
IDQ0NDIwZmY1ZmYyMjk5YmUzNzU0Y2UzN2NkZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIx
YWYwYmFkZTBjMDI3NWJlMmYwOTVhMTY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAg
ICBhdXRvJiBiYWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVu
dGlmaWVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRv
JiYgY29udGVudFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2
Y2ExZjA5NWUxMDNjNTQyYWQ0ZTQzMDAwYmNiNzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIy
MTA0ZGYwOTQ2OTJjYzNmNjU1MjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0Qmxv
YlJlc291cmNlIjsKIAogTmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNl
cykKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJl
YW0oc3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3Ry
ZWFtKG1ha2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZl
cmVuY2VzKGZpbGVSZWZlcmVuY2VzKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5l
dHdvcmtQcm9jZXNzKCkpCiB7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjpkb3dubG9hZCgpCiAgICAgfQogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93
bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1l
KCkpOworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1h
bmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgp
LCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2Fk
LmdldCgpOwogICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayht
X3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHIt
PmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmNwcAppbmRleCBmNjU0Mjk1OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMx
MTZjLi4xOTMyNmYyZjQ3ZGM5ZjRmNjIyOGE0YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
cjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlPigpOwogICAgICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9k
YXRhYmFzZS0+b3BlbihwYXRoLCBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJl
YWRPbmx5KTsKICAgICAgICAgaWYgKCFpc0RhdGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENP
Q09BKQpAQCAtODAsNyArODAsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3
b3JrZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQg
YnkgZGlmZmVyZW50IHRocmVhZHMuCiAgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRp
bmdDaGVja3MoKTsKIAotICAgICAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1
ZXJ5KTsKKyAgICAgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4oKm1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAg
IGludCBpc1N0YXRlbWVudFByZXBhcmVkID0gKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FM
SVRFX09LKTsKICAgICAgICAgQVNTRVJUKGlzU3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBp
ZiAoIWlzU3RhdGVtZW50UHJlcGFyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKaW5kZXggZGNkNDZhNjAx
YmU2MzA5ODZmYzJhZTBjMWM5NjU1OGM5NTkyMjA4YS4uNTFkMjAzMTRlYWE0OWU5NmE0MWE1N2Nl
OGQ0MjIyNmJiZmIwNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaApAQCAtNDIsNiArNDIsNyBAQCBj
bGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CiAgICAgfk5ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCmluZGV4IDkxMDdmZWMxZTM0ZGI0NDg4MTYyMjg2ODYyMmM4ZmJlYjViMzg4M2MuLmVlODBh
YzZlYTFhNzc5NzczYTA3MTBlMTc4ODcwNjM3NjdjNTEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBO
ZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVzcG9uc2VDb21wbGUKICAgICB9CiAKICAgICBpZiAobV9sb2FkVGhyb3R0bGVMYXRlbmN5
ID4gMF9zKSB7Ci0gICAgICAgIG1fdGhyb3R0bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocm90dGxl
PigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX3Rocm90dGxlID0gbWFrZVVuaXF1ZTxU
aHJvdHRsZT4oKnRoaXMsIG1fbG9hZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCmluZGV4IDQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlhMTYwODE3ZjI0Nzk2N2IwMTYuLmUxYWUw
MGJkOWQ5NTQ3Nzc4MTc0Mzk4NWRmMDczYThiMWNkMjUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQxMyw3ICs0
MTMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVm
bGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogICAgICAgICBtX2ZyYW1lSUQsCiAgICAg
ICAgIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1fY29yc1ByZWZsaWdo
dENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4o
bV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJl
Y3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgIG1fY29yc1ByZWZsaWdodENoZWNr
ZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJv
Y2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxl
ciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRv
JiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVj
a0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RX
aXRoUHJlZmxpZ2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/
ICVkIiwgZXJyb3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFlcnJv
ci5pc051bGwoKSkgewpAQCAtNDQ2LDcgKzQ0Niw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeSog
TmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3koKQogewogICAgIGlmICgh
bV9jb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgbV9jc3BSZXNwb25zZUhlYWRlcnMpIHsKICAgICAg
ICAgLy8gRklYTUU6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGluc3Rl
YWQgb2YgaXRzIG9yaWdpbi4KLSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmln
aW4tPnRvU3RyaW5nKCkgfSk7CisgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFr
ZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50
b1N0cmluZygpIH0pOwogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2
ZUhlYWRlcnMoKm1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0KICAg
ICByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGE5OGY3MGZhOTlhNTY1
MDFjN2MxZGFmNTI5YWVlYjA3MDlkMmM2ZjEuLmZkNzZjZmVjMmUzNWJjNmY4OGUwNmY4N2RiNTc0
MmYwYTQzNTExNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC01MDMsOSArNTAzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRv
cHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBtX2RlZmF1bHROZXR3b3JrU3Rv
cmFnZVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9u
KSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUo
Y29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIG1fZGVm
YXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsK
KyAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSk7CiAjZW5kaWYKIH0KIApAQCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vz
c2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9u
LmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3Rv
cmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25J
RCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2Vs
aWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KHNlc3Npb25JRCk7CiAjZW5kaWYKIH0KIApAQCAtMjQzNSw3ICsyNDM1LDcgQEAgU1dT
ZXJ2ZXImIE5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhp
cyBQQUw6OlNlc3Npb25JRCBjb21lIGZyb20/CiAgICAgICAgIEFTU0VSVChzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSB8fCAhcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICAKLSAgICAgICAgYXV0byB2
YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmln
aW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICAgICAgYXV0byB2YWx1
ZSA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4o
KSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKICAgICAgICAgICAgIHZhbHVl
LT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgICAg
IHJldHVybiB2YWx1ZTsKQEAgLTI1NDcsNiArMjU0Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGll
bnRPCiB9CiAKIGNsYXNzIFF1b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlN0b3JhZ2VRdW90YVVzZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFF1b3RhVXNlckluaXRpYWxpemVyKFN0b3JhZ2VRdW90YU1hbmFn
ZXImIG1hbmFnZXIpCiAgICAgICAgIDogbV9tYW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQpA
QCAtMjU4MSw3ICsyNTgyLDcgQEAgY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6U3RvcmFnZVF1b3RhVXNlciB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmluaXRpYWxpemVRdW90YVVzZXJzKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBzZXNzaW9uSUQsIG9yaWdpbiwgdXNlciA9IHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2Vy
SW5pdGlhbGl6ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBv
cmlnaW4sIHVzZXIgPSBtYWtlVW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgdGhpcy0+aWRiU2VydmVyKHNlc3Npb25JRCkuaW5pdGlhbGl6ZVF1b3RhVXNlcihv
cmlnaW4pOwpAQCAtMjU5NSw3ICsyNTk2LDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29y
a1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAg
ICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXJzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgcmV0dXJuICpzdG9yYWdlUXVvdGFNYW5hZ2Vycy5tYW5hZ2Vyc1Blck9yaWdp
bigpLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAmc3RvcmFnZVF1b3RhTWFuYWdlcnMsIHNlc3Npb25J
RCwgJm9yaWdpbl0gewotICAgICAgICBhdXRvIG1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0
b3JhZ2VRdW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmln
aW4pLCBbdGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAg
ICAgICAgYXV0byBtYW5hZ2VyID0gbWFrZVVuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9y
YWdlUXVvdGFNYW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwg
b3JpZ2luXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBz
cGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAgICB0aGlzLT5yZXF1ZXN0
U3RvcmFnZVNwYWNlKHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwgY3VycmVudFNwYWNlLCBzcGFj
ZUluY3JlYXNlLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIH0pOwogICAgICAgICBpbml0
aWFsaXplUXVvdGFVc2VycygqbWFuYWdlciwgc2Vzc2lvbklELCBvcmlnaW4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDk0ODY5MDQ2NWFh
MTY0MGI5YWFlZWFlZmE4YjJlNDRiYzY1MmQzOTAuLmFhY2I2MDMxMjNhODdjMTFhNWY2ZmI4Njhm
NDdiOGE3MGVlYWI3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1
YmxpYyBBdXhpbGlhcnlQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAg
ewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1h
a2VfdW5pcXVlPFQ+KCp0aGlzKSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBs
ZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICB2b2lkIHJl
bW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDc4MmVmMTVmM2RlZWU1YWY0ZWFlZjA1Y2RmNjAz
NmFlN2U2ZDJmYi4uOGMzM2ZiODYwYWQ3YTc4NzM2ZTRiOGZiYWRmMjBjNzc1NTMyOWU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0
d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAK
ICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRU
UFJlc3BvbnNlQWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUpIHsKICAgICAg
ICAgTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBpc01haW5G
cmFtZUxvYWQoKSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok1haW5GcmFtZSA6IE5l
dHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAgICAgICBtX25ldHdvcmtMb2Fk
Q2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0s
IG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVx
dWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJh
bWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xp
Y3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQ
U1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwg
cmVxdWVzdExvYWRUeXBlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5p
cXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRj
aE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklE
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhl
YWRlck1hcCB7IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1f
cGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29w
eVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5o
dHRwUmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAg
ICAgIGlmIChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9u
ZXR3b3JrTG9hZENoZWNrZXItPnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZh
bHVlKCkgfSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTExOSw3ICsxMTks
NyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogI2VuZGlmCiAgICAgfQogICAgIGlmIChzeW5j
aHJvbm91c1JlcGx5KQotICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOwor
ICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzTG9h
ZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6On5OZXR3b3JrUmVzb3VyY2VMb2FkZXIoKQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2Vz
ID0gbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9yaWdpbmFsUmVx
dWVzdCgpLnVybCgpKTsKIAogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0
aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdv
cmtMb2FkPigqdGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0gJXtwdWJs
aWN9cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBjNGUxMDJlNzc1MjdlZWMxZmFmNTFlN2IwNGUwZTk1
Nzk0NjY3YTFlLi40MDllNGQ0OGJjZDEwN2FkZjlkZGQwMTAzOGRhMzU2MTc2YWExNTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC02NSw2
ICs2NSw3IEBAIGNsYXNzIENhY2hlOwogfQogCiBjbGFzcyBOZXR3b3JrU2Vzc2lvbiA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Np
b24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzJiYpOwogICAgIHZpcnR1YWwgfk5ldHdvcmtTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCmluZGV4IDA0
ZTNkMDI1MjIwZGU0YzQzYzczNjJkYTE0MWRmMzJiYTIwMzBmYWYuLjU5MTg4NTc1N2E4NDc1MWM4
MzE4ZjdiZTVkMjc1YTdmMTFjNWE0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENo
YW5uZWw+IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBp
ZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
U29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8TmV0d29ya1NvY2tldENoYW5uZWw+KGNvbm5l
Y3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXN1bHQtPm1f
c29ja2V0KSB7CiAgICAgICAgIHJlc3VsdC0+ZGlkQ2xvc2UoMCwgIkNhbm5vdCBjcmVhdGUgYSB3
ZWIgc29ja2V0IHRhc2siX3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAppbmRleCA2
NzJiMzc4MWE0ZDRhMzRiOWMxZTFlMjQxNWJkNDkxMGU3NzllZDcxLi45ZGY5YWFjZGNiMzMyZTA0
MWRiNjliZDA2ODEwMjI5Y2Y4YmI0ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNz
IE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Nlc3Npb247CiAKIGNsYXNzIE5ldHdvcmtT
b2NrZXRDaGFubmVsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBjcmVhdGUoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3QgaWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJl
Y29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0
VGFzay5jcHAKaW5kZXggZDkwY2NjYTk4MGE4ZWZmYzJkNGYzOGY1ZTNmNmJjMGFhMmMyZTU0Ni4u
MmM2NDI3ZTY0ODIyY2VmNWQxYTgxMjAyNWVmZDZjODU0NTQxY2U4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgUHJlY29ubmVjdFRhc2s6OlByZWNvbm5lY3RUYXNrKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3Jr
UHJvY2VzcywgTmV0d29ya0xvYWRQYXJhbWUKICAgICB9CiAKICAgICBBU1NFUlQocGFyYW1ldGVy
cy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKTsKLSAgICBtX25l
dHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIs
IFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9h
ZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVT
aG90KDYwMDAwX3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggYmY1
MTU3OGZiMTQ3ZGRkYzg3ZTY2ZDkwYTVlZGQwMmE0Y2Q3MjY5My4uY2M4Nzg0ZDQyODNhNjI1ZmMw
ZTFkOWVmYWE1MjcwNTIzYWM3MTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3Bw
CkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVE
YXRhYmFzZVVwZGF0ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9kaXNhYmxlU3Vk
ZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSkKLSAgICAgICAgbV9kaXNh
YmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsKKyAgICAgICAgbV9kaXNhYmxl
U3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSA9IG1ha2VVbmlxdWU8
U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsKIAogICAgIG1fZGlkU2NoZWR1bGVEYXRhYmFz
ZVVwZGF0ZSA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAzZTlkMTdkNjAyZDM0MTc3MDMzYzkzMzhiNGJi
ZTZkYTBiYWJhOGE0Li5iMDgzZDVkMzJhNTFlNjFkYTQzNzZkZjk0NDZlZjExMTRlYTZiZjEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCkBAIC04NCwxNyArODQsMTcgQEAgQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgUmVmPFN0b3JhZ2U+JiYgc3RvcmFnZSwgT3B0aW9uU2V0PEMKIHsKICNp
ZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYg
KG9wdGlvbnMuY29udGFpbnMoQ2FjaGVPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKSkg
ewotICAgICAgICBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFi
bGVkKSB7CisgICAgICAgIG1fbG93UG93ZXJNb2RlTm90aWZpZXIgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJs
ZWQpIHsKICAgICAgICAgICAgIEFTU0VSVChXVEY6OlJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAg
ICAgICAgIGlmIChpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpCiAgICAgICAgICAgICAgICAgbV9zcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIEFTU0VSVCghbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKTsKLSAgICAgICAgICAg
ICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAg
IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFu
YWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0p
OwogICAgICAgICBpZiAoIW1fbG93UG93ZXJNb2RlTm90aWZpZXItPmlzTG93UG93ZXJNb2RlRW5h
YmxlZCgpKQotICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsK
KyAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CiAgICAgfQogI2VuZGlm
CiAKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0
cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAgCiBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0
KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlp
bmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
LCByZXF1ZXN0LCByZXNwb25zZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtl
Q2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNv
cmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0
U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0
KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1
ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1
ZXN0LCByZXNwb25zZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVL
ZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RW
YXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Np
b24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBD
YWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gQ2FjaGU6OnVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IGV4aXN0aW5n
RW50cnkucmVzcG9uc2UoKTsKICAgICBXZWJDb3JlOjp1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRl
clJldmFsaWRhdGlvbihyZXNwb25zZSwgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIAotICAgIGF1dG8g
dXBkYXRlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihleGlzdGluZ0VudHJ5LmtleSgp
LCByZXNwb25zZSwgZXhpc3RpbmdFbnRyeS5idWZmZXIoKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlp
bmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
LCBvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgYXV0byB1cGRhdGVFbnRyeSA9IG1h
a2VVbmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnkua2V5KCksIHJlc3BvbnNlLCBleGlzdGluZ0Vu
dHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdv
cmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIG9yaWdpbmFsUmVxdWVzdCwgcmVz
cG9uc2UpKTsKICAgICBhdXRvIHVwZGF0ZVJlY29yZCA9IHVwZGF0ZUVudHJ5LT5lbmNvZGVBc1N0
b3JhZ2VSZWNvcmQoKTsKIAogICAgIG1fc3RvcmFnZS0+c3RvcmUodXBkYXRlUmVjb3JkLCB7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAppbmRleCA3YWUxYzJmZTdkY2U2MDdiOWY4YTUzZDk5YTFiZDc5ODUz
OTliY2YxLi4xZjQxNDRhOGZhZTg3YmY1ZmM1YzgzZWQ5MDJiNmZmMDhhMDY0YWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5j
b2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRy
eTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRy
eSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oc3RvcmFnZUVu
dHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxFbnRyeT4oc3RvcmFnZUVudHJ5KTsK
IAogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVh
ZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRlci5zaXplKCkpOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZW50cnktPm1fcmVzcG9uc2UpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCmluZGV4IGU3ZmM1Yjg5MzIyYjk5MWM3MDlkMDY4YmUyZGU3NzczODNjYjRiYzAuLjIy
MDE5NDE3YThjNTAxYmY5NTViZjUzMjJjMDY5Y2IwMzJhNDFlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxG
cmFtZUkKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRTbmlm
ZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7CiAgICAgcGFyYW1ldGVycy5jb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlm
ZjsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKLSAgICBtX25l
dHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIs
IFdURk1vdmUocGFyYW1ldGVycyksICpjYWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKKyAgICBtX25ldHdvcmtM
b2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFy
YW1ldGVycyksICpjYWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKIH0KIAogU3BlY3VsYXRpdmVMb2FkOjp+U3Bl
Y3VsYXRpdmVMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwCmluZGV4IDFjZDZiNDkyZjgxYTVhODFkMjRjYTc5MTA4ZGE2YjE5ZTBjMDAzZjEuLjU3
ZThlNzU5OWIxY2NhNjViMjZlMDZlYzM4NzJlZTJkZDk0OWRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGNs
YXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxvYWQgOiBwdWJsaWMgUmVm
Q291bnRlZDxQZW5kaW5nRnJhbWVMCiAgICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNlTG9hZChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgc3VicmVzb3VyY2VLZXkp
CiAgICAgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBtX3N1
YnJlc291cmNlTG9hZHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U3VicmVzb3VyY2VMb2FkPihy
ZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkpOworICAgICAgICBtX3N1YnJlc291cmNlTG9hZHMuYXBw
ZW5kKG1ha2VVbmlxdWU8U3VicmVzb3VyY2VMb2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkp
OwogICAgICAgICBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkuaW1wdWxzZSgpOwogICAgIH0KIApA
QCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUo
Y29uc3QgS2V5JiBzdG9yYWdlS2V5LCBSZXRyaWV2ZUNvbXBsZXRpb25ICiAgICAgQVNTRVJUKG1f
cGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5zKHN0b3JhZ2VLZXkpKTsKICAgICAvLyBGSVhNRTogVGhp
cyBicmVha3MgaW5jcmVtZW50YWwgbG9hZGluZyB3aGVuIHRoZSByZXZhbGlkYXRpb24gaXMgbm90
IHN1Y2Nlc3NmdWwuCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXRyaWV2ZVJlcXVl
c3RzLmVuc3VyZShzdG9yYWdlS2V5LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+PigpOwogICAgIH0p
OwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBj
b24KICAgICBBU1NFUlQoZW50cnkpOwogICAgIEFTU0VSVCghZW50cnktPm5lZWRzVmFsaWRhdGlv
bigpKTsKICAgICBhdXRvIGtleSA9IGVudHJ5LT5rZXkoKTsKLSAgICBtX3ByZWxvYWRlZEVudHJp
ZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkZWRFbnRyeT4oV1RGTW92ZShlbnRy
eSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlzLCBrZXksIGZyYW1lSURdIHsK
KyAgICBtX3ByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgbWFrZVVuaXF1ZTxQcmVsb2FkZWRFbnRy
eT4oV1RGTW92ZShlbnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlzLCBr
ZXksIGZyYW1lSURdIHsKICAgICAgICAgYXV0byBwcmVsb2FkZWRFbnRyeSA9IG1fcHJlbG9hZGVk
RW50cmllcy50YWtlKGtleSk7CiAgICAgICAgIEFTU0VSVChwcmVsb2FkZWRFbnRyeSk7CiAgICAg
ICAgIGlmIChwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSkKQEAgLTQ0OSw3ICs0NDks
NyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMo
Y29uc3QgS2V5JiBrZXksIEVudHJ5KiBlbnRyeQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBmb3IgKGF1dG8mIGNvbXBsZXRpb25IYW5kbGVyIDogKmNvbXBsZXRpb25IYW5kbGVycykKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkgPyBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5Pigq
ZW50cnkpIDogbnVsbHB0cik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVudHJ5ID8gbWFr
ZVVuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6IG51bGxwdHIpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlk
YXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXMKIAogICAgIExPRyhO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFNwZWN1
bGF0aXZlbHkgcmV2YWxpZGF0aW5nICclcyc6Iiwga2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0
YSgpKTsKIAotICAgIGF1dG8gcmV2YWxpZGF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0
aXZlTG9hZD4obV9jYWNoZSwgZnJhbWVJRCwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgV1RGTW92ZShl
bnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlvblJlcXVlc3QsIGZyYW1lSURdKHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgeworICAgIGF1dG8gcmV2YWxpZGF0b3Ig
PSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4obV9jYWNoZSwgZnJhbWVJRCwgcmV2YWxpZGF0
aW9uUmVxdWVzdCwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlvblJlcXVl
c3QsIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgewog
ICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgIXJldmFsaWRhdGVkRW50cnktPm5l
ZWRzVmFsaWRhdGlvbigpKTsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8IHJl
dmFsaWRhdGVkRW50cnktPmtleSgpID09IGtleSk7CiAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29u
c3QgR2xvYmFsRnJhbWVJRCYgZgogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwgc3VicmVz
b3VyY2VJbmZvLCBmcmFtZUlEKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBMT0coTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOb3QgcHJl
bG9hZGluZyAnJXMnIGJlY2F1c2UgaXQgaXMgbWFya2VkIGFzIHRyYW5zaWVudCIsIGtleS5pZGVu
dGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJp
ZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywga2V5LCBm
cmFtZUlEXSB7CisgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgbWFr
ZVVuaXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAgICAgICAg
ICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UobV9jYWNoZS5uZXR3
b3JrUHJvY2VzcygpLCBmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5UmlnaHRs
eU5vdFdhcm1lZFVwS2V5KCkpOwogICAgICAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmll
cy5yZW1vdmUoa2V5KTsKICAgICAgICAgICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4
IGJiZmM2NDk4OTBmOTVjYzdlMDRjZTgyYTRmZTMyOTQ0ZGMxYWIxZjAuLjgwNGM0Mjk4Y2MzZTNj
MjgxNGZkYmMyYmJiNmNiZWU1NzU4NGFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMjkw
LDggKzI5MCw4IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgIExPRyhOZXR3b3Jr
Q2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBzeW5jaHJvbml6aW5nIGNhY2hlIik7CiAK
ICAgICBiYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewotICAgICAgICBhdXRvIHJlY29yZEZpbHRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7Ci0gICAgICAgIGF1dG8gYmxvYkZp
bHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1dG8g
cmVjb3JkRmlsdGVyID0gbWFrZVVuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAgYXV0
byBibG9iRmlsdGVyID0gbWFrZVVuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKIAogICAgICAgICAv
LyBNb3N0IG9mIHRoZSBkaXNrIHNwYWNlIHVzYWdlIGlzIGluIGJsb2JzIGlmIHdlIGFyZSB1c2lu
ZyB0aGVtLiBBcHByb3hpbWF0ZSByZWNvcmRzIGZpbGUgc2l6ZXMgdG8gYXZvaWQgZXhwZW5zaXZl
IHN0YXQoKSBjYWxscy4KICAgICAgICAgc2l6ZV90IHJlY29yZHNTaXplID0gMDsKQEAgLTQ4OSw3
ICs0ODksNyBAQCB2b2lkIFN0b3JhZ2U6OnJlYWRSZWNvcmQoUmVhZE9wZXJhdGlvbiYgcmVhZE9w
ZXJhdGlvbiwgY29uc3QgRGF0YSYgcmVjb3JkRGF0YSkKICAgICB9CiAKICAgICByZWFkT3BlcmF0
aW9uLmV4cGVjdGVkQm9keUhhc2ggPSBtZXRhRGF0YS5ib2R5SGFzaDsKLSAgICByZWFkT3BlcmF0
aW9uLnJlc3VsdFJlY29yZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihTdG9y
YWdlOjpSZWNvcmQgeworICAgIHJlYWRPcGVyYXRpb24ucmVzdWx0UmVjb3JkID0gbWFrZVVuaXF1
ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJlY29yZCB7CiAgICAgICAgIG1ldGFEYXRhLmtl
eSwKICAgICAgICAgbWV0YURhdGEudGltZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRhLApAQCAt
NzU4LDcgKzc1OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIHJldHJpZXZlRnJvbU1lbW9y
eShjb25zdCBUJiBvcGVyYXRpb25zLCBjb25zdCBLZXkmIGtleSwKICAgICAgICAgaWYgKG9wZXJh
dGlvbi0+cmVjb3JkLmtleSA9PSBrZXkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVT
dG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBmb3VuZCB3cml0ZSBvcGVyYXRpb24gaW4gcHJvZ3Jl
c3MiKTsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVjb3JkID0gb3Bl
cmF0aW9uLT5yZWNvcmQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihyZWNvcmQpLCB7IH0pOworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmlxdWU8U3RvcmFnZTo6UmVjb3JkPihyZWNv
cmQpLCB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtODYyLDcgKzg2Miw3IEBAIHZvaWQgU3RvcmFnZTo6cmV0cmlldmUoY29uc3Qg
S2V5JiBrZXksIHVuc2lnbmVkIHByaW9yaXR5LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kCiAgICAg
aWYgKHJldHJpZXZlRnJvbU1lbW9yeShtX2FjdGl2ZVdyaXRlT3BlcmF0aW9ucywga2V5LCBjb21w
bGV0aW9uSGFuZGxlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVhZE9wZXJhdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZE9wZXJhdGlvbj4oKnRoaXMsIGtleSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gcmVhZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8
UmVhZE9wZXJhdGlvbj4oKnRoaXMsIGtleSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
CiAgICAgcmVhZE9wZXJhdGlvbi0+dGltaW5ncy5zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKTsKICAgICByZWFkT3BlcmF0aW9uLT50aW1pbmdzLmRpc3BhdGNoQ291bnRBdFN0YXJ0ID0g
bV9yZWFkT3BlcmF0aW9uRGlzcGF0Y2hDb3VudDsKQEAgLTg3OSw3ICs4NzksNyBAQCB2b2lkIFN0
b3JhZ2U6OnN0b3JlKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBNYXBwZWRCb2R5SGFuZGxlciYmIG1h
cHBlZEJvZHlIYW5kbGVyLAogICAgIGlmICghbV9jYXBhY2l0eSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVPcGVyYXRp
b24+KCp0aGlzLCByZWNvcmQsIFdURk1vdmUobWFwcGVkQm9keUhhbmRsZXIpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8
V3JpdGVPcGVyYXRpb24+KCp0aGlzLCByZWNvcmQsIFdURk1vdmUobWFwcGVkQm9keUhhbmRsZXIp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgbV9wZW5kaW5nV3JpdGVPcGVyYXRp
b25zLnByZXBlbmQoV1RGTW92ZSh3cml0ZU9wZXJhdGlvbikpOwogCiAgICAgLy8gQWRkIGtleSB0
byB0aGUgZmlsdGVyIGFscmVhZHkgaGVyZSBhcyB3ZSBkbyBsb29rdXBzIGZyb20gdGhlIHBlbmRp
bmcgb3BlcmF0aW9ucyB0b28uCkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2
ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBU
cmF2ZXIKICAgICBBU1NFUlQodHJhdmVyc2VIYW5kbGVyKTsKICAgICAvLyBBdm9pZCBub24tdGhy
ZWFkIHNhZmUgRnVuY3Rpb24gY29waWVzLgogCi0gICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRoaXMpLCB0
eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKKyAgICBhdXRvIHRyYXZlcnNl
T3BlcmF0aW9uUHRyID0gbWFrZVVuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhp
cyksIHR5cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikpOwogICAgIGF1dG8mIHRy
YXZlcnNlT3BlcmF0aW9uID0gKnRyYXZlcnNlT3BlcmF0aW9uUHRyOwogICAgIG1fYWN0aXZlVHJh
dmVyc2VPcGVyYXRpb25zLmFkZChXVEZNb3ZlKHRyYXZlcnNlT3BlcmF0aW9uUHRyKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3VicmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXggN2I4ODkyMjk5NTM5ZGIz
NGM1YjM5MTRkM2IyMTRjZThiODE0M2I5OC4uNjNhZDA0MDlmZGQyMzZmNmUzYzJjYTMwZTg3ZTRh
N2MwYTI5NTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKQEAg
LTkzLDcgKzkzLDcgQEAgU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVB
c1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50
cnk+IFN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6
OlJlY29yZCYgc3RvcmFnZUVudHJ5KQogewotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOworICAgIGF1dG8gZW50cnkgPSBt
YWtlVW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBz
dG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRy
eS0+bV9zdWJyZXNvdXJjZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5kZXggZDhhMDU5NDBkNzE5N2ViMzIyNWEzNmJj
NTEzYTJkYjYxMGRiMGNkOC4uNzEwNGQxZjc0Y2Q3MDFjYmNlY2ZhYjU3ZDI0ZWJmZjhkYWViZWRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRj
aENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZl
dGNoQ2FjaGUuY3BwCkBAIC03Myw4ICs3Myw4IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGly
YXRpb25UaW1lb3V0IHsgNV9zIH07CiB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVS
TCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fc2Vzc2lv
blByZWZldGNoZXMpCi0gICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lv
blByZWZldGNoZXMtPmFkZChyZXF1ZXN0VXJsLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoQ2Fj
aGU6OkVudHJ5PihXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAg
IG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvblByZWZldGNoZXMtPmFkZChyZXF1ZXN0VXJs
LCBtYWtlVW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlc3BvbnNlKSwgV1RG
TW92ZShidWZmZXIpKSk7CiAgICAgLy8gTGltaXQgcHJlZmV0Y2hlcyBmb3Igc2FtZSB1cmwgdG8g
MS4KICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CkBAIC04
Niw5ICs4Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0
VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFByZWZldGNoQ2FjaGU6
OnN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVk
aXJlY3RSZXF1ZXN0KQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKLSAgICAgICAg
bV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFw
PigpOworICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVu
dHJpZXNNYXA+KCk7CiAgICAgcmVkaXJlY3RSZXF1ZXN0LmNsZWFyUHVycG9zZSgpOwotICAgIG1f
c2Vzc2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0VXJsLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZl
dGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlZGly
ZWN0UmVxdWVzdCkpKTsKKyAgICBtX3Nlc3Npb25QcmVmZXRjaGVzLT5zZXQocmVxdWVzdFVybCwg
bWFrZVVuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNl
KSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpKSk7CiAgICAgbV9zZXNzaW9uRXhwaXJhdGlvbkxp
c3QuYXBwZW5kKHN0ZDo6bWFrZV90dXBsZShyZXF1ZXN0VXJsLCBXYWxsVGltZTo6bm93KCkpKTsK
ICAgICBpZiAoIW1fZXhwaXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fZXhwaXJh
dGlvblRpbWVyLnN0YXJ0T25lU2hvdChleHBpcmF0aW9uVGltZW91dCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4IGExNzEw
YmFlOWU1YTg4NTI2Y2VmYTNiMzlhYTc4OGZhYWYyY2ZhMGUuLmEyNTE1MjBiMzFlYWM5MjFjMjJk
MzExNTFkNmQyMzFhMWJlZDEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIFByZWZl
dGNoQ2FjaGUgewogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIHN0cnVjdCBFbnRyeSB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgRW50cnkoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsK
ICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCAwNzdmMTZmYTY1MDY1MmM3
ODdhNmYwMzE2MDkwOTAyNjhlYmI4YWMwLi5jY2UyNmFjZmIwNGNmNzA3NGU3NjNmNWJiYzhlNGE1
ZTk4YTE1YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25z
dCBOZXR3b3JrUHJvY2Vzc0MKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4o
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIFJldGFpblB0cjxDRkRh
dGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0
CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNz
RGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpCiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciYg
TmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKIHsKICAgICBpZiAo
IW1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpCi0gICAgICAgIG1fbmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
PigpOworICAgICAgICBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyID0gbWFrZVVuaXF1ZTxO
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsKICAgICByZXR1cm4gKm1fbmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAxZjhkNGNiZmM3YTUz
MzhjZjBlZjUyNGU5YTY3NTQzMWI0MDE3ZmM5Li4wOWIyNDNhNmQ3YzgxNjhlNzQ1OTk0Y2RlODcz
NzQ3YjY3NTU0ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC04MDAsNyArODAwLDcgQEAgLSAo
dm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNl
c3Npb25EYXRhVGFzayAqKWRhdGEKICAgICAgICAgUmVmPE5ldHdvcmtEYXRhVGFza0NvY29hPiBw
cm90ZWN0ZWROZXR3b3JrRGF0YVRhc2soKm5ldHdvcmtEYXRhVGFzayk7CiAgICAgICAgIGF1dG8g
ZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsKICAgICAg
ICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93
bmxvYWRNYW5hZ2VyKCk7Ci0gICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRU
YXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmls
ZW5hbWUoKSk7CisgICAgICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPFdlYktpdDo6RG93
bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lv
bi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAg
ICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9h
ZCgqZG93bmxvYWQpOwogICAgICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3
b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxv
YWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24oKSk7CkBAIC04OTUsNyArODk1LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29h
OjpzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxO
ZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4obmV0d29ya1Byb2Nl
c3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwcm94
eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eSkK
QEAgLTEyNDEsNyArMTI0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3
b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTCiB7CiAgICAgLy8g
RklYTUU6IFVzZSBwcm90b2NvbC4KICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0
VGFzaz4gdGFzayA9IFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuZ2V0KCkgd2ViU29j
a2V0VGFza1dpdGhSZXF1ZXN0OiByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9k
eVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIFdURk1vdmUodGFzaykpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIFdURk1vdmUodGFzaykpOwog
fQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFkZFdlYlNvY2tldFRhc2soV2ViU29ja2V0
VGFzayYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5kZXggYmU2ODAxZjMwY2RmNDkwMDI1NGMyMjRi
OWIxMWZiZGY3M2ZlMmUzMS4uNWJlMTcwMjY2ZjQ1YjhiZjcyZWY1NmIxMDA4N2NiNTliYjU2ZGJh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQ
cm9jZXNzQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtQcm9jZXNzQ3VybC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3ND
cmVhdGkKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4g
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFsbG93
U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNl
cnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5nJiBob3N0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCmluZGV4IGQ0NzA5
YTVlNGFjOGEyZmI2YWNlYjU2YzU3ZWJmMGI1Yzc0MGQ0NTYuLmUxOGE0MzkwYjE4OGEyN2U5MzE4
YzUyNDA0NTVmMDY0Y2Y2YmQ2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xh
c3MgTmV0d29ya1Nlc3Npb25DdXJsIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUo
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3
b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgfQogICAgIE5ldHdvcmtTZXNz
aW9uQ3VybChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkN1cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NJT1MubW0KaW5kZXggMjM3NDUyODhhMDZkMDExNDU5MTk2OGI1MDg2ZGViNWY0NWFh
MGFjNi4uYzhiODZjNTExMTM3ZTM3NGVjMGJlMGMwZWI1YjNmZWI0ZjA5YmQxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0KQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvcigpCiB7CiAgICAgaWYgKCFtX3BheW1l
bnRDb29yZGluYXRvcikKLSAgICAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAgICAgIG1fcGF5
bWVudENvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9wYXltZW50Q29vcmRpbmF0b3I7CiB9CiAKQEAgLTgyLDcg
KzgyLDcgQEAgY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5
bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb24KIAogc3RkOjp1bmlxdWVfcHRyPFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYgY29vcmRpbmF0b3IsIFBLUGF5bWVudFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVy
Pihjb29yZGluYXRvciwgcmVxdWVzdCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1
dGhvcml6YXRpb25Db250cm9sbGVyPihjb29yZGluYXRvciwgcmVxdWVzdCk7CiB9CiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3Nh
Z2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5n
UmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4
IGQ0NmM1MDNkODFlOTgzNGU1ZDJhMjU2NjBjODcyM2VhZTdlMTcwZWMuLjRmYWNjODIxM2VmODUw
NWNmOWQ1NDhiMjNjNTY2ZGQzZDBiZTBhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTg5Nyw3
ICs4OTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkKICAgICBtX2Rv
d25sb2FkT3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJl
YW0ubGVha1JlZigpKSk7CiAKICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBtX3Nlc3Npb24t
Pm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93
bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1l
KCkpOworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1h
bmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgp
LCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2Fk
LmdldCgpOwogICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayht
X3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHIt
PmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcAppbmRleCA4M2MyZjI4ZWE1YzcwMzRkYWE3ZGI2NDYyMWI0NDRlZGQ1ZDk2YWY5Li43
YTc0ODFmN2Q0MjVmMDIzMzdhMGMxMGFkZjlkNjU0ZjcwZWM3ZGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNw
cApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpw
bGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9v
bCBpZ25vcmVUTFNFcnJvcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCmluZGV4IDMwZmM4YTUzNTVkMDg0NTJh
YzM2MWIxZGNlYTk3Yzg0ZjM2MDdmZWQuLjQwNzM2MWYwMzZlNzk4OTE3NjdkODA3ZmJiNjNjOTA0
NGIyNjBhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IE5ldHdvcmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNz
LCBwYXJhbWV0ZXJzKQotICAgICwgbV9uZXR3b3JrU2Vzc2lvbihzdGQ6Om1ha2VfdW5pcXVlPFNv
dXBOZXR3b3JrU2Vzc2lvbj4obV9zZXNzaW9uSUQpKQorICAgICwgbV9uZXR3b3JrU2Vzc2lvbiht
YWtlVW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lvbj4obV9zZXNzaW9uSUQpKQogewogICAgIGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiAgICAgQVNTRVJUKHN0
b3JhZ2VTZXNzaW9uKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29j
a2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtT
bwogICAgIHJlcXVlc3QudXBkYXRlU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UuZ2V0KCksIGJsb2JS
ZWdpc3RyeSgpKTsKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJ3c3MiKSkKICAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChzb3VwTWVzc2FnZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQi
LCBHX0NBTExCQUNLKHdlYlNvY2tldE1lc3NhZ2VOZXR3b3JrRXZlbnRDYWxsYmFjayksIG51bGxw
dHIpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWws
IHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1l
c3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmgKaW5kZXggZjllZjRiYjU0MzBiYmY3M2IwNGEwZTNiZWMyNDc5MjhkNTllNzE2Yi4uNDY2
YjI3ODJiZjkzYzc3MDcwZjc5N2RkMzY1MjM0Y2MxZGUzZmIxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvblNvdXAgZmluYWwgOiBwdWJsaWMgTmV0
d29ya1Nlc3Npb24gewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3Ms
IFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3Jr
U2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9
CiAgICAgTmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgfk5ldHdvcmtTZXNzaW9uU291cCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktp
dFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCmluZGV4IDZkZGM4MWEzNmQ4NDljYmMyODM3OTNi
NjE3MDY3YTI3ZTI5ZDkxZjAuLjg3NDUyNWUzOGNlNzA0ZWJlMWRhYTcxMGJiNTVjMDFjYzA1OGVh
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIHN0cnVjdCBBc3luY1JlYWRE
YXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQXN5bmNSZWFk
RGF0YShHUmVmUHRyPEdUYXNrPiYmIHRhc2ssIHZvaWQqIGJ1ZmZlciwgZ3NpemUgY291bnQpCiAg
ICAgICAgIDogdGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAsIGJ1ZmZlcihidWZmZXIpCkBA
IC0zOSw2ICs0MCw3IEBAIHN0cnVjdCBBc3luY1JlYWREYXRhIHsKIH07CiAKIHN0cnVjdCBfV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVByaXZhdGUgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICB1aW50NjRfdCBjb250ZW50TGVuZ3RoOwogICAgIHVpbnQ2NF90
IGJ5dGVzUmVjZWl2ZWQ7CiAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwpAQCAtOTksNyArMTAxLDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhHSW5w
dXRTdHJlYW0qIGlucHV0U3RyZWFtLCB2b2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5jUmVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNS
ZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7CisgICAgc3RyZWFtLT5wcml2
LT5wZW5kaW5nQXN5bmNSZWFkID0gbWFrZVVuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRh
c2spLCBidWZmZXIsIGNvdW50KTsKIH0KIAogc3RhdGljIGdzc2l6ZSB3ZWJraXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtUmVhZEZpbmlzaChHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNS
ZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCmluZGV4IGRhODc2MTEwNjQ4
MWY5NmE5ZDZhMDAwMTg0Y2NkMjQwN2IxZjI2NTAuLjVlZjdiNDhlNDIwODM5ZWVmODAwODExYjBk
OTc0MGY0NGUwMWYwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJTb2NrZXRUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiAKIGNsYXNzIFdlYlNvY2tldFRh
c2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNvY2tl
dFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBTb3VwU2Vzc2lvbiosIFNvdXBNZXNzYWdlKiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgfldlYlNvY2tldFRhc2soKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENs
aWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29j
a2V0Q2xpZW50LmgKaW5kZXggOGYyMDVjZTAyOTcxM2Q4YmEyMTNmMTQzYmE3MWJiMTE0NzUyZGVm
NS4uMjJhYmRlYzY5ZGIyNDVhNGNmOTgzZjI0N2IzOGY3MmQ5MDBhNmY1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29j
a2V0Q2xpZW50LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBO
ZXR3b3JrUlRDUHJvdmlkZXI7CiAKIGNsYXNzIExpYldlYlJUQ1NvY2tldENsaWVudCBmaW5hbCA6
IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgVURQLCBTZXJ2ZXJUQ1AsIENsaWVu
dFRDUCwgU2VydmVyQ29ubmVjdGlvblRDUCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmluZGV4
IGU3ODY1NjhmZjUwNWE3Yjg3MTc4NzBkZjU3ZmE1N2QxNWY1ZDc3NjMuLjkyNjY2OGMzOGZmZjcw
OGFlNTAyZjU4ZmQ0MTUyODgwM2VjNTU1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBAIC02
NCw2ICs2NCw3IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1l
cyhXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lCiB9CiAKIHN0cnVjdCBQZW5kaW5n
UmVnaXN0cmF0aW9uUmVxdWVzdCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0KFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIDogY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5l
Y3Rpb24pKQogICAgICAgICAsIHJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3RJZGVudGlmaWVyKQpA
QCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5T
TmFtZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgUEFMOjpTZXNzCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxQ
ZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdD4obWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpKSwgcmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHNlc3Npb25JRCk7CisgICAg
YXV0byBwZW5kaW5nUmVxdWVzdCA9IG1ha2VVbmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVl
c3Q+KG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVy
LCBXVEZNb3ZlKG5hbWUpLCBzZXNzaW9uSUQpOwogICAgIGF1dG8qIHJlY29yZCA9ICZwZW5kaW5n
UmVxdWVzdC0+cmVjb3JkOwogICAgIGF1dG8gZXJyb3IgPSBETlNTZXJ2aWNlUmVnaXN0ZXJSZWNv
cmQoc2VydmljZSwKICAgICAgICAgcmVjb3JkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCmluZGV4IDM1M2Vh
YzhjZTExYjY5MDZlZmFkZDJmZDI3MThiOTdhYjUyY2RhNGQuLmFiNzA2ZGMyZTkzNGE5YTdlZjk5
MjY4OTc5NzRiZGM3NTRlYTNkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAgdm9pZCBOZXR3b3JrUlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZygpCiB7CiAgICAgbV9pc1N0
YXJ0ZWQgPSB0cnVlOwogICAgIG1fcnRjUHJvdmlkZXIuY2FsbE9uUlRDTmV0d29ya1RocmVhZChb
dGhpc10oKSB7Ci0gICAgICAgIG1fbWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpCYXNp
Y05ldHdvcmtNYW5hZ2VyPigpOworICAgICAgICBtX21hbmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CiAgICAgICAgIG1f
bWFuYWdlci0+U2lnbmFsTmV0d29ya3NDaGFuZ2VkLmNvbm5lY3QodGhpcywgJk5ldHdvcmtSVENN
b25pdG9yOjpvbk5ldHdvcmtzQ2hhbmdlZCk7CiAgICAgICAgIG1fbWFuYWdlci0+U3RhcnRVcGRh
dGluZygpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTVhYzU3MjEzNzlkYjNk
MWIyNTg3NTU4NjEwMzBiYmE0ZGI5ZWI4ZS4uMTVkNDRkMGFkOWRiMGYzYjA1OTllMWEzM2VmY2Zk
Yjg5NjFhNjVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIE5ldHdv
cmtSVENQcm92aWRlcjo6TmV0d29ya1JUQ1Byb3ZpZGVyKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uCiAgICAgOiBtX2Nvbm5lY3Rpb24oJmNvbm5lY3Rpb24pCiAgICAg
LCBtX3J0Y01vbml0b3IoKnRoaXMpCiAgICAgLCBtX3J0Y05ldHdvcmtUaHJlYWQoY3JlYXRlVGhy
ZWFkKCkpCi0gICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJh
c2ljUGFja2V0U29ja2V0RmFjdG9yeT4obV9ydGNOZXR3b3JrVGhyZWFkLmdldCgpKSkKKyAgICAs
IG1fcGFja2V0U29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4obV9ydGNOZXR3b3JrVGhyZWFkLmdldCgp
KSkKIHsKICNpZiBkZWZpbmVkKE5ERUJVRykKICAgICBydGM6OkxvZ01lc3NhZ2U6OkxvZ1RvRGVi
dWcocnRjOjpMU19OT05FKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92
aWRlcjo6Y3JlYXRlU29ja2V0KHVpbnQ2NF90IGlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxy
dGM6OgogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhZGRTb2NrZXQo
aWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50
aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIHR5cGUpKTsKKyAgICBhZGRTb2NrZXQoaWRl
bnRpZmllciwgbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0
aGlzLCBXVEZNb3ZlKHNvY2tldCksIHR5cGUpKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlk
ZXI6OmNyZWF0ZVVEUFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBSVENOZXR3b3Jr
OjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQ
b3J0KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3
VENQQ29ubmVjdGlvbih1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDCiB7CiAgICAg
Y2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgbmV3Q29ubmVjdGlvblNv
Y2tldElkZW50aWZpZXJdKCkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1Bh
Y2tldFNvY2tldD4gc29ja2V0ID0gbV9wZW5kaW5nSW5jb21pbmdTb2NrZXRzLnRha2UobmV3Q29u
bmVjdGlvblNvY2tldElkZW50aWZpZXIpOwotICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwg
c3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlz
LCBXVEZNb3ZlKHNvY2tldCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyQ29u
bmVjdGlvblRDUCkpOworICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZTxM
aWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCks
IExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCkpOwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4
IDM4MzgyYjA5ZDRmYjNiZTI2NGY4OWI3Nzg0MWE0MWQ3YzA4Y2FjMDUuLmM1ZWY2ZDk5YTU2MGRk
MTQ4OGYxODQ5OTVhZThhN2IxNmQ5YWQyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNw
YXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoV29ya1F1ZXVlTWVzc2FnZVJlY2Vp
dmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVx
dWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQ
QyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBIYW5kIG9m
ZiBib3RoIHRoZSBkZWNvZGVyIGFuZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2Ug
cmVjZWl2ZXIuCiAgICAgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVz
c2FnZSgqdGhpcywgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2
b2lkIENvbm5lY3Rpb246Om1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2Fn
ZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNS
ZXF1ZXN0SUQpCiB7Ci0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVy
PihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBt
ZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+c2V0SXNTeW5jTWVzc2Fn
ZSh0cnVlKTsKIAogICAgIC8vIEVuY29kZSB0aGUgc3luYyByZXF1ZXN0IElELgpAQCAtNzU2LDcg
Kzc1Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZW5hYmxlSW5jb21pbmdNZXNzYWdlc1Rocm90dGxp
bmcoKQogICAgIGlmIChtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TWVzc2FnZXNUaHJvdHRsZXI+KCp0aGlzLCAmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01l
c3NhZ2VzKTsKKyAgICBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPE1l
c3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNz
YWdlcyk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6cG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29u
bmVjdGlvbldvcmtRdWV1ZSgpCkBAIC04NDMsNyArODQzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpk
aXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4o
IklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBs
eUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIs
IHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09ICJJUEMiICYmIGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBlZEFzeW5jTWVzc2Fn
ZUZvclRlc3RpbmciKSB7CiAgICAgICAgIGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxs
b3dlZEZvclRlc3RpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApp
bmRleCAyMGY1ZWM1YjIwMmJlYzJiZGY1OGYwMjBlYmRlZWY4MzE0OTMxMWJmLi5hZGM0YWFkOTg4
MThmYTA2YWZjNmJlODk2MTQ1ZDU2MzE1ODMyZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCkBAIC00MzMsNyArNDMzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5k
KFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlv
bj4KIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3Rl
ZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFQ6OnJl
Y2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2Rl
ciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVz
dGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwog
ICAgIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9u
cyk7CkBAIC00NDgsNyArNDQ4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVw
bHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QKIHsKICAgICBD
T01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBh
dXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7
CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNz
YWdlLmFyZ3VtZW50cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5k
ZXggY2NhMDczOTBhZGVjNDQ2ZGU3NDY2Y2Y4ZTEwMTIzYzI3OTM4NTM1Mi4uZmQ1MTcwMTcxMmIw
NjI5ZDQ3MjUyZDA0MDg5NmM2NGZjYmNiYjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
RGVjb2Rlcjo6dW53cmFwRm9yVGVzdGluZyhEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUod3JhcHBlZE1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEo
KSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4od3JhcHBlZE1lc3NhZ2UuZGF0YSgpLCB3
cmFwcGVkTWVzc2FnZS5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0K
IAogc3RhdGljIGlubGluZSBjb25zdCB1aW50OF90KiByb3VuZFVwVG9BbGlnbm1lbnQoY29uc3Qg
dWludDhfdCogcHRyLCB1bnNpZ25lZCBhbGlnbm1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXggODU0NTJjZGE3ZTA0NWU0NDU1ZTA3YjkzYmFmY2Ez
NWIxMDIwMDExZS4uYTc0OWFhYjg3MDA1NGNlYjY5MGU1ZjE0ZjQwNzU2M2ZmY2QwZjliOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMTgyLDcgKzE4
Miw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERl
Y29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYKICAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpB
c3luY1JlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwg
Y29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIkFz
eW5jUmVwbHkiLCBUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgMCk7CisgICAgICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIkFzeW5jUmVwbHkiLCBUOjphc3luY01lc3Nh
Z2VSZXBseU5hbWUoKSwgMCk7CiAgICAgICAgICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CiAgICAg
ICAgIFQ6OnNlbmQoV1RGTW92ZShlbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4u
Lik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApp
bmRleCAzZDZmMzQyODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2Li43NzE0NDhhNDRk
MDg4NmRkMDFiYjBjMmRlNjRkYzlhNDI4NjI3YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lc3NhZ2VTZW5k
ZXIgewogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2FnZSBp
cyBzeW5jISIpOwogCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5j
b2Rlcj4oVTo6cmVjZWl2ZXJOYW1lKCksIFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAg
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6cmVjZWl2ZXJOYW1lKCks
IFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShtZXNz
YWdlLmFyZ3VtZW50cygpKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShX
VEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KaW5kZXggMzcwMmFjYzdkZjUxYmQ4
NDZiOTNhZjY0YmYwNzBhNGMxMDAzOTE5Zi4uODdkZDI4ZjgwODY3ODJjZTJhM2RmNzkwZjRhYzBl
NmQ3NDlkYWI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29h
L0Nvbm5lY3Rpb25Db2NvYS5tbQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgICAgICA6
IG1feHBjQ29ubmVjdGlvbih4cGNDb25uZWN0aW9uKQogICAgICAgICAsIG1fd2F0Y2hkb2dUaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZzo6
d2F0Y2hkb2dUaW1lckZpcmVkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICwg
bV9hc3NlcnRpb24oc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlByb2Nlc3NBbmRVSUFzc2VydGlv
bj4oeHBjX2Nvbm5lY3Rpb25fZ2V0X3BpZChtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpLCAiQ29ubmVj
dGlvblRlcm1pbmF0aW9uV2F0Y2hkb2ciX3MsIFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tn
cm91bmQpKQorICAgICAgICAsIG1fYXNzZXJ0aW9uKG1ha2VVbmlxdWU8V2ViS2l0OjpQcm9jZXNz
QW5kVUlBc3NlcnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdl
dCgpKSwgIkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlv
blN0YXRlOjpCYWNrZ3JvdW5kKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgbV93YXRjaGRvZ1Rp
bWVyLnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDb25u
ZWN0aW9uOjpvcGVuKCkKICAgICAgICAgbV9pc0Nvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAog
ICAgICAgICAvLyBTZW5kIHRoZSBpbml0aWFsaXplIG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEg
c2VuZCByaWdodCBmb3IgdGhlIHNlcnZlciB0byB1c2UuCi0gICAgICAgIGF1dG8gZW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIs
IDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAi
SW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQ
b3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CiAKICAgICAgICAg
aW5pdGlhbGl6ZVNlbmRTb3VyY2UoKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90
KiBoZWFkZXIpCiAgICAgICAgIHVpbnQ4X3QqIGJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihoZWFkZXIgKyAxKTsKICAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gaGVhZGVyLT5tc2do
X3NpemUgLSBzaXplb2YobWFjaF9tc2dfaGVhZGVyX3QpOwogCi0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERlY29kZXI+KGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0
YWNobWVudD4geyB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4oYm9keSwg
Ym9keVNpemUsIG51bGxwdHIsIFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOwogICAgIH0KIAogICAg
IGJvb2wgbWVzc2FnZUJvZHlJc09PTCA9IGhlYWRlci0+bXNnaF9pZCA9PSBvdXRPZkxpbmVCb2R5
TWVzc2FnZUlEOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAg
ICAgICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzY3Jp
cHRvci0+b3V0X29mX2xpbmUuYWRkcmVzcyk7CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNp
emUgPSBkZXNjcmlwdG9yLT5vdXRfb2ZfbGluZS5zaXplOwogCi0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFtdKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgeworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBbXShjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpIHsKICAgICAgICAgICAgIHZtX2RlYWxsb2Nh
dGUobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KGJ1ZmZl
ciksIGxlbmd0aCk7CiAgICAgICAgIH0sIFdURk1vdmUoYXR0YWNobWVudHMpKTsKICAgICB9CkBA
IC00NTgsNyArNDU4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVN
ZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgIHVpbnQ4X3QqIG1l
c3NhZ2VCb2R5ID0gZGVzY3JpcHRvckRhdGE7CiAgICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6ZSA9
IGhlYWRlci0+bXNnaF9zaXplIC0gKGRlc2NyaXB0b3JEYXRhIC0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oaGVhZGVyKSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVy
PihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1l
bnRzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3Nh
Z2VCb2R5U2l6ZSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogfQogCiAvLyBUaGUg
cmVjZWl2ZSBidWZmZXIgc2l6ZSBzaG91bGQgYWx3YXlzIGluY2x1ZGUgdGhlIG1heGltdW0gdHJh
aWxlciBzaXplLgpAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNv
dXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBkZWNvZGVyLT5zZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8SW1w
b3J0YW5jZUFzc2VydGlvbj4oaGVhZGVyKSk7CisgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFz
c2VydGlvbihtYWtlVW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOwogI2VuZGlm
CiAKICAgICBpZiAoZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRl
Y29kZXItPm1lc3NhZ2VOYW1lKCkgPT0gIkluaXRpYWxpemVDb25uZWN0aW9uIikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRl
eCA2M2I2YmU3MjcxZTQ0NTg4Mzk1MDVhYTkxNWUzODczZjg1MTRkZWRkLi43N2FmOWIyODU4NDUy
NmJiNzBjN2ZmYzhlMzI1NmEzYmFhMTNhMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIGJv
b2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogICAgIGlmIChtZXNzYWdlSW5mby5pc0Jv
ZHlPdXRPZkxpbmUoKSkKICAgICAgICAgbWVzc2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihvb2xNZXNzYWdlQm9keS0+ZGF0YSgpKTsKIAotICAgIGF1dG8gZGVjb2RlciA9IHN0
ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXpl
KCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICBhdXRvIGRlY29kZXIgPSBt
YWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBu
dWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAKICAgICBwcm9jZXNzSW5jb21pbmdNZXNz
YWdlKFdURk1vdmUoZGVjb2RlcikpOwogCkBAIC00ODIsNyArNDgyLDcgQEAgYm9vbCBDb25uZWN0
aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09
IEVXT1VMREJMT0NLKSB7CiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBtX3BlbmRpbmdPdXRw
dXRNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxVbml4TWVzc2FnZT4oV1RGTW92ZShvdXRwdXRN
ZXNzYWdlKSk7CisgICAgICAgICAgICBtX3BlbmRpbmdPdXRwdXRNZXNzYWdlID0gbWFrZVVuaXF1
ZTxVbml4TWVzc2FnZT4oV1RGTW92ZShvdXRwdXRNZXNzYWdlKSk7CiAgICAgICAgICAgICBtX3dy
aXRlU29ja2V0TW9uaXRvci5zdGFydChtX3NvY2tldC5nZXQoKSwgR19JT19PVVQsIG1fY29ubmVj
dGlvblF1ZXVlLT5ydW5Mb29wKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIChHSU9Db25kaXRpb24gY29uZGl0aW9uKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgICAgICAg
ICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9fT1VUKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChtX3BlbmRpbmdPdXRwdXRNZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCA2NDBmNDUyOTllM2IyNjZlMDI2OWNjY2Nj
OTQ1MmIzYmE1NzllZmIxLi41YWRmZDgyYmVjYTQ2ZGIwMjQ0N2U4YmNiNmQzODRjMmMwMTU2YTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4u
Y3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVy
KCkKICAgICAgICAgaWYgKCFtX3JlYWRCdWZmZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAv
LyBXZSBoYXZlIGEgbWVzc2FnZSwgbGV0J3MgZGlzcGF0Y2ggaXQuCiAgICAgICAgICAgICBWZWN0
b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMoMCk7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1
ZmZlci5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICAgICAgICAg
IGF1dG8gZGVjb2RlciA9IG1ha2VVbmlxdWU8RGVjb2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwg
bV9yZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAg
ICAgICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaAppbmRleCBkZDJiNjZhN2NhMTk1OTFiNmVlNjdi
OGYyODRmZDI1NGEzODI3ODVkLi41NjgzNzIxM2RmYmVhZWI0ZDU5ZTkzYzNkNDlmNmM3YWMyZjUz
NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgX0dNb2R1bGUgR01vZHVsZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBNb2R1
bGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE1vZHVsZSk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTW9kdWxlKGNvbnN0IFN0cmluZyYg
cGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3Rp
bmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29u
dGV4dC5tbQppbmRleCA4MjMyZGI0ZWI1NmVhY2I2ZjhjZTg1NTY2NGI4Yjc4MmFiNjUwYTk4Li43
YWVlNDdlYWI5NWY1OGE2YjQxNzg1YzBmNGZmN2YwMmIwNGNmNDQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hY2hTZW5k
UmlnaHQmIHNlcnZlclBvcnQpCiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0
aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKIAogICAgIE5T
RGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7CiAgICAgICAgIGtDQUNvbnRleHRQb3J0TnVtYmVyIDog
QChzZXJ2ZXJQb3J0LnNlbmRSaWdodCgpKSwKQEAgLTUyLDcgKzUyLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBv
cnQoY29uc3QgTWEKICNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCiBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0
aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdD
b250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogICAgIGxheWVySG9z
dGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9m
UHJvY2VzczsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKQEAgLTgyLDcgKzgyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRl
eHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGkKICNpZiBQTEFU
Rk9STShNQUMpCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0
aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpCiB7Ci0g
ICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3Rp
bmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8
TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVy
SG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAgICAgbGF5ZXJI
b3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5l
Y3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgpIG9wdGlvbnM6QHsga0NBQ29udGV4dENJRmlsdGVy
QmVoYXZpb3IgOiBAImlnbm9yZSIgfV07CiAgICAgcmV0dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgKaW5kZXggOTdlMmRmMzUzYjM2ODIzOTI5YTMxYWU5NTdhMWRkY2RjMjFjMzdkNi4uYjk4
Y2E5NGJjOWVmYzIzYjJlZDgxOGE1Yjc4NDMzNzIzMTdlOWM2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApAQCAtNDksNyAr
NDksOCBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBXZWJQcm9jZXNzQ29ubmVjdGlv
bjsKIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIFBsdWdpbkNvbnRy
b2xsZXJQcm94eSA6IFBsdWdpbkNvbnRyb2xsZXIgeworY2xhc3MgUGx1Z2luQ29udHJvbGxlclBy
b3h5IDogcHVibGljIFBsdWdpbkNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsdWdpbkNvbnRyb2xsZXJQcm94eSk7CiAK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IDM2NmI5ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0
ODQ0MzUuLmNlODI2N2QyZWU3OGNhY2IzZGRhMGE5YjM3NWJmYWFmYzY4NmVlNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNw
cApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluCiAKIHZvaWQgV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKGNvbnN0IFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdh
bnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKQogewotICAgIGF1
dG8gcGx1Z2luQ29udHJvbGxlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5Db250cm9s
bGVyUHJveHk+KHRoaXMsIGNyZWF0aW9uUGFyYW1ldGVycyk7CisgICAgYXV0byBwbHVnaW5Db250
cm9sbGVyUHJveHkgPSBtYWtlVW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3Jl
YXRpb25QYXJhbWV0ZXJzKTsKIAogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29u
dHJvbGxlclByb3h5UHRyID0gcGx1Z2luQ29udHJvbGxlclByb3h5LmdldCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJVVJMLmgKaW5kZXggYmJkNDIzYmNmNTcxNWU0YWQ3MGJmNTJkZWY4YzJjMzBj
NDFiZjBmNi4uM2U2MWJiZDAwMGUxZjRjZGI2YzJhMzZjYTRmNzVlOTA0ZjgzNWNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElVUkwuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBVUkwgOiBwdWJs
aWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgQVNTRVJU
KGJhc2VVUkwpOwogICAgICAgICBiYXNlVVJMLT5wYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAg
ICAgIGF1dG8gYWJzb2x1dGVVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPigqYmFzZVVS
TC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0
ZVVSTCA9IG1ha2VVbmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwg
cmVsYXRpdmVVUkwpOwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJp
bmcgPSBhYnNvbHV0ZVVSTC0+c3RyaW5nKCk7CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQVBJOjpVUkwoV1RGTW92ZShhYnNvbHV0ZVVSTCksIGFic29sdXRlVVJMU3RyaW5nKSk7CkBA
IC0xMjEsNyArMTIxLDcgQEAgY2xhc3MgVVJMIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpU
eXBlOjpVUkw+IHsKICAgICB7CiAgICAgICAgIGlmIChtX3BhcnNlZFVSTCkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgbV9wYXJzZWRVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJM
PihXVEY6OlVSTCgpLCBtX3N0cmluZyk7CisgICAgICAgIG1fcGFyc2VkVVJMID0gbWFrZVVuaXF1
ZTxXVEY6OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOwogICAgIH0KIAogICAgIFdURjo6U3Ry
aW5nIG1fc3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbQppbmRleCAyNTkyODQ3ZTM0MWEzYjZmNzI4NzU0
YmQ3ODhhNjY1M2RkMjIxNWIwLi5kM2ZmNjIxZWMwZjRhMTBkNzU2NDg3Y2MyMTZmNDk1Y2U4NmQ3
MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2Jq
ZWN0SW52b2NhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVt
b3RlT2JqZWN0SW52b2NhdGlvbi5tbQpAQCAtODMsNyArODMsNyBAQCBib29sIFJlbW90ZU9iamVj
dEludm9jYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZU9iamVjdElu
dm9jYXRpbwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJsb2NrU2lnbmF0dXJlKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQubV9yZXBseUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlcGx5SW5mbz4ocmVwbHlJRCwgV1RGTW92ZShibG9ja1NpZ25hdHVy
ZSkpOworICAgICAgICByZXN1bHQubV9yZXBseUluZm8gPSBtYWtlVW5pcXVlPFJlcGx5SW5mbz4o
cmVwbHlJRCwgV1RGTW92ZShibG9ja1NpZ25hdHVyZSkpOwogICAgIH0KIAogICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IDY1ZGE5ZWZmMDFiNDNlYTU3MTA4MDJmNmM0NmE2
ZDAyMDI2NTY5M2UuLjQ4OTk3NjI5MzJiN2FmNjkyMjFkMDUwYWY2NzQ1ODM2ZmMzODdiMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RS
ZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkubW0KQEAgLTEwOSw3ICsxMDksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQ
YWdlOihXZWJLaXQ6OldlYlBhZ2UmKXBhZ2UKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7
CisgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9i
amVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTE5
LDcgKzExOSw3IEBAIC0gKGlkKV9pbml0V2l0aFdlYlBhZ2VQcm94eTooV2ViS2l0OjpXZWJQYWdl
UHJveHkmKXBhZ2UKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CisgICAgX3JlbW90ZU9i
amVjdFJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5Pihz
ZWxmLCBwYWdlKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIC0g
KHZvaWQpX3NlbmRJbnZvY2F0aW9uOihOU0ludm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFj
ZTooX1dLUmVtb3RlT2JqZWN0SW50CiAgICAgICAgIGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0
dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0
dXJuVHlwZSwgInYiKSkKICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRB
cmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJSZXR1cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQg
bXVzdCBiZSAndm9pZCcuICglcykiLCBzZWxfZ2V0TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07
CiAKLSAgICAgICAgcmVwbHlJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9i
amVjdEludm9jYXRpb246OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVw
bHlCbG9ja1NpZ25hdHVyZSk7CisgICAgICAgIHJlcGx5SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlm
aWVyKCksIHJlcGx5QmxvY2tTaWduYXR1cmUpOwogCiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGJs
b2NrIG9iamVjdCBzbyB3ZSB3b24ndCB0cnkgdG8gZW5jb2RlIGl0LgogICAgICAgICBpZCBudWxs
ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dl
YktpdENvbnRleHRNZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCmluZGV4IDdlZDExZTZjMTcxZTIwYmUxZTllYWRiMzA3
ZTcxZmM0OGJmZGU4NDkuLmZhZWZlZDJkY2M4MzhlZTk1NzM5MDY1ZGFjNjNmMTM1NjNmMGQzYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRN
ZW51SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29u
dGV4dE1lbnVJdGVtLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0q
IHdlYmtpdENvbnRleHRNZW51SXRlbUNyZWF0ZShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRh
JgogewogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01F
TlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIE5VTEwp
KTsKIAotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250
ZXh0TWVudUl0ZW1HbGliPihpdGVtRGF0YSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBt
YWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKICAgICBjb25zdCBW
ZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHN1Yk1lbnUgPSBpdGVtRGF0YS5zdWJtZW51
KCk7CiAgICAgaWYgKCFzdWJNZW51LmlzRW1wdHkoKSkKICAgICAgICAgd2Via2l0Q29udGV4dE1l
bnVJdGVtU2V0U3ViTWVudShpdGVtLCBhZG9wdEdSZWYod2Via2l0Q29udGV4dE1lbnVDcmVhdGUo
c3ViTWVudSkpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdl
YmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcoR3RrQWN0aW9uKiBhY3Rpb24pCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoR1RLX0lTX0FDVElPTihhY3Rpb24pLCBudWxscHRyKTsKIAogICAgIFdl
YktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVt
R2xpYj4oYWN0aW9uKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAt
MTY3LDcgKzE2Nyw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVu
dV9pdGVtX25ld19mcm9tX2dhY3Rpb24oR0FjdGlvbiogYWN0aW9uCiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoIXRhcmdldCB8fCBnX3ZhcmlhbnRfaXNfb2ZfdHlwZSh0YXJnZXQsIGdfYWN0aW9u
X2dldF9wYXJhbWV0ZXJfdHlwZShhY3Rpb24pKSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRDb250
ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJp
di0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFj
dGlvbiwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCksIHRhcmdldCk7CisgICAgaXRlbS0+cHJpdi0+
bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbiwgU3Ry
aW5nOjpmcm9tVVRGOChsYWJlbCksIHRhcmdldCk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAg
LTE5NCw3ICsxOTQsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21l
bnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24oV2ViS2l0Q29udAogCiAgICAgV2ViS2l0Q29u
dGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAgIENvbnRleHRN
ZW51SXRlbVR5cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVja2FibGUoYWN0
aW9uKSA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0ZW0tPnByaXYt
Pm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBl
LCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250
ZXh0TWVudUFjdGlvbkdldExhYmVsKGFjdGlvbikpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0
TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdl
dExhYmVsKGFjdGlvbikpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0yMTYsNyArMjE2LDcg
QEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zy
b21fc3RvY2tfYWN0aW9uX3dpdGhfbGFiZWwKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSog
aXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
Q09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5
cGUgPSB3ZWJraXRDb250ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2Fi
bGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4
dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkp
OworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0
ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24p
LCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTIz
OSw3ICsyMzksNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVf
aXRlbV9uZXdfd2l0aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhU
X01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51
bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxp
Y2F0aW9uVGFnLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVu
dUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENv
bnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkp
OwogICAgIGl0ZW0tPnByaXYtPnN1Yk1lbnUgPSBzdWJtZW51OwogICAgIHdlYmtpdENvbnRleHRN
ZW51U2V0UGFyZW50SXRlbShzdWJtZW51LCBpdGVtKTsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIFdl
YktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1
Ym1lbnUoY29uc3QgZ2NoYXIqIGxhCiBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250
ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKHZvaWQpCiB7CiAgICAgV2ViS2l0Q29udGV4dE1l
bnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1l
bnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBhcmF0
b3JUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOworICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBh
cmF0b3JUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOwogCiAgICAg
cmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCA1ZWQxNDNhOTk4NTkwNDk2
YzMzNzZhNTY5ODgxMTUzYTZhMDJiMjhjLi5mMzNjYWIzMDVmZWUxMjc0ZmFhN2IyMTgzOGU5YmI3
ZWY3NmJiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3Mg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2Vu
ZGVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk+CiAgICAgLCBwdWJsaWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IENsaWVu
dCB7CiAgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCA3YWQzMzMxNDUzOTE4ODg5ZmQzYjk4OTYzODZhOGJl
ZDFmNTE5YTE0Li4zOTE0YTRjMjAxNGE5YTU0YTYzNDg4YTRlNzQzODE5YzZhOGRiM2FmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFj
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBV
UkwmIG9yaWdpbmF0aW5nVVJMCiAKICAgICAgICAgQVNTRVJUKHZpZXdDb250cm9sbGVyKTsKIAot
ICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigq
cGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJv
bGxlcik7CisgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25Q
cmVzZW50ZXIgPSBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+
KCpwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdDb250
cm9sbGVyKTsKIAogICAgICAgICBBU1NFUlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3No
ZWV0V2luZG93KTsKICAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5k
b3cgPSBbTlNXaW5kb3cgd2luZG93V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJv
bGxlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCmluZGV4IDg2ZTc0NGMxMDhkZjRjYmNmNWQwNDc2
MDlhY2Y5NmM2ODIzZDZiMTYuLjRmODM3MDI0ZWU1ZjM0ZmZhMGU2OWJhZjdiM2JmYzg4MWE1Mjgw
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCkBAIC01NSw2ICs1NSw3IEBAIGVudW0gY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiA6IHVpbnQ4X3Q7CiB1c2luZyBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPjsK
IAogY2xhc3MgQXV0aGVudGljYXRpb25NYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8QXV0aGVudGljYXRpb25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRpb25NYW5hZ2VyKTsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBBdXRoZW50aWNhdGlvbk1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25D
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2Nv
YS5tbQppbmRleCA1NmE3ODNhMGIyM2IyNmEyMGM1YjhmYTRhNTlmMTU3YTRjMDM3YmI3Li4yZDVk
MWFmYzA4MjdhNDFhMGJkODNiYmFhODBmNzhmNjE0ZjViZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC0zOCw2ICsz
OCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUsIE9wdGlvbmFsPHBpZF90PiBwaWQgPSBXVEY6
Om51bGxvcHQpCiAgICAgewpAQCAtMTYwLDcgKzE2MSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxIYW5k
bGU+CiAgICAgICAgIHJldHVybiB7eyB9fTsKIAogICAgIEhhbmRsZSBoYW5kbGU7Ci0gICAgaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2FuZGJveEV4dGVuc2lv
bkltcGw+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgp
KSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24g
PSBtYWtlVW5pcXVlPFNhbmRib3hFeHRlbnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAg
ICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5jcHAKaW5kZXggMThkYzJmYjhlZDEzZDE1MzQxMmVhMzBlMjkxMTE3OGVhY2Vm
YzVhZS4uNzA0MzBmNDQzMTJjOGE1NjJjZTE1ZmM3MzJmNjlkMzg3NmZlOWMyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIFRl
eHR1cmVNYXBwZXJMYXllciYgdGV4bWFwTGF5ZXIoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllciYg
Y29tcG9zaXRpb25MYXllcikKIHsKICAgICBhdXRvJiBjb21wb3NpdGlvblN0YXRlID0gY29tcG9z
aXRpb25MYXllckltcGwoY29tcG9zaXRpb25MYXllcikuY29tcG9zaXRpb25TdGF0ZSgpOwogICAg
IGlmICghY29tcG9zaXRpb25TdGF0ZS5sYXllcikgewotICAgICAgICBjb21wb3NpdGlvblN0YXRl
LmxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAgICAg
IGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4o
KTsKICAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXllci0+c2V0SUQoY29tcG9zaXRpb25MYXll
ci5pZCgpKTsKICAgICB9CiAgICAgcmV0dXJuICpjb21wb3NpdGlvblN0YXRlLmxheWVyOwpAQCAt
NDE4LDcgKzQxOCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290
TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9y
b290TGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKKyAgICBt
X3Jvb3RMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOwogICAgIG1fcm9v
dExheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0RHJh
d3NDb250ZW50KGZhbHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludDNEKDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGNkM2U1N2M2YmNiOWQ4ZGMxZmY5OWNh
ZDU5YzRlMTNmZjY2MDNhNmIuLmJjYjIzNTk3NWIxMzNkMmUyNzY3NmQyODNmZTg5MTM4MWEwZDVk
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcApAQCAtNTMsNyArNTMsNyBAQCBSZWY8VGhyZWFkZWRDb21wb3NpdG9y
PiBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNw
bAogVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQs
IFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpDbGllbnQmIGRpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudCwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBJbnRTaXplJiB2
aWV3cG9ydFNpemUsIGZsb2F0IHNjYWxlRmFjdG9yLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdz
IHBhaW50RmxhZ3MpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3BhaW50RmxhZ3Mo
cGFpbnRGbGFncykKLSAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8
Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUoKTsgfSkpCisgICAg
LCBtX2NvbXBvc2l0aW5nUnVuTG9vcChtYWtlVW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3Ro
aXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgLCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJl
YWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgZGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCmluZGV4IDFhMDU0NzUwN2VjMWMx
YTgxMjQ3MmJiN2ViZDlmYTBkNGFkMTNhNDguLjA3ZThiYmM5YjVjOWMzYzZjOWQ4ZDZjM2I5NDVl
NTM5MzI3Yjg3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgTlBWYXJp
YW50RGF0YTsKIGNsYXNzIFBsdWdpbjsKIAogY2xhc3MgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAppbmRleCA2MWUxZjk0MDI1
MjM4NWRiODA1ZWMxMjJkZmYxYzllNGYxYjcyNTYzLi5kNGI1MjRjODI5ZWM2NjcyMWRmMWE3MGQy
ZDUxM2FlNGViM2YzZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05QUmVtb3RlT2JqZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE5QUmVtb3RlT2Jq
ZWN0TWFwOjpucE9iamVjdFByb3h5RGVzdHJveWVkKE5QT2JqZWN0KiBucE9iamVjdCkKIHVpbnQ2
NF90IE5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KE5QT2JqZWN0KiBucE9iamVj
dCwgUGx1Z2luKiBwbHVnaW4pCiB7CiAgICAgdWludDY0X3QgbnBPYmplY3RJRCA9IGdlbmVyYXRl
TlBPYmplY3RJRCgpOwotICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQobnBPYmplY3RJRCwg
c3RkOjptYWtlX3VuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcj4odGhpcywgcGx1Z2luLCBu
cE9iamVjdElELCBucE9iamVjdCkucmVsZWFzZSgpKTsKKyAgICBtX3JlZ2lzdGVyZWROUE9iamVj
dHMuc2V0KG5wT2JqZWN0SUQsIG1ha2VVbmlxdWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRo
aXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7CiAKICAgICByZXR1
cm4gbnBPYmplY3RJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5kZXggN2IwMmI1
ZTEyZjMyYzcyZDM4ZjUyMDQ1YmI2ZDZhMjNiNjJhZTJlMS4uMjYxZDdhODk2OTMwNmE4OTI1YzRh
YjM2ZTQ3OTQ3YjM5NmMxMjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKQEAgLTIw
Niw3ICsyMDYsNyBAQCBzdGF0aWMgYm9vbCBtb2R1bGVNaXhlc0d0a1N5bWJvbHMoTW9kdWxlKiBt
b2R1bGUpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQogewotICAgIG1f
bW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7CisgICAgbV9t
b2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obV9wbHVnaW5QYXRoKTsKICAgICBpZiAoIW1fbW9k
dWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24uaAppbmRleCBlYTJiZTkzMDhjYmJlNmRkN2ViOGNmMmM1ODhjOGZmNjE5ZWE5
OTNjLi45NTUxM2Y0Nzk4MmZkNjdlZTVmOThkZDc5OTZjODU5OGYxZjQ2M2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBFbmNvZGVy
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIExheWVy
Q2hhbmdlIHsKICAgICAgICAgTmFtZUNoYW5nZWQgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgMSwKQEAgLTk0LDYgKzk1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24g
ewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMgeworICAgICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVyQ3JlYXRpb25Q
cm9wZXJ0aWVzKCk7CiAKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7
CkBAIC0xMDksNiArMTExLDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewog
ICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0aWVzIHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllclByb3BlcnRpZXMoKTsKICAgICAg
ICAgTGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGllcyYgb3RoZXIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggMWYyZGU0ZDAzN2VhM2U4MzAyODdh
Yjk4Y2IyYThmMjFjNGVjZWEyZS4uMGQyMjdmZmMxZDljNTU1NmFhZDkyZTdlZTE1NzY1ZTE2YjM0
NDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTUyLDEzICsx
NTIsMTMgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5
ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGkKICAgICAvLyBGSVhNRTogTGF5ZXJQcm9w
ZXJ0aWVzIHNob3VsZG4ndCBiZSBjb3B5YWJsZTsgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9u
ZSBzaG91bGQgY29weSB0aGUgcmVsZXZhbnQgcHJvcGVydGllcy4KIAogICAgIGlmIChvdGhlci50
cmFuc2Zvcm0pCi0gICAgICAgIHRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOworICAgICAgICB0cmFuc2Zv
cm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJh
bnNmb3JtKTsKIAogICAgIGlmIChvdGhlci5zdWJsYXllclRyYW5zZm9ybSkKLSAgICAgICAgc3Vi
bGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOworICAgICAgICBzdWJsYXllclRyYW5z
Zm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5z
dWJsYXllclRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuZmlsdGVycykKLSAgICAgICAgZmls
dGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKm90aGVy
LmZpbHRlcnMpOworICAgICAgICBmaWx0ZXJzID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKQEAgLTM1NCw3ICszNTQsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgCi0gICAgICAgIHJlc3VsdC50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1
bHQudHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
dHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYg
U3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKSB7CkBAIC0zNjIsNyArMzYyLDcgQEAgYm9vbCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNm
b3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJh
bnNmb3JtKTsKKyAgICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBp
ZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgSGlkZGVuQ2hhbmdlZCkgewpAQCAtNDI1LDcg
KzQyNSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGll
czo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyb3VuZGVkUmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAot
ICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgICAgICByZXN1bHQuc2hhcGVS
b3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRl
ZFJlY3QpOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBTaGFw
ZVBhdGhDaGFuZ2VkKSB7CkBAIC00NzEsNyArNDcxLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0Zyb250QnVmZmVyKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGhhc0Zyb250QnVmZmVyKSB7Ci0gICAgICAg
ICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU+KG51bGxwdHIpOworICAgICAgICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBtYWtl
VW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPihudWxscHRyKTsKICAgICAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKmJhY2tpbmdTdG9yZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgCkBAIC00ODYsNyArNDg2LDcgQEAgYm9vbCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLAogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBGaWx0
ZXJzQ2hhbmdlZCkgewotICAgICAgICBhdXRvIGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7CisgICAgICAgIGF1dG8gZmlsdGVycyA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSgqZmlsdGVycykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJl
c3VsdC5maWx0ZXJzID0gV1RGTW92ZShmaWx0ZXJzKTsKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29s
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBSZW1vdGVMYXllclRyZWVUcgogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxM
YXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJQ
cm9wZXJ0aWVzPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJQcm9wZXJ0aWVzPiBs
YXllclByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPExheWVyUHJvcGVydGllcz4oKTsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSgqbGF5ZXJQcm9wZXJ0aWVzKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJh
bnNhY3Rpb24uY3BwCmluZGV4IDk3OGM0YmJlZDdiNWNkOTFjYWFlYzE1NGJjOGJhMTRiYWI3NTM0
NjEuLmU4MjZhMzBiMTJlMjRlY2Y0MzBjNjliNzZiMWE2ZjI4ZjViYjk4ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTUy
Miw3ICs1MjIsNyBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSho
YXNOZXdSb290Tm9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBtX3Njcm9s
bGluZ1N0YXRlVHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOwor
ICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+
KCk7CiAKICAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVzOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFzQ2hhbmdlZFByb3BlcnRpZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IGM3MzQ3Yzc5ZTY2OTM4Mzc4
NWQwNWQyMjllNDdiNzQ3YzFmMGNhNTUuLmIyY2Q0ODQ2Njc3Y2U5N2RmYWMyODU4NDkwYzFlYTQz
NGY5NjI5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJs
ZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFi
bGVCaXRtYXBDYWlyby5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewog
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlID0gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7
CiAgICAgUmVmUHRyPGNhaXJvX3Q+IGJpdG1hcENvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVh
dGUoaW1hZ2UuZ2V0KCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250
ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkp
OwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggOTJm
MTA2MmIyOTBmNzc1ZGI1YWU3ZWQxOTUyYTljYTg1OGFiMzEyMi4uMDE2YWJiZDk5M2UxOGE0NWMw
MWE3ZjA0OTdkY2MzMWE1M2I0MzcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1No
YXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkK
ICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwgMCwgbV9zaXpl
LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAx
LCAtMSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGJp
dG1hcENvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWlu
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKaW5kZXggNjBmOGYzY2I3MzI4
OWI2YjBkMmY0YzM1MTQ2ZjFjZmVkNDAzNGE4MC4uMTAwMWVlM2U1MjkyZWRjYjUzNmY4MjMzMDNj
MmM3NGMyYjFlOTI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJl
YWJsZUJpdG1hcERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hh
cmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KCkKIHsKICAgICBtX2JpdG1hcCA9IGNyZWF0ZURpcmVjdDJEU3VyZmFjZSgpOwogICAgIENPTVB0
cjxJRDJEMVJlbmRlclRhcmdldD4gYml0bWFwQ29udGV4dCA9IERpcmVjdDJEOjpjcmVhdGVSZW5k
ZXJUYXJnZXRGcm9tV0lDQml0bWFwKG1fYml0bWFwLmdldCgpKTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6
Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZh
Y3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaAppbmRleCAyOTk1ODEwOTVkZDFkMWIxNWFmZWFiYjRk
YWNiZWQwNWQyYmRkMTE0Li41NDVhN2JlNGQ0ODE5NzEzMjhkMWMzZjc5ZDI3MWVkOWEyMWY4Mzlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xp
ZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2Ug
QVBJIHsKIAogY2xhc3MgQXV0b21hdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXV0b21hdGlvbkNsaWVudCgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5oCmluZGV4IDI4ZmFmNjg3MTlhOWQ3MjhkNTFiNmM3NzJkODRlMTdiNjQ5MDk3
Y2EuLjJhZTJhNTAzNGMzYTQxNzFjY2Y0NzdiOTc4NWI3M2E2ZjI0ZGI4MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gQXV0b21hdGlvblNlc3Npb25Ccm93c2luZ0Nv
bnRleHRPcHRpb25zIDogdWludDE2X3QgewogfTsKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25D
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0g
Y2xhc3MgSmF2YVNjcmlwdERpYWxvZ1R5cGUgewogICAgICAgICBBbGVydCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggYWYx
MDljMWRmNjcwMGRjMjNlMmUzMzFiMGI1MGVmYmNmZjQyODY2Ny4uODE2ZjcxZTEyNjcwY2IzZDY1
YjFlNjMyODAzYTZiNDBlZjdkYmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgV2Vi
UGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db250
ZXh0TWVudUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggMGY4Y2Fi
OTczMjlmMDk1N2YzMmI0N2MyNzc4MWQxZTc4NmZhMTQ3ZC4uOGI0NGEzZjQ1NmM1MzJhZDMzODA2
ZWY2OWI0N2VhZDA5NDFkZjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApAQCAtMzgsNiAr
MzgsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3Mg
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0
aWNMb2dnaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQuaAppbmRleCA5MmIyZDY3NWRmY2EyY2FmZGEyMTFiM2Y3MWM1Nzk4
YWZkNDVkNjJhLi5iNGUyYWRlNzI5ZWE2NmQ4ZGRhOGRkNTAyMTE4YWU0YWJkYjIxODYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIERp
Y3Rpb25hcnk7CiAKIGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3du
bG9hZENsaWVudC5oCmluZGV4IDAyMzc2ZTFlMTEwZDQ3NmViMmI5MTg1ZTRlMmZjZDhkNmUxMzMy
ZTEuLmIyZWFjYzliODMyNTk4YjE3YTk5ZGJkOWQ2N2VmMjRlNDczYWVkMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00Niw2ICs0
Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CiBuYW1lc3BhY2Ug
QVBJIHsKIAogY2xhc3MgRG93bmxvYWRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCmluZGV4IGYzMTIzYWYxOTUx
NjVhNjY5ZDY2NjgzMThiODEyZTkzMzY1ZTZkYzIuLjZkMWUzYjIxMWZlMGRkOTVhOTQ4NTA1ODQx
N2RiNGRlMDgyNDBkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElGaW5kQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRD
bGllbnQuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2Ug
QVBJIHsKIAogY2xhc3MgRmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZENsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCmluZGV4IGM2ZjQ1
NzM0MmQxMTE5MDFkY2E2ZDNjMzA5MDMzN2ZlZTdhMWZlYzIuLmZhZTFkY2QzY2Q2ODgzNTA3ZWZi
ZTNkOTVkNWQ2ZjcyYTAzNjlkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYlBh
Z2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZE1h
dGNoZXNDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUZvcm1DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3Jt
Q2xpZW50LmgKaW5kZXggNWIwYzZjY2EyNGVlZmMxYTk1ODE5MWUwZTI3OTRhNDdiNGY1NGU3Yy4u
ZjBjYTA2MDExMTk4MDJlZDM2OWI0ZDA3OGQ4M2M4NjJhNTE2MTJkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBGb3JtQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Gb3JtQ2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2Ny
ZWVuQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNs
aWVudC5oCmluZGV4IDEzNzU1MjljZGEyNWYyNWNiYjE3OWJkYzg5ODkxNzFjODllZTg4NTcuLjg5
NzRjZDEzMzk0Nzc1MDI3M2Y0NTBmMGU4Mzk2YzBlNmIxMzIwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaApAQCAtMzIsNiArMzIs
NyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRnVsbHNj
cmVlbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZW51bSBUeXBlIHsKICAgICAgICAgQVBJVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDUyNjZiYzJjYTU0Y2Yw
OTljMjM4Y2FjYzYyMTQ0Yzk3OTlhMDk3OTcuLjdjNmY1NjI5Y2I2MGU1M2JjN2I4NWFhODg4OWY3
MmU2OGQ3YTRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElH
ZW9sb2NhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBHZW9sb2NhdGlvblBy
b3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5HZW9sb2NhdGlvblByb3ZpZGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggOTgxYTk4NWJiZGU1ZjFj
YjY1Zjk2Y2JiMjEzOWZiY2YxOWQ3ZGNlNS4uZTEyMmVlM2VkYjFjNDIxOWQxZDg0MTk5MzIxYTgw
MDNkNTJjODIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEhUVFBDb29raWVTdG9y
ZTo6cmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCiAKICAgICBBU1NFUlQoIW1f
b2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHkpOwogCi0gICAgbV9jb29raWVNYW5hZ2VyUHJveHlP
YnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2
ZXI+KCp0aGlzKTsKKyAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0gbWFrZVVuaXF1
ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRoaXMpOwogCiAgICAgYXV0byog
cG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVy
YXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElI
aXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNs
aWVudC5oCmluZGV4IGZjZjQ2MDYxZjZiZmE2ZGNiNzYwZTEyYzY2MzNiNmI0NWYxNTZkZDQuLjEx
ODRhYTQzMmMzYjlmZmNiMTVkYTVmODI4ZWY0YWM0ZjFhZGIxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBz
dHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBI
aXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5IaXN0b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaAppbmRleCBlYTllYmE1MGUxZWZl
OGYwMzIxYzRkZmUzYTQ0NmYwZGNiYjVkOGM5Li5iZTQzYWVlYzU0ZmYyZDRhYmI1YTI4ZmYzNjMx
NDVjNDkwYzdlODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SWNvbkRhdGFiYXNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUljb25EYXRhYmFzZUNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIFdlYkljb25EYXRh
YmFzZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJY29uRGF0YWJhc2VDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25EYXRh
YmFzZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4IDZmOWU3YWY5Yzk4MDkyMzNiNmE1NjVlYzNlMzgw
YmUwYWFjZDU2N2UuLjJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVu
dC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25Mb2FkaW5nQ2xpZW50KCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xp
ZW50LmgKaW5kZXggYzM1ZTdiM2FlNDkzZDlhYzYzY2IzYTRiNTgxZmUzMmZjYjQwYWNlOC4uOWQ0
MzQ4OWEyZDYyNTdjYjBjYWY5MjJiM2ZiMDkzMjk1Y2U5YmI5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTM3
LDYgKzM3LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ2xpZW50KCkgPSBkZWZhdWx0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oCmluZGV4IGNiYjllMGE5NzE0NWJkMTdkZGVmOGUwYmIxNGFm
OGMzNzZkZmIzODguLmRiNWQ5MGMzMWY5Mjc2OWQzMDNhMDFhZDc4YmRhN2ZiZDFhNGQwMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlz
dG9yeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5MZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5kZXggMzQ4ZDZiZjc3MjkyNzJl
OGYyYWJhZWMzNzU1YzIwZGU1NDJkNjQ1ZC4uYjJlYTQxZDllMmYyZTgxZTJjOWViM2I4Nzc5MWZj
M2VmOGMzZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJD
bGllbnQuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgT2JqZWN0
OwogCiBjbGFzcyBMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRlckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oCmluZGV4IGE2ZTAxOWNjNDUxODYzYTQxYWNmYzhiZWE3YmYzMDI4OTZiMWJiNzMuLmNkMjJh
MjY3NjQ2OGQxODIzNGE2MDg0MmZlOWQ5MTY3MWIyMGE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNzMsNiArNzMsNyBA
QCBjbGFzcyBOYXZpZ2F0aW9uUmVzcG9uc2U7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIE5hdmln
YXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfk5hdmlnYXRpb25DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCmluZGV4IDVlYmU0NDA3NDJhNzY1NDFiMWQ5Y2Nm
Mjk5NWM5YTk1ZmU4NGQ1YWQuLjZhZThlNzUyMDVmZmZjODY1MmY0ZjliODNiYjNkZTMwZWU2Y2Zh
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgK
QEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNz
IFBvbGljeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+UG9saWN5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggZDlkZDBkYjQ2NjM3NzIyYjYwMmIyMGRkZGY2NzM4MTM1
ZjY0NmY2Mi4uNzcyZGE2ZTVhODY5NzdlYzhhZTJkYzA3NTQyZDhmY2YxZTE0OTYxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTcxLDYgKzcxLDcgQEAg
Y2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFz
cyBVSUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+VUlDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKaW5kZXggYWZjZTcwYjYyN2ZlZWY3YjViZjg4Mjg5YWQ4MjJmMTljMTlj
ZGI2Zi4uM2QwMTYxMWMwMjlmOTNmNWNlM2U1ZWIzZTMwNjQ3NDg4OWFiOGYzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBX
S0NvbnRleHRDbGllbnRCYXNlKiB3a0NsCiAKIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4
dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpX
ZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2Vi
S2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29u
c3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTU2LDcgKzE1Niw3
IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsCiAgICAgfTsKIAogICAgIFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sID0gKldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpOwotICAg
IHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q2xp
ZW50Pih3a0NsaWVudCkpOworICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGllbnQobWFrZVVu
aXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOwogCiAgICAgYm9vbCBhZGRzVmlzaXRlZExp
bmtzID0gcHJvY2Vzc1Bvb2wuaGlzdG9yeUNsaWVudCgpLmFkZHNWaXNpdGVkTGlua3MoKTsKIApA
QCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkCiAgICAgICAgIH0KICAg
ICB9OwogCi0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxv
YWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNs
aWVudEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDExYjgzNGI0ZWUyYTlhNjg3NjI2
YzczMmJmNThhNDg4MjNmNjMzNGEuLjg4OGI3NWJjN2NlYzg5ZDE2ZTA3ZjYxN2U3YmIyY2UyOTc5
ZmE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9j
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dl
b2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tHZW9sb2Nh
dGlvbk1hbmFnZXJHZXRUeXBlSUQoKQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJv
dmlkZXIoV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBjb25z
dCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChn
ZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkdl
b2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAgICB0b0ltcGwoZ2VvbG9jYXRpb25N
YW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVy
Pih3a1Byb3ZpZGVyKSk7CiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRp
ZENoYW5nZVBvc2l0aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdl
clJlZiwgV0tHZW9sb2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAK
aW5kZXggYjIyM2Q2Zjg3YmZhNWU5NmUzZTUwZGEyZGQ3OGZmMGQyZGQ0MTZjZS4uNzY5MjM5OTBh
YjViOWVhMjEzODVmMWQzNTY5ZThiNTBhYTdmNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIFdLVHlwZUlEIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZv
aWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3Zp
ZGVyKQogewotICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOworICAgIHRvSW1wbCht
YW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRl
cj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVy
RGlkU2hvd05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwg
dWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAppbmRleCA0N2VjNzI2YjBjZTQ0MDU3ZjAwMmI1NDBiZWE3NjhlNDNiMTBhOGQ0Li42
MWE2OWIxZjNhNmRhNzQ5NmFkNDcyNjk3MGI4NWYyYzkxMTgxM2Y1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
Q29udGV4dE1lbnVDbAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+
c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4o
d2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KG1h
a2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpAQCAtOTU3LDcg
Kzk1Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZURp
YWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChtYWtlVW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50
KQpAQCAtOTk1LDcgKzk5NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAgICAgICAgIH0K
ICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8RmluZENsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZp
bmRDbGllbnQobWFrZVVuaXF1ZTxGaW5kQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdL
UGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTEwMzgsNyArMTAzOCw3IEBA
IHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRNYXRj
aGVzQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNo
ZXNDbGllbnQobWFrZVVuaXF1ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAog
dm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDQ4
LDcgKzEwNDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudChXS1Bh
Z2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRCdQogCiB2b2lkIFdLUGFnZVNldFBh
Z2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFz
ZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8V2ViRm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwog
fQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTE5OSw3ICsxMTk5LDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogCiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJv
eHkgPSB0b0ltcGwocGFnZVJlZik7CiAKLSAgICBhdXRvIGxvYWRlckNsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TG9hZGVyQ2xpZW50Pih3a0NsaWVudCk7CisgICAgYXV0byBsb2FkZXJDbGllbnQg
PSBtYWtlVW5pcXVlPExvYWRlckNsaWVudD4od2tDbGllbnQpOwogCiAgICAgLy8gSXQgd291bGQg
YmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQgdHJhbnNpdGlvbiBhbGwgY2xpZW50
cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVhZCBvZgogICAgIC8vIGRpZEZpcnN0TGF5b3V0SW5G
cmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4gdGhlIG1l
YW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGlj
eUNsaWVudEJhc2UqCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRQb2xpY3lDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQobWFrZVVuaXF1ZTxQb2xpY3lD
bGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjA3NSw3ICsy
MDc1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgfQogICAgIH07CiAKLSAg
ICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+
KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVl
PFVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9u
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFz
ZSogd2tDbGllbnQpCkBAIC0yMjkzLDE2NCArMjI5MywxNjYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
TmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlv
bkNsaWUKICAgICB3ZWJQYWdlUHJveHktPnNldE5hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJl
ZjxOYXZpZ2F0aW9uQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCi12b2lkIFdLUGFnZVNldFBhZ2VT
dGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQp
Ci17Ci0gICAgY2xhc3MgU3RhdGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQ
YWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRl
Q2xpZW50QmFzZSogY2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNs
aWVudCk7Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VJ
c0xvYWRpbmcoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LndpbGxDaGFuZ2VJc0xvYWRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9CitjbGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVu
dDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFN0
YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQorICAgIHsKKyAg
ICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOworICAgIH0KK3ByaXZhdGU6CisgICAgdm9pZCB3aWxs
Q2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQu
d2lsbENoYW5nZUlzTG9hZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGll
bnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0K
IAotICAgICAgICB2b2lkIGRpZENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VJ
c0xvYWRpbmcoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFu
Z2VJc0xvYWRpbmcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENo
YW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAg
ICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3Zl
cnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VUaXRs
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFu
Z2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBk
aWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZENoYW5nZVRpdGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRD
aGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2
b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJM
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUFjdGl2
ZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFj
dGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJMKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTCht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFu
Z2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2Vj
dXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9p
ZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29u
dGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRp
ZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5
U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAg
dm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29u
dGVudChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdp
bGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQ
cm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3
aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUVzdGlt
YXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0
ZWRQcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2sp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5n
ZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9p
ZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9j
bGllbnQud2lsbENoYW5nZUNhbkdvQmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdv
QmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRD
aGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRDaGFuZ2VDYW5Hb0JhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50
LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAot
ICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdv
Rm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3
aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9j
bGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29G
b3J3YXJkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVx
dWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVl
c3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAg
dm9pZCB3aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dy
ZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0
d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0K
IAotICAgICAgICB2b2lkIGRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZU5ldHdv
cmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVx
dWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VD
ZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlm
aWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZUNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGll
bnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNh
dGVJbmZvKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFu
Z2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJv
Y2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJv
Y2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIGRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jl
c3BvbnNpdmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vz
c0lzUmVzcG9uc2l2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlk
Q2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlBy
b2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgfTsKKyAg
ICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgfQorfTsKKwordm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVm
IHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQorewogICAgIGlmIChjbGllbnQp
Ci0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOworICAgICAgICB0b0ltcGwocGFnZSktPnNl
dFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsK
ICAgICBlbHNlCiAgICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVy
KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
bWFjL1dLUGFnZVByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9t
YWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQppbmRleCBmNzYzYWY2MDAzZGE0NjY3MzYzMWU5MWVhODFi
ODNiNWM5N2EwODdkLi4zNWVmOTIyMTU0ZTE5NjMwMGU0YjZlZTc1ZDRjOTgxNzg1YmMzZTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJp
dmF0ZU1hYy5tbQpAQCAtNTIsNyArNTIsNyBAQCAtIChpZClpbml0V2l0aFBhZ2U6KFJlZlB0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4mJilwYWdlCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBf
cGFnZSA9IFdURk1vdmUocGFnZSk7Ci0gICAgX29ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsKKyAgICBfb2JzZXJ2
ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmLCBAIlVS
TCIpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKl9vYnNlcnZlcik7
CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL3dwZS9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3Bl
L1dLVmlldy5jcHAKaW5kZXggNzhiYmEzOTY3YjYxOTdjMGU4YTdjMjNhYzNkYThjZDEzMmU3YzRi
ZS4uOTY0MDZkMGFhZmJjMzU1NTYwYjVkMzE5N2EwMGMyNWY1NzU5YTNmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKQEAgLTY4LDUgKzY4LDUgQEAg
dm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3LCBjb25zdCBXS1ZpZXdDbGll
bnRCYXNlKiBjbGllbnQpCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHZpZXcpLT5z
ZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsKKyAgICB0b0lt
cGwodmlldyktPnNldENsaWVudChtYWtlVW5pcXVlPFZpZXdDbGllbnQ+KGNsaWVudCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggMjY1NTU0ZjNkN2YyZDdhZDI5NmU5
ZjNmOWZhMTEzODhiNzhmZDU2NC4uNDk2Nzc4OGExMDU3ZmE4ODJhMGEwMWM4ZGJmNTAwMmU5MjI2
ZWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MDIsNyArNjAyLDcg
QEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFBhZ2VSZWY6KFdLUGFnZVJlZilwYWdlUmVmCiAK
ICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgX3BhZ2VMb2FkU3Rh
dGVPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2
ZXI+KHNlbGYpOworICAgIF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktp
dDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0
ZSgpLmFkZE9ic2VydmVyKCpfcGFnZUxvYWRTdGF0ZU9ic2VydmVyKTsKIAogICAgIEFTU0VSVCgh
YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcCgpLmNvbnRhaW5zKF9wYWdlLmdldCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW0KaW5kZXggMTM3MmNhNDEwNmM3NmUxZDYyMzVkNjE0YWQ1YzFlNmE1NmVhMDVhMS4u
ODFkMzcwM2IwZWVhODJlNWU2YzYyZjMyMjJhYzRlNjgxOWY2YjNhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpA
QCAtMTA4LDcgKzEwOCw3IEBAIC0gKHZvaWQpYWRkT2JzZXJ2ZXI6KGlkPFdLSFRUUENvb2tpZVN0
b3JlT2JzZXJ2ZXI+KW9ic2VydmVyCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIpOworICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2Vy
dmVyKTsKICAgICBfY29va2llU3RvcmUtPnJlZ2lzdGVyT2JzZXJ2ZXIoKnJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGJhY2U1YWM3ZWMwMGIxODk4YWQyZGY3MmNiMWIxOTQ0
NjdkY2VjOWQuLmViYWM1NjhlM2RkYjY4NzBmODViMDE1MDhlYzIwZmFhYjdmMjA0ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CkBAIC0zNzMsNyArMzczLDcgQEAgLSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9h
ZERlbGVnYXRlCiAtICh2b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWRE
ZWxlZ2F0ZT4pZG93bmxvYWREZWxlZ2F0ZQogewogICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93
bmxvYWREZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwor
ICAgIF9wcm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRv
d25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CiB9CiAKIC0gKGlkIDxfV0tBdXRvbWF0
aW9uRGVsZWdhdGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKQEAgLTM4NCw3ICszODQsNyBAQCAtIChp
ZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCiAtICh2b2lkKV9z
ZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KWF1dG9tYXRp
b25EZWxlZ2F0ZQogewogICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUgPSBhdXRvbWF0aW9uRGVsZWdh
dGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsK
KyAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxlZ2F0ZSkpOwogfQogCiAtICh2
b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA4YjZk
ZjI0Zjg5NTJkODRmNjA3NTQ0YzZhMzFhMmRkMWI4YWEzNTVkLi5hMDBiMjAzY2M5MDU5MzAxYmVj
YzQ2MWQ2MWI0NjczMmI4NTYxMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0xMTgs
NiArMTE4LDcgQEAgLSAodm9pZClyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzCiB9CiAKIGNsYXNz
IFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlKFdLVXNlckNvbnRl
bnRDb250cm9sbGVyICpjb250cm9sbGVyLCBpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFu
ZGxlciwgTlNTdHJpbmcgKm5hbWUpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIp
CkBAIC0xNDUsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAogLSAodm9pZClhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVy
IG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFt
ZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvIGhhbmRs
ZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxT
Y3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwg
bmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAg
aWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcihoYW5kbGVyLmdldCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFtZV07
CiB9CkBAIC0yMjksNyArMjMwLDcgQEAgLSAodm9pZClfcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRz
QXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFcKIAogLSAodm9p
ZClfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilz
Y3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUgdXNlckNvbnRlbnRXb3Js
ZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQKIHsKLSAgICBhdXRvIGhh
bmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdl
SGFuZGxlciwgbmFtZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3Js
ZCk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2Ny
aXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJD
b250ZW50V29ybGQpOwogICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRV
c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRv
IGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVh
ZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDM5MWExOTkyZTM1MzJkYmU1ZjIxZGI2OTFkZDgxMDhh
YWUyYTY2Yy4uMDhmNDJlYzhiMTNiZjcwYmQyYjZiMzdiYzdkODE1NjgyM2Q2YzZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03NTcs
NyArNzU3LDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCi0gICAgX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNl
bGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJhdGlvbi5jb3B5UmVmKCkpOworICAg
IF9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9j
ZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsKICAgICBfcGFnZSA9ICZfaW1w
bC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNldEF1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudElu
c2V0cyh0cnVlKTsKQEAgLTc2OSwxNCArNzY5LDE0IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIAog
ICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KGNvbmZpZ3Vy
YXRpb24uX2FwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpOwogCi0gICAgX25hdmln
YXRpb25TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNl
bGYpOworICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlPihzZWxmKTsKICAgICBfcGFnZS0+c2V0TmF2aWdhdGlvbkNsaWVudChfbmF2aWdhdGlv
blN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkpOwogCi0gICAgX3VpRGVsZWdhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7Ci0gICAgX3BhZ2UtPnNl
dEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsK
LSAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CisgICAgX3VpRGVsZWdhdGUg
PSBtYWtlVW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7CisgICAgX3BhZ2UtPnNldEZp
bmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFn
ZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAKLSAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKKyAgICBf
aWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVn
YXRlPihzZWxmKTsKIAogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IFlFUzsKIApAQCAtMzQyNSw3
ICszNDI1LDcgQEAgLSAodm9pZClzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJl
czooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb24KICAgICBfYWxsb3dzQmFja0Zvcndh
cmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJl
czsKIAogICAgIGlmIChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyAmJiAhX2dl
c3R1cmVDb250cm9sbGVyKSB7Ci0gICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAgICAg
IF9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI+KCpfcGFnZSk7CiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+aW5zdGFsbFN3aXBl
SGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7CiAgICAgICAgIGlmIChXS1dlYlZpZXcg
KmFsdGVybmF0ZVdlYlZpZXcgPSBbX2NvbmZpZ3VyYXRpb24gX2FsdGVybmF0ZVdlYlZpZXdGb3JO
YXZpZ2F0aW9uR2VzdHVyZXNdKQogICAgICAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyLT5zZXRB
bHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdlKGFsdGVybmF0ZVdlYlZpZXctPl9wYWdl
LmdldCgpKTsKQEAgLTU2NzgsNyArNTY3OCw3IEBAIC0gKHZvaWQpX3NldElucHV0RGVsZWdhdGU6
KGlkIDxfV0tJbnB1dERlbGVnYXRlPilpbnB1dERlbGVnYXRlCiAgICAgfTsKIAogICAgIGlmIChp
bnB1dERlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobWFr
ZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0
Rm9ybUNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQppbmRleCA3YWQwNzNiOGNk
NmRkNDIwM2UxYTc2MDU4ZjdjN2RmMmE5ZjhhZDdiLi4yYWRlZWE3NjBjNjk4YjE4YWU1OTFlNTcw
NTcxMzI5NWYyNGM1NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCkBAIC03Miw3ICs3Miw3IEBAIC0g
KGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQogLSAodm9pZClzZXRE
ZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAg
ICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxlZ2F0
ZSA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVs
ZWdhdGUpIDogbnVsbHB0cik7CisgICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IG1h
a2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVs
bHB0cik7CiB9CiAKIC0gKE5TU3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCBiMzdiMDUwNTNmMTI0YWNi
NzBmZDZhZGU2ZGY0MjBmZTgyNWQ1NGNmLi4wZGQ0MDlhNDNkZTY1MzAwYzlmMGNjODU0NDdhYzJm
NzEzZWM5NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
Lm1tCkBAIC0zOCw2ICszOCw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBf
V0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCBmaW5hbCA6IHB1YmxpYyBSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQoX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCiAgICAgICAgIDogbV9jb250cm9sbGVy
KGNvbnRyb2xsZXIpCkBAIC03NSw3ICs3Niw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAg
ICAgIHJldHVybiBuaWw7CiAKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0gV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKCk7Ci0gICAgbV9yZW1vdGVJbnNwZWN0b3JD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlDbGllbnQ+KHNlbGYpOworICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1
ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKICAgICBt
X3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0b3JDbGllbnQu
Z2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA4ZDJmODhhZTAwMzJhMGQ5MzQ1ZTY4
MDBhOTc4NThiNDI4YTRkNmQ5Li4wNjg3MGQyMWRlZTdjYTRmODlkYjllMzQyZjZmMGY1ZmQzZjU0
YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3IEBAIGlubGluZSB2b2lkIHJlYWR5U1FMaXRlU3Rh
dGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIFNRCiAg
ICAgICAgIHN0YXRlbWVudCA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghc3RhdGVtZW50KSB7
Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50Pihk
Yiwgc3RyKTsKKyAgICAgICAgc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+
KGRiLCBzdHIpOwogICAgICAgICBpZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
KQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQcmVwYXJpbmcgc3RhdGVtZW50ICVzIGZhaWxlZCIs
IHN0ci5hc2NpaSgpLmRhdGEoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAppbmRleCBiYWJkOGE5ODI5ZmI4MGQxOTg1MmVjOTc0
YWVlYTcwY2VlMGI5MTU4Li44YThjYWJiZDUzYzFlNjVmNzBhZGQwODVkNGY1NWVhMzEwMTE2MDk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
aApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgSWNvbkRhdGFiYXNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JY29uRGF0YWJhc2VDbGllbnQoKSA9IGRlZmF1
bHQ7CiAKQEAgLTU4LDYgKzU5LDcgQEAgY2xhc3MgSWNvbkRhdGFiYXNlIHsKIAogcHJpdmF0ZToK
ICAgICBjbGFzcyBJY29uU25hcHNob3QgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAgICAgICAgIEljb25TbmFwc2hvdCgpID0gZGVmYXVsdDsKIApAQCAt
MTE4LDYgKzEyMCw3IEBAIGNsYXNzIEljb25EYXRhYmFzZSB7CiAgICAgfTsKIAogICAgIGNsYXNz
IFBhZ2VVUkxTbmFwc2hvdCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKICAgICAgICAgUGFnZVVSTFNuYXBzaG90KCkgPSBkZWZhdWx0OwogCkBAIC0xNzIs
NiArMTc1LDcgQEAgY2xhc3MgSWNvbkRhdGFiYXNlIHsKICAgICB9OwogCiAgICAgY2xhc3MgTWFp
blRocmVhZE5vdGlmaWVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgogICAgICAgICBNYWluVGhyZWFkTm90aWZpZXIoKQogICAgICAgICAgICAgOiBtX3Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1haW5UaHJlYWROb3RpZmllcjo6dGltZXJGaXJl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1
dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBkMmFmNjRiYWQ4NmE4YTMzZjEzMzU0NzI1
ODFiNzAyZTQxYTY3ZWMyLi4yMTg2NjA0NTE5Mjc2OWJlNmRmZjg1OWE2MzIwNDNkNTEzNTY5YzE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBndWlu
dCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiwgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbiwgR19UWVBFX09C
SkVDVCkKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJ
OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoV2ViS2l0QXV0
b21hdGlvblNlc3Npb24qIHNlc3Npb24pCiAgICAgICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCkBA
IC0yMjMsNyArMjI0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0QXV0b21hdGlvblNlc3Npb25Db25z
dHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uID0g
YWRvcHRSZWYobmV3IFdlYkF1dG9tYXRpb25TZXNzaW9uKCkpOwogICAgIHNlc3Npb24tPnByaXYt
PnNlc3Npb24tPnNldFNlc3Npb25JZGVudGlmaWVyKFN0cmluZzo6ZnJvbVVURjgoc2Vzc2lvbi0+
cHJpdi0+aWQuZGF0YSgpKSk7Ci0gICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKKyAg
ICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0
aW9uU2Vzc2lvbkRpc3Bvc2UoR09iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3Bw
CmluZGV4IDk3ZTkyNTYwMTc3MzdiNzY2NWFjYzhlYjJmMzU4ZWIyZWM1OTAwYjkuLjI4NThkZjZm
MzRkNGZhNjIxMjA5YmYxZWIxZTEwODg1YWQwNWU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5j
cHAKQEAgLTU2LDYgKzU2LDYgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWw6IHB1Ymxp
YyBBUEk6OkNvbnRleHRNZW51Q2xpZW50IHsKIAogdm9pZCBhdHRhY2hDb250ZXh0TWVudUNsaWVu
dFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQ
YWdlKHdlYlZpZXcpLnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4
dE1lbnVDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3
KS5zZXRDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3ZWJW
aWV3KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCmlu
ZGV4IGQzMmI1OWM1NDc2NjdhN2VjODc3MTgxMDUyYmQxYTc0OWMwZGJjMWMuLmEzNzNiMjk0NTcx
Njc5MWEyZDRjMzA3YmQ1ZTBhOTI5YzgxNDBhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmNwcApAQCAtNTYsNSArNTYsNSBAQCBjbGFzcyBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbgogCiB2b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChX
ZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQ
cm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRl
eHQpKTsKKyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXgg
ZWFkNGYyMzQ5OTE2NzA0ZDE3ZDFmMjMwNjQwODlmN2ExYTA0NTk0Zi4uZTc3MWRkNzE4N2U1ODU5
YWRiZDVhMDE2ZjhjYTkzNWQyOGU4NGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcApAQCAtMTE4LDUg
KzExOCw1IEBAIGNsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxv
YWRDbGllbnQgewogCiB2b2lkIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdl
YkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQ
b29sKHdlYkNvbnRleHQpLnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxv
YWRDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bv
b2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVu
dD4od2ViQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggMjE4MDgzZTc2OTdh
NTEzOThmMmVlMDk0Y2RiMDY4YzIwODM3YjFmYS4uOWI1ODE4YTk4MzZmMzc2MmQ4OTYyMmUzNjJj
M2ZjOGIyZDNlYmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0yNjcsOCArMjY3LDggQEAg
dm9pZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0
YWJhc2UsIGNvbnN0IFN0cmluZyYgcGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0RmF2
aWNvbkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9IGRhdGFiYXNlLT5wcml2OwotICAgIHByaXYtPmlj
b25EYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8SWNvbkRhdGFiYXNlPigpOwotICAgIHByaXYt
Pmljb25EYXRhYmFzZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SWNvbkRhdGFi
YXNlQ2xpZW50PihkYXRhYmFzZSkpOworICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG1ha2VVbmlx
dWU8SWNvbkRhdGFiYXNlPigpOworICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0Q2xpZW50KG1h
a2VVbmlxdWU8V2ViS2l0SWNvbkRhdGFiYXNlQ2xpZW50PihkYXRhYmFzZSkpOwogICAgIEljb25E
YXRhYmFzZTo6ZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2Ut
PnNldEVuYWJsZWQodHJ1ZSk7CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dz
aW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDRmOTgwZDRlZTI1OGFjYWM0NTU4MzIzY2E3
YmQ3MWNjZGYzYmVlYjEuLjc2NzVjOWNiM2E1ZWRhZjg4NjRkMTdhMTc5MjE3Y2I5NDIzMzY1Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGaW5kQ29udHJvbGxlci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRGaW5kQ29udHJvbGxlckNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfZmluZF9jb250cm9sbGVyX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVk
KG9iamVjdCk7CiAKICAgICBXZWJLaXRGaW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIgPSBX
RUJLSVRfRklORF9DT05UUk9MTEVSKG9iamVjdCk7Ci0gICAgZ2V0UGFnZShmaW5kQ29udHJvbGxl
cikuc2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRDb250cm9s
bGVyKSk7CisgICAgZ2V0UGFnZShmaW5kQ29udHJvbGxlcikuc2V0RmluZENsaWVudChtYWtlVW5p
cXVlPEZpbmRDbGllbnQ+KGZpbmRDb250cm9sbGVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtp
dEZpbmRDb250cm9sbGVyR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQs
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKaW5kZXggMTM0
ZDFjNmNlYmU1NjdmYzU0ZDk3MGY4NzZiZTAyOTMxZDMyODIyZC4uYmM2N2EzNTdkYzA3NDQ1YTM1
MjhmODBmMGFiZDc5ZDA3YzNiYzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKQEAgLTQ4LDUgKzQ4LDUgQEAgY2xh
c3MgRm9ybUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkZvcm1DbGllbnQgewogCiB2b2lkIGF0
dGFjaEZvcm1DbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJr
aXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
Rm9ybUNsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcp
LnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCAyZTE1OTQ1ZGZhZDI5YzMxNTUwZDFhZDNjNGRkMTQ5
OGJlN2I3MjA0Li44Y2JhNDIyZWQ1ZTM4YmY4NGM3NjA1OTRkNmNmMGY2NTg4Y2JlYTVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJTdGFydChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1h
bmFnZXIpCiAgICAgfQogCiAgICAgaWYgKCFtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIp
IHsKLSAgICAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbWFuYWdlci0+cHJp
di0+Z2VvY2x1ZVByb3ZpZGVyID0gbWFrZVVuaXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRl
cj4oKTsKICAgICAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zZXRFbmFibGVI
aWdoQWNjdXJhY3kobWFuYWdlci0+cHJpdi0+aGlnaEFjY3VyYWN5RW5hYmxlZCk7CiAgICAgfQog
ICAgIG1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlci0+c3RhcnQoW21hbmFnZXJdKEdlb2xv
Y2F0aW9uUG9zaXRpb24mJiBjb3JlUG9zaXRpb24sIE9wdGlvbmFsPENTdHJpbmc+IGVycm9yKSB7
CkBAIC0zMTIsNyArMzEyLDcgQEAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiB3ZWJraXRHZW9s
b2NhdGlvbk1hbmFnZXJDcmVhdGUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHIKIHsKICAgICBhdXRv
KiBtYW5hZ2VyID0gV0VCS0lUX0dFT0xPQ0FUSU9OX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIsIG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5wcml2
LT5tYW5hZ2VyID0gcHJveHk7Ci0gICAgcHJveHktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlx
dWU8R2VvbG9jYXRpb25Qcm92aWRlcj4obWFuYWdlcikpOworICAgIHByb3h5LT5zZXRQcm92aWRl
cihtYWtlVW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXI+KG1hbmFnZXIpKTsKICAgICByZXR1cm4g
bWFuYWdlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCmluZGV4IGI4ZjAxZmIyNGZmMjc2
NTRjMGFkNjA5YWRkMzI0MTk1ZWU0MWNhNTkuLjY1ZmQ3YzY5OTIzODgwMTE1NThjNjdkZWIyNWZk
YWEyN2Y2NmM1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVi
bGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBAIC02MSw1ICs2Miw1IEBA
IGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQg
ewogCiB2b2lkIGF0dGFjaEljb25Mb2FkaW5nQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0SWNvbkxvYWRp
bmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4od2ViVmlldykpOwor
ICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1h
a2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVu
ZGxlQ2xpZW50LmNwcAppbmRleCBhOTNmZjI1YjM5YTI5MjU2MDBkMmM0YWVjY2VjYmM3NTcwZDVk
ZjNkLi45MjYyYTg0ZGVjZTI1YmYwYmRmNWM1OWI0OGQwMDI1ODUyZjM2YmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC0xNzksNSArMTc5LDUgQEAgY2xhc3MgV2ViS2l0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVu
dCB7CiAKIHZvaWQgYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQoV2ViS2l0V2Vi
Q29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bv
b2wod2ViQ29udGV4dCkuc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNv
bnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudCht
YWtlVW5pcXVlPFdlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmlj
YXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKaW5kZXggMjM2ZTgxYzEzOTBiM2VjM2MxNTQ5MTg2
ODZiYWZhNWU1Mzg2NDY4Ny4uNTUxNjM2NDQ3NzU1NzQ3YjcwYWM1ZTc2YjFkMTA0ZDYxYzBiNWNh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBXZWJL
aXROb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90
aWZpY2F0aW9uTWFuYWdlclBybwogICAgICwgbV9ub3RpZmljYXRpb25NYW5hZ2VyKG5vdGlmaWNh
dGlvbk1hbmFnZXIpCiB7CiAgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uTWFuYWdlcik7Ci0gICAg
bV9ub3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPE5vdGlm
aWNhdGlvblByb3ZpZGVyPigqdGhpcykpOworICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0
UHJvdmlkZXIobWFrZVVuaXF1ZTxOb3RpZmljYXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKIH0KIAog
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3Rp
ZmljYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCA5ZTU4YmNiMGIxYWIzM2ZhYWQ5N2ZjZjg1
OTgxMjdlNjEwYTEyMzM2Li4zNmI3ODM0Mzg4MGQ5NjAzMGU3MmZmYWExNTM3NDhlZTViMWUzYThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3Rp
ZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgV2Vi
Tm90aWZpY2F0aW9uOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJLaXROb3RpZmlj
YXRpb25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
KiwgV2ViS2l0V2ViQ29udGV4dCopOwogICAgIH5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGll
bnQuY3BwCmluZGV4IDViY2VmNjhmNjVkMjMxODk4MGNmOTFkYWU1OTNkNzY2NzE0OGE5ODkuLjg5
NmUxM2RhZDk3YmU3ZmY3NzZjMDNiZjZlN2QwMjc4MmUwMzIxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIyNSw2
ICsyMjUsNiBAQCBjbGFzcyBVSUNsaWVudCA6IHB1YmxpYyBBUEk6OlVJQ2xpZW50IHsKIAogdm9p
ZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdl
YmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
VUlDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5z
ZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIuY3BwCmluZGV4IDQ4YjM4ZWFjMDhkOTEyYzk2MzllZjU1MDk0YjEwZjFmZmFk
MWQ5ZjkuLjI1NWU4ZTVhNjc5Mjc2NDgzM2QzN2RhZmY5ZjU3OTBmMDg1OTY2NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMTgyLDYgKzE4Miw3IEBAIHZvaWQgd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxfc2NyaXB0cyhXZWJLaXRVc2VyQ29udGVudE1hbmFn
ZXIqIG1hCiB9CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VDbGllbnRHdGsgZmluYWwgOiBwdWJsaWMg
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyaXB0TWVzc2FnZUNsaWVudEd0ayhXZWJLaXRVc2VyQ29u
dGVudE1hbmFnZXIqIG1hbmFnZXIsIGNvbnN0IGNoYXIqIGhhbmRsZXJOYW1lKQogICAgICAgICA6
IG1faGFuZGxlck5hbWUoZ19xdWFya19mcm9tX3N0cmluZyhoYW5kbGVyTmFtZSkpCkBAIC0yMzgs
NyArMjM5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVy
X3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIoV2ViS2l0VXNlckMKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChuYW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhh
bmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFr
ZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6
ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7Cisg
ICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRN
ZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwg
QVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICByZXR1cm4gbWFuYWdl
ci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoaGFuZGxlci5nZXQoKSk7CiB9CiAKQEAgLTI4OCw3ICsyODksNyBAQCBnYm9vbGVhbiB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9p
bl93b3JsZChXZQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHdvcmxkTmFtZSwgRkFMU0UpOwog
CiAgICAgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0KLSAgICAgICAgV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3Nh
Z2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJr
aXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOworICAgICAgICBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdl
ciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQo
d29ybGROYW1lKSk7CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJv
bGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuY3BwCmluZGV4IGJmYzU2N2NlZDViYjE3MDFkM2FjOTI3NjdhZWJhYTQyZGIyYzM5N2EuLmE1
N2RiNDJhNDE5ZmJjYzdiZWZkNWY3Yjk2NGIwMDYwY2ZhNjVlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0x
OTgsNiArMTk4LDcgQEAgc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9
OwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiBjbGFzcyBXZWJLaXRBdXRvbWF0aW9u
Q2xpZW50IGZpbmFsIDogSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViS2l0QXV0
b21hdGlvbkNsaWVudChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgICAgICA6IG1fd2Vi
Q29udGV4dChjb250ZXh0KQpAQCAtMzY3LDkgKzM2OCw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29u
dGV4dCh3ZWJDb250ZXh0KTsKIAogICAgIHByaXYtPmdlb2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0
R1JlZih3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1
cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpKTsKLSAgICBwcml2LT5ub3Rp
ZmljYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXI+KHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7CisgICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXIg
PSBtYWtlVW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9v
bC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdlYkNvbnRleHQp
OwogI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgcHJp
di0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+KHdlYkNvbnRleHQpOworICAgIHByaXYtPnJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKICNlbmRpZgogfQogCkBAIC02NzgsNyArNjc5LDcg
QEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCBnYm9vbGUKICAgICAgICAgICAgIGdfd2FybmluZygiTm90IGVu
YWJsaW5nIGF1dG9tYXRpb24gb24gV2ViS2l0V2ViQ29udGV4dCBiZWNhdXNlIHRoZXJlJ3MgYW5v
dGhlciBjb250ZXh0IHdpdGggYXV0b21hdGlvbiBlbmFibGVkLCBvbmx5IG9uZSBpcyBhbGxvd2Vk
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+cHJp
di0+YXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0QXV0b21hdGlvbkNs
aWVudD4oY29udGV4dCk7CisgICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGllbnQg
PSBtYWtlVW5pcXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQpOwogICAgIH0gZWxz
ZQogICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbnVsbHB0cjsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcAppbmRleCBiMjM5YWM0ZTE5ZTYzZDMzYTg2OWRlZmI2NmZjM2MwYjQ1MDBiNzg1Li43
NDMwYzNmY2ZkNTRjNDZlZmE2NGUxMmZkOTdkZTVhOTMyOThhNDgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjAxLDYg
KzIwMSw3IEBAIGNsYXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlcjsKICNpZiBQTEFURk9STShXUEUp
CiBzdGF0aWMgdW5zaWduZWQgZnJhbWVEaXNwbGF5Q2FsbGJhY2tJRDsKIHN0cnVjdCBGcmFtZURp
c3BsYXllZENhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgRnJhbWVEaXNwbGF5ZWRDYWxsYmFjayhXZWJLaXRGcmFtZURpc3BsYXllZENhbGxiYWNrIGNh
bGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSA9IG51bGxwdHIsIEdEZXN0cm95Tm90aWZ5IGRlc3Ry
b3lOb3RpZnlGdW5jdGlvbiA9IG51bGxwdHIpCiAgICAgICAgIDogaWQoKytmcmFtZURpc3BsYXlD
YWxsYmFja0lEKQogICAgICAgICAsIGNhbGxiYWNrKGNhbGxiYWNrKQpAQCAtMjI3LDYgKzIyOCw3
IEBAIHN0cnVjdCBGcmFtZURpc3BsYXllZENhbGxiYWNrIHsKICNlbmRpZiAvLyBQTEFURk9STShX
UEUpCiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICB+X1dlYktpdFdlYlZpZXdQcml2YXRlKCkKICAgICB7CiAg
ICAgICAgIC8vIEZvciBtb2RhbCBkaWFsb2dzLCBtYWtlIHN1cmUgdGhlIG1haW4gbG9vcCBpcyBz
dG9wcGVkIHdoZW4gZmluYWxpemluZyB0aGUgd2ViVmlldy4KQEAgLTMyNiw2ICszMjgsNyBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKIH0KIAogY2xhc3MgUGFnZUxvYWRTdGF0ZU9ic2VydmVyIGZpbmFsIDogcHVibGljIFBh
Z2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKQEAgLTM5OSw2ICs0MDIsNyBAQCBjbGFzcyBQ
YWdlTG9hZFN0YXRlT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2
ZXIgewogCiAjaWYgUExBVEZPUk0oV1BFKQogY2xhc3MgV2ViVmlld0NsaWVudCBmaW5hbCA6IHB1
YmxpYyBBUEk6OlZpZXdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFdlYlZpZXdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKQEAgLTcyNSw3ICs3MjksNyBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgd2Vi
a2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdl
YlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcp
OwogCi0gICAgcHJpdi0+bG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZFN0
YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOworICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IG1ha2VVbmlx
dWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdlYlZpZXcp
LnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVyKTsKIAogICAg
IC8vIFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlv
bi4KQEAgLTc0MSw3ICs3NDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAKICNpZiBQTEFURk9STShXUEUpCi0gICAgcHJp
di0+dmlldy0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmll
dykpOworICAgIHByaXYtPnZpZXctPnNldENsaWVudChtYWtlVW5pcXVlPFdlYlZpZXdDbGllbnQ+
KHdlYlZpZXcpKTsKICNlbmRpZgogCiAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBhZnRlciBhdHRh
Y2hVSUNsaWVudFRvVmlldygpIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudCgpIGNh
bGxzIHNldENhblJ1bk1vZGFsKCkgd2l0aCB0cnVlLgpAQCAtMzcwMSw2ICszNzA1LDcgQEAgZ2Jv
b2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBjaGFyKgogfQogCiBzdHJ1Y3QgVmlld1NhdmVBc3luY0RhdGEgeworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZWZQdHI8QVBJOjpEYXRhPiB3
ZWJEYXRhOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBmMDlkNmM3ZTky
MDY4M2E3NTY2NTI3Njk2N2U3NDdjYzZjZWViNDgxLi4wNmIzYjgzNjA2NWQ5ZjY2YTA3OThhMjA5
NTUxM2NhODY4YjMxYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYWdlQ2xpZW50SW1wbDo6
UGFnZUNsaWVudEltcGwoR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQogLy8gUGFnZUNsaWVudCdzIHB1
cmUgdmlydHVhbCBmdW5jdGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9W
SUVXX0JBU0UobV92aWV3V2lkZ2V0KSksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VH
ZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKIH0K
IAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3Jl
OjpSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcAppbmRleCAzMWUwOTczZmUxMDAzYzZlYTY1MjMw
NjFhNjdjOTQ5ZDUzZWJkNmI3Li4yZDFjMmNiMzY4YTk5MzMxNjk3NDI0NmEwZWQ1OTljMjhkY2Fl
NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVt
b2ppQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRFbW9qaUNob29zZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
RW1vamlDaG9vc2VyU2V0dXBFbW9qaVNlY3Rpb25zKFdlYktpdEVtb2ppQ2hvb3NlciogY2hvb3Nl
ciwgR3QKICAgICAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbnVs
bHB0cjsKICAgICB9OwogCi0gICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlv
bnMpKTsKKyAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBtYWtlVW5p
cXVlPENhbGxiYWNrVGltZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOwogICAgIGNob29z
ZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0UHJpb3JpdHkoR19QUklPUklUWV9E
RUZBVUxUX0lETEUpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+
c2V0TmFtZSgiW1dlYktpdEVtb2ppQ2hvb3Nlcl0gcG9wdWxhdGUgc2VjdGlvbnMgdGltZXIiKTsK
ICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnN0YXJ0UmVwZWF0aW5n
KHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5k
ZXggMGY2NzQ4NjQ1MmNkMWZhODdhODI4NjJlN2U2MDU3MzRkZmMzNTk2OC4uNWJhNjEwZTdkOWE0
NGQwNDczODM4MWUyM2QwNDBiZGE5MmMzZmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBTY3JpcHRNZXNzYWdlQ2xpZW50
IGZpbmFsIDogcHVibGljIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3NhZ2VDbGllbnQo
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyJiBpbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIp
CiAgICAgICAgIDogbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIoaW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyKQpAQCAtMTA1LDEzICsxMDYsMTMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWUKICAg
ICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAgIGF1dG8gdXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0
ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFkZCh1c2VyQ29udGVudE1hbmFnZXIpOwogICAgIGlm
ICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBhdXRvIGhh
bmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8
U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVu
dFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0
aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7
CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlciho
YW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vha19yZWYoR19PQkpFQ1QodXNlckNv
bnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4odXNlckNvbnRlbnRN
YW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogCiAgICAgYXV0byogY2xpZW50ID0gbV9p
bnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAm
cmVxdWVzdFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNw
ZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwu
cG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
SW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogCiAgICAgR1N0cmluZyogaHRtbCA9IGdfc3RyaW5nX25ldygKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcAppbmRleCAw
ZjAxNzExZTc5NjFlOGIwMGM1ZTU3NGQyODg1MGQwNWIyNDFmNmVjLi44MGQyMGFhNzYwM2JhZGFi
OTAwZmU0YmQxNTkwYWFkMzliMzBlMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCkBAIC0yODQsNiArMjg0LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfY2xhc3NfaW5pdChXZWJLaXRXZWJJ
bnNwZWN0b3JDbGFzcyogZmluZENsYXNzKQogfQogCiBjbGFzcyBXZWJLaXRJbnNwZWN0b3JDbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYktpdEluc3BlY3RvckNs
aWVudChXZWJLaXRXZWJJbnNwZWN0b3IqIGluc3BlY3RvcikKICAgICAgICAgOiBtX2luc3BlY3Rv
cihpbnNwZWN0b3IpCkBAIC0zNjAsNyArMzYxLDcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJr
aXRXZWJJbnNwZWN0b3JDcmVhdGUoV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvcikKIHsK
ICAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9S
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBOVUxMKSk7CiAgICAgaW5z
cGVjdG9yLT5wcml2LT53ZWJJbnNwZWN0b3IgPSB3ZWJJbnNwZWN0b3I7Ci0gICAgd2ViSW5zcGVj
dG9yLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGlu
c3BlY3RvcikpOworICAgIHdlYkluc3BlY3Rvci0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
SW5zcGVjdG9yQ2xpZW50PihpbnNwZWN0b3IpKTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCmluZGV4IDFiOWRkOGQxZjQ2MDIxNGY1YTc3MjY3MmMyZmI2NTM3MGI1MjBjNWUu
Ljg4YjNjZjQzYmZlNjhlZTk3YzczMWI3NjRkNDQ5OTBhN2JmYzVhOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBA
IC01NjYsNyArNTY2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3Rl
ZChHT2JqZWN0KiBvYmplY3QpCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmll
d1dpZGdldCwgUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdCgpKTsKIAog
ICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNF
KG9iamVjdCktPnByaXY7Ci0gICAgcHJpdi0+cGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUNsaWVudEltcGw+KHZpZXdXaWRnZXQpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBtYWtl
VW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3V2lkZ2V0KTsKICAgICBwcml2LT5kaWFsb2cgPSBu
dWxscHRyOwogfQogCkBAIC0xMjIwLDcgKzEyMjAsNyBAQCBHZXN0dXJlQ29udHJvbGxlciYgd2Vi
a2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
dwogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5w
cml2OwogICAgIGlmICghcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdl
c3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RL
X1dJREdFVCh3ZWJWaWV3QmFzZSksIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJv
bGxlcj4od2ViVmlld0Jhc2UpKTsKKyAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBt
YWtlVW5pcXVlPEdlc3R1cmVDb250cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgbWFr
ZVVuaXF1ZTxUb3VjaEdlc3R1cmVDb250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVy
biAqcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXI7CiB9CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIERy
YWdBbmREcm9wSGFuZGxlciYgd2Via2l0V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBw
cml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5kcmFnQW5kRHJvcEhhbmRs
ZXIpCi0gICAgICAgIHByaXYtPmRyYWdBbmREcm9wSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RHJhZ0FuZERyb3BIYW5kbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+ZHJh
Z0FuZERyb3BIYW5kbGVyID0gbWFrZVVuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5w
YWdlUHJveHkpOwogICAgIHJldHVybiAqcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJraXRXZWJWaWV3QmFzZQogICAgIGlmIChwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIpCiAg
ICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwog
ICAgIGVsc2UgewotICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5
KTsKKyAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJL
aXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgICAgIHBy
aXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlci0+c2V0U3dpcGVHZXN0dXJlRW5hYmxlZChwcml2LT5p
c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVFbmFibGVkKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDJjYWIyZTA1Mzg2ZDQyYjM3
MWY0NDA2YWI3MWE3ZjY1OTMwZjdkNzcuLjE0NjAzZDVhZmViYWY2ZGVlMDExOTc5NTc3MDM4ODM0
OWQ0ZTdiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBA
IC04OTUsNiArODk1LDcgQEAgLSAodm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAog
ewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgY2xhc3MgSWNv
bkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQg
SWNvbkxvYWRpbmdDbGllbnQoV0tWaWV3ICp3a1ZpZXcpCiAgICAgICAgICAgICA6IG1fd2tWaWV3
KHdrVmlldykKQEAgLTkzMiw3ICs5MzMsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2Fk
aW5nQ2xpZW50CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBp
ZiAoW3NlbGYgcmVzcG9uZHNUb1NlbGVjdG9yOkljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNl
bGVjdG9yKCldKQotICAgICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0Ns
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAg
IF9kYXRhLT5faW1wbC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNv
bkxvYWRpbmdDbGllbnQ+KHNlbGYpKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJv
Y2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29u
ZmlndXJhdGlvbgpAQCAtOTQ0LDcgKzk0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAg
ICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0Rh
dGEgYWxsb2NdIGluaXRdOwotICAgIF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOworICAgIF9kYXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJW
aWV3SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlv
bikpOwogCiAgICAgW3NlbGYgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmlu
ZGV4IDg1MTI5YTU0ODdjOWZmYmVkNTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3
NTg4NTczZGZmNDM2MDMzNzdlZjhkMTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6
OlZpZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAg
ICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29u
dHJvbGxlcj4oKSkKIHsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFn
ZUNsaWVudEltcGw6Omhvc3RGaWxlRGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3
aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3Mp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzPihtX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkx
MDlhYTI4NTViOGJiNDE1NzE3MDQ0Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQw
MzBjZTA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3Bw
CkBAIC00Miw4ICs0Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tX
UEUgewogCiBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25z
dCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1h
a2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAw
IH0KICAgICAsIG1fdmlld1N0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5k
b3dJc0FjdGl2ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5k
b3cgfQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6
flZpZXcoKQogdm9pZCBWaWV3OjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0Ns
aWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVu
dCA9IFdURk1vdmUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvcXQvV1BFUXRWaWV3LmNwcAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1
YjEzNTYxY2IzNjZjLi5iNGYyN2I2ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3Bw
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2Fs
bGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChz
dGF0dXNTZXQpIHsKICAgICAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1
ZXN0UHJpdmF0ZSh2aWV3LT51cmwoKSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VV
bmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAg
IFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQog
fQpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2Fs
bGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9h
ZFN0YXR1cyA9IFdQRVF0Vmlldzo6TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAg
IFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3Ry
aW5nKGZhaWxpbmdVUkkpKSwgbG9hZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5p
cXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1J
VCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3
ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmpl
Y3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3Ojpy
dW5KYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxi
YWNrKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBv
aW50ZXI8V1BFUXRWaWV3Pih0aGlzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRD
YWxsYmFja0RhdGE+IGRhdGEgPSBtYWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNh
bGxiYWNrLCBRUG9pbnRlcjxXUEVRdFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdf
cnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRh
KCksIG51bGxwdHIsIGpzQXN5bmNSZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmll
d0JhY2tlbmQuY3BwCmluZGV4IGE4NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQx
ZjkuLjEzZmQzN2FlZmYyYjY1MzVkNTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5k
LmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4g
V1BFUXRWaWV3QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICgh
ZWdsQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0
LCBjb250ZXh0LCB2aWV3KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5k
PihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BF
UXRWaWV3QmFja2VuZDo6V1BFUXRWaWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERp
c3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29u
dGV4dD4gY29udGV4dCwgUVBvaW50ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcAppbmRleCBjY2U1YzQ4MTdhODA0OTE3Y2RjMTk5YzFiMDE2MGUyNTZlOWJlMjk3Li5hNTkx
NTBkYjdhNDBkYzdiYzE1ZGI1MWJlOGVmNGUxMTM1NmRjNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcApAQCAtNzMsMTEgKzczLDExIEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRQYWdl
TG9hZFRpbWVvdXQgPSAzMDBfczsKIHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwog
CiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAgIDogbV9j
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQor
ICAgIDogbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Pigp
KQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVu
ZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9tYXRpb25C
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAg
ICwgbV9kb21haW5Ob3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERp
c3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmllcihtYWtl
VW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQog
ICAgICwgbV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21hdGlvblNl
c3Npb246OmxvYWRUaW1lckZpcmVkKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19B
UEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
CmluZGV4IDZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3
ZTg3YzUxZGM0YWU5ZDYzOWIxZDRmMzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9v
bCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIE9wdGlvblNldDwKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBB
c3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRp
b25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJl
Y2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVu
Y29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZN
b3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAxMGE4ZTQyNDEz
YjI5YWZmYjYzNzdkODRhMDliZTUxMWJkMjUxZDVjLi5kZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFh
NDAxNTdjOTRmMmZhOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1
YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChp
ZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3
MjM5NzMyMDVjYzZkZjRjYzY2YTY3OTA2YzAyOWIwZC4uMDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlk
ZjQyYzIzYzE0ZDYwNWFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tX
ZWJWaWV3ICopOwogICAgIH5JY29uTG9hZGluZ0RlbGVnYXRlKCk7CkBAIC00OCw2ICs0OSw3IEBA
IGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25M
b2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IElj
b25Mb2FkaW5nQ2xpZW50KEljb25Mb2FkaW5nRGVsZWdhdGUmKTsKICAgICAgICAgfkljb25Mb2Fk
aW5nQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9J
Y29uTG9hZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tbQppbmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIyYmViNWJjYmQ3
YzBkNzRjZmI0Li4xNjNmYjk1MmVlMGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2OGY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdh
dGUubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fkljb25Mb2FkaW5n
RGVsZWdhdGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4gSWNv
bkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlk
IDxfV0tJY29uTG9hZGluZ0RlbGVnYXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmRlbGVnYXRl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGE1
MWEyMjM2MjM4NDE1MWFiMTFkNDg5NDM2OWY4YTE4NTgwMDY3ZGEuLmY1MTM3ZjljYzczMTYzODhl
NjFkZTEwNzczZmYzNDI4NTYyNTA1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQpAQCAtNzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6On5VSURlbGVn
YXRlKCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNv
bnRleHRNZW51Q2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVudCgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOwogfQogI2Vu
ZGlmCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVV
SUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KCp0aGlz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQogCiBSZXRhaW5Q
dHI8aWQgPFdLVUlEZWxlZ2F0ZT4gPiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwCmluZGV4IDQ4YzJiMmI0ZTA2MTA2OTI3MmFlYjhiOTRhMjM0ZWFhOTI2
YWY3NmQuLjkxY2Y5NDgwYzc1MThjZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk6OlNvdXJjZVByb3h5IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2Vy
dmVyLCBwdWJsaWMgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU291cmNlUHJveHkodWludDY0X3QgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYgc291cmNlKQogICAgICAgICA6IG1faWQoaWQpCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9p
ZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1
cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsK
ICAgICAgICAgc2V0dGluZ3MgPSBzb3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VSVCgh
bV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6
bWFrZV91bmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RG
TW92ZShzb3VyY2UpKSk7CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291
cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNl
T3JFcnJvci5lcnJvck1lc3NhZ2UpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwg
aW52YWxpZENvbnN0cmFpbnRzLCBXVEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmgKaW5kZXggOWNhNmZhMzUzNDk2MDE4MDNkZjVkM2QxYjJhYmEzMTY1NTc0MGMzOS4uOWJk
ZGI5OTA5ZGY3ZThmZWYxZTU0ODA2Y2JlNmJjNWM0MGNmYzU4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBTaGFyZWRNZW1vcnk7CiBjbGFzcyBXZWJQ
cm9jZXNzUHJveHk7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KFdlYlBy
b2Nlc3NQcm94eSYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQppbmRleCAzMDcwZDU3NDQzZmRmNzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQy
ZmEyYTA4NjA0MTdjNmNmODBkN2JjZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEzNSw3ICsx
MzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIGlm
ICghW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldl
YktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3RhbGxNZW1v
cnlQcmVzc3VyZUhhbmRsZXIoKTsKIAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dD4oKSk7CisgICAgc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlx
dWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c3RhcnREaXNwbGF5TGluayhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9i
c2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIGRpc3Bs
YXlMaW5rID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKKyAgICBh
dXRvIGRpc3BsYXlMaW5rID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKICAg
ICBkaXNwbGF5TGluay0+YWRkT2JzZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAg
bV9kaXNwbGF5TGlua3MuYXBwZW5kKFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0K
aW5kZXggNWMyMWNhNzVhMTgyOWM1MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3
YjQ2MDU0OGNlMGY4NmQ3YTVkMTE3YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIwNSw3ICsy
MDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3Vz
cGVuZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2
aXR5VGltZW91dEhhbmRsZXIgPSBbYWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6
cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tncm91bmQg
YWN0aXZpdHkgdGltZWQgb3V0Iiwgd2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAgbV91bmV4
cGVjdGVkQWN0aXZpdHlUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJs
ZU9uZVNob3RUaW1lcj4oV1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciks
IHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRp
bWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3Zl
KGJhY2tncm91bmRBY3Rpdml0eVRpbWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVy
YXRpb24pOwogICAgIGNvbXBsZXRpb24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBmMTc2ZjFhNjVhOTkyYzUxYWMzNDRl
ZDAwODg1N2UwMTNlZjk5NGIxLi4zN2Y1NGRhNGFkMmQ2YTI1NDdjMWRkMzU5Yjg5NWM4YTU0YTI1
OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpA
QCAtMTMzNCw3ICsxMzM0LDcgQEAgc3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0cmFja2lu
Z0FyZWFPcHRpb25zKCkKIAogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmll
d0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNz
UG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3Vy
YXRpb24pCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwgbV9wYWdl
Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCiAg
ICAgLCBtX3BhZ2UocHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKSkKICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3Jk
aW5hdGVzKG1fcGFnZS0+cHJlZmVyZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAgICwgbV9p
bnRyaW5zaWNDb250ZW50U2l6ZShDR1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0cmljLCBO
U1ZpZXdOb0ludHJpbnNpY01ldHJpYykpCkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwoTlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJW
aWV3ICpvdXRlcldlYgogICAgIHZpZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5TVmlld0xh
eWVyQ29udGVudHNQbGFjZW1lbnRUb3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNs
aWVudChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwogI2VuZGlm
CiAKICAgICBXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0x
NzMwLDkgKzE3MzAsOSBAQCBDR1NpemUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNv
bnN0CiBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1w
bDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAg
ICAgaWYgKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JL
ZXk6QCJXZWJLaXQyVXNlUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFsdWVdKQot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4o
bV9wYWdlLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdlYlZpZXdJ
bXBsOjppc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcoKSBjb25zdApAQCAtMzM3NSw3ICszMzc1LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3
SW1wbDo6c2V0VGV4dEluZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNh
dG9yLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAg
ICAgaWYgKCFtX3RleHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGljYXRvcldp
bmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92
aWV3LmdldEF1dG9yZWxlYXNlZCgpKTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCkpOwogCiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5h
dGVzID0gW1ttX3ZpZXcgd2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcgY29udmVy
dFJlY3Q6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCkgdG9WaWV3Om5pbF1dOwogICAgIG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGlj
YXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3Jl
ZW5Db29yZGluYXRlcyksIGxpZmV0aW1lKTsKQEAgLTQzNzcsNyArNDM3Nyw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJiBpdGVtKQogVmlld0dlc3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJl
R2VzdHVyZUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKLSAg
ICAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVD
b250cm9sbGVyPihtX3BhZ2UpOworICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVu
aXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICptX2dlc3R1
cmVDb250cm9sbGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5
ZTU4Y2NkYTEwZjNlYTQ0NGMyNzYuLjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2
NWQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRl
SW5mbyYgdXAKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAg
ICAgICAgbV9iYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZT4odXBk
YXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdl
UHJveHkpOworICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2luZ1N0b3Jl
Pih1cGRhdGVJbmZvLnZpZXdTaXplLCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dl
YlBhZ2VQcm94eSk7CiAKICAgICBtX2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBk
YXRlSW5mbyk7CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuYwog
ICAgIH0KIAogICAgIGlmICghbV9kcmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3aW5nTW9u
aXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OkRyYXdpbmdNb25pdG9yPihtX3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJhd2luZ01v
bml0b3IgPSBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpE
cmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0b3ItPnN0
YXJ0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJkMDM4NmFj
ZjVkOGFkNTM1Yzc5MTJhODg2Y2JkMGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2
NjVlZTFiNzg2OTZhNmE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rl
dmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlk
SGFzaFNhbHRTdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8g
aGFzaFNhbHRGb3JPcmlnaW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0
eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgIGF1
dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZN
b3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9y
aWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgaGFz
aFNhbHRGb3JPcmlnaW4tPmxhc3RUaW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhs
YXN0VGltZVVzZWQpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9y
aWcKIAogICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJpbmco
KTsKIAotICAgICAgICBhdXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFy
ZW50T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1dG8gbmV3
SGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3Zl
KGRvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlk
SGFzaFNhbHQpKTsKIAogICAgICAgICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47CiAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5
OWE1MDM0NGYzMTI1MWY1ZTk2ODQuLmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1
Y2E3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eU1hcC5jcHAKQEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFByb3h5JiBE
b3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbAogCiAgICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hvdWxkVGFr
ZUFzc2VydGlvbikgewogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlvbik7Ci0g
ICAgICAgIG1fZG93bmxvYWRVSUFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fz
c2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkVUlB
c3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNz
SUQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3
b3JraW5nKTsKIAogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9u
KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9kb3dubG9h
ZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+
KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFz
c2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZE5l
dHdvcmtpbmdBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0
YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgIlVJUHJvY2VzcyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb25z
IGZvciBVSVByb2Nlc3MgYW5kIE5ldHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDNkZWY1ZDc5ZjA3Y2I5MTQwYjgy
NTYyZGI5ZjZmMmJjNmQwZjcyZjYuLjU2MDZjNTExNjUzNGY0M2NmYzgwNmQ1MTFkNDFlZDk4Y2Zi
MjUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAg
LTUyLDYgKzUyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5
OwogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwcm90ZWN0ZWQgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmF3aW5nQXJlYVByb3h5KTsKIAogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVw
YWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBh
ZFByb3ZpZGVyLmNwcAppbmRleCBlY2FhYzMwMWI0YmRmNDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRm
NjQwLi5mNGI3YmVhNjU4NTA5OTFlOTQ5NGE2MjIzZDU0Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29u
bmVjdGVkR2FtZXBhZHMoY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZAogICAgIGZvciAoYXV0
byogZ2FtZXBhZCA6IGluaXRpYWxHYW1lcGFkcykgewogICAgICAgICBpZiAoIWdhbWVwYWQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRleCgp
XSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPigqZ2FtZXBhZCk7CisgICAgICAgIG1fZ2Ft
ZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQp
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcG9vbCA6IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1l
cGFkcykKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9y
bUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkKQogICAgICAgICBtX2dh
bWVwYWRzLmdyb3coZ2FtZXBhZC5pbmRleCgpICsgMSk7CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBh
ZHNbZ2FtZXBhZC5pbmRleCgpXSk7Ci0gICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldID0g
c3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVwYWQpOworICAgIG1fZ2FtZXBhZHNbZ2Ft
ZXBhZC5pbmRleCgpXSA9IG1ha2VVbmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKIAogICAgIHNj
aGVkdWxlR2FtZXBhZFN0YXRlU3luYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAppbmRl
eCA3ZDU2YjBhMjQ2M2RlZGYxNjY5NThjMjhmZmI3NWFhMGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVl
ZTJlZmExYmQwNWEyYTc1NjExMWExNWQ5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgK
QEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKIAogY2xhc3MgSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3Jt
YW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDBkM2QwM2NlZWQ4MzEzYmNhMjdiMzkxNWFjMzdjZTZlM2VkNzMwOTkuLmVlYjQwOTg5
NWNlMGUyM2M5ZmMzZTk1ZjM1ODE4MGZjOWFiMDQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0
LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcElzQmFj
a2dyb3VuZChib29sIGJhY2tncm91bmQpCiBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQotICAgICAgICBtX2Rvd25s
b2FkUHJveHlNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsK
KyAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFw
PigqdGhpcyk7CiAKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9h
ZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CkBAIC0xMjAxLDcgKzEy
MDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKCkKIHsKICAgICBBU1NFUlQoIW1fdXBsb2FkQXNzZXJ0aW9u
KTsKLSAgICBtX3VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2Vy
dGlvbj4ocHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25T
dGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgbV91cGxvYWRBc3NlcnRpb24gPSBtYWtl
VW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBs
b2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyVXBsb2FkQXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggMzViODIxM2MyOGZjYjZiOTQwYTEwOTliZTE0MDhmOTA2YTNiOTJiYi4uMWZkYjY2YzE1NWQ4
N2IyMjYyZjJhM2Q1ZTEwZGUyMzkxNDM4YTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcg
QEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURh
dGE7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3Bw
CmluZGV4IDJhYWZmMWVjMmE2NTQ5MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIuLjQ3YTNlOWIy
M2JhMTI2NTE5OGI2MGVkZGY2YzRkZDk4NmZjZDIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTU2LDE0ICs1NiwxNCBAQCBSZWY8V2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQ
cm9jZXNzUAogCiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0
U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5p
cXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiB9CiAKIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3Rp
ZmljYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVyKSB7Ci0g
ICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJv
dmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0
aW9uUHJvdmlkZXI+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlYzY0YmM5ZTE2MmNiN2NhMWU3NTM3ZTkzMzFkNGYxMzk1
ODdlYzQxLi42Y2Y1ZTE0ZWE1NjlmMjNkYTg0NzU0MDk2Y2E1MTE0NTNjMjk4YjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgdXNpbmcgTGF5
ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7CiAjZW5kaWYKIAogY2xhc3MgUGFnZUNsaWVu
dCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWdlQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BV
VXNhZ2VTYW1wbGVyLmgKaW5kZXggMDFhN2RhN2I4OTFhOTAwNjZjOTBlODQyOWM2NTZiZDcwMGIx
NjZiZC4uZWE0MzkyN2Q0OGQ3NTJiZWI2NzI4MDk0OTljOWFkMGJmZTA3YmM1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2Fn
ZVNhbXBsZXIuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBX
ZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5QZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAKaW5kZXggZjZmNDc5YjFlMDM5MmYzMjIxNjBhNjQ5NGFlYzYyZTBhMDY3OTZkZC4uODQzNjlk
MzM0NDA3Y2ZiYzJlODNhYTgyN2M1Y2MwZTVkYjkxMjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxh
dGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYQogI2lm
IFBMQVRGT1JNKEdUSykKIHN0YXRpYyBib29sIHBsdWdpblJlcXVpcmVzR3RrMihjb25zdCBTdHJp
bmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KHBsdWdpblBhdGgpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxNb2R1bGU+IG1vZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKICAgICBp
ZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1v
ZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPGdwb2ludGVyPigiZ3RrX29iamVjdF9nZXRfdHlwZSIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAwMGE5
OTE4ODYxNDg3MzkzOGE2Y2I0YWJkOTkxNGJjODYyOTQ1Y2Y3Li40Y2UyNjJlOWRjYmI0YjFiMGZm
MGFkNWRiOTdlYjk3ZjM2MDczNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxl
cjo6ZGlkQ29ubmVjdFRvUHJvY2VzcyhQcm9jZXNzSUQgcGlkKQogCiAgICAgbV9zdXNwZW5kVGlt
ZXIuc3RvcCgpOwogICAgIGlmIChtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCi0g
ICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRp
b24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwor
ICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihw
aWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0
aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsK
KyAgICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwg
IldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwogICAgIG1fcHJv
Y2Vzcy5kaWRTZXRBc3NlcnRpb25TdGF0ZShhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX2Fzc2Vy
dGlvbi0+c2V0Q2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggNjBmMDJjNjEwZmNkOTg4MzA2MzljNTdiM2U5ZDYx
ZmYxZmQ1MjVmZC4uMjc0YWJkMzAyOWMwMDc3MzM5ZGZlMzc0OGZmMzA2OTdjOWI0OGI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEw
Nyw3ICsxMDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdl
UHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIDogRHJh
d2luZ0FyZWFQcm94eShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBhZ2VQcm94
eSwgcHJvY2VzcykKLSAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChzdGQ6Om1ha2VfdW5pcXVl
PFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9z
dChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKIHsKICNpZiBIQVZFKElP
U1VSRkFDRSkKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJ
IHByb2Nlc3MuCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Ojp1cGRhdGVEZWJ1Z0luZGljYXRvcihJbnRTaXplIGNvbnRlbnRzU2l6ZSwKIAog
dm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRp
Y2F0b3IoKQogewotICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcyk7CisgICAgbV9kZWJ1Z0luZGljYXRv
ckxheWVyVHJlZUhvc3QgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsK
ICAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdC0+c2V0SXNEZWJ1Z0xheWVyVHJlZUhv
c3QodHJ1ZSk7CiAKICAgICBtX3RpbGVNYXBIb3N0TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBh
bGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCAzMDAyNWQ0Mjk5
ZjNiY2EwNDg1ZDMwNGQ4MzM1ODE3NjEwYmE1MGJkLi44YTRlNTA0ODE3ZWJjMTI1Y2U4OThjMWMy
OTFkOWE2ZTRkNWY1ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjUyLDcg
KzI1Miw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVz
KQogewogICAgIGF1dG8gbWFrZVdpdGhMYXllciA9IFsmXSAoUmV0YWluUHRyPENBTGF5ZXI+IGxh
eWVyKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5v
ZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1v
dmUobGF5ZXIpKTsKICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENB
TGF5ZXIqIGxheWVyKSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMobGF5
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KaW5kZXggZTg4YmJjNjA4ZDRmYjA1ODM4
NGQyOWIyNjk4MTU5MmVkYTgxNGViYS4uNGZkNGVhMjY5ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBk
ODQyNDA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KQEAgLTczLDcgKzczLDcgQEAg
UmVtb3RlTGF5ZXJUcmVlTm9kZTo6flJlbW90ZUxheWVyVHJlZU5vZGUoKQogc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklE
KQogewogICAgIFJldGFpblB0cjxDQUxheWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1BsYWluUmVt
b3RlTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVMYXllclRyZWVOb2RlPihsYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwog
fQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZU5vZGU6OmRldGFjaEZyb21QYXJlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5o
CmluZGV4IGMyNzgxZGM4YWRhMzQzMzlmNzllZDg1YTdlM2U5ZmY3NjUyMjI1MjguLjI5ZGZlZmU2
Y2I3MmMxMjBhNjFjYzIyZDBkM2JhNjRhNmQ5NDQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJm
b3JtYW5jZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTMzLDYgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OwogCiBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Jik7CiAgICAgflJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5kZXggODZk
MGRlZmM2OTY1ZTRmYTZiYTExNjQ3NjFiYzlhYzcxOThjNzJlNi4uMWE3Njk0M2YyNDViZTFjZDgy
MmYxOTYxM2NkZDM1ZjU0MGE5NGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGlu
Z1RyZWU7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggNjI5YTlj
NjUwZDQzYzBkNTYxYzgxOTMzYmEwZDE0ZThkMzNlYTQ0NC4uMGMxMjZhZTZhZjc1ZTQxMzhhZmQw
MDg2ODM5NTY2MjlmZjcwMDIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4gY3JlYXRl
UmVtb3RlVmlldyhwaWRfdCBwaWQsIHVpbnQzMl90IGNvbnRleHRJRCkKIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25z
dCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHBy
b3BlcnRpZXMpCiB7CiAgICAgYXV0byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0cjxVSVZp
ZXc+IHZpZXcpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJU
cmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBX
VEZNb3ZlKHZpZXcpKTsKICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9IFsmXSAo
VUlWaWV3KiB2aWV3KSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVSZW1vdGVJT1MubW0KaW5kZXggODFhMmViOWE2MzVkNTk4NDE2MDBmNzgzNTIw
NGFjODRiZDZkNWMyOC4uYjg5MDY4MWU5ZTdhNTEzYmEzNDM2N2NlZjM5ODliZTNiMTlkOWNiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZVJlbW90ZUlPUy5tbQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4o
Y29uc3QgUwogCiAgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAgICAgaWYg
KHNjcm9sbENvbnRhaW5lckxheWVyKCkpCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxl
Z2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUz4oKnRoaXMpOworICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBtYWtl
VW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRy
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5tbQppbmRleCBiNTZlMmVhNjRkYTUyMDMxZGZhZjEyOGVjMjQ4
Y2QxNWM3MTAwOTI2Li5kMGJkZDNjNTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFhYjU3ZDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tCkBAIC00Myw3ICs0Myw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
CiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5n
VHJlZSwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAgICwgbV9z
Y3JvbGxpbmdOb2RlRGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0
ZShtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlz
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2N2MwYjYx
NjJlMDY3ODNjZjM3NmNmNjE5MDdlMi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3OWM3NDUy
OTQzNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlTWFjOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGlu
Z1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQg
bm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBu
b2RlVHlwZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8
U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMu
Y3BwCmluZGV4IGQ4OTYwY2VjMzBlNDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMuLmI2Y2Ez
Y2JiYTgwODA3YWY3YjlmNjk5YmU5YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVt
b3RlTWFjLmNwcApAQCAtNDEsNyArNDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZVJlbW90ZU1hYz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTgogCiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9s
bGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjKHRyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5p
cXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaAppbmRleCBmNTA1ZTI4MGM0NDI5MGE4MDNkYmRiNjhjOThlZWE2MzBiMWM5YmI2
Li44NjhiNTRlNzkyYWYyYWJkOTg2YmM4NjYwMDVjYjEyZjQ1NjgyNDI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAj
ZW5kaWYKIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkm
KTsKICAgICB+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRTZXJ2aWNlLm1tCmluZGV4IGNhMjZlNTFkN2E0MDY0YWEyODEyN2MwZjAxZDU0YTRl
MGFjMjQ0NjMuLjM5M2IxMzY3MWY2MDE0MTZhNmVkN2MyZmRhYjBjZDJlYjA4MWUzYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hp
ZFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvSGlkU2VydmljZS5tbQpAQCAtOTIsNyArOTIsNyBAQCBVbmlxdWVSZWY8SGlkQ29u
bmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBk
ZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2
aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdGFwSGlkRHJpdmVy
PihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOworICAgIGF1dG8gZHJpdmVyID0gbWFrZVVu
aXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwogICAgIC8v
IEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgogICAgIGRyaXZlci0+dHJh
bnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6
OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
cHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkgewogICAgICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKaW5kZXggODVjZTY5MDYxMTE0NDJiYzY3OWNjN2E3
NzViODY4MmRkMTU3MjhjOS4uZjg1MmJlZDIxMzBiNDdjMmY3ZGQyOThhZDM1NmFlYWM4N2MwMjY4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVBy
b3h5OwogCiBjbGFzcyBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KTsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eShX
ZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA5OWQ2ZWEzMzQxNTNlY2Y0OWQ0NTg0Yzc0
M2RjNjgxNjg4NDE1NTIwLi44NDZhNWFhMjdkZmFiM2QyNzRjZmZhNDg3Mzg2MWYyNTg3ZDE3ZmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9v
CiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVu
dChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdl
b2xvY2F0aW9uUHJvdmlkZXI+KCkpCisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpH
ZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50Ojpwcm9j
ZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KQEAgLTU0LDcgKzU0
LDcgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG8KIHZvaWQgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlk
ZXI+JiYgcHJvdmlkZXIpCiB7CiAgICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9wcm92aWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAg
ICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAg
ICAgZWxzZQogICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5h
Z2VyLmNwcAppbmRleCAyY2RjZDE3NjUyOTlmZTc3NjQ5YmFiZjlkZTNlNzRlOGIwZjAwZTM3Li4z
MzY0YmNiY2M5MTE4NGE2YmE3NTQxZWY5MGIwZjk2MDRjZGU0ZGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBk
YXRlUGxheWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlhU3RhdGUoV2ViUGFnZQogCiB2b2lkIFdlYk1l
ZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQYWdlUHJv
eHkmIHByb3h5LCB1aW50NjRfdCBlbGVtZW50SUQpCiB7Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVt
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1l
bnRJRCk7CisgICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gbWFrZVVuaXF1ZTxGb2N1c2VkTWVk
aWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyOjpjbGVhckZvY3VzZWRNZWRpYUVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5ZWI5ZDI4YWRkZDViNWIwMDZk
NTBiMDhhM2Q3NGZiNjlkMTYyMzkyLi4xNmE3NTlhYzhhMWZmMzE0NjA1YjA5NDZmZmM1YWE2NTgx
OGUwNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9u
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUu
aApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOwogCiBjbGFzcyBXZWJOYXZpZ2F0aW9uU3RhdGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5hdmlnYXRpb25TdGF0
ZSgpOwogICAgIH5XZWJOYXZpZ2F0aW9uU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggNjUyOTgyYTgx
MmE5ZWZiZWY1MjFhNmE5ODk5ZmE0YmVlNWZhZjM0Yy4uMWIyOWY3OWRkZmFlYTA3YjllNzI0OWJk
NzcyMzg0ZWViZjUzMGZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYlBhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dEJhc2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFN0cmluZyYsIEFQSTo6T2JqZWN0Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQ
STo6T2JqZWN0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggYzRiOTJjODNjZmVhMjliMzFlZGJiMzRhYTg0MDI1YmE1Yzhi
MDNiNy4uYmRhNTljZDgwNTE1NzY0NmIzMDhkMmZkMjM2ZjNkMTE4MjcxZTBiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgICwgbV9mcm9udGVu
ZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRj
aGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkp
KQogewotICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKSk7CisgICAgYXV0byB0YXJnZXRBZ2VudCA9IG1ha2VVbmlxdWU8V2ViUGFnZUlu
c3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNw
YXRjaGVyLmdldCgpKTsKIAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggN2ZhMmI0ZDZk
M2MxNjYxYTcwMDNiNzc4NTU4ZGE3YzJmZjI0ZjA3ZS4uMGI0MGRiMjc3ODNmZGU5ZDI1NmZmNTI5
MmVlYTdlYmZlMzE2Y2EwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0zOTcsMTUgKzM5NywxNSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwg
bV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX25hdmlnYXRp
b25DbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCiAgICAgLCBt
X2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Okhpc3RvcnlDbGllbnQ+KCkpCi0gICAg
LCBtX2ljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0Ns
aWVudD4oKSkKLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNs
aWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50
PigpKQotICAgICwgbV9maW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50
PigpKQotICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rmlu
ZE1hdGNoZXNDbGllbnQ+KCkpCisgICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVl
PEFQSTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OlVJ
Q2xpZW50PigpKQorICAgICwgbV9maW5kQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50
PigpKQorICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNo
ZXNDbGllbnQ+KCkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRN
ZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKKyAg
ICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50
PigpKQogI2VuZGlmCi0gICAgLCBtX25hdmlnYXRpb25TdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdl
Yk5hdmlnYXRpb25TdGF0ZT4oKSkKKyAgICAsIG1fbmF2aWdhdGlvblN0YXRlKG1ha2VVbmlxdWU8
V2ViTmF2aWdhdGlvblN0YXRlPigpKQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBt
X3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKICAgICAsIG1fcHJlZmVy
ZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKQEAgLTQxNiw3ICs0MTYsNyBA
QCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeSB7IG1fY29uZmlndXJhdGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3ko
KSB9CiAgICAgLCBtX3RyZWF0c1NIQTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1fY29uZmlndXJh
dGlvbi0+dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCisgICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQo
bWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCiAjZW5kaWYKICAgICAsIG1fZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBtX25vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKQEAgLTQzNSw5ICs0MzUsOSBAQCBX
ZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRo
aXMpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29uZmlndXJhdGlv
bi0+cHJlZmVyZW5jZVZhbHVlcygpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6
bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1f
aW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
PigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3Rv
ckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQor
ICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+
KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkK
IHsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+
KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNo
YW5nZSksIFt0aGlzXSB7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IG1h
a2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhp
c10gewogICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB9
KTsKICNlbmRpZgpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQb2xp
Y3lDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmIHBvbGljeUNsCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3Jt
Q2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0gICAgICAg
IG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAg
ICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNs
aWVudCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpVSUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7Ci0gICAgICAg
IG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgICAg
IG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNv
bkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+Jgog
ewogICAgIGJvb2wgaGFzQ2xpZW50ID0gaWNvbkxvYWRpbmdDbGllbnQuZ2V0KCk7CiAgICAgaWYg
KCFpY29uTG9hZGluZ0NsaWVudCkKLSAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKKyAgICAgICAgbV9pY29uTG9h
ZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKICAgICBl
bHNlCiAgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBXVEZNb3ZlKGljb25Mb2FkaW5nQ2xp
ZW50KTsKIApAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTG9h
ZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VyCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xp
ZW50PiYmIGZpbmRDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kQ2xpZW50KSB7Ci0gICAgICAgIG1f
ZmluZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgICAg
ICBtX2ZpbmRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRD
bGllbnQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+JiYgZmluZE1hdGNoZXNDbGllbnQpCiB7CiAg
ICAgaWYgKCFmaW5kTWF0Y2hlc0NsaWVudCkgewotICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgICAgICBt
X2ZpbmRNYXRjaGVzQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50Pigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkRpYWdub3N0aWNMb2cKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0TWVudUNsaWVu
dCkKIHsKICAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1fY29udGV4dE1l
bnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7Cisg
ICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVD
bGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3QgV0tQYWdlSW5q
ZWN0ZWRCdW5kbGVDbGllbnRCYXNlKgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9p
bmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50PigpOworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdl
YlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50
LT5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKQEAgLTc3Niw3ICs3NzYsNyBAQCBib29sIFdlYlBh
Z2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIE9wdAogICAgIH0KIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJy
ZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKLSAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1c3BlbmRl
ZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hv
dWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsK
KyAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4o
KnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9z
aW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAogICAgIExPRyhQ
cm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5k
ZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1
NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVt
SUQoKS5sb2dTdHJpbmcoKSA6IDApOwogCkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuTWFuYWdlcik7Ci0gICAgbV9mdWxsU2Ny
ZWVuTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4o
KnRoaXMsIHBhZ2VDbGllbnQoKS5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOworICAg
IG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk+KCp0aGlzLCBwYWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgQVNTRVJU
KCFtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOwpAQCAtODYwLDIyICs4NjAsMjIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWSkKICAgICBBU1NFUlQoIW1fcGF5bWVudENvb3JkaW5hdG9yKTsKLSAgICBtX3BheW1l
bnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk+KCp0aGlzKTsKKyAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgVVNFKFNZU1RFTV9Q
UkVWSUVXKQogICAgIEFTU0VSVCghbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcik7Ci0gICAgbV9z
eXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3lzdGVtUHJldmlld0Nv
bnRyb2xsZXI+KCp0aGlzKTsKKyAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gbWFrZVVu
aXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0VCX0FVVEhOKQogICAgIEFTU0VSVCghbV9jcmVkZW50aWFsc01lc3Nlbmdlcik7Ci0gICAg
bV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0g
bWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2Vu
ZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICBBU1NFUlQoIW1fZWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIpOwotICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9lZGl0YWJsZUltYWdl
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+KCp0aGlzKTsK
ICNlbmRpZgogfQogCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERy
YXdpbmdBcmVhKHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmUK
IAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQogICAgIGlm
IChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVl
KSB7Ci0gICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3Nj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk+KCp0aGlzKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAv
LyBPbiBpT1MsIG1haW4gZnJhbWUgc2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBvZiB2aXNpYmxl
IHJlY3QgdXBkYXRlcy4KICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5LT5zZXRQ
cm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xscyhmYWxzZSk7CkBAIC0xMDA2LDE3ICsxMDA2LDE3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgbV9sb2FkZXJDbGllbnQgPSBudWxscHRy
OwogICAgIG1fbmF2aWdhdGlvbkNsaWVudCA9IG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9u
Q2xpZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50ID0gbnVsbHB0cjsKLSAgICBtX2ljb25Mb2Fk
aW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOwot
ICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOwot
ICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7Ci0gICAg
bV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7Ci0gICAg
bV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0Ns
aWVudD4oKTsKKyAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25M
b2FkaW5nQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGb3Jt
Q2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7
CisgICAgbV9maW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CisgICAg
bV9maW5kTWF0Y2hlc0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4o
KTsKICAgICBtX2RpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCi0gICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwpA
QCAtMTIyNiw3ICsxMjI2LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9KTsKIAotICAgIGF1
dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRp
b24oc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3RvcigpLCBN
SU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhKSk7CisgICAgYXV0byBuYXZpZ2F0
aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihtYWtlVW5p
cXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdU
Rjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5h
dmlnYXRpb247CiB9CkBAIC0yNDE1LDcgKzI0MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1dG8gY29hbGVz
Y2VkV2hlZWxFdmVudCA9IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+Pigp
OwogICAgIGNvYWxlc2NlZFdoZWVsRXZlbnQtPmFwcGVuZChldmVudCk7CiAgICAgbV9jdXJyZW50
bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShjb2FsZXNjZWRXaGVlbEV2ZW50
KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQoZXZlbnQpOwpAQCAtMjQyMyw3ICsyNDIzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVu
dCYgZXZlbnQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZl
bnQoKQogewotICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CisgICAgYXV0byBuZXh0Q29hbGVzY2VkRXZl
bnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBXZWJX
aGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50ID0gY29hbGVzY2VkV2hlZWxFdmVudChtX3doZWVsRXZl
bnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRFdmVudC5nZXQoKSk7CiAgICAgbV9jdXJyZW50bHlQcm9j
ZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShuZXh0Q29hbGVzY2VkRXZlbnQpKTsKICAg
ICBzZW5kV2hlZWxFdmVudChuZXh0V2hlZWxFdmVudCk7CkBAIC0yOTg0LDcgKzI5ODQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxw
dHI7CiAgICAgfQogCi0gICAgbV9wcm92aXNpb25hbFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBy
b3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUo
c3VzcGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlv
bi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgp
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKKyAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9
IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlS
ZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1
cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwogCiAgICAgaWYg
KGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgewogICAgICAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8g
YmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAt
NTcwMiw3ICs1NzAyLDcgQEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogV2ViUGFnZVByb3h5
OjpmdWxsU2NyZWVuTWFuYWdlcigpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RnVsbHNjcmVlbkNs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiYmIGNsaWVudCkKIHsK
ICAgICBpZiAoIWNsaWVudCkgewotICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICAgICAgbV9mdWxsc2NyZWVu
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTc0MzcsNyArNzQzNyw3IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0CiAgICAgaWYgKG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKQogICAgICAg
ICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogCi0gICAgbV91
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CisgICAgbV91c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBtYWtlVW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIH0KIApAQCAtODE0Myw3ICs4MTQzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVk
ID0gZW5hYmxlZDsKIAogICAgIGlmIChtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25F
bmFibGVkICYmICFtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSkKLSAgICAgICAgbV9zY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKKyAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4o
ZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEp
KTsKICAgICBlbHNlIGlmICghbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxl
ZCkKICAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBudWxscHRyOwogfQpAQCAt
OTE5MCw3ICs5MTkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNoU3ludGhlc2l6
ZXIoKQogV2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVzaXNEYXRhJiBXZWJQYWdlUHJveHk6OnNw
ZWVjaFN5bnRoZXNpc0RhdGEoKQogewogICAgIGlmICghbV9zcGVlY2hTeW50aGVzaXNEYXRhKQot
ICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgICAgICBtX3NwZWVjaFN5
bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgbWFrZVVuaXF1ZTxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciB9OwogICAgIHJldHVybiAqbV9zcGVlY2hTeW50aGVzaXNEYXRhOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA4YmRmOGNm
ODM4OGNkYzdiZmFjZmYyYjdlNjA1ZDBhODE4ZGFhYzY0Li45NjJmM2JlZDJkODI1NjlhMDdkZDRl
OWNkYWI4ZmNjNzIxMTlmN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NDYWNoZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmFkZFBy
b2Nlc3NJZlBvc3NpYmxlKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSBnZW5lcmF0
ZUFkZFJlcXVlc3RJZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJl
cXVlc3RJZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3Mu
Y29weVJlZigpKSk7CisgICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlm
aWVyLCBtYWtlVW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CiAKICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6YWRk
UHJvY2Vzc0lmUG9zc2libGUoKTogQ2hlY2tpbmcgaWYgcHJvY2VzcyAlaSBpcyByZXNwb25zaXZl
IGJlZm9yZSBjYWNoaW5nIGl0Li4uIiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7CiAgICAgcHJvY2Vzcy0+aXNSZXNwb25zaXZlKFt0aGlzLCBwcm9jZXNzUG9vbCA9IG1ha2VS
ZWYocHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKSksIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGlzUmVz
cG9uc2l2ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGRiZTI1MzUyYjUyNTg4ZDhhM2NjODY5NDg0NDQwZTc5ZTg1YTA5NmQuLmZlZGE4ZWU4ZThk
MzBmMzk0ZmYxMDhmYmZhODA0MTVkODEwNzdhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIzMywxNSArMjMzLDE1IEBAIHN0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhD
dXN0b21Qcm90CiBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbi5jb3B5KCkpCiAgICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3Vw
OjpjcmVhdGUoKSkKLSAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQotICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQotICAgICwgbV9kb3du
bG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCi0gICAg
LCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50PigpKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKKyAgICAsIG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50
PigpKQorICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50PigpKQorICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RG93bmxv
YWRDbGllbnQ+KCkpCisgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQobWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAg
ICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVy
KHN0ZDo6bWFrZV91bmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0
aGlzKSkKLSAgICAsIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1f
aGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlv
cml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQog
ICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKG1fY29uZmlndXJhdGlvbi0+
c2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbigpKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50
QmFzZSogY2xpZW50KQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYgY2xpZW50KQog
ewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgICAgICBtX2lu
amVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50
PigpOwogICAgIGVsc2UKICAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IFdURk1vdmUo
Y2xpZW50KTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0
aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Qgog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4mJiBoaXN0b3J5Q2xpZW50KQogewogICAgIGlm
ICghaGlzdG9yeUNsaWVudCkKLSAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOworICAgICAgICBtX2hpc3Rv
cnlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7
CiAgICAgZWxzZQogICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGll
bnQpOwogfQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3Rv
cnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpE
b3dubG9hZENsaWVudD4mJiBkb3dubG9hZENsaWVudCkKIHsKICAgICBpZiAoIWRvd25sb2FkQ2xp
ZW50KQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRv
d25sb2FkQ2xpZW50PigpOworICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkRvd25sb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9kb3dubG9hZENsaWVu
dCA9IFdURk1vdmUoZG93bmxvYWRDbGllbnQpOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRv
d25sb2FkQ2xpZW50PiYmIGRvCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+JiYgYXV0b21hdGlvbkNs
aWVudCkKIHsKICAgICBpZiAoIWF1dG9tYXRpb25DbGllbnQpCi0gICAgICAgIG1fYXV0b21hdGlv
bkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAg
ICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVu
dD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1vdmUoYXV0
b21hdGlvbkNsaWVudCk7CiB9CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkMKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAg
IGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQotICAgICAgICBtX2N1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ+KCk7CisgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQpOwogI2VuZGlmCkBAIC00OTIsNyArNDkyLDcgQEAgTmV0d29y
a1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNp
dGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogICAg
IH0KIAotICAgIGF1dG8gbmV0d29ya1Byb2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtQ
cm9jZXNzUHJveHk+KCp0aGlzKTsKKyAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gbWFrZVVuaXF1
ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5PigqdGhpcyk7CiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCkBAIC0yNTEwLDcgKzI1MTAsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYQogICAgICAgICBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJh
YmxlRG9tYWluLnJlbW92ZShtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWlu
LnJhbmRvbSgpKTsKIAogICAgIGF1dG8mIHZhbHVlID0gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJS
ZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgKnZhbHVlID0gcHJld2FybUluZm9ybWF0
aW9uOwpAQCAtMjU1NywxMiArMjU1NywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQ
cm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnRha2VVcGxvYWRBc3NlcnRpb24oKTsKICAgICAgICAgCiAgICAgICAg
IEFTU0VSVCghbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vz
c1VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpV
bmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldl
YktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAg
ICAgfQogICAgIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5hZGQo
cHJvY2Vzc0lELCBudWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5l
dHdvcmtpbmcpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NIYXNV
cGxvYWRzKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKQEAgLTI1OTksMTIgKzI1OTksMTIg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRp
YShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJUaGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBwbGF5aW5nIGF1ZGlibGUgbWVkaWEg
aXMgbm93IG9uZS4gVGFraW5nIFVJIHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwogCiAgICAgICAgIEFT
U0VSVCghbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVBy
b2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNz
ZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3Ms
IEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJh
Y2spOworICAgICAgICBtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBtYWtlVW5p
cXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRp
YSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNv
bjo6TWVkaWFQbGF5YmFjayk7CiAgICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nl
c1BsYXlpbmdBdWRpYmxlTWVkaWEuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJU
KHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwg
QXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdy
b3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDBiMjQyYTJiYjU4Njc0YzAzOGNmN2NmYTQ5MmRiN2Q5NWNh
ZTAwMWUuLmRhMzZmNmJhNThhNTMwNTZlMDhjMmI2NmIyMzhlN2VlMzM4N2U3M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUxLDcgKzE1MSw3
IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSoKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0
aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGlt
ZXIoKTsgfSkKICAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwgbV91c2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eT4oKnRoaXMpKQorICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
KG1ha2VVbmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQogI2VuZGlm
CiAgICAgLCBtX2lzUHJld2FybWVkKGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKaW5kZXggZTlmY2YwMDE1Mzk5NWRjMWNjZTEzNWY4YzA5
MmU5MmU2NmRiZmYzYS4uZDBiYmE1NjRjMjc1ODJkNzgyNmU5ZjJjMjA2MjIzNzAyMjcyOTUzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYnNpdGVEYXRhU3Rv
cmVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfldlYnNpdGVEYXRhU3RvcmVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDE4Mjk0ZDM3
ZmU0OWVlZDZkNjlkZmZmZjVmMmY2NTA3MGI2NmNkOTAuLjdiZGQwM2QzYzhlYzhlMDY2MmU3N2Qw
MTgyNTBiNTA4OGMyNmNmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2Nh
aXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9j
YWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tl
bmQoKQogICAgICAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbCht
X3dlYlBhZ2VQcm94eS52aWV3V2lkZ2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9
IGdka192aXN1YWxfZ2V0X3NjcmVlbih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVO
X1hESVNQTEFZKHNjcmVlbikpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jv
b3Rfd2luZG93KHNjcmVlbikpLAorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3Rv
cmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2lu
ZG93KHNjcmVlbikpLAogICAgICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdk
a192aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7
CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3Rv
cmVCYWNrZW5kQ2Fpcm9JbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9k
ZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGI4NzRmYjBm
YjJlMmE3ZTdlYzM2Y2M0NGUzOWQ2MjQ5MDZhNGM1ZjEuLmY4ODhjMGY0NDZjNjI3MTI3YzgzNzVi
ZTBkODFhNmEzZjJjMDlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvckNsaWVudDo6Y29ubmVjdGlvbkNsb3NlZCgpCiB2b2lkIFJlbW90ZUlu
c3BlY3RvckNsaWVudDo6aW5zcGVjdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRh
cmdldElEKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1
cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0
aW9uSUQsIHRhcmdldElEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90
ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlv
bklELCB0YXJnZXRJRCk7CiAgICAgfSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkg
ewogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zaG93KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVdheWxhbmQuY3BwCmluZGV4IDM4MzEwMDA1ODg5NGRlYzBmYjdiNTFjYWEwOWEyMzlkNzdk
MDhhOGIuLjg5MzI3OWZiY2Y1OGFlYWYyYWZkNmIxYTQ3YzFjNzZjMjNkODJiZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVdheWxhbmQuY3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVXYXlsYW5kOjpjaGVja1JlcXVpcmVtZW50cygpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0
ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRl
bnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+
dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RP
cGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxs
cHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAg
ICAgICAgaWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBn
bEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAg
ICAgICAgICBnbEltYWdlVGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVH
TElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCmluZGV4IGU5YWU2NTUyYTdhMmQ4NjJjNGJkNGVl
MTBlZDJlYzM2ZTkyZjgzMWQuLmNhNjUzZTVlYmE3MGM5NjE1NWZmNzY0ODhjM2VkZjQyODFmODU3
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgU2VsZWN0aW9uRGF0YSogRHJhZ0FuZERyb3BI
YW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY28KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RHJvcHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0ID0gbV9k
cm9wcGluZ0NvbnRleHRzLmFkZChjb250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgaWYgKCFkcm9wcGluZ0NvbnRleHQpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBt
X3BhZ2Uudmlld1dpZGdldCgpOwotICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOworICAgICAgICBkcm9w
cGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRp
b24pOwogICAgICAgICBWZWN0b3I8R2RrQXRvbT4gYWNjZXB0YWJsZVRhcmdldHMoUGFzdGVib2Fy
ZEhlbHBlcjo6c2luZ2xldG9uKCkuZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGRyb3BwaW5n
Q29udGV4dC0+Z2RrQ29udGV4dCkpOwogICAgICAgICBkcm9wcGluZ0NvbnRleHQtPnBlbmRpbmdE
YXRhUmVxdWVzdHMgPSBhY2NlcHRhYmxlVGFyZ2V0cy5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0
byYgdGFyZ2V0IDogYWNjZXB0YWJsZVRhcmdldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgKaW5kZXggNTI1NDIwMzcxZjYxYmQ0YjhmM2Mx
YTM5OWI3YjgyNjFiOTk0ZWExMC4uNTkxNGI3ZTBkZjU0MzFhY2Y2NjM3MTAzZTY4ODA0MDRlZDQ0
M2YzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9w
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiAKIGNsYXNzIERyYWdBbmREcm9wSGFuZGxlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhZ0FuZERyb3BIYW5k
bGVyKTsKIHB1YmxpYzoKICAgICBEcmFnQW5kRHJvcEhhbmRsZXIoV2ViUGFnZVByb3h5Jik7CkBA
IC02NCw2ICs2NSw3IEBAIGNsYXNzIERyYWdBbmREcm9wSGFuZGxlciB7CiAKIHByaXZhdGU6CiAg
ICAgc3RydWN0IERyb3BwaW5nQ29udGV4dCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgRHJvcHBpbmdDb250ZXh0KEdka0RyYWdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKTsKIAogICAgICAgICBHZGtEcmFnQ29udGV4
dCogZ2RrQ29udGV4dCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCmluZGV4IGNiZTM4MGIyNDBkOTYwMTExNzI3Yjc3
MGE4MjVlMDllMDU0N2M5ZWQuLmMzZDk5NzNjNzBkYzIwODljNjgzZDY1YTkxM2RhMjk0ZDVmZmVi
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9z
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3Np
dG9yLmNwcApAQCAtNDIwLDkgKzQyMCw5IEBAIGJvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmluaXRp
YWxpemVFR0woKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0g
c3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxz
ZQotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6
OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVu
c2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNl
bmRpZgogICAgIGlmIChnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikg
fHwgZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQog
ICAgICAgICBnbEltYWdlVGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVH
TElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KaW5kZXggYzIzNDExYzFmMDliMDEw
YTY1MjU0YjM2OWRkMzE2OWQzMWYwYzBlMC4uNjFlODU5NGQ1YjdjNDFhYWY5ZmM4MmM2NTM4ZGI5
YWQ3MTg1NjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRh
YmxlSW1hZ2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9F
ZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQpAQCAtNTgsNyArNTgsNyBAQCBFZGl0YWJsZUltYWdl
Q29udHJvbGxlcjo6fkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkKIEVkaXRhYmxlSW1hZ2UmIEVk
aXRhYmxlSW1hZ2VDb250cm9sbGVyOjplbnN1cmVFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQogewogICAgIGF1dG8gcmVz
dWx0ID0gbV9lZGl0YWJsZUltYWdlcy5lbnN1cmUoZW1iZWRkZWRWaWV3SUQsIFsmXSB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPiBpbWFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8RWRpdGFibGVJbWFnZT4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1h
Z2U+IGltYWdlID0gbWFrZVVuaXF1ZTxFZGl0YWJsZUltYWdlPigpOwogICAgICAgICBpbWFnZS0+
ZHJhd2luZ1ZpZXcgPSBtX3dlYlBhZ2VQcm94eS0+cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdW
aWV3KGVtYmVkZGVkVmlld0lEKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRy
YWNraW5nVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9u
U3RhdGVUcmFja2luZ1ZpZXcubW0KaW5kZXggZDAzYTE3MjZhYjMzNGEwMGU2MGZiYzA1MGI1MGU1
YzMzNzVhZjcyMC4uN2YwZjk0ODRmZDc3NzRkZDExNTdhZTI4ODVjOTBhM2JmMmVlNzlhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRy
YWNraW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCkBAIC02NSw3ICs2NSw3IEBAIC0gKHZvaWQpZGlkTW92
ZVRvV2luZG93CiAgICAgaWYgKCFzZWxmLl9jb250ZW50Vmlldy53aW5kb3cgfHwgX2FwcGxpY2F0
aW9uU3RhdGVUcmFja2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBfYXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXI+KHNlbGYsIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBAc2Vs
ZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tn
cm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOworICAg
IF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpBcHBsaWNhdGlv
blN0YXRlVHJhY2tlcj4oc2VsZiwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVu
dGVyaW5nQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKSk7CiAgICAgCiAgICAgaWYgKF9sYXN0T2JzZXJ2ZWRTdGF0ZVdhc0JhY2tncm91bmQgJiYg
IVtzZWxmIGlzQmFja2dyb3VuZF0pCiAgICAgICAgIFtzZWxmIF9hcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5tbQppbmRleCA2ODExZTg3YTRhNDIxMDA1YmQ5NGE3YWMyMTY1NDNlY2MwMGE3N2ZjLi40MzFm
YWNkMWU2ODM5N2VjODU3MzkxYWIxY2Y4ODhkMzg0MTU3YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBAIC0gKGlu
c3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wmKXByCiAgICAgX3BhZ2UtPnNldERlbGVnYXRlc1Njcm9sbGluZyh0cnVl
KTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBfcGFnZS0+c2V0RnVsbHNjcmVl
bkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4oX3dlYlZp
ZXcpKTsKKyAgICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6
RnVsbHNjcmVlbkNsaWVudD4oX3dlYlZpZXcpKTsKICNlbmRpZgogCiAgICAgV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0yMzksNyArMjM5LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9v
bDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktp
dDIoKTsKIAotICAgIF9wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKKyAgICBfcGFnZUNsaWVudCA9IG1ha2VVbmlxdWU8
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CiAgICAgX3dlYlZpZXcgPSB3
ZWJWaWV3OwogCiAgICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9j
ZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURk1vdmUoY29uZmlndXJhdGlvbild
OwpAQCAtNTQxLDcgKzU0MSw3IEBAIC0gKHZvaWQpX3dlYlZpZXdEZXN0cm95ZWQKIAogLSAoc3Rk
Ojp1bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVh
UHJveHk6KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Jilwcm9jZXNzCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Pigq
X3BhZ2UsIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLCBwcm9jZXNzKTsKIH0KIAogLSAodm9pZClf
cHJvY2Vzc0RpZEV4aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDllMTZjY2JmZDZiMjAxY2I1OWY3Mzg3
YWJhZmY4MThiNTU2MDY5NzIuLmQzZWRhMzY5YzAzNzFjMWYyYzEzYTFkMDU5OTE1ZGI2ZGQ1ZTky
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODA2LDcgKzgwNiw3IEBAIC0gKHZvaWQpc2V0dXBJbnRl
cmFjdGlvbgogICAgIAogICAgIF9hY3Rpb25TaGVldEFzc2lzdGFudCA9IGFkb3B0TlMoW1tXS0Fj
dGlvblNoZWV0QXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwogICAgIFtfYWN0
aW9uU2hlZXRBc3Npc3RhbnQgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgX3NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6U21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlcj4oc2VsZik7CisgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4oc2VsZik7
CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmdsZVRhcENvbW1pdCA9IE5POwogICAgIF9wb3RlbnRp
YWxUYXBJblByb2dyZXNzID0gTk87CiAgICAgX2lzRG91YmxlVGFwUGVuZGluZyA9IE5POwpAQCAt
ODIxLDcgKzgyMSw3IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUExBVEZPUk1fRFJJVkVOX1RFWFRfQ0hFQ0tJTkcpCi0gICAgX3RleHRDaGVja2luZ0Nv
bnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxl
cj4oKl9wYWdlKTsKKyAgICBfdGV4dENoZWNraW5nQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2Vi
S2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyPigqX3BhZ2UpOwogI2VuZGlmCiAKICAgICBfaGFz
U2V0VXBJbnRlcmFjdGlvbnMgPSBZRVM7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCAtIChCT09MKWJl
Y29tZUZpcnN0UmVzcG9uZGVyRm9yV2ViVmlldwogICAgICAgICByZXR1cm4gTk87CiAKICAgICBp
ZiAoIV9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAgICAgICAgX2lucHV0Vmlld1VwZGF0ZURl
ZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVy
PihzZWxmKTsKKyAgICAgICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKIAogICAgIEJPT0wgZGlkQmVj
b21lRmlyc3RSZXNwb25kZXI7CiAgICAgewpAQCAtNTMxMSw3ICs1MzExLDcgQEAgLSAodm9pZClf
ZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24m
KWluZm9ybWF0aW9uIHUKICAgICAgICAgLy8gRGVmZXIgdmlldyB1cGRhdGVzIHVudGlsIHRoZSBl
bmQgb2YgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCBhIG5vdGljZWFibGUgZmxhc2ggd2hlbiBzd2l0
Y2hpbmcgZm9jdXMKICAgICAgICAgLy8gYmV0d2VlbiBlbGVtZW50cyB0aGF0IHJlcXVpcmUgdGhl
IGtleWJvYXJkLgogICAgICAgICBpZiAoIWlucHV0Vmlld1VwZGF0ZURlZmVycmVyKQotICAgICAg
ICAgICAgaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOworICAgICAgICAgICAgaW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+
KHNlbGYpOwogICAgICAgICBbc2VsZiBfZWxlbWVudERpZEJsdXJdOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggYjAyODI0
ODkyMDAzYTA0OTg5MjllNzA2YTU5MDQ1OWE0Zjg3MWFjZC4uYzA4Zjk3ODZmMGVhYWI0YTk3NWJi
NTY0OGM3NDI3YzU2MzZkYmUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCkBAIC05MTIsNyArOTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmVsZW1lbnREaWRGb2N1cyhjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1h
dGlvbiwKICAgICBBUEk6Ok9iamVjdCogdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzKCkudHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCk7CiAgICAgaWYgKG1f
ZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpIHsKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCB0cnkgdG8gZWxpbWluYXRlIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1
bWVudHMgYWx0b2dldGhlciwgaW4gZmF2b3Igb2Ygb25seSBkZWZlcnJpbmcgYWN0aW9ucyB0aGF0
IGFyZSBkZXBlbmRlbnQgb24gcG9zdC1sYXlvdXQgZWRpdG9yIHN0YXRlIGluZm9ybWF0aW9uLgot
ICAgICAgICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxFbGVtZW50RGlkRm9jdXNBcmd1bWVudHM+KEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7
IGluZm9ybWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwgYWN0aXZp
dHlTdGF0ZUNoYW5nZXMsIHVzZXJEYXRhT2JqZWN0IH0pOworICAgICAgICBtX2RlZmVycmVkRWxl
bWVudERpZEZvY3VzQXJndW1lbnRzID0gbWFrZVVuaXF1ZTxFbGVtZW50RGlkRm9jdXNBcmd1bWVu
dHM+KEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7IGluZm9ybWF0aW9uLCB1c2VySXNJbnRlcmFj
dGluZywgYmx1clByZXZpb3VzTm9kZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIHVzZXJEYXRhT2Jq
ZWN0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZVNoYXJlZChSZWY8VwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI+IFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXph
dGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYgcGF5bWVudENvb3JkaW5h
dG9yUHJveHksIFBLUGF5bWVudFJlcXVlc3QgKnBheW1lbnRSZXF1ZXN0KQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBh
eW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3JkaW5h
dG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKIH0KIAogVUlWaWV3Q29udHJvbGxlciAqV2ViUGFn
ZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3Qg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29u
dHJvbGxlci5tbQppbmRleCA4YjEyM2IwYTk3YzAzMGU5NDUwZjVlZDRmOGMxNzRiMzIxYmI0MDdi
Li44ZmY4YTBiZjQ3NWIzZjdiMjM2MjI5ZjQxMmUzZjMyNjZjZjk1OTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9X
S0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbQpAQCAtODgsNiArODgsNyBAQCBwcml2YXRlOgog
fTsKIAogY2xhc3MgV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENsaWVudCA6IFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxT
Y3JlZW5WaWV3Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRl
eCA4MzQzNDg4OWNkY2YyNDljMWMyNzkxYmQwN2JmZmZhMjAxY2Y0ODdkLi5hOTEyOTUzZWM5MWMy
NzMzNjI2NzYzZGFmOWRhMjZiMjQ5MzNjNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgUGFnZUNs
aWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKE5TVmlldyogdmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3
KQogICAgIDogUGFnZUNsaWVudEltcGxDb2NvYSh3ZWJWaWV3KQogICAgICwgbV92aWV3KHZpZXcp
CiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgLCBtX2FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cj4oKSkKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKG1ha2VVbmlxdWU8QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tCmluZGV4IDQzZTlmOTY3YmM4OTc3ZmJmZjhjODY2OGE1Y2NhMWYzODI0YzA4MDkuLjM0
YTY5YmJlMGJiMGQxNzZiNTUxYmFmMmQ3YTM1YzFmYWFjMDM3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tCkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBEZWZh
dWx0V2F0Y2hkb2dUaW1lckludGVydmFsID0gMTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQg
OiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKQEAgLTE1MCw3
ICsxNTEsNyBAQCAtIChpZClpbml0V2l0aFdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgd2ViVmll
dzooTlNWaWV3ICopd2ViVmlldyBwYWdlOihXZWJLaXQ6OgogICAgIF93ZWJWaWV3ID0gd2ViVmll
dzsKICAgICBfcGFnZSA9ICZwYWdlOwogCi0gICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQ+KCk7CisgICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudCA9IG1h
a2VVbmlxdWU8V2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDbGllbnQ+KCk7CiAgICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC0+c2V0UGFyZW50
KHNlbGYpOwogCiAgICAgW3NlbGYgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2VdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5k
ZXggNjYwMzE3YzJmYmM3OWI2OGJiNWI3MzQ3NmE1OGJlZmVhMDliMDZkMy4uNjlkOWQ5ZTJkNDQ0
ODQzZDE1MjcwZjUxMTdmNzc0Y2QyMzdkNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFRleHRGaW5k
ZXJGaW5kQ2xpZW50IDogcHVibGljIEFQSTo6RmluZE1hdGNoZXNDbGllbnQsIHB1YmxpYyBBUEk6
OkZpbmRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFRleHRGaW5kZXJGaW5kQ2xpZW50KFdLVGV4dEZpbmRlckNsaWVudCAqdGV4dEZp
bmRlckNsaWVudCkKICAgICAgICAgOiBtX3RleHRGaW5kZXJDbGllbnQodGV4dEZpbmRlckNsaWVu
dCkKQEAgLTE2OCw4ICsxNjksOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYWdlOihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpcGFnZSB2aWV3OihOU1ZpZXcgKil2aWV3IHVzZQogICAgIF92aWV3
ID0gdmlldzsKICAgICBfdXNlUGxhdGZvcm1GaW5kVUkgPSB1c2VQbGF0Zm9ybUZpbmRVSTsKICAg
ICAKLSAgICBfcGFnZS0+c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7Ci0gICAgX3BhZ2UtPnNldEZpbmRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7
CisgICAgX3BhZ2UtPnNldEZpbmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpUZXh0
RmluZGVyRmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOwogCiAgICAgcmV0dXJu
IHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGVkMGQ1ZmZlOTU4OWY5NWU0NGEwN2YyMjE4
ZWQ4MmMwMGYwMTdkN2UuLmU3NGFkYWMxZTY1ZWJlNWM5OWIzMWQ5MDY3YWU2MTE1OGYzOTg3ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0
b3JDbGllbnQ6OmRpZENsb3NlKENvbm5lY3Rpb25JRCkKIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50OjppbnNwZWN0KENvbm5lY3Rpb25JRCBjb25uZWN0aW9uSUQsIFRhcmdldElEIHRhcmdldElE
LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2luc3BlY3Rv
clByb3h5TWFwLmVuc3VyZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHRhcmdldElEKSwg
W3RoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsICZ0eXBlXSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklE
LCB0YXJnZXRJRCwgdHlwZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3Bl
Y3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCwgdHlwZSk7CiAgICAgfSk7
CiAKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXIuY3BwCmluZGV4IDFiNmQ5Y2M1NGZjNjBiNTNlNDQwMjcxZjIzMDhlN2MwZjQ3Yzg3
NGMuLmE4ODMzZjYyNDg3ZjlhNjcyMTAzOTllYzlmOGZmNWUwOTI3MTJlZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC04NCwxMSArODQsMTEgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYg
cGFnZVByb3h5LAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBjbGllbnQgPSBtX2luc3Bl
Y3RvckNsaWVudHMuZW5zdXJlKHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgW3RoaXMsICZyZXF1
ZXN0VVJMXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3Rv
ckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0
KCkudmFsdWUoKSwgKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNw
ZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwu
cG9ydCgpLnZhbHVlKCksICp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAK
ICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3NhZ2UgbGlzdGVuZXIKLSAgICBhdXRvIGhhbmRs
ZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2Ny
aXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdv
cmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAi
aW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICBw
YWdlUHJveHkucGFnZUdyb3VwKCkudXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlw
dE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogCiAgICAgU3RyaW5nQnVpbGRlciBodG1s
QnVpbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5n
U3RvcmVEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0
b3JlRGlyZWN0MkQuY3BwCmluZGV4IGI2N2Q3M2E0ZGM0ODhiMzFmZGM5YTQ3MjE5NjkxNDA0Mjc0
NDg4MjUuLjVkNTBhZTU1NDY4MGE2ZTllM2RhMmNlODRiZTU2NGQ1YzMyMzdmN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNw
cApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjp1bmlx
dWVfcHRyPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRD4gQmFja2luZ1N0b3JlOjpjcmVhdGVC
YWNrZW5kKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNr
ZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw+KG1fc2l6ZSwgbV9k
ZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChJRDJEMVJl
bmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggY2Q2ZjA4ZmYx
OGJkNTVjMTU1NDQ2M2Q0YTQwYjUxZTQ1YjJlYWI5Zi4uMDMwN2M0ZjlmMTQzZjg2ZGM2MjA4YjQ4
NGJlOGRiNDIyZGMwZjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFn
ZUNsaWVudEltcGwuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xp
ZW50SW1wbChXZWJWaWV3JiB2aWV3KQogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5j
dGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6
Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKm1fdmlldy5wYWdlKCksIHByb2Nlc3Mp
OwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdl
YkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwCmluZGV4IGNkNTM1MmRmN2FhMDRlNjlkOWIwZjk4ZWQwMDFlNWM2MzMyZjc1OTMuLjY3ZTVl
NGIyN2EzYWU4MGFiNjY4ZjZjMzQxN2MwZjBjZTZiN2YwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCBib29sIFdlYlZpZXc6OnJl
Z2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCkKIH0KIAogV2ViVmlldzo6V2ViVmlldyhSRUNUIHJl
Y3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEhXTkQgcGFy
ZW50V2luZG93KQotICAgIDogbV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVu
dEltcGw+KCp0aGlzKSkKKyAgICA6IG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJ
bXBsPigqdGhpcykpCiB7CiAgICAgcmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oCmluZGV4IGI2ZDRhMDQyMGQ1YTVkYmQ2NDYwODNhZjY3ODgwNTFiZjZjYzQ3
ZTAuLmYyZDYyZWE5NzkwZjgwN2E2NWI1ZDNlNThmODBiOTdmMDZhZGJmMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWVudCwgcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb247CiAgICAgZXhwbGljaXQgV2ViUGF5bWVudENvb3JkaW5hdG9yKFdlYlBhZ2Um
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVw
YWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1l
cGFkUHJvdmlkZXIuY3BwCmluZGV4IDRmODEwY2NmMzhlY2ZhMmM5OWVjYmRhODlkMDQxY2ViOGQy
MzMzYjguLmFhYjM0NTdjZWQ2NGE1YTkxMGNkYzU2MmFjYzAxMTUwMGQzYzZjYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3Zp
ZGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5p
dGlhbEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVwYWREYQogICAgICAg
ICBpZiAoZ2FtZXBhZERhdGFzW2ldLmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgbV9nYW1lcGFkc1tpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBhZD4oZ2Ft
ZXBhZERhdGFzW2ldKTsKKyAgICAgICAgbV9nYW1lcGFkc1tpXSA9IG1ha2VVbmlxdWU8V2ViR2Ft
ZXBhZD4oZ2FtZXBhZERhdGFzW2ldKTsKICAgICAgICAgbV9yYXdHYW1lcGFkc1tpXSA9IG1fZ2Ft
ZXBhZHNbaV0uZ2V0KCk7CiAgICAgfQogfQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFdlYkdhbWVw
YWRQcm92aWRlcjo6Z2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYgZ2FtZXBhZERh
dGEpCiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0pOwogCi0g
ICAgbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
R2FtZXBhZD4oZ2FtZXBhZERhdGEpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgo
KV0gPSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhKTsKICAgICBtX3Jhd0dhbWVw
YWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgp
XS5nZXQoKTsKIAogICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBmZDY1MjNkNmZh
N2Q3NTkzZDFiOGQzYjMyYmFiNDYzYTk2OGVhYTI4Li42MzNmMjJmZGZlNDI3MmIzOWRlMjVlYTBl
NGEwYTA0ZDdjZGU2Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYlBhZ2U7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuaAppbmRleCAwYmI0ZjJiNDIxYTNlYzIyODc1NGU2MzgyOWQ0MWFiYmUyZTA2Zjhk
Li5hNmMyODcxNmFiMTY3OGFmZGQ1NzRjOWRmOWZlMjg2ODYzNDYzMDE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0
aW9uTWFuYWdlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYlByb2Nlc3M7CiBjbGFzcyBX
ZWJQYWdlOwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViR2VvbG9jYXRpb25N
YW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFnZXIoV2Vi
UHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggZjNlYzcyMDg3Y2EyODg2N2Y1NGQ5
ZGYwZjUwZDg3MTAyZTAxNmZhMi4uY2E4NWQ1ODVkY2YxYjc2ZWYwYjhkMTFkNTlhZDY2MDRhYzNm
MTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdLVHlwZUlEIFdL
QnVuZGxlR2V0VHlwZUlEKCkKIAogdm9pZCBXS0J1bmRsZVNldENsaWVudChXS0J1bmRsZVJlZiBi
dW5kbGVSZWYsIFdLQnVuZGxlQ2xpZW50QmFzZSAqd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0
b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVS
ZWYpLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50Pih3
a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlU2V0U2VydmljZVdvcmtlclByb3h5Q3JlYXRp
b25DYWxsYmFjayhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIHZvaWQgKCpjYWxsYmFjaykodWludDY0
X3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBmMTJhNWJhNzc0ZDZjYzY4ZDA4
NGYxZjYwMjFjZWJmMzgxYWEzYTU4Li5kYzA3NThhZDc1YWYzNjFkZmJlODE2ZWIxMTNmNDFjN2Yw
OWQ4MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNzcsNyArNzcsNyBAQCBX
S1R5cGVJRCBXS0J1bmRsZVBhZ2VHZXRUeXBlSUQoKQogdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250
ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
LSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVu
dUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNl
dEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKQEAgLTg2
LDIyICs4NiwyMiBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VDb250ZQogCiB2b2lkIFdLQnVuZGxlUGFn
ZVNldEVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZikt
PnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50ID8gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudD4oKndrQ2xpZW50KSA6IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpKTsKKyAg
ICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQo
d2tDbGllbnQgPyBtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50Pigqd2tDbGllbnQpIDogbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JD
bGllbnQ+KCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEZvcm1DbGllbnQoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUZvcm1DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsK
LSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3
a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGll
bnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVu
dChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSog
d2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VS
ZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBX
S0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYs
IFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdl
YktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2Fk
Q2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmpl
Y3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVu
ZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQ
YWdlUG9saWN5Q2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBX
S0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVu
ZGxlUGFnZVBvbGljeUNsaWUKIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsK
LSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ+KHdrQ2xp
ZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlD
bGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0Ns
aWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRCYXNlKiB3a0Ns
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAppbmRleCBlYmQz
ZWY1ZjI5MzA4YzE0MTkzYTE4MWI3ZTFlNGE0MjVmZDIxZGQyLi42OWY3YWYyMmI1Njc1MDRkNGYz
MWYwZDdhNzBiODc0ZTA5ZmE1NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuY3BwCkBAIC01NCw2ICs1NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0
czxXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNsaWVudEJhc2U+IHsKIH0KIAogY2xh
c3MgUGFnZU92ZXJsYXlDbGllbnRJbXBsIDogQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlT3Zlcmxh
eUNsaWVudEJhc2U+LCBwdWJsaWMgV2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlT3Zl
cmxheUNsaWVudEltcGwoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEJhc2UqIGNsaWVudCkKICAg
ICB7CkBAIC0yMTYsNyArMjE3LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdlT3ZlcmxheUdldFR5
cGVJRCgpCiAKIFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgV0tCdW5kbGVQYWdlT3ZlcmxheUNyZWF0
ZShXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgYXV0byBj
bGllbnRJbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdrQ2xp
ZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q2xpZW50
SW1wbD4od2tDbGllbnQpOwogICAgIHJldHVybiB0b0FQSSgmV2ViS2l0OjpXZWJQYWdlT3Zlcmxh
eTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50SW1wbCkpLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tC
dW5kbGVQYWdlQmFubmVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KaW5kZXggYWNjMzVhMjFi
NTlmMWFhMzFlMzMwNTFhNjZiYzEzMDU5OTY2OTlkMy4uZDZmZmQxY2NjMDRhOTNhN2EwOWQyYjM2
NTU5YThmMGMwOTUwZmYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBh
Z2VCYW5uZXJNYWMubW0KQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgUGFnZUJhbm5lckNsaWVudEltcGwgOiBBUEk6
OkNsaWVudDxXS0J1bmRsZVBhZ2VCYW5uZXJDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VCYW5uZXI6
OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgUGFnZUJhbm5lckNsaWVudEltcGwoV0tCdW5kbGVQYWdlQmFubmVyQ2xpZW50QmFzZSog
Y2xpZW50KQogICAgIHsKQEAgLTEwMyw3ICsxMDQsNyBAQCBXS0J1bmRsZVBhZ2VCYW5uZXJSZWYg
V0tCdW5kbGVQYWdlQmFubmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5ZXIoQ0FMYXllciAqbGF5ZXIs
CiAgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdl
QmFubmVyQ2xpZW50SW1wbD4od2tDbGllbnQpOworICAgIGF1dG8gY2xpZW50SW1wbCA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpQYWdlQmFubmVyQ2xpZW50SW1wbD4od2tDbGllbnQpOwogICAgIHJldHVy
biB0b0FQSSgmV2ViS2l0OjpQYWdlQmFubmVyOjpjcmVhdGUobGF5ZXIsIGhlaWdodCwgY2xpZW50
SW1wbC5yZWxlYXNlKCkpLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RP
TS9ET01PYmplY3RDYWNoZS5jcHAKaW5kZXggNDIxMDFmOGM4MmNiMmE1NDgzYmFlNGRjODQ4MDdi
NDE2NWE5MmQ4Ni4uMjJiNDBlNDM5YmJiNjAxNWUxOGFhOGMyNTU4ZTBlNjkzZjVlYjFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L0RPTS9ET01PYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgRE9NT2JqZWN0Q2FjaGVEYXRhIHsK
KyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRE9NT2JqZWN0Q2FjaGVE
YXRhKEdPYmplY3QqIHdyYXBwZXIpCiAgICAgICAgIDogb2JqZWN0KHdyYXBwZXIpCiAgICAgICAg
ICwgY2FjaGVSZWZlcmVuY2VzKDEpCkBAIC03NywxNSArNzgsOCBAQCBzdGF0aWMgRE9NT2JqZWN0
Q2FjaGVGcmFtZU9ic2VydmVyTWFwJiBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkKICAg
ICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyJiBn
ZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJh
bWUpCi17Ci0gICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpLmFkZCgmZnJhbWUsIG51bGxwdHIp
OwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyPihmcmFt
ZSk7Ci0gICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotfQotCiBjbGFzcyBET01P
YmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3Ry
dWN0aW9uT2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCiAg
ICAgICAgIDogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKCZmcmFtZSkKQEAgLTEwNSw3ICs5OSw3
IEBAIGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNv
cmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlCiAgICAgICAgIGlmIChkb21XaW5kb3cgJiYgKCFt
X2RvbVdpbmRvd09ic2VydmVyIHx8IG1fZG9tV2luZG93T2JzZXJ2ZXItPndpbmRvdygpICE9IGRv
bVdpbmRvdykpIHsKICAgICAgICAgICAgIC8vIE5ldyBET01XaW5kb3csIGNsZWFyIHRoZSBjYWNo
ZSBhbmQgY3JlYXRlIGEgbmV3IERPTVdpbmRvd09ic2VydmVyLgogICAgICAgICAgICAgY2xlYXIo
KTsKLSAgICAgICAgICAgIG1fZG9tV2luZG93T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERP
TVdpbmRvd09ic2VydmVyPigqZG9tV2luZG93LCAqdGhpcyk7CisgICAgICAgICAgICBtX2RvbVdp
bmRvd09ic2VydmVyID0gbWFrZVVuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywg
KnRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgbV9vYmplY3RzLmFwcGVuZCgmZGF0YSk7CkBA
IC0xOTEsNiArMTg1LDE0IEBAIGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5h
bDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlCiAgICAgc3RkOjp1bmlx
dWVfcHRyPERPTVdpbmRvd09ic2VydmVyPiBtX2RvbVdpbmRvd09ic2VydmVyOwogfTsKIAorc3Rh
dGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciYgZ2V0T3JDcmVhdGVET01PYmplY3RDYWNo
ZUZyYW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQoreworICAgIERPTU9iamVjdENh
Y2hlRnJhbWVPYnNlcnZlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdENhY2hlRnJh
bWVPYnNlcnZlcnMoKS5hZGQoJmZyYW1lLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0LmlzTmV3
RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9i
amVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUpOworICAgIHJldHVybiAqcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKK30KKwogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBzdGQ6OnVuaXF1ZV9wdHI8
RE9NT2JqZWN0Q2FjaGVEYXRhPj4gRE9NT2JqZWN0TWFwOwogCiBzdGF0aWMgRE9NT2JqZWN0TWFw
JiBkb21PYmplY3RzKCkKQEAgLTIxNSw3ICsyMTcsNyBAQCB2b2lkIERPTU9iamVjdENhY2hlOjpw
dXQodm9pZCogb2JqZWN0SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQogewogICAgIERPTU9iamVjdE1h
cDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdHMoKS5hZGQob2JqZWN0SGFuZGxlLCBudWxs
cHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qo
d3JhcHBlcikpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxE
T01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKIH0KIAogdm9pZCBET01PYmpl
Y3RDYWNoZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikK
QEAgLTIyNCw3ICsyMjYsNyBAQCB2b2lkIERPTU9iamVjdENhY2hlOjpwdXQoV2ViQ29yZTo6Tm9k
ZSogb2JqZWN0SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50
cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBlcikpOworICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4o
R19PQkpFQ1Qod3JhcHBlcikpOwogICAgIGlmIChXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBvYmpl
Y3RIYW5kbGUtPmRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgZ2V0T3JDcmVhdGVET01PYmpl
Y3RDYWNoZUZyYW1lT2JzZXJ2ZXIoKmZyYW1lKS5hZGRPYmplY3RDYWNoZURhdGEoKnJlc3VsdC5p
dGVyYXRvci0+dmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVu
c2lvbk1hbmFnZXIuY3BwCmluZGV4IDRjY2VjNjJlZjBlMTEzMWZhMTNmN2ZiMDYwYzgwZTA3ZWU0
MjUxYWYuLjRkNzQyZTQwOWJiZmM3Y2ZhYjQwOGNkNjUzOGFlZjlmMjI4ZmQ3MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRFeHRlbnNpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCB2b2lkIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUoSW5qZWN0
ZWRCdW5kbGUqIGJ1bmRsZSwgQVBJOjpPYmplY3QqIHVzZQogICAgIHNjYW5Nb2R1bGVzKHdlYkV4
dGVuc2lvbnNEaXJlY3RvcnksIG1vZHVsZVBhdGhzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byBtb2R1bGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0aHNbaV0pOworICAgICAgICBhdXRvIG1v
ZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihtb2R1bGVQYXRoc1tpXSk7CiAgICAgICAgIGlmICgh
bW9kdWxlLT5sb2FkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGluaXRp
YWxpemVXZWJFeHRlbnNpb24obW9kdWxlLmdldCgpLCB1c2VyRGF0YS5nZXQoKSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0V2ViRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwCmluZGV4IDA0MDcyZWI4NjRkYmUzNWY4MGRm
Yzg2YWQwZTg4M2MzZTk5Y2U0NGYuLmNjYjUxZTBkOTY0MGM2NmY4NTk2ZTQ3NDE3MTQwNThlOTEz
OTc2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIFdlYktpdFdlYkVkaXRvciogd2Via2l0V2ViRWRpdG9yQ3JlYXRlKFdlYktpdFdl
YlBhZ2UqIHdlYlBhZ2UpCiB7CiAgICAgV2ViS2l0V2ViRWRpdG9yKiBlZGl0b3IgPSBXRUJLSVRf
V0VCX0VESVRPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VESVRPUiwgbnVsbHB0cikp
OwogICAgIGVkaXRvci0+cHJpdi0+d2ViUGFnZSA9IHdlYlBhZ2U7Ci0gICAgd2Via2l0V2ViUGFn
ZUdldFBhZ2Uod2ViUGFnZSktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZUVkaXRvckNsaWVudD4oZWRpdG9yKSk7CisgICAgd2Via2l0V2ViUGFnZUdl
dFBhZ2Uod2ViUGFnZSktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG1ha2VVbmlxdWU8
UGFnZUVkaXRvckNsaWVudD4oZWRpdG9yKSk7CiAgICAgcmV0dXJuIGVkaXRvcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAppbmRleCA0YTIzYmY1NjAx
MDdjMzFmMWE0ZGUyYzk2MTI5OWE3MDEwODE3NTAxLi5lMzA2ZTNmZWYyNjMxZDU0NjY1NTcxMTZl
NWU0ODdkMzcxYzc4NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5z
aW9uLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIGNsYXNzIFdlYkV4dGVuc2lvbkluamVjdGVkQnVu
ZGxlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVuCiBXZWJL
aXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJbmplY3RlZEJ1bmRsZSog
YnVuZGxlKQogewogICAgIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uID0gV0VCS0lUX1dF
Ql9FWFRFTlNJT04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FWFRFTlNJT04sIE5VTEwp
KTsKLSAgICBidW5kbGUtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkV4dGVuc2lvbklu
amVjdGVkQnVuZGxlQ2xpZW50PihleHRlbnNpb24pKTsKKyAgICBidW5kbGUtPnNldENsaWVudCht
YWtlVW5pcXVlPFdlYkV4dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xpZW50PihleHRlbnNpb24pKTsK
ICAgICByZXR1cm4gZXh0ZW5zaW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFn
ZS5jcHAKaW5kZXggY2ZjNTAzMWVkNmU0YTI5NTRmZTAyYTAzZGE4N2ExNjFjZDJkMzA4Mi4uYzky
MDRiMjM5ODFkN2YxN2FkMDczYjllZDQxMmE4Nzc2ODVjZTdkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtOTUsNiArOTUsNyBAQCBXRUJLSVRfREVGSU5FX1RZUEUo
V2ViS2l0V2ViUGFnZSwgd2Via2l0X3dlYl9wYWdlLCBHX1RZUEVfT0JKRUNUKQogc3RhdGljIHZv
aWQgd2ViRnJhbWVEZXN0cm95ZWQoV2ViRnJhbWUqKTsKIAogY2xhc3MgV2ViS2l0RnJhbWVXcmFw
cGVyIGZpbmFsOiBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJLaXRGcmFtZVdyYXBwZXIoV2ViRnJh
bWUmIHdlYkZyYW1lKQogICAgICAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcih3ZWJGcmFt
ZS5jb3JlRnJhbWUoKSkKQEAgLTEyOCw3ICsxMjksNyBAQCBzdGF0aWMgV2ViS2l0RnJhbWUqIHdl
YmtpdEZyYW1lR2V0T3JDcmVhdGUoV2ViRnJhbWUqIHdlYkZyYW1lKQogICAgIGlmICh3cmFwcGVy
UHRyKQogICAgICAgICByZXR1cm4gd3JhcHBlclB0ci0+d2Via2l0RnJhbWUoKTsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+IHdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdEZyYW1lV3JhcHBlcj4oKndlYkZyYW1lKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gbWFrZVVuaXF1ZTxXZWJLaXRGcmFtZVdyYXBw
ZXI+KCp3ZWJGcmFtZSk7CiAgICAgd3JhcHBlclB0ciA9IHdyYXBwZXIuZ2V0KCk7CiAgICAgd2Vi
RnJhbWVNYXAoKS5zZXQod2ViRnJhbWUsIFdURk1vdmUod3JhcHBlcikpOwogICAgIHJldHVybiB3
cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgpOwpAQCAtNjc4LDExICs2NzksMTEgQEAgV2ViS2l0V2Vi
UGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogICAgIFdlYktpdFdl
YlBhZ2UqIHBhZ2UgPSBXRUJLSVRfV0VCX1BBR0UoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9QQUdFLCBOVUxMKSk7CiAgICAgcGFnZS0+cHJpdi0+d2ViUGFnZSA9IHdlYlBhZ2U7CiAKLSAg
ICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZGVy
Q2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVu
dUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb250ZXh0TWVudUNsaWVudD4ocGFnZSkpOwot
ICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlVUlDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1D
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBh
Z2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8UGFnZVJl
c291cmNlTG9hZENsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFBhZ2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKKyAg
ICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8
UGFnZUNvbnRleHRNZW51Q2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRC
dW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFBhZ2VVSUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBh
Z2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPFBhZ2VGb3JtQ2xpZW50
PihwYWdlKSk7CiAKICAgICByZXR1cm4gcGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01U
ZXh0SXRlcmF0b3IubW0KaW5kZXggODEwNTVjZTdmZGViYTMxOGRhYjA2ODI2MzRjNmJkODRhMzdm
YWU4Yy4uMDg0ZjMwMDVkNjEwM2Q0ZTI1MDMzYzI1NmM3MGMwZTA2NDA0MWNkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01U
ZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgLSAoaWQp
aW5pdFdpdGhSYW5nZTooV0tET01SYW5nZSAqKXJhbmdlCiAgICAgaWYgKCFzZWxmKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CisgICAg
X3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6
OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0ODgwMGJiMzE3OTA2NWU0ZTczMjkzMDY5MDU0
NjgwZTQzNGFmMWZmLi40MjAyMzk2YWJhZmFmMzBkNzE4OWFlYjY4NTA5ZWEyNzE3MWI5NzQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC01NDQsNyArNTQ0LDcgQEAgLSAo
dm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRl
UHJpdmF0ZT4pZm9ybURlbGVnYXQKICAgICB9OwogCiAgICAgaWYgKGZvcm1EZWxlZ2F0ZSkKLSAg
ICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9y
bUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAg
IF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobnVsbHB0cik7CiB9CkBAIC02NzMs
NyArNjczLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNz
UGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICB9OwogCiAgICAgaWYgKGVk
aXRpbmdEZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVlPENsaWVudD4oc2VsZikpOwogICAg
IGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG51bGxw
dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMjBjZTU1OTExZDcwNjUxYzMzNWE3MGFj
ZjI0ZTViZGZjMjFiZDYzMS4uOTk3OWQ2Mzg0ZGZmNWM5ODA1OTFmMjkwODNjOTM3Mjk2MzQ0YTkw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgUmVmUHRyPEluamVj
dGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmIHBhcmEKIEluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZShjb25zdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYXRoKHBhcmFtZXRl
cnMuaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgICwgbV9wbGF0Zm9ybUJ1bmRsZSgwKQotICAgICwg
bV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkp
CisgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4o
KSkKIHsKIH0KIApAQCAtMTE0LDcgKzExNCw3IEBAIEluamVjdGVkQnVuZGxlOjp+SW5qZWN0ZWRC
dW5kbGUoKQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50
KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Q2xpZW50PigpOworICAgICAgICBtX2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3Zl
KGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFD
YWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMGNhNWVhNmQy
YWJlNTcyMTU0ZDIxYmVkMGNjOWEwNTNlN2Q2NmMxOC4uYmZiM2QwNDUxNDM3MzZjMzFkZjk4OGFi
MWIwMGRlNDJiODUzMDg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaApAQCAtMzks
NiArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNz
IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIoV2ViUHJvY2VzcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCmluZGV4IGQ3YzVjNjgzNDRiNzI3MzhkOTQ5N2Rm
MDEyY2EzNzZiYjg0MTg4ZGEuLmIwYmQ1MzRjZTE5ZDczODYxZDgxNzZhODIwNWNkY2U2MTk1ZmQw
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAg
LTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFz
cyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiwgcHJpdmF0ZSBXZWJDb3JlOjpN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQ
YWdlJik7CiAgICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpID0gZGVmYXVs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKaW5kZXggNzMzNTI3NjU4NzFkODI1NWEyM2RiN2I1NWU2ZDQ0ZWU3MzM5MjJk
Ny4uMmU1N2FmMjQ4M2JkMzZiM2RkODVlNGVjMThkZGUxMGY0NDM2ZTg2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTEzMiwzOCArMTMyLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZE1lc3NhZ2UoVCYmIG1lc3NhZ2UsIHNpemVfdCBieXRlCiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAotV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpz
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNz
YWdlLnNpemVJbkJ5dGVzKCk7Ci0gICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVM
ZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVz
c2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1Nv
Y2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOwotICAgIGVs
c2UKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ01lc3NhZ2U+KG1lc3NhZ2UpKTsKLQotICAgIHJldHVybiBTZW5kU3VjY2VzczsKLX0KLQot
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0
IEpTQzo6QXJyYXlCdWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGJ5dGVMZW5ndGgpCi17Ci0gICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVM
ZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5kaW5nTWVz
c2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1Nv
Y2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5n
dGggfSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2Vz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRl
T2Zmc2V0LCBieXRlTGVuZ3RoKSk7Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KIGNs
YXNzIEJsb2JMb2FkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlckNs
aWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmxvYkxv
YWRlcihXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgOiBt
X2xvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNv
cmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKKyAgICAgICAg
OiBtX2xvYWRlcihtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6
OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKICAgICAgICAgLCBt
X2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgIHsKICAg
ICAgICAgbV9sb2FkZXItPnN0YXJ0KGRvY3VtZW50LCBibG9iKTsKQEAgLTIyNiw3ICsxOTksNyBA
QCBjbGFzcyBQZW5kaW5nTWVzc2FnZSB7CiAKICAgICBQZW5kaW5nTWVzc2FnZShXZWJDb3JlOjpE
b2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6Qmxv
YikKLSAgICAgICAgLCBtX2Jsb2JMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9iTG9hZGVyPihk
b2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKQorICAgICAgICAsIG1f
YmxvYkxvYWRlcihtYWtlVW5pcXVlPEJsb2JMb2FkZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkpCiAgICAgewogICAgIH0KIApAQCAtMjQ0LDEzICsyMTcsNDAg
QEAgY2xhc3MgUGVuZGluZ01lc3NhZ2UgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iTG9hZGVy
PiBtX2Jsb2JMb2FkZXI7CiB9OwogCitXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNv
Y2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGF1dG8gYnl0
ZUxlbmd0aCA9IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMoKTsKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVy
ZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAgICAgIHJldHVybiBTZW5kRmFpbDsKKworICAgIGlm
IChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3Nh
Z2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxl
bmd0aCk7CisgICAgZWxzZQorICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVu
aXF1ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2FnZSkpOworCisgICAgcmV0dXJuIFNlbmRTdWNjZXNz
OworfQorCitXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNl
bmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK3sKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91
bnQoYnl0ZUxlbmd0aCkpCisgICAgICAgIHJldHVybiBTZW5kRmFpbDsKKworICAgIGlmIChtX3Bl
bmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpO
ZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwg
Ynl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5n
TWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KGJpbmFyeURhdGEsIGJ5
dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKwog
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKFdlYkNv
cmU6OkJsb2ImIGJsb2IpCiB7CiAgICAgLy8gQXZvaWQgdGhlIEJsb2IgcXVldWUgYW5kIGxvYWRp
bmcgZm9yIGVtcHR5IGJsb2JzLgogICAgIGlmICghYmxvYi5zaXplKCkpCiAgICAgICAgIHJldHVy
biBzZW5kKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShibG9iLnNpemUoKSwgMSksIDAsIDApOwog
Ci0gICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01l
c3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0aGlzXSB7CisgICAgbV9wZW5kaW5nTWVz
c2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCks
IGJsb2IsIFt0aGlzXSB7CiAgICAgICAgIHdoaWxlICghbV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBhdXRvJiBtZXNzYWdlID0gbV9wZW5kaW5nTWVzc2FnZXMuZmly
c3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggMDk0YWM3MWY3ZTVlZmZhYjc0
ODVmY2VmY2FlNTQ4OTNkYjNlMDUwNi4uN2VjMzdjZGYwOWQzOTBhMzgyN2E2OWNhM2Y2MGE2YzMw
NTZkYTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIEFzeW5j
UmVzb2x2ZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6QXN5bmNSZXNvbHZlckZhY3Rvcnkgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKICAgICBydGM6OkFzeW5jUmVz
b2x2ZXJJbnRlcmZhY2UqIENyZWF0ZSgpIGZpbmFsCiAgICAgewpAQCAtNDYsNyArNDcsNyBAQCBj
bGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJG
YWN0b3J5IHsKIAogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRl
cmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBl
ZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3Rvcnkq
IHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZp
Z3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBXZWJDb3JlOjpMaWJXZWJS
VENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCksICpzb2NrZXRGYWN0b3J5LCBX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0
b3J5PigpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENO
ZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CiB9CiAKIHZvaWQgTGliV2Vi
UlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENS
ZXNvbHZlci5oCmluZGV4IDVkNjM4M2Y2YjUwNjUzYjVjNjcwNzA3MDVjNmMxMDI4NzBmYTAyMzEu
LjM5OTA2OTlkMDc3OGZlYjE3YjBjYThlNjA3ODE0MTA4YTVjMDBhZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENS
ZXNvbHZlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTGli
V2ViUlRDU29ja2V0RmFjdG9yeTsKIAogY2xhc3MgTGliV2ViUlRDUmVzb2x2ZXIgZmluYWwgOiBw
dWJsaWMgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENSZXNvbHZlcih1aW50NjRfdCBpZGVudGlm
aWVyKSA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldEZhY3RvcnkuY3BwCmluZGV4IGY4YjdlZDIyOWM0ZjZmMmRjMDM2MTMyY2M5NmU0MTFlZWNh
NTcwMmUuLjIzNTgyZGU3NTliOTg0NWViN2ZlNDA2NDQzNjVlZmJjMTliNzVkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGlu
bGluZSBydGM6OlNvY2tldEFkZHJlc3MgcHJlcGFyZVNvY2tldEFkZHJlc3MoY29uc3QgcnRjOjpT
b2NrZXRBZGRyZXNzJgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRG
YWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBh
ZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0LCBpbnQgb3B0aW9ucykK
IHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Pigq
dGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6
U2VydmVyVENQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0byBzb2Nr
ZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJ
ZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwgYWRkcmVzcywgcnRj
OjpTb2NrZXRBZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVy
KCksIHNvY2tldC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0g
c29ja2V0LT5pZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVzcyhhZGRy
ZXNzLCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1heFBvcnQs
IG9wdGlvbnNdKCkgewpAQCAtNjYsNyArNjYsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBM
aWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoY29uc3QgcnRjOgog
CiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVV
ZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Q
b3J0LCB1aW50MTZfdCBtYXhQb3J0KQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwg
TGliV2ViUlRDU29ja2V0OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygp
KTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywg
KytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6VURQLCBh
ZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQt
PmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2lk
ZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9IHByZXBhcmVTb2NrZXRB
ZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKSwgbWluUG9y
dCwgbWF4UG9ydF0oKSB7CkBAIC04MCw3ICs4MCw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQq
IExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6OlNvY2tl
CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0
ZUNsaWVudFRjcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGxvY2FsQWRkcmVzcywg
Y29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFN0cmluZyYmIHVzZXJBZ2VudCwgaW50IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBz
b2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlx
dWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OkNsaWVudFRDUCwgbG9j
YWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8
TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldl
YlJUQ1NvY2tldDo6VHlwZTo6Q2xpZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3Mp
OwogICAgIHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05ORUNUSU5H
KTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkp
OwogCkBAIC05Niw3ICs5Niw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1Nv
Y2tldEZhY3Rvcnk6OmNyZWF0ZUNsaWVudFRjcFNvY2tldChjb25zdCBydGM6CiAKIHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZU5ld0Nvbm5lY3Rp
b25Tb2NrZXQoTGliV2ViUlRDU29ja2V0JiBzZXJ2ZXJTb2NrZXQsIHVpbnQ2NF90IG5ld0Nvbm5l
Y3Rpb25Tb2NrZXRJZGVudGlmaWVyLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZUFk
ZHJlc3MpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1Nv
Y2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6
OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5sb2NhbEFkZHJlc3MoKSwg
cmVtb3RlQWRkcmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1Nv
Y2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6
OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5sb2NhbEFkZHJlc3MoKSwg
cmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENTb2NrZXQ6OlNU
QVRFX0NPTk5FQ1RFRCk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwg
c29ja2V0LmdldCgpKTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTGliV2ViUlRDU29ja2V0
RmFjdG9yeTo6ZGV0YWNoKExpYldlYlJUQ1NvY2tldCYgc29ja2V0KQogCiBydGM6OkFzeW5jUmVz
b2x2ZXJJbnRlcmZhY2UqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUFzeW5jUmVzb2x2
ZXIoKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1Jl
c29sdmVyPigrK3NfdW5pcXVlUmVzb2x2ZXJJZGVudGlmaWVyKTsKKyAgICBhdXRvIHJlc29sdmVy
ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytzX3VuaXF1ZVJlc29sdmVySWRlbnRp
Zmllcik7CiAgICAgYXV0byogcmVzb2x2ZXJQb2ludGVyID0gcmVzb2x2ZXIuZ2V0KCk7CiAgICAg
bV9yZXNvbHZlcnMuc2V0KHJlc29sdmVyUG9pbnRlci0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKHJl
c29sdmVyKSk7CiAgICAgcmV0dXJuIHJlc29sdmVyUG9pbnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXIuaAppbmRleCAyZDFlODQyNDdiZDBhMzBjOTRkMWYyZWEzMDFkZDU1ZDAyYTZlMDc2
Li5iMjcxM2Y0NmMxZmMxM2M5ZjI3YmJlMzljYTVkYzUxODUwYjE4M2VlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFz
cyBXZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIDogcHVibGljIFdl
YlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXIoV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmlu
ZGV4IDE2YTFhN2Y4MzQ0NjA1M2YzM2Q2NTRlODMzMzIyOTUwZWU5OTRkNzIuLmQ3M2YxZjE2Zjg5
MDc2OWM3MmNjOWRkNDQwZDIyOTIxZmY1ZmZhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90
ZWN0b3IgewogICAgIGV4cGxpY2l0IFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKE5ldHNjYXBl
UGx1Z2luKiBwbHVnaW4pCiAgICAgewogICAgICAgICBpZiAocGx1Z2luKQotICAgICAgICAgICAg
bV9wcm90ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRl
c3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9s
bGVyKCkpOworICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBtYWtlVW5pcXVlPFBsdWdpbkNvbnRy
b2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihw
bHVnaW4pLT5jb250cm9sbGVyKCkpOwogICAgIH0KICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKaW5kZXggNjlhM2M5M2YxMzI2ZmE0YzZmN2ZlYmY4YWIxYjJjYTRjNzc2YmMw
ZS4uNTlmNDgyNTFmMjg4NTRjNmQxNjgwYjFkNjRkZmFhNWE0N2M2ODEwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIHVpbnQzMl90IE5ldHNjYXBlUGx1Z2lu
OjpzY2hlZHVsZVRpbWVyKHVuc2lnbmVkIGludGVydmFsLCBib29sIHJlcGVhdCwgdm9pZCAoKnRp
CiAgICAgLy8gRklYTUU6IEhhbmRsZSB3cmFwcGluZyBhcm91bmQuCiAgICAgdW5zaWduZWQgdGlt
ZXJJRCA9ICsrbV9uZXh0VGltZXJJRDsKIAotICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwor
ICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBpbnRlcnZh
bCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogICAgIAogICAgIC8vIEZJWE1FOiBCYXNlZCBvbiB0aGUg
cGx1Zy1pbiB2aXNpYmlsaXR5LCBmaWd1cmUgb3V0IGlmIHdlIHNob3VsZCB0aHJvdHRsZSB0aGUg
dGltZXIsIG9yIGlmIHdlIHNob3VsZCBzdGFydCBpdCBhdCBhbGwuCiAgICAgdGltZXItPnN0YXJ0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBlMGFiYzJjN2I0MTI5OTMwMDJiYmFiOGJkZmFi
N2YyNjUxYWRjNTdmLi5iNmM3NmI2ZWQ3MTRjYWFhM2E0MWRkZTQxYzFkNmExMDRmYjdhZWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTMwOCw2ICszMDgsNyBAQCBjbGFzcyBOZXRzY2FwZVBs
dWdpbiA6IHB1YmxpYyBQbHVnaW4gewogICAgIFZlY3Rvcjxib29sLCA4PiBtX3BvcHVwRW5hYmxl
ZFN0YXRlczsKIAogICAgIGNsYXNzIFRpbWVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbWVyKTsKIAogICAgIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAwNDk2MjhmNWM2Mjcw
MmU0ZDVkNDExMTgyMDEyM2JhNWY0Yjk2NTI0Li5iZGFhMTQ0Nzg0MjI2OTVkNTBlYTg0OGFhZmNj
YmNlMTJkMmFkOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC0x
OTMsNyArMTkzLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0g
TlBfQVNGSUxFT05MWSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAg
ICAgbV9kZWxpdmVyeURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4oKTsK
KyAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8dWludDhfdD4+
KCk7CiAKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2VydmVDYXBhY2l0eShtX2RlbGl2ZXJ5
RGF0YS0+c2l6ZSgpICsgbGVuZ3RoKTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPmFwcGVuZChi
eXRlcywgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4
IDQ0ZDExYjU3YzNlYTZkNTE4YzE4ZDA0YjgyMmQyODZkNTNlOTY4Y2YuLjA3ZDU1NmMzYjdmYzYz
NzE5YzJhMjU1OWUwYWFkNmMyMjZjMDdjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1
Z2luWDExLmNwcApAQCAtMTM2LDEwICsxMzYsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBl
UGx1Z2luWDExPiBOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2luJiBwbHUK
IAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAocGx1Z2luLmlzV2luZG93ZWQoKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlz
cGxheSwgd2luZG93SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdp
blgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkpOwog
fQogCiBOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVnaW4m
IHBsdWdpbiwgRGlzcGxheSogZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmgKaW5kZXggNDFlOWI2YzlkODRjYWE0OTU4ZTM4NWI5ZWQ4MGZkZDdlMTFkY2E1Yi4uMWY5ZmQ4
N2ZhM2EzMGM5MzYwNDM4ZWQ1OTdkYzMyYzg5NTg3YWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBOZXRzY2FwZVBsdWdpbjsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5YMTEgZmluYWwgOiBwdWJs
aWMgTmV0c2NhcGVQbHVnaW5Vbml4IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDExPiBjcmVh
dGUoTmV0c2NhcGVQbHVnaW4mKTsKICAgICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdp
biYsIERpc3BsYXkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCBhMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEzM2I4MWRm
ZjRkMTc2YjM1Li5iNTcyYWEzYTUzNmQ0ODVjYjliODE3YTE2ZTAyYzMzMmM0YmMyMTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxl
ci5oCkBAIC0xNTksNiArMTU5LDcgQEAgY2xhc3MgUGx1Z2luQ29udHJvbGxlciB7CiAKICAgICAv
LyBIZWxwZXIgY2xhc3MgZm9yIGRlbGF5aW5nIGRlc3RydWN0aW9uIG9mIGEgcGx1Zy1pbi4KICAg
ICBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7CisgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1
Y3Rpb25Qcm90ZWN0b3IoUGx1Z2luQ29udHJvbGxlciogcGx1Z2luQ29udHJvbGxlcikKICAgICAg
ICAgICAgIDogbV9wbHVnaW5Db250cm9sbGVyKHBsdWdpbkNvbnRyb2xsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggZjM3YzJj
YzI0ZTNkZDk3NjNmM2ViZGQ2MzJkOGJmZGI3NzE0NDM0Ny4uOWFiNTgzNzMwYjg5ZGJkOTYwMWQ2
NTIwZWY4ZjliMGJlMDA2ZGM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtOTUsNyArOTUsNyBAQCBib29sIFBsdWdpblByb3h5
Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgbV9jb25uZWN0
aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlzKTsKIAogICAgIC8vIEFzayB0aGUgcGx1Zy1pbiBwcm9j
ZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4uCi0gICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7Cisg
ICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gbWFrZVVuaXF1ZTxQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnM+KCk7CiAKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMtPnBsdWdpbkluc3RhbmNlSUQgPSBtX3BsdWdpbkluc3RhbmNlSUQ7CiAgICAgbV9wZW5k
aW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT53aW5kb3dOUE9iamVjdElEID0gd2luZG93TlBP
YmplY3RJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCA3YWI4OTY2ZGI5MDVhZGQxMjM5NDgxNjUwYjE5ZGU0YTdlN2QyMjNmLi4x
MTlkMmI5MGMyYjQ0MjMxZjI1Njk1N2U2MmRkY2E4ZjEzMGZjNzMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtODk4LDcgKzg5OCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQo
TW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgaWYgKGV2ZW50Lm1ldGFLZXkoKSkKICAgICAg
ICAgbW9kaWZpZXJzLmFkZChXZWJFdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5i
dXR0b25zKCksIG1fcGx1Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVudC5vZmZz
ZXRYKCksIGV2ZW50Lm9mZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAw
LCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5idXR0b25zKCksIG1f
cGx1Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVudC5vZmZzZXRYKCksIGV2ZW50
Lm9mZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlja0NvdW50
LCBtb2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6aGFu
ZGxlRXZlbnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CmluZGV4IDZmYzA5YzRmNjViMjQ1YjYwYmY0ZDRmNTk3YTlmOTBhZDRkMGFhZjkuLmExZmYwMzNi
MjA0ZWFmYWRjODg4YTgyMDhhODlmNzlkYTAwYmNmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dAogCiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBtb3ZlZCBkaXJlY3RseSB0
byBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uCiAgICAgLy8gSWYgaXQgd2Vy
ZW4ndCBmb3IgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50J3MgZGVwZW5kZW5jZSBvbiBX
ZWJEb2N1bWVudExvYWRlciwgdGhpcyBjb3VsZCBhbHJlYWR5IGhhcHBlbi4KLSAgICBhdXRvIGZy
YW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNTZXJ2aWNl
V29ya2VySUQsIGVmZmVjdGl2ZVVzZXJBZ2VudCk7CisgICAgYXV0byBmcmFtZUxvYWRlckNsaWVu
dCA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PigqdGhpcywgc2Vz
c2lvbklELCBtX3BhZ2VJRCwgKyttX3ByZXZpb3VzU2VydmljZVdvcmtlcklELCBlZmZlY3RpdmVV
c2VyQWdlbnQpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFt
ZSA9IGZyYW1lTG9hZGVyQ2xpZW50LmdldCgpOwogICAgIG1fbG9hZGVycy5hZGQoV1RGTW92ZShm
cmFtZUxvYWRlckNsaWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKaW5kZXggOTIwZGVkMDQwY2U1NjE4MzM5OWY2Yzkz
YjgyZWIzNmRmNzMwNDk2YS4uOTMwZTQ2MTgxOWUxODZmNWE4MGQ4ZjY3MTZmYjExOGM0ZGMwZWE4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmln
aW5UYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuaApAQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNXT3JpZ2luVGFibGUgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNXT3JpZ2luVGFibGUoKSA9IGRl
ZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA0ZGY2ZjAx
OWU1NTg1NzU1MmM4NGRmYWI5MjUwYzQwMWE4NGNiODM1Li5mNGNmMjkxYTQwMTBiMWU3YzI0MTY3
ZDQ1NGI1NGVjNGI4NjRjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
CkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0
dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggM2M4NzJmNWFkZjM5YmVhY2QzYTcwNjY3YjI2ODlkMzhjOWIxMTEyZS4uNGQyNzQ3Njg2MjBl
NWE0NmViOTUwOGZkZTQ3YjU3MWU3OTZmMTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAg
LTc5Myw3ICs3OTMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxpY2F0aW9u
Q2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLAogCiBzdGQ6OnVuaXF1ZV9w
dHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xv
ckNob29zZXJDbGllbnQmIGNsaWVudCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2UsICZjbGll
bnQsIGluaXRpYWxDb2xvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29sb3JDaG9vc2Vy
PigmbV9wYWdlLCAmY2xpZW50LCBpbml0aWFsQ29sb3IpOwogfQogCiAjZW5kaWYKQEAgLTgwMiw3
ICs4MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6
OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbAogCiBzdGQ6OnVuaXF1ZV9wdHI8RGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPigmbV9w
YWdlLCAmY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCBjZWQzNmE2YzI1YjdlNGY4MzQ0YTU4OTk0MDA2NzkxZjdjYzkyNzZmLi5kNDU1NmQ5
ODdhMzY2ZDE4MTE0MDhhZDkwYmY3YTM0N2RkNTk4ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBA
IC00MSw2ICs0MSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3Mg
V2ViQ2hyb21lQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50
KFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCA2YzI5YjRlMDgx
MjZlN2NkNjY3OWNjNDcwMjM1YzU1NzRkZTUwZDJlLi5jMWM4OWNkOTllODdhZWU4NGVkNTc0NmMy
ZTgxZjY0N2U4MmYxZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzUsNiAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkNv
bnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNs
aWVudChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgK
aW5kZXggMWFkNGMzZGUyY2I3ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVkYTgyMS4uYjI0ZWNmNzZj
NDU1MjRmNjBkODZhZWQ2ZmIxZWNmNmYwZjM5NDIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zNSw2
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2Vi
RHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlBhZ2UqIHBhZ2Up
CiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMjY4MTAyZmVh
MWE3NzU3ZWQ3ZTE2ZGRlY2NlM2NhZDhlZTZiZDQzNS4uZDIyZDRjYjczZjI5NzNmNTY1NWE4NzNl
YmQyMmQ2YjAwNmFlMGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpU
ZXh0Q2hlY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDMwZjVhZDZiNGJjMmE2MzhkNjAz
N2Y4ZWM5NzM4MDlkZjZlNTZiMTguLjM1YTMxZmMyYTM0NGIzMTI4NzMwNTA0YjdmZTdhMTE1ZjAx
MWI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25D
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlBh
Z2UmIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCmluZGV4IDdjZGFhY2QxZmMxZDQ2ZDY1ZWFkYzNmM2E2MTM0YWEzNTU4YTJkMTEuLmQ2N2I2
MmMwMmU2ODgzYjQ0ODY1ZmJhMTU4NTE2ZWEwY2JjYjVjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNo
b3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghbV9w
YWludEluZGljYXRvckxheWVyQ2xpZW50KQotICAgICAgICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRo
aXMpOworICAgICAgICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBtYWtlVW5pcXVlPFJl
cGFpbnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRoaXMpOwogCiAgICAgYXV0byBwYWludExheWVy
ID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhpY3NM
YXllckZhY3RvcnkoKSwgKm1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCk7CiAgICAgCkBAIC0x
NjIsOSArMTYyLDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHBhaW50TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihD
b2xvcigxLjBmLCAwLjBmLCAwLjBmLCAwLjJmKSk7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCBm
YWRlS2V5ZnJhbWVzKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICBmYWRlS2V5ZnJhbWVz
Lmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKKyAg
ICBmYWRlS2V5ZnJhbWVzLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAs
IDEpKTsKIAotICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oMC4yNSwgMCkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VV
bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMC4yNSwgMCkpOwogICAgIAogICAgIGF1dG8gb3Bh
Y2l0eUFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CiAgICAgb3BhY2l0eUFuaW1hdGlv
bi0+c2V0RHVyYXRpb24oMC4yNSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZjVlY2M2
NGM5MjNmMzg2YzUwZTdiNTI5NzdlZmMwOTllMGJjZmFkNi4uMjdjM2VlMTQyZTE2MTZlNDM1ZjQ4
ZDQxZjI3MjcxNWZlOGUwMzgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNDIsNiAr
NDIsNyBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50
OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50LCBwcml2YXRlIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogZnJpZW5kIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNs
aWVudDsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViUGFnZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCA1MzNiZTg0MGNhZDcx
NDU1NWRhZjBhYTIwNzI4YTNjOTMzNTVjOWJlLi40YmIzN2ZkZDYwNzc3NGVkODA5YTk2N2E3NzUx
NWZiYWZiNmVmNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90
aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggMTYzN2FkMTA5N2Q3NjQ5ZTUwZGY3NGY1
ZTA2MjI3MjcxZmFiODQ1YS4uMDBjYzBhMDhkOTI2MDRmZGRmYjVjYTYyZjZiODg1OTVjMzFhYjBk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJQ
YWdlKik7CiAgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92
ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKaW5kZXggNzkwMDg0Y2U0OGQyMjZiMTBlNjY1YjgyODQ0
MzQ5ZmRhYWZmZWU0Ni4uNjlmMGFlODI3OTUwN2I3Mjk2NWY2NWMyMTY4NzNjNDgxYWRmNGQ2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBh
c3RlYm9hcmRPdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2
b2lkIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OmFkZE92ZXJyaWRlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cgogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vdmVycmlkZXNN
YXAuYWRkKHBhc3RlYm9hcmROYW1lLCBudWxscHRyKTsKIAogICAgIGlmIChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxTdHJpbmcsIFZlY3Rv
cjx1aW50OF90Pj4+IHR5cGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8dWludDhfdD4+PigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxTdHJp
bmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5n
LCBWZWN0b3I8dWludDhfdD4+PigpOwogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gV1RGTW92ZSh0eXBlTWFwKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAppbmRleCBmNmUw
MTQ5NTdlZGMyNzdkYjk4MzczMTI3ZWMxMDYzZTkzNTU4Y2I4Li5jZjkwYTVkZmNmZGE2M2VjYjk4
OTdjYzY2ZDBkNDgxMjk0NDgxM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCkBAIC0zNCw2ICszNCw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUGx1Z0lu
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OlBsdWdJbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViUGx1Z0luQ2xpZW50KFdlYlBh
Z2UmKTsKICAgICB2aXJ0dWFsIH5XZWJQbHVnSW5DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVz
c1RyYWNrZXJDbGllbnQuaAppbmRleCA1ZGQ2NWJmYTBkNTBjY2ZkYjE0NjFmZWIzZmU1MjQxZmNh
YTBmYmE2Li42M2Q3NzRlNWE5NDI3YzczNWI1MjQ5MGJkMDFjZDc5YWI3NGExMGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlckNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViUHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50KFdlYlBhZ2UmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQuaAppbmRleCBlYWQxN2QzMGYwNTkwZDc0NDY3MjA1NWNhZDc3ZDk1YzZkMGE0NzcwLi43YmQ4
NzU5MDVhNjVjNzdkOTZjM2Y3ODg0MDAxODU4MmNmYWY3NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc0NsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViUGFnZTsKICAgICAKIGNsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudChXZWJQYWdl
JiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCmlu
ZGV4IDEwOTMwNDUzY2U3OTdlZGQ5MGRlNzZmMDM1NGI5YTFkNDA2ZjJlNmUuLjY5NTIxNzRiOTEy
Yzk3MWUzNTc4NmUyN2M0ODIyNWQyZmNhMTQwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgK
QEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBj
bGFzcyBXZWJVc2VyTWVkaWFDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlhQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJVc2VyTWVk
aWFDbGllbnQoV2ViUGFnZSYpOwogICAgIH5XZWJVc2VyTWVkaWFDbGllbnQoKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcAppbmRleCA5Y2ZmY2M5YTlmZDJiNjQ0NDkyMmY4NTRhZDk3ZDFkMzMxZTcw
YjBlLi5iMjQ1ODFjOTdlN2E4ODE2ZjQ2YWY5MzE5YTkxZWEyMWI3MmJkNjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5h
dGVkR3JhcGhpY3M6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkK
ICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFi
bGVkKHRydWUpOwogICAgIH0gZWxzZSB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQot
ICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyVHJlZUhvc3Q+
KG1fd2ViUGFnZSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8TGF5ZXJU
cmVlSG9zdD4obV93ZWJQYWdlKTsKICNlbHNlCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAppbmRleCBjMDczOTZmMDJmMWZhNjVmNDVhY2VlNzJmMTM0
ZjRmYjJkOWU4OTA5Li41MzU4Y2Q2ODYzYjMyMjY5NThlZTI3NGVmZDAzMmFkMjAwNjRkZDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3Bw
CkBAIC01MCwxMyArNTAsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5n
QXJlYTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2UKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIERyYXdpbmdBcmVh
VHlwZVRpbGVkQ29yZUFuaW1hdGlvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2Vi
UGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90
ZUxheWVyVHJlZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7
CiAjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikK
ICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZUNvb3JkaW5hdGVkR3JhcGhpY3M6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2Vi
UGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5oCmluZGV4IDBmMjY0MDNlYmI3MGE4MTFiMThlOTg3OTVlMTlkZTc3NDBiZTgzNjAuLjFhNTM1
ZjE3ZDk3ZjY2NjgzOTcyNjlhODZlMjg1N2IyOWI5NzJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEZpbmRDb250cm9s
bGVyIDogcHJpdmF0ZSBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGaW5kQ29udHJvbGxl
cik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAKaW5kZXggNDUyZjUzYmNlZGMwMDQ3ZjczM2QxYzM0YmNkNzY1MTE5MmNiOGJlNi4u
NDZlOGFhMDk5ODY0NWE4Y2U1ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBA
QCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKICAgICBB
U1NFUlQobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsKIAogICAgIGlmICghbV9w
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9y
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOworICAg
ICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZT4odGhpcyk7CiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKIH0KQEAgLTUy
MSw3ICs1MjEsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnRyYW5zZm9ybSgpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVy
dGllcy50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2
YWx1ZSk7CisgICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFu
Z2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApA
QCAtNTMyLDcgKzUzMiw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZh
bHVlKQogewotICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMuc3Vi
bGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7
CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6U3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNzM4LDcgKzcz
OCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRPcGFjaXR5KGZsb2F0IHZhbHVl
KQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzKQogewotICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gc3RkOjpt
YWtlX3VuaXF1ZTxGaWx0ZXJPcGVyYXRpb25zPihmaWx0ZXJzKTsKKyAgICBtX3Byb3BlcnRpZXMu
ZmlsdGVycyA9IG1ha2VVbmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CiAgICAgbV9w
cm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6RmlsdGVyc0NoYW5nZWQpOwogfQogCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcm91bmRlZFIKICAgICBpZiAobV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgJiYgKm1f
cHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID09IHJvdW5kZWRSZWN0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlx
dWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgIG1fcHJvcGVydGllcy5zaGFw
ZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7
CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6U2hhcGVSb3VuZGVkUmVjdENoYW5nZWQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcu
Y3BwCmluZGV4IDFjYmQxYjRiYTc5YTdkZjljZTU1ZTA0MjFkNDRlNjViNDA4ODIxYzIuLjA5OTUz
NmI5M2MwMTFhYzNmMmEwNzNjM2NhNDY0ZjA3MjY0NjljZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3Bw
CkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2lu
ZyhMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1v
dGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogICAgIDogUGxhdGZvcm1DQUxheWVyUmVtb3Rl
KGxheWVyVHlwZSwgb3duZXIsIGNvbnRleHQpCi0gICAgLCBtX3RpbGVDb250cm9sbGVyKHN0ZDo6
bWFrZV91bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV90aWxlQ29udHJvbGxl
cihtYWtlVW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDVlNTBl
MGJhMWVmMTI0NmM2YWUwOGYyOWQ5MmE4MzBlMGRiNGYyMzcuLjQ0NDZmMzRkMDRjY2ZiZmJlYjM2
OWJhNDRjMzIwNmJmMGRkMjNlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVt
b3RlTGF5ZXJUcmVlLCBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciwgd2ViUGFnZSkK
LSAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxh
eWVyVHJlZUNvbnRleHQ+KHdlYlBhZ2UpKQorICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0
KG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCiAgICAgLCBtX3Jv
b3RMYXllcihHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRo
aXMpKQogICAgICwgbV9sYXllckZsdXNoVGltZXIoKnRoaXMsICZSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6Zmx1c2hMYXllcnMpCiB7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJU
cmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5z
YWN0aW9uLCBzY3JvbGxpbmdUcmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdl
czo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBt
YWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIGNvbW1pdEVuY29kZXItPmVuY29kZShtZXNzYWdl
LmFyZ3VtZW50cygpKTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZs
dXNoaW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGFhZGUzZDlmMTg0NGQ3ZjA1YzA5MjE4
ZDhlMjA0NGQ1OGEyZjA1ZjguLmIyYmRjNDFiNzIzMzZiYjZlNDg0OTBmNzMxYjI0ODVkMjcwNzgy
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3RvcihXZWJQYWdlJik7CiAgICAgflZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA2MGNm
ZDhkMmExNzU0YTdhY2VkNThkNjFkZjE3YmU0YzE0MzEzNjk0Li5iZGQ0YjM5NTI1NGE3MTY3NjM5
YWVjZDczODYwZTA3MmQ2OWM0MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJG
cmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJh
bWUqIGMKIAogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSog
cGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50KQogewotICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShtYWtlVW5p
cXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAg
IGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25lckVs
ZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTMzNjU3MGQ5M2FhNTExMDY5
Nzg1NjExNzAyNjA4OTNiOGEzY2RiNC4uZGIzMmRhNDgxMzllMTlmNzE0MjEyNTY1NDBhMjE2MzIz
NGNjOTEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTM4MywyMSArMzgzLDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1f
dGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5KG1ha2VVbmlxdWVSZWY8VGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5PigqdGhpcykpCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKQotICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQorICAgICwgbV92
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKG1ha2VVbmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcj4oKnRoaXMpKQogI2VsaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRG
T1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQogI2VuZGlmCiAg
ICAgLCBtX3NldENhblN0YXJ0TWVkaWFUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQ
YWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKLSAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51
Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xp
ZW50PigpKQogI2VuZGlmCi0gICAgLCBtX2VkaXRvckNsaWVudCB7IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KLSAgICAsIG1fZm9ybUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCi0g
ICAgLCBtX2xvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlBhZ2VMb2FkZXJDbGllbnQ+KCkpCi0gICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKSkKLSAg
ICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
VUlDbGllbnQ+KCkpCisgICAgLCBtX2VkaXRvckNsaWVudCB7IG1ha2VVbmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCisgICAgLCBtX2xvYWRlckNs
aWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCkp
CisgICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OlJlc291cmNlTG9hZENsaWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDb250cm9s
bGVyKG1ha2VVbmlxdWVSZWY8RmluZENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdl
dENvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlciht
YWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCiAgICAg
LCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9y
Q3JlYXRlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQogI2lmIEVOQUJMRShH
RU9MT0NBVElPTikKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIo
bWFrZVVuaXF1ZVJlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMp
KQpAQCAtNDY0LDIxICs0NjQsMjEgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VD
b25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCA9IG5ldyBXZWJQbHVnSW5DbGllbnQoKnRoaXMpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJG
cmFtZUxvYWRlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJD
bGllbnQgPSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KCp0aGlzKTsKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5w
ZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBlcmZvcm1hbmNl
TG9nZ2luZ0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRo
aXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IG1h
a2VVbmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7CiAKICNpZiBFTkFC
TEUoV0VCR0wpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViR0xTdGF0ZVRyYWNrZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkdMU3RhdGVUcmFja2VyPihbdGhpc10oYm9vbCBpc1VzaW5nSGlnaFBl
cmZvcm1hbmNlV2ViR0wpIHsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tl
ciA9IG1ha2VVbmlxdWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdo
UGVyZm9ybWFuY2VXZWJHTCkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNldElzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTChpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2Vi
R0wpKTsKICAgICB9KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJh
dGlvbi5zcGVlY2hTeW50aGVzaXNDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNp
c0NsaWVudD4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQ+KCp0aGlzKTsKICNlbmRpZgogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UgPSAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UoKTsKQEAgLTQ5MywxNCArNDkzLDE0IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBwYWdlQ29uZmlndXJhdGlv
bi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yPigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gcGFy
YW1ldGVycy5hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCiAKLSAgICBtX3BhZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBtX3Bh
Z2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAg
IC8vIFNldCB0aGUgc2Vzc2lvbklEICpiZWZvcmUqIHVwZGF0aW5nIHRoZSBwcmVmZXJlbmNlcyBh
cyB0aGUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBwcmVmZXJlbmNlcyBtYXkgbmVlZCB0byBvdmVy
cmlkZSBpdC4KICAgICBpZiAocGFyYW1ldGVycy5zZXNzaW9uSUQuaXNWYWxpZCgpKQpAQCAtODUz
LDcgKzg1Myw3IEBAIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xp
ZW50PiYmIGNvbnRleHRNZW51Q2xpZW50KQogewogICAgIGlmICghY29udGV4dE1lbnVDbGllbnQp
IHsKLSAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRl
eHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4
dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg2NCw3ICs4NjQs
NyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdQogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRp
dG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCkKIHsKICAgICBpZiAoIWVkaXRvckNsaWVudCkgewot
ICAgICAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6RWRpdG9yQ2xpZW50PigpOworICAgICAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZToKIHZv
aWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYg
KCFmb3JtQ2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJ
bmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkYKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PiYmIGxv
YWRlckNsaWVudCkKIHsKICAgICBpZiAoIWxvYWRlckNsaWVudCkgewotICAgICAgICBtX2xvYWRl
ckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRl
ckNsaWVudD4oKTsKKyAgICAgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTkwNSw3ICs5MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1
bmRsZVBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNlKgogdm9pZCBXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PiYmIGNsaWVudCkKIHsKICAg
ICBpZiAoIW1fcmVzb3VyY2VMb2FkQ2xpZW50KQotICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xp
ZW50PigpOworICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAg
bV9yZXNvdXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBAIC05MTMsNyArOTEz
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEIKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRC
dW5kbGVVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJ
Q2xpZW50PiYmIHVpQ2xpZW50KQogewogICAgIGlmICghdWlDbGllbnQpIHsKLSAgICAgICAgbV91
aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xp
ZW50PigpOworICAgICAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlVUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0MTAs
MTQgKzE0MTAsMTQgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQotICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICBt
X2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKLSAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwotICAgIG1f
Zm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNs
aWVudD4oKTsKLSAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAgICBtX2VkaXRvckNsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOworICAgIG1fZm9y
bUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsK
KyAgICBtX2xvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZUxvYWRlckNsaWVudD4oKTsKICAgICBtX3BvbGljeUNsaWVudC5pbml0aWFsaXplKDApOwotICAg
IG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7Ci0gICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgIG1fcmVzb3Vy
Y2VMb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxv
YWRDbGllbnQ+KCk7CisgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZVVJQ2xpZW50PigpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBt
X2Z1bGxTY3JlZW5DbGllbnQuaW5pdGlhbGl6ZSgwKTsKICNlbmRpZgpAQCAtNDY5Niw3ICs0Njk2
LDcgQEAgdm9pZCBXZWJQYWdlOjpiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvKQogI2VuZGlmCiAKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0
KSB7Ci0gICAgICAgIG1fcHJpbnRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRl
eHQ+KGNvcmVGcmFtZSk7CisgICAgICAgIG1fcHJpbnRDb250ZXh0ID0gbWFrZVVuaXF1ZTxQcmlu
dENvbnRleHQ+KGNvcmVGcmFtZSk7CiAgICAgICAgIG1fcGFnZS0+ZGlzcGF0Y2hCZWZvcmVQcmlu
dEV2ZW50KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCA3MzU2NmEx
MzM4NWRlM2FhYzY0NmZiOTQ5NmJkZGFmY2I1YWY0NmI2Li4zMWVmZjExZjdhZTBhM2ViOGNmYmI2
ZmYyYjNkYmE1MTYyNGMxZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTIxMyw2
ICsyMTMsNyBAQCBjbGFzcyBXZWJQcmludE9wZXJhdGlvbkd0a1dpbjMyIGZpbmFsOiBwdWJsaWMg
V2ViUHJpbnRPcGVyYXRpb25HdGsgewogI2VuZGlmCiAKIHN0cnVjdCBQcmludFBhZ2VzRGF0YSB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFByaW50UGFnZXNEYXRh
KFdlYlByaW50T3BlcmF0aW9uR3RrKiBwcmludE9wZXJhdGlvbikKICAgICAgICAgOiBwcmludE9w
ZXJhdGlvbihwcmludE9wZXJhdGlvbikKICAgICAgICAgLCB0b3RhbFByaW50ZWQoLTEpCkBAIC03
MjYsNyArNzI3LDcgQEAgdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQoY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlLCBkb3VibGUgeERQSSwgZG91YmxlIHkKIHsKICAgICBBU1NFUlQobV9w
cmludENvbnRleHQpOwogCi0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludFBh
Z2VzRGF0YT4odGhpcyk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQcmludFBhZ2VzRGF0
YT4odGhpcyk7CiAgICAgaWYgKCFkYXRhLT5pc1ZhbGlkKSB7CiAgICAgICAgIGNhaXJvX3N1cmZh
Y2VfZmluaXNoKHN1cmZhY2UpOwogICAgICAgICBwcmludERvbmUoaW52YWxpZFBhZ2VSYW5nZVRv
UHJpbnQoZnJhbWVVUkwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmluZGV4IDlhYmIyYTc5Mjk5ZDU5
NmI5MWU2ZWY2MWNhNDNlZjg2MTkwYTkwNDkuLjkzNDE4YWIyMWQ3NGZjOTQ1OGEwMjI0ZTRjYjQ4
YTczNDE3ODA5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBG
aW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwg
Ym9vbCBpc1Nob3dpbmdPdmUKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0
SW5kaWNhdG9yLmdldCgpKTsKKyAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50ID0gbWFr
ZVVuaXF1ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4
dEluZGljYXRvci5nZXQoKSk7CiAgICAgbV9maW5kSW5kaWNhdG9yUmVjdCA9IGVuY2xvc2luZ0lu
dFJlY3QodGV4dEluZGljYXRvci0+c2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygp
KTsKICAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqbV9m
aW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudCwgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1
bWVudCk7CiAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIo
KS5pbnN0YWxsUGFnZU92ZXJsYXkoKm1fZmluZEluZGljYXRvck92ZXJsYXksIFBhZ2VPdmVybGF5
OjpGYWRlTW9kZTo6RG9Ob3RGYWRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCmluZGV4IDkwNjg3Yzk3NGFjZjMz
ZDgyYjhjNjRiOTQ4ZTZlZTlhMzBlZTJlOWMuLjA2ZmNjNDcxNTkzZWI3OGVkZWJmY2M2M2Y4OTQ0
YjNkZmFlOWRhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcApAQCAtODMsNyArODMsNyBAQCBib29sIERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCiAgICAgaWYgKCFt
X2hhc1NlbnRNZXNzYWdlKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3Rh
cnREaXNwbGF5TGluayhtX29ic2VydmVySUQsIGRpc3BsYXlJRCgpKSwgMCk7CiAgICAgICAgIG1f
aGFzU2VudE1lc3NhZ2UgPSB0cnVlOwotICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsK
KyAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4o
a0NGUnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7CiAgICAgICAgICAgICB0aGlzLT5tX2ZpcnN0Q2Fs
bGJhY2tJbkN1cnJlbnRSdW5sb29wID0gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fcnVu
TG9vcE9ic2VydmVyLT5zY2hlZHVsZShDRlJ1bkxvb3BHZXRDdXJyZW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGRmNjAwMzY0NTk4ZjEzNDYyOWRh
YjYyNzA2ZWFmNjg2MWU1ZmYzM2QuLjRjYjNkZjlhZWE1MjllZmY1MjYzMzZjODFmMTMwMjA0NWJh
M2UwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg3
LDcgKzg3LDcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMKICAgICBbbV9ob3N0aW5nTGF5ZXIg
c2V0T3BhcXVlOllFU107CiAgICAgW21faG9zdGluZ0xheWVyIHNldEdlb21ldHJ5RmxpcHBlZDpZ
RVNdOwogCi0gICAgbV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BP
YnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsK
KyAgICBtX2xheWVyRmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlJ1
bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxs
S25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgewogICAgICAgICB0aGlz
LT5sYXllckZsdXNoUnVuTG9vcENhbGxiYWNrKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBhMmRhMTJjNjAyMjkzNzNjZjg3ODkyYjgzZGFh
NTc3MzUwMGE3N2YyLi5hOWUzNzQ0NGZiZDM2ODQ0YTQ5MjhjOTYxMjJkNzRlZDFmMGZiYjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTczLDcgKzE1NzMs
NyBAQCB2b2lkIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbgogICAgIEFTU0VSVCghbV9wYWdlTWFya2luZ0xh
eWVyc0FzVm9sYXRpbGVDb3VudGVyKTsKICAgICBtX2NvdW50T2ZQYWdlc0ZhaWxpbmdUb01hcmtW
b2xhdGlsZSA9IDA7CiAKLSAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXI+KFt0
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVm
Q291bnRlckV2ZW50KSB7CisgICAgbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVy
ID0gbWFrZVVuaXF1ZTxQYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyPihbdGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50
ZXJFdmVudCkgewogICAgICAgICBpZiAobV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3Vu
dGVyLT52YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xODM4LDcgKzE4MzgsNyBA
QCB2b2lkIFdlYlByb2Nlc3M6OnNldEVuYWJsZWRTZXJ2aWNlcyhib29sIGhhc0ltYWdlU2Vydmlj
ZXMsIGJvb2wgaGFzU2VsZWN0aW9uU2VydgogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZUF1dG9t
YXRpb25TZXNzaW9uUHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikKIHsKLSAg
ICBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk+KHNlc3Npb25JZGVudGlmaWVyKTsKKyAgICBtX2F1dG9tYXRpb25TZXNz
aW9uUHJveHkgPSBtYWtlVW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+KHNlc3Npb25J
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95QXV0b21hdGlvblNlc3Np
b25Qcm94eSgpCkBAIC0xODcxLDcgKzE4NzEsNyBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1Zpc2li
bGVXZWJQYWdlKCkgY29uc3QKIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJU
Q05ldHdvcmsoKQogewogICAgIGlmICghbV9saWJXZWJSVENOZXR3b3JrKQotICAgICAgICBtX2xp
YldlYlJUQ05ldHdvcmsgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ05ldHdvcms+KCk7Cisg
ICAgICAgIG1fbGliV2ViUlRDTmV0d29yayA9IG1ha2VVbmlxdWU8TGliV2ViUlRDTmV0d29yaz4o
KTsKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0KIApAQCAtMTg4Miw3ICsxODgy
LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUcKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhl
IHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAgLy8gTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCiAgICAgYXV0byYg
aXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKHN0
ZDo6bWFrZV91bmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rp
b24sIHBhZ2VHcm91cElELCBwYWdlSUQsIHN0b3JlKSk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBzdG9yZSkpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZDRjMDFiYWIxZjkzZGE5MDg1YjBm
MjE5NGNkMzI3ZDQ3MTg2NTBiMi4uMmY0ZmI1MzBhYmNlZDdlZmM3Mzc2NDIyMzA5ZmQzMTg4N2E0
N2IwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMzMsNiArMTMz
LDcgQEAgY2xhc3MgV2ViUHJvY2VzcwogICAgICwgUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpD
bGllbnQKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBXZWJQcm9jZXNzJiBzaW5nbGV0b24oKTsKICAgICBzdGF0aWMgY29uc3RleHBy
IFByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ7CkBAIC0x
NDYsNyArMTQ3LDcgQEAgY2xhc3MgV2ViUHJvY2VzcwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRz
LmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7Cisg
ICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8
VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNv
bm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggMjcyMGI4NmZjZDJmZmVlNjAyMmY1YWQ1ZWVk
NTBiY2YzNjkyZDdmOC4uOWFmMDBlZThhYTBmMWNkODQwYTgxNzM3OTBmYTA2MjMwMDQ2ZmRlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyOjpTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiAgICAg
ewogICAgICAgICBBU1NFUlQoZGV2aWNlVHlwZSAhPSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpVbmtub3duKTsKICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6QXVkaW8pCi0gICAgICAgICAg
ICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1
ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOworICAgICAgICAgICAgbV9y
aW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVk
UmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKTsKICAgICB9CiAKICAgICB+U291cmNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmgKaW5kZXggYmFlZDBjZDllMDliNDlkMjIxZTk0MDE4ZjY0OWZlNmRiY2Y5MjUx
OS4uYzFkNDNmY2IzYWY1ODQxNDUzYWQzNDM0YzdjZjkzZWJmYzllN2VmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgQ3Jvc3NQcm9jZXNzUmVhbHRpbWVBdWRpb1Nv
dXJjZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
IDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIsIHB1YmxpYyBXZWJDb3JlOjpBdWRpb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6
VmlkZW9DYXB0dXJlRmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlRmFjdG9y
eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2ViUHJvY2VzcyYpOwogICAgIH5Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KaW5kZXggYjQ3ZDFkOGFmYTAzZmVkMzZkZWNhZDk4OWQ3MmRiYzQxODQ4
N2Y1OS4uM2I5MDZhODBjNWFkOGY2OWJlZjc3ZjlhOGM3NjRhZjgwOWY0OTU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0z
MTAsNyArMzEwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdl
KFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlcjo6VGFza1N0YXRlIHQKIAogICAgIC8vIFdlIHdlcmUg
YXdha2VuZWQgZnJvbSBzdXNwZW5zaW9uIHVuZXhwZWN0ZWRseS4gTm90aWZ5IHRoZSBXZWJQcm9j
ZXNzUHJveHksIGJ1dCB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gb24gb3VyIHBhcmVudCBQSUQK
ICAgICAvLyB0byBlbnN1cmUgdGhhdCBpdCB0b28gaXMgYXdha2VuZWQuCi0gICAgYXV0byB1aVBy
b2Nlc3NBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5IHJl
c3VtZWQiLCBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5p
c2hUYXNrKTsKKyAgICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vz
c0Fzc2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCks
ICJVbmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kLCBBc3Nl
cnRpb25SZWFzb246OkZpbmlzaFRhc2spOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQcm9jZXNzV2Fz
VW5leHBlY3RlZGx5VW5zdXNwZW5kZWQoKSwgW3VpUHJvY2Vzc0Fzc2VydGlvbiA9IFdURk1vdmUo
dWlQcm9jZXNzQXNzZXJ0aW9uKV0geyB9KTsKIH0KICNlbmRpZgpAQCAtNjIwLDcgKzYyMCw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVS
ZWFzb24gcmVhc29uKQogICAgIH0KIAogICAgIGlmICghbV9jcHVNb25pdG9yKSB7Ci0gICAgICAg
IG1fY3B1TW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmlu
Z0ludGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVzYWdlKSB7CisgICAgICAgIG1fY3B1TW9uaXRv
ciA9IG1ha2VVbmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBbdGhpc10o
ZG91YmxlIGNwdVVzYWdlKSB7CiAgICAgICAgICAgICBpZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9j
ZXNzVHlwZTo6U2VydmljZVdvcmtlcikKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgZXhjZWVk
ZWQgQ1BVIGxpbWl0IG9mICUuMWYlJSAod2FzIHVzaW5nICUuMWYlJSkiLCB0aGlzLCBtX2NwdUxp
bWl0LnZhbHVlKCkgKiAxMDAsIGNwdVVzYWdlICogMTAwKTsKICAgICAgICAgICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAK
aW5kZXggMzY5MDk1Y2RhZDFkMzQ3MTFhMDY3NmQ4NzM2YTkwZTE5M2UyOTA1ZS4uMjI4ZjRhMzZk
NGIwZjIyMmMxNzg2MGQwYmM0OThjMWY5ZTA4OWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
UmVmPFN0b3JhZ2VTeW5jTWFuYWdlcj4gU3RvcmFnZVN5bmNNYW5hZ2VyOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogfQogCiBTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdl
cihjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0
b3JhZ2VUaHJlYWQ+KCkpCisgICAgOiBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+
KCkpCiAgICAgLCBtX3BhdGgocGF0aC5pc29sYXRlZENvcHkoKSkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJl
YWQuY3BwCmluZGV4IDQ0MzkzODI5NWY0ZTFjMjlkZDA0ODZiNDMxYmE3ZmVhMzUyOWQxNmQuLjlj
NzUxNGUzNDYyYzRiNGQ4YTg1NjA1ZWQwMjlkYmQxOTI1ZDZiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9p
ZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxl
ZCgpICYmIG1fdGhyZWFkKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1
bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVldWUuYXBwZW5k
KG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAK
IHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBT
dG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9p
ZCAoKT4+KFt0aGlzXSB7CisgICAgbV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2
b2lkICgpPj4oW3RoaXNdIHsKICAgICAgICAgcGVyZm9ybVRlcm1pbmF0ZSgpOwogICAgIH0pKTsK
ICAgICBtX3RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGI5MzRkMWEzYjFiYWE4MzFhZGRm
M2FiZTVlMDc3MGFiMWNmNzdmYTIuLjgwNmNiMDk5NWQwYTA3YzcxODI3MWQyMTA1MDcwMzk4YzQw
M2JjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJh
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2Vy
LmNwcApAQCAtOTgsNyArOTgsNyBAQCBTdG9yYWdlVHJhY2tlciYgU3RvcmFnZVRyYWNrZXI6OnRy
YWNrZXIoKQogU3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0cmluZyYgc3Rv
cmFnZVBhdGgpCiAgICAgOiBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0b3JhZ2VQYXRoLmlzb2xh
dGVkQ29weSgpKQogICAgICwgbV9jbGllbnQoMCkKLSAgICAsIG1fdGhyZWFkKHN0ZDo6bWFrZV91
bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICAsIG1fdGhyZWFkKG1ha2VVbmlxdWU8U3RvcmFn
ZVRocmVhZD4oKSkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiAgICAgLCBtX25lZWRzSW5pdGlh
bGl6YXRpb24oZmFsc2UpCiAgICAgLCBtX1N0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkZWZh
dWx0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAu
Y3BwCmluZGV4IDQzZWE0NWRhZTg5MjA2YzgyOWE1MTRkNGRhOGUzZDFjOTdjYzEyODQuLjg1MWNj
MTAxN2RlZDAwYzA2ZDQ2ZDJjODU5ZDcwMDAwYjZkNzJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN0b3JhZ2VTZXNzaW9uKGNvbnN0IFAKIFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKQogewogICAgIGlmICghZGVmYXVsdE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbigpKQotICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gKmRlZmF1bHROZXR3
b3JrU3RvcmFnZVNlc3Npb24oKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAg
ICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVT
dG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAg
ICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgZGVm
YXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1v
dmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VuZGlmCiB9CiAKQEAgLTEw
MCwxMSArMTAwLDExIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNz
aW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvCiAgICAgICAgICAgICBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0g
ICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24p
LCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwg
V1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogCiAjZWxp
ZiBVU0UoQ1VSTCkKICAgICBnbG9iYWxTZXNzaW9uTWFwKCkuZW5zdXJlKHNlc3Npb25JRCwgW3Nl
c3Npb25JRF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKICAgICB9KTsKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAxODc2Yjk2MGI5NDcwODE0
YzM1MGJjNTkyNmE0YzgxYWVkZjM5MDIzLi43Yjg2OTgxYTNmNDhlNTBmOGIzY2NhYzM3MDY5MTdk
NGFmMWZkYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtMTU5LDUgKzE1OSw1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
OjpTZXR0aW5ncz4gV2ViSW5zcGVjdG9yQ2xpCiAgICAgICAgICAgICBkZWxldGVTZXR0aW5nKG5h
bWUpOwogICAgICAgICB9CiAgICAgfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5zcGVj
dG9yRnJvbnRlbmRTZXR0aW5nc0NGPigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCAz
YjFhNDUwNzA3OGZhNGNjMDY4ZTc0MDMwMzIyMTIzOWIyYWQ3MTIzLi4xNDU3NzIyMmE5ZTEzZTYz
ZTQ5MWQ2ZDNiOTJjYTFiYzg5ZTdjYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaApAQCAtMjgs
NiArMjgsNyBAQAogI2ltcG9ydCAiV2ViQ2hyb21lQ2xpZW50LmgiCiAKIGNsYXNzIFdlYkNocm9t
ZUNsaWVudElPUyBmaW5hbCA6IHB1YmxpYyBXZWJDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudElPUyhXZWJWaWV3
KiB3ZWJWaWV3KQogICAgICAgICA6IFdlYkNocm9tZUNsaWVudCh3ZWJWaWV3KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlv
bkNvbnRlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aXhlZFBvc2l0aW9uQ29udGVudC5tbQppbmRleCAyMTdhNGVkMGE4NWE2YmI0MTRkMzE5NGNiN2Jm
YWVmZGUwMzZkNDdhLi44ZGFkNjA0NDYyZjgzNzY0NTczZjAwNjI5ZWExMDQ5ZWViODZkYzBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhl
ZFBvc2l0aW9uQ29udGVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQpAQCAtMTc4LDcgKzE3OCw3IEBAIC0g
KHZvaWQpc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczooV1RGOjpIYXNoTWFwPENBTGF5ZXIg
Kiwgc3RkOjp1bmlxdWVfcHRyPFdlCiAKICAgICBmb3IgKGF1dG8mIGxheWVyQW5kQ29uc3RyYWlu
dHMgOiBsYXllck1hcCkgewogICAgICAgICBDQUxheWVyKiBsYXllciA9IGxheWVyQW5kQ29uc3Ry
YWludHMua2V5OwotICAgICAgICBhdXRvIGxheWVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Vmll
d3BvcnRDb25zdHJhaW5lZExheWVyRGF0YT4oKTsKKyAgICAgICAgYXV0byBsYXllckRhdGEgPSBt
YWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+KCk7CiAKICAgICAgICAgbGF5
ZXJEYXRhLT5tX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Nyb2xsTGF5ZXIgPSBzdGlja3lDb250YWlu
ZXJzLmdldChsYXllcik7CiAgICAgICAgIGxheWVyRGF0YS0+bV92aWV3cG9ydENvbnN0cmFpbnRz
ID0gV1RGTW92ZShsYXllckFuZENvbnN0cmFpbnRzLnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCBhOGI2YTA0MzkzZWMwMDAxNDY1
MzhkNGNmNjViZDY0MGM3NGJkOTAxLi41YWQ4MWI0YTNiNDliNWQwNjM5MzY1NjgzYTFiY2Y1ZDU3
ZWYzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5
Lm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgLSAoaWQpaW5pdAogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIAogICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdOwotICAgIF9lbnRyaWVzQnlEYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRlVG9FbnRyaWVz
TWFwPigpOworICAgIF9lbnRyaWVzQnlEYXRlID0gbWFrZVVuaXF1ZTxEYXRlVG9FbnRyaWVzTWFw
PigpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBiNzM5NTkzNWU1MTBiZjNiN2YwYzQ4
ZWRkNDM2YzU4YmJjNDgxZDhlLi44NmY5ZDNkNDIyMzg0NmJjOTVjYmM5NTY0NWExY2E3MzIwYWZl
MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0KQEAgLTM0OCw3ICszNDgsNyBAQCAtIChpZClpbml0RnJvbURpY3Rpb25hcnlSZXBy
ZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgICAgICBjb3JlKF9wcml2YXRlKS0+
c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKICAgICAKICAgICBpZiAoTlNBcnJheSAqcmVk
aXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZvcktleTpyZWRpcmVjdFVSTHNLZXldKSB7
Ci0gICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5p
cXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3ItPnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoW3JlZGlyZWN0VVJMcyBjb3VudF0pOwogCiAgICAgICAgIGZvciAo
aWQgcmVkaXJlY3RVUkwgaW4gcmVkaXJlY3RVUkxzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dFByb3h5Lm1tCmluZGV4IGUxN2M3ODgxYTUxN2YwYzM1NWY4NzU2OWI2MGRhM2YyMTVhMWViYTcu
LmY1ZTdmYmNmMTJlNDdmOTBkZWVmMWVhMmNmZWI3MTc0MjY4ODBhY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC00OTMsNyArNDkzLDcgQEAga2Vybl9yZXR1cm5fdCBX
S1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWlu
dDMyX3QgcGwKICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZB
SUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2NyaXB0YWJs
ZU5QT2JqZWN0UmVwbHk+KG9iamVjdElEKSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVu
dFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmplY3RJRCkpOwogICAgIHJldHVybiBLRVJO
X1NVQ0NFU1M7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBrZXJuX3JldHVybl90IFdLUENCb29s
ZWFuUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQsIHVpbnQz
MgogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsK
ICAgICAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5Pihy
ZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBt
YWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXN1
bHQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCkBAIC01MjgsNyArNTI4LDcgQEAg
a2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhbkFuZERhdGFSZXBseShtYWNoX3BvcnRfdCBjbGllbnRQ
b3J0LCB1aW50MzJfdCBwbHVnaW5JRCwKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAog
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAs
IHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHREYXRhKSwgcmVzdWx0TGVuZ3RoKSk7Ci0g
ICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3Vu
aXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJl
dHVyblZhbHVlLCByZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHko
cmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVh
bkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOwogICAgIAogICAgIHJldHVybiBL
RVJOX1NVQ0NFU1M7CiB9CkBAIC01NDUsNyArNTQ1LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDSW5z
dGFudGlhdGVQbHVnaW5SZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVn
aW4KICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7
CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQbHVnaW5S
ZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4o
cmVuZGVyZXJUeXBlKSkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1
ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpJbnN0YW50aWF0
ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJRCwgc3RhdGljX2Nhc3Q8UmVuZGVy
ZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAppbmRleCAxMGEwOGU5NTBhM2Rj
MGM5MzY3MWYxZmMxYzc0Yzk0Nzc5M2EwN2U4Li5lNTZhMTAzYTI4YTc2MGY5Y2UwYjk3ZTcxZGQ2
YjIzYTYwYzUzZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaApA
QCAtMTcxLDYgKzE3MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eSA6IHB1
YmxpYyBSZWZDb3VudGVkPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94CiAKICAgICAvLyBSZXBs
eSBzdHJ1Y3RzCiAgICAgc3RydWN0IFJlcGx5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBlbnVtIFR5cGUgewogICAgICAgICAgICAgSW5zdGFudGlh
dGVQbHVnaW4sCiAgICAgICAgICAgICBHZXRTY3JpcHRhYmxlTlBPYmplY3QsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5t
bQppbmRleCAyMDJjNmRlYWYxM2QwN2M2ZTNhNTY5OGIxY2RiNTlhMTliNWRhMDM5Li41MmJmN2Jk
MTJlNGUzNzEyZDMxNDc1ZTJhNTM5YTQyOGNmZjhmYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTM2
Miw3ICszNjIsNyBAQCBNZXRob2QqIFByb3h5SW5zdGFuY2U6Om1ldGhvZE5hbWVkKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5s
ZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAg
ICBhdXRvIG1hcEFkZFJlc3VsdCA9IG1fbWV0aG9kcy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIp
OwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiByZXBseS0+bV9yZXN1bHQpCi0g
ICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBy
b3h5TWV0aG9kPihtZXRob2ROYW1lKTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8UHJveHlNZXRob2Q+KG1ldGhvZE5hbWUpOwogCiAgICAgcmV0dXJu
IG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CkBAIC0zOTcsNyArMzk3LDcg
QEAgRmllbGQqIFByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKICAgICAvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkg
d2FzIGFkZGVkIHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgogICAgIGF1dG8gbWFwQWRk
UmVzdWx0ID0gbV9maWVsZHMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAobWFw
QWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm94eUZpZWxkPihpZGVu
dGlmaWVyKTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CiAgICAgcmV0dXJuIG1hcEFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQppbmRleCA5YzcxYTNjYzkyM2YzM2QyZTBhYjM5YTFiZjZiMTRiNDQzZTk0ZDRiLi5l
ZTE5YzU2N2MwMWZhMThjNWU4ZGM2MWIwOGM4OTRlNTIwMDJkYWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdp
blZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC02MCw2ICs2MCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKIGNsYXNzIFNvZnR3YXJlQ0FS
ZW5kZXJlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgU29mdHdhcmVDQVJlbmRlcmVyKHVpbnQzMl90IGNvbnRleHRJRCkKICAgICAgICAgOiBt
X2NvbnRleHQgeyBbQ0FDb250ZXh0IGxvY2FsQ29udGV4dF0gfQpAQCAtMTY4LDcgKzE2OSw3IEBA
IC0gKEJPT0wpY3JlYXRlUGx1Z2luCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlmIChfcHJv
eHktPnJlbmRlcmVyVHlwZSgpID09IFVzZVNvZnR3YXJlUmVuZGVyZXIpCi0gICAgICAgIF9zb2Z0
d2FyZVJlbmRlcmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+KF9wcm94
eS0+cmVuZGVyQ29udGV4dElEKCkpOworICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9IG1ha2VV
bmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRleHRJRCgpKTsKICAg
ICBlbHNlCiAgICAgICAgIFtzZWxmIGNyZWF0ZVBsdWdpbkxheWVyXTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luRXZlbnRIYW5kbGVyLm1tCmluZGV4IGY3YWVkYmNlZDRkN2Y1YzRiYTNlOTZlMzU2MWNh
N2YwYjI2NWM4YWMuLjhlYzFiZjc5ZWUzMmEyYWMxYmJjZjdhMjFlNzNlN2UxZTAxZGIxZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQpAQCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI+IFdlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyOjpjcgogewogICAgIHN3aXRjaCAoW3BsdWdpblZpZXcgZXZlbnRNb2RlbF0p
IHsKICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5WaWV3KTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJD
b2NvYT4ocGx1Z2luVmlldyk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyQ29jb2EuaAppbmRleCA3MDgzNzc2ZDI4YTc1Y2ZiNTQyNTMzZDkwZjM3NzhlODVhYmNk
MWQyLi5iYmQ5YzVkNTgyMWY4NWY2NWViYzhmNzc3ZWM2NTUyMjlkNWU4OWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmgiCiAKIGNsYXNzIFdlYk5ldHNjYXBl
UGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EgOiBwdWJsaWMgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5l
dHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EoV2ViTmV0c2NhcGVQbHVnaW5WaWV3Kik7IAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tCmluZGV4IDAyZmYyMTg2ZGY4NGE5YTkwZDdlOWMyNmMwNzYyNzllMzIy
MTEzNzguLjE2MDY2M2U4NjFmNzEwZWJmZWQxZDc2ODU2NWRkMjJhMTE0ZThlMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCkBAIC0xNjU1LDcgKzE2NTUsNyBAQCAtICh1aW50MzJfdClzY2hlZHVsZVRpbWVy
V2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCByZXBlYXQ6KE5QQm9vbClyZXBlYXQgdAog
ICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBpZiAoIXRpbWVycykKLSAgICAgICAgdGltZXJz
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPHVpbnQzMl90LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1
Z2luVGltZXI+Pj4oKTsKKyAgICAgICAgdGltZXJzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPHVpbnQz
Ml90LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+Pj4oKTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxQbHVnaW5UaW1lcj4qIHNsb3Q7CiAgICAgdWludDMyX3QgdGltZXJJRDsKQEAgLTE2NjMs
NyArMTY2Myw3IEBAIC0gKHVpbnQzMl90KXNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQz
Ml90KWludGVydmFsIHJlcGVhdDooTlBCb29sKXJlcGVhdCB0CiAgICAgICAgIHRpbWVySUQgPSAr
K2N1cnJlbnRUaW1lcklEOwogICAgIHdoaWxlICghdGltZXJzLT5pc1ZhbGlkS2V5KHRpbWVySUQp
IHx8ICooc2xvdCA9ICZ0aW1lcnMtPmFkZCh0aW1lcklELCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWUpKTsKIAotICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpblRpbWVyPihw
bHVnaW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CisgICAgYXV0byB0
aW1lciA9IG1ha2VVbmlxdWU8UGx1Z2luVGltZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWws
IHJlcGVhdCwgdGltZXJGdW5jKTsKIAogICAgIGlmIChfc2hvdWxkRmlyZVRpbWVycykKICAgICAg
ICAgdGltZXItPnN0YXJ0KF9pc0NvbXBsZXRlbHlPYnNjdXJlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
Lm1tCmluZGV4IDcwNGNkMDk1ZTg4ZmUxYTIzODExODZjNmJmZjEzMGZjOTAyMDQxZWIuLjU3ZmJi
ZmFkOWU2NGI3Njc4YWQzYWNjZTgwNzc4YmFjZjAzNzgxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
Lm1tCkBAIC05NCwxMCArOTQsMTEgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50JiBjbGllbnQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogICAgIHsKLSAgICAgICAgYXV0byBjb250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdpbik7
CisgICAgICAgIGF1dG8gY29udGV4dCA9IG1ha2VVbmlxdWU8RGlkTW9kaWZ5T3JpZ2luRGF0YT4o
Y2xpZW50LCBvcmlnaW4pOwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gV1RG
TW92ZShjb250ZXh0KV0gewogICAgICAgICAgICAgY29udGV4dC0+Y2xpZW50LmRpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdpbik7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCBhM2IxNTk4ZWUzNTNkNjdlMjNhZjgwOTU4ZWI3Zjc1
ZWIxNjdmNGQ4Li5jZDcyNjQyNjgyNWJhNzIyMTU1N2UwNTY2ZmE5MmVjMDgxMTE0NWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQAogQGNsYXNz
IFdlYlZpZXc7CiAKIGNsYXNzIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJWaWV3
Kik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA3OGI1MzllMzcyYjg2NWM1OTRmYzA3NmY1
YTFmYzg0YWFmZTk4YmYwLi4yNzE0MjdlMmQ0NmVlM2EyOTdkMDU0MDEyYTdhODVhYjhiM2UxYjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
YWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogY2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhKGlkIHdlYkRvY3VtZW50VmlldykgOiBtX3dlYkRvY3VtZW50Vmlldyh3ZWJEb2N1
bWVudFZpZXcpIHsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBmZGM0Y2M3ODE5NmZjYmNm
MzI2MDJkMThlMjg5ZjA3YTExNTRjYzk1Li5jMGZiZGE5YjJkYTFkZDQ1MTBmZmUwODliZjY4ZjVh
NzY3ZGQ0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBIVE1M
SW1hZ2VFbGVtZW50OwogLy8gYmFzZSBjbGFzcyBvZiB0aGUgY29uY3JldGUgY2xhc3MsIFdlYkNo
cm9tZUNsaWVudElPUy4gQmVjYXVzZSBvZiB0aGF0LCB0aGlzIGNsYXNzIGFuZAogLy8gbWFueSBv
ZiBpdHMgZnVuY3Rpb25zIGFyZSBub3QgbWFya2VkIGZpbmFsLiBUaGF0IGlzIG1lc3N5IHdheSB0
byBvcmdhbml6ZSB0aGluZ3MuCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aAppbmRleCAxODg1ZjAzMTMxMzViODE3YjMwZjk0NTc3N2Q4ZTI0YjE1MzliZjkwLi5hN2Y2NmVl
ZWYzMDZhNjg2MDU0MjBlNzk4NzYyMDI1N2JlMDZiNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQKICAgICAsIHB1YmxpYyBXZWJTaGFyaW5nU2Vy
dmljZVBpY2tlckNsaWVudAogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVDbGllbnQoV2ViVmlldyAqd2ViVmlldyk7CiAg
ICAgdmlydHVhbCB+V2ViQ29udGV4dE1lbnVDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCA4NDdh
NzNiMTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0YTYzYmRkMTJlLi4zMGRmM2Y3M2Q4NTBlYTc2OWM3
MTM1MjIxZDJlODg2NWVhNjdlMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiBA
Y2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpE
cmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBX
ZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBmMDU5ZTA1OWUx
MTg3YTNiYzViZDI0N2NjMjQxZjU5YWRkNDUwOTUwLi5iNTEwNzg3ZDgwOWJjZjk3Yjc2ODllNzQw
OTMyODM3NWFhMGIwYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNDUsNiArNDUsNyBAQAogQGNs
YXNzIFdlYkVkaXRvclVuZG9UYXJnZXQ7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tl
ckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkVkaXRvckNsaWVudD4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVudChXZWJW
aWV3ICopOwogICAgIHZpcnR1YWwgfldlYkVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQppbmRleCAzZGQ1MGU3YjNiOWNmOTkzMzQ5YzlhYmI0Y2I0OTc4MzdlZWMzNTNl
Li45NDBiMGZmOTYzYTg1Y2U5ZDg4ZDdiYzU2ZmY2YjNlZWIyZTNkOTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQpAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiBzdGF0aWMgdm9pZCBhZGRSZWRpcmVjdFVS
TChXZWJIaXN0b3J5SXRlbSAqaXRlbSwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKCFp
dGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcykKLSAgICAgICAgaXRlbS0+X3ByaXZhdGUtPl9y
ZWRpcmVjdFVSTHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAg
ICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmlu
Zz4+KCk7CiAKICAgICAvLyBPdXIgQVBJIGFsbG93cyB1cyB0byBzdG9yZSBhbGwgdGhlIFVSTHMg
aW4gdGhlIHJlZGlyZWN0IGNoYWluLCBidXQgZm9yCiAgICAgLy8gbm93IHdlIG9ubHkgaGF2ZSBh
IHVzZSBmb3IgdGhlIGZpbmFsIFVSTC4KQEAgLTEzODAsNyArMTM4MCw3IEBAIElHTk9SRV9XQVJO
SU5HU19FTkQKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRv
Q2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZyYW1lKQogewotICAgIGNhY2hlZEZyYW1l
LT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3Vt
ZW50VmlldykpOworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSht
YWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0
ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhpcyBmcmFtZSBpcyBnb2luZyB0byBi
ZSBjYWNoZWQuIFN0b3AgYWxsIHBsdWdpbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRl
eCBmZmUyOTkzMTJlYjQ4MGJhZmI1ZjBlYWM0MzUyZjI0M2Y5NmUwMGY3Li5mZmRiYWNmYzI3NDIx
ZThkMzU4ODhmMmNlNmIxODA3N2ExNmUzM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgK
QEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIEBjbGFzcyBXZWJW
aWV3OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyAqKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3
KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGJkN2Y2
MmZjODVkYzk5YzM4NzE2ZjA3NjY2NDYzMTgyNTExYzU0YTUuLjBjOTQ4YjNhZWY5ODc2MDk2MzAz
NTFkNTlhYzc5MGIyYWJlYWRhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC01MSw2ICs1
MSw3IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIAog
Y2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudCwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGll
bnQoV2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpp
bmRleCAxYzAwODA5NzY5MmZmOWIwNzFmY2U1YWM0YTRiNDY5MmQxMzdlZDk1Li43ZDNlNWVjOWU2
MTVlMWQ0OGMzZDA1ZDcxYTU5YzQ1MWZlYjc2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
CkBAIC0xMDksNyArMTA5LDcgQEAgRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3AKICAgICBbd2luZG93
Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBtX2Zyb250
ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZnJvbnRlbmRXZWJWaWV3XSk7
Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwg
aW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNl
dHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0
KCksIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRl
bmRTZXR0aW5ncygpKTsKIAogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2Vi
SW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2Nd
IGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtb
bV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJv
bnRlbmQuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAxNWI0MTgwNDhl
NGYxZDQ2MjRjMzAzZGNiYmZlZDE2OTc5NjQ0ODYxLi45NGVkNjE4YWM3OGVlOGJjZjU3MTU1Yzlh
ZGFiY2JkYWRmNjhjNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAtMzYsNiAr
MzYsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJWaWV3ICop
OwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCmluZGV4IGEzZDZhZTYzNjM2NDdjNWYz
MGNjNzlmYmQ2MzVmNjY0YmNhMDEyM2MuLmRjOWQxMWEzNTg3ZWUwNGY1MDE1MWJlODhiYzVkNGIx
NDhiY2RlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaApA
QCAtNDMsNiArNDMsNyBAQCBjbGFzcyBJbnRQb2ludDsKIH0KIAogY2xhc3MgV2ViU2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNlbGVjdGlv
blNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92
aWRlck1vY2subW0KaW5kZXggMjUzNjQ4ZDhlODQ1OTExZTJhZTI4YzBiYjg2M2NiNTdmN2MzMDAz
OS4uMjc2ZDlmMTVlZjhmYTVlMWZlZDQzOGVkOWMxZDI1OWE3ODU4MzUwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3Zp
ZGVyTW9jay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCkBAIC0zNiw3ICszNiw3IEBAIC0gKGlkKWluaXQK
ICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICBtX2NvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jaz4oKTsKKyAgICBtX2NvcmUgPSBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jaz4oKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYTkwNjIyYzIwNzRlMGNkY2VjZWYyYzZjMWM4
NDk0NWQ0ZTlkZmZhYi4uM2E5NGJiOTEwZDI1OWVmYWE4OTFkNTI5ZTgwZDJiNWIwMDIwYjRmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0zNzgs
NyArMzc4LDcgQEAgLSAodm9pZClfYXR0YWNoU2NyaXB0RGVidWdnZXIKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViU2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVjdCk7CisgICAgX3ByaXZhdGUtPnNjcmlw
dERlYnVnZ2VyID0gbWFrZVVuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0KTsK
IH0KIAogLSAodm9pZClfZGV0YWNoU2NyaXB0RGVidWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLmgKaW5kZXggZGZhN2VmZDA2MDZhZGM0OWZlMjkxZDA1MjFkMTMyZTZlMTljNTA3My4uYTA3
MmU4MTk1MjQ5MzlhZTBmMjJiYjk4MzZkM2FjNzA1ZDg1NzkyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgUGFnZTsKIH0KIAogY2xhc3MgV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciA6IHB1YmxpYyBXZWJDb3JlOjpXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+
IGNyZWF0ZShXZWJDb3JlOjpQYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQpp
bmRleCA3MmMyMGM2OTNmZWNiYTk3MTA0NjM0MTY0MWNjZTExNDk0ZGU0YTY5Li42MDI0MDI5OTYy
ZWMzNGYwMGY0YWFkOTQzMmE3ZmM0MmJhMWQxNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyPiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUoV2Vi
Q29yZTo6UGFnZSYgcGFnZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsKIH0KIAogV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlcjo6V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQYWdlJiBw
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0
SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVy
YXRvci5tbQppbmRleCAxYTcyNThiNDIzYTg0NTc4OTFlNDE1ZTEwZDAwMjU2NzMwYWEyYmRlLi5l
MzYzYjg1YjJiM2Q1YWUxNDczYzgzNzI3MTg1ODM0ZDUxNzg3YjE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpAQCAtNjksNyAr
NjksNyBAQCAtIChpZClpbml0V2l0aFJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgICAgIHJl
dHVybiBzZWxmOwogICAgIAogICAgIF9wcml2YXRlID0gW1tXZWJUZXh0SXRlcmF0b3JQcml2YXRl
IGFsbG9jXSBpbml0XTsKLSAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CisgICAgX3ByaXZhdGUt
Pl90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShy
YW5nZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYmNjYzY0YjA3YTNkMDVmOWJlODQ1ZmQxNmE4YTRlMTU4
YjU2NDc1ZC4uMTBmMjE4ODRlYjRhOWM5ODRhYzMyZTYwMTQxNDk4NTBiOGMxOWE5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTIyOSw3ICsxMjI5
LDcgQEAgc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50
cygpCiAtKHZvaWQpX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHQKIHsKICAgICBzdGF0aWMgTlNT
dHJpbmcgKm91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cyA9IGxlYWtPdXRsb29rUXVpcmtzVXNl
clNjcmlwdENvbnRlbnRzKCk7Ci0gICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRy
b2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBzdGQ6
Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJM
KCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRF
bmQsIEluamVjdEluQWxsRnJhbWVzKSk7CisgICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0p
LCBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJM
KCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRF
bmQsIEluamVjdEluQWxsRnJhbWVzKSk7CiAKIH0KICNlbmRpZgpAQCAtMTQ0Myw3ICsxNDQzLDcg
QEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAq
KWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVD
bGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHNlbGYpOwogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgZW5hYmxlIHRoaXMgb24gaU9TIGFzIHdlbGwuCi0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxmKTsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQ+KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9
IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQoc2VsZik7CiAjZWxzZQogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CkBAIC00NjMz
LDcgKzQ2MzMsNyBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKiln
cm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybAogICAgIGlmICghd29ybGQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8
VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3Ry
aW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVu
dFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgaW5q
ZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6
IEluamVjdEluVG9wRnJhbWVPbmx5KTsKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVl
PFVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0
cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1l
bnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsIGlu
amVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMg
OiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRy
b2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7
CiB9CiAKQEAgLTQ2NTYsNyArNDY1Niw3IEBAICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9H
cm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopCiAgICAg
aWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzdHlsZVNoZWV0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9y
KHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09
IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZy
YW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtl
VW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVs
aXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5q
ZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5
LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclN0eWxlU2hlZXQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQp
LCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIApAQCAtOTQxNiw3ICs5NDE2LDcgQEAg
LSAoVmVjdG9yPFN0cmluZz4pX2RpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0
aW9uQ29udGV4dAogLSAoV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXImKV9zZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlcgogewogICAgIGlmICghX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlcikKLSAgICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNlbGYp
OworICAgICAgICBfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gbWFrZVVu
aXF1ZTxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CiAgICAgcmV0dXJuICpf
cHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogfQogI2VuZGlmCkBAIC05NDc1
LDcgKzk0NzUsNyBAQCAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0
ZXh0SW5kaWNhdG9yCiAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0
ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTooVGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKWxp
ZmV0aW1lCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdykKLSAgICAg
ICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRJ
bmRpY2F0b3JXaW5kb3c+KHNlbGYpOworICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldp
bmRvdyA9IG1ha2VVbmlxdWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CiAKICAgICBOU1Jl
Y3QgdGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVj
dDpbc2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6dGV4dEluZGljYXRvci50ZXh0Qm91bmRp
bmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCldIHRvVmlldzpuaWxdOwogICAgIE5TUmVjdCB0
ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyA9IFtzZWxmLndpbmRvdyBjb252ZXJ0
UmVjdFRvU2NyZWVuOnRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4IDEwNjBj
MmQ4NTRhZGEwZGNhZmIzMzU1OWM4MTFlNGVlNDk0Y2M2ZTAuLjgyMzhhNGVjNWZlZTE2ODM2NGVk
MTMwNGJjNzUxNWY1NTE3ZmU4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5tbQpAQCAtOTYsNyArOTYsNyBAQCBMYXllckZsdXNoQ29udHJvbGxl
cjo6TGF5ZXJGbHVzaENvbnRyb2xsZXIoV2ViVmlldyogd2ViVmlldykKIFdlYlZpZXdMYXllckZs
dXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihMYXllckZsdXNoQ29udHJv
bGxlciogZmx1c2hDb250cm9sbGVyKQogICAgIDogbV9mbHVzaENvbnRyb2xsZXIoZmx1c2hDb250
cm9sbGVyKQogewotICAgIG1fcnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFdlYkNvcmU6OlJ1bkxv
b3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgp
IHsKKyAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9i
c2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6Oldl
bGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CiAgICAgICAgIHRo
aXMtPmxheWVyRmx1c2hDYWxsYmFjaygpOwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBA
IC0gKGlkKWluaXQKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CiAKICNpZiBVU0Uo
RElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
PigpOworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7CiAjZW5kaWYKIAogICAgIHJldHVy
biBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmNwcAppbmRleCA2NDZlNmFlZjkzMmYxYzk5Mjk4NTM2YzgyZjJjOTU1YTcx
YTE5MmNmLi5mZTQ0ZTc1MWNjMTFjMGVhYWZlMjgxODE3OWVkY2Y2NWE3ZjFjNzIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcApAQCAtMjQ2LDEwICsyNDYsMTAgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcigpCiAgICAgLCBtX21vdmluZ1dpbmRvdyhmYWxzZSkKICAg
ICAsIG1fdGltZXIoKnRoaXMsICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1lckZpcmVk
KQogI2lmIFVTRShDQSkKLSAgICAsIG1fbGF5ZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMYXll
ckNsaWVudD4odGhpcykpCisgICAgLCBtX2xheWVyQ2xpZW50KG1ha2VVbmlxdWU8TGF5ZXJDbGll
bnQ+KHRoaXMpKQogICAgICwgbV9yb290Q2hpbGQoUGxhdGZvcm1DQUxheWVyV2luOjpjcmVhdGUo
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgbV9sYXllckNsaWVudC5nZXQoKSkpCiAj
ZW5kaWYKLSAgICAsIG1fZnVsbHNjcmVlbldpbmRvdyhzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5DbGllbnQqPih0aGlzKSkpCisgICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3cobWFr
ZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihzdGF0aWNfY2FzdDxN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhpcykpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKaW5kZXgg
YWJhNjNkYWI4YjMxZTQ3YWJkODA4OGIzNzgzYTgwZWM1NGMxMDIxOC4uMGY2YmVlZmZhZDFkYzAx
NWM4YTQ3N2U3ZmJlNWM5YjZhYWZhZmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgUGx1
Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9h
ZGVyLCBjb25zdCBjaGFyCiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05M
WSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAgbV9kZWxpdmVy
eURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4oKTsKKyAgICAgICAgICAgIG1f
ZGVsaXZlcnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8Y2hhcj4+KCk7CiAKICAgICAgICAgaW50
IG9sZFNpemUgPSBtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpOwogICAgICAgICBtX2RlbGl2ZXJ5RGF0
YS0+cmVzaXplKG9sZFNpemUgKyBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMjEzNjMxN2YyOTk5ZDVlMTM3NDlkZjM4ZTE5
YThmNGQyZjI1YmQ2MC4uNTQ3MTZhMGJiMmIxZmFiNzVkODFkZTQyYWVlOTZlZWEyZjZiMTNlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC01MTAsNyArNTEwLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKEZyYW1lTG9hZFJlcXVl
c3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBib29sIHNlbmROb3RpZmljYXQKICAgICB9IGVsc2UgaWYg
KCFtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXko
dXJsKSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAKLSAgICBzY2hlZHVs
ZVJlcXVlc3Qoc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZyYW1lTG9h
ZFJlcXVlc3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNBbGxvd2Vk
KCkpKTsKKyAgICBzY2hlZHVsZVJlcXVlc3QobWFrZVVuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZN
b3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQ
b3B1cHNBbGxvd2VkKCkpKTsKIAogICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4
IDA1NzI4ZjNlZDM3MjA1MDRhZjU1Zjk4NzdmODYyMWJkYzA1Y2U2MjIuLjUyMDQ1OTRhYjZmODRk
NTcwMDA0MGRmZDI5ODFjM2Y1NjNlZGZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFBsdWdp
blZpZXc6OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQ
QVJBTSBsUGFyYW0pCiAgICAgaWYgKG1lc3NhZ2UgPT0gV01fVVNFUiArIDEgJiYKICAgICAgICAg
bV9wbHVnaW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVz
T25lTWVzc2FnZXMpKSB7CiAgICAgICAgIGlmICghbV9tZXNzYWdlVGhyb3R0bGVyKQotICAgICAg
ICAgICAgbV9tZXNzYWdlVGhyb3R0bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5NZXNzYWdl
VGhyb3R0bGVyV2luPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IG1h
a2VVbmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CiAKICAgICAgICAgbV9t
ZXNzYWdlVGhyb3R0bGVyLT5hcHBlbmRNZXNzYWdlKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBh
cmFtKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA1MzBiNjllZDcxOWMyN2FjYzZi
MDdlMzUxNTkyMjFmNTUyNmM1MzA1Li4zYmY0NGQ4N2QxOGQ1ZjI3M2NkMjk1MzU2NzZiMjQwOGYy
YzkxNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Nh
Y2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhIDogcHVibGljIFdlYkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YShJV2ViRGF0YVNvdXJjZSogd2ViRGF0YVNvdXJjZSkgOiBtX3dlYkRhdGFTb3VyY2Uod2Vi
RGF0YVNvdXJjZSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDRhNDliOTRiYmE1OGQw
YzU0NjMzMjljM2Y2ZWYyM2U4NDg4YjdhZjMuLjdiMjk5Y2VlMjVlY2QxMGJiYTYyMWM4NTgxYjA2
YWUwNmM1YTFkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0
aWMgY29uc3Qgc2l6ZV90IG1heEZpbGVQYXRoc0xpc3RTaXplID0gVVNIUlRfTUFYOwogV2ViQ2hy
b21lQ2xpZW50OjpXZWJDaHJvbWVDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2Vi
Vmlldyh3ZWJWaWV3KQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICwgbV9ub3RpZmlj
YXRpb25zRGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0Rl
bGVnYXRlPih3ZWJWaWV3KSkKKyAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKG1ha2VVbmlx
dWU8V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCiAjZW5kaWYKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNDFkNWYwNmFlYWNiN2UxNDE3ZDRiNzAyNDAwNjBiYmU1
N2Y2OTMwZi4uNzg3NTQzMjUzZDVkZmY0ZWM2NjhlYmU4OGYwODg1ZDBiYWRiNjU5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlv
bnNEZWxlZ2F0ZTsKIGludGVyZmFjZSBJV2ViVUlEZWxlZ2F0ZTsKIAogY2xhc3MgV2ViQ2hyb21l
Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggYzlkZTQ5YjNjZDE0NTUxNzI4ZmIy
ZjlkOTZlZjQ5MGU5OTE1OGJkNC4uZjQ4ZWU3MzBlZWY3MTk3OWU0ZDhkMmMzMjdlZDFiYTE3Yjk0
ZmZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiBjbGFz
cyBXZWJWaWV3OwogCiBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpDb250ZXh0TWVudUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViQ29udGV4dE1lbnVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5k
ZXggYjU5ODkzMzI5MTAwOWUyODUxZWQ3NTQxNWVjNGFhMGZlNDAzZDYxMS4uNDVlM2NhNzI3NTNh
ZDFhYzExNTNiZTk2MTkzZjZlZDYyMWZmODlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzEsNiArMzEs
NyBAQAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0NvbnRy
b2xsZXJEZXN0cm95ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZGI2MzUyZDYzODE2ZjdjOWFl
ZWU5Zjc0NGU0OGUzODFlODU2ZDJiNS4uNjlkN2VkM2UwYWEzMWYxM2JlYTY0Y2YwYzI3NjVlMjU0
ZmJmOGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViTm90
aWZpY2F0aW9uOwogY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAogY2xhc3MgV2ViRWRpdG9y
Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNv
cmU6OlRleHRDaGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViVmlldyopOwogICAgIH5XZWJFZGl0b3JDbGll
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZTM1NGI3MWNkZmQyYTVm
OWI4YjAxMWEwMzI5ZDc0MjRiYzkwYmJjLi43NzFmOGVhNmY3MTY4MDljZGZhZGQ3ZTM4YzYwZGM3
YTAzZTAxZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMDcsNyArMTA3
LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cml2YXRlIHsKIH07CiAKIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVu
dChXZWJGcmFtZSogd2ViRnJhbWUpCi0gICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShzdGQ6
Om1ha2VfdW5pcXVlPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQorICAgIDogbV9w
b2xpY3lMaXN0ZW5lclByaXZhdGUobWFrZVVuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJp
dmF0ZT4oKSkKICAgICAsIG1fd2ViRnJhbWUod2ViRnJhbWUpCiAgICAgLCBtX21hbnVhbExvYWRl
cigwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkgCkBAIC05NzMsNyAr
OTczLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2Fj
aGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZyYW0KIAogICAgIEFTU0VSVChjb3JlRnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPT0gY2FjaGVkRnJhbWUtPmRvY3VtZW50TG9hZGVy
KCkpOwogCi0gICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0YXRpY19jYXN0PElXZWJE
YXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkpKSkpOworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihzdGF0aWNfY2FzdDxJV2Vi
RGF0YVNvdXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpKSkpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggZWI5NzU4YmQ0MjEwN2QyZjlhODU0ZTRlNjg4MTY2
YTZmNTE1ZmI5Zi4uYmJhOWM5ZjQ0NTM1OGQ3Y2UzZWEwM2Y4OTY2NDFiZDZlNWUwNDBkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEdlb2xvY2F0
aW9uUG9zaXRpb247CiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA3NTY5NTkwYzFiM2NmMzgxNmZjNDJh
MzViZjNmNjZiZmQ3ODkwMjI0Li5mODBhZTA0OGI4MmRiZGIyMzQ2NTQ2OGQ5MzNjNjBhNzA5NzJj
N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9u
dGVuZChJbnNwZWN0b3JDb250cgogICAgICAgICByZXR1cm4gMDsKIAogICAgIG1fZnJvbnRlbmRQ
YWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3Rl
ZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVu
ZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGlu
Z3MoKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxl
LCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhp
cywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKICAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGll
bnQuZ2V0KCkpOwogICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBmcm9udGVuZEh3bmQ7CiAgICAgcmV0
dXJuIHRoaXM7CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omhp
Z2hsaWdodCgpCiAgICAgYm9vbCBjcmVhdGluZ0hpZ2hsaWdodCA9ICFtX2hpZ2hsaWdodDsKIAog
ICAgIGlmIChjcmVhdGluZ0hpZ2hsaWdodCkKLSAgICAgICAgbV9oaWdobGlnaHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYk5vZGVIaWdobGlnaHQ+KG1faW5zcGVjdGVkV2ViVmlldyk7CisgICAgICAg
IG1faGlnaGxpZ2h0ID0gbWFrZVVuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3BlY3RlZFdl
YlZpZXcpOwogCiAgICAgaWYgKG1faGlnaGxpZ2h0LT5pc1Nob3dpbmcoKSkKICAgICAgICAgbV9o
aWdobGlnaHQtPnVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5NWM5YWZhODUw
MDJhNTQzMjcwYjdjZTZiMzg4YzcwZDQ4OTE4NTE4Li5mMjBlYWViZDY2MWY5MTJiYWNmMmQ5OWY0
NDA5ZGJjZDdhOTcxZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTAsNiArNTAsNyBA
QCBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0OwogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViSW5z
cGVjdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVi
bGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApp
bmRleCA2OGM2YmQ0OTM5Y2Y5YjA0ODk1N2JjNzUwMGJkODU0OGEwMWVlM2IyLi4xNjI3ZWM1ZmEy
NmJmNTkwMWQwNTkzYjVhMTgzOTY5NDc5MjE5MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTM0Nyw2ICszNDcsNyBAQCBIUkVTVUxU
IFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsSW5kZXhlZERhdGFiYXNlcygpCiB9CiAKIGNs
YXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpZE1vZGlmeU9yaWdpbkRhdGEpOwogcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlciog
ZGF0YWJhc2VNYW5hZ2VyLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4
IDI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIuLjhhZmJhMGY2ZDUzYWZk
NTU1ODQ1YzE5NTM2YzJhOWMxZWM1ZjM3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gV2ViRWxlbWVudFByb3BlcnR5QmFnIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJFbGVtZW50UHJvcGVydHlC
YWc6OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCi0g
ICAgOiBtX3Jlc3VsdChzdGQ6Om1ha2VfdW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCisg
ICAgOiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9w
ZXJ0eUJhZyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9y
eUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmlu
ZGV4IGE4MWMwMGU1NmM1ZGUyYWViYzEyYWI4YjZkYjExYmM5MzRlYmJiZGEuLmZiODhlMzllN2I1
NmFjMzJkY2Y1Y2Y1MDExYzM1NDgxNzFhNmMzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBIUkVTVUxUIFdlYkhpc3Rv
cnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihfSW5fb3B0XyB2b2lkKiBk
aWN0aW9uYQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gcmVkaXJlY3RVUkxz
VmVjdG9yOwogICAgIGlmIChDRkFycmF5UmVmIHJlZGlyZWN0VVJMc1JlZiA9IHN0YXRpY19jYXN0
PENGQXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnlSZWYsIHJlZGlyZWN0
VVJMc0tleSkpKSB7CiAgICAgICAgIENGSW5kZXggc2l6ZSA9IENGQXJyYXlHZXRDb3VudChyZWRp
cmVjdFVSTHNSZWYpOwotICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxTdHJpbmc+PihzaXplKTsKKyAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0g
bWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oc2l6ZSk7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgICgqcmVkaXJlY3RVUkxzVmVjdG9yKVtp
XSA9IFN0cmluZyhzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRl
eChyZWRpcmVjdFVSTHNSZWYsIGkpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RS
ZW5kZXJlci5jcHAKaW5kZXggMmYxZjJmNDgwN2ViOWM0ZmU3MDgzNWRiNzhlMzRhMzRiY2ZmMzZk
MC4uZDY1ZGUxOWVlOTljNDUxNDQ1ZGZiZjFiMTM1OWRjMmE4YmEzOGM4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJl
bmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4gQ0FEM0RSZW5kZXJlcjo6Y3JlYXRlRDNE
UG9zdFByb2Nlc3NpbmcKICAgICBtZW1jcHkob3ZlcmxheVF1YWRCdWZmZXIsIG92ZXJsYXlRdWFk
VmVydGljZXMsIHNpemVvZihvdmVybGF5UXVhZFZlcnRpY2VzKSk7CiAgICAgb3ZlcmxheVF1YWQt
PlVubG9jaygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RDNEUG9zdFByb2Nlc3Np
bmdDb250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1YWQp
OwogfQogCiAvLyBGSVhNRTogPHJkYXI6Ly82NTA3ODUxPiBTaGFyZSB0aGlzIGNvZGUgd2l0aCBD
b3JlQW5pbWF0aW9uJ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5v
dGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmlj
YXRpb25DZW50ZXIuY3BwCmluZGV4IDdiZDk4ODk2MTExYzNiM2ZlNmZlNTRmMGEyNDc5NjYwNmIy
MmE3NWYuLmIyMGJhY2Q2MjllYjVhYzBkMjcyMDQyZDg3OGIxNjBlODQ1YWMxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBzdHJ1Y3QgV2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZSB7CiBJV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50ZXI6Om1fZGVmYXVsdENlbnRl
ciA9IDA7CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkK
LSAgICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigp
KQorICAgIDogZChtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlm
aWNhdGlvbkNlbnRlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA5NzYx
NDhlMzNmNzQ0NmQ3YzM4NDk5NTlkNmNmNzNkZWY0OGY2N2ZmLi45MmQzOWFjNGJjNWEwNWVlYzE0
ZGQxZWFiNDA5NTE2ZjQ0NDY0ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApA
QCAtMTg4MCw3ICsxODgwLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KFVJTlQg
bWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICAgICAgbW91c2VFdmVu
dC5zZXRDbGlja0NvdW50KGdsb2JhbENsaWNrQ291bnQpOwogICAgICAgICBoYW5kbGVkID0gbV9w
YWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZU1vdmVkKG1vdXNlRXZlbnQpOwog
ICAgICAgICBpZiAoIW1fbW91c2VPdXRUcmFja2VyKSB7Ci0gICAgICAgICAgICBtX21vdXNlT3V0
VHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8VFJBQ0tNT1VTRUVWRU5UPigpOworICAgICAgICAg
ICAgbV9tb3VzZU91dFRyYWNrZXIgPSBtYWtlVW5pcXVlPFRSQUNLTU9VU0VFVkVOVD4oKTsKICAg
ICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5jYlNpemUgPSBzaXplb2YoVFJBQ0tNT1VTRUVW
RU5UKTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5kd0ZsYWdzID0gVE1FX0xFQVZF
OwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXItPmh3bmRUcmFjayA9IG1fdmlld1dpbmRv
dzsKQEAgLTY3OTQsNyArNjc5NCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVnaXN0ZXJFbWJlZGRl
ZFZpZXdNSU1FVHlwZShfSW5fIEJTVFIgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAKICAgICBpZiAoIW1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzKQotICAgICAgICBtX2VtYmVk
ZGVkVmlld01JTUVUeXBlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwor
ICAgICAgICBtX2VtYmVkZGVkVmlld01JTUVUeXBlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJp
bmc+PigpOwogCiAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMtPmFkZCh0b1N0cmluZyhtaW1l
VHlwZSkpOwogICAgIHJldHVybiBTX09LOwpAQCAtNjg5NCw3ICs2ODk0LDcgQEAgdm9pZCBXZWJW
aWV3OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50
JiB2aWRlb0VsZW1lbnQKICAgICAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xs
ZXIpOwogICAgIH0KIAotICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcj4oKTsKKyAgICBtX2Z1bGxTY3JlZW5W
aWRlb0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+KCk7
CiAgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5zZXRWaWRlb0VsZW1lbnQoJnZpZGVv
RWxlbWVudCk7CiAgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRlckZ1bGxzY3Jl
ZW4oKTsKICNlbmRpZgpAQCAtNjk0Niw3ICs2OTQ2LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRV
c2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0
V28KICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3Js
ZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8g
dXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB0b1VSTCh1
cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwKKyAgICBhdXRv
IHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCiAgICAgICAgIHRvU3Ry
aW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLCBpbmplY3Rpb25UaW1lID09IFdl
YkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0
RG9jdW1lbnRFbmQsCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJh
bWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmll
d0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHdvcmxkLT53b3Js
ZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKQEAgLTY5NzMsNyArNjk3Myw3IEBAIEhSRVNVTFQg
V2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9J
bl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBXZWJTY3Jp
cHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxk
KTsKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0
Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0
Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwKKyAgICBh
dXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJM
KHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmlu
Z1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwKICAgICAgICAgaW5qZWN0ZWRGcmFt
ZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdElu
VG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNv
bnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQod29ybGQtPndvcmxkKCksIFdURk1v
dmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogICAgIHJldHVybiBT
X09LOwpAQCAtNzIzNyw3ICs3MjM3LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKGJvb2wgYWNjZWxlcmF0ZWQpCiAgICAgfQogI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dCkKLSAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKKyAgICAg
ICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZyA9IGFjY2VsZXJhdGVkOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCmlu
ZGV4IGVlY2E3MzlkMmIzOTRlODYwMzUxYmExYjQ2NGRlNTQ3OGI5YmIxNjcuLmRiMzZlYjlkZWQy
YjllMGY1ZjZlZjQwZGI2YzY5OTE5YTczMDZkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5o
CkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVyYXRvciBu
ZXdbXShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtd
KHZvaWQqIHApID0gZGVsZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsg
XAogcHJpdmF0ZTogXAogdHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkTWFjcm9TZW1pY29s
b25pZmllcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxp
bmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKaW5kZXggYzA0
NGQ3NzNiODc5YTY2ZGZhZGQyZTJjYTMxNWVlZWEzNzZmZmE0YS4uM2FhMWQyMDk1MWRiZjMzNjRl
N2QxNmRkMjM2NDNkMGNkOTdmNmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElu
bGluZXMuaApAQCAtMTIzLDYgKzEyMyw3IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApID0gZGVsZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0
ZWRDbGFzczsgXAogcHJpdmF0ZTogXAogdHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkSW5s
aW5lTWFjcm9TZW1pY29sb25pZmllcgogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNjJmZjNlZWIyZDcwYzA5ODAxMTRkYzE4N2M3MGY5ODAzZjFj
ZTkwOC4uMGJhNzU5ZTQ2ZmU0MWMyOGEyOWM1YjRjZjFhZTRhZjhmMjZlYzNmMiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBA
QAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxv
Y2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChhZGRVUkxUb1JlZGlyZWN0
Q2FsbGJhY2spOgorICAgICAgICAoc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFj
ayk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKToK
KyAgICAgICAgKFRlc3RSdW5uZXI6OnJ1blVJU2NyaXB0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW06CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKGV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHA6CisgICAgICAgIChEUlREYXRhT2Jq
ZWN0OjpTZXREYXRhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVs
ZWdhdGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9hZERlbGVnYXRl
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAg
IChEUlRVbmRvTWFuYWdlcjo6RFJUVW5kb01hbmFnZXIpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6
VUlEZWxlZ2F0ZSk6CisgICAgICAgIChVSURlbGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6CisgICAgICAgIChjcmVhdGVWaWV3QmFj
a2VuZCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVk
L2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0Nv
dW50ZXJzLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KU1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6
dG9TVEQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aENvdW50ZWRTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RNb3ZpbmdVc2luZ0Vu
c3VyZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdBZGQpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlz
dEhhc2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpydW5Mb2NrVGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2lu
Z0xvdC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDQVJpbmdC
dWZmZXJUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVGVz
dFZhbHVlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1l
c3NhZ2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
TW9kYWxBbGVydHNTUEkuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFn
ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVn
aW5BbmRFbmRFZGl0aW5nLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9Vc2VyTWVzc2FnZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyVXNlck1l
c3NhZ2VSb3VuZFRyaXBUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvV2lsbExvYWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0Mldp
bGxMb2FkVGVzdDo6U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVUZXN0OjpkaWRSZWNlaXZl
TWVzc2FnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RB
dXRoZW50aWNhdGlvbi5jcHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICh0
ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXRET01ET01XaW5kb3dUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcubW06CisgICAgICAgIChhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRT
dHJpbmdzVG9JdGVtUHJvdmlkZXJzKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBpbml0V2l0
aEZyYW1lOmNvbmZpZ3VyYXRpb246YWRkVG9XaW5kb3c6XSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRp
b25zIGluaXRXaXRoRm9udE9wdGlvbnM6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9F
dmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlv
blByb3ZpZGVyTW9jay5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAg
IChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNw
cDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmg6CisgICAgICAgIChXVFI6OnRv
U1REKToKKyAgICAgICAgKFdUUjo6dG9XVEZTdHJpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpjcmVhdGVUZXN0VVJMKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnJ1
blVJU2lkZVNjcmlwdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmll
dyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNw
cDoKKyAgICAgICAgKFdUUjo6Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5Ojptb3VzZU1vdmVUbyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRT
ZW5kZXJQcm94eVdQRS5jcHA6CisgICAgICAgIChXVFI6OndwZUtleVN5bUZvcktleVJlZik6CisK
IDIwMTktMDgtMTIgIFRha2FzaGkgS29tb3JpICA8VGFrYXNoaS5Lb21vcmlAc29ueS5jb20+CiAK
ICAgICAgICAgW1dURl0gVGhyZWFkOjpyZW1vdmVGcm9tVGhyZWFkR3JvdXAgbGVha3Mgd2VhayBw
b2ludGVycy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZTgxN2E1NzNhNThk
MTU5ZDRjZjIzNDk4MmNjYTA0ZGNkNjRiNjA0YS4uOGYxM2VlMDAzYTNkZTBhMGQ5NDg2MTE5MTMy
MmYzNGY4YWRlZWQyNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTM2Mywx
MSArMzYzLDExIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuCiAgICAgQVNTRVJUKCEqZXhjZXB0
aW9uKTsKIAogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0
cmluZ1NpemUob3JpZ2luLmdldCgpKTsKLSAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7
CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhvcmlnaW4uZ2V0KCksIG9yaWdpbkJ1ZmZlci5n
ZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoZGVzdGluYXRpb24uZ2V0KCkpOwotICAgIGF1dG8gZGVzdGluYXRp
b25CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAg
YXV0byBkZXN0aW5hdGlvbkJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhkZXN0
aW5hdGlvbi5nZXQoKSwgZGVzdGluYXRpb25CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwog
CiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTMwNCw3ICsxMzA0LDcgQEAgc3Rh
dGljIEpTVmFsdWVSZWYgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlMKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6
ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShoZWFkZXIu
Z2V0KCkpOwotICAgIGF1dG8gaGVhZGVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gaGVhZGVyQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dl
dFVURjhDU3RyaW5nKGhlYWRlci5nZXQoKSwgaGVhZGVyQnVmZmVyLmdldCgpLCBtYXhMZW5ndGgg
KyAxKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVu
bmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIzNzksNyArMjM3OSw3
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sIHNob3Vs
ZFBhaW50QnJva2VuSW1hZ2UpCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9nc0Zv
ckNoYW5uZWwoSlNTdHJpbmdSZWYgY2hhbm5lbCkKIHsKICAgICBzaXplX3QgbWF4TGVuZ3RoID0g
SlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGNoYW5uZWwpOwotICAgIGF1dG8gYnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8g
YnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5n
dGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGNoYW5uZWwsIGJ1ZmZlci5nZXQo
KSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldExvZ0NoYW5u
ZWxUb0FjY3VtdWxhdGUoeyBidWZmZXIuZ2V0KCkgfSk7CkBAIC0yNDQ5LDcgKzI0NDksNyBAQCB2
b2lkIFRlc3RSdW5uZXI6OnJ1blVJU2NyaXB0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmlu
Z1JlZiBzY3JpcHQsIEpTVmFsdWVSZQogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKGNhbGxi
YWNrSUQsIGNhbGxiYWNrKTsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAg
IG1fVUlTY3JpcHRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXVFI6OlVJU2NyaXB0Q29udGV4
dD4oKnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFdUUjo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAKICAgICBTdHJp
bmcgc2NyaXB0U3RyaW5nKEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzY3JpcHQpLCBKU1N0cmlu
Z0dldExlbmd0aChzY3JpcHQpKTsKICAgICBtX1VJU2NyaXB0Q29udGV4dC0+cnVuVUlTY3JpcHQo
c2NyaXB0U3RyaW5nLCBjYWxsYmFja0lEKTsKQEAgLTI1MDYsNyArMjUwNiw3IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgZmlsZXNWYWx1ZSkKIAogICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdChKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIGZpbGVWYWx1ZSwgbnVsbHB0cikpOwogICAgICAgICBzaXplX3QgZmls
ZUJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoZmlsZS5nZXQo
KSkgKyAxOwotICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4oZmlsZUJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKICAgICAgICAg
SlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhmaWxlLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpLCBmaWxl
QnVmZmVyU2l6ZSk7CiAKICAgICAgICAgbV9vcGVuUGFuZWxGaWxlcy5wdXNoX2JhY2soZmlsZUJ1
ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0K
aW5kZXggNjRkYjFkMTdmOWJjOWNiOGNlNmQ4MmY5Yjc3ZGJmMzg3NWFjYTBjYS4uOTU3YzRlNjM5
NTkxMTg2MzVkNzIyMTVlMGNhYzdjYjZmZDcyMGNkZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTUzNSw3ICsxNTM1LDcgQEAgc3RhdGljIE5TU3Ry
aW5nICpkdW1wRnJhbWVzQXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKICAgICAvLyB0aGUgcmVzdWx0
IHdpdGhvdXQgYW55IGNvbnZlcnNpb24uCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0
cmluZ1JlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENG
U3RyaW5nUmVmKWlubmVyVGV4dCkpOwogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdH
ZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZ1JlZi5nZXQoKSk7Ci0gICAgYXV0byBidWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZm
ZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUp
OwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3Ry
aWN0KHN0cmluZ1JlZi5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBbcmVz
dWx0IGFwcGVuZEZvcm1hdDpAIiVAXG4iLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxi
YWNrKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdD
b250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0KaW5kZXggNDYxYmQzZGYzZWJiMjYwM2FjMzIxODI4ODIxOGRkOGY2OTE2OGZmZC4u
M2JlMzMyMjFkNmIzZWJjMzU2ZDUxZTMzNGEyNGQ5MjlhZTI1M2E5ZSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTU2OCw3
ICs1NjgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IGV2
ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVgogewogICAgIGlmIChbdmlldyBpc0tp
bmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKQogICAgICAgICB2aWV3ID0gWyhXZWJIVE1M
VmlldyAqKXZpZXcgX2hpdFZpZXdGb3JFdmVudDpldmVudF07Ci0gICAgcmV0dXJuICFbdmlldyBp
c0tpbmRPZkNsYXNzOltOU1Njcm9sbGVyIGNsYXNzXV0gPyBzdGQ6Om1ha2VfdW5pcXVlPENsYXNz
TWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1
dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1
dHRvbnMpKSA6IE5VTEw7CisgICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Njcm9s
bGVyIGNsYXNzXV0gPyBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNs
YXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElN
UD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5VTEw7CiB9CiAKIHN0YXRp
YyBOU1VJbnRlZ2VyIHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcAppbmRleCBlZjJkMmVmYjg1OWY0Yjhh
MjJmMzBjNDY3YWNlMWY4YWFkMTU3YTRkLi43NmEyMWE1OGE5ZjY2ZGRlMTYwNzI5ZjhmZWUxZTE1
Zjk0OWU2NjI0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9i
amVjdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3Bw
CkBAIC0yNDksNyArMjQ5LDcgQEAgU1RETUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEo
X0luXyBGT1JNQVRFVEMqIHBmb3JtYXRldGMsIF9Jbl8gU1RHTUVESVVNKgogICAgIGlmICghcGZv
cm1hdGV0YyB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1
dG8gZm9ybWF0ZXRjID0gc3RkOjptYWtlX3VuaXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0byBm
b3JtYXRldGMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxGT1JNQVRFVEM+KCk7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNUR01FRElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0Z01l
ZChuZXcgU1RHTUVESVVNKTsKIAogICAgIFplcm9NZW1vcnkoZm9ybWF0ZXRjLmdldCgpLCBzaXpl
b2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJh
bWVMb2FkRGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERl
bGVnYXRlLmNwcAppbmRleCBjODBkZjFiZTVmMmRlNDdkM2I4MzE2MzdlZjZlOWZiY2Q5MzRjOGU2
Li4xMWM5MzM5YjE2ZDgwNGQyYzIwMWM5MzI5ZjRhOGMzNTQ0MmE4M2NiIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTcyLDkgKzcyLDkg
QEAgc3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KElXZWJGcmFtZSogd2Vi
RnJhbWUpCiB9CiAKIEZyYW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSgpCi0gICAg
OiBtX2djQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEdDQ29udHJvbGxlcj4oKSkKLSAgICAs
IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcj4oKSkKLSAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5p
cXVlPFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCisgICAgOiBtX2djQ29udHJvbGxlcihtYWtlVW5p
cXVlPEdDQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4oKSkKKyAgICAsIG1fdGV4dElucHV0Q29u
dHJvbGxlcihtYWtlVW5pcXVlPFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAppbmRleCBmMGFkYmNlNDc5NmZhYmY0ZjBk
NDJiMjcxMTYzMzcwMWFjNzgxMzE0Li40N2FhMjcyYmYxOTVjZDlhMjVhZjI4NjU1ZDM3MWY0MTYw
MGY0NTk4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCkBAIC0xMDEs
OCArMTAxLDggQEAgY2xhc3MgRFJUVW5kb01hbmFnZXIgewogfTsKIAogRFJUVW5kb01hbmFnZXI6
OkRSVFVuZG9NYW5hZ2VyKCkKLSAgICA6IG1fcmVkb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJU
VW5kb1N0YWNrPigpKQotICAgICwgbV91bmRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRv
U3RhY2s+KCkpCisgICAgOiBtX3JlZG9TdGFjayhtYWtlVW5pcXVlPERSVFVuZG9TdGFjaz4oKSkK
KyAgICAsIG1fdW5kb1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigpKQogewogfQogCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBEUlRVbmRvTWFuYWdlcjo6dW5kbygpCiB9CiAKIFVJRGVs
ZWdhdGU6OlVJRGVsZWdhdGUoKQotICAgIDogbV91bmRvTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVl
PERSVFVuZG9NYW5hZ2VyPigpKQorICAgIDogbV91bmRvTWFuYWdlcihtYWtlVW5pcXVlPERSVFVu
ZG9NYW5hZ2VyPigpKQogICAgICwgbV9kZXNrdG9wTm90aWZpY2F0aW9ucyhuZXcgRFJURGVza3Rv
cE5vdGlmaWNhdGlvblByZXNlbnRlcikKIHsKICAgICBtX2ZyYW1lLmJvdHRvbSA9IDA7CkBAIC0x
NTcsNyArMTU3LDcgQEAgVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCiAKIHZvaWQgVUlEZWxlZ2F0
ZTo6cmVzZXRVbmRvTWFuYWdlcigpCiB7Ci0gICAgbV91bmRvTWFuYWdlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RFJUVW5kb01hbmFnZXI+KCk7CisgICAgbV91bmRvTWFuYWdlciA9IG1ha2VVbmlxdWU8
RFJUVW5kb01hbmFnZXI+KCk7CiB9CiAKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nl
ci93cGUvbWFpbi5jcHAKaW5kZXggYmU2NDYwZTU2YjdiNzBjZDI0ODBmYzg3ZGUyYjliYTk3MGU1
OGMzOC4uNDM5MTkyOTc5MWRkNjcxMzFjODU4YTE2Njg5YzUyYmFkYzFkZDg2MiAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2Vy
L3dwZS9tYWluLmNwcApAQCAtMTI5LDggKzEyOSw4IEBAIHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQ
ZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3ICosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0
CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ+
IGNyZWF0ZVZpZXdCYWNrZW5kKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiB7CiAg
ICAgaWYgKGhlYWRsZXNzTW9kZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BF
VG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdC
YWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFVG9v
bGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3
aWR0aCwgaGVpZ2h0KTsKIH0KIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMjUxLDcgKzI1MSw3IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgIG51bGxwdHIpKTsKICAg
ICBnX29iamVjdF91bnJlZihzZXR0aW5ncyk7CiAKLSAgICBiYWNrZW5kUHRyLT5zZXRJbnB1dENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPElucHV0Q2xpZW50Pihsb29wLCB3ZWJWaWV3KSk7CisgICAg
YmFja2VuZFB0ci0+c2V0SW5wdXRDbGllbnQobWFrZVVuaXF1ZTxJbnB1dENsaWVudD4obG9vcCwg
d2ViVmlldykpOwogI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VT
U0lCSUxJVFkKICAgICBhdXRvKiBhY2Nlc3NpYmxlID0gd3BlX3ZpZXdfYmFja2VuZF9kaXNwYXRj
aF9nZXRfYWNjZXNzaWJsZSh3cGVCYWNrZW5kKTsKICAgICBpZiAoQVRLX0lTX09CSkVDVChhY2Nl
c3NpYmxlKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udGV4dC5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250ZXh0LmgKaW5kZXggNGUwMjBmMTk2Y2QwMzNkNjFlZTBlNjI4ZjZh
MWU1OWNhMWMzMzQ1OC4uMGI4NGQyZDQ1NDU1ODNkZTlmYzBkZWMxMmE0YWE4OGE2NTllZDE5OCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250ZXh0LmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250ZXh0LmgKQEAgLTY4LDYgKzY4LDcgQEAgdHlwZWRlZiBlbnVtICB7CiB9IENh
bGxiYWNrVHlwZTsKIAogY2xhc3MgVUlTY3JpcHRDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVSVNjcmlwdENvbnRleHQpOwog
cHVibGljOgogICAgIFVJU2NyaXB0Q29udGV4dChVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSYpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6
bGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIu
aAppbmRleCAyOGRiMTBhNDc5OTYzMGM2NGM1NWQwNzg2YzAwZWUwOTQ4OTE0NWUyLi4zOWI0ZTVl
YTcxODM2ODhjZGVjOWJlZmNjOTY0Y2U4OTNhNTQzZjA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaAorKysgYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaApAQCAtMjYsOSArMjYsMTEg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogY2xhc3Mg
Q2xhc3NNZXRob2RTd2l6emxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xhc3NNZXRob2RTd2l6emxlcik7CiBwdWJsaWM6CiAgICAg
Q2xhc3NNZXRob2RTd2l6emxlcihDbGFzcywgU0VMLCBJTVApOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db3VudGVycy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5o
CmluZGV4IGY5ZWEyMjQwMjYxNTBkOGUxYWM2YmI3NjE1YjZkZTM4OTBhZjY3MGUuLmFiNWM1MmY3
NWQxYWM2YWY5NjBhYzE0Y2E3MGI1Y2I3NGZhMzYyODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ291bnRlcnMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgK
QEAgLTI3LDYgKzI3LDggQEAKICNpZm5kZWYgQ291bnRlcnNfaAogI2RlZmluZSBDb3VudGVyc19o
CiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCiBzdHJ1Y3QgQ29weU1vdmVDb3VudGVy
IHsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CiAgICAgc3RhdGljIHVu
c2lnbmVkIGNvcHlDb3VudDsKQEAgLTUwLDYgKzUyLDcgQEAgc3RydWN0IENvcHlNb3ZlQ291bnRl
ciB7CiAKIAogc3RydWN0IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0
aW9uQ291bnQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGRlc3RydWN0aW9uQ291bnQ7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKaW5kZXggMjEzNmU5OGQ4ZWJiODc1ZDU5N2Zj
NmUwN2M3YjAxZWQ1Yjg0YWUxNi4uNmEyMzM2MzI5NDFhY2Y2MDcwNTk0OTQyNjQwMWIzMjczMzdj
NzA4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgcnVuSlNUZXN0KGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKiwgY29uc3QgY2hhciosIFdLUGEKICAgICBVdGlsOjpydW4oJmNvbnRleHQuZGlk
RmluaXNoKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRG
OENTdHJpbmdTaXplKGNvbnRleHQuYWN0dWFsU3RyaW5nLmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7
CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhjb250ZXh0LmFjdHVhbFN0cmluZy5nZXQoKSwg
YnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICAKICAgICByZXR1cm4gY29tcGFyZUpTUmVz
dWx0KHNjcmlwdCwgYnVmZmVyLmdldCgpLCBleHBlY3RlZFJlc3VsdCk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCmluZGV4IDhmOGQ3NjhhNTNjMjc1MWEyNDNlMDU5
NWUyYzBjMGY0NDVkZDk2YzguLmJiYmZmNzA5ZTY3ZDM1OWI0ZTQ4MTcxZWQ3YzRjMjQwMDhhNTY3
ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCkBAIC02OSw3
ICs2OSw3IEBAIFdLQ29udGV4dFJlZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0
KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0TmFtZSwgV0tUCiBzdGQ6OnN0cmluZyB0b1NURChXS1N0
cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1h
eGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90
IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIuZ2V0
KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZ2V0KCksIHN0
cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKaW5k
ZXggYWQyYTczMmQ1MTk0N2JiYzdhZmM2NGUyN2Q0MjE1Y2UzMjg3ZGRlZS4uMGMyN2E0NjE2NDVm
YmExMmE1YzY5NWQ5MzI2NDMwNTI2YzRlZjEyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
V2ViVmlldy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtV2ViVmlld19oCiAj
ZGVmaW5lIFBsYXRmb3JtV2ViVmlld19oCiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
CiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAjZW5k
aWYKQEAgLTYzLDYgKzY1LDcgQEAgdHlwZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZpZXJzOwog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3Jt
V2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdl
YlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IDRiMTBjODZhMmFiNzMyZTFlYTYyNzQ4
NGNjNzg5NDBmYjZjZDZlOTYuLjJhMDZmOGJhNWNhOWZlYjQ5MmEzNTIyYzVjNjU1MDEzOGQyMjM3
ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKQEAgLTQw
Nyw2ICs0MDcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgZGVzdHJ1Y3RvcnMpCiBzdGF0aWMgaW50
IHNub3dmbGFrZXMgPSAwOwogc3RhdGljIGludCBtZWx0ZWQgPSAwOwogc3RydWN0IHNub3dmbGFr
ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRpYyB2b2lk
IHJlc2V0KCkgeyBzbm93Zmxha2VzID0gbWVsdGVkID0gMDsgfQogICAgIHNub3dmbGFrZSgpIHsg
Kytzbm93Zmxha2VzOyB9CiAgICAgfnNub3dmbGFrZSgpIHsgKyttZWx0ZWQ7IH0KQEAgLTQxNiw3
ICs0MTcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKIHsKICAgICAvLyBVbmlx
dWUgc25vd2ZsYWtlcyBjYW5ub3QgYmUgY29waWVkLgogICAgIHsKLSAgICAgICAgYXV0byBzID0g
bWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBh
dXRvIHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAg
IEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7
CiAgICAgfQpAQCAtNDI1LDcgKzQyNiw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRy
KQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFr
ZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBhdXRv
IHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIFVu
ZXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IGMoV1RGTW92ZShzKSk7CiAgICAg
ICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwg
MCk7CkBAIC00NDYsNyArNDQ3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAg
ICAgfTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFr
ZT4sIGludD4gcyhzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIEV4cGVj
dGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMobWFrZVVuaXF1ZTxzbm93Zmxh
a2U+KCkpOwogICAgICAgICBwbG93KFdURk1vdmUocykudmFsdWUoKSk7CiAgICAgfQogICAgIEVY
UEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ1NCw3ICs0NTUsNyBAQCBURVNUKFdURl9FeHBl
Y3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAg
ICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhw
ZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8
aW50LCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5p
cXVlPHNub3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAg
ICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ2Miw3ICs0NjMsNyBAQCBU
RVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAK
ICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+
PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKSk7CisgICAg
ICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4
cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShz
KS5lcnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCmluZGV4IDg0
ZGE1ZWMzZmZjMjQ4YWNkZDllMzYzMzAzOGM2OWRhZTg5MTIwOTkuLjdiOGZhZjI4OGFiYzA3Y2Zh
ZjhiNTI3MTIzOGY3NmQwMTMwMTJlZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBURVNUKFdURl9I
YXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1
bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsK
IAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3Zl
KHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yNTksNyArMjU5LDcgQEAgVEVTVChXVEZf
SGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleUluaXRpYWxDb3VudCkKIAogICAgIEhhc2hDb3Vu
dGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFz
aENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VV
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBoYXNoQ291bnRlZFNl
dC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAxMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI5OCw3ICsy
OTgsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jh
d1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhh
c2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGlu
dD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hD
b3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAg
VEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9p
bnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENv
dW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50
ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBURVNU
KFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRlcikKIHsK
ICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBh
dXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7
CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRk
KFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMzNyw3ICszMzcsNyBAQCBURVNUKFdURl9IYXNo
Q291bnRlZFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhh
c2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENv
dW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggMWUxNjNkMzg5OThlNmJhYmZmZjUzODQxM2NjYTI4
YWE2ZDI5ODk4Mi4uYTgwY2E3NDk0YThmOWE3OTY3ZTFlNDk0NmZlOGNjYTYzOWNiYjU4YiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTE5MSw3ICsxOTEs
NyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoTWFwPHN0ZDo6
dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7
CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0
cnVjdGlvbkNvdW50KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlx
dWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVl
X3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAg
ICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBU
RVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7
CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRv
IHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBw
dHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIp
OwogCkBAIC0yNTUsNyArMjU1LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0dl
dFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBp
bnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBURVNUKFdURl9IYXNo
TWFwLCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxz
dGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
ciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIp
LCAyKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktl
eV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7Cisg
ICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRy
LmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtNTYzLDEy
ICs1NjMsMTIgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1VuaXF1ZVBvaW50ZXIpCiB7CiAg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkPj4gbWFwOwogICAg
IHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDEpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPHVuc2lnbmVkPigxKTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1hcC5nZXQoMSkp
OwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgp
KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1bHQuaXRlcmF0b3ItPmtleSk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgYXV0byBhZGRS
ZXN1bHQyID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVuc2ln
bmVkPigyKTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwgW10g
eyByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDIpOyB9
KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9F
USgxdSwgKmFkZFJlc3VsdDIuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQRUNU
X0VRKDF1LCBhZGRSZXN1bHQyLml0ZXJhdG9yLT5rZXkpOwpAQCAtNTkwLDYgKzU5MCw3IEBAIFRF
U1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9SZWZQdHIpCiB9CiAKIGNsYXNzIE9iamVjdFdpdGhSZWZM
b2dnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE9iamVj
dFdpdGhSZWZMb2dnZXIoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgICAgIDogbV9sb2dn
ZXIoV1RGTW92ZShsb2dnZXIpKQpAQCAtNjA0LDcgKzYwNSw3IEBAIHZvaWQgdGVzdE1vdmluZ1Vz
aW5nRW5zdXJlKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogewogICAgIEhhc2hNYXA8dW5zaWdu
ZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogICAgIAotICAg
IG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJl
ZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CisgICAgbWFwLmVuc3VyZSgxLCBbJl0geyBy
ZXR1cm4gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9
KTsKIH0KIAogdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIp
CkBAIC02MTIsNyArNjEzLDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dl
cj4mJiBsb2dnZXIpCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVj
dFdpdGhSZWZMb2dnZXI+PiBtYXA7CiAKICAgICBhdXRvJiBzbG90ID0gbWFwLmFkZCgxLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgc2xvdCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0
V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsKKyAgICBzbG90ID0gbWFrZVVuaXF1ZTxP
YmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOwogfQogCiBURVNUKFdURl9IYXNo
TWFwLCBFbnN1cmVfTGFtYmRhc0NhcHR1cmluZ0J5UmVmZXJlbmNlKQpAQCAtNjgzLDYgKzY4NCw3
IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFZhbHVlSXNEZXN0cnVjdGVkT25SZW1vdmUpCiBURVNUKFdU
Rl9IYXNoTWFwLCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKIHsKICAgICBzdHJ1Y3QgRGVy
ZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAgICAgICAgewogICAgICAgICAgICAgKytj
b3VudDsKQEAgLTY5Nyw3ICs2OTksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJOb3RaZXJv
ZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2ZWRCdWNr
ZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8
RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hNYXA8UmVmUHRyPERlcmVmT2JzZXJ2ZXI+LCBp
bnQ+IG1hcDsKICAgICBtYXAuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSwgNSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCmluZGV4IDcxZWNmZGRiODQyYjZi
ZDUxNjQxY2EwNWI2MTA4YWQ0OGY2MmJiN2QuLjg3MjY4Yzc0ZjBjYjhmYzE0OWViZjYwYzg1ODhm
Y2VkMzU4MWEyMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hh
c2hTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3Bw
CkBAIC0xMjgsNyArMTI4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAg
ICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+
IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRFU1QoV1RGX0hhc2hT
ZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8c3Rk
Ojp1bmlxdWVfcHRyPGludD4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsK
ICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBU
RVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7
CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0g
dW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAt
MTcxLDcgKzE3MSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2lu
Z1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNl
dC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RG
X0hhc2hTZXQsIFVuaXF1ZVB0cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaFNl
dDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAot
ICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIq
IHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7
CiAKQEAgLTI4Myw2ICsyODMsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBDb3B5Q2FwYWNpdHlJc05v
dE9uQm91bmRhcnkpCiBURVNUKFdURl9IYXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJl
ZikKIHsKICAgICBzdHJ1Y3QgRGVyZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAgICAg
ICAgewogICAgICAgICAgICAgKytjb3VudDsKQEAgLTI5Nyw3ICsyOTgsNyBAQCBURVNUKFdURl9I
YXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVyZWZP
YnNlcnZlciogb2JzZXJ2ZWRCdWNrZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1dG8g
b2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBv
YnNlcnZlciA9IG1ha2VVbmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hTZXQ8UmVm
UHRyPERlcmVmT2JzZXJ2ZXI+PiBzZXQ7CiAgICAgc2V0LmFkZChhZG9wdFJlZihvYnNlcnZlci5n
ZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhh
c2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3Bw
CmluZGV4IDY1N2JlNDFkNjIwNzI0NDY3YTU1NDllMmFiNWExOTQxYzRlMzczYzEuLmI3NzBhNWIy
N2MxZDJiMDk1YTViYjU5ZDY1YWMzZjRkYzRlNGU2OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBURVNUKFdU
Rl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlx
dWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVY
UEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291
bnQpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJL
ZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9w
dHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxp
bnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0
LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00MTAsNyArNDEwLDcgQEAgVEVTVChXVEZf
TGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAg
ICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5p
cXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9
IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBA
IC00MjEsOSArNDIxLDkgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9JbnNl
cnRCZWZvcmVVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVf
cHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgyID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDIpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDIpOwogICAgIGF1dG8gcHRyV2l0aDIgPSB1bmlxdWVQdHJX
aXRoMi5nZXQoKTsKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGg0ID0gc3RkOjptYWtlX3VuaXF1ZTxp
bnQ+KDQpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxpbnQ+KDQpOwogICAgIGF1dG8gcHRyV2l0aDQgPSB1bmlxdWVQdHJXaXRoNC5n
ZXQoKTsKIAogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyV2l0aDIpKTsKQEAgLTQzNSw3
ICs0MzUsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9y
ZVVzaW5nUmF3UG9pbnRlcikKICAgICBBU1NFUlRfRVEocHRyV2l0aDQsIGxpc3QubGFzdCgpLmdl
dCgpKTsKICAgICBBU1NFUlRfRVEoNCwgKmxpc3QubGFzdCgpLmdldCgpKTsKIAotICAgIGF1dG8g
dW5pcXVlUHRyV2l0aDMgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMyk7CisgICAgYXV0byB1bmlx
dWVQdHJXaXRoMyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMyk7CiAg
ICAgYXV0byBwdHJXaXRoMyA9IHVuaXF1ZVB0cldpdGgzLmdldCgpOwogCiAgICAgbGlzdC5pbnNl
cnRCZWZvcmUocHRyV2l0aDQsIFdURk1vdmUodW5pcXVlUHRyV2l0aDMpKTsKQEAgLTQ2Miw3ICs0
NjIsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3
UG9pbnRlcikKIAogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVl
UHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGF1
dG8qIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0
cikpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCmluZGV4IDJkY2NlZGNh
ZGNjNmMyMjI3M2RlYmMyMGYzZmY2NzdjODczMjkwMjcuLjVmZDMxYmYxYzlhYmVjZmI4YWJlNzM1
NjA4YTQ3YzU2MDQzMDQ3NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0xvY2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3Bw
CkBAIC00Miw5ICs0Miw5IEBAIHN0cnVjdCBMb2NrSW5zcGVjdG9yIHsKIHRlbXBsYXRlPHR5cGVu
YW1lIExvY2tUeXBlPgogdm9pZCBydW5Mb2NrVGVzdCh1bnNpZ25lZCBudW1UaHJlYWRHcm91cHMs
IHVuc2lnbmVkIG51bVRocmVhZHNQZXJHcm91cCwgdW5zaWduZWQgd29ya1BlckNyaXRpY2FsU2Vj
dGlvbiwgdW5zaWduZWQgbnVtSXRlcmF0aW9ucykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9j
a1R5cGVbXT4gbG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPExvY2tUeXBlW10+KG51bVRocmVhZEdy
b3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IHN0ZDo6bWFrZV91
bmlxdWU8ZG91YmxlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJl
ZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+
W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPExvY2tUeXBlW10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8TG9ja1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91
YmxlW10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8ZG91YmxlW10+
KG51bVRocmVhZEdyb3Vwcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+
IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFk
PltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAgZm9yICh1
bnNpZ25lZCB0aHJlYWRHcm91cEluZGV4ID0gbnVtVGhyZWFkR3JvdXBzOyB0aHJlYWRHcm91cElu
ZGV4LS07KSB7CiAgICAgICAgIHdvcmRzW3RocmVhZEdyb3VwSW5kZXhdID0gMDsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKaW5kZXggNDUyZTIyNzcxZGMw
NjRhZGFhZmU2MjBlYjMzZTgwMTMwZjc5ZjE5Ny4uZTAwYTA5YjJhMTdhYTczNDg1NmU0MmMxMTQ1
Y2JlNjA4NjNmMGEwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UGFya2luZ0xvdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2lu
Z0xvdC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3QgU2luZ2xlTGF0Y2hUZXN0IHsKIAog
dm9pZCBydW5QYXJraW5nVGVzdCh1bnNpZ25lZCBudW1MYXRjaGVzLCB1bnNpZ25lZCBkZWxheSwg
dW5zaWduZWQgbnVtVGhyZWFkcywgdW5zaWduZWQgbnVtU2luZ2xlVW5wYXJrcykKIHsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gc3RkOjptYWtlX3VuaXF1
ZTxTaW5nbGVMYXRjaFRlc3RbXT4obnVtTGF0Y2hlcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNp
bmdsZUxhdGNoVGVzdFtdPiB0ZXN0cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKIAogICAgIGZvciAodW5zaWduZWQgbGF0
Y2hJbmRleCA9IG51bUxhdGNoZXM7IGxhdGNoSW5kZXgtLTspCiAgICAgICAgIHRlc3RzW2xhdGNo
SW5kZXhdLmluaXRpYWxpemUobnVtVGhyZWFkcyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1JlZkNvdW50ZXIuY3BwCmluZGV4IDA4MWRmOWU0ZmMxZDI1MWQ4MTRiMjI2NGJkMmQw
ZTA1MmMwYmQ0MWYuLmY0ZWY5ODNiMWE5ZmJlODk4MDdjNzVhYzI4ZmRiNjI2ZDlhOTZhMTEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCkBAIC0xNzAs
NyArMTcwLDcgQEAgVEVTVChXVEYsIFJlZkNvdW50ZXIpCiBURVNUKFdURiwgUmVmQ291bnRlckRl
bGV0ZUNvdW50ZXJXaXRoT3V0c3RhbmRpbmdUb2tlbnMpCiB7CiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGVzdENvdW50ZXI+IGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RD
b3VudGVyPihbJl0oUmVmQ291bnRlckV2ZW50IGV2ZW50KSB7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IG1ha2VVbmlxdWU8VGVzdENvdW50ZXI+KFsmXShS
ZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsKICAgICAgICAgICAgIGlmICghY291bnRlci0+dmFsdWUo
KSkKICAgICAgICAgICAgICAgICBjb3VudGVyID0gbnVsbHB0cjsKICAgICAgICAgfSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAppbmRleCA0ZDJiMjJhYTU0
ZjhiMDI1NDgwZjU5ZTU2MWEzY2NlNzE1NTAyMzEyLi4xYWZlM2U5Nzc5YmI4NDg4N2U5NDMwZGU0
MTcyNmM3NDM4NTMyZmRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9VbmlxdWVSZWYuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1
ZVJlZi5jcHAKQEAgLTMwLDggKzMwLDExIEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
ICAgICAKLWNsYXNzIEEgeyB9OworY2xhc3MgQSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Cit9OwogY2xhc3MgQiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgQihpbnQgYSwgaW50IGIsIGludCBjKQogICAgICAgICA6IGEoYSkKQEAgLTQzLDYgKzQ2
LDcgQEAgY2xhc3MgQiB7CiAgICAgaW50IGM7CiB9OwogY2xhc3MgQyB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQyhVbmlxdWVSZWY8QT4mJiBhKQogICAgICAg
ICA6IGEoV1RGTW92ZShhKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1ZhcmlhbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5j
cHAKaW5kZXggMGVmMWYxZGE0NGJhYzUxNTRmZmZkMzMyMTM5NWU5ZjFlMmQyYTdjMi4uNTFlY2Ew
NzY4ZDJjY2UxYzlhMzI5NTU1MmQzNTAwOWZmNGZkNTZiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBURVNUKFdURl9WYXJp
YW50LCBDb25zdHJ1Y3RvckRlc3RydWN0b3IpCiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcjo6VGVzdGluZ1Njb3BlIHNjb3BlOwogCiAgICAgewotICAgICAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAg
ICAgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CiAgICAgICAgIFZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IHYgPSBXVEZNb3ZlKHVuaXF1ZVB0cik7CiAKICAgICAgICAg
RVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25D
b3VudCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCmluZGV4IDE1
MGI5Yjc2YzhhNTY1ZTM2NTU0ODM2ZTBiYmVjMDUwNWM3ODQ4ZjIuLjdlNjMwNjkzZWVjNjA0MWEz
NzUwNDRhZjk0OWQ4NzQ2YjY5NWNhNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1dlYWtQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1dlYWtQdHIuY3BwCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBJbnQgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8SW50PiB7CiB9OwogCiBjbGFzcyBCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PEJhc2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCYXNl
KCkgeyB9CiAKQEAgLTU3OCwxMCArNTc5LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNo
U2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwg
MHUpOwogICAgICAgICBFWFBFQ1RfVFJVRShpbml0aWFsQ2FwYWNpdHkgLyBtYXhMb2FkQ2FwKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluaXRpYWxDYXBhY2l0eSAvIG1heExv
YWRDYXA7ICsraSkgewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsK
ICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVj
dHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAgICAgICBvdGhlck9iamVjdHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKSk7CisgICAgICAgICAgICBvdGhlck9iamVjdHMu
YXBwZW5kKG1ha2VVbmlxdWU8QmFzZT4oKSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVj
a0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKHNfYmFzZVdlYWtS
ZWZlcmVuY2VzLCBvdGhlck9iamVjdHMuc2l6ZSgpKTsKQEAgLTYxNSw3ICs2MTYsNyBAQCBURVNU
KFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldEV4cGFuc2lvbikKICAgICAgICAgRVhQRUNUX0VRKHdl
YWtIYXNoU2V0LmNhcGFjaXR5KCksIDB1KTsKICAgICAgICAgdW5zaWduZWQgb2JqZWN0Q291bnQg
PSBpbml0aWFsQ2FwYWNpdHkgKiAyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
b2JqZWN0Q291bnQ7ICsraSkgewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFz
ZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAg
IG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNl
dC5jaGVja0NvbnNpc3RlbmN5KCk7CkBAIC02NjcsMTAgKzY2OCwxMCBAQCBURVNUKFdURl9XZWFr
UHRyLCBXZWFrSGFzaFNldENvbXB1dGVzRW1wdHkpCiAgICAgewogICAgICAgICBXZWFrSGFzaFNl
dDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNl
Pj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFzZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsK
ICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpmaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAg
ICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAg
ICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFr
SGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3Zl
KG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09
IGZpcnN0T2JqZWN0LmdldCgpKTsKQEAgLTczNCw4ICs3MzUsOCBAQCBURVNUKFdURl9XZWFrUHRy
LCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgV2Vh
a0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7Ci0gICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7Ci0gICAgICAgIGF1dG8gbGFzdE9iamVjdCA9IHN0ZDo6
bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlx
dWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigp
OwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgd2Vha0hh
c2hTZXQuYWRkKCpsYXN0T2JqZWN0KTsKICAgICAgICAgaWYgKHdlYWtIYXNoU2V0LmJlZ2luKCku
Z2V0KCkgIT0gZmlyc3RPYmplY3QuZ2V0KCkpCkBAIC03NTksMTAgKzc2MCwxMCBAQCBURVNUKFdU
Rl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogICAgIHsKICAgICAgICAgV2Vha0hh
c2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
QmFzZT4+IG9iamVjdHM7Ci0gICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJhc2U+KCk7CisgICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBtYWtlVW5pcXVl
PEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqbm9uRmlyc3RPYmplY3QpOwogICAg
ICAgICBkbyB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFz
ZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAg
ICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5h
cHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAgfSB3aGlsZSAod2Vha0hhc2hTZXQuYmVn
aW4oKS5nZXQoKSA9PSBub25GaXJzdE9iamVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCmluZGV4IDJhYWI2NWRkOGZk
N2VmMDcwNTFmYjZmNzU2NzU4Y2RlNzAyZTA3YTEuLjgxZDdiYTI5MWFlOWY0YWI3Y2YyZTVmOWFh
ZDYyYzk0MjQzNTM2NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9DQVJpbmdCdWZmZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZl
clRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkK
ICAgICB7CiAgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICAgICAgbV9y
aW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1f
cmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPENBUmluZ0J1ZmZl
cj4oKTsKICAgICB9CiAKICAgICAvLyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oZG91YmxlIHNh
bXBsZVJhdGUsIFVJbnQzMiBudW1DaGFubmVscywgUENNRm9ybWF0IGZvcm1hdCwgYm9vbCBpc0lu
dGVybGVhdmVkLCBzaXplX3QgY2FwYWNpdHkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNzc4ZTYxNTVmMDZj
YzEyODM5Nzk3NWYwNDU4NzEyYTJjNzEwNDBmYS4uZGNhNDYzNjAyZTk2ZDYwYTA0NTEzODEyMWNi
YmRjZWZiZWU5ZTVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CiBzdGF0aWMgdW5zaWduZWQgZGVsZXRpb25Db3VudDsKIAogY2xhc3Mg
Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNz
aW9uTm9kZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlKCkKICAgICB7CkBAIC01Miw3ICs1Myw3
IEBAIGNsYXNzIENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZSA6IHB1YmxpYyBXZWJDb3JlOjpD
YWxjRXhwcmVzc2lvbk5vZGUgewogCiBzdGF0aWMgUmVmPFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFs
dWU+IGNyZWF0ZVRlc3RWYWx1ZSgpCiB7Ci0gICAgYXV0byBub2RlID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGU+KCk7CisgICAgYXV0byBub2RlID0gbWFrZVVu
aXF1ZTxDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGU+KCk7CiAgICAgcmV0dXJuIFdlYkNvcmU6
OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG5vZGUpLCBXZWJDb3JlOjpWYWx1ZVJh
bmdlQWxsKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcAppbmRleCBmNThkYThhNDIwNzNlYzk5YmJlZTM0
YTg1YmVjMzRjMDg1YzUyYTY0Li4wYzFhMDY5ZjEzYzM5YzQwOWU1ZDVlMWIwM2E3ZTkyYmY5YjM2
NmMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hp
ZE1lc3NhZ2VUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Rmlkb0hpZE1lc3NhZ2VUZXN0LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFRFU1QoRmlkb0hpZE1l
c3NhZ2VUZXN0LCBUZXN0UGFja2V0U2l6ZSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweDA1
MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogCi0gICAgYXV0byBpbml0UGFja2V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkp
OworICAgIGF1dG8gaW5pdFBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNo
YW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBWZWN0b3I8dWludDhfdD4oZGF0
YSksIGRhdGEuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoNjR1LCBpbml0UGFja2V0LT5nZXRTZXJp
YWxpemVkRGF0YSgpLnNpemUoKSk7CiAKLSAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IHN0
ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBX
VEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IG1ha2VVbmlxdWU8
Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsK
ICAgICBFWFBFQ1RfRVEoNjR1LCBjb250aW51YXRpb25QYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRh
KCkuc2l6ZSgpKTsKIH0KIApAQCAtNzAsNyArNzAsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVz
dCwgVGVzdFBhY2tldERhdGEpCiAgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHhGNTA2MDcwODsK
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2aWNlQ29t
bWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7Ci0gICAgYXV0byBpbml0UGFj
a2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQs
IFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5pdFBhY2tl
dCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBWZWN0b3I8
dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKICAgICBzaXplX3QgaW5kZXggPSAwOwogCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWQgPSBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVk
RGF0YSgpOwpAQCAtOTQsNyArOTQsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBh
Y2tldENvbnN0cnVjdG9ycykKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKICAg
ICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7
CiAgICAgc2l6ZV90IGxlbmd0aCA9IGRhdGEuc2l6ZSgpOwotICAgIGF1dG8gb3JpZ1BhY2tldCA9
IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZN
b3ZlKGRhdGEpLCBsZW5ndGgpOworICAgIGF1dG8gb3JpZ1BhY2tldCA9IG1ha2VVbmlxdWU8Rmlk
b0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5ndGgpOwog
CiAgICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG9yaWdQYWNr
ZXQtPnBheWxvYWRMZW5ndGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9yaWdEYXRhID0gb3Jp
Z1BhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDFlZDEzMjhmODEzMDllMTJlMTM3
MWNiM2FkZmU2YjBhOTc4M2VlYjYuLjIyODM4M2EwZjMwYTliMTM5ZjZhYWY0M2Y5NWNlZGQ4MDkx
NjZlNmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxl
TW9uaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERl
dGVjdENoYW5nZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRl
c3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxl
TW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VV
bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBb
XSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNl
IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMTkwLDcgKzE5
MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdlcykKIAog
ICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIp
OwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVt
cEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0
b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6
OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpG
aWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMjUwLDcgKzI1MCw3IEBAIFRFU1RfRihG
aWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBX
b3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVl
LmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAg
YXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRl
c3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmlj
YXRpb246CkBAIC0yODksNyArMjg5LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0
Q2hhbmdlQW5kVGhlbkRlbGV0ZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpj
cmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCks
IFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRv
ciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29w
eVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAg
ICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoK
QEAgLTM0Niw3ICszNDYsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVC
dXROb3RTdWJzZXF1ZW50Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6
OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYo
KSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25p
dG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5j
b3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAg
ICAgICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9u
OgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29v
a2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVz
LmNwcAppbmRleCA5MmQ4YTE5MmNhN2IyYTEwODE1NjU5OTdiMGVhNWIxZjlhZWE4ZjY1Li4yMTll
OTY2ZGJlYmFhODRkMzYwMjcyMmU5NTllMzJmNjRmYjRkYjJlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcApAQCAtNDQsNyArNDQs
NyBAQCBjbGFzcyBDdXJsQ29va2llczogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHsKICAg
ICAgICAgbV9jb29raWVEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkoKTsKIAotICAgICAgICBtX2Nvb2tpZUphciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZTo6Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nv
b2tpZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKKyAgICAgICAgbV9jb29raWVKYXIgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OkNvb2tpZUphckRCPihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9jb29raWVEaXJlY3RvcnksICJjb29raWVkYi5zcWwiKSk7CiAgICAgICAg
IG1fY29va2llSmFyLT5vcGVuKCk7CiAgICAgICAgIG1fY29va2llSmFyLT5zZXRBY2NlcHRQb2xp
Y3koQ29va2llQWNjZXB0UG9saWN5OjpBbHdheXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRl
UGFnZS5jcHAKaW5kZXggNWMwYWUzMzEzMjhiMzZiMGJhNzBhMThkOTkzNjY5NDEyYWNhMjlhOS4u
YjNiM2JjM2NmNDlkNzg1NDMwNTg0OWRkYTEyMTJmMTkzMmEwZDIwZiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGlu
Q3JlYXRlUGFnZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVO
ZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMK
IHsKICAgICBFWFBFQ1RfVFJVRShvcGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3Bl
bmVkV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAg
ICBvcGVuZWRXZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAg
ICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBz
aXplb2YodWlDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L01vZGFsQWxlcnRzU1BJLmNwcAppbmRleCBhNGZiYTEyN2M2ZTRkMDNlNjNkOWE4MTcyYTM5
YjNjYjhiMTQ3MmM3Li43YmMzNTI0ZjJiZGI5ZGJkN2E0MzVhM2NjNmFkMzgzMmU5NDRlZGQ1IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQ
SS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNT
UEkuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdl
KFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsKICAg
ICBFWFBFQ1RfVFJVRShvcGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVkV2Vi
VmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBvcGVu
ZWRXZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQ
YWdlVUlDbGllbnRWNSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2Yo
dWlDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCmluZGV4IDBm
N2ZkNDBhNjNlNWVjZjc4Yzk2OGRmODAzOGQxOTIyMWVkYmY3ZDUuLmNkMTlkN2NkZTU4ODk2MjVm
MTIyMTJmYzc1M2NmZDU1ZTI3OGQ5MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0
aW5nLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdHJ1Y3QgV2ViS2l0MlRleHRGaWVsZEJlZ2luQW5k
RWRpdEVkaXRpbmdUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4
dEZvckluamVjdGVkQnVuZGxlVGVzdCgiVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nRXZl
bnRzVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQo
KSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1X
ZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxh
dGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKICAgICAgICAgc2V0UGFnZUxvYWRlckNsaWVu
dCh3ZWJWaWV3LT5wYWdlKCksIHRoaXMpOwogCiAgICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNz
YWdlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNw
cAppbmRleCBjN2IwMjUxYmZjZjIxYWE0YWJkMTE0Yzg1NTA3OTI0MWQ2NjE3NGU5Li45ZGMzYTZk
YTk5NTA5YzI3MTEyMWQ0YzNhNDUzMDg0ZmVlOTg5YmQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIGNs
YXNzIFdlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKICAgICAgICAgY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvcklu
amVjdGVkQnVuZGxlVGVzdCgiVXNlck1lc3NhZ2VUZXN0IikpOwogICAgICAgICBzZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAg
ICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwog
ICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAg
ICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvV2lsbExvYWQuY3BwCmluZGV4IGVkOWYwZmZjNzAyNWFiMTJjYjUzOTY3ZjcyMDVm
Zjk2Yzg5YmU2OTkuLjUyZjE4ZGNlYjQyZDUxYWMwODM5NWI2MjAwMWQ0YTk1NDBmNzQ1MmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKQEAgLTcy
LDcgKzcyLDcgQEAgY2xhc3MgV2ViS2l0MldpbGxMb2FkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6
OlRlc3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9y
SW5qZWN0ZWRCdW5kbGVUZXN0KCJXaWxsTG9hZFRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVk
QnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAg
IHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAK
ICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJ
bkJ1bmRsZV9CdW5kbGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMv
Rm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KaW5kZXggYWViYTFjMzQ4ZmJj
NjZhMTcwZTUzOWUwYTcyODZhZWU5MTUzZTYwNC4uMjkxYTQ3OGEyNzg0MjQyZGFkNDVhM2E4ZjE3
MzkwNWQ3ZDNiMmYyMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVu
ZGxlX0J1bmRsZS5tbQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gcmVz
dWx0U3RyaW5nID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShzY3JpcHRDb250ZXh0LCByZXN1
bHQsIG51bGxwdHIpKTsKIAogICAgICAgICBhdXRvIGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1h
eGltdW1VVEY4Q1N0cmluZ1NpemUocmVzdWx0U3RyaW5nLmdldCgpKTsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZm
ZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhyZXN1bHRTdHJpbmcuZ2V0
KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAKICAgICAgICAgV0tCdW5kbGVQYWdlU2V0
VXNlRGFya0FwcGVhcmFuY2UobV9wYWdlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKaW5k
ZXggZDZjYzJmYjI0N2U1NjIwNjY5Nzc2MTBiMjU2NzliN2VkMWRjYzhiYS4uN2M4YzhiNTIxNTRh
YzRlYjA5OGU2OTUxNzkwNjlhMDVlYmRjNjZhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKQEAg
LTI1Niw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uRW1w
dHlSZWFsbShBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogfQogCiBjbGFzcyBUdW5u
ZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFR1bm5lbChT
b3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICA6IG1fc2Vy
dmVyKHNlcnZlcikKQEAgLTI5OSw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFj
ayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgog
ewogICAgIGlmIChtZXNzYWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfQ09OTkVDVCkgewogICAg
ICAgICBnX2Fzc2VydF9jbXB1aW50KHNvdXBfc2VydmVyX2dldF9wb3J0KHNlcnZlciksID09LCBn
UHJveHlTZXJ2ZXJQb3J0KTsKLSAgICAgICAgYXV0byB0dW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVl
PFR1bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKKyAgICAgICAgYXV0byB0dW5uZWwgPSBtYWtlVW5p
cXVlPFR1bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKICAgICAgICAgYXV0byogdHVubmVsUHRyID0g
dHVubmVsLmdldCgpOwogICAgICAgICB0dW5uZWxQdHItPmNvbm5lY3QoW3R1bm5lbCA9IFdURk1v
dmUodHVubmVsKV0oY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICBpZiAo
ZXJyb3JNZXNzYWdlKSB7CkBAIC0zOTQsNyArMzk1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdBdXRoZW50aWNhdGlvblByb3h5KFByb3h5QXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29u
c3QKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRUUFMoUHJv
eHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgYXV0byBo
dHRwc1NlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVz
dFNlcnZlcjo6U2VydmVySFRUUFMpOworICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBtYWtlVW5pcXVl
PFdlYktpdFRlc3RTZXJ2ZXI+KFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFBTKTsKICAgICBo
dHRwc1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKIAogICAgIHRlc3QtPmxvYWRVUkkoaHR0
cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9wcm94eS9hdXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJv
Y2Vzc1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9j
ZXNzVGVzdC5oCmluZGV4IDdhNDRjYjA1Y2Q0YmMwMjdlMTJkMTEwM2ZhZjZhMDA3YWM2ZjQwZjMu
LmI2YjcyOGU0NWUwOWM1MWE2ZDZiYTk5YmY3MTdlMTk1ZTlhMGUwYzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCkBA
IC0zMCw2ICszMCw3IEBACiAjZW5kaWYKIAogY2xhc3MgV2ViUHJvY2Vzc1Rlc3QgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlByb2Nlc3NU
ZXN0KCkgeyB9CiAgICAgdmlydHVhbCBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdGVzdE5hbWUs
IFdlYktpdFdlYlBhZ2UqKSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCmluZGV4IDEyNTYyNDE5NmE3MWM2
ZDNhZDViY2RkMjlmMTQyYjg2YWJiOWZkMTEuLmU0MDAwNzYzM2YyMzYyNDA1MjlkZjU0YWU4NjMy
MDg3YmQzNjk1MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBjbGlja2VkQ2FsbGJhY2soV2ViS2l0RE9NRE9NV2luZG93KiwgV2ViS2l0RE9NRXZl
bnQqLCBXZWJLaXRET01ECiAKIGNsYXNzIFdlYktpdERPTURPTVdpbmRvd1Rlc3QgOiBwdWJsaWMg
V2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
UHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RE9N
RE9NV2luZG93VGVzdD4oKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vz
c1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVz
dD4oKTsgfQogCiBwcml2YXRlOgogICAgIGd1aW50NjQgd2ViUGFnZUZyb21BcmdzKEdWYXJpYW50
KiBhcmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0
aWxpdGllc0NvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxp
dGllc0NvY29hLm1tCmluZGV4IDhkMmVlOGFkMTZjYWQ2Nzk1NjhlZDliNmQ3NWNlY2Q4MjE1MGZl
ZGIuLjM0OTBlZjFjZWI2ZjE3ODA1MDJmMGNkYzkxOWM5NzFlMjkyYmU5MDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KQEAg
LTM4LDcgKzM4LDcgQEAgc3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJpbmcgKnN0cmluZykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFtzdHJp
bmcgbGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAg
IGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAg
IGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihi
dWZmZXJTaXplKTsKICAgICBOU1VJbnRlZ2VyIHN0cmluZ0xlbmd0aDsKICAgICBbc3RyaW5nIGdl
dEJ5dGVzOmJ1ZmZlci5nZXQoKSBtYXhMZW5ndGg6YnVmZmVyU2l6ZSB1c2VkTGVuZ3RoOiZzdHJp
bmdMZW5ndGggZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmcgb3B0aW9uczowIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgcmVtYWluaW5nUmFuZ2U6MF07CiAgICAgcmV0
dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCA1NDZjYTZlMjIyZDlmZWE4MWNl
N2JlNGUyYzJkMzk4NWM1YjQ0ZjBmLi4yNDc1NzI4OThiNmE4NzljN2EzNmI0ZmM2NWI5MTUzMzA0
NzBmZmQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBA
IC0yOTQsNyArMjk0LDcgQEAgc3RhdGljIHZvaWQgYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRp
bmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygpCiAgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBzd2l6emxlcjsKICAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0g
ICAgICAgIHN3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihO
U0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlmaWVy
c0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJZGVu
dGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CisgICAgICAgIHN3aXp6
bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcu
Y2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlciks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92
aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CiAgICAgfSk7CiB9CiAKQEAgLTM0Nyw3ICszNDcsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRp
b246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNzUyMDQ+IGlzIGZpeGVkLgotICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3Nd
LCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBw
cmVzc1VJQ2FsbG91dEJhcikpOworICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBtYWtl
VW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0
b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2Fs
bG91dEJhcikpOwogICAgIF9pbnB1dFNlc3Npb25DaGFuZ2VDb3VudCA9IDA7CiAgICAgYXBwbHlX
b3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJLaXRUZXN0U2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJLaXRUZXN0U2VydmVyLmgKaW5kZXggNjkwZjBhNzc1NmNmZTNhZmIwN2Q5MGJlZWZmMDk1
NzhiMmZjNTVkZS4uMjgxNDUyN2YxOWI5NTRmODJhZWI4N2JjMGU0YzhkYzBiOWE3ZjViNiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNl
cnZlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRl
c3RTZXJ2ZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogY2xhc3MgV2ViS2l0VGVzdFNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAKICAgICBlbnVtIFNlcnZlck9wdGlvbnMgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCmluZGV4IDg2MjYzNTQ0MzM1YTdmNWQ5NzFiNWRj
MGQyNTllNTVkYzBkNzNjNjYuLjRiZGU2YzUxMDBkMmJkNmZlNGJiOTBmYWNiZTI1ZDMzOWE1MDU0
YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KQEAgLTg0
LDcgKzg0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRm9udE9wdGlvbnM6KE5TRm9udE9w
dGlvbnMgKilmb250T3B0aW9ucwogCiAgICAgX3NoYWRvd09mZnNldCA9IENHU2l6ZVplcm87CiAg
ICAgX3NoYWRvd0JsdXJSYWRpdXMgPSAwOwotICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJp
bmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKKyAgICBfcmVw
bGFjZUZvbnRPcHRpb25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+
KE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0aW9ucyIpLCBAc2VsZWN0b3Ioc2hhcmVkRm9u
dE9wdGlvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc2hhcmVkRm9udE9wdGlvbnNGb3JUZXN0
aW5nKSk7CiAgICAgX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzID0gTk87CiAgICAgX2hhc011bHRp
cGxlRm9udHMgPSBOTzsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVu
dFNlbmRlclByb3h5LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHku
aAppbmRleCAxNTMyMjE4MjY5OWUwZWEzMDc1NGEwMjI2YzNhN2I2Mjk1OTc2ZDAwLi4xMTM5OWIz
OTBmZTkxNzBmNmM1MjUyNzVhYzIzNDU4MmRhZjc1MGY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0V2ZW50U2VuZGVyUHJveHkuaApAQCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgV1RSRXZlbnRR
dWV1ZUl0ZW07CiAjZW5kaWYKIAogY2xhc3MgRXZlbnRTZW5kZXJQcm94eSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXZlbnRTZW5kZXJQcm94
eShUZXN0Q29udHJvbGxlciopOwogICAgIH5FdmVudFNlbmRlclByb3h5KCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKaW5kZXggN2Q5NDVk
NjdlYzY3NTBiZTcwNjQzNWEyYTZiM2M3NGQxYWQxNzQzYy4uMWVkNGFkZjliMzkzOTNhMzMzYWEz
MjUxMDk3YjllM2FhNDJjYzM2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9H
ZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2Vv
bG9jYXRpb25Qcm92aWRlck1vY2suaApAQCAtMjcsMTAgKzI3LDEyIEBACiAjZGVmaW5lIEdlb2xv
Y2F0aW9uUHJvdmlkZXJNb2NrX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBH
ZW9sb2NhdGlvblByb3ZpZGVyTW9jayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgR2VvbG9jYXRpb25Qcm92aWRlck1vY2soV0tDb250ZXh0UmVmKTsKICAgICB+
R2VvbG9jYXRpb25Qcm92aWRlck1vY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3Bw
CmluZGV4IDFmOWQzZWZjOTY0ZmIxMzc3YmM2NjNjMDE2MGMzNGE4OGIyMzI4YTYuLmM5YTUyYzE1
Zjc3MDgzMDY4M2M4ZWZmNjg5NDI5YmQwYmMxZjU2NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmNwcApAQCAtNjEyLDYgKzYxMiw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxl
cjo6bW9uaXRvcldoZWVsRXZlbnRzKCkKIH0KIAogc3RydWN0IFNjcm9sbENvbXBsZXRpb25DYWxs
YmFja0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBKU0Nv
bnRleHRSZWYgbV9jb250ZXh0OwogICAgIEpTT2JqZWN0UmVmIG1fZnVuY3Rpb247CiAKQEAgLTY0
Nyw3ICs2NDgsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbAogICAgIAogICAgIEpTVmFsdWVQ
cm90ZWN0KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogCi0gICAgYXV0byBzY3Jv
bGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxDb21wbGV0
aW9uQ2FsbGJhY2tEYXRhPihjb250ZXh0LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsKKyAgICBh
dXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBtYWtlVW5pcXVlPFNjcm9sbENvbXBs
ZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogICAg
IGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0ciA9IHNjcm9sbENvbXBsZXRpb25D
YWxsYmFja0RhdGEucmVsZWFzZSgpOwogICAgIGJvb2wgY2FsbGJhY2tXaWxsQmVDYWxsZWQgPSBX
S0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhwYWdl
LCBleGVjdXRlQ2FsbGJhY2ssIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGFQdHIpOwogICAg
IGlmICghY2FsbGJhY2tXaWxsQmVDYWxsZWQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNzExNmNj
OTgxNTY2OWQ5NDk0ZGJmOGRlNDhiYWVlY2Q2Mzc0YzM3Ni4uODNiMmIzMGIxMzMyZWM3N2JmZWZj
YzI5ZmRkMWEyZTQ4M2NiNWYyMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tU
eXBlUmVmIGluaXRpYWxpemF0aW9uVXNlcgogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRl
UGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKIHsKICAgICBib29sIGlzTWFpblBhZ2UgPSBtX3Bh
Z2VzLmlzRW1wdHkoKTsKLSAgICBtX3BhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluamVj
dGVkQnVuZGxlUGFnZT4ocGFnZSkpOworICAgIG1fcGFnZXMuYXBwZW5kKG1ha2VVbmlxdWU8SW5q
ZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7CiAKICAgICBzZXRVcEluamVjdGVkQnVuZGxlQ2xpZW50
cyhwYWdlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKaW5kZXggNTlkM2UxYjBkMDJlMjJjNTJmYTc2
NTQzMzI5YzIzZjZiNjJhMzg5YS4uYjMyM2MyNTA0NGY1NTAzNjA3NmY0OGVkZGQ0N2JjZWFhM2Uy
MGYxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2Ug
V1RSIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVm
KTsKICAgICB+SW5qZWN0ZWRCdW5kbGVQYWdlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1OWYyNWMxYmJhYzZl
ZDg5ZTk0Y2ZhODhhOWFmZmMwM2ZiNzI0YTE4Li4zYjBlZDZhYWNhNzU5OTU1ZWQxNWNlOGIwYzEw
Y2YzNzJjOTkxZDMxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIzNzQsNyArMjM3NCw3IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMoSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAg
IGF1dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVl
LCBudWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0
TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmls
ZUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAg
ICAgIGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNo
YXJbXT4oZmlsZUJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZp
bGUuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCksIGZpbGVCdWZmZXJTaXplKTsKIAogICAgICAgICBX
S0FycmF5QXBwZW5kSXRlbShmaWxlVVJMcy5nZXQoKSwgYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhC
YXNlVVJMKG1fdGVzdFVSTC5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSkpLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggMGU1YzA3Y2E3Mjli
NmRmY2IzOGM4MDQyNmQzOTI0NGUzMmMwMDE3Yy4uMThlNTdkMmZjZjYyOTc2N2E3MzI5NzliYzJl
ZGM1N2FjZjEwOWNlMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAKQEAgLTczMCw3ICs3MzAsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0VG9KU09i
amVjdEFycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbQogICAgIEpT
Q29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1h
aW5GcmFtZSk7CiAKICAgICBzaXplX3QgZWxlbWVudENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOwot
ICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNWYWx1ZVJlZltdPihl
bGVtZW50Q291bnQpOworICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPEpTVmFsdWVSZWZbXT4oZWxlbWVudENvdW50KTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgaSsrKQogICAgICAgICB2YWx1ZUVsZW1lbnRz
W2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNoaWxkcmVuW2ldLT53cmFwcGVyQ2xhc3MoKSwg
Y2hpbGRyZW5baV0uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZp
ZXcuaAppbmRleCBmNzRjYzJkMzkzZDUzMDVmZDM2NjViYjBlMGEzNTUxODQ0NzMxMDlmLi5jYTRm
ZGJkNzIyMTVhZjQ4YmRhOTY3ZDViY2FiNDgxNTZiYWRjYzcxIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFkZWZpbmVkKEJVSUxESU5HX0dUS19fKQogI2luY2x1
ZGUgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KQEAgLTY0LDYgKzY1LDcgQEAgdHlwZWRlZiBjYWly
b19zdXJmYWNlX3QqIFBsYXRmb3JtSW1hZ2U7CiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgUGxh
dGZvcm1XZWJWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9ybVdlYlZpZXcoV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiosIGNvbnN0IFRlc3RPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdG
dW5jdGlvbnMuaAppbmRleCBkYWYxNGNhNzA1NDg2YmZjMjA2NDMxMjNkZTUwOTFiNzllNWQwMTMx
Li5iYmExN2MyZWZmYjA5NjY1ZWZjMjhlZWI2OWU3MjMyOWIxZDY5Yjc0IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKQEAgLTczLDcgKzczLDcgQEAgaW5saW5lIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0b0pTKGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiYgc3RyaW5nKQogaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykK
IHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5n
U2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0g
V0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7
CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7
CiB9CkBAIC04Niw3ICs4Niw3IEBAIGlubGluZSBzdGQ6OnN0cmluZyB0b1NURChjb25zdCBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4mIHN0cmluZykKIGlubGluZSBXVEY6OlN0cmluZyB0b1dURlN0
cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAg
ICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25TdHJpY3Qo
c3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBXVEY6OlN0cmlu
Zzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGgg
LSAxKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
MTY1NDYyOWNhYTZmNmQ4Yzg5NDU0ODM1MWMwYzhmYjBhMzMzMzcyYS4uZjk3ZjE1ZTYxMmMwYjFh
NDcwMzhkZGJkMzc4YjY2ZDBlN2FjNDI3NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpp
bml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHBhZ2VHcm91cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJXZWJLaXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAgIG1fcGFn
ZUdyb3VwLmFkb3B0KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdyb3VwSWRl
bnRpZmllci5nZXQoKSkpOwogCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBt
YWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogfQogCiBXS1JldGFpblB0cjxXS0Nv
bnRleHRDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVDb250ZXh0Q29u
ZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9uczo6Q29udGV4dE9wdGlvbnMmIG9wdGlvbnMpIGNv
bnN0CkBAIC01MjEsNyArNTIxLDcgQEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJl
Zj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY28KICAgICAgICAg
bV9jb250ZXh0ID0gcGxhdGZvcm1BZGp1c3RDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRl
V2l0aENvbmZpZ3VyYXRpb24oY29udGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpKS5nZXQoKSwgY29u
dGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpOwogICAgICAgICBtX2NvbnRleHRPcHRpb25zID0gb3B0
aW9ucy5jb250ZXh0T3B0aW9uczsKIAotICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkp
OworICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2xvY2F0aW9u
UHJvdmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgICAgIGlmIChjb25zdCBjaGFy
KiBkdW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKSkgewogICAgICAg
ICAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRl
clRyZWVUZW1wKTsKQEAgLTk1MSw3ICs5NTEsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQog
ICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGVuc3VyZSB0aGF0IHRoZXJl
IGlzIG9ubHkgb25lIHBhZ2Ugb3Blbi4KIAogICAgIC8vIFJlc2V0IHRoZSBFdmVudFNlbmRlciBm
b3IgZWFjaCB0ZXN0LgotICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8
RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CisgICAgbV9ldmVudFNlbmRlclByb3h5ID0gbWFrZVVu
aXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBJcyB0aGlzIG5l
ZWRlZD8gTm90aGluZyBpbiBUZXN0Q29udHJvbGxlciBjaGFuZ2VzIHByZWZlcmVuY2VzIGR1cmlu
ZyB0ZXN0cywgYW5kIGlmIHRoZXJlIGlzCiAgICAgLy8gc29tZSBvdGhlciBjb2RlIGRvaW5nIHRo
aXMsIGl0IHNob3VsZCBwcm9iYWJseSBiZSByZXNwb25zaWJsZSBmb3IgY2xlYW51cCB0b28uCkBA
IC0xMjM0LDExICsxMjM0LDExIEBAIHN0YXRpYyBXS1VSTFJlZiBjcmVhdGVUZXN0VVJMKGNvbnN0
IGNoYXIqIHBhdGhPclVSTCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGJ1ZmZlcjsK
ICAgICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsKLSAgICAgICAgYnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOworICAgICAgICBidWZmZXIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0aCAr
IGxlbmd0aCArIDEpOwogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsK
ICAgICAgICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSArIHByZWZpeExlbmd0aCwgcGF0aE9yVVJMKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
cHJlZml4TGVuZ3RoICsgUEFUSF9NQVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHBhdGhT
ZXBhcmF0b3IKKyAgICAgICAgYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZv
ciB0aGUgcGF0aFNlcGFyYXRvcgogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJl
Zml4KTsKICAgICAgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBQ
QVRIX01BWCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIGJv
b2wgVGVzdENvbnRyb2xsZXI6OnJ1blRlc3QoY29uc3QgY2hhciogaW5wdXRMaW5lKQogICAgIFRl
c3RPcHRpb25zIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QoY29tbWFuZCk7CiAKICAgICBX
S1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwgPSBhZG9wdFdLKGNyZWF0ZVRlc3RVUkwoY29tbWFu
ZC5wYXRoT3JVUkwuY19zdHIoKSkpOwotICAgIG1fY3VycmVudEludm9jYXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9j
dXJyZW50SW52b2NhdGlvbiA9IG1ha2VVbmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgp
LCBvcHRpb25zKTsKIAogICAgIGlmIChjb21tYW5kLnNob3VsZER1bXBQaXhlbHMgfHwgbV9zaG91
bGREdW1wUGl4ZWxzRm9yQWxsVGVzdHMpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPnNl
dElzUGl4ZWxUZXN0KGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwpAQCAtMjk2MCw3ICsyOTYw
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChjb25zdCBUZXN0
SW52b2NhdGlvbiYpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmll
dyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb25zKQogewotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtV2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9
IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0K
IAogUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBh
Z2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAxMDczYWIxNTFhMGUzNTQ5YTQxMmE1ZDI1
ZjU0ZjdiMWI0ZTlkY2I4Li4wOTEwOGIwZTUyMjQ0M2E2NzViNTExNGY0MjhjNzlhYTEwZDI4M2Zj
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTY2OSw3
ICsxNjY5LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KFdLU3RyaW5n
UmVmIHNjcmlwdCwgdW5zaWduZWQgc2NyaXB0Q2FsbGJhY2sKICAgICBtX3BlbmRpbmdVSVNjcmlw
dEludm9jYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQp
Ci0gICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxVSVNjcmlwdENv
bnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBtYWtlVW5pcXVlPFVJ
U2NyaXB0Q29udGV4dD4oKnRoaXMpOwogICAgIAogICAgIG1fVUlTY3JpcHRDb250ZXh0LT5ydW5V
SVNjcmlwdCh0b1dURlN0cmluZyhzY3JpcHQpLCBzY3JpcHRDYWxsYmFja0lEKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCA3ODgwZGQ4ZGY1NTJmYzlkODJi
OTRkMWQyZjJkZGZkNmRmODJlYzJiLi44NWIxYjAyMDZlYjg5MjI2ZTg2YzZiNDFhYjkzZTVkYjk1
ZWJmZDkyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC00MCw2
ICs0MCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgVGVzdEludm9jYXRpb24gZmluYWwg
OiBwdWJsaWMgVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRlc3RJbnZvY2F0aW9uKTsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBUZXN0SW52b2NhdGlvbihXS1VSTFJlZiwgY29uc3QgVGVzdE9wdGlv
bnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbQppbmRleCAwZmJmOGVhNTIzZDM0OGQyNTZlY2M1MjMwNDJkZWEwMmZlY2RkMWRj
Li4wZWJmN2JmZDAwMzlmNGVmODA5MzJjMWViNTE5MmZmNTRlZTNjNGEzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0x
NjgsNyArMTY4LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKICAgICAgICAgW2NvcGllZENv
bmZpZ3VyYXRpb24gX3NldEFwcGxpY2F0aW9uTWFuaWZlc3Q6W19XS0FwcGxpY2F0aW9uTWFuaWZl
c3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOnRleHQgbWFuaWZlc3RVUkw6bmlsIGRvY3Vt
ZW50VVJMOm5pbF1dOwogICAgIH0KIAotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtV2ViVmlldz4oY29waWVkQ29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7
CisgICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRD
b25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKICAgICBmaW5pc2hDcmVhdGluZ1BsYXRmb3Jt
V2ViVmlldyhtX21haW5XZWJWaWV3LmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChvcHRpb25z
LnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUpCkBAIC0yMjYsNyArMjI2LDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZShOU1N0cmluZyAqaWRl
bnRpZmllcikKIHsKICAgICBtX292ZXJyaWRkZW5DYWxlbmRhcklkZW50aWZpZXIgPSBpZGVudGlm
aWVyOwogICAgIGlmICghbV9jYWxlbmRhclN3aXp6bGVyKQotICAgICAgICBtX2NhbGVuZGFyU3dp
enpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0NhbGVuZGFy
IGNsYXNzXSwgQHNlbGVjdG9yKGN1cnJlbnRDYWxlbmRhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
Pihzd2l6emxlZENhbGVuZGFyKSk7CisgICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9IG1ha2VV
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3Io
Y3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIp
KTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRDb250ZW50RXh0ZW5zaW9ucygpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3Rr
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CmluZGV4IGRlNTc4ZjczZmMzNmVjZDE1ODljOTlmOGRiZjhmY2NjMzk4N2I0MmUuLmVmOWUzOGU3
MjNiYWE5NWRmZmU3MGVjNWE4NzVjZmVjODRlMzI4NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC0yNzEsNyArMjcxLDcg
QEAgaW50IGdldEdES0tleVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVk
IGxvY2F0aW9uLCBndWludCogbW9kaWZpZXIKICAgICAgICAgcmV0dXJuIEdES19LRVlfRjEyOwog
CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1Np
emUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihi
dWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhr
ZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1
ZmZlci5nZXQoKVswXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29u
dHJvbGxlcklPUy5tbQppbmRleCA2YTYxZGY4ZTM1ZDZmYTA4YzhiMTRjNTFhODIzYzYyZDA4MDVk
NGQyLi5mM2M0MTdjN2ZiN2NhYTRkZTQ3NzdjN2E0OTRmNTNhZjMyYTE4YmZkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAtMTUxLDgg
KzE1MSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0CiAKICAgICBtX3ByZXNlbnRQb3BvdmVy
U3dpenpsZXJzLmNsZWFyKCk7CiAgICAgaWYgKCFvcHRpb25zLnNob3VsZFByZXNlbnRQb3BvdmVy
cykgewotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwg
QHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3Zl
cikpKTsKLSAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFz
c10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJv
d0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJl
c2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVy
U3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZp
ZXdDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmlt
YXRlZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRW
aWV3Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKKyAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6
bGVycy5hcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVy
Q29udHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmll
dzpwZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwogICAgIH0KICAg
ICAKICAgICBCT09MIHNob3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRlciA9IE5POwpAQCAtMjY5LDkg
KzI2OSw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICAgICBhdXRvIGNvbnRyb2xsZXJDbGFz
cyA9IFVJS2V5Ym9hcmRJbnB1dE1vZGVDb250cm9sbGVyLmNsYXNzOwogICAgIG1faW5wdXRNb2Rl
U3dpenpsZXJzLnJlc2VydmVDYXBhY2l0eSgzKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51
bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihj
b250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOwotICAgIG1faW5wdXRNb2RlU3dp
enpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dp
enpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZl
cmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7
Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0
aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRN
b2RlcykpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVu
aXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3Rvcihj
dXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5w
dXRNb2RlKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtl
VW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9y
KGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dp
enpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVj
a2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNs
YXNzLCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihz
d2l6emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKICAgICBbVUlLZXlib2FyZEltcGwuc2hhcmVkSW5z
dGFuY2UgcHJlcGFyZUtleWJvYXJkSW5wdXRNb2RlRnJvbVByZWZlcmVuY2VzOm5pbF07CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHku
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCmluZGV4
IGQxY2ZjNmEzMzIxZTAyOWM4YmE4MTE1ZjRhNmQ5MjA3ZjhlNzE4NGYuLjg5Y2U0ZWYxMjZjMTVk
OTJkY2Y3NjY1MGNlNmVlZjViODkyMzE3MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgRXZlbnRT
ZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllCiAKICAgICBOU1ZpZXcgKnRhcmdldFZpZXcgPSBbbV90ZXN0Q29udHJvbGxl
ci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25J
bldpbmRvd11dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVz
c2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dp
enpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCBy
ZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsK
KyAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlx
dWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3Nl
ZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3Nl
ZE1vdXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07
CiAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRG93bjpldmVudF07CiAgICAgICAgIFtOU0FwcCBf
c2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBFdmVudFNlbmRl
clByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBt
b2RpZmllcnMKICAgICAgICAgdGFyZ2V0VmlldyA9IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJW
aWV3KCktPnBsYXRmb3JtVmlldygpOwogCiAgICAgQVNTRVJUKHRhcmdldFZpZXcpOwotICAgIGF1
dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENs
YXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3Vz
ZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3Vz
ZUJ1dHRvbnMpKTsKKyAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0g
bWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3Rv
cihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZl
bnRdOwogICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6ZXZlbnRdOwogICAgIFtOU0FwcCBfc2V0Q3Vy
cmVudEV2ZW50Om5pbF07CkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5
Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCiAgICAgLy8gQWx3YXlzIHRhcmdldCBk
cmFncyBhdCB0aGUgV0tXZWJWaWV3IHRvIGFsbG93IGZvciBkcmFnLXNjcm9sbGluZyBvdXRzaWRl
IHRoZSB2aWV3LgogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IGlzRHJhZyA/IG1fdGVzdENvbnRy
b2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIDogW21fdGVzdENvbnRyb2xsZXIt
Pm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6d2luZG93TG9jYXRpb25dOwog
ICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0
b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2
ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9j
YXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0
byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRo
b2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9u
cyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9u
cykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgICAgIGlm
IChpc0RyYWcpCiAgICAgICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZURyYWdnZWQ6ZXZlbnRdOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQ
RS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNw
cAppbmRleCA0NjliZmFmMGU4Y2YyOTA3MzBiYWJmYTA3ODM2ZDg3N2VjNzBlOGY1Li42OTZmNDU1
NzU4OTZmZTgyNjY0ODdkMDk4ZThmZThlZTYxZTU0ZDU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcApAQCAtMjc5LDcgKzI3OSw3
IEBAIHN0YXRpYyB1aW50MzJfdCB3cGVLZXlTeW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVm
LCB1bnNpZ25lZCBsb2NhdGlvbiwgdWludDMyCiAgICAgICAgIHJldHVybiBXUEVfS0VZX0YxMjsK
IAogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKGtleVJlZik7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
YnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmco
a2V5UmVmLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIGNoYXIgY2hhckNvZGUgPSBi
dWZmZXIuZ2V0KClbMF07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376192</attachid>
            <date>2019-08-13 12:12:00 -0700</date>
            <delta_ts>2019-08-14 15:37:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190813121159.patch</filename>
            <type>text/plain</type>
            <size>1766390</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MjNmYjJiYjBmYmUxYmZhNjU2Y2Y0OGQ2ZTQ0MDk4ZjAxYmUwNzg0Li5lZTAxYzgwMDFjYjJhYjgz
YzY2MjA3MWU1MTkyNWE2Y2YzZDZiZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFN0eWxlczogc2hvdyBAc3VwcG9ydHMgQ1NTIGdyb3VwaW5ncwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0MjFlN2Nl
YWQ2ODYzOTI2N2RkYjg0NTkxNGM5YWMyYzJjMjQ3Y2UzLi41ZWE5ODg3NjZiNGEyMWQ2MmQ0MDhl
MWUwMDBmNGU0MWY0YjZmMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTA4LTEzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VV
bmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiZW5jaG1hcmtzL0xvY2tGYWly
bmVzc1Rlc3QuY3BwOgorICAgICAgICAqIGJlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHA6Cisg
ICAgICAgICogd3RmL0NvbmN1cnJlbnRWZWN0b3IuaDoKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6
OnRhc2tSdW5Mb29wKToKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAqIHd0
Zi9GaWxlUHJpbnRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06Om9w
ZW4pOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbi5oOgorICAgICAgICAoV1RGOjpGdW5jdGlvbjxP
dXQpOgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKFdURjo6S2V5VHJhaXRz
Pjo6SGFzaFRhYmxlKToKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2Rp
Y01lbW9yeU1vbml0b3IpOgorICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZSk6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrKToKKyAgICAgICAgKiB3dGYvU3RyZWFtQnVmZmVyLmg6CisgICAgICAgIChXVEY6
OlN0cmVhbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3dGYvVW5pcXVlUmVmLmg6CisgICAg
ICAgIChXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKToKKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZVJlZik6CisgICAgICAgICogd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3Bw
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVD
bHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKToKKwogMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeCBm
b3IgV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRjODFkMGMyNGI0YTY2ZmU0MzU3NzQwMDA5OWQ5Zjkw
ZWVjZGMzZWMuLjQ2ZTg4MWQ2OTk1ODcxZmM2ZWUwNTAzODhjZTA5YzZmNjljMDk4ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxODI1IEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNo
IGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1h
bmlmZXN0UGFyc2VyOjpsb2dEZXZlbG9wZXJXYXJuaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVh
Y29uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dDYWNoZXM6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbml0
RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMpOgorICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lDRE06OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmtleVN5c3Rl
bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNsaWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OnNldENsaWVudCk6
IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETVByaXZh
dGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZU1lZGlhUGxheWVyLmg6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpmZXRj
aCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydCk6
CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yR2FtZXBhZDo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9n
ZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cHJvdmlkZUdlb2xvY2F0aW9uVG8pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vTmF2
aWdhdG9yR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yR2VvbG9j
YXRpb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4
ZWREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVkRGF0YWJh
c2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckds
b2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckds
b2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZl
cjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjplbnN1cmVRdW90YVVzZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJbmRleFZhbHVlU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpyZWNv
cmRWYWx1ZUNoYW5nZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OnNldERhdGFi
YXNlSW5mbyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SW5kZXg6OnB1dEluZGV4
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SW5kZXg6Om1heWJlT3Bl
bkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVj
dFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3Rv
cmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVj
dFN0b3JlOjptYXliZU9wZW5DdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbERhdGFi
YXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YmVnaW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVDdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNR
TGl0ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1
cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVu
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXF1ZXN0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0
YTo6SURCUmVxdWVzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdERhdGE6Omlz
b2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVl
c3REYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlc3VsdERhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlc3VsdERhdGE6OnB1dE9yQWRkU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXN1bHREYXRhOjpnZXRSZWNvcmRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
c3VsdERhdGE6OmdldEFsbFJlY29yZHNTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
c3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3Vs
dERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNh
Y3Rpb25JbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6dmVy
c2lvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OklEQlRy
YW5zYWN0aW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86Omlz
b2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5z
YWN0aW9uSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjpkZWNv
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFn
ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFDYXBhYmls
aXRpZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6bW9ja1BpY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
OjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6
YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldExpdmVT
ZWVrYWJsZVJhbmdlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1l
ZGlhRGV2aWNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYURldmljZXM6
OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlVXNlck1lZGlhVG8pOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNo
YW5uZWxFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENN
ZWRpYUVuZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVRyYW5zY2VpdmVyQmFja2VuZHMpOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6dHJhbnNjZWl2ZXJCYWNrZW5k
RnJvbVNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpj
cmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpZGVvUmVjZWl2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdWRpb1JlY2VpdmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRk
VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6
Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlU2VuZGVyQmFja2VuZCk6CisgICAgICAgICogTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZU5v
dGlmaWNhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9k
dWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL1dv
cmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJO
YXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL0RP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dT
cGVlY2hTeW50aGVzaXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmVuc3VyZVBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5
bmNBdWRpb0RlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6
OmRlY29kZUFzeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNr
OjphdWRpb0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29k
ZXI6OkRlY29kaW5nVGFzazo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpzdWNjZXNzQ2FsbGJhY2sp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5n
VGFzazo6ZXJyb3JDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1
ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjphdWRpb0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OkF1ZGlvQnVmZmVyU291cmNlTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmlxdWFkUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6
QmlxdWFkUHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lSZXNwb25zZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFu
bmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVs
U3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9k
ZTo6Q29udm9sdmVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2RlOjpzZXRC
dWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5UHJvY2Vz
c29yOjpjcmVhdGVLZXJuZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JO
b2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNz
Q29tcHJlc3Nvck5vZGU6OmluaXRpYWxpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2Fpbk5vZGU6OkdhaW5Ob2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGU6OnNldEZvcm1hdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpQYW5u
ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQZXJpb2RpY1dhdmU6OmNyZWF0ZUJhbmRMaW1pdGVkVGFibGVzKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6UmVhbHRpbWVBbmFseXNlcik6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldhdmVTaGFwZXJEU1BLZXJuZWw6OmxhenlJbml0aWFsaXplT3ZlcnNhbXBsaW5nKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldhdmVT
aGFwZXJQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZE1lc3NhZ2U6
OkZpZG9IaWRNZXNzYWdlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hp
ZFBhY2tldC5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkSW5pdFBhY2tldDo6Y3JlYXRlRnJv
bVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRDb250aW51YXRpb25QYWNr
ZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkFuZFZl
cmlmeVZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6
RGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkQ3JlYXRp
bmdEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERl
bGV0aW5nRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVt
ZW50Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yV2ViRHJpdmVyOjpmcm9tKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9y
R1BVOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVt
ZXJhdGlvbkRlZmluaXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5
UG9pbnRTY2FmZm9sZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1
dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmNyZWF0ZU5hbWVO
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6Zm9yd2FyZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQ
YXJzZXI6OnBhcnNlU2VtYW50aWMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUmVzb2x2aW5nVHlwZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmln
YXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20p
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZl
TWVzc2FnZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBncmFkZVVSTCk6CisgICAgICAgICogTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlVGV4dEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVSYXdGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1
ZXVlQmxvYkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NPdXRnb2luZ0ZyYW1lUXVldWUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxh
dGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0RGVmbGF0ZUZyYW1lcjo6aW5mbGF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERl
ZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJ
bmZsYXRlcjo6V2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5p
dGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJWUjo6ZnJvbSk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnN0YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11dGF0ZXMp
OgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQW5pbWF0aW9uOjp1cGRhdGVGaW5pc2hlZFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9ET01Qcm9taXNlUHJveHkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tU
b0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc0V2ZW50VGFyZ2V0Q2FzdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNv
ZGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAgKiBicmlk
Z2UvYy9jX2NsYXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6bWV0aG9k
TmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjpmaWVsZE5hbWVk
IGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5oOgorICAgICAgICAqIGJy
aWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xh
c3M6Om1ldGhvZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFz
czo6ZmllbGROYW1lZCBjb25zdCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09iamVjdCk6Cisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21iaW5lZFVSTEZpbHRlcnM6OkNvbWJp
bmVkVVJMRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29t
YmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaDoKKyAgICAgICAgKiBjcnlwdG8vU3VidGxlQ3J5
cHRvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZUNyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NUaHJlYWRDb3B5SW1wb3J0UGFyYW1zKToK
KyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpkZXRlcm1pbmVDYXRlZ29yeSk6CisgICAgICAgICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRGdWxs
RGVmYXVsdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6
bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2VzKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udEZhY2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VT
ZXQ6OmVuc3VyZUxvY2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZCk6CisgICAgICAgICog
Y3NzL0NTU0dyb3VwaW5nUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcm91cGluZ1J1
bGU6OmNzc1J1bGVzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzYXZlQ2Fj
aGVkSW1hZ2VGb3JTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NLZXlmcmFtZXNSdWxlOjpjc3NSdWxlcyk6CisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6
Y3NzUnVsZXMpOgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ1NTUGFpbnRXb3JrbGV0Ojpmcm9tKToKKyAgICAgICAgKiBjc3MvRE9N
Q1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DU1NS
ZWdpc3RlckN1c3RvbVByb3BlcnR5Ojpmcm9tKToKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxl
U2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1
bGVTZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJB
Z2VudE1lZGlhUXVlcnlTdHlsZUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50UnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
bWFrZVJ1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6cmVzZXRB
dXRob3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0
cyk6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRS
dWxlc0ZvclNsb3QpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBjc3MvUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3JhcEZvckRlcHJlY2F0ZWRDU1NPTSk6CisgICAg
ICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVGZWF0dXJl
U2V0Ojpjb2xsZWN0RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6
OmFkZCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVs
ZVNldDo6YWRkVG9SdWxlU2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEw
MFBlcmNlbnRNaW51c0xlbmd0aCk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNo
YWRvd1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bmhlcml0VGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdEJveFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVDb250ZW50KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUNT
U1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgICogY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2FzY2Fk
ZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2spOgorICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAg
ICAgICAgKGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIpOgorICAg
ICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eVZhbHVlU2V0dGVyKToKKyAgICAgICAgKiBj
c3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
SW1wbDo6Q1NTUGFyc2VySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpw
YXJzZVBhZ2VTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25z
dW1lTWVkaWFSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVT
dXBwb3J0c1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUtl
eWZyYW1lc1J1bGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1Nl
bGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVk
b0VsZW1lbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6
cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJT
ZWxlY3Rvcjo6YWRvcHRTZWxlY3RvclZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVCYXNpY1NoYXBl
UGF0aCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyk6CisgICAgICAg
ICogZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVCYWNrdXBRdWV1ZSk6CisgICAgICAg
ICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6
Oml0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFy
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKToK
KyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRvKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpidWlsZEFjY2Vzc0tleUNhY2hlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjppbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6Zm9ybUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0
ZVRleHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXNlckFnZW50U2hh
ZG93VHJlZVN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmF4T2Jq
ZWN0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFBhcnNpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFjY2Vzc1NWR0V4dGVuc2lvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnRleHRBdXRvU2l6aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmRpZExvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lzdGVy
Q1NTUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Y29udGVudENoYW5nZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpk
b21UaW1lckhvbGRpbmdUYW5rKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVQYXJzZXJZaWVsZFRva2VuKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZl
bnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6YWRkTWFya2VyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZW5hYmxlVGVtcG9y
YXJ5VGltZVVzZXJHZXN0dXJlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6ZW5xdWV1ZVRvVXBncmFkZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpj
bGFzc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGF0YXNldCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlUmVzaXplT2JzZXJ2ZXJEYXRhKToKKyAgICAg
ICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExp
c3RlbmVyTWFwOjphZGQpOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICog
ZG9tL0V2ZW50UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OmJ1aWxkUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OkV2ZW50UGF0aCk6CisgICAgICAgICog
ZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6
OmFkZE9ic2VydmVyKToKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBkb20v
TWljcm90YXNrcy5oOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKToKKyAg
ICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVO
b2RlV2lsbERldGFjaCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpl
bnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJN
dXRhdGlvbk9ic2VydmVyKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmVuc3VyZU5vZGVMaXN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlUmFyZURhdGE6OmVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKToKKyAgICAgICAg
KiBkb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0
b25Hcm91cHM6OmFkZEJ1dHRvbik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJl
cG9ydFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3cpOgorICAg
ICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAg
ICogZG9tL1Nsb3RBc3NpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25t
ZW50OjphZGRTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdu
bWVudDo6YXNzaWduVG9TbG90KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6YWRkRWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjph
ZGRFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRkSW1hZ2VN
YXApOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRh
VHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OkVk
aXRvcik6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZW5zdXJlUmVwbGFjZW1l
bnRGcmFnbWVudCk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZENyZWF0
ZU5vdGlmaWVyKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpIVE1M
Q29udmVydGVyKToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1dGVkU3R5bGVQ
cm9wZXJ0eUZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5oOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCk6CisgICAgICAgICog
ZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbE9uRmls
ZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OkFzeW5jRmlsZVN0
cmVhbSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGVSZWFkZXI6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUpOgor
ICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRQYWdlOjpDYWNoZWRQYWdlKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKToKKyAgICAgICAgKiBo
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
cmVxdWVzdEljb24pOgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRGb3JtQXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFuY2hvckVsZW1lbnQ6OnJlbExpc3QgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEFy
ZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6bWFwTW91
c2VFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIgY29uc3QpOgorICAg
ICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENv
bGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0Vs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2li
bGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6YWRkVG9Q
YXN0TmFtZXNNYXApOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3gpOgorICAgICAgICAqIGh0
bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjplbnN1cmVJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpyZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpz
aXplcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnJlbExpc3QpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcik6CisgICAgICAgICog
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZUFmdGVyU3R5bGVSZXNvbHV0aW9uKToKKyAgICAgICAg
KiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3Vt
bWFyeUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlB1YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVz
c2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFu
ZFN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnJlcXVl
c3RUb0hpZGVNZXNzYWdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0RHJhd2luZ0Nv
bnRleHQ6OkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQgY29uc3QpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRvQ29uc29sZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJm
YWNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bGVtZW50U3RhY2s6Omluc2VydEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
U3RhY2s6OnB1c2hDb21tb24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRh
Z1NjYW5uZXI6OmNyZWF0ZVByZWxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmRlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRtbC90cmFj
ay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdl
bmVyaWNUZXh0VHJhY2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJW
VFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNr
OjpwYXJzZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycyk6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTUVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6Omlu
c2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlbW92ZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUVkaXRvcjo6c2V0T3V0ZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6aW5z
ZXJ0QWRqYWNlbnRIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZVdo
b2xlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1
cHBvcnQ6OmNyZWF0ZURpZ2VzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpj
cmVhdGVMYXp5QWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmVuc3VyZUluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmVuc3VyZURPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVT
dGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50
cyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdG
cm9tSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpo
aWdobGlnaHRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5l
ckhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omhp
Z2hsaWdodEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRJ
bnNwZWN0ZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJ
bnZhbGlkYXRlU3R5bGVBdHRyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9y
UGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjppbnRlcm5hbFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
cldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29s
ZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29s
ZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJI
ZWFwQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViSGVhcEFnZW50OjpXZWJIZWFwQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFj
dGlvbkxvZyk6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGlu
Z1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgICogbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMgY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaDoKKyAgICAgICAg
KiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZTo6TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjph
cHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmUuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVUZXh0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVt
OjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVUZXh0SXRlbTo6c3BsaXQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6Qm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgICog
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZVRhYmxlU3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cyk6CisgICAg
ICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAqIGxvYWRl
ci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25X
aXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpp
bml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGV0YWNoQ2hpbGRyZW4pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxp
bmtQcmVsb2FkUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uRGlz
YWJsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3Jt
U3VibWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hl
ZHVsZVJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVIaXN0b3J5TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2No
ZWR1bGVyOjpzY2hlZHVsZVBhZ2VCbG9jayk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3MpOgorICAgICAg
ICAqIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQpOgorICAgICAgICAqIGxvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVy
Ojpwcm9jZXNzTmV3Q3VlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFp
blRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZENs
aWVudFRvU2V0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fkcyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjplbnN1cmVTZXNzaW9uUmVzb3VyY2VNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlDYWNoZTo6bHJ1TGlzdEZvcik6CisgICAgICAgICogbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVy
Lm1tOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6
cmVzb3VyY2VSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBjb25uZWN0
aW9uOmRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3TG9hZGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0
TWVudSk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKToKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OkV2ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjphZGRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXdM
YXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlRm9yUGFnaW5hdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW5p
dEdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFJlc291cmNlVXNhZ2VPdmVybGF5
VmlzaWJsZSk6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHBh
Z2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6Y2FwdGlvblBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlOjptYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
OjpjbGVhck1hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjptZWFzdXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjpjbGVhck1lYXN1cmVzKToKKyAgICAgICAg
KiBwYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6b3V0cHV0TGlua2VkRGVzdGlu
YXRpb25zKToKKyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnN0YXJ0VGltZXIpOgor
ICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9S
ZXNpemVPYnNlcnZlci5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZSk6CisgICAgICAgICogcGFnZS9TdXNwZW5kYWJs
ZVRpbWVyLmg6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0FuaW1hdGlvbkNvbnRyb2xsZXI6OkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVk
QWZmZWN0ZWRDb2xvcjo6UHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsbExheWVyc1Byb3BlcnR5V3JhcHBlcjo6RmlsbExheWVyc1Byb3Bl
cnR5V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBw
ZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCk6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZik6CisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c2V0Q1NQRGlyZWN0aXZlKToK
KyAgICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6
CisgICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OmFkZFNjaGVkdWxlUGFpcik6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25h
cE9mZnNldHNJbmZvLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxk
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjpjb21taXQpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9DUFVNb25pdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZU1vbml0b3IuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvMTAw
UGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kTWl4ZWRUeXBlcyk6
CisgICAgICAgICogcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsQW5pbWF0b3IgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbyk6Cisg
ICAgICAgICogcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERh
dGE6OlRocmVhZEdsb2JhbERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpBdWRpb0J1cyk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1czo6Y29weVdpdGhHYWluRnJvbSk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpudW1iZXJPZkNo
YW5uZWxzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFu
bmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFubmVsIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpsZW5ndGggY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnNhbXBsZVJhdGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnNldFNhbXBsZVJhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpBdWRpb0J1cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5u
ZWw6OkF1ZGlvQ2hhbm5lbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5u
ZWw6OnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Omxlbmd0
aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Om11dGFi
bGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6ZGF0YSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Onplcm8pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpjbGVhclNpbGVudEZsYWcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjppc1NpbGVudCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmg6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0ZJRk86OmZyYW1lc0luRmlmbyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0ZJRk86OnVwZGF0ZUluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBs
ZXI6OkF1ZGlvUmVzYW1wbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpj
b25maWd1cmVDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBs
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpyYXRlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Np
b246OmlzQWN0aXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9C
aXF1YWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Db25lLmg6CisgICAgICAgIChXZWJD
b3JlOjpDb25lRWZmZWN0OjpzZXRJbm5lckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbmVFZmZlY3Q6OmlubmVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJBbmdsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb25lRWZmZWN0OjpvdXRlckFuZ2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbmVFZmZlY3Q6OnNldE91dGVyR2Fpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb25lRWZmZWN0OjpvdXRlckdhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbm9y
bWFsRGlzYWJsZXI6OkRlbm9ybWFsRGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGVub3JtYWxEaXNhYmxlcjo6fkRlbm9ybWFsRGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Zmx1c2hEZW5vcm1hbEZsb2F0VG9aZXJvKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OmdldENTUik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpzZXRDU1IpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5j
ZUVmZmVjdDo6bW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZl
Y3Q6OnNldE1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0
OjpzZXRSZWZEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVm
ZmVjdDo6c2V0TWF4RGlzdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFu
Y2VFZmZlY3Q6OnNldFJvbGxvZmZGYWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzdGFuY2VFZmZlY3Q6OnJlZkRpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRpc3RhbmNlRWZmZWN0OjptYXhEaXN0YW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6cm9sbG9mZkZhY3RvciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFt
aWNzQ29tcHJlc3Nvcjo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEeW5hbWljc0NvbXByZXNzb3I6Om55cXVpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjp0YWlsVGltZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OmxhdGVuY3lUaW1lIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpz
ZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbDo6bGF0ZW5jeUZyYW1lcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
eW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjptZXRlcmluZ0dhaW4gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZGVENvbnZvbHZlcjo6ZmZ0U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6
OmNyZWF0ZUludGVycG9sYXRlZEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6bnVtYmVyT2ZBemlt
dXRocyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OnNhbXBsZVJh
dGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFz
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhS
VEZFbGV2YXRpb246OkhSVEZFbGV2YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6a2VybmVsTGlzdEwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6a2VybmVsTGlzdFIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SFJURkVsZXZhdGlvbjo6ZWxldmF0aW9uQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6bnVtYmVyT2ZBemltdXRocyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6SFJU
Rktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9IUlRGUGFubmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRGUGFubmVyOjpmZnRTaXplIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OnNhbXBsZVJhdGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJl
c2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11
bHRpQ2hhbm5lbFJlc2FtcGxlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhbm5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9SZXZlcmIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYjo6aW1wdWxzZVJl
c3BvbnNlTGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9S
ZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkFjY3Vt
dWxhdGlvbkJ1ZmZlcjo6cmVhZEluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcjo6cmVhZFRpbWVGcmFtZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
dmVyYkNvbnZvbHZlcjo6aW1wdWxzZVJlc3BvbnNlTGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6aW5wdXRCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp1c2VCYWNrZ3JvdW5kVGhyZWFkcyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2U6OlJldmVy
YkNvbnZvbHZlclN0YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2U6OmlucHV0
UmVhZEluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZl
cmJJbnB1dEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiSW5wdXRCdWZmZXI6Ondy
aXRlSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1NpbmNS
ZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oOgorICAgICAgICAoV2ViQ29yZTo6WmVyb1Bv
bGU6Olplcm9Qb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpyZXNl
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6c2V0WmVybyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6c2V0UG9sZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6emVybyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpaZXJvUG9sZTo6cG9sZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b1Nlc3Npb25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vz
c2lvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RGVjb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rlcik6
CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9NYWlu
VGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXR1cFBvd2VyT2Jz
ZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9s
bGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xs
U25hcFBvaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9yeUNsZWFyS2V5Ojpj
cmVhdGVDRE0pOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWRQcm92aWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFk
UHJvdmlkZXI6OmRldmljZUFkZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVk
RGVjb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJp
Yzo6RGljdGlvbmFyeTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVj
b2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29k
ZXJHZW5lcmljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNv
ZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcik6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dExh
eW91dDo6VGV4dExheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2lu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6ZW5zdXJlRGVyaXZlZEZvbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojpib3VuZHNGb3JH
bHlwaCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGVGb250czo6R2x5cGhQYWdlQ2FjaGVFbnRyeTo6c2V0R2x5cGhEYXRhRm9yQ2hhcmFj
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDxUPjo6bG9jYXRlUGFnZVNsb3dDYXNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2Vla2FibGUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2RlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9SZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpzZXRTaGFw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZWdpb246OmNvcHlTaGFwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Q
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1QaWNrZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5n
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bm90
aWZpY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bGVnaWJs
ZU91dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnJlc291cmNl
TG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qzo6c2V0UGxheWVySXRlbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFz
c2V0VHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01ldGFkYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVJv
dGF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5l
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUlt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rv
bk9wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9yU2Nyb2xsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp0aWxlZFNjcm9sbGluZ0luZGljYXRvckxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21t
b25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRTaGFw
ZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJU
aWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGlsZWRCYWNraW5nTGF5ZXIgY3Jl
YXRlVGlsZUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJXaW46OlBs
YXRmb3JtQ0FMYXllcldpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dl
YlRpbGVkQmFja2luZ0xheWVyV2luLmNwcDoKKyAgICAgICAgKFdlYlRpbGVkQmFja2luZ0xheWVy
V2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3Jl
OjptX3ByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVm
ZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250
UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHQzRENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UubW06CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmVuc3VyZUdyYXBoaWNz
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVw
cmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNz
aW9uVlQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0
aW9uUHJvcGVydGllczo6aXNJZGVudGl0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjp0cmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRpb25Qcm9wZXJ0
aWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNz
aW9uVlQ6OnNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6cm90YXRlZFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2
L1RleHR1cmVDYWNoZUNWLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ1Y6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVy
Q1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6
OnJlcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjps
b2FkRXh0ZXJuYWxEb2N1bWVudElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjplbnN1cmVBdWRpb1NvdXJjZVBy
b3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5j
aEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6YnVmZmVyZWQgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpw
dXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklTT1NjaGVtZUluZm9ybWF0aW9uQm94OjpwYXJzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJU09TdHJpbmdCb3g6OmNvbnRlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmg6CisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6
OmJveFR5cGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6
cHJlc2VudGF0aW9uVGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09X
ZWJWVFRDdWU6OmR1cmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklT
T1dlYlZUVEN1ZTo6c291cmNlSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjppZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09X
ZWJWVFRDdWU6Om9yaWdpbmFsU3RhcnRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OklTT1dlYlZUVEN1ZTo6c2V0dGluZ3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpjdWVUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcDoKKyAg
ICAgICAgKE5pY29zaWE6OlNjZW5lSW50ZWdyYXRpb246OmNyZWF0ZVVwZGF0ZVNjb3BlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OmNyZWF0ZUNvbW1hbmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29u
dGV4dENhaXJvLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpG
b3JQYWludGluZzo6Rm9yUGFpbnRpbmcpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250
ZXh0Q2Fpcm86OkZvclJlY29yZGluZzo6Rm9yUmVjb3JkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBl
ckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlcklt
cGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAg
ICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVG
YWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6
Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwOgor
ICAgICAgICAoTmljb3NpYTo6R0MzRExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5n
VGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4
dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1
cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBo
aWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRF
eHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJHQzNEUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyR0w6OlRleHR1cmVNYXBwZXJHTCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6
OmNsb25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojp1cGRhdGVDb250ZW50QnVmZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0
YXRlOjphcHBseVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6
c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9y
bVN0YXRlOjpzZXRTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNj
cmVlbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlbkNvbnRyb2xs
ZXI6OkZ1bGxTY3JlZW5Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5D
b250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3Jl
OjptX3ByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVX
aW5kb3dzQml0bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZm
ZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6YnVmZmVyZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21W
aWRlb1ByZXNlbnRlcjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXS0NB
SW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9i
YWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJh
Z0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xpcGJvYXJkQ29udGVu
dHMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
U2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJNUEltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVscGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoR0lGRnJhbWVDb250ZXh0Ojpk
ZWNvZGUpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OmFkZEZyYW1lSWZOZWNlc3NhcnkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNh
Y2hlOjpMZWdhY3lUaWxlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hl
Ojpjb21taXRTY2FsZUNoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChXZWJDb3Jl
OjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9TY3Jv
bGxBbmltYXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9S
ZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21t
YW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptX2Nh
cHR1cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6
R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6bV9jYXB0dXJl
cik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZp
ZGVvRW5jb2RlckZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9F
bmNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5OjpCYXNpY1BhY2tl
dFNvY2tldEZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVBlZXJDb25uZWN0
aW9uRmFjdG9yeUFuZFRocmVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlk
ZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyOjpjZXJ0aWZpY2F0ZUdlbmVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRl
RW5jb2RlckZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpy
ZWNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVik6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVm
ZmVyZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpjcmVhdGVEZWNvZGVUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsQ2FjaGVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OmRpZFNlbmRCb2R5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90
ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9y
ZXN0YXJ0XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENh
Y2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6
OkN1cmxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OndpbGxTZXR1cFNz
bEN0eCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVh
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OmNhbGxPbldvcmtlclRocmVhZCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOl0pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3Rv
cmFnZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bkludGVybmFsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L0xvY2FsZU5vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb2RlY0lDVTo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjTGF0aW4xLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0xhdGlu
MTo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVw
bGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJl
Z2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjE2OjpyZWdpc3RlckNvZGVjcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDb2RlY1VURjg6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2Rl
Y1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9t
YWMvTG9jYWxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVj
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dpbik6CisgICAgICAgICog
cGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmdldFZSRGlzcGxheXMpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudURCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjpj
cmVhdGVQcmVwYXJlZFN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dDRGF0YU9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXQ0RhdGFPYmplY3Q6OlNldERhdGEpOgorICAg
ICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL0NvbXBsZXhM
aW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJ1bik6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9vdElubGluZUJveCk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGbG9hdGluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5n
T2JqZWN0Ojpjb3B5VG9OZXdDb250YWluZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRpbmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZsb2F0aW5nT2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZsb2F0c1RyZWUpOgorICAgICAgICAqIHJl
bmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJdGVyYXRvcjo6bmV4dEVt
cHR5R3JpZEFyZWEpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNl
bGluZUFsaWdubWVudENvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtOjpjb21wdXRlRmxleEZhY3RvclVuaXRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXApOgorICAgICAgICAqIHJlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRl
c3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bXV0YWJsZUxpc3RCYXNlZFRl
c3RSZXN1bHQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ck92ZXJsYXBNYXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omluc2VydEludG9UcmFja2Vk
UmVuZGVyZXJNYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uZWREZXNjZW5kYW50c01h
cDo6YWRkRGVzY2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YmVnaW5V
cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjplbnN1cmVCbG9ja1JhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5l
Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5l
R3JpZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZUZsb2F0
aW5nT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxp
bmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Om1hdGVyaWFsaXpl
UmFyZUJsb2NrRmxvd0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y3JlYXRlSW5saW5lQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNvdW50ZXJOb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRDb250YWluZXI6OnNldFJlbmRlckJveEZyYWdt
ZW50SW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb250YWluaW5nRnJhZ21l
bnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRy
YWNrc0ZvckF1dG9SZXBlYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVG
bG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnVwZGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2Fs
Y3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
QW5jZXN0b3JDbGlwcGluZ1N0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNr
aW5nOjpzdGFydFRyYW5zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmll
d3BvcnRDb25zdHJhaW5lZExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpjcmVhdGVJbmxpbmVCb3gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3cpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0OjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpzdHlsZURp
ZENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmll
dzo6cmVwYWludFZpZXdSZWN0YW5nbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Vmlldzo6Y29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjppbWFnZVF1
YWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlcGFpbnRS
ZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5l
Qm94OjpwbGFjZUVsbGlwc2lzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5o
OgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6YXBwZW5kRmxvYXQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29sbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmNvbGxlY3RC
b3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBs
eSk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGF5b3V0OjpydW5SZXNvbHZlciBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmdlbmVyYXRlTGluZUJveFRyZWUpOgorICAgICAgICAqIHJl
bmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1Np
emluZzo6YWRkVGV4dE5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVCcmVha2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRlc3Bh
Y2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVy
dmFscyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVJbnNldFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUNpcmNsZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVsbGlwc2VTaGFwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb2x5Z29uU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcGU6OmNyZWF0ZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0
ZXJTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlQm94U2hhcGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1No
YXBlUGF0aDo6YmxlbmQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db250ZW50
RGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsbExheWVyOjpGaWxsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
bExheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xvbmVQdHIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjplbnN1cmVUcmFuc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlRGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1NW
R0RhdGE6OlN0eWxlU2hhZG93U1ZHRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1No
YWRvd0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJp
dGVkRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6UmVuZGVy
U1ZHSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3gpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVz
b3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVz
b3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVy
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6dXBkYXRlU2hhcGVGcm9tRWxlbWVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNl
czo6c2V0RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFya2Vy
U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJNaWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJFbmQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVzb3VyY2VzOjpzZXRGaWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0
U3Ryb2tlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0NhY2hlOjphZGRSZXNvdXJjZXNGcm9tUmVu
ZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRyaWNzQnVpbGRlcjo6aW5pdGlhbGl6ZU1l
YXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVCdWls
ZGVyOjpSZW5kZXJUcmVlQnVpbGRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVy
OjpSZW5kZXJUcmVlVXBkYXRlcik6CisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5o
OgorICAgICAgICAqIHN0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkludmFsaWRhdG9yOjpJbnZhbGlkYXRvcik6CisgICAgICAgICogc3R5bGUvU3R5
bGVSZWxhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmNvbW1pdFJlbGF0aW9u
c1RvUmVuZGVyU3R5bGUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6U2NvcGU6OmFjdGl2ZVN0eWxlU2hlZXRzQ29udGFpbnMgY29uc3QpOgorICAgICAgICAq
IHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpU
cmVlUmVzb2x2ZXI6OnJlc29sdmUpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1
bWVudEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjphZGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6ZW5zdXJlU1ZHUmFyZURhdGEpOgorICAgICAg
ICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3Jh
cGhpY3NFbGVtZW50OjpzdXBwbGVtZW50YWxUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoQnl0ZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJ5dGVTdHJlYW06OmNv
cHkgY29uc3QpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnNjaGVkdWxlKToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0
ZWRQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9w
ZXJ0eTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3IuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVBhaXJBbmltYXRvci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHQXR0cmlidXRlQW5pbWF0b3IuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNv
cmF0ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVjb3JhdGVkRW51bWVy
YXRpb246OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJp
bWl0aXZlLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlB
bmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9y
RmFjdG9yeS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmlt
YXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlz
dEFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpmcm9tKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHViRnJv
bnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bHM6OkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuYWJsZU1vY2tT
cGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1t
eUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0UHJp
bnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbml0aWFsaXplTW9ja0NETSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKToKKyAgICAgICAg
KiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TW9j
a0NETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmg6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1G
YWN0b3J5Lmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB0ZXN0
aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0dhbWVw
YWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNs
aWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudFF1ZXVlOjplbnF1
ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
OjpXb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6
V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFz
a0FuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFz
a0Zvck1vZGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1
ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmNyZWF0ZUJsb2JMb2FkZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0
YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0
cmF0aW9uRnJvbVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAgICAgICAqIHdv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRD
b25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6V29y
a2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpp
bml0U2NyaXB0V2l0aFN1YmNsYXNzKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmg6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0Ojp1cGxvYWQpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpl
dmFsdWF0ZVByZWRpY2F0ZSk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0KToKKyAg
ICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcik6CisgICAgICAgICogeG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGlu
Z0NhbGxiYWNrczo6YXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRFbmRFbGVtZW50TlNDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kUHJvY2Vzc2luZ0lu
c3RydWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6
YXBwZW5kQ0RBVEFCbG9ja0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxs
YmFja3M6OmFwcGVuZENvbW1lbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5n
Q2FsbGJhY2tzOjphcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCk6CisKIDIwMTktMDgtMTMgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0eWxl
czogc2hvdyBAc3VwcG9ydHMgQ1NTIGdyb3VwaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggMGUx
YmZlNzM1NDE0MjRjMGQxOWRiOTE4YzQ1MmZlMDVmOWU2NzVhZi4uMTI4MWQzMjU4MzY3MjA0ZTEy
ZDYyNzVmZmUxOTllNTNiZWM4NmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxs
b2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAgICAgICAgKFBB
TDo6Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL3N5c3Rl
bS9DbG9ja0dlbmVyaWMuY3BwOgorICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6OmNyZWF0ZSk6
CisKIDIwMTktMDgtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVGFwcGluZyBidXR0b25zIGluIERhdGEgRGV0ZWN0b3JzIGxvb2t1cCBwcmV2aWV3
cyBkb2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggMzU4ZjJiZjAwNWFlNjQ0ZDgxMjMyOGQ1
ZGVkZTQxOWM4YmEwMWNmYi4uYTNmMmI3NjY4YzViYzJjZWNkMmNmNTYyOGRmNTVjNzNkZDE0MzEz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVl
PFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6Cisg
ICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIpOgor
ICAgICAgICAqIGdsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6
U2Vzc2lvbkhvc3Q6OmxhdW5jaEJyb3dzZXIpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9u
SG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorCiAyMDE5LTA2LTAzICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDU1
NjcpOiBbR1RLXVtXUEVdIFsyLjI1LjFdIFdlYktpdFdlYkRyaXZlciBnZXRzIGluc3RhbGxlZCBh
cyBXZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjNiZTkzOWExMWUzZTZkOGJlYjc1OTM1ZWY5N2YyMmRk
Y2Q4MDQwZi4uZGExNmYzMmFkZDc3YzIwYjJlYzU3NmY0MWQwNDllMzE5YzkwYTI2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MjEgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFn
ZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzayk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6
bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
TWFuYWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
TWFwOjphZGQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3du
bG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYik6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjppbml0aWFsaXplUXVvdGFVc2Vycyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
YWRkU3VwcGxlbWVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRhdGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6Q2FjaGU6OkNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6bWFrZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNo
ZTo6bWFrZVJlZGlyZWN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNh
Y2hlOjp1cGRhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZGVjb2Rl
U3RvcmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
cGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0Zy
YW1lTG9hZDo6cmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRF
bnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFy
dFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTdG9yYWdlOjpzeW5jaHJvbml6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
U3RvcmFnZTo6cmVhZFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmV0
cmlldmVGcm9tTWVtb3J5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdl
OjpyZXRyaWV2ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNF
bnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50
cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRjaENhY2hlOjpzdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlUmVkaXJlY3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNz
aW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVu
dENvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25z
dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291
cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0
VGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRT
dHJlYW0uY3BwOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3lu
Yyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVu
dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5T
TmFtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9y
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29ja2V0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlv
bik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZyk6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNlbmQpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rl
cjo6dW53cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3Nh
Z2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9D
b25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldh
dGNoZG9nOjpDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpzZW5kT3V0cHV0TWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6
CisgICAgICAgICogUGxhdGZvcm0vTW9kdWxlLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xh
eWVySG9zdGluZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRl
eHQ6OmNyZWF0ZUZvclBvcnQpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0
OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2Vzcyk6
CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAg
ICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6Cisg
ICAgICAgIChBUEk6OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICog
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9B
UEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAg
KHdlYmtpdENvbnRleHRNZW51SXRlbUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fbmV3KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJv
bV9nYWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9z
dG9ja19hY3Rpb24pOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9t
X3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVf
aXRlbV9uZXdfd2l0aF9zdWJtZW51KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9uZXdfc2VwYXJhdG9yKToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVk
L0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TaGFy
ZWRSaW5nQnVmZmVyU3RvcmFnZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRleG1h
cExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1
cmVSb290TGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvbXBvc2l0b3I6OlRocmVhZGVkQ29tcG9zaXRvcik6CisgICAgICAgICogU2hhcmVk
L1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1
Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVtb3RlT2Jq
ZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luTW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hh
cmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dXRvbWF0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJRm9ybUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAg
ICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUljb25EYXRhYmFzZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNv
bkxvYWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVu
ZGxlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlz
dG9yeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHA6CisgICAgICAgIChXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAg
IChXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25s
b2FkQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAg
IChXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAg
ICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VG
aW5kTWF0Y2hlc0NsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6Cisg
ICAgICAgIChXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VQb2xpY3lDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3Rh
dGUgaW5pdFdpdGhQYWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3
LmNwcDoKKyAgICAgICAgKFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtX
S0hUVFBDb29raWVTdG9yZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERv
d25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRp
b25EZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29u
dHJvbGxlciBfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0
b21hdGlvblNlc3Npb24gc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1b
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFk
eVNRTGl0ZVN0YXRlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1
dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29u
c3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVu
dUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudC5jcHA6CisgICAgICAgIChhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0Nv
bnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVu
dC5jcHA6CisgICAgICAgIChhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
ICh3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAod2Via2l0RmluZENvbnRyb2xs
ZXJDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1D
bGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoRm9ybUNsaWVudFRvVmlldyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAg
ICh3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hJY29u
TG9hZGluZ0NsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEluamVjdGVkQnVuZGxl
Q2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXI6OldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
Y3BwOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3Njcmlw
dF9tZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1
dG9tYXRpb25fYWxsb3dlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwOgorICAgICAgICAod2Via2l0RW1v
amlDaG9vc2VyU2V0dXBFbW9qaVNlY3Rpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAg
ICh3ZWJraXRXZWJJbnNwZWN0b3JDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3Ry
dWN0ZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJvbGxlcik6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcik6CisgICAgICAgICh3
ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgbWF5YmVJbnN0YWxsSWNv
bkxvYWRpbmdDbGllbnRdKToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vz
c1Bvb2w6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdl
Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xp
ZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5n
QXJlYVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAg
ICAgICAgKFdLV1BFOjpWaWV3OjpWaWV3KToKKyAgICAgICAgKFdLV1BFOjpWaWV3OjpzZXRDbGll
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHA6CisgICAg
ICAgIChXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV1BF
UXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3Ojpy
dW5KYXZhU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdQRVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRl
OjpjcmVhdGVJY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNyZWF0ZUNvbnRleHRN
ZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6Y3JlYXRlVUlDbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3Jl
YXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0RGlzcGxheUxpbmspOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5Ojpwcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNyZWF0
ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0VGV4
dEluZGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbnN1cmVHZXN0dXJl
Q29udHJvbGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6ZGlz
cGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL0RldmljZUlk
SGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6OmdldERhdGFGcm9tRGVjb2RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmljZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VUlH
YW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyk6CisgICAgICAgIChX
ZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dGFrZVVwbG9hZEFzc2VydGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vz
c1Byb3h5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsdWdpblJlcXVpcmVzR3RrMik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0VG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW06CisgICAg
ICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OmRldmljZUFkZGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFn
ZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOYXZp
Z2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjptX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0SWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dEZpbmRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRj
aGVzQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVu
dUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEF0dGFj
aFRvUnVubmluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERy
YXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNldEF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGli
bGVNZWRpYSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRy
YWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29t
cG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJs
ZUltYWdlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRy
b2xsZXI6OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tB
cHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS0FwcGxpY2F0aW9u
U3RhdGVUcmFja2luZ1ZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25J
bml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjp3
ZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVEcmF3aW5nQXJlYVBy
b3h5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5n
OmJsdXJQcmV2aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxl
ci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBpbml0V2l0aFdpbmRvdzp3ZWJWaWV3OnBh
Z2U6XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW06Cisg
ICAgICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBpbml0V2l0aFBhZ2U6dmlldzp1c2VQbGF0Zm9y
bUZpbmRVSTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVj
dCk6CisgICAgICAgICogVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL0JhY2tpbmdT
dG9yZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjpjcmVhdGVC
YWNrZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OldlYlZpZXcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQ
cm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5p
dGlhbEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1l
cGFkQ29ubmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlU2V0Q2xp
ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudCk6Cisg
ICAgICAgIChXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQ
YWdlU2V0Rm9ybUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudCk6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlUGFnZU92ZXJsYXlDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbToKKyAgICAgICAgKFdLQnVuZGxl
UGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKToKKyAgICAg
ICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3Bw
OgorICAgICAgICAod2Via2l0V2ViRWRpdG9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHA6CisgICAgICAg
ICh3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRGcmFt
ZUdldE9yQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToK
KyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1b
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVs
ZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRs
ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRDbGllbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdNZXNzYWdlOjpQZW5kaW5nTWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVTZXJ2ZXJU
Y3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVh
dGVVZHBTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpD
cmVhdGVDbGllbnRUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRG
YWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlQXN5bmNSZXNvbHZlcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcjo6UGx1Z2luRGVzdHJ1
Y3Rpb25Qcm90ZWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzY2hl
ZHVsZVRpbWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVh
bTo6ZGVsaXZlckRhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
blgxMTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZp
ZXc6OmNyZWF0ZVdlYkV2ZW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFp
bnRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRPdmVycmlkZXM6OmFkZE92ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhQ29v
cmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVU
aWxlZEJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVU
aWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpjcmVh
dGVTdWJmcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjptX3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRpbWVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNv
dXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1
bmRsZVVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJv
bGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9EcmF3aW5nQXJlYU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNo
TW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpTb3VyY2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZSk6CisKIDIwMTktMDgtMTMgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB1bmRlciBJUEM6OkNvbm5lY3Rpb246
Om1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCmluZGV4IDRjNTFlOTY1ZjY4MjZiZWMzZWU5MmU3NTI5NTg3ZTFiMWIyZDA0M2EuLjgyYjYw
MzFiMWI5YjQ2OWJhYTkwYjRhZGE4OGMxMzcwNGM1NDI0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMTktMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZVRocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVy
bWluYXRlKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAgICAoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAg
ICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIwMTktMDgt
MTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBJ
REItc3BlY2lmaWMgcXVvdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggYzYzZWZhYmE1
ZDg4NjgzYmVmYmYxNjk1OGZmMWZlMDAwNGVhOWM2Yi4uNWRlZDIzNjZiM2FlZTExYzgzM2E4Njc5
YWI4ZjU4MThiYWFhN2Y1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1h
bGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVGcm9udGVuZFNldHRpbmdzKToKKwogMjAxOS0wOC0xMCAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogUkVHUkVTU0lPTihyMjQ4NDU0KTogV0sxIGluc3BlY3RvciBmcm9udGVuZCBjbGllbnQgZG9l
c24ndCBxdWV1ZSBtZXNzYWdlcyB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgbG9hZGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggODViZmU3ZmU3YWE0YzNmN2ZjYmIyZDcyOGRi
NWRlYTdhZGFiYThmZi4uMjIzYzlmMDZkYzMwZWRlMTAyMTUxODQ5MzRlYmRmMTI1OWFiMzY5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTEz
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRk
IG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhl
ZFBvc2l0aW9uQ29udGVudC5tbToKKyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQg
c2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczpzdGlja3lDb250YWluZXJNYXA6XSk6CisKIDIw
MTktMDctMjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29u
dGVudENoYW5nZU9ic2VydmVyXSBkaWRGaW5pc2hDb250ZW50Q2hhbmdlT2JzZXJ2aW5nIHNob3Vs
ZCBpbmNsdWRlIHRoZSB0eXBlIG9mIGNvbnRlbnQgY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDBjNDRjMmMwZGM0NmI1NzdmYTgxZTc1ZGI4NDE4YTAxNGZkMTBlNWQuLjYw
MmZiMzZlZmM0OTE2MTFiNDQwMmI4OThjMzdlNGIyMmUzMDlmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxOS0wOC0xMyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3
aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAg
ICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0
b3J5SXRlbS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5
UmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0UHJveHkubW06CisgICAgICAgIChXS1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkp
OgorICAgICAgICAoV0tQQ0Jvb2xlYW5SZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhbkFuZERh
dGFSZXBseSk6CisgICAgICAgIChXS1BDSW5zdGFudGlhdGVQbHVnaW5SZXBseSk6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJv
eHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNl
OjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2Fw
ZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBj
cmVhdGVQbHVnaW5dKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyLm1tOgorICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0
ZSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29h
Lmg6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOnJlcGVh
dDp0aW1lckZ1bmM6XSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQubW06CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVh
ZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKGFkZFJlZGlyZWN0VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZy
b250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
ci5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2su
bW06CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X2F0dGFjaFNjcmlwdERlYnVnZ2VyXSk6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tOgorICAgICAgICAoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1b
V2ViVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpn
cm91cE5hbWU6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndv
cmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVk
RnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6
d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOndpdGhMaWZldGltZTpdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoV2ViVmlld0xheWVyRmx1c2hTY2hl
ZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKToKKyAgICAgICAgKC1bV2ViVmlld1By
aXZhdGUgaW5pdF0pOgorCiAyMDE5LTA4LTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBCbG9iIHJlZ2lzdHJpZXMgc2hvdWxkIGJlIGtleWVkIGJ5IHNlc3Np
b24gSURzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggYWI5MzVlMGJiMzQyOTk1NWE1
NTgwMTlhZDdmNjQ4Yzc5OTA3N2IwMS4uMDNlYjM2ZTNiZThhNTdiNzlkMDQ0ZTBjOWE4NWEyNWE1
MmFkNjFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisy
MDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAqIFBsdWdpbnMvUGx1
Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5WaWV3Ojpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXdXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6d25kUHJvYyk6CisgICAgICAgICog
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpXZWJDaHJvbWVD
bGllbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxv
YWRlckNsaWVudCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3Jt
RGF0YVRvQ2FjaGVkRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFu
YWdlci5jcHA6CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAg
KFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKToKKyAgICAgICAg
KiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6aW5pdEZyb21E
aWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ0FEM0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6
Y3JlYXRlRDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJOb3RpZmljYXRp
b25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpXZWJOb3RpZmlj
YXRpb25DZW50ZXIpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6
aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmll
d01JTUVUeXBlKToKKyAgICAgICAgKFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlk
ZW9FbGVtZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAg
ICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisgICAgICAgIChXZWJW
aWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKwogMjAxOS0wOC0xMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQmxvYiByZWdpc3RyaWVzIHNob3Vs
ZCBiZSBrZXllZCBieSBzZXNzaW9uIElEcwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hh
bmdlTG9nIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDNmMGZiMmUxY2VlYWVmMDY1
OWMzNGM4MjcxYmVlYzEwODIzNzU2ZWQuLjBkNTVmZTdlMWJiNjUxZTk4MTBjYzhiMjM5ODE4N2Y2
N2U5OTdlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xMyAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5p
cXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwLmg6Cisg
ICAgICAgICogYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oOgorCiAyMDE5LTA3LTI0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIEFkZCBJc29I
ZWFwIHRlc3QgdG8gZW5zdXJlIHRoYXQgSXNvSGVhcCBwYWdlcyBhcmUgbm90IGFsbG9jYXRpbmcg
dG9vIGxhcmdlIFZBCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dC5oCmluZGV4IDA3ZDcwOWJhMTJjODJjODU0ODJkNzNjNzIzNzdmNTE5ZTdmYzJhNWMuLmQwZTYy
NTI4MmE4NGY0ZjM1ZWVkZWQxOTVlZGI4ZGM4OTdiMWE1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBK
U0NhbGxiYWNrT2JqZWN0RGF0YSB7CiAgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVydHkoVk0mIHZt
LCBKU0NlbGwqIG93bmVyLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIW1fcHJpdmF0ZVByb3BlcnRpZXMpCi0gICAgICAg
ICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ByaXZhdGVQcm9w
ZXJ0eU1hcD4oKTsKKyAgICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVl
PEpTUHJpdmF0ZVByb3BlcnR5TWFwPigpOwogICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5z
ZXRQcml2YXRlUHJvcGVydHkodm0sIG93bmVyLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oCmluZGV4IGFlM2E2ZmUzYWNmOWM2YTgwMzk0ZTFkNzM0ZmEzMTdkOTA4
ZmFlMmMuLjljYTNiNGJmNDA4NTA3NTBiOGJjNDE5NDlmNzUwNDJiMzU3MjMxZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9u
cy5oCkBAIC01OCw3ICs1OCw3IEBAIGlubGluZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6YXNDYWxsYmFja09iamVjdChFbmNvCiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyZW50PgogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFz
cywgdm9pZCogZGF0YSkKICAgICA6IFBhcmVudChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCi0gICAg
LCBtX2NhbGxiYWNrT2JqZWN0RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3RE
YXRhPihkYXRhLCBqc0NsYXNzKSkKKyAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlx
dWU8SlNDYWxsYmFja09iamVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQogewogfQogCkBAIC02Nyw3
ICs2Nyw3IEBAIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50
PgogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KFZNJiB2bSwgSlND
bGFzc1JlZiBqc0NsYXNzLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IFBhcmVudCh2bSwg
c3RydWN0dXJlKQotICAgICwgbV9jYWxsYmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxK
U0NhbGxiYWNrT2JqZWN0RGF0YT4obnVsbHB0ciwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNr
T2JqZWN0RGF0YShtYWtlVW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0Ns
YXNzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Ns
YXNzUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5k
ZXggZjFjOWQ1NzAyYThhYTY5MDQ0ZGZiMjk1YjQ3MWZjZmNiYzg5MGI2Yi4uN2VlYzJhOTBhNDRm
ODYwYmFhMjI3NmI5NmQ0NWYyYmQ2ODYxNzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2xhc3NSZWYuY3BwCkBAIC01OSwyMSArNTksMjEgQEAgT3BhcXVlSlNDbGFzczo6T3BhcXVl
SlNDbGFzcyhjb25zdCBKU0NsYXNzRGVmaW5pdGlvbiogZGVmaW5pdGlvbiwgT3BhcXVlSlNDbGFz
cyoKICAgICBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKICAgICBpZiAoY29uc3QgSlNTdGF0aWNW
YWx1ZSogc3RhdGljVmFsdWUgPSBkZWZpbml0aW9uLT5zdGF0aWNWYWx1ZXMpIHsKLSAgICAgICAg
bV9zdGF0aWNWYWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1
ZXNUYWJsZT4oKTsKKyAgICAgICAgbV9zdGF0aWNWYWx1ZXMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpT
Q2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKICAgICAgICAgd2hpbGUgKHN0YXRpY1ZhbHVlLT5u
YW1lKSB7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWVOYW1lID0gU3RyaW5nOjpmcm9tVVRGOChz
dGF0aWNWYWx1ZS0+bmFtZSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlTmFtZS5pc051bGwoKSkK
LSAgICAgICAgICAgICAgICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCksIHN0
ZDo6bWFrZV91bmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3BlcnR5
LCBzdGF0aWNWYWx1ZS0+c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1
ZU5hbWUpKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5p
bXBsKCksIG1ha2VVbmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3Bl
cnR5LCBzdGF0aWNWYWx1ZS0+c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2
YWx1ZU5hbWUpKTsKICAgICAgICAgICAgICsrc3RhdGljVmFsdWU7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoY29uc3QgSlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rpb24gPSBkZWZp
bml0aW9uLT5zdGF0aWNGdW5jdGlvbnMpIHsKLSAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAg
ICAgICAgbV9zdGF0aWNGdW5jdGlvbnMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNG
dW5jdGlvbnNUYWJsZT4oKTsKICAgICAgICAgd2hpbGUgKHN0YXRpY0Z1bmN0aW9uLT5uYW1lKSB7
CiAgICAgICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdGF0
aWNGdW5jdGlvbi0+bmFtZSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uTmFtZS5pc051bGwo
KSkKLSAgICAgICAgICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5p
bXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rp
b24tPmNhbGxBc0Z1bmN0aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOworICAgICAg
ICAgICAgICAgIG1fc3RhdGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmltcGwoKSwgbWFr
ZVVuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihzdGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rp
b24sIHN0YXRpY0Z1bmN0aW9uLT5hdHRyaWJ1dGVzKSk7CiAgICAgICAgICAgICArK3N0YXRpY0Z1
bmN0aW9uOwogICAgICAgICB9CiAgICAgfQpAQCAtMTI4LDIxICsxMjgsMjEgQEAgT3BhcXVlSlND
bGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpWTSYsIE9wYXF1
ZUpTQ2xhc3MqIGpzQ2wKICAgICA6IG1fY2xhc3MoanNDbGFzcykKIHsKICAgICBpZiAoanNDbGFz
cy0+bV9zdGF0aWNWYWx1ZXMpIHsKLSAgICAgICAgc3RhdGljVmFsdWVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CisgICAgICAgIHN0YXRpY1Zh
bHVlcyA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAg
ICAgICBPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGpzQ2xhc3MtPm1fc3RhdGljVmFsdWVzLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0Ns
YXNzU3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganNDbGFzcy0+bV9zdGF0
aWNWYWx1ZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJU
KCFpdC0+a2V5LT5pc0F0b20oKSk7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWVOYW1lID0gaXQt
PmtleS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1
ZU5hbWUuaW1wbCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1
ZS0+Z2V0UHJvcGVydHksIGl0LT52YWx1ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmli
dXRlcywgdmFsdWVOYW1lKSk7CisgICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1ZU5h
bWUuaW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1ZS0+Z2V0UHJv
cGVydHksIGl0LT52YWx1ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmlidXRlcywgdmFs
dWVOYW1lKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoanNDbGFzcy0+bV9zdGF0aWNG
dW5jdGlvbnMpIHsKLSAgICAgICAgc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxP
cGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CisgICAgICAgIHN0YXRpY0Z1bmN0
aW9ucyA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwog
ICAgICAgICBPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGpzQ2xhc3MtPm1fc3RhdGljRnVuY3Rpb25zLT5lbmQoKTsKICAgICAgICAgZm9yIChP
cGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganND
bGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICAgICAgQVNTRVJUKCFpdC0+a2V5LT5pc0F0b20oKSk7Ci0gICAgICAgICAgICBzdGF0aWNG
dW5jdGlvbnMtPmFkZChpdC0+a2V5LT5pc29sYXRlZENvcHkoKSwgc3RkOjptYWtlX3VuaXF1ZTxT
dGF0aWNGdW5jdGlvbkVudHJ5PihpdC0+dmFsdWUtPmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUt
PmF0dHJpYnV0ZXMpKTsKKyAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXkt
Pmlzb2xhdGVkQ29weSgpLCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1
ZS0+Y2FsbEFzRnVuY3Rpb24sIGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOwogICAgICAgICB9CiAg
ICAgfQogfQpAQCAtMTUxLDcgKzE1MSw3IEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgT3Bh
cXVlSlNDbGFzczo6Y29udGV4dERhdGEoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHN0ZDo6dW5p
cXVlX3B0cjxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+b3BhcXVlSlNDbGFzc0RhdGEoKS5hZGQodGhpcywgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghY29udGV4dERhdGEpCi0gICAgICAgIGNvbnRl
eHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMt
PnZtKCksIHRoaXMpOworICAgICAgICBjb250ZXh0RGF0YSA9IG1ha2VVbmlxdWU8T3BhcXVlSlND
bGFzc0NvbnRleHREYXRhPihleGVjLT52bSgpLCB0aGlzKTsKICAgICByZXR1cm4gKmNvbnRleHRE
YXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2lu
Z0NvbnN0cmFpbnRQcml2YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJr
aW5nQ29uc3RyYWludFByaXZhdGUuY3BwCmluZGV4IGQ5ZWU2NzQwMzQ5Y2ZlZmRmYmNjMGQzMTA5
NGYxZjRkZTVhNTJjMWUuLmJhNGE1YTE2Njk3YWY1ZjhhOTcyMmU1NzQ2OWUzOTRkOTc5MDQyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWlu
dFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29u
c3RyYWludFByaXZhdGUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNDb250ZXh0R3JvdXBB
ZGRNYXJraW5nQ29uc3RyYWludChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNNYXJraW5nQ29u
c3RyCiAgICAgLy8gZWxzZSBnZXRzIG1hcmtlZC4KICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eSB2
b2xhdGlsaXR5ID0gQ29uc3RyYWludFZvbGF0aWxpdHk6OkdyZXllZEJ5TWFya2luZzsKICAgICAK
LSAgICBhdXRvIGNvbnN0cmFpbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtpbmdDb25z
dHJhaW50PigKKyAgICBhdXRvIGNvbnN0cmFpbnQgPSBtYWtlVW5pcXVlPFNpbXBsZU1hcmtpbmdD
b25zdHJhaW50PigKICAgICAgICAgdG9DU3RyaW5nKCJBbWMiLCBjb25zdHJhaW50SW5kZXgsICIo
IiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFpbnRDYWxsYmFjaykpLCAi
KSIpLAogICAgICAgICB0b0NTdHJpbmcoIkFQSSBNYXJraW5nIENvbnN0cmFpbnQgIyIsIGNvbnN0
cmFpbnRJbmRleCwgIiAoIiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFp
bnRDYWxsYmFjaykpLCAiLCAiLCBSYXdQb2ludGVyKHVzZXJEYXRhKSwgIikiKSwKICAgICAgICAg
W2NvbnN0cmFpbnRDYWxsYmFjaywgdXNlckRhdGFdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNXcmFwcGVyTWFwLm1tCmluZGV4IGQ0NjliNzVhMzFmMGVmY2E5ZDA3YWJiMDNiMGJlNjYxNjFi
Mzk1NjcuLjRiNTk5MDczZmU3NmI0ODY0NDM2OTlhYmRjYjM0YzQxNjRiYzJlM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC02MDYsNyArNjA2LDcgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0
UmVmKWNvbnRleHQKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9
IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQ
ZXJzb25hbGl0eTsKICAgICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IFtbTlNNYXBUYWJsZSBhbGxv
Y10gaW5pdFdpdGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9u
cyBjYXBhY2l0eTowXTsKIAotICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNDOjpXZWFrR0NNYXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+
KHRvSlMoY29udGV4dCktPnZtKCkpOworICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IG1ha2VVbmlx
dWU8SlNDOjpXZWFrR0NNYXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+
KHRvSlMoY29udGV4dCktPnZtKCkpOwogCiAgICAgQVNTRVJUKCF0b0pTR2xvYmFsT2JqZWN0KGNv
bnRleHQpLT53cmFwcGVyTWFwKCkpOwogICAgIHRvSlNHbG9iYWxPYmplY3QoY29udGV4dCktPnNl
dFdyYXBwZXJNYXAoc2VsZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L09iakNDYWxsYmFja0Z1bmN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpD
Q2FsbGJhY2tGdW5jdGlvbi5tbQppbmRleCBlZTkzMjgyMWVmNzRiZDY4OTFhZThmMjlmYWQ3YmJh
NWFmZWEwY2JjLi43M2NiNDI3MDQzODE4MzFlODE5ZDlkOTQzZWI5ZTU0NDAzMDk2ZjhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0K
QEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
ICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVE
b3VibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tB
cmd1bWVudERvdWJsZTxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tB
cmd1bWVudERvdWJsZTxUPj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBl
Qm9vbCgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50Qm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1
bWVudEJvb2xlYW4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQo
KQpAQCAtMjE3LDcgKzIxNyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5
cGVJZCgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJ
ZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlT2ZDbGFzcyhjb25zdCBj
aGFyKiBiZWdpbiwgY29uc3QgY2hhciogZW5kKQpAQCAtMjI4LDE5ICsyMjgsMTkgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKGNscyA9PSBbSlNW
YWx1ZSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFj
a0FyZ3VtZW50SlNWYWx1ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxi
YWNrQXJndW1lbnRKU1ZhbHVlPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU1N0cmluZyBjbGFz
c10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50
TlNTdHJpbmc+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3Vt
ZW50TlNTdHJpbmc+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TTnVtYmVyIGNsYXNzXSkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051bWJl
cj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051
bWJlcj4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNEYXRlIGNsYXNzXSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RhdGU+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOwogICAg
ICAgICBpZiAoY2xzID09IFtOU0FycmF5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0FycmF5PigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CiAgICAgICAgIGlmIChj
bHMgPT0gW05TRGljdGlvbmFyeSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKIAotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKikKQEAgLTI1Miw3ICsyNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBT
dHJpbmdSYW5nZSBjb3B5KGJlZ2luLCBlbmQpOwogICAgICAgICBpZiAoTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uID0gdmFsdWVUb1R5cGVJbnZvY2F0aW9uRm9yKGNvcHkpKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4oaW52b2NhdGlv
biwgY29weSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50
U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogfTsKQEAgLTMzNSw0NSArMzM1LDQ1IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZURvdWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFj
a1Jlc3VsdE51bWVyaWM8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNr
UmVzdWx0TnVtZXJpYzxUPj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBl
Qm9vbCgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jl
c3VsdEJvb2xlYW4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0
Qm9vbGVhbj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4oKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVz
dWx0VHlwZSB0eXBlT2ZDbGFzcyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0
YXRpYyBSZXN1bHRUeXBlIHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVTdHJ1Y3QoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0
IGNoYXIqIGVuZCkKICAgICB7CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7
CiAgICAgICAgIGlmIChOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSB0eXBlVG9WYWx1ZUludm9j
YXRpb25Gb3IoY29weSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxs
YmFja1Jlc3VsdFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH07CkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGlj
IEpTT2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbihKU0NvbnRleHQg
KmNvbnRleHQsIE5TSW52b2MKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CiAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgYXV0byBpbXBsID0gc3RkOjpt
YWtlX3VuaXF1ZTxKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlw
ZSwgaW5zdGFuY2VDbGFzcywgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOwor
ICAgIGF1dG8gaW1wbCA9IG1ha2VVbmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+
KGludm9jYXRpb24sIHR5cGUsIGluc3RhbmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RG
TW92ZShyZXN1bHQpKTsKICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBpbXBsLT5uYW1lKCk7CiAg
ICAgcmV0dXJuIHRvUmVmKEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBuYW1lLCBXVEZNb3ZlKGltcGwpKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKaW5kZXggZTAxZTk3
MGM3ZjU4MDM2NTYxOGVmMWRhYjg1NTQ0ZDcwNGY5YjQ3YS4uNzhkNzY1NWZmODA3NzYwZDQ2MDhh
NjE3ZTU3YzkwZjE1NDI3OTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDb250ZXh0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIGpzY0NvbnRl
eHRTZXRWaXJ0dWFsTWFjaGluZShKU0NDb250ZXh0KiBjb250ZXh0LCBHUmVmUHRyPEpTQ1ZpcnR1
YWxNCiAgICAgICAgICAgICBwcml2LT5qc0NvbnRleHQgPSBKU1JldGFpblB0cjxKU0dsb2JhbENv
bnRleHRSZWY+KEFkb3B0LCBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGpzY1ZpcnR1YWxN
YWNoaW5lR2V0Q29udGV4dEdyb3VwKHByaXYtPnZtLmdldCgpKSwgbnVsbHB0cikpOwogICAgICAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0b0pTR2xvYmFsT2JqZWN0KHByaXYtPmpzQ29udGV4dC5n
ZXQoKSk7CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT53cmFwcGVyTWFwKCkpCi0gICAgICAg
ICAgICBnbG9iYWxPYmplY3QtPnNldFdyYXBwZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxKU0M6Oldy
YXBwZXJNYXA+KHByaXYtPmpzQ29udGV4dC5nZXQoKSkpOworICAgICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5zZXRXcmFwcGVyTWFwKG1ha2VVbmlxdWU8SlNDOjpXcmFwcGVyTWFwPihwcml2LT5qc0Nv
bnRleHQuZ2V0KCkpKTsKICAgICAgICAganNjVmlydHVhbE1hY2hpbmVBZGRDb250ZXh0KHByaXYt
PnZtLmdldCgpLCBjb250ZXh0KTsKICAgICB9IGVsc2UgaWYgKHByaXYtPnZtKSB7CiAgICAgICAg
IEFTU0VSVChwcml2LT5qc0NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwCmluZGV4IDExYmI3YzBiODczN2RiNjdkZDE3ZGNkMjRm
NzAyOTQzNDQ2OWE4MDMuLmY1MjNlYTQxOTlmOGFiZDczMmY3N2I2MjgxNDEyMDEzNGJiOGJlYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFw
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBXcmFwcGVyTWFwOjpXcmFw
cGVyTWFwKEpTR2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHQpCi0gICAgOiBtX2NhY2hlZEpTV3Jh
cHBlcnMoc3RkOjptYWtlX3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09i
amVjdD4+KHRvSlMoanNDb250ZXh0KS0+dm0oKSkpCisgICAgOiBtX2NhY2hlZEpTV3JhcHBlcnMo
bWFrZVVuaXF1ZTxKU0M6OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09iamVjdD4+KHRvSlMo
anNDb250ZXh0KS0+dm0oKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suY3BwCmluZGV4IGE3NWY1OGRjMTQ2YjNiNjQ5NWNlYjE2N2FkZjRk
YWJmZjA2YjBjODkuLmRhNDc3MDUxZjM0NWUwNzE2OGZjN2QwNmUwYzdmNTI2MzExODZlNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcApAQCAt
MTM0LDcgKzEzNCw3IEBAIFBhZ2UqIFN0YWNrOjplbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3Mp
CiAgICAgaWYgKExJS0VMWShpdCAhPSBtX3BhZ2VzLmVuZCgpKSkKICAgICAgICAgbV9sYXN0QWNj
ZXNzZWRQYWdlID0gaXQtPnZhbHVlLmdldCgpOwogICAgIGVsc2UgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFnZT4gcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oYmFzZUFkZHJlc3Mp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4o
YmFzZUFkZHJlc3MpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZXMuYWRkKGJhc2VBZGRy
ZXNzLCBXVEZNb3ZlKHBhZ2UpKTsKICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCmluZGV4IDJjOWMzYjBkZTg5ZWIzZTM4M2Y0Y2JkY2YyMTJkMjY4YzFj
MTlkYmEuLjdmNjg1ODZjMWMwMjg5YzBhMzI1MjJmZGU5ZTA2N2RmMWY0MWUyMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xMjQxLDcgKzEyNDEsNyBA
QCBjbGFzcyBMb3dlclRvQWlyIHsKICAgICB2b2lkIHByaW50KFZhbHVlKiBvcmlnaW4sIEFyZ3Vt
ZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gcHJpbnRMaXN0ID0gUHJp
bnRlcjo6bWFrZVByaW50UmVjb3JkTGlzdChhcmd1bWVudHMuLi4pOwotICAgICAgICBhdXRvIHBy
aW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOwor
ICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFs
Kj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRM
aXN0KSkpOwogICAgICAgICBJbnN0IGluc3QoQWlyOjpQYXRjaCwgb3JpZ2luLCBBcmc6OnNwZWNp
YWwocHJpbnRTcGVjaWFsKSk7CiAgICAgICAgIFByaW50ZXI6OmFwcGVuZEFpckFyZ3MoaW5zdCwg
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAgICAgICAgIGFwcGVuZChX
VEZNb3ZlKGluc3QpKTsKQEAgLTEzMDgsNyArMTMwOCw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewog
ICAgIHsKICAgICAgICAgaWYgKCFmaWVsZCkgewogICAgICAgICAgICAgZmllbGQgPSBzdGF0aWNf
Y2FzdDxUKj4oCi0gICAgICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3Vu
aXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOworICAgICAg
ICAgICAgICAgIG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFy
Z3VtZW50cz4oYXJndW1lbnRzKS4uLikpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmll
bGQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXgg
ZmZjYjJkNGUyNzE0NDI5NzBlNTQ2NDM2NjcwZjdmMjlkZWIxYWIxYy4uMmVjY2RhYzA0OWU2OGQx
MTNlMjNmOTdmMjQzNTNhNWQ0YWFhM2I5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgewogUHJvY2VkdXJlOjpQcm9jZWR1cmUoKQogICAgIDogbV9jZmcobmV3IENGRygqdGhpcykp
CiAgICAgLCBtX2xhc3RQaGFzZU5hbWUoImluaXRpYWwiKQotICAgICwgbV9ieXByb2R1Y3RzKHN0
ZDo6bWFrZV91bmlxdWU8T3BhcXVlQnlwcm9kdWN0cz4oKSkKKyAgICAsIG1fYnlwcm9kdWN0cyht
YWtlVW5pcXVlPE9wYXF1ZUJ5cHJvZHVjdHM+KCkpCiAgICAgLCBtX2NvZGUobmV3IEFpcjo6Q29k
ZSgqdGhpcykpCiB7CiAgICAgbV9jb2RlLT5zZXROdW1FbnRyeXBvaW50cyhtX251bUVudHJ5cG9p
bnRzKTsKQEAgLTMxMSwyOCArMzExLDI4IEBAIHZvaWQgUHJvY2VkdXJlOjpkZWxldGVPcnBoYW5z
KCkKIERvbWluYXRvcnMmIFByb2NlZHVyZTo6ZG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFtX2Rv
bWluYXRvcnMpCi0gICAgICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5h
dG9ycz4oKnRoaXMpOworICAgICAgICBtX2RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPERvbWluYXRv
cnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKIH0KIAogTmF0dXJhbExvb3Bz
JiBQcm9jZWR1cmU6Om5hdHVyYWxMb29wcygpCiB7CiAgICAgaWYgKCFtX25hdHVyYWxMb29wcykK
LSAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4o
KnRoaXMpOworICAgICAgICBtX25hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8TmF0dXJhbExvb3Bz
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX25hdHVyYWxMb29wczsKIH0KIAogQmFja3dhcmRzQ0ZH
JiBQcm9jZWR1cmU6OmJhY2t3YXJkc0NGRygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykK
LSAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4o
KnRoaXMpOworICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZH
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIAogQmFja3dhcmRzRG9t
aW5hdG9ycyYgUHJvY2VkdXJlOjpiYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKICAgICBpZiAoIW1f
YmFja3dhcmRzRG9taW5hdG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3Rk
OjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fYmFj
a3dhcmRzRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0zNTgsNyArMzU4
LDcgQEAgdm9pZCogUHJvY2VkdXJlOjphZGREYXRhU2VjdGlvbihzaXplX3Qgc2l6ZSkKIHsKICAg
ICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxEYXRhU2VjdGlvbj4gZGF0YVNlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFTZWN0aW9u
PihzaXplKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0g
bWFrZVVuaXF1ZTxEYXRhU2VjdGlvbj4oc2l6ZSk7CiAgICAgdm9pZCogcmVzdWx0ID0gZGF0YVNl
Y3Rpb24tPmRhdGEoKTsKICAgICBtX2J5cHJvZHVjdHMtPmFkZChXVEZNb3ZlKGRhdGFTZWN0aW9u
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNv
ZGUuY3BwCmluZGV4IDMzZjhhYmZlZmJjMWY4ZjkxNjU0NWEzYmRjYTE5NmIwY2M2NmMzOTguLmQ1
ZDY5YzMwYTU5OTE3NWYyODE0ODM2Mjg2MzZmY2I3NzA2ODAxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIENDYWxsU3BlY2lh
bCogQ29kZTo6Y0NhbGxTcGVjaWFsKCkKIHsKICAgICBpZiAoIW1fY0NhbGxTcGVjaWFsKSB7CiAg
ICAgICAgIG1fY0NhbGxTcGVjaWFsID0gc3RhdGljX2Nhc3Q8Q0NhbGxTcGVjaWFsKj4oCi0gICAg
ICAgICAgICBhZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7Cisg
ICAgICAgICAgICBhZGRTcGVjaWFsKG1ha2VVbmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG1fY0NhbGxTcGVjaWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckdlbmVyYXRlLmNwcAppbmRleCBmMzZiOWIyZmU2NjgxNjBiODg5OWIwYzUwYjMx
OTdkNzU4ODI0ZjgwLi45NWNhYTAwNGQ4ZWIzOTIzMzBlMWNjYmI2MzlhNWNlZTc5Y2JjNzlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMTAw
LDcgKzEwMCw3IEBAIHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAg
ICAgICAgIGRhdGFMb2coY29kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb2RlLm1fZ2VuZXJh
dGVBbmRBbGxvY2F0ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJhdGVBbmRBbGxv
Y2F0ZVJlZ2lzdGVycz4oY29kZSk7CisgICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzID0gbWFrZVVuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2Rl
KTsKICAgICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMtPnByZXBhcmVG
b3JHZW5lcmF0aW9uKCk7CiAKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvdGVzdGFpci5jcHAKaW5kZXggZWYxNTQ0YzA3YmIzMmE5MDM3ZjJjYjcxZTE1ZTc0YTli
ZTYxYmY5NC4uM2RjYTI5Njc4OGIwMDEwNjhlMDFmNDIzZTExNmM3YzJhNGU3ZGE0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxCMzo6Q29tcGlsYXRpb24+IGNvbXBpbGUoQjM6OlByb2NlZHVyZSYgcHJv
YykKICAgICBnZW5lcmF0ZShwcm9jLmNvZGUoKSwgaml0KTsKICAgICBMaW5rQnVmZmVyIGxpbmtC
dWZmZXIoaml0LCBudWxscHRyKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpD
b21waWxhdGlvbj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAg
ICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAidGVz
dGFpciBjb21waWxhdGlvbiIpLCBwcm9jLnJlbGVhc2VCeXByb2R1Y3RzKCkpOwogfQogCkBAIC0x
ODU1LDcgKzE4NTUsNyBAQCB2b2lkIHRlc3RJbnZhbGlkYXRlQ2FjaGVkVGVtcFJlZ2lzdGVycygp
CiAgICAgcm9vdC0+YXBwZW5kKE1vdmUsIG51bGxwdHIsIEFyZzo6YmlnSW1tKGJpdHdpc2VfY2Fz
dDxpbnRwdHJfdD4oJnRoaW5ncykpLCBiYXNlKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBwYXRj
aFBvaW50MVJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Ci0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0
Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0
Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVj
aWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigp
KTsKIAogICAgIC8vIEluIFBhdGNocG9pbnQsIExvYWQgdGhpbmdzWzBdIC0+IHRtcC4gVGhpcyB3
aWxsIG1hdGVyaWFsaXplIHRoZSBhZGRyZXNzIGluIHgxNyAoZGF0YU1lbW9yeVJlZ2lzdGVyKS4K
ICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50MSA9IHBhdGNoUG9pbnQxUm9vdC0+
YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2lu
KCkpOwpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQoKQog
ICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5S
ZWdpc3RlcihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNp
YWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNp
YWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5h
ZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIz
OjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFs
dWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAg
dm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQyKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5m
bzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIz
OjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6
bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVj
aWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQ
YXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJv
Yy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jv
b3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9y
aWdpbigpKTsKQEAgLTIwMDAsNyArMjAwMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVk
MygpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9j
LnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50
U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50
U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBj
b2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAg
ICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmgKaW5kZXggMTU1Y2E0YWI0NzBiMDE0NDJhZDk1NDNhOGFlMWZjMWZjNTlmN2UzYS4u
MWM3YWQwZjk0ZTA2YjhjMzFiZmU3Y2M5NGQwNTUyYzQ3Nzk2MDdlNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuaApAQCAtMTg5LDcgKzE4OSw3IEBAIGV4dGVybiBMb2NrIGNyYXNoTG9jazsK
IGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNvbXBpbGVQcm9jKFByb2NlZHVy
ZSYgcHJvY2VkdXJlLCB1bnNpZ25lZCBvcHRMZXZlbCA9IE9wdGlvbnM6OmRlZmF1bHRCM09wdExl
dmVsKCkpCiB7CiAgICAgcHJvY2VkdXJlLnNldE9wdExldmVsKG9wdExldmVsKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJlKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVy
ZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzEw
ODU5YWNlZDNkYjc4YjY2NDk3NmEwOGI4ZTViNDhkNjUyYjJmMy4uNzdmYjY1ZGEwYjdhMDZjN2Q2
NThiYWJkYjRlNTEwOGE3OTE3ZWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcApAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6
Z2VuZXJhdGVJbXBsKEFjY2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBz
dGF0ZS5zZXRTcGlsbFN0YXRlRm9ySlNHZXR0ZXJTZXR0ZXIoc3BpbGxTdGF0ZSk7CiAKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFhY2Nlc3MuY2FsbExpbmtJbmZvKCkpOwotICAgICAgICAg
ICAgYWNjZXNzLm1fY2FsbExpbmtJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua0luZm8+
KCk7CisgICAgICAgICAgICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBtYWtlVW5pcXVlPENhbGxM
aW5rSW5mbz4oKTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGdlbmVyYXRlZCBhIHBv
bHltb3JwaGljIGNhbGwgc3R1YiB0aGF0IGp1bXBlZCBiYWNrIHRvIHRoZSBnZXR0ZXIKICAgICAg
ICAgICAgIC8vIHN0dWIsIHdoaWNoIHRoZW4ganVtcGVkIGJhY2sgdG8gdGhlIG1haW4gY29kZSwg
dGhlbiB3ZSdkIGhhdmUgYSByZWFjaGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCmluZGV4IDJi
ZDlmZTY1MTk5ZDA3ZjE3M2UzODMwZGM3NGU0NjdlYjlkNTQxZmMuLjkyNTdmYzIyNjY1MjlmODYx
MzdkNWRhZDhjOTI0OTcxODM5MDQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIGNsYXNzIFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMgOiBwdWJs
aWMgQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXM6OlNsb3dQCiAgICAgdm9pZCBBY2Nlc3NDYXNlU25p
cHBldFBhcmFtczo6YWRkU2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZy
b20sIENDYWxsSGVscGVycyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlw
ZSByZXN1bHQsIHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKICAgICB7IFwKICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCB0byA9IGppdC5sYWJlbCgpOyBcCi0gICAgICAgIG1fZ2Vu
ZXJhdG9ycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRo
QXJndW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5
cGUsIF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwK
KyAgICAgICAgbV9nZW5lcmF0b3JzLmFwcGVuZChtYWtlVW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVy
YXRvcldpdGhBcmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwg
UmVzdWx0VHlwZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQsIGFy
Z3MpKTsgXAogICAgIH0gXAogCiBTTklQUEVUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NB
TExfT1BFUkFUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggMzNiYjBjMDY2MzUzODFlODk4ZjY1YTg3NGYx
ZjM2YThjOTQ4MjNhZi4uMTBjNjViYjlkZDcwOWE5YWY3YWJhNmNlYjhhOWI3MzU5NzcxNjQxYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5jcHAKQEAgLTY1LDE1ICs2NSwxNSBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6
Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAg
ICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNC
bG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwogCi0gICAgYXV0
byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJh
c2ljQmxvY2s6OkVudHJ5QmxvY2spOwotICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91
bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2sp
OworICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKKyAgICBhdXRvIGZpcnN0QmxvY2sgPSBtYWtlVW5p
cXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsK
ICAgICBsaW5rQmxvY2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAogICAgIGFw
cGVuZEJsb2NrKFdURk1vdmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJl
bnQgPSBmaXJzdEJsb2NrLmdldCgpOwogICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9j
aykpOwogCi0gICAgYXV0byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxv
Y2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKKyAgICBhdXRvIGV4aXQgPSBtYWtl
VW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2sp
OwogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCkBAIC04NCw3
ICs4NCw3IEBAIHZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgYm9vbCBjcmVhdGVkQmxv
Y2sgPSBmYWxzZTsKICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBqdW1w
IHRhcmdldCwgdGhlbiBpdCdzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBiYXNpYyBibG9jay4KICAg
ICAgICAgaWYgKGlzSnVtcFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zm
c2V0KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlcikgewotICAgICAgICAgICAgYXV0byBuZXdC
bG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0cnVjdGlvbik7
CisgICAgICAgICAgICBhdXRvIG5ld0Jsb2NrID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxv
Y2s+KGluc3RydWN0aW9uKTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsK
ICAgICAgICAgICAgIGFwcGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAg
IGNyZWF0ZWRCbG9jayA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IGQ4ZGFjMTU4NWZhYjJiOTk4YzFlNWQ4ODc1MmJhMTJk
ZjZkYWRiZGUuLjM5M2YxODI0ZTQxYTRiZWI1MTRjNjJhNjk2ZjMzYTgzNzI0OTVjZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0y
NjUsNyArMjY1LDcgQEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiAKIHZv
aWQgQ2FsbExpbmtJbmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZm
bGVEYXRhJiBzaHVmZmxlRGF0YSkKIHsKLSAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxGcmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0YSk7CisgICAgbV9mcmFt
ZVNodWZmbGVEYXRhID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURh
dGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZWYxY2FiZmE3MThiMDgwZDdmM2U4NjM3ZjlmOTRm
NjA1ODZlZTRlOC4uMzlhMjNiNGM3ZjQ3ZDhmY2U1ZTMwZWVjYTU1MGU3N2RhZDMxNTg2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEzMzcs
NyArMTMzNyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkK
IENvZGVCbG9jazo6SklURGF0YSYgQ29kZUJsb2NrOjplbnN1cmVKSVREYXRhU2xvdyhjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImKQogewogICAgIEFTU0VSVCghbV9qaXREYXRhKTsKLSAgICBtX2pp
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVERhdGE+KCk7CisgICAgbV9qaXREYXRhID0gbWFr
ZVVuaXF1ZTxKSVREYXRhPigpOwogICAgIHJldHVybiAqbV9qaXREYXRhOwogfQogCkBAIC0xNTUw
LDcgKzE1NTAsNyBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OnJhcmVDYXNlUHJvZmlsZUNvdW50Rm9y
Qnl0ZWNvZGVPZmZzZXQoY29uc3QgQ29uY3VycmVudEpTTG9jawogdm9pZCBDb2RlQmxvY2s6OnNl
dENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycykKIHsK
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZW5zdXJlSklURGF0
YShsb2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0
ZXJBdE9mZnNldExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOworICAgIGVuc3VyZUpJVERhdGEo
bG9ja2VyKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnNldENh
bGxlZVNhdmVSZWdpc3RlcnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBy
ZWdpc3RlckF0T2Zmc2V0TGlzdCkKQEAgLTE3OTAsNyArMTc5MCw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjplbnN1cmVDYXRjaExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0U2xvdyhjb25z
dCBPcENhdGNoCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkK
ICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChp
KSk7CiAKLSAgICBhdXRvIHByb2ZpbGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICBhdXRvIHByb2ZpbGVz
ID0gbWFrZVVuaXF1ZTxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMu
c2l6ZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVy
YW5kcy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9z
aXplOyArK2kpCiAgICAgICAgIHByb2ZpbGVzLT5tX2J1ZmZlci5nZXQoKVtpXS5tX29wZXJhbmQg
PSBsaXZlT3BlcmFuZHNbaV0ub2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKaW5kZXggODcwNjhiYTY1ZGQ4NWMyM2ZiZTRhNDkwZTk3NGE3MjgxZjI1
NjA0Yy4uMzE0MzhlMGFjNTA2OWIyNzQ5Njk4ODg2YWIxMTIwMDc2YmNiNzNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTQzLDcgKzk0Myw3IEBA
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgY3JlYXRlUmFyZURh
dGFJZk5lY2Vzc2FyeSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKLSAgICAg
ICAgICAgIGF1dG8gcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAg
ICAgICAgICAgYXV0byByYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAg
ICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyAvLyBtX2NhdGNoUHJvZmlsZXMgY2FuIGJlIHRv
dWNoZWQgZnJvbSBjb21waWxlciB0aHJlYWRzLgogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdU
Rk1vdmUocmFyZURhdGEpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAppbmRleCAyZDk0MzFjZjBiMTQ0ZmEzYTJjMjIx
YTY2ZTk0MDcwYzc3NTBlMGUwLi5iMWEwMWZmYTRkOTM0OGZlY2IyNGM5Njg4YmM4MDA1MmY5Mzg4
NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBFeGl0UHJvZmlsZTo6YWRkKENvZGVCbG9j
ayogb3duZXIsIGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgLy8gSWYgd2UndmUg
bmV2ZXIgc2VlbiBhbnkgZnJlcXVlbnQgZXhpdHMgdGhlbiBjcmVhdGUgdGhlIGxpc3QgYW5kIHB1
dCB0aGlzIHNpdGUKICAgICAvLyBpbnRvIGl0LgogICAgIGlmICghcHJvZmlsZS5tX2ZyZXF1ZW50
RXhpdFNpdGVzKSB7Ci0gICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+PigpOworICAgICAgICBwcm9maWxl
Lm1fZnJlcXVlbnRFeGl0U2l0ZXMgPSBtYWtlVW5pcXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRl
Pj4oKTsKICAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzLT5hcHBlbmQoc2l0ZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAK
aW5kZXggNGY0OGExZDZjOTg3MjJlNWFjMmVjZTg3ZTUwNDAyMzJmOWE1ZDZiMS4uNGZiMTE1NzMw
MDNiNTJlZmQ5YTg2NmZiM2JkZjc3NTA5OGNlZmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6
OmNvbXBpbGF0aW9uRGlkQ29tcGxldGUoQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiwKIFZlY3RvcjxE
ZWZlcnJlZFNvdXJjZUR1bXA+JiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmVuc3VyZURl
ZmVycmVkU291cmNlRHVtcCgpCiB7CiAgICAgaWYgKCFtX2RlZmVycmVkU291cmNlRHVtcCkKLSAg
ICAgICAgbV9kZWZlcnJlZFNvdXJjZUR1bXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxEZWZl
cnJlZFNvdXJjZUR1bXA+PigpOworICAgICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IG1ha2VV
bmlxdWU8VmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4+KCk7CiAgICAgcmV0dXJuICptX2RlZmVy
cmVkU291cmNlRHVtcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwCmluZGV4IGRiOWFkMTYwYWMyODEzMGYzOTg0MWZmM2JmZWIzMmI2
ODNkZGVhZDYuLmRmNGQ3N2NlM2Y2M2I1MjAwNzU1NDRjNDFhMTZjYjIzMWQ3ZGZhNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKQEAg
LTI0Myw3ICsyNDMsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpH
ZXR0ZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0
YXR1cyA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJB
Y2Nlc3NDYXNlPigpLmNhbGxMaW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAq
Y2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNh
bGxFeGl0U2l0ZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5jcHAKaW5kZXggZmMxZjQ2MGRlOTY1NDFkOGZhMDk5Y2JiNDVmMjMwOWMy
YTMzMzgwZi4uZWQ4ZDQ5M2Y3ZWU2ZjFkYTJiOTA5YWQ1N2M2Mjc3MTgxM2MyZDZhYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIEdldEJ5SWRWYXJpYW50JiBHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9
KGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcikKICAgICBtX2N1c3RvbUFjY2Vzc29yR2V0dGVy
ID0gb3RoZXIubV9jdXN0b21BY2Nlc3NvckdldHRlcjsKICAgICBtX2RvbUF0dHJpYnV0ZSA9IG90
aGVyLm1fZG9tQXR0cmlidXRlOwogICAgIGlmIChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAg
ICAgICBtX2NhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4o
Km90aGVyLm1fY2FsbExpbmtTdGF0dXMpOworICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFr
ZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVs
c2UKICAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZS5jcHAKaW5kZXggMDkyOWQ2ZmI0MTI2NzRlZDdmMjA0MDQ1ZmI0MjVl
YjdkMzhkM2M5My4uNmVlYjE0NWIzMzc5NjYyYWYxYzE1MDAxOTA3NjcyN2EzOWVlMmJkYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlKiBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCgKICAgICBj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtl
eSYga2V5KQogewogICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExhenlPcGVyYW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOworICAgICAgICBtX2RhdGEg
PSBtYWtlVW5pcXVlPExhenlPcGVyYW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOwogICAgIGVsc2Ug
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRhLT5zaXplKCk7ICsraSkg
ewogICAgICAgICAgICAgaWYgKG1fZGF0YS0+YXQoaSkua2V5KCkgPT0ga2V5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaApp
bmRleCBiNDllNGUyNDJlNTJmMDgxMzE1ZTQ4ZmIxZTFiY2MyOTdlNTI4YWUwLi5hMWVjYjk0ZGQw
ZDE4NjcwODYzNTJmNTJiNWI1OGMzMTkzZWVjZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaApAQCAtNDcsNyArNDcs
NyBAQCBjbGFzcyBQb2x5UHJvdG9BY2Nlc3NDaGFpbiB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UG9seVByb3RvQWNjZXNzQ2hhaW4+IGNsb25lKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBvbHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFBvbHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CiAgICAgfQogCiAgICAg
Y29uc3QgVmVjdG9yPFN0cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCmluZGV4IDIyZjQ1NTgxNGI4NGFmNGZlNzRjYWYyMzQwMWQzMGFkYWRhZTVjNmUu
LjNiMzAyMzM5ZjAzNTBkYWM0MjhmM2YwNGNjNzM1MmEzYWU1MjFiODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAt
NjE2LDcgKzYxNiw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6
OnJlZ2VuZXJhdGUoCiAgICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNv
ZGUsIHZtLCBjb2RlQmxvY2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIGNvZGVCbG9ja1RoYXRP
d25zRXhjZXB0aW9uSGFuZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7
CiAgICAgbV93YXRjaHBvaW50cyA9IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwogICAgIGlm
ICghc3RhdGUud2Vha1JlZmVyZW5jZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVu
Y2VzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZN
b3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7CisgICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBt
YWtlVW5pcXVlPFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vh
a1JlZmVyZW5jZXMpKTsKICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAKaW5kZXggYzJkOTUzMjBjZWJkNTZkYmRjOTNlZWJkNmMzMTQwYTdkZjdjYzIwOS4uZDY0MmJj
Y2ZlNzk3NjZjNTI3OWJiYzgxMDg3MDFlYjdmODU4MjRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBA
IFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAogICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6Oklu
bGluZWFibGU6IHsKICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5r
U3RhdHVzPiBjYWxsTGlua1N0YXR1cyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICAgICAgbWFr
ZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKENhbGxM
aW5rSW5mbyogY2FsbExpbmtJbmZvID0gYWNjZXNzLmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+
KCkuY2FsbExpbmtJbmZvKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpjYWxsTGlua1N0
YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRl
RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJp
YW50LmNwcAppbmRleCA1ZDZiMjkwNDVjYTY3NWM1NmZhNzFkNTQ3NWExMTViMmRmNmYzYzVlLi43
MmM2Y2FjODRmYjI3YmNmNWU0MTdjNDk2ZTYzNjJmNzJlNmMwYTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgUHV0QnlJZFZhcmlhbnQmIFB1dEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgUHV0
QnlJZFZhcmlhbnQmIG90aGVyKQogICAgIG1fY29uZGl0aW9uU2V0ID0gb3RoZXIubV9jb25kaXRp
b25TZXQ7CiAgICAgbV9vZmZzZXQgPSBvdGhlci5tX29mZnNldDsKICAgICBpZiAob3RoZXIubV9j
YWxsTGlua1N0YXR1cykKLSAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9j
YWxsTGlua1N0YXR1cyA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxM
aW5rU3RhdHVzKTsKICAgICBlbHNlCiAgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRy
OwogICAgIHJldHVybiAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRleCA5NmQyMmVjZmEwYTRjNzU2ZWRmZjYxZjAw
MTNmNzI1OGU3ZDNmYmQ1Li41M2YyMDhiY2FkZWQzZGVhMmRlZTE4YTBlODk2MDVjNDkwYTE5NWJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0
dXNlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFJlY29yZGVkU3RhdHVzZXM6OlJlY29yZGVkU3Rh
dHVzZXMoUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKQogCiBDYWxsTGlua1N0YXR1cyogUmVjb3Jk
ZWRTdGF0dXNlczo6YWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0
dXNQdHIgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOwogICAgIENhbGxMaW5r
U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgY2FsbHMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC01Myw3ICs1Myw3IEBAIENhbGxMaW5rU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2Vz
OjphZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luCiAKIEdldEJ5
SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbiwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1
dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOwor
ICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOwog
ICAgIEdldEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBnZXRzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNjEsNyArNjEsNyBAQCBHZXRCeUlkU3RhdHVzKiBSZWNvcmRl
ZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4s
CiAgICAgCiBQdXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVz
KGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHN0YXR1
cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UHV0QnlJZFN0YXR1
cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8UHV0QnlJZFN0YXR1
cz4oc3RhdHVzKTsKICAgICBQdXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7
CiAgICAgcHV0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0
dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY5LDcgKzY5LDcgQEAgUHV0QnlJZFN0
YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luLAogCiBJbkJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEluQnlJ
ZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBJbkJ5SWRTdGF0dXMm
IHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5CeUlk
U3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxJbkJ5SWRT
dGF0dXM+KHN0YXR1cyk7CiAgICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0
KCk7CiAgICAgaW5zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0
YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQuY3BwCmluZGV4IDMwYTFmMDU1MjU5ZTNkZWQxYTcxNjhlZTM1MjZmNzJjMDg0YmVlNWEu
LmZjYzI5MTE4MDI0NGUwYjMyMjllMmZkNzYzMDA3YmU3OWE4NzQxY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RydWN0dXJlU3R1YkNs
ZWFyaW5nV2F0Y2hwb2ludCogV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVS
ZWZlcmVuY2UKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uJiBrZXkpCiB7CiAgICAgaWYgKCFob2xkZXJSZWYpCi0gICAgICAgIGhv
bGRlclJlZiA9IHN0ZDo6bWFrZV91bmlxdWU8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZv
Pihjb2RlQmxvY2ssIHN0dWJJbmZvKTsKKyAgICAgICAgaG9sZGVyUmVmID0gbWFrZVVuaXF1ZTxX
YXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOwogICAg
IGVsc2UgewogICAgICAgICBBU1NFUlQoaG9sZGVyUmVmLT5tX2NvZGVCbG9jayA9PSBjb2RlQmxv
Y2spOwogICAgICAgICBBU1NFUlQoaG9sZGVyUmVmLT5tX3N0dWJJbmZvID09IHN0dWJJbmZvKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uY3BwCmluZGV4IDcyMjJkNDgyYWQxZTVlMjg2Y2VmNTlkNGZmMWUxZjVlYjA3MTA3OGQuLjQ5
MTk1ZDE1NzIxZDJjZGE0Zjc0OGFlOGRiZTJhZjAwOWEyOGE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMTYw
LDcgKzE2MCw3IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFk
ZEFjY2Vzc0Nhc2UoCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9y
cGhpY0FjY2Vzcz4gYWNjZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4o
KTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNz
ID0gbWFrZVVuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4oKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7
CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IGUwMDZkMTZiOWI4YTBmYzMwZjA0MzNjZGU2MDJl
Y2MzYjE2OGQ0MmUuLjJjOWEwYjMwMWViMDk4ZTExNWVmMWUzNmIxMjdiZTI5ZTNhYmRhMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcApAQCAtNDE0LDcgKzQxNCw3IEBAIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgVW5s
aW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KENvZGVCbG9jayogY29kCiAgICAg
ICAgIGlmICghbV9saXZlbmVzcykgewogICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBjaGFuY2Ug
dHdvIGNvbXBpbGVyIHRocmVhZHMgcmFjZWQgdG8gdGhlIHNsb3cgcGF0aC4KICAgICAgICAgICAg
IC8vIEdyYWJiaW5nIHRoZSBsb2NrIGFib3ZlIGRlZmVuZHMgYWdhaW5zdCBjb21wdXRpbmcgbGl2
ZW5lc3MgdHdpY2UuCi0gICAgICAgICAgICBtX2xpdmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KGNvZGVCbG9jayk7CisgICAgICAgICAgICBtX2xpdmVu
ZXNzID0gbWFrZVVuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KGNvZGVCbG9jayk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDQzNzA5NTE5ZWI2MTZlMjY1MTA2ZWYxZDU1
Mjk2MTdkNjQ1YzliYzkuLjUxMjUzNmMwZDQ0ODU3YTRjYTc2ZTgxM2ZlMTQ4MDNhOTczZmZhNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCkBAIC00MDIsNyArNDAyLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkgewogICAgICAgICAg
ICAgYXV0byBsb2NrZXIgPSBsb2NrRHVyaW5nTWFya2luZygqaGVhcCgpLCBjZWxsTG9jaygpKTsK
LSAgICAgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOwor
ICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGZiZWM5ZjcyY2EyZmQx
YTE4YmFjYjA3M2U2ODcyNTRiNzBiOWViZTEuLjQ5ZDlkMmZkM2U2ZmU5ZmI0YjUyN2Y2NzdhYmQ1
YmQ0YTUxMjI2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9j
a3MoVk0mIHZtKQogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQo
IW1fcmFyZURhdGEpOwotICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRh
PigpOworICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJldHVy
biAqbV9yYXJlRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGU5NzY4NmFhM2VkY2RkOGQzZjli
NTdjNGE2ZDEyM2JhYzljYjM5ODcuLjE3OGE2MWRmNjkxMzNhZmRjYzEyNzI4Y2JmZDk2ZWIzOWY0
MmFlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQwMSw3ICs0MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAg
ICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29k
ZUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2Rl
LCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCk7Cisg
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdl
bmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUs
IGVudmlyb25tZW50KTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0
b3ItPmdlbmVyYXRlKCk7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBv
cnRCeXRlY29kZUNvbXBpbGVUaW1lcygpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuaAppbmRleCBiY2Q3MmVhMDlmNWY3MTdhNjVmNjVkN2QyZWZjMTc1ZTAyM2U2
OTkwLi5lYmFiYjU5ZDQzNTlhOWUzNjRmMmNhM2FmNmFmZDBlZmQwMzkwYjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFz
cyBWTTsKIHR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKIAogY2xhc3MgSlNfRVhQT1JUX1BS
SVZBVEUgRGVidWdnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIERlYnVnZ2VyKFZNJik7CiAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCBmMjBhMzU3ZWNiNzNhYTdlZmU0Y2IxMDdkMWNjYjdlOWRjOTAwMzM5Li4yNzY1
NjkyNmE4ZDI5ZDI3ZWJlZWFhOWZmZGNhMjAzY2MyNWZhMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC01OCw3ICs1OCw3IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpBYnN0cmFjdEludGVycHJldGVyKEdyYXBoJiBncmFwaCwgQWJzdHJhCiAgICAgLCBtX3N0YXRl
KHN0YXRlKQogewogICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgIG1fcGhp
Q2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKKyAgICAg
ICAgbV9waGlDaGlsZHJlbiA9IG1ha2VVbmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMzJhMmM5MDQ5ZmVkNmY4MmM2YWJhNDA3Njc2NmJmNDI5
YjEzOTM4My4uMDg3NGVhNzFjYmRlYjdjNjFmZTVhMDhlMDU1MmIwYjM3YjRiMTM2YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgR3JhcGg6
OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9j
b2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaygpKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29k
ZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxT
U0FDRkc+KCp0aGlzKSkKKyAgICAsIG1fc3NhQ0ZHKG1ha2VVbmlxdWU8U1NBQ0ZHPigqdGhpcykp
CiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwoMCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZv
cmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0
YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTg2LDggKzg2LDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwg
UGxhbiYgcGxhbikKICAgICAKICAgICBtX2hhc0RlYnVnZ2VyRW5hYmxlZCA9IG1fcHJvZmlsZWRC
bG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IE9wdGlvbnM6OmZvcmNl
RGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24oKTsKICAgICAKLSAgICBtX2luZGV4aW5nQ2FjaGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dJbmRleGluZz4oKnRoaXMpOwotICAgIG1fYWJzdHJhY3RW
YWx1ZXNDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRo
aXMpOworICAgIG1faW5kZXhpbmdDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd0luZGV4aW5nPigqdGhp
cyk7CisgICAgbV9hYnN0cmFjdFZhbHVlc0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93TWFwPEFic3Ry
YWN0VmFsdWU+PigqdGhpcyk7CiAKICAgICByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJ1Y3R1cmVT
dHJ1Y3R1cmUuZ2V0KCkpOwogICAgIHRoaXMtPnN0cmluZ1N0cnVjdHVyZSA9IHJlZ2lzdGVyU3Ry
dWN0dXJlKHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CkBAIC0xMDgwLDcgKzEwODAsNyBAQCBG
dWxsQnl0ZWNvZGVMaXZlbmVzcyYgR3JhcGg6OmxpdmVuZXNzRm9yKENvZGVCbG9jayogY29kZUJs
b2NrKQogICAgIGlmIChpdGVyICE9IG1fYnl0ZWNvZGVMaXZlbmVzcy5lbmQoKSkKICAgICAgICAg
cmV0dXJuICppdGVyLT52YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVj
b2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsQnl0ZWNvZGVMaXZl
bmVzcz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxpdmVu
ZXNzID0gbWFrZVVuaXF1ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKICAgICBjb2RlQmxvY2st
PmxpdmVuZXNzQW5hbHlzaXMoKS5jb21wdXRlRnVsbExpdmVuZXNzKGNvZGVCbG9jaywgKmxpdmVu
ZXNzKTsKICAgICBGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0ID0gKmxpdmVuZXNzOwogICAg
IG1fYnl0ZWNvZGVMaXZlbmVzcy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGxpdmVuZXNzKSk7CkBA
IC0xMDk4LDcgKzEwOTgsNyBAQCBCeXRlY29kZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3IoQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUtpbGxzLmVuZCgpKQog
ICAgICAgICByZXR1cm4gKml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUtpbGxzPiBraWxscyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVLaWxscz4ga2lsbHMgPSBtYWtlVW5pcXVlPEJ5
dGVjb2RlS2lsbHM+KCk7CiAgICAgY29kZUJsb2NrLT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0
ZUtpbGxzKGNvZGVCbG9jaywgKmtpbGxzKTsKICAgICBCeXRlY29kZUtpbGxzJiByZXN1bHQgPSAq
a2lsbHM7CiAgICAgbV9ieXRlY29kZUtpbGxzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUoa2lsbHMp
KTsKQEAgLTE1MzYsNyArMTUzNiw3IEBAIENQU0NGRyYgR3JhcGg6OmVuc3VyZUNQU0NGRygpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lv
bik7CiAgICAgaWYgKCFtX2Nwc0NGRykKLSAgICAgICAgbV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5p
cXVlPENQU0NGRz4oKnRoaXMpOworICAgICAgICBtX2Nwc0NGRyA9IG1ha2VVbmlxdWU8Q1BTQ0ZH
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc0NGRzsKIH0KIApAQCAtMTU0NCw3ICsxNTQ0LDcg
QEAgQ1BTRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwogICAg
IGlmICghbV9jcHNEb21pbmF0b3JzKQotICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNEb21pbmF0b3Jz
ID0gbWFrZVVuaXF1ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc0Rv
bWluYXRvcnM7CiB9CiAKQEAgLTE1NTIsNyArMTU1Miw3IEBAIFNTQURvbWluYXRvcnMmIEdyYXBo
OjplbnN1cmVTU0FEb21pbmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0g
U1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOwogICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQot
ICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+
KCp0aGlzKTsKKyAgICAgICAgbV9zc2FEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxTU0FEb21pbmF0
b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAKQEAgLTE1NjEs
NyArMTU2MSw3IEBAIENQU05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29w
cygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVy
c2lvbik7CiAgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOwogICAgIGlmICghbV9jcHNOYXR1cmFs
TG9vcHMpCi0gICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNO
YXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBtYWtlVW5p
cXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9v
cHM7CiB9CiAKQEAgLTE1NzAsNyArMTU3MCw3IEBAIFNTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVu
c3VyZVNTQU5hdHVyYWxMb29wcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7
CiAgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMp
Ci0gICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFs
TG9vcHM+KCp0aGlzKTsKKyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPFNT
QU5hdHVyYWxMb29wcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9
CiAKQEAgLTE1NzksNyArMTU3OSw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3
YXJkc0NGRygpCiAgICAgLy8gV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVy
ZSB0byB3b3JrIG92ZXIgQ1BTLCBidXQgdG9kYXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4KICAg
ICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJkc0NG
RykKLSAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NG
Rz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRz
Q0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIApAQCAtMTU4Nyw3
ICsxNTg3LDcgQEAgQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0Rv
bWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlm
ICghbV9iYWNrd2FyZHNEb21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAg
bV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigq
dGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE1OTUs
NyArMTU5NSw3IEBAIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJlQ29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9
PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKLSAgICAgICAg
bV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKKyAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VB
bmFseXNpcyA9IG1ha2VVbmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsK
ICAgICByZXR1cm4gKm1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNjM5MDQzZTllMjdm
YmUwZTBiOTJhYjQ2YTY2OWJlMTQxMDUwMzM3MC4uZjJiNjY0MDJlM2FkMGU3MmRmY2UwNWI2NWFm
M2ZjOTI2ZDAwOWRhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgSklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBo
JiBkZmcpCiAgICAgLCBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcihkZmcubV92bSkKIHsKICAg
ICBpZiAoVU5MSUtFTFkoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgbV9ncmFwaC5tX3ZtLm1f
cGVyQnl0ZWNvZGVQcm9maWxlcikpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxEaXNhc3NlbWJsZXI+KGRmZyk7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFr
ZVVuaXF1ZTxEaXNhc3NlbWJsZXI+KGRmZyk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgbV9q
aXRDb2RlLT50aWVyVXBJbkxvb3BIaWVyYXJjaHkgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnRp
ZXJVcEluTG9vcEhpZXJhcmNoeSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIHRpZXJVcEJ5dGVjb2Rl
IDogbV9ncmFwaC5tX3BsYW4udGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMoKSkKQEAgLTM0Myw3
ICszNDMsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
CiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFw
cGluZygpKQotICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjpt
YWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFw
QnVpbGRlciksIGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2Rl
T3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXIpLCBsaW5rQnVmZmVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRT
dGFja092ZXJmbG93Q2hlY2soSklUQ29tcGlsZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0JiBzdGFja092ZXJmbG93KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGUoKQogCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsK
LSAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRo
aXMpOworICAgIG1fc3BlY3VsYXRpdmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhp
cyk7CiAKICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFp
bGFibGUgaW4gdGhlIEpTU3RhY2suCiAgICAgSnVtcExpc3Qgc3RhY2tPdmVyZmxvdzsKQEAgLTQw
Miw5ICs0MDIsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBtX3NwZWN1bGF0
aXZlLT5jcmVhdGVPU1JFbnRyaWVzKCk7CiAgICAgc2V0RW5kT2ZDb2RlKCk7CiAKLSAgICBhdXRv
IGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVC
bG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtl
VW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5G
YWlsKTsKICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAg
ICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5h
bGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFs
aXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlKCkKIAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAotICAgIG1f
Z3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4o
CisgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVy
PigKICAgICAgICAgbV9ncmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBX
VEZNb3ZlKGxpbmtCdWZmZXIpKSk7CiB9CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWco
KTsKIAogICAgIC8vID09PSBGdW5jdGlvbiBib2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KLSAgICBt
X3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwor
ICAgIG1fc3BlY3VsYXRpdmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAg
ICAgY29tcGlsZUJvZHkoKTsKICAgICBzZXRFbmRPZk1haW5QYXRoKCk7CiAKQEAgLTUwNyw5ICs1
MDcsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIHNldEVuZE9m
Q29kZSgpOwogCiAgICAgLy8gPT09IExpbmsgPT09Ci0gICAgYXV0byBsaW5rQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0
aW9uQ2FuRmFpbCk7CisgICAgYXV0byBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVy
PigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxp
bmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4u
c2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1f
cGxhbikpOworICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxG
YWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgbGluaygqbGlua0J1ZmZlcik7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRy
eVB0clRhZz4oYXJpdHlDaGVjayk7CiAKLSAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIo
c3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZp
bmFsaXplcihtYWtlVW5pcXVlPEpJVEZpbmFsaXplcj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFu
LCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFy
aXR5Q2hlY2spKTsKIH0KIApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQqIEpJVENvbXBpbGVyOjph
ZGRyZXNzT2ZEb3VibGVDb25zdGFudChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gaXQtPnNl
Y29uZDsKIAogICAgIGlmICghbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cykKLSAgICAgICAgbV9n
cmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFnPGRvdWJsZT4+KCk7
CisgICAgICAgIG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMgPSBtYWtlVW5pcXVlPEJhZzxkb3Vi
bGU+PigpOwogCiAgICAgZG91YmxlKiBhZGRyZXNzSW5Db25zdGFudFBvb2wgPSBtX2dyYXBoLm1f
ZG91YmxlQ29uc3RhbnRzLT5hZGQoKTsKICAgICAqYWRkcmVzc0luQ29uc3RhbnRQb29sID0gdmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5h
bHlzaXNQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5h
bHlzaXNQaGFzZS5jcHAKaW5kZXggYmI4MDAyNzRkZGNiNjMwMzQ3ODM3MzdlMzhhZDFlNjFlOWM1
ZWEwNC4uYTk0NDA0NzQ1OTI1MjE4NDViYTMxODgzN2IxM2I5ZjRhMzE3ZWYzMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNl
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBMaXZlbmVzc0FuYWx5c2lzUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAsIG1fbGl2ZUF0VGFpbChtX2dyYXBoKQogICAgIHsKICAgICAg
ICAgbV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPnJlY29tcHV0ZSgpOwotICAgICAgICBtX3dvcmtz
ZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5u
dW1JbmRpY2VzKCkpOworICAgICAgICBtX3dvcmtzZXQgPSBtYWtlVW5pcXVlPFdvcmtzZXQ+KG1f
Z3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1JbmRpY2VzKCkpOwogICAgIH0KIAogICAgIGJvb2wg
cnVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IDRkYmNlZThhNmJi
MmRjMzhkZmM1MDVkYmNhYjZlMzlmYzBlMjc2ZjIuLjA3ODMwZWQyZjVlODE2NjQ4OGI5MWFkYzUy
YTcxOTJkYjI4YzEzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAt
Mjk2LDcgKzI5Niw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJl
YWRJbXBsKCkKICAgICBpZiAobV9tb2RlID09IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAgICAg
ICBib29sIHJlc3VsdCA9IHBlcmZvcm1PU1JFbnRyeXBvaW50Q3JlYXRpb24oZGZnKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0g
bWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBG
YWlsUGF0aDsKICAgICAgICAgfQogICAgICAgICBSVU5fUEhBU0UocGVyZm9ybUNQU1JldGhyZWFk
aW5nKTsKQEAgLTM5Nyw3ICszOTcsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29t
cGlsZUluVGhyZWFkSW1wbCgpCiAgICAgY2FzZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICNpZiBF
TkFCTEUoRlRMX0pJVCkKICAgICAgICAgaWYgKEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6
Q2Fubm90Q29tcGlsZSkgewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBt
YWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZh
aWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIFBsYW46OkNv
bXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICAgICAgUlVOX1BI
QVNFKHBlcmZvcm1XYXRjaHBvaW50Q29sbGVjdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAo
RlRMOjpjYW5Db21waWxlKGRmZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAg
ICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7
CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigq
dGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCmlu
ZGV4IDg3MTU5NWIxZmYyNTliZWU0NGM3MWNlMDNkN2Q4ZThiZDY0MzY1MzcuLjUzNGQ2NGI1Mzhm
YTE4MGFmNDhlODlkNGY4MjYwMmZiNDVjOTIxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBA
QCBjbGFzcyBTU0FDb252ZXJzaW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
YmxvY2stPnZhcmlhYmxlc0F0VGFpbC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVl
c0F0SGVhZC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigp
OwotICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6
U1NBRGF0YT4oYmxvY2spOworICAgICAgICAgICAgYmxvY2stPnNzYSA9IG1ha2VVbmlxdWU8QmFz
aWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogZW50cnlwb2ludEluZGV4VG9Bcmd1bWVudHNCbG9jaykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDdjZjQyNTIx
YTYyMTE3OGZmODUxMmFmZjlmZmZhMzI1MjAwMjI0ZDYuLmNkY2RhYTYwZDg5OGEzYjY2ZDdiMjk4
ZjY2ODE4Yzc5ZGM0OGM4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgc3RkOjp1bmlx
dWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgU3BpbGxSZWdpc3Rl
cnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwK
ICAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4o
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2Vu
ZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+
KAogICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCBy
ZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRGVzdGluYXRpb25UeXBlLCB0eXBlbmFtZSBTb3Vy
Y2VUeXBlLCB1bnNpZwogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGhNb3ZlKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFNv
dXJjZVR5cGUgc291cmNlW251bWJlck9mQXNzaWdubWVudHNdLCBEZXN0aW5hdGlvblR5cGUgZGVz
dGluYXRpb25bbnVtYmVyT2ZBc3NpZ25tZW50c10pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlw
ZSwgU291cmNlVHlwZSwgbnVtYmVyT2ZBc3NpZ25tZW50cz4+KAorICAgIHJldHVybiBtYWtlVW5p
cXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUs
IFNvdXJjZVR5cGUsIG51bWJlck9mQXNzaWdubWVudHM+PigKICAgICAgICAgZnJvbSwgaml0LCBk
ZXN0aW5hdGlvbiwgc291cmNlKTsKIH0KIApAQCAtMjQ5LDcgKzI0OSw3IEBAIGlubGluZSBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBTb3Vy
Y2VUeXBlIHNvdXJjZUFycmF5WzFdID0geyBzb3VyY2UgfTsKICAgICBEZXN0aW5hdGlvblR5cGUg
ZGVzdGluYXRpb25BcnJheVsxXSA9IHsgZGVzdGluYXRpb24gfTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRp
b25UeXBlLCBTb3VyY2VUeXBlLCAxPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5n
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwg
MT4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsK
IH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5WzJd
ID0geyBzb3VyY2UxLCBzb3VyY2UyIH07CiAgICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0aW9u
QXJyYXlbMl0gPSB7IGRlc3RpbmF0aW9uMSwgZGVzdGluYXRpb24yIH07Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3Rp
bmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMj4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2ln
bmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5
cGUsIDI+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJh
eSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggMmFiY2RiM2ZkNWY5NzBmM2ZiYjkwZDNiMGY2ZTNjZDlkNDBmY2UzNy4uMDM5
YTQ2YTc1ODYxMDQ4Yzg1ZjAzMjgyYTI2ZmVhZmI3ZWY5YmU0MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3Vs
dEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZQogICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0aGF0
IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0J3MKICAgICAvLyB3
aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVz
IG1lLiBJdCdzIGEgbG90CiAgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9m
IGZ1bmN0aW9uYWxpdHkuIDotLwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0
b3I+KAogICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVz
dWx0R1BSLCBzdG9yYWdlR1BSLAogICAgICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOwog
CkBAIC04OTksNyArODk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSog
bm9kZSwgR1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBwcm9wZXJ0eVJlZykKICAgICAgICAgc2xvd1Bh
dGguYXBwZW5kKGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJy
YXlNb2RlKCkpKTsKICAgICB9CiAgICAgCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihtYWtlVW5pcXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93UGF0aCwgdGhpcywgbm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHRlbXBHUFIsIHN0cnVj
dHVyZUdQUikpOwogICAgIAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwpAQCAtMjI0Miwx
MCArMjI0MiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmlu
ZyhOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAgICAgIGlmIChwcm90b3R5cGVDaGFpbklzU2Fu
ZSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigK
KyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmluZ0dl
dEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0
aGlzLCBKU1ZhbHVlUmVncyhzY3JhdGNoUmVnKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNl
bHNlCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNh
bmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0
b3I+KAogICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhyZXN1
bHRUYWdSZWcsIHNjcmF0Y2hSZWcpLAogICAgICAgICAgICAgICAgIGJhc2VSZWcsIHByb3BlcnR5
UmVnKSk7CiAjZW5kaWYKQEAgLTc2MTksNyArNzYxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCByZXN1bHRH
UFIsIHN0cnVjdHVyZSwKICAgICAgICAgICAgICAgICBrbm93bkxlbmd0aCwgbWluQ2FwYWNpdHkp
KTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAg
YXV0byBnZW5lcmF0b3IgPSBtYWtlVW5pcXVlPENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93
UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgcmVzdWx0R1BSLCBz
dHJ1Y3R1cmUsIGxlbmd0aEdQUiwgbWluQ2FwYWNpdHkpOwogICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihXVEZNb3ZlKGdlbmVyYXRvcikpOwogICAgIH0KQEAgLTg0MzksNyArODQzOSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9j
YXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigK
KyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0
b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJl
c3VsdEdQUiwgdGVtcFZhbHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSKSk7CiAgICAgfQog
CkBAIC05MTM1LDcgKzkxMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJl
Q2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGNlbGxHUFIsIEdQUlJlZyB0ZW1wRwogICAgICAgICBH
UFJSZWcgc3RydWN0dXJlR1BSOwogICAgICAgICAKICAgICAgICAgaWYgKHRlbXBHUFIgPT0gSW52
YWxpZEdQUlJlZykgewotICAgICAgICAgICAgc3RydWN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxH
UFJUZW1wb3Jhcnk+KHRoaXMpOworICAgICAgICAgICAgc3RydWN0dXJlID0gbWFrZVVuaXF1ZTxH
UFJUZW1wb3Jhcnk+KHRoaXMpOwogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJl
LT5ncHIoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSB0ZW1w
R1BSOwpAQCAtMTMxNzYsNyArMTMxNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAg
ICAgbV9qaXQubXV0YXRvckZlbmNlKCptX2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6
ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVl
PENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0
R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsCiAgICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVU
b0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4
IGZhMzk2ZjRmMTkyYThiYjRhZWY5OWQwMzcxOTI0YTJhMzhjNjQ1ZTguLmJhNjEyOGVmZTliYjM2
OGZlM2IwNjYyM2I1MWVlM2VlYWQzYzRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC05
NSw4ICs5NSw4IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgY2FzZSBQaGFzZU1vZGU6Okdsb2JhbDogewogICAgICAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogCi0gICAg
ICAgICAgICBtX3N0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0ZT4o
bV9ncmFwaCk7Ci0gICAgICAgICAgICBtX2ludGVycHJldGVyID0gc3RkOjptYWtlX3VuaXF1ZTxB
YnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3Rh
dGUpOworICAgICAgICAgICAgbV9zdGF0ZSA9IG1ha2VVbmlxdWU8SW5QbGFjZUFic3RyYWN0U3Rh
dGU+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IG1ha2VVbmlxdWU8QWJz
dHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0YXRl
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pc0NvbnZlcmdlZCA9IGZhbHNlOwogICAg
ICAgICAgICAgCkBAIC0xMDcsOCArMTA3LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgLy8gdG93YXJkcyBiZWxpZXZpbmcg
dGhhdCBhbGwgbm9kZXMgbmVlZCBiYXJyaWVycy4gIk5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtl
CiAgICAgICAgICAgICAvLyBzYXlpbmcgdGhhdCB0aGUgbm9kZSBpcyBpbiBhIHBhc3QgZXBvY2gu
ICJOb3QgbmVlZGluZyBhIGJhcnJpZXIiIGlzIGxpa2Ugc2F5aW5nCiAgICAgICAgICAgICAvLyB0
aGF0IHRoZSBub2RlIGlzIGluIHRoZSBjdXJyZW50IGVwb2NoLgotICAgICAgICAgICAgbV9zdGF0
ZUF0SGVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dy
YXBoKTsKLSAgICAgICAgICAgIG1fc3RhdGVBdFRhaWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2Nr
TWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFwaCk7CisgICAgICAgICAgICBtX3N0YXRlQXRIZWFk
ID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAg
ICAgICAgbV9zdGF0ZUF0VGFpbCA9IG1ha2VVbmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+
PihtX2dyYXBoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQmxvY2tMaXN0IHBvc3RPcmRl
ciA9IG1fZ3JhcGguYmxvY2tzSW5Qb3N0T3JkZXIoKTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAppbmRleCBlNmMyMjIxZWUzMDE1NDRjNzJh
OWNlODM1Zjk4MGZmMzZmMDI0YjdkLi44ZjkzMDM0YjBjNmY5MGJhNjZmNGJmNWM1M2JlMWI0ZjBm
YmE3NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAt
MTUwLDcgKzE1MCw3IEBAIGNsYXNzIFdvcmtsaXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1dG9t
YXRpY1RocmVhZCB7CiAgICAgICAgIGlmIChtX3JlbGF0aXZlUHJpb3JpdHkpCiAgICAgICAgICAg
ICBUaHJlYWQ6OmN1cnJlbnQoKS5jaGFuZ2VQcmlvcml0eShtX3JlbGF0aXZlUHJpb3JpdHkpOwog
ICAgICAgICAKLSAgICAgICAgbV9jb21waWxhdGlvblNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxD
b21waWxhdGlvblNjb3BlPigpOworICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBtYWtlVW5p
cXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdGhyZWFkSXNT
dG9wcGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYpIG92ZXJyaWRlCkBAIC0yMTQsNyArMjE0LDcg
QEAgdm9pZCBXb3JrbGlzdDo6ZmluaXNoQ3JlYXRpb24odW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRz
LCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIAogdm9pZCBXb3JrbGlzdDo6Y3JlYXRlTmV3VGhyZWFk
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWREYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxU
aHJlYWREYXRhPih0aGlzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9
IG1ha2VVbmlxdWU8VGhyZWFkRGF0YT4odGhpcyk7CiAgICAgZGF0YS0+bV90aHJlYWQgPSBhZG9w
dFJlZihuZXcgVGhyZWFkQm9keShsb2NrZXIsICp0aGlzLCAqZGF0YSwgbV9sb2NrLCBtX3BsYW5F
bnF1ZXVlZC5jb3B5UmVmKCksIHJlbGF0aXZlUHJpb3JpdHkpKTsKICAgICBtX3RocmVhZHMuYXBw
ZW5kKFdURk1vdmUoZGF0YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rp
c2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCmluZGV4IDE5YjExNWM5ZmRkNjdjYmM4YWUxMDlj
NjQ0NTc0MjhiYTNhZGZhNTMuLjAwYmRhNjU3Mjc5Y2Y3YTk5ZGJhYjE0OWIwOWM3MDNkNjhiMzVi
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNz
ZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBBc3luY2hyb25vdXNEaXNhc3NlbWJsZXIm
IGFzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlcigpCiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3Vz
bHkoCiAgICAgY29uc3QgQ1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUmVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciog
cHJlZml4KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPERpc2Fzc2VtYmx5VGFzaz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGlzYXNzZW1ibHlUYXNrPiB0YXNrID0gbWFrZVVuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CiAg
ICAgdGFzay0+aGVhZGVyID0gc3RyZHVwKGhlYWRlci5kYXRhKCkpOyAvLyBZdWNrISBXZSBuZWVk
IHRoaXMgYmVjYXVzZSBDU3RyaW5nIGRvZXMgcmFjeSByZWZjb3VudGluZy4KICAgICB0YXNrLT5j
b2RlUmVmID0gY29kZVJlZjsKICAgICB0YXNrLT5zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAppbmRleCA5MGFlMmY0ZmUwNmExNTJj
YWU1Nzg1ZTJjMDNjOTk5YjY4MzJiYzFiLi5lYzgwZWE2N2IyNTZmODkxOGQ0ODgzYThjNTJiOGYz
Nzk1ODNhYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXAuY3BwCkBAIC0xNTcsMTEgKzE1NywxMSBAQCBjb25zdCBBYnN0cmFjdEhlYXAmIEluZGV4ZWRB
YnN0cmFjdEhlYXA6OmF0U2xvdyhwdHJkaWZmX3QgaW5kZXgpCiAgICAgQVNTRVJUKHN0YXRpY19j
YXN0PHNpemVfdD4oaW5kZXgpID49IG1fc21hbGxJbmRpY2VzLnNpemUoKSk7CiAgICAgCiAgICAg
aWYgKFVOTElLRUxZKCFtX2xhcmdlSW5kaWNlcykpCi0gICAgICAgIG1fbGFyZ2VJbmRpY2VzID0g
c3RkOjptYWtlX3VuaXF1ZTxNYXBUeXBlPigpOworICAgICAgICBtX2xhcmdlSW5kaWNlcyA9IG1h
a2VVbmlxdWU8TWFwVHlwZT4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBYnN0cmFjdEhlYXA+
JiBmaWVsZCA9IG1fbGFyZ2VJbmRpY2VzLT5hZGQoaW5kZXgsIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKICAgICBpZiAoIWZpZWxkKSB7Ci0gICAgICAgIGZpZWxkID0gc3RkOjptYWtlX3VuaXF1
ZTxBYnN0cmFjdEhlYXA+KCk7CisgICAgICAgIGZpZWxkID0gbWFrZVVuaXF1ZTxBYnN0cmFjdEhl
YXA+KCk7CiAgICAgICAgIGluaXRpYWxpemUoKmZpZWxkLCBpbmRleCk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA1ZDA0YjcyZjA0ODMxZDA2
MzAyMzA0ZDFlYjdlNDkyOWQ0ODA0MjdmLi40NjM1Y2M5NmY5MTA5MWY3M2YwOGQxZjc1MmIwNDdk
MTA1M2JmYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1
bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICBWTSYgdm0gPSBncmFwaC5tX3ZtOwogCiAgICAgaWYg
KHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQotICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0
RGlzYXNzZW1ibGVyKHN0ZDo6bWFrZV91bmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsK
KyAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIz
OjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAKICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50
IHNhZmVwb2ludChzdGF0ZS5ncmFwaCwgc2FmZXBvaW50UmVzdWx0KTsKQEAgLTc4LDcgKzc4LDcg
QEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2lu
dFJlc3VsdCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdp
c3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJPZmZzZXRzID0KLSAgICAgICAgc3RkOjptYWtlX3Vu
aXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVy
QXRPZmZzZXRMaXN0KCkpOworICAgICAgICBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0
PihzdGF0ZS5wcm9jLT5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CiAgICAgaWYg
KHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBm
b3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAi
OiAiLCAqcmVnaXN0ZXJPZmZzZXRzLCAiXG4iKTsKICAgICBjb2RlQmxvY2stPnNldENhbGxlZVNh
dmVSZWdpc3RlcnMoV1RGTW92ZShyZWdpc3Rlck9mZnNldHMpKTsKQEAgLTE0Miw3ICsxNDIsNyBA
QCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50
UmVzdWx0KQogICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4obG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKIAot
ICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAg
c3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVy
PihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIAogICAgIGlmIChzdGF0
ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAg
ICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CkBAIC0xNTEsNyArMTUxLDcgQEAg
dm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJl
c3VsdCkKICAgICAKICAgICBCMzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9j
LT5yZWxlYXNlUENUb09yaWdpbk1hcCgpOwogICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0Nv
ZGVPcmlnaW5NYXBwaW5nKCkpCi0gICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5N
YXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVM
aW5rQnVmZmVyKSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFr
ZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBX
VEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7
CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiBsYWJlbCA9IHN0YXRlLmZp
bmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihzdGF0
ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwoMCkpOwogICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9u
ID0gbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcAppbmRleCAxNjUzMzUw
OWNkMGI0ODJjNzRiY2E2NzMxODc2M2YyZTBmMDlkZGYxLi5jM2Y5MzM5MmYyNmU2ZmM5NWY5YzJj
YzU5MjllZDM0YzZiYzMwYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEZhaWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIERGRzsKIAogdm9pZCBmYWlsKFN0YXRl
JiBzdGF0ZSkKIHsKLSAgICBzdGF0ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFr
ZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3BsYW4pKTsKKyAgICBzdGF0
ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihz
dGF0ZS5ncmFwaC5tX3BsYW4pKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggMDg1NDA1NmVjN2QxNjJiMTFjZGMy
MWNkNzhmZTE1MTdmN2FjZjNlYi4uOTVkYjY5NjFlOGU5MDc3MGNkNmU1NTY3MzAyMmI0NDc2M2I1
ODA2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC0xNjYsNyArMTY2
LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIGppdC51bnRhZ1JldHVy
bkFkZHJlc3MoKTsKICAgICAgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkp
OwogCi0gICAgICAgICAgICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVy
PihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgICAgIGxp
bmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21w
aWxhdGlvbkNhbkZhaWwpOwogICAgICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0Fs
bG9jYXRlKCkpIHsKICAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgbWFpblBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAg
Ci0gICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGppdCwg
Y29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgICAgICBsaW5rQnVmZmVyID0g
bWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5G
YWlsKTsKICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAg
ICAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmlu
ZGV4IGFmMWJhNGJmOTBhOGZkMGJhMjUwMmM2NDdlMmMxNzE0MTIyZGU3ZDQuLjA5YjM0MjczY2Ji
N2NhYjQ0Y2Q4NjNlOTliMjg1OTBlODdjOTRiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE1MDgwLDcgKzE1MDgwLDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZl
ci5saW5rKGdlbmVyYXRvckp1bXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4odm0tPmdldENUSVN0dWIobGF6eVNs
b3dQYXRoR2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8
TGF6eVNsb3dQYXRoPigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGF6eVNsb3dQYXRoPiBsYXp5U2xvd1BhdGggPSBtYWtlVW5pcXVlPExhenlTbG93
UGF0aD4oKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmtlZFBh
dGNoYWJsZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KGxpbmtCdWZm
ZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVKdW1wKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKaW5kZXggNjUzZWM2ZjY5NjA0OWI3NTJhYzI0
YTc3OTMxMGQ0YWQ5N2JiMDNkYi4uNGE0ODRmYTZkNDY0MzBkNzFlNTcwMDhiZjFlOTlmNmMyNWI4
NDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTYwLDEwICs2
MCwxMCBAQCBTdGF0ZTo6U3RhdGUoR3JhcGgmIGdyYXBoKQogICAgICAgICBicmVhazsKICAgICB9
CiAKLSAgICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmlu
YWxpemVyPihncmFwaC5tX3BsYW4pKTsKKyAgICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1h
a2VVbmlxdWU8SklURmluYWxpemVyPihncmFwaC5tX3BsYW4pKTsKICAgICBmaW5hbGl6ZXIgPSBz
dGF0aWNfY2FzdDxKSVRGaW5hbGl6ZXIqPihncmFwaC5tX3BsYW4uZmluYWxpemVyKCkpOwogCi0g
ICAgcHJvYyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2VkdXJlPigpOworICAgIHByb2MgPSBtYWtl
VW5pcXVlPFByb2NlZHVyZT4oKTsKIAogICAgIHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAgICAg
ICAgIFtdIChQcmludFN0cmVhbSYgb3V0LCBCMzo6T3JpZ2luIG9yaWdpbikgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRleCAyMmQ3ZmQ2
NWQ1YTE3NTViNWIyZDNiNzhkZGE1NWMwZDAwN2UxY2NiLi4wMjFiMGNkYjlkZmFjMThiMzY4NjQy
OGE5ODIzZjI4MTEwYmI3OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db21wbGV0ZVN1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b21wbGV0ZVN1YnNwYWNlLmNwcApAQCAtODAsNyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVT
dWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICAgICAgZGF0YUxvZygi
Q3JlYXRpbmcgQmxvY2tEaXJlY3RvcnkvTG9jYWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwg
IiwgYXR0cmlidXRlcygpLCAiLCAiLCBzaXplQ2xhc3MsICIuXG4iKTsKICAgICAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9yeSA9Ci0gICAgICAgIHN0
ZDo6bWFrZV91bmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3Mp
OworICAgICAgICBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6
ZUNsYXNzKTsKICAgICBCbG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0b3J5
LmdldCgpOwogICAgIG1fZGlyZWN0b3JpZXMuYXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0b3J5
KSk7CiAgICAgCkBAIC04OCw3ICs4OCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjph
bGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3Rv
cnkobG9ja2VyLCBkaXJlY3RvcnkpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbEFs
bG9jYXRvcj4gdW5pcXVlTG9jYWxBbGxvY2F0b3IgPQotICAgICAgICBzdGQ6Om1ha2VfdW5pcXVl
PExvY2FsQWxsb2NhdG9yPihkaXJlY3RvcnkpOworICAgICAgICBtYWtlVW5pcXVlPExvY2FsQWxs
b2NhdG9yPihkaXJlY3RvcnkpOwogICAgIExvY2FsQWxsb2NhdG9yKiBsb2NhbEFsbG9jYXRvciA9
IHVuaXF1ZUxvY2FsQWxsb2NhdG9yLmdldCgpOwogICAgIG1fbG9jYWxBbGxvY2F0b3JzLmFwcGVu
ZChXVEZNb3ZlKHVuaXF1ZUxvY2FsQWxsb2NhdG9yKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCmluZGV4IGEwMWI1YTJiNGFlZmQzZTUyOTY5NzdhNWM4Mzg0MDQyZTVhMjk1
NmEuLjk3MTk5ZTE4NmRlNzJkNzcyNzk3MzVjOWQzYzk5NDBjODVjNDhhZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0yODksMTUgKzI4OSwxNSBAQCBIZWFwOjpIZWFwKFZN
KiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0ZXNQ
ZXJDeWNsZSkKICAgICAsIG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwg
bV9vYmplY3RTcGFjZSh0aGlzKQotICAgICwgbV9tYWNoaW5lVGhyZWFkcyhzdGQ6Om1ha2VfdW5p
cXVlPE1hY2hpbmVUaHJlYWRzPigpKQotICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihzdGQ6
Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIkMiKSkKLSAgICAsIG1fbXV0YXRvclNs
b3RWaXNpdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQotICAg
ICwgbV9tdXRhdG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkp
Ci0gICAgLCBtX3JhY2VNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4o
KSkKLSAgICAsIG1fY29uc3RyYWludFNldChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtpbmdDb25zdHJh
aW50U2V0PigqdGhpcykpCisgICAgLCBtX21hY2hpbmVUaHJlYWRzKG1ha2VVbmlxdWU8TWFjaGlu
ZVRocmVhZHM+KCkpCisgICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8U2xv
dFZpc2l0b3I+KCp0aGlzLCAiQyIpKQorICAgICwgbV9tdXRhdG9yU2xvdFZpc2l0b3IobWFrZVVu
aXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJNIikpCisgICAgLCBtX211dGF0b3JNYXJrU3RhY2so
bWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fcmFjZU1hcmtTdGFjayhtYWtl
VW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9jb25zdHJhaW50U2V0KG1ha2VVbmlx
dWU8TWFya2luZ0NvbnN0cmFpbnRTZXQ+KCp0aGlzKSkKICAgICAsIG1faGFuZGxlU2V0KHZtKQot
ICAgICwgbV9jb2RlQmxvY2tzKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQotICAg
ICwgbV9qaXRTdHViUm91dGluZXMoc3RkOjptYWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNldD4o
KSkKKyAgICAsIG1fY29kZUJsb2NrcyhtYWtlVW5pcXVlPENvZGVCbG9ja1NldD4oKSkKKyAgICAs
IG1faml0U3R1YlJvdXRpbmVzKG1ha2VVbmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCiAgICAg
LCBtX3ZtKHZtKQogICAgIC8vIFdlIHNlZWQgd2l0aCAxMG1zIHNvIHRoYXQgR0NBY3Rpdml0eUNh
bGxiYWNrOjpkaWRBbGxvY2F0ZSBkb2Vzbid0IGNvbnRpbnVvdXNseSAKICAgICAvLyBzY2hlZHVs
ZSB0aGUgdGltZXIgaWYgd2UndmUgbmV2ZXIgZG9uZSBhIGNvbGxlY3Rpb24uCkBAIC0zMDUsOCAr
MzA1LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9l
ZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1l
cih0aGlzKSkKICAgICAsIG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBl
cih0aGlzKSkpCiAgICAgLCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3Rv
cElmTmVjZXNzYXJ5VGltZXIodm0pKSkKLSAgICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNr
KHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3NoYXJlZE11dGF0
b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1f
c2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisg
ICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4o
KSkKICAgICAsIG1faGVscGVyQ2xpZW50KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJl
YWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRv
bWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQpAQCAtMzE0LDcgKzMxNCw3IEBAIEhlYXA6
OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUo
MCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkcyA9
IGhlYXBIZWxwZXJQb29sKCkubnVtYmVyT2ZUaHJlYWRzKCk7IGkgPCBudW1iZXJPZlBhcmFsbGVs
VGhyZWFkczsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlz
aXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAi
LCBpICsgMSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0b3Ig
PSBtYWtlVW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEpKTsK
ICAgICAgICAgaWYgKE9wdGlvbnM6Om9wdGltaXplUGFyYWxsZWxTbG90VmlzaXRvcnNGb3JTdG9w
cGVkTXV0YXRvcigpKQogICAgICAgICAgICAgdmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0
YXRvcigpOwogICAgICAgICBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVuZCh2
aXNpdG9yLmdldCgpKTsKQEAgLTMyMywxNyArMzIzLDE3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICAKICAgICBpZiAoT3B0aW9uczo6dXNlQ29uY3VycmVudEdD
KCkpIHsKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1bGVy
KCkpCi0gICAgICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvY2hhc3Rp
Y1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2NoZWR1
bGVyID0gbWFrZVVuaXF1ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRo
aXMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9z
Y2hlZHVsZXIgPSBtYWtlVW5pcXVlPFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsK
ICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSBzaW11bGF0ZSB0dXJuaW5nIG9mZiBjb25jdXJy
ZW50IEdDIGJ5IG1ha2luZyB0aGUgc2NoZWR1bGVyIHNheSB0aGF0IHRoZSB3b3JsZAogICAgICAg
ICAvLyBzaG91bGQgYWx3YXlzIGJlIHN0b3BwZWQgd2hlbiB0aGUgY29sbGVjdG9yIGlzIHJ1bm5p
bmcuCi0gICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c1N0
b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CisgICAgICAgIG1fc2NoZWR1bGVyID0gbWFr
ZVVuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CiAgICAg
fQogICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJpZnlIZWFwKCkpCi0gICAgICAgIG1fdmVyaWZp
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVy
T2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uKCkpOworICAgICAgICBtX3ZlcmlmaWVy
ID0gbWFrZVVuaXF1ZTxIZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0NDeWNs
ZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbigpKTsKICAgICAKICAgICBtX2NvbGxlY3RvclNsb3RW
aXNpdG9yLT5vcHRpbWl6ZUZvclN0b3BwZWRNdXRhdG9yKCk7CiAKQEAgLTg5OSw3ICs4OTksNyBA
QCBzaXplX3QgSGVhcDo6cHJvdGVjdGVkT2JqZWN0Q291bnQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiBIZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQg
PSBtYWtlVW5pcXVlPFR5cGVDb3VudFNldD4oKTsKICAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgK
ICAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwpIHsKICAgICAgICAgICAgIHJlY29yZFR5cGUoKnZt
KCksICpyZXN1bHQsIGNlbGwpOwpAQCAtOTA5LDcgKzkwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxU
eXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFwOjpvYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQg
PSBtYWtlVW5pcXVlPFR5cGVDb3VudFNldD4oKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRl
cmF0aW9uU2NvcGUoKnRoaXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAog
ICAgICAgICBpdGVyYXRpb25TY29wZSwKQEAgLTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgSGVhcDo6
YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAgICAgfSwKICAgICAgICAgQ29uc3RyYWludFZvbGF0
aWxpdHk6OlNlbGRvbUdyZXllZCk7CiAgICAgCi0gICAgbV9jb25zdHJhaW50U2V0LT5hZGQoc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludD4oKnRoaXMpKTsKKyAgICBt
X2NvbnN0cmFpbnRTZXQtPmFkZChtYWtlVW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50
PigqdGhpcykpOwogfQogCiB2b2lkIEhlYXA6OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6dW5p
cXVlX3B0cjxNYXJraW5nQ29uc3RyYWludD4gY29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwSW5saW5lcy5oCmluZGV4IDViNjljZDVlMzVmNjJiNTA2NjNhOWNiZGM3Mzk0
ZDFiZDY3YWQxZDguLmUxZWI2Yzc4MzNkNDg1ODcxYTljNTMzY2ZkNDczMWM3NWY5YjExZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtMjE3LDcgKzIxNyw3
IEBAIGlubGluZSB2b2lkIEhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVk
KCkKIGlubGluZSBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4mIEhlYXA6Om1hcmtMaXN0
U2V0KCkKIHsKICAgICBpZiAoIW1fbWFya0xpc3RTZXQpCi0gICAgICAgIG1fbWFya0xpc3RTZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsKKyAg
ICAgICAgbV9tYXJrTGlzdFNldCA9IG1ha2VVbmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1
ZmZlcio+PigpOwogICAgIHJldHVybiAqbV9tYXJrTGlzdFNldDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA1Yjlh
Yzg5ZGFiZjA0YTA2MTRkYzEwZmJiYWYxNmMwZjRhNDk5ZjdlLi4yZDJiYzhmYjliMjdmZTlmOWIx
YjViZTU0Y2I3NTFmODNlMGQzZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEhlYXBT
bmFwc2hvdEJ1aWxkZXI6OmJ1aWxkU25hcHNob3QoKQogCiAgICAgUHJldmVudENvbGxlY3Rpb25T
Y29wZSBwcmV2ZW50Q29sbGVjdGlvblNjb3BlKG1fcHJvZmlsZXIudm0oKS5oZWFwKTsKIAotICAg
IG1fc25hcHNob3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEhlYXBTbmFwc2hvdD4obV9wcm9maWxlci5t
b3N0UmVjZW50U25hcHNob3QoKSk7CisgICAgbV9zbmFwc2hvdCA9IG1ha2VVbmlxdWU8SGVhcFNu
YXBzaG90PihtX3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKICAgICB7CiAgICAgICAg
IG1fcHJvZmlsZXIuc2V0QWN0aXZlU25hcHNob3RCdWlsZGVyKHRoaXMpOwogICAgICAgICBtX3By
b2ZpbGVyLnZtKCkuaGVhcC5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IGI4ZTQzMDE5
MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5OGZkYTkuLjdjMmVkMjQwMmZkNzMwMWZjMDk5YThk
ZmI1ZDNjMzM2YWVhZDExMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6
OmF0b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9jCiAgICAgYXV0
byYgYml0c1B0clJlZiA9IG1fYml0c1tibG9ja0luZGV4XTsKICAgICBhdXRvKiBiaXRzID0gYml0
c1B0clJlZi5nZXQoKTsKICAgICBpZiAoIWJpdHMpIHsKLSAgICAgICAgYml0c1B0clJlZiA9IHN0
ZDo6bWFrZV91bmlxdWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKKyAg
ICAgICAgYml0c1B0clJlZiA9IG1ha2VVbmlxdWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1Bl
ckJsb2NrPj4oKTsKICAgICAgICAgYml0cyA9IGJpdHNQdHJSZWYuZ2V0KCk7CiAgICAgICAgIFdU
Rjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgICAgIG1fYmxvY2tzV2l0aEJpdHNbYmxvY2tJbmRl
eF0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vi
c3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmlu
ZGV4IGQ1MTAwMGViYTg3ZjMxZGU0ODFiZWQwOGE1ZjJmZWQ4YTYzOWZmOTkuLmNkM2U3ZTU2MTU0
NTY2ZGNmOGMxNTE2M2ExNWI3MmYyNzY4ZjI5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSXNvU3Vic3BhY2U6Oklzb1N1
YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5
cGUsIHMKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQogICAgICwg
bV9sb2NhbEFsbG9jYXRvcigmbV9kaXJlY3RvcnkpCi0gICAgLCBtX2lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQor
ICAgICwgbV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcj4oKSkKIHsKICAgICBpbml0aWFsaXplKGhlYXBDZWxsVHlwZSwgbV9pc29B
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCmluZGV4IGIzYWJkMmM1MjI0ZmNl
M2U1Y2UxMmM0ZjE2M2VkNDgyM2RhZTY5OGUuLjE3ODBjMDhhNDcwZjI3NjIzMTYzN2VmNjgxMTdj
OWE0ZTMyYzFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtp
bmdDb25zdHJhaW50U2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
aW5nQ29uc3RyYWludFNldC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNYXJraW5nQ29uc3Ry
YWludFNldDo6ZGlkU3RhcnRNYXJraW5nKCkKIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6
YWRkKENTdHJpbmcgYWJicmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248dm9p
ZChTbG90VmlzaXRvciYpPiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0
eSwgQ29uc3RyYWludENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5LCBDb25zdHJhaW50UGFyYWxsZWxp
c20gcGFyYWxsZWxpc20pCiB7Ci0gICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2lu
Z0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RG
TW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOwor
ICAgIGFkZChtYWtlVW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJl
dmlhdGVkTmFtZSksIFdURk1vdmUobmFtZSksIFdURk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5
LCBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20pKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWlu
dFNldDo6YWRkKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCmluZGV4IDgyYmUzYmJiNDRj
YjZjNTc3NmI4ZWNmN2ZhMGM5NDBkNWQ1YTU4MjUuLjUzYTkxYTIzYzFkODkyOTE4ZWU0Mjk0MWE2
NWY1Mjc4NjdkNDMzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY3LDcg
KzY3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlw
ZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3MKIAogICAgIFN0cmluZyBtZXNzYWdlOwog
ICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwotICAgIG1f
Y29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVj
KSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpjb3VudChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKICAgICAgICAgICAgIGlmIChleGlzdGluZ1RpdGxlID09IHRpdGxlKSB7
CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQg
Zm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxl
LmlzRW1wdHkoKSA/ICJVbm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3Ry
aW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAg
ICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAg
ICAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmls
ZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmIHRpdGwKIAogICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZy
b250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0Vt
cHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwg
dGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIHdhcm5pbmcpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29s
ZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBN
ZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7
CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzdGFydENvbnNvbGVQcm9m
aWxlKCkKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dDo6c2NyZWVuc2hvdChFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKQogdm9pZCBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5VbmltcGxlbWVudGVkKGNvbnN0IFN0cmlu
ZyYgbWV0aG9kKQogewogICAgIFN0cmluZyBtZXNzYWdlID0gbWV0aG9kICsgIiBpcyBjdXJyZW50
bHkgaWdub3JlZCBpbiBKYXZhU2NyaXB0IGNvbnRleHQgaW5zcGVjdGlvbi4iOwotICAgIG1fY29u
c29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2Fn
ZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjOGRhNTJlZmQxM2M0OTFjY2FlNjM5NWUwNzRjNDY0
NGU3MGNjMGE3Li5iZGJkMzFkNjMxMmIyYzA1NmQ3YzQ3ODE1ZGM2MTVkMTIyNmQ5MjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFn
ZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywg
SW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRj
aChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihnbG9iYWxP
YmplY3QpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkK
QEAgLTcxLDExICs3MSwxMSBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iagogewogICAgIGF1dG8g
Y29udGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRv
IGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0
KTsKICAgICBtX2NvbnNvbGVBZ2VudCA9IGNvbnNvbGVBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50
cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50PihtX2NvbnNvbGVB
Z2VudCk7CisgICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ+KG1fY29uc29sZUFnZW50KTsKIAogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNo
LT5zdGFydCgpOwogfQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
CiAgICAgICAgICAgICBDb25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1l
c3NhZ2UsIFN0cmluZygpLCAwLCAwKTsKICAgICB9CiAKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRk
TWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBX
VEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogQ29uc29sZUNsaWVudCogSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyOjpjb25zb2xlQ2xpZW50KCkgY29uc3QKQEAgLTI4MCw3ICsyODAs
NyBAQCBJbnNwZWN0b3JBZ2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpl
bnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAg
ICAgICAgIGF1dG8gY29udGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5z
cGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0KTsK
KyAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+
KGNvbnRleHQpOwogICAgICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0
KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CiAg
ICAgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQmIEpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlRGVidWdnZXJBZ2VudCgpCiB7CiAgICAg
aWYgKCFtX2RlYnVnZ2VyQWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENv
bnRleHQoKTsKLSAgICAgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxK
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKKyAg
ICAgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVn
Z2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKICAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50ID0gZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICAgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50KG1fZGVidWdnZXJBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKQEAgLTMyNywyMCArMzI3LDIwIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkK
IAogICAgIGVuc3VyZUluc3BlY3RvckFnZW50KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4oY29udGV4dCkpOworICAg
IG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihj
b250ZXh0KSk7CiAKICAgICBlbnN1cmVEZWJ1Z2dlckFnZW50KCk7CiAKLSAgICBhdXRvIHNjcmlw
dFByb2ZpbGVyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CiAgICAgbV9j
b25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2Zp
bGVyQWdlbnRQdHIuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFBy
b2ZpbGVyQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gaGVhcEFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JIZWFwQWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8gaGVhcEFnZW50ID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JIZWFwQWdlbnQ+KGNvbnRleHQpOwogICAgIGlmIChtX2NvbnNvbGVB
Z2VudCkKICAgICAgICAgbV9jb25zb2xlQWdlbnQtPnNldEluc3BlY3RvckhlYXBBZ2VudChoZWFw
QWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGhlYXBBZ2VudCkpOwog
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RBdWRp
dEFnZW50Pihjb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9i
YWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGMwYjVjOWFhZDE4YzA4Y2VkZGMzNjk2NmJmMDQ2
ODUxNDE3NjI2NDMuLjQxN2U3NzVmYjgwMjQ5YzA0MDMxMzdhODI3ODIxMzczMjdkMzMyYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiBJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJJbnNwZWN0b3IiX3MpCiAgICAgLCBtX2Vudmlyb25t
ZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rv
ckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcAppbmRleCA3ZWRiYzgwNjYwZjM2ZDZhODFhYTkxZmI4ZmEzZmRkZGVkYWU2ZjI2Li41
ZDI0YzY5ZTZiZjQ1ZDcyZmIwYmRhNTNiNGM0NTc1OTg2MTNjYmNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCBleHBp
cmVDb25zb2xlTWVzc2FnZXNTdGVwID0gMTA7CiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIkNvbnNvbGUiX3MpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250
ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENvbnNvbGVG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihDb25zb2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgbGFiZQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
Ly8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8K
ICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAi
XCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1h
a2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNz
YWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNj
cmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcs
IGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICB9CiB9CiAK
QEAgLTE1OSwxNCArMTU5LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpsb2dUaW1p
bmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsCiAgICAgaWYgKGl0
ID09IG1fdGltZXMuZW5kKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0
aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBt
YWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAg
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
d2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVs
YXBzZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVz
c2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0
aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAzKSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29u
c29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdl
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgbGFiZWwpCkBAIC0xODQsMTQgKzE4NCwxNCBAQCB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbAogICAgIGlmIChpdCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAg
IFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMg
bm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFj
aykpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFs
dWU7CiAgICAgU2Vjb25kcyBlbGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRp
bWU7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwot
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxl
dmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2Fn
ZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdl
LCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIAogICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIH0KQEAg
LTIyNCw3ICsyMjQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiAgICAgLy8gRklYTUU6IFdlYiBJ
bnNwZWN0b3Igc2hvdWxkIGhhdmUgYSBiZXR0ZXIgVUkgZm9yIGNvdW50ZXJzLCBidXQgZm9yIG5v
dyB3ZSBqdXN0IGxvZyBhbiB1cGRhdGVkIGNvdW50ZXIgdmFsdWUuCiAKICAgICBTdHJpbmcgbWVz
c2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwot
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVs
OjpEZWJ1ZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAx
KSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVs
OjpEZWJ1ZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAx
KSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2
b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkgewog
ICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxp
emF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIkNvdW50ZXIgXCIi
LCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNv
bGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBj
cmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJu
aW5nLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXgg
ZTVmMjQ4MmEzY2FhMDhhYTgxNjQ1ZmE4Yzc5YzUyOWJhNDM4MGQwYS4uMjVmMWQzZTcyODFjNmIw
ZmI4MzMwZmYxMzc4NzM2NDNlYmM2MGVkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFr
cG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW8KIAogSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRlYnVnZ2VyIl9zKQotICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihtYWtlVW5pcXVlPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9z
Y3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0LmVudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFu
YWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IGI1MzVmZjYxOTJhYWNlZmM3OWI0
ZjZjZDkzZGYxMjAxYTM3MTQ4YWMuLjU4MmMzNWQzNjdkZmUxZTRmN2RjNGU5YTU2ODRkY2EyYTRl
M2I0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIEluc3BlY3RvckhlYXBBZ2VudDo6SW5zcGVjdG9ySGVhcEFnZW50
KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSGVhcCJf
cykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxIZWFw
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEhlYXBCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAg
ICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmls
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAppbmRleCA1NmZjMWI3OThkYTBlZWVlYTAyMzMx
ZWQ1MjU0YTk1MDIxMDA1ODc0Li5jYmFkODFkNjk5NDQwYTczM2IwYWYwNDE2OTRhODZjYTllNmU4
ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAt
MzksNyArMzksNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yU2NyaXB0UHJv
ZmlsZXJBZ2VudDo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlNjcmlwdFByb2ZpbGVyIl9zKQotICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRQcm9maWxlckZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoU2Ny
aXB0UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGFyZ2V0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCmluZGV4IDNhY2E0MTA1MTBmZTUwMGYwNWJm
YmFhYzQ2N2ZmZGFjY2IyMWM1MjQuLjkzNTA2OGM3YWUxMTk3MTA1NDRjMWY3Njc5ODIyZGZiNjZl
NTZiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRhcmdldEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0b3JU
YXJnZXRBZ2VudChGcm9udGVuZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRj
aGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGFyZ2V0
Il9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxUYXJnZXRG
cm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKG1ha2VVbmlxdWU8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRl
cikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFs
T2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZTMyOWEzYjQzY2Q2MDk2NWQ5Zjc3ODVhNDgy
MjAxMWFiMzY2ZmE1My4uOWIzZjM3OWQ1ZTVhNDkwZGJlMzc1YzcyYWM5OWZhNzIwYjlhY2NlZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCkBAIC01OCw3ICs1
OCw3IEBAIEluamVjdGVkU2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2Fn
ZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlw
dENhbGxTdGFjaygmc3RhdGUpLCAwKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IDE0NWQwNTE2Yjhl
Mzk2ODg3OGQ5MmNiNTk0YWE1OTliYWZhMzlkMzIuLjNiN2MzZTIxZDMxYzFjMmY1YjZkMWJhMGMx
NmY0ODg4M2U2Y2YzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChKU0FnZW50Q29udGV4
dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKG1ha2VVbmlxdWU8UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFJ1bnRpbWVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9n
bG9iYWxPYmplY3QoY29udGV4dC5pbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCA3
MTAxNjY4YTk3Yzg3NDQ4MTJmNDY1NmYxNmUwYjdkZDU5NGYxYTYwLi5jYzk2NDAwNTY3OWRiZmNk
NGZlMDI5MDZiYzkzYzIzYjJjODJlY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKQEAgLTE0NCwxMSArMTQ0LDExIEBAIE9w
dGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0
ZUNsaWVudChQbGF0Zm9ybVNvY2tlCiAKICAgICBTb2NrZXQ6OnNldHVwKHNvY2tldCk7CiAKLSAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4o
KTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4o
KTsKIAogICAgIGNvbm5lY3Rpb24tPnBvbGwgPSBTb2NrZXQ6OnByZXBhcmVQb2xsaW5nKHNvY2tl
dCk7CiAgICAgY29ubmVjdGlvbi0+c29ja2V0ID0gc29ja2V0OwotICAgIGNvbm5lY3Rpb24tPnBh
cnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVBhcnNlcj4oaWQsIFNvY2tldDo6QnVmZmVy
U2l6ZSk7CisgICAgY29ubmVjdGlvbi0+cGFyc2VyID0gbWFrZVVuaXF1ZTxNZXNzYWdlUGFyc2Vy
PihpZCwgU29ja2V0OjpCdWZmZXJTaXplKTsKICAgICBjb25uZWN0aW9uLT5wYXJzZXItPnNldERp
ZFBhcnNlTWVzc2FnZUxpc3RlbmVyKFt0aGlzXShDb25uZWN0aW9uSUQgaWQsIFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpIHsKICAgICAgICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KQogICAgICAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQtPmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JFdmVudChpZCwgV1RG
TW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludC5oCmluZGV4IDcwZjJkN2E0ODEzNDcwZjgxMzczMmIzYjk3N2I1YjczYTQxOTYw
YjUuLjMyMDQwMGZkNWIzY2RiMmM0YjE1ZGJkYzkzMDQ2YmJmZDAwY2FkYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50PiBjcmVhdGUoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVu
dCogaW5zcGVjdG9yQ2xpZW50LCBjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3Bl
Y3RvckNsaWVudCwgbmFtZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50PihpbnNwZWN0b3JDbGllbnQsIG5hbWUpOwogICAgIH0KIAogICAg
IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50KFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25D
bGllbnQqLCBjb25zdCBjaGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVy
YXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggNjZmOWZkMmRjNDcwZDIxZjRkZTU3ZGU4MjhjMTU5NDQ1
NjcxMjNiYi4uZmE1MDZhNjFlOTliMzlhODc0NmUwY2U1YmUwZDZhYmMwYjBhNGU5NCAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM4
LDggKzEzOCw4IEBAIGNsYXNzIE9iakNHZW5lcmF0b3JUZW1wbGF0ZXM6CiAgICAgW18ke3Zhcmlh
YmxlTmFtZVByZWZpeH1IYW5kbGVyIHJlbGVhc2VdOwogICAgIF8ke3ZhcmlhYmxlTmFtZVByZWZp
eH1IYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtk
b21haW5OYW1lfSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIp
KTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0
b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0
ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9t
YWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmRE
aXNwYXRjaGVyPj4oIiR7ZG9tYWluTmFtZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RG
TW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdp
dGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0
Zm9ybS5qc29uLXJlc3VsdAppbmRleCAzZTk5MTQ3MWQzMjRhMzU1MTY5MjhlNDNlOTQxMDhiNDQ4
NzMxMjA4Li5iMDRhODUwZGYxMTUyZDZmZGE1OTYyZGYzN2MyZTQ5ZTFlYmQ5NWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4
cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQv
ZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTc3MSw4ICs3NzEs
OCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIgcmVs
ZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1
dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2Vu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0Jh
Y2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0
d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQg
PSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3Ms
ICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRy
b2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3Vs
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4
IGE3MTRmYjEzMTgzMjkzZDE4MzJmYzU4MWU2YzUzMzc4NjgwMmQ1NzIuLmMwZTE3MzM3ZmQ0YTc5
ODgzMGU4NWQyOWU4NWQ4ZWQzMDIwY2E3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
YXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0xMTg5LDggKzExODksOCBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwogICAg
IF9kYXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRv
IGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFr
ZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAq
X2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9s
bGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDUzYmQ1NTNiN2JhNzRkZGQyOWUyNTUxY2Mw
Yjg0ZmE0MzA3MTRjYWUuLmFlZDA3Yjc1ZThiODg4ZGQ1OTMzOTBhZmEyMWQyYzg5MGRkZmM1ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNh
bGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEwNjgsOCArMTA2OCw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07
CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFi
YXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQg
PSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2Ui
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2Nv
bnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdAppbmRleCA2NzhjNmFhYTg1YWNhMzg0
MjQ4Yjk5MjkwMzRjY2YwOTQxMThkZWU3Li4xYWRjYmQzZmQyYWNiOWNhMTQ2MWMzMDhlNDVjNDky
ZWMzZTAzMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKQEAgLTc4Miw4
ICs3ODIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZG9tYWluQUhhbmRs
ZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAot
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3Bl
Y3RvckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5h
dGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9t
YWluQUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+
PigiRG9tYWluQSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIp
KTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0
b3JEb21haW5BQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRl
QWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFp
bkEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAg
X2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwog
fQogCkBAIC04MDAsOCArODAwLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBb
X2RvbWFpbkJIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9kb21haW5CSGFuZGxlciA9IFtoYW5kbGVy
IHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iakNJbnNwZWN0b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAg
IGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNo
YWJsZUFnZW50PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tl
bmREaXNwYXRjaGVyPj4oIkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5h
dGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1
ZTxPYmpDSW5zcGVjdG9yRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxEb21haW5CQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlzcGF0
Y2hlcj4+KCJEb21haW5CIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0
Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJu
YXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmct
Y29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNv
bW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5kZXggZjZjNWVkY2NiOTI4NWFmNDhjNmRlYjk4NDIy
YTcyMzZiODcwMmQ0ZS4uYTNlMjdkZjM4Y2VhZmJiM2M0NTFlMTNiNjExOWUyZTU0YzNkMmE4YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpz
b24tcmVzdWx0CkBAIC0xMDM5LDggKzEwMzksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogICAgIFtfbmV0d29yazFIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrMUhhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRl
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBX
VEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPiho
YW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFn
ZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApAQCAtMTA1Nyw4ICsxMDU3LDggQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmszSGFuZGxlciByZWxlYXNl
XTsKICAgICBfbmV0d29yazNIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8g
YWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0
d29yazMiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7Cisg
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2Vu
dCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3Jr
MyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBf
Y29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51
bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggNGQ5NGFkOTRhZDg1MWY1ODVmNDhlOTExNWUzYmVj
Y2Y5N2I3YWQ1Zi4uYmQ2Yjk4MTVmNzYwMWFlMWQwZmVkYzI2YzQ1NDM1YmE0M2Y2MWU1YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12
YWx1ZXMuanNvbi1yZXN1bHQKQEAgLTgxNSw4ICs4MTUsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogICAgIFtfY29tbWFuZERvbWFpbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2NvbW1h
bmREb21haW5IYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+
PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3Bh
dGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJ
bnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1
dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
PENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyPj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92
ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdl
bnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggNmY2YmYz
NjI1N2FlOWVlZjA1ZjFiZjI2NzNlNjExM2YzYmNlODk4MC4uNWNiY2NiZmVkNTNjNGJmMzQxMzZm
NzY4ZWRhNTlmZmI0OTA3MGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13
aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFp
bnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAtNzk4LDggKzc5OCw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07
CiAgICAgX25ldHdvcmsxSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdv
cmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQg
PSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEi
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2Nv
bnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBl
Y3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCAzZTk5
MTQ3MWQzMjRhMzU1MTY5MjhlNDNlOTQxMDhiNDQ4NzMxMjA4Li5iMDRhODUwZGYxMTUyZDZmZGE1
OTYyZGYzN2MyZTQ5ZTFlYmQ5NWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFj
LXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZv
cm0uanNvbi1yZXN1bHQKQEAgLTc3MSw4ICs3NzEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIg
PSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0Jh
Y2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RG
TW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggMDVmNzBmMWFlYWY0YzRkOWY1MmMxMDZhYjY2ZGI5ZWNkMmVhYjhiZS4uOTllOGE0N2ZkNWUw
YzIwN2U3MjdiODZmZTIzNjE5MDU3YjY1MDJmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklU
Q29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjpkdW1wRGlzYXNzZW1ibHkoKSB8fCAobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYm
IE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKSkpCi0gICAgICAgIG1f
ZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29kZUJs
b2NrKTsKKyAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2VtYmxl
cj4obV9jb2RlQmxvY2spOwogICAgIGlmIChVTkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXIpKSB7CiAgICAgICAgIG1fY29tcGlsYXRpb24gPSBhZG9wdFJlZigKICAgICAgICAgICAg
IG5ldyBQcm9maWxlcjo6Q29tcGlsYXRpb24oCkBAIC05MDEsNyArOTAxLDcgQEAgQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpsaW5rKCkKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1h
cEJ1aWxkZXIuZGlkQnVpbGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1Rv
Q29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3Zl
KG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsKKyAgICAgICAgbV9j
b2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5N
YXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOwog
ICAgIAogICAgIENvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgK
ICAgICAgICAgcGF0Y2hCdWZmZXIsIEpTRW50cnlQdHJUYWcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFRodW5rcy5jcHAKaW5kZXggMTZiZjcwZDgwMTc0NDIzMDUwMmEyZDhiMTk3Y2Q0MDFj
ODAyNGYzOC4uNWJkZjgzMDQ2NTA0Mzk5NGUxMWJhZmZlZDUyYmI3ODVjMWJhMGE2MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIEpJVFRodW5rczo6SklUVGh1bmtzKCkKLSAgICA6IG1faG9zdEZ1bmN0
aW9uU3R1Yk1hcChzdGQ6Om1ha2VfdW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCisgICAg
OiBtX2hvc3RGdW5jdGlvblN0dWJNYXAobWFrZVVuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMzg4ZmIw
ZTYyNzA4YjM0ZWNiOTcxZTk0NmI0NmIxOTNjNGNhZTNiLi44ZjlhODY0ZTRmZTg2MjZhMWZlZmMw
YzMwN2M5ZTQ2NTY2MmY1YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTEwOTIsNyArMTA5Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q2FsbEZyYW1lU2h1ZmZsZXI+IGZyYW1lU2h1ZmZsZXI7CiAgICAgaWYgKGNh
bGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKGNhbGxMaW5r
SW5mby5pc1RhaWxDYWxsKCkpOwotICAgICAgICBmcmFtZVNodWZmbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZm
bGVEYXRhKCkpOworICAgICAgICBmcmFtZVNodWZmbGVyID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVT
aHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBjaGVj
a2VkIHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNlbGwsIGFuZCB3ZSBjYW4KICAgICAgICAgLy8gdXNl
IHRoZSBhZGRpdGlvbmFsIHJlZ2lzdGVyIHRoaXMgYnV5cyB1cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
aW5kZXggNDEyMmZiZWQyMmVlMTU1MjNkMTRlNGE4NzlhYmExYWI4NDc4NmEwNy4uNzAyZDM2OTRk
OWY3Njg4NDIwZjBjZGFiZDEwZTg4OGE3MzNmMjg2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAg
LTI5NjksNyArMjk2OSw3IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMs
IGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIodm0pOwogCiAgICAgICAgIGlmIChvcHRpb25zLm1fcHJvZmlsZSAmJiAhdm0ubV9wZXJC
eXRlY29kZVByb2ZpbGVyKQotICAgICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZtKTsKKyAgICAgICAgICAgIHZt
Lm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2
bSk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEds
b2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1
bWVudHMpOwogICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQo
b3B0aW9ucy5tX2VuYWJsZVJlbW90ZURlYnVnZ2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggZjhkYmU3MTk2ZjExMTcxNmQwYTU4ZjdmNTdlM2Y4ZjY3Yjdh
MmFjZi4uYTE2NGZkOTAzZjM2ZTk0MjBhNzM2NGVmNDI3YzZjMmZmZTMyMmNkYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFBhcnNl
cjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
UGFyc2VyQnVpbHRpbk1vZGUKICAgICAsIG1faW1tZWRpYXRlUGFyZW50QWxsb3dzRnVuY3Rpb25E
ZWNsYXJhdGlvbkluU3RhdGVtZW50KGZhbHNlKQogICAgICwgbV9kZWJ1Z2dlclBhcnNlRGF0YShk
ZWJ1Z2dlclBhcnNlRGF0YSkKIHsKLSAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhl
clR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2NyaXB0TW9kZSk7CisgICAgbV9sZXhlciA9IG1ha2VV
bmlxdWU8TGV4ZXJUeXBlPih2bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOwogICAgIG1fbGV4
ZXItPnNldENvZGUoc291cmNlLCAmbV9wYXJzZXJBcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0
aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKTsKICAgICBtX3Rva2Vu
Lm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDY5YWEwYmMxOTBhZjY3ODNkODkyOGMzNTlh
YTNiMTBiYjFmYmQ4NzMuLjBhNWVkZTRiODQyNWNmZDFiMzE3Yzc2YzUxZWE3Mzc4MTc4MGI1MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjA0LDcgKzIwNCw3IEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgdm9pZCBwdXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFi
ZWwsIGJvb2wgaXNMb29wKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xhYmVscykKLSAgICAgICAg
ICAgIG1fbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxMYWJlbFN0YWNrPigpOworICAgICAgICAg
ICAgbV9sYWJlbHMgPSBtYWtlVW5pcXVlPExhYmVsU3RhY2s+KCk7CiAgICAgICAgIG1fbGFiZWxz
LT5hcHBlbmQoU2NvcGVMYWJlbEluZm8geyBsYWJlbC0+aW1wbCgpLCBpc0xvb3AgfSk7CiAgICAg
fQogCkBAIC0xOTQxLDcgKzE5NDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgICAg
ICBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0
T2Zmc2V0KCk7CiAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3Vy
cmVudE9mZnNldCgpOwogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBlbmRMb2NhdGlvbi5z
dGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAorICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydExvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW5kTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFydENvbHVtbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuaAppbmRleCBkZjE3YmU1MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNmMzNh
N2VlLi40MTAwMDZkOTI3NTFjZTk2YjkyY2I5NjI1NjM1ZWE3Y2Y3OGVjNGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xODAsNyArMTgwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElkZW50aWZpZXJBcmVuYSYgaWRlbnRpZmllckFyZW5h
KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZICghbV9pZGVudGlmaWVyQXJl
bmEpKQotICAgICAgICAgICAgICAgIG1faWRlbnRpZmllckFyZW5hID0gc3RkOjptYWtlX3VuaXF1
ZTxJZGVudGlmaWVyQXJlbmE+KCk7CisgICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEg
PSBtYWtlVW5pcXVlPElkZW50aWZpZXJBcmVuYT4oKTsKICAgICAgICAgICAgIHJldHVybiAqbV9p
ZGVudGlmaWVyQXJlbmE7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCmluZGV4IDA1MDMyYjVkMTMx
MDhjMGViNjIwZTlkYWU4MjBjZWY3YWM3NTMxOGMuLjM1NzExYjVmYTY0MjY5ZTY3NzRhYjcwZTIx
ZGQ1MDI1MTY5YzhlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0aW9u
Q291bnRlciogQ29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IoY29uc3QgT3JpZ2luU3Rh
Y2smIG9yaWdpbikKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhlY3V0aW9uQ291bnRlcj4mIGNv
dW50ZXIgPSBtX2NvdW50ZXJzLmFkZChvcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIWNvdW50ZXIpCi0gICAgICAgIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4
ZWN1dGlvbkNvdW50ZXI+KCk7CisgICAgICAgIGNvdW50ZXIgPSBtYWtlVW5pcXVlPEV4ZWN1dGlv
bkNvdW50ZXI+KCk7CiAKICAgICByZXR1cm4gY291bnRlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCA3MGM3MTQ3MzMyNDQ0MDgwNzg3OTM0MDE5
ODY2NzNjOTdlMWVhODNkLi5hNjRkZTNmZGQ2NjI1NTE4YWM1ZDEyNmNlYWM3OGI2ZjIxMjVhNGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xNzQsNyArMTc0
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gZ2V0U3RhY2tUcmFjZShF
eGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBzaXplX3QgZnJhbWVzVG9Ta2lwID0gdXNlQ3VycmVudEZyYW1lID8gMCA6IDE7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPFN0YWNrRnJhbWU+PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1l
Pj4oKTsKICAgICB2bS5pbnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShvYmosICpzdGFja1RyYWNl
LCBmcmFtZXNUb1NraXAsIGdsb2JhbE9iamVjdC0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWUoKSk7
CiAgICAgaWYgKCFzdGFja1RyYWNlLT5pc0VtcHR5KCkpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
ZXhlYywgZXhlYyA9PSB2bS50b3BDYWxsRnJhbWUgfHwgZXhlYy0+aXNHbG9iYWxFeGVjKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKaW5kZXggNDM5ZTIwOWIwYTVmOGZiODI5Yjc5MTk3NTc0ODhjNDE1NjM0MjczZi4uZWYy
ZTgzMDg3NDFiODg1MmU1NjIzMjZmOTYyNTdjOWQwMjkzNWQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xMTAs
NyArMTEwLDcgQEAgRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21H
bG9iYWxDb2RlKAogRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgRnVuY3Rpb25FeGVjdXRh
YmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQogewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0g
ICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgYXV0
byByYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmFyZURhdGEtPm1fbGlu
ZUNvdW50ID0gbGluZUNvdW50KCk7CiAgICAgcmFyZURhdGEtPm1fZW5kQ29sdW1uID0gZW5kQ29s
dW1uKCk7CiAgICAgcmFyZURhdGEtPm1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVy
c1N0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblJhcmVEYXRhLmgKaW5kZXggNDYyMzY0MWM1OThlM2ViYjVmYmE2YmMwMjM3MjY0ZTUwNTJm
ZDE3OS4uNTJiMjhiMTNjN2UyZTI1ZDIxYmJiYWIzYWQzMWQ1YjZiYzBjZGVlNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtMTU2
LDcgKzE1Niw3IEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xl
YXJpbmdXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIFdhdGNoCiBpbmxpbmUgV2F0Y2hwb2ludCog
RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9p
bnQoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5n
V2F0Y2hwb2ludCgpKTsKLSAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4o
dGhpcyk7CisgICAgbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IG1ha2VV
bmlxdWU8QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+KHRoaXMpOwogICAgIHJl
dHVybiBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50LmdldCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5k
ZXggMWE1N2VmM2RjZmU5MTllNzBiMzdmYTdlMzQ4NTRhMTNlOTA1M2ZhZS4uY2M4Nzc2N2YxMDhi
Y2M0ODNiMzE1ZjExMmZhOWM1MzQ3ZjUyMDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZGVidWdnZXIgPSAwOwogCiAjaWYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
cj4oKnRoaXMpOwotICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JDb250cm9s
bGVyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcj4oKnRoaXMpOworICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8SlNH
bG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxl
LT5pbml0KCk7CiAgICAgbV9jb25zb2xlQ2xpZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5j
b25zb2xlQ2xpZW50KCk7CiAjZW5kaWYKQEAgLTExNDUsNTcgKzExNDUsNTcgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
Y29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlw
ZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJv
dG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJh
eUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJv
dG90eXBlTmV4dCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBl
TmV4dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQ
cm90b3R5cGUoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAg
IG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dCk7CisgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBt
YWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdh
dGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0b3JQ
cm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFw
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFw
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAg
IHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFw
dGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAg
ICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CisgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2
bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5
bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRp
dGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJv
dG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29u
ZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQ
cm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAog
ICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92bS5w
cm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5l
eHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0
cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdJdGVyYXRv
clByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9u
LCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdJ
dGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAg
ewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0
aXZlV2F0Y2hwb2ludChtX3N0cmluZ1Byb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0
b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0
cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRp
b24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmlu
Z1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQog
CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1
cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5h
bWVzLT5zZXQpOwotICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdh
dGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CisgICAg
ICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0
UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0
UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRp
dGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRj
aHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9p
bnQpOwogICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwog
ICAgIH0KIApAQCAtMTIwNiw3ICsxMjA2LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3Iq
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAg
ICAgICAgdGhpcy0+c3ltYm9sUHJvdG90eXBlKCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90
eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQcm90
b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90
b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVU
b1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAgICBtX251bWJlclByb3RvVG9T
dHJpbmdGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJv
dG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwogICAg
IH0KQEAgLTE5MzIsMTAgKzE5MzIsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFs
bEFycmF5U3BlY2llc1dhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQVNT
RVJUKCFtX2FycmF5U3BlY2llc1dhdGNocG9pbnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAgbV9h
cnJheVNwZWNpZXNXYXRjaHBvaW50LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0
Y2hwb2ludC4iKTsKIAotICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJh
eVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRj
aHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0
Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1f
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CisgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dh
dGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5
U3BlY2llc1dhdGNocG9pbnQpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBv
aW50LT5pbnN0YWxsKHZtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMDQ3YzE2NjUzZTcxYjFhODA2YmQ5ZmM3ZDU2NjQzYTVm
OTg4ZjExZS4uODQ1MzVjYTVjNjAwY2VjYmQ4YjQ3OGY2NWI1M2NkMDdlMzZhODM5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01MjEs
NyArNTIxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdCB7CiAgICAgewogICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxP
YmplY3RSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8SlNHbG9i
YWxPYmplY3RSYXJlRGF0YT4oKTsKICAgICB9CiAgICAgICAgIAogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDFhZjAw
MzY1M2NiOGMzZGU2NDNmOGM0OTEyN2FiYjNlNTUxM2Q1YWQuLjMyN2ZlZDA2YzY3YTViZjExMjUx
ZjlmNGRlZDgzOWU3MDMzYzhhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1J1bkxvb3BUaW1lci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpzZXRSdW5Mb29wKE1hbmFnZXIqIG1hbmFnZXIsIENG
UnVuTG9vcFIKICNlbHNlCiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJW
TURhdGEoTWFuYWdlciYgbWFuYWdlcikKICAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQo
KSkKLSAgICAsIHRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+
KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZp
cmVDYWxsYmFjaykpCisgICAgLCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFn
ZXI+PigqcnVuTG9vcCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJE
aWRGaXJlQ2FsbGJhY2spKQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGltZXIt
PnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsKQEAg
LTE3Miw3ICsxNzIsNyBAQCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlciYgSlNSdW5Mb29wVGltZXI6
Ok1hbmFnZXI6OnNoYXJlZCgpCiAKIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lz
dGVyVk0oVk0mIHZtKQogewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVyVk1E
YXRhPigqdGhpcyk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQZXJWTURhdGE+KCp0aGlz
KTsKICNpZiBVU0UoQ0YpCiAgICAgZGF0YS0+c2V0UnVuTG9vcCh0aGlzLCB2bS5ydW5Mb29wKCkp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaAppbmRleCA1ZjA3OGQyYTUwOWQyYjQ0MjAwZjdhNGFmMzg4MTI0NmNi
MmQ1OGE3Li41MjkwMjBkZjBmMWRjMmEyODZmODAwYWJhZDlkN2ViN2QzZjhlZTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
LmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJs
ZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxl
dGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9m
ZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4+KCk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5p
cXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBw
ZW5kKG9mZnNldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5VGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlUYWJsZS5jcHAKaW5kZXggNTllYzQxYzQ5YWU4MmY0N2Y2OTg2ODA2ZGQ2MTQzOTQ0YTQy
YjVkNi4uYjFiYjY3OTE5OTI2NWFmY2JjY2M4MzY1NmQ4ZDU2ZmM1YjRhMzU0NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKQEAgLTgzLDcg
KzgzLDcgQEAgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIGNvbnN0IFByb3Bl
cnR5VGFibGUmIG90aGVyKQogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9y
LgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhl
ci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQot
ICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVy
dHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNl
dHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZz
ZXRzKTsKIH0KIAogUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVk
IGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCkBAIC0xMDcsNyAr
MTA3LDcgQEAgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGlu
aXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWIKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0
ZWRPZmZzZXRzIHZlY3Rvci4KICAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0
ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJE
ZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAg
ICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigq
b3RoZXJEZWxldGVkT2Zmc2V0cyk7CiB9CiAKIHZvaWQgUHJvcGVydHlUYWJsZTo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRl
eCAwNzFiMWY2NjMxNWNlM2FlOGRjZmUxNzVmZjYzNjZmNWM2MzJhZmZjLi43MGU1OTNkNTNlYmRk
ODFkOGMwODEzYTI5NzcwZTk0MGNlMDQxMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogCiAgICAgbV9udW1TdWJwYXR0ZXJucyA9IHBhdHRlcm4ubV9udW1TdWJw
YXR0ZXJuczsKICAgICBpZiAoIXBhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcy5pc0VtcHR5KCkg
fHwgIXBhdHRlcm4ubV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LmlzRW1wdHkoKSkgewotICAgICAg
ICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9y
YXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1f
Y2FwdHVyZUdyb3VwTmFtZXMuc3dhcChwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMpOwogICAg
ICAgICBtX3JhcmVEYXRhLT5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguc3dhcChwYXR0ZXJuLm1f
bmFtZWRHcm91cFRvUGFyZW5JbmRleCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAppbmRleCAzOWNkZDkxMTZlMDI3ZTNkYjYwNDBkYmQ4ZmU1MjcwZDJlOTk1ZDhk
Li5lOGRhODUyNmU3YzdlODFmYmVhNzVjODg5ODgxNjFiOWFmODkxNzEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIFJlZ0V4
cCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGVuc3Vy
ZVJlZ0V4cEpJVENvZGUoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUpCi0g
ICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnI6OllhcnJD
b2RlQmxvY2s+KCk7CisgICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUgPSBtYWtlVW5pcXVlPFlh
cnI6OllhcnJDb2RlQmxvY2s+KCk7CiAgICAgICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2RlLmdl
dCgpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRleCAyMzdkN2RlNjg4ZGQyMDc2NTAyMDEyMTZjZDBk
NTQ2ODBjNDk2ZWFhLi5lZTZlMThjZWZkYmU3OWY0YmMyZWIyMTk3ZmY1MzkxMDRlMWY3OTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIGF1dG8gU2NyaXB0RXhlY3V0YWJsZTo6ZW5zdXJlVGVt
cGxhdGVPYmplY3RNYXBJbXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjCiB7CiAgICAg
aWYgKGRlc3QpCiAgICAgICAgIHJldHVybiAqZGVzdDsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtl
VW5pcXVlPFRlbXBsYXRlT2JqZWN0TWFwPigpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7
CiAgICAgZGVzdCA9IFdURk1vdmUocmVzdWx0KTsKICAgICByZXR1cm4gKmRlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAyOTNjNDY0NzJlNzQ4
OTQxY2E5Y2MyYWRhYzE2YTNkMmRjNWRlZWVjLi4wMWNkMmJkNTQ3ZmUwMmI1MDQ3YTZkNDViM2M4
YWQ2ZmQ1MmJkYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKQEAgLTg1Niw3ICs4NTYsNyBAQCBXYXRjaHBvaW50U2V0KiBTdHJ1Y3R1cmU6OmVuc3Vy
ZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KFZNJiB2bSwgUHJvcGVydAogICAgIFN0
cnVjdHVyZVJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXMtPnJhcmVEYXRhKCk7CiAgICAgaWYgKCFy
YXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzKSB7CiAgICAgICAgIHJhcmVEYXRh
LT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3Vu
aXF1ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOworICAgICAg
ICAgICAgbWFrZVVuaXF1ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFw
PigpOwogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIH0KICAgICBhdXRvIHJl
c3VsdCA9IHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMtPmFkZChvZmZzZXQs
IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlUmFyZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGEuY3BwCmluZGV4IDk5YThkOWY3ZGFhYzIxN2U0YzgxZTdlNzEyNmU5YzAyYjM3
NGVkM2YuLmQzY2YxODNiMGY2ZDdjNDg5ODgwMGFiNjhlZTQ4Y2QxMjhmN2ZlMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAK
QEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0
cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cgogICAgIEFTU0VSVChj
b25kaXRpb25TZXQuc3RydWN0dXJlc0Vuc3VyZVZhbGlkaXR5KCkpOwogICAgIGZvciAoT2JqZWN0
UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uIDogY29uZGl0aW9uU2V0KSB7CiAgICAgICAgIGlm
IChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVz
ZW5jZSkgewotICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1
ZVdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CisgICAg
ICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9
IG1ha2VVbmlxdWU8T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0aGlzKTsKICAgICAgICAgICAgIG1fb2JqZWN0VG9T
dHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50
U2V0LmFkZChjb25kaXRpb24sIHRoaXMpLT5pbnN0YWxsKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCAzOTJmMjE3YzE0ZWZhZWI1NDVi
ZjBkNGY3NzkwYzExMjc5MzJiYzg1Li5hNGE4NzBmYzFmY2FkMzVjNDM5NWYxMDliMjJhOTljNDIw
ZDc0MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgY29uc3QgU3ltYm9sVGFibGU6OkxvY2FsVG9FbnRyeVZl
YyYgU3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeShjb25zdCBDb25jdXJyZW50SlMKICAgICAgICAg
ICAgICAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgb2Zmc2V0LnNjb3BlT2Zmc2V0KCkub2Zmc2V0
KCkgKyAxKTsKICAgICAgICAgfQogICAgIAotICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8TG9jYWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsKKyAgICAgICAgbV9s
b2NhbFRvRW50cnkgPSBtYWtlVW5pcXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7
CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX21hcCkgewogICAgICAgICAgICAgVmFyT2Zm
c2V0IG9mZnNldCA9IGVudHJ5LnZhbHVlLnZhck9mZnNldCgpOwogICAgICAgICAgICAgaWYgKG9m
ZnNldC5pc1Njb3BlKCkpCkBAIC0xNTksNyArMTU5LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRh
YmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAgICAgICAgIHJlc3VsdC0+bV9hcmd1bWVudHMu
c2V0KHZtLCByZXN1bHQsIGFyZ3VtZW50cyk7CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEpIHsK
LSAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJs
ZVJhcmVEYXRhPigpOworICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5
bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpdGVy
ID0gbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5iZWdpbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBA
IHZvaWQgU3ltYm9sVGFibGU6OnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYpCiAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7Cisg
ICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAg
IGZvciAoYXV0byBpdGVyID0gbV9tYXAuYmVnaW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5zZXQo
aXRlci0+a2V5LCBUeXBlUHJvZmlsZXJOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7CkBAIC0yMTAs
NyArMjEwLDcgQEAgQ29kZUJsb2NrKiBTeW1ib2xUYWJsZTo6cmFyZURhdGFDb2RlQmxvY2soKQog
dm9pZCBTeW1ib2xUYWJsZTo6c2V0UmFyZURhdGFDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0g
bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgQVNTRVJUKCFtX3JhcmVE
YXRhLT5tX2NvZGVCbG9jayk7CiAgICAgbV9yYXJlRGF0YS0+bV9jb2RlQmxvY2suc2V0KCpjb2Rl
QmxvY2stPnZtKCksIHRoaXMsIGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVTZXQuY3BwCmluZGV4IDQxMGViNmQ1YWUxNmYzNjAyMjZkYjM4MjNmN2VlODI4ZWNj
YWIzODMuLjQxYWNhOWQzZDRkOWI4YTU2YWU2ODUyMzBlOGQ2Njc1MmFjMGQwMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAg
U3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVyLmFw
cGVuZChtX3Byb3RvLT5wcm9wZXJ0eUhhc2goKSk7CiAgICAgfQogCi0gICAgbV9wcm9wZXJ0eUhh
c2ggPSBzdGQ6Om1ha2VfdW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsKKyAgICBt
X3Byb3BlcnR5SGFzaCA9IG1ha2VVbmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwog
ICAgIHJldHVybiAqbV9wcm9wZXJ0eUhhc2g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCA0ZTJkMGQzMjRhMjRlMjMyY2QxOTUzODkyZWQ4YjBhMzNiMGIwNWVlLi5i
NzA5MmMwOGVmNzJiMGVjYTg5ZmYwYjVjNGJlMWFlNTlhYTFkYmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNTIsMTggKzI1MiwxOCBAQCBWTTo6Vk0oVk1UeXBlIHZt
VHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpKQogI2VuZGlmIC8vIFVTRShDRikKICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCi0g
ICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxvY0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I+KCkpCi0gICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihz
dGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6
OlByaW1pdGl2ZSkpCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkK
LSAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlw
ZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGls
aWFyeSkpKQotICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91
bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9u
LCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKLSAgICAsIGNlbGxIZWFw
Q2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERv
ZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxB
dHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIHN0
cmluZ0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigp
KQotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8
SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBmYXN0TWFsbG9jQWxs
b2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisg
ICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2ln
YWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+
KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKyAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5p
cXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwg
SGVhcENlbGw6OkF1eGlsaWFyeSkpKQorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxU
eXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKKyAgICAs
IGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVz
KERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRy
aWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIHN0cmlu
Z0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQorICAgICwg
ZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGU+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICwgd2Vi
QXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrSGVhcENlbGxUeXBlPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhl
YXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5
cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShtYWtlVW5pcXVl
PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJs
eUZ1bmN0aW9uSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBD
ZWxsVHlwZT4oKSkKICNlbmRpZgogICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFj
ZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxs
VHlwZS5nZXQoKSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgz
ZTdjZDc2MgogICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2ln
YWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBqc1Zh
bHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2CkBAIC0yOTYsNyAr
Mjk2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwg
bV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5h
dG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5h
bWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCi0gICAgLCBtYWNoaW5l
Q29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQoc3RkOjptYWtlX3VuaXF1ZTxT
aW1wbGVTdGF0cz4oKSkKKyAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JC
YXNlbGluZUpJVChtYWtlVW5pcXVlPFNpbXBsZVN0YXRzPigpKQogICAgICwgY3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb25NYXAoKnRoaXMpCiAgICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKICAgICAs
IHN5bWJvbEltcGxUb1N5bWJvbE1hcCgqdGhpcykKQEAgLTMxMiw4ICszMTIsOCBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luaXRpYWxpemluZ09i
amVjdENsYXNzKDApCiAjZW5kaWYKICAgICAsIG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KDApCi0g
ICAgLCBtX2NvZGVDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPENvZGVDYWNoZT4oKSkKLSAgICAsIG1f
YnVpbHRpbkV4ZWN1dGFibGVzKHN0ZDo6bWFrZV91bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigq
dGhpcykpCisgICAgLCBtX2NvZGVDYWNoZShtYWtlVW5pcXVlPENvZGVDYWNoZT4oKSkKKyAgICAs
IG1fYnVpbHRpbkV4ZWN1dGFibGVzKG1ha2VVbmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhp
cykpCiAgICAgLCBtX3R5cGVQcm9maWxlckVuYWJsZWRDb3VudCgwKQogICAgICwgbV9wcmltaXRp
dmVHaWdhY2FnZUVuYWJsZWQoSXNXYXRjaGVkKQogICAgICwgbV9jb250cm9sRmxvd1Byb2ZpbGVy
RW5hYmxlZENvdW50KDApCkBAIC00MDcsNyArNDA3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIExMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygq
dGhpcyk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZVByb2ZpbGVyKCkpKSB7
Ci0gICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmls
ZXI6OkRhdGFiYXNlPigqdGhpcyk7CisgICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1h
a2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPigqdGhpcyk7CiAKICAgICAgICAgU3RyaW5nUHJp
bnRTdHJlYW0gcGF0aE91dDsKICAgICAgICAgY29uc3QgY2hhciogcHJvZmlsZXJQYXRoID0gZ2V0
ZW52KCJKU0NfUFJPRklMRVJfUEFUSCIpOwpAQCAtNDIzLDcgKzQyMyw3IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAg
ICBtX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlD
b250cm9sbGVyKCkpOwogCi0gICAgbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CisgICAgbV9ieXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5PigqdGhpcyk7CiAKICAgICBpZiAoT3B0aW9uczo6dXNlVHlwZVByb2ZpbGVyKCkpCiAgICAg
ICAgIGVuYWJsZVR5cGVQcm9maWxlcigpOwpAQCAtNDQyLDkgKzQ0Miw5IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdf
UFJPRklMRVIpCiAKICAgICBpZiAoT3B0aW9uczo6dXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudCgp
KQotICAgICAgICBzZXRGdXp6ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPFJhbmRvbWl6aW5nRnV6
emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8UmFu
ZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKICAgICBlbHNlIGlmIChPcHRpb25zOjp1c2VE
b3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQoKSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3Rk
OjptYWtlX3VuaXF1ZTxEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAg
ICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50
PigqdGhpcykpOwogCiAgICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmln
aW5NYXAoKSkKICAgICAgICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsK
QEAgLTQ1Nyw5ICs0NTcsOSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhh
dCB0aGUgSklUIGlzIGdvaW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvbXBpbGF0
aW9uIHRocmVhZHMuCiAgICAgaWYgKGNhblVzZUpJVCgpKSB7Ci0gICAgICAgIGppdFN0dWJzID0g
c3RkOjptYWtlX3VuaXF1ZTxKSVRUaHVua3M+KCk7CisgICAgICAgIGppdFN0dWJzID0gbWFrZVVu
aXF1ZTxKSVRUaHVua3M+KCk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgICAgIGZ0bFRodW5r
cyA9IHN0ZDo6bWFrZV91bmlxdWU8RlRMOjpUaHVua3M+KCk7CisgICAgICAgIGZ0bFRodW5rcyA9
IG1ha2VVbmlxdWU8RlRMOjpUaHVua3M+KCk7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAg
ICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsK
ICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0
cnVjdCk7CkBAIC02MTksNyArNjE5LDcgQEAgV2F0Y2hkb2cmIFZNOjplbnN1cmVXYXRjaGRvZygp
CiBIZWFwUHJvZmlsZXImIFZNOjplbnN1cmVIZWFwUHJvZmlsZXIoKQogewogICAgIGlmICghbV9o
ZWFwUHJvZmlsZXIpCi0gICAgICAgIG1faGVhcFByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxI
ZWFwUHJvZmlsZXI+KCp0aGlzKTsKKyAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBtYWtlVW5pcXVl
PEhlYXBQcm9maWxlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9oZWFwUHJvZmlsZXI7CiB9CiAK
QEAgLTEwNDEsOCArMTA0MSw4IEBAIHN0YXRpYyBib29sIGRpc2FibGVQcm9maWxlcldpdGhSZXNw
ZWN0VG9Db3VudCh1bnNpZ25lZCYgY291bnRlciwgY29uc3QgRnVuYyYgZG9ECiBib29sIFZNOjpl
bmFibGVUeXBlUHJvZmlsZXIoKQogewogICAgIGF1dG8gZW5hYmxlVHlwZVByb2ZpbGVyID0gW3Ro
aXNdICgpIHsKLSAgICAgICAgdGhpcy0+bV90eXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFR5cGVQcm9maWxlcj4oKTsKLSAgICAgICAgdGhpcy0+bV90eXBlUHJvZmlsZXJMb2cgPSBzdGQ6
Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlckxvZz4oKnRoaXMpOworICAgICAgICB0aGlzLT5tX3R5
cGVQcm9maWxlciA9IG1ha2VVbmlxdWU8VHlwZVByb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5t
X3R5cGVQcm9maWxlckxvZyA9IG1ha2VVbmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CiAg
ICAgfTsKIAogICAgIHJldHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX3R5
cGVQcm9maWxlckVuYWJsZWRDb3VudCwgZW5hYmxlVHlwZVByb2ZpbGVyKTsKQEAgLTEwNjEsNyAr
MTA2MSw3IEBAIGJvb2wgVk06OmRpc2FibGVUeXBlUHJvZmlsZXIoKQogYm9vbCBWTTo6ZW5hYmxl
Q29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVDb250cm9sRmxvd1Byb2Zp
bGVyID0gW3RoaXNdICgpIHsKLSAgICAgICAgdGhpcy0+bV9jb250cm9sRmxvd1Byb2ZpbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5t
X2NvbnRyb2xGbG93UHJvZmlsZXIgPSBtYWtlVW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7
CiAgICAgfTsKIAogICAgIHJldHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCht
X2NvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVkQ291bnQsIGVuYWJsZUNvbnRyb2xGbG93UHJvZmls
ZXIpOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgdm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEo
KQogCiB2b2lkIFZNOjpxdWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiB7Ci0gICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92
ZSh0YXNrKSkpOworICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8UXVldWVk
VGFzaz4oKnRoaXMsICZnbG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBW
TTo6ZHJhaW5NaWNyb3Rhc2tzKCkKQEAgLTEyMzAsMTQgKzEyMzAsMTQgQEAgdm9pZCBWTTo6ZW5z
dXJlU2hhZG93Q2hpY2tlbigpCiB7CiAgICAgaWYgKG1fc2hhZG93Q2hpY2tlbikKICAgICAgICAg
cmV0dXJuOwotICAgIG1fc2hhZG93Q2hpY2tlbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hp
Y2tlbj4oKTsKKyAgICBtX3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+
KCk7CiB9CiAKICNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMj
U2xvdygpIFwKICAgICB7IFwKICAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAg
YXV0byBzcGFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9J
TklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1h
a2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlw
ZSwgdHlwZSk7IFwKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBt
XyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCiAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQo
KTsgXApAQCAtMTI2OCw3ICsxMjY4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWEKICAgICBJ
c29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCgh
bV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwYWNl
QW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisg
ICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0Vf
SU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9y
ZUZlbmNlKCk7IFwKICAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAg
ICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggMjRmMThhZDAyZGUyZmVmOTAwOTM0
NDg2NDMwYzk4ZmU5NDk0MjRlZi4uNTMzOTNjYjI1OGY3NDJjNmFjZmRkZWFlYzZjNzE3NTY0NGQ3
OTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3IgewogICAg
IHZvaWQgZW1pdFBhdGNocG9pbnQoQmFzaWNCbG9jayogYmFzaWNCbG9jaywgQjM6OlBhdGNocG9p
bnRWYWx1ZSogcGF0Y2gsIFRtcCByZXN1bHQsIFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgaW5saW5l
U2l6ZT4mJiBhcmdzKQogICAgIHsKICAgICAgICAgaWYgKCFtX3BhdGNocG9pbnRTcGVjaWFsKQot
ICAgICAgICAgICAgbV9wYXRjaHBvaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpQYXRjaHBv
aW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNo
cG9pbnRTcGVjaWFsPigpKSk7CisgICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3Rh
dGljX2Nhc3Q8QjM6OlBhdGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVu
aXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpKTsKIAogICAgICAgICBJbnN0IGluc3QoUGF0
Y2gsIHBhdGNoLCBBcmc6OnNwZWNpYWwobV9wYXRjaHBvaW50U3BlY2lhbCkpOwogICAgICAgICBJ
bnN0IHJlc3VsdE1vdjsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7
CiAKICAgICAgICAgLy8gRklYTUU6IE1ha2UgYSBoYXNobWFwIG9mIHRoZXNlLgogICAgICAgICBC
Mzo6Q2hlY2tTcGVjaWFsOjpLZXkga2V5KGJyYW5jaCk7Ci0gICAgICAgIEIzOjpDaGVja1NwZWNp
YWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CisgICAgICAg
IEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFs
Kj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7
CiAKICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgbmVlZCBmb3IgZHVtbXkgdmFsdWVzCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAK
QEAgLTIxMzksMTAgKzIxMzksMTAgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4g
QjM6Ok9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4s
IFN0cmluZz4gcGFyc2VBbmRDb21waWxlQWlyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRp
b25Db250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25M
ZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9X
YXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlv
biYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBD
b3VudCogdGllclVwLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAg
Y29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q0NhbGxIZWxwZXJzPigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2lu
dEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9u
Q29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4o
KTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVl
PENDYWxsSGVscGVycz4oKTsKIAogICAgIEIzOjpQcm9jZWR1cmUgcHJvY2VkdXJlOwogICAgIENv
ZGUmIGNvZGUgPSBwcm9jZWR1cmUuY29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDIwOTQxNzdlZDZmMTgzYWI0ZDg2MmVj
MjI2N2QzMGYyOGI3ZGU1YjYuLjE1OGRmOWZhOWYwYzlmNzIxYWMyOTI3NzgxODhkY2YyOGU3MDdm
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAKQEAgLTE1NTEsMTAgKzE1NTEsMTAgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4o
KSAtPiBPcmlnaW4KIAogRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+
LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9u
Q29udGV4dCwgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVu
Z3RoLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2Fz
bUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
IGluZm8sIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwg
dWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhj
ZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlx
dWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIAotICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRl
ckVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBj
b21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPEND
YWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50
SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0
Lndhc21FbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBQ
cm9jZWR1cmUgcHJvY2VkdXJlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJR
UGxhbi5jcHAKaW5kZXggZjk4NWQ1MjNjMmU5M2YzYmQyM2ZiN2M1NzEyYjU4NjhjYzE2YTY4NS4u
NTA2ZGY0YmVmZDBkNTY0MTg0NGNlNTI3OTUxMTVmNjEyODcxNjFhMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQg
QkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBp
bGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAg
ICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNv
bXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICAgICAgICAg
ICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJB
c3NlbWJseSBCQlEgZnVuY3Rpb25bJWldICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWdu
YXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShm
dW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQo
ZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAg
ICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwogICAgICAgICAg
ICAgfQpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJz
dHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5j
dGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBp
bGF0aW9uPigKKyAgICAgICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24t
PmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAg
ICAgICAgICAgICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlv
blB0clRhZywgIkVtYmVkZGVyLT5XZWJBc3NlbWJseSBlbnRyeXBvaW50WyVpXSAlcyBuYW1lICVz
IiwgZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1h
a2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0
aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEo
KSksCiAgICAgICAgICAgICAgICAgICAgIFdURk1vdmUoY29udGV4dC5lbWJlZGRlckVudHJ5cG9p
bnRCeXByb2R1Y3RzKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT01HUGxhbi5jcHAKaW5kZXggYzUxM2ZkMmY1MGVkNmZiMTdjMzM4NWVmMjkwNTI3ODE3
MzkyMTAzNy4uMGQ3YTAzYzM2MTI5Y2QxZGUyYzU0ZmZjZDUwMjk1YjU2YzViODk5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtOTUsNyArOTUsNyBA
QCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBvbWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtl
VW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZl
ciwgQjNDb21waWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5IE9NRyBmdW5jdGlvblslaV0gJXMg
bmFtZSAlcyIsIG1fZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVs
ZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2Np
aSgpLmRhdGEoKSksCiAgICAgICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJv
ZHVjdHMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdv
cmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAK
aW5kZXggMzZkNzRjMTRiMThjNzA3YjgxMmEwNDg3ZjkxZTI5YzM4NTM5MWRlMi4uNjYwZjk1NjU3
MzhiMTBhMzBmM2U3Y2M4MThhMzJjODU4NzgyMTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgV29ya2xpc3Q6Oldv
cmtsaXN0KCkKICAgICBtX3RocmVhZHMucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ29tcGlsYXRp
b25UaHJlYWRzKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKLSAgICAg
ICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsaXN0OjpU
aHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKKyAgICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVu
ZChtYWtlVW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKIH0KIAogV29y
a2xpc3Q6On5Xb3JrbGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2Fz
bS5jcHAKaW5kZXggNWRkNDUxYmVhODRkNTkwYmJmMGZjYjA3NmUyNmZmZDNjYzdiODFhYy4uNzM1
MjIwMjg5MzdjNmRhYzFmYzQ3M2M3ZTRjZGM2NDk1OGNlOGVhNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9u
Q29udGV4dCYgY29tcAogewogICAgIENDYWxsSGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29u
dGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlx
dWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsK
IAogICAgIC8vIEZJWE1FIFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAppbmRleCA3ZjAzM2ZlYzFjMzY5YTk0MjNiMzNj
ZjhlYjMzMzRjNTFjZTA4MDhiLi5jNGI3N2NhZGJlNWVlYTU3M2VjODUyYjk1ZWY2YTc4OWI4Mjg1
MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5j
cHAKQEAgLTE3MDYsNyArMTcwNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgICAg
ICBkdW1wRGlzanVuY3Rpb24obV9ib2R5RGlzanVuY3Rpb24uZ2V0KCkpOwogI2VuZGlmCiAKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1f
Ym9keURpc2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2Nh
dG9yLCBsb2NrKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihX
VEZNb3ZlKG1fYm9keURpc2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVy
biwgYWxsb2NhdG9yLCBsb2NrKTsKICAgICB9CiAKICAgICB2b2lkIGNoZWNrSW5wdXQodW5zaWdu
ZWQgY291bnQpCkBAIC0xOTI2LDcgKzE5MjYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAg
ICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQgPSBwYXJlbnRoZXNlc0JlZ2luLmF0b20uc3VicGF0
dGVybklkOwogCiAgICAgICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gbGFzdFN1YnBhdHRl
cm5JZCAtIHN1YnBhdHRlcm5JZCArIDE7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5j
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywg
Y2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1h
a2VVbmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7
CiAKICAgICAgICAgdW5zaWduZWQgZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyA9IGJlZ2luVGVybSAr
IDE7CiAgICAgICAgIHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPnRlcm1zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoZW5kVGVybSAtIGZpcnN0VGVybUluUGFyZW50aGVzZXMgKyAyKTsKQEAgLTE5OTcs
NyArMTk5Nyw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAKICAgICB2b2lkIHJlZ2V4QmVnaW4o
dW5zaWduZWQgbnVtU3VicGF0dGVybnMsIHVuc2lnbmVkIGNhbGxGcmFtZVNpemUsIGJvb2wgb25j
ZVRocm91Z2gpCiAgICAgewotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7Cisg
ICAgICAgIG1fYm9keURpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51
bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24t
PnRlcm1zLmFwcGVuZChCeXRlVGVybTo6Qm9keUFsdGVybmF0aXZlQmVnaW4ob25jZVRocm91Z2gp
KTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zWzBdLmZyYW1lTG9jYXRpb24gPSAw
OwogICAgICAgICBtX2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggN2E3YzIwNmM3ZTQzNTk3Y2ZlNGM0ZDRkY2E4YTA3
YWM1YWMxZjY2MC4uOGFiNjJiN2JhMzk4MTA1MWViYmRhY2Q2ZTQ3YTA1OGFhZGQzZDliYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTM4OTksNyArMzg5OSw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9B
c3NlbWJsZXIgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1
bXBEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OmR1bXBSZWdFeHBEaXNhc3NlbWJseSgpKSkKLSAg
ICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyRGlzYXNzZW1i
bGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxZYXJy
RGlzYXNzZW1ibGVyPih0aGlzKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAg
ICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0U3RhcnRPZkNvZGUobGFiZWwoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKaW5kZXggNDlmNzdmNjljNjg1YzY1
MjAzZGYzZjAzNGM5MGQxODc3YzkyZGM5Yi4uZmNjNTFiMjc3ZjUwMTEwM2I3YzY1YmJkMzNhNWNh
NDEwZDgxYzBlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNw
cApAQCAtMjQwLDcgKzI0MCw3IEBAIGNsYXNzIENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3Igewog
ICAgIHsKICAgICAgICAgY29hbGVzY2VUYWJsZXMoKTsKIAotICAgICAgICBhdXRvIGNoYXJhY3Rl
ckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICAgICAgYXV0
byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAKICAgICAg
ICAgY2hhcmFjdGVyQ2xhc3MtPm1fbWF0Y2hlcy5zd2FwKG1fbWF0Y2hlcyk7CiAgICAgICAgIGNo
YXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5zd2FwKG1fcmFuZ2VzKTsKQEAgLTQ0MSw3ICs0NDEsNyBA
QCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgLCBtX2NoYXJhY3RlckNs
YXNzQ29uc3RydWN0b3IocGF0dGVybi5pZ25vcmVDYXNlKCksIHBhdHRlcm4udW5pY29kZSgpID8g
Q2Fub25pY2FsTW9kZTo6VW5pY29kZSA6IENhbm9uaWNhbE1vZGU6OlVDUzIpCiAgICAgICAgICwg
bV9zdGFja0xpbWl0KHN0YWNrTGltaXQpCiAgICAgewotICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5ID0g
bWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Jv
ZHkgPSBib2R5LmdldCgpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0
ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZN
b3ZlKGJvZHkpKTsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVj
dG9yIHsKICAgICAgICAgbV9wYXR0ZXJuLnJlc2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAgIG1f
Y2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvci5yZXNldCgpOwogCi0gICAgICAgIGF1dG8gYm9keSA9
IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJv
ZHkgPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJu
Lm1fYm9keSA9IGJvZHkuZ2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGRO
ZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5k
KFdURk1vdmUoYm9keSkpOwpAQCAtNjA4LDcgKzYwOCw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29u
c3RydWN0b3IgewogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVCghb3B0R3JvdXBO
YW1lKTsKIAotICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8g
cGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPiht
X2FsdGVybmF0aXZlKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0
dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRl
cm5JZCwgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwgY2FwdHVyZSwgZmFsc2UpKTsKICAg
ICAgICAgbV9hbHRlcm5hdGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVy
bmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92
ZShwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uKSk7CkBAIC02MTYsNyArNjE2LDcgQEAgY2xhc3MgWWFy
clBhdHRlcm5Db25zdHJ1Y3RvciB7CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uQmVnaW4oYm9vbCBpbnZlcnQgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGF1dG8gcGFyZW50
aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPiht
X2FsdGVybmF0aXZlKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFr
ZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2Fs
dGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBh
cmVudGhldGljYWxBc3NlcnRpb24sIG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2Fs
dGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsK
ICAgICAgICAgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwpAQCAtNzA3
LDcgKzcwNyw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAg
UGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0
aXZlc1thbHRdLmdldCgpOwogICAgICAgICAgICAgaWYgKCFmaWx0ZXJTdGFydHNXaXRoQk9MIHx8
ICFhbHRlcm5hdGl2ZS0+bV9zdGFydHNXaXRoQk9MKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFu
ZXdEaXNqdW5jdGlvbikgewotICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICAgICAgICAgICAg
ICBuZXdEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAg
ICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbi0+bV9wYXJlbnQgPSBkaXNqdW5jdGlvbi0+
bV9wYXJlbnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRl
cm5hdGl2ZSogbmV3QWx0ZXJuYXRpdmUgPSBuZXdEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRp
dmUoKTsKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0ZXJu
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZykKIAogc3RkOjp1
bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiBhbnljaGFyQ3JlYXRlKCkKIHsKLSAgICBhdXRvIGNo
YXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICBh
dXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKICAgICBj
aGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MDAsIDB4N2Yp
KTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJS
YW5nZSgweDAwODAsIDB4MTBmZmZmKSk7CiAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fY2hhcmFjdGVy
V2lkdGhzID0gQ2hhcmFjdGVyQ2xhc3NXaWR0aHM6Okhhc0JvdGhCTVBBbmROb25CTVA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCAwYjdkYjJlYmE4YWQ1MmRl
ZDJiNWY3ZTY3ZTU0NWI4YzE2Yzk0NWM3Li43ZTgyYzg1NWE4NzhlNmMxODBlZDUyMWYxZjdhZDQ4
ZDhjMWZiYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAg
LTM0MSw3ICszNDEsNyBAQCBzdHJ1Y3QgUGF0dGVybkRpc2p1bmN0aW9uIHsKICAgICAKICAgICBQ
YXR0ZXJuQWx0ZXJuYXRpdmUqIGFkZE5ld0FsdGVybmF0aXZlKCkKICAgICB7Ci0gICAgICAgIG1f
YWx0ZXJuYXRpdmVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4o
dGhpcykpOworICAgICAgICBtX2FsdGVybmF0aXZlcy5hcHBlbmQobWFrZVVuaXF1ZTxQYXR0ZXJu
QWx0ZXJuYXRpdmU+KHRoaXMpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhdHRlcm5B
bHRlcm5hdGl2ZSo+KG1fYWx0ZXJuYXRpdmVzLmxhc3QoKS5nZXQoKSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwppbmRleCBjMWY5
Zjk5ZGUwOTFjZWNiMmUxZGI1NWMzOGZhMzYwMzExZWUzN2Y0Li42OWNkODg4NjU3ODU0Y2Q1NDQ1
Zjg2M2UyMmQ1NWZmYjljNDBlZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9jcmVhdGVfcmVnZXhfdGFibGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L2NyZWF0ZV9yZWdleF90YWJsZXMKQEAgLTk1LDExICs5NSwxMSBAQCBmb3IgbmFtZSwgY2xhc3Nl
cyBpbiB0eXBlcy5pdGVtcygpOgogICAgIGZ1bmN0aW9uICs9ICgie1xuIikKICAgICBpZiBlbWl0
VGFibGVzIGFuZCBjbGFzc2VzWyJVc2VUYWJsZSJdOgogICAgICAgICBpZiAiSW52ZXJzZSIgaW4g
Y2xhc3NlczoKLSAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xh
c3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIg
JSAoY2xhc3Nlc1siSW52ZXJzZSJdKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1
dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0
cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52ZXJzZSJdKSkKICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5p
cXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQorICAgICAg
ICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8
Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCiAgICAgZWxzZToK
LSAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7XG4iKQorICAgICAgICBmdW5jdGlvbiArPSAoIiAg
ICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIp
CiAgICAgaGFzQk1QQ2hhcmFjdGVycyA9IEZhbHNlCiAgICAgaGFzTm9uQk1QQ2hhcmFjdGVycyA9
IEZhbHNlCiAgICAgZm9yIChtaW4sIG1heCkgaW4gcmFuZ2VzOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5
VGFibGVzLnB5CmluZGV4IGY5ZmVmNDY4ZDJiNWRkYTZhYWVlYWIwYjNmYzA1OGNkM2VlY2VhYzEu
LjUyNmZiNmU3YWMzYTIyN2E2ZDQzY2JiZWZkMjcwMmQxYTBjNTRjZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxl
cy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2Rl
UHJvcGVydHlUYWJsZXMucHkKQEAgLTUyOSw3ICs1MjksNyBAQCBkZWYgZHVtcE1hdGNoRGF0YShz
ZWxmLCBmaWxlLCB2YWx1ZXNQZXJMaW5lLCBkYXRhTGlzdCwgZm9ybWF0dGVyKToKICAgICBkZWYg
ZHVtcChzZWxmLCBmaWxlLCBjb21tYUFmdGVyKToKICAgICAgICAgZmlsZS53cml0ZSgic3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0ZXJDbGFzcz4ge30oKVxue3tcbiIuZm9ybWF0KHNlbGYu
Z2V0Q3JlYXRlRnVuY05hbWUoKSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAvLyBOYW1lID0g
e30sIG51bWJlciBvZiBjb2RlUG9pbnRzOiB7fVxuIi5mb3JtYXQoc2VsZi5uYW1lLCBzZWxmLmNv
ZGVQb2ludENvdW50KSkKLSAgICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xh
c3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPihcbiIpCisgICAgICAgIGZpbGUu
d3JpdGUoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFz
cz4oXG4iKQogICAgICAgICBmaWxlLndyaXRlKCIgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxVQ2hhcjMyPigiKQogICAgICAgICBzZWxmLmR1bXBNYXRjaERhdGEoZmlsZSwgOCwgc2VsZi5t
YXRjaGVzLCBsYW1iZGEgZmlsZSwgbWF0Y2g6IChmaWxlLndyaXRlKCJ7MDowPSM0eH0iLmZvcm1h
dChtYXRjaCkpKSkKICAgICAgICAgZmlsZS53cml0ZSgiKSxcbiIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2JlbmNo
bWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAKaW5kZXggY2M3MDdkZTNmZjRlYzEzOGNmYTQ2YWI0
YzhlMTNhYmI2NTkzY2JhMS4uOGM5N2MxYTI0MWI3MjlhZjhmMzFmMzU5YzdmNTE3N2E2MzQwOWRh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcApAQCAtNjEs
OCArNjEsOCBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3Qg
Y2hhciogbmFtZSkKICAgICB7CiAgICAgICAgIExvY2tUeXBlIGxvY2s7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVk
W10+KG51bVRocmVhZHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5b
XT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFk
cyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZFtdPihudW1UaHJlYWRzKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsKICAg
ICAKICAgICAgICAgdm9sYXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0cnVlOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwIGIvU291cmNlL1dU
Ri9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCmluZGV4IGYxNTY1MGQ0YzljOGZhNjc3MGY4
OTEyZjA5ZGZlMzkyOTEzMDdjMzQuLmJlN2FiYTM5MGViNTNlMzU4MWUzNmY0YThiOTUwMGQwZTI5
OWY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKQEAgLTc0LDkg
Kzc0LDkgQEAgc3RydWN0IEJlbmNobWFyayB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5
cGU+CiAgICAgc3RhdGljIHZvaWQgcnVuKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+IGxvY2tzID0gc3RkOjpt
YWtlX3VuaXF1ZTxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQ
ZXJHcm91cCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5b
XT4gbG9ja3MgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGluZzxM
b2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdp
dGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxXaXRoUGFkZGluZzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVt
VGhyZWFkc1Blckdyb3VwKTsKIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRy
dWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaCBiL1Nv
dXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaAppbmRleCAwYjU0MWI4YzczZDBmNTk4NjUx
YmY5NWU3NjkzYjgwN2M5OTlmNzhhLi44ODRlZDczMjMzNzYxYTI5ZmI0OTZmMGFkMDk4OTY3NTQ1
ZTcwMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKKysr
IGIvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCkBAIC0yNTQsNyArMjU0LDcgQEAg
Y2xhc3MgQ29uY3VycmVudFZlY3RvciBmaW5hbCB7CiAgICAgdm9pZCBhbGxvY2F0ZVNlZ21lbnQo
KQogICAgIHsKICAgICAgICAgbV9zZWdtZW50cy5ncm93KG1fbnVtU2VnbWVudHMgKyAxKTsKLSAg
ICAgICAgbV9zZWdtZW50c1ttX251bVNlZ21lbnRzKytdID0gc3RkOjptYWtlX3VuaXF1ZTxTZWdt
ZW50PigpOworICAgICAgICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBtYWtlVW5pcXVl
PFNlZ21lbnQ+KCk7CiAgICAgfQogCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwIGIvU291cmNlL1dU
Ri93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKaW5kZXggODNjMjA3NTFmODVmNGU0ZDIw
MTU2MTQ0MWNhODMxNDFjYjVjMzdmZi4uYzYzYzA1NWEwYTAzNDFkZjZhNWFmMjcwYTRhY2NiOGQ1
N2Q3ODQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKQEAg
LTczLDcgKzczLDcgQEAgdm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgp
CiAKICAgICB3aGlsZSAoIW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpIHsKICAgICAgICAgewotICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29s
ID0gKG1fdXNlQXV0b2RyYWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVz
ZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CisgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wg
PSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNl
KSA/IG1ha2VVbmlxdWU8QXV0b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKIAogICAgICAgICAg
ICAgbV90YXNrUXVldWUud2FpdEZvck1lc3NhZ2UoKS5wZXJmb3JtVGFzaygpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0
Zi9GYXN0TWFsbG9jLmgKaW5kZXggZWZlZmIzYTMxMzNlODNmNjQzMzZmZDJlYzJkYTUyYTU0ODMy
ZTYyMS4uOTViNjc1OTcyZDMxMGUzZGRiZDQxM2Q0YThmOGQxMjg4ZjIwZmFlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RN
YWxsb2MuaApAQCAtMzAxLDkgKzMwMSwxMSBAQCB1c2luZyBXVEY6OmZhc3RBbGlnbmVkRnJlZTsK
ICNkZWZpbmUgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQgXAogcHVibGljOiBcCiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFz
czsgXAogcHJpdmF0ZTogXAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29s
b25BZnRlclRoaXNNYWNybwogCiAjZGVmaW5lIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RCBcCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zh
c3RBbGxvY2F0ZWRDbGFzczsgXAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1p
Y29sb25BZnRlclRoaXNNYWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVByaW50
U3RyZWFtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKaW5kZXggM2Uy
NTNjZjJhYzIxOWNjODU1ODRkNDJjNDUxZWZjN2NhNzliNjRlYS4uNzA3NGMwM2FiYWY4ZmNmMzk3
N2YyYjExYWI5YzNkNmUzODE2MTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVBy
aW50U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGaWxlUHJpbnRTdHJlYW0+IEZpbGVQcmlu
dFN0cmVhbTo6b3Blbihjb25zdCBjaGFyKiBmaWxlbmFtZSwgY29uCiAgICAgaWYgKCFmaWxlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGVQcmludFN0cmVhbT4oZmlsZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsZVByaW50U3Ry
ZWFtPihmaWxlKTsKIH0KIAogdm9pZCBGaWxlUHJpbnRTdHJlYW06OnZwcmludGYoY29uc3QgY2hh
ciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9G
dW5jdGlvbi5oIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaAppbmRleCAwNWUzNjk3ODI1YmMz
ZDM0OWY0OGQ2OGMzMmE2ODYyMjU1ZmI1ODNlLi4wYjc5NTg2NzQ4MGZkMDMyMjQxMjQ1NGU3ZDBh
ZjgzMzhkNmUzYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKQEAgLTY3LDExICs2NywxMSBAQCBjbGFzcyBGdW5j
dGlvbjxPdXQoSW4uLi4pPiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUs
IGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IShzdGQ6OmlzX3BvaW50ZXI8Q2FsbGFi
bGVUeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9w
b2ludGVyPENhbGxhYmxlVHlwZT46OnR5cGU+Ojp2YWx1ZSkgJiYgc3RkOjppc19ydmFsdWVfcmVm
ZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKENhbGxh
YmxlVHlwZSYmIGNhbGxhYmxlKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFr
ZV91bmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4u
Pj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlciht
YWtlVW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4u
Lj4+KFdURk1vdmUoY2FsbGFibGUpKSkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVy
PEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1
bmN0aW9uKEZ1bmN0aW9uVHlwZSBmKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6
bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIElu
Li4uPj4oV1RGTW92ZShmKSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1ha2VV
bmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4o
V1RGTW92ZShmKSkpIHsgfQogCiAgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0CiAg
ICAgewpAQCAtODQsMTQgKzg0LDE0IEBAIGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8IShzdGQ6OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUgJiYgc3RkOjpp
c19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxlVHlwZT46OnR5
cGU+Ojp2YWx1ZSkgJiYgc3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6
dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYgY2Fs
bGFibGUpCiAgICAgewotICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RG
TW92ZShjYWxsYWJsZSkpOworICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IG1ha2VVbmlxdWU8
RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92
ZShjYWxsYWJsZSkpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9u
PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVl
Pjo6dHlwZT4KICAgICBGdW5jdGlvbiYgb3BlcmF0b3I9KEZ1bmN0aW9uVHlwZSBmKQogICAgIHsK
LSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbDo6Q2Fs
bGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOworICAg
ICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBw
ZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CiAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5o
IGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXggM2IxZTk1MzAzZGU1NDA1MTQzZmI1
NjNjY2I4MDQ3ZTVhY2VhZDBiMy4uYTRkMDc3Zjg0ZjAyYTFmYTFjMWJlMDM0YTg2ZWIzNTBkNmQ3
ZjQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTU4OCwxMCArNTg4LDEwIEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJB
VE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKDApCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1h
a2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkp
CiAjZW5kaWYKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKLSAgICAgICAgLCBt
X3N0YXRzKHN0ZDo6bWFrZV91bmlxdWU8U3RhdHM+KCkpCisgICAgICAgICwgbV9zdGF0cyhtYWtl
VW5pcXVlPFN0YXRzPigpKQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTEzMzQsMTAgKzEzMzQs
MTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBD
SEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMobnVsbHB0cikK
LSAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBt
X211dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NU
QVRTX1BFUl9UQUJMRQotICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4o
Km90aGVyLm1fc3RhdHMpKQorICAgICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxTdGF0cz4oKm90
aGVyLm1fc3RhdHMpKQogI2VuZGlmCiAgICAgewogICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNv
dW50ID0gb3RoZXIuc2l6ZSgpOwpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgaW5saW5lIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6SGFzaFRhYmxlKEhhc2hUYWJsZSYmIG90aGVyKQogI2lm
IENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgOiBtX2l0ZXJhdG9ycyhudWxscHRy
KQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAs
IG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlmCiAgICAgewogICAgICAgICBvdGhl
ci5pbnZhbGlkYXRlSXRlcmF0b3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcAppbmRleCA5ZTg3MjBmNmQ5YTc5ODBiOTVlNWIxM2M1ZTY1NWMzODk0OTMwNGI1Li41
Mzc5YzBhNGQ1YzhjNmYzNjdkOTE2OTZlMGQ2YTE4YzVkOWZlYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sIHVz
ZSkKICAgICB9CiAKICAgICBpZiAodXNlKSB7Ci0gICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4o
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVu
dFRpbWVyRmlyZWQpOworICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBtYWtlVW5pcXVlPFJ1
bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4+KFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKTsKICAgICAg
ICAgbV9tZWFzdXJlbWVudFRpbWVyLT5zdGFydFJlcGVhdGluZygzMF9zKTsKICAgICB9IGVsc2UK
ICAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgK
aW5kZXggYWY2NWUwOGNhODgwMjQwZWE5ZjE5YzNjMWZjMWZkYzU3YWI0ZDRhYi4uZGVmODM0MGUz
YzhhY2M4NTg2ZGE0ZjAwYmI4ZTlkYzU2ZTAxM2VmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvU3RkTGliRXh0cmFzLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAg
LTU2NSw2ICs1NjUsMjQgQEAgY29uc3RleHByIHNpemVfdCBjbHoodWludDMyX3QgdmFsdWUsIFpl
cm9TdGF0dXMgbWlnaHRCZVplcm8gPSBaZXJvU3RhdHVzOjpNYXlCZVoKIAogfSAvLyBuYW1lc3Bh
Y2Ugc3RkCiAKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBB
cmdzPgorQUxXQVlTX0lOTElORSBkZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVlKEFyZ3MmJi4uLiBh
cmdzKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVuYW1lIFQ6Ol9fZmFz
dEFsbG9jYXRlZENsYXNzLCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
VCwgY2xhc3MuLi4gQXJncz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwogI2RlZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RG
OjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKQogCiB1c2luZyBXVEY6OktCOwpAQCAtNTg1LDMg
KzYwMyw1IEBAIHVzaW5nIFdURjo6bWVyZ2VEZWR1cGxpY2F0ZWRTb3J0ZWQ7CiB1c2luZyBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y7CiB1c2luZyBXVEY6OnNhZmVDYXN0OwogdXNpbmcgV1RGOjp0
cnlCaW5hcnlTZWFyY2g7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWU7Cit1c2luZyBXVEY6Om1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
U3RyZWFtQnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAppbmRleCAyNmJi
YzhmZDY3YTQ5MzQ2MzIyMWQ2MTk2MThlYjdjNjQ2ODY0MDMwLi5jYTMzZjg2N2QzOGI1NzU5MjAx
NDFkNTIzYzMwN2FhZTdjODIwYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1C
dWZmZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApAQCAtNjAsNyArNjAs
NyBAQCBjbGFzcyBTdHJlYW1CdWZmZXIgewogICAgICAgICBtX3NpemUgKz0gc2l6ZTsKICAgICAg
ICAgd2hpbGUgKHNpemUpIHsKICAgICAgICAgICAgIGlmICghbV9idWZmZXIuc2l6ZSgpIHx8IG1f
YnVmZmVyLmxhc3QoKS0+c2l6ZSgpID09IEJsb2NrU2l6ZSkKLSAgICAgICAgICAgICAgICBtX2J1
ZmZlci5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCbG9jaz4oKSk7CisgICAgICAgICAgICAgICAg
bV9idWZmZXIuYXBwZW5kKG1ha2VVbmlxdWU8QmxvY2s+KCkpOwogICAgICAgICAgICAgc2l6ZV90
IGFwcGVuZFNpemUgPSBzdGQ6Om1pbihCbG9ja1NpemUgLSBtX2J1ZmZlci5sYXN0KCktPnNpemUo
KSwgc2l6ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5sYXN0KCktPmFwcGVuZChkYXRhLCBhcHBl
bmRTaXplKTsKICAgICAgICAgICAgIGRhdGEgKz0gYXBwZW5kU2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5k
ZXggNzNlOWRmZWMwNmZkNzg3ZjNiMDZiM2RjOWRhNjVhNTUwNGQxYzAyOS4uNjU5MTI1MWI4NjI3
ZGYzNmNmMmViOWY3NDc5M2VmNDg5Y2ExZTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VW5pcXVlUmVmLmgKKysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTMzLDExICsz
MywxOCBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFVuaXF1
ZVJlZjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KLVVuaXF1ZVJlZjxU
PiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLiBhcmdzKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVS
ZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQogewogICAgIHJldHVybiBV
bmlxdWVSZWY8VD4oKm5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlx
dWVSZWYoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8
dHlwZW5hbWUgVDo6X19mYXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VD4oc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFVuaXF1ZVJl
ZiB7CiBwdWJsaWM6CkBAIC02Myw3ICs3MCw3IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFQ+IG1vdmVUb1VuaXF1ZVB0cigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWYp
OyB9CiAKIHByaXZhdGU6Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJp
ZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CisgICAgdGVtcGxhdGU8
Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVm
V2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4pOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+
IGZyaWVuZCBjbGFzcyBVbmlxdWVSZWY7CiAKICAgICBVbmlxdWVSZWYoVCYgb3RoZXIpCkBAIC03
OSwzICs4Niw0IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAKIHVzaW5nIFdURjo6VW5pcXVlUmVmOwog
dXNpbmcgV1RGOjptYWtlVW5pcXVlUmVmOwordXNpbmcgV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91
dEZhc3RNYWxsb2NDaGVjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9v
cEdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXggNWU1
YmE4YWJlYmRiZDQ5YmJiODM3ZGQ0YzRmZDY5YmQ2ZmZjMzYxZi4uZmIyMTFkMGEyOTYxZGZjMTZh
YTZlMjFhMjFhOTc0ZGZmMTUyNjk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9S
dW5Mb29wR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAK
QEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBk
dXJhdGlvbiwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIGdfc291cmNlX3NldF9u
YW1lKHNvdXJjZS5nZXQoKSwgIltXZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hBZnRlciIpOwogICAg
IGdfc291cmNlX3NldF9yZWFkeV90aW1lKHNvdXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3Rp
bWUoKSArIGR1cmF0aW9uLm1pY3Jvc2Vjb25kc0FzPGdpbnQ2ND4oKSk7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PERpc3BhdGNoQWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwYXRj
aEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOwogICAgIGdfc291cmNlX3NldF9jYWxs
YmFjayhzb3VyY2UuZ2V0KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChzdGF0
aWNfY2FzdDxEaXNwYXRjaEFmdGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7CiAgICAgICAgIGNvbnRl
eHQtPmRpc3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBkY2JhMDYw
ODJjNWY2NmUzMTlhMTVlZTU5N2ZjNjQ5NzY2YjA1ZTZjLi41YmY0ZTZkMDFkZTg0M2VkMjg3ODgz
ZWEzYTAzZTg0OTQ5M2JlY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTE3
OSw3ICsxNzksNyBAQCBjbGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRv
cjo6SW1wbCB7CiB9OwogCiBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6
SXRlcmF0b3IoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpCi0g
ICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3
LmlzTnVsbCgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSks
IGluZGV4KSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmlu
Z1ZpZXcuaXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1Zp
ZXcpKSwgaW5kZXgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVz
dFBhcnNlci5jcHAKaW5kZXggZmRiOGNlMjkyZDczOGRhNDIwMzhhYTk2NWFmM2FjYTE3OGE4MGNl
Yi4uOGRjNzZmYTJlNTllYTY3ZTAyMTczOGMzMTFhMzU3N2Y0ZDM2ZTY5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFu
aWZlc3RQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlJbnZhbGlk
VVJMKGNvbnN0IFN0cmluZyYgcHJvcAogdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjps
b2dEZXZlbG9wZXJXYXJuaW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9j
b25zb2xlQ29udGV4dCkKLSAgICAgICAgbV9jb25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihKU0M6Ok1lc3Nh
Z2VTb3VyY2U6Ok90aGVyLCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2csIEpTQzo6TWVzc2FnZUxldmVs
OjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0ICJfcywg
bV9tYW5pZmVzdFVSTC5zdHJpbmcoKSwgIjogIl9zLCBtZXNzYWdlKSkpOworICAgICAgICBtX2Nv
bnNvbGVDb250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KEpTQzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6
OkxvZywgSlNDOjpNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBw
bGljYXRpb24gbWFuaWZlc3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1l
c3NhZ2UpKSk7CiB9CiAKIFVSTCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZVN0YXJ0
VVJMKGNvbnN0IEpTT046Ok9iamVjdCYgbWFuaWZlc3QsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFj
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNw
cAppbmRleCA5YmZhNWY5NDk5NGIwNTQ1MDZiODI2YTMxNGI4MjU4MjdlYTQxYWRiLi43ZTRmNzk0
NzFlMmM1OWZlNzFjMTQ4MTMyZjRiNTUxZDhmZmM3OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
TmF2aWdhdG9yQmVhY29uKiBOYXZpZ2F0b3JCZWFjb246OmZyb20oTmF2aWdhdG9yJiBuYXZpZ2F0
b3IpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckJlYWNv
bio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFt
ZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0b3IpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdh
dG9yKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTVdpbmRvd0NhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdp
bmRvd0NhY2hlcy5jcHAKaW5kZXggNWVkMWY1Y2NhNjQxZWIwNGVjMGUwYTBjZTA2YzgzNzI0NTY4
YTJmZi4uNjE1Mzk0MzBkZmI5NjE2ZmQyODhmZWQ5MmNiOTQ0ZmY0NDZiMDEwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcApAQCAtNDks
NyArNDksNyBAQCBET01XaW5kb3dDYWNoZXMqIERPTVdpbmRvd0NhY2hlczo6ZnJvbShET01XaW5k
b3cqIHdpbmRvdykKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2lu
ZG93Q2FjaGVzKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93KTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRv
dyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtl
ckdsb2JhbFNjb3BlQ2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29y
a2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCmluZGV4IDA2NTZiZWYwYjE3MThlMzNkYmM3ZmEwZWU2
MGM1N2Q0OGUzOGQ0ZTguLjUxMThhNDg4NTBmMjQyZDA0NGQzYjQwZmYwZTNiMjNiYjk2ZTI4ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2Nv
cGVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdvcmtlckdsb2JhbFNjb3BlQ2Fj
aGVzKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJvbShXb3JrZXJHbG9iYWxTY29wZSYgc2Nv
cGUpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNj
b3BlQ2FjaGVzKj4oU3VwcGxlbWVudDxXb3JrZXJHbG9iYWxTY29wZT46OmZyb20oJnNjb3BlLCBz
dXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM+
KHNjb3BlKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJH
bG9iYWxTY29wZUNhY2hlcz4oc2NvcGUpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZzY29wZSwgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNy
ZWRlbnRpYWxzLmNwcAppbmRleCA3MWY0MzhjZjc4NmM3NmQ3YjU4NzIxNTU5NzY2OGI2MjM2MWI1
OTkzLi4xMTgxYmQ5ODVhMjJiYTQ5M2Y4MzYzMWQ3ZTQxZmVlODc5YjU2YjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNy
ZWRlbnRpYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5h
Z2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOYXZpZ2F0
b3JDcmVkZW50aWFscyogTmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20oTmF2aWdhdG9yKiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yQ3JlZGVudGlhbHMqIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxOYXZpZ2F0b3JDcmVkZW50aWFscyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShu
YXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JDcmVk
ZW50aWFscz4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZp
Z2F0b3JDcmVkZW50aWFscz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdU
Rk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IGI2
ZmQ2OGQ2NzJlZGUzODc3OGMxNWM2ZmVhYWY0NmI0NTVlNWExY2QuLjc1ZWRiNmE5MzYzODgwZTU4
N2MzNTc1NmIxNGRlYzlmOWI0NWU2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtMTMzLDcg
KzEzMyw3IEBAIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhCiAgICAgICAgIGF1dG8gc3lzdGVtSUQg
PSBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRCh2aWV3
LCBvZmZzZXQpOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAg
ICAgICAgaWYgKHN5c3RlbUlEID09IElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveDo6ZmFpclBs
YXlTeXN0ZW1JRCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZwc1Bzc2ggPSBzdGQ6Om1ha2VfdW5p
cXVlPElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveD4oKTsKKyAgICAgICAgICAgIGF1dG8gZnBz
UHNzaCA9IG1ha2VVbmlxdWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOwogICAgICAg
ICAgICAgaWYgKCFmcHNQc3NoLT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgIHBzc2hCb3hlcy5hcHBlbmQoV1RGTW92
ZShmcHNQc3NoKSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEK
ICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShzeXN0ZW1JRCk7CiAjZW5kaWYKLSAgICAgICAg
YXV0byBwc3NoQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g+KCk7CisgICAgICAgIGF1dG8gcHNzaEJveCA9IG1ha2VVbmlxdWU8SVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94PigpOwogICAgICAgICBpZiAoIXBzc2hCb3gt
PnJlYWQodmlldywgb2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE0uY3BwCmluZGV4IDgyNjI4OTNmZTBhZjk5OTE0ZWQzOWU5NjBjZjEwYTc1
MzQwNzA1YjYuLjgzN2RmMTIzYWU1OTZmMzUzN2M5MTUyNzAzZTNkMjcxYjM0NmViNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNLmNwcApAQCAtNjEsMTUgKzYxLDE1IEBAIHN0cnVjdCBDRE1GYWN0b3J5IHsK
IHN0YXRpYyBWZWN0b3I8Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQogewog
ICAgIHN0YXRpYyBhdXRvIGNkbXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPENETUZhY3Rv
cnkqPiB7Ci0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKKyAg
ICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5PihjZG0pOyB9LAogICAgICAgICAgICAgTGVnYWN5
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5Q0RNUHJpdmF0ZUNs
ZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogICAgICAgICAvLyBGSVhN
RTogaW5pdGlhbGl6ZSBzcGVjaWZpYyBVQSBDRE1zLiBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMx
OCwgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMjAKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10o
TGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlh
UGxheWVyPihjZG0pOyB9LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNk
bSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCiAg
ICAgICAgICAgICBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtLCBDRE1Q
cml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAjaWYg
KEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikgfHwgSEFWRShBVlNUUkVBTVNFU1NJT04pKSAmJiBF
TkFCTEUoTUVESUFfU09VUkNFKQotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0q
IGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDPihjZG0pOyB9LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkg
eyByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9
LAogICAgICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlT
eXN0ZW0sIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5k
TWltZVR5cGUpLAogI2VuZGlmCiAgICAgfSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeUNETT4gTGVnYWN5Q0RNOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCiAgICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUNETT4oa2V5
U3lzdGVtKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3RlbSk7CiB9
CiAKIExlZ2FjeUNETTo6TGVnYWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uaAppbmRleCA0NThlYzUzYjQzMzdiMTcxMDU1NmY4YTE3YjRlZjAxZWZjZTE1NjRlLi5m
YjVkYTFmMTZkYTAyZWM4NGMzNDc3ZDM1NWZlMGE1ZTg5NjQwNmE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0u
aApAQCAtNTAsNyArNTAsOCBAQCBjbGFzcyBMZWdhY3lDRE1DbGllbnQgewogICAgIHZpcnR1YWwg
UmVmUHRyPE1lZGlhUGxheWVyPiBjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25z
dCA9IDA7CiB9OwogCi1jbGFzcyBMZWdhY3lDRE0geworY2xhc3MgTGVnYWN5Q0RNIGZpbmFsIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdh
Y3lDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2
YXRlLmgKaW5kZXggMGE4ZDU0ZTVjNTY1ZjM0NTA4NTYyYzVhOGMxZTAwMzVhZjE0YTc0Zi4uZjI0
OTcwNzJlNzg1NzYwYzU5ZTIzMDM5MzRmYjdmOWNjNDc3MmRmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETVByaXZhdGUuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwog
Y2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDsKIAogY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFj
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0
ZUludGVyZmFjZSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlSW50ZXJmYWNl
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktl
eS5jcHAKaW5kZXggYzkzMTZkZmQ4YWJiNDA1NDkyZjU1NWViM2QxYjNkMDkxN2NlZmY1MC4uM2E4
YzAwZjUyMzFmNTJhNmU4OWQxODNkMTUxMWMzYWM4NzczYTFmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNs
ZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wg
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lDRE1Q
cml2YXRlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xp
ZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25DbGVhcktleT4o
Y2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVu
dCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgK
aW5kZXggMmY3YjAzNTM5ZWY4ZWE0NzRlMjM2ZDA1ZDllMTdmZWM0ODRlNjI3ZS4uYmM3NzdmMGNi
YzhjZTdiODllOTQzYjhhNjNlNGU2ZTgyODliMzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDRE1TZXNzaW9uQ2xlYXJLZXkgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vz
c2lvbiB7CitjbGFzcyBDRE1TZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RN
U2Vzc2lvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RN
U2Vzc2lvbkNsZWFyS2V5KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5D
RE1TZXNzaW9uQ2xlYXJLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKaW5kZXggYWRkYzU0ODk2YjhhNDQzOGNmYmZkMDY1ODBhZGJjODYw
YTgxZjg2NC4uZGI2MzkwZTdmOTkyNTk3N2I4N2NhMDA5ZWRhYmQ1MWNkYjY2NzMzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI0
NCw3ICsyNDQsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBi
bG9iLCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCiAgICAgfQogCiAgICAgbV9ibG9iTG9h
ZGVyLmVtcGxhY2UoKnRoaXMpOwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOworICAgIG1fYmxv
YkxvYWRlci0+bG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwg
Y29uc3VtZXIpOwogCiAgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGJsb2IpOwogICAgIGlmICghbV9ibG9iTG9hZGVyLT5sb2FkZXItPmlz
U3RhcnRlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAppbmRleCBjZDM0NWViOWVjMzQwYzM2ZTBmMGE2ZWVkODJkZDk4OGI0Zjk3ZDM5Li45
NDAxM2NmNGVhNjUyMzhkODNiOWI0YzgxZGI3ZDE4MTY1MzI0NzE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdAogCiAgICAgcmVzcG9uc2UtPmFkZEFib3J0U3RlcHMo
cmVxdWVzdC5zaWduYWwoKSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxCb2R5TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNh
bGxiYWNrKSk7CisgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG1ha2VVbmlxdWU8Qm9keUxv
YWRlcj4ocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwogICAgIGlm
ICghcmVzcG9uc2UtPm1fYm9keUxvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAg
ICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBudWxscHRyOwogfQpAQCAtMzgyLDcgKzM4Miw3
IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAKIGJvb2wgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRl
cjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1
ZXN0JiByZXF1ZXN0KQogewotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExv
YWRlcj4oKnRoaXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7CisgICAgbV9sb2Fk
ZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5j
b25zdW1lcigpKTsKICAgICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCk7CiAgICAg
cmV0dXJuIG1fbG9hZGVyLT5pc1N0YXJ0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAppbmRleCA2MTAyMDg5OWNiYzRh
N2U0MzNiMTUxZGNjYWViZmU5MDc2NGQzZTJkLi44NTBkMjJkZTI4NWJiMzM1ZDIyZThjMmUyNTNi
N2FiNmUwYzYwMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQv
TmF2aWdhdG9yR2FtZXBhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFk
L05hdmlnYXRvckdhbWVwYWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvckdhbWVwYWQq
IE5hdmlnYXRvckdhbWVwYWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2
aWdhdG9yR2FtZXBhZCogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdhbWVwYWQq
PihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRv
ciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGIwOWZjMzQzM2JiZmJiNzI4ZjMxNWMxNTMzYTZmMmM5
ZTRmYzAwNzEuLmNkODA3MGIyMDdkYjhhMzQ0MDI2Y2ZmNjEwNWI4NWVlMTliYzUyNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBjb25zdCBjaGFyKiBHZW9s
b2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIHZvaWQgcHJvdmlkZUdlb2xvY2F0
aW9uVG8oUGFnZSogcGFnZSwgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NF
UlQocGFnZSk7Ci0gICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2Nh
dGlvbkNvbnRyb2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpw
cm92aWRlVG8ocGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBt
YWtlVW5pcXVlPEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAg
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCBiMzRm
NDlhNjcxZDg1ZjUxNDJiOGJhZjBmNTJiYTk5MWFjNDM1OWRjLi4zNWRmYmY4ZjNmMjU2OWMwMTM1
MzU2NjMwMGY1Yjc4MzdkZTI4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBOYXZpZ2F0b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20o
TmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIHN1cHBs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHZW9sb2NhdGlvbio+KFN1cHBsZW1lbnQ8TmF2
aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRl
VG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9N
V2luZG93SW5kZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYzcyMDNhOWE4NjQwOTcwNTBk
M2RjMDA3OTJmN2E2YjU4MWZhYTI1ZS4uNWU5ZDk3OTY2YmZkZTU4ZTY2MDk5YTUwOWU2MThiODRj
MThkMDVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9N
V2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERP
TVdpbmRvd0luZGV4ZWREYXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKERP
TVdpbmRvdyogd2luZG93KQogewogICAgIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSo+KFN1cHBsZW1lbnQ8
RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxET01XaW5kb3dJbmRleGVkRGF0YWJhc2U+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwCmluZGV4IGY0MzA5MGM0ZGNjM2VkZTVlMjdkMWFhNDQzODQ0NDdkODQ5YzY0MGIu
LjlhNzgxMjc4NDYzZWQwYTRhMGFkZGQzZjdkYjBjNTY1Njk2MmI5Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTUx
Nyw3ICs1MTcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6
aW5kZXgoY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKCFpbmZvKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmRl
eCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIHNwZWNpZmllZCBpbmRleCB3YXMgbm90IGZvdW5k
LiJfcyB9OwogCi0gICAgYXV0byBpbmRleCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBpbmRleCA9
IG1ha2VVbmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAq
dGhpcyk7CiAKICAgICBSZWY8SURCSW5kZXg+IHJlZmVyZW5jZWRJbmRleCB7ICppbmRleCB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAKaW5kZXggZmEyY2Q3ZWFkMDliNjA1NTI1YjhjYjQ0MWVmNzAwMWQ4MzM1MDEwMC4uNDIy
NDNmYmE1NzMxMjk1NDE4ODk0YTMyMDQzZTg5ZTBiMmMxYTVlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTc5LDcg
KzE3OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQlRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYgKCFpbmZvIHx8ICghZm91
bmQgJiYgIWlzVmVyc2lvbkNoYW5nZSgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dEZvdW5kRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3RvcmUnIG9uICdJREJUcmFu
c2FjdGlvbic6IFRoZSBzcGVjaWZpZWQgb2JqZWN0IHN0b3JlIHdhcyBub3QgZm91bmQuIl9zIH07
CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RTdG9y
ZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBhdXRvIG9i
amVjdFN0b3JlID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgKmluZm8sICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVj
dFN0b3JlLmdldCgpOwogICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3Rv
cmVOYW1lLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBSZWY8
SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mCiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNl
ZE9iamVjdFN0b3JlTG9jayk7CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRo
aXMpOworICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2Jq
ZWN0U3RvcmUgPSBvYmplY3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9y
ZXMuc2V0KGluZm8ubmFtZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTc1NSw3ICs3
NTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJ
bmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5j
cmVhdGVJbmRleE9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7CiAgICAgfSkpOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGluZm8sIG9iamVjdFN0b3JlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRl
eGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGE0ODUwM2I0ZDJkODA0Mjk0Njg0
YTY1YTY1ZWJkNjRmMjMzY2Q3YjkuLjliNzU3NzQ5MjFiNDY1MDZmNTgzZGU3ZmVjNDI1MGU4NTRh
Y2U1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtl
ckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU5
LDcgKzU5LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckdsb2Jh
bFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKFdvcmtlckcKICAgICAgICAgaWYgKCFjb25uZWN0
aW9uUHJveHkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERh
dGFiYXNlPihzY29wZSwgKmNvbm5lY3Rpb25Qcm94eSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IG1ha2VVbmlxdWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3Bl
LCAqY29ubmVjdGlvblByb3h5KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1v
dmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5j
cHAKaW5kZXggOTQ4Y2Y3NDY2M2FlNjljODJkYTQ0NGUwOTM0NzNkZDg1NmQ0ZGU5My4uMzc3MTFk
YzEwM2RiNmM5YTliODEzZGJjOWRmNzk5YjdlMjZhNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZl
cj4gSURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoSURCQ29ubmVjdGlvblRvU2VydmVyRGUK
IAogSURCQ29ubmVjdGlvblRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIoSURCQ29ubmVj
dGlvblRvU2VydmVyRGVsZWdhdGUmIGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShtYWtlV2Vh
a1B0cihkZWxlZ2F0ZSkpCi0gICAgLCBtX3Byb3h5KHN0ZDo6bWFrZV91bmlxdWU8SURCQ29ubmVj
dGlvblByb3h5PigqdGhpcykpCisgICAgLCBtX3Byb3h5KG1ha2VVbmlxdWU8SURCQ29ubmVjdGlv
blByb3h5PigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmlu
ZGV4IDI3NTNmZDBjMjQ1N2I5YzA5ZDlkODllNGY3NjJiNDc5ZjhiNDQwYjEuLjhlMWRlMDZkNzFl
OGYwYjIyM2Q2ODZlNWUxYThhMjIwOWI3NDM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rp
b25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlm
IChtX2luZGV4SWRlbnRpZmllcikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1ZXN0
LnJlcXVlc3RlZEluZGV4UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1
ZXN0LnBlbmRpbmdDdXJzb3IoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZp
ZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCiAgICAgbV9pZGJS
ZXF1ZXN0ID0gJnJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IGY2YWI0ZjNhYjJjMjhiMGVlMjI0
Njg5NGEwZGU1ODRiZDA4NzUxZmQuLmY1NTY4ZTMyNWQzNzAxMWEyNzVlMDFkZjk2NmRmZGY1OTUy
ZThiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVW5pcXVlSURCRGF0YWJhc2Um
IElEQlNlcnZlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFz
ZUlkZW4KIAogICAgIGF1dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNl
TWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKICAgICBpZiAodW5pcXVlSURCRGF0YWJhc2Uu
aXNOZXdFbnRyeSkKLSAgICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0g
c3RkOjptYWtlX3VuaXF1ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOwor
ICAgICAgICB1bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFVu
aXF1ZUlEQkRhdGFiYXNlPigqdGhpcywgaWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gKnVuaXF1
ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9y
ZShjb25zdCBJREJEYXRhYmFzZQogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVu
dGlmaWVyKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBt
X2JhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFi
YXNlRGlyZWN0b3J5UGF0aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcik7CiB9
CiAKIHZvaWQgSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgSURCU2VydmVyOjpRdW90YVVzZXI6
OmluaXRpYWxpemVTcGFjZVVzZWQodWludDY0X3Qgc3BhY2VVc2VkKQogSURCU2VydmVyOjpRdW90
YVVzZXImIElEQlNlcnZlcjo6ZW5zdXJlUXVvdGFVc2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luKQogewogICAgIHJldHVybiAqbV9xdW90YVVzZXJzLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAm
b3JpZ2luXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlcj4oKnRo
aXMsIG1fcXVvdGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmln
aW4geyBvcmlnaW4gfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFF1b3RhVXNlcj4oKnRo
aXMsIG1fcXVvdGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmln
aW4geyBvcmlnaW4gfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVl
U3RvcmUuY3BwCmluZGV4IDY5ODNjOWQ3ZWFmZjU2MTY3MjA0ZDk1MmYxZjIyNjdiYjQwY2E0YmEu
LjhkOTIxZDhlZmU2YmE4NDBhMzBkNjFkZmRjNmE3MjFlODI4YTQzYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVl
U3RvcmUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIElEQkVycm9yIEluZGV4VmFsdWVTdG9yZTo6YWRk
UmVjb3JkKGNvbnN0IElEQktleURhdGEmIGluZGV4S2V5LCBjb25zdCBJREJLZXlEYXRhCiAgICAg
ICAgIHJldHVybiBJREJFcnJvcihDb25zdHJhaW50RXJyb3IpOwogCiAgICAgaWYgKHJlc3VsdC5p
c05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZUVudHJ5PihtX3VuaXF1ZSk7CiAKICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGRLZXkodmFsdWVLZXkpOwogICAgIG1fb3JkZXJlZEtl
eXMuaW5zZXJ0KGluZGV4S2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24uY3BwCmluZGV4IDQ3Y2M0MmZkMjZkNjQ3M2M2NDE5MjdlOTkyZDRlYzZlOGQ3YmY4
ZWUuLjVlNzE0NDk3ODRhMGRhMDc2Nzc4OWE4ZGVkYzUyMjY4OWY0ZDhkY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uPiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6Y3JlYXRlKE1l
bW9yeUlEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mIGluZm8pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7CiB9
CiAKIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbihNZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJiBpbmZvKQpAQCAtNTIsNyArNTIsNyBAQCBNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oTWVtb3J5SURCQmFja2lu
Z1N0bwogICAgICAgICBJREJEYXRhYmFzZUluZm8gaW5mbzsKICAgICAgICAgYXV0byBlcnJvciA9
IG1fYmFja2luZ1N0b3JlLmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGluZm8pOwogICAgICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgICAgICAgICAg
bV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZv
KTsKICAgICB9CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVj
dAogCiAgICAgYXV0byBvcmlnaW5hbEFkZFJlc3VsdCA9IG1fb3JpZ2luYWxWYWx1ZXMuYWRkKCZv
YmplY3RTdG9yZSwgbnVsbHB0cik7CiAgICAgaWYgKG9yaWdpbmFsQWRkUmVzdWx0LmlzTmV3RW50
cnkpCi0gICAgICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+KCk7CiAKICAgICBhdXRvKiBtYXAg
PSBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2QxNDJiMDA1MGFiNjA4ODFlMzg3YmU4YzE5ODk0
N2FjNmU4ZGQ4MS4uY2ZmZTMzMzdmNzk0NDhiOGMyMTNkYmJlNWZhMzViNGQzYTcwZjJmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGlj
IHVpbnQ2NF90IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsKIAogc3Rk
Ojp1bmlxdWVfcHRyPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4gTWVtb3J5SURCQmFja2luZ1N0b3Jl
OjpjcmVhdGUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmll
cik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlm
aWVyKTsKIH0KIAogTWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUo
Y29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtNjEsNyArNjEsNyBA
QCBNZW1vcnlJREJCYWNraW5nU3RvcmU6On5NZW1vcnlJREJCYWNraW5nU3RvcmUoKSA9IGRlZmF1
bHQ7CiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJh
c2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VJbmZv
KQotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJ
bmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAgICAgICBtX2RhdGFiYXNl
SW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VO
YW1lKCksIDApOwogCiAgICAgaW5mbyA9ICptX2RhdGFiYXNlSW5mbzsKICAgICByZXR1cm4gSURC
RXJyb3IgeyB9OwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
c2V0RGF0YWJhc2VJbmZvKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbykKICAgICAvLyBJdCBp
cyBub3QgdmFsaWQgdG8gZGlyZWN0bHkgc2V0IGRhdGFiYXNlIGluZm8gb24gYSBiYWNraW5nIHN0
b3JlIHRoYXQgaGFzbid0IGFscmVhZHkgc2V0IGl0cyBvd24gZGF0YWJhc2UgaW5mby4KICAgICBB
U1NFUlQobV9kYXRhYmFzZUluZm8pOwogCi0gICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiB9CiAKIElEQkVycm9yIE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGlu
Zm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUluZGV4LmNwcAppbmRleCA0OWRkY2E2YmQ0MGQyOWQ0MmUzOGI4NTEzMWM4OWZkZmU3
ZDQ3OTJkLi44NTk1ZGJiOGY0YTdlZTNkMTkxZTMxZmI2MTBiMDQ5NzViODc0NjBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
bmRleC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBJREJFcnJvciBNZW1vcnlJbmRleDo6cHV0SW5k
ZXhLZXkoY29uc3QgSURCS2V5RGF0YSYgdmFsdWVLZXksIGNvbnN0IEluZGV4S2V5JiBpbgogICAg
IExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6cHJvdmlzaW9uYWxQdXRJbmRleEtleSIpOwog
CiAgICAgaWYgKCFtX3JlY29yZHMpIHsKLSAgICAgICAgbV9yZWNvcmRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbmRleFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUoKSk7CisgICAgICAgIG1fcmVjb3Jk
cyA9IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOwogICAgICAg
ICBub3RpZnlDdXJzb3JzT2ZBbGxSZWNvcmRzQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtMjU5LDcg
KzI1OSw3IEBAIE1lbW9yeUluZGV4Q3Vyc29yKiBNZW1vcnlJbmRleDo6bWF5YmVPcGVuQ3Vyc29y
KGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
c3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8pOworICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1lbW9yeUluZGV4Q3Vyc29yPigqdGhp
cywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IGVkNmViYTkyN2YxZjRmNmI5YzMwNjhmNmI1
ZDg4ZGUyOTk3MjY3ZWIuLjViNDRhNzM4NzhjOWZkZDdhMWUwNWE5NWI3NjU3ZWJlNjM2MzUxNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMjU5LDggKzI1OSw4IEBAIElEQkVycm9y
IE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aW9uCiAKICAgICBpZiAoIW1fa2V5VmFsdWVTdG9yZSkgewogICAgICAgICBB
U1NFUlQoIW1fb3JkZXJlZEtleXMpOwotICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEtleVZhbHVlTWFwPigpOwotICAgICAgICBtX29yZGVyZWRLZXlzID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJLZXlEYXRhU2V0PigpOworICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBt
YWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOworICAgICAgICBtX29yZGVyZWRLZXlzID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SURCS2V5RGF0YVNldD4oKTsKICAgICB9CiAKICAg
ICBhdXRvIG1hcFJlc3VsdCA9IG1fa2V5VmFsdWVTdG9yZS0+c2V0KGtleURhdGEsIHZhbHVlLmRh
dGEoKSk7CkBAIC00OTcsNyArNDk3LDcgQEAgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IqIE1lbW9y
eU9iamVjdFN0b3JlOjptYXliZU9wZW5DdXJzb3IoY29uc3QgSURCQ3Vyc29ySW5mbyYKICAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeU9iamVjdFN0b3Jl
Q3Vyc29yPigqdGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0aGlzLCBpbmZvKTsKICAgICByZXR1cm4g
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCA0ZjIwOGU0ZDA2MDRiODc3ZGQxZDc0ODY3YjhlM2UyODcyN2FjMDQ0
Li42ZTg5M2Y5ODQ0ZTcwOGVkMTk3MmI0YTJjMThiMTU5ZmE3MGI1OTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxh
dGVJbml0aWFsCiAgICAgfQogCiAgICAgLy8gVGhpcyBpbml0aWFsIGRhdGFiYXNlIGluZm8gbWF0
Y2hlcyB0aGUgZGVmYXVsdCB2YWx1ZXMgd2UganVzdCBwdXQgaW50byB0aGUgbWV0YWRhdGEgZGF0
YWJhc2UuCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lk
ZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0
RXhpc3RpbmdEYXRhYmFzZUluZm8oKQpAQCAtNjU4LDcgKzY1OCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5n
RGF0YWJhc2VJCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGRhdGFiYXNlSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVy
c2lvbik7CisgICAgYXV0byBkYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOwogCiAgICAgewogICAgICAgICBTUUxp
dGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBh
dXRvSW5jLCBtYXhJbmRleElEIEZST00gT2JqZWN0U3RvcmVJbmZvOyJfcyk7CkBAIC04MjAsNyAr
ODIwLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERh
dGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KIAogICAgIFN0cmluZyBkYkZpbGVuYW1l
ID0gZnVsbERhdGFiYXNlUGF0aCgpOwogCi0gICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlx
dWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9zcWxpdGVEQiA9IG1ha2VVbmlxdWU8U1FMaXRl
RGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX3NxbGl0ZURCLT5vcGVuKGRiRmlsZW5hbWUpKSB7CiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGgg
JyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIo
KTsKQEAgLTkwMywxMSArOTAzLDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZXN0YWJsaXNoIHRy
YW5zYWN0aW9uIGlkZW50aWZpZXIgdGhhdCBhbHJlYWR5IGV4aXN0cyJfcyB9OwogICAgIH0KIAot
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlE
QlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rpb24+KCp0aGlzLCBpbmZvKTsKIAogICAg
IGF1dG8gZXJyb3IgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5iZWdpbigqbV9zcWxpdGVE
Qik7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0
aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZv
QmVmb3JlVmVyc2lvbkNoYW5nZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigq
bV9kYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVy
c2lvbkNoYW5nZSA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8p
OwogCiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsICJVUERBVEUgSURC
RGF0YWJhc2VJbmZvIFNFVCB2YWx1ZSA9ID8gd2hlcmUga2V5ID0gJ0RhdGFiYXNlVmVyc2lvbic7
Il9zKTsKICAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC0yNjExLDcg
KzI2MTEsNyBAQCBTUUxpdGVTdGF0ZW1lbnQqIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2FjaGVk
U3RhdGVtZW50KFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6UwogICAgIH0KIAogICAgIGlmIChtX3Nx
bGl0ZURCKSB7Ci0gICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+
KHNxbCldID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBz
dGF0ZW1lbnQpOworICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90
PihzcWwpXSA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVt
ZW50KTsKICAgICAgICAgaWYgKG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+
KHNxbCldLT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgbV9jYWNoZWRTdGF0
ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBudWxscHRyOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJD
dXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkN1cnNvci5jcHAKaW5kZXggZjg0MDVhNzk4YTM2ODEwZGM1NzZhZjFlNzNiY2FmNTMxMDIz
N2JhZi4uYzZiM2ZkOTUzYTBkNTNhYzE1NjhlMjg0OGNiYzc4YTEyZjE5NTc1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkN1cnNvci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVm
ZXRjaExpbWl0ID0gODsKIAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRl
SURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8pOworICAgIGF1dG8g
Y3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsK
IAogICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC01OSw3ICs1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJz
b3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3RpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVh
dGVCYWNraW5nU3RvcmVDdXJzb3IoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBj
b25zdCB1aW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCB1aW50NjRfdCBpbmRleElELCBjb25z
dCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtl
X3VuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlELCBpbmRl
eElELCByYW5nZSk7CisgICAgYXV0byBjdXJzb3IgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNv
cj4odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIHJhbmdlKTsKIAogICAgIGlm
ICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xOTksNyArMTk5LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0
YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKICAgICBBU1NFUlQoIW1fY3VycmVudFVwcGVyS2V5
LmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24o
KSk7CiAKLSAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50
PihtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOwor
ICAgIG1fc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fdHJhbnNhY3Rp
b24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7CiAKICAgICBpZiAobV9z
dGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKHByZXBhcmUvaWQpIC0gJyVzJyIsIG1f
dHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCkubGFzdEVycm9yTXNn
KCkpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FM
aXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgICAg
IH0KIAogICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6
S2V5QW5kVmFsdWUpCi0gICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtl
eURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOworICAgICAgICAgICAgcmVjb3JkLnJl
Y29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEo
KSwga2V5RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJpbWFyeUtleSkpIHsKICAgICAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRh
YmFzZSB3aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7CkBAIC00ODYsNyArNDg2LDcgQEAg
U1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0
Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9S
T1cpIHsKICAgICAgICAgICAgIG9iamVjdFN0b3JlU3RhdGVtZW50LmdldENvbHVtbkJsb2JBc1Zl
Y3RvcigwLCBrZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoa2V5RGF0YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5p
cXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0
YSkpKTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAgICAg
ICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8g
cmV0cmlldmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAgICAg
ICAgICAvLyBTa2lwIG92ZXIgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCBhNmEzYzVmZmYzMzgwYzI1ZWY3MzYxZTY4OGJlZjM2YzA2MTVmYzgzLi5kMjEyZGUyYjZiODhh
ZmZlMGEzNWIwZmQwZmQzM2ZjODY3Y2VjYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlv
bi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCVHJhbnNhY3Rpb246OmJl
Z2luKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJh
bnNhY3Rpb24pOwogCi0gICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlVHJhbnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0
aW9uTW9kZTo6UmVhZG9ubHkpOworICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVl
PFNRTGl0ZVRyYW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2Fj
dGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLT5iZWdpbigpOwog
CiAgICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwCmluZGV4IDFlYmMwODE4Zjg5ZWYzZjc2YjQ2YjI3ZGU3NGYzMWNjYzNlNDZj
Y2YuLmJlNTkxYjk4ODQwZWRhZDY0ODBhZjBjNDFiN2M4ZTkyYzVmMTJhOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBkZWxldGVkVmVyc2lvbikKICAgICAv
LyB3ZSB3b24ndCBoYXZlIGEgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mby4gSW4gdGhh
dCBjYXNlLCB3ZSdsbCBtYW51ZmFjdHVyZSBvbmUgdXNpbmcgdGhlCiAgICAgLy8gcGFzc2VkIGlu
IGRlbGV0ZWRWZXJzaW9uIGFyZ3VtZW50LgogICAgIGlmICghbV9tb3N0UmVjZW50RGVsZXRlZERh
dGFiYXNlSW5mbykKLSAgICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCksIGRlbGV0ZWRWZXJzaW9uKTsKKyAgICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNl
SW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VO
YW1lKCksIGRlbGV0ZWRWZXJzaW9uKTsKIAogICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0
KSB7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPm5vdGlmeURpZERlbGV0ZURhdGFi
YXNlKCptX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvKTsKQEAgLTc4NSw3ICs3ODUsNyBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgaW5mbywgY29uc3QgSQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tp
bmdTdG9yZSIpOwogICAgIAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIG1fYmFja2luZ1N0b3JlT3BlbkVycm9yID0gZXJy
b3I7CiAKICAgICBBU1NFUlQobV9pc09wZW5pbmdCYWNraW5nU3RvcmUpOwpAQCAtMTc0OSw3ICsx
NzQ5LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rp
b24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAgICAgICBBU1NFUlQobV92ZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fdmVy
c2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbiB8fCAmbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24tPmRhdGFiYXNlQ29ubmVjdGlvbigpID09IG1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVj
dGlvbik7CiAgICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2lu
YWxEYXRhYmFzZUluZm8oKSk7Ci0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2lu
YWxEYXRhYmFzZUluZm8oKSk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRh
YmFzZUluZm8oKSk7CiAgICAgfQogCiAgICAgSURCRXJyb3IgcmVzdWx0ID0gdHJhbnNhY3Rpb24t
PnN0YXRlKCkgPT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQg
PyB0cmFuc2FjdGlvbi0+cmVzdWx0KCkgOiBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcAppbmRleCBmMTdhNGU1NTIzZmI1ZjYxYjAyNmEwOTE0N2Y4
MTQxZDViNjQxMzlhLi44NTQwY2E3ODZkNTczNThkOTgyYzczZTY0NjBmN2Y4ZjBhODgzNDU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC01MSw3
ICs1MSw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiAgICAgQVNTRVJUKGRhdGFiYXNlKTsK
IAogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2Rl
OjpWZXJzaW9uY2hhbmdlKQotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOworICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFi
YXNlLT5pbmZvKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fZGF0YWJhc2VDb25uZWN0
aW9uLT5zZXJ2ZXIoKSkKICAgICAgICAgc2VydmVyLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJSZXF1ZXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVxdWVzdERhdGEuY3BwCmluZGV4IGIxMGQ4NDA5OWIyNTI4ZTZmNzNjMjhiMTUwNGE4
YTkzMjRkMGIyMWEuLjIxNjQxNmFmYTExY2YyNTVkMzZkZWZiM2VmZjM2ZWZhZjE5NTcxMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1
ZXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlcXVlc3REYXRhLmNwcApAQCAtNDAsNyArNDAsNyBAQCBJREJSZXF1ZXN0RGF0YTo6SURC
UmVxdWVzdERhdGEoKQogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94eSwgY29uc3QgSURCT3Bl
bkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIo
Y29ubmVjdGlvblByb3h5LnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX3Jl
cXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihj
b25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQorICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihtYWtl
VW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVjdGlvblByb3h5LCByZXF1ZXN0KSkK
ICAgICAsIG1fZGF0YWJhc2VJZGVudGlmaWVyKHJlcXVlc3QuZGF0YWJhc2VJZGVudGlmaWVyKCkp
CiAgICAgLCBtX3JlcXVlc3RlZFZlcnNpb24ocmVxdWVzdC52ZXJzaW9uKCkpCiAgICAgLCBtX3Jl
cXVlc3RUeXBlKHJlcXVlc3QucmVxdWVzdFR5cGUoKSkKQEAgLTQ5LDggKzQ5LDggQEAgSURCUmVx
dWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5JiBjb25uZWN0aW9uUHIKIAogSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikKICAgICA6IG1fc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIob3BlcmF0aW9uLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5jb25u
ZWN0aW9uUHJveHkoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9yZXF1
ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4ob3Bl
cmF0aW9uLmlkZW50aWZpZXIoKSkpCi0gICAgLCBtX3RyYW5zYWN0aW9uSWRlbnRpZmllcihzdGQ6
Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLnRyYW5zYWN0aW9u
SWRlbnRpZmllcigpKSkKKyAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpKQorICAgICwgbV90cmFu
c2FjdGlvbklkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJh
dGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCiAgICAgLCBtX29iamVjdFN0b3JlSWRlbnRp
ZmllcihvcGVyYXRpb24ub2JqZWN0U3RvcmVJZGVudGlmaWVyKCkpCiAgICAgLCBtX2luZGV4SWRl
bnRpZmllcihvcGVyYXRpb24uaW5kZXhJZGVudGlmaWVyKCkpCiB7CkBAIC01OCw3ICs1OCw3IEBA
IElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIG1faW5kZXhSZWNvcmRUeXBlID0gb3BlcmF0aW9u
LmluZGV4UmVjb3JkVHlwZSgpOwogCiAgICAgaWYgKG9wZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVy
KCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVz
b3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CisgICAgICAg
IG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigq
b3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CiB9CiAKIElEQlJlcXVlc3REYXRhOjpJREJS
ZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgb3RoZXIpCkBAIC03MSwxMSArNzEsMTEg
QEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiBv
dGhlcikKICAgICAsIG1fcmVxdWVzdFR5cGUob3RoZXIubV9yZXF1ZXN0VHlwZSkKIHsKICAgICBp
ZiAob3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAgICAgICAgbV9yZXF1ZXN0SWRlbnRpZmll
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV9yZXF1
ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVxdWVzdElkZW50aWZpZXIgPSBtYWtlVW5pcXVl
PElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpOwogICAg
IGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgbV90cmFuc2FjdGlv
bklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90
aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbklkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKQotICAg
ICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmllcik7CisgICAgICAgIG1fY3Vyc29ySWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV9jdXJz
b3JJZGVudGlmaWVyKTsKIH0KIAogSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0
IElEQlJlcXVlc3REYXRhJiB0aGF0LCBJc29sYXRlZENvcHlUYWcpCkBAIC0xMDIsMTEgKzEwMiwx
MSBAQCB2b2lkIElEQlJlcXVlc3REYXRhOjppc29sYXRlZENvcHkoY29uc3QgSURCUmVxdWVzdERh
dGEmIHNvdXJjZSwgSURCUmVxdWVzdERhdGEmCiAgICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJh
c2VJZGVudGlmaWVyID0gc291cmNlLm1fZGF0YWJhc2VJZGVudGlmaWVyLT5pc29sYXRlZENvcHko
KTsKIAogICAgIGlmIChzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5h
dGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgaWYgKHNvdXJjZS5tX3RyYW5z
YWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV90cmFuc2FjdGlvbklkZW50
aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5t
X3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rp
b25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2Uu
bV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmIChzb3VyY2UubV9jdXJzb3JJZGVudGlm
aWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1cnNvcklkZW50aWZpZXIp
OworICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1cnNvcklkZW50aWZpZXIpOwogfQogCiB1
aW50NjRfdCBJREJSZXF1ZXN0RGF0YTo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuaAppbmRleCA0NWNmZmFlYTYwM2E1M2I1OTkwNGM4YjE0YjdhMWRlZjdk
MjVmMzEwLi40MDhiNGU0NjI4NzMzN2I5YWMzNDRhZmJmNDY5MTU4NjhlODBmMzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
aGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVx
dWVzdC5tX3JlcXVlc3RJZGVudGlmaWVyID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMTY1LDcgKzE2
NSw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3RyYW5zYWN0aW9uSWRlbnRp
ZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBib29sIElEQlJlcXVl
c3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEmIHJlcXVlc3Qp
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVz
b3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmll
cj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJlcXVlc3QubV9jdXJzb3JJZGVudGlmaWVyID0gV1RGTW92ZShvYmplY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
c3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuY3BwCmluZGV4IGE4OTQ1NGU2ZTYzZjZlYjdjYjUwMzhiOWM5MzJmYTIxODYz
M2VkYzYuLjRjYmQ1ZDliZGYwYTg1MjNiZjdmNTJhYzViYzVjYjRiN2VkMTA0NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVz
dWx0RGF0YS5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBJREJSZXN1bHREYXRhOjpJREJSZXN1bHRE
YXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIG90aGVyKQogICAgICwgbV9yZXN1bHRJbnRlZ2VyKG90
aGVyLm1fcmVzdWx0SW50ZWdlcikKIHsKICAgICBpZiAob3RoZXIubV9kYXRhYmFzZUluZm8pCi0g
ICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CiAgICAgaWYgKG90
aGVyLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8p
OworICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25J
bmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOwogICAgIGlmIChvdGhlci5tX3Jlc3VsdEtl
eSkKLSAgICAgICAgbV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCpv
dGhlci5tX3Jlc3VsdEtleSk7CisgICAgICAgIG1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJL
ZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOwogICAgIGlmIChvdGhlci5tX2dldFJlc3VsdCkK
LSAgICAgICAgbV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKm90
aGVyLm1fZ2V0UmVzdWx0KTsKKyAgICAgICAgbV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdl
dFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKICAgICBpZiAob3RoZXIubV9nZXRBbGxSZXN1
bHQpCi0gICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxS
ZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7CisgICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0g
bWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7CiB9CiAK
IElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3QgSURCUmVzdWx0RGF0YSYgdGhhdCwg
SXNvbGF0ZWRDb3B5VGFnKQpAQCAtODcsMTUgKzg3LDE1IEBAIHZvaWQgSURCUmVzdWx0RGF0YTo6
aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlc3VsdERhdGEmIHNvdXJjZSwgSURCUmVzdWx0RGF0YSYg
ZGVzCiAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRJbnRlZ2VyID0gc291cmNlLm1fcmVzdWx0SW50
ZWdlcjsKIAogICAgIGlmIChzb3VyY2UubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIGRlc3RpbmF0
aW9uLm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpz
b3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAg
ICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oKnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENv
cHkpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbkluZm8pCi0gICAgICAgIGRlc3RpbmF0
aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbklu
Zm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElEQlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0
ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5p
cXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSW5mbywgSURCVHJh
bnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV9yZXN1bHRLZXkp
Ci0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJL
ZXlEYXRhPigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJLZXlEYXRhOjpJc29sYXRlZENvcHkpOwor
ICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4o
KnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAo
c291cmNlLm1fZ2V0UmVzdWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5tX2dldFJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqc291cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRS
ZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0g
bWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2UubV9nZXRSZXN1bHQsIElEQkdldFJlc3Vs
dDo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fZ2V0QWxsUmVzdWx0KQotICAgICAg
ICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxs
UmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJREJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVk
Q29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJ
REJHZXRBbGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxSZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6
SXNvbGF0ZWRDb3B5KTsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjplcnJvcihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJF
cnJvciYgZXJyb3IpCkBAIC0xMTEsNyArMTExLDcgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHRE
YXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmUK
ICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVlc3RJZGVudGlmaWVyIH07CiAgICAgcmVz
dWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5EYXRhYmFzZVN1Y2Nlc3M7CiAgICAgcmVz
dWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmll
cigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCktPmluZm8oKSk7CisgICAgcmVzdWx0Lm1f
ZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGNvbm5lY3Rpb24uZGF0
YWJhc2UoKS0+aW5mbygpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjEsMTUgKzEy
MSwxNSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVO
ZWVkZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0
IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1bHQubV90eXBlID0gSURCUmVzdWx0VHlw
ZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZDsKICAgICByZXN1bHQubV9kYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuaWRlbnRp
ZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
RGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgp
LT5pbmZvKCkpOwotICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOworICAgIHJlc3VsdC5t
X2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5k
YXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOworICAgIHJlc3VsdC5tX3Ry
YW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlv
bi5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVz
dWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAg
ICBJREJSZXN1bHREYXRhIHJlc3VsdCB7SURCUmVzdWx0VHlwZTo6RGVsZXRlRGF0YWJhc2VTdWNj
ZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICByZXN1bHQubV9kYXRh
YmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMTcxLDIxICsxNzEsMjEgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1
bHREYXRhOjpyZW5hbWVJbmRleFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXEKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEm
IHJlc3VsdEtleSkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6
OlB1dE9yQWRkU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9yZXN1
bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KHJlc3VsdEtleSk7CisgICAgcmVz
dWx0Lm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPihyZXN1bHRLZXkpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0UmVj
b3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJl
c3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVy
IH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1
bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJH
ZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0
RGF0YSBJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRzU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRBbGxSZXN1bHQmIGdl
dEFsbFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6
OkdldEFsbFJlY29yZHNTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5t
X2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxS
ZXN1bHQpOworICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxs
UmVzdWx0PihnZXRBbGxSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIwNCwx
NCArMjA0LDE0IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlUmVjb3JkU3Vj
Y2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlCiBJREJSZXN1bHREYXRhIElEQlJl
c3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
cmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogewogICAg
IElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6T3BlbkN1cnNvclN1Y2Nlc3Ms
IHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0
ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vz
cyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJ
REJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElE
QlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9Owot
ICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pihn
ZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVz
dWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmlu
ZGV4IDcxN2IzZTJkZTUzYjM1M2ZlYjZkZDc1NTAwYTBlNWU2OGM5NDdhM2YuLjYyMDYyYTFlMjk1
ZjdiNTk4MTU4OTViNTdiZWMwMDhlNWIxODc2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaApAQCAtMTg0LDcg
KzE4NCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+
IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNP
YmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IFdURk1vdmUob2JqZWN0KTsKQEAgLTE5Myw3ICsxOTMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCk7CisgICAgICAgIGF1dG8g
b2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCk7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgICAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBA
IC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVz
dWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
aWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCS2V5RGF0YT4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQktleURh
dGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElEQktleURhdGE+IG9wdGlvbmFsOwogICAgICAgICBk
ZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAoIW9wdGlvbmFsKQpAQCAtMjE0LDcgKzIx
NCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElE
QlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSho
YXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmpl
Y3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3Vs
dD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IFdURk1vdmUob2Jq
ZWN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25h
bDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVu
aXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9i
amVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQu
bV9nZXRBbGxSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8u
Y3BwCmluZGV4IDk4M2MxYzExYzk5YjQ1YjZjZTU0NGRmY2FjMDM3ZTRjNzM3Mjk1YzMuLjRmYjk5
OTE5ZjY3ZDVmN2M5YWJjMTA5ZTJlMzAwMGNjZTRjNDQwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlv
bkluZm8uY3BwCkBAIC01NSw3ICs1NSw3IEBAIElEQlRyYW5zYWN0aW9uSW5mbyBJREJUcmFuc2Fj
dGlvbkluZm86OnZlcnNpb25DaGFuZ2UoY29uc3QgSURCU2VydmVyOjpJREJDb25uZWN0CiAgICAg
SURCVHJhbnNhY3Rpb25JbmZvIHJlc3VsdCgoSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbm5lY3Rp
b24pKSk7CiAgICAgcmVzdWx0Lm1fbW9kZSA9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNo
YW5nZTsKICAgICByZXN1bHQubV9uZXdWZXJzaW9uID0gbmV3VmVyc2lvbjsKLSAgICByZXN1bHQu
bV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZv
PihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CisgICAgcmVzdWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3JpZ2luYWxEYXRhYmFzZUluZm8pOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3LDcgKzY3LDcgQEAgSURCVHJhbnNhY3Rpb25J
bmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQog
ICAgICwgbV9vYmplY3RTdG9yZXMoaW5mby5tX29iamVjdFN0b3JlcykKIHsKICAgICBpZiAoaW5m
by5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOwogfQogCiBJREJU
cmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0aW9uSW5mbyhjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbkluZm86Omlzb2xhdGVkQ29weShjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHNvdXJj
ZSwgSURCVHJhbnMKICAgICAgICAgZGVzdGluYXRpb24ubV9vYmplY3RTdG9yZXMudW5jaGVja2Vk
QXBwZW5kKG9iamVjdFN0b3JlLmlzb2xhdGVkQ29weSgpKTsKIAogICAgIGlmIChzb3VyY2UubV9v
cmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFi
YXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fb3Jp
Z2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAg
ICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0
YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5m
bzo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlv
bkluZm8uaAppbmRleCA5MzBkODAyMzYxODIzMmFiZjZjMDgxZGYyMTI5NThmZjYyYTU1NWVkLi43
Yjk0NzdlOGVjNTU0YzkxM2QyYTQ4YmU1NThlMTYzM2Q5M2ZjZTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0
aW9uSW5mby5oCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkluZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG9i
amVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBp
bmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwCmluZGV4IDg3YjFhZGNkOTY2NjIwNmVjOTcxNjYwMzYyYjQwZTVhZDdk
ODAxZDEuLmM5Njg5NDQ0ZmQyMjQwMmNlZDIxMTNiM2JmYTBiOWE1MjZjNjczYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
blByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlZjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFu
YWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICByZXR1cm4gbV9xdW90YU1h
bmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3Rh
KCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNw
YWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCks
IFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNl
SW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHF1b3RhICsg
Y3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CiAgICAgICAgIH0pOwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGll
cy5jcHAKaW5kZXggZjg3MjU3NGU4NWMyNDA4NzcyYjFkMTFhMmU4YmNiNmRkNjBkYTI5Ny4uYTMx
YmFkYjU0YWM5ODFlMGUzYmFkYWZlMjA5ODc4MjlkM2Y3NDAzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9O
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgTmF2aWdhdG9y
TWVkaWFDYXBhYmlsaXRpZXMmIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzOjpmcm9tKE5hdmln
YXRvciYgbmF2aWdhdG8KIHsKICAgICBOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcyogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzKj4oU3VwcGxlbWVu
dDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBp
ZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcz4oKTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcz4oKTsKICAg
ICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVU
bygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9X
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IDUwZDBiYjBiMWVkNTNhNDMy
NDU4ZDlmYjcxMzU3MGFlMGVjYTBkMDYuLmI5NzQzNGM0ZTYyNDVkNzNjY2YyZDYyNWEwYTFiMDNl
MTI5MGNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2Nr
JiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlja2VyKCkKIHsKICAgICBpZiAoIW1fcGlj
a2VyT3ZlcnJpZGUpCi0gICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CisgICAgICAgIG1fcGlja2Vy
T3ZlcnJpZGUgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigqdGhp
cyk7CiAKICAgICByZXR1cm4gKm1fcGlja2VyT3ZlcnJpZGUuZ2V0KCk7CiB9CkBAIC0xNDUsNyAr
MTQ1LDcgQEAgdWludDY0X3QgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheWJhY2tUYXJn
ZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWEKIAogICAgIExPRyhNZWRpYSwgIldlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCVwICsgJWxs
dSkiLCAmY2xpZW50LCBjb250ZXh0SWQpOwogCi0gICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKKyAgICBtX2Ns
aWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJ
ZCkpOwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5
YmFja1RhcmdldCkKICAgICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhJbml0aWFsQ29uZmlndXJh
dGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAppbmRleCBkNDE3
YTEyMTY5MTExMjE1ZDU0MjI5MWUwM2M1OWQ1ZDZlN2ViM2Y0Li43Y2JjNmExMzM1MWUwZDMyY2Uy
NTVhOWJhZGNiOTc0NGRhZjRkNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtMTc4LDkgKzE3OCw5IEBAIE1lZGlhVGlt
ZSBNZWRpYVNvdXJjZTo6Y3VycmVudFRpbWUoKSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKICAgICBpZiAo
bV9idWZmZXJlZCAmJiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmxlbmd0aCgpICYmIHN0ZDo6YWxs
X29mKG1fYWN0aXZlU291cmNlQnVmZmVycy0+YmVnaW4oKSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJz
LT5lbmQoKSwgW10oYXV0byYgYnVmZmVyKSB7IHJldHVybiAhYnVmZmVyLT5pc0J1ZmZlcmVkRGly
dHkoKTsgfSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAotICAgIG1fYnVmZmVyZWQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBtX2J1ZmZlcmVkID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiAqbV9h
Y3RpdmVTb3VyY2VCdWZmZXJzKQogICAgICAgICBzb3VyY2VCdWZmZXItPnNldEJ1ZmZlcmVkRGly
dHkoZmFsc2UpOwogCkBAIC0xOTAsNyArMTkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
VGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKIAogICAgIC8vIDEuIElm
IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMubGVuZ3RoIGVxdWFscyAwIHRoZW4gcmV0dXJuIGFuIGVtcHR5
IFRpbWVSYW5nZXMgb2JqZWN0IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoYWN0aXZl
UmFuZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCiAgICAgLy8gMi4gTGV0IGFjdGl2ZSBy
YW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5lZCBieSBidWZmZXJlZCBmb3IgZWFjaCBTb3VyY2VC
dWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMuCiAgICAgLy8gMy4gTGV0IGhpZ2hl
c3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3QgcmFuZ2UgZW5kIHRpbWUgaW4gdGhlIGFjdGl2ZSBy
YW5nZXMuCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKIAogICAgIC8vIFJldHVybiBhbiBl
bXB0eSByYW5nZSBpZiBhbGwgcmFuZ2VzIGFyZSBlbXB0eS4KICAgICBpZiAoIWhpZ2hlc3RFbmRU
aW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFu
Z2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyA0LiBMZXQgaW50ZXJzZWN0aW9uIHJhbmdlcyBl
cXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmluZyBhIHNpbmdsZSByYW5nZSBmcm9tIDAg
dG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBtX2J1ZmZlcmVkLT5hZGQoTWVkaWFUaW1lOjp6ZXJv
VGltZSgpLCBoaWdoZXN0RW5kVGltZSk7CkBAIC0yMjEsNyArMjIxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAg
ICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChzb3VyY2VSYW5nZXMpOwogICAgIH0KIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVy
ZWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVy
ZWQpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYg
dGltZSkKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6
c2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQogCiAgICAgLy8g
U2V0IGxpdmUgc2Vla2FibGUgcmFuZ2UgdG8gYmUgYSBuZXcgbm9ybWFsaXplZCBUaW1lUmFuZ2Vz
IG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdlCiAgICAgLy8gd2hvc2Ugc3RhcnQgcG9z
aXRpb24gaXMgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBpcyBlbmQuCi0gICAgbV9saXZlU2Vla2Fi
bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCkpOwor
ICAgIG1fbGl2ZVNlZWthYmxlID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShlbmQpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKaW5k
ZXggZTQxODI3ODM4ZDYyY2EzOGZjM2JmM2JlNzhmOGY0YWE4YWU1MjU5Ni4uN2IzNThmNWUwZGU0
MmZiMjI2OGQzNjkwM2U1OGRiNWViNzhlOTBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApA
QCAtNTEsNyArNTEsNyBAQCBOYXZpZ2F0b3JNZWRpYURldmljZXMqIE5hdmlnYXRvck1lZGlhRGV2
aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JNZWRpYURl
dmljZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JNZWRpYURldmljZXMqPihT
dXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3ItPndpbmRvdygp
KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRp
YURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5j
cHAKaW5kZXggOGQ3ZTYzY2M2MDZkNmRhMTlmYmRiMTJkZTU0ZmI4NTVmZGY2MmM5OS4uMTRkZjEx
NjFkYWU2OGNjNDZjYjQ5ZWFhZTIxZjVlZjk4OWUyYWNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIFVzZXJNZWRpYUNvbnRyb2xsZXI6On5Vc2VyTWVkaWFDb250cm9s
bGVyKCkKIAogdm9pZCBwcm92aWRlVXNlck1lZGlhVG8oUGFnZSogcGFnZSwgVXNlck1lZGlhQ2xp
ZW50KiBjbGllbnQpCiB7Ci0gICAgVXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2Us
IFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8
VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7CisgICAgVXNlck1lZGlhQ29udHJvbGxlcjo6
cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1h
a2VVbmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc1NlY3VyZShEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCBhYWE0
MDAwMjA3MzY1ZmZjYmU1MjgxMjhlMjhjZTAyZjZjNjA3Y2RkLi5jOTg1YmMxOWEzMWQwMTE0NTY1
YWJhYmE1ZjA2MGVlNTBkYTYxMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgUmVmPFJUQ0RhdGFDaGFu
bmVsRXZlbnQ+IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hhbm5lbEV2ZW50KFNjcmlw
dEV4ZWN1dGkKICAgICBpbml0Lm5lZ290aWF0ZWQgPSBkYXRhQ2hhbm5lbC0+bmVnb3RpYXRlZCgp
OwogICAgIGluaXQuaWQgPSBkYXRhQ2hhbm5lbC0+aWQoKTsKIAotICAgIGF1dG8gaGFuZGxlciA9
ICBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShk
YXRhQ2hhbm5lbCkpOworICAgIGF1dG8gaGFuZGxlciA9ICBtYWtlVW5pcXVlPExpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOwogICAgIGF1dG8gY2hhbm5l
bCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShoYW5kbGVyKSwgZnJv
bVN0ZFN0cmluZyhsYWJlbCksIFdURk1vdmUoaW5pdCkpOwogCiAgICAgcmV0dXJuIFJUQ0RhdGFD
aGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWNoYW5uZWxFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKGNoYW5uZWwp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggZGVm
MWY5MWVlZTllZDZlYzc4ZDEzYzY5ZWM0MzQ4ZjBhYTY4ZDM2Ny4uZDFhNzRiODU3MWJlZTdlZTVl
OWMzMTYyZWNhMmY0ZDZmZjQxZTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2Vp
dgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5p
cXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsK
KyAgICByZWNlaXZlci0+c2V0QmFja2VuZChtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsKICAgICBhdXRvJiB0cmFjayA9IHJlY2Vp
dmVyLT50cmFjaygpOwogICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KHJlY2VpdmVyLnJlbGVhc2VO
b25OdWxsKCksIHRyYWNrLCBydGNTdHJlYW1zLCBudWxscHRyKTsKIH0KQEAgLTQ3OCw3ICs0Nzgs
NyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMoKQog
ICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVl
PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikp
LCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICB9CiB9CiAKQEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIExpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRy
YW5zYwogICAgIGlmICghc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBuZXdU
cmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVy
KHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3Zl
KHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvJiBu
ZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2Vp
dmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0
Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIGFkZFBlbmRp
bmdUcmFja0V2ZW50KG1ha2VSZWYobmV3VHJhbnNjZWl2ZXIucmVjZWl2ZXIoKSksIG5ld1RyYW5z
Y2VpdmVyLnJlY2VpdmVyKCkudHJhY2soKSwgcnRjUmVjZWl2ZXItPnN0cmVhbXMoKSwgbWFrZVJl
ZihuZXdUcmFuc2NlaXZlcikpOwogfQpAQCAtNTM0LDcgKzUzNCw3IEBAIE9wdGlvbmFsPExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVh
dGVUcmFuc2NlCiAgICAgaWYgKCFyZXN1bHQub2soKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1vdmVWYWx1ZSgpKTsKKyAgICBhdXRvIHRy
YW5zY2VpdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJl
c3VsdC5Nb3ZlVmFsdWUoKSk7CiAgICAgcmV0dXJuIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJh
Y2tlbmRzIHsgdHJhbnNjZWl2ZXItPmNyZWF0ZVNlbmRlckJhY2tlbmQobV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQsIFdURk1vdmUoc291cmNlKSksIHRyYW5zY2VpdmVyLT5jcmVhdGVSZWNlaXZlckJh
Y2tlbmQoKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikgfTsKIH0KIApAQCAtNTg1LDcgKzU4NSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+IExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6OnRyYW5zY2VpCiB7CiAgICAgZm9yIChhdXRvJiB0cmFuc2NlaXZlciA6
IG1fYmFja2VuZC0+R2V0VHJhbnNjZWl2ZXJzKCkpIHsKICAgICAgICAgaWYgKHRyYW5zY2VpdmVy
LT5zZW5kZXIoKS5nZXQoKSA9PSBiYWNrZW5kLnJ0Y1NlbmRlcigpKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2NlaXZlckludGVyZmFjZT4odHJhbnNjZWl2
ZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2Vp
dmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJJbnRl
cmZhY2U+KHRyYW5zY2VpdmVyKSk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAt
NjU0LDcgKzY1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsCiB7CiAgICAgYXV0byBpbml0
ID0gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpmcm9tUlRDRGF0YUNoYW5uZWxJbml0KG9w
dGlvbnMpOwogICAgIGF1dG8gY2hhbm5lbCA9IG1fYmFja2VuZC0+Q3JlYXRlRGF0YUNoYW5uZWwo
bGFiZWwudXRmOCgpLmRhdGEoKSwgJmluaXQpOwotICAgIHJldHVybiBjaGFubmVsID8gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoY2hhbm5lbCkp
IDogbnVsbHB0cjsKKyAgICByZXR1cm4gY2hhbm5lbCA/IG1ha2VVbmlxdWU8TGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0YUNoYW5uZWwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyMDdm
MTVlNjQ1N2I5ZGZjYWMxYzMzOWVhMzlmZWExZDc3ODU5ZDhiLi5mYzkxY2NkMGJiZDFmZGJiYTc2
NDJlNzA0ZjM3ZmU4NWNjNzJmZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IGNyZWF0ZUxpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2UKIAogICAgIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuc2V0RW5hYmxl
V2ViUlRDRW5jcnlwdGlvbihwYWdlLT5zZXR0aW5ncygpLndlYlJUQ0VuY3J5cHRpb25FbmFibGVk
KCkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVy
Q29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKSk7CiB9CiAKIENyZWF0ZVBlZXJD
b25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKQEAgLTMxMSw3ICszMTEsNyBAQCBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlZpZGVvUmVjZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjp2aQogICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7CiAgICAgYXV0byByZWNl
aXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJjZS5jb3B5UmVmKCksIG51bGxwdHIp
OwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5k
ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7
CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRw
U2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tl
bmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsKICAgICB0cmFuc2NlaXZlci0+ZGlz
YWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2Vp
dmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTMzNCw3ICszMzQsNyBAQCBMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjphdQogICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7CiAgICAgYXV0byByZWNlaXZl
ciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJjZS5jb3B5UmVmKCksIG51bGxwdHIpOwog
Ci0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0g
bWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAg
ICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2Vu
ZGVyOjpjcmVhdGUoKnRoaXMsICJhdWRpbyJfcywgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQp
KSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJs
ZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVy
KFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTQwMCw3ICs0MDAsNyBAQCBzdGF0aWMgaW5saW5l
IFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRFeGlzdGluZ1NlbmRlcihjb25zdCBWZWN0b3I8UmVm
UHRyPFJUQ1J0cAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIFZlY3Rv
cjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5FbmFibGVkKCkpIHsKLSAg
ICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gc2VuZGVyQmFja2Vu
ZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIp
OwogICAgICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXJCYWNrZW5kLCB0cmFj
aywgbWVkaWFTdHJlYW1JZHMpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYWNrKE1lZGlhU3RyCiAgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0g
dHJhY2sua2luZCgpOwogICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5p
cXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAg
YXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
PigqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVy
OjpjcmVhdGUoKnRoaXMsIG1ha2VSZWYodHJhY2spLCBWZWN0b3I8U3RyaW5nPiB7IG1lZGlhU3Ry
ZWFtSWRzIH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgICAgICBhdXRvIHJlY2VpdmVy
ID0gY3JlYXRlUmVjZWl2ZXIodHJhY2tLaW5kLCB0cmFja0lkKTsKICAgICAgICAgYXV0byB0cmFu
c2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShuZXdTZW5kZXIpLCBX
VEZNb3ZlKHJlY2VpdmVyKSwgbnVsbHB0cik7CkBAIC00NzIsNyArNDcyLDcgQEAgRXhjZXB0aW9u
T3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGFkZFVu
aWZpZWRQbGFuVHJhbnNjZWl2ZXIoU3RyaW5nIHsgdHJhY2tLaW5kIH0sIGluaXQpOwogCi0gICAg
YXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0
byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgU3RyaW5nKHRyYWNrS2lu
ZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIHJldHVy
biBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOwogfQpAQCAtNDgyLDcgKzQ4Miw3IEBA
IEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5FbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFdURk1vdmUodHJhY2spLCBpbml0KTsKIAot
ICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1h
a2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAg
IGF1dG8mIGJhY2tlbmQgPSAqc2VuZGVyQmFja2VuZDsKICAgICBhdXRvIHNlbmRlciA9IFJUQ1J0
cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCB0cmFjay5jb3B5UmVmKCksIFZlY3RvcjxTdHJpbmc+KCks
IFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2so
YmFja2VuZCwgdHJhY2ssIFZlY3RvcjxTdHJpbmc+IHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmluZGV4IDY4NTBlNmE4NWU5MDI0YmIxMTQ1
YjZiOTQyMjljMGY2MTQyZGY3YWEuLjZhZWVhMTMzODkyZDIwNjNmMDM1MzliOGVlYzRkYjliY2U2
NGQ3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpz
ZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiBwYXJhbWUKIAogc3RkOjp1
bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
OjpjcmVhdGVEVE1GQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2VuZGVyLT5HZXREdG1mU2VuZGVyKCkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPihtX3J0Y1Nl
bmRlci0+R2V0RHRtZlNlbmRlcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAK
aW5kZXggZWI4NzFlYjdkYjAzODg0ZjRjYzdlMGFkZWY2ODc4MmUxYzA5NzJkNy4uNWMwZDdlOTVl
MmZkMTJlM2Y4NGYxN2NmYmViNmQ4NjdhNTFmMmU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC0zNSwxMiArMzUsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVJlY2Vp
dmVyQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRw
UmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5yZWNlaXZlcigpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KG1fcnRjVHJhbnNjZWl2
ZXItPnJlY2VpdmVyKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNr
ZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYgYmFja2VuZCwgTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZDo6U291cmNlJiYgc291cmNlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQsIG1fcnRjVHJhbnNjZWl2
ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRl
cigpLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBM
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRpcmVjdGlvbigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
CmluZGV4IDBjMzI4ZmFlNDQyMzU5OTI1MzMwNzJjODVkNmIzMmZkYzZjMTM4MzguLjBlYmFmZjg5
ZmZiYzUwMDNlMjQ2MWJhZGVlNTIwMzkxMTcxY2JkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC02Myw3ICs2
Myw3IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9uCiAgICAgLCBtX2JvZHkob3B0aW9ucy5ib2R5
KQogICAgICwgbV90YWcob3B0aW9ucy50YWcpCiAgICAgLCBtX3N0YXRlKElkbGUpCi0gICAgLCBt
X3Rhc2tUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihbdGhpc10gKCkgeyBzaG93KCk7IH0p
KQorICAgICwgbV90YXNrVGltZXIobWFrZVVuaXF1ZTxUaW1lcj4oW3RoaXNdICgpIHsgc2hvdygp
OyB9KSkKIHsKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0
byBpY29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwob3B0aW9ucy5pY29uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25Db250cm9sbGVyLmNwcAppbmRleCBhNjIwMzUzOTNjN2ZiM2Y2ZGRmMDFjNWM4OWQ3NGYz
YjVlZGQyZDQ0Li5kNDhmMjA1YTllMjQxNGUwN2Q3MjJmOTAzMjVhN2MzNjRkNDg5NDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGNvbnN0IGNoYXIq
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIAogdm9pZCBwcm92aWRl
Tm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQogewot
ICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25D
b250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3Zp
ZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtl
VW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RP
TVdpbmRvd1F1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwCmluZGV4IDAzZmU5ZTM4Njc4ZjQwNTA3MzI1NTA5YzIwMzg2N2M5Y2Y4MjBmZjEu
LmM5OGM5OTg2ZGVkNmNkMjA1NDI2MTcyMTVmNjUzNmNlNThmMjc5NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIERPTVdpbmRvd1F1b3RhKiBET01XaW5kb3dRdW90YTo6ZnJvbShET01XaW5kb3cqIHdpbmRv
dykKIHsKICAgICBET01XaW5kb3dRdW90YSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdp
bmRvd1F1b3RhKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd1F1b3RhPih3aW5kb3cpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd1F1b3RhPih3aW5kb3cp
OwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJv
dmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0
b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0
b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDdiYTFkM2Q0YjM2OTQ0MGM2NGUxN2RkMjBjYTk0NTM4
YjhhZDliNzQuLjdhMDgwNDU5NTY5ODNhMzFmNmQ4MzRlZjdlYTc3MmZhNjY3MzZhNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VR
dW90YS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBOYXZpZ2F0
b3JTdG9yYWdlUXVvdGE6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdh
dG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yU3RvcmFn
ZVF1b3RhKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsK
KyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JTdG9yYWdl
UXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgp
OwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3Zl
KG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKaW5kZXggOTVj
M2U0MzY0NzMxNjJhNTBkNjFiNWNlNzUxNjVlZTY4YjIxYjcyNy4uMWExYzg0N2RjNDk3ZGM2NDg0
NWY1NmVjZTU5MjYzYTQyNmFmNjMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIFdvcmtlck5hdmlnYXRvclN0
b3JhZ2VRdW90YTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3IqCiB7CiAgICAgV29ya2VyTmF2aWdhdG9y
U3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2aWdhdG9yU3Rv
cmFnZVF1b3RhKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5hdmlnYXRvclN0b3JhZ2VR
dW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxX
b3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQg
PSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhl
c2lzLmNwcAppbmRleCAzNzk1NjUyNmZiZjI4NjkwZWNmMDM5OTUyYzUyZjZlMDQ0NmJjYjRjLi45
NjljMjM3ZjdjODE1NTE1M2RlMDcxZWM5NmE2MWE0YTQ2MmQzZjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNp
cy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBET01XaW5k
b3dTcGVlY2hTeW50aGVzaXM6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2lu
ZG93U3BlZWNoU3ludGhlc2lzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93U3Bl
ZWNoU3ludGhlc2lzKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxl
bWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcz4od2lu
ZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dT
cGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCA3MmI1NjNlNGJiZjdkY2UwM2Zh
MzA4ODBkMmZhNzcwYjg5ODY5M2E0Li5lN2I2MmExYTE3YmQ5NmE5ZjVhMTNmZDA5ZTc0OWFiNGJj
ZTE5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTcGVlY2hTeW50aGVzaXM6OnZvaWNl
c0RpZENoYW5nZSgpCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyJiBTcGVlY2hTeW50aGVzaXM6
OmVuc3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKQogewogICAgIGlmICghbV9wbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKQotICAgICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpOworICAg
ICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBtYWtlVW5pcXVlPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI+KHRoaXMpOwogICAgIHJldHVybiAqbV9wbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDYyZjY4ZWM2NjNhODAyMTJjNmYzYWY3Yjg1ZTIz
YzZiNGY3NDJhMGEuLjJmNTQyNzJhYzVjMDFkMGEyMzBlNWMwZGYwNDUyNGFmYjJhNGUyMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OmRlY29k
ZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8gZGVjb2RpbmdUYXNrID0gc3Rk
OjptYWtlX3VuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1vdmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0
ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spKTsKKyAg
ICBhdXRvIGRlY29kaW5nVGFzayA9IG1ha2VVbmlxdWU8RGVjb2RpbmdUYXNrPihXVEZNb3ZlKGF1
ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShl
cnJvckNhbGxiYWNrKSk7CiAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZShkZWNvZGluZ1Rhc2sp
KTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUgdGFzayBpcyBlZmZlY3RpdmVseSB0YWtl
biBieSB0aGUgcXVldWUuCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAppbmRleCBiYzAwZWI5Zjg3ZDFiY2Q1OGNiZjc0OWI3
ZGE3YzQ5M2NmN2U4ODc2Li5jZjkyNjljMzA0NGM0MzIyZDc0NGQwNjI5ZGRhMGZhODk0OTNlY2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9E
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlv
RGVjb2Rlci5oCkBAIC00Miw3ICs0Miw4IEBAIGNsYXNzIEF1ZGlvQnVmZmVyQ2FsbGJhY2s7CiAv
LyBBc3luY0F1ZGlvRGVjb2RlciBhc3luY2hyb25vdXNseSBkZWNvZGVzIGF1ZGlvIGZpbGUgZGF0
YSBmcm9tIGFuIEFycmF5QnVmZmVyIGluIGEgd29ya2VyIHRocmVhZC4KIC8vIFVwb24gc3VjY2Vz
c2Z1bCBkZWNvZGluZywgYSBjb21wbGV0aW9uIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZCB3aXRo
IHRoZSBkZWNvZGVkIFBDTSBkYXRhIGluIGFuIEF1ZGlvQnVmZmVyLgogCi1jbGFzcyBBc3luY0F1
ZGlvRGVjb2RlciB7CitjbGFzcyBBc3luY0F1ZGlvRGVjb2RlciBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXN5bmNBdWRpb0Rl
Y29kZXIpOwogcHVibGljOgogICAgIEFzeW5jQXVkaW9EZWNvZGVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUuY3BwCmluZGV4IGJhOGMyNTVhZTdkN2RhNzNiYzlmZjY1NTQzZjFlMzdiYzk1NDA0YjMuLjBm
YjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhCiAgICAgOiBB
dWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlw
ZUJhc2ljSW5zcGVjdG9yKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5p
cXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQpKTsKIH0KIAogLy8gV2Ugb3Zl
cnJpZGUgcHVsbElucHV0cygpIGFzIGFuIG9wdGltaXphdGlvbiBhbGxvd2luZyB0aGlzIG5vZGUg
dG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW4tcGxhY2UgcHJvY2Vzc2luZywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHAKaW5kZXggYmMxODljMDhjYmVmYzdjMTk2MDY0NjZjMDc2OGI4ZmE2MzRiMTZhYi4uMGI5
ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZlNzkwYWJmYmU2ZTk4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHAKQEAgLTQyLDggKzQyLDggQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlKTsKIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2lj
UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAg
ICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKLSAgICBhZGRJbnB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkSW5wdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgLy8gVGhlIHN1YmNsYXNzIG11c3Qg
Y3JlYXRlIG1fcHJvY2Vzc29yLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQwYWMzMmM1YzU1
YzNkMzJkMGUxNGI2YTdkMjJiMjQ2NzM5MGY0YmYuLjI1MTBjNDBhN2Y2MTIzZDRjN2ZjMmQ2NDBh
OTBiNGYwYTk4ZTZmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGUKICAgICBtX3BsYXliYWNrUmF0ZSA9IEF1ZGlvUGFyYW06OmNy
ZWF0ZShjb250ZXh0LCAicGxheWJhY2tSYXRlIiwgMS4wLCAtTWF4UmF0ZSwgTWF4UmF0ZSk7CiAK
ICAgICAvLyBEZWZhdWx0IHRvIG1vbm8uICBBIGNhbGwgdG8gc2V0QnVmZmVyKCkgd2lsbCBzZXQg
dGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMgdG8gdGhhdCBvZiB0aGUgYnVmZmVyLgotICAg
IGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwor
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAg
ICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5NTZjMTU4NjIxODljNzE0MjljYmNmZDYwMDQyZjAw
Yzk4YmFlZjYuLmQ0Y2RiNzY1OGMwZjM1YjVmYzlhMjJjZTg5OGJjYjJiOTllZTRkZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAg
LTE0MCw3ICsxNDAsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQogI2Vu
ZGlmCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0
aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1
ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRR
dWV1ZT4oKnRoaXMpKQogewogICAgIC8vIEFjY29yZGluZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBt
dXN0IGRpZSBvbmx5IGFmdGVyIHBhZ2UgbmF2aWdhdGUuCiAgICAgLy8gTGV0cyBtYXJrIGl0IGFz
IEFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0aXZpdHkgYW5kIHVubWFyayBpdCBpbiBj
bGVhciBtZXRob2QuCkBAIC0xNjYsNyArMTY2LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRl
eHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QK
ICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBtX21lZGlhU2Vz
c2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRR
dWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBt
X2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAg
IGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC00MzIsNyArNDMyLDcgQEAgRXhjZXB0aW9uT3I8UmVm
PEF1ZGlvQnVmZmVyPj4gQXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImIGFy
cmF5QnVmZmUKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVm
ZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0Nh
bGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQogewog
ICAgIGlmICghbV9hdWRpb0RlY29kZXIpCi0gICAgICAgIG1fYXVkaW9EZWNvZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICAgICAgbV9hdWRpb0RlY29kZXIg
PSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigpOwogICAgIG1fYXVkaW9EZWNvZGVyLT5k
ZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNj
ZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cAppbmRleCA5NzU4ODc1NDc0N2UxNTI0ODE4OWY0OTcwYzZkMzNlM2M2YWUxZTExLi5kOWFiYjk3
NzdhOWQyNWVlYWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYQogICAgICwgbV9tdXRlZChmYWxz
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlc3RpbmF0aW9uKTsKLSAgICBhZGRJbnB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkSW5wdXQo
bWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwogfQogCiBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6fkF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IDE2MzczY2U5Mzc4ZDMy
MmZkZDljMjUzZjljNzZkOTYzZTYxM2NkM2IuLjRhODI1NWU2ZjBhZjA3NjcxMzhlNDY4OThmOGI2
MzZhYjJkNzU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBCaXF1YWRGaWx0ZXJOb2Rl
OjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CiAKICAgICAvLyBJbml0
aWFsbHkgc2V0dXAgYXMgbG93cGFzcyBmaWx0ZXIuCi0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2Up
OworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxCaXF1YWRQcm9jZXNzb3I+KGNvbnRleHQs
IHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKIH0KIAogQmlxdWFkRmlsdGVyVHlwZSBCaXF1YWRGaWx0
ZXJOb2RlOjp0eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCAwZTRlMzY4NWI4MmNlNDc3ZWM0ZTU4NTQ3
ZjE2YWQ4YjcwZmM3OTA0Li5lODRiOTgwMzU2NzBmYjFkY2MzMjcwOTY2M2QyYjM5MDU1MmU2NWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nl
c3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9j
ZXNzb3IuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEJpcXVhZFByb2Nlc3Nvcjo6fkJpcXVhZFByb2Nl
c3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gQmlxdWFkUHJvY2Vzc29y
OjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZERT
UEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmlxdWFkRFNQS2VybmVsPih0
aGlzKTsKIH0KIAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmNoZWNrRm9yRGlydHlDb2VmZmljaWVu
dHMoKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpnZXRGcmVxdWVu
Y3lSZXNwb25zZShpbnQgbkZyZXF1ZW5jaWVzLCBjb25zdCBmbG9hdCogZnJlcXVlCiAgICAgLy8g
dG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgcHJvY2Vzc2luZyBydW5uaW5nIGluIHRoZSBh
dWRpbwogICAgIC8vIHRocmVhZCBvbiB0aGUgbWFpbiBrZXJuZWxzLgogICAgIAotICAgIGF1dG8g
cmVzcG9uc2VLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7
CisgICAgYXV0byByZXNwb25zZUtlcm5lbCA9IG1ha2VVbmlxdWU8QmlxdWFkRFNQS2VybmVsPih0
aGlzKTsKIAogICAgIHJlc3BvbnNlS2VybmVsLT5nZXRGcmVxdWVuY3lSZXNwb25zZShuRnJlcXVl
bmNpZXMsIGZyZXF1ZW5jeUh6LCBtYWdSZXNwb25zZSwgcGhhc2VSZXNwb25zZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUu
Y3BwCmluZGV4IDIwYjhkYTE5ZTVmNDM5Y2ZlNTQ1NWYwMWRjMjkwODc0NDZiMjNjMDguLmRmNTBm
MjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC01OSw5
ICs1OSw5IEBAIENoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuCiAKICAgICAvLyBDcmVhdGUgdGhlIHJl
cXVlc3RlZCBudW1iZXIgb2YgaW5wdXRzLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZklucHV0czsgKytpKQotICAgICAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlSW5wdXQ+KHRoaXMpKTsKIAotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
Y3BwCmluZGV4IDQ2MzU0OThjMDM0YzU5MzBiNGU4ZjIyMDg2ZTE0YjJiNGJkMjkxMTcuLjgyZjY5
YTA0Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAt
NTAsMTEgKzUwLDExIEBAIENoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAogICAgIC8vIENyZWF0ZSBhIGZpeGVkIG51bWJlciBvZiBv
dXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgZmVk
IHRvIGFuIGlucHV0KS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRw
dXRzOyArK2kpCi0gICAgICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91
dHB1dD4odGhpcywgMSkpOworICAgICAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCAyMzgy
ZGFiY2M5Yzk5MjdjYWMzMWQzMjc1ZjIyMDNjYzhmNThhMDkzLi5lMzY2NzdjZmQ3NDVlOGJiZTAy
ZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTUyLDggKzUyLDggQEAgQ29udm9sdmVyTm9k
ZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUp
CiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDb252b2x2ZXIpOwogCi0gICAgYWRkSW5wdXQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFkZElucHV0
KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVu
aXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIC8vIE5vZGUtc3BlY2lmaWMg
ZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFubmVsQ291bnQgPSAyOwpAQCAtMTQ2LDcg
KzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihBdWRp
b0J1ZmZlciogYnVmZmVyKQogCiAgICAgLy8gQ3JlYXRlIHRoZSByZXZlcmIgd2l0aCB0aGUgZ2l2
ZW4gaW1wdWxzZSByZXNwb25zZS4KICAgICBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzID0gIWNv
bnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCk7Ci0gICAgYXV0byByZXZlcmIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXpl
SW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6
ZSk7CisgICAgYXV0byByZXZlcmIgPSBtYWtlVW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgp
LCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJh
Y2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CiAKICAgICB7CiAgICAgICAgIC8vIFN5bmNo
cm9uaXplIHdpdGggcHJvY2VzcygpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWxheU5vZGUuY3BwCmluZGV4IDQyNjVhMDA3NDllYWZmZjZhOWUxYjlkMWRkYTYwZDRkYjcw
MjhiMDMuLjgxYmQ3ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdjZTI1NTc4MDJiOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heEQKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxh
eSk7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5UHJvY2Vzc29yPihj
b250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpOworICAgIG1fcHJvY2Vzc29yID0g
bWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVs
YXlUaW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5Tm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERl
bGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVBy
b2Nlc3Nvci5jcHAKaW5kZXggYTc1YmE2YjdjOTJlNzQ0NGM2NTYwOGU4YWUxOGY5ZDUwMDAyNmEw
NC4uMTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5ZTZkMmFjYmE2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgRGVsYXlQcm9jZXNzb3I6On5EZWxheVByb2Nlc3NvcigpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gRGVsYXlQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPERlbGF5RFNQS2VybmVsPih0aGlzKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKaW5kZXggYWEwZTRhODAxMTllYmVkOWRk
MzY5NmIzZmExMzA1ZGRmMzJiZDA1Mi4uMTQwOTZkOGYwYzU5NmE1Mjk3MTY2NmVmODI2N2EwMjNm
ZGI0NGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5h
bWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00Niw4ICs0Niw4IEBAIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEeW5hbWljc0NvbXBy
ZXNzb3IpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKKyAgICBhZGRJbnB1dChtYWtl
VW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8
QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwog
CiAgICAgbV90aHJlc2hvbGQgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInRocmVzaG9s
ZCIsIC0yNCwgLTEwMCwgMCk7CiAgICAgbV9rbmVlID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRl
eHQsICJrbmVlIiwgMzAsIDAsIDQwKTsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9O
b2RlOjppbml0aWFsaXplKCk7ICAgIAotICAgIG1fZHluYW1pY3NDb21wcmVzc29yID0gc3RkOjpt
YWtlX3VuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUoKSwgZGVmYXVsdE51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIG1fZHluYW1pY3NDb21wcmVzc29yID0gbWFrZVVuaXF1
ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpOwogfQogCiB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnVuaW5pdGlhbGl6
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4
IDZjOTRhNTIzYzNiMmEwMjEyYjJhNTRhMWE5YzhmMDI2YmJkMWRiNWYuLjI1N2RmMmVjZTIzMzhj
YmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC00Niw4ICs0Niw4IEBAIEdhaW5Ob2RlOjpHYWluTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAKICAgICBtX2dhaW4g
PSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKIAot
ICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAg
ICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsK
KyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRk
T3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0
aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMzgxYWU3Mjc5
NGZiMGU3ZmVhNjMzMWFiZDMzYjIwYzE1ODQ1ZmY5Yi4uOTEyZTZlYjIzMjE0NTY0M2Q2ZmRhZmJj
MTFlOTY3NjRjM2QyZjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtNTcs
NyArNTcsNyBAQCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5
cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIHN0ZXJlby4g
VGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIG1lZGlhIGVsZW1lbnQgLnNy
YyBpcyBzZXQgdG8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0
cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CkBAIC04OSw3ICs4OSw3IEBAIHZv
aWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAKICAgICAgICAgaWYgKHNvdXJjZVNhbXBsZVJhdGUgIT0g
c2FtcGxlUmF0ZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VT
YW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgpOwotICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNh
bXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0
b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBs
ZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJl
ck9mQ2hhbm5lbHMpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQnlwYXNzIHJl
c2FtcGxpbmcuCiAgICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDViMmE1MDBkZDI5NGQxMDU1OGJjN2Ew
OGNmNzcxNmU0MjZiNWMyYWMuLmU0M2Y1NDQ4YmMyNmI4NmFmNjkzZDAwOTk5NWM2NzM0ZjY5NTVk
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIE1lCiAgICAgYXVkaW9Tb3VyY2VQcm92aWRlci0+c2V0Q2xpZW50KHRo
aXMpOwogICAgIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxkIGNoYW5nZSBk
ZXBlbmRpbmcgb24gdGhlIGZvcm1hdCBvZiB0aGUgTWVkaWFTdHJlYW0ncyBhdWRpbyB0cmFjay4K
LSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIp
KTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsK
IAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9h
dCBzb3VyY2UKICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBudWxscHRyOwogICAg
IGVsc2UgewogICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8g
c2FtcGxlUmF0ZTsKLSAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5l
bHMpOworICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG1ha2VVbmlxdWU8TXVsdGlD
aGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CiAgICAgfQog
CiAgICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5k
ZXggNWI1MDI5YmZiY2U3N2FkNWI2YzNjODgzMjYwZGI5ZGVmZGY2MTA0Yi4uYTk5Y2VhYWQ2YjVj
MjFlMDlkZDIyNTNjMmFjZjMwNDU1NDc1M2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgT3Nj
aWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICBzZXRUeXBlKG1fdHlwZSk7CiAKICAgICAvLyBBbiBvc2NpbGxhdG9y
IGlzIGFsd2F5cyBtb25vLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91
dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKaW5kZXggZjY0NzQ2OWUyMzU1ZWIz
YTBjMDliM2IwODUyYmZiZWM2ZTQ4ZDI4ZC4uNTFjNjk5MTZmZmRlNzBmNWU2ODBhYTkyN2NlZmVm
N2NhNzMyYzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Q
YW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFBhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIC8vIExvYWQgdGhlIEhSVEYg
ZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3JpcHQg
dGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNlLgogICAgIG1faHJ0ZkRhdGFi
YXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3Vz
bHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7CiAKLSAgICBhZGRJbnB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkSW5wdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZh
dWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKaW5kZXggYmIyYTA3ZDIz
NTRlYmFmOTRkMDA0NjVhNGI0MWQ4NjA1NTU5OTg2Yi4uZWM5YTE3YzRmNTZlYjk5NjZkYzE3NjI3
ZTkzNDA1YmExZmQ0OGM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGVyaW9kaWNXYXZlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgUGVyaW9kaWNXYXZl
OjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyhjb25zdCBmbG9hdCogcmVhbERhdGEsIGNvbnN0IGZs
b2F0KiBpCiAgICAgICAgIHJlYWxQWzBdID0gMDsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGJh
bmQtbGltaXRlZCB0YWJsZS4KLSAgICAgICAgbV9iYW5kTGltaXRlZFRhYmxlcy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVyaW9kaWNXYXZlU2l6ZSkpOworICAg
ICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJh
eT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CiAKICAgICAgICAgLy8gQXBwbHkgYW4gaW52ZXJzZSBG
RlQgdG8gZ2VuZXJhdGUgdGhlIHRpbWUtZG9tYWluIHRhYmxlIGRhdGEuCiAgICAgICAgIGZsb2F0
KiBkYXRhID0gbV9iYW5kTGltaXRlZFRhYmxlc1tyYW5nZUluZGV4XS0+ZGF0YSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAK
aW5kZXggM2I2MjgxZDFlODQzZWQyOTljZjYxNTNjNzMyNzk3MDc0MTgwNjc3OC4uODAyMzczNDA3
Zjc1ZDQ3ZTI1OWViNjA1NjM4MGY2MzVmMTNhY2VmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIFJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5hbHlzZXIoKQogICAgICwgbV9taW5EZWNp
YmVscyhEZWZhdWx0TWluRGVjaWJlbHMpCiAgICAgLCBtX21heERlY2liZWxzKERlZmF1bHRNYXhE
ZWNpYmVscykKIHsKLSAgICBtX2FuYWx5c2lzRnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZy
YW1lPihEZWZhdWx0RkZUU2l6ZSk7CisgICAgbV9hbmFseXNpc0ZyYW1lID0gbWFrZVVuaXF1ZTxG
RlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOwogfQogCiBSZWFsdGltZUFuYWx5c2VyOjp+UmVhbHRp
bWVBbmFseXNlcigpID0gZGVmYXVsdDsKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZWFsdGltZUFu
YWx5c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAobV9mZnRTaXplICE9IHNpemUpIHsKLSAgICAgICAgbV9hbmFseXNpc0ZyYW1lID0g
c3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7CisgICAgICAgIG1fYW5hbHlzaXNGcmFt
ZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KHNpemUpOwogICAgICAgICAvLyBtX21hZ25pdHVkZUJ1
ZmZlciBoYXMgc2l6ZSA9IGZmdFNpemUgLyAyIGJlY2F1c2UgaXQgY29udGFpbnMgZmxvYXRzIHJl
ZHVjZWQgZnJvbSBjb21wbGV4IHZhbHVlcyBpbiBtX2FuYWx5c2lzRnJhbWUuCiAgICAgICAgIG1f
bWFnbml0dWRlQnVmZmVyLmFsbG9jYXRlKHNpemUgLyAyKTsKICAgICAgICAgbV9mZnRTaXplID0g
c2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0
UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGQ1OWRlY2Y5OTUxNmY2ZDAxYWY5YzFkOWZkYmYxZDBi
MTAxOWU0MGYuLmQ1YjNhZmJmMjcxMDE0NTE0OTRiMTg5Mzc3NjhiNjA1ZjZhM2I0NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcApAQCAtNjgsOCArNjgsOCBAQCBTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQ
cm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZQogICAg
IEFTU0VSVChudW1iZXJPZklucHV0Q2hhbm5lbHMgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJP
ZkNoYW5uZWxzKCkpOwogCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVKYXZhU2NyaXB0KTsKLSAg
ICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAg
YWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1
dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2Vy
bmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtl
cm5lbC5jcHAKaW5kZXggNDEwZDFkYWY1Yzg5NTQwMDlmZjA2MzZhODI5MDBiZjk0YWY0ZjhmMS4u
ZjNkMjEyMmRmNTFjNGYxYTI5MjI0ZTY5M2FiNDk1YmJjMmI5MzhlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3Bw
CkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXp5SW5pdGlh
bGl6ZU92ZXJzYW1wbGluZygpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlm
ICghbV90ZW1wQnVmZmVyKSB7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fdGVt
cEJ1ZmZlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVh
bnR1bSAqIDQpOwotICAgICAgICBtX3VwU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1w
bGVyPihSZW5kZXJpbmdRdWFudHVtKTsKLSAgICAgICAgbV9kb3duU2FtcGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV91
cFNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0g
KiAyKTsKLSAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25TYW1w
bGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CisgICAgICAgIG1fdGVtcEJ1ZmZlciA9IG1ha2VV
bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogMik7CisgICAgICAgIG1f
dGVtcEJ1ZmZlcjIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1
bSAqIDQpOworICAgICAgICBtX3VwU2FtcGxlciA9IG1ha2VVbmlxdWU8VXBTYW1wbGVyPihSZW5k
ZXJpbmdRdWFudHVtKTsKKyAgICAgICAgbV9kb3duU2FtcGxlciA9IG1ha2VVbmlxdWU8RG93blNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV91cFNhbXBsZXIyID0gbWFr
ZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV9kb3du
U2FtcGxlcjIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuY3BwCmluZGV4IDg0ODY5OTNmMjEwODRjY2M2MWNjZDgwYjJjMTg3ZTA4YzE1
NWZkMDEuLjZlN2U4ZGQxYzljMTlmYTNjODVlM2Q5ZDg1NWFiOWY0NTc4NWI3OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBA
IC0zOSw3ICszOSw3IEBAIFdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBjb250
ZXh0LnNhbXBsZVJhdGUoKSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIp
OwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29y
Pihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CisgICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVl
PFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2FtcGxlUmF0ZSgpLCAxKTsKIAogICAgIGlu
aXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4IDI4OWMzOWY1ZjNmOWY3YTc5ZTlhNWI2
YTZkODMxNWI1OTFmNDMyZGEuLmJmZTVlMGU0N2ZiODRhMjhjNjNjNmUyOGIzMmUwZmMxMWU1YzY3
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
clByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZl
U2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtNDYsNyArNDYsNyBAQCBXYXZlU2hhcGVyUHJvY2Vzc29y
Ojp+V2F2ZVNoYXBlclByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5l
bD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBXYXZlU2hhcGVy
UHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1cnZlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmgKaW5kZXggYjFjNDlkYjUyM2I5MzZiMGE0ZWMyMjEwNDFiNzdkYTdjYzE0NzhmZC4uMjBkNjA2
OTcyNDI4OTczNzc5ODJiODRlZTczZDRkYTYzNGVkOGZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
CkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnM7CiB1c2luZyBDcmVkZW50aWFsUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxs
YWJsZTxJRExJbnRlcmZhY2U8QmFzaWNDcmVkZW50aWFsPj4+OwogCiBjbGFzcyBBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik7CiBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKHN0ZDo6dW5p
cXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAK
aW5kZXggOGMzZDEzNDZjNDAzMGNmYjNkODI3NzM3YTBhMTVmM2YxY2I5YmFkNy4uMWI5MTJkOThk
OWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQyZmFmMzU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCkBAIC0xNTAs
OSArMTUwLDkgQEAgRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHVpbnQzMl90IGNoYW5u
ZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwgY28KICAgICB1aW50OF90IHNlcXVlbmNl
ID0gMDsKIAogICAgIHNpemVfdCBwb3MgPSBkYXRhLnNpemUoKSA+IGtIaWRJbml0UGFja2V0RGF0
YVNpemUgPyBrSGlkSW5pdFBhY2tldERhdGFTaXplIDogZGF0YS5zaXplKCk7Ci0gICAgbV9wYWNr
ZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQs
IHR5cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBkYXRhLnNpemUoKSkpOworICAgIG1fcGFj
a2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCB0eXBl
LCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5zaXplKCkpKTsKICAgICBmb3IgKDsgcG9z
IDwgZGF0YS5zaXplKCk7IHBvcyArPSBrSGlkQ29udGludWF0aW9uUGFja2V0RGF0YVNpemUpCi0g
ICAgICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0
aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRpbnVhdGlvblBhY2tldERh
dGEoZGF0YSwgcG9zKSkpOworICAgICAgICBtX3BhY2tldHMuYXBwZW5kKG1ha2VVbmlxdWU8Rmlk
b0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSsrLCBnZXRDb250aW51
YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKIH0KIAogRmlkb0hpZE1lc3NhZ2U6OkZpZG9I
aWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5pdFBhY2tldD4gaW5pdFBhY2tldCwg
c2l6ZV90IHJlbWFpbmluZ1NpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKaW5kZXggNTViN2IyZDcxNTM2YTIzNTQ5
MTNhZTM2ZTlmYjkxZWYwMGE4ZjA4My4uMjZiODBhYThhNWYxMzk2M2M3NjhlN2U5MjNiYmFhYjJi
ODdiNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXpl
ZERhdGEoYwogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1aW50OF90PigpOwogICAgIGRhdGEuYXBw
ZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBkYXRhU2l6ZSk7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjb21tYW5kLCBX
VEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hp
ZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5bG9hZFNp
emUpOwogfQogCiAvLyBVMkYgSW5pdGlhbGl6YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CkBA
IC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRDb250aW51YXRpb25QYWNr
ZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb20KICAgICBhdXRvIGRhdGEg
PSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2luKCkg
KyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hp
ZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5l
bElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9CiAKIC8vIFUyRiBDb250aW51YXRpb24g
cGFja2V0IGlzIGRlZmluZWQgYXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDAyMTQ1ZDBjYzJlOGM5ZWFkYjBjODgyOTQxYjg1OWZj
MGFlODA1MmQuLjViNjRhMDg3NDZhZjgwODBjZDJlNzI1MDNmYTAwZDNjOTQ5ZmIwMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0y
NTAsNyArMjUwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlW
ZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVz
dWx0OwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcGVuVGFzaz4o
KnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7Cisg
ICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9wZW5UYXNrPigqdGhpcywgc2V0VmVy
c2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKICAgICB0aHJlYWQuc2No
ZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwogICAgIHN5bmNocm9uaXplci53YWl0
Rm9yVGFza0NvbXBsZXRpb24oKTsKIApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgRGF0YWJhc2U6
OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRocmVhZC5zY2hlZHVsZUlt
bWVkaWF0ZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5
bmNocm9uaXplcikpOworICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2sobWFrZVVuaXF1
ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOwogCiAgICAgLy8gRklY
TUU6IGlPUyBkZXBlbmRzIG9uIHRoaXMgZnVuY3Rpb24gYmxvY2tpbmcgdW50aWwgdGhlIGRhdGFi
YXNlIGlzIGNsb3NlZCBhcyBwYXJ0CiAgICAgLy8gb2YgY2xvc2luZyBhbGwgb3BlbiBkYXRhYmFz
ZXMgZnJvbSBhIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGlyYXRpb24gaGFuZGxlci4KQEAgLTUzMiw3
ICs1MzIsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uKCkKICAgICBtX3Ry
YW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91
bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1vdmUodHJhbnNhY3Rpb24pKTsKKyAg
ICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPihXVEZNb3Zl
KHRyYW5zYWN0aW9uKSk7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNl
VHJhbnNhY3Rpb25UYXNrICVwIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGFzay5nZXQoKSwgdGFz
ay0+dHJhbnNhY3Rpb24oKSk7CiAgICAgZGF0YWJhc2VUaHJlYWQoKS5zY2hlZHVsZVRhc2soV1RG
TW92ZSh0YXNrKSk7CiB9CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1
bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIGF1
dG8mIHRocmVhZCA9IGRhdGFiYXNlVGhyZWFkKCk7CiAKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1h
a2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPigmdHJhbnNhY3Rpb24pOworICAgIGF1
dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlv
bik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25U
YXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwgdGFzay5nZXQoKSk7CiAgICAgdGhy
ZWFkLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsKIH0KQEAgLTc2Myw3ICs3NjMsNyBAQCBW
ZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCiAgICAgaWYgKHRocmVhZC50ZXJt
aW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
IAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUYWJsZU5hbWVzVGFz
az4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5p
cXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7
CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhXVEZNb3ZlKHRhc2spKTsKICAgICBz
eW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggM2Jh
YmQ0OTU2NmYxNGExYjNjMGQzYjE3YmY0YzdmMzJjNWUzZDVmNy4uZDY0OTdjMzk3ZmE0NzQyODU5
ZTA1ODYyMjM2ZWRlZTQzZDRlZjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFkKCkKLSAg
ICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNRTFRyYW5zYWN0
aW9uQ29vcmRpbmF0b3I+KCkpCisgICAgOiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IobWFrZVVu
aXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQogewogICAgIG1fc2VsZlJlZiA9IHRo
aXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDhkZGNjNTk4NTUxNTc2ZDJhMmMxMGY0MmU0YWQxMmE4
MjU5YjUxOS4uYzI4YTk2ZjQ1ODM5ZWY1NGRhZjFmOTlhMWFkNThkN2VjZDRhNjc1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVu
RGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIExvY2tIb2xkZXIgb3BlbkRhdGFiYXNl
TWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKIAogICAgIGlmICghbV9vcGVuRGF0YWJh
c2VNYXApCi0gICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRh
YmFzZU9yaWdpbk1hcD4oKTsKKyAgICAgICAgbV9vcGVuRGF0YWJhc2VNYXAgPSBtYWtlVW5pcXVl
PERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1
cml0eU9yaWdpbigpOwogCkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4s
IGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFr
aW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8q
IG5hbWVTZXQgPSBtX2JlaW5nQ3JlYXRlZC5nZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQp
IHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaENvdW50ZWRT
ZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25lZFNldCA9IG1ha2VVbmlxdWU8SGFzaENv
dW50ZWRTZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFtZVNldCA9IG93bmVkU2V0LmdldCgpOwog
ICAgICAgICBtX2JlaW5nQ3JlYXRlZC5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBXVEZNb3Zl
KG93bmVkU2V0KSk7CiAgICAgfQpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBEYXRhYmFzZVRy
YWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZv
aWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdpbiBldmVyeSB0aW1lLgogICAg
IGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5nZXQob3JpZ2luKTsKICAgICBpZiAoIW5h
bWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNl
dDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0
PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVTZXQgPSBvd25lZFNldC5nZXQoKTsKICAgICAgICAg
bV9iZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShvd25lZFNl
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFN0YXRlbWVudC5oCmluZGV4IDg1ZjFiNjM1YzNlNDliM2ZlMWE4MWY5NDg3ODI0ODBlMWRlNDhm
YjUuLjhhNTRhMzY2N2EwN2FhY2UwM2E5NjBmYjI1NjRmN2ViZGYzYmQ5OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaApAQCAtNDQs
NiArNDQsNyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQ7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ7CiAKIGNsYXNzIFNRTFN0YXRlbWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgU1FMU3RhdGVtZW50KERhdGFiYXNlJiwgY29uc3QgU3RyaW5nJiwgVmVj
dG9yPFNRTFZhbHVlPiYmLCBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxT
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmLCBpbnQgcGVybWlzc2lvbnMpOwogICAgIH5TUUxT
dGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjBkNjk3MzQ3NzRkYmZiZjMwYmQ4ZjM5Y2U0YzU5
NTcyMTRlOTAwYy4uNGNiMDQxZTQ1MmM4MGY1ZjU5YmIyNzIxZWFiOGVjMWE4ZjYxODM2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rp
b246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlvbmEKICAgICBl
bHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJtaXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhv
cml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZh
bHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShj
YWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVu
aXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZh
bHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShj
YWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOwogCiAgICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0
ZWQoKSkKICAgICAgICAgc3RhdGVtZW50LT5zZXREYXRhYmFzZURlbGV0ZWRFcnJvcigpOwpAQCAt
MjM0LDcgKzIzNCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFBy
ZWZsaWdodCgpCiAgICAgfQogCiAgICAgQVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKLSAg
ICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVUcmFuc2FjdGlv
bj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9yZWFkT25seSk7CisgICAgbV9zcWxp
dGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1fZGF0YWJhc2Ut
PnNxbGl0ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOwogCiAgICAgbV9kYXRhYmFzZS0+cmVzZXRE
ZWxldGVzKCk7CiAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZUF1dGhvcml6ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIu
Y3BwCmluZGV4IDc5YWE1NjE4MWZmZWYzYWIxYTkyYWE1N2ZlY2RiNmZiYTU5ZTZmMGIuLjEyOWQ4
NmZmY2ZiZDE1N2E4MGIwMTkyZTNiNDk5NzEzM2JlYjc4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBOYXZpZ2F0b3JXZWJEcml2ZXIqIE5hdmlnYXRvcldlYkRyaXZlcjo6ZnJv
bShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JXZWJEcml2ZXIqIHN1cHBs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJEcml2ZXIqPihTdXBwbGVtZW50PE5hdmln
YXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
TmF2aWdhdG9yV2ViRHJpdmVyPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1
cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCmluZGV4IDg4YTk3ODA0NGJjMWU3MDg5
MzM1NjVkYzYyZDBhMzE0NmIzOGI0MjYuLjM3NmQxNTVjYTliMmY1ZDJhNGFiMTg1MmM3NzZkOWMx
OGYyZTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmln
YXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9y
R1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBOYXZpZ2F0b3JHUFUqIE5hdmlnYXRvckdQVTo6ZnJv
bShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQg
PSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR1BV
PigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdQ
VT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKaW5k
ZXggMWIzNDI1MDRkNjk1NTA4ZjA4MTZjY2I1NTgyZjViZDlhYTc2MWE2Yi4uNWY1N2VmMTE3NzUz
MWEwYWMzZDk2MGRlYjFkNDM4NzExYTRmMDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRp
b25EZWZpbml0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgRW51bWVyYXRpb25EZWZpbml0
aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAKICAgICBib29sIGFkZChFbnVtZXJhdGlv
bk1lbWJlciYmIG1lbWJlcikKICAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJz
LmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEVudW1lcmF0aW9uTWVtYmVyPihX
VEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1l
bWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVtYmVy
KSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5
UG9pbnRTY2FmZm9sZGluZy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaAppbmRleCAwZTMxZmZiZGUwYjE0ODZm
NmM2ZjY1ZTIwZWI2MzhhZTg4MWI4N2Y4Li5jYmNjNDg0YjY4MjUwYzBhYTA5YjU5OTQzYWRjNzll
ODEwMDkyNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgK
QEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIE1ldGFsIHsKIGNsYXNzIFR5cGVOYW1lcjsKIAog
Y2xhc3MgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKaW5kZXggY2EzNDZlMzJiMjk5
YTEwY2VkMjU2NWQwMWQ4NTQ1M2JkODBkMTQ3NC4uNDdiMDYwYTdjNWFhZmMzMmU4ODg3NWZmYzRh
Zjg5ODk2ODk2MjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKQEAgLTc2
NCw5ICs3NjQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBSZW5k
ZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudAogICAgICAgICByZXR1cm4gdGhp
cy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgfTsKICAgICBpZiAoJmZ1bmN0aW9u
RGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyKQotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0
aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50
aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRl
eFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0
aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50
aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRl
eFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJs
ZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOwogICAg
IGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNo
YWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50
U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1l
ciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21h
dGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRD
b2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RnJhZ21lbnRFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1z
LCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQs
IFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1h
dGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNzkw
LDcgKzc5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IENvbXB1
dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVuCiAgICAgICAgIHJldHVybiB0aGlz
LT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICB9OwogICAgIGlmICgmZnVuY3Rpb25E
ZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5zaGFkZXIpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVm
aW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmVu
dHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnJlc291cmNlTWFwLCBtX2xheW91dCwg
V1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBt
X2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0
ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdl
bmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5
cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTFR5cGVOYW1lci5jcHAKaW5kZXggMTg1YmEwYjA4OGE1Y2VkNGM1YjY2MzZmYTk0NDJjMDAz
NDBkZDAyYS4uNDBiNjJjMzdkYmUyNTgwZTIzZDU5MGMwOTFlYmI0MTdjYTliODA4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBl
TmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjcyLDE5ICsyNzIsMTkgQEAgc3RkOjp1bmlxdWVfcHRy
PEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5vZGUoQVNUOjpVbm5hbWVk
VHlwZSYgdW4KICAgICBzd2l0Y2ggKHVubmFtZWRUeXBlLmtpbmQoKSkgewogICAgIGNhc2UgQVNU
OjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiB0eXBl
UmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFy
ZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJl
bnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkp
OwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAg
ICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5h
bWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJUeXBlTmFt
ZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVz
c1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2ludGVyVHlwZU5hbWVOb2Rl
PihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFj
ZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVy
ZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6
OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5l
eHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBn
ZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkp
OwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OiB7CiAgICAg
ICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlw
ZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5VHlwZU5hbWVOb2RlPihw
YXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5VHlwZS5udW1FbGVtZW50cygpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2Vu
ZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOwogICAgIH0KICAg
ICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAK
aW5kZXggMzMzYmRmNjJjMDI5ODY2YTc0OWEzYzYxMmU1ZTRkYmExNmIyNmE3ZS4uYmRlZDUzZTE4
YWZjOGE0ODE3NTgxZmEzYWRjMjI3ODU2ZWJkNDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCkBAIC05NjYsMTQgKzk2
NiwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFy
aWFibGVEZWNsYXJhdGlvbikKIAogdm9pZCBDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUoQVNU
OjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdW5uYW1lZFR5
cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUo
KSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0
ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkpKTsKKyAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8
UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkpKTsKICAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlw
ZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwogfQogCiB2b2lkIENoZWNrZXI6
OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2U+IHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLCBBU1Q6OlR5cGVBbm5vdGF0
aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7Ci0gICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29s
dmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpKSk7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmlu
Z1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpKSk7CiAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICBleHByZXNzaW9uLnNl
dFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKIH0KQEAgLTk4MSwxMCAr
OTgxLDEwIEBAIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJl
c3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyCiB2b2lkIENoZWNrZXI6OmZvcndhcmRU
eXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5n
VHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1
ZSgpKQogewogICAgIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVm
PEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+
KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAu
YWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVm
KCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzdWx0
KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwg
c3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CisgICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1
ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfSkpOwogICAgIGV4cHJl
c3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCmlu
ZGV4IDdjYWI2Yzk1ZWMzNTZlNzZhYzVmYzRmNzAyYmRjYzFlYWNjOWY4NzAuLmU2OGU0ODZlNzg1
YjRjYzdlNzNhNGIxZDg0Nzc4ODg1MDFlZTkyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKQEAgLTc0MCwxOSArNzQwLDE5
IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8c3RkOjp1bmlxdWVf
cHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KICAgICBzd2l0Y2ggKHRva2VuLT50eXBlKSB7CiAg
ICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwg
U3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIGNh
c2UgVG9rZW46OlR5cGU6OlNwZWNpYWxpemVkOiAgewogICAgICAgICBQQVJTRShyZXN1bHQsIFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFr
ZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0
dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAg
IH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpSZWdpc3RlcjogIHsKICAgICAgICAgUEFSU0UocmVz
dWx0LCBSZXNvdXJjZVNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1
ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBt
YWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAg
IGRlZmF1bHQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgQnVpbHRJblNlbWFudGljKTsKLSAg
ICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpy
ZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdU
Rk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmgKaW5kZXgg
NTU5Y2U4YmE5M2IyOWQ1MTdmYTc3M2Y2YTVmNTI3ZGRmNGE4NWIwMS4uNDU3MDBjZWQ4ZmQzNDQ5
YzRkYTQ5NTlmNzFhNDAyYWEwMmQ2ZTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmgKQEAgLTc0LDYgKzc0
LDcgQEAgY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewogLy8gSXQgZXhpc3RzIHNvIHdlIGNhbiBtYWtlIHN1
cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBkb2VzIHRoZSByaWdodCB0aGluZy4KIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRo
aXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5LgogY2xhc3MgUmVzb2x2aW5nVHlwZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb2x2aW5nVHlw
ZSgpCiAgICAgICAgIDogbV9pbm5lcihSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0
b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9y
R1BVLmNwcAppbmRleCBiZjkwZjZjMzYwNTQ4ZDUyYzhmZDhlZWVjNzUzYzc4ZDhmYTliZjFjLi5k
OTUyMjMwNWFkYTFlZTk3MWYxNjUyOGRlMDY2MDRiYjZhOTZiMGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgV29ya2VyTmF2aWdhdG9yR1BVKiBXb3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20o
V29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgV29ya2VyTmF2aWdhdG9yR1BVKiBz
dXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxX
b3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVt
ZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JHUFU+KCk7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBz
dXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCmluZGV4IGVk
NWEzY2M4MzRmZTE5ZDQ4ODhiODU1NTA0YmExNTVkNDgzZmM0MDcuLmMxYmFjODZkM2FiMmIwZDkx
M2ZjZTc0MjE0MzFhOTQ0NTllZWQyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmNsZWFyQ2xpZW50KCkKIAogdm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QoKQog
ewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZCht
YWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAg
ICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOwogICAg
IH0pKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0pKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmlu
YXJ5RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0
YSkpOwogICAgIH0pKTsKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4
XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBk
YXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnVmZmVyZWRBbW91bnQpCiB7Ci0gICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91
bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKICAgICB9KSk7CkBAIC0x
OTcsNyArMTk3LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGIKIAogdm9pZCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
CiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdI
YW5kc2hha2UoKTsKICAgICB9KSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
CiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9z
ZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVuaGFu
ZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVh
c29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
KyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRs
ZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNv
biA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZENs
b3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwg
Y29kZSwgcmVhc29uKTsKICAgICAgICAgfSkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1
bmhhbmRsZWRCdWZmZXJlCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKICAgICB9KSk7CkBAIC0y
MzAsNyArMjMwLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBncmFkZVVSTCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFz
a3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGdyYWRlVVJMKCk7CiAgICAgfSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
CmluZGV4IDYwNzE0NDA5MjRmYjJjZTY3ZjUzNDA2MmQ3OWU4ZTNiMDRlZTFjNTAuLmEwN2E4NzYz
YWZiOTY5YjQyMDcwYmM0OWE4NjIzOWI3ODNkNmViYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTk3LDcg
Kzk3LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVjdFN0YXR1cyBXZWJTb2NrZXRDaGFubmVs
Ojpjb25uZWN0KGNvbnN0IFVSTCYgcmVxdWVzdGVkVVIKICAgICBtX2FsbG93Q29va2llcyA9IHZh
bGlkYXRlZFVSTC0+YXJlQ29va2llc0FsbG93ZWQ7CiAgICAgU3RyaW5nIHVzZXJBZ2VudCA9IG1f
ZG9jdW1lbnQtPnVzZXJBZ2VudChtX2RvY3VtZW50LT51cmwoKSk7CiAgICAgU3RyaW5nIGNsaWVu
dE9yaWdpbiA9IG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLSAgICBt
X2hhbmRzaGFrZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0SGFuZHNoYWtlPih2YWxpZGF0
ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwgY2xpZW50T3JpZ2luLCBtX2FsbG93Q29v
a2llcyk7CisgICAgbV9oYW5kc2hha2UgPSBtYWtlVW5pcXVlPFdlYlNvY2tldEhhbmRzaGFrZT4o
dmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2VyQWdlbnQsIGNsaWVudE9yaWdpbiwgbV9h
bGxvd0Nvb2tpZXMpOwogICAgIG1faGFuZHNoYWtlLT5yZXNldCgpOwogICAgIGlmIChtX2RlZmxh
dGVGcmFtZXIuY2FuRGVmbGF0ZSgpKQogICAgICAgICBtX2hhbmRzaGFrZS0+YWRkRXh0ZW5zaW9u
UHJvY2Vzc29yKG1fZGVmbGF0ZUZyYW1lci5jcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKSk7CkBA
IC03MDMsNyArNzAzLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQog
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0
cmluZykKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29p
bmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVl
dWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7
CiAgICAgZnJhbWUtPm9wQ29kZSA9IFdlYlNvY2tldEZyYW1lOjpPcENvZGVUZXh0OwogICAgIGZy
YW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVTdHJpbmc7CiAgICAgZnJhbWUtPnN0cmlu
Z0RhdGEgPSBzdHJpbmc7CkBAIC03MTMsNyArNzEzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9vdXRn
b2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0
byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFt
ZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29k
ZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBlVmVjdG9yOwogICAgIGZy
YW1lLT52ZWN0b3JEYXRhLnJlc2l6ZShkYXRhTGVuZ3RoKTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BD
b2RlIG9wQ29kZSwgY29uc3QgY2hhcgogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlQmxv
YkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBCbG9iJiBibG9iKQogewogICAg
IEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVP
cGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsK
KyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+
b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVC
bG9iOwogICAgIGZyYW1lLT5ibG9iRGF0YSA9ICZibG9iOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpCiAgICAgICAg
ICAgICAgICAgcmVmKCk7IC8vIFdpbGwgYmUgZGVyZWZlZCBhZnRlciBkaWRGaW5pc2hMb2FkaW5n
KCkgb3IgZGlkRmFpbCgpLgogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9ibG9iTG9hZGVyKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmJsb2JEYXRhKTsKLSAgICAgICAgICAgICAg
ICBtX2Jsb2JMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBt
X2Jsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2Fk
ZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2Fk
ZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2Fk
ZXItPnN0YXJ0KG1fZG9jdW1lbnQuZ2V0KCksICpmcmFtZS0+YmxvYkRhdGEpOwogICAgICAgICAg
ICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBlbmQoV1RGTW92ZShmcmFtZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVGcmFtZXIuY3BwCmluZGV4IGYyZmE2MjA5YzA0OGY1MTUxOGEyNWVlYzEzYWVmMjU2
NGM5ZjRlN2IuLmVlMzNlYTBmZTVjZjFkNWJmNzlhMmRhMDY3MDdiNzNjZDNhNzhjOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkKIAogc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2Nr
ZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdl
YlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhpcyk7CiB9CiAKIGJvb2wgV2ViU29ja2V0
RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0CkBAIC0xNzAsOCArMTcwLDggQEAgYm9v
bCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKICNpZiBVU0UoWkxJ
QikKIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93
Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSkKIHsKLSAg
ICBtX2RlZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXREZWZsYXRlcj4od2luZG93
Qml0cywgbW9kZSk7Ci0gICAgbV9pbmZsYXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0
SW5mbGF0ZXI+KCk7CisgICAgbV9kZWZsYXRlciA9IG1ha2VVbmlxdWU8V2ViU29ja2V0RGVmbGF0
ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOworICAgIG1faW5mbGF0ZXIgPSBtYWtlVW5pcXVlPFdlYlNv
Y2tldEluZmxhdGVyPigpOwogICAgIGlmICghbV9kZWZsYXRlci0+aW5pdGlhbGl6ZSgpIHx8ICFt
X2luZmxhdGVyLT5pbml0aWFsaXplKCkpIHsKICAgICAgICAgbV9kZWZsYXRlciA9IG51bGxwdHI7
CiAgICAgICAgIG1faW5mbGF0ZXIgPSBudWxscHRyOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQg
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2Vi
U29ja2V0RGVmbGF0ZXI6OkNvCiBzdGQ6OnVuaXF1ZV9wdHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4g
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7
CiAjaWYgVVNFKFpMSUIpCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERlZmxh
dGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxEZWZs
YXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0
RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpIHx8ICFmcmFtZS5wYXlsb2Fk
TGVuZ3RoKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGlmICghbV9kZWZsYXRlci0+YWRk
Qnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXIt
PmZpbmlzaCgpKSB7CkBAIC0xOTYsNyArMTk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlZmxhdGVS
ZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUoV2ViU29ja2V0RnIK
ICAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9kZWZsYXRlci0+c2l6ZSgpOwogICAgIHJldHVy
biByZXN1bHQ7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1
bHRIb2xkZXI+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRIb2xk
ZXI+KHRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6aW5mbGF0ZShXZWJT
b2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBpZiAoIWVuYWJsZWQoKSAmJiBmcmFt
ZS5jb21wcmVzcykgewogICAgICAgICByZXN1bHQtPmZhaWwoIkNvbXByZXNzZWQgYml0IG11c3Qg
YmUgMCBpZiBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uIik7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAppbmRleCAxZDZmMTc4MjJjODA1MjgxYjcwYTQx
NjIwZGNkZWU2YWQyYWI4ODljLi40YTQ4NjVmODQ5NGQwNjEzZWFjMzIxYTU5NGY4YmFlMTk5OTZi
YjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgV2ViU29ja2V0RGVmbGF0ZXI6
OldlYlNvY2tldERlZmxhdGVyKGludCB3aW5kb3dCaXRzLCBDb250ZXh0VGFrZU92ZXJNb2RlIGNv
bnRleHQKIHsKICAgICBBU1NFUlQobV93aW5kb3dCaXRzID49IDgpOwogICAgIEFTU0VSVChtX3dp
bmRvd0JpdHMgPD0gMTUpOwotICAgIG1fc3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTx6X3N0cmVh
bT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHpf
c3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5nZXQoKSwgMCwgc2l6ZW9mKHpfc3RyZWFt
KSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVyOjpyZXNl
dCgpCiBXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0SW5mbGF0ZXIoaW50IHdpbmRvd0JpdHMp
CiAgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykKIHsKLSAgICBtX3N0cmVhbSA9IHN0ZDo6
bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAgICBtZW1zZXQobV9zdHJlYW0uZ2V0KCks
IDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCA5OTQwNzNlYWE1ZThiMjMwZDFjOGIwMGMxNmM1OTY0M2U5Nzg0
MjY4Li5kYzZmNjYwZmQzODhjZWZmYWYwZWJlZjZlNjYwZTZiNjk1YmI2MzE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJ
bml0aWFsaXplKFNjcmlwdEV4ZWN1dAogCiAgICAgYm9vbCBzZW50ID0gbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLAotICAgICAgICBbY2xpZW50V3JhcHBlciA9IGNs
aWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJveHksIHBlZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigpLCBsb2FkZXJQcm94eSwgY29udGV4dCwg
dGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFtjbGllbnRXcmFwcGVyID0gY2xpZW50V3JhcHBlci5j
b3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IG1ha2VVbmlxdWU8UGVlcj4oY2xpZW50V3Jh
cHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShw
cm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpOwogICAgICAgICAgICAgaWYgKGNsaWVudFdyYXBwZXItPmZhaWxlZFdlYlNvY2tldENo
YW5uZWxDcmVhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgQnJpZGdlOjppbml0aWFs
aXplKCkgcXVpdHRlZCBlYXJsaWVyLCB3ZSBuZWVkIHRvIGtpY2sgbWFpblRocmVhZERlc3Ryb3ko
KSB0byBkZWxldGUgdGhlIHBlZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
TmF2aWdhdG9yV2ViVlIuY3BwCmluZGV4IGQ5N2I1YzJhODVhOWQyMzI4Zjk4NDBmNDRkM2QxZTk2
MzJjODJkOWUuLjc3NmM0M2FlYzBiOWI1YmRlYWRjM2RkODkxMjZhY2VkNmJhNzUxNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIE5hdmlnYXRvcldlYlZSKiBOYXZpZ2F0b3JXZWJWUjo6ZnJvbShOYXZpZ2F0
b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JXZWJWUiogc3VwcGxlbWVudCA9IHN0YXRp
Y19jYXN0PE5hdmlnYXRvcldlYlZSKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvcldlYlZSPigp
OworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYlZS
PigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVt
ZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKaW5kZXggYmMyM2Q1OWNjMzEy
MzdiMTQ5N2E3NmFjYzU5ZDNlYWY1ZDJiNTg0MC4uNmNhNjdmMzkxYTMxZmNkMzg2OTI1NWIyMWYy
ZmNiN2YzZmJmOWJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbCA6IHB1YmxpYyBDcnlwdG9EaWdlc3RD
b250ZXh0IHsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4
dD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0RpZ2VzdENvbnRleHRJbXBsPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9E
aWdlc3RDb250ZXh0SW1wbD4oKTsKICAgICB9CiAKICAgICBDcnlwdG9EaWdlc3RDb250ZXh0SW1w
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVy
aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcApp
bmRleCAzMTUzMTY4MDgwN2I3MmQ1ZWY5MzgwOTE0ZTdhZTI0MGFkOWQwMzk3Li5lNTNlMTk1YjM1
ZjQ5OGY3OTUyNTE1MWViYzJhY2ViNWZhZmNkMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IFBBTCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4gQ2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tHZW5lcmljPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPENsb2NrR2VuZXJpYz4oKTsKIH0KIAogQ2xvY2tHZW5lcmljOjpDbG9ja0dlbmVyaWMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQppbmRleCBj
Njg5MzIxNWYwNmIwYzY3NGQ1NDYwODMzYjFhNGQ1MWNjMzJiNjE0Li45ZTA3MWI3ODE0ZTQ0ZmUw
MDQ0MmU2NmM3MjBiMmJmYjMxMzA2OWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9tYWMvQ2xvY2tDTS5tbQpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3QgaW50MzJf
dCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDsKIAogc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBDbG9j
azo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDbG9ja0NNPigpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrQ00+KCk7CiB9CiAKIENsb2NrQ006OkNsb2NrQ00o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5k
ZXggY2FjYWI4NTY4Yzg2MTEyZDljZGZlZmMzMDkwMjZhZDljODE1MzNlNS4uYjM1ZmMxNTY0Mzdm
MWNhMDlkNjQyMmJkNTljNzEzM2ZhYzJjNjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNTc1LDcgKzE1NzUsNyBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQog
dm9pZCBBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNV
bnRpbFRyZWVNdXRhdGVzKCkKIHsKICAgICBpZiAoIW1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVD
YWNoZSkKLSAgICAgICAgbV9jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlID0gc3RkOjptYWtl
X3VuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU+KCk7CisgICAgICAgIG1fY29t
cHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IG1ha2VVbmlxdWU8QVhDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZUNhY2hlPigpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0b3BDYWNoaW5nQ29t
cHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvbi5jcHAKaW5kZXggZWRmZGJiMGEwNmZkNmVkYTI1MDQ4Yjk3MTliOWVmMWJhOWUxMzQ0My4u
ZTZkZWE5NjExZjliNDg4MGE1YTE5YjlhZDFlMWJkZTcxYzE4NDc4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFdl
YkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShEaWRTZWVrIGRpZFNlZWssIFN5bmNocm9u
b3VzbHlOb3RpZnkgc3luYwogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiBzeW5jaHJvbm91
c2x5IG5vdGlmeSBpcyBmYWxzZSwgcXVldWUgYSBtaWNyb3Rhc2sgdG8gcnVuIGZpbmlzaCBub3Rp
ZmljYXRpb24gc3RlcHMgZm9yIGFuaW1hdGlvbiB1bmxlc3MgdGhlcmUKICAgICAgICAgICAgIC8v
IGlzIGFscmVhZHkgYSBtaWNyb3Rhc2sgcXVldWVkIHRvIHJ1biB0aG9zZSBzdGVwcyBmb3IgYW5p
bWF0aW9uLgogICAgICAgICAgICAgbV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1Bl
bmRpbmcgPSB0cnVlOwotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1
ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVl
OjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSB7CiAgICAgICAgICAgICAgICAg
aWYgKG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCmluZGV4IDdkYTQ2
YTYxNTA0ZWYyNDgxNWE2OTRkZmJhMTJjMjhiMWVmNGZlNjYuLjYyMWI4OTA1MWJiNDhkYjAzMDFl
YTgwNDdjN2FmZWZmYjY4Y2RlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTVByb21pc2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVByb21pc2VQcm94eS5oCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIERPTVByb21pc2VQcm94eSB7
CiAKIHRlbXBsYXRlPD4KIGNsYXNzIERPTVByb21pc2VQcm94eTxJRExWb2lkPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRE9NUHJvbWlzZVByb3h5KCkgPSBk
ZWZhdWx0OwogICAgIH5ET01Qcm9taXNlUHJveHkoKSA9IGRlZmF1bHQ7CkBAIC04NCw2ICs4NSw3
IEBAIGNsYXNzIERPTVByb21pc2VQcm94eTxJRExWb2lkPiB7CiAvLyBGb250RmFjZSBhbmQgRm9u
dEZhY2VTZXQuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgogY2xhc3MgRE9NUHJvbWlzZVBy
b3h5V2l0aFJlc29sdmVDYWxsYmFjayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx0eXBlbmFt
ZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlICgpPjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZGIwYzFkYzc2ZjhhMjg5NzA0NWVlMmNm
YzkxOTIzZDU4ZGYxYjZmOS4uYzVjNDcwNjFiZmFjYTFmY2E3MjhiZTI3YjBhMmI0YTlmMGIzMDI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZl
bnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3IKICAgICBKU0RPTVdp
bmRvd0Jhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UmPihvYmpl
Y3QpOwogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0
aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFz
ayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVl
OjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2Fs
bGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRleCA2Mjk1ZjU4NGNmZThhMTcyOWRkZjZi
MThkNzc1NDlmZDQ0YzlhMGJlLi5kYjVlNzczNDkwYmVkZmJmM2UwYzEwY2YyM2QwYTM2YzhhM2Jk
YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
Q3VzdG9tLmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIEV2ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0
Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogc3RkOjp1bmlxdWVfcHRyPEpTRXZl
bnRUYXJnZXRXcmFwcGVyPiBqc0V2ZW50VGFyZ2V0Q2FzdChWTSYgdm0sIEpTVmFsdWUgdGhpc1Zh
bHVlKQogewogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBqc0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJn
ZXQqPih2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNF
dmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBlZCgp
LCAqdGFyZ2V0KTsKICAgICBpZiAoYXV0byogd2luZG93ID0gdG9KU0RPTVdpbmRvdyh2bSwgdGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdy
YXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsK
ICAgICBpZiAoYXV0byogc2NvcGUgPSB0b0pTV29ya2VyR2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVy
PihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxK
U0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFk
ZGE0YmYwNTMxYTcwYmI0MDIuLjliZDY2NDQ2MDE3MDU0OTVhOTRlN2IzZmFkZjA0OGYzYzdiMDQz
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFs
U2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckds
b2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEpTV29ya2VyR2xvYmFs
U2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBS
ZWY8SgogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0
aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2
ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQs
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgIGF1dG8gbWlj
cm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5t
aWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggMTE0ZmYzYzhhNWRmMDM5MDI4M2IxYTY3Y2U2MDhkN2Y0MjQ2ZTdjMi4uMzVjY2Q0OTYz
NWUwNjExOTRlOTcyOTNlNzEyZjdhYTM3MmM0OWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zMzAwLDcgKzMz
MDAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4+IHRyYW5zZmVyQXJyYXlCdWZmZQogICAgIGlmIChhcnJheUJ1ZmZlcnMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gY29udGVudHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJzLnNp
emUoKSk7CisgICAgYXV0byBjb250ZW50cyA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PihhcnJheUJ1ZmZlcnMuc2l6ZSgpKTsKIAogICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1
ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZmZXJJbmRleCA9IDA7IGFy
cmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJheUJ1ZmZlckluZGV4Kysp
IHsKQEAgLTM0NTEsNyArMzQ1MSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsKICNlbmRp
ZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1
ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJz
ID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgYXV0byBjb2Rl
ID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJnN0YXRlLCB2YWx1ZSwgbWVzc2FnZVBvcnRz
LCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgICAgIHdhc21Nb2R1bGVzLCAKQEAgLTM0NjksNyArMzQ2OSw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShF
eGVjU3RhdGUmCiAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFs
dWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3Jr
ZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBudWxscHRyLCBXVEZNb3Zl
KGltYWdlQnVmZmVycykKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgICAgICAgICAg
LCBzdGQ6Om1ha2VfdW5pcXVlPFdhc21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCisgICAgICAg
ICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCiAjZW5k
aWYKICAgICAgICAgICAgICAgICApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNWM0NjYyOTRiZWU1NmMyMWJmMGY2
M2QxNWIwZjhkZjBmMjdhM2EwZS4uNGY0YjBjZjNiN2VlY2RkZDA3ODcwMjU1MjA4ODk1ZTQ1ZmEy
YTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQoYXJyYXlMZW5ndGgpOwogCi0gICAgYXV0
byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4oKTsKKyAgICBhdXRvIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IG1h
a2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIHdoaWxlIChhcnJheUxl
bmd0aC0tKSB7CiAgICAgICAgIHVuc2lnbmVkIGJ1ZmZlclNpemU7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCmluZGV4IDI0NmY2NGE5ZjYzMjJiNTg3MGNiYjY4
MmVkYjJkNGVkYjk1M2VjN2MuLjNiMTEyNTJhZTY0Y2FmMmU0ZmU3MzllMzFlZTEwOTk1NGQ1NmE1
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgSlNWTUNsaWVudERhdGE6OmluaXROb3Jt
YWxXb3JsZChWTSogdm0pCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBuZXcgSlNW
TUNsaWVudERhdGEoKnZtKTsKICAgICB2bS0+Y2xpZW50RGF0YSA9IGNsaWVudERhdGE7IC8vIH5W
TSBkZWxldGVzIHRoaXMgcG9pbnRlci4KICAgICAKLSAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29u
c3RyYWludChzdGQ6Om1ha2VfdW5pcXVlPERPTUdDT3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xp
ZW50RGF0YSkpOworICAgIHZtLT5oZWFwLmFkZE1hcmtpbmdDb25zdHJhaW50KG1ha2VVbmlxdWU8
RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGllbnREYXRhKSk7CiAgICAgICAgIAogICAg
IGNsaWVudERhdGEtPm1fbm9ybWFsV29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZSgqdm0s
IHRydWUpOwogICAgIHZtLT5tX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFdl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTZhNzZjNDk1Mjlh
NGJiODcxY2I2NmNhM2FkNzVhMmQ3NmE4MDY1NS4uZDIzOTg1N2FhM2JkZGU5ZmViOWNiODc0MGZj
ZjVkNjQ5ZTM1MGRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFdvcmtl
clNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAgIEFTU0VSVChtX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0
UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fY29uc29s
ZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xvYmFs
U2NvcGUpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50
KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfY2xhc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5j
cHAKaW5kZXggMjljODE4NjgzNmVhMDU0MTFlOGYxZWQ2NDFjMDU3MGNlODE3NjgxNS4uYWE1NmUy
ZmRlODU1NzdhY2Y5YzA0NzRjODk4NzdmNGUwZDVjNTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y19jbGFzcy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgTWV0aG9kKiBDQ2xhc3M6Om1ldGhvZE5hbWVk
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAg
ICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihp
bnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlm
IChtX2lzYS0+aGFzTWV0aG9kICYmIG1faXNhLT5oYXNNZXRob2Qob2JqLCBpZGVudCkpIHsKLSAg
ICAgICAgYXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5pcXVlPENNZXRob2Q+KGlkZW50KTsKKyAg
ICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPENNZXRob2Q+KGlkZW50KTsKICAgICAgICAg
Q01ldGhvZCogcmV0ID0gbWV0aG9kLmdldCgpOwogICAgICAgICBtX21ldGhvZHMuc2V0KG5hbWUu
aW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICByZXR1cm4gcmV0OwpAQCAtMTAzLDcg
KzEwMyw3IEBAIEZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogICAgIGNvbnN0IENJbnN0YW5jZSogaW5z
dCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVj
dCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAgaWYgKG1faXNhLT5oYXNQcm9wZXJ0eSAm
JiBtX2lzYS0+aGFzUHJvcGVydHkob2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBmaWVsZCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0ZpZWxkPihpZGVudCk7CisgICAgICAgIGF1dG8gZmllbGQgPSBt
YWtlVW5pcXVlPENGaWVsZD4oaWRlbnQpOwogICAgICAgICBDRmllbGQqIHJldCA9IGZpZWxkLmdl
dCgpOwogICAgICAgICBtX2ZpZWxkcy5zZXQobmFtZS5pbXBsKCksIFdURk1vdmUoZmllbGQpKTsK
ICAgICAgICAgcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
c2MvQnJpZGdlSlNDLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCmlu
ZGV4IGYyZjYyMDgyYTgwOGExOWYxMGE1ZDkzNWQ5MjJiNzczYzEyMjFjMjguLjA0Y2RkY2QyNGNh
YTgyOWMzMmU1NmVjMjczYWZiZDM1MWYyNTRlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBSb290T2JqZWN0OwogY2xhc3MgUnVu
dGltZU9iamVjdDsKIAogY2xhc3MgRmllbGQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3Rh
dGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFs
dWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KaW5kZXggYjg2Zjc1
MWEwYTcxMzhiZTAwNzc2YTc4Y2JjMmE2ZDQ1ZGQzNzUwMi4uYTNkOGQzMmYyOGRkODA1OGE0YWI0
NDI3Mzk1MzQ0MDc0ZjI2Yzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2Ns
YXNzLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgTWV0aG9kKiBPYmpjQ2xhc3M6Om1ldGhvZE5hbWVk
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKICAgICAgICAgICAg
ICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6b2Jq
Y01ldGhvZFNlbGVjdG9yXTsKIAogICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBw
ZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nKiltZXRob2ROYW1lLmdldCgpXSkgfHwg
IXN0cmNtcChvYmpjTWV0aG9kU2VsZWN0b3JOYW1lLCBidWZmZXIuZGF0YSgpKSkgewotICAgICAg
ICAgICAgICAgIGF1dG8gbWV0aG9kID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjTWV0aG9kPih0aGlz
Q2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CisgICAgICAgICAgICAgICAgYXV0byBtZXRob2Qg
PSBtYWtlVW5pcXVlPE9iamNNZXRob2Q+KHRoaXNDbGFzcywgb2JqY01ldGhvZFNlbGVjdG9yKTsK
ICAgICAgICAgICAgICAgICBtZXRob2RQdHIgPSBtZXRob2QuZ2V0KCk7CiAgICAgICAgICAgICAg
ICAgbV9tZXRob2RDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobWV0aG9kKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xODksNyArMTg5LDcgQEAgRmllbGQqIE9iamNDbGFzczo6
ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2Up
IGNvbnMKICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHRO
YW1lRm9yS2V5OlVURjhLZXlOYW1lXTsKIAogICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYm
IFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgp
XSkgfHwgW2tleU5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0
KCldKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqY0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5TmFtZSk7CisgICAgICAgICAgICAg
ICAgYXV0byBuZXdGaWVsZCA9IG1ha2VVbmlxdWU8T2JqY0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpa2V5TmFtZSk7CiAgICAgICAgICAgICAgICAgZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsK
ICAgICAgICAgICAgICAgICBtX2ZpZWxkQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5l
d0ZpZWxkKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjAsNyArMjIwLDcgQEAgRmll
bGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0
aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktleTpvYmpjSXZhck5hbWVdOwogCiAgICAgICAgICAg
ICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5T
U3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgIXN0cmNtcChvYmpjSXZhck5hbWUsIGpzTmFt
ZS5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOworICAgICAgICAgICAgICAgICAgICBhdXRv
IG5ld0ZpZWxkID0gbWFrZVVuaXF1ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKICAgICAgICAgICAg
ICAgICAgICAgZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgbV9m
aWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVsZCkpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGlt
ZS5tbQppbmRleCBlMDhiMDQ4ZTNiNTY4NDI5OGNkZWZkOTNlYjkxODgzODkxNTZmNDM4Li4zYjkz
ZTE4NzgzODU0YzI0NDQ2ZTFjZmE1NzU4NDY2ZjBmMGE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgCiAgICAgaWYgKFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVu
dHM6KV0pewogICAgICAgICBPYmpjQ2xhc3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamND
bGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0Q2xhc3MoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChzdGQ6Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+
KG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2Vi
U2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01l
dGhvZD4gZmFsbGJhY2tNZXRob2QobWFrZVVuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlz
YSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJn
dW1lbnRzOikpKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRp
Y19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5wcm9wZXJ0
eU5hbWUoKTsKICAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWVJ
ZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpj
SW5zdGFuY2UtPmludm9rZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxG
aWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJM
RmlsdGVycy5jcHAKaW5kZXggODNkNDRlMDY3ZmJkZjU0N2Y2Yzg4YjY3YTM2ZWI1M2Y2OTE0NjZl
ZS4uZjE3MWE1ODIwM2Y5OGFmMTU1NDc4MGUwNTE5ZTA0YTFlNTNhMGJkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMu
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OnByaW50KCkg
Y29uc3QKICNlbmRpZgogCiBDb21iaW5lZFVSTEZpbHRlcnM6OkNvbWJpbmVkVVJMRmlsdGVycygp
Ci0gICAgOiBtX3ByZWZpeFRyZWVSb290KHN0ZDo6bWFrZV91bmlxdWU8UHJlZml4VHJlZVZlcnRl
eD4oKSkKKyAgICA6IG1fcHJlZml4VHJlZVJvb3QobWFrZVVuaXF1ZTxQcmVmaXhUcmVlVmVydGV4
PigpKQogewogfQogCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6
OmFkZFBhdHRlcm4odWludDY0X3QgYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxUZXJtPiYgcGF0dGUK
ICAgICAgICAgaWYgKG5leHRFbnRyeUluZGV4ICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAgICAg
ICBsYXN0UHJlZml4VHJlZSA9IGxhc3RQcmVmaXhUcmVlLT5lZGdlc1tuZXh0RW50cnlJbmRleF0u
Y2hpbGQuZ2V0KCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUt
PmVkZ2VzLmFwcGVuZChQcmVmaXhUcmVlRWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwg
c3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpfSkpOworICAgICAgICAgICAgbGFz
dFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhUcmVlRWRnZSh7bV9hbHBoYWJldC5pbnRl
cm5lZCh0ZXJtKSwgbWFrZVVuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpfSkpOwogICAgICAgICAg
ICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+ZWRnZXMubGFzdCgpLmNoaWxkLmdl
dCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRleCA4YzdlM2Y3
ZDdmMWUwZDU1YWFkODkzNGFiYmE1YWE3MGZiOGY4NWNmLi43N2ZlYjYwYzUwYmM4YTRmMjRiMjc2
OTZhZDExMGQxZWRhNzQyODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAtNDksNiArNDks
NyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKIC8vIDEpIEl0IHN0b3JlcyB0aGUgcnVsZXMg
Zm9yIGVhY2ggY29udGVudCBleHRlbnNpb24uCiAvLyAyKSBJdCBwcm92aWRlcyBBUElzIGZvciB0
aGUgV2ViQ29yZSBpbnRlcmZhY2VzIHRvIHVzZSB0aG9zZSBydWxlcyBlZmZpY2llbnRseS4KIGNs
YXNzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgLy8gLSBSdWxlIG1hbmFnZW1lbnQgaW50ZXJmYWNlLiBUaGlzIGNh
biBiZSB1c2VkIGJ5IHVwcGVyIGxheWVyLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlw
dG8uY3BwCmluZGV4IDk2ZTJkNjM0Yjg5M2IzOTkzMDRhOGIyYjI4NWU2MWY0ZTQ2OWRjMGMuLmIy
YTlhNzgzNTIyNzcyODNmOTVkODQ5ZDAzYjE1NmZjZGM3MjFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC0xMTUsMzEgKzExNSwzMSBAQCBzdGF0aWMgRXhjZXB0
aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxp
emVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6RGVjcnlwdDoKICAgICAgICAgc3dpdGNo
ICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQg
PSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0Ff
T0FFUDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlw
dG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRp
b25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0NCQzoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfQ0ZCOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENy
eXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfQ1RSOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4oc3RhdGUsIHZhbHVlLmdl
dCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7
IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9
IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4oc3RhdGUsIHZh
bHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2Vw
dGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1z
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVs
dDoKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBz
d2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SE1BQzoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOiB7
CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29y
aXRobUVjZHNhUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwpAQCAtMTYwLDEzICsxNjAsMTMg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmll
ci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIu
cmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0g
aGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFt
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BTUzogewogICAgICAgICAgICAgYXV0byBw
YXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHN0
YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYVBz
c1BhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGRlZmF1bHQ6CkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CiAgICAgICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFy
YW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC0xOTEsNyArMTkxLDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9
IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4oc3RhdGUs
IHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4
Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4ocGFyYW1z
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5
R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKQEAg
LTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYg
KGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBo
YXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFz
aElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVk
S2V5R2VuUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DVFI6CkBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6IHsKICAgICAg
ICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVz
S2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5
UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9B
bGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsKQEAg
LTIyMywxNCArMjIzLDE0IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBp
ZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5o
YXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5
UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9B
bGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOiB7CiAgICAgICAgICAg
ICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjS2V5UGFy
YW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+
KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRo
bUVjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgZGVmYXVsdDoKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9B
bAogCiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0Fs
Z29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHN0YXRlLCBuZXdWYWx1ZSk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJhbXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpIS0RGOiB7CkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlv
bigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIu
cmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1
bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBhcmFtcyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlBCS0RGMjogewpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNy
eXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsK
ICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQg
PSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNzksNyArMjc5
LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkltcG9y
dEtleToKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOgpAQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBF
eGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5v
cm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNl
cHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlm
aWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZElt
cG9ydFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjoKQEAgLTI5OCw3ICsy
OTgsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6QUVTX0NGQjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CiAgICAg
ICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUht
YWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CkBAIC0zMDcsMTkgKzMwNywxOSBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhh
c0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxl
YXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNo
SWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFt
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252
ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdl
dCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7
IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAg
ICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6
ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpVbndyYXBLZXk6CiAgICAgICAgIHN3aXRj
aCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciB9OwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0
b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bUFlc0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFl
c0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7
CkBAIC0zNTQsMTIgKzM1NCwxMiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAg
ICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJh
bXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1h
Y0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjoK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpA
QCAtNTIwLDE2ICs1MjAsMTYgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiBjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMoY28KIHsKICAgICBzd2l0
Y2ggKGltcG9ydFBhcmFtcy5wYXJhbWV0ZXJzQ2xhc3MoKSkgewogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6Ok5vbmU6IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOwogICAg
ICAgICByZXN1bHQtPmlkZW50aWZpZXIgPSBpbXBvcnRQYXJhbXMuaWRlbnRpZmllcjsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzOjpDbGFzczo6RWNLZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5
cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShk
b3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6OkhtYWNLZXlQYXJhbXM6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJh
bXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
PihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0
aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzOjpDbGFzczo6UnNhSGFzaGVkSW1wb3J0UGFyYW1zOgotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+
KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQ
YXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9u
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmlu
ZGV4IGRiY2NjOTAwZjMzNzQ4Y2QyMDY3ZjYwY2IyOTBjMGJkNjAwNjU1MzMuLmE0MmY1NjRmODFm
ZTFmMGVhMDk0NDNkMWYxMDUzYzFjM2NkMGNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTIxNywxMiArMjE3LDEyIEBAIGNsYXNzIENTU0NhbGNQ
cmltaXRpdmVWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAg
IHsKICAgICAgICAgc3dpdGNoIChjYXRlZ29yeSgpKSB7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRp
b25DYXRlZ29yeTo6TnVtYmVyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRW
YWx1ZSgpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVu
Z3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29y
ZTo6Rml4ZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9u
TGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRh
dGEpLCBXZWJDb3JlOjpGaXhlZCkpOwogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6
OlBlcmNlbnQ6CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudExlbmd0
aDogewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25M
ZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBl
cmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkp
OwogICAgICAgICB9CiAgICAgICAgIC8vIE9ubHkgdHlwZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9m
IGEgTGVuZ3RoIGV4cHJlc3Npb24gY2FuIGJlIGNvbnZlcnRlZAogICAgICAgICAvLyB0byBhIENh
bGNFeHByZXNzaW9uTm9kZS4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudE51bWJlciBtYWtl
cyBubyBzZW5zZSBhcyBhIExlbmd0aC4KQEAgLTUyMCw3ICs1MjAsNyBAQCBjbGFzcyBDU1NDYWxj
T3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBub2Rlcy51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZShub2RlKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJhdG9y
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdU
Rk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKICAgICB9CiAKICAgICBkb3VibGUgZG91YmxlVmFs
dWUoKSBjb25zdCBmaW5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1
bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcAppbmRleCBjNDRjZWJjNTEyMGVkODMyNmQ5YTFiMmE2NTZiOTM2N2I2ZTE5MTI4Li5l
NWFlOGI3N2E1MTRmMDljM2I0OTQ0MWI1NjJmNWMyYTFlYzc1MTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcApAQCAtMTY3LDExICsxNjcsMTEgQEAg
dm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICAg
ICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKLSAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICAgICAgZGVmYXVsdFF1
aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICB9CiAKLSAg
ICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwot
ICAgIGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVh
c2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgp
OworICAgIGRlZmF1bHRQcmludFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2Uo
KTsKICAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0
ZShDU1NQYXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSkubGVha1JlZigpOwogCiAgICAgLy8gU3Ry
aWN0LW1vZGUgcnVsZXMuCkBAIC0xOTAsMTAgKzE5MCwxMCBAQCB2b2lkIENTU0RlZmF1bHRTdHls
ZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5
bGUpOwogICAgIEFTU0VSVCghc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQpOwogCi0gICAgZGVmYXVs
dFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZh
dWx0U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIC8vIFRoZXJl
IGFyZSBubyBtZWRpYS1zcGVjaWZpYyBydWxlcyBpbiB0aGUgc2ltcGxlIGRlZmF1bHQgc3R5bGUu
CiAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBkZWZhdWx0U3R5bGU7Ci0gICAgZGVmYXVsdFF1aXJr
c1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZh
dWx0UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogCiAgICAg
c2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoc2ltcGxlVXNlckFnZW50U3R5
bGVTaGVldCwgc3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVu
RXZhbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDc3MDliNWRlYWZiZmU5
ZjlhYjExYWMwNzdjNjE5ZDc5NGQxNjQyZjIuLjY0NmMxNGExMWFjNjQ1Yjk5MjYxNDlmMjllOTgw
MGM0YzcyNjdiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNzcsMTAgKzc3
LDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRG
YWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAgICAgICAgICAgICBib29sIGFsbG93RG93
bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRpbmdzICYmIHNldHRpbmdzLT5kb3dubG9h
ZGFibGVCaW5hcnlGb250c0VuYWJsZWQoKSk7CiAgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9h
ZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9ybWF0KCkgJiYgZG9jdW1lbnQpIHsKICAgICAgICAg
ICAgICAgICBpZiAoQ2FjaGVkRm9udCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1
bWVudCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dU
cmVlKSkKLSAgICAgICAgICAgICAgICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NG
b250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7Cisg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+
KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZvbnQpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NT
Rm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIsIGZvbnRG
YWNlRWxlbWVudCk7CisgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNl
U291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1l
bnQpOwogCiAgICAgICAgIGlmIChzb3VyY2UpCiAgICAgICAgICAgICBmb250RmFjZS5hZG9wdFNv
dXJjZShXVEZNb3ZlKHNvdXJjZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAK
aW5kZXggMDVlM2EzZjZlMjFiYzkyODE3ODU1NjlhMTRhYTUwZmY1MmU0YTI3MC4uMThlODM0ZDY5
MGE2ZWI1MTAxZGM5MGM4ZGU1ZGI1ZTdhMWIwYzVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTZXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBDU1NGb250RmFjZVNldDo6ZW5z
dXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKGNvbnN0IFN0cmluZyYgZmFtaWwK
ICAgICAgICAgZmFtaWx5TGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlRm9udEZhbWlseVZhbHVlKGZhbWlseU5hbWUpKTsKICAgICAgICAgZmFjZS0+c2V0RmFtaWxp
ZXMoZmFtaWx5TGlzdC5nZXQoKSk7CiAgICAgICAgIGZhY2UtPnNldEZvbnRTZWxlY3Rpb25DYXBh
YmlsaXRpZXMoaXRlbSk7Ci0gICAgICAgIGZhY2UtPmFkb3B0U291cmNlKHN0ZDo6bWFrZV91bmlx
dWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCksIGZhbWlseU5hbWUpKTsKKyAgICAgICAg
ZmFjZS0+YWRvcHRTb3VyY2UobWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZmFjZS5nZXQo
KSwgZmFtaWx5TmFtZSkpOwogICAgICAgICBBU1NFUlQoIWZhY2UtPmNvbXB1dGVGYWlsdXJlU3Rh
dGUoKSk7CiAgICAgICAgIGZhY2VzLmFwcGVuZChXVEZNb3ZlKGZhY2UpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCmluZGV4IGRlNmYzOWQzZjVkODczMWQ5OWU1
ZWIzYzk2OGUyOWFkMWVhY2JmZTYuLmM2YzVjMzk1NDBhNWM1MDVjZGY0ZDU5Yzc0NmMzOTE4NWM5
ZTAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCkBAIC0xNDAsNyAr
MTQwLDcgQEAgQ1NTUnVsZSogQ1NTR3JvdXBpbmdSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBj
b25zdAogQ1NTUnVsZUxpc3QmIENTU0dyb3VwaW5nUnVsZTo6Y3NzUnVsZXMoKSBjb25zdAogewog
ICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09N
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVs
ZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4oKnRoaXMpKTsKKyAgICAgICAgbV9ydWxl
TGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5n
UnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4oKnRoaXMpKTsKICAgICByZXR1cm4g
Km1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCBmZmRkM2QwYWE2NTdmMjVlYWYzMWQ1NzBjNTg2
OGVkNTMwOWUyZWZkLi41NTUxZjJjNjkxN2QwMzMwNzI2YWNkZjgxMDkxYTkxZmFiNGUwYjU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0x
MTAsNyArMTEwLDcgQEAgR2VuZXJhdGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNh
Y2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSkKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSwgR2VuZXJhdGVkSW1h
Z2UmIGltYWdlKQogewogICAgIEFTU0VSVCghbV9pbWFnZXMuY29udGFpbnMoc2l6ZSkpOwotICAg
IG1faW1hZ2VzLmFkZChzaXplLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdl
PigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKKyAgICBtX2ltYWdlcy5hZGQoc2l6ZSwgbWFrZVVuaXF1
ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNpemUsIGltYWdlKSk7CiB9CiAKIHZvaWQg
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNp
emUgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCBjOTA5
ODMyZGEwZTUxOTAyNTM1MTNhMzk4MzE5MWE3YzJmMzkzMDA1Li42ZjFlYjMzODZkOWZiYzcyZDQ0
Mzc4NWQxZDE5YzRkZDhjNWMzN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
S2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1
bGUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgQ1NTS2V5ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNS
dWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENTU0tleWZyYW1l
c1J1bGU6OmNzc1J1bGVzKCkKIHsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0g
ICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NS
dWxlTGlzdDxDU1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMpOworICAgICAgICBtX3J1bGVMaXN0Q1NT
T01XcmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA0ODBhODk4NTIzN2FkYTkwYTExNzhlMGIy
NzllMGU2NjgwN2UzMzQxLi5jODhkMWVkYzkzYjdhNmM4M2YyMTc3YmFjNzY3ZjliNzgyZWU3NThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAg
UmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0Ojpjc3NSdWxlcygpCiAgICAgaWYgKCFj
YW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fcnVs
ZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CisgICAgICAgIG1fcnVs
ZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhp
cyk7CiAgICAgcmV0dXJuIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIuZ2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKaW5kZXggNjVhMmZkZjhkZmFjYjRk
N2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MC4uOTE0YmRlNGEyZGU5YWEyMTA2YzAxMDYzYjgwOGQ5
Y2E0ZmZmNmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29y
a2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgRE9NQ1NTUGFpbnRXb3JrbGV0KiBET01DU1NQYWludFdvcmtsZXQ6
OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PERPTUNTU1BhaW50V29ya2xldCo+KFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNl
Pjo6ZnJvbSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUGFp
bnRXb3JrbGV0Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PERPTUNTU1BhaW50V29ya2xldD4oY3NzKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmY3NzLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggN2VjZDkzZDdkYzNkNDMy
ZWFmODJiYzk1NmU2MWQ0ODlhNTEwNjI1Yi4uMGRmNmFhZTk2ZjBlMWM3MGIzNzU1NjE2NDllZTM1
ZDI4ZWI0YzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVy
Q3VzdG9tUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3Rl
ckN1c3RvbVByb3BlcnR5LmNwcApAQCAtODQsNyArODQsNyBAQCBET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5KiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Ojpmcm9tKERPTUNTU05hbWVz
cGFjZQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01DU1NSZWdpc3Rl
ckN1c3RvbVByb3BlcnR5Kj4oU3VwcGxlbWVudDxET01DU1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3Ms
IHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERP
TUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNzcyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBu
ZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmNzcywgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Rv
Y3VtZW50UnVsZVNldHMuY3BwCmluZGV4IGQ4NTk2ZmQxYjI0NTlkZTA3ZTFjODk5Y2MwNzlmYzE5
ODUxMTY1ZTkuLjgyYjdmY2MzMGU1ODI3NDk5MjAyZTI4YjgzMDg2Y2YwZmE0NGFjNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9v
bCBEb2N1bWVudFJ1bGVTZXRzOjpzX2lzSW52YWxpZGF0aW5nU3R5bGVXaXRoUnVsZVNldHMgeyBm
YWxzZSB9OwogRG9jdW1lbnRSdWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyhTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyKQogICAgIDogbV9zdHlsZVJlc29sdmVyKHN0eWxlUmVzb2x2ZXIpCiB7
Ci0gICAgbV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBt
X2F1dGhvclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fYXV0aG9yU3R5bGUt
PmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIERv
Y3VtZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZUlmTmVlZGVkKCkg
Y29uc3QKIAogICAgIC8vIE1lZGlhIHF1ZXJpZXMgb24gdXNlciBhZ2VudCBzaGVldCBuZWVkIHRv
IGV2YWx1YXRlZCBpbiBkb2N1bWVudCBjb250ZXh0LiBUaGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBz
aGVldHMgaW4gdGhpcyByZXNwZWN0LgogICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBt
X3N0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpOwotICAgIG1fdXNlckFnZW50TWVk
aWFRdWVyeVN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fdXNlckFn
ZW50TWVkaWFRdWVyeVN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fdXNlckFn
ZW50TWVkaWFRdWVyeVN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzOjptZWRpYVF1ZXJ5U3R5bGVTaGVldCwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVS
ZXNvbHZlcik7CiAKICAgICAvLyBWaWV3cG9ydCBkZXBlbmRlbnQgcXVlcmllcyBhcmUgY3VycmVu
dGx5IHRvbyBpbmVmZmljaWVudCB0byBhbGxvdyBvbiBVQSBzaGVldC4KQEAgLTk2LDcgKzk2LDcg
QEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKIHsKICAgICBh
dXRvJiBleHRlbnNpb25TdHlsZVNoZWV0cyA9IG1fc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLmV4
dGVuc2lvblN0eWxlU2hlZXRzKCk7CiAgICAgYXV0byYgbWVkaWFRdWVyeUV2YWx1YXRvciA9IG1f
c3R5bGVSZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7Ci0gICAgYXV0byB0ZW1wVXNlclN0
eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8gdGVtcFVzZXJTdHls
ZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBpZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVz
ZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBhZ2VVc2VyU2hlZXQoKSkKICAgICAgICAg
dGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocGFnZVVzZXJTaGVldC0+Y29udGVudHMo
KSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAgICAgY29sbGVjdFJ1
bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25TdHlsZVNoZWV0cy5pbmplY3RlZFVzZXJT
dHlsZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgbV9zdHls
ZVJlc29sdmVyKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1
bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogICAg
IHNpemVfdCBzaXplID0gcnVsZXMuc2l6ZSgpOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgYXV0byBydWxlU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpOworICAgIGF1dG8gcnVsZVNldCA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShy
dWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3RvckluZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxp
c3RJbmRleCk7CiAgICAgcnVsZVNldC0+c2hyaW5rVG9GaXQoKTsKQEAgLTEyOCw3ICsxMjgsNyBA
QCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3Rv
cjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhv
clN0eWxlKCkKIHsKICAgICBtX2lzQXV0aG9yU3R5bGVEZWZpbmVkID0gdHJ1ZTsKLSAgICBtX2F1
dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fYXV0aG9yU3R5
bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1
dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC0xOTUsMTIgKzE5NSwxMiBAQCBzdGF0aWMgVmVjdG9y
PEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBB
dG9tU3RyaW5nJgogICAgICAgICAgICAgYXV0byBhcnJheUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KCpmZWF0dXJlLm1hdGNoRWxlbWVudCk7CiAgICAgICAgICAgICBhdXRvJiBydWxlU2V0
ID0gbWF0Y2hFbGVtZW50QXJyYXlbYXJyYXlJbmRleF07CiAgICAgICAgICAgICBpZiAoIXJ1bGVT
ZXQpCi0gICAgICAgICAgICAgICAgcnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4o
KTsKKyAgICAgICAgICAgICAgICBydWxlU2V0ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAg
ICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShmZWF0dXJlLnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJ
bmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgICAgICAgICBpZiAoZmVhdHVy
ZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25TZWxl
Y3RvckFycmF5W2FycmF5SW5kZXhdLmFwcGVuZChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9y
KTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGludmFsaWRhdGlvblJ1bGVTZXRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+KCk7CisgICAgICAgIGF1dG8g
aW52YWxpZGF0aW9uUnVsZVNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxl
U2V0Pj4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoRWxlbWVudEFy
cmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2hFbGVtZW50QXJyYXlbaV0p
CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uUnVsZVNldHMtPmFwcGVuZCh7IHN0YXRpY19j
YXN0PE1hdGNoRWxlbWVudD4oaSksIFdURk1vdmUobWF0Y2hFbGVtZW50QXJyYXlbaV0pLCBXVEZN
b3ZlKGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlbaV0pIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXggMDVkMzg1YTU1OGM0OGM0OGVlOGRhOTBm
NmExOGNiNGU3NWE2YTk1YS4uMDViNDU3ZmQ2ODIwYzY3ZjBlMGZiZTkzMDg3YjhjZWYwODI5ZWJh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0y
OTEsNyArMjkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBF
bGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2UKICAgICBpZiAobV9tYXRjaGVk
UnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBydWxlRGF0
YVZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7Cisg
ICAgYXV0byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlxdWU8UnVsZVNldDo6UnVsZURhdGFWZWN0
b3I+KCk7CiAgICAgcnVsZURhdGFWZWN0b3ItPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9tYXRj
aGVkUnVsZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogbV9tYXRjaGVk
UnVsZXMpCiAgICAgICAgIHJ1bGVEYXRhVmVjdG9yLT51bmNoZWNrZWRBcHBlbmQoKm1hdGNoZWRS
dWxlLnJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDIxMjI0NWRlZGNhZmY5
NTZhZDQ0MTA3YjllYjQ0Y2I0MTMyOGFhZGIuLmUxYjFhZjIwZmIxMWFlM2RmZWUxOTJjYWM5MmU2
MmNkZWE1NTdkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDksNyArNDksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRm9udEZhY2VXaXRoQXJy
YXlCdWZmZXIoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+
JiYgYXJyYXlCdWZmZXJWaWV3KQogewotICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1
ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRy
LCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOworICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1
ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRy
LCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAgIGZvbnRGYWNlLmFkb3B0U291cmNlKFdU
Rk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzYjIw
ZDQxMzMzNzUzM2Q2Y2IzYzU4Y2IzZDEwNGYwZjA0YjVlNjE5Li5lMWUxZDcyMTIxMWU2ZGUwMWE4
YTg2ZTBkNDBkODUyODk5N2IzNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFJl
ZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
Ojp3cmFwRm9yRGVwcmVjYXRlZENTCiAgICAgLy8gVGhlIG1hcCBpcyBoZXJlIHRvIG1haW50YWlu
IHRoZSBvYmplY3QgaWRlbnRpdHkgb2YgdGhlIENTU1ZhbHVlcyBvdmVyIG11bHRpcGxlIGludm9j
YXRpb25zLgogICAgIC8vIEZJWE1FOiBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgaWRlbnRpdHkgaXMg
bm90IGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkgYW5kIHRoaXMgY29kZSBzaG91bGQg
YmUgcmVtb3ZlZC4KICAgICBpZiAoIW1fY3Nzb21WYWx1ZVdyYXBwZXJzKQotICAgICAgICBtX2Nz
c29tVmFsdWVXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdl
YWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKTsKKyAgICAgICAgbV9jc3NvbVZhbHVlV3Jh
cHBlcnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRD
U1NPTVZhbHVlPj4+KCk7CiAgICAgCiAgICAgYXV0byYgY2xvbmVkVmFsdWUgPSBtX2Nzc29tVmFs
dWVXcmFwcGVycy0+YWRkKGludGVybmFsVmFsdWUsIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFs
dWU+KCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoY2xvbmVkVmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1J1bGVGZWF0dXJlLmNwcAppbmRleCBkZmZkYTZmNTFkZjk1NGQyMDZmMDNkMGM3MzU2MGRkYTM5
MmQxNDMwLi40NGVlYjFkNzAyZDJmOWRjYjZiMTJiNTUyNzgxNTY3ZmQwMGQyZTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJ1bGVGZWF0
dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogCiAgICAg
Zm9yIChhdXRvJiBuYW1lQW5kTWF0Y2ggOiBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXMpIHsKICAg
ICAgICAgY2xhc3NSdWxlcy5lbnN1cmUobmFtZUFuZE1hdGNoLmZpcnN0LCBbXSB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgp
LCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCks
IG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQg
PT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3Qu
YWRkKG5hbWVBbmRNYXRjaC5maXJzdCk7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBSdWxlRmVh
dHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICAg
ICAgYXV0byogc2VsZWN0b3IgPSBzZWxlY3RvckFuZE1hdGNoLmZpcnN0OwogICAgICAgICBhdXRv
IG1hdGNoRWxlbWVudCA9IHNlbGVjdG9yQW5kTWF0Y2guc2Vjb25kOwogICAgICAgICBhdHRyaWJ1
dGVSdWxlcy5lbnN1cmUoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFw
cGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgo
KSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwgbWF0Y2hFbGVtZW50LCBzZWxlY3Rvcikp
OwogICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAg
ICAgICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCku
bG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CkBAIC0yMDEsMTQgKzIwMSwx
NCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVy
KQogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kVmVjdG9yKG90aGVyLnVuY29tbW9u
QXR0cmlidXRlUnVsZXMpOwogICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuY2xh
c3NSdWxlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBb
XSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1
cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJl
Pj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVl
UGFpci52YWx1ZSk7CiAgICAgfQogICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5j
bGFzc2VzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5l
bmQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLmF0dHJpYnV0ZVJ1
bGVzKSB7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBb
XSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1
cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJl
Pj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVl
UGFpci52YWx1ZSk7CiAgICAgfQogICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhl
ci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0
aW5nSG9zdC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggZmE2YjkxMjAyMTNlYzU0
YmI2NTkwM2NmYWU2NjliZDQ2NmZiYjAyNy4uM2JiYmJmZWJjYTAwOTk3ODJhZjM5ODFlYjg2NzM2
Y2U2ODAzNmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZv
aWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KGNvbnN0IEF0b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVN
YXAmIG1hcCwgY29uc3QgUnVsZURhCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBydWxlcyA9
IG1hcC5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFydWxlcykK
LSAgICAgICAgcnVsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVEYXRhVmVjdG9yPigpOworICAg
ICAgICBydWxlcyA9IG1ha2VVbmlxdWU8UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZXMtPmFw
cGVuZChydWxlRGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaAppbmRleCA2OWFmNTU4MTU2NTRiZTMyMGYxYTlmZDcxYTc3NjY3ZDkyOTNmYTk3Li44
ODc3NWFkN2JhOGFhNTkwYWQ3YmY3MmEzN2QzYjVmNjViNWQyZDQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0zNDgsOSArMzQ4LDkgQEAgaW5saW5l
IExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xl
bmd0aChjb25zdCBMZW5ndGgKICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lv
bjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4
cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxj
RXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKLSAgICBsZW5ndGhzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5n
dGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJh
dGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CisgICAgbGVu
Z3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVu
Z3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5p
cXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKKyAgICBhdXRvIG9wID0gbWFrZVVu
aXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJh
dG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVh
dGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDlhMTkxZDE3ZGQ4ZTNlZGNjMWMxMzBjMjY1OTBlMGNh
NmY0ZTM2YTMuLmM1YzJiZjVkMGY1ZmM3OTEwYWZmMTYyNTk5OTBjNDM4NjYwYzE0MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTgxMyw3ICs4MTMsNyBAQCBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVy
LmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpzaGFkb3dWYWx1ZS5jb2xvcik7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jb2xvcigpOwot
ICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KElu
dFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6
dHJhbnNwYXJlbnQpOworICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRv
d0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0
eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3Ig
OiBDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0
U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQgdG8gdGhl
IGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CiAgICAgICAgIGVsc2UKQEAgLTgy
OSw3ICs4MjksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlh
bFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbAogCiBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3co
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5p
cXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3co
KSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3co
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNo
YWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBu
dWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
VGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUp
CkBAIC04NDQsNyArODQ0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaXRpYWxCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHYKIAogaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3coU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNo
YWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpID8gc3RkOjptYWtl
X3VuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFk
b3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRv
dyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpID8gbWFrZVVuaXF1ZTxT
aGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBu
dWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
Qm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
QEAgLTEzNTksNyArMTM1OSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKICAgICAgICAgICAg
IENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50
KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQogICAg
ICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihs
aXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAgICAgICAgICBhdXRvIGNvdW50ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZp
ZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CisgICAgICAg
ICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFs
dWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3Io
KSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQoV1RGTW92
ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAg
IH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDRjZjZj
NmY3YWI3ZGY5ZmMwNDMzNGJiZThkZDA1YTNiNTU5ZTkzNWMuLjE5Y2IwMzNkNzBiYjVhODk2ODY1
NTcyNzU1Yjk2Yjk3NzA1MWNiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwCkBAIC0xNTMwLDcgKzE1MzAsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkKICAgICAgICAgQVNTRVJU
KCFtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpKTsKICAgICAgICAgcmV0dXJuICptX2Nz
c29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMpOworICAgIG1fY3Nzb21XcmFw
cGVyID0gbWFrZVVuaXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsK
ICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCkBAIC0xNTQwLDcgKzE1NDAsNyBAQCBD
U1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVD
U1NTdHlsZURlY2xhcmF0aW9uKFN0eQogICAgICAgICBBU1NFUlQobV9jc3NvbVdyYXBwZXItPnBh
cmVudEVsZW1lbnQoKSA9PSAmcGFyZW50RWxlbWVudCk7CiAgICAgICAgIHJldHVybiAqbV9jc3Nv
bVdyYXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywgcGFyZW50RWxlbWVudCk7CisgICAgbV9j
c3NvbVdyYXBwZXIgPSBtYWtlVW5pcXVlPElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlz
LCBwYXJlbnRFbGVtZW50KTsKICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggM2E1MmMzNjE5OWE3OWEyNWUwOWMwMWQ4
ZmEwYzUwYWVmZjY4MmJiNS4uZGU0ZGE1ZjU1MTI5OTA5MzFkYTg2YzVjN2U4M2JjYjEwMTgwOGJj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTcxNSw3ICsxNzE1LDcg
QEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNj
YWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAgICAgaWYgKGF1dGhvclJvbGxiYWNrKQog
ICAgICAgICAgICAgcmV0dXJuIGF1dGhvclJvbGxiYWNrOwogCi0gICAgICAgIGF1dG8gbmV3QXV0
aG9yUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlv
biwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBuZXdBdXRob3JSb2xsYmFjayhtYWtlVW5p
cXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAg
ICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNjYWRlIGNvbnRhaW5zIFVBIHJ1bGVzIGFu
ZCB1c2VyIHJ1bGVzIGJ1dCBubyBhdXRob3IgcnVsZXMuCiAgICAgICAgIG5ld0F1dGhvclJvbGxi
YWNrLT5hZGROb3JtYWxNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmly
c3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBmYWxzZSk7CkBAIC0xNzMy
LDcgKzE3MzIsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIFN0eWxlUmVz
b2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKAogICAgICAgICBpZiAodXNlclJv
bGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIHVzZXJSb2xsYmFjazsKIAotICAgICAgICBhdXRv
IG5ld1VzZXJSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGly
ZWN0aW9uLCB3cml0aW5nTW9kZSkpOworICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhtYWtl
VW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOwogCiAg
ICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNjYWRlIGNvbnRhaW5zIG9ubHkgVUEg
cnVsZXMuCiAgICAgICAgIG5ld1VzZXJSb2xsYmFjay0+YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJl
c3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMu
bGFzdFVBUnVsZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vw
cm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDk5N2M0YzAzNjdk
ZDVkMGQ2NDVkNWVkZjUxZWVjNGJmYjBjMzIxMDUuLjAyYTM2ZWZlMDVkM2NjOWZlOTdkZDVjMGUy
NTkzYWU3OWZkNmMyYzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5w
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTgxMSw3ICs4MTEsNyBA
QCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlciB7CiAgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExheWVyKiBwcmV2aW91c0NoaWxkID0gbnVs
bHB0cjtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yIChhdXRvKiBwYXJl
bnQgPSAmc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24o
JG5hbWUpIC4gIigpOyBwYXJlbnQgJiYgcGFyZW50LT4iIC4gJHRlc3RGdW5jdGlvbiAuICIoKTsg
cGFyZW50ID0gcGFyZW50LT5uZXh0KCkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExh
eWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOworICAkc2V0dGVyQ29u
dGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChtYWtlVW5p
cXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGls
ZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgfVxuIjsK
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgY2hpbGQtPiIgLiAkc2V0dGVyIC4g
IihwYXJlbnQtPiIgLiAkZ2V0dGVyIC4gIigpKTtcbiI7CkBAIC04MzcsNyArODM3LDcgQEAgc3Vi
IGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBs
YXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuXG4iOwogICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIiAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KHZhbHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAg
IGlmICghY2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAg
ICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4o
IiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlx
dWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOwogICAk
c2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAgIGNoaWxkID0gcHJldmlvdXND
aGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAg
IH1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlTWFwKCktPiIgLiBnZXRGaWxsTGF5ZXJNYXBmdW5jdGlvbigkbmFtZSkgLiAiKCIg
LiAkQ1NTUHJvcGVydHlJZCAuICIsICpjaGlsZCwgaXRlbSk7XG4iOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5kZXggNjdjZmRmNTZkNjI1MDUzYTAxMTE5
OTJkNzExZjhjOGZmZGI5NWRjMi4uZDc1ZTRmYzkyYzc3YjA3YjFlNTNkYWQzMzg3ZTU1MWEzOTBj
MjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCkBA
IC03Nyw3ICs3Nyw3IEBAIENTU1BhcnNlckltcGw6OkNTU1BhcnNlckltcGwoY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBzdHJpCiAgICAgLCBtX3N0eWxlU2hl
ZXQoc3R5bGVTaGVldCkKICAgICAsIG1fb2JzZXJ2ZXJXcmFwcGVyKHdyYXBwZXIpCiB7Ci0gICAg
bV90b2tlbml6ZXIgPSB3cmFwcGVyID8gc3RkOjptYWtlX3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0
cmluZywgKndyYXBwZXIpIDogc3RkOjptYWtlX3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7
CisgICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gbWFrZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0
cmluZywgKndyYXBwZXIpIDogbWFrZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CiAgICAg
aWYgKGNvbnRleHQuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkICYmICF3cmFwcGVyICYmIHN0eWxl
U2hlZXQgJiYgcnVsZVBhcnNpbmcgPT0gQ1NTUGFyc2VyOjpSdWxlUGFyc2luZzo6RGVmZXJyZWQp
CiAgICAgICAgIG1fZGVmZXJyZWRQYXJzZXIgPSBDU1NEZWZlcnJlZFBhcnNlcjo6Y3JlYXRlKGNv
bnRleHQsIHN0cmluZywgKnN0eWxlU2hlZXQpOwogfQpAQCAtMjgyLDkgKzI4Miw5IEBAIENTU1Nl
bGVjdG9yTGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VTZWxlY3RvcihDU1NQYXJzZXJUb2tl
blJhbmdlIHJhbmdlLCBTdHlsCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+IHNlbGVjdG9yOwogICAgIGlmICghdHlwZVNlbGVjdG9yLmlzTnVsbCgpICYmIHBzZXVkby5p
c051bGwoKSkKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVl
dC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxD
U1NQYXJzZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCB0eXBlU2VsZWN0b3Is
IHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkpOwogICAgIGVsc2UgewotICAgICAgICBz
ZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAg
IHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgaWYg
KCFwc2V1ZG8uaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHNlbGVjdG9yID0gc3RkOjp1bmlxdWVf
cHRyPENTU1BhcnNlclNlbGVjdG9yPihDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRv
U2VsZWN0b3IocHNldWRvKSk7CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9y
LT5tYXRjaCgpICE9IENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpCkBAIC01MzUsNyArNTM1
LDcgQEAgUmVmUHRyPFN0eWxlUnVsZU5hbWVzcGFjZT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU5h
bWVzcGFjZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW4KIFJlZlB0cjxTdHlsZVJ1bGVNZWRpYT4gQ1NT
UGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUs
IENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spCiB7CiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIp
Ci0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6
OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChtX2Nv
bnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxl
R3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVy
biBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVy
eVNldChwcmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNl
Tm9uTnVsbCgpLCAgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ss
ICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiBydWxlczsKIApAQCAtNTYzLDcgKzU2Myw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVTdXBwb3J0cz4g
Q1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1cHBvcnRzUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlCiAg
ICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBlcnJvciwgaW52YWxpZCBAc3VwcG9ydHMg
Y29uZGl0aW9uCiAKICAgICBpZiAobV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0
eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5zZXJpYWxpemUoKS5zdHJpcFdoaXRlU3Bh
Y2UoKSwgc3VwcG9ydGVkLCBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVM
aXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVs
ZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5zZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwg
c3VwcG9ydGVkLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywg
Km1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikgewogICAg
ICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIoKS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVS
dWxlOjpTdXBwb3J0cywgbV9vYnNlcnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0KHByZWx1ZGUpKTsK
QEAgLTYzNSw3ICs2MzUsNyBAQCBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXJJ
bXBsOjpjb25zdW1lS2V5ZnJhbWVzUnVsZShib29sIHdlYmtpdFByZWZpeAogICAgICAgICByZXR1
cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3I7IGV4cGVjdGVkIGlkZW50IHRva2VuIGluIEBrZXlm
cmFtZXMgaGVhZGVyCiAKICAgICBpZiAobV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJu
IFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJy
ZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAg
ICByZXR1cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVhdGUobmFtZSwgbWFrZVVuaXF1ZTxEZWZl
cnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAg
ICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9i
c2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6S2V5ZnJhbWVzLCBtX29ic2VydmVy
V3JhcHBlci0+c3RhcnRPZmZzZXQocmFuZ2VDb3B5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCmluZGV4IDRkYmVmNDA1OGM3MTYyY2Q5NjQ2
ZWE3NjRkY2JiOWJiY2YzMWU0NTkuLmEwODcwZDM3NjJjZWE0MmY1YjVlYWJkMDVlYTc0NGYyZDlk
NmIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2Vs
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0
b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKFN0CiAgICAgZWxz
ZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtl
VW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5z
ZXRNYXRjaChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKTsKICAgICBzZWxlY3Rvci0+bV9z
ZWxlY3Rvci0+c2V0UGFnZVBzZXVkb1R5cGUocHNldWRvVHlwZSk7CiAgICAgcmV0dXJuIHNlbGVj
dG9yOwpAQCAtNjMsNyArNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTZWxlY3RvcgogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWxlY3RvciA9IG1ha2VV
bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKICAgICBzZWxlY3Rvci0+bV9zZWxl
Y3Rvci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRvVHlwZSk7CiAgICAgQXRvbVN0cmluZyBu
YW1lOwpAQCAtODQsMTMgKzg0LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3RvcihTCiB7CiAgICAg
YXV0byBwc2V1ZG9UeXBlID0gcGFyc2VQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50
U3RyaW5nKHBzZXVkb1R5cGVTdHJpbmcpOwogICAgIGlmIChwc2V1ZG9UeXBlLnBzZXVkb0NsYXNz
ICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Vua25vd24pIHsKLSAgICAgICAgYXV0byBzZWxl
Y3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIGF1
dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBz
ZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsK
ICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0NsYXNzVHlwZShwc2V1ZG9U
eXBlLnBzZXVkb0NsYXNzKTsKICAgICAgICAgcmV0dXJuIHNlbGVjdG9yOwogICAgIH0KICAgICBp
ZiAocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCAhPSBDU1NTZWxlY3Rvcjo6
UHNldWRvRWxlbWVudFVua25vd24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBt
YWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxl
Y3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxl
Y3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRvVHlwZS5jb21wYXRp
YmlsaXR5UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRW
YWx1ZShwc2V1ZG9UeXBlU3RyaW5nLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwpAQCAtMTAw
LDEyICsxMDAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJz
ZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yKFMKIH0KIAogQ1NTUGFyc2VyU2Vs
ZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxDU1NTZWxlY3Rvcj4oKSkKKyAgICA6IG1fc2VsZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxl
Y3Rvcj4oKSkKIHsKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKQotICAgIDogbV9zZWxlY3RvcihzdGQ6Om1ha2Vf
dW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCisgICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlx
dWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lKSkKIHsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIENT
U1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFyc2VyU2VsZWN0b3IoKQogCiB2b2lkIENTU1BhcnNlclNl
bGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+PiYmIHNlbGVjdG9yVmVjdG9yKQogewotICAgIG1fc2VsZWN0b3ItPnNldFNl
bGVjdG9yTGlzdChzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yTGlzdD4oV1RGTW92ZShzZWxl
Y3RvclZlY3RvcikpKTsKKyAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxpc3QobWFrZVVuaXF1
ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0b3JWZWN0b3IpKSk7CiB9CiAKIHZvaWQg
Q1NTUGFyc2VyU2VsZWN0b3I6OnNldExhbmdBcmd1bWVudExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxBdG9tU3RyaW5nPj4gYXJndW1lbnRMaXN0KQpAQCAtMjA5LDEyICsyMDksMTIgQEAgdm9p
ZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YXBwZW5kVGFnSGlzdG9yeShDU1NQYXJzZXJTZWxlY3RvckNv
bWJpbmF0b3IgcmVsYXRpb24sIHMKIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRh
Z1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBib29sIHRhZ0lzRm9yTmFt
ZXNwYWNlUnVsZSkKIHsKLSAgICBhdXRvIHNlY29uZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWNvbmQgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOwogICAgIHNlY29uZC0+bV9zZWxlY3RvciA9IFdURk1vdmUobV9zZWxlY3Rvcik7
CiAgICAgc2Vjb25kLT5tX3RhZ0hpc3RvcnkgPSBXVEZNb3ZlKG1fdGFnSGlzdG9yeSk7CiAgICAg
bV90YWdIaXN0b3J5ID0gV1RGTW92ZShzZWNvbmQpOwogCi0gICAgbV9zZWxlY3RvciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lLCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUp
OworICAgIG1fc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwgdGFn
SXNGb3JOYW1lc3BhY2VSdWxlKTsKICAgICBtX3NlbGVjdG9yLT5zZXRSZWxhdGlvbihDU1NTZWxl
Y3Rvcjo6U3Vic2VsZWN0b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ4OGU2MDIzZjIwMDI0YWZmZWY4NjE3YTUxNGM0
MDliZjQ5ZDFlZjMuLjcwOGVjNzc3M2MxOGQ2ZTA4ZTAwMWNhZmEzZDI4YzgwZDlmODcyZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBA
IC0yNDM1LDcgKzI0MzUsNyBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVQYXRoPiBjb25z
dW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncwogICAgIGlmIChhcmdz
LnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIAotICAgIGF1dG8gYnl0ZVN0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVT
dHJlYW0+KCk7CisgICAgYXV0byBieXRlU3RyZWFtID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0
cmVhbT4oKTsKICAgICBpZiAoIWJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGFyZ3Mu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCksICpieXRlU3Ry
ZWFtLCBVbmFsdGVyZWRQYXJzaW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4
IDZiM2FjYzg1ZTZmYzVlNWNiYjk1YWI5ZmUxYTZjN2NhOWVmODEwNDcuLmYzMzIzYjIyNmI0YjAx
MDBjOTgzYzQ4NjYzNzVmMWU2NTdiMTczOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC01NjQsNyArNTY0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZVBzZXVk
byhDU1NQYXJzZXJUb2sKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc0xhbmc6IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBDU1MgU2VsZWN0b3JzIExldmVs
IDQgYWxsb3dzIDpsYW5nKCotZm9vKQotICAgICAgICAgICAgYXV0byBhcmd1bWVudExpc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5nPj4oKTsKKyAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+KCk7CiAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWVMYW5nQXJndW1lbnRMaXN0KGFyZ3VtZW50TGlzdCwgYmxvY2spKQog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgc2VsZWN0b3ItPnNl
dExhbmdBcmd1bWVudExpc3QoV1RGTW92ZShhcmd1bWVudExpc3QpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCmluZGV4IDllYjVkN2U0
OWY1NmExZTk4ZDFmYmI5YjIzZTZlYTcyZTIyNjE1OGYuLjg4MTE3ZjE5ZTRiMjZiYTI1YmZmMjVh
ODU1OTE3MzJiYjdhM2U3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlOjpFbGVtZW50UXVldWUmIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjpl
bnN1cmVCYWNrCiB7CiAgICAgaWYgKCFzX3Byb2Nlc3NpbmdCYWNrdXBFbGVtZW50UXVldWUpIHsK
ICAgICAgICAgc19wcm9jZXNzaW5nQmFja3VwRWxlbWVudFF1ZXVlID0gdHJ1ZTsKLSAgICAgICAg
TWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEJhY2t1cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4oKSk7CisgICAgICAgIE1pY3JvdGFza1F1ZXVl
OjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxCYWNrdXBFbGVtZW50UXVldWVN
aWNyb3Rhc2s+KCkpOwogICAgIH0KICAgICByZXR1cm4gYmFja3VwRWxlbWVudFF1ZXVlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGNiNzUyMzI4MGM3YjMyNWM2NmNk
ZTY0NmMxNWJmNWE5MTMxNzQ1YmMuLmMwOWI4NDM2MzU1MzQxYThlZDQwYTVhOGI4NTE2YjZkOTdi
YTZkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0yOTAsNyArMjkwLDcg
QEAgdm9pZCBEYXRhVHJhbnNmZXI6OmRpZEFkZEZpbGVUb0l0ZW1MaXN0KCkKIERhdGFUcmFuc2Zl
ckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3Qp
Ci0gICAgICAgIG1faXRlbUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1M
aXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxpc3QgPSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zl
ckl0ZW1MaXN0PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2l0ZW1MaXN0OwogfQogCkBAIC00MTYs
NyArNDE2LDcgQEAgYm9vbCBEYXRhVHJhbnNmZXI6Omhhc1N0cmluZ09mVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5w
dXRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0
LCBjb25zdCBTdHJpbmcmIGh0bWxUZXh0KQogewotICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6
bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBt
YWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJp
bmcoInRleHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJp
bmcoInRleHQvaHRtbCJfcywgaHRtbFRleHQpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJv
YXJkKSwgVHlwZTo6SW5wdXRFdmVudCkpOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIFJlZjxEYXRhVHJh
bnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0
RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdy
aXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmRE
cm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJh
bnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+
bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9h
cmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZv
aWQgRGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgaW50IHgsIGlu
dCB5KQogICAgIG1fZHJhZ0ltYWdlID0gaW1hZ2U7CiAgICAgaWYgKG1fZHJhZ0ltYWdlKSB7CiAg
ICAgICAgIGlmICghbV9kcmFnSW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICBtX2RyYWdJbWFnZUxv
YWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKKyAgICAgICAg
ICAgIG1fZHJhZ0ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMp
OwogICAgICAgICBtX2RyYWdJbWFnZUxvYWRlci0+c3RhcnRMb2FkaW5nKG1fZHJhZ0ltYWdlKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5jcHAKaW5kZXggMzM2MjIzMTA4MWIxM2Y3MmRjMThkYWM1ZjM5MDdhNWU3YzE3YjBi
Zi4uZjIxMTMxZmY4Mjc4MjFkYzc0ZTg1MGE5OGYxYmIyMzA5OWUwMjcwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEw
MCw3ICsxMDAsNyBAQCBib29sIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVB
dChQYWdlKiBwYWdlKQogCiB2b2lkIHByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRvKFBhZ2UmIHBh
Z2UsIERldmljZU9yaWVudGF0aW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8oJnBhZ2UsIERldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6
cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCksIG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPihjbGllbnQpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
ZDE3ZmYyY2ZlYzE4NzhlNjdjNTgxMDc5MjgwYjQ5MWI4ODU5M2U1OS4uZWQ0ODQ4OTdmYWQxOTk3
NzhlODgzOTM5ZGQxMjNhZTJkNmM2YzIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01
MjEsMTkgKzUyMSwxOSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9xdWlya3Mo
bWFrZVVuaXF1ZVJlZjxRdWlya3M+KCp0aGlzKSkKICAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIobV9mcmFtZSA/IFJlZjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4obV9mcmFtZS0+bG9hZGVyKCku
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSkgOiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG51bGxwdHIpKQogICAgICwgbV9kb21UcmVlVmVyc2lvbigr
K3NfZ2xvYmFsVHJlZVZlcnNpb24pCi0gICAgLCBtX3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1
ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKLSAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVldHMoc3Rk
OjptYWtlX3VuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4oKnRoaXMpKQotICAgICwgbV92aXNp
dGVkTGlua1N0YXRlKHN0ZDo6bWFrZV91bmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQot
ICAgICwgbV9tYXJrZXJzKHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
PigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0
aGlzKSkKKyAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVldHMobWFrZVVuaXF1ZTxFeHRlbnNpb25T
dHlsZVNoZWV0cz4oKnRoaXMpKQorICAgICwgbV92aXNpdGVkTGlua1N0YXRlKG1ha2VVbmlxdWU8
VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQorICAgICwgbV9tYXJrZXJzKG1ha2VVbmlxdWU8RG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3N0eWxlUmVjYWxjVGltZXIo
W3RoaXNdIHsgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOyB9KQogICAgICwgbV9kb2N1bWVudENyZWF0
aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCi0gICAgLCBtX21vZHVsZUxvYWRlcihz
dGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQorICAgICwgbV9zY3Jp
cHRSdW5uZXIobWFrZVVuaXF1ZTxTY3JpcHRSdW5uZXI+KCp0aGlzKSkKKyAgICAsIG1fbW9kdWxl
TG9hZGVyKG1ha2VVbmlxdWU8U2NyaXB0TW9kdWxlTG9hZGVyPigqdGhpcykpCiAjaWYgRU5BQkxF
KFhTTFQpCiAgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lcigqdGhpcywgJkRv
Y3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXJGaXJlZCkKICNlbmRpZgogICAg
ICwgbV94bWxWZXJzaW9uKCIxLjAiX3MpCi0gICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFwPigqdGhpcykpCisgICAgLCBtX2NvbnN0
YW50UHJvcGVydHlNYXAobWFrZVVuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFwPigqdGhpcykpCiAg
ICAgLCBtX2RvY3VtZW50Q2xhc3Nlcyhkb2N1bWVudENsYXNzZXMpCiAgICAgLCBtX2V2ZW50UXVl
dWUoKnRoaXMpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtNTQ1LDEwICs1NDUsMTAg
QEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2ln
bmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICNlbmRpZgogICAgICwgbV9sb2FkRXZlbnREZWxh
eVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5VGltZXJGaXJlZCkKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgICwg
bV9kZXZpY2VNb3Rpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJ
T1M+KCkpCi0gICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxE
ZXZpY2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VNb3Rpb25DbGllbnQpKQotICAgICwgbV9k
ZXZpY2VPcmllbnRhdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9u
Q2xpZW50SU9TPigpKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU9yaWVudGF0
aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlTW90aW9uQ2xpZW50KG1ha2VVbmlxdWU8RGV2aWNl
TW90aW9uQ2xpZW50SU9TPigpKQorICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKG1ha2VV
bmlxdWU8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlTW90aW9uQ2xpZW50KSkKKyAg
ICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQobWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlv
bkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKG1ha2VV
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNs
aWVudCkpCiAjZW5kaWYKICAgICAsIG1fcGVuZGluZ1Rhc2tzVGltZXIoKnRoaXMsICZEb2N1bWVu
dDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCkKICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNz
aW9uVGltZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJG
aXJlZCkKQEAgLTc1Nyw3ICs3NTcsNyBAQCBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZvckFj
Y2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkKIAogdm9pZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NL
ZXlDYWNoZSgpCiB7Ci0gICAgbV9hY2Nlc3NLZXlDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8SGFz
aE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PihbdGhpc10g
eworICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVt
ZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsKICAgICAgICAgSGFzaE1h
cDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKICAgICAg
ICAgZm9yIChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVlRGVzY2VuZGFudHMoKnRoaXMpKSB7CiAg
ICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQpAQCAtNzgyLDcgKzc4Miw3IEBAIEV4
Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBEb2N1bWVudDo6c2VsZWN0b3JRdWVyeUZvclN0cmlu
Zyhjb25zdCBTdHJpbmcmIHNlbGVjCiAgICAgaWYgKHNlbGVjdG9yU3RyaW5nLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAgICAgaWYgKCFtX3Nl
bGVjdG9yUXVlcnlDYWNoZSkKLSAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsKKyAgICAgICAgbV9zZWxlY3RvclF1ZXJ5
Q2FjaGUgPSBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsKICAgICByZXR1cm4gbV9z
ZWxlY3RvclF1ZXJ5Q2FjaGUtPmFkZChzZWxlY3RvclN0cmluZywgKnRoaXMpOwogfQogCkBAIC04
NDcsNyArODQ3LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVzZXRBY3RpdmVMaW5rQ29sb3IoKQogRE9N
SW1wbGVtZW50YXRpb24mIERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigpCiB7CiAgICAgaWYgKCFt
X2ltcGxlbWVudGF0aW9uKQotICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOworICAgICAgICBtX2ltcGxlbWVudGF0aW9u
ID0gbWFrZVVuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9p
bXBsZW1lbnRhdGlvbjsKIH0KIApAQCAtMTc2Miw3ICsxNzYyLDcgQEAgTm9kZTo6Tm9kZVR5cGUg
RG9jdW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKIEZvcm1Db250cm9sbGVyJiBEb2N1bWVudDo6Zm9y
bUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9mb3JtQ29udHJvbGxlcikKLSAgICAgICAgbV9m
b3JtQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNvbnRyb2xsZXI+KCk7CisgICAg
ICAgIG1fZm9ybUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEZvcm1Db250cm9sbGVyPigpOwogICAg
IHJldHVybiAqbV9mb3JtQ29udHJvbGxlcjsKIH0KIApAQCAtMTk4Nyw3ICsxOTg3LDcgQEAgdm9p
ZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRleHQmIHRleHQsIHVuc2lnbmVkIG9mZnNl
dE9mUmVwbGFjZWRUZXh0LCB1bnMKICAgICBBU1NFUlQoIW1faW5SZW5kZXJUcmVlVXBkYXRlKTsK
ICAgICBTZXRGb3JTY29wZTxib29sPiBpblJlbmRlclRyZWVVcGRhdGUobV9pblJlbmRlclRyZWVV
cGRhdGUsIHRydWUpOwogCi0gICAgYXV0byB0ZXh0VXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxT
dHlsZTo6VXBkYXRlPigqdGhpcyk7CisgICAgYXV0byB0ZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxT
dHlsZTo6VXBkYXRlPigqdGhpcyk7CiAgICAgdGV4dFVwZGF0ZS0+YWRkVGV4dCh0ZXh0LCB7IG9m
ZnNldE9mUmVwbGFjZWRUZXh0LCBsZW5ndGhPZlJlcGxhY2VkVGV4dCwgV1RGOjpudWxsb3B0IH0p
OwogCiAgICAgUmVuZGVyVHJlZVVwZGF0ZXIgcmVuZGVyVHJlZVVwZGF0ZXIoKnRoaXMpOwpAQCAt
MjI2OSw3ICsyMjY5LDcgQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhl
bHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKIFN0eWxlUmVzb2x2ZXIm
IERvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpCiB7CiAgICAgaWYg
KCFtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKQotICAgICAgICBtX3VzZXJBZ2Vu
dFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVJlc29sdmVy
PigqdGhpcyk7CisgICAgICAgIG1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBt
YWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fdXNlckFnZW50
U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7CiB9CiAKQEAgLTI2NzIsNyArMjY3Miw3IEBAIEFYT2Jq
ZWN0Q2FjaGUqIERvY3VtZW50OjpheE9iamVjdENhY2hlKCkgY29uc3QKIAogICAgIEFTU0VSVCgm
dG9wRG9jdW1lbnQgPT0gdGhpcyB8fCAhbV9heE9iamVjdENhY2hlKTsKICAgICBpZiAoIXRvcERv
Y3VtZW50Lm1fYXhPYmplY3RDYWNoZSkgewotICAgICAgICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0
Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFYT2JqZWN0Q2FjaGU+KHRvcERvY3VtZW50KTsKKyAg
ICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlID0gbWFrZVVuaXF1ZTxBWE9iamVjdENh
Y2hlPih0b3BEb2N1bWVudCk7CiAgICAgICAgIGhhc0V2ZXJDcmVhdGVkQW5BWE9iamVjdENhY2hl
ID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZS5n
ZXQoKTsKQEAgLTMwMzYsNyArMzAzNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFBhcnNpbmcoYm9v
bCBiKQogICAgIG1fYlBhcnNpbmcgPSBiOwogCiAgICAgaWYgKG1fYlBhcnNpbmcgJiYgIW1fc2hh
cmVkT2JqZWN0UG9vbCkKLSAgICAgICAgbV9zaGFyZWRPYmplY3RQb29sID0gc3RkOjptYWtlX3Vu
aXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7CisgICAgICAgIG1fc2hhcmVkT2JqZWN0
UG9vbCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sPigpOwogCiAgICAgaWYg
KCFtX2JQYXJzaW5nICYmIHZpZXcoKSAmJiAhdmlldygpLT5uZWVkc0xheW91dCgpKQogICAgICAg
ICB2aWV3KCktPmZpcmVMYXlvdXRSZWxhdGVkTWlsZXN0b25lc0lmTmVlZGVkKCk7CkBAIC01NTY2
LDcgKzU1NjYsNyBAQCBjb25zdCBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIERvY3VtZW50OjpzdmdF
eHRlbnNpb25zKCkKIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyYgRG9jdW1lbnQ6OmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKQogewogICAgIGlmICghbV9zdmdFeHRlbnNpb25zKQotICAgICAgICBtX3N2Z0V4
dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMp
OworICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5z
aW9ucz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zdmdFeHRlbnNpb25zOwogfQogCkBAIC01Nzcx
LDcgKzU3NzEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAg
ICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURv
Y3VtZW50KCkuCiAgICAgICAgIHNldENvb2tpZVVSTChVUkwoeyB9LCBlbXB0eVN0cmluZygpKSk7
CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5Ojpj
cmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKSk7Ci0gICAgICAgIHNldENvbnRl
bnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4o
VVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlzKSk7CisgICAgICAgIHNldENvbnRlbnRT
ZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9
LCBlbXB0eVN0cmluZygpIH0sICp0aGlzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTU3OTAsNyArNTc5MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQog
ICAgICAgICBpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID0gZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1l
bnRMb2FkZXItPnJlc3BvbnNlKCkudGFpbnRpbmcoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWlu
dGluZzo6T3BhcXVlOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmln
aW5Qb2xpY3k6OmNyZWF0ZShpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID8gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCkpKTsKLSAgICBz
ZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQ
b2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9s
aWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhp
cykpOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gbV9mcmFt
ZS0+bG9hZGVyKCkuY2xpZW50KCkub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKICAg
ICBpZiAoIW92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5LmlzTnVsbCgpKQpAQCAtNjAyOCw3
ICs2MDI4LDcgQEAgU3RyaW5nIERvY3VtZW50OjpuYW1lRm9yQ1NTQ2FudmFzRWxlbWVudChjb25z
dCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCkKIFRleHRBdXRvU2l6aW5nJiBEb2N1
bWVudDo6dGV4dEF1dG9TaXppbmcoKQogewogICAgIGlmICghbV90ZXh0QXV0b1NpemluZykKLSAg
ICAgICAgbV90ZXh0QXV0b1NpemluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEF1dG9TaXppbmc+
KCk7CisgICAgICAgIG1fdGV4dEF1dG9TaXppbmcgPSBtYWtlVW5pcXVlPFRleHRBdXRvU2l6aW5n
PigpOwogICAgIHJldHVybiAqbV90ZXh0QXV0b1NpemluZzsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
VEVYVF9BVVRPU0laSU5HKQpAQCAtNjM5NSw3ICs2Mzk1LDcgQEAgdm9pZCBEb2N1bWVudDo6d2hl
ZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCgpCiB2b2lkIERvY3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50
SGFuZGxlcihOb2RlJiBub2RlKQogewogICAgIGlmICghbV93aGVlbEV2ZW50VGFyZ2V0cykKLSAg
ICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRT
ZXQ+KCk7CisgICAgICAgIG1fd2hlZWxFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFy
Z2V0U2V0PigpOwogCiAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cy0+YWRkKCZub2RlKTsKIApAQCAt
NjQ1NSw3ICs2NDU1LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIo
Tm9kZSYgaGFuZGxlcikKIHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmICghbV90
b3VjaEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAgIG1fdG91Y2hFdmVudFRhcmdldHMg
PSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAgICAgbV90b3VjaEV2ZW50VGFyZ2V0
cy0+YWRkKCZoYW5kbGVyKTsKIApAQCAtODA0Myw3ICs4MDQzLDcgQEAgdm9pZCBEb2N1bWVudDo6
ZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBXVEZMb2dMZXZlbCBs
ZXZlbCwgVmUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIG1lc3NhZ2VMZXZl
bCA9IG1lc3NhZ2VMZXZlbEZyb21XVEZMb2dMZXZlbChsZXZlbCk7Ci0gICAgICAgIGF1dG8gbWVz
c2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3Nh
Z2VzKSwgbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKCkpKTsKKyAgICAgICAgYXV0byBtZXNzYWdl
ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobG9nTWVzc2FnZXMpLCBtYWlu
V29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOwogCiAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKFdU
Rk1vdmUobWVzc2FnZSkpOwogICAgIH0pOwpAQCAtODA3OCw3ICs4MDc4LDcgQEAgU3RyaW5nIERv
Y3VtZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6
ZUluZGV4LCBjb25zdAogCiBib29sIERvY3VtZW50OjpyZWdpc3RlckNTU1Byb3BlcnR5KENTU1Jl
Z2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSYmIHByb3ApCiB7Ci0gICAgcmV0dXJuIG1fQ1NTUmVnaXN0
ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8Q1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3ApKSkuaXNOZXdFbnRyeTsKKyAgICByZXR1
cm4gbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRkKHByb3AubmFtZSwgbWFrZVVuaXF1ZTxD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1vdmUocHJvcCkpKS5pc05ld0VudHJ5Owog
fQogCiB2b2lkIERvY3VtZW50OjpkZXRhY2hGcm9tRnJhbWUoKQpAQCAtODE3Miw3ICs4MTcyLDcg
QEAgRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyJiBEb2N1bWVudDo6
ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb24KICAgICAgICAgcmV0dXJuIHRvcERvY3VtZW50KCku
ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCk7CiAKICAgICBpZiAo
IW1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKQotICAgICAgICBt
X2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7
CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyID0g
bWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0
aGlzKTsKICAgICByZXR1cm4gKm1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250
cm9sbGVyOwogfQogCkBAIC04MjAzLDcgKzgyMDMsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWY8UGFpbnRX
bwogQ29udGVudENoYW5nZU9ic2VydmVyJiBEb2N1bWVudDo6Y29udGVudENoYW5nZU9ic2VydmVy
KCkKIHsKICAgICBpZiAoIW1fY29udGVudENoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2NvbnRl
bnRDaGFuZ2VPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudENoYW5nZU9ic2VydmVy
PigqdGhpcyk7CisgICAgICAgIG1fY29udGVudENoYW5nZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxD
b250ZW50Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udGVudENoYW5n
ZU9ic2VydmVyOyAKIH0KIApAQCAtODIxMSw3ICs4MjExLDcgQEAgRE9NVGltZXJIb2xkaW5nVGFu
ayYgRG9jdW1lbnQ6OmRvbVRpbWVySG9sZGluZ1RhbmsoKQogewogICAgIGlmIChtX2RvbVRpbWVy
SG9sZGluZ1RhbmspCiAgICAgICAgIHJldHVybiAqbV9kb21UaW1lckhvbGRpbmdUYW5rOwotICAg
IG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVGltZXJIb2xkaW5n
VGFuaz4oKTsKKyAgICBtX2RvbVRpbWVySG9sZGluZ1RhbmsgPSBtYWtlVW5pcXVlPERPTVRpbWVy
SG9sZGluZ1Rhbms+KCk7CiAgICAgcmV0dXJuICptX2RvbVRpbWVySG9sZGluZ1Rhbms7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZjk3ZGJlNzUxYmQ1MDQzNjI3M2MwNzhmNzBlZWExNWI2
NWM3NjJhOS4uYTVlMzIwMzkyNTk0OTU1NTNjNTkzNmM1YjgwNzFlNDBlMGY4ZTYyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTEyODQsNyArMTI4NCw3IEBAIGNsYXNzIERvY3VtZW50CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZ
aWVsZFRva2VuKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERvY3Vt
ZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxE
b2N1bWVudFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKICAgICB9CiAKICAgICBib29sIGhhc0Fj
dGl2ZVBhcnNlcllpZWxkVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlcllpZWxkVG9rZW5D
b3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAppbmRleCAw
MWM3Zjk2ZTAyZTllYmQ1ODg1M2ZiNWRiMWM0Yjg4MjFlMmY5NzI4Li4wMzcwM2I2MmJjNjUwNTU3
OGIzODliOTk5MzhhNGRhYWI2ZDc2YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRF
dmVudFF1ZXVlLmNwcApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBEb2N1bWVudEV2ZW50UXVldWU6
OlRpbWVyIGZpbmFsIDogcHVibGljIFN1c3BlbmRhYmxlVGltZXIgewogCiBEb2N1bWVudEV2ZW50
UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2Rv
Y3VtZW50KGRvY3VtZW50KQotICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcihzdGQ6Om1ha2VfdW5p
cXVlPFRpbWVyPigqdGhpcykpCisgICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKG1ha2VVbmlxdWU8
VGltZXI+KCp0aGlzKSkKICAgICAsIG1faXNDbG9zZWQoZmFsc2UpCiB7CiAgICAgbV9wZW5kaW5n
RXZlbnRUaW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDcyOTFkNGFkZWU5ZjQxNzdmZGJmZWZl
ZWZkZGYyNjcwNTRhOWM0ZjAuLmU3NjQxYWY2MjE4YmYxM2FiMGUzYzY4OTIwMjBkZTg4OWM0ZTkw
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFk
ZE1hcmtlcihOb2RlJiBub2RlLCBjb25zdCBEb2N1bWVudE1hcmtlciYgbmV3TWEKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TWFya2VyTGlzdD4mIGxpc3QgPSBtX21hcmtlcnMuYWRkKCZub2RlLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBpZiAoIWxpc3QpIHsKLSAgICAgICAgbGlzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyTGlzdD4oKTsKKyAgICAgICAgbGlzdCA9IG1ha2VVbmlx
dWU8TWFya2VyTGlzdD4oKTsKICAgICAgICAgbGlzdC0+YXBwZW5kKFJlbmRlcmVkRG9jdW1lbnRN
YXJrZXIobmV3TWFya2VyKSk7CiAgICAgfSBlbHNlIGlmIChzaG91bGRJbnNlcnRBc1NlcGFyYXRl
TWFya2VyKG5ld01hcmtlcikpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbWVyZ2UgZGljdGF0aW9u
IG1hcmtlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdl
QWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
CmluZGV4IDgxZWZiMTBkNWU3NmVkYjZmNmQzODM1MzAwNTFkMjljMzg4ZWFmZGIuLjg1NWEyYTA2
NTZmNzFiNDVlZThkNGZmZjI4NGE1MzUzNzlhMzg3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCkBAIC00OCw3ICs0OCw3IEBAIERvY3VtZW50U3Rv
cmFnZUFjY2VzcyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdl
QWNjZXNzKj4oU3VwcGxlbWVudDxEb2N1bWVudD46OmZyb20oJmRvY3VtZW50LCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7
CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTdG9yYWdl
QWNjZXNzPihkb2N1bWVudCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50Lmdl
dCgpOwogICAgICAgICBwcm92aWRlVG8oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZN
b3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBEb2N1
bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKICAgICAgICAgYm9vbCBzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0g
d2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzIHx8IHByb21wdFdhc1No
b3duID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87CiAKICAgICAgICAgaWYgKHNo
b3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjpt
YWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihb
ZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CisgICAgICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8
Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50
KV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVm
ZXJlbmNlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9y
YXJ5VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAgICB9KSk7CkBAIC0xOTksNyArMTk5LDcg
QEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaG91
bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFp
blRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2Rv
Y3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5jZSldICgpIHsKKyAgICAg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1
ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVm
ZXJlbmNlKV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3Vt
ZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+Y29uc3Vt
ZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgfSkpOwpAQCAtMjA5LDcg
KzIwOSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdl
QWNjZXNzOjplbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKQogewotICAgIG1fdGVtcG9y
YXJ5VXNlckdlc3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50KTsKKyAgICBtX3RlbXBvcmFyeVVzZXJH
ZXN0dXJlID0gbWFrZVVuaXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlLCAmbV9kb2N1bWVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpj
b25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRl
eCA3MTIwMDhmMjFiMjMxYzRkZTIxYzQxM2I1ZDEwODVkOTNmMjVkYWYzLi5iMGQ4YWQ1ZDE2NDA5
YTdiZTU2YmMzYzEwYjY5ZDMyYmE3NTBkYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00
NzcsNyArNDc3LDcgQEAgTmFtZWROb2RlTWFwJiBFbGVtZW50OjphdHRyaWJ1dGVzKCkgY29uc3QK
ICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSByYXJlRGF0YS5hdHRyaWJ1dGVN
YXAoKSkKICAgICAgICAgcmV0dXJuICphdHRyaWJ1dGVNYXA7CiAKLSAgICByYXJlRGF0YS5zZXRB
dHRyaWJ1dGVNYXAoc3RkOjptYWtlX3VuaXF1ZTxOYW1lZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxl
bWVudCY+KCp0aGlzKSkpOworICAgIHJhcmVEYXRhLnNldEF0dHJpYnV0ZU1hcChtYWtlVW5pcXVl
PE5hbWVkTm9kZU1hcD4oY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpKSk7CiAgICAgcmV0dXJu
ICpyYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKTsKIH0KIApAQCAtMjMwNyw3ICsyMzA3LDcgQEAgdm9p
ZCBFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZSYgZWxlbWVudEludGVyZmEKICAgICBzZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7CiAgICAg
YXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5jdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKQotICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+
KGVsZW1lbnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rp
b25RdWV1ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50
ZXJmYWNlKSk7CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKCp0aGlzKTsKIH0K
QEAgLTIzNDQsNyArMjM0NCw3IEBAIHZvaWQgRWxlbWVudDo6ZW5xdWV1ZVRvVXBncmFkZShKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZhY2UpCiAgICAgYXV0byYgZGF0YSA9
IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGJvb2wgYWxyZWFkeVNjaGVkdWxlZFRvVXBn
cmFkZSA9IGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKTsKICAgICBpZiAoIWFscmVh
ZHlTY2hlZHVsZWRUb1VwZ3JhZGUpCi0gICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxl
bWVudEludGVyZmFjZSkpOworICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZh
Y2UpKTsKICAgICBkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCktPmVucXVldWVFbGVt
ZW50VXBncmFkZSgqdGhpcywgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSk7CiB9CiAKQEAgLTM0
ODAsNyArMzQ4MCw3IEBAIERPTVRva2VuTGlzdCYgRWxlbWVudDo6Y2xhc3NMaXN0KCkKIHsKICAg
ICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBp
ZiAoIWRhdGEuY2xhc3NMaXN0KCkpCi0gICAgICAgIGRhdGEuc2V0Q2xhc3NMaXN0KHN0ZDo6bWFr
ZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsKKyAg
ICAgICAgZGF0YS5zZXRDbGFzc0xpc3QobWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBI
VE1MTmFtZXM6OmNsYXNzQXR0cikpOwogICAgIHJldHVybiAqZGF0YS5jbGFzc0xpc3QoKTsKIH0K
IApAQCAtMzQ4OCw3ICszNDg4LDcgQEAgRGF0YXNldERPTVN0cmluZ01hcCYgRWxlbWVudDo6ZGF0
YXNldCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVE
YXRhKCk7CiAgICAgaWYgKCFkYXRhLmRhdGFzZXQoKSkKLSAgICAgICAgZGF0YS5zZXREYXRhc2V0
KHN0ZDo6bWFrZV91bmlxdWU8RGF0YXNldERPTVN0cmluZ01hcD4oKnRoaXMpKTsKKyAgICAgICAg
ZGF0YS5zZXREYXRhc2V0KG1ha2VVbmlxdWU8RGF0YXNldERPTVN0cmluZ01hcD4oKnRoaXMpKTsK
ICAgICByZXR1cm4gKmRhdGEuZGF0YXNldCgpOwogfQogCkBAIC0zNjMyLDcgKzM2MzIsNyBAQCBJ
bnRlcnNlY3Rpb25PYnNlcnZlckRhdGEmIEVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2Vy
dmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KTsKICAgICBpZiAoIXJhcmVEYXRhLmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpKQotICAgICAg
ICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxJ
bnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOworICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNl
Y3Rpb25PYnNlcnZlckRhdGEobWFrZVVuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkp
OwogICAgIHJldHVybiAqcmFyZURhdGEuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCk7CiB9CiAK
QEAgLTM2NTgsNyArMzY1OCw3IEBAIFJlc2l6ZU9ic2VydmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJl
UmVzaXplT2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1l
bnRSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEucmVzaXplT2JzZXJ2ZXJEYXRhKCkpCi0g
ICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFJl
c2l6ZU9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVy
RGF0YShtYWtlVW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0YT4oKSk7CiAgICAgcmV0dXJuICpyYXJl
RGF0YS5yZXNpemVPYnNlcnZlckRhdGEoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXJNYXAuY3BwCmluZGV4IGQ5ZTY2MzQ5Y2JkYmEwYmI4MWQyYWNmYmZkYzBkNDMzNzhjNjU4
ZGIuLjBiMDlkMDgyYzM2ZWRkZDg0YjljZGU5ODgyNTI3MmRiNWY5NmU1YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEV2
ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVu
dExpc3RlbmVyPiYmIGxpcwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBhdXRv
IGxpc3RlbmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKTsKKyAg
ICBhdXRvIGxpc3RlbmVycyA9IG1ha2VVbmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKTsKICAg
ICBsaXN0ZW5lcnMtPnVuY2hlY2tlZEFwcGVuZChSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKSk7CiAgICAgbV9lbnRyaWVzLmFwcGVuZCh7
IGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lcnMpIH0pOwogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKaW5kZXggOWU5MzA4YmI1ZGExNDYxZTM1OGUzY2M2MmZlYWZkY2Zj
ZDBjYzdhZC4uNWI2YWI2ODc1NWI2MWJmZTJkNGE2OGJjYmU3NTI0ZmQwZGRhYmI5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCkBAIC0zMzksMTMgKzMzOSwxMyBAQCBzdHJ1Y3QgRXZlbnROYW1l
cyB7CiAgICAgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKERPTV9FVkVOVF9OQU1FU19ERUNMQVJF
KQogI3VuZGVmIERPTV9FVkVOVF9OQU1FU19ERUNMQVJFCiAKLSAgICAvLyBGSVhNRTogVGhlIGZy
aWVuZCBkZWNsYXJhdGlvbiB0byBzdGQ6Om1ha2VfdW5pcXVlIGJlbG93IGRvZXMgbm90IHdvcmsg
aW4gd2luZG93cyBwb3J0LgorICAgIC8vIEZJWE1FOiBUaGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRv
IG1ha2VVbmlxdWUgYmVsb3cgZG9lcyBub3Qgd29yayBpbiB3aW5kb3dzIHBvcnQuCiAgICAgLy8K
ICAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgotICAgIC8vIGZyaWVuZCB0
eXBlbmFtZSBzdGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5nbGVfb2JqZWN0IHN0ZDo6bWFrZV91bmlx
dWUoQXJncyYmLi4uKTsKKyAgICAvLyBmcmllbmQgdHlwZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+
OjpfU2luZ2xlX29iamVjdCBtYWtlVW5pcXVlKEFyZ3MmJi4uLik7CiAgICAgLy8KICAgICAvLyBU
aGlzIGNyZWF0ZSBmdW5jdGlvbiBzaG91bGQgYmUgZGVsZXRlZCBsYXRlciBhbmQgaXMgb25seSBm
b3Iga2VlcGluZyBFdmVudE5hbWVzIGFzIHByaXZhdGUuCi0gICAgLy8gc3RkOjptYWtlX3VuaXF1
ZSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorICAgIC8vIG1ha2VVbmlxdWUgc2hvdWxkIGJlIHVz
ZWQgaW5zdGVhZC4KICAgICAvLwogICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVzPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFBhdGguY3BwCmluZGV4IGRiMTQyOGQxZDQyNjA1OGNiNjViMWViNmZhY2Ey
M2RiOTg5MjgyYmQuLmEwYWQwYWQ3YzQ4MjY5MmU2MzhlNTcyODBmMWEyOTI0N2FjZWMxNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCkBAIC0xMTUsMTcgKzExNSwxNyBAQCB2b2lkIEV2ZW50
UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2V0LCBFdmVudCYgZXZlbnQpCiB7CiAg
ICAgdXNpbmcgTWFrZUV2ZW50Q29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+
ICgqKShOb2RlJiwgRXZlbnRUYXJnZXQqLCBFdmVudFRhcmdldCosIGludCBjbG9zZWRTaGFkb3dE
ZXB0aCk7CiAgICAgTWFrZUV2ZW50Q29udGV4dCBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUm
IG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBp
bnQgY2xvc2VkU2hhZG93RGVwdGgpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dE
ZXB0aCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1
cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgIH07CiAgICAgaWYg
KGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKSkgewogICAgICAg
ICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50
VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0
ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwg
dGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwg
Y2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9OwogICAgIH0KICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogICAgIGlmIChpczxUb3VjaEV2ZW50PihldmVudCkpIHsKICAgICAgICAgbWFrZUV2
ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwg
RXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1
ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRT
aGFkb3dEZXB0aCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUb3VjaEV2ZW50Q29u
dGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAg
ICAgICAgIH07CiAgICAgfQogI2VuZGlmCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBFdmVudFBh
dGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRh
cmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvd25j
YXN0PERvY3VtZW50Pigqbm9kZSkuZG9tV2luZG93KCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4o
Km5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPFdpbmRvd0V2ZW50Q29u
dGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIHRhcmdldHMpCiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBO
b2RlKiBvcmlnaW4gPSAqdGFyZ2V0cy5iZWdpbigpOwogICAgICAgICBpZiAoIXRhcmdldC0+aXND
bG9zZWRTaGFkb3dIaWRkZW4oKm9yaWdpbikpCi0gICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7
CisgICAgICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0Pih0YXJn
ZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CiAgICAgfQogfQogCkBAIC0zMTcsNyArMzE3LDcgQEAg
RXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4mIHRhcmdldHMp
CiAgICAgZm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRzKSB7CiAgICAgICAgIEFTU0VSVCh0YXJn
ZXQpOwogICAgICAgICBBU1NFUlQoIWlzPE5vZGU+KHRhcmdldCkpOwotICAgICAgICBtX3BhdGgu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0PihudWxscHRyLCB0YXJnZXQsICp0
YXJnZXRzLmJlZ2luKCksIDApKTsKKyAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2
ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5iZWdpbigpLCAwKSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IGVkZDljYTI4
ZWE0OTNhYzdjOTRjOGJkZTI4NWIxNjY2YzM4ODI1NTkuLmE3MGJjYWVjY2M4Nzk1YTRmNGJhNDI2
ZTI1MTNkZmY3YTBmNzRiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2Ny
ZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5o
CkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFJlbmRlclRyZWVCdWlsZGVyOwogY2xhc3MgUmVuZGVy
U3R5bGU7CiAKIGNsYXNzIEZ1bGxzY3JlZW5NYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVuTWFuYWdlcihEb2N1bWVudCYpOwogICAg
IH5GdWxsc2NyZWVuTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmNwcAppbmRleCBiM2EwNmU0N2IwNzAwZjdjNDdkM2Q5YWVmMzNmNDQz
NzI0ZTBjNTVlLi45NDBlZmNhZWQ4MzA5MWMyNTgzZmE5ZTMzNmVmM2Q3OGM1NGFhM2RjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAt
MzcsNyArMzcsNyBAQCB2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIo
Y29uc3QgQXRvbVN0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZQogICAgIAogICAgIElkVG9PYnNl
cnZlclNldE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcmVnaXN0cnkuYWRkKGlkLmltcGwoKSwg
bnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPYnNlcnZlclNldD4oKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8T2JzZXJ2ZXJTZXQ+KCk7CiAKICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQob2JzZXJ2ZXIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDdlN2EzNDc5N2I4NjI5ZjYyZjdmNzg2YWIxNGM1YzZm
NWJkOTBiMTQuLmNlODU2YmI1NWQ1YmQ5OWU2NmY1MGNiNTViMGJlNDc5MGUwOTg0NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIEtl
eWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoKSA9IGRlZmF1bHQ7CiBpbmxpbmUgS2V5Ym9hcmRF
dmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgUmVm
UHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCiAgICAgOiBVSUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50
VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKGtleS50eXBlKCkpLCBDYW5CdWJibGU6OlllcywgSXND
YW5jZWxhYmxlOjpZZXMsIElzQ29tcG9zZWQ6OlllcywKICAgICAgICAga2V5LnRpbWVzdGFtcCgp
LmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5Lm1vZGlm
aWVycygpLCBJc1RydXN0ZWQ6OlllcykKLSAgICAsIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQo
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUtleWJvYXJkRXZlbnQ+KGtleSkpCisgICAgLCBtX3Vu
ZGVybHlpbmdQbGF0Zm9ybUV2ZW50KG1ha2VVbmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50Pihr
ZXkpKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRUUklCVVRFKQogICAgICwgbV9rZXkoa2V5
LmtleSgpKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNr
cy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaAppbmRleCBiNjMxODQxNTBmNWEz
OTE0MjUyYjg0MmVkOWQwN2RlYWFmNmI0MDM2Li5iYTcyMmExMWM3MGZjYTgwODMyZTY0Yzg1Mjdl
ZTQ2YjljMzQ3Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKQEAgLTY5LDcgKzY5LDggQEAg
Y2xhc3MgVm9pZE1pY3JvdGFzayBmaW5hbCA6IHB1YmxpYyBNaWNyb3Rhc2sgewogICAgIEZ1bmN0
aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKIH07CiAKLWNsYXNzIE1pY3JvdGFza1F1ZXVlIHsKK2Ns
YXNzIE1pY3JvdGFza1F1ZXVlIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8TWljcm90YXNrUXVldWU+OwogICAgIGZyaWVuZCBj
bGFzcyBNaWNyb3Rhc2s7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ci5jcHAKaW5kZXggNjZjNWVhMGI5ZDYzNDU0NDM4MTJmYjEzMWZmZTVkYmU2Y2ExZGRmMy4uMTkz
ZjI3ODA1YTVhZWQ0YjYwNmU5Y2VlYTNhOWEzNWQ4YjFlOTkzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHN0YXRpYyB2b2lkIHF1
ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKCkKICAgICBpZiAobXV0YXRpb25P
YnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVkRmxhZykKICAgICAgICAgcmV0dXJuOwogICAg
IG11dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFza1F1ZXVlZEZsYWcgPSB0cnVlOwotICAg
IE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90YXNrPigpKTsKKyAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFp
blRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlck1pY3JvdGFz
az4oKSk7CiB9CiAKIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3Jk
KFJlZjxNdXRhdGlvblJlY29yZD4mJiBtdXRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCmluZGV4IDUyZGE2MWY3NGYx
ZjU3YWY2ODU0OWYzNjY1NjMwNmQ4ZDE3MDNjNzkuLjAyNzZlNDJiZTViZDgzZmY0MmE3OTM1NmJk
ZTljZTczNjA5OWNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwOjpjcgogICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2VydmVycyksIG9sZFZhbHVlRmxhZyk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUob2Jz
ZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKIH0KIAogYm9vbCBNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cDo6aXNPbGRWYWx1ZVJlcXVlc3RlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggYzhmYzAxMDY3
MjQ1ZTRlMzYxOTdhMmY2ZDRkMWU0NTc1NDdiYmM4YS4uZTVjNmRkMTZhNGRiNjA5YmE1MjczYTQ3
YWY3ZmE2ODI2NjJhMmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKE5vZGUm
IG5vZGUpCiAgICAgbV9vYnNlcnZlci0+c2V0SGFzVHJhbnNpZW50UmVnaXN0cmF0aW9uKCk7CiAK
ICAgICBpZiAoIW1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpIHsKLSAgICAgICAgbV90cmFu
c2llbnRSZWdpc3RyYXRpb25Ob2RlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxHQ1JlYWNo
YWJsZVJlZjxOb2RlPj4+KCk7CisgICAgICAgIG1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMg
PSBtYWtlVW5pcXVlPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8Tm9kZT4+PigpOwogCiAgICAgICAg
IEFTU0VSVCghbV9ub2RlS2VwdEFsaXZlKTsKICAgICAgICAgbV9ub2RlS2VwdEFsaXZlID0gJm1f
bm9kZTsgLy8gQmFsYW5jZWQgaW4gdGFrZVRyYW5zaWVudFJlZ2lzdHJhdGlvbnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKaW5kZXggNzZkNGVhOWQ3MzBhOTIzNzJhOWY4ZTdhNmQ4ZjY3ZDAwZmQzZGJmNS4uY2Fi
ZjFlYjU4YzljMjNjYWQ4ODViZDAxZGYxMjJiNjUxYWUwMmJkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApA
QCAtMzk4LDkgKzM5OCw5IEBAIHZvaWQgTm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgpCiB7CiAg
ICAgTm9kZVJhcmVEYXRhKiBkYXRhOwogICAgIGlmIChpczxFbGVtZW50PigqdGhpcykpCi0gICAg
ICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4oZG93bmNhc3Q8UmVu
ZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEg
PSBtYWtlVW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9k
YXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7CiAgICAgZWxzZQotICAgICAgICBkYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxlYXNlKCk7
CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVuZGVy
ZXIpLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoZGF0YSk7CiAKICAgICBtX2RhdGEubV9yYXJlRGF0
YSA9IGRhdGE7CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBFdmVudFRhcmdldERhdGEmIE5vZGU6OmVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfZXZl
bnRUYXJnZXREYXRhTWFwTG9jayk7CiAgICAgc2V0SGFzRXZlbnRUYXJnZXREYXRhKHRydWUpOwot
ICAgIHJldHVybiAqZXZlbnRUYXJnZXREYXRhTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlx
dWU8RXZlbnRUYXJnZXREYXRhPigpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpldmVu
dFRhcmdldERhdGFNYXAoKS5hZGQodGhpcywgbWFrZVVuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkp
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBOb2RlOjpjbGVhckV2ZW50VGFyZ2V0RGF0YSgp
CkBAIC0yMjg3LDcgKzIyODcsNyBAQCB2b2lkIE5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZl
cihNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgTXV0YXRpb25PYnNlcnZlcgogICAgIH0KIAog
ICAgIGlmICghcmVnaXN0cmF0aW9uKSB7Ci0gICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywg
b3B0aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7CisgICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChtYWtl
VW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywgb3B0
aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7CiAgICAgICAgIHJlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJ5
Lmxhc3QoKS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA3
NjkwZDU5OWZjYTdkYzk5Y2I0OWUxNjBmYmUyYWZhZGRmMDBjZGY0Li43NjZkNjdmM2Y2ZDYyOWFm
MDg5NDJhZGMyM2UyYzIyYzI5ZjNlNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBA
IC0yODEsNyArMjgxLDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIDogcHVibGljIE5vZGVSYXJlRGF0
YUJhc2UgewogICAgIE5vZGVMaXN0c05vZGVEYXRhJiBlbnN1cmVOb2RlTGlzdHMoKQogICAgIHsK
ICAgICAgICAgaWYgKCFtX25vZGVMaXN0cykKLSAgICAgICAgICAgIG1fbm9kZUxpc3RzID0gc3Rk
OjptYWtlX3VuaXF1ZTxOb2RlTGlzdHNOb2RlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fbm9kZUxp
c3RzID0gbWFrZVVuaXF1ZTxOb2RlTGlzdHNOb2RlRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICpt
X25vZGVMaXN0czsKICAgICB9CiAKQEAgLTI4OSw3ICsyODksNyBAQCBjbGFzcyBOb2RlUmFyZURh
dGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgTm9kZU11dGF0aW9uT2JzZXJ2ZXJE
YXRhJiBlbnN1cmVNdXRhdGlvbk9ic2VydmVyRGF0YSgpCiAgICAgewogICAgICAgICBpZiAoIW1f
bXV0YXRpb25PYnNlcnZlckRhdGEpCi0gICAgICAgICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CisgICAgICAg
ICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gbWFrZVVuaXF1ZTxOb2RlTXV0YXRpb25PYnNl
cnZlckRhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9tdXRhdGlvbk9ic2VydmVyRGF0YTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCmluZGV4IDUzMzdj
NThjZGZiYmFhYjIzMDE4NDUwMjYzOGRjNjM0NDlmNzk2YWMuLjYxYmJjNGVkZmY5MzRhNjQ0NmVh
MjU2NzU1NjYzZmQ1NDY4NzdlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRp
b0J1dHRvbkdyb3Vwcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3Jv
dXBzLmNwcApAQCAtMTk4LDExICsxOTgsMTEgQEAgdm9pZCBSYWRpb0J1dHRvbkdyb3Vwczo6YWRk
QnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbV9uYW1lVG9Hcm91cE1hcCkKLSAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IHN0ZDo6
bWFrZV91bmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CisgICAgICAgIG1fbmFtZVRvR3JvdXBNYXAg
PSBtYWtlVW5pcXVlPE5hbWVUb0dyb3VwTWFwPigpOwogCiAgICAgYXV0byYgZ3JvdXAgPSBtX25h
bWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC5uYW1lKCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgaWYgKCFncm91cCkKLSAgICAgICAgZ3JvdXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CisgICAgICAgIGdyb3VwID0gbWFrZVVuaXF1ZTxSYWRp
b0J1dHRvbkdyb3VwPigpOwogICAgIGdyb3VwLT5hZGQoZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBjODI1YTdlZGVl
NmJiMmQ1ZjUxNmM2ZDNlNmVhNzQxMGU2ZWNjNzU2Li4wNGFmZTlkNzhhZDBiZDEwMjhhNjcwM2Mw
ZmMzZDRmNjUzYjEzZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCkBAIC0zNzksOCArMzc5LDggQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW4K
IHsKICAgICBpZiAobV9pbkRpc3BhdGNoRXJyb3JFdmVudCkgewogICAgICAgICBpZiAoIW1fcGVu
ZGluZ0V4Y2VwdGlvbnMpCi0gICAgICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsK
LSAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucy0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNv
dXJjZVVSTCwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgICAgICAgICBtX3BlbmRpbmdFeGNl
cHRpb25zID0gbWFrZVVuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFeGNlcHRp
b24+Pj4oKTsKKyAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucy0+YXBwZW5kKG1ha2VVbmlxdWU8
UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHNvdXJjZVVSTCwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQxNCw5ICs0MTQsOSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9y
dFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YQogICAgIFN0cmlu
ZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246
ICIsIHJlc3VsdE1lc3NhZ2UpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3Nh
Z2UsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0YWNr
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7CisgICAg
ICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UpOwogICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQog
CkBAIC01MDksNyArNTA5LDcgQEAgUmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3cKICAgICAvLyBXaGVu
IGluaXRpYWxpemluZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCB2bSgpIGlzIG5vdCByZWFkeS4K
IAogICAgIEFTU0VSVCghbV9yZWplY3RlZFByb21pc2VUcmFja2VyKTsKLSAgICBtX3JlamVjdGVk
UHJvbWlzZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlamVjdGVkUHJvbWlzZVRyYWNrZXI+
KCp0aGlzLCB2bSgpKTsKKyAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIgPSBtYWtlVW5pcXVl
PFJlamVjdGVkUHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsKICAgICByZXR1cm4gKm1fcmVq
ZWN0ZWRQcm9taXNlVHJhY2tlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVl
cnkuY3BwCmluZGV4IDU1ZGMyYzg3YTRhYzIwMmQ3MWFkZGE2NmQ1OTZiNWZlYTBiYzg4NTYuLjIx
MDljZTRhMjI4YzNlN2JhODdhNGJhNTJiMmRiMjgyMzYwODcxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTYzMyw3ICs2MzMsNyBAQCBFeGNlcHRpb25PcjxTZWxlY3Rv
clF1ZXJ5Jj4gU2VsZWN0b3JRdWVyeUNhY2hlOjphZGQoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMs
IERvYwogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1heGltdW1TZWxlY3RvclF1ZXJ5Q2Fj
aGVTaXplKQogICAgICAgICBtX2VudHJpZXMucmVtb3ZlKG1fZW50cmllcy5yYW5kb20oKSk7CiAK
LSAgICByZXR1cm4gKm1fZW50cmllcy5hZGQoc2VsZWN0b3JzLCBzdGQ6Om1ha2VfdW5pcXVlPFNl
bGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1ZTsKKyAg
ICByZXR1cm4gKm1fZW50cmllcy5hZGQoc2VsZWN0b3JzLCBtYWtlVW5pcXVlPFNlbGVjdG9yUXVl
cnk+KFdURk1vdmUoc2VsZWN0b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDY5NjNiNjgzNzlkODhmMjdhODRlMmYxZGE2NTE1
MzgxODA1YjI5M2MuLjY3ODZjMGQyMWUxYjJjMmE1Nzg1MWJkMDg1MTY0YzFhMWU5MmM5OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU2hhZG93Um9vdDo6
U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUpCiAgICAg
OiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJl
ZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9zdHls
ZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX3N0
eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKIHsKIH0KIApAQCAtNjcs
NyArNjcsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgc3Rk
Ojp1bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50PiYmIHNsbwogICAgIDogRG9jdW1lbnRGcmFnbWVu
dChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAsIFRyZWVTY29wZSgqdGhpcywgZG9j
dW1lbnQpCiAgICAgLCBtX3R5cGUoU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKLSAgICAsIG1f
c3R5bGVTY29wZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwg
bV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCiAgICAgLCBtX3Ns
b3RBc3NpZ25tZW50KFdURk1vdmUoc2xvdEFzc2lnbm1lbnQpKQogewogfQpAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHZvaWQgU2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KERvY3Vt
ZW50JiBuZXdEb2N1bWVudCkKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCFwYXJlbnRUcmVlU2NvcGUoKSB8fCAmcGFyZW50VHJlZVNjb3BlKCktPmRvY3VtZW50
U2NvcGUoKSA9PSAmbmV3RG9jdW1lbnQpOwogCiAgICAgLy8gU3R5bGUgc2NvcGVzIGFyZSBkb2N1
bWVudCBzcGVjaWZpYy4KLSAgICBtX3N0eWxlU2NvcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxl
OjpTY29wZT4oKnRoaXMpOworICAgIG1fc3R5bGVTY29wZSA9IG1ha2VVbmlxdWU8U3R5bGU6OlNj
b3BlPigqdGhpcyk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TigmbV9zdHlsZVNjb3BlLT5kb2N1bWVudCgpID09ICZuZXdEb2N1bWVudCk7CiB9CiAKQEAgLTIy
OCw3ICsyMjgsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVudCYgcwogewogICAgIEFTU0VSVCgmc2xv
dC5yb290Tm9kZSgpID09IHRoaXMpOwogICAgIGlmICghbV9zbG90QXNzaWdubWVudCkKLSAgICAg
ICAgbV9zbG90QXNzaWdubWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U2xvdEFzc2lnbm1lbnQ+KCk7
CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlPFNsb3RBc3NpZ25tZW50Pigp
OwogCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPmFkZFNsb3RFbGVtZW50QnlOYW1lKG5h
bWUsIHNsb3QsICp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90
QXNzaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCmlu
ZGV4IGE0MTlkZGE1MjhhY2NiZGE2ZGU5ZGRmMWE1NDg2NGNmZGY5MTYwZWYuLjQ1YzA4ZWEzNmFm
ZTEzOTdiZTBlY2JmYjI5ZTIyOGVjZDBjOTkwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TbG90QXNzaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3Np
Z25tZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNs
b3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVuCiAg
ICAgICAgIC8vIHRvIGF2b2lkIGFsd2F5cyBoYXZpbmcgYSB2ZWN0b3Igb2YgYWxsIGNoaWxkIG5v
ZGVzIG9mIGEgc2hhZG93IGhvc3QuCiAgICAgICAgIGlmIChzbG90TmFtZSA9PSBkZWZhdWx0U2xv
dE5hbWUoKSkKICAgICAgICAgICAgIG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCA9IGZhbHNlOwot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90PigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwogICAgIGF1dG8mIHNsb3QgPSAqYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBib29sIG5lZWRzU2xvdGNoYW5nZUV2ZW50ID0gc2hhZG93
Um9vdC5zaG91bGRGaXJlU2xvdGNoYW5nZUV2ZW50KCkgJiYgaGFzQXNzaWduZWROb2RlcyhzaGFk
b3dSb290LCBzbG90KTsKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50Ojph
c3NpZ25Ub1Nsb3QoTm9kZSYgY2hpbGQsIGNvbnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lKQogICAg
IH0KIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zbG90cy5lbnN1cmUoc2xvdE5hbWUsIFtdIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U2xvdD4oKTsKICAgICB9KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5hc3NpZ25lZE5vZGVzLmFwcGVuZCgmY2hpbGQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcAppbmRleCAyZjI4NzBkMTY2OWQ0NGJjNjE4NGE3MmVjNjNlYjMyM2Y1MjdkMzlmLi41MzFh
Y2RmNGRkNjU2OGUwZjQ2MjFlYjUwZDg5ZGVlNDY3ZDU1YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBUcmVlU2NvcGU6OlRyZWVTY29wZShTaGFkb3dSb290
JiBzaGFkb3dSb290LCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKHNoYWRv
d1Jvb3QpCiAgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3BhcmVudFRy
ZWVTY29wZSgmZG9jdW1lbnQpCi0gICAgLCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6
Om1ha2VfdW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKKyAgICAsIG1faWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5KG1ha2VVbmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Pigp
KQogewogICAgIHNoYWRvd1Jvb3Quc2V0VHJlZVNjb3BlKCp0aGlzKTsKIH0KQEAgLTczLDcgKzcz
LDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9y
b290Tm9kZShkb2N1bWVudCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKICAgICAs
IG1fcGFyZW50VHJlZVNjb3BlKG51bGxwdHIpCi0gICAgLCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKKyAgICAs
IG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KG1ha2VVbmlxdWU8SWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5PigpKQogewogICAgIGRvY3VtZW50LnNldFRyZWVTY29wZSgqdGhpcyk7CiB9CkBAIC0x
NDEsNyArMTQxLDcgQEAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogVHJlZVNjb3BlOjpnZXRBbGxF
bGVtZW50c0J5SWQoY29uc3QgQXRvbVN0cmluZyYgZWxlbWVudEkKIHZvaWQgVHJlZVNjb3BlOjph
ZGRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nSW1wbCYgZWxlbWVudElkLCBFbGVtZW50JiBl
bGVtZW50LCBib29sIG5vdGlmeU9ic2VydmVycykKIHsKICAgICBpZiAoIW1fZWxlbWVudHNCeUlk
KQotICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3Jk
ZXJlZE1hcD4oKTsKKyAgICAgICAgbV9lbGVtZW50c0J5SWQgPSBtYWtlVW5pcXVlPFRyZWVTY29w
ZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9lbGVtZW50c0J5SWQtPmFkZChlbGVtZW50SWQsIGVsZW1l
bnQsICp0aGlzKTsKICAgICBpZiAobm90aWZ5T2JzZXJ2ZXJzKQogICAgICAgICBtX2lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJZCk7CkBAIC0xNjgsNyAr
MTY4LDcgQEAgRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21T
dHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkRWxlbWVudEJ5TmFtZShjb25z
dCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1f
ZWxlbWVudHNCeU5hbWUpCi0gICAgICAgIG1fZWxlbWVudHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fZWxlbWVudHNCeU5hbWUgPSBt
YWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9lbGVtZW50c0J5TmFtZS0+
YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQg
VHJlZVNjb3BlOjphZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVudCYgaW1hZ2VNYXApCiAgICAgaWYg
KCFuYW1lKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2ltYWdlTWFwc0J5TmFtZSkKLSAg
ICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVy
ZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VNYXBzQnlOYW1lID0gbWFrZVVuaXF1ZTxUcmVlU2Nv
cGVPcmRlcmVkTWFwPigpOwogICAgIG1faW1hZ2VNYXBzQnlOYW1lLT5hZGQoKm5hbWUsIGltYWdl
TWFwLCAqdGhpcyk7CiB9CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBIVE1MTWFwRWxlbWVudCogVHJl
ZVNjb3BlOjpnZXRJbWFnZU1hcChjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogdm9pZCBU
cmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBu
YW1lLCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghbV9pbWFnZXNCeVVz
ZW1hcCkKLSAgICAgICAgbV9pbWFnZXNCeVVzZW1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNj
b3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZXNCeVVzZW1hcCA9IG1ha2VVbmlxdWU8
VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICByZXR1cm4gbV9pbWFnZXNCeVVzZW1hcC0+YWRk
KG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIApAQCAtMzAwLDcgKzMwMCw3IEBAIEhUTUxMYWJl
bEVsZW1lbnQqIFRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQoY29uc3QgQXRvbVN0cmluZyYg
Zm9yQXR0cmlidXRlVmFsCiAKICAgICBpZiAoIW1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUpIHsKICAg
ICAgICAgLy8gUG9wdWxhdGUgdGhlIG1hcCBvbiBmaXJzdCBhY2Nlc3MuCi0gICAgICAgIG1fbGFi
ZWxzQnlGb3JBdHRyaWJ1dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+
KCk7CisgICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPFRyZWVTY29w
ZU9yZGVyZWRNYXA+KCk7CiAKICAgICAgICAgZm9yIChhdXRvJiBsYWJlbCA6IGRlc2NlbmRhbnRz
T2ZUeXBlPEhUTUxMYWJlbEVsZW1lbnQ+KG1fcm9vdE5vZGUpKSB7CiAgICAgICAgICAgICBjb25z
dCBBdG9tU3RyaW5nJiBmb3JWYWx1ZSA9IGxhYmVsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oZm9yQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmgKaW5kZXggZGRhNDkwYjEzY2RjMmRkYjgzZmIxZmM4ZmZhYjA5ZGYwMDg4ZDgyYy4u
NDI2ODE5NmY4OTJhZjMwNTUxMDNjNDg3MmZlOGVjYmRkNWYxMWFkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaApAQCAtNDEsNiArNDEsNyBAQCBj
bGFzcyBTdHlsZWRFbGVtZW50OwogY2xhc3MgVGV4dDsKIAogY2xhc3MgQWNjZXNzaWJpbGl0eVVu
ZG9SZXBsYWNlZFRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEFjY2Vzc2liaWxpdHlVbmRvUmVwbGFjZWRUZXh0KCkgeyB9CiAgICAgdm9pZCBjb25maWd1
cmVSYW5nZURlbGV0ZWRCeVJlYXBwbHlXaXRoU3RhcnRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDc5MzQyYzQ5Nzc1
M2Q5YTE1MjZlMDU1NTQ5ZmM3Nzk3MjE0YmY2ZTQuLjg5MWMxMjg4YzZlMzE0YWNjYWU5YjYyNzE5
NzgxODgxZTc0MmRjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM4MCwxMiAr
MzgwLDEyIEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNmZXJGb3JD
bGlwYm9hcmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAgICAgc3dpdGNoIChraW5kKSB7CiAg
ICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkNvcHk6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVu
dEtpbmQ6OkN1dDoKLSAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6
Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgICAgICByZXR1cm4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3Rv
cmVNb2RlOjpSZWFkV3JpdGUsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiAgICAg
Y2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3RlQXNQbGFpblRleHQ6CiAgICAgICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9hcmRE
YXRhRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dFR5cGUgPSAidGV4dC9w
bGFpbiJfczsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0ID0gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKCktPnJlYWRTdHJpbmcocGxhaW5UZXh0VHlwZSk7Ci0gICAgICAgICAg
ICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7
CisgICAgICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9h
cmQ+KCk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZyhwbGFpblRleHRUeXBl
LCBwbGFpblRleHQpOwogICAgICAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHks
IFdURk1vdmUocGFzdGVib2FyZCkpOwogICAgICAgICB9CkBAIC0zOTYsMTAgKzM5NiwxMCBAQCBz
dGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZl
bnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZv
cmVDb3B5OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDdXQ6CiAgICAgY2Fz
ZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJlZm9yZVBhc3RlOgotICAgICAgICByZXR1cm4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3Rv
cmVNb2RlOjpJbnZhbGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwor
ICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1l
bnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCkpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFu
c2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9h
cmQ+KCkpOworICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShk
b2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIG1ha2VVbmlxdWU8U3Rh
dGljUGFzdGVib2FyZD4oKSk7CiB9CiAKIC8vIFJldHVybnMgd2hldGhlciBjYWxsZXIgc2hvdWxk
IGNvbnRpbnVlIHdpdGggInRoZSBkZWZhdWx0IHByb2Nlc3NpbmciLCB3aGljaCBpcyB0aGUgc2Ft
ZSBhcwpAQCAtMTE4Myw5ICsxMTgzLDkgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmco
RWRpdENvbW1hbmRDb21wb3NpdGlvbiYgY29tcG9zaXRpb24pCiAKIEVkaXRvcjo6RWRpdG9yKEZy
YW1lJiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCi0gICAgLCBtX2tpbGxSaW5nKHN0ZDo6
bWFrZV91bmlxdWU8UEFMOjpLaWxsUmluZz4oKSkKLSAgICAsIG1fc3BlbGxDaGVja2VyKHN0ZDo6
bWFrZV91bmlxdWU8U3BlbGxDaGVja2VyPihmcmFtZSkpCi0gICAgLCBtX2FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPihm
cmFtZSkpCisgICAgLCBtX2tpbGxSaW5nKG1ha2VVbmlxdWU8UEFMOjpLaWxsUmluZz4oKSkKKyAg
ICAsIG1fc3BlbGxDaGVja2VyKG1ha2VVbmlxdWU8U3BlbGxDaGVja2VyPihmcmFtZSkpCisgICAg
LCBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIobWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyPihmcmFtZSkpCiAgICAgLCBtX2VkaXRvclVJVXBkYXRlVGltZXIoKnRoaXMsICZF
ZGl0b3I6OmVkaXRvclVJVXBkYXRlVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV90ZWxlcGhv
bmVOdW1iZXJEZXRlY3Rpb25VcGRhdGVUaW1lcigqdGhpcywgJkVkaXRvcjo6c2NhblNlbGVjdGlv
bkZvclRlbGVwaG9uZU51bWJlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDBkZGMxNWJkYzBkMzA0ZjQ1NDNhMDU5NjJi
YzZjYzc2NDVmNTQ3OTQuLjJjMjAyOGNjNjNjMWI5MzhiYzY2ZmY0YmVhNTg5OTI1OGU5YTRhNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCkBAIC0xNjMxLDcgKzE2MzEsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
Ojp1cGRhdGVOb2Rlc0luc2VydGVkKE5vZGUgKm5vZGUpCiBSZXBsYWNlbWVudEZyYWdtZW50KiBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZW5zdXJlUmVwbGFjZW1lbnRGcmFnbWVudCgpCiB7CiAg
ICAgaWYgKCFtX3JlcGxhY2VtZW50RnJhZ21lbnQpCi0gICAgICAgIG1fcmVwbGFjZW1lbnRGcmFn
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZW1lbnRGcmFnbWVudD4obV9kb2N1bWVudEZy
YWdtZW50LmdldCgpLCBlbmRpbmdTZWxlY3Rpb24oKSk7CisgICAgICAgIG1fcmVwbGFjZW1lbnRG
cmFnbWVudCA9IG1ha2VVbmlxdWU8UmVwbGFjZW1lbnRGcmFnbWVudD4obV9kb2N1bWVudEZyYWdt
ZW50LmdldCgpLCBlbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgcmV0dXJuIG1fcmVwbGFjZW1lbnRG
cmFnbWVudC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25SZWN0R2F0aGVyZXIuY3BwCmluZGV4IDNiNDA2ODhjYjRkYTY1NmIzNDQ1ODdjMDg4ODYzNmMw
YWIxNTY2Y2YuLmY5YjY0YzVjOGM4OTZiZjMyMjYzMDg3MDlmMjZhYTY2N2UxZWQ5ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKQEAg
LTgxLDcgKzgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Tm90
aWZpZXI+IFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Y2xlYXJBbmQKICAgICBtX2dhcFJlY3RzLmNs
ZWFyKCk7CiAgICAgbV9pc1RleHRPbmx5ID0gdHJ1ZTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE5vdGlmaWVyPigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Tm90aWZpZXI+
KCp0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDE4OTZlMWEyMjgxYzFhOWIwNDZlOGVmYWNkOTExOWFm
NWUyNzdkNTYuLmYxZDE5YzEwMTE0YzFhOTg1YjhiNDI2ZmE2OGZkYjgxMjJhNjBjNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTY1MCw3ICs2NTAsNyBAQCBi
b29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICB1bnNpZ25lZCBlbmRQ
b3NpdGlvbiA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fZW5kT2Zmc2V0KSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKICAgICAgICAgaWYgKCFt
X2Zsb3dSdW5SZXNvbHZlckNhY2hlIHx8ICZtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5mbG93KCkg
IT0gJmJsb2NrRmxvdykgewogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5n
dGhJbkZsb3cgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID8gMCA6IHRleHROb2RlT2Zmc2V0SW5G
bG93KHRleHROb2RlKTsKLSAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICps
YXlvdXQpOworICAgICAgICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IG1ha2VVbmlxdWU8
U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7CiAgICAg
ICAgIH0KICAgICAgICAgLy8gU2tpcCB0byBtX29mZnNldCBwb3NpdGlvbi4KICAgICAgICAgYXV0
byByYW5nZSA9IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPnJhbmdlRm9yUmVuZGVyZXIocmVuZGVy
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmlu
ZGV4IDBhODNhYzA5NTkyNzRjMDc4MGQ1ZDdiMzg1ZjAxOWMwZTg2ZTNjNzQuLjljZjg2YTRhMTVm
MWM3YzZmMDI4MTU1NjQ3YWZhMDA1OWFlM2I2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTM4MCw3ICszODAsNyBAQCBIVE1MQ29udmVy
dGVyOjpIVE1MQ29udmVydGVyKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCkKICAgICBfZmxhZ3MucmVhY2hlZFN0YXJ0ID0gZmFsc2U7CiAgICAgX2ZsYWdzLnJlYWNo
ZWRFbmQgPSBmYWxzZTsKICAgICAKLSAgICBfY2FjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1M
Q29udmVydGVyQ2FjaGVzPigpOworICAgIF9jYWNoZXMgPSBtYWtlVW5pcXVlPEhUTUxDb252ZXJ0
ZXJDYWNoZXM+KCk7CiB9CiAKIEhUTUxDb252ZXJ0ZXI6On5IVE1MQ29udmVydGVyKCkKQEAgLTU1
MSw3ICs1NTEsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1
dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYgZQogCiAgICAgYXV0byByZXN1bHQg
PSBtX2NvbXB1dGVkU3R5bGVzLmFkZCgmZWxlbWVudCwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxlbWVudCwgdHJ1ZSk7CisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I+KCZlbGVtZW50LCB0cnVlKTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yJiBjb21wdXRl
ZFN0eWxlID0gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuIGNvbXB1dGVkU3R5
bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKaW5kZXggMjU3
N2Q1YTc2OTY4MTYyMmY1ZDBhN2I2M2ZmNGQwOWQ4OGM5NWRjMS4uMjljNWE4ZGE3ZWUzMjU1NjEy
NjU2OTA1NGUzMDIyMjhhNTMwMTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKQEAgLTM3LDYgKzM3LDcg
QEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkgeyB9CiAgICAgLy8gUmV0
dXJucyBhIGNvbnRleHQgSUQuCkBAIC01Miw2ICs1Myw3IEBAIGNsYXNzIEFsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlciB7CiAgICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAKICAgICBj
bGFzcyBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyIHsKKyAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBBbGVybmF0aXZlVGV4dENvbnRl
eHRDb250cm9sbGVyKCkgeyB9CiAgICAgICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25z
dCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCmluZGV4IGZiNDM3MTYzMDNhZTI1YjgxOTI5MmQyNzFjYTJjYWU2ODRiOWMwMmUuLmMzYzhm
OGIzMjRiZmVjZGNlOWU1YzRlYjE5YjViNzQ2MDg5MjhjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRl
UGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCkKIHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0
aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCk7CiAgICAgCi0gICAgYXV0
byBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CisgICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1
cmF0aW9uKSk7CiAgICAgcGFnZS0+c2V0SXNGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogICAg
IHBhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICBwYWdlLT5zZXR0
aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IGEwOTVlZWFlOWIyYTc5N2JkYWJhZTM0OTQwZmRjNmEz
Y2UzMDQyNGIuLmQ1ODExMmZmOWJkZjZjZDdkMTk4NTUyZDg2Njk5MWY4NWI3YTFjM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTk0LDExICs5NCwx
MSBAQCBzdGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVu
Y3Rpb24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgcXVldWUuZ2V0KCkuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7Cisg
ICAgcXVldWUuZ2V0KCkuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1v
dmUoZnVuY3Rpb24pKSk7CiB9CiAKIEFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxlU3RyZWFtKEZp
bGVTdHJlYW1DbGllbnQmIGNsaWVudCkKLSAgICA6IG1faW50ZXJuYWxzKHN0ZDo6bWFrZV91bmlx
dWU8SW50ZXJuYWxzPihjbGllbnQpKQorICAgIDogbV9pbnRlcm5hbHMobWFrZVVuaXF1ZTxJbnRl
cm5hbHM+KGNsaWVudCkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCmluZGV4IDlhZDNkYTllZmZmMGYzYTcwN2EwNjAx
Zjc4NjAxZDVkODY4MjU4ZjUuLjk5YTdiNWM2Zjk4N2ExNGJhMTkwOTQ1ODk4N2FlODRlY2ZjNGYw
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcApAQCAtMTM5LDcgKzEzOSw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZpbGVSZWFkZXI6OnJlYWRJbnRlcm5hbChCbG9iJiBibG9i
LCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwCiAgICAgbV9zdGF0ZSA9IExPQURJTkc7CiAgICAg
bV9lcnJvciA9IG51bGxwdHI7CiAKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
ZVJlYWRlckxvYWRlcj4obV9yZWFkVHlwZSwgc3RhdGljX2Nhc3Q8RmlsZVJlYWRlckxvYWRlckNs
aWVudCo+KHRoaXMpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRl
cj4obV9yZWFkVHlwZSwgc3RhdGljX2Nhc3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMp
KTsKICAgICBtX2xvYWRlci0+c2V0RW5jb2RpbmcobV9lbmNvZGluZyk7CiAgICAgbV9sb2FkZXIt
PnNldERhdGFUeXBlKG1fYmxvYi0+dHlwZSgpKTsKICAgICBtX2xvYWRlci0+c3RhcnQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5jcHAKaW5kZXggNmFlNTUyY2JjZWZiYTM1YWY1NDk0YWQ4MGExNDczMWQwMGFjYTNkMS4uNWM4
ZjE4ZTNkYWIwZWIyNTk3YWQ1ZTgyMjEzOWJkODhmZjMyNGUwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBDYWNoZWRGcmFtZTo6Q2Fj
aGVkRnJhbWUoRnJhbWUmIGZyYW1lKQogCiAgICAgLy8gQ3JlYXRlIHRoZSBDYWNoZWRGcmFtZXMg
Zm9yIGFsbCBGcmFtZXMgaW4gdGhlIEZyYW1lVHJlZS4KICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9
IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCku
bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgbV9jaGlsZEZyYW1lcy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxDYWNoZWRGcmFtZT4oKmNoaWxkKSk7CisgICAgICAgIG1fY2hpbGRGcmFtZXMuYXBwZW5k
KG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+KCpjaGlsZCkpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQo
bV9kb2N1bWVudC0+ZG9tV2luZG93KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9jdW1lbnQt
PmZyYW1lKCkpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShG
cmFtZSYgZnJhbWUpCiAgICAgLy8gQWN0aXZlIERPTSBvYmplY3RzIG11c3QgYmUgc3VzcGVuZGVk
IGJlZm9yZSB3ZSBjYWNoZSB0aGUgZnJhbWUgc2NyaXB0IGRhdGEuCiAgICAgbV9kb2N1bWVudC0+
c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlQ2FjaGUpOwogCi0gICAgbV9jYWNoZWRG
cmFtZVNjcmlwdERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4o
ZnJhbWUpOworICAgIG1fY2FjaGVkRnJhbWVTY3JpcHREYXRhID0gbWFrZVVuaXF1ZTxTY3JpcHRD
YWNoZWRGcmFtZURhdGE+KGZyYW1lKTsKIAogICAgIG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5z
dXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3Bw
CmluZGV4IDA2ODZhZThmZWNlNDRmMWVmNjkwZTVmOGY2YWJlODQ2MTQ2M2RmN2QuLjk3NDdhNDA0
MDE2YWM4NjhkMmY3Nzk2ZTUzMzA0MzZmZmE1ODc0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRQYWdlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwo
V1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hlZFBhZ2VDb3VudGVyLCAoIkNhY2hlZAog
Q2FjaGVkUGFnZTo6Q2FjaGVkUGFnZShQYWdlJiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAg
ICAgLCBtX2V4cGlyYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpICsgU2Vjb25kcyhwYWdl
LnNldHRpbmdzKCkuYmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbCgpKSkKLSAgICAs
IG1fY2FjaGVkTWFpbkZyYW1lKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2UubWFp
bkZyYW1lKCkpKQorICAgICwgbV9jYWNoZWRNYWluRnJhbWUobWFrZVVuaXF1ZTxDYWNoZWRGcmFt
ZT4ocGFnZS5tYWluRnJhbWUoKSkpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGNhY2hlZFBhZ2VD
b3VudGVyLmluY3JlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9Q
YWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4
IDAwMjk2NTU4OTJkMTU0Y2I1MDQzZTFkYTIyODI1ODc5ZjYzZWRkZTUuLjNiYTI0YjlkZTJlOTk0
MTk2YTBkZjkyZmMzNjYzY2VlYTViZjRiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNo
ZS5jcHAKQEAgLTQ3OCw3ICs0NzgsNyBAQCBib29sIFBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUo
SGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBk
b24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0gICAg
ICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRQYWdlPigqcGFn
ZSk7CisgICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigq
cGFnZSk7CiAgICAgICAgIGl0ZW0ubV9wcnVuaW5nUmVhc29uID0gUHJ1bmluZ1JlYXNvbjo6Tm9u
ZTsKICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwCmluZGV4IDdhOTkxZjE3YjAzZDgzZTkwNWY3ZDNlMDYwN2JmNTJhOTli
ODBlNDUuLmIxNGQzMTAxNThiNjQ1ZmU4Njk5ZjdmOTlmNDE4NThiZDU1YWUyOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgRmls
ZUlucHV0VHlwZTo6cmVxdWVzdEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAg
ICAgICBtX2ZpbGVJY29uTG9hZGVyLT5pbnZhbGlkYXRlKCk7CiAKICAgICBGaWxlSWNvbkxvYWRl
ckNsaWVudCYgY2xpZW50ID0gKnRoaXM7Ci0gICAgbV9maWxlSWNvbkxvYWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZUljb25Mb2FkZXI+KGNsaWVudCk7CisgICAgbV9maWxlSWNvbkxvYWRlciA9
IG1ha2VVbmlxdWU8RmlsZUljb25Mb2FkZXI+KGNsaWVudCk7CiAKICAgICBjaHJvbWUtPmxvYWRJ
Y29uRm9yRmlsZXMocGF0aHMsICptX2ZpbGVJY29uTG9hZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCA4MDZlNWYzZGFlYmUyOTRl
MzMwMjMwZGZhNWVkZThjOTJkNThjMzE4Li4xN2MwMjdjZmRmYTFiYjQzYjY0NWVlNjJkNThjOGFj
MzIwNmQ4NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNl
dEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3IpCiB2b2lkIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6cmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKQogewogICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGFzSFRNTEVsZW1lbnQoKS5pc0Nvbm5lY3RlZCgp
KTsKLSAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhc0hUTUxFbGVtZW50KCkuYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0ciksICp0aGlzKTsKKyAgICBtX2Zvcm1BdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlciA9IG1ha2VVbmlxdWU8Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVy
Pihhc0hUTUxFbGVtZW50KCkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0
ciksICp0aGlzKTsKIH0KIAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1
dGVUYXJnZXRDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5k
ZXggZWE1YjA5YWFhMDhkYjI3Mzk2MWI5NTM0MjJmMDNkZDdhZDZlNDY3MS4uZDBlMDNmNTZjYjA2
M2UyN2YxMTM0MGEyNzEzZDRmOTYxYjVhZTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2F2ZWRGb3Jt
U3RhdGU+IFNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6ZShjb25zdCBWZWN0b3I8U3RyaW5nPgog
ICAgIHNpemVfdCBpdGVtQ291bnQgPSBzdGF0ZVZlY3RvcltpbmRleCsrXS50b1VJbnQoKTsKICAg
ICBpZiAoIWl0ZW1Db3VudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBzYXZl
ZEZvcm1TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CisgICAgYXV0
byBzYXZlZEZvcm1TdGF0ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CiAgICAgd2hp
bGUgKGl0ZW1Db3VudC0tKSB7CiAgICAgICAgIGlmIChpbmRleCArIDEgPj0gc3RhdGVWZWN0b3Iu
c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNjUsMTMgKzM2NSwxMyBA
QCBzdGF0aWMgU3RyaW5nIGZvcm1TdGF0ZVNpZ25hdHVyZSgpCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9y
bUNvbnRyb2xsZXI6OlNhdmVkRm9ybVN0YXRlTWFwPiBGb3JtQ29udHJvbGxlcjo6Y3JlYXRlU2F2
ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCYgY29udHJvbExpc3Qp
CiB7CiAgICAgRm9ybUtleUdlbmVyYXRvciBrZXlHZW5lcmF0b3I7Ci0gICAgYXV0byBzdGF0ZU1h
cCA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGVNYXA+KCk7CisgICAgYXV0byBzdGF0
ZU1hcCA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGVNYXA+KCk7CiAgICAgZm9yIChhdXRvJiBj
b250cm9sIDogY29udHJvbExpc3QpIHsKICAgICAgICAgaWYgKCFjb250cm9sLT5zaG91bGRTYXZl
QW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBhdXRvJiBmb3JtU3RhdGUgPSBzdGF0ZU1hcC0+YWRkKGtleUdlbmVyYXRvci5mb3JtS2V5
KCpjb250cm9sKS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgaWYg
KCFmb3JtU3RhdGUpCi0gICAgICAgICAgICBmb3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNh
dmVkRm9ybVN0YXRlPigpOworICAgICAgICAgICAgZm9ybVN0YXRlID0gbWFrZVVuaXF1ZTxTYXZl
ZEZvcm1TdGF0ZT4oKTsKICAgICAgICAgZm9ybVN0YXRlLT5hcHBlbmRDb250cm9sU3RhdGUoY29u
dHJvbC0+bmFtZSgpLCBjb250cm9sLT50eXBlKCksIGNvbnRyb2wtPnNhdmVGb3JtQ29udHJvbFN0
YXRlKCkpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVNYXA7CkBAIC00MDMsNyArNDAzLDcgQEAg
Rm9ybUNvbnRyb2xTdGF0ZSBGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQo
Y29uc3QgSFRNTEZvcm1Db250cm9sRWwKICAgICBpZiAobV9zYXZlZEZvcm1TdGF0ZU1hcC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7CiAgICAgaWYgKCFtX2Zv
cm1LZXlHZW5lcmF0b3IpCi0gICAgICAgIG1fZm9ybUtleUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKKyAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yID0g
bWFrZVVuaXF1ZTxGb3JtS2V5R2VuZXJhdG9yPigpOwogICAgIFNhdmVkRm9ybVN0YXRlTWFwOjpp
dGVyYXRvciBpdCA9IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZmluZChtX2Zvcm1LZXlHZW5lcmF0b3It
PmZvcm1LZXkoY29udHJvbCkuaW1wbCgpKTsKICAgICBpZiAoaXQgPT0gbV9zYXZlZEZvcm1TdGF0
ZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMTA0N2M1OGVlYzM1MzZlM2Qz
OTkzYTdiNmU1ODYyNWIwMTU5NTJmMS4uZWI5YmQwNjg1ZDU5MmVhNjkyMzEzYWQ0MTZjMjdkN2Yy
ODI2MWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAg
LTMxNCw3ICszMTQsNyBAQCBib29sIEhUTUxBbmNob3JFbGVtZW50OjpoYXNSZWwoUmVsYXRpb24g
cmVsYXRpb24pIGNvbnN0CiBET01Ub2tlbkxpc3QmIEhUTUxBbmNob3JFbGVtZW50OjpyZWxMaXN0
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVsTGlzdCkgewotICAgICAgICBtX3JlbExpc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oY29uc3RfY2FzdDxIVE1MQW5jaG9yRWxlbWVu
dCY+KCp0aGlzKSwgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcg
dG9rZW4pIHsKKyAgICAgICAgbV9yZWxMaXN0ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KGNv
bnN0X2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQmPigqdGhpcyksIEhUTUxOYW1lczo6cmVsQXR0ciwg
W10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQogICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJub3Jl
ZmVycmVyIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm5vb3BlbmVyIikgfHwg
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgImFyIik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmluZGV4IGFjMDc1OGRlODNiMDQ4ODJhNWQ4OTIyZmQ0
MDU1NDhlZjk1NmRjYTIuLjQ5YWJmYTVmNzBhN2FiOTdkNzNlMmM4MmI3NjdiMDUzNTFhZGVmODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTgzLDcgKzgzLDcg
QEAgdm9pZCBIVE1MQXJlYUVsZW1lbnQ6OmludmFsaWRhdGVDYWNoZWRSZWdpb24oKQogYm9vbCBI
VE1MQXJlYUVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQoTGF5b3V0UG9pbnQgbG9jYXRpb24sIGNvbnN0
IExheW91dFNpemUmIHNpemUsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBpZiAobV9s
YXN0U2l6ZSAhPSBzaXplKSB7Ci0gICAgICAgIG1fcmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YXRoPihnZXRSZWdpb24oc2l6ZSkpOworICAgICAgICBtX3JlZ2lvbiA9IG1ha2VVbmlxdWU8UGF0
aD4oZ2V0UmVnaW9uKHNpemUpKTsKICAgICAgICAgbV9sYXN0U2l6ZSA9IHNpemU7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGE5YmI0ZmI4
ZTA2M2U3MDE1ZjFhNjRlN2Q4NmZlYjM1OGZmYzI3Y2QuLjg5NGU2Mzk4YjhhNGVjZGRlZGY5ZTE5
ODhhNDE0YzE3MWIyODY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCkBAIC05NTksNyArOTU5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0SW1h
Z2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikgY28KICAgICBt
X2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXModHJ1ZSk7
CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoZGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250
ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOwotICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXIt
PmNvbnRleHQoKSk7CisgICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlcj4obV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKIAogICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2soSFRNTEVsZW1lbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+dm0oKSk7CiAgICAgSFRNTEVsZW1lbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0o
KS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1lbW9yeUNvc3QoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IDk3NmM4ZTBhOWEwNmE5YjgzZDZjYTk0
MWJkNWRkMzdiOWYzMzg1YzUuLjMyODE3NmI2OWU4Y2QxYmYyMmQ0ZTc2MzI3ZTlmMjkyOTY4YWI0
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0yMDUsNyArMjA1
LDcgQEAgdm9pZCBIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25z
dAogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2Fj
aGU+KCk7CisgICAgYXV0byBjYWNoZSA9IG1ha2VVbmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVu
dENhY2hlPigpOwogCiAgICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERl
dGFpbHNFbGVtZW50LmNwcAppbmRleCBmMTU3ODc0ZTZkNTM0ZTNmNjEzNGU0YTVkZjRmNTFiZTJm
NjdhMzFhLi42MGRkMWZiMjUyMDM4NjBkM2Q5MmE3YTVhY2IzMzFjMmFiMDRiNTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC04OCw3ICs4OCw3IEBA
IGNvbnN0IEF0b21TdHJpbmcmIERldGFpbHNTbG90QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0
Q2hpbGQoY29uc3QgTm9kZSYgY2hpbGQpCiBSZWY8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0
YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgYXV0byBkZXRhaWxzID0gYWRvcHRSZWYoKm5ldyBIVE1MRGV0
YWlsc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAgICBkZXRhaWxzLT5hZGRTaGFkb3dS
b290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWxz
U2xvdEFzc2lnbm1lbnQ+KCkpKTsKKyAgICBkZXRhaWxzLT5hZGRTaGFkb3dSb290KFNoYWRvd1Jv
b3Q6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVVuaXF1ZTxEZXRhaWxzU2xvdEFzc2lnbm1lbnQ+KCkp
KTsKICAgICByZXR1cm4gZGV0YWlsczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggZDg4OTNiMWYwOTQ5ZWYxMDJlMjlkMDNjNTg5
NjdjNGRkNGYzZmQ1YS4uZTE1MzE2YTE5ZWVmYjQ3N2UzZjM2N2M4MGY3YzNjMWEyYTYzNGI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBA
IC00ODAsNyArNDgwLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNp
YmxlVmFsaWRhdGlvbk1lc3NhZ2UoKQogICAgIGlmIChyZW5kZXJlcigpICYmIHdpbGxWYWxpZGF0
ZSgpKQogICAgICAgICBtZXNzYWdlID0gdmFsaWRhdGlvbk1lc3NhZ2UoKS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKICAgICBpZiAoIW1fdmFsaWRhdGlvbk1lc3NhZ2UpCi0gICAgICAgIG1fdmFsaWRhdGlv
bk1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0aGlzKTsKKyAg
ICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IG1ha2VVbmlxdWU8VmFsaWRhdGlvbk1lc3NhZ2U+
KHRoaXMpOwogICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UtPnVwZGF0ZVZhbGlkYXRpb25NZXNzYWdl
KG1lc3NhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IDZlYzIyZDc3NDlmMmY3OGJkMzFlZjc3ZWE2MzYwNzNi
NzFjNTlmZjIuLmEyYjAwZThmODE2ZGExYzIyMWIxYzM2NmVhNmU2ODljM2IxYzY4YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3Bw
CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNo
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNhY2hlID0gc3RkOjptYWtlX3VuaXF1
ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CisgICAgYXV0byBjYWNoZSA9IG1ha2VV
bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwogCiAgICAgSGFzaFNldDxBdG9t
U3RyaW5nSW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwCmluZGV4IGM3NmQ0OTNhNjJjZWQ4MzA4ODAxYjZiMDFkMzMyMWUwYTMz
M2Y1MWQuLjQzNWQ5NTE0ZGQyOWRkZDFmNmRmYjFkMTY5ZTM0N2UzMTVhMzAxOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCB2b2lk
IEhUTUxGb3JtRWxlbWVudDo6YWRkVG9QYXN0TmFtZXNNYXAoRm9ybU5hbWVkSXRlbSogaXRlbSwg
Y29uc3QgQXRvbVN0cmluZyYgcAogICAgIGlmIChwYXN0TmFtZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAoIW1fcGFzdE5hbWVzTWFwKQotICAgICAgICBtX3Bhc3ROYW1lc01h
cCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdE5hbWVzTWFwPigpOworICAgICAgICBtX3Bhc3ROYW1l
c01hcCA9IG1ha2VVbmlxdWU8UGFzdE5hbWVzTWFwPigpOwogICAgIG1fcGFzdE5hbWVzTWFwLT5z
ZXQocGFzdE5hbWUuaW1wbCgpLCBpdGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcAppbmRleCAwMmQ3ZDRlNGZiZTg2ZjUyNzBmNTg0YjZhOGRlYjliZTQ2
Zjk3YWE5Li5iMWM4MjFkZDliYWJhMmEyMGNiMjllMWMxY2ZkOTBkNzFmZWM1OGJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCBS
ZWY8SFRNTElGcmFtZUVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogRE9NVG9rZW5MaXN0JiBIVE1MSUZyYW1lRWxlbWVudDo6
c2FuZGJveCgpCiB7CiAgICAgaWYgKCFtX3NhbmRib3gpIHsKLSAgICAgICAgbV9zYW5kYm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzYW5kYm94QXR0ciwgW10oRG9j
dW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CisgICAgICAgIG1fc2FuZGJveCA9IG1ha2VVbmlx
dWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2FuZGJveEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5n
VmlldyB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuIFNlY3VyaXR5Q29udGV4dDo6aXNTdXBw
b3J0ZWRTYW5kYm94UG9saWN5KHRva2VuKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMGMyNWNkZDgwZDVmOGE3NzBhMWQ5
NzAwNTc4NDdhODljNTY4M2RiZC4uMzc2YzUyMTk2NGUwZjcxYjZmZDljMjE3MmQ2MjAxYzI5MjU3
YTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNDgs
NyArMTQ4LDcgQEAgUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKIEhUTUxJbWFnZUxvYWRlciYgSFRN
TElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQogewogICAgIGlmICghbV9pbWFnZUxv
YWRlcikKLSAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdl
TG9hZGVyPigqdGhpcyk7CisgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJ
bWFnZUxvYWRlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pbWFnZUxvYWRlcjsKIH0KIApAQCAt
MTY0MSw3ICsxNjQxLDcgQEAgUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IEhUTUxJbnB1dEVs
ZW1lbnQ6OmRhdGFMaXN0KCkgY29uc3QKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0
QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKQogewogICAgIGlmIChpc0Nvbm5lY3RlZCgpKQotICAg
ICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlz
dEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGxpc3RBdHRyKSwgdGhpcyk7CisgICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVy
ID0gbWFrZVVuaXF1ZTxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24obGlzdEF0dHIpLCB0aGlzKTsKICAgICBlbHNlCiAgICAgICAgIG1f
bGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCBiODYzNGNhZGFmYTE4YTBhMjdjY2Y3MjhmOWJi
ZjU2Y2I3Zjc4ZDE2Li5mNmE3YmM4MDI0ZmZhNWU0YmQ3MWY2OWEyN2M5N2M4YzkzNmJiNGUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgxLDcg
QEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnN0eWxlU2hlZXRJc0xvYWRpbmcoKSBjb25zdAogRE9N
VG9rZW5MaXN0JiBIVE1MTGlua0VsZW1lbnQ6OnNpemVzKCkKIHsKICAgICBpZiAoIW1fc2l6ZXMp
Ci0gICAgICAgIG1fc2l6ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMs
IHNpemVzQXR0cik7CisgICAgICAgIG1fc2l6ZXMgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4o
KnRoaXMsIHNpemVzQXR0cik7CiAgICAgcmV0dXJuICptX3NpemVzOwogfQogCkBAIC01MjIsNyAr
NTIyLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KExpbmtF
dmVudFNlbmRlciogZXZlbnRTZW5kZXIpCiBET01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxlbWVudDo6
cmVsTGlzdCgpCiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIAotICAgICAgICBtX3JlbExpc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6cmVsQXR0ciwg
W10oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRva2VuKSB7CisgICAgICAgIG1fcmVs
TGlzdCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpyZWxBdHRy
LCBbXShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICAgICAgICAgICAg
IHJldHVybiBMaW5rUmVsQXR0cmlidXRlOjppc1N1cHBvcnRlZChkb2N1bWVudCwgdG9rZW4pOwog
ICAgICAgICB9KTsKICAgICByZXR1cm4gKm1fcmVsTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGY3NDBjY2FjMjQyZTllMGYzYmM4ZGRjOTU3NWZiMzJh
NGVmMTk4YWYuLmYzYWNmY2RlMDAwN2EyNGYyNzVhNGM5NTRkNTI1MTIwODM3ODI5OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBA
IEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNo
SW5pdGlhbGl6YXRpb24oKQogewotICAgIG1fbWVkaWFTZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CisgICAgbV9tZWRpYVNlc3Npb24gPSBtYWtl
VW5pcXVlPE1lZGlhRWxlbWVudFNlc3Npb24+KCp0aGlzKTsKIAogICAgIG1fbWVkaWFTZXNzaW9u
LT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2Vy
R2VzdHVyZUZvckZ1bGxzY3JlZW4pOwogICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJl
c3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1l
ZGlhKTsKQEAgLTMwMjcsNyArMzAyNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1dp
dGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiBpblRpbWUsIGNvbnN0IE1lZGlhVGltCiAKICAg
ICAvLyA1IC0gSWYgdGhlIHNlZWsgd2FzIGluIHJlc3BvbnNlIHRvIGEgRE9NIG1ldGhvZCBjYWxs
IG9yIHNldHRpbmcgb2YgYW4gSURMIGF0dHJpYnV0ZSwgdGhlbiBjb250aW51ZQogICAgIC8vIHRo
ZSBzY3JpcHQuIFRoZSByZW1haW5kZXIgb2YgdGhlc2Ugc3RlcHMgbXVzdCBiZSBydW4gYXN5bmNo
cm9ub3VzbHkuCi0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Nl
ZWs+KG5vdywgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKKyAg
ICBtX3BlbmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1lLCBuZWdh
dGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIGlmIChmcm9tRE9NKSB7CiAg
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVpbmcgc2VlayBmcm9tICIsIG5v
dywgIiB0byAiLCB0aW1lKTsKICAgICAgICAgbV9zZWVrVGFza1F1ZXVlLnNjaGVkdWxlVGFzayhz
dGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUYXNrLCB0aGlzKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGQwYmFiOWZjOWQ2ZWRhMWMxYmMyYTYwOTY4
M2YyNzZmZTc2MDNjZjguLmYyNGU4NzZhMTNiNjE1NTllMmM5OTViYmE0YTVlNDUyMzQ5NzAwOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC05OTAsNiArOTkwLDcg
QEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9y
OwogCiAgICAgc3RydWN0IFBlbmRpbmdTZWVrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nU2Vlayhjb25zdCBNZWRpYVRpbWUmIG5vdywg
Y29uc3QgTWVkaWFUaW1lJiB0YXJnZXRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVG9s
ZXJhbmNlLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVG9sZXJhbmNlKQogICAgICAgICAgICAg
OiBub3cobm93KQogICAgICAgICAgICAgLCB0YXJnZXRUaW1lKHRhcmdldFRpbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCmluZGV4IGRkNGZhMmQ3MGU0ZjQzZjQy
YjgyMjJkMzdkNDQxOGYxYTEzMWVkODcuLjU2YjcyMDZhZTNiZThmMTBhODgxNGFlOWFmYWM2MmJm
ZWI1NjA5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0RGVmYXVsdFZhbHVl
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiBET01Ub2tlbkxpc3QmIEhUTUxPdXRwdXRFbGVtZW50Ojpo
dG1sRm9yKCkKIHsKICAgICBpZiAoIW1fdG9rZW5zKQotICAgICAgICBtX3Rva2VucyA9IHN0ZDo6
bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgZm9yQXR0cik7CisgICAgICAgIG1fdG9r
ZW5zID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBmb3JBdHRyKTsKICAgICByZXR1
cm4gKm1fdG9rZW5zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LmNwcAppbmRleCBkZGE5NDQ5ZDU3YWQ0MjA4NTg2MjdkZWQzZmRkOTE4MTMyMTVm
ZTJiLi41Yjk5ZDU1NTUzMDQ5NzA5M2M2YmNhOTk1ODdjN2EyZjcyNTU5MDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTI4Nyw3ICsy
ODcsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZUFmdGVyU3R5bGVSZXNv
bHV0aW9uKCkKICAgICBpZiAocmVuZGVyZXIoKSAmJiAhdXNlRmFsbGJhY2tDb250ZW50KCkpIHsK
ICAgICAgICAgaWYgKGlzSW1hZ2VUeXBlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxv
YWRlcikKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxI
VE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0g
bWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgICAgIGlmIChtX25l
ZWRzSW1hZ2VSZWxvYWQpCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJv
bUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAppbmRleCAxMGJjMDlmZjA5OWM4
ODhiMjI2MjY5MzkwYjhlMWY4YmU0Y2UzOTY3Li5iMDQ5MzliOWMyZDcyNzAyMTM3OWM1YTRkZDM0
MDQ3ZDgxMmFkOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFN1bW1hcnlTbG90RWxlbWVudCBmaW5hbCA6IHB1
YmxpYyBTbG90QXNzaWdubWVudCB7CiBSZWY8SFRNTFN1bW1hcnlFbGVtZW50PiBIVE1MU3VtbWFy
eUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4gc3VtbWFyeSA9IGFkb3B0
UmVmKCpuZXcgSFRNTFN1bW1hcnlFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgc3Vt
bWFyeS0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6bWFr
ZV91bmlxdWU8U3VtbWFyeVNsb3RFbGVtZW50PigpKSk7CisgICAgc3VtbWFyeS0+YWRkU2hhZG93
Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8U3VtbWFyeVNsb3RF
bGVtZW50PigpKSk7CiAgICAgcmV0dXJuIHN1bW1hcnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGE1ZTc1YWFmZjUyZGRmOWY1NzU0NWJhMDY3ZWVj
Nzg5ODg4ZGQ5YWIuLjY3ZmYyMTI1MmYxYjhlODMxMGExZDdjYmIyMzJlYThjNzM5MzhhMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtOTQsNyArOTQsNyBA
QCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgdXBkYXRl
RGlzcGxheVN0YXRlKCk7CiAgICAgaWYgKHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CiAg
ICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9p
bWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAg
IG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+aW1hZ2VS
ZXNvdXJjZSgpLnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOwpAQCAtMTI3
LDcgKzEyNyw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAKICAgICAgICAgaWYgKHNob3Vs
ZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIp
Ci0gICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTElt
YWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VV
bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVy
LT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCmluZGV4IDdiZWJjN2ExMGNj
YmVkNTNjZmU4Y2FmOGEwN2M3OGU2YzU3OWQ2NGYuLmI2NjhkYTFmMzIxNGRiZjliOTE2MWVmYTgz
MjU2Yzk1Y2E4MjExZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJM
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNw
cApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQdWJsaWNVUkxNYW5hZ2VyPiBQdWJsaWNVUkxNYW5hZ2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBhdXRvIHB1YmxpY1VSTE1hbmFnZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFB1YmxpY1VSTE1hbmFnZXI+KGNvbnRleHQpOworICAgIGF1dG8gcHVibGlj
VVJMTWFuYWdlciA9IG1ha2VVbmlxdWU8UHVibGljVVJMTWFuYWdlcj4oY29udGV4dCk7CiAgICAg
cHVibGljVVJMTWFuYWdlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHB1YmxpY1VS
TE1hbmFnZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmlu
ZGV4IDhhZjczYThhMDA1NDk4MGFkMTc5MDY5NTZhODQzMmE2ZjljZGIxNGIuLmY1ZGFiMGY0MmYy
ZDA1M2U3MDNjNmM1NzIzY2ExNjAzNzFkMWEyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFs
aWRhdGlvbk1lc3NhZ2UuY3BwCkBAIC0xMTUsOSArMTE1LDkgQEAgdm9pZCBWYWxpZGF0aW9uTWVz
c2FnZTo6c2V0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKCFtZXNz
YWdlLmlzRW1wdHkoKSk7CiAgICAgbV9tZXNzYWdlID0gbWVzc2FnZTsKICAgICBpZiAoIW1fYnVi
YmxlKQotICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZW
YWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKTsKKyAgICAgICAgbV90aW1lciA9IG1h
a2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJl
ZSk7CiAgICAgZWxzZQotICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4o
KnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIpOwor
ICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVz
c2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIpOwogICAgIG1fdGltZXItPnN0YXJ0T25l
U2hvdCgwX3MpOwogfQogCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2Fn
ZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIoKQogICAgIGlmIChtYWduaWZpY2F0aW9uIDw9
IDApCiAgICAgICAgIG1fdGltZXIgPSBudWxscHRyOwogICAgIGVsc2UgewotICAgICAgICBtX3Rp
bWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6
ZGVsZXRlQnViYmxlVHJlZSk7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigq
dGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKICAgICAgICAgbV90
aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4KDVfcywgMV9tcyAqIHN0YXRpY19jYXN0PGRvdWJs
ZT4obV9tZXNzYWdlLmxlbmd0aCgpKSAqIG1hZ25pZmljYXRpb24pKTsKICAgICB9CiB9CkBAIC0y
MzQsNyArMjM0LDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6cmVxdWVzdFRvSGlkZU1lc3Nh
Z2UoKQogICAgIH0KIAogICAgIC8vIFdlIG11c3Qgbm90IG1vZGlmeSB0aGUgRE9NIHRyZWUgaW4g
dGhpcyBjb250ZXh0IGJ5IHRoZSBzYW1lIHJlYXNvbiBhcyBzZXRNZXNzYWdlKCkuCi0gICAgbV90
aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6
OmRlbGV0ZUJ1YmJsZVRyZWUpOworICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhp
cywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKICAgICBtX3RpbWVyLT5z
dGFydE9uZVNob3QoMF9zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCBiMTY3Nzg0
NDI4YzNiZmU5ZTZmMTZhNzc4NDBkM2YzYmI5NzA1Yjk2Li41M2M5YzU2NjA0MjdjNDg2ZTMyYWJj
MGMyZDY1NGNjYzU2YzAyOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtOTksNyArOTks
NyBAQCBzdHJ1Y3QgRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCB7CiAKICAgICBEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
RmxvYXRSZWN0JiBjbGlwKQogICAgICAgICA6IGNvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYg
ZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgZGlzcGxheUxpc3Qs
IHN0YXRlLCBjbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgZGlzcGxh
eUxpc3QsIHN0YXRlLCBjbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pCiAgICAg
ewogICAgIH0KQEAgLTIxMTgsNyArMjExOCw3IEBAIEdyYXBoaWNzQ29udGV4dCogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogewogICAgIGlmIChV
TkxJS0VMWShtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmcpKSB7CiAgICAgICAgIGlmICghbV9yZWNv
cmRpbmdDb250ZXh0KQotICAgICAgICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7Cisg
ICAgICAgICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50
Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpKTsKICAgICAgICAgcmV0dXJuICZtX3JlY29y
ZGluZ0NvbnRleHQtPmNvbnRleHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDYzMTE5MTc1NzBm
MmRiMjg1OTRjYmIzNDkwMjQ2OTk3YjU4M2ZiZTAuLmNkNDcyMTI2MWIyZTAyMmI1NTI1ZGQzZDNj
YTU0NjlmOWMwYjNlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMzU5LDcgKzEzNTksNyBAQCBXZWJHTEV4
dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwgbmFt
ZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5h
bWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAgICAgICAgIGlmICghdmFyaWFibGUpIHsgXAotICAgICAg
ICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlwZT4oKnRo
aXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IG1h
a2VVbmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAogICAgICAgICAgICAgaWYgKHZhcmlh
YmxlICE9IG51bGxwdHIpIFwKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7IFwKICAgICAgICAgfSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBlMDZiZjk5ZDU5MTU5NjM5ODBhNjExYzMyYTgzOWUyOTdmMTI4MDQ1Li5lNWZkZTcw
MzM3NDU2YTMxZTE1NzFlZTEwZjNmZDI2NDJkYjAzNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2RlZmluZSBFTkFCTEVfSUZfUkVRVUVTVEVEKHR5cGUs
IHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgY2FuRW5hYmxlKSBcCiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgbmFtZUxpdGVyYWwpKSB7IFwKICAgICAgICAgaWYgKCF2YXJpYWJs
ZSkgeyBcCi0gICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gc3RkOjptYWtlX3Vu
aXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCisgICAgICAgICAgICB2YXJpYWJsZSA9IChj
YW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCiAgICAgICAg
ICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAgICAgICAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAogICAg
ICAgICB9IFwKQEAgLTEzMiw3ICsxMzIsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAg
ICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKLSAgICAgICAgICAgICAgICBtX2V4dFNo
YWRlclRleHR1cmVMT0QgPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KCp0
aGlzKTsKKyAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBtYWtlVW5pcXVl
PEVYVFNoYWRlclRleHR1cmVMT0Q+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTE1OSw3ICsxNTksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAg
ICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKLSAgICAgICAgICAgICAgICBtX3dlYmds
RHJhd0J1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KCp0aGlzKTsK
KyAgICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBtYWtlVW5pcXVlPFdlYkdMRHJh
d0J1ZmZlcnM+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgICAg
IG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7Ci0gICAgICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KCp0
aGlzKTsKKyAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbWFrZVVuaXF1
ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAzZWNlN2VlYjc0MmZhZGI2
ZmUxOGIzM2ViNWE2MTM5Y2VkNDFiYTU2Li5kMTY2ZmIyMzkwNzZkMzYyNjVkOTZjNjQ1ZjA3MTg3
NWFjODJiYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzk5LDggKzc5OSw4IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1fY29u
dGV4dC0+dmlld3BvcnQoMCwgMCwgY2FudmFzU2l6ZS53aWR0aCgpLCBjYW52YXNTaXplLmhlaWdo
dCgpKTsKICAgICBtX2NvbnRleHQtPnNjaXNzb3IoMCwgMCwgY2FudmFzU2l6ZS53aWR0aCgpLCBj
YW52YXNTaXplLmhlaWdodCgpKTsKIAotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxs
YmFjayhzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dExvc3RDYWxsYmFjaz4o
dGhpcykpOwotICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soc3RkOjptYWtl
X3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjaz4odGhpcykp
OworICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhtYWtlVW5pcXVlPFdlYkdM
UmVuZGVyaW5nQ29udGV4dExvc3RDYWxsYmFjaz4odGhpcykpOworICAgIG1fY29udGV4dC0+c2V0
RXJyb3JNZXNzYWdlQ2FsbGJhY2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJv
ck1lc3NhZ2VDYWxsYmFjaz4odGhpcykpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnNldHVwRmxhZ3MoKQpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiAgICAg
ICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rv
cjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSk7CiAK
ICAgICAgICAgZm9yIChhdXRvJiBlcnJvciA6IGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5zcGxp
dCgnXG4nKSkKLSAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2Fn
ZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldl
YkdMOiAiICsgZXJyb3IsIHN0YWNrVHJhY2UuY29weVJlZigpKSk7CisgICAgICAgICAgICBjYW52
YXMtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2cs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlS
ZWYoKSkpOwogICAgIH0KIH0KIApAQCAtNTgwOCw5ICs1ODA4LDkgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0
IFN0cmluZyYKICAgICAvLyBFcnJvciBtZXNzYWdlcyBjYW4gb2NjdXIgZHVyaW5nIGZ1bmN0aW9u
IGNhbGxzLCBzbyBzaG93IHN0YWNrIHRyYWNlcyBmb3IgdGhlbS4KICAgICBpZiAobGV2ZWwgPT0g
TWVzc2FnZUxldmVsOjpFcnJvcikgewogICAgICAgICBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxs
U3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4
ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpOwotICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVu
ZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1Ry
YWNlKSk7CisgICAgICAgIGNvbnNvbGVNZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2cs
IGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgY29uc29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWws
IG1lc3NhZ2UpOworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6
TG9nLCBsZXZlbCwgbWVzc2FnZSk7CiAKICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCk7
CiAgICAgaWYgKGNhbnZhcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0NTU1ByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1By
ZWxvYWRTY2FubmVyLmNwcAppbmRleCBlODU5MGNjYzY5NzI4YWYzOTMwMWQzYWU4ZDg5ODhmNWMx
NWE0YjJhLi5hZWZlNDU3ZjRlZmYwNDM2NTc2M2NiMjZmNzE3ODQ2M2UzMmUxZDdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0y
MDEsNyArMjAxLDcgQEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUoKQogICAgICAg
ICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFVSTCBiYXNlRWxlbWVudFVSTDsg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhc3NlZCBpbiBmcm9tIHRoZSBIVE1MUHJlbG9hZFNj
YW5uZXIgdmlhIHNjYW4oKTogd2l0aG91dCBpdCB3ZSB3aWxsIGdldCByZWxhdGl2ZSBVUkxzIHdy
b25nLgogICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGluY2x1ZGluZyB0aGUg
Y2hhcnNldCBpbiB0aGUgcHJlbG9hZCByZXF1ZXN0PwotICAgICAgICAgICAgbV9yZXF1ZXN0cy0+
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJhc2VF
bGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5nKCks
IFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlT
dHJpbmcpKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChtYWtlVW5pcXVlPFByZWxv
YWRSZXF1ZXN0PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVudFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5
cGU6OkNTU1N0eWxlU2hlZXQsIFN0cmluZygpLCBQcmVsb2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0
OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSk7CiAgICAgICAgIH0KICAgICAgICAg
bV9zdGF0ZSA9IEluaXRpYWw7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShydWxlLCAiY2hhcnNldCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDUxYmFlNGMyMWNmOTQwZGNkOGM2
ZDMyMGJjNGRiZDY2MjZiZTdkOWYuLjlhYzQ0NGVmMGE2NzFmOGE0NzY5OTU3YWUzMjIyYmQ4ZDEw
MDdkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAKQEAgLTUwMyw3ICs1MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9t
RWxlbWVudENvbnN0cnVjdGlvbkRhdGE+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1M
RQogICAgIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZWxlbWVudEludGVyZmFjZSA9IG51bGxw
dHI7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudE9yRmlu
ZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UodG9rZW4sICZlbGVtZW50SW50ZXJmYWNlKTsKICAgICBp
ZiAoVU5MSUtFTFkoZWxlbWVudEludGVyZmFjZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPigqZWxlbWVudEludGVyZmFjZSwg
dG9rZW4ubmFtZSgpLCBXVEZNb3ZlKHRva2VuLmF0dHJpYnV0ZXMoKSkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4oKmVsZW1lbnRJbnRl
cmZhY2UsIHRva2VuLm5hbWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVzKCkpKTsKICAgICBh
dHRhY2hMYXRlcihjdXJyZW50Tm9kZSgpLCAqZWxlbWVudCk7CiAgICAgbV9vcGVuRWxlbWVudHMu
cHVzaChIVE1MU3RhY2tJdGVtOjpjcmVhdGUoZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZN
b3ZlKHRva2VuKSkpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNGZmNGUyYjg3ODhhOTE5
YmY0MmQxN2FkOWZkNjUxYjliMDNhZDE5Yi4uZGQ5ZWEwNGM2ZjUwMGM4NjRiOGM5NGMxOTM4Mzc4
NzdhZmZkZTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpI
VE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fb3B0aW9ucyhkb2N1bWVudCkKICAg
ICAsIG1fdG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFr
ZV91bmlxdWU8SFRNTFNjcmlwdFJ1bm5lcj4oZG9jdW1lbnQsIHN0YXRpY19jYXN0PEhUTUxTY3Jp
cHRSdW5uZXJIb3N0Jj4oKnRoaXMpKSkKLSAgICAsIG1fdHJlZUJ1aWxkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBkb2N1bWVudCwgcGFyc2VyQ29udGVudFBvbGlj
eSgpLCBtX29wdGlvbnMpKQotICAgICwgbV9wYXJzZXJTY2hlZHVsZXIoc3RkOjptYWtlX3VuaXF1
ZTxIVE1MUGFyc2VyU2NoZWR1bGVyPigqdGhpcykpCisgICAgLCBtX3NjcmlwdFJ1bm5lcihtYWtl
VW5pcXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0
UnVubmVySG9zdCY+KCp0aGlzKSkpCisgICAgLCBtX3RyZWVCdWlsZGVyKG1ha2VVbmlxdWU8SFRN
TFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9v
cHRpb25zKSkKKyAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKG1ha2VVbmlxdWU8SFRNTFBhcnNlclNj
aGVkdWxlcj4oKnRoaXMpKQogICAgICwgbV94c3NBdWRpdG9yRGVsZWdhdGUoZG9jdW1lbnQpCi0g
ICAgLCBtX3ByZWxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxSZXNvdXJjZVByZWxvYWRlcj4o
ZG9jdW1lbnQpKQorICAgICwgbV9wcmVsb2FkZXIobWFrZVVuaXF1ZTxIVE1MUmVzb3VyY2VQcmVs
b2FkZXI+KGRvY3VtZW50KSkKIHsKIH0KIApAQCAtNzAsNyArNzAsNyBAQCBpbmxpbmUgSFRNTERv
Y3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21l
bnQsIEVsZW1lbgogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3Vt
ZW50KCksIHJhd1BvbGljeSkKICAgICAsIG1fb3B0aW9ucyhmcmFnbWVudC5kb2N1bWVudCgpKQog
ICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zKQotICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1h
a2VfdW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVu
dCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQorICAgICwgbV90cmVlQnVpbGRl
cihtYWtlVW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGZyYWdtZW50LCBjb250ZXh0RWxl
bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQogICAgICwgbV94c3NBdWRp
dG9yRGVsZWdhdGUoZnJhZ21lbnQuZG9jdW1lbnQoKSkKIHsKICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLWh0bWwtZnJhZ21l
bnRzCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tl
bml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMo
KSkgewogICAgICAgICBBU1NFUlQobV90b2tlbml6ZXIuaXNJbkRhdGFTdGF0ZSgpKTsKICAgICAg
ICAgaWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7Ci0gICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1l
bnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAg
ICAgbV9wcmVsb2FkU2Nhbm5lciA9IG1ha2VVbmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29w
dGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKICAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKG1faW5wdXQuY3Vy
cmVudCgpKTsKICAgICAgICAgfQogICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKCptX3By
ZWxvYWRlciwgKmRvY3VtZW50KCkpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjppbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYgc291cmNlKQogICAgICAgICAvLyBD
aGVjayB0aGUgZG9jdW1lbnQud3JpdGUoKSBvdXRwdXQgd2l0aCBhIHNlcGFyYXRlIHByZWxvYWQg
c2Nhbm5lciBhcwogICAgICAgICAvLyB0aGUgbWFpbiBzY2FubmVyIGNhbid0IGRlYWwgd2l0aCBp
bnNlcnRpb25zLgogICAgICAgICBpZiAoIW1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIpCi0gICAg
ICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1M
UHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCkt
PmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nh
bm5lciA9IG1ha2VVbmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50
KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgbV9p
bnNlcnRpb25QcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQoc291cmNlKTsKICAgICAgICAgbV9p
bnNlcnRpb25QcmVsb2FkU2Nhbm5lci0+c2NhbigqbV9wcmVsb2FkZXIsICpkb2N1bWVudCgpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2su
Y3BwCmluZGV4IDMwYzViNDZkZjEwM2RiZGY2ZjRiN2NlNDA5Y2MzYWExNmM1NDYwMTIuLjZlZjE3
MTJiOWQ2M2I3MWFjYjdjMTY5ZjYyYjQ5YzgyZjMxMDU4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCkBAIC0zMzksNyArMzM5LDcgQEAg
dm9pZCBIVE1MRWxlbWVudFN0YWNrOjppbnNlcnRBYm92ZShSZWY8SFRNTFN0YWNrSXRlbT4mJiBp
dGVtLCBFbGVtZW50UmVjb3JkJiByZWMKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
ICsrbV9zdGFja0RlcHRoOwotICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4dChzdGQ6Om1ha2Vf
dW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5yZWxlYXNl
TmV4dCgpKSk7CisgICAgICAgIHJlY29yZEFib3ZlLT5zZXROZXh0KG1ha2VVbmlxdWU8RWxlbWVu
dFJlY29yZD4oV1RGTW92ZShpdGVtKSwgcmVjb3JkQWJvdmUtPnJlbGVhc2VOZXh0KCkpKTsKICAg
ICAgICAgcmVjb3JkQWJvdmUtPm5leHQoKS0+ZWxlbWVudCgpLmJlZ2luUGFyc2luZ0NoaWxkcmVu
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBIVE1M
RWxlbWVudFN0YWNrOjpwdXNoQ29tbW9uKFJlZjxIVE1MU3RhY2tJdGVtPiYmIGl0ZW0pCiAgICAg
QVNTRVJUKG1fcm9vdE5vZGUpOwogCiAgICAgKyttX3N0YWNrRGVwdGg7Ci0gICAgbV90b3AgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdURk1vdmUobV90
b3ApKTsKKyAgICBtX3RvcCA9IG1ha2VVbmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVt
KSwgV1RGTW92ZShtX3RvcCkpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcENvbW1v
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcAppbmRleCA1M2ExNzJkMzNhZmNkYThmZjg4ZDM0NGQ5YzBlZjA5MDNjZGVjYzkyLi4zM2Q3
YjNiYjA4YjY1MmQwY2Q2OWJjZWRmMWY4NjA2MzFhZmFhMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTE2MSw3ICsxNjEs
NyBAQCBjbGFzcyBUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXIgewogICAgICAg
ICBpZiAoIUxpbmtMb2FkZXI6OmlzU3VwcG9ydGVkVHlwZSh0eXBlLnZhbHVlKCksIG1fdHlwZUF0
dHJpYnV0ZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIHJl
cXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JGb3IobV90
YWdJZCksIG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCB0eXBlLnZhbHVlKCksIG1fbWVk
aWFBdHRyaWJ1dGUsIG1fbW9kdWxlU2NyaXB0LCBtX3JlZmVycmVyUG9saWN5KTsKKyAgICAgICAg
YXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oaW5pdGlhdG9yRm9yKG1f
dGFnSWQpLCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwgdHlwZS52YWx1ZSgpLCBtX21l
ZGlhQXR0cmlidXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJlclBvbGljeSk7CiAgICAgICAg
IHJlcXVlc3QtPnNldENyb3NzT3JpZ2luTW9kZShtX2Nyb3NzT3JpZ2luTW9kZSk7CiAgICAgICAg
IHJlcXVlc3QtPnNldE5vbmNlKG1fbm9uY2VBdHRyaWJ1dGUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IGY3MWIyMWQyNzg5NWU1NzhhYjQ3ZjVjZjU0MDI1ODNl
MzYxMjFkMDIuLjNmNzQ2ZGM2ZDY2N2M0MzcxMWI2OGQwOWI0MjAyZDIzZmYwYzA4OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0yMDksNyArMjA5LDcgQEAgaW5s
aW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUoKQogewogICAgIEFTU0VSVChtX3R5cGUg
PT0gVW5pbml0aWFsaXplZCk7CiAgICAgbV90eXBlID0gRE9DVFlQRTsKLSAgICBtX2RvY3R5cGVE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N0eXBlRGF0YT4oKTsKKyAgICBtX2RvY3R5cGVEYXRh
ID0gbWFrZVVuaXF1ZTxEb2N0eXBlRGF0YT4oKTsKIH0KIAogaW5saW5lIHZvaWQgSFRNTFRva2Vu
OjpiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcAppbmRleCBhYzZlNzk0NDMwMDcwMzY0MjFlYjE2ZGY4M2E5MGQzZDI3
NzJmODU2Li4wNjFkOTU2N2I3ODRkOWIwYmFjZjNmNmRiOWNkZTVhODA2YjAxYzEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxYU1NJbmZvPiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25zdCBG
aWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Ym9vbCBkaWRCbG9ja0VudGlyZVBhZ2UgPSBtX3hzc1Byb3RlY3Rpb24gPT0gWFNTUHJvdGVjdGlv
bkRpc3Bvc2l0aW9uOjpCbG9ja0VuYWJsZWQ7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
WFNTSW5mbz4obV9kb2N1bWVudFVSTCwgZGlkQmxvY2tFbnRpcmVQYWdlLCBtX2RpZFNlbmRWYWxp
ZFhTU1Byb3RlY3Rpb25IZWFkZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFhTU0luZm8+KG1f
ZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQcm90ZWN0
aW9uSGVhZGVyKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTdGFydFRva2VuKGNvbnN0
IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTcxMiw3ICs3MTIsNyBAQCBTdWZmaXhU
cmVlPEFTQ0lJQ29kZWJvb2s+KiBYU1NBdWRpdG9yOjpkZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVl
KCkKICAgICBjb25zdCB1bnNpZ25lZCBzdWZmaXhUcmVlRGVwdGggPSA1OwogCiAgICAgaWYgKCFt
X2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUgJiYgbV9kZWNvZGVkSFRUUEJvZHkubGVuZ3RoKCkg
Pj0gbWluaW11bUxlbmd0aEZvclN1ZmZpeFRyZWUpCi0gICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5
U3VmZml4VHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VmZml4VHJlZTxBU0NJSUNvZGVib29rPj4o
bV9kZWNvZGVkSFRUUEJvZHksIHN1ZmZpeFRyZWVEZXB0aCk7CisgICAgICAgIG1fZGVjb2RlZEhU
VFBCb2R5U3VmZml4VHJlZSA9IG1ha2VVbmlxdWU8U3VmZml4VHJlZTxBU0NJSUNvZGVib29rPj4o
bV9kZWNvZGVkSFRUUEJvZHksIHN1ZmZpeFRyZWVEZXB0aCk7CiAgICAgcmV0dXJuIG1fZGVjb2Rl
ZEhUVFBCb2R5U3VmZml4VHJlZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggM2E2Mzdk
YWVmMDEyNGUyZTRlZDMzNmI2NjM3NTJkMDAyMmI1YmUwMS4uZDU2NmJjYzc5NGFhNzI0YWJlNjBh
MDgwYTNmMmNmOTUxZjQ1MzdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAg
UmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6
OnJlbmRlcmVyKCkgY29uc3QKIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5l
clRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gc3R5bGUgPSBkb3du
Y2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QoKSkuY3JlYXRlSW5u
ZXJUZXh0U3R5bGUoKnNoYWRvd0hvc3RTdHlsZSk7Ci0gICAgcmV0dXJuIEVsZW1lbnRTdHlsZShz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOworICAgIHJldHVy
biBFbGVtZW50U3R5bGUobWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHlsZSkpKTsK
IH0KIAogLy8gTUFSSzogVGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4
IGU0MDIwMGE5YTdhMjI1ZGRmZDg3NDRkOGM5M2JkZTY5MDk2NDcwMDkuLjQ5MzRkNzI5YzE5OGQw
ODA1OWFjOGM5ZjBiMTc0YTk1ZTc2ZjcyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnJlbW92ZUN1ZShUZXh0
VHJhY2tDdWUmIGN1ZSkKIFdlYlZUVFBhcnNlciYgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cGFy
c2VyKCkKIHsKICAgICBpZiAoIW1fd2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dlYlZUVFBhcnNl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJz
ZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV93
ZWJWVFRQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRU
UGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0
dXJuICptX3dlYlZUVFBhcnNlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCmluZGV4IDg1NWJiMjM5MjdlYjEwYTM1YTU5
ZDEyYmUwZDIzNWE3M2NhYmMxMGUuLjEwZmFhMTJmOTBiNDYwYjUwNTZmMjU2N2NjMmQ5ODEyN2Q4
ZmFhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRU
VGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZU
VFRleHRUcmFjay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjp+
SW5iYW5kV2ViVlRUVGV4dFRyYWNrKCkgPSBkZWZhdWx0OwogV2ViVlRUUGFyc2VyJiBJbmJhbmRX
ZWJWVFRUZXh0VHJhY2s6OnBhcnNlcigpCiB7CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAg
ICAgICAgbV93ZWJWVFRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3Rh
dGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgICAgIG1fd2ViVlRUUGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+
KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIHJldHVybiAqbV93ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKaW5kZXggOGYyOWM3ZjE2
NzlhMGZhMjkxOGRlY2ZhNTEzZTJkODAyNzFhMzVlMi4uN2ExZTFiYzQ2OTFiMjExNjg4YzNjZjVk
YTYxOWFjNjFkYmQ2ZmUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2Fk
YWJsZVRleHRUcmFjay5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFj
azo6bG9hZFRpbWVyRmlyZWQoKQogICAgIC8vIDQuIERvd25sb2FkOiBJZiBVUkwgaXMgbm90IHRo
ZSBlbXB0eSBzdHJpbmcsIHBlcmZvcm0gYSBwb3RlbnRpYWxseSBDT1JTLWVuYWJsZWQgZmV0Y2gg
b2YgVVJMLCB3aXRoIHRoZQogICAgIC8vIG1vZGUgYmVpbmcgdGhlIHN0YXRlIG9mIHRoZSBtZWRp
YSBlbGVtZW50J3MgY3Jvc3NvcmlnaW4gY29udGVudCBhdHRyaWJ1dGUsIHRoZSBvcmlnaW4gYmVp
bmcgdGhlCiAgICAgLy8gb3JpZ2luIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgRG9jdW1lbnQsIGFu
ZCB0aGUgZGVmYXVsdCBvcmlnaW4gYmVoYXZpb3VyIHNldCB0byBmYWlsLgotICAgIG1fbG9hZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0VHJhY2tMb2FkZXI+KHN0YXRpY19jYXN0PFRleHRUcmFj
a0xvYWRlckNsaWVudCY+KCp0aGlzKSwgc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCo+KCZtX3RyYWNrRWxlbWVudC0+ZG9jdW1lbnQoKSkpOworICAgIG1fbG9hZGVyID0gbWFrZVVu
aXF1ZTxUZXh0VHJhY2tMb2FkZXI+KHN0YXRpY19jYXN0PFRleHRUcmFja0xvYWRlckNsaWVudCY+
KCp0aGlzKSwgc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KCZtX3RyYWNrRWxl
bWVudC0+ZG9jdW1lbnQoKSkpOwogICAgIGlmICghbV9sb2FkZXItPmxvYWQobV91cmwsICptX3Ry
YWNrRWxlbWVudCkpCiAgICAgICAgIG1fdHJhY2tFbGVtZW50LT5kaWRDb21wbGV0ZUxvYWQoSFRN
TFRyYWNrRWxlbWVudDo6RmFpbHVyZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmluZGV4IDAzMTA4MGUxYWI2NmQzMmNjOWMwNzE3OGYw
MmY5MzUyM2JjNzA2YjAuLjkwMjliOTJkOGI4M2YyZDdiZWQ2ZDhlNTQ1NzZjMGExNjhjYTUyNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIFJlZjxDb21tYW5kTGluZUFQSUhvc3Q+IENvbW1hbmRMaW5lQVBJ
SG9zdDo6Y3JlYXRlKCkKIH0KIAogQ29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhv
c3QoKQotICAgIDogbV9pbnNwZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJs
ZU9iamVjdD4oKSkKKyAgICA6IG1faW5zcGVjdGVkT2JqZWN0KG1ha2VVbmlxdWU8SW5zcGVjdGFi
bGVPYmplY3Q+KCkpCiB7CiB9CiAKQEAgLTE5Niw3ICsxOTYsNyBAQCBKU1ZhbHVlIENvbW1hbmRM
aW5lQVBJSG9zdDo6d3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogdm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6OmNsZWFyQWxsV3JhcHBlcnMoKQogewog
ICAgIG1fd3JhcHBlcnMuY2xlYXJBbGxXcmFwcGVycygpOwotICAgIG1faW5zcGVjdGVkT2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKTsKKyAgICBtX2luc3BlY3Rl
ZE9iamVjdCA9IG1ha2VVbmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01F
ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKaW5kZXgg
NmMzMWU0OThlNDM0ZDMwMGIwZjFjNmVhYjg0MzQ2Nzc2Y2YwYTJmYy4uODM4OTA4ZGM5MzZlZmE2
YmEyNmM3OTE2NzE0NGRiN2RlOWUyYWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVk
aXRvci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgRE9NRWRpdG9yOjpJbnNlcnRCZWZvcmVB
Y3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBwZXJmb3JtKCkgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUt
PnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KCptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9u
b2RlKTsKKyAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBtYWtlVW5pcXVlPFJlbW92
ZUNoaWxkQWN0aW9uPigqbV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZSk7CiAgICAgICAgICAg
ICBhdXRvIHJlc3VsdCA9IG1fcmVtb3ZlQ2hpbGRBY3Rpb24tPnBlcmZvcm0oKTsKICAgICAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CkBAIC0zODUsMjcgKzM4NSwyNyBAQCBET01FZGl0b3I6
On5ET01FZGl0b3IoKSA9IGRlZmF1bHQ7CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6
aW5zZXJ0QmVmb3JlKE5vZGUmIHBhcmVudE5vZGUsIFJlZjxOb2RlPiYmIG5vZGUsIE5vZGUqIGFu
Y2hvck5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlx
dWU8SW5zZXJ0QmVmb3JlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5vZGUpLCBhbmNob3JO
b2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8SW5zZXJ0QmVm
b3JlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5vZGUpLCBhbmNob3JOb2RlKSk7CiB9CiAK
IEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQoTm9kZSYgcGFyZW50Tm9k
ZSwgTm9kZSYgbm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwgbm9kZSkpOworICAgIHJldHVy
biBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPihwYXJlbnRO
b2RlLCBub2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0QXR0cmli
dXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxT
ZXRBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7CisgICAgcmV0dXJuIG1f
aGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0QXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBu
YW1lLCB2YWx1ZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUF0
dHJpYnV0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0
dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQXR0cmlidXRlQWN0
aW9uPihlbGVtZW50LCBuYW1lKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VV
bmlxdWU8UmVtb3ZlQXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lKSk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0
cmluZyYgaHRtbCwgTm9kZSomIG5ld05vZGUpCiB7Ci0gICAgYXV0byBhY3Rpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNldE91dGVySFRNTEFjdGlvbj4obm9kZSwgaHRtbCk7CisgICAgYXV0byBhY3Rp
b24gPSBtYWtlVW5pcXVlPFNldE91dGVySFRNTEFjdGlvbj4obm9kZSwgaHRtbCk7CiAgICAgYXV0
byYgcmF3QWN0aW9uID0gKmFjdGlvbjsKICAgICBhdXRvIHJlc3VsdCA9IG1faGlzdG9yeS5wZXJm
b3JtKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBA
IC00MTUsMjIgKzQxNSwyMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE91dGVy
SFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqJgogCiBFeGNlcHRpb25P
cjx2b2lkPiBET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRNTChFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwpCiB7Ci0gICAgcmV0dXJuIG1f
aGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8SW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9u
PihlbGVtZW50LCB3aGVyZSwgaHRtbCkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybSht
YWtlVW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlvbj4oZWxlbWVudCwgd2hlcmUsIGh0bWwp
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZXBsYWNlV2hvbGVUZXh0KFRl
eHQmIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9y
eS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZVdob2xlVGV4dEFjdGlvbj4odGV4dE5v
ZGUsIHRleHQpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZXBs
YWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBET01FZGl0b3I6OnJlcGxhY2VDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4m
JiBuZXdOb2RlLCBOb2RlJiBvbGROb2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdU
Rk1vdmUobmV3Tm9kZSksIG9sZE5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0o
bWFrZVVuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5l
d05vZGUpLCBvbGROb2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0
Tm9kZVZhbHVlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcmV0dXJu
IG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihu
b2RlLCB2YWx1ZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFNl
dE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwgdmFsdWUpKTsKIH0KIAogc3RhdGljIGJvb2wgcG9wdWxh
dGVFcnJvclN0cmluZyhFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCwgRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNo
U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cAppbmRleCAyMGRhMzQzMGMxNWM4NTUxNDg1YzU3MzhjNTQ3ZmEwYzM0MzFhMWJhLi4yZTlkNzU1
NjU1YzgzZWY4ODE1OTZhYWQyMGM5NmUxMGU2ODgyNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtNDAyLDcgKzQwMiw3IEBAIHN0YXRpYyB2
b2lkIGFkZFN0cmluZ1RvU0hBMShTSEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIAog
c3RkOjp1bmlxdWVfcHRyPERPTVBhdGNoU3VwcG9ydDo6RGlnZXN0PiBET01QYXRjaFN1cHBvcnQ6
OmNyZWF0ZURpZ2VzdChOb2RlJiBub2RlLCBVbnVzZWROb2Rlc01hcCogdW51c2VkTm9kZXNNYXAp
CiB7Ci0gICAgYXV0byBkaWdlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZ2VzdD4oKTsKKyAgICBh
dXRvIGRpZ2VzdCA9IG1ha2VVbmlxdWU8RGlnZXN0PigpOwogICAgIGRpZ2VzdC0+bm9kZSA9ICZu
b2RlOwogICAgIFNIQTEgc2hhMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDUyMDM3MDZiNTNiMzJiMGJhNGYwZWQ0ZDRiYTQw
MGI2Yzc5YjVlMTUuLjYzZmYzYWI2MjNhNDQ2Y2Q2MjBlZTQ3ZTM5MjA1NWNlYTUxYTg3NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTkzLDEwICs5MywxMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0
b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNs
aWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3Ry
dW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdl
YkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRl
bmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKLSAgICAsIG1fb3Zl
cmxheShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNs
aWVudCkpCisgICAgLCBtX292ZXJsYXkobWFrZVVuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdl
LCBpbnNwZWN0b3JDbGllbnQpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNo
OjpjcmVhdGUoKSkKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIocGFnZSkKICAgICAsIG1fcGFn
ZShwYWdlKQpAQCAtMTA2LDcgKzEwNiw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAKICAg
ICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25z
b2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250ZXh0
KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8UGFnZUNvbnNvbGVBZ2VudD4o
cGFnZUNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V2ViQ29uc29sZUFn
ZW50KGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoY29u
c29sZUFnZW50KSk7CiB9CkBAIC0xNTMsMzcgKzE1MywzNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogICAgIGVuc3VyZUluc3BlY3RvckFnZW50KCk7CiAg
ICAgZW5zdXJlUGFnZUFnZW50KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAKLSAgICBhdXRv
IGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihwYWdl
Q29udGV4dCk7CisgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxQYWdlRGVidWdn
ZXJBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIGF1dG8gZGVidWdnZXJBZ2VudFB0ciA9IGRlYnVn
Z2VyQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2Vu
dCkpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZU5ldHdvcmtB
Z2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCkpOwogICAg
IGVuc3VyZURPTUFnZW50KCk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIGRlYnVnZ2VyQWdlbnRQdHIp
KTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4o
cGFnZUNvbnRleHQsIGRlYnVnZ2VyQWdlbnRQdHIpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yV29y
a2VyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+KHBhZ2VDb250
ZXh0KSk7CiAjZW5kaWYKIAotICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpOwor
ICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChzY3JpcHRQcm9maWxlckFnZW50UHRy
LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShzY3JpcHRQcm9maWxlckFnZW50
UHRyKSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCi0gICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQp
KTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JNZW1vcnlB
Z2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNw
ZWN0b3JDUFVQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPEluc3BlY3Rvck1lbW9yeUFnZW50PihwYWdlQ29udGV4dCkpOwogI2VuZGlm
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUhlYXBBZ2VudD4ocGFn
ZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQXVk
aXRBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JDYW52YXNBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihwYWdlQ29udGV4
dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VIZWFwQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZUF1ZGl0QWdlbnQ+
KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9y
Q2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAogICAgIGlmIChhdXRv
JiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExp
bmVBUElIb3N0KCkpCiAgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+aW5pdChtX2luc3RydW1l
bnRpbmdBZ2VudHMuY29weVJlZigpKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBJbnNwZWN0b3JBZ2Vu
dCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQoKQogewogICAgIGlm
ICghbV9pbnNwZWN0b3JBZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFn
ZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JBZ2VudD4ocGFnZUNvbnRleHQpOworICAgICAgICBhdXRvIGluc3BlY3Rv
ckFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgICAg
ICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQWdlbnQobV9pbnNwZWN0b3JBZ2VudCk7CiAg
ICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CkBAIC00MzMs
NyArNDMzLDcgQEAgSW5zcGVjdG9yRE9NQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3Vy
ZURPTUFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9yRE9NQWdlbnQpIHsKICAgICAgICAg
YXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBkb21B
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KHBhZ2VDb250ZXh0LCBt
X292ZXJsYXkuZ2V0KCkpOworICAgICAgICBhdXRvIGRvbUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAgICAgIG1f
aW5zcGVjdG9yRE9NQWdlbnQgPSBkb21BZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBw
ZW5kKFdURk1vdmUoZG9tQWdlbnQpKTsKICAgICB9CkBAIC00NDQsNyArNDQ0LDcgQEAgSW5zcGVj
dG9yUGFnZUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVQYWdlQWdlbnQoKQogewog
ICAgIGlmICghbV9pbnNwZWN0b3JQYWdlQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4
dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBwYWdlQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1faW5zcGVjdG9yQ2xp
ZW50LCBtX292ZXJsYXkuZ2V0KCkpOworICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IG1ha2VVbmlx
dWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1f
b3ZlcmxheS5nZXQoKSk7CiAgICAgICAgIG1faW5zcGVjdG9yUGFnZUFnZW50ID0gcGFnZUFnZW50
LmdldCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShwYWdlQWdlbnQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuaAppbmRleCAyOGVlNzI3YTM2ZDY2Y2UyMTA5Njk3ODMxYWUwYThhYWM0
MjM4NTc1Li42YzFiNTFhZGVlOWEzODQyNjMzMzhmNDVkODg4NGE2ZDljMzdlYTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbCA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2V0dGluZ3Mg
eworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAg
IFNldHRpbmdzKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIH5TZXR0aW5ncygpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcApp
bmRleCAwMGQ1ZjE4NTJjZWJhMjcwYzNhZjgxYzEzMjA5MDA1ZGE3YjExOGE4Li5jODEwM2RkN2Ri
YjgzMjBlYWIyZTZhZDVlMzJjMmQ1MmQ3MmIwNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IEluc3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4g
YWN0aW9uKQogCiB2b2lkIEluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJsZVN0YXRlKCkKIHsK
LSAgICBwZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCkpOworICAg
IHBlcmZvcm0obWFrZVVuaXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IEluc3BlY3Rvckhpc3Rvcnk6OnVuZG8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDE0OTVmMzllMmE0NWUzYzcy
YTk2MTRhZmY1NzllNjRkZGY1NWMwYjUuLmRiZTU1NTNmMDEyMTczNGE5NjU5MTM4NDZhYWQ0NmJm
Mjc3OTczZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFBhcnNlZFN0eWxlU2hlZXQ6OnNl
dFNvdXJjZURhdGEoc3RkOjp1bmlxdWVfcHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4gc291cmNlRAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zb3VyY2VEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CisgICAgbV9zb3VyY2VEYXRhID0gbWFrZVVuaXF1
ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBv
cmFyeSBzb2x1dGlvbiB0byByZXRhaW4gdGhlIG9yaWdpbmFsIGZsYXQgc291cmNlRGF0YSBzdHJ1
Y3R1cmUKICAgICAvLyBjb250YWluaW5nIG9ubHkgc3R5bGUgcnVsZXMsIGV2ZW4gdGhvdWdoIENT
U1BhcnNlciBub3cgcHJvdmlkZXMgdGhlIGZ1bGwgcnVsZSBzb3VyY2UgZGF0YSB0cmVlLgpAQCAt
MTMyMCw3ICsxMzIwLDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VE
YXRhKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBuZXdTdHlsZVNoZWV0ID0g
U3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKLSAgICBhdXRvIHJ1bGVTb3VyY2VEYXRhUmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CisgICAgYXV0byBy
dWxlU291cmNlRGF0YVJlc3VsdCA9IG1ha2VVbmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwog
ICAgIAogICAgIENTU1BhcnNlckNvbnRleHQgY29udGV4dChwYXJzZXJDb250ZXh0Rm9yRG9jdW1l
bnQobV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpKSk7CiAgICAgU3R5bGVTaGVldEhh
bmRsZXIgaGFuZGxlcihtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgbV9wYWdlU3R5bGVTaGVl
dC0+b3duZXJEb2N1bWVudCgpLCBydWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBk
M2I3NTlmMjljY2YxYWUxODAyODBkNWUxNzM2NzBkMjljNGY4Y2MxLi5mZDdjYWQzMDc2N2U3NzVi
MTY3NWVjNDU0ZWY3YTA4YmIwMzZkNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZwogewogICAgIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0
SWQpOwogCi0gICAgYXV0byByZXNvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNl
RGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAgYXV0byByZXNvdXJjZURhdGEgPSBtYWtl
VW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAgcmVzb3VyY2VE
YXRhLT5zZXRUeXBlKHR5cGUpOwogICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0
KHJlcXVlc3RJZCwgV1RGTW92ZShyZXNvdXJjZURhdGEpKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZwogewogICAgIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJ
ZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0byByZXNvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAgYXV0byByZXNvdXJjZURh
dGEgPSBtYWtlVW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAg
cmVzb3VyY2VEYXRhLT5zZXRDYWNoZWRSZXNvdXJjZSgmY2FjaGVkUmVzb3VyY2UpOwogICAgIG1f
cmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RGTW92ZShyZXNvdXJj
ZURhdGEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA0MzUxZTg3MmE5ZTVhMzY0NzI5ZjViNGZiMjYy
MTZjNzMzMDJjOGRkLi4zNjRhZWE3ZDRiNWQ5MTE3OTMyNzVkNjQ2ZjI5NWU2N2JmMGVlZWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIo
V29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIDogbV9pbnN0cnVtZW50
aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFu
YWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+
KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRl
bmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigp
KSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCkBAIC02
OSw3ICs2OSw3IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsCiAKICAgICBhdXRvIHdvcmtlckNv
bnRleHQgPSB3b3JrZXJBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOworICAg
IGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KHdvcmtl
ckNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V2ViQ29uc29sZUFnZW50
KGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoY29uc29s
ZUFnZW50KSk7CiB9CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5yZXNl
dCgpOwogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogCi0gICAgbV9mb3J3YXJk
aW5nQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVs
PihtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVu
aXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOwog
ICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZCgqbV9mb3J3YXJkaW5nQ2hhbm5l
bC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zy
b250ZW5kUm91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CkBAIC0x
NjQsMTggKzE2NCwxOCBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxh
enlBZ2VudHMoKQogCiAgICAgYXV0byB3b3JrZXJDb250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0
KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJSdW50aW1l
QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxX
b3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihtX3dvcmtlckds
b2JhbFNjb3BlKSkgewotICAgICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxT
ZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICAgICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmV0d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7
CisgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4o
d29ya2VyQ29udGV4dCkpOworICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3Jr
ZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29udGV4
dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2Vy
QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJBdWRpdEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4od29ya2VyQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlckF1ZGl0QWdlbnQ+KHdvcmtl
ckNvbnRleHQpKTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpCiAgICAgICAgIGNvbW1hbmRM
aW5lQVBJSG9zdC0+aW5pdChtX2luc3RydW1lbnRpbmdBZ2VudHMuY29weVJlZigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhOGQzYzg5OWMzMjgwYTI4ZTY3MzJj
Zjg4YWI4NGQwMDBkNDVlZDJkLi5mZGYwNDRjNTc5YjM2OGMzMjA1MWI2NWRjNDQwZTM4N2Y2MDE4
ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC00NCw3ICs0NCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KFBhZ2VBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkFwcGxpY2F0aW9uQ2FjaGUiX3Ms
IGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3Bl
Y3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6QXBwbGljYXRp
b25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
UFVQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggY2Y5NGNhODA5NmZmNTcxZDc0ZDc3M2Ix
ZjAwMjc1MDU0YzBjZTFmOS4uMTE2MjRlMjQwOTQ2NGZjMWUxZTY1YTY5OThkYmQxYjA2ODJmMGIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
UFVQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZSgiQ1BVUHJvZmlsZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yOjpDUFVQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDRiNjk5NDVlYzcw
NjdmOTY0M2U0ODA3MzAzNDg0MjY4NmQ2MTlmYjguLjQ0ZTljNWFiZWI0Yzk2NmFiYWVhOTQ0YTQw
ZDVlMDNkNDcyZDExZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgQ1NTU3R5bGVS
dWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYgcnVsZSkKIAog
SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KFdlYkFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ1NTIl9zLCBjb250ZXh0KQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
bWFrZVVuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAtNjI2LDcgKzYyNiw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3Vu
aXF1ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkp
OworICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5p
cXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSk7
CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJ
bnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
KTsKIH0KQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHls
ZVRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplYwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhp
c3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5z
cGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkpOworICAgIGF1dG8gcGVyZm9ybVJl
c3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRTdHlsZVRl
eHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKICAgICBp
ZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9
IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEpTT046Ok9iCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBlcmZv
cm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8
U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBz
ZWxlY3RvcikpOworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCkt
PnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxl
U2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6
dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRS
dWxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKTsKKyAgICBhdXRv
IGFjdGlvbiA9IG1ha2VVbmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwg
c2VsZWN0b3IpOwogICAgIGF1dG8mIHJhd0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byBwZXJm
b3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShXVEZNb3ZlKGFjdGlvbikp
OwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3Bw
CmluZGV4IDliZTA2MTE5ZmIzMjE5NzAwNzI5NzIyZDgzNmE4MTZiMjVmMWMwMTUuLjBlNTBjNzVi
YTQ4NzUxNTU2ZTQxMmRjYjk3YWQxOTY2OTY1YTk5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC03
MSw3ICs3MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNhbnZh
c0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDYW52YXMiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRl
bmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+
KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNw
ZWN0b3I6OkNhbnZhc0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0Lmlu
amVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3Bl
Y3RlZFBhZ2UpCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
cmVjb3JkQ2FudmFzQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmQKICAg
ICBpZiAoIWluc3BlY3RvckNhbnZhcy0+Y3VycmVudEZyYW1lSGFzRGF0YSgpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jb250
ZXh0KCkuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICAg
ICAgYXV0byYgcXVldWUgPSBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCk7Ci0gICAg
ICAgICAgICBxdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01p
Y3JvdGFzaz4ocXVldWUsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbJiwgcHJvdGVjdGVkSW5z
cGVjdG9yQ2FudmFzID0gaW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKV0geworICAgICAgICAgICAg
cXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KHF1ZXVl
LCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgWyYsIHByb3RlY3RlZEluc3BlY3RvckNhbnZhcyA9
IGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCldIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byog
Y2FudmFzRWxlbWVudCA9IHByb3RlY3RlZEluc3BlY3RvckNhbnZhcy0+Y2FudmFzRWxlbWVudCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXNFbGVtZW50LT5pc0Rlc2NlbmRhbnRP
ZihjYW52YXNFbGVtZW50LT5kb2N1bWVudCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHAKaW5kZXggNmMxOTZlMGNjNjgyYjQ0MjU2YzdkZGFhZTA5MGFhMGFhZDU1
MzE3ZC4uZjBhMjhjMTMzMWM1YmIzMDg4ZDUzZTcyNDNkYmFmNGVlYjYzZTdiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKQEAgLTI4Myw3ICsyODMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JT
dHJpbmcoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3Rv
ckRPTUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3Rvck92ZXJsYXkqIG92
ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRPTSJfcywgY29udGV4dCkKICAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQot
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRP
TUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVk
UGFnZSkKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQpAQCAtMzAxLDggKzMwMSw4IEBAIEluc3Bl
Y3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1faGlzdG9yeSA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsKLSAgICBtX2RvbUVkaXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPigqbV9oaXN0b3J5KTsKKyAgICBtX2hpc3RvcnkgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CisgICAgbV9kb21FZGl0b3IgPSBtYWtlVW5p
cXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0SW5zcGVjdG9yRE9NQWdlbnQodGhpcyk7CiAgICAgbV9kb2N1bWVudCA9IG1faW5zcGVjdGVk
UGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGludCBJbnNw
ZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQog
ICAgICAgICBOb2RlKiBwYXJlbnQgPSBpbm5lclBhcmVudE5vZGUobm9kZSk7CiAgICAgICAgIGlm
ICghcGFyZW50KSB7CiAgICAgICAgICAgICAvLyBOb2RlIGJlaW5nIHB1c2hlZCBpcyBkZXRhY2hl
ZCAtPiBwdXNoIHN1YnRyZWUgcm9vdC4KLSAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gc3RkOjpt
YWtlX3VuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gbWFr
ZVVuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKICAgICAgICAgICAgIGRhbmdsaW5nTWFwID0gbmV3TWFw
LmdldCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5hcHBlbmQobmV3TWFw
LnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBhdXRvIGNoaWxkcmVuID0gSlNPTjo6QXJyYXlPZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKQEAgLTExNzcsNyArMTE3
Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25maWc+IEluc3BlY3RvckRPTUFnZW50
OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdo
bGlnaHRDb25maWc+KCk7CisgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhp
Z2hsaWdodENvbmZpZz4oKTsKICAgICBib29sIHNob3dJbmZvID0gZmFsc2U7IC8vIERlZmF1bHQ6
IGZhbHNlIChkbyBub3Qgc2hvdyBhIHRvb2x0aXApLgogICAgIGhpZ2hsaWdodEluc3BlY3Rvck9i
amVjdC0+Z2V0Qm9vbGVhbigic2hvd0luZm8iLCBzaG93SW5mbyk7CiAgICAgaGlnaGxpZ2h0Q29u
ZmlnLT5zaG93SW5mbyA9IHNob3dJbmZvOwpAQCAtMTE5NiwxMyArMTE5NiwxMyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBib29sIGVuYQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0
KEVycm9yU3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0
IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBj
b25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBxdWFkID0gc3RkOjpt
YWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Cisg
ICAgYXV0byBxdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0KSk7CiAgICAgaW5uZXJIaWdobGlnaHRRdWFkKFdURk1vdmUocXVhZCksIGNvbG9y
LCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBK
U09OOjpBcnJheSYgcXVhZEFycmF5LCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBK
U09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVz
KQogewotICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigpOworICAg
IGF1dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigpOwogICAgIGlmICghcGFyc2VRdWFk
KHF1YWRBcnJheSwgcXVhZC5nZXQoKSkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxp
ZCBRdWFkIGZvcm1hdCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtMTIxMiw3ICsxMjEyLDcgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IEpTT046OkFycmEKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJI
aWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQsIGNvbnN0IEpTT046
Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBi
b29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICBhdXRvIGhpZ2hsaWdodENv
bmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgIGhpZ2hsaWdodENvbmZp
Zy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29u
dGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CiAgICAgaGlnaGxpZ2h0Q29u
ZmlnLT51c2VQYWdlQ29vcmRpbmF0ZXMgPSB1c2VQYWdlQ29vcmRpbmF0ZXMgPyAqdXNlUGFnZUNv
b3JkaW5hdGVzIDogZmFsc2U7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZnJhbWUtPm93bmVyRWxlbWVudCgp
KSB7Ci0gICAgICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdo
bGlnaHRDb25maWc+KCk7CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1
ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8g
PSB0cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgogICAgICAgICBoaWdo
bGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICAgICAgaGlnaGxp
Z2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKQEAg
LTEzOTgsNyArMTM5OCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RlZE5v
ZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIG1faW5zcGVjdGVk
Tm9kZSA9IG5vZGU7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gc3RhdGlj
X2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIp
LmNvbW1hbmRMaW5lQVBJSG9zdCgpKQotICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZElu
c3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOwor
ICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChtYWtlVW5pcXVl
PEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOwogCiAgICAgbV9zdXBwcmVzc0V2ZW50TGlzdGVuZXJD
aGFuZ2VkRXZlbnQgPSBmYWxzZTsKIH0KQEAgLTIzMTQsNyArMjMxNCw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrKQotICAg
ICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZhbGlk
YXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKKyAgICAgICAgbV9yZXZhbGlkYXRlU3R5bGVB
dHRyVGFzayA9IG1ha2VVbmlxdWU8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7
CiAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzay0+c2NoZWR1bGVGb3IoJmVsZW1lbnQpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggZTk3MWE5OWY3MDUyNGQ4MzE4MWFlNzE1
ZDgyNjU4ODExZmUwODgwOC4uODFmMTRkYzE3YmZhMDQ3NDdlM2QyM2U0NTNmNWU0YWY4ZDA5ZmQ4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJET01TdG9yYWdlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVk
UGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGIzN2E1NjBjZTgwNzY4YzY2NDQwODUx
NWZiMDU1MTI2MTY1YmVkODIuLjM1OGE4NTY1MTJlYTRkNzE5NjMzMmEyMDY5OTBkZTMyNTAwNDEw
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudDo6ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIAog
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChXZWJBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRhdGFiYXNlIl9zLCBj
b250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpEYXRh
YmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcAppbmRleCBlMWUwODJlNDFhZDJkNTI0ZjU3ZWYxMDY0MDI4ODc2MTE1NjgyNGI5
Li5iNTk4MmNlZTM3ZTM3NDQ3MDUzOTQ2YmNmNGM0MzRiNDMxZWY5YTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoV2ViQWdl
bnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJMYXllclRyZWUi
X3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQog
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9y
eUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwCmluZGV4IDI5Yzc2ZDBjN2ZlYTkyMmMyYTNkOTk0MTRjOTg2ZWE4ZDI4ZDc3
YjUuLjI4MzI5NTFmNTM4MDEyMWZhNDUyYmZhOGQ0NzBmNGQzNWU3ODliMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIElu
c3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChQYWdlQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJNZW1vcnkiX3MsIGNvbnRleHQp
Ci0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6
TWVtb3J5RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpNZW1vcnlGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3I6Ok1lbW9yeUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXgg
M2U0ZTk2ZWIyMzFhMDU0YjIxMjEyNDdiYzJjYjA5MTY1ZjAyNjViMy4uNWQwODE2MzgwY2RjNjZj
N2Q3OTYwYzEyZDM0OGEwZmJmM2Y3YjExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTcyLDEw
ICsxNzIsMTAgQEAgY2xhc3MgSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKIAogSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKCJOZXR3b3JrIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERp
c3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX3Jlc291cmNlc0RhdGEoc3RkOjptYWtlX3VuaXF1
ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKKyAgICAsIG1fcmVzb3VyY2VzRGF0YShtYWtlVW5p
cXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMzI5
ZTFiMGM1YWQ5MmZiNDUxZGYxNzY3MzNhZTJhZTM1OGZiNDkzNy4uYzY0MWE2YTA0ODQxOTMyNjhl
MjllOTBmZjAxMjZhYjkxMWM5MzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzMzLDcgKzMzMyw3IEBA
IERvY3VtZW50TG9hZGVyKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2VydERvY3VtZW50TG9hZGVy
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAKIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9y
UGFnZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckNsaWVudCogY2xp
ZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KCJQYWdlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAg
ICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0
ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCmluZGV4IDNhMzYxZTkxZTZmMmRlYjAwNDJlMThhN2M2NGM3YjUxNmY5
YjgwYzUuLjMwZDg2Yzc0NjNjNDdmNWIzYWQyYjM4Y2Y1ZGUyNDlkNDRlYjlhNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgQ0ZSdW5Mb29wUmVmIGN1cnJl
bnRSdW5Mb29wKCkKIAogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KCJUaW1lbGluZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlRpbWVsaW5lQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkK
ICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CkBAIC0xOTMs
NyArMTkzLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNv
bnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgLy8gRklYTUU6IEFic3RyYWN0IGF3YXkg
cGxhdGZvcm0tc3BlY2lmaWMgY29kZSBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDI3NDggaXMgZml4ZWQuCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBt
X2ZyYW1lU3RhcnRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihz
dGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRl
cnM6Okluc3BlY3RvckZyYW1lQmVnaW4pLCBbdGhpc10oKSB7CisgICAgbV9mcmFtZVN0YXJ0T2Jz
ZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4o
UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUJl
Z2luKSwgW3RoaXNdKCkgewogICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9ubWVu
dC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFs
U3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKICAgICAgICAgbV9ydW5Mb29wTmVz
dGluZ0xldmVsKys7CiAgICAgfSk7CiAKLSAgICBtX2ZyYW1lU3RvcE9ic2VydmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BP
YnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVFbmQpLCBbdGhp
c10oKSB7CisgICAgbV9mcmFtZVN0b3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2Vy
dmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxv
b3BPcmRlcnM6Okluc3BlY3RvckZyYW1lRW5kKSwgW3RoaXNdKCkgewogICAgICAgICBpZiAoIW1f
dHJhY2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZwogICAgICAgICAgICAgICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVB
Z2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgewogICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3Ig
bG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxl
LmlzRW1wdHkoKSA/ICJVbm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3Ry
aW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAg
ICAgICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICAg
ICAgICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlBy
b2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0zMTYsNyArMzE2
LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBj
b25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2Fs
aXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8g
cHJvZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBk
b2VzIG5vdCBleGlzdCIpOwotICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNv
bGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fy
bmluZykpOworICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvcldvcmtlckFnZW50LmNwcAppbmRleCA5MTYxZDg0M2NkMzhlNGQ5NjYxMjZhY2RkMzZlODNk
ZDE4ZjUxMDAyLi4xZTM5OGVkZDFhOWVhM2VmMjZiZTA5ZWMwM2Q2YzZjMmNkMzk4ZGU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvcldv
cmtlckFnZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoUGFnZUFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiV29ya2VyIl9zLCBj
b250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6V29ya2Vy
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdlKGNvbnRleHQu
aW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCAyZWVkMWNlNjBiMzAyMmFkOTgyNGZhNjI4YTM1
ZGRjNTQ0NDk2MGQ5Li5jMjA5NGI5OTJkMzU0MTYwZjE3ZWUyOGY2NDEwYTc5M2RjZGU5ZjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdl
bnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QKIAogICAgIGlm
IChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkgewogICAgICAgICBTdHJpbmcgbWVz
c2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJl
c3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICIg
KCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCksICcpJyk7Ci0gICAgICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwg
cmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVy
KSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVs
OjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxwdHIs
IHJlcXVlc3RJZGVudGlmaWVyKSk7CiAgICAgfQogfQogCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
V2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBSZXNvCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKGVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkpOwogICAgIH0KIAotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjpt
YWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2Fn
ZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpLCBlcnJv
ci5mYWlsaW5nVVJMKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNz
YWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVz
dElkZW50aWZpZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCmluZGV4IGJiNWQxYmVj
NmM2MzIyMzliZWU2NDYzNDM3YWVmZWQxMmJhNDcxZDUuLjA5Y2I2ZjQ2NjZhYjRjOTFjYmVlMmQw
ZmNmZGQ0YmE2YTYxYTEzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvV2ViSGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL1dlYkhlYXBBZ2VudC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgc3RydWN0IEdhcmJhZ2VDb2xs
ZWN0aW9uRGF0YSB7CiB9OwogCiBjbGFzcyBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNr
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTZW5kR2FyYmFn
ZUNvbGxlY3Rpb25FdmVudHNUYXNrKFdlYkhlYXBBZ2VudCYpOwogICAgIHZvaWQgYWRkR2FyYmFn
ZUNvbGxlY3Rpb24oR2FyYmFnZUNvbGxlY3Rpb25EYXRhJiYpOwpAQCAtOTYsNyArOTcsNyBAQCB2
b2lkIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s6OnRpbWVyRmlyZWQoKQogV2ViSGVh
cEFnZW50OjpXZWJIZWFwQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5z
cGVjdG9ySGVhcEFnZW50KGNvbnRleHQpCiAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29u
dGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICwgbV9zZW5kR2FyYmFnZUNvbGxlY3Rpb25F
dmVudHNUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFz
az4oKnRoaXMpKQorICAgICwgbV9zZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKG1ha2VV
bmlxdWU8U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzaz4oKnRoaXMpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRp
bWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1
bnRpbWVBZ2VudC5jcHAKaW5kZXggNWVhZmI2YTMyODQ2ZTcwMDE1M2FjODI2ODFiN2JlNTBkM2Fm
ZTQ4Yy4uODk4NWJjOTQ1ZmU3NWUwZTg1MWEzNmRlMzU4NGFiMDQ3MWMwZmRmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGlt
ZUFnZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiBQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRl
bmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5z
cGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmlu
c3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBiMjBjYmJjOTUwNzAyODEx
YjY1ODlhYzFkZmJkNTczMzkxOTNkMzM3Li44MDgyZWUzMWVlYzYwYTJmNjAzMjlkYmFiZDRkOTg0
MmY2YTU1ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtNTAsNyArNTAsNyBA
QCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2VudCgpID0gZGVmYXVsdDsK
IAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEV4ZWNTdGF0
ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3dvcmtlckdsb2JhbFNj
b3BlLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVz
c2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSkpKTsKKyAgICBtX3dvcmtlckdsb2Jh
bFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSkpKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQg
V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCBiZDlkNGNhZGVmYjJmYWExZjJlMGIyNTc5NTVhZDUx
MjRlMTc5NGVlLi4xZjNmYWJhMzEyNmYyZTliMzZiODRkMTNlNzNiZjFmZGEzMTc1NDI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBM
YXlvdXRTdGF0ZTo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IEJveCYgbGF5
b3V0Um9vdCkKIERpc3BsYXk6OkJveCYgTGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgcmV0dXJuICptX2xheW91dFRv
RGlzcGxheUJveC5lbnN1cmUoJmxheW91dEJveCwgWyZsYXlvdXRCb3hdIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5bGUoKSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXk6OkJveD4obGF5b3V0Qm94LnN0eWxlKCkp
OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMTQwLDEzICsxNDAsMTMgQEAgRm9y
bWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0
dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgICAgIC8vIHNob3VsZCBub3QgaW50ZXJmZXJl
IHdpdGggdGhlIGNvbnRlbnQgaW5zaWRlLgogICAgICAgICAgICAgLy8gPGRpdiBzdHlsZT0iZmxv
YXQ6IGxlZnQiPjwvZGl2PjxkaXYgc3R5bGU9Im92ZXJmbG93OiBoaWRkZW4iPiA8LSBpcyBhIG5v
bi1pbnRydXNpdmUgZmxvYXQsIGJlY2F1c2Ugb3ZlcmZsb3c6IGhpZGRlbiB0cmlnZ2VycyBuZXcg
YmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LjwvZGl2PgogICAgICAgICAgICAgaWYgKGZvcm1hdHRp
bmdSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRp
bmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5n
U3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAKICAgICAgICAg
ICAgIC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBpbmhlcml0cyB0aGUgZmxv
YXRzIGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCiAgICAgICAgICAgICAvLyBG
aW5kIHRoZSBmb3JtYXR0aW5nIHN0YXRlIGluIHdoaWNoIHRoaXMgZm9ybWF0dGluZyByb290IGxp
dmVzLCBub3QgdGhlIG9uZSBpdCBjcmVhdGVzIGFuZCB1c2UgaXRzIGZsb2F0aW5nIHN0YXRlLgog
ICAgICAgICAgICAgYXV0byYgcGFyZW50Rm9ybWF0dGluZ1N0YXRlID0gY3JlYXRlRm9ybWF0dGlu
Z1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nUm9vdC5mb3JtYXR0aW5n
Q29udGV4dFJvb3QoKSk7IAogICAgICAgICAgICAgYXV0byYgcGFyZW50RmxvYXRpbmdTdGF0ZSA9
IHBhcmVudEZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCk7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5n
U3RhdGUsICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1h
dHRpbmdTdGF0ZT4ocGFyZW50RmxvYXRpbmdTdGF0ZSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNTQsNyArMTU0LDcgQEAgRm9ybWF0dGluZ1N0YXRl
JiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5l
ZWRlZChjb24KICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3Jt
YXR0aW5nUm9vdCwgWyZdIHsKIAogICAgICAgICAgICAgLy8gQmxvY2sgZm9ybWF0dGluZyBjb250
ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZS4KLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0
YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNy
ZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9y
LT52YWx1ZTsKICAgICB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExh
eW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVk
KGNvbgogICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRp
bmdSb290LCBbJl0gewogCiAgICAgICAgICAgICAvLyBUYWJsZSBmb3JtYXR0aW5nIGNvbnRleHQg
YWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0aW5nIHN0YXRlIC1hbmQgaXQgc3RheXMgZW1w
dHkuCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUYWJsZUZvcm1hdHRpbmdT
dGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlz
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRhYmxlRm9ybWF0dGluZ1N0YXRlPihG
bG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogICAg
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNzQsMTggKzE3NCwxOCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+IExheW91dFN0YXRlOjpjcmVhdGVGb3Jt
YXR0aW5nQ29udGV4dChjb25zdCBCbwogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRl
eHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBh
dXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0
dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGlubGluZUZvcm1hdHRp
bmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250
ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAg
fQogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQoKSkgewogICAgICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVz
dGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dE9ubHkoKSk7CiAgICAgICAgIGF1dG8mIGJs
b2NrRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGNyZWF0
ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRl
eHRSb290KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgYmxvY2tGb3JtYXR0aW5nU3RhdGUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBpZiAo
Zm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgp
KSB7CiAgICAgICAgIGF1dG8mIHRhYmxlRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8VGFibGVG
b3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZO
ZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdGFi
bGVGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1h
dHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9ybWF0dGluZ1N0YXRl
KTsKICAgICB9CiAKICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UnVuLmgKaW5kZXggN2FlM2I0MDlkNzYxMTZmMmU5ZDEzY2MzMWViNmU1
NjA2M2IxMDc2Zi4uNzk5MTYyNzU3NDAxODNmMzUzZjVhZmQ1YjE1MjJlNTY1M2ZjODk0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCkBAIC0z
Niw3ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKIAog
c3RydWN0IFJ1biB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0
cnVjdCBUZXh0Q29udGV4dCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHRDb250ZXh0KHVuc2lnbmVkIHBvc2l0aW9uLCB1
bnNpZ25lZCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5k
ZXggYTFjZDZkNmYxYjdlYjkwZmNjNzkwNWUzMWU5ZjA0ZmUzYmY4MjYwYi4uNTA4ZDY2MTI5ZDE0
ODdjNGU4NDQwOTM5M2RhMzM0MDkxOWVhN2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgIGlmICghdHJlYXRB
c0lubGluZUNvbnRhaW5lcihsYXlvdXRCb3gpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYW4gaW5saW5lIGNvbnRhaW5lciAoZS5n
LiA8c3Bhbj4pLgotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNv
bnRhaW5lclN0YXJ0KSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRl
bShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29u
dGFpbmVyU3RhcnQpKTsKICAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5lciA9IGRvd25jYXN0PENv
bnRhaW5lcj4obGF5b3V0Qm94KTsKICAgICAgICAgICAgIGlmICghY29udGFpbmVyLmhhc0luRmxv
d09yRmxvYXRpbmdDaGlsZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjkyLDE3ICsy
OTIsMTcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRl
bnQoKSBjb25zdAogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gKmxheW91dFF1ZXVlLnRh
a2VMYXN0KCk7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBlbmQgb2YgYW4gaW5saW5lIGNv
bnRhaW5lciAoZS5nLiA8L3NwYW4+KS4KICAgICAgICAgICAgIGlmICh0cmVhdEFzSW5saW5lQ29u
dGFpbmVyKGxheW91dEJveCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElu
bGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0
ZW06OlR5cGU6OkNvbnRhaW5lckVuZCkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJ
dGVtOjpUeXBlOjpDb250YWluZXJFbmQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJv
eC5pc0xpbmVCcmVha0JveCgpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJ
bmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJ
dGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGlu
ZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWspKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheW91
dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdT
dGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94
LCBJbmxpbmVJdGVtOjpUeXBlOjpGbG9hdCkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdT
dGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxp
bmVJdGVtOjpUeXBlOjpGbG9hdCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGxheW91dEJveC5pc0lubGluZUxldmVsQm94KCkpOwogICAgICAgICAgICAgICAg
IGlmIChsYXlvdXRCb3guaGFzVGV4dENvbnRlbnQoKSkKICAgICAgICAgICAgICAgICAgICAgSW5s
aW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhmb3JtYXR0aW5nU3RhdGUuaW5s
aW5lSXRlbXMoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8
SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpCb3gpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxp
bmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkJveCkpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBsYXlvdXRCb3gubmV4dElu
Rmxvd09yRmxvYXRpbmdTaWJsaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCmluZGV4IGY3NDFkZTQ4OWU5NDI0NjFkNzY5MmUyZTQw
NDE1OTM4M2IwYzgxNjAuLjBhMjEzMDIxM2YxMjRlZWI1ZjdmNzExMmU4ODZkNzEyYzUzMWRhMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNw
cApAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGlu
ZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAgICAg
ICBkaXNwbGF5Qm94LnNldFRvcExlZnQobG9naWNhbFJlY3QudG9wTGVmdCgpKTsKICAgICAgICAg
ICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGxvZ2ljYWxSZWN0LndpZHRoKCkpOwog
ICAgICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGxvZ2ljYWxSZWN0Lmhl
aWdodCgpKTsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjpt
YWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CisgICAgICAgICAgICBmb3Jt
YXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2Fs
UmVjdCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDA3LDcgKzQw
Nyw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRl
RGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAgICAgICAgICAgdG9wTGVmdCAr
PSBHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGxheW91dFN0YXRlKCks
IGxheW91dEJveCk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQodG9wTGVmdCk7
CiAgICAgICAgICAgICBsaW5lQm94UmVjdC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qu
d2lkdGgoKSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6
bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOworICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNh
bFJlY3QpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0
NDIsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0
ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgYXV0byBwcmV2aW91
c1J1bkNhbkJlRXh0ZW5kZWQgPSBwcmV2aW91c0xpbmVSdW4gJiYgcHJldmlvdXNMaW5lUnVuLT50
ZXh0Q29udGV4dCgpID8gcHJldmlvdXNMaW5lUnVuLT50ZXh0Q29udGV4dCgpLT5jYW5CZUV4dGVu
ZGVkIDogZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHJlcXVpcmVzTmV3UnVuID0gIWluZGV4IHx8
ICFwcmV2aW91c1J1bkNhbkJlRXh0ZW5kZWQgfHwgJmxheW91dEJveCAhPSAmcHJldmlvdXNMaW5l
UnVuLT5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGlmIChyZXF1aXJlc05ld1J1bikKLSAgICAg
ICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8
RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCwgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IHRl
eHRDb250ZXh0LT5zdGFydCwgdGV4dENvbnRleHQtPmxlbmd0aCB9KSk7CisgICAgICAgICAgICAg
ICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4o
bG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29udGV4dC0+c3Rh
cnQsIHRleHRDb250ZXh0LT5sZW5ndGggfSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgYXV0byYgbGFzdERpc3BsYXlSdW4gPSBmb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVu
cygpLmxhc3QoKTsKICAgICAgICAgICAgICAgICBsYXN0RGlzcGxheVJ1bi0+ZXhwYW5kSG9yaXpv
bnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCmluZGV4IGIwMDEzYjZlZDU2M2JjYmY4
MjgxMzkxMzQxZjJkZDU2MTVlYzUzZWYuLjc5MDYxOTY4MWU2NzUyZDI4NzI0OTM4NjIyZTNhNzRi
ZTAzM2ZmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVJdGVtLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUl0ZW0gOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8SW5saW5lSXRlbT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFRleHQsIEhhcmRMaW5lQnJlYWssIEJveCwgRmxvYXQs
IENvbnRhaW5lclN0YXJ0LCBDb250YWluZXJFbmQgfTsKICAgICBJbmxpbmVJdGVtKGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKaW5kZXggNGYyMGE2ZmYxZDcwY2UzNDliZGUw
ZWJlZGZlOGY4MGEzNWU4NWEyOC4uZWQ2NTIwNWI3ZGI5OWIwZjZhYjEwZjNlZWVhYTA3YzQ0NmI3
ZjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lTGluZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgTGluZTo6Q29udGVudDo6UnVuOjpS
dW4oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgVGV4dENvbnRleHQmIHRleHRD
b24KIAogTGluZTo6TGluZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IElu
aXRpYWxDb25zdHJhaW50cyYgaW5pdGlhbENvbnN0cmFpbnRzLCBTa2lwVmVydGljYWxBbGlnbWVu
dCBza2lwVmVydGljYWxBbGlnbWVudCkKICAgICA6IG1fbGF5b3V0U3RhdGUobGF5b3V0U3RhdGUp
Ci0gICAgLCBtX2NvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxMaW5lOjpDb250ZW50PigpKQorICAg
ICwgbV9jb250ZW50KG1ha2VVbmlxdWU8TGluZTo6Q29udGVudD4oKSkKICAgICAsIG1fbG9naWNh
bFRvcExlZnQoaW5pdGlhbENvbnN0cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0KQogICAgICwgbV9iYXNl
bGluZSh7IGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5iYXNlbGluZU9mZnNl
dCwgaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmhlaWdodCAtIGluaXRpYWxD
b25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5iYXNlbGluZU9mZnNldCB9KQogICAgICwgbV9p
bml0aWFsU3RydXQoaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLnN0cnV0KQpA
QCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlu
bGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNhbFdpZHRoKQogCiB2b2lkIExpbmU6OmFwcGVuZE5v
bkJyZWFrYWJsZVNwYWNlKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IERpc3Bs
YXk6OlJlY3QmIGxvZ2ljYWxSZWN0KQogewotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsK
KyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlu
bGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiAgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IGxv
Z2ljYWxSZWN0LndpZHRoKCk7CiB9CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIExpbmU6OmFw
cGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRV
bml0IGxvZ2ljYQogICAgIH0KIAogICAgIGF1dG8gdGV4dENvbnRleHQgPSBDb250ZW50OjpSdW46
OlRleHRDb250ZXh0IHsgaW5saW5lSXRlbS5zdGFydCgpLCBpbmxpbmVJdGVtLmlzQ29sbGFwc2Vk
KCkgPyAxIDogaW5saW5lSXRlbS5sZW5ndGgoKSwgaXNDb21wbGV0ZWx5Q29sbGFwc2VkLCBpbmxp
bmVJdGVtLmlzV2hpdGVzcGFjZSgpLCBjYW5CZUV4dGVuZGVkIH07Ci0gICAgYXV0byBsaW5lSXRl
bSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCB0ZXh0Q29udGV4
dCwgbG9naWNhbFJlY3QpOworICAgIGF1dG8gbGluZUl0ZW0gPSBtYWtlVW5pcXVlPENvbnRlbnQ6
OlJ1bj4oaW5saW5lSXRlbSwgdGV4dENvbnRleHQsIGxvZ2ljYWxSZWN0KTsKICAgICBpZiAoaXNU
cmltbWFibGUgJiYgIWlzQ29tcGxldGVseUNvbGxhcHNlZCkKICAgICAgICAgbV90cmltbWFibGVD
b250ZW50LmFkZChsaW5lSXRlbS5nZXQoKSk7CiAKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIExp
bmU6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0sIExheW91dFVuaXQgbAogICAgICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQoaW5saW5lSXRl
bUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSkpOwogICAgIH0KIAotICAgIG1fY29udGVudC0+cnVu
cygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9n
aWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250
ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiAgICAgbV9jb250ZW50TG9naWNh
bFdpZHRoICs9IChsb2dpY2FsV2lkdGggKyBob3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgaG9yaXpv
bnRhbE1hcmdpbi5lbmQpOwogICAgIG1fdHJpbW1hYmxlQ29udGVudC5jbGVhcigpOwogfQpAQCAt
MzIzLDcgKzMyMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayhjb25zdCBJbmxp
bmVJdGVtJiBpbmxpbmVJdGVtKQogICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQo
aW5saW5lSXRlbSwgeyB9KTsKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxI
ZWlnaHQoKSk7CiAgICAgfQotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2Nv
bnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0s
IGxvZ2ljYWxSZWN0KSk7CiB9CiAKIHZvaWQgTGluZTo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVp
Z2h0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgcnVuSGVpZ2h0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZS5oCmluZGV4IGZhZjA1NDc1M2QzNzIyYWJjMDFkOGE3M2Y0Nzk5MzQ5YmNiMWFhMTEuLjczN2Ew
N2IwMzJhZjZmZjExOTkwOTZmN2EzNzU3NTdlNmRhOWYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKQEAgLTUyLDggKzUy
LDEwIEBAIGNsYXNzIExpbmUgewogICAgIExpbmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBJ
bml0aWFsQ29uc3RyYWludHMmLCBTa2lwVmVydGljYWxBbGlnbWVudCk7CiAKICAgICBjbGFzcyBD
b250ZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgog
ICAgICAgICBzdHJ1Y3QgUnVuIHsKKyAgICAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgICAgIHN0cnVjdCBUZXh0Q29udGV4dCB7CiAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgc3RhcnQgeyAwIH07CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lVGV4dEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCmluZGV4IGYxMzA4OWE3MDhmM2ZlM2ZmOWI3N2Y3MjA5
NmNkYTQyZWYzNmUyMjIuLjVlNmMyNTZkYjBiMzA5YWFmMWUyNTgyMWYwZTFlMThlNTY0NTJmMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZVRleHRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVUZXh0SXRlbS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBJbmxpbmVUZXh0SXRl
bTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBj
b25zdAogewogICAgIGF1dG8gdGV4dCA9IGlubGluZUJveC50ZXh0Q29udGVudCgpOwogICAgIGlm
ICghdGV4dC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgMCwgMCwgZmFsc2UsIGZh
bHNlKSk7CisgICAgICAgIHJldHVybiBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElu
bGluZVRleHRJdGVtPihpbmxpbmVCb3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgYXV0
byYgc3R5bGUgPSBpbmxpbmVCb3guc3R5bGUoKTsKICAgICBhdXRvIHByZXNlcnZlTmV3bGluZSA9
IHN0eWxlLnByZXNlcnZlTmV3bGluZSgpOwpAQCAtOTksMjAgKzk5LDIwIEBAIHZvaWQgSW5saW5l
VGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29u
dGVudCwgY29uc3QKICAgICB3aGlsZSAoY3VycmVudFBvc2l0aW9uIDwgdGV4dC5sZW5ndGgoKSkg
ewogICAgICAgICAvLyBTb2Z0IGxpbmVicmVhaz8KICAgICAgICAgaWYgKGlzU29mdExpbmVCcmVh
ayh0ZXh0W2N1cnJlbnRQb3NpdGlvbl0sIHByZXNlcnZlTmV3bGluZSkpIHsKLSAgICAgICAgICAg
IGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlu
bGluZUJveCwgY3VycmVudFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOworICAgICAgICAgICAg
aW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94
LCBjdXJyZW50UG9zaXRpb24sIDEsIHRydWUsIGZhbHNlKSk7CiAgICAgICAgICAgICArK2N1cnJl
bnRQb3NpdGlvbjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChpc1doaXRlc3BhY2VDaGFyYWN0ZXIodGV4dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5l
d2xpbmUpKSB7CiAgICAgICAgICAgICBhdXRvIGxlbmd0aCA9IG1vdmVUb05leHROb25XaGl0ZXNw
YWNlUG9zaXRpb24odGV4dCwgY3VycmVudFBvc2l0aW9uLCBwcmVzZXJ2ZU5ld2xpbmUpOwogICAg
ICAgICAgICAgYXV0byBpc0NvbGxhcHNlZCA9IGNvbGxhcHNlV2hpdGVTcGFjZSAmJiBsZW5ndGgg
PiAxOwotICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgdHJ1ZSwg
aXNDb2xsYXBzZWQpKTsKKyAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlx
dWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIHRy
dWUsIGlzQ29sbGFwc2VkKSk7CiAgICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gbGVuZ3Ro
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGxlbmd0
aCA9IG1vdmVUb05leHRCcmVha2FibGVQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVCcmVh
a0l0ZXJhdG9yLCBzdHlsZSk7Ci0gICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5n
dGgsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5p
cXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBm
YWxzZSwgZmFsc2UpKTsKICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICB9
CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRJdGVtPiBJ
bmxpbmVUZXh0SXRlbTo6c3BsaXQodW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgdW4KIHsKICAgICBS
RUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0aW9uID49IHRoaXMtPnN0YXJ0KCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKHNwbGl0UG9zaXRpb24gKyBsZW5ndGggPD0gZW5kKCkpOwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwgc3BsaXRQb3NpdGlv
biwgbGVuZ3RoLCBpc1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGxheW91dEJveCgpLCBzcGxpdFBvc2l0aW9uLCBsZW5n
dGgsIGlzV2hpdGVzcGFjZSgpLCBpc0NvbGxhcHNlZCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKaW5kZXggODA4NGUyYmI2OWU4
YzkyYWFhOWI3YmU2ZDhhMTRiNzc5NTI5MTIwMy4uM2JhZjllYWExZmJhOTJjNzBmNGM2YzczMjk1
YjEzOGIzMWJjNWI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3guY3BwCkBAIC00NSw3ICs0NSw3IEBAIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRB
dHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsCiAg
ICAgLCBtX2hhc1JhcmVEYXRhKGZhbHNlKQogewogICAgIGlmIChpc1JlcGxhY2VkKCkpCi0gICAg
ICAgIGVuc3VyZVJhcmVEYXRhKCkucmVwbGFjZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2Vk
PigqdGhpcyk7CisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkucmVwbGFjZWQgPSBtYWtlVW5pcXVl
PFJlcGxhY2VkPigqdGhpcyk7CiB9CiAKIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1
dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQpAQCAtNDQ3LDcgKzQ0Nyw3IEBA
IGNvbnN0IEJveDo6Qm94UmFyZURhdGEmIEJveDo6cmFyZURhdGEoKSBjb25zdAogQm94OjpCb3hS
YXJlRGF0YSYgQm94OjplbnN1cmVSYXJlRGF0YSgpCiB7CiAgICAgc2V0SGFzUmFyZURhdGEodHJ1
ZSk7Ci0gICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmVuc3VyZSh0aGlzLCBbXSB7IHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJveFJhcmVEYXRhPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAg
cmV0dXJuICpyYXJlRGF0YU1hcCgpLmVuc3VyZSh0aGlzLCBbXSB7IHJldHVybiBtYWtlVW5pcXVl
PEJveFJhcmVEYXRhPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgQm94OjpyZW1v
dmVSYXJlRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggYWIyODRlYTA5OWI4ZmEzZmZhNzI3NGUwNmU0
Y2VjY2FmODQ3NDMwNy4uZjJhZmNhYmQwYTM4MWM2ZDVjOGRhMzlkMzQ2ZTFhZWEzM2Q0N2IyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcApAQCAtMTMwLDI1ICsxMzAsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4g
VHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRS
ZW4KICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikpIHsKICAgICAgICAgLy8g
RklYTUU6IENsZWFybHkgdGhlcmUgbXVzdCBiZSBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhpcy4K
ICAgICAgICAgaWYgKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlU
eXBlOjpJbmxpbmUpCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlx
dWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQo
KSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+
KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50
UmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJl
bmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxl
V2l0aERpc3BsYXkocGFyZW50UmVuZGVyZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkp
OworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZG93bmNhc3Q8
UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERp
c3BsYXlUeXBlOjpJbmxpbmUpKTsKICAgICAgICAgcmV0dXJuIGNoaWxkTGF5b3V0Qm94OwogICAg
IH0KIAogICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGRS
ZW5kZXJlcik7CiAgICAgYXV0byBkaXNwbGF5VHlwZSA9IHJlbmRlcmVyLnN0eWxlKCkuZGlzcGxh
eSgpOwogICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xv
bmUocmVuZGVyZXIuc3R5bGUoKSkpOwogCiAgICAgaWYgKGlzPFJlbmRlclRhYmxlPihyZW5kZXJl
cikpIHsKICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBwcmluY2lwYWwgdGFibGUgd3JhcHBlciBi
b3ggKGFuZCBub3QgdGhlIHRhYmxlIGJveCBpdHNlbGYpLgotICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsg
Qm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShy
ZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxD
b250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJs
ZVdyYXBwZXJCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAg
ICB9IGVsc2UgaWYgKGlzPFJlbmRlclJlcGxhY2VkPihyZW5kZXJlcikpIHsKICAgICAgICAgaWYg
KGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpCbG9jaykKLSAgICAgICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVy
KSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNo
aWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVy
KSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUo
KSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUo
KSkpOwogICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgeWV0IHN1cHBvcnQgYWxsIHJlcGxhY2Vk
IGVsZW1lbnRzIGFuZCB0aGlzIGlzIHRlbXBvcmFyeSBhbnl3YXkuCiAgICAgICAgIGlmIChjaGls
ZExheW91dEJveC0+cmVwbGFjZWQoKSkKICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5yZXBs
YWNlZCgpLT5zZXRJbnRyaW5zaWNTaXplKGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihyZW5kZXJl
cikuaW50cmluc2ljU2l6ZSgpKTsKQEAgLTE2MywxOCArMTYzLDE4IEBAIHN0ZDo6dW5pcXVlX3B0
cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVuZGVyRWxlbWVudCYg
cGFyZW50UmVuCiAgICAgICAgICAgICAgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9u
ZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VG9wKHsg
b2Zmc2V0LT5oZWlnaHQoKSwgRml4ZWQgfSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldExl
ZnQoeyBvZmZzZXQtPndpZHRoKCksIEZpeGVkIH0pOwotICAgICAgICAgICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJl
bmRlcmVyKSwgV1RGTW92ZSgqc3R5bGUpKTsKKyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdU
Rk1vdmUoKnN0eWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjaGls
ZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAg
ICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUo
KSkpOwogICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxp
bmUpCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFp
bmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8
Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9u
ZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERp
c3BsYXlUeXBlOjpJbmxpbmVCbG9jaykKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVu
ZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVy
KSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZSBp
ZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbiB8fCBkaXNwbGF5VHlw
ZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJl
ciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhy
ZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXAgfHwg
ZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXAgfHwgZGlzcGxheVR5
cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXAKICAgICAgICAgICAgIHx8IGRpc3Bs
YXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZVJvdyB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5
VHlwZTo6VGFibGVDb2x1bW5Hcm91cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVDb2x1bW4pIHsKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFr
ZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5
bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAgICAgICByZXR1cm4geyB9
OwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OmNyZWF0ZVRhYmxlU3RydWN0
dXJlKGNvbnN0IFJlbmRlclRhYmxlJiB0YWJsZVJlbmRlcmVyLCBDb250YWluCiAgICAgICAgIHRh
YmxlQ2hpbGQgPSB0YWJsZUNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0KIAotICAgIGF1dG8g
dGFibGVCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmli
dXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZSh0
YWJsZVJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICBhdXRvIHRhYmxlQm94ID0gbWFrZVVuaXF1ZTxD
b250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJs
ZUJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAg
YXBwZW5kQ2hpbGQodGFibGVXcmFwcGVyQm94LCAqdGFibGVCb3gpOwogICAgIHdoaWxlICh0YWJs
ZUNoaWxkKSB7CiAgICAgICAgIFRyZWVCdWlsZGVyOjpjcmVhdGVTdWJUcmVlKGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KCp0YWJsZUNoaWxkKSwgKnRhYmxlQm94KTsKQEAgLTM2MSw3ICszNjEsNyBA
QCB2b2lkIHByaW50TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVudHMoKQogICAgICAgICAvLyBGSVhN
RTogTmVlZCB0byBmaW5kIGEgd2F5IHRvIG91dHB1dCBnZW9tZXRyeSB3aXRob3V0IGxheW91dCBj
b250ZXh0LgogICAgICAgICBhdXRvJiByZW5kZXJWaWV3ID0gKmRvY3VtZW50LT5yZW5kZXJWaWV3
KCk7CiAgICAgICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9jayA9IFRyZWVCdWlsZGVyOjpj
cmVhdGVMYXlvdXRUcmVlKHJlbmRlclZpZXcpOwotICAgICAgICBhdXRvIGxheW91dFN0YXRlID0g
c3RkOjptYWtlX3VuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdC
bG9jayk7CisgICAgICAgIGF1dG8gbGF5b3V0U3RhdGUgPSBtYWtlVW5pcXVlPExheW91dDo6TGF5
b3V0U3RhdGU+KCppbml0aWFsQ29udGFpbmluZ0Jsb2NrKTsKICAgICAgICAgbGF5b3V0U3RhdGUt
PnNldFF1aXJrc01vZGUocmVuZGVyVmlldy5kb2N1bWVudCgpLmluTGltaXRlZFF1aXJrc01vZGUo
KSA/IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpMaW1pdGVkIDogKHJlbmRlclZpZXcuZG9jdW1l
bnQoKS5pblF1aXJrc01vZGUoKSA/IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpZZXMgOiBMYXlv
dXRTdGF0ZTo6UXVpcmtzTW9kZTo6Tm8pKTsKICAgICAgICAgbGF5b3V0U3RhdGUtPnVwZGF0ZUxh
eW91dCgpOwogICAgICAgICBzaG93TGF5b3V0VHJlZSgqaW5pdGlhbENvbnRhaW5pbmdCbG9jaywg
bGF5b3V0U3RhdGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CmluZGV4IDUxZDc3ZTRhZjFkYmRkZjA0NWE5MmMxYzhhZDNiOTllYWNlYjk3YjUuLmI0OThhMjI0
YjE5MGM2Y2U4NDRlYjlkZDdlYjliN2ExMDVkNzZkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZShEb2N1bWVudExvYWRlciYgZG9jdW1lbnRM
b2EKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oV1RGTW92ZShmaWx0
ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRGaWx0
ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKIH0KIAogQ29udGVudEZpbHRl
cjo6Q29udGVudEZpbHRlcihDb250YWluZXImJiBjb250ZW50RmlsdGVycywgRG9jdW1lbnRMb2Fk
ZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBkMGQ1NGI5N2VhZTcyMDQyNmY5NjFjOGRhZTg5
NWUyMDM2OWNlZGNjLi5jNGNlNWY1NTIxNzBiM2NmYzhiODQxYjU5YTUxMGZkNzVhYTgzZmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgaWYg
KCFwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBzZWN1cml0eU9yaWdpbiwgZXJyb3JEZXNjcmlwdGlvbikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIGF1
dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRl
bT4oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogICAgIGlmICghcmVzdWx0LT5wYXJzZShyZXNw
b25zZSkKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QocmVxdWVz
dC5odHRwTWV0aG9kKCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlcnJvckRlc2NyaXB0aW9u
KQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09yaWdpbkhlYWRlcnMocmVxdWVzdC5o
dHRwSGVhZGVyRmllbGRzKCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlcnJvckRlc2NyaXB0
aW9uKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZGUw
OWU3MDM5OWNjNzQ3ZTg4NzM2OTc4MzcyNGU2ZGFhOWZjNzg4Yi4uMDQ1NWNhZmM1OWZmN2I2ZWEx
ZjlhMmNkMzkzMWE2OWU5ZjY5NDQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9h
ZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZUQKICAg
ICAsIG1fb3JpZ2luYWxTdWJzdGl0dXRlRGF0YVdhc1ZhbGlkKHN1YnN0aXR1dGVEYXRhLmlzVmFs
aWQoKSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lcigqdGhpcywgJkRv
Y3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpCiAgICAg
LCBtX2RhdGFMb2FkVGltZXIoKnRoaXMsICZEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0
ZURhdGFMb2FkTm93KQotICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChzdGQ6Om1ha2VfdW5p
cXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCisgICAgLCBtX2FwcGxpY2F0aW9uQ2Fj
aGVIb3N0KG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKSkKIHsKIH0KIApA
QCAtMTMzNiw3ICsxMzM2LDcgQEAgdWludDY0X3QgRG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNh
dGlvbk1hbmlmZXN0KCkKICAgICBpZiAobWFuaWZlc3RVUkwuaXNFbXB0eSgpIHx8ICFtYW5pZmVz
dFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXV0byBtYW5pZmVzdExv
YWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcj4oKnRoaXMs
IG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CisgICAgYXV0byBtYW5pZmVzdExvYWRlciA9
IG1ha2VVbmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcj4oKnRoaXMsIG1hbmlmZXN0VVJM
LCB1c2VDcmVkZW50aWFscyk7CiAgICAgYXV0byogcmF3TWFuaWZlc3RMb2FkZXIgPSBtYW5pZmVz
dExvYWRlci5nZXQoKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBuZXh0Q2FsbGJhY2tJRCsrOwog
ICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuc2V0KFdURk1vdmUobWFuaWZlc3RMb2Fk
ZXIpLCBjYWxsYmFja0lEKTsKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnNldEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYgYXJjaGl2ZSkKIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYgYXJjaGl2ZSkKIHsKICAgICBpZiAo
IW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigp
OworICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
LT5hZGRBbGxSZXNvdXJjZXMoYXJjaGl2ZSk7CiB9CiAKQEAgLTE0MzYsNyArMTQzNiw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYgYXJjaGl2
ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJl
c291cmNlPiYmIHJlc291cmNlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CisgICAgICAgIG1fYXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsK
ICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFkZFJlc291cmNlKFdURk1vdmUocmVz
b3VyY2UpKTsKIH0KIApAQCAtMTk2Myw3ICsxOTYzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICAvLyBJ
ZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBieSBjbGVhcmluZyBtX3JlcXVlc3QsIGl0J3MgcG9zc2li
bGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVIb3N0CiAgICAgICAgIC8vIGlzIG5vdyBpbiBhIHN0YXRl
IHdoZXJlIHN0YXJ0aW5nIGFuIGVtcHR5IGxvYWQgd2lsbCBiZSBpbmNvbnNpc3RlbnQuIFJlcGxh
Y2UgaXQgd2l0aAogICAgICAgICAvLyBhIG5ldyBBcHBsaWNhdGlvbkNhY2hlSG9zdC4KLSAgICAg
ICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25D
YWNoZUhvc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IG1ha2VV
bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsKICAgICAgICAgbWF5YmVMb2FkRW1w
dHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMjIsNyArMjEyMiw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwg
dWludDY0X3QgbG9hZElkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGlj
b25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7
CisgICAgYXV0byBpY29uTG9hZGVyID0gbWFrZVVuaXF1ZTxJY29uTG9hZGVyPigqdGhpcywgaWNv
bi51cmwpOwogICAgIGF1dG8qIHJhd0ljb25Mb2FkZXIgPSBpY29uTG9hZGVyLmdldCgpOwogICAg
IG1faWNvbkxvYWRlcnMuc2V0KFdURk1vdmUoaWNvbkxvYWRlciksIG5ld0NhbGxiYWNrSUQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGM0NTBjMDg3MGMwZGI5
MDAyYjkwNGM3YjZjYmNlNGM5NjkwMmM2ZGMuLmFjYTM0NTI5ODViNzMxMTliY2IyM2M0M2JhMjNl
ZWZiNzVhN2EzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC01
ODIsNyArNTgyLDcgQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1w
dHlDbGllbnRzKCkKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlQcm9ncmVzc1RyYWNr
ZXJDbGllbnQ+IGR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9ICZkdW1teVByb2dyZXNzVHJhY2tlckNsaWVudC5n
ZXQoKTsKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0
eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigpOwogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKHsg
fSwgeyB9KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gYWRvcHRS
ZWYoKm5ldyBFbXB0eURhdGFiYXNlUHJvdmlkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggZTBmNDYxNDhmMmRmYWE4N2Y2YjI0MjYzN2Q1MDg5MTg1MjBhNjBhMi4u
ODNiZWIyNzE3ZDMzN2MzNDFjMDE1ZWNmNDZkNGYzNzNlMDhiMTUzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNzAsMTAgKzI3MCwxMCBAQCBjbGFzcyBGcmFtZUxv
YWRlcjo6RnJhbWVQcm9ncmVzc1RyYWNrZXIgewogRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZy
YW1lJiBmcmFtZSwgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fZnJhbWUoZnJh
bWUpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3BvbGljeUNoZWNrZXIoc3RkOjpt
YWtlX3VuaXF1ZTxQb2xpY3lDaGVja2VyPihmcmFtZSkpCi0gICAgLCBtX2hpc3Rvcnkoc3RkOjpt
YWtlX3VuaXF1ZTxIaXN0b3J5Q29udHJvbGxlcj4oZnJhbWUpKQorICAgICwgbV9wb2xpY3lDaGVj
a2VyKG1ha2VVbmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQorICAgICwgbV9oaXN0b3J5KG1h
a2VVbmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAsIG1fbm90aWZpZXIoZnJh
bWUpCi0gICAgLCBtX3N1YmZyYW1lTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8U3ViZnJhbWVMb2Fk
ZXI+KGZyYW1lKSkKKyAgICAsIG1fc3ViZnJhbWVMb2FkZXIobWFrZVVuaXF1ZTxTdWJmcmFtZUxv
YWRlcj4oZnJhbWUpKQogICAgICwgbV9taXhlZENvbnRlbnRDaGVja2VyKGZyYW1lKQogICAgICwg
bV9zdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAgLCBtX2xvYWRUeXBlKEZyYW1lTG9h
ZFR5cGU6OlN0YW5kYXJkKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omlu
aXQoKQogICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxvYWRlclN0YXRlTWFjaGlu
ZTo6RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KTsKIAogICAgIG1fbmV0d29ya2luZ0Nv
bnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwotICAgIG1fcHJvZ3Jl
c3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFt
ZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFj
a2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVk
RG9jdW1lbnQoY29uc3QgVVJMJikKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQogICAgIG1fbmVlZHNDbGVh
ciA9IHRydWU7CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0gbV9jbGllbnQuY3JlYXRlTmV0
d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNzVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOworICAgIG1fcHJvZ3Jlc3NUcmFja2Vy
ID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CiB9CiAKIHZvaWQg
RnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCkBAIC0yNjc4LDcgKzI2
NzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbigpCiAgICAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NpbmctdGhlLXdlYi5odG1sI25h
dmlnYXRlCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdmlnYXRpb25EaXNhYmxlcj4gbmF2aWdhdGlv
bkRpc2FibGVyOwogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIG5hdmln
YXRpb25EaXNhYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdGlvbkRpc2FibGVyPigmbV9m
cmFtZSk7CisgICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9IG1ha2VVbmlxdWU8TmF2aWdhdGlv
bkRpc2FibGVyPigmbV9mcmFtZSk7CiAKICAgICAvLyBBbnkgc3ViZnJhbWUgaW5zZXJ0ZWQgYnkg
dW5sb2FkIGV2ZW50IGhhbmRsZXJzIGV4ZWN1dGVkIGluIHRoZSBsb29wIGJlbG93IHdpbGwgbm90
IGdldCB1bmxvYWRlZAogICAgIC8vIGJlY2F1c2Ugd2UgY3JlYXRlIGEgY29weSBvZiB0aGUgc3Vi
ZnJhbWVzIGxpc3QgYmVmb3JlIGxvb3BpbmcuIFRoZXJlZm9yZSwgaXQgd291bGQgYmUgdW5zYWZl
IHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDhlM2E0NmI1MTBhOTk4MGMy
YWZiODBhMzQ0OGE0OTg5ZWFjMTllMTkuLjVmZmY2N2Q5NDJlYmU5MWUwM2E1Mjk2ZTZlOWRhMjRk
YjNiN2NjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC05Niw2ICs5Niw3
IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNSZWxvYWQoRnJhbWVMb2FkVHlwZSk7CiB1c2luZyBD
b250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChQb2xpY3lB
Y3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+OwogCiBjbGFzcyBGcmFtZUxvYWRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJh
bWVMb2FkZXIpOwogcHVibGljOgogICAgIEZyYW1lTG9hZGVyKEZyYW1lJiwgRnJhbWVMb2FkZXJD
bGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBjZGY2NDk1MjZm
ZTNkMWYzMzI4ZDZlMzZjMjAxMDg3YzMxZjE2NTViLi40MDhjNTM2NDI5ZTNiMDg3Nzk4ZWI5N2U3
Njg2NGNjOTQ4NjY2N2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC0x
NDIsMjIgKzE0MiwyMiBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3Vy
Y2VDbGllbnQ+IGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbgogewogICAgIHN3aXRjaCAo
cmVzb3VyY2UudHlwZSgpKSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SW1hZ2VS
ZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRJbWFn
ZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNvdXJjZSkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZEltYWdlUmVzb3VyY2VDbGll
bnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNlKSk7CiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxD
YWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQ
cmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFNjcmlw
dD4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNo
ZWV0OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZFN0eWxlUmVz
b3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVzb3Vy
Y2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRTdHlsZVJlc291cmNl
Q2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZEZvbnRSZXNvdXJjZUNsaWVudD4obG9h
ZGVyLCBkb3duY2FzdDxDYWNoZWRGb250PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxMaW5rUHJlbG9hZEZvbnRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxD
YWNoZWRGb250PihyZXNvdXJjZSkpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpUZXh0VHJhY2tSZXNvdXJjZToKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRl
ciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3du
Y2FzdDxDYWNoZWRUZXh0VHJhY2s+KHJlc291cmNlKSk7CiAjZW5kaWYKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpUeXBlOjpNZWRpYVJlc291cmNlOgogICAgICAgICBBU1NFUlQoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tZWRpYVByZWxvYWRpbmdFbmFibGVkKCkp
OwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpS
YXdSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRS
YXdSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVz
b3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRSYXdSZXNvdXJj
ZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVzb3VyY2UpKTsK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2U6CiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6VHlwZTo6SWNvbjoKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCmluZGV4IDAyY2M3ZDEyMGNhNGJj
ZmYzNTI1YzhmNzQ5Y2M0MTgwZmU2ZDQ1ZTIuLjhhZTRiMzFiOGI2OWY5OGQwMWFkYTc4ODk5YTk4
YmQxMWRkNDI3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
RGlzYWJsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVy
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmF2aWdh
dGlvbkRpc2FibGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBOYXZpZ2F0aW9uRGlzYWJsZXIoRnJhbWUqIGZyYW1lKQogICAgICAgICA6IG1fZnJhbWUoZnJh
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5k
ZXggNTU4Yzc4MDQ5NTdlYzg4Mjg4MThlZjU2MTliZjk4M2QzZjk0MGE1NS4uM2MyYzI1MmFhNTFi
OTY5Mjk1ZWNmMTQ4MTI1NGEzMjQwZWM0MmE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgTmF2aWdh
dGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3Vt
ZW50LCBkb3VibGUKICAgICAvLyBXZSB3YW50IGEgbmV3IGJhY2svZm9yd2FyZCBsaXN0IGl0ZW0g
aWYgdGhlIHJlZnJlc2ggdGltZW91dCBpcyA+IDEgc2Vjb25kLgogICAgIGlmICghbV9yZWRpcmVj
dCB8fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxheSgpKSB7CiAgICAgICAgIGF1dG8gbG9ja0Jh
Y2tGb3J3YXJkTGlzdCA9IGRlbGF5IDw9IDEgPyBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgOiBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObzsKLSAgICAgICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1
ZTxTY2hlZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3VtZW50LCBkZWxheSwgJm1fZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2Nr
QmFja0ZvcndhcmRMaXN0KSk7CisgICAgICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVk
UmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVudCwgZGVsYXksICZtX2ZyYW1lLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJk
TGlzdCkpOwogICAgIH0KIH0KIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgTmF2aWdhdGlvblNj
aGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3Vt
ZW50LCBTCiAgICAgLy8gVGhpcyBtYXkgaGFwcGVuIHdoZW4gYSBmcmFtZSBjaGFuZ2VzIHRoZSBs
b2NhdGlvbiBvZiBhbm90aGVyIGZyYW1lLgogICAgIGJvb2wgZHVyaW5nTG9hZCA9ICFsb2FkZXIu
c3RhdGVNYWNoaW5lKCkuY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCk7CiAKLSAgICBz
Y2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlPihpbml0aWF0
aW5nRG9jdW1lbnQsICZzZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgbG9ja0hpc3Rvcnks
IGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZT4o
aW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVmZXJyZXIsIGxvY2tI
aXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9y
bVN1Ym1pc3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3Npb24pCkBAIC00NjgsNyAr
NDY4LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9u
KFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW8KICAgICAgICAgbG9ja0JhY2tGb3J3YXJk
TGlzdCA9IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllczsKICAgICB9CiAgICAgCi0gICAgc2NoZWR1
bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lvbj4oV1RGTW92ZShzdWJt
aXNzaW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOworICAgIHNjaGVkdWxl
KG1ha2VVbmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24+KFdURk1vdmUoc3VibWlzc2lvbiks
IGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9u
U2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2goRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkK
QEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVm
cmVzaChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50KQogICAgIGlmICh1cmwuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVk
dWxlZFJlZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVudCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkp
OworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGluZ0Rv
Y3VtZW50LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1fZnJh
bWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNj
aGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCkBAIC00OTgsMTMg
KzQ5OCwxMyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmln
YXRpb24oaW50IHN0ZXBzKQogICAgIH0KIAogICAgIC8vIEluIGFsbCBvdGhlciBjYXNlcywgc2No
ZWR1bGUgdGhlIGhpc3RvcnkgdHJhdmVyc2FsIHRvIG9jY3VyIGFzeW5jaHJvbm91c2x5LgotICAg
IHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0
ZXBzKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlv
bj4oc3RlcHMpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVBhZ2VC
bG9jayhEb2N1bWVudCYgb3JpZ2luRG9jdW1lbnQpCiB7CiAgICAgaWYgKHNob3VsZFNjaGVkdWxl
TmF2aWdhdGlvbigpKQotICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxl
ZFBhZ2VCbG9jaz4ob3JpZ2luRG9jdW1lbnQpKTsKKyAgICAgICAgc2NoZWR1bGUobWFrZVVuaXF1
ZTxTY2hlZHVsZWRQYWdlQmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CiB9CiAKIHZvaWQgTmF2aWdh
dGlvblNjaGVkdWxlcjo6dGltZXJGaXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25TY2hlZHVsZXIuaAppbmRleCBhMmRkYWNlMjhmMDdjMzkxZmUyNGUxOTE4ZDI1NGE1MDAy
ZmFiNDc2Li45N2MyM2IxNTA5MmJmMzkzYjMxZDIwYzhmMzRkMjU3NzI2MzFjYzkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQ2LDYgKzQ2LDcg
QEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBlbnVtIGNsYXNzIE5ld0xvYWRJblByb2dyZXNzIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICAgICAKIGNsYXNzIE5hdmlnYXRpb25TY2hlZHVsZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IE5hdmlnYXRp
b25TY2hlZHVsZXIoRnJhbWUmKTsKICAgICB+TmF2aWdhdGlvblNjaGVkdWxlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAppbmRleCBlMTdhOWRjNzJkZTAzN2M5
NjM0YmMxY2M5M2MyYzFhNzdhODZiZmEzLi4yODE3YTc2NjY0NTdiMjM5NzNhNjhmY2Y3YmMwMTgw
YzEyYmY1Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcApA
QCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVz
cyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlCiAKICAgICBhdXRvJiBp
dGVtID0gbV9wcm9ncmVzc0l0ZW1zLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFpdGVtKSB7Ci0gICAgICAgIGl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFByb2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgaXRlbSA9IG1ha2VVbmlx
dWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0ZWRMZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKaW5k
ZXggZWE1ZGJmYmFhYjIwYmZkNDNkZWFjZjFlNzc2MTFjMzQzM2FiYWI4My4uODI0NmJiMDcwNmNk
MGMwNzFmODk5NjI4OTg2YTViYTUxYzQ4YjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtNTM1LDcgKzUzNSw3IEBAIGJvb2wgVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldChjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuLCBib29sCiAgICAgaWYgKG1fY29udGVudFR5cGUgPT0gWE1MKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIG1fY2hhcnNldFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTE1l
dGFDaGFyc2V0UGFyc2VyPigpOworICAgIG1fY2hhcnNldFBhcnNlciA9IG1ha2VVbmlxdWU8SFRN
TE1ldGFDaGFyc2V0UGFyc2VyPigpOwogICAgIHJldHVybiBjaGVja0Zvck1ldGFDaGFyc2V0KGRh
dGEsIGxlbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
aW5kZXggY2E5ZTZjNDM0M2Q3NDAxMDU1M2E5ZTEwZmE2NTYzZWU1MjM5MWJiZS4uZmE5MjZlYTA2
MmFkZmYyMDU3MGM4YTM2OTEyNDY3MmI5ZWY1NjZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX2N1ZVBhcnNlcikKLSAgICAgICAgbV9jdWVQYXJzZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xp
ZW50Kj4odGhpcyksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIG1fY3VlUGFy
c2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNs
aWVudCo+KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgd2hpbGUgKG1f
cGFyc2VPZmZzZXQgPCBidWZmZXItPnNpemUoKSkgewogICAgICAgICBhdXRvIGRhdGEgPSBidWZm
ZXItPmdldFNvbWVEYXRhKG1fcGFyc2VPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGExMjYzZTJmMDQ1NzRiNGYwZWU3
M2MwNGU4YjYyZjVjODA3MmE3NTguLjc3NTMyZjg2MTM0ZTA0M2FkMzdkM2Y1OTk5OGE2ZjU3YTQy
NDE3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKQEAgLTExNSwxMSArMTE1LDExIEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1h
aW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVuCiAg
ICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKICAgICBhdXRvIHNlY3VyaXR5T3Jp
Z2luQ29weSA9IHNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENvcHkoKTsKLSAgICBhdXRvIGNvbnRl
bnRTZWN1cml0eVBvbGljeUNvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBv
bGljeT4oZ2xvYmFsU2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOworICAgIGF1dG8gY29udGVu
dFNlY3VyaXR5UG9saWN5Q29weSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5Pihn
bG9iYWxTY29wZS51cmwoKS5pc29sYXRlZENvcHkoKSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9s
aWN5Q29weS0+Y29weVN0YXRlRnJvbShjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogICAgIGNvbnRl
bnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0U3RhdGVGcm9t
KCpjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCi0gICAgYXV0byBvcHRpb25zQ29weSA9IHN0ZDo6
bWFrZV91bmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMsIHJlcXVlc3QuaHR0cFJlZmVy
cmVyKCkuaXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDogcmVxdWVzdC5odHRwUmVmZXJyZXIo
KSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKKyAgICBhdXRvIG9wdGlvbnNDb3B5ID0g
bWFrZVVuaXF1ZTxMb2FkZXJUYXNrT3B0aW9ucz4ob3B0aW9ucywgcmVxdWVzdC5odHRwUmVmZXJy
ZXIoKS5pc051bGwoKSA/IG91dGdvaW5nUmVmZXJyZXIgOiByZXF1ZXN0Lmh0dHBSZWZlcnJlcigp
LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luQ29weSkpOwogCiAgICAgLy8gQWxsIGxvYWRzIHN0YXJ0
IG91dCBhcyBEb2N1bWVudC4gSW5zaWRlIFdvcmtlclRocmVhZGFibGVMb2FkZXIgd2UgdXBncmFk
ZSB0aGlzIHRvIGEgV29ya2VyIGxvYWQuCiAgICAgQVNTRVJUKG9wdGlvbnNDb3B5LT5vcHRpb25z
LmluaXRpYXRvckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6RG9jdW1lbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAppbmRleCBmOTdlYjAwNDI1YmQyOWIzY2I2YmNiMzQ1ZmJmZDY1MjI0MDhmOGNlLi5iYmE5MTA0
MTkxNTRlY2Y0M2MxMjJlMmQ5MGNmODY0NTU5N2E5OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNDIzLDcg
KzQyMyw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoTm9kZSYgbm9kZSwgV1RGOjpGdW5jdGlvbjxib29sCiAgICAgLy8gYnV0IHdlIGNhbiBhcHBy
b3hpbWF0ZSB0aGF0IGJ5IGNoZWNraW5nIGlmIHNjcmlwdGluZyBpcyBlbmFibGVkIHJpZ2h0IG5v
dy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFF1YWxpZmllZE5hbWU+PiB0YWdOYW1lc1Rv
RmlsdGVyOwogICAgIGlmIChmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPnNldHRpbmdz
KCkuaXNTY3JpcHRFbmFibGVkKCkpIHsKLSAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFF1YWxpZmllZE5hbWU+PigpOworICAgICAgICB0YWdOYW1lc1Rv
RmlsdGVyID0gbWFrZVVuaXF1ZTxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+KCk7CiAgICAgICAgIHRh
Z05hbWVzVG9GaWx0ZXItPmFwcGVuZChIVE1MTmFtZXM6Om5vc2NyaXB0VGFnKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGYzMTI5
MDcyOGY2OTkwZDgwMDhiYTI2NDQwMjFjYjFkODg1Yjk0NTcuLjcwZjU4Njg0OGVhZWUyOTEyNmM0
YmFlOTEwNmMxNWUyOTZhOTA3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIG1faW1h
Z2VPYnNlcnZlci0+Y2FjaGVkSW1hZ2VzKCkuYWRkKHRoaXMpOwogCiAgICAgaWYgKG1faW1hZ2Ug
JiYgaXM8U1ZHSW1hZ2U+KCptX2ltYWdlKSkKLSAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdl
KSk7CisgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDYWNoZT4o
JmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOwogfQogCiB2b2lkIENhY2hlZEltYWdlOjpk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKQEAgLTM1Nyw3ICszNTcs
NyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogCiAgICAgaWYgKG1f
aW1hZ2UpIHsKICAgICAgICAgaWYgKGlzPFNWR0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAgICAg
ICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3du
Y2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9
IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkp
OwogCiAgICAgICAgIC8vIFNlbmQgcXVldWVkIGNvbnRhaW5lciBzaXplIHJlcXVlc3RzLgogICAg
ICAgICBpZiAobV9pbWFnZS0+dXNlc0NvbnRhaW5lclNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggYmU2MTgzYWJm
YTU5ZDVjOGUxNjJmZWMxZDY1NTI0NTIzYWRlMjc4Yy4uZjlhNzVmMzU0NTI3NjkwMmE5ZTRhNWMz
NWI2YWM2YjFmMTUwYzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdXIKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92
ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBl
bHNlIHsKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChSZWRpcmVjdFBhaXIocmVxdWVz
dCwgcmVzcG9uc2UpKTsKLSAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50cyksIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92ZShyZXF1ZXN0KSwgc3Rk
OjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNwb25zZV0g
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICBpdGVyYXRlQ2xp
ZW50cyhDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4o
bV9jbGllbnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMp
LCBXVEZNb3ZlKHJlcXVlc3QpLCBtYWtlVW5pcXVlPFJlc291cmNlUmVzcG9uc2U+KHJlc3BvbnNl
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVl
c3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAppbmRleCBlNDMwZTQ0N2FjNDk0NjM2Yzk4NGU3NGQ0MGI5MWU2NWNkZWJiNTBiLi4wNTY3ZDFk
NWRlOGM2ZjEzZTE4Njg0NGFlZDc1NTc1Y2YxN2UxNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTU0Niw3ICs1NDYsNyBAQCBib29s
IENhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xp
ZW50KQogICAgICAgICAvLyBUaGVyZWZvcmUsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IHNlbmRp
bmcgY2FsbGJhY2tzIG9uIGEgY2FjaGUgaGl0IGxpa2Ugb3RoZXIgQ2FjaGVkUmVzb3VyY2VzLAog
ICAgICAgICAvLyB3ZSBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZCBlbnN1cmUgd2UgbmV2ZXIg
ZmluaXNoIHN5bmNocm9ub3VzbHkuCiAgICAgICAgIEFTU0VSVCghbV9jbGllbnRzQXdhaXRpbmdD
YWxsYmFjay5jb250YWlucygmY2xpZW50KSk7Ci0gICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2Fs
bGJhY2suYWRkKCZjbGllbnQsIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2s+KCp0aGlzLCBjbGll
bnQpKTsKKyAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoJmNsaWVudCwgbWFr
ZVVuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsIGNsaWVudCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CmluZGV4IDIyOWExNDJkNjQ0MTNjZWJhZWZhYzUyNzEwYmIyYmY4ZGRlZGY3YmUuLjJmZmUyYjQx
ODc5OTdlZWZkZDQxNWUwZWRiZTgwMmRjMTcyY2FlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0zODEsOSArMzgxLDcgQEAgY2xhc3MgQ2Fj
aGVkUmVzb3VyY2UgewogfTsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrIHsKLSNp
ZiAhQ09NUElMRVIoTVNWQykKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSNlbmRpZgog
cHVibGljOgogICAgIENhbGxiYWNrKENhY2hlZFJlc291cmNlJiwgQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggODQzYTlkMWY5ZDZjODVmMTAwMGEyYzQwZjE5NjRiNDdhMmVi
MWM3YS4uYjM0YjhmZDM1YzEwNzdhNTQ1MmFiYjM0MzIzNjFiNGNjM2QxMWM5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC03OTEsNyArNzkxLDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAgICAvLyBFbnRy
eSBwb2ludCB0byBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaC4KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBvcmlnaW5hbFJlcXVlc3Q7CiAgICAg
aWYgKENhY2hlZFJlc291cmNlOjpzaG91bGRVc2VQaW5nTG9hZCh0eXBlKSB8fCByZXF1ZXN0Lm9w
dGlvbnMoKS5kZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0
cmluZykgewotICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291
cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgICAgIG9yaWdpbmFs
UmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihyZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBSZWZlcnJlcigpOwog
ICAgICAgICBvcmlnaW5hbFJlcXVlc3QtPmNsZWFySFRUUE9yaWdpbigpOwogICAgIH0KQEAgLTEz
OTEsNyArMTM5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsCiAgICAgICAgIHJlc291cmNl
VmFsdWUtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CiAKICAgICAgICAgaWYgKCFtX3ByZWxvYWRz
KQotICAgICAgICAgICAgbV9wcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8
Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBtYWtlVW5pcXVl
PExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgIG1fcHJlbG9hZHMtPmFk
ZChyZXNvdXJjZVZhbHVlLmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNlOwpAQCAt
MTQzMyw3ICsxNDMzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fk
cyhDbGVhclByZWxvYWRzTW9kZSBtb2RlKQogICAgICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAg
ICAgICBpZiAobW9kZSA9PSBDbGVhclByZWxvYWRzTW9kZTo6Q2xlYXJTcGVjdWxhdGl2ZVByZWxv
YWRzICYmIHJlc291cmNlLT5pc0xpbmtQcmVsb2FkKCkpIHsKICAgICAgICAgICAgIGlmICghcmVt
YWluaW5nTGlua1ByZWxvYWRzKQotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xpbmtQcmVsb2Fk
cyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAg
ICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNo
U2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9h
ZHMtPmFkZChyZXNvdXJjZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2UuaAppbmRleCA3MGNiMWFmYTRjZjFkM2E2ZTY0MmE4YWU5ZGI4NDQ4Zjg0ZDE0YmQ2
Li4yMmFlNzJkOGZmNWVmNzI5YTE2NGM3NmE0ZmRiYjBlNDlkNzFmNGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2UuaApAQCAtMzUsNyArMzUsOCBAQCBjbGFzcyBDYWNoZWRTVkdEb2N1bWVudDsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAotY2xh
c3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgOiBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRD
bGllbnQgeworY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgZmluYWwgOiBwdWJsaWMg
Q2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBkM2I4
MDUxNDIzYzNmYzUyNGJkOGI2ZjU1ZjM1YTZhYzIyMzBiMjAyLi4zZGVhZDQ2YzFkNGQ3OGNmN2Nk
ZjAzYWZmY2JlZjM5Mjc4MjYzYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgYXV0byBNZW1vcnlDYWNoZTo6ZW5zdXJl
U2Vzc2lvblJlc291cmNlTWFwKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gQ2FjaGVkUmUK
ICAgICBBU1NFUlQoc2Vzc2lvbklELmlzVmFsaWQoKSk7CiAgICAgYXV0byYgbWFwID0gbV9zZXNz
aW9uUmVzb3VyY2VzLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAg
ICBpZiAoIW1hcCkKLSAgICAgICAgbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJj
ZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZU1hcD4oKTsK
ICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAtMjE2LDcgKzIxNiw3IEBAIGJvb2wgTWVtb3J5Q2Fj
aGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgogCiAg
ICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSks
IG51bGxwdHIpOwotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hl
ZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigpLCBzZXNzaW9uSUQsIGNvb2tpZUphciwgZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBtYWtlVW5pcXVl
PENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigpLCBzZXNzaW9uSUQsIGNvb2tpZUph
ciwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2UtPmFkZENsaWVu
dChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVk
U2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC00NzMsNyArNDczLDcgQEAgYXV0
byBNZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcihDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIC0+IExS
VUxpc3QmCiAKICAgICBtX2FsbFJlc291cmNlcy5yZXNlcnZlQ2FwYWNpdHkocXVldWVJbmRleCAr
IDEpOwogICAgIHdoaWxlIChtX2FsbFJlc291cmNlcy5zaXplKCkgPD0gcXVldWVJbmRleCkKLSAg
ICAgICAgbV9hbGxSZXNvdXJjZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TFJV
TGlzdD4oKSk7CisgICAgICAgIG1fYWxsUmVzb3VyY2VzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5p
cXVlPExSVUxpc3Q+KCkpOwogICAgIHJldHVybiAqbV9hbGxSZXNvdXJjZXNbcXVldWVJbmRleF07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKaW5kZXggNjE4
ZTk0Mjk1MDE3ZGMzYjgzMDM2NWMxMTY3NjE1MzhiMWRiNjIzOC4uMTUwM2Q3OGUzYWY1OTk0OTU0
YjMzYzJhODA4NGY0ZmVhNjMwMDcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9QcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2
aWV3TG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUHJldmlld0xvYWRlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0xvYWRlcik7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBjcmVh
dGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KaW5kZXggZjZiODIyMTc5MTZjYWQ5NWJm
ZTk2MGJiM2UzNzg0YTI3MGE5YmE2Ny4uYzVjYTVjMjVmMTFiNGQ4YTljYTkzZWZjODg5MDk5MDdm
NmI3NjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQpA
QCAtODYsNyArODYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjoo
UmVzb3VyY2VMb2FkZXImKXJlc291cmNlTG9hZGVyIHJlc291cmNlUgogCiAgICAgX3Jlc291cmNl
TG9hZGVyID0gbWFrZVdlYWtQdHIocmVzb3VyY2VMb2FkZXIpOwogICAgIF9yZXNwb25zZSA9IHJl
c291cmNlUmVzcG9uc2U7Ci0gICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmll
d0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKKyAgICBfY29udmVydGVyID0gbWFrZVVuaXF1
ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UpOwogICAgIF9idWZmZXJlZERhdGFB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9zaG91
bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0
dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygp
OwogCkBAIC0yNDYsNyArMjQ2LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rp
b24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICB9CiAK
ICAgICBfY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0gKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2NvbnZl
cnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNl
LCBwYXNzd29yZCk7CisgICAgICAgIF9jb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdDb252
ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOwogICAgICAgICBbX2NvbnZlcnRlci0+
cGxhdGZvcm1Db252ZXJ0ZXIoKSBhcHBlbmREYXRhQXJyYXk6X2J1ZmZlcmVkRGF0YUFycmF5Lmdl
dCgpXTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgZmluaXNoZWRB
cHBlbmRpbmdEYXRhXTsKICAgICB9KTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBQcmV2aWV3TG9hZGVy
Ojp+UHJldmlld0xvYWRlcigpCiBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gUHJldmll
d0xvYWRlcjo6Y3JlYXRlKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0
c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKIH0KIAogYm9vbCBQcmV2aWV3
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCmluZGV4IGU2YWRiNjdk
YTk0ODY4NjI2ZmUyMDZmZjE2ZTY0ZGRhY2UyNzAxZmUuLjYxM2U3ODkyYjQxMGYzYjJhNDk0ZWNm
YjY4MDAwYWFjMGRjNjYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIFRleHRUcmFja0xpc3Q7CiBzdHJ1
Y3QgTWVkaWFTZWxlY3Rpb25PcHRpb247CiAKIGNsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXMoUGFnZUdyb3VwJik7CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJl
bmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGM0NzljYTFmOWNiMDdkNGFjN2I0YjlmYjIyODUxZjBjOTk0YjE3MTQuLjRjY2RhYjA0
YjdiM2Y1NTM0Y2VjYzJhMTllYzBhNGJjYjdhYjE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6bWF5YmVDcmVhdGVD
b250ZXh0TWVudShFdmVudAogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q29udGV4dE1lbnU+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGV4dE1lbnU+
KCk7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29udGV4dE1lbnUoRXZl
bnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCBmNjNkYWE3ZjYzNDcyNTU4ODczZGIzYjU4M2JjMjUxMmExNzc1MjdhLi5jZGM3NGY2ZGUwOWU5
M2RlOWFhYjkyMzU2ZWYyZmJmNDRkZDJkMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcApAQCAtODgsNyArODgsNyBAQCBjbGFzcyBNb3VzZVdoZWVsUmVnaW9u
T3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5IHsKIAogYm9vbCBNb3VzZVdoZWVs
UmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIHsKLSAgICBhdXRvIHJlZ2lvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgIGF1dG8gcmVnaW9uID0gbWFrZVVuaXF1ZTxSZWdp
b24+KCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBGcmFtZSogZnJhbWUgPSAmbV9wYWdlLm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAg
ICAgICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNDhjMDczNDc3MGViMTEwYzFjNWQ4NDUzZGQw
ODc5OTJlNTY0OWExZS4uZDIwYjk4YzQxNWVlYzgyNzZmODkwMGYyNGM2N2E5N2YxMDFkMGEwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIEV2
ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkKICNpZiBQTEFURk9STShNQUMp
CiAgICAgLCBtX3BlbmRpbmdNb21lbnR1bVdoZWVsRXZlbnRzVGltZXIoKnRoaXMsICZFdmVudEhh
bmRsZXI6OmNsZWFyTGF0Y2hlZFN0YXRlKQogI2VuZGlmCi0gICAgLCBtX2F1dG9zY3JvbGxDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkpCisgICAgLCBt
X2F1dG9zY3JvbGxDb250cm9sbGVyKG1ha2VVbmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkp
CiAjaWYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgICwgbV9mYWtlTW91c2VNb3ZlRXZl
bnRUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJl
ZCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDIzMzcyOTQyYjM3NjNk
OTI5M2QyNjViMzVhY2MxNTI1ZTM0Y2MwMGYuLmE1ZTVlZGUwYjRiNzQ3ZTQ3OTRkYzc5NDA2YWVm
Y2NiYjM4NWRkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTEsNyArMTI5
MSw3IEBAIFJlbmRlckJveCogRnJhbWVWaWV3OjplbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdAog
dm9pZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRP
YmplY3QmIGVtYmVkZGVkT2JqZWN0KQogewogICAgIGlmICghbV9lbWJlZGRlZE9iamVjdHNUb1Vw
ZGF0ZSkKLSAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKKyAgICAgICAgbV9lbWJl
ZGRlZE9iamVjdHNUb1VwZGF0ZSA9IG1ha2VVbmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRk
ZWRPYmplY3QqPj4oKTsKIAogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCA9IGVt
YmVkZGVkT2JqZWN0LmZyYW1lT3duZXJFbGVtZW50KCk7CiAgICAgaWYgKGlzPEhUTUxPYmplY3RF
bGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSkgewpAQCAt
MTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIGJvb2wgaGFkU2xvd1JlcGFpbnRPYmplY3RzID0g
aGFzU2xvd1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBpZiAoIW1fc2xvd1JlcGFpbnRPYmplY3Rz
KQotICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNl
dDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CisgICAgICAgIG1fc2xvd1JlcGFpbnRPYmplY3Rz
ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVsZW1lbnQqPj4oKTsKIAogICAgIG1f
c2xvd1JlcGFpbnRPYmplY3RzLT5hZGQoJnJlbmRlcmVyKTsKICAgICBpZiAoaGFkU2xvd1JlcGFp
bnRPYmplY3RzKQpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNs
b3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogdm9pZCBGcmFtZVZpZXc6
OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogb2Jq
ZWN0KQogewogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKLSAgICAgICAg
bV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdFNldD4oKTsKKyAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0cyA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKIAogICAg
IGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkgewog
ICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5hZGQob2JqZWN0KTsKQEAgLTQ4
NjYsNyArNDg2Niw3IEBAIFN0cmluZyBGcmFtZVZpZXc6OnRyYWNrZWRSZXBhaW50UmVjdHNBc1Rl
eHQoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVB
cmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQotICAg
ICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsYWJsZUFyZWFT
ZXQ+KCk7CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0gbWFrZVVuaXF1ZTxTY3JvbGxhYmxl
QXJlYVNldD4oKTsKICAgICAKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYXMtPmFkZChzY3JvbGxh
YmxlQXJlYSkuaXNOZXdFbnRyeSkgewogICAgICAgICBzY3JvbGxhYmxlQXJlYVNldENoYW5nZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCmlu
ZGV4IDczMDk4ZjFmYTFmMTA3MWU2MWZjZDNhYTY1MzUzMzBkM2U4OWJmNTkuLmU4NThjOTJjYmY4
YzMxYTMyMWJmMzgwMDk3YWJhNTVmMTU3MDAwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtNTk2LDE0ICs1OTYsMTQgQEAgdm9pZCBG
cmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUoUmVuZGVyRWxlbWVudCYgcm9v
dCkKICAgICBBU1NFUlQoIW1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVDb3VudCk7CiAgICAgQVNT
RVJUKCFsYXlvdXRTdGF0ZSgpKTsKIAotICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9vdCkpOworICAgIG1fbGF5b3V0U3Rh
dGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9vdCkpOwogfQog
CiBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZUZvclBhZ2luYXRp
b25JZk5lZWRlZChSZW5kZXJCbG9ja0Zsb3cmIGxheW91dFJvb3QpCiB7CiAgICAgaWYgKGxheW91
dFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2xheW91dFN0YXRlU3RhY2su
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KGxheW91dFJvb3QsIFJl
bmRlckxheW91dFN0YXRlOjpJc1BhZ2luYXRlZDo6WWVzKSk7CisgICAgbV9sYXlvdXRTdGF0ZVN0
YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihsYXlvdXRSb290LCBSZW5k
ZXJMYXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOwogICAgIHJldHVybiB0cnVlOwogfQog
ICAgIApAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVz
aExheW91dFN0YXRlKFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFNpCiAgICAgYXV0
byogbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIGlmICghbGF5b3V0U3Rh
dGUgfHwgIW5lZWRzRnVsbFJlcGFpbnQoKSB8fCBsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSB8
fCByZW5kZXJlci5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpCiAgICAgICAgIHx8IGxheW91dFN0
YXRlLT5saW5lR3JpZCgpIHx8IChyZW5kZXJlci5zdHlsZSgpLmxpbmVHcmlkKCkgIT0gUmVuZGVy
U3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpICYmIHJlbmRlcmVyLmlzUmVuZGVyQmxvY2tGbG93KCkp
KSB7Ci0gICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwgb2Zmc2V0LCBw
YWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOworICAgICAgICBtX2xheW91dFN0YXRlU3Rh
Y2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFj
aywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvckJhc2UuY3BwCmluZGV4IDhjM2M1MmEwNzM1MjI3OTBjZDBjNGE2MGRjMDVl
NjE0MTJjMTlhZTkuLjUyMjdlNDJhYzA5NmNlNjkyNWQ3ZWM2YTE4ZTUxOTI1ZDJlMDA2YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFNl
cnZpY2VXb3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIoKQogewog
ICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNlcnZp
Y2VXb3JrZXJFbmFibGVkKCkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyKQot
ICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZp
Y2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMpOworICAg
ICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJD
b250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMpOwogICAgIHJldHVybiAq
bV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBlZGE3
YzVmYTVkNjQ3OWJhNzEwOTAyMGI1MjgzMmNlMjYxYmNkN2U5Li4yOWEyYWY3NGJjYWRkNmIzMGM2
YWZmNjBlYzRlMzFkMGI0NzJiZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIxMSwyNiArMjEx
LDI2IEBAIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IHBh
Z2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpCiB9CiAKIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRp
b24mJiBwYWdlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2hyb21lKHN0ZDo6bWFrZV91bmlxdWU8
Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCi0gICAgLCBt
X2RyYWdDYXJldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEcmFnQ2FyZXRDb250cm9sbGVy
PigpKQorICAgIDogbV9jaHJvbWUobWFrZVVuaXF1ZTxDaHJvbWU+KCp0aGlzLCAqcGFnZUNvbmZp
Z3VyYXRpb24uY2hyb21lQ2xpZW50KSkKKyAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihtYWtl
VW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
LSAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEcmFnQ29udHJvbGxlcj4o
KnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkKKyAgICAsIG1fZHJhZ0NvbnRy
b2xsZXIobWFrZVVuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlv
bi5kcmFnQ2xpZW50KSkKICNlbmRpZgotICAgICwgbV9mb2N1c0NvbnRyb2xsZXIoc3RkOjptYWtl
X3VuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUo
KSkpCisgICAgLCBtX2ZvY3VzQ29udHJvbGxlcihtYWtlVW5pcXVlPEZvY3VzQ29udHJvbGxlcj4o
KnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51
Q2xpZW50KSkKKyAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKG1ha2VVbmlxdWU8Q29udGV4
dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xp
ZW50KSkKICNlbmRpZgotICAgICwgbV91c2VySW5wdXRCcmlkZ2Uoc3RkOjptYWtlX3VuaXF1ZTxV
c2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdlQ29uZmlndXJhdGlv
bi5pbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV91c2VySW5wdXRCcmlkZ2UobWFrZVVuaXF1ZTxV
c2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtl
VW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5pbnNw
ZWN0b3JDbGllbnQpKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICAsIG1fcG9pbnRl
ckNhcHR1cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckNhcHR1cmVDb250cm9s
bGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJDYXB0dXJlQ29udHJvbGxlcihtYWtlVW5pcXVl
PFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKLSAgICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJMb2NrQ29u
dHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlm
CiAgICAgLCBtX3NldHRpbmdzKFNldHRpbmdzOjpjcmVhdGUodGhpcykpCi0gICAgLCBtX3Byb2dy
ZXNzKHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigqcGFnZUNvbmZpZ3VyYXRpb24u
cHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKLSAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKHN0
ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQorICAgICwgbV9wcm9ncmVzcyhtYWtl
VW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tl
ckNsaWVudCkpCisgICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihtYWtlVW5pcXVlPEJhY2tG
b3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0Zv
cndhcmRDbGllbnQpKSkKICAgICAsIG1fbWFpbkZyYW1lKEZyYW1lOjpjcmVhdGUodGhpcywgbnVs
bHB0ciwgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lKSkKICAgICAs
IG1fZWRpdG9yQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50KSkK
ICAgICAsIG1fcGx1Z0luQ2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCkKQEAg
LTI1MCw5ICsyNTAsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZp
Z3VyYXRpb24pCiAgICAgLCBtX2RvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVy
KCp0aGlzLCAmUGFnZTo6ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXJGaXJl
ZCkKICAgICAsIG1fYWN0aXZpdHlTdGF0ZShwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkKICAg
ICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLmFsdGVybmF0aXZl
VGV4dENsaWVudCkKLSAgICAsIG1fY29uc29sZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VD
b25zb2xlQ2xpZW50PigqdGhpcykpCisgICAgLCBtX2NvbnNvbGVDbGllbnQobWFrZVVuaXF1ZTxQ
YWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQot
ICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2Fi
bGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFBhZ2VE
ZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fc29ja2V0UHJvdmlkZXIoV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlcikpCiAgICAgLCBtX2Nvb2tpZUphcihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvb2tpZUphcikpCkBAIC0yNjgsMTYgKzI2OCwxNiBA
QCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAg
LCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGltZXIoKnRoaXMsICZQYWdlOjpwbGF5
YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1faXNV
dGlsaXR5UGFnZShpc1V0aWxpdHlQYWdlQ2hyb21lQ2xpZW50KGNocm9tZSgpLmNsaWVudCgpKSkK
LSAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/IG51bGxwdHIgOiBz
dGQ6Om1ha2VfdW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQotICAgICwgbV9sb3dQ
b3dlck1vZGVOb3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihb
dGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hh
bmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQotICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dp
bmcoc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+KCp0aGlzKSkKKyAgICAsIG1f
cGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/IG51bGxwdHIgOiBtYWtlVW5pcXVl
PFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQorICAgICwgbV9sb3dQb3dlck1vZGVOb3RpZmll
cihtYWtlVW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2Vy
TW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlzTG93UG93ZXJNb2RlRW5h
YmxlZCk7IH0pKQorICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmcobWFrZVVuaXF1ZTxQZXJmb3Jt
YW5jZUxvZ2dpbmc+KCp0aGlzKSkKICNpZiBQTEFURk9STShNQUMpICYmIChFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSkKLSAgICAs
IG1fc2VydmljZXNPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2VydmljZXNPdmVybGF5Q29udHJvbGxl
cihtYWtlVW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgog
ICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXIoV2hlZWxFdmVudERlbHRhRmlsdGVy
OjpjcmVhdGUoKSkKLSAgICAsIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BhZ2VPdmVybGF5Q29u
dHJvbGxlcihtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCi0gICAgLCBtX3BheW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGlu
YXRvckNsaWVudCkpCisgICAgLCBtX3BheW1lbnRDb29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1l
bnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVu
dCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICwgbV9hdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KFdURk1v
dmUocGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KSkpCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBQYWdlOjppbml0R3JvdXAoKQogewogICAgIEFTU0VSVCgh
bV9zaW5nbGVQYWdlR3JvdXApOwogICAgIEFTU0VSVCghbV9ncm91cCk7Ci0gICAgbV9zaW5nbGVQ
YWdlR3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VHcm91cD4oKnRoaXMpOworICAgIG1fc2lu
Z2xlUGFnZUdyb3VwID0gbWFrZVVuaXF1ZTxQYWdlR3JvdXA+KCp0aGlzKTsKICAgICBtX2dyb3Vw
ID0gbV9zaW5nbGVQYWdlR3JvdXAuZ2V0KCk7CiB9CiAKQEAgLTI2NTQsNyArMjY1NCw3IEBAIHZv
aWQgUGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAg
ICB9CiAKICAgICBpZiAoIW1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgJiYgbV9zZXR0aW5ncy0+YWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkKLSAgICAgICAgbV9yZXNvdXJjZVVzYWdlT3Zl
cmxheSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+KCp0aGlzKTsKKyAg
ICAgICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VVc2FnZU92
ZXJsYXk+KCp0aGlzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNv
bGVDbGllbnQuY3BwCmluZGV4IGQwMzJmY2Y3MGY4NmE2M2FhZGQxMWYyMjdmYTk2ZGQwNjNjMWVh
NjEuLjYzZjY1NmYxYTVhYjhlMjZmYjk1NWU2MzRlNDVhOWE4YTEyZmRkNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBAIC0xNjAsOSArMTYwLDkgQEAgdm9p
ZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb24KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4gbWVzc2FnZTsKIAogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3Nh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwg
TWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5v
bk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVu
dGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWws
IG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1iZXIsIHN1Z2dlc3Rl
ZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdl
VHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGlu
ZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIp
OwogCiAgICAgYWRkTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KQEAgLTE3Myw3ICsxNzMs
NyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNz
YWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAg
ICBib29sIGdvdE1lc3NhZ2UgPSBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyht
ZXNzYWdlVGV4dCk7CiAKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxl
dmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhlYyk7CisgICAgYXV0byBt
ZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIGFyZ3VtZW50cy5jb3B5
UmVmKCksIGV4ZWMpOwogCiAgICAgU3RyaW5nIHVybCA9IG1lc3NhZ2UtPnVybCgpOwogICAgIHVu
c2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5lKCk7CkBAIC0zNzksNyArMzc5LDcgQEAg
dm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IFJlZjxTY3JpcHRBcmd1bWVudHM+JiYKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkYXRhVVJM
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkNvdWxkIG5vdCBjYXB0dXJlIHNj
cmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOworICAgICAgICAgICAgYWRkTWVzc2Fn
ZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkNvdWxk
IG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQg
UGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWY8
U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgZm9yIChzaXplX3QgaSA9ICghdGFyZ2V0ID8gMCA6IDEp
OyBpIDwgYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYWRqdXN0ZWRB
cmd1bWVudHMuYXBwZW5kKHsgc3RhdGUtPnZtKCksIGFyZ3VtZW50cy0+YXJndW1lbnRBdChpKSB9
KTsKICAgICBhcmd1bWVudHMgPSBTY3JpcHRBcmd1bWVudHM6OmNyZWF0ZSgqc3RhdGUsIFdURk1v
dmUoYWRqdXN0ZWRBcmd1bWVudHMpKTsKLSAgICBhZGRNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywgZGF0YVVSTCwgV1RGTW92ZShhcmd1
bWVudHMpKSk7CisgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVz
c2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VH
cm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggOTE5MzYw
NDVjMmZhZjc2Y2FjNWUyYzY5ZTYyMzNmMmNlMzBiZjliMS4uMTI4YzE4ZjE0YjkwOGU3MWJjN2Nl
ZmIzOTYyMDdmZWJiYzAwZjJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtMTE2
LDkgKzExNiw5IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMmIFBhZ2VHcm91cDo6Y2FwdGlvblBy
ZWZlcmVuY2VzKCkKIHsKICAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2VzKSB7CiAjaWYgUExB
VEZPUk0oTUFDKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQotICAgICAg
ICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBt
YWtlVW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGPigqdGhpcyk7CiAjZWxzZQot
ICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FwdGlvblVz
ZXJQcmVmZXJlbmNlcz4oKnRoaXMpOworICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IG1h
a2VVbmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRoaXMpOwogI2VuZGlmCiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4IDZjMTViM2ZhYTgzZjVjYWUwZDkx
NzZkMDBjOGFmYzE1Yjc2NjkzMTYuLmNiYmFjMjFkNDAwNWIxYjBlMTE4MDIyZjdhYTE0YThiY2Zl
ZDg1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCkBAIC0yNjUsNyArMjY1LDcg
QEAgdm9pZCBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsVGltZXJGaXJlZCgp
CiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhjb25zdCBTdHJpbmcmIG1hcmtO
YW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5n
ID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IG1f
dXNlclRpbWluZy0+bWFyayhtYXJrTmFtZSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKQEAgLTI3OSwxNCArMjc5LDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjpt
YXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB2b2lkIFBlcmZvcm1hbmNlOjpjbGVhck1hcmtz
KGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAg
ICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwor
ICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKICAg
ICBtX3VzZXJUaW1pbmctPmNsZWFyTWFya3MobWFya05hbWUpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBQZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBjb25z
dCBTdHJpbmcmIHN0YXJ0TWFyaywgY29uc3QgU3RyaW5nJiBlbmRNYXJrKQogewogICAgIGlmICgh
bV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2Vy
VGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IG1fdXNlclRpbWluZy0+bWVhc3Vy
ZShtZWFzdXJlTmFtZSwgc3RhcnRNYXJrLCBlbmRNYXJrKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQpAQCAtMzAwLDcgKzMwMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1h
bmNlOjptZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYKIHZv
aWQgUGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSkK
IHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjpt
YWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1h
a2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRpbWluZy0+Y2xlYXJNZWFz
dXJlcyhtZWFzdXJlTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJld2FybUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1h
dGlvbi5oCmluZGV4IDk5YTQzNzJlNTRkODQwMjliYWZiZjliOGY3YTU4MjAwMWZhNjNhMWIuLjE2
YmNmMDQzOTBhMTcwZjNkZTc4MjY1MGMyZmMyNTIyY2Y1MDU0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUHJld2FybUluZm9ybWF0aW9uIHsKKyAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRm9udENhY2hlOjpQcmV3YXJt
SW5mb3JtYXRpb24gZm9udENhY2hlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3Bw
CmluZGV4IDAzNzBmMjg4N2Y2NWI1N2IzY2Q4OTdlNGZjNjllOGEyZWZiODc1ZGYuLjQ0MjkxYWVm
YTM3YzhhN2E4NDQ4YmVjMzlhZWVhYzI0MzllYzQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6b3V0cHV0
TGlua2VkRGVzdGluYXRpb25zKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBEbwog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbGlua2VkRGVzdGluYXRpb25zKSB7Ci0gICAg
ICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmlu
ZywgUmVmPEVsZW1lbnQ+Pj4oKTsKKyAgICAgICAgbV9saW5rZWREZXN0aW5hdGlvbnMgPSBtYWtl
VW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxlbWVudD4+PigpOwogICAgICAgICBjb2xsZWN0
TGlua2VkRGVzdGluYXRpb25zKGRvY3VtZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcAppbmRleCA1NmEwMTFjNGNlZTk5
Nzg5OTAxZmFkMzYzMDJiZTEwYzM0NTY2NTI3Li4zYjg4MWRmYmIxNzE3ZjRlNDExYTZjNTM0NDU5
NWZiZDNhYjQzMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1Vw
ZGF0ZVNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyOjppc1NjaGVkdWxlZCgpIGNvbnN0CiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAgIEFTU0VSVCghaXNTY2hlZHVsZWQo
KSk7Ci0gICAgbV9yZWZyZXNoVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywg
JlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CisgICAgbV9y
ZWZyZXNoVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CiAgICAgbV9yZWZyZXNoVGltZXItPnN0YXJ0
T25lU2hvdChkZWxheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVu
ZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1Vw
ZGF0ZVNjaGVkdWxlci5oCmluZGV4IGZhZGU2MmZjNzg3ZWU0ODk3OWFmNmRkODI2NjI3Nzk4MDRk
Mzc1MTcuLjZmMDYwODE3ODI2ZWM1NmM2ZWU4YTVmOGNkMzk0NGVjMmQ0MTkwZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaApAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIKIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4gY3JlYXRlKFBhZ2Um
IHBhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJpbmdV
cGRhdGVTY2hlZHVsZXI+KHBhZ2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXI+KHBhZ2UpOwogICAgIH0KIAogICAgIFJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcihQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKaW5kZXggOTVi
MWM4YjViZTgzZDg5YjI0OTc5ZWFlZDliOWQ0ZTkwZDNmNGY4Ny4uZWVlYmY5YjllNjFiZDU4OGZk
M2JhOTlmYWIxNTAxOTFjYzhmNjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZXNpemVPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIu
aApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiAKIHN0
cnVjdCBSZXNpemVPYnNlcnZlckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBWZWN0b3I8V2Vha1B0cjxSZXNpemVPYnNlcnZlcj4+IG9ic2VydmVyczsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNDIzNDE4MjgwZWEy
ZWUzYzliZmRmYzkxY2QxMjdiOTY4ZWIxZTFiZi4uMGRlYjA2NDE0OGY5NzI2Y2QzOGI0MTAwNWQ1
MjI5NzI2MGMxYzY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBv
bGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAg
LTE4OSw3ICsxODksNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwogICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRkKHNvdXJjZVN0cmluZywgbnVsbHB0
cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7CisgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9yaWdpbkFjY2Vzc1doaXRl
TGlzdD4oKTsKIAogICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nl
c3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nlc3NFbnRyeTo6VHJlYXRJUEFk
ZHJlc3NBc0lQQWRkcmVzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5nc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCmluZGV4
IGI2ODQ4OTZmMzk4ODQ2MjU0YTE3OTdhZGNkZWQ2NjY2MDVlODVkNWMuLjI3ZWVhNmMwYWI5Mzhl
YmM4Zjk2NWRhY2I4MjAzMTE0NDMxNjBiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFz
ZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgbGF5b3V0U2NoZWR1
bGVUaHJlc2hvbGQgPSAyNTBfbXM7CiAKIFNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKFBhZ2Uq
IHBhZ2UpCiAgICAgOiBtX3BhZ2UobnVsbHB0cikKLSAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGll
cyhzdGQ6Om1ha2VfdW5pcXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCisgICAgLCBtX2ZvbnRH
ZW5lcmljRmFtaWxpZXMobWFrZVVuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQogICAgICwg
bV9sYXlvdXRJbnRlcnZhbChsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCkKICAgICAsIG1fbWluaW11
bURPTVRpbWVySW50ZXJ2YWwoRE9NVGltZXI6OmRlZmF1bHRNaW5pbXVtSW50ZXJ2YWwoKSkKICAg
ICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcigqdGhpcywgJlNldHRpbmdzQmFzZTo6
aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRh
YmxlVGltZXIuaAppbmRleCA1NTg0NDM0MDc4MzQ2ZmI5YjU3YTZlYTU5YWZjZTI3YTYyNDBiNTVh
Li4zYzNkNDllMDU4YWIxMzE3NDdlYjQ5YmIwYzkzYTBmZDI5NDUxOGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBTdXNwZW5kYWJsZVRpbWVyIDogcHJpdmF0ZSBUaW1lckJhc2UsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOwogICAgIHZpcnR1YWwgflN1c3BlbmRhYmxlVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBiOWNlOThjYzZjYTVjMjQ1NmNk
Yjk0ZjVkYzQxYjRkMmI1MGU5OGY2Li42NTIzMTFkN2E1NWY1NTA3YTA1YWE0M2I2MmM4MDIwODcy
MmRiYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpmb3JFYWNo
VXNlck1lc3NhZ2VIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgVXNlck1lCiAKIHZvaWQgVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0PiB1c2VyU2NyaXB0KQogewotICAgIGF1dG8mIHNj
cmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7
CisgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQs
IFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPFVzZXJTY3JpcHRWZWN0b3I+KCk7IH0pLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclNjcmlwdCkp
OwogfQogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJl
bW92ZVVzZXJTY3JpcHRzKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAKIHZvaWQgVXNlckNvbnRl
bnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBz
dGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0LCBVc2VyU3R5bGVJ
bmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAgYXV0byYgc3R5bGVTaGVldHNJbldv
cmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICBhdXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1cmUo
JndvcmxkLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldFZlY3Rvcj4oKTsg
fSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5kKFdURk1v
dmUodXNlclN0eWxlU2hlZXQpKTsKIAogICAgIGlmIChpbmplY3Rpb25UaW1lID09IEluamVjdElu
RXhpc3RpbmdEb2N1bWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVs
RXZlbnREZWx0YUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0
YUZpbHRlci5jcHAKaW5kZXggZjI1OWFlYjFhMGE5ZTVjZTdhMTM0ZjBkMTI2OWVjMzE0YzlhOWMz
MS4uMzA0ZDk0YTc1YmYzNjFkOGRkNDZmNmFmZmFmZTMxYzNlZjgyYTQ0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcApAQCAtNDMsOSArNDMsOSBA
QCBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6On5XaGVlbEV2ZW50RGVsdGFGaWx0ZXIoKSA9IGRlZmF1
bHQ7CiBzdGQ6OnVuaXF1ZV9wdHI8V2hlZWxFdmVudERlbHRhRmlsdGVyPiBXaGVlbEV2ZW50RGVs
dGFGaWx0ZXI6OmNyZWF0ZSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFdoZWVsRXZlbnREZWx0YUZpbHRlck1hYz4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CiAjZWxzZQotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOwogI2VuZGlmCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAKaW5kZXggMTQ0NjYzY2FlOTU5NzljZmNjN2M0YTIyNDJlMWQxNjFkNjEw
MjkyNS4uMTNjMzFmNTc2NGI3YjIyNGEyYjdlYTU1YWUzM2E2YjM5ODZiOTZkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJv
bGxlci5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjphbmltYXRpb25XaWxsQmVSZW1vdmVkKEFuaW1hdGlvbkJhc2UmIGFuaW1hdAogfQog
CiBDU1NBbmltYXRpb25Db250cm9sbGVyOjpDU1NBbmltYXRpb25Db250cm9sbGVyKEZyYW1lJiBm
cmFtZSkKLSAgICA6IG1fZGF0YShzdGQ6Om1ha2VfdW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlPihmcmFtZSkpCisgICAgOiBtX2RhdGEobWFrZVVuaXF1ZTxDU1NBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNzRlZWRj
OTk2NmU5ZjgxYWNiOTk2Y2YzNzY5ODNkYWI2ODU1NDBjNi4uYmFlYjI0NzY1NzE2NzM3Yjg0YTFj
YzhmMTlkZTAxNzNmMzY3ZTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHN0
YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBD
U1NQcm9wZXJ0eUJsZW5kaW5nQ2xpCiB7CiAgICAgQVNTRVJUKGZyb20gJiYgdG8pOwogICAgIGlm
IChmcm9tLT5zdHlsZSgpICE9IHRvLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTaGFkb3dEYXRhPigqdG8pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFk
b3dEYXRhPigqdG8pOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4o
YmxlbmQoZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChmcm9tLT5sb2NhdGlvbigpLCB0by0+
bG9jYXRpb24oKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5yYWRpdXMoKSwgdG8t
PnJhZGl1cygpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kKGZyb20tPnNwcmVhZCgpLCB0by0+
c3ByZWFkKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20tPnN0eWxl
KCksIHRvLT5zdHlsZSgpLCBwcm9ncmVzcyksCkBAIC05NzQsMTUgKzk3NCwxNSBAQCBjbGFzcyBQ
cm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvciA6IHB1YmxpYyBBbmltYXRpb25Qcm9w
ZXJ0eVdyYXBwZXJCYXNlCiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3Io
Q1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgp
IGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAg
ICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZv
aWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAg
OiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVy
KHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0
dGVyKSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVy
dHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAg
ICAgICAsIG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBn
ZXR0ZXIsIHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVlPFBy
b3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkK
ICAgICB7CiAgICAgfQogICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENT
U1Byb3BlcnR5SUQgcHJvcCwgTWF5YmVJbnZhbGlkQ29sb3JUYWcsIGNvbnN0IENvbG9yJiAoUmVu
ZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShj
b25zdCBDb2xvciYpLAogICAgICAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqdmlzaXRl
ZEdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0dGVyKShjb25z
dCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkK
LSAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXli
ZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAgICAgICAsIG1fdmlzaXRl
ZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xv
cj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCisgICAgICAgICwgbV93cmFw
cGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIGdl
dHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKG1ha2VVbmlxdWU8UHJv
cGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0
ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUmVuZGVyU3R5
bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKSBjb25zdCBvdmVycmlkZQpAQCAtMTIyOSwxOSAr
MTIyOSwxOSBAQCBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFuaW1h
dGlvblByb3BlcnR5V3JhcHBlckJhc2UgewogICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAgICAgICAgICAgIG1fZmlsbExheWVy
UHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3Bl
cnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6
c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6
c2V0QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKKyAgICAgICAgICAgIG1fZmlsbExh
eWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5
V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0
WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0
QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclBy
b3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0
eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNl
dFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFlPcmlnaW4sICZGaWxsTGF5ZXI6OnNl
dEJhY2tncm91bmRZT3JpZ2luLCBFZGdlOjpCb3R0b20pOworICAgICAgICAgICAgbV9maWxsTGF5
ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlX
cmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZ
UG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpzZXRC
YWNrZ3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tTaXplOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVy
dHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOwor
ICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxM
YXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnNp
emVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgICAgICAgICBt
X2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyU3R5
bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmls
bExheWVyOjpzZXRJbWFnZSk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBl
ciA9IG1ha2VVbmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVy
dHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc3MCw3
ICsxNzcwLDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFu
aW1hdGlvbldyYXBwZXJNYXAoKQogICAgICAgICAgICAgbG9uZ2hhbmRXcmFwcGVycy51bmNoZWNr
ZWRBcHBlbmQobV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJbmRleF0uZ2V0KCkpOwogICAgICAg
ICB9CiAKLSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShs
b25naGFuZFdyYXBwZXJzKSkpOworICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVja2Vk
QXBwZW5kKG1ha2VVbmlxdWU8U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eUlELCBX
VEZNb3ZlKGxvbmdoYW5kV3JhcHBlcnMpKSk7CiAgICAgICAgIGluZGV4RnJvbVByb3BlcnR5SUQo
cHJvcGVydHlJRCkgPSBhbmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQgKyBpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCmluZGV4IDcwNDdlODNkZTc4NWRiODFiNmQ5OTBhOTQ4MzdiYTcxZDcyODI5YTAuLjhm
MGY2YmY1M2IwM2UwOGY3MDMzMTY2ZWI4Yzc0ZDZiZjk3MjgzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMjM4LDcgKzIz
OCw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0
IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6dXBkYXRlU291cmNlU2VsZihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4p
CiB7CiAgICAgbV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgp
OwotICAgIG1fc2VsZlNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhv
c3QoKSwgc2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2Up
OworICAgIG1fc2VsZlNvdXJjZSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwg
c2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOwogfQog
CiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaAppbmRleCBhOGYxZDRmMGJkZTE0ZjE0Yjg4YWEzOTQw
ZWRkOGM4OTYyNjFlM2RlLi5iYmQ5MTg5ZTI0ODM0ZGFjYzhkN2JhZTE1Y2M1ODE2Y2EzMjBjZjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogCiBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZShjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiBkaXJlY3RpdmVMaXN0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCmluZGV4IGRkYmQ4Y2RlMjc4MGU5MmRiYTIwZTBhYmQ5
OWNmMDQ5ODQzZjRjNGQuLmMwMTU2ZGRmMDFjOTQ3ZTUwNGI1NjlkMGE0MTE2OThjNTU4ZjNlZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdChDb250ZW50U2UKIAogc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q+IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0
ZShDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBoZWFkZXIsIENv
bnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUgdHlwZSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpQb2xpY3lGcm9tIGZyb20pCiB7Ci0gICAgYXV0byBkaXJlY3RpdmVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pihwb2xpY3ksIHR5cGUpOwor
ICAgIGF1dG8gZGlyZWN0aXZlcyA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsKICAgICBkaXJlY3RpdmVzLT5wYXJzZShoZWFkZXIs
IGZyb20pOwogCiAgICAgaWYgKCFjaGVja0V2YWwoZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0
aXZlKGRpcmVjdGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKSkpIHsKQEAgLTQ1Miw3ICs0NTIsNyBA
QCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgogICAgICAgICBtX3BvbGljeS5yZXBvcnREdXBsaWNh
dGVEaXJlY3RpdmUobmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZGlyZWN0aXZl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDU1BEaXJlY3RpdmVUeXBlPigqdGhpcywgbmFtZSwgdmFsdWUp
OworICAgIGRpcmVjdGl2ZSA9IG1ha2VVbmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5h
bWUsIHZhbHVlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjphcHBseVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNh
bmRib3hQb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50
Q2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VP
YnNlcnZlci5oCmluZGV4IGNhYmQwMTM5ZTUzZDM5M2Y1MTczNTEwNWJiMGI3MWYxYjhjMTYwY2Eu
LmRiYjA2ZGU1NmQwNTc0NzczN2MxNDU5NzJmYjgzMDM2NWYyYTE4OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCkBAIC00NCw2ICs0NCw3
IEBAIGNsYXNzIERPTVRpbWVyOwogY2xhc3MgRWxlbWVudDsKIAogY2xhc3MgQ29udGVudENoYW5n
ZU9ic2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRlbnRDaGFu
Z2VPYnNlcnZlcihEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9ET01U
aW1lckhvbGRpbmdUYW5rLmgKaW5kZXggYjYyMTg0ZmUxNzk0MmRhOTQ4NTlhODAyY2VmZGU3NmUy
NDJkM2U0Yy4uYmJmNzk0NWFhYTQ5OWE3NmI3ZTEyYWIzYzc1ZDU5NDQyMWU0NWVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaApAQCAtMzUsNiAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01UaW1lcjsKIAogY2xhc3MgRE9N
VGltZXJIb2xkaW5nVGFuayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgRE9NVGltZXJIb2xkaW5nVGFuaygpOwogICAgIH5ET01UaW1lckhvbGRpbmdUYW5rKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVy
bGF5TGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3Zl
cmxheUxpbnV4LmNwcAppbmRleCA0ZmRmNzU2YzAyMTk4ODUzM2IyZjEyNTVjOTFhNGVjYzkxNDg0
ZmE0Li5jMDdiMTI3NjljZDA0YmE3YjMxZjg4YzQ2YTlmMDZiNmFkNmI0OWQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51
eC5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIFN0cmluZyBnY1RpbWVyU3RyaW5nKE1vbm90
b25pY1RpbWUgdGltZXJGaXJlRGF0ZSwgTW9ub3RvbmljVGltZSBub3cpCiBzdGF0aWMgY29uc3Qg
ZmxvYXQgZ0ZvbnRTaXplID0gMTQ7CiAKIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRl
ciBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIoUmVz
b3VyY2VVc2FnZU92ZXJsYXkmIG92ZXJsYXkpCiAgICAgICAgIDogbV9vdmVybGF5KG92ZXJsYXkp
CkBAIC0xMzIsNyArMTMzLDcgQEAgY2xhc3MgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyIGZp
bmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewogCiB2b2lkIFJlc291cmNlVXNhZ2VP
dmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotICAgIG1fb3ZlcmxheVBhaW50ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlcj4oKnRoaXMpOworICAg
IG1fb3ZlcmxheVBhaW50ZXIgPSBtYWtlVW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRl
cj4oKnRoaXMpOwogICAgIG1fcGFpbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShvdmVy
bGF5KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAq
bV9vdmVybGF5UGFpbnRlcik7CiAgICAgbV9wYWludExheWVyLT5zZXRBbmNob3JQb2ludChGbG9h
dFBvaW50M0QoKSk7CiAgICAgbV9wYWludExheWVyLT5zZXRTaXplKHsgbm9ybWFsV2lkdGgsIG5v
cm1hbEhlaWdodCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IGQ3YWRmZmQ3
MmY5ZmE4ZmU5N2FmY2RhMDcxOGQ4M2M2ZTA5MDg1MGMuLjA4NjNhZDI2NzI1ZDY1NTQ3NTJiN2Fj
MjE0OGVlZDFjNmRmYzIzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1Bh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtOTAs
NyArOTAsNyBAQCB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB2b2lkIFBhZ2U6OmFk
ZFNjaGVkdWxlUGFpcihSZWY8U2NoZWR1bGVQYWlyPiYmIHBhaXIpCiB7CiAgICAgaWYgKCFtX3Nj
aGVkdWxlZFJ1bkxvb3BQYWlycykKLSAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CisgICAgICAgIG1fc2NoZWR1
bGVkUnVuTG9vcFBhaXJzID0gbWFrZVVuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOwogICAg
IG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5hZGQocGFpci5wdHIoKSk7CiAKICAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvVGV4dEluZGljYXRvcldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dElu
ZGljYXRvcldpbmRvdy5oCmluZGV4IGRjZGQ5NTA0OGJkOTU4YWE3NDQwYTBmYzNkOWJjZTdkZjJm
NTQ4MGYuLjY0NzVjZTVlYmM5MDdhZTE4ODBhZjE3MWMwNzM2ZmYzZWNiNTAyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKQEAgLTUyLDYgKzUy
LDcgQEAgZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9uIDog
dWludDhfdCB7CiAjaWYgUExBVEZPUk0oTUFDKQogCiBjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShUZXh0SW5kaWNhdG9yV2luZG93KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApp
bmRleCAzMDZjZmVkMTljZTZkMDBiNjJhODUyNDk3MDAyOGI4MDQ1ZmFkODIzLi4wMGFmMzk0Nzhk
Yzc1ZjcwMjljMjQ4NDU0ZWYwMWFiMGM2YzdkMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApA
QCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqIHBhZ2UpCiAgICAgOiBTY3Jv
bGxpbmdDb29yZGluYXRvcihwYWdlKQogICAgICwgbV91cGRhdGVOb2RlU2Nyb2xsUG9zaXRpb25U
aW1lcigqdGhpcywgJkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0
aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmlyZWQpCi0gICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJl
ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhpcykpCisgICAgLCBtX3Nj
cm9sbGluZ1N0YXRlVHJlZShtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhpcykpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25h
cE9mZnNldHNJbmZvLmgKaW5kZXggNjNiZDk2MzhiNjNhMWExMWNhNDBmMzY3MjEyOWY3MTQxMGM2
ZmYyZS4uM2FiNjQwNjgyNjRjNTA0MDhiYWI0ZWUzOGQyY2NkNGE2NDFjNzg2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmgKQEAgLTM3LDYgKzM3LDcgQEAgc3RydWN0IFNjcm9sbE9mZnNldFJhbmdlIHsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVmVjdG9yPFQ+IGhvcml6b250YWxTbmFw
T2Zmc2V0czsKICAgICBWZWN0b3I8VD4gdmVydGljYWxTbmFwT2Zmc2V0czsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvci5jcHAKaW5kZXggNzY0MGQ1NWQ5NmEzZjA5NTliOTMxZWYwNDMzZWMxNWZhMjA3
ZGJkNC4uYzg5MGY5ZWJhMDA0Y2E4NzgwMTQxYjg1Y2VlZTAwNTU2MmUyZTQ0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwCkBAIC03MSw3ICs3MSw3IEBAIEZsb2F0U2l6ZSBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkKIAogc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwg
aW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJh
c2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXpl
LCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xs
aW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKaW5kZXggYmU5
OWQwZWU2YTNmMDc4OWZjNGQ3ZGM2OTI4ODViNTI0MDA0MzgwMi4uMjFjMzExY2Q4OWI3OTQwODRh
ODQ5MGQ1ZmM5YmE1NWE5M2I5YWViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTM5LDYg
KzM5LDcgQEAgY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIAogY2xhc3MgU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0
UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZp
ZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2lu
dCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCmluZGV4IDk2ODJkMmMxYmNlZTM3NTcx
M2MzNDZkM2UzM2NkNGRjMTM1YWZjNzguLmJlNTdjOWI4NjlkMGNjNTIzODZiMDA0NmE1MDdkMzRj
ODQwYzgxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVOb2RlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSkK
ICAgICBjaGlsZE5vZGUtPnNldFBhcmVudCh0aGlzKTsKIAogICAgIGlmICghbV9jaGlsZHJlbikK
LSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3Jv
bGxpbmdTdGF0ZU5vZGU+Pj4oKTsKKyAgICAgICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVj
dG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5hcHBl
bmQoV1RGTW92ZShjaGlsZE5vZGUpKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ2hpbGROb2Rl
cyk7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2Vy
dENoaWxkKFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+JiYgY2hpbGROb2RlLCBzaXplX3QKIAogICAg
IGlmICghbV9jaGlsZHJlbikgewogICAgICAgICBBU1NFUlQoIWluZGV4KTsKLSAgICAgICAgbV9j
aGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5v
ZGU+Pj4oKTsKKyAgICAgICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0cjxT
Y3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBtX2NoaWxk
cmVuLT5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVRyZWUuY3BwCmluZGV4IGY2MWUyOGUwZWM1MDMwMTJiMzcyZmIyNTU2OWE4
Y2I3ZGQ1M2FhNzAuLjcxNTdlMTY4NjBmNDljOTFkZGEzNWJiYzRlYWZlOTgxOWVhY2JlNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJl
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0
ZVRyZWU+IFNjcm9sbGluZ1N0YXRlVHJlZTo6Y29tbWl0KExheWVyUmVwcmVzZW50YXRpCiAgICAg
fQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBjbG9uZXMgYW5kIHJlc2V0cyB0aGUgY3VycmVudCBz
dGF0ZSB0cmVlLCBidXQgbGVhdmVzIHRoZSB0cmVlIHN0cnVjdHVyZSBpbnRhY3QuCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsaW5nU3RhdGVUcmVlPiB0cmVlU3RhdGVDbG9uZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3Rh
dGVUcmVlPigpOwogICAgIHRyZWVTdGF0ZUNsb25lLT5zZXRQcmVmZXJyZWRMYXllclJlcHJlc2Vu
dGF0aW9uKHByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24pOwogCiAgICAgaWYgKG1fcm9vdFN0
YXRlTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVOb2RlLmNwcAppbmRleCBlYTc0ZTJjYTQyNDI5YThlMmJlOWY5YTM3OWUzNjdkYTRkZGRh
M2QxLi43Mjk2MTVhNjlmMDEyMjYzMTUxNDdlY2ZkYjU1MjhiMDE5OWYzODYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKFJlZjxT
Y3JvbGxpbmdUcmVlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQYXJlbnQo
dGhpcyk7CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsKKyAgICAg
ICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9k
ZT4+PigpOwogICAgIG1fY2hpbGRyZW4tPmFwcGVuZChXVEZNb3ZlKGNoaWxkTm9kZSkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQppbmRleCAxYzdhYjc2YTE1MWU2
MzUwZDhiNjE0YzM2ZDA1YmNlNjVjNmM5NTg0Li5iNDNlYTk5NWZhZjZiNDcwMzM1ZmJmMDdhMjA4
NmE2YjM1ZjcwZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KQEAg
LTM2LDcgKzM2LDcgQEAgc3RhdGljIGJvb2wgZ0VuYWJsZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxp
bmdQcmVkaWN0aW9uID0gdHJ1ZTsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRh
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM+KHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM+
KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwg
aW5pdGlhbFZlbG9jaXR5KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKaW5kZXggNzFlNDNkM2YzYjk0NjEw
NjA4Y2JmMTFkYjUxMTViY2JlYzA1NDg5MC4uMDg4ZGY1NDNlMDQ3OTExN2M4MzdhZmUyMjNiYmNj
NTUxNDg4YTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaApAQCAtMzMsNiAr
MzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDUFVNb25pdG9yIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBFeGNlZWRlZENQVUxp
bWl0SGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChkb3VibGUpPjsKICAgICBXRUJDT1JFX0VY
UE9SVCBDUFVNb25pdG9yKFNlY29uZHMgY2hlY2tJbnRlcnZhbCwgRXhjZWVkZWRDUFVMaW1pdEhh
bmRsZXImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaAppbmRleCBlNjBmNzcx
M2Y2MmJiMjU2MmE4NDI4ODhjN2ZjNjI5ZjJjNTQ3ZjMzLi42YjI4OGUxZTE3ZTQ0OGJiODZmYjll
Y2UyOWNjOWU1YmRiOWRkOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgK
QEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsZU1vbml0
b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xh
c3MgRmlsZUNoYW5nZVR5cGUgeyBNb2RpZmljYXRpb24sIFJlbW92YWwgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5jcHAKaW5kZXggNGZmOTgwNGVhZWMxMzA2YjI2OGEyNDVmMjc3MWExMTJl
MjhkMmExZS4uM2ZjNDMxYTQ3NDYxZDhjNDQzZGI0YjYyMmQ2ZWE5MDYzNGRhMGYyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCkBAIC0yODgsOSArMjg4LDkgQEAgTGVuZ3RoIGNvbnZl
cnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAvLyBU
dXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAg
ICBsZW5ndGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNr
ZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEw
MCwgUGVyY2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2Fs
Y09wZXJhdG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVu
aXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBs
ZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihs
ZW5ndGgpKTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlv
bj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJu
IExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VB
bGwpKTsKIH0KIApAQCAtMzAyLDcgKzMwMiw3IEBAIHN0YXRpYyBMZW5ndGggYmxlbmRNaXhlZFR5
cGVzKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyCiAg
ICAgaWYgKHByb2dyZXNzID49IDEuMCkKICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAKLSAg
ICBhdXRvIGJsZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3Ro
Pihmcm9tLCB0bywgcHJvZ3Jlc3MpOworICAgIGF1dG8gYmxlbmQgPSBtYWtlVW5pcXVlPENhbGNF
eHByZXNzaW9uQmxlbmRMZW5ndGg+KGZyb20sIHRvLCBwcm9ncmVzcyk7CiAgICAgcmV0dXJuIExl
bmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFuZ2VB
bGwpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29t
bWFuZExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lci5jcHAKaW5kZXggNTUyYjEyZjZjMWU4Y2RhNmZmZWE2NDc4NjkyMjI5ZWE5M2VkMTdj
YS4uOGUzNWUzMDRjMWU3MjU3YmM2NGM2YWQxMGVkZGU5NjQyMDRlNjU4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCkBAIC0zMSw3
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAoIVBMQVRGT1JNKElPU19GQU1JTFkp
ICYmICFQTEFURk9STShNQUMpKSB8fCAhSEFWRShNRURJQV9QTEFZRVIpCiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShS
ZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXI+KGNsaWVudCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihjbGllbnQpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKaW5kZXggMmU1ZjYzYmNlZjJi
ZmRmY2ZmOTIxNmQ5ODZiMGY0MzYwYzY4MGI0MS4uYjdjMWQyNGViNDllNWE1NWY2OTFmMDZjZTll
MWQ4MGIyMWJjY2FkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
LmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIFNjcm9sbGFibGVB
cmVhOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbigpIHsgfTsKICAgICB2
aXJ0dWFsIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0
eSwgZmxvYXQgLyogc3RlcCAqLywgZmxvYXQgLyogbXVsdGlwbGllciAqLykgeyByZXR1cm4gdHJ1
ZTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBk
OTE1NGQ5MzUxYTJmMzM2NmRkZDA1ZmU2MGZkZWJiOWMxYTFlNzM4Li5mOGVkYzg4MmQ3ZjM2MDAy
ZTE5ODUxMGQ4MWI4ZWIzNGFhNTAwN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNp
ZiAhRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmlt
YXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4
IGM2MmFkODM0ZTZiMzgwOGUxZWNkYThiYTEzMTJkM2Q5NTcwNWU5NmEuLjk2ZDBmMzAwYjM0MThl
NjA4MjFkYTJkYTJhNjQxODljNGRlZTBiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgU2Nyb2xsQW5pbWF0b3ImIFNjcm9s
bGFibGVBcmVhOjpzY3JvbGxBbmltYXRvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Njcm9sbEFu
aW1hdG9yKSB7CiAgICAgICAgIGlmICh1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCkpIHsKLSAgICAg
ICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9y
TW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0aGlzKSwgW3RoaXNdKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgeworICAgICAgICAgICAgbV9zY3JvbGxBbmltYXRvciA9IG1ha2VVbmlx
dWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25zdF9jYXN0PFNjcm9sbGFibGVBcmVhJj4oKnRoaXMp
LCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CiAgICAgICAgICAgICAgICAgbG9nTW9j
a1Njcm9sbEFuaW1hdG9yTWVzc2FnZShtZXNzYWdlKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9IGVsc2UKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIFNjcm9sbGFibGVBcmVhOjpoYXNMYXll
ckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5p
dD4mIFNjcm9sbGFibGVBcmVhOjplbnN1cmVTbmFwT2Zmc2V0c0luZm8oKQogewogICAgIGlmICgh
bV9zbmFwT2Zmc2V0c0luZm8pCi0gICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+KCk7CisgICAgICAgIG1f
c25hcE9mZnNldHNJbmZvID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0
VW5pdD4+KCk7CiAgICAgcmV0dXJuICptX3NuYXBPZmZzZXRzSW5mbzsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKaW5kZXggNzJiMDA0NTEzMTQyYzhm
NGU5NWRmMjI4MThjM2RkYzE4MGFhZWNlZC4uMGQ3NGIxNmU1OTI1OThhYjgzYjBjOGMwZWI1NGI0
NDZkZmQzOGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVy
bWluYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlv
bi5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAg
Y2xhc3MgU3VkZGVuVGVybWluYXRpb25EaXNhYmxlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdWRkZW5UZXJtaW5hdGlv
bkRpc2FibGVyKTsKICAgICBwdWJsaWM6CiAgICAgICAgIFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJs
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAppbmRl
eCBhMjgwMTBlY2ZlNWEzNjdhZDlkMGIyOWEyMDA1NjNhMGY1NjFkNTYwLi4yN2E3MzY0MTZiYTA0
YzA1M2MyZTc3ZGIyYzU1ODE0NDQwZDJmMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtNDAsMTQgKzQwLDE0IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEoKQotICAgIDogbV9j
YWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKKyAgICA6IG1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycyhtYWtlVW5pcXVlPENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+KCkp
CiAgICAgLCBtX2V2ZW50TmFtZXMoRXZlbnROYW1lczo6Y3JlYXRlKCkpCi0gICAgLCBtX3RocmVh
ZFRpbWVycyhzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZFRpbWVycz4oKSkKLSAgICAsIG1fcXVhbGlm
aWVkTmFtZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8UXVhbGlmaWVkTmFtZUNhY2hlPigpKQorICAg
ICwgbV90aHJlYWRUaW1lcnMobWFrZVVuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCisgICAgLCBtX3F1
YWxpZmllZE5hbWVDYWNoZShtYWtlVW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkKICNpZm5k
ZWYgTkRFQlVHCiAgICAgLCBtX2lzTWFpblRocmVhZChpc01haW5UaHJlYWQoKSkKICNlbmRpZgot
ICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1Uoc3RkOjptYWtlX3VuaXF1ZTxJQ1VDb252ZXJ0ZXJX
cmFwcGVyPigpKQorICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1UobWFrZVVuaXF1ZTxJQ1VDb252
ZXJ0ZXJXcmFwcGVyPigpKQogewogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igd2lsbCBoYXZlIGJl
ZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgYmVpbmcgY2FsbGVkIG9uCiAgICAg
Ly8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHRocmVhZCAt
IHRoaXMgbWFrZXMgdGhpcyBhIGNvbnZlbmllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQnVzLmNwcAppbmRleCAyZjg5MmQ2YjE5YWJhNDIzMGU5MjRjNzYxODczOGZjNmNi
NDhmN2VjLi5lNzBkNDZkMGI5ZjI0MDdmOTA4NTQ4ZmE4ZjJlOThjOWRhNDU2M2I3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IEF1ZGlvQnVzOjpBdWRpb0J1cyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbGVu
Z3RoLCBib29sIGFsbG9jYXRlKQogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1i
ZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgYXV0byBjaGFubmVsID0gYWxsb2NhdGUgPyBz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9DaGFubmVsPihudWxscHRyLCBsZW5ndGgpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBh
bGxvY2F0ZSA/IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihsZW5ndGgpIDogbWFrZVVuaXF1ZTxB
dWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0aCk7CiAgICAgICAgIG1fY2hhbm5lbHMudW5jaGVj
a2VkQXBwZW5kKFdURk1vdmUoY2hhbm5lbCkpOwogICAgIH0KIApAQCAtNDg5LDcgKzQ4OSw3IEBA
IHZvaWQgQXVkaW9CdXM6OmNvcHlXaXRoR2FpbkZyb20oY29uc3QgQXVkaW9CdXMgJnNvdXJjZUJ1
cywgZmxvYXQqIGxhc3RNaXhHYWluLCBmCiAKICAgICBpZiAoZnJhbWVzVG9EZXppcHBlcikgewog
ICAgICAgICBpZiAoIW1fZGV6aXBwZXJHYWluVmFsdWVzLmdldCgpIHx8IG1fZGV6aXBwZXJHYWlu
VmFsdWVzLT5zaXplKCkgPCBmcmFtZXNUb0RlemlwcGVyKQotICAgICAgICAgICAgbV9kZXppcHBl
ckdhaW5WYWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZnJhbWVzVG9E
ZXppcHBlcik7CisgICAgICAgICAgICBtX2RlemlwcGVyR2FpblZhbHVlcyA9IG1ha2VVbmlxdWU8
QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0RlemlwcGVyKTsKIAogICAgICAgICBmbG9hdCogZ2Fp
blZhbHVlcyA9IG1fZGV6aXBwZXJHYWluVmFsdWVzLT5kYXRhKCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmcmFtZXNUb0RlemlwcGVyOyArK2kpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCmluZGV4IDIxNzNkYzkzODNlNGEzM2MxYjU5MzQ3NjVh
MWU1YjEwNzQ2ZjAzYTEuLmJiYjNkMmFjZDIyYzU3MmJjOTIzYTQ4YjFmNzBhZjg1NGMwY2IwMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaApAQCAtNDAsNyArNDAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBbiBBdWRpb0J1cyByZXByZXNlbnRzIGEgY29s
bGVjdGlvbiBvZiBvbmUgb3IgbW9yZSBBdWRpb0NoYW5uZWxzLgogLy8gVGhlIGRhdGEgbGF5b3V0
IGlzICJwbGFuYXIiIGFzIG9wcG9zZWQgdG8gImludGVybGVhdmVkIi4KIC8vIEFuIEF1ZGlvQnVz
IHdpdGggb25lIGNoYW5uZWwgaXMgbW9ubywgYW4gQXVkaW9CdXMgd2l0aCB0d28gY2hhbm5lbHMg
aXMgc3RlcmVvLCBldGMuCi1jbGFzcyBBdWRpb0J1cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxBdWRpb0J1cz4geworY2xhc3MgQXVkaW9CdXMgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8QXVkaW9CdXM+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb0J1
cyk7CiBwdWJsaWM6CiAgICAgZW51bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvQ2hhbm5lbC5oCmluZGV4IGJiYzEzNTdhM2Q1M2YwNTQ4Zjg4NzhlNTg3ZGI3ZDZkZDFj
NGZhZDguLjdiOTg5M2QzOGFjNDE3NDUzMTc0MWI3NzI0YzZmZjJhYmQwMWRmOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCkBAIC0zNyw3ICszNyw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQW4gQXVkaW9DaGFubmVsIHJlcHJlc2VudHMg
YSBidWZmZXIgb2Ygbm9uLWludGVybGVhdmVkIGZsb2F0aW5nLXBvaW50IGF1ZGlvIHNhbXBsZXMu
CiAvLyBUaGUgUENNIHNhbXBsZXMgYXJlIG5vcm1hbGx5IGFzc3VtZWQgdG8gYmUgaW4gYSBub21p
bmFsIHJhbmdlIC0xLjAgLT4gKzEuMAotY2xhc3MgQXVkaW9DaGFubmVsIHsKK2NsYXNzIEF1ZGlv
Q2hhbm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQXVkaW9DaGFubmVsKTsKIHB1YmxpYzoKICAgICAvLyBNZW1vcnkgY2Fu
IGJlIGV4dGVybmFsbHkgcmVmZXJlbmNlZCwgb3IgY2FuIGJlIGludGVybmFsbHkgYWxsb2NhdGVk
IHdpdGggYW4gQXVkaW9GbG9hdEFycmF5LgpAQCAtNTYsNyArNTcsNyBAQCBjbGFzcyBBdWRpb0No
YW5uZWwgewogICAgICAgICAsIG1fcmF3UG9pbnRlcigwKQogICAgICAgICAsIG1fc2lsZW50KHRy
dWUpCiAgICAgewotICAgICAgICBtX21lbUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9G
bG9hdEFycmF5PihsZW5ndGgpOworICAgICAgICBtX21lbUJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVk
aW9GbG9hdEFycmF5PihsZW5ndGgpOwogICAgIH0KIAogICAgIC8vIEEgImJsYW5rIiBhdWRpbyBj
aGFubmVsIC0tIG11c3QgY2FsbCBzZXQoKSBiZWZvcmUgaXQncyB1c2VmdWwuLi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKaW5kZXggNzVjOWFiZDc0OTRkMzU4MjJm
ODJhY2U3Y2NkMGQ4NTY4NjExZDdlYS4uMGY0MzhkZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2
NjMwOGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9G
SUZPLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKQEAg
LTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0ZJRk8g
eworY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBGSUZPIGxhcmdlIGVub3VnaCB0byBob2xkIHxmaWZv
TGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVsc3wgY2hhbm5lbHMuCiAg
ICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBmaWZvTGVuZ3Ro
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJ
Rk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAppbmRl
eCBiZmJlOTgzYTU3NWE0NTRhYWMyYjBjM2NiZTQ1NzVlZmFmNmI3OGQ3Li5kNzQ4ZmE0MTM4NzM3
OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIHRoZSBGSUZPIHdpbGwgYXNrIHRoZSBwcm92aWRlciBmb3IgbW9yZSBkYXRhIHdo
ZW4gbmVjZXNzYXJ5IHRvIGZ1bGZpbGwgYSByZXF1ZXN0LiBDb250cmFzdCB0aGlzCiAvLyB3aXRo
IGEgInB1c2giIEZJRk8sIHdoZXJlIHRoZSBzZW5kZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJRk8g
d2hpY2ggd2lsbCBpdHNlbGYgcHVzaCB0aGUgZGF0YSB0bwogLy8gdGhlIHJlY2VpdmVyIHdoZW4g
dGhlIEZJRk8gaXMgZnVsbC4KLWNsYXNzIEF1ZGlvUHVsbEZJRk8geworY2xhc3MgQXVkaW9QdWxs
RklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
Ly8gQ3JlYXRlIGEgRklGTyB0aGF0IGdldHMgZGF0YSBmcm9tIHxwcm92aWRlcnwuIFRoZSBGSUZP
IHdpbGwgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQKICAgICAvLyB8Zmlmb0xlbmd0aHwgZnJhbWVz
IG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLiBUaGUgQXVkaW9Tb3VyY2VQ
cm92aWRlciB3aWxsIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlci5jcHAKaW5kZXggODY5MDZiYTUxMjQ3NTg2OTJjNjgzZTJiYzkwMzgzNTAxZWFi
OGZkOS4uMjg0YzA1NDk0MzI1OTM0NGVhY2UzMjQxOGFkYTliODMwM2RhMmU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcApAQCAtMzks
NyArMzksNyBAQCBjb25zdCBkb3VibGUgQXVkaW9SZXNhbXBsZXI6Ok1heFJhdGUgPSA4LjA7CiBB
dWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIoKQogICAgIDogbV9yYXRlKDEuMCkKIHsKLSAg
ICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+
KHRoaXMpKTsKKyAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJL
ZXJuZWw+KHRoaXMpKTsKICAgICBtX3NvdXJjZUJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgMCwg
ZmFsc2UpOwogfQogCkBAIC00Nyw3ICs0Nyw3IEBAIEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2Ft
cGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgIDogbV9yYXRlKDEuMCkKIHsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAg
ICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+
KHRoaXMpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1w
bGVyS2VybmVsPih0aGlzKSk7CiAKICAgICBtX3NvdXJjZUJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUo
bnVtYmVyT2ZDaGFubmVscywgMCwgZmFsc2UpOwogfQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEF1
ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
KQogICAgIC8vIEZpcnN0IGRlYWwgd2l0aCBhZGRpbmcgb3IgcmVtb3Zpbmcga2VybmVscy4KICAg
ICBpZiAobnVtYmVyT2ZDaGFubmVscyA+IGN1cnJlbnRTaXplKSB7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGN1cnJlbnRTaXplOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAg
ICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2Vy
bmVsPih0aGlzKSk7CisgICAgICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVk
aW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9rZXJuZWxz
LnJlc2l6ZShudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKaW5kZXggZDExZmE5M2ViYWFjYmQ4ZTU2Yjk4ZGEzMzc1
ZmFlMTQwNjhlM2JjOS4uMjAxNmJhZmY3Yzg4ZGYxOGFmNWQzNTJjMzAxZjVmZjQzNzY4OWY3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCkBA
IC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBhdWRpbyBzdHJlYW0g
bWF5IGJlIHNpbmdsZSBvciBtdWx0aS1jaGFubmVsLgogLy8gVGhlIGRlZmF1bHQgY29uc3RydWN0
b3IgZGVmYXVsdHMgdG8gc2luZ2xlLWNoYW5uZWwgKG1vbm8pLgogCi1jbGFzcyBBdWRpb1Jlc2Ft
cGxlciB7CitjbGFzcyBBdWRpb1Jlc2FtcGxlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXVkaW9SZXNhbXBsZXIoKTsKICAgICBBdWRpb1Jlc2Ft
cGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCmluZGV4IDk5ZDg3N2JiN2Nk
NjhkYmIwNTM2NzdhMDk3Y2Q0ZTBlYWM4M2I3ODIuLjhhYzJiYWE0MmM1ODdhMzQ4NWQ1MzQwMjNh
ZGVlMjRmODgzMjZlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaApAQCAtMzQsNyArMzQsOSBAQCBjbGFzcyBBdWRpb1Jl
c2FtcGxlcjsKIC8vIEF1ZGlvUmVzYW1wbGVyS2VybmVsIGRvZXMgcmVzYW1wbGluZyBvbiBhIHNp
bmdsZSBtb25vIGNoYW5uZWwuCiAvLyBJdCB1c2VzIGEgc2ltcGxlIGxpbmVhciBpbnRlcnBvbGF0
aW9uIGZvciBnb29kIHBlcmZvcm1hbmNlLgogCi1jbGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5lbCB7
CitjbGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9SZXNhbXBsZXJLZXJuZWwp
OwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVyS2VybmVsKEF1ZGlvUmVzYW1wbGVyKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4
IDVjMWJmMmEzMTczNDJlYTNlNTI5MmE3OTdlOGU2NmUxYThkYTM5N2MuLmI1ZmI1ODA2NDhmOWNm
OGVjNGYxODZmYWZhNDhlMTNmZGNmMmY1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtNTAsNiArNTAsNyBAQCBib29sIEF1ZGlvU2Vz
c2lvbjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggMTdkYTgxYjNiNzVkN2E1YWFiODIx
NDg2YjdjMWUzM2YxYThkZjQ2OS4uZTcwMDgyMmZmMWZlZWJkNzgyOWFlYzc1MGNjZTQwYTYwYjky
NTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgK
QEAgLTQ0LDcgKzQ0LDggQEAgZW51bSBjbGFzcyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90
IHsKICAgICBMb25nRm9ybVZpZGVvCiB9OwogCi1jbGFzcyBBdWRpb1Nlc3Npb24geworY2xhc3Mg
QXVkaW9TZXNzaW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Nlc3Npb24pOwogcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBBdWRpb1Nlc3Npb24mIHNoYXJlZFNlc3Npb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKaW5kZXggYmI3MjFhMjNhN2ZjYzc3NGI2MDkzZTRlYTkw
OGM2MGU4OTA4MTA3Yy4uNzEzNDk0YzkxNGQzMzc4NjQzZTI5YTgwYmMzOWU3NzM2NmRmMTgyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKQEAgLTQxLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gICAgbG93cGFzcywgaGlnaHBhc3MsIHNoZWx2aW5nLCBw
YXJhbWV0ZXJpYywgbm90Y2gsIGFsbHBhc3MsIC4uLgogCiBjbGFzcyBCaXF1YWQgZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAgIEJpcXVhZCgpOwog
ICAgIH5CaXF1YWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0NvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaAppbmRleCBkODFj
MDVkYzY4ZTZlMmZhMjFkMjQ1ZGQxMzdiNGYxNzhhMjEyMGI0Li5hN2FjYTNhNGM1NGQyNzRiM2Fh
M2Q0MGFkOWQxNDNlYmRmYzQ1ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9Db25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5o
CkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ29uZSBnYWluIGlz
IGRlZmluZWQgYWNjb3JkaW5nIHRvIHRoZSBPcGVuQUwgc3BlY2lmaWNhdGlvbgogCi1jbGFzcyBD
b25lRWZmZWN0IHsKK2NsYXNzIENvbmVFZmZlY3QgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbmVFZmZlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCmluZGV4IDZlOWY0ZTAxZGFl
NmQ0NWQwMjExMWQ1ZDViMTI4ZWYzODg2YjIyNDIuLmUwYjNlZmQ4MGY3OGZmYWEzMDY1NzMzMjMx
NDcwMmRjNzNhMmYwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0Rlbm9ybWFsRGlzYWJsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
ZW5vcm1hbERpc2FibGVyLmgKQEAgLTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2VuZGlmCiAKICNpZmRlZiBIQVZFX0RFTk9STUFMCi1jbGFzcyBEZW5vcm1hbERpc2FibGVyIHsK
K2NsYXNzIERlbm9ybWFsRGlzYWJsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIERlbm9ybWFsRGlzYWJsZXIoKQogICAgICAgICAgICAgOiBtX3Nh
dmVkQ1NSKDApCkBAIC0xMDMsNyArMTA0LDggQEAgY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CiAK
ICNlbHNlCiAvLyBGSVhNRTogYWRkIGltcGxlbWVudGF0aW9ucyBmb3Igb3RoZXIgYXJjaGl0ZWN0
dXJlcyBhbmQgY29tcGlsZXJzCi1jbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKK2NsYXNzIERlbm9y
bWFsRGlzYWJsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIERlbm9ybWFsRGlzYWJsZXIoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaAppbmRleCA2ZjJmYWY0MGU2MWJmNmUzMmE0ZjQ5
OTk3NjVjOWUxYmI1MTk0MWE4Li41YzhkODY2YzE2NTVjYzM5MWE4MjVkM2IyMzc4OGJmNDBjNzg5
YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252
b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2
ZXIuaApAQCAtMzAsMTAgKzMwLDEzIEBACiAjZGVmaW5lIERpcmVjdENvbnZvbHZlcl9oCiAKICNp
bmNsdWRlICJBdWRpb0FycmF5LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGlyZWN0Q29udm9sdmVyIHsKK2NsYXNzIERpcmVj
dENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGlyZWN0Q29udm9sdmVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBEaXJlY3RDb252b2x2ZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKaW5kZXggOTFkMzQ5Yjk3ZTYyNzczMzJkNzYzMWE4
ODQ0MjZiMTY2OGRjZjI4My4uYjNlYjc3OTczY2ZhNDc5NWYxNTA1MzY5YjdlNGIyZjg5ZmZiNmM0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCkBAIC00MCw3ICs0
MCw4IEBAIGVudW0gY2xhc3MgRGlzdGFuY2VNb2RlbFR5cGUgewogICAgIEV4cG9uZW50aWFsCiB9
OwogCi1jbGFzcyBEaXN0YW5jZUVmZmVjdCB7CitjbGFzcyBEaXN0YW5jZUVmZmVjdCBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGlzdGFuY2VFZmZl
Y3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNh
bXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKaW5k
ZXggZjRiNDIwMTdlZTc2MjdjYWQ2NTZiZmY0NTdhYWU5ODk0ODAxNGJmMi4uOTU3MGI4OTFjOTdm
ZmE5MTFhMDExMzQwMDNiNGZkY2I1Zjc2ZjkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9Eb3duU2FtcGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gRG93blNhbXBsZXIgZG93bi1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEg
ZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBEb3duU2FtcGxlciB7CitjbGFzcyBEb3duU2FtcGxlciBm
aW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgRG93blNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IGIyNTUx
OGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIuLjUxMzc5OWE4NTEyZjQyN2I0ZTRi
OGQ5YjI5NDVhOTRkMzQ5MTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMjcxLDggKzI3MSw4IEBAIHZvaWQg
RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMpCiAgICAgbV9wcmVGaWx0ZXJQYWNrcy5jbGVhcigpOwogICAgIG1fcG9zdEZpbHRl
clBhY2tzLmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hh
bm5lbHM7ICsraSkgewotICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwotICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAgICAg
ICAgbV9wcmVGaWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0
PigpKTsKKyAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1Bv
bGVGaWx0ZXJQYWNrND4oKSk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VDaGFubmVscyA9IG1ha2VV
bmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRleCBlZjhj
MDkzYTFiOTY1MzIyOWQ3OTlmMWE2YjI5MmFmYWRiZGFiYWQxLi44MjJjOTMxZjM4Y2UwZWM4ZGM2
MjgyZjBmOGMzNDNhZjY3N2Y5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtNDMsOCArNDMsOSBAQCBjbGFzcyBBdWRp
b0J1czsKIC8vIG9mIHRoZSBsb3VkZXN0IHBhcnRzIG9mIHRoZSBzaWduYWwgYW5kIHJhaXNlcyB0
aGUgdm9sdW1lIG9mIHRoZSBzb2Z0ZXN0IHBhcnRzLAogLy8gbWFraW5nIHRoZSBzb3VuZCByaWNo
ZXIsIGZ1bGxlciwgYW5kIG1vcmUgY29udHJvbGxlZC4KIAotY2xhc3MgRHluYW1pY3NDb21wcmVz
c29yIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3NvciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHluYW1pY3NDb21wcmVzc29y
KTsKIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgUGFyYW1UaHJlc2hvbGQsCkBAIC05NSw5
ICs5NiwxMCBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgewogICAgIGZsb2F0IG1fbGFzdEFu
Y2hvcjsKICAgICBmbG9hdCBtX2xhc3RGaWx0ZXJTdGFnZUdhaW47CiAKLSAgICB0eXBlZGVmIHN0
cnVjdCB7CisgICAgc3RydWN0IFplcm9Qb2xlRmlsdGVyUGFjazQgeworICAgICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFplcm9Qb2xlIGZpbHRlcnNbNF07Ci0g
ICAgfSBaZXJvUG9sZUZpbHRlclBhY2s0OworICAgIH07CiAKICAgICAvLyBQZXItY2hhbm5lbCBl
bXBoYXNpcyBmaWx0ZXJzLgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0
ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCA3MzRi
MDY2Y2RhNDhiYzJjN2E3OWVkZjUwN2QwNmMwNTZjNzBhMDkwLi5hZmVkYjdiNGNkMGE1YTYxZDFh
OWZlMjc4YzM0MDM4M2Y5OGUyMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hhbm5lbHMo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKIAogICAgIG1fcHJlRGVsYXlCdWZmZXJzLmNsZWFy
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkK
LSAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9G
bG9hdEFycmF5PihNYXhQcmVEZWxheUZyYW1lcykpOworICAgICAgICBtX3ByZURlbGF5QnVmZmVy
cy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVzKSk7
CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXRQcmVEZWxheVRpbWUoZmxv
YXQgcHJlRGVsYXlUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAppbmRleCBiN2JjZWEyZmFmZDg5OTZjYTUy
OGIwYjVkYWI0OWNiODg5NThkY2M0Li5lMTFmNDdiYWFmMGJjNmM1ZDBjYTdlM2Q3MjAwODI2Mzlk
MjcwYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaApAQCAtMzUsNyArMzUsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCB7CitjbGFzcyBEeW5h
bWljc0NvbXByZXNzb3JLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IDhjZjU5OTE3OTVm
M2YxZjYzZTI4MWQ5ZTE2YWNhZjNkN2E1N2E1ZGEuLjRlNDYzYjEyODFhN2ZhM2JiMzk3YTZiMDY1
Y2UwMzNjY2JmOWFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0VxdWFsUG93ZXJQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9F
cXVhbFBvd2VyUGFubmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBDb21tb24gdHlwZSBvZiBzdGVyZW8gcGFubmVyIGFzIGZvdW5kIGluIG5vcm1hbCBhdWRp
byBtaXhpbmcgZXF1aXBtZW50LgogCi1jbGFzcyBFcXVhbFBvd2VyUGFubmVyIDogcHVibGljIFBh
bm5lciB7CitjbGFzcyBFcXVhbFBvd2VyUGFubmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgRXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAppbmRleCA0
NTQyYjZmYjI1Nzg1NDk1YWIyMDZhYmMzYzkwYzc1YmMyZjE2ZWEwLi4zODYyMjdmMTk3MDRhZmQ3
OTJlMzY2MjJiZGRhOWMxYWNlYTc1MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRDb252b2x2ZXIuaApAQCAtMzQsNyArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEZGVENvbnZvbHZlciB7CitjbGFzcyBGRlRDb252b2x2ZXIgZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZG
VENvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gZmZ0U2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2Yg
dHdvCiAgICAgRkZUQ29udm9sdmVyKHNpemVfdCBmZnRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCA0YzAyYjY5OTJiMDYzODNiODAzNTczNzg3
OGRiZjY1YTI2ZmI5YzMxLi40YzE1MjA2N2Q0NGFjNGI4NTQxOTIxYWFlZDI5NTk4MmI5NjkzNzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCkBAIC01NCw3
ICs1NCw3IEBAIHZvaWQgRkZURnJhbWU6OmRvUGFkZGVkRkZUKGNvbnN0IGZsb2F0KiBkYXRhLCBz
aXplX3QgZGF0YVNpemUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGRlRGcmFtZT4gRkZURnJhbWU6OmNy
ZWF0ZUludGVycG9sYXRlZEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZGVEZy
YW1lJiBmcmFtZTIsIGRvdWJsZSB4KQogewotICAgIGF1dG8gbmV3RnJhbWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0g
bWFrZVVuaXF1ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CiAKICAgICBuZXdGcmFtZS0+
aW50ZXJwb2xhdGVGcmVxdWVuY3lDb21wb25lbnRzKGZyYW1lMSwgZnJhbWUyLCB4KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAppbmRleCA3NTdiY2Zh
NGI2YWVmZDcwZWJhZTg2NTQ4NzI1ZmE0MDYyOWM2ZTllLi5hNTE5MzQ5ODE1MDQ1MjZkNmZjNjRk
NDViOTc5MGIzNzgxMDNhNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEhSVEZLZXJuZWw7CiAKLWNsYXNzIEhSVEZEYXRhYmFzZSB7CitjbGFzcyBIUlRGRGF0YWJh
c2UgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEhSVEZEYXRhYmFzZSk7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBmNDViZTg0N2Nl
NzEwZGNlZGEyZTBlYzEwNmI3NWJmMjY4NTc4OWNkLi5hNDc0YTcwYzQwODUyYWUyZTFmOWY1OGE0
OWEwMDAzNjE1ODBiMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIUlRGRGF0
YWJhc2VMb2FkZXI6OmxvYWQoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlm
ICghbV9ocnRmRGF0YWJhc2UuZ2V0KCkpIHsKICAgICAgICAgLy8gTG9hZCB0aGUgZGVmYXVsdCBI
UlRGIGRhdGFiYXNlLgotICAgICAgICBtX2hydGZEYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8
SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CisgICAgICAgIG1faHJ0ZkRhdGFi
YXNlID0gbWFrZVVuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZF
bGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlv
bi5jcHAKaW5kZXggYzg0YWI5NzUxYTE0NTk4OWEwMzc3ZmFkMWY0YTc1ZThmMTdlMmIyNC4uNjA1
MjMyY2QxYTk5YzkyMzNkOWFkMTA0OWJhMzA3ZTIxNzczOGZjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTI0NCw4ICsyNDQsOCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9y
U3ViamVjdChjb25zdCBTdHJpbmcmIHN1YgogICAgIGlmICghaXNFbGV2YXRpb25Hb29kKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0
ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0g
ICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51
bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8
SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxM
aXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7
CiAKICAgICAvLyBMb2FkIGNvbnZvbHV0aW9uIGtlcm5lbHMgZnJvbSBIUlRGIGZpbGVzLgogICAg
IGludCBpbnRlcnBvbGF0ZWRJbmRleCA9IDA7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29u
c3QgU3RyaW5nJiBzdWIKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShr
ZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlz
dFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVs
ZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZF
bGV2YXRpb24qIGhydGZFbGV2YXRpb24xLCBIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMiwg
ZmxvYXQgeCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAgLTI4NSw4ICsyODUsOCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5n
U2xpY2VzKEhSVEZFbAogICAgICAgICAKICAgICBBU1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEuMCk7
CiAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5l
bExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0
ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Cisg
ICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9m
VG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktl
cm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICBIUlRGS2VybmVsTGlzdCog
a2VybmVsTGlzdEwxID0gaHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RMKCk7CiAgICAgSFJURktl
cm5lbExpc3QqIGtlcm5lbExpc3RSMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0UigpOwpA
QCAtMzAyLDcgKzMwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxl
dmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgLy8gSW50ZXJw
b2xhdGUgZWxldmF0aW9uIGFuZ2xlLgogICAgIGRvdWJsZSBhbmdsZSA9ICgxLjAgLSB4KSAqIGhy
dGZFbGV2YXRpb24xLT5lbGV2YXRpb25BbmdsZSgpICsgeCAqIGhydGZFbGV2YXRpb24yLT5lbGV2
YXRpb25BbmdsZSgpOwogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2
YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGlj
X2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhS
VEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwg
c3RhdGljX2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOwogfQogCiB2b2lkIEhSVEZFbGV2
YXRpb246OmdldEtlcm5lbHNGcm9tQXppbXV0aChkb3VibGUgYXppbXV0aEJsZW5kLCB1bnNpZ25l
ZCBhemltdXRoSW5kZXgsIEhSVEZLZXJuZWwqICZrZXJuZWxMLCBIUlRGS2VybmVsKiAma2VybmVs
UiwgZG91YmxlJiBmcmFtZURlbGF5TCwgZG91YmxlJiBmcmFtZURlbGF5UikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAppbmRleCAyYTk1OTA0NTUyMTg0
M2ExNTE2MmVjYzhlMzIxMTczOWUwNzA1M2Y3Li5lZjc1MmMzYzAxYmUzOWVjZGI3ZWY2NGRmNDM5
MDkyNjZkNmVkOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVs
ZXZhdGlvbi5oCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gSFJU
RkVsZXZhdGlvbiBjb250YWlucyBhbGwgb2YgdGhlIEhSVEZLZXJuZWxzIChvbmUgbGVmdCBlYXIg
YW5kIG9uZSByaWdodCBlYXIgcGVyIGF6aW11dGggYW5nbGUpIGZvciBhIHBhcnRpY3VsYXIgZWxl
dmF0aW9uLgogCi1jbGFzcyBIUlRGRWxldmF0aW9uIHsKK2NsYXNzIEhSVEZFbGV2YXRpb24gZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEhSVEZFbGV2YXRpb24pOwogcHVibGljOgogICAgIEhSVEZFbGV2YXRpb24oc3RkOjp1bmlx
dWVfcHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0TCwgc3RkOjp1bmlxdWVfcHRyPEhSVEZL
ZXJuZWxMaXN0PiBrZXJuZWxMaXN0UiwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKaW5kZXggZWRm
NmM2MGQwZGI4MTRkOTRjMGY3MWI2MzA2ZTQzODI2NTNhYTRjNy4uMzc1NTIxNmFlMjg3YTcxYzc0
MjkyOWE1M2M5NTkwOTZkYjFkYmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURktlcm5lbC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSFJURktlcm5lbDo6SFJURktlcm5l
bChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mZnRGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8
RkZURnJhbWU+KGZmdFNpemUpOworICAgIG1fZmZ0RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1l
PihmZnRTaXplKTsKICAgICBtX2ZmdEZyYW1lLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2Us
IHRydW5jYXRlZFJlc3BvbnNlTGVuZ3RoKTsKIH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHNpemVf
dCBIUlRGS2VybmVsOjpmZnRTaXplKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQ2hh
bm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKCkKIHsKLSAgICBhdXRvIGNo
YW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKKyAgICBh
dXRvIGNoYW5uZWwgPSBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKICAgICBG
RlRGcmFtZSBmZnRGcmFtZSgqbV9mZnRGcmFtZSk7CiAKICAgICAvLyBBZGQgbGVhZGluZyBkZWxh
eSBiYWNrIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RlBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCmlu
ZGV4IGJmNWVlZmFhNWU0YzZkMmJmMTdhOTkwMDMwNzQxNjVjNmU0MzNhZDcuLmNhYWE0NDFmMWQx
NGVhMzZmNWU5NjhhZDhhNzdkMGI3YTYwZGQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBIUlRGUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBIUlRGUGFu
bmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSFJURlBh
bm5lcihmbG9hdCBzYW1wbGVSYXRlLCBIUlRGRGF0YWJhc2VMb2FkZXIqKTsKICAgICB2aXJ0dWFs
IH5IUlRGUGFubmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAppbmRleCBiYmJmMTY0NDYyMDc2MzllMzVjZjc5
NTY0ODI4MjYzZDNlOTM3M2FlLi41YmY5YWI5NWQwMTU3NTAwODE1ZDYxMzFhYjFkODk3NDFiZTFm
ZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5u
ZWxSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRp
Q2hhbm5lbFJlc2FtcGxlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgTXVsdGlDaGFubmVsUmVzYW1w
bGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBu
dW1iZXIKIHsKICAgICAvLyBDcmVhdGUgZWFjaCBjaGFubmVsJ3MgcmVzYW1wbGVyLgogICAgIGZv
ciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFu
bmVsczsgKytjaGFubmVsSW5kZXgpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOworICAgICAgICBtX2tlcm5lbHMu
YXBwZW5kKG1ha2VVbmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKIH0KIAogdm9p
ZCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogcHJv
dmlkZXIsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2Ft
cGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmgKaW5kZXggNDQxNzU0NzYwNTgzZDI4MDM0YTQ1YjNiZDhhNjE4OGQ0NjVhMmYzNi4uNjE0
NmU5MjVjMDZhMmRkYTc2Y2I0MTJmMGNjMWUwYTI0NmFjODBkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKQEAgLTM3
LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKICAgICAK
LWNsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciB7CitjbGFzcyBNdWx0aUNoYW5uZWxSZXNhbXBs
ZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAg
IGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5l
ci5jcHAKaW5kZXggYWM3Mjg2YWM5YTA2MGI3NTM0Y2IyZWRlOTIxZDZjYmQ3N2E5N2E4OC4uNDBi
OWQwMWRjMTg0Yjk2ZDVkZjNhYjliN2Y0MDk0NjNhOTc4MzRkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCkBAIC00MywxMSArNDMsMTEgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhbm5lcj4gUGFubmVyOjpjcmVhdGUoUGFubmluZ01vZGVsVHlwZSBtb2RlbCwgZmxvYXQg
c2FtcGxlUmF0ZSwKIAogICAgIHN3aXRjaCAobW9kZWwpIHsKICAgICBjYXNlIFBhbm5pbmdNb2Rl
bFR5cGU6OkVxdWFscG93ZXI6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8RXF1
YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CisgICAgICAgIHBhbm5lciA9IG1ha2VVbmlxdWU8
RXF1YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKKyAgICAgICAgcGFu
bmVyID0gbWFrZVVuaXF1ZTxIUlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRlcik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmgKaW5kZXggY2RhNzJlOGFiM2M0Y2RjMGE4NjhmYWFj
NGYwNWNlNjFjNDQ0MDJkMC4uNDYzNWE2NzMzZWNjM2YzYTA3NTAyZmM3YTc1MDE3M2UzM2UxMWYz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRp
b0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlv
RGF0YS5oCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBs
YXRmb3JtQXVkaW9EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUF1ZGlvRGF0YSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
CmluZGV4IGUwMjM5NGFhNWIxNDljZDE1OTY5MTJhMjU2ODFmZjVlYTQ0YWQ4ZDIuLmM4YmQ2NGE0
MWJmNjEyZTg5ZTNjMjE0ZmEyMmRjYzU5OTQ4ZTU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1NZWRpYVNlc3Npb24+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1N
ZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBsYXRmb3JtTWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAppbmRleCAzMDQzZmM4YTA0
ZGYwZDc3YzEwYWEwMzc5YmQyNmEzOWQ0NmNlNmJhLi44YTY3NTVjNTRhZDAwYTNhODEwMTg3NDIx
NjJjY2QwNzRkZTEwZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFJldmVyYjo6aW5pdGlhbGl6ZShBdWRpb0J1cyog
aW1wdWxzZVJlc3BvbnNlQnVmZmVyLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtUmVzcG9uc2VDaGFubmVsczsgKytpKSB7CiAgICAgICAgIEF1
ZGlvQ2hhbm5lbCogY2hhbm5lbCA9IGltcHVsc2VSZXNwb25zZUJ1ZmZlci0+Y2hhbm5lbChpKTsK
IAotICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29u
dm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJl
bmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcykpOworICAgICAgICBtX2NvbnZvbHZlcnMu
YXBwZW5kKG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNp
emUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFk
cykpOwogCiAgICAgICAgIGNvbnZvbHZlclJlbmRlclBoYXNlICs9IHJlbmRlclNsaWNlU2l6ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCmluZGV4IDNlMjU3NmIz
NTc1N2RiYTI0NzBjOGViN2RhM2MxN2JlZWJiZmRjZWQuLjIzNGUzMWRhZWJiZDRkZGFhMzZhMWU5
MDUzMTFlYjk5MjJmYWE2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5o
CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQnVzOwogICAgIAogLy8gTXVsdGktY2hhbm5l
bCBjb252b2x1dGlvbiByZXZlcmIgd2l0aCBjaGFubmVsIG1hdHJpeGluZyAtIG9uZSBvciBtb3Jl
IFJldmVyYkNvbnZvbHZlciBvYmplY3RzIGFyZSB1c2VkIGludGVybmFsbHkuCiAKLWNsYXNzIFJl
dmVyYiB7CitjbGFzcyBSZXZlcmIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGVudW0geyBNYXhGcmFtZVNpemUgPSAyNTYgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVy
LmgKaW5kZXggNTEyYjZhZGUzNDFhMjg1Njk3MmVlM2Y3YmNiMjExNjZiYjcyMWExZi4uYTYyODM1
ZjljMGQ3ZDc0M2M5ZTkyN2NlZGUyZDZhMWRhNDU1ODQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKQEAg
LTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gUmV2ZXJiQWNjdW11bGF0aW9u
QnVmZmVyIGlzIGEgY2lyY3VsYXIgZGVsYXkgYnVmZmVyIHdpdGggb25lIGNsaWVudCByZWFkaW5n
IGZyb20gaXQgYW5kIG11bHRpcGxlIGNsaWVudHMKIC8vIHdyaXRpbmcvYWNjdW11bGF0aW5nIHRv
IGl0IGF0IGRpZmZlcmVudCBkZWxheSBvZmZzZXRzIGZyb20gdGhlIHJlYWQgcG9zaXRpb24uICBU
aGUgcmVhZCBvcGVyYXRpb24gd2lsbCB6ZXJvIHRoZSBtZW1vcnkKIC8vIGp1c3QgcmVhZCBmcm9t
IHRoZSBidWZmZXIsIHNvIGl0IHdpbGwgYmUgcmVhZHkgZm9yIGFjY3VtdWxhdGlvbiB0aGUgbmV4
dCB0aW1lIGFyb3VuZC4KLWNsYXNzIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciB7CitjbGFzcyBS
ZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcihzaXpl
X3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5jcHAKaW5kZXggMTQ1ZGY4MWUyYTZiYTJjMmRhYTliYjQxZTZiNWNhYmFmMzg1
ZjkxYy4uYTljOTM1YzFhMjg1YWIxMzYyZDhmZjFkZjhjZWJhNWE3ZTVhYTc3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5l
bCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xpCiAKICAgICAgICAgYm9vbCB1c2VE
aXJlY3RDb252b2x2ZXIgPSAhc3RhZ2VPZmZzZXQ7CiAKLSAgICAgICAgYXV0byBzdGFnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+KHJlc3BvbnNlLCB0b3RhbFJlc3Bv
bnNlTGVuZ3RoLCByZXZlcmJUb3RhbExhdGVuY3ksIHN0YWdlT2Zmc2V0LCBzdGFnZVNpemUsIGZm
dFNpemUsIHJlbmRlclBoYXNlLCByZW5kZXJTbGljZVNpemUsICZtX2FjY3VtdWxhdGlvbkJ1ZmZl
ciwgdXNlRGlyZWN0Q29udm9sdmVyKTsKKyAgICAgICAgYXV0byBzdGFnZSA9IG1ha2VVbmlxdWU8
UmV2ZXJiQ29udm9sdmVyU3RhZ2U+KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZl
cmJUb3RhbExhdGVuY3ksIHN0YWdlT2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBo
YXNlLCByZW5kZXJTbGljZVNpemUsICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29u
dm9sdmVyKTsKIAogICAgICAgICBib29sIGlzQmFja2dyb3VuZFN0YWdlID0gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKaW5kZXgg
NWI4MTllMWEzZTZmNGZiMWY4ZGIwYzU5Njk3MjYyYWFjMDljNmJkZS4uMzIwMGI0NWVhOGRmN2My
MWNlNmZhMzdlMDhiYjI3OTFmOGFlNWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKQEAgLTQzLDggKzQzLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBdWRpb0NoYW5uZWw7CiAKLWNsYXNzIFJldmVyYkNvbnZvbHZlciB7
CitjbGFzcyBSZXZlcmJDb252b2x2ZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJldmVyYkNvbnZvbHZlcik7CiBwdWJsaWM6
CiAgICAgLy8gbWF4RkZUU2l6ZSBjYW4gYmUgYWRqdXN0ZWQgKGZyb20gc2F5IDIwNDggdG8gMzI3
NjgpIGRlcGVuZGluZyBvbiBob3cgbXVjaCBwcmVjaXNpb24gaXMgbmVjZXNzYXJ5LgogICAgIC8v
IEZvciBjZXJ0YWluIHR3ZWFreSBkZS1jb252b2x2aW5nIGFwcGxpY2F0aW9ucyB0aGUgcGhhc2Ug
ZXJyb3JzIGFkZCB1cCBxdWlja2x5IGFuZCBsZWFkIHRvIG5vbi1zZW5zaWNhbCByZXN1bHRzIHdp
dGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmNwcAppbmRleCAwZmRlNDIxYWYyZjgyZmQ0ODc0ZDk0ZjZhZjFkNjM0NzIzOWM2
NTZlLi40ZmY5NTNiMjYwNDkxN2QzNDUyMDM5NDA1YjY1ZGUyYmQ1YTFlYWJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2Uu
Y3BwCkBAIC01NSwxNiArNTUsMTYgQEAgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OlJldmVyYkNvbnZv
bHZlclN0YWdlKGNvbnN0IGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCwKICAgICBBU1NF
UlQoYWNjdW11bGF0aW9uQnVmZmVyKTsKIAogICAgIGlmICghbV9kaXJlY3RNb2RlKSB7Ci0gICAg
ICAgIG1fZmZ0S2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7Cisg
ICAgICAgIG1fZmZ0S2VybmVsID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CiAgICAg
ICAgIG1fZmZ0S2VybmVsLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2UgKyBzdGFnZU9mZnNl
dCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2ZmdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RkZUQ29udm9sdmVyPihmZnRTaXplKTsKKyAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBtYWtl
VW5pcXVlPEZGVENvbnZvbHZlcj4oZmZ0U2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNT
RVJUKCFzdGFnZU9mZnNldCk7CiAgICAgICAgIEFTU0VSVChzdGFnZUxlbmd0aCA8PSBmZnRTaXpl
IC8gMik7CiAKLSAgICAgICAgbV9kaXJlY3RLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIpOworICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IG1ha2VV
bmlxdWU8QXVkaW9GbG9hdEFycmF5PihmZnRTaXplIC8gMik7CiAgICAgICAgIG1fZGlyZWN0S2Vy
bmVsLT5jb3B5VG9SYW5nZShpbXB1bHNlUmVzcG9uc2UsIDAsIHN0YWdlTGVuZ3RoKTsKLSAgICAg
ICAgbV9kaXJlY3RDb252b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERpcmVjdENvbnZvbHZlcj4o
cmVuZGVyU2xpY2VTaXplKTsKKyAgICAgICAgbV9kaXJlY3RDb252b2x2ZXIgPSBtYWtlVW5pcXVl
PERpcmVjdENvbnZvbHZlcj4ocmVuZGVyU2xpY2VTaXplKTsKICAgICB9CiAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuYWxsb2NhdGUocmVuZGVyU2xpY2VTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKaW5kZXggYTA0OTA5
NzAzNDBhYjNiMzM2MDBiMDg5ZTU5ODQ3NGZiM2Q0NTVlNi4uM2MwM2JlMzQxYjNiN2Q2NDYyMWRj
ODAzODE2NjkzNjBmNGRiNGM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERp
cmVjdENvbnZvbHZlcjsKICAgICAKIC8vIEEgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgcmVwcmVzZW50
cyB0aGUgY29udm9sdXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgc3ViLXNlY3Rpb24gb2YgYSBsYXJn
ZSBpbXB1bHNlIHJlc3BvbnNlLgogLy8gSXQgaW5jb3Jwb3JhdGVzIGEgZGVsYXkgbGluZSB0byBh
Y2NvdW50IGZvciB0aGUgb2Zmc2V0IG9mIHRoZSBzdWItc2VjdGlvbiB3aXRoaW4gdGhlIGxhcmdl
ciBpbXB1bHNlIHJlc3BvbnNlLgotY2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgeworY2xhc3Mg
UmV2ZXJiQ29udm9sdmVyU3RhZ2UgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIC8vIHJlbmRlclBoYXNlIGlzIHVzZWZ1bCB0byBrbm93IHNvIHRoYXQg
d2UgY2FuIG1hbmlwdWxhdGUgdGhlIHByZSB2ZXJzdXMgcG9zdCBkZWxheSBzbyB0aGF0IHN0YWdl
cyB3aWxsIHBlcmZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYklucHV0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJJbnB1dEJ1ZmZlci5oCmluZGV4IGJiMDZlNGVlZDYzM2YwZTdjNjgyZTIwZTRlNmE1NzJhYTFm
YWE5NjYuLmFmOWVkMDBkNzMzZTg0MmI2ZWQzYTY0NzQ4NTQyMGQzYzc2Nzc1MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaApAQCAt
MzQsNyArMzQsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBSZXZlcmJJbnB1dEJ1ZmZl
ciBpcyB1c2VkIHRvIGJ1ZmZlciBpbnB1dCBzYW1wbGVzIGZvciBkZWZlcnJlZCBwcm9jZXNzaW5n
IGJ5IHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMuCi1jbGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciB7Citj
bGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmV2ZXJiSW5wdXRCdWZmZXIoc2l6ZV90IGxlbmd0
aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNh
bXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaApp
bmRleCAyZmNkODlmN2VjYTM3NTg1ODYzMWE5YjI3NjVhMTBkMjAxYjM0MWM3Li5jMTMyZjVkOTc2
MmM3NTY2YjIzMjVjMDY0YjI4ZGU4YjZlMzkwMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogLy8gU2luY1Jlc2FtcGxlciBpcyBhIGhpZ2gtcXVhbGl0eSBzYW1wbGUtcmF0
ZSBjb252ZXJ0ZXIuCiAKLWNsYXNzIFNpbmNSZXNhbXBsZXIgeworY2xhc3MgU2luY1Jlc2FtcGxl
ciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAg
Ly8gc2NhbGVGYWN0b3IgPT0gc291cmNlU2FtcGxlUmF0ZSAvIGRlc3RpbmF0aW9uU2FtcGxlUmF0
ZQogICAgIC8vIGtlcm5lbFNpemUgY2FuIGJlIGFkanVzdGVkIGZvciBxdWFsaXR5IChoaWdoZXIg
aXMgYmV0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBT
YW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaAppbmRl
eCAyNjZiY2FmOTgwZDcyNmZhMmY2MzdjZmU5M2E1ZDRjMzhiMjRlZTA2Li42NzVlZTRhZDBjNDQ2
N2NkMWRkNmQxZDUxNjExZTc3Yjk4YzRjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9VcFNhbXBsZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIFVwU2FtcGxlciB1cC1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9yIG9m
IDJ4LgogCi1jbGFzcyBVcFNhbXBsZXIgeworY2xhc3MgVXBTYW1wbGVyIGZpbmFsIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVcFNhbXBsZXIo
c2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1plcm9Qb2xlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJv
UG9sZS5oCmluZGV4IDgzMWRlOTA5M2IwMDU2MTZiNGJkNzdlYTdiMDc3OGMzN2RhYTdiNmUuLjAy
ZmZhY2Q1ZWFjYTdjZTI3NTg5MmJlOGQ2NDM5NGM3MzNkYzdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaApAQCAtMzMsNyArMzMsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIC8vIFplcm9Qb2xlIGlzIGEgc2ltcGxlIGZpbHRlciB3aXRoIG9uZSB6ZXJvIGFu
ZCBvbmUgcG9sZS4KIAotY2xhc3MgWmVyb1BvbGUgeworY2xhc3MgWmVyb1BvbGUgZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFplcm9Qb2xlKCkKICAg
ICAgICAgOiBtX3plcm8oMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKaW5kZXggODZiNjVhMjI1M2FmMWFlYjJh
MWNhOWNhYTM2Njc4NmNkN2Q2NTUyMC4uOGE3ZTdhMDNhYzMzYTRlNTVjNDNjMzFhZWM2MzdiMTg5
Y2IxYzdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
V2ViQXVkaW9CdWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiAKLWNsYXNzIFdlYkF1
ZGlvQnVmZmVyTGlzdCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CitjbGFzcyBXZWJBdWRp
b0J1ZmZlckxpc3QgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgewogcHVibGljOgog
ICAgIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgdWludDMyX3Qgc2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IDViZjhmZGE2YjI5MTJiMThmMTE5MGRjYmU3MDgy
YmY2ODRiZWU5OGYuLjFhNTQ5NWZkNzY0ZDljM2NjNmVkYjU4MWZhNDgwZWFlYWQxNDU5YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUs
ICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBzYW1w
bGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
PihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246Omhh
cmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggOGFmODc3ZWMyYzRjYTBh
YmQzMDc0ODM1ZjU0YjM0YWViZjA0MzNhMi4uNGJkZTdlNDFlMmI2NDM3Y2QwZmY3MjVlNGQwNzlk
NjhmODllN2RjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAtODAsNyArODAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlv
SU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAg
ICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAt
IHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVSYXRl
KTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25J
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9T
Lm1tCmluZGV4IGRjNmM4YmNjZTM2OWQwNmFlZGM4ZmQzMzNjNzM4YzBiZTk1NzVkZDQuLjYzOTgy
NDBiYmQ4ZDk2NzMwMmRmN2U5ZWNmZjQwNzUwMmRhNmUyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtNTksNiAr
NTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKEF1ZGlvU2Vzc2lvbjo6Q2F0
ZWdvcnlUeXBlIGNhdGVnb3J5KQogI2VuZGlmCiAKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEF1ZGlvU2Vzc2lv
blByaXZhdGUoQXVkaW9TZXNzaW9uKik7CiAgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUg
bV9jYXRlZ29yeU92ZXJyaWRlOwpAQCAtNzEsNyArNzIsNyBAQCBBdWRpb1Nlc3Npb25Qcml2YXRl
OjpBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiopCiB9CiAKIEF1ZGlvU2Vzc2lvbjo6
QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU2Vz
c2lvblByaXZhdGU+KHRoaXMpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9TZXNz
aW9uUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCA3NjRhMzQ3
Zjk4MjllMWU4NDc1YmQyZWExMjgwYWExNzUwMjZlY2ZjLi45ZmU2NGJhYWE0Nzg0ZmVjZGFiM2Q2
ZGRiNWUyNzgzODFlMWUwNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVh
dGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
IT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAl
dSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVs
cywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ssIHNh
bXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJh
dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggNzdkNDMxNjU2Njk5MGU5MDFiOTIwYmY3Nzhk
OTY5ZTlmMThmMTg4YS4uNDFhZmUzOWYyMzJhZTU4ODA4NjBmMDg0ZDU1NmNiNGE1ZDhhZTI1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgT1NTdGF0dXMgQXVkaW9T
YW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mIGYKIHsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAotICAg
IG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPihmb3JtYXQpOworICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOwogICAgIGlmIChtX291dHB1dERlc2NyaXB0
aW9uKQogICAgICAgICByZXR1cm4gc2V0dXBDb252ZXJ0ZXIoKTsKIApAQCAtMTIwLDkgKzEyMCw5
IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNvbnN0
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYKICAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0aW9u
KTsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAotICAgIG1fb3V0cHV0
RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4o
Zm9ybWF0KTsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKCFtX3JpbmdCdWZmZXIpCi0gICAgICAg
IG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAgICAg
ICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKIAogICAgIG1fcmlu
Z0J1ZmZlci0+YWxsb2NhdGUoZm9ybWF0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbWF4aW11bVNh
bXBsZUNvdW50KSk7CiAgICAgbV9zY3JhdGNoQnVmZmVyID0gQXVkaW9TYW1wbGVCdWZmZXJMaXN0
OjpjcmVhdGUobV9vdXRwdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24oKSwgbV9tYXhp
bXVtU2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAppbmRleCA3ZjZlZjlkMzNkYjFmYjQ3ZTdjZjE0YzU5
MDRhNDYxMTJiMTUyMjMyLi5jYzA0ZjBiZTMwOTc0OThiODM2NmU5MjQyMDczZWNlM2UxOTc1YWI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNz
aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
ZXNzaW9uTWFjLmNwcApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRl
IHsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KGlzTXV0ZWQoKSkpCisgICAgOiBt
X3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5n
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVy
LmgKaW5kZXggMThhMjZhYjZkYzVjOGRkMDEyNTJkYjA2NDZkNGY1YjliNDdiNmZmNS4uMDRhY2Vm
YzhkYWFkNzEzMjhhNGRkZmFiYmQwNGFmOWVjZDhlYjk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaApAQCAtMzksNiArMzksNyBAQCB0
eXBlZGVmIHN0cnVjdCBBdWRpb0J1ZmZlckxpc3QgQXVkaW9CdWZmZXJMaXN0OwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQVJpbmdCdWZmZXJTdG9yYWdl
KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBhbGxvY2F0ZShzaXplX3QpID0gMDsKQEAg
LTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CiAgICAgdmlydHVhbCB2
b2lkKiBkYXRhKCkgPSAwOwogfTsKIAotY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvciA6
IHB1YmxpYyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKK2NsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2VW
ZWN0b3IgZmluYWwgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CiBwdWJsaWM6CiAgICAg
fkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAppbmRleCBiOTgwM2JmYTAyMzI0MzU3
YzBkZmUwNDczMTNkMmMzZWMzMDRjYjkyLi43YTQ3ZjU2MDhiYmI2ZGU5ZDM3NzNiMTdlOThlNDc2
NGEyNDIyMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERl
Y29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVy
Q0YuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVk
RGVjb2RlckNGPihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29k
ZXJDRj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckNGOjpLZXllZERlY29kZXJDRihj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCAxYTYyN2VhMDBiOTJjYmFhNmNmN2MzNTVk
NWU0NDVlYzQ4NjFhNDEyLi40NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtl
eWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxLZXllZEVuY29kZXJDRj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXll
ZEVuY29kZXJDRj4oKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiBjcmVhdGVEaWN0aW9uYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAppbmRleCBiNjg5MjI4MDVlNWQzNzNk
ZTdmMGFlZDc4OTA4MjVhY2NjYzEyMDM5Li4wN2E0NWNhZDc4YjZkNDM3ZmFhODQyNTI2OTljMGQ0
ODZkNzhlZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFp
blRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNl
dHVwUG93ZXJPYnNlcnZlcigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9i
c2VydmVyKiBwb3dlck9ic2VydmVyOwogICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAg
cG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNo
YXJlZFRpbWVyKS5yZWxlYXNlKCk7CisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBtYWtlVW5pcXVl
PFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOwogI2VsaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRp
b25Ob3RpZmljYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlv
bk5vdGlmaWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCA0NzA1ZWQx
NWE1YzU4YzQxMWM0OWYzNGZhZjczZWViMzA3YjJjOTQ4Li5hYjk1ZmZkMGY4NzFlYzA0NjA4ZDUw
OTY0NmI0M2UzZDAzNDlmNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtNjUs
NyArNjUsNyBAQCBib29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjplbmFibGVkKCkK
IAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBOZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6aW5pdGlhbGl6ZShjb25zdCBVUkwqIHVybCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggYWUwYmQyMDljY2Q2ZjMxN2M5MTkzMjVhMTZh
MThhOTljZDE1NzJlNC4uMGQyYTYyMTg2YjVhNTRlMmI4NTFmZjk2ZDUyODEwMWY4NDY2ZjQwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBQYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5kbGVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGU4MzY5YzZl
NTAxNmUyM2NmODczYjk1MzdkMmFmYjRmMGJjNjg1MjIuLjhmZTM4YWQwY2NlMmZkNTQyZDI5NzAx
N2ZkYTJkMWNiMzU1Yjc3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgU2Nyb2xsQ29u
dHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29u
c3QgVmVjdG9yCiAgICAgICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7CisgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0g
bWFrZVVuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsKICAgICB9CiAKICAgICBpZiAo
c25hcFBvaW50cy5pc0VtcHR5KCkgJiYgbV9zY3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRzRm9y
QXhpcyhvdGhlclNjcm9sbEV2ZW50QXhpcyhheGlzKSkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwCmluZGV4IDUwM2Y5N2I5MjAxOGRhODdjMjQ4ODkxYjIyNjc5YWJiNzAw
NWIzMDAuLjk2Yzg1MTI5MzVhYjliNjk4ZTg5ODU1MTYzYmI2ZDIyYWM5YjgyZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9yeUNsZWFyS2V5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZQogI2Vsc2UKICAgICBBU1NFUlQoc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVt
KSk7CiAjZW5kaWYKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJL
ZXk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOwogfQog
CiBib29sIENETUZhY3RvcnlDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCBkNDczMDRjOTViMjZl
ZjIwNGY1ZGE0YWRjYmI4YTA4NjRkZTE4YmIzLi4wYjkxMDY0OWNhNGE0N2E5MTVkNTQ4YzlkOTRh
ZmZmMzM1MzU5MjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTQwLDYgKzQwLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZpbmFs
IDogcHVibGljIENETUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5Q2xlYXJLZXkmIHNpbmdsZXRvbigpOwogCkBAIC01
NCw2ICs1NSw3IEBAIGNsYXNzIENETUZhY3RvcnlDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1G
YWN0b3J5IHsKIH07CiAKIGNsYXNzIENETVByaXZhdGVDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBD
RE1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBD
RE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNv
bnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGY3MjBjZmQz
MzQzZjliYWQzM2E0OTE5YTc4Zjg2NmY5ZDg2MmEwYWQuLjVhNmViNDA0MzllZjU5MDU3MmE3YzI5
ZWZjMzM4ZDkyZjIzOWM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlci5tbQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIgKmNvbnRyb2xsZQogICAgIExP
RyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxlciAlcCBh
ZGRlZCIsIGNvbnRyb2xsZXIpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5
Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgYXV0byBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1ZTxH
YW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKKyAgICBhdXRvIGdhbWVw
YWQgPSBtYWtlVW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgp
OwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1f
Z2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKaW5kZXggMTVmMDRjNzA4ZTkwMDdiYjRkYWRl
ZTU0MzVjMzU3ZjAyZjUzMWM5My4uYTI1MjM0ZmI4NzVhNzUxYzYzYzM3YmE2YTVjZWU3ZDQ1MzRk
NWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElE
R2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdh
bWVwYWQuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3Qg
SElER2FtZXBhZEVsZW1lbnQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICBISURHYW1lcGFkRWxlbWVudChkb3VibGUgdGhlTWluLCBkb3VibGUgdGhlTWF4LCBJT0hJ
REVsZW1lbnRSZWYgZWxlbWVudCkKICAgICAgICAgOiBtaW4odGhlTWluKQogICAgICAgICAsIG1h
eCh0aGVNYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
Yy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCA1NzQzOTFiNWMxMTFhMzJiZTkxMjVj
YTZjZTA2MDBmNWQ2MzgyMjU3Li42ZDE0YjZiMjE2MTBiODZjZTRjMDAxM2U1MDkxMWI4OGY5NWUx
YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhJREdh
bWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAgIExP
RyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7
CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlx
dWU8SElER2FtZXBhZD4oZGV2aWNlLCBpbmRleCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdh
bWVwYWQ+IGdhbWVwYWQgPSBtYWtlVW5pcXVlPEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOwog
CiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2Ft
ZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRleCBhNGEzMGI1MmFi
ZTQ4YWY4NTBkYzdjNzQ3YTNiY2RlMWQ1MWZkYTVmLi4wZTU5NzIzMjFiNWY3M2Y1NzJiZDc5NjU4
ODExZjAwM2E5NWVkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
S2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlvbmFyeSB7CiAgICAgdXNpbmcgTm9kZSA9IFZhcmlh
bnQ8VmVjdG9yPHVpbnQ4X3Q+LCBib29sLCB1aW50MzJfdCwgdWludDY0X3QsIGludDMyX3QsIGlu
dDY0X3QsIGZsb2F0LCBkb3VibGUsIFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+
LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+PjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot
ICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtl
eSwgc3RkOjptYWtlX3VuaXF1ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KKyAg
ICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXks
IG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAgTm9kZSYg
Z2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KIAogcHJp
dmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGJvb2wgcmVhZFNpbXBsZVZhbHVlKFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIsIEtleWVkRGVjb2RlckdlbmUKIAogc3RkOjp1
bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtl
eWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtl
eWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJHZW5lcmlj
OjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpA
QCAtODYsNyArODYsNyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmlj
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIEtleWVkRW5jb2RlckdlbmVy
aWM6OlR5cGUgdHlwZTsKICAgICBTdHJpbmcga2V5OwogCi0gICAgbV9yb290RGljdGlvbmFyeSA9
IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAgICBtX3Jvb3REaWN0aW9uYXJ5ID0g
bWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZCht
X3Jvb3REaWN0aW9uYXJ5LmdldCgpKTsKIAogICAgIGJvb2wgb2sgPSB0cnVlOwpAQCAtMTQ0LDcg
KzE0NCw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byogY3VycmVudERpY3RpbmFyeSA9IG1f
ZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9
IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGlj
dGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICAgICAgICAgIG1fZGljdGlv
bmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAgICAgIGN1cnJl
bnREaWN0aW5hcnktPmFkZChrZXksIFdURk1vdmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNTYsMTMgKzE1NiwxMyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXll
ZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAg
ICAgICAgb2sgPSByZWFkU3RyaW5nKGRlY29kZXIsIGtleSk7CiAgICAgICAgICAgICBpZiAoIW9r
KQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IHN0
ZDo6bWFrZV91bmlxdWU8QXJyYXk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gbWFr
ZVVuaXF1ZTxBcnJheT4oKTsKICAgICAgICAgICAgIG1fYXJyYXlTdGFjay5hcHBlbmQobmV3QXJy
YXkuZ2V0KCkpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoa2V5
LCBXVEZNb3ZlKG5ld0FycmF5KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50OiB7
Ci0gICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rp
b25hcnk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERp
Y3Rpb25hcnk+KCk7CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGlj
dGlvbmFyeS5nZXQoKSk7CiAgICAgICAgICAgICBtX2FycmF5U3RhY2subGFzdCgpLT5hcHBlbmQo
V1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
CmluZGV4IDJmODQxMDQ3NDYzOTU1OGYyOTVlODFhNTE3MTlhODczNGIzMmQ1OGEuLjIxY2MxZWJl
NGE5MDFhMTNjNzQ0MDNkYzAxY2YyZmM4MTgxMzAxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVu
Y29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJpYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXll
ZEVuY29kZXJHZW5lcmljPigpOwogfQogCiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29k
ZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCA3YWU2NWM1
YThkMzA5ZTNkZWVmNTNjZThjZjFlMzAyNDI2ZDI3YzE0Li4yMDhhZjdiODQ3OWVjYWVmNTUzMGNj
YzU1N2I3MzZlYmFiY2JjYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCkBAIC00NCwxNCArNDQsMTQg
QEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc2Nyb2xsQ2FwdHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9
OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVh
dGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwog
fQogCiBTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxl
QXJlYSkKICAgICAsIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Ny
b2xsQW5pbWF0b3JHZW5lcmljOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkK
IHsKLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1h
dGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRp
b24pIHsKKyAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlv
bktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24p
IHsKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICAgICAgICAgaWYgKG1fc21vb3RoQW5p
bWF0aW9uKQogICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlv
bihwb3NpdGlvbik7CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
OjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQogICAgIGlmIChtX3Ntb290aEFuaW1h
dGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJy
ZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX3Ntb290
aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFi
bGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikg
ewogICAgICAgICB1cGRhdGVQb3NpdGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2Rlckds
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNw
cAppbmRleCBlN2RkMTkxNDA0MTcxOTY4ZjkwZDZmZWEzMzU0ZTE0Y2VmNmY1NTY3Li4zNjFlOWRm
MzI0NWJlNTY1YjBlMmE0MWRmMThiMjZmZmJjNzE5Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXll
ZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CiB9
CiAKIEtleWVkRGVjb2RlckdsaWI6OktleWVkRGVjb2RlckdsaWIoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmNwcAppbmRleCA3NDA0YmNiZDQ0OWFhNDkyMWI4Y2UyYjdlMDE4NDQ5NTAx
MDZmNjgwLi43MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5
ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEtleWVkRW5jb2RlckdsaWI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5
ZWRFbmNvZGVyR2xpYj4oKTsKIH0KIAogS2V5ZWRFbmNvZGVyR2xpYjo6S2V5ZWRFbmNvZGVyR2xp
YigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKaW5kZXggYTIzZTIxOWQxYTY4NmRhNzMwYzAxMWJlMGQxMjQ5Y2NlMGJhNDVjZC4uZWZjY2M1
YzZmNzlhNWE5YTJlZTQ3NzBiZjVjYzk5NGY4NDJiOTYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmNsZWFyVGltZXIoKQogdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRU
aW1lcihTZWNvbmRzIGRlbGF5KQogewogICAgIEFTU0VSVCghbV9mcmFtZVRpbWVyKTsKLSAgICBt
X2ZyYW1lVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdl
OjphZHZhbmNlQW5pbWF0aW9uKTsKKyAgICBtX2ZyYW1lVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVy
PigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKICAgICBtX2ZyYW1lVGlt
ZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUoV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2RlY29kaW5nQ2Fs
bGJhY2tzKQotICAgICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+KCk7CisgICAgICAgIG1fZGVjb2RpbmdDYWxsYmFj
a3MgPSBtYWtlVW5pcXVlPFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4oKTsKIAogICAgIG1f
ZGVjb2RpbmdDYWxsYmFja3MtPmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwCmluZGV4IDBkMzU1NjE4OTcwZmIyNzdmNzJlNzg5OTBlM2Y0ZjJhMjE2ZmJjNjku
LjM1M2ZjYTY2MDEzMjY0YjAyNDYyYTU3MTIyNGQwNWExODFkOTY4OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBUZXh0TGF5b3V0IHsKICAgICBUZXh0TGF5
b3V0KFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB4UG9z
KQogICAgICAgICA6IG1fZm9udChmb250KQogICAgICAgICAsIG1fcnVuKGNvbnN0cnVjdFRleHRS
dW4odGV4dCwgeFBvcykpCi0gICAgICAgICwgbV9jb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
Q29tcGxleFRleHRDb250cm9sbGVyPihtX2ZvbnQsIG1fcnVuLCB0cnVlKSkKKyAgICAgICAgLCBt
X2NvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb21wbGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwgbV9y
dW4sIHRydWUpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCA3MjA0NTNkOWYwNDZkNzlmNDhhMDliODFhZjcwMDBm
NGRlM2JlMDI1Li5jZWZkOGQ0MjI0NGQwNmZjYjgyNGJlNWUzYjczNDE5Y2Q0OThhNGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCkBAIC02Myw2
ICs2Myw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgRmxvYXRQ
b2ludCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmxvYXRQ
b2ludCgpIHsgfQogICAgIEZsb2F0UG9pbnQoZmxvYXQgeCwgZmxvYXQgeSkgOiBtX3goeCksIG1f
eSh5KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXgg
MTg0YjQ0YjA3YTQxMjIxNmI5ZWM1OTg0MjJmMDc4N2YwZTZjN2FlYi4uZTBiNDlmMjQ3YzIwMDli
ZGQ1ZjFkMGM4ZWJhN2FkNmM3ZWI4Y2JkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKQEAgLTM5NCw3ICszOTQsNyBAQCBHbHlwaERhdGEgRm9udDo6Z2x5cGhE
YXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKSBjb25zdAogYXV0byBGb250OjplbnN1
cmVEZXJpdmVkRm9udERhdGEoKSBjb25zdCAtPiBEZXJpdmVkRm9udHMmCiB7CiAgICAgaWYgKCFt
X2Rlcml2ZWRGb250RGF0YSkKLSAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERlcml2ZWRGb250cz4oKTsKKyAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBtYWtl
VW5pcXVlPERlcml2ZWRGb250cz4oKTsKICAgICByZXR1cm4gKm1fZGVyaXZlZEZvbnREYXRhOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggMmU1OGJkNjll
YmI1MzkxZTAzNmQyOGMyNzAyYzFmNDUwNTA4YjMxMi4uNTQ0YjBiNzExOGFiMmY5MDgwNzQ5ZTQ0
MWU1MTQ5ZjA1MThmMmUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtMjY5LDkgKzI2OSw3IEBAIGNsYXNzIEZvbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250
PiB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBEZXJpdmVkRm9udHMgewotI2lmICFDT01QSUxFUihN
U1ZDKQotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSNlbmRpZgorICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogCiAgICAgICAgIFJl
ZlB0cjxGb250PiBzbWFsbENhcHNGb250OwpAQCAtMzQ1LDcgKzM0Myw3IEBAIEFMV0FZU19JTkxJ
TkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogCiAg
ICAgYm91bmRzID0gcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChnbHlwaCk7CiAgICAgaWYgKCFtX2ds
eXBoVG9Cb3VuZHNNYXApCi0gICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7CisgICAgICAgIG1fZ2x5cGhUb0Jv
dW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7CiAgICAg
bV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRyaWNzRm9yR2x5cGgoZ2x5cGgsIGJvdW5kcyk7CiAg
ICAgcmV0dXJuIGJvdW5kczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwCmluZGV4IDBhNjJhMjc1YmM2OTJlZjM5OTExNDBlMDI4ZjU4MDA0MjFk
MGM3MTEuLjM3MDliNDFlYjJiN2JkMGJmN2IxMDJhYzVkYmVmZTJmNzc3M2FmMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMjQ0LDcg
KzI0NCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRm
b3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAgICAgICAgICAgICAgICAgaXQgPSBm
b250UGxhdGZvcm1EYXRhQ2FjaGUoKS5maW5kKGtleSk7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGl0ICE9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgpLmVuZCgpKTsKICAgICAgICAgICAgICAgICBp
ZiAoZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpCi0gICAgICAgICAgICAgICAgICAg
IGl0LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0
Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaXQtPnZhbHVl
ID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZvckFsdGVy
bmF0ZU5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDcyNzRkYjBk
YjMyYjNiNDFiM2UwZTFiMWVkMGZiMmFlYThiMzZhM2IuLjY0ODE4ZjRiNTE1NWQ0MmJmYWM4MWI2
MWY0YjVmOWNkZWE1NDUyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgUmVmPEZvbnRD
YXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2FzY2FkZURl
c2NyaXB0aQogICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Zm9udHMu
Z2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7
Ci0gICAgbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4o
V1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250U2VsZWN0
b3IpKSk7CisgICAgbmV3RW50cnkgPSBtYWtlVW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4o
V1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250U2VsZWN0
b3IpKSk7CiAgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGdseXBocyA9IG5ld0VudHJ5LT5mb250
cy5nZXQoKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQcnVuZUlu
dGVydmFsID0gNTA7CkBAIC0zMjYsOSArMzI2LDkgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEK
ICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNw
bGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0
ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CiAgICAgR3JhcGhpY3ND
b250ZXh0IHJlY29yZGluZ0NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RD
b250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpS
ZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUo
KSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsICpkaXNwbGF5
TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkpOwog
ICAgIH0pOwogICAgIAogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChzdGFydFgsIDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRz
LmNwcAppbmRleCBkYjc0MzAyZTlkYWE0ZWI1MmMwY2UwODFmZDU2MDUyNzk1NzhmYmY0Li4xMmFj
ODM3ZmNkMjQ2NWY5ZjgxZGViMDY4N2FhNzc2ZDVlYTA2NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApAQCAtODQs
NyArODQsNyBAQCB2b2lkIEZvbnRDYXNjYWRlRm9udHM6OkdseXBoUGFnZUNhY2hlRW50cnk6OnNl
dEdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYQogewogICAgIEFTU0VSVCghZ2x5cGhE
YXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlcikuZ2x5cGgpOwogICAgIGlmICghbV9taXhlZEZvbnQp
IHsKLSAgICAgICAgbV9taXhlZEZvbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1peGVkRm9udEdseXBo
UGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKKyAgICAgICAgbV9taXhlZEZvbnQgPSBtYWtlVW5p
cXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKICAgICAgICAgbV9z
aW5nbGVGb250ID0gbnVsbHB0cjsKICAgICB9CiAgICAgbV9taXhlZEZvbnQtPnNldEdseXBoRGF0
YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGdseXBoRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDI1OWU5NzUzM2Nh
ZWRjZmMxNDVmZjdhYjQyOGVhMTY5ZjY0YjE1OTQuLjc5ZTJmNTM4OGM0NmU1ODkyMzAxNjFjNDc0
NTI1NDE5MjQ3ZTgyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB0ZW1wbGF0ZTxjbGFz
cyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NNYXA8VD46OkdseXBoTWV0cmljc1BhZ2UmIEdseXBo
TWV0cmljc01hcAogICAgIH0KIAogICAgIGlmICghbV9wYWdlcykKLSAgICAgICAgbV9wYWdlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJp
Y3NQYWdlPj4+KCk7CisgICAgICAgIG1fcGFnZXMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8aW50LCBz
dGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+PigpOwogCiAgICAgYXV0byYgcGFnZSA9
IG1fcGFnZXMtPmVuc3VyZShwYWdlTnVtYmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVua25vd25NZXRyaWNzKCkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygpKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuICpwYWdlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkZGM3
Y2FjODU3ODE3Yjc3ZTk1NDI4NDViMDY5ODk3NzlkMmM2OTZiLi4zYmJiMTI1NTliODc3MWUxNjY5
YTJlYjZiMjIyMTQyMWY2MDhjM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTU3LDYgKzU1Nyw3IEBAIGNsYXNzIEdy
YXBoaWNzQ29udGV4dCB7CiAgICAgYm9vbCBzaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKCkgY29u
c3Q7CiAKICAgICBjbGFzcyBXaW5kb3dzQml0bWFwIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbmRvd3NCaXRtYXApOwog
ICAgIHB1YmxpYzoKICAgICAgICAgV2luZG93c0JpdG1hcChIREMsIGNvbnN0IEludFNpemUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggMWI0MjI4NmRkZjQ2NWMwZTJiMTI0ZDhhZmRmMGY3
Y2Q2NDc3Y2JiNy4uZTMzZjhmYmU3Mzg5MmUzNGI4ZGVmODM2ZDQ2ZjVjNzBjNzljNjFkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQml0bWFwVGV4dHVyZUdMOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCosIEdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJTdHlsZSk7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
CmluZGV4IDBiYWQ0ZTcwNjM0MjE5OTg2ODk0NDkyZGZlNmY2MWQzMTc4ODE5ZDMuLmI4NzMxOTRl
ZTI0NjAxZmU0ZTA3MTQ3YWE3MWVhMzA1ODdhODRhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTMwLDYg
KzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1w
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoR3JhcGhpY3NDb250ZXh0SW1wbCk7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0SW1w
bChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTRhYWMxZGY4MzU2YmRiMTBkZjdkMDg2ZmFjZTI2
YzFlMzcxODMyNi4uNmNkMDBjMjY1NzBkOWRiM2I5ZmFhN2UyMDIzYWYxYTVlN2U2M2EwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5j
cHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXI6OnN1cHBvcnRzQ29udGVu
dHNUaWxpbmcoKQogI2VuZGlmCiAKIC8vIFNpbmdsZXRvbiBjbGllbnQgdXNlZCBmb3IgbGF5ZXJz
IG9uIHdoaWNoIGNsZWFyQ2xpZW50IGhhcyBiZWVuIGNhbGxlZC4KLWNsYXNzIEVtcHR5R3JhcGhp
Y3NMYXllckNsaWVudCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKK2NsYXNzIEVtcHR5
R3JhcGhpY3NMYXllckNsaWVudCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgRW1wdHlH
cmFwaGljc0xheWVyQ2xpZW50JiBzaW5nbGV0b24oKTsKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4KQogICAgIGlmIChtX3RyYW5zZm9ybSkKICAgICAgICAgKm1fdHJhbnNmb3JtID0gbWF0
cml4OwogICAgIGVsc2UKLSAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAgICBtX3RyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBHcmFwaGljc0xheWVyOjpjaGlsZHJlblRyYW5zZm9ybSgpIGNvbnN0CkBA
IC0zNTYsNyArMzU2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogICAgIGlmIChtX2NoaWxkcmVu
VHJhbnNmb3JtKQogICAgICAgICAqbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1hdHJpeDsKICAgICBl
bHNlCi0gICAgICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0g
bWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyOjpzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYgbGF5ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5k
ZXggMDA5ZDQ4Njg5NWQ1Njg2MjU0MDExZGY1NjAwYTcyMTEyNDMwZTYyZi4uN2ExZmVhYWM3OWU3
OGJhODhmY2FkY2I4NWUzMjk5ZmQ3OWEwMDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNz
IEZsb2F0QW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigq
dGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0
aGlzKTsKICAgICB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSA6IHB1
YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFs
dWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAg
ICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUm
IG90aGVyKQpAQCAtMTYzLDcgKzE2Myw3IEBAIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDog
cHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25W
YWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBG
aWx0ZXJBbmltYXRpb25WYWx1ZShjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgb3RoZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggZTQ0YTYxZTIy
NGNhMTE5NGQwOTE4ZDQ0NDNiZWE3YzFlN2U0YTBlMS4uYzIxZmUyOWQwZjA1ZmRkZTM5ZTBjNGJm
NGI2MWExYzk3NmNjYjEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljCiB2b2lk
IEltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KCkKIHsKICAgICBpZiAoIW1fYW5p
bWF0aW9uU3RhcnRUaW1lcikKLSAgICAgICAgbV9hbmltYXRpb25TdGFydFRpbWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3RhcnRBbmltYXRpb24pOworICAgICAg
ICBtX2FuaW1hdGlvblN0YXJ0VGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkltYWdl
OjpzdGFydEFuaW1hdGlvbik7CiAgICAgaWYgKG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+aXNBY3Rp
dmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+c3RhcnRP
bmVTaG90KDBfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9MZWdhY3lDRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9M
ZWdhY3lDRE1TZXNzaW9uLmgKaW5kZXggYmU3Njc2MGY4ZTM1NjVkNDI2NzJiMDA1YTk2ZGNkYjdm
YTRiMmQ2OS4uMjVlNzlhNmRjMGE1YjIxOTNhNzJhMjI3YWFjYTE3NzNhN2UzYzI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24u
aApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMZWdhY3lD
RE1TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0OwogICAgIHZp
cnR1YWwgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJM
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKaW5kZXggNzU3ZjA5NTY3ZGM1ZGZkZjViZTAyNjM5NjM5ZDFlZmVjNzE4YzBkYi4uYWJl
ODY5NDE5NGZmN2MxNzUxMDBiNjk4ODA0YTEyNDBiZDYyYzg0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIGNsYXNzIE51bGxNZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gMDsgfQotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOyB9CiAKICAgICBkb3VibGUgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlm
aWVkVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGl2ZVVwZGF0
ZUludGVydmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQpAQCAtMzU1LDcgKzM1NSw3IEBA
IFJlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXllckNsaWVudCYg
Y2xpZW50KQogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBjbGll
bnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxvYWRUaW1lcigqdGhpcywg
Jk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFr
ZV91bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3ByaXZhdGUo
bWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKIHsKIH0KIApAQCAtNTEx
LDcgKzUxMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNv
bnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICNlbmRpZgogICAgICAgICBtX3ByaXZh
dGUtPmxvYWQobV91cmwuc3RyaW5nKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcHJpdmF0
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcyk7CisgICAg
ICAgIG1fcHJpdmF0ZSA9IG1ha2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcyk7
CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCh0aGlzKTsKICAgICAg
ICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCh0aGlzKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oCmluZGV4IDAwZDg1YTQ5OTY0MmIzZjUyMzdiMzBiZmY1ZjRlNmI0MjkxMzBlY2Qu
LjFkMmZjMDA5MjA0YThjMDI1NTQxYjJhMmQ3YzVmMGQwYmU1Yzk5Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBA
IC0xMjksNyArMTI5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAg
ICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0ID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpID09IE1l
ZGlhVGltZTo6emVyb1RpbWUoKSA/IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNl
ZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9CisgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1h
eE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpID8gbWFrZVVuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
bWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2
aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2
aXJ0dWFsIE1lZGlhVGltZSBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtYXhUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2aXJ0
dWFsIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCmluZGV4
IDNlNjg4MDU1YmRjYzBiMTBlNDE2MGNmMTQwZDRmYWNlOTIzMjBhNjUuLjVhZDkzMzQ5YmZiNDBk
YTRmZjMwOGFkYTk4NDk3ZmMzNzVlMTA4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEZsb2F0
UG9pbnRHcmFwaDo6Tm9kZSogRmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2RlKEZsb2F0
UG9pbnQgcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gdGVzdE5vZGUuZ2V0KCk7CiAgICAgfQog
Ci0gICAgbV9hbGxOb2Rlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFBvaW50R3JhcGg6
Ok5vZGU+KHBvaW50KSk7CisgICAgbV9hbGxOb2Rlcy5hcHBlbmQobWFrZVVuaXF1ZTxGbG9hdFBv
aW50R3JhcGg6Ok5vZGU+KHBvaW50KSk7CiAgICAgcmV0dXJuIG1fYWxsTm9kZXMubGFzdCgpLmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcApp
bmRleCA5ZGNlZTg3NjE2MjVjMDE0ODhiNGQ5MGQxYWYyMmUzNTQzNWQ0YTVlLi42YTcwMWMxYTEy
ODk3OWQ0Yzk0OGIxYTdiYWI1NjhmMTAyNDdjZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIFJlZ2lvbjo6
c2V0U2hhcGUoU2hhcGUmJiBzaGFwZSkKICAgICB9CiAKICAgICBpZiAoIW1fc2hhcGUpCi0gICAg
ICAgIG1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBlKSk7Cisg
ICAgICAgIG1fc2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBlKSk7CiAgICAg
ZWxzZQogICAgICAgICAqbV9zaGFwZSA9IFdURk1vdmUoc2hhcGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCA3OTYzM2ZkYjZhZGYzNGZmZmVlOGY4
MjY3NDgzYjhjZmY1Y2UxZjNjLi5iYzM5YzMwMDAwZWE4YjZiNWE5ZTYwY2YyYmM1YWUxODY2NjRi
NmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaApAQCAtOTEs
NiArOTEsNyBAQCBjbGFzcyBSZWdpb24gewogICAgIH07CiAKICAgICBjbGFzcyBTaGFwZSB7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgU2hh
cGUoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFNoYXBlKGNvbnN0IEludFJlY3QmKTsKQEAgLTE0OCw3
ICsxNDksNyBAQCBjbGFzcyBSZWdpb24gewogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNoYXBlJiwgY29uc3QgU2hhcGUmKTsKICAgICB9OwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFNoYXBlPiBjb3B5U2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlID8gc3RkOjptYWtl
X3VuaXF1ZTxTaGFwZT4oKm1fc2hhcGUpIDogbnVsbHB0cjsgfQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IG1ha2VVbmlxdWU8
U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KICAgICB2b2lkIHNldFNoYXBlKFNoYXBlJiYp
OwogCiAgICAgSW50UmVjdCBtX2JvdW5kczsKQEAgLTI4OSw3ICsyOTAsNyBAQCBPcHRpb25hbDxS
ZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGRlY29kZXIg
Pj4gc2hhcGU7CiAgICAgICAgIGlmICghc2hhcGUpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotICAgICAgICByZWdpb24ubV9zaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+
KFdURk1vdmUoKnNoYXBlKSk7CisgICAgICAgIHJlZ2lvbi5tX3NoYXBlID0gbWFrZVVuaXF1ZTxT
aGFwZT4oV1RGTW92ZSgqc2hhcGUpKTsKICAgICB9CiAKICAgICByZXR1cm4geyByZWdpb24gfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRU
cmFja1JlcHJlc2VudGF0aW9uLmNwcAppbmRleCAxZTRlN2ZhYzM2YzdjMzBhNjU2ZjFlZmQwMGFh
Y2U2ZDRjOTVjZWRhLi42OTM5ZjkxN2FlNmZhYjEzZWMxYzkxZDRhYTgxNTU2NmE5MTcwZGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIE51bGxUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbiA6IHB1YmxpYyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiB7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb246OmNyZWF0ZShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uPigpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9W
ZWxvY2l0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5
RGF0YS5oCmluZGV4IDdhZWI3NTliMzRiMThhMWU4NDY4M2YyOWM2MTZhNmNkYjAyNTc0ZDguLjZh
MDZjYzZlYmEzNGI5NTlkMmYxODYwMjI5ZTFmMmYzOGZmMzE5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCkBAIC02NSw2ICs2NSw3IEBA
IHN0cnVjdCBWZWxvY2l0eURhdGEgIHsKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFZlbG9jaXR5RGF0YSYpOwogCiBjbGFzcyBIaXN0b3Jp
Y2FsVmVsb2NpdHlEYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBIaXN0b3JpY2FsVmVsb2NpdHlEYXRhKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFO
R0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dDNEQU5HTEUuY3BwCmluZGV4IDc3YTNlMThjMWM2YzJlMjdkZDYzYWUyOTZmNmVjOWEx
ZWEyZmFlMWYuLjYxMjYwZTljODNkYzRhNTUyODU3MWM5OWQ0YTI3MDViMTZjYTRlMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dDNEQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9u
czNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4
dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5z
aW9uczNEQU5HTEU+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5z
aW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNEQU5HTEU+KHRoaXMsIGlzR0xFUzJDb21wbGlh
bnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCmluZGV4IGE5ZWNkMzIxMzZkYTg3NzAyZjQ3
OGFmY2Q4YWNjOGViOTdjMjM5NDAuLjk5ZGRkZDhmODUwMjczMDNiYjhhNzYzZWNhYzJiODY5ODgy
ZmE5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwu
aApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVNlbGVj
dGlvbk9wdGlvbkFWRk9iakM7CiAKIGNsYXNzIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGwoQVZQbGF5ZXJJdGVtVHJhY2sqKTsKICAgICBleHBsaWNpdCBB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWQXNzZXRUcmFjayopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IDVjZDc3NzJhYzJlZTFj
ZWE5MDEwZTgzMzcxZWE2YWFlZjdmMDY5NTguLjZiM2M5MjJlNmFlYmU1OTIwYWU2NWU1N2FmMDVl
ZGU0YWQwMzc0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0KQEAgLTMxMywxMiArMzEzLDEyIEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OnByZXBhcmUoQ01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0cmVh
CiB7CiAgICAgQVNTRVJUKG1heEZyYW1lcyA+PSAwKTsKIAotICAgIG1fdGFwRGVzY3JpcHRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3Np
bmdGb3JtYXQpOworICAgIG1fdGFwRGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpwcm9jZXNzaW5nRm9ybWF0
KTsKICAgICBpbnQgbnVtYmVyT2ZDaGFubmVscyA9IHByb2Nlc3NpbmdGb3JtYXQtPm1DaGFubmVs
c1BlckZyYW1lOwogICAgIGRvdWJsZSBzYW1wbGVSYXRlID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bVNh
bXBsZVJhdGU7CiAgICAgQVNTRVJUKHNhbXBsZVJhdGUgPj0gMCk7CiAKLSAgICBtX291dHB1dERl
c2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+
KCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsKICAgICBtX291dHB1dERlc2Ny
aXB0aW9uLT5tU2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CiAgICAgbV9vdXRwdXREZXNjcmlwdGlv
bi0+bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwogICAgIG1fb3V0cHV0RGVzY3Jp
cHRpb24tPm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQ7
CkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJl
cGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEKICAgICAvLyBNYWtl
IHRoZSByaW5nYnVmZmVyIGxhcmdlIGVub3VnaCB0byBzdG9yZSBhdCBsZWFzdCB0d28gY2FsbGJh
Y2tzIHdvcnRoIG9mIGF1ZGlvLCBvciAxcywgd2hpY2hldmVyIGlzIGxhcmdlci4KICAgICBzaXpl
X3QgY2FwYWNpdHkgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+KDIgKiBtYXhGcmFtZXMp
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KGtSaW5nQnVmZmVyRHVyYXRpb24gKiBzYW1wbGVSYXRlKSk7
CiAKLSAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsK
KyAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKICAgICBtX3Jp
bmdCdWZmZXItPmFsbG9jYXRlKENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbigqcHJvY2Vzc2luZ0Zv
cm1hdCksIGNhcGFjaXR5KTsKIAogICAgIC8vIEF1ZGlvQnVmZmVyTGlzdCBpcyBhIHZhcmlhYmxl
LWxlbmd0aCBzdHJ1Y3QsIHNvIGNyZWF0ZSBvbiB0aGUgaGVhcCB3aXRoIGEgZ2VuZXJpYyBuZXco
KSBvcGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5k
ZXggMzYxYTk5MmYwYzQ2NTBjZjJiOTYyOGE2NDJlOTdiNWRiYTBlMmEzYy4uNGZjNjc4N2RkOGQ5
MDdjYWQ2YTI3N2YzOWIxZWQzMmVkNjc5YTZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCkBAIC0yMzQsNyArMjM0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENE
TVByaXZhdGU+IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKGNvbnN0IFN0
cmluZyYKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZz4oKTsKIH0KIAogYm9vbCBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCA4OTE4ZTgwZTBjMzkwZDdlOGRhY2ExOTAz
OTQ3OWEwZDBmNjk1YWQ4Li41Mzg2OTY5Zjk0OTc2ZjM4MzY4MDE4NzQxYmFmZDEyNTUxZTI4Yjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtMzUsNiArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRm91ckNDOwogCiBjbGFzcyBDRE1GYWN0
b3J5RmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIENETUZhY3RvcnlGYWly
UGxheVN0cmVhbWluZyYgc2luZ2xldG9uKCk7CiAKQEAgLTQ5LDYgKzUwLDcgQEAgY2xhc3MgQ0RN
RmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgewogfTsK
IAogY2xhc3MgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETVBy
aXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKaW5kZXggNGE1MGViNDFhNTgzNjgzZjY2YTY3NjIyOTU0NmM1ODAxYjIwYjU4
OC4uZDgxYmNhMzU0OTAzOTE4YTFiZGEwYWRkZDk1OGQ1OTQzZjcwMWIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zNyw2ICsz
Nyw3IEBAIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akM7CiAKIGNsYXNzIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJsaWMgQ0RNUHJp
dmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhMZWdhY3lDRE0qIGNkbSkK
ICAgICAgICAgOiBtX2NkbShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjYzA4YTlhM2I1MWNiZjdhYjE5NzQyMDJhOThi
MTY5ZGI0M2MxMDEuLjBjZDAxMjlhM2NkOWVhZjg2M2FkNDc4OTgzODUwMzFkOGI3NmVmNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CkBAIC0xNDcsMTAgKzE0NywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4g
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbihMZQogI2VuZGlmCiAg
ICAgCiAgICAgaWYgKHNob3VsZFVzZUFWQ29udGVudEtleVNlc3Npb24gJiYgQ0RNU2Vzc2lvbkFW
Q29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHNlc3Npb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBhcmFt
ZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwgKnRo
aXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25BVkNv
bnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCBw
YXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7CiAgICAgZWxzZQogI2lm
IEhBVkUoQVZTVFJFQU1TRVNTSU9OKQotICAgICAgICBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5w
cm90b2NvbHMpLCAqdGhpcywgY2xpZW50KTsKKyAgICAgICAgc2Vzc2lvbiA9IG1ha2VVbmlxdWU8
Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJv
dG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CiAjZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJv
eC5oCmluZGV4IGU0NjAxNDgzMDVjZWVkMWI1NjQ4NDE5OTZjYjlmYzM0Y2RjM2FiNTIuLjE0N2Mz
NzlmMTI3MDY4MmU1NWZkMjE1Y2UyM2EzOWVhMTI0OTVhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWlu
Z1Bzc2hCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNp
IjsgfQogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5
U3RyZWFtaW5nSW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKICAgICBGb3VyQ0MgbV9zY2hl
bWU7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJl
cXVlc3RJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09G
dWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gImZrcmkiOyB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsK
ICAgICBLZXlJRCBtX2tleUlEOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlBc3NldElkQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggZmluYWwgOiBwdWJsaWMg
SVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gImZrYWkiOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IG1fZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IGZpbmFsIDogcHVibGlj
IElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0
dXJuICJma2N4IjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IGZpbmFs
IDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFt
ZSgpIHsgcmV0dXJuICJma3ZsIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiB2ZXJzaW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbnM7IH0KQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1
YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBtX3ZlcnNpb25zOwogfTsKIAotY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IDogcHVi
bGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tl
eVJlcXVlc3RCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Rm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2siOyB9CiAKQEAgLTEwNiw3ICsxMDYs
NyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RC
b3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBPcHRpb25hbDxJU09GYWlyUGxheVN0cmVhbWluZ0tl
eVZlcnNpb25MaXN0Qm94PiBtX3ZlcnNpb25MaXN0OwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCBmaW5hbCA6
IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUo
KSB7IHJldHVybiAiZnBzZCI7IH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94IHsK
ICAgICBWZWN0b3I8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94PiBtX3JlcXVlc3Rz
OwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94
IDogcHVibGljIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggZmluYWwgOiBwdWJsaWMg
SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmYWlyUGxheVN5c3RlbUlEKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5k
ZXggODU3ZjMxZjI3NzJmNDA4MWZiYTYzOGY4MTBjMTE0OTQyODU4Yjk0Yi4uNTljZjhiYTIxMzE2
YjMwN2MwNTAyM2VkNTZkOWIzOWQyNTYxN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM4NCw3ICszODQsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgYwogICAgIGlmICghbV9jYWNoZWRMb2FkZWRUaW1lUmFu
Z2VzKQogICAgICAgICBtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMgPSBwbGF0Zm9ybUJ1ZmZlcmVk
VGltZVJhbmdlcygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpOwogfQogCiBN
ZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjptYXhNZWRpYVRpbWVTZWVr
YWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYy5jcHAKaW5kZXggMzk1Y2U3ODJlOGM1ODA0NTk2MTYyNDY5ODBmMzNlYWRmMDNiNzhiMi4u
NWY1YjZmNjk1MmI0OTNhOTg4N2JhZmM3ZjMwYjdiZWU3MzM0MTVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAtNDksNyArNDksNyBA
QCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp+V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYygp
ID0gZGVmYXVsdDsKIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXImIFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWM6OnBsYXRmb3JtUGlja2VyKCkKIHsKICAgICBpZiAoIW1fdGFyZ2V0
UGlja2VyKQotICAgICAgICBtX3RhcmdldFBpY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRoaXMpOworICAgICAgICBtX3RhcmdldFBpY2tlciA9
IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRoaXMpOwogCiAgICAg
cmV0dXJuICptX3RhcmdldFBpY2tlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaAppbmRleCA3NjA4YTAxNzI2M2IzMDQ0NGNhYmU1
MzVmZGE0NGM5OWZmYWYxMWYyLi5kNjE2N2I4NzY4OTk5ZGMwNDk0NzUzODIwZDlhMmJjN2JlZDA2
NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25D
Ri5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogCiBjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
Q0YgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYWYwYTdjYzc3YmYyOTJjZGZkNjZhYmM2ZTdmNjNh
NTA5MDBhYWQ2Ny4uM2I3MGU3NjYzOWU1OTQwYWYxZjJiMWQ1YmYyNjczYWUzMmRlY2ExMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCkBAIC05OCw2ICs5OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiBj
bGFzcyBMYXllckNsaWVudDsKIAogY2xhc3MgQVZGV3JhcHBlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQVZGV3JhcHBlcihNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRiopOwogICAgIH5BVkZXcmFwcGVyKCk7CkBAIC0yMTMsNiArMjE0LDcgQEAg
Y2xhc3MgQVZGV3JhcHBlciB7CiB1aW50cHRyX3QgQVZGV3JhcHBlcjo6c19uZXh0QVZGV3JhcHBl
ck9iamVjdElEOwogCiBjbGFzcyBMYXllckNsaWVudCA6IHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExheWVy
Q2xpZW50KEFWRldyYXBwZXIqIHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHsgfQogICAgIHZp
cnR1YWwgfkxheWVyQ2xpZW50KCkgeyBtX3BhcmVudCA9IDA7IH0KQEAgLTM0Myw3ICszNDUsNyBA
QCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUo
TWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgp
KQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsg
fSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1h
a2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0sCiAg
ICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCBzdXBw
b3J0c0tleVN5c3RlbSk7CiB9CiAKQEAgLTY3Miw3ICs2NzQsNyBAQCBzdGF0aWMgYm9vbCB0aW1l
UmFuZ2VJc1ZhbGlkQW5kTm90RW1wdHkoQ01UaW1lIHN0YXJ0LCBDTVRpbWUgZHVyYXRpb24pCiAK
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAg
YXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7
CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7
CiAKICAgICBpZiAoIWF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm4g
dGltZVJhbmdlczsKQEAgLTExMzcsNyArMTEzOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lD
RE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lv
CiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZv
dW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNU2Vz
c2lvbkFWRm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsKIH0KIAogI2VsaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC0xNjQxLDYgKzE2NDMsNyBAQCB2b2lkIEFWRldyYXBw
ZXI6OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2soQVZDRlBsYXllclJlZiwgQ01UaW1lIGNt
VGltZSwgdm9pZAogfQogCiBzdHJ1Y3QgTm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhIHsKKyAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBtX3Byb3BlcnR5TmFtZTsKICAgICB2b2lkKiBtX2NvbnRleHQ7CiAKQEAgLTE3MDgsNyArMTcx
MSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRp
b25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDCiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBl
cjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soaWY9JWQpICVzIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KG9ic2VydmVyKSwgbm90aWZpY2F0aW9uTmFtZSk7CiAjZW5kaWYKIAotICAgIGF1dG8g
bm90aWZpY2F0aW9uRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uQ2FsbGJhY2tE
YXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbkRhdGEg
PSBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4ocHJvcGVydHlOYW1lLCBvYnNl
cnZlcik7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IG5vdGlmaWNhdGlvbkRhdGEucmVsZWFzZSgpLCBwcm9jZXNzTm90aWZpY2F0aW9uKTsKIH0KQEAg
LTE3ODUsNiArMTc4OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6c2Vla1RvVGltZShjb25zdCBNZWRp
YVRpbWUmIHRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlCiAKICNpZiBIQVZFKEFW
Rk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xF
R0lCTEVfT1VUUFVUX1NVUFBPUlQpCiBzdHJ1Y3QgTGVnaWJsZU91dHB1dERhdGEgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
bV9hdHRyaWJ1dGVkU3RyaW5nczsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9zYW1wbGVz
OwogICAgIE1lZGlhVGltZSBtX3RpbWU7CkBAIC0xODMzLDcgKzE4MzcsNyBAQCB2b2lkIEFWRldy
YXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBBVkNGUGxheWVySXRl
bUxlZ2libGVPdXRwdQogCiAgICAgQVNTRVJUKGxlZ2libGVPdXRwdXQgPT0gc2VsZi0+bV9sZWdp
YmxlT3V0cHV0KTsKIAotICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPExlZ2libGVPdXRwdXREYXRhPihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0aXZlU2FtcGxlQnVm
ZmVycywgUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIGNvbnRleHQpOworICAgIGF1dG8gbGVn
aWJsZU91dHB1dERhdGEgPSBtYWtlVW5pcXVlPExlZ2libGVPdXRwdXREYXRhPihhdHRyaWJ1dGVk
U3RyaW5ncywgbmF0aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSks
IGNvbnRleHQpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBsZWdpYmxlT3V0cHV0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NDdWUpOwogfQpAQCAtMTg0
MSw2ICsxODQ1LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9p
ZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHUKIAogI2lmIEhBVkUoQVZGT1VO
REFUSU9OX0xPQURFUl9ERUxFR0FURSkKIHN0cnVjdCBMb2FkUmVxdWVzdERhdGEgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZXRhaW5QdHI8QVZDRkFzc2V0UmVz
b3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gbV9yZXF1ZXN0OwogICAgIHZvaWQqIG1fY29udGV4dDsK
IApAQCAtMTkyNiw3ICsxOTMxLDcgQEAgQm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRl
clNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXMKIAogICAgIExP
RyhNZWRpYSwgIkFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdP
ZlJlcXVlc3RlZFJlc291cmNlKCVwKSIsIHNlbGYpOwogCi0gICAgYXV0byBsb2FkUmVxdWVzdERh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9hZGluZ1JlcXVlc3QsIGNv
bnRleHQpOworICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0gbWFrZVVuaXF1ZTxMb2FkUmVxdWVz
dERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2Yo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbG9hZFJlcXVlc3REYXRhLnJlbGVhc2UoKSwgcHJv
Y2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk7CiAKQEAgLTE5NTMsNyArMTk1OCw3
IEBAIFBsYXRmb3JtTGF5ZXIqIEFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKQogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIC8vIENyZWF0ZSBhIFBsYXRmb3JtQ0FMYXllciBzbyB3ZSBjYW4gcmVz
aXplIHRoZSB2aWRlbyBsYXllciB0byBtYXRjaCB0aGUgZWxlbWVudCBzaXplLgotICAgIG1fbGF5
ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKTsKKyAgICBtX2xh
eWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CiAgICAgaWYgKCFtX2xh
eWVyQ2xpZW50KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUxNGFmMWEyN2YyNmJkMWFk
NjAyODYwNGE1NzUyZjBkZjlhOGRmNTIuLjdkZTE0YzI1NzFmN2QzOGVlY2JiMzQ4ZmRhM2M3NGE0
M2RlYjgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakMubW0KQEAgLTMzLDEzICszMywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVlBs
YXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVz
RnJvbVRyYWNrKCk7CiB9CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAgIDog
bV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9u
KSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9w
dGlvbikpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC01OSw3ICs1
OSw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9t
VHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRy
YWNrKEFWUGxheWVySXRlbVRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBt
YWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFBy
b3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtNjksMTQgKzY5LDE0IEBAIEFWUGxheWVySXRl
bVRyYWNrKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiB9CiAK
IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWQXNz
ZXRUcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRy
YWNrKCk7CiB9CiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNr
KEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVz
RnJvbVRyYWNrKCk7CiB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgQVZBc3NldFRyYWNrKiBBdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakM6OmFzc2V0VHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24oTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZP
YmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJh
Y2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGVjMGQwZWRkYmY3M2Jl
ZWRhNjcxN2I3YTUxOGM3MzIxMjYwOTVhZTIuLmRmNTIyNmE0ZWEwMzZlNTZmYTI1MzlhNjI3NjJh
MjM4YWU3MGUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayog
dHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2ltcGwo
c3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAg
OiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiAg
ICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7
CkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsK
LSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKaW5k
ZXggMjJhYWZlYzdiODM0MjdiODEzMGE3YzA0M2Y4ZjY3MjA4MzRjY2E0Ny4uNWQ4ZTI1MDc0NzBi
YzdhNDk5OTU1Yzk4MWIxNzZmZjQ0NGZiYzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0zOSw3ICszOSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzsKIAotY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTGVnYWN5
Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDPiB7CitjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyBmaW5hbCA6IHB1YmxpYyBM
ZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uT2JqQygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDI0YjJhMTdkOTc3ZWJiZjA1
MzM1MGM1NWQ5ZDQwOWE2MTI3OTYzOGYuLjM5ZWE4ZTUxMTM2MzJhZTc0YmY1MzY0YThkMWIwMjY5
NzIyMWFhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIAogY2xhc3MgQ0RNU2Vzc2lv
bk1lZGlhU291cmNlQVZGT2JqQyA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRy
PENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmly
dHVhbCB+Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMmZlMjUyNDk5NGMzYjE5NDQ1OWVj
MzMzMDI5YWJkOWU5ODVjNzViNC4uYmIwNzc3NjEzODJjODgwODA3YmE1M2M4ZGFkYjI5NDU2ZTU2
ZWI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpyZWFkVHJhY2tN
ZXRhZGF0YSgpCiAgICAgICAgIHx8ICFtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0o
KQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKS52YWx1ZSgp
ICE9IGZpbmFsVHJhbnNmb3JtCiAgICAgICAgIHx8IG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNp
emUoKSAhPSBzaXplKQotICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwg
c2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6
SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKKyAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lv
biA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5z
Zm9ybSksIHNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNz
aW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CiAKICAgICBtX3NpemUgPSBleHBhbmRl
ZEludFNpemUobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+cm90YXRlZFNpemUoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCBjNjU5MGJkZWU2N2I0ZTIwOTg4OGU5NmEyYzMzMGYyZmUy
MzM4Njk3Li44NDk5MDRhY2Y5MjljN2NmZTNmOTRiYzQxMGUwZDBiMmU4YjFiNDQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYQogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVn
aXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKKyAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0
U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSk7
CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJs
ZSgpKTsKIH0KQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJgogCiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24ocGxheWVyKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQor
ICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogICAgICwgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5
KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpCiAgICAgLCBtX29iamNPYnNl
cnZlcihhZG9wdE5TKFtbV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoUGxh
eWVyOm1ha2VXZWFrUHRyKCp0aGlzKV0pKQogICAgICwgbV92aWRlb0ZyYW1lSGFzRHJhd24oZmFs
c2UpCkBAIC0xMzM3LDcgKzEzMzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBhdXRv
IHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAg
ICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIAog
ICAgIGlmICghbV9hdlBsYXllckl0ZW0pCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwpAQCAt
MTg5Miw3ICsxODkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVSb3RhdGlvblNlc3Npb24oKQogICAgICAgICAmJiBtX2ltYWdlUm90YXRpb25TZXNz
aW9uLT5zaXplKCkgPT0gbmF0dXJhbFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW1h
Z2VSb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9u
VlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4ZWxGb3JtYXRU
eXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6
WWVzKTsKKyAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBp
eGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNv
bXBhdGlibGU6Olllcyk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0yMjE2LDcg
KzIyMTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0
ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAjZWxzZQogICAgICAgICBOU0RpY3Rpb25hcnkg
KmF0dHJpYnV0ZXMgPSBuaWw7CiAjZW5kaWYKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1l
ciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
QEAgLTIyNjUsNyArMjI2NSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgc2l6ZV90
IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkp
OwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1
cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4
dCk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1
cmVDb3BpZXJDVj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVy
LT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lk
dGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxG
b3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQpAQCAtMjMz
MCw3ICsyMzMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3MKIHsKICAgICBpZiAoIWtleVN5
c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGF1dG8gc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9i
akM+KHRoaXMsIGNsaWVudCk7CisgICAgYXV0byBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsKICAgICBtX3Nlc3Npb24gPSBtYWtl
V2Vha1B0cigqc2Vzc2lvbik7CiAgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lvbik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDczOTZlNWIxYjQzMTE5OGU1ZTYwZDhmY2QwNjM1OWJi
MjdjZjQ5ZjcuLmExZGQwZjkwOTFmYjI4NjQ2OGRiZTBhZTEwY2U4YjNjMTQyYzBiZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yNjgsNiArMjY4LDcgQEAgY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDCiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakM7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1NlZWsgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdTZWVrKGNvbnN0IE1l
ZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9sZCwg
Y29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCkKICAgICAgICAgICAgIDogdGFyZ2V0
VGltZSh0YXJnZXRUaW1lKQogICAgICAgICAgICAgLCBuZWdhdGl2ZVRocmVzaG9sZChuZWdhdGl2
ZVRocmVzaG9sZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBmMTk1MTU2ZDhjZjIy
NTZmNjBmOWY1NTMyNDEyOWU4NTIzZDlkMzhiLi45YzBhZWY2MTlhZGMyYTMxOGYwZGI3ZDJlMzg2
N2MyMWRmYzMxZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMzcsNyArMTM3
LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTWVkaWEKICAgICAsIG1fcGxheWluZygwKQogICAgICwg
bV9zZWVraW5nKGZhbHNlKQogICAgICwgbV9sb2FkaW5nUHJvZ3Jlc3NlZChmYWxzZSkKLSAgICAs
IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJN
YW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAg
ICAsIG1fZWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcihFZmZlY3RpdmVSYXRlQ2hhbmdlZExp
c3RlbmVyOjpjcmVhdGUoKnRoaXMsIFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pKQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxv
Z2dlcigpKQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0CiAgICAg
aWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtd
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVU
eXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAtNDM3LDcgKzQzNyw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrV2l0aFRv
bGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIHRpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
InRpbWUgPSAiLCB0aW1lLCAiLCBuZWdhdGl2ZVRocmVzaG9sZCA9ICIsIG5lZ2F0aXZlVGhyZXNo
b2xkLCAiLCBwb3NpdGl2ZVRocmVzaG9sZCA9ICIsIHBvc2l0aXZlVGhyZXNob2xkKTsKIAogICAg
IG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6bWFrZV91bmlxdWU8
UGVuZGluZ1NlZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7
CisgICAgbV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KHRpbWUsIG5lZ2F0
aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBpZiAobV9zZWVrVGltZXIu
aXNBY3RpdmUoKSkKICAgICAgICAgbV9zZWVrVGltZXIuc3RvcCgpOwpAQCAtNTQzLDcgKzU0Myw3
IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla2FibGUo
KSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJs
ZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdApA
QCAtNTU4LDcgKzU1OCw3IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8g
bV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21l
ZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFu
Z2VzPigpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKIAogICAg
IGlmICghbV9yZ2JDb25mb3JtZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gQHsgKF9f
YnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NW
UGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfTsKLSAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25h
cnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcmdiQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQ
aXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0
ZXMpOwogICAgIH0KIAogICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3JtZXItPmNyZWF0ZUlt
YWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKQEAgLTY0OSw3ICs2
NDksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAgIHNpemVfdCBoZWlnaHQgPSBDVlBp
eGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAogICAgIGlmICgh
bV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOworICAgICAgICBt
X3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpj
b250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9Q
bGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91
dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQs
IHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQppbmRleCBjYTNiMTEzNTUyYjM4ODVjOTk5NzdkYWUyYTIxZWExNjU3N2VkYTgwLi45ZGVl
ZTQ2ZjJjYTI0NTI5NTNkZjVjYTg4YmI2OWY4MThlN2U0ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tCkBAIC0xODMsNyArMTgzLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWEKICAg
ICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHRO
UyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRo
UGFyZW50OnRoaXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3JlYXRlKCkpCi0gICAg
LCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlhUGxh
eWVyTG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxheWVyLT5tZWRpYVBsYXllckxv
Z0lkZW50aWZpZXIoKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWls
YWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+
KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgICAgICByZWdpc3RyYXIoW10oTWVk
aWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAgICAg
ICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTA1NCwxMiArMTA1NCwx
MiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJh
Y2tzKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpidWZm
ZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMTA3Myw3
ICsxMDczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVw
ZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2lt
YWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9pbWFnZVBhaW50ZXIu
cGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9y
bWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICop
a0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMy
QkdSQSkgfSk7CisgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0g
bWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBl
S2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCiAgICAgQVNTRVJUKG1faW1h
Z2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKTsKICAgICBpZiAoIW1faW1hZ2VQYWludGVy
LnBpeGVsQnVmZmVyQ29uZm9ybWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKaW5kZXggYzg3MWM1OTQ4MzU1MDg1NzE4MmM3YTI0
ZDU1MzRiODVhNWQ0ZWY3ZS4uMjk0ODNiYTVlOThkOTVmYThlNWVjOWE2YTEwYmY2NDFhYWUzNTU5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuY3BwCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmlk
ZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJ
dGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VV
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikK
LSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KG9wdGlvbikpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPihvcHRpb24pKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAt
NjYsNyArNjYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXll
ckl0ZW1UcmFjayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3Rk
OjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9p
bXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAg
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTc3LDcgKzc3LDcgQEAgQVZQbGF5
ZXJJdGVtVHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRlbVRyYWNrKCkK
IAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRy
YWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2so
KTsKIH0KIApAQCAtODgsNyArODgsNyBAQCBBVkFzc2V0VHJhY2sqIFZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQzo6YXNzZXRUcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpz
ZXRNZWRpYVNlbGVjdG9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9u
KQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZmNjMjQ5NmExMzVhYTRmNzNhOGZlNTQ4ZDE0
ZTBjODAwMDRhZDFiMC4uOTc1NmNmZmFmZDhjM2Y2ZmUzYjQ3YTIzMzM3MWI3NGRlYzk4ZDA2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiAgICAgLCBtX3BhcmVudChw
YXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCiAgICAgLCBtX3NlbGVjdGVkKGZhbHNlKQpAQCAt
NTYsNyArNTYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAg
bV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
ayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0
cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
CmluZGV4IDE3MWYyNzcyYzk0YTY5Y2RhNzM0OTNjYzljOGM3ODc4YjAwMTA4ZGQuLjg3NjUzNDQ1
MjAyNGU2MTY1MTQxN2EwNGEwZDk0NTA1OGE5NTQwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTYz
NiwxMiArMTYzNiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hh
bmdlcyhDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgIGlmICh1c2VzRGlz
cGxheUxpc3REcmF3aW5nKCkgJiYgbV9kcmF3c0NvbnRlbnQgJiYgKCFtX2hhc0V2ZXJQYWludGVk
IHx8IGhhZERpcnR5UmVjdHMpKSB7CiAgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKERp
c3BsYXlMaXN0UmVjb3JkU3RhcnQsIERpc3BsYXlMaXN0UmVjb3JkRW5kKTsKIAotICAgICAgICBt
X2Rpc3BsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+
KCk7CisgICAgICAgIG1fZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdD4oKTsKICAgICAgICAgCiAgICAgICAgIEZsb2F0UmVjdCBpbml0aWFsQ2xpcChib3Vu
ZHNPcmlnaW4oKSwgc2l6ZSgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChb
Jl0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlMaXN0
LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihj
b250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENs
aXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSkp
OwogICAgIH0KQEAgLTI4NjcsNyArMjg2Nyw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjppc1J1
bm5pbmdUcmFuc2Zvcm1BbmltYXRpb24oKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVu
c3VyZUxheWVyQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvbnMpCi0gICAgICAg
IG1fYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOworICAg
ICAgICBtX2FuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKIH0KIAog
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1h
dGlvbiYgY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIFNlY29uZHMgdGltZU9mZnNl
dCkKQEAgLTM5MDMsNyArMzkwMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVDbG9u
ZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+CiAgICAgY29u
dGVudHNMYXllciA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fbGF5ZXJDbG9uZXMpCi0gICAgICAg
IG1fbGF5ZXJDbG9uZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xvbmVzPigpOworICAgICAg
ICBtX2xheWVyQ2xvbmVzID0gbWFrZVVuaXF1ZTxMYXllckNsb25lcz4oKTsKIAogICAgIHByaW1h
cnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdldCgpLCBtX2xheWVy
Q2xvbmVzLT5wcmltYXJ5TGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwogICAgIHN0cnVjdHVyYWxM
YXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwg
bV9sYXllckNsb25lcy0+c3RydWN0dXJhbExheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmgKaW5kZXggM2FjNGMxZTMyYTE1NDhkNThjNjkxMTE3Y2M2OWEyOWM0ZGNmMGUxYS4uYzRiMmM5
YzM0NzA4MGE2YjdjOTZkNjcwMmY0YTRkOGEzMGM3ZjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1Nyw2
ICsxNTcsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwg
cHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgRmxvYXRTaXplIHBpeGVsQWxpZ25t
ZW50T2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9waXhlbEFsaWdubWVudE9mZnNl
dDsgfQogCiAgICAgc3RydWN0IENvbW1pdFN0YXRlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB1bnNpZ25lZCB0cmVlRGVwdGggeyAwIH07CiAgICAg
ICAgIHVuc2lnbmVkIHRvdGFsQmFja2Ryb3BGaWx0ZXJBcmVhIHsgMCB9OwogICAgICAgICBib29s
IGFuY2VzdG9ySGFkQ2hhbmdlcyB7IGZhbHNlIH07CkBAIC0zMDksNiArMzEwLDcgQEAgY2xhc3Mg
R3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQgewogICAgIHR5cGVkZWYgdW5zaWduZWQgQ29tcHV0ZVZpc2libGVSZWN0Rmxh
Z3M7CiAgICAgCiAgICAgc3RydWN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBGbG9hdFJlY3QgdmlzaWJs
ZVJlY3Q7CiAgICAgICAgIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3Q7CiAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGFuaW1hdGluZ1RyYW5zZm9ybTsKQEAgLTMyOCw2ICszMzAsNyBAQCBjbGFz
cyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCB7CiAKICAgICAvLyBVc2VkIHRvIHRyYWNrIHRoZSBwYXRoIGRvd24gdGhl
IHRyZWUgZm9yIHJlcGxpY2EgbGF5ZXJzLgogICAgIHN0cnVjdCBSZXBsaWNhU3RhdGUgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbWF4UmVwbGljYURlcHRoID0gMTY7CiAgICAgICAgIGVudW0gUmVwbGljYUJyYW5j
aFR5cGUgeyBDaGlsZEJyYW5jaCA9IDAsIFJlcGxpY2FCcmFuY2ggPSAxIH07CiAgICAgICAgIFJl
cGxpY2FTdGF0ZShSZXBsaWNhQnJhbmNoVHlwZSBmaXJzdEJyYW5jaCkKQEAgLTU3OSw2ICs1ODIs
NyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGlj
IFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAKICAgICAvLyBSZWZlcmVuY2VzIHRvIGNsb25lcyBv
ZiBvdXIgbGF5ZXJzLCBmb3IgcmVwbGljYXRlZCBsYXllcnMuCiAgICAgc3RydWN0IExheWVyQ2xv
bmVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBM
YXllck1hcCBwcmltYXJ5TGF5ZXJDbG9uZXM7CiAgICAgICAgIExheWVyTWFwIHN0cnVjdHVyYWxM
YXllckNsb25lczsKICAgICAgICAgTGF5ZXJNYXAgY29udGVudHNMYXllckNsb25lczsKQEAgLTYw
OCw2ICs2MTIsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXll
ciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+PiBBbmltYXRpb25zVG9Qcm9j
ZXNzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3BlcnR5
QW5pbWF0aW9uPj4gQW5pbWF0aW9uc01hcDsKICAgICBzdHJ1Y3QgTGF5ZXJBbmltYXRpb25zIHsK
KyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBWZWN0b3I8
TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gdW5jb21pdHRlZEFuaW1hdGlvbnM7CiAgICAgICAgIEFu
aW1hdGlvbnNUb1Byb2Nlc3NNYXAgYW5pbWF0aW9uc1RvUHJvY2VzczsKICAgICAgICAgQW5pbWF0
aW9uc01hcCBydW5uaW5nQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA0ZDY0YzJjNGIxOWIz
MWI4MDU0YzFiYzQxYWMwMjI1NzNiZWZmNTYyLi4zMDVlZmQzMzNiZDYxMWM2ZWY1ZTRjMWIyNjIy
ODg3NTI1NmYyNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBUaWxl
Q29udHJvbGxlcjo6em9vbWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKQogVGlsZUNv
bnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBsYXRmb3JtTGF5
ZXIpCiAgICAgOiBtX3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQogICAgICwgbV9k
ZXZpY2VTY2FsZUZhY3Rvcihvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckRl
dmljZVNjYWxlRmFjdG9yKCkpCi0gICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8VGls
ZUdyaWQ+KCp0aGlzKSkKKyAgICAsIG1fdGlsZUdyaWQobWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRo
aXMpKQogICAgICwgbV90aWxlUmV2YWxpZGF0aW9uVGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxl
cjo6dGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX3RpbGVTaXplQ2hhbmdlVGlt
ZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVNpemVDaGFuZ2VUaW1lckZpcmVkLCB0aWxl
U2l6ZVVwZGF0ZURlbGF5KQogICAgICwgbV9tYXJnaW5FZGdlcyhmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSkKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRDb250
ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQogICAgIGlmIChtX3pvb21lZE91dENvbnRlbnRzU2NhbGUg
JiYgbV96b29tZWRPdXRDb250ZW50c1NjYWxlID09IHRpbGVHcmlkKCkuc2NhbGUoKSAmJiB0aWxl
R3JpZCgpLnNjYWxlKCkgIT0gc2NhbGUgJiYgIW1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2NhbGVG
YWN0b3IpIHsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZCA9IFdURk1vdmUobV90aWxlR3Jp
ZCk7CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPnNldElzWm9vbWVkT3V0VGlsZUdyaWQo
dHJ1ZSk7Ci0gICAgICAgIG1fdGlsZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigq
dGhpcyk7CisgICAgICAgIG1fdGlsZUdyaWQgPSBtYWtlVW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7
CiAgICAgICAgIHRpbGVHcmlkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTUwMCw3ICs1MDAsNyBA
QCBGbG9hdFJlY3QgVGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3Jv
bGxpbmcoY29uc3QgRmxvYXRSZWN0JiBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGlmICghbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhKQotICAgICAgICAgICAgbV9oaXN0b3JpY2Fs
VmVsb2NpdHlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlEYXRhPigp
OworICAgICAgICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhID0gbWFrZVVuaXF1ZTxIaXN0
b3JpY2FsVmVsb2NpdHlEYXRhPigpOwogCiAgICAgICAgIG1fdmVsb2NpdHkgPSBtX2hpc3Rvcmlj
YWxWZWxvY2l0eURhdGEtPnZlbG9jaXR5Rm9yTmV3RGF0YShzY3JvbGxPZmZzZXQsIGNvbnRlbnRz
U2NhbGUsIE1vbm90b25pY1RpbWU6Om5vdygpKTsKICAgICB9OwpAQCAtNjg1LDcgKzY4NSw3IEBA
IEludFJlY3QgVGlsZUNvbnRyb2xsZXI6OnRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdAogUGxhdGZv
cm1DQUxheWVyKiBUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllcigp
CiB7CiAgICAgaWYgKCFtX2NvdmVyYWdlTWFwKQotICAgICAgICBtX2NvdmVyYWdlTWFwID0gc3Rk
OjptYWtlX3VuaXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9jb3ZlcmFn
ZU1hcCA9IG1ha2VVbmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CiAKICAgICByZXR1cm4g
Jm1fY292ZXJhZ2VNYXAtPmxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tCmluZGV4IGE0ODUyM2NmNTE3NmIzMWYyYWNjNDk4NGIyZWNkOGUyYzg3NGY2MDcuLjM2YWMy
Zjc4NGIwMDZmZjljNzAzZjQxZTdiZmY2ODdhMWFhNGM2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3Jt
Q0FMYXllckNvY29hLm1tCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6Y29tbW9uSW5pdCgpCiAgICAgICAgIFdlYlRpbGVkQmFja2luZ0xheWVyKiB0aWxlZEJh
Y2tpbmdMYXllciA9IHN0YXRpY19jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyKj4obV9sYXllci5n
ZXQoKSk7CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IFt0aWxlZEJh
Y2tpbmdMYXllciBjcmVhdGVUaWxlQ29udHJvbGxlcjp0aGlzXTsKIAotICAgICAgICBtX2N1c3Rv
bVN1YmxheWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNv
bnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXllcnMg
PSBtYWtlVW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWlu
ZXJMYXllcnMoKSk7CiAgICAgfQogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAt
OTQ3LDcgKzk0Nyw3IEBAIEZsb2F0Um91bmRlZFJlY3QgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNo
YXBlUm91bmRlZFJlY3QoKSBjb25zdAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0U2hh
cGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCkKIHsKICAg
ICBBU1NFUlQobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVMYXllcik7Ci0gICAgbV9zaGFw
ZVJvdW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVk
UmVjdCk7CisgICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRS
ZWN0Pihyb3VuZGVkUmVjdCk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAg
ICBQYXRoIHNoYXBlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KaW5kZXgg
YzE5MWYzOTFjNjQ1NzJjYzk5NTVhNDdjNmNiN2I5MDA3ODY3MjYzOS4uYjNlMjFmNjQwYWU5MWEw
ZDFmNTkzODQ2YTg1MGZlYzIyZmE3OGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5
ZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgLSAoaWQpaW5pdFdpdGhMYXllcjooaWQpbGF5ZXIKIC0g
KFdlYkNvcmU6OlRpbGVDb250cm9sbGVyKiljcmVhdGVUaWxlQ29udHJvbGxlcjooV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyKilyb290TGF5ZXIKIHsKICAgICBBU1NFUlQoIV90aWxlQ29udHJvbGxl
cik7Ci0gICAgX3RpbGVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUaWxl
Q29udHJvbGxlcj4ocm9vdExheWVyKTsKKyAgICBfdGlsZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOwogICAgIHJldHVybiBfdGlsZUNv
bnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggMTVk
NGU0NmIwNmM3NmMxN2YzNDA1MTM5YzZjOTc5YzEwMTdiMzY5Ni4uZDZhN2MxNjhmMGU0NDFmZDdk
MjkwZmM0ZmUzMTM2MGM1ODVkNTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAg
LTE1Miw3ICsxNTIsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbihM
YXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiBsYXllcgogICAgIGlmICh1c2VzVGls
ZWRCYWNraW5nTGF5ZXIoKSkgewogICAgICAgICBpbnRlcm4gPSBuZXcgV2ViVGlsZWRCYWNraW5n
TGF5ZXJXaW4odGhpcyk7CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4qPihpbnRlcm4pLT5jcmVh
dGVUaWxlQ29udHJvbGxlcih0aGlzKTsKLSAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWlu
ZXJMYXllcnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOwogICAg
IH0gZWxzZQogICAgICAgICBpbnRlcm4gPSBuZXcgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwo
dGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IDIyNGQ4
YmJlZWQzOTkyYWVlZmM5MzJhMWJlZTgwZGM2M2ZjYTJmOGIuLmM1YTczZThkM2FlOWJiNDlhOTZi
ZTI3ZjUzMjdlMDZjMDYyMTRmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2lu
LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OnNl
dEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIFRpbGVDb250cm9sbGVyKiBXZWJUaWxl
ZEJhY2tpbmdMYXllcldpbjo6Y3JlYXRlVGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiBy
b290TGF5ZXIpCiB7CiAgICAgQVNTRVJUKCFtX3RpbGVDb250cm9sbGVyKTsKLSAgICBtX3RpbGVD
b250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsK
KyAgICBtX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExh
eWVyKTsKICAgICByZXR1cm4gbV90aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGMzMWNjNmUzOGJhNTk5YzlmYjgyNmFhMDM5NzZiMjA1
MWNjMTE1YmUuLjE4ZjM0MDUwYWE5ZTNiNzQzNGE2MjdhMDc3Y2QyY2NmMmY5OWM5ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTQxLDYgKzQxLDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNl
dHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgogICAgIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA1MGI3ZDljMjNjMDFhYmZjM2EwNTE3OGMxMDUyNTEw
NzBmMTVkNmRiLi4wNGYyYTlmZjU0NjlhYTViYTI0ZDE0OTU2NTRiNjBmMGJjNDNkMmFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgR3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OmNyZWF0ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGlj
c0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRleHRdKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRl
eHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsKIH0KIApAQCAtNTQs
MTQgKzU0LDE0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3Rvcnkg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFtjYWlyb0NvbnRl
eHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBj
YWlyb0NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvPihjb250ZXh0LCBjYWlyb0NvbnRleHQpOwogICAgICAgICB9KTsKIH0KIAog
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0
KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZp
bmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1Db250ZXh0
KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1
ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkKIHsK
ICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0
ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dC5j
cigpKTsKQEAgLTY5LDkgKzY5LDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGEKIAogR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjYWlyb190KiBjYWlyb0NvbnRleHQpCiAgICAgOiBHcmFwaGljc0NvbnRl
eHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCi0gICAg
LCBtX293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0
Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCisgICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KG1ha2VV
bmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCiAgICAgLCBtX3BsYXRm
b3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNv
bnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQu
c2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0
ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGVDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAppbmRleCA5OWUxODNjYzcwNTYw
M2QyMzRlOGU4ZWQ5ZmQ2NjlkNTk2ZmJlZWEyLi4wODM3MjVkNmZkMzgzMjYwN2FhNzYxZmY5ZjY4
MzU5MDY2NGM5ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZUNhaXJvLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgOiBwbGF0Zm9y
bUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAxODhl
N2JjM2RiODU4Mjk2NWNhYmIyODliYzVjMDJiYzcxNjIzYWE1Li4xZjc2M2I1MDc3M2JkZjVkMWU1
MmU1ZDE5YzBiODBmYmFkMzdiNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1LDcg
KzE2NSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAg
ICAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5s
b2NrKCkpOwotICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1
cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOworICAg
ICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOwogICAgICAgICAgICAgfTsKICNpZiBV
U0UoTklDT1NJQSkKICAgICAgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8Tmljb3NpYTo6Q29u
dGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5pbXBsKCkpLnByb3h5
KCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAKICAgICBS
ZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9kYXRhLm1fc3VyZmFj
ZS5nZXQoKSkpOwogICAgIG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRDcihjci5nZXQoKSk7
Ci0gICAgbV9kYXRhLm1fY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1fcGxhdGZv
cm1Db250ZXh0KSk7CisgICAgbV9kYXRhLm1fY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1f
cGxhdGZvcm1Db250ZXh0KSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENh
aXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5oCmluZGV4IDgwZWM3MjU4YjY0MjFmYmY5OGIzZWI1NTEzZDBjZWFmYmU3YWRm
ZGMuLjk5YzgyZTJlNmU5OTMxYzhmZWE5ZGUyMTVkMGYzNmM3MTljMzg5N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENh
aXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgU2hhZG93U3RhdGU7CiAv
LyBjb2RlIGZyb20gdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dC4KIAog
Y2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm8geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtQ29udGV4dENhaXJvKTsKIHB1Ymxp
YzoKICAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyhjYWlyb190Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDgw
YjVkNGZiZDI3MmRlZTQzNWI1Y2U3YzA4NGVlMzU5YTUwMWVkNjQuLmQzNWZmMGVmZjk3MTk1MGVl
ZDFlM2ZkMDI2YmNkYTllYWZhMzRlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAg
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDR0NvbG9yU3AKICAgICAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9kYXRhLmNvbnRl
eHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKICAgICB9
CiAKICAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3Jl
VGV4dC5jcHAKaW5kZXggNzI1MmU0OTUyNGY2MDk4NmIwMzhjYTg3YzhlN2UyNjVkMDU3NDcwZC4u
YzAxNjAxZTEwMTExMjc5OGIyNjhkZmFmMjY5MzgyYjY1MzE5ZDViNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNv
cmVUZXh0LmNwcApAQCAtMTM3MSw3ICsxMzcxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0
Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUK
IAogICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29tcHV0ZU5l
Y2Vzc2FyeVN5bnRoZXNpcyhmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRPYmxpcXVl
UGFpcigpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4o
Zm9udC5nZXQoKSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERl
c2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwg
Zm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5
bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3Jp
cHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgp
KTsKIH0KIAogdHlwZWRlZiBIYXNoU2V0PFJldGFpblB0cjxDVEZvbnRSZWY+LCBXVEY6OlJldGFp
blB0ck9iamVjdEhhc2g8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmplY3RIYXNoVHJhaXRz
PENURm9udFJlZj4+IEZhbGxiYWNrRGVkdXBTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCmluZGV4IDFjZTBjOTQ3ZTE3ZTlhNjhlZWFkM2E0ZDU3
YjU5ZDhmYTE2Y2VmMjkuLjBkZTkzNGE3YjM4NDEwMGVlYjc2ZDc3ZjQ1NmExODJmYmJhYmNlY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgRm9udFJhbmdlcyBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVU
ZXh0Ojpmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KIAogICAgICAgICBhdXRv
IFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50
aGVzaXMoZm9udEZvclN5bnRoZXNpc0NvbXB1dGF0aW9uLmdldCgpLCBmb250RGVzY3JpcHRpb24p
LmJvbGRPYmxpcXVlUGFpcigpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNlLCBzeW50aGV0aWNPYmxpcXVl
LCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFy
aWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNl
LCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERl
c2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01v
ZGUoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKGZvbnRQbGF0Zm9y
bURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KaW5kZXggODkyYjRhOThjMDA3
YjZmOTcwYTM2ODYxYmU5MTcxNDhiYjA0NjcyYy4uNTc5ZjFiOTE4ZGJiZTc1Yjg0MTNlNmQ2ZmQx
NWRmYWY2NGEzNTY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCkBAIC05Miw2
ICs5Miw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdGF0dXNDaGVja1RocmVzaG9sZCA9IDU7
CiAvLyBGSVhNRTogVGhpcyBjbGFzcyBpcyBjdXJyZW50bHkgZW1wdHkgb24gTWFjLCBidXQgd2ls
bCBnZXQgcG9wdWxhdGVkIGFzCiAvLyB0aGUgcmVzdHJ1Y3R1cmluZyBpbiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MDMgaXMgZG9uZQogY2xhc3MgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqKSB7IH0KICAg
ICAKQEAgLTIxMiw3ICsyMTMsNyBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeURpc3BsYXlNYXNrKFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgY29udGV4dE9iaiwgQ0dMUGl4ZWxGbwogCiBHcmFwaGlj
c0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVz
IGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
U3R5bGUsIEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhh
dHRycykKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU+KHRoaXMpKQogewogI2lmICFVU0UoQU5HTEUpCiAjaWYgVVNFKE9QRU5HTF9F
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQppbmRleCA1YzczM2UzYmFkMWU5ZDNkMjVjMWVkNTdmNWFjZGZmZjNhNGNiOTlmLi4z
ODc1ZmNmZDMwNmRmODZkMzQ3NGVlMTg2MGJhNTkwYTNhOGJjMTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC0zMjYs
NyArMzI2LDcgQEAgR3JhcGhpY3NDb250ZXh0JiBJT1N1cmZhY2U6OmVuc3VyZUdyYXBoaWNzQ29u
dGV4dCgpCiAgICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm4gKm1fZ3Jh
cGhpY3NDb250ZXh0OwogCi0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzQ29udGV4dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOworICAgIG1fZ3JhcGhp
Y3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGVuc3VyZVBsYXRmb3JtQ29u
dGV4dCgpKTsKICAgICBtX2dyYXBoaWNzQ29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQo
dHJ1ZSk7CiAKICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRp
b25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRU
cmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggNmU2MGViZjFmZmE2NTkwZjZmMzRlNTI4
YTNlMzM1ODMxOGI1ZWJkZi4uMjc4NzQ2ODE2NmZlZjFiNWY2NDYyMWZlYjViYjVlNTBkOWQ2ZGEz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCkBAIC0xMDgs
NyArMTA4LDcgQEAgQGVuZAogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRp
b24+IFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRp
b25DbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7CiB9CiAKIFRleHRUcmFja1JlcHJl
c2VudGF0aW9uQ29jb2E6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoVGV4dFRyYWNrUmVw
cmVzZW50YXRpb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaAppbmRleCBh
ZGM5N2FkYzFmYTI0NTgwOTkwMDNjM2RlOWMwYWEzOGQ4NzYxODdkLi42MDAxYmI3MGExMDA0MTc0
NDEwOTIxMzZmM2ZlNWI2MTc2MmNiMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCkBAIC0z
Niw3ICszNiw4IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4ZWxC
dWZmZXJQb29sUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdlUm90YXRp
b25TZXNzaW9uVlQgeworY2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBmaW5hbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IFJvdGF0aW9uUHJv
cGVydGllcyB7CiAgICAgICAgIGJvb2wgZmxpcFggeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVi5oCmluZGV4IGRkMTM1NjllMDgxYTFiMzk5ZGNiYWJmM2Y1ZTg4MzdmODRjMmFiNGUuLmNk
NWI2ZmNjMDBkNzc0NjRlNmU2YmU3NDYzMTFlMTNkMGQyN2UzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZv
cm1lckNWLmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQ
aXhlbEJ1ZmZlclJlZjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGl4ZWxCdWZmZXJD
b25mb3JtZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVihDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyk7CiAgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnQoQ1ZQaXhlbEJ1ZmZlclJlZik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2Fj
aGVDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hl
Q1YuaAppbmRleCA4MWFiMmY5MjRkYWYyNmNkYTIyYzVlMjAwNzc2YzIxODAyMDIzYTNiLi5jOWZm
NDE5ZDQzYmU0NWY0MDQ0MDMwNDBhZGQ4YzRkMDQ0MDJiYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAK
IGNsYXNzIFRleHR1cmVDYWNoZUNWIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRleHR1cmVDYWNo
ZUNWPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1Rl
eHR1cmVDYWNoZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4
dHVyZUNhY2hlQ1YubW0KaW5kZXggNTc3ZWMyODQ2MzkyYTcyMTVkOTk4YWEzMTBkM2Q4ZDYzM2Y1
ZjFlYy4uOWYxZjY2YjNiZDU5ZjU5YjFhZDNjYjcwNWM4NTY1NDQyMjdlYzM5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1Yu
bW0KQEAgLTUwLDcgKzUwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVDYWNoZUNWPiBUZXh0
dXJlQ2FjaGVDVjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXgKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBSZXRhaW5QdHI8VGV4dHVyZUNhY2hlVHlwZT4gc3Ryb25nQ2Fj
aGUgPSBhZG9wdENGKGNhY2hlKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJl
Q2FjaGVDVj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0cm9uZ0NhY2hlKSk7CiB9
CiAKIFRleHR1cmVDYWNoZUNWOjpUZXh0dXJlQ2FjaGVDVihHcmFwaGljc0NvbnRleHQzRCYgY29u
dGV4dCwgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+JiYgY2FjaGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVy
Q1YuaAppbmRleCA0M2E5NmRjMTQzNjU4NGFmYTc3MTg3OGIxOTdmMmE5NTQ3ZGNjY2VlLi45ZDM5
MmVhMDU4YjM2MDA4Y2E1NjljYTQ0ZmQ3MTI4ODNiMGQ2ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNW
LmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZUNh
Y2hlQ1Y7CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckNWIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBWaWRlb1RleHR1cmVDb3BpZXJDVihHcmFwaGljc0Nv
bnRleHQzRCYpOwogICAgIH5WaWRlb1RleHR1cmVDb3BpZXJDVigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDhmZWFhMmY1ZDc1MzI4ZTQzNmJmOWQ4OGI4
ZGMwNWJhYzFjMmUxZjMuLmM1NjFmNWY5ZWFiOTk2MjExYThiMjIyMTk3NzZkNjhmMzllMTY0NDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVwbGF5KGNvbnN0
IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNw
bGF5TGlzdD4gcmVwbGF5TGlzdDsKICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkK
LSAgICAgICAgcmVwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q+KCk7Cisg
ICAgICAgIHJlcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0PigpOwogCiAgICAgc2l6
ZV90IG51bUl0ZW1zID0gbV9kaXNwbGF5TGlzdC5pdGVtQ291bnQoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bUl0ZW1zOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAppbmRl
eCA1NTdiOGUwMDg2MmQ2YWJjNTgwNGI0MTQzMjEwMDgwYTgzNTE2ZDFlLi4zMGJiNDhjYzhmMGM0
OTU0NDhhYjY1ZjY4MTE3MmNjYzZiY2E1MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCkBA
IC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpsb2FkRXh0ZXJu
YWxEb2N1bWVudElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoIVNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJlZmVyZW5jZShtX3VybCwg
KmNhY2hlZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKKyAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlID0gbWFrZVVuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91cmwpOwogICAg
IG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIs
IG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggNjU2M2M4
YmZlZWIzNWJhNTMyN2Y0ODk2MWVkNjIxZmUzZDUzYWE0MS4uNzFhNGFiMmY0ODI1ZjFhNTQzMTkx
ODAzNGIzNTMxZWNkYThhMGYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAt
NDU1LDcgKzQ1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2Fj
aGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgICAgICAgICBGY1Bh
dHRlcm5BZGRTdHJpbmcocmVzdWx0UGF0dGVybi5nZXQoKSwgRkNfRk9OVF9WQVJJQVRJT05TLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPih2YXJpYW50cy51dGY4KCkuZGF0YSgpKSk7
CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZvbnRQbGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQYXR0ZXJuLmdldCgpLCBm
b250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRXaWR0aCwgc3ludGhldGlj
Qm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpOwor
ICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250
RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVk
UGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUs
IGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKICAgICAvLyBWZXJpZnkgdGhhdCB0aGlz
IGZvbnQgaGFzIGFuIGVuY29kaW5nIGNvbXBhdGlibGUgd2l0aCBGb250Y29uZmlnLiBGb250Y29u
ZmlnIGN1cnJlbnRseQogICAgIC8vIHN1cHBvcnRzIHRocmVlIGVuY29kaW5ncyBpbiBGY0ZyZWVU
eXBlQ2hhckluZGV4OiBVbmljb2RlLCBTeW1ib2wgYW5kIEFwcGxlUm9tYW4uCiAgICAgLy8gSWYg
dGhpcyBmb250IGRvZXNuJ3QgaGF2ZSBvbmUgb2YgdGhlc2UgdGhyZWUgZW5jb2RpbmdzLCBkb24n
dCBzZWxlY3QgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcAppbmRleCAxMzc2NWY0M2RhODY2OGQyZGU4MmU2NzFkODE4MGQ2ODQ0Mjg0M2Iw
Li41ODk0M2QyYTkwZGZjNTUwMWYyZGNhYThlY2YwZTkwZTFhYzdmNzBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEzMCw3ICsx
MzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNl
OwogICAgIGlmIChGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBGVF9CeXRlKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCksIDAsICZmcmVlVHlw
ZUZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBi
dWZmZXIpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0
KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IDg2OTgxMzY0NTEzYjhlNmYwZDdiMmRkYTViYjhk
MWY4NzJlN2Y1NzYuLjcxZmRhMGQ5MjRjZDI1NWRiM2VmMTA3N2Y5ZTEwNzgxNGUyNDNkZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAK
QEAgLTk1LDcgKzk1LDcgQEAgUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaW50IHcKICAgICAgICAgbnVtVGls
ZXMgPSAwOwogICAgIH0KIAotICAgIGF1dG8gdGV4dHVyZUlkcyA9IHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPHVuc2lnbmVkPj4obnVtVGlsZXMpOworICAgIGF1dG8gdGV4dHVyZUlkcyA9IG1ha2VV
bmlxdWU8VmVjdG9yPHVuc2lnbmVkPj4obnVtVGlsZXMpOwogICAgIHRleHR1cmVJZHMtPmZpbGwo
MCwgbnVtVGlsZXMpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsrKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IGY0YTRiYTFhOGFjYWQ1ZTIwNWE1OTNhNDhmNzQ4NmIyOGM3YmUxZDUuLmY2ZTFlMTQ2OTNjNzk4
NDI1MmY3OGViNzgwZDAyNGNmNjQ1ZWE0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmVnaXMKIHsKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjppbml0
aWFsaXplRGVidWdDYXRlZ29yeSgpOwogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAg
IHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVn
aXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9y
dGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3VwcG9y
dHNLZXlTeXN0ZW0pOwogICAgIH0KIH0KQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1Bp
dGNoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5nZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRpbWVS
YW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBpZiAobV9lcnJv
ck9jY3VyZWQgfHwgaXNMaXZlU3RyZWFtKCkpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwog
CkBAIC0yMzc2LDcgKzIzNzYsNyBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmF1ZGlvU2luaygpIGNvbnN0CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6ZW5zdXJlQXVkaW9Tb3VyY2VQcm92aWRlcigpCiB7CiAgICAgaWYgKCFtX2F1ZGlvU291cmNl
UHJvdmlkZXIpCi0gICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKKyAgICAgICAgbV9hdWRpb1NvdXJj
ZVByb3ZpZGVyID0gbWFrZVVuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpOwog
fQogCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1
ZGlvU291cmNlUHJvdmlkZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDA3MjhlZWI2NDIwYWZmYjk2YzdhMWE0OWY1NTU1
ZDlmM2IzZDk4ZDUuLmVlOGZiZGRhNTcyZmY1N2VkNGMxNzdjMGM0OWM3ZTU4MmRmOTlmYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKQEAgLTcxMCwxOSArNzEwLDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKQogICAgICAgICAgICAgaWYgKCFwcm94eS5p
c0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVy
RmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOworICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RW
aWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFt
X3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOwogCiAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZUlE
ID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlcjsKICAgICAgICAg
ICAgIGlmICh0ZXh0dXJlSUQpIHsKLSAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJRCwg
ZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJRCwgZnJhbWVIb2xkZXItPnNp
emUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAg
ICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihX
VEZNb3ZlKGZyYW1lSG9sZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIGxheWVyQnVmZmVyID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVyKGZyYW1lSG9sZGVyLT5z
aXplKCksIEdMX0RPTlRfQ0FSRSk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFsYXll
ckJ1ZmZlcikpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4
dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KGZyYW1lSG9sZGVyLT5zaXplKCksIGZy
YW1lSG9sZGVyLT5oYXNBbHBoYUNoYW5uZWwoKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxw
aGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwotICAgICAgICAgICAgICAgICAgICBsYXllckJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
KFdURk1vdmUodGV4dHVyZSkpOworICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVy
ZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmcmFtZUhvbGRlci0+dXBk
YXRlVGV4dHVyZShsYXllckJ1ZmZlci0+dGV4dHVyZUdMKCkpOwogICAgICAgICAgICAgICAgIGxh
eWVyQnVmZmVyLT5zZXRFeHRyYUZsYWdzKG1fdGV4dHVyZU1hcHBlckZsYWdzIHwgKGZyYW1lSG9s
ZGVyLT5oYXNBbHBoYUNoYW5uZWwoKSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAw
KSk7CkBAIC05MTIsNyArOTEyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKICAgICBpZiAo
IUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3Rl
eHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJh
bWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPiht
X3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCiAgICAgYXV0byB0
ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlSUQp
CkBAIC05MjMsNyArOTIzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKICAgICAgICAgc2l6
ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3Bp
ZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRl
b1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxB
Ryk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAK
ICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwg
bGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNl
T3JpZW50YXRpb24pOwogfQpAQCAtOTM5LDcgKzkzOSw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQog
ICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1l
SG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5n
ZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxH
c3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFt
ZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAog
ICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICgh
dGV4dHVyZUlEKQpAQCAtOTUzLDcgKzk1Myw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIGNv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNv
cGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9G
TEFHKTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsK
IAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEs
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBmYWxzZSwgbV92aWRlb1NvdXJjZU9y
aWVudGF0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTI1LDYgKzExMjUsNyBA
QCBzdGF0aWMgdm9pZCBzZXRSZWN0YW5nbGVUb1ZpZGVvU2luayhHc3RFbGVtZW50KiB2aWRlb1Np
bmssIGNvbnN0IEludFJlY3QmIHJlY3QpCiB9CiAKIGNsYXNzIEdTdHJlYW1lckhvbGVQdW5jaENs
aWVudCA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6SG9sZVB1bmNo
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3Ry
ZWFtZXJIb2xlUHVuY2hDbGllbnQoR1JlZlB0cjxHc3RFbGVtZW50PiYmIHZpZGVvU2luaykgOiBt
X3ZpZGVvU2luayhXVEZNb3ZlKHZpZGVvU2luaykpIHsgfTsKICAgICB2b2lkIHNldFZpZGVvUmVj
dGFuZ2xlKGNvbnN0IEludFJlY3QmIHJlY3QpIGZpbmFsIHsgc2V0UmVjdGFuZ2xlVG9WaWRlb1Np
bmsobV92aWRlb1NpbmsuZ2V0KCksIHJlY3QpOyB9CkBAIC0xMTQ3LDggKzExNDgsOCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVy
KCkKICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5
KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkp
OwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVu
ZCwgR0xfRE9OVF9DQVJFKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJI
b2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVh
bWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQoKSk7CisgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVy
ID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXpl
LCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4gaG9sZVB1bmNo
Q2xpZW50ID0gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+KG1fdmlkZW9TaW5r
LmdldCgpKTsKICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRIb2xlUHVuY2hDbGllbnQoV1RG
TW92ZShob2xlUHVuY2hDbGllbnQpKTsKICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVy
KFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDgwNzlhNWZlYWFhNzk3ZmFk
YzM4MjQ2NzI0ZWJiY2Q3ZjZmOTk1ZTMuLmFkNGVkZjVlNmU1ZGZiMzc4NGZjZWIxNzhiYTgyNzcx
NGRmOWNjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaApAQCAtOTcsNyArOTcsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSwgcHVibAogI2Vu
ZGlmCiAjZW5kaWYKIHsKLQorICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAppbmRleCAyMGZiNjYzZWYxMjQzMTAx
NjY1NDdmNDAyY2U3NjMwM2UwYzcxNTE1Li5mMDE2MDBhM2M0NTk0ZGY4ZDE2ZjRmMGNjMTQ2ODUy
YWUxNWM0YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1l
ci5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOwog
Y2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIAogY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIENvbG9yQ29udmVyc2lvbiB7CiAgICAgICAgIENvbnZlcnRCR1JBVG9SR0JBLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA5NzNmNGQ0ZjAwMzIz
NTZmMTc3ZWJkN2ZjNGI5ZTk0YTUyOTJmOTVhLi45ODEwYzI1N2IzNzc2ZmZkOGQ0MjEyZTk2OTRi
ZTkyYjI1OTczNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcApAQCAtNTAsNiArNTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUg
TE9XX1FVRVVFX0ZBQ1RPUl9USFJFU0hPTEQgMC4yCiAKIGNsYXNzIENhY2hlZFJlc291cmNlU3Ry
ZWFtaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOwogcHVibGljOgogICAgIENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyosIFJlc291cmNlUmVxdWVzdCYmKTsKQEAg
LTYzMiw3ICs2MzMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3Qo
R3N0QmFzZVNyYyogYmFzZVNyYywgYm9vbCBub3RpZnlBc3luY0NvbQogICAgICAgICAgICAgbG9h
ZE9wdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpCdWZm
ZXJEYXRhOwogICAgICAgICBwcml2LT5yZXNvdXJjZSA9IHByaXYtPmxvYWRlci0+cmVxdWVzdFJl
c291cmNlKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbG9hZE9wdGlvbnMpOwogICAgICAgICBp
ZiAocHJpdi0+cmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHByaXYtPnJlc291cmNlLT5zZXRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4ocHJvdGVj
dG9yLmdldCgpLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpKTsKKyAgICAgICAgICAgIHByaXYt
PnJlc291cmNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudD4ocHJvdGVjdG9yLmdldCgpLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpKTsKICAgICAg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocHJvdGVjdG9yLmdldCgpLCAiU3RhcnRlZCByZXF1ZXN0
Iik7CiAgICAgICAgICAgICBpZiAobm90aWZ5QXN5bmNDb21wbGV0aW9uKQogICAgICAgICAgICAg
ICAgIGdzdF9iYXNlX3NyY19zdGFydF9jb21wbGV0ZShHU1RfQkFTRV9TUkMoc3JjKSwgR1NUX0ZM
T1dfT0spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwCmluZGV4IDRlOWQxOWQ4NTI3ZDY5NjIwY2Y1YWE5NDEwNzM2MjgzODFi
M2M5ZjAuLmU2ODgwZDk4ZTdmY2FkMWQwNTNmODRlZDM4YTZmZDgxOThkZTdiODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmUKICAgICBpbml0aWFs
aXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpOwogICAgIEdTVF9ERUJVR19D
QVRFR09SWV9JTklUKHdlYmtpdF9tc2VfZGVidWcsICJ3ZWJraXRtc2UiLCAwLCAiV2ViS2l0IE1T
RSBtZWRpYSBwbGF5ZXIiKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBv
cnRzS2V5U3lzdGVtKTsKICAgICB9CiB9CkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNldFJhdGUoZmxvYXQpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6YnVm
ZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJj
ZS0+YnVmZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwor
ICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKSA6IG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6c291cmNlU2V0dXAoR3N0RWxlbWVudCogc291cmNlRWxlbWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9N
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKaW5kZXgg
MTE3MjQ1ODQxMGU5YTE0NTNiNjM1YjBmOGQ5MWI5ZmI0YTY5NmM1OC4uMGYwOGMxOWRiZGJlNjli
MDZmN2I3NTUzZjhhYjQ5N2Q0N2UzNzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxh
eWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2g6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCkKICAgICAgICAgW3Ro
aXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICB7CiAg
ICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJF
KTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdM
X0RPTlRfQ0FSRSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3ZlKGxh
eWVyQnVmZmVyKSk7CiAgICAgICAgIH07CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNUeXBl
KGNvbnN0IE1lZGlhRQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVn
aXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1
cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRp
YVBsYXllclByaXZhdGVIb2xlUHVuY2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAppbmRleCBmMGQwNGQ0
YzYzZDkzMTIwYmNlODA1YWI4ZmVhMjg3YTAxZTA0NDJhLi44YmY3MjEzMTg4MTljNDAyNjdiNzIx
ZmE5YjgyYWMxY2Q5MjZmOWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDCiAg
ICAgLCBwdWJsaWMgUGxhdGZvcm1MYXllcgogI2VuZGlmCiB7Ci0KKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2goTWVk
aWFQbGF5ZXIqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKCk7CkBAIC03OSw3
ICs3OSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6
RW1wdHk7IH07CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7IH07CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CiAKICAgICBib29s
IGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggZTFh
M2E4NjYzMTQ3NWNhYjdhOWIxNzFiNDA2MmQzOTNkODkwZTYwNi4uZWNmODk2OTNkYTMzODUyMDEy
ZTc1MDIxMTI5OTgwOTllYzhkYWMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Cb3guaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBEYXRhVmlldzsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPQm94IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JU09Cb3goKSA9
IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKaW5kZXggNzBiYjg2MTEzMTZlNjg1Yjc2
Yjc4ODM4YjVlZDA2MDM3NmI5YjFhOS4uMTg4M2JhNDdiZGYzYTUyYWZiMmZmN2QwZGQ1Y2Q5ZGNk
N2NkZDg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09PcmlnaW5hbEZvcm1h
dEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2luYWxG
b3JtYXRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91
ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZybWEiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0Jv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blNjaGVtZUluZm9Cb3guY3BwCmluZGV4IGQ4ZDc0MDFhNzU2MDA0NmM5OGFmZjhjYjExZWIyZTcy
MjNjOTgxY2UuLmJkZmRiZGM5NmNmMGUxYjUwYTcyODU4Mjg4YzliMmY0NzRmN2QwZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9u
U2NoZW1lSW5mb0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcApAQCAtNTMsNyArNTMsNyBAQCBib29s
IElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWdu
ZWQmIG9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG9wdGlvbmFsQm94
VHlwZS52YWx1ZSgpLmZpcnN0ID09IElTT1NjaGVtZVR5cGVCb3g6OmJveFR5cGVOYW1lKCkpIHsK
LSAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVUeXBl
Qm94PigpOworICAgICAgICBtX3NjaGVtZVR5cGVCb3ggPSBtYWtlVW5pcXVlPElTT1NjaGVtZVR5
cGVCb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVUeXBlQm94LT5yZWFkKHZpZXcsIGxvY2Fs
T2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjgsNyArNjgsNyBAQCBi
b29sIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5z
aWduZWQmIG9mZnNldCkKICAgICB9CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVlKCku
Zmlyc3QgPT0gSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OmJveFR5cGVOYW1lKCkpIHsKLSAgICAg
ICAgbV9zY2hlbWVJbmZvcm1hdGlvbkJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lSW5m
b3JtYXRpb25Cb3g+KCk7CisgICAgICAgIG1fc2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBtYWtlVW5p
cXVlPElTT1NjaGVtZUluZm9ybWF0aW9uQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lSW5m
b3JtYXRpb25Cb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCmluZGV4IGYzN2I3NjI0
OWQ4ZTAwZmExN2EwNTU5MjllNzc2Njg1MTM3MzMzNjYuLjhlNTY3M2UwNTE2YTY1MDE0ZjVjZDQ5
ZjYxYWE3Yjc1MzhkMmNhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElTT1NjaGVtZVR5cGVC
b3g7CiBjbGFzcyBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDsKIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94IGZpbmFsIDogcHVibGljIElT
T0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJu
ICJzaW5mIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcAppbmRleCBiNGYyNzdh
Njg0N2NjMjBkNGZjOWQ2MjZmOWNhY2M3NDMwYWRhZjcwLi5jODNjNGZmN2IzOGFiZjFhZTIyZmZl
NWU3MmM3YTFmODZhMDhlYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgYm9vbCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UoRGF0YVZp
ZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIGlmIChsb2NhbE9mZnNldCArIHNj
aGVtZVNwZWNpZmljQm94VHlwZS52YWx1ZSgpLnNlY29uZCA+IG9mZnNldCArIG1fc2l6ZSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX3NjaGVtZVNwZWNpZmljRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94PigpOworICAgICAgICBtX3Nj
aGVtZVNwZWNpZmljRGF0YSA9IG1ha2VVbmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94PigpOwog
ICAgICAgICBpZiAoIW1fc2NoZW1lU3BlY2lmaWNEYXRhLT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlv
bkJveC5oCmluZGV4IDllZGIxODc4YTliYTkxOWJlYjE5ZDdiNjIyM2Q5ZTdlNDY0ZjY4NTguLmU4
ZWMwYzRjNjliNzRlODMzNDQ5ODk0MWYyNGVlZTQxMGYyY2RkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZv
cm1hdGlvbkJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3ggOiBwdWJsaWMgSVNP
Qm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9ybWF0aW9uQm94IGZpbmFs
IDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFt
ZSgpIHsgcmV0dXJuICJzY2hpIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaAppbmRleCA2MTk2MTAzOWY0OGNm
MmJjNmVlN2I4ODQ4MDczYzgzNzZlNTgzMTMwLi40YjhmMjYzMzc1MGY4YWRmOTBiYzI3YzJkMGNm
MTRlZjk4MmMxNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVUeXBlQm94IDog
cHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlwZUJv
eCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckND
IGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNjaG0iOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3gu
aAppbmRleCBmNGVmZTI4MTA1MWUzYzdiMjlkYmVmNzhlNDRkYTNiMDM4NzgwM2YzLi40N2ZhNDk3
MjQ2YzcxNWJlMWQyY2VmOWIwZWE4N2RkN2Y3OWVmNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJv
eC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPVHJhY2tFbmNyeXB0aW9uQm94IDogcHVibGljIElTT0Z1bGxCb3ggewor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNyeXB0aW9uQm94IGZpbmFsIDogcHVibGlj
IElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7
IHJldHVybiAidGVuYyI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVlRUQ3VlLmNwcAppbmRleCA5ZWM0MDg5NGYxZTI4YTA1YTIxNGNiMzIzNTE0
ZjdiMTM5NTVkMjg0Li40YjUxNmVlOGRkN2Y3ZDIzN2U4ZDYyNzI3OTdiMDMyZGQxZjVhY2M1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3Vl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3Vl
LmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBKU0M6OkRhdGFWaWV3OwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIElTT1N0cmluZ0JveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3Mg
SVNPU3RyaW5nQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBjb250ZW50cygpIHsgcmV0dXJuIG1fY29udGVudHM7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCmluZGV4IGE2MTYwYjY2
YWU5NDY4MjA2NzdhZDI5MzRiMTgxZGViOTNjYzRmNDkuLmFlMjNiZWZmZmVkNjRhNmRlMjg5MTc2
ZTQxNTEwMTFmMDY3Yzk4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09WVFRDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVlRUQ3VlLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gTiBieXRlcyA6IEN1ZVRpbWVCb3ggOiBib3ggOiBvcHRpb25hbAogLy8gTiBieXRlcyA6
IEN1ZVNldHRpbmdzQm94IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVQYXlsb2Fk
Qm94IDogYm94IDogcmVxdWlyZWQKLWNsYXNzIElTT1dlYlZUVEN1ZSA6IHB1YmxpYyBJU09Cb3gg
eworY2xhc3MgSVNPV2ViVlRUQ3VlIGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAg
ICAgSVNPV2ViVlRUQ3VlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgY29uc3Qg
TWVkaWFUaW1lJiBkdXJhdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRl
eCAzZDVlZjA5YjdkOTQwMzA1OTc0MWQ4MDgyOGY1MThkZWZjODQyM2I1Li5lZjEwYjMzYTU0YjM1
ZDdkNTcxZjA2ZTQxNmYxMjkyMjA4OWFjMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCkBAIC04NCw3ICs4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250RGVzY3JpcHRvci5nZXQoKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOwog
fQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0
cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKaW5kZXgg
ODNmNzc2Njc5ZTE4OWM2ZmNlNGVmODYyNTdiMDA1ZDExMzc0ZTIyZC4uNmYyMTViMjdhYWQ5NmMz
ZmE5YzIwN2YzMjBlZjllMzJiNDNiN2NjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09w
ZXJhdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIHN0cnVjdCBQ
YWludGluZ09wZXJhdGlvblJlcGxheSB7IH07CiAKIHN0cnVjdCBQYWludGluZ09wZXJhdGlvbiB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHZpcnR1YWwgflBhaW50
aW5nT3BlcmF0aW9uKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhaW50
aW5nT3BlcmF0aW9uUmVwbGF5JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFdURjo6VGV4
dFN0cmVhbSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKaW5k
ZXggMTA5YzJjNTc3Njc5YTEyMTRhYTZlYTEwMWM2ZjQ4MGZiYTJlYzYwMS4uNWJlZTYxM2ZjZjZi
NDZhMDdjNjI4ZTU4MDE2ZjQ5YmI5MDIxYjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJ
bnRlZ3JhdGlvbi5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTY2VuZUludGVncmF0aW9uOjpy
ZXF1ZXN0VXBkYXRlKCkKIAogc3RkOjp1bmlxdWVfcHRyPFNjZW5lSW50ZWdyYXRpb246OlVwZGF0
ZVNjb3BlPiBTY2VuZUludGVncmF0aW9uOjpjcmVhdGVVcGRhdGVTY29wZSgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxVcGRhdGVTY29wZT4obWFrZVJlZigqdGhpcykpOwogfQogCiBTY2Vu
ZUludGVncmF0aW9uOjpDbGllbnQ6On5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDJi
MWFlY2YwZDFiN2U2YTM0MWJmOTRiZmZhZWQyMjBmMWE0NTg2MzguLjUwZTBjM2M3ZDk3NjgyNmJh
N2JiODE4NWQxZWUxNDIxMjlhZGEwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGF1dG8g
Y3JlYXRlQ29tbWFuZChBcmdzJiYuLi4gYXJndW1lbnRzKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfYmFzZV9vZjxPcGVyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogYXV0byBjcmVhdGVDb21t
YW5kKCkgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8T3BlcmF0aW9uRGF0YTw+
LCBUPjo6dmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxQYWludGluZ09wZXJhdGlvbj4+CiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUPigp
OwogfQogCiBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpDYWlyb09wZXJhdGlvblJlY29yZGVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGFpbnRpbmdPcGVyYXRpb25zJiBjb21tYW5kTGlzdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNw
cAppbmRleCAwYzhhNjcwZTNhMGEzNjMwN2UzZjI5OWVjZGEwMjU1MmZkNzc0ZWQxLi5iMzUwOGQ1
MTdiMjRlNDc1YzA4YWY0OGIzM2U0MzFmZDI3OTIwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRl
eHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCkBAIC03MCw4ICs3MCw4IEBA
IFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGFpbnRpbmcoQnVmZmVyJiBi
dWZmZXIpCiAgICAgICAgIH0pOwogCiAgICAgbV9jYWlyby5jb250ZXh0ID0gYWRvcHRSZWYoY2Fp
cm9fY3JlYXRlKG1fY2Fpcm8uc3VyZmFjZS5nZXQoKSkpOwotICAgIG1fcGxhdGZvcm1Db250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWly
by5jb250ZXh0LmdldCgpKTsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmNyZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CisgICAgbV9wbGF0Zm9y
bUNvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvPihtX2Nh
aXJvLmNvbnRleHQuZ2V0KCkpOworICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6Y3JlYXRlRmFjdG9yeSgqbV9wbGF0Zm9ybUNvbnRleHQpKTsKIH0KIAogUGFpbnRpbmdDb250
ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjp+Rm9yUGFpbnRpbmcoKQpAQCAtMTA0LDEwICsxMDQsMTAg
QEAgdm9pZCBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OnJlcGxheShjb25zdCBQ
YWludGluZ09wZXJhdGlvbnMmIHBhaW50aW4KIAogUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJl
Y29yZGluZzo6Rm9yUmVjb3JkaW5nKFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbmdPcGVyYXRp
b25zKQogewotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ+KAorICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KAogICAgICAgICBbJnBhaW50aW5nT3BlcmF0aW9uc10o
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihjb250ZXh0
LCBwYWludGluZ09wZXJhdGlvbnMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fp
cm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRpbmdPcGVyYXRpb25zKTsKICAgICAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGQ0YzliNjA1YjRjZDI4ZTM0
OGVmZDg1MzM1MDM4YjU4YzlhNGRkZmEuLjhlMzc5MGY3YWI1NGY2YjNkOTU2ZjMwNzA0YzQyOWMy
YWNkYzMxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzcsNyArMzcsNyBAQCBhdXRv
IEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9y
eQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXShCYWNraW5nU3RvcmUmKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZVRl
eHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaApp
bmRleCBlYWQ0OTc3NmU1MGEyM2NmZDUwMTRhN2U5NjQzMGIzZGUxMjRkYjBhLi5kNDM2ZjIwYzMx
NjFjMDU1NGE1YWEyMmEzOTMwYTk5NWVlYzM1YTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4
dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaApAQCAt
NDEsNiArNDEsNyBAQAogbmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBCYWNraW5nU3RvcmVU
ZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBCYWNraW5nU3RvcmU6OkltcGwsIHB1Ymxp
YyBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3Np
dGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDM4ZmRkOTNkYTZiMTM4ODMxNDA1
OTE2NTNjZGYyOWUwN2RlMzIzOTYuLjc1NjkyYzdjNGE3YmZkYjE4NzFkZjE4MDJlMzg3NzUzNmI2
MTU1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IGF1dG8gQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkg
LT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXSh1aW50NjRfdCwg
Q29tcG9zaXRpb25MYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaAppbmRleCA2NTU1YmZiMDgwMjYx
ZThhMzA5NWJkZTQ4M2EwNjFiYjU0MjE0NTc0Li41MzBhNjc1MTAxNzI2ZWEyODcyOGM1M2Q4ODhk
YmRlZjdhYWU3OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC00MCw2ICs0MCw3
IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xh
c3MgQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsIGZpbmFsIDogcHVibGljIENvbXBv
c2l0aW9uTGF5ZXI6OkltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bC5jcHAKaW5kZXggNTYxNzI4YjVlZjFmNDBkODBjNTM1OTkyNjcxMDY2YWQ4NzQ4MTlhNy4uMmZi
MGVjOTU5MTVhZWIwYmEwOTZmODBiYzY5MGQyZjNiMjg0OGM0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGF1dG8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGw6OmNyZWF0ZUZhY3RvcnkoQ2xpZW50JiBjbGllbnQpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1
cm4gRmFjdG9yeSgKICAgICAgICAgWyZjbGllbnRdKENvbnRlbnRMYXllciYpIHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
PihjbGllbnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw+KGNsaWVudCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29u
dGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bC5oCmluZGV4IGVmOTZhNjA4MzE2MmRlNDFjMjdkZTRiZjM1N2I4YTRmY2FmOGQ5Y2YuLmIwMTA1
YjczYWMyMjY0ZjU3Y2E3YjdlNTAzZWNmNzBkYTUyN2RhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5o
CkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7
CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsIGZpbmFsIDogcHVibGljIENvbnRlbnRMYXllcjo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhR0MzRExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCmluZGV4IDUyZWM3MGI2ODFmN2Jj
NTYzYTY3NDc1NDM2MjM4NzZiMDMxMzlhOWIuLjlhOWJkNDY4M2IyNjc0MmFmZWNiMTQ5MWY2MTQ0
ZjJhNzhjNTk1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCkBA
IC04OCw3ICs4OCw3IEBAIHZvaWQgR0MzRExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAg
ICAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJl
TWFwcGVySW1wbD4obV9jb250ZW50TGF5ZXItPmltcGwoKSkucHJveHkoKTsKIAogICAgICAgICBM
b2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICBwcm94eS5wdXNoTmV4dEJ1
ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiht
X2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRl
eHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVy
KG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5t
X2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVy
bmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQubWFya0xheWVyQ29tcG9z
aXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oCmluZGV4IDMyZGI5ZGQz
N2E2ZjBkOWZhOGQ0ZDE4OGViMThmOGFlMTQ3NWEwMGIuLjlmNTQ0NWJiZTExODNjZTc0ODU1OTNj
YmJiZjE2NTBlZGNjZTQzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmgK
QEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgR0xDb250ZXh0OwogbmFtZXNwYWNlIE5pY29zaWEgewog
CiBjbGFzcyBHQzNETGF5ZXIgOiBwdWJsaWMgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6
OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR0Mz
RExheWVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAgICB2aXJ0dWFsIH5HQzNETGF5ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1h
cHBlckltcGwuY3BwCmluZGV4IGEyYWUzNGEzMTMyN2U4NzE1NjU0MTQ2ZDE4Zjc3YzdhNjdmMjQy
MTYuLmQzNTNjOGJlMWI1YmZhMTE2YjZjYjg1MjA5NzAyNzdjYzkzMjQ1Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJ
bWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVN
YXBwZXJJbXBsLmNwcApAQCAtMzcsNyArMzcsNyBAQCBhdXRvIEltYWdlQmFja2luZ1RleHR1cmVN
YXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0
b3J5KAogICAgICAgICBbXShJbWFnZUJhY2tpbmcmKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigpOwog
ICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaAppbmRleCAxYTYyM2FmYTQwOTNiMjJh
YzIwZDEzYjMyOTM2MDgzYWNiMDhlYTgwLi40OWIxZTliMmVjMDM1NTJhMGJkNjEyMGFlNzdiOGU2
OTRhOTQ2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBJ
bWFnZTsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgSW1hZ2VCYWNraW5nVGV4dHVyZU1h
cHBlckltcGwgZmluYWwgOiBwdWJsaWMgSW1hZ2VCYWNraW5nOjpJbXBsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgRmFjdG9yeSBjcmVhdGVGYWN0
b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaAppbmRleCA3YzYxNGZi
NDAzMzU4ZWE0MDQ1NmQ4NDYyY2Y4ZGM1YmMzYTRlYjE5Li4xNDcyMTc5MDc3MjdjYWVlYTI3ZWY2
OGEwNjljYzA1MzEwODIwZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5o
CkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVuc2lv
bnMzRE9wZW5HTENvbW1vbiA6IHB1YmxpYyBFeHRlbnNpb25zM0QgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnMzRE9wZW5HTENv
bW1vbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBlNjg0
OGZjZWNhNDFlOTczNmYyYTM4MTdhOWZkMDNjZWJhZTNhYzExLi5iOTYzNjNiNTUxOTM1NmM4Y2Rm
NDY1NDM2MzI2ZWQwNmNlY2VkODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRl
cHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRl
bnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xF
UzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAqbV9l
eHRlbnNpb25zOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAppbmRleCBiMjRkZjAzNWUyODhlMWViMmY4YWY5ZjdhYjkxZDc3OWQwYWNh
NDllLi4yYTBlNWI3NmU0ZDZiYWI3MGU5MGIyZjNkMjhlYjQzYzA3ZjQyNTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTY1Niw3ICs2NTYs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyKQogICAgIEFOR0xFUmVzb3VyY2VzLkhhc2hGdW5jdGlvbiA9IG5hbWVIYXNoRm9y
U2hhZGVyOwogCiAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgIG5hbWVI
YXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7Cisg
ICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+
KCk7CiAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFwRm9yU2hh
ZGVycy5nZXQoKSk7CiAgICAgbV9jb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJjZXMp
OwogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBl
ZFN5bWJvbE5hbWUoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBBTkdMRVNoYWRlcgogICAgICAg
ICAvLyBBdHRyaWJ1dGVzIGFyZSBhIHNwZWNpYWwgY2FzZTogdGhleSBtYXkgYmUgcmVxdWVzdGVk
IGJlZm9yZSBhbnkgc2hhZGVycyBoYXZlIGJlZW4gY29tcGlsZWQsCiAgICAgICAgIC8vIGFuZCBh
cmVuJ3QgZXZlbiByZXF1aXJlZCB0byBiZSB1c2VkIGluIGFueSBzaGFkZXIgcHJvZ3JhbS4KICAg
ICAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgICAgICBuYW1lSGFzaE1h
cEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAg
ICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gbWFrZVVuaXF1ZTxTaGFkZXJOYW1lSGFzaD4o
KTsKICAgICAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFwRm9y
U2hhZGVycy5nZXQoKSk7CiAKICAgICAgICAgYXV0byBnZW5lcmF0ZWROYW1lID0gZ2VuZXJhdGVI
YXNoZWROYW1lKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3Bw
CmluZGV4IDI0MzA0NmQ5ODlhZDczOGY3YzlmNzE0OTU1NjdjOTZiYjM0YzU2NDEuLjcwYTIwZDUw
YzM1MjFhNjEyM2U2ZWZhZjFmNDc2OGY2NDk1Y2RlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xFUy5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykK
LSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0g
bWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgp
KTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpAQCAtMjcxLDcgKzI3MSw3
IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRv
dyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSwgR3JhcGhpY3ND
b250ZXh0M0QqIHNoYXJlZENvbnRleHQpCiAgICAgOiBtX2F0dHJzKGF0dHJpYnV0ZXMpCiAgICAg
LCBtX2NvbXBpbGVyKGlzR0xFUzJDb21wbGlhbnQoKSA/IFNIX0VTU0xfT1VUUFVUIDogU0hfR0xT
TF9DT01QQVRJQklMSVRZX09VVFBVVCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQorICAgICwgbV9w
cml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJT
dHlsZSkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4
dCk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGVkNmNjZjE5NGJiZWUxZTAwZmQ0MzlmNjFh
NmRlNjJlNDAzMDJlYTMuLjhmZDNhZDRmNzJkNzY0YmQ5NWQyMjBmNTgxZWQyYjc5NjI4ODNjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCkBA
IC0xMDYsOSArMTA2LDkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdy
YXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3MKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsKICNpZiBVU0UoTklDT1NJQSkK
LSAgICBtX25pY29zaWFMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8Tmljb3NpYTo6R0MzRExheWVy
PigqdGhpcywgcmVuZGVyU3R5bGUpOworICAgIG1fbmljb3NpYUxheWVyID0gbWFrZVVuaXF1ZTxO
aWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAjZWxzZQotICAgIG1fdGV4
bWFwTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX3RleG1hcExheWVyID0gbWFrZVVuaXF1ZTxU
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAjZW5k
aWYKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMzI1LDEwICszMjUsMTAgQEAgRXh0
ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiAgICAgaWYgKCFt
X2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BFTkdMX0VTKQogICAgICAgICAvLyBnbEdldFN0cmlu
Z2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KLSAgICAgICAgbV9leHRlbnNpb25zID0gc3Rk
OjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKKyAgICAg
ICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywg
IGZhbHNlKTsKICNlbHNlCiAgICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhl
IENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KLSAgICAg
ICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRo
aXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICAgICAgbV9l
eHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIEdMQ29udGV4
dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgIH0KICAgICByZXR1
cm4gKm1fZXh0ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZv
cm1MYXllci5jcHAKaW5kZXggMTRmMWRiZjE4ZDkxYjM5MDc1ZTJkNTBmMjE0OWI3NzZiYmMxNzQ5
My4uNjYzMjMxNTY5NWJhMjFjMjY3ZDE1NTkzMmViYTkxNDdmYjY2YWUwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVk
ZWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX3BsYXRmb3JtTGF5ZXJQ
cm94eS0+bG9jaygpKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVm
ZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1f
Y29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4
dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHkt
PnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1f
Y29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQu
bWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxh
dGZvcm1MYXllci5oCmluZGV4IDhiNjAyMTRhYmE5YjgzY2ExOTMwZjEzNWM3NTM0OGIyNjZmZTVj
YWMuLmU2ZjA5Yzg3OTg1NDg2MzJlZTRiMGFhNWE1NjMwNjE1YTI0YTM3ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDYgKzMyLDcgQEAg
Y2xhc3MgR0xDb250ZXh0OwogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTsK
IAogY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyIDogcHVibGljIFBsYXRmb3Jt
TGF5ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFRleHR1
cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcihHcmFwaGljc0NvbnRleHQzRCYsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckdDM0RQbGF0
Zm9ybUxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDk3NGI4NTc4Yjg4YWE2NDM1
MDkxZThiMGMzOGJiMmRiNzEwZWYxMDIuLmEyZjc1ODY2ZTMyM2I4ZmRiYTQzYTAwN2Q0NDdhYWE0
NjU3NmJmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgVGV4
dHVyZU1hcHBlckdMOjpUZXh0dXJlTWFwcGVyR0woKQogCiAgICAgbV9kYXRhID0gbmV3IFRleHR1
cmVNYXBwZXJHTERhdGEocGxhdGZvcm1Db250ZXh0KTsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCi0gICAgbV90ZXh0dXJlUG9vbCA9IHN0ZDo6bWFrZV91bmlxdWU8Qml0bWFwVGV4dHVyZVBv
b2w+KG1fY29udGV4dEF0dHJpYnV0ZXMpOworICAgIG1fdGV4dHVyZVBvb2wgPSBtYWtlVW5pcXVl
PEJpdG1hcFRleHR1cmVQb29sPihtX2NvbnRleHRBdHRyaWJ1dGVzKTsKICNlbmRpZgogfQogCkBA
IC03OTAsNyArNzkwLDcgQEAgUmVmPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3Jl
YXRlVGV4dHVyZShHTGludCBpbnRlcm5hbEZvcm1hdCkKIAogc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJHTD4oKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7CiB9CiAKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCA3YWZkZjMwYTA1
YmNhNTM5N2I4MDE4YmZlYmQ4OWUwZTFkYTUwMzMzLi5lMTFhMGJiMjdiODEwYzJkNTI3NmIyYTli
MGM1MDlmODg5NTA2NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmYKICAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFw
cGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0
dXJlLT5yZXNldChtX3NpemUpOwogICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KHRl
eHR1cmUuZ2V0KCkpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4o
V1RGTW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSwgbV9leHRy
YUZsYWdzKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFp
bnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4LCBmbG9hdCBvcGFjaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkuY3BwCmluZGV4IGM3MTRmNmQ3OGMxY2YxYTYxZDRkZmY2YjQyMDUyMWIw
MmVjZDdjNTAuLjM3OTM2NzVhYzhkNmIzYzMyYTNiMzE4MTkzZTQ5YTdiMzdkYzQ4ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKQEAgLTcx
LDggKzcxLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0
ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY28KICAgICBpZiAobV90YXJnZXRMYXll
ciAmJiBtX2N1cnJlbnRCdWZmZXIpCiAgICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRz
TGF5ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsKIAotICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZl
cnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7Ci0g
ICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxv
b3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJy
ZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9y
VGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7CisgICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVy
ID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKTsKKyAgICBtX2NvbXBvc2l0
b3JUaHJlYWRVcGRhdGVUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZp
cmVkKTsKIAogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgbV9jb21wb3NpdG9yVGhyZWFk
VXBkYXRlVGltZXItPnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6Q29tcG9zaXRp
bmdUaHJlYWRVcGRhdGVUaW1lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDM2N2Q4YTUzY2YzNzBkMjIwMmQ2ZjM0
MDFjZGNiM2EwMmZmNDJjMmIuLmQ0NzU3MTBiYTBjZGRmYmNkYmRhMGM2OGNlMzBiODFlZmFhZDY5
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwCkBAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKIAogICAgIC8vIEVuc3VyZSB0aGUgVGlsZWRC
YWNraW5nU3RvcmUgb2JqZWN0LCBhbmQgZW5mb3JjZSBhIGNvbXBsZXRlIHJlcGFpbnQgaWYgaXQn
cyBub3QgYmVlbiBwcmVzZW50IHlldC4KICAgICBpZiAoIWxheWVyU3RhdGUubWFpbkJhY2tpbmdT
dG9yZSkgewotICAgICAgICBsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbGVkQmFja2luZ1N0b3JlPihpbXBsLCBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkp
OworICAgICAgICBsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFRpbGVk
QmFja2luZ1N0b3JlPihpbXBsLCBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOwogICAgICAgICBt
X3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQgPSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1Rp
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9UaWxlLmgKaW5kZXggMmMyNGUwODRlMzI5NmE0N2UwOWU5NjEwZDc0OGQ2YTg4ZmU0OTY1Ni4u
ZmJjMjQ1YmUxZTUwMzg1M2M3MzJmMDFlNWEzNGU1NTg0YTViM2MzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VGlsZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRpbGVk
QmFja2luZ1N0b3JlOwogCiBjbGFzcyBUaWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludFBvaW50IENvb3JkaW5hdGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9U
aWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNiZTQzMTFkZWFh
MDI0OTdjN2VkMWNkY2ExMzQ1YmE1YTY4MDMxMDkuLjRhNjk3ODIyZTRkZTJjZGI4YjY2ZjgxZDQw
NGQ4ZGJlODJiNDk4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2lu
Z1N0b3JlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNy
ZWF0ZVRpbGVzKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBzCiAg
ICAgdW5zaWduZWQgdGlsZXNUb0NyZWF0ZUNvdW50ID0gdGlsZXNUb0NyZWF0ZS5zaXplKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHRpbGVzVG9DcmVhdGVDb3VudDsgKytuKSB7CiAg
ICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgY29vcmRpbmF0ZSA9IHRpbGVzVG9DcmVhdGVbbl07Ci0g
ICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIHN0ZDo6bWFrZV91bmlxdWU8VGlsZT4oKnRo
aXMsIGNvb3JkaW5hdGUpKTsKKyAgICAgICAgbV90aWxlcy5hZGQoY29vcmRpbmF0ZSwgbWFrZVVu
aXF1ZTxUaWxlPigqdGhpcywgY29vcmRpbmF0ZSkpOwogICAgIH0KICAgICByZXF1aXJlZFRpbGVD
b3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAK
aW5kZXggYzg4ZTliZWY5ZDY2Y2EyYjU1MDE4YzkwZjRiMGE0MjhiNDY4MmVmOC4uNGVhZjAwMTEy
MGM0N2ZmY2U1NWFiNGRmYTkyMTgzY2U4YjMxOTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0
ZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgVHJhbnNmb3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRlOjpv
cGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVyKQogICAgIGlmIChtX21hcFF1YWQp
IHsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IG90aGVyLm1fbGFzdFBsYW5hclF1YWQ7CiAg
ICAgICAgIGlmIChvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKQotICAgICAgICAgICAg
bV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigq
b3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CisgICAgICAgICAgICBtX2xhc3RQbGFu
YXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpvdGhlci5tX2xhc3RQbGFu
YXJTZWNvbmRhcnlRdWFkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9sYXN0UGxhbmFy
U2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7CiAgICAgfQpAQCAtNTAsNyArNTAsNyBAQCBUcmFuc2Zv
cm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPShjb25zdCBUcmFuc2Zvcm1TdGF0ZSYg
b3RoZXIpCiAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG51bGxwdHI7CiAKICAgICBpZiAo
b3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkKLSAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5tX2Fj
Y3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1h
a2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5tX2FjY3VtdWxhdGVkVHJhbnNm
b3JtKTsKICAgICAgICAgCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMTI5LDEyICsxMjksMTIg
QEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybUZyb21Db24KICAgICAvLyBJZiB3ZSBoYXZlIGFuIGFjY3VtdWxh
dGVkIHRyYW5zZm9ybSBmcm9tIGxhc3QgdGltZSwgbXVsdGlwbHkgaW4gdGhpcyB0cmFuc2Zvcm0K
ICAgICBpZiAobV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAobV9kaXJlY3Rp
b24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCi0gICAgICAgICAgICBtX2FjY3VtdWxhdGVk
VHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNm
b3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAgICAgICAgICAg
IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4
Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyICogKm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tdWx0aXBseSh0
cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKICAgICB9IGVsc2UgaWYgKGFjY3VtdWxhdGUgPT0gQWNj
dW11bGF0ZVRyYW5zZm9ybSkgewogICAgICAgICAvLyBNYWtlIG9uZSBpZiB3ZSBzdGFydGVkIHRv
IGFjY3VtdWxhdGUKLSAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIpOworICAg
ICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1h
dHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfQogICAgIAogICAgIGlmIChhY2N1
bXVsYXRlID09IEZsYXR0ZW5UcmFuc2Zvcm0pIHsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFRy
YW5zZm9ybVN0YXRlOjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZChjb25zdCBGbG9hdFF1YWQq
IHF1YWQpCiAgICAgLy8gTWFwIHRoZSBxdWFkIGJhY2sgdGhyb3VnaCBhbnkgdHJhbnNmb3JtIG9y
IG9mZnNldCBiYWNrIGludG8gdGhlIGxhc3QgZmxhdHRlbmluZyBjb29yZGluYXRlIHNwYWNlLgog
ICAgIEZsb2F0UXVhZCBiYWNrTWFwcGVkUXVhZCgqcXVhZCk7CiAgICAgbWFwUXVhZChiYWNrTWFw
cGVkUXVhZCwgaW52ZXJzZURpcmVjdGlvbigpKTsKLSAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlR
dWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KGJhY2tNYXBwZWRRdWFkKTsKKyAgICBt
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KGJhY2tNYXBw
ZWRRdWFkKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZChGbG9hdFF1YWQmIHF1
YWQsIFRyYW5zZm9ybURpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKaW5kZXggMTA4NjM3NDAwYTIwZmEyZjA5ZGY2YWQ0Mzkz
M2NhN2RhMTdmNDg2MS4uYjYyNTgzNmE1Y2UyMjViZjQ3ZjMzMGMwOGMyOWQ4Yzc1NjUyZWU3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBUcmFuc2Zv
cm1TdGF0ZSB7CiAgICAgICAgIC8vIFdlIG11c3QgYmUgaW4gYSBmbGF0dGVuZWQgc3RhdGUgKG5v
IGFjY3VtdWxhdGVkIG9mZnNldCkgd2hlbiBzZXR0aW5nIHRoaXMgc2Vjb25kYXJ5IHF1YWQuCiAg
ICAgICAgIEFTU0VSVChtX2FjY3VtdWxhdGVkT2Zmc2V0ID09IExheW91dFNpemUoKSk7CiAgICAg
ICAgIGlmIChxdWFkKQotICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0
ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CisgICAgICAgICAgICBtX2xhc3RQbGFu
YXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpxdWFkKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dENhY2hlV2luLmNwcAppbmRleCBkMzFhMjU3OWZiMWUxYzc5NDI1ZDAyOTA1ZWJlYmM4OGQxNGFk
ZDUwLi44Zjc3MDI3NWRlNjk5NTY4Yzg1MTVhZWEwZjJjZmEwZTUyMDU2NzI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNw
cApAQCAtNjQyLDcgKzY0Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBG
b250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgYm9vbCBz
eW50aGVzaXplQm9sZCA9IGlzR0RJRm9udFdlaWdodEJvbGQod2VpZ2h0KSAmJiAhaXNHRElGb250
V2VpZ2h0Qm9sZChsb2dGb250LmxmV2VpZ2h0KTsKICAgICBib29sIHN5bnRoZXNpemVJdGFsaWMg
PSBpc0l0YWxpYyhmb250RGVzY3JpcHRpb24uaXRhbGljKCkpICYmICFsb2dGb250LmxmSXRhbGlj
OwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+
KFdURk1vdmUoaGZvbnQpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3lu
dGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJdGFsaWMsIHVzZUdESSk7CisgICAgYXV0byByZXN1bHQg
PSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQpLCBmb250RGVzY3Jp
cHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJdGFs
aWMsIHVzZUdESSk7CiAKICNpZiBVU0UoQ0cpCiAgICAgYm9vbCBmb250Q3JlYXRpb25GYWlsZWQg
PSAhcmVzdWx0LT5jZ0ZvbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAz
ODdhMjM5ZjgyOWMyZDc4MDljMmM5NmQzZmUxMjRkZWUxNGJkM2Q3Li42NDg0ODVhYzI2Y2IyMzc1
Y2Y2NTc0ZjgxZmY0Y2Q2NTY3MmM1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBmb250UmVm
ZXJlbmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlm
ICghZm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9u
dE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZv
bnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
OjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCmluZGV4IDE5MDQ0OTAwNDVmNGU3ZTdmN2RiODFkOTVmMGE2YTI0MmJkNTQ4MzguLmVh
YjgwNmU0MmMwNjJkNTU5Nzg5OTQ1MmVmZTc0NzRlNTk5ZjkyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaApAQCAtNDEsNiArNDEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
Rm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250
RmVhdHVyZVNldHRpbmdzOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSk7CiBwdWJsaWM6CiAgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShI
QU5ETEUgZm9udFJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCBhYjdjNzkwZDYwZjJlOGY3NGFmMDNjMDZhY2Zj
NzJjOGUzOWMyMmQ5Li5lZWVhZmViZDkzM2NhOWM3OGRkMDUxNDEzZDIzMzQ0Y2E4NTNiMDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtOTEsNyArOTEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGlmICghZm9udFJlZmVyZW5jZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUp
OwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0
IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKaW5kZXggYjk1MzU1MDNj
MzA2YzUwMWFhMzkzZjMxZmZkOTI4ODVlZGU5YmRlZi4uY2M3YWQzZWMzMTBiYWZmOWYyZDUzMTNl
YTM3ZWJiNjY3Yzc5ZDRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCkBAIC00Myw2ICs0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBpbnQga0Z1bGxTY3JlZW5B
bmltYXRpb25EdXJhdGlvbiA9IDUwMDsgLy8gbWlsbGlzZWNvbmRzIAogCiBjbGFzcyBGdWxsU2Ny
ZWVuQ29udHJvbGxlcjo6UHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuQ2xpZW50ICB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
UHJpdmF0ZShGdWxsU2NyZWVuQ29udHJvbGxlciogY29udHJvbGxlciwgRnVsbFNjcmVlbkNvbnRy
b2xsZXJDbGllbnQqIGNsaWVudCkgCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIp
CkBAIC0xMDMsNyArMTA0LDcgQEAgTFJFU1VMVCBGdWxsU2NyZWVuQ29udHJvbGxlcjo6UHJpdmF0
ZTo6ZnVsbHNjcmVlbkNsaWVudFduZFByb2MoSFdORCBod25kLCBVSU5UIG0KIH0KIAogRnVsbFNj
cmVlbkNvbnRyb2xsZXI6OkZ1bGxTY3JlZW5Db250cm9sbGVyKEZ1bGxTY3JlZW5Db250cm9sbGVy
Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxQcml2YXRl
Pih0aGlzLCBjbGllbnQpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8UHJpdmF0ZT4odGhp
cywgY2xpZW50KSkKIHsKICAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKIH0KQEAgLTEz
MSwxMyArMTMyLDEzIEBAIHZvaWQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVl
bigpCiAgICAgbV9wcml2YXRlLT5tX29yaWdpbmFsRnJhbWUgPSBvcmlnaW5hbEZyYW1lOwogCiAg
ICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdyk7Ci0gICAgbV9wcml2YXRl
LT5tX2JhY2tncm91bmRXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgbV9wcml2YXRlLT5tX2Jh
Y2tncm91bmRXaW5kb3cgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5k
b3ctPmNyZWF0ZVdpbmRvdygwKTsKICAgICA6OkFuaW1hdGVXaW5kb3cobV9wcml2YXRlLT5tX2Jh
Y2tncm91bmRXaW5kb3ctPmh3bmQoKSwga0Z1bGxTY3JlZW5BbmltYXRpb25EdXJhdGlvbiwgQVdf
QkxFTkQgfCBBV19BQ1RJVkFURSk7CiAKICAgICBtX3ByaXZhdGUtPm1fY2xpZW50LT5mdWxsU2Ny
ZWVuQ2xpZW50V2lsbEVudGVyRnVsbFNjcmVlbigpOwogICAgIEFTU0VSVCghbV9wcml2YXRlLT5t
X2Z1bGxTY3JlZW5XaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93ID0g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3By
aXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93ID0gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkp
OwogICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyk7CiAgICAgbV9wcml2
YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3ctPmNyZWF0ZVdpbmRvdygwKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJv
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDYWlyb1dpbi5jcHAKaW5kZXggMTA2N2I5NjA5M2RiMmVkNTkxYTIxYTMxZDlkMDI1NmRj
MTI5M2U4OS4uZjE0NDI1NzJjYzZkMWQ1NGJiZWU1OGJkYmMzNmVkZjc3NGFhYmI2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dENhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGRjLCBib29sIGhhc0FscGhhKQogCiAgICAgY2Fp
cm9fdCogY3IgPSBjcmVhdGVDYWlyb0NvbnRleHRXaXRoSERDKGRjLCBoYXNBbHBoYSk7CiAKLSAg
ICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7CisgICAgbV9kYXRhID0gbmV3IEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJv
PihjcikpOwogICAgIG1fZGF0YS0+cGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFBy
aXZhdGUobV9kYXRhKTsKICAgICBtX2RhdGEtPm1faGRjID0gZGM7CiAgICAgaWYgKHBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCBj
MmJhZmFmOTZhMTYwNzA4MGI3NjMzOTUyNjYyZTc2Nzc2MTRiMDBjLi45NmM4MjgxYWY0YjIyYzY2
ODZhY2IxNGM1ZTgyYzFkNjliOTBkZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoSERD
IGhkYywgSUQyRDFEQ1JlbmRlclRhcmdldCoqIHJlbmRlclRhcmdldCwgUkUKIAogICAgICgqcmVu
ZGVyVGFyZ2V0KS0+QmluZERDKGhkYywgJnJlY3QpOwogCi0gICAgYXV0byBvd25lZFBsYXRmb3Jt
Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KCpyZW5k
ZXJUYXJnZXQpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFyZ2V0KTsKICAgICBtX2RhdGEgPSBuZXcg
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNvbnRl
eHQpLCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2RhdGEt
Pm1faGRjID0gaGRjOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpwbGF0Zm9ybUluaXQoSERDIGhkYywgYm9vbCBoYXNBbHBoYSkKICAgICBpZiAoIVNVQ0NFRURF
RChocikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQu
Z2V0KCkpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQuZ2V0KCkpOwogICAgIG1fZGF0YSA9IG5l
dyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShvd25lZFBsYXRmb3JtQ29u
dGV4dCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogICAgIG1fZGF0
YS0+bV9oZGMgPSBoZGM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAK
aW5kZXggYmQ3NmVmYmJhOWQwZTg5N2QzZDI4OGU4NWU4ZDI0NDRjYzRmOGY0ZS4uMWViYjViMDlk
Mzg1MzdjMDE5MjIwYjk0N2RjYWQ5NDRkOGUxMDExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFw
aGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0
ZUYKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9y
eSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0
LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsKIH0KIApAQCAtNTUsMTQgKzU1LDE0IEBA
IEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3Jh
cGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFtyZW5kZXJUYXJnZXRdKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCByZW5kZXJUYXJn
ZXQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJEPihjb250ZXh0LCByZW5kZXJUYXJnZXQpOwogICAgICAgICB9KTsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250
ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBB
ZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1Db250
ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5p
cXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdy
YXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCiB7
CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZh
dGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQp
OwpAQCAtNzAsOSArNzAsOSBAQCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OkdyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQmIGNvbnRleAogCiBHcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAgICAgOiBH
cmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9y
bSB7IH0pCi0gICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldCkpCisgICAgLCBtX293bmVkUGxhdGZv
cm1Db250ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdl
dCkpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkKLSAg
ICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5n
Q29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0Nv
bnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAgIG1f
cGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgp
KTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHAKaW5kZXggNWJkZTRjZWRmNTE2YTkxNzlhNmQzZDNiM2UzM2QxMzRlZDVh
YjUxMS4uMWQ4MDQyMGNmN2VjNmNkNzc1YTYyYmFlYTIyZjk5MDYwN2ViNGNiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpXaW5kb3dz
Qml0bWFwOjp+V2luZG93c0JpdG1hcCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRl
eHQ6OldpbmRvd3NCaXRtYXA+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlV2luZG93c0JpdG1hcChj
b25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdpbmRv
d3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdp
bmRvd3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRpcmVjdDJELmNwcAppbmRleCAwNmMxNzQ1NzlhNGJjMTMwOTFmMzRiNTc5NGFhYTkyOTkzYmJi
YTI0Li4zNWE5ZmY2MTEzNTFjMzNjNzE3NGQ5MmExZmRjZjQ0NzBlODFhODg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVm
ZmVyRGlyZWN0MkQuY3BwCkBAIC0xMTIsOCArMTEyLDggQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNw
YWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm90ZTogVGhpcyBwbGFjZXMgdGhlIGJpdG1h
cGNvbnRleHQgaW50byBhIGxvY2tlZCBzdGF0ZSBiZWNhdXNlIG9mIHRoZSBCZWdpbkRyYXcgY2Fs
bCBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAgbV9kYXRhLnBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KGJpdG1hcENvbnRleHQuZ2V0KCkp
OwotICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+
KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVu
ZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CisgICAgbV9kYXRhLnBsYXRmb3JtQ29udGV4
dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KGJpdG1hcENvbnRleHQuZ2V0
KCkpOworICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KG1f
ZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVy
aW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmluZGV4IGUwNjYz
MTBhMGFjYTcxYmQ5YWM4MWRkMTZiYTBkYjE1YTdkNTExZDUuLmQyODUzOGExNTgyMjhiMmM4OWUx
ODNjNzM5MTRlMTJiOGExODkxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3cuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuQ2xpZW50IHsKIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3cgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbkNsaWVudCopOwogICAgIH5NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCmlu
ZGV4IDU4MzhlYzE1N2EyYzdiNzE2M2I3MTY4MmE0ZWI4YzgwMzRlOTYzMjEuLjZkNjRhZTlhNmUz
YTQxN2ZiMTRmMTIxNjZmNjhkM2M5YTU1MjY2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bigpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRp
YUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZh
aWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
PihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikg
eyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBs
YXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAw
LCAwLCAwLCAwKTsKICAgICB9CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgZmxvYXQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogCiBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OmJ1ZmZlcmVkKCkgY29uc3QKIHsgCi0gICAgYXV0byByYW5nZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHJhbmdlcyA9IG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGlmIChtX3ByZXNlbnRlciAmJiBtX3By
ZXNlbnRlci0+bWF4VGltZUxvYWRlZCgpID4gMCkKICAgICAgICAgcmFuZ2VzLT5hZGQoTWVkaWFU
aW1lOjp6ZXJvVGltZSgpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV9wcmVzZW50ZXIt
Pm1heFRpbWVMb2FkZWQoKSkpOwogICAgIHJldHVybiByYW5nZXM7CkBAIC04ODgsNyArODg4LDcg
QEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRl
cjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXIoTWUKICAgICBtX3NvdXJjZVJlY3QuYm90dG9tID0gMTsK
ICAgICBtX3NvdXJjZVJlY3QucmlnaHQgPSAxOwogCi0gICAgbV9wcmVzZW50ZXJFbmdpbmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPERpcmVjdDNEUHJlc2VudGVyPigpOworICAgIG1fcHJlc2VudGVyRW5n
aW5lID0gbWFrZVVuaXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKICAgICBpZiAoIW1fcHJlc2Vu
dGVyRW5naW5lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uaAppbmRleCA5MGU5YjcyMTU3MDhhYzJhMmVmZjdkNGE2YWRlMTQ3
ZWVlMjg4NDY2Li5hMjE2NjExMGIzODAwZjE3NjQ3MTY1YzJkMDJhMGRhOWVhOTUxMDJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oCkBAIC00Nyw2ICs0
Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2Us
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oTWVkaWFQbGF5ZXIqKTsKICAgICB+TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKCk7CkBAIC0xNjgsNiArMTY5LDcgQEAgY2xh
c3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmEKICAgICB9OwogCiAgICAgY2xhc3MgQXN5bmNDYWxsYmFjayA6
IHB1YmxpYyBJTUZBc3luY0NhbGxiYWNrLCBwdWJsaWMgTWVkaWFQbGF5ZXJMaXN0ZW5lciB7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQXN5
bmNDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24qLCBib29sIGV2ZW50
KTsKICAgICAgICAgfkFzeW5jQ2FsbGJhY2soKTsKQEAgLTE5MSw2ICsxOTMsNyBAQCBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYQogICAgIHR5cGVkZWYgRGVxdWU8Q09NUHRyPElNRlNhbXBsZT4+IFZp
ZGVvU2FtcGxlTGlzdDsKIAogICAgIGNsYXNzIFZpZGVvU2FtcGxlUG9vbCB7CisgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVmlkZW9TYW1wbGVQ
b29sKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIH5WaWRlb1NhbXBsZVBvb2woKSA9IGRl
ZmF1bHQ7CkBAIC0yMTIsNiArMjE1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICBj
bGFzcyBEaXJlY3QzRFByZXNlbnRlcjsKIAogICAgIGNsYXNzIFZpZGVvU2NoZWR1bGVyIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBWaWRl
b1NjaGVkdWxlcigpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+VmlkZW9TY2hlZHVsZXIo
KSA9IGRlZmF1bHQ7CkBAIC0yNTcsNiArMjYxLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEK
ICAgICB9OwogCiAgICAgY2xhc3MgRGlyZWN0M0RQcmVzZW50ZXIgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIERpcmVjdDNEUHJlc2VudGVy
KCk7CiAgICAgICAgIH5EaXJlY3QzRFByZXNlbnRlcigpOwpAQCAtMzE5LDYgKzMyNCw3IEBAIGNs
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgICAgICwgcHVibGljIElNRlZpZGVvRGlzcGxheUNv
bnRyb2wKICAgICAgICAgLCBwdWJsaWMgSU1GQXN5bmNDYWxsYmFjawogICAgICAgICAsIHB1Ymxp
YyBNZWRpYVBsYXllckxpc3RlbmVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgcHVibGljOgogICAgICAgICBDdXN0b21WaWRlb1ByZXNlbnRlcihNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24qKTsKICAgICAgICAgfkN1c3RvbVZpZGVvUHJlc2VudGVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCmluZGV4IDZmYmUyYjVlZDc1YWIzYmEwNGUzMDI1
NDljY2ViOTE2MWFmNWMwMTMuLjE5MDU0MGUwMzNkOWI3Y2M4YzU0YjhiMWJlZjc3NjkyYmQ1Zjk0
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0
Zm9ybUNvbnRleHREaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCkBAIC00NSw2ICs0NSw3IEBAIHN0cnVj
dCBTaGFkb3dTdGF0ZTsKIH0KIAogY2xhc3MgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEKTsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RChJRDJEMVJlbmRlclRhcmdldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAKaW5kZXggMzM3ZmFmMzc4ZGE3OTU1
YmVhNjEwYWVjOTA3NTc5NjZkNmM0ODIwMC4uOWQ3ZDkyZThlYWQ5NmExYmJkZmJkMWQ5MmRjOTY2
MjFjNmM0MmY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENBSW1hZ2VRdWV1ZVJlZj4g
bV9pbWFnZVF1ZXVlOwogfTsKQEAgLTUwLDEzICs1MSwxMyBAQCBzdGF0aWMgdm9pZCBXS0NBSW1h
Z2VRdWV1ZVJlbGVhc2UoQ0FJbWFnZVF1ZXVlUmVmIGlxKQogfQogCiBXS0NBSW1hZ2VRdWV1ZTo6
V0tDQUltYWdlUXVldWUodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3Qg
Y2FwYWNpdHkpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VRdWV1
ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVBy
aXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBhZG9wdENGKHdrQ0FJ
bWFnZVF1ZXVlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIGNhcGFjaXR5KSk7CiB9CiAKIFdLQ0FJbWFn
ZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZShjb25zdCBXS0NBSW1hZ2VRdWV1ZSYgbykKLSAgICA6IG1f
cHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKKyAgICA6
IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKIHsKICAgICBt
X3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IG8ubV9wcml2YXRlLT5tX2ltYWdlUXVldWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggNzFh
MDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NC4uNDIyNTJkMzRiNTRmZTZjMmMy
NmI1MjJjNjYwZTg2MmYwNTZlZjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDMsMjQgKzQzLDI0IEBAIGVudW0gQ2xpcGJvYXJkRGF0
YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJv
YXJkPigiQ0xJUEJPQVJEIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIkNM
SVBCT0FSRCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQYXN0ZWJvYXJkPigiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9h
cmQ+KCJQUklNQVJZIik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhOjpj
cmVhdGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0
YTo6Y3JlYXRlKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAg
IEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
SGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcAppbmRleCA0OTAzNzFhZDg5ZWYyZTc5NmUzNDAxYWFjMWRiYjgwNmVhOTY2ZWIwLi5hZjhm
ZjM0MjQ2YmM5NzJmMWE1ZmY3MzdmOTkyOTgwOWZiNjY5YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC0yNjYsNiArMjY2LDcg
QEAgVmVjdG9yPEdka0F0b20+IFBhc3RlYm9hcmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQo
R3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWcKIHN0YXRpYyBTZWxlY3Rpb25EYXRhKiBzZXR0aW5n
Q2xpcGJvYXJkU2VsZWN0aW9uOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIENsaXBib2FyZFNldERhdGEoU2VsZWN0
aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBzZWxlY3Rpb25DbGVh
cmVkQ2FsbGJhY2spCiAgICAgICAgIDogc2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pCiAgICAgICAg
ICwgc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKFdURk1vdmUoc2VsZWN0aW9uQ2xlYXJlZENhbGxi
YWNrKSkKQEAgLTMwMCw3ICszMDEsNyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xp
cGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IFNlbAogCiAgICAg
aWYgKG51bWJlck9mVGFyZ2V0cyA+IDAgJiYgdGFibGUpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8
U2VsZWN0aW9uRGF0YSo+IGNoYW5nZShzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBjb25zdF9j
YXN0PFNlbGVjdGlvbkRhdGEqPigmc2VsZWN0aW9uKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rp
b24sIFdURk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gbWFrZVVuaXF1ZTxDbGlwYm9hcmRTZXREYXRhPigqc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlv
biwgV1RGTW92ZShwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOwogICAgICAgICBpZiAoZ3RrX2Ns
aXBib2FyZF9zZXRfd2l0aF9kYXRhKGNsaXBib2FyZCwgdGFibGUsIG51bWJlck9mVGFyZ2V0cywg
Z2V0Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxi
YWNrLCBkYXRhLmdldCgpKSkgewogICAgICAgICAgICAgZ3RrX2NsaXBib2FyZF9zZXRfY2FuX3N0
b3JlKGNsaXBib2FyZCwgbnVsbHB0ciwgMCk7CiAgICAgICAgICAgICAvLyBXaGVuIGd0a19jbGlw
Ym9hcmRfc2V0X3dpdGhfZGF0YSgpIHN1Y2NlZWRzIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxs
YmFjayB0YWtlcyB0aGUgb3duZXJzaGlwIG9mIGRhdGEsIHNvIHdlIGxlYWsgaXQgaGVyZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCmlu
ZGV4IGJkY2M5OWU4NTlkNDk3NTA3OGZmM2M1ZTJlYmMzODVkOWI5NWI5NTIuLjczZTA3NThhNmVk
ZDFlMTkzMjMxMDgzZjg5YTdlN2ZkZjIwZDEzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcApAQCAtMzUsMjAgKzM1LDIwIEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZUdhZGdldD4gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0
ZShjb25zdCBSZW5kZXJUaGVtZUdhCiB7CiAgICAgc3dpdGNoIChpbmZvLnR5cGUpIHsKICAgICBj
YXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmljOgotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywg
cG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4o
aW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVH
YWRnZXQ6OlR5cGU6OlRleHRGaWVsZDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0
aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRn
ZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRo
ZW1lR2FkZ2V0OjpUeXBlOjpSYWRpbzoKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBl
OjpDaGVjazoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dn
bGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2li
bGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpBcnJv
dzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVBcnJvd0dhZGdl
dD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZUFycm93R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBw
b3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6SWNvbjoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uR2FkZ2V0PihpbmZvLCBw
YXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwog
ICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlNjcm9sbGJhcjoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBh
cmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9u
KTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJl
bnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcAppbmRleCAwNWQxMmRkOWVhZmJlZjAy
YTQ1OWNhNTI3NjQxN2E1YjliMGU4OTc2Li5jYTZlZDkxOGE1MDMzZTI5NzZkYjg0ZDg5YzIwNDg4
NzAwZjAyYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVy
VGhlbWVXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZVdpZGdldC5jcHAKQEAgLTQyLDQ5ICs0Miw0OSBAQCBSZW5kZXJUaGVtZVdpZGdldCYgUmVu
ZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKFR5cGUgd2lkZ2V0VHlwZSkKICAgICBhdXRvIGFk
ZFJlc3VsdCA9IHdpZGdldE1hcCgpLmVuc3VyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2lkZ2V0
VHlwZSksIFt3aWRnZXRUeXBlXSgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZVdpZGdl
dD4gewogICAgICAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHsKICAgICAgICAgY2FzZSBSZW5kZXJU
aGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJSaWdodDoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJMZWZ0OgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdU
S19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGws
IFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTY3JvbGxiYXI6Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9O
X0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwogICAgICAg
ICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvclJp
Z2h0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3Jv
bGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1v
ZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJh
cjo6TW9kZTo6SW5kaWNhdG9yKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlw
ZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNB
TCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6
OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0
OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xsSW5kaWNhdG9yOgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJ
Wk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJ
T05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkNoZWNrQnV0dG9uOgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJl
bmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0
b246OlR5cGU6OkNoZWNrKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
UmFkaW9CdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlvKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihS
ZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6UmFkaW8pOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Ok5v
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5k
ZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6Tm8pOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lk
Z2V0OjpUeXBlOjpCdXR0b25EZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRl
clRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lk
Z2V0OjpUeXBlOjpDb21ib0JveDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lQ29tYm9Cb3g+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZUNvbWJvQm94PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpU
eXBlOjpFbnRyeToKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lRW50cnk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVu
dHJ5PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTZWxlY3RlZEVu
dHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVFbnRy
eT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PihSZW5kZXJUaGVtZUVudHJ5OjpTZWxlY3RlZDo6
WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VhcmNoRW50cnk6
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNlYXJjaEVu
dHJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hF
bnRyeT4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U3BpbkJ1dHRv
bjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1
dHRvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1
dHRvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxT
bGlkZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNs
aWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogICAg
ICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2xpZGVyOgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19P
UklFTlRBVElPTl9IT1JJWk9OVEFMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CiAgICAgICAgIGNh
c2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlByb2dyZXNzQmFyOgotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQ
cm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9k
ZTo6RGV0ZXJtaW5hdGUpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJ
bmRldGVybWluYXRlUHJvZ3Jlc3NCYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2Rl
OjpJbmRldGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRo
ZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkluZGV0ZXJtaW5h
dGUpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpMaXN0VmlldzoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lTGlzdFZpZXc+KCk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJY29uOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpXaW5kb3c6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lV2luZG93PigpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzOSw3ICsxMzksNyBAQCBS
ZW5kZXJUaGVtZVNjcm9sbGJhcjo6UmVuZGVyVGhlbWVTY3JvbGxiYXIoR3RrT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIE1vZGUgbW9kZQogICAgIGluZm8udHlwZSA9IFJlbmRlclRoZW1lR2FkZ2V0
OjpUeXBlOjpHZW5lcmljOwogICAgIGluZm8ubmFtZSA9ICJjb250ZW50cyI7CiAgICAgaW5mby5j
bGFzc0xpc3QuY2xlYXIoKTsKLSAgICBtX2NvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJl
biwgbV9zY3JvbGxiYXIuZ2V0KCkpOworICAgIG1fY29udGVudHMgPSBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIGNoaWxkcmVu
LCBtX3Njcm9sbGJhci5nZXQoKSk7CiAgICAgaW5mby5uYW1lID0gInNsaWRlciI7CiAgICAgbV9z
bGlkZXIgPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGluZm8sIG1fY29udGVudHMtPmNoaWxk
KG1fdHJvdWdoUG9zaXRpb24pKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBSZW5kZXJUaGVtZUNv
bWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94KCkKICAgICB9OwogICAgIGluZm8ubmFtZSA9ICJi
b3giOwogICAgIGluZm8uY2xhc3NMaXN0ID0geyAiaG9yaXpvbnRhbCIsICJsaW5rZWQiIH07Ci0g
ICAgbV9ib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBH
VEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgY2hpbGRyZW4sIG1fY29tYm9Cb3guZ2V0KCkpOwor
ICAgIG1fYm94ID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09S
SUVOVEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKICAgICBS
ZW5kZXJUaGVtZUdhZGdldCogYnV0dG9uID0gbV9ib3gtPmNoaWxkKDApOwogICAgIGluZm8uY2xh
c3NMaXN0LnJlbW92ZUxhc3QoKTsKICAgICBtX2J1dHRvbkJveCA9IFJlbmRlclRoZW1lR2FkZ2V0
OjpjcmVhdGUoaW5mbywgYnV0dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
ODQwN2MxMTAxZGRkNmRiNmUzNzhkZWZjYjNhYjgyNmJmNzI2NDU0ZC4uNzg2OTdlYjAwMDBmN2Y3
YjgyYTdkMGVjZjVmOTg1YTFlOTI4OWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAK
QEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBCTVBJbWFnZURlY29kZXI6OmRlY29kZUhlbHBlcihib29s
IG9ubHlTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fcmVhZGVyKSB7
Ci0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhp
cywgbV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBmYWxzZSk7CisgICAgICAgIG1fcmVh
ZGVyID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0LCBp
bWdEYXRhT2Zmc2V0LCBmYWxzZSk7CiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5n
ZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDdiYTdlZDkx
MDFjZTI1YTliZjZlMjMxMDg3YmYwYmMxMTRjYzIyZDYuLjRmMzQ4N2UzMzQ3NjQwNTQ3NGNmODZi
NWM2MDZkMmMxOTg4YzdjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMzQs
NyArMzM0LDcgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYWx0QXRG
cmFtZSwgR0lGUXVlcnkgcXVlcnksIGJvb2wgYWxsRGF0YVIKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
R0lGSW1hZ2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8R0lG
SW1hZ2VSZWFkZXI+KHRoaXMpOwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0
KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggMWNjYTVlNTllZWIz
NTFiMDU4YTIxZGIxMzRmNjQzNzkxZTUwNzdjYS4uZDc3MTg2ZWE5NzM5YmRmYjJjNTYyMjhlZTRj
ZjVlODgyOGQ4ODU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMjEsNyArMzIx
LDcgQEAgYm9vbCBHSUZGcmFtZUNvbnRleHQ6OmRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjoKICAgICAgICAgaWYgKCFpc0RhdGFTaXplRGVm
aW5lZCgpIHx8ICFpc0hlYWRlckRlZmluZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgICAgIG1fbHp3Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGTFpXQ29udGV4dD4o
Y2xpZW50LCB0aGlzKTsKKyAgICAgICAgbV9sendDb250ZXh0ID0gbWFrZVVuaXF1ZTxHSUZMWldD
b250ZXh0PihjbGllbnQsIHRoaXMpOwogICAgICAgICBpZiAoIW1fbHp3Q29udGV4dC0+cHJlcGFy
ZVRvRGVjb2RlKCkpIHsKICAgICAgICAgICAgIG1fbHp3Q29udGV4dCA9IG51bGxwdHI7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBHSUZJbWFnZVJl
YWRlcjo6c2V0UmVtYWluaW5nQnl0ZXMoc2l6ZV90IHJlbWFpbmluZ0J5dGVzKQogdm9pZCBHSUZJ
bWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1fZnJhbWVzLmlz
RW1wdHkoKSB8fCBtX2ZyYW1lcy5sYXN0KCktPmlzQ29tcGxldGUoKSkKLSAgICAgICAgbV9mcmFt
ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXpl
KCkpKTsKKyAgICAgICAgbV9mcmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8R0lGRnJhbWVDb250ZXh0
PihtX2ZyYW1lcy5zaXplKCkpKTsKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhpcyBtZXRob2QgdG8g
Y2xvc2UgdG8gZG9MWlcoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTg3MGJi
MTYwYjg0OTQ4ZjBiNTlkZTQ1MTE2MzZiYTRjMGYzOGYyZS4uZmY2YTFjODdhZTZmMDViNDljY2Mx
MjhhYmUwNWMzMDNkNmVlYmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE5
NSw3ICsxOTUsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleChzaXplX3Qg
aW5kZXgpCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGhhdmUgYWxyZWFkeSBzaXplZCBtX2Zy
YW1lQnVmZmVyQ2FjaGUgYmVmb3JlIHRoaXMsIGFuZAogICAgICAgICAgICAgLy8gd2UgbXVzdCBu
b3QgcmVzaXplIGl0IGFnYWluIGxhdGVyIChzZWUgY2F1dGlvbiBpbiBmcmFtZUNvdW50KCkpLgog
ICAgICAgICAgICAgQVNTRVJUKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPT0gbV9kaXJFbnRy
aWVzLnNpemUoKSk7Ci0gICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gc3RkOjptYWtl
X3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwg
dHJ1ZSk7CisgICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gbWFrZVVuaXF1ZTxCTVBJ
bWFnZVJlYWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CiAgICAg
ICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAg
ICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXRCdWZmZXIoJm1fZnJhbWVCdWZmZXJDYWNo
ZVtpbmRleF0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCBiNzJjNTVhMmNiOTA5ZmEzNDYxY2Y3OTVmMDRkY2VhZDUxMDRlOGVlLi5kMGI5MTZhNWRhZjhh
M2FhMjU0ZjQ5NzM0NzNhODMxNTU3MjlkYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpQ
RUdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxKUEVH
SW1hZ2VSZWFkZXI+KHRoaXMpOwogCiAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVjb2RlIHRoZSBp
bWFnZSBidXQgd2UndmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRhLCBkZWNvZGluZwogICAgIC8vIGhh
cyBmYWlsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGMxOGEzOWI1OTEzM2Ez
MThmMTUxMDU4MWU4ZjkxZWJkZDc2ODc5YWIuLjYyY2I5YjIyYTAxZjI2ZTlmMmNkNDFkZWEzODFi
MzYzNjg5N2VlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01NTYsNyArNTU2
LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCB1bnNpZ25l
ZCBoYWx0QXRGcmFtZSwgYm9vbCBhbGxEYXRhUmUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBOR0ltYWdl
UmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPFBOR0ltYWdlUmVh
ZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0
IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5k
ZXggMjA5Zjg4ZjQ3YTNiN2NkYzAxNDNkZTkyZTI0YmFkZGY5NjY0YjVmNC4uY2FlM2RjZjE2NDc5
NmNlZWNiNjhiMjQ0OGYxMTMzYzEwZWM5YzIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIExlZ2FjeVRpbGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyogd2lu
ZG93KQogICAgIDogbV93aW5kb3cod2luZG93KQogICAgICwgbV90b21ic3RvbmUoYWRvcHROUyhb
W0xlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV96b29tZWRP
dXRUaWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxl
U2l6ZSkpCisgICAgLCBtX3pvb21lZE91dFRpbGVHcmlkKG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdy
aWQ+KCp0aGlzLCBtX3RpbGVTaXplKSkKICAgICAsIG1fdGlsZUNyZWF0aW9uVGltZXIoKnRoaXMs
ICZMZWdhY3lUaWxlQ2FjaGU6OnRpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgW2hvc3RM
YXllcigpIGluc2VydFN1YmxheWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIo
KSBhdEluZGV4OjBdOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpj
b21taXRTY2FsZUNoYW5nZSgpCiAKICAgICBpZiAobV9jdXJyZW50U2NhbGUgIT0gbV96b29tZWRP
dXRUaWxlR3JpZC0+c2NhbGUoKSkgewogICAgICAgICBpZiAoIW1fem9vbWVkSW5UaWxlR3JpZCkg
ewotICAgICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdh
Y3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOworICAgICAgICAgICAgbV96b29tZWRJblRp
bGVHcmlkID0gbWFrZVVuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOwog
ICAgICAgICAgICAgW2hvc3RMYXllcigpIGFkZFN1YmxheWVyOm1fem9vbWVkSW5UaWxlR3JpZC0+
dGlsZUhvc3RMYXllcigpXTsKICAgICAgICAgICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgK
aW5kZXggNjY0N2VjM2EzNmQxNTg3ODY5NGYwN2QwMmIxZmIxZThjMzUwZDUzZi4uMzBlZjlmYzMx
Yzg3ZjExYmZhZmU0Y2E2YTllYTgxMjRkNWZjM2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTGVnYWN5VGlsZUdyaWRUaWxlOwogCiBjbGFzcyBMZWdhY3lUaWxlR3Jp
ZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJ
bnRQb2ludCBUaWxlSW5kZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0KaW5kZXggMTkxYWM3Njk2MjE1MTIxNTNkYmRjYjA3OGRkNjZmNDY1NTNiYzIx
ZC4uMDI3MWI5M2U3MDVjZTJjNDJkNjMyZmUyZGIyOWFhNDZlODM2ZDIzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY2LDEyICs2NiwxMiBA
QCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50
JikKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRy
YWdBbmREcm9wKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigi
ZGF0YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOwogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3Rl
Ym9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOwogfQogCiAjZW5kaWYKQEAg
LTEwMSw3ICsxMDEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmlu
ZyYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+
KGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0
ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQppbmRleCBhOWQ5ZTQ3MTA1MDE3ZDY0ZDgyZTM3
YzhhYTMxY2U2NDY5MDI1Njg1Li5jMmI1YTBiMDhiZGY3NWU4YzAxY2Q5YmQyZDUxYzMxNDkzMDVm
Mzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KQEAgLTg0LDcg
Kzg0LDcgQEAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0
ZXJJZk5lZWRlZChOU1VSTCAqdXJsLCBOU1N0cmluZwogICAgIGlmIChbUUxQcmV2aWV3R2V0U3Vw
cG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6dXBkYXRlZE1JTUVUeXBlLmdldCgp
XSkgewogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHV0aSA9IGFkb3B0TlMoUEFMOjpzb2Z0
TGlua19RdWlja0xvb2tfUUxUeXBlQ29weVVUSUZvclVSTEFuZE1pbWVUeXBlKHVybCwgdXBkYXRl
ZE1JTUVUeXBlLmdldCgpKSk7CiAKLSAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQoKSk7CisgICAgICAgIGF1dG8g
Y29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0KCkp
OwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcHJldmlld1JlcXVlc3QgPSBjb252ZXJ0ZXItPnBy
ZXZpZXdSZXF1ZXN0KCk7CiAKICAgICAgICAgLy8gV2UgdXNlIFtyZXF1ZXN0IFVSTF0gaGVyZSBp
bnN0ZWFkIG9mIHVybCBzaW5jZSBpdCB3aWxsIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQppbmRleCAxMDdjNzdj
NzUzZWFiN2Q5MmRhMjk0ODdjYTZmNjVmODA3MDQ4MjEzLi42ZDljY2UxNWI4NzRmMTVmMTU0ODc1
ZWEwZWU2YjlmMTAzNWE4MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVy
OjpjcmVhdGUoUmVtb3RlQ29tbWEKICAgICBpZiAoIU1lZGlhUGxheWVyTGlicmFyeSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUz4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CiB9CiAKIFJlbW90ZUNvbW1hbmRMaXN0ZW5l
cklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVu
dCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9s
bEFuaW1hdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1h
dG9ySU9TLm1tCmluZGV4IDAxZjBhOWJiMjBhMjQ4YjY5OTg4NTY0NzBhZWUzNzRhOThjZmE1MWMu
LmVkNjMyZWE1ZTNmNTU5N2U5ZDc2ZmQyZTU1Njk1NjFmZTZjNGMyMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KQEAgLTQwLDcgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0
b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVh
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3Jv
bGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+KHNj
cm9sbGFibGVBcmVhKTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JJT1M6OlNjcm9sbEFuaW1hdG9ySU9T
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCAwNTQzZWQ1ZTlmYzlm
Y2ZlM2JiYWE0MDM1NWU0MDcyZjlmM2MzZjQwLi5mOGE2MWVjNzBjMGMxYTRjZDM3N2YwZTdjZDY3
NmVmYjlkZTViYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUv
UGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3Bl
L1Bhc3RlYm9hcmRMaWJXUEUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOwogfQogCiBQYXN0ZWJvYXJk
OjpQYXN0ZWJvYXJkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KaW5kZXggNTE1MjBkY2JiZWE1OTIxODVjMzI2NzAyY2JhNjlmZTg4YjRkNGRkZS4uOGVi
MTVjZjg4NTJkOTg1NzQ0N2UwNTljMzhhY2FlYmEyMzQxNWQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEwMCw3ICsxMDAsNyBAQCBQYXN0
ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwcm9taQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihO
U0dlbmVyYWxQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2Vu
ZXJhbFBib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAK
QEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3Rl
Ym9hcmQ+KE5TRHJhZ1Bib2FyZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4o
TlNEcmFnUGJvYXJkKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdB
bmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5m
aWxlTmFtZXMoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEu
cGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVu
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3Rl
bmVyTWFjLm1tCmluZGV4IDA1Y2MwODk1N2UxZDUwMTI0ZGQ2MzJlMmE0Yzg5MjEyOTg5Njk2MTEu
LjFhYTJjZDgwMTMyZjJjMjFlZTM4YjlmZmJkYjgzMzczYmJmNGMxOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5t
bQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJl
bW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXgg
YTgzMTc1MTIyZWMyZTRiNmI2ZGU1MWJlNmRmNTI2NGI0MWExZjhjNC4uNjg2MGUzM2MzYTNiMjE1
NjMwNWZiMzFhZjQyN2RjNDkwMjM1ODdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNjk3LDcgKzY5Nyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmlt
YXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yTWFjPihzY3JvbGxhYmxlQXJlYSk7
CiB9CiAKIFNjcm9sbEFuaW1hdG9yTWFjOjpTY3JvbGxBbmltYXRvck1hYyhTY3JvbGxhYmxlQXJl
YSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5j
cHAKaW5kZXggMWI5ZGM1MzQ1Yjg4MWViMzZkOTZmY2UzNTgyZGYwZTU0YTEzODViYS4uZTI0NDVi
YzgyM2Y4NmUwNTViMGU1Nzg3N2Q2Y2Y1MzFhNGZmY2M5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZQogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4od3Jp
dGVyLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoYXVkaW9UcmFja0lkKSwgV1RGTW92ZSh2aWRl
b1RyYWNrSWQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdU
Rk1vdmUodmlkZW9UcmFja0lkKSk7CiB9CiAKIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsKFJlZjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cj4mJiB3cml0ZXIsIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCwgU3RyaW5nJiYgdmlkZW9UcmFja0lk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKaW5kZXggZDRhZGIxNTJiZDRi
YWVmN2VmN2JmMDU1ZjZkOWE4M2Q4NjdlNjdlYi4uYTIyZjU3MWJjNTE2MTFmNjE3NDQ5MTA0Y2Y1
ZmM4NjBlNTJlOWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCkBA
IC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFtUHJp
dmF0ZTsKIAogY2xhc3MgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsIGZpbmFsIDogcHVibGlj
IE1lZGlhUmVjb3JkZXJQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbD4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGRiOTRmZGFm
ODNhOGFiZDY3YWZjZmQ2ZWEzNjlmYWE4OWM0NmMzZTIuLjU5YWIzODQwZmQ3MzZjYTE0NTAxNmM3
ZjY2MGVjYTNiMDkwMzI0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC05MSwxNCArOTEsMTQgQEAgQXVkaW9DYXB0dXJlRmFj
dG9yeSYgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKIAogR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVy
Q2FwdHVyZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVN
ZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nIHsgZGV2
aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFdURk1vdmUo
aGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1
ZGlvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVh
bWVyQXVkaW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVi
dWcoKTsKIH0KIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0Nh
cHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhh
c2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlOjpBdWRpbywgV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFz
aFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlv
Q2FwdHVyZXI+KCkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9D
YXB0dXJlcj4oKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJBdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaAppbmRleCA5NTNmM2E4YTBlNGY2YTA2MmI5Yjk0
YThmNDE1MWE0OWYxYTQzMDFkLi4zNDE1NDkyNTFlZDU3MWI3NWVmNWQwYzJkZWRmMWU3N2I3NTIz
Nzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oCkBAIC0yOSw3ICsyOSw3
IEBACiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIEdTdHJlYW1lckF1ZGlvRGF0YSA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7Citj
bGFzcyBHU3RyZWFtZXJBdWRpb0RhdGEgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEg
ewogcHVibGljOgogICAgIEdTdHJlYW1lckF1ZGlvRGF0YShHUmVmUHRyPEdzdFNhbXBsZT4mJiBz
YW1wbGUsIEdzdEF1ZGlvSW5mbyBpbmZvKQogICAgICAgICA6IG1fc2FtcGxlKFdURk1vdmUoc2Ft
cGxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKaW5kZXggYmJlNWFlNzM5NTRh
ZTUzY2MyMTY1NzkzZWMwOTZhODg3OTJhZDRmMi4uZjkyYTZhOWIxMjYxMTAwZjE5MzQ1ZjRlY2Ey
MTk0YmZlMWI4YTNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKQEAgLTMy
LDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyQ2FwdHVy
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1l
ckNhcHR1cmVyKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UsIEdSZWZQdHI8R3N0Q2Fwcz4pOwogICAg
IEdTdHJlYW1lckNhcHR1cmVyKGNvbnN0IGNoYXIqIHNvdXJjZUZhY3RvcnksIEdSZWZQdHI8R3N0
Q2Fwcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJj
ZS5jcHAKaW5kZXggYjNhZjM1YWY4MjQ4OGRkNGNmODIxY2QzZWVhZTYzZDljZjFhY2Q4NC4uZjNl
NTE4NmJmNjY4NzgxZWZiMTM5NWZlODUxYjM0MzIzYzQyYTNkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3Ry
ZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0xMDcsNiArMTA3LDcg
QEAgR3N0U3RyZWFtKiB3ZWJraXRNZWRpYVN0cmVhbU5ldyhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSogdHJhY2spCiAKIGNsYXNzIFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcgogICAgIDog
cHVibGljIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViS2l0TWVkaWFTdHJlYW1U
cmFja09ic2VydmVyKCkgeyB9OwogICAgIFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcihX
ZWJLaXRNZWRpYVN0cmVhbVNyYyogc3JjKQpAQCAtMTQzLDYgKzE0NCw3IEBAIGNsYXNzIFdlYktp
dE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcgogCiBjbGFzcyBXZWJLaXRNZWRpYVN0cmVhbU9ic2Vy
dmVyCiAgICAgOiBwdWJsaWMgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViS2l0TWVkaWFT
dHJlYW1PYnNlcnZlcigpIHsgfTsKICAgICBXZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyKFdlYktp
dE1lZGlhU3RyZWFtU3JjKiBzcmMpCkBAIC0zNTEsOCArMzUzLDggQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X21lZGlhX3N0cmVhbV9zcmNfY2xhc3NfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyY0NsYXNz
KiBrbGFzcykKIAogc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdChXZWJL
aXRNZWRpYVN0cmVhbVNyYyogc2VsZikKIHsKLSAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4o
c2VsZik7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1PYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcj4oc2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJlYW1U
cmFja09ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+
KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktp
dE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOwogICAgIHNlbGYtPmZsb3dDb21iaW5lciA9IGdz
dF9mbG93X2NvbWJpbmVyX25ldygpOwogICAgIHNlbGYtPmZpcnN0QXVkaW9CdWZmZXJQdHMgPSBH
U1RfQ0xPQ0tfVElNRV9OT05FOwogICAgIHNlbGYtPmZpcnN0RnJhbWVQdHMgPSBHU1RfQ0xPQ0tf
VElNRV9OT05FOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlLmNwcAppbmRleCBlNWQ5YjBlMDI3NmVkZGE1ZGJkNTIwYmMxMGYzNTE4MGQwMTVkNjli
Li45N2JlMWYxMmZiYjIyZGMzNThjOTljODM5Zjk4MWYxNjU2YThlMTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTI3LDE0
ICsxMjcsMTQgQEAgRGlzcGxheUNhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2U6OmRpc3BsYXlGYWN0b3J5KCkKIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5h
bWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciAqc291cmNlX2ZhY3RvcnkpCiAgICAg
OiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShu
YW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlx
dWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQorICAgICwgbV9jYXB0
dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkK
IHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVy
ZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVWaWRlb0Nh
cHR1cmVTb3VyY2UoU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRl
dmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6
Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2Nh
cHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAg
ICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJG
YWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oCmluZGV4IGU0ZDUwOGUzMTc5YWM0N2JmMWQx
MGY0ZjI4N2M1NDdiYzI1NjAwMmEuLmVmZGEyOWJlMzk3MThiYmE3OTEzNDE4Y2M3M2ViOWFkMzY4
NGY4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRGVjb2RlckZh
Y3RvcnkuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBH
U3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6VmlkZW9EZWNvZGVy
RmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0
cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeSgpOwogICAgIHN0YXRpYyBib29sIG5ld1NvdXJjZShT
dHJpbmcgdHJhY2tJZCwgR3N0RWxlbWVudCAqc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29k
ZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA2OTk1YzYwMmNiMTc0
NDdmYTc0MWQzOWQ0NDk0YzM1NjFkYzFiYjgyLi44MzU4MWU4NWEzOTYyZDk3ZTAxNzQzYjEwZTU2
Y2VhYTE1MWNlZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVv
RW5jb2RlckZhY3RvcnkuY3BwCkBAIC02MCw2ICs2MCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWSh3
ZWJraXRfd2VicnRjZW5jX2RlYnVnKTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0
cmVhbWVyVmlkZW9FbmNvZGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRlb0VuY29k
ZXIoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYpCiAgICAgICAgIDogbV9maXJzdEZyYW1l
UHRzKEdTVF9DTE9DS19USU1FX05PTkUpCkBAIC01MTIsMTQgKzUxMywxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXI+IEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk6
OkNyZWF0ZVZpZGVvRQogICAgICAgICBnX29iamVjdF9nZXQod2VicnRjZW5jb2Rlci5nZXQoKSwg
ImVuY29kZXIiLCAmZW5jb2Rlci5vdXRQdHIoKSwgTlVMTCk7CiAKICAgICAgICAgaWYgKGVuY29k
ZXIpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWUDhFbmNv
ZGVyPihmb3JtYXQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVlA4
RW5jb2Rlcj4oZm9ybWF0KTsKIAogICAgICAgICBHU1RfSU5GTygiVXNpbmcgVlA4IEVuY29kZXIg
ZnJvbSBMaWJXZWJSVEMuIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHdlYnJ0
Yzo6TGlidnB4VnA4RW5jb2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPHdlYnJ0Yzo6TGlidnB4VnA4RW5jb2Rlcj4oKTsKICAgICB9CiAKICAg
ICBpZiAoZm9ybWF0Lm5hbWUgPT0gY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckgyNjRFbmNvZGVyPihmb3JtYXQpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKIAog
ICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJW
aWRlb0VuY29kZXJGYWN0b3J5LmgKaW5kZXggNzk2YTIwZjk0NWUzYTk1MTk4ZWNlMTBmZTcwZDli
NTJmNzIzM2QxMS4uMTQ4M2EyYjIwYjM1MTVjNzFiN2EwYzdhNTIyNjI2ZTlmZjUzOTIwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dT
dHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oCkBA
IC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lclZp
ZGVvRW5jb2RlckZhY3RvcnkgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0
b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFt
ZXJWaWRlb0VuY29kZXJGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RUTUZTZW5kZXJCYWNrZW5kLmgKaW5kZXggZGM2ZjhmM2ZiMDU3ZmI1NDBkOTBjMDAyMjY4YTk5
Nzc0NDEwMjc3Zi4uNGEwNjFmY2M5NTNiMTNkNTgzYmFlNTU0NTE1NWJjZTA4ZGY4ZjlkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKQEAgLTQw
LDYgKzQwLDcgQEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJU
Q0RUTUZTZW5kZXJCYWNrZW5kLCBwcml2YXRlIHdlYnJ0Yzo6RHRtZlNlbmRlck9ic2VydmVySW50
ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBM
aWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEdG1m
U2VuZGVySW50ZXJmYWNlPiYmKTsKICAgICB+TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDIwN2FiNzhhOWEyYmJl
NDBhMGVkNGRhNjk1NjlhZWRiMTIyOTllMjAuLjc0NTMzYzVmYTRkZjBkNGU1YTY0ZDc1Y2U2Mjdi
MzI0MmM0NmI4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAt
NzksOSArNzksMTAgQEAgc3RhdGljIGlubGluZSBydGM6OlNvY2tldEFkZHJlc3MgcHJlcGFyZVNv
Y2tldEFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJgogfQogCiBjbGFzcyBCYXNpY1Bh
Y2tldFNvY2tldEZhY3RvcnkgOiBwdWJsaWMgcnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnkg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEJh
c2ljUGFja2V0U29ja2V0RmFjdG9yeShydGM6OlRocmVhZCYgbmV0d29ya1RocmVhZCkKLSAgICAg
ICAgOiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeT4oJm5ldHdvcmtUaHJlYWQpKQorICAgICAgICA6IG1fc29ja2V0RmFjdG9yeShtYWtl
VW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFj
dG9yeT4oJm5ldHdvcmtUaHJlYWQpKQogICAgIHsKICAgICB9CiAKQEAgLTE3OSw3ICsxODAsNyBA
QCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyhQ
ZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaAogICAgIHJlc3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRz
LnNpZ25hbGluZ1RocmVhZC0+U3RhcnQoKTsKICAgICBBU1NFUlQocmVzdWx0KTsKIAotICAgIGZh
Y3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENBdWRpb01vZHVsZT4oKTsKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1v
ZHVsZSA9IG1ha2VVbmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgc3RhdGljRmFjdG9yeUFuZFRo
cmVhZHMoKQpAQCAtMjg4LDEwICsyODksMTAgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKICAg
ICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IGdldFN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKG1f
dXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5k
VGhyZWFkcy5uZXR3b3JrTWFuYWdlcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29y
a01hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsK
KyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CiAKICAgICBp
ZiAoIWZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkpCi0gICAgICAgIGZhY3Rv
cnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2lj
UGFja2V0U29ja2V0RmFjdG9yeT4oKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQpOwor
ICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gbWFrZVVuaXF1
ZTxCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhy
ZWFkKTsKICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LT5zZXREaXNh
YmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMobV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlv
bnMpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCAqZmFjdG9y
eUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIsICpmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2Nr
ZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBudWxscHRyKTsKQEAgLTMxNCw3ICsz
MTUsNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNy
aWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4gcG9ydEFsbG9jYXRvcjsKICAgICBmYWN0b3J5QW5k
VGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0o
KSB7Ci0gICAgICAgIGF1dG8gYmFzaWNQb3J0QWxsb2NhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxj
cmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tl
dEZhY3RvcnkpOworICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4oJm5ldHdv
cmtNYW5hZ2VyLCAmcGFja2V0U29ja2V0RmFjdG9yeSk7CiAgICAgICAgIGlmICghbV9lbmFibGVF
bnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKQogICAgICAgICAgICAgYmFzaWNQb3J0QWxs
b2NhdG9yLT5zZXRfZmxhZ3MoYmFzaWNQb3J0QWxsb2NhdG9yLT5mbGFncygpIHwgY3JpY2tldDo6
UE9SVEFMTE9DQVRPUl9ESVNBQkxFX0FEQVBURVJfRU5VTUVSQVRJT04pOwogICAgICAgICBwb3J0
QWxsb2NhdG9yID0gV1RGTW92ZShiYXNpY1BvcnRBbGxvY2F0b3IpOwpAQCAtMzM1LDcgKzMzNiw3
IEBAIHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImIExpYldlYlJUQ1Byb3ZpZGVyOjpjZXJ0
aWZpY2F0ZUdlbmVyYXRvcigpCiB7CiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRT
dGF0aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVy
KTsKICAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yKQotICAg
ICAgICBmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2ln
bmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgp
KTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9y
PihmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJl
YWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCkpOwogCiAgICAgcmV0dXJuICpmYWN0b3J5QW5kVGhyZWFk
cy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmgKaW5kZXggYmRmMDkwMDQwYzkwNjU3ZjQ5ZjBjZTRhZTI4MDc3MzhhMWU4YmU3OS4uN2FhOGRl
MmViM2E0YzU1NWUwOWE2MGQ3ZDdjM2FkODMxOWIxMThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmgKQEAgLTY0LDYgKzY0LDcgQEAgc3RydWN0IFJUQ1J0cENhcGFiaWxpdGll
czsKIGVudW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBsZW1lbnRlZCwgQmFkUGFy
YW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKIAogY2xhc3MgV0VCQ09SRV9FWFBP
UlQgTGliV2ViUlRDUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGNyZWF0ZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAppbmRleCA3NzJhMzk1
ZjBjYmI0M2U3MzA3NTBjY2I5NjM2MTYxY2FhMzQxYzYzLi5kM2MzODM5NWMwNzdmMzQ2MDRiNWJi
MGY0YjQzYWUxMTAwY2RmMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ckNvY29hLmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeTsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlk
ZXJDb2NvYSA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpID0gZGVmYXVs
dDsKICAgICB+TGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKaW5kZXggMTVlMmE4Nzg5YzA3ZmIwZDBh
ZWM2ZjZjMjBmN2JiMTdmYThkYjdkMi4uNWI4MjczYjA4NTE5NmZmZDMwZTRkN2E3ZjY1NTEwYmVj
MDgwMzE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3Ry
ZWFtZXIuY3BwCkBAIC00NCwxMiArNDQsMTIgQEAgYm9vbCBMaWJXZWJSVENQcm92aWRlcjo6d2Vi
UlRDQXZhaWxhYmxlKCkKIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFj
dG9yeT4gTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0
b3J5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRGVjb2RlckZhY3Rv
cnk+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+
IExpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5Pigp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCmluZGV4IDgyY2JjYjFjNjZkMzJlYTE4Y2Rl
YjE2NzkzOGQ2OGQzYjEyZTQxOWEuLmY3ZDg1ZGM2MGE2MWE4MTQ2ZGJhMGQwM2U1NWQ3NTc2MmZl
OTBmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Q29jb2EuY3BwCkBAIC0xODgsOCArMTg4LDggQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHMKICAg
ICAgICAgaWYgKCFyZW1vdGVJT1VuaXQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
bV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24+KGlucHV0RGVzY3JpcHRpb24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0
aW9uKTsKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX291dHB1dERlc2Ny
aXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2Ny
aXB0aW9uKTsKIAogICAgICAgICBtX2RhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6
OmNyZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAyLCBzdHJlYW1UcmFjaygpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGU4ZTNkMzQ4NmRh
NDNhYWMxZGQ1NGI3OGU2YjRkZjRkYzk4MTY3OTAuLjYxMWFjMTZiOWVjYjg2ODk4YTM3MjY0NzFj
NzYyMDcxMmZiOWIzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMu
bW0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpy
ZWNvbmZpZ3VyZSgpCiAgICAgY29uc3QgYm9vbCBpc05vbkludGVybGVhdmVkID0gdHJ1ZTsKICAg
ICBGaWxsT3V0QVNCREZvckxQQ00obV9zdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUoKSwgY2hhbm5l
bENvdW50LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGJpdHNQZXJCeXRlICogYnl0ZXNQ
ZXJGbG9hdCwgaXNGbG9hdCwgaXNCaWdFbmRpYW4sIGlzTm9uSW50ZXJsZWF2ZWQpOwogCi0gICAg
bV9hdWRpb0J1ZmZlckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4o
bV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lICogbV9tYXhpbWl1
bUZyYW1lQ291bnQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJBdWRp
b0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFt
ZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKIAogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYg
Zm9ybWF0RGVzY3JpcHRpb247CiAgICAgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKE5V
TEwsICZtX3N0cmVhbUZvcm1hdCwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdERlc2Ny
aXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2Nv
YS5tbQppbmRleCBmOWRjNGE4NDdmNGEzNTVkOWNjZmY0Y2RlMDMwOGQwZDVjNWM0NDU2Li4zODhk
NzFlMjRiMjVlYmY2ZDc3ODgxNGZkZDBhOTY2M2IxNzA1NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC00Niw3ICs0Niw3IEBAIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2Nv
YTo6Y29udmVydFRvWVVWKENWUGl4CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYg
KCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKQotICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxG
b3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7CisgICAgICAg
IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NW
UGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1h
dCgpKSB9KTsKIAogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5jb252ZXJ0KHBp
eGVsQnVmZmVyKTsKIH0KQEAgLTc1LDcgKzc1LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcigK
ICAgICAgICAgSW50U2l6ZSBzaXplID0geyAoaW50KUNWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhl
bEJ1ZmZlcikgLCAoaW50KUNWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpIH07CiAg
ICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS5yb3Rh
dGUocm90YXRpb25Ub0FuZ2xlKHJvdGF0aW9uKSk7Ci0gICAgICAgIG1fcm90YXRpb25TZXNzaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKHRyYW5z
Zm9ybSksIHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIp
LCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7CisgICAg
ICAgIG1fcm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
PihXVEZNb3ZlKHRyYW5zZm9ybSksIHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5
cGUocGl4ZWxCdWZmZXIpLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRp
YmxlOjpObyk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5yb3RhdGUo
cGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCmluZGV4IDhlMjlkN2I4MWExNzNk
ZmE1MzcwNWZhMWU2MmM5ZTg4M2M0Zjk1MDIuLmQ0NzY5ZDY5ZTRhZjA0NzBkNjJjZTkwYjc1NDQw
ZTI4Mjc2OWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKQEAgLTM1LDYgKzM1LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2sgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlck1vY2spOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrKE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVudCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2suaAppbmRleCAzYzZkZTFjNGViZTRlYzc0NzM1NDBhZWNjYjg5NzYyYjE5NTU1Y2Q0
Li4xMzg4YWQwNTEzMTA4YjJlYjkyZWMyYmJlMjg5MzM2NTJlOTlhMDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1v
Y2suaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxl
ciwgcHVibGljIFRpbWVyRXZlbnRCYXNlZE1vY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29uc3QgU3RyaW5n
JiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCmluZGV4IDJmMWZiNTVlZTY3MWYyZjIy
OGZjNTE1MWQwZGQ2OWNmOGVjNjk1Y2IuLjJjN2M0MWJkNjk2ZmYxZjliYWIzODM4MWE0YjU4Mzg1
NjhiMThhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90
aWZpZXJzTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3Rp
ZmllcnNNb2NrLmNwcApAQCAtOTgsNyArOTgsNyBAQCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVy
OjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaQog
CiB2b2lkIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OmZpcmUoKQogewotICAgIG1fY2xpZW50
LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChzdGQ6Om1ha2VfdW5pcXVlPFJUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNoYW5uZWxJ
bml0KCkpKTsKKyAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwobWFrZVVuaXF1
ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIs
IFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERhdGFDaGFubmVsU3RhdGVOb3RpZmllcjo6
RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogY2xp
ZW50LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlLmNwcAppbmRleCA1NTk5MzM4MmIzYTFkYzM2ZDgzNTZiNjFiMjVjNzAw
MmUwNzM0N2ZlLi4zODdhMjFkYWY0NTUyMzk2OGFlZTRmNzk0MTlkM2Q4Yjg4NjkwZDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBNZWRpYVBsYXllciBFbmlnbmUgU3VwcG9ydAog
dm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdIChNZWRpYVBs
YXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICByZWdpc3RyYXIo
W10gKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAgICAgICBz
dXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogfQogCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6
OmJ1ZmZlcmVkKCkgY29uc3QKICAgICBpZiAobV9tZWRpYVNvdXJjZVByaXZhdGUpCiAgICAgICAg
IHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wgTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2U6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggY2M2
N2NlNjg4ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5ZTNjMjhmOC4uOTA1MTQzMTYyMWE4YzEwOGE2
ZWYwZjUxZWI2MGY3NzRhZmNjMGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMTU5LDkgKzE1OSw5IEBA
IEJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291cmNlSGFuZGxlKEJsb2JEYXRhKiBibG9iRGF0
YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLCBtX2FzeW5jIHsgYXN5bmMgfQogewogICAg
IGlmIChtX2FzeW5jKQotICAgICAgICBtX2FzeW5jU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxB
c3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgbV9hc3luY1N0cmVhbSA9IG1ha2VVbmlx
dWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmVhbSA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVN0cmVhbT4oKTsKKyAgICAgICAgbV9zdHJlYW0gPSBtYWtl
VW5pcXVlPEZpbGVTdHJlYW0+KCk7CiB9CiAKIEJsb2JSZXNvdXJjZUhhbmRsZTo6fkJsb2JSZXNv
dXJjZUhhbmRsZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggODExMmI5NzNlZWY1NGVkN2E1YzdhNTE0
Y2YxMDJhYzk5MWU3NjUzMy4uYjU0MWY2MmVlMDA1MjAzNjJjMTU1N2Y3Y2E0OTY0YTIzN2I4NzQ5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBEZWNvZGluZ1Jlc3VsdERpc3BhdGNo
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVjb2RpbmdSZXN1bHREaXNwYQogCiBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGNyZWF0ZURlY29kZVRhc2soY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYgc2NoZWR1bGVDb250ZXh0LCBEZWNvZGVD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERlY29kZVRhc2s+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZVRh
c2s+KAogICAgICAgICB1cmwuc3RyaW5nKCksCiAgICAgICAgIHNjaGVkdWxlQ29udGV4dCwKICAg
ICAgICAgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAppbmRleCBhOTg0M2Y1MGU1YTQz
NDAzZDhmNTJmMGE5NjdmOTAyNzg2NWU4ZDU2Li44ZGFlYzU0YTEzNDJkYWI1OWMzNWNjNDkyN2Ew
MGZlNjIyOTQ5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlRXJyb3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUVycm9yQmFzZS5oCkBAIC0zNyw2ICszNyw3IEBAIFdFQkNPUkVfRVhQT1JUIGV4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldlYktpdEludGVybmFsOyAvLyBVc2Vk
IGZvciBlCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZXJyb3JEb21h
aW5XZWJLaXRTZXJ2aWNlV29ya2VyOyAvLyBVc2VkIGZvciBlcnJvcnMgdGhhdCBoYXBwZW4gd2hl
biBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBhIHNlcnZpY2Ugd29ya2VyLgogCiBjbGFzcyBSZXNv
dXJjZUVycm9yQmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNw
cAppbmRleCAzMGMyN2Y1NzZhMTc3ZTZiNmFiMTk0NzQwYTdkOTAyNWI2NTlmY2FkLi42YTMxZTNl
NTI3ZjhlYzkyZDZmNjJiOTZjZGQ4MTk0NDE0YjU1YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtNzQsNyArNzQsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcihj
b25zdCBBdG9tU3RyaW5nJiBwcm90b2NvbAogfQogCiBSZXNvdXJjZUhhbmRsZTo6UmVzb3VyY2VI
YW5kbGUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCwgYm9vbCBkZWZlcnNMb2FkaW5n
LCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
ZikKLSAgICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUhhbmRsZUludGVybmFsPih0aGlz
LCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRT
bmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSksIHNob3VsZENvbnRl
bnRFbmNvZGluZ1NuaWZmKSkKKyAgICA6IGQobWFrZVVuaXF1ZTxSZXNvdXJjZUhhbmRsZUludGVy
bmFsPih0aGlzLCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3Vs
ZENvbnRlbnRTbmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSksIHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKSkKIHsKICAgICBpZiAoIXJlcXVlc3QudXJsKCkuaXNW
YWxpZCgpKSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVyZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBkYWQ5MDEwZjk1NzBlYmM1Njc2
MzM1NDNmZDFmYzUwMmY4NDY5Yjk5Li43MTNiNGRmYjMwYjJhZmRmYmVhZmY0ZWU1MzcwYTI1NDZm
YWQzYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTE2OSw3ICsx
NjksNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbgogICAgIH07CiAKICAgICBpZiAobV9tZXNz
YWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1
ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7
CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAg
IG1fc2VtYXBob3JlLndhaXQoKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVS
ZXNwb25zZQogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVz
c2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsKQEAg
LTIyNiw3ICsyMjYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgIH07CiAgICAgCiAg
ICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAg
ICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3Zl
KHdvcmspKTsKIH0KQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcoKQog
ICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZh
aWwoQ0ZFcnJvclJlZgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAg
IG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+
PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVu
aXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzExLDcgKzMxMSw3IEBA
IENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdl
UXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVl
LT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAg
ICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1f
c2VtYXBob3JlLndhaXQoKTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFs
bGVuZwogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3Zl
KHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlk
U2VuZEJvZHlEYXRhKENGCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAg
ICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtl
VW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zODAsNyArMzgwLDcg
QEAgQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm8KICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3Nh
Z2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVl
dWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsK
ICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAg
bV9zZW1hcGhvcmUud2FpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGM5YjUzZTMx
MmFkODU1NzZkMzY2ZWY0ZGM1Mzc0MzkxZmU4YzY5MGMuLmJhNTVmMDA0OGI4ZTRkZGM1YjA3MzRk
OTkzZGM5YjEzYjhjYjJiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTUyMyw3ICs1
MjMsNyBAQCAtICh2b2lkKV9yZXN0YXJ0CiAKICAgICBfcmVzb3VyY2UgPSBzZWxmLnNlc3Npb24u
bG9hZGVyLnJlcXVlc3RSZXNvdXJjZShzZWxmLm9yaWdpbmFsUmVxdWVzdCwgUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOwogICAgIGlmIChf
cmVzb3VyY2UpCi0gICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9yZXNv
dXJjZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50PihzZWxmKSk7CiB9CiAKIC0gKHZvaWQpX2NhbmNlbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYTQ1YTVmNGU0
YTAyOGZlNmU3ZjJkZmI3NWVjMmM4YWVjOTNlZDJiYi4uMTAxNjI0ZjI5MDBhOTRjYzdkMWE4OTk4
OTY3NmQ2YjQ1YWI3ZmEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgT3B0aW9uYWw8
VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QKICAgICAgICAgIkFORCAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xP
QiA/KSkgIlwKICAgICAgICAgIk9SREVSIEJZIGxlbmd0aChwYXRoKSBERVNDLCBsYXN0dXBkYXRl
ZCI7CiAKLSAgICBhdXRvIHBzdG10ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+
KG1fZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0byBwc3RtdCA9IG1ha2VVbmlxdWU8U1FMaXRlU3Rh
dGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGlmICghcHN0bXQpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKQEAgLTU2Niw3ICs1NjYsNyBAQCBib29sIENvb2tpZUphckRCOjpk
ZWxldGVBbGxDb29raWVzKCkKIAogdm9pZCBDb29raWVKYXJEQjo6Y3JlYXRlUHJlcGFyZVN0YXRl
bWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8gc3Rh
dGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAg
ICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwogICAgIEFTU0VSVChyZXQgPT0gU1FM
SVRFX09LKTsKICAgICBtX3N0YXRlbWVudHMuYWRkKHNxbCwgV1RGTW92ZShzdGF0ZW1lbnQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmgKaW5kZXggMGMwM2U5ZDY5MmM3ZjZkYzYxMzA4NmZmMjU1YzIwZTVjNmJiZTllOS4uMjY4N2Fl
NzRmYjlkOTk0Mjk3MmJlZGNhYzZhYjliMTE1OWE3ZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTQxLDYgKzQxLDcg
QEAgZW51bSBjbGFzcyBDb29raWVBY2NlcHRQb2xpY3kgewogfTsKIAogY2xhc3MgQ29va2llSmFy
REIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENvb2tpZUphckRCKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCAxMTAyN2NlM2IzY2Y2
Mzg4Zjk5NTRhYWY0OWM0OTAzZmU5M2ZkZmY1Li44Y2UxMTQzODQ4ZmIyMzE4YmExOTkwZWFkMThl
MTVmMzdkODQzNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDdXJsQ2FjaGVFbnRyeSB7Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwg
UmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyaW5nJiBjYWNoZURpcik7CiAgICAgfkN1cmxD
YWNoZUVudHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggZmE1YzhkMmQyMWI2MjczODE1ZDAy
M2E0ZjIwNDU1MDE2ZTk2MzhhZi4uZTJiNGI1ZGZiZGE2MmEzYzBjYjZiZjkxODFiYmQ2OGZkN2E0
YTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgQ3VybENh
Y2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgLS1lbmQ7IC8vIExhc3QgbGluZSBpcyBl
bXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IGl0LT5z
dHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKKyAgICAgICAg
YXV0byBjYWNoZUVudHJ5ID0gbWFrZVVuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRy
LCBtX2NhY2hlRGlyKTsKIAogICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBj
YWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1fc3RvcmFnZVNpemVMaW1pdCkgewogICAgICAgICAg
ICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CkBAIC0y
MTMsNyArMjEzLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUmIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYKIAogICAgICAgICBpbnZhbGlk
YXRlQ2FjaGVFbnRyeSh1cmwpOyAvLyBJbnZhbGlkYXRlIGV4aXN0aW5nIGVudHJ5IG9uIDIwMAog
Ci0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50
cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1h
a2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CiAgICAgICAg
IGJvb2wgY2FjaGVhYmxlID0gY2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVzcG9u
c2UpOwogICAgICAgICBpZiAoY2FjaGVhYmxlKSB7CiAgICAgICAgICAgICBjYWNoZUVudHJ5LT5z
ZXRJc0xvYWRpbmcodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3ZDE3MjE3YzJlNDQyYWM2ZjNkZThjNGI2
MGE5NTI2YzlmNjU4NDJhLi43YjA0ZmEyNmE0MmFiOTc4YWUwN2JkMzFmMGU2OTE1NTFiYmM0NjBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBDdXJsQ29udGV4dDo6Q3VybENvbnRleHQo
KQogICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+KCJXRUJLSVRfQ1VS
TF9NQVhfSE9TVF9DT05ORUNUSU9OUyIpKQogICAgICAgICBtYXhIb3N0Q29ubmVjdGlvbnMgPSAq
dmFsdWU7CiAKLSAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlcXVlc3RT
Y2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVj
dGlvbnMpOworICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxDdXJsUmVxdWVzdFNjaGVkdWxl
cj4obWF4Q29ubmVjdHMsIG1heFRvdGFsQ29ubmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9ucyk7
CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0gZW52VmFyLmRlZmluZWQoIkRFQlVH
X0NVUkwiKTsKQEAgLTMzNiw3ICszMzYsNyBAQCBDVVJMY29kZSBDdXJsSGFuZGxlOjp3aWxsU2V0
dXBTc2xDdHgodm9pZCogc3NsQ3R4KQogICAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9D
QUxMQkFDSzsKIAogICAgIGlmICghbV9zc2xWZXJpZmllcikKLSAgICAgICAgbV9zc2xWZXJpZmll
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOworICAgICAgICBt
X3NzbFZlcmlmaWVyID0gbWFrZVVuaXF1ZTxDdXJsU1NMVmVyaWZpZXI+KHNzbEN0eCk7CiAKICAg
ICByZXR1cm4gQ1VSTEVfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCmluZGV4IDdkMDYwNjhjZDlkMWFlYmVlNDJkMzg1OTRh
YmQwOTRiOTAxMTQ0NDQuLmE0ZjhjMDI4Mjc2N2IwYjQ4NzcwYTA0OGVlODUyZjE2NmUwN2E3ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29u
dGV4dC5oCkBAIC0xNDcsNiArMTQ3LDcgQEAgY2xhc3MgQ3VybENvbnRleHQgOiBwdWJsaWMgQ3Vy
bEdsb2JhbCB7CiAvLyBDdXJsTXVsdGlIYW5kbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgQ3VybE11bHRpSGFuZGxlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsTXVsdGlIYW5k
bGUpOwogCiBwdWJsaWM6CkBAIC0yMDIsNiArMjAzLDcgQEAgY2xhc3MgSFRUUEhlYWRlck1hcDsK
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIAogY2xhc3MgQ3VybEhhbmRsZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybEhhbmRs
ZSk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKaW5kZXggMmJiYTVhNmMzYTRiMjY5
NWViOWI0ZTEwNWY4NTJkNTE0ZThiZjhjOC4uMjQ3YzVmMmViMmQ5Y2Q1YTRiYzY2MjcxZjU2YzBh
NDI5ZDFlNjhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgY29u
c3QgVmVjdG9yPGNoYXI+KiBDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1fcG9zdERhdGEpCi0gICAgICAgIG1fcG9z
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRl
bigpKTsKKyAgICAgICAgbV9wb3N0RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPGNoYXI+PihtX2Zv
cm1EYXRhLT5mbGF0dGVuKCkpOwogCiAgICAgcmV0dXJuIG1fcG9zdERhdGEuZ2V0KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYThiYjhkODFhN2FiZDcxNzQzYmQzOTVkY2M4NjYz
MTc5ZmRlMmQ1NS4uY2NkYmIyODIzOWYyMmMzNjM2Y2FjMTRiMDc4NWQ2ZjU1YWIyZjViYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q3VybE11bHRpcGFydEhhbmRsZT4gQ3VybE11bHRpcGFydEhhbmRsZTo6Y3JlYXRlSWZOZWVkZWQo
Q3VybE11bAogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAq
Ym91bmRhcnkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNs
aWVudCwgKmJvdW5kYXJ5KTsKIH0KIAogT3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpleHRyYWN0Qm91bmRhcnkoY29uc3QgQ3VybFJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5oCmluZGV4IDgwNGM3NDQ2YzQ1M2I2NzE1Zjg4NWU5YWZjMjczODg1OGUyNjg3
MWEuLjcyMGM2OTgwZWRkM2RhZTNlMTJjNjNmMDhiNjNjNmY4OTZlNTMzMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3Vy
bE11bHRpcGFydEhhbmRsZT4gY3JlYXRlSWZOZWVkZWQoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVu
dCYsIGNvbnN0IEN1cmxSZXNwb25zZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAxN2ZlZGRmMGUwODE0ZDVl
YWQwNjgyZjZlZjE0Zjc2NWM5MWU1OTA4Li5jMWQxNTdiZWZmOTQ0NTQ2MzFjZDA1OTYyZjIzMTEz
MmZkOGRiOGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0
OjpjYWxsQ2xpZW50KEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3QmLCBDdXJsUmVxdWVzdENsaWVu
dCYpPiYmCiB2b2lkIEN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZCgp
PiYmIHRhc2spCiB7CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0
YXNrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogICAgIGVsc2UgaWYgKGlzTWFpblRocmVhZCgp
KQogICAgICAgICB0YXNrKCk7CiAgICAgZWxzZQpAQCAtMjA1LDcgKzIwNSw3IEBAIENVUkwqIEN1
cmxSZXF1ZXN0OjpzZXR1cFRyYW5zZmVyKCkKICAgICBhdXRvIGh0dHBIZWFkZXJGaWVsZHMgPSBt
X3JlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwogICAgIGFwcGVuZEFjY2VwdExhbmd1YWdlSGVh
ZGVyKGh0dHBIZWFkZXJGaWVsZHMpOwogCi0gICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtlX3Vu
aXF1ZTxDdXJsSGFuZGxlPigpOworICAgIG1fY3VybEhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybEhh
bmRsZT4oKTsKIAogICAgIG1fY3VybEhhbmRsZS0+c2V0VXJsKG1fcmVxdWVzdC51cmwoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDkxODM3YWY5ZjNlNDc3M2I1YzcxYzFjMjYw
ZGI5NmY1ODZiMjExYWYuLjNhYTVmNTJkYjYyN2FiYjBlY2NhZjI5MjEzZGNlMTJmYmM2ZmJjOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgQ3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Vy
bE11bHRpSGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFuZGxlID0gbWFrZVVuaXF1ZTxDdXJs
TXVsdGlIYW5kbGU+KCk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heENvbm5lY3RzKG1f
bWF4Q29ubmVjdHMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhUb3RhbENvbm5lY3Rp
b25zKG1fbWF4VG90YWxDb25uZWN0aW9ucyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1h
eEhvc3RDb25uZWN0aW9ucyhtX21heEhvc3RDb25uZWN0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxl
ci5oCmluZGV4IGNhM2JiYTgxMzQ0MGJmZjZlODAzMTI2NDA5NzZjYzM4OGE3NDg2NGYuLjRiOTVj
MGQxOWFkOTA0MmQyYWM3MGVkNGIxMzNmOGQxZDBjNjMyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxl
ci5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1
ZXN0U2NoZWR1bGVyQ2xpZW50OwogCiBjbGFzcyBDdXJsUmVxdWVzdFNjaGVkdWxlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybFJl
cXVlc3RTY2hlZHVsZXIpOwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxDdXJsUmVxdWVzdFNj
aGVkdWxlcj47CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmgKaW5kZXggNDUyZjcwNWY5Y2I4ZmUyOTE5Y2Yy
ODU2ZGVlOGQwYWQxYTgxNGYxYS4uM2I1OWNiMWY4NjM2NTQ4ODFkNDZlNjViYmU5NTU0ZTlmNjYz
NDM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTU0xWZXJpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMVmVyaWZpZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDdXJsU1NMVmVyaWZpZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxTU0xWZXJpZmllcik7CiBwdWJsaWM6CiAg
ICAgZW51bSBjbGFzcyBTU0xDZXJ0aWZpY2F0ZUZsYWdzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
aW5kZXggN2JlMDBhZDM0YjhlNTk4ODJkZTBmNTEzYjZjMmRkZjkwMTFmOTllMS4uN2Q0YTcyZmQ4
NzU1NzZkOWE1OThhYTE1ODQwNGU4OWYxMjRkNzA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
QEAgLTE2Miw3ICsxNjIsNyBAQCBSZWY8Q3VybFJlcXVlc3Q+IFJlc291cmNlSGFuZGxlOjpjcmVh
dGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZQogQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUqIFJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSgpCiB7CiAgICAgaWYgKCFk
LT5tX2RlbGVnYXRlKQotICAgICAgICBkLT5tX2RlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxD
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOworICAgICAgICBkLT5tX2RlbGVnYXRl
ID0gbWFrZVVuaXF1ZTxDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOwogCiAgICAg
cmV0dXJuIGQtPm1fZGVsZWdhdGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDdXJsLmNwcAppbmRleCBhMzY3ZmRhNjJhNmQyMTJhNDk1NWU2ODg5YzY1NzIwYzllZmFmMjFi
Li4xM2E4MzJjMjY2OWI0Y2U4Y2JlYmYzMTM0YmEwODlkOTAyZGZhOTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OnN0b3BUaHJlYWQoKQogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsOjpjYWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7CisgICAgbV90YXNrUXVl
dWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwog
fQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmV4ZWN1dGVUYXNrcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVy
LmgKaW5kZXggNWEwNmYyZWY4OWVmNWMyMWJlMTU3YzcxZGExNDE5ZWM4NDgwOWVmNy4uNzY1NDNh
ZDE2YzE0OTQ4NTg4MjI5OTFmMzA1ZmY3YTMzZTE3YWU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzYs
NiArMzYsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogCiBjbGFzcyBQcmV2aWV3Q29udmVydGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmV2aWV3Q29udmVydGVyKTsKIHB1YmxpYzoK
ICAgICBQcmV2aWV3Q29udmVydGVyKGlkIGRlbGVnYXRlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggZGUw
YjdlMWYxODdiNTA3NjVhOWQxN2MyZWM0ZWM4MDMzZDgzZjM0MS4uZjEwZWI2MjVlYTA4MTMwMjky
NzgwN2NlYzFlMmZmNmU3M2YyNGMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtNjEsNyArNjEsNyBA
QCAtICh2b2lkKWNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDooRnVuY3Rpb248dm9pZCgpPiYmKWZ1
bmN0aW9uCiB7CiAgICAgLy8gU3luYyB4aHIgdXNlcyB0aGUgbWVzc2FnZSBxdWV1ZS4KICAgICBp
ZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsK
KyAgICAgICAgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlv
bjx2b2lkKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogCiAgICAgLy8gVGhpcyBpcyB0aGUgY29t
bW9uIGNhc2UuCiAgICAgaWYgKCFzY2hlZHVsZWRXaXRoQ3VzdG9tUnVuTG9vcE1vZGUobV9zY2hl
ZHVsZWRQYWlycykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKaW5kZXggNGJiMzBhODcxZGU1NzAz
OWI3YjcxOTM0ZmVjMzc2M2E1YTRhODJkOS4uZDRiYTRlOTUwNDE1YmI0MDZiYWJjMDFiNmQyMGM2
NmQ0Zjg0YjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBA
IHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBECiAKICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVD
VChhZGRyZXNzLmdldCgpKSwgImlkZW50aWZpZXIiLCBHVUlOVF9UT19QT0lOVEVSKGlkZW50aWZp
ZXIpKTsKIAotICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVy
LCBzdGQ6Om1ha2VfdW5pcXVlPEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNvbXBsZXRpb25BbmRDYW5j
ZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoY2FuY2VsbGFi
bGUpKSk7CisgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuYWRkKGlkZW50aWZpZXIs
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNv
bXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdU
Rk1vdmUoY2FuY2VsbGFibGUpKSk7CiB9CiAKIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3Rv
cFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25T
b3VwLmNwcAppbmRleCBlNGM4YjBmMTNlNmQwODlhNTg5MmFhN2FlMGE5YjgyMTU4NWJiOWE0Li5i
ZDA2MmY3MjhmMTZmNzAwYzQ2ODAzYmM4MzllYzBiYzU1NzhlMzI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIGF1dGhUeXBlRnJvbVByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lKFByb3Rl
Y3Rpb25TcGEKIH0KIAogc3RydWN0IFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgU2VjcmV0U2VydmljZVNlYXJjaERhdGEo
R0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9pZCAoQ3JlZGVudGlhbCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBjYW5jZWxsYWJsZShjYW5jZWxsYWJsZSkK
ICAgICAgICAgLCBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkK
QEAgLTE3Myw3ICsxNzQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3JlZGVu
dGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uUwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTZWNyZXRTZXJ2
aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhPihjYW5j
ZWxsYWJsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIHNlY3JldF9zZXJ2aWNl
X3NlYXJjaChudWxscHRyLCBTRUNSRVRfU0NIRU1BX0NPTVBBVF9ORVRXT1JLLCBhdHRyaWJ1dGVz
LmdldCgpLAogICAgICAgICBzdGF0aWNfY2FzdDxTZWNyZXRTZWFyY2hGbGFncz4oU0VDUkVUX1NF
QVJDSF9VTkxPQ0sgfCBTRUNSRVRfU0VBUkNIX0xPQURfU0VDUkVUUyksIGNhbmNlbGxhYmxlLAog
ICAgICAgICBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRl
ciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9C
aWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVy
LmgKaW5kZXggMTBmZWNiYzQxOTQ3OTVmMzJkMWNhN2U3NjA5YWM0ZmYyMDkyY2QyMy4uYWFmZWQz
ZGU3OWI5OWFhYzQ3NjljNzZiNTVmNmMxY2JiNjYxYjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBCaWRp
UmVzb2x2ZXJCYXNlPEl0ZXJhdG9yLCBSdW4sIERlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bkludGVy
bmFsKCkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmRPZmZzZXQgPj0gc3RhcnRPZmZzZXQp
Ci0gICAgICAgICAgICBtX3J1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8UnVuPihzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0ICsgMSwgY29udGV4dCgpLCBtX2RpcmVjdGlvbikpOworICAgICAg
ICAgICAgbV9ydW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKIAogICAgICAgICBtX2Vvci5pbmNy
ZW1lbnQoKTsKICAgICAgICAgbV9zb3IgPSBtX2VvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvTG9jYWxlSUNVLmNwcAppbmRleCA1OWUxZmM3MmEyYmYyOTY5NDVhODZmODU1MmI4NjM3
NmE5ZWE1ODZkLi4yYzhjY2U3MzA4OGZhNWFkMGNmNTk1OWNjZTRmOTY5MWJmMzU3YTA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCkBAIC00NCw3ICs0NCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBpY3U7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2Fs
ZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIH0KIAogTG9jYWxlSUNVOjpMb2NhbGVJQ1UoY29uc3QgY2hhciogbG9jYWxlKQpAQCAt
MTYzLDIyICsxNjMsMjIgQEAgc3RhdGljIFN0cmluZyBnZXREYXRlRm9ybWF0UGF0dGVybihjb25z
dCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkKIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5n
Pj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZv
cm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50
MzJfdCBzaXplKQogewogICAgIGlmICghZGF0ZUZvcm1hdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGlmICh1ZGF0X2NvdW50U3ltYm9scyhkYXRlRm9ybWF0
LCB0eXBlKSAhPSBzdGFydEluZGV4ICsgc2l6ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3Rv
cjxTdHJpbmc+PigpOwogCi0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5n
Pj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShzaXplKTsKICAgICBmb3IgKGludDMy
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CiAgICAgICAgIGludDMyX3QgbGVuZ3RoID0gdWRhdF9nZXRTeW1ib2xzKGRh
dGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCAwLCAwLCAmc3RhdHVzKTsKICAgICAgICAg
aWYgKHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVm
ZmVyKGxlbmd0aCk7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgdWRh
dF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCBidWZmZXIuZGF0
YSgpLCBsZW5ndGgsICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBs
YWJlbHMtPmFwcGVuZChTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSkpOwogICAgIH0KICAg
ICByZXR1cm4gV1RGTW92ZShsYWJlbHMpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBV
RGF0ZUZvcm1hdCoKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gY3Jl
YXRlRmFsbGJhY2tNb250aExhYmVscygpCiB7Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShXVEZfQVJSQVlf
TEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSk7ICsraSkKICAgICAgICAgbGFi
ZWxzLT5hcHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ldKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjptb250aExhYmVscygpCiAKIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygp
CiB7Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+Pigp
OworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBs
YWJlbHMtPnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiQU0iKTsKICAg
ICBsYWJlbHMtPmFwcGVuZCgiUE0iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xv
Y2FsZU5vbmUuY3BwCmluZGV4IGJiNmIyNmJhNTljYjM2Yjk4OWI3ZTZmNTg2MzBjN2E3YjNiNTZl
YTcuLjc4MTVhNDc4ZTAyOTc0NTU5NjU3NmMyZGVkMjIxMTkzNmFhOTZhMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtNTcsNyArNTcsNyBAQCBj
bGFzcyBMb2NhbGVOb25lIDogcHVibGljIExvY2FsZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2Nh
bGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPExvY2FsZU5vbmU+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxl
Tm9uZT4oKTsKIH0KIAogTG9jYWxlTm9uZTo6fkxvY2FsZU5vbmUoKSA9IGRlZmF1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKaW5kZXggZjhlMTY3
MDg0OWE5NTg5OGExNDU3YmM5OGRhOTFlNGJkZTc4NGM3OS4uZTVmMjgxNjZjNmRkMzRiYzUzNTA5
YjZhMDAyMGE4ODg5MDdjMmNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjSUNVLmNwcApAQCAtMTU2LDQzICsxNTYsNDMgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6
OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiAgICAgICAgIC8v
IGh0dHA6Ly9kZW1vLmljdS1wcm9qZWN0Lm9yZy9pY3UtYmluL2NvbnZleHAKICAgICAgICAgaWYg
KCFzdHJjbXAobmFtZSwgIndpbmRvd3MtODc0IikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihu
YW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtODc0LTIwMDAiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAg
ICAgIGlmICghc3RyY21wKG5hbWUsICJ3aW5kb3dzLTk0OSIpKSB7CiAgICAgICAgICAgICByZWdp
c3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OS0yMDAwIik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDkt
MjAwMCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtY3lyaWxsaWMiKSkgewogICAgICAg
ICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEwLjIiKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNv
cy03XzMtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtZ3JlZWsiKSkgewogICAg
ICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8yLTEwLjQiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJt
YWNvcy02XzItMTAuNCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtY2VudHJhbGV1cnJv
bWFuIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29z
LTI5LTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJ
Q1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy10
dXJraXNoIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1h
Y29zLTM1LTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29k
ZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJFVUMt
S1IiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93
cy05NDkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+
KG5hbWUsICJ3aW5kb3dzLTk0OSIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgVGV4dENvZGVjSUNVOjpy
ZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICBjb25z
dCBjaGFyKiBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lID0gdWNudl9nZXRDYW5vbmljYWxOYW1lKG5h
bWUsICJJQU5BIiwgJmVycm9yKTsKICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOwog
ICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWVdIHsK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwg
Y2Fub25pY2FsQ29udmVydGVyTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
ZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWUpOwogICAgICAgICB9KTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY0xhdGluMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xh
dGluMS5jcHAKaW5kZXggOTMxNDUzMzI4YTZmNjY5NDg1ZWUwMWY4YTRlMmNlZGU1MDI2NzdmZi4u
OTJjNjYxM2NiMWZjYzBlMzA4YTczYzM1MGE5ZTA3ZWY3NzM0NjJmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApAQCAtOTMsNyArOTMs
NyBAQCB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5n
TmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJD
b2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIndp
bmRvd3MtMTI1MiIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
ZGVjTGF0aW4xPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNMYXRpbjE+
KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKaW5kZXggMTc2NWJmNzkyMTU5NzViMTU3YzhiM2Y3
NGM1NTcyYzQ3MWUyMTE0MS4uYzhiNTU4YzhjYTJkM2FmZDMwMjE0YmNmYzM3YTE0NTc3NTZhMTNh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBs
YWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNS
ZXBsYWNlbWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBUZXh0Q29kZWNSZXBsYWNlbWVu
dDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIK
IHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lz
dHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJyZXBsYWNlbWVudCIsIFtdIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjUmVwbGFjZW1lbnQ+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOwogICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y1VURjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwCmluZGV4IGJlMDA2NTY0NDY0OGZjZTBjMzc5ZDNjNzQzZWUyMjdlYTllZGE2ZjQuLjkwYzQ0
NzVkMDIwYjlmNDcxYjViZTc3YzNjYWFjMGZkYzk4Y2JhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCkBAIC01NCwxMCArNTQsMTAgQEAg
dm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJl
Z2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRDb2RlY1VURjE2OjpyZWdpc3RlckNvZGVjcyhU
ZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigiVVRGLTE2TEUi
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjE2Pih0
cnVlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjVVRGMTY+KHRydWUpOwog
ICAgIH0pOwogICAgIHJlZ2lzdHJhcigiVVRGLTE2QkUiLCBbXSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjE2PihmYWxzZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFRleHRDb2RlY1VURjE2PihmYWxzZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCmluZGV4IGEzZGFkNGU5
ZDE2Mzc2ODYzMDg4YjE5NzEwZjgzOWRiYmZmZWE4ZGQuLmUxZDBhNTNjNzE3YWFlNzM5OTM5ZjUx
YzRkMzI5MzQ1YWY4OWNhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVVRGOC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVVEY4LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFRleHRDb2RlY1VURjg6OnJl
Z2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9p
ZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0
cmFyKQogewogICAgIHJlZ2lzdHJhcigiVVRGLTgiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjg+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFRleHRDb2RlY1VURjg+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKaW5kZXggMjk2YzQ2OWYx
NjlmYjkxMWRjOGRiZDdhNjQ3ZWE1NjQxZTJmZmUxOS4uNDhhZGJhOWQ0YjFhN2E5YTY1OGFlZjlk
ZmFkZjg1YWRkZTlkY2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBUZXh0
Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lz
dHJhciByZWdpc3RyYXIKIHZvaWQgVGV4dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNz
KFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ4LXVzZXIt
ZGVmaW5lZCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVj
VXNlckRlZmluZWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VzZXJE
ZWZpbmVkPigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9Mb2NhbGVNYWMubW0KaW5kZXggYTUxN2JlMzQxZjZhYzRiZThlODkzY2ZhZDdjMjI4ODQ1
ZDZhODI4MC4uMmIzZDAzYTM4YTVkMjAxYmI2ZGNiOGViZTQ0ZjQ2ZmVlZmM2N2UwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtNjcsNyAr
NjcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTG9jYWxlPiBkZXRlcm1pbmVMb2NhbGUoY29uc3Qg
U3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUuc3Ry
aW5nKCkpLmdldCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGNy
ZWF0ZURhdGVUaW1lRm9ybWF0dGVyKE5TTG9jYWxlKiBsb2NhbGUsIE5TQ2FsZW5kYXIqIGNhbGVu
ZGFyLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSBkYXRlU3R5bGUsIE5TRGF0ZUZvcm1hdHRlclN0eWxl
IHRpbWVTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2lu
L0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVX
aW4uY3BwCmluZGV4IDZhMTYwZGVjY2ZjOTI2YWVmMzdkZTIzZTk3ZjYyZThmNWM2NzkwNmEuLmFh
MDBhNGFkNmY1YjU5OTgyYjZiNDc3MzE3MWM4YmM3YzAzMzkwMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCBz
dGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxv
Y2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9t
TG9jYWxlKGxvY2FsZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZVdpbj4oTENJREZy
b21Mb2NhbGUobG9jYWxlKSk7CiB9CiAKIGlubGluZSBMb2NhbGVXaW46OkxvY2FsZVdpbihMQ0lE
IGxjaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0
Q29kZWNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVj
V2luLmNwcAppbmRleCBhZjQ2OTEzOTA4MWU4MGMxMjA3YjgyYzk3ZmRmYTNjNzcyMWE2NTExLi4y
Y2ViNDc1ZTVmYWViYjY3MGM3NDE0NDc1YTQ3MjkyNDk1MmRjYTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKQEAgLTEzMSw3ICsx
MzEsNyBAQCBzdGF0aWMgVUlOVCBnZXRDb2RlUGFnZShjb25zdCBjaGFyKiBuYW1lKQogCiBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjV2luKGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZvaWQqKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjV2luPihnZXRDb2RlUGFnZShlbmNvZGluZy5uYW1l
KCkpKTsKIH0KIAogVGV4dENvZGVjV2luOjpUZXh0Q29kZWNXaW4oVUlOVCBjb2RlUGFnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlz
cGxheU9wZW5WUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZv
cm1EaXNwbGF5T3BlblZSLmgKaW5kZXggZGQ2YWU3MzYwNDY3OWYxODhlMDFlMTEwZTRmZWJlNTkz
ZDUzN2YxYi4uZjcxYmQ5ZjBkNTg5Y2MyZjgzOWIwNjdjMjNlYzhjYjUxODEwNjhkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5
T3BlblZSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZv
cm1EaXNwbGF5T3BlblZSLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIgOiBwdWJsaWMgVlJQbGF0Zm9ybURpc3Bs
YXkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSKHZyOjpJVlJTeXN0ZW0qLCB2cjo6SVZSQ2hhcGVyb25l
KiwgdnI6OklWUkNvbXBvc2l0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKaW5kZXgg
ZDFkYzY3MzY4NmY2NTFlM2UwMzI5MWI3YzAyYzMxYjBjMTY5YmJjMi4uZTdjZjcxMzdlMzNhYTU1
YmY3ZTU4NWVlMTY0ZTY3M2QzYWFlZWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4g
VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSgpCiAgICAgaWYgKCF2cjo6VlJfSXNSdW50
aW1lSW5zdGFsbGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+KCk7CiB9CiAKIFZSUGxhdGZvcm1NYW5h
Z2VyT3BlblZSOjp+VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIoKQpAQCAtNzgsNyArNzgsNyBAQCBW
ZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZS
OjpnZXRWUkRpc3BsYXlzKCkKIAogICAgIFZlY3RvcjxXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5
Pj4gZGlzcGxheXM7CiAgICAgaWYgKCFtX2Rpc3BsYXkpCi0gICAgICAgIG1fZGlzcGxheSA9IHN0
ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJv
bmUsIGNvbXBvc2l0b3IpOworICAgICAgICBtX2Rpc3BsYXkgPSBtYWtlVW5pcXVlPFZSUGxhdGZv
cm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVyb25lLCBjb21wb3NpdG9yKTsKICAgICBk
aXNwbGF5cy5hcHBlbmQobWFrZVdlYWtQdHIoKm1fZGlzcGxheSkpOwogICAgIHJldHVybiBkaXNw
bGF5czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9W
UlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3Bl
bnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKaW5kZXggNmE0Mzg3Y2MzMDgxNWUwMGMzNDE2
Yzg5NjZhZDI5ZDRiNzNmNzBkOS4uNmE3ODIzYmM3Yjk1ZWQ0MGRjZWNkZjBmNTczM2UxNmQ4NDQ1
YWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxh
dGZvcm1NYW5hZ2VyT3BlblZSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3Bl
bnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI7CiAKIGNsYXNzIFZSUGxh
dGZvcm1NYW5hZ2VyT3BlblZSIDogcHVibGljIFZSUGxhdGZvcm1NYW5hZ2VyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPiBjcmVhdGUoKTsKICAgICBleHBsaWNpdCBWUlBsYXRm
b3JtTWFuYWdlck9wZW5WUigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBhYmFkZGM3ZmJjYTIzNTllZmY1Yjk4MTFjMTk1
ZjZiNWFiYzFiYTgzLi4xNjk3ODU1ZmU3MmY2MzdlNjVhZDQ3NzcyYWZhNjFjNzQ3MTkyNDQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05
Myw3ICs5Myw3IEBAIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25lclduZFBy
b2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3CiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIGF1
dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICBhdXRv
IHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiAgICAgQ09NUHRyPElEYXRh
T2JqZWN0PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENsaXBib2Fy
ZCgmY2xpcGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0gMDsKQEAgLTEwNiwx
NiArMTA2LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0YU9iamVj
dDsKICAgICBXQ0RhdGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKIH0KIAog
Ly8gc3RhdGljCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFn
RGF0YS5wbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFz
dGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgLy8gRklYTUU6
IFNob3VsZCBhZGQgYSBjb25zdCBvdmVybG9hZCBvZiBkcmFnRGF0YU1hcCBzbyB3ZSBkb24ndCBu
ZWVkIGEgY29uc3RfY2FzdCBoZXJlLgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3Rl
Ym9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2FzdDxEcmFnRGF0YSY+KGRy
YWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCAxOTY0OWM1NjZjZmNm
NWY0MjQzMDlkMWQ4ZDEwMGIwYjRmZjc3MGE4Li42ZjdmNGJhMTY2MGI0ZjdhOTc3MjEyYzg1NjNh
NDNjNjY1ZTMwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Vh
cmNoUG9wdXBNZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVEQi5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQgU2VhcmNoUG9wdXBNZW51
REI6OmV4ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wgaWdub3JlRXJyb3Ip
CiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IFNlYXJjaFBvcHVwTWVudURCOjpj
cmVhdGVQcmVwYXJlZFN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRvIHN0
YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBz
cWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1f
ZGF0YWJhc2UsIHNxbCk7CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwogICAg
IEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gU1FMSVRFX09LKTsKICAgICByZXR1cm4gc3RhdGVt
ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAppbmRl
eCBkYmY5OWE0NWNlNzAzYTlkODU3YTBlNjAxOWQ2ODA2ZGQxMWZhMTdiLi4yNDEwMDNhMTAwMzFh
M2Q3ZTZkN2FhMWUyNGE0OWNiOTg5ODIwY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vV0NEYXRhT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFNURE1FVEhPRElNUCBX
Q0RhdGFPYmplY3Q6OlNldERhdGEoRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBTVEdNRURJVU0qIHBt
ZWRpdW0sIEJPCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAgICByZXR1
cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0byBmZXRjID0gc3RkOjptYWtlX3VuaXF1ZTxGT1JNQVRF
VEM+KCk7CisgICAgYXV0byBmZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0Z01lZGl1bURl
bGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5KGZldGMuZ2V0
KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAKaW5kZXggYzAwNGZjOWU3MDRhNmFkMzIzNDlmYjgyNGNkYzVkZGQwMzYwMWI1Yy4uNDc5ODFh
ZTY5OTFkYzY0OTE1MjBmYzgyNDMyZWNjNDk1ODY0NDNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBGaQogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogCi0gICAgYXV0byBidWls
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlvdXNFZmZlY3Qp
OworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZp
b3VzRWZmZWN0KTsKICAgICBtX3NvdXJjZUFscGhhID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChT
b3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpKTsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0RWxlbWVu
dCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4o
KmZpbHRlcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4
TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlv
dXQuY3BwCmluZGV4IDAxMzM3ODdkOWQzMDYyYjFjYTc5YjE2MDc5NjNmMjBjMTA3MWVkNTMuLmJk
M2M5YmVlODcyOTg2ZWM2MWIxYTMwYTA0OTViOGMwYTI2ZmQ2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcApAQCAtODIsNyArODIsNyBAQCBz
dGF0aWMgdm9pZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIsIElu
bGluZUl0ZXJhdG9yIGl0ZXIpCiAKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gY3Jl
YXRlUnVuKGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0JiBvYmosIElubGluZUJpZGlS
ZXNvbHZlciYgcmVzb2x2ZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1
bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaWRpUnVuPihzdGFydCwgZW5kLCBvYmosIHJlc29sdmVy
LmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogfQogCiB2b2lkIENvbXBsZXhMaW5lTGF5b3V0
OjphcHBlbmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBpbnQgc3Rh
cnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
dmVyKQpAQCAtMTMwLDEyICsxMzAsMTIgQEAgdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5k
UnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXIKIHN0ZDo6
dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9vdElu
bGluZUJveCgpCiB7CiAgICAgaWYgKGlzPFJlbmRlclNWR1RleHQ+KG1fZmxvdykpIHsKLSAgICAg
ICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25jYXN0
PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOworICAgICAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8
U1ZHUm9vdElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSk7CiAgICAg
ICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0dXJuIGJv
eDsKICAgICB9CiAgICAgICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJvb3RJbmxp
bmVCb3g+KG1fZmxvdyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4obV9m
bG93KTsKIH0KIAogUm9vdElubGluZUJveCogQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZUFuZEFw
cGVuZFJvb3RJbmxpbmVCb3goKQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW5saW5lIEJpZGlSdW4q
IENvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlzdDxCaWRp
UnVuPiYgYmkKICAgICAgICAgd2hpbGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNlQ29udGV4
dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBiYXNlQ29udGV4dCA9IHBhcmVudDsKIAotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBzdGQ6Om1ha2VfdW5p
cXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxp
bmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IG1ha2VVbmlx
dWU8QmlkaVJ1bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFpbGlu
Z1NwYWNlUnVuLT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFMKTsKICAg
ICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAgICAgICAgdHJh
aWxpbmdTcGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuLmdldCgpOwogICAgICAgICBpZiAoZGlyZWN0
aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKQEAgLTE2MTcsNyArMTYxNyw3IEBAIHZvaWQgQ29t
cGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZChMaW5lTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlKQogICAgICAgICBpZiAobGF5b3V0U3RhdGUuY2hlY2tGb3JGbG9hdHNGcm9tTGFz
dExpbmUoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21WaXN1YWxPdmVyZmxvdyA9
IGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygpOwogICAgICAgICAg
ICAgTGF5b3V0VW5pdCBib3R0b21MYXlvdXRPdmVyZmxvdyA9IGxhc3RSb290Qm94KCktPmxvZ2lj
YWxCb3R0b21MYXlvdXRPdmVyZmxvdygpOwotICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7Cisg
ICAgICAgICAgICBhdXRvIG5ld0xpbmVCb3ggPSBtYWtlVW5pcXVlPFRyYWlsaW5nRmxvYXRzUm9v
dElubGluZUJveD4obV9mbG93KTsKICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdGbG9hdHNMaW5l
Qm94ID0gbmV3TGluZUJveC5nZXQoKTsKICAgICAgICAgICAgIG1fbGluZUJveGVzLmFwcGVuZExp
bmVCb3goV1RGTW92ZShuZXdMaW5lQm94KSk7CiAgICAgICAgICAgICB0cmFpbGluZ0Zsb2F0c0xp
bmVCb3gtPnNldENvbnN0cnVjdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9h
dGluZ09iamVjdHMuY3BwCmluZGV4IDRjZGQxMzljNDg3NTE2ZWEwZTdiMTIxM2I3MDNiZDM0Mjdh
YjAxOGMuLmE2YzY0ODE4YzQ5NzQ1NjA5MGY2NjIzYzMwNGI1ZDYyNzcwN2FlNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIEZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gmIHJlbmRlcmVyLCBU
eXBlIHR5cGUsIGNvbnN0IExheW91dFJlY3QmCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09i
amVjdD4gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyKQogewotICAg
IGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIp
OworICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIp
OwogICAgIG9iamVjdC0+c2V0U2hvdWxkUGFpbnQoIXJlbmRlcmVyLmhhc1NlbGZQYWludGluZ0xh
eWVyKCkpOyAvLyBJZiBhIGxheWVyIGV4aXN0cywgdGhlIGZsb2F0IHdpbGwgcGFpbnQgaXRzZWxm
LiBPdGhlcndpc2Ugc29tZW9uZSBlbHNlIHdpbGwuCiAgICAgb2JqZWN0LT5zZXRJc0Rlc2NlbmRh
bnQodHJ1ZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94
JiByZW5kZXJlcikKIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09i
amVjdDo6Y29weVRvTmV3Q29udGFpbmVyKExheW91dFNpemUgb2Zmc2V0LCBib29sIHNob3VsZFBh
aW50LCBib29sIGlzRGVzY2VuZGFudCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZyYW1l
UmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdpbk9m
ZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZyYW1lUmVj
dCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdpbk9mZnNl
dCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEZs
b2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQoKSBjb25zdAog
ewotICAgIGF1dG8gY2xvbmVPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0
PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9mZnNldCwgbV9zaG91
bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOworICAgIGF1dG8gY2xvbmVPYmplY3QgPSBtYWtlVW5p
cXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBtX21h
cmdpbk9mZnNldCwgbV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOwogICAgIGNsb25lT2Jq
ZWN0LT5tX3BhZ2luYXRpb25TdHJ1dCA9IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIGNsb25lT2Jq
ZWN0LT5tX2lzUGxhY2VkID0gbV9pc1BsYWNlZDsKICAgICByZXR1cm4gY2xvbmVPYmplY3Q7CkBA
IC0zNzIsNyArMzcyLDcgQEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQbGFjZWRGbG9h
dHNUcmVlKCkKICAgICBpZiAobV9zZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0VHJl
ZT4oKTsKKyAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0
VHJlZT4oKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NldC5iZWdpbigpLCBlbmQgPSBtX3NldC5l
bmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGlu
Z09iamVjdCA9IGl0LT5nZXQoKTsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5pc1BsYWNl
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IGM3MmQwMWQ4MWM3ZDcxNjYxNTc5
ZTNiYTAxODMwZTQyOWQzMGY2ODguLjFlOTExYWU2MGE2MTI2ODlhNDk3ZmYyZDViN2YwZDUwYjg3
ZTI5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEo
dW5zaWduZWQgZml4ZWRUcmFja1NwYQogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1Ry
YWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDog
bV9ncmlkWzBdLnNpemUoKTsKICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRPZlZh
cnlpbmdUcmFja0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgIGlmIChpc0Vt
cHR5QXJlYUVub3VnaChyb3dTcGFuLCBjb2x1bW5TcGFuKSkgewotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRBcmVhPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRBcmVhPihH
cmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRl
eCArIHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1
bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNw
YW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyBy
b3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5k
ZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CiAgICAgICAgICAgICAvLyBBZHZhbmNl
IHRoZSBpdGVyYXRvciB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdlIHdvdWxkIHJl
dHVybiB0aGUgc2FtZSBncmlkIGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAgICAgICsrdmFy
eWluZ1RyYWNrSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAppbmRleCA1ZmMz
MjgxNTNhNmQ4YmZjNDg4M2JhNTEyMWNjYTBiZjZmMmU5OWQwLi42NjA5MDk4ZjljODcwNDY4ODEx
NDE4YWIxNzgyOTQxN2JlZTJkMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgR3Jp
ZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQoSXRlbVBv
c2l0aW9uIHByZWZlcmVuCiAKICAgICAvLyBMb29raW5nIGZvciBhIGNvbXBhdGlibGUgYmFzZWxp
bmUtc2hhcmluZyBncm91cC4KICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2VsaW5lQ29u
dGV4dD4oY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CisgICAgICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEJhc2VsaW5lQ29udGV4dD4oY2hpbGQs
IHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8q
IGNvbnRleHQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgICAgICBjb250
ZXh0LT51cGRhdGVTaGFyZWRHcm91cChjaGlsZCwgcHJlZmVyZW5jZSwgYXNjZW50LCBkZXNjZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5jcHAKaW5kZXggYWRkZWRjNDI4YjFmMmZkYjM1MDNlODEyNjI2Yjk3NjkzYTNlN2I1
Zi4uYjJiMDExYmRmNzQ5MWIzNWFiMWRiYjdhYzZiMjYzOTYxNzIxY2NhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
QEAgLTY4MSw3ICs2ODEsNyBAQCBkb3VibGUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21w
dXRlRmxleEZhY3RvclVuaXRTaXplKGNvbnN0IFZlY3RvcjxHcmlkVHJhYwogICAgICAgICAgICAg
bGVmdE92ZXJTcGFjZSAtPSBiYXNlU2l6ZTsKICAgICAgICAgICAgIGZsZXhGYWN0b3JTdW0gLT0g
ZmxleEZhY3RvcjsKICAgICAgICAgICAgIGlmICghdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSkK
LSAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gc3RkOjptYWtlX3Vu
aXF1ZTxUcmFja0luZGV4U2V0PigpOworICAgICAgICAgICAgICAgIHRyYWNrc1RvVHJlYXRBc0lu
ZmxleGlibGUgPSBtYWtlVW5pcXVlPFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAgICB0cmFj
a3NUb1RyZWF0QXNJbmZsZXhpYmxlLT5hZGQoaW5kZXgpOwogICAgICAgICAgICAgdmFsaWRGbGV4
RmFjdG9yVW5pdCA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMjYwLDEwICsxMjYwLDEwIEBAIHZv
aWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cChHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCB1bnNpZ25lCiAgICAgbV9zaXppbmdPcGVyYXRpb24gPSBzaXppbmdPcGVy
YXRpb247CiAgICAgc3dpdGNoIChtX3NpemluZ09wZXJhdGlvbikgewogICAgIGNhc2UgSW50cmlu
c2ljU2l6ZUNvbXB1dGF0aW9uOgotICAgICAgICBtX3N0cmF0ZWd5ID0gc3RkOjptYWtlX3VuaXF1
ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBt
YWtlVW5pcXVlPEluZGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBUcmFja1NpemluZzoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91
bmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKKyAgICAgICAgbV9zdHJhdGVneSA9
IG1ha2VVbmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5k
ZXggNzNiMzY1NDc2NzE0MGEwMzcwZTRkNTY5NTZlNTRmMjY3NGI1OGIzNi4uYjNjNDAwNzkwMmRm
NjA0ODYyYTVhYzdjMjk5OGNiYWQ3M2YxMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtOTYsNyArOTYsNyBAQCBIaXRUZXN0UmVzdWx0OjpIaXRU
ZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pc092ZXJXaWRn
ZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0
IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBv
dGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpv
dGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNlZFRl
c3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5vZGVT
ZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIH0KIAogSGl0VGVz
dFJlc3VsdDo6fkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7CkBAIC0xMTMsNyArMTEzLDcgQEAg
SGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1
bHQmIG90aGVyKQogICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CiAK
ICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0IGhpdCB0ZXN0Lgot
ICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCA/
IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkg
OiBudWxscHRyOworICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJl
c3VsdCkgOiBudWxscHRyOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjkwLDE0ICs2OTAs
MTQgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3Ro
ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXEKIGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5vZGVT
ZXQmIEhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQoKSBjb25zdAogewogICAgIGlm
ICghbV9saXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJl
c3VsdCA9IG1ha2VVbmlxdWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVz
dFJlc3VsdDsKIH0KIAogSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJlc3VsdDo6bXV0
YWJsZUxpc3RCYXNlZFRlc3RSZXN1bHQoKQogewogICAgIGlmICghbV9saXN0QmFzZWRUZXN0UmVz
dWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5v
ZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG1ha2VVbmlxdWU8Tm9k
ZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3VsdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCA0M2M2NTM4NzZjZjk4NGE2
MmI2ZmM5Mjk0NWQzZGQ2OTBjYTNlZGI5Li4xNWZkZTU0ZGU1ZDM0OTkyMDgyZDQzOWEyOTBhNTFm
OTI1Y2MyZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRl
cmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApA
QCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbnVtYmVyT2ZJc29sYXRl
QW5jZXN0b3JzKGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdGVyKQogLy8gb2YgQmlkaVJlc29sdmVy
IHdoaWNoIGtub3dzIG5vdGhpbmcgYWJvdXQgUmVuZGVyT2JqZWN0cy4KIHN0YXRpYyBpbmxpbmUg
dm9pZCBhZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKElubGluZUJpZGlSZXNvbHZl
ciYgcmVzb2x2ZXIsIFJlbmRlck9iamVjdCYgb2JqLCB1bnNpZ25lZCBwb3MsIFJlbmRlckVsZW1l
bnQmIHJvb3QpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0g
c3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250ZXh0
KCksIHJlc29sdmVyLmRpcigpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gaXNvbGF0
ZWRSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KHBvcywgcG9zLCBvYmosIHJlc29sdmVyLmNvbnRl
eHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogICAgIC8vIEZJWE1FOiBpc29sYXRlZFJ1bnMoKSBjb3Vs
ZCBiZSBhIGhhc2ggb2Ygb2JqZWN0LT5ydW4gYW5kIHRoZW4gd2UgY291bGQgY2hlYXBseQogICAg
IC8vIEFTU0VSVCBoZXJlIHRoYXQgd2UgZGlkbid0IGNyZWF0ZSBtdWx0aXBsZSBvYmplY3RzIGZv
ciB0aGUgc2FtZSBpbmxpbmUuCiAgICAgcmVzb2x2ZXIuc2V0V2hpdGVzcGFjZUNvbGxhcHNpbmdU
cmFuc2l0aW9uRm9ySXNvbGF0ZWRSdW4oKmlzb2xhdGVkUnVuLCByZXNvbHZlci53aGl0ZXNwYWNl
Q29sbGFwc2luZ1N0YXRlKCkuY3VycmVudFRyYW5zaXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwCmluZGV4IDI4NWFhNWY5ZmU5YmFlN2RmYzg1
MjhjMjRjMWQ1NTY3ZDQxMjlmZjMuLjk2YWY5NWE0NTU2OTUwZTgxMjZiOTUzNzM1MzRkNDc2ZGFl
MzU2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3Bw
CkBAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBSZWN0TGlzdCYgcmVjdExpc3QpCiAvLyBDaGVja2luZyBmb3Igb3Zlcmxh
cCBpbnZvbHZlcyBmaW5kaW5nIHRoZSBub2RlIGZvciB0aGUgY2xpcHBpbmcgbGF5ZXIgZW5jbG9z
aW5nIHRoZSBnaXZlbiBsYXllciAob3IgdGhlIHJvb3QpLAogLy8gYW5kIGNvbXBhcmluZyBhZ2Fp
bnN0IHRoZSBib3VuZHMgb2YgZWFybGllciBzaWJsaW5ncy4KIGNsYXNzIE92ZXJsYXBNYXBDb250
YWluZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE92ZXJs
YXBNYXBDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXImIHJvb3RMYXllcikKICAgICAgICAgOiBt
X3Jvb3RTY29wZShyb290TGF5ZXIpCkBAIC0yOTYsNyArMjk3LDcgQEAgYm9vbCBMYXllck92ZXJs
YXBNYXA6Om92ZXJsYXBzTGF5ZXJzKGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY29uc3QgTGF5
b3V0UmVjdCYKIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5l
cigpCiB7Ci0gICAgbV9vdmVybGFwU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8T3Zlcmxh
cE1hcENvbnRhaW5lcj4obV9yb290TGF5ZXIpKTsKKyAgICBtX292ZXJsYXBTdGFjay5hcHBlbmQo
bWFrZVVuaXF1ZTxPdmVybGFwTWFwQ29udGFpbmVyPihtX3Jvb3RMYXllcikpOwogfQogCiB2b2lk
IExheWVyT3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNGRiYTNmMWM0MTA1YWZiMGU4ZTRjNzZh
N2NmY2I5ZTVmZmY3MTg1NC4uMDAxOTI1ODgyZTUwMjhjOGEyMDk5YjRiYmRlMzczMTY1YjRhMjRm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMDQsNyAr
MTA0LDcgQEAgc3RhdGljIHZvaWQgaW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMoY29uc3Qg
UmVuZGVyQmxvY2smIGNvbnRhaW5lciwgUmVuZGVyQm8KICAgICB9CiAgICAgCiAgICAgYXV0byYg
ZGVzY2VuZGFudFNldCA9IHBlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+ZW5zdXJlKCZjb250
YWluZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tlZFJlbmRl
cmVyTGlzdEhhc2hTZXQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYWNrZWRSZW5k
ZXJlckxpc3RIYXNoU2V0PigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGJvb2wg
YWRkZWQgPSBkZXNjZW5kYW50U2V0LT5hZGQoJmRlc2NlbmRhbnQpLmlzTmV3RW50cnk7CkBAIC0x
MTUsNyArMTE1LDcgQEAgc3RhdGljIHZvaWQgaW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMo
Y29uc3QgUmVuZGVyQmxvY2smIGNvbnRhaW5lciwgUmVuZGVyQm8KICAgICB9CiAgICAgCiAgICAg
YXV0byYgY29udGFpbmVyU2V0ID0gcGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+ZW5zdXJlKCZk
ZXNjZW5kYW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8
Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SGFzaFNl
dDxjb25zdCBSZW5kZXJCbG9jayo+PigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAg
IEFTU0VSVCghY29udGFpbmVyU2V0LT5jb250YWlucygmY29udGFpbmVyKSk7CkBAIC0xNjEsNyAr
MTYxLDcgQEAgY2xhc3MgUG9zaXRpb25lZERlc2NlbmRhbnRzTWFwIHsKICAgICAgICAgfQogCiAg
ICAgICAgIGF1dG8mIGRlc2NlbmRhbnRzID0gbV9kZXNjZW5kYW50c01hcC5lbnN1cmUoJmNvbnRh
aW5pbmdCbG9jaywgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJh
Y2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogCiAgICAgICAgIGJvb2wgaXNOZXdFbnRyeSA9IG1vdmVEZXNjZW5kYW50VG9FbmQgPT0g
TW92ZURlc2NlbmRhbnRUb0VuZDo6WWVzID8gZGVzY2VuZGFudHMtPmFwcGVuZE9yTW92ZVRvTGFz
dCgmcG9zaXRpb25lZERlc2NlbmRhbnQpLmlzTmV3RW50cnkKQEAgLTUyOCw3ICs1MjgsNyBAQCBz
dGF0aWMgaW5saW5lIFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKiBjdXJy
ZW50VXBkYXRlU2Nyb2xsSW5mb0FmdAogdm9pZCBSZW5kZXJCbG9jazo6YmVnaW5VcGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpCiB7CiAgICAgaWYgKCF1cGRhdGVTY3JvbGxJ
bmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkpCi0gICAgICAgIHVwZGF0ZVNjcm9sbElu
Zm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVsYXll
ZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpID0gbWFrZVVuaXF1ZTxEZWxheWVkVXBkYXRlU2Nyb2xs
SW5mb1N0YWNrPigpOwogICAgIGlmICh1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2Fj
dGlvblN0YWNrKCktPmlzRW1wdHkoKSB8fCBjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5
b3V0VHJhbnNhY3Rpb24oKS0+dmlldyAhPSAmdmlldygpKQogICAgICAgICB1cGRhdGVTY3JvbGxJ
bmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCktPmFwcGVuZChVcGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbih2aWV3KCkpKTsKICAgICArK2N1cnJlbnRVcGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpLT5uZXN0ZWRDb3VudDsKQEAgLTYyMCw3ICs2
MjAsNyBAQCBzdGF0aWMgUmVuZGVyQmxvY2tSYXJlRGF0YSYgZW5zdXJlQmxvY2tSYXJlRGF0YShj
b25zdCBSZW5kZXJCbG9jayYgYmxvY2spCiAgICAgCiAgICAgYXV0byYgcmFyZURhdGEgPSBnUmFy
ZURhdGFNYXAtPmFkZCgmYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
IXJhcmVEYXRhKQotICAgICAgICByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxv
Y2tSYXJlRGF0YT4oKTsKKyAgICAgICAgcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJlbmRlckJsb2Nr
UmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA3ZjFlNjM5NzA2M2Jl
NGY4ZGY5YjU3ZjE3NWQ2ZTI2ZTc4ZWZiMTM0Li5iODY0MmQxNzIwM2JkNGJmMjViZGUxNzFmOTg3
MGFmN2Q1YTQzYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcApAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJ
bmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlCiAgICAg
bV9zaW1wbGVMaW5lTGF5b3V0ID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9jb21wbGV4TGluZUxh
eW91dCkKLSAgICAgICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29t
cGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICAgICAgbV9jb21wbGV4TGluZUxheW91dCA9IG1h
a2VVbmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKIAogICAgIG1fY29tcGxleExpbmVM
YXlvdXQtPmxheW91dExpbmVCb3hlcyhyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRv
cCwgcmVwYWludExvZ2ljYWxCb3R0b20pOwogfQpAQCAtMjAxOSw3ICsyMDE5LDcgQEAgdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVHcmlkQm94KCkKICAgICAKICAgICBzZXRMaW5lR3Jp
ZEJveCgwKTsKIAotICAgIGF1dG8gbGluZUdyaWRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFJvb3RJ
bmxpbmVCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGxpbmVHcmlkQm94ID0gbWFrZVVuaXF1ZTxSb290
SW5saW5lQm94PigqdGhpcyk7CiAgICAgbGluZUdyaWRCb3gtPnNldEhhc1RleHRDaGlsZHJlbigp
OyAvLyBOZWVkZWQgdG8gbWFrZSB0aGUgbGluZSBhc2NlbnQvZGVzY2VudCBhY3R1YWxseSBiZSBo
b25vcmVkIGluIHF1aXJrcyBtb2RlLgogICAgIGxpbmVHcmlkQm94LT5zZXRDb25zdHJ1Y3RlZCgp
OwogICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwIHRleHRCb3hEYXRhTWFwOwpA
QCAtMjI2MCw3ICsyMjYwLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRGbG9hdGlu
Z09iamVjdHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgUGFpbnQKIAogdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cygpCiB7Ci0gICAgbV9mbG9hdGluZ09i
amVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0cz4oKnRoaXMpOworICAgIG1f
ZmxvYXRpbmdPYmplY3RzID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsKIH0K
IAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZWN0cygpCkBAIC0zNjc3
LDcgKzM2NzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlTGluZUJveGVzKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2NvbXBsZXhMaW5lTGF5b3V0KTsKLSAgICBt
X2NvbXBsZXhMaW5lTGF5b3V0ID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4TGluZUxheW91dD4o
KnRoaXMpOworICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5l
TGF5b3V0PigqdGhpcyk7CiAKICAgICBpZiAoU2ltcGxlTGluZUxheW91dDo6Y2FuVXNlRm9yTGlu
ZUJveFRyZWUoKnRoaXMsICptX3NpbXBsZUxpbmVMYXlvdXQpKSB7CiAgICAgICAgIFNpbXBsZUxp
bmVMYXlvdXQ6OmdlbmVyYXRlTGluZUJveFRyZWUoKnRoaXMsICptX3NpbXBsZUxpbmVMYXlvdXQp
OwpAQCAtMzczNSw3ICszNzM1LDcgQEAgUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dS
YXJlRGF0YSYgUmVuZGVyQmxvY2tGbG93OjplbnN1cmVSYXJlQmxvY2tGbG93RGEKIHZvaWQgUmVu
ZGVyQmxvY2tGbG93OjptYXRlcmlhbGl6ZVJhcmVCbG9ja0Zsb3dEYXRhKCkKIHsKICAgICBBU1NF
UlQoIWhhc1JhcmVCbG9ja0Zsb3dEYXRhKCkpOwotICAgIG1fcmFyZUJsb2NrRmxvd0RhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGE+
KCp0aGlzKTsKKyAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9j
a0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CiB9CiAKICNpZiBFTkFCTEUo
VEVYVF9BVVRPU0laSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRl
eCBlMjBmYzIwNzE0YTEwZTEyMjBkMmVmZDBhOWM4YWFjYTI5OWQ4NTQxLi5hNDY3M2QxMTg4MmIz
MWU5M2YyYmE3MDkwZjIyZWUzMDYwNjhkMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBDb250cm9sU3RhdGVzUmVuZGVy
ZXJNYXAmIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpCiBzdGF0aWMgQ29udHJvbFN0YXRlcyog
Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIpCiB7CiAg
ICAgcmV0dXJuIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmVuc3VyZSgmcmVuZGVyZXIsIFtd
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbFN0YXRlcz4oKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udHJvbFN0YXRlcz4oKTsKICAgICB9KS5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTIxMTUsNyArMjExNSw3IEBAIExheW91dFNpemUgUmVu
ZGVyQm94OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lciwgY29u
c3QgTGF5b3V0CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJCb3g6
OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
RWxlbWVudEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1lbnRC
b3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVs
bExheW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCmluZGV4IDQyNDMwZGY4YmE3YjZhYjg2MzIzMjhlNjJlZjkyNTcwMWFmM2I3Nzgu
LmNkY2E0NThhMWMxZjQwZTk2OTYyMDRjZjQ2OGQ5OTE0ZWRhMjRlYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjUzOCw3
ICsyNTM4LDcgQEAgYXV0byBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9u
Q2hhaW5Ob2RlKCkgLT4gQ29udGludWF0aW9uQ2hhaW5Ob2QKIHsKICAgICBzZXRIYXNDb250aW51
YXRpb25DaGFpbk5vZGUodHJ1ZSk7CiAgICAgcmV0dXJuICpjb250aW51YXRpb25DaGFpbk5vZGVN
YXAoKS5lbnN1cmUodGhpcywgWyZdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q29udGludWF0aW9uQ2hhaW5Ob2RlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IDIy
MTA0NDM0ZTQ1ZDZjOTg0NzZmZmQyOWFiNTUwYmQ2MmFjNDA4ZmUuLmMxZTAzZjA5N2VmNTlhZDVh
MTZiMTk0YzljMDVkNjQ5ZjdmZjE1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgQ291bnRlck5vZGUqIG1h
a2VDb3VudGVyTm9kZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgQXRvbVN0cmluZyYg
aQogICAgIGlmIChwbGFjZS5wYXJlbnQpCiAgICAgICAgIHBsYWNlLnBhcmVudC0+aW5zZXJ0QWZ0
ZXIobmV3Tm9kZSwgcGxhY2UucHJldmlvdXNTaWJsaW5nLmdldCgpLCBpZGVudGlmaWVyKTsKIAot
ICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyTWFwPigpKS5p
dGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7CisgICAg
bWFwcy5hZGQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPENvdW50ZXJNYXA+KCkpLml0ZXJhdG9yLT52
YWx1ZS0+YWRkKGlkZW50aWZpZXIsIG5ld05vZGUuY29weVJlZigpKTsKICAgICByZW5kZXJlci5z
ZXRIYXNDb3VudGVyTm9kZU1hcCh0cnVlKTsKIAogICAgIGlmIChuZXdOb2RlLT5wYXJlbnQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIuY3BwCmluZGV4IDUxYTllNDY4NDM0NGQyNjM3ZDA0YTkxZmI1OWEzY2Q2ZWY4ZjA2ZWQuLjdm
NmNhYmMwNTkxMjEwODFjNGQ3Mjg2MDIxOWJkNGI5Yzg1Yjk0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcApAQCAtMzAz
LDcgKzMwMyw3IEBAIFJlbmRlckJveEZyYWdtZW50SW5mbyogUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXI6OnNldFJlbmRlckJveEZyYWdtZW50SW5mbyhjb25zdCBSCiB7CiAgICAgQVNTRVJUKGlzVmFs
aWQoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94
SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gsIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNl
dCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJCb3hGcmFnbWVudEluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJC
b3hGcmFnbWVudEluZm8uYWRkKGJveCwgbWFrZVVuaXF1ZTxSZW5kZXJCb3hGcmFnbWVudEluZm8+
KGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBjb250YWluaW5nQmxvY2tDaGFp
bklzSW5zZXQpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuIGJveEluZm8uZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVk
Rmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cu
Y3BwCmluZGV4IDQ0ZjU2MzViYTUzYWUzZjdlOTRkN2FjOGU0OTY3MzkwZjU4YzJlNTYuLjg0NmRk
M2EwMmFhODZhYWY3MTVjMDk0ZThjMzUwYzE2NmE4NjdiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcApAQCAtMTExNSw3ICsxMTE1
LDcgQEAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIFJlbmRlckZyYWdtZW50ZWRGbG93OjpjdXJy
ZW50RnJhZ21lbnQoKSBjb25zdAogQ29udGFpbmluZ0ZyYWdtZW50TWFwJiBSZW5kZXJGcmFnbWVu
dGVkRmxvdzo6Y29udGFpbmluZ0ZyYWdtZW50TWFwKCkKIHsKICAgICBpZiAoIW1fbGluZVRvRnJh
Z21lbnRNYXApCi0gICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKKyAgICAgICAgbV9saW5lVG9GcmFnbWVudE1hcCA9
IG1ha2VVbmlxdWU8Q29udGFpbmluZ0ZyYWdtZW50TWFwPigpOwogCiAgICAgcmV0dXJuICptX2xp
bmVUb0ZyYWdtZW50TWFwLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHZW9tZXRyeU1hcC5jcHAKaW5kZXggYjkwNDVlNjc5MDg3M2FiZjgxYTkwZGZhNWJiYjEx
MDkzYzY3N2IwMi4uNTJjNzkwZDRlNTc4OWIxNzhlMjZjOGFiZDhiYTdiMTNjYzU5MTUxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCkBAIC0y
MTgsNyArMjE4LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaChjb25zdCBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk0KICAgICAKICAgICBSZW5kZXJH
ZW9tZXRyeU1hcFN0ZXAmIHN0ZXAgPSBtX21hcHBpbmdbbV9pbnNlcnRpb25Qb3NpdGlvbl07CiAg
ICAgaWYgKCF0LmlzSW50ZWdlclRyYW5zbGF0aW9uKCkpCi0gICAgICAgIHN0ZXAubV90cmFuc2Zv
cm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKKyAgICAgICAg
c3RlcC5tX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHQpOwog
ICAgIGVsc2UKICAgICAgICAgc3RlcC5tX29mZnNldCA9IExheW91dFNpemUodC5lKCksIHQuZigp
KTsKIApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hWaWV3
KGNvbnN0IFJlbmRlclZpZXcqIHZpZXcsIGNvbnN0IExheW91dFNpemUmIHNjcm9sCiAgICAgUmVu
ZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25d
OwogICAgIHN0ZXAubV9vZmZzZXQgPSBzY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHQpCi0gICAgICAg
IHN0ZXAubV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4
PigqdCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0
aW9uTWF0cml4PigqdCk7CiAgICAgCiAgICAgc3RlcEluc2VydGVkKHN0ZXApOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IGUzNWEyYzEzMjI1ZDQ3MjVjZDg4
YzIyZjZkMDRjY2M5ZDBmMzQ5N2YuLjQ5YWQwMzU1NTM3MzQyMjVmMWRkZDYzM2I0MmMxMzgzMmNj
ZWZiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTU0NCw3
ICs1NDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJlbmRlckdy
aWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYQogICAgIHVuc2lnbmVkIGxhc3RBdXRv
UmVwZWF0VHJhY2sgPSBmaXJzdEF1dG9SZXBlYXRUcmFjayArIGdyaWQuYXV0b1JlcGVhdFRyYWNr
cyhkaXJlY3Rpb24pOwogCiAgICAgaWYgKCFncmlkLmhhc0dyaWRJdGVtcygpKSB7Ci0gICAgICAg
IGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNl
dD4oKTsKKyAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFj
a0luZGV4U2V0PigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIHRyYWNrSW5kZXggPSBmaXJzdEF1
dG9SZXBlYXRUcmFjazsgdHJhY2tJbmRleCA8IGxhc3RBdXRvUmVwZWF0VHJhY2s7ICsrdHJhY2tJ
bmRleCkKICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAg
ICAgfSBlbHNlIHsKQEAgLTU1Miw3ICs1NTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRy
YWNrSW5kZXhTZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYQog
ICAgICAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKGdyaWQsIGRpcmVjdGlvbiwgdHJhY2tJ
bmRleCk7CiAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFlbXB0eVRyYWNrSW5kZXhlcykKLSAgICAgICAgICAgICAgICAgICAg
ZW1wdHlUcmFja0luZGV4ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0
PigpOworICAgICAgICAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IG1ha2VVbmlxdWU8
T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4
ZXMtPmFkZCh0cmFja0luZGV4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzMyLDcg
KzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gUmVuZGVyR3JpZDo6Y3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0CiAgICAgY29uc3QgdW5zaWduZWQgZW5k
T2ZDcm9zc0RpcmVjdGlvbiA9IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1
bnNpZ25lZCBjcm9zc0RpcmVjdGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpz
cGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAg
R3JpZFNwYW4gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERl
ZmluaXRlR3JpZFNwYW4oZW5kT2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiAr
IGNyb3NzRGlyZWN0aW9uU3BhblNpemUpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdy
aWRBcmVhPihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9u
UG9zaXRpb25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywg
c3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBj
cm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVj
aWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuZGVy
Qm94Kj4mIGF1dG9HcmlkSXRlbXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAppbmRleCBmNmNiNTYxODEyZDIyMjY4NjY5ODNmM2FiOWM3NDBhNTZkYjAyNmU4
Li5jMzU1ZmYzNzFiNDExYTU4ZTc5MDZjODc3ZWFkNGI1MzQ2NzE1YmM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgY29u
c3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxl
bWVudCwgV1RGTW92ZShzdHlsZSksIEludFNpemUoKSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShz
dHlsZUltYWdlID8gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZT4oKnN0eWxlSW1hZ2UpIDogc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigp
KQorICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBtYWtlVW5pcXVlPFJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBtYWtlVW5pcXVlPFJlbmRlcklt
YWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyhpbWFnZURldmlj
ZVBpeGVsUmF0aW8pCiB7CiAgICAgdXBkYXRlQWx0VGV4dCgpOwpAQCAtMTQ0LDcgKzE0NCw3IEBA
IFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsCiAKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShEb2N1
bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1h
Z2UpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIEludFNp
emUoKSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9pbWFnZVJlc291cmNlKHN0
eWxlSW1hZ2UgPyBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5
bGVJbWFnZSkgOiBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggOWQ4YTY1OTM0YmEz
ZmQyNTQ3NGMzOWM5MWZlZWM0M2FhMGM5ZjlmNS4uMTUzMjVjZGExNjkwNjdhNTY5MWI4ODVhOGRm
ZGM3YWE5MDM2NDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKQEAgLTExMDAsNyArMTEwMCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpkZWxldGVMaW5lcygp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUlu
bGluZUZsb3dCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZsb3dC
b3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7
CiB9CiAKIElubGluZUZsb3dCb3gqIFJlbmRlcklubGluZTo6Y3JlYXRlQW5kQXBwZW5kSW5saW5l
Rmxvd0JveCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAy
NzZjZTgyNzJiY2RiMzM2NDU0MWRlNDYxMTJmMmEzZjk3NDEwMTcxLi42NDA2MjhmZDY0YmQxYWRi
MmIyNjk4ODk1YWZjYzkzYTQ4MDhhYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVO
b3JtYWxGbG93TGlzdCgpCiAgICAgICAgIC8vIElnbm9yZSBub24tb3ZlcmZsb3cgbGF5ZXJzIGFu
ZCByZWZsZWN0aW9ucy4KICAgICAgICAgaWYgKGNoaWxkLT5pc05vcm1hbEZsb3dPbmx5KCkgJiYg
IWlzUmVmbGVjdGlvbkxheWVyKCpjaGlsZCkpIHsKICAgICAgICAgICAgIGlmICghbV9ub3JtYWxG
bG93TGlzdCkKLSAgICAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKKyAgICAgICAgICAgICAgICBtX25vcm1hbEZs
b3dMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAgICAg
IG1fbm9ybWFsRmxvd0xpc3QtPmFwcGVuZChjaGlsZCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03
NTYsNyArNzU2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1
ZGVIaWRkZW5MYXllcnMsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3IKICAgICBpZiAoaW5jbHVkZUhp
ZGRlbkxheWVyICYmICFpc05vcm1hbEZsb3dPbmx5KCkpIHsKICAgICAgICAgYXV0byYgbGF5ZXJM
aXN0ID0gKHpJbmRleCgpID49IDApID8gcG9zaXRpdmVaT3JkZXJMaXN0IDogbmVnYXRpdmVaT3Jk
ZXJMaXN0OwogICAgICAgICBpZiAoIWxheWVyTGlzdCkKLSAgICAgICAgICAgIGxheWVyTGlzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAgICAgICBs
YXllckxpc3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOwogICAgICAgICBs
YXllckxpc3QtPmFwcGVuZCh0aGlzKTsKICAgICB9CiAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgYm9vbCBoYWRUcmFuc2Zvcm0g
PSAhIW1fdHJhbnNmb3JtOwogICAgIGlmIChoYXNUcmFuc2Zvcm0gIT0gaGFkVHJhbnNmb3JtKSB7
CiAgICAgICAgIGlmIChoYXNUcmFuc2Zvcm0pCi0gICAgICAgICAgICBtX3RyYW5zZm9ybSA9IHN0
ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCk7CisgICAgICAgICAgICBtX3Ry
YW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gbnVsbHB0cjsKICAgICAgICAgCkBAIC01NTE5
LDcgKzU1MTksNyBAQCBSZWY8Q2xpcFJlY3RzPiBSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3Rz
KGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbgogICAgIH0KICAgICAKICAgICBp
ZiAoIW1fY2xpcFJlY3RzQ2FjaGUpCi0gICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPENsaXBSZWN0c0NhY2hlPigpOworICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0g
bWFrZVVuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9jbGlw
UmVjdHNDYWNoZS0+bV9jbGlwUmVjdHNSb290W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29u
dGV4dC5yb290TGF5ZXI7CiAgICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9zY3JvbGxiYXJSZWxldmFu
Y3lbY2xpcFJlY3RzVHlwZV0gPSBjbGlwUmVjdHNDb250ZXh0Lm92ZXJsYXlTY3JvbGxiYXJTaXpl
UmVsZXZhbmN5OwpAQCAtNjA5Nyw3ICs2MDk3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJD
bGlwUmVjdHMoQ2xpcFJlY3RzVHlwZSB0eXBlVG9DbGVhcikKIFJlbmRlckxheWVyQmFja2luZyog
UmVuZGVyTGF5ZXI6OmVuc3VyZUJhY2tpbmcoKQogewogICAgIGlmICghbV9iYWNraW5nKSB7Ci0g
ICAgICAgIG1fYmFja2luZyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJCYWNraW5nPigq
dGhpcyk7CisgICAgICAgIG1fYmFja2luZyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJCYWNraW5n
PigqdGhpcyk7CiAgICAgICAgIGNvbXBvc2l0b3IoKS5sYXllckJlY2FtZUNvbXBvc2l0ZWQoKnRo
aXMpOwogCiAgICAgICAgIHVwZGF0ZUZpbHRlclBhaW50aW5nU3RyYXRlZ3koKTsKQEAgLTY1MTUs
NyArNjUxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAKICAgICBpZiAocmVuZGVyZXIo
KS5pc0hUTUxNYXJxdWVlKCkgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLm1hcnF1ZWVCZWhhdmlvcigp
ICE9IE1hcnF1ZWVCZWhhdmlvcjo6Tm9uZSAmJiByZW5kZXJlcigpLmlzQm94KCkpIHsKICAgICAg
ICAgaWYgKCFtX21hcnF1ZWUpCi0gICAgICAgICAgICBtX21hcnF1ZWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlck1hcnF1ZWU+KHRoaXMpOworICAgICAgICAgICAgbV9tYXJxdWVlID0gbWFrZVVu
aXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKICAgICAgICAgbV9tYXJxdWVlLT51cGRhdGVNYXJx
dWVlU3R5bGUoKTsKICAgICB9IGVsc2UgaWYgKG1fbWFycXVlZSkKICAgICAgICAgbV9tYXJxdWVl
ID0gbnVsbHB0cjsKQEAgLTY3MjcsNyArNjcyNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmVuc3Vy
ZUxheWVyRmlsdGVycygpCiAgICAgaWYgKG1fZmlsdGVycykKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIG1fZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigq
dGhpcyk7CisgICAgbV9maWx0ZXJzID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllckZpbHRlcnM+KCp0
aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJMYXllckZpbHRlcnMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA3ZjE0
MzY2YTdlNTYxMTAzMzcyMDc3YmVmZTJhNjA4MzQyZjdiYTQ5Li43NWY5ZWIwZjI5N2EyMzZjN2E3
ODI1Njg2M2QwNTI4NTdiNGNkY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTYyNyw3ICsxNjI3LDcgQEAgYm9vbCBSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUFuY2VzdG9yQ2xpcHBpbmdTdGFjayhWZWN0b3I8Q29tcG9zaXRl
ZENsaXBEYXRhPiYKICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2FuY2VzdG9yQ2xpcHBpbmdTdGFj
aykgewotICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9IHN0ZDo6bWFrZV91bmlxdWU8
TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7CisgICAg
ICAgIG1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrID0gbWFrZVVuaXF1ZTxMYXllckFuY2VzdG9yQ2xp
cHBpbmdTdGFjaz4oV1RGTW92ZShjbGlwcGluZ0RhdGEpKTsKICAgICAgICAgTE9HX1dJVEhfU1RS
RUFNKENvbXBvc2l0aW5nLCBzdHJlYW0gPDwgImxheWVyICIgPDwgJm1fb3duaW5nTGF5ZXIgPDwg
IiBhbmNlc3RvckNsaXBwaW5nU3RhY2sgIiA8PCAqbV9hbmNlc3RvckNsaXBwaW5nU3RhY2spOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMTc4LDE3ICszMTc4LDE3IEBAIGJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCwgY29u
c3QgQW5pbWF0aW9uJiBhbmltCiAgICAgICAgIAogICAgICAgICBib29sIGlzRmlyc3RPckxhc3RL
ZXlmcmFtZSA9IGtleSA9PSAwIHx8IGtleSA9PSAxOwogICAgICAgICBpZiAoKGhhc1RyYW5zZm9y
bSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1By
b3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKSkKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rv
ci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oa2V5LCBr
ZXlmcmFtZVN0eWxlLT50cmFuc2Zvcm0oKSwgdGYpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZl
Y3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlm
cmFtZVN0eWxlLT50cmFuc2Zvcm0oKSwgdGYpKTsKIAogICAgICAgICBpZiAoKGhhc09wYWNpdHkg
JiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpKQotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNl
cnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5
bGUtPm9wYWNpdHkoKSwgdGYpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1h
a2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5
KCksIHRmKSk7CiAKICAgICAgICAgaWYgKChoYXNGaWx0ZXIgJiYgaXNGaXJzdE9yTGFzdEtleWZy
YW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eUZpbHRl
cikpCi0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8Rmls
dGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRmKSk7Cisg
ICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9u
VmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRmKSk7CiAKICNpZiBFTkFCTEUo
RklMVEVSU19MRVZFTF8yKQogICAgICAgICBpZiAoKGhhc0JhY2tkcm9wRmlsdGVyICYmIGlzRmly
c3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlcikpCi0gICAgICAgICAgICBiYWNrZHJvcEZpbHRl
clZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5
LCBrZXlmcmFtZVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpLCB0ZikpOworICAgICAgICAgICAgYmFj
a2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+
KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKICNlbmRpZgogICAg
IH0KIApAQCAtMzI0Myw4ICszMjQzLDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0
VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAg
ICAgY29uc3QgQW5pbWF0aW9uKiBvcGFjaXR5QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQ
cm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpOwogICAgICAgICBpZiAob3BhY2l0eUFuaW0gJiYg
IW9wYWNpdHlBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5
ZnJhbWVWYWx1ZUxpc3Qgb3BhY2l0eVZlY3RvcihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7Ci0g
ICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5p
bWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkp
KTsKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHko
KSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oMCwgY29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgp
KSkpOworICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFu
aW1hdGlvblZhbHVlPigxLCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkp
OwogICAgICAgICAgICAgLy8gVGhlIGJveFNpemUgcGFyYW0gaXMgb25seSB1c2VkIGZvciB0cmFu
c2Zvcm0gYW5pbWF0aW9ucyAod2hpY2ggY2FuIG9ubHkgcnVuIG9uIFJlbmRlckJveGVzKSwgc28g
d2UgcGFzcyBhbiBlbXB0eSBzaXplIGhlcmUuCiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xh
eWVyLT5hZGRBbmltYXRpb24ob3BhY2l0eVZlY3RvciwgRmxvYXRTaXplKCksIG9wYWNpdHlBbmlt
LCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3Bl
cnR5T3BhY2l0eSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJl
IHRoYXQgdGhlIGNvcnJlY3Qgb3BhY2l0eSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBl
bmRzLCBhbHNvIHNldCB0aGUgZmluYWwgb3BhY2l0eS4KQEAgLTMyNTgsOCArMzI1OCw4IEBAIGJv
b2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQs
IENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogdHJhbnNmb3Jt
QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9y
bSk7CiAgICAgICAgIGlmICh0cmFuc2Zvcm1BbmltICYmICF0cmFuc2Zvcm1BbmltLT5pc0VtcHR5
T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNm
b3JtVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pOwotICAgICAgICAgICAgdHJhbnNm
b3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVl
PigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0
b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEsIHRv
U3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0
KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+dHJhbnNm
b3JtKCkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAg
ICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3Is
IHNuYXBwZWRJbnRSZWN0KHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpLnNpemUoKSwgdHJh
bnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5p
bWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgdHJhbnNmb3JtIGlzIHZpc2libGUgd2hlbiB0
aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCB0cmFuc2Zvcm0uCiAgICAgICAg
ICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCp0b1N0eWxlKTsKQEAgLTMyNzIsOCArMzI3Miw4IEBA
IGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZz
ZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogZmlsdGVy
QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUZpbHRlcik7
CiAgICAgICAgIGlmIChmaWx0ZXJBbmltICYmICFmaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVy
YXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmlsdGVyVmVjdG9yKEFu
aW1hdGVkUHJvcGVydHlGaWx0ZXIpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChz
dGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRl
cigpKSk7Ci0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8
RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAg
ICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAs
IGZyb21TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQo
bWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+ZmlsdGVyKCkpKTsK
ICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJWZWN0
b3IsIEZsb2F0U2l6ZSgpLCBmaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1l
Rm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5RmlsdGVyKSwgdGltZU9mZnNldCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmaWx0ZXIgaXMgdmlz
aWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIGZpbHRlci4K
ICAgICAgICAgICAgICAgICB1cGRhdGVGaWx0ZXJzKCp0b1N0eWxlKTsKQEAgLTMyODcsOCArMzI4
Nyw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRp
bWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiog
YmFja2Ryb3BGaWx0ZXJBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpOwogICAgICAgICBpZiAoYmFja2Ryb3BGaWx0ZXJB
bmltICYmICFiYWNrZHJvcEZpbHRlckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAg
ICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBiYWNrZHJvcEZpbHRlclZlY3RvcihBbmltYXRl
ZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpOwotICAgICAgICAgICAgYmFja2Ryb3BGaWx0
ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAs
IGZyb21TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwotICAgICAgICAgICAgYmFja2Ryb3BGaWx0
ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEs
IHRvU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVy
VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5
bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9y
Lmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNr
ZHJvcEZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmlt
YXRpb24oYmFja2Ryb3BGaWx0ZXJWZWN0b3IsIEZsb2F0U2l6ZSgpLCBiYWNrZHJvcEZpbHRlckFu
aW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJv
cGVydHlXZWJraXRCYWNrZHJvcEZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgYmFja2Ryb3AgZmlsdGVyIGlzIHZpc2li
bGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBiYWNrZHJvcCBm
aWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlQmFja2Ryb3BGaWx0ZXJzKCp0b1N0eWxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKaW5kZXggYWJlNGQ0ZDY3NWEyMjE4NmUyZWE4OWQ0MTJmZmE4MTUzOGM1YzkyOS4uMzIxMjI5
ZDZmMjNjZmFlNjZhMDVhNTI4MDhkZDBiMGNiYThjMTQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI5NSw3ICsyOTUs
NyBAQCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OlJlbmRlckxheWVyQ29tcG9zaXRvcihSZW5kZXJW
aWV3JiByZW5kZXJWaWV3KQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1f
cmVuZGVyVmlldy5mcmFtZVZpZXcoKS5wbGF0Zm9ybVdpZGdldCgpKQotICAgICAgICBtX2xlZ2Fj
eVNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVdlYktp
dFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I+KHBhZ2UoKS5jaHJvbWUoKS5jbGllbnQoKSwgaXNN
YWluRnJhbWVDb21wb3NpdG9yKCkpOworICAgICAgICBtX2xlZ2FjeVNjcm9sbGluZ0xheWVyQ29v
cmRpbmF0b3IgPSBtYWtlVW5pcXVlPExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0
b3I+KHBhZ2UoKS5jaHJvbWUoKS5jbGllbnQoKSwgaXNNYWluRnJhbWVDb21wb3NpdG9yKCkpOwog
I2VuZGlmCiB9CiAKQEAgLTYxMiw3ICs2MTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6bm90aWZ5Rmx1c2hCZWZvcmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKgog
ewogICAgIGlmICghbV9sYXllclVwZGF0ZXIpIHsKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEID0gcGFnZSgpLmNocm9tZSgpLmRpc3BsYXlJRCgpOwotICAgICAgICBtX2xheWVy
VXBkYXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NMYXllclVwZGF0ZXI+KCp0aGlzLCBk
aXNwbGF5SUQpOworICAgICAgICBtX2xheWVyVXBkYXRlciA9IG1ha2VVbmlxdWU8R3JhcGhpY3NM
YXllclVwZGF0ZXI+KCp0aGlzLCBkaXNwbGF5SUQpOwogICAgIH0KICAgICAKICAgICBtX2xheWVy
VXBkYXRlci0+c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTQ3OTIsNyArNDc5Miw3IEBAIHZvaWQgTGVn
YWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENv
bnN0cmFpbmVkTGF5ZXJzCiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZXdwb3J0Q29uc3Ry
YWludHM+IGNvbnN0cmFpbnRzOwogICAgICAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNTdGlj
a2lseVBvc2l0aW9uZWQoKSkgewotICAgICAgICAgICAgY29uc3RyYWludHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21w
dXRlU3RpY2t5Vmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKKyAgICAgICAgICAgIGNvbnN0
cmFpbnRzID0gbWFrZVVuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNv
bXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAg
ICAgICAgICBjb25zdCBSZW5kZXJMYXllciogZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIg
PSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGNvbXBvc2l0b3IuaXNBc3luY1Njcm9sbGFibGVT
dGlja3lMYXllcigqbGF5ZXIsICZlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllcikgJiYgZW5j
bG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZW5j
bG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKQEAgLTQ4MDAsNyAr
NDgwMCw3IEBAIHZvaWQgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVn
aXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzCiAgICAgICAgICAgICAgICAgc3RpY2t5
Q29udGFpbmVyTWFwLmFkZChsYXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCktPnBsYXRm
b3JtTGF5ZXIoKSwgZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXItPmJhY2tpbmcoKS0+c2Ny
b2xsQ29udGFpbmVyTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChsYXllci0+cmVuZGVyZXIoKS5pc0ZpeGVkUG9zaXRpb25lZCgpKQot
ICAgICAgICAgICAgY29uc3RyYWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkUG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3Ry
YWludHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8Rml4
ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZUZpeGVkVmll
d3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29u
dGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmNwcAppbmRleCA0Yjg2ZmUyYWQxNzVkY2U4NmFkMzg1MmJkZmMxNTJmZDEzMDhk
NDVlLi4xMjhjOTZkYWUwYjMxMDA2Y2EyNWQ1YTU2YzcyMGJjODkwZDM0ZjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBA
IC05NSw3ICs5NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVy
KCkKIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRlTGF5ZXIoKQogewogICAgIEFT
U0VSVCghbV9sYXllcik7Ci0gICAgbV9sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5
ZXI+KCp0aGlzKTsKKyAgICBtX2xheWVyID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllcj4oKnRoaXMp
OwogICAgIHNldEhhc0xheWVyKHRydWUpOwogICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5
ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAK
aW5kZXggYmM1NTI3YjhjNDZhNGRlMDY2ZjY5ZTVhMzEwYzg4NjgxOTZmYzIzYS4uMWFhZTA5ZDAw
YjI2ZWEzY2FkZWE4NjcyZTI3NzkyOWJmZDE3YTYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgaW50IFJlbmRlckxp
bmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29s
IGZpcnN0TGluZSwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJlbmRlckxp
bmVCcmVhazo6Y3JlYXRlSW5saW5lQm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5l
RWxlbWVudEJveD4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0SW5saW5l
Qm94V3JhcHBlcihJbmxpbmVFbGVtZW50Qm94KiBpbmxpbmVCb3gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDliYjlhNTM5
ZDY2NDJkZjkwMDI2YTc4MmFmOGNmODRkYzQ5ZGEyYTkuLjQxMDNkYWQ0ODQ0ZGQyNGEzMDJhNzMy
YWYyMjE5YWM5MDAwMWNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChSZW5kZXJNdWx0aUNvbHVtbkZsb3cpOwogCiBSZW5kZXJNdWx0aUNvbHVt
bkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGcmFnbWVudGVkRmxvdyhkb2N1bWVudCwgV1RGTW92
ZShzdHlsZSkpCi0gICAgLCBtX3NwYW5uZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxTcGFubmVyTWFw
PigpKQorICAgICwgbV9zcGFubmVyTWFwKG1ha2VVbmlxdWU8U3Bhbm5lck1hcD4oKSkKICAgICAs
IG1fbGFzdFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCiAgICAg
LCBtX2NvbHVtbldpZHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDRkYTNiZDczNzcxYmExNzE5MGVhYzM1ZGE2MzhlMjQzZjE5MDI5MDcuLjBiZjUx
OTNkZTQ4NDQ1YmNjNjc3ZTkxNGU4YWQzZGY4MWNlYjgyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODkzLDcgKzE4OTMsNyBAQCBjb25zdCBSZW5k
ZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OnJhcmVEYXRhKCkg
Y29uc3QKIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGEmIFJlbmRlck9iamVjdDo6
ZW5zdXJlUmFyZURhdGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVy
biAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVy
biAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIFJlbmRl
ck9iamVjdDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggM2ZhYWZhMTEyMDY1MjYyM2Uw
NjVlNmEyMWNlMWM3NTFkYmE5MWEzNy4uMDNkZDA4ZmU2YjdmMGE2ZGQxNWYyMWYyMzM1Y2NhYmM1
YWYwMmE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik7CiAKIFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3QoZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9zbmFwc2hvdFJlc291cmNl
KG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsKICAgICBtX3NuYXBzaG90UmVz
b3VyY2UtPmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAKaW5kZXggMTg2Y2E4NzBlZDEwOTEzZDU4Yjg1NDllYjk2ZGUzMzZlMzQ1NTM1
OS4uZTkxYTEzMzcxOTkxMmQxOGZhNTVlMzZkODM1NTg4NTdjMmQxOGIzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBS
ZW5kZXJUYWJsZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHkKICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1MyIHNwZWMs
IHlvdSBvbmx5IHVzZSBmaXhlZCB0YWJsZSBsYXlvdXQgaWYgYW4KICAgICAgICAgLy8gZXhwbGlj
aXQgd2lkdGggaXMgc3BlY2lmaWVkIG9uIHRoZSB0YWJsZS4gIEF1dG8gd2lkdGggaW1wbGllcyBh
dXRvIHRhYmxlIGxheW91dC4KICAgICAgICAgaWYgKHN0eWxlKCkudGFibGVMYXlvdXQoKSA9PSBU
YWJsZUxheW91dFR5cGU6OkZpeGVkICYmICFzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygp
KQotICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRUYWJs
ZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxG
aXhlZFRhYmxlTGF5b3V0Pih0aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90YWJs
ZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8QXV0b1RhYmxlTGF5b3V0Pih0aGlzKTsKKyAgICAg
ICAgICAgIG1fdGFibGVMYXlvdXQgPSBtYWtlVW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7
CiAgICAgfQogCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBpbnZhbGlkYXRlIGNvbGxh
cHNlZCBib3JkZXJzIGNhY2hlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CmluZGV4IDY4YzNhMTVkOTUxNmI1YjNjN2MyZGRhYjRhZGE0MDlhNWRjMjBkZmEuLmEwMmQ5YzE2
ZjNhMjdjYzUyMjA5NzEwMmMyNjliNzU1NTA5ZDAwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6
ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5l
VGV4dEJveD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SW5saW5lVGV4dEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PElubGluZVRleHRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxp
bmVCb3goSW5saW5lVGV4dEJveCYgdGV4dEJveCkKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQg
UmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQg
b2Zmc2V0QWZ0ZXJMYXN0VHlwCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBzZWN1cmVUZXh0
VGltZXIgPSBzZWN1cmVUZXh0VGltZXJzKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKICAgICBpZiAoIXNlY3VyZVRleHRUaW1lcikKLSAgICAgICAgc2VjdXJlVGV4dFRpbWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKKyAgICAgICAgc2Vj
dXJlVGV4dFRpbWVyID0gbWFrZVVuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKICAgICBz
ZWN1cmVUZXh0VGltZXItPnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYzE0NDUxYTE4
ZWVhN2E1NzFhMjc3Nzg5OGE3OWNjOGI0M2ZmMzE0Mi4uNWZlYzY3OGM2YmI1ZGYwZTQ5MjJiMDEy
YzNmMjY4ZGJhYjRhN2I2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5n
bGUoY29uc3QgTGF5b3V0UmVjdCYgcmVwYWludFJlY3QpIGNvbnN0CiAgICAgLy8gRklYTUU6IE1h
eWJlIHRoZXJlIHNob3VsZCBiZSBhIHJlZ2lvbiB0eXBlIHRoYXQgZG9lcyB0aGlzIGF1dG9tYXRp
Y2FsbHkuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1SZXBhaW50UmVnaW9uR3Jp
ZFNpemUgPSAxNiAqIDE2OwogICAgIGlmIChtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Z3Jp
ZFNpemUoKSA+IG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUpCi0gICAgICAgIG1fYWNjdW11
bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0
ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMoKSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50
UmVnaW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5i
b3VuZHMoKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6Zmx1c2hBY2N1bXVsYXRlZFJlcGFpbnRS
ZWdpb24oKSBjb25zdApAQCAtNzI0LDcgKzcyNCw3IEBAIGJvb2wgUmVuZGVyVmlldzo6dXNlc0Nv
bXBvc2l0aW5nKCkgY29uc3QKIFJlbmRlckxheWVyQ29tcG9zaXRvciYgUmVuZGVyVmlldzo6Y29t
cG9zaXRvcigpCiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29tcG9zaXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CisgICAg
ICAgIG1fY29tcG9zaXRvciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhp
cyk7CiAKICAgICByZXR1cm4gKm1fY29tcG9zaXRvcjsKIH0KQEAgLTc0NSw3ICs3NDUsNyBAQCB2
b2lkIFJlbmRlclZpZXc6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bAogSW1hZ2VRdWFsaXR5Q29udHJvbGxlciYgUmVuZGVyVmll
dzo6aW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlUXVhbGl0eUNv
bnRyb2xsZXIpCi0gICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlz
KTsKICAgICByZXR1cm4gKm1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKIH0KIApAQCAtODM0LDcg
KzgzNCw3IEBAIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJl
Z2lvbkFjY3VtdWxhdG9yKFJlbmRlclZpZXcqIHZpZXcpCiAKICAgICBtX3dhc0FjY3VtdWxhdGlu
Z1JlcGFpbnRSZWdpb24gPSAhIXJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJl
Z2lvbjsKICAgICBpZiAoIW1fd2FzQWNjdW11bGF0aW5nUmVwYWludFJlZ2lvbikKLSAgICAgICAg
cm9vdFJlbmRlclZpZXctPm1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZWdpb24+KCk7CisgICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVw
YWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigpOwogICAgIG1fcm9vdFZpZXcgPSBtYWtl
V2Vha1B0cigqcm9vdFJlbmRlclZpZXcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHAKaW5kZXggZmRjZDU5YzUyYzVmMzI4ZjUyMDlmMDBjMWY4ZDgxNmFk
YzVmNzY2OC4uNDQ1NTg0MWFmMzJmZjE1MjUyY2ZhMjhlZDhhNjljM2U0OWYxZjMwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtMTI5LDcgKzEyOSw3
IEBAIGZsb2F0IFJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYg
ZWxsaXBzaXNTdHIsICBib29sIGx0ciwgZmxvCiAgICAgICAgIGdFbGxpcHNpc0JveE1hcCA9IG5l
dyBFbGxpcHNpc0JveE1hcCgpOwogCiAgICAgQVNTRVJUKCFoYXNFbGxpcHNpc0JveCgpKTsKLSAg
ICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIHN0ZDo6bWFr
ZV91bmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxs
aXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCks
IGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1h
cmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBhdXRvKiBlbGxpcHNpc0JveCA9
IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIG1ha2VVbmlxdWU8RWxsaXBzaXNCb3g+KGJsb2Nr
RmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBt
YXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJl
dlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKTsKICAgICBzZXRIYXNFbGxpcHNpc0JveCh0cnVlKTsKICAgICAvLyBGSVhNRTogRG8gd2Ug
bmVlZCBhbiBSVEwgdmVyc2lvbiBvZiB0aGlzPwogICAgIGlmIChsdHIgJiYgKHgoKSArIGxvZ2lj
YWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0aCkgPD0gYmxvY2tSaWdodEVkZ2UpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IDdkZjI4Mjg4YTRkNTVjMmM3ZDI2
YWQ0YmMwMTc2ZDBiNzYxNzgzNjQuLjI0N2U1NWMwNjllOWZlODgxY2FmNGJmYmMyYjRhZWYxOWUz
NjE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApAQCAtMTQ1
LDcgKzE0NSw3IEBAIGNsYXNzIFJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxvd0JveCwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFJvb3RJbmxpbmVCb3g+CiAgICAgICAgIGlmIChtX2Zsb2F0
cykKICAgICAgICAgICAgIG1fZmxvYXRzLT5hcHBlbmQobWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mbG9hdHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PENsZWFuTGluZUZsb2F0TGlzdD4oMSwgbWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKKyAgICAg
ICAgICAgIG1fZmxvYXRzID0gbWFrZVVuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VX
ZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVGbG9hdChSZW5k
ZXJCb3gmIGZsb2F0aW5nQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NlbGVjdGlvblJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0
aW9uUmFuZ2VEYXRhLmNwcAppbmRleCBlYzVlNzM1NmE2NGQxMjQ5ZGRhMTE0N2U4YmJhMzFmNDc5
MGI0YmYyLi5iOWJhZDBhMDlmMjliZjdhZGM5ZDMzM2Y0ZTgxMWMzZWExYjkzZmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApAQCAtMTMx
LDEzICsxMzEsMTMgQEAgc3RhdGljIFNlbGVjdGlvbkRhdGEgY29sbGVjdChjb25zdCBTZWxlY3Rp
b25SYW5nZURhdGE6OkNvbnRleHQmIHNlbGVjdGlvbiwgYm9vbAogICAgIHdoaWxlIChzdGFydCAm
JiBzdGFydCAhPSBzdG9wKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rp
b24oKnN0YXJ0LCBzZWxlY3Rpb24pKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3Bv
bnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3Qg
YmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVy
ZXJzLnNldChzdGFydCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3Rh
cnQsIHRydWUpKTsKKyAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChz
dGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKICAg
ICAgICAgICAgIGlmIChyZXBhaW50RGlmZmVyZW5jZSkgewogICAgICAgICAgICAgICAgIGZvciAo
YXV0byogYmxvY2sgPSBjb250YWluaW5nQmxvY2tCZWxvd1ZpZXcoKnN0YXJ0KTsgYmxvY2s7IGJs
b2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpibG9jaykpIHsKICAgICAgICAgICAgICAg
ICAgICAgYXV0byYgYmxvY2tJbmZvID0gb2xkU2VsZWN0aW9uRGF0YS5ibG9ja3MuYWRkKGJsb2Nr
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9j
a0luZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+
KCpibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVu
ZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMjEzLDEzICsyMTMsMTMgQEAgSW50UmVjdCBTZWxlY3Rp
b25SYW5nZURhdGE6OmNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQgY2xpcFRvVmlz
aWJsZUNvbnQKICAgICAgICAgaWYgKChzdGFydC0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgc3Rh
cnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25D
b250ZXh0LmVuZCgpKQogICAgICAgICAgICAgJiYgc3RhcnQtPnNlbGVjdGlvblN0YXRlKCkgIT0g
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJl
IHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5
IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIHJlbmRlcmVycy5zZXQoc3Rh
cnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBjbGlwVG9W
aXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKSk7CisgICAgICAgICAg
ICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpz
dGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olllcykp
OwogICAgICAgICAgICAgYXV0byogYmxvY2sgPSBzdGFydC0+Y29udGFpbmluZ0Jsb2NrKCk7CiAg
ICAgICAgICAgICB3aGlsZSAoYmxvY2sgJiYgIWlzPFJlbmRlclZpZXc+KCpibG9jaykpIHsKICAg
ICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4mIGJsb2Nr
SW5mbyA9IHJlbmRlcmVycy5hZGQoYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAg
ICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVj
dGlvbkluZm8+KCpibG9jaywgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNv
bnRlbnQ6Olllcyk7CisgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5k
ZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zp
c2libGVDb250ZW50OjpZZXMpOwogICAgICAgICAgICAgICAgIGJsb2NrID0gYmxvY2stPmNvbnRh
aW5pbmdCbG9jaygpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODEsNyArMjgxLDcg
QEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVj
dGlvbiwgUmVwYWludE1vZGUgYmxvY2tSZXAKICAgICBzZWxlY3Rpb25JdGVyYXRvciA9IFNlbGVj
dGlvbkl0ZXJhdG9yKHNlbGVjdGlvblN0YXJ0KTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5k
ZXJlciA9IHNlbGVjdGlvblN0YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmVy
ICE9IHNlbGVjdGlvbkVuZDsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4
dCgpKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKmN1cnJlbnRS
ZW5kZXJlciwgbV9zZWxlY3Rpb25Db250ZXh0KSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOworICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBt
YWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOwog
I2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgICAgICAgICAgZm9yIChhdXRvJiByZWN0
IDogc2VsZWN0aW9uSW5mby0+Y29sbGVjdGVkU2VsZWN0aW9uUmVjdHMoKSkKICAgICAgICAgICAg
ICAgICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRSZWN0KHNlbGVjdGlvbkluZm8tPnJlcGFp
bnRDb250YWluZXIoKSwgcmVjdCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTZWxlY3Rpb25S
YW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUg
YmxvY2tSZXAKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxl
Y3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gbmV3U2VsZWN0ZWRCbG9ja3MuYWRkKGNvbnRhaW5pbmdC
bG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChibG9j
a0luZm8pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGJsb2Nr
SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqY29udGFp
bmluZ0Jsb2NrKTsKKyAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRl
ckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgICAgICAgICAg
Y29udGFpbmluZ0Jsb2NrID0gY29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICNp
ZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJl
Y3RHYXRoZXJlci5hZGRHYXBSZWN0cyhibG9ja0luZm8tPnJlcGFpbnRDb250YWluZXIoKSwgYmxv
Y2tJbmZvLT5yZWN0cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0LmNwcAppbmRleCA4Yzc2NmU2ZGUyYzc0YWQwMzc5NzMzMzFmYzdmNWE0NzQ5MDE1Yjhl
Li5jMzYyZjRlNTdiMDBmOWNlMzlhNzNlY2U4MTFjMmM4MzJkNjUwYmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC05OTcsNyArOTk3LDcg
QEAgTGF5b3V0OjpMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxp
bmVDb3VudCwgY29uc3QgUmVuZGVyQmxvY2sKIGNvbnN0IFJ1blJlc29sdmVyJiBMYXlvdXQ6OnJ1
blJlc29sdmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcnVuUmVzb2x2ZXIpCi0gICAgICAgIG1f
cnVuUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1Jl
bmRlcmVyLCAqdGhpcyk7CisgICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFJ1blJl
c29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3J1blJl
c29sdmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggMWJmOThlNGVlYjQzYmEyMmNkYTRlNmY1ZDNi
YzJhNWY5ZmM0YjRiNy4uMDYyNWIxNmJkNTQzMTk3M2VkMzFkZTk5OGFlZDg4OWIwMTJiYTNiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFp
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gZGVidWdTaGFkb3cgPSBudWxscHRy
OwogICAgIGlmIChmbG93LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0Vu
YWJsZWQoKSkgewotICAgICAgICBkZWJ1Z1NoYWRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93
RGF0YT4oSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwg
Q29sb3IoMCwgMjU1LCAwLCAyMDApKTsKKyAgICAgICAgZGVidWdTaGFkb3cgPSBtYWtlVW5pcXVl
PFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWws
IHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CiAgICAgICAgIHRleHRQYWludGVyLnNldFNo
YWRvdyhkZWJ1Z1NoYWRvdy5nZXQoKSk7CiAgICAgfQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9p
ZCBnZW5lcmF0ZUxpbmVCb3hUcmVlKFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0
JiBsYXlvdXQpCiAgICAgICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+IGJpZGlSdW5zOwogICAgICAg
ICBmb3IgKGF1dG8gaXQgPSByYW5nZS5iZWdpbigpOyBpdCAhPSByYW5nZS5lbmQoKTsgKytpdCkg
ewogICAgICAgICAgICAgYXV0byBydW4gPSAqaXQ7Ci0gICAgICAgICAgICBiaWRpUnVucy5hcHBl
bmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9j
YWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlD
b250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKKyAgICAgICAgICAgIGJpZGlSdW5zLmFw
cGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlSdW4+KHJ1bi5sb2NhbFN0YXJ0KCksIHJ1bi5sb2NhbEVu
ZCgpLCBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJ1bi5yZW5kZXJlcigpKSwgYmlkaUNvbnRl
eHQucHRyKCksIFVfTEVGVF9UT19SSUdIVCkpOwogICAgICAgICB9CiAKICAgICAgICAgTGluZUlu
Zm8gbGluZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1
dG9TaXppbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNw
cAppbmRleCAzYmExMzBkNDU1OWQ3MjkyZDg5MWY1NTNjZjE0ODBmODY2YmIyYmFkLi40YjQzZTZh
Y2JlMGVlZGFmNGVhZjRkMmU1ZDVhNDQ2MzkwNjA1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFRleHRB
dXRvU2l6aW5nOjphZGRUZXh0Tm9kZShUZXh0JiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXplKQog
ICAgIExPRyhUZXh0QXV0b3NpemluZywgIiBhZGRBdXRvU2l6ZWROb2RlICVwIGNhbmRpZGF0ZVNp
emU9JWYiLCAmbm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Rl
eHROb2Rlcy5hZGQ8VGV4dEF1dG9TaXppbmdIYXNoVHJhbnNsYXRvcj4obm9kZS5yZW5kZXJlcigp
LT5zdHlsZSgpLCBudWxscHRyKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRv
U2l6aW5nVmFsdWU+KCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtl
VW5pcXVlPFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+YWRkVGV4dE5vZGUobm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAppbmRleCAyYjFjMWZhMDNjYTFj
NTc1NjkwMjc3YTVlODEyODcxMDEwZDQ0NjdlLi5kMTE2NjE1YTcyNmM1YTBhOTQzZDliOWY2ZTA5
NDBiOTVlNjkwOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lQnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJy
ZWFrZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgTGluZUJyZWFrZXI6OnNraXBMZWFkaW5n
V2hpdGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYKICAgICAg
ICAgaWYgKG9iamVjdC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgc2V0
U3RhdGljUG9zaXRpb25zKG1fYmxvY2ssIGRvd25jYXN0PFJlbmRlckJveD4ob2JqZWN0KSwgd2lk
dGguc2hvdWxkSW5kZW50VGV4dCgpKTsKICAgICAgICAgICAgIGlmIChvYmplY3Quc3R5bGUoKS5p
c09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgewotICAgICAgICAgICAgICAgIHJlc29sdmVy
LnJ1bnMoKS5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPigwLCAxLCBvYmplY3Qs
IHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKG1ha2VVbmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0
LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CiAgICAgICAgICAgICAgICAg
bGluZUluZm8uaW5jcmVtZW50UnVuc0Zyb21MZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKG9iamVjdC5pc0Zsb2F0aW5nKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCmluZGV4IDRiMTU5N2U5
ZjIxYzljZDRiMmYwZDg4MzQ3NDQ3NzVmMWQ4YmRlMDEuLmQ1MjA5MmI2OGVkOGUyYzhmZGE1MTVj
OTBjZDUyMjM1NmQ2NTVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIEludFNoYXBlSW50ZXJ2YWwgTWFy
Z2luSW50ZXJ2YWxHZW5lcmF0b3I6OmludGVydmFsQXQoaW50IHkpIGNvbnN0CiBzdGQ6OnVuaXF1
ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRl
U2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50IHNoYXBlTWFyZ2luKSBjb25zdAogewogICAgIGludCBt
YXJnaW5JbnRlcnZhbHNTaXplID0gKG9mZnNldCgpID4gc2hhcGVNYXJnaW4pID8gc2l6ZSgpIDog
c2l6ZSgpIC0gb2Zmc2V0KCkgKiAyICsgc2hhcGVNYXJnaW4gKiAyOwotICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxz
U2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CisgICAgYXV0byByZXN1bHQg
PSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5JbnRlcnZhbHNTaXplLCBz
dGQ6Om1heChzaGFwZU1hcmdpbiwgb2Zmc2V0KCkpKTsKICAgICBNYXJnaW5JbnRlcnZhbEdlbmVy
YXRvciBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvcihzaGFwZU1hcmdpbik7CiAKICAgICBmb3IgKGlu
dCB5ID0gYm91bmRzKCkueSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggMzAyMzFhMGJlMWJiYzYzZTRi
ZTNkMjUwNTEyYmVkM2QxOTU5NDA5OS4uZjVlZmVmZGQzMmIzMDU0N2FkYmQ4ZWIwOGY1NGU2M2Iw
MjQwZmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAg
LTQ2LDI0ICs0NiwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNoYXBlPiBjcmVhdGVJbnNldFNoYXBlKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGJvdW5k
cykKIHsKICAgICBBU1NFUlQoYm91bmRzLnJlY3QoKS53aWR0aCgpID49IDAgJiYgYm91bmRzLnJl
Y3QoKS5oZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFw
ZT4oYm91bmRzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKIH0K
IAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUoY29uc3Qg
RmxvYXRQb2ludCYgY2VudGVyLCBmbG9hdCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+
PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRS
ZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCBy
YWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlY3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGl1cywgY2VudGVy
LnkoKSAtIHJhZGl1cywgcmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRTaXplKHJhZGl1cywgcmFk
aXVzKSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VT
aGFwZShjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiB7
CiAgICAgQVNTRVJUKHJhZGlpLndpZHRoKCkgPj0gMCAmJiByYWRpaS5oZWlnaHQoKSA+PSAwKTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNl
bnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJh
ZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0
aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWku
aGVpZ2h0KCkqMiksIHJhZGlpKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4g
Y3JlYXRlUG9seWdvblNoYXBlKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZl
cnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQb2x5Z29uU2hhcGU+KFdURk1vdmUodmVydGljZXMpLCBmaWxsUnVsZSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOwog
fQogCiBzdGF0aWMgaW5saW5lIEZsb2F0UmVjdCBwaHlzaWNhbFJlY3RUb0xvZ2ljYWwoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBl
OjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBlLCBjb25zdCBMYQogICAg
ICAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgdmFsdWVzID0gcG9seWdvbi52YWx1ZXMoKTsKICAg
ICAgICAgc2l6ZV90IHZhbHVlc1NpemUgPSB2YWx1ZXMuc2l6ZSgpOwogICAgICAgICBBU1NFUlQo
ISh2YWx1ZXNTaXplICUgMikpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0
UG9pbnQ+PiB2ZXJ0aWNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2
YWx1ZXNTaXplIC8gMik7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2lu
dD4+IHZlcnRpY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUg
LyAyKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7IGkgKz0g
MikgewogICAgICAgICAgICAgRmxvYXRQb2ludCB2ZXJ0ZXgoCiAgICAgICAgICAgICAgICAgZmxv
YXRWYWx1ZUZvckxlbmd0aCh2YWx1ZXMuYXQoaSksIGJveFdpZHRoKSwKQEAgLTE3OSw3ICsxNzks
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFn
ZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBz
bmFwcGVkSW50UmVjdChpbWFnZVIpOwogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJ
bnRSZWN0KG1hcmdpblIpOwotICAgIGF1dG8gaW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxS
YXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgp
KTsKKyAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+
KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgLy8gRklYTUUgKDE0
OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxl
cmF0ZWQuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAKQEAg
LTIxOCw3ICsyMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0
ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgICAgICB9CiAgICAg
fQogCi0gICAgYXV0byByYXN0ZXJTaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGU+
KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOworICAgIGF1dG8gcmFzdGVy
U2hhcGUgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdp
blJlY3Quc2l6ZSgpKTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdN
b2RlOwogICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKICAgICByZXR1cm4gcmFz
dGVyU2hhcGU7CkBAIC0yMzAsNyArMjMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFw
ZTo6Y3JlYXRlQm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBXcmkKIAog
ICAgIEZsb2F0UmVjdCByZWN0KDAsIDAsIHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgpLCByb3Vu
ZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkpOwogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmRzKHJl
Y3QsIHJvdW5kZWRSZWN0LnJhZGlpKCkpOwotICAgIGF1dG8gc2hhcGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJveFNoYXBlPihib3VuZHMpOworICAgIGF1dG8gc2hhcGUgPSBtYWtlVW5pcXVlPEJveFNo
YXBlPihib3VuZHMpOwogICAgIHNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAg
ICAgc2hhcGUtPm1fbWFyZ2luID0gbWFyZ2luOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IGNkOTRmODljMDJiMGI4YzEz
NTE5NDU3ZTQ0ZDBkZGFmNmQ4N2YxZmEuLjk0ODQzMTcxOTQ3YzAyMzA5YWI3ZjRmYjFiOTdjMjYz
ODgyZWUzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5oCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU2hhcGVPdXRzaWRlSW5m
byBmaW5hbCB7CiAgICAgICAgIEluZm9NYXAmIGluZm9NYXAgPSBTaGFwZU91dHNpZGVJbmZvOjpp
bmZvTWFwKCk7CiAgICAgICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBpbmZvID0gaW5mb01hcC5n
ZXQoJmtleSkpCiAgICAgICAgICAgICByZXR1cm4gKmluZm87Ci0gICAgICAgIGF1dG8gcmVzdWx0
ID0gaW5mb01hcC5hZGQoJmtleSwgc3RkOjptYWtlX3VuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihr
ZXkpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBpbmZvTWFwLmFkZCgma2V5LCBtYWtlVW5pcXVl
PFNoYXBlT3V0c2lkZUluZm8+KGtleSkpOwogICAgICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgfQogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUluZm8oY29uc3QgUmVuZGVy
Qm94JiBrZXkpIHsgaW5mb01hcCgpLnJlbW92ZSgma2V5KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMGM5OGY5MTY2ZjdlMTUyOTcw
M2JjZGIyYzhjODNjYzgwYmI3YmYyNC4uNzQ0YzkwYjhmYjNmNTI3NjhhNTM4ZDIxMzU4MzYyY2E2
MzQ4MjdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2lj
U2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVQYXRo
OjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGMKIAogICAg
IGF1dG8mIGZyb21QYXRoID0gZG93bmNhc3Q8QmFzaWNTaGFwZVBhdGg+KGZyb20pOwogCi0gICAg
YXV0byByZXN1bHRpbmdQYXRoQnl0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3Ry
ZWFtPigpOworICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gbWFrZVVuaXF1ZTxTVkdQYXRo
Qnl0ZVN0cmVhbT4oKTsKICAgICBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oKmZyb21Q
YXRoLm1fYnl0ZVN0cmVhbSwgKm1fYnl0ZVN0cmVhbSwgKnJlc3VsdGluZ1BhdGhCeXRlcywgcHJv
Z3Jlc3MpOwogCiAgICAgYXV0byByZXN1bHQgPSBCYXNpY1NoYXBlUGF0aDo6Y3JlYXRlKFdURk1v
dmUocmVzdWx0aW5nUGF0aEJ5dGVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db250ZW50RGF0YS5oCmluZGV4IGU3YmIwNjE2NTAyZDk5ZDZkYjQzOTJiYjQ2OGE5YWI0Njlj
ZTQ5NGEuLjJjMTJkZDliNDBkZDQwYjNjMGJmNjc0OTMyMmFlMmIwZmQxZTA3MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCkBAIC05NSw3ICs5NSw3
IEBAIGNsYXNzIEltYWdlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewog
ICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAg
IGF1dG8gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2Uu
Y29weVJlZigpKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50
RGF0YT4obV9pbWFnZS5jb3B5UmVmKCkpOwogICAgICAgICBpbWFnZS0+c2V0QWx0VGV4dChhbHRU
ZXh0KCkpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQpAQCAtMTI2LDcgKzEyNiw3IEBA
IGNsYXNzIFRleHRDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHBy
aXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVy
KERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQorICAgIHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihtX3RleHQpOyB9CiAKICAgICBTdHJpbmcg
bV90ZXh0OwogfTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBDb3VudGVyQ29udGVudERhdGEg
ZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+
IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFs
KCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENv
dW50ZXJDb250ZW50RGF0YT4oc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRl
cigpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4obWFr
ZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7CiAgICAgfQogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBtX2NvdW50ZXI7CkBAIC0xOTAsNyArMTkwLDcgQEAg
Y2xhc3MgUXVvdGVDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHBy
aXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVy
KERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKCkpOyB9CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQogCiAgICAgUXVv
dGVUeXBlIG1fcXVvdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0ZpbGxMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmNwcAppbmRleCBmM2Q5MWRjOGRiYzhkOWU0NmM2MDFiOTU4NDNiOWE5NTJmM2IyZDFk
Li4zMDAxNGQwNGY3MGZiOTE4MTc0Mjg3NjAzZmRlYWI3MjM5NTYxNGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCBG
aWxsTGF5ZXI6OkZpbGxMYXllcihGaWxsTGF5ZXJUeXBlIHR5cGUpCiB9CiAKIEZpbGxMYXllcjo6
RmlsbExheWVyKGNvbnN0IEZpbGxMYXllciYgbykKLSAgICA6IG1fbmV4dChvLm1fbmV4dCA/IHN0
ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKKyAgICA6IG1f
bmV4dChvLm1fbmV4dCA/IG1ha2VVbmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0
cikKICAgICAsIG1faW1hZ2Uoby5tX2ltYWdlKQogICAgICwgbV94UG9zaXRpb24oby5tX3hQb3Np
dGlvbikKICAgICAsIG1feVBvc2l0aW9uKG8ubV95UG9zaXRpb24pCkBAIC0xMTcsNyArMTE3LDcg
QEAgRmlsbExheWVyOjp+RmlsbExheWVyKCkKIAogRmlsbExheWVyJiBGaWxsTGF5ZXI6Om9wZXJh
dG9yPShjb25zdCBGaWxsTGF5ZXImIG8pCiB7Ci0gICAgbV9uZXh0ID0gby5tX25leHQgPyBzdGQ6
Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CisgICAgbV9uZXh0
ID0gby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7
CiAKICAgICBtX2ltYWdlID0gby5tX2ltYWdlOwogICAgIG1feFBvc2l0aW9uID0gby5tX3hQb3Np
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CmluZGV4IDI0OWJhNDdlNTg0M2VjYzYyZTZmZDRmMjZhZjFjZjUzOGExNjNmOWMuLmZiNDNjMjBl
NWNlOTllY2UxOWY0NTJmZDlmODc5NjRkODE0YmI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFJlbmRl
clN0eWxlIFJlbmRlclN0eWxlOjpjbG9uZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJT
dHlsZT4oc3R5bGUsIENsb25lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4o
c3R5bGUsIENsb25lKTsKIH0KIAogUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBEaXNw
bGF5VHlwZSBkaXNwbGF5KQpAQCAtNDA5LDcgKzQwOSw3IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJT
dHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBw
c2V1CiAgICAgUmVuZGVyU3R5bGUqIHJlc3VsdCA9IHBzZXVkby5nZXQoKTsKIAogICAgIGlmICgh
bV9jYWNoZWRQc2V1ZG9TdHlsZXMpCi0gICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gc3Rk
OjptYWtlX3VuaXF1ZTxQc2V1ZG9TdHlsZUNhY2hlPigpOworICAgICAgICBtX2NhY2hlZFBzZXVk
b1N0eWxlcyA9IG1ha2VVbmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKIAogICAgIG1fY2FjaGVk
UHNldWRvU3R5bGVzLT5hcHBlbmQoV1RGTW92ZShwc2V1ZG8pKTsKIApAQCAtMTA1OCw3ICsxMDU4
LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykK
LSAgICAgICAgZGF0YS5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVk
UHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgIGRhdGEuY3Vz
dG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcy0+YWRkKG5hbWUpOwogfQogCkBAIC0xMzAxLDcgKzEz
MDEsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYm
IGltYWdlLCBib29sIGFkZCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0g
ICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJl
bGVhc2VOb25OdWxsKCkpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxJbWFnZUNv
bnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQpCkBAIC0x
MzEwLDEzICsxMzEwLDEzIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGJvb2wgYWRkKQogICAgIGlmIChhZGQgJiYgZGF0YS5jb250ZW50KSB7CiAg
ICAgICAgIGF1dG8mIGxhc3QgPSBsYXN0Q29udGVudCgqZGF0YS5jb250ZW50KTsKICAgICAgICAg
aWYgKCFpczxUZXh0Q29udGVudERhdGE+KGxhc3QpKQotICAgICAgICAgICAgbGFzdC5zZXROZXh0
KHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpKTsKKyAgICAgICAgICAg
IGxhc3Quc2V0TmV4dChtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byYgdGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0
Q29udGVudERhdGE+KGxhc3QpOwogICAgICAgICAgICAgdGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0
Q29udGVudC50ZXh0KCkgKyBzdHJpbmcpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgZGF0YS5jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmlu
Zyk7CisgICAgICAgIGRhdGEuY29udGVudCA9IG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihz
dHJpbmcpOwogICAgICAgICBhdXRvJiBhbHRUZXh0ID0gZGF0YS5hbHRUZXh0OwogICAgICAgICBp
ZiAoIWFsdFRleHQuaXNOdWxsKCkpCiAgICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRl
eHQoYWx0VGV4dCk7CkBAIC0xMzI3LDEyICsxMzI3LDEyIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFk
ZCkKIHsKICAgICBpZiAoIWNvdW50ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRDb250ZW50
KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwg
YWRkKTsKKyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZN
b3ZlKGNvdW50ZXIpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChR
dW90ZVR5cGUgcXVvdGUsIGJvb2wgYWRkKQogewotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3Vu
aXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtl
VW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJT
dHlsZTo6c2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0xNTUxLDcg
KzE1NTEsNyBAQCBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRl
ckRpcmVjdGl2ZXMoKQogewogICAgIGF1dG8mIG1hcCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCkuY291bnRlckRpcmVjdGl2ZXM7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1hcCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKKyAgICAgICAgbWFwID0g
bWFrZVVuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQog
CkBAIC0xNjcxLDE0ICsxNjcxLDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRp
b25zKCkKIEFuaW1hdGlvbkxpc3QmIFJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25zKCkKIHsK
ICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucykKLSAg
ICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gc3RkOjpt
YWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigpOworICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLmFuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAg
ICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zOwogfQogCiBBbmlt
YXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMoKQogewogICAgIGlmICgh
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucykKLSAgICAgICAgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS50cmFuc2l0aW9ucyA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1
cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCmlu
ZGV4IDIwYjJhODExNGIwYzhlOWViZDQ4MjcwNzlhOTgyMGYyZWMwZGNkYzIuLjZlMzdjZjhmYjhh
YmE1NWVjMzMwYTk2MDMzYThhOTU0YzdjYjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCkBAIC0yMDEsNyArMjAx
LDcgQEAgU3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoKQogCiBpbmxpbmUg
U3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoY29uc3QgU3R5bGVTaGFkb3dT
VkdEYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPigpCi0g
ICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigq
b3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gbWFr
ZVVuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAppbmRleCAzZDYx
Yzk0YzAxNjYxNjA4NThkYWJkODQwOWZjNDA4NjcwZTUwMWNhLi5jMTdlYWY4NTliMGJmYWE3ZGFi
YzAwOGQ0ZTc0MGZjNjMwYTRiODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NoYWRvd0RhdGEuY3BwCkBAIC0zMyw3ICszMyw3IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0Rh
dGEoY29uc3QgU2hhZG93RGF0YSYgbykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQogICAgICwg
bV9zdHlsZShvLm1fc3R5bGUpCiAgICAgLCBtX2lzV2Via2l0Qm94U2hhZG93KG8ubV9pc1dlYmtp
dEJveFNoYWRvdykKLSAgICAsIG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8U2hh
ZG93RGF0YT4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgLCBtX25leHQoby5tX25leHQgPyBt
YWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5jcHAKaW5kZXggYWQyY2JkOTU3ZWVmODI1NjBjZmIzNTJlOWY1MGIzOWU2MzNhMjZm
Zi4uOTZkYmJhMDA3ZTZhNjRhN2Q2OTdhMjlhMjFkNjIxYWQ0NDc1NGI2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWRE
YXRhLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAg
LCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKG8udmlzaXRlZExpbmtUZXh0RW1waGFzaXND
b2xvcikKICAgICAsIGNhcmV0Q29sb3Ioby5jYXJldENvbG9yKQogICAgICwgdmlzaXRlZExpbmtD
YXJldENvbG9yKG8udmlzaXRlZExpbmtDYXJldENvbG9yKQotICAgICwgdGV4dFNoYWRvdyhvLnRl
eHRTaGFkb3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDog
bnVsbHB0cikKKyAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFk
b3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCBjdXJzb3JEYXRhKG8uY3Vy
c29yRGF0YSkKICAgICAsIGluZGVudChvLmluZGVudCkKICAgICAsIGVmZmVjdGl2ZVpvb20oby5l
ZmZlY3RpdmVab29tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDZmYmIyYjdiMGMzZWIw
M2U4NjlhMWVhYWM5MTYxMTE5YzljNjFlOWIuLmJkZDAxOTE1YWEyNzhkZDZhNjY0OGZmNGMzZmJk
YjNmY2NkMTQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTEzOSwxMyArMTM5LDEz
IEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAgLCBzY3JvbGxTbmFwQXJlYShvLnNjcm9s
bFNuYXBBcmVhKQogI2VuZGlmCiAgICAgLCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+
Y2xvbmUoKSA6IG51bGxwdHIpCi0gICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJl
Y3RpdmVzID8gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigqby5jb3VudGVy
RGlyZWN0aXZlcykgOiBudWxscHRyKQorICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVy
RGlyZWN0aXZlcyA/IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRp
cmVjdGl2ZXMpIDogbnVsbHB0cikKICAgICAsIGFsdFRleHQoby5hbHRUZXh0KQotICAgICwgYm94
U2hhZG93KG8uYm94U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5ib3hT
aGFkb3cpIDogbnVsbHB0cikKKyAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IG1ha2VVbmlx
dWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCB3aWxsQ2hhbmdl
KG8ud2lsbENoYW5nZSkKICAgICAsIGJveFJlZmxlY3Qoby5ib3hSZWZsZWN0KQotICAgICwgYW5p
bWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpv
LmFuaW1hdGlvbnMpIDogbnVsbHB0cikKLSAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMg
PyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxw
dHIpCisgICAgLCBhbmltYXRpb25zKG8uYW5pbWF0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9u
TGlzdD4oKm8uYW5pbWF0aW9ucykgOiBudWxscHRyKQorICAgICwgdHJhbnNpdGlvbnMoby50cmFu
c2l0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMpIDogbnVs
bHB0cikKICAgICAsIG1hc2soby5tYXNrKQogICAgICwgbWFza0JveEltYWdlKG8ubWFza0JveElt
YWdlKQogICAgICwgcGFnZVNpemUoby5wYWdlU2l6ZSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBpbmxp
bmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShj
b25zdCBTdHlsZVJhcmVOb25JbgogICAgICwganVzdGlmeUl0ZW1zKG8uanVzdGlmeUl0ZW1zKQog
ICAgICwganVzdGlmeVNlbGYoby5qdXN0aWZ5U2VsZikKICAgICAsIGN1c3RvbVByb3BlcnRpZXMo
by5jdXN0b21Qcm9wZXJ0aWVzKQotICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhv
LmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8
U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQorICAg
ICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMgPyBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVk
UHJvcGVydGllcykgOiBudWxscHRyKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICAs
IHRvdWNoQWN0aW9ucyhvLnRvdWNoQWN0aW9ucykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCAyYzZmMzE3OGVlYjI2Yzdi
MmMwZDk1YWUxMDhiN2VmY2M2ZTIyYzRlLi4yNGNkZTRiZDYxZTcxNGMyMzIzYjllNWNkMmNmMjY5
ZTI4NDVmOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1h
Z2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDog
UmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX25l
ZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVlKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0
cnVlKQotICAgICwgbV9pbWFnZVJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdl
UmVzb3VyY2U+KCkpCiB7CiAgICAgaW1hZ2VSZXNvdXJjZSgpLmluaXRpYWxpemUoKnRoaXMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
CmluZGV4IDNjMzEwNTZkMWNhYjFmZWExMDQ5MDc4MGQwMGM4ZGNkMmM3OTgwNjguLmJhMWNkMDUy
ZGFkYWExY2UxODQxYzdjMjNjYWYzM2ZhYTRlMzQ3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVu
ZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+IFJl
bmRlclNWR0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCgpCiB7Ci0gICAgYXV0byBib3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGJveCA9
IG1ha2VVbmlxdWU8U1ZHSW5saW5lRmxvd0JveD4oKnRoaXMpOwogICAgIGJveC0+c2V0SGFzVmly
dHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICByZXR1cm4gYm94OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggNjdl
NmY5ODk3ZDI3NzQ0ZmQ0MTMzZmYyNzY3MTRjNGU5ZGE2NjViMC4uZGJmNDkwM2Y4OWY0ZGM5MmVk
ZmYzMDUzOTI1ODY5ZjMyZTJkOTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9p
ZCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJl
bmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAgIGF1dG8gYm94ID0gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBt
YWtlVW5pcXVlPFNWR0lubGluZVRleHRCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1
YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5k
ZXggMWIzZWYyNGNjOTJkMjA1MmEzNGFhZDIwODgyMzMwZTFhMTIzYjg0Zi4uMWFkMjY0OTY0Njcw
OWMyM2YwZGI5Y2ZhZTRiODYzYzI0N2IzNjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTg4LDcg
Kzg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmkKICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91
bmRpbmdCb3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKIAogICAgIC8vIEFkZCBlZmZl
Y3RzIHRvIHRoZSBidWlsZGVyCi0gICAgYXV0byBidWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgYXV0
byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpj
cmVhdGUoZmlsdGVyKSk7CiAgICAgYnVpbGRlci0+c2V0UHJpbWl0aXZlVW5pdHMoZmlsdGVyRWxl
bWVudCgpLnByaW1pdGl2ZVVuaXRzKCkpOwogICAgIGJ1aWxkZXItPnNldFRhcmdldEJvdW5kaW5n
Qm94KHRhcmdldEJvdW5kaW5nQm94KTsKICAgICAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFscmVhZHkgYnVpbHQs
IG9yIHdlJ3JlIGluIGEgY3ljbGUsIG9yIHdlJ3JlIG1hcmtlZCBmb3IgcmVtb3ZhbC4gUmVnYXJk
bGVzcywganVzdCBkbyBub3RoaW5nIG1vcmUgbm93LgogICAgIH0KIAotICAgIGF1dG8gZmlsdGVy
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyRGF0YT4oKTsKKyAgICBhdXRvIGZpbHRlckRh
dGEgPSBtYWtlVW5pcXVlPEZpbHRlckRhdGE+KCk7CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5k
aW5nQm94ID0gcmVuZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKTsKIAogICAgIGZpbHRlckRhdGEt
PmJvdW5kYXJpZXMgPSBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRl
ckVsZW1lbnQ+KCZmaWx0ZXJFbGVtZW50KCksIGZpbHRlckVsZW1lbnQoKS5maWx0ZXJVbml0cygp
LCB0YXJnZXRCb3VuZGluZ0JveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCBkOGFkMDgwNDY2
YzVjNmQ5ZWVjZjA3OGNkZmY2NDI2YzYxNGEwY2UyLi41NTJjZTVhMzNhODA2MmU2YmVlMGIwNGFl
M2YxNjBmMDk5ZWI1MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCBib29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbgogCiAgICAgYXV0byYgZ3JhZGllbnREYXRhID0gbV9n
cmFkaWVudE1hcC5hZGQoJnJlbmRlcmVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
aWYgKCFncmFkaWVudERhdGEpCi0gICAgICAgIGdyYWRpZW50RGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8R3JhZGllbnREYXRhPigpOworICAgICAgICBncmFkaWVudERhdGEgPSBtYWtlVW5pcXVlPEdy
YWRpZW50RGF0YT4oKTsKIAogICAgIGJvb2wgaXNQYWludGluZ1RleHQgPSByZXNvdXJjZU1vZGUu
Y29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAKaW5kZXggYWE1NzY1ZWQzNzliNmFiMWI5NDQ3MjZmNWI1ZWU0NTQzODNjNDY0ZS4uNGM4
MTliOWJjNTVkYzJiZmE4MmZiYmMwOTdmNjM3NTg1YjViMTI3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKIAogICAgIGJvb2wgbWlz
c2luZ01hc2tlckRhdGEgPSAhbV9tYXNrZXIuY29udGFpbnMoJnJlbmRlcmVyKTsKICAgICBpZiAo
bWlzc2luZ01hc2tlckRhdGEpCi0gICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIHN0ZDo6
bWFrZV91bmlxdWU8TWFza2VyRGF0YT4oKSk7CisgICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVy
ZXIsIG1ha2VVbmlxdWU8TWFza2VyRGF0YT4oKSk7CiAKICAgICBNYXNrZXJEYXRhKiBtYXNrZXJE
YXRhID0gbV9tYXNrZXIuZ2V0KCZyZW5kZXJlcik7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29s
dXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRp
b25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCmluZGV4
IDI5ZThlN2MyNDc1NjU4NzkyZWU0ZWQ0ZWQwODIwZmFlZWM5YmRjMGMuLmRmMDE3YmExYmZjMGNj
ZjdhZWE5M2EzYmIyZjdmYzc4OGY2OTZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAgLTMxLDYgKzMxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBzdHJ1Y3Qg
TWFza2VyRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCmluZGV4IGNjMmNiZmNmMGZlOWE1OWVjZTE1ZjUyZjM1NzJkYjU5ZDE2MzIwZDYuLjMxYmM1
ZjE5MzFiZGFlNTBhYWM2NjEzNTlmYzBhMjZmMTc4NTg2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
QEAgLTExNyw3ICsxMTcsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
OjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIC8vIEJ1aWxkIHBhdHRlcm4uCi0gICAgYXV0byBwYXR0ZXJuRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRhdGE+KCk7CisgICAgYXV0byBwYXR0ZXJuRGF0
YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4g
PSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1
ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDM0
YjBhZTc1YmRjMDA1NjU3NmQ1MTM4MDE4NWVmZTZiYzcyYzcwNmUuLjZhNjcxMThmZjFiMjU4YjMw
M2M5NTYzODU5M2Y0NzRlZTg5YmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlbmRlclNWR1NoYXBl
Ojp+UmVuZGVyU1ZHU2hhcGUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnVw
ZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKQogewotICAgIG1fcGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGF0aD4ocGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CisgICAg
bV9wYXRoID0gbWFrZVVuaXF1ZTxQYXRoPihwYXRoRnJvbUdyYXBoaWNzRWxlbWVudCgmZ3JhcGhp
Y3NFbGVtZW50KCkpKTsKICAgICBwcm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKICAgICBtX2Zp
bGxCb3VuZGluZ0JveCA9IGNhbGN1bGF0ZU9iamVjdEJvdW5kaW5nQm94KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5kZXggYmY3ODY0NDNkZGQ2
MGQ2MjFiY2Q1NzliODc3MGVkY2Q5MWQyOWZhOS4uOWM3MzdjYWZmOGI5Mjc2Y2M0MTA2MDJmNTc5
YTlmMzY0ZTVhMDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzLmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRDbGlw
cGVyKFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcikKICAgICBBU1NFUlQoY2xpcHBl
ci0+cmVzb3VyY2VUeXBlKCkgPT0gQ2xpcHBlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1f
Y2xpcHBlckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOworICAgICAg
ICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIgPSBj
bGlwcGVyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wgU1ZHUmVz
b3VyY2VzOjpzZXRGaWx0ZXIoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKICAgICBB
U1NFUlQoZmlsdGVyLT5yZXNvdXJjZVR5cGUoKSA9PSBGaWx0ZXJSZXNvdXJjZVR5cGUpOwogCiAg
ICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4o
KTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBl
ckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5m
aWx0ZXIgPSBmaWx0ZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NTAsNyArNTUwLDcgQEAgYm9v
bCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlclN0YXJ0KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBt
YXJrZXJTdGFydCkKICAgICBBU1NFUlQobWFya2VyU3RhcnQtPnJlc291cmNlVHlwZSgpID09IE1h
cmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9t
YXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21h
cmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEt
Pm1hcmtlclN0YXJ0ID0gbWFya2VyU3RhcnQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NzEsNyAr
NTcxLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZChSZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlciogbWFya2VyTWlkKQogICAgIEFTU0VSVChtYXJrZXJNaWQtPnJlc291cmNlVHlwZSgp
ID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAg
ICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAg
ICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtl
ckRhdGEtPm1hcmtlck1pZCA9IG1hcmtlck1pZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU5Miw3
ICs1OTIsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNWR1Jlc291
cmNlTWFya2VyKiBtYXJrZXJFbmQpCiAgICAgQVNTRVJUKG1hcmtlckVuZC0+cmVzb3VyY2VUeXBl
KCkgPT0gTWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAg
ICAgICBtX21hcmtlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtlckRhdGE+KCk7CisgICAg
ICAgIG1fbWFya2VyRGF0YSA9IG1ha2VVbmlxdWU8TWFya2VyRGF0YT4oKTsKIAogICAgIG1fbWFy
a2VyRGF0YS0+bWFya2VyRW5kID0gbWFya2VyRW5kOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjEz
LDcgKzYxMyw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIoUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIqIG1hc2tlcikKICAgICBBU1NFUlQobWFza2VyLT5yZXNvdXJjZVR5cGUoKSA9PSBN
YXNrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRh
KQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxD
bGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5tYXNrZXIgPSBtYXNrZXI7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC02MzYsNyArNjM2LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldEZpbGwoUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIqIGZpbGwpCiAgICAgICAgICAgIHx8IGZpbGwtPnJlc291cmNlVHlw
ZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ry
b2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
bFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZp
bGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+ZmlsbCA9IGZpbGw7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC02NTksNyArNjU5LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNl
dFN0cm9rZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogc3Ryb2tlKQogICAgICAgICAgICB8
fCBzdHJva2UtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsK
IAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9r
ZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tl
RGF0YS0+c3Ryb2tlID0gc3Ryb2tlOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCAxOTE5NWFh
MWRhYmM2NmU0YjM1NjU5NzJlYzkxZjg5NDc3ZjQwMzliLi4xZWViNzhmNTdiM2ViYjMxYjRjZGU4
ZTUzMDJkZGUwOWUwNDhjMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIFNWR1Jlc291
cmNlc0NhY2hlOjphZGRSZXNvdXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0CiAgICAgQVNTRVJUKCFtX2NhY2hlLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogCiAg
ICAgLy8gQnVpbGQgYSBsaXN0IG9mIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBw
YXNzZWQgUmVuZGVyT2JqZWN0Ci0gICAgYXV0byBuZXdSZXNvdXJjZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNWR1Jlc291cmNlcz4oKTsKKyAgICBhdXRvIG5ld1Jlc291cmNlcyA9IG1ha2VVbmlxdWU8
U1ZHUmVzb3VyY2VzPigpOwogICAgIGlmICghbmV3UmVzb3VyY2VzLT5idWlsZENhY2hlZFJlc291
cmNlcyhyZW5kZXJlciwgc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRl
eCAzMjQxMDI1ODRjMWYxMTNkMGVlZDMzMjE0YTY3ZjU1MzRhYjBmNTlhLi44MTBhMGI4ODBhOGFh
NGRhZTAyZmFiNDQ2YTk0MWVkZDljNWE3MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xMDMsNyArMTAz
LDcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdp
dGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW4KICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQog
ICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBudWxscHRyOwogICAgIGVsc2UKLSAgICAg
ICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXaWR0aEl0ZXJhdG9y
Pigmc2NhbGVkRm9udCwgbV9ydW4pOworICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBt
YWtlVW5pcXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRGb250LCBtX3J1bik7CiB9CiAKIHN0cnVj
dCBNZWFzdXJlVGV4dERhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggZDM3YmVlOGNiY2U1NTYxNTEx
YjI0ZTM2NGUxYWY2NGFhZDdhYTc1ZC4uZTZiMjczMjBkOTJmZTg1NmQ4Mzc0MTA4ZWQ5NTQyZTA5
MWVlYWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjIsMjIgKzEyMiwyMiBAQCBzdGF0aWMgdm9p
ZCBnZXRJbmxpbmVSdW4oUmVuZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBib3VuZGFy
eSwgUmVuZGVyT2JqZQogCiBSZW5kZXJUcmVlQnVpbGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIoUmVu
ZGVyVmlldyYgdmlldykKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9maXJzdExldHRlckJ1
aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGaXJzdExldHRlcj4oKnRoaXMpKQotICAgICwgbV9saXN0
QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPExpc3Q+KCp0aGlzKSkKLSAgICAsIG1fbXVsdGlDb2x1
bW5CdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlDb2x1bW4+KCp0aGlzKSkKLSAgICAsIG1f
dGFibGVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFibGU+KCp0aGlzKSkKLSAgICAsIG1fcnVi
eUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxSdWJ5PigqdGhpcykpCi0gICAgLCBtX2Zvcm1Db250
cm9sc0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ29udHJvbHM+KCp0aGlzKSkKLSAgICAs
IG1fYmxvY2tCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCp0aGlzKSkKLSAgICAsIG1f
YmxvY2tGbG93QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRmxvdz4oKnRoaXMpKQotICAg
ICwgbV9pbmxpbmVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lPigqdGhpcykpCi0gICAg
LCBtX3N2Z0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxTVkc+KCp0aGlzKSkKKyAgICAsIG1fZmly
c3RMZXR0ZXJCdWlsZGVyKG1ha2VVbmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKKyAgICAsIG1f
bGlzdEJ1aWxkZXIobWFrZVVuaXF1ZTxMaXN0PigqdGhpcykpCisgICAgLCBtX211bHRpQ29sdW1u
QnVpbGRlcihtYWtlVW5pcXVlPE11bHRpQ29sdW1uPigqdGhpcykpCisgICAgLCBtX3RhYmxlQnVp
bGRlcihtYWtlVW5pcXVlPFRhYmxlPigqdGhpcykpCisgICAgLCBtX3J1YnlCdWlsZGVyKG1ha2VV
bmlxdWU8UnVieT4oKnRoaXMpKQorICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKG1ha2VVbmlx
dWU8Rm9ybUNvbnRyb2xzPigqdGhpcykpCisgICAgLCBtX2Jsb2NrQnVpbGRlcihtYWtlVW5pcXVl
PEJsb2NrPigqdGhpcykpCisgICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9j
a0Zsb3c+KCp0aGlzKSkKKyAgICAsIG1faW5saW5lQnVpbGRlcihtYWtlVW5pcXVlPElubGluZT4o
KnRoaXMpKQorICAgICwgbV9zdmdCdWlsZGVyKG1ha2VVbmlxdWU8U1ZHPigqdGhpcykpCiAjaWYg
RU5BQkxFKE1BVEhNTCkKLSAgICAsIG1fbWF0aE1MQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE1h
dGhNTD4oKnRoaXMpKQorICAgICwgbV9tYXRoTUxCdWlsZGVyKG1ha2VVbmlxdWU8TWF0aE1MPigq
dGhpcykpCiAjZW5kaWYKLSAgICAsIG1fY29udGludWF0aW9uQnVpbGRlcihzdGQ6Om1ha2VfdW5p
cXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQorICAgICwgbV9jb250aW51YXRpb25CdWlsZGVyKG1h
a2VVbmlxdWU8Q29udGludWF0aW9uPigqdGhpcykpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgICwgbV9mdWxsU2NyZWVuQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxTY3JlZW4+
KCp0aGlzKSkKKyAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIobWFrZVVuaXF1ZTxGdWxsU2NyZWVu
PigqdGhpcykpCiAjZW5kaWYKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghc19jdXJyZW50IHx8ICZt
X3ZpZXcgIT0gJnNfY3VycmVudC0+bV92aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IGY0MmJjYTNi
MzQ2OWU2ZDU2ZTZhNGQ3Yjk0NDVlMTY3YjExMTFiMmIuLjI2ODU0NGExZTY1YmZhM2QzOGY0M2Vi
NWJiY2U0ZWVlY2FhYzQ2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBSZW5k
ZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5
bGU6OkVsZW1lbnRVcGRhdGVzKgogCiBSZW5kZXJUcmVlVXBkYXRlcjo6UmVuZGVyVHJlZVVwZGF0
ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAs
IG1fZ2VuZXJhdGVkQ29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0
aGlzKSkKKyAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChtYWtlVW5pcXVlPEdlbmVyYXRlZENvbnRl
bnQ+KCp0aGlzKSkKICAgICAsIG1fYnVpbGRlcihyZW5kZXJWaWV3KCkpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKaW5kZXggN2ZlN2Y2ODczMjA0MTBlZjA0ODM4
N2Q0ODFmOTI3YjEyYzIzODNhYy4uYjljNzJlYjg4MGU5YmI4NzU5OGY0MTQ0MDc3ZDAyMzAxNjY2
NWI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaApAQCAtNDksNiAr
NDksNyBAQCBlbnVtIGNsYXNzIElucHV0U291cmNlIHsKIH07CiAKIGNsYXNzIFVzZXJJbnB1dEJy
aWRnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoVXNlcklucHV0QnJpZGdlKTsKIHB1YmxpYzoKICAgICBVc2VySW5wdXRCcmlkZ2UoUGFn
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAppbmRleCBkYWUx
MWNiMmY2Mjg5OTE4NDUzYTEyODA5YWU0M2I4MTI0YjZiMTJiLi42ZDY5NWE2NjBkMGU0ZTA0NWEy
NmRhYmUzMzMxZWNhMjZmYWQyZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFs
aWRhdG9yLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGREaXJ0eUFsbFN0
eWxlKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzKQogfQogCiBJbnZh
bGlkYXRvcjo6SW52YWxpZGF0b3IoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50cyo+JiBz
aGVldHMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGlhUXVlcnlFdmFsdWF0b3IpCi0g
ICAgOiBtX293bmVkUnVsZVNldChzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkpCisgICAgOiBt
X293bmVkUnVsZVNldChtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkpCiAgICAgLCBtX3J1bGVTZXQoKm1f
b3duZWRSdWxlU2V0KQogICAgICwgbV9kaXJ0aWVzQWxsU3R5bGUoc2hvdWxkRGlydHlBbGxTdHls
ZShzaGVldHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxh
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCmluZGV4
IDRkODE0OGI0ZTMxZDc0ZDZhMGE1MTc1NGRlZTVlYWI4MDc1OWFiYWEuLjA2MmQ1OTY0ZDc3ZWM1
ZGI4M2IzZjQxYWNiYWE4N2VmY2U5OGRkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVsYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
bGF0aW9ucy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4g
Y29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnMKIAog
ICAgIGF1dG8gYXBwZW5kU3R5bGVSZWxhdGlvbiA9IFsmcmVtYWluaW5nUmVsYXRpb25zXSAoY29u
c3QgUmVsYXRpb24mIHJlbGF0aW9uKSB7CiAgICAgICAgIGlmICghcmVtYWluaW5nUmVsYXRpb25z
KQotICAgICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxSZWxh
dGlvbnM+KCk7CisgICAgICAgICAgICByZW1haW5pbmdSZWxhdGlvbnMgPSBtYWtlVW5pcXVlPFJl
bGF0aW9ucz4oKTsKICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zLT5hcHBlbmQocmVsYXRpb24p
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggOWYwZDFhZDc0
OTBiZmVhYjI0MDdjZTdiYzg4YjA5NTExNmQwYjIyMi4uZGNiNjViYzA5YzM0Nzc5YjYzYTI5MzI0
ZTI0ZDM3MmJmYzZhMjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgU3R5bGVSZXNvbHZlciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICBpZiAoIW1f
cmVzb2x2ZXIpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVz
b2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9y
ZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7Cisg
ICAgICAgIG1fcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQp
OwogCiAgICAgICAgIGlmICghbV9zaGFkb3dSb290KSB7CiAgICAgICAgICAgICBtX2RvY3VtZW50
LmZvbnRTZWxlY3RvcigpLmJ1aWxkU3RhcnRlZCgpOwpAQCAtNTYzLDcgKzU2Myw3IEBAIGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0Zv
ckluc3BlY3RvcigpCiBib29sIFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKGNvbnN0
IENTU1N0eWxlU2hlZXQqIHNoZWV0KSBjb25zdAogewogICAgIGlmICghbV93ZWFrQ29weU9mQWN0
aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwKSB7Ci0gICAgICAgIG1fd2Vha0NvcHlPZkFj
dGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNl
dDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4+KCk7CisgICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0
eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBDU1NT
dHlsZVNoZWV0Kj4+KCk7CiAgICAgICAgIGZvciAoYXV0byYgYWN0aXZlU3R5bGVTaGVldCA6IG1f
YWN0aXZlU3R5bGVTaGVldHMpCiAgICAgICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNo
ZWV0TGlzdEZvckZhc3RMb29rdXAtPmFkZChhY3RpdmVTdHlsZVNoZWV0LmdldCgpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggODQ2YTIz
MWFkMmIxOGI1ZDdmMjk0OTAxNmQwOWYyMjNkZDY5ZTg4Yi4uYTAwZjRmZTBmNGNjYjUyZGQ4MzFh
OTRlMjZhNTg2NGU1YzFiNzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJl
c29sdmVyLmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGU+IFRy
ZWVSZXNvbHZlcjo6cmVzb2x2ZSgpCiAKICAgICBtX2RpZFNlZVBlbmRpbmdTdHlsZXNoZWV0ID0g
bV9kb2N1bWVudC5zdHlsZVNjb3BlKCkuaGFzUGVuZGluZ1NoZWV0c0JlZm9yZUJvZHkoKTsKIAot
ICAgIG1fdXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOworICAg
IG1fdXBkYXRlID0gbWFrZVVuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOwogICAgIG1fc2NvcGVT
dGFjay5hcHBlbmQoYWRvcHRSZWYoKm5ldyBTY29wZShtX2RvY3VtZW50KSkpOwogICAgIG1fcGFy
ZW50U3RhY2suYXBwZW5kKFBhcmVudChtX2RvY3VtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggYmM1MTQzNGIwYjJiOGUwYmY3N2U1
N2E0YTc2ZTRkNGJjZWVlOTk2NS4uMjVmMzg2M2QwNzk1NGFjOGQ2YTYzZTY4NjRhMWYwNzZiMGQ1
MWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBt
X2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9yZXNvdXJjZXNDYWNoZShzdGQ6Om1ha2VfdW5p
cXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQorICAgICwgbV9yZXNvdXJjZXNDYWNoZShtYWtlVW5p
cXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQogICAgICwgbV9hcmVBbmltYXRpb25zUGF1c2VkKCFk
b2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkpCiB7CiB9CkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdS
ZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCwgRWxlbWVudCYgZWwKIAogICAgIGF1dG8gcmVz
dWx0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPFBlbmRpbmdFbGVtZW50cz4oKTsKICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLT5hZGQoJmVsZW1lbnQpOwogCiAgICAgZWxlbWVudC5zZXRIYXNQZW5kaW5nUmVzb3Vy
Y2VzKCk7CkBAIC0yNzksNyArMjc5LDcgQEAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFyZ2V0KFNWR0UKIHZvaWQg
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxl
bWVudCYgcmVmZXJlbmNpbmdFbGVtZW50LCBTVkdFbGVtZW50JiByZWZlcmVuY2VkRWxlbWVudCkK
IHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5lbnN1cmUoJnJlZmVy
ZW5jZWRFbGVtZW50LCBbJnJlZmVyZW5jaW5nRWxlbWVudF0gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0
PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+PihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZH
RWxlbWVudCo+IHsgJnJlZmVyZW5jaW5nRWxlbWVudCB9KTsKICAgICB9KTsKICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQoJnJl
ZmVyZW5jaW5nRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYTgwOTZk
ZGFkYTgxZWFkNmE3YTFlYTMyNGNkODUwNjdmNWMwYjI4Yi4uZTRkZTNiNzQ5ZjBhMDAzOWJjNWM0
Y2ZjZDA4ZTE5Mzk2Y2Q2NTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTYx
LDcgKzE2MSw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgSGFzaE1hcDxBdG9tU3RyaW5nSW1wbCos
IENTU1Byb3BlcnR5SUQ+IGNyZWF0ZUF0dHJpYnV0ZU5hbWVUCiBTVkdFbGVtZW50OjpTVkdFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICA6IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZVNWR0VsZW1lbnQpCiAg
ICAgLCBTVkdMYW5nU3BhY2UodGhpcykKLSAgICAsIG1fcHJvcGVydHlBbmltYXRvckZhY3Rvcnko
c3RkOjptYWtlX3VuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKKyAgICAsIG1f
cHJvcGVydHlBbmltYXRvckZhY3RvcnkobWFrZVVuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFj
dG9yeT4oKSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFNWR0Vs
ZW1lbnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIGNoYW5nZSkKIFNWR0VsZW1lbnRS
YXJlRGF0YSYgU1ZHRWxlbWVudDo6ZW5zdXJlU1ZHUmFyZURhdGEoKQogewogICAgIGlmICghbV9z
dmdSYXJlRGF0YSkKLSAgICAgICAgbV9zdmdSYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
RWxlbWVudFJhcmVEYXRhPigpOworICAgICAgICBtX3N2Z1JhcmVEYXRhID0gbWFrZVVuaXF1ZTxT
VkdFbGVtZW50UmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICptX3N2Z1JhcmVEYXRhOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IGE3NTg5MGYzMTgw
NDY4ZDE1MjRiZWU4NTQzNTlkMDM1NmViNTIyMmQuLjgwZWM3ZmM4NjI5MmI2M2JiYmE4NTFlMTFl
MTA2ZmExNTJmOTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
Y3BwCkBAIC0xMTksNyArMTE5LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVu
dDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiBBZmZpbmVUcmFuc2Zvcm0qIFNWR0dy
YXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkKIHsKICAgICBpZiAoIW1fc3Vw
cGxlbWVudGFsVHJhbnNmb3JtKQotICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHN0
ZDo6bWFrZV91bmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOworICAgICAgICBtX3N1cHBsZW1lbnRh
bFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOwogICAgIHJldHVybiBt
X3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEJ5dGVTdHJlYW0uaAppbmRleCA2ZjBhY2FjZjE5ZWU4NTBkYjRlNjkxMGQzZTgzZDI2NDk0ZDY3
ZWIwLi40MzRkOTFlYjNkZjhhZDg3OWY4MzlhNDg5NjY4Njc4MGI0MDlmMjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBTVkdQ
YXRoQnl0ZVN0cmVhbSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+
IGNvcHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
UGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUGF0
aEJ5dGVTdHJlYW0+KCp0aGlzKTsKICAgICB9CiAKICAgICBEYXRhSXRlcmF0b3IgYmVnaW4oKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAppbmRleCBlMDQyM2NlOTgxNWZhMGYy
NTU2M2EzYjU0MzE0MDg2YWMzNTZmZjQ0Li4zZWI1N2FkMmYyMWRmYTY0YjliMTE4MDFmNDI3Mjgz
NjAyYjc1YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVy
OjpzY2hlZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0YXJnZXQs
CiAgICAgRWxlbWVudEF0dHJpYnV0ZVBhaXIga2V5KHRhcmdldCwgYXR0cmlidXRlTmFtZSk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbnNWZWN0b3I+JiBzY2hlZHVsZWQgPSBtX3NjaGVk
dWxlZEFuaW1hdGlvbnMuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlm
ICghc2NoZWR1bGVkKQotICAgICAgICBzY2hlZHVsZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1h
dGlvbnNWZWN0b3I+KCk7CisgICAgICAgIHNjaGVkdWxlZCA9IG1ha2VVbmlxdWU8QW5pbWF0aW9u
c1ZlY3Rvcj4oKTsKICAgICBBU1NFUlQoIXNjaGVkdWxlZC0+Y29udGFpbnMoYW5pbWF0aW9uKSk7
CiAgICAgc2NoZWR1bGVkLT5hcHBlbmQoYW5pbWF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNDBlZTk5MTU1ODVlY2E5YTEwMDQ0YjllMzMwYzg3
NTI4MGMyNTFlNy4uM2IyN2QwNjA4YmY5MGZkYWEwZTViMTU2MDBlYTRhZDVmZTEzNGQyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NTcsNyArNDU3LDcg
QEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBhdXRvIHBhZ2VD
b25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCk7Ci0gICAg
ICAgIG1fY2hyb21lQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVu
dD4odGhpcyk7CisgICAgICAgIG1fY2hyb21lQ2xpZW50ID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNo
cm9tZUNsaWVudD4odGhpcyk7CiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVu
dCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIFNW
RyBlbmRzIHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBtaWdodCBsZWFrIHRoZSB3b3JsZC4KQEAgLTQ2
Niw3ICs0NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgYW4gaXNzdWUg
d2hlbiBTVkdJbWFnZSB3aWxsIGJlIGFibGUgdG8gbG9hZCBvdGhlcgogICAgICAgICAvLyBTVkdJ
bWFnZSBvYmplY3RzLCBidXQgd2UncmUgc2FmZSBub3csIGJlY2F1c2UgU1ZHSW1hZ2UgY2FuIG9u
bHkgYmUKICAgICAgICAgLy8gbG9hZGVkIGJ5IGEgdG9wLWxldmVsIGRvY3VtZW50LgotICAgICAg
ICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKKyAgICAgICAgbV9wYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uKSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQo
ZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxz
ZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJCdWlsZGVyLmgKaW5kZXggZDk3MDMwMmFkZjg2NTg1NTA5YzY1MDhkNTA0OTUyYTI1NTMyMzYy
Yi4uYzc3YWUwOGJhYzY1YzNjMmNmYzg5NzRmYTMzZTc2NDYwY2U5N2ZhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIu
aApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTVkdGaWx0ZXJF
bGVtZW50OwogCiBjbGFzcyBTVkdGaWx0ZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj4gRmls
dGVyRWZmZWN0U2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTVlZmFhZWE3MTEx
YmM2Yzk1N2Q5NzJkNzQ1NDhkZTkyZDhhMTMzZS4uY2ViYWEzNjNiZjUyN2JiYjM4ZTU2N2QzZTNk
NDJiZjg0MzEwMmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHkgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgdHlwZW5hbWUg
QW5pbWF0ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk+CiAgICAgc3Rh
dGljIFJlZjxBbmltYXRlZFByb3BlcnR5PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5
KGNvbnRleHRFbGVtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29y
YXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIG1ha2VVbmlxdWU8RGVjb3JhdGVk
UHJvcGVydHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkpKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVy
dHkgPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
SW1wbC5oCmluZGV4IDI4ODc0MWIxMjkwNWNiODUxNDMwNTQwOTBjNGUyYzkxMzliMzViZjMuLmQw
NzM3YWNiYTMzMWZlMTIzNDdiODM0ZmY3YWEzMDEwMGFkMTU2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
QW5pbWF0b3JJbXBsLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZUFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmkK
IHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFNWR0FuaW1h
dGVkQm9vbGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvcjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4mIGFuaW1hdGVkLCBBbmltYXRp
b25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0
ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVu
dW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgU1ZHQW5p
bWF0ZWRJbnRlZ2VyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG9yPFNWR0EKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQsIEFuaW1h
dGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVs
YXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEzMiw3ICsxMzIsNyBAQCBj
bGFzcyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjxTVkdBbgogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZExlbmd0aD4mIGFuaW1h
dGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2Rl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5n
dGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTMsNyArMTUzLDcgQEAg
Y2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiYg
YW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0
aE1vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZExlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTcy
LDcgKzE3Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgZmluYWwgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdB
bmltYXRlZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNW
R0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtMTg5LDcgKzE4OSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlckxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTIwNiw3ICsyMDYsNyBA
QCBjbGFzcyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZH
QW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTIyNCw3ICsyMjQsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVgog
cHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9u
TW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVk
LCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yNDMsNyArMjQzLDcg
QEAgY2xhc3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkT3Jp
ZW50VHlwZT4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdB
bmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC0yNjIsNyArMjYyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUEKIHB1
YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHBy
aXZhdGU6CkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3Ig
ZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW0KIAogICAg
IHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHQW5pbWF0ZWRSZWN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9k
ZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRSZWN0
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAog
cHJpdmF0ZToKQEAgLTI5OCw3ICsyOTgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFN0cmluZ0FuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogcHVi
bGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBh
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29s
IGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdB
bmltYXRlZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTMzOCw3ICszMzgsNyBAQCBjbGFzcyBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0bwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiYgYW5p
bWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCmluZGV4IDRlZGEzNGM5YjE4
ODhmZmQ2ZDNkNjYzMmNmMGNmNmQzM2E2ZmE5ZTEuLjM5N2ZmMDkxNTk0MDBkMzNjMDUyYjExZDgy
OGNiOGUzN2IzYzgwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaApA
QCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3IgZmlu
YWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQogcHVibGljOgogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4m
IGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9k
ZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQx
LCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU1ZH
QW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJv
cGVydHlQYWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1h
dGVkMSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBh
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29s
IGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdB
bmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5p
bWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3Ig
ZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXQKIHB1YmxpYzoKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+
JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEs
IGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCmluZGV4IDY0YTY1YjE4NjJmZmI5Njk2
MDNjNzE1NjA3YjU0NGY1NTZlMDA4M2EuLjAyMmVkZWRhODIxYjUzMzU1YjNmZGQzOTU4ZjI0MzY4
MDE5YWFkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0
dHJpYnV0ZUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIENhbGNNb2Rl
IDogdWludDhfdCB7CiB9OwogCiBjbGFzcyBTVkdBdHRyaWJ1dGVBbmltYXRvciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHQXR0cmlidXRlQW5pbWF0b3Io
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICAgICAgOiBtX2F0dHJpYnV0
ZU5hbWUoYXR0cmlidXRlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCmluZGV4IDI2NGMzNmI2OTA3NGNjZjNl
MmUyOWQyNjc3MjFjZjUzNzQ1NzAzMTEuLmEzNWUyNTBhOWIxNTFmOWU4OTdmODVmNjM2N2MzODdk
YmIzY2E1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZEVudW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdEZWNv
cmF0ZWRFbnVtZXJhdGlvbiA6IHB1YmxpYyBTVkdEZWNvcmF0ZWRQcmltaXRpdmU8RGVjb3JhdGlv
blR5cGUsIEVudQogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBFbnVtVHlwZSYgdmFsdWUp
CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8RGVjb3JhdGlv
blR5cGU+Ojp2YWx1ZSwgIkRlY29yYXRpb25UeXBlIGZvcm0gZW51bSBzaG91bGQgYmUgaW50ZWdy
YWwuIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0RlY29yYXRlZEVudW1l
cmF0aW9uPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0RlY29yYXRlZEVu
dW1lcmF0aW9uPih2YWx1ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTRhYjAz
NzBiOTQ3OWU1NTUwYmJiMTEwODczNDIzNTMxMTY2NTA3MC4uYWIxNGYzY2JlNWE3ZmMyMGUxMzBm
ZGE5YmQ0ODc5N2RkZGQzZTg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb3JhdGlvblR5cGU+CiBjbGFzcyBT
VkdEZWNvcmF0ZWRQcm9wZXJ0eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgU1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+
U1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgK
aW5kZXggNDEyMTcyMjBiZGZjZmVmZjY3YzE2MDkxM2FkMTRkNmI5OWJhMTQyYy4uNjhiMmUwYjEx
MzdhZGU4ZDM3ZjgwZTBlMjk4YjVkZTI0ZDAxYTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3Iu
aApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yIDog
cHVibGljIFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5pbWF0aW9uRnVuY3RpbwogcHVibGljOgogICAg
IHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
V1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJn
dW1lbnRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKaW5kZXggYWQ1MGQ0MjM2Mjk2OTQyZDFkYzg3MThh
MmRhOGU2YWRmOGQxYmNjYi4uNWUzMDE4ZjVhNDAyYTljN2YxMjlkNDFkNDE5YWM1ZTk0OWZlZTA0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlB
bmltYXRvckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9y
eSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDExODg4NmM0Zjhi
YjcyMzZhNDQ2ZmZhZDAzODY5ZmYwYjBkY2RlOTUuLmZkM2RjOTYwZmZhN2QzMTI5MDEzN2Q0NTJj
ZGUxYTI4NzlhN2VkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTM5LDcgKzM5LDcg
QEAgY2xhc3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0
eUFuaW1hdG9yPFNWR0xlbmd0aCwgU1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYm
IHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2Rl
LCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBX
VEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1v
ZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKaW5kZXggNWVlOGFj
M2QwZjRlMTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2OC4uYWU5NGUyOWVkNGI4NjEzYjk5Y2Q5
NzQ4NmVkMGIwNjI4MjZjMDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCkBA
IC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhMaXN0QW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBX
VEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggYzExMzFkMjViMzg4YmJhODM2NjUzZDI5NzA4
ZTZhNWJiZTRiZGZjNC4uMjQzNzg5YmI5ZDI3OWE2ZTg1M2UwODY0NGI2NGJlZTg1MWU1ZWUyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0yMzEs
NiArMjMxLDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0
aW5ncyYgc2V0dGluZ3MpCiB9CiAKIGNsYXNzIEludGVybmFsU2V0dGluZ3NXcmFwcGVyIDogcHVi
bGljIFN1cHBsZW1lbnQ8UGFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3NXcmFwcGVyKFBhZ2UqIHBhZ2UpCiAg
ICAgICAgIDogbV9pbnRlcm5hbFNldHRpbmdzKEludGVybmFsU2V0dGluZ3M6OmNyZWF0ZShwYWdl
KSkgeyB9CkBAIC0yNTIsNyArMjUzLDcgQEAgY29uc3QgY2hhciogSW50ZXJuYWxTZXR0aW5nczo6
c3VwcGxlbWVudE5hbWUoKQogSW50ZXJuYWxTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6ZnJv
bShQYWdlKiBwYWdlKQogewogICAgIGlmICghU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBz
dXBwbGVtZW50TmFtZSgpKSkKLSAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBh
Z2UsIHN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dy
YXBwZXI+KHBhZ2UpKTsKKyAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2Us
IHN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBh
Z2UpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIqPihT
dXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKS0+aW50ZXJuYWxT
ZXR0aW5ncygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTE3
OGI0OTY4NTg3NTUxYmYwNzA0ZDgzMDIwNTYyZGQxMmRmNGViYi4uNjJlNzM0OWExY2ExNjYyZDA2
MmM2MDc5Mzg5MmZjNzBmZjYwNTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtMzQxLDcgKzM0MSw3IEBAIGNsYXNzIEluc3BlY3RvclN0dWJGcm9udGVuZCBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBwdWJsaWMKIH07CiAKIEluc3Bl
Y3RvclN0dWJGcm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKFBhZ2UmIGluc3BlY3RlZFBh
Z2UsIFJlZlB0cjxET01XaW5kb3c+JiYgZnJvbnRlbmRXaW5kb3cpCi0gICAgOiBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwg
ZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKKyAgICA6IEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwoJmluc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLCBm
cm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpLCBtYWtlVW5pcXVlPEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPigpKQogICAgICwgbV9mcm9udGVuZFdpbmRvdyhm
cm9udGVuZFdpbmRvdy5jb3B5UmVmKCkpCiB7CiAgICAgQVNTRVJUX0FSRyhmcm9udGVuZFdpbmRv
dywgZnJvbnRlbmRXaW5kb3cpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIEludGVybmFsczo6SW50ZXJu
YWxzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1l
KCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPmlzTWFpbkZyYW1l
KCkpIHsKICAgICAgICAgYXV0byBtb2NrUGF5bWVudENvb3JkaW5hdG9yID0gbmV3IE1vY2tQYXlt
ZW50Q29vcmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwotICAgICAgICBmcmFtZS0+cGFnZSgpLT5z
ZXRQYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+
KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBh
eW1lbnRDb29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXlt
ZW50Q29vcmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTE0MTcsNyArMTQxNyw3IEBA
IHZvaWQgSW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKQogICAgIGlmICgh
c3ludGhlc2lzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzeW50aGVzaXMtPnNldFBsYXRmb3Jt
U3ludGhlc2l6ZXIoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
az4oc3ludGhlc2lzKSk7CisgICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKG1h
a2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOwogfQog
CiAjZW5kaWYKQEAgLTI0ODksNyArMjQ4OSw3IEBAIFJlZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJu
YWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBh
dXRvKiBpbnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsK
ICAgICBhdXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
LT5kb21XaW5kb3coKTsKICAgICBhdXRvIGZyb250ZW5kV2luZG93UHJveHkgPSB3aW5kb3ctPm9w
ZW4oKndpbmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwot
ICAgIG1faW5zcGVjdG9yRnJvbnRlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclN0dWJG
cm9udGVuZD4oKmluc3BlY3RlZFBhZ2UsIGRvd25jYXN0PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5k
b3dQcm94eS0+d2luZG93KCkpKTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5k
b3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CiAgICAgcmV0dXJuIGZyb250ZW5k
V2luZG93UHJveHk7CiB9CiAKQEAgLTMwMDksNyArMzAwOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEludGVybmFsczo6c2V0Vmlld0V4cG9zZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdp
ZHRoLCBmCiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQcmludGluZyhpbnQgd2lkdGgsIGludCBoZWln
aHQpCiB7Ci0gICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cmludENvbnRleHQ+KGZyYW1lKCkpOworICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IG1h
a2VVbmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKICAgICBwcmludENvbnRleHRGb3JUZXN0
aW5nKCktPmJlZ2luKHdpZHRoLCBoZWlnaHQpOwogfQogCkBAIC0zNDQ4LDcgKzM0NDgsNyBAQCB2
b2lkIEludGVybmFsczo6ZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KQogCiB2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0oKQogewot
ICAgIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAorICAgIExlZ2Fj
eUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAogICAgICAgICBMZWdhY3lNb2NrQ0RNOjpz
dXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1l
VHlwZSk7CiB9CiAKQEAgLTQyNDEsNyArNDI0MSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1p
Y3JvVGFzayhpbnQgdGVzdE51bWJlcikKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2Fs
bGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3Vt
ZW50LCBbZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFr
ZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5U
aHJlYWRRdWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVudCwgdGVzdE51bWJlcl0oKSB7CiAgICAg
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCB0ZXN0TnVtYmVyLCAiIGhh
cyBydW4uIikpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0xlZ2FjeU1vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RN
LmNwcAppbmRleCA2NDI4N2QyMzlhZjU3M2U5MjAzZDI1ODQzMWIyNzNjN2I4NzQ5MDA2Li42MDI3
MmQzNDk3ZjRiODY1Y2RiMDM3MGZlNDFkM2Q2ZmJkZThiN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTW9ja0NETVNlc3Npb24gOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETVNlc3Np
b24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfk1vY2tDRE1TZXNzaW9u
KCkgPSBkZWZhdWx0OwpAQCAtNzMsNyArNzQsNyBAQCBib29sIExlZ2FjeU1vY2tDRE06OnN1cHBv
cnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPExl
Z2FjeUNETVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vz
c2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tD
RE1TZXNzaW9uPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE1TZXNzaW9u
PihjbGllbnQpOwogfQogCiBzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQcmVmaXgoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAppbmRleCAyNGI5YjgwMDhjNGY1MTliNGE2
NjZlYzZkMTUyNWFjNjJlYzFjMzBhLi5iOTNhZWI5M2ZmNjMyOWU1MTU0N2MxM2ZmNzZhNjkyZWU2
YTcxODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lDRE07CiAKIGNsYXNzIExl
Z2FjeU1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5TW9ja0NETShMZWdh
Y3lDRE0qIGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDU2Nzk2ZWU5MDBiYmYzYjZjYzA1Y2Y2YTIyOTZlZmQ0
M2I5ZWY3YjYuLmNlNWQ4ZjdkNmJkZjM4YjU5MjIwOTMwMmE2ZTZkNzFiMzY5NjYzMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJp
bmc+JiYgdHlwZXMpCiAKIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9y
eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxN
b2NrQ0RNPihtYWtlV2Vha1B0cigqdGhpcykpOwogfQogCiBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQ
dHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmgKaW5kZXggMzM5NmNkMDJhZDAyZGQxNGU5MmYxNTc5ZTI3NTE2ZTZiYzNmNDI5OC4u
Mzk5MDliOTMwM2E5NGM5MzY4ZWFhMGY2MjVmNGI2N2U1MjUwNTlmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIE1vY2tD
RE1GYWN0b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NETUZhY3Rvcnk+LCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2NrQ0RNPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5Pik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTExODFk
YWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4Ny4uNzc4YTkxOGE2YjkwNzU1Y2I4NmQz
YWFhNzRmNzliM2U2MThkNGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBNb2NrQ29udGVudEZpbHRlcjo6
ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRl
bnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0Nv
bnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+
KCk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcApp
bmRleCBkM2FjNWQ4N2QxOWUyYTg1MzYxYzExNTcyY2YzMTFmMGM4M2IyNDViLi5kNDBkZWQxZGEx
MTk4Y2FhMzQ1OWQ2NzdlMWZlODRmNWJmYjk0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBNb2Nr
R2FtZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHModW5zaWduZWQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgZ2EKICAgICBpZiAobV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0pCiAgICAg
ICAgIG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdLT51cGRhdGVEZXRhaWxzKGdhbWVwYWRJRCwg
YXhpc0NvdW50LCBidXR0b25Db3VudCk7CiAgICAgZWxzZQotICAgICAgICBtX21vY2tHYW1lcGFk
VmVjdG9yW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1l
cGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOworICAgICAgICBtX21vY2tHYW1lcGFkVmVj
dG9yW2luZGV4XSA9IG1ha2VVbmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4
aXNDb3VudCwgYnV0dG9uQ291bnQpOwogfQogCiBib29sIE1vY2tHYW1lcGFkUHJvdmlkZXI6OmNv
bm5lY3RNb2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IGRiZTkwNzNkNmFkZWJmYzUwMTU5Y2My
ZWRiYjIyODNjY2QxN2JhODUuLjhmMTY0N2MxZjMyMjUxODE2YzdjZjA4OTYxODJhZTM0MjM1YzUx
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNw
cApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbAogewogICAgIFN0cmlu
ZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyht
ZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNz
YWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRz
KSwgZXhlYyk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZN
b3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRR
dWV1ZS5jcHAKaW5kZXggZjQzYmQyYTdhNjA1OTM3MjdhZDBhNmE5MWRlY2Q2ZWJlYzcyMjY4OC4u
NjkwM2JlNWVjMjVmYjkxZWZmNzc3NmU0NDc2YWQ0ZWEyYmNlNzMxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFdvcmtl
ckV2ZW50UXVldWU6On5Xb3JrZXJFdmVudFF1ZXVlKCkKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1
ZTo6RXZlbnREaXNwYXRjaGVyCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRXZlbnREaXNwYXRjaGVyKFJlZlB0cjxFdmVudD4mJiBldmVudCwgV29ya2VyRXZl
bnRRdWV1ZSYgZXZlbnRRdWV1ZSkKICAgICAgICAgOiBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQpA
QCAtODQsNyArODUsNyBAQCBib29sIFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWY8
RXZlbnQ+JiYgZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8qIGV2ZW50
UHRyID0gZXZlbnQucHRyKCk7Ci0gICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsKKyAgICBhdXRv
IGV2ZW50RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8RXZlbnREaXNwYXRjaGVyPihXVEZNb3ZlKGV2
ZW50KSwgKnRoaXMpOwogICAgIG1fZXZlbnREaXNwYXRjaGVyTWFwLmFkZChldmVudFB0ciwgZXZl
bnREaXNwYXRjaGVyLmdldCgpKTsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9zdFRh
c2soW2V2ZW50RGlzcGF0Y2hlciA9IFdURk1vdmUoZXZlbnREaXNwYXRjaGVyKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGV2ZW50RGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKaW5kZXggNjExNWVmNGEx
MzY1MmE2ZWFkMTBhZjM3Y2ZiNDk0MjgyMGMzY2IyYi4uZDg5NzNkNWJjYWUxN2I5NTUwMDQ0Yzdl
ODAxNjA1Yjk5ZDU0OWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZSBmaW5hbCA6IHB1Ymxp
YyBFdmVudFF1ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBXb3JrZXJFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAg
ICB2aXJ0dWFsIH5Xb3JrZXJFdmVudFF1ZXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDdiYTZlZGI1MjA4ZjIyYzNmOGYxNmRlMjlkODI1
Yjc3MWY2YzNlOWUuLmIxN2Q2NjM2M2FjMzU4MGU3YTM0NDAwODFhMmY3YzYzYTA3Mzg3NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02Miw5
ICs2Miw5IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwm
IHVybCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKICAgICAsIG1fdXNlckFnZW50KHVzZXJBZ2VudCkKICAgICAsIG1fdGhyZWFkKHRo
cmVhZCkKLSAgICAsIG1fc2NyaXB0KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2NyaXB0Q29udHJv
bGxlcj4odGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCi0gICAgLCBtX21pY3JvdGFza1F1
ZXVlKHN0ZDo6bWFrZV91bmlxdWU8TWljcm90YXNrUXVldWU+KG1fc2NyaXB0LT52bSgpKSkKKyAg
ICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisg
ICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyPigqdGhpcykpCisgICAgLCBtX21pY3JvdGFza1F1ZXVlKG1ha2VVbmlxdWU8TWljcm90
YXNrUXVldWU+KG1fc2NyaXB0LT52bSgpKSkKICAgICAsIG1faXNPbmxpbmUoaXNPbmxpbmUpCiAg
ICAgLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShzaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgLCBtX2V2ZW50UXVldWUo
KnRoaXMpCkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHVybCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgICAg
IG9yaWdpbi0+Z3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKIAogICAgIHNl
dFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoV1RGTW92
ZShvcmlnaW4pKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAgIHNl
dENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4o
VVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKIH0KIAogV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJH
bG9iYWxTY29wZSgpCkBAIC0zNjIsOSArMzYyLDkgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24K
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdl
OwogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2
ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50
aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2Fs
bFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCi0g
ICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VV
UkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsK
KyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4o
c291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RG
TW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggYTc1YzAxNTZjNTllMzhkZDk5OWQ2Y2VjMWRkZWVkZTIz
YmUxODdiMy4uNGU5ZjUxOWFlZmVkZDI1Zjg4M2Y2M2FjYTBhNDc4OWZmMDI3ZTRiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSYgV29ya2VyR2xvYmFsU2NvcGVQcm94
eTo6Y3JlYXRlKFdvcmtlciYgd29ya2VyKQogCiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2Vy
TWVzc2FnaW5nUHJveHkoV29ya2VyJiB3b3JrZXJPYmplY3QpCiAgICAgOiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQod29ya2VyT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAs
IG1faW5zcGVjdG9yUHJveHkoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4o
d29ya2VyT2JqZWN0LmlkZW50aWZpZXIoKSkpCisgICAgLCBtX2luc3BlY3RvclByb3h5KG1ha2VV
bmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQog
ICAgICwgbV93b3JrZXJPYmplY3QoJndvcmtlck9iamVjdCkKIHsKICAgICBBU1NFUlQoKGlzPERv
Y3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKQEAg
LTEyNSw3ICsxMjUsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRv
V29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydAogICAgICAgICArK21fdW5j
b25maXJtZWRNZXNzYWdlQ291bnQ7CiAgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCku
cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcXVldWVkRWFy
bHlUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPihXVEZNb3ZlKHRhc2spKSk7CisgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQo
bWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7
CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmNwcAppbmRleCBiY2Q5NGU2YWMwNDAzYWNkNmE1NGJhYzQxZmFiNDFlNWJmNTUy
N2RhLi5iZmFjOTU5MmRmYWE3OTIxMDA2NWIzNDU5YmQyMjE2MTk1Nzg0ODc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3Mg
TW9kZVByZWRpY2F0ZSB7CiB9OwogCiBXb3JrZXJSdW5Mb29wOjpXb3JrZXJSdW5Mb29wKCkKLSAg
ICA6IG1fc2hhcmVkVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkK
KyAgICA6IG1fc2hhcmVkVGltZXIobWFrZVVuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKIHsK
IH0KIApAQCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIAogdm9pZCBXb3JrZXJSdW5Mb29w
Ojpwb3N0VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFz
aykKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKHN0ZDo6bWFrZV91bmlxdWU8
VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVl
LmFwcGVuZEFuZEtpbGwobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9k
ZSgpKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAg
bV9tZXNzYWdlUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNr
KSwgbW9kZSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFRhc2s+KFdU
Rk1vdmUodGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0RGVidWdn
ZXJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDE5OTEyZjAyNzVmZWEx
OTQ4MDU0MmEwNzA5NzVkY2IwYzdkMjgwMzUuLjIyOGYzZDE3ZmYwMDIyZTYyZTYzNjQ1MzJkNTU2
Yjk1MDdhMDE4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9h
ZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dAogCiAg
ICAgQVNTRVJUKHNjcmlwdFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsKIAotICAgIGF1
dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihXVEZNb3ZlKHNj
cmlwdFJlcXVlc3QpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVx
dWVzdD4oV1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAg
ICByZXR1cm47CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjb25zdCBVUkwmIFdvcmtlclNjcmlwdExv
YWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1
ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291cmNlUmVxdWVzdChjb25zdCBTdHJp
bmcmIGluaXRpYXRvcklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtl
VW5pcXVlPFJlc291cmNlUmVxdWVzdD4obV91cmwpOwogICAgIHJlcXVlc3QtPnNldEhUVFBNZXRo
b2QoIkdFVCJfcyk7CiAgICAgcmVxdWVzdC0+c2V0SW5pdGlhdG9ySWRlbnRpZmllcihpbml0aWF0
b3JJZGVudGlmaWVyKTsKICAgICByZXR1cm4gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcAppbmRleCAxZjc1NjE4NmEyMGYwMTY5ZTQ3ODQzOTUxYmVlMzY4N2Uw
MDI0ZmJhLi4zYzM4NThiZGE5YjQ0YjU3ZmFkYjM5ZWZhMmUwYTBmM2EzMDQxMThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgV29y
a2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW4KICAgICAsIG1fd29ya2VyRGVidWdnZXJQcm94eSh3b3JrZXJE
ZWJ1Z2dlclByb3h5KQogICAgICwgbV93b3JrZXJSZXBvcnRpbmdQcm94eSh3b3JrZXJSZXBvcnRp
bmdQcm94eSkKICAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFncykKLSAgICAsIG1fc3Rh
cnR1cERhdGEoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0
VVJMLCBuYW1lLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCBzb3VyY2VDb2RlLCBz
dGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlw
YXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCB0b3BPcmlnaW4sIHRpbWVPcmlnaW4s
IHNlc3Npb25JRCkpCisgICAgLCBtX3N0YXJ0dXBEYXRhKG1ha2VVbmlxdWU8V29ya2VyVGhyZWFk
U3RhcnR1cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09u
bGluZSwgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9w
T3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogICAgICwgbV9pZGJDb25uZWN0aW9uUHJveHkoY29ubmVjdGlvblByb3h5KQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHAKaW5kZXggYjJkMjYxNWExMjYzZDE2MjY2MTgyMDA0NjQ4ZjkwZWRh
NjkyMDZiNS4uNTljNzFjNGQxNDc2MjdjZmQ5ZDMxYTQ1ZWFiY2NjZGFlMTAzZTc4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmRlcmVmRXZlbnRUYXJnZXQoKQogYXV0byBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZWFk
eSgpIC0+IFJlYWR5UHJvbWlzZSYKIHsKICAgICBpZiAoIW1fcmVhZHlQcm9taXNlKSB7Ci0gICAg
ICAgIG1fcmVhZHlQcm9taXNlID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkeVByb21pc2U+KCk7Cisg
ICAgICAgIG1fcmVhZHlQcm9taXNlID0gbWFrZVVuaXF1ZTxSZWFkeVByb21pc2U+KCk7CiAKICAg
ICAgICAgaWYgKG1faXNTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Np
b25JRCgpLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7CkBA
IC0xODAsNyArMTgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3Ry
YXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBqb2JEYXRhLnR5
cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI7CiAgICAgam9iRGF0YS5yZWdpc3Ry
YXRpb25PcHRpb25zID0gb3B0aW9uczsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlx
dWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9i
RGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0
aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVV
UkwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIwNiw3ICsyMDYsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwm
IHNjb3BlVVJMLCBSZWY8RGVmZXJyZQogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInJlbW92ZVJlZ2lzdHJhdGlvbjogVW5yZWdpc3RlcmluZyBzZXJ2aWNlIHdvcmtlci4g
Sm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9V
SW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3Jr
ZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAg
c2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwm
IHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRl
UmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYKIAogICAgIENPTlRB
SU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVwZGF0aW5n
IHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6ICUiIFBSSXU2NCwgam9iRGF0YS5pZGVudGlmaWVyKCku
am9iSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91
bmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUo
am9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+
KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2Ioc3RkOjp1bmlxdWVfcHRyPFNlcnZp
Y2VXb3JrZXJKb2I+JiYgam9iKQpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgY2xpZW50VVJMLCBSZWY8
RGVmZXJyCiAgICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyID0g
KyttX2xhc3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0byBwZW5kaW5nUHJvbWlz
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFr
ZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rp
dml0eSgqdGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlk
ZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAgIGF1dG8gY29udGV4dElk
ZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpAQCAtMzM0LDcgKzMzNCw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyhSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21p
c2VJZGVudGlmaWVyID0gKyttX2xhc3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0
byBwZW5kaW5nUHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1v
dmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRp
bmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwg
bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChw
ZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAg
IGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmgKaW5kZXggN2FjOWM5ODM4M2IwNGI2ZWI4OWM5OWYyMjA4ODVlNzY3Mzk3NmMzZi4u
M2JkNmI5YjA2ZTU3Mzc2NjViNThmOTY5ZTI5M2QwZmVkNjJjM2NjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5o
CkBAIC0xMzksNiArMTM5LDcgQEAgY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lciBmaW5hbCA6
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWMKICNlbmRpZgogCiAg
ICAgc3RydWN0IFBlbmRpbmdQcm9taXNlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nUHJvbWlzZShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIFJlZjxQZW5kaW5nQWN0aXZpdHk8U2VydmljZVdvcmtlckNvbnRhaW5lcj4+JiYg
cGVuZGluZ0FjdGl2aXR5KQogICAgICAgICAgICAgOiBwcm9taXNlKFdURk1vdmUocHJvbWlzZSkp
CiAgICAgICAgICAgICAsIHBlbmRpbmdBY3Rpdml0eShXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IGVkYmM4ZjkxZWU0MzQ2MmE1MDQ5ZTg4YzFjZWY1
ZWZhNzYyYzk4ZmYuLmNiNWMyMjFmYzk0ODhkN2MwMDcyOTgzYTE1Nzg5NWRjYThjNmNlYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTV0NvbnRleHRN
YW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgU2Vjb24KIAogICAgIHNlcnZpY2VXb3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0
ZWQoKTsKIAotICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFk
ZChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJl
cXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CisgICAgbV9wZW5kaW5nU2Vydmlj
ZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8U2Vy
dmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQp
KTsKIAogICAgIGF1dG8mIHRocmVhZCA9IHNlcnZpY2VXb3JrZXItPnRocmVhZCgpOwogICAgIHRo
cmVhZC5zdG9wKFt0aGlzLCBpZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyID0gV1RGTW92ZShzZXJ2
aWNlV29ya2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4
IGM2MTczNjEzY2FjYjU1ZDY5MDU4YmUyYzdlMmE1ZmJkODUyOWM3NzYuLjllNzI4YzNhN2FmYTQ2
Yzk0OWNkY2JlMGQ2ZmViMDRhOTUzMWNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAg
ICAgYWxsU2VydmljZVdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX3JlbW90ZURlYnVnZ2FibGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigqdGhpcywgZGF0YSk7CisgICAgbV9yZW1v
dGVEZWJ1Z2dhYmxlID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMs
IGRhdGEpOwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dl
ZCh0cnVlKTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPmluaXQoKTsKICNlbmRpZgpAQCAtMTY4
LDcgKzE2OCw3IEBAIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxG
ZXRjaExvYWRlcj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVyKEZl
dGNoTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsKLSAgICBhdXRv
IGxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KGNsaWVudCwgbnVsbHB0cik7
CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxw
dHIpOwogICAgIGxvYWRlci0+c3RhcnRMb2FkaW5nQmxvYlVSTChtX2RvY3VtZW50LCBibG9iVVJM
KTsKICAgICBpZiAoIWxvYWRlci0+aXNTdGFydGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdp
c3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCAxYzc4MzEyYzg1NDgyZjk4NjlhNWZj
MGM2ZDJjYzZjNmZkZmMxMGEwLi5lNGI4NDMxNjg0ZjdkODdkMmJmZGU2ZGQ0MjdmMzM5MDMwMzRi
YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1Jl
Z2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZv
aWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcm
IGZ1bGxGaWxlbmFtZSkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRGly
ZWN0b3J5RXhpc3RzKG1fZGF0YWJhc2VEaXJlY3RvcnkpOwogCi0gICAgbV9kYXRhYmFzZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9kYXRhYmFzZSA9IG1ha2VV
bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuKGZ1bGxG
aWxlbmFtZSkpIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0gIkZhaWxlZCB0byBvcGVuIHJlZ2lz
dHJhdGlvbiBkYXRhYmFzZSI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZmU1Y2M4NTllNjVh
NmUzMmE3OGI1Mjg5NzVhMTMyZTc0YmYxNzg3ZS4uOTMyNmEzYmFjNjU5YTI0NjcwNWU5MjBhODg4
NDZkZjRkMGU5NjliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNXU2VydmVyOjph
ZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkK
ICAgICAvLyBQYWdlcyBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIG1ha2UgYSBuZXcgcmVn
aXN0cmF0aW9uIHRvIHRoaXMga2V5IHdoaWxlIHRoZSBpbXBvcnQgd2FzIHN0aWxsIHRha2luZyBw
bGFjZS4KICAgICBBU1NFUlQoIW1fcmVnaXN0cmF0aW9ucy5jb250YWlucyhkYXRhLnJlZ2lzdHJh
dGlvbi5rZXkpKTsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxT
V1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5y
ZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBk
YXRhLnNjcmlwdFVSTCk7CisgICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2Vy
dmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lz
dHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEu
c2NyaXB0VVJMKTsKICAgICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRhdGEucmVn
aXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKICAgICBhdXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJl
Z2lzdHJhdGlvbi5nZXQoKTsKICAgICBhZGRSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRp
b24pKTsKQEAgLTMwNCw3ICszMDQsNyBAQCBTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNX
T3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbgogewogICAg
IEFTU0VSVCghcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSkKLSAgICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0
cmF0aW9uU3RvcmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5
KSk7CisgICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBtYWtlVW5pcXVlPFJlZ2lzdHJhdGlv
blN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOwog
ICAgIGVsc2UKICAgICAgICAgcmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwogCkBA
IC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtl
ckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRo
IHRoYXQgam9iLgogCiAgICAgYXV0byYgam9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpv
YkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0aGlzLCAmam9iRGF0YV0gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdp
c3RyYXRpb25LZXkoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNXU2VydmVySm9iUXVl
dWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiAKICAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKGpvYkRhdGEpOwpAQCAtODIwLDcgKzgy
MCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0
IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAKICAgICBpZiAoY2xpZW50SWRlbnRpZmll
cnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVCghaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXJzVGltZXIpOwotICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRl
U2VydmljZVdvcmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmln
aW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlzXSB7CisgICAgICAgIGl0ZXJhdG9yLT52
YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oW2Ns
aWVudE9yaWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNdIHsKICAgICAgICAgICAg
IFZlY3RvcjxTV1NlcnZlcldvcmtlcio+IHdvcmtlcnNUb1Rlcm1pbmF0ZTsKICAgICAgICAgICAg
IGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVz
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXIt
Pm9yaWdpbigpID09IGNsaWVudE9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDhiNjhi
NzBmMDFkMjUyNzhhZjUzOGFiY2U5MTRiOGM3YzY4YWI4MzcuLmRjYWY1YThhNzEwZjc5NDQ2NDdk
ZTNjZDVlOTgwNjM5OWE4ZmQ1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMjg2LDcgKzI4
Niw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0VXBkYXRl
VmlhQ2FjaGUoam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUpOwogICAgICAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5S
ZWdpc3RlckpvYjogRm91bmQgcmVnaXN0cmF0aW9uICVsbHUgZm9yIGpvYiAlcyBidXQgaXQgbmVl
ZHMgdXBkYXRpbmciLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
LCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9
IGVsc2UgewotICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJl
Z2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlw
dFVSTCk7CisgICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0
aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJMKTsK
ICAgICAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUobmV3UmVnaXN0cmF0aW9u
KSk7CiAKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJK
b2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IE5vIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiBmb3Igam9i
ICVzLCBjb25zdHJ1Y3RpbmcgYSBuZXcgb25lLiIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDJiN2EyZmUzZmJiNThkNGM0
ZWUzOGZjMDRiNTM2YTNlNGUwYzc3ZTcuLjNiZTc1N2UwMmFlMTlkNzU5MGVjMDdiM2ZhNGNiZTdk
NjNjZTgxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQ
YWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsCiAgICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVl
LCBnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgICAgIGF1dG8gcGFpbnRE
ZWZpbml0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50
Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQ
cm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpOworICAgICAgICBhdXRvIHBhaW50
RGVmaW5pdGlvbiA9IG1ha2VVbmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0
cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVy
dGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKICAgICAgICAgcGFpbnREZWZpbml0aW9u
TWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRl
eCA5NmNmMTg1MGIwY2FlM2FhZTk2MDdkYjEzNDE2NzM1OGI2NzFjMWQ5Li42NGZjNzhlZWU3ODgw
ZWQ5YmVkY2ZjMmE3MDEyY2E2ZWMzY2UxYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3Mg
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlIHsKIAog
ICAgIC8vIEFsbCBwYWludCBkZWZpbml0aW9ucyBtdXN0IGJlIGRlc3Ryb3llZCBiZWZvcmUgdGhl
IHZtIGlzIGRlc3Ryb3llZCwgYmVjYXVzZSBvdGhlcndpc2UgdGhleSB3aWxsIHBvaW50IHRvIGZy
ZWVkIG1lbW9yeS4KICAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFBhaW50RGVmaW5pdGlvbj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBBdG9tU3RyaW5nJiBuYW1l
LCBKU0M6OkpTT2JqZWN0KiBwYWludENvbnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4m
JiwgVmVjdG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5w
dXRBcmd1bWVudHMpOwogCiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcgbmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4ZThh
MmE0Y2EyM2UyYjkzZGExMzRhZmI1MmQwZTk1NzZjNDAyMTU5Li4zZjA5MjU2M2JkNTJhYzRhNGJi
ZWRhNDE1YzIzN2EyZDFkZmRhZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgV29ya2xldENv
bnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1l
c3NhZ2VMZXZlCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50cy0+Z2V0
Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMp
LCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdl
VGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKICAgICBtX3dvcmtsZXRHbG9iYWxTY29w
ZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggNGJiNzg4ZWE2M2Nk
NmJiZGM1MzI1ODdlMDUxMGQ1MzI1MjYwNmZmYS4uY2VmODJmN2I0MTFkMjE4YzczM2Q2NmZhOWRi
YTJkOTMxMjVhZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXb3JrbGV0R2xvYmFsU2NvcGUpOwogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFs
U2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKICAgICA6
IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9zZXNzaW9uSUQobV9k
b2N1bWVudC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8
V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogICAg
ICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCkBAIC02Miw3ICs2Miw3IEBAIFdvcmtsZXRHbG9iYWxT
Y29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNl
Q29kZSYmIGNvCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKICAgICBzZXRTZWN1cml0
eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNv
cHlSZWYoKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyBtX2NvZGUudXJsKCkgfSwgKnRoaXMpKTsKIH0KIAogV29ya2xldEdsb2JhbFNj
b3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6Q29uc29sZU1lcwogewogICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9y
YmlkZGVuKCkgfHwgIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5h
ZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCks
IG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNl
KCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgp
LCAwKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMWNlZTll
YjM0MjFjZDk5YTU2Yzg4NjBiOGVjZGQ0NTk2ZjgwZDJkZS4uNzEzMzkwMGYxNzFlZWY0MTU2NzNk
NGU5MGQ1Y2Y3N2NmZWJjMmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQogICAgIEFTU0VS
VChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgp
ID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFs
U2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2xldENvbnNvbGVD
bGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxFcnJvcnMuaAppbmRleCBiMDIxY2NlMTUzYzMxOTI5NTBhMmJmNzdkODA5YTI4NDdh
YjBmMGMxLi5hNjMyN2I5ZGZmMWI3NmJiNTgyYzYzNjAzODE1MjQyOGM3MWFhODI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEVycm9ycy5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIERvY3VtZW50OwogCiBjbGFzcyBYTUxFcnJvcnMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFhNTEVycm9ycyhEb2N1bWVudCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBmMDE5M2Q4Yzk2ZTM1YzlmZjc1
ZTZhNjNhMzUwYzY1NWRjYTg2MGVmLi5mODY2MzNhOGQ2ZGI3MDU0MzAxODgyODU3NWI1OWYyNjY3
YzY2ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI3Myw3ICsy
NzMsNyBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVVJMKCkgY29uc3QKIFhNTEh0
dHBSZXF1ZXN0VXBsb2FkJiBYTUxIdHRwUmVxdWVzdDo6dXBsb2FkKCkKIHsKICAgICBpZiAoIW1f
dXBsb2FkKQotICAgICAgICBtX3VwbG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8WE1MSHR0cFJlcXVl
c3RVcGxvYWQ+KCp0aGlzKTsKKyAgICAgICAgbV91cGxvYWQgPSBtYWtlVW5pcXVlPFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VwbG9hZDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggYWQ3ZTEzYzhhMTk0YWQ1NmQ2MjM0MjAw
MDE3Y2JhNzdmZTgwYjc0Mi4uYTkyNDQwOWVlNDZjNTNlNzNiMjdhNDlhMTllZmU5Njk3MjE2NzNh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgYykKICAgICByZXR1cm4gYyA9
PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcdCc7CiB9CiAKLSNkZWZp
bmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQorI2RlZmluZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihT
dWZmaXgpIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNT
dWZmaXgoKSB7IHJldHVybiBtYWtlVW5pcXVlPEZ1biMjU3VmZml4PigpOyB9CiAKIGNsYXNzIElu
dGVydmFsIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBy
ZWRpY2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4
IDA0NjE1YzNkNWYwMzEzMTA2OTM4ZmFhMDVmYjM5Yzk5Y2UxMjNiNWMuLmMxYmJjNTRlYjgzMDE2
OTExOWM4NjgzMWE0ZjJhNmU3YzAwNDU2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFByZWRpY2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGlj
YXRlLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgZXZhbHVhdGVQcmVkaWNhdGUoY29uc3Qg
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKIAogICAgIC8vIGZvb1szXSBtZWFucyBmb29bcG9zaXRp
b24oKT0zXQogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIEVxVGVz
dE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBzdGQ6
Om1ha2VfdW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9v
bGVhbigpOworICAgICAgICByZXR1cm4gRXFUZXN0T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlv
bjo6Y3JlYXRlKCJwb3NpdGlvbiJfcyksIG1ha2VVbmlxdWU8TnVtYmVyPihyZXN1bHQudG9OdW1i
ZXIoKSkpLmV2YWx1YXRlKCkudG9Cb29sZWFuKCk7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvQm9v
bGVhbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRM
aWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAK
aW5kZXggZWMyYzZhZTA0NTlhMDY5MjU2YTY2MmY3MmM4NzI2N2ZlYTFhNDViZC4uNjMwNGU5Mjgx
MWE5MzRmN2RlNzRjOGM5NGIyYjY5YzAwNGVhNDk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBYU0xTdHls
ZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldHMoKQogCiB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGls
ZFNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZikKIHsKLSAgICBhdXRvIGNoaWxkUnVsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8WFNMSW1wb3J0UnVsZT4odGhpcywgaHJlZik7CisgICAgYXV0byBjaGlsZFJ1
bGUgPSBtYWtlVW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYpOwogICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKGNoaWxkUnVsZS5yZWxlYXNlKCkpOwogICAgIG1fY2hpbGRyZW4ubGFzdCgpLT5s
b2FkU2hlZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHAKaW5kZXggZTAyNGVmYjU2YmY2NTJiOTBhOWExZDRmODEzMDY0OTE4MzBkOGUw
Zi4uNzA0ODg5MmE1YWEwZWY5YTU1ZmJkMjQwOGNkMTc5MTRkMDJhOWM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTEyOCw3ICsx
MjgsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+
JiYgaW5wdXRTb3VyY2UpCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihYTUxF
cnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24gcG9zaXRp
b24pCiB7CiAgICAgaWYgKCFtX3htbEVycm9ycykKLSAgICAgICAgbV94bWxFcnJvcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkpOworICAgICAgICBtX3htbEVycm9y
cyA9IG1ha2VVbmlxdWU8WE1MRXJyb3JzPigqZG9jdW1lbnQoKSk7CiAgICAgbV94bWxFcnJvcnMt
PmhhbmRsZUVycm9yKHR5cGUsIG0sIHBvc2l0aW9uKTsKICAgICBpZiAodHlwZSAhPSBYTUxFcnJv
cnM6Ondhcm5pbmcpCiAgICAgICAgIG1fc2F3RXJyb3IgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4
IGI5MzEwMWI4YWFjNDgzOWEzOWJiNTRiMmI4OWRlODk4Yzc5Yjc1YWIuLmI5OWIzMDg5NzM4NTUw
OWViYWIwNDUyMTM5NzUzOWIwNzBjZWU3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRTdGFy
dEVsZW1lbnROU0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3QgeG1s
Q2hhciogeG1sUHJlZml4LCBjb25zdCB4bWxDaGFyKiB4bWxVUkksIGludCBudW1OYW1lc3BhY2Vz
LCBjb25zdCB4bWxDaGFyKiogbmFtZXNwYWNlcywgaW50IG51bUF0dHJpYnV0ZXMsIGludCBudW1E
ZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIqKiBhdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgYXV0
byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJh
Y2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdTdGFydEVs
ZW1lbnROU0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT54bWxMb2NhbE5hbWUgPSB4
bWxTdHJkdXAoeG1sTG9jYWxOYW1lKTsKICAgICAgICAgY2FsbGJhY2stPnhtbFByZWZpeCA9IHht
bFN0cmR1cCh4bWxQcmVmaXgpOwpAQCAtMTIyLDEyICsxMjIsMTIgQEAgY2xhc3MgUGVuZGluZ0Nh
bGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKCkKICAgICB7
Ci0gICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFbmRF
bGVtZW50TlNDYWxsYmFjaz4oKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChtYWtlVW5p
cXVlPFBlbmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4oKSk7CiAgICAgfQogCiAgICAgdm9pZCBh
cHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7
Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDaGFyYWN0
ZXJzQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRp
bmdDaGFyYWN0ZXJzQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJu
ZHVwKHMsIGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xMzcsNyArMTM3
LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZFByb2Nlc3Np
bmdJbnN0cnVjdGlvbkNhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHRhcmdldCwgY29uc3QgeG1sQ2hh
ciogZGF0YSkKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBj
YWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNr
PigpOwogCiAgICAgICAgIGNhbGxiYWNrLT50YXJnZXQgPSB4bWxTdHJkdXAodGFyZ2V0KTsKICAg
ICAgICAgY2FsbGJhY2stPmRhdGEgPSB4bWxTdHJkdXAoZGF0YSk7CkBAIC0xNDcsNyArMTQ3LDcg
QEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZENEQVRBQmxvY2tD
YWxsYmFjayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgIHsKLSAgICAgICAgYXV0byBj
YWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsK
KyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxs
YmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cm5kdXAocywgbGVuKTsKICAg
ICAgICAgY2FsbGJhY2stPmxlbiA9IGxlbjsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBjbGFzcyBQZW5k
aW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kQ29tbWVudENhbGxiYWNrKGNvbnN0IHht
bENoYXIqIHMpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFr
ZVVuaXF1ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5z
ID0geG1sU3RyZHVwKHMpOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxi
YWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2soY29uc3QgeG1s
Q2hhciogbmFtZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciogc3lz
dGVtSUQpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQ
ZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9
IG1ha2VVbmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7CiAKICAgICAgICAg
Y2FsbGJhY2stPm5hbWUgPSB4bWxTdHJkdXAobmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT5leHRl
cm5hbElEID0geG1sU3RyZHVwKGV4dGVybmFsSUQpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGNsYXNz
IFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFcnJvckNhbGxiYWNrKFhNTEVy
cm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IHhtbENoYXIqIG1lc3NhZ2UsIE9yZGluYWxOdW1i
ZXIgbGluZU51bWJlciwgT3JkaW5hbE51bWJlciBjb2x1bW5OdW1iZXIpCiAgICAgewotICAgICAg
ICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRXJyb3JDYWxsYmFjaz4o
KTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJh
Y2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPm1lc3NhZ2UgPSB4bWxTdHJkdXAobWVzc2FnZSk7
CiAgICAgICAgIGNhbGxiYWNrLT50eXBlID0gdHlwZTsKQEAgLTE5Nyw2ICsxOTcsNyBAQCBjbGFz
cyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGVuZGluZ0NhbGxi
YWNrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2
aXJ0dWFsIH5QZW5kaW5nQ2FsbGJhY2soKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjYWxsKFhNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIpID0gMDsKICAgICB9OwpAQCAtNTY0LDcg
KzU2NSw3IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24pCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIo
RG9jdW1lbnQmIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICA6IFNjcmlwdGFi
bGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fdmlldyhmcmFtZVZpZXcpCi0gICAg
LCBtX3BlbmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigp
KQorICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4o
KSkKICAgICAsIG1fY3VycmVudE5vZGUoJmRvY3VtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBv
c2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiB7CkBAIC01NzIsNyAr
NTczLDcgQEAgWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBk
b2N1bWVudCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxE
b2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50
RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIDog
U2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCksIHBhcnNlckNvbnRl
bnRQb2xpY3kpCi0gICAgLCBtX3BlbmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nQ2FsbGJhY2tzPigpKQorICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVu
ZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUoJmZyYWdtZW50KQogICAgICwg
bV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkp
CiAgICAgLCBtX3BhcnNpbmdGcmFnbWVudCh0cnVlKQpAQCAtMTMyOCw3ICsxMzI5LDcgQEAgdm9p
ZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQoKQogICAgICAgICB4bWxUcmVlVmlld2VyLnRyYW5z
Zm9ybURvY3VtZW50VG9UcmVlVmlldygpOwogICAgIH0gZWxzZSBpZiAobV9zYXdYU0xUcmFuc2Zv
cm0pIHsKICAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbERvY1B0ckZvclN0cmluZyhkb2N1bWVu
dCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3Jt
LnRvU3RyaW5nKCksIGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKLSAgICAgICAgZG9jdW1l
bnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291cmNl
Pihkb2MpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKG1ha2VVbmlx
dWU8VHJhbnNmb3JtU291cmNlPihkb2MpKTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJz
aW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUgZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3
aWxsIGFwcGx5IFhTTCBzdHlsZXNoZWV0cy4KICAgICAgICAgZG9jdW1lbnQoKS0+YXBwbHlQZW5k
aW5nWFNMVHJhbnNmb3Jtc05vd0lmU2NoZWR1bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
RHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJT
ZXJ2aWNlLmNwcAppbmRleCAwNWJjOTUzZjdmMGRkYzc4N2IxZTYzMDQ4NzY5NmMyMDg1OWNhZTBm
Li5kNjllMTQ5OTJkNTg2NzUxY2EwNDM0MjYzNjJhNmY0MWMyNjk5ZjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2
ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFdlYkRyaXZl
clNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIoVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmls
aXRpZXNMaXN0LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSG9z
dCA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxh
c3QoKSk7CisgICAgYXV0byBzZXNzaW9uSG9zdCA9IG1ha2VVbmlxdWU8U2Vzc2lvbkhvc3Q+KGNh
cGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7CiAgICAgYXV0byogc2Vzc2lvbkhvc3RQdHIgPSBz
ZXNzaW9uSG9zdC5nZXQoKTsKICAgICBzZXNzaW9uSG9zdFB0ci0+Y29ubmVjdFRvQnJvd3Nlcihb
dGhpcywgY2FwYWJpbGl0aWVzTGlzdCA9IFdURk1vdmUoY2FwYWJpbGl0aWVzTGlzdCksIHNlc3Np
b25Ib3N0ID0gV1RGTW92ZShzZXNzaW9uSG9zdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpIG11dGFibGUgewog
ICAgICAgICBpZiAoZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9T
ZXNzaW9uSG9zdEdsaWIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xp
Yi5jcHAKaW5kZXggN2EyMGI4OTQxYWZmNzJhODUyYjc2ZjVjNTUxMDYyNjU0Nzc0YTFjYy4uMTc3
YWE1NGYyMjI5N2FjMzE2MTRkMzUzYmU5ZjNhNzlkMWFhYjE5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKQEAgLTExMyw2ICsxMTMsNyBAQCBib29sIFNlc3Np
b25Ib3N0Ojppc0Nvbm5lY3RlZCgpIGNvbnN0CiB9CiAKIHN0cnVjdCBDb25uZWN0VG9Ccm93c2Vy
QXN5bmNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQ29u
bmVjdFRvQnJvd3NlckFzeW5jRGF0YShTZXNzaW9uSG9zdCogc2Vzc2lvbkhvc3QsIEdVbmlxdWVQ
dHI8Y2hhcj4mJiBkYnVzQWRkcmVzcywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rp
b248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgICAgIDogc2Vzc2lvbkhvc3Qoc2Vzc2lvbkhvc3QpCiAgICAgICAgICwgZGJ1c0FkZHJlc3Mo
V1RGTW92ZShkYnVzQWRkcmVzcykpCkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBTZXNzaW9uSG9z
dDo6bGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4m
JiBjb21wbGUKICAgICB9LCB0aGlzKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGJ1c0FkZHJl
c3MoZ19zdHJkdXBfcHJpbnRmKCJ0Y3A6aG9zdD0lcyxwb3J0PSV1IiwgIjEyNy4wLjAuMSIsIHBv
cnQpKTsKLSAgICBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6bWFrZV91bmlxdWU8Q29ubmVjdFRvQnJv
d3NlckFzeW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFibGUu
Z2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgY29ubmVjdFRvQnJvd3Nl
cihtYWtlVW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1
c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkpOwogfQogCiB2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVl
X3B0cjxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPiYmIGRhdGEpCkBAIC0zNzEsNiArMzcyLDcg
QEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5l
Y3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQKIH0KIAogc3RydWN0IE1lc3NhZ2VDb250ZXh0IHsK
KyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgbG9uZyBtZXNzYWdlSUQ7
CiAgICAgU2Vzc2lvbkhvc3QqIGhvc3Q7CiB9OwpAQCAtMzgxLDcgKzM4Myw3IEBAIHZvaWQgU2Vz
c2lvbkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGxvbmcgbWVzc2FnZUlELCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKG1fY29ubmVjdGlvbklEKTsKICAgICBBU1NFUlQobV90
YXJnZXQuaWQpOwogCi0gICAgYXV0byBtZXNzYWdlQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
TWVzc2FnZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlELCB0aGlzIH0pOworICAg
IGF1dG8gbWVzc2FnZUNvbnRleHQgPSBtYWtlVW5pcXVlPE1lc3NhZ2VDb250ZXh0PihNZXNzYWdl
Q29udGV4dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxs
KG1fZGJ1c0Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsCiAgICAgICAgIElOU1BFQ1RPUl9EQlVT
X09CSkVDVF9QQVRILAogICAgICAgICBJTlNQRUNUT1JfREJVU19JTlRFUkZBQ0UsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFu
YWdlci5oCmluZGV4IGI2MmYxMmUxODJmMjFlYjhkNTEwNzRjYjI1NGQ3YjIxMmUwY2VkMTkuLmI0
NDVlN2E2NWE0OGQwNzQ4YmQ3ZTkyMDVhMzQ0MGY3ZjFhOTU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5o
CkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBZENsaWNrQXR0cmlidXRp
b25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKICAg
ICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlLmNwcAppbmRleCAyZTI5NmIyOWY0M2E0ZmM4OGU3MDA5MzI0YTVlMjNiMGJlOWNkNTFj
Li45MzAzZDJhZGMxNWVmNmZiMzEwYjZmYjE2ZDA3MGNjODUzZmRjM2MzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNw
cApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKCkKICAgICBpZiAocmVzb3VyY2VMb2dQYXRo
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwgbV93b3JrUXVldWUuY29w
eVJlZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVl
PEZpbGVNb25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3Ro
aXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JE
aXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmls
ZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93
b3JrUXVldWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0
eXBlKSB7CisgICAgbV9maWxlTW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHN0b3Jh
Z2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVD
aGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAg
ICAgICAgIGlmICh0eXBlID09IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbCkg
ewogICAgICAgICAgICAgLy8gRGlyZWN0b3J5IHdhcyByZW1vdmVkIQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCmluZGV4IDRj
MDMzZTM1M2Q0ZjMwOGY3Zjc2MDAxMmNhOTYyOTYzMDNjMTA3MzAuLjcxZjM0YmZhM2Q2YzJiNTI3
NjE2ODk0NGVlMzM0YzczZGFmNTAzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xh
c3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogCiAvLyBDYW4gb25seSBiZSBj
b25zdHJ1Y3RlZCAvIGRlc3Ryb3llZCAvIHVzZWQgZnJvbSB0aGUgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljIHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmLCBXb3JrUXVldWUmLCBjb25zdCBT
dHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKaW5kZXggYWRlYzE0Y2Y5Y2NkOTY0YzI5MDFjZTJkODRlYTM1NmRmNmRiMGZmMi4uNWRj
N2Q5OTQ3OGIzNGNhMzJiNzcyMGYwOTc0NWQwMjFhNmVjNDExNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNzcsNiArNzcsNyBAQCBlbnVtIGNsYXNzIE9w
ZXJhdGluZ0RhdGVzV2luZG93IDogYm9vbCB7IExvbmcsIFNob3J0IH07CiAKIC8vIFRoaXMgaXMg
YWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB1c2luZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljczsKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAppbmRleCBkYTg4NjZiNjFjOGIwNTcyY2RkNTA4ZWI2OWE5ZDhhOTg5ZTc1ZDIxLi44YjRh
ODgyMzk3NGQ2Y2YxNTU2OWRjZjlmZmU5OTFjMWUxYzBmYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTU5LDE1ICsxNTksMTUgQEAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoTmV0d29ya1Nlc3Npb24mIG4KICAgICAKICAgICBwb3N0VGFzayhbdGhpcywgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkuaXNvbGF0ZWRDb3B5KCksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RdIHsKICAgICAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNJVFBEYXRhYmFzZUVu
YWJsZWQoKSkgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0
aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVl
dWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOwogCi0gICAgICAgICAgICBhdXRvIG1lbW9yeVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1
ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRT
dG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIGF1dG8gbWVtb3J5U3RvcmUgPSBtYWtlVW5p
cXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGlj
c1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKKyAgICAgICAgICAgIGF1dG8gcGVyc2lz
dGVudFN0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkpOwogCiAgICAgICAgICAgICBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlLmdldCgpKS5wb3B1bGF0ZUZy
b21NZW1vcnlTdG9yZSgqbWVtb3J5U3RvcmUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0KTsKLSAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBt
X3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAg
ICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QpOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFnZSA9IG1ha2VVbmlxdWU8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPihkb3duY2FzdDxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlz
dGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEZJWE1FKDE5MzI5Nyk6IFRoaXMgc2hvdWxkIGJlIHJldmlzZWQgYWZ0ZXIg
dGhlIFVJUHJvY2VzcyB2ZXJzaW9uIGdvZXMgYXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDYwNWFl
ZjNlNmVlOTUwZjM5NDgzZmNkOGNjNGQ4ZTY1OGUwMmNmMGMuLmJiZTM5ODQ3NTJiZTE0NjA1MGQ1
MDM1NzEzNzE1NTBmYjJjYjYzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtNDgsNiArNDgsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBXZWJDb29r
aWVNYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXZWJDb29raWVNYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBXZWJDb29r
aWVNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5oCmluZGV4IGRjNzllZWJjZjE4ZGJmNjdiNDY0YzM1ODYxMGZi
M2NlN2NmZTkwY2MuLmY5MGYwZmNiNDE5MDI0YjhhOTVmNTc3MGM5Yjc5OTdiNTc4NGIzMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCkBAIC02
Myw2ICs2Myw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogc3RydWN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIg
OiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CkBAIC03OCw2
ICs3OSw3IEBAIGNsYXNzIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3
b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6CiAjZW5kaWYKICNpZiBVU0UoU09VUCkK
ICAgICBzdHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0RhdGEgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdS
ZWZQdHI8R1Rhc2s+JiYsIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyopOwogICAgICAgICB+V2Vi
U291cFJlcXVlc3RBc3luY0RhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKaW5kZXggMmM0ZDJmZjk0
ODA5YzQyYTYxMTY3M2I1ZmI1Y2FkYmZhNTkxNjA0ZS4uYzliMGMzYjIxNTdhZDhhZWJlNzQ2ZjRm
MzlmYjVlZmNkNzVlNzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3Vw
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCkBAIC03OCw3ICs3OCw3IEBAIGNs
YXNzIEN1c3RvbVByb3RvY29sUmVxdWVzdENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJLaXRTb3Vw
UmVxdWVzdEdlbmVyaWNDbGllbnQKICAgICAgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXIp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjdXN0b21Qcm90b2NvbElEID0g
Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChzdGQ6Om1ha2VfdW5pcXVl
PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KFdU
Rk1vdmUodGFzayksIHJlcXVlc3QpKTsKKyAgICAgICAgYXV0byBjdXN0b21Qcm90b2NvbElEID0g
Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChtYWtlVW5pcXVlPExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KFdURk1vdmUo
dGFzayksIHJlcXVlc3QpKTsKICAgICAgICAgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zdGFydExv
YWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwgd2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0UmVxdWVz
dChyZXF1ZXN0KSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGZmZmI0NzM1
ZGIyMWVkNTRhODBiNGQwM2Y0ZDRlNzA0NTQ2YmY5ZGMuLjUyMTA2M2NlOTEyMGJiMzUwOGQ5OWU0
YmU5MjRkN2U5NGEyZmEwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNTcsNyArNTcsNyBA
QCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVm
ZXJlbmNlcyA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3Ry
eSgpLmZpbGVzSW5CbG9iKHJlcXVlc3QudXJsKCkpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAKLSAg
ICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2Fk
cygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZj
bGllbnQoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2Vz
dGVkTmFtZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgbWFrZVVu
aXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9y
RG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vz
c2lvbiwgJmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgp
LCBzdWdnZXN0ZWROYW1lKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0Jl
Y2FtZURvd25sb2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxE
b3dubG9hZD4mJiBkb3dubG9hZCkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRhc2sm
IG5ldHcKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2Fk
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmIG5l
dHdvcmtMb2FkLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiBibG9iRmls
ZVJlZmVyZW5jZXMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdEb3dubG9hZHMu
Y29udGFpbnMoZG93bmxvYWRJRCkpOwotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxv
YWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUobmV0d29ya0xvYWQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsK
KyAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGlu
Z0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2Fkcygp
LCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25s
b2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpj
b250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxv
YWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQpAQCAtMTI0LDcgKzEyNCw3
IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAjZWxzZQotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5p
cXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKKyAg
ICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQs
IG51bGxwdHIsIHNlc3Npb25JRCk7CiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEs
IHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIEFTU0VSVCghbV9k
b3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCmluZGV4IGE4ODRhY2Iy
OTVkNDJjZTkzZTIxYmFjNDMzMDg0ZDdiYmM0MzNlNjUuLmFlM2NhN2UwZTRlZTdlYzg1ZGVhMmUz
MDllMWQzYzIwYjc0OTY1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRG93bmxv
YWRNYXA6OkRvd25sb2FkTWFwVHlwZTo6QWRkUmVzdWx0IERvd25sb2FkTWFwOjphZGQoRG93bmxv
YWRJRCBkb3dubG9hZElELAogICAgIGF1dG8gcmVzdWx0ID0gbV9kb3dubG9hZHMuYWRkKGRvd25s
b2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBpZiAobV9kb3dubG9hZHMuc2l6ZSgpID09
IDEpIHsKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkQXNzZXJ0aW9uKTsKLSAgICAgICAgbV9k
b3dubG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0
cGlkKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0
d29ya2luZyk7CisgICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3Rh
dGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgIlRvb2sgJ1dlYktpdCBkb3dubG9hZHMnIGFzc2VydGlvbiBpbiBOZXR3b3JrUHJv
Y2VzcyIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKaW5kZXggYTI3ODI4ZDdhOGJkODRh
N2FlMzc3MTY4Njc4NjkxYzc2N2YyNzk2ZC4uNTkxMjNmMmM0OGYxYzFlNDE3OWJiMWQ1YmNlMTU3
MGM2Yjc1NGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFBlbmRpbmdEb3dubG9h
ZDo6UGVuZGluZ0Rvd25sb2FkKElQQzo6Q29ubmVjdGlvbiogcGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24sIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIERvd25sb2FkSUQgZG93bmxv
YWRJRCwgTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBXZWJDb3JlOjpCbG9iUmVnaXN0
cnlJbXBsKiBibG9iUmVnaXN0cnksIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKLSAgICA6
IG1fbmV0d29ya0xvYWQoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JS
ZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQorICAgIDogbV9u
ZXR3b3JrTG9hZChtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgYmxvYlJlZ2lzdHJ5LCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBuZXR3b3JrU2Vzc2lvbikpCiAgICAgLCBtX3BhcmVudFByb2Nl
c3NDb25uZWN0aW9uKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKQogewogICAgIG1faXNBbGxvd2Vk
VG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgPSBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xp
Y3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJlNGY1M2QyYWRjMGU4NTIwMjZiMDM3
MWI1MTU0ZDRiM2M4OTk2YzEuLjQ3MDk0MGUzN2RlZjU5ZjlkOTcyMjU3ZmIxM2VjYjc1YmZmMGZi
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMo
KQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJD
b25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVy
Rm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1f
Y29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtl
VW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBt
X2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CiAgICAgCiAgICAgU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmlk
ZW50aWZpZXIoKTsKICAgICBMT0coU2VydmljZVdvcmtlciwgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24gLSAlcyIsIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlci5jcHAKaW5kZXggNDQ0MjBmZjVmZjIyOTliZTM3NTRjZTM3Y2RkYzdlZTYx
NjJlMTkzMS4uNTQzNTI4MjhlNjg3MjFhZjBiYWRlMGMwMjc1YmUyZjA5NWExNjYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBOZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlcjo6Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kKFVzZXJDb250ZW50
Q29udHJvbGwKIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRlbnRS
dWxlTGlzdHMoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4mJiBj
b250ZW50UnVsZUxpc3RzKQogewogICAgIGF1dG8mIGJhY2tlbmQgPSAqbV9jb250ZW50RXh0ZW5z
aW9uQmFja2VuZHMuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25z
QmFja2VuZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiAKICAgICBmb3IgKGF1dG8mJiBjb250ZW50UnVsZUxpc3QgOiBjb250ZW50UnVsZUxp
c3RzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcAppbmRleCA4NTZjYTFmMDk1ZTEwM2M1NDJhZDRlNDMwMDBiY2I3MGZmMWZi
MzA3Li44YTZjNWExZjIxOGQzYzlhYjIxMDRkZjA5NDY5MmNjM2Y2NTUyMjVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHdlYktpdEJsb2JSZXNv
dXJjZURvbWFpbiA9ICJXZWJLaXRCbG9iUmVzb3VyY2UiOwogCiBOZXR3b3JrRGF0YVRhc2tCbG9i
OjpOZXR3b3JrRGF0YVRhc2tCbG9iKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBCbG9iUmVnaXN0
cnlJbXBsJiBibG9iUmVnaXN0cnksIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50U25pZmYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPj4mIGZpbGVSZWZlcmVuY2VzKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24s
IGNsaWVudCwgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBmYWxz
ZSwgZmFsc2UpCi0gICAgLCBtX3N0cmVhbShzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jRmlsZVN0cmVh
bT4oKnRoaXMpKQorICAgICwgbV9zdHJlYW0obWFrZVVuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0
aGlzKSkKICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoZmlsZVJlZmVyZW5jZXMpCiAgICAgLCBtX25l
dHdvcmtQcm9jZXNzKHNlc3Npb24ubmV0d29ya1Byb2Nlc3MoKSkKIHsKQEAgLTQ2Nyw3ICs0Njcs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKICAgICB9CiAKICAgICBh
dXRvJiBkb3dubG9hZE1hbmFnZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIo
KTsKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oZG93bmxv
YWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9u
SUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlx
dWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMs
IG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgIGF1dG8q
IGRvd25sb2FkUHRyID0gZG93bmxvYWQuZ2V0KCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFU
YXNrQmVjYW1lRG93bmxvYWRUYXNrKG1fcGVuZGluZ0Rvd25sb2FkSUQsIFdURk1vdmUoZG93bmxv
YWQpKTsKICAgICBkb3dubG9hZFB0ci0+ZGlkQ3JlYXRlRGVzdGluYXRpb24obV9wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCmluZGV4IGY2NTQyOTU4YjQ3MTAz
ZDM4MWY4Y2M1MzcwZDlkNmI1OTRkYzExNmMuLjE5MzI2ZjJmNDdkYzlmNGY2MjI4YTRjOWFhODRm
NmM5ZmFhYmI3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIE5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX2RhdGFiYXNlID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4oKTsKKyAgICAgICAgbV9kYXRh
YmFzZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgICAgIGJv
b2wgaXNEYXRhYmFzZU9wZW4gPSBtX2RhdGFiYXNlLT5vcGVuKHBhdGgsIFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlOjpPcGVuTW9kZTo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIWlzRGF0YWJhc2VP
cGVuKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04MCw3ICs4MCw3IEBAIE5ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiAgICAgICAgIC8v
IFNpbmNlIHdlIGFyZSB1c2luZyBhIHdvcmtlclF1ZXVlLCB0aGUgc2VxdWVudGlhbCBkaXNwYXRj
aCBibG9ja3MgbWF5IGJlIGNhbGxlZCBieSBkaWZmZXJlbnQgdGhyZWFkcy4KICAgICAgICAgbV9k
YXRhYmFzZS0+ZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogCi0gICAgICAgIG1fc3RhdGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KCptX2RhdGFiYXNl
LCBodHRwc1VwZ3JhZGVDaGVja2VyUXVlcnkpOworICAgICAgICBtX3N0YXRlbWVudCA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRl
Q2hlY2tlclF1ZXJ5KTsKICAgICAgICAgaW50IGlzU3RhdGVtZW50UHJlcGFyZWQgPSAobV9zdGF0
ZW1lbnQtPnByZXBhcmUoKSA9PSBTUUxJVEVfT0spOwogICAgICAgICBBU1NFUlQoaXNTdGF0ZW1l
bnRQcmVwYXJlZCk7CiAgICAgICAgIGlmICghaXNTdGF0ZW1lbnRQcmVwYXJlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIuaAppbmRleCBkY2Q0NmE2MDFiZTYzMDk4NmZjMmFlMGMxYzk2NTU4Yzk1OTIyMDhhLi41
MWQyMDMxNGVhYTQ5ZTk2YTQxYTU3Y2U4ZDQyMjI2YmJmYjA3MjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsK
ICAgICB+TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggOTEwN2ZlYzFlMzRkYjQ0ODgxNjIyODY4
NjIyYzhmYmViNWIzODgzYy4uZWU4MGFjNmVhMWE3Nzk3NzNhMDcxMGUxNzg4NzA2Mzc2N2M1MTJi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAg
LTIxNSw3ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZQogICAgIH0KIAogICAgIGlm
IChtX2xvYWRUaHJvdHRsZUxhdGVuY3kgPiAwX3MpIHsKLSAgICAgICAgbV90aHJvdHRsZSA9IHN0
ZDo6bWFrZV91bmlxdWU8VGhyb3R0bGU+KCp0aGlzLCBtX2xvYWRUaHJvdHRsZUxhdGVuY3ksIFdU
Rk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1f
dGhyb3R0bGUgPSBtYWtlVW5pcXVlPFRocm90dGxlPigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRl
bmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggNDA5NzE0ZDY2NzI2YTg0NzRhZmYyOWEx
NjA4MTdmMjQ3OTY3YjAxNi4uZTFhZTAwYmQ5ZDk1NDc3NzgxNzQzOTg1ZGYwNzNhOGIxY2QyNTM3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpj
aGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0CiAg
ICAgICAgIG1fZnJhbWVJRCwKICAgICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeQogICAg
IH07Ci0gICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgW3RoaXMs
IHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwg
aXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgW3RoaXMsIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgaXNSZWRpcmVjdGVk
ID0gaXNSZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0IC0gbWFrZUNy
b3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQgcHJlZmxpZ2h0IGNvbXBsZXRlLCBz
dWNjZXNzOiAlZCBmb3JSZWRpcmVjdD8gJWQiLCBlcnJvci5pc051bGwoKSwgaXNSZWRpcmVjdGVk
KTsKIAogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CkBAIC00NDYsNyArNDQ2LDcgQEAg
Q29udGVudFNlY3VyaXR5UG9saWN5KiBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0
eVBvbGljeSgpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRTZWN1cml0eVBvbGljeSAmJiBtX2NzcFJl
c3BvbnNlSGVhZGVycykgewogICAgICAgICAvLyBGSVhNRTogUGFzcyB0aGUgVVJMIG9mIHRoZSBw
cm90ZWN0ZWQgcmVzb3VyY2UgaW5zdGVhZCBvZiBpdHMgb3JpZ2luLgotICAgICAgICBtX2NvbnRl
bnRTZWN1cml0eVBvbGljeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
PihVUkwgeyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJpbmcoKSB9KTsKKyAgICAgICAgbV9jb250
ZW50U2VjdXJpdHlQb2xpY3kgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJM
IHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7CiAgICAgICAgIG1fY29udGVudFNl
Y3VyaXR5UG9saWN5LT5kaWRSZWNlaXZlSGVhZGVycygqbV9jc3BSZXNwb25zZUhlYWRlcnMsIFN0
cmluZyB7IG1fcmVmZXJyZXIgfSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRQYXJzaW5n
RXJyb3JzOjpObyk7CiAgICAgfQogICAgIHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS5n
ZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKaW5kZXggYTk4ZjcwZmE5OWE1NjUwMWM3YzFkYWY1MjlhZWViMDcwOWQyYzZmMS4uZmQ3NmNm
ZWMyZTM1YmM2Zjg4ZTA2Zjg3ZGI1NzQyZjBhNDM1MTE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUwMyw5ICs1MDMsOSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAgICAg
ICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tp
ZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAot
ICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBt
X2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RG
TW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkg
fHwgVVNFKFNPVVApCi0gICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICNlbmRpZgogfQogCkBAIC01MzUsOSArNTM1LDkg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25J
RCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBh
ZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFn
ZSkpOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92
ZShjb29raWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCi0gICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPihzZXNzaW9uSUQpOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtl
VW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCkBA
IC0yNDM1LDcgKzI0MzUsNyBAQCBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9y
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIC8vIElmIHRoZXJlJ3Mg
bm90LCB0aGVuIHdoZXJlIGRpZCB0aGlzIFBBTDo6U2Vzc2lvbklEIGNvbWUgZnJvbT8KICAgICAg
ICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpIHx8ICFwYXRoLmlzRW1wdHkoKSk7CiAg
ICAgICAgIAotICAgICAgICBhdXRvIHZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlcj4o
bWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9u
SUQpOworICAgICAgICBhdXRvIHZhbHVlID0gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1
ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQpOwogICAg
ICAgICBpZiAobV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRl
bGF5KQogICAgICAgICAgICAgdmFsdWUtPmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXkoKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMjU0Nyw2ICsyNTQ3LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE8KIH0KIAogY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6
ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVF1b3RhVXNlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUXVvdGFVc2VySW5pdGlh
bGl6ZXIoU3RvcmFnZVF1b3RhTWFuYWdlciYgbWFuYWdlcikKICAgICAgICAgOiBtX21hbmFnZXIo
bWFrZVdlYWtQdHIobWFuYWdlcikpCkBAIC0yNTgxLDcgKzI1ODIsNyBAQCBjbGFzcyBRdW90YVVz
ZXJJbml0aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFVc2VyIHsK
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMoU3RvcmFnZVF1b3Rh
TWFuYWdlciYgbWFuYWdlciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbikKIHsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgb3JpZ2luLCB1c2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxRdW90YVVzZXJJbml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJsZSB7
CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBzZXNzaW9uSUQsIG9yaWdpbiwgdXNlciA9IG1ha2VVbmlxdWU8UXVvdGFVc2Vy
SW5pdGlhbGl6ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLT5pZGJTZXJ2ZXIoc2Vzc2lvbklE
KS5pbml0aWFsaXplUXVvdGFVc2VyKG9yaWdpbik7CkBAIC0yNTk1LDcgKzI1OTYsNyBAQCBTdG9y
YWdlUXVvdGFNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSQogICAgICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcnMg
eyB9OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4gKnN0b3JhZ2VRdW90YU1h
bmFnZXJzLm1hbmFnZXJzUGVyT3JpZ2luKCkuZW5zdXJlKG9yaWdpbiwgW3RoaXMsICZzdG9yYWdl
UXVvdGFNYW5hZ2Vycywgc2Vzc2lvbklELCAmb3JpZ2luXSB7Ci0gICAgICAgIGF1dG8gbWFuYWdl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFu
YWdlcnMuZGVmYXVsdFF1b3RhKG9yaWdpbiksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0odWlu
dDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFz
ZSwgYXV0byBjYWxsYmFjaykgeworICAgICAgICBhdXRvIG1hbmFnZXIgPSBtYWtlVW5pcXVlPFN0
b3JhZ2VRdW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmln
aW4pLCBbdGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAg
ICAgICAgICAgIHRoaXMtPnJlcXVlc3RTdG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIHF1
b3RhLCBjdXJyZW50U3BhY2UsIHNwYWNlSW5jcmVhc2UsIFdURk1vdmUoY2FsbGJhY2spKTsKICAg
ICAgICAgfSk7CiAgICAgICAgIGluaXRpYWxpemVRdW90YVVzZXJzKCptYW5hZ2VyLCBzZXNzaW9u
SUQsIG9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggOTQ4NjkwNDY1YWExNjQwYjlhYWVlYWVmYThiMmU0NGJjNjUyZDM5MC4uYWFj
YjYwMzEyM2E4N2MxMWE1ZjZmYjg2OGY0N2I4YTcwZWVhYjdiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTUyLDcgKzE1Miw3IEBAIGNs
YXNzIE5ldHdvcmtQcm9jZXNzIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3MsIHByaXZhdGUgRG93
bmxvYWRNYW5hZ2VyOjpDbGllbnQsCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9p
ZCBhZGRTdXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1
cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9z
dXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykp
OwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NzgyZWYx
NWYzZGVlZTVhZjRlYWVmMDVjZGY2MDM2YWU3ZTZkMmZiLi44YzMzZmI4NjBhZDdhNzg3MzZlNGI4
ZmJhZGYyMGM3NzU1MzI5ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBwYXIKIAogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5IHx8IHBhcmFt
ZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgfHwgcGFyYW1ldGVycy5vcHRp
b25zLmtlZXBBbGl2ZSkgewogICAgICAgICBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlIHJl
cXVlc3RMb2FkVHlwZSA9IGlzTWFpbkZyYW1lTG9hZCgpID8gTmV0d29ya0xvYWRDaGVja2VyOjpM
b2FkVHlwZTo6TWFpbkZyYW1lIDogTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZTo6T3RoZXI7
Ci0gICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
TG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsg
bV9wYXJhbWV0ZXJzLm9wdGlvbnMgfSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBt
X3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9w
YXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVy
KCksIG1fcGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljcygpLCByZXF1ZXN0TG9hZFR5cGUpOworICAgICAgICBtX25ldHdv
cmtMb2FkQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0s
IG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVx
dWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJh
bWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xp
Y3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQ
U1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwg
cmVxdWVzdExvYWRUeXBlKTsKICAgICAgICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhl
YWRlcnMpCiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VI
ZWFkZXJzKENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IG1fcGFyYW1ldGVy
cy5jc3BSZXNwb25zZUhlYWRlcnMudmFsdWUoKSB9KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQpAQCAtMTE5LDcgKzExOSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29y
a1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAjZW5k
aWYKICAgICB9CiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkpCi0gICAgICAgIG1fc3luY2hyb25v
dXNMb2FkRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92
ZShzeW5jaHJvbm91c1JlcGx5KSk7CisgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IG1h
a2VVbmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7
CiB9CiAKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6fk5ldHdvcmtSZXNvdXJjZUxvYWRlcigpCkBA
IC0zMTgsNyArMzE4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgcGFyYW1l
dGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCku
ZmlsZXNJbkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpOwogCiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5
KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3Jr
TG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJs
b2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGM0ZTEwMmU3
NzUyN2VlYzFmYWY1MWU3YjA0ZTBlOTU3OTQ2NjdhMWUuLjQwOWU0ZDQ4YmNkMTA3YWRmOWRkZDAx
MDM4ZGEzNTYxNzZhYTE1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgQ2FjaGU7CiB9CiAKIGNsYXNz
IE5ldHdvcmtTZXNzaW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdmlydHVhbCB+TmV0d29ya1Nlc3Np
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggMDRlM2QwMjUyMjBkZTRjNDNjNzM2MmRhMTQxZGYzMmJhMjAz
MGZhZi4uNTkxODg1NzU3YTg0NzUxYzgzMThmN2JlNWQyNzVhN2YxMWM1YTRhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gTmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwg
cHJvdG9jb2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3
b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVy
KTsKICAgICBpZiAoIXJlc3VsdC0+bV9zb2NrZXQpIHsKICAgICAgICAgcmVzdWx0LT5kaWRDbG9z
ZSgwLCAiQ2Fubm90IGNyZWF0ZSBhIHdlYiBzb2NrZXQgdGFzayJfcyk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5oCmluZGV4IDY3MmIzNzgxYTRkNGEzNGI5YzFlMWUyNDE1YmQ0OTEwZTc3
OWVkNzEuLjlkZjlhYWNkY2IzMzJlMDQxZGI2OWJkMDY4MTAyMjljZjhiYjRlOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgK
QEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrU2Vz
c2lvbjsKIAogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdl
U2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nv
Y2tldENoYW5uZWw+IGNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCBkOTBjY2NhOTgwYThlZmZjMmQ0
ZjM4ZjVlM2Y2YmMwYWEyYzJlNTQ2Li4yYzY0MjdlNjQ4MjJjZWY1ZDFhODEyMDI1ZWZkNmM4NTQ1
NDFjZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcApAQCAtNTMsNyArNTMsNyBAQCBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2so
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrTG9hZFBhcmFtZQogICAgIH0K
IAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5l
Y3RPbmx5OjpZZXMpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNz
aW9uKTsKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMs
IG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBt
X3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcAppbmRleCBiZjUxNTc4ZmIxNDdkZGRjODdlNjZkOTBhNWVkZDAyYTRjZDcy
NjkzLi5jYzg3ODRkNDI4M2E2MjVmYzBlMWQ5ZWZhYTUyNzA1MjNhYzcxMTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIExvY2FsU3Rv
cmFnZURhdGFiYXNlOjpzY2hlZHVsZURhdGFiYXNlVXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxT
dG9yYWdlKQotICAgICAgICBtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1Rv
TG9jYWxTdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVy
PigpOworICAgICAgICBtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9j
YWxTdG9yYWdlID0gbWFrZVVuaXF1ZTxTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyPigpOwogCiAg
ICAgbV9kaWRTY2hlZHVsZURhdGFiYXNlVXBkYXRlID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDNlOWQx
N2Q2MDJkMzQxNzcwMzNjOTMzOGI0YmJlNmRhMGJhYmE4YTQuLmIwODNkNWQzMmE1MWU2MWRhNDM3
NmRmOTQ0NmVmMTExNGVhNmJmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTg0LDE3ICs4NCwxNyBAQCBDYWNoZTo6
Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBSZWY8U3RvcmFnZT4mJiBzdG9y
YWdlLCBPcHRpb25TZXQ8QwogewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZF
X1JFVkFMSURBVElPTikKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhDYWNoZU9wdGlvbjo6U3Bl
Y3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7Ci0gICAgICAgIG1fbG93UG93ZXJNb2RlTm90aWZpZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10o
Ym9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKKyAgICAgICAgbV9sb3dQb3dlck1vZGVOb3Rp
ZmllciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShi
b29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgewogICAgICAgICAgICAgQVNTRVJUKFdURjo6UnVu
TG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKGlzTG93UG93ZXJNb2RlRW5hYmxlZCkK
ICAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBudWxscHRyOwogICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3NwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIpOwotICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0
ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVu
aXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIGlmICghbV9sb3dQb3dlck1vZGVOb3Rp
Zmllci0+aXNMb3dQb3dlck1vZGVFbmFibGVkKCkpCi0gICAgICAgICAgICBtX3NwZWN1bGF0aXZl
TG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0
aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOworICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdl
LmdldCgpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzc1LDEyICszNzUsMTIgQEAgdm9pZCBDYWNo
ZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlciwg
c3RkOjp1bmlxdWVfcHQKICAgICAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VF
bnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRy
eT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEp
LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCku
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1v
dmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhu
ZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25z
ZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlUmVkaXJlY3RFbnRy
eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlZGlyZWN0UmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRy
eT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVx
dWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2Vz
cygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rp
b248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC00NTcsNyArNDU3
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6dXBkYXRlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXEKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlID0gZXhpc3RpbmdFbnRyeS5yZXNwb25zZSgpOwogICAgIFdlYkNvcmU6OnVw
ZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9uKHJlc3BvbnNlLCB2YWxpZGF0aW5n
UmVzcG9uc2UpOwogCi0gICAgYXV0byB1cGRhdGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50
cnk+KGV4aXN0aW5nRW50cnkua2V5KCksIHJlc3BvbnNlLCBleGlzdGluZ0VudHJ5LmJ1ZmZlcigp
LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCku
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAg
ICBhdXRvIHVwZGF0ZUVudHJ5ID0gbWFrZVVuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXko
KSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSwgb3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSkpOwogICAgIGF1dG8gdXBkYXRlUmVjb3JkID0g
dXBkYXRlRW50cnktPmVuY29kZUFzU3RvcmFnZVJlY29yZCgpOwogCiAgICAgbV9zdG9yYWdlLT5z
dG9yZSh1cGRhdGVSZWNvcmQsIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IDdhZTFjMmZlN2Rj
ZTYwN2I5ZjhhNTNkOTlhMWJkNzk4NTM5OWJjZjEuLjFmNDE0NGE4ZmFlODdiZjVmYzVjODNlZDkw
MmI2ZmYwOGEwNjRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgU3Rv
cmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3Jh
Z2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQogewotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEVudHJ5PihzdG9yYWdlRW50cnkpOworICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVl
PEVudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBk
ZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNp
emUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRyeS0+bV9yZXNwb25zZSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggZTdmYzViODkzMjJiOTkxYzcwOWQw
NjhiZTJkZTc3NzM4M2NiNGJjMC4uMjIwMTk0MTdhOGM1MDFiZjk1NWJmNTMyMmMwNjljYjAzMmE0
MWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0
IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIHBhcmFtZXRlcnMuY29udGVudFNuaWZm
aW5nUG9saWN5ID0gQ29udGVudFNuaWZmaW5nUG9saWN5OjpEb05vdFNuaWZmQ29udGVudDsKICAg
ICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID0gQ29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IG1fb3Jp
Z2luYWxSZXF1ZXN0OwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdv
cmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSkpOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhp
cywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCku
bmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQog
CiBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVjdWxhdGl2ZUxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKaW5kZXggMWNkNmI0OTJmODFhNWE4MWQyNGNh
NzkxMDhkYTZiMTllMGMwMDNmMS4uNTdlOGU3NTk5YjFjY2E2NWIyNmUwNmVjMzg3MmVlMmRkOTQ5
ZGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3Bw
CkBAIC0xNzQsNyArMTc0LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGlu
Z0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdGcmFtZUwKICAgICB2b2lkIHJl
Z2lzdGVyU3VicmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgS2V5JiBzdWJyZXNvdXJjZUtleSkKICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgICAgIG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNlS2V5KSk7CisgICAgICAg
IG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBlbmQobWFrZVVuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJl
cXVlc3QsIHN1YnJlc291cmNlS2V5KSk7CiAgICAgICAgIG1fbG9hZEh5c3RlcmVzaXNBY3Rpdml0
eS5pbXB1bHNlKCk7CiAgICAgfQogCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZShjb25zdCBLZXkmIHN0b3JhZ2VLZXksIFJldHJpZXZlQ29t
cGxldGlvbkgKICAgICBBU1NFUlQobV9wZW5kaW5nUHJlbG9hZHMuY29udGFpbnMoc3RvcmFnZUtl
eSkpOwogICAgIC8vIEZJWE1FOiBUaGlzIGJyZWFrcyBpbmNyZW1lbnRhbCBsb2FkaW5nIHdoZW4g
dGhlIHJldmFsaWRhdGlvbiBpcyBub3Qgc3VjY2Vzc2Z1bC4KICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fcGVuZGluZ1JldHJpZXZlUmVxdWVzdHMuZW5zdXJlKHN0b3JhZ2VLZXksIFtdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXI+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0
aW9uSGFuZGxlcj4+KCk7CiAgICAgfSk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTQwNCw3ICs0MDQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbgogICAgIEFTU0VSVChlbnRyeSk7CiAgICAgQVNTRVJU
KCFlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogICAgIGF1dG8ga2V5ID0gZW50cnktPmtleSgp
OwotICAgIG1fcHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPFByZWxv
YWRlZEVudHJ5PihXVEZNb3ZlKGVudHJ5KSwgV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwg
W3RoaXMsIGtleSwgZnJhbWVJRF0geworICAgIG1fcHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBt
YWtlVW5pcXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3ZlKGVudHJ5KSwgV1RGTW92ZShyZXZhbGlk
YXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICBhdXRvIHByZWxv
YWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRFbnRyaWVzLnRha2Uoa2V5KTsKICAgICAgICAgQVNTRVJU
KHByZWxvYWRlZEVudHJ5KTsKICAgICAgICAgaWYgKHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlk
YXRlZCgpKQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIGJvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhjb25zdCBLZXkmIGtleSwgRW50cnkqIGVudHJ5CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgY29tcGxldGlvbkhhbmRsZXIgOiAq
Y29tcGxldGlvbkhhbmRsZXJzKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IHN0
ZDo6bWFrZV91bmlxdWU8RW50cnk+KCplbnRyeSkgOiBudWxscHRyKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZW50cnkgPyBtYWtlVW5pcXVlPEVudHJ5PigqZW50cnkpIDogbnVsbHB0cik7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJjZUlu
Zm8mIHN1YnJlcwogCiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywg
IihOZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmVseSByZXZhbGlkYXRpbmcgJyVzJzoiLCBrZXku
aWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgYXV0byByZXZhbGlkYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlk
YXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVx
dWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7
CisgICAgYXV0byByZXZhbGlkYXRvciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkPihtX2Nh
Y2hlLCBmcmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMs
IGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiByZXZhbGlkYXRlZEVudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8
fCAhcmV2YWxpZGF0ZWRFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogICAgICAgICBBU1NFUlQo
IXJldmFsaWRhdGVkRW50cnkgfHwgcmV2YWxpZGF0ZWRFbnRyeS0+a2V5KCkgPT0ga2V5KTsKIApA
QCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVj
dWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBmCiAgICAgICAgICAgICBw
cmVsb2FkRW50cnkoa2V5LCBzdWJyZXNvdXJjZUluZm8sIGZyYW1lSUQpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIo
TmV0d29ya1Byb2Nlc3MpIE5vdCBwcmVsb2FkaW5nICclcycgYmVjYXVzZSBpdCBpcyBtYXJrZWQg
YXMgdHJhbnNpZW50Iiwga2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
ICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPEV4cGly
aW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsKKyAgICAgICAgICAgIG1fbm90UHJlbG9h
ZGVkRW50cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXks
IGZyYW1lSURdIHsKICAgICAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9z
dGljTWVzc2FnZShtX2NhY2hlLm5ldHdvcmtQcm9jZXNzKCksIGZyYW1lSUQsIERpYWdub3N0aWNM
b2dnaW5nS2V5czo6ZW50cnlSaWdodGx5Tm90V2FybWVkVXBLZXkoKSk7CiAgICAgICAgICAgICAg
ICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLnJlbW92ZShrZXkpOwogICAgICAgICAgICAgfSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggYmJmYzY0OTg5MGY5NWNjN2UwNGNlODJhNGZlMzI5NDRk
YzFhYjFmMC4uODA0YzQyOThjYzNlM2MyODE0ZmRiYzJiYmI2Y2JlZTU3NTg0YWU0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuY3BwCkBAIC0yOTAsOCArMjkwLDggQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJv
bml6ZSgpCiAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIHN5
bmNocm9uaXppbmcgY2FjaGUiKTsKIAogICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8gcmVjb3JkRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50c0ZpbHRlcj4o
KTsKLSAgICAgICAgYXV0byBibG9iRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50c0Zp
bHRlcj4oKTsKKyAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRz
RmlsdGVyPigpOworICAgICAgICBhdXRvIGJsb2JGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRz
RmlsdGVyPigpOwogCiAgICAgICAgIC8vIE1vc3Qgb2YgdGhlIGRpc2sgc3BhY2UgdXNhZ2UgaXMg
aW4gYmxvYnMgaWYgd2UgYXJlIHVzaW5nIHRoZW0uIEFwcHJveGltYXRlIHJlY29yZHMgZmlsZSBz
aXplcyB0byBhdm9pZCBleHBlbnNpdmUgc3RhdCgpIGNhbGxzLgogICAgICAgICBzaXplX3QgcmVj
b3Jkc1NpemUgPSAwOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgU3RvcmFnZTo6cmVhZFJlY29y
ZChSZWFkT3BlcmF0aW9uJiByZWFkT3BlcmF0aW9uLCBjb25zdCBEYXRhJiByZWNvcmREYXRhKQog
ICAgIH0KIAogICAgIHJlYWRPcGVyYXRpb24uZXhwZWN0ZWRCb2R5SGFzaCA9IG1ldGFEYXRhLmJv
ZHlIYXNoOwotICAgIHJlYWRPcGVyYXRpb24ucmVzdWx0UmVjb3JkID0gc3RkOjptYWtlX3VuaXF1
ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJlY29yZCB7CisgICAgcmVhZE9wZXJhdGlvbi5y
ZXN1bHRSZWNvcmQgPSBtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3Jk
IHsKICAgICAgICAgbWV0YURhdGEua2V5LAogICAgICAgICBtZXRhRGF0YS50aW1lU3RhbXAsCiAg
ICAgICAgIGhlYWRlckRhdGEsCkBAIC03NTgsNyArNzU4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+
IGJvb2wgcmV0cmlldmVGcm9tTWVtb3J5KGNvbnN0IFQmIG9wZXJhdGlvbnMsIGNvbnN0IEtleSYg
a2V5LAogICAgICAgICBpZiAob3BlcmF0aW9uLT5yZWNvcmQua2V5ID09IGtleSkgewogICAgICAg
ICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGZvdW5kIHdy
aXRlIG9wZXJhdGlvbiBpbiBwcm9ncmVzcyIpOwogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtyZWNvcmQgPSBvcGVyYXRpb24tPnJlY29yZCwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJl
Y29yZCksIHsgfSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuaXF1
ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29yZCksIHsgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBT
dG9yYWdlOjpyZXRyaWV2ZShjb25zdCBLZXkmIGtleSwgdW5zaWduZWQgcHJpb3JpdHksIFJldHJp
ZXZlQ29tcGxldGlvbkhhbmQKICAgICBpZiAocmV0cmlldmVGcm9tTWVtb3J5KG1fYWN0aXZlV3Jp
dGVPcGVyYXRpb25zLCBrZXksIGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byByZWFkT3BlcmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkT3BlcmF0aW9u
PigqdGhpcywga2V5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byByZWFk
T3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxSZWFkT3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICByZWFkT3BlcmF0aW9uLT50aW1pbmdzLnN0YXJ0
VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIHJlYWRPcGVyYXRpb24tPnRpbWluZ3Mu
ZGlzcGF0Y2hDb3VudEF0U3RhcnQgPSBtX3JlYWRPcGVyYXRpb25EaXNwYXRjaENvdW50OwpAQCAt
ODc5LDcgKzg3OSw3IEBAIHZvaWQgU3RvcmFnZTo6c3RvcmUoY29uc3QgUmVjb3JkJiByZWNvcmQs
IE1hcHBlZEJvZHlIYW5kbGVyJiYgbWFwcGVkQm9keUhhbmRsZXIsCiAgICAgaWYgKCFtX2NhcGFj
aXR5KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHdyaXRlT3BlcmF0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxXcml0ZU9wZXJhdGlvbj4oKnRoaXMsIHJlY29yZCwgV1RGTW92ZShtYXBwZWRC
b2R5SGFuZGxlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHdyaXRl
T3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxXcml0ZU9wZXJhdGlvbj4oKnRoaXMsIHJlY29yZCwgV1RG
TW92ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICBtX3BlbmRpbmdXcml0ZU9wZXJhdGlvbnMucHJlcGVuZChXVEZNb3ZlKHdyaXRlT3BlcmF0aW9u
KSk7CiAKICAgICAvLyBBZGQga2V5IHRvIHRoZSBmaWx0ZXIgYWxyZWFkeSBoZXJlIGFzIHdlIGRv
IGxvb2t1cHMgZnJvbSB0aGUgcGVuZGluZyBvcGVyYXRpb25zIHRvby4KQEAgLTg5OCw3ICs4OTgs
NyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0
PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgIEFTU0VSVCh0cmF2ZXJzZUhhbmRsZXIp
OwogICAgIC8vIEF2b2lkIG5vbi10aHJlYWQgc2FmZSBGdW5jdGlvbiBjb3BpZXMuCiAKLSAgICBh
dXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxUcmF2ZXJzZU9wZXJh
dGlvbj4obWFrZVJlZigqdGhpcyksIHR5cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxl
cikpOworICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBtYWtlVW5pcXVlPFRyYXZlcnNl
T3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VI
YW5kbGVyKSk7CiAgICAgYXV0byYgdHJhdmVyc2VPcGVyYXRpb24gPSAqdHJhdmVyc2VPcGVyYXRp
b25QdHI7CiAgICAgbV9hY3RpdmVUcmF2ZXJzZU9wZXJhdGlvbnMuYWRkKFdURk1vdmUodHJhdmVy
c2VPcGVyYXRpb25QdHIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNw
cAppbmRleCA3Yjg4OTIyOTk1MzlkYjM0YzViMzkxNGQzYjIxNGNlOGI4MTQzYjk4Li42M2FkMDQw
OWZkZDIzNmY2ZTNjMmNhMzBlODdlNGE3YzBhMjk1OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1
YnJlc291cmNlc0VudHJ5LmNwcApAQCAtOTMsNyArOTMsNyBAQCBTdG9yYWdlOjpSZWNvcmQgU3Vi
cmVzb3VyY2VzRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKIHN0ZDo6dW5p
cXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3VicmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3Jh
Z2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7Ci0gICAgYXV0
byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VicmVzb3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRy
eSk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8U3VicmVzb3VyY2VzRW50cnk+KHN0b3Jh
Z2VFbnRyeSk7CiAKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFn
ZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3N1YnJlc291cmNlcykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAppbmRleCBk
OGEwNTk0MGQ3MTk3ZWIzMjI1YTM2YmM1MTNhMmRiNjEwZGIwY2Q4Li43MTA0ZDFmNzRjZDcwMWNi
Y2VjZmFiNTdkMjRlYmZmOGRhZWJlZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKQEAgLTczLDggKzczLDggQEAgc3Rh
dGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIHZvaWQgUHJlZmV0
Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKLSAgICAgICAgbV9zZXNzaW9uUHJl
ZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwotICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmwsIHN0ZDo6
bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2UpLCBXVEZN
b3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8
UHJlZmV0Y2hFbnRyaWVzTWFwPigpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uUHJl
ZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmwsIG1ha2VVbmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+
KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICAvLyBMaW1pdCBwcmVm
ZXRjaGVzIGZvciBzYW1lIHVybCB0byAxLgogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkp
CiAgICAgICAgIHJldHVybjsKQEAgLTg2LDkgKzg2LDkgQEAgdm9pZCBQcmVmZXRjaENhY2hlOjpz
dG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXMKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBVUkwmIHJlcXVlc3RV
cmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3Nlc3Np
b25QcmVmZXRjaGVzKQotICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CisgICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMg
PSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKICAgICByZWRpcmVjdFJlcXVlc3Qu
Y2xlYXJQdXJwb3NlKCk7Ci0gICAgbV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmws
IHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RS
ZXNwb25zZSksIFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSkpOworICAgIG1fc2Vzc2lvblByZWZl
dGNoZXMtPnNldChyZXF1ZXN0VXJsLCBtYWtlVW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihX
VEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCkpKTsKICAg
ICBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHJlcXVlc3RV
cmwsIFdhbGxUaW1lOjpub3coKSkpOwogICAgIGlmICghbV9leHBpcmF0aW9uVGltZXIuaXNBY3Rp
dmUoKSkKICAgICAgICAgbV9leHBpcmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KGV4cGlyYXRpb25U
aW1lb3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmgKaW5kZXggYTE3MTBiYWU5ZTVhODg1MjZjZWZhM2IzOWFhNzg4ZmFhZjJjZmEw
ZS4uYTI1MTUyMGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIzMWExYmVkMTM4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ2
LDYgKzQ2LDcgQEAgY2xhc3MgUHJlZmV0Y2hDYWNoZSB7CiAgICAgdm9pZCBjbGVhcigpOwogCiAg
ICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1t
CmluZGV4IDA3N2YxNmZhNjUwNjUyYzc4N2E2ZjAzMTYwOTA5MDI2OGViYjhhYzAuLmNjZTI2YWNm
YjA0Y2Y3MDc0ZTc2M2Y1YmJjOGU0YTVlOThhMTVjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAg
LTEzMiw3ICsxMzIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQwogCiBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gTmV0d29ya1Byb2Nlc3M6OnNvdXJjZUFwcGxp
Y2F0aW9uQXVkaXREYXRhKCkgY29uc3QKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5kKCkKIE5ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIoKQogewogICAgIGlmICghbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcikKLSAg
ICAgICAgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXI+KCk7CisgICAgICAgIG1fbmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyPigpOwogICAg
IHJldHVybiAqbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCmluZGV4IDFmOGQ0Y2JmYzdhNTMzOGNmMGVmNTI0ZTlhNjc1NDMxYjQwMTdmYzkuLjA5YjI0
M2E2ZDdjODE2OGU3NDU5OTRjZGU4NzM3NDdiNjc1NTQ4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
QEAgLTgwMCw3ICs4MDAsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNl
c3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YQogICAgICAgICBSZWY8
TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3RlY3RlZE5ldHdvcmtEYXRhVGFzaygqbmV0d29ya0Rh
dGFUYXNrKTsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29ya0RhdGFUYXNrLT5wZW5k
aW5nRG93bmxvYWRJRCgpOwogICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lv
bi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsKLSAgICAgICAgYXV0byBkb3du
bG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2Vy
LCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29y
a0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICAgICAgYXV0byBkb3dubG9hZCA9
IG1ha2VVbmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElE
LCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5z
dWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNh
bmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpkb3dubG9hZCk7CiAgICAgICAgIEFTU0VSVChGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24oKSkpOwogICAgICAgICBkb3dubG9hZC0+ZGlkQ3JlYXRlRGVzdGluYXRpb24obmV0d29ya0Rh
dGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKTsKQEAgLTg5NSw3ICs4OTUsNyBAQCB2
b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gTmV0
d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNz
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vz
c2lvbkNvY29hPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiB9CiAKIHN0
YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFyeShjb25zdCBVUkwmIGh0dHBQcm94eSwg
Y29uc3QgVVJMJiBodHRwc1Byb3h5KQpAQCAtMTI0MSw3ICsxMjQxLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZVdlYlNvY2tldFRh
c2soTmV0d29ya1MKIHsKICAgICAvLyBGSVhNRTogVXNlIHByb3RvY29sLgogICAgIFJldGFpblB0
cjxOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNrPiB0YXNrID0gW21fc2Vzc2lvbldpdGhDcmVkZW50
aWFsU3RvcmFnZS5nZXQoKSB3ZWJTb2NrZXRUYXNrV2l0aFJlcXVlc3Q6IHJlcXVlc3QubnNVUkxS
ZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5
KV07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwg
V1RGTW92ZSh0YXNrKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4oY2hh
bm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWRk
V2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAppbmRleCBi
ZTY4MDFmMzBjZGY0OTAwMjU0YzIyNGI5YjExZmJkZjczZmUyZTMxLi41YmUxNzAyNjZmNDViOGJm
NzJlZjU2YjEwMDg3Y2I1OWJiNTZkYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApAQCAtNDEsNyArNDEs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZh
dWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNv
bnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhvc3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nl
c3Npb25DdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nl
c3Npb25DdXJsLmgKaW5kZXggZDQ3MDlhNWU0YWM4YTJmYjZhY2ViNTZjNTdlYmYwYjVjNzQwZDQ1
Ni4uZTE4YTQzOTBiMTg4YTI3ZTkzMThjNTI0MDQ1NWYwNjRjZjZiZDY2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwu
aApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkN1cmwgZmluYWwgOiBwdWJs
aWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1By
b2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxO
ZXR3b3JrU2Vzc2lvbkN1cmw+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
ICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25DdXJsKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgfk5ldHdvcmtTZXNzaW9uQ3VybCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQppbmRleCAyMzc0NTI4OGEwNmQw
MTE0NTkxOTY4YjUwODZkZWI1ZjQ1YWEwYWM2Li5jOGI4NmM1MTExMzdlMzc0ZWMwYmUwYzBlYjVi
M2ZlYjRmMDliZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQpA
QCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5JiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9y
KCkKIHsKICAgICBpZiAoIW1fcGF5bWVudENvb3JkaW5hdG9yKQotICAgICAgICBtX3BheW1lbnRD
b29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+
KCp0aGlzKTsKKyAgICAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3BheW1lbnRDb29y
ZGluYXRvcjsKIH0KIApAQCAtODIsNyArODIsNyBAQCBjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbgog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJl
c2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBjb29yZGluYXRvciwgUEtQYXltZW50
UmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50
QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI+KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI+KGNvb3JkaW5hdG9y
LCByZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5
bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAKaW5kZXggZDQ2YzUwM2Q4MWU5ODM0ZTVkMmEyNTY2MGM4NzIzZWFl
N2UxNzBlYy4uNGZhY2M4MjEzZWY4NTA1Y2Y5ZDU0OGIyM2M1NjZkZDNkMGJlMGFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcApAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRPdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoR19P
VVRQVVRfU1RSRUFNKG91dHB1dFN0cmVhbS5sZWFrUmVmKCkpKTsKIAogICAgIGF1dG8mIGRvd25s
b2FkTWFuYWdlciA9IG1fc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIo
KTsKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oZG93bmxv
YWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9u
SUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlx
dWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMs
IG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgIGF1dG8q
IGRvd25sb2FkUHRyID0gZG93bmxvYWQuZ2V0KCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFU
YXNrQmVjYW1lRG93bmxvYWRUYXNrKG1fcGVuZGluZ0Rvd25sb2FkSUQsIFdURk1vdmUoZG93bmxv
YWQpKTsKICAgICBkb3dubG9hZFB0ci0+ZGlkQ3JlYXRlRGVzdGluYXRpb24obV9wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDgzYzJmMjhlYTVjNzAzNGRhYTdk
YjY0NjIxYjQ0NGVkZDVkOTZhZjkuLjdhNzQ4MWY3ZDQyNWYwMjMzN2EwYzEwYWRmOWQ2NTRmNzBl
YzdkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1By
b2Nlc3NDcmVhdGkKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAK
aW5kZXggMzBmYzhhNTM1NWQwODQ1MmFjMzYxYjFkY2VhOTdjODRmMzYwN2ZlZC4uNDA3MzYxZjAz
NmU3OTg5MTc2N2Q4MDdmYmI2M2M5MDQ0YjI2MGE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIE5ldHdvcmtTZXNzaW9uU291
cDo6TmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogTmV0d29y
a1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCi0gICAgLCBtX25ldHdvcmtTZXNz
aW9uKHN0ZDo6bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCisg
ICAgLCBtX25ldHdvcmtTZXNzaW9uKG1ha2VVbmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nl
c3Npb25JRCkpCiB7CiAgICAgYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3RvcmFnZVNl
c3Npb24oKTsKICAgICBBU1NFUlQoc3RvcmFnZVNlc3Npb24pOwpAQCAtMTI0LDcgKzEyNCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvblNvdXA6OmNyZWF0
ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvCiAgICAgcmVxdWVzdC51cGRhdGVTb3VwTWVzc2FnZShz
b3VwTWVzc2FnZS5nZXQoKSwgYmxvYlJlZ2lzdHJ5KCkpOwogICAgIGlmIChyZXF1ZXN0LnVybCgp
LnByb3RvY29sSXMoIndzcyIpKQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNvdXBNZXNzYWdl
LmdldCgpLCAibmV0d29yay1ldmVudCIsIEdfQ0FMTEJBQ0sod2ViU29ja2V0TWVzc2FnZU5ldHdv
cmtFdmVudENhbGxiYWNrKSwgbnVsbHB0cik7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCks
IHByb3RvY29sKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVs
LCBzb3VwU2Vzc2lvbigpLCBzb3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAppbmRleCBmOWVmNGJiNTQzMGJiZjczYjA0YTBl
M2JlYzI0NzkyOGQ1OWU3MTZiLi40NjZiMjc4MmJmOTNjNzcwNzBmNzk3ZGQzNjUyMzRjYzFkZTNm
YjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Nlc3Npb25Tb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtTZXNzaW9uU291cC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9u
U291cCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Np
b25Tb3VwPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1v
dmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1By
b2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB+TmV0d29y
a1Nlc3Npb25Tb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKaW5kZXgg
NmRkYzgxYTM2ZDg0OWNiYzI4Mzc5M2I2MTcwNjdhMjdlMjlkOTFmMC4uODc0NTI1ZTM4Y2U3MDRl
YmUxZGFhNzEwYmI1NWMwMWNjMDU4ZWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3Ry
ZWFtLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIu
aD4KIAogc3RydWN0IEFzeW5jUmVhZERhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICBBc3luY1JlYWREYXRhKEdSZWZQdHI8R1Rhc2s+JiYgdGFzaywgdm9pZCog
YnVmZmVyLCBnc2l6ZSBjb3VudCkKICAgICAgICAgOiB0YXNrKFdURk1vdmUodGFzaykpCiAgICAg
ICAgICwgYnVmZmVyKGJ1ZmZlcikKQEAgLTM5LDYgKzQwLDcgQEAgc3RydWN0IEFzeW5jUmVhZERh
dGEgewogfTsKIAogc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUHJpdmF0ZSB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHVpbnQ2NF90IGNvbnRl
bnRMZW5ndGg7CiAgICAgdWludDY0X3QgYnl0ZXNSZWNlaXZlZDsKICAgICB1aW50NjRfdCBieXRl
c1JlYWQ7CkBAIC05OSw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdElu
cHV0U3RyZWFtUmVhZEFzeW5jKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIHZvaQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkID0g
c3RkOjptYWtlX3VuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIsIGNv
dW50KTsKKyAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBtYWtlVW5pcXVlPEFz
eW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291bnQpOwogfQogCiBzdGF0aWMg
Z3NzaXplIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkRmluaXNoKEdJbnB1dFN0cmVh
bSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNr
U291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmgKaW5kZXggZGE4NzYxMTA2NDgxZjk2YTlkNmEwMDAxODRjY2QyNDA3YjFmMjY1MC4uNWVm
N2I0OGU0MjA4MzllZWY4MDA4MTFiMGQ5NzQwZjQ0ZTAxZjBhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKQEAgLTM2
LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5l
bDsKIAogY2xhc3MgV2ViU29ja2V0VGFzayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIFNvdXBT
ZXNzaW9uKiwgU291cE1lc3NhZ2UqLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICB+V2Vi
U29ja2V0VGFzaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaAppbmRleCA4ZjIwNWNlMDI5NzEzZDhi
YTIxM2YxNDNiYTcxYmIxMTQ3NTJkZWY1Li4yMmFiZGVjNjlkYjI0NWE0Y2Y5ODNmMjQ3YjM4Zjcy
ZDkwMGE2ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtSVENQcm92aWRlcjsKIAogY2xhc3MgTGliV2Vi
UlRDU29ja2V0Q2xpZW50IGZpbmFsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUg
eyBVRFAsIFNlcnZlclRDUCwgQ2xpZW50VENQLCBTZXJ2ZXJDb25uZWN0aW9uVENQIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5T
UmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZTc4NjU2OGZmNTA1YTdiODcxNzg3MGRmNTdmYTU3ZDE1
ZjVkNzc2My4uOTI2NjY4YzM4ZmZmNzA4YWU1MDJmNThmZDQxNTI4ODAzZWM1NTVjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdp
c3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a01ETlNSZWdpc3Rlci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lz
dGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1
bWUKIH0KIAogc3RydWN0IFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0IHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Qo
UmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgdWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIFN0cmluZyYmIG5hbWUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgOiBj
b25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgICAgICwgcmVxdWVzdElkZW50aWZp
ZXIocmVxdWVzdElkZW50aWZpZXIpCkBAIC0xMzUsNyArMTM2LDcgQEAgdm9pZCBOZXR3b3JrTURO
U1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBQ
QUw6OlNlc3MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVuZGluZ1JlcXVl
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVm
KG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShu
YW1lKSwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxQ
ZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdD4obWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlv
bigpKSwgcmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHNlc3Npb25JRCk7CiAgICAg
YXV0byogcmVjb3JkID0gJnBlbmRpbmdSZXF1ZXN0LT5yZWNvcmQ7CiAgICAgYXV0byBlcnJvciA9
IEROU1NlcnZpY2VSZWdpc3RlclJlY29yZChzZXJ2aWNlLAogICAgICAgICByZWNvcmQsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9u
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
TW9uaXRvci5jcHAKaW5kZXggMzUzZWFjOGNlMTFiNjkwNmVmYWRkMmZkMjcxOGI5N2FiNTJjZGE0
ZC4uYWI3MDZkYzJlOTM0YTlhN2VmOTkyNjg5Nzk3NGJkYzc1NGVhM2RmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25p
dG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIE5ldHdvcmtSVENNb25pdG9yOjpzdGFydFVw
ZGF0aW5nKCkKIHsKICAgICBtX2lzU3RhcnRlZCA9IHRydWU7CiAgICAgbV9ydGNQcm92aWRlci5j
YWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzXSgpIHsKLSAgICAgICAgbV9tYW5hZ2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAgICAgIG1fbWFu
YWdlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNOZXR3b3Jr
TWFuYWdlcj4oKTsKICAgICAgICAgbV9tYW5hZ2VyLT5TaWduYWxOZXR3b3Jrc0NoYW5nZWQuY29u
bmVjdCh0aGlzLCAmTmV0d29ya1JUQ01vbml0b3I6Om9uTmV0d29ya3NDaGFuZ2VkKTsKICAgICAg
ICAgbV9tYW5hZ2VyLT5TdGFydFVwZGF0aW5nKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cAppbmRleCBhNWFjNTcyMTM3OWRiM2QxYjI1ODc1NTg2MTAzMGJiYTRkYjllYjhlLi4xNWQ0NGQw
YWQ5ZGIwZjNiMDU5OWUxYTMzZWZjZmRiODk2MWE2NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgTmV0d29ya1JUQ1Byb3ZpZGVyOjpOZXR3b3JrUlRDUHJvdmlkZXIo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24KICAgICA6IG1fY29ubmVj
dGlvbigmY29ubmVjdGlvbikKICAgICAsIG1fcnRjTW9uaXRvcigqdGhpcykKICAgICAsIG1fcnRj
TmV0d29ya1RocmVhZChjcmVhdGVUaHJlYWQoKSkKLSAgICAsIG1fcGFja2V0U29ja2V0RmFjdG9y
eShtYWtlVW5pcXVlUmVmPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PihtX3J0Y05ldHdv
cmtUaHJlYWQuZ2V0KCkpKQorICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVS
ZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5Piht
X3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkpKQogewogI2lmIGRlZmluZWQoTkRFQlVHKQogICAgIHJ0
Yzo6TG9nTWVzc2FnZTo6TG9nVG9EZWJ1ZyhydGM6OkxTX05PTkUpOwpAQCAtMTA0LDcgKzEwNCw3
IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQodWludDY0X3QgaWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgdHlw
ZSkpOworICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tl
dENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgdHlwZSkpOwogfQog
CiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlVURQU29ja2V0KHVpbnQ2NF90IGlkZW50
aWZpZXIsIGNvbnN0IFJUQ05ldHdvcms6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90
IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBOZXR3
b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVpbnQ2NF90IG5ld0MKIHsKICAgICBjYWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBpZGVu
dGlmaWVyLCBuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllcl0oKSB7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQgPSBtX3BlbmRpbmdJbmNv
bWluZ1NvY2tldHMudGFrZShuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllcik7Ci0gICAgICAg
IGFkZFNvY2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENs
aWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0
Q2xpZW50OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQKSk7CisgICAgICAgIGFkZFNvY2tldChp
ZGVudGlmaWVyLCBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwg
KnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2
ZXJDb25uZWN0aW9uVENQKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMzgzODJiMDlkNGZiM2JlMjY0Zjg5Yjc3ODQxYTQxZDdj
MDhjYWMwNS4uYzVlZjZkOTlhNTYwZGQxNDg4ZjE4NDk5NWFlOGE3YjE2ZDlhZDI1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTM0Myw3ICszNDMsNyBA
QCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2Fn
ZShXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3lu
Y01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0g
bWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVz
dElEKTsKIAogICAgIC8vIEhhbmQgb2ZmIGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8g
dGhlIHdvcmsgcXVldWUgbWVzc2FnZSByZWNlaXZlci4KICAgICB3b3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIp
OwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3Bh
dGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkKIAogc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IENvbm5l
Y3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1l
LCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBl
bmNvZGVyLT5zZXRJc1N5bmNNZXNzYWdlKHRydWUpOwogCiAgICAgLy8gRW5jb2RlIHRoZSBzeW5j
IHJlcXVlc3QgSUQuCkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjplbmFibGVJ
bmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZygpCiAgICAgaWYgKG1faW5jb21pbmdNZXNzYWdlc1Ro
cm90dGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0
aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMpOworICAgIG1faW5jb21pbmdNZXNzYWdlc1Ro
cm90dGxlciA9IG1ha2VVbmlxdWU8TWVzc2FnZXNUaHJvdHRsZXI+KCp0aGlzLCAmQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VzKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpwb3N0
Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTg0Myw3ICs4NDMs
NyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2Rl
cikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVx
dWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQ
QyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09ICJXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyIpIHsKICAgICAgICAgaWYgKCFtX2Z1
bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDIwZjVlYzViMjAyYmVjMmJkZjU4ZjAyMGViZGVl
ZjgzMTQ5MzExYmYuLmFkYzRhYWQ5ODgxOGZhMDZhZmM2YmU4OTYxNDVkNTYzMTU4MzJkYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTQzMyw3ICs0MzMsNyBA
QCBib29sIENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPgogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5
bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRp
b25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZl
ck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1v
dmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIENvbm5l
Y3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5k
bGVyLCB1aW50NjRfdAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVz
c2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5j
b2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6
bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbmV4dEFz
eW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCBjY2EwNzM5MGFkZWM0NDZkZTc0NjZjZjhlMTAxMjNj
Mjc5Mzg1MzUyLi5mZDUxNzAxNzEyYjA2MjlkNDcyNTJkMDQwODk2YzY0ZmNiY2JiMmFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3cmFwcGVkTWVzc2FnZSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rl
cj4od3JhcHBlZE1lc3NhZ2UuZGF0YSgpLCB3cmFwcGVkTWVzc2FnZS5zaXplKCksIG51bGxwdHIs
IFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPih3
cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RG
TW92ZShhdHRhY2htZW50cykpOwogfQogCiBzdGF0aWMgaW5saW5lIGNvbnN0IHVpbnQ4X3QqIHJv
dW5kVXBUb0FsaWdubWVudChjb25zdCB1aW50OF90KiBwdHIsIHVuc2lnbmVkIGFsaWdubWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA4NTQ1MmNk
YTdlMDQ1ZTQ0NTVlMDdiOTNiYWZjYTM1YjEwMjAwMTFlLi5hNzQ5YWFiODcwMDU0Y2ViNjkwZTVm
MTRmNDA3NTYzZmZjZDBmOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogICAg
IH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlz
dGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0g
KGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFt
ZSgpLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5
bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKICAgICAgICAgKmVuY29k
ZXIgPDwgbGlzdGVuZXJJRDsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZN
b3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IDNkNmYzNDI4OTJiYzg4MzkwNjc4ZThjMzY0NjM5
MTEwZGU0ZjU3MjYuLjc3MTQ0OGE0NGQwODg2ZGQwMWJiMGMyZGU2NGRjOWE0Mjg2MjdhMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQzLDcgKzQz
LDcgQEAgY2xhc3MgTWVzc2FnZVNlbmRlciB7CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0
KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAgYXV0byBlbmNvZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNv
ZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgICAgICAKICAgICAg
ICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5t
bQppbmRleCAzNzAyYWNjN2RmNTFiZDg0NmI5M2FmNjRiZjA3MGE0YzEwMDM5MTlmLi44N2RkMjhm
ODA4Njc4MmNlMmEzZGY3OTBmNGFjMGU2ZDc0OWRhYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC05Miw3ICs5Miw3
IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV94cGNDb25uZWN0aW9uKHhwY0Nvbm5lY3Rpb24pCiAg
ICAgICAgICwgbV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvbm5lY3Rp
b25UZXJtaW5hdGlvbldhdGNoZG9nOjp3YXRjaGRvZ1RpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgLCBtX2Fzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29u
bmVjdGlvbi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0
OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCisgICAgICAgICwgbV9hc3NlcnRpb24obWFr
ZVVuaXF1ZTxXZWJLaXQ6OlByb2Nlc3NBbmRVSUFzc2VydGlvbj4oeHBjX2Nvbm5lY3Rpb25fZ2V0
X3BpZChtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpLCAiQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hk
b2ciX3MsIFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpKQogI2VuZGlmCiAgICAg
ewogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKQEAgLTIy
MCw3ICsyMjAsNyBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVj
dGVkID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVz
c2FnZSwgd2hpY2ggY29udGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4K
LSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwg
IkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIsIDApOwogICAgICAg
ICBlbmNvZGVyLT5lbmNvZGUoTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9N
QUtFX1NFTkQpKTsKIAogICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwpAQCAtNDEyLDcg
KzQxMiw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURl
Y29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWludDhfdCogYm9keSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlciArIDEpOwogICAgICAgICBzaXplX3Qg
Ym9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIHNpemVvZihtYWNoX21zZ19oZWFkZXJfdCk7
CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4oYm9keSwgYm9keVNp
emUsIG51bGxwdHIsIFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1l
bnQ+IHsgfSk7CiAgICAgfQogCiAgICAgYm9vbCBtZXNzYWdlQm9keUlzT09MID0gaGVhZGVyLT5t
c2doX2lkID09IG91dE9mTGluZUJvZHlNZXNzYWdlSUQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21z
Z19oZWFkZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihkZXNjcmlwdG9yLT5vdXRfb2ZfbGluZS5hZGRyZXNzKTsKICAgICAg
ICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6ZSA9IGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLnNpemU7
CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHks
IG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3Ro
KSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNz
YWdlQm9keVNpemUsIFtdKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgewog
ICAgICAgICAgICAgdm1fZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9j
YXN0PHZtX2FkZHJlc3NfdD4oYnVmZmVyKSwgbGVuZ3RoKTsKICAgICAgICAgfSwgV1RGTW92ZShh
dHRhY2htZW50cykpOwogICAgIH0KQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBo
ZWFkZXIpCiAgICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBkZXNjcmlwdG9yRGF0YTsKICAgICBz
aXplX3QgbWVzc2FnZUJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUgLSAoZGVzY3JpcHRvckRh
dGEgLSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihoZWFkZXIpKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51
bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNv
ZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFj
aG1lbnRzKSk7CiB9CiAKIC8vIFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMg
aW5jbHVkZSB0aGUgbWF4aW11bSB0cmFpbGVyIHNpemUuCkBAIC01MjYsNyArNTI2LDcgQEAgdm9p
ZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgcmV0dXJu
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRp
b24oc3RkOjptYWtlX3VuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKKyAgICBk
ZWNvZGVyLT5zZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKG1ha2VVbmlxdWU8SW1wb3J0YW5jZUFzc2Vy
dGlvbj4oaGVhZGVyKSk7CiAjZW5kaWYKIAogICAgIGlmIChkZWNvZGVyLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSAiSW5pdGlhbGl6
ZUNvbm5lY3Rpb24iKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwCmluZGV4IDYzYjZiZTcyNzFlNDQ1ODgzOTUwNWFhOTE1ZTM4NzNm
ODUxNGRlZGQuLjc3YWY5YjI4NTg0NTI2YmI3MGM3ZmZjOGUzMjU2YTNiYWExM2EyODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
CkBAIC0yMTYsNyArMjE2LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAg
ICAgaWYgKG1lc3NhZ2VJbmZvLmlzQm9keU91dE9mTGluZSgpKQogICAgICAgICBtZXNzYWdlQm9k
eSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VCb2R5LT5kYXRhKCkpOwog
Ci0gICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9k
eSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykp
OworICAgIGF1dG8gZGVjb2RlciA9IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1l
c3NhZ2VJbmZvLmJvZHlTaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIAog
ICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiAKQEAgLTQ4Miw3
ICs0ODIsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdl
JiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChlcnJu
byA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxPQ0spIHsKICNpZiBVU0UoR0xJQikKLSAg
ICAgICAgICAgIG1fcGVuZGluZ091dHB1dE1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXhN
ZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1lc3NhZ2UpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ091
dHB1dE1lc3NhZ2UgPSBtYWtlVW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1lc3Nh
Z2UpKTsKICAgICAgICAgICAgIG1fd3JpdGVTb2NrZXRNb25pdG9yLnN0YXJ0KG1fc29ja2V0Lmdl
dCgpLCBHX0lPX09VVCwgbV9jb25uZWN0aW9uUXVldWUtPnJ1bkxvb3AoKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKEdJT0NvbmRpdGlvbiBjb25kaXRpb24pIC0+IGdi
b29sZWFuIHsKICAgICAgICAgICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19PVVQpIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ091dHB1dE1lc3NhZ2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IDY0
MGY0NTI5OWUzYjI2NmUwMjY5Y2NjY2M5NDUyYjNiYTU3OWVmYjEuLjVhZGZkODJiZWNhNDZkYjAy
NDQ3ZThiY2I2ZDM4NGMyYzAxNTZhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENvbm5l
Y3Rpb246OnJlYWRFdmVudEhhbmRsZXIoKQogICAgICAgICBpZiAoIW1fcmVhZEJ1ZmZlci5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtZXNzYWdlLCBsZXQncyBkaXNwYXRj
aCBpdC4KICAgICAgICAgICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cygwKTsKLSAg
ICAgICAgICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obV9yZWFk
QnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRh
Y2htZW50cykpOworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVy
PihtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZN
b3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAgICAgICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdU
Rk1vdmUoZGVjb2RlcikpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCmluZGV4
IGRkMmI2NmE3Y2ExOTU5MWI2ZWU2N2I4ZjI4NGZkMjU0YTM4Mjc4NWQuLjU2ODM3MjEzZGZiZWFl
YjRkNTllOTNjM2Q0OWY2YzdhYzJmNTM0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaApAQCAt
NDQsNiArNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR01vZHVsZSBHTW9kdWxlOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIE1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTW9kdWxlKTsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBNb2R1bGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCmluZGV4IDgyMzJkYjRlYjU2ZWFjYjZmOGNl
ODU1NjY0YjhiNzgyYWI2NTBhOTguLjdhZWU0N2VhYjk1ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0
Y2Y0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGlu
Z0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5n
Q29udGV4dC5tbQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RkOjp1
bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCkKIHsKLSAgICBhdXRvIGxh
eWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+
KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3Rp
bmdDb250ZXh0PigpOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKICAgICAgICAg
a0NBQ29udGV4dFBvcnROdW1iZXIgOiBAKHNlcnZlclBvcnQuc2VuZFJpZ2h0KCkpLApAQCAtNTIs
NyArNTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0
aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYQogI2lmIEhBVkUoT1VUX09GX1BST0NF
U1NfTEFZRVJfSE9TVElORykKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBM
YXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0
IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gbGF5ZXJI
b3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsK
KyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0Nv
bnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0g
TGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQpAQCAtODIsNyArODIsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9y
RXh0ZXJuYWxIb3N0aQogI2lmIFBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhv
c3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdp
bkhvc3RpbmdQcm9jZXNzKCkKIHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3Rp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogICAgIGxheWVy
SG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91
dE9mUHJvY2VzczsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250
ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9u
czpAeyBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9XTsKICAgICByZXR1
cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCA5N2UyZGYzNTNiMzY4MjM5MjlhMzFh
ZTk1N2ExZGRjZGMyMWMzN2Q2Li5iOThjYTk0YmM5ZWZjMjNiMmVkODE4YTViNzg0MzM3MjMxN2U5
YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oCkBAIC00OSw3ICs0OSw4IEBAIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNs
YXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uOwogc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
czsKIAotY2xhc3MgUGx1Z2luQ29udHJvbGxlclByb3h5IDogUGx1Z2luQ29udHJvbGxlciB7Citj
bGFzcyBQbHVnaW5Db250cm9sbGVyUHJveHkgOiBwdWJsaWMgUGx1Z2luQ29udHJvbGxlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGx1
Z2luQ29udHJvbGxlclByb3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMzY2Yjk4M2NjMGJl
YTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNS4uY2U4MjY3ZDJlZTc4Y2FjYjNkZGEwYTliMzc1
YmZhYWZjNjg2ZWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6U3RyaW4KIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50
ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMs
IGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxh
eWVyQ2xpZW50SUQpCiB7Ci0gICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJhbWV0ZXJz
KTsKKyAgICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1ha2VVbmlxdWU8UGx1Z2luQ29u
dHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOwogCiAgICAgUGx1Z2luQ29u
dHJvbGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVyUHJveHlQdHIgPSBwbHVnaW5Db250cm9sbGVy
UHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElV
UkwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRleCBiYmQ0MjNiY2Y1
NzE1ZTRhZDcwYmY1MmRlZjhjMmMzMGM0MWJmMGY2Li4zZTYxYmJkMDAwZTFmNGNkYjZjMmEzNmNh
NGY3NWU5MDRmODM1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
VVJMLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCkBAIC00NCw3ICs0
NCw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7
CiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNl
VVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91
bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwp
OworICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVSTD4oKmJhc2VV
UkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CiAgICAgICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBhYnNvbHV0ZVVSTFN0cmluZyA9IGFic29sdXRlVVJMLT5zdHJpbmcoKTsKIAogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwg
YWJzb2x1dGVVUkxTdHJpbmcpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBVUkwgOiBwdWJs
aWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgaWYgKG1f
cGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9IHN0
ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKKyAgICAgICAg
bV9wYXJzZWRVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgpLCBtX3N0cmluZyk7
CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgbV9zdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCmluZGV4
IDI1OTI4NDdlMzQxYTNiNmY3Mjg3NTRiZDc4OGE2NjUzZGQyMjE1YjAuLmQzZmY2MjFlYzBmNGEx
MGQ3NTY0ODdjYzIxNmY0OTVjZTg2ZDcyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCkBAIC04Myw3ICs4
Myw3IEBAIGJvb2wgUmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgUmVtb3RlT2JqZWN0SW52b2NhdGlvCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYmxvY2tTaWduYXR1cmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHJlc3VsdC5tX3JlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbHlJbmZvPihyZXBseUlE
LCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CisgICAgICAgIHJlc3VsdC5tX3JlcGx5SW5mbyA9
IG1ha2VVbmlxdWU8UmVwbHlJbmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggNjVkYTll
ZmYwMWI0M2VhNTcxMDgwMmY2YzQ2YTZkMDIwMjY1NjkzZS4uNDg5OTc2MjkzMmI3YWY2OTIyMWQw
NTBhZjY3NDU4MzZmYzM4N2IwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTA5LDcgKzEwOSw3
IEBAIC0gKGlkKV9pbml0V2l0aFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSYpcGFnZQogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3Jl
bW90ZU9iamVjdFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVj
dFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtl
VW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CkBAIC0xMTksNyArMTE5LDcgQEAgLSAoaWQpX2luaXRXaXRoV2ViUGFn
ZVByb3h5OihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZQogICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxm
LCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6
UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9
CkBAIC0xNjAsNyArMTYwLDcgQEAgLSAodm9pZClfc2VuZEludm9jYXRpb246KE5TSW52b2NhdGlv
biAqKWludm9jYXRpb24gaW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnQKICAgICAgICAgaWYg
KHN0cmNtcChbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUJs
b2NrU2lnbmF0dXJlXS5tZXRob2RSZXR1cm5UeXBlLCAidiIpKQogICAgICAgICAgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlJldHVybiB2
YWx1ZSBvZiBibG9jayBhcmd1bWVudCBtdXN0IGJlICd2b2lkJy4gKCVzKSIsIHNlbF9nZXROYW1l
KGludm9jYXRpb24uc2VsZWN0b3IpXTsKIAotICAgICAgICByZXBseUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0
ZVJlcGx5SWRlbnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKKyAgICAgICAgcmVwbHlJ
bmZvID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5m
bz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CiAKICAg
ICAgICAgLy8gUmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0IHRyeSB0byBlbmNv
ZGUgaXQuCiAgICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggN2Vk
MTFlNmMxNzFlMjBiZTFlOWVhZGIzMDdlNzFmYzQ4YmZkZTg0OS4uZmFlZmVkMmRjYzgzOGVlOTU3
MzkwNjVkYWM2M2YxMzU2M2YwZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC05NCw3ICs5NCw3IEBA
IFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBp
dGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9D
T05URVhUX01FTlVfSVRFTSwgTlVMTCkpOwogCi0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKKyAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
aXRlbURhdGEpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgc3Vi
TWVudSA9IGl0ZW1EYXRhLnN1Ym1lbnUoKTsKICAgICBpZiAoIXN1Yk1lbnUuaXNFbXB0eSgpKQog
ICAgICAgICB3ZWJraXRDb250ZXh0TWVudUl0ZW1TZXRTdWJNZW51KGl0ZW0sIGFkb3B0R1JlZih3
ZWJraXRDb250ZXh0TWVudUNyZWF0ZShzdWJNZW51KSkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdl
YktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyhHdGtBY3Rp
b24qIGFjdGlvbikKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChHVEtfSVNfQUNUSU9OKGFjdGlv
biksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lU
X0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVf
SVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOworICAgIGl0ZW0tPnByaXYtPm1l
bnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOwogCiAg
ICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbihHQWN0aW9uKiBh
Y3Rpb24KICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghdGFyZ2V0IHx8IGdfdmFyaWFudF9pc19v
Zl90eXBlKHRhcmdldCwgZ19hY3Rpb25fZ2V0X3BhcmFtZXRlcl90eXBlKGFjdGlvbikpLCBudWxs
cHRyKTsKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhU
X01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51
bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFy
Z2V0KTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKIAog
ICAgIHJldHVybiBpdGVtOwogfQpAQCAtMTk0LDcgKzE5NCw3IEBAIFdlYktpdENvbnRleHRNZW51
SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbihXZWJL
aXRDb250CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVY
VF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBu
dWxscHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1l
bnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlv
blR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
bnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9u
VGFnKGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7Cisg
ICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUds
aWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdl
YmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CiAKICAgICByZXR1cm4gaXRl
bTsKIH0KQEAgLTIxNiw3ICsyMTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9j
b250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9sYWJlbAogCiAgICAg
V2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAg
IENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVj
a2FibGUoYWN0aW9uKSA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0
ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1H
bGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBT
dHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtl
VW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0
aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKIAogICAg
IHJldHVybiBpdGVtOwogfQpAQCAtMjM5LDcgKzIzOSw3IEBAIFdlYktpdENvbnRleHRNZW51SXRl
bSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2NoYXIq
IGxhCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBlLCBD
b250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFiZWwp
KTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJ
dGVtR2xpYj4oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnLCBT
dHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CiAgICAgaXRlbS0+cHJpdi0+c3ViTWVudSA9IHN1Ym1l
bnU7CiAgICAgd2Via2l0Q29udGV4dE1lbnVTZXRQYXJlbnRJdGVtKHN1Ym1lbnUsIGl0ZW0pOwog
CkBAIC0yNTYsNyArMjU2LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEKIFdlYktpdENvbnRl
eHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3Iodm9pZCkK
IHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5V
X0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRy
KSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRl
eHRNZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9u
LCBTdHJpbmcoKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNv
bnRleHRNZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0
aW9uLCBTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CmluZGV4IDVlZDE0M2E5OTg1OTA0OTZjMzM3NmE1Njk4ODExNTNhNmEwMmIyOGMuLmYzM2NhYjMw
NWZlZTEyNzRmYWE3YjIxODM4ZTliYjdlZjc2YmJmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApA
QCAtNzIsNiArNzIsNyBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQogICAgICwg
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4KICAgICAsIHB1YmxpYyBQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBk
ZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IDdhZDMzMzE0
NTM5MTg4ODlmZDNiOTg5NjM4NmE4YmVkMWY1MTlhMTQuLjM5MTRhNGMyMDE0YTlhNTRhNjM0ODhh
NGU3NDM4MTljNmE4ZGIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0K
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAogICAgICAgICBBU1NF
UlQodmlld0NvbnRyb2xsZXIpOwogCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5t
X2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJl
cXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVyKTsKKyAgICAgICAgcGF5bWVudENvb3JkaW5hdG9y
UHJveHktPm1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IG1ha2VVbmlxdWU8UGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50
UmVxdWVzdC5nZXQoKSwgdmlld0NvbnRyb2xsZXIpOwogCiAgICAgICAgIEFTU0VSVCghcGF5bWVu
dENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cpOwogICAgICAgICBwYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyA9IFtOU1dpbmRvdyB3aW5kb3dXaXRoQ29udGVudFZp
ZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXgg
ODZlNzQ0YzEwOGRmNGNiY2Y1ZDA0NzYwOWFjZjk2YzY4MjNkNmIxNi4uNGY4MzcwMjRlZTVmMzRm
ZmEwZTY5YmFmN2IzYmZjODgxYTUyODAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAgLTU1
LDYgKzU1LDcgQEAgZW51bSBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
IDogdWludDhfdDsKIHVzaW5nIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJik+OwogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXIgOiBw
dWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdGlvbk1hbmFnZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50
aWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0aW9uTWFu
YWdlcihOZXR3b3JrUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IDU2YTc4M2EwYjIzYjI2YTIwYzViOGZh
NGE1OWYxNTdhNGMwMzdiYjcuLjJkNWQxYWZjMDgyN2E0MWEwYmQ4M2JiYWE4MGY3OGY2MTRmNWJk
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4g
Y3JlYXRlKGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGUgdHlwZSwgT3B0
aW9uYWw8cGlkX3Q+IHBpZCA9IFdURjo6bnVsbG9wdCkKICAgICB7CkBAIC0xNjAsNyArMTYxLDcg
QEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIpIC0+IE9wdGlvbmFsPEhhbmRsZT4KICAgICAgICAgcmV0dXJuIHt7IH19OwogCiAgICAg
SGFuZGxlIGhhbmRsZTsKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAgaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IG1ha2VVbmlxdWU8U2FuZGJveEV4dGVuc2lvbkltcGw+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0
YVJlZmVyZW5jZS5zaXplKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCAxOGRjMmZiOGVkMTNk
MTUzNDEyZWEzMGUyOTExMTc4ZWFjZWZjNWFlLi43MDQzMGY0NDMxMmM4YTU2MmNlMTVmYzczMmY2
OWQzODc2ZmU5YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CkBAIC0xMjUsNyArMTI1LDcgQEAgVGV4dHVyZU1hcHBlckxheWVyJiB0ZXhtYXBMYXllcihOaWNv
c2lhOjpDb21wb3NpdGlvbkxheWVyJiBjb21wb3NpdGlvbkxheWVyKQogewogICAgIGF1dG8mIGNv
bXBvc2l0aW9uU3RhdGUgPSBjb21wb3NpdGlvbkxheWVySW1wbChjb21wb3NpdGlvbkxheWVyKS5j
b21wb3NpdGlvblN0YXRlKCk7CiAgICAgaWYgKCFjb21wb3NpdGlvblN0YXRlLmxheWVyKSB7Ci0g
ICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVN
YXBwZXJMYXllcj4oKTsKKyAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXllciA9IG1ha2VVbmlx
dWU8VGV4dHVyZU1hcHBlckxheWVyPigpOwogICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVy
LT5zZXRJRChjb21wb3NpdGlvbkxheWVyLmlkKCkpOwogICAgIH0KICAgICByZXR1cm4gKmNvbXBv
c2l0aW9uU3RhdGUubGF5ZXI7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RMYXllcigpCiAgICAgaWYgKG1fcm9vdExheWVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Jvb3RMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVy
ZU1hcHBlckxheWVyPigpOworICAgIG1fcm9vdExheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFw
cGVyTGF5ZXI+KCk7CiAgICAgbV9yb290TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOwog
ICAgIG1fcm9vdExheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwogICAgIG1fcm9vdExheWVy
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoMCwgMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3Iv
VGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXgg
Y2QzZTU3YzZiY2I5ZDhkYzFmZjk5Y2FkNTljNGUxM2ZmNjYwM2E2Yi4uYmNiMjM1OTc1YjEzM2Qy
ZTI3Njc2ZDI4M2ZlODkxMzgxYTBkNWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3Ro
cmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IFJlZjxUaHJlYWRlZENvbXBvc2l0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKENsaWVu
dCYgY2xpZW50LCBUaHJlYWRlZERpc3BsCiBUaHJlYWRlZENvbXBvc2l0b3I6OlRocmVhZGVkQ29t
cG9zaXRvcihDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OkNs
aWVudCYgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbGVGYWN0b3IsIFRl
eHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgcGFpbnRGbGFncykKICAgICA6IG1fY2xpZW50KGNsaWVu
dCkKICAgICAsIG1fcGFpbnRGbGFncyhwYWludEZsYWdzKQotICAgICwgbV9jb21wb3NpdGluZ1J1
bkxvb3Aoc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+KFt0aGlzXSB7IHJlbmRl
ckxheWVyVHJlZSgpOyB9KSkKKyAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKG1ha2VVbmlxdWU8
Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUoKTsgfSkpCiAjaWYg
VVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICAsIG1fZGlz
cGxheVJlZnJlc2hNb25pdG9yKFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUo
ZGlzcGxheUlELCBkaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQpKQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVy
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVy
LmgKaW5kZXggMWEwNTQ3NTA3ZWMxYzFhODEyNDcyYmI3ZWJkOWZhMGQ0YWQxM2E0OC4uMDdlOGJi
YzliNWM5YzNjNmM5ZDhkNmMzYjk0NWU1MzkzMjdiODc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaApAQCAtMzks
NiArMzksNyBAQCBjbGFzcyBOUFZhcmlhbnREYXRhOwogY2xhc3MgUGx1Z2luOwogCiBjbGFzcyBO
UE9iamVjdE1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIpOwogCiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2Jq
ZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RN
YXAuY3BwCmluZGV4IDYxZTFmOTQwMjUyMzg1ZGI4MDVlYzEyMmRmZjFjOWU0ZjFiNzI1NjMuLmQ0
YjUyNGM4MjllYzY2NzIxZGYxYTcwZDJkNTEzYWU0ZWIzZjNkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIHZvaWQgTlBSZW1vdGVPYmplY3RNYXA6Om5wT2JqZWN0UHJveHlEZXN0cm95ZWQoTlBP
YmplY3QqIG5wT2JqZWN0KQogdWludDY0X3QgTlBSZW1vdGVPYmplY3RNYXA6OnJlZ2lzdGVyTlBP
YmplY3QoTlBPYmplY3QqIG5wT2JqZWN0LCBQbHVnaW4qIHBsdWdpbikKIHsKICAgICB1aW50NjRf
dCBucE9iamVjdElEID0gZ2VuZXJhdGVOUE9iamVjdElEKCk7Ci0gICAgbV9yZWdpc3RlcmVkTlBP
YmplY3RzLnNldChucE9iamVjdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyPih0aGlzLCBwbHVnaW4sIG5wT2JqZWN0SUQsIG5wT2JqZWN0KS5yZWxlYXNlKCkpOwor
ICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQobnBPYmplY3RJRCwgbWFrZVVuaXF1ZTxOUE9i
amVjdE1lc3NhZ2VSZWNlaXZlcj4odGhpcywgcGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCku
cmVsZWFzZSgpKTsKIAogICAgIHJldHVybiBucE9iamVjdElEOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
TW9kdWxlLmNwcAppbmRleCA3YjAyYjVlMTJmMzJjNzJkMzhmNTIwNDViYjZkNmEyM2I2MmFlMmUx
Li4yNjFkN2E4OTY5MzA2YTg5MjVjNGFiMzZlNDc5NDdiMzk2YzEyNTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTW9kdWxlLmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyBib29sIG1vZHVsZU1p
eGVzR3RrU3ltYm9scyhNb2R1bGUqIG1vZHVsZSkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6dHJ5TG9hZCgpCiB7Ci0gICAgbV9tb2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4o
bV9wbHVnaW5QYXRoKTsKKyAgICBtX21vZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihtX3BsdWdp
blBhdGgpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IGVhMmJlOTMwOGNiYmU2
ZGQ3ZWI4Y2YyYzU4OGM4ZmY2MTllYTk5M2MuLjk1NTEzZjQ3OTgyZmQ2N2VlNWY5OGRkNzk5NmM4
NTk4ZjFmNDYzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC01MSw2
ICs1MSw3IEBAIGNsYXNzIEVuY29kZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGVudW0gTGF5ZXJDaGFuZ2UgewogICAgICAgICBOYW1lQ2hhbmdlZCAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxLApAQCAtOTQsNiArOTUsNyBAQCBjbGFzcyBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbiB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXllckNyZWF0
aW9uUHJvcGVydGllcyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMoKTsKIAogICAgICAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKQEAgLTEwOSw2ICsxMTEsNyBAQCBjbGFzcyBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXllclByb3BlcnRp
ZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExh
eWVyUHJvcGVydGllcygpOwogICAgICAgICBMYXllclByb3BlcnRpZXMoY29uc3QgTGF5ZXJQcm9w
ZXJ0aWVzJiBvdGhlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRl
eCAxZjJkZTRkMDM3ZWEzZTgzMDI4N2FiOThjYjJhOGYyMWM0ZWNlYTJlLi4wZDIyN2ZmYzFkOWM1
NTU2YWFkOTJlN2VlMTU3NjVlMTZiMzQ0MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMoY29uc3QgTGF5ZXJQcm9wZXJ0aQog
ICAgIC8vIEZJWE1FOiBMYXllclByb3BlcnRpZXMgc2hvdWxkbid0IGJlIGNvcHlhYmxlOyBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lIHNob3VsZCBjb3B5IHRoZSByZWxldmFudCBwcm9wZXJ0
aWVzLgogCiAgICAgaWYgKG90aGVyLnRyYW5zZm9ybSkKLSAgICAgICAgdHJhbnNmb3JtID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnRyYW5z
Zm9ybSk7CisgICAgICAgIHRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOwogCiAgICAgaWYgKG90aGVyLnN1YmxheWVy
VHJhbnNmb3JtKQotICAgICAgICBzdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXllclRyYW5zZm9ybSk7
CisgICAgICAgIHN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKIAogICAgIGlmIChvdGhl
ci5maWx0ZXJzKQotICAgICAgICBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7CisgICAgICAgIGZpbHRlcnMgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0ZXJzKTsKIH0KIAog
dm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtMzU0LDcgKzM1NCw3IEBAIGJvb2wgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFuc2Zvcm0pKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgcmVzdWx0LnRyYW5z
Zm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRy
YW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC50cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOwogICAgIH0KIAogICAgIGlmIChyZXN1
bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpIHsKQEAgLTM2
Miw3ICszNjIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICByZXN1bHQuc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1bHQuc3VibGF5ZXJU
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFu
c2Zvcm0pOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBIaWRk
ZW5DaGFuZ2VkKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJvdW5kZWRSZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJlc3VsdC5zaGFwZVJvdW5kZWRSZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7
CisgICAgICAgIHJlc3VsdC5zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpG
bG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5j
aGFuZ2VkUHJvcGVydGllcyAmIFNoYXBlUGF0aENoYW5nZWQpIHsKQEAgLTQ3MSw3ICs0NzEsNyBA
QCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFz
RnJvbnRCdWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaGFz
RnJvbnRCdWZmZXIpIHsKLSAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3JlID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7CisgICAgICAgICAgICBh
dXRvIGJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KG51
bGxwdHIpOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqYmFja2luZ1N0b3JlKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKQEAgLTQ4Niw3ICs0
ODYsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5j
aGFuZ2VkUHJvcGVydGllcyAmIEZpbHRlcnNDaGFuZ2VkKSB7Ci0gICAgICAgIGF1dG8gZmlsdGVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKTsKKyAgICAg
ICAgYXV0byBmaWx0ZXJzID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpmaWx0ZXJzKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0LmZpbHRlcnMgPSBXVEZNb3ZlKGZpbHRlcnMpOwpA
QCAtNjAyLDcgKzYwMiw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVyVHJlZVRyCiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGllcz4gbGF5ZXJQcm9wZXJ0aWVzID0g
c3RkOjptYWtlX3VuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxMYXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8TGF5ZXJQ
cm9wZXJ0aWVzPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpsYXllclByb3BlcnRp
ZXMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggOTc4YzRiYmVkN2I1Y2Q5
MWNhYWVjMTU0YmM4YmExNGJhYjc1MzQ2MS4uZTgyNmEzMGIxMmUyNGVjZjQzMGM2OWI3NmIxYTZm
MjhmNWJiOThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcApAQCAtNTIyLDcgKzUyMiw3IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc05ld1Jvb3ROb2RlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxpbmdTdGF0ZVRyZWU+KCk7CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUgPSBtYWtlVW5p
cXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKIAogICAgIGJvb2wgaGFzQ2hhbmdlZFByb3BlcnRp
ZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDaGFuZ2VkUHJvcGVydGllcykpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAK
aW5kZXggYzczNDdjNzllNjY5MzgzNzg1ZDA1ZDIyOWU0N2I3NDdjMWYwY2E1NS4uYjJjZDQ4NDY2
NzdjZTk3ZGZhYzI4NTg0OTBjMWVhNDM0Zjk2MjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAtNjAsNyArNjAsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpCiB7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2Ug
PSBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKICAgICBSZWZQdHI8Y2Fpcm9fdD4gYml0bWFwQ29udGV4
dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpj
cmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9y
eShiaXRtYXBDb250ZXh0LmdldCgpKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcAppbmRleCA5MmYxMDYyYjI5MGY3NzVkYjVhZTdlZDE5NTJhOWNhODU4YWIz
MTIyLi4wMTZhYmJkOTkzZTE4YTQ1YzAxYTdmMDQ5N2RjYzMxYTUzYjQzNzA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xMDAsNyArMTAw
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVHcmFwaGljc0NvbnRleHQoKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShiaXRtYXBD
b250ZXh0LmdldCgpLCAwLCBtX3NpemUuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RN
KGJpdG1hcENvbnRleHQuZ2V0KCksIDEsIC0xKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihiaXRtYXBDb250ZXh0LmdldCgpKTsKIH0KIAogdm9p
ZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJE
LmNwcAppbmRleCA2MGY4ZjNjYjczMjg5YjZiMGQyZjRjMzUxNDZmMWNmZWQ0MDM0YTgwLi4xMDAx
ZWUzZTUyOTJlZGNiNTM2ZjgyMzMwM2MyYzc0YzJiMWU5Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIG1fYml0bWFwID0gY3JlYXRlRGlyZWN0
MkRTdXJmYWNlKCk7CiAgICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBiaXRtYXBDb250ZXh0
ID0gRGlyZWN0MkQ6OmNyZWF0ZVJlbmRlclRhcmdldEZyb21XSUNCaXRtYXAobV9iaXRtYXAuZ2V0
KCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CiB9CiAK
IHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCmluZGV4IDI5
OTU4MTA5NWRkMWQxYjE1YWZlYWJiNGRhY2JlZDA1ZDJiZGQxMTQuLjU0NWE3YmU0ZDQ4MTk3MTMy
OGQxYzNmNzlkMjcxZWQ5YTIxZjgzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJQ
cm9jZXNzUG9vbDsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBBdXRvbWF0aW9uQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BdXRv
bWF0aW9uQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKaW5kZXggMjhmYWY2ODcxOWE5ZDcy
OGQ1MWI2Yzc3MmQ4NGUxN2I2NDkwOTdjYS4uMmFlMmE1MDM0YzNhNDE3MWNjZjQ3N2I5Nzg1Yjcz
YTZmMjRkYjgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBBdXRv
bWF0aW9uU2Vzc2lvbkJyb3dzaW5nQ29udGV4dE9wdGlvbnMgOiB1aW50MTZfdCB7CiB9OwogCiBj
bGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBKYXZhU2NyaXB0RGlhbG9nVHlwZSB7CiAgICAg
ICAgIEFsZXJ0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4
dE1lbnVDbGllbnQuaAppbmRleCBhZjEwOWMxZGY2NzAwZGMyM2UyZTMzMWIwYjUwZWZiY2ZmNDI4
NjY3Li44MTZmNzFlMTI2NzBjYjNkNjViMWU2MzI4MDNhNmI0MGVmN2RiZmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaApAQCAt
NDksNiArNDksNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgQ29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuaAppbmRleCAwZjhjYWI5NzMyOWYwOTU3ZjMyYjQ3YzI3NzgxZDFlNzg2ZmExNDdk
Li44YjQ0YTNmNDU2YzUzMmFkMzM4MDZlZjY5YjQ3ZWFkMDk0MWRmN2IxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIG5h
bWVzcGFjZSBBUEkgewogCiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCmluZGV4IDkyYjJkNjc1
ZGZjYTJjYWZkYTIxMWIzZjcxYzU3OThhZmQ0NWQ2MmEuLmI0ZTJhZGU3MjllYTY2ZDhkZGE4ZGQ1
MDIxMThhZTRhYmRiMjE4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgRGljdGlvbmFyeTsKIAogY2xhc3MgRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKaW5kZXggMDIzNzZlMWUxMTBkNDc2
ZWIyYjkxODVlNGUyZmNkOGQ2ZTEzMzJlMS4uYjJlYWNjOWI4MzI1OThiMTdhOTlkYmQ5ZDY3ZWYy
NGU0NzNhZWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURv
d25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25s
b2FkQ2xpZW50LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7
IE5vLCBZZXMgfTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBEb3dubG9hZENsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RG93bmxv
YWRDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZpbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xp
ZW50LmgKaW5kZXggZjMxMjNhZjE5NTE2NWE2NjlkNjY2ODMxOGI4MTJlOTMzNjVlNmRjMi4uNmQx
ZTNiMjExZmUwZGQ5NWE5NDg1MDU4NDE3ZGI0ZGUwODI0MGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5kQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaW5kQ2xpZW50
KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5k
TWF0Y2hlc0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRj
aGVzQ2xpZW50LmgKaW5kZXggYzZmNDU3MzQyZDExMTkwMWRjYTZkM2MzMDkwMzM3ZmVlN2ExZmVj
Mi4uZmFlMWRjZDNjZDY4ODM1MDdlZmJlM2Q5NWQ1ZDZmNzJhMDM2OWRlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50LmgKQEAgLTM4
LDYgKzM4LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IEZpbmRNYXRjaGVzQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5GaW5kTWF0Y2hlc0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaAppbmRleCA1YjBjNmNjYTI0ZWVmYzFhOTU4
MTkxZTBlMjc5NGE0N2I0ZjU0ZTdjLi5mMGNhMDYwMTExOTgwMmVkMzY5YjRkMDc4ZDgzYzg2MmE1
MTYxMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgK
QEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNz
IEZvcm1DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfkZvcm1DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKaW5kZXggMTM3NTUyOWNkYTI1ZjI1Y2JiMTc5
YmRjODk4OTE3MWM4OWVlODg1Ny4uODk3NGNkMTMzOTQ3NzUwMjczZjQ1MGYwZTgzOTZjMGU2YjEz
MjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3Jl
ZW5DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVl
bkNsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBGdWxsc2NyZWVuQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBBUElUeXBlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVy
LmgKaW5kZXggNTI2NmJjMmNhNTRjZjA5OWMyMzhjYWNjNjIxNDRjOTc5OWEwOTc5Ny4uN2M2ZjU2
MjljYjYwZTUzYmM3Yjg1YWE4ODg5ZjcyZTY4ZDdhNGMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0zNCw2ICsz
NCw3IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OwogbmFtZXNwYWNlIEFQSSB7
CiAKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uUHJvdmlkZXIoKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNw
cAppbmRleCA5ODFhOTg1YmJkZTVmMWNiNjVmOTZjYmIyMTM5ZmJjZjE5ZDdkY2U1Li5lMTIyZWUz
ZWRiMWM0MjE5ZDFkODQxOTkzMjFhODAwM2Q1MmM4MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyJiBvYnNl
cnZlcikKIAogICAgIEFTU0VSVCghbV9vYnNlcnZlZENvb2tpZU1hbmFnZXJQcm94eSk7CiAKLSAg
ICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUElXZWJD
b29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRoaXMpOworICAgIG1fY29va2llTWFuYWdlclBy
b3h5T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVy
PigqdGhpcyk7CiAKICAgICBhdXRvKiBwb29sID0gbV9vd25pbmdEYXRhU3RvcmUtPnByb2Nlc3NQ
b29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKaW5kZXggZmNmNDYwNjFmNmJmYTZkY2I3NjBl
MTJjNjYzM2I2YjQ1ZjE1NmRkNC4uMTE4NGFhNDMyYzNiOWZmY2IxNWRhNWY4MjhlZjRhYzRmMWFk
YjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVu
dC5oCkBAIC0zNSw2ICszNSw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogbmFt
ZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEhpc3RvcnlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkhpc3RvcnlDbGllbnQoKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVu
dC5oCmluZGV4IGVhOWViYTUwZTFlZmU4ZjAzMjFjNGRmZTNhNDQ2ZjBkY2JiNWQ4YzkuLmJlNDNh
ZWVjNTRmZjJkNGFiYjVhMjhmZjM2MzE0NWM0OTBjN2U4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKQEAgLTM0LDYgKzM0
LDcgQEAgY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIElj
b25EYXRhYmFzZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SWNvbkRhdGFiYXNlQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKaW5kZXggNmY5ZTdh
ZjljOTgwOTIzM2I2YTU2NWVjM2UzODBiZTBhYWNkNTY3ZS4uMmZlMzg2MjU5NDYzYmZiMzYyM2Vi
YmRiNGZlZjVmODM5MzZiMGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgRGF0YVJl
ZmVyZW5jZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxv
YWRpbmdDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCBjMzVlN2IzYWU0OTNkOWFjNjNjYjNh
NGI1ODFmZTMyZmNiNDBhY2U4Li45ZDQzNDg5YTJkNjI1N2NiMGNhZjkyMmIzZmIwOTMyOTVjZTli
Yjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsK
IG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5k
bGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgKaW5kZXggY2JiOWUw
YTk3MTQ1YmQxN2RkZWY4ZTBiYjE0YWY4YzM3NmRmYjM4OC4uZGI1ZDkwYzMxZjkyNzY5ZDMwM2Ew
MWFkNzhiZGE3ZmJkMWE0ZDAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgKQEAgLTM4LDYgKzM4
LDcgQEAgc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiBuYW1lc3BhY2UgQVBJIHsKIAog
Y2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQu
aAppbmRleCAzNDhkNmJmNzcyOTI3MmU4ZjJhYmFlYzM3NTVjMjBkZTU0MmQ2NDVkLi5iMmVhNDFk
OWUyZjJlODFlMmM5ZWIzYjg3NzkxZmMzZWY4YzNmMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIE5h
dmlnYXRpb247CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIExvYWRlckNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9hZGVyQ2xpZW50
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmln
YXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggYTZlMDE5Y2M0NTE4NjNhNDFhY2ZjOGJl
YTdiZjMwMjg5NmIxYmI3My4uY2QyMmEyNjc2NDY4ZDE4MjM0YTYwODQyZmU5ZDkxNjcxYjIwYTg3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCkBAIC03Myw2ICs3Myw3IEBAIGNsYXNzIE5hdmlnYXRpb25SZXNwb25zZTsKIGNsYXNz
IE9iamVjdDsKIAogY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TmF2aWdhdGlvbkNsaWVudCgpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKaW5kZXgg
NWViZTQ0MDc0MmE3NjU0MWIxZDljY2YyOTk1YzlhOTVmZTg0ZDVhZC4uNmFlOGU3NTIwNWZmZmM4
NjUyZjRmOWI4M2JiM2RlMzBlZTZjZmFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQb2xpY3lDbGllbnQuaApAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgQVBJIHsK
IGNsYXNzIE9iamVjdDsKIAogY2xhc3MgUG9saWN5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Qb2xpY3lDbGllbnQoKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRleCBkOWRkMGRiNDY2
Mzc3MjJiNjAyYjIwZGRkZjY3MzgxMzVmNjQ2ZjYyLi43NzJkYTZlNWE4Njk3N2VjOGFlMmRjMDc1
NDJkOGZjZjFlMTQ5NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGll
bnQuaApAQCAtNzEsNiArNzEsNyBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFVJQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5VSUNsaWVudCgpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBhZmNlNzBiNjI3ZmVl
ZjdiNWJmODgyODlhZDgyMmYxOWMxOWNkYjZmLi4zZDAxNjExYzAyOWY5M2Y1Y2UzZTVlYjNlMzA2
NDc0ODg5YWI4ZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBXS0NvbnRleHRTZXRDbGllbnQoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIHdrQ2wKIAogdm9pZCBX
S0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwg
Y29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAg
ICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tD
bGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OldlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZSogd2tD
bGllbnQpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2wKICAgICB9
OwogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqV2ViS2l0Ojp0
b0ltcGwoY29udGV4dFJlZik7Ci0gICAgcHJvY2Vzc1Bvb2wuc2V0SGlzdG9yeUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEhpc3RvcnlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgcHJvY2Vzc1Bvb2wu
c2V0SGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEhpc3RvcnlDbGllbnQ+KHdrQ2xpZW50KSk7CiAK
ICAgICBib29sIGFkZHNWaXNpdGVkTGlua3MgPSBwcm9jZXNzUG9vbC5oaXN0b3J5Q2xpZW50KCku
YWRkc1Zpc2l0ZWRMaW5rcygpOwogCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBXS0NvbnRleHRT
ZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0
RG93bmxvYWQKICAgICAgICAgfQogICAgIH07CiAKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0
UmVmKS0+c2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4o
d2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRD
bGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBX
S0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25z
dCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5k
ZXggMTFiODM0YjRlZTJhOWE2ODc2MjZjNzMyYmY1OGE0ODgyM2Y2MzM0YS4uODg4Yjc1YmM3Y2Vj
ODlkMTZlMDdmNjE3ZTdiYjJjZTI5NzlmYTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBXS1R5cGVJRCBXS0dlb2xvY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tH
ZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9s
b2NhdGlvbk1hbmFnZXJSZWYsIGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2UqIHdrUHJv
dmlkZXIpCiB7Ci0gICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZiktPnNldFByb3ZpZGVy
KHN0ZDo6bWFrZV91bmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwor
ICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQcm92aWRlcihtYWtlVW5pcXVl
PFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAogdm9pZCBXS0dlb2xv
Y2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV0tHZW9sb2NhdGlvbk1hbmFn
ZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBXS0dlb2xvY2F0aW9uUG9zaXRpb25SZWYgcG9z
aXRpb25SZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCBiMjIzZDZmODdiZmE1ZTk2ZTNlNTBkYTJkZDc4
ZmYwZDJkZDQxNmNlLi43NjkyMzk5MGFiNWI5ZWEyMTM4NWYxZDM1NjllOGI1MGFhN2Y2NWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tOb3RpZmljYXRpb25N
YW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRl
cihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgY29uc3QgV0tOb3RpZmljYXRp
b25Qcm92aWRlckJhc2UqIHdrUHJvdmlkZXIpCiB7Ci0gICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5z
ZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPih3a1By
b3ZpZGVyKSk7CisgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5zZXRQcm92aWRlcihtYWtlVW5pcXVl
PFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAKIHZvaWQgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9u
TWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDQ3ZWM3MjZiMGNlNDQwNTdmMDAy
YjU0MGJlYTc2OGU0M2IxMGE4ZDQuLjYxYTY5YjFmM2E2ZGE3NDk2YWQ0NzI2OTcwYjg1ZjJjOTEx
ODEzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtOTQ4
LDcgKzk0OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsCiAgICAgICAgIH0KICAgICB9Owog
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
c2V0Q29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2tDbGll
bnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJB
TSh3a0NsaWVudCk7CkBAIC05NTcsNyArOTU3LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4
dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2wK
IAogdm9pZCBXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4od2tDbGllbnQpKTsK
KyAgICB0b0ltcGwocGFnZVJlZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KG1ha2VVbmlx
dWU8V2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lk
IFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VG
aW5kQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC05OTUsNyArOTk1LDcgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVu
dEJhc2UqIHdrQ2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNl
dEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5kQ2xpZW50Pih3a0NsaWVudCkpOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPEZpbmRDbGllbnQ+KHdr
Q2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2UqIHdrQ2xpZW50
KQpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2wKICAgICAgICAg
fQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8RmluZE1hdGNoZXNDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEZpbmRNYXRjaGVzQ2xp
ZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRC
YXNlKiB3a0NsaWVudCkKQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJbmplY3Rl
ZEJ1CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZUZvcm1DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFnZVJl
ZiktPnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVu
dCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPFdlYkZv
cm1DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSogd2tDbGll
bnQpCkBAIC0xMTk5LDcgKzExOTksNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAKICAgICBX
ZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSA9IHRvSW1wbChwYWdlUmVmKTsKIAotICAgIGF1dG8g
bG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KTsK
KyAgICBhdXRvIGxvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8TG9hZGVyQ2xpZW50Pih3a0NsaWVu
dCk7CiAKICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGdldCByaWQgb2YgdGhpcyBjb2RlIGFu
ZCB0cmFuc2l0aW9uIGFsbCBjbGllbnRzIHRvIHVzaW5nIGRpZExheW91dCBpbnN0ZWFkIG9mCiAg
ICAgLy8gZGlkRmlyc3RMYXlvdXRJbkZyYW1lIGFuZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRJbkZyYW1lLiBJbiB0aGUgbWVhbnRpbWUsIHRoaXMgaXMgcmVxdWlyZWQKQEAgLTEyODEs
NyArMTI4MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgfQogICAgIH07CiAK
LSAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvbGljeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBv
bGljeUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvbGljeUNs
aWVudChtYWtlVW5pcXVlPFBvbGljeUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0yMDc1LDcgKzIwNzUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAog
ICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZikt
PnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQg
V0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZU5hdmlnYXRpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTIyOTMsMTY0ICsyMjkzLDE2
NiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgIHdlYlBhZ2VQcm94eS0+c2V0TmF2aWdh
dGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPE5hdmlnYXRpb25DbGllbnQ+KHdrQ2xpZW50KSk7CiB9
CiAKLXZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VT
dGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKLXsKLSAgICBjbGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUxv
YWRTdGF0ZTo6T2JzZXJ2ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgU3RhdGVD
bGllbnQoY29uc3QgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKLSAgICAgICAgfQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZvaWQgd2lsbENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZykKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KK2NsYXNzIFN0YXRlQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZVN0YXRlQ2xpZW50QmFzZT4sIHB1YmxpYyBQ
YWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU3RhdGVDbGllbnQoY29uc3QgV0tQYWdlU3RhdGVDbGllbnRC
YXNlKiBjbGllbnQpCisgICAgeworICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlSXNMb2FkaW5n
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFu
Z2VJc0xvYWRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQuZGlkQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAg
IH0KKyAgICB2b2lkIGRpZENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZVRp
dGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxD
aGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxD
aGFuZ2VUaXRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENo
YW5nZVRpdGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZv
aWQgZGlkQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZENoYW5nZVRpdGxlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVS
TCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hh
bmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2
b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQWN0
aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRp
ZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZENoYW5nZUFjdGl2ZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGll
bnQuZGlkQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQog
Ci0gICAgICAgIHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNl
Y3VyZUNvbnRlbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5
U2VjdXJlQ29udGVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2ls
bENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUhhc09u
bHlTZWN1cmVDb250ZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25s
eVNlY3VyZUNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJp
ZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUVz
dGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAg
ICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUVz
dGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAg
ICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5n
ZUNhbkdvQmFjaygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZUNhbkdvQmFjaykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlQ2Fu
R29CYWNrKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRDaGFuZ2VDYW5Hb0JhY2spCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjaykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvRm9yd2Fy
ZCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZUNhbkdvRm9yd2FyZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJk
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hh
bmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUNhbkdvRm9yd2FyZCgp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9y
d2FyZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2Fu
R29Gb3J3YXJkKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZv
aWQgd2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJ
blByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50
LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblBy
b2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5n
ZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlTmV0d29ya1Jl
cXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVz
dHNJblByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2
b2lkIGRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3Jr
UmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0g
ICAgICAgIHZvaWQgd2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbykK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
Q2VydGlmaWNhdGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAg
ICB2b2lkIHdpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlQ2Vy
dGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRl
SW5mbygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNl
cnRpZmljYXRlSW5mbykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlk
Q2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQog
Ci0gICAgICAgIHZvaWQgd2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9j
ZXNzSXNSZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1f
Y2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNw
b25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5n
ZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVz
cG9uc2l2ZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZVdl
YlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkU3dhcFdlYlBy
b2Nlc3NlcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkU3dhcFdlYlByb2Nlc3NlcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KLSAgICB9OworICAgIHZvaWQgZGlkU3dhcFdlYlByb2Nlc3NlcygpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9Cit9OworCit2b2lkIFdLUGFnZVNldFBh
Z2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGll
bnQpCit7CiAgICAgaWYgKGNsaWVudCkKLSAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9h
ZFN0YXRlT2JzZXJ2ZXIoc3RkOjptYWtlX3VuaXF1ZTxTdGF0ZUNsaWVudD4oY2xpZW50KSk7Cisg
ICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG1ha2VVbmlxdWU8
U3RhdGVDbGllbnQ+KGNsaWVudCkpOwogICAgIGVsc2UKICAgICAgICAgdG9JbXBsKHBhZ2UpLT5z
ZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCmluZGV4IGY3NjNh
ZjYwMDNkYTQ2NjczNjMxZTkxZWE4MWI4M2I1Yzk3YTA4N2QuLjM1ZWY5MjIxNTRlMTk2MzAwZTRi
NmVlNzVkNGM5ODE3ODViYzNlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCkBAIC01Miw3ICs1Miw3IEBAIC0gKGlk
KWluaXRXaXRoUGFnZTooUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiYmKXBhZ2UKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAogICAgIF9wYWdlID0gV1RGTW92ZShwYWdlKTsKLSAgICBfb2JzZXJ2
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxm
LCBAIlVSTCIpOworICAgIF9vYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0
YXRlT2JzZXJ2ZXI+KHNlbGYsIEAiVVJMIik7CiAgICAgX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5h
ZGRPYnNlcnZlcigqX29ic2VydmVyKTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcAppbmRleCA3OGJiYTM5NjdiNjE5N2Mw
ZThhN2MyM2FjM2RhOGNkMTMyZTdjNGJlLi45NjQwNmQwYWFmYmMzNTU1NjBiNWQzMTk3YTAwYzI1
ZjU3NTlhM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUv
V0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3
LmNwcApAQCAtNjgsNSArNjgsNSBAQCB2b2lkIFdLVmlld1NldFZpZXdDbGllbnQoV0tWaWV3UmVm
IHZpZXcsIGNvbnN0IFdLVmlld0NsaWVudEJhc2UqIGNsaWVudCkKICAgICAgICAgfQogICAgIH07
CiAKLSAgICB0b0ltcGwodmlldyktPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFZpZXdDbGll
bnQ+KGNsaWVudCkpOworICAgIHRvSW1wbCh2aWV3KS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8Vmll
d0NsaWVudD4oY2xpZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQppbmRl
eCAyNjU1NTRmM2Q3ZjJkN2FkMjk2ZTlmM2Y5ZmExMTM4OGI3OGZkNTY0Li40OTY3Nzg4YTEwNTdm
YTg4MmEwYTAxYzhkYmY1MDAyZTkyMjZlYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubW0KQEAgLTYwMiw3ICs2MDIsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoUGFnZVJl
ZjooV0tQYWdlUmVmKXBhZ2VSZWYKIAogICAgIF9wYWdlID0gV2ViS2l0Ojp0b0ltcGwocGFnZVJl
Zik7CiAKLSAgICBfcGFnZUxvYWRTdGF0ZU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZik7CisgICAgX3BhZ2VMb2FkU3RhdGVPYnNl
cnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYpOwog
ICAgIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKl9wYWdlTG9hZFN0YXRlT2Jz
ZXJ2ZXIpOwogCiAgICAgQVNTRVJUKCFicm93c2luZ0NvbnRleHRDb250cm9sbGVyTWFwKCkuY29u
dGFpbnMoX3BhZ2UuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCAxMzcyY2E0MTA2Yzc2ZTFkNjIz
NWQ2MTRhZDVjMWU2YTU2ZWEwNWExLi44MWQzNzAzYjBlZWE4MmU1ZTZjNjJmMzIyMmFjNGU2ODE5
ZjZiM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLSFRUUENvb2tpZVN0b3JlLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgLSAodm9pZClhZGRPYnNl
cnZlcjooaWQ8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4pb2JzZXJ2ZXIKICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPihvYnNl
cnZlcik7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V0tIVFRQQ29v
a2llU3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIpOwogICAgIF9jb29raWVTdG9yZS0+cmVnaXN0ZXJP
YnNlcnZlcigqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggYmFjZTVhYzdl
YzAwYjE4OThhZDJkZjcyY2IxYjE5NDQ2N2RjZWM5ZC4uZWJhYzU2OGUzZGRiNjg3MGY4NWIwMTUw
OGVjMjBmYWFiN2YyMDRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTM3Myw3ICszNzMsNyBAQCAtIChpZCA8X1dLRG93
bmxvYWREZWxlZ2F0ZT4pX2Rvd25sb2FkRGVsZWdhdGUKIC0gKHZvaWQpX3NldERvd25sb2FkRGVs
ZWdhdGU6KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilkb3dubG9hZERlbGVnYXRlCiB7CiAgICAg
X2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlOwotICAgIF9wcm9jZXNzUG9vbC0+
c2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkQ2xpZW50
Pihkb3dubG9hZERlbGVnYXRlKSk7CisgICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVu
dChtYWtlVW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsK
IH0KIAogLSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQpA
QCAtMzg0LDcgKzM4NCw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9hdXRvbWF0
aW9uRGVsZWdhdGUKIC0gKHZvaWQpX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTooaWQgPF9XS0F1dG9t
YXRpb25EZWxlZ2F0ZT4pYXV0b21hdGlvbkRlbGVnYXRlCiB7CiAgICAgX2F1dG9tYXRpb25EZWxl
Z2F0ZSA9IGF1dG9tYXRpb25EZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRp
b25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYs
IGF1dG9tYXRpb25EZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNs
aWVudChtYWtlVW5pcXVlPFdlYktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0b21hdGlv
bkRlbGVnYXRlKSk7CiB9CiAKIC0gKHZvaWQpX3dhcm1Jbml0aWFsUHJvY2VzcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCmluZGV4IDhiNmRmMjRmODk1MmQ4NGY2MDc1NDRjNmEzMWEyZGQxYjhhYTM1
NWQuLmEwMGIyMDNjYzkwNTkzMDFiZWNjNDYxZDYxYjQ2NzMyYjg1NjEyZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIubW0KQEAgLTExOCw2ICsxMTgsNyBAQCAtICh2b2lkKXJlbW92ZUFsbENvbnRl
bnRSdWxlTGlzdHMKIH0KIAogY2xhc3MgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZSBmaW5h
bCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3NhZ2VIYW5k
bGVyRGVsZWdhdGUoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIGlkIDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyLCBOU1N0cmluZyAqbmFtZSkKICAgICAgICAgOiBt
X2NvbnRyb2xsZXIoY29udHJvbGxlcikKQEAgLTE0NSw3ICsxNDYsNyBAQCBwcml2YXRlOgogCiAt
ICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxl
cj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgYXV0
byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVz
c2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdv
cmxkKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYs
IHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxk
Ojpub3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+
YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1w
dCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBh
bHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KQEAgLTIyOSw3ICsyMzAsNyBAQCAtICh2b2lkKV9y
ZW1vdmVBbGxVc2VyU3R5bGVTaGVldHNBc3NvY2lhdGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9X
S1VzZXJDb250ZW50VwogCiAtICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5n
ICopbmFtZSB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRl
bnRXb3JsZAogewotICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdh
dGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVzZXJDb250ZW50
V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6Oldl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFu
ZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp1
c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiAgICAgaWYgKCFfdXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdl
dCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0
aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBu
YW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFtZV07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwMzkxYTE5OTJl
MzUzMmRiZTVmMjFkYjY5MWRkODEwOGFhZTJhNjZjLi4wOGY0MmVjOGIxM2JmNzBiZDJiNmIzN2Jj
N2Q4MTU2ODIzZDZjNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTc1Nyw3ICs3NTcsNyBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfaW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2wsIHBhZ2VDb25maWd1
cmF0aW9uLmNvcHlSZWYoKSk7CisgICAgX2ltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6V2ViVmll
d0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJhdGlvbi5jb3B5UmVm
KCkpOwogICAgIF9wYWdlID0gJl9pbXBsLT5wYWdlKCk7CiAKICAgICBfaW1wbC0+c2V0QXV0b21h
dGljYWxseUFkanVzdHNDb250ZW50SW5zZXRzKHRydWUpOwpAQCAtNzY5LDE0ICs3NjksMTQgQEAg
LSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0
aW9uICopY29uZmlndXJhdGlvbgogCiAgICAgX3BhZ2UtPnNldEFwcGxpY2F0aW9uTmFtZUZvckRl
c2t0b3BVc2VyQWdlbnQoY29uZmlndXJhdGlvbi5fYXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVz
ZXJBZ2VudCk7CiAKLSAgICBfbmF2aWdhdGlvblN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7CisgICAgX25hdmlnYXRpb25TdGF0ZSA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNlbGYpOwogICAgIF9wYWdlLT5zZXROYXZp
Z2F0aW9uQ2xpZW50KF9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZU5hdmlnYXRpb25DbGllbnQoKSk7
CiAKLSAgICBfdWlEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpVSURlbGVnYXRl
PihzZWxmKTsKLSAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6RmluZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXREaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHNl
bGYpKTsKKyAgICBfdWlEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpVSURlbGVnYXRlPihz
ZWxmKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RmluZENs
aWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChtYWtl
VW5pcXVlPFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHNlbGYpKTsKIAotICAgIF9p
Y29uTG9hZGluZ0RlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Okljb25Mb2FkaW5n
RGVsZWdhdGU+KHNlbGYpOworICAgIF9pY29uTG9hZGluZ0RlbGVnYXRlID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+KHNlbGYpOwogCiAgICAgX3VzZVBsYXRmb3JtRmlu
ZFVJID0gWUVTOwogCkBAIC0zNDI1LDcgKzM0MjUsNyBAQCAtICh2b2lkKXNldEFsbG93c0JhY2tG
b3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlv
bgogICAgIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9IGFsbG93c0JhY2tG
b3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOwogCiAgICAgaWYgKGFsbG93c0JhY2tGb3J3YXJkTmF2
aWdhdGlvbkdlc3R1cmVzICYmICFfZ2VzdHVyZUNvbnRyb2xsZXIpIHsKLSAgICAgICAgX2dlc3R1
cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcj4oKl9wYWdlKTsKKyAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKl9wYWdlKTsKICAgICAgICAgX2dlc3R1cmVD
b250cm9sbGVyLT5pbnN0YWxsU3dpcGVIYW5kbGVyKHNlbGYsIFtzZWxmIHNjcm9sbFZpZXddKTsK
ICAgICAgICAgaWYgKFdLV2ViVmlldyAqYWx0ZXJuYXRlV2ViVmlldyA9IFtfY29uZmlndXJhdGlv
biBfYWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0dXJlc10pCiAgICAgICAgICAgICBf
Z2VzdHVyZUNvbnRyb2xsZXItPnNldEFsdGVybmF0ZUJhY2tGb3J3YXJkTGlzdFNvdXJjZVBhZ2Uo
YWx0ZXJuYXRlV2ViVmlldy0+X3BhZ2UuZ2V0KCkpOwpAQCAtNTY3OCw3ICs1Njc4LDcgQEAgLSAo
dm9pZClfc2V0SW5wdXREZWxlZ2F0ZTooaWQgPF9XS0lucHV0RGVsZWdhdGU+KWlucHV0RGVsZWdh
dGUKICAgICB9OwogCiAgICAgaWYgKGlucHV0RGVsZWdhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRG
b3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOworICAgICAgICBf
cGFnZS0+c2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKICAgICBl
bHNlCiAgICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNz
aW9uLm1tCmluZGV4IDdhZDA3M2I4Y2Q2ZGQ0MjAzZTFhNzYwNThmN2M3ZGYyYTlmOGFkN2IuLjJh
ZGVlYTc2MGM2OThiMThhZTU5MWU1NzA1NzEzMjk1ZjI0YzU2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24u
bW0KQEAgLTcyLDcgKzcyLDcgQEAgLSAoaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+
KWRlbGVnYXRlCiAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8X1dLQXV0b21hdGlvblNlc3Npb25E
ZWxlZ2F0ZT4pZGVsZWdhdGUKIHsKICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBfc2Vz
c2lvbi0+c2V0Q2xpZW50KGRlbGVnYXRlID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50PihkZWxlZ2F0ZSkgOiBudWxscHRyKTsKKyAgICBfc2Vzc2lvbi0+
c2V0Q2xpZW50KGRlbGVnYXRlID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9u
Q2xpZW50PihkZWxlZ2F0ZSkgOiBudWxscHRyKTsKIH0KIAogLSAoTlNTdHJpbmcgKilzZXNzaW9u
SWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
CmluZGV4IGIzN2IwNTA1M2YxMjRhY2I3MGZkNmFkZTZkZjQyMGZlODI1ZDU0Y2YuLjBkZDQwOWE0
M2RlNjUzMDBjOWYwY2M4NTQ0N2FjMmY3MTNlYzk0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTM4LDYgKzM4LDcgQEAgQGVuZAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIF9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IGZp
bmFsIDogcHVibGljIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eUNsaWVudChfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAqY29udHJvbGxlcikK
ICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKQEAgLTc1LDcgKzc2LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXQKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIG1fcmVtb3RlSW5z
cGVjdG9yUHJveHkgPSBXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGUoKTsK
LSAgICBtX3JlbW90ZUluc3BlY3RvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0Ojpf
V0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudD4oc2VsZik7CisgICAgbV9yZW1vdGVJbnNw
ZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlDbGllbnQ+KHNlbGYpOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNldENsaWVudCht
X3JlbW90ZUluc3BlY3RvckNsaWVudC5nZXQoKSk7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4
IDhkMmY4OGFlMDAzMmEwZDkzNDVlNjgwMGE5Nzg1OGI0MjhhNGQ2ZDkuLjA2ODcwZDIxZGVlN2Nh
NGY4OWRiOWUzNDJmNmYwZjVmZDNmNTRhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMTY5MSw3ICsxNjkxLDcgQEAgaW5s
aW5lIHZvaWQgcmVhZHlTUUxpdGVTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRl
bWVudD4mIHN0YXRlbWVudCwgU1EKICAgICAgICAgc3RhdGVtZW50ID0gbnVsbHB0cjsKICAgICB9
CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKLSAgICAgICAgc3RhdGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KGRiLCBzdHIpOworICAgICAgICBzdGF0ZW1lbnQgPSBtYWtl
VW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oZGIsIHN0cik7CiAgICAgICAgIGlmIChzdGF0ZW1lbnQt
PnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBMT0dfRVJST1IoIlByZXBhcmlu
ZyBzdGF0ZW1lbnQgJXMgZmFpbGVkIiwgc3RyLmFzY2lpKCkuZGF0YSgpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmluZGV4IGJh
YmQ4YTk4MjlmYjgwZDE5ODUyZWM5NzRhZWVhNzBjZWUwYjkxNTguLjhhOGNhYmJkNTNjMWU2NWY3
MGFkZDA4NWQ0ZjU1ZWEzMTAxMTYwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJY29uRGF0YWJhc2VDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25E
YXRhYmFzZUNsaWVudCgpID0gZGVmYXVsdDsKIApAQCAtNTgsNiArNTksNyBAQCBjbGFzcyBJY29u
RGF0YWJhc2UgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25TbmFwc2hvdCB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgSWNvblNuYXBz
aG90KCkgPSBkZWZhdWx0OwogCkBAIC0xMTgsNiArMTIwLDcgQEAgY2xhc3MgSWNvbkRhdGFiYXNl
IHsKICAgICB9OwogCiAgICAgY2xhc3MgUGFnZVVSTFNuYXBzaG90IHsKKyAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBQYWdlVVJMU25hcHNob3Qo
KSA9IGRlZmF1bHQ7CiAKQEAgLTE3Miw2ICsxNzUsNyBAQCBjbGFzcyBJY29uRGF0YWJhc2Ugewog
ICAgIH07CiAKICAgICBjbGFzcyBNYWluVGhyZWFkTm90aWZpZXIgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIE1haW5UaHJlYWROb3RpZmll
cigpCiAgICAgICAgICAgICA6IG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWFpblRo
cmVhZE5vdGlmaWVyOjp0aW1lckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGQy
YWY2NGJhZDg2YThhMzNmMTMzNTQ3MjU4MWI3MDJlNDFhNjdlYzIuLjIxODY2MDQ1MTkyNzY5YmU2
ZGZmODU5YTYzMjA0M2Q1MTM1NjljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTcw
LDYgKzcwLDcgQEAgc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9Owog
V0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRfYXV0b21h
dGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKICAgICAgICAg
OiBtX3Nlc3Npb24oc2Vzc2lvbikKQEAgLTIyMyw3ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIHNl
c3Npb24tPnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24o
KSk7CiAgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3Ry
aW5nOjpmcm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKLSAgICBzZXNzaW9uLT5w
cml2LT5zZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudD4oc2Vzc2lvbikpOworICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENsaWVu
dChtYWtlVW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZShHT2JqZWN0KiBvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggOTdlOTI1NjAxNzczN2I3NjY1YWNjOGViMmYz
NThlYjJlYzU5MDBiOS4uMjg1OGRmNmYzNGQ0ZmE2MjEyMDliZjFlYjFlMTA4ODVhZDA1ZTc1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4
dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdENvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNTYsNiArNTYsNiBAQCBjbGFzcyBDb250ZXh0
TWVudUNsaWVudCBmaW5hbDogcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgewogCiB2b2lk
IGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7
Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Q29udGV4dE1lbnVDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2ViVmlldykpOworICAgIHdlYmtp
dFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8
Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5jcHAKaW5kZXggZDMyYjU5YzU0NzY2N2E3ZWM4NzcxODEwNTJiZDFh
NzQ5YzBkYmMxYy4uYTM3M2IyOTQ1NzE2NzkxYTJkNGMzMDdiZDVlMGE5MjljODE0MGE4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCkBAIC01Niw1ICs1Niw1
IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVuCiAKIHZvaWQgYXR0YWNoQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0g
ICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQo
bWFrZVVuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25s
b2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERv
d25sb2FkQ2xpZW50LmNwcAppbmRleCBlYWQ0ZjIzNDk5MTY3MDRkMTdkMWYyMzA2NDA4OWY3YTFh
MDQ1OTRmLi5lNzcxZGQ3MTg3ZTU4NTlhZGJkNWEwMTZmOGNhOTM1ZDI4ZTg0YThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxv
YWRDbGllbnQuY3BwCkBAIC0xMTgsNSArMTE4LDUgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmlu
YWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7CiAKIHZvaWQgYXR0YWNoRG93bmxvYWRD
bGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJr
aXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtp
dFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3dubG9hZENsaWVudCht
YWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNl
LmNwcAppbmRleCAyMTgwODNlNzY5N2E1MTM5OGYyZWUwOTRjZGIwNjhjMjA4MzdiMWZhLi45YjU4
MThhOTgzNmYzNzYyZDg5NjIyZTM2MmMzZmM4YjJkM2ViZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5j
cHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYQogICAgICAgICBy
ZXR1cm47CiAKICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gZGF0YWJh
c2UtPnByaXY7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxJY29u
RGF0YWJhc2U+KCk7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CisgICAgcHJpdi0+
aWNvbkRhdGFiYXNlID0gbWFrZVVuaXF1ZTxJY29uRGF0YWJhc2U+KCk7CisgICAgcHJpdi0+aWNv
bkRhdGFiYXNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+
KGRhdGFiYXNlKSk7CiAgICAgSWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNlQ2xlYW51cCgpOwog
ICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5pY29u
RGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBh
Z2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNGY5
ODBkNGVlMjU4YWNhYzQ1NTgzMjNjYTdiZDcxY2NkZjNiZWViMS4uNzY3NWM5Y2IzYTVlZGFmODg2
NGQxN2ExNzkyMTdjYjk0MjMzNjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcApAQCAtMTM3LDcgKzEz
Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQoR09iamVj
dCogb2JqZWN0KQogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfcGFy
ZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAogICAgIFdlYktpdEZpbmRDb250cm9s
bGVyKiBmaW5kQ29udHJvbGxlciA9IFdFQktJVF9GSU5EX0NPTlRST0xMRVIob2JqZWN0KTsKLSAg
ICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKKyAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVy
KS5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsK
IH0KIAogc3RhdGljIHZvaWQgd2Via2l0RmluZENvbnRyb2xsZXJHZXRQcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1T
cGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Rm9ybUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
b3JtQ2xpZW50LmNwcAppbmRleCAxMzRkMWM2Y2ViZTU2N2ZjNTRkOTcwZjg3NmJlMDI5MzFkMzI4
MjJkLi5iYzY3YTM1N2RjMDc0NDVhMzUyOGY4MGYwYWJkNzlkMDdjM2JjMDRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNw
cApAQCAtNDgsNSArNDgsNSBAQCBjbGFzcyBGb3JtQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6
Rm9ybUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoRm9ybUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1D
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0
V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGll
bnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDJlMTU5NDVk
ZmFkMjljMzE1NTBkMWFkM2M0ZGQxNDk4YmU3YjcyMDQuLjhjYmE0MjJlZDVlMzhiZjg0Yzc2MDU5
NGQ2Y2YwZjY1ODhjYmVhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMjQ5LDcg
KzI0OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlclN0YXJ0KFdlYktp
dEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlcikKICAgICB9CiAKICAgICBpZiAoIW1hbmFnZXIt
PnByaXYtPmdlb2NsdWVQcm92aWRlcikgewotICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVl
UHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigp
OworICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdl
b2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9j
bHVlUHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShtYW5hZ2VyLT5wcml2LT5oaWdoQWNj
dXJhY3lFbmFibGVkKTsKICAgICB9CiAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVy
LT5zdGFydChbbWFuYWdlcl0oR2VvbG9jYXRpb25Qb3NpdGlvbiYmIGNvcmVQb3NpdGlvbiwgT3B0
aW9uYWw8Q1N0cmluZz4gZXJyb3IpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCBXZWJLaXRHZW9sb2Nh
dGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZShXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcgogewogICAgIGF1dG8qIG1hbmFnZXIgPSBXRUJLSVRfR0VPTE9DQVRJT05fTUFO
QUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFOQUdFUiwgbnVsbHB0
cikpOwogICAgIG1hbmFnZXItPnByaXYtPm1hbmFnZXIgPSBwcm94eTsKLSAgICBwcm94eS0+c2V0
UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyPihtYW5hZ2VyKSk7
CisgICAgcHJveHktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlcj4o
bWFuYWdlcikpOwogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5j
cHAKaW5kZXggYjhmMDFmYjI0ZmYyNzY1NGMwYWQ2MDlhZGQzMjQxOTVlZTQxY2E1OS4uNjVmZDdj
Njk5MjM4ODAxMTU1OGM2N2RlYjI1ZmRhYTI3ZjY2YzUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogY2xhc3Mg
SWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSWNvbkxvYWRp
bmdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBtX3dlYlZpZXcod2Vi
VmlldykKQEAgLTYxLDUgKzYyLDUgQEAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMg
QVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CiAKIHZvaWQgYXR0YWNoSWNvbkxvYWRpbmdDbGllbnRU
b1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFn
ZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2Fk
aW5nQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyku
c2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4od2ViVmll
dykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGE5M2ZmMjViMzlhMjky
NTYwMGQyYzRhZWNjZWNiYzc1NzBkNWRmM2QuLjkyNjJhODRkZWNlMjViZjBiZGY1YzU5YjQ4ZDAw
MjU4NTJmMzZiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAgLTE3OSw1ICsx
NzksNSBAQCBjbGFzcyBXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBB
UEk6OkluamVjdGVkQnVuZGxlQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hJbmplY3RlZEJ1bmRsZUNs
aWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIHdlYmtp
dFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmplY3RlZEJ1bmRsZUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50Pih3ZWJDb250
ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGll
bnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCAy
MzZlODFjMTM5MGIzZWMzYzE1NDkxODY4NmJhZmE1ZTUzODY0Njg3Li41NTE2MzY0NDc3NTU3NDdi
NzBhYzVlNzZiMWQxMDRkNjFjMGI1Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
CkBAIC03NSw3ICs3NSw3IEBAIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJLaXROb3Rp
ZmljYXRpb25Qcm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJvCiAgICAgLCBtX25vdGlm
aWNhdGlvbk1hbmFnZXIobm90aWZpY2F0aW9uTWFuYWdlcikKIHsKICAgICBBU1NFUlQobV9ub3Rp
ZmljYXRpb25NYW5hZ2VyKTsKLSAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXItPnNldFByb3ZpZGVy
KHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlzKSk7CisgICAgbV9u
b3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPE5vdGlmaWNhdGlvblBy
b3ZpZGVyPigqdGhpcykpOwogfQogCiBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6fldlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IDll
NThiY2IwYjFhYjMzZmFhZDk3ZmNmODU5ODEyN2U2MTBhMTIzMzYuLjM2Yjc4MzQzODgwZDk2MDMw
ZTcyZmZhYTE1Mzc0OGVlNWIxZTNhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAt
MzIsNiArMzIsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiAKIGNsYXNzIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkqLCBXZWJLaXRXZWJDb250ZXh0Kik7CiAgICAgfldlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggNWJjZWY2OGY2NWQyMzE4OTgwY2Y5
MWRhZTU5M2Q3NjY3MTQ4YTk4OS4uODk2ZTEzZGFkOTdiZTdmZjc3NmMwM2JmNmU3ZDAyNzgyZTAz
MjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVJQ2xpZW50LmNwcApAQCAtMjI1LDYgKzIyNSw2IEBAIGNsYXNzIFVJQ2xpZW50IDogcHVibGlj
IEFQSTo6VUlDbGllbnQgewogCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0VUlD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxVSUNsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdl
YlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdl
YlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKaW5kZXggNDhiMzhlYWMwOGQ5
MTJjOTYzOWVmNTUwOTRiMTBmMWZmYWQxZDlmOS4uMjU1ZThlNWE2NzkyNzY0ODMzZDM3ZGFmZjlm
NTc5MGYwODU5NjY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBAIC0xODIsNiArMTgy
LDcgQEAgdm9pZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3ZlX2FsbF9zY3JpcHRz
KFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWEKIH0KIAogY2xhc3MgU2NyaXB0TWVzc2FnZUNs
aWVudEd0ayBmaW5hbCA6IHB1YmxpYyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNzYWdl
Q2xpZW50R3RrKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdlciwgY29uc3QgY2hhciog
aGFuZGxlck5hbWUpCiAgICAgICAgIDogbV9oYW5kbGVyTmFtZShnX3F1YXJrX2Zyb21fc3RyaW5n
KGhhbmRsZXJOYW1lKSkKQEAgLTIzOCw3ICsyMzksNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9j
b250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcihXZWJLaXRVc2Vy
QwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPiht
YW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVudFdv
cmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNy
ZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBT
dHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOwogICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFk
ZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApAQCAtMjg4LDcg
KzI4OSw3IEBAIGdib29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9z
Y3JpcHRfbWVzc2FnZV9oYW5kbGVyX2luX3dvcmxkKFdlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwod29ybGROYW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+
IGhhbmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmlu
Zzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7Cisg
ICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRN
ZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwg
d2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gbWFuYWdlci0+
cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIo
aGFuZGxlci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggYmZjNTY3Y2VkNWJiMTcwMWQzYWM5
Mjc2N2FlYmFhNDJkYjJjMzk3YS4uYTU3ZGI0MmE0MTlmYmNjN2JlZmQ1ZjdiOTY0YjAwNjBjZmE2
NWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBzdGF0aWMgZ3VpbnQgc2lnbmFs
c1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
IGNsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQgZmluYWwgOiBJbnNwZWN0b3I6OlJlbW90ZUlu
c3BlY3Rvcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50KFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQpCiAgICAgICAgIDogbV93ZWJDb250ZXh0KGNvbnRleHQpCkBAIC0zNjcsOSArMzY4LDkg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXR0YWNoQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogCiAgICAgcHJpdi0+Z2Vv
bG9jYXRpb25NYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0
ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eT4oKSkpOwotICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250ZXh0KTsKKyAgICBwcml2
LT5ub3RpZmljYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8V2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXI+KHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7CiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4od2ViQ29u
dGV4dCk7CisgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyID0gbWFrZVVu
aXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+KHdlYkNvbnRleHQpOwogI2VuZGlm
CiB9CiAKQEAgLTY3OCw3ICs2NzksNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0
b21hdGlvbl9hbGxvd2VkKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGdib29sZQogICAgICAg
ICAgICAgZ193YXJuaW5nKCJOb3QgZW5hYmxpbmcgYXV0b21hdGlvbiBvbiBXZWJLaXRXZWJDb250
ZXh0IGJlY2F1c2UgdGhlcmUncyBhbm90aGVyIGNvbnRleHQgd2l0aCBhdXRvbWF0aW9uIGVuYWJs
ZWQsIG9ubHkgb25lIGlzIGFsbG93ZWQiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC0+
cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0QXV0b21hdGlvbkNsaWVu
dD4oY29udGV4dCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRp
b25DbGllbnQgPSBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGIyMzlhYzRlMTllNjNkMzNhODY5
ZGVmYjY2ZmMzYzBiNDUwMGI3ODUuLjc0MzBjM2ZjZmQ1NGM0NmVmYTY0ZTEyZmQ5N2RlNWE5MzI5
OGE0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwCkBAIC0yMDEsNiArMjAxLDcgQEAgY2xhc3MgUGFnZUxvYWRTdGF0ZU9ic2Vy
dmVyOwogI2lmIFBMQVRGT1JNKFdQRSkKIHN0YXRpYyB1bnNpZ25lZCBmcmFtZURpc3BsYXlDYWxs
YmFja0lEOwogc3RydWN0IEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sgeworICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBGcmFtZURpc3BsYXllZENhbGxiYWNrKFdlYktpdEZy
YW1lRGlzcGxheWVkQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhID0gbnVsbHB0
ciwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveU5vdGlmeUZ1bmN0aW9uID0gbnVsbHB0cikKICAgICAg
ICAgOiBpZCgrK2ZyYW1lRGlzcGxheUNhbGxiYWNrSUQpCiAgICAgICAgICwgY2FsbGJhY2soY2Fs
bGJhY2spCkBAIC0yMjcsNiArMjI4LDcgQEAgc3RydWN0IEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sg
ewogI2VuZGlmIC8vIFBMQVRGT1JNKFdQRSkKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0
ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIH5fV2ViS2l0V2Vi
Vmlld1ByaXZhdGUoKQogICAgIHsKICAgICAgICAgLy8gRm9yIG1vZGFsIGRpYWxvZ3MsIG1ha2Ug
c3VyZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5nIHRoZSB3ZWJWaWV3
LgpAQCAtMzI2LDYgKzMyOCw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0lzUGxheWluZ0F1ZGlvQ2hh
bmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogfQogCiBjbGFzcyBQYWdlTG9hZFN0YXRlT2Jz
ZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQpAQCAt
Mzk5LDYgKzQwMiw3IEBAIGNsYXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlciBmaW5hbCA6IHB1Ymxp
YyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAKICNpZiBQTEFURk9STShXUEUpCiBjbGFzcyBX
ZWJWaWV3Q2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Vmlld0NsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViVmlld0NsaWVudChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQpAQCAt
NzI1LDcgKzcyOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2Jq
ZWN0KiBvYmplY3QpCiAKICAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXco
cHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmlldywgcHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdl
dCgpLCBwcml2LT5yZWxhdGVkVmlldyk7CiAKLSAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CisgICAgcHJpdi0+
bG9hZE9ic2VydmVyID0gbWFrZVVuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHdlYlZpZXcp
OwogICAgIGdldFBhZ2Uod2ViVmlldykucGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpwcml2
LT5sb2FkT2JzZXJ2ZXIpOwogCiAgICAgLy8gVGhlIHJlbGF0ZWQgdmlldyBpcyBvbmx5IHZhbGlk
IGR1cmluZyB0aGUgY29uc3RydWN0aW9uLgpAQCAtNzQxLDcgKzc0NSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKFdQRSkKLSAgICBwcml2LT52aWV3LT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJWaWV3Q2xpZW50Pih3ZWJWaWV3KSk7CisgICAgcHJpdi0+dmlldy0+c2V0Q2xpZW50KG1h
a2VVbmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmlldykpOwogI2VuZGlmCiAKICAgICAvLyBUaGlz
IG5lZWRzIHRvIGJlIGFmdGVyIGF0dGFjaFVJQ2xpZW50VG9WaWV3KCkgYmVjYXVzZSBXZWJQYWdl
UHJveHk6OnNldFVJQ2xpZW50KCkgY2FsbHMgc2V0Q2FuUnVuTW9kYWwoKSB3aXRoIHRydWUuCkBA
IC0zNzAxLDYgKzM3MDUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWlt
ZV90eXBlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqCiB9CiAKIHN0cnVjdCBW
aWV3U2F2ZUFzeW5jRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkRhdGE7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuY3BwCmluZGV4IGYwOWQ2YzdlOTIwNjgzYTc1NjY1Mjc2OTY3ZTc0N2NjNmNlZWI0ODEuLjA2
YjNiODM2MDY1ZDlmNjZhMDc5OGEyMDk1NTEzY2E4NjhiMzFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC02NSw3ICs2
NSw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChHdGtXaWRnZXQqIHZpZXdXaWRn
ZXQpCiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVf
cHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVBy
b3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndlYmtpdFdlYlZpZXdC
YXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSwgcHJvY2Vzcyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3
V2lkZ2V0KSksIHByb2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVl
ZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwCmluZGV4
IDMxZTA5NzNmZTEwMDNjNmVhNjUyMzA2MWE2N2M5NDlkNTNlYmQ2YjcuLjJkMWMyY2IzNjhhOTkz
MzE2OTc0MjQ2YTBlZDU5OWMyOGRjYWU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKQEAgLTUxOSw3ICs1MTks
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2ppU2VjdGlvbnMoV2Vi
S2l0RW1vamlDaG9vc2VyKiBjaG9vc2VyLCBHdAogICAgICAgICBjaG9vc2VyLT5wcml2LT5wb3B1
bGF0ZVNlY3Rpb25zVGltZXIgPSBudWxscHRyOwogICAgIH07CiAKLSAgICBjaG9vc2VyLT5wcml2
LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrVGltZXI+
KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOworICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRl
U2VjdGlvbnNUaW1lciA9IG1ha2VVbmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RGTW92ZShwb3B1bGF0
ZVNlY3Rpb25zKSk7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5z
ZXRQcmlvcml0eShHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAgICAgY2hvb3Nlci0+cHJpdi0+
cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zZXROYW1lKCJbV2ViS2l0RW1vamlDaG9vc2VyXSBwb3B1
bGF0ZSBzZWN0aW9ucyB0aW1lciIpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlv
bnNUaW1lci0+c3RhcnRSZXBlYXRpbmcoeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCAwZjY3NDg2NDUyY2QxZmE4N2E4Mjg2MmU3ZTYwNTcz
NGRmYzM1OTY4Li41YmE2MTBlN2Q5YTQ0ZDA0NzM4MzgxZTIzZDA0MGJkYTkyYzNmYzlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0zNSw2ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNs
YXNzIFNjcmlwdE1lc3NhZ2VDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgU2NyaXB0TWVzc2FnZUNsaWVudChSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXImIGlu
c3BlY3RvclByb3RvY29sSGFuZGxlcikKICAgICAgICAgOiBtX2luc3BlY3RvclByb3RvY29sSGFu
ZGxlcihpbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIpCkBAIC0xMDUsMTMgKzEwNiwxMyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNw
ZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAgICBh
dXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8
U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVu
dFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICAgICAgd2Via2l0VXNlckNvbnRlbnRNYW5hZ2Vy
R2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+YWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogICAgICAgICBnX29iamVjdF93
ZWFrX3JlZihHX09CSkVDVCh1c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVycHJldF9jYXN0PEdX
ZWFrTm90aWZ5Pih1c2VyQ29udGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlzKTsKICAgICB9CiAK
ICAgICBhdXRvKiBjbGllbnQgPSBtX2luc3BlY3RvckNsaWVudHMuZW5zdXJlKHJlcXVlc3RVUkwu
aG9zdEFuZFBvcnQoKSwgW3RoaXMsICZyZXF1ZXN0VVJMXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRm
OCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgp
LnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKICAgICBHU3RyaW5nKiBodG1sID0gZ19zdHJpbmdf
bmV3KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJJbnNwZWN0b3IuY3BwCmluZGV4IDBmMDE3MTFlNzk2MWU4YjAwYzVlNTc0ZDI4ODUwZDA1YjI0
MWY2ZWMuLjgwZDIwYWE3NjAzYmFkYWI5MDBmZTRiZDE1OTBhYWQzOWIzMGUyZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rv
ci5jcHAKQEAgLTI4NCw2ICsyODQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rv
cl9jbGFzc19pbml0KFdlYktpdFdlYkluc3BlY3RvckNsYXNzKiBmaW5kQ2xhc3MpCiB9CiAKIGNs
YXNzIFdlYktpdEluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJJbnNwZWN0b3JQcm94
eUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViS2l0SW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9y
KQogICAgICAgICA6IG1faW5zcGVjdG9yKGluc3BlY3RvcikKQEAgLTM2MCw3ICszNjEsNyBAQCBX
ZWJLaXRXZWJJbnNwZWN0b3IqIHdlYmtpdFdlYkluc3BlY3RvckNyZWF0ZShXZWJJbnNwZWN0b3JQ
cm94eSogd2ViSW5zcGVjdG9yKQogewogICAgIFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9y
ID0gV0VCS0lUX1dFQl9JTlNQRUNUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9JTlNQ
RUNUT1IsIE5VTEwpKTsKICAgICBpbnNwZWN0b3ItPnByaXYtPndlYkluc3BlY3RvciA9IHdlYklu
c3BlY3RvcjsKLSAgICB3ZWJJbnNwZWN0b3ItPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdEluc3BlY3RvckNsaWVudD4oaW5zcGVjdG9yKSk7CisgICAgd2ViSW5zcGVjdG9yLT5zZXRD
bGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOwogICAg
IHJldHVybiBpbnNwZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggMWI5ZGQ4ZDFmNDYwMjE0ZjVh
NzcyNjcyYzJmYjY1MzcwYjUyMGM1ZS4uODhiM2NmNDNiZmU2OGVlOTdjNzMxYjc2NGQ0NDk5MGE3
YmZjNWE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTU2Niw3ICs1NjYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBndGtfZHJhZ19k
ZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0
b24oKS50YXJnZXRMaXN0KCkpOwogCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2
ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uob2JqZWN0KS0+cHJpdjsKLSAgICBwcml2LT5wYWdlQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlld1dpZGdldCk7CisgICAg
cHJpdi0+cGFnZUNsaWVudCA9IG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXdXaWRnZXQp
OwogICAgIHByaXYtPmRpYWxvZyA9IG51bGxwdHI7CiB9CiAKQEAgLTEyMjAsNyArMTIyMCw3IEBA
IEdlc3R1cmVDb250cm9sbGVyJiB3ZWJraXRXZWJWaWV3QmFzZUdlc3R1cmVDb250cm9sbGVyKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
KiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5nZXN0dXJlQ29udHJv
bGxlcikKLSAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdlc3R1cmVDb250cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgc3RkOjptYWtlX3Vu
aXF1ZTxUb3VjaEdlc3R1cmVDb250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOworICAgICAgICBwcml2
LT5nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8R2VzdHVyZUNvbnRyb2xsZXI+KEdUS19X
SURHRVQod2ViVmlld0Jhc2UpLCBtYWtlVW5pcXVlPFRvdWNoR2VzdHVyZUNvbnRyb2xsZXI+KHdl
YlZpZXdCYXNlKSk7CiAgICAgcmV0dXJuICpwcml2LT5nZXN0dXJlQ29udHJvbGxlcjsKIH0KIApA
QCAtMTUwMSw3ICsxNTAxLDcgQEAgRHJhZ0FuZERyb3BIYW5kbGVyJiB3ZWJraXRXZWJWaWV3QmFz
ZURyYWdBbmREcm9wSGFuZGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmkKIHsKICAgICBXZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAo
IXByaXYtPmRyYWdBbmREcm9wSGFuZGxlcikKLSAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5k
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJv
eHkpOworICAgICAgICBwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIgPSBtYWtlVW5pcXVlPERyYWdB
bmREcm9wSGFuZGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgcmV0dXJuICpwcml2LT5kcmFn
QW5kRHJvcEhhbmRsZXI7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE3
MTMsNyArMTcxMyw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nl
c3MoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlCiAgICAgaWYgKHByaXYtPnZp
ZXdHZXN0dXJlQ29udHJvbGxlcikKICAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVy
LT5jb25uZWN0VG9Qcm9jZXNzKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHByaXYtPnZpZXdHZXN0
dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI+KCpwcml2LT5wYWdlUHJveHkpOworICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+
cGFnZVByb3h5KTsKICAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyLT5zZXRTd2lw
ZUdlc3R1cmVFbmFibGVkKHByaXYtPmlzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZUVuYWJs
ZWQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
aW5kZXggMmNhYjJlMDUzODZkNDJiMzcxZjQ0MDZhYjcxYTdmNjU5MzBmN2Q3Ny4uMTQ2MDNkNWFm
ZWJhZjZkZWUwMTE5Nzk1NzcwMzg4MzQ5ZDRlN2IzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTg5NSw2ICs4OTUsNyBAQCAtICh2b2lkKW1heWJlSW5z
dGFsbEljb25Mb2FkaW5nQ2xpZW50CiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25M
b2FkaW5nQ2xpZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgogICAgICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChXS1ZpZXcgKndrVmlldykK
ICAgICAgICAgICAgIDogbV93a1ZpZXcod2tWaWV3KQpAQCAtOTMyLDcgKzkzMyw3IEBAIC0gKHZv
aWQpbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnQKICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKIAogICAgIGlmIChbc2VsZiByZXNwb25kc1RvU2VsZWN0b3I6SWNvbkxv
YWRpbmdDbGllbnQ6OmRlbGVnYXRlU2VsZWN0b3IoKV0pCi0gICAgICAgIF9kYXRhLT5faW1wbC0+
cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdD
bGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCkuc2V0SWNvbkxvYWRp
bmdDbGllbnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oc2VsZikpOwogfQogCiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJL
aXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uCkBAIC05NDQsNyArOTQ1LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAK
ICAgICBfZGF0YSA9IFtbV0tWaWV3RGF0YSBhbGxvY10gaW5pdF07Ci0gICAgX2RhdGEtPl9pbXBs
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBudWxscHRyLCBw
cm9jZXNzUG9vbCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgX2RhdGEtPl9pbXBsID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBudWxscHRyLCBwcm9jZXNzUG9v
bCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAKICAgICBbc2VsZiBtYXliZUluc3RhbGxJY29u
TG9hZGluZ0NsaWVudF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggODUxMjlhNTQ4N2M5ZmZiZWQ1NjY0NmNjMTBkZDE4
ODNjOTg3NTZkMy4uZTIwOGE1YzU1ZDc1ODg1NzNkZmY0MzYwMzM3N2VmOGQxNjM1ODVhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhZ2VDbGllbnRJbXBs
OjpQYWdlQ2xpZW50SW1wbChXS1dQRTo6VmlldyYgdmlldykKICAgICA6IG1fdmlldyh2aWV3KQot
ICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEdl
c3R1cmVDb250cm9sbGVyPigpKQorICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcihtYWtl
VW5pcXVlPFNjcm9sbEdlc3R1cmVDb250cm9sbGVyPigpKQogewogfQogCkBAIC02Myw3ICs2Myw3
IEBAIElQQzo6QXR0YWNobWVudCBQYWdlQ2xpZW50SW1wbDo6aG9zdEZpbGVEZXNjcmlwdG9yKCkK
IAogc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVh
dGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4o
bV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOwogfQog
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6
OlJlZ2lvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApp
bmRleCBiZTUwZjEyNzRlOGMxZmE0OTEwOWFhMjg1NWI4YmI0MTU3MTcwNDRmLi4xMmUzMmZhZDQw
MDI4Yzc3ZTU3MDMwOTI4NDk4NDQwZDAzMGNlMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKQEAgLTQyLDggKzQyLDggQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIG5hbWVzcGFjZSBXS1dQRSB7CiAKIFZpZXc6OlZpZXcoc3RydWN0IHdwZV92aWV3
X2JhY2tlbmQqIGJhY2tlbmQsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGJhc2VDb25m
aWd1cmF0aW9uKQotICAgIDogbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlZpZXdDbGll
bnQ+KCkpCi0gICAgLCBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1w
bD4oKnRoaXMpKQorICAgIDogbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCkp
CisgICAgLCBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQog
ICAgICwgbV9zaXplIHsgODAwLCA2MDAgfQogICAgICwgbV92aWV3U3RhdGVGbGFncyB7IFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpJc0ZvY3VzZWQsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyB9CiAgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkKQEAg
LTE4NCw3ICsxODQsNyBAQCBWaWV3Ojp+VmlldygpCiB2b2lkIFZpZXc6OnNldENsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpWaWV3Q2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVu
dCkKLSAgICAgICAgbV9jbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Vmlld0NsaWVudD4o
KTsKKyAgICAgICAgbV9jbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Vmlld0NsaWVudD4oKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCmluZGV4IGUxZGM4
NTdmZjk5NWVkMGNlNmE4NTM2NTljYzViMTM1NjFjYjM2NmMuLmI0ZjI3YjZkMzRlMjQyYmE1NTM1
YWI1YjJlNGVjZTUzMTVkMDlkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdQRVF0Vmll
dzo6bm90aWZ5TG9hZENoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2
ZW50IGV2ZW50LAogCiAgICAgaWYgKHN0YXR1c1NldCkgewogICAgICAgICBXUEVRdFZpZXdMb2Fk
UmVxdWVzdFByaXZhdGUgbG9hZFJlcXVlc3RQcml2YXRlKHZpZXctPnVybCgpLCBsb2FkU3RhdHVz
LCAiIik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9h
ZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVx
dWVzdFByaXZhdGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVl
c3Q+IGxvYWRSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJl
cXVlc3RQcml2YXRlKTsKICAgICAgICAgUV9FTUlUIHZpZXctPmxvYWRpbmdDaGFuZ2VkKGxvYWRS
ZXF1ZXN0LmdldCgpKTsKICAgICB9CiB9CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXUEVRdFZp
ZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2
ZW50LCBjb25zdAogICAgICAgICBsb2FkU3RhdHVzID0gV1BFUXRWaWV3OjpMb2FkU3RhdHVzOjpM
b2FkRmFpbGVkU3RhdHVzOwogCiAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRS
ZXF1ZXN0UHJpdmF0ZShRVXJsKFFTdHJpbmcoZmFpbGluZ1VSSSkpLCBsb2FkU3RhdHVzLCBlcnJv
ci0+bWVzc2FnZSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBs
b2FkUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRS
ZXF1ZXN0UHJpdmF0ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0
PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1
ZXN0UHJpdmF0ZSk7CiAgICAgUV9FTUlUIHZpZXctPmxvYWRpbmdDaGFuZ2VkKGxvYWRSZXF1ZXN0
LmdldCgpKTsKIH0KIApAQCAtNDM5LDcgKzQzOSw3IEBAIHN0YXRpYyB2b2lkIGpzQXN5bmNSZWFk
eUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVy
CiAqLwogdm9pZCBXUEVRdFZpZXc6OnJ1bkphdmFTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0
LCBjb25zdCBRSlNWYWx1ZSYgY2FsbGJhY2spCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEphdmFz
Y3JpcHRDYWxsYmFja0RhdGE+IGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEphdmFzY3JpcHRDYWxs
YmFja0RhdGE+KGNhbGxiYWNrLCBRUG9pbnRlcjxXUEVRdFZpZXc+KHRoaXMpKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4gZGF0YSA9IG1ha2VVbmlxdWU8SmF2
YXNjcmlwdENhbGxiYWNrRGF0YT4oY2FsbGJhY2ssIFFQb2ludGVyPFdQRVF0Vmlldz4odGhpcykp
OwogICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChtX3dlYlZpZXcuZ2V0KCksIHNj
cmlwdC50b1V0ZjgoKS5jb25zdERhdGEoKSwgbnVsbHB0ciwganNBc3luY1JlYWR5Q2FsbGJhY2ss
IGRhdGEucmVsZWFzZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKaW5kZXggYTg1MjZjZWQwMjBmNjM0
NGU3MmZiY2MzYWE0NDljMmRkM2FiZDFmOS4uMTNmZDM3YWVmZjJiNjUzNWQ1NGYzMTRjNDE2ZTFj
Yjg2OGUzZTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9x
dC9XUEVRdFZpZXdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXUEVRdFZpZXdCYWNrZW5kPiBXUEVRdFZpZXdCYWNrZW5kOjpjcmVhdGUoY29uc3QgUVNp
emVGJiBzaXplLCBRCiAgICAgaWYgKCFlZ2xDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmlld0JhY2tlbmQ+KHNpemUs
IGVnbERpc3BsYXksIGVnbENvbnRleHQsIGNvbnRleHQsIHZpZXcpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFdQRVF0Vmlld0JhY2tlbmQ+KHNpemUsIGVnbERpc3BsYXksIGVnbENvbnRleHQsIGNv
bnRleHQsIHZpZXcpOwogfQogCiBXUEVRdFZpZXdCYWNrZW5kOjpXUEVRdFZpZXdCYWNrZW5kKGNv
bnN0IFFTaXplRiYgc2l6ZSwgRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGVnbENvbnRl
eHQsIFFQb2ludGVyPFFPcGVuR0xDb250ZXh0PiBjb250ZXh0LCBRUG9pbnRlcjxXUEVRdFZpZXc+
IHZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGNjZTVjNDgxN2E4MDQ5MTdjZGMxOTlj
MWIwMTYwZTI1NmU5YmUyOTcuLmE1OTE1MGRiN2E0MGRjN2JjMTVkYjUxYmU4ZWY0ZTExMzU2ZGM1
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC03MywxMSArNzMsMTEgQEAgc3RhdGljIGNv
bnN0IFNlY29uZHMgZGVmYXVsdFBhZ2VMb2FkVGltZW91dCA9IDMwMF9zOwogc3RhdGljIGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3kgZGVmYXVs
dFBhZ2VMb2FkU3RyYXRlZ3kgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdl
TG9hZFN0cmF0ZWd5OjpOb3JtYWw7CiAKIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbigpCi0gICAgOiBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21h
dGlvblNlc3Npb25DbGllbnQ+KCkpCisgICAgOiBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0
b21hdGlvblNlc3Npb25DbGllbnQ+KCkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5k
Um91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAgICAgLCBtX2RvbWFp
bkRpc3BhdGNoZXIoQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCi0gICAgLCBtX2RvbWFpbk5vdGlmaWVyKHN0ZDo6bWFrZV91bmlx
dWU8QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcj4obV9mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2RvbWFpbk5vdGlmaWVyKG1ha2VVbmlxdWU8QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hl
cj4obV9mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2xvYWRUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bG9hZFRpbWVyRmlyZWQpCiB7CiAjaWYgRU5B
QkxFKFdFQkRSSVZFUl9BQ1RJT05TX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggNmIwOWJhZGI4ZDBjZWJhYmYyYzY5ZjYwMDli
MWJkMWQyM2MwOWU1OC4uNTNiMzc3MDdlODdjNTFkYzRhZTlkNjM5YjFkNGYzMjYzODA2OGIxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgK
QEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYg
bWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PAogewogICAgIENPTVBJ
TEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8g
ZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUo
KSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5p
cXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRp
b25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAg
cmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5oCmluZGV4IDEwYThlNDI0MTNiMjlhZmZiNjM3N2Q4NGEwOWJlNTExYmQyNTFkNWMuLmRl
NDBmYzhmMzE3Njk3NWIxNTJjNGVmYWE0MDE1N2M5NGYyZmE5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApA
QCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50KGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVs
ZWdhdGUuaAppbmRleCBiMDExZGQzYTcyMzk3MzIwNWNjNmRmNGNjNjZhNjc5MDZjMDI5YjBkLi4w
NzQzNzkwNGYxZTQyMzBiMzE1ODJhOWRmNDJjMjNjMTRkNjA1YWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCkBAIC0zNyw2
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSWNvbkxvYWRpbmdEZWxlZ2F0
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
SWNvbkxvYWRpbmdEZWxlZ2F0ZShXS1dlYlZpZXcgKik7CiAgICAgfkljb25Mb2FkaW5nRGVsZWdh
dGUoKTsKQEAgLTQ4LDYgKzQ5LDcgQEAgY2xhc3MgSWNvbkxvYWRpbmdEZWxlZ2F0ZSB7CiAKIHBy
aXZhdGU6CiAgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9h
ZGluZ0NsaWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKICAgICAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdDbGllbnQoSWNvbkxvYWRpbmdEZWxlZ2F0
ZSYpOwogICAgICAgICB+SWNvbkxvYWRpbmdDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCmluZGV4IGEzNDRkZmY5
Y2UwZDUzNWNhMzBkYjJiZWI1YmNiZDdjMGQ3NGNmYjQuLjE2M2ZiOTUyZWUwZWE5YjcxYTNkNDlk
M2RkOTdjZTAwNDNjYzY4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQpAQCAtNDQsNyArNDQsNyBAQCBJY29uTG9hZGlu
Z0RlbGVnYXRlOjp+SWNvbkxvYWRpbmdEZWxlZ2F0ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6
Okljb25Mb2FkaW5nQ2xpZW50PiBJY29uTG9hZGluZ0RlbGVnYXRlOjpjcmVhdGVJY29uTG9hZGlu
Z0NsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdDbGll
bnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oKnRo
aXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+ID4gSWNvbkxv
YWRpbmdEZWxlZ2F0ZTo6ZGVsZWdhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW0KaW5kZXggYTUxYTIyMzYyMzg0MTUxYWIxMWQ0ODk0MzY5ZjhhMTg1ODAw
NjdkYS4uZjUxMzdmOWNjNzMxNjM4OGU2MWRlMTA3NzNmZjM0Mjg1NjI1MDU5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC03OCwxMyArNzgsMTMg
QEAgVUlEZWxlZ2F0ZTo6flVJRGVsZWdhdGUoKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQog
c3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+IFVJRGVsZWdhdGU6OmNyZWF0
ZUNvbnRleHRNZW51Q2xpZW50KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250
ZXh0TWVudUNsaWVudD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRleHRNZW51
Q2xpZW50PigqdGhpcyk7CiB9CiAjZW5kaWYKIAogc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGll
bnQ+IFVJRGVsZWdhdGU6OmNyZWF0ZVVJQ2xpZW50KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFVJQ2xpZW50
PigqdGhpcyk7CiB9CiAKIFJldGFpblB0cjxpZCA8V0tVSURlbGVnYXRlPiA+IFVJRGVsZWdhdGU6
OmRlbGVnYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDhjMmIyYjRlMDYx
MDY5MjcyYWViOGI5NGEyMzRlYWE5MjZhZjc2ZC4uOTFjZjk0ODBjNzUxOGNkOWJiMTdlOWZjYTRl
OTE2ZDBiMDczYjA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTQ1LDYgKzQ1
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xh
c3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6U291cmNlUHJveHkgOiBwdWJsaWMgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIsIHB1YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
b3VyY2VQcm94eSh1aW50NjRfdCBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
LCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UpCiAgICAgICAgIDogbV9pZChpZCkK
QEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNy
ZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaQogICAgICAgICBzb3Vy
Y2UtPnNldElzUmVtb3RlKHRydWUpOwogICAgICAgICBzZXR0aW5ncyA9IHNvdXJjZS0+c2V0dGlu
Z3MoKTsKICAgICAgICAgQVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICAgICAg
bV9wcm94aWVzLmFkZChpZCwgc3RkOjptYWtlX3VuaXF1ZTxTb3VyY2VQcm94eT4oaWQsICptX3By
b2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHNvdXJjZSkpKTsKKyAgICAgICAgbV9wcm94aWVz
LmFkZChpZCwgbWFrZVVuaXF1ZTxTb3VyY2VQcm94eT4oaWQsICptX3Byb2Nlc3MuY29ubmVjdGlv
bigpLCBXVEZNb3ZlKHNvdXJjZSkpKTsKICAgICB9IGVsc2UKICAgICAgICAgaW52YWxpZENvbnN0
cmFpbnRzID0gV1RGTW92ZShzb3VyY2VPckVycm9yLmVycm9yTWVzc2FnZSk7CiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3VjY2VlZGVkLCBpbnZhbGlkQ29uc3RyYWludHMsIFdURk1vdmUoc2V0dGlu
Z3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAppbmRleCA5Y2E2ZmEzNTM0OTYwMTgwM2RmNWQz
ZDFiMmFiYTMxNjU1NzQwYzM5Li45YmRkYjk5MDlkZjdlOGZlZjFlNTQ4MDZjYmU2YmM1YzQwY2Zj
NTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFNo
YXJlZE1lbW9yeTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogY2xhc3MgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgflVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDMwNzBkNTc0NDNmZGY3MTk2MDg2MDMwZTNl
NjMxNDFlMDY3ODU4MjYuLmU1ZTMyZDJmYTJhMDg2MDQxN2M2Y2Y4MGQ3YmNlNTliOWE3MzlhZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZSgpCiAgICAgaWYgKCFbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIi
XSkKICAgICAgICAgaW5zdGFsbE1lbW9yeVByZXNzdXJlSGFuZGxlcigpOwogCi0gICAgc2V0TGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsKKyAgICBzZXRMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTUxNCw3ICs1MTQsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdGFydERpc3BsYXlMaW5rKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgdW5zaWduZWQgb2JzZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQotICAgIGF1dG8gZGlzcGxheUxpbmsgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlM
aW5rPihkaXNwbGF5SUQpOworICAgIGF1dG8gZGlzcGxheUxpbmsgPSBtYWtlVW5pcXVlPERpc3Bs
YXlMaW5rPihkaXNwbGF5SUQpOwogICAgIGRpc3BsYXlMaW5rLT5hZGRPYnNlcnZlcihjb25uZWN0
aW9uLCBvYnNlcnZlcklEKTsKICAgICBtX2Rpc3BsYXlMaW5rcy5hcHBlbmQoV1RGTW92ZShkaXNw
bGF5TGluaykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA1YzIxY2E3NWExODI5YzUwZjFkODJmNTc3Nzhi
NGU4NmU2OWQ3MGVhLi5iMWVjODQ2YjdiNDYwNTQ4Y2UwZjg2ZDdhNWQxMTdhNjc2NzhjNGYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpCiAg
ICAgYXV0byBiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciA9IFthY3Rpdml0eVRva2Vu
ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKV0gewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQo
KSAtIGxhbWJkYSwgYmFja2dyb3VuZCBhY3Rpdml0eSB0aW1lZCBvdXQiLCB3ZWFrVGhpcy5nZXQo
KSk7CiAgICAgfTsKLSAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRB
Y3Rpdml0eVRpbWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOworICAg
IG1fdW5leHBlY3RlZEFjdGl2aXR5VGltZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkRlZmVycmFi
bGVPbmVTaG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIp
LCB1bmV4cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CiAgICAgY29tcGxldGlvbigpOwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4
IGYxNzZmMWE2NWE5OTJjNTFhYzM0NGVkMDA4ODU3ZTAxM2VmOTk0YjEuLjM3ZjU0ZGE0YWQyZDZh
MjU0N2MxZGQzNTliODk1YzhhNTRhMjU5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBzdGF0aWMgTlNUcmFj
a2luZ0FyZWFPcHRpb25zIHRyYWNraW5nQXJlYU9wdGlvbnMoKQogCiBXZWJWaWV3SW1wbDo6V2Vi
Vmlld0ltcGwoTlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpv
dXRlcldlYlZpZXcsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwg
bV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVy
V2ViVmlldykpCisgICAgLCBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4o
dmlldywgb3V0ZXJXZWJWaWV3KSkKICAgICAsIG1fcGFnZShwcm9jZXNzUG9vbC5jcmVhdGVXZWJQ
YWdlKCptX3BhZ2VDbGllbnQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpKQogICAgICwgbV9uZWVk
c1ZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMobV9wYWdlLT5wcmVmZXJlbmNlcygpLnBsdWdp
bnNFbmFibGVkKCkpCiAgICAgLCBtX2ludHJpbnNpY0NvbnRlbnRTaXplKENHU2l6ZU1ha2UoTlNW
aWV3Tm9JbnRyaW5zaWNNZXRyaWMsIE5TVmlld05vSW50cmluc2ljTWV0cmljKSkKQEAgLTEzNzIs
NyArMTM3Miw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBs
RGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViCiAgICAgdmlldy5sYXllckNvbnRl
bnRzUGxhY2VtZW50ID0gTlNWaWV3TGF5ZXJDb250ZW50c1BsYWNlbWVudFRvcExlZnQ7CiAKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgbV9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pih2aWV3KSk7CisgICAg
bV9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVu
Q2xpZW50Pih2aWV3KSk7CiAjZW5kaWYKIAogICAgIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNz
KCkud2tWaWV3Q291bnQrKzsKQEAgLTE3MzAsOSArMTczMCw5IEBAIENHU2l6ZSBXZWJWaWV3SW1w
bDo6Zml4ZWRMYXlvdXRTaXplKCkgY29uc3QKIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdp
bmdBcmVhUHJveHk+IFdlYlZpZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcykKIHsKICAgICBpZiAoW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpAIldlYktpdDJVc2VSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYSJdIGJvb2xWYWx1ZV0pCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vzcyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KG1fcGFn
ZSwgcHJvY2Vzcyk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vz
cyk7CiB9CiAKIGJvb2wgV2ViVmlld0ltcGw6OmlzVXNpbmdVSVNpZGVDb21wb3NpdGluZygpIGNv
bnN0CkBAIC0zMzc1LDcgKzMzNzUsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcmVmZXJlbmNlc0Rp
ZENoYW5nZSgpCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRUZXh0SW5kaWNhdG9yKFdlYkNvcmU6OlRl
eHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3dM
aWZldGltZSBsaWZldGltZSkKIHsKICAgICBpZiAoIW1fdGV4dEluZGljYXRvcldpbmRvdykKLSAg
ICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOworICAgICAgICBt
X3RleHRJbmRpY2F0b3JXaW5kb3cgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JX
aW5kb3c+KG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSk7CiAKICAgICBOU1JlY3QgdGV4dEJvdW5k
aW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMgPSBbW21fdmlldyB3aW5kb3ddIGNvbnZlcnRSZWN0
VG9TY3JlZW46W21fdmlldyBjb252ZXJ0UmVjdDp0ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1Jl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSB0b1ZpZXc6bmlsXV07CiAgICAgbV90ZXh0SW5kaWNh
dG9yV2luZG93LT5zZXRUZXh0SW5kaWNhdG9yKHRleHRJbmRpY2F0b3IsIE5TUmVjdFRvQ0dSZWN0
KHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzKSwgbGlmZXRpbWUpOwpAQCAtNDM3
Nyw3ICs0Mzc3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2F2ZUJhY2tGb3J3YXJkU25hcHNob3RG
b3JJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXImIFdlYlZpZXdJbXBsOjplbnN1cmVHZXN0dXJlQ29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFt
X2dlc3R1cmVDb250cm9sbGVyKQotICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KG1fcGFnZSk7CisgICAgICAgIG1fZ2Vz
dHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4obV9wYWdl
KTsKICAgICByZXR1cm4gKm1fZ2VzdHVyZUNvbnRyb2xsZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5k
ZXggOGVhY2Q5MWExZTZhZTQ4NTY1YzllNThjY2RhMTBmM2VhNDQ0YzI3Ni4uNjI2NGRkYjdmNzkw
YzJmY2NjZGY0MTBkZjZlMmM5MzM3YjY1ZDI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTI0MCw3ICsy
NDAsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBv
cmF0ZVVwZGF0ZShjb25zdCBVcGRhdGVJbmZvJiB1cAogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIW1fYmFja2luZ1N0b3JlKQotICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZvLnZpZXdTaXplLCB1cGRhdGVJbmZvLmRldmlj
ZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0g
bWFrZVVuaXF1ZTxCYWNraW5nU3RvcmU+KHVwZGF0ZUluZm8udmlld1NpemUsIHVwZGF0ZUluZm8u
ZGV2aWNlU2NhbGVGYWN0b3IsIG1fd2ViUGFnZVByb3h5KTsKIAogICAgIG1fYmFja2luZ1N0b3Jl
LT5pbmNvcnBvcmF0ZVVwZGF0ZSh1cGRhdGVJbmZvKTsKIApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZv
aWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BhdGNoQWZ0ZXJFbnN1
cmluZ0RyYXdpbmcoV1RGOjpGdW5jCiAgICAgfQogCiAgICAgaWYgKCFtX2RyYXdpbmdNb25pdG9y
KQotICAgICAgICBtX2RyYXdpbmdNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJhd2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5
KTsKKyAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdNb25pdG9yPihtX3dlYlBhZ2VQcm94eSk7CiAg
ICAgbV9kcmF3aW5nTW9uaXRvci0+c3RhcnQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9y
YWdlLmNwcAppbmRleCBhMmQwMzg2YWNmNWQ4YWQ1MzVjNzkxMmE4ODZjYmQwZjAwNTQ3ODY4Li42
YWEyNDdiZDg3NzAyMTU4ODI0NzE2YTY2NWVlMWI3ODY5NmE2YTQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC0xNzgs
NyArMTc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNo
U2FsdEZvck9yaWdpbj4gRGV2aWNlSWRIYXNoU2FsdFN0b3IKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgYXV0byBoYXNoU2FsdEZvck9yaWdpbiA9IHN0ZDo6bWFrZV91bmlx
dWU8SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkp
LCBXVEZNb3ZlKHBhcmVudFNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShkZXZp
Y2VJZEhhc2hTYWx0KSk7CisgICAgYXV0byBoYXNoU2FsdEZvck9yaWdpbiA9IG1ha2VVbmlxdWU8
SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBX
VEZNb3ZlKHBhcmVudFNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShkZXZpY2VJ
ZEhhc2hTYWx0KSk7CiAKICAgICBoYXNoU2FsdEZvck9yaWdpbi0+bGFzdFRpbWVVc2VkID0gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKGxhc3RUaW1lVXNlZCk7CiAKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmljZUlkSGFzaFNhbHRG
b3JPcmlnaW5DYWxsKFNlY3VyaXR5T3JpZwogCiAgICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hT
YWx0ID0gYnVpbGRlci50b1N0cmluZygpOwogCi0gICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JP
cmlnaW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3Vt
ZW50T3JpZ2luKSwgV1RGTW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNh
bHQpKTsKKyAgICAgICAgYXV0byBuZXdIYXNoU2FsdEZvck9yaWdpbiA9IG1ha2VVbmlxdWU8SGFz
aFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoZG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHBhcmVudE9y
aWdpbiksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgICAgIHJldHVybiBuZXdI
YXNoU2FsdEZvck9yaWdpbjsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKaW5k
ZXggNjNhNDliNTY3ZGI4ZGE1M2Y1Nzk5YTUwMzQ0ZjMxMjUxZjVlOTY4NC4uZGM1YWRmMWEzZTRi
OTRhYTAxNGI0MzBlZmE2NmRlMDlmOTVjYTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcApAQCAtODgsMTEgKzg4
LDExIEBAIERvd25sb2FkUHJveHkmIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJv
eHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sCiAKICAgICBpZiAobV9kb3dubG9hZHMuc2l6
ZSgpID09IDEgJiYgbV9zaG91bGRUYWtlQXNzZXJ0aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9k
b3dubG9hZFVJQXNzZXJ0aW9uKTsKLSAgICAgICAgbV9kb3dubG9hZFVJQXNzZXJ0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJX
ZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7
CisgICAgICAgIG1fZG93bmxvYWRVSUFzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2Vy
dGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0
aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogCiAgICAgICAgIEFTU0VSVCghbV9kb3du
bG9hZE5ldHdvcmtpbmdBc3NlcnRpb24pOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nl
c3MpOwotICAgICAgICBtX2Rvd25sb2FkTmV0d29ya2luZ0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4obV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAi
V2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcp
OworICAgICAgICBtX2Rvd25sb2FkTmV0d29ya2luZ0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJv
Y2Vzc0Fzc2VydGlvbj4obV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IGRv
d25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogCiAgICAg
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIHRvb2sgJ1dlYktp
dCBkb3dubG9hZHMnIGFzc2VydGlvbnMgZm9yIFVJUHJvY2VzcyBhbmQgTmV0d29ya1Byb2Nlc3Mi
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5k
ZXggM2RlZjVkNzlmMDdjYjkxNDBiODI1NjJkYjlmNmYyYmM2ZDBmNzJmNi4uNTYwNmM1MTE2NTM0
ZjQzY2ZjODA2ZDUxMWQ0MWVkOThjZmIyNTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7
CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIERyYXdpbmdBcmVhUHJveHkgOiBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByb3RlY3RlZCBJUEM6Ok1lc3NhZ2VTZW5kZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERy
YXdpbmdBcmVhUHJveHkpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IGVjYWFjMzAxYjRiZGY0
NmYyYzg5Y2RkZTcxZDE5MzI1NDUxNGY2NDAuLmY0YjdiZWE2NTg1MDk5MWU5NDk0YTYyMjNkNTRi
OTgyYWVjZmQxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQv
VUlHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVw
YWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgVUlHYW1lcGFk
UHJvdmlkZXI6OnNldEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyhjb25zdCBWZWN0b3I8UGxhdGZv
cm1HYW1lcGFkCiAgICAgZm9yIChhdXRvKiBnYW1lcGFkIDogaW5pdGlhbEdhbWVwYWRzKSB7CiAg
ICAgICAgIGlmICghZ2FtZXBhZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2dh
bWVwYWRzW2dhbWVwYWQtPmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KCpn
YW1lcGFkKTsKKyAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IG1ha2VVbmlx
dWU8VUlHYW1lcGFkPigqZ2FtZXBhZCk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBwb29sIDog
bV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzKQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgVUlH
YW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQm
IGdhbWVwYWQpCiAgICAgICAgIG1fZ2FtZXBhZHMuZ3JvdyhnYW1lcGFkLmluZGV4KCkgKyAxKTsK
IAogICAgIEFTU0VSVCghbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldKTsKLSAgICBtX2dhbWVw
YWRzW2dhbWVwYWQuaW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFVJR2FtZXBhZD4oZ2FtZXBh
ZCk7CisgICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldID0gbWFrZVVuaXF1ZTxVSUdhbWVw
YWQ+KGdhbWVwYWQpOwogCiAgICAgc2NoZWR1bGVHYW1lcGFkU3RhdGVTeW5jKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNh
Z2VTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFw
aGljc1VzYWdlU2FtcGxlci5oCmluZGV4IDdkNTZiMGEyNDYzZGVkZjE2Njk1OGMyOGZmYjc1YWEw
ZTJjZTUxZjEuLmU2YmMwYTQ1MDU2NWVlMmVmYTFiZDA1YTJhNzU2MTExYTE1ZDk4YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNh
Z2VTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNl
R3JhcGhpY3NVc2FnZVNhbXBsZXIuaApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCiBjbGFzcyBIaWdoUGVyZm9ybWFuY2VHcmFwaGlj
c1VzYWdlU2FtcGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIoV2ViUHJvY2Vz
c1Bvb2wmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMGQzZDAzY2VlZDgzMTNiY2EyN2IzOTE1YWMz
N2NlNmUzZWQ3MzA5OS4uZWViNDA5ODk1Y2UwZTIzYzlmYzNlOTVmMzU4MTgwZmM5YWIwNDlkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCkKIERvd25sb2Fk
UHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX2Rvd25sb2FkUHJv
eHlNYXApCi0gICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93
bmxvYWRQcm94eU1hcD4oKnRoaXMpOworICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBtYWtl
VW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsKIAogICAgIHJldHVybiBtX2Rvd25sb2Fk
UHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkobV9wcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1
ZXN0KTsKIH0KQEAgLTEyMDEsNyArMTIwMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VVcGxvYWRBc3NlcnRpb24oKQogewogICAgIEFT
U0VSVCghbV91cGxvYWRBc3NlcnRpb24pOwotICAgIG1fdXBsb2FkQXNzZXJ0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0
IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICBt
X3VwbG9hZEFzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzc0lk
ZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVk
TmV0d29ya2luZyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJVcGxvYWRB
c3NlcnRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAzNWI4MjEzYzI4ZmNiNmI5NDBhMTA5OWJlMTQwOGY5
MDZhM2I5MmJiLi4xZmRiNjZjMTU1ZDg3YjIyNjJmMmEzZDVlMTBkZTIzOTE0MzhhODVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTsKIHN0cnVjdCBXZWJzaXRlRGF0YTsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eSBm
aW5hbCA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHByaXZhdGUgUHJvY2Vzc1Rocm90
dGxlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBSZWdpc3Ry
YWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIFRvcEZy
YW1lRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmFhZmYxZWMyYTY1NDkwZDg4NTQzOTk2YmY4
MTAyYzJkNDljNTA0Mi4uNDdhM2U5YjIzYmExMjY1MTk4YjYwZWRkZjZjNGRkOTg2ZmNkMjAyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNTYsMTQgKzU2
LDE0IEBAIFJlZjxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+IFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQCiAKIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNz
UG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9w
cm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCisg
ICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKSkK
IHsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0
ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQogewog
ICAgIGlmICghcHJvdmlkZXIpIHsKLSAgICAgICAgbV9wcm92aWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1h
a2VVbmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGVjNjRiYzllMTYy
Y2I3Y2ExZTc1MzdlOTMzMWQ0ZjEzOTU4N2VjNDEuLjZjZjVlMTRlYTU2OWYyM2RhODQ3NTQwOTZj
YTUxMTQ1M2MyOThiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTE2
OCw2ICsxNjgsNyBAQCB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKICNl
bmRpZgogCiBjbGFzcyBQYWdlQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBhZ2VDbGll
bnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5QYWdlQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaAppbmRleCAwMWE3ZGE3Yjg5MWE5
MDA2NmM5MGU4NDI5YzY1NmJkNzAwYjE2NmJkLi5lYTQzOTI3ZDQ4ZDc1MmJlYjY3MjgwOTQ5OWM5
YWQwYmZlMDdiYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rp
dml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCiBjbGFzcyBQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKFdlYlBy
b2Nlc3NQb29sJik7CiAgICAgflBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAppbmRleCBmNmY0NzliMWUwMzkyZjMyMjE2MGE2NDk0
YWVjNjJlMGEwNjc5NmRkLi44NDM2OWQzMzQ0MDdjZmJjMmU4M2FhODI3YzVjYzBlNWRiOTEyMmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
UHJvY2Vzc1Byb3h5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQg
UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdp
blByb2Nlc3NDcmVhdGlvblBhCiAjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIGJvb2wgcGx1Z2lu
UmVxdWlyZXNHdGsyKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8TW9kdWxlPiBtb2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0
aCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1
bGU+KHBsdWdpblBhdGgpOwogICAgIGlmICghbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICByZXR1cm4gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8Z3BvaW50ZXI+KCJn
dGtfb2JqZWN0X2dldF90eXBlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NU
aHJvdHRsZXIuY3BwCmluZGV4IDAwYTk5MTg4NjE0ODczOTM4YTZjYjRhYmQ5OTE0YmM4NjI5NDVj
ZjcuLjRjZTI2MmU5ZGNiYjRiMWIwZmYwYWQ1ZGI5N2ViOTdmMzYwNzM3NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCkBAIC0xMDMsOSArMTAzLDkg
QEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0VG9Qcm9jZXNzKFByb2Nlc3NJRCBw
aWQpCiAKICAgICBtX3N1c3BlbmRUaW1lci5zdG9wKCk7CiAgICAgaWYgKG1fc2hvdWxkVGFrZVVJ
QmFja2dyb3VuZEFzc2VydGlvbikKLSAgICAgICAgbV9hc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJf
cywgYXNzZXJ0aW9uU3RhdGUoKSk7CisgICAgICAgIG1fYXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQ
cm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFz
c2VydGlvblN0YXRlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9hc3NlcnRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHki
X3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8
UHJvY2Vzc0Fzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0
aW9uU3RhdGUoKSk7CiAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKGFzc2VydGlv
blN0YXRlKCkpOwogICAgIG1fYXNzZXJ0aW9uLT5zZXRDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA2MGYwMmM2
MTBmY2Q5ODgzMDYzOWM1N2IzZTlkNjFmZjFmZDUyNWZkLi4yNzRhYmQzMDI5YzAwNzczMzlkZmUz
NzQ4ZmYzMDY5N2M5YjQ4YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tbQpAQCAtMTA3LDcgKzEwNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MpCiAgICAgOiBEcmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZVJlbW90
ZUxheWVyVHJlZSwgd2ViUGFnZVByb3h5LCBwcm9jZXNzKQotICAgICwgbV9yZW1vdGVMYXllclRy
ZWVIb3N0KHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpKQorICAg
ICwgbV9yZW1vdGVMYXllclRyZWVIb3N0KG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4o
KnRoaXMpKQogewogI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
cG9vbCBzdXJmYWNlcyBpbiB0aGUgVUkgcHJvY2Vzcy4KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OnVwZGF0ZURlYnVnSW5kaWNhdG9yKElu
dFNpemUgY29udGVudHNTaXplLAogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OmluaXRpYWxpemVEZWJ1Z0luZGljYXRvcigpCiB7Ci0gICAgbV9kZWJ1Z0luZGljYXRvckxh
eWVyVHJlZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlz
KTsKKyAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlSG9zdD4oKnRoaXMpOwogICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0
LT5zZXRJc0RlYnVnTGF5ZXJUcmVlSG9zdCh0cnVlKTsKIAogICAgIG1fdGlsZU1hcEhvc3RMYXll
ciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCmluZGV4IDMwMDI1ZDQyOTlmM2JjYTA0ODVkMzA0ZDgzMzU4MTc2MTBiYTUwYmQuLjhh
NGU1MDQ4MTdlYmMxMjVjZTg5OGMxYzI5MWQ5YTZlNGQ1ZjU4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVIb3N0Lm1tCkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVIb3N0
OjpjcmVhdGVMYXllcihjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmUK
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0
OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlv
blByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7CiAgICAgYXV0byBtYWtlV2l0aExheWVyID0gWyZd
IChSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKGxh
eWVyKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHBy
b3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwogICAgIH07CiAgICAgYXV0byBtYWtl
QWRvcHRpbmdMYXllciA9IFsmXSAoQ0FMYXllciogbGF5ZXIpIHsKICAgICAgICAgcmV0dXJuIG1h
a2VXaXRoTGF5ZXIoYWRvcHROUyhsYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQpp
bmRleCBlODhiYmM2MDhkNGZiMDU4Mzg0ZDI5YjI2OTgxNTkyZWRhODE0ZWJhLi40ZmQ0ZWEyNjll
OGNjMWJkZmZiMmViMjU5N2Q0Zjc1MGQ4NDI0MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9k
ZS5tbQpAQCAtNzMsNyArNzMsNyBAQCBSZW1vdGVMYXllclRyZWVOb2RlOjp+UmVtb3RlTGF5ZXJU
cmVlTm9kZSgpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5
ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEIGxheWVySUQpCiB7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IGxheWVy
ID0gYWRvcHROUyhbW1dLUGxhaW5SZW1vdGVMYXllciBhbGxvY10gaW5pdF0pOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUo
bGF5ZXIpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihsYXll
cklELCBXVEZNb3ZlKGxheWVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlTm9kZTo6ZGV0
YWNoRnJvbVBhcmVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKaW5kZXggYzI3ODFkYzhhZGEzNDMzOWY3OWVkODVhN2Uz
ZTlmZjc2NTIyMjUyOC4uMjlkZmVmZTZjYjcyYzEyMGE2MWNjMjJkMGQzYmE2NGE2ZDk0NDI2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGEuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkmKTsKICAgICB+UmVtb3RlTGF5ZXJUcmVlU2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkuaAppbmRleCA4NmQwZGVmYzY5NjVlNGZhNmJhMTE2NDc2MWJjOWFjNzE5OGM3
MmU2Li4xYTc2OTQzZjI0NWJlMWNkODIyZjE5NjEzY2RkMzVmNTQwYTk0Y2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgY2xhc3MgUmVtb3RlU2Nyb2xsaW5nVHJlZTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xh
c3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eSk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eShXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVl
SG9zdElPUy5tbQppbmRleCA2MjlhOWM2NTBkNDNjMGQ1NjFjODE5MzNiYTBkMTRlOGQzM2VhNDQ0
Li4wYzEyNmFlNmFmNzVlNDEzOGFmZDAwODY4Mzk1NjYyOWZmNzAwMjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJl
ZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8VUlWaWV3PiBjcmVhdGVSZW1vdGVWaWV3KHBpZF90IHBpZCwgdWludDMyX3QgY29u
dGV4dElEKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVy
VHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXll
ckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykKIHsKICAgICBhdXRvIG1ha2VXaXRoVmll
dyA9IFsmXSAoUmV0YWluUHRyPFVJVmlldz4gdmlldykgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1v
dmUodmlldykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2Rl
Pihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUodmlldykpOwogICAgIH07CiAgICAgYXV0byBt
YWtlQWRvcHRpbmdWaWV3ID0gWyZdIChVSVZpZXcqIHZpZXcpIHsKICAgICAgICAgcmV0dXJuIG1h
a2VXaXRoVmlldyhhZG9wdE5TKHZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW90ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQppbmRleCA4MWEy
ZWI5YTYzNWQ1OTg0MTYwMGY3ODM1MjA0YWM4NGJkNmQ1YzI4Li5iODkwNjgxZTllN2E1MTNiYTM0
MzY3Y2VmMzk4OWJlM2IxOWQ5Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1v
dGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCkBAIC02Nyw3ICs2
Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTCiAKICAgICBpZiAoc3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5l
ckxheWVyKSkgewogICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkKLSAgICAgICAg
ICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcyk7CisgICAgICAgICAgICBtX3Njcm9s
bGluZ05vZGVEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUz4oKnRoaXMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3Njcm9sbGlu
Z05vZGVEZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCmluZGV4IGI1NmUy
ZWE2NGRhNTIwMzFkZmFmMTI4ZWMyNDhjZDE1YzcxMDA5MjYuLmQwYmRkM2M1N2RiYmNiZWYwNzBl
ODUxYWZlMDRlZWU2YWFiNTdkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTQzLDcgKzQzLDcgQEAg
UmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M+IFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MKIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyhXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQgbm9k
ZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdU
cmVlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShzdGQ6Om1ha2VfdW5p
cXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkKKyAgICAs
IG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKG1ha2VVbmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApp
bmRleCAzMmExZTMzYWE4NTY3YzBiNjE2MmUwNjc4M2NmMzc2Y2Y2MTkwN2UyLi4yMzNmZmQwMjFl
NjM4YmYxODhmOGRjYWJkNzc5Yzc0NTI5NDM3Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVNYWMoU2Nyb2xsaW5nVHJlZSYgdHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9k
ZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5vZGVUeXBlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9sbGVy
UGFpcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQorICAgICwgbV9z
Y3JvbGxlclBhaXIobWFrZVVuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggZDg5NjBjZWMzMGU0MzMxOWFhMDI3ZDlh
MjFmY2VmYzgzNzYzNTA0My4uYjZjYTNjYmJhODA4MDdhZjdiOWY2OTliZTliMWIyYWE5Y2RjMWMz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21h
Yy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlZjxT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjPiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVS
ZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMoU2Ny
b2xsaW5nVHJlZSYgdHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWModHJlZSwgbm9kZUlEKQotICAgICwgbV9zY3Jv
bGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKKyAgICAs
IG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IGY1MDVlMjgwYzQ0MjkwYTgw
M2RiZGI2OGM5OGVlYTYzMGIxYzliYjYuLjg2OGI1NGU3OTJhZjJhYmQ5ODZiYzg2NjAwNWNiMTJm
NDU2ODI0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtNDgsNiArNDgs
NyBAQCBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eQogICAgICwg
cHJpdmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOwogICAgIH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KaW5kZXggY2EyNmU1MWQ3
YTQwNjRhYTI4MTI3YzBmMDFkNTRhNGUwYWMyNDQ2My4uMzkzYjEzNjcxZjYwMTQxNmE2ZWQ3YzJm
ZGFiMGNkMmViMDgxZTNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCkBAIC05Miw3ICs5
Miw3IEBAIFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBIaWRTZXJ2aWNlOjpjcmVhdGVIaWRDb25u
ZWN0aW9uKElPSElERGV2aWNlUmVmIGRldmljZSkKIAogdm9pZCBIaWRTZXJ2aWNlOjpkZXZpY2VB
ZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7Ci0gICAgYXV0byBkcml2ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEN0YXBIaWREcml2ZXI+KGNyZWF0ZUhpZENvbm5lY3Rpb24oZGV2aWNlKSk7Cisg
ICAgYXV0byBkcml2ZXIgPSBtYWtlVW5pcXVlPEN0YXBIaWREcml2ZXI+KGNyZWF0ZUhpZENvbm5l
Y3Rpb24oZGV2aWNlKSk7CiAgICAgLy8gR2V0IGF1dGhlbnRpY2F0b3IgaW5mbyBmcm9tIHRoZSBk
ZXZpY2UuCiAgICAgZHJpdmVyLT50cmFuc2FjdChlbmNvZGVFbXB0eUF1dGhlbnRpY2F0b3JSZXF1
ZXN0KEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXRJbmZvKSwgW3dlYWtUaGlz
ID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwdHIgPSBkcml2ZXIuZ2V0KCldKFZlY3Rvcjx1aW50OF90
PiYmIHJlc3BvbnNlKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAppbmRleCA4
NWNlNjkwNjExMTQ0MmJjNjc5Y2M3YTc3NWI4NjgyZGQxNTcyOGM5Li5mODUyYmVkMjEzMGI0N2My
ZjdkZDI5OGFkMzU2YWVhYzg3YzAyNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDk5
ZDZlYTMzNDE1M2VjZjQ5ZDQ1ODRjNzQzZGM2ODE2ODg0MTU1MjAuLjg0NmE1YWEyN2RmYWIzZDI3
NGNmZmE0ODczODYxZjI1ODdkMTdmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
UmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Oldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAg
ICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKKyAgICAsIG1fcHJv
dmlkZXIobWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiAgICAgV2Vi
Q29udGV4dFN1cHBsZW1lbnQ6OnByb2Nlc3NQb29sKCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
KnRoaXMpOwogfQpAQCAtNTQsNyArNTQsNyBAQCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQbwogdm9p
ZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3Zp
ZGVyKQotICAgICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdlb2xvY2F0
aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6R2Vv
bG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fcHJvdmlkZXIgPSBXVEZN
b3ZlKHByb3ZpZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCmluZGV4IDJjZGNkMTc2NTI5OWZlNzc2NDli
YWJmOWRlM2U3NGU4YjBmMDBlMzcuLjMzNjRiY2JjYzkxMTg0YTZiYTc1NDFlZjkwYjBmOTYwNGNk
ZTRkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lv
bkZvY3VzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyOjp1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVkaWFTdGF0
ZShXZWJQYWdlCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpzZXRGb2N1c2Vk
TWVkaWFFbGVtZW50KFdlYlBhZ2VQcm94eSYgcHJveHksIHVpbnQ2NF90IGVsZW1lbnRJRCkKIHsK
LSAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzZWRNZWRp
YUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElEKTsKKyAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQg
PSBtYWtlVW5pcXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElEKTsKIH0K
IAogdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNsZWFyRm9jdXNlZE1lZGlhRWxl
bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9u
U3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCmlu
ZGV4IDllYjlkMjhhZGRkNWI1YjAwNmQ1MGIwOGEzZDc0ZmI2OWQxNjIzOTIuLjE2YTc1OWFjOGEx
ZmYzMTQ2MDViMDk0NmZmYzVhYTY1ODE4ZTA3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiAKIGNsYXNzIFdlYk5hdmlnYXRp
b25TdGF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViTmF2aWdhdGlvblN0YXRlKCk7CiAgICAgfldlYk5hdmlnYXRpb25TdGF0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaAppbmRleCA2NTI5ODJhODEyYTllZmJlZjUyMWE2YTk4OTlmYTRiZWU1ZmFmMzRjLi4x
YjI5Zjc5ZGRmYWVhMDdiOWU3MjQ5YmQ3NzIzODRlZWJmNTMwZmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAt
NDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAog
Y2xhc3MgV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdL
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVBy
b3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxBUEk6Ok9iamVjdD4pPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjNGI5MmM4M2NmZWEy
OWIzMWVkYmIzNGFhODQwMjViYTVjOGIwM2I3Li5iZGE1OWNkODA1MTU3NjQ2YjMwOGQyZmQyMzZm
M2QxMTgyNzFlMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFdlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcihXZWJQYWdlUHJveHkm
IHBhZ2UpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zy
b250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiB7Ci0gICAgYXV0byB0YXJnZXRBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVy
LmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBhdXRvIHRhcmdldEFnZW50
ID0gbWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQ+KG1fZnJvbnRlbmRSb3V0
ZXIuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAgICAgbV90YXJnZXRBZ2Vu
dCA9IHRhcmdldEFnZW50LmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCA3ZmEyYjRkNmQzYzE2NjFhNzAwM2I3Nzg1NThkYTdjMmZmMjRmMDdlLi4w
YjQwZGIyNzc4M2ZkZTlkMjU2ZmY1MjkyZWVhN2ViZmUzMTZjYTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM5NywxNSArMzk3LDE1IEBAIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgUGFnCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0
aW9uKSkKICAgICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdh
dGlvbkNsaWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6
SGlzdG9yeUNsaWVudD4oKSkKLSAgICAsIG1faWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpKQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpKQotICAgICwgbV91aUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCkpCi0gICAgLCBtX2ZpbmRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCkpCi0gICAgLCBtX2ZpbmRNYXRjaGVzQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKSkKKyAgICAsIG1faWNvbkxv
YWRpbmdDbGllbnQobWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpKQorICAgICwg
bV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpKQorICAgICwgbV91aUNs
aWVudChtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCkpCisgICAgLCBtX2ZpbmRDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCkpCisgICAgLCBtX2ZpbmRNYXRjaGVzQ2xpZW50KG1h
a2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNv
bnRleHRNZW51Q2xpZW50PigpKQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVl
PEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAsIG1fbmF2aWdhdGlvblN0
YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigpKQorICAgICwgbV9uYXZp
Z2F0aW9uU3RhdGUobWFrZVVuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3By
b2Nlc3MocHJvY2VzcykKICAgICAsIG1fcGFnZUdyb3VwKCptX2NvbmZpZ3VyYXRpb24tPnBhZ2VH
cm91cCgpKQogICAgICwgbV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNl
cygpKQpAQCAtNDE2LDcgKzQxNiw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnCiAgICAgLCBt
X292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IHsgbV9jb25maWd1cmF0aW9uLT5vdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpIH0KICAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRl
c0FzSW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVz
QXNJbnNlY3VyZSgpKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVsbHNj
cmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKSkKKyAg
ICAsIG1fZnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4o
KSkKICNlbmRpZgogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigq
dGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlz
KQpAQCAtNDM1LDkgKzQzNSw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnCiAjZW5kaWYKICAg
ICAsIG1fcGFnZUxvYWRTdGF0ZSgqdGhpcykKICAgICAsIG1fY29uZmlndXJhdGlvblByZWZlcmVu
Y2VWYWx1ZXMobV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkpCi0gICAgLCBtX2lu
c3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlcj4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKLSAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFdlYlBh
Z2VEZWJ1Z2dhYmxlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUobWFrZVVu
aXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVj
ZW50Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6
cmVzZXRSZWNlbnRDcmFzaENvdW50KQogewpAQCAtNDc3LDcgKzQ3Nyw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgUGFnCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fYWN0aXZp
dHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZl
cj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpBY3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNdIHsKKyAgICBtX2FjdGl2aXR5U3Rh
dGVDaGFuZ2VEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19j
YXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0
aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CiAgICAgICAgIHRoaXMtPmRpc3BhdGNoQWN0aXZp
dHlTdGF0ZUNoYW5nZSgpOwogICAgIH0pOwogI2VuZGlmCkBAIC02MDEsNyArNjAxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xp
Y3lDbGllbnQ+JiYgcG9saWN5Q2wKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHsKICAgICBpZiAo
IWZvcm1DbGllbnQpIHsKLSAgICAgICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkZvcm1DbGllbnQ+KCk7CisgICAgICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpGb3JtQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MTEsNyArNjEx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6Rm9ybUNsaWVudD4mJiBmb3JtQ2xpZW50KQogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVJQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiYmIHVpQ2xpZW50KQogewogICAgIGlm
ICghdWlDbGllbnQpIHsKLSAgICAgICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpVSUNsaWVudD4oKTsKKyAgICAgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpVSUNs
aWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjI4LDcgKzYyOCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJY29uTG9hZGluZ0NsaWVudD4mCiB7CiAgICAgYm9vbCBoYXNDbGllbnQgPSBpY29uTG9hZGlu
Z0NsaWVudC5nZXQoKTsKICAgICBpZiAoIWljb25Mb2FkaW5nQ2xpZW50KQotICAgICAgICBtX2lj
b25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50
PigpOworICAgICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25M
b2FkaW5nQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9
IFdURk1vdmUoaWNvbkxvYWRpbmdDbGllbnQpOwogCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6OnVuaXF1ZV9wdHI8UGFn
ZUxvYWRTdGF0ZTo6T2JzZXIKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKIHsKICAgICBpZiAoIWZp
bmRDbGllbnQpIHsKLSAgICAgICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkZpbmRDbGllbnQ+KCk7CisgICAgICAgIG1fZmluZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpG
aW5kQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNjYwLDcgKzY2
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5k
TWF0Y2hlc0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4mJiBm
aW5kTWF0Y2hlc0NsaWVudCkKIHsKICAgICBpZiAoIWZpbmRNYXRjaGVzQ2xpZW50KSB7Ci0gICAg
ICAgIG1fZmluZE1hdGNoZXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNo
ZXNDbGllbnQ+KCk7CisgICAgICAgIG1fZmluZE1hdGNoZXNDbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY3
Niw3ICs2NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RGlhZ25vc3RpY0xvZwogdm9pZCBXZWJQYWdlUHJveHk6
OnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xp
ZW50PiYmIGNvbnRleHRNZW51Q2xpZW50KQogewogICAgIGlmICghY29udGV4dE1lbnVDbGllbnQp
IHsKLSAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpD
b250ZXh0TWVudUNsaWVudD4oKTsKKyAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VV
bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNjkxLDcgKzY5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CisgICAgbV9pbmplY3RlZEJ1bmRs
ZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PigpOwogICAg
IG1faW5qZWN0ZWRCdW5kbGVDbGllbnQtPmluaXRpYWxpemUoY2xpZW50KTsKIH0KIApAQCAtNzc2
LDcgKzc3Niw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgfQogCiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlOiBTdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlS
ZWYoKSwgKm1haW5GcmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VVbmlx
dWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5G
cmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUpOwogCiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQ
Ukl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFj
ay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSwgc3VzcGVuZGVk
UGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZy
b21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CiAKQEAgLTg0OSw3
ICs4NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcygp
CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5N
YW5hZ2VyKTsKLSAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5PigqdGhpcywgcGFnZUNsaWVudCgpLmZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHlDbGllbnQoKSk7CisgICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IG1ha2VVbmlxdWU8
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGllbnQoKS5mdWxsU2NyZWVu
TWFuYWdlclByb3h5Q2xpZW50KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgSEFWRShBVktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKICAgICBBU1NFUlQoIW1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcik7CkBAIC04
NjAsMjIgKzg2MCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJv
Y2VzcygpCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgIEFTU0VSVCghbV9wYXltZW50Q29v
cmRpbmF0b3IpOwotICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgIG1fcGF5bWVudENvb3JkaW5h
dG9yID0gbWFrZVVuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2Vu
ZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgQVNTRVJUKCFtX3N5c3RlbVByZXZp
ZXdDb250cm9sbGVyKTsKLSAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOworICAgIG1fc3lzdGVtUHJl
dmlld0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFN5c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhp
cyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgQVNTRVJUKCFtX2NyZWRl
bnRpYWxzTWVzc2VuZ2VyKTsKLSAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgIG1f
Y3JlZGVudGlhbHNNZXNzZW5nZXIgPSBtYWtlVW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEhBVkUoUEVOQ0lMS0lUKQogICAgIEFT
U0VSVCghbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlcik7Ci0gICAgbV9lZGl0YWJsZUltYWdlQ29u
dHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+KCp0aGlz
KTsKKyAgICBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTk0Myw3ICs5NDMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEoc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdB
cmVhUHJveHk+JiYgZHJhd2luZ0FyZQogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYg
UExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBEcmF3aW5n
QXJlYVR5cGVSZW1vdGVMYXllclRyZWUpIHsKLSAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRv
clByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5
PigqdGhpcyk7CisgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IG1ha2VVbmlx
dWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgICAgIC8vIE9uIGlPUywgbWFpbiBmcmFtZSBzY3JvbGxzIGFyZSBz
ZW50IGluIHRlcm1zIG9mIHZpc2libGUgcmVjdCB1cGRhdGVzLgogICAgICAgICBtX3Njcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHktPnNldFByb3BhZ2F0ZXNNYWluRnJhbWVTY3JvbGxzKGZhbHNlKTsK
QEAgLTEwMDYsMTcgKzEwMDYsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBt
X2xvYWRlckNsaWVudCA9IG51bGxwdHI7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50ID0gbWFrZVVu
aXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCk7CiAgICAgbV9wb2xpY3lDbGllbnQgPSBu
dWxscHRyOwotICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SWNvbkxvYWRpbmdDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkZvcm1DbGllbnQ+KCk7Ci0gICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpVSUNsaWVudD4oKTsKLSAgICBtX2ZpbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6RmluZENsaWVudD4oKTsKLSAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgIG1faWNvbkxvYWRpbmdDbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CisgICAgbV91aUNsaWVudCA9IG1ha2VV
bmlxdWU8QVBJOjpVSUNsaWVudD4oKTsKKyAgICBtX2ZpbmRDbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6RmluZENsaWVudD4oKTsKKyAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOwogICAgIG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQg
PSBudWxscHRyOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIG1fY29udGV4dE1lbnVD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAg
bV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4o
KTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBtX2Z1bGxzY3JlZW5D
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICBt
X2Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsK
ICNlbmRpZgogCiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnJlbW92ZUFsbFN1c3BlbmRl
ZFBhZ2VzRm9yUGFnZSgqdGhpcyk7CkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgYwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNo
UHJvY2Vzcyh7IH0pOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUt
PmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6U3Vic3RpdHV0
ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRh
dGEpKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9h
ZERhdGFOYXZpZ2F0aW9uKG1ha2VVbmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0
b3IoKSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkpOwogICAgIGxvYWRE
YXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbmF2aWdhdGlvbiwg
ZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KQEAgLTI0MTUsNyArMjQxNSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVs
RXZlbnQmIGV2ZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb2FsZXNj
ZWRXaGVlbEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVu
dD4+KCk7CisgICAgYXV0byBjb2FsZXNjZWRXaGVlbEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0b3I8
TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CiAgICAgY29hbGVzY2VkV2hlZWxFdmVudC0+YXBwZW5k
KGV2ZW50KTsKICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChXVEZN
b3ZlKGNvYWxlc2NlZFdoZWVsRXZlbnQpKTsKICAgICBzZW5kV2hlZWxFdmVudChldmVudCk7CkBA
IC0yNDIzLDcgKzI0MjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChj
b25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnBy
b2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpCiB7Ci0gICAgYXV0byBuZXh0Q29hbGVzY2VkRXZl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKKyAg
ICBhdXRvIG5leHRDb2FsZXNjZWRFdmVudCA9IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldo
ZWVsRXZlbnQ+PigpOwogICAgIFdlYldoZWVsRXZlbnQgbmV4dFdoZWVsRXZlbnQgPSBjb2FsZXNj
ZWRXaGVlbEV2ZW50KG1fd2hlZWxFdmVudFF1ZXVlLCAqbmV4dENvYWxlc2NlZEV2ZW50LmdldCgp
KTsKICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChXVEZNb3ZlKG5l
eHRDb2FsZXNjZWRFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KG5leHRXaGVlbEV2ZW50KTsK
QEAgLTI5ODQsNyArMjk4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRp
b25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgICAgIG1f
cHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtX3Byb3Zpc2lvbmFsUGFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9j
ZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5h
dmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZp
Z2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwor
ICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4o
KnRoaXMsIG5ld1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2VQcm94eSks
IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJc1Jl
ZGlyZWN0KCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCk7CiAKICAgICBpZiAoYXV0byogaXRlbSA9IG5hdmlnYXRpb24udGFyZ2V0SXRl
bSgpKSB7CiAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGNvbnRpbnVlTmF2
aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS0+dXJs
KCkudXRmOCgpLmRhdGEoKSk7CkBAIC01NzAyLDcgKzU3MDIsNyBAQCBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZ1bGxzY3Jl
ZW5DbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KSB7Ci0gICAgICAgIG1fZnVs
bHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50Pigp
OworICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVl
bkNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQzNyw3ICs3NDM3LDcg
QEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIFdlYlBhZ2VQcm94eTo6
dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKICAgICBpZiAobV91c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIpCiAgICAgICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXI7CiAKLSAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9
IHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+
KCp0aGlzKTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IG1ha2VV
bmlxdWU8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogfQogCkBAIC04
MTQzLDcgKzgxNDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGVyZm9ybWFuY2VE
YXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2Nyb2xsUGVyZm9ybWFu
Y2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCiAgICAgaWYgKG1fc2Nyb2xsUGVy
Zm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQgJiYgIW1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VE
YXRhKQotICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhPihkb3duY2FzdDxSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqbV9kcmF3aW5nQXJlYSkpOworICAgICAgICBt
X3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhPihkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5PigqbV9kcmF3aW5nQXJlYSkpOwogICAgIGVsc2UgaWYgKCFtX3Njcm9sbFBlcmZvcm1h
bmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKQogICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YSA9IG51bGxwdHI7CiB9CkBAIC05MTkwLDcgKzkxOTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVzZXRTcGVlY2hTeW50aGVzaXplcigpCiBXZWJQYWdlUHJveHk6OlNwZWVjaFN5bnRoZXNp
c0RhdGEmIFdlYlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzRGF0YSgpCiB7CiAgICAgaWYgKCFt
X3NwZWVjaFN5bnRoZXNpc0RhdGEpCi0gICAgICAgIG1fc3BlZWNoU3ludGhlc2lzRGF0YSA9IFNw
ZWVjaFN5bnRoZXNpc0RhdGEgeyBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI+KHRoaXMpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
IH07CisgICAgICAgIG1fc3BlZWNoU3ludGhlc2lzRGF0YSA9IFNwZWVjaFN5bnRoZXNpc0RhdGEg
eyBtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAgICAgcmV0dXJuICptX3NwZWVj
aFN5bnRoZXNpc0RhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
Q2FjaGUuY3BwCmluZGV4IDhiZGY4Y2Y4Mzg4Y2RjN2JmYWNmZjJiN2U2MDVkMGE4MThkYWFjNjQu
Ljk2MmYzYmVkMmQ4MjU2OWEwN2RkNGU5Y2RhYjhmY2M3MjExOWY3ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcApAQCAtODQsNyArODQsNyBAQCBib29s
IFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciA9IGdlbmVyYXRlQWRkUmVxdWVzdElkZW50aWZpZXIoKTsKLSAgICBtX3Bl
bmRpbmdBZGRSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8
Q2FjaGVkUHJvY2Vzcz4ocHJvY2Vzcy5jb3B5UmVmKCkpKTsKKyAgICBtX3BlbmRpbmdBZGRSZXF1
ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmlxdWU8Q2FjaGVkUHJvY2Vzcz4ocHJv
Y2Vzcy5jb3B5UmVmKCkpKTsKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVw
IC0gV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSgpOiBDaGVja2luZyBpZiBw
cm9jZXNzICVpIGlzIHJlc3BvbnNpdmUgYmVmb3JlIGNhY2hpbmcgaXQuLi4iLCB0aGlzLCBwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBwcm9jZXNzLT5pc1Jlc3BvbnNpdmUoW3Ro
aXMsIHByb2Nlc3NQb29sID0gbWFrZVJlZihwcm9jZXNzLT5wcm9jZXNzUG9vbCgpKSwgcmVxdWVz
dElkZW50aWZpZXJdKGJvb2wgaXNSZXNwb25zaXZlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZGJlMjUzNTJiNTI1ODhkOGEzY2M4Njk0ODQ0NDBl
NzllODVhMDk2ZC4uZmVkYThlZThlOGQzMGYzOTRmZjEwOGZiZmE4MDQxNWQ4MTA3N2E0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjMzLDE1ICsy
MzMsMTUgQEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3QKIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9j
ZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAg
ICA6IG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLmNvcHkoKSkKICAgICAsIG1fZGVmYXVs
dFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQotICAgICwgbV9pbmplY3RlZEJ1bmRs
ZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCi0g
ICAgLCBtX2F1dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25D
bGllbnQ+KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpE
b3dubG9hZENsaWVudD4oKSkKLSAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCi0gICAgLCBtX2N1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PigpKQorICAgICwgbV9pbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCisgICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkpCisgICAgLCBtX2Rvd25sb2FkQ2xpZW50
KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKSkKKyAgICAsIG1faGlzdG9yeUNsaWVu
dChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCisgICAgLCBt
X2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwgbV92aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5r
U3RvcmU6OmNyZWF0ZSgpKQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAsIG1faGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3VuaXF1ZTxIaWdoUGVyZm9ybWFuY2VH
cmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQotICAgICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BV
VXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcj4oKnRoaXMpKQorICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
cihtYWtlVW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPigqdGhpcykp
CisgICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxQZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fYWx3
YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KG1fY29uZmlndXJhdGlvbi0+YWx3YXlzUnVuc0F0
QmFja2dyb3VuZFByaW9yaXR5KCkpCiAgICAgLCBtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3Nl
cnRpb24obV9jb25maWd1cmF0aW9uLT5zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKCkp
CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNsaWVu
dChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1
bmRsZUNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1faW5q
ZWN0ZWRCdW5kbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVD
bGllbnQ+KCk7CisgICAgICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2luamVjdGVk
QnVuZGxlQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KGNvbnN0IFdLQ29u
dGV4dENvbm5lY3Rpb25DbGllbnRCCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiYmIGhp
c3RvcnlDbGllbnQpCiB7CiAgICAgaWYgKCFoaXN0b3J5Q2xpZW50KQotICAgICAgICBtX2hpc3Rv
cnlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQ+KCk7CisgICAgICAgIG1faGlzdG9yeUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1faGlzdG9yeUNsaWVu
dCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdh
Y3lDb250ZXh0SGlzdG9yeUMKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQog
ewogICAgIGlmICghZG93bmxvYWRDbGllbnQpCi0gICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCk7CisgICAgICAgIG1fZG93bmxv
YWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCk7CiAgICAgZWxzZQog
ICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3dubG9hZENsaWVudCk7CiB9CkBA
IC0zOTMsNyArMzkzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgZG8KIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlv
bkNsaWVudD4mJiBhdXRvbWF0aW9uQ2xpZW50KQogewogICAgIGlmICghYXV0b21hdGlvbkNsaWVu
dCkKLSAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1
dG9tYXRpb25DbGllbnQ+KCk7CisgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9hdXRvbWF0
aW9uQ2xpZW50ID0gV1RGTW92ZShhdXRvbWF0aW9uQ2xpZW50KTsKIH0KQEAgLTQwMiw3ICs0MDIs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QwogewogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9N
X1BST1RPQ09MX01BTkFHRVIpCiAgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQp
Ci0gICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKKyAgICAgICAgbV9jdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQgPSBXVEZNb3ZlKGN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCk7CiAjZW5kaWYKQEAg
LTQ5Miw3ICs0OTIsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgICAgICByZXR1cm4g
Km1fbmV0d29ya1Byb2Nlc3M7CiAgICAgfQogCi0gICAgYXV0byBuZXR3b3JrUHJvY2VzcyA9IHN0
ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Byb2Nlc3NQcm94eT4oKnRoaXMpOworICAgIGF1dG8gbmV0
d29ya1Byb2Nlc3MgPSBtYWtlVW5pcXVlPE5ldHdvcmtQcm9jZXNzUHJveHk+KCp0aGlzKTsKIAog
ICAgIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKQEAgLTI1
MTAsNyArMjUxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5m
b3JtYXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21hCiAgICAgICAgIG1fcHJld2Fy
bUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKG1fcHJld2FybUluZm9ybWF0
aW9uUGVyUmVnaXN0cmFibGVEb21haW4ucmFuZG9tKCkpOwogCiAgICAgYXV0byYgdmFsdWUgPSBt
X3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLmVuc3VyZShyZWdpc3RyYWJs
ZURvbWFpbiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpQ
cmV3YXJtSW5mb3JtYXRpb24+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6
OlByZXdhcm1JbmZvcm1hdGlvbj4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAq
dmFsdWUgPSBwcmV3YXJtSW5mb3JtYXRpb247CkBAIC0yNTU3LDEyICsyNTU3LDEyIEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJRCkKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+dGFrZVVwbG9hZEFzc2VydGlv
bigpOwogICAgICAgICAKICAgICAgICAgQVNTRVJUKCFtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlv
bik7Ci0gICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgdXBsb2Fk
cyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX3Vp
UHJvY2Vzc1VwbG9hZEFzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpV
bmJvdW5kZWROZXR3b3JraW5nKTsKICAgICB9CiAgICAgCiAgICAgYXV0byByZXN1bHQgPSBtX3By
b2Nlc3Nlc1dpdGhVcGxvYWRzLmFkZChwcm9jZXNzSUQsIG51bGxwdHIpOwogICAgIEFTU0VSVChy
ZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
IldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7
CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlv
bj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmNsZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lE
KQpAQCAtMjU5OSwxMiArMjU5OSwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9j
ZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaQogICAgICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlRoZSBudW1iZXIgb2YgcHJvY2Vzc2Vz
IHBsYXlpbmcgYXVkaWJsZSBtZWRpYSBpcyBub3cgb25lLiBUYWtpbmcgVUkgcHJvY2VzcyBhc3Nl
cnRpb24uIik7CiAKICAgICAgICAgQVNTRVJUKCFtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3Nl
cnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldl
YktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2Vy
dGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CisgICAgICAgIG1fdWlQcm9jZXNzTWVkaWFQbGF5
YmFja0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFBy
b2Nlc3NJRCgpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9y
ZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKICAgICB9CiAKICAgICBh
dXRvIHJlc3VsdCA9IG1fcHJvY2Vzc2VzUGxheWluZ0F1ZGlibGVNZWRpYS5hZGQocHJvY2Vzc0lE
LCBudWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2Vy
dGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOwor
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+
KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3Ms
IEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJh
Y2spOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NJc1BsYXlpbmdB
dWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTE2OTEzN2Y1Mzg5
ZDMwYmI4YjExYjNhOGUxZjUwY2E0M2FhMDZlZC4uMWUzY2RkZThmYmU4OGU4NWQ4MDI5ODc3OTdm
ODEyZWVjNTI1YjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJv
eHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKgogICAgICwg
bV92aXNpYmxlUGFnZUNvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVCYWNr
Z3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOyB9KQogICAgICwgbV93ZWJzaXRlRGF0YVN0b3Jl
KHdlYnNpdGVEYXRhU3RvcmUpCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgLCBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoc3RkOjptYWtlX3Vu
aXF1ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PigqdGhpcykpCisgICAgLCBtX3VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5PigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1faXNQcmV3YXJtZWQoaXNQcmV3YXJtZWQg
PT0gSXNQcmV3YXJtZWQ6OlllcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAppbmRleCBlOWZj
ZjAwMTUzOTk1ZGMxY2NlMTM1ZjhjMDkyZTkyZTY2ZGJmZjNhLi5kMGJiYTU2NGMyNzU4MmQ3ODI2
ZTlmMmMyMDYyMjM3MDIyNzI5NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCkBAIC0zNCw2
ICszNCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZUNsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3Rv
cmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVD
YWlyby5jcHAKaW5kZXggMTgyOTRkMzdmZTQ5ZWVkNmQ2OWRmZmZmNWYyZjY1MDcwYjY2Y2Q5MC4u
N2JkZDAzZDNjOGVjOGUwNjYyZTc3ZDAxODI1MGI1MDg4YzI2Y2ZiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtNTQs
MTIgKzU0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8+IEJh
Y2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiAgICAgICAgIEdka1Zpc3VhbCogdmlzdWFsID0g
Z3RrX3dpZGdldF9nZXRfdmlzdWFsKG1fd2ViUGFnZVByb3h5LnZpZXdXaWRnZXQoKSk7CiAgICAg
ICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ2RrX3Zpc3VhbF9nZXRfc2NyZWVuKHZpc3VhbCk7CiAg
ICAgICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJlZERpc3BsYXkp
Lm5hdGl2ZSgpID09IEdES19TQ1JFRU5fWERJU1BMQVkoc2NyZWVuKSk7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oR0RLX1dJTkRP
V19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oR0RLX1dJTkRPV19YSUQo
Z2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCiAgICAgICAgICAgICBHREtfVklT
VUFMX1hWSVNVQUwodmlzdWFsKSwgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSwgbV9zaXpl
LCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9kZXZp
Y2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlQmFja2Vu
ZENhaXJvSW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBCYWNr
aW5nU3RvcmU6OnBhaW50KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHAKaW5kZXggYjg3NGZiMGZiMmUyYTdlN2VjMzZjYzQ0ZTM5ZDYyNDkwNmE0YzVmMS4u
Zjg4OGMwZjQ0NmM2MjcxMjdjODM3NWJlMGQ4MWE2YTNmMmMwOWY3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApA
QCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50Ojpjb25uZWN0aW9u
Q2xvc2VkKCkKIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KHVpbnQ2NF90IGNv
bm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X2luc3BlY3RvclByb3h5TWFwLmVuc3VyZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHRh
cmdldElEKSwgW3RoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SURdIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9u
SUQsIHRhcmdldElEKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9y
UHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEKTsKICAgICB9KTsKICAgICBpZiAo
IWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPnNob3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggMzgzMTAwMDU4ODk0
ZGVjMGZiN2I1MWNhYTA5YTIzOWQ3N2QwOGE4Yi4uODkzMjc5ZmJjZjU4YWVhZjJhZmQ2YjFhNDdj
MWM3NmMyM2Q4MmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Fj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTc5LDkgKzc5
LDkgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1l
bnRzKCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShPUEVOR0xfRVMpCi0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25z
ID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNl
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVu
c2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2Up
OwogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xF
eHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIs
IEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxF
eHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9u
KCkgPj0gMzIwKTsKICNlbmRpZgogICAgICAgICBpZiAoZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygi
R0xfT0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xf
aW1hZ2VfZXh0ZXJuYWwiKSkKICAgICAgICAgICAgIGdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DPihlZ2xH
ZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKaW5kZXgg
ZTlhZTY1NTJhN2EyZDg2MmM0YmQ0ZWUxMGVkMmVjMzZlOTJmODMxZC4uY2E2NTNlNWViYTcwYzk2
MTU1ZmY3NjQ4OGMzZWRmNDI4MWY4NTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBTZWxl
Y3Rpb25EYXRhKiBEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdEYXRhU2VsZWN0aW9uKEdka0RyYWdD
b250ZXh0KiBjb250ZXh0LCBjbwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcm9wcGluZ0NvbnRleHQ+
JiBkcm9wcGluZ0NvbnRleHQgPSBtX2Ryb3BwaW5nQ29udGV4dHMuYWRkKGNvbnRleHQsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWRyb3BwaW5nQ29udGV4dCkgewogICAgICAg
ICBHdGtXaWRnZXQqIHdpZGdldCA9IG1fcGFnZS52aWV3V2lkZ2V0KCk7Ci0gICAgICAgIGRyb3Bw
aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RHJvcHBpbmdDb250ZXh0Pihjb250ZXh0LCBw
b3NpdGlvbik7CisgICAgICAgIGRyb3BwaW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8RHJvcHBpbmdD
b250ZXh0Pihjb250ZXh0LCBwb3NpdGlvbik7CiAgICAgICAgIFZlY3RvcjxHZGtBdG9tPiBhY2Nl
cHRhYmxlVGFyZ2V0cyhQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS5kcm9wQXRvbXNGb3JD
b250ZXh0KHdpZGdldCwgZHJvcHBpbmdDb250ZXh0LT5nZGtDb250ZXh0KSk7CiAgICAgICAgIGRy
b3BwaW5nQ29udGV4dC0+cGVuZGluZ0RhdGFSZXF1ZXN0cyA9IGFjY2VwdGFibGVUYXJnZXRzLnNp
emUoKTsKICAgICAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBhY2NlcHRhYmxlVGFyZ2V0cykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaAppbmRl
eCA1MjU0MjAzNzFmNjFiZDRiOGYzYzFhMzk5YjdiODI2MWI5OTRlYTEwLi41OTE0YjdlMGRmNTQz
MWFjZjY2MzcxMDNlNjg4MDQwNGVkNDQzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFNo
YXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgRHJhZ0FuZERyb3BI
YW5kbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEcmFnQW5kRHJvcEhhbmRsZXIpOwogcHVibGljOgogICAgIERyYWdBbmREcm9wSGFu
ZGxlcihXZWJQYWdlUHJveHkmKTsKQEAgLTY0LDYgKzY1LDcgQEAgY2xhc3MgRHJhZ0FuZERyb3BI
YW5kbGVyIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgRHJvcHBpbmdDb250ZXh0IHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBEcm9wcGluZ0NvbnRl
eHQoR2RrRHJhZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pOwog
CiAgICAgICAgIEdka0RyYWdDb250ZXh0KiBnZGtDb250ZXh0IHsgbnVsbHB0ciB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKaW5kZXgg
Y2JlMzgwYjI0MGQ5NjAxMTE3MjdiNzcwYTgyNWUwOWUwNTQ3YzllZC4uYzNkOTk3M2M3MGRjMjA4
OWM2ODNkNjVhOTEzZGEyOTRkNWZmZWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBAIC00MjAsOSArNDIwLDkgQEAgYm9vbCBX
YXlsYW5kQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9w
ZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5H
TEVTPihudWxscHRyLCAgZmFsc2UpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RP
cGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4o
bnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMz
RE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBtYWtl
VW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCkt
PnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAgaWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNf
RUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAgICAgIGdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DPihlZ2xH
ZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5t
bQppbmRleCBjMjM0MTFjMWYwOWIwMTBhNjUyNTRiMzY5ZGQzMTY5ZDMxZjBjMGUwLi42MWU4NTk0
ZDViN2M0MWFhZjlmYzgyYzY1MzhkYjlhZDcxODU2MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCkBAIC01OCw3
ICs1OCw3IEBAIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjp+RWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIoKQogRWRpdGFibGVJbWFnZSYgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmVuc3VyZUVkaXRh
YmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRW
aWV3SUQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2VkaXRhYmxlSW1hZ2VzLmVuc3VyZShlbWJl
ZGRlZFZpZXdJRCwgWyZdIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+
IGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxFZGl0YWJsZUltYWdlPigpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1h
Z2U+KCk7CiAgICAgICAgIGltYWdlLT5kcmF3aW5nVmlldyA9IG1fd2ViUGFnZVByb3h5LT5wYWdl
Q2xpZW50KCkuY3JlYXRlRHJhd2luZ1ZpZXcoZW1iZWRkZWRWaWV3SUQpOwogICAgICAgICByZXR1
cm4gaW1hZ2U7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQppbmRleCBkMDNhMTcy
NmFiMzM0YTAwZTYwZmJjMDUwYjUwZTVjMzM3NWFmNzIwLi43ZjBmOTQ4NGZkNzc3NGRkMTE1N2Fl
Mjg4NWM5MGEzYmYyZWU3OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KQEAgLTY1LDcg
KzY1LDcgQEAgLSAodm9pZClkaWRNb3ZlVG9XaW5kb3cKICAgICBpZiAoIXNlbGYuX2NvbnRlbnRW
aWV3LndpbmRvdyB8fCBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4oc2VsZiwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRp
ZEVudGVyQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hv
dHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kKSk7CisgICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyID0gbWFrZVVu
aXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0b3IoX2Fw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEZp
bmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsKICAgICAKICAgICBpZiAoX2xhc3RPYnNlcnZl
ZFN0YXRlV2FzQmFja2dyb3VuZCAmJiAhW3NlbGYgaXNCYWNrZ3JvdW5kXSkKICAgICAgICAgW3Nl
bGYgX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZF07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDY4MTFlODdhNGE0MjEwMDViZDk0YTdh
YzIxNjU0M2VjYzAwYTc3ZmMuLjQzMWZhY2QxZTY4Mzk3ZWM4NTczOTFhYjFjZjg4OGQzODQxNTdh
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBA
IC0xNjcsNyArMTY3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHIKICAgICBfcGFnZS0+c2V0
RGVsZWdhdGVzU2Nyb2xsaW5nKHRydWUpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQot
ICAgIF9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpG
dWxsc2NyZWVuQ2xpZW50Pihfd2ViVmlldykpOworICAgIF9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xp
ZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pihfd2ViVmlldykpOwogI2Vu
ZGlmCiAKICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkud2tWaWV3Q291
bnQrKzsKQEAgLTIzOSw3ICsyMzksNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJgogCiAgICAg
V2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOworICAgIF9w
YWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJW
aWV3KTsKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAKICAgICByZXR1cm4gW3NlbGYgX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246
V1RGTW92ZShjb25maWd1cmF0aW9uKV07CkBAIC01NDEsNyArNTQxLDcgQEAgLSAodm9pZClfd2Vi
Vmlld0Rlc3Ryb3llZAogCiAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVBy
b3h5PilfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHkmKXBy
b2Nlc3MKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UsIHBy
b2Nlc3MpOwogfQogCiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
OWUxNmNjYmZkNmIyMDFjYjU5ZjczODdhYmFmZjgxOGI1NTYwNjk3Mi4uZDNlZGEzNjljMDM3MWMx
ZjJjMTNhMWQwNTk5MTVkYjZkZDVlOTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04MDYsNyArODA2
LDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgCiAgICAgX2FjdGlvblNoZWV0QXNz
aXN0YW50ID0gYWRvcHROUyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRo
VmlldzpzZWxmXSk7CiAgICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBzZXREZWxlZ2F0ZTpzZWxm
XTsKLSAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyPihzZWxmKTsKKyAgICBfc21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyPihzZWxmKTsKICAgICBfaXNFeHBlY3RpbmdGYXN0U2luZ2xlVGFwQ29t
bWl0ID0gTk87CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBOTzsKICAgICBfaXNEb3Vi
bGVUYXBQZW5kaW5nID0gTk87CkBAIC04MjEsNyArODIxLDcgQEAgLSAodm9pZClzZXR1cEludGVy
YWN0aW9uCiAjZW5kaWYKIAogI2lmIEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVYVF9DSEVDS0lO
RykKLSAgICBfdGV4dENoZWNraW5nQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyPigqX3BhZ2UpOworICAgIF90ZXh0Q2hlY2tpbmdDb250
cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFn
ZSk7CiAjZW5kaWYKIAogICAgIF9oYXNTZXRVcEludGVyYWN0aW9ucyA9IFlFUzsKQEAgLTExOTYs
NyArMTE5Niw3IEBAIC0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3CiAgICAg
ICAgIHJldHVybiBOTzsKIAogICAgIGlmICghX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyKQotICAg
ICAgICBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOworICAgICAgICBfaW5wdXRWaWV3VXBkYXRl
RGVmZXJyZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNl
bGYpOwogCiAgICAgQk9PTCBkaWRCZWNvbWVGaXJzdFJlc3BvbmRlcjsKICAgICB7CkBAIC01MzEx
LDcgKzUzMTEsNyBAQCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQogICAgICAgICAvLyBEZWZlciB2
aWV3IHVwZGF0ZXMgdW50aWwgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIGEgbm90
aWNlYWJsZSBmbGFzaCB3aGVuIHN3aXRjaGluZyBmb2N1cwogICAgICAgICAvLyBiZXR3ZWVuIGVs
ZW1lbnRzIHRoYXQgcmVxdWlyZSB0aGUga2V5Ym9hcmQuCiAgICAgICAgIGlmICghaW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIpCi0gICAgICAgICAgICBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7Cisg
ICAgICAgICAgICBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJ
bnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CiAgICAgICAgIFtzZWxmIF9lbGVtZW50RGlk
Qmx1cl07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQppbmRleCBiMDI4MjQ4OTIwMDNhMDQ5ODkyOWU3MDZhNTkwNDU5YTRmODcxYWNk
Li5jMDhmOTc4NmYwZWFhYjRhOTc1YmI1NjQ4Yzc0MjdjNTYzNmRiZTE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTkxMiw3ICs5MTIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24mIGluZm9ybWF0aW9uLAogICAgIEFQSTo6T2JqZWN0KiB1c2VyRGF0YU9i
amVjdCA9IHByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKTsKICAgICBpZiAobV9lZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBlbGltaW5hdGUgbV9kZWZl
cnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyBhbHRvZ2V0aGVyLCBpbiBmYXZvciBvZiBvbmx5
IGRlZmVycmluZyBhY3Rpb25zIHRoYXQgYXJlIGRlcGVuZGVudCBvbiBwb3N0LWxheW91dCBlZGl0
b3Igc3RhdGUgaW5mb3JtYXRpb24uCi0gICAgICAgIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNB
cmd1bWVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cz4oRWxl
bWVudERpZEZvY3VzQXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBi
bHVyUHJldmlvdXNOb2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgdXNlckRhdGFPYmplY3QgfSk7
CisgICAgICAgIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgPSBtYWtlVW5pcXVl
PEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cz4oRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIHsgaW5m
b3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCBhY3Rpdml0eVN0
YXRlQ2hhbmdlcywgdXNlckRhdGFPYmplY3QgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTEyNTgsNyArMTI1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dv
cmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXCiAKIHN0ZDo6dW5p
cXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gV2ViUGFnZVByb3h5OjpwYXlt
ZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5JiBwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgUEtQYXltZW50UmVxdWVzdCAqcGF5bWVu
dFJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1
ZXN0KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyPihwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QpOwogfQogCiBV
SVZpZXdDb250cm9sbGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3Jl
ZW5WaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2Ny
ZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCmluZGV4IDhiMTIzYjBhOTdjMDMwZTk0
NTBmNWVkNGY4YzE3NGIzMjFiYjQwN2IuLjhmZjhhMGJmNDc1YjNmN2IyMzYyMjlmNDEyZTNmMzI2
NmNmOTU5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2Ny
ZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCkBAIC04
OCw2ICs4OCw3IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJv
bGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyICpwYXJlbnQpIHsgbV9w
YXJlbnQgPSBwYXJlbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDgzNDM0ODg5Y2RjZjI0OWMxYzI3OTFiZDA3YmZmZmEy
MDFjZjQ4N2QuLmE5MTI5NTNlYzkxYzI3MzM2MjY3NjNkYWY5ZGEyNmIyNDkzM2M2ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAg
LTEwOCw3ICsxMDgsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoTlNWaWV3KiB2
aWV3LCBXS1dlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBQYWdlQ2xpZW50SW1wbENvY29hKHdlYlZp
ZXcpCiAgICAgLCBtX3ZpZXcodmlldykKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykK
LSAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIobWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCiAjZW5k
aWYKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggNDNlOWY5NjdiYzg5NzdmYmZmOGM4
NjY4YTVjY2ExZjM4MjRjMDgwOS4uMzRhNjliYmUwYmIwZDE3NmI1NTFiYWYyZDdhMzVjMWZhYWMw
MzdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTU0LDYgKzU0LDcgQEAgc3RhdGljIGNv
bnN0IE5TVGltZUludGVydmFsIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudCA6IFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNl
dFBhcmVudChXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQg
PSBwYXJlbnQ7IH0KIApAQCAtMTUwLDcgKzE1MSw3IEBAIC0gKGlkKWluaXRXaXRoV2luZG93OihO
U1dpbmRvdyAqKXdpbmRvdyB3ZWJWaWV3OihOU1ZpZXcgKil3ZWJWaWV3IHBhZ2U6KFdlYktpdDo6
CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogICAgIF9wYWdlID0gJnBhZ2U7CiAKLSAgICBfdmlk
ZW9GdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4oKTsKKyAgICBfdmlk
ZW9GdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4oKTsKICAgICBfdmlkZW9GdWxs
c2NyZWVuQ2xpZW50LT5zZXRQYXJlbnQoc2VsZik7CiAKICAgICBbc2VsZiB2aWRlb0NvbnRyb2xz
TWFuYWdlckRpZENoYW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
VGV4dEZpbmRlckNsaWVudC5tbQppbmRleCA2NjAzMTdjMmZiYzc5YjY4YmI1YjczNDc2YTU4YmVm
ZWEwOWIwNmQzLi42OWQ5ZDllMmQ0NDQ4NDNkMTUyNzBmNTExN2Y3NzRjZDIzN2Q1ZGI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0K
QEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogY2xhc3MgVGV4dEZpbmRlckZpbmRDbGllbnQgOiBwdWJsaWMgQVBJOjpGaW5kTWF0
Y2hlc0NsaWVudCwgcHVibGljIEFQSTo6RmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dEZpbmRlckZpbmRDbGllbnQoV0tU
ZXh0RmluZGVyQ2xpZW50ICp0ZXh0RmluZGVyQ2xpZW50KQogICAgICAgICA6IG1fdGV4dEZpbmRl
ckNsaWVudCh0ZXh0RmluZGVyQ2xpZW50KQpAQCAtMTY4LDggKzE2OSw4IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFBhZ2U6KFdlYktpdDo6V2ViUGFnZVByb3h5JilwYWdlIHZpZXc6KE5TVmll
dyAqKXZpZXcgdXNlCiAgICAgX3ZpZXcgPSB2aWV3OwogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9
IHVzZVBsYXRmb3JtRmluZFVJOwogICAgIAotICAgIF9wYWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsK
LSAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dEZp
bmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZE1hdGNoZXNDbGllbnQo
bWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CisgICAgX3Bh
Z2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50
PihzZWxmKSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggZWQw
ZDVmZmU5NTg5Zjk1ZTQ0YTA3ZjIyMThlZDgyYzAwZjAxN2Q3ZS4uZTc0YWRhYzFlNjVlYmU1Yzk5
YjMxZDkwNjdhZTYxMTU4ZjM5ODdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE0Myw3ICsxNDMs
NyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6ZGlkQ2xvc2UoQ29ubmVjdGlvbklEKQog
dm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QoQ29ubmVjdGlvbklEIGNvbm5lY3Rp
b25JRCwgVGFyZ2V0SUQgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJlKHN0ZDo6bWFrZV9wYWlyKGNv
bm5lY3Rpb25JRCwgdGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCwgJnR5
cGVdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJv
eHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRh
cmdldElELCB0eXBlKTsKICAgICB9KTsKIAogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMWI2ZDljYzU0ZmM2MGI1
M2U0NDAyNzFmMjMwOGU3YzBmNDdjODc0Yy4uYTg4MzNmNjI0ODdmOWE2NzIxMDM5OWVjOWY4ZmY1
ZTA5MjcxMmVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTg0LDEx
ICs4NCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1T
dGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8qIGNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVzdFVSTC5ob3N0
QW5kUG9ydCgpLCBbdGhpcywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCku
ZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRm
OCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwogICAgIH0pLml0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIAogICAgIC8vIFNldHVwIHRhcmdldCBwb3N0TWVzc2FnZSBs
aXN0ZW5lcgotICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVh
dGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0
b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIGF1dG8gaGFu
ZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRN
ZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6
Om5vcm1hbFdvcmxkKCkpOwogICAgIHBhZ2VQcm94eS5wYWdlR3JvdXAoKS51c2VyQ29udGVudENv
bnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAK
ICAgICBTdHJpbmdCdWlsZGVyIGh0bWxCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKaW5kZXggYjY3ZDczYTRkYzQ4
OGIzMWZkYzlhNDcyMTk2OTE0MDQyNzQ0ODgyNS4uNWQ1MGFlNTU0NjgwYTZlOWUzZGEyY2U4NGJl
NTY0ZDVjMzIzN2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0Jh
Y2tpbmdTdG9yZURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
QmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJE
PiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw+KG1fc2l6ZSwgbV9kZXZpY2VT
Y2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZERp
cmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBCYWNr
aW5nU3RvcmU6OnBhaW50KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFn
ZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJ
bXBsLmNwcAppbmRleCBjZDZmMDhmZjE4YmQ1NWMxNTU0NDYzZDRhNDBiNTFlNDViMmVhYjlmLi4w
MzA3YzRmOWYxNDNmODZkYzYyMDhiNDg0YmU4ZGI0MjJkYzBmNDE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdlYlZpZXcmIHZpZXcpCiAvLyBQYWdlQ2xp
ZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVh
UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKm1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigq
bV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZp
ZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggY2Q1MzUyZGY3YWEwNGU2OWQ5YjBmOThl
ZDAwMWU1YzYzMzJmNzU5My4uNjdlNWU0YjI3YTNhZTgwYWI2NjhmNmMzNDE3YzBmMGNlNmI3ZjA1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtMjE4LDcgKzIx
OCw3IEBAIGJvb2wgV2ViVmlldzo6cmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MoKQogfQogCiBX
ZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbiwgSFdORCBwYXJlbnRXaW5kb3cpCi0gICAgOiBtX3BhZ2VDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQorICAgIDogbV9wYWdlQ2xpZW50
KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKIHsKICAgICByZWdpc3RlcldlYlZp
ZXdXaW5kb3dDbGFzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggYjZkNGEwNDIwZDVhNWRi
ZDY0NjA4M2FmNjc4ODA1MWJmNmNjNDdlMC4uZjJkNjJlYTk3OTBmODA3YTY1YjVkM2U1OGY4MGI5
N2YwNmFkYmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQYXlt
ZW50Q29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVNlbmRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZnJp
ZW5kIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBleHBsaWNpdCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3IoV2ViUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggNGY4MTBjY2YzOGVj
ZmEyYzk5ZWNiZGE4OWQwNDFjZWI4ZDIzMzNiOC4uYWFiMzQ1N2NlZDY0YTVhOTEwY2RjNTYyYWNj
MDExNTAwZDNjNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVw
YWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2Vi
R2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsR2FtZXBhZHMoY29uc3QgVmVjdG9yPEdhbWVwYWRE
YXRhPiYgZ2FtZXBhZERhCiAgICAgICAgIGlmIChnYW1lcGFkRGF0YXNbaV0uaXNOdWxsKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtX2dhbWVwYWRzW2ldID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YXNbaV0pOworICAgICAgICBtX2dhbWVwYWRz
W2ldID0gbWFrZVVuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YXNbaV0pOwogICAgICAgICBt
X3Jhd0dhbWVwYWRzW2ldID0gbV9nYW1lcGFkc1tpXS5nZXQoKTsKICAgICB9CiB9CkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVkKGNvbnN0
IEdhbWVwYWREYXRhJiBnYW1lcGFkRGF0YSkKIAogICAgIEFTU0VSVCghbV9nYW1lcGFkc1tnYW1l
cGFkRGF0YS5pbmRleCgpXSk7CiAKLSAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCld
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YSk7CisgICAgbV9nYW1l
cGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IG1ha2VVbmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBh
ZERhdGEpOwogICAgIG1fcmF3R2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBtX2dhbWVw
YWRzW2dhbWVwYWREYXRhLmluZGV4KCldLmdldCgpOwogCiAgICAgZm9yIChhdXRvKiBjbGllbnQg
OiBtX2NsaWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oCmluZGV4IGZkNjUyM2Q2ZmE3ZDc1OTNkMWI4ZDNiMzJiYWI0NjNhOTY4ZWFhMjguLjYz
M2YyMmZkZmU0MjcyYjM5ZGUyNWVhMGU0YTBhMDRkN2NkZTZjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0zNyw2ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdl
YlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IDBiYjRmMmI0MjFhM2VjMjI4
NzU0ZTYzODI5ZDQxYWJiZTJlMDZmOGQuLmE2YzI4NzE2YWIxNjc4YWZkZDU3NGM5ZGY5ZmUyODY4
NjM0NjMwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xh
c3MgV2ViUHJvY2VzczsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFu
YWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdl
Ykdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRl
eCBmM2VjNzIwODdjYTI4ODY3ZjU0ZDlkZjBmNTBkODcxMDJlMDE2ZmEyLi5jYTg1ZDU4NWRjZjFi
NzZlZjBiOGQxMWQ1OWFkNjYwNGFjM2YxODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVHZXRUeXBlSUQoKQogCiB2b2lkIFdLQnVuZGxl
U2V0Q2xpZW50KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVDbGllbnRCYXNlICp3a0Ns
aWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5zZXRDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOworICAg
IFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnNldENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRT
ZXJ2aWNlV29ya2VyUHJveHlDcmVhdGlvbkNhbGxiYWNrKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwg
dm9pZCAoKmNhbGxiYWNrKSh1aW50NjRfdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmlu
ZGV4IGYxMmE1YmE3NzRkNmNjNjhkMDg0ZjFmNjAyMWNlYmYzODFhYTNhNTguLmRjMDc1OGFkNzVh
ZjM2MWRmYmU4MTZlYjExM2Y0MWM3ZjA5ZDgxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpCiB2
b2lkIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJ
bmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJL
aXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCht
YWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHdr
Q2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURf
UEFSQU0od2tDbGllbnQpOwpAQCAtODYsMjIgKzg2LDIyIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0
Q29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNv
bnRlCiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBX
ZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQod2tD
bGllbnQgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50Pigqd2tDbGllbnQpIDogc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpFZGl0b3JDbGllbnQ+KCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVudCA/IG1ha2VVbmlxdWU8V2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdl
U2V0Rm9ybUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRm9ybUNs
aWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJ
bmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFn
ZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZVBhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChw
YWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Pih3
a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50QmFz
ZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVk
QnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHdrQ2xp
ZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAg
LTExMSw3ICsxMTEsNyBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZQogCiB2b2lkIFdLQnVuZGxl
UGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VVSUNs
aWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJ
bmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVm
KS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVQYWdlVUlDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0
RnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRnVs
bFNjcmVlbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZU92ZXJsYXkuY3BwCmluZGV4IGViZDNlZjVmMjkzMDhjMTQxOTNhMTgxYjdlMWU0YTQyNWZkMjFk
ZDIuLjY5ZjdhZjIyYjU2NzUwNGQ0ZjMxZjBkN2E3MGI4NzRlMDlmYTU1YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5
Q2xpZW50QmFzZT4gewogfQogCiBjbGFzcyBQYWdlT3ZlcmxheUNsaWVudEltcGwgOiBBUEk6OkNs
aWVudDxXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZT4sIHB1YmxpYyBXZWJLaXQ6OldlYlBh
Z2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFBhZ2VPdmVybGF5Q2xpZW50SW1wbChXS0J1bmRsZVBhZ2VPdmVybGF5
Q2xpZW50QmFzZSogY2xpZW50KQogICAgIHsKQEAgLTIxNiw3ICsyMTcsNyBAQCBXS1R5cGVJRCBX
S0J1bmRsZVBhZ2VPdmVybGF5R2V0VHlwZUlEKCkKIAogV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBX
S0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiB3
a0NsaWVudCkKIHsKLSAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VP
dmVybGF5Q2xpZW50SW1wbD4od2tDbGllbnQpOworICAgIGF1dG8gY2xpZW50SW1wbCA9IG1ha2VV
bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7CiAgICAgcmV0dXJuIHRvQVBJ
KCZXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpjcmVhdGUoV1RGTW92ZShjbGllbnRJbXBsKSkubGVh
a1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5l
ck1hYy5tbQppbmRleCBhY2MzNWEyMWI1OWYxYWEzMWUzMzA1MWE2NmJjMTMwNTk5NjY5OWQzLi5k
NmZmZDFjY2MwNGE5M2E3YTA5ZDJiMzY1NTlhOGYwYzA5NTBmZjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFn
ZUJhbm5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQpAQCAtNDMsNiArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBQYWdl
QmFubmVyQ2xpZW50SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJh
c2U+LCBwdWJsaWMgUGFnZUJhbm5lcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlQmFubmVyQ2xpZW50SW1wbChXS0J1bmRs
ZVBhZ2VCYW5uZXJDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAtMTAzLDcgKzEwNCw3IEBA
IFdLQnVuZGxlUGFnZUJhbm5lclJlZiBXS0J1bmRsZVBhZ2VCYW5uZXJDcmVhdGVCYW5uZXJXaXRo
Q0FMYXllcihDQUxheWVyICpsYXllciwKICAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZl
cnNpb24pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXV0byBjbGllbnRJbXBsID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VCYW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAg
YXV0byBjbGllbnRJbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VCYW5uZXJDbGllbnRJbXBs
Pih3a0NsaWVudCk7CiAgICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6OlBhZ2VCYW5uZXI6OmNyZWF0
ZShsYXllciwgaGVpZ2h0LCBjbGllbnRJbXBsLnJlbGVhc2UoKSkubGVha1JlZigpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcAppbmRleCA0MjEwMWY4
YzgyY2IyYTU0ODNiYWU0ZGM4NDgwN2I0MTY1YTkyZDg2Li4yMmI0MGU0MzliYmI2MDE1ZTE4YWE4
YzI1NThlMGU2OTNmNWViMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVj
dENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVj
dCBET01PYmplY3RDYWNoZURhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICBET01PYmplY3RDYWNoZURhdGEoR09iamVjdCogd3JhcHBlcikKICAgICAgICAgOiBv
YmplY3Qod3JhcHBlcikKICAgICAgICAgLCBjYWNoZVJlZmVyZW5jZXMoMSkKQEAgLTc3LDE1ICs3
OCw4IEBAIHN0YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXAmIGRvbU9iamVjdENh
Y2hlRnJhbWVPYnNlcnZlcnMoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBET01PYmpl
Y3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKLXsKLSAgICBET01PYmplY3RDYWNoZUZyYW1lT2Jz
ZXJ2ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJz
KCkuYWRkKCZmcmFtZSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXI+KGZyYW1lKTsKLSAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7Ci19Ci0KIGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVi
bGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdl
YkNvcmU6OkZyYW1lJiBmcmFtZSkKICAgICAgICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIo
JmZyYW1lKQpAQCAtMTA1LDcgKzk5LDcgQEAgY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmUKICAgICAg
ICAgaWYgKGRvbVdpbmRvdyAmJiAoIW1fZG9tV2luZG93T2JzZXJ2ZXIgfHwgbV9kb21XaW5kb3dP
YnNlcnZlci0+d2luZG93KCkgIT0gZG9tV2luZG93KSkgewogICAgICAgICAgICAgLy8gTmV3IERP
TVdpbmRvdywgY2xlYXIgdGhlIGNhY2hlIGFuZCBjcmVhdGUgYSBuZXcgRE9NV2luZG93T2JzZXJ2
ZXIuCiAgICAgICAgICAgICBjbGVhcigpOwotICAgICAgICAgICAgbV9kb21XaW5kb3dPYnNlcnZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlz
KTsKKyAgICAgICAgICAgIG1fZG9tV2luZG93T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERPTVdpbmRv
d09ic2VydmVyPigqZG9tV2luZG93LCAqdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBtX29i
amVjdHMuYXBwZW5kKCZkYXRhKTsKQEAgLTE5MSw2ICsxODUsMTQgQEAgY2xhc3MgRE9NT2JqZWN0
Q2FjaGVGcmFtZU9ic2VydmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlv
bk9ic2VydmUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NV2luZG93T2JzZXJ2ZXI+IG1fZG9tV2lu
ZG93T2JzZXJ2ZXI7CiB9OwogCitzdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyJiBn
ZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJh
bWUpCit7CisgICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwOjpBZGRSZXN1bHQgcmVz
dWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpLmFkZCgmZnJhbWUsIG51bGxwdHIp
OworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyPihmcmFtZSk7Cisg
ICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCiB0eXBlZGVmIEhhc2hNYXA8
dm9pZCosIHN0ZDo6dW5pcXVlX3B0cjxET01PYmplY3RDYWNoZURhdGE+PiBET01PYmplY3RNYXA7
CiAKIHN0YXRpYyBET01PYmplY3RNYXAmIGRvbU9iamVjdHMoKQpAQCAtMjE1LDcgKzIxNyw3IEBA
IHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dCh2b2lkKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBw
ZXIpCiB7CiAgICAgRE9NT2JqZWN0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0cygp
LmFkZChvYmplY3RIYW5kbGUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkK
LSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2Jq
ZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBl
cikpOwogfQogCiB2b2lkIERPTU9iamVjdENhY2hlOjpwdXQoV2ViQ29yZTo6Tm9kZSogb2JqZWN0
SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQpAQCAtMjI0LDcgKzIyNiw3IEBAIHZvaWQgRE9NT2JqZWN0
Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCiAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihH
X09CSkVDVCh3cmFwcGVyKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CiAgICAgaWYgKFdlYkNv
cmU6OkZyYW1lKiBmcmFtZSA9IG9iamVjdEhhbmRsZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAg
ICAgICBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcigqZnJhbWUpLmFkZE9i
amVjdENhY2hlRGF0YSgqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0
ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggNGNjZWM2MmVmMGUx
MTMxZmExM2Y3ZmIwNjBjODBlMDdlZTQyNTFhZi4uNGQ3NDJlNDA5YmJmYzdjZmFiNDA4Y2Q2NTM4
YWVmOWYyMjhmZDcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNp
b25NYW5hZ2VyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViS2l0RXh0ZW5zaW9uTWFu
YWdlcjo6aW5pdGlhbGl6ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBBUEk6Ok9iamVjdCogdXNl
CiAgICAgc2Nhbk1vZHVsZXMod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgbW9kdWxlUGF0aHMpOwog
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgewot
ICAgICAgICBhdXRvIG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtb2R1bGVQYXRo
c1tpXSk7CisgICAgICAgIGF1dG8gbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KG1vZHVsZVBh
dGhzW2ldKTsKICAgICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbihtb2R1bGUuZ2V0KCksIHVz
ZXJEYXRhLmdldCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKaW5k
ZXggMDQwNzJlYjg2NGRiZTM1ZjgwZGZjODZhZDBlODgzYzNlOTljZTQ0Zi4uY2NiNTFlMGQ5NjQw
YzY2Zjg1OTZlNDc0MTcxNDA1OGU5MTM5NzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYkVkaXRvci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRX
ZWJFZGl0b3JDcmVhdGUoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIHsKICAgICBXZWJLaXRXZWJF
ZGl0b3IqIGVkaXRvciA9IFdFQktJVF9XRUJfRURJVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfRURJVE9SLCBudWxscHRyKSk7CiAgICAgZWRpdG9yLT5wcml2LT53ZWJQYWdlID0gd2Vi
UGFnZTsKLSAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+c2V0SW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50PihlZGl0b3Ip
KTsKKyAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+c2V0SW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQobWFrZVVuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50PihlZGl0b3IpKTsKICAgICBy
ZXR1cm4gZWRpdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNp
b24uY3BwCmluZGV4IDRhMjNiZjU2MDEwN2MzMWYxYTRkZTJjOTYxMjk5YTcwMTA4MTc1MDEuLmUz
MDZlM2ZlZjI2MzFkNTQ2NjU1NzExNmU1ZTQ4N2QzNzFjNzg1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRl
bnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgY2xhc3Mg
V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6Q2xpZW4KIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9u
Q3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiB7CiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9u
KiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfV0VCX0VYVEVOU0lPTiwgTlVMTCkpOwotICAgIGJ1bmRsZS0+c2V0Q2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4dGVuc2lvbikpOwor
ICAgIGJ1bmRsZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KGV4dGVuc2lvbikpOwogICAgIHJldHVybiBleHRlbnNpb247CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCBjZmM1MDMxZWQ2ZTRhMjk1NGZlMDJh
MDNkYTg3YTE2MWNkMmQzMDgyLi5jOTIwNGIyMzk4MWQ3ZjE3YWQwNzNiOWVkNDEyYTg3NzY4NWNl
N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC05NSw2ICs5NSw3
IEBAIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJQYWdlLCB3ZWJraXRfd2ViX3BhZ2UsIEdf
VFlQRV9PQkpFQ1QpCiBzdGF0aWMgdm9pZCB3ZWJGcmFtZURlc3Ryb3llZChXZWJGcmFtZSopOwog
CiBjbGFzcyBXZWJLaXRGcmFtZVdyYXBwZXIgZmluYWw6IHB1YmxpYyBGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdl
YktpdEZyYW1lV3JhcHBlcihXZWJGcmFtZSYgd2ViRnJhbWUpCiAgICAgICAgIDogRnJhbWVEZXN0
cnVjdGlvbk9ic2VydmVyKHdlYkZyYW1lLmNvcmVGcmFtZSgpKQpAQCAtMTI4LDcgKzEyOSw3IEBA
IHN0YXRpYyBXZWJLaXRGcmFtZSogd2Via2l0RnJhbWVHZXRPckNyZWF0ZShXZWJGcmFtZSogd2Vi
RnJhbWUpCiAgICAgaWYgKHdyYXBwZXJQdHIpCiAgICAgICAgIHJldHVybiB3cmFwcGVyUHRyLT53
ZWJraXRGcmFtZSgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEZyYW1lV3JhcHBlcj4g
d3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RnJhbWVXcmFwcGVyPigqd2ViRnJhbWUp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+IHdyYXBwZXIgPSBtYWtl
VW5pcXVlPFdlYktpdEZyYW1lV3JhcHBlcj4oKndlYkZyYW1lKTsKICAgICB3cmFwcGVyUHRyID0g
d3JhcHBlci5nZXQoKTsKICAgICB3ZWJGcmFtZU1hcCgpLnNldCh3ZWJGcmFtZSwgV1RGTW92ZSh3
cmFwcGVyKSk7CiAgICAgcmV0dXJuIHdyYXBwZXJQdHItPndlYmtpdEZyYW1lKCk7CkBAIC02Nzgs
MTEgKzY3OSwxMSBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBhZ2Uq
IHdlYlBhZ2UpCiAgICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IFdFQktJVF9XRUJfUEFHRShnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1BBR0UsIE5VTEwpKTsKICAgICBwYWdlLT5wcml2LT53
ZWJQYWdlID0gd2ViUGFnZTsKIAotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3Vy
Y2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFn
ZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJ
bmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnRl
eHRNZW51Q2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VVSUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2Ut
PnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VGb3JtQ2xp
ZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRD
bGllbnQobWFrZVVuaXF1ZTxQYWdlUmVzb3VyY2VMb2FkQ2xpZW50PihwYWdlKSk7CisgICAgd2Vi
UGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUxv
YWRlckNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlQ29udGV4
dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKKyAg
ICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1ha2VVbmlxdWU8UGFnZVVJQ2xp
ZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1h
a2VVbmlxdWU8UGFnZUZvcm1DbGllbnQ+KHBhZ2UpKTsKIAogICAgIHJldHVybiBwYWdlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tET01UZXh0SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQppbmRleCA4MTA1NWNlN2ZkZWJh
MzE4ZGFiMDY4MjYzNGM2YmQ4NGEzN2ZhZThjLi4wODRmMzAwNWQ2MTAzZDRlMjUwMzNjMjU2Yzcw
YzBlMDY0MDQxY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQpA
QCAtNDUsNyArNDUsNyBAQCAtIChpZClpbml0V2l0aFJhbmdlOihXS0RPTVJhbmdlICopcmFuZ2UK
ICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfdGV4dEl0ZXJhdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KFdlYktpdDo6dG9XZWJD
b3JlUmFuZ2UocmFuZ2UpKTsKKyAgICBfdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpUZXh0SXRlcmF0b3I+KFdlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFuZ2UpKTsKICAgICByZXR1
cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDQ4ODAw
YmIzMTc5MDY1ZTRlNzMyOTMwNjkwNTQ2ODBlNDM0YWYxZmYuLjQyMDIzOTZhYmFmYWYzMGQ3MTg5
YWViNjg1MDllYTI3MTcxYjk3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0K
QEAgLTU0NCw3ICs1NDQsNyBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxXS1dlYlBy
b2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVsZWdhdAogICAgIH07CiAKICAg
ICBpZiAoZm9ybURlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOworICAgICAgICBfcGFn
ZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4oc2Vs
ZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVu
dChudWxscHRyKTsKIH0KQEAgLTY3Myw3ICs2NzMsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVs
ZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxl
ZwogICAgIH07CiAKICAgICBpZiAoZWRpdGluZ0RlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnQ+KHNlbGYp
KTsKKyAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG1ha2VVbmlx
dWU8Q2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAy
MGNlNTU5MTFkNzA2NTFjMzM1YTcwYWNmMjRlNWJkZmMyMWJkNjMxLi45OTc5ZDYzODRkZmY1Yzk4
MDU5MWYyOTA4M2M5MzcyOTYzNDRhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVkQnVuZGxlOjpjcmVhdGUo
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogSW5qZWN0ZWRCdW5kbGU6OkluamVj
dGVkQnVuZGxlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiAgICAgOiBtX3BhdGgocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgLCBtX3Bs
YXRmb3JtQnVuZGxlKDApCi0gICAgLCBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OkNsaWVudD4oKSkKKyAgICAsIG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpKQogewogfQogCkBAIC0xMTQsNyArMTE0LDcgQEAgSW5q
ZWN0ZWRCdW5kbGU6On5JbmplY3RlZEJ1bmRsZSgpCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRD
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4mJiBjbGll
bnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCk7CiAgICAgZWxzZQogICAg
ICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuaAppbmRleCAwY2E1ZWE2ZDJhYmU1NzIxNTRkMjFiZWQwY2M5YTA1M2U3ZDY2YzE4Li5i
ZmIzZDA0NTE0MzczNmMzMWRmOTg4YWIxYjAwZGU0MmI4NTMwODk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViUHJvY2VzczsKIAogY2xhc3MgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciA6IHB1Ymxp
YyBXZWJQcm9jZXNzU3VwcGxlbWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcik7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcihXZWJQcm9jZXNzJikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXgg
ZDdjNWM2ODM0NGI3MjczOGQ5NDk3ZGYwMTJjYTM3NmJiODQxODhkYS4uYjBiZDUzNGNlMTlkNzM4
NjFkODE3NmE4MjA1Y2RjZTYxOTVmZDA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI+LCBwcml2YXRlIFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKICAgICB+VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA3MzM1Mjc2NTg3MWQ4MjU1
YTIzZGI3YjU1ZTZkNDRlZTczMzkyMmQ3Li4yZTU3YWYyNDgzYmQzNmIzZGQ4NWU0ZWMxOGRkZTEw
ZjQ0MzZlODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTMyLDM4ICsxMzIsMTEgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kTWVzc2FnZShUJiYgbWVzc2FnZSwg
c2l6ZV90IGJ5dGUKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi1XZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVz
dWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAg
IGF1dG8gYnl0ZUxlbmd0aCA9IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAoIWluY3Jl
YXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBTZW5kRmFpbDsK
LQotICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmRNZXNz
YWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IG1lc3NhZ2Ug
fSwgYnl0ZUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2FnZSkpOwotCi0gICAgcmV0
dXJuIFNlbmRTdWNjZXNzOwotfQotCi1XZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNv
Y2tldENoYW5uZWw6OnNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKLXsKLSAgICBpZiAoIWluY3Jl
YXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBTZW5kRmFpbDsK
LQotICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmRNZXNz
YWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFS
ZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkp
ICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01l
c3NhZ2U+KGJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKLQotICAgIHJldHVy
biBTZW5kU3VjY2VzczsKLX0KLQogY2xhc3MgQmxvYkxvYWRlciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpGaWxlUmVhZGVyTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBCbG9iTG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCwg
V2ViQ29yZTo6QmxvYiYgYmxvYiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotICAgICAgICA6IG1fbG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
RmlsZVJlYWRlckxvYWRlcj4oV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlC
dWZmZXIsIHRoaXMpKQorICAgICAgICA6IG1fbG9hZGVyKG1ha2VVbmlxdWU8V2ViQ29yZTo6Rmls
ZVJlYWRlckxvYWRlcj4oV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZm
ZXIsIHRoaXMpKQogICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpCiAgICAgewogICAgICAgICBtX2xvYWRlci0+c3RhcnQoZG9jdW1lbnQsIGJs
b2IpOwpAQCAtMjI2LDcgKzE5OSw3IEBAIGNsYXNzIFBlbmRpbmdNZXNzYWdlIHsKIAogICAgIFBl
bmRpbmdNZXNzYWdlKFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6QmxvYiYg
YmxvYiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAg
ICAgICA6IG1fdHlwZShUeXBlOjpCbG9iKQotICAgICAgICAsIG1fYmxvYkxvYWRlcihzdGQ6Om1h
a2VfdW5pcXVlPEJsb2JMb2FkZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkpCisgICAgICAgICwgbV9ibG9iTG9hZGVyKG1ha2VVbmlxdWU8QmxvYkxvYWRlcj4o
ZG9jdW1lbnQsIGJsb2IsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSkKICAgICB7CiAgICAg
fQogCkBAIC0yNDQsMTMgKzIxNyw0MCBAQCBjbGFzcyBQZW5kaW5nTWVzc2FnZSB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKIH07CiAKK1dlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit7CisgICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOwor
ICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKKyAgICAgICAgcmV0
dXJuIFNlbmRGYWlsOworCisgICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKKyAg
ICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3Ry
aW5nIHsgbWVzc2FnZSB9LCBieXRlTGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGlu
Z01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdlKSk7CisK
KyAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Cit9CisKK1dlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlE
YXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQoreworICAgIGlm
ICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIFNl
bmRGYWlsOworCisgICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAg
c2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRh
LmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CisgICAg
ZWxzZQorICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5n
TWVzc2FnZT4oYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOworCisgICAgcmV0
dXJuIFNlbmRTdWNjZXNzOworfQorCiBXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNv
Y2tldENoYW5uZWw6OnNlbmQoV2ViQ29yZTo6QmxvYiYgYmxvYikKIHsKICAgICAvLyBBdm9pZCB0
aGUgQmxvYiBxdWV1ZSBhbmQgbG9hZGluZyBmb3IgZW1wdHkgYmxvYnMuCiAgICAgaWYgKCFibG9i
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIHNlbmQoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJs
b2Iuc2l6ZSgpLCAxKSwgMCwgMCk7CiAKLSAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obV9kb2N1bWVudC5nZXQoKSwgYmxvYiwgW3Ro
aXNdIHsKKyAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVz
c2FnZT4obV9kb2N1bWVudC5nZXQoKSwgYmxvYiwgW3RoaXNdIHsKICAgICAgICAgd2hpbGUgKCFt
X3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1lc3NhZ2Ug
PSBtX3BlbmRpbmdNZXNzYWdlcy5maXJzdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApp
bmRleCAwOTRhYzcxZjdlNWVmZmFiNzQ4NWZjZWZjYWU1NDg5M2RiM2UwNTA2Li43ZWMzN2NkZjA5
ZDM5MGEzODI3YTY5Y2EzZjYwYTZjMzA1NmRhNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogY2xhc3MgQXN5bmNSZXNvbHZlckZhY3RvcnkgOiBwdWJsaWMgd2VicnRjOjpB
c3luY1Jlc29sdmVyRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2
YXRlOgogICAgIHJ0Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogQ3JlYXRlKCkgZmluYWwKICAg
ICB7CkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIEFzeW5jUmVzb2x2ZXJGYWN0b3J5IDogcHVibGlj
IHdlYnJ0Yzo6QXN5bmNSZXNvbHZlckZhY3RvcnkgewogCiBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0
Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0RmFjdG9yeSwgd2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihv
YnNlcnZlciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0
b3IoKSwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIHN0ZDo6bWFrZV91
bmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpMaWJX
ZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCksICpzb2NrZXRGYWN0b3J5
LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5
PigpKTsKIH0KIAogdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENv
bm5lY3Rpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKaW5kZXggNWQ2MzgzZjZiNTA2NTNiNWM2
NzA3MDcwNWM2YzEwMjg3MGZhMDIzMS4uMzk5MDY5OWQwNzc4ZmViMTdiMGNhOGU2MDc4MTQxMDhh
NWMwMGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OwogCiBjbGFzcyBMaWJX
ZWJSVENSZXNvbHZlciBmaW5hbCA6IHB1YmxpYyBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2Ug
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ1Jl
c29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKaW5kZXggZjhiN2VkMjI5YzRm
NmYyZGMwMzYxMzJjYzk2ZTQxMWVlY2E1NzAyZS4uMjM1ODJkZTc1OWI5ODQ1ZWI3ZmU0MDY0NDM2
NWVmYmMxOWI3NWQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcApAQCAt
NTAsNyArNTAsNyBAQCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29ja2V0QWRkcmVzcyBwcmVwYXJlU29j
a2V0QWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmCiAKIHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldChjb25z
dCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90
IG1heFBvcnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwg
TGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRk
cmVzcygpKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Pigq
dGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6
U2VydmVyVENQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2NrZXRz
LnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2lkZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9IHBy
ZXBhcmVTb2NrZXRBZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rp
b25zKSwgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7CkBAIC02Niw3ICs2Niw3IEBAIHJ0
Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVNlcnZl
clRjcFNvY2tldChjb25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJU
Q1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3Mm
IGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCiB7Ci0gICAgYXV0
byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191
bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVz
cywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2Vi
UlRDU29ja2V0OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKICAg
ICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCiAg
ICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigpLCBh
ZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9uTG9jYWxo
b3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0XSgpIHsKQEAgLTgwLDcgKzgwLDcgQEAg
cnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRw
U29ja2V0KGNvbnN0IHJ0Yzo6U29ja2UKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2Vi
UlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0
QWRkcmVzcyYgbG9jYWxBZGRyZXNzLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZUFk
ZHJlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nJiYgdXNlckFnZW50LCBpbnQg
b3B0aW9ucykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
U29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tl
dDo6VHlwZTo6Q2xpZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MpOworICAgIGF1
dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVl
U29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2Fs
QWRkcmVzcywgcmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENT
b2NrZXQ6OlNUQVRFX0NPTk5FQ1RJTkcpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVu
dGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgcnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50VGNwU29ja2V0
KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFj
dG9yeTo6Y3JlYXRlTmV3Q29ubmVjdGlvblNvY2tldChMaWJXZWJSVENTb2NrZXQmIHNlcnZlclNv
Y2tldCwgdWludDY0X3QgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXIsIGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgcmVtb3RlQWRkcmVzcykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50
aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVy
U29ja2V0LmxvY2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9
IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50
aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVy
U29ja2V0LmxvY2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNldFN0
YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVEVEKTsKICAgICBtX3NvY2tldHMuc2V0
KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCkBAIC0xMTcsNyArMTE3LDcg
QEAgdm9pZCBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpkZXRhY2goTGliV2ViUlRDU29ja2V0JiBz
b2NrZXQpCiAKIHJ0Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogTGliV2ViUlRDU29ja2V0RmFj
dG9yeTo6Y3JlYXRlQXN5bmNSZXNvbHZlcigpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZp
ZXIpOworICAgIGF1dG8gcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1Jlc29sdmVyPigr
K3NfdW5pcXVlUmVzb2x2ZXJJZGVudGlmaWVyKTsKICAgICBhdXRvKiByZXNvbHZlclBvaW50ZXIg
PSByZXNvbHZlci5nZXQoKTsKICAgICBtX3Jlc29sdmVycy5zZXQocmVzb2x2ZXJQb2ludGVyLT5p
ZGVudGlmaWVyKCksIFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4gcmVzb2x2ZXJQb2lu
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDJkMWU4NDI0N2JkMGEzMGM5
NGQxZjJlYTMwMWRkNTVkMDJhNmUwNzYuLmIyNzEzZjQ2YzFmYzEzYzlmMjdiYmUzOWNhNWRjNTE4
NTBiMTgzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViTm90aWZpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJG
dW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggMTZhMWE3ZjgzNDQ2MDUzZjMzZDY1NGU4MzMzMjI5
NTBlZTk5NGQ3Mi4uZDczZjFmMTZmODkwNzY5YzcyY2M5ZGQ0NDBkMjI5MjFmZjVmZmE5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjbGFz
cyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7CiAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1
Y3Rpb25Qcm90ZWN0b3IoTmV0c2NhcGVQbHVnaW4qIHBsdWdpbikKICAgICB7CiAgICAgICAgIGlm
IChwbHVnaW4pCi0gICAgICAgICAgICBtX3Byb3RlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1
Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBs
dWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CisgICAgICAgICAgICBtX3Byb3RlY3RvciA9
IG1ha2VVbmlxdWU8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+
KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CiAgICAgfQogICAg
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA2OWEzYzkzZjEzMjZmYTRj
NmY3ZmViZjhhYjFiMmNhNGM3NzZiYzBlLi41OWY0ODI1MWYyODg1NGM2ZDE2ODBiMWQ2NGRmYWE1
YTQ3YzY4MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAg
dWludDMyX3QgTmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIodW5zaWduZWQgaW50ZXJ2YWws
IGJvb2wgcmVwZWF0LCB2b2lkICgqdGkKICAgICAvLyBGSVhNRTogSGFuZGxlIHdyYXBwaW5nIGFy
b3VuZC4KICAgICB1bnNpZ25lZCB0aW1lcklEID0gKyttX25leHRUaW1lcklEOwogCi0gICAgYXV0
byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFs
LCByZXBlYXQsIHRpbWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+
KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAgICAgCiAgICAg
Ly8gRklYTUU6IEJhc2VkIG9uIHRoZSBwbHVnLWluIHZpc2liaWxpdHksIGZpZ3VyZSBvdXQgaWYg
d2Ugc2hvdWxkIHRocm90dGxlIHRoZSB0aW1lciwgb3IgaWYgd2Ugc2hvdWxkIHN0YXJ0IGl0IGF0
IGFsbC4KICAgICB0aW1lci0+c3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGUwYWJj
MmM3YjQxMjk5MzAwMmJiYWI4YmRmYWI3ZjI2NTFhZGM1N2YuLmI2Yzc2YjZlZDcxNGNhYWEzYTQx
ZGRlNDFjMWQ2YTEwNGZiN2FlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMzA4LDYgKzMw
OCw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiAgICAgVmVjdG9y
PGJvb2wsIDg+IG1fcG9wdXBFbmFibGVkU3RhdGVzOwogCiAgICAgY2xhc3MgVGltZXIgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVGltZXIpOwogCiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
Y3BwCmluZGV4IDA0OTYyOGY1YzYyNzAyZTRkNWQ0MTExODIwMTIzYmE1ZjRiOTY1MjQuLmJkYWEx
NDQ3ODQyMjY5NWQ1MGVhODQ4YWFmY2NiY2UxMmQyYWQ5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjpkZWxpdmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIAogICAg
IGlmIChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9k
ZWxpdmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPHVpbnQ4X3Q+PigpOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBtYWtl
VW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4oKTsKIAogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+cmVz
ZXJ2ZUNhcGFjaXR5KG1fZGVsaXZlcnlEYXRhLT5zaXplKCkgKyBsZW5ndGgpOwogICAgICAgICBt
X2RlbGl2ZXJ5RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRz
Y2FwZVBsdWdpblgxMS5jcHAKaW5kZXggNDRkMTFiNTdjM2VhNmQ1MThjMThkMDRiODIyZDI4NmQ1
M2U5NjhjZi4uMDdkNTU2YzNiN2ZjNjM3MTljMmEyNTU5ZTBhYWQ2YzIyNmMwN2NhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQbHVnaW5YMTE+IE5ldHNjYXBlUGx1Z2luWDExOjpjcmVh
dGUoTmV0c2NhcGVQbHVnaW4mIHBsdQogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChwbHVn
aW4uaXNXaW5kb3dlZCgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2Fw
ZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRvd0lEKTsK
ICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+
KHBsdWdpbiwgZGlzcGxheSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5Y
MTE+KHBsdWdpbiwgZGlzcGxheSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luWDExOjpOZXRzY2FwZVBs
dWdpblgxMShOZXRzY2FwZVBsdWdpbiYgcGx1Z2luLCBEaXNwbGF5KiBkaXNwbGF5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaAppbmRleCA0MWU5YjZjOWQ4NGNhYTQ5NThlMzg1Yjll
ZDgwZmRkN2UxMWRjYTViLi4xZjlmZDg3ZmEzYTMwYzkzNjA0MzhlZDU5N2RjMzJjODk1ODdhZjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5YMTEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaApAQCAtMzcsNiArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHNjYXBlUGx1Z2luOwogCiBjbGFzcyBOZXRzY2Fw
ZVBsdWdpblgxMSBmaW5hbCA6IHB1YmxpYyBOZXRzY2FwZVBsdWdpblVuaXggeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
TmV0c2NhcGVQbHVnaW5YMTE+IGNyZWF0ZShOZXRzY2FwZVBsdWdpbiYpOwogICAgIE5ldHNjYXBl
UGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiwgRGlzcGxheSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmluZGV4IGExZjgwN2Ux
ZTU1MDcyM2VmZWVhMTc3MTMzYjgxZGZmNGQxNzZiMzUuLmI1NzJhYTNhNTM2ZDQ4NWNiOWI4MTdh
MTZlMDJjMzMyYzRiYzIxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBjbGFzcyBQbHVn
aW5Db250cm9sbGVyIHsKIAogICAgIC8vIEhlbHBlciBjbGFzcyBmb3IgZGVsYXlpbmcgZGVzdHJ1
Y3Rpb24gb2YgYSBwbHVnLWluLgogICAgIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9y
IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAg
ICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihQbHVnaW5Db250cm9sbGVyKiBw
bHVnaW5Db250cm9sbGVyKQogICAgICAgICAgICAgOiBtX3BsdWdpbkNvbnRyb2xsZXIocGx1Z2lu
Q29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmNwcAppbmRleCBmMzdjMmNjMjRlM2RkOTc2M2YzZWJkZDYzMmQ4YmZkYjc3MTQ0MzQ3
Li45YWI1ODM3MzBiODlkYmQ5NjAxZDY1MjBlZjhmOWIwYmUwMDZkYzU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC05NSw3ICs5
NSw3IEBAIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycykKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFBsdWdpblByb3h5KHRoaXMpOwogCiAgICAg
Ly8gQXNrIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRlIGEgcGx1Zy1pbi4KLSAgICBtX3Bl
bmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycz4oKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnMgPSBtYWtlVW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKIAogICAgIG1fcGVu
ZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGx1Z2luSW5zdGFuY2VJRCA9IG1fcGx1Z2lu
SW5zdGFuY2VJRDsKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPndpbmRv
d05QT2JqZWN0SUQgPSB3aW5kb3dOUE9iamVjdElEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDdhYjg5NjZkYjkwNWFkZDEyMzk0
ODE2NTBiMTlkZTRhN2U3ZDIyM2YuLjExOWQyYjkwYzJiNDQyMzFmMjU2OTU3ZTYyZGRjYThmMTMw
ZmM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC04OTgsNyArODk4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkV2ZW50PiBQbHVn
aW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBpZiAo
ZXZlbnQubWV0YUtleSgpKQogICAgICAgICBtb2RpZmllcnMuYWRkKFdlYkV2ZW50OjpNb2RpZmll
cjo6TWV0YUtleSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNb3VzZUV2ZW50
Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RW
aWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50LnNj
cmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWUg
eyB9LCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0
b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50
KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50LnNjcmVlbkxvY2F0aW9u
KCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWUgeyB9LCAwKTsKIH0K
IAogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmZjMDljNGY2NWIyNDViNjBiZjRkNGY1OTdh
OWY5MGFkNGQwYWFmOS4uYTFmZjAzM2IyMDRlYWZhZGM4ODhhODIwOGE4OWY3OWRhMDBiY2Y5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBA
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2Vy
KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250CiAKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hv
dWxkIGJlIG1vdmVkIGRpcmVjdGx5IHRvIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5l
Y3Rpb24KICAgICAvLyBJZiBpdCB3ZXJlbid0IGZvciBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQncyBkZXBlbmRlbmNlIG9uIFdlYkRvY3VtZW50TG9hZGVyLCB0aGlzIGNvdWxkIGFscmVh
ZHkgaGFwcGVuLgotICAgIGF1dG8gZnJhbWVMb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9wYWdl
SUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZmZWN0aXZlVXNlckFnZW50KTsKKyAg
ICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVM
b2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNTZXJ2
aWNlV29ya2VySUQsIGVmZmVjdGl2ZVVzZXJBZ2VudCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
bG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCk7CiAgICAg
bV9sb2FkZXJzLmFkZChXVEZNb3ZlKGZyYW1lTG9hZGVyQ2xpZW50KSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaAppbmRleCA5
MjBkZWQwNDBjZTU2MTgzMzk5ZjZjOTNiODJlYjM2ZGY3MzA0OTZhLi45MzBlNDYxODE5ZTE4NmY1
YTgwZDhmNjcxNmZiMTE4YzRkYzBlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVj
dCBTZWN1cml0eU9yaWdpbkRhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU1dP
cmlnaW5UYWJsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
V2ViU1dPcmlnaW5UYWJsZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4
dENsaWVudC5oCmluZGV4IDRkZjZmMDE5ZTU1ODU3NTUyYzg0ZGZhYjkyNTBjNDAxYTg0Y2I4MzUu
LmY0Y2YyOTFhNDAxMGIxZTdjMjQxNjdkNDU0YjU0ZWM0Yjg2NGM0ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAzYzg3MmY1YWRmMzliZWFjZDNhNzA2NjdiMjY4OWQz
OGM5YjExMTJlLi40ZDI3NDc2ODYyMGU1YTQ2ZWI5NTA4ZmRlNDdiNTcxZTc5NmYxNzFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4sCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6
Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCYgY2xpZW50LCBjb25zdCBDb2xv
ciYgaW5pdGlhbENvbG9yKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbG9y
Q2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwgaW5pdGlhbENvbG9yKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2UsICZjbGllbnQsIGluaXRpYWxDb2xvcik7
CiB9CiAKICNlbmRpZgpAQCAtODAyLDcgKzgwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNo
b29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNs
CiAKIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IFdlYkNocm9tZUNs
aWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0U3VnZ2VzdGlvbnND
bGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGNlZDM2YTZjMjViN2U0ZjgzNDRhNTg5OTQw
MDY3OTFmN2NjOTI3NmYuLmQ0NTU2ZDk4N2EzNjZkMTgxMTQwOGFkOTBiZjdhMzQ3ZGQ1OThkYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgV2ViRnJhbWU7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oCmluZGV4IDZjMjliNGUwODEyNmU3Y2Q2Njc5Y2M0NzAyMzVjNTU3NGRlNTBkMmUuLmMx
Yzg5Y2Q5OWU4N2FlZTg0ZWQ1NzQ2YzJlODFmNjQ3ZTgyZjFmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
Q29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9w
YWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCAxYWQ0YzNkZTJjYjdkMzhlNjI2MmMxOTdhYWIy
NGNjYTZmZWRhODIxLi5iMjRlY2Y3NmM0NTUyNGY2MGQ4NmFlZDZmYjFlY2Y2ZjBmMzk0MjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlOwogCiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRy
YWdDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCAyNjgxMDJmZWExYTc3NTdlZDdlMTZkZGVjY2UzY2FkOGVlNmJkNDM1Li5k
MjJkNGNiNzNmMjk3M2Y1NjU1YTg3M2ViZDIyZDZiMDA2YWUwZjNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsK
IAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNs
aWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViUGFnZSogcGFn
ZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5k
ZXggMzBmNWFkNmI0YmMyYTYzOGQ2MDM3ZjhlYzk3MzgwOWRmNmU1NmIxOC4uMzVhMzFmYzJhMzQ0
YjMxMjg3MzA1MDRiN2ZlN2ExMTVmMDExYjg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwog
CiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
R2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggN2NkYWFjZDFmYzFkNDZkNjVlYWRjM2Yz
YTYxMzRhYTM1NThhMmQxMS4uZDY3YjYyYzAyZTY4ODNiNDQ4NjVmYmExNTg1MTZlYTBjYmNiNWM1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgfQogCiAgICAgaWYgKCFtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQpCi0gICAgICAg
IG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwYWludElu
ZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7CisgICAgICAgIG1fcGFpbnRJbmRpY2F0b3JMYXll
ckNsaWVudCA9IG1ha2VVbmlxdWU8UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7
CiAKICAgICBhdXRvIHBhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUobV9wYWdlLT5k
cmF3aW5nQXJlYSgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqbV9wYWludEluZGljYXRvckxh
eWVyQ2xpZW50KTsKICAgICAKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcGFpbnRMYXll
ci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDAuMmYpKTsKIAog
ICAgIEtleWZyYW1lVmFsdWVMaXN0IGZhZGVLZXlmcmFtZXMoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNp
dHkpOwotICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmlt
YXRpb25WYWx1ZT4oMCwgMSkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8
RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOwogCi0gICAgZmFkZUtleWZyYW1lcy5pbnNlcnQo
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1LCAwKSk7CisgICAgZmFk
ZUtleWZyYW1lcy5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1LCAw
KSk7CiAgICAgCiAgICAgYXV0byBvcGFjaXR5QW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUo
KTsKICAgICBvcGFjaXR5QW5pbWF0aW9uLT5zZXREdXJhdGlvbigwLjI1KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaAppbmRleCBmNWVjYzY0YzkyM2YzODZjNTBlN2I1Mjk3N2VmYzA5OWUwYmNmYWQ2
Li4yN2MzZWUxNDJlMTYxNmU0MzVmNDhkNDFmMjcyNzE1ZmU4ZTAzODJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBSZXBh
aW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHByaXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJs
YXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBmcmllbmQgY2xhc3Mg
UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNs
aWVudChXZWJQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oCmluZGV4IDUzM2JlODQwY2FkNzE0NTU1ZGFmMGFhMjA3MjhhM2M5MzM1NWM5YmUuLjRiYjM3
ZmRkNjA3Nzc0ZWQ4MDlhOTY3YTc3NTE1ZmJhZmI2ZWY2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgOiBwdWJsaWMg
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlciYgc2luZ2xldG9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAx
NjM3YWQxMDk3ZDc2NDllNTBkZjc0ZjVlMDYyMjcyNzFmYWI4NDVhLi4wMGNjMGEwOGQ5MjYwNGZk
ZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5o
CkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJOb3RpZmljYXRp
b25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAppbmRleCA3OTAw
ODRjZTQ4ZDIyNmIxMGU2NjViODI4NDQzNDlmZGFhZmZlZTQ2Li42OWYwYWU4Mjc5NTA3YjcyOTY1
ZjY1YzIxNjg3M2M0ODFhZGY0ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMu
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6YWRkT3Zl
cnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyCiAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX292ZXJyaWRlc01hcC5hZGQocGFzdGVib2FyZE5hbWUsIG51bGxwdHIpOwog
CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9IG1h
a2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7CiAgICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKHR5cGVNYXApOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJ
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdJbkNsaWVudC5oCmluZGV4IGY2ZTAxNDk1N2VkYzI3N2RiOTgzNzMxMjdlYzEwNjNlOTM1NThj
YjguLmNmOTBhNWRmY2ZkYTYzZWNiOTg5N2NjNjZkMGQ0ODEyOTQ0ODEzYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0lu
Q2xpZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQ
YWdlOwogCiBjbGFzcyBXZWJQbHVnSW5DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z0luQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXZWJQbHVnSW5DbGllbnQoV2ViUGFnZSYpOwogICAgIHZpcnR1YWwgfldlYlBsdWdJbkNsaWVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCmluZGV4IDVkZDY1YmZhMGQ1
MGNjZmRiMTQ2MWZlYjNmZTUyNDFmY2FhMGZiYTYuLjYzZDc3NGU1YTk0MjdjNzM1YjUyNDkwYmQw
MWNkNzlhYjc0YTEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgKQEAg
LTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFz
cyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQoV2ViUGFnZSYpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5
bnRoZXNpc0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCmluZGV4IGVhZDE3ZDMwZjA1OTBkNzQ0NjcyMDU1
Y2FkNzdkOTVjNmQwYTQ3NzAuLjdiZDg3NTkwNWE2NWM3N2Q5NmMzZjc4ODQwMDE4NTgyY2ZhZjc2
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogICAgIAogY2xhc3MgV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU3BlZWNo
U3ludGhlc2lzQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNl
ck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggMTA5MzA0NTNjZTc5N2VkZDkwZGU3NmYwMzU0Yjlh
MWQ0MDZmMmU2ZS4uNjk1MjE3NGI5MTJjOTcxZTM1Nzg2ZTI3YzQ4MjI1ZDJmY2ExNDAyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJN
ZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlVzZXJNZWRpYUNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlJik7CiAgICAgfldlYlVzZXJN
ZWRpYUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDljZmZjYzlhOWZkMmI2
NDQ0OTIyZjg1NGFkOTdkMWQzMzFlNzBiMGUuLmIyNDU4MWM5N2U3YTg4MTZmNDZhZjkzMTlhOTFl
YTIxYjcyYmQ2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2
b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShHcmFwaGljc0xheQogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRM
YXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgfSBlbHNlIHsKICNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQYWdlKTsKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0ID0gbWFrZVVuaXF1ZTxMYXllclRyZWVIb3N0PihtX3dlYlBhZ2UpOwogI2Vsc2UKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmluZGV4IGMwNzM5
NmYwMmYxZmE2NWY0NWFjZWU3MmYxMzRmNGZiMmQ5ZTg5MDkuLjUzNThjZDY4NjNiMzIyNjk1OGVl
Mjc0ZWZkMDMyYWQyMDA2NGRkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwgY29u
c3QgV2ViUGFnZQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2Vi
UGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbmRpZgogICAgIGNh
c2UgRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlOgotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVy
cyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Pih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykg
fHwgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlQ29vcmRpbmF0
ZWRHcmFwaGljczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFD
b29yZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJh
bWV0ZXJzKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKaW5kZXggMGYyNjQwM2ViYjcwYTgxMWIxOGU5ODc5
NWUxOWRlNzc0MGJlODM2MC4uMWE1MzVmMTdkOTdmNjY2ODM5NzI2OWE4NmUyODU3YjI5Yjk3MmEy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgRmluZENvbnRyb2xsZXIgOiBwcml2YXRlIFdlYkNvcmU6OlBhZ2VPdmVybGF5
OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZpbmRDb250cm9sbGVyKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA0NTJmNTNiY2VkYzAwNDdmNzMz
ZDFjMzRiY2Q3NjUxMTkyY2I4YmU2Li40NmU4YWEwOTk4NjQ1YThjZTVkMmQ3Yjk1N2Y5OWFmZGMz
OGY0NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbnN1
cmVCYWNraW5nU3RvcmUoKQogICAgIEFTU0VSVChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0
YWNoZWQpOwogCiAgICAgaWYgKCFtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlKQotICAgICAgICBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZT4odGhpcyk7CisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBt
YWtlVW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPih0aGlzKTsKIAogICAgIHVwZGF0ZUJh
Y2tpbmdTdG9yZSgpOwogfQpAQCAtNTIxLDcgKzUyMSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dHJhbnNmb3JtKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMudHJhbnNmb3Jt
ID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOwogICAgIG1fcHJvcGVy
dGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlRy
YW5zZm9ybUNoYW5nZWQpOwogfQogCkBAIC01MzIsNyArNTMyLDcgQEAgVHJhbnNmb3JtYXRpb25N
YXRyaXggUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0CiAK
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnN1YmxheWVy
VHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUp
OworICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNm
b3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXND
aGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTdWJsYXllclRyYW5zZm9ybUNoYW5n
ZWQpOwogfQogCkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpz
ZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7Ci0gICAgbV9wcm9w
ZXJ0aWVzLmZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KGZpbHRl
cnMpOworICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gbWFrZVVuaXF1ZTxGaWx0ZXJPcGVyYXRp
b25zPihmaWx0ZXJzKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpGaWx0ZXJzQ2hhbmdlZCk7CiB9CiAKQEAgLTgyNiw3
ICs4MjYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUgogICAgIGlmIChtX3Byb3BlcnRpZXMu
c2hhcGVSb3VuZGVkUmVjdCAmJiAqbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPT0gcm91
bmRlZFJlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5k
ZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7
CisgICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPEZsb2F0Um91
bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXND
aGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTaGFwZVJvdW5kZWRSZWN0Q2hhbmdl
ZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKaW5kZXggMWNiZDFiNGJhNzlhN2RmOWNlNTVlMDQy
MWQ0NGU2NWI0MDg4MjFjMi4uMDk5NTM2YjkzYzAxMWFjM2YyYTA3M2MzY2E0NjRmMDcyNjQ2OWNm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZVRpbGVkQmFja2luZy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6UGxhdGZvcm1D
QUxheWVyUmVtb3RlVGlsZWRCYWNraW5nKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FM
YXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiAgICAg
OiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBlLCBvd25lciwgY29udGV4dCkKLSAgICAs
IG1fdGlsZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhpcykp
CisgICAgLCBtX3RpbGVDb250cm9sbGVyKG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHRoaXMp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KaW5kZXggNWU1MGUwYmExZWYxMjQ2YzZhZTA4ZjI5ZDkyYTgzMGUwZGI0ZjIz
Ny4uNDQ0NmYzNGQwNGNjZmJmYmViMzY5YmE0NGMzMjA2YmYwZGQyM2VjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNTgs
NyArNTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNv
bnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBEcmF3aW5n
QXJlYShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHBhcmFtZXRlcnMuZHJhd2luZ0Fy
ZWFJZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCisgICAgLCBt
X3JlbW90ZUxheWVyVHJlZUNvbnRleHQobWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVDb250ZXh0
Pih3ZWJQYWdlKSkKICAgICAsIG1fcm9vdExheWVyKEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFw
aGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcykpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcigqdGhp
cywgJlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycykKIHsKQEAgLTQyMyw3
ICs0MjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygp
CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6V2ls
bENvbW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSkpOwogCiAg
ICAgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVy
VHJlZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsKLSAg
ICBhdXRvIGNvbW1pdEVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVz
c2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6
cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IGF1dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZl
ck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1p
dExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgY29tbWl0
RW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgLy8gRklYTUU6IE1v
dmUgYWxsIGJhY2tpbmcgc3RvcmUgZmx1c2hpbmcgbWFuYWdlbWVudCB0byBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKaW5kZXgg
YWFkZTNkOWYxODQ0ZDdmMDVjMDkyMThkOGUyMDQ0ZDU4YTJmMDVmOC4uYjJiZGM0MWI3MjMzNmJi
NmU0ODQ5MGY3MzFiMjQ4NWQyNzA3ODJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
aApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAK
IGNsYXNzIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgOiBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKFdlYlBhZ2UmKTsKICAgICB+Vmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3RvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCmluZGV4IDYwY2ZkOGQyYTE3NTRhN2FjZWQ1OGQ2MWRmMTdiZTRjMTQzMTM2
OTQuLmJkZDRiMzk1MjU0YTcxNjc2MzlhZWNkNzM4NjBlMDcyZDY5YzQyZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEyMCw3ICsxMjAs
NyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQ
YWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpj
cmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7Ci0gICAgYXV0byBmcmFtZSA9IGNy
ZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKKyAgICBhdXRv
IGZyYW1lID0gY3JlYXRlKG1ha2VVbmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOwogICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJh
bWUtPmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBh
Z2UtPmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAxMzM2NTcwZDkzYWE1MTEwNjk3ODU2MTE3MDI2MDg5M2I4YTNjZGI0Li5kYjMyZGE0ODEz
OWUxOWY3MTQyMTI1NjU0MGEyMTYzMjM0Y2M5MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzgzLDIxICszODMsMjEgQEAgV2ViUGFnZTo6
V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogICAgICwgbV90ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkobWFrZVVu
aXF1ZVJlZjxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk+KCp0aGlzKSkKICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi0gICAgLCBtX3ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yPigqdGhpcykpCisgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IobWFrZVVu
aXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2Jq
ZWN0KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVkKQog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4o
KSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAsIG1fZWRpdG9yQ2xp
ZW50IHsgc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+
KCkgfQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fbG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKLSAgICAsIG1fcmVz
b3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVz
b3VyY2VMb2FkQ2xpZW50PigpKQotICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkKKyAgICAsIG1fZWRpdG9yQ2xpZW50
IHsgbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkgfQorICAg
ICwgbV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVu
dD4oKSkKKyAgICAsIG1fbG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKKyAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VV
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpKQorICAgICwg
bV91aUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4o
KSkKICAgICAsIG1fZmluZENvbnRyb2xsZXIobWFrZVVuaXF1ZVJlZjxGaW5kQ29udHJvbGxlcj4o
dGhpcykpCi0gICAgLCBtX2luc3BlY3RvclRhcmdldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9pbnNw
ZWN0b3JUYXJnZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldENv
bnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVycy51c2VyQ29udGVudENvbnRy
b2xsZXJJRCkpCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgICwgbV9nZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcihtYWtlVW5pcXVlUmVmPEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyPigqdGhpcykpCkBAIC00NjQsMjEgKzQ2NCwyMSBAQCBXZWJQYWdlOjpX
ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGx1Z0luQ2xpZW50ID0gbmV3IFdl
YlBsdWdJbkNsaWVudCgqdGhpcyk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50
Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQoKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMpOwot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9y
bWFuY2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGll
bnQ+KCp0aGlzKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi53
ZWJHTFN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0
aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkgeworICAgIHBhZ2VDb25maWd1
cmF0aW9uLndlYkdMU3RhdGVUcmFja2VyID0gbWFrZVVuaXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4o
W3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSB7CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKGlz
VXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkpOwogICAgIH0pOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5zcGVlY2hTeW50aGVz
aXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRo
aXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRoZXNpc0NsaWVudCA9IG1ha2VV
bmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gbWFrZVVu
aXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMpOwogI2VuZGlmCiAKICAgICBw
YWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9ICZXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpAQCAtNDkzLDE0ICs0OTMsMTQg
QEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQotICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigqdGhpcyk7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFw
cGxpY2F0aW9uTWFuaWZlc3QgPSBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5k
aWYKIAotICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOworICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbikpOwogCiAgICAgLy8gU2V0IHRoZSBzZXNzaW9uSUQgKmJlZm9yZSogdXBk
YXRpbmcgdGhlIHByZWZlcmVuY2VzIGFzIHRoZSBwcml2YXRlQnJvd3NpbmdFbmFibGVkIHByZWZl
cmVuY2VzIG1heSBuZWVkIHRvIG92ZXJyaWRlIGl0LgogICAgIGlmIChwYXJhbWV0ZXJzLnNlc3Np
b25JRC5pc1ZhbGlkKCkpCkBAIC04NTMsNyArODUzLDcgQEAgdWludDY0X3QgV2ViUGFnZTo6bWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGllbnQpCiB7CiAgICAg
aWYgKCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGll
bnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5k
bGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1CiB2b2lk
IFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50KQogewogICAg
IGlmICghZWRpdG9yQ2xpZW50KSB7Ci0gICAgICAgIG1fZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CisgICAgICAgIG1f
ZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGll
bnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkluamVjdGVkQnVuZGxlOgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1D
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+JiYg
Zm9ybUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGllbnQpIHsKLSAgICAgICAgbV9mb3JtQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50Pigp
OworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg4NCw3ICs4ODQs
NyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlBhZ2VMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50KQogewogICAgIGlmICghbG9hZGVyQ2xp
ZW50KSB7Ci0gICAgICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAgICAgICBtX2xvYWRlckNsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQgV2ViUGFn
ZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVBvbGlj
eUNsaWVudEJhc2UqCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2Fk
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRD
bGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghbV9yZXNvdXJjZUxvYWRDbGllbnQpCi0gICAg
ICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+
KCk7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoY2xp
ZW50KTsKIH0KQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVu
ZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQgogdm9p
ZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+JiYgdWlDbGllbnQpCiB7CiAgICAgaWYgKCF1
aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTQxMCwxNCArMTQxMCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmNsb3Nl
KCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVu
dUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRl
eHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICNlbmRpZgotICAg
IG1fZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpF
ZGl0b3JDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwotICAgIG1fbG9hZGVyQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOwor
ICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpGb3JtQ2xpZW50PigpOworICAgIG1fbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOwogICAgIG1fcG9saWN5Q2xp
ZW50LmluaXRpYWxpemUoMCk7Ci0gICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKLSAgICBt
X3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlD
bGllbnQ+KCk7CisgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKKyAgICBtX3VpQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbkNsaWVudC5pbml0aWFsaXplKDApOwog
I2VuZGlmCkBAIC00Njk2LDcgKzQ2OTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmJlZ2luUHJpbnRpbmco
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiAjZW5kaWYKIAog
ICAgIGlmICghbV9wcmludENvbnRleHQpIHsKLSAgICAgICAgbV9wcmludENvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKKyAgICAgICAgbV9wcmludENv
bnRleHQgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKICAgICAgICAgbV9w
YWdlLT5kaXNwYXRjaEJlZm9yZVByaW50RXZlbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRp
b25HdGsuY3BwCmluZGV4IDczNTY2YTEzMzg1ZGUzYWFjNjQ2ZmI5NDk2YmRkYWZjYjVhZjQ2YjYu
LjMxZWZmMTFmN2FlMGEzZWI4Y2ZiYjZmZjJiM2RiYTUxNjI0YzFlYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBAIGNsYXNzIFdlYlByaW50T3BlcmF0aW9u
R3RrV2luMzIgZmluYWw6IHB1YmxpYyBXZWJQcmludE9wZXJhdGlvbkd0ayB7CiAjZW5kaWYKIAog
c3RydWN0IFByaW50UGFnZXNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgUHJpbnRQYWdlc0RhdGEoV2ViUHJpbnRPcGVyYXRpb25HdGsqIHByaW50T3BlcmF0
aW9uKQogICAgICAgICA6IHByaW50T3BlcmF0aW9uKHByaW50T3BlcmF0aW9uKQogICAgICAgICAs
IHRvdGFsUHJpbnRlZCgtMSkKQEAgLTcyNiw3ICs3MjcsNyBAQCB2b2lkIFdlYlByaW50T3BlcmF0
aW9uR3RrOjpwcmludChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGRvdWJsZSB4RFBJLCBkb3Vi
bGUgeQogewogICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7CiAKLSAgICBhdXRvIGRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBt
YWtlVW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKICAgICBpZiAoIWRhdGEtPmlzVmFsaWQp
IHsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV9maW5pc2goc3VyZmFjZSk7CiAgICAgICAgIHByaW50
RG9uZShpbnZhbGlkUGFnZVJhbmdlVG9QcmludChmcmFtZVVSTCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1Mu
bW0KaW5kZXggOWFiYjJhNzkyOTlkNTk2YjkxZTZlZjYxY2E0M2VmODYxOTBhOTA0OS4uOTM0MThh
YjIxZDc0ZmM5NDU4YTAyMjRlNGNiNDhhNzM0MTc4MDlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpA
QCAtOTgsNyArOTgsNyBAQCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9y
KEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgIGlmICghdGV4dElu
ZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9maW5kSW5kaWNhdG9yT3Zl
cmxheUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJ
T1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOworICAgIG1fZmluZEluZGlj
YXRvck92ZXJsYXlDbGllbnQgPSBtYWtlVW5pcXVlPEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50
SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdldCgpKTsKICAgICBtX2ZpbmRJbmRp
Y2F0b3JSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0SW5kaWNhdG9yLT5zZWxlY3Rpb25SZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpOwogICAgIG1fZmluZEluZGljYXRvck92ZXJsYXkgPSBQ
YWdlT3ZlcmxheTo6Y3JlYXRlKCptX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50LCBQYWdlT3Zl
cmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheSgqbV9maW5kSW5kaWNh
dG9yT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05vdEZhZGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5j
cHAKaW5kZXggOTA2ODdjOTc0YWNmMzNkODJiOGM2NGI5NDhlNmVlOWEzMGVlMmU5Yy4uMDZmY2M0
NzE1OTNlYjc4ZWRlYmZjYzYzZjg5NDRiM2RmYWU5ZGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVz
aENhbGxiYWNrKCkKICAgICBpZiAoIW1faGFzU2VudE1lc3NhZ2UpIHsKICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpTdGFydERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxh
eUlEKCkpLCAwKTsKICAgICAgICAgbV9oYXNTZW50TWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIG1f
cnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1
bkxvb3BFbnRyeSwgW3RoaXNdKCkgeworICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VV
bmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKICAgICAg
ICAgICAgIHRoaXMtPm1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3AgPSB0cnVlOwogICAg
ICAgICB9KTsKICAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxlKENGUnVuTG9vcEdl
dEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5k
ZXggZGY2MDAzNjQ1OThmMTM0NjI5ZGFiNjI3MDZlYWY2ODYxZTVmZjMzZC4uNGNiM2RmOWFlYTUy
OWVmZjUyNjMzNmM4MWYxMzAyMDQ1YmEzZTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQpAQCAtODcsNyArODcsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwg
YwogICAgIFttX2hvc3RpbmdMYXllciBzZXRPcGFxdWU6WUVTXTsKICAgICBbbV9ob3N0aW5nTGF5
ZXIgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAKLSAgICBtX2xheWVyRmx1c2hSdW5Mb29wT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpM
YXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1fbGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZlciA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4
PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBb
dGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hSdW5Mb29wQ2FsbGJhY2soKTsKICAg
ICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGEyZGEx
MmM2MDIyOTM3M2NmODc4OTJiODNkYWE1NzczNTAwYTc3ZjIuLmE5ZTM3NDQ0ZmJkMzY4NDRhNDky
OGM5NjEyMmQ3NGVkMWYwZmJiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTE1NzMsNyArMTU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6bWFya0FsbExheWVy
c1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuCiAgICAg
QVNTRVJUKCFtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIpOwogICAgIG1fY291
bnRPZlBhZ2VzRmFpbGluZ1RvTWFya1ZvbGF0aWxlID0gMDsKIAotICAgIG1fcGFnZU1hcmtpbmdM
YXllcnNBc1ZvbGF0aWxlQ291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU1hcmtpbmdMYXll
cnNBc1ZvbGF0aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKKyAgICBtX3BhZ2VNYXJraW5n
TGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBtYWtlVW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNW
b2xhdGlsZUNvdW50ZXI+KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoUmVmQ291bnRlckV2ZW50KSB7CiAgICAgICAgIGlmIChtX3BhZ2VNYXJr
aW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTE4MzgsNyArMTgzOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5hYmxlZFNlcnZp
Y2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2CiAKIHZvaWQg
V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZGVudGlmaWVyKQogewotICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIp
OworICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IG1ha2VVbmlxdWU8V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6
OmRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKQEAgLTE4NzEsNyArMTg3MSw3IEBAIGJv
b2wgV2ViUHJvY2Vzczo6aGFzVmlzaWJsZVdlYlBhZ2UoKSBjb25zdAogTGliV2ViUlRDTmV0d29y
ayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB7CiAgICAgaWYgKCFtX2xpYldlYlJU
Q05ldHdvcmspCi0gICAgICAgIG1fbGliV2ViUlRDTmV0d29yayA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDTmV0d29yaz4oKTsKKyAgICAgICAgbV9saWJXZWJSVENOZXR3b3JrID0gbWFrZVVu
aXF1ZTxMaWJXZWJSVENOZXR3b3JrPigpOwogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3Jr
OwogfQogCkBAIC0xODgyLDcgKzE4ODIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlRwogICAg
IC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRN
YW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBh
cyB0aGUKICAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlv
biBwdXJwb3Nlcy4KICAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnNldENvbm5lY3Rpb24oc3RkOjptYWtlX3VuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQsIHBhZ2VJRCwgc3RvcmUpKTsK
KyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlx
dWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91
cElELCBwYWdlSUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCBkNGMwMWJhYjFmOTNkYTkwODViMGYyMTk0Y2QzMjdkNDcxODY1MGIyLi4yZjRmYjUzMGFiY2Vk
N2VmYzczNzY0MjIzMDlmZDMxODg3YTQ3YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAgICAgLCBQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OkNsaWVudAogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlByb2Nlc3MmIHNpbmdsZXRvbigp
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUgPSBQcm9jZXNz
VHlwZTo6V2ViQ29udGVudDsKQEAgLTE0Niw3ICsxNDcsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAgICB7
Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFr
ZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxl
bWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIFdlYkNvbm5l
Y3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1
cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAyNzIw
Yjg2ZmNkMmZmZWU2MDIyZjVhZDVlZWQ1MGJjZjM2OTJkN2Y4Li45YWYwMGVlOGFhMGYxY2Q4NDBh
ODE3Mzc5MGZhMDYyMzAwNDZmZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6IHB1YmxpYyBSZWFs
dGltZU1lZGlhU291cmNlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXZpY2VUeXBlICE9IENh
cHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd24pOwogICAgICAgICBpZiAodHlwZSA9PSBU
eXBlOjpBdWRpbykKLSAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxs
cHRyKSk7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZl
cj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOwogICAg
IH0KIAogICAgIH5Tb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAppbmRleCBiYWVkMGNkOWUwOWI0OWQy
MjFlOTQwMThmNjQ5ZmU2ZGJjZjkyNTE5Li5jMWQ0M2ZjYjNhZjU4NDE0NTNhZDM0MzRjN2NmOTNl
YmZjOWU3ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBDcm9z
c1Byb2Nlc3NSZWFsdGltZUF1ZGlvU291cmNlOwogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xhc3Mg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OkF1ZGlvQ2FwdHVyZUZh
Y3RvcnksIHB1YmxpYyBXZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29y
ZTo6RGlzcGxheUNhcHR1cmVGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNz
Jik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBiNDdkMWQ4YWZhMDNm
ZWQzNmRlY2FkOTg5ZDcyZGJjNDE4NDg3ZjU5Li4zYjkwNmE4MGM1YWQ4ZjY5YmVmNzdmOWE4Yzc2
NGFmODA5ZjQ5NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBy
b2Nlc3NUYXNrU3RhdGVEaWRDaGFuZ2UoUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpUYXNrU3Rh
dGUgdAogCiAgICAgLy8gV2Ugd2VyZSBhd2FrZW5lZCBmcm9tIHN1c3BlbnNpb24gdW5leHBlY3Rl
ZGx5LiBOb3RpZnkgdGhlIFdlYlByb2Nlc3NQcm94eSwgYnV0IHRha2UgYSBwcm9jZXNzIGFzc2Vy
dGlvbiBvbiBvdXIgcGFyZW50IFBJRAogICAgIC8vIHRvIGVuc3VyZSB0aGF0IGl0IHRvbyBpcyBh
d2FrZW5lZC4KLSAgICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
UHJvY2Vzc0Fzc2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vz
c0lEKCksICJVbmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5k
LCBBc3NlcnRpb25SZWFzb246OkZpbmlzaFRhc2spOworICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0
aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5yZW1vdGVQcm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0aW9u
U3RhdGU6OkJhY2tncm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CiAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OlByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpLCBbdWlQcm9j
ZXNzQXNzZXJ0aW9uID0gV1RGTW92ZSh1aVByb2Nlc3NBc3NlcnRpb24pXSB7IH0pOwogfQogI2Vu
ZGlmCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9y
U3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbiByZWFzb24pCiAgICAgfQogCiAgICAgaWYgKCFt
X2NwdU1vbml0b3IpIHsKLSAgICAgICAgbV9jcHVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxD
UFVNb25pdG9yPihjcHVNb25pdG9yaW5nSW50ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2Up
IHsKKyAgICAgICAgbV9jcHVNb25pdG9yID0gbWFrZVVuaXF1ZTxDUFVNb25pdG9yPihjcHVNb25p
dG9yaW5nSW50ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2UpIHsKICAgICAgICAgICAgIGlm
IChtX3Byb2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpTZXJ2aWNlV29ya2VyKQogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gU2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBleGNlZWRlZCBDUFUgbGltaXQgb2YgJS4xZiUlICh3YXMgdXNpbmcg
JS4xZiUlKSIsIHRoaXMsIG1fY3B1TGltaXQudmFsdWUoKSAqIDEwMCwgY3B1VXNhZ2UgKiAxMDAp
OwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAppbmRleCAzNjkwOTVjZGFkMWQzNDcxMWEwNjc2ZDg3MzZh
OTBlMTkzZTI5MDVlLi4yMjhmNGEzNmQ0YjBmMjIyYzE3ODYwZDBiYzQ5OGMxZjllMDg5YTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2Vy
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBSZWY8U3RvcmFnZVN5bmNNYW5hZ2VyPiBTdG9yYWdlU3lu
Y01hbmFnZXI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB9CiAKIFN0b3JhZ2VTeW5jTWFu
YWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCkKLSAgICA6IG1fdGhy
ZWFkKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICA6IG1fdGhyZWFkKG1h
a2VVbmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKICAgICAsIG1fcGF0aChwYXRoLmlzb2xhdGVkQ29w
eSgpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggNDQzOTM4Mjk1ZjRlMWMyOWRkMDQ4
NmI0MzFiYTdmZWEzNTI5ZDE2ZC4uOWM3NTE0ZTM0NjJjNGI0ZDhhODU2MDVlZDAyOWRiZDE5MjVk
NmIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNw
cApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9u
PHZvaWQgKCk+JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWQpOwotICAgIG1fcXVldWUuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24p
KSk7CisgICAgbV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RG
TW92ZShmdW5jdGlvbikpKTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQpA
QCAtODcsNyArODcsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAgICAgaWYg
KCFtX3RocmVhZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKKyAgICBtX3F1ZXVlLmFwcGVu
ZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10gewogICAgICAgICBwZXJmb3Jt
VGVybWluYXRlKCk7CiAgICAgfSkpOwogICAgIG1fdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5k
ZXggYjkzNGQxYTNiMWJhYTgzMWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2ZhMi4uODA2Y2IwOTk1ZDBh
MDdjNzE4MjcxZDIxMDUwNzAzOThjNDAzYmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFN0b3JhZ2VUcmFj
a2VyJiBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpCiBTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRy
YWNrZXIoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKICAgICA6IG1fc3RvcmFnZURpcmVjdG9y
eVBhdGgoc3RvcmFnZVBhdGguaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2NsaWVudCgwKQotICAg
ICwgbV90aHJlYWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQorICAgICwgbV90
aHJlYWQobWFrZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9pc0FjdGl2ZShmYWxz
ZSkKICAgICAsIG1fbmVlZHNJbml0aWFsaXphdGlvbihmYWxzZSkKICAgICAsIG1fU3RvcmFnZURh
dGFiYXNlSWRsZUludGVydmFsKGRlZmF1bHRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9y
YWdlU2Vzc2lvbk1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05l
dHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKaW5kZXggNDNlYTQ1ZGFlODkyMDZjODI5YTUxNGQ0
ZGE4ZTNkMWM5N2NjMTI4NC4uODUxY2MxMDE3ZGVkMDBjMDZkNDZkMmM4NTlkNzAwMDBiNmQ3MmQ1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3Rv
cmFnZVNlc3Npb24oY29uc3QgUAogV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3
b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCiB7CiAgICAgaWYg
KCFkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIGRlZmF1bHROZXR3b3Jr
U3RvcmFnZVNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICAgICAg
ZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwog
ICAgIHJldHVybiAqZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogfQogCkBAIC03NCw3
ICs3NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3Rp
bmdTZXNzaW9uKCkKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lv
bi5nZXQoKSkpOwogICAgIH0KIAotICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNv
b2tpZVN0b3JhZ2UpKTsKKyAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdl
KSk7CiAjZW5kaWYKIH0KIApAQCAtMTAwLDExICsxMDAsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCwgY28KICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Np
b24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwg
V1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShj
b29raWVTdG9yYWdlKSk7CiAKICNlbGlmIFVTRShDVVJMKQogICAgIGdsb2JhbFNlc3Npb25NYXAo
KS5lbnN1cmUoc2Vzc2lvbklELCBbc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihz
ZXNzaW9uSUQpOwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3Bw
CmluZGV4IDE4NzZiOTYwYjk0NzA4MTRjMzUwYmM1OTI2YTRjODFhZWRmMzkwMjMuLjdiODY5ODFh
M2Y0OGU1MGY4YjNjY2FjMzcwNjkxN2Q0YWYxZmRiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Q0YuY3BwCkBAIC0xNTksNSArMTU5LDUgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0b3JDbGkKICAgICAg
ICAgICAgIGRlbGV0ZVNldHRpbmcobmFtZSk7CiAgICAgICAgIH0KICAgICB9OwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudElPUy5oCmluZGV4IDNiMWE0NTA3MDc4ZmE0Y2MwNjhlNzQwMzAzMjIxMjM5YjJh
ZDcxMjMuLjE0NTc3MjIyYTllMTNlNjNlNDkxZDZkM2I5MmNhMWJjODllN2NiMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudElPUy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJXZWJDaHJvbWVDbGll
bnQuaCIKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50SU9TIGZpbmFsIDogcHVibGljIFdlYkNocm9t
ZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
Q2hyb21lQ2xpZW50SU9TKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogV2ViQ2hyb21lQ2xp
ZW50KHdlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCmluZGV4IDIxN2E0
ZWQwYTg1YTZiYjQxNGQzMTk0Y2I3YmZhZWZkZTAzNmQ0N2EuLjhkYWQ2MDQ0NjJmODM3NjQ1NzNm
MDA2MjllYTEwNDllZWI4NmRjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1t
CkBAIC0xNzgsNyArMTc4LDcgQEAgLSAodm9pZClzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJz
OihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBzdGQ6OnVuaXF1ZV9wdHI8V2UKIAogICAgIGZvciAo
YXV0byYgbGF5ZXJBbmRDb25zdHJhaW50cyA6IGxheWVyTWFwKSB7CiAgICAgICAgIENBTGF5ZXIq
IGxheWVyID0gbGF5ZXJBbmRDb25zdHJhaW50cy5rZXk7Ci0gICAgICAgIGF1dG8gbGF5ZXJEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPigpOworICAg
ICAgICBhdXRvIGxheWVyRGF0YSA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZExheWVy
RGF0YT4oKTsKIAogICAgICAgICBsYXllckRhdGEtPm1fZW5jbG9zaW5nQWNjZWxlcmF0ZWRTY3Jv
bGxMYXllciA9IHN0aWNreUNvbnRhaW5lcnMuZ2V0KGxheWVyKTsKICAgICAgICAgbGF5ZXJEYXRh
LT5tX3ZpZXdwb3J0Q29uc3RyYWludHMgPSBXVEZNb3ZlKGxheWVyQW5kQ29uc3RyYWludHMudmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCmlu
ZGV4IGE4YjZhMDQzOTNlYzAwMDE0NjUzOGQ0Y2Y2NWJkNjQwYzc0YmQ5MDEuLjVhZDgxYjRhM2I0
OWI1ZDA2MzkzNjU2ODNhMWJjZjVkNTdlZjM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KQEAgLTEzMyw3ICsxMzMsNyBAQCAtIChpZClpbml0
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgX2VudHJpZXNCeVVSTCA9IFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgX2VudHJpZXNCeURhdGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CisgICAgX2VudHJpZXNCeURhdGUgPSBtYWtl
VW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4
IGI3Mzk1OTM1ZTUxMGJmM2I3ZjBjNDhlZGQ0MzZjNThiYmM0ODFkOGUuLjg2ZjlkM2Q0MjIzODQ2
YmM5NWNiYzk1NjQ1YTFjYTczMjBhZmUxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMzQ4LDcgKzM0OCw3IEBAIC0gKGlk
KWluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOihOU0RpY3Rpb25hcnkgKilkaWN0CiAg
ICAgICAgIGNvcmUoX3ByaXZhdGUpLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOwogICAg
IAogICAgIGlmIChOU0FycmF5ICpyZWRpcmVjdFVSTHMgPSBbZGljdCBfd2Via2l0X2FycmF5Rm9y
S2V5OnJlZGlyZWN0VVJMc0tleV0pIHsKLSAgICAgICAgYXV0byByZWRpcmVjdFVSTHNWZWN0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBhdXRvIHJlZGly
ZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIHJl
ZGlyZWN0VVJMc1ZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbcmVkaXJlY3RVUkxzIGNv
dW50XSk7CiAKICAgICAgICAgZm9yIChpZCByZWRpcmVjdFVSTCBpbiByZWRpcmVjdFVSTHMpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggZTE3Yzc4ODFhNTE3ZjBjMzU1
Zjg3NTY5YjYwZGEzZjIxNWExZWJhNy4uZjVlN2ZiY2YxMmU0N2Y5MGRlZWYxZWEyY2ZlYjcxNzQy
Njg4MGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTQ5Myw3ICs0
OTMsNyBAQCBrZXJuX3JldHVybl90IFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseShtYWNo
X3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbAogICAgIGlmICghaW5zdGFuY2VQcm94eSkK
ICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1
cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0SUQpKTsKKyAgICBp
bnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHk+KG9iamVj
dElEKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApAQCAtNTA5LDcgKzUwOSw3IEBA
IGtlcm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5SZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1
aW50MzJfdCBwbHVnaW5JRCwgdWludDMyCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAg
ICByZXR1cm4gS0VSTl9GQUlMVVJFOwogICAgIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJl
bnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1
cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9
CiAKQEAgLTUyOCw3ICs1MjgsNyBAQCBrZXJuX3JldHVybl90IFdLUENCb29sZWFuQW5kRGF0YVJl
cGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELAogICAgICAgICBy
ZXR1cm4gS0VSTl9GQUlMVVJFOwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVzdWx0ID0g
YWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KHJlc3VsdERh
dGEpLCByZXN1bHRMZW5ndGgpKTsKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHko
cmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
Qm9vbGVhbkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOworICAgIGluc3RhbmNl
UHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwgcmVzdWx0
KSk7CiAgICAgCiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KQEAgLTU0NSw3ICs1NDUsNyBA
QCBrZXJuX3JldHVybl90IFdLUENJbnN0YW50aWF0ZVBsdWdpblJlcGx5KG1hY2hfcG9ydF90IGNs
aWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbgogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAg
ICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRS
ZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5OjpJbnN0YW50aWF0ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJRCwgc3Rh
dGljX2Nhc3Q8UmVuZGVyZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CisgICAgaW5zdGFuY2VQcm94
eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwgcmVuZGVyQ29udGV4
dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkpKTsKICAgICByZXR1
cm4gS0VSTl9TVUNDRVNTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5oCmluZGV4IDEwYTA4ZTk1MGEzZGMwYzkzNjcxZjFmYzFjNzRjOTQ3NzkzYTA3ZTguLmU1NmEx
MDNhMjhhNzYwZjljZTBiOTdlNzFkZDZiMjNhNjBjNTNlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5oCkBAIC0xNzEsNiArMTcxLDcgQEAgY2xhc3MgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3gKIAogICAgIC8vIFJlcGx5IHN0cnVjdHMKICAgICBzdHJ1Y3QgUmVwbHkgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGVudW0gVHlwZSB7
CiAgICAgICAgICAgICBJbnN0YW50aWF0ZVBsdWdpbiwKICAgICAgICAgICAgIEdldFNjcmlwdGFi
bGVOUE9iamVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDIwMmM2ZGVhZjEzZDA3YzZlM2E1Njk4YjFj
ZGI1OWExOWI1ZGEwMzkuLjUyYmY3YmQxMmU0ZTM3MTJkMzE0NzVlMmE1MzlhNDI4Y2ZmOGZhNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5
SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
UHJveHlJbnN0YW5jZS5tbQpAQCAtMzYyLDcgKzM2Miw3IEBAIE1ldGhvZCogUHJveHlJbnN0YW5j
ZTo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBBZGQgYSBu
ZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVkIHdoaWxlIHdlIHdl
cmUgaW4gd2FpdEZvclJlcGx5LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0gbV9tZXRob2RzLmFk
ZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5
ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlNZXRob2Q+KG1ldGhvZE5hbWUpOworICAgICAgICBt
YXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eU1ldGhvZD4obWV0
aG9kTmFtZSk7CiAKICAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQo
KTsKIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1l
ZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0
aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9y
UmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX2ZpZWxkcy5hZGQobmFtZS5pbXBsKCks
IG51bGxwdHIpOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiByZXBseS0+bV9y
ZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOworICAgICAgICBtYXBBZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlmaWVyKTsKICAgICBy
ZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2Nh
cGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
V2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDljNzFhM2NjOTIzZjMzZDJlMGFi
MzlhMWJmNmIxNGI0NDNlOTRkNGIuLmVlMTljNTY3YzAxZmExOGM1ZThkYzYxYjA4Yzg5NGU1MjAw
MmRhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTYw
LDYgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgIAogY2xhc3MgU29mdHdhcmVDQVJlbmRlcmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTb2Z0d2FyZUNBUmVuZGVyZXIodWludDMyX3Qg
Y29udGV4dElEKQogICAgICAgICA6IG1fY29udGV4dCB7IFtDQUNvbnRleHQgbG9jYWxDb250ZXh0
XSB9CkBAIC0xNjgsNyArMTY5LDcgQEAgLSAoQk9PTCljcmVhdGVQbHVnaW4KICAgICAgICAgcmV0
dXJuIE5POwogCiAgICAgaWYgKF9wcm94eS0+cmVuZGVyZXJUeXBlKCkgPT0gVXNlU29mdHdhcmVS
ZW5kZXJlcikKLSAgICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNv
ZnR3YXJlQ0FSZW5kZXJlcj4oX3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CisgICAgICAgIF9z
b2Z0d2FyZVJlbmRlcmVyID0gbWFrZVVuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+KF9wcm94eS0+
cmVuZGVyQ29udGV4dElEKCkpOwogICAgIGVsc2UKICAgICAgICAgW3NlbGYgY3JlYXRlUGx1Z2lu
TGF5ZXJdOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KaW5kZXggZjdhZWRi
Y2VkNGQ3ZjVjNGJhM2U5NmUzNTYxY2E3ZjBiMjY1YzhhYy4uOGVjMWJmNzllZTMyYTJhYzFiYmNm
N2EyMWU3M2U3ZTFlMDFkYjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCkBA
IC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlcj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyCiB7CiAgICAgc3dpdGNoIChb
cGx1Z2luVmlldyBldmVudE1vZGVsXSkgewogICAgIGNhc2UgTlBFdmVudE1vZGVsQ29jb2E6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyQ29jb2E+KHBsdWdpblZpZXcpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5WaWV3KTsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCmluZGV4IDcwODM3NzZkMjhhNzVj
ZmI1NDI1MzNkOTBmMzc3OGU4NWFiY2QxZDIuLmJiZDljNWQ1ODIxZjg1ZjY1ZWJjOGY3NzdlYzY1
NTIyOWQ1ZTg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIu
aCIKIAogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYSA6IHB1YmxpYyBX
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYShXZWJO
ZXRzY2FwZVBsdWdpblZpZXcqKTsgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMDJmZjIxODZkZjg0
YTlhOTBkN2U5YzI2YzA3NjI3OWUzMjIxMTM3OC4uMTYwNjYzZTg2MWY3MTBlYmZlZDFkNzY4NTY1
ZGQyMmExMTRlOGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE2NTUsNyArMTY1NSw3IEBAIC0g
KHVpbnQzMl90KXNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVydmFsIHJl
cGVhdDooTlBCb29sKXJlcGVhdCB0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIGlmICgh
dGltZXJzKQotICAgICAgICB0aW1lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8dWludDMy
X3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4+PigpOworICAgICAgICB0aW1lcnMgPSBt
YWtlVW5pcXVlPEhhc2hNYXA8dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4+
PigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPiogc2xvdDsKICAgICB1aW50
MzJfdCB0aW1lcklEOwpAQCAtMTY2Myw3ICsxNjYzLDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVU
aW1lcldpdGhJbnRlcnZhbDoodWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0
IHQKICAgICAgICAgdGltZXJJRCA9ICsrY3VycmVudFRpbWVySUQ7CiAgICAgd2hpbGUgKCF0aW1l
cnMtPmlzVmFsaWRLZXkodGltZXJJRCkgfHwgKihzbG90ID0gJnRpbWVycy0+YWRkKHRpbWVySUQs
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZSkpOwogCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGx1Z2luVGltZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwg
dGltZXJGdW5jKTsKKyAgICBhdXRvIHRpbWVyID0gbWFrZVVuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1
Z2luLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogCiAgICAgaWYgKF9z
aG91bGRGaXJlVGltZXJzKQogICAgICAgICB0aW1lci0+c3RhcnQoX2lzQ29tcGxldGVseU9ic2N1
cmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KaW5kZXggNzA0Y2QwOTVlODhmZTFhMjM4MTE4NmM2
YmZmMTMwZmM5MDIwNDFlYi4uNTdmYmJmYWQ5ZTY0Yjc2NzhhZDNhY2NlODA3NzhiYWNmMDM3ODFi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KQEAgLTk0LDEwICs5NCwxMSBAQCBXZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQ6On5XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQogfQogCiBjbGFzcyBE
aWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiAgICAg
ewotICAgICAgICBhdXRvIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlmeU9yaWdp
bkRhdGE+KGNsaWVudCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gbWFrZVVuaXF1
ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdpbik7CiAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSB7CiAgICAgICAgICAgICBjb250
ZXh0LT5jbGllbnQuZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29udGV4dC0+b3JpZ2luKTsKICAg
ICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IGEzYjE1OThl
ZTM1M2Q2N2UyM2FmODA5NThlYjdmNzVlYjE2N2Y0ZDguLmNkNzI2NDI2ODI1YmE3MjIxNTU3ZTA1
NjZmYTkyZWMwODExMTQ1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBA
IC0zMSw2ICszMSw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRl
eHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCmluZGV4IDc4
YjUzOWUzNzJiODY1YzU5NGZjMDc2ZjVhMWZjODRhYWZlOThiZjAuLjI3MTQyN2UyZDQ2ZWUzYTI5
N2QwNTQwMTJhN2E4NWFiOGIzZTFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBj
bGFzcyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRG
cmFtZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoaWQgd2ViRG9jdW1lbnRWaWV3KSA6IG1f
d2ViRG9jdW1lbnRWaWV3KHdlYkRvY3VtZW50VmlldykgeyB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CmluZGV4IGZkYzRjYzc4MTk2ZmNiY2YzMjYwMmQxOGUyODlmMDdhMTE1NGNjOTUuLmMwZmJkYTli
MmRhMWRkNDUxMGZmZTA4OWJmNjhmNWE3NjdkZDQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00
MSw2ICs0MSw3IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiAvLyBiYXNlIGNsYXNzIG9mIHRo
ZSBjb25jcmV0ZSBjbGFzcywgV2ViQ2hyb21lQ2xpZW50SU9TLiBCZWNhdXNlIG9mIHRoYXQsIHRo
aXMgY2xhc3MgYW5kCiAvLyBtYW55IG9mIGl0cyBmdW5jdGlvbnMgYXJlIG5vdCBtYXJrZWQgZmlu
YWwuIFRoYXQgaXMgbWVzc3kgd2F5IHRvIG9yZ2FuaXplIHRoaW5ncy4KIGNsYXNzIFdlYkNocm9t
ZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJWaWV3Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDE4ODVmMDMxMzEzNWI4MTdiMzBmOTQ1Nzc3
ZDhlMjRiMTUzOWJmOTAuLmE3ZjY2ZWVlZjMwNmE2ODYwNTQyMGU3OTg3NjIwMjU3YmUwNmI2YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJD
b250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogICAg
ICwgcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50CiAjZW5kaWYKIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVu
dChXZWJWaWV3ICp3ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudUNsaWVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCmluZGV4IDg0N2E3M2IxN2E0NjE3YmQ1NGE4ZDI4YTkyM2MxZDRhNjNiZGQx
MmUuLjMwZGYzZjczZDg1MGVhNzY5YzcxMzUyMjFkMmU4ODY1ZWE2N2UwM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJEcmFnQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCmluZGV4IGYwNTllMDU5ZTExODdhM2JjNWJkMjQ3Y2MyNDFmNTlhZGQ0NTA5NTAuLmI1
MTA3ODdkODA5YmNmOTdiNzY4OWU3NDA5MzI4Mzc1YWEwYjBiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC00NSw2ICs0NSw3IEBACiBAY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAogY2xhc3Mg
V2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVi
bGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vi
RWRpdG9yQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgdmlydHVhbCB+V2ViRWRpdG9yQ2xp
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDNkZDUwZTdiM2I5Y2Y5OTMz
NDljOWFiYjRjYjQ5NzgzN2VlYzM1M2UuLjk0MGIwZmY5NjNhODVjZTlkODhkN2JjNTZmZjZiM2Vl
YjJlM2Q5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDY3LDcgKzEwNjcs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKIHN0
YXRpYyB2b2lkIGFkZFJlZGlyZWN0VVJMKFdlYkhpc3RvcnlJdGVtICppdGVtLCBjb25zdCBTdHJp
bmcmIHVybCkKIHsKICAgICBpZiAoIWl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzKQotICAg
ICAgICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CisgICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0g
bWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAogICAgIC8vIE91ciBBUEkgYWxsb3dzIHVz
IHRvIHN0b3JlIGFsbCB0aGUgVVJMcyBpbiB0aGUgcmVkaXJlY3QgY2hhaW4sIGJ1dCBmb3IKICAg
ICAvLyBub3cgd2Ugb25seSBoYXZlIGEgdXNlIGZvciB0aGUgZmluYWwgVVJMLgpAQCAtMTM4MCw3
ICsxMzgwLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJh
bWUpCiB7Ci0gICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9wcml2
YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CisgICAgY2FjaGVkRnJhbWUtPnNldENh
Y2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGE+KG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0
aGlzIGZyYW1lIGlzIGdvaW5nIHRvIGJlIGNhY2hlZC4gU3RvcCBhbGwgcGx1Z2lucy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGZmZTI5OTMxMmViNDgwYmFmYjVmMGVhYzQzNTJmMjQz
Zjk2ZTAwZjcuLmZmZGJhY2ZjMjc0MjFlOGQzNTg4OGYyY2U2YjE4MDc3YTE2ZTMzZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBHZW9sb2NhdGlv
blBvc2l0aW9uOwogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3ICop
OwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKaW5kZXggYmQ3ZjYyZmM4NWRjOTljMzg3MTZmMDc2NjY0NjMxODI1MTFjNTRh
NS4uMGM5NDhiM2FlZjk4NzYwOTYzMDM1MWQ1OWFjNzkwYjJhYmVhZGE3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICppbnNwZWN0ZWRXZWJWaWV3KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDFjMDA4MDk3NjkyZmY5YjA3MWZjZTVhYzRhNGI0
NjkyZDEzN2VkOTUuLjdkM2U1ZWM5ZTYxNWUxZDQ4YzNkMDVkNzFhNTljNDUxZmViNzY2YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTEwOSw3ICsxMDksNyBAQCBGcm9udGVuZENoYW5u
ZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcAogICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVu
dDp0aGlzXTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5n
ZXQoKSBmcm9udGVuZFdlYlZpZXddKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCB3
aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9mcm9udGVu
ZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9
IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmll
dywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJv
bnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogCiAgICAgUmV0YWluUHRyPFdl
Ykluc3BlY3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0TlMoW1tXZWJJ
bnNwZWN0b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDptX2Zyb250ZW5k
Q2xpZW50LmdldCgpXSk7CiAgICAgW1ttX2luc3BlY3RlZFdlYlZpZXcgaW5zcGVjdG9yXSBzZXRG
cm9udGVuZDp3ZWJJbnNwZWN0b3JGcm9udGVuZC5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oCmluZGV4IDE1YjQxODA0OGU0ZjFkNDYyNGMzMDNkY2JiZmVkMTY5Nzk2NDQ4NjEuLjk0
ZWQ2MThhYzc4ZWU4YmNmNTcxNTVjOWFkYWJjYmRhZGY2OGM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3Mg
V2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTm90aWZp
Y2F0aW9uQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0dXJu
IG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgK
aW5kZXggYTNkNmFlNjM2MzY0N2M1ZjMwY2M3OWZiZDYzNWY2NjRiY2EwMTIzYy4uZGM5ZDExYTM1
ODdlZTA0ZjUwMTUxYmU4OGJjNWQ0YjE0OGJjZGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEludFBvaW50Owog
fQogCiBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA6IHB1YmxpYyBXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIoV2ViVmlldyopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQppbmRleCAyNTM2NDhkOGU4NDU5MTFl
MmFlMjhjMGJiODYzY2I1N2Y3YzMwMDM5Li4yNzZkOWYxNWVmOGZhNWUxZmVkNDM4ZWQ5YzFkMjU5
YTc4NTgzNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KQEAgLTM2
LDcgKzM2LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYg
KCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IHN0ZDo6bWFrZV91bmlx
dWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOworICAgIG1fY29yZSA9IG1ha2VVbmlx
dWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOwogICAgIHJldHVybiBzZWxmOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBhOTA2
MjJjMjA3NGUwY2RjZWNlZjJjNmMxYzg0OTQ1ZDRlOWRmZmFiLi4zYTk0YmI5MTBkMjU5ZWZhYTg5
MWQ1MjllODBkMmI1YjAwMjBiNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KQEAgLTM3OCw3ICszNzgsNyBAQCAtICh2b2lkKV9hdHRhY2hTY3JpcHRE
ZWJ1Z2dlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3ByaXZhdGUtPnNjcmlwdERl
YnVnZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0
KTsKKyAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBtYWtlVW5pcXVlPFdlYlNjcmlwdERl
YnVnZ2VyPihnbG9iYWxPYmplY3QpOwogfQogCiAtICh2b2lkKV9kZXRhY2hTY3JpcHREZWJ1Z2dl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCBkZmE3ZWZkMDYwNmFkYzQ5ZmUyOTFk
MDUyMWQxMzJlNmUxOWM1MDczLi5hMDcyZTgxOTUyNDkzOWFlMGYyMmJiOTgzNmQzYWM3MDVkODU3
OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFz
cyBQYWdlOwogfQogCiBjbGFzcyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIDogcHVibGlj
IFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlcj4gY3JlYXRlKFdlYkNvcmU6OlBhZ2UmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDcyYzIwYzY5M2ZlY2JhOTcxMDQ2MzQxNjQxY2Nl
MTE0OTRkZTRhNjkuLjYwMjQwMjk5NjJlYzM0ZjAwZjRhYWQ5NDMyYTdmYzQyYmExZDE3NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogc3RkOjp1
bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+IFdlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXI6OmNyZWF0ZShXZWJDb3JlOjpQYWdlJiBwYWdlKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBhZ2UpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBhZ2UpOwog
fQogCiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyKFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDFhNzI1OGI0MjNhODQ1Nzg5MWU0
MTVlMTBkMDAyNTY3MzBhYTJiZGUuLmUzNjNiODViMmIzZDVhZTE0NzNjODM3MjcxODU4MzRkNTE3
ODdiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4
dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4
dEl0ZXJhdG9yLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KERPTVJh
bmdlICopcmFuZ2UKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgCiAgICAgX3ByaXZhdGUgPSBb
W1dlYlRleHRJdGVyYXRvclByaXZhdGUgYWxsb2NdIGluaXRdOwotICAgIF9wcml2YXRlLT5fdGV4
dEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUo
cmFuZ2UpKTsKKyAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiY2NjNjRiMDdh
M2QwNWY5YmU4NDVmZDE2YThhNGUxNThiNTY0NzVkLi4xMGYyMTg4NGViNGE5Yzk4NGFjMzJlNjAx
NDE0OTg1MGI4YzE5YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCkBAIC0xMjI5LDcgKzEyMjksNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmxlYWtPdXRsb29r
UXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCkKIC0odm9pZClfaW5qZWN0T3V0bG9va1F1aXJrc1Nj
cmlwdAogewogICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRz
ID0gbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKLSAgICBfcHJpdmF0ZS0+
Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUoW1dlYlNj
cmlwdFdvcmxkIHdvcmxkXSksIHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4ob3V0bG9va1F1
aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKKyAgICBfcHJp
dmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUo
W1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlxdWU8VXNlclNjcmlwdD4ob3V0bG9va1F1
aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKIAogfQogI2Vu
ZGlmCkBAIC0xNDQzLDcgKzE0NDMsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZik7
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4
dE1lbnVDbGllbnQoc2VsZik7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBlbmFibGUgdGhpcyBv
biBpT1MgYXMgd2VsbC4KLSAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KHNlbGYp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gbWFrZVVu
aXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxmKTsKICNl
bHNlCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNs
aWVudElPUyhzZWxmKTsKQEAgLTQ2MzMsNyArNDYzMyw3IEBAICsgKHZvaWQpX2FkZFVzZXJTY3Jp
cHRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3
b3JsCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1c2VyU2Ny
aXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdW
ZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGlt
ZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJ
bmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1l
cyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgIGF1dG8g
dXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5n
VmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRp
bWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDog
SW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFt
ZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKICAgICB2aWV3
R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUod29ybGQp
LCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtNDY1Niw3ICs0NjU2LDcgQEAgKyAodm9p
ZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDoo
V2ViU2NyaXB0V29ybGQgKikKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3Vy
Y2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2ts
aXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFs
bEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAg
IGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJs
LCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBp
bmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVz
IDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CiAgICAgdmlld0dy
b3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCgqY29yZSh3b3Js
ZCksIFdURk1vdmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogfQog
CkBAIC05NDE2LDcgKzk0MTYsNyBAQCAtIChWZWN0b3I8U3RyaW5nPilfZGljdGF0aW9uQWx0ZXJu
YXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0CiAtIChXZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlciYpX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyCiB7CiAgICAgaWYgKCFfcHJp
dmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKQotICAgICAgICBfcHJpdmF0ZS0+X3Nl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CisgICAgICAgIF9wcml2YXRlLT5fc2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
PihzZWxmKTsKICAgICByZXR1cm4gKl9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xs
ZXI7CiB9CiAjZW5kaWYKQEAgLTk0NzUsNyArOTQ3NSw3IEBAIC0gKHZvaWQpX3NldFRleHRJbmRp
Y2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3IKIC0gKHZvaWQpX3NldFRleHRJbmRp
Y2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOihUZXh0SW5k
aWNhdG9yV2luZG93TGlmZXRpbWUpbGlmZXRpbWUKIHsKICAgICBpZiAoIV9wcml2YXRlLT50ZXh0
SW5kaWNhdG9yV2luZG93KQotICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CisgICAgICAgIF9w
cml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxUZXh0SW5kaWNhdG9yV2lu
ZG93PihzZWxmKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGlu
YXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OltzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290Vmlldzp0
ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKV0gdG9W
aWV3Om5pbF07CiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVz
ID0gW3NlbGYud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46dGV4dEJvdW5kaW5nUmVjdEluV2lu
ZG93Q29vcmRpbmF0ZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEubW0KaW5kZXggMTA2MGMyZDg1NGFkYTBkY2FmYjMzNTU5YzgxMWU0ZWU0OTRjYzZl
MC4uODIzOGE0ZWM1ZmVlMTY4MzY0ZWQxMzA0YmM3NTE1ZjU1MTdmZTg5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC05Niw3ICs5Niw3
IEBAIExheWVyRmx1c2hDb250cm9sbGVyOjpMYXllckZsdXNoQ29udHJvbGxlcihXZWJWaWV3KiB3
ZWJWaWV3KQogV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2No
ZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVyKiBmbHVzaENvbnRyb2xsZXIpCiAgICAgOiBtX2Zs
dXNoQ29udHJvbGxlcihmbHVzaENvbnRyb2xsZXIpCiB7Ci0gICAgbV9ydW5Mb29wT2JzZXJ2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8
Q0ZJbmRleD4oV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJz
OjpMYXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFdlYkNv
cmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCks
IFt0aGlzXSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaENhbGxiYWNrKCk7CiAgICAgfSk7
CiB9CkBAIC0yMDgsNyArMjA4LDcgQEAgLSAoaWQpaW5pdAogICAgIHBsdWdpbkRhdGFiYXNlQ2xp
ZW50Q291bnQrKzsKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4o
KTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDY0NmU2YWVmOTMy
ZjFjOTkyOTg1MzZjODJmMmM5NTVhNzFhMTkyY2YuLmZlNDRlNzUxY2MxMWMwZWFhZmUyODE4MTc5
ZWRjZjY1YTdmMWM3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCkBAIC0yNDYsMTAgKzI0NiwxMCBAQCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKICAgICAsIG1f
bW92aW5nV2luZG93KGZhbHNlKQogICAgICwgbV90aW1lcigqdGhpcywgJkZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnRpbWVyRmlyZWQpCiAjaWYgVVNFKENBKQotICAgICwgbV9sYXllckNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKKyAgICAsIG1fbGF5ZXJDbGll
bnQobWFrZVVuaXF1ZTxMYXllckNsaWVudD4odGhpcykpCiAgICAgLCBtX3Jvb3RDaGlsZChQbGF0
Zm9ybUNBTGF5ZXJXaW46OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyLCBt
X2xheWVyQ2xpZW50LmdldCgpKSkKICNlbmRpZgotICAgICwgbV9mdWxsc2NyZWVuV2luZG93KHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4oc3RhdGlj
X2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRoaXMpKSkKKyAgICAs
IG1fZnVsbHNjcmVlbldpbmRvdyhtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQq
Pih0aGlzKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmNwcAppbmRleCBhYmE2M2RhYjhiMzFlNDdhYmQ4MDg4YjM3ODNhODBlYzU0
YzEwMjE4Li4wZjZiZWVmZmFkMWRjMDE1YzhhNDc3ZTdmYmU1YzliNmFhZmFmZjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC00
MzMsNyArNDMzLDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIKIAogICAgIGlmIChtX3RyYW5z
ZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9kZWxpdmVyeURhdGEp
Ci0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPGNo
YXI+PigpOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBtYWtlVW5pcXVlPFZlY3Rvcjxj
aGFyPj4oKTsKIAogICAgICAgICBpbnQgb2xkU2l6ZSA9IG1fZGVsaXZlcnlEYXRhLT5zaXplKCk7
CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5yZXNpemUob2xkU2l6ZSArIGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyMTM2
MzE3ZjI5OTlkNWUxMzc0OWRmMzhlMTlhOGY0ZDJmMjViZDYwLi41NDcxNmEwYmIyYjFmYWI3NWQ4
MWRlNDJhZWU5NmVlYTJmNmIxM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTUxMCw3ICs1MTAsNyBAQCBOUEVycm9yIFBsdWdpblZp
ZXc6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5v
dGlmaWNhdAogICAgIH0gZWxzZSBpZiAoIW1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1cmwpKQogICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJ
Q19FUlJPUjsKIAotICAgIHNjaGVkdWxlUmVxdWVzdChzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpblJl
cXVlc3Q+KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHNlbmROb3RpZmljYXRpb24sIG5vdGlm
eURhdGEsIGFyZVBvcHVwc0FsbG93ZWQoKSkpOworICAgIHNjaGVkdWxlUmVxdWVzdChtYWtlVW5p
cXVlPFBsdWdpblJlcXVlc3Q+KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHNlbmROb3RpZmlj
YXRpb24sIG5vdGlmeURhdGEsIGFyZVBvcHVwc0FsbG93ZWQoKSkpOwogCiAgICAgcmV0dXJuIE5Q
RVJSX05PX0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMDU3MjhmM2VkMzcyMDUwNGFmNTVmOTg3N2Y4NjIxYmRj
MDVjZTYyMi4uNTIwNDU5NGFiNmY4NGQ1NzAwMDQwZGZkMjk4MWMzZjU2M2VkZmYzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBA
IC0zMTAsNyArMzEwLDcgQEAgUGx1Z2luVmlldzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVz
c2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAobWVzc2FnZSA9PSBX
TV9VU0VSICsgMSAmJgogICAgICAgICBtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2lu
UXVpcmtUaHJvdHRsZVdNVXNlclBsdXNPbmVNZXNzYWdlcykpIHsKICAgICAgICAgaWYgKCFtX21l
c3NhZ2VUaHJvdHRsZXIpCi0gICAgICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4+KHRoaXMpOworICAgICAgICAgICAg
bV9tZXNzYWdlVGhyb3R0bGVyID0gbWFrZVVuaXF1ZTxQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2lu
Pih0aGlzKTsKIAogICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXItPmFwcGVuZE1lc3NhZ2UoaFdu
ZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDUzMGI2OWVkNzE5YzI3YWNjNmIwN2UzNTE1OTIyMWY1NTI2YzUzMDUuLjNiZjQ0ZDg3ZDE4
ZDVmMjczY2QyOTUzNTY3NmIyNDA4ZjJjOTE0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaD4KIAogY2xhc3Mg
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKElXZWJEYXRhU291cmNlKiB3ZWJEYXRhU291cmNl
KSA6IG1fd2ViRGF0YVNvdXJjZSh3ZWJEYXRhU291cmNlKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggNGE0OWI5NGJiYTU4ZDBjNTQ2MzMyOWMzZjZlZjIzZTg0ODhiN2FmMy4uN2IyOTlj
ZWUyNWVjZDEwYmJhNjIxYzg1ODFiMDZhZTA2YzVhMWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RmlsZVBhdGhzTGlzdFNp
emUgPSBVU0hSVF9NQVg7CiBXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNsaWVudChXZWJWaWV3
KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCi0gICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShzdGQ6Om1ha2VfdW5pcXVlPFdl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZpZXcpKQorICAgICwgbV9ub3RpZmlj
YXRpb25zRGVsZWdhdGUobWFrZVVuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRl
Pih3ZWJWaWV3KSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA0MWQ1ZjA2YWVh
Y2I3ZTE0MTdkNGI3MDI0MDA2MGJiZTU3ZjY5MzBmLi43ODc1NDMyNTNkNWRmZjRlYzY2OGViZTg4
ZjA4ODVkMGJhZGI2NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFz
cyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOwogaW50ZXJmYWNlIElXZWJVSURlbGVn
YXRlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hy
b21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBX
ZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRl
eCBjOWRlNDliM2NkMTQ1NTE3MjhmYjJmOWQ5NmVmNDkwZTk5MTU4YmQ0Li5mNDhlZTczMGVlZjcx
OTc5ZTRkOGQyYzMyN2VkMWJhMTdiOTRmZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgK
QEAgLTMwLDYgKzMwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVudChXZWJW
aWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBiNTk4OTMzMjkxMDA5ZTI4NTFlZDc1NDE1ZWM0YWEw
ZmU0MDNkNjExLi40NWUzY2E3Mjc1M2FkMWFjMTE1M2JlOTYxOTNmNmVkNjIxZmY4OWQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJE
cmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwogICAg
IHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCBkYjYzNTJkNjM4MTZmN2M5YWVlZTlmNzQ0ZTQ4ZTM4MWU4NTZkMmI1Li42OWQ3ZWQzZTBh
YTMxZjEzYmVhNjRjZjBjMjc2NWUyNTRmYmY4ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMzUs
NiArMzUsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBXZWJFZGl0b3JVbmRvVGFy
Z2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RWRp
dG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVudChXZWJWaWV3
Kik7CiAgICAgfldlYkVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDhlMzU0YjcxY2RmZDJhNWY5YjhiMDExYTAzMjlkNzQyNGJjOTBiYmMuLjc3MWY4ZWE2
ZjcxNjgwOWNkZmFkZDdlMzhjNjBkYzdhMDNlMDFmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudDo6
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUgewogfTsKIAogV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiB3ZWJGcmFtZSkKLSAgICA6IG1fcG9s
aWN5TGlzdGVuZXJQcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByaXZhdGU+KCkpCisgICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShtYWtlVW5pcXVlPFdl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQogICAgICwgbV93ZWJGcmFtZSh3ZWJGcmFt
ZSkKICAgICAsIG1fbWFudWFsTG9hZGVyKDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1
Z2luKGZhbHNlKSAKQEAgLTk3Myw3ICs5NzMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbQog
CiAgICAgQVNTRVJUKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBjYWNo
ZWRGcmFtZS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVG
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CisgICAgY2FjaGVkRnJhbWUtPnNl
dENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGE+KHN0YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3Jl
RnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkpOwogI2Vsc2UKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBlYjk3NThi
ZDQyMTA3ZDJmOWE4NTRlNGU2ODgxNjZhNmY1MTVmYjlmLi5iYmE5YzlmNDQ1MzU4ZDdjZTNlYTAz
Zjg5NjY0MWJkNmU1ZTA0MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYg
KzM2LDcgQEAgY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYlZpZXc7CiAKIGNs
YXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9s
b2NhdGlvbkNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4
IDc1Njk1OTBjMWIzY2YzODE2ZmM0MmEzNWJmM2Y2NmJmZDc4OTAyMjQuLmY4MGFlMDQ4YjgyZGJk
YjIzNDY1NDY4ZDkzM2M2MGE3MDk3MmM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApA
QCAtMTY5LDcgKzE2OSw3IEBAIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0
b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7
Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxl
LCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhp
cywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBt
X2luc3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBm
cm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogICAg
IG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQobV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9
IGZyb250ZW5kSHduZDsKICAgICByZXR1cm4gdGhpczsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KCkKICAgICBib29sIGNyZWF0aW5nSGlnaGxp
Z2h0ID0gIW1faGlnaGxpZ2h0OwogCiAgICAgaWYgKGNyZWF0aW5nSGlnaGxpZ2h0KQotICAgICAg
ICBtX2hpZ2hsaWdodCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViTm9kZUhpZ2hsaWdodD4obV9pbnNw
ZWN0ZWRXZWJWaWV3KTsKKyAgICAgICAgbV9oaWdobGlnaHQgPSBtYWtlVW5pcXVlPFdlYk5vZGVI
aWdobGlnaHQ+KG1faW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBpZiAobV9oaWdobGlnaHQtPmlz
U2hvd2luZygpKQogICAgICAgICBtX2hpZ2hsaWdodC0+dXBkYXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCmluZGV4IDk1YzlhZmE4NTAwMmE1NDMyNzBiN2NlNmIzODhjNzBkNDg5MTg1MTguLmYy
MGVhZWJkNjYxZjkxMmJhY2YyZDk5ZjQ0MDlkYmNkN2E5NzFlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBjbGFzcyBX
ZWJWaWV3OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYklu
c3BlY3RvckNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY4YzZiZDQ5MzljZjliMDQ4OTU3YmM3NTAwYmQ4
NTQ4YTAxZWUzYjIuLjE2MjdlYzVmYTI2YmY1OTAxZDA1OTNiNWExODM5Njk0NzkyMTkwYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAt
MzQ3LDYgKzM0Nyw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxJbmRl
eGVkRGF0YWJhc2VzKCkKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlkTW9kaWZ5
T3JpZ2luRGF0YSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJl
YWQoV2ViRGF0YWJhc2VNYW5hZ2VyKiBkYXRhYmFzZU1hbmFnZXIsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggMjdhZjFiYWU2NTNlZmYwMmY2NzA0ZjdlMzlhZDBlMWFj
NTBhZDcwYi4uOGFmYmEwZjZkNTNhZmQ1NTU4NDVjMTk1MzZjMmE5YzFlYzVmMzdkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBA
IC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZWJFbGVtZW50
UHJvcGVydHlCYWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKGNvbnN0IEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCkKLSAgICA6IG1fcmVzdWx0KHN0ZDo6bWFrZV91bmlxdWU8SGl0
VGVzdFJlc3VsdD4ocmVzdWx0KSkKKyAgICA6IG1fcmVzdWx0KG1ha2VVbmlxdWU8SGl0VGVzdFJl
c3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggYTgxYzAwZTU2YzVkZTJhZWJjMTJhYjhiNmRiMTFi
YzkzNGViYmJkYS4uZmI4OGUzOWU3YjU2YWMzMmRjZjVjZjUwMTFjMzU0ODE3MWE2YzNiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMTE1LDcgKzEx
NSw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2Vu
dGF0aW9uKF9Jbl9vcHRfIHZvaWQqIGRpY3Rpb25hCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdHJpbmc+PiByZWRpcmVjdFVSTHNWZWN0b3I7CiAgICAgaWYgKENGQXJyYXlSZWYgcmVkaXJl
Y3RVUkxzUmVmID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZGljdGlvbmFyeVJlZiwgcmVkaXJlY3RVUkxzS2V5KSkpIHsKICAgICAgICAgQ0ZJbmRleCBzaXpl
ID0gQ0ZBcnJheUdldENvdW50KHJlZGlyZWN0VVJMc1JlZik7Ci0gICAgICAgIHJlZGlyZWN0VVJM
c1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KHNpemUpOworICAgICAg
ICByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PihzaXplKTsK
ICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAg
KCpyZWRpcmVjdFVSTHNWZWN0b3IpW2ldID0gU3RyaW5nKHN0YXRpY19jYXN0PENGU3RyaW5nUmVm
PihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlZGlyZWN0VVJMc1JlZiwgaSkpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NBRDNEUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAppbmRleCAyZjFmMmY0ODA3ZWI5YzRm
ZTcwODM1ZGI3OGUzNGEzNGJjZmYzNmQwLi5kNjVkZTE5ZWU5OWM0NTE0NDVkZmJmMWIxMzU5ZGMy
YThiYTM4Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKQEAgLTIy
NCw3ICsyMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0PiBD
QUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2luZwogICAgIG1lbWNweShvdmVybGF5
UXVhZEJ1ZmZlciwgb3ZlcmxheVF1YWRWZXJ0aWNlcywgc2l6ZW9mKG92ZXJsYXlRdWFkVmVydGlj
ZXMpKTsKICAgICBvdmVybGF5UXVhZC0+VW5sb2NrKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1
YWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4oc2Nl
bmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CiB9CiAKIC8vIEZJWE1FOiA8cmRhcjovLzY1MDc4NTE+
IFNoYXJlIHRoaXMgY29kZSB3aXRoIENvcmVBbmltYXRpb24ncwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggN2JkOTg4OTYxMTFj
M2IzZmU2ZmU1NGYwYTI0Nzk2NjA2YjIyYTc1Zi4uYjIwYmFjZDYyOWViNWFjMGQyNzIwNDJkODc4
YjE2MGU4NDVhYzFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90
aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0cnVjdCBXZWJOb3RpZmljYXRp
b25DZW50ZXJQcml2YXRlIHsKIElXZWJOb3RpZmljYXRpb25DZW50ZXIqIFdlYk5vdGlmaWNhdGlv
bkNlbnRlcjo6bV9kZWZhdWx0Q2VudGVyID0gMDsKIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpX
ZWJOb3RpZmljYXRpb25DZW50ZXIoKQotICAgIDogZChzdGQ6Om1ha2VfdW5pcXVlPFdlYk5vdGlm
aWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCisgICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0
aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IDk3NjE0OGUzM2Y3NDQ2ZDdjMzg0OTk1OWQ2Y2Y3M2RlZjQ4ZjY3
ZmYuLjkyZDM5YWM0YmM1YTA1ZWVjMTRkZDFlYWI0MDk1MTZmNDQ0NjRkOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xODgwLDcgKzE4ODAsNyBAQCBib29sIFdlYlZpZXc6
OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBh
cmFtKQogICAgICAgICBtb3VzZUV2ZW50LnNldENsaWNrQ291bnQoZ2xvYmFsQ2xpY2tDb3VudCk7
CiAgICAgICAgIGhhbmRsZWQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLm1v
dXNlTW92ZWQobW91c2VFdmVudCk7CiAgICAgICAgIGlmICghbV9tb3VzZU91dFRyYWNrZXIpIHsK
LSAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxUUkFDS01P
VVNFRVZFTlQ+KCk7CisgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9IG1ha2VVbmlxdWU8
VFJBQ0tNT1VTRUVWRU5UPigpOwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXItPmNiU2l6
ZSA9IHNpemVvZihUUkFDS01PVVNFRVZFTlQpOwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNr
ZXItPmR3RmxhZ3MgPSBUTUVfTEVBVkU7CiAgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlci0+
aHduZFRyYWNrID0gbV92aWV3V2luZG93OwpAQCAtNjc5NCw3ICs2Nzk0LDcgQEAgSFJFU1VMVCBX
ZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmlld01JTUVUeXBlKF9Jbl8gQlNUUiBtaW1lVHlwZSkK
ICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIGlmICghbV9lbWJlZGRlZFZpZXdNSU1F
VHlwZXMpCi0gICAgICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzID0g
bWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAKICAgICBtX2VtYmVkZGVkVmlld01JTUVU
eXBlcy0+YWRkKHRvU3RyaW5nKG1pbWVUeXBlKSk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC02ODk0
LDcgKzY4OTQsNyBAQCB2b2lkIFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudAogICAgICAgICBBU1NFUlQoIW1f
ZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlcik7CiAgICAgfQogCi0gICAgbV9mdWxsU2NyZWVuVmlk
ZW9Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
PigpOworICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcj4oKTsKICAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIt
PnNldFZpZGVvRWxlbWVudCgmdmlkZW9FbGVtZW50KTsKICAgICBtX2Z1bGxTY3JlZW5WaWRlb0Nv
bnRyb2xsZXItPmVudGVyRnVsbHNjcmVlbigpOwogI2VuZGlmCkBAIC02OTQ2LDcgKzY5NDYsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5h
bWUsIF9Jbl9vcHRfIElXZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAg
ICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3Js
ZCo+KGlXb3JsZCk7Ci0gICAgYXV0byB1c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2Vy
U2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hp
dGVsaXN0Q291bnQpLAorICAgIGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlw
dD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlz
dENvdW50KSwKICAgICAgICAgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3Vu
dCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXRE
b2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwKICAgICAgICAgaW5qZWN0ZWRGcmFt
ZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdElu
VG9wRnJhbWVPbmx5KTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFk
ZFVzZXJTY3JpcHQod29ybGQtPndvcmxkKCksIFdURk1vdmUodXNlclNjcmlwdCkpOwpAQCAtNjk3
Myw3ICs2OTczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3JvdXAo
X0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8gc3R5bGVTaGVldCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwg
YmxhY2tsaXN0Q291bnQpLAorICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8VXNlclN0
eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3
aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQp
LAogICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVj
dEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7
CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVl
dCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0Rv
Y3VtZW50cyk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC03MjM3LDcgKzcyMzcsNyBAQCB2b2lkIFdl
YlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICB9
CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgaWYgKGFjY2VsZXJhdGVkICYmICFt
X2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQotICAgICAgICBtX2FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dD4oKnRoaXMpOworICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
ID0gbWFrZVVuaXF1ZTxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4oKnRoaXMpOwogICAg
IG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gYWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29IZWFwLmgKaW5kZXggZWVjYTczOWQyYjM5NGU4NjAzNTFiYTFiNDY0ZGU1
NDc4YjliYjE2Ny4uZGIzNmViOWRlZDJiOWUwZjVmNmVmNDBkYjZjNjk5MTlhNzMwNmQ5MiAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOiBcCiAgICAg
XAogICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0ZTsgXAogICAg
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgPSBkZWxldGU7IFwKK3R5cGVkZWYgaW50
IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX21ha2VC
aXNvTWFsbG9jZWRNYWNyb1NlbWljb2xvbmlmaWVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
SGVhcElubGluZXMuaAppbmRleCBjMDQ0ZDc3M2I4NzlhNjZkZmFkZDJlMmNhMzE1ZWVlYTM3NmZm
YTRhLi4zYWExZDIwOTUxZGJmMzM2NGU3ZDE2ZGQyMzY0M2QwY2Q5N2Y2ZjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVibGlj
OiBcCiAgICAgXAogICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0
ZTsgXAogICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgPSBkZWxldGU7IFwKK3R5
cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGlu
dCBfX21ha2VCaXNvTWFsbG9jZWRJbmxpbmVNYWNyb1NlbWljb2xvbmlmaWVyCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMTE4MWUzODY1ZGY2
Y2FkZGQ1YjQwMjFkODcwNGI5NzQ2YTRmMTc2Li4yNWRhZjAyZGIxMDBkM2U5ODBmYWQzMDUwNTZl
MWFiMDFkNjE0ODNkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMzIEBACisyMDE5LTA4LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNo
IGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayk6CisgICAgICAgIChzZXRXaWxsU2VuZFJl
cXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEFjY3Vt
bXVsYXRlTG9nc0ZvckNoYW5uZWwpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHQp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGR1bXBGcmFtZXNB
c1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9s
bGVyLm1tOgorICAgICAgICAoZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3
QW5kRXZlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNw
cDoKKyAgICAgICAgKERSVERhdGFPYmplY3Q6OlNldERhdGEpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxl
Z2F0ZTo6RnJhbWVMb2FkRGVsZWdhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9V
SURlbGVnYXRlLmNwcDoKKyAgICAgICAgKERSVFVuZG9NYW5hZ2VyOjpEUlRVbmRvTWFuYWdlcik6
CisgICAgICAgIChVSURlbGVnYXRlOjpVSURlbGVnYXRlKToKKyAgICAgICAgKFVJRGVsZWdhdGU6
OnJlc2V0VW5kb01hbmFnZXIpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoK
KyAgICAgICAgKGNyZWF0ZVZpZXdCYWNrZW5kKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAq
IFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oOgorICAg
ICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvQ291bnRlcnMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L0phdmFTY3JpcHRUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkpTVGVzdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBl
Y3RlZC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFw
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6dGVzdE1vdmluZ1VzaW5nRW5zdXJlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRl
c3RNb3ZpbmdVc2luZ0FkZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aFNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkxvY2tUZXN0KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvV2Vha1B0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkNBUmluZ0J1ZmZlclRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpjcmVhdGVUZXN0VmFsdWUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OldlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRlc3Q6OlNldFVwKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpXZWJLaXQyV2lsbExvYWRUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVf
QnVuZGxlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Rm9yY2VMaWdodEFwcGVhcmFuY2VJ
bkJ1bmRsZVRlc3Q6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcDoKKyAgICAgICAgKHNlcnZl
ckNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Qcm94eUhUVFBT
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rl
c3QuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5k
b3dUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKGFwcGx5V29ya2Fyb3VuZFRv
QWxsb3dXcml0aW5nQXR0cmlidXRlZFN0cmluZ3NUb0l0ZW1Qcm92aWRlcnMpOgorICAgICAgICAo
LVtUZXN0V0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjphZGRUb1dpbmRvdzpd
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOgor
ICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgaW5pdFdpdGhGb250T3B0aW9uczpdKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZENyZWF0ZVBh
Z2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmls
ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxh
dGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlv
bnMuaDoKKyAgICAgICAgKFdUUjo6dG9TVEQpOgorICAgICAgICAoV1RSOjp0b1dURlN0cmluZyk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6
OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cnVuVGVzdCk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnNldERlZmF1bHRDYWxlbmRhclR5cGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3Rr
L0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RSOjpnZXRHREtLZXlTeW1Gb3JL
ZXlSZWYpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9T
Lm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEtleWJv
YXJkSW5wdXRNb2RlSWRlbnRpZmllcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMv
RXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91
c2VEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAg
ICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdUUjo6
d3BlS2V5U3ltRm9yS2V5UmVmKToKKwogMjAxOS0wOC0xMiAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHMgV2ViQXV0aG4gYW5kIEFwcFNTTyBpbnRvIHdh
dGNobGlzdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBlODE3YTU3M2E1OGQx
NTlkNGNmMjM0OTgyY2NhMDRkY2Q2NGI2MDRhLi44ZjEzZWUwMDNhM2RlMGEwZDk0ODYxMTkxMzIy
ZjM0ZjhhZGVlZDI0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVy
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMzYzLDEx
ICszNjMsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgYWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW4KICAgICBBU1NFUlQoISpleGNlcHRp
b24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShvcmlnaW4uZ2V0KCkpOwotICAgIGF1dG8gb3JpZ2luQnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gb3JpZ2luQnVmZmVyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsK
ICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKG9yaWdpbi5nZXQoKSwgb3JpZ2luQnVmZmVyLmdl
dCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShkZXN0aW5hdGlvbi5nZXQoKSk7Ci0gICAgYXV0byBkZXN0aW5hdGlv
bkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBh
dXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGRlc3Rp
bmF0aW9uLmdldCgpLCBkZXN0aW5hdGlvbkJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAK
ICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xMzA0LDcgKzEzMDQsNyBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKUwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXpl
X3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGhlYWRlci5n
ZXQoKSk7Ci0gICAgYXV0byBoZWFkZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
bWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBoZWFkZXJCdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0
VVRGOENTdHJpbmcoaGVhZGVyLmdldCgpLCBoZWFkZXJCdWZmZXIuZ2V0KCksIG1heExlbmd0aCAr
IDEpOwogCiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5u
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMjM3OSw3ICsyMzc5LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGJvb2wgc2hvdWxk
UGFpbnRCcm9rZW5JbWFnZSkKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9y
Q2hhbm5lbChKU1N0cmluZ1JlZiBjaGFubmVsKQogewogICAgIHNpemVfdCBtYXhMZW5ndGggPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY2hhbm5lbCk7Ci0gICAgYXV0byBidWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBi
dWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0
aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoY2hhbm5lbCwgYnVmZmVyLmdldCgp
LCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0TG9nQ2hhbm5l
bFRvQWNjdW11bGF0ZSh7IGJ1ZmZlci5nZXQoKSB9KTsKQEAgLTI0NDksNyArMjQ0OSw3IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5n
UmVmIHNjcmlwdCwgSlNWYWx1ZVJlCiAgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soY2FsbGJh
Y2tJRCwgY2FsbGJhY2spOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4dCkKLSAgICAgICAg
bV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdUUjo6VUlTY3JpcHRDb250ZXh0
PigqdGhpcyk7CisgICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKIAogICAgIFN0cmlu
ZyBzY3JpcHRTdHJpbmcoSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyKHNjcmlwdCksIEpTU3RyaW5n
R2V0TGVuZ3RoKHNjcmlwdCkpOwogICAgIG1fVUlTY3JpcHRDb250ZXh0LT5ydW5VSVNjcmlwdChz
Y3JpcHRTdHJpbmcsIGNhbGxiYWNrSUQpOwpAQCAtMjUwNiw3ICsyNTA2LDcgQEAgdm9pZCBUZXN0
UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmlu
Z0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBudWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxl
QnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgp
KSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltd
PihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUpOwogICAgICAgICBK
U1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCksIGZpbGVC
dWZmZXJTaXplKTsKIAogICAgICAgICBtX29wZW5QYW5lbEZpbGVzLnB1c2hfYmFjayhmaWxlQnVm
ZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpp
bmRleCA2NGRiMWQxN2Y5YmM5Y2I4Y2U2ZDgyZjliNzdkYmYzODc1YWNhMGNhLi45NTdjNGU2Mzk1
OTExODYzNWQ3MjIxNWUwY2FjN2NiNmZkNzIwY2RmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xNTM1LDcgKzE1MzUsNyBAQCBzdGF0aWMgTlNTdHJp
bmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgIC8vIHRoZSByZXN1bHQg
d2l0aG91dCBhbnkgY29udmVyc2lvbi4KICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3Ry
aW5nUmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpaW5uZXJUZXh0KSk7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dl
dE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nUmVmLmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7
CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25TdHJp
Y3Qoc3RyaW5nUmVmLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIFtyZXN1
bHQgYXBwZW5kRm9ybWF0OkAiJUBcbiIsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJh
Y2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5tbQppbmRleCA0NjFiZDNkZjNlYmIyNjAzYWMzMjE4Mjg4MjE4ZGQ4ZjY5MTY4ZmZkLi4z
YmUzMzIyMWQ2YjNlYmMzNTZkNTFlMzM0YTI0ZDkyOWFlMjUzYTllIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtNTY4LDcg
KzU2OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2xhc3NNZXRob2RTd2l6emxlcj4gZXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWCiB7CiAgICAgaWYgKFt2aWV3IGlzS2lu
ZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAgICAgIHZpZXcgPSBbKFdlYkhUTUxW
aWV3ICopdmlldyBfaGl0Vmlld0ZvckV2ZW50OmV2ZW50XTsKLSAgICByZXR1cm4gIVt2aWV3IGlz
S2luZE9mQ2xhc3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NN
ZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0
dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0
dG9ucykpIDogTlVMTDsKKyAgICByZXR1cm4gIVt2aWV3IGlzS2luZE9mQ2xhc3M6W05TU2Nyb2xs
ZXIgY2xhc3NdXSA/IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xh
c3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
Pihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpIDogTlVMTDsKIH0KIAogc3RhdGlj
IE5TVUludGVnZXIgc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCmluZGV4IGVmMmQyZWZiODU5ZjRiOGEy
MmYzMGM0NjdhY2UxZjhhYWQxNTdhNGQuLjc2YTIxYTU4YTlmNjZkZGUxNjA3MjlmOGZlZTFlMTVm
OTQ5ZTY2MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2Jq
ZWN0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAK
QEAgLTI0OSw3ICsyNDksNyBAQCBTVERNRVRIT0RJTVAgRFJURGF0YU9iamVjdDo6U2V0RGF0YShf
SW5fIEZPUk1BVEVUQyogcGZvcm1hdGV0YywgX0luXyBTVEdNRURJVU0qCiAgICAgaWYgKCFwZm9y
bWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0
byBmb3JtYXRldGMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZPUk1BVEVUQz4oKTsKKyAgICBhdXRvIGZv
cm1hdGV0YyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1BVEVUQz4oKTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBwU3RnTWVk
KG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmb3JtYXRldGMuZ2V0KCksIHNpemVv
ZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVs
ZWdhdGUuY3BwCmluZGV4IGM4MGRmMWJlNWYyZGU0N2QzYjgzMTYzN2VmNmU5ZmJjZDkzNGM4ZTYu
LjExYzkzMzliMTZkODA0ZDJjMjAxYzkzMjlmNGE4YzM1NDQyYTgzY2IgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcApAQCAtNzIsOSArNzIsOSBA
QCBzdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoSVdlYkZyYW1lKiB3ZWJG
cmFtZSkKIH0KIAogRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9hZERlbGVnYXRlKCkKLSAgICA6
IG1fZ2NDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8R0NDb250cm9sbGVyPigpKQotICAgICwg
bV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyPigpKQotICAgICwgbV90ZXh0SW5wdXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8VGV4dElucHV0Q29udHJvbGxlcj4oKSkKKyAgICA6IG1fZ2NDb250cm9sbGVyKG1ha2VVbmlx
dWU8R0NDb250cm9sbGVyPigpKQorICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihtYWtl
VW5pcXVlPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPigpKQorICAgICwgbV90ZXh0SW5wdXRDb250
cm9sbGVyKG1ha2VVbmlxdWU8VGV4dElucHV0Q29udHJvbGxlcj4oKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCmluZGV4IGYwYWRiY2U0Nzk2ZmFiZjRmMGQ0
MmIyNzExNjMzNzAxYWM3ODEzMTQuLjQ3YWEyNzJiZjE5NWNkOWEyNWFmMjg2NTVkMzcxZjQxNjAw
ZjQ1OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKQEAgLTEwMSw4
ICsxMDEsOCBAQCBjbGFzcyBEUlRVbmRvTWFuYWdlciB7CiB9OwogCiBEUlRVbmRvTWFuYWdlcjo6
RFJUVW5kb01hbmFnZXIoKQotICAgIDogbV9yZWRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRV
bmRvU3RhY2s+KCkpCi0gICAgLCBtX3VuZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9T
dGFjaz4oKSkKKyAgICA6IG1fcmVkb1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigpKQor
ICAgICwgbV91bmRvU3RhY2sobWFrZVVuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCiB7CiB9CiAKQEAg
LTE0Niw3ICsxNDYsNyBAQCB2b2lkIERSVFVuZG9NYW5hZ2VyOjp1bmRvKCkKIH0KIAogVUlEZWxl
Z2F0ZTo6VUlEZWxlZ2F0ZSgpCi0gICAgOiBtX3VuZG9NYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8
RFJUVW5kb01hbmFnZXI+KCkpCisgICAgOiBtX3VuZG9NYW5hZ2VyKG1ha2VVbmlxdWU8RFJUVW5k
b01hbmFnZXI+KCkpCiAgICAgLCBtX2Rlc2t0b3BOb3RpZmljYXRpb25zKG5ldyBEUlREZXNrdG9w
Tm90aWZpY2F0aW9uUHJlc2VudGVyKQogewogICAgIG1fZnJhbWUuYm90dG9tID0gMDsKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkKIAogdm9pZCBVSURlbGVnYXRl
OjpyZXNldFVuZG9NYW5hZ2VyKCkKIHsKLSAgICBtX3VuZG9NYW5hZ2VyID0gc3RkOjptYWtlX3Vu
aXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKKyAgICBtX3VuZG9NYW5hZ2VyID0gbWFrZVVuaXF1ZTxE
UlRVbmRvTWFuYWdlcj4oKTsKIH0KIAogSFJFU1VMVCBVSURlbGVnYXRlOjpRdWVyeUludGVyZmFj
ZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xzL01pbmlCcm93c2Vy
L3dwZS9tYWluLmNwcAppbmRleCBiZTY0NjBlNTZiN2I3MGNkMjQ4MGZjODdkZTJiOWJhOTcwZTU4
YzM4Li40MzkxOTI5NzkxZGQ2NzEzMWM4NThhMTY2ODljNTJiYWRjMWRkODYyIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
d3BlL21haW4uY3BwCkBAIC0xMjksOCArMTI5LDggQEAgc3RhdGljIGdib29sZWFuIGRlY2lkZVBl
cm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcgKiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QK
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V1BFVG9vbGluZ0JhY2tlbmRzOjpWaWV3QmFja2VuZD4g
Y3JlYXRlVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKIHsKICAg
ICBpZiAoaGVhZGxlc3NNb2RlKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVU
b29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQpOwotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6V2luZG93Vmlld0Jh
Y2tlbmQ+KHdpZHRoLCBoZWlnaHQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVUb29s
aW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6V2luZG93Vmlld0JhY2tlbmQ+KHdp
ZHRoLCBoZWlnaHQpOwogfQogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yNTEsNyArMjUxLDcgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgbnVsbHB0cikpOwogICAg
IGdfb2JqZWN0X3VucmVmKHNldHRpbmdzKTsKIAotICAgIGJhY2tlbmRQdHItPnNldElucHV0Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8SW5wdXRDbGllbnQ+KGxvb3AsIHdlYlZpZXcpKTsKKyAgICBi
YWNrZW5kUHRyLT5zZXRJbnB1dENsaWVudChtYWtlVW5pcXVlPElucHV0Q2xpZW50Pihsb29wLCB3
ZWJWaWV3KSk7CiAjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNT
SUJJTElUWQogICAgIGF1dG8qIGFjY2Vzc2libGUgPSB3cGVfdmlld19iYWNrZW5kX2Rpc3BhdGNo
X2dldF9hY2Nlc3NpYmxlKHdwZUJhY2tlbmQpOwogICAgIGlmIChBVEtfSVNfT0JKRUNUKGFjY2Vz
c2libGUpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250ZXh0LmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRleHQuaAppbmRleCA0ZTAyMGYxOTZjZDAzM2Q2MWVlMGU2MjhmNmEx
ZTU5Y2ExYzMzNDU4Li4wYjg0ZDJkNDU0NTU4M2RlOWZjMGRlYzEyYTRhYTg4YTY1OWVkMTk4IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlw
dENvbnRleHQuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRleHQuaApAQCAtNjgsNiArNjgsNyBAQCB0eXBlZGVmIGVudW0gIHsKIH0gQ2Fs
bGJhY2tUeXBlOwogCiBjbGFzcyBVSVNjcmlwdENvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVJU2NyaXB0Q29udGV4dCk7CiBw
dWJsaWM6CiAgICAgVUlTY3JpcHRDb250ZXh0KFVJU2NyaXB0Q29udGV4dERlbGVnYXRlJik7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenps
ZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5o
CmluZGV4IDI4ZGIxMGE0Nzk5NjMwYzY0YzU1ZDA3ODZjMDBlZTA5NDg5MTQ1ZTIuLjM5YjRlNWVh
NzE4MzY4OGNkZWM5YmVmY2M5NjRjZTg5M2E1NDNmMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oCisrKyBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oCkBAIC0yNiw5ICsyNiwxMSBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KKyNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBjbGFzcyBD
bGFzc01ldGhvZFN3aXp6bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDbGFzc01ldGhvZFN3aXp6bGVyKTsKIHB1YmxpYzoKICAgICBD
bGFzc01ldGhvZFN3aXp6bGVyKENsYXNzLCBTRUwsIElNUCk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgK
aW5kZXggZjllYTIyNDAyNjE1MGQ4ZTFhYzZiYjc2MTViNmRlMzg5MGFmNjcwZS4uYWI1YzUyZjc1
ZDFhYzZhZjk2MGFjMTRjYTcwYjVjYjc0ZmEzNjI4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9Db3VudGVycy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaApA
QCAtMjcsNiArMjcsOCBAQAogI2lmbmRlZiBDb3VudGVyc19oCiAjZGVmaW5lIENvdW50ZXJzX2gK
IAorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKIHN0cnVjdCBDb3B5TW92ZUNvdW50ZXIg
ewogICAgIHN0YXRpYyB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0aWMgdW5z
aWduZWQgY29weUNvdW50OwpAQCAtNTAsNiArNTIsNyBAQCBzdHJ1Y3QgQ29weU1vdmVDb3VudGVy
IHsKIAogCiBzdHJ1Y3QgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRpYyB1bnNpZ25lZCBjb25zdHJ1Y3Rp
b25Db3VudDsKICAgICBzdGF0aWMgdW5zaWduZWQgZGVzdHJ1Y3Rpb25Db3VudDsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcAppbmRleCAyMTM2ZTk4ZDhlYmI4NzVkNTk3ZmM2
ZTA3YzdiMDFlZDViODRhZTE2Li42YTIzMzYzMjk0MWFjZjYwNzA1OTQ5NDI2NDAxYjMyNzMzN2M3
MDgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcApAQCAtNzUsNyArNzUs
NyBAQCA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBydW5KU1Rlc3QoY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgV0tQYQogICAgIFV0aWw6OnJ1bigmY29udGV4dC5kaWRG
aW5pc2gpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4
Q1N0cmluZ1NpemUoY29udGV4dC5hY3R1YWxTdHJpbmcuZ2V0KCkpOwotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsK
ICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGNvbnRleHQuYWN0dWFsU3RyaW5nLmdldCgpLCBi
dWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIAogICAgIHJldHVybiBjb21wYXJlSlNSZXN1
bHQoc2NyaXB0LCBidWZmZXIuZ2V0KCksIGV4cGVjdGVkUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKaW5kZXggOGY4ZDc2OGE1M2MyNzUxYTI0M2UwNTk1
ZTJjMGMwZjQ0NWRkOTZjOC4uYmJiZmY3MDllNjdkMzU5YjRlNDgxNzFlZDdjNGMyNDAwOGE1Njdm
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgV0tDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3Qo
Y29uc3Qgc3RkOjpzdHJpbmcmIHRlc3ROYW1lLCBXS1QKIHN0ZDo6c3RyaW5nIHRvU1REKFdLU3Ry
aW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qg
c3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQo
KSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3Ry
aW5nTGVuZ3RoIC0gMSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAppbmRl
eCBhZDJhNzMyZDUxOTQ3YmJjN2FmYzY0ZTI3ZDQyMTVjZTMyODdkZGVlLi4wYzI3YTQ2MTY0NWZi
YTEyYTVjNjk1ZDkzMjY0MzA1MjZjNGVmMTI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1X
ZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgUGxhdGZvcm1XZWJWaWV3X2gKICNk
ZWZpbmUgUGxhdGZvcm1XZWJWaWV3X2gKIAorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisK
ICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KICNlbmRp
ZgpAQCAtNjMsNiArNjUsNyBAQCB0eXBlZGVmIHVpbnQzMl90IFdLRXZlbnRNb2RpZmllcnM7CiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIGNsYXNzIFBsYXRmb3JtV2ViVmlldyB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGxhdGZvcm1X
ZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpOwogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2Vi
VmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKaW5kZXggNGIxMGM4NmEyYWI3MzJlMWVhNjI3NDg0
Y2M3ODk0MGZiNmNkNmU5Ni4uMmEwNmY4YmE1Y2E5ZmViNDkyYTM1MjJjNWM2NTUwMTM4ZDIyMzdl
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcApAQCAtNDA3
LDYgKzQwNyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCBkZXN0cnVjdG9ycykKIHN0YXRpYyBpbnQg
c25vd2ZsYWtlcyA9IDA7CiBzdGF0aWMgaW50IG1lbHRlZCA9IDA7CiBzdHJ1Y3Qgc25vd2ZsYWtl
IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc3RhdGljIHZvaWQg
cmVzZXQoKSB7IHNub3dmbGFrZXMgPSBtZWx0ZWQgPSAwOyB9CiAgICAgc25vd2ZsYWtlKCkgeyAr
K3Nub3dmbGFrZXM7IH0KICAgICB+c25vd2ZsYWtlKCkgeyArK21lbHRlZDsgfQpAQCAtNDE2LDcg
KzQxNyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogewogICAgIC8vIFVuaXF1
ZSBzbm93Zmxha2VzIGNhbm5vdCBiZSBjb3BpZWQuCiAgICAgewotICAgICAgICBhdXRvIHMgPSBt
YWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIGF1
dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAg
RVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwogICAgICAgICBFWFBFQ1RfRVEobWVsdGVkLCAwKTsK
ICAgICB9CkBAIC00MjUsNyArNDI2LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIp
CiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBhdXRvIHMgPSBtYWtl
VW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIGF1dG8g
cyA9IG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAgVW5l
eHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gYyhXVEZNb3ZlKHMpKTsKICAgICAg
ICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwogICAgICAgICBFWFBFQ1RfRVEobWVsdGVkLCAw
KTsKQEAgLTQ0Niw3ICs0NDcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAg
ICB9OwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtl
PiwgaW50PiBzKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgRXhwZWN0
ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4sIGludD4gcyhtYWtlVW5pcXVlPHNub3dmbGFr
ZT4oKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS52YWx1ZSgpKTsKICAgICB9CiAgICAgRVhQ
RUNUX0VRKHNub3dmbGFrZXMsIDEpOwpAQCAtNDU0LDcgKzQ1NSw3IEBAIFRFU1QoV1RGX0V4cGVj
dGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAg
ICAgRXhwZWN0ZWQ8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBl
Y3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSkpOworICAgICAgICBFeHBlY3RlZDxp
bnQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlx
dWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS5lcnJvcigpKTsKICAg
ICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpAQCAtNDYyLDcgKzQ2Myw3IEBAIFRF
U1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAog
ICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+
IHMobWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAg
ICAgRXhwZWN0ZWQ8dm9pZCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhw
ZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpKTsKICAgICAgICAgcGxvdyhXVEZNb3ZlKHMp
LmVycm9yKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKaW5kZXggODRk
YTVlYzNmZmMyNDhhY2RkOWUzNjMzMDM4YzY5ZGFlODkxMjA5OS4uN2I4ZmFmMjg4YWJjMDdjZmFm
OGI1MjcxMjM4Zjc2ZDAxMzAxMmVlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIFRFU1QoV1RGX0hh
c2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVu
aXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0Owog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUo
dW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI1OSw3ICsyNTksNyBAQCBURVNUKFdURl9I
YXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5SW5pdGlhbENvdW50KQogCiAgICAgSGFzaENvdW50
ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNo
Q291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVu
aXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0
LmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDEyKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjk4LDcgKzI5
OCw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3
UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFz
aENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50
Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENv
dW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMxMiw3ICszMTIsNyBAQCBU
RVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2lu
dGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291
bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRl
ZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMzIzLDcgKzMyMyw3IEBAIFRFU1Qo
V1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfR2V0VXNpbmdSYXdQb2ludGVyKQogewog
ICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsK
IAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1
dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsK
ICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQo
V1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMzM3LDcgKzMzNyw3IEBAIFRFU1QoV1RGX0hhc2hD
b3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFz
aENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0g
bWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291
bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9IYXNoTWFwLmNwcAppbmRleCAxZTE2M2QzODk5OGU2YmFiZmZmNTM4NDEzY2NhMjhh
YTZkMjk4OTgyLi5hODBjYTc0OTRhOGY5YTc5NjdlMWU0OTQ2ZmU4Y2NhNjM5Y2JiNThiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcApAQCAtMTkxLDcgKzE5MSw3
IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleSkKIAogICAgIEhhc2hNYXA8c3RkOjp1
bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAg
IGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsK
IAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3Ry
dWN0aW9uQ291bnQpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1
ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVf
cHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAg
IG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjQ0LDcgKzI0NCw3IEBAIFRF
U1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsK
ICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0
ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7
CiAKQEAgLTI1NSw3ICsyNTUsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfR2V0
VXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPGludD4sIGlu
dD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxp
bnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RG
TW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjY5LDcgKzI2OSw3IEBAIFRFU1QoV1RGX0hhc2hN
YXAsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciks
IDIpOwogCkBAIC0yODksNyArMjg5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5
X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIu
Z2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC01NjMsMTIg
KzU2MywxMiBAQCBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfVW5pcXVlUG9pbnRlcikKIHsKICAg
ICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQ+PiBtYXA7CiAgICAg
ewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMSk7IH0pOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8dW5zaWduZWQ+KDEpOyB9KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7
CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkp
OwogICAgICAgICBFWFBFQ1RfRVEoMXUsIGFkZFJlc3VsdC5pdGVyYXRvci0+a2V5KTsKICAgICAg
ICAgRVhQRUNUX1RSVUUoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICBhdXRvIGFkZFJl
c3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8dW5zaWdu
ZWQ+KDIpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQyID0gbWFwLmVuc3VyZSgxLCBbXSB7
IHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZD4oMik7IH0p
OwogICAgICAgICBFWFBFQ1RfRVEoMXUsICptYXAuZ2V0KDEpKTsKICAgICAgICAgRVhQRUNUX0VR
KDF1LCAqYWRkUmVzdWx0Mi5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMXUsIGFkZFJlc3VsdDIuaXRlcmF0b3ItPmtleSk7CkBAIC01OTAsNiArNTkwLDcgQEAgVEVT
VChXVEZfSGFzaE1hcCwgRW5zdXJlX1JlZlB0cikKIH0KIAogY2xhc3MgT2JqZWN0V2l0aFJlZkxv
Z2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgT2JqZWN0
V2l0aFJlZkxvZ2dlcihSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKICAgICAgICAgOiBtX2xvZ2dl
cihXVEZNb3ZlKGxvZ2dlcikpCkBAIC02MDQsNyArNjA1LDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNp
bmdFbnN1cmUoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiB7CiAgICAgSGFzaE1hcDx1bnNpZ25l
ZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFdpdGhSZWZMb2dnZXI+PiBtYXA7CiAgICAgCi0gICAg
bWFwLmVuc3VyZSgxLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RXaXRoUmVm
TG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9KTsKKyAgICBtYXAuZW5zdXJlKDEsIFsmXSB7IHJl
dHVybiBtYWtlVW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7IH0p
OwogfQogCiB2b2lkIHRlc3RNb3ZpbmdVc2luZ0FkZChSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikK
QEAgLTYxMiw3ICs2MTMsNyBAQCB2b2lkIHRlc3RNb3ZpbmdVc2luZ0FkZChSZWY8UmVmTG9nZ2Vy
PiYmIGxvZ2dlcikKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0
V2l0aFJlZkxvZ2dlcj4+IG1hcDsKIAogICAgIGF1dG8mIHNsb3QgPSBtYXAuYWRkKDEsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBzbG90ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RX
aXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOworICAgIHNsb3QgPSBtYWtlVW5pcXVlPE9i
amVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7CiB9CiAKIFRFU1QoV1RGX0hhc2hN
YXAsIEVuc3VyZV9MYW1iZGFzQ2FwdHVyaW5nQnlSZWZlcmVuY2UpCkBAIC02ODMsNiArNjg0LDcg
QEAgVEVTVChXVEZfSGFzaE1hcCwgVmFsdWVJc0Rlc3RydWN0ZWRPblJlbW92ZSkKIFRFU1QoV1RG
X0hhc2hNYXAsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogewogICAgIHN0cnVjdCBEZXJl
Zk9ic2VydmVyIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBORVZFUl9JTkxJTkUgdm9pZCByZWYoKQogICAgICAgICB7CiAgICAgICAgICAgICArK2Nv
dW50OwpAQCAtNjk3LDcgKzY5OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFplcm9l
ZEJlZm9yZURlcmVmKQogICAgICAgICBjb25zdCBEZXJlZk9ic2VydmVyKiBvYnNlcnZlZEJ1Y2tl
dCB7IG51bGxwdHIgfTsKICAgICB9OwogCi0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxE
ZXJlZk9ic2VydmVyPigpOwogCiAgICAgSGFzaE1hcDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4sIGlu
dD4gbWFwOwogICAgIG1hcC5hZGQoYWRvcHRSZWYob2JzZXJ2ZXIuZ2V0KCkpLCA1KTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKaW5kZXggNzFlY2ZkZGI4NDJiNmJk
NTE2NDFjYTA1YjYxMDhhZDQ4ZjYyYmI3ZC4uODcyNjhjNzRmMGNiOGZjMTQ5ZWJmNjBjODU4OGZj
ZWQzNTgxYTIwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAK
QEAgLTEyOCw3ICsxMjgsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAg
ICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4g
c2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1
ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Ojpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEVTVChXVEZfSGFzaFNl
dCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaFNldDxzdGQ6
OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwog
ICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTU4LDcgKzE1OCw3IEBAIFRF
U1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsK
ICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1
ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1
bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0x
NzEsNyArMTcxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5n
UmF3UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0
LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChXVEZf
SGFzaFNldCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoU2V0
PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0g
ICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciog
cHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsK
IApAQCAtMjgzLDYgKzI4Myw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIENvcHlDYXBhY2l0eUlzTm90
T25Cb3VuZGFyeSkKIFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVm
KQogewogICAgIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCByZWYoKQogICAgICAg
ICB7CiAgICAgICAgICAgICArK2NvdW50OwpAQCAtMjk3LDcgKzI5OCw3IEBAIFRFU1QoV1RGX0hh
c2hTZXQsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogICAgICAgICBjb25zdCBEZXJlZk9i
c2VydmVyKiBvYnNlcnZlZEJ1Y2tldCB7IG51bGxwdHIgfTsKICAgICB9OwogCi0gICAgYXV0byBv
YnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAgICBhdXRvIG9i
c2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAgICAgSGFzaFNldDxSZWZQ
dHI8RGVyZWZPYnNlcnZlcj4+IHNldDsKICAgICBzZXQuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdl
dCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFz
aFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAK
aW5kZXggNjU3YmU0MWQ2MjA3MjQ0NjdhNTU0OWUyYWI1YTE5NDFjNGUzNzNjMS4uYjc3MGE1YjI3
YzFkMmIwOTVhNWJiNTlkNjVhYzNmNGRjNGU0ZTY4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIFRFU1QoV1RG
X0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1
ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGxpc3Q7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcj4oKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQ
RUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3Vu
dCk7CkBAIC0zOTYsNyArMzk2LDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktl
eV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0
cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGlu
dD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3Qu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBURVNUKFdURl9M
aXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAg
IExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0g
dW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAg
LTQyMSw5ICs0MjEsOSBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2Vy
dEJlZm9yZVVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9w
dHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGludD4oMik7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoMiA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGludD4oMik7CiAgICAgYXV0byBwdHJXaXRoMiA9IHVuaXF1ZVB0cldp
dGgyLmdldCgpOwotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQgPSBzdGQ6Om1ha2VfdW5pcXVlPGlu
dD4oNCk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoNCA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGludD4oNCk7CiAgICAgYXV0byBwdHJXaXRoNCA9IHVuaXF1ZVB0cldpdGg0Lmdl
dCgpOwogCiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHJXaXRoMikpOwpAQCAtNDM1LDcg
KzQzNSw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfSW5zZXJ0QmVmb3Jl
VXNpbmdSYXdQb2ludGVyKQogICAgIEFTU0VSVF9FUShwdHJXaXRoNCwgbGlzdC5sYXN0KCkuZ2V0
KCkpOwogICAgIEFTU0VSVF9FUSg0LCAqbGlzdC5sYXN0KCkuZ2V0KCkpOwogCi0gICAgYXV0byB1
bmlxdWVQdHJXaXRoMyA9IHN0ZDo6bWFrZV91bmlxdWU8aW50PigzKTsKKyAgICBhdXRvIHVuaXF1
ZVB0cldpdGgzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50PigzKTsKICAg
ICBhdXRvIHB0cldpdGgzID0gdW5pcXVlUHRyV2l0aDMuZ2V0KCk7CiAKICAgICBsaXN0Lmluc2Vy
dEJlZm9yZShwdHJXaXRoNCwgV1RGTW92ZSh1bmlxdWVQdHJXaXRoMykpOwpAQCAtNDYyLDcgKzQ2
Miw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQ
b2ludGVyKQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgYXV0
byogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRy
KSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKaW5kZXggMmRjY2VkY2Fk
Y2M2YzIyMjczZGViYzIwZjNmZjY3N2M4NzMyOTAyNy4uNWZkMzFiZjFjOWFiZWNmYjhhYmU3MzU2
MDhhNDdjNTYwNDMwNDc3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvTG9jay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAK
QEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IExvY2tJbnNwZWN0b3IgewogdGVtcGxhdGU8dHlwZW5h
bWUgTG9ja1R5cGU+CiB2b2lkIHJ1bkxvY2tUZXN0KHVuc2lnbmVkIG51bVRocmVhZEdyb3Vwcywg
dW5zaWduZWQgbnVtVGhyZWFkc1Blckdyb3VwLCB1bnNpZ25lZCB3b3JrUGVyQ3JpdGljYWxTZWN0
aW9uLCB1bnNpZ25lZCBudW1JdGVyYXRpb25zKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2Nr
VHlwZVtdPiBsb2NrcyA9IHN0ZDo6bWFrZV91bmlxdWU8TG9ja1R5cGVbXT4obnVtVGhyZWFkR3Jv
dXBzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlW10+IHdvcmRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVm
UHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5b
XT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3VwKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TG9ja1R5cGVbXT4gbG9ja3MgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxMb2NrVHlwZVtdPihudW1UaHJlYWRHcm91cHMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxkb3Vi
bGVbXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxkb3VibGVbXT4o
bnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4g
dGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+
W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIHRocmVhZEdyb3VwSW5kZXggPSBudW1UaHJlYWRHcm91cHM7IHRocmVhZEdyb3VwSW5k
ZXgtLTspIHsKICAgICAgICAgd29yZHNbdGhyZWFkR3JvdXBJbmRleF0gPSAwOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAppbmRleCA0NTJlMjI3NzFkYzA2
NGFkYWFmZTYyMGViMzNlODAxMzBmNzlmMTk3Li5lMDBhMDliMmExN2FhNzM0ODU2ZTQyYzExNDVj
YmU2MDg2M2YwYTA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
YXJraW5nTG90LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5n
TG90LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0cnVjdCBTaW5nbGVMYXRjaFRlc3QgewogCiB2
b2lkIHJ1blBhcmtpbmdUZXN0KHVuc2lnbmVkIG51bUxhdGNoZXMsIHVuc2lnbmVkIGRlbGF5LCB1
bnNpZ25lZCBudW1UaHJlYWRzLCB1bnNpZ25lZCBudW1TaW5nbGVVbnBhcmtzKQogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRjaFRlc3RbXT4gdGVzdHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2lu
Z2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
U2luZ2xlTGF0Y2hUZXN0W10+KG51bUxhdGNoZXMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBsYXRj
aEluZGV4ID0gbnVtTGF0Y2hlczsgbGF0Y2hJbmRleC0tOykKICAgICAgICAgdGVzdHNbbGF0Y2hJ
bmRleF0uaW5pdGlhbGl6ZShudW1UaHJlYWRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUmVmQ291bnRlci5jcHAKaW5kZXggMDgxZGY5ZTRmYzFkMjUxZDgxNGIyMjY0YmQyZDBl
MDUyYzBiZDQxZi4uZjRlZjk4M2IxYTlmYmU4OTgwN2M3NWFjMjhmZGI2MjZkOWE5NmExMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKQEAgLTE3MCw3
ICsxNzAsNyBAQCBURVNUKFdURiwgUmVmQ291bnRlcikKIFRFU1QoV1RGLCBSZWZDb3VudGVyRGVs
ZXRlQ291bnRlcldpdGhPdXRzdGFuZGluZ1Rva2VucykKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdENv
dW50ZXI+KFsmXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFRlc3RDb3VudGVyPiBjb3VudGVyID0gbWFrZVVuaXF1ZTxUZXN0Q291bnRlcj4oWyZdKFJl
ZkNvdW50ZXJFdmVudCBldmVudCkgewogICAgICAgICAgICAgaWYgKCFjb3VudGVyLT52YWx1ZSgp
KQogICAgICAgICAgICAgICAgIGNvdW50ZXIgPSBudWxscHRyOwogICAgICAgICB9KTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwCmluZGV4IDRkMmIyMmFhNTRm
OGIwMjU0ODBmNTllNTYxYTNjY2U3MTU1MDIzMTIuLjFhZmUzZTk3NzliYjg0ODg3ZTk0MzBkZTQx
NzI2Yzc0Mzg1MzJmZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1VuaXF1ZVJlZi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVl
UmVmLmNwcApAQCAtMzAsOCArMzAsMTEgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
ICAgIAotY2xhc3MgQSB7IH07CitjbGFzcyBBIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK307CiBjbGFzcyBCIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBCKGludCBhLCBpbnQgYiwgaW50IGMpCiAgICAgICAgIDogYShhKQpAQCAtNDMsNiArNDYs
NyBAQCBjbGFzcyBCIHsKICAgICBpbnQgYzsKIH07CiBjbGFzcyBDIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDKFVuaXF1ZVJlZjxBPiYmIGEpCiAgICAgICAg
IDogYShXVEZNb3ZlKGEpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNw
cAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1NGZmZmQzMzIxMzk1ZTlmMWUyZDJhN2MyLi41MWVjYTA3
NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5ZmY0ZmQ1NmJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFRFU1QoV1RGX1Zhcmlh
bnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gdW5pcXVlUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAg
ICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4oKTsKICAgICAgICAgVmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4sIGludD4gdiA9IFdURk1vdmUodW5pcXVlUHRyKTsKIAogICAgICAgICBF
WFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNv
dW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKaW5kZXggMTUw
YjliNzZjOGE1NjVlMzY1NTQ4MzZlMGJiZWMwNTA1Yzc4NDhmMi4uN2U2MzA2OTNlZWM2MDQxYTM3
NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
V2Vha1B0ci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IEludCA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxJbnQ+IHsKIH07CiAKIGNsYXNzIEJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJhc2Uo
KSB7IH0KIApAQCAtNTc4LDEwICs1NzksMTAgQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hhc2hT
ZXRFeHBhbnNpb24pCiAgICAgICAgIEVYUEVDVF9FUSh3ZWFrSGFzaFNldC5jYXBhY2l0eSgpLCAw
dSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXApOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdGlhbENhcGFjaXR5IC8gbWF4TG9h
ZENhcDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwog
ICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0
cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAgICAgIG90aGVyT2JqZWN0cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpKTsKKyAgICAgICAgICAgIG90aGVyT2JqZWN0cy5h
cHBlbmQobWFrZVVuaXF1ZTxCYXNlPigpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNr
Q29uc2lzdGVuY3koKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoc19iYXNlV2Vha1Jl
ZmVyZW5jZXMsIG90aGVyT2JqZWN0cy5zaXplKCkpOwpAQCAtNjE1LDcgKzYxNiw3IEBAIFRFU1Qo
V1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vh
a0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICB1bnNpZ25lZCBvYmplY3RDb3VudCA9
IGluaXRpYWxDYXBhY2l0eSAqIDI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
YmplY3RDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNl
PigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAg
b2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0
LmNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTY2NywxMCArNjY4LDEwIEBAIFRFU1QoV1RGX1dlYWtQ
dHIsIFdlYWtIYXNoU2V0Q29tcHV0ZXNFbXB0eSkKICAgICB7CiAgICAgICAgIFdlYWtIYXNoU2V0
PEJhc2U+IHdlYWtIYXNoU2V0OwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2U+
PiBvYmplY3RzOwotICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwog
ICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgZG8gewotICAg
ICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAg
ICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtI
YXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUo
b2JqZWN0KSk7CiAgICAgICAgIH0gd2hpbGUgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgPT0g
Zmlyc3RPYmplY3QuZ2V0KCkpOwpAQCAtNzM0LDggKzczNSw4IEBAIFRFU1QoV1RGX1dlYWtQdHIs
IFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBXZWFr
SGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKLSAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1
ZTxCYXNlPigpOworICAgICAgICBhdXRvIGxhc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7
CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqZmlyc3RPYmplY3QpOwogICAgICAgICB3ZWFrSGFz
aFNldC5hZGQoKmxhc3RPYmplY3QpOwogICAgICAgICBpZiAod2Vha0hhc2hTZXQuYmVnaW4oKS5n
ZXQoKSAhPSBmaXJzdE9iamVjdC5nZXQoKSkKQEAgLTc1OSwxMCArNzYwLDEwIEBAIFRFU1QoV1RG
X1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAgICAgewogICAgICAgICBXZWFrSGFz
aFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
YXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8
QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpub25GaXJzdE9iamVjdCk7CiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNl
PigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAg
ICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFw
cGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdp
bigpLmdldCgpID09IG5vbkZpcnN0T2JqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggMmFhYjY1ZGQ4ZmQ3
ZWYwNzA1MWZiNmY3NTY3NThjZGU3MDJlMDdhMS4uODFkN2JhMjkxYWU5ZjRhYjdjZjJlNWY5YWFk
NjJjOTQyNDM1MzY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVy
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQog
ICAgIHsKICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgICAgICBtX3Jp
bmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9y
aW5nQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Q0FSaW5nQnVmZmVy
PigpOwogICAgIH0KIAogICAgIC8vIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkb3VibGUgc2Ft
cGxlUmF0ZSwgVUludDMyIG51bUNoYW5uZWxzLCBQQ01Gb3JtYXQgZm9ybWF0LCBib29sIGlzSW50
ZXJsZWF2ZWQsIHNpemVfdCBjYXBhY2l0eSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA3NzhlNjE1NWYwNmNj
MTI4Mzk3OTc1ZjA0NTg3MTJhMmM3MTA0MGZhLi5kY2E0NjM2MDJlOTZkNjBhMDQ1MTM4MTIxY2Ji
ZGNlZmJlZTllNWMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIHN0YXRpYyB1bnNpZ25lZCBkZWxldGlvbkNvdW50OwogCiBjbGFzcyBD
YWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FsY0V4cHJlc3Np
b25Ob2RlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5DYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUoKQogICAgIHsKQEAgLTUyLDcgKzUzLDcg
QEAgY2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNh
bGNFeHByZXNzaW9uTm9kZSB7CiAKIHN0YXRpYyBSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1
ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsKLSAgICBhdXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKKyAgICBhdXRvIG5vZGUgPSBtYWtlVW5p
cXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKICAgICByZXR1cm4gV2ViQ29yZTo6
Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUobm9kZSksIFdlYkNvcmU6OlZhbHVlUmFu
Z2VBbGwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCmluZGV4IGY1OGRhOGE0MjA3M2VjOTliYmVlMzRh
ODViZWMzNGMwODVjNTJhNjQuLjBjMWEwNjlmMTNjMzljNDA5ZTVkNWUxYjAzYTdlOTJiZjliMzY2
YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlk
TWVzc2FnZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9G
aWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgVEVTVChGaWRvSGlkTWVz
c2FnZVRlc3QsIFRlc3RQYWNrZXRTaXplKQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUw
NjA3MDg7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAKLSAgICBhdXRvIGluaXRQYWNrZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7
CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hh
bm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRh
KSwgZGF0YS5zaXplKCkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGluaXRQYWNrZXQtPmdldFNlcmlh
bGl6ZWREYXRhKCkuc2l6ZSgpKTsKIAotICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdU
Rk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gbWFrZVVuaXF1ZTxG
aWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOwog
ICAgIEVYUEVDVF9FUSg2NHUsIGNvbnRpbnVhdGlvblBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEo
KS5zaXplKCkpOwogfQogCkBAIC03MCw3ICs3MCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0
LCBUZXN0UGFja2V0RGF0YSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweEY1MDYwNzA4Owog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21t
YW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsKLSAgICBhdXRvIGluaXRQYWNr
ZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwg
VmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0
ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1
aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIHNpemVfdCBpbmRleCA9IDA7CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZCA9IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWRE
YXRhKCk7CkBAIC05NCw3ICs5NCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFj
a2V0Q29uc3RydWN0b3JzKQogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAg
IEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsK
ICAgICBzaXplX3QgbGVuZ3RoID0gZGF0YS5zaXplKCk7Ci0gICAgYXV0byBvcmlnUGFja2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1v
dmUoZGF0YSksIGxlbmd0aCk7CisgICAgYXV0byBvcmlnUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRv
SGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CiAK
ICAgICBzaXplX3QgcGF5bG9hZExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ob3JpZ1BhY2tl
dC0+cGF5bG9hZExlbmd0aCgpKTsKICAgICBWZWN0b3I8dWludDhfdD4gb3JpZ0RhdGEgPSBvcmln
UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggMWVkMTMyOGY4MTMwOWUxMmUxMzcx
Y2IzYWRmZTZiMGE5NzgzZWViNi4uMjI4MzgzYTBmMzBhOWIxMzlmNmFhZjQzZjk1Y2VkZDgwOTE2
NmU2YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0
ZWN0Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVz
dCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVN
b25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVu
aXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtd
IChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2Ug
RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0xOTAsNyArMTkw
LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVDaGFuZ2VzKQogCiAg
ICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7
CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1w
RmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hh
bmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRv
cj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yNTAsNyArMjUwLDcgQEAgVEVTVF9GKEZp
bGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRpb24pCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdv
cmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUu
Y29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBh
dXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVz
dFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7
CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNh
dGlvbjoKQEAgLTI4OSw3ICsyODksNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RD
aGFuZ2VBbmRUaGVuRGVsZXRlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNy
ZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwg
W10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9y
ID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5
UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
ICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpA
QCAtMzQ2LDcgKzM0Niw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1
dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6
Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigp
LCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0
b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNv
cHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29r
aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMu
Y3BwCmluZGV4IDkyZDhhMTkyY2E3YjJhMTA4MTU2NTk5N2IwZWE1YjFmOWFlYThmNjUuLjIxOWU5
NjZkYmViYWE4NGQzNjAyNzIyZTk1OWUzMmY2NGZiNGRiMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC00NCw3ICs0NCw3
IEBAIGNsYXNzIEN1cmxDb29raWVzOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgewogICAg
ICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeSgpOwogCi0gICAgICAgIG1fY29va2llSmFyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29v
a2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOworICAgICAgICBtX2Nvb2tpZUphciA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKICAgICAgICAg
bV9jb29raWVKYXItPm9wZW4oKTsKICAgICAgICAgbV9jb29raWVKYXItPnNldEFjY2VwdFBvbGlj
eShDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQ
YWdlLmNwcAppbmRleCA1YzBhZTMzMTMyOGIzNmIwYmE3MGExOGQ5OTM2Njk0MTJhY2EyOWE5Li5i
M2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5ZGRhMTIxMmYxOTMyYTBkMjBmIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5D
cmVhdGVQYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5l
d1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwog
ewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVu
ZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAg
IG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAg
ICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNp
emVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvTW9kYWxBbGVydHNTUEkuY3BwCmluZGV4IGE0ZmJhMTI3YzZlNGQwM2U2M2Q5YTgxNzJhMzli
M2NiOGIxNDcyYzcuLjdiYzM1MjRmMmJkYjlkYmQ3YTQzNWEzY2M2YWQzODMyZTk0NGVkZDUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJ
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQ
SS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2Uo
V0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAg
IEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJW
aWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5l
ZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1Bh
Z2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1
aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
VGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKaW5kZXggMGY3
ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4MDM4ZDE5MjIxZWRiZjdkNS4uY2QxOWQ3Y2RlNTg4OTYyNWYx
MjIxMmZjNzUzY2ZkNTVlMjc4ZDkyMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRp
bmcuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBXZWJLaXQyVGV4dEZpZWxkQmVnaW5BbmRF
ZGl0RWRpdGluZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0
Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdFdmVu
dHNUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgp
LCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50
KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3Nh
Z2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3Bw
CmluZGV4IGM3YjAyNTFiZmNmMjFhYTRhYmQxMTRjODU1MDc5MjQxZDY2MTc0ZTkuLjlkYzNhNmRh
OTk1MDljMjcxMTIxZDRjM2E0NTMwODRmZWU5ODliZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY2xh
c3MgV2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJVc2VyTWVzc2FnZVRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVk
QnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAg
IHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAg
ICAgICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy0+cGFnZSgpLCB0aGlzKTsKIAogICAg
ICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9XaWxsTG9hZC5jcHAKaW5kZXggZWQ5ZjBmZmM3MDI1YWIxMmNiNTM5NjdmNzIwNWZm
OTZjODliZTY5OS4uNTJmMThkY2ViNDJkNTFhYzA4Mzk1YjYyMDAxZDRhOTU0MGY3NDUyZCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBjbGFzcyBXZWJLaXQyV2lsbExvYWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CiAgICAgICAgIGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJ
bmplY3RlZEJ1bmRsZVRlc3QoIldpbGxMb2FkVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAg
d2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKIAog
ICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUlu
QnVuZGxlX0J1bmRsZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9G
b3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQppbmRleCBhZWJhMWMzNDhmYmM2
NmExNzBlNTM5ZTBhNzI4NmFlZTkxNTNlNjA0Li4yOTFhNDc4YTI3ODQyNDJkYWQ0NWEzYThmMTcz
OTA1ZDdkM2IyZjIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5k
bGVfQnVuZGxlLm1tCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byByZXN1
bHRTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KHNjcmlwdENvbnRleHQsIHJlc3Vs
dCwgbnVsbHB0cikpOwogCiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShyZXN1bHRTdHJpbmcuZ2V0KCkpOwotICAgICAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZl
clNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHJlc3VsdFN0cmluZy5nZXQo
KSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAgICAgICBXS0J1bmRsZVBhZ2VTZXRV
c2VEYXJrQXBwZWFyYW5jZShtX3BhZ2UsIHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAppbmRl
eCBkNmNjMmZiMjQ3ZTU2MjA2Njk3NzYxMGIyNTY3OWI3ZWQxZGNjOGJhLi43YzhjOGI1MjE1NGFj
NGViMDk4ZTY5NTE3OTA2OWEwNWViZGM2NmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcApAQCAt
MjU2LDYgKzI1Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25FbXB0
eVJlYWxtKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0CiB9CiAKIGNsYXNzIFR1bm5l
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVHVubmVsKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIDogbV9zZXJ2
ZXIoc2VydmVyKQpAQCAtMjk5LDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNr
KFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiB7
CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9DT05ORUNUKSB7CiAgICAg
ICAgIGdfYXNzZXJ0X2NtcHVpbnQoc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSwgPT0sIGdQ
cm94eVNlcnZlclBvcnQpOwotICAgICAgICBhdXRvIHR1bm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8
VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOworICAgICAgICBhdXRvIHR1bm5lbCA9IG1ha2VVbmlx
dWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOwogICAgICAgICBhdXRvKiB0dW5uZWxQdHIgPSB0
dW5uZWwuZ2V0KCk7CiAgICAgICAgIHR1bm5lbFB0ci0+Y29ubmVjdChbdHVubmVsID0gV1RGTW92
ZSh0dW5uZWwpXShjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChl
cnJvck1lc3NhZ2UpIHsKQEAgLTM5NCw3ICszOTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0F1dGhlbnRpY2F0aW9uUHJveHkoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25z
dAogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyhQcm94
eUF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBhdXRvIGh0
dHBzU2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRUZXN0U2VydmVyPihXZWJLaXRUZXN0
U2VydmVyOjpTZXJ2ZXJIVFRQUyk7CisgICAgYXV0byBodHRwc1NlcnZlciA9IG1ha2VVbmlxdWU8
V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOwogICAgIGh0
dHBzU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOwogCiAgICAgdGVzdC0+bG9hZFVSSShodHRw
c1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Byb3h5L2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9j
ZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nl
c3NUZXN0LmgKaW5kZXggN2E0NGNiMDVjZDRiYzAyN2UxMmQxMTAzZmFmNmEwMDdhYzZmNDBmMy4u
YjZiNzI4ZTQ1ZTA5YzUxYTZkNmJhOTliZjcxN2UxOTVlOWEwZTBjMSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNlbmRpZgogCiBjbGFzcyBXZWJQcm9jZXNzVGVzdCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc1Rl
c3QoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwg
V2ViS2l0V2ViUGFnZSopID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKaW5kZXggMTI1NjI0MTk2YTcxYzZk
M2FkNWJjZGQyOWYxNDJiODZhYmI5ZmQxMS4uZTQwMDA3NjMzZjIzNjI0MDUyOWRmNTRhZTg2MzIw
ODdiZDM2OTUyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NRE9NV2luZG93VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgc3RhdGljIGdi
b29sZWFuIGNsaWNrZWRDYWxsYmFjayhXZWJLaXRET01ET01XaW5kb3cqLCBXZWJLaXRET01FdmVu
dCosIFdlYktpdERPTUQKIAogY2xhc3MgV2ViS2l0RE9NRE9NV2luZG93VGVzdCA6IHB1YmxpYyBX
ZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQ
cm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRET01E
T01XaW5kb3dUZXN0PigpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNz
VGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0
PigpOyB9CiAKIHByaXZhdGU6CiAgICAgZ3VpbnQ2NCB3ZWJQYWdlRnJvbUFyZ3MoR1ZhcmlhbnQq
IGFyZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRp
bGl0aWVzQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0
aWVzQ29jb2EubW0KaW5kZXggOGQyZWU4YWQxNmNhZDY3OTU2OGVkOWI2ZDc1Y2VjZDgyMTUwZmVk
Yi4uMzQ5MGVmMWNlYjZmMTc4MDUwMmYwY2RjOTE5Yzk3MWUyOTJiZTkwNSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpAQCAt
MzgsNyArMzgsNyBAQCBzdGQ6OnN0cmluZyB0b1NURChOU1N0cmluZyAqc3RyaW5nKQogICAgICAg
ICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gW3N0cmlu
ZyBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAg
YXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAg
YXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1
ZmZlclNpemUpOwogICAgIE5TVUludGVnZXIgc3RyaW5nTGVuZ3RoOwogICAgIFtzdHJpbmcgZ2V0
Qnl0ZXM6YnVmZmVyLmdldCgpIG1heExlbmd0aDpidWZmZXJTaXplIHVzZWRMZW5ndGg6JnN0cmlu
Z0xlbmd0aCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBvcHRpb25zOjAgcmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSByZW1haW5pbmdSYW5nZTowXTsKICAgICByZXR1
cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGgpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDU0NmNhNmUyMjJkOWZlYTgxY2U3
YmU0ZTJjMmQzOTg1YzViNDRmMGYuLjI0NzU3Mjg5OGI2YTg3OWM3YTM2YjRmYzY1YjkxNTMzMDQ3
MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAg
LTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGlu
Z0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCkKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IHN3aXp6bGVyOwogICAgIHN0YXRpYyBkaXNwYXRj
aF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAg
ICAgICAgc3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5T
QXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJz
Rm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50
aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKKyAgICAgICAgc3dpenps
ZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5j
bGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3Zp
ZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKICAgICB9KTsKIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE3NTIwND4gaXMgZml4ZWQuCi0gICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10s
IEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHBy
ZXNzVUlDYWxsb3V0QmFyKSk7CisgICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IG1ha2VV
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3Rv
cihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxs
b3V0QmFyKSk7CiAgICAgX2lucHV0U2Vzc2lvbkNoYW5nZUNvdW50ID0gMDsKICAgICBhcHBseVdv
cmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYktpdFRlc3RTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYktpdFRlc3RTZXJ2ZXIuaAppbmRleCA2OTBmMGE3NzU2Y2ZlM2FmYjA3ZDkwYmVlZmYwOTU3
OGIyZmM1NWRlLi4yODE0NTI3ZjE5Yjk1NGY4MmFlYjg3YmMwZTRjOGRjMGI5YTdmNWI2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVz
dFNlcnZlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBjbGFzcyBXZWJLaXRUZXN0U2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKIAogICAgIGVudW0gU2VydmVyT3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KaW5kZXggODYyNjM1NDQzMzVhN2Y1ZDk3MWI1ZGMw
ZDI1OWU1NWRjMGQ3M2M2Ni4uNGJkZTZjNTEwMGQyYmQ2ZmU0YmI5MGZhY2JlMjVkMzM5YTUwNTRi
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpAQCAtODQs
NyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0
aW9ucyAqKWZvbnRPcHRpb25zCiAKICAgICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXplWmVybzsKICAg
ICBfc2hhZG93Qmx1clJhZGl1cyA9IDA7Ci0gICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmlu
ZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHNoYXJlZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOworICAgIF9yZXBs
YWNlRm9udE9wdGlvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4o
TlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250
T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3Rp
bmcpKTsKICAgICBfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMgPSBOTzsKICAgICBfaGFzTXVsdGlw
bGVGb250cyA9IE5POwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
CmluZGV4IDE1MzIyMTgyNjk5ZTBlYTMwNzU0YTAyMjZjM2E3YjYyOTU5NzZkMDAuLjExMzk5YjM5
MGZlOTE3MGY2YzUyNTI3NWFjMjM0NTgyZGFmNzUwZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBXVFJFdmVudFF1
ZXVlSXRlbTsKICNlbmRpZgogCiBjbGFzcyBFdmVudFNlbmRlclByb3h5IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFdmVudFNlbmRlclByb3h5
KFRlc3RDb250cm9sbGVyKik7CiAgICAgfkV2ZW50U2VuZGVyUHJveHkoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaAppbmRleCA3ZDk0NWQ2
N2VjNjc1MGJlNzA2NDM1YTJhNmIzYzc0ZDFhZDE3NDNjLi4xZWQ0YWRmOWIzOTM5M2EzMzNhYTMy
NTEwOTdiOWUzYWE0MmNjMzZiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dl
b2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9s
b2NhdGlvblByb3ZpZGVyTW9jay5oCkBAIC0yNywxMCArMjcsMTIgQEAKICNkZWZpbmUgR2VvbG9j
YXRpb25Qcm92aWRlck1vY2tfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIEdl
b2xvY2F0aW9uUHJvdmlkZXJNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayhXS0NvbnRleHRSZWYpOwogICAgIH5H
ZW9sb2NhdGlvblByb3ZpZGVyTW9jaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAK
aW5kZXggMWY5ZDNlZmM5NjRmYjEzNzdiYzY2M2MwMTYwYzM0YTg4YjIzMjhhNi4uYzlhNTJjMTVm
NzcwODMwNjgzYzhlZmY2ODk0MjliZDBiYzFmNTY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuY3BwCkBAIC02MTIsNiArNjEyLDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVy
Ojptb25pdG9yV2hlZWxFdmVudHMoKQogfQogCiBzdHJ1Y3QgU2Nyb2xsQ29tcGxldGlvbkNhbGxi
YWNrRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEpTQ29u
dGV4dFJlZiBtX2NvbnRleHQ7CiAgICAgSlNPYmplY3RSZWYgbV9mdW5jdGlvbjsKIApAQCAtNjQ3
LDcgKzY0OCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsCiAgICAgCiAgICAgSlNWYWx1ZVBy
b3RlY3QoY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAKLSAgICBhdXRvIHNjcm9s
bENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbENvbXBsZXRp
b25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOworICAgIGF1
dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSA9IG1ha2VVbmlxdWU8U2Nyb2xsQ29tcGxl
dGlvbkNhbGxiYWNrRGF0YT4oY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAgICAg
YXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyID0gc2Nyb2xsQ29tcGxldGlvbkNh
bGxiYWNrRGF0YS5yZWxlYXNlKCk7CiAgICAgYm9vbCBjYWxsYmFja1dpbGxCZUNhbGxlZCA9IFdL
QnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKHBhZ2Us
IGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0cik7CiAgICAg
aWYgKCFjYWxsYmFja1dpbGxCZUNhbGxlZCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA3MTE2Y2M5
ODE1NjY5ZDk0OTRkYmY4ZGU0OGJhZWVjZDYzNzRjMzc2Li44M2IyYjMwYjEzMzJlYzc3YmZlZmNj
MjlmZGQxYTJlNDgzY2I1ZjIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5
cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQ
YWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewogICAgIGJvb2wgaXNNYWluUGFnZSA9IG1fcGFn
ZXMuaXNFbXB0eSgpOwotICAgIG1fcGFnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0
ZWRCdW5kbGVQYWdlPihwYWdlKSk7CisgICAgbV9wYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxJbmpl
Y3RlZEJ1bmRsZVBhZ2U+KHBhZ2UpKTsKIAogICAgIHNldFVwSW5qZWN0ZWRCdW5kbGVDbGllbnRz
KHBhZ2UpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA1OWQzZTFiMGQwMmUyMmM1MmZhNzY1
NDMzMjljMjNmNmI2MmEzODlhLi5iMzIzYzI1MDQ0ZjU1MDM2MDc2ZjQ4ZWRkZDQ3YmNlYWEzZTIw
ZjE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBX
VFIgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYp
OwogICAgIH5JbmplY3RlZEJ1bmRsZVBhZ2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDU5ZjI1YzFiYmFjNmVk
ODllOTRjZmE4OGE5YWZmYzAzZmI3MjRhMTguLjNiMGVkNmFhY2E3NTk5NTVlZDE1Y2U4YjBjMTBj
ZjM3MmM5OTFkMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjM3NCw3ICsyMzc0LDcgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAg
YXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUs
IG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxl
QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAg
ICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hh
cltdPihmaWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmls
ZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIFdL
QXJyYXlBcHBlbmRJdGVtKGZpbGVVUkxzLmdldCgpLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aEJh
c2VVUkwobV90ZXN0VVJMLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpKSkuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCAwZTVjMDdjYTcyOWI2
ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMyYzAwMTdjLi4xOGU1N2QyZmNmNjI5NzY3YTczMjk3OWJjMmVk
YzU3YWNmMTA5Y2UyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcApAQCAtNzMwLDcgKzczMCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRUb0pTT2Jq
ZWN0QXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtCiAgICAgSlND
b250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFp
bkZyYW1lKTsKIAogICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBjaGlsZHJlbi5zaXplKCk7Ci0g
ICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ZhbHVlUmVmW10+KGVs
ZW1lbnRDb3VudCk7CisgICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyBpKyspCiAgICAgICAgIHZhbHVlRWxlbWVudHNb
aV0gPSBKU09iamVjdE1ha2UoY29udGV4dCwgY2hpbGRyZW5baV0tPndyYXBwZXJDbGFzcygpLCBj
aGlsZHJlbltpXS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
UGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmll
dy5oCmluZGV4IGY3NGNjMmQzOTNkNTMwNWZkMzY2NWJiMGUwYTM1NTE4NDQ3MzEwOWYuLmNhNGZk
YmQ3MjIxNWFmNDhiZGE5NjdkNWJjYWI0ODE1NmJhZGNjNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgIWRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjaW5jbHVk
ZSA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgpAQCAtNjQsNiArNjUsNyBAQCB0eXBlZGVmIGNhaXJv
X3N1cmZhY2VfdCogUGxhdGZvcm1JbWFnZTsKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0
Zm9ybVdlYlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtV2ViVmlldyhXS1dlYlZpZXdDb25maWd1cmF0
aW9uKiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvU3RyaW5nRnVuY3Rpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1
bmN0aW9ucy5oCmluZGV4IGRhZjE0Y2E3MDU0ODZiZmMyMDY0MzEyM2RlNTA5MWI3OWU1ZDAxMzEu
LmJiYTE3YzJlZmZiMDk2NjVlZmMyOGVlYjY5ZTcyMzI5YjFkNjliNzQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaApAQCAtNzMsNyArNzMsNyBAQCBpbmxpbmUgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRvSlMoY29uc3QgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
JiBzdHJpbmcpCiBpbmxpbmUgc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQog
ewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
YnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBX
S1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsK
ICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsK
IH0KQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKGNvbnN0IFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIFdURjo6U3RyaW5nIHRvV1RGU3Ry
aW5nKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3Ry
aW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAg
ICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChz
dHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFdURjo6U3RyaW5n
Ojpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAt
IDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAx
NjU0NjI5Y2FhNmY2ZDhjODk0NTQ4MzUxYzBjOGZiMGEzMzMzNzJhLi5mOTdmMTVlNjEyYzBiMWE0
NzAzOGRkYmQzNzhiNjZkMGU3YWM0Mjc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6Omlu
aXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIldlYktpdFRlc3RSdW5uZXJQYWdlR3JvdXAiKSk7CiAgICAgbV9wYWdl
R3JvdXAuYWRvcHQoV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihwYWdlR3JvdXBJZGVu
dGlmaWVyLmdldCgpKSk7CiAKLSAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5p
cXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOworICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IG1h
a2VVbmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CiB9CiAKIFdLUmV0YWluUHRyPFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZUNvbnRleHRDb25m
aWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zOjpDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykgY29u
c3QKQEAgLTUyMSw3ICs1MjEsNyBAQCBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVm
PiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjbwogICAgICAgICBt
X2NvbnRleHQgPSBwbGF0Zm9ybUFkanVzdENvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbihjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSkpLmdldCgpLCBjb250
ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fY29udGV4dE9wdGlvbnMgPSBvcHRp
b25zLmNvbnRleHRPcHRpb25zOwogCi0gICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7
CisgICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Q
cm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgaWYgKGNvbnN0IGNoYXIq
IGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVy
VHJlZVRlbXApOwpAQCAtOTUxLDcgKzk1MSw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0
U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAg
ICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlcmUg
aXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVzZXQgdGhlIEV2ZW50U2VuZGVyIGZv
ciBlYWNoIHRlc3QuCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxF
dmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5p
cXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogCiAgICAgLy8gRklYTUU6IElzIHRoaXMgbmVl
ZGVkPyBOb3RoaW5nIGluIFRlc3RDb250cm9sbGVyIGNoYW5nZXMgcHJlZmVyZW5jZXMgZHVyaW5n
IHRlc3RzLCBhbmQgaWYgdGhlcmUgaXMKICAgICAvLyBzb21lIG90aGVyIGNvZGUgZG9pbmcgdGhp
cywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVhbnVwIHRvby4KQEAg
LTEyMzQsMTEgKzEyMzQsMTEgQEAgc3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RVUkwoY29uc3Qg
Y2hhciogcGF0aE9yVVJMKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOwog
ICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIGJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsg
bGVuZ3RoICsgMSk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwog
ICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihw
cmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNl
cGFyYXRvcgorICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxjaGFyW10+KHByZWZpeExlbmd0aCArIFBBVEhfTUFYICsgbGVuZ3RoICsgMik7IC8vIDEgZm9y
IHRoZSBwYXRoU2VwYXJhdG9yCiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVm
aXgpOwogICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIFBB
VEhfTUFYKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgYm9v
bCBUZXN0Q29udHJvbGxlcjo6cnVuVGVzdChjb25zdCBjaGFyKiBpbnB1dExpbmUpCiAgICAgVGVz
dE9wdGlvbnMgb3B0aW9ucyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21tYW5kKTsKIAogICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0soY3JlYXRlVGVzdFVSTChjb21tYW5k
LnBhdGhPclVSTC5jX3N0cigpKSk7Ci0gICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKKyAgICBtX2N1
cnJlbnRJbnZvY2F0aW9uID0gbWFrZVVuaXF1ZTxUZXN0SW52b2NhdGlvbj4od2tVUkwuZ2V0KCks
IG9wdGlvbnMpOwogCiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3Nob3Vs
ZER1bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+c2V0
SXNQaXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CkBAIC0yOTYwLDcgKzI5NjAs
NyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5UZXN0KGNvbnN0IFRlc3RJ
bnZvY2F0aW9uJikKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQog
CiBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFn
ZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29u
ZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDEwNzNhYjE1MWEwZTM1NDlhNDEyYTVkMjVm
NTRmN2IxYjRlOWRjYjguLjA5MTA4YjBlNTIyNDQzYTY3NWI1MTE0ZjQyOGM3OWFhMTBkMjgzZmMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjY5LDcg
KzE2NjksNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQoV0tTdHJpbmdS
ZWYgc2NyaXB0LCB1bnNpZ25lZCBzY3JpcHRDYWxsYmFjawogICAgIG1fcGVuZGluZ1VJU2NyaXB0
SW52b2NhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4dCkK
LSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVJU2NyaXB0Q29u
dGV4dD4oKnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWU8VUlT
Y3JpcHRDb250ZXh0PigqdGhpcyk7CiAgICAgCiAgICAgbV9VSVNjcmlwdENvbnRleHQtPnJ1blVJ
U2NyaXB0KHRvV1RGU3RyaW5nKHNjcmlwdCksIHNjcmlwdENhbGxiYWNrSUQpOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDc4ODBkZDhkZjU1MmZjOWQ4MmI5
NGQxZDJmMmRkZmQ2ZGY4MmVjMmIuLjg1YjFiMDIwNmViODkyMjZlODZjNmI0MWFiOTNlNWRiOTVl
YmZkOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTQwLDYg
KzQwLDcgQEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0SW52b2NhdGlvbiBmaW5hbCA6
IHB1YmxpYyBVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGVzdEludm9jYXRpb24pOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFRlc3RJbnZvY2F0aW9uKFdLVVJMUmVmLCBjb25zdCBUZXN0T3B0aW9u
cyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxl
ckNvY29hLm1tCmluZGV4IDBmYmY4ZWE1MjNkMzQ4ZDI1NmVjYzUyMzA0MmRlYTAyZmVjZGQxZGMu
LjBlYmY3YmZkMDAzOWY0ZWY4MDkzMmMxZWI1MTkyZmY1NGVlM2M0YTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTE2
OCw3ICsxNjgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXco
V0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAgICAgICBbY29waWVkQ29u
ZmlndXJhdGlvbiBfc2V0QXBwbGljYXRpb25NYW5pZmVzdDpbX1dLQXBwbGljYXRpb25NYW5pZmVz
dCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046dGV4dCBtYW5pZmVzdFVSTDpuaWwgZG9jdW1l
bnRVUkw6bmlsXV07CiAgICAgfQogCi0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsK
KyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvcGllZENv
bmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwogICAgIGZpbmlzaENyZWF0aW5nUGxhdGZvcm1X
ZWJWaWV3KG1fbWFpbldlYlZpZXcuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKG9wdGlvbnMu
cHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKE5TU3RyaW5nICppZGVu
dGlmaWVyKQogewogICAgIG1fb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRpZmllciA9IGlkZW50aWZp
ZXI7CiAgICAgaWYgKCFtX2NhbGVuZGFyU3dpenpsZXIpCi0gICAgICAgIG1fY2FsZW5kYXJTd2l6
emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIg
Y2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHN3aXp6bGVkQ2FsZW5kYXIpKTsKKyAgICAgICAgbV9jYWxlbmRhclN3aXp6bGVyID0gbWFrZVVu
aXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNDYWxlbmRhciBjbGFzc10sIEBzZWxlY3Rvcihj
dXJyZW50Q2FsZW5kYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRDYWxlbmRhcikp
OwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldENvbnRlbnRFeHRlbnNpb25zKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAK
aW5kZXggZGU1NzhmNzNmYzM2ZWNkMTU4OWM5OWY4ZGJmOGZjY2MzOTg3YjQyZS4uZWY5ZTM4ZTcy
M2JhYTk1ZGZmZTcwZWM1YTg3NWNmZWM4NGUzMjg3NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTI3MSw3ICsyNzEsNyBA
QCBpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQg
bG9jYXRpb24sIGd1aW50KiBtb2RpZmllcgogICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTI7CiAK
ICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShrZXlSZWYpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1
ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtl
eVJlZiwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBjaGFyIGNoYXJDb2RlID0gYnVm
ZmVyLmdldCgpWzBdOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9U
ZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250
cm9sbGVySU9TLm1tCmluZGV4IDZhNjFkZjhlMzVkNmZhMDhjOGIxNGM1MWE4MjNjNjJkMDgwNWQ0
ZDIuLmYzYzQxN2M3ZmI3Y2FhNGRlNDc3N2M3YTQ5NGY1M2FmMzJhMThiZmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0xNTEsOCAr
MTUxLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKIAogICAgIG1fcHJlc2VudFBvcG92ZXJT
d2l6emxlcnMuY2xlYXIoKTsKICAgICBpZiAoIW9wdGlvbnMuc2hvdWxkUHJlc2VudFBvcG92ZXJz
KSB7Ci0gICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBA
c2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVy
KSkpOwotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNz
XSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93
RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVz
ZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CisgICAgICAgIG1fcHJlc2VudFBvcG92ZXJT
d2l6emxlcnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmll
d0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1h
dGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZp
ZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenps
ZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJD
b250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3
OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CiAgICAgfQogICAg
IAogICAgIEJPT0wgc2hvdWxkUmVzdG9yZUZpcnN0UmVzcG9uZGVyID0gTk87CkBAIC0yNjksOSAr
MjY5LDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogICAgIGF1dG8gY29udHJvbGxlckNsYXNz
ID0gVUlLZXlib2FyZElucHV0TW9kZUNvbnRyb2xsZXIuY2xhc3M7CiAgICAgbV9pbnB1dE1vZGVT
d2l6emxlcnMucmVzZXJ2ZUNhcGFjaXR5KDMpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNv
bnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9j
YXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6
emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6
emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVy
ZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsK
LSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3Rp
dmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1v
ZGVzKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5p
cXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1
cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1
dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VV
bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3Io
Y3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6
emxlQ3VycmVudElucHV0TW9kZSkpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNr
ZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xh
c3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3
aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkpOwogICAgIFtVSUtleWJvYXJkSW1wbC5zaGFyZWRJbnN0
YW5jZSBwcmVwYXJlS2V5Ym9hcmRJbnB1dE1vZGVGcm9tUHJlZmVyZW5jZXM6bmlsXTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KaW5kZXgg
ZDFjZmM2YTMzMjFlMDI5YzhiYTgxMTVmNGE2ZDkyMDdmOGU3MTg0Zi4uODljZTRlZjEyNmMxNWQ5
MmRjZjc2NjUwY2U2ZWVmNWI4OTIzMTcyZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L21hYy9FdmVudFNlbmRlclByb3h5Lm1tCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZp
ZXJzIG1vZGlmaWUKIAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVy
LT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbklu
V2luZG93XV07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNz
ZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6
emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwor
ICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1
ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2Vk
TW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsK
ICAgICAgICAgW3RhcmdldFZpZXcgbW91c2VEb3duOmV2ZW50XTsKICAgICAgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVy
UHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycwogICAgICAgICB0YXJnZXRWaWV3ID0gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZp
ZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAKICAgICBBU1NFUlQodGFyZ2V0Vmlldyk7Ci0gICAgYXV0
byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xh
c3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNl
QnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9ucykpOworICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBt
YWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9y
KHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVu
dFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVu
dF07CiAgICAgW3RhcmdldFZpZXcgbW91c2VVcDpldmVudF07CiAgICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6bmlsXTsKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICAvLyBBbHdheXMgdGFyZ2V0IGRy
YWdzIGF0IHRoZSBXS1dlYlZpZXcgdG8gYWxsb3cgZm9yIGRyYWctc2Nyb2xsaW5nIG91dHNpZGUg
dGhlIHZpZXcuCiAgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gaXNEcmFnID8gbV90ZXN0Q29udHJv
bGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgOiBbbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDp3aW5kb3dMb2NhdGlvbl07CiAg
ICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRv
bnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZl
bnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgICAgICBhdXRv
IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhv
ZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25z
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
KSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgaWYg
KGlzRHJhZykKICAgICAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRHJhZ2dlZDpldmVudF07CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BF
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3Bw
CmluZGV4IDQ2OWJmYWYwZThjZjI5MDczMGJhYmZhMDc4MzZkODc3ZWM3MGU4ZjUuLjY5NmY0NTU3
NTg5NmZlODI2NjQ4N2QwOThlOGZlOGVlNjFlNTRkNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCkBAIC0yNzksNyArMjc5LDcg
QEAgc3RhdGljIHVpbnQzMl90IHdwZUtleVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYs
IHVuc2lnbmVkIGxvY2F0aW9uLCB1aW50MzIKICAgICAgICAgcmV0dXJuIFdQRV9LRVlfRjEyOwog
CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1Np
emUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihi
dWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhr
ZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1
ZmZlci5nZXQoKVswXTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376323</attachid>
            <date>2019-08-14 15:37:27 -0700</date>
            <delta_ts>2019-08-14 17:48:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190814153726.patch</filename>
            <type>text/plain</type>
            <size>1786352</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzVkMzcyYzc0MGZmNjkwOGQyNDA1YjJkMWFiMzVlNjc4NGFiNzgwLi5iZWM4NzU0NWJhZTcxYjRi
NjU2NDViYjdlY2FmMmIxOWU4YzQxOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwaGFzZSwg
YmxvY2ssIGFuZCBub2RlIG51bWJlcnMgdG8gbGVmdCBtYXJnaW4gb2YgREZHIGdyYXBoIGR1bXBz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwppbmRleCA0MjFlN2NlYWQ2ODYzOTI2N2RkYjg0NTkxNGM5YWMyYzJjMjQ3Y2UzLi42MjBhMTky
MzNmMjhjNTg5Mjg3YzUwODMzOWE3NGZjYzhkN2JhNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisy
MDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiZW5j
aG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwOgorICAgICAgICAqIGJlbmNobWFya3MvTG9ja1Nw
ZWVkVGVzdC5jcHA6CisgICAgICAgICogd3RmL0NvbmN1cnJlbnRWZWN0b3IuaDoKKyAgICAgICAg
KiB3dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6OkNyb3NzVGhy
ZWFkVGFza0hhbmRsZXI6OnRhc2tSdW5Mb29wKToKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5o
OgorICAgICAgICAqIHd0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwOgorICAgICAgICAoV1RGOjpGaWxl
UHJpbnRTdHJlYW06Om9wZW4pOgorICAgICAgICAqIHd0Zi9GdW5jdGlvbi5oOgorICAgICAgICAo
V1RGOjpGdW5jdGlvbjxPdXQpOgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAg
KFdURjo6S2V5VHJhaXRzPjo6SGFzaFRhYmxlKToKKyAgICAgICAgKiB3dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdURjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRT
aG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IpOgorICAgICAgICAqIHd0Zi9TdGRMaWJFeHRy
YXMuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZSk6CisgICAgICAgIChXVEY6Om1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrKToKKyAgICAgICAgKiB3dGYvU3RyZWFtQnVmZmVyLmg6
CisgICAgICAgIChXVEY6OlN0cmVhbUJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3dGYvVW5p
cXVlUmVmLmg6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0No
ZWNrKToKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZik6CisgICAgICAgICogd3RmL2dsaWIv
UnVuTG9vcEdMaWIuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKToK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
Vmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKToKKwogMjAxOS0wOC0x
MyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIGJ1aWxkIGZpeCBmb3IgV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1ZjU4OTY3M2JiYzI4ODYy
MGUxOGEwNDFjYjE0NmJhZjkxZWY1ZjAuLmYyY2NlMjBmNGM5MTE4OTYxZDBmYjZlNTQ4M2EwMGE3
NGRjZWQ0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODc5IEBACisyMDE5LTA4LTE0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VV
bmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZlbG9wZXJXYXJuaW5nKToKKyAgICAg
ICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yQmVhY29uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTVdp
bmRvd0NhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dDYWNoZXM6OmZyb20p
OgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20pOgorICAgICAg
ICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20pOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMpOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lDRE06OmtleVN5c3RlbSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lDRE06OmNsaWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lD
RE06OnNldENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5o
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6
ZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3Rh
cnQpOgorICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdhbWVwYWQ6OmZyb20pOgorICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9u
L05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdl
b2xvY2F0aW9uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93SW5kZXhlZERh
dGFiYXNlOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9Xb3Jr
ZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6SURCQ29ubmVjdGlvblRvU2Vy
dmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJh
dGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZW5zdXJlUXVvdGFVc2VyKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6
cmVjb3JkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpzZXRE
YXRhYmFzZUluZm8pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
bmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUluZGV4OjpwdXRJ
bmRleEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUluZGV4OjptYXli
ZU9wZW5DdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVj
dFN0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlP
YmplY3RTdG9yZTo6bWF5YmVPcGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWxE
YXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFz
ZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmJlZ2luVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNhY2hlZFN0YXRlbWVudCk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlQmFja2luZ1N0b3JlQ3Vy
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpjcmVh
dGVTUUxpdGVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJUcmFuc2FjdGlvbjo6YmVnaW4pOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
T3BlbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dERhdGE6OklEQlJlcXVlc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXF1ZXN0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdERhdGE6OmRlY29kZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFiYXNlU3VjY2Vzcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXN1bHREYXRhOjpwdXRPckFkZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRzU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJS
ZXN1bHREYXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3Vs
dERhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRy
YW5zYWN0aW9uSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86
OnZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjpJ
REJUcmFuc2FjdGlvbkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZv
Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJU
cmFuc2FjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6
ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFN
YW5hZ2VyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1l
ZGlhQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhQ2Fw
YWJpbGl0aWVzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1h
bmFnZXI6Om1vY2tQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzZXRM
aXZlU2Vla2FibGVSYW5nZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JNZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFEZXZp
Y2VzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZVVzZXJNZWRpYVRvKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpjaGFubmVsRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFuc2NlaXZlcik6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVUcmFuc2NlaXZlckJhY2tlbmRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnRyYW5zY2VpdmVyQmFj
a2VuZEZyb21TZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6Y3JlYXRlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aWRlb1JlY2VpdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXVkaW9SZWNl
aXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRNRkJhY2tlbmQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVNlbmRlckJhY2tlbmQpOgorICAgICAgICAqIE1v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3Zp
ZGVOb3RpZmljYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UXVvdGE6OmZyb20pOgorICAgICAgICAq
IE1vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9xdW90
YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93U3BlZWNoU3ludGhlc2lzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjplbnN1
cmVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNv
ZGVyOjpkZWNvZGVBc3luYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlv
RGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5n
VGFzazo6YXVkaW9EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9E
ZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6c3VjY2Vzc0NhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNv
ZGluZ1Rhc2s6OmVycm9yQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9CdWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVkaW9EYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKFdlYkNv
cmU6OkJpcXVhZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVzcG9uc2UpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hh
bm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZl
ck5vZGU6OkNvbnZvbHZlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6
c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWxheU5vZGU6OkRlbGF5Tm9kZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheVBy
b2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVz
c29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5h
bWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0dhaW5Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6T3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6
UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxl
cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5hbHlzZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6c2V0RmZ0U2l6ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5vZGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZyk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
YXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRNZXNz
YWdlOjpGaWRvSGlkTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0Zp
ZG9IaWRQYWNrZXQuY3BwOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZEluaXRQYWNrZXQ6OmNyZWF0
ZUZyb21TZXJpYWxpemVkRGF0YSk6CisgICAgICAgIChmaWRvOjpGaWRvSGlkQ29udGludWF0aW9u
UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om9wZW5B
bmRWZXJpZnlWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXApOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2U6OnRhYmxlTmFtZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJl
YWQ6OkRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmFkZE9w
ZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENy
ZWF0aW5nRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNv
cmREZWxldGluZ0RhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdo
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYkRyaXZlcjo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmln
YXRvckdQVTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
RW51bWVyYXRpb25EZWZpbml0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpNZXRhbDo6UmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVF
bnRyeVBvaW50U2NhZmZvbGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpD
b21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRp
bmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6VHlwZU5hbWVyOjpjcmVhdGVO
YW1lTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNrZXI6OmFzc2lnblR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNrZXI6OmZvcndhcmRUeXBlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6UGFyc2VyOjpwYXJzZVNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmluZ1R5cGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9Xb3JrZXJO
YXZpZ2F0b3JHUFUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTmF2aWdhdG9yR1BVOjpm
cm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZ3JhZGVVUkwpOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6ZW5xdWV1ZVRleHRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
OjplbnF1ZXVlUmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZUJsb2JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpw
cm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmluZmxhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVh
ZEluaXRpYWxpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yV2ViVlI6OmZyb20pOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRh
dGVzKToKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cXVldWVU
YXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNFdmVudFRhcmdldENhc3QpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRyYW5zZmVyQXJyYXlCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
ZGVjb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCk6CisgICAgICAgICog
YnJpZGdlL2MvY19jbGFzcy5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6Om1l
dGhvZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6ZmllbGRO
YW1lZCBjb25zdCk6CisgICAgICAgICogYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaDoKKyAgICAgICAg
KiBicmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2Jq
Y0NsYXNzOjptZXRob2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpj
Q2xhc3M6OmZpZWxkTmFtZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3Qp
OgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29tYmluZWRVUkxGaWx0ZXJzOjpD
b21iaW5lZFVSTEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OkNvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybik6CisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg6CisgICAgICAgICogY3J5cHRvL1N1YnRs
ZUNyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3NzVGhyZWFkQ29weUltcG9ydFBhcmFt
cyk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZGV0ZXJtaW5lQ2F0ZWdvcnkpOgorICAgICAgICAqIGNzcy9DU1NEZWZhdWx0U3R5bGVT
aGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2Fk
RnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NEZWZhdWx0U3R5bGVTaGVl
dHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyk6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQpOgorICAgICAg
ICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBp
bmdSdWxlOjpjc3NSdWxlcyBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2
ZUNhY2hlZEltYWdlRm9yU2l6ZSk6CisgICAgICAgICogY3NzL0NTU0tleWZyYW1lc1J1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVsZTo6Y3NzUnVsZXMpOgorICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hl
ZXQ6OmNzc1J1bGVzKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZnJvbSk6CisgICAgICAgICogY3Nz
L0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbSk6CisgICAgICAgICogY3NzL0RvY3VtZW50
UnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6RG9jdW1l
bnRSdWxlU2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjp1cGRhdGVV
c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Om1ha2VSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OnJl
c2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlSW52YWxpZGF0aW9uUnVs
ZVNldHMpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2V1ZG9FbGVt
ZW50UnVsZXNGb3JTbG90KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcik6CisgICAgICAgICogY3Nz
L1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OndyYXBGb3JEZXByZWNhdGVkQ1NTT00pOgor
ICAgICAgICAqIGNzcy9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVh
dHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVGZWF0dXJl
U2V0OjphZGQpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bGVTZXQ6OmFkZFRvUnVsZVNldCk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0
b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JC
b3hTaGFkb3dWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5SW5oZXJpdFRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVy
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1
cmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVBy
b3BlcnRpZXM6OmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNh
c2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKToKKyAgICAgICAgKiBjc3MvbWFrZXByb3AucGw6
CisgICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyKToK
KyAgICAgICAgKGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNldHRlcik6CisgICAgICAg
ICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlckltcGw6OkNTU1BhcnNlckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1w
bDo6cGFyc2VQYWdlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6
Y29uc3VtZU1lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25z
dW1lU3VwcG9ydHNSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1
bWVLZXlmcmFtZXNSdWxlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1
ZG9TZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQ
c2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0
b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rvcik6CisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFzaWNT
aGFwZVBhdGgpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVQc2V1ZG8pOgorICAg
ICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5zdXJlQmFja3VwUXVldWUpOgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVyOjppdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklu
cHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFn
U3RhcnRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldERyYWdJbWFn
ZSk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwcm92aWRlRGV2aWNlT3JpZW50YXRpb25Ubyk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmZvcm1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1
cGRhdGVUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVzZXJBZ2Vu
dFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojph
eE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRQYXJz
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphY2Nlc3NTVkdFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0QXV0b1NpemluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpkaWRMb2dNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWdp
c3RlckNTU1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZG9tVGltZXJIb2xkaW5nVGFuayk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlUGFyc2VyWWllbGRUb2tlbik6CisgICAgICAg
ICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgICogZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vz
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20pOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmVuYWJsZVRl
bXBvcmFyeVRpbWVVc2VyR2VzdHVyZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y2xhc3NMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRhdGFzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZVJlc2l6ZU9ic2VydmVyRGF0YSk6Cisg
ICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAg
ICAqIGRvbS9FdmVudFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpidWls
ZFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpFdmVudFBhdGgpOgorICAgICAg
ICAqIGRvbS9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAgICAqIGRvbS9JZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5OjphZGRPYnNlcnZlcik6CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICog
ZG9tL01pY3JvdGFza3MuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1pY3JvdGFza1F1ZXVlOjp2bSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2spOgor
ICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYWRpb0J1
dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBv
cnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdyk6Cisg
ICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFn
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNl
bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQpOgor
ICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRhVHJhbnNmZXJGb3JD
bGlwYm9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OkVkaXRvcik6CisgICAg
ICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZW5zdXJlUmVwbGFjZW1lbnRGcmFnbWVudCk6
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZENyZWF0ZU5vdGlmaWVyKToK
KyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpIVE1MQ29udmVydGVyKToK
KyAgICAgICAgKEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVs
ZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ci5oOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCk6CisgICAgICAgICogZmlsZWFwaS9Bc3lu
Y0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsbE9uRmlsZVRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OkFzeW5jRmlsZVN0cmVhbSk6CisgICAg
ICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFk
ZXI6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUpOgorICAgICAgICAqIGhp
c3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpDYWNo
ZWRQYWdlKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6cmVxdWVzdEljb24p
OgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZv
cm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQpOgorICAgICAgICAqIGh0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVs
ZW1lbnQ6OnJlbExpc3QgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6bWFwTW91c2VFdmVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OnVw
ZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFt
ZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6YWRkVG9QYXN0TmFtZXNNYXAp
OgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3gpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJ
bWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpyZXNldExp
c3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpzaXplcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnJlbExpc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpmaW5pc2hJbml0aWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcik6CisgICAgICAgICogaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnVwZGF0ZUFmdGVyU3R5bGVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxT
dW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3VtbWFyeUVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
aHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY1VSTE1h
bmFnZXI6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnJlcXVlc3RUb0hpZGVNZXNz
YWdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ6OkRpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRvQ29uc29sZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6
Omluc2VydEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6OnB1c2hD
b21tb24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6OmNy
ZWF0ZVByZWxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6
OmZpbHRlclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmRlY29kZWRIVFRQ
Qm9keVN1ZmZpeFRyZWUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRHZW5l
cmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZEdlbmVyaWNUZXh0VHJh
Y2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpwYXJzZXIpOgor
ICAgICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1hbmRM
aW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbW1h
bmRMaW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycyk6CisgICAgICAgICogaW5zcGVjdG9yL0RP
TUVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6Omluc2VydEJlZm9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUVkaXRvcjo6c2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVk
aXRvcjo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0
T3V0ZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6aW5zZXJ0QWRqYWNlbnRI
VE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpET01FZGl0b3I6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6OmNyZWF0
ZURpZ2VzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3Bl
Y3RvckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3Vy
ZURPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3Vy
ZVBhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVTdGF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoUGFyc2Vk
U3R5bGVTaGVldDo6c2V0U291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JT
dHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0Rh
dGE6OnJlc291cmNlQ3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
UFVQcm9maWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZh
c0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9y
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFk
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1
YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0ZWROb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5
bGVBdHRyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Oklu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRl
cm5hbFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0
YXJ0RnJvbUNvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6c3RvcEZyb21Db25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
cldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50
OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJD
b25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpkaWRG
YWlsTG9hZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViSGVhcEFnZW50OjpXZWJIZWFwQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyk6Cisg
ICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9y
bWF0dGluZ1Jvb3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0
YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlSdW4uaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCBjb25zdCk6CisgICAgICAg
ICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5
b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMgY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaDoKKyAgICAgICAgKiBsYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZE5vbkJy
ZWFrYWJsZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4
dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25SZXBs
YWNlZElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZEhh
cmRMaW5lQnJlYWspOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmUuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpjcmVhdGVBbmRB
cHBlbmRUZXh0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVUZXh0SXRl
bTo6c3BsaXQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6Qm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Qm94OjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgICogbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpU
cmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VHJlZUJ1aWxkZXI6OmNyZWF0ZVRhYmxlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cyk6CisgICAgICAgICogbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Omxv
YWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGll
bnRzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhl
c2l6ZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hp
bGRyZW4pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxpbmtQcmVsb2FkUmVz
b3VyY2VDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2gp
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5
TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hl
ZHVsZVBhZ2VCbG9jayk6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3MpOgorICAgICAgICAqIGxvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSZXNvdXJjZURl
Y29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQpOgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3
Q3VlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9tKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpy
ZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fkcyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdE
b2N1bWVudFJlZmVyZW5jZTo6bG9hZFJlcXVlc3RlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6ZG9jdW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDYWNoZTo6ZW5zdXJlU2Vzc2lvblJlc291cmNlTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5Q2FjaGU6OmxydUxpc3RGb3IpOgorICAgICAgICAqIGxvYWRlci9pb3MvUHJldmlld0xv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0aFJlc291cmNlTG9hZGVyOnJlc291cmNlUmVzcG9u
c2U6XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgY29ubmVjdGlvbjpkaWRGYWlsV2l0
aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0xvYWRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNv
bnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4dE1lbnUpOgorICAgICAgICAqIHBhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VXaGVlbFJlZ2lvbk92ZXJs
YXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkRW1iZWRk
ZWRPYmplY3RUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFNsb3dS
ZXBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkVmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFNjcm9s
bGFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRT
dGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3JCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmluaXRHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUpOgorICAgICAgICAqIHBhZ2UvUGFn
ZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6
OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6Om1lc3Nh
Z2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50
OjpzY3JlZW5zaG90KToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcyk6CisgICAgICAgICogcGFnZS9Q
ZXJmb3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6bWFyayk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6Y2xlYXJNYXJrcyk6CisgICAgICAgIChXZWJD
b3JlOjpQZXJmb3JtYW5jZTo6bWVhc3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5j
ZTo6Y2xlYXJNZWFzdXJlcyk6CisgICAgICAgICogcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaDoK
KyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmlu
dENvbnRleHQ6Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyk6CisgICAgICAgICogcGFnZS9SZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyOjpzdGFydFRpbWVyKToKKyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvUmVzaXplT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBw
YWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgICogcGFnZS9TZXR0aW5n
c0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpTZXR0aW5nc0Jhc2Up
OgorICAgICAgICAqIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5oOgorICAgICAgICAqIHBhZ2UvVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENv
bnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1doZWVsRXZlbnRE
ZWx0YUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NBbmltYXRpb25Db250cm9sbGVyOjpDU1NBbmlt
YXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3I6OlByb3BlcnR5V3JhcHBl
clZpc2l0ZWRBZmZlY3RlZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcnNQcm9w
ZXJ0eVdyYXBwZXI6OkZpbGxMYXllcnNQcm9wZXJ0eVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldy
YXBwZXJNYXApOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZGF0ZVNvdXJjZVNl
bGYpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5o
OgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZSk6CisgICAgICAgICogcGFnZS9pb3MvQ29udGVudENo
YW5nZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5o
OgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVu
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNaXhlZFR5cGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFs
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
Ojpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5o
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJlck9mQ2hhbm5lbHMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRp
b0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6QXVkaW9DaGFubmVs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6c2V0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bGVuZ3RoIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6bXV0YWJsZURhdGEpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpkYXRhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVybyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50RmxhZyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OmNvbmZpZ3VyZUNoYW5uZWxz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmg6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6aXNBY3RpdmUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6
OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6
aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0
OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6
Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVj
dDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6
Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGVu
b3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6RGVu
b3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2Fi
bGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEZW5v
cm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1plcm8pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NSKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojptb2RlbCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6c2V0TW9kZWwpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldFJlZkRpc3RhbmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjpzZXRNYXhEaXN0
YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6c2V0Um9s
bG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6
cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VF
ZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNz
b3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpz
YW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29t
cHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5h
bWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hhbm5l
bHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5o
OgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpsYXRlbmN5RnJh
bWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
eW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2FpbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RkZUQ29udm9s
dmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6Y3JlYXRlSW50ZXJwb2xh
dGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJPZkF6aW11dGhzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZCk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxl
dmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRp
b246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6SFJU
RkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpr
ZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpr
ZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpl
bGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxl
dmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURktl
cm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpjcmVhdGVJ
bXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNpemUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6TXVsdGlDaGFubmVsUmVzYW1w
bGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVy
Yjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZXZlcmI6OmltcHVsc2VSZXNwb25zZUxlbmd0aCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXI6OnJlYWRJbmRleCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJBY2N1bXVsYXRpb25CdWZm
ZXI6OnJlYWRUaW1lRnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2
ZXI6OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OmltcHVsc2VSZXNw
b25zZUxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252
b2x2ZXI6OmlucHV0QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNv
bnZvbHZlcjo6dXNlQmFja2dyb3VuZFRocmVhZHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjppbnB1dFJlYWRJbmRleCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJldmVyYklucHV0QnVmZmVyOjp3cml0ZUluZGV4IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vVXBTYW1wbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vWmVyb1Bv
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpaZXJvUG9sZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6WmVyb1BvbGU6OnNldFplcm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVy
b1BvbGU6OnNldFBvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6Onpl
cm8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnBvbGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVm
ZmVyTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0OjpsaXN0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6b3Bl
cmF0b3IgQXVkaW9CdWZmZXJMaXN0JiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJBdWRpb0J1ZmZlckxpc3Q6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpB
dWRpb1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0SW5wdXRGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRPdXRwdXRGb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
Zi9LZXllZERlY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRl
Y29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0dXBQ
b3dlck9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xs
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0
ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUZhY3RvcnlDbGVh
cktleTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpHYW1lQ29u
dHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRpZENvbm5lY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
YW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SElE
R2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rl
ckdlbmVyaWM6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5
ZWREZWNvZGVyR2VuZXJpYyk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3VyZVNtb290aFNjcm9sbGlu
Z0FuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRMYXlvdXQ6OlRleHRMYXlvdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UG9pbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnQ6OmVuc3VyZURlcml2ZWRGb250RGF0YSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Ym91
bmRzRm9yR2x5cGggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJldHJpZXZlT3JBZGRDYWNoZWRGb250cyk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYXNjYWRlRm9udHM6OkdseXBoUGFnZUNhY2hlRW50cnk6OnNldEdseXBoRGF0YUZv
ckNoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFw
Lmg6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE1ldHJpY3NNYXA8VD46OmxvY2F0ZVBhZ2VTbG93
Q2FzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZTo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludEdy
YXBoOjpmaW5kT3JDcmVhdGVOb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpzZXRTaGFwZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OmNv
cHlTaGFwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUZhY3RvcnlGYWly
UGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpidWZm
ZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1QaWNrZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFu
Z2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6Om5v
dGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmxlZ2li
bGVPdXRwdXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpyZXNvdXJj
ZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdGlvbk9wdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRB
c3NldFRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRy
YWNrTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRp
bWVSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6dXBkYXRlUm90YXRpb25TZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vl
a1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRl
TGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBs
YXllckl0ZW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OnNldEFzc2V0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpzZXRNZWRpYVNlbGVjdG9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFu
aW1hdGlvbnNGcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRy
b2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2Nh
bGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFn
ZVJlY3RGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnRp
bGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tOgorICAgICAgICAoLVtX
ZWJUaWxlZEJhY2tpbmdMYXllciBjcmVhdGVUaWxlQ29udHJvbGxlcjpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAg
KFBsYXRmb3JtQ0FMYXllcldpbjo6UGxhdGZvcm1DQUxheWVyV2luKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwOgorICAgICAg
ICAoV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRl
RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjptX3ByaXZhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnN3YXBCdWZmZXJzSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1t
OgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0NvbnRleHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9u
Q29jb2EubW06CisgICAgICAgIChUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblByb3BlcnRp
ZXM6OmlzSWRlbnRpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6dHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJvdGF0aW9uUHJvcGVydGllcyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpzaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJv
dGF0ZWRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhl
bEJ1ZmZlckNvbmZvcm1lckNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4
dHVyZUNhY2hlQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2Fj
aGVDVi5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNWOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVybmFs
RG9jdW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5zdXJlQXVkaW9Tb3VyY2VQcm92aWRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0
V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZl
cmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0Jv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFy
c2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1l
SW5mb0JveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZv
cm1hdGlvbkJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJU09TY2hlbWVJbmZvcm1hdGlvbkJv
eDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZv
cm1hdGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVU
eXBlQm94Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlw
dGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SVNPU3RyaW5nQm94Ojpjb250ZW50cyk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SVNPV2ViVlRUQ3VlOjpib3hUeXBlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJU09XZWJWVFRDdWU6OnByZXNlbnRhdGlvblRpbWUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpkdXJhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnNvdXJjZUlEIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6aWQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpvcmlnaW5hbFN0YXJ0VGltZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnNldHRpbmdzIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6Y3VlVGV4dCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRp
bmdPcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29z
aWFTY2VuZUludGVncmF0aW9uLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlNjZW5lSW50ZWdyYXRp
b246OmNyZWF0ZVVwZGF0ZVNjb3BlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6OmNyZWF0ZUNvbW1hbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKE5pY29z
aWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGFpbnRpbmcpOgorICAg
ICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29yZGluZzo6Rm9yUmVj
b3JkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0
dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAg
ICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0
b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
OjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcDoKKyAg
ICAgICAgKE5pY29zaWE6OkdDM0RMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJh
Y2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJ
bXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTENvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckdMOjpUZXh0dXJlTWFwcGVyR0wpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9u
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBk
YXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9UaWxlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
QmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zv
cm1TdGF0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjph
cHBseVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFz
dFBsYW5hclNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVu
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJvbGxlcjo6
RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlbkNvbnRy
b2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Om1f
cHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVdpbmRv
d3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmJ1ZmZlcmVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVvUHJlc2VudGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVj
dDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhl
bHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29t
Ym9Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxw
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6Cisg
ICAgICAgIChHSUZGcmFtZUNvbnRleHQ6OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRl
cjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURl
Y29kZXI6OmRlY29kZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckRyYWdBbmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJX
UEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1fY2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9DYXB0
dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvRGF0YTo6R1N0cmVhbWVyQXVkaW9EYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvRGF0YTo6Z2V0U2FtcGxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvRGF0YTo6Z2V0QXVkaW9JbmZv
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvRGF0YTo6a2luZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckNhcHR1cmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OndlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6bV9jYXB0dXJlcik6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRGVjb2RlckZhY3Rv
cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5k
ZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeTo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Omlu
aXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNhdGVHZW5lcmF0b3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZWNvbmZpZ3VyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29j
b2E6OmNvbnZlcnRUb1lVVik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ05vdGlmaWVyc01vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRGF0YUNoYW5u
ZWxOb3RpZmllcjo6ZmlyZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVmZmVyZWQgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFVUkxEZWNvZGVyOjpjcmVhdGVEZWNvZGVUYXNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6UmVzb3Vy
Y2VIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRCb2R5RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAg
ICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9yZXN0YXJ0XSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUph
ckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6OkN1cmxDb250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxIYW5kbGU6OndpbGxTZXR1cFNzbEN0eCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRm9ybURh
dGFTdHJlYW06OmdldFBvc3REYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpjcmVhdGVJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnJ1bk9uTWFp
blRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVyaWZpZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNhbGxPbldvcmtlclRocmVhZCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlIGNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDpdKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9tUGVy
c2lzdGVudFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpEZXJpdmVkQ2xhc3M+OjphcHBlbmRSdW5JbnRlcm5hbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlSUNVOjpjcmVhdGVMYWJl
bFZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1JlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1JlcGxh
Y2VtZW50OjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNVVEYxNi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJD
b2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2lu
L1RleHRDb2RlY1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXdUZXh0Q29kZWNXaW4pOgor
ICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpnZXRWUkRpc3BsYXlzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1
cE1lbnVEQjo6Y3JlYXRlUHJlcGFyZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9XQ0RhdGFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0NEYXRhT2JqZWN0OjpTZXRE
YXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9Db21wbGV4TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSdW4pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlvdXQ6OmhhbmRsZVRyYWlsaW5nU3Bh
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpsaW5rVG9FbmRMaW5l
SWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGbG9hdGluZ09iamVjdDo6Y29weVRvTmV3Q29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjbG9uZUZvck5ld1BhcmVudCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQbGFjZWRGbG9hdHNUcmVlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkSXRlcmF0
b3I6Om5leHRFbXB0eUdyaWRBcmVhKToKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZEJhc2VsaW5l
QWxpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRCYXNlbGluZUFsaWdubWVudDo6
dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1Np
emluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0U2l6ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnNldHVwKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpsaXN0QmFzZWRUZXN0
UmVzdWx0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Om11dGFibGVM
aXN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFBsYWNlaG9sZGVyUnVuRm9ySXNvbGF0ZWRJbmxpbmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJPdmVybGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRJ
bnRvVHJhY2tlZFJlbmRlcmVyTWFwcyk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbmVkRGVz
Y2VuZGFudHNNYXA6OmFkZERlc2NlbmRhbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5zdXJlQmxvY2tSYXJlRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Omxh
eW91dElubGluZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
bGF5b3V0TGluZUdyaWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpj
cmVhdGVGbG9hdGluZ09iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
OjplbnN1cmVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpt
YXRlcmlhbGl6ZVJhcmVCbG9ja0Zsb3dEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjplbnN1cmVDb250aW51YXRpb25DaGFpbk5vZGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VD
b3VudGVyTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5k
ZXJCb3hGcmFnbWVudEluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVk
Rmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y29udGFp
bmluZ0ZyYWdtZW50TWFwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hWaWV3KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21w
dXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVH
cmlkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3Jl
YXRlSW5saW5lRmxvd0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjp1cGRhdGVDbGlwUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUFuY2VzdG9yQ2xpcHBpbmdTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5Rmx1c2hCZWZvcmVEaXNwbGF5UmVmcmVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yOjpyZWdp
c3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpjcmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxlRGlk
Q2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3
OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdlUXVh
bGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWludFJl
Z2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAqIHJl
bmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVC
b3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVjdEJv
dW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5
KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6
aW5nOjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2
YWxzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q2lyY2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3Rl
clNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hh
cGVQYXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnRE
YXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxs
TGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93U1ZH
RGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hh
ZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0
ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJT
VkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNv
dXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNv
dXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJu
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2Vz
OjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRT
dHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5k
ZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVh
c3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxk
ZXI6OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OlJlbmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6
CisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6SW52YWxpZGF0b3I6OkludmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9TdHls
ZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRpb25z
VG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAgICog
c3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRy
ZWVSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAgICAg
ICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFw
aGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NWR1Bh
dGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6Y29w
eSBjb25zdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ckJ1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRl
ZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3Bl
cnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0
dHJpYnV0ZUFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVk
RW51bWVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlY29yYXRlZEVudW1lcmF0aW9u
OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5
Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9y
eS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvcklt
cGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1h
dG9ySW1wbC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpmcm9tKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHViRnJvbnRlbmQ6
Okluc3BlY3RvclN0dWJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Oklu
dGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuYWJsZU1vY2tTcGVlY2hT
eW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3Bl
Y3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0UHJpbnRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbml0aWFsaXplTW9ja0NETSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKToKKyAgICAgICAgKiB0ZXN0
aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TW9ja0NETTo6
Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmg6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5
Lmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0dhbWVwYWRQcm92
aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNv
bnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6
bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRR
dWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZl
bnQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckds
b2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3Jr
ZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94
eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6V29ya2Vy
UnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRl
cm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1v
ZGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6cmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0
ZUJsb2JMb2FkZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6
Om9wZW5TUUxpdGVEYXRhYmFzZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9u
RnJvbVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAgICAgICAqIHdvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNz
YWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEds
b2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2Ny
aXB0V2l0aFN1YmNsYXNzKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmg6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
Ojp1cGxvYWQpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICog
eG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpldmFsdWF0
ZVByZWRpY2F0ZSk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0KToKKyAgICAgICAg
KiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhN
TERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcik6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxi
YWNrczo6YXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRFbmRFbGVtZW50TlNDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0
aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5k
Q0RBVEFCbG9ja0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6
OmFwcGVuZENvbW1lbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJh
Y2tzOjphcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
bmRpbmdDYWxsYmFja3M6OmFwcGVuZEVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCk6CisKIDIwMTktMDgtMTMgIFJvYmluIE1vcmlzc2V0
ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0hMU0xdIERvbid0IGdlbmVyYXRl
IGVtcHR5IGNvbW1hIGV4cHJlc3Npb25zIGZvciBiYXJlICc7JwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5k
ZXggMGUxYmZlNzM1NDE0MjRjMGQxOWRiOTE4YzQ1MmZlMDVmOWU2NzVhZi4uNjRhZGU2N2QyN2Rl
YzIyNzdhMjk5OTI5MjkxODc4MGU0Y2U0ZWRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZh
c3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAgICAg
ICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGFs
L3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwOgorICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6OmNy
ZWF0ZSk6CisKIDIwMTktMDgtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgVGFwcGluZyBidXR0b25zIGluIERhdGEgRGV0ZWN0b3JzIGxvb2t1cCBw
cmV2aWV3cyBkb2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggMzU4ZjJiZjAwNWFlNjQ0ZDgx
MjMyOGQ1ZGVkZTQxOWM4YmEwMWNmYi4uM2IxOTI4ZTlhMzA5MzA1MGE1MTcwYjczNzA5MjZmOTZl
ODE1MGJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOC0xNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtl
VW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5j
cHA6CisgICAgICAgIChXZWJEcml2ZXI6OldlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dz
ZXIpOgorICAgICAgICAqIGdsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcDoKKyAgICAgICAgKFdlYkRy
aXZlcjo6U2Vzc2lvbkhvc3Q6OmxhdW5jaEJyb3dzZXIpOgorICAgICAgICAoV2ViRHJpdmVyOjpT
ZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQpOgorCiAyMDE5LTA2LTAzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyNDU1NjcpOiBbR1RLXVtXUEVdIFsyLjI1LjFdIFdlYktpdFdlYkRyaXZlciBnZXRzIGluc3Rh
bGxlZCBhcyBXZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDAxYTJjNzNjMjdiNjk2ODZkODliMTU1MDFm
MmZmZWQ4OTQyZGU4Ny4uMmNhOWE3MTM5NDBlODdmMDE1ZGNlNTRkMjFlY2E1NjA3MzE3OTE4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2MzggQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlz
ayk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFwOjphZGQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5k
aW5nRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OlBlbmRp
bmdEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjplbnN1cmVTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUXVvdGFVc2Vycyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6YWRkU3VwcGxlbWVudCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9XZWJTb2NrZXRUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFn
ZURhdGFiYXNlOjpzY2hlZHVsZURhdGFiYXNlVXBkYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkNhY2hlOjpDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
Om1ha2VFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6Om1ha2VS
ZWRpcmVjdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6dXBk
YXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmRlY29kZVN0b3JhZ2VS
ZWNvcmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxvYWQ6
OnJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnNh
dGlzZnlQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxh
dGl2ZVJldmFsaWRhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFn
ZTo6c3luY2hyb25pemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6
OnJlYWRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnJldHJpZXZlRnJv
bU1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmV0cmll
dmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpkZWNv
ZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRj
aENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGlyZWN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRh
VGFzazpkaWRCZWNvbWVEb3dubG9hZFRhc2s6XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtT
ZXNzaW9uQ29jb2E6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OmNyZWF0ZVdlYlNvY2tldFRhc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L1dlYlNvY2tldFRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya1Byb2Nlc3NDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRv
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXlt
ZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXApOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNvdXA6OmNyZWF0ZVdlYlNvY2tldFRhc2spOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcDoK
KyAgICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50Lmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6TmV0d29ya1JUQ1Byb3ZpZGVyKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRp
c3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjp1bndyYXBGb3JUZXN0
aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlQXN5bmMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdl
U2VuZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5t
bToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OkNvbm5lY3Rp
b25UZXJtaW5hdGlvbldhdGNoZG9nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Blbik6
CisgICAgICAgIChJUEM6OmNyZWF0ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpw
cm9jZXNzTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNz
YWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9Nb2R1bGUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4
dC5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9y
dCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVy
bmFsSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0
OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKiBQbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwpOgorICAgICAgICAqIFNoYXJlZC9BUEkv
QVBJVVJMLmg6CisgICAgICAgIChBUEk6OlVSTDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6VVJM
OjpwYXJzZVVSTElmTmVjZXNzYXJ5IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29h
L1JlbW90ZU9iamVjdEludm9jYXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU9iamVj
dEludm9jYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X2luaXRXaXRoV2ViUGFnZTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X2luaXRXaXRoV2ViUGFnZVByb3h5Ol0pOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdp
c3RyeSBfc2VuZEludm9jYXRpb246aW50ZXJmYWNlOl0pOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Z2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAod2Via2l0Q29udGV4dE1l
bnVJdGVtQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcpOgor
ICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24pOgorICAg
ICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbik6Cisg
ICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uX3dp
dGhfbGFiZWwpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1
Ym1lbnUpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3Ip
OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
OgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybVNob3dQYXltZW50VUkpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4
dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGV4bWFwTGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RMYXll
cik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29t
cG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9O
UE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QUmVt
b3RlT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSZW1vdGVPYmplY3RNYXA6OnJl
Z2lzdGVyTlBPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OnRyeUxvYWQpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9j
YWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRt
YXBEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUZpbmRNYXRjaGVzQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpI
VFRQQ29va2llU3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSGlzdG9yeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkRh
dGFiYXNlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0Ns
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSVBvbGljeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4
dFNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLTm90aWZp
Y2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6CisgICAg
ICAgIChXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQpOgorICAgICAgICAoV0tQ
YWdlU2V0UGFnZUZpbmRDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVz
Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBvbGljeUNs
aWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAoV0tQYWdl
U2V0UGFnZVN0YXRlQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFn
ZVByaXZhdGVNYWMubW06CisgICAgICAgICgtW1dLT2JzZXJ2YWJsZVBhZ2VTdGF0ZSBpbml0V2l0
aFBhZ2U6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwOgorICAg
ICAgICAoV0tWaWV3U2V0Vmlld0NsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciBfaW5pdFdpdGhQYWdlUmVmOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW06CisgICAgICAgICgtW1dLSFRUUENvb2tp
ZVN0b3JlIGFkZE9ic2VydmVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0RG93bmxvYWREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0QXV0b21hdGlvbkRlbGVnYXRl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOm5hbWU6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9h
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
c2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vz
c2lvbiBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlYWR5U1FMaXRlU3Rh
dGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoK
KyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAg
IChhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHA6CisgICAgICAgIChh
dHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHA6CisgICAgICAgIChhdHRh
Y2hEb3dubG9hZENsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRGYXZpY29uRGF0YWJh
c2VPcGVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAod2Via2l0RmluZENvbnRyb2xsZXJDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwOgorICAgICAgICAo
YXR0YWNoRm9ybUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRHZW9sb2NhdGlvbk1h
bmFnZXJDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9h
ZGluZ0NsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hJY29uTG9hZGluZ0NsaWVudFRvVmlldyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50
LmNwcDoKKyAgICAgICAgKGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGll
bnQuY3BwOgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAod2Vi
a2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIp
OgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9t
ZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRFbW9qaUNob29zZXIuY3BwOgorICAgICAgICAod2Via2l0RW1vamlDaG9vc2VyU2V0dXBFbW9q
aVNlY3Rpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJJbnNwZWN0
b3JDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAgICAgICAo
d2Via2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgICh3ZWJraXRXZWJW
aWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcik6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURp
ZFJlbGF1bmNoV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdKToK
KyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlv
bjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAgICAgICAgKFdLV1BFOjpWaWV3OjpWaWV3KToKKyAg
ICAgICAgKFdLV1BFOjpWaWV3OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
d3BlL3F0L1dQRVF0Vmlldy5jcHA6CisgICAgICAgIChXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFu
Z2VkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJh
Y2spOgorICAgICAgICAoV1BFUXRWaWV3OjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdQRVF0Vmll
d0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVU
cmFja2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0
b21hdGlvblNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpJ
Y29uTG9hZGluZ0RlbGVnYXRlOjpjcmVhdGVJY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdh
dGU6OmNyZWF0ZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0
ZTo6Y3JlYXRlVUlDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0
cmFpbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0RGlzcGxheUxpbmspOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNw
ZW5kZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6c2V0VGV4dEluZGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjplbnN1cmVHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6aW5j
b3Jwb3JhdGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljczo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgICog
VUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmdldERhdGFGcm9tRGVjb2RlciBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmljZUlkSGFz
aFNhbHRGb3JPcmlnaW5DYWxsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVh
dGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxDb25uZWN0ZWRHYW1l
cGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVw
YWRDb25uZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGlj
c1VzYWdlU2FtcGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVh
dGVEb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
dGFrZVVwbG9hZEFzc2VydGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsdWdp
blJlcXVpcmVzR3RrMik6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0VG9Qcm9jZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJ
bmRpY2F0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFr
ZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlTm9kZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRl
V2l0aFBsYWluTGF5ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRy
ZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViS2l0OjpIaWRTZXJ2aWNl
OjpkZXZpY2VBZGRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpzZXRGb2N1c2VkTWVkaWFFbGVt
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6bV9yZXNldFJl
Y2VudENyYXNoQ291bnRUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
Rm9ybUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRGaW5kTWF0Y2hlc0NsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREcmF3aW5nQXJlYSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0Nh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQ
b3NzaWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1h
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFz
VXBsb2Fkcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNz
SXNQbGF5aW5nQXVkaWJsZU1lZGlhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6CisgICAg
ICAgICogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2F5bGFu
ZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJv
bGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9JbnB1
dFZpZXdVcGRhdGVEZWZlcnJlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS0FwcGxpY2F0aW9uU3RhdGVU
cmFja2luZ1ZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjp3ZWJWaWV3
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVEcmF3aW5nQXJlYVByb3h5Ol0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQ
cmV2aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBpbml0V2l0aFdpbmRvdzp3ZWJWaWV3OnBhZ2U6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW06CisgICAgICAg
ICgtW1dLVGV4dEZpbmRlckNsaWVudCBpbml0V2l0aFBhZ2U6dmlldzp1c2VQbGF0Zm9ybUZpbmRV
STpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBs
YXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURp
cmVjdDJELmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5k
KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OldlYlZpZXcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdh
bWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29u
bmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlU2V0Q2xpZW50KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAg
IChXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0
Rm9ybUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToK
KyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChX
S0J1bmRsZVBhZ2VTZXRVSUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZU92ZXJsYXlDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUJh
bm5lckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwOgorICAg
ICAgICAod2Via2l0V2ViRWRpdG9yQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJFeHRlbnNpb25DcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRGcmFtZUdldE9y
Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlBhZ2VDcmVhdGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAg
ICAgKC1bV0tET01UZXh0SXRlcmF0b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6
XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRDbGllbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdNZXNzYWdlOjpQZW5kaW5nTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OnNlbmQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2Nr
ZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVVZHBT
b2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVD
bGllbnRUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5
OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRD
U29ja2V0RmFjdG9yeTo6Y3JlYXRlQXN5bmNSZXNvbHZlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Q
cm90ZWN0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzY2hlZHVsZVRp
bWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVs
aXZlckRhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5YMTEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjpjcmVhdGVXZWJFdmVudCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6c2hvd1Bh
aW50UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjphZGRPdmVycmlkZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRGaWx0ZXJzKToKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZVRpbGVkQmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FM
YXllclJlbW90ZVRpbGVkQmFja2luZzo6UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5n
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdGV4dEF1dG9TaXppbmdBZGp1c3RtZW50VGlt
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRN
ZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dEluamVjdGVkQnVuZGxlVUlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luUHJpbnRpbmcpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OkZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjptYXJrQWxsTGF5
ZXJzVm9sYXRpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVBdXRvbWF0
aW9uU2Vzc2lvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bGliV2ViUlRD
TmV0d29yayk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmFkZFN1cHBsZW1lbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpTb3Vy
Y2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZSk6CisKIDIwMTkt
MDgtMTMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVz
b3VyY2UgTG9hZCBTdGF0aXN0aWNzOiBTd2l0Y2ggTlNVUkxTZXNzaW9uIG9uIHRvcCBuYXZpZ2F0
aW9uIHRvIHByZXZhbGVudCByZXNvdXJjZSB3aXRoIHVzZXIgaW50ZXJhY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKaW5kZXggNGM1MWU5NjVmNjgyNmJlYzNlZTkyZTc1Mjk1ODdlMWIxYjJkMDQzYS4u
NGY5ZmZiZTBlZjk4NzIxYjAyNzM2ZTA2Y2NkNzU0Njc3NGM5MThhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBl
bnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyOjpTdG9yYWdlU3luY01hbmFnZXIpOgor
ICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlVGhyZWFkOjpkaXNwYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFk
Ojp0ZXJtaW5hdGUpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHA6CisgICAgICAgIChO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbik6CisgICAgICAg
IChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgor
ICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKToKKwogMjAx
OS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9j
Zi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZwppbmRleCBjNjNl
ZmFiYTVkODg2ODNiZWZiZjE2OTU4ZmYxZmUwMDA0ZWE5YzZiLi4xOTY5NGJkMTExMTZhNjBmYzEz
YjAzMWM0ODc2ZGVhZWMyYzhkN2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2Nm
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBm
YXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZyb250ZW5kU2V0dGluZ3MpOgorCiAyMDE5LTA4
LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSRUdSRVNTSU9OKHIyNDg0NTQpOiBXSzEgaW5zcGVjdG9yIGZyb250ZW5kIGNsaWVu
dCBkb2Vzbid0IHF1ZXVlIG1lc3NhZ2VzIHRvIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQncyBsb2Fk
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA4NWJmZTdmZTdhYTRjM2Y3ZmNiYjJk
NzI4ZGI1ZGVhN2FkYWJhOGZmLi5iYjU0MGMxZTVhZTJhODdjNjA3MTRmYjliYzUyMjZjOWVlODA0
NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTkt
MDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RG
XSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZpeGVkUG9zaXRpb25Db250ZW50Lm1tOgorICAgICAgICAoLVtXZWJGaXhlZFBvc2l0aW9uQ29u
dGVudCBzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzOnN0aWNreUNvbnRhaW5lck1hcDpdKToK
KwogMjAxOS0wNy0yOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb250ZW50Q2hhbmdlT2JzZXJ2ZXJdIGRpZEZpbmlzaENvbnRlbnRDaGFuZ2VPYnNlcnZpbmcg
c2hvdWxkIGluY2x1ZGUgdGhlIHR5cGUgb2YgY29udGVudCBjaGFuZ2UuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKaW5kZXggMGM0NGMyYzBkYzQ2YjU3N2ZhODFlNzVkYjg0MThhMDE0ZmQxMGU1
ZC4uMWFjZGMzNjA1MDNjYzhkZmI4ODA5NWU4MDIwNTk3ZWQ1ZGM5Y2NkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8
VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06Cisg
ICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGluaXRdKToKKyAgICAgICAgKiBIaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rp
b25hcnlSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAgKFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RS
ZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhblJlcGx5KToKKyAgICAgICAgKFdLUENCb29sZWFu
QW5kRGF0YVJlcGx5KToKKyAgICAgICAgKFdLUENJbnN0YW50aWF0ZVBsdWdpblJlcGx5KToKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaDoKKyAg
ICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0
OjpQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5z
dGFuY2U6OmZpZWxkTmFtZWQpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5l
dHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5W
aWV3IGNyZWF0ZVBsdWdpbl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXIubW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
Q29jb2EuaDoKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IHNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6
cmVwZWF0OnRpbWVyRnVuYzpdKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdl
ckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWlu
VGhyZWFkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tOgorICAgICAgICAoYWRkUmVkaXJlY3RVUkwpOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkxv
Y2FsRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jay5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJG
cmFtZSBfYXR0YWNoU2NyaXB0RGVidWdnZXJdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIubW06CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tOgorICAgICAg
ICAoLVtXZWJUZXh0SXRlcmF0b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2luamVjdE91dGxvb2tRdWlya3NTY3Jp
cHRdKToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVO
YW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3Jv
dXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5q
ZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9H
cm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6
XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyXSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6d2l0aExpZmV0aW1lOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgIChXZWJWaWV3TGF5ZXJGbHVz
aFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIpOgorICAgICAgICAoLVtXZWJW
aWV3UHJpdmF0ZSBpbml0XSk6CisKIDIwMTktMDgtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIEJsb2IgcmVnaXN0cmllcyBzaG91bGQgYmUga2V5ZWQgYnkg
c2Vzc2lvbiBJRHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBhYjkzNWUwYmIzNDI5
OTU1YTU1ODAxOWFkN2Y2NDhjNzk5MDc3YjAxLi5kYzZjZDRlYWYyOTQ5ZTc5YjQyYzQ2ZDE0OGI4
NDM5MGU2MzQwMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcg
QEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxs
b2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik6CisgICAgICAgICogRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luTWVzc2FnZVRo
cm90dGxlcldpbi5oOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpsb2Fk
KToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luVmlldzo6d25kUHJvYyk6CisgICAgICAgICogV2ViQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGEuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNsaWVudCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJE
ZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudCk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJh
bWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpoaWdobGlnaHQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAg
ICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKToKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRl
bS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5k
ZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6Y3JlYXRlRDNEUG9zdFBy
b2Nlc3NpbmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NB
RDNEUmVuZGVyZXIuaDoKKyAgICAgICAgKiBXZWJOb2RlSGlnaGxpZ2h0Lmg6CisgICAgICAgICog
V2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNlbnRl
cjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKToKKyAgICAgICAgKiBXZWJOb3RpZmljYXRpb25DZW50
ZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZU1v
dXNlRXZlbnQpOgorICAgICAgICAoV2ViVmlldzo6cmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJWaWV3OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVu
dCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChX
ZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6c2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZyk6CisKIDIwMTktMDgtMTMgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEJsb2IgcmVnaXN0cmllcyBzaG91bGQgYmUga2V5
ZWQgYnkgc2Vzc2lvbiBJRHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBi
L1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCAzZjBmYjJlMWNlZWFlZjA2NTljMzRjODI3
MWJlZWMxMDgyMzc1NmVkLi42ZTAxZGFiY2Y4MDA3MDk5MzcwMWI4NjFkM2RkMzg4ZTA2ZDE2ODc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxs
b2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwg
d2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcC5oOgorICAgICAgICAq
IGJtYWxsb2MvSXNvSGVhcElubGluZXMuaDoKKwogMjAxOS0wNy0yNCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBBZGQgSXNvSGVhcCB0ZXN0
IHRvIGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0aW5nIHRvbyBsYXJn
ZSBWQQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRl
eCAwN2Q3MDliYTEyYzgyYzg1NDgyZDczYzcyMzc3ZjUxOWU3ZmMyYTVjLi5kMGU2MjUyODJhODRm
NGYzNWVlZGVkMTk1ZWRiOGRjODk3YjFhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgSlNDYWxsYmFj
a09iamVjdERhdGEgewogICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKCFtX3ByaXZhdGVQcm9wZXJ0aWVzKQotICAgICAgICAgICAgbV9w
cml2YXRlUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+
KCk7CisgICAgICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxKU1ByaXZh
dGVQcm9wZXJ0eU1hcD4oKTsKICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcy0+c2V0UHJpdmF0
ZVByb3BlcnR5KHZtLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaAppbmRleCBhZTNhNmZlM2FjZjljNmE4MDM5NGUxZDczNGZhMzE3ZDkwOGZhZTJjLi45
Y2EzYjRiZjQwODUwNzUwYjhiYzQxOTQ5Zjc1MDQyYjM1NzIzMWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAt
NTgsNyArNTgsNyBAQCBpbmxpbmUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OmFzQ2FsbGJhY2tPYmplY3QoRW5jbwogdGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIHZvaWQq
IGRhdGEpCiAgICAgOiBQYXJlbnQoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQotICAgICwgbV9jYWxs
YmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0
YSwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtlVW5pcXVlPEpTQ2Fs
bGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0NsYXNzKSkKIHsKIH0KIApAQCAtNjcsNyArNjcsNyBA
QCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChWTSYgdm0sIEpTQ2xhc3NSZWYg
anNDbGFzcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBQYXJlbnQodm0sIHN0cnVjdHVy
ZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxsYmFj
a09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVjdERh
dGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4obnVsbHB0ciwganNDbGFzcykpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCmluZGV4IGYxYzlk
NTcwMmE4YWE2OTA0NGRmYjI5NWI0NzFmY2ZjYmM4OTBiNmIuLjdlZWMyYTkwYTQ0Zjg2MGJhYTIy
NzZiOTZkNDVmMmJkNjg2MTcwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNz
UmVmLmNwcApAQCAtNTksMjEgKzU5LDIxIEBAIE9wYXF1ZUpTQ2xhc3M6Ok9wYXF1ZUpTQ2xhc3Mo
Y29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpTQ2xhc3MqCiAgICAg
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljVmFsdWUqIHN0
YXRpY1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGljVmFsdWVzKSB7Ci0gICAgICAgIG1fc3RhdGlj
VmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+
KCk7CisgICAgICAgIG1fc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3Rh
dGljVmFsdWVzVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNWYWx1ZS0+bmFtZSkgewog
ICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljVmFs
dWUtPm5hbWUpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZU5hbWUuaXNOdWxsKCkpCi0gICAgICAg
ICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3RhdGlj
VmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7
CisgICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBt
YWtlVW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3Rh
dGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1l
KSk7CiAgICAgICAgICAgICArK3N0YXRpY1ZhbHVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9uID0gZGVmaW5pdGlvbi0+
c3RhdGljRnVuY3Rpb25zKSB7Ci0gICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CisgICAgICAgIG1f
c3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25z
VGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNGdW5jdGlvbi0+bmFtZSkgewogICAgICAg
ICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljRnVuY3Rp
b24tPm5hbWUpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5jYWxs
QXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKKyAgICAgICAgICAgICAg
ICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8
U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0aW9uLCBzdGF0
aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOwogICAgICAgICAgICAgKytzdGF0aWNGdW5jdGlvbjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTEyOCwyMSArMTI4LDIxIEBAIE9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6Vk0mLCBPcGFxdWVKU0NsYXNz
KiBqc0NsCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xhc3MtPm1fc3Rh
dGljVmFsdWVzKSB7Ci0gICAgICAgIHN0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3Bh
cXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBzdGF0aWNWYWx1ZXMgPSBt
YWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKICAgICAgICAgT3Bh
cXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBqc0NsYXNz
LT5tX3N0YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFzc1N0YXRp
Y1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3RhdGljVmFsdWVz
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPmtl
eS0+aXNBdG9tKCkpOwogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IGl0LT5rZXktPmlz
b2xhdGVkQ29weSgpOwotICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVOYW1lLmlt
cGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFBy
b3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZh
bHVlTmFtZSkpOworICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVOYW1lLmltcGwo
KSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFByb3BlcnR5LCBp
dC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkp
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGljRnVuY3Rpb25z
KSB7Ci0gICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlND
bGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBt
YWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKICAgICAgICAg
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBq
c0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlND
bGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1f
c3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAg
IEFTU0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwotICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25z
LT5hZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljRnVu
Y3Rpb25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1
dGVzKSk7CisgICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChpdC0+a2V5LT5pc29sYXRl
ZENvcHkoKSwgbWFrZVVuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihpdC0+dmFsdWUtPmNhbGxB
c0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTE1MSw3ICsxNTEsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIE9wYXF1ZUpTQ2xh
c3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPm9wYXF1ZUpTQ2xhc3NEYXRhKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICBjb250ZXh0RGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPihleGVjLT52bSgpLCB0
aGlzKTsKKyAgICAgICAgY29udGV4dERhdGEgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CiAgICAgcmV0dXJuICpjb250ZXh0RGF0YTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJh
aW50UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0
cmFpbnRQcml2YXRlLmNwcAppbmRleCBkOWVlNjc0MDM0OWNmZWZkZmJjYzBkMzEwOTRmMWY0ZGU1
YTUyYzFlLi5iYTRhNWExNjY5N2FmNWY4YTk3MjJlNTc0NjllMzk0ZDk3OTA0MmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQ
cml2YXRlLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEpTQ29udGV4dEdyb3VwQWRkTWFya2lu
Z0NvbnN0cmFpbnQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTTWFya2luZ0NvbnN0cgogICAg
IC8vIGVsc2UgZ2V0cyBtYXJrZWQuCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0
eSA9IENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmc7CiAgICAgCi0gICAgYXV0
byBjb25zdHJhaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4o
CisgICAgYXV0byBjb25zdHJhaW50ID0gbWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWlu
dD4oCiAgICAgICAgIHRvQ1N0cmluZygiQW1jIiwgY29uc3RyYWludEluZGV4LCAiKCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2spKSwgIikiKSwKICAg
ICAgICAgdG9DU3RyaW5nKCJBUEkgTWFya2luZyBDb25zdHJhaW50ICMiLCBjb25zdHJhaW50SW5k
ZXgsICIgKCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJh
Y2spKSwgIiwgIiwgUmF3UG9pbnRlcih1c2VyRGF0YSksICIpIiksCiAgICAgICAgIFtjb25zdHJh
aW50Q2FsbGJhY2ssIHVzZXJEYXRhXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQppbmRleCBkNDY5Yjc1YTMxZjBlZmNhOWQwN2FiYjAzYjBiZTY2MTYxYjM5NTY3Li40
YjU5OTA3M2ZlNzZiNDg2NDQzNjk5YWJkY2IzNGM0MTY0YmMyZTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZiljb250
ZXh0CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMgPSBOU1BvaW50
ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxp
dHk7CiAgICAgbV9jYWNoZWRPYmpDV3JhcHBlcnMgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRX
aXRoS2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNp
dHk6MF07CiAKLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6
V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNv
bnRleHQpLT52bSgpKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEpTQzo6
V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNv
bnRleHQpLT52bSgpKTsKIAogICAgIEFTU0VSVCghdG9KU0dsb2JhbE9iamVjdChjb250ZXh0KS0+
d3JhcHBlck1hcCgpKTsKICAgICB0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5zZXRXcmFwcGVy
TWFwKHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2Fs
bGJhY2tGdW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW0KaW5kZXggZWU5MzI4MjFlZjc0YmQ2ODkxYWU4ZjI5ZmFkN2JiYTVhZmVhMGNi
Yy4uNzNjYjQyNzA0MzgxODMxZTgxOWQ5ZDk0M2ViOWU1NDQwMzA5NmY4YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC0xOTUs
MTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlRG91YmxlKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRE
b3VibGU8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRE
b3VibGU8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJv
b2xlYW4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRCb29s
ZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lkKCkKQEAgLTIx
Nyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudElk
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SWQ+KCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3QgY2hhciogYmVn
aW4sIGNvbnN0IGNoYXIqIGVuZCkKQEAgLTIyOCwxOSArMjI4LDE5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmIChjbHMgPT0gW0pTVmFsdWUgY2xh
c3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVu
dEpTVmFsdWU+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3Vt
ZW50SlNWYWx1ZT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNTdHJpbmcgY2xhc3NdKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TU3RyaW5n
PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TU3Ry
aW5nPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU051bWJlciBjbGFzc10pCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7
CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGF0ZSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKICAgICAgICAgaWYg
KGNscyA9PSBbTlNBcnJheSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0FycmF5PigpOwogICAgICAgICBpZiAoY2xzID09IFtO
U0RpY3Rpb25hcnkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CiAKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMpOwogICAgIH0K
IAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciopCkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgU3RyaW5nUmFu
Z2UgY29weShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlv
biA9IHZhbHVlVG9UeXBlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4o
aW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH07CkBA
IC0zMzUsNDUgKzMzNSw0NSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRO
dW1lcmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51
bWVyaWM8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRCb29s
ZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdEJvb2xlYW4+
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lkPigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUg
dHlwZU9mQ2xhc3MoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVz
dWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlU3RydWN0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBl
bmQpCiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5KGJlZ2luLCBlbmQpOwogICAgICAg
ICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdHlwZVRvVmFsdWVJbnZvY2F0aW9uRm9y
KGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1
bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsbGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiB9OwpAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRpYyBKU09iamVj
dFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24oSlNDb250ZXh0ICpjb250ZXh0
LCBOU0ludm9jCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAgIGF1dG8gaW1wbCA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5cGUsIGluc3Rh
bmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBhdXRv
IGltcGwgPSBtYWtlVW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihpbnZvY2F0
aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUocmVz
dWx0KSk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gaW1wbC0+bmFtZSgpOwogICAgIHJldHVy
biB0b1JlZihKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgbmFtZSwgV1RGTW92ZShpbXBsKSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGUwMWU5NzBjN2Y1ODAz
NjU2MThlZjFkYWI4NTU0NGQ3MDRmOWI0N2EuLjc4ZDc2NTVmZjgwNzc2MGQ0NjA4YTYxN2U1N2M5
MGYxNTQyNzk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29u
dGV4dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBqc2NDb250ZXh0U2V0Vmly
dHVhbE1hY2hpbmUoSlNDQ29udGV4dCogY29udGV4dCwgR1JlZlB0cjxKU0NWaXJ0dWFsTQogICAg
ICAgICAgICAgcHJpdi0+anNDb250ZXh0ID0gSlNSZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVm
PihBZG9wdCwgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqc2NWaXJ0dWFsTWFjaGluZUdl
dENvbnRleHRHcm91cChwcml2LT52bS5nZXQoKSksIG51bGxwdHIpKTsKICAgICAgICAgYXV0byog
Z2xvYmFsT2JqZWN0ID0gdG9KU0dsb2JhbE9iamVjdChwcml2LT5qc0NvbnRleHQuZ2V0KCkpOwog
ICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+d3JhcHBlck1hcCgpKQotICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5zZXRXcmFwcGVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXcmFwcGVyTWFw
Pihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0
V3JhcHBlck1hcChtYWtlVW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anNDb250ZXh0Lmdl
dCgpKSk7CiAgICAgICAgIGpzY1ZpcnR1YWxNYWNoaW5lQWRkQ29udGV4dChwcml2LT52bS5nZXQo
KSwgY29udGV4dCk7CiAgICAgfSBlbHNlIGlmIChwcml2LT52bSkgewogICAgICAgICBBU1NFUlQo
cHJpdi0+anNDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NXcmFwcGVyTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NXcmFwcGVyTWFwLmNwcAppbmRleCAxMWJiN2MwYjg3MzdkYjY3ZGQxN2RjZDI0ZjcwMjk0MzQ0
NjlhODAzLi5mNTIzZWE0MTk5ZjhhYmQ3MzJmNzdiNjI4MTQxMjAxMzRiYjhiZWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwCkBAIC0z
Myw3ICszMyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogV3JhcHBlck1hcDo6V3JhcHBlck1hcChK
U0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0KQotICAgIDogbV9jYWNoZWRKU1dyYXBwZXJzKHN0
ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0
b0pTKGpzQ29udGV4dCktPnZtKCkpKQorICAgIDogbV9jYWNoZWRKU1dyYXBwZXJzKG1ha2VVbmlx
dWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGpzQ29udGV4
dCktPnZtKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Q
cm9iZVN0YWNrLmNwcAppbmRleCBhNzVmNThkYzE0NmIzYjY0OTVjZWIxNjdhZGY0ZGFiZmYwNmIw
Yzg5Li5kYTQ3NzA1MWYzNDVlMDcxNjhmYzdkMDZlMGM3ZjUyNjMxMTg2ZTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKQEAgLTEzNCw3ICsx
MzQsNyBAQCBQYWdlKiBTdGFjazo6ZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNzKQogICAgIGlm
IChMSUtFTFkoaXQgIT0gbV9wYWdlcy5lbmQoKSkpCiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFn
ZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNzKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KGJhc2VBZGRy
ZXNzKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2VzLmFkZChiYXNlQWRkcmVzcywgV1RG
TW92ZShwYWdlKSk7CiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcAppbmRleCAyYzljM2IwZGU4OWViM2UzODNmNGNiZGNmMjEyZDI2OGMxYzE5ZGJhLi43
ZjY4NTg2YzFjMDI4OWMwYTMyNTIyZmRlOWUwNjdkZjFmNDFlMjEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTI0MSw3ICsxMjQxLDcgQEAgY2xhc3Mg
TG93ZXJUb0FpciB7CiAgICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9IFByaW50ZXI6Om1h
a2VQcmludFJlY29yZExpc3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0byBwcmludFNwZWNp
YWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0
ZDo6bWFrZV91bmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKKyAgICAgICAg
YXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29k
ZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsK
ICAgICAgICAgSW5zdCBpbnN0KEFpcjo6UGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50
U3BlY2lhbCkpOwogICAgICAgICBQcmludGVyOjphcHBlbmRBaXJBcmdzKGluc3QsIHN0ZDo6Zm9y
d2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBhcHBlbmQoV1RGTW92ZShp
bnN0KSk7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsKICAgICB7CiAg
ICAgICAgIGlmICghZmllbGQpIHsKICAgICAgICAgICAgIGZpZWxkID0gc3RhdGljX2Nhc3Q8VCo+
KAotICAgICAgICAgICAgICAgIG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8VD4o
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpKTsKKyAgICAgICAgICAgICAg
ICBtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+
KGFyZ3VtZW50cykuLi4pKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4IGZmY2IyZDRl
MjcxNDQyOTcwZTU0NjQzNjY3MGY3ZjI5ZGViMWFiMWMuLjJlY2NkYWMwNDllNjhkMTEzZTIzZjk3
ZjI0MzUzYTVkNGFhYTNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIFBy
b2NlZHVyZTo6UHJvY2VkdXJlKCkKICAgICA6IG1fY2ZnKG5ldyBDRkcoKnRoaXMpKQogICAgICwg
bV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKLSAgICAsIG1fYnlwcm9kdWN0cyhzdGQ6Om1ha2Vf
dW5pcXVlPE9wYXF1ZUJ5cHJvZHVjdHM+KCkpCisgICAgLCBtX2J5cHJvZHVjdHMobWFrZVVuaXF1
ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQogICAgICwgbV9jb2RlKG5ldyBBaXI6OkNvZGUoKnRoaXMp
KQogewogICAgIG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobV9udW1FbnRyeXBvaW50cyk7CkBA
IC0zMTEsMjggKzMxMSwyOCBAQCB2b2lkIFByb2NlZHVyZTo6ZGVsZXRlT3JwaGFucygpCiBEb21p
bmF0b3JzJiBQcm9jZWR1cmU6OmRvbWluYXRvcnMoKQogewogICAgIGlmICghbV9kb21pbmF0b3Jz
KQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWluYXRvcnM+KCp0
aGlzKTsKKyAgICAgICAgbV9kb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxEb21pbmF0b3JzPigqdGhp
cyk7CiAgICAgcmV0dXJuICptX2RvbWluYXRvcnM7CiB9CiAKIE5hdHVyYWxMb29wcyYgUHJvY2Vk
dXJlOjpuYXR1cmFsTG9vcHMoKQogewogICAgIGlmICghbV9uYXR1cmFsTG9vcHMpCi0gICAgICAg
IG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsK
KyAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJkc0NGRyYgUHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcoKQogewogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCi0gICAgICAg
IG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsK
KyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKIEJhY2t3YXJkc0RvbWluYXRvcnMm
IFByb2NlZHVyZTo6YmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJk
c0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3YXJkc0Rv
bWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICBy
ZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIHZv
aWQqIFByb2NlZHVyZTo6YWRkRGF0YVNlY3Rpb24oc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFz
aXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVNl
Y3Rpb24+IGRhdGFTZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhU2VjdGlvbj4oc2l6ZSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IG1ha2VVbmlx
dWU8RGF0YVNlY3Rpb24+KHNpemUpOwogICAgIHZvaWQqIHJlc3VsdCA9IGRhdGFTZWN0aW9uLT5k
YXRhKCk7CiAgICAgbV9ieXByb2R1Y3RzLT5hZGQoV1RGTW92ZShkYXRhU2VjdGlvbikpOwogICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApp
bmRleCAzM2Y4YWJmZWZiYzFmOGY5MTY1NDVhM2JkY2ExOTZiMGNjNjZjMzk4Li5kNWQ2OWMzMGE1
OTkxNzVmMjgxNDgzNjI4NjM2ZmNiNzcwNjgwMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBDQ2FsbFNwZWNpYWwqIENvZGU6
OmNDYWxsU3BlY2lhbCgpCiB7CiAgICAgaWYgKCFtX2NDYWxsU3BlY2lhbCkgewogICAgICAgICBt
X2NDYWxsU3BlY2lhbCA9IHN0YXRpY19jYXN0PENDYWxsU3BlY2lhbCo+KAotICAgICAgICAgICAg
YWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOworICAgICAgICAg
ICAgYWRkU3BlY2lhbChtYWtlVW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwogICAgIH0KIAogICAg
IHJldHVybiBtX2NDYWxsU3BlY2lhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJHZW5lcmF0ZS5jcHAKaW5kZXggZjM2YjliMmZlNjY4MTYwYjg4OTliMGM1MGIzMTk3ZDc1ODgy
NGY4MC4uOTVjYWEwMDRkOGViMzkyMzMwZTFjY2JiNjM5YTVjZWU3OWNiYzc5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKQEAgLTEwMCw3ICsxMDAs
NyBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgICAgICAgICBk
YXRhTG9nKGNvZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxs
b2NhdGVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM+KGNvZGUpOworICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
cyA9IG1ha2VVbmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4oY29kZSk7CiAgICAg
ICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzLT5wcmVwYXJlRm9yR2VuZXJh
dGlvbigpOwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rl
c3RhaXIuY3BwCmluZGV4IGVmMTU0NGMwN2JiMzJhOTAzN2YyY2I3MWUxNWU3NGE5YmU2MWJmOTQu
LjNkY2EyOTY3ODhiMDAxMDY4ZTAxZjQyM2UxMTZjN2MyYTRlN2RhNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBjb21waWxlKEIzOjpQcm9jZWR1cmUmIHByb2MpCiAgICAg
Z2VuZXJhdGUocHJvYy5jb2RlKCksIGppdCk7CiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGpp
dCwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRp
b24+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgIEZJ
TkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRlc3RhaXIgY29t
cGlsYXRpb24iKSwgcHJvYy5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIH0KIApAQCAtMTg1NSw3ICsx
ODU1LDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNhY2hlZFRlbXBSZWdpc3RlcnMoKQogICAgIHJv
b3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCBBcmc6OmJpZ0ltbShiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KCZ0aGluZ3MpKSwgYmFzZSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogcGF0Y2hQb2ludDFS
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRT
cGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRT
cGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNv
ZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAg
ICAvLyBJbiBQYXRjaHBvaW50LCBMb2FkIHRoaW5nc1swXSAtPiB0bXAuIFRoaXMgd2lsbCBtYXRl
cmlhbGl6ZSB0aGUgYWRkcmVzcyBpbiB4MTcgKGRhdGFNZW1vcnlSZWdpc3RlcikuCiAgICAgQjM6
OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDEgPSBwYXRjaFBvaW50MVJvb3QtPmFwcGVuZE5l
dzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAg
LTE5MzAsNyArMTkzMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkKCkKICAgICBHUFJS
ZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIo
cGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29k
ZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsK
KyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lh
bChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBCMzo6QmFzaWNC
bG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHZvaWQgdGVz
dEFyZ3VtZW50UmVnUGlubmVkMigpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpT
cGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5p
cXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0
Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2lu
dFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBl
bmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7
CkBAIC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDMoKQogICAg
IEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdp
c3RlcihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwg
PSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRT
cGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpC
YXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+
KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5o
CmluZGV4IDE1NWNhNGFiNDcwYjAxNDQyYWQ5NTQzYThhZTFmYzFmYzU5ZjdlM2EuLjFjN2FkMGY5
NGUwNmI4YzMxYmZlN2NjOTRkMDU1MmM0Nzc5NjA3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmgKQEAgLTE4OSw3ICsxODksNyBAQCBleHRlcm4gTG9jayBjcmFzaExvY2s7CiBpbmxpbmUg
c3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjb21waWxlUHJvYyhQcm9jZWR1cmUmIHByb2Nl
ZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwgPSBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpKQog
ewogICAgIHByb2NlZHVyZS5zZXRPcHRMZXZlbChvcHRMZXZlbCk7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1cmUpKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGMxMDg1OWFjZWQz
ZGI3OGI2NjQ5NzZhMDhiOGU1YjQ4ZDY1MmIyZjMuLjc3ZmI2NWRhMGI3YTA2YzdkNjU4YmFiZGI0
ZTUxMDhhNzkxN2VlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc3RhdGUuc2V0
U3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKHNwaWxsU3RhdGUpOwogCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVCghYWNjZXNzLmNhbGxMaW5rSW5mbygpKTsKLSAgICAgICAgICAgIGFjY2Vz
cy5tX2NhbGxMaW5rSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtJbmZvPigpOworICAg
ICAgICAgICAgYWNjZXNzLm1fY2FsbExpbmtJbmZvID0gbWFrZVVuaXF1ZTxDYWxsTGlua0luZm8+
KCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZW5lcmF0ZWQgYSBwb2x5bW9ycGhp
YyBjYWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0byB0aGUgZ2V0dGVyCiAgICAgICAgICAgICAv
LyBzdHViLCB3aGljaCB0aGVuIGp1bXBlZCBiYWNrIHRvIHRoZSBtYWluIGNvZGUsIHRoZW4gd2Un
ZCBoYXZlIGEgcmVhY2hhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAppbmRleCAyYmQ5ZmU2NTE5
OWQwN2YxNzNlMzgzMGRjNzRlNDY3ZWI5ZDU0MWZjLi45MjU3ZmMyMjY2NTI5Zjg2MTM3ZDVkYWQ4
YzkyNDk3MTgzOTA0NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVibGljIEFjY2Vz
c0Nhc2VTbmlwcGV0UGFyYW1zOjpTbG93UAogICAgIHZvaWQgQWNjZXNzQ2FzZVNuaXBwZXRQYXJh
bXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2Fs
bEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0
LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgdG8gPSBqaXQubGFiZWwoKTsgXAotICAgICAgICBtX2dlbmVyYXRvcnMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50
czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZB
X0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBcCisgICAgICAg
IG1fZ2VuZXJhdG9ycy5hcHBlbmQobWFrZVVuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRo
QXJndW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5
cGUsIF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwK
ICAgICB9IFwKIAogU05JUFBFVF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJB
VElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCmluZGV4IDMzYmIwYzA2NjM1MzgxZTg5OGY2NWE4NzRmMWYzNmE4Yzk0
ODIzYWYuLjEwYzY1YmI5ZGQ3MDlhOWFmN2FiYTZjZWI4YTliNzM1OTc3MTY0MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC02NSwxNSArNjUsMTUgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgIC8vIENy
ZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJl
c2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKIAotICAgIGF1dG8gZW50cnkg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjpFbnRyeUJsb2NrKTsKLSAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKKyAgICBh
dXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNC
bG9jazo6RW50cnlCbG9jayk7CisgICAgYXV0byBmaXJzdEJsb2NrID0gbWFrZVVuaXF1ZTxCeXRl
Y29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7CiAgICAgbGlu
a0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKICAgICBhcHBlbmRCbG9j
ayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmly
c3RCbG9jay5nZXQoKTsKICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsKIAot
ICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRl
Y29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CisgICAgYXV0byBleGl0ID0gbWFrZVVuaXF1ZTxC
eXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIAogICAg
IGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIApAQCAtODQsNyArODQsNyBA
QCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFs
c2U7CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEganVtcCB0YXJnZXQs
IHRoZW4gaXQncyB0aGUgbGVhZGVyIG9mIGl0cyBvd24gYmFzaWMgYmxvY2suCiAgICAgICAgIGlm
IChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwg
bmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKLSAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24pOworICAgICAg
ICAgICAgYXV0byBuZXdCbG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0
cnVjdGlvbik7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7CiAgICAgICAg
ICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVk
QmxvY2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcAppbmRleCBkOGRhYzE1ODVmYWIyYjk5OGMxZTVkODg3NTJiYTEyZGY2ZGFkYmRl
Li4zOTNmMTgyNGU0MWE0YmViNTE0YzYyYTY5NmYzM2E4MzcyNDk1Y2RkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMjY1LDcgKzI2
NSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogCiB2b2lkIENhbGxM
aW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYg
c2h1ZmZsZURhdGEpCiB7Ci0gICAgbV9mcmFtZVNodWZmbGVEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJhbWVTaHVmZmxl
RGF0YSA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IGVmMWNhYmZhNzE4YjA4MGQ3ZjNlODYzN2Y5Zjk0ZjYwNTg2ZWU0
ZTguLjM5YTIzYjRjN2Y0N2Q4ZmNlNWUzMGVlY2E1NTBlNzdkYWQzMTU4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMzM3LDcgKzEzMzcs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiBDb2RlQmxv
Y2s6OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNsb3coY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKICAgICBBU1NFUlQoIW1faml0RGF0YSk7Ci0gICAgbV9qaXREYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxKSVREYXRhPigpOworICAgIG1faml0RGF0YSA9IG1ha2VVbmlxdWU8
SklURGF0YT4oKTsKICAgICByZXR1cm4gKm1faml0RGF0YTsKIH0KIApAQCAtMTU1MCw3ICsxNTUw
LDcgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2Rl
T2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2sKIHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVT
YXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7CiAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGVuc3VyZUpJVERhdGEobG9ja2Vy
KS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKKyAgICBlbnN1cmVKSVREYXRhKGxvY2tlciku
bV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4o
Y2FsbGVlU2F2ZVJlZ2lzdGVycyk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZl
UmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJB
dE9mZnNldExpc3QpCkBAIC0xNzkwLDcgKzE3OTAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZW5zdXJl
Q2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3coY29uc3QgT3BDYXRj
aAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kpCiAgICAgICAg
IGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOwogCi0g
ICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFu
ZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgYXV0byBwcm9maWxlcyA9IG1ha2VV
bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6
ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmlsZXMtPm1fc2l6ZTsgKytp
KQogICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9w
ZXJhbmRzW2ldLm9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCmluZGV4IDg3MDY4YmE2NWRkODVjMjNmYmU0YTQ5MGU5NzRhNzI4MWYyNTYwNGMuLjMx
NDM4ZTBhYzUwNjliMjc0OTY5ODg4NmFiMTEyMDA3NmJjYjczYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTk0Myw3ICs5NDMsNyBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7Ci0gICAgICAgICAgICBh
dXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgICAg
IGF1dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRjaFByb2ZpbGVzIGNhbiBiZSB0b3VjaGVkIGZy
b20gY29tcGlsZXIgdGhyZWFkcy4KICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEZNb3ZlKHJh
cmVEYXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5jcHAKaW5kZXggMmQ5NDMxY2YwYjE0NGZhM2EyYzIyMWE2NmU5NDA3
MGM3NzUwZTBlMC4uYjFhMDFmZmE0ZDkzNDhmZWNiMjRjOTY4OGJjODAwNTJmOTM4ODZhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVy
LCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgIC8vIElmIHdlJ3ZlIG5ldmVyIHNl
ZW4gYW55IGZyZXF1ZW50IGV4aXRzIHRoZW4gY3JlYXRlIHRoZSBsaXN0IGFuZCBwdXQgdGhpcyBz
aXRlCiAgICAgLy8gaW50byBpdC4KICAgICBpZiAoIXByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRl
cykgewotICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKKyAgICAgICAgcHJvZmlsZS5tX2ZyZXF1
ZW50RXhpdFNpdGVzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CiAg
ICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcy0+YXBwZW5kKHNpdGUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCmluZGV4IDRm
NDhhMWQ2Yzk4NzIyZTVhYzJlY2U4N2U1MDQwMjMyZjlhNWQ2YjEuLjRmYjExNTczMDAzYjUyZWZk
OWE4NjZmYjNiZGY3NzUwOThjZWZhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHZvaWQgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxh
dGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvZGVCbG9jayosCiBWZWN0b3I8RGVmZXJyZWRT
b3VyY2VEdW1wPiYgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjplbnN1cmVEZWZlcnJlZFNv
dXJjZUR1bXAoKQogewogICAgIGlmICghbV9kZWZlcnJlZFNvdXJjZUR1bXApCi0gICAgICAgIG1f
ZGVmZXJyZWRTb3VyY2VEdW1wID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3Vy
Y2VEdW1wPj4oKTsKKyAgICAgICAgbV9kZWZlcnJlZFNvdXJjZUR1bXAgPSBtYWtlVW5pcXVlPFZl
Y3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+PigpOwogICAgIHJldHVybiAqbV9kZWZlcnJlZFNvdXJj
ZUR1bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAppbmRleCBkYjlhZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJiNjgzZGRlYWQ2
Li5kZjRkNzdjZTNmNjNiNTIwMDc1NTQ0YzQxYTE2Y2IyMzFkN2RmYTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC0yNDMsNyAr
MjQzLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6R2V0dGVyOiB7
Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxD
YWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBt
YWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoQ2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxMaW5r
U3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNp
dGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZh
cmlhbnQuY3BwCmluZGV4IGZjMWY0NjBkZTk2NTQxZDhmYTA5OWNiYjQ1ZjIzMDljMmEzMzM4MGYu
LmVkOGQ0OTNmN2VlNmYxZGEyYjkwOWFkNTdjNjI3NzE4MTNjMmQ2YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBHZXRCeUlkVmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBH
ZXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jdXN0b21BY2Nlc3NvckdldHRlciA9IG90aGVy
Lm1fY3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgbV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2Rv
bUF0dHJpYnV0ZTsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykKLSAgICAgICAgbV9j
YWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5t
X2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG1ha2VVbmlxdWU8
Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAqdGhpczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuY3BwCmluZGV4IDA5MjlkNmZiNDEyNjc0ZWQ3ZjIwNDA0NWZiNDI1ZWI3ZDM4ZDNj
OTMuLjZlZWIxNDViMzM3OTY2MmFmMWMxNTAwMTkwNzY3MjdhMzllZTJiZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29t
cHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCiAgICAgY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkK
IHsKICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKKyAgICAgICAgbV9kYXRhID0gbWFrZVVu
aXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKICAgICBlbHNlIHsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChtX2RhdGEtPmF0KGkpLmtleSgpID09IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKaW5kZXggYjQ5
ZTRlMjQyZTUyZjA4MTMxNWU0OGZiMWUxYmNjMjk3ZTUyOGFlMC4uYTFlY2I5NGRkMGQxODY3MDg2
MzUyZjUyYjViNThjMzE5M2VlY2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xh
c3MgUG9seVByb3RvQWNjZXNzQ2hhaW4gewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiBjbG9uZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOwogICAgIH0KIAogICAgIGNvbnN0IFZl
Y3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cAppbmRleCAyMmY0NTU4MTRiODRhZjRmZTc0Y2FmMjM0MDFkMzBhZGFkYWU1YzZlLi4zYjMwMjMz
OWYwMzUwZGFjNDI4ZjNmMDRjYzczNTJhM2FlNTIxYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTYxNiw3ICs2
MTYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVy
YXRlKAogICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShjb2RlLCB2bSwg
Y29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2Vw
dGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwogICAgIG1f
d2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRl
LndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0
ZS53ZWFrUmVmZXJlbmNlcykpOworICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gbWFrZVVuaXF1
ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVu
Y2VzKSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCmluZGV4
IGMyZDk1MzIwY2ViZDU2ZGJkYzkzZWViZDZjMzE0MGE3ZGY3Y2MyMDkuLmQ2NDJiY2NmZTc5NzY2
YzUyNzliYmM4MTA4NzAxZWI3Zjg1ODI0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJbmxpbmVhYmxl
OiB7CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4g
Y2FsbExpbmtTdGF0dXMgPQotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1
ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VVbmlxdWU8
Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLmNhbGxM
aW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtTdGF0dXMgPSBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
aW5kZXggNWQ2YjI5MDQ1Y2E2NzVjNTZmYTcxZDU0NzVhMTE1YjJkZjZmM2M1ZS4uNzJjNmNhYzg0
ZmIyN2JjZjVlNDE3YzQ5NmU2MzYyZjcyZTZjMGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFB1
dEJ5SWRWYXJpYW50JiBQdXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IFB1dEJ5SWRWYXJp
YW50JiBvdGhlcikKICAgICBtX2NvbmRpdGlvblNldCA9IG90aGVyLm1fY29uZGl0aW9uU2V0Owog
ICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtT
dGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxM
aW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtT
dGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1
cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICBy
ZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVjb3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5jcHAKaW5kZXggOTZkMjJlY2ZhMGE0Yzc1NmVkZmY2MWYwMDEzZjcyNThl
N2QzZmJkNS4uNTNmMjA4YmNhZGVkM2RlYTJkZWUxOGEwZTg5NjA1YzQ5MGExOTViZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNw
cApAQCAtNDUsNyArNDUsNyBAQCBSZWNvcmRlZFN0YXR1c2VzOjpSZWNvcmRlZFN0YXR1c2VzKFJl
Y29yZGVkU3RhdHVzZXMmJiBvdGhlcikKIAogQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVz
ZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0
IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0g
bWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKICAgICBDYWxsTGlua1N0YXR1cyog
cmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGNhbGxzLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtNTMsNyArNTMsNyBAQCBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkQ2Fs
bExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogCiBHZXRCeUlkU3RhdHVz
KiBSZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1
c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRv
IHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKICAgICBHZXRC
eUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgZ2V0cy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTYxLDcgKzYxLDcgQEAgR2V0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAogICAgIAog
UHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0g
ICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1
cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1
cyk7CiAgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIHB1
dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkp
OwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw3ICs2OSw3IEBAIFB1dEJ5SWRTdGF0dXMqIFJl
Y29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9y
aWdpbiwKIAogSW5CeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRJbkJ5SWRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgSW5CeUlkU3RhdHVzJiBzdGF0dXMp
CiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluQnlJZFN0YXR1cz4o
c3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8SW5CeUlkU3RhdHVzPihz
dGF0dXMpOwogICAgIEluQnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAg
IGlucy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIp
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNw
cAppbmRleCAzMGExZjA1NTI1OWUzZGVkMWE3MTY4ZWUzNTI2ZjcyYzA4NGJlZTVhLi5mY2MyOTEx
ODAyNDRlMGIzMjI5ZTJmZDc2MzAwN2JlNzlhODc0MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQqIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNl
CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiYga2V5KQogewogICAgIGlmICghaG9sZGVyUmVmKQotICAgICAgICBob2xkZXJSZWYg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJs
b2NrLCBzdHViSW5mbyk7CisgICAgICAgIGhvbGRlclJlZiA9IG1ha2VVbmlxdWU8V2F0Y2hwb2lu
dHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAgICBlbHNlIHsK
ICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9jb2RlQmxvY2sgPT0gY29kZUJsb2NrKTsKICAg
ICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9zdHViSW5mbyA9PSBzdHViSW5mbyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApp
bmRleCA3MjIyZDQ4MmFkMWU1ZTI4NmNlZjU5ZDRmZjFlMWY1ZWIwNzEwNzhkLi40OTE5NWQxNTcy
MWQyY2RhNGY3NDhhZThkYmUyYWYwMDlhMjhhN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTE2MCw3ICsxNjAs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3ND
YXNlKAogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nl
c3M+IGFjY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CisgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2VzcyA9IG1ha2VV
bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOwogICAgICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAppbmRleCBlMDA2ZDE2YjliOGEwZmMzMGYwNDMzY2RlNjAyZWNjM2IxNjhk
NDJlLi4yYzlhMGIzMDFlYjA5OGUxMTVlZjFlMzZiMTI3YmUyOWUzYWJkYTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
QEAgLTQxNCw3ICs0MTQsNyBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIFVubGlua2VkQ29k
ZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxvY2sqIGNvZAogICAgICAgICBpZiAo
IW1fbGl2ZW5lc3MpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgY2hhbmNlIHR3byBjb21w
aWxlciB0aHJlYWRzIHJhY2VkIHRvIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAgICAvLyBHcmFi
YmluZyB0aGUgbG9jayBhYm92ZSBkZWZlbmRzIGFnYWluc3QgY29tcHV0aW5nIGxpdmVuZXNzIHR3
aWNlLgotICAgICAgICAgICAgbV9saXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOworICAgICAgICAgICAgbV9saXZlbmVzcyA9IG1h
a2VVbmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOwogICAgICAgICB9
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAppbmRleCA0MzcwOTUxOWViNjE2ZTI2NTEwNmVmMWQ1NTI5NjE3ZDY0
NWM5YmM5Li41MTI1MzZjMGQ0NDg1N2E0Y2E3NmU4MTNmZTE0ODAzYTk3M2ZmYTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApA
QCAtNDAyLDcgKzQwMiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcoKmhlYXAoKSwgY2VsbExvY2soKSk7Ci0gICAgICAg
ICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAg
ICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICB9CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBmYmVjOWY3MmNhMmZkMWExOGJhY2Iw
NzNlNjg3MjU0YjcwYjllYmUxLi40OWQ5ZDJmZDNlNmZlOWZiNGI1MjdmNjc3YWJkNWJkNGE1MTIy
NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lk
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJiB2
bSkKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3JhcmVE
YXRhKTsKLSAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAg
ICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByZXR1cm4gKm1fcmFy
ZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlOTc2ODZhYTNlZGNkZDhkM2Y5YjU3YzRhNmQx
MjNiYWM5Y2IzOTg3Li4xNzhhNjFkZjY5MTMzYWZkY2MxMjcyOGNiZmQ5NmViMzlmNDJhZWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERl
ZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5r
ZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAg
ICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+
KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9u
bWVudCk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJhdG9yLT5nZW5l
cmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNv
ZGVDb21waWxlVGltZXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmgKaW5kZXggYmNkNzJlYTA5ZjVmNzE3YTY1ZjY1ZDdkMmVmYzE3NWUwMjNlNjk5MC4uZWJh
YmI1OWQ0MzU5YTllMzY0ZjJjYTNhZjZhZmQwZWZkMDM5MGIzMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgVk07CiB0
eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERl
YnVnZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEZWJ1
Z2dlcihWTSYpOwogICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggZjIwYTM1N2VjYjczYWE3ZWZlNGNiMTA3ZDFjY2I3ZTlkYzkwMDMzOS4uMjc2NTY5MjZhOGQy
OWQyN2ViZWVhYTlmZmRjYTIwM2NjMjVmYTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNTgs
NyArNTgsNyBAQCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6QWJzdHJh
Y3RJbnRlcnByZXRlcihHcmFwaCYgZ3JhcGgsIEFic3RyYQogICAgICwgbV9zdGF0ZShzdGF0ZSkK
IHsKICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQotICAgICAgICBtX3BoaUNoaWxkcmVu
ID0gc3RkOjptYWtlX3VuaXF1ZTxQaGlDaGlsZHJlbj4obV9ncmFwaCk7CisgICAgICAgIG1fcGhp
Q2hpbGRyZW4gPSBtYWtlVW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCmluZGV4IDViMGM4N2ZmZWU1MmIyYTllNTAxMWU1YmY4YzcxYzAxMjk0MmVmZDAu
LmU2ODNhODIxYjIyYmNmZTU2YjM5ZWY0MWExMWYxYzJkZGJkNjYxNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC03NCw3ICs3NCw3IEBAIEdyYXBoOjpHcmFwaChW
TSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1fY29kZUJsb2Nr
KG1fcGxhbi5jb2RlQmxvY2soKSkKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2NvZGVCbG9jay0+
YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlxdWU8U1NBQ0ZHPigq
dGhpcykpCisgICAgLCBtX3NzYUNGRyhtYWtlVW5pcXVlPFNTQUNGRz4oKnRoaXMpKQogICAgICwg
bV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9p
bnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkUmVn
aXN0ZXJpbmcpCkBAIC04Niw4ICs4Niw4IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBs
YW4pCiAgICAgCiAgICAgbV9oYXNEZWJ1Z2dlckVuYWJsZWQgPSBtX3Byb2ZpbGVkQmxvY2stPndh
c0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSB8fCBPcHRpb25zOjpmb3JjZURlYnVnZ2Vy
Qnl0ZWNvZGVHZW5lcmF0aW9uKCk7CiAgICAgCi0gICAgbV9pbmRleGluZ0NhY2hlID0gc3RkOjpt
YWtlX3VuaXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlzKTsKLSAgICBtX2Fic3RyYWN0VmFsdWVzQ2Fj
aGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0aGlzKTsKKyAg
ICBtX2luZGV4aW5nQ2FjaGUgPSBtYWtlVW5pcXVlPEZsb3dJbmRleGluZz4oKnRoaXMpOworICAg
IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVl
Pj4oKnRoaXMpOwogCiAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RydWN0dXJlU3RydWN0dXJl
LmdldCgpKTsKICAgICB0aGlzLT5zdHJpbmdTdHJ1Y3R1cmUgPSByZWdpc3RlclN0cnVjdHVyZSh2
bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgRnVsbEJ5dGVj
b2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAg
ICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlTGl2ZW5lc3MuZW5kKCkpCiAgICAgICAgIHJldHVybiAq
aXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVu
ZXNzPiBsaXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+KCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPiBsaXZlbmVzcyA9IG1h
a2VVbmlxdWU8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+KCk7CiAgICAgY29kZUJsb2NrLT5saXZlbmVz
c0FuYWx5c2lzKCkuY29tcHV0ZUZ1bGxMaXZlbmVzcyhjb2RlQmxvY2ssICpsaXZlbmVzcyk7CiAg
ICAgRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCA9ICpsaXZlbmVzczsKICAgICBtX2J5dGVj
b2RlTGl2ZW5lc3MuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShsaXZlbmVzcykpOwpAQCAtMTExNSw3
ICsxMTE1LDcgQEAgQnl0ZWNvZGVLaWxscyYgR3JhcGg6OmtpbGxzRm9yKENvZGVCbG9jayogY29k
ZUJsb2NrKQogICAgIGlmIChpdGVyICE9IG1fYnl0ZWNvZGVLaWxscy5lbmQoKSkKICAgICAgICAg
cmV0dXJuICppdGVyLT52YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVL
aWxscz4ga2lsbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gbWFrZVVuaXF1ZTxCeXRlY29kZUtp
bGxzPigpOwogICAgIGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVLaWxscyhj
b2RlQmxvY2ssICpraWxscyk7CiAgICAgQnl0ZWNvZGVLaWxscyYgcmVzdWx0ID0gKmtpbGxzOwog
ICAgIG1fYnl0ZWNvZGVLaWxscy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGtpbGxzKSk7CkBAIC0x
NTUzLDcgKzE1NTMsNyBAQCBDUFNDRkcmIEdyYXBoOjplbnN1cmVDUFNDRkcoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwogICAg
IGlmICghbV9jcHNDRkcpCi0gICAgICAgIG1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFND
Rkc+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNDRkcgPSBtYWtlVW5pcXVlPENQU0NGRz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9jcHNDRkc7CiB9CiAKQEAgLTE1NjEsNyArMTU2MSw3IEBAIENQU0Rv
bWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1f
Y3BzRG9taW5hdG9ycykKLSAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1
ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IG1ha2VV
bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNEb21pbmF0b3Jz
OwogfQogCkBAIC0xNTY5LDcgKzE1NjksNyBAQCBTU0FEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJl
U1NBRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSB8fCBt
X2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fc3NhRG9taW5hdG9ycykKLSAgICAgICAg
bV9zc2FEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7
CisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8U1NBRG9taW5hdG9ycz4oKnRo
aXMpOwogICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCkBAIC0xNTc4LDcgKzE1Nzgs
NyBAQCBDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9vcHMoKQogICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwog
ICAgIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fY3BzTmF0dXJhbExvb3BzKQot
ICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTTmF0dXJhbExv
b3BzPigqdGhpcyk7CisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxDUFNO
YXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExvb3BzOwogfQog
CkBAIC0xNTg3LDcgKzE1ODcsNyBAQCBTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FO
YXR1cmFsTG9vcHMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGVu
c3VyZVNTQURvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fc3NhTmF0dXJhbExvb3BzKQotICAgICAg
ICBtX3NzYU5hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBTmF0dXJhbExvb3BzPigq
dGhpcyk7CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxTU0FOYXR1cmFs
TG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQogCkBAIC0x
NTk2LDcgKzE1OTYsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkco
KQogICAgIC8vIFdlIGNvdWxkIGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgdG8gd29y
ayBvdmVyIENQUywgYnV0IHRvZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EuCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9mb3JtID09IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCi0gICAg
ICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlz
KTsKKyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRo
aXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKQEAgLTE2MDQsNyArMTYwNCw3
IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3Jz
KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFj
a3dhcmRzRG9taW5hdG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dh
cmRzRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0xNjEyLDcgKzE2MTIs
NyBAQCBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsK
ICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCi0gICAgICAgIG1fY29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xFcXVpdmFsZW5j
ZUFuYWx5c2lzPigqdGhpcyk7CisgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMg
PSBtYWtlVW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CiAgICAgcmV0
dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDYzOTA0M2U5ZTI3ZmJlMGUwYjky
YWI0NmE2NjliZTE0MTA1MDMzNzAuLmYyYjY2NDAyZTNhZDBlNzJkZmNlMDViNjVhZjNmYzkyNmQw
MDlkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIEpJVENvbXBpbGVyOjpKSVRDb21waWxlcihHcmFwaCYgZGZnKQog
ICAgICwgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIoZGZnLm1fdm0pCiB7CiAgICAgaWYgKFVO
TElLRUxZKHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IG1fZ3JhcGgubV92bS5tX3BlckJ5dGVj
b2RlUHJvZmlsZXIpKQotICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlzYXNzZW1ibGVyPihkZmcpOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8
RGlzYXNzZW1ibGVyPihkZmcpOwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIG1faml0Q29kZS0+
dGllclVwSW5Mb29wSGllcmFyY2h5ID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi50aWVyVXBJbkxv
b3BIaWVyYXJjaHkoKSk7CiAgICAgZm9yICh1bnNpZ25lZCB0aWVyVXBCeXRlY29kZSA6IG1fZ3Jh
cGgubV9wbGFuLnRpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzKCkpCkBAIC0zNDMsNyArMzQzLDcg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIH0K
IAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkK
LSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlx
dWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIp
LCBsaW5rQnVmZmVyKSk7CisgICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1h
cChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOwogfQogCiBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVy
Zmxvd0NoZWNrKEpJVENvbXBpbGVyJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc3Rh
Y2tPdmVyZmxvdykKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
KCkKIAogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7Ci0gICAgbV9z
cGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKKyAg
ICBtX3NwZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogCiAg
ICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGlu
IHRoZSBKU1N0YWNrLgogICAgIEp1bXBMaXN0IHN0YWNrT3ZlcmZsb3c7CkBAIC00MDIsOSArNDAy
LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+Y3Jl
YXRlT1NSRW50cmllcygpOwogICAgIHNldEVuZE9mQ29kZSgpOwogCi0gICAgYXV0byBsaW5rQnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJ
VENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgYXV0byBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxM
aW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAg
ICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKLSAgICAgICAgbV9ncmFw
aC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPiht
X2dyYXBoLm1fcGxhbikpOworICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFr
ZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZSgpCiAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAKLSAgICBtX2dyYXBoLm1f
cGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAorICAgIG1f
Z3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEpJVEZpbmFsaXplcj4oCiAgICAg
ICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShs
aW5rQnVmZmVyKSkpOwogfQogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBjb21waWxlRW50cnlFeGVjdXRpb25GbGFnKCk7CiAKICAg
ICAvLyA9PT0gRnVuY3Rpb24gYm9keSBjb2RlIGdlbmVyYXRpb24gPT09Ci0gICAgbV9zcGVjdWxh
dGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKKyAgICBtX3Nw
ZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogICAgIGNvbXBp
bGVCb2R5KCk7CiAgICAgc2V0RW5kT2ZNYWluUGF0aCgpOwogCkBAIC01MDcsOSArNTA3LDkgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBzZXRFbmRPZkNvZGUoKTsK
IAogICAgIC8vID09PSBMaW5rID09PQotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOworICAgIGF1dG8gbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMs
IG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVy
LT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFs
aXplcihzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsK
KyAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmlu
YWxpemVyPihtX2dyYXBoLm1fcGxhbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGxp
bmsoKmxpbmtCdWZmZXIpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGVGdW5jdGlvbigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4gd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+
KGFyaXR5Q2hlY2spOwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFr
ZV91bmlxdWU8SklURmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIo
bWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRD
b2RlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNr
KSk7CiB9CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09m
RG91YmxlQ29uc3RhbnQoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiAK
ICAgICBpZiAoIW1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMpCi0gICAgICAgIG1fZ3JhcGgubV9k
b3VibGVDb25zdGFudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhZzxkb3VibGU+PigpOworICAgICAg
ICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gbWFrZVVuaXF1ZTxCYWc8ZG91YmxlPj4oKTsK
IAogICAgIGRvdWJsZSogYWRkcmVzc0luQ29uc3RhbnRQb29sID0gbV9ncmFwaC5tX2RvdWJsZUNv
bnN0YW50cy0+YWRkKCk7CiAgICAgKmFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IHZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhh
c2UuY3BwCmluZGV4IGJiODAwMjc0ZGRjYjYzMDM0NzgzNzM3ZTM4YWQxZTYxZTljNWVhMDQuLmE5
NDQwNDc0NTkyNTIxODQ1YmEzMTg4MzdiMTNiOWY0YTMxN2VmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgY2xhc3MgTGl2ZW5lc3NBbmFseXNpc1BoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgLCBtX2xpdmVBdFRhaWwobV9ncmFwaCkKICAgICB7CiAgICAgICAgIG1fZ3Jh
cGgubV9pbmRleGluZ0NhY2hlLT5yZWNvbXB1dGUoKTsKLSAgICAgICAgbV93b3Jrc2V0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXb3Jrc2V0PihtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+bnVtSW5kaWNl
cygpKTsKKyAgICAgICAgbV93b3Jrc2V0ID0gbWFrZVVuaXF1ZTxXb3Jrc2V0PihtX2dyYXBoLm1f
aW5kZXhpbmdDYWNoZS0+bnVtSW5kaWNlcygpKTsKICAgICB9CiAKICAgICBib29sIHJ1bigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCAzNGFjYmMxZmUyMmZiNzdmMzU4
MGRhMzY3OTljODIxNGJlYmM5ZDYyLi5iNjk0OWFhMDM1YzEyZmE3NDlkNTgwY2M3YzJhZWNjYThk
OTJjMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTI5Nyw3ICsy
OTcsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgp
CiAgICAgaWYgKG1fbW9kZSA9PSBGVExGb3JPU1JFbnRyeU1vZGUpIHsKICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBwZXJmb3JtT1NSRW50cnlwb2ludENyZWF0aW9uKGRmZyk7CiAgICAgICAgIGlmICgh
cmVzdWx0KSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8RmFp
bGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9IG1ha2VVbmlx
dWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gRmFpbFBhdGg7
CiAgICAgICAgIH0KICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1DUFNSZXRocmVhZGluZyk7CkBA
IC0zOTgsNyArMzk4LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRo
cmVhZEltcGwoKQogICAgIGNhc2UgRlRMRm9yT1NSRW50cnlNb2RlOiB7CiAjaWYgRU5BQkxFKEZU
TF9KSVQpCiAgICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6OkNhbm5vdENv
bXBpbGUpIHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1
ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsK
ICAgICAgICAgfQogICAgICAgICAKQEAgLTQ3OCw3ICs0NzgsNyBAQCBQbGFuOjpDb21waWxhdGlv
blBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgICAgIFJVTl9QSEFTRShwZXJm
b3JtV2F0Y2hwb2ludENvbGxlY3Rpb24pOwogICAgICAgICAKICAgICAgICAgaWYgKEZUTDo6Y2Fu
Q29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgewotICAgICAgICAgICAgbV9maW5h
bGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAg
ICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwog
ICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAppbmRleCA4NzE1
OTViMWZmMjU5YmVlNDRjNzFjZTAzZDdkOGU4YmQ2NDM2NTM3Li41MzRkNjRiNTM4ZmExODBhZjQ4
ZTg5ZDRmODI2MDJmYjQ1YzkyMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCkBAIC00NDgsNyArNDQ4LDcgQEAgY2xhc3Mg
U1NBQ29udmVyc2lvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJsb2NrLT52
YXJpYWJsZXNBdFRhaWwuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQu
Y2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKLSAgICAg
ICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+
KGJsb2NrKTsKKyAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBtYWtlVW5pcXVlPEJhc2ljQmxvY2s6
OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6
IGVudHJ5cG9pbnRJbmRleFRvQXJndW1lbnRzQmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCA3Y2Y0MjUyMWE2MjExNzhm
Zjg1MTJhZmY5ZmZmYTMyNTIwMDIyNGQ2Li5jZGNkYWE2MGQ4OThhM2I2NmQ3YjI5OGY2NjgxOGM3
OWRjNDhjODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQ
YXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0
aEdlbmVyYXRvci5oCkBAIC0xOTMsNyArMTkzLDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxT
bG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBz
cGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCiAgICAgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1
bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KAorICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjxK
dW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+PigKICAgICAg
ICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0LCBh
cmd1bWVudHMuLi4pOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
SnVtcFR5cGUsIHR5cGVuYW1lIERlc3RpbmF0aW9uVHlwZSwgdHlwZW5hbWUgU291cmNlVHlwZSwg
dW5zaWcKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
TW92ZSgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTb3VyY2VUeXBl
IHNvdXJjZVtudW1iZXJPZkFzc2lnbm1lbnRzXSwgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0aW9u
W251bWJlck9mQXNzaWdubWVudHNdKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFz
c2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJj
ZVR5cGUsIG51bWJlck9mQXNzaWdubWVudHM+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3Np
Z25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VU
eXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRp
b24sIHNvdXJjZSk7CiB9CiAKQEAgLTI0OSw3ICsyNDksNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291cmNlVHlwZSBz
b3VyY2VBcnJheVsxXSA9IHsgc291cmNlIH07CiAgICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0
aW9uQXJyYXlbMV0gPSB7IGRlc3RpbmF0aW9uIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwg
U291cmNlVHlwZSwgMT4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRo
R2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDE+PigKICAg
ICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKQEAg
LTI1OSw3ICsyNTksNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291cmNlVHlwZSBzb3VyY2VBcnJheVsyXSA9IHsgc291
cmNlMSwgc291cmNlMiB9OwogICAgIERlc3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlvbkFycmF5WzJd
ID0geyBkZXN0aW5hdGlvbjEsIGRlc3RpbmF0aW9uMiB9OwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5
cGUsIFNvdXJjZVR5cGUsIDI+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3NpZ25pbmdTbG93
UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAyPj4o
CiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IDJhYmNkYjNmZDVmOTcwZjNmYmI5MGQzYjBmNmUzY2Q5ZDQwZmNlMzcuLjAzOWE0NmE3NTg2
MTA0OGM4NWYwMzI4MmEyNmZlYWZiN2VmOWJlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUKICAgICAvLyBJIHdhbnQgYSBzbG93IHBhdGggdGhhdCBhbHNvIGxv
YWRzIG91dCB0aGUgc3RvcmFnZSBwb2ludGVyLCBhbmQgdGhhdCdzCiAgICAgLy8gd2hhdCB0aGlz
IGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQn
cyBhIGxvdAogICAgIC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlv
bmFsaXR5LiA6LS8KLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENh
bGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJlc3VsdEdQUiwg
c3RvcmFnZUdQUiwKICAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpKTsKIApAQCAtODk5
LDcgKzg5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUqIG5vZGUsIEdQ
UlJlZyBiYXNlUmVnLCBHUFJSZWcgcHJvcGVydHlSZWcpCiAgICAgICAgIHNsb3dQYXRoLmFwcGVu
ZChqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUtPmFycmF5TW9kZSgp
KSk7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlx
dWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
bWFrZVVuaXF1ZTxBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgc2xvd1BhdGgs
IHRoaXMsIG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB0ZW1wR1BSLCBzdHJ1Y3R1cmVHUFIp
KTsKICAgICAKICAgICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKQEAgLTIyNDIsMTAgKzIyNDIs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSog
bm9kZSkKICAgICAgICAgfQogICAgICAgICBpZiAocHJvdG90eXBlQ2hhaW5Jc1NhbmUpIHsKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNs
b3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhpcywgSlNW
YWx1ZVJlZ3Moc2NyYXRjaFJlZyksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAjZWxzZQotICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTYW5lU3RyaW5n
R2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhpcywgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnUmVn
LCBzY3JhdGNoUmVnKSwKICAgICAgICAgICAgICAgICBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwog
I2VuZGlmCkBAIC03NjE5LDcgKzc2MTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cywgcmVzdWx0R1BSLCBzdHJ1
Y3R1cmUsCiAgICAgICAgICAgICAgICAga25vd25MZW5ndGgsIG1pbkNhcGFjaXR5KSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxD
cmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAgIGF1dG8gZ2Vu
ZXJhdG9yID0gbWFrZVVuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3I+KAogICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHJlc3VsdEdQUiwgc3RydWN0dXJl
LCBsZW5ndGhHUFIsIG1pbkNhcGFjaXR5KTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
V1RGTW92ZShnZW5lcmF0b3IpKTsKICAgICB9CkBAIC04NDM5LDcgKzg0MzksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRo
VmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZh
cmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIs
IHRlbXBWYWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAgIH0KIApAQCAtOTEz
NSw3ICs5MTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0cnVjdHVyZUNoZWNrKE5v
ZGUqIG5vZGUsIEdQUlJlZyBjZWxsR1BSLCBHUFJSZWcgdGVtcEcKICAgICAgICAgR1BSUmVnIHN0
cnVjdHVyZUdQUjsKICAgICAgICAgCiAgICAgICAgIGlmICh0ZW1wR1BSID09IEludmFsaWRHUFJS
ZWcpIHsKLSAgICAgICAgICAgIHN0cnVjdHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8R1BSVGVtcG9y
YXJ5Pih0aGlzKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZSA9IG1ha2VVbmlxdWU8R1BSVGVtcG9y
YXJ5Pih0aGlzKTsKICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS0+Z3ByKCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gdGVtcEdQUjsKQEAg
LTEzMTc2LDcgKzEzMTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRl
TmV3QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAogICAgIG1faml0
Lm11dGF0b3JGZW5jZSgqbV9qaXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
dGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0
aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJy
YXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwKICAg
ICAgICAgc3RydWN0dXJlLAogICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0
b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5
U3RvcmFnZSkpIDogc3RydWN0dXJlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCBmYTM5NmY0
ZjE5MmE4YmI0YWVmOTlkMDM3MTkyNGEyYTM4YzY0NWU4Li5iYTYxMjhlZmU5YmIzNjhmZTNiMDY2
MjNiNTFlZTNlZWFkM2M0ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtOTUsOCArOTUs
OCBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgIGNhc2UgUGhhc2VNb2RlOjpHbG9iYWw6IHsKICAgICAgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKIAotICAgICAgICAgICAg
bV9zdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+KG1fZ3JhcGgp
OwotICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QWJzdHJhY3RJ
bnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0YXRlKTsKKyAg
ICAgICAgICAgIG1fc3RhdGUgPSBtYWtlVW5pcXVlPEluUGxhY2VBYnN0cmFjdFN0YXRlPihtX2dy
YXBoKTsKKyAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBtYWtlVW5pcXVlPEFic3RyYWN0SW50
ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0ZSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG1faXNDb252ZXJnZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IApAQCAtMTA3LDggKzEwNyw4IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIC8vIHRvd2FyZHMgYmVsaWV2aW5nIHRoYXQgYWxs
IG5vZGVzIG5lZWQgYmFycmllcnMuICJOZWVkaW5nIGEgYmFycmllciIgaXMgbGlrZQogICAgICAg
ICAgICAgLy8gc2F5aW5nIHRoYXQgdGhlIG5vZGUgaXMgaW4gYSBwYXN0IGVwb2NoLiAiTm90IG5l
ZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlIHNheWluZwogICAgICAgICAgICAgLy8gdGhhdCB0aGUg
bm9kZSBpcyBpbiB0aGUgY3VycmVudCBlcG9jaC4KLSAgICAgICAgICAgIG1fc3RhdGVBdEhlYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFwaCk7Ci0g
ICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja01hcDxIYXNo
U2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0SGVhZCA9IG1ha2VV
bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1f
c3RhdGVBdFRhaWwgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFw
aCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJsb2NrTGlzdCBwb3N0T3JkZXIgPSBtX2dy
YXBoLmJsb2Nrc0luUG9zdE9yZGVyKCk7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggZTZjMjIyMWVlMzAxNTQ0YzcyYTljZTgzNWY5
ODBmZjM2ZjAyNGI3ZC4uOGY5MzAzNGIwYzZmOTBiYTY2ZjRiZjVjNTNiZTFiNGYwZmJhNzRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAgLTE1MCw3ICsx
NTAsNyBAQCBjbGFzcyBXb3JrbGlzdDo6VGhyZWFkQm9keSA6IHB1YmxpYyBBdXRvbWF0aWNUaHJl
YWQgewogICAgICAgICBpZiAobV9yZWxhdGl2ZVByaW9yaXR5KQogICAgICAgICAgICAgVGhyZWFk
OjpjdXJyZW50KCkuY2hhbmdlUHJpb3JpdHkobV9yZWxhdGl2ZVByaW9yaXR5KTsKICAgICAgICAg
Ci0gICAgICAgIG1fY29tcGlsYXRpb25TY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRp
b25TY29wZT4oKTsKKyAgICAgICAgbV9jb21waWxhdGlvblNjb3BlID0gbWFrZVVuaXF1ZTxDb21w
aWxhdGlvblNjb3BlPigpOwogICAgIH0KICAgICAKICAgICB2b2lkIHRocmVhZElzU3RvcHBpbmco
Y29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlkZQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQg
V29ya2xpc3Q6OmZpbmlzaENyZWF0aW9uKHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50IHJl
bGF0aXZlUHJpb3JpdHkpCiAKIHZvaWQgV29ya2xpc3Q6OmNyZWF0ZU5ld1RocmVhZChjb25zdCBB
YnN0cmFjdExvY2tlciYgbG9ja2VyLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIHsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VGhyZWFkRGF0
YT4odGhpcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEgPSBtYWtlVW5p
cXVlPFRocmVhZERhdGE+KHRoaXMpOwogICAgIGRhdGEtPm1fdGhyZWFkID0gYWRvcHRSZWYobmV3
IFRocmVhZEJvZHkobG9ja2VyLCAqdGhpcywgKmRhdGEsIG1fbG9jaywgbV9wbGFuRW5xdWV1ZWQu
Y29weVJlZigpLCByZWxhdGl2ZVByaW9yaXR5KSk7CiAgICAgbV90aHJlYWRzLmFwcGVuZChXVEZN
b3ZlKGRhdGEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJs
ZXIvRGlzYXNzZW1ibGVyLmNwcAppbmRleCAxOWIxMTVjOWZkZDY3Y2JjOGFlMTA5YzY0NDU3NDI4
YmEzYWRmYTUzLi4wMGJkYTY1NzI3OWNmN2E5OWRiYWIxNDliMDljNzAzZDY4YjM1YmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIu
Y3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgQXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyJiBhc3luY2hy
b25vdXNEaXNhc3NlbWJsZXIoKQogdm9pZCBkaXNhc3NlbWJsZUFzeW5jaHJvbm91c2x5KAogICAg
IGNvbnN0IENTdHJpbmcmIGhlYWRlciwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPERpc2Fz
c2VtYmx5UHRyVGFnPiYgY29kZVJlZiwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCkK
IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrID0gc3RkOjptYWtl
X3VuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2Vt
Ymx5VGFzaz4gdGFzayA9IG1ha2VVbmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOwogICAgIHRhc2st
PmhlYWRlciA9IHN0cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVjayEgV2UgbmVlZCB0aGlzIGJl
Y2F1c2UgQ1N0cmluZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCiAgICAgdGFzay0+Y29kZVJlZiA9
IGNvZGVSZWY7CiAgICAgdGFzay0+c2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKaW5kZXggOTBhZTJmNGZlMDZhMTUyY2FlNTc4NWUy
YzAzYzk5OWI2ODMyYmMxYi4uZWM4MGVhNjdiMjU2Zjg5MThkNDg4M2E4YzUyYjhmMzc5NTgzYWJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcApA
QCAtMTU3LDExICsxNTcsMTEgQEAgY29uc3QgQWJzdHJhY3RIZWFwJiBJbmRleGVkQWJzdHJhY3RI
ZWFwOjphdFNsb3cocHRyZGlmZl90IGluZGV4KQogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGluZGV4KSA+PSBtX3NtYWxsSW5kaWNlcy5zaXplKCkpOwogICAgIAogICAgIGlmIChVTkxJ
S0VMWSghbV9sYXJnZUluZGljZXMpKQotICAgICAgICBtX2xhcmdlSW5kaWNlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWFwVHlwZT4oKTsKKyAgICAgICAgbV9sYXJnZUluZGljZXMgPSBtYWtlVW5pcXVl
PE1hcFR5cGU+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWJzdHJhY3RIZWFwPiYgZmllbGQg
PSBtX2xhcmdlSW5kaWNlcy0+YWRkKGluZGV4LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgaWYgKCFmaWVsZCkgewotICAgICAgICBmaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8QWJzdHJh
Y3RIZWFwPigpOworICAgICAgICBmaWVsZCA9IG1ha2VVbmlxdWU8QWJzdHJhY3RIZWFwPigpOwog
ICAgICAgICBpbml0aWFsaXplKCpmaWVsZCwgaW5kZXgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggNWQwNGI3MmYwNDgzMWQwNjMwMjMwNGQx
ZWI3ZTQ5MjlkNDgwNDI3Zi4uNDYzNWNjOTZmOTEwOTFmNzNmMDhkMWY3NTJiMDQ3ZDEwNTNiZmI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZl
cG9pbnRSZXN1bHQpCiAgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKIAogICAgIGlmIChzaG91bGRE
dW1wRGlzYXNzZW1ibHkoKSkKLSAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNldERpc2Fzc2Vt
YmxlcihzdGQ6Om1ha2VfdW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CisgICAgICAg
IHN0YXRlLnByb2MtPmNvZGUoKS5zZXREaXNhc3NlbWJsZXIobWFrZVVuaXF1ZTxCMzo6QWlyOjpE
aXNhc3NlbWJsZXI+KCkpOwogCiAgICAgewogICAgICAgICBHcmFwaFNhZmVwb2ludCBzYWZlcG9p
bnQoc3RhdGUuZ3JhcGgsIHNhZmVwb2ludFJlc3VsdCk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
Y29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9m
ZnNldExpc3Q+IHJlZ2lzdGVyT2Zmc2V0cyA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0
TGlzdCgpKTsKKyAgICAgICAgbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oc3RhdGUu
cHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwogICAgIGlmIChzaG91bGRE
dW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgZGF0YUxvZygiVW53aW5kIGluZm8gZm9yICIsIENv
ZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwgIjogIiwgKnJl
Z2lzdGVyT2Zmc2V0cywgIlxuIik7CiAgICAgY29kZUJsb2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0
ZXJzKFdURk1vdmUocmVnaXN0ZXJPZmZzZXRzKSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBj
b21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkK
ICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAKLSAgICBzdGF0
ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZm
ZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIHN0YXRlLmZp
bmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAKICAgICBpZiAoc3RhdGUuZmluYWxp
emVyLT5iM0NvZGVMaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAgIHN0
YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgY29t
cGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAg
ICAgCiAgICAgQjM6OlBDVG9PcmlnaW5NYXAgb3JpZ2luTWFwID0gc3RhdGUucHJvYy0+cmVsZWFz
ZVBDVG9PcmlnaW5NYXAoKTsKICAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2lu
TWFwcGluZygpKQotICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6
bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2
bSwgV1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZl
cikpOworICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8
UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2bSwgV1RGTW92ZShv
cmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlcikpOwogCiAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gbGFiZWwgPSBzdGF0ZS5maW5hbGl6ZXIt
PmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oc3RhdGUucHJvYy0+
ZW50cnlwb2ludExhYmVsKDApKTsKICAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbiA9IGxhYmVs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKaW5kZXggMTY1MzM1MDljZDBiNDgy
Yzc0YmNhNjczMTg3NjNmMmUwZjA5ZGRmMS4uYzNmOTMzOTJmMjZlNmZjOTVmOWMyY2M1OTI5ZWQz
NGM2YmMzMGMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWls
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKIHZvaWQgZmFpbChTdGF0ZSYgc3RhdGUp
CiB7Ci0gICAgc3RhdGUuZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVl
PEZhaWxlZEZpbmFsaXplcj4oc3RhdGUuZ3JhcGgubV9wbGFuKSk7CisgICAgc3RhdGUuZ3JhcGgu
bV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oc3RhdGUuZ3Jh
cGgubV9wbGFuKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDA4NTQwNTZlYzdkMTYyYjExY2RjMjFjZDc4ZmUx
NTE3ZjdhY2YzZWIuLjk1ZGI2OTYxZThlOTA3NzBjZDZlNTU2NzMwMjJiNDQ3NjNiNTgwNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZv
aWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNz
KCk7CiAgICAgICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuanVtcCgpKTsKIAotICAg
ICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgICAgICBsaW5rQnVmZmVy
ID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25D
YW5GYWlsKTsKICAgICAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgp
KSB7CiAgICAgICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgbGluayhTdGF0ZSYg
c3RhdGUpCiAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIG1haW5QYXRoSnVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAgIAotICAgICAg
ICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgbGlua0J1ZmZlciA9IG1ha2VVbmlx
dWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAg
ICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAgICAg
ICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhZjFi
YTRiZjkwYThmZDBiYTI1MDJjNjQ3ZTJjMTcxNDEyMmRlN2Q0Li4wOWIzNDI3M2NiYjdjYWI0NGNk
ODYzZTk5YjI4NTkwZTg3Yzk0YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNTA4MCw3ICsxNTA4MCw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhn
ZW5lcmF0b3JKdW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHZtLT5nZXRDVElTdHViKGxhenlTbG93UGF0aEdl
bmVyYXRpb25UaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGF6eVNsb3dQYXRoPiBsYXp5U2xvd1BhdGggPSBzdGQ6Om1ha2VfdW5pcXVlPExhenlTbG93
UGF0aD4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gbWFrZVVuaXF1ZTxMYXp5U2xvd1BhdGg+KCk7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rZWRQYXRjaGFibGVK
dW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihsaW5rQnVmZmVyLmxvY2F0
aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlSnVtcCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU3RhdGUuY3BwCmluZGV4IDY1M2VjNmY2OTYwNDliNzUyYWMyNGE3NzkzMTBk
NGFkOTdiYjAzZGIuLjRhNDg0ZmE2ZDQ2NDMwZDcxZTU3MDA4YmYxZTk5ZjZjMjViODQ4OTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC02MCwxMCArNjAsMTAgQEAg
U3RhdGU6OlN0YXRlKEdyYXBoJiBncmFwaCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
Z3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4o
Z3JhcGgubV9wbGFuKSk7CisgICAgZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVl
PEpJVEZpbmFsaXplcj4oZ3JhcGgubV9wbGFuKSk7CiAgICAgZmluYWxpemVyID0gc3RhdGljX2Nh
c3Q8SklURmluYWxpemVyKj4oZ3JhcGgubV9wbGFuLmZpbmFsaXplcigpKTsKIAotICAgIHByb2Mg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByb2NlZHVyZT4oKTsKKyAgICBwcm9jID0gbWFrZVVuaXF1ZTxQ
cm9jZWR1cmU+KCk7CiAKICAgICBwcm9jLT5zZXRPcmlnaW5QcmludGVyKAogICAgICAgICBbXSAo
UHJpbnRTdHJlYW0mIG91dCwgQjM6Ok9yaWdpbiBvcmlnaW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKaW5kZXggMjJkN2ZkNjVkNWExNzU1
YjViMmQzYjc4ZGRhNTVjMGQwMDdlMWNjYi4uMDIxYjBjZGI5ZGZhYzE4YjM2ODY0MjhhOTgyM2Yy
ODExMGJiNzlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxl
dGVTdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVT
dWJzcGFjZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6
OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5n
IEJsb2NrRGlyZWN0b3J5L0xvY2FsQWxsb2NhdG9yIGZvciAiLCBtX25hbWUsICIsICIsIGF0dHJp
YnV0ZXMoKSwgIiwgIiwgc2l6ZUNsYXNzLCAiLlxuIik7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlxdWVEaXJlY3RvcnkgPQotICAgICAgICBzdGQ6Om1ha2Vf
dW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKKyAgICAg
ICAgbWFrZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNpemVDbGFzcyk7
CiAgICAgQmxvY2tEaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9yeS5nZXQoKTsK
ICAgICBtX2RpcmVjdG9yaWVzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9yeSkpOwogICAg
IApAQCAtODgsNyArODgsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9y
Rm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICBtX3NwYWNlLmFkZEJsb2NrRGlyZWN0b3J5KGxvY2tl
ciwgZGlyZWN0b3J5KTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxBbGxvY2F0b3I+
IHVuaXF1ZUxvY2FsQWxsb2NhdG9yID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxMb2NhbEFs
bG9jYXRvcj4oZGlyZWN0b3J5KTsKKyAgICAgICAgbWFrZVVuaXF1ZTxMb2NhbEFsbG9jYXRvcj4o
ZGlyZWN0b3J5KTsKICAgICBMb2NhbEFsbG9jYXRvciogbG9jYWxBbGxvY2F0b3IgPSB1bmlxdWVM
b2NhbEFsbG9jYXRvci5nZXQoKTsKICAgICBtX2xvY2FsQWxsb2NhdG9ycy5hcHBlbmQoV1RGTW92
ZSh1bmlxdWVMb2NhbEFsbG9jYXRvcikpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAppbmRleCBhMDFiNWEyYjRhZWZkM2U1Mjk2OTc3YTVjODM4NDA0MmU1YTI5NTZhLi45NzE5
OWUxODZkZTcyZDc3Mjc5NzM1YzlkM2M5OTQwYzg1YzQ4YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcApAQCAtMjg5LDE1ICsyODksMTUgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9tYXhFZGVuU2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUp
CiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAsIG1fb2JqZWN0
U3BhY2UodGhpcykKLSAgICAsIG1fbWFjaGluZVRocmVhZHMoc3RkOjptYWtlX3VuaXF1ZTxNYWNo
aW5lVGhyZWFkcz4oKSkKLSAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCi0gICAgLCBtX211dGF0b3JTbG90VmlzaXRv
cihzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKLSAgICAsIG1fbXV0
YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQotICAgICwg
bV9yYWNlTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAg
LCBtX2NvbnN0cmFpbnRTZXQoc3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3RyYWludFNldD4o
KnRoaXMpKQorICAgICwgbV9tYWNoaW5lVGhyZWFkcyhtYWtlVW5pcXVlPE1hY2hpbmVUaHJlYWRz
PigpKQorICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihtYWtlVW5pcXVlPFNsb3RWaXNpdG9y
PigqdGhpcywgIkMiKSkKKyAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8U2xv
dFZpc2l0b3I+KCp0aGlzLCAiTSIpKQorICAgICwgbV9tdXRhdG9yTWFya1N0YWNrKG1ha2VVbmlx
dWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3JhY2VNYXJrU3RhY2sobWFrZVVuaXF1ZTxN
YXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fY29uc3RyYWludFNldChtYWtlVW5pcXVlPE1hcmtp
bmdDb25zdHJhaW50U2V0PigqdGhpcykpCiAgICAgLCBtX2hhbmRsZVNldCh2bSkKLSAgICAsIG1f
Y29kZUJsb2NrcyhzdGQ6Om1ha2VfdW5pcXVlPENvZGVCbG9ja1NldD4oKSkKLSAgICAsIG1faml0
U3R1YlJvdXRpbmVzKHN0ZDo6bWFrZV91bmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCisgICAg
LCBtX2NvZGVCbG9ja3MobWFrZVVuaXF1ZTxDb2RlQmxvY2tTZXQ+KCkpCisgICAgLCBtX2ppdFN0
dWJSb3V0aW5lcyhtYWtlVW5pcXVlPEpJVFN0dWJSb3V0aW5lU2V0PigpKQogICAgICwgbV92bSh2
bSkKICAgICAvLyBXZSBzZWVkIHdpdGggMTBtcyBzbyB0aGF0IEdDQWN0aXZpdHlDYWxsYmFjazo6
ZGlkQWxsb2NhdGUgZG9lc24ndCBjb250aW51b3VzbHkgCiAgICAgLy8gc2NoZWR1bGUgdGhlIHRp
bWVyIGlmIHdlJ3ZlIG5ldmVyIGRvbmUgYSBjb2xsZWN0aW9uLgpAQCAtMzA1LDggKzMwNSw4IEBA
IEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fZWRlbkFjdGl2
aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVFZGVuVGltZXIodGhpcykp
CiAgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykp
KQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9wdFJlZigqbmV3IFN0b3BJZk5lY2Vz
c2FyeVRpbWVyKHZtKSkpCi0gICAgLCBtX3NoYXJlZENvbGxlY3Rvck1hcmtTdGFjayhzdGQ6Om1h
a2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQotICAgICwgbV9zaGFyZWRNdXRhdG9yTWFya1N0
YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3NoYXJlZENv
bGxlY3Rvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9z
aGFyZWRNdXRhdG9yTWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCiAgICAg
LCBtX2hlbHBlckNsaWVudCgmaGVhcEhlbHBlclBvb2woKSkKICAgICAsIG1fdGhyZWFkTG9jayhC
b3g8TG9jaz46OmNyZWF0ZSgpKQogICAgICwgbV90aHJlYWRDb25kaXRpb24oQXV0b21hdGljVGhy
ZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkKQEAgLTMxNCw3ICszMTQsNyBAQCBIZWFwOjpIZWFwKFZN
KiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgbV93b3JsZFN0YXRlLnN0b3JlKDApOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbnVtYmVyT2ZQYXJhbGxlbFRocmVhZHMgPSBoZWFwSGVs
cGVyUG9vbCgpLm51bWJlck9mVGhyZWFkcygpOyBpIDwgbnVtYmVyT2ZQYXJhbGxlbFRocmVhZHM7
ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNpdG9yID0gbWFrZVVu
aXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRvQ1N0cmluZygiUCIsIGkgKyAxKSk7CiAgICAgICAg
IGlmIChPcHRpb25zOjpvcHRpbWl6ZVBhcmFsbGVsU2xvdFZpc2l0b3JzRm9yU3RvcHBlZE11dGF0
b3IoKSkKICAgICAgICAgICAgIHZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11dGF0b3IoKTsK
ICAgICAgICAgbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy5hcHBlbmQodmlzaXRvci5n
ZXQoKSk7CkBAIC0zMjMsMTcgKzMyMywxNyBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRHQygpKSB7CiAg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VTdG9jaGFzdGljTXV0YXRvclNjaGVkdWxlcigpKQotICAg
ICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b2NoYXN0aWNTcGFjZVRp
bWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX3NjaGVkdWxlciA9IG1h
a2VVbmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
YWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVy
ID0gbWFrZVVuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gV2Ugc2ltdWxhdGUgdHVybmluZyBvZmYgY29uY3VycmVudCBHQyBi
eSBtYWtpbmcgdGhlIHNjaGVkdWxlciBzYXkgdGhhdCB0aGUgd29ybGQKICAgICAgICAgLy8gc2hv
dWxkIGFsd2F5cyBiZSBzdG9wcGVkIHdoZW4gdGhlIGNvbGxlY3RvciBpcyBydW5uaW5nLgotICAg
ICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNTdG9wVGhlV29y
bGRNdXRhdG9yU2NoZWR1bGVyPigpOworICAgICAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8
U3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyPigpOwogICAgIH0KICAgICAK
ICAgICBpZiAoT3B0aW9uczo6dmVyaWZ5SGVhcCgpKQotICAgICAgICBtX3ZlcmlmaWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxIZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0NDeWNs
ZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbigpKTsKKyAgICAgICAgbV92ZXJpZmllciA9IG1ha2VV
bmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRpb25zOjpudW1iZXJPZkdDQ3ljbGVzVG9SZWNv
cmRGb3JWZXJpZmljYXRpb24oKSk7CiAgICAgCiAgICAgbV9jb2xsZWN0b3JTbG90VmlzaXRvci0+
b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogCkBAIC04OTksNyArODk5LDcgQEAgc2l6ZV90
IEhlYXA6OnByb3RlY3RlZE9iamVjdENvdW50KCkKIAogc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3Vu
dFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlQ291bnRT
ZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gbWFrZVVu
aXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgZm9yRWFjaFByb3RlY3RlZENlbGwoCiAgICAgICAg
IFsmXSAoSlNDZWxsKiBjZWxsKSB7CiAgICAgICAgICAgICByZWNvcmRUeXBlKCp2bSgpLCAqcmVz
dWx0LCBjZWxsKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50
U2V0PiBIZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIAogc3RkOjp1bmlxdWVfcHRy
PFR5cGVDb3VudFNldD4gSGVhcDo6b2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlQ291bnRT
ZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gbWFrZVVu
aXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNj
b3BlKCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKICAgICAgICAg
aXRlcmF0aW9uU2NvcGUsCkBAIC0yODU2LDcgKzI4NTYsNyBAQCB2b2lkIEhlYXA6OmFkZENvcmVD
b25zdHJhaW50cygpCiAgICAgICAgIH0sCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpT
ZWxkb21HcmV5ZWQpOwogICAgIAotICAgIG1fY29uc3RyYWludFNldC0+YWRkKHN0ZDo6bWFrZV91
bmlxdWU8TWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+KCp0aGlzKSk7CisgICAgbV9jb25zdHJh
aW50U2V0LT5hZGQobWFrZVVuaXF1ZTxNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludD4oKnRoaXMp
KTsKIH0KIAogdm9pZCBIZWFwOjphZGRNYXJraW5nQ29uc3RyYWludChzdGQ6OnVuaXF1ZV9wdHI8
TWFya2luZ0NvbnN0cmFpbnQ+IGNvbnN0cmFpbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcElubGluZXMuaAppbmRleCA1YjY5Y2Q1ZTM1ZjYyYjUwNjYzYTljYmRjNzM5NGQxYmQ2N2Fk
MWQ4Li5lMWViNmM3ODMzZDQ4NTg3MWE5YzUzM2NmZDQ3MzFjNzVmOWIxMWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTIxNyw3ICsyMTcsNyBAQCBpbmxp
bmUgdm9pZCBIZWFwOjpkZWNyZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRlZCgpCiBpbmxp
bmUgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBIZWFwOjptYXJrTGlzdFNldCgpCiB7
CiAgICAgaWYgKCFtX21hcmtMaXN0U2V0KQotICAgICAgICBtX21hcmtMaXN0U2V0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7CisgICAgICAgIG1f
bWFya0xpc3RTZXQgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4o
KTsKICAgICByZXR1cm4gKm1fbWFya0xpc3RTZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggNWI5YWM4OWRhYmYw
NGEwNjE0ZGMxMGZiYmFmMTZjMGY0YTQ5OWY3ZS4uMmQyYmM4ZmI5YjI3ZmU5ZjliMWI1YmU1NGNi
NzUxZjgzZTBkM2QwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBIZWFwU25hcHNob3RC
dWlsZGVyOjpidWlsZFNuYXBzaG90KCkKIAogICAgIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUgcHJl
dmVudENvbGxlY3Rpb25TY29wZShtX3Byb2ZpbGVyLnZtKCkuaGVhcCk7CiAKLSAgICBtX3NuYXBz
aG90ID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIubW9zdFJlY2Vu
dFNuYXBzaG90KCkpOworICAgIG1fc25hcHNob3QgPSBtYWtlVW5pcXVlPEhlYXBTbmFwc2hvdD4o
bV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNob3QoKSk7CiAgICAgewogICAgICAgICBtX3Byb2Zp
bGVyLnNldEFjdGl2ZVNuYXBzaG90QnVpbGRlcih0aGlzKTsKICAgICAgICAgbV9wcm9maWxlci52
bSgpLmhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAppbmRleCBiOGU0MzAxOTFlNmIxZGMy
OWFhNWMwZjEwY2RkNmU5YmIxOThmZGE5Li43YzJlZDI0MDJmZDczMDFmYzA5OWE4ZGZiNWQzYzMz
NmFlYWQxMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcApA
QCAtODcsNyArODcsNyBAQCBORVZFUl9JTkxJTkUgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1Bl
ckJsb2NrPiogSXNvQ2VsbFNldDo6YWRkU2xvdyhzaXplX3QgYmxvYwogICAgIGF1dG8mIGJpdHNQ
dHJSZWYgPSBtX2JpdHNbYmxvY2tJbmRleF07CiAgICAgYXV0byogYml0cyA9IGJpdHNQdHJSZWYu
Z2V0KCk7CiAgICAgaWYgKCFiaXRzKSB7Ci0gICAgICAgIGJpdHNQdHJSZWYgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4+KCk7CisgICAgICAgIGJp
dHNQdHJSZWYgPSBtYWtlVW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4+
KCk7CiAgICAgICAgIGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOwogICAgICAgICBtX2Jsb2Nrc1dpdGhCaXRzW2Jsb2NrSW5kZXhdID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAppbmRleCBkNTEw
MDBlYmE4N2YzMWRlNDgxYmVkMDhhNWYyZmVkOGE2MzlmZjk5Li5jZDNlN2U1NjE1NDU2NmRjZjhj
MTUxNjNhMTViNzJmMjc2OGYyOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIElzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShD
U3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzCiAg
ICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fZGlyZWN0b3J5KCZoZWFwLCBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKICAgICAsIG1fbG9jYWxB
bGxvY2F0b3IoJm1fZGlyZWN0b3J5KQotICAgICwgbV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9y
KHN0ZDo6bWFrZV91bmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAgICAsIG1f
aXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihtYWtlVW5pcXVlPElzb0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3I+KCkpCiB7CiAgICAgaW5pdGlhbGl6ZShoZWFwQ2VsbFR5cGUsIG1faXNvQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCBiM2FiZDJjNTIyNGZjZTNlNWNlMTJj
NGYxNjNlZDQ4MjNkYWU2OThlLi4xNzgwYzA4YTQ3MGYyNzYyMzE2MzdlZjY4MTE3YzlhNGUzMmMx
ZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3Ry
YWludFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0
cmFpbnRTZXQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6
OmRpZFN0YXJ0TWFya2luZygpCiAKIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZChDU3Ry
aW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZvaWQoU2xvdFZp
c2l0b3ImKT4gZnVuY3Rpb24sIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHksIENvbnN0
cmFpbnRDb25jdXJyZW5jeSBjb25jdXJyZW5jeSwgQ29uc3RyYWludFBhcmFsbGVsaXNtIHBhcmFs
bGVsaXNtKQogewotICAgIGFkZChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJh
aW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdURk1vdmUobmFtZSksIFdURk1vdmUoZnVu
Y3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20pKTsKKyAgICBhZGQo
bWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5h
bWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSwgY29uY3Vy
cmVuY3ksIHBhcmFsbGVsaXNtKSk7CiB9CiAKIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFk
ZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4MmJlM2JiYjQ0Y2I2YzU3NzZi
OGVjZjdmYTBjOTQwZDVkNWE1ODI1Li41M2E5MWEyM2MxZDg5MjkxOGVlNDI5NDFhNjVmNTI3ODY3
ZDQzMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZl
bChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzCiAKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBhcmd1
bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKLSAgICBtX2NvbnNvbGVB
Z2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92
ZShhcmd1bWVudHMpLCBleGVjKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQ
SSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYykpOwogfQog
CiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6Y291bnQoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYg
dGl0bGUpCiAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUaXRsZSA9PSB0aXRsZSkgewogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2Nh
bGl6YXRpb24/CiAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5
KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0cmluZygiUHJv
ZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAgICAgICAgICBt
X2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmls
ZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgICAgICAgICAgbV9j
b25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJiB0aXRsCiAKICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBm
b3IgbG9jYWxpemF0aW9uPwogICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8g
Ik5vIHByb2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAi
XCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29u
c29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogfQogCiB2
b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c3RhcnRDb25zb2xlUHJvZmlsZSgpCkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnNjcmVl
bnNob3QoRXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKIHZvaWQgSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50Ojp3YXJuVW5pbXBsZW1lbnRlZChjb25zdCBTdHJpbmcmIG1ldGhv
ZCkKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ldGhvZCArICIgaXMgY3VycmVudGx5IGlnbm9y
ZWQgaW4gSmF2YVNjcmlwdCBjb250ZXh0IGluc3BlY3Rpb24uIjsKLSAgICBtX2NvbnNvbGVBZ2Vu
dC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIG1lc3NhZ2UpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29u
c29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKaW5kZXggYzhkYTUyZWZkMTNjNDkxY2NhZTYzOTVlMDc0YzQ2NDRlNzBjYzBh
Ny4uYmRiZDMxZDYzMTJiMmMwNTZkN2M0NzgxNWRjNjE1ZDEyMjZkOTI3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhp
cywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihtYWtlVW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVk
U2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdh
dGNoOjpjcmVhdGUoKSkKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIoZ2xvYmFsT2JqZWN0KQog
ICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCkBAIC03MSwx
MSArNzEsMTEgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoKIHsKICAgICBhdXRvIGNvbnRleHQg
PSBqc0FnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBjb25zb2xl
QWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4dCk7CiAgICAg
bV9jb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURk1vdmUoY29uc29sZUFnZW50KSk7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwor
ICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50PihtX2NvbnNvbGVBZ2VudCk7CiAKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQo
KTsKIH0KQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6cmVwb3J0QVBJRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZQogICAgICAg
ICAgICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBT
dHJpbmcoKSwgMCwgMCk7CiAgICAgfQogCi0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
V1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgV1RGTW92ZShj
YWxsU3RhY2spKSk7CiB9CiAKIENvbnNvbGVDbGllbnQqIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29uc29sZUNsaWVudCgpIGNvbnN0CkBAIC0yODAsNyArMjgwLDcgQEAgSW5z
cGVjdG9yQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlSW5z
cGVjdG9yQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkgewogICAgICAgICBh
dXRvIGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGluc3BlY3RvckFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oY29udGV4dCk7CisgICAgICAg
IGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0
KTsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAg
ICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwogICAgIH0KQEAg
LTI5MSw3ICsyOTEsNyBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50JiBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQoKQogewogICAgIGlmICghbV9k
ZWJ1Z2dlckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7
Ci0gICAgICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7CisgICAgICAgIGF1
dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50
Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7CiAgICAgICAgIG1fZGVidWdnZXJBZ2VudCA9IGRl
YnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fY29uc29sZUNsaWVudC0+c2V0SW5zcGVjdG9y
RGVidWdnZXJBZ2VudChtX2RlYnVnZ2VyQWdlbnQpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQo
V1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CkBAIC0zMjcsMjAgKzMyNywyMCBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAKICAgICBl
bnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4oY29udGV4dCkp
OwogCiAgICAgZW5zdXJlRGVidWdnZXJBZ2VudCgpOwogCi0gICAgYXV0byBzY3JpcHRQcm9maWxl
ckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
Pihjb250ZXh0KTsKKyAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtlVW5pcXVl
PEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRleHQpOwogICAgIG1fY29uc29sZUNs
aWVudC0+c2V0SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChzY3JpcHRQcm9maWxlckFnZW50
UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShzY3JpcHRQcm9maWxlckFn
ZW50UHRyKSk7CiAKLSAgICBhdXRvIGhlYXBBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9ySGVhcEFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGhlYXBBZ2VudCA9IG1ha2VVbmlxdWU8
SW5zcGVjdG9ySGVhcEFnZW50Pihjb250ZXh0KTsKICAgICBpZiAobV9jb25zb2xlQWdlbnQpCiAg
ICAgICAgIG1fY29uc29sZUFnZW50LT5zZXRJbnNwZWN0b3JIZWFwQWdlbnQoaGVhcEFnZW50Lmdl
dCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShoZWFwQWdlbnQpKTsKIAotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudD4o
Y29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0
QXVkaXRBZ2VudD4oY29udGV4dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFnZW50LmNwcAppbmRleCBjMGI1YzlhYWQxOGMwOGNlZGRjMzY5NjZiZjA0Njg1MTQxNzYy
NjQzLi40MTdlNzc1ZmI4MDI0OWMwNDAzMTM3YTgyNzgyMTM3MzI3ZDMzMmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QWdlbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSW5zcGVj
dG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiSW5zcGVjdG9yIl9zKQogICAgICwgbV9lbnZpcm9ubWVudChjb250
ZXh0LmVudmlyb25tZW50KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAK
aW5kZXggN2VkYmM4MDY2MGYzNmQ2YTgxYWE5MWZiOGZhM2ZkZGRlZGFlNmYyNi4uNWQyNGM2OWU2
YmY0NWQ3MmZiMGJkYTUzYjRjNDU3NTk4NjEzY2JjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZXhwaXJlQ29uc29s
ZU1lc3NhZ2VzU3RlcCA9IDEwOwogSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25z
b2xlQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KCJDb25zb2xlIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDb25zb2xlRnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3Bh
dGNoZXIoQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcykpCiB7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnN0YXJ0VGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcmIGxhYmUKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIC8vIEZJWE1F
OiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAg
IFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGFscmVh
ZHkgZXhpc3RzIik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
bWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgfQogfQogCkBAIC0xNTks
MTQgKzE1OSwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6bG9nVGltaW5nKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLAogICAgIGlmIChpdCA9PSBtX3Rp
bWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250
ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmlu
ZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcs
IFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTW9u
b3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25kcyBlbGFwc2VkID0g
TW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNl
ZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92
ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1v
dmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcmIGxhYmVsKQpAQCAtMTg0LDE0ICsxODQsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwK
ICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBh
biBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcg
d2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlz
dCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7Cisg
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwogICAg
IFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwogICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKLSAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVi
dWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92
ZShjYWxsU3RhY2spKSk7CiAKICAgICBtX3RpbWVzLnJlbW92ZShpdCk7CiB9CkBAIC0yMjQsNyAr
MjI0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIC8vIEZJWE1FOiBXZWIgSW5zcGVjdG9y
IHNob3VsZCBoYXZlIGEgYmV0dGVyIFVJIGZvciBjb3VudGVycywgYnV0IGZvciBub3cgd2UganVz
dCBsb2cgYW4gdXBkYXRlZCBjb3VudGVyIHZhbHVlLgogCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKGxhYmVsLCAiOiAiLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RGVidWcs
IG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKKyAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RGVidWcs
IG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbGFiZWwKICAgICBpZiAoaXQgPT0gbV9jb3VudHMuZW5kKCkpIHsKICAgICAgICAg
Ly8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8K
ICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJDb3VudGVyIFwiIiwgbGFiZWws
ICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6
bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGU1ZjI0ODJh
M2NhYTA4YWE4MTY0NWZhOGM3OWM1MjliYTQzODBkMGEuLjI1ZjFkM2U3MjgxYzZiMGZiODMzMGZm
MTM3ODczNjQzZWJjNjBlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHN0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0
aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvCiAKIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEZWJ1Z2dlciJfcykKLSAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVu
aXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fc2NyaXB0RGVi
dWdTZXJ2ZXIoY29udGV4dC5lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCBiNTM1ZmY2MTkyYWFjZWZjNzliNGY2Y2Q5M2Rm
MTIwMWEzNzE0OGFjLi41ODJjMzVkMzY3ZGZlMWU0ZjdkYzRlOWE1Njg0ZGNhMmE0ZTNiNGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiBJbnNwZWN0b3JIZWFwQWdlbnQ6Okluc3BlY3RvckhlYXBBZ2VudChBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkhlYXAiX3MpCiAgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SGVhcEZyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihIZWFwQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fZW52
aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggNTZmYzFiNzk4ZGEwZWVlZWEwMjMzMWVkNTI1NGE5
NTAyMTAwNTg3NC4uY2JhZDgxZDY5OTQ0MGE3MzNiMGFmMDQxNjk0YTg2Y2E5ZTZlOGVmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQ6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJTY3JpcHRQcm9maWxlciJfcykKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UHJvZmlsZXJGcm9udGVuZERp
c3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIobWFrZVVuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFNjcmlwdFByb2Zp
bGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKSkKICAgICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRh
cmdldEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmNwcAppbmRleCAzYWNhNDEwNTEwZmU1MDBmMDViZmJhYWM0Njdm
ZmRhY2NiMjFjNTI0Li45MzUwNjhjN2FlMTE5NzEwNTQ0YzFmNzY3OTgyMmRmYjY2ZTU2Yjg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JUYXJnZXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6SW5zcGVjdG9yVGFyZ2V0QWdl
bnQoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciYgYmFj
a2VuZERpc3BhdGNoZXIpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdldCJfcykKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFyZ2V0RnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpKQogICAg
ICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IGUzMjlhM2I0M2NkNjA5NjVkOWY3Nzg1YTQ4MjIwMTFhYjM2
NmZhNTMuLjliM2YzNzlkNWU1YTQ5MGRiZTM3NWM3MmFjOTlmYTcyMGI5YWNjZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCBJ
bmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0
Rm9yRXZhbChFcnJvclN0cmluZyYgZQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxT
dGFjaygmc3RhdGUpLCAwKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VU
eXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2soJnN0YXRlKSwgMCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAppbmRleCAxNDVkMDUxNmI4ZTM5Njg4Nzhk
OTJjYjU5NGFhNTk5YmFmYTM5ZDMyLi4zYjdjM2UyMWQzMWMxYzJmNWI2ZDFiYTBjMTZmNDg4ODNl
NmNmMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudDo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSlNBZ2VudENvbnRleHQmIGNvbnRl
eHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkKLSAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtl
VW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fZ2xvYmFsT2Jq
ZWN0KGNvbnRleHQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXggNzEwMTY2OGE5
N2M4NzQ0ODEyZjQ2NTZmMTZlMGI3ZGQ1OTRmMWE2MC4uY2M5NjQwMDU2NzlkYmZjZDRmZTAyOTA2
YmM5M2MyM2IyYzgyZWNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC0xNDQsMTEgKzE0NCwxMSBAQCBPcHRpb25hbDxD
b25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQo
UGxhdGZvcm1Tb2NrZQogCiAgICAgU29ja2V0OjpzZXR1cChzb2NrZXQpOwogCi0gICAgYXV0byBj
b25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+KCk7CisgICAg
YXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+KCk7CiAKICAg
ICBjb25uZWN0aW9uLT5wb2xsID0gU29ja2V0OjpwcmVwYXJlUG9sbGluZyhzb2NrZXQpOwogICAg
IGNvbm5lY3Rpb24tPnNvY2tldCA9IHNvY2tldDsKLSAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwor
ICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IG1ha2VVbmlxdWU8TWVzc2FnZVBhcnNlcj4oaWQsIFNv
Y2tldDo6QnVmZmVyU2l6ZSk7CiAgICAgY29ubmVjdGlvbi0+cGFyc2VyLT5zZXREaWRQYXJzZU1l
c3NhZ2VMaXN0ZW5lcihbdGhpc10oQ29ubmVjdGlvbklEIGlkLCBWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSB7CiAgICAgICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKICAgICAgICAgICAgIG1faW5z
cGVjdG9yQ2xpZW50LT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoaWQsIFdURk1vdmUoZGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
c29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQuaAppbmRleCA3MGYyZDdhNDgxMzQ3MGY4MTM3MzJiM2I5NzdiNWI3M2E0MTk2MGI1Li4zMjA0
MDBmZDViM2NkYjJjNGIxNWRiZGM5MzA0NmJiZmQwMGNhZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludD4gY3JlYXRlKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQqIGluc3Bl
Y3RvckNsaWVudCwgY29uc3QgY2hhciogbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PihpbnNwZWN0b3JDbGll
bnQsIG5hbWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKICAgICB9CiAKICAgICBSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludChSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50Kiwg
Y29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVt
cGxhdGVzLnB5CmluZGV4IDY2ZjlmZDJkYzQ3MGQyMWY0ZGU1N2RlODI4YzE1OTQ0NTY3MTIzYmIu
LmZhNTA2YTYxZTk5YjM5YTg3NDZlMGNlNWJlMGQ2YWJjMGIwYTRlOTQgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTEzOCw4ICsxMzgs
OCBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzOgogICAgIFtfJHt2YXJpYWJsZU5hbWVQ
cmVmaXh9SGFuZGxlciByZWxlYXNlXTsKICAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxl
ciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
ciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7ZG9tYWluTmFt
ZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
cj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0
ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1w
bGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNv
bi1yZXN1bHQKaW5kZXggM2U5OTE0NzFkMzI0YTM1NTE2OTI4ZTQzZTk0MTA4YjQ0ODczMTIwOC4u
YjA0YTg1MGRmMTE1MmQ2ZmRhNTk2MmRmMzdjMmU0OWUxZWJkOTVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9k
ZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRp
b25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC03NzEsOCArNzcxLDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmtIYW5kbGVyIHJlbGVhc2VdOwog
ICAgIF9uZXR3b3JrSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVy
bmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3Ms
ICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5h
cHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRleCBhNzE0ZmIx
MzE4MzI5M2QxODMyZmM1ODFlNmM1MzM3ODY4MDJkNTcyLi5jMGUxNzMzN2ZkNGE3OTg4MzBlODVk
MjllODVkOGVkMzAyMGNhNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5j
LWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0
dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTE4OSw4ICsxMTg5LDggQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsKICAgICBfZGF0YWJh
c2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29u
dHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0
ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9s
bGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBw
ZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29u
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdAppbmRleCA1M2JkNTUzYjdiYTc0ZGRkMjllMjU1MWNjMGI4NGZhNDMw
NzE0Y2FlLi5hZWQwN2I3NWU4Yjg4OGRkNTkzMzkwYWZhMjFkMmM4OTBkZGZjNTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0xMDY4LDggKzEwNjgsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9k
YXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2Nv
bnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVy
LT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFp
bi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKaW5kZXggNjc4YzZhYWE4NWFjYTM4NDI0OGI5OTI5
MDM0Y2NmMDk0MTE4ZGVlNy4uMWFkY2JkM2ZkMmFjYjljYTE0NjFjMzA4ZTQ1YzQ5MmVjM2UwMzI0
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CkBAIC03ODIsOCArNzgyLDgg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkFIYW5kbGVyIHJlbGVh
c2VdOwogICAgIF9kb21haW5BSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRv
IGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEb21h
aW5BQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFp
bkEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWlu
QUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
bWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5BQmFja2VuZERpc3Bh
dGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5BIl9zLCAq
X2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9s
bGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApAQCAt
ODAwLDggKzgwMCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kb21haW5C
SGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWluQkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxEb21haW5CQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlzcGF0
Y2hlcj4+KCJEb21haW5CIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0
Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0lu
c3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWlu
QkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5CQmFja2VuZERpc3BhdGNoZXI+Pigi
RG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsK
ICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQt
c2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNp
emVzLmpzb24tcmVzdWx0CmluZGV4IGY2YzVlZGNjYjkyODVhZjQ4YzZkZWI5ODQyMmE3MjM2Yjg3
MDJkNGUuLmEzZTI3ZGYzOGNlYWZiYjNjNDUxZTEzYjYxMTllMmU1NGMzZDJhOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3Vs
dApAQCAtMTAzOSw4ICsxMDM5LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBb
X25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVyID0gW2hhbmRs
ZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwot
ICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFr
ZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7
CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKQEAgLTEwNTcsOCArMTA1Nyw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrM0hhbmRsZXIgcmVsZWFzZV07CiAgICAg
X25ldHdvcmszSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmszIl9z
LCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8g
YWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtl
VW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2VuZERpc3BhdGNo
ZXIsIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazMiX3MsICpf
Y29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xs
ZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVz
Lmpzb24tcmVzdWx0CmluZGV4IDRkOTRhZDk0YWQ4NTFmNTg1ZjQ4ZTkxMTVlM2JlY2NmOTdiN2Fk
NWYuLmJkNmI5ODE1Zjc2MDFhZTFkMGZlZGMyNmM0NTQzNWJhNDNmNjFlNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpz
b24tcmVzdWx0CkBAIC04MTUsOCArODE1LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICBbX2NvbW1hbmREb21haW5IYW5kbGVyIHJlbGVhc2VdOwogICAgIF9jb21tYW5kRG9tYWlu
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERp
c3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPj4oIkNvbW1h
bmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9y
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVy
bmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1v
dmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9t
YWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9t
YWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDZmNmJmMzYyNTdhZTll
ZWYwNWYxYmYyNjczZTYxMTNmM2JjZTg5ODAuLjVjYmNjYmZlZDUzYzRiZjM0MTM2Zjc2OGVkYTU5
ZmZiNDkwNzBiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0
dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgt
ZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTc5OCw4ICs3OTgsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazFIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9u
ZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2Nv
bnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVy
LT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9l
eHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggM2U5OTE0NzFkMzI0
YTM1NTE2OTI4ZTQzZTk0MTA4YjQ0ODczMTIwOC4uYjA0YTg1MGRmMTE1MmQ2ZmRhNTk2MmRmMzdj
MmU0OWUxZWJkOTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CkBAIC03NzEsOCArNzcxLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAg
ICBbX25ldHdvcmtIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrSGFuZGxlciA9IFtoYW5k
bGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwot
ICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0Jh
Y2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVu
aXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0
ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDA1Zjcw
ZjFhZWFmNGM0ZDlmNTJjMTA2YWI2NmRiOWVjZDJlYWI4YmUuLjk5ZThhNDdmZDVlMGMyMDdlNzI3
Yjg2ZmUyMzYxOTA1N2I2NTAyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTY1
NCw3ICs2NTQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpbGF0
aW9uRWZmb3J0IGVmZm9ydCkKICAgICB9CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cERpc2Fzc2VtYmx5KCkgfHwgKG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBPcHRpb25z
OjpkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJvZmlsZXIoKSkpKQotICAgICAgICBtX2Rpc2Fzc2Vt
YmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGlzYXNzZW1ibGVyPihtX2NvZGVCbG9jayk7Cisg
ICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29k
ZUJsb2NrKTsKICAgICBpZiAoVU5MSUtFTFkobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKSkg
ewogICAgICAgICBtX2NvbXBpbGF0aW9uID0gYWRvcHRSZWYoCiAgICAgICAgICAgICBuZXcgUHJv
ZmlsZXI6OkNvbXBpbGF0aW9uKApAQCAtOTAxLDcgKzkwMSw3IEBAIENvbXBpbGF0aW9uUmVzdWx0
IEpJVDo6bGluaygpCiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVy
LmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmln
aW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9D
b2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKSk7CisgICAgICAgIG1fY29kZUJsb2Nr
LT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZN
b3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsKICAgICAKICAg
ICBDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJlc3VsdCA9IEZJTkFMSVpFX0NPREUoCiAgICAgICAg
IHBhdGNoQnVmZmVyLCBKU0VudHJ5UHRyVGFnLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRU
aHVua3MuY3BwCmluZGV4IDE2YmY3MGQ4MDE3NDQyMzA1MDJhMmQ4YjE5N2NkNDAxYzgwMjRmMzgu
LjViZGY4MzA0NjUwNDM5OTRlMTFiYWZmZWQ1MmJiNzg1YzFiYTBhNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBKSVRUaHVua3M6OkpJVFRodW5rcygpCi0gICAgOiBtX2hvc3RGdW5jdGlvblN0dWJN
YXAoc3RkOjptYWtlX3VuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQorICAgIDogbV9ob3N0
RnVuY3Rpb25TdHViTWFwKG1ha2VVbmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4oKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZTM4OGZiMGU2MjcwOGIz
NGVjYjk3MWU5NDZiNDZiMTkzYzRjYWUzYi4uOGY5YTg2NGU0ZmU4NjI2YTFmZWZjMGMzMDdjOWU0
NjU2NjJmNWE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xMDky
LDcgKzEwOTIsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgc3RkOjp1bmlxdWVf
cHRyPENhbGxGcmFtZVNodWZmbGVyPiBmcmFtZVNodWZmbGVyOwogICAgIGlmIChjYWxsTGlua0lu
Zm8uZnJhbWVTaHVmZmxlRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm8uaXNU
YWlsQ2FsbCgpKTsKLSAgICAgICAgZnJhbWVTaHVmZmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bEZyYW1lU2h1ZmZsZXI+KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgp
KTsKKyAgICAgICAgZnJhbWVTaHVmZmxlciA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZXI+
KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKTsKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQogICAgICAgICAvLyBXZSB3b3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0
IHRoZSBjYWxsZWUgaXMgYSBjZWxsLCBhbmQgd2UgY2FuCiAgICAgICAgIC8vIHVzZSB0aGUgYWRk
aXRpb25hbCByZWdpc3RlciB0aGlzIGJ1eXMgdXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGM2
ODE3ZTA0NWY1NjdlOWVkM2EwZTU5NTdkMjVlNjM3OTg1NjVmYWUuLjVhYjAwZWY3ZmU1OTMxZjc0
NjI0ZmU3YzFmMWIwYWM0NjcxYzAyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yOTY5LDcg
KzI5NjksNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sIGlz
V29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKIAogICAgICAgICBpZiAob3B0aW9ucy5tX3Byb2ZpbGUgJiYgIXZtLm1fcGVyQnl0ZWNvZGVQ
cm9maWxlcikKLSAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CisgICAgICAgICAgICB2bS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXIgPSBtYWtlVW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOwogCiAg
ICAgICAgIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBvcHRpb25zLm1fYXJndW1lbnRzKTsK
ICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKG9wdGlvbnMu
bV9lbmFibGVSZW1vdGVEZWJ1Z2dpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IGY4ZGJlNzE5NmYxMTE3MTZkMGE1OGY3ZjU3ZTNmOGY2N2I3YTJhY2YuLmEx
NjRmZDkwM2YzNmU5NDIwYTczNjRlZjQyN2M2YzJmZmUzMjJjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBQYXJzZXI8TGV4ZXJU
eXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlCiAgICAgLCBtX2ltbWVkaWF0ZVBhcmVudEFsbG93c0Z1bmN0aW9uRGVjbGFyYXRp
b25JblN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fZGVidWdnZXJQYXJzZURhdGEoZGVidWdnZXJQ
YXJzZURhdGEpCiB7Ci0gICAgbV9sZXhlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGV4ZXJUeXBlPih2
bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOworICAgIG1fbGV4ZXIgPSBtYWtlVW5pcXVlPExl
eGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKICAgICBtX2xleGVyLT5zZXRD
b2RlKHNvdXJjZSwgJm1fcGFyc2VyQXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5l
ID0gc291cmNlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCk7CiAgICAgbV90b2tlbi5tX2xvY2F0
aW9uLnN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCA2OWFhMGJjMTkwYWY2NzgzZDg5MjhjMzU5YWEzYjEwYmIx
ZmJkODczLi4wYTVlZGU0Yjg0MjVjZmQxYjMxN2M3NmM1MWVhNzM3ODE3ODBiNTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3Qg
U2NvcGUgewogICAgIHZvaWQgcHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxhYmVsLCBib29s
IGlzTG9vcCkKICAgICB7CiAgICAgICAgIGlmICghbV9sYWJlbHMpCi0gICAgICAgICAgICBtX2xh
YmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8TGFiZWxTdGFjaz4oKTsKKyAgICAgICAgICAgIG1fbGFi
ZWxzID0gbWFrZVVuaXF1ZTxMYWJlbFN0YWNrPigpOwogICAgICAgICBtX2xhYmVscy0+YXBwZW5k
KFNjb3BlTGFiZWxJbmZvIHsgbGFiZWwtPmltcGwoKSwgaXNMb29wIH0pOwogICAgIH0KIApAQCAt
MTk0MSw3ICsxOTQxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICAgICAgZW5kTG9j
YXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgp
OwogICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1cnJlbnRPZmZz
ZXQoKTsKICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gZW5kTG9jYXRpb24uc3RhcnRPZmZz
ZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0gICAgICAgIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwKKyAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuZExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnRDb2x1bW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFy
ZW5hLmgKaW5kZXggZGYxN2JlNTM2NjNlN2NiN2I3MGM0ODc3MGY5YTA1MjljZjMzYTdlZS4uNDEw
MDA2ZDkyNzUxY2U5NmI5MmNiOTYyNTYzNWVhN2NmNzhlYzRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtMTgwLDcgKzE4MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyQXJlbmEmIGlkZW50aWZpZXJBcmVuYSgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSAoIW1faWRlbnRpZmllckFyZW5hKSkKLSAg
ICAgICAgICAgICAgICBtX2lkZW50aWZpZXJBcmVuYSA9IHN0ZDo6bWFrZV91bmlxdWU8SWRlbnRp
ZmllckFyZW5hPigpOworICAgICAgICAgICAgICAgIG1faWRlbnRpZmllckFyZW5hID0gbWFrZVVu
aXF1ZTxJZGVudGlmaWVyQXJlbmE+KCk7CiAgICAgICAgICAgICByZXR1cm4gKm1faWRlbnRpZmll
ckFyZW5hOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAppbmRleCAwNTAzMmI1ZDEzMTA4YzBlYjYy
MGU5ZGFlODIwY2VmN2FjNzUzMThjLi4zNTcxMWI1ZmE2NDI2OWU2Nzc0YWI3MGUyMWRkNTAyNTE2
OWM4ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJDb21waWxhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyQ29tcGlsYXRpb24uY3BwCkBAIC03OSw3ICs3OSw3IEBAIEV4ZWN1dGlvbkNvdW50ZXIq
IENvbXBpbGF0aW9uOjpleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJiBvcmln
aW4pCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4ZWN1dGlvbkNvdW50ZXI+JiBjb3VudGVyID0g
bV9jb3VudGVycy5hZGQob3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KCFjb3VudGVyKQotICAgICAgICBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFeGVjdXRpb25D
b3VudGVyPigpOworICAgICAgICBjb3VudGVyID0gbWFrZVVuaXF1ZTxFeGVjdXRpb25Db3VudGVy
PigpOwogCiAgICAgcmV0dXJuIGNvdW50ZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKaW5kZXggNzBjNzE0NzMzMjQ0NDA4MDc4NzkzNDAxOTg2NjczYzk3
ZTFlYTgzZC4uYTY0ZGUzZmRkNjYyNTUxOGFjNWQxMjZjZWFjNzhiNmYyMTI1YTRmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IGdldFN0YWNrVHJhY2UoRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIEpTT2JqCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgc2l6
ZV90IGZyYW1lc1RvU2tpcCA9IHVzZUN1cnJlbnRGcmFtZSA/IDAgOiAxOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNr
RnJhbWU+PiBzdGFja1RyYWNlID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7CiAg
ICAgdm0uaW50ZXJwcmV0ZXItPmdldFN0YWNrVHJhY2Uob2JqLCAqc3RhY2tUcmFjZSwgZnJhbWVz
VG9Ta2lwLCBnbG9iYWxPYmplY3QtPnN0YWNrVHJhY2VMaW1pdCgpLnZhbHVlKCkpOwogICAgIGlm
ICghc3RhY2tUcmFjZS0+aXNFbXB0eSgpKQogICAgICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4
ZWMgPT0gdm0udG9wQ2FsbEZyYW1lIHx8IGV4ZWMtPmlzR2xvYmFsRXhlYygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDQzOWUyMDliMGE1ZjhmYjgyOWI3OTE5NzU3NDg4YzQxNTYzNDI3M2YuLmVmMmU4MzA4NzQx
Yjg4NTJlNTYyMzI2Zjk2MjU3YzlkMDI5MzVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTEwLDcgKzExMCw3
IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29k
ZSgKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5z
dXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOwotICAgIGF1dG8g
cmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgIGF1dG8gcmFyZURh
dGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJhcmVEYXRhLT5tX2xpbmVDb3VudCA9
IGxpbmVDb3VudCgpOwogICAgIHJhcmVEYXRhLT5tX2VuZENvbHVtbiA9IGVuZENvbHVtbigpOwog
ICAgIHJhcmVEYXRhLT5tX3BhcmFtZXRlcnNTdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydE9m
ZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5oCmluZGV4IDQ2MjM2NDFjNTk4ZTNlYmI1ZmJhNmJjMDIzNzI2NGU1MDUyZmQxNzkuLjUy
YjI4YjEzYzdlMmUyNWQyMWJiYmFiM2FkMzFkNWI2YmMwY2RlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKQEAgLTE1Niw3ICsxNTYs
NyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhOjpBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0
Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaAogaW5saW5lIFdhdGNocG9pbnQqIEZ1bmN0aW9u
UmFyZURhdGE6OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghaGFzQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9p
bnQoKSk7Ci0gICAgbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+KHRoaXMpOwor
ICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgPSBtYWtlVW5pcXVlPEFs
bG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0aGlzKTsKICAgICByZXR1cm4gbV9h
bGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDFhNTdl
ZjNkY2ZlOTE5ZTcwYjM3ZmE3ZTM0ODU0YTEzZTkwNTNmYWUuLmNjODc3NjdmMTA4YmNjNDgzYjMx
NWYxMTJmYTljNTM0N2Y1MjAxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ3Nyw4ICs0NzcsOCBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2RlYnVnZ2VyID0gMDsKIAogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlz
KTsKLSAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZT4oKnRoaXMpOworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlciA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI+KCp0
aGlzKTsKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZT4oKnRoaXMpOwogICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+aW5pdCgp
OwogICAgIG1fY29uc29sZUNsaWVudCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y29uc29sZUNs
aWVudCgpOwogI2VuZGlmCkBAIC0xMTQ1LDU3ICsxMTQ1LDU3IEBAIGNhcGl0YWxOYW1lICMjIENv
bnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0
YWxOYW1lCiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlv
biA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KGFycmF5SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5l
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5l
eHQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQtPmlu
c3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5UHJvdG90eXBl
KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX2FycmF5
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAg
ICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQp
OwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0
YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJhdG9yUHJvdG90eXBl
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90
eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21hcEl0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcEl0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAg
ICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRj
aHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sKTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHNldEl0
ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3Nl
dEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAg
ICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAg
ICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAg
IH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNl
dHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVy
YXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1f
c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFByb3RvdHlwZVN5
bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwg
bV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBl
U3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAg
ICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVX
YXRjaHBvaW50KG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlO
YW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJp
bmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wpOwotICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0
cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsK
ICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2
ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+c2V0
KTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOworICAgICAgICBtX21h
cFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fbWFwU2V0V2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2lu
dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlw
ZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwotICAgICAgICBtX3NldFByb3RvdHlw
ZUFkZFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1f
c2V0QWRkV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9
IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsKICAg
ICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
QEAgLTEyMDYsNyArMTIwNiw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5h
bWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgIHRo
aXMtPnN5bWJvbFByb3RvdHlwZSgpOwogCiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3RvdHlwZSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZyk7Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9T
dHJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBt
X251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9T
dHJpbmdXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX251bWJl
clRvU3RyaW5nV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgbV9udW1iZXJQcm90b1RvU3RyaW5nRnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclByb3RvdHlwZS0+
Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAgICB9CkBAIC0x
OTMyLDEwICsxOTMyLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNw
ZWNpZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FTU0VSVCghbV9h
cnJheVNwZWNpZXNXYXRjaHBvaW50LmlzQmVpbmdXYXRjaGVkKCkpOwogICAgIG1fYXJyYXlTcGVj
aWVzV2F0Y2hwb2ludC50b3VjaCh2bSwgIlNldCB1cCBhcnJheSBzcGVjaWVzIHdhdGNocG9pbnQu
Iik7CiAKLSAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVz
V2F0Y2hwb2ludCk7CisgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9
IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5U3BlY2ll
c1dhdGNocG9pbnQpOwogICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQt
Pmluc3RhbGwodm0pOwogCi0gICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3Bl
Y2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNX
YXRjaHBvaW50KTsKICAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5z
dGFsbCh2bSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDA0N2MxNjY1M2U3MWIxYTgwNmJkOWZjN2Q1NjY0M2E1Zjk4OGYxMWUu
Ljg0NTM1Y2E1YzYwMGNlY2JkOGI0NzhmNjViNTNjZDA3ZTM2YTgzOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTIxLDcgKzUyMSw3
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIHsKICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UmFy
ZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0
UmFyZURhdGE+KCk7CiAgICAgfQogICAgICAgICAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCAxYWYwMDM2NTNjYjhj
M2RlNjQzZjhjNDkxMjdhYmIzZTU1MTNkNWFkLi4zMjdmZWQwNmM2N2E1YmYxMTI1MWY5ZjRkZWQ4
MzllNzAzM2M4YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNS
dW5Mb29wVGltZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1h
bmFnZXI6OlBlclZNRGF0YTo6c2V0UnVuTG9vcChNYW5hZ2VyKiBtYW5hZ2VyLCBDRlJ1bkxvb3BS
CiAjZWxzZQogSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVyVk1EYXRhKE1h
bmFnZXImIG1hbmFnZXIpCiAgICAgOiBydW5Mb29wKCZSdW5Mb29wOjpjdXJyZW50KCkpCi0gICAg
LCB0aW1lcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PigqcnVuTG9v
cCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJh
Y2spKQorICAgICwgdGltZXIobWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5hZ2VyPj4oKnJ1
bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZUNh
bGxiYWNrKSkKIHsKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIHRpbWVyLT5zZXRQcmlv
cml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkphdmFzY3JpcHRUaW1lcik7CkBAIC0xNzIsNyAr
MTcyLDcgQEAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXImIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2Vy
OjpzaGFyZWQoKQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKFZN
JiB2bSkKIHsKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlclZNRGF0YT4oKnRo
aXMpOworICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UGVyVk1EYXRhPigqdGhpcyk7CiAjaWYg
VVNFKENGKQogICAgIGRhdGEtPnNldFJ1bkxvb3AodGhpcywgdm0ucnVuTG9vcCgpKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBI
YXNoVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmgKaW5kZXggNWYwNzhkMmE1MDlkMmI0NDIwMGY3YTRhZjM4ODEyNDZjYjJkNThhNy4u
NTI5MDIwZGYwZjFkYzJhMjg2ZjgwMGFiYWQ5ZDdlYjdkM2Y4ZWU5NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCkBAIC00
NDgsNyArNDQ4LDcgQEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6OmdldERl
bGV0ZWRPZmZzZXQoKQogaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2RlbGV0ZWRPZmZzZXRzKQot
ICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVy
dHlPZmZzZXQ+PigpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFrZVVuaXF1ZTxWZWN0
b3I8UHJvcGVydHlPZmZzZXQ+PigpOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZz
ZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFi
bGUuY3BwCmluZGV4IDU5ZWM0MWM0OWFlODJmNDdmNjk4NjgwNmRkNjE0Mzk0NGE0MmI1ZDYuLmIx
YmI2NzkxOTkyNjVhZmNiY2NjODM2NTZkOGQ1NmZjNWI0YTM1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCBjb25zdCBQcm9wZXJ0eVRhYmxl
JiBvdGhlcikKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KICAgICBW
ZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxl
dGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAg
bV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0
Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CiB9
CiAKIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25lZCBpbml0aWFs
Q2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQpAQCAtMTA3LDcgKzEwNyw3IEBA
IFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25lZCBpbml0aWFsQ2Fw
YWNpdHksIGNvbnN0IFByb3BlcnR5VGFiCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0
cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0
cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9m
ZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAgICAgbV9kZWxl
dGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90aGVyRGVs
ZXRlZE9mZnNldHMpOwogfQogCiB2b2lkIFByb3BlcnR5VGFibGU6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggMDcxYjFm
NjYzMTVjZTNhZThkY2ZlMTc1ZmY2MzY2ZjVjNjMyYWZmYy4uNzBlNTkzZDUzZWJkZDgxZDhjMDgx
M2EyOTc3MGU5NDBjZTA0MTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZWdFeHA6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKIAogICAgIG1fbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3VicGF0dGVybnM7
CiAgICAgaWYgKCFwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMuaXNFbXB0eSgpIHx8ICFwYXR0
ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9yYXJl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEg
PSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICBtX3JhcmVEYXRhLT5tX2NhcHR1cmVH
cm91cE5hbWVzLnN3YXAocGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzKTsKICAgICAgICAgbV9y
YXJlRGF0YS0+bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LnN3YXAocGF0dGVybi5tX25hbWVkR3Jv
dXBUb1BhcmVuSW5kZXgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmgKaW5kZXggMzljZGQ5MTE2ZTAyN2UzZGI2MDQwZGJkOGZlNTI3MGQyZTk5NWQ4ZC4uZThkYTg1
MjZlN2M3ZTgxZmJlYTc1Yzg4OTg4MTYxYjlhZjg5MTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBjbGFzcyBSZWdFeHAgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBlbnN1cmVSZWdFeHBK
SVRDb2RlKCkKICAgICB7CiAgICAgICAgIGlmICghbV9yZWdFeHBKSVRDb2RlKQotICAgICAgICAg
ICAgbV9yZWdFeHBKSVRDb2RlID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyOjpZYXJyQ29kZUJsb2Nr
PigpOworICAgICAgICAgICAgbV9yZWdFeHBKSVRDb2RlID0gbWFrZVVuaXF1ZTxZYXJyOjpZYXJy
Q29kZUJsb2NrPigpOwogICAgICAgICByZXR1cm4gKm1fcmVnRXhwSklUQ29kZS5nZXQoKTsKICAg
ICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5jcHAKaW5kZXggMjM3ZDdkZTY4OGRkMjA3NjUwMjAxMjE2Y2QwZDU0NjgwYzQ5
NmVhYS4uZWU2ZTE4Y2VmZGJlNzlmNGJjMmViMjE5N2ZmNTM5MTA0ZTFmNzk5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKQEAg
LTQ2OSw3ICs0NjksNyBAQCBhdXRvIFNjcmlwdEV4ZWN1dGFibGU6OmVuc3VyZVRlbXBsYXRlT2Jq
ZWN0TWFwSW1wbChzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplYwogewogICAgIGlmIChkZXN0
KQogICAgICAgICByZXR1cm4gKmRlc3Q7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRlbXBsYXRlT2JqZWN0TWFwPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxU
ZW1wbGF0ZU9iamVjdE1hcD4oKTsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIGRl
c3QgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuICpkZXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMjkzYzQ2NDcyZTc0ODk0MWNhOWNj
MmFkYWMxNmEzZDJkYzVkZWVlYy4uMDFjZDJiZDU0N2ZlMDJiNTA0N2E2ZDQ1YjNjOGFkNmZkNTJi
ZGI0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBA
IC04NTYsNyArODU2LDcgQEAgV2F0Y2hwb2ludFNldCogU3RydWN0dXJlOjplbnN1cmVQcm9wZXJ0
eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChWTSYgdm0sIFByb3BlcnQKICAgICBTdHJ1Y3R1cmVS
YXJlRGF0YSogcmFyZURhdGEgPSB0aGlzLT5yYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEt
Pm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cykgewogICAgICAgICByYXJlRGF0YS0+bV9yZXBs
YWNlbWVudFdhdGNocG9pbnRTZXRzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8U3Ry
dWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1hcD4oKTsKKyAgICAgICAgICAgIG1h
a2VVbmlxdWU8U3RydWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1hcD4oKTsKICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICB9CiAgICAgYXV0byByZXN1bHQgPSBy
YXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzLT5hZGQob2Zmc2V0LCBudWxscHRy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVE
YXRhLmNwcAppbmRleCA5OWE4ZDlmN2RhYWMyMTdlNGM4MWU3ZTcxMjZlOWMwMmIzNzRlZDNmLi5k
M2NmMTgzYjBmNmQ3YzQ4OTg4MDBhYjY4ZWU0OGNkMTI4ZjdmZTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCkBAIC0xNDAs
NyArMTQwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXIKICAgICBBU1NFUlQoY29uZGl0aW9u
U2V0LnN0cnVjdHVyZXNFbnN1cmVWYWxpZGl0eSgpKTsKICAgICBmb3IgKE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA6IGNvbmRpdGlvblNldCkgewogICAgICAgICBpZiAoY29uZGl0
aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpIHsK
LSAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOworICAgICAgICAgICAg
bV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQgPSBtYWtlVW5p
cXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CiAgICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRh
cHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlV2F0Y2hwb2ludFNldC5hZGQo
Y29uZGl0aW9uLCB0aGlzKS0+aW5zdGFsbCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggMzkyZjIxN2MxNGVmYWViNTQ1YmYwZDRmNzc5
MGMxMTI3OTMyYmM4NS4uYTRhODcwZmMxZmNhZDM1YzQzOTVmMTA5YjIyYTk5YzQyMGQ3NDEwMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAt
MTE4LDcgKzExOCw3IEBAIGNvbnN0IFN5bWJvbFRhYmxlOjpMb2NhbFRvRW50cnlWZWMmIFN5bWJv
bFRhYmxlOjpsb2NhbFRvRW50cnkoY29uc3QgQ29uY3VycmVudEpTCiAgICAgICAgICAgICAgICAg
c2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG9mZnNldC5zY29wZU9mZnNldCgpLm9mZnNldCgpICsgMSk7
CiAgICAgICAgIH0KICAgICAKLSAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CisgICAgICAgIG1fbG9jYWxUb0Vu
dHJ5ID0gbWFrZVVuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIpOwogICAgICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogbV9tYXApIHsKICAgICAgICAgICAgIFZhck9mZnNldCBvZmZz
ZXQgPSBlbnRyeS52YWx1ZS52YXJPZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChvZmZzZXQuaXNT
Y29wZSgpKQpAQCAtMTU5LDcgKzE1OSw3IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xv
bmVTY29wZVBhcnQoVk0mIHZtKQogICAgICAgICByZXN1bHQtPm1fYXJndW1lbnRzLnNldCh2bSwg
cmVzdWx0LCBhcmd1bWVudHMpOwogICAgIAogICAgIGlmIChtX3JhcmVEYXRhKSB7Ci0gICAgICAg
IHJlc3VsdC0+bV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0
YT4oKTsKKyAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJs
ZVJhcmVEYXRhPigpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fcmFy
ZURhdGEtPm1fdW5pcXVlSURNYXAuYmVnaW4oKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFN5
bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImKQogICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JhcmVE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAgIG1fcmFy
ZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICBmb3IgKGF1
dG8gaXRlciA9IG1fbWFwLmJlZ2luKCksIGVuZCA9IG1fbWFwLmVuZCgpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fdW5pcXVlSURNYXAuc2V0KGl0ZXItPmtl
eSwgVHlwZVByb2ZpbGVyTmVlZHNVbmlxdWVJREdlbmVyYXRpb24pOwpAQCAtMjEwLDcgKzIxMCw3
IEBAIENvZGVCbG9jayogU3ltYm9sVGFibGU6OnJhcmVEYXRhQ29kZUJsb2NrKCkKIHZvaWQgU3lt
Ym9sVGFibGU6OnNldFJhcmVEYXRhQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrKQogewog
ICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlx
dWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIEFTU0VSVCghbV9yYXJlRGF0YS0+bV9j
b2RlQmxvY2spOwogICAgIG1fcmFyZURhdGEtPm1fY29kZUJsb2NrLnNldCgqY29kZUJsb2NrLT52
bSgpLCB0aGlzLCBjb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmNwcAppbmRleCA0MTBlYjZkNWFlMTZmMzYwMjI2ZGIzODIzZjdlZTgyOGVjY2FiMzgzLi40
MWFjYTlkM2Q0ZDliOGE1NmFlNjg1MjMwZThkNjY3NTJhYzBkMDI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIFN0cmluZyBT
dHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKCkKICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9w
cm90by0+cHJvcGVydHlIYXNoKCkpOwogICAgIH0KIAotICAgIG1fcHJvcGVydHlIYXNoID0gc3Rk
OjptYWtlX3VuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgbV9wcm9wZXJ0
eUhhc2ggPSBtYWtlVW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsKICAgICByZXR1
cm4gKm1fcHJvcGVydHlIYXNoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
aW5kZXggNGUyZDBkMzI0YTI0ZTIzMmNkMTk1Mzg5MmVkOGIwYTMzYjBiMDVlZS4uYjcwOTJjMDhl
ZjcyYjBlY2E4OWZmMGI1YzRiZTFhZTU5YWExZGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcApAQCAtMjUyLDE4ICsyNTIsMTggQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1cnJlbnQoKSkK
ICNlbmRpZiAvLyBVU0UoQ0YpCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBUeXBlKQotICAgICwgZmFz
dE1hbGxvY0FsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yPigpKQotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtl
X3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRp
dmUpKQotICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkpCi0gICAgLCBh
dXhpbGlhcnlIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxB
dHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnkpKSkK
LSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhl
YXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENl
bGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCi0gICAgLCBjZWxsSGVhcENlbGxUeXBl
KHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVl
ZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRl
cyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBzdHJpbmdIZWFw
Q2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4oKSkKLSAgICAs
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQorICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvciht
YWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgcHJp
bWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQorICAgICwganNWYWx1ZUdpZ2FjYWdlQWxs
b2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2Fn
ZTo6SlNWYWx1ZSkpCisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFw
Q2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxs
OjpBdXhpbGlhcnkpKSkKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShtYWtl
VW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlv
biwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCisgICAgLCBjZWxsSGVh
cENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90
TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhO
ZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBzdHJpbmdIZWFwQ2Vs
bFR5cGUobWFrZVVuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4oKSkKKyAgICAsIGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlPigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAsIHdlYkFzc2VtYmx5
Q29kZUJsb2NrSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNXZWJBc3NlbWJseUNvZGVC
bG9ja0hlYXBDZWxsVHlwZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5
cGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlPigpKQor
ICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlPigpKQorICAgICwgd2ViQXNzZW1ibHlGdW5jdGlv
bkhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU+
KCkpCiAjZW5kaWYKICAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1p
dGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0
KCksIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIK
ICAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1
eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwganNWYWx1ZUdpZ2Fj
YWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgpAQCAtMjk2LDcgKzI5Niw3IEBA
IFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fYXRvbVN0
cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmlu
Z1RhYmxlKCkgOiBuZXcgQXRvbVN0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxs
cHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQotICAgICwgbWFjaGluZUNvZGVCeXRl
c1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlU3Rh
dHM+KCkpCisgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVK
SVQobWFrZVVuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKICAgICAsIGN1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uTWFwKCp0aGlzKQogICAgICwgc3RyaW5nQ2FjaGUoKnRoaXMpCiAgICAgLCBzeW1ib2xJ
bXBsVG9TeW1ib2xNYXAoKnRoaXMpCkBAIC0zMTIsOCArMzEyLDggQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbml0aWFsaXppbmdPYmplY3RDbGFz
cygwKQogI2VuZGlmCiAgICAgLCBtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeSgwKQotICAgICwgbV9j
b2RlQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxDb2RlQ2FjaGU+KCkpCi0gICAgLCBtX2J1aWx0aW5F
eGVjdXRhYmxlcyhzdGQ6Om1ha2VfdW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRoaXMpKQor
ICAgICwgbV9jb2RlQ2FjaGUobWFrZVVuaXF1ZTxDb2RlQ2FjaGU+KCkpCisgICAgLCBtX2J1aWx0
aW5FeGVjdXRhYmxlcyhtYWtlVW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRoaXMpKQogICAg
ICwgbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQoMCkKICAgICAsIG1fcHJpbWl0aXZlR2lnYWNh
Z2VFbmFibGVkKElzV2F0Y2hlZCkKICAgICAsIG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRD
b3VudCgwKQpAQCAtNDA3LDcgKzQwNyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICBMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoKnRoaXMpOwog
ICAgIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VQcm9maWxlcigpKSkgewotICAgICAg
ICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRh
YmFzZT4oKnRoaXMpOworICAgICAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBtYWtlVW5pcXVl
PFByb2ZpbGVyOjpEYXRhYmFzZT4oKnRoaXMpOwogCiAgICAgICAgIFN0cmluZ1ByaW50U3RyZWFt
IHBhdGhPdXQ7CiAgICAgICAgIGNvbnN0IGNoYXIqIHByb2ZpbGVyUGF0aCA9IGdldGVudigiSlND
X1BST0ZJTEVSX1BBVEgiKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMuCiAgICAgbV90eXBl
ZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxl
cigpKTsKIAotICAgIG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeT4oKnRoaXMpOworICAgIG1fYnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeT4oKnRo
aXMpOwogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVR5cGVQcm9maWxlcigpKQogICAgICAgICBlbmFi
bGVUeXBlUHJvZmlsZXIoKTsKQEAgLTQ0Miw5ICs0NDIsOSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVS
KQogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVJhbmRvbWl6aW5nRnV6emVyQWdlbnQoKSkKLSAgICAg
ICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxSYW5kb21pemluZ0Z1enplckFnZW50
PigqdGhpcykpOworICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFJhbmRvbWl6aW5n
RnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAgZWxzZSBpZiAoT3B0aW9uczo6dXNlRG91YmxlUHJl
ZGljdGlvbkZ1enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50KHN0ZDo6bWFrZV91
bmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOworICAgICAgICBzZXRG
dXp6ZXJBZ2VudChtYWtlVW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMp
KTsKIAogICAgIGlmIChPcHRpb25zOjphbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3JpZ2luTWFwKCkp
CiAgICAgICAgIHNldFNob3VsZEJ1aWxkUENUb0NvZGVPcmlnaW5NYXBwaW5nKCk7CkBAIC00NTcs
OSArNDU3LDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2lm
IEVOQUJMRShKSVQpCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRoYXQgdGhlIEpJ
VCBpcyBnb2luZyB0byB1c2UgYXJlIGluaXRpYWxpemVkIGluIG5vbi1jb21waWxhdGlvbiB0aHJl
YWRzLgogICAgIGlmIChjYW5Vc2VKSVQoKSkgewotICAgICAgICBqaXRTdHVicyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SklUVGh1bmtzPigpOworICAgICAgICBqaXRTdHVicyA9IG1ha2VVbmlxdWU8SklU
VGh1bmtzPigpOwogI2lmIEVOQUJMRShGVExfSklUKQotICAgICAgICBmdGxUaHVua3MgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZUTDo6VGh1bmtzPigpOworICAgICAgICBmdGxUaHVua3MgPSBtYWtlVW5p
cXVlPEZUTDo6VGh1bmtzPigpOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgICAgICBn
ZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ2FsbCk7CiAgICAgICAg
IGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDb25zdHJ1Y3QpOwpA
QCAtNjE5LDcgKzYxOSw3IEBAIFdhdGNoZG9nJiBWTTo6ZW5zdXJlV2F0Y2hkb2coKQogSGVhcFBy
b2ZpbGVyJiBWTTo6ZW5zdXJlSGVhcFByb2ZpbGVyKCkKIHsKICAgICBpZiAoIW1faGVhcFByb2Zp
bGVyKQotICAgICAgICBtX2hlYXBQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFByb2Zp
bGVyPigqdGhpcyk7CisgICAgICAgIG1faGVhcFByb2ZpbGVyID0gbWFrZVVuaXF1ZTxIZWFwUHJv
ZmlsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faGVhcFByb2ZpbGVyOwogfQogCkBAIC0xMDQx
LDggKzEwNDEsOCBAQCBzdGF0aWMgYm9vbCBkaXNhYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291
bnQodW5zaWduZWQmIGNvdW50ZXIsIGNvbnN0IEZ1bmMmIGRvRAogYm9vbCBWTTo6ZW5hYmxlVHlw
ZVByb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZVR5cGVQcm9maWxlciA9IFt0aGlzXSAoKSB7
Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlUHJv
ZmlsZXI+KCk7Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gc3RkOjptYWtlX3Vu
aXF1ZTxUeXBlUHJvZmlsZXJMb2c+KCp0aGlzKTsKKyAgICAgICAgdGhpcy0+bV90eXBlUHJvZmls
ZXIgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+bV90eXBlUHJv
ZmlsZXJMb2cgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlckxvZz4oKnRoaXMpOwogICAgIH07CiAK
ICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQobV90eXBlUHJvZmls
ZXJFbmFibGVkQ291bnQsIGVuYWJsZVR5cGVQcm9maWxlcik7CkBAIC0xMDYxLDcgKzEwNjEsNyBA
QCBib29sIFZNOjpkaXNhYmxlVHlwZVByb2ZpbGVyKCkKIGJvb2wgVk06OmVuYWJsZUNvbnRyb2xG
bG93UHJvZmlsZXIoKQogewogICAgIGF1dG8gZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlciA9IFt0
aGlzXSAoKSB7Ci0gICAgICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udHJvbEZsb3dQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+bV9jb250cm9s
Rmxvd1Byb2ZpbGVyID0gbWFrZVVuaXF1ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigpOwogICAgIH07
CiAKICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQobV9jb250cm9s
Rmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKTsKQEAg
LTEwODcsNyArMTA4Nyw3IEBAIHZvaWQgVk06OmR1bXBUeXBlUHJvZmlsZXJEYXRhKCkKIAogdm9p
ZCBWTTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPE1p
Y3JvdGFzaz4mJiB0YXNrKQogewotICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZnbG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykp
KTsKKyAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFF1ZXVlZFRhc2s+KCp0
aGlzLCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQgVk06OmRyYWlu
TWljcm90YXNrcygpCkBAIC0xMjMwLDE0ICsxMjMwLDE0IEBAIHZvaWQgVk06OmVuc3VyZVNoYWRv
d0NoaWNrZW4oKQogewogICAgIGlmIChtX3NoYWRvd0NoaWNrZW4pCiAgICAgICAgIHJldHVybjsK
LSAgICBtX3NoYWRvd0NoaWNrZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7
CisgICAgbV9zaGFkb3dDaGlja2VuID0gbWFrZVVuaXF1ZTxTaGFkb3dDaGlja2VuPigpOwogfQog
CiAjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBo
ZWFwQ2VsbFR5cGUsIHR5cGUpIFwKICAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBc
CiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3Bh
Y2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUp
OyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAgICAgICAgbV8jI25hbWUg
PSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKQEAg
LTEyNjgsNyArMTI2OCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhCiAgICAgSXNvU3Vic3Bh
Y2UqIFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1l
KTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGFjZUFuZFNldD4g
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBh
dXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJu
ICZtXyMjbmFtZS0+c3BhY2U7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDI0ZjE4YWQwMmRlMmZlZjkwMDkzNDQ4NjQzMGM5
OGZlOTQ5NDI0ZWYuLjUzMzkzY2IyNThmNzQyYzZhY2ZkZGVhZWM2YzcxNzU2NDRkNzk0MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNw
cApAQCAtNDE3LDcgKzQxNyw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsKICAgICB2b2lkIGVt
aXRQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJhc2ljQmxvY2ssIEIzOjpQYXRjaHBvaW50VmFsdWUq
IHBhdGNoLCBUbXAgcmVzdWx0LCBWZWN0b3I8Q29uc3RyYWluZWRUbXAsIGlubGluZVNpemU+JiYg
YXJncykKICAgICB7CiAgICAgICAgIGlmICghbV9wYXRjaHBvaW50U3BlY2lhbCkKLSAgICAgICAg
ICAgIG1fcGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNwZWNp
YWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3Bl
Y2lhbD4oKSkpOworICAgICAgICAgICAgbV9wYXRjaHBvaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0
PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6
OlBhdGNocG9pbnRTcGVjaWFsPigpKSk7CiAKICAgICAgICAgSW5zdCBpbnN0KFBhdGNoLCBwYXRj
aCwgQXJnOjpzcGVjaWFsKG1fcGF0Y2hwb2ludFNwZWNpYWwpKTsKICAgICAgICAgSW5zdCByZXN1
bHRNb3Y7CkBAIC00ODcsNyArNDg3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3IgewogCiAgICAg
ICAgIC8vIEZJWE1FOiBNYWtlIGEgaGFzaG1hcCBvZiB0aGVzZS4KICAgICAgICAgQjM6OkNoZWNr
U3BlY2lhbDo6S2V5IGtleShicmFuY2gpOwotICAgICAgICBCMzo6Q2hlY2tTcGVjaWFsKiBzcGVj
aWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0
ZDo6bWFrZV91bmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkpOworICAgICAgICBCMzo6Q2hl
Y2tTcGVjaWFsKiBzcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lhbCo+KG1fY29k
ZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgZm9yIGR1bW15IHZhbHVlcwogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQwCkBAIC0yMTM5
LDEwICsyMTM5LDEwIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6Om9yaWdpbigpIC0+IEIzOjpPcmln
aW4KIAogRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+
IHBhcnNlQW5kQ29tcGlsZUFpcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4
dCwgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+
JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8s
IE1lbW9yeU1vZGUgbW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVwQ291bnQqIHRp
ZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIAotICAgIGNvbXBpbGF0
aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxs
SGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQu
ZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAg
Y29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhl
bHBlcnM+KCk7CiAKICAgICBCMzo6UHJvY2VkdXJlIHByb2NlZHVyZTsKICAgICBDb2RlJiBjb2Rl
ID0gcHJvY2VkdXJlLmNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAyMDk0MTc3ZWQ2ZjE4M2FiNGQ4NjJlYzIyNjdkMzBm
MjhiN2RlNWI2Li4xNThkZjlmYTlmMGM5ZjcyMWFjMjkyNzc4MTg4ZGNmMjhlNzA3ZmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBA
IC0xNTUxLDEwICsxNTUxLDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4gT3Jp
Z2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5n
PiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQs
IGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYg
dW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBN
ZW1vcnlNb2RlIG1vZGUsIENvbXBpbGF0aW9uTW9kZSBjb21waWxhdGlvbk1vZGUsIHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0
aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVy
bmFsRnVuY3Rpb24+KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBv
aW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAgY29tcGlsYXRp
b25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBl
cnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IG1h
a2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50
cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAgUHJvY2VkdXJl
IHByb2NlZHVyZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3Bw
CmluZGV4IGY5ODVkNTIzYzJlOTNmM2JkMjNmYjdjNTcxMmI1ODY4Y2MxNmE2ODUuLjUwNmRmNGJl
ZmQwZDU2NDE4NDRjZTUyNzk1MTE1ZjYxMjg3MTYxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIEJCUVBsYW46
OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBtX3dhc21J
bnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAgICAgICAgICAgICBtX3dh
c21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5jb21waWxhdGlv
biA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgICAgICAgICAgICAgRklO
QUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2ViQXNzZW1ibHkg
QkJRIGZ1bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRv
U3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25J
bmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9u
SW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAgICAgICAgICAgIFdURk1v
dmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KQEAg
LTMyNyw3ICszMjcsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiBsb2NrZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24tPmVu
dHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4o
CisgICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9uLT5lbnRyeXBv
aW50LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICAg
ICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcs
ICJFbWJlZGRlci0+V2ViQXNzZW1ibHkgZW50cnlwb2ludFslaV0gJXMgbmFtZSAlcyIsIGZ1bmN0
aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5n
KEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFt
ZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLAogICAg
ICAgICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50Qnlwcm9k
dWN0cykpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9N
R1BsYW4uY3BwCmluZGV4IGM1MTNmZDJmNTBlZDZmYjE3YzMzODVlZjI5MDUyNzgxNzM5MjEwMzcu
LjBkN2EwM2MzNjEyOWNkMWRlMmM1NGZmY2Q1MDI5NWI1NmM1Yjg5OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBP
TUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgb21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNv
bXBpbGF0aW9uPigKKyAgICBvbWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxC
Mzo6Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29t
cGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBPTUcgZnVuY3Rpb25bJWldICVzIG5hbWUgJXMi
LCBtX2Z1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBt
YWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1h
dGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRh
KCkpLAogICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCmluZGV4IDM2
ZDc0YzE0YjE4YzcwN2I4MTJhMDQ4N2Y5MWUyOWMzODUzOTFkZTIuLjY2MGY5NTY1NzM4YjEwYTMw
ZjNlN2NjODE4YTMyYzg1ODc4MjEyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVdvcmtsaXN0LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIFdvcmtsaXN0OjpXb3JrbGlzdCgp
CiAgICAgbV90aHJlYWRzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkNvbXBpbGF0aW9uVGhyZWFk
cyk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzOyBpKyspCi0gICAgICAgIG1fdGhy
ZWFkcy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGlzdDo6VGhyZWFkPihs
b2NrZXIsICp0aGlzKSk7CisgICAgICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBlbmQobWFrZVVu
aXF1ZTxXb3JrbGlzdDo6VGhyZWFkPihsb2NrZXIsICp0aGlzKSk7CiB9CiAKIFdvcmtsaXN0Ojp+
V29ya2xpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNU
b1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCmlu
ZGV4IDVkZDQ1MWJlYTg0ZDU5MGJiZjBmY2IwNzZlMjZmZmQzY2M3YjgxYWMuLjczNTIyMDI4OTM3
YzZkYWMxZmM0NzNjN2U0Y2RjNjQ5NThjZThlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElu
dGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQm
IGNvbXAKIHsKICAgICBDQ2FsbEhlbHBlcnMmIGppdCA9ICpjb21waWxhdGlvbkNvbnRleHQuZW1i
ZWRkZXJFbnRyeXBvaW50SklUOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVy
bmFsRnVuY3Rpb24+KCk7CiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAKICAgICAv
LyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXggN2YwMzNmZWMxYzM2OWE5NDIzYjMzY2Y4ZWIzMzM0
YzUxY2UwODA4Yi4uYzRiNzdjYWRiZTVlZWE1NzNlYzg1MmI5NWVmNmE3ODliODI4NTM2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC0x
NzA2LDcgKzE3MDYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICAgICAgZHVtcERp
c2p1bmN0aW9uKG1fYm9keURpc2p1bmN0aW9uLmdldCgpKTsKICNlbmRpZgogCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4oV1RGTW92ZShtX2JvZHlEaXNq
dW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRlcm4sIGFsbG9jYXRvciwgbG9j
ayk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4oV1RGTW92ZSht
X2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRlcm4sIGFsbG9j
YXRvciwgbG9jayk7CiAgICAgfQogCiAgICAgdm9pZCBjaGVja0lucHV0KHVuc2lnbmVkIGNvdW50
KQpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgdW5z
aWduZWQgc3VicGF0dGVybklkID0gcGFyZW50aGVzZXNCZWdpbi5hdG9tLnN1YnBhdHRlcm5JZDsK
IAogICAgICAgICB1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IGxhc3RTdWJwYXR0ZXJuSWQgLSBz
dWJwYXR0ZXJuSWQgKyAxOwotICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFt
ZVNpemUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBtYWtlVW5pcXVl
PEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwogCiAgICAg
ICAgIHVuc2lnbmVkIGZpcnN0VGVybUluUGFyZW50aGVzZXMgPSBiZWdpblRlcm0gKyAxOwogICAg
ICAgICBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT50ZXJtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGVuZFRlcm0gLSBmaXJzdFRlcm1JblBhcmVudGhlc2VzICsgMik7CkBAIC0xOTk3LDcgKzE5OTcs
NyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogCiAgICAgdm9pZCByZWdleEJlZ2luKHVuc2lnbmVk
IG51bVN1YnBhdHRlcm5zLCB1bnNpZ25lZCBjYWxsRnJhbWVTaXplLCBib29sIG9uY2VUaHJvdWdo
KQogICAgIHsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOworICAgICAgICBt
X2JvZHlEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0
ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5h
cHBlbmQoQnl0ZVRlcm06OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKG9uY2VUaHJvdWdoKSk7CiAgICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1swXS5mcmFtZUxvY2F0aW9uID0gMDsKICAgICAg
ICAgbV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwCmluZGV4IDdhN2MyMDZjN2U0MzU5N2NmZTRjNGQ0ZGNhOGEwN2FjNWFjMWY2
NjAuLjhhYjYyYjdiYTM5ODEwNTFlYmJkYWNkNmU0N2EwNThhYWRkM2Q5YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0zODk5LDcgKzM4OTksNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wRGlzYXNz
ZW1ibHkoKSB8fCBPcHRpb25zOjpkdW1wUmVnRXhwRGlzYXNzZW1ibHkoKSkpCi0gICAgICAgICAg
ICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8WWFyckRpc2Fzc2VtYmxlcj4odGhp
cyk7CisgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8WWFyckRpc2Fzc2Vt
Ymxlcj4odGhpcyk7CiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAg
bV9kaXNhc3NlbWJsZXItPnNldFN0YXJ0T2ZDb2RlKGxhYmVsKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IDQ5Zjc3ZjY5YzY4NWM2NTIwM2RmM2Yw
MzRjOTBkMTg3N2M5MmRjOWIuLmZjYzUxYjI3N2Y1MDExMDNiN2M2NWJiZDMzYTVjYTQxMGQ4MWMw
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKQEAgLTI0
MCw3ICsyNDAsNyBAQCBjbGFzcyBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yIHsKICAgICB7CiAg
ICAgICAgIGNvYWxlc2NlVGFibGVzKCk7CiAKLSAgICAgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAgICAgIGF1dG8gY2hhcmFj
dGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwogCiAgICAgICAgIGNoYXJh
Y3RlckNsYXNzLT5tX21hdGNoZXMuc3dhcChtX21hdGNoZXMpOwogICAgICAgICBjaGFyYWN0ZXJD
bGFzcy0+bV9yYW5nZXMuc3dhcChtX3Jhbmdlcyk7CkBAIC00NDEsNyArNDQxLDcgQEAgY2xhc3Mg
WWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICwgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0
cnVjdG9yKHBhdHRlcm4uaWdub3JlQ2FzZSgpLCBwYXR0ZXJuLnVuaWNvZGUoKSA/IENhbm9uaWNh
bE1vZGU6OlVuaWNvZGUgOiBDYW5vbmljYWxNb2RlOjpVQ1MyKQogICAgICAgICAsIG1fc3RhY2tM
aW1pdChzdGFja0xpbWl0KQogICAgIHsKLSAgICAgICAgYXV0byBib2R5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgIGF1dG8gYm9keSA9IG1ha2VVbmlx
dWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9k
eS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0FsdGVybmF0aXZl
KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShib2R5
KSk7CkBAIC00NTYsNyArNDU2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAg
ICAgICAgIG1fcGF0dGVybi5yZXNldEZvclJlcGFyc2luZygpOwogICAgICAgICBtX2NoYXJhY3Rl
ckNsYXNzQ29uc3RydWN0b3IucmVzZXQoKTsKIAotICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5ID0gbWFr
ZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkg
PSBib2R5LmdldCgpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJu
YXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3Zl
KGJvZHkpKTsKQEAgLTYwOCw3ICs2MDgsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9y
IHsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NFUlQoIW9wdEdyb3VwTmFtZSk7CiAK
LSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRvIHBhcmVudGhl
c2VzRGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5h
dGl2ZSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJt
KFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJuSWQsIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGZhbHNlKSk7CiAgICAgICAgIG1f
YWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgp
OwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUocGFyZW50
aGVzZXNEaXNqdW5jdGlvbikpOwpAQCAtNjE2LDcgKzYxNiw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJu
Q29uc3RydWN0b3IgewogCiAgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2lu
KGJvb2wgaW52ZXJ0ID0gZmFsc2UpCiAgICAgewotICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlz
anVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5h
dGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8
UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKICAgICAgICAgbV9hbHRlcm5hdGl2
ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uLCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDEsIHBhcmVudGhlc2Vz
RGlzanVuY3Rpb24uZ2V0KCksIGZhbHNlLCBpbnZlcnQpKTsKICAgICAgICAgbV9hbHRlcm5hdGl2
ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgICAg
IG1faW52ZXJ0UGFyZW50aGV0aWNhbEFzc2VydGlvbiA9IGludmVydDsKQEAgLTcwNyw3ICs3MDcs
NyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgIFBhdHRlcm5B
bHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0
XS5nZXQoKTsKICAgICAgICAgICAgIGlmICghZmlsdGVyU3RhcnRzV2l0aEJPTCB8fCAhYWx0ZXJu
YXRpdmUtPm1fc3RhcnRzV2l0aEJPTCkgewogICAgICAgICAgICAgICAgIGlmICghbmV3RGlzanVu
Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3RGlz
anVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgICAg
ICAgICAgICAgbmV3RGlzanVuY3Rpb24tPm1fcGFyZW50ID0gZGlzanVuY3Rpb24tPm1fcGFyZW50
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUq
IG5ld0FsdGVybmF0aXZlID0gbmV3RGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CkBA
IC0xNDczLDcgKzE0NzMsNyBAQCB2b2lkIFlhcnJQYXR0ZXJuOjpkdW1wUGF0dGVybihQcmludFN0
cmVhbSYgb3V0LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxDaGFyYWN0ZXJDbGFzcz4gYW55Y2hhckNyZWF0ZSgpCiB7Ci0gICAgYXV0byBjaGFyYWN0ZXJD
bGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAgYXV0byBjaGFy
YWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAgICAgY2hhcmFjdGVy
Q2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwLCAweDdmKSk7CiAgICAg
Y2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgw
MDgwLCAweDEwZmZmZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX2NoYXJhY3RlcldpZHRocyA9
IENoYXJhY3RlckNsYXNzV2lkdGhzOjpIYXNCb3RoQk1QQW5kTm9uQk1QOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggMGI3ZGIyZWJhOGFkNTJkZWQyYjVmN2U2
N2U1NDViOGMxNmM5NDVjNy4uN2U4MmM4NTVhODc4ZTZjMTgwZWQ1MjFmMWY3YWQ0OGQ4YzFmYmFj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCkBAIC0zNDEsNyAr
MzQxLDcgQEAgc3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbiB7CiAgICAgCiAgICAgUGF0dGVybkFs
dGVybmF0aXZlKiBhZGROZXdBbHRlcm5hdGl2ZSgpCiAgICAgewotICAgICAgICBtX2FsdGVybmF0
aXZlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+KHRoaXMpKTsK
KyAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGF0dGVybkFsdGVybmF0
aXZlPih0aGlzKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYXR0ZXJuQWx0ZXJuYXRp
dmUqPihtX2FsdGVybmF0aXZlcy5sYXN0KCkuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKaW5kZXggYzFmOWY5OWRlMDkx
Y2VjYjJlMWRiNTVjMzhmYTM2MDMxMWVlMzdmNC4uNjljZDg4ODY1Nzg1NGNkNTQ0NWY4NjNlMjJk
NTVmZmI5YzQwZWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3Jl
YXRlX3JlZ2V4X3RhYmxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVf
cmVnZXhfdGFibGVzCkBAIC05NSwxMSArOTUsMTEgQEAgZm9yIG5hbWUsIGNsYXNzZXMgaW4gdHlw
ZXMuaXRlbXMoKToKICAgICBmdW5jdGlvbiArPSAoIntcbiIpCiAgICAgaWYgZW1pdFRhYmxlcyBh
bmQgY2xhc3Nlc1siVXNlVGFibGUiXToKICAgICAgICAgaWYgIkludmVyc2UiIGluIGNsYXNzZXM6
Ci0gICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3Rk
OjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgdHJ1ZSk7XG4iICUgKGNsYXNz
ZXNbIkludmVyc2UiXSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJh
Y3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgdHJ1ZSk7XG4i
ICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmdW5j
dGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFy
YWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkKKyAgICAgICAgICAgIGZ1
bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3Rl
ckNsYXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQogICAgIGVsc2U6Ci0gICAgICAg
IGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVl
PENoYXJhY3RlckNsYXNzPigpO1xuIikKKyAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBj
aGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7XG4iKQogICAgIGhh
c0JNUENoYXJhY3RlcnMgPSBGYWxzZQogICAgIGhhc05vbkJNUENoYXJhY3RlcnMgPSBGYWxzZQog
ICAgIGZvciAobWluLCBtYXgpIGluIHJhbmdlczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5w
eQppbmRleCBmOWZlZjQ2OGQyYjVkZGE2YWFlZWFiMGIzZmMwNThjZDNlZWNlYWMxLi41MjZmYjZl
N2FjM2EyMjdhNmQ0M2NiYmVmZDI3MDJkMWEwYzU0Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5
VGFibGVzLnB5CkBAIC01MjksNyArNTI5LDcgQEAgZGVmIGR1bXBNYXRjaERhdGEoc2VsZiwgZmls
ZSwgdmFsdWVzUGVyTGluZSwgZGF0YUxpc3QsIGZvcm1hdHRlcik6CiAgICAgZGVmIGR1bXAoc2Vs
ZiwgZmlsZSwgY29tbWFBZnRlcik6CiAgICAgICAgIGZpbGUud3JpdGUoInN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IHt9KClcbnt7XG4iLmZvcm1hdChzZWxmLmdldENyZWF0
ZUZ1bmNOYW1lKCkpKQogICAgICAgICBmaWxlLndyaXRlKCIgICAgLy8gTmFtZSA9IHt9LCBudW1i
ZXIgb2YgY29kZVBvaW50czoge31cbiIuZm9ybWF0KHNlbGYubmFtZSwgc2VsZi5jb2RlUG9pbnRD
b3VudCkpCi0gICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3Rk
OjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQorICAgICAgICBmaWxlLndyaXRlKCIg
ICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KFxuIikK
ICAgICAgICAgZmlsZS53cml0ZSgiICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VUNoYXIz
Mj4oIikKICAgICAgICAgc2VsZi5kdW1wTWF0Y2hEYXRhKGZpbGUsIDgsIHNlbGYubWF0Y2hlcywg
bGFtYmRhIGZpbGUsIG1hdGNoOiAoZmlsZS53cml0ZSgiezA6MD0jNHh9Ii5mb3JtYXQobWF0Y2gp
KSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiksXG4iKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9i
ZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xv
Y2tGYWlybmVzc1Rlc3QuY3BwCmluZGV4IGNjNzA3ZGUzZmY0ZWMxMzhjZmE0NmFiNGM4ZTEzYWJi
NjU5M2NiYTEuLjhjOTdjMWEyNDFiNzI5YWY4ZjMxZjM1OWM3ZjUxNzdhNjM0MDlkYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcAorKysgYi9T
b3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAKQEAgLTYxLDggKzYxLDgg
QEAgc3RydWN0IEJlbmNobWFyayB7CiAgICAgc3RhdGljIHZvaWQgcnVuKGNvbnN0IGNoYXIqIG5h
bWUpCiAgICAgewogICAgICAgICBMb2NrVHlwZSBsb2NrOwotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8dW5zaWduZWRbXT4gY291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZFtdPihudW1U
aHJlYWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVh
ZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZHMpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWRbXT4gY291bnRzID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CiAgICAgCiAgICAg
ICAgIHZvbGF0aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1ZTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcCBiL1NvdXJjZS9XVEYvYmVuY2ht
YXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAppbmRleCBmMTU2NTBkNGM5YzhmYTY3NzBmODkxMmYwOWRm
ZTM5MjkxMzA3YzM0Li5iZTdhYmEzOTBlYjUzZTM1ODFlMzZmNGE4Yjk1MDBkMGUyOTlmOTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKKysrIGIv
U291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCkBAIC03NCw5ICs3NCw5IEBA
IHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPgogICAg
IHN0YXRpYyB2b2lkIHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPiBsb2NrcyA9IHN0ZDo6bWFrZV91bmlx
dWU8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxkb3VibGU+W10+IHdvcmRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxXaXRoUGFkZGluZzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1
ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXAp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+IGxvY2tz
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2l0aFBhZGRpbmc8TG9ja1R5cGU+
W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGlu
Zzxkb3VibGU+W10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2l0
aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQ
ZXJHcm91cCk7CiAKICAgICAgICAgdm9sYXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0cnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKaW5kZXggMGI1NDFiOGM3M2QwZjU5ODY1MWJmOTVlNzY5
M2I4MDdjOTk5Zjc4YS4uODg0ZWQ3MzIzMzc2MWEyOWZiNDk2ZjBhZDA5ODk2NzU0NWU3MDM0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaApAQCAtMjU0LDcgKzI1NCw3IEBAIGNsYXNzIENv
bmN1cnJlbnRWZWN0b3IgZmluYWwgewogICAgIHZvaWQgYWxsb2NhdGVTZWdtZW50KCkKICAgICB7
CiAgICAgICAgIG1fc2VnbWVudHMuZ3JvdyhtX251bVNlZ21lbnRzICsgMSk7Ci0gICAgICAgIG1f
c2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VnbWVudD4oKTsK
KyAgICAgICAgbV9zZWdtZW50c1ttX251bVNlZ21lbnRzKytdID0gbWFrZVVuaXF1ZTxTZWdtZW50
PigpOwogICAgIH0KIAogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Ny
b3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCmluZGV4IDgzYzIwNzUxZjg1ZjRlNGQyMDE1NjE0NDFj
YTgzMTQxY2I1YzM3ZmYuLmM2M2MwNTVhMGEwMzQxZGY2YTVhZjI3MGE0YWNjYjhkNTdkNzg0M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCkBAIC03Myw3ICs3
Myw3IEBAIHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3AoKQogCiAgICAg
d2hpbGUgKCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKSB7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9kcmFpbmVkUG9vbCA9IChtX3Vz
ZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpVc2UpID8gc3Rk
OjptYWtlX3VuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOworICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29sID0gKG1fdXNl
QXV0b2RyYWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVzZSkgPyBtYWtl
VW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CiAKICAgICAgICAgICAgIG1fdGFz
a1F1ZXVlLndhaXRGb3JNZXNzYWdlKCkucGVyZm9ybVRhc2soKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93dGYvRmFzdE1h
bGxvYy5oCmluZGV4IGVmZWZiM2EzMTMzZTgzZjY0MzM2ZmQyZWMyZGE1MmE1NDgzMmU2MjEuLjk1
YjY3NTk3MmQzMTBlM2RkYmQ0MTNkNGE4ZjhkMTI4OGYyMGZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgK
QEAgLTMwMSw5ICszMDEsMTEgQEAgdXNpbmcgV1RGOjpmYXN0QWxpZ25lZEZyZWU7CiAjZGVmaW5l
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIFwKIHB1YmxpYzogXAogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHBy
aXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzTWFjcm8KIAogI2RlZmluZSBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQgXAogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2Nh
dGVkQ2xhc3M7IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCmluZGV4IDNlMjUzY2YyYWMy
MTljYzg1NTg0ZDQyYzQ1MWVmYzdjYTc5YjY0ZWEuLjcwNzRjMDNhYmFmOGZjZjM5NzdmMmIxMWFi
OWMzZDZlMzgxNjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVByaW50U3RyZWFtPiBGaWxlUHJpbnRTdHJlYW06
Om9wZW4oY29uc3QgY2hhciogZmlsZW5hbWUsIGNvbgogICAgIGlmICghZmlsZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWxlUHJpbnRT
dHJlYW0+KGZpbGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpbGVQcmludFN0cmVhbT4oZmls
ZSk7CiB9CiAKIHZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1h
dCwgdmFfbGlzdCBhcmdMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKaW5kZXggMDVlMzY5NzgyNWJjM2QzNDlmNDhk
NjhjMzJhNjg2MjI1NWZiNTgzZS4uMGI3OTU4Njc0ODBmZDAzMjI0MTI0NTRlN2QwYWY4MzM4ZDZl
M2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GdW5jdGlvbi5oCkBAIC02NywxMSArNjcsMTEgQEAgY2xhc3MgRnVuY3Rpb248T3V0
KEluLi4uKT4gewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCEoc3RkOjppc19wb2ludGVyPENhbGxhYmxlVHlwZT46
OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxD
YWxsYWJsZVR5cGU+Ojp0eXBlPjo6dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxD
YWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbihDYWxsYWJsZVR5cGUm
JiBjYWxsYWJsZSkKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVl
PERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1v
dmUoY2FsbGFibGUpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIobWFrZVVuaXF1
ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZN
b3ZlKGNhbGxhYmxlKSkpIHsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBl
LCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxGdW5jdGlv
blR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Bv
aW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbihG
dW5jdGlvblR5cGUgZikKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6Om1ha2VfdW5p
cXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdU
Rk1vdmUoZikpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtlVW5pcXVlPERl
dGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUo
ZikpKSB7IH0KIAogICAgIE91dCBvcGVyYXRvcigpKEluLi4uIGluKSBjb25zdAogICAgIHsKQEAg
LTg0LDE0ICs4NCwxNCBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4pPiB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCEoc3RkOjppc19wb2ludGVyPENhbGxhYmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rp
b248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0eXBlPjo6dmFs
dWUpICYmIHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6
dHlwZT4KICAgICBGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQog
ICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldGFp
bDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoY2Fs
bGFibGUpKTsKKyAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVlPERldGFpbDo6
Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoY2FsbGFi
bGUpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+
CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShGdW5jdGlvblR5cGUgZikKICAgICB7Ci0gICAgICAg
IG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3Jh
cHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKKyAgICAgICAgbV9j
YWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0
aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOwogICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDNiMWU5NTMwM2RlNTQwNTE0M2ZiNTYzY2NiODA0
N2U1YWNlYWQwYjMuLmE0ZDA3N2Y4NGYwMmExZmExYzFiZTAzNGE4NmViMzUwZDZkN2Y0OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0hhc2hUYWJsZS5oCkBAIC01ODgsMTAgKzU4OCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAg
ICAgICAgLCBtX2l0ZXJhdG9ycygwKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1
ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlm
CiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigpKQorICAgICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxT
dGF0cz4oKSkKICNlbmRpZgogICAgIHsKICAgICB9CkBAIC0xMzM0LDEwICsxMzM0LDEwIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCiAjaWYgQ0hFQ0tfSEFT
SFRBQkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKG51bGxwdHIpCi0gICAgICAg
ICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwgbV9tdXRleCht
YWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJf
VEFCTEUKLSAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFrZV91bmlxdWU8U3RhdHM+KCpvdGhlci5t
X3N0YXRzKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCpvdGhlci5tX3N0
YXRzKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgdW5zaWduZWQgb3RoZXJLZXlDb3VudCA9IG90
aGVyLnNpemUoKTsKQEAgLTEzODIsNyArMTM4Miw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIGlu
bGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShIYXNoVGFibGUmJiBvdGhlcikKICNpZiBDSEVDS19I
QVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgIDogbV9pdGVyYXRvcnMobnVsbHB0cikKLSAgICAg
ICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4
KG1ha2VVbmlxdWU8TG9jaz4oKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgb3RoZXIuaW52YWxp
ZGF0ZUl0ZXJhdG9ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAK
aW5kZXggOWU4NzIwZjZkOWE3OTgwYjk1ZTViMTNjNWU2NTVjMzg5NDkzMDRiNS4uNTM3OWMwYTRk
NWM4YzZmMzY3ZDkxNjk2ZTBkNmExOGM1ZDlmZWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1c2UpCiAgICAg
fQogCiAgICAgaWYgKHVzZSkgewotICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4+KFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZp
cmVkKTsKKyAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpU
aW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CiAgICAgICAgIG1fbWVh
c3VyZW1lbnRUaW1lci0+c3RhcnRSZXBlYXRpbmcoMzBfcyk7CiAgICAgfSBlbHNlCiAgICAgICAg
IG1fbWVhc3VyZW1lbnRUaW1lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4IGFm
NjVlMDhjYTg4MDI0MGVhOWYxOWMzYzFmYzFmZGM1N2FiNGQ0YWIuLmRlZjgzNDBlM2M4YWNjODU4
NmRhNGYwMGJiOGU5ZGM1NmUwMTNlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC01NjUsNiAr
NTY1LDI0IEBAIGNvbnN0ZXhwciBzaXplX3QgY2x6KHVpbnQzMl90IHZhbHVlLCBaZXJvU3RhdHVz
IG1pZ2h0QmVaZXJvID0gWmVyb1N0YXR1czo6TWF5QmVaCiAKIH0gLy8gbmFtZXNwYWNlIHN0ZAog
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4KK0FM
V0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZShBcmdzJiYuLi4gYXJncykKK3sK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0
ZWRDbGFzcywgaW50Pjo6dmFsdWUpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFQ+KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNz
Li4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKICNkZWZpbmUgV1RGTW92ZSh2YWx1ZSkgc3RkOjptb3ZlPFdURjo6Q2hlY2tN
b3ZlUGFyYW1ldGVyPih2YWx1ZSkKIAogdXNpbmcgV1RGOjpLQjsKQEAgLTU4NSwzICs2MDMsNSBA
QCB1c2luZyBXVEY6Om1lcmdlRGVkdXBsaWNhdGVkU29ydGVkOwogdXNpbmcgV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mOwogdXNpbmcgV1RGOjpzYWZlQ2FzdDsKIHVzaW5nIFdURjo6dHJ5QmluYXJ5
U2VhcmNoOwordXNpbmcgV1RGOjptYWtlVW5pcXVlOwordXNpbmcgV1RGOjptYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1
ZmZlci5oIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKaW5kZXggMjZiYmM4ZmQ2N2E0
OTM0NjMyMjFkNjE5NjE4ZWI3YzY0Njg2NDAzMC4uY2EzM2Y4NjdkMzhiNTc1OTIwMTQxZDUyM2Mz
MDdhYWU3YzgyMGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xh
c3MgU3RyZWFtQnVmZmVyIHsKICAgICAgICAgbV9zaXplICs9IHNpemU7CiAgICAgICAgIHdoaWxl
IChzaXplKSB7CiAgICAgICAgICAgICBpZiAoIW1fYnVmZmVyLnNpemUoKSB8fCBtX2J1ZmZlci5s
YXN0KCktPnNpemUoKSA9PSBCbG9ja1NpemUpCi0gICAgICAgICAgICAgICAgbV9idWZmZXIuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCkpOworICAgICAgICAgICAgICAgIG1fYnVmZmVy
LmFwcGVuZChtYWtlVW5pcXVlPEJsb2NrPigpKTsKICAgICAgICAgICAgIHNpemVfdCBhcHBlbmRT
aXplID0gc3RkOjptaW4oQmxvY2tTaXplIC0gbV9idWZmZXIubGFzdCgpLT5zaXplKCksIHNpemUp
OwogICAgICAgICAgICAgbV9idWZmZXIubGFzdCgpLT5hcHBlbmQoZGF0YSwgYXBwZW5kU2l6ZSk7
CiAgICAgICAgICAgICBkYXRhICs9IGFwcGVuZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9VbmlxdWVSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCmluZGV4IDczZTlk
ZmVjMDZmZDc4N2YzYjA2YjNkYzlkYTY1YTU1MDRkMWMwMjkuLjY1OTEyNTFiODYyN2RmMzZjZjJl
YjlmNzQ3OTNlZjQ4OWNhMWU5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJl
Zi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCkBAIC0zMywxMSArMzMsMTggQEAg
bmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBVbmlxdWVSZWY7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+Ci1VbmlxdWVSZWY8VD4gbWFrZVVu
aXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmV2l0aG91
dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKIHsKICAgICByZXR1cm4gVW5pcXVlUmVm
PFQ+KCpuZXcgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmKEFy
Z3MmJi4uLiBhcmdzKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVuYW1l
IFQ6Ol9fZmFzdEFsbG9jYXRlZENsYXNzLCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBVbmlxdWVSZWYgewogcHVi
bGljOgpAQCAtNjMsNyArNzAsNyBAQCBjbGFzcyBVbmlxdWVSZWYgewogICAgIHN0ZDo6dW5pcXVl
X3B0cjxUPiBtb3ZlVG9VbmlxdWVQdHIoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVmKTsgfQogCiBw
cml2YXRlOgotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlx
dWVSZWY8VT4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOworICAgIHRlbXBsYXRlPGNsYXNzIFUs
IGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZldpdGhvdXRG
YXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQg
Y2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5pcXVlUmVmKFQmIG90aGVyKQpAQCAtNzksMyArODYs
NCBAQCBjbGFzcyBVbmlxdWVSZWYgewogCiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5nIFdU
Rjo6bWFrZVVuaXF1ZVJlZjsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCmluZGV4IDVlNWJhOGFiZWJk
YmQ0OWJiYjgzN2RkNGM0ZmQ2OWJkNmZmYzM2MWYuLmZiMjExZDBhMjk2MWRmYzE2YWE2ZTIxYTIx
YTk3NGRmZjE1MjY5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdM
aWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24s
IEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3Vy
Y2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKICAgICBnX3NvdXJj
ZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190aW1lKCkgKyBk
dXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwYXRj
aEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGF0Y2hBZnRlckNv
bnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2soc291
cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQoc3RhdGljX2Nhc3Q8
RGlzcGF0Y2hBZnRlckNvbnRleHQqPih1c2VyRGF0YSkpOwogICAgICAgICBjb250ZXh0LT5kaXNw
YXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZGNiYTA2MDgyYzVmNjZl
MzE5YTE1ZWU1OTdmYzY0OTc2NmIwNWU2Yy4uNWJmNGU2ZDAxZGU4NDNlZDI4Nzg4M2VhM2EwM2U4
NDk0OTNiZWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0xNzksNyArMTc5
LDcgQEAgY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGwg
ewogfTsKIAogU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9y
KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQotICAgIDogbV9p
bXBsKHN0ZDo6bWFrZV91bmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwo
KSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkp
CisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3Lmlz
TnVsbCgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGlu
ZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIu
Y3BwCmluZGV4IGZkYjhjZTI5MmQ3MzhkYTQyMDM4YWE5NjVhZjNhY2ExNzhhODBjZWIuLjhkYzc2
ZmEyZTU5ZWE2N2UwMjE3MzhjMzExYTM1NzdmNGQzNmU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBBcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFByb3BlcnR5SW52YWxpZFVSTChjb25z
dCBTdHJpbmcmIHByb3AKIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nRGV2ZWxv
cGVyV2FybmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1fY29uc29sZUNv
bnRleHQpCi0gICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNl
OjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZl
c3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVzc2FnZSkpKTsKKyAgICAgICAgbV9jb25zb2xlQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2csIEpT
Qzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0aW9u
IG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5zdHJpbmcoKSwgIjogIl9zLCBtZXNzYWdlKSkp
OwogfQogCiBVUkwgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VTdGFydFVSTChjb25z
dCBKU09OOjpPYmplY3QmIG1hbmlmZXN0LCBjb25zdCBVUkwmIGRvY3VtZW50VVJMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXgg
OWJmYTVmOTQ5OTRiMDU0NTA2YjgyNmEzMTRiODI1ODI3ZWE0MWFkYi4uN2U0Zjc5NDcxZTJjNTlm
ZTcxYzE0ODEzMmY0YjU1MWQ4ZmZjNzkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC01Miw3ICs1Miw3IEBAIE5hdmlnYXRv
ckJlYWNvbiogTmF2aWdhdG9yQmVhY29uOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewog
ICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JCZWFjb24qPihTdXBw
bGVtZW50PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKKyAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmlnYXRvcik7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRl
VG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5k
b3dDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNo
ZXMuY3BwCmluZGV4IDVlZDFmNWNjYTY0MWViMDRlYzBlMGEwY2UwNmM4MzcyNDU2OGEyZmYuLjYx
NTM5NDMwZGZiOTYxNmZkMjg4ZmVkOTJjYjk0NGZmNDQ2YjAxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRE9NV2luZG93Q2FjaGVzKiBET01XaW5kb3dDYWNoZXM6OmZyb20oRE9NV2luZG93KiB3aW5k
b3cpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd0NhY2hl
cyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkp
KTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CisgICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5kb3cpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxT
Y29wZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2Jh
bFNjb3BlQ2FjaGVzLmNwcAppbmRleCAwNjU2YmVmMGIxNzE4ZTMzZGJjN2ZhMGVlNjBjNTdkNDhl
MzhkNGU4Li41MTE4YTQ4ODUwZjI0MmQwNDRkM2I0MGZmMGUzYjIzYmI5NmUyOGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3Bl
Q2FjaGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcyogV29y
a2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20oV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQogewog
ICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZUNhY2hl
cyo+KFN1cHBsZW1lbnQ8V29ya2VyR2xvYmFsU2NvcGU+Ojpmcm9tKCZzY29wZSwgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7
CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyR2xvYmFsU2Nv
cGVDYWNoZXM+KHNjb3BlKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7CiAgICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUo
bmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFs
cy5jcHAKaW5kZXggNzFmNDM4Y2Y3ODZjNzZkN2I1ODcyMTU1OTc2NjhiNjIzNjFiNTk5My4uMTE4
MWJkOTg1YTIyYmE0OTNmODM2MzFkN2U0MWZlZTg3OWI1NmIzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9O
YXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTmF2aWdhdG9yQ3JlZGVu
dGlhbHMqIE5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQog
ewogICAgIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yQ3JlZGVudGlhbHMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yQ3JlZGVudGlhbHM+
KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yQ3Jl
ZGVudGlhbHM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwog
ICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5l
d1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCBiNmZkNjhkNjcy
ZWRlMzg3NzhjMTVjNmZlYWFmNDZiNDU1ZTVhMWNkLi43NWVkYjZhOTM2Mzg4MGU1ODdjMzU3NTZi
MTRkZWM5ZjliNDVlNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBA
QCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgICAgICBhdXRvIHN5c3RlbUlEID0gSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVrU3lzdGVtSUQodmlldywgb2Zmc2V0
KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgICAgIGlm
IChzeXN0ZW1JRCA9PSBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6OmZhaXJQbGF5U3lzdGVt
SUQoKSkgewotICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gc3RkOjptYWtlX3VuaXF1ZTxJU09G
YWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CisgICAgICAgICAgICBhdXRvIGZwc1Bzc2ggPSBt
YWtlVW5pcXVlPElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveD4oKTsKICAgICAgICAgICAgIGlm
ICghZnBzUHNzaC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBwc3NoQm94ZXMuYXBwZW5kKFdURk1vdmUoZnBzUHNz
aCkpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhCiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0oc3lzdGVtSUQpOwogI2VuZGlmCi0gICAgICAgIGF1dG8gcHNz
aEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94PigpOworICAgICAgICBhdXRvIHBzc2hCb3ggPSBtYWtlVW5pcXVlPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKICAgICAgICAgaWYgKCFwc3NoQm94LT5yZWFkKHZp
ZXcsIG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNLmNwcAppbmRleCA4MjYyODkzZmUwYWY5OTkxNGVkMzllOTYwY2YxMGE3NTM0MDcwNWI2
Li44MzdkZjEyM2FlNTk2ZjM1MzdjOTE1MjcwM2UzZDI3MWIzNDZlYjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5jcHAKQEAgLTYxLDE1ICs2MSwxNSBAQCBzdHJ1Y3QgQ0RNRmFjdG9yeSB7CiBzdGF0aWMg
VmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCkKIHsKICAgICBzdGF0
aWMgYXV0byBjZG1zID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxDRE1GYWN0b3J5Kj4gewot
ICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCisgICAgICAgIG5l
dyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPExlZ2Fj
eUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKICAgICAgICAgICAgIExlZ2FjeUNETVByaXZh
dGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6
c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICAgICAgICAgLy8gRklYTUU6IGluaXRp
YWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMTgsIGh0dHA6
Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNE
TSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXllcj4o
Y2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0
dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LAogICAgICAgICAg
ICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1l
ZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogI2lmIChIQVZFKEFW
Q09OVEVOVEtFWVNFU1NJT04pIHx8IEhBVkUoQVZTVFJFQU1TRVNTSU9OKSkgJiYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2Rt
KTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJu
IG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2RtKTsgfSwKICAgICAg
ICAgICAgIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtLCBD
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBl
KSwKICNlbmRpZgogICAgIH0pOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxM
ZWdhY3lDRE0+IExlZ2FjeUNETTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAg
IGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3RlbSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNPihrZXlTeXN0ZW0pOwogfQogCiBMZWdh
Y3lDRE06OkxlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgK
aW5kZXggNDU4ZWM1M2I0MzM3YjE3MTA1NTZmOGExN2I0ZWYwMWVmY2UxNTY0ZS4uZmI1ZGExZjE2
ZGEwMmVjODRjMzQ3N2QzNTVmZTBhNWU4OTY0MDZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgKQEAgLTUw
LDcgKzUwLDggQEAgY2xhc3MgTGVnYWN5Q0RNQ2xpZW50IHsKICAgICB2aXJ0dWFsIFJlZlB0cjxN
ZWRpYVBsYXllcj4gY2RtTWVkaWFQbGF5ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29uc3QgPSAwOwog
fTsKIAotY2xhc3MgTGVnYWN5Q0RNIHsKK2NsYXNzIExlZ2FjeUNETSBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5Q0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCmlu
ZGV4IDBhOGQ1NGU1YzU2NWYzNDUwODU2MmM1YThjMWUwMDM1YWYxNGE3NGYuLmYyNDk3MDcyZTc4
NTc2MGM1OWUyMzAzOTM0ZmI3ZjljYzQ3NzJkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2
YXRlLmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKIGNsYXNzIExl
Z2FjeUNETVNlc3Npb25DbGllbnQ7CiAKIGNsYXNzIENETVByaXZhdGVJbnRlcmZhY2UgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVByaXZhdGVJbnRlcmZh
Y2UoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUludGVyZmFjZSgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCmlu
ZGV4IGM5MzE2ZGZkOGFiYjQwNTQ5MmY1NTVlYjNkMWIzZDA5MTdjZWZmNTAuLjNhOGMwMGY1MjMx
ZjUyYTZlODlkMTgzZDE1MTFjM2FjODc3M2ExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIExlZ2FjeUNE
TVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5Q0RNUHJpdmF0ZUNs
ZWFyS2V5OjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkNsZWFyS2V5PihjbGllbnQpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCmluZGV4IDJm
N2IwMzUzOWVmOGVhNDc0ZTIzNmQwNWQ5ZTE3ZmVjNDg0ZTYyN2UuLmJjNzc3ZjBjYmM4Y2U3Yjg5
ZTk0M2I4YTYzZTRlNmU4Mjg5YjM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNl
c3Npb25DbGVhcktleS5oCkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IDogcHVibGljIExlZ2FjeUNETVNlc3Npb24gewor
Y2xhc3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25D
bGVhcktleShMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lv
bkNsZWFyS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCmluZGV4IGFkZGM1NDg5NmI4YTQ0MzhjZmJmZDA2NTgwYWRiYzg2MGE4MWY4NjQu
LmRiNjM5MGU3Zjk5MjU5NzdiODdjYTAwOWVkYWJkNTFjZGI2NjczMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yNDQsNyArMjQ0
LDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0
Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgIH0KIAogICAgIG1fYmxvYkxvYWRlci5lbXBs
YWNlKCp0aGlzKTsKLSAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKKyAgICBtX2Jsb2JMb2FkZXIt
PmxvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVy
KTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
aW5kZXggY2QzNDVlYjllYzM0MGMzNmUwZjBhNmVlZDgyZGQ5ODhiNGY5N2QzOS4uOTQwMTNjZjRl
YTY1MjM4ZDgzYjliNGM4MWRiN2QxODE2NTMyNDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRj
aFJlcXVlc3QmIHJlcXVlc3QKIAogICAgIHJlc3BvbnNlLT5hZGRBYm9ydFN0ZXBzKHJlcXVlc3Qu
c2lnbmFsKCkpOwogCi0gICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Qm9keUxvYWRlcj4ocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykp
OworICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBtYWtlVW5pcXVlPEJvZHlMb2FkZXI+KHJl
c3BvbnNlLmdldCgpLCBXVEZNb3ZlKHJlc3BvbnNlQ2FsbGJhY2spKTsKICAgICBpZiAoIXJlc3Bv
bnNlLT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpKQogICAgICAgICByZXNw
b25zZS0+bV9ib2R5TG9hZGVyID0gbnVsbHB0cjsKIH0KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKQogCiBib29sIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0
aGlzLCAmbV9yZXNwb25zZS5tX2JvZHktPmNvbnN1bWVyKCkpOworICAgIG1fbG9hZGVyID0gbWFr
ZVVuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIo
KSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwogICAgIHJldHVybiBt
X2xvYWRlci0+aXNTdGFydGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKaW5kZXggNjEwMjA4OTljYmM0YTdlNDMzYjE1
MWRjY2FlYmZlOTA3NjRkM2UyZC4uODUwZDIyZGUyODViYjMzNWQyMmU4YzJlMjUzYjdhYjZlMGM2
MDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRv
ckdhbWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0
b3JHYW1lcGFkLmNwcApAQCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JHYW1lcGFkKiBOYXZpZ2F0
b3JHYW1lcGFkOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdh
bWVwYWQqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHYW1lcGFkKj4oU3VwcGxl
bWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9
IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcAppbmRleCBiMDlmYzM0MzNiYmZiYjcyOGYzMTVjMTUzM2E2ZjJjOWU0ZmMwMDcx
Li5jZDgwNzBiMjA3ZGI4YTM0NDAyNmNmZjYxMDViODVlZTE5YmM1MjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgY29uc3QgY2hhciogR2VvbG9jYXRpb25D
b250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBh
Z2UqIHBhZ2UsIEdlb2xvY2F0aW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKHBhZ2Up
OwotICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Db250
cm9sbGVyPigqcGFnZSwgY2xpZW50KSk7CisgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRv
KHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1
ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKIH0KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKaW5kZXggYjM0ZjQ5YTY3MWQ4
NWY1MTQyYjhiYWYwZjUyYmE5OTFhYzQzNTlkYy4uMzVkZmJmOGYzZjI1NjljMDEzNTM1NjYzMDBm
NWI3ODM3ZGUyOGZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
TmF2aWdhdG9yR2VvbG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpmcm9tKE5hdmlnYXRv
ciYgbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8TmF2aWdhdG9yR2VvbG9jYXRpb24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46
OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmln
YXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZp
Z2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01X
aW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGM3MjAzYTlhODY0MDk3MDUwZDNkYzAwNzky
ZjdhNmI1ODFmYWEyNWUuLjVlOWQ5Nzk2NmJmZGU1OGU2NjA5OWE1MDllNjE4Yjg0YzE4ZDA1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
RE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2UqIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6ZnJvbShET01XaW5kb3cq
IHdpbmRvdykKIHsKICAgICBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqPihTdXBwbGVtZW50PERPTVdpbmRv
dz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50
KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2lu
ZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93KTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5k
b3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cAppbmRleCBmNDMwOTBjNGRjYzNlZGU1ZTI3ZDFhYTQ0Mzg0NDQ3ZDg0OWM2NDBiLi45YTc4MTI3
ODQ2M2VkMGE0YTBhZGRkM2Y3ZGIwYzU2NTY5NjJiOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC01MTcsNyArNTE3
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNv
bnN0IFN0cmluZyYgaW5kZXhOYW1lKQogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnaW5kZXgnIG9uICdJ
REJPYmplY3RTdG9yZSc6IFRoZSBzcGVjaWZpZWQgaW5kZXggd2FzIG5vdCBmb3VuZC4iX3MgfTsK
IAotICAgIGF1dG8gaW5kZXggPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOworICAgIGF1dG8gaW5kZXggPSBtYWtlVW5p
cXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwog
CiAgICAgUmVmPElEQkluZGV4PiByZWZlcmVuY2VkSW5kZXggeyAqaW5kZXggfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IGZhMmNkN2VhZDA5YjYwNTUyNWI4Y2I0NDFlZjcwMDFkODMzNTAxMDAuLjQyMjQzZmJhNTcz
MTI5NTQxODg5NGEzMjA0M2U4OWUwYjJjMWE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE3OSw3ICsxNzksNyBA
QCBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplYwogICAgIGlmICghaW5mbyB8fCAoIWZvdW5kICYmICFp
c1ZlcnNpb25DaGFuZ2UoKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVy
cm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29iamVjdFN0b3JlJyBvbiAnSURCVHJhbnNhY3Rpb24n
OiBUaGUgc3BlY2lmaWVkIG9iamVjdCBzdG9yZSB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAg
YXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9y
ZSA9IG1ha2VVbmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
ICppbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZS5n
ZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KG9iamVjdFN0b3JlTmFtZSwg
V1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC02NjcsNyArNjY3LDcgQEAgUmVmPElEQk9iamVj
dFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJgogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3JlZmVyZW5jZWRPYmplY3RT
dG9yZUxvY2spOwogCi0gICAgYXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
T2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0aGlzKTsKKyAg
ICBhdXRvIG9iamVjdFN0b3JlID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJhd09iamVjdFN0b3Jl
ID0gb2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChp
bmZvLm5hbWUoKSwgV1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC03NTUsNyArNzU1LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURC
T2JqZWN0U3RvcmUmIG9iamVjdFN0b3IKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3JlYXRlSW5k
ZXhPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwogICAgIH0pKTsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBv
YmplY3RTdG9yZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0b3JlKTsKIH0KIAogdm9pZCBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
JiBvcGVyYXRpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNj
b3BlSW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBhNDg1MDNiNGQyZDgwNDI5NDY4NGE2NWE2NWVi
ZDY0ZjIzM2NkN2I5Li45Yjc1Nzc0OTIxYjQ2NTA2ZjU4M2RlN2ZlYzQyNTBlODU0YWNlNTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxT
Y29wZUluZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKiBXb3JrZXJHbG9iYWxTY29wZUlu
ZGV4ZWREYXRhYmFzZTo6ZnJvbShXb3JrZXJHCiAgICAgICAgIGlmICghY29ubmVjdGlvblByb3h5
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBuZXdTdXBwbGVt
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZT4o
c2NvcGUsICpjb25uZWN0aW9uUHJveHkpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwgKmNvbm5l
Y3Rpb25Qcm94eSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwog
ICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1
cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4
IDk0OGNmNzQ2NjNhZTY5YzgyZGE0NDRlMDkzNDczZGQ4NTZkNGRlOTMuLjM3NzExZGMxMDNkYjZj
OWE5YjgxM2RiYzlkZjc5OWI3ZTI2YTZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IElEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlCiAKIElEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6SURCQ29ubmVjdGlvblRvU2VydmVyKElEQkNvbm5lY3Rpb25Ub1Nl
cnZlckRlbGVnYXRlJiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUobWFrZVdlYWtQdHIoZGVs
ZWdhdGUpKQotICAgICwgbV9wcm94eShzdGQ6Om1ha2VfdW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94
eT4oKnRoaXMpKQorICAgICwgbV9wcm94eShtYWtlVW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94eT4o
KnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCAyNzUz
ZmQwYzI0NTdiOWMwOWQ5ZDg5ZTRmNzYyYjQ3OWY4YjQ0MGIxLi44ZTFkZTA2ZDcxZThmMGIyMjNk
Njg2ZTVlMWE4YTIyMDliNzQzODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAK
QEAgLTQyLDcgKzQyLDcgQEAgVHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0
aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICBpZiAobV9pbmRl
eElkZW50aWZpZXIpCiAgICAgICAgIG1faW5kZXhSZWNvcmRUeXBlID0gcmVxdWVzdC5yZXF1ZXN0
ZWRJbmRleFJlY29yZFR5cGUoKTsKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5k
aW5nQ3Vyc29yKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwor
ICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRp
Zmllcj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKIAogICAgIG1faWRiUmVxdWVzdCA9
ICZyZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCBmNmFiNGYzYWIyYzI4YjBlZTIyNDY4OTRhMGRl
NTg0YmQwODc1MWZkLi5mNTU2OGUzMjVkMzcwMTFhMjc1ZTAxZGY5NjZkZmRmNTk1MmU4YjMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTZXJ2
ZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVuCiAK
ICAgICBhdXRvIHVuaXF1ZUlEQkRhdGFiYXNlID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC5hZGQo
aWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAgaWYgKHVuaXF1ZUlEQkRhdGFiYXNlLmlzTmV3RW50
cnkpCi0gICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKKyAgICAgICAg
dW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxVbmlxdWVJREJE
YXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOwogCiAgICAgcmV0dXJuICp1bmlxdWVJREJEYXRh
YmFzZS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3Qg
SURCRGF0YWJhc2UKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmllcik7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1f
c2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9iYWNraW5n
U3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRl
SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVj
dG9yeVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIpOwogfQogCiB2b2lk
IElEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSkKQEAgLTc1Myw3ICs3NTMsNyBAQCB2b2lkIElEQlNlcnZlcjo6UXVvdGFVc2VyOjppbml0aWFs
aXplU3BhY2VVc2VkKHVpbnQ2NF90IHNwYWNlVXNlZCkKIElEQlNlcnZlcjo6UXVvdGFVc2VyJiBJ
REJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsK
ICAgICByZXR1cm4gKm1fcXVvdGFVc2Vycy5lbnN1cmUob3JpZ2luLCBbdGhpcywgJm9yaWdpbl0g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90YVVzZXI+KCp0aGlzLCBtX3F1
b3RhTWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50T3JpZ2luIHsgb3Jp
Z2luIH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxRdW90YVVzZXI+KCp0aGlzLCBtX3F1
b3RhTWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50T3JpZ2luIHsgb3Jp
Z2luIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNw
cAppbmRleCA2OTgzYzlkN2VhZmY1NjE2NzIwNGQ5NTJmMWYyMjY3YmI0MGNhNGJhLi44ZDkyMWQ4
ZWZlNmJhODQwYTMwZDYxZGZkYzZhNzIxZTgyOGE0M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNw
cApAQCAtOTIsNyArOTIsNyBAQCBJREJFcnJvciBJbmRleFZhbHVlU3RvcmU6OmFkZFJlY29yZChj
b25zdCBJREJLZXlEYXRhJiBpbmRleEtleSwgY29uc3QgSURCS2V5RGF0YQogICAgICAgICByZXR1
cm4gSURCRXJyb3IoQ29uc3RyYWludEVycm9yKTsKIAogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRy
eSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5k
ZXhWYWx1ZUVudHJ5PihtX3VuaXF1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPEluZGV4VmFsdWVFbnRyeT4obV91bmlxdWUpOwogCiAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+YWRkS2V5KHZhbHVlS2V5KTsKICAgICBtX29yZGVyZWRLZXlzLmluc2Vy
dChpbmRleEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
LmNwcAppbmRleCA0N2NjNDJmZDI2ZDY0NzNjNjQxOTI3ZTk5MmQ0ZWM2ZThkN2JmOGVlLi41ZTcx
NDQ5Nzg0YTBkYTA3Njc3ODlhOGRlZGM1MjI2ODlmNGQ4ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIElEQlNlcnZlciB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbj4gTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNyZWF0ZShNZW1vcnlJREJC
YWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZv
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uPihiYWNraW5nU3RvcmUsIGluZm8pOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPihiYWNraW5nU3RvcmUsIGluZm8pOwogfQogCiBNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
TWVtb3J5SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQlRyYW5zYWN0aW9u
SW5mbyYgaW5mbykKQEAgLTUyLDcgKzUyLDcgQEAgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG8KICAg
ICAgICAgSURCRGF0YWJhc2VJbmZvIGluZm87CiAgICAgICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tp
bmdTdG9yZS5nZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhpbmZvKTsKICAgICAgICAgaWYgKGVy
cm9yLmlzTnVsbCgpKQotICAgICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICAgICAgICAgIG1fb3JpZ2lu
YWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAg
fQogfQogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3QKIAogICAg
IGF1dG8gb3JpZ2luYWxBZGRSZXN1bHQgPSBtX29yaWdpbmFsVmFsdWVzLmFkZCgmb2JqZWN0U3Rv
cmUsIG51bGxwdHIpOwogICAgIGlmIChvcmlnaW5hbEFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PEtleVZhbHVlTWFwPigpOworICAgICAgICBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOwogCiAgICAgYXV0byogbWFwID0gb3JpZ2lu
YWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuY3BwCmluZGV4IDdkMTQyYjAwNTBhYjYwODgxZTM4N2JlOGMxOTg5NDdhYzZlOGRk
ODEuLmNmZmUzMzM3Zjc5NDQ4YjhjMjEzZGJiZTVmYTM1YjRkM2E3MGYyZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB1aW50NjRf
dCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAwMDA7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRl
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CiB9
CiAKIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElE
QkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAgLTYxLDcgKzYxLDcgQEAgTWVtb3J5
SURCQmFja2luZ1N0b3JlOjp+TWVtb3J5SURCQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0OwogSURC
RXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJ
REJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgaWYgKCFtX2RhdGFiYXNlSW5mbykKLSAgICAg
ICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9p
ZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAw
KTsKIAogICAgIGluZm8gPSAqbV9kYXRhYmFzZUluZm87CiAgICAgcmV0dXJuIElEQkVycm9yIHsg
fTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnNldERhdGFi
YXNlSW5mbyhjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCiAgICAgLy8gSXQgaXMgbm90IHZh
bGlkIHRvIGRpcmVjdGx5IHNldCBkYXRhYmFzZSBpbmZvIG9uIGEgYmFja2luZyBzdG9yZSB0aGF0
IGhhc24ndCBhbHJlYWR5IHNldCBpdHMgb3duIGRhdGFiYXNlIGluZm8uCiAgICAgQVNTRVJUKG1f
ZGF0YWJhc2VJbmZvKTsKIAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KGluZm8pOwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlu
ZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
bmRleC5jcHAKaW5kZXggNDlkZGNhNmJkNDBkMjlkNDJlMzhiODUxMzFjODlmZGZlN2Q0NzkyZC4u
ODU5NWRiYjhmNGE3ZWUzZDE5MWUzMWZiNjEwYjA0OTc1Yjg3NDYwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3Bw
CkBAIC0xOTQsNyArMTk0LDcgQEAgSURCRXJyb3IgTWVtb3J5SW5kZXg6OnB1dEluZGV4S2V5KGNv
bnN0IElEQktleURhdGEmIHZhbHVlS2V5LCBjb25zdCBJbmRleEtleSYgaW4KICAgICBMT0coSW5k
ZXhlZERCLCAiTWVtb3J5SW5kZXg6OnByb3Zpc2lvbmFsUHV0SW5kZXhLZXkiKTsKIAogICAgIGlm
ICghbV9yZWNvcmRzKSB7Ci0gICAgICAgIG1fcmVjb3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8SW5k
ZXhWYWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOworICAgICAgICBtX3JlY29yZHMgPSBtYWtl
VW5pcXVlPEluZGV4VmFsdWVTdG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKICAgICAgICAgbm90aWZ5
Q3Vyc29yc09mQWxsUmVjb3Jkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTI1OSw3ICsyNTksNyBA
QCBNZW1vcnlJbmRleEN1cnNvciogTWVtb3J5SW5kZXg6Om1heWJlT3BlbkN1cnNvcihjb25zdCBJ
REJDdXJzb3JJbmZvJiBpbmZvKQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8p
OwogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eU9iamVjdFN0b3JlLmNwcAppbmRleCBlZDZlYmE5MjdmMWY0ZjZiOWMzMDY4ZjZiNWQ4OGRlMjk5
NzI2N2ViLi41YjQ0YTczODc4YzlmZGQ3YTFlMDVhOTViNzY1N2ViZTYzNjM1MTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTI1OSw4ICsyNTksOCBAQCBJREJFcnJvciBNZW1vcnlP
YmplY3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbgogCiAgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpIHsKICAgICAgICAgQVNTRVJUKCFt
X29yZGVyZWRLZXlzKTsKLSAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gc3RkOjptYWtlX3VuaXF1
ZTxLZXlWYWx1ZU1hcD4oKTsKLSAgICAgICAgbV9vcmRlcmVkS2V5cyA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCS2V5RGF0YVNldD4oKTsKKyAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gbWFrZVVuaXF1
ZTxLZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgbV9vcmRlcmVkS2V5cyA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPElEQktleURhdGFTZXQ+KCk7CiAgICAgfQogCiAgICAgYXV0byBt
YXBSZXN1bHQgPSBtX2tleVZhbHVlU3RvcmUtPnNldChrZXlEYXRhLCB2YWx1ZS5kYXRhKCkpOwpA
QCAtNDk3LDcgKzQ5Nyw3IEBAIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yKiBNZW1vcnlPYmplY3RT
dG9yZTo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNvckluZm8mCiAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4o
KnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1l
bW9yeU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggNGYyMDhlNGQwNjA0Yjg3N2RkMWQ3NDg2N2I4ZTNlMjg3MjdhYzA0NC4uNmU4OTNm
OTg0NGU3MDhlZDE5NzJiNGEyYzE4YjE1OWZhNzBiNTk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKQEAgLTYyMyw3ICs2MjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0
YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlh
bAogICAgIH0KIAogICAgIC8vIFRoaXMgaW5pdGlhbCBkYXRhYmFzZSBpbmZvIG1hdGNoZXMgdGhl
IGRlZmF1bHQgdmFsdWVzIHdlIGp1c3QgcHV0IGludG8gdGhlIG1ldGFkYXRhIGRhdGFiYXNlLgot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVy
LmRhdGFiYXNlTmFtZSgpLCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5n
RGF0YWJhc2VJbmZvKCkKQEAgLTY1OCw3ICs2NTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0
YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNl
SQogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBkYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOwor
ICAgIGF1dG8gZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFi
YXNlTmFtZSwgZGF0YWJhc2VWZXJzaW9uKTsKIAogICAgIHsKICAgICAgICAgU1FMaXRlU3RhdGVt
ZW50IHNxbCgqbV9zcWxpdGVEQiwgIlNFTEVDVCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYywg
bWF4SW5kZXhJRCBGUk9NIE9iamVjdFN0b3JlSW5mbzsiX3MpOwpAQCAtODIwLDcgKzgyMCw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUlu
Zm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAKICAgICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxE
YXRhYmFzZVBhdGgoKTsKIAotICAgIG1fc3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0
ZURhdGFiYXNlPigpOworICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNl
PigpOwogICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBk
YkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CkBAIC05
MDMsMTEgKzkwMywxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJh
bnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGVzdGFibGlzaCB0cmFuc2FjdGlv
biBpZGVudGlmaWVyIHRoYXQgYWxyZWFkeSBleGlzdHMiX3MgfTsKICAgICB9CiAKLSAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJUcmFuc2Fj
dGlvbj4oKnRoaXMsIGluZm8pOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtl
VW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CiAKICAgICBhdXRvIGVy
cm9yID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKm1fc3FsaXRlREIpOwogICAg
IGlmIChlcnJvci5pc051bGwoKSAmJiBpbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6
OlZlcnNpb25jaGFuZ2UpIHsKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZl
cnNpb25DaGFuZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJh
c2VJbmZvKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFu
Z2UgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJbmZvKTsKIAogICAg
ICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiVVBEQVRFIElEQkRhdGFiYXNl
SW5mbyBTRVQgdmFsdWUgPSA/IHdoZXJlIGtleSA9ICdEYXRhYmFzZVZlcnNpb24nOyJfcyk7CiAg
ICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMjYxMSw3ICsyNjExLDcg
QEAgU1FMaXRlU3RhdGVtZW50KiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNhY2hlZFN0YXRlbWVu
dChTUUxpdGVJREJCYWNraW5nU3RvcmU6OlMKICAgICB9CiAKICAgICBpZiAobV9zcWxpdGVEQikg
ewotICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9
IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50
KTsKKyAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0g
PSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0YXRlbWVudCk7CiAg
ICAgICAgIGlmIChtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXS0+
cHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tz
dGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwCmluZGV4IGY4NDA1YTc5OGEzNjgxMGRjNTc2YWYxZTczYmNhZjUzMTAyMzdiYWYuLmM2
YjNmZDk1M2EwZDUzYWMxNTY4ZTI4NDhjYmM3OGExMmYxOTU3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZmV0Y2hMaW1p
dCA9IDg7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNv
cjo6bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJ
REJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1
ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKKyAgICBhdXRvIGN1cnNvciA9
IG1ha2VVbmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7CiAKICAgICBp
ZiAoIWN1cnNvci0+ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNTksNyArNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxp
dGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aQogCiBzdGQ6OnVuaXF1
ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlQmFja2lu
Z1N0b3JlQ3Vyc29yKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgdWludDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFu
Z2UpOworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5z
YWN0aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7CiAKICAgICBpZiAoIWN1cnNv
ci0+ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk5
LDcgKzE5OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQo
Y29uc3QgU3RyaW5nJiBzcWwpCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRVcHBlcktleS5pc051bGwo
KSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCkpOwogCi0g
ICAgbV9zdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV90cmFu
c2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsKKyAgICBtX3N0
YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9uLT5zcWxp
dGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOwogCiAgICAgaWYgKG1fc3RhdGVtZW50
LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChwcmVwYXJlL2lkKSAtICclcyciLCBtX3RyYW5zYWN0
aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKQEAg
LTQ2NCw3ICs0NjQsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1
cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZh
bHVlKQotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSks
IGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFs
dWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YS5kYXRhKCksIGtleURh
dGEuc2l6ZSgpLCByZWNvcmQucmVjb3JkLnByaW1hcnlLZXkpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB2YWx1ZSBkYXRhIGZyb20gZGF0YWJhc2Ugd2hp
bGUgYWR2YW5jaW5nIGluZGV4IGN1cnNvciIpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIFNRTGl0ZUlE
QkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJl
Y29yZChTUUxpdGVDdXJzCiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7CiAg
ICAgICAgICAgICBvYmplY3RTdG9yZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwg
a2V5RGF0YSk7Ci0gICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURh
dGEpKSk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJW
YWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICAv
LyBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSByZWNvcmQgd2UncmUgdHJ5aW5nIHRvIHJldHJpZXZl
IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlLgogICAgICAgICAgICAgLy8g
U2tpcCBvdmVyIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYTZhM2M1
ZmZmMzM4MGMyNWVmNzM2MWU2ODhiZWYzNmMwNjE1ZmM4My4uZDIxMmRlMmI2Yjg4YWZmZTBhMzVi
MGZkMGZkMzNmYzg2N2NlY2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBA
IC01OCw3ICs1OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpiZWdpbihTUUxp
dGVEYXRhYmFzZSYgZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9u
KTsKIAotICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRy
YW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6
OlJlYWRvbmx5KTsKKyAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVU
cmFuc2FjdGlvbj4oZGF0YWJhc2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2Rl
OjpSZWFkb25seSk7CiAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4oKTsKIAogICAgIGlm
IChtX3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcAppbmRleCAxZWJjMDgxOGY4OWVmM2Y3NmI0NmIyN2RlNzRmMzFjY2MzZTQ2Y2NmLi5iZTU5
MWI5ODg0MGVkYWQ2NDgwYWYwYzQxYjdjOGU5MmM1ZjEyYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRE
ZWxldGVCYWNraW5nU3RvcmUodWludDY0X3QgZGVsZXRlZFZlcnNpb24pCiAgICAgLy8gd2Ugd29u
J3QgaGF2ZSBhIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8uIEluIHRoYXQgY2FzZSwg
d2UnbGwgbWFudWZhY3R1cmUgb25lIHVzaW5nIHRoZQogICAgIC8vIHBhc3NlZCBpbiBkZWxldGVk
VmVyc2lvbiBhcmd1bWVudC4KICAgICBpZiAoIW1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUlu
Zm8pCi0gICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBkZWxl
dGVkVmVyc2lvbik7CisgICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBk
ZWxldGVkVmVyc2lvbik7CiAKICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdCkgewogICAg
ICAgICBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5ub3RpZnlEaWREZWxldGVEYXRhYmFzZSgqbV9t
b3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyk7CkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlu
Zm8mIGluZm8sIGNvbnN0IEkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJ
bmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUi
KTsKICAgICAKLSAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPihpbmZvKTsKKyAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPihpbmZvKTsKICAgICBtX2JhY2tpbmdTdG9yZU9wZW5FcnJvciA9IGVycm9yOwogCiAg
ICAgQVNTRVJUKG1faXNPcGVuaW5nQmFja2luZ1N0b3JlKTsKQEAgLTE3NDksNyArMTc0OSw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uID09IHRyYW5zYWN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFu
Z2VEYXRhYmFzZUNvbm5lY3Rpb24gfHwgJm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5kYXRh
YmFzZUNvbm5lY3Rpb24oKSA9PSBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24pOwog
ICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJh
c2VJbmZvKCkpOwotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
RGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJh
c2VJbmZvKCkpOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZv
KCkpOwogICAgIH0KIAogICAgIElEQkVycm9yIHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5zdGF0ZSgp
ID09IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkID8gdHJhbnNh
Y3Rpb24tPnJlc3VsdCgpIDogZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbi5jcHAKaW5kZXggZjE3YTRlNTUyM2ZiNWY2MWIwMjZhMDkxNDdmODE0MWQ1YjY0
MTM5YS4uODU0MGNhNzg2ZDU3MzU4ZDk4MmM3M2U2NDYwZjdmOGYwYTg4MzQ1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNTEsNyArNTEsNyBA
QCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgogICAgIEFTU0VSVChkYXRhYmFzZSk7CiAKICAgICBp
ZiAobV90cmFuc2FjdGlvbkluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lv
bmNoYW5nZSkKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygpKTsKKyAgICAgICAgbV9vcmlnaW5h
bERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5m
bygpKTsKIAogICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+c2Vy
dmVyKCkpCiAgICAgICAgIHNlcnZlci0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVz
dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmNwcAppbmRleCBiMTBkODQwOTliMjUyOGU2ZjczYzI4YjE1MDRhOGE5MzI0ZDBi
MjFhLi4yMTY0MTZhZmExMWNmMjU1ZDM2ZGVmYjNlZmYzNmVmYWYxOTU3MTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1
ZXN0RGF0YS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3RE
YXRhKCkKIAogSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQkNsaWVudDo6
SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHJveHksIGNvbnN0IElEQk9wZW5EQlJlcXVl
c3QmIHJlcXVlc3QpCiAgICAgOiBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rp
b25Qcm94eS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRl
bnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVjdGlv
blByb3h5LCByZXF1ZXN0KSkKKyAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIobWFrZVVuaXF1ZTxJ
REJSZXNvdXJjZUlkZW50aWZpZXI+KGNvbm5lY3Rpb25Qcm94eSwgcmVxdWVzdCkpCiAgICAgLCBt
X2RhdGFiYXNlSWRlbnRpZmllcihyZXF1ZXN0LmRhdGFiYXNlSWRlbnRpZmllcigpKQogICAgICwg
bV9yZXF1ZXN0ZWRWZXJzaW9uKHJlcXVlc3QudmVyc2lvbigpKQogICAgICwgbV9yZXF1ZXN0VHlw
ZShyZXF1ZXN0LnJlcXVlc3RUeXBlKCkpCkBAIC00OSw4ICs0OSw4IEBAIElEQlJlcXVlc3REYXRh
OjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29u
bmVjdGlvblByCiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRy
YW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgOiBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKG9wZXJhdGlvbi50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkuY29ubmVjdGlvblBy
b3h5KCkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1fcmVxdWVzdElkZW50
aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5p
ZGVudGlmaWVyKCkpKQotICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIoc3RkOjptYWtlX3Vu
aXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSkpCisgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPihvcGVyYXRpb24uaWRlbnRpZmllcigpKSkKKyAgICAsIG1fdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJh
bnNhY3Rpb25JZGVudGlmaWVyKCkpKQogICAgICwgbV9vYmplY3RTdG9yZUlkZW50aWZpZXIob3Bl
cmF0aW9uLm9iamVjdFN0b3JlSWRlbnRpZmllcigpKQogICAgICwgbV9pbmRleElkZW50aWZpZXIo
b3BlcmF0aW9uLmluZGV4SWRlbnRpZmllcigpKQogewpAQCAtNTgsNyArNTgsNyBAQCBJREJSZXF1
ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYg
b3BlcmF0aW9uKQogICAgICAgICBtX2luZGV4UmVjb3JkVHlwZSA9IG9wZXJhdGlvbi5pbmRleFJl
Y29yZFR5cGUoKTsKIAogICAgIGlmIChvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKQotICAg
ICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm9wZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpOworICAgICAgICBtX2N1cnNv
cklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlv
bi5jdXJzb3JJZGVudGlmaWVyKCkpOwogfQogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERh
dGEoY29uc3QgSURCUmVxdWVzdERhdGEmIG90aGVyKQpAQCAtNzEsMTEgKzcxLDExIEBAIElEQlJl
cXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgb3RoZXIpCiAg
ICAgLCBtX3JlcXVlc3RUeXBlKG90aGVyLm1fcmVxdWVzdFR5cGUpCiB7CiAgICAgaWYgKG90aGVy
Lm1fcmVxdWVzdElkZW50aWZpZXIpCi0gICAgICAgIG1fcmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fcmVxdWVzdElkZW50
aWZpZXIpOworICAgICAgICBtX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3JlcXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAob3Ro
ZXIubV90cmFuc2FjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3Ry
YW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRl
bnRpZmllcik7CiAgICAgaWYgKG90aGVyLm1fY3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgbV9j
dXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KCpvdGhlci5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRp
Zmllcik7CiB9CiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1
ZXN0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtMTAyLDExICsxMDIsMTEgQEAgdm9p
ZCBJREJSZXF1ZXN0RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlcXVlc3REYXRhJiBzb3Vy
Y2UsIElEQlJlcXVlc3REYXRhJgogICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSWRlbnRp
ZmllciA9IHNvdXJjZS5tX2RhdGFiYXNlSWRlbnRpZmllci0+aXNvbGF0ZWRDb3B5KCk7CiAKICAg
ICBpZiAoc291cmNlLm1fcmVxdWVzdElkZW50aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1f
cmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmll
cj4oKnNvdXJjZS5tX3JlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9y
ZXF1ZXN0SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291
cmNlLm1fcmVxdWVzdElkZW50aWZpZXIpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbklk
ZW50aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2Fj
dGlvbklkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAoc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcikKLSAg
ICAgICAgZGVzdGluYXRpb24ubV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAg
ICAgZGVzdGluYXRpb24ubV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCpzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogdWludDY0X3Qg
SURCUmVxdWVzdERhdGE6OnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVl
c3REYXRhLmgKaW5kZXggNDVjZmZhZWE2MDNhNTNiNTk5MDRjOGIxNGI3YTFkZWY3ZDI1ZjMxMC4u
NDA4YjRlNDYyODczMzdiOWFjMzQ0YWZiZjQ2OTE1ODY4ZTgwZjM1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRh
LmgKQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVj
dCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Km9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9y
ZXF1ZXN0SWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBi
b29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERh
dGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291
cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBX
VEZNb3ZlKG9iamVjdCk7CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRl
bnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVj
dCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICByZXF1ZXN0Lm1fY3Vyc29ySWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHRE
YXRhLmNwcAppbmRleCBhODk0NTRlNmU2M2Y2ZWI3Y2I1MDM4YjljOTMyZmEyMTg2MzNlZGM2Li40
Y2JkNWQ5YmRmMGE4NTIzYmY3ZjUyYWM1YmM1Y2I0YjdlZDEwNDc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEu
Y3BwCkBAIC01NywxNSArNTcsMTUgQEAgSURCUmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YShjb25z
dCBJREJSZXN1bHREYXRhJiBvdGhlcikKICAgICAsIG1fcmVzdWx0SW50ZWdlcihvdGhlci5tX3Jl
c3VsdEludGVnZXIpCiB7CiAgICAgaWYgKG90aGVyLm1fZGF0YWJhc2VJbmZvKQotICAgICAgICBt
X2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIu
bV9kYXRhYmFzZUluZm8pOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURC
RGF0YWJhc2VJbmZvPigqb3RoZXIubV9kYXRhYmFzZUluZm8pOwogICAgIGlmIChvdGhlci5tX3Ry
YW5zYWN0aW9uSW5mbykKLSAgICAgICAgbV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKKyAgICAg
ICAgbV90cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90
aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKICAgICBpZiAob3RoZXIubV9yZXN1bHRLZXkpCi0gICAg
ICAgIG1fcmVzdWx0S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9y
ZXN1bHRLZXkpOworICAgICAgICBtX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4o
Km90aGVyLm1fcmVzdWx0S2V5KTsKICAgICBpZiAob3RoZXIubV9nZXRSZXN1bHQpCi0gICAgICAg
IG1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dl
dFJlc3VsdCk7CisgICAgICAgIG1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+
KCpvdGhlci5tX2dldFJlc3VsdCk7CiAgICAgaWYgKG90aGVyLm1fZ2V0QWxsUmVzdWx0KQotICAg
ICAgICBtX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigq
b3RoZXIubV9nZXRBbGxSZXN1bHQpOworICAgICAgICBtX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlx
dWU8SURCR2V0QWxsUmVzdWx0Pigqb3RoZXIubV9nZXRBbGxSZXN1bHQpOwogfQogCiBJREJSZXN1
bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIHRoYXQsIElzb2xhdGVk
Q29weVRhZykKQEAgLTg3LDE1ICs4NywxNSBAQCB2b2lkIElEQlJlc3VsdERhdGE6Omlzb2xhdGVk
Q29weShjb25zdCBJREJSZXN1bHREYXRhJiBzb3VyY2UsIElEQlJlc3VsdERhdGEmIGRlcwogICAg
IGRlc3RpbmF0aW9uLm1fcmVzdWx0SW50ZWdlciA9IHNvdXJjZS5tX3Jlc3VsdEludGVnZXI7CiAK
ICAgICBpZiAoc291cmNlLm1fZGF0YWJhc2VJbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2Rh
dGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1f
ZGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpz
b3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAg
ICBpZiAoc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3Ry
YW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqc291
cmNlLm1fdHJhbnNhY3Rpb25JbmZvLCBJREJUcmFuc2FjdGlvbkluZm86Oklzb2xhdGVkQ29weSk7
CisgICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJU
cmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElEQlRyYW5zYWN0aW9u
SW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fcmVzdWx0S2V5KQotICAgICAg
ICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4o
KnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAg
ZGVzdGluYXRpb24ubV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCpzb3VyY2Uu
bV9yZXN1bHRLZXksIElEQktleURhdGE6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5t
X2dldFJlc3VsdCkKLSAgICAgICAgZGVzdGluYXRpb24ubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkdldFJlc3VsdD4oKnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0UmVzdWx0OjpJ
c29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2dldFJlc3VsdCA9IG1ha2VVbmlx
dWU8SURCR2V0UmVzdWx0Pigqc291cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xh
dGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX2dldEFsbFJlc3VsdCkKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4o
KnNvdXJjZS5tX2dldEFsbFJlc3VsdCwgSURCR2V0QWxsUmVzdWx0OjpJc29sYXRlZENvcHkpOwor
ICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxs
UmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJREJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVk
Q29weSk7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZXJyb3IoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVy
cm9yKQpAQCAtMTExLDcgKzExMSw3IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3Bl
bkRhdGFiYXNlU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlCiAgICAgSURC
UmVzdWx0RGF0YSByZXN1bHQgeyByZXF1ZXN0SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5
cGUgPSBJREJSZXN1bHRUeXBlOjpPcGVuRGF0YWJhc2VTdWNjZXNzOwogICAgIHJlc3VsdC5tX2Rh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAg
ICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oY29ubmVjdGlvbi5kYXRhYmFzZSgpLT5pbmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNl
SW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCkt
PmluZm8oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxLDE1ICsxMjEsMTUgQEAg
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVl
c3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5E
YXRhYmFzZVVwZ3JhZGVOZWVkZWQ7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllciA9IHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmlkZW50aWZpZXIoKTsK
LSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5mbygp
KTsKLSAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRy
YW5zYWN0aW9uSW5mbz4odHJhbnNhY3Rpb24uaW5mbygpKTsKKyAgICByZXN1bHQubV9kYXRhYmFz
ZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VD
b25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5mbygpKTsKKyAgICByZXN1bHQubV90cmFuc2FjdGlv
bkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4odHJhbnNhY3Rpb24uaW5mbygp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6
OmRlbGV0ZURhdGFiYXNlU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgSURCUmVz
dWx0RGF0YSByZXN1bHQge0lEQlJlc3VsdFR5cGU6OkRlbGV0ZURhdGFiYXNlU3VjY2VzcywgcmVx
dWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZv
ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTE3MSwyMSArMTcxLDIxIEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6
cmVuYW1lSW5kZXhTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxCiBJREJS
ZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OnB1dE9yQWRkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiByZXN1bHRL
ZXkpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpQdXRPckFk
ZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPihyZXN1bHRLZXkpOworICAgIHJlc3VsdC5tX3Jl
c3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nl
c3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
SURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJ
REJSZXN1bHRUeXBlOjpHZXRSZWNvcmRTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAg
IHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRS
ZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0
PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURC
UmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxsUmVzdWx0JiBnZXRBbGxSZXN1
bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRBbGxS
ZWNvcmRzU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRBbGxS
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsK
KyAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4o
Z2V0QWxsUmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMDQsMTQgKzIwNCwx
NCBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZVJlY29yZFN1Y2Nlc3MoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZQogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRh
OjpvcGVuQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJSZXN1
bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Ok9wZW5DdXJzb3JTdWNjZXNzLCByZXF1ZXN0
SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VV
bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVz
dWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRU
eXBlOjpJdGVyYXRlQ3Vyc29yU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1
bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0
KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0
UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAppbmRleCA3MTdi
M2UyZGU1M2IzNTNmZWI2ZGQ3NTUwMGEwZTVlNjhjOTQ3YTNmLi42MjA2MmExZTI5NWY3YjU5ODE1
ODk1YjU3YmVjMDA4ZTViMTg3NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKQEAgLTE4NCw3ICsxODQsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1
bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7
Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBXVEZNb3Zl
KG9iamVjdCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0
aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigpOworICAgICAgICBhdXRvIG9iamVjdCA9
IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAg
ICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZvID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMjAyLDcg
KzIwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+
IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNP
YmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURh
dGE+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigpOwog
ICAgICAgICBPcHRpb25hbDxJREJLZXlEYXRhPiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+
PiBvcHRpb25hbDsKICAgICAgICAgaWYgKCFvcHRpb25hbCkKQEAgLTIxNCw3ICsyMTQsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHRE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0g
ICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7Cisg
ICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgICAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CkBA
IC0yMjMsNyArMjIzLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVz
dWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
aWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCR2V0QWxsUmVzdWx0PigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURC
R2V0QWxsUmVzdWx0PigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQog
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0QWxs
UmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAppbmRl
eCA5ODNjMWMxMWM5OWI0NWI2Y2U1NDRkZmNhYzAzN2U0YzczNzI5NWMzLi40ZmI5OTkxOWY2N2Q1
ZjdjOWFiYzEwOWUyZTMwMDBjY2U0YzQ0MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNw
cApAQCAtNTUsNyArNTUsNyBAQCBJREJUcmFuc2FjdGlvbkluZm8gSURCVHJhbnNhY3Rpb25JbmZv
Ojp2ZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdAogICAgIElEQlRyYW5z
YWN0aW9uSW5mbyByZXN1bHQoKElEQlJlc291cmNlSWRlbnRpZmllcihjb25uZWN0aW9uKSkpOwog
ICAgIHJlc3VsdC5tX21vZGUgPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2U7CiAg
ICAgcmVzdWx0Lm1fbmV3VmVyc2lvbiA9IG5ld1ZlcnNpb247Ci0gICAgcmVzdWx0Lm1fb3JpZ2lu
YWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3JpZ2lu
YWxEYXRhYmFzZUluZm8pOworICAgIHJlc3VsdC5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFr
ZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG9yaWdpbmFsRGF0YWJhc2VJbmZvKTsKIAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CkBAIC02Nyw3ICs2Nyw3IEBAIElEQlRyYW5zYWN0aW9uSW5mbzo6SURC
VHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAsIG1f
b2JqZWN0U3RvcmVzKGluZm8ubV9vYmplY3RTdG9yZXMpCiB7CiAgICAgaWYgKGluZm8ubV9vcmln
aW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZv
KTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKTsKIH0KIAogSURCVHJhbnNhY3Rp
b25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiB0aGF0
LCBJc29sYXRlZENvcHlUYWcpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25J
bmZvOjppc29sYXRlZENvcHkoY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBzb3VyY2UsIElEQlRy
YW5zCiAgICAgICAgIGRlc3RpbmF0aW9uLm1fb2JqZWN0U3RvcmVzLnVuY2hlY2tlZEFwcGVuZChv
YmplY3RTdG9yZS5pc29sYXRlZENvcHkoKSk7CiAKICAgICBpZiAoc291cmNlLm1fb3JpZ2luYWxE
YXRhYmFzZUluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0
YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3Rp
bmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xh
dGVkQ29weSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgK
aW5kZXggOTMwZDgwMjM2MTgyMzJhYmY2YzA4MWRmMjEyOTU4ZmY2MmE1NTVlZC4uN2I5NDc3ZThl
YzU1NGM5MTNkMmE0OGJlNTU4ZTE2MzNkOTNmY2U5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8u
aApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb25JbmZvOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
REJEYXRhYmFzZUluZm8+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZv
PigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW5mby5tX29y
aWdpbmFsRGF0YWJhc2VJbmZvID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcAppbmRleCA4N2IxYWRjZDk2NjYyMDZlYzk3MTY2MDM2MmI0MGU1YWQ3ZDgwMWQxLi5j
OTY4OTQ0NGZkMjI0MDJjZWQyMTEzYjNiZmEwYjlhNTI2YzY3M2FjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNz
SURCU2VydmVyLmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgog
U3RvcmFnZVF1b3RhTWFuYWdlciogSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29u
c3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5l
bnN1cmUob3JpZ2luLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0b3Jh
Z2VRdW90YU1hbmFnZXI+KFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1
aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3Jl
YXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFN0b3JhZ2VR
dW90YU1hbmFnZXI+KFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50
NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNl
LCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRT
cGFjZSArIHNwYWNlSW5jcmVhc2UpOwogICAgICAgICB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFs
dWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJp
bGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmlu
ZGV4IGY4NzI1NzRlODVjMjQwODc3MmIxZDExYTJlOGJjYjZkZDYwZGEyOTcuLmEzMWJhZGI1NGFj
OTgxZTBlM2JhZGFmZTIwOTg3ODI5ZDNmNzQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9y
TWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIE5hdmlnYXRvck1lZGlhQ2Fw
YWJpbGl0aWVzJiBOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllczo6ZnJvbShOYXZpZ2F0b3ImIG5h
dmlnYXRvCiB7CiAgICAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMqIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcyo+KFN1cHBsZW1lbnQ8TmF2aWdh
dG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM+KCk7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9X
ZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCA1MGQwYmIwYjFlZDUzYTQzMjQ1OGQ5ZmI3
MTM1NzBhZTBlY2EwZDA2Li5iOTc0MzRjNGU2MjQ1ZDczY2NmMmQ2MjVhMGExYjAzZTEyOTBjYmQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQg
V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJT
dGF0ZShjb25zdCBTdHJpbmcmCiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlcjo6bW9ja1BpY2tlcigpCiB7CiAgICAgaWYgKCFtX3BpY2tlck92ZXJy
aWRlKQotICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOworICAgICAgICBtX3BpY2tlck92ZXJyaWRl
ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOwogCiAg
ICAgcmV0dXJuICptX3BpY2tlck92ZXJyaWRlLmdldCgpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBA
IHVpbnQ2NF90IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2Vy
Q2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hCiAKICAgICBMT0coTWVkaWEsICJXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCglcCArICVsbHUpIiwgJmNs
aWVudCwgY29udGV4dElkKTsKIAotICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CisgICAgbV9jbGllbnRTdGF0
ZS5hcHBlbmQobWFrZVVuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAog
ICAgIGlmIChtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJn
ZXQpCiAgICAgICAgIHNjaGVkdWxlRGVsYXllZFRhc2soSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNr
IHwgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZDQxN2ExMjE2OTEx
MTIxNWQ1NDIyOTFlMDNjNTlkNWQ2ZTdlYjNmNC4uN2NiYzZhMTMzNTFlMGQzMmNlMjU1YTliYWRj
Yjk3NDRkYWY0ZDQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTE3OCw5ICsxNzgsOSBAQCBNZWRpYVRpbWUgTWVkaWFT
b3VyY2U6OmN1cnJlbnRUaW1lKCkgY29uc3QKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYnVmZmVy
ZWQgJiYgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSAmJiBzdGQ6OmFsbF9vZihtX2Fj
dGl2ZVNvdXJjZUJ1ZmZlcnMtPmJlZ2luKCksIG1fYWN0aXZlU291cmNlQnVmZmVycy0+ZW5kKCks
IFtdKGF1dG8mIGJ1ZmZlcikgeyByZXR1cm4gIWJ1ZmZlci0+aXNCdWZmZXJlZERpcnR5KCk7IH0p
KQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCpt
X2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigqbV9idWZmZXJlZCk7CiAKLSAgICBtX2J1ZmZlcmVkID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgbV9idWZmZXJlZCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOwogICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogKm1fYWN0aXZlU291
cmNlQnVmZmVycykKICAgICAgICAgc291cmNlQnVmZmVyLT5zZXRCdWZmZXJlZERpcnR5KGZhbHNl
KTsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAKICAgICAvLyAxLiBJZiBhY3RpdmVT
b3VyY2VCdWZmZXJzLmxlbmd0aCBlcXVhbHMgMCB0aGVuIHJldHVybiBhbiBlbXB0eSBUaW1lUmFu
Z2VzIG9iamVjdCBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGFjdGl2ZVJhbmdlcy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAogICAgIC8vIDIuIExldCBhY3RpdmUgcmFuZ2VzIGJl
IHRoZSByYW5nZXMgcmV0dXJuZWQgYnkgYnVmZmVyZWQgZm9yIGVhY2ggU291cmNlQnVmZmVyIG9i
amVjdCBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzLgogICAgIC8vIDMuIExldCBoaWdoZXN0IGVuZCB0
aW1lIGJlIHRoZSBsYXJnZXN0IHJhbmdlIGVuZCB0aW1lIGluIHRoZSBhY3RpdmUgcmFuZ2VzLgpA
QCAtMjAzLDcgKzIwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1l
ZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAKICAgICAvLyBSZXR1cm4gYW4gZW1wdHkgcmFu
Z2UgaWYgYWxsIHJhbmdlcyBhcmUgZW1wdHkuCiAgICAgaWYgKCFoaWdoZXN0RW5kVGltZSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZm
ZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1f
YnVmZmVyZWQpOwogCiAgICAgLy8gNC4gTGV0IGludGVyc2VjdGlvbiByYW5nZXMgZXF1YWwgYSBU
aW1lUmFuZ2Ugb2JqZWN0IGNvbnRhaW5pbmcgYSBzaW5nbGUgcmFuZ2UgZnJvbSAwIHRvIGhpZ2hl
c3QgZW5kIHRpbWUuCiAgICAgbV9idWZmZXJlZC0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwg
aGlnaGVzdEVuZFRpbWUpOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgICAgIG1f
YnVmZmVyZWQtPmludGVyc2VjdFdpdGgoc291cmNlUmFuZ2VzKTsKICAgICB9CiAKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIH0K
IAogdm9pZCBNZWRpYVNvdXJjZTo6c2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCkBA
IC0zNDQsNyArMzQ0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OnNldExpdmVT
ZWVrYWJsZVJhbmdlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKIAogICAgIC8vIFNldCBsaXZl
IHNlZWthYmxlIHJhbmdlIHRvIGJlIGEgbmV3IG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3Qg
Y29udGFpbmluZyBhIHNpbmdsZSByYW5nZQogICAgIC8vIHdob3NlIHN0YXJ0IHBvc2l0aW9uIGlz
IHN0YXJ0IGFuZCBlbmQgcG9zaXRpb24gaXMgZW5kLgotICAgIG1fbGl2ZVNlZWthYmxlID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERv
dWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKKyAgICBtX2xp
dmVTZWVrYWJsZSA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7
CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCmluZGV4IGU0MTgy
NzgzOGQ2MmNhMzhmYzNiZjNiZTc4ZjhmNGFhOGFlNTI1OTYuLjdiMzU4ZjVlMGRlNDJmYjIyNjhk
MzY5MDNlNThkYjVlYjc4ZTkwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6OmZy
b20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKiBz
dXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yTWVkaWFEZXZpY2VzKj4oU3VwcGxlbWVu
dDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hdmlnYXRvck1lZGlhRGV2aWNlcz4obmF2aWdhdG9yLT53aW5kb3coKSk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2Vz
PihuYXZpZ2F0b3ItPndpbmRvdygpKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1l
bnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4
IDhkN2U2M2NjNjA2ZDZkYTE5ZmJkYjEyZGU1NGZiODU1ZmRmNjJjOTkuLjE0ZGYxMTYxZGFlNjhj
YzQ2Y2I0OWVhYWUyMWY1ZWY5ODllMmFjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBVc2VyTWVkaWFDb250cm9sbGVyOjp+VXNlck1lZGlhQ29udHJvbGxlcigpCiAK
IHZvaWQgcHJvdmlkZVVzZXJNZWRpYVRvKFBhZ2UqIHBhZ2UsIFVzZXJNZWRpYUNsaWVudCogY2xp
ZW50KQogewotICAgIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVk
aWFDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRp
YUNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVU
byhwYWdlLCBVc2VyTWVkaWFDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVl
PFVzZXJNZWRpYUNvbnRyb2xsZXI+KGNsaWVudCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNTZWN1cmUoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggYWFhNDAwMDIwNzM2
NWZmY2JlNTI4MTI4ZTI4Y2UwMmY2YzYwN2NkZC4uYzk4NWJjMTlhMzFkMDExNDU2NWFiYWJhNWYw
NjBlZTUwZGE2MTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFJlZjxSVENEYXRhQ2hhbm5lbEV2ZW50
PiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNoYW5uZWxFdmVudChTY3JpcHRFeGVjdXRp
CiAgICAgaW5pdC5uZWdvdGlhdGVkID0gZGF0YUNoYW5uZWwtPm5lZ290aWF0ZWQoKTsKICAgICBp
bml0LmlkID0gZGF0YUNoYW5uZWwtPmlkKCk7CiAKLSAgICBhdXRvIGhhbmRsZXIgPSAgc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5u
ZWwpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSAgbWFrZVVuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5uZWwpKTsKICAgICBhdXRvIGNoYW5uZWwgPSBSVENE
YXRhQ2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUoaGFuZGxlciksIGZyb21TdGRTdHJp
bmcobGFiZWwpLCBXVEZNb3ZlKGluaXQpKTsKIAogICAgIHJldHVybiBSVENEYXRhQ2hhbm5lbEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFjaGFubmVsRXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgV1RGTW92ZShjaGFubmVsKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGRlZjFmOTFlZWU5
ZWQ2ZWM3OGQxM2M2OWVjNDM0OGYwYWE2OGQzNjcuLmQxYTc0Yjg1NzFiZWU3ZWU1ZTljMzE2MmVj
YTJmNGQ2ZmY0MWU0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9p
bnQuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojph
ZGRSZW1vdGVUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXYKICAgICB9
CiAgICAgfQogCi0gICAgcmVjZWl2ZXItPnNldEJhY2tlbmQoc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CisgICAgcmVj
ZWl2ZXItPnNldEJhY2tlbmQobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+
KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CiAgICAgYXV0byYgdHJhY2sgPSByZWNlaXZlci0+dHJh
Y2soKTsKICAgICBhZGRQZW5kaW5nVHJhY2tFdmVudChyZWNlaXZlci5yZWxlYXNlTm9uTnVsbCgp
LCB0cmFjaywgcnRjU3RyZWFtcywgbnVsbHB0cik7CiB9CkBAIC00NzgsNyArNDc4LDcgQEAgdm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKCkKICAgICAgICAg
aWYgKCFzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNl
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdS
ZW1vdGVUcmFuc2NlaXZlcihtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2Vu
ZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgfQogfQogCkBAIC00OTksNyArNDk5LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpuZXdUcmFuc2NlaXZlcihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2MKICAg
ICBpZiAoIXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgbmV3VHJhbnNjZWl2
ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6Om1h
a2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFu
c2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byYgbmV3VHJhbnNj
ZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtl
VW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2Nl
aXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBhZGRQZW5kaW5nVHJhY2tF
dmVudChtYWtlUmVmKG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkpLCBuZXdUcmFuc2NlaXZlci5y
ZWNlaXZlcigpLnRyYWNrKCksIHJ0Y1JlY2VpdmVyLT5zdHJlYW1zKCksIG1ha2VSZWYobmV3VHJh
bnNjZWl2ZXIpKTsKIH0KQEAgLTUzNCw3ICs1MzQsNyBAQCBPcHRpb25hbDxMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpCYWNrZW5kcz4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNj
ZQogICAgIGlmICghcmVzdWx0Lm9rKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
LSAgICBhdXRvIHRyYW5zY2VpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CisgICAgYXV0byB0cmFuc2NlaXZl
ciA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92
ZVZhbHVlKCkpOwogICAgIHJldHVybiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcyB7
IHRyYW5zY2VpdmVyLT5jcmVhdGVTZW5kZXJCYWNrZW5kKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
LCBXVEZNb3ZlKHNvdXJjZSkpLCB0cmFuc2NlaXZlci0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCks
IFdURk1vdmUodHJhbnNjZWl2ZXIpIH07CiB9CiAKQEAgLTU4NSw3ICs1ODUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50Ojp0cmFuc2NlaQogewogICAgIGZvciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX2JhY2tl
bmQtPkdldFRyYW5zY2VpdmVycygpKSB7CiAgICAgICAgIGlmICh0cmFuc2NlaXZlci0+c2VuZGVy
KCkuZ2V0KCkgPT0gYmFja2VuZC5ydGNTZW5kZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQ+KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0
cmFuc2NlaXZlcikpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTY1NCw3ICs2
NTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjpjcmVhdGVEYXRhQ2hhbm5lbAogewogICAgIGF1dG8gaW5pdCA9IExpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6ZnJvbVJUQ0RhdGFDaGFubmVsSW5pdChvcHRpb25zKTsK
ICAgICBhdXRvIGNoYW5uZWwgPSBtX2JhY2tlbmQtPkNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLnV0
ZjgoKS5kYXRhKCksICZpbml0KTsKLSAgICByZXR1cm4gY2hhbm5lbCA/IHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6IG51bGxw
dHI7CisgICAgcmV0dXJuIGNoYW5uZWwgPyBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlcj4oV1RGTW92ZShjaGFubmVsKSkgOiBudWxscHRyOwogfQogCiB2b2lkIExpYldlYlJU
Q01lZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
RGF0YUNoYW5uZWxJbnRlcmZhY2U+IGRhdGFDaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjA3ZjE1ZTY0NTdi
OWRmY2FjMWMzMzllYTM5ZmVhMWQ3Nzg1OWQ4Yi4uZmM5MWNjZDBiYmQxZmRiYmE3NjQyZTcwNGYz
N2ZlODVjYzcyZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlCiAKICAgICBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpLnNldEVuYWJsZVdlYlJUQ0Vu
Y3J5cHRpb24ocGFnZS0+c2V0dGluZ3MoKS53ZWJSVENFbmNyeXB0aW9uRW5hYmxlZCgpKTsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZD4ocGVlckNvbm5lY3Rpb24sIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rp
b24sIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkpOwogfQogCiBDcmVhdGVQZWVyQ29ubmVjdGlv
bkJhY2tlbmQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CkBAIC0zMTEsNyArMzExLDcgQEAgTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpWaWRlb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6dmkKICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6
Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBj
cmVhdGVSZWNlaXZlckZvclNvdXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VV
bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1
dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6
Y3JlYXRlKCp0aGlzLCAidmlkZW8iX3MsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJl
Y2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5k
aW5nRGlyZWN0aW9uKCk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZN
b3ZlKHRyYW5zY2VpdmVyKSk7CkBAIC0zMzQsNyArMzM0LDcgQEAgTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YXUKICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3Jl
YXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVh
dGVSZWNlaXZlckZvclNvdXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1
dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8g
dHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3Jl
YXRlKCp0aGlzLCAiYXVkaW8iX3MsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2Vp
dmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5n
RGlyZWN0aW9uKCk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3Zl
KHRyYW5zY2VpdmVyKSk7CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8
UlRDUnRwU2VuZGVyPiBmaW5kRXhpc3RpbmdTZW5kZXIoY29uc3QgVmVjdG9yPFJlZlB0cjxSVENS
dHAKIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBWZWN0b3I8U3RyaW5n
PiYmIG1lZGlhU3RyZWFtSWRzKQogewogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1
dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtl
VW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICAg
ICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFjaygqc2VuZGVyQmFja2VuZCwgdHJhY2ssIG1lZGlh
U3RyZWFtSWRzKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJV
bmFibGUgdG8gYWRkIHRyYWNrIl9zIH07CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCBFeGNlcHRpb25P
cjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRU
cmFjayhNZWRpYVN0cgogICAgICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLmtp
bmQoKTsKICAgICAgICAgU3RyaW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCk7CiAKLSAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gc2Vu
ZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMs
IG51bGxwdHIpOwogICAgICAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRl
KCp0aGlzLCBtYWtlUmVmKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0
ZVJlY2VpdmVyKHRyYWNrS2luZCwgdHJhY2tJZCk7CiAgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIg
PSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShy
ZWNlaXZlciksIG51bGxwdHIpOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxS
VENSdHBUcmFuc2NlaXZlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJh
bnNjZWl2CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
d2ViUlRDVW5pZmllZFBsYW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxh
blRyYW5zY2VpdmVyKFN0cmluZyB7IHRyYWNrS2luZCB9LCBpbml0KTsKIAotICAgIGF1dG8gc2Vu
ZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4o
KnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gbmV3U2Vu
ZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIFN0cmluZyh0cmFja0tpbmQpLCBWZWN0
b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICByZXR1cm4gY29tcGxl
dGVBZGRUcmFuc2NlaXZlcihXVEZNb3ZlKG5ld1NlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKSwgdHJhY2tLaW5kKTsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBAQCBFeGNlcHRp
b25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdgogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRk
VW5pZmllZFBsYW5UcmFuc2NlaXZlcihXVEZNb3ZlKHRyYWNrKSwgaW5pdCk7CiAKLSAgICBhdXRv
IHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvJiBi
YWNrZW5kID0gKnNlbmRlckJhY2tlbmQ7CiAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6
OmNyZWF0ZSgqdGhpcywgdHJhY2suY29weVJlZigpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3Zl
KHNlbmRlckJhY2tlbmQpKTsKICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKGJhY2tlbmQs
IHRyYWNrLCBWZWN0b3I8U3RyaW5nPiB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kLmNwcAppbmRleCA2ODUwZTZhODVlOTAyNGJiMTE0NWI2Yjk0MjI5
YzBmNjE0MmRmN2FhLi42YWVlYTEzMzg5MmQyMDYzZjAzNTM5YjhlZWM0ZGI5YmNlNjRkN2Q5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0UGFyYW1l
dGVycyhjb25zdCBSVENSdHBTZW5kUGFyYW1ldGVycyYgcGFyYW1lCiAKIHN0ZDo6dW5pcXVlX3B0
cjxSVENEVE1GU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRl
RFRNRkJhY2tlbmQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RU
TUZTZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdl
dER0bWZTZW5kZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IGVi
ODcxZWI3ZGIwMzg4NGY0Y2M3ZTBhZGVmNjg3ODJlMWMwOTcyZDcuLjVjMGQ3ZTk1ZTJmZDEyZTNm
ODRmMTdjZmJlYjZkODY3YTUxZjJlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFj
a2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVSZWNlaXZlckJhY2tl
bmQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZD4obV9ydGNUcmFuc2NlaXZlci0+cmVjZWl2ZXIoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5yZWNl
aXZlcigpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+
IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlU2VuZGVyQmFja2VuZChMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIGJhY2tlbmQsIExpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ6OlNvdXJjZSYmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPihiYWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5k
ZXIoKSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kPihiYWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RG
TW92ZShzb3VyY2UpKTsKIH0KIAogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gTGliV2ViUlRD
UnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpkaXJlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAw
YzMyOGZhZTQ0MjM1OTkyNTMzMDcyYzg1ZDZiMzJmZGM2YzEzODM4Li4wZWJhZmY4OWZmYmM1MDAz
ZTI0NjFiYWRlZTUyMDM5MTE3MWNiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBO
b3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IE9wdGlvbgogICAgICwgbV9ib2R5KG9wdGlvbnMuYm9keSkKICAgICAs
IG1fdGFnKG9wdGlvbnMudGFnKQogICAgICwgbV9zdGF0ZShJZGxlKQotICAgICwgbV90YXNrVGlt
ZXIoc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKKyAgICAs
IG1fdGFza1RpbWVyKG1ha2VVbmlxdWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3coKTsgfSkpCiB7
CiAgICAgaWYgKCFvcHRpb25zLmljb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gaWNvblVS
TCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKG9wdGlvbnMuaWNvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29u
dHJvbGxlci5jcHAKaW5kZXggYTYyMDM1MzkzYzdmYjNmNmRkZjAxYzVjODlkNzRmM2I1ZWRkMmQ0
NC4uZDQ4ZjIwNWE5ZTI0MTRlMDdkNzIyZjkwMzI1YTdjMzY0ZDQ4OTQxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25Db250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjb25zdCBjaGFyKiBOb3RpZmlj
YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiAKIHZvaWQgcHJvdmlkZU5vdGlmaWNh
dGlvbihQYWdlKiBwYWdlLCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICBOb3Rp
ZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxl
cjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25Db250cm9s
bGVyPihjbGllbnQpKTsKKyAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFn
ZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxO
b3RpZmljYXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dR
dW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cAppbmRleCAwM2ZlOWUzODY3OGY0MDUwNzMyNTUwOWMyMDM4NjdjOWNmODIwZmYxLi5jOThjOTk4
NmRlZDZjZDIwNTQyNjE3MjE1ZjY1MzZjZTU4ZjI3OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcApAQCAtNTcsNyArNTcsNyBAQCBET01X
aW5kb3dRdW90YSogRE9NV2luZG93UXVvdGE6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAg
ICAgRE9NV2luZG93UXVvdGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dRdW90
YSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkp
KTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dRdW90YT4od2luZG93KTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3
aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhLmNwcAppbmRleCA3YmExZDNkNGIzNjk0NDBjNjRlMTdkZDIwY2E5NDUzOGI4YWQ5Yjc0
Li43YTA4MDQ1OTU2OTgzYTMxZjZkODM0ZWY3ZWE3NzJmYTY2NzM2YTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3Bw
CkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvclN0b3JhZ2VRdW90YSogTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvclN0b3Jh
Z2VRdW90YSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvclN0b3JhZ2VRdW90YSo+
KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkp
KTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3
aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAg
ICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90
YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDk1YzNlNDM2NDcz
MTYyYTUwZDYxYjVjZTc1MTY1ZWU2OGIyMWI3MjcuLjFhMWM4NDdkYzQ5N2RjNjQ4NDVmNTZlY2U1
OTI2M2E0MjZhZjYzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGE6OmZyb20oV29ya2VyTmF2aWdhdG9yKgogewogICAgIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VR
dW90YSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90
YSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdp
bmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyTmF2
aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAK
aW5kZXggMzc5NTY1MjZmYmYyODY5MGVjZjAzOTk1MmM1MmY2ZTA0NDZiY2I0Yy4uOTY5YzIzN2Y3
YzgxNTUxNTNkZTA3MWVjOTZhNjFhNGE0NjJkM2Y5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyogRE9NV2luZG93U3BlZWNo
U3ludGhlc2lzOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIERPTVdpbmRvd1NwZWVj
aFN5bnRoZXNpcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1NwZWVjaFN5bnRo
ZXNpcyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1l
KCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7Cisg
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93U3BlZWNoU3lu
dGhlc2lzPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQo
KTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShu
ZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggNzJiNTYzZTRiYmY3ZGNlMDNmYTMwODgwZDJm
YTc3MGI4OTg2OTNhNC4uZTdiNjJhMWExN2JkOTZhOWY1YTEzZmQwOWU3NDlhYjRiY2UxOTg0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
Y3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjp2b2ljZXNEaWRDaGFu
Z2UoKQogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciYgU3BlZWNoU3ludGhlc2lzOjplbnN1cmVQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcikKLSAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKKyAgICAgICAgbV9w
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyPih0aGlzKTsKICAgICByZXR1cm4gKm1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1
ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVk
aW9EZWNvZGVyLmNwcAppbmRleCA2MmY2OGVjNjYzYTgwMjEyYzZmM2FmN2I4NWUyM2M2YjRmNzQy
YTBhLi4yZjU0MjcyYWM1YzAxZDBhMjMwZTVjMGRmMDQ1MjRhZmIyYTRlMjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNw
cApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyhS
ZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIGRlY29kaW5nVGFzayA9IHN0ZDo6bWFrZV91
bmlxdWU8RGVjb2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1v
dmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CisgICAgYXV0byBk
ZWNvZGluZ1Rhc2sgPSBtYWtlVW5pcXVlPERlY29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEp
LCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxs
YmFjaykpOwogICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5v
dGUgdGhhdCBvd25lcnNoaXAgb2YgdGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhl
IHF1ZXVlLgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fz
eW5jQXVkaW9EZWNvZGVyLmgKaW5kZXggYmMwMGViOWY4N2QxYmNkNThjYmY3NDliN2RhN2M0OTNj
ZjdlODg3Ni4uY2Y5MjY5YzMwNDRjNDMyMmQ3NDRkMDYyOWRkYTBmYTg5NDkzZWNjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIu
aApAQCAtNDIsNyArNDIsOCBAQCBjbGFzcyBBdWRpb0J1ZmZlckNhbGxiYWNrOwogLy8gQXN5bmNB
dWRpb0RlY29kZXIgYXN5bmNocm9ub3VzbHkgZGVjb2RlcyBhdWRpbyBmaWxlIGRhdGEgZnJvbSBh
biBBcnJheUJ1ZmZlciBpbiBhIHdvcmtlciB0aHJlYWQuCiAvLyBVcG9uIHN1Y2Nlc3NmdWwgZGVj
b2RpbmcsIGEgY29tcGxldGlvbiBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgZGVj
b2RlZCBQQ00gZGF0YSBpbiBhbiBBdWRpb0J1ZmZlci4KIAotY2xhc3MgQXN5bmNBdWRpb0RlY29k
ZXIgeworY2xhc3MgQXN5bmNBdWRpb0RlY29kZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFzeW5jQXVkaW9EZWNvZGVyKTsK
IHB1YmxpYzoKICAgICBBc3luY0F1ZGlvRGVjb2RlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcApp
bmRleCBiYThjMjU1YWU3ZDdkYTczYmM5ZmY2NTU0M2YxZTM3YmM5NTQwNGIzLi4wZmI1NWIwOGYw
YzFhMmJlMmQwNzBjNGUwZDhkOGY0NjdlMzQ2YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcApA
QCAtNDAsOCArNDAsOCBAQCBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYQogICAgIDogQXVkaW9Ob2Rl
KGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCYXNpY0lu
c3BlY3Rvcik7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgb3V0cHV0Q2hhbm5lbENvdW50KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91
dHB1dD4odGhpcywgb3V0cHV0Q2hhbm5lbENvdW50KSk7CiB9CiAKIC8vIFdlIG92ZXJyaWRlIHB1
bGxJbnB1dHMoKSBhcyBhbiBvcHRpbWl6YXRpb24gYWxsb3dpbmcgdGhpcyBub2RlIHRvIHRha2Ug
YWR2YW50YWdlIG9mIGluLXBsYWNlIHByb2Nlc3NpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCmlu
ZGV4IGJjMTg5YzA4Y2JlZmM3YzE5NjA2NDY2YzA3NjhiOGZhNjM0YjE2YWIuLjBiOWYxY2VkODc0
NWI1ZDk5OGRjMzhkNjM2ZTc5MGFiZmJlNmU5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCkBA
IC00Miw4ICs0Miw4IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZSk7CiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVk
aW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8
QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIC8vIFRoZSBzdWJjbGFzcyBtdXN0IGNyZWF0ZSBt
X3Byb2Nlc3Nvci4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCA0MGFjMzJjNWM1NWMzZDMyZDBl
MTRiNmE3ZDIyYjI0NjczOTBmNGJmLi4yNTEwYzQwYTdmNjEyM2Q0YzdmYzJkNjQwYTkwYjRmMGE5
OGU2ZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlCiAgICAgbV9wbGF5YmFja1JhdGUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29u
dGV4dCwgInBsYXliYWNrUmF0ZSIsIDEuMCwgLU1heFJhdGUsIE1heFJhdGUpOwogCiAgICAgLy8g
RGVmYXVsdCB0byBtb25vLiAgQSBjYWxsIHRvIHNldEJ1ZmZlcigpIHdpbGwgc2V0IHRoZSBudW1i
ZXIgb2Ygb3V0cHV0IGNoYW5uZWxzIHRvIHRoYXQgb2YgdGhlIGJ1ZmZlci4KLSAgICBhZGRPdXRw
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRP
dXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRp
YWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAppbmRleCA5OTU2YzE1ODYyMTg5YzcxNDI5Y2JjZmQ2MDA0MmYwMGM5OGJhZWY2
Li5kNGNkYjc2NThjMGYzNWI1ZmM5YTIyY2U4OThiY2IyYjk5ZWU0ZGQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyAr
MTQwLDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQog
ICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAg
ICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0g
ICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRo
aXMpKQorICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0
aGlzKSkKIHsKICAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUg
b25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgogICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVE
T01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0
aG9kLgpAQCAtMTY2LDcgKzE2Niw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3Vt
ZW50JiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90CiAjZW5kaWYK
ICAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUoc3Rk
OjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQorICAgICwgbV9ldmVudFF1
ZXVlKG1ha2VVbmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKIHsKICAgICBjb25zdHJ1
Y3RDb21tb24oKTsKIApAQCAtNDMyLDcgKzQzMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1
ZmZlcj4+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZl
CiB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBh
dWRpb0RhdGEsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywg
UmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKIHsKICAgICBpZiAo
IW1fYXVkaW9EZWNvZGVyKQotICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IHN0ZDo6bWFrZV91bmlx
dWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7CisgICAgICAgIG1fYXVkaW9EZWNvZGVyID0gbWFrZVVu
aXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKICAgICBtX2F1ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5
bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlKCksIFdURk1vdmUoc3VjY2Vzc0NhbGxi
YWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXgg
OTc1ODg3NTQ3NDdlMTUyNDgxODlmNDk3MGM2ZDMzZTNjNmFlMWUxMS4uZDlhYmI5Nzc3YTlkMjVl
ZWFmMjQyZmY0ZmZmYzVlYzVlZjQ4NmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgQXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmEKICAgICAsIG1fbXV0ZWQoZmFsc2UpCiB7CiAg
ICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZXN0aW5hdGlvbik7Ci0gICAgYWRkSW5wdXQoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZElucHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIH0KIAogQXVkaW9EZXN0aW5hdGlvbk5vZGU6On5B
dWRpb0Rlc3RpbmF0aW9uTm9kZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAppbmRleCAxNjM3M2NlOTM3OGQzMjJmZGQ5YzI1
M2Y5Yzc2ZDk2M2U2MTNjZDNiLi40YTgyNTVlNmYwYWYwNzY3MTM4ZTQ2ODk4ZjhiNjM2YWIyZDc1
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZp
bHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFk
RmlsdGVyTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFk
RmlsdGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
c2V0Tm9kZVR5cGUoTm9kZVR5cGVCaXF1YWRGaWx0ZXIpOwogCiAgICAgLy8gSW5pdGlhbGx5IHNl
dHVwIGFzIGxvd3Bhc3MgZmlsdGVyLgotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1
ZTxCaXF1YWRQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKKyAgICBt
X3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8QmlxdWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVS
YXRlLCAxLCBmYWxzZSk7CiB9CiAKIEJpcXVhZEZpbHRlclR5cGUgQmlxdWFkRmlsdGVyTm9kZTo6
dHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0JpcXVhZFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZFByb2Nlc3Nvci5jcHAKaW5kZXggMGU0ZTM2ODViODJjZTQ3N2VjNGU1ODU0N2YxNmFkOGI3
MGZjNzkwNC4uZTg0Yjk4MDM1NjcwZmIxZGNjMzI3MDk2NjNkMmIzOTA1NTJlNjVlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNw
cApAQCAtNjIsNyArNjIsNyBAQCBCaXF1YWRQcm9jZXNzb3I6On5CaXF1YWRQcm9jZXNzb3IoKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IEJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRl
S2VybmVsKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCaXF1YWREU1BLZXJuZWw+
KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiB9
CiAKIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpjaGVja0ZvckRpcnR5Q29lZmZpY2llbnRzKCkKQEAg
LTEyNSw3ICsxMjUsNyBAQCB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVzcG9u
c2UoaW50IG5GcmVxdWVuY2llcywgY29uc3QgZmxvYXQqIGZyZXF1ZQogICAgIC8vIHRvIGF2b2lk
IGludGVyZmVyaW5nIHdpdGggdGhlIHByb2Nlc3NpbmcgcnVubmluZyBpbiB0aGUgYXVkaW8KICAg
ICAvLyB0aHJlYWQgb24gdGhlIG1haW4ga2VybmVscy4KICAgICAKLSAgICBhdXRvIHJlc3BvbnNl
S2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOworICAgIGF1
dG8gcmVzcG9uc2VLZXJuZWwgPSBtYWtlVW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiAK
ICAgICByZXNwb25zZUtlcm5lbC0+Z2V0RnJlcXVlbmN5UmVzcG9uc2UobkZyZXF1ZW5jaWVzLCBm
cmVxdWVuY3lIeiwgbWFnUmVzcG9uc2UsIHBoYXNlUmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAppbmRl
eCAyMGI4ZGExOWU1ZjQzOWNmZTU0NTVmMDFkYzI5MDg3NDQ2YjIzYzA4Li5kZjUwZjI2ODczNjhh
YTVjMzI5NTQxNDgxNTA3NzdhMDI5MTczMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcApAQCAtNTksOSArNTksOSBA
QCBDaGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bgogCiAgICAgLy8gQ3JlYXRlIHRoZSByZXF1ZXN0ZWQg
bnVtYmVyIG9mIGlucHV0cy4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
bnB1dHM7ICsraSkKLSAgICAgICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJ
bnB1dD4odGhpcykpOworICAgICAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7CiAKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRw
dXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+
KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRl
eCA0NjM1NDk4YzAzNGM1OTMwYjRlOGYyMjA4NmUxNGIyYjRiZDI5MTE3Li44MmY2OWEwNGY5OTky
NjFkNThjMTUyYmZjNjAyYTM2NjA5NjA5MWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKQEAgLTUwLDExICs1
MCwxMSBAQCBDaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZQogewogICAgIHNldE5vZGVUeXBlKE5vZGVU
eXBlQ2hhbm5lbFNwbGl0dGVyKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlu
cHV0Pih0aGlzKSk7CiAKICAgICAvLyBDcmVhdGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAo
YWJsZSB0byBoYW5kbGUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBp
bnB1dCkuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytp
KQotICAgICAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIDEpKTsKKyAgICAgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCAxKSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKaW5kZXggMjM4MmRhYmNjOWM5
OTI3Y2FjMzFkMzI3NWYyMjAzY2M4ZjU4YTA5My4uZTM2Njc3Y2ZkNzQ1ZThiYmUwMmRhM2RjNGRk
N2JhMWYxYTUzZGQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NvbnZvbHZlck5vZGUuY3BwCkBAIC01Miw4ICs1Miw4IEBAIENvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlQ29udm9sdmVyKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5p
cXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQg
bWl4aW5nIHJ1bGVzLgogICAgIG1fY2hhbm5lbENvdW50ID0gMjsKQEAgLTE0Niw3ICsxNDYsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBDb252b2x2ZXJOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIq
IGJ1ZmZlcikKIAogICAgIC8vIENyZWF0ZSB0aGUgcmV2ZXJiIHdpdGggdGhlIGdpdmVuIGltcHVs
c2UgcmVzcG9uc2UuCiAgICAgYm9vbCB1c2VCYWNrZ3JvdW5kVGhyZWFkcyA9ICFjb250ZXh0KCku
aXNPZmZsaW5lQ29udGV4dCgpOwotICAgIGF1dG8gcmV2ZXJiID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZXZlcmI+KGJ1ZmZlckJ1cy5nZXQoKSwgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVz
LCBNYXhGRlRTaXplLCAyLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcywgbV9ub3JtYWxpemUpOworICAg
IGF1dG8gcmV2ZXJiID0gbWFrZVVuaXF1ZTxSZXZlcmI+KGJ1ZmZlckJ1cy5nZXQoKSwgQXVkaW9O
b2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzLCBNYXhGRlRTaXplLCAyLCB1c2VCYWNrZ3JvdW5k
VGhyZWFkcywgbV9ub3JtYWxpemUpOwogCiAgICAgewogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3
aXRoIHByb2Nlc3MoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlO
b2RlLmNwcAppbmRleCA0MjY1YTAwNzQ5ZWFmZmY2YTllMWI5ZDFkZGE2MGQ0ZGI3MDI4YjAzLi44
MWJkN2QxOWIyN2U3NDFiNTBmNmY4NGU1MWY3Y2UyNTU3ODAyYjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGlu
bGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIGRvdWJsZSBtYXhECiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkpOwotICAg
IG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlx
dWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7
CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vz
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
Y3BwCmluZGV4IGE3NWJhNmI3YzkyZTc0NDRjNjU2MDhlOGFlMThmOWQ1MDAwMjZhMDQuLjEwMzY2
ZWY2ZWFmYjZjNDRkYjE5MTI3MWE5OTVkOWU2ZDJhY2JhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIERlbGF5UHJvY2Vzc29yOjp+RGVsYXlQcm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9EU1BLZXJuZWw+IERlbGF5UHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5RFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxEZWxheURTUEtlcm5lbD4odGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmluZGV4IGFhMGU0YTgwMTE5ZWJlZDlkZDM2OTZiM2Zh
MTMwNWRkZjMyYmQwNTIuLjE0MDk2ZDhmMGM1OTZhNTI5NzE2NjZlZjgyNjdhMDIzZmRiNDRiMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5h
bWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAtNDYsOCArNDYsOCBAQCBEeW5hbWljc0NvbXByZXNz
b3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2FtcAogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRHluYW1pY3NDb21wcmVzc29yKTsK
IAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsK
LSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIGRl
ZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxB
dWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKIAogICAgIG1f
dGhyZXNob2xkID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJ0aHJlc2hvbGQiLCAtMjQs
IC0xMDAsIDApOwogICAgIG1fa25lZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAia25l
ZSIsIDMwLCAwLCA0MCk7CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29y
Tm9kZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvTm9kZTo6aW5p
dGlhbGl6ZSgpOyAgICAKLSAgICBtX2R5bmFtaWNzQ29tcHJlc3NvciA9IHN0ZDo6bWFrZV91bmlx
dWU8RHluYW1pY3NDb21wcmVzc29yPihzYW1wbGVSYXRlKCksIGRlZmF1bHROdW1iZXJPZk91dHB1
dENoYW5uZWxzKTsKKyAgICBtX2R5bmFtaWNzQ29tcHJlc3NvciA9IG1ha2VVbmlxdWU8RHluYW1p
Y3NDb21wcmVzc29yPihzYW1wbGVSYXRlKCksIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxz
KTsKIH0KIAogdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjp1bmluaXRpYWxpemUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCA2Yzk0YTUy
M2MzYjJhMDIxMmIyYTU0YTFhOWM4ZjAyNmJiZDFkYjVmLi4yNTdkZjJlY2UyMzM4Y2JjYmFiOWVk
MDUxMjMzYzY0YjFjNTdmMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0dhaW5Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0dhaW5Ob2RlLmNwcApAQCAtNDYsOCArNDYsOCBAQCBHYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogCiAgICAgbV9nYWluID0gQXVkaW9Q
YXJhbTo6Y3JlYXRlKGNvbnRleHQsICJnYWluIiwgMS4wLCAwLjAsIDEuMCk7CiAKLSAgICBhZGRJ
bnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0
cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRk
SW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDM4MWFlNzI3OTRmYjBlN2Zl
YTYzMzFhYmQzM2IyMGMxNTg0NWZmOWIuLjkxMmU2ZWIyMzIxNDU2NDNkNmZkYWZiYzExZTk2NzY0
YzNkMmY1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTU3LDcgKzU3LDcg
QEAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2UpOwogCiAgICAgLy8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291
bGQgY2hhbmdlIGRlcGVuZGluZyBvbiB3aGF0IHRoZSBtZWRpYSBlbGVtZW50IC5zcmMgaXMgc2V0
IHRvLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMikpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MikpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpAQCAtODksNyArODksNyBAQCB2b2lkIE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxz
LCBmbG9hdCBzb3VyYwogCiAgICAgICAgIGlmIChzb3VyY2VTYW1wbGVSYXRlICE9IHNhbXBsZVJh
dGUoKSkgewogICAgICAgICAgICAgZG91YmxlIHNjYWxlRmFjdG9yID0gc291cmNlU2FtcGxlUmF0
ZSAvIHNhbXBsZVJhdGUoKTsKLSAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1i
ZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFr
ZVVuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5u
ZWxzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEJ5cGFzcyByZXNhbXBsaW5n
LgogICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCA1YjJhNTAwZGQyOTRkMTA1NThiYzdhMDhjZjc3MTZl
NDI2YjVjMmFjLi5lNDNmNTQ0OGJjMjZiODZhZjY5M2QwMDk5OTVjNjczNGY2OTU1ZDNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBNZQogICAgIGF1ZGlvU291cmNlUHJvdmlkZXItPnNldENsaWVudCh0aGlzKTsKICAg
ICAKICAgICAvLyBEZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5n
IG9uIHRoZSBmb3JtYXQgb2YgdGhlIE1lZGlhU3RyZWFtJ3MgYXVkaW8gdHJhY2suCi0gICAgYWRk
T3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAg
YWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBp
bml0aWFsaXplKCk7CiB9CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmNl
CiAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsK
ICAgICAgICAgZG91YmxlIHNjYWxlRmFjdG9yID0gc291cmNlU2FtcGxlUmF0ZSAvIHNhbXBsZVJh
dGU7Ci0gICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxN
dWx0aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAg
ICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJl
c2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgIH0KIAogICAgIG1f
c291cmNlTnVtYmVyT2ZDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDViNTAy
OWJmYmNlNzdhZDViNmMzYzg4MzI2MGRiOWRlZmRmNjEwNGIuLmE5OWNlYWFkNmI1YzIxZTA5ZGQy
MjUzYzJhY2YzMDQ1NTQ3NTNlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIE9zY2lsbGF0b3JO
b2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgc2V0VHlwZShtX3R5cGUpOwogCiAgICAgLy8gQW4gb3NjaWxsYXRvciBpcyBhbHdh
eXMgbW9uby4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+
KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCmluZGV4IGY2NDc0NjllMjM1NWViM2EwYzA5YjNi
MDg1MmJmYmVjNmU0OGQyOGQuLjUxYzY5OTE2ZmZkZTcwZjVlNjgwYWE5MjdjZWZlZjdjYTczMmMz
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNw
cApAQCAtNTgsOCArNTgsOCBAQCBQYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAvLyBMb2FkIHRoZSBIUlRGIGRhdGFiYXNl
IGFzeW5jaHJvbm91c2x5IHNvIHdlIGRvbid0IGJsb2NrIHRoZSBKYXZhc2NyaXB0IHRocmVhZCB3
aGlsZSBjcmVhdGluZyB0aGUgSFJURiBkYXRhYmFzZS4KICAgICBtX2hydGZEYXRhYmFzZUxvYWRl
ciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNl
c3NhcnkoY29udGV4dC5zYW1wbGVSYXRlKCkpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8
QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhp
bmcgcnVsZXMuCiAgICAgbV9jaGFubmVsQ291bnQgPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCmluZGV4IGJiMmEwN2QyMzU0ZWJhZjk0
ZDAwNDY1YTRiNDFkODYwNTU1OTk4NmIuLmVjOWExN2M0ZjU2ZWI5OTY2ZGMxNzYyN2U5MzQwNWJh
MWZkNDhjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVy
aW9kaWNXYXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Blcmlv
ZGljV2F2ZS5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFBlcmlvZGljV2F2ZTo6Y3JlYXRl
QmFuZExpbWl0ZWRUYWJsZXMoY29uc3QgZmxvYXQqIHJlYWxEYXRhLCBjb25zdCBmbG9hdCogaQog
ICAgICAgICByZWFsUFswXSA9IDA7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBiYW5kLWxpbWl0
ZWQgdGFibGUuCi0gICAgICAgIG1fYmFuZExpbWl0ZWRUYWJsZXMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9GbG9hdEFycmF5PihtX3BlcmlvZGljV2F2ZVNpemUpKTsKKyAgICAgICAgbV9i
YW5kTGltaXRlZFRhYmxlcy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVy
aW9kaWNXYXZlU2l6ZSkpOwogCiAgICAgICAgIC8vIEFwcGx5IGFuIGludmVyc2UgRkZUIHRvIGdl
bmVyYXRlIHRoZSB0aW1lLWRvbWFpbiB0YWJsZSBkYXRhLgogICAgICAgICBmbG9hdCogZGF0YSA9
IG1fYmFuZExpbWl0ZWRUYWJsZXNbcmFuZ2VJbmRleF0tPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDNi
NjI4MWQxZTg0M2VkMjk5Y2Y2MTUzYzczMjc5NzA3NDE4MDY3NzguLjgwMjM3MzQwN2Y3NWQ0N2Uy
NTllYjYwNTYzODBmNjM1ZjEzYWNlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBSZWFs
dGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKCkKICAgICAsIG1fbWluRGVjaWJlbHMoRGVm
YXVsdE1pbkRlY2liZWxzKQogICAgICwgbV9tYXhEZWNpYmVscyhEZWZhdWx0TWF4RGVjaWJlbHMp
CiB7Ci0gICAgbV9hbmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oRGVm
YXVsdEZGVFNpemUpOworICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+
KERlZmF1bHRGRlRTaXplKTsKIH0KIAogUmVhbHRpbWVBbmFseXNlcjo6flJlYWx0aW1lQW5hbHlz
ZXIoKSA9IGRlZmF1bHQ7CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgUmVhbHRpbWVBbmFseXNlcjo6
c2V0RmZ0U2l6ZShzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KG1fZmZ0U2l6ZSAhPSBzaXplKSB7Ci0gICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RkZURnJhbWU+KHNpemUpOworICAgICAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtl
VW5pcXVlPEZGVEZyYW1lPihzaXplKTsKICAgICAgICAgLy8gbV9tYWduaXR1ZGVCdWZmZXIgaGFz
IHNpemUgPSBmZnRTaXplIC8gMiBiZWNhdXNlIGl0IGNvbnRhaW5zIGZsb2F0cyByZWR1Y2VkIGZy
b20gY29tcGxleCB2YWx1ZXMgaW4gbV9hbmFseXNpc0ZyYW1lLgogICAgICAgICBtX21hZ25pdHVk
ZUJ1ZmZlci5hbGxvY2F0ZShzaXplIC8gMik7CiAgICAgICAgIG1fZmZ0U2l6ZSA9IHNpemU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nv
ck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcAppbmRleCBkNTlkZWNmOTk1MTZmNmQwMWFmOWMxZDlmZGJmMWQwYjEwMTllNDBm
Li5kNWIzYWZiZjI3MTAxNDUxNDk0YjE4OTM3NzY4YjYwNWY2YTNiNDc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5j
cHAKQEAgLTY4LDggKzY4LDggQEAgU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29y
Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUKICAgICBBU1NFUlQo
bnVtYmVyT2ZJbnB1dENoYW5uZWxzIDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVs
cygpKTsKIAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlSmF2YVNjcmlwdCk7Ci0gICAgYWRkSW5w
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMp
KTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3Bw
CmluZGV4IDQxMGQxZGFmNWM4OTU0MDA5ZmYwNjM2YTgyOTAwYmY5NGFmNGY4ZjEuLmYzZDIxMjJk
ZjUxYzRmMWEyOTIyNGU2OTNhYjQ5NWJiYzJiOTM4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcApAQCAtNDks
MTIgKzQ5LDEyIEBAIHZvaWQgV2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVy
c2FtcGxpbmcoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdGVt
cEJ1ZmZlcikgewotICAgICAgICBtX3RlbXBCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAgICAgICBtX3RlbXBCdWZmZXIy
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0
KTsKLSAgICAgICAgbV91cFNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVu
ZGVyaW5nUXVhbnR1bSk7Ci0gICAgICAgIG1fZG93blNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fdXBTYW1wbGVy
MiA9IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0g
ICAgICAgIG1fZG93blNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxEb3duU2FtcGxlcj4oUmVu
ZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAgICBtX3RlbXBCdWZmZXIgPSBtYWtlVW5pcXVlPEF1
ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX3RlbXBCdWZm
ZXIyID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsK
KyAgICAgICAgbV91cFNhbXBsZXIgPSBtYWtlVW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVh
bnR1bSk7CisgICAgICAgIG1fZG93blNhbXBsZXIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihS
ZW5kZXJpbmdRdWFudHVtICogMik7CisgICAgICAgIG1fdXBTYW1wbGVyMiA9IG1ha2VVbmlxdWU8
VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7CisgICAgICAgIG1fZG93blNhbXBsZXIy
ID0gbWFrZVVuaXF1ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJO
b2RlLmNwcAppbmRleCA4NDg2OTkzZjIxMDg0Y2NjNjFjY2Q4MGIyYzE4N2UwOGMxNTVmZDAxLi42
ZTdlOGRkMWM5YzE5ZmEzYzg1ZTNkOWQ4NTVhYjlmNDU3ODViNzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApAQCAtMzksNyAr
MzksNyBAQCBXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0KQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1w
bGVSYXRlKCkpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKLSAgICBt
X3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2F2ZVNoYXBlclByb2Nlc3Nvcj4oY29udGV4
dC5zYW1wbGVSYXRlKCksIDEpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxXYXZlU2hh
cGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CiAKICAgICBpbml0aWFsaXpl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZl
U2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCAyODljMzlmNWYzZjlmN2E3OWU5YTViNmE2ZDgzMTVi
NTkxZjQzMmRhLi5iZmU1ZTBlNDdmYjg0YTI4YzYzYzZlMjhiMzJlMGZjMTFlNWM2N2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclBy
b2Nlc3Nvci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6fldhdmVT
aGFwZXJQcm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IFdhdmVT
aGFwZXJQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2F2ZVNoYXBlckRTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2F2ZVNoYXBlckRTUEtlcm5lbD4odGhpcyk7CiB9CiAKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nv
cjo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBjdXJ2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4
IGIxYzQ5ZGI1MjNiOTM2YjBhNGVjMjIxMDQxYjc3ZGE3Y2MxNDc4ZmQuLjIwZDYwNjk3MjQyODk3
Mzc3OTgyYjg0ZWU3M2Q0ZGE2MzRlZDhmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDQs
NiArNDQsNyBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwogdXNp
bmcgQ3JlZGVudGlhbFByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURM
SW50ZXJmYWNlPEJhc2ljQ3JlZGVudGlhbD4+PjsKIAogY2xhc3MgQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IpOwogcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCmluZGV4IDhj
M2QxMzQ2YzQwMzBjZmIzZDgyNzczN2EwYTE1ZjNmMWNiOWJhZDcuLjFiOTEyZDk4ZDlmMDRmMzA3
NGExYjhlMWE2MjYwMWE0MmZhZjM1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcApAQCAtMTUwLDkgKzE1MCw5
IEBAIEZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2FnZSh1aW50MzJfdCBjaGFubmVsSWQsIEZp
ZG9IaWREZXZpY2VDb21tYW5kIHR5cGUsIGNvCiAgICAgdWludDhfdCBzZXF1ZW5jZSA9IDA7CiAK
ICAgICBzaXplX3QgcG9zID0gZGF0YS5zaXplKCkgPiBrSGlkSW5pdFBhY2tldERhdGFTaXplID8g
a0hpZEluaXRQYWNrZXREYXRhU2l6ZSA6IGRhdGEuc2l6ZSgpOwotICAgIG1fcGFja2V0cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBn
ZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5zaXplKCkpKTsKKyAgICBtX3BhY2tldHMuYXBw
ZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgdHlwZSwgZ2V0SW5p
dFBhY2tldERhdGEoZGF0YSksIGRhdGEuc2l6ZSgpKSk7CiAgICAgZm9yICg7IHBvcyA8IGRhdGEu
c2l6ZSgpOyBwb3MgKz0ga0hpZENvbnRpbnVhdGlvblBhY2tldERhdGFTaXplKQotICAgICAgICBt
X3BhY2tldHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tl
dD4oY2hhbm5lbElkLCBzZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEs
IHBvcykpKTsKKyAgICAgICAgbV9wYWNrZXRzLmFwcGVuZChtYWtlVW5pcXVlPEZpZG9IaWRDb250
aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFj
a2V0RGF0YShkYXRhLCBwb3MpKSk7CiB9CiAKIEZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2Fn
ZShzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IGluaXRQYWNrZXQsIHNpemVfdCBy
ZW1haW5pbmdTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCmluZGV4IDU1YjdiMmQ3MTUzNmEyMzU0OTEzYWUzNmU5
ZmI5MWVmMDBhOGYwODMuLjI2YjgwYWE4YTVmMTM5NjNjNzY4ZTdlOTIzYmJhYWIyYjg3YjVlZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlk
UGFja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b0hpZFBhY2tldC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJ
bml0UGFja2V0PiBGaWRvSGlkSW5pdFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGMK
ICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFwcGVuZChzZXJp
YWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92ZShk
YXRhKSwgcGF5bG9hZFNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFj
a2V0PihjaGFubmVsSWQsIGNvbW1hbmQsIFdURk1vdmUoZGF0YSksIHBheWxvYWRTaXplKTsKIH0K
IAogLy8gVTJGIEluaXRpYWxpemF0aW9uIHBhY2tldCBpcyBkZWZpbmVkIGFzOgpAQCAtMTIzLDcg
KzEyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PiBGaWRv
SGlkQ29udGludWF0aW9uUGFja2V0OjpjcmVhdGVGcm9tCiAgICAgYXV0byBkYXRhID0gVmVjdG9y
PHVpbnQ4X3Q+KCk7CiAgICAgZGF0YS5hcHBlbmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgs
IGRhdGFTaXplKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51
YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UsIFdURk1vdmUoZGF0YSkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2Vx
dWVuY2UsIFdURk1vdmUoZGF0YSkpOwogfQogCiAvLyBVMkYgQ29udGludWF0aW9uIHBhY2tldCBp
cyBkZWZpbmVkIGFzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcAppbmRleCAwMjE0NWQwY2MyZThjOWVhZGIwYzg4Mjk0MWI4NTlmYzBhZTgwNTJk
Li41YjY0YTA4NzQ2YWY4MDgwY2QyZTcyNTAzZmEwMGQzYzk0OWZiMDBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMjUwLDcgKzI1
MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihi
b29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlc3VsdDsKLSAg
ICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBz
ZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3luY2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8g
dGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5l
d0RhdGFiYXNlLCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1t
ZWRpYXRlVGFzayhXVEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tD
b21wbGV0aW9uKCk7CiAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVU
YXNrKHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VDbG9zZVRhc2s+KCp0aGlzLCBzeW5jaHJvbml6
ZXIpKTsKKyAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKG1ha2VVbmlxdWU8RGF0YWJh
c2VDbG9zZVRhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIpKTsKIAogICAgIC8vIEZJWE1FOiBpT1Mg
ZGVwZW5kcyBvbiB0aGlzIGZ1bmN0aW9uIGJsb2NraW5nIHVudGlsIHRoZSBkYXRhYmFzZSBpcyBj
bG9zZWQgYXMgcGFydAogICAgIC8vIG9mIGNsb3NpbmcgYWxsIG9wZW4gZGF0YWJhc2VzIGZyb20g
YSBwcm9jZXNzIGFzc2VydGlvbiBleHBpcmF0aW9uIGhhbmRsZXIuCkBAIC01MzIsNyArNTMyLDcg
QEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbigpCiAgICAgbV90cmFuc2FjdGlv
bkluUHJvZ3Jlc3MgPSB0cnVlOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rp
b25RdWV1ZS50YWtlRmlyc3QoKTsKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERh
dGFiYXNlVHJhbnNhY3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CisgICAgYXV0byB0
YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2Fj
dGlvbikpOwogICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0
aW9uVGFzayAlcCBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRhc2suZ2V0KCksIHRhc2stPnRyYW5z
YWN0aW9uKCkpOwogICAgIGRhdGFiYXNlVGhyZWFkKCkuc2NoZWR1bGVUYXNrKFdURk1vdmUodGFz
aykpOwogfQpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNh
Y3Rpb25TdGVwKFNRTFRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBhdXRvJiB0aHJl
YWQgPSBkYXRhYmFzZVRocmVhZCgpOwogCi0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1
ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oJnRyYW5zYWN0aW9uKTsKKyAgICBhdXRvIHRhc2sg
PSBtYWtlVW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPigmdHJhbnNhY3Rpb24pOwogICAg
IExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBm
b3IgdGhlIHRyYW5zYWN0aW9uIHN0ZXBcbiIsIHRhc2suZ2V0KCkpOwogICAgIHRocmVhZC5zY2hl
ZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC03NjMsNyArNzYzLDcgQEAgVmVjdG9yPFN0
cmluZz4gRGF0YWJhc2U6OnRhYmxlTmFtZXMoKQogICAgIGlmICh0aHJlYWQudGVybWluYXRpb25S
ZXF1ZXN0ZWQoJnN5bmNocm9uaXplcikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBh
dXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlz
LCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRh
YmFzZVRhYmxlTmFtZXNUYXNrPigqdGhpcywgc3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRo
cmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25p
emVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCmluZGV4IDNiYWJkNDk1NjZm
MTRhMWIzYzBkM2IxN2JmNGM3ZjMyYzVlM2Q1ZjcuLmQ2NDk3YzM5N2ZhNDc0Mjg1OWUwNTg2MjIz
NmVkZWU0M2Q0ZWYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIERhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCgpCi0gICAgOiBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yPigpKQorICAgIDogbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKG1ha2VVbmlxdWU8U1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvcj4oKSkKIHsKICAgICBtX3NlbGZSZWYgPSB0aGlzOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwCmluZGV4IGQ4ZGRjYzU5ODU1MTU3NmQyYTJjMTBmNDJlNGFkMTJhODI1OWI1MTku
LmMyOGE5NmY0NTgzOWVmNTRkYWYxZjk5YTFhZDU4ZDdlY2Q0YTY3NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAK
QEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNl
KERhdGFiYXNlJiBkYXRhYmFzZSkKICAgICBMb2NrSG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2so
bV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CiAKICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQot
ICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcmln
aW5NYXA+KCk7CisgICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRhYmFz
ZU9yaWdpbk1hcD4oKTsKIAogICAgIGF1dG8gb3JpZ2luID0gZGF0YWJhc2Uuc2VjdXJpdHlPcmln
aW4oKTsKIApAQCAtOTU2LDcgKzk1Niw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZWNvcmRD
cmVhdGluZ0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjCiAgICAg
Ly8gV2UgZG9uJ3QgdXNlIEhhc2hNYXA6OmVuc3VyZSBoZXJlIHRvIGF2b2lkIG1ha2luZyBhbiBp
c29sYXRlZCBjb3B5IG9mIHRoZSBvcmlnaW4gZXZlcnkgdGltZS4KICAgICBhdXRvKiBuYW1lU2V0
ID0gbV9iZWluZ0NyZWF0ZWQuZ2V0KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lU2V0KSB7Ci0gICAg
ICAgIGF1dG8gb3duZWRTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hDb3VudGVkU2V0PFN0cmlu
Zz4+KCk7CisgICAgICAgIGF1dG8gb3duZWRTZXQgPSBtYWtlVW5pcXVlPEhhc2hDb3VudGVkU2V0
PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVTZXQgPSBvd25lZFNldC5nZXQoKTsKICAgICAgICAg
bV9iZWluZ0NyZWF0ZWQuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShvd25lZFNl
dCkpOwogICAgIH0KQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpy
ZWNvcmREZWxldGluZ0RhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBj
CiAgICAgLy8gV2UgZG9uJ3QgdXNlIEhhc2hNYXA6OmVuc3VyZSBoZXJlIHRvIGF2b2lkIG1ha2lu
ZyBhbiBpc29sYXRlZCBjb3B5IG9mIHRoZSBvcmlnaW4gZXZlcnkgdGltZS4KICAgICBhdXRvKiBu
YW1lU2V0ID0gbV9iZWluZ0RlbGV0ZWQuZ2V0KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lU2V0KSB7
Ci0gICAgICAgIGF1dG8gb3duZWRTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5n
Pj4oKTsKKyAgICAgICAgYXV0byBvd25lZFNldCA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+
PigpOwogICAgICAgICBuYW1lU2V0ID0gb3duZWRTZXQuZ2V0KCk7CiAgICAgICAgIG1fYmVpbmdE
ZWxldGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUob3duZWRTZXQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1l
bnQuaAppbmRleCA4NWYxYjYzNWMzZTQ5YjNmZTFhODFmOTQ4NzgyNDgwZTFkZTQ4ZmI1Li44YTU0
YTM2NjdhMDdhYWNlMDNhOTYwZmIyNTY0ZjdlYmRmM2JkOTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgY2xhc3MgU1FMUmVzdWx0U2V0OwogY2xhc3MgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOwogCiBj
bGFzcyBTUUxTdGF0ZW1lbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFNRTFN0YXRlbWVudChEYXRhYmFzZSYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTUUxW
YWx1ZT4mJiwgUmVmUHRyPFNRTFN0YXRlbWVudENhbGxiYWNrPiYmLCBSZWZQdHI8U1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjaz4mJiwgaW50IHBlcm1pc3Npb25zKTsKICAgICB+U1FMU3RhdGVtZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb24uY3BwCmluZGV4IDIwZDY5NzM0Nzc0ZGJmYmYzMGJkOGYzOWNlNGM1OTU3MjE0ZTkw
MGMuLjRjYjA0MWU0NTJjODBmNWY1OWJiMjcyMWVhYjhlYzFhOGY2MTgzNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3Bw
CkBAIC04Myw3ICs4Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNRTFRyYW5zYWN0aW9uOjpleGVj
dXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBPcHRpb25hCiAgICAgZWxzZSBpZiAo
bV9yZWFkT25seSkKICAgICAgICAgcGVybWlzc2lvbnMgfD0gRGF0YWJhc2VBdXRob3JpemVyOjpS
ZWFkT25seU1hc2s7CiAKLSAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FM
U3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZl
Y3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tF
cnJvciksIHBlcm1pc3Npb25zKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FM
U3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZl
Y3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tF
cnJvciksIHBlcm1pc3Npb25zKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkpCiAg
ICAgICAgIHN0YXRlbWVudC0+c2V0RGF0YWJhc2VEZWxldGVkRXJyb3IoKTsKQEAgLTIzNCw3ICsy
MzQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQo
KQogICAgIH0KIAogICAgIEFTU0VSVCghbV9zcWxpdGVUcmFuc2FjdGlvbik7Ci0gICAgbV9zcWxp
dGVUcmFuc2FjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1fZGF0
YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOworICAgIG1fc3FsaXRlVHJhbnNh
Y3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihtX2RhdGFiYXNlLT5zcWxpdGVE
YXRhYmFzZSgpLCBtX3JlYWRPbmx5KTsKIAogICAgIG1fZGF0YWJhc2UtPnJlc2V0RGVsZXRlcygp
OwogICAgIG1fZGF0YWJhc2UtPmRpc2FibGVBdXRob3JpemVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAppbmRl
eCA3OWFhNTYxODFmZmVmM2FiMWE5MmFhNTdmZWNkYjZmYmE1OWU2ZjBiLi4xMjlkODZmZmNmYmQx
NTdhODBiMDE5MmUzYjQ5OTcxMzNiZWI3ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgTmF2aWdhdG9yV2ViRHJpdmVyKiBOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20oTmF2aWdh
dG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yV2ViRHJpdmVyKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8TmF2aWdhdG9yV2ViRHJpdmVyKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpm
cm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRv
cldlYkRyaXZlcj4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxO
YXZpZ2F0b3JXZWJEcml2ZXI+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcAppbmRleCA4OGE5NzgwNDRiYzFlNzA4OTMzNTY1ZGM2
MmQwYTMxNDZiMzhiNDI2Li4zNzZkMTU1Y2E5YjJmNWQyYTRhYjE4NTJjNzc2ZDljMThmMmU1MjI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgTmF2aWdhdG9yR1BVKiBOYXZpZ2F0b3JHUFU6OmZyb20oTmF2aWdh
dG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8TmF2aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRv
ciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRl
VG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCmluZGV4IDFiMzQy
NTA0ZDY5NTUwOGYwODE2Y2NiNTU4MmY1YmQ5YWE3NjFhNmIuLjVmNTdlZjExNzc1MzFhMGFjM2Q5
NjBkZWIxZDQzODcxMWE0ZjA1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oCkBAIC02Myw3ICs2Myw3IEBAIGNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiBmaW5h
bCA6IHB1YmxpYyBOYW1lZFR5cGUgewogCiAgICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1iZXIm
JiBtZW1iZXIpCiAgICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVt
YmVyLm5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZSht
ZW1iZXIpKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFt
ZSgpLCBtYWtlVW5pcXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5pc05ld0VudHJ5OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2Nh
ZmZvbGRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKaW5kZXggMGUzMWZmYmRlMGIxNDg2ZjZjNmY2NWUy
MGViNjM4YWU4ODFiODdmOC4uY2JjYzQ4NGI2ODI1MGMwYWEwOWI1OTk0M2FkYzc5ZTgxMDA5Mjc0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCkBAIC01MCw2
ICs1MCw3IEBAIG5hbWVzcGFjZSBNZXRhbCB7CiBjbGFzcyBUeXBlTmFtZXI7CiAKIGNsYXNzIEVu
dHJ5UG9pbnRTY2FmZm9sZGluZyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+RW50cnlQb2ludFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCmluZGV4IDgyNTQ4YjhjNmVhMGJlNWJiYTgy
ZDg5Nzc3NmQ3NDYzMjEwZDk4ZTYuLjUxOWM3ODJiZTJmYzZhZjJhY2FkMWRiYjg4ZjlhYjFhNTg0
NzY2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC03NTcsOSArNzU3
LDkgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gUmVuZGVyRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVFbnQKICAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVy
YXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIH07CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRp
b24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmlu
aXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0
ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJS
ZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwg
bV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VmVydGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmlu
aXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0
ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJS
ZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwg
bV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKICAgICBpZiAoJmZ1
bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXIpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xk
aW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0
Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2Vt
YW50aWNzLmZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVy
YXRlTmV4dFZhcmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRh
Y2htZW50cyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNj
YWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIs
IG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRj
aGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3Zl
KGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29s
b3JBdHRhY2htZW50cyk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTc4Myw3ICs3ODMs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBDb21wdXRlRnVuY3Rp
b25EZWZpbml0aW9uV3JpdGVyOjpjcmVhdGVFbgogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJh
dGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgfTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlv
biA9PSBtX21hdGNoZWRTZW1hbnRpY3Muc2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24s
IG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50
SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUo
Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENv
bXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5z
aWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9t
YXRjaGVkU2VtYW50aWNzLnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5l
eHRWYXJpYWJsZU5hbWUpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBl
TmFtZXIuY3BwCmluZGV4IDE4NWJhMGIwODhhNWNlZDRjNWI2NjM2ZmE5NDQyYzAwMzQwZGQwMmEu
LjQwYjYyYzM3ZGJlMjU4MGUyM2Q1OTBjMDkxZWJiNDE3Y2E5YjgwODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5
cGVOYW1lci5jcHAKQEAgLTI3MiwxOSArMjcyLDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxCYXNlVHlw
ZU5hbWVOb2RlPiBUeXBlTmFtZXI6OmNyZWF0ZU5hbWVOb2RlKEFTVDo6VW5uYW1lZFR5cGUmIHVu
CiAgICAgc3dpdGNoICh1bm5hbWVkVHlwZS5raW5kKCkpIHsKICAgICBjYXNlIEFTVDo6VW5uYW1l
ZFR5cGU6OktpbmQ6OlR5cGVSZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5j
ZSA9IGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2Vu
ZXJhdGVOZXh0VHlwZU5hbWUoKSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5l
cmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKICAgICB9
CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOiB7CiAgICAgICAgIGF1
dG8mIHBvaW50ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUp
OwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihw
YXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9pbnRlclR5cGVOYW1lTm9kZT4ocGFyZW50
LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSk7CiAg
ICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6IHsK
ICAgICAgICAgYXV0byYgYXJyYXlSZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJl
ZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5h
bWUoKSwgYXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8QXJyYXlSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVO
ZXh0VHlwZU5hbWUoKSwgYXJyYXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9
CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewogICAgICAgICBhdXRv
JiBhcnJheVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBn
ZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4
dFR5cGVOYW1lKCksIGFycmF5VHlwZS5udW1FbGVtZW50cygpKTsKICAgICB9CiAgICAgZGVmYXVs
dDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCmluZGV4IDc3
ZGE0OGUyZWNmMTYyOTQ2Y2FiY2RlNTIyODM1OWI2ODgyOTAyMDcuLjFhNjE2MmEyZWY3Mzc5ZDM3
MTkyNDVjNDNhNDRlZWUxYzJlYWU2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcApAQCAtOTY2LDE0ICs5NjYsMTQgQEAg
dm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVj
bGFyYXRpb24pCiAKIHZvaWQgQ2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVz
c2lvbiYgZXhwcmVzc2lvbiwgUmVmPEFTVDo6VW5uYW1lZFR5cGU+IHVubmFtZWRUeXBlLCBBU1Q6
OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7Ci0g
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUodW5uYW1lZFR5cGUpKSk7CisgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmlu
Z1R5cGU+KFdURk1vdmUodW5uYW1lZFR5cGUpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0
aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKIH0KIAogdm9pZCBDaGVja2VyOjphc3NpZ25U
eXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlPiByZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBl
QW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBl
PihXVEZNb3ZlKHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSkpOworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihX
VEZNb3ZlKHJlc29sdmFibGVUeXBlUmVmZXJlbmNlKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5u
b3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CiB9CkBAIC05ODEsMTAgKzk4MSwxMCBA
QCB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBS
ZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcgogdm9pZCBDaGVja2VyOjpmb3J3YXJkVHlwZShBU1Q6
OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFT
VDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsK
ICAgICByZXNvbHZpbmdUeXBlLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVu
bmFtZWRUeXBlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFw
LmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQu
Y29weVJlZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhw
cmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAg
ICAgfSwgWyZdKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc3VsdCkgewotICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFr
ZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOworICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2
aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0pKTsKICAgICBleHByZXNzaW9uLnNl
dFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAppbmRleCAwMTYx
MTRhNjEwZTExMDBlZmU2OTcyY2EyYTIzNTMyN2MxNTJlN2FiLi41ZTQ5ZjAzYTNiMzgyNmQxZmU3
Y2IzYTU1ODc5Njc2NjU3NjlmYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBAIC03NDAsMTkgKzc0MCwxOSBAQCBhdXRv
IFBhcnNlcjo6cGFyc2VTZW1hbnRpYygpIC0+IEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6
OlNlbWFudGljPiwgRXJyb3I+CiAgICAgc3dpdGNoICh0b2tlbi0+dHlwZSkgewogICAgIGNhc2Ug
VG9rZW46OlR5cGU6OkF0dHJpYnV0ZTogewogICAgICAgICBQQVJTRShyZXN1bHQsIFN0YWdlSW5P
dXRTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1h
bnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2Vu
OjpUeXBlOjpTcGVjaWFsaXplZDogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVl
PEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1h
a2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAg
Y2FzZSBUb2tlbjo6VHlwZTo6UmVnaXN0ZXI6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgUmVz
b3VyY2VTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpT
ZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1
ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBkZWZhdWx0
OiAgewogICAgICAgICBQQVJTRShyZXN1bHQsIEJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgICAgIHJl
dHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkg
fTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpy
ZXN1bHQpKSB9OwogICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCmluZGV4IDU1OWNlOGJh
OTNiMjlkNTE3ZmE3NzNmNmE1ZjUyN2RkZjRhODViMDEuLjQ1NzAwY2VkOGZkMzQ0OWM0ZGE0OTU5
ZjcxYTQwMmFhMDJkNmU0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCkBAIC03NCw2ICs3NCw3IEBAIGNs
YXNzIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2U+IHsKIC8vIEl0IGV4aXN0cyBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRoYXQg
dGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZG9lcyB0aGUgcmlnaHQgdGhpbmcuCiAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE1OCBUaGlzIHdyYXBw
ZXIgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KIGNsYXNzIFJlc29sdmluZ1R5cGUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc29sdmluZ1R5cGUoKQogICAg
ICAgICA6IG1faW5uZXIoUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAK
aW5kZXggYmY5MGY2YzM2MDU0OGQ1MmM4ZmQ4ZWVlYzc1M2M3OGQ4ZmE5YmYxYy4uZDk1MjIzMDVh
ZGExZWU5NzFmMTY1MjhkZTA2NjA0YmI2YTk2YjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIFdvcmtlck5hdmlnYXRvckdQVSogV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKFdvcmtlck5h
dmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIFdvcmtlck5hdmlnYXRvckdQVSogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PFdvcmtlck5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2
aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJOYXZpZ2F0b3JHUFU+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8V29ya2VyTmF2aWdhdG9yR1BVPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCBlZDVhM2NjODM0
ZmUxOWQ0ODg4Yjg1NTUwNGJhMTU1ZDQ4M2ZjNDA3Li5jMWJhYzg2ZDNhYjJiMGQ5MTNmY2U3NDIx
NDMxYTk0NDU5ZWVkMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpjbGVhckNsaWVudCgpCiAKIHZvaWQgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KCkKIHsKLSAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKICAgICB9KSk7CkBA
IC0xNjQsNyArMTY0LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZENvbm5lY3QoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewot
ICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1l
c3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNz
YWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
TWVzc2FnZShtZXNzYWdlKTsKICAgICB9KSk7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWUKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEp
CiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgbXV0YWJsZSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgYmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAg
ICB9KSk7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF8KIAogdm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZl
cmVkQW1vdW50KHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50KQogewotICAgIG1fcGVuZGluZ1Rhc2tz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50XSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRh
dGVCdWZmZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7CiAgICAgfSkpOwpAQCAtMTk3LDcgKzE5
Nyw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRV
cGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBiCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogewotICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5p
cXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAo
bV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtl
KCk7CiAgICAgfSkpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogCiB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWdu
ZWQgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1
bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBtX3BlbmRp
bmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZm
ZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJl
YXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9w
ZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFz
b24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZSh1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJl
YXNvbik7CiAgICAgICAgIH0pKTsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVk
QnVmZmVyZQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Cisg
ICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7CiAgICAgfSkpOwpAQCAtMjMwLDcgKzIz
MCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRS
ZWNlaXZlTWVzc2FnZUVycm9yKCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OmRpZFVwZ3JhZGVVUkwoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
eworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAg
ICBtX2NsaWVudC0+ZGlkVXBncmFkZVVSTCgpOwogICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2
MDcxNDQwOTI0ZmIyY2U2N2Y1MzQwNjJkNzllOGUzYjA0ZWUxYzUwLi5hMDdhODc2M2FmYjk2OWI0
MjA3MGJjNDlhODYyMzliNzgzZDZlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBA
IFdlYlNvY2tldENoYW5uZWw6OkNvbm5lY3RTdGF0dXMgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVj
dChjb25zdCBVUkwmIHJlcXVlc3RlZFVSCiAgICAgbV9hbGxvd0Nvb2tpZXMgPSB2YWxpZGF0ZWRV
UkwtPmFyZUNvb2tpZXNBbGxvd2VkOwogICAgIFN0cmluZyB1c2VyQWdlbnQgPSBtX2RvY3VtZW50
LT51c2VyQWdlbnQobV9kb2N1bWVudC0+dXJsKCkpOwogICAgIFN0cmluZyBjbGllbnRPcmlnaW4g
PSBtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0gICAgbV9oYW5kc2hh
a2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51
cmwsIHByb3RvY29sLCB1c2VyQWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwor
ICAgIG1faGFuZHNoYWtlID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRl
ZFVSTC0+dXJsLCBwcm90b2NvbCwgdXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29r
aWVzKTsKICAgICBtX2hhbmRzaGFrZS0+cmVzZXQoKTsKICAgICBpZiAobV9kZWZsYXRlRnJhbWVy
LmNhbkRlZmxhdGUoKSkKICAgICAgICAgbV9oYW5kc2hha2UtPmFkZEV4dGVuc2lvblByb2Nlc3Nv
cihtX2RlZmxhdGVGcmFtZXIuY3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkpOwpAQCAtNzAzLDcg
KzcwMyw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7
CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVR
dWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1l
PigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZy
YW1lLT5vcENvZGUgPSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlVGV4dDsKICAgICBmcmFtZS0+ZnJh
bWVUeXBlID0gUXVldWVkRnJhbWVUeXBlU3RyaW5nOwogICAgIGZyYW1lLT5zdHJpbmdEYXRhID0g
c3RyaW5nOwpAQCAtNzEzLDcgKzcxMyw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1
ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFt
ZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtl
VW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBvcENvZGU7CiAgICAg
ZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlwZVZlY3RvcjsKICAgICBmcmFtZS0+dmVj
dG9yRGF0YS5yZXNpemUoZGF0YUxlbmd0aCk7CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENv
ZGUsIGNvbnN0IGNoYXIKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZShX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgQmxvYiYgYmxvYikKIHsKICAgICBBU1NFUlQo
bV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0g
ICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0
byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9
IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBlQmxvYjsKICAg
ICBmcmFtZS0+YmxvYkRhdGEgPSAmYmxvYjsKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICAgICAgICAg
IHJlZigpOyAvLyBXaWxsIGJlIGRlcmVmZWQgYWZ0ZXIgZGlkRmluaXNoTG9hZGluZygpIG9yIGRp
ZEZhaWwoKS4KICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYmxvYkxvYWRlcik7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGZyYW1lLT5ibG9iRGF0YSk7Ci0gICAgICAgICAgICAgICAgbV9ibG9i
TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9ibG9iTG9h
ZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFk
QXNBcnJheUJ1ZmZlciwgdGhpcyk7CiAgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyU3RhdHVz
ID0gQmxvYkxvYWRlclN0YXJ0ZWQ7CiAgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyLT5zdGFy
dChtX2RvY3VtZW50LmdldCgpLCAqZnJhbWUtPmJsb2JEYXRhKTsKICAgICAgICAgICAgICAgICBt
X291dGdvaW5nRnJhbWVRdWV1ZS5wcmVwZW5kKFdURk1vdmUoZnJhbWUpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcAppbmRleCBmMmZhNjIwOWMwNDhmNTE1MThhMjVlZWMxM2FlZjI1NjRjOWY0ZTdi
Li5lZTMzZWEwZmU1Y2YxZDViZjc5YTJkYTA2NzA3YjczY2QzYTc4YzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRl
bnNpb25Qcm9jZXNzb3I+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblBy
b2Nlc3NvcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0RXh0ZW5z
aW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRF
eHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMpOwogfQogCiBib29sIFdlYlNvY2tldERlZmxhdGVG
cmFtZXI6OmNhbkRlZmxhdGUoKSBjb25zdApAQCAtMTcwLDggKzE3MCw4IEBAIGJvb2wgV2ViU29j
a2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0CiAjaWYgVVNFKFpMSUIpCiB2b2lk
IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdl
YlNvY2tldERlZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlIG1vZGUpCiB7Ci0gICAgbV9kZWZs
YXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1v
ZGUpOwotICAgIG1faW5mbGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldEluZmxhdGVy
PigpOworICAgIG1fZGVmbGF0ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5k
b3dCaXRzLCBtb2RlKTsKKyAgICBtX2luZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRJbmZs
YXRlcj4oKTsKICAgICBpZiAoIW1fZGVmbGF0ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRl
ci0+aW5pdGlhbGl6ZSgpKSB7CiAgICAgICAgIG1fZGVmbGF0ZXIgPSBudWxscHRyOwogICAgICAg
ICBtX2luZmxhdGVyID0gbnVsbHB0cjsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERl
ZmxhdGVyOjpDbwogc3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewogI2lmIFVT
RShaTElCKQotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0
SG9sZGVyPih0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3Vs
dEhvbGRlcj4odGhpcyk7CiAgICAgaWYgKCFlbmFibGVkKCkgfHwgIVdlYlNvY2tldEZyYW1lOjpp
c05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSB8fCAhZnJhbWUucGF5bG9hZExlbmd0aCkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBpZiAoIW1fZGVmbGF0ZXItPmFkZEJ5dGVzKGZy
YW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpIHx8ICFtX2RlZmxhdGVyLT5maW5pc2go
KSkgewpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9s
ZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyCiAgICAgZnJh
bWUucGF5bG9hZExlbmd0aCA9IG1fZGVmbGF0ZXItPnNpemUoKTsKICAgICByZXR1cm4gcmVzdWx0
OwogI2Vsc2UKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVy
Pih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlz
KTsKICNlbmRpZgogfQogCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyOjpyZXNldERlZmxhdGVDb250ZXh0KCkKIAogc3RkOjp1bmlxdWVfcHRyPEluZmxhdGVS
ZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmluZmxhdGUoV2ViU29ja2V0RnJh
bWUmIGZyYW1lKQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmZsYXRl
UmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW5mbGF0
ZVJlc3VsdEhvbGRlcj4odGhpcyk7CiAgICAgaWYgKCFlbmFibGVkKCkgJiYgZnJhbWUuY29tcHJl
c3MpIHsKICAgICAgICAgcmVzdWx0LT5mYWlsKCJDb21wcmVzc2VkIGJpdCBtdXN0IGJlIDAgaWYg
bm8gbmVnb3RpYXRlZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXREZWZsYXRlci5jcHAKaW5kZXggMWQ2ZjE3ODIyYzgwNTI4MWI3MGE0MTYyMGRjZGVl
NmFkMmFiODg5Yy4uNGE0ODY1Zjg0OTRkMDYxM2VhYzMyMWE1OTRmOGJhZTE5OTk2YmIzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFdlYlNvY2tldERlZmxhdGVyOjpXZWJTb2Nr
ZXREZWZsYXRlcihpbnQgd2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSBjb250ZXh0CiB7
CiAgICAgQVNTRVJUKG1fd2luZG93Qml0cyA+PSA4KTsKICAgICBBU1NFUlQobV93aW5kb3dCaXRz
IDw9IDE1KTsKLSAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7Cisg
ICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4o
KTsKICAgICBtZW1zZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQog
CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlcjo6cmVzZXQoKQogV2Vi
U29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dCaXRzKQogICAgIDog
bV93aW5kb3dCaXRzKHdpbmRvd0JpdHMpCiB7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5p
cXVlPHpfc3RyZWFtPigpOworICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8el9zdHJlYW0+KCk7CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXpl
b2Yoel9zdHJlYW0pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggOTk0MDczZWFhNWU4YjIzMGQxYzhiMDBjMTZjNTk2NDNlOTc4NDI2OC4uZGM2
ZjY2MGZkMzg4Y2VmZmFmMGViZWY2ZTY2MGU2YjY5NWJiNjMxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6
ZShTY3JpcHRFeGVjdXQKIAogICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrOjpDbGVhbnVwVGFzaywKLSAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFw
cGVyLmNvcHlSZWYoKSwgJmxvYWRlclByb3h5LCBwZWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQZWVy
PihjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2Rl
LCBXVEZNb3ZlKHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgeworICAgICAgICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigp
LCAmbG9hZGVyUHJveHksIHBlZXIgPSBtYWtlVW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29w
eVJlZigpLCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIp
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsK
ICAgICAgICAgICAgIGlmIChjbGllbnRXcmFwcGVyLT5mYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3Jl
YXRpb24oKSkgewogICAgICAgICAgICAgICAgIC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1
aXR0ZWQgZWFybGllciwgd2UgbmVlZCB0byBraWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVs
ZXRlIHRoZSBwZWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9O
YXZpZ2F0b3JXZWJWUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRv
cldlYlZSLmNwcAppbmRleCBkOTdiNWMyYTg1YTlkMjMyOGY5ODQwZjQ0ZDNkMWU5NjMyYzgyZDll
Li43NzZjNDNhZWMwYjliNWJkZWFkYzNkZDg5MTI2YWNlZDZiYTc1MTY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcApAQCAtOTQsNyArOTQs
NyBAQCBOYXZpZ2F0b3JXZWJWUiogTmF2aWdhdG9yV2ViVlI6OmZyb20oTmF2aWdhdG9yKiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yV2ViVlIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxO
YXZpZ2F0b3JXZWJWUio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKICAg
ICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVU
byhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wv
Q3J5cHRvRGlnZXN0T3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9v
cGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwCmluZGV4IGJjMjNkNTljYzMxMjM3YjE0OTdh
NzZhY2M1OWQzZWFmNWQyYjU4NDAuLjZjYTY3ZjM5MWEzMWZjZDM4NjkyNTViMjFmMmZjYjdmM2Zi
ZjliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wv
Q3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcApAQCAtNzksNyArNzksNyBAQCBzdHJ1
Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dEltcGwgOiBwdWJsaWMgQ3J5cHRvRGlnZXN0Q29udGV4dCB7
CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IGNyZWF0
ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9EaWdlc3RD
b250ZXh0SW1wbD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvRGlnZXN0Q29u
dGV4dEltcGw+KCk7CiAgICAgfQogCiAgICAgQ3J5cHRvRGlnZXN0Q29udGV4dEltcGwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKaW5kZXggMzE1
MzE2ODA4MDdiNzJkNWVmOTM4MDkxNGU3YWUyNDBhZDlkMDM5Ny4uZTUzZTE5NWIzNWY0OThmNzk1
MjUxNTFlYmMyYWNlYjVmYWZjZDI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9DbG9ja0dlbmVyaWMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBQQUwgewog
CiBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IENsb2NrOjpjcmVhdGUoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENsb2NrR2VuZXJpYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
bG9ja0dlbmVyaWM+KCk7CiB9CiAKIENsb2NrR2VuZXJpYzo6Q2xvY2tHZW5lcmljKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0KaW5kZXggYzY4OTMyMTVm
MDZiMGM2NzRkNTQ2MDgzM2IxYTRkNTFjYzMyYjYxNC4uOWUwNzFiNzgxNGU0NGZlMDA0NDJlNjZj
NzIwYjJiZmIzMTMwNjlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vbWFjL0Nsb2NrQ00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFj
L0Nsb2NrQ00ubW0KQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVs
dFRpbWVTY2FsZSA9IDEwMDA7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4gQ2xvY2s6OmNyZWF0
ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tDTT4oKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDbG9ja0NNPigpOwogfQogCiBDbG9ja0NNOjpDbG9ja0NNKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGNhY2Fi
ODU2OGM4NjExMmQ5Y2RmZWZjMzA5MDI2YWQ5YzgxNTMzZTUuLmIzNWZjMTU2NDM3ZjFjYTA5ZDY0
MjJiZDU5YzcxMzNmYWMyYzYwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTU3NSw3ICsxNTc1LDcgQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHZvaWQgQVhP
YmplY3RDYWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVl
TXV0YXRlcygpCiB7CiAgICAgaWYgKCFtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUpCi0g
ICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8
QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlPigpOworICAgICAgICBtX2NvbXB1dGVkT2Jq
ZWN0QXR0cmlidXRlQ2FjaGUgPSBtYWtlVW5pcXVlPEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVD
YWNoZT4oKTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVkT2Jq
ZWN0QXR0cmlidXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3Bw
CmluZGV4IGVkZmRiYjBhMDZmZDZlZGEyNTA0OGI5NzE5YjllZjFiYTllMTM0NDMuLmU2ZGVhOTYx
MWY5YjQ4ODBhNWExOWI5YWQxZTFiZGU3MWMxODQ3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBXZWJBbmltYXRp
b246OnVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlkU2VlayBkaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90
aWZ5IHN5bmMKICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgc3luY2hyb25vdXNseSBub3Rp
ZnkgaXMgZmFsc2UsIHF1ZXVlIGEgbWljcm90YXNrIHRvIHJ1biBmaW5pc2ggbm90aWZpY2F0aW9u
IHN0ZXBzIGZvciBhbmltYXRpb24gdW5sZXNzIHRoZXJlCiAgICAgICAgICAgICAvLyBpcyBhbHJl
YWR5IGEgbWljcm90YXNrIHF1ZXVlZCB0byBydW4gdGhvc2Ugc3RlcHMgZm9yIGFuaW1hdGlvbi4K
ICAgICAgICAgICAgIG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0g
dHJ1ZTsKLSAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRo
cmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChtX2Zp
bmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZykgewogICAgICAgICAgICAgICAg
ICAgICBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hOb3RpZmljYXRpb25TdGVwcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAppbmRleCA3ZGE0NmE2MTUwNGVm
MjQ4MTVhNjk0ZGZiYTEyYzI4YjFlZjRmZTY2Li42MjFiODkwNTFiYjQ4ZGIwMzAxZWE4MDQ3Yzdh
ZmVmZmI2OGNkZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Q
cm9taXNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNl
UHJveHkuaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBET01Qcm9taXNlUHJveHkgewogCiB0ZW1w
bGF0ZTw+CiBjbGFzcyBET01Qcm9taXNlUHJveHk8SURMVm9pZD4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERPTVByb21pc2VQcm94eSgpID0gZGVmYXVsdDsK
ICAgICB+RE9NUHJvbWlzZVByb3h5KCkgPSBkZWZhdWx0OwpAQCAtODQsNiArODUsNyBAQCBjbGFz
cyBET01Qcm9taXNlUHJveHk8SURMVm9pZD4gewogLy8gRm9udEZhY2UgYW5kIEZvbnRGYWNlU2V0
LgogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KIGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhS
ZXNvbHZlQ2FsbGJhY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHVzaW5nIFJlc29sdmVDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dHlwZW5hbWUgSURMVHlw
ZTo6UGFyYW1ldGVyVHlwZSAoKT47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGRiMGMxZGM3NmY4YTI4OTcwNDVlZTJjZmM5MTkyM2Q1
OGRmMWI2ZjkuLmM1YzQ3MDYxYmZhY2ExZmNhNzI4YmUyN2IwYTJiNGE5ZjBiMzAyNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjEw
LDcgKzIxMCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChK
U0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyCiAgICAgSlNET01XaW5kb3dCYXNl
JiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAog
ICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVj
dCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1
ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBtYWtl
VW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRo
cmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5j
YWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXggNjI5NWY1ODRjZmU4YTE3MjlkZGY2YjE4ZDc3NTQ5
ZmQ0NGM5YTBiZS4uZGI1ZTc3MzQ5MGJlZGZiZjNlMGMxMGNmMjNkMGEzNmM4YTNiZGE4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5j
cHAKQEAgLTU2LDExICs1NiwxMSBAQCBFdmVudFRhcmdldCogSlNFdmVudFRhcmdldDo6dG9XcmFw
cGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0
V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3QoVk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsK
ICAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0V2ZW50VGFyZ2V0Kj4odm0s
IHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJn
ZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdl
dCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5kb3codm0sIHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3
aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpT
RXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CiAgICAgaWYg
KGF1dG8qIHNjb3BlID0gdG9KU1dvcmtlckdsb2JhbFNjb3BlKHZtLCB0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUt
PndyYXBwZWQoKSwgKnNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRh
cmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBkODMxNjA0Y2JhZWI4N2YwN2QxMmVhZGRhNGJmMDUz
MWE3MGJiNDAyLi45YmQ2NjQ0NjAxNzA1NDk1YTk0ZTdiM2ZhZGYwNDhmM2M3YjA0M2Y3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoKIAog
ICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVj
dCwgV1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxs
YmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9
IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNr
UXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDEx
NGZmM2M4YTVkZjAzOTAyODNiMWE2N2NlNjA4ZDdmNDI0NmU3YzIuLjM1Y2NkNDk2MzVlMDYxMTk0
ZTk3MjkzZTcxMmY3YWEzNzJjNDliYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzMwMCw3ICszMzAwLDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+PiB0cmFuc2ZlckFycmF5QnVmZmUKICAgICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGNvbnRlbnRzID0gc3RkOjptYWtl
X3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXplKCkpOwor
ICAgIGF1dG8gY29udGVudHMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4o
YXJyYXlCdWZmZXJzLnNpemUoKSk7CiAKICAgICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZmZXIqPiB2
aXNpdGVkOwogICAgIGZvciAoc2l6ZV90IGFycmF5QnVmZmVySW5kZXggPSAwOyBhcnJheUJ1ZmZl
ckluZGV4IDwgYXJyYXlCdWZmZXJzLnNpemUoKTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7CkBAIC0z
NDUxLDcgKzM0NTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAjZW5kaWYKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0g
c3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IG1ha2VV
bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIGF1dG8gY29kZSA9IENsb25l
U2VyaWFsaXplcjo6c2VyaWFsaXplKCZzdGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlC
dWZmZXJzLCBpbWFnZUJpdG1hcHMsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICB3
YXNtTW9kdWxlcywgCkBAIC0zNDY5LDcgKzM0NjksNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRl
JgogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1v
dmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1l
c3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwgV1RGTW92ZShpbWFnZUJ1
ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICAgICAgICAgICwgc3RkOjpt
YWtlX3VuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAgICAgICAgICAg
ICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQogI2VuZGlmCiAgICAg
ICAgICAgICAgICAgKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDVjNDY2Mjk0YmVlNTZjMjFiZjBmNjNkMTViMGY4
ZGYwZjI3YTNhMGUuLjRmNGIwY2YzYjdlZWNkZGQwNzg3MDI1NTIwODg5NWU0NWZhMmEwN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKGFycmF5TGVuZ3RoKTsKIAotICAgIGF1dG8gYXJyYXlC
dWZmZXJDb250ZW50c0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+KCk7CisgICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVl
PEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkg
ewogICAgICAgICB1bnNpZ25lZCBidWZmZXJTaXplOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJD
b3JlSlNDbGllbnREYXRhLmNwcAppbmRleCAyNDZmNjRhOWY2MzIyYjU4NzBjYmI2ODJlZGIyZDRl
ZGI5NTNlYzdjLi4zYjExMjUyYWU2NGNhZjJlNGZlNzM5ZTMxZWUxMDk5NTRkNTZhNTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNw
cApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQo
Vk0qIHZtKQogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gbmV3IEpTVk1DbGllbnRE
YXRhKCp2bSk7CiAgICAgdm0tPmNsaWVudERhdGEgPSBjbGllbnREYXRhOyAvLyB+Vk0gZGVsZXRl
cyB0aGlzIHBvaW50ZXIuCiAgICAgCi0gICAgdm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFpbnQo
c3RkOjptYWtlX3VuaXF1ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERhdGEp
KTsKKyAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChtYWtlVW5pcXVlPERPTUdDT3V0
cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOwogICAgICAgICAKICAgICBjbGllbnRE
YXRhLT5tX25vcm1hbFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoKnZtLCB0cnVlKTsK
ICAgICB2bS0+bV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3JlVHlw
ZWRBcnJheUNvbnRyb2xsZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDE2YTc2YzQ5NTI5YTRiYjg3MWNi
NjZjYTNhZDc1YTJkNzZhODA2NTUuLmQyMzk4NTdhYTNiZGRlOWZlYjljYjg3NDBmY2Y1ZDY0OWUz
NTBkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAg
ICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlw
ZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNv
bnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQg
PSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsK
ICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNv
bGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmluZGV4
IDI5YzgxODY4MzZlYTA1NDExZThmMWVkNjQxYzA1NzBjZTgxNzY4MTUuLmFhNTZlMmZkZTg1NTc3
YWNmOWMwNDc0Yzg5ODc3ZjRlMGQ1YzUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3Mu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIE1ldGhvZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29uc3Qg
Q0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2Up
OwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9pc2Et
Pmhhc01ldGhvZCAmJiBtX2lzYS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1
dG8gbWV0aG9kID0gc3RkOjptYWtlX3VuaXF1ZTxDTWV0aG9kPihpZGVudCk7CisgICAgICAgIGF1
dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxDTWV0aG9kPihpZGVudCk7CiAgICAgICAgIENNZXRob2Qq
IHJldCA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgbV9tZXRob2RzLnNldChuYW1lLmltcGwoKSwg
V1RGTW92ZShtZXRob2QpKTsKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTEwMyw3ICsxMDMsNyBA
QCBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIElu
c3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0
aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9
IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzUHJvcGVydHkgJiYgbV9pc2Et
Pmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gZmllbGQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENGaWVsZD4oaWRlbnQpOworICAgICAgICBhdXRvIGZpZWxkID0gbWFrZVVuaXF1
ZTxDRmllbGQ+KGlkZW50KTsKICAgICAgICAgQ0ZpZWxkKiByZXQgPSBmaWVsZC5nZXQoKTsKICAg
ICAgICAgbV9maWVsZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKGZpZWxkKSk7CiAgICAgICAg
IHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRn
ZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBmMmY2
MjA4MmE4MDhhMTlmMTBhNWQ5MzVkOTIyYjc3M2MxMjIxYzI4Li4wNGNkZGNkMjRjYWE4MjljMzJl
NTZlYzI3M2FmYmQzNTFmMjU0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
anNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlND
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUm9vdE9iamVjdDsKIGNsYXNzIFJ1bnRpbWVPYmpl
Y3Q7CiAKIGNsYXNzIEZpZWxkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29u
c3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9JbnN0
YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IGI4NmY3NTFhMGE3MTM4
YmUwMDc3NmE3OGNiYzJhNmQ0NWRkMzc1MDIuLmEzZDhkMzJmMjhkZDgwNThhNGFiNDQyNzM5NTM0
NDA3NGYyNmM3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
Y2xhc3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpA
QCAtMTM0LDcgKzEzNCw3IEBAIE1ldGhvZCogT2JqY0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiAgICAgICAgICAgICAgICAgbWFw
cGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOm9iamNNZXRob2RT
ZWxlY3Rvcl07CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBp
c0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyopbWV0aG9kTmFtZS5nZXQoKV0pIHx8ICFzdHJjbXAo
b2JqY01ldGhvZFNlbGVjdG9yTmFtZSwgYnVmZmVyLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNzLCBv
YmpjTWV0aG9kU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gbWFrZVVu
aXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CiAgICAgICAg
ICAgICAgICAgbWV0aG9kUHRyID0gbWV0aG9kLmdldCgpOwogICAgICAgICAgICAgICAgIG1fbWV0
aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zCiAg
ICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktl
eTpVVEY4S2V5TmFtZV07CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVk
TmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8IFtr
ZXlOYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgewot
ICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVs
ZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleU5hbWUpOworICAgICAgICAgICAgICAgIGF1dG8g
bmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNGaWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtl
eU5hbWUpOwogICAgICAgICAgICAgICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAgICAg
ICAgICAgICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVsZCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIwLDcgKzIyMCw3IEBAIEZpZWxkKiBPYmpj
Q2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGlu
c3RhbmNlKSBjb25zCiAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNz
IHdlYlNjcmlwdE5hbWVGb3JLZXk6b2JqY0l2YXJOYW1lXTsKIAogICAgICAgICAgICAgICAgIGlm
ICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAq
KWZpZWxkTmFtZS5nZXQoKV0pIHx8ICFzdHJjbXAob2JqY0l2YXJOYW1lLCBqc05hbWUuZGF0YSgp
KSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVs
ZCA9IG1ha2VVbmlxdWU8T2JqY0ZpZWxkPihvYmpjSVZhcik7CiAgICAgICAgICAgICAgICAgICAg
IGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fZmllbGRDYWNo
ZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobmV3RmllbGQpKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5k
ZXggZTA4YjA0OGUzYjU2ODQyOThjZGVmZDkzZWI5MTg4Mzg5MTU2ZjQzOC4uM2I5M2UxODc4Mzg1
NGMyNDQ0NmUxY2ZhNTc1ODQ2NmYwZjBhN2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVj
KQogICAgIAogICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsK
ICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihv
YmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01l
dGhvZD4gZmFsbGJhY2tNZXRob2Qoc3RkOjptYWtlX3VuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xh
c3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3
aXRoQXJndW1lbnRzOikpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+IGZh
bGxiYWNrTWV0aG9kKG1ha2VVbmlxdWU8T2JqY01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNl
bGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czop
KSk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxP
YmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVjLT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7
CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmll
ci5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNl
LT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMu
Y3BwCmluZGV4IDgzZDQ0ZTA2N2ZiZGY1NDdmNmM4OGI2N2EzNmViNTNmNjkxNDY2ZWUuLmYxNzFh
NTgyMDNmOThhZjE1NTQ3ODBlMDUxOWUwNGExZTUzYTBiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcApAQCAt
MTM1LDcgKzEzNSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjpwcmludCgpIGNvbnN0CiAj
ZW5kaWYKIAogQ29tYmluZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMoKQotICAgIDog
bV9wcmVmaXhUcmVlUm9vdChzdGQ6Om1ha2VfdW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkpCisg
ICAgOiBtX3ByZWZpeFRyZWVSb290KG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKIHsK
IH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0
ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25zdCBWZWN0b3I8VGVybT4mIHBhdHRlCiAgICAgICAg
IGlmIChuZXh0RW50cnlJbmRleCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAgICAgbGFzdFBy
ZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+ZWRnZXNbbmV4dEVudHJ5SW5kZXhdLmNoaWxkLmdl
dCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5h
cHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIHN0ZDo6bWFr
ZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKKyAgICAgICAgICAgIGxhc3RQcmVmaXhU
cmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVy
bSksIG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKICAgICAgICAgICAgIGxhc3RQ
cmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmxhc3QoKS5jaGlsZC5nZXQoKTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggOGM3ZTNmN2Q3ZjFlMGQ1
NWFhZDg5MzRhYmJhNWFhNzBmYjhmODVjZi4uNzdmZWI2MGM1MGJjOGE0ZjI0YjI3Njk2YWQxMTBk
MWVkYTc0MjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgc3Ry
dWN0IFJlc291cmNlTG9hZEluZm87CiAvLyAxKSBJdCBzdG9yZXMgdGhlIHJ1bGVzIGZvciBlYWNo
IGNvbnRlbnQgZXh0ZW5zaW9uLgogLy8gMikgSXQgcHJvdmlkZXMgQVBJcyBmb3IgdGhlIFdlYkNv
cmUgaW50ZXJmYWNlcyB0byB1c2UgdGhvc2UgcnVsZXMgZWZmaWNpZW50bHkuCiBjbGFzcyBDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIC8vIC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFjZS4gVGhpcyBjYW4gYmUgdXNl
ZCBieSB1cHBlciBsYXllci4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1
YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcApp
bmRleCA5NmUyZDYzNGI4OTNiMzk5MzA0YThiMmIyODVlNjFmNGU0NjlkYzBjLi5iMmE5YTc4MzUy
Mjc3MjgzZjk1ZDg0OWQwM2IxNTZmY2RjNzIxZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3Vi
dGxlQ3J5cHRvLmNwcApAQCAtMTE1LDMxICsxMTUsMzEgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRv
QWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkRlY3J5cHQ6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50
aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19Q
S0NTMV92MV81OgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVu
aXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6IHsK
ICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFF
U19DQkM6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjog
ewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdv
cml0aG1BZXNDYmNDZmJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0NUUjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlv
bmFyeTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGlu
Z0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1
bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0dDTTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0
RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQo
KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0x
NTEsNyArMTUxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgc3dpdGNoICgq
aWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJT
QVNTQV9QS0NTMV92MV81OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkhNQUM6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQTogewogICAgICAg
ICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY2Rz
YVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKQEAgLTE2MCwxMyArMTYwLDEzIEBAIHN0YXRp
YyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+
IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VF
eGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVu
dGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBhcmFt
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0g
Y29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihzdGF0ZSwgdmFs
dWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbXMpOworICAg
ICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0
OgpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRp
YyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+
IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6UlNBRVNfUEtDUzFfdjFfNTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0
RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHN0YXRlLCB2YWx1ZS5n
ZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFt
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CkBAIC0yMDMsNyAr
MjAzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRl
bnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50
aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlm
aWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
Q1RSOgpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBh
dXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFt
cz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4o
cGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGht
QWVzS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0yMjMsMTQg
KzIyMywxNCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJ
ZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRl
bnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50
aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4o
cGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGht
SG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAgICAgICAgYXV0byBw
YXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oc3Rh
dGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRl
ZmF1bHQ6CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKIAogICAg
ICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1F
Y2RoS2V5RGVyaXZlUGFyYW1zPihzdGF0ZSwgbmV3VmFsdWUpOwogICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGht
RWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VV
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SEtERjogewpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0
b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAg
ICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpQQktERjI6IHsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAog
ICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAg
ICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVu
aXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpJbXBvcnRLZXk6CiAg
ICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6UlNBX1BTUzoKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihwYXJhbXMpOworICAgICAgICAg
ICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yOTgsNyArMjk4LDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfR0NNOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DRkI6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tX
OgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewogICAgICAgICAgICAg
YXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFy
YW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwpAQCAtMzA3LDE5ICszMDcsMTkgQEAgc3RhdGljIEV4
Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9y
bWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2Vw
dGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZp
ZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFt
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkVDREg6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rp
b25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGlu
Z0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkhLREY6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UEJLREYyOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IgfTsKQEAgLTMyOSw3ICszMjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9B
bAogICAgIGNhc2UgT3BlcmF0aW9uczo6VW53cmFwS2V5OgogICAgICAgICBzd2l0Y2ggKCppZGVu
dGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tX
OgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfTsKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzogewogICAgICAgICAg
ICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQ
YXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJh
bXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewpAQCAtMzU0
LDEyICszNTQsMTIgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmICho
YXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFz
aElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJ
ZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJh
bXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTUyMCwx
NiArNTIwLDE2IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4gY3Jvc3NUaHJlYWRDb3B5SW1wb3J0UGFyYW1zKGNvCiB7CiAgICAgc3dpdGNoIChpbXBv
cnRQYXJhbXMucGFyYW1ldGVyc0NsYXNzKCkpIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM6OkNsYXNzOjpOb25lOiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOworICAgICAgICBhdXRvIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICAgICAgcmVz
dWx0LT5pZGVudGlmaWVyID0gaW1wb3J0UGFyYW1zLmlkZW50aWZpZXI7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xh
c3M6OkVjS2V5UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1FY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobUVjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8
Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpIbWFjS2V5UGFyYW1zOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihjcm9z
c1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oaW1wb3J0
UGFyYW1zKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFj
S2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tl
eVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVyczo6Q2xhc3M6OlJzYUhhc2hlZEltcG9ydFBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihjcm9zc1Ro
cmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihp
bXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRo
bVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBkYmNj
YzkwMGYzMzc0OGNkMjA2N2Y2MGNiMjkwYzBiZDYwMDY1NTMzLi5hNDJmNTY0ZjgxZmUxZjBlYTA5
NDQzZDFmMTA1M2MxYzNjZDBjZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0
aW9uVmFsdWUuY3BwCkBAIC0yMTcsMTIgKzIxNywxMiBAQCBjbGFzcyBDU1NDYWxjUHJpbWl0aXZl
VmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAoY2F0ZWdvcnkoKSkgewogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdv
cnk6Ok51bWJlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHBy
ZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9hdFZhbHVlKCkpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUoKSk7
CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aChtX3Zh
bHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNvcmU6OkZpeGVk
KSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4o
TGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgV2Vi
Q29yZTo6Rml4ZWQpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50
OgogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnRMZW5ndGg6IHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPiht
X3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29u
dmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9h
dENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKICAgICAg
ICAgfQogICAgICAgICAvLyBPbmx5IHR5cGVzIHRoYXQgY291bGQgYmUgcGFydCBvZiBhIExlbmd0
aCBleHByZXNzaW9uIGNhbiBiZSBjb252ZXJ0ZWQKICAgICAgICAgLy8gdG8gYSBDYWxjRXhwcmVz
c2lvbk5vZGUuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnROdW1iZXIgbWFrZXMgbm8gc2Vu
c2UgYXMgYSBMZW5ndGguCkBAIC01MjAsNyArNTIwLDcgQEAgY2xhc3MgQ1NTQ2FsY09wZXJhdGlv
biBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgbm9kZXMudW5jaGVja2VkQXBwZW5kKFdURk1v
dmUobm9kZSkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
bGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKG5v
ZGVzKSwgbV9vcGVyYXRvcik7CiAgICAgfQogCiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29u
c3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVT
aGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAK
aW5kZXggYzQ0Y2ViYzUxMjBlZDgzMjZkOWExYjJhNjU2YjkzNjdiNmUxOTEyOC4uZTVhZThiNzdh
NTE0ZjA5YzNiNDk0NDFiNTYyZjVjMmExZWM3NTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKQEAgLTE2NywxMSArMTY3LDExIEBAIHZvaWQgQ1NT
RGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgICAgIHNpbXBs
ZURlZmF1bHRTdHlsZVNoZWV0ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlQoIWRlZmF1bHRTdHlsZSk7Ci0gICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgICAgIGRlZmF1bHRRdWlya3NTdHls
ZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgZGVmYXVs
dFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKLSAgICBkZWZh
dWx0UHJpbnRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7Cisg
ICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBk
ZWZhdWx0UHJpbnRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAg
bWVkaWFRdWVyeVN0eWxlU2hlZXQgPSAmU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoQ1NTUGFy
c2VyQ29udGV4dChVQVNoZWV0TW9kZSkpLmxlYWtSZWYoKTsKIAogICAgIC8vIFN0cmljdC1tb2Rl
IHJ1bGVzLgpAQCAtMTkwLDEwICsxOTAsMTAgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6
OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKICAg
ICBBU1NFUlQoIXNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKIAotICAgIGRlZmF1bHRTdHlsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0eWxl
ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICAvLyBUaGVyZSBhcmUgbm8g
bWVkaWEtc3BlY2lmaWMgcnVsZXMgaW4gdGhlIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgogICAgIGRl
ZmF1bHRQcmludFN0eWxlID0gZGVmYXVsdFN0eWxlOwotICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFF1aXJr
c1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKIAogICAgIHNpbXBsZURl
ZmF1bHRTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQs
IHN0cmxlbihzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiAgICAgZGVmYXVsdFN0eWxlLT5h
ZGRSdWxlc0Zyb21TaGVldCgqc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA3NzA5YjVkZWFmYmZlOWY5YWIxMWFj
MDc3YzYxOWQ3OTRkMTY0MmYyLi42NDZjMTRhMTFhYzY0NWI5OTI2MTQ5ZjI5ZTk4MDBjNGM3MjY3
YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTc3LDEwICs3NywxMCBAQCB2
b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NT
VmFsdWVMaXN0JiBzcmNMaXN0LCBEbwogICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5n
ID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmlu
YXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYg
aXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7CiAgICAgICAgICAgICAgICAg
aWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZv
dW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0g
ICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VT
b3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZvbnQpOworICAgICAgICAg
ICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFj
ZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNl
U291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1l
bnQpOworICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4o
Zm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwgZm9udEZhY2VFbGVtZW50KTsKIAog
ICAgICAgICBpZiAoc291cmNlKQogICAgICAgICAgICAgZm9udEZhY2UuYWRvcHRTb3VyY2UoV1RG
TW92ZShzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCmluZGV4IDA1
ZTNhM2Y2ZTIxYmM5MjgxNzg1NTY5YTE0YWE1MGZmNTJlNGEyNzAuLjE4ZTgzNGQ2OTBhNmViNTEw
MWRjOTBjOGRlNWRiNWU3YTFiMGM1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0
LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxvY2Fs
Rm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmIGZhbWlsCiAgICAgICAg
IGZhbWlseUxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRG
YW1pbHlWYWx1ZShmYW1pbHlOYW1lKSk7CiAgICAgICAgIGZhY2UtPnNldEZhbWlsaWVzKGZhbWls
eUxpc3QuZ2V0KCkpOwogICAgICAgICBmYWNlLT5zZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
KGl0ZW0pOwotICAgICAgICBmYWNlLT5hZG9wdFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPENTU0Zv
bnRGYWNlU291cmNlPihmYWNlLmdldCgpLCBmYW1pbHlOYW1lKSk7CisgICAgICAgIGZhY2UtPmFk
b3B0U291cmNlKG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCksIGZhbWls
eU5hbWUpKTsKICAgICAgICAgQVNTRVJUKCFmYWNlLT5jb21wdXRlRmFpbHVyZVN0YXRlKCkpOwog
ICAgICAgICBmYWNlcy5hcHBlbmQoV1RGTW92ZShmYWNlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAppbmRleCBkZTZmMzlkM2Y1ZDg3MzFkOTllNWViM2M5Njhl
MjlhZDFlYWNiZmU2Li5jNmM1YzM5NTQwYTVjNTA1Y2RmNGQ1OWM3NDZjMzkxODVjOWUwM2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBA
IENTU1J1bGUqIENTU0dyb3VwaW5nUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENT
U1J1bGVMaXN0JiBDU1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihjb25z
dF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0aGlzKSk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NP
TVdyYXBwZXIgPSBtYWtlVW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihj
b25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0aGlzKSk7CiAgICAgcmV0dXJuICptX3J1bGVM
aXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5jcHAKaW5kZXggZmZkZDNkMGFhNjU3ZjI1ZWFmMzFkNTcwYzU4NjhlZDUzMDll
MmVmZC4uNTU1MWYyYzY5MTdkMDMzMDcyNmFjZGY4MTA5MWE5MWZhYjRlMGI1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMTEwLDcgKzEx
MCw3IEBAIEdlbmVyYXRlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFn
ZUZvclNpemUoRmxvYXRTaXplIHNpemUpCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNh
dmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUsIEdlbmVyYXRlZEltYWdlJiBpbWFn
ZSkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2VzLmNvbnRhaW5zKHNpemUpKTsKLSAgICBtX2ltYWdl
cy5hZGQoc2l6ZSwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMs
IHNpemUsIGltYWdlKSk7CisgICAgbV9pbWFnZXMuYWRkKHNpemUsIG1ha2VVbmlxdWU8Q2FjaGVk
R2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOwogfQogCiB2b2lkIENTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoRmxvYXRTaXplIHNpemUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggYzkwOTgzMmRhMGU1
MTkwMjUzNTEzYTM5ODMxOTFhN2MyZjM5MzAwNS4uNmYxZWIzMzg2ZDlmYmM3MmQ0NDM3ODVkMWQx
OWM0ZGQ4YzVjMzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1l
c1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApA
QCAtMjIwLDcgKzIyMCw3IEBAIENTU0tleWZyYW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVsZTo6aXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENTU1J1bGVMaXN0JiBDU1NLZXlmcmFtZXNSdWxlOjpj
c3NSdWxlcygpCiB7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBt
X3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8
Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBl
ciA9IG1ha2VVbmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0tleWZyYW1lc1J1bGU+PigqdGhpcyk7
CiAgICAgcmV0dXJuICptX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNDgwYTg5ODUyMzdhZGE5MGExMTc4ZTBiMjc5ZTBlNjY4
MDdlMzM0MS4uYzg4ZDFlZGM5M2I3YTZjODNmMjE3N2JhYzc2N2Y5Yjc4MmVlNzU4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxD
U1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMoKQogICAgIGlmICghY2FuQWNjZXNz
UnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NT
T01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOworICAgICAgICBtX3J1bGVMaXN0Q1NT
T01XcmFwcGVyID0gbWFrZVVuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOwogICAg
IHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmluZGV4IDY1YTJmZGY4ZGZhY2I0ZDdmNzFkNzYx
Y2IyMTY2YjFhOTI4NGMwNzAuLjkxNGJkZTRhMmRlOWFhMjEwNmMwMTA2M2I4MDhkOWNhNGZmZjZk
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIERPTUNTU1BhaW50V29ya2xldCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpmcm9tKERP
TUNTU05hbWVzcGFjZSYgY3NzKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxET01DU1NQYWludFdvcmtsZXQqPihTdXBwbGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZyb20o
JmNzcywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUNTU1BhaW50V29ya2xl
dD4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NQ
YWludFdvcmtsZXQ+KGNzcyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50Lmdl
dCgpOwogICAgICAgICBwcm92aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShu
ZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IDdlY2Q5M2Q3ZGMzZDQzMmVhZjgyYmM5
NTZlNjFkNDg5YTUxMDYyNWIuLjBkZjZhYWU5NmYwZTFjNzBiMzc1NTYxNjQ5ZWUzNWQyOGViNGMz
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Q
cm9wZXJ0eS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0
eSogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbShET01DU1NOYW1lc3BhY2UKIHsK
ICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Q
cm9wZXJ0eSo+KFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVt
ZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eT4o
Y3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NSZWdp
c3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1lKCksIFdU
Rk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcAppbmRleCBkODU5NmZkMWIyNDU5ZGUwN2UxYzg5OWNjMDc5ZmMxOTg1MTE2NWU5
Li44MmI3ZmNjMzBlNTgyNzQ5OTIwMmUyOGI4MzA4NmNmMGZhNDRhYzU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRG9jdW1l
bnRSdWxlU2V0czo6c19pc0ludmFsaWRhdGluZ1N0eWxlV2l0aFJ1bGVTZXRzIHsgZmFsc2UgfTsK
IERvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50UnVsZVNldHMoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlcikKICAgICA6IG1fc3R5bGVSZXNvbHZlcihzdHlsZVJlc29sdmVyKQogewotICAgIG1f
YXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRob3JT
dHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxl
QXV0b1Nocmlua1RvRml0KCk7CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBEb2N1bWVudFJ1
bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNvbnN0CiAK
ICAgICAvLyBNZWRpYSBxdWVyaWVzIG9uIHVzZXIgYWdlbnQgc2hlZXQgbmVlZCB0byBldmFsdWF0
ZWQgaW4gZG9jdW1lbnQgY29udGV4dC4gVGhleSBiZWhhdmUgbGlrZSBhdXRob3Igc2hlZXRzIGlu
IHRoaXMgcmVzcGVjdC4KICAgICBhdXRvJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yID0gbV9zdHlsZVJl
c29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3IoKTsKLSAgICBtX3VzZXJBZ2VudE1lZGlhUXVlcnlT
dHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX3VzZXJBZ2VudE1lZGlh
UXVlcnlTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX3VzZXJBZ2VudE1lZGlh
UXVlcnlTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bWVk
aWFRdWVyeVN0eWxlU2hlZXQsIG1lZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2ZXIp
OwogCiAgICAgLy8gVmlld3BvcnQgZGVwZW5kZW50IHF1ZXJpZXMgYXJlIGN1cnJlbnRseSB0b28g
aW5lZmZpY2llbnQgdG8gYWxsb3cgb24gVUEgc2hlZXQuCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQg
RG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSgpCiB7CiAgICAgYXV0byYgZXh0
ZW5zaW9uU3R5bGVTaGVldHMgPSBtX3N0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5leHRlbnNpb25T
dHlsZVNoZWV0cygpOwogICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVz
b2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpOwotICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBhdXRvIHRlbXBVc2VyU3R5bGUgPSBtYWtl
VW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQg
PSBleHRlbnNpb25TdHlsZVNoZWV0cy5wYWdlVXNlclNoZWV0KCkpCiAgICAgICAgIHRlbXBVc2Vy
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHBhZ2VVc2VyU2hlZXQtPmNvbnRlbnRzKCksIG1lZGlh
UXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2ZXIpOwogICAgIGNvbGxlY3RSdWxlc0Zyb21V
c2VyU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVl
dHMoKSwgKnRlbXBVc2VyU3R5bGUsIG1lZGlhUXVlcnlFdmFsdWF0b3IsIG1fc3R5bGVSZXNvbHZl
cik7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBt
YWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxlcykKICAgICBzaXplX3Qg
c2l6ZSA9IHJ1bGVzLnNpemUoKTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8gcnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAg
ICBhdXRvIHJ1bGVTZXQgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZXNbaV0u
cnVsZSwgcnVsZXNbaV0uc2VsZWN0b3JJbmRleCwgcnVsZXNbaV0uc2VsZWN0b3JMaXN0SW5kZXgp
OwogICAgIHJ1bGVTZXQtPnNocmlua1RvRml0KCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZl
YXR1cmU+JiBydWxlcykKIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6cmVzZXRBdXRob3JTdHlsZSgp
CiB7CiAgICAgbV9pc0F1dGhvclN0eWxlRGVmaW5lZCA9IHRydWU7Ci0gICAgbV9hdXRob3JTdHls
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFr
ZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5r
VG9GaXQoKTsKIH0KIApAQCAtMTk1LDEyICsxOTUsMTIgQEAgc3RhdGljIFZlY3RvcjxJbnZhbGlk
YXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmlu
ZyYKICAgICAgICAgICAgIGF1dG8gYXJyYXlJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigq
ZmVhdHVyZS5tYXRjaEVsZW1lbnQpOwogICAgICAgICAgICAgYXV0byYgcnVsZVNldCA9IG1hdGNo
RWxlbWVudEFycmF5W2FycmF5SW5kZXhdOwogICAgICAgICAgICAgaWYgKCFydWxlU2V0KQotICAg
ICAgICAgICAgICAgIHJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAg
ICAgICAgICAgICAgcnVsZVNldCA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICAgICAgICAg
IHJ1bGVTZXQtPmFkZFJ1bGUoZmVhdHVyZS5ydWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgsIGZl
YXR1cmUuc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgICAgICAgICAgaWYgKGZlYXR1cmUuaW52YWxp
ZGF0aW9uU2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uU2VsZWN0b3JBcnJh
eVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7CiAgICAg
ICAgIH0KLSAgICAgICAgYXV0byBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PigpOworICAgICAgICBhdXRvIGludmFsaWRh
dGlvblJ1bGVTZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+KCk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaEVsZW1lbnRBcnJheS5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1hdGNoRWxlbWVudEFycmF5W2ldKQogICAgICAg
ICAgICAgICAgIGludmFsaWRhdGlvblJ1bGVTZXRzLT5hcHBlbmQoeyBzdGF0aWNfY2FzdDxNYXRj
aEVsZW1lbnQ+KGkpLCBXVEZNb3ZlKG1hdGNoRWxlbWVudEFycmF5W2ldKSwgV1RGTW92ZShpbnZh
bGlkYXRpb25TZWxlY3RvckFycmF5W2ldKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDA1ZDM4NWE1NThjNDhjNDhlZThkYTkwZjZhMThjYjRl
NzVhNmE5NWEuLjA1YjQ1N2ZkNjgyMGM2N2YwZTBmYmU5MzA4N2I4Y2VmMDgyOWViYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMjkxLDcgKzI5
MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVudFJ1
bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNlCiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gcnVsZURhdGFWZWN0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOworICAgIGF1dG8g
cnVsZURhdGFWZWN0b3IgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOwog
ICAgIHJ1bGVEYXRhVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hlZFJ1bGVz
LnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVzKQog
ICAgICAgICBydWxlRGF0YVZlY3Rvci0+dW5jaGVja2VkQXBwZW5kKCptYXRjaGVkUnVsZS5ydWxl
RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCAyMTIyNDVkZWRjYWZmOTU2YWQ0NDEw
N2I5ZWI0NGNiNDEzMjhhYWRiLi5lMWIxYWYyMGZiMTFhZTNkZmVlMTkyY2FjOTJlNjJjZGVhNTU3
ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVy
KENTU0ZvbnRGYWNlJiBmb250RmFjZSwgUmVmPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYmIGFycmF5
QnVmZmVyVmlldykKIHsKLSAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9u
dEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92
ZShhcnJheUJ1ZmZlclZpZXcpKTsKKyAgICBhdXRvIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9u
dEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92
ZShhcnJheUJ1ZmZlclZpZXcpKTsKICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNv
dXJjZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggM2IyMGQ0MTMzMzc1
MzNkNmNiM2M1OGNiM2QxMDRmMGYwNGI1ZTYxOS4uZTFlMWQ3MjEyMTFlNmRlMDFhOGE4NmUwZDQw
ZDg1Mjg5OTdiMzU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8RGVw
cmVjYXRlZENTU09NVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3JhcEZv
ckRlcHJlY2F0ZWRDUwogICAgIC8vIFRoZSBtYXAgaXMgaGVyZSB0byBtYWludGFpbiB0aGUgb2Jq
ZWN0IGlkZW50aXR5IG9mIHRoZSBDU1NWYWx1ZXMgb3ZlciBtdWx0aXBsZSBpbnZvY2F0aW9ucy4K
ICAgICAvLyBGSVhNRTogSXQgaXMgbGlrZWx5IHRoYXQgdGhlIGlkZW50aXR5IGlzIG5vdCBpbXBv
cnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5IGFuZCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92
ZWQuCiAgICAgaWYgKCFtX2Nzc29tVmFsdWVXcmFwcGVycykKLSAgICAgICAgbV9jc3NvbVZhbHVl
V3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRyPERl
cHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CisgICAgICAgIG1fY3Nzb21WYWx1ZVdyYXBwZXJzID0g
bWFrZVVuaXF1ZTxIYXNoTWFwPENTU1ZhbHVlKiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1
ZT4+PigpOwogICAgIAogICAgIGF1dG8mIGNsb25lZFZhbHVlID0gbV9jc3NvbVZhbHVlV3JhcHBl
cnMtPmFkZChpbnRlcm5hbFZhbHVlLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPigpKS5p
dGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNsb25lZFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVh
dHVyZS5jcHAKaW5kZXggZGZmZGE2ZjUxZGY5NTRkMjA2ZjAzZDBjNzM1NjBkZGEzOTJkMTQzMC4u
NDRlZWIxZDcwMmQyZjlkY2I2YjEyYjU1Mjc4MTU2N2ZkMDBkMmU1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UnVsZUZlYXR1cmUuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6
Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIAogICAgIGZvciAoYXV0
byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAgICAgIGNs
YXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0
ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURh
dGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBuYW1lQW5k
TWF0Y2guc2Vjb25kKSk7CiAgICAgICAgIGlmIChuYW1lQW5kTWF0Y2guc2Vjb25kID09IE1hdGNo
RWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChuYW1l
QW5kTWF0Y2guZmlyc3QpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6
OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgICAgIGF1dG8q
IHNlbGVjdG9yID0gc2VsZWN0b3JBbmRNYXRjaC5maXJzdDsKICAgICAgICAgYXV0byBtYXRjaEVs
ZW1lbnQgPSBzZWxlY3RvckFuZE1hdGNoLnNlY29uZDsKICAgICAgICAgYXR0cmlidXRlUnVsZXMu
ZW5zdXJlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSgpLCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9y
PFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVs
ZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVE
YXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG1hdGNoRWxlbWVudCwgc2VsZWN0b3IpKTsKICAgICAg
ICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBh
dHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFt
ZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwpAQCAtMjAxLDE0ICsyMDEsMTQgQEAgdm9p
ZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAgICB1
bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFZlY3RvcihvdGhlci51bmNvbW1vbkF0dHJpYnV0
ZVJ1bGVzKTsKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLmNsYXNzUnVsZXMp
IHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAg
ICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFs
dWUpOwogICAgIH0KICAgICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuY2xhc3Nlc0Fm
ZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkpOwog
CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5hdHRyaWJ1dGVSdWxlcykgewog
ICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAg
ICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFs
dWUpOwogICAgIH0KICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuYXR0cmli
dXRlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hvc3Qu
ZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGZhNmI5MTIwMjEzZWM1NGJiNjU5MDNj
ZmFlNjY5YmQ0NjZmYmIwMjcuLjNiYmJiZmViY2EwMDk5NzgyYWYzOTgxZWI4NjczNmNlNjgwMzZl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFJ1bGVT
ZXQ6OmFkZFRvUnVsZVNldChjb25zdCBBdG9tU3RyaW5nJiBrZXksIEF0b21SdWxlTWFwJiBtYXAs
IGNvbnN0IFJ1bGVEYQogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgcnVsZXMgPSBtYXAuYWRk
KGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghcnVsZXMpCi0gICAgICAg
IHJ1bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlRGF0YVZlY3Rvcj4oKTsKKyAgICAgICAgcnVs
ZXMgPSBtYWtlVW5pcXVlPFJ1bGVEYXRhVmVjdG9yPigpOwogICAgIHJ1bGVzLT5hcHBlbmQocnVs
ZURhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgK
aW5kZXggNjlhZjU1ODE1NjU0YmUzMjBmMWE5ZmQ3MWE3NzY2N2Q5MjkzZmE5Ny4uODg3NzVhZDdi
YThhYTU5MGFkN2JmNzJhMzdkM2I1ZjY1YjVkMmQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMzQ4LDkgKzM0OCw5IEBAIGlubGluZSBMZW5ndGgg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29u
c3QgTGVuZ3RoCiAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMo
MTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9u
Tm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwot
ICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Np
b25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRB
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0g
ICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdU
Rk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5j
aGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAs
IFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxj
RXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2Fs
Y0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3Vi
dHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1v
dmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDdXN0b20uaAppbmRleCA5YTE5MWQxN2RkOGUzZWRjYzFjMTMwYzI2NTkwZTBjYTZmNGUzNmEz
Li5jNWMyYmY1ZDBmNWZjNzkxMGFmZjE2MjU5OTkwYzQzODY2MGMxNDI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC04MTMsNyArODEzLDcgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmUKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5jb2xvckZy
b21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y29sb3IoKTsKLSAgICAgICAg
YXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCh4
LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlX
ZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFy
ZW50KTsKKyAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJ
bnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NT
UHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6
OnRyYW5zcGFyZW50KTsKICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNo
YWRvdykKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhX
VEZNb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlm
IHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCkBAIC04MjksNyArODI5
LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0U2hh
ZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2wKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxlUmVz
b2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFk
b3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDogbnVs
bHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxlUmVz
b2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRh
Pigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDogbnVsbHB0cik7
CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRTaGFk
b3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtODQ0
LDcgKzg0NCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFs
Qm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2CiAKIGlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5
bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IHN0ZDo6bWFrZV91bmlxdWU8
U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpIDog
bnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5bGVS
ZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IG1ha2VVbmlxdWU8U2hhZG93RGF0
YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpIDogbnVsbHB0cik7
CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJveFNoYWRv
dyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0xMzU5
LDcgKzEzNTksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVD
b250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAgICAgICBDU1NWYWx1
ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwogICAg
ICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAg
ICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0eWxl
SWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAgICAgICAgICAgYXV0byBjb3VudGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxp
c3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOworICAgICAgICAgICAgYXV0
byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVu
dGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOwogICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50KFdURk1vdmUoY291bnRl
ciksIGRpZFNldCk7CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA0Y2Y2YzZmN2FiN2Rm
OWZjMDQzMzRiYmU4ZGQwNWEzYjU1OWU5MzVjLi4xOWNiMDMzZDcwYmI1YTg5Njg2NTU3Mjc1NWI5
NmI5NzcwNTFjYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAt
MTUzMCw3ICsxNTMwLDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCiAgICAgICAgIEFTU0VSVCghbV9jc3Nv
bVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSk7CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBw
ZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKKyAgICBtX2Nzc29tV3JhcHBlciA9IG1h
a2VVbmlxdWU8UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcyk7CiAgICAgcmV0
dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApAQCAtMTU0MCw3ICsxNTQwLDcgQEAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVE
ZWNsYXJhdGlvbihTdHkKICAgICAgICAgQVNTRVJUKG1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVt
ZW50KCkgPT0gJnBhcmVudEVsZW1lbnQpOwogICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVy
OwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lQ1NT
U3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMsIHBhcmVudEVsZW1lbnQpOworICAgIG1fY3Nzb21XcmFw
cGVyID0gbWFrZVVuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywgcGFyZW50
RWxlbWVudCk7CiAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDNhNTJjMzYxOTlhNzlhMjVlMDljMDFkOGZhMGM1MGFl
ZmY2ODJiYjUuLmRlNGRhNWY1NTEyOTkwOTMxZGE4NmM1YzdlODNiY2IxMDE4MDhiYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE3MTUsNyArMTcxNSw3IEBAIFN0eWxl
UmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9w
ZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgICAgIGlmIChhdXRob3JSb2xsYmFjaykKICAgICAgICAg
ICAgIHJldHVybiBhdXRob3JSb2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld0F1dGhvclJvbGxi
YWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2sobWFrZVVuaXF1ZTxDYXNj
YWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAgICAgICAvLyBU
aGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBVQSBydWxlcyBhbmQgdXNlciBy
dWxlcyBidXQgbm8gYXV0aG9yIHJ1bGVzLgogICAgICAgICBuZXdBdXRob3JSb2xsYmFjay0+YWRk
Tm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxl
LCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpAQCAtMTczMiw3ICsxNzMy
LDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVyOjpj
YXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAgICAgaWYgKHVzZXJSb2xsYmFjaykK
ICAgICAgICAgICAgIHJldHVybiB1c2VyUm9sbGJhY2s7CiAKLSAgICAgICAgYXV0byBuZXdVc2Vy
Um9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwg
d3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBuZXdVc2VyUm9sbGJhY2sobWFrZVVuaXF1ZTxD
YXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAgICAgICAv
LyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBvbmx5IFVBIHJ1bGVzLgog
ICAgICAgICBuZXdVc2VyUm9sbGJhY2stPmFkZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1h
dGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1
bGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCA5OTdjNGMwMzY3ZGQ1ZDBkNjQ1
ZDVlZGY1MWVlYzRiZmIwYzMyMTA1Li4wMmEzNmVmZTA1ZDNjYzlmZTk3ZGQ1YzBlMjU5M2FlNzlm
ZDZjMmM2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC04MTEsNyArODExLDcgQEAgc3ViIGdl
bmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29u
dGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogcHJldmlvdXNDaGlsZCA9IG51bGxwdHI7XG4i
OwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoYXV0byogcGFyZW50ID0gJnN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1lKSAu
ICIoKTsgcGFyZW50ICYmIHBhcmVudC0+IiAuICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBhcmVudCA9
IHBhcmVudC0+bmV4dCgpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAg
ICBpZiAoIWNoaWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAg
ICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAu
IGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQobWFrZVVuaXF1ZTxGaWxs
TGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5leHQo
KTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIH1cbiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGNoaWxkLT4iIC4gJHNldHRlciAuICIocGFyZW50
LT4iIC4gJGdldHRlciAuICIoKSk7XG4iOwpAQCAtODM3LDcgKzgzNyw3IEBAIHN1YiBnZW5lcmF0
ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIiAgICAvLyBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNy
ZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVkLlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBpZiAoIWNo
aWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAgIHBy
ZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRG
aWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxM
YXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5l
eHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICB9XG4iOwog
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZU1hcCgpLT4iIC4gZ2V0RmlsbExheWVyTWFwZnVuY3Rpb24oJG5hbWUpIC4gIigiIC4gJENTU1By
b3BlcnR5SWQgLiAiLCAqY2hpbGQsIGl0ZW0pO1xuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckltcGwuY3BwCmluZGV4IDY3Y2ZkZjU2ZDYyNTA1M2EwMTExOTkyZDcxMWY4
YzhmZmRiOTVkYzIuLmQ3NWU0ZmM5MmM3N2IwN2IxZTUzZGFkMzM4N2U1NTFhMzkwYzI1YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNzcsNyAr
NzcsNyBAQCBDU1NQYXJzZXJJbXBsOjpDU1NQYXJzZXJJbXBsKGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc3RyaQogICAgICwgbV9zdHlsZVNoZWV0KHN0eWxl
U2hlZXQpCiAgICAgLCBtX29ic2VydmVyV3JhcHBlcih3cmFwcGVyKQogewotICAgIG1fdG9rZW5p
emVyID0gd3JhcHBlciA/IHN0ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcsICp3
cmFwcGVyKSA6IHN0ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOworICAgIG1f
dG9rZW5pemVyID0gd3JhcHBlciA/IG1ha2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcsICp3
cmFwcGVyKSA6IG1ha2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOwogICAgIGlmIChjb250
ZXh0LmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCAmJiAhd3JhcHBlciAmJiBzdHlsZVNoZWV0ICYm
IHJ1bGVQYXJzaW5nID09IENTU1BhcnNlcjo6UnVsZVBhcnNpbmc6OkRlZmVycmVkKQogICAgICAg
ICBtX2RlZmVycmVkUGFyc2VyID0gQ1NTRGVmZXJyZWRQYXJzZXI6OmNyZWF0ZShjb250ZXh0LCBz
dHJpbmcsICpzdHlsZVNoZWV0KTsKIH0KQEAgLTI4Miw5ICsyODIsOSBAQCBDU1NTZWxlY3Rvckxp
c3QgQ1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZSwgU3R5bAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxl
Y3RvcjsKICAgICBpZiAoIXR5cGVTZWxlY3Rvci5pc051bGwoKSAmJiBwc2V1ZG8uaXNOdWxsKCkp
Ci0gICAgICAgIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4o
UXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1
bHROYW1lc3BhY2UoKSkpOworICAgICAgICBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHlsZVNo
ZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBzZWxlY3Rv
ciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIGlmICghcHNldWRv
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBzZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4oQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9y
KHBzZXVkbykpOwogICAgICAgICAgICAgaWYgKCFzZWxlY3RvciB8fCBzZWxlY3Rvci0+bWF0Y2go
KSAhPSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKQpAQCAtNTM1LDcgKzUzNSw3IEBAIFJl
ZlB0cjxTdHlsZVJ1bGVOYW1lc3BhY2U+IENTU1BhcnNlckltcGw6OmNvbnN1bWVOYW1lc3BhY2VS
dWxlKENTU1BhcnNlclRva2VuUmFuCiBSZWZQdHI8U3R5bGVSdWxlTWVkaWE+IENTU1BhcnNlcklt
cGw6OmNvbnN1bWVNZWRpYVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQYXJz
ZXJUb2tlblJhbmdlIGJsb2NrKQogewogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAg
ICByZXR1cm4gU3R5bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1l
ZGlhUXVlcnlTZXQocHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0KSku
cmVsZWFzZU5vbk51bGwoKSwgIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVs
ZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVS
dWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQocHJl
bHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0KSkucmVsZWFzZU5vbk51bGwo
KSwgIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZl
cnJlZFBhcnNlcikpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gcnVsZXM7
CiAKQEAgLTU2Myw3ICs1NjMsNyBAQCBSZWZQdHI8U3R5bGVSdWxlU3VwcG9ydHM+IENTU1BhcnNl
ckltcGw6OmNvbnN1bWVTdXBwb3J0c1J1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3IsIGludmFsaWQgQHN1cHBvcnRzIGNvbmRpdGlv
bgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVT
dXBwb3J0czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1
cHBvcnRlZCwgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxv
Y2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVTdXBwb3J0
czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1cHBvcnRl
ZCwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVy
cmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAgICAgbV9v
YnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6U3Vw
cG9ydHMsIG1fb2JzZXJ2ZXJXcmFwcGVyLT5zdGFydE9mZnNldChwcmVsdWRlKSk7CkBAIC02MzUs
NyArNjM1LDcgQEAgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gQ1NTUGFyc2VySW1wbDo6Y29u
c3VtZUtleWZyYW1lc1J1bGUoYm9vbCB3ZWJraXRQcmVmaXgKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7IC8vIFBhcnNlIGVycm9yOyBleHBlY3RlZCBpZGVudCB0b2tlbiBpbiBAa2V5ZnJhbWVzIGhl
YWRlcgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1
bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVH
cm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJu
IFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUsIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHls
ZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgaWYgKG1f
b2JzZXJ2ZXJXcmFwcGVyKSB7CiAgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigp
LnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OktleWZyYW1lcywgbV9vYnNlcnZlcldyYXBwZXIt
PnN0YXJ0T2Zmc2V0KHJhbmdlQ29weSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlclNlbGVjdG9yLmNwcAppbmRleCA0ZGJlZjQwNThjNzE2MmNkOTY0NmVhNzY0ZGNi
YjliYmNmMzFlNDU5Li5hMDg3MGQzNzYyY2VhNDJmNWI1ZWFiZDA1ZWE3NDRmMmQ5ZDZiMzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcApA
QCAtNDQsNyArNDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1Bh
cnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3RvcihTdAogICAgIGVsc2UKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxD
U1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2go
Q1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcyk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldFBhZ2VQc2V1ZG9UeXBlKHBzZXVkb1R5cGUpOwogICAgIHJldHVybiBzZWxlY3RvcjsKQEAg
LTYzLDcgKzYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJz
ZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENT
U1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChD
U1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUpOwogICAgIEF0b21TdHJpbmcgbmFtZTsKQEAg
LTg0LDEzICs4NCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1Bh
cnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IoUwogewogICAgIGF1dG8gcHNl
dWRvVHlwZSA9IHBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFN0cmluZyhw
c2V1ZG9UeXBlU3RyaW5nKTsKICAgICBpZiAocHNldWRvVHlwZS5wc2V1ZG9DbGFzcyAhPSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBhdXRvIHNlbGVj
dG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0b3It
Pm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CiAgICAgICAg
IHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9DbGFzc1R5cGUocHNldWRvVHlwZS5wc2V1
ZG9DbGFzcyk7CiAgICAgICAgIHJldHVybiBzZWxlY3RvcjsKICAgICB9CiAgICAgaWYgKHBzZXVk
b1R5cGUuY29tcGF0aWJpbGl0eVBzZXVkb0VsZW1lbnQgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Vs
ZW1lbnRVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1
ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKICAgICAgICAgc2VsZWN0b3ItPm1f
c2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBz
ZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0VmFsdWUocHNl
dWRvVHlwZVN0cmluZy5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKQEAgLTEwMCwxMiArMTAw
LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0
b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3RvcihTCiB9CiAKIENTU1BhcnNlclNlbGVjdG9yOjpD
U1NQYXJzZXJTZWxlY3RvcigpCi0gICAgOiBtX3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q1NT
U2VsZWN0b3I+KCkpCisgICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KCkp
CiB7CiB9CiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcihjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdRTmFtZSkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxD
U1NTZWxlY3Rvcj4odGFnUU5hbWUpKQorICAgIDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENTU1Nl
bGVjdG9yPih0YWdRTmFtZSkpCiB7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBDU1NQYXJzZXJT
ZWxlY3Rvcjo6fkNTU1BhcnNlclNlbGVjdG9yKCkKIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6
YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPj4mJiBzZWxlY3RvclZlY3RvcikKIHsKLSAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxp
c3Qoc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0b3JWZWN0
b3IpKSk7CisgICAgbV9zZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0KG1ha2VVbmlxdWU8Q1NTU2Vs
ZWN0b3JMaXN0PihXVEZNb3ZlKHNlbGVjdG9yVmVjdG9yKSkpOwogfQogCiB2b2lkIENTU1BhcnNl
clNlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRv
bVN0cmluZz4+IGFyZ3VtZW50TGlzdCkKQEAgLTIwOSwxMiArMjA5LDEyIEBAIHZvaWQgQ1NTUGFy
c2VyU2VsZWN0b3I6OmFwcGVuZFRhZ0hpc3RvcnkoQ1NTUGFyc2VyU2VsZWN0b3JDb21iaW5hdG9y
IHJlbGF0aW9uLCBzCiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rv
cihjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVzcGFjZVJ1
bGUpCiB7Ci0gICAgYXV0byBzZWNvbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVj
dG9yPigpOworICAgIGF1dG8gc2Vjb25kID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4o
KTsKICAgICBzZWNvbmQtPm1fc2VsZWN0b3IgPSBXVEZNb3ZlKG1fc2VsZWN0b3IpOwogICAgIHNl
Y29uZC0+bV90YWdIaXN0b3J5ID0gV1RGTW92ZShtX3RhZ0hpc3RvcnkpOwogICAgIG1fdGFnSGlz
dG9yeSA9IFdURk1vdmUoc2Vjb25kKTsKIAotICAgIG1fc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKKyAgICBt
X3NlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lzRm9yTmFt
ZXNwYWNlUnVsZSk7CiAgICAgbV9zZWxlY3Rvci0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OlN1
YnNlbGVjdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VyLmNwcAppbmRleCA0ODhlNjAyM2YyMDAyNGFmZmVmODYxN2E1MTRjNDA5YmY0OWQx
ZWYzLi43MDhlYzc3NzNjMThkNmUwOGUwMDFjYWZhM2QyOGM4MGQ5Zjg3MmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMjQzNSw3
ICsyNDM1LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlUGF0aD4gY29uc3VtZUJhc2lj
U2hhcGVQYXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MKICAgICBpZiAoYXJncy5wZWVrKCku
dHlwZSgpICE9IFN0cmluZ1Rva2VuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAg
ICBhdXRvIGJ5dGVTdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigp
OworICAgIGF1dG8gYnl0ZVN0cmVhbSA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7
CiAgICAgaWYgKCFidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhhcmdzLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCAqYnl0ZVN0cmVhbSwgVW5h
bHRlcmVkUGFyc2luZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAppbmRleCA2YjNhY2M4
NWU2ZmM1ZTVjYmI5NWFiOWZlMWE2YzdjYTllZjgxMDQ3Li5mMzMyM2IyMjZiNGIwMTAwYzk4M2M0
ODY2Mzc1ZjFlNjU3YjE3Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVQc2V1ZG8oQ1NTUGFy
c2VyVG9rCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NM
YW5nOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQ1NTIFNlbGVjdG9ycyBMZXZlbCA0IGFsbG93
cyA6bGFuZygqLWZvbykKLSAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+KCk7CisgICAgICAgICAgICBhdXRvIGFyZ3VtZW50
TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPEF0b21TdHJpbmc+PigpOwogICAgICAgICAgICAgaWYg
KCFjb25zdW1lTGFuZ0FyZ3VtZW50TGlzdChhcmd1bWVudExpc3QsIGJsb2NrKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRMYW5nQXJn
dW1lbnRMaXN0KFdURk1vdmUoYXJndW1lbnRMaXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCA5ZWI1ZDdlNDlmNTZhMWU5
OGQxZmJiOWIyM2U2ZWE3MmUyMjYxNThmLi44ODExN2YxOWU0YjI2YmEyNWJmZjI1YTg1NTkxNzMy
YmI3YTNlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJl
YWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBDdXN0b21FbGVtZW50UmVhY3Rpb25R
dWV1ZTo6RWxlbWVudFF1ZXVlJiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5zdXJlQmFj
awogewogICAgIGlmICghc19wcm9jZXNzaW5nQmFja3VwRWxlbWVudFF1ZXVlKSB7CiAgICAgICAg
IHNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRRdWV1ZSA9IHRydWU7Ci0gICAgICAgIE1pY3JvdGFz
a1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYWNrdXBF
bGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOworICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRo
cmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8QmFja3VwRWxlbWVudFF1ZXVlTWljcm90YXNr
PigpKTsKICAgICB9CiAgICAgcmV0dXJuIGJhY2t1cEVsZW1lbnRRdWV1ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBjYjc1MjMyODBjN2IzMjVjNjZjZGU2NDZjMTVi
ZjVhOTEzMTc0NWJjLi5jMDliODQzNjM1NTM0MWE4ZWQ0MGE1YThiODUxNmI2ZDk3YmE2ZGQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQg
RGF0YVRyYW5zZmVyOjpkaWRBZGRGaWxlVG9JdGVtTGlzdCgpCiBEYXRhVHJhbnNmZXJJdGVtTGlz
dCYgRGF0YVRyYW5zZmVyOjppdGVtcygpCiB7CiAgICAgaWYgKCFtX2l0ZW1MaXN0KQotICAgICAg
ICBtX2l0ZW1MaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlzdD4oKnRo
aXMpOworICAgICAgICBtX2l0ZW1MaXN0ID0gbWFrZVVuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlz
dD4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtNDE2LDcgKzQxNiw3
IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29uc3Qg
U3RyaW5nJiBodG1sVGV4dCkKIHsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1
ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0
L3BsYWluIl9zLCBwbGFpblRleHQpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0ZXh0
L2h0bWwiX3MsIGh0bWxUZXh0KTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNm
ZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCksIFR5
cGU6OklucHV0RXZlbnQpKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBSZWY8RGF0YVRyYW5zZmVyPiBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogCiBS
ZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0
UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3Rk
OjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEp
KTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRv
Y3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJk
PigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2lu
SWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAg
ICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIERhdGFU
cmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkKICAg
ICBtX2RyYWdJbWFnZSA9IGltYWdlOwogICAgIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICBp
ZiAoIW1fZHJhZ0ltYWdlTG9hZGVyKQotICAgICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPERyYWdJbWFnZUxvYWRlcj4odGhpcyk7CisgICAgICAgICAgICBtX2Ry
YWdJbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKICAgICAg
ICAgbV9kcmFnSW1hZ2VMb2FkZXItPnN0YXJ0TG9hZGluZyhtX2RyYWdJbWFnZSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIu
Y3BwCmluZGV4IDMzNjIyMzEwODFiMTNmNzJkYzE4ZGFjNWYzOTA3YTVlN2MxN2IwYmYuLmYyMTEz
MWZmODI3ODIxZGM3NGU4NTBhOThmMWJiMjMwOTllMDI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDAsNyArMTAw
LDcgQEAgYm9vbCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQoUGFnZSog
cGFnZSkKIAogdm9pZCBwcm92aWRlRGV2aWNlT3JpZW50YXRpb25UbyhQYWdlJiBwYWdlLCBEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewotICAgIERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1
cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyPihjbGllbnQpKTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVU
bygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBt
YWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQxN2ZmMmNm
ZWMxODc4ZTY3YzU4MTA3OTI4MGI0OTFiODg1OTNlNTkuLmVkNDg0ODk3ZmFkMTk5Nzc4ZTg4Mzkz
OWRkMTIzYWUyZDZjNmMyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTIxLDE5ICs1
MjEsMTkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmws
IHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fcXVpcmtzKG1ha2VVbmlx
dWVSZWY8UXVpcmtzPigqdGhpcykpCiAgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKG1fZnJh
bWUgPyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+KG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpIDogQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmNyZWF0ZShudWxscHRyKSkKICAgICAsIG1fZG9tVHJlZVZlcnNpb24oKytzX2dsb2Jh
bFRyZWVWZXJzaW9uKQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6
OlNjb3BlPigqdGhpcykpCi0gICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRzKHN0ZDo6bWFrZV91
bmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVldHM+KCp0aGlzKSkKLSAgICAsIG1fdmlzaXRlZExpbmtT
dGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFZpc2l0ZWRMaW5rU3RhdGU+KCp0aGlzKSkKLSAgICAsIG1f
bWFya2VycyhzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50TWFya2VyQ29udHJvbGxlcj4oKnRoaXMp
KQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisg
ICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRzKG1ha2VVbmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVl
dHM+KCp0aGlzKSkKKyAgICAsIG1fdmlzaXRlZExpbmtTdGF0ZShtYWtlVW5pcXVlPFZpc2l0ZWRM
aW5rU3RhdGU+KCp0aGlzKSkKKyAgICAsIG1fbWFya2VycyhtYWtlVW5pcXVlPERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV9zdHlsZVJlY2FsY1RpbWVyKFt0aGlzXSB7
IHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsgfSkKICAgICAsIG1fZG9jdW1lbnRDcmVhdGlvblRpbWUo
TW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5p
cXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQotICAgICwgbV9tb2R1bGVMb2FkZXIoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVy
KG1ha2VVbmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCisgICAgLCBtX21vZHVsZUxvYWRlciht
YWtlVW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShYU0xUKQog
ICAgICwgbV9hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXIoKnRoaXMsICZEb2N1bWVudDo6
YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1feG1s
VmVyc2lvbigiMS4wIl9zKQotICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKHN0ZDo6bWFrZV91
bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQorICAgICwgbV9jb25zdGFudFByb3Bl
cnR5TWFwKG1ha2VVbmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwgbV9k
b2N1bWVudENsYXNzZXMoZG9jdW1lbnRDbGFzc2VzKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlz
KQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTU0NSwxMCArNTQ1LDEwIEBAIERvY3Vt
ZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1
bWVudENsYXNzZXMsIHVuc2lnCiAjZW5kaWYKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcigq
dGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAsIG1fZGV2aWNl
TW90aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQot
ICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlTW90
aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlTW90aW9uQ2xpZW50KSkKLSAgICAsIG1fZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElP
Uz4oKSkKLSAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNsaWVudChtYWtlVW5pcXVlPERldmljZU1vdGlvbkNs
aWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihtYWtlVW5pcXVlPERl
dmljZU1vdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU1vdGlvbkNsaWVudCkpCisgICAgLCBtX2Rl
dmljZU9yaWVudGF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRJ
T1M+KCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihtYWtlVW5pcXVlPERl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQpKQog
I2VuZGlmCiAgICAgLCBtX3BlbmRpbmdUYXNrc1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnBlbmRp
bmdUYXNrc1RpbWVyRmlyZWQpCiAgICAgLCBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVy
KCp0aGlzLCAmRG9jdW1lbnQ6OnZpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQpCkBA
IC03NTcsNyArNzU3LDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRGb3JBY2Nlc3NLZXko
Y29uc3QgU3RyaW5nJiBrZXkpCiAKIHZvaWQgRG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUo
KQogewotICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3Ry
aW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsKKyAgICBt
X2FjY2Vzc0tleUNhY2hlID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0aGlzXSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5n
LCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7CiAgICAgICAgIGZvciAo
YXV0byYgbm9kZSA6IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCp0aGlzKSkgewogICAgICAgICAg
ICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKQEAgLTc4Miw3ICs3ODIsNyBAQCBFeGNlcHRpb25P
cjxTZWxlY3RvclF1ZXJ5Jj4gRG9jdW1lbnQ6OnNlbGVjdG9yUXVlcnlGb3JTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzZWxlYwogICAgIGlmIChzZWxlY3RvclN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogICAgIGlmICghbV9zZWxlY3RvclF1
ZXJ5Q2FjaGUpCi0gICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gc3RkOjptYWtlX3VuaXF1
ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7CisgICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0g
bWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7CiAgICAgcmV0dXJuIG1fc2VsZWN0b3JR
dWVyeUNhY2hlLT5hZGQoc2VsZWN0b3JTdHJpbmcsICp0aGlzKTsKIH0KIApAQCAtODQ3LDcgKzg0
Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKCkKIERPTUltcGxlbWVu
dGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQogewogICAgIGlmICghbV9pbXBsZW1l
bnRhdGlvbikKLSAgICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8RE9N
SW1wbGVtZW50YXRpb24+KCp0aGlzKTsKKyAgICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IG1ha2VV
bmlxdWU8RE9NSW1wbGVtZW50YXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1wbGVtZW50
YXRpb247CiB9CiAKQEAgLTE3NjIsNyArMTc2Miw3IEBAIE5vZGU6Ok5vZGVUeXBlIERvY3VtZW50
Ojpub2RlVHlwZSgpIGNvbnN0CiBGb3JtQ29udHJvbGxlciYgRG9jdW1lbnQ6OmZvcm1Db250cm9s
bGVyKCkKIHsKICAgICBpZiAoIW1fZm9ybUNvbnRyb2xsZXIpCi0gICAgICAgIG1fZm9ybUNvbnRy
b2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1Db250cm9sbGVyPigpOworICAgICAgICBtX2Zv
cm1Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxGb3JtQ29udHJvbGxlcj4oKTsKICAgICByZXR1cm4g
Km1fZm9ybUNvbnRyb2xsZXI7CiB9CiAKQEAgLTE5ODcsNyArMTk4Nyw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXRPZlJlcGxh
Y2VkVGV4dCwgdW5zCiAgICAgQVNTRVJUKCFtX2luUmVuZGVyVHJlZVVwZGF0ZSk7CiAgICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gaW5SZW5kZXJUcmVlVXBkYXRlKG1faW5SZW5kZXJUcmVlVXBkYXRlLCB0
cnVlKTsKIAotICAgIGF1dG8gdGV4dFVwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlVw
ZGF0ZT4oKnRoaXMpOworICAgIGF1dG8gdGV4dFVwZGF0ZSA9IG1ha2VVbmlxdWU8U3R5bGU6OlVw
ZGF0ZT4oKnRoaXMpOwogICAgIHRleHRVcGRhdGUtPmFkZFRleHQodGV4dCwgeyBvZmZzZXRPZlJl
cGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQsIFdURjo6bnVsbG9wdCB9KTsKIAogICAg
IFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRyZWVVcGRhdGVyKCp0aGlzKTsKQEAgLTIyNjksNyAr
MjI2OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBw
YWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiBTdHlsZVJlc29sdmVyJiBEb2N1bWVu
dDo6dXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKQogewogICAgIGlmICghbV91c2Vy
QWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcikKLSAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dU
cmVlU3R5bGVSZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRoaXMp
OworICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gbWFrZVVuaXF1
ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJBZ2VudFNoYWRvd1Ry
ZWVTdHlsZVJlc29sdmVyOwogfQogCkBAIC0yNjcyLDcgKzI2NzIsNyBAQCBBWE9iamVjdENhY2hl
KiBEb2N1bWVudDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAKICAgICBBU1NFUlQoJnRvcERvY3Vt
ZW50ID09IHRoaXMgfHwgIW1fYXhPYmplY3RDYWNoZSk7CiAgICAgaWYgKCF0b3BEb2N1bWVudC5t
X2F4T2JqZWN0Q2FjaGUpIHsKLSAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlID0g
c3RkOjptYWtlX3VuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CisgICAgICAgIHRv
cERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSA9IG1ha2VVbmlxdWU8QVhPYmplY3RDYWNoZT4odG9w
RG9jdW1lbnQpOwogICAgICAgICBoYXNFdmVyQ3JlYXRlZEFuQVhPYmplY3RDYWNoZSA9IHRydWU7
CiAgICAgfQogICAgIHJldHVybiB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUuZ2V0KCk7CkBA
IC0zMDM2LDcgKzMwMzYsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRQYXJzaW5nKGJvb2wgYikKICAg
ICBtX2JQYXJzaW5nID0gYjsKIAogICAgIGlmIChtX2JQYXJzaW5nICYmICFtX3NoYXJlZE9iamVj
dFBvb2wpCi0gICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9j
dW1lbnRTaGFyZWRPYmplY3RQb29sPigpOworICAgICAgICBtX3NoYXJlZE9iamVjdFBvb2wgPSBt
YWtlVW5pcXVlPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4oKTsKIAogICAgIGlmICghbV9iUGFy
c2luZyAmJiB2aWV3KCkgJiYgIXZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldygp
LT5maXJlTGF5b3V0UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwpAQCAtNTU2Niw3ICs1NTY2
LDcgQEAgY29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBEb2N1bWVudDo6c3ZnRXh0ZW5zaW9u
cygpCiBTVkdEb2N1bWVudEV4dGVuc2lvbnMmIERvY3VtZW50OjphY2Nlc3NTVkdFeHRlbnNpb25z
KCkKIHsKICAgICBpZiAoIW1fc3ZnRXh0ZW5zaW9ucykKLSAgICAgICAgbV9zdmdFeHRlbnNpb25z
ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsKKyAgICAg
ICAgbV9zdmdFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+KCp0
aGlzKTsKICAgICByZXR1cm4gKm1fc3ZnRXh0ZW5zaW9uczsKIH0KIApAQCAtNTc3MSw3ICs1Nzcx
LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8vIFRo
aXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgp
LgogICAgICAgICBzZXRDb29raWVVUkwoVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSkpOwogICAgICAg
ICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkpOwotICAgICAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHsg
fSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOworICAgICAgICBzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwgZW1wdHlT
dHJpbmcoKSB9LCAqdGhpcykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01NzkwLDcg
KzU3OTAsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAg
aXNTZWN1cml0eU9yaWdpblVuaXF1ZSA9IGRvY3VtZW50TG9hZGVyICYmIGRvY3VtZW50TG9hZGVy
LT5yZXNwb25zZSgpLnRhaW50aW5nKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6Ok9w
YXF1ZTsKIAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5
OjpjcmVhdGUoaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVV
bmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKSk7Ci0gICAgc2V0Q29udGVu
dFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihV
UkwgeyBtX3VybCB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtl
VW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKIAog
ICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1fZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAgICAgaWYgKCFv
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5pc051bGwoKSkKQEAgLTYwMjgsNyArNjAyOCw3
IEBAIFN0cmluZyBEb2N1bWVudDo6bmFtZUZvckNTU0NhbnZhc0VsZW1lbnQoY29uc3QgSFRNTENh
bnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQpCiBUZXh0QXV0b1NpemluZyYgRG9jdW1lbnQ6OnRl
eHRBdXRvU2l6aW5nKCkKIHsKICAgICBpZiAoIW1fdGV4dEF1dG9TaXppbmcpCi0gICAgICAgIG1f
dGV4dEF1dG9TaXppbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOworICAg
ICAgICBtX3RleHRBdXRvU2l6aW5nID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZz4oKTsKICAg
ICByZXR1cm4gKm1fdGV4dEF1dG9TaXppbmc7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKQEAgLTYzOTUsNyArNjM5NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OndoZWVsRXZlbnRI
YW5kbGVyc0NoYW5nZWQoKQogdm9pZCBEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIo
Tm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIW1fd2hlZWxFdmVudFRhcmdldHMpCi0gICAgICAgIG1f
d2hlZWxFdmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwor
ICAgICAgICBtX3doZWVsRXZlbnRUYXJnZXRzID0gbWFrZVVuaXF1ZTxFdmVudFRhcmdldFNldD4o
KTsKIAogICAgIG1fd2hlZWxFdmVudFRhcmdldHMtPmFkZCgmbm9kZSk7CiAKQEAgLTY0NTUsNyAr
NjQ1NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKE5vZGUmIGhh
bmRsZXIpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoIW1fdG91Y2hFdmVu
dFRhcmdldHMpCi0gICAgICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV2ZW50VGFyZ2V0U2V0PigpOworICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gbWFrZVVu
aXF1ZTxFdmVudFRhcmdldFNldD4oKTsKIAogICAgIG1fdG91Y2hFdmVudFRhcmdldHMtPmFkZCgm
aGFuZGxlcik7CiAKQEAgLTgwNDMsNyArODA0Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExvZ01l
c3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIFZl
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBtZXNz
YWdlTGV2ZWxGcm9tV1RGTG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1h
aW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgpKSk7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5
cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhl
Y1N0YXRlKGZyYW1lKCkpKTsKIAogICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1l
c3NhZ2UpKTsKICAgICB9KTsKQEAgLTgwNzgsNyArODA3OCw3IEBAIFN0cmluZyBEb2N1bWVudDo6
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwg
Y29uc3QKIAogYm9vbCBEb2N1bWVudDo6cmVnaXN0ZXJDU1NQcm9wZXJ0eShDU1NSZWdpc3RlcmVk
Q3VzdG9tUHJvcGVydHkmJiBwcm9wKQogewotICAgIHJldHVybiBtX0NTU1JlZ2lzdGVyZWRQcm9w
ZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9wKSkpLmlzTmV3RW50cnk7CisgICAgcmV0dXJuIG1fQ1NT
UmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIG1ha2VVbmlxdWU8Q1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3ApKSkuaXNOZXdFbnRyeTsKIH0KIAogdm9p
ZCBEb2N1bWVudDo6ZGV0YWNoRnJvbUZyYW1lKCkKQEAgLTgxNzIsNyArODE3Miw3IEBAIERldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciYgRG9jdW1lbnQ6OmRldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uCiAgICAgICAgIHJldHVybiB0b3BEb2N1bWVudCgpLmRldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcigpOwogCiAgICAgaWYgKCFtX2Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcikKLSAgICAgICAgbV9kZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcj4oKnRoaXMpOworICAgICAg
ICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcjsK
IH0KIApAQCAtODIwMyw3ICs4MjAzLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPFBhaW50V28KIENvbnRl
bnRDaGFuZ2VPYnNlcnZlciYgRG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpCiB7CiAg
ICAgaWYgKCFtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9jb250ZW50Q2hhbmdl
T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRoaXMp
OworICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IG1ha2VVbmlxdWU8Q29udGVudENo
YW5nZU9ic2VydmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRlbnRDaGFuZ2VPYnNlcnZl
cjsgCiB9CiAKQEAgLTgyMTEsNyArODIxMSw3IEBAIERPTVRpbWVySG9sZGluZ1RhbmsmIERvY3Vt
ZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKCkKIHsKICAgICBpZiAobV9kb21UaW1lckhvbGRpbmdU
YW5rKQogICAgICAgICByZXR1cm4gKm1fZG9tVGltZXJIb2xkaW5nVGFuazsKLSAgICBtX2RvbVRp
bWVySG9sZGluZ1RhbmsgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7
CisgICAgbV9kb21UaW1lckhvbGRpbmdUYW5rID0gbWFrZVVuaXF1ZTxET01UaW1lckhvbGRpbmdU
YW5rPigpOwogICAgIHJldHVybiAqbV9kb21UaW1lckhvbGRpbmdUYW5rOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IGY5N2RiZTc1MWJkNTA0MzYyNzNjMDc4ZjcwZWVhMTViNjVjNzYyYTku
LmE1ZTMyMDM5MjU5NDk1NTUzYzU5MzZjNWI4MDcxZTQwZTBmOGU2MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCkBAIC0xMjg0LDcgKzEyODQsNyBAQCBjbGFzcyBEb2N1bWVudAogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4gY3JlYXRlUGFyc2VyWWllbGRUb2tl
bigpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFBhcnNl
cllpZWxkVG9rZW4+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RG9jdW1lbnRQ
YXJzZXJZaWVsZFRva2VuPigqdGhpcyk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNBY3RpdmVQYXJz
ZXJZaWVsZFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXJZaWVsZFRva2VuQ291bnQ7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggMDFjN2Y5NmUw
MmU5ZWJkNTg4NTNmYjVkYjFjNGI4ODIxZTJmOTcyOC4uMDM3MDNiNjJiYzY1MDU1NzhiMzg5Yjk5
OTM4YTRkYWFiNmQ3NmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1
ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgRG9jdW1lbnRFdmVudFF1ZXVlOjpUaW1lciBm
aW5hbCA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKIAogRG9jdW1lbnRFdmVudFF1ZXVlOjpE
b2N1bWVudEV2ZW50UXVldWUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChk
b2N1bWVudCkKLSAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIoc3RkOjptYWtlX3VuaXF1ZTxUaW1l
cj4oKnRoaXMpKQorICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcihtYWtlVW5pcXVlPFRpbWVyPigq
dGhpcykpCiAgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQogewogICAgIG1fcGVuZGluZ0V2ZW50VGlt
ZXItPnN1c3BlbmRJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcAppbmRleCA3MjkxZDRhZGVlOWY0MTc3ZmRiZmVmZWVmZGRmMjY3
MDU0YTljNGYwLi5lNzY0MWFmNjIxOGJmMTNhYjBlM2M2ODkyMDIwZGU4ODljNGU5MDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAt
MzY0LDcgKzM2NCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIo
Tm9kZSYgbm9kZSwgY29uc3QgRG9jdW1lbnRNYXJrZXImIG5ld01hCiAgICAgc3RkOjp1bmlxdWVf
cHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZCgmbm9kZSwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwogCiAgICAgaWYgKCFsaXN0KSB7Ci0gICAgICAgIGxpc3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPE1hcmtlckxpc3Q+KCk7CisgICAgICAgIGxpc3QgPSBtYWtlVW5pcXVlPE1hcmtl
ckxpc3Q+KCk7CiAgICAgICAgIGxpc3QtPmFwcGVuZChSZW5kZXJlZERvY3VtZW50TWFya2VyKG5l
d01hcmtlcikpOwogICAgIH0gZWxzZSBpZiAoc2hvdWxkSW5zZXJ0QXNTZXBhcmF0ZU1hcmtlcihu
ZXdNYXJrZXIpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG1lcmdlIGRpY3RhdGlvbiBtYXJrZXJz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRleCA4
MWVmYjEwZDVlNzZlZGI2ZjZkMzgzNTMwMDUxZDI5YzM4OGVhZmRiLi44NTVhMmEwNjU2ZjcxYjQ1
ZWU4ZDRmZmYyODRhNTM1Mzc5YTM4Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtNDgsNyArNDgsNyBAQCBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3MqIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50U3RvcmFnZUFjY2Vzcyo+
KFN1cHBsZW1lbnQ8RG9jdW1lbnQ+Ojpmcm9tKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSkp
OwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vzcz4oZG9jdW1lbnQpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vzcz4o
ZG9jdW1lbnQpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAg
ICAgICAgcHJvdmlkZVRvKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdT
dXBwbGVtZW50KSk7CiAgICAgfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgRG9jdW1lbnRTdG9y
YWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiAgICAgICAgIGJvb2wgc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSA9IHdhc0dyYW50
ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyB8fCBwcm9tcHRXYXNTaG93biA9PSBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOwogCiAgICAgICAgIGlmIChzaG91bGRQcmVz
ZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVh
ZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50
UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgeworICAgICAgICAgICAgTWlj
cm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNy
b3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsK
ICAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5jZS5n
ZXQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmVuYWJsZVRlbXBvcmFyeVRpbWVV
c2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgfSkpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hvdWxkUHJlc2Vy
dmVVc2VyR2VzdHVyZSkgewotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRR
dWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJl
ZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRSZWZlcmVuY2UpXSAoKSB7CisgICAgICAgICAgICBN
aWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1p
Y3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5jZSld
ICgpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVy
ZW5jZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmNvbnN1bWVUZW1wb3Jh
cnlUaW1lVXNlckdlc3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsKQEAgLTIwOSw3ICsyMDksNyBA
QCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKIHsKLSAgICBtX3RlbXBvcmFyeVVzZXJH
ZXN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CisgICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVyZSA9
IG1ha2VVbmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwg
Jm1fZG9jdW1lbnQpOwogfQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6Y29uc3VtZVRl
bXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNzEyMDA4
ZjIxYjIzMWM0ZGUyMWM0MTNiNWQxMDg1ZDkzZjI1ZGFmMy4uYjBkOGFkNWQxNjQwOWE3YmU1NmJj
M2MxMGI2OWQzMmJhNzUwZGMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDc3LDcgKzQ3
Nyw3IEBAIE5hbWVkTm9kZU1hcCYgRWxlbWVudDo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgaWYg
KE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gcmFyZURhdGEuYXR0cmlidXRlTWFwKCkpCiAg
ICAgICAgIHJldHVybiAqYXR0cmlidXRlTWFwOwogCi0gICAgcmFyZURhdGEuc2V0QXR0cmlidXRl
TWFwKHN0ZDo6bWFrZV91bmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVsZW1lbnQmPigq
dGhpcykpKTsKKyAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAobWFrZVVuaXF1ZTxOYW1lZE5v
ZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOwogICAgIHJldHVybiAqcmFyZURh
dGEuYXR0cmlidXRlTWFwKCk7CiB9CiAKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgRWxlbWVu
dDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudChKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVs
ZW1lbnRJbnRlcmZhCiAgICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwogICAgIGF1dG8mIGRh
dGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUoKSkKLSAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25R
dWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50
SW50ZXJmYWNlKSk7CisgICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUo
bWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkp
OwogICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CkBAIC0yMzQ0
LDcgKzIzNDQsNyBAQCB2b2lkIEVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUoSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYWNlKQogICAgIGF1dG8mIGRhdGEgPSBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKTsKICAgICBib29sIGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUgPSBk
YXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCk7CiAgICAgaWYgKCFhbHJlYWR5U2NoZWR1
bGVkVG9VcGdyYWRlKQotICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRl
cmZhY2UpKTsKKyAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtl
VW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAg
ICAgZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpLT5lbnF1ZXVlRWxlbWVudFVwZ3Jh
ZGUoKnRoaXMsIGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpOwogfQogCkBAIC0zNDgwLDcgKzM0
ODAsNyBAQCBET01Ub2tlbkxpc3QmIEVsZW1lbnQ6OmNsYXNzTGlzdCgpCiB7CiAgICAgRWxlbWVu
dFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRh
LmNsYXNzTGlzdCgpKQotICAgICAgICBkYXRhLnNldENsYXNzTGlzdChzdGQ6Om1ha2VfdW5pcXVl
PERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CisgICAgICAgIGRh
dGEuc2V0Q2xhc3NMaXN0KG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVz
OjpjbGFzc0F0dHIpKTsKICAgICByZXR1cm4gKmRhdGEuY2xhc3NMaXN0KCk7CiB9CiAKQEAgLTM0
ODgsNyArMzQ4OCw3IEBAIERhdGFzZXRET01TdHJpbmdNYXAmIEVsZW1lbnQ6OmRhdGFzZXQoKQog
ewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwog
ICAgIGlmICghZGF0YS5kYXRhc2V0KCkpCi0gICAgICAgIGRhdGEuc2V0RGF0YXNldChzdGQ6Om1h
a2VfdW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CisgICAgICAgIGRhdGEuc2V0
RGF0YXNldChtYWtlVW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CiAgICAgcmV0
dXJuICpkYXRhLmRhdGFzZXQoKTsKIH0KIApAQCAtMzYzMiw3ICszNjMyLDcgQEAgSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJEYXRhJiBFbGVtZW50OjplbnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEo
KQogewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAg
aWYgKCFyYXJlRGF0YS5pbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKSkKLSAgICAgICAgcmFyZURh
dGEuc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJzZWN0
aW9uT2JzZXJ2ZXJEYXRhPigpKTsKKyAgICAgICAgcmFyZURhdGEuc2V0SW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXJEYXRhKG1ha2VVbmlxdWU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKICAgICBy
ZXR1cm4gKnJhcmVEYXRhLmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpOwogfQogCkBAIC0zNjU4
LDcgKzM2NTgsNyBAQCBSZXNpemVPYnNlcnZlckRhdGEmIEVsZW1lbnQ6OmVuc3VyZVJlc2l6ZU9i
c2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURh
dGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLnJlc2l6ZU9ic2VydmVyRGF0YSgpKQotICAgICAgICBy
YXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxSZXNpemVPYnNl
cnZlckRhdGE+KCkpOworICAgICAgICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEobWFr
ZVVuaXF1ZTxSZXNpemVPYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEucmVz
aXplT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFw
LmNwcAppbmRleCBkOWU2NjM0OWNiZGJhMGJiODFkMmFjZmJmZGMwZDQzMzc4YzY1OGRiLi4wYjA5
ZDA4MmMzNmVkZGQ4NGI5Y2RlOTg4MjUyNzJkYjVmOTZlNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBFdmVudExpc3Rl
bmVyTWFwOjphZGQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5l
cj4mJiBsaXMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYXV0byBsaXN0ZW5l
cnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CisgICAgYXV0byBs
aXN0ZW5lcnMgPSBtYWtlVW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CiAgICAgbGlzdGVu
ZXJzLT51bmNoZWNrZWRBcHBlbmQoUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6OmNyZWF0ZShXVEZN
b3ZlKGxpc3RlbmVyKSwgb3B0aW9ucykpOwogICAgIG1fZW50cmllcy5hcHBlbmQoeyBldmVudFR5
cGUsIFdURk1vdmUobGlzdGVuZXJzKSB9KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oCmluZGV4IDllOTMwOGJiNWRhMTQ2MWUzNThlM2NjNjJmZWFmZGNmY2QwY2M3YWQu
LjViNmFiNjg3NTViNjFiZmUyZDRhNjhiY2JlNzUyNGZkMGRkYWJiOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaApAQCAtMzM5LDEzICszMzksMTMgQEAgc3RydWN0IEV2ZW50TmFtZXMgewogICAg
IERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChET01fRVZFTlRfTkFNRVNfREVDTEFSRSkKICN1bmRl
ZiBET01fRVZFTlRfTkFNRVNfREVDTEFSRQogCi0gICAgLy8gRklYTUU6IFRoZSBmcmllbmQgZGVj
bGFyYXRpb24gdG8gc3RkOjptYWtlX3VuaXF1ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdpbmRv
d3MgcG9ydC4KKyAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBtYWtlVW5p
cXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgogICAgIC8vCiAgICAgLy8g
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4KLSAgICAvLyBmcmllbmQgdHlwZW5hbWUg
c3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBzdGQ6Om1ha2VfdW5pcXVlKEFyZ3Mm
Ji4uLik7CisgICAgLy8gZnJpZW5kIHR5cGVuYW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6X1Npbmds
ZV9vYmplY3QgbWFrZVVuaXF1ZShBcmdzJiYuLi4pOwogICAgIC8vCiAgICAgLy8gVGhpcyBjcmVh
dGUgZnVuY3Rpb24gc2hvdWxkIGJlIGRlbGV0ZWQgbGF0ZXIgYW5kIGlzIG9ubHkgZm9yIGtlZXBp
bmcgRXZlbnROYW1lcyBhcyBwcml2YXRlLgotICAgIC8vIHN0ZDo6bWFrZV91bmlxdWUgc2hvdWxk
IGJlIHVzZWQgaW5zdGVhZC4KKyAgICAvLyBtYWtlVW5pcXVlIHNob3VsZCBiZSB1c2VkIGluc3Rl
YWQuCiAgICAgLy8KICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRQYXRoLmNwcAppbmRleCBkYjE0MjhkMWQ0MjYwNThjYjY1YjFlYjZmYWNhMjNkYjk4OTI4
MmJkLi5hMGFkMGFkN2M0ODI2OTJlNjM4ZTU3MjgwZjFhMjkyNDdhY2VjMTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRQYXRoLmNwcApAQCAtMTE1LDE3ICsxMTUsMTcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1
aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogewogICAgIHVzaW5n
IE1ha2VFdmVudENvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiAoKikoTm9k
ZSYsIEV2ZW50VGFyZ2V0KiwgRXZlbnRUYXJnZXQqLCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpOwog
ICAgIE1ha2VFdmVudENvbnRleHQgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBF
dmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3Nl
ZFNoYWRvd0RlcHRoKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29u
dGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KCZub2RlLCBjdXJyZW50VGFy
Z2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICB9OwogICAgIGlmIChpczxNb3Vz
ZUV2ZW50PihldmVudCkgfHwgZXZlbnQuaXNGb2N1c0V2ZW50KCkpIHsKICAgICAgICAgbWFrZUV2
ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwg
RXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1
ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwg
Y2xvc2VkU2hhZG93RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW91c2VP
ckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNo
YWRvd0RlcHRoKTsKICAgICAgICAgfTsKICAgICB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICBpZiAoaXM8VG91Y2hFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgIG1ha2VFdmVudENvbnRl
eHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFy
Z2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVfcHRyPEV2
ZW50Q29udGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hF
dmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVw
dGgpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VG91Y2hFdmVudENvbnRleHQ+KG5v
ZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9
OwogICAgIH0KICNlbmRpZgpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgRXZlbnRQYXRoOjpidWls
ZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxEb2N1
bWVudD4oKm5vZGUpLmRvbVdpbmRvdygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2RlLCAq
d2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpu
b2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTMwOCw3ICszMDgsNyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RWxlbWVu
dCo+JiB0YXJnZXRzKQogICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgTm9kZSogb3Jp
Z2luID0gKnRhcmdldHMuYmVnaW4oKTsKICAgICAgICAgaWYgKCF0YXJnZXQtPmlzQ2xvc2VkU2hh
ZG93SGlkZGVuKCpvcmlnaW4pKQotICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwgMCkpOworICAgICAg
ICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJn
ZXQsIG9yaWdpbiwgMCkpOwogICAgIH0KIH0KIApAQCAtMzE3LDcgKzMxNyw3IEBAIEV2ZW50UGF0
aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFdmVudFRhcmdldCo+JiB0YXJnZXRzKQogICAgIGZv
ciAoYXV0byogdGFyZ2V0IDogdGFyZ2V0cykgewogICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAg
ICAgICAgQVNTRVJUKCFpczxOb2RlPih0YXJnZXQpKTsKLSAgICAgICAgbV9wYXRoLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5i
ZWdpbigpLCAwKSk7CisgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVudENvbnRl
eHQ+KG51bGxwdHIsIHRhcmdldCwgKnRhcmdldHMuYmVnaW4oKSwgMCkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlZGQ5Y2EyOGVhNDkzYWM3
Yzk0YzhiZGUyODViMTY2NmMzODgyNTU5Li5hNzBiY2FlY2NjODc5NWE0ZjRiYTQyNmUyNTEzZGZm
N2EwZjc0YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAtNDIs
NiArNDIsNyBAQCBjbGFzcyBSZW5kZXJUcmVlQnVpbGRlcjsKIGNsYXNzIFJlbmRlclN0eWxlOwog
CiBjbGFzcyBGdWxsc2NyZWVuTWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgRnVsbHNjcmVlbk1hbmFnZXIoRG9jdW1lbnQmKTsKICAgICB+RnVsbHNj
cmVlbk1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5jcHAKaW5kZXggYjNhMDZlNDdiMDcwMGY3YzQ3ZDNkOWFlZjMzZjQ0MzcyNGUwYzU1
ZS4uOTQwZWZjYWVkODMwOTFjMjU4M2ZhOWUzMzZlZjNkNzhjNTRhYTNkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKGNvbnN0IEF0
b21TdHJpbmcmIGlkLCBJZFRhcmdldE9ic2VydmUKICAgICAKICAgICBJZFRvT2JzZXJ2ZXJTZXRN
YXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3JlZ2lzdHJ5LmFkZChpZC5pbXBsKCksIG51bGxwdHIp
OwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T2JzZXJ2ZXJTZXQ+KCk7CisgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9ic2VydmVyU2V0PigpOwogCiAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKG9ic2VydmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2Fy
ZEV2ZW50LmNwcAppbmRleCA3ZTdhMzQ3OTdiODYyOWY2MmY3Zjc4NmFiMTRjNWM2ZjViZDkwYjE0
Li5jZTg1NmJiNTVkNWJkOTllNjZmNTBjYjU1YjBiZTQ3OTBlMDk4NDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBLZXlib2FyZEV2
ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogaW5saW5lIEtleWJvYXJkRXZlbnQ6Oktl
eWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxXaW5k
b3dQcm94eT4mJiB2aWV3KQogICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVGb3JL
ZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2VsYWJs
ZTo6WWVzLCBJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIGtleS50aW1lc3RhbXAoKS5hcHByb3hp
bWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldy5jb3B5UmVmKCksIDAsIGtleS5tb2RpZmllcnMoKSwg
SXNUcnVzdGVkOjpZZXMpCi0gICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQorICAgICwgbV91bmRlcmx5aW5n
UGxhdGZvcm1FdmVudChtYWtlVW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKICNp
ZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAgICAsIG1fa2V5KGtleS5rZXkoKSkK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKaW5kZXggYjYzMTg0MTUwZjVhMzkxNDI1MmI4
NDJlZDlkMDdkZWFhZjZiNDAzNi4uYmE3MjJhMTFjNzBmY2E4MDgzMmU2NGM4NTI3ZWU0NmI5YzM0
NzY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCkBAIC02OSw3ICs2OSw4IEBAIGNsYXNzIFZv
aWRNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMgTWljcm90YXNrIHsKICAgICBGdW5jdGlvbjx2b2lk
KCk+IG1fZnVuY3Rpb247CiB9OwogCi1jbGFzcyBNaWNyb3Rhc2tRdWV1ZSB7CitjbGFzcyBNaWNy
b3Rhc2tRdWV1ZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPE1pY3JvdGFza1F1ZXVlPjsKICAgICBmcmllbmQgY2xhc3MgTWlj
cm90YXNrOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCmlu
ZGV4IDY2YzVlYTBiOWQ2MzQ1NDQzODEyZmIxMzFmZmU1ZGJlNmNhMWRkZjMuLjE5M2YyNzgwNWE1
YWVkNGI2MDZlOWNlZWEzYTlhMzVkOGIxZTk5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgdm9pZCBxdWV1ZU11dGF0
aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFzaygpCiAgICAgaWYgKG11dGF0aW9uT2JzZXJ2ZXJD
b21wb3VuZE1pY3JvdGFza1F1ZXVlZEZsYWcpCiAgICAgICAgIHJldHVybjsKICAgICBtdXRhdGlv
bk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnID0gdHJ1ZTsKLSAgICBNaWNyb3Rh
c2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRp
b25PYnNlcnZlck1pY3JvdGFzaz4oKSk7CisgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRR
dWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkpOwog
fQogCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmVucXVldWVNdXRhdGlvblJlY29yZChSZWY8TXV0
YXRpb25SZWNvcmQ+JiYgbXV0YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAppbmRleCA1MmRhNjFmNzRmMWY1N2FmNjg1
NDlmMzY2NTYzMDZkOGQxNzAzYzc5Li4wMjc2ZTQyYmU1YmQ4M2ZmNDJhNzkzNTZiZGU5Y2U3MzYw
OTljYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6
Y3IKICAgICBpZiAob2JzZXJ2ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2VydmVycyks
IG9sZFZhbHVlRmxhZyk7CiB9CiAKIGJvb2wgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGM4ZmMwMTA2NzI0NWU0ZTM2
MTk3YTJmNmQ0ZDFlNDU3NTQ3YmJjOGEuLmU1YzZkZDE2YTRkYjYwOWJhNTI3M2E0N2FmN2ZhNjgy
NjYyYTJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJhdGlvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaChOb2RlJiBub2RlKQog
ICAgIG1fb2JzZXJ2ZXItPnNldEhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbigpOwogCiAgICAgaWYg
KCFtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzKSB7Ci0gICAgICAgIG1fdHJhbnNpZW50UmVn
aXN0cmF0aW9uTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8
Tm9kZT4+PigpOworICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gbWFrZVVu
aXF1ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKIAogICAgICAgICBBU1NFUlQo
IW1fbm9kZUtlcHRBbGl2ZSk7CiAgICAgICAgIG1fbm9kZUtlcHRBbGl2ZSA9ICZtX25vZGU7IC8v
IEJhbGFuY2VkIGluIHRha2VUcmFuc2llbnRSZWdpc3RyYXRpb25zLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IDc2ZDRlYTlkNzMwYTkyMzcyYTlmOGU3YTZkOGY2N2QwMGZkM2RiZjUuLmNhYmYxZWI1OGM5
YzIzY2FkODg1YmQwMWRmMTIyYjY1MWFlMDJiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTM5OCw5
ICszOTgsOSBAQCB2b2lkIE5vZGU6Om1hdGVyaWFsaXplUmFyZURhdGEoKQogewogICAgIE5vZGVS
YXJlRGF0YSogZGF0YTsKICAgICBpZiAoaXM8RWxlbWVudD4oKnRoaXMpKQotICAgICAgICBkYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRlckVsZW1l
bnQ+KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOworICAgICAgICBkYXRhID0gbWFrZVVu
aXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG1fZGF0YS5tX3Jl
bmRlcmVyKSkucmVsZWFzZSgpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOworICAgICAg
ICBkYXRhID0gbWFrZVVuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxl
YXNlKCk7CiAgICAgQVNTRVJUKGRhdGEpOwogCiAgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBkYXRh
OwpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgRXZlbnRUYXJnZXREYXRhJiBOb2RlOjplbnN1cmVFdmVu
dFRhcmdldERhdGEoKQogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX2V2ZW50VGFyZ2V0
RGF0YU1hcExvY2spOwogICAgIHNldEhhc0V2ZW50VGFyZ2V0RGF0YSh0cnVlKTsKLSAgICByZXR1
cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqZXZlbnRUYXJnZXRE
YXRhTWFwKCkuYWRkKHRoaXMsIG1ha2VVbmlxdWU8RXZlbnRUYXJnZXREYXRhPigpKS5pdGVyYXRv
ci0+dmFsdWU7CiB9CiAKIHZvaWQgTm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEoKQpAQCAtMjI4
Nyw3ICsyMjg3LDcgQEAgdm9pZCBOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRp
b25PYnNlcnZlciYgb2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIKICAgICB9CiAKICAgICBpZiAo
IXJlZ2lzdHJhdGlvbikgewotICAgICAgICByZWdpc3RyeS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9wdGlvbnMs
IGF0dHJpYnV0ZUZpbHRlcikpOworICAgICAgICByZWdpc3RyeS5hcHBlbmQobWFrZVVuaXF1ZTxN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9wdGlvbnMsIGF0
dHJpYnV0ZUZpbHRlcikpOwogICAgICAgICByZWdpc3RyYXRpb24gPSByZWdpc3RyeS5sYXN0KCku
Z2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNzY5MGQ1OTlm
Y2E3ZGM5OWNiNDllMTYwZmJlMmFmYWRkZjAwY2RmNC4uNzY2ZDY3ZjNmNmQ2MjlhZjA4OTQyYWRj
MjNlMmMyMmMyOWYzZTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMjgxLDcg
KzI4MSw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsK
ICAgICBOb2RlTGlzdHNOb2RlRGF0YSYgZW5zdXJlTm9kZUxpc3RzKCkKICAgICB7CiAgICAgICAg
IGlmICghbV9ub2RlTGlzdHMpCi0gICAgICAgICAgICBtX25vZGVMaXN0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CisgICAgICAgICAgICBtX25vZGVMaXN0cyA9IG1h
a2VVbmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9ub2RlTGlz
dHM7CiAgICAgfQogCkBAIC0yODksNyArMjg5LDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIDogcHVi
bGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YSYgZW5z
dXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKQogICAgIHsKICAgICAgICAgaWYgKCFtX211dGF0aW9u
T2JzZXJ2ZXJEYXRhKQotICAgICAgICAgICAgbV9tdXRhdGlvbk9ic2VydmVyRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhPigpOworICAgICAgICAgICAgbV9t
dXRhdGlvbk9ic2VydmVyRGF0YSA9IG1ha2VVbmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRh
PigpOwogICAgICAgICByZXR1cm4gKm1fbXV0YXRpb25PYnNlcnZlckRhdGE7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAppbmRleCA1MzM3YzU4Y2RmYmJh
YWIyMzAxODQ1MDI2MzhkYzYzNDQ5Zjc5NmFjLi42MWJiYzRlZGZmOTM0YTY0NDZlYTI1Njc1NTY2
M2ZkNTQ2ODc3ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25H
cm91cHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAK
QEAgLTE5OCwxMSArMTk4LDExIEBAIHZvaWQgUmFkaW9CdXR0b25Hcm91cHM6OmFkZEJ1dHRvbihI
VE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
bmFtZVRvR3JvdXBNYXApCi0gICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5hbWVUb0dyb3VwTWFwPigpOworICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gbWFrZVVu
aXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKIAogICAgIGF1dG8mIGdyb3VwID0gbV9uYW1lVG9Hcm91
cE1hcC0+YWRkKGVsZW1lbnQubmFtZSgpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwogICAgIGlmICghZ3JvdXApCi0gICAgICAgIGdyb3VwID0gc3RkOjptYWtlX3VuaXF1ZTxSYWRp
b0J1dHRvbkdyb3VwPigpOworICAgICAgICBncm91cCA9IG1ha2VVbmlxdWU8UmFkaW9CdXR0b25H
cm91cD4oKTsKICAgICBncm91cC0+YWRkKGVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYzgyNWE3ZWRlZTZiYjJkNWY1
MTZjNmQzZTZlYTc0MTBlNmVjYzc1Ni4uMDRhZmU5ZDc4YWQwYmQxMDI4YTY3MDNjMGZjM2Q0ZjY1
M2IxM2RlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcApAQCAtMzc5LDggKzM3OSw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluCiB7CiAgICAg
aWYgKG1faW5EaXNwYXRjaEVycm9yRXZlbnQpIHsKICAgICAgICAgaWYgKCFtX3BlbmRpbmdFeGNl
cHRpb25zKQotICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+KCk7Ci0gICAgICAg
IG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFeGNl
cHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkws
IFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucyA9
IG1ha2VVbmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+KCk7
CisgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdF
eGNlcHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VV
UkwsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00
MTQsOSArNDE0LDkgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRVbmhhbmRs
ZWRQcm9taXNlUmVqZWN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGEKICAgICBTdHJpbmcgZXJyb3JN
ZXNzYWdlID0gbWFrZVN0cmluZygiVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiAiLCByZXN1
bHRNZXNzYWdlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjYWxs
U3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlw
ZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOworICAgICAgICBtZXNz
YWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdl
KTsKICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApAQCAtNTA5
LDcgKzUwOSw3IEBAIFJlamVjdGVkUHJvbWlzZVRyYWNrZXImIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRyYWNrZXJTbG93CiAgICAgLy8gV2hlbiBpbml0aWFs
aXppbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdm0oKSBpcyBub3QgcmVhZHkuCiAKICAgICBB
U1NFUlQoIW1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlcik7Ci0gICAgbV9yZWplY3RlZFByb21pc2VU
cmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWplY3RlZFByb21pc2VUcmFja2VyPigqdGhpcywg
dm0oKSk7CisgICAgbV9yZWplY3RlZFByb21pc2VUcmFja2VyID0gbWFrZVVuaXF1ZTxSZWplY3Rl
ZFByb21pc2VUcmFja2VyPigqdGhpcywgdm0oKSk7CiAgICAgcmV0dXJuICptX3JlamVjdGVkUHJv
bWlzZVRyYWNrZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApp
bmRleCA1NWRjMmM4N2E0YWMyMDJkNzFhZGRhNjZkNTk2YjVmZWEwYmM4ODU2Li4yMTA5Y2U0YTIy
OGMzZTdiYTg3YTRiYTUyYjJkYjI4MjM2MDg3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgRXhjZXB0aW9uT3I8U2VsZWN0b3JRdWVyeSY+
IFNlbGVjdG9yUXVlcnlDYWNoZTo6YWRkKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBEb2MKICAg
ICBpZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtYXhpbXVtU2VsZWN0b3JRdWVyeUNhY2hlU2l6ZSkK
ICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShtX2VudHJpZXMucmFuZG9tKCkpOwogCi0gICAgcmV0
dXJuICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3RvclF1
ZXJ5PihXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJu
ICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5PihXVEZN
b3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAppbmRleCA2OTYzYjY4Mzc5ZDg4ZjI3YTg0ZTJmMWRhNjUxNTM4MTgwNWIy
OTNjLi42Nzg2YzBkMjFlMWIyYzJhNTc4NTFiZDA4NTE2NGMxYTFlOTJjOTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jv
b3QoRG9jdW1lbnQmIGRvY3VtZW50LCBTaGFkb3dSb290TW9kZSB0eXBlKQogICAgIDogRG9jdW1l
bnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAsIFRyZWVTY29wZSgq
dGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fc3R5bGVTY29wZShz
dGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3Bl
KG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCiB7CiB9CiAKQEAgLTY3LDcgKzY3LDcg
QEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxTbG90QXNzaWdubWVudD4mJiBzbG8KICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1l
bnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50KQog
ICAgICwgbV90eXBlKFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCi0gICAgLCBtX3N0eWxlU2Nv
cGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fc3R5bGVT
Y29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogICAgICwgbV9zbG90QXNzaWdu
bWVudChXVEZNb3ZlKHNsb3RBc3NpZ25tZW50KSkKIHsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCB2
b2lkIFNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudChEb2N1bWVudCYgbmV3
RG9jdW1lbnQpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigh
cGFyZW50VHJlZVNjb3BlKCkgfHwgJnBhcmVudFRyZWVTY29wZSgpLT5kb2N1bWVudFNjb3BlKCkg
PT0gJm5ld0RvY3VtZW50KTsKIAogICAgIC8vIFN0eWxlIHNjb3BlcyBhcmUgZG9jdW1lbnQgc3Bl
Y2lmaWMuCi0gICAgbV9zdHlsZVNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+
KCp0aGlzKTsKKyAgICBtX3N0eWxlU2NvcGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRo
aXMpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJm1fc3R5
bGVTY29wZS0+ZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOwogfQogCkBAIC0yMjgsNyArMjI4
LDcgQEAgdm9pZCBTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHMKIHsKICAgICBBU1NFUlQoJnNsb3Qucm9vdE5v
ZGUoKSA9PSB0aGlzKTsKICAgICBpZiAoIW1fc2xvdEFzc2lnbm1lbnQpCi0gICAgICAgIG1fc2xv
dEFzc2lnbm1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOworICAgICAg
ICBtX3Nsb3RBc3NpZ25tZW50ID0gbWFrZVVuaXF1ZTxTbG90QXNzaWdubWVudD4oKTsKIAogICAg
IHJldHVybiBtX3Nsb3RBc3NpZ25tZW50LT5hZGRTbG90RWxlbWVudEJ5TmFtZShuYW1lLCBzbG90
LCAqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCBhNDE5
ZGRhNTI4YWNjYmRhNmRlOWRkZjFhNTQ4NjRjZmRmOTE2MGVmLi40NWMwOGVhMzZhZmUxMzk3YmUw
ZWNiZmIyOWUyMjhlY2QwYzk5MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xv
dEFzc2lnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5j
cHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjphZGRTbG90RWxlbWVu
dEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbgogICAgICAgICAv
LyB0byBhdm9pZCBhbHdheXMgaGF2aW5nIGEgdmVjdG9yIG9mIGFsbCBjaGlsZCBub2RlcyBvZiBh
IHNoYWRvdyBob3N0LgogICAgICAgICBpZiAoc2xvdE5hbWUgPT0gZGVmYXVsdFNsb3ROYW1lKCkp
CiAgICAgICAgICAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8U2xvdD4oKTsKICAgICB9KTsKICAgICBhdXRvJiBzbG90ID0gKmFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgYm9vbCBuZWVkc1Nsb3RjaGFuZ2VFdmVudCA9IHNoYWRvd1Jvb3Quc2hv
dWxkRmlyZVNsb3RjaGFuZ2VFdmVudCgpICYmIGhhc0Fzc2lnbmVkTm9kZXMoc2hhZG93Um9vdCwg
c2xvdCk7CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6YXNzaWduVG9T
bG90KE5vZGUmIGNoaWxkLCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZSkKICAgICB9CiAKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2xvdHMuZW5zdXJlKHNsb3ROYW1lLCBbXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXNz
aWduZWROb2Rlcy5hcHBlbmQoJmNoaWxkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5k
ZXggMmYyODcwZDE2NjlkNDRiYzYxODRhNzJlYzYzZWIzMjNmNTI3ZDM5Zi4uNTMxYWNkZjRkZDY1
NjhlMGY0NjIxZWI1MGQ4OWRlZTQ2N2Q1NWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUoU2hhZG93Um9vdCYgc2hhZG93
Um9vdCwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShzaGFkb3dSb290KQog
ICAgICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUo
JmRvY3VtZW50KQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoc3RkOjptYWtlX3Vu
aXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBtX2lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKIHsKICAg
ICBzaGFkb3dSb290LnNldFRyZWVTY29wZSgqdGhpcyk7CiB9CkBAIC03Myw3ICs3Myw3IEBAIFRy
ZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUo
ZG9jdW1lbnQpCiAgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3BhcmVu
dFRyZWVTY29wZShudWxscHRyKQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoc3Rk
OjptYWtlX3VuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBtX2lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4o
KSkKIHsKICAgICBkb2N1bWVudC5zZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtMTQxLDcgKzE0
MSw3IEBAIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIFRyZWVTY29wZTo6Z2V0QWxsRWxlbWVudHNC
eUlkKGNvbnN0IEF0b21TdHJpbmcmIGVsZW1lbnRJCiB2b2lkIFRyZWVTY29wZTo6YWRkRWxlbWVu
dEJ5SWQoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGVsZW1lbnRJZCwgRWxlbWVudCYgZWxlbWVudCwg
Ym9vbCBub3RpZnlPYnNlcnZlcnMpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnRzQnlJZCkKLSAgICAg
ICAgbV9lbGVtZW50c0J5SWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+
KCk7CisgICAgICAgIG1fZWxlbWVudHNCeUlkID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVk
TWFwPigpOwogICAgIG1fZWxlbWVudHNCeUlkLT5hZGQoZWxlbWVudElkLCBlbGVtZW50LCAqdGhp
cyk7CiAgICAgaWYgKG5vdGlmeU9ic2VydmVycykKICAgICAgICAgbV9pZFRhcmdldE9ic2VydmVy
UmVnaXN0cnktPm5vdGlmeU9ic2VydmVycyhlbGVtZW50SWQpOwpAQCAtMTY4LDcgKzE2OCw3IEBA
IEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBu
YW1lKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0
cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnRz
QnlOYW1lKQotICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVl
U2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gbWFrZVVuaXF1
ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIG1fZWxlbWVudHNCeU5hbWUtPmFkZChuYW1l
LCBlbGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFRyZWVTY29w
ZTo6YWRkSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQmIGltYWdlTWFwKQogICAgIGlmICghbmFtZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9pbWFnZU1hcHNCeU5hbWUpCi0gICAgICAgIG1f
aW1hZ2VNYXBzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigp
OworICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJl
ZE1hcD4oKTsKICAgICBtX2ltYWdlTWFwc0J5TmFtZS0+YWRkKCpuYW1lLCBpbWFnZU1hcCwgKnRo
aXMpOwogfQogCkBAIC0yNjMsNyArMjYzLDcgQEAgSFRNTE1hcEVsZW1lbnQqIFRyZWVTY29wZTo6
Z2V0SW1hZ2VNYXAoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNjb3Bl
OjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgSFRN
TEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1faW1hZ2VzQnlVc2VtYXApCi0g
ICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVy
ZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBtYWtlVW5pcXVlPFRyZWVTY29w
ZU9yZGVyZWRNYXA+KCk7CiAgICAgcmV0dXJuIG1faW1hZ2VzQnlVc2VtYXAtPmFkZChuYW1lLCBl
bGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBIVE1MTGFiZWxFbGVtZW50
KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKGNvbnN0IEF0b21TdHJpbmcmIGZvckF0dHJp
YnV0ZVZhbAogCiAgICAgaWYgKCFtX2xhYmVsc0J5Rm9yQXR0cmlidXRlKSB7CiAgICAgICAgIC8v
IFBvcHVsYXRlIHRoZSBtYXAgb24gZmlyc3QgYWNjZXNzLgotICAgICAgICBtX2xhYmVsc0J5Rm9y
QXR0cmlidXRlID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAg
ICAgICBtX2xhYmVsc0J5Rm9yQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVk
TWFwPigpOwogCiAgICAgICAgIGZvciAoYXV0byYgbGFiZWwgOiBkZXNjZW5kYW50c09mVHlwZTxI
VE1MTGFiZWxFbGVtZW50PihtX3Jvb3ROb2RlKSkgewogICAgICAgICAgICAgY29uc3QgQXRvbVN0
cmluZyYgZm9yVmFsdWUgPSBsYWJlbC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZv
ckF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5o
CmluZGV4IGRkYTQ5MGIxM2NkYzJkZGI4M2ZiMWZjOGZmYWIwOWRmMDA4OGQ4MmMuLjQyNjgxOTZm
ODkyYWYzMDU1MTAzYzQ4NzJmZThlY2JkZDVmMTFhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgU3R5
bGVkRWxlbWVudDsKIGNsYXNzIFRleHQ7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlVbmRvUmVwbGFj
ZWRUZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBY2Nl
c3NpYmlsaXR5VW5kb1JlcGxhY2VkVGV4dCgpIHsgfQogICAgIHZvaWQgY29uZmlndXJlUmFuZ2VE
ZWxldGVkQnlSZWFwcGx5V2l0aFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3OTM0MmM0OTc3NTNkOWExNTI2
ZTA1NTU0OWZjNzc5NzIxNGJmNmU0Li44OTFjMTI4OGM2ZTMxNGFjY2FlOWI2MjcxOTc4MTg4MWU3
NDJkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODAsMTIgKzM4MCwxMiBA
QCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJk
RXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2Ug
Q2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpD
dXQ6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShk
b2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtlX3Vu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6
UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogICAgIGNhc2UgQ2xp
cGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUGxhaW5UZXh0OgogICAgICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJs
ZWQoKSkgewogICAgICAgICAgICAgYXV0byBwbGFpblRleHRUeXBlID0gInRleHQvcGxhaW4iX3M7
CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpLT5yZWFkU3RyaW5nKHBsYWluVGV4dFR5cGUpOwotICAgICAgICAgICAgYXV0byBw
YXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOworICAgICAg
ICAgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwog
ICAgICAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcocGxhaW5UZXh0VHlwZSwgcGxhaW5U
ZXh0KTsKICAgICAgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3Zl
KHBhc3RlYm9hcmQpKTsKICAgICAgICAgfQpAQCAtMzk2LDEwICszOTYsMTAgQEAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3Vt
ZW50JiBkb2N1bWVudCwKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToK
ICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xpcGJv
YXJkRXZlbnRLaW5kOjpCZWZvcmVQYXN0ZToKLSAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6
SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAg
cmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRh
VHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJk
PigpKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0
b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsK
KyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQs
IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3Rl
Ym9hcmQ+KCkpOwogfQogCiAvLyBSZXR1cm5zIHdoZXRoZXIgY2FsbGVyIHNob3VsZCBjb250aW51
ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5nIiwgd2hpY2ggaXMgdGhlIHNhbWUgYXMKQEAg
LTExODMsOSArMTE4Myw5IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRDb21t
YW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiBFZGl0b3I6OkVkaXRvcihGcmFtZSYgZnJh
bWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9raWxsUmluZyhzdGQ6Om1ha2VfdW5p
cXVlPFBBTDo6S2lsbFJpbmc+KCkpCi0gICAgLCBtX3NwZWxsQ2hlY2tlcihzdGQ6Om1ha2VfdW5p
cXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQor
ICAgICwgbV9raWxsUmluZyhtYWtlVW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCisgICAgLCBtX3Nw
ZWxsQ2hlY2tlcihtYWtlVW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQorICAgICwgbV9hbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cj4oZnJhbWUpKQogICAgICwgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjpl
ZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVU
RUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fdGVsZXBob25lTnVtYmVy
RGV0ZWN0aW9uVXBkYXRlVGltZXIoKnRoaXMsICZFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxl
cGhvbmVOdW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAppbmRleCAwZGRjMTViZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3NjQ1
ZjU0Nzk0Li4yYzIwMjhjYzYzYzFiOTM4YmM2NmZmNGJlYTU4OTkyNThlOWE0YTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApA
QCAtMTYzMSw3ICsxNjMxLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6dXBkYXRl
Tm9kZXNJbnNlcnRlZChOb2RlICpub2RlKQogUmVwbGFjZW1lbnRGcmFnbWVudCogUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQoKQogewogICAgIGlmICgh
bV9yZXBsYWNlbWVudEZyYWdtZW50KQotICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5n
ZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOworICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQg
PSBtYWtlVW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQo
KSwgZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIHJldHVybiBtX3JlcGxhY2VtZW50RnJhZ21lbnQu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
UmVjdEdhdGhlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdh
dGhlcmVyLmNwcAppbmRleCAzYjQwNjg4Y2I0ZGE2NTZiMzQ0NTg3YzA4ODg2MzZjMGFiMTU2NmNm
Li5mOWI2NGM1YzhjODk2YmYzMjI2MzA4NzA5ZjI2YWE2NjdlMWVkOTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyPiBT
ZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kCiAgICAgbV9nYXBSZWN0cy5jbGVhcigpOwog
ICAgIG1faXNUZXh0T25seSA9IHRydWU7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxO
b3RpZmllcj4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5vdGlmaWVyPigqdGhpcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAppbmRleCAxODk2ZTFhMjI4MWMxYTliMDQ2ZThlZmFjZDkxMTlhZjVlMjc3ZDU2
Li5mMWQxOWMxMDExNGMxYTk4NWI4YjQyNmZhNjhmZGI4MTIyYTYwYzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC02NTAsNyArNjUwLDcgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24g
PSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2Vu
ZE9mZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3RoKCk7CiAgICAgICAgIGlmICghbV9mbG93UnVu
UmVzb2x2ZXJDYWNoZSB8fCAmbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZibG9j
a0Zsb3cpIHsKICAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93
ID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA/IDAgOiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0ZXh0
Tm9kZSk7Ci0gICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsK
KyAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBtYWtlVW5pcXVlPFNpbXBsZUxp
bmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQpOwogICAgICAgICB9CiAg
ICAgICAgIC8vIFNraXAgdG8gbV9vZmZzZXQgcG9zaXRpb24uCiAgICAgICAgIGF1dG8gcmFuZ2Ug
PSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAwYTgz
YWMwOTU5Mjc0YzA3ODBkNWQ3YjM4NWYwMTljMGU4NmUzYzc0Li45Y2Y4NmE0YTE1ZjFjN2M2ZjAy
ODE1NTY0N2FmYTAwNTlhZTNiNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCkBAIC0zODAsNyArMzgwLDcgQEAgSFRNTENvbnZlcnRlcjo6SFRN
TENvbnZlcnRlcihjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiAg
ICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9IGZhbHNlOwogICAgIF9mbGFncy5yZWFjaGVkRW5kID0g
ZmFsc2U7CiAgICAgCi0gICAgX2NhY2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTENvbnZlcnRl
ckNhY2hlcz4oKTsKKyAgICBfY2FjaGVzID0gbWFrZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVz
PigpOwogfQogCiBIVE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigpCkBAIC01NTEsNyArNTUx
LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0eWxl
UHJvcGVydHlGb3JFbGVtZW50KEVsZW1lbnQmIGUKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9jb21w
dXRlZFN0eWxlcy5hZGQoJmVsZW1lbnQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1lbnQsIHRydWUpOworICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxl
bWVudCwgdHJ1ZSk7CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciYgY29tcHV0ZWRTdHlsZSA9
ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBjb21wdXRlZFN0eWxlLnByb3Bl
cnR5VmFsdWUocHJvcGVydHlJZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4IDI1NzdkNWE3Njk2
ODE2MjJmNWQwYTdiNjNmZjRkMDlkODhjOTVkYzEuLjI5YzVhOGRhN2VlMzI1NTYxMjY1NjkwNTRl
MzAyMjI4YTUzMDE4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCkBAIC0zNyw2ICszNyw3IEBAIE9CSkNf
Q0xBU1MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcigpIHsgfQogICAgIC8vIFJldHVybnMgYSBj
b250ZXh0IElELgpAQCAtNTIsNiArNTMsNyBAQCBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIgewogICAgIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlcygpOwogCiAgICAgY2xhc3MgQWxl
cm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJv
bGxlcigpIHsgfQogICAgICAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0YWlu
UHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRl
eCBmYjQzNzE2MzAzYWUyNWI4MTkyOTJkMjcxY2EyY2FlNjg0YjljMDJlLi5jM2M4ZjhiMzI0YmZl
Y2RjZTllNWM0ZWIxOWI1Yjc0NjA4OTI4YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CkBAIC0xNzgsNyArMTc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JT
YW5pdGl6aW5nV2ViQ29udGVudCgpCiB7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBh
Z2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwogICAgIAotICAgIGF1dG8gcGFnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAg
IGF1dG8gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikp
OwogICAgIHBhZ2UtPnNldElzRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKICAgICBwYWdlLT5z
ZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5z
ZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmNwcAppbmRleCBhMDk1ZWVhZTliMmE3OTdiZGFiYWUzNDk0MGZkYzZhM2NlMzA0MjRi
Li5kNTgxMTJmZjliZGY2Y2Q3ZDE5ODU1MmQ4NjY5OTFmODViN2ExYzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC05NCwxMSArOTQsMTEgQEAgc3Rh
dGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQog
ICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1ZXVl
LmdldCgpLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0
aW9uKSkpOwogfQogCiBBc3luY0ZpbGVTdHJlYW06OkFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFt
Q2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2ludGVybmFscyhzdGQ6Om1ha2VfdW5pcXVlPEludGVy
bmFscz4oY2xpZW50KSkKKyAgICA6IG1faW50ZXJuYWxzKG1ha2VVbmlxdWU8SW50ZXJuYWxzPihj
bGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCA5YWQzZGE5ZWZmZjBmM2E3MDdhMDYwMWY3ODYwMWQ1
ZDg2ODI1OGY1Li45OWE3YjVjNmY5ODdhMTRiYTE5MDk0NTg5ODdhZTg0ZWNmYzRmMDgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiYgYmxvYiwgRmlsZVJl
YWRlckxvYWRlcjo6UmVhZFR5cAogICAgIG1fc3RhdGUgPSBMT0FESU5HOwogICAgIG1fZXJyb3Ig
PSBudWxscHRyOwogCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFkZXJM
b2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0
aGlzKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1fcmVh
ZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0aGlzKSk7CiAgICAg
bV9sb2FkZXItPnNldEVuY29kaW5nKG1fZW5jb2RpbmcpOwogICAgIG1fbG9hZGVyLT5zZXREYXRh
VHlwZShtX2Jsb2ItPnR5cGUoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Nh
Y2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmlu
ZGV4IDZhZTU1MmNiY2VmYmEzNWFmNTQ5NGFkODBhMTQ3MzFkMDBhY2EzZDEuLjVjOGYxOGUzZGFi
MGViMjU5N2FkNWU4MjIxMzliZDg4ZmYzMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkRnJhbWUuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1l
KEZyYW1lJiBmcmFtZSkKIAogICAgIC8vIENyZWF0ZSB0aGUgQ2FjaGVkRnJhbWVzIGZvciBhbGwg
RnJhbWVzIGluIHRoZSBGcmFtZVRyZWUuCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS50
cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJs
aW5nKCkpCi0gICAgICAgIG1fY2hpbGRGcmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2Fj
aGVkRnJhbWU+KCpjaGlsZCkpOworICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZChtYWtlVW5p
cXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9jdW1l
bnQtPmRvbVdpbmRvdygpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgp
KTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUmIGZy
YW1lKQogICAgIC8vIEFjdGl2ZSBET00gb2JqZWN0cyBtdXN0IGJlIHN1c3BlbmRlZCBiZWZvcmUg
d2UgY2FjaGUgdGhlIGZyYW1lIHNjcmlwdCBkYXRhLgogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmQo
UmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hlKTsKIAotICAgIG1fY2FjaGVkRnJhbWVTY3Jp
cHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRDYWNoZWRGcmFtZURhdGE+KGZyYW1lKTsK
KyAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IG1ha2VVbmlxdWU8U2NyaXB0Q2FjaGVkRnJh
bWVEYXRhPihmcmFtZSk7CiAKICAgICBtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+c3VzcGVuZEZv
clBhZ2VDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAppbmRleCAw
Njg2YWU4ZmVjZTQ0ZjFlZjY5MGU1ZjhmNmFiZTg0NjE0NjNkZjdkLi45NzQ3YTQwNDAxNmFjODY4
ZDJmNzc5NmU1MzMwNDM2ZmZhNTg3NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFn
ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVm
Q291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRQYWdlQ291bnRlciwgKCJDYWNoZWQKIENhY2hlZFBh
Z2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9l
eHBpcmF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSArIFNlY29uZHMocGFnZS5zZXR0aW5n
cygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWwoKSkpCi0gICAgLCBtX2NhY2hl
ZE1haW5GcmFtZShzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgp
KSkKKyAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2Uu
bWFpbkZyYW1lKCkpKQogewogI2lmbmRlZiBOREVCVUcKICAgICBjYWNoZWRQYWdlQ291bnRlci5p
bmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAwMDI5NjU1
ODkyZDE1NGNiNTA0M2UxZGEyMjgyNTg3OWY2M2VkZGU1Li4zYmEyNGI5ZGUyZTk5NDE5NmEwZGY5
MmZjMzY2M2NlZWE1YmY0Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBA
IC00NzgsNyArNDc4LDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJ
dGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgZmly
ZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUuCiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAotICAgICAgICBpdGVt
Lm1fY2FjaGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOworICAg
ICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOwog
ICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdSZWFzb246Ok5vbmU7CiAgICAg
ICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmNwcAppbmRleCA3YTk5MWYxN2IwM2Q4M2U5MDVmN2QzZTA2MDdiZjUyYTk5YjgwZTQ1Li5i
MTRkMzEwMTU4YjY0NWZlODY5OWY3Zjk5ZjQxODU4YmQ1NWFlMjhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIEZpbGVJbnB1dFR5
cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAgbV9m
aWxlSWNvbkxvYWRlci0+aW52YWxpZGF0ZSgpOwogCiAgICAgRmlsZUljb25Mb2FkZXJDbGllbnQm
IGNsaWVudCA9ICp0aGlzOwotICAgIG1fZmlsZUljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbGVJY29uTG9hZGVyPihjbGllbnQpOworICAgIG1fZmlsZUljb25Mb2FkZXIgPSBtYWtlVW5p
cXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOwogCiAgICAgY2hyb21lLT5sb2FkSWNvbkZvckZp
bGVzKHBhdGhzLCAqbV9maWxlSWNvbkxvYWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggODA2ZTVmM2RhZWJlMjk0ZTMzMDIzMGRm
YTVlZGU4YzkyZDU4YzMxOC4uMTdjMDI3Y2ZkZmExYmI0M2I2NDVlZTYyZDU4YzhhYzMyMDZkODc2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApA
QCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21W
YWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6
OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihhc0hUTUxFbGVtZW50KCkuaXNDb25uZWN0ZWQoKSk7Ci0gICAg
bV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7CisgICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0
T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1M
RWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhp
cyk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlVGFyZ2V0
Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IGVhNWIw
OWFhYTA4ZGIyNzM5NjFiOTUzNDIyZjAzZGQ3YWQ2ZTQ2NzEuLmQwZTAzZjU2Y2IwNjNlMjdmMTEz
NDBhMjcxM2Q0Zjk2MWI1YWU2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIu
Y3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNhdmVkRm9ybVN0YXRlPiBT
YXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmluZz4KICAgICBzaXpl
X3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5kZXgrK10udG9VSW50KCk7CiAgICAgaWYgKCFp
dGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gc2F2ZWRGb3JtU3Rh
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOworICAgIGF1dG8gc2F2ZWRG
b3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwogICAgIHdoaWxlIChpdGVt
Q291bnQtLSkgewogICAgICAgICBpZiAoaW5kZXggKyAxID49IHN0YXRlVmVjdG9yLnNpemUoKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY1LDEzICszNjUsMTMgQEAgc3RhdGlj
IFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogc3RkOjp1bmlxdWVfcHRyPEZvcm1Db250cm9s
bGVyOjpTYXZlZEZvcm1TdGF0ZU1hcD4gRm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0
YXRlTWFwKGNvbnN0IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQmIGNvbnRyb2xMaXN0KQogewogICAg
IEZvcm1LZXlHZW5lcmF0b3Iga2V5R2VuZXJhdG9yOwotICAgIGF1dG8gc3RhdGVNYXAgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOworICAgIGF1dG8gc3RhdGVNYXAgPSBt
YWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOwogICAgIGZvciAoYXV0byYgY29udHJvbCA6
IGNvbnRyb2xMaXN0KSB7CiAgICAgICAgIGlmICghY29udHJvbC0+c2hvdWxkU2F2ZUFuZFJlc3Rv
cmVGb3JtQ29udHJvbFN0YXRlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYXV0
byYgZm9ybVN0YXRlID0gc3RhdGVNYXAtPmFkZChrZXlHZW5lcmF0b3IuZm9ybUtleSgqY29udHJv
bCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGlmICghZm9ybVN0
YXRlKQotICAgICAgICAgICAgZm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1T
dGF0ZT4oKTsKKyAgICAgICAgICAgIGZvcm1TdGF0ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3Rh
dGU+KCk7CiAgICAgICAgIGZvcm1TdGF0ZS0+YXBwZW5kQ29udHJvbFN0YXRlKGNvbnRyb2wtPm5h
bWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9sLT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgpKTsK
ICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFwOwpAQCAtNDAzLDcgKzQwMyw3IEBAIEZvcm1Db250
cm9sU3RhdGUgRm9ybUNvbnRyb2xsZXI6OnRha2VTdGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0IEhU
TUxGb3JtQ29udHJvbEVsCiAgICAgaWYgKG1fc2F2ZWRGb3JtU3RhdGVNYXAuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwogICAgIGlmICghbV9mb3JtS2V5R2Vu
ZXJhdG9yKQotICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZv
cm1LZXlHZW5lcmF0b3I+KCk7CisgICAgICAgIG1fZm9ybUtleUdlbmVyYXRvciA9IG1ha2VVbmlx
dWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKICAgICBTYXZlZEZvcm1TdGF0ZU1hcDo6aXRlcmF0b3Ig
aXQgPSBtX3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQobV9mb3JtS2V5R2VuZXJhdG9yLT5mb3JtS2V5
KGNvbnRyb2wpLmltcGwoKSk7CiAgICAgaWYgKGl0ID09IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZW5k
KCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDEwNDdjNThlZWMzNTM2ZTNkMzk5M2E3YjZl
NTg2MjViMDE1OTUyZjEuLmViOWJkMDY4NWQ1OTJlYTY5MjMxM2FkNDE2YzI3ZDdmMjgyNjFmNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0zMTQsNyAr
MzE0LDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6aGFzUmVsKFJlbGF0aW9uIHJlbGF0aW9u
KSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIHsKLSAgICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQmPigqdGhp
cyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7
CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0
PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3Vt
ZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICAg
ICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAibm9yZWZlcnJlciIp
IHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJub29wZW5lciIpIHx8IGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UodG9rZW4sICJhciIpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcAppbmRleCBhYzA3NThkZTgzYjA0ODgyYTVkODkyMmZkNDA1NTQ4ZWY5
NTZkY2EyLi40OWFiZmE1ZjcwYTdhYjk3ZDczZTJjODJiNzY3YjA1MzUxYWRlZjg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQg
SFRNTEFyZWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkUmVnaW9uKCkKIGJvb2wgSFRNTEFyZWFF
bGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplLCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiB7CiAgICAgaWYgKG1fbGFzdFNpemUg
IT0gc2l6ZSkgewotICAgICAgICBtX3JlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4oZ2V0
UmVnaW9uKHNpemUpKTsKKyAgICAgICAgbV9yZWdpb24gPSBtYWtlVW5pcXVlPFBhdGg+KGdldFJl
Z2lvbihzaXplKSk7CiAgICAgICAgIG1fbGFzdFNpemUgPSBzaXplOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCBhOWJiNGZiOGUwNjNlNzAx
NWYxYTY0ZTdkODZmZWIzNThmZmMyN2NkLi44OTRlNjM5OGI4YTRlY2RkZWRmOWUxOTg4YTQxNGMx
NzFiMjg2OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApA
QCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVy
KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpIGNvCiAgICAgbV9pbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHRydWUpOwogICAgIG1f
aW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGRlZmF1
bHRJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNl
dFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAKICAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrKEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkp
OwogICAgIEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkuaGVhcC5y
ZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtZW1vcnlDb3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA5NzZjOGUwYTlhMDZhOWI4M2Q2Y2E5NDFiZDVkZDM3
YjlmMzM4NWM1Li4zMjgxNzZiNjllOGNkMWJmMjJkNGU3NjMyN2U5ZjI5Mjk2OGFiNDEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZv
aWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBp
ZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBj
YWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwor
ICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4o
KTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHAKaW5kZXggZjE1Nzg3NGU2ZDUzNGUzZjYxMzRlNGE1ZGY0ZjUxYmUyZjY3YTMxYS4u
NjBkZDFmYjI1MjAzODYwZDNkOTJhN2E1YWNiMzMxYzJhYjA0YjU5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtODgsNyArODgsNyBAQCBjb25zdCBB
dG9tU3RyaW5nJiBEZXRhaWxzU2xvdEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxkKGNv
bnN0IE5vZGUmIGNoaWxkKQogUmVmPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIGF1dG8gZGV0YWlscyA9IGFkb3B0UmVmKCpuZXcgSFRNTERldGFpbHNFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFk
b3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsc1Nsb3RBc3Np
Z25tZW50PigpKSk7CisgICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVh
dGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7CiAgICAg
cmV0dXJuIGRldGFpbHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ4ODkzYjFmMDk0OWVmMTAyZTI5ZDAzYzU4OTY3YzRkZDRm
M2ZkNWEuLmUxNTMxNmExOWVlZmI0NzdlM2YzNjdjODBmN2MzYzFhMmE2MzRiODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDgwLDcg
KzQ4MCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlKCkKICAgICBpZiAocmVuZGVyZXIoKSAmJiB3aWxsVmFsaWRhdGUoKSkKICAg
ICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAg
ICAgaWYgKCFtX3ZhbGlkYXRpb25NZXNzYWdlKQotICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdl
ID0gc3RkOjptYWtlX3VuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CisgICAgICAgIG1f
dmFsaWRhdGlvbk1lc3NhZ2UgPSBtYWtlVW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0aGlzKTsK
ICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT51cGRhdGVWYWxpZGF0aW9uTWVzc2FnZShtZXNzYWdl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcAppbmRleCA2ZWMyMmQ3NzQ5ZjJmNzhiZDMxZWY3N2VhNjM2MDczYjcxYzU5ZmYy
Li5hMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZlNjg5YzNiMWM2OGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMTE5
LDcgKzExOSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVk
RWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVj
dGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZ0lt
cGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAppbmRleCBjNzZkNDkzYTYyY2VkODMwODgwMWI2YjAxZDMzMjFlMGEzMzNmNTFkLi40
MzVkOTUxNGRkMjlkZGQxZjZkZmIxZDE2OWUzNDdlMzE1YTMwMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0ZW0qIGl0ZW0sIGNvbnN0IEF0
b21TdHJpbmcmIHAKICAgICBpZiAocGFzdE5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKCFtX3Bhc3ROYW1lc01hcCkKLSAgICAgICAgbV9wYXN0TmFtZXNNYXAgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKKyAgICAgICAgbV9wYXN0TmFtZXNNYXAgPSBt
YWtlVW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKICAgICBtX3Bhc3ROYW1lc01hcC0+c2V0KHBhc3RO
YW1lLmltcGwoKSwgaXRlbSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKaW5kZXggMDJkN2Q0ZTRmYmU4NmY1MjcwZjU4NGI2YThkZWI5YmU0NmY5N2FhOS4u
YjFjODIxZGQ5YmFiYTJhMjBjYjI5ZTFjMWNmZDkwZDcxZmVjNThiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxJ
RnJhbWVFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIEQKIERPTVRva2VuTGlzdCYgSFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3go
KQogewogICAgIGlmICghbV9zYW5kYm94KSB7Ci0gICAgICAgIG1fc2FuZGJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2FuZGJveEF0dHIsIFtdKERvY3VtZW50Jiwg
U3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3NhbmRib3ggPSBtYWtlVW5pcXVlPERPTVRv
a2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9r
ZW4pIHsKICAgICAgICAgICAgIHJldHVybiBTZWN1cml0eUNvbnRleHQ6OmlzU3VwcG9ydGVkU2Fu
ZGJveFBvbGljeSh0b2tlbik7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBjMjVjZGQ4MGQ1ZjhhNzcwYTFkOTcwMDU3ODQ3
YTg5YzU2ODNkYmQuLjM3NmM1MjE5NjRlMGY3MWI2ZmQ5YzIxNzJkNjIwMWMyOTI1N2ExYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKIHsKICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0g
ICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4o
KnRoaXMpOworICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2Fk
ZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKQEAgLTE2NDEsNyAr
MTY0MSw3IEBAIFJlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50Ojpk
YXRhTGlzdCgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgbV9s
aXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0
ciksIHRoaXMpOworICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1ha2VV
bmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CiAgICAgZWxzZQogICAgICAgICBtX2xpc3RBdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAKaW5kZXggYjg2MzRjYWRhZmExOGEwYTI3Y2NmNzI4ZjliYmY1NmNiN2Y3
OGQxNi4uZjZhN2JjODAyNGZmYTVlNGJkNzFmNjlhMjdjOTdjOGM5MzZiYjRlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIGJvb2wg
SFRNTExpbmtFbGVtZW50OjpzdHlsZVNoZWV0SXNMb2FkaW5nKCkgY29uc3QKIERPTVRva2VuTGlz
dCYgSFRNTExpbmtFbGVtZW50OjpzaXplcygpCiB7CiAgICAgaWYgKCFtX3NpemVzKQotICAgICAg
ICBtX3NpemVzID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXplc0F0
dHIpOworICAgICAgICBtX3NpemVzID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBz
aXplc0F0dHIpOwogICAgIHJldHVybiAqbV9zaXplczsKIH0KIApAQCAtNTIyLDcgKzUyMiw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5k
ZXIqIGV2ZW50U2VuZGVyKQogRE9NVG9rZW5MaXN0JiBIVE1MTGlua0VsZW1lbnQ6OnJlbExpc3Qo
KQogewogICAgIGlmICghbV9yZWxMaXN0KSAKLSAgICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3JlbExpc3QgPSBt
YWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9j
dW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAgICByZXR1cm4g
TGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQoZG9jdW1lbnQsIHRva2VuKTsKICAgICAgICAg
fSk7CiAgICAgcmV0dXJuICptX3JlbExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAppbmRleCBmNzQwY2NhYzI0MmU5ZTBmM2JjOGRkYzk1NzVmYjMyYTRlZjE5OGFm
Li5mM2FjZmNkZTAwMDdhMjRmMjc1YTRjOTU0ZDUyNTEyMDgzNzgyOTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBIVE1MTWVk
aWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxp
emF0aW9uKCkKIHsKLSAgICBtX21lZGlhU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFF
bGVtZW50U2Vzc2lvbj4oKnRoaXMpOworICAgIG1fbWVkaWFTZXNzaW9uID0gbWFrZVVuaXF1ZTxN
ZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CiAKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVo
YXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVG
b3JGdWxsc2NyZWVuKTsKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlv
bihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYSk7CkBA
IC0zMDI3LDcgKzMwMjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJh
bmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRpbQogCiAgICAgLy8gNSAt
IElmIHRoZSBzZWVrIHdhcyBpbiByZXNwb25zZSB0byBhIERPTSBtZXRob2QgY2FsbCBvciBzZXR0
aW5nIG9mIGFuIElETCBhdHRyaWJ1dGUsIHRoZW4gY29udGludWUKICAgICAvLyB0aGUgc2NyaXB0
LiBUaGUgcmVtYWluZGVyIG9mIHRoZXNlIHN0ZXBzIG11c3QgYmUgcnVuIGFzeW5jaHJvbm91c2x5
LgotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTZWVrPihub3cs
IHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CisgICAgbV9wZW5k
aW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRpdmVUb2xl
cmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICBpZiAoZnJvbURPTSkgewogICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1aW5nIHNlZWsgZnJvbSAiLCBub3csICIgdG8g
IiwgdGltZSk7CiAgICAgICAgIG1fc2Vla1Rhc2tRdWV1ZS5zY2hlZHVsZVRhc2soc3RkOjpiaW5k
KCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAppbmRleCBkMGJhYjlmYzlkNmVkYTFjMWJjMmE2MDk2ODNmMjc2ZmU3
NjAzY2Y4Li5mMjRlODc2YTEzYjYxNTU5ZTJjOTk1YmJhNGE1ZTQ1MjM0OTcwMDhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTkwLDYgKzk5MCw3IEBAIGNsYXNz
IEhUTUxNZWRpYUVsZW1lbnQKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAogICAg
IHN0cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29uc3QgTWVkaWFUaW1lJiBub3csIGNvbnN0IE1l
ZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRvbGVyYW5jZSwg
Y29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVyYW5jZSkKICAgICAgICAgICAgIDogbm93KG5v
dykKICAgICAgICAgICAgICwgdGFyZ2V0VGltZSh0YXJnZXRUaW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCBkZDRmYTJkNzBlNGY0M2Y0MmI4MjIyZDM3
ZDQ0MThmMWExMzFlZDg3Li41NmI3MjA2YWUzYmU4ZjEwYTg4MTRhZTlhZmFjNjJiZmViNTYwOWFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtMTMyLDcg
KzEzMiw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQogRE9NVG9rZW5MaXN0JiBIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcigp
CiB7CiAgICAgaWYgKCFtX3Rva2VucykKLSAgICAgICAgbV90b2tlbnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOworICAgICAgICBtX3Rva2VucyA9IG1h
a2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgZm9yQXR0cik7CiAgICAgcmV0dXJuICptX3Rv
a2VuczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAKaW5kZXggZGRhOTQ0OWQ1N2FkNDIwODU4NjI3ZGVkM2ZkZDkxODEzMjE1ZmUyYi4uNWI5
OWQ1NTU1MzA0OTcwOTNjNmJjYTk5NTg3YzdhMmY3MjU1OTA5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAg
dm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbigp
CiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgIXVzZUZhbGxiYWNrQ29udGVudCgpKSB7CiAgICAgICAg
IGlmIChpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0g
ICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdl
TG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlx
dWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgICAgICBpZiAobV9uZWVkc0ltYWdl
UmVsb2FkKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50
SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggMTBiYzA5ZmYwOTljODg4YjIyNjI2
OTM5MGI4ZTFmOGJlNGNlMzk2Ny4uYjA0OTM5YjljMmQ3MjcwMjEzNzljNWE0ZGQzNDA0N2Q4MTJh
ZDk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAt
NTMsNyArNTMsNyBAQCBjbGFzcyBTdW1tYXJ5U2xvdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU2xv
dEFzc2lnbm1lbnQgewogUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4gSFRNTFN1bW1hcnlFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQogewogICAgIFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IHN1bW1hcnkgPSBhZG9wdFJlZigqbmV3
IEhUTUxTdW1tYXJ5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIHN1bW1hcnktPmFk
ZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVl
PFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOworICAgIHN1bW1hcnktPmFkZFNoYWRvd1Jvb3QoU2hh
ZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlVW5pcXVlPFN1bW1hcnlTbG90RWxlbWVudD4o
KSkpOwogICAgIHJldHVybiBzdW1tYXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAppbmRleCBhNWU3NWFhZmY1MmRkZjlmNTc1NDViYTA2N2VlYzc4OTg4OGRk
OWFiLi42N2ZmMjEyNTJmMWI4ZTgzMTBhMWQ3Y2JiMjMyZWE4YzczOTM4YTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBI
VE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgIHVwZGF0ZURpc3BsYXlT
dGF0ZSgpOwogICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAgICBp
ZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1faW1hZ2VMb2Fk
ZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICBtX2ltYWdl
TG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXItPmltYWdlUmVzb3VyY2Uo
KS5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKQEAgLTEyNyw3ICsxMjcs
NyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogCiAgICAgICAgIGlmIChzaG91bGREaXNwbGF5
UG9zdGVySW1hZ2UoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAg
ICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRl
cj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhU
TUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRl
RnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCA3YmViYzdhMTBjY2JlZDUzY2Zl
OGNhZjhhMDdjNzhlNmM1NzlkNjRmLi5iNjY4ZGExZjMyMTRkYmY5YjkxNjFlZmE4MzI1NmM5NWNh
ODIxMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UHVibGlj
VVJMTWFuYWdlcj4gUHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKKyAgICBhdXRvIHB1YmxpY1VSTE1hbmFn
ZXIgPSBtYWtlVW5pcXVlPFB1YmxpY1VSTE1hbmFnZXI+KGNvbnRleHQpOwogICAgIHB1YmxpY1VS
TE1hbmFnZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2Vy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCA4YWY3
M2E4YTAwNTQ5ODBhZDE3OTA2OTU2YTg0MzJhNmY5Y2RiMTRiLi5mNWRhYjBmNDJmMmQwNTNlNzAz
YzZjNTcyM2NhMTYwMzcxZDFhMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Zh
bGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcApAQCAtMTE1LDkgKzExNSw5IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNl
dE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVCghbWVzc2FnZS5pc0Vt
cHR5KCkpOwogICAgIG1fbWVzc2FnZSA9IG1lc3NhZ2U7CiAgICAgaWYgKCFtX2J1YmJsZSkKLSAg
ICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlv
bk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVl
PFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOwogICAg
IGVsc2UKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAm
VmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKKyAgICAgICAg
bV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNl
dE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMF9z
KTsKIH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1l
c3NhZ2VET01BbmRTdGFydFRpbWVyKCkKICAgICBpZiAobWFnbmlmaWNhdGlvbiA8PSAwKQogICAg
ICAgICBtX3RpbWVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKLSAgICAgICAgbV90aW1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1
YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZW
YWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgICAgIG1fdGltZXItPnN0
YXJ0T25lU2hvdChzdGQ6Om1heCg1X3MsIDFfbXMgKiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fbWVz
c2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uKSk7CiAgICAgfQogfQpAQCAtMjM0LDcgKzIz
NCw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdlKCkKICAg
ICB9CiAKICAgICAvLyBXZSBtdXN0IG5vdCBtb2RpZnkgdGhlIERPTSB0cmVlIGluIHRoaXMgY29u
dGV4dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0TWVzc2FnZSgpLgotICAgIG1fdGltZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVC
dWJibGVUcmVlKTsKKyAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxp
ZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgbV90aW1lci0+c3RhcnRPbmVT
aG90KDBfcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggYjE2Nzc4NDQyOGMzYmZl
OWU2ZjE2YTc3ODQwZDNmM2JiOTcwNWI5Ni4uNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRj
Y2M1NmMwMjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3Ry
dWN0IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQgewogCiAgICAgRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVj
dCYgY2xpcCkKICAgICAgICAgOiBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlM
aXN0Q29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxh
eUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0ZSwg
Y2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBz
dGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgICAgICB9KQogICAgIHsKICAgICB9
CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRyYXdpbmdDb250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAoVU5MSUtFTFko
bV91c2VzRGlzcGxheUxpc3REcmF3aW5nKSkgewogICAgICAgICBpZiAoIW1fcmVjb3JkaW5nQ29u
dGV4dCkKLSAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOworICAgICAgICAg
ICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygp
LCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAgICAgIHJldHVybiAmbV9yZWNvcmRpbmdDb250
ZXh0LT5jb250ZXh0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2MzExOTE3NTcwZjJkYjI4NTk0
Y2JiMzQ5MDI0Njk5N2I1ODNmYmUwLi5jZDQ3MjEyNjFiMmUwMjJiNTUyNWRkM2QzY2E1NDY5Zjlj
MGIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTM1OSw3ICsxMzU5LDcgQEAgV2ViR0xFeHRlbnNpb24q
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUp
CiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFs
LCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1l
TGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZh
cmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51
bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVl
PHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBu
dWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXgg
ZTA2YmY5OWQ1OTE1OTYzOTgwYTYxMWMzMmE4MzllMjk3ZjEyODA0NS4uZTVmZGU3MDMzNzQ1NmEz
MWUxNTcxZWUxMGYzZmQyNjQyZGIwMzZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
V2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJs
ZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAgICAgICAgIGlmICghdmFyaWFibGUpIHsgXAot
ICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlw
ZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxl
KSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAogICAgICAgICAgICAgaWYg
KHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7IFwKICAgICAgICAgfSBc
CkBAIC0xMzIsNyArMTMyLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX2V4
dFNoYWRlclRleHR1cmVMT0QgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhU
X3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0
dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7Cisg
ICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbWFrZVVuaXF1ZTxFWFRTaGFk
ZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0xNTksNyArMTU5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAg
ICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZm
ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7CisgICAgICAg
ICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbWFrZVVuaXF1ZTxXZWJHTERyYXdCdWZmZXJz
PigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRF
bmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0xNzEsNyArMTcxLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX2FuZ2xl
SW5zdGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMiX3MpOwotICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRB
cnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7Cisg
ICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG1ha2VVbmlxdWU8QU5HTEVJ
bnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggM2VjZTdlZWI3NDJmYWRiNmZlMThiMzNl
YjVhNjEzOWNlZDQxYmE1Ni4uZDE2NmZiMjM5MDc2ZDM2MjY1ZDk2YzY0NWYwNzE4NzVhYzgyYmIz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc5OSw4ICs3OTksOCBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX2NvbnRleHQtPnZp
ZXdwb3J0KDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CiAg
ICAgbV9jb250ZXh0LT5zY2lzc29yKDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6
ZS5oZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2soc3Rk
OjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsK
LSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8
V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KHRoaXMpKTsKKyAgICBt
X2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRlcmlu
Z0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnNldEVycm9yTWVz
c2FnZUNhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdl
Q2FsbGJhY2s+KHRoaXMpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpz
ZXR1cEZsYWdzKCkKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQogICAgICAgICBSZWY8
SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0
ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpOwogCiAgICAgICAg
IGZvciAoYXV0byYgZXJyb3IgOiBnZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikuc3BsaXQoJ1xuJykp
Ci0gICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5k
ZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiAr
IGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkpOworICAgICAgICAgICAgY2FudmFzLT5kb2N1
bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsK
ICAgICB9CiB9CiAKQEAgLTU4MDgsOSArNTgwOCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
CiAgICAgLy8gRXJyb3IgbWVzc2FnZXMgY2FuIG9jY3VyIGR1cmluZyBmdW5jdGlvbiBjYWxscywg
c28gc2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZW0uCiAgICAgaWYgKGxldmVsID09IE1lc3NhZ2VM
ZXZlbDo6RXJyb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBz
dGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6
OmN1cnJlbnRTdGF0ZSgpKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywg
TWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOwor
ICAgICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwg
bWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnNv
bGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdl
KTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2
ZWwsIG1lc3NhZ2UpOwogCiAgICAgYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpOwogICAgIGlm
IChjYW52YXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVs
b2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nh
bm5lci5jcHAKaW5kZXggZTg1OTBjY2M2OTcyOGFmMzkzMDFkM2FlOGQ4OTg4ZjVjMTVhNGIyYS4u
YWVmZTQ1N2Y0ZWZmMDQzNjU3NjNjYjI2ZjcxNzg0NjNlMzJlMWQ3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjAxLDcgKzIw
MSw3IEBAIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAgICAgICAgaWYgKCF1
cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBVUkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJvbSB0aGUgSFRNTFByZWxvYWRTY2FubmVyIHZp
YSBzY2FuKCk6IHdpdGhvdXQgaXQgd2Ugd2lsbCBnZXQgcmVsYXRpdmUgVVJMcyB3cm9uZy4KICAg
ICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJzZXQg
aW4gdGhlIHByZWxvYWQgcmVxdWVzdD8KLSAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVudFVS
TCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQsIFN0cmluZygpLCBQcmVsb2Fk
UmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSk7
CisgICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQobWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVz
dD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NT
dHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJl
ZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwogICAgICAgICB9CiAgICAgICAgIG1fc3RhdGUg
PSBJbml0aWFsOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
cnVsZSwgImNoYXJzZXQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA1MWJhZTRjMjFjZjk0MGRjZDhjNmQzMjBiYzRk
YmQ2NjI2YmU3ZDlmLi45YWM0NDRlZjBhNjcxZjhhNDc2OTk1N2FlMzIyMmJkOGQxMDA3ZDk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNp
dGUuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rpb25EYXRhPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEUKICAgICBK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGVsZW1lbnRJbnRlcmZhY2UgPSBudWxscHRyOwogICAg
IFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21F
bGVtZW50SW50ZXJmYWNlKHRva2VuLCAmZWxlbWVudEludGVyZmFjZSk7CiAgICAgaWYgKFVOTElL
RUxZKGVsZW1lbnRJbnRlcmZhY2UpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
dXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4oKmVsZW1lbnRJbnRlcmZhY2UsIHRva2VuLm5h
bWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJmYWNlLCB0
b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygpKSk7CiAgICAgYXR0YWNoTGF0
ZXIoY3VycmVudE5vZGUoKSwgKmVsZW1lbnQpOwogICAgIG1fb3BlbkVsZW1lbnRzLnB1c2goSFRN
TFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSh0b2tl
bikpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDRmZjRlMmI4Nzg4YTkxOWJmNDJkMTdh
ZDlmZDY1MWI5YjAzYWQxOWIuLmRkOWVhMDRjNmY1MDBjODY0YjhjOTRjMTkzODM3ODc3YWZmZGU1
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3Vt
ZW50UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX29wdGlvbnMoZG9jdW1lbnQpCiAgICAgLCBtX3Rv
a2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5pcXVl
PEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVubmVy
SG9zdCY+KCp0aGlzKSkpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRN
TFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9v
cHRpb25zKSkKLSAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFBh
cnNlclNjaGVkdWxlcj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxI
VE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhv
c3QmPigqdGhpcykpKQorICAgICwgbV90cmVlQnVpbGRlcihtYWtlVW5pcXVlPEhUTUxUcmVlQnVp
bGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykp
CisgICAgLCBtX3BhcnNlclNjaGVkdWxlcihtYWtlVW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+
KCp0aGlzKSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGRvY3VtZW50KQotICAgICwgbV9w
cmVsb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+KGRvY3VtZW50
KSkKKyAgICAsIG1fcHJlbG9hZGVyKG1ha2VVbmlxdWU8SFRNTFJlc291cmNlUHJlbG9hZGVyPihk
b2N1bWVudCkpCiB7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIEhUTUxEb2N1bWVudFBh
cnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVt
ZW4KICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1bWVudCgpLCBy
YXdQb2xpY3kpCiAgICAgLCBtX29wdGlvbnMoZnJhZ21lbnQuZG9jdW1lbnQoKSkKICAgICAsIG1f
dG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1fdHJlZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1
ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNl
ckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVu
aXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBh
cnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVn
YXRlKGZyYWdtZW50LmRvY3VtZW50KCkpCiB7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1odG1sLWZyYWdtZW50cwpAQCAt
MzE1LDcgKzMxNSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5
bmNocm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKICAg
ICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLmlzSW5EYXRhU3RhdGUoKSk7CiAgICAgICAgIGlmICgh
bV9wcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9IHN0ZDo6
bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVy
bCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1fcHJl
bG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBk
b2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAg
ICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChtX2lucHV0LmN1cnJlbnQoKSk7
CiAgICAgICAgIH0KICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2NhbigqbV9wcmVsb2FkZXIs
ICpkb2N1bWVudCgpKTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNl
cjo6aW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmIHNvdXJjZSkKICAgICAgICAgLy8gQ2hlY2sgdGhl
IGRvY3VtZW50LndyaXRlKCkgb3V0cHV0IHdpdGggYSBzZXBhcmF0ZSBwcmVsb2FkIHNjYW5uZXIg
YXMKICAgICAgICAgLy8gdGhlIG1haW4gc2Nhbm5lciBjYW4ndCBkZWFsIHdpdGggaW5zZXJ0aW9u
cy4KICAgICAgICAgaWYgKCFtX2luc2VydGlvblByZWxvYWRTY2FubmVyKQotICAgICAgICAgICAg
bV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRT
Y2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBt
YWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwo
KSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIG1faW5zZXJ0aW9u
UHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKHNvdXJjZSk7CiAgICAgICAgIG1faW5zZXJ0aW9u
UHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRl
eCAzMGM1YjQ2ZGYxMDNkYmRmNmY0YjdjZTQwOWNjM2FhMTZjNTQ2MDEyLi42ZWYxNzEyYjlkNjNi
NzFhY2I3YzE2OWY2MmI0OWM4MmYzMTA1ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgSFRN
TEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUoUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSwgRWxl
bWVudFJlY29yZCYgcmVjCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICArK21fc3Rh
Y2tEZXB0aDsKLSAgICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxF
bGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkp
OworICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4dChtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+
KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSk7CiAgICAgICAgIHJl
Y29yZEFib3ZlLT5uZXh0KCktPmVsZW1lbnQoKS5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgSFRNTEVsZW1lbnRT
dGFjazo6cHVzaENvbW1vbihSZWY8SFRNTFN0YWNrSXRlbT4mJiBpdGVtKQogICAgIEFTU0VSVCht
X3Jvb3ROb2RlKTsKIAogICAgICsrbV9zdGFja0RlcHRoOwotICAgIG1fdG9wID0gc3RkOjptYWtl
X3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7Cisg
ICAgbV90b3AgPSBtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdURk1v
dmUobV90b3ApKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwb3BDb21tb24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5k
ZXggNTNhMTcyZDMzYWZjZGE4ZmY4OGQzNDRkOWMwZWYwOTAzY2RlY2M5Mi4uMzNkN2IzYmIwOGI2
NTJkMGNkNjliY2VkZjFmODYwNjMxYWZhYTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgY2xh
c3MgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyIHsKICAgICAgICAgaWYgKCFM
aW5rTG9hZGVyOjppc1N1cHBvcnRlZFR5cGUodHlwZS52YWx1ZSgpLCBtX3R5cGVBdHRyaWJ1dGUp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byByZXF1ZXN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBt
X3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwgdHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0cmli
dXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJlclBvbGljeSk7CisgICAgICAgIGF1dG8gcmVx
dWVzdCA9IG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwg
bV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJp
YnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOwogICAgICAgICByZXF1ZXN0
LT5zZXRDcm9zc09yaWdpbk1vZGUobV9jcm9zc09yaWdpbk1vZGUpOwogICAgICAgICByZXF1ZXN0
LT5zZXROb25jZShtX25vbmNlQXR0cmlidXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVG9rZW4uaAppbmRleCBmNzFiMjFkMjc4OTVlNTc4YWI0N2Y1Y2Y1NDAyNTgzZTM2MTIxZDAy
Li4zZjc0NmRjNmQ2NjdjNDM3MTFiNjhkMDliNDIwMmQyM2ZmMGMwODhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjA5LDcgKzIwOSw3IEBAIGlubGluZSB2b2lk
IEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IFVuaW5p
dGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IERPQ1RZUEU7Ci0gICAgbV9kb2N0eXBlRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8RG9jdHlwZURhdGE+KCk7CisgICAgbV9kb2N0eXBlRGF0YSA9IG1ha2VV
bmlxdWU8RG9jdHlwZURhdGE+KCk7CiB9CiAKIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5E
T0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHAKaW5kZXggYWM2ZTc5NDQzMDA3MDM2NDIxZWIxNmRmODNhOTBkM2QyNzcyZjg1Ni4u
MDYxZDk1NjdiNzg0ZDliMGJhY2YzZjZkYjljZGU1YTgwNmIwMWMxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8WFNTSW5mbz4gWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9r
ZW5SZXF1ZXN0JiByZXF1ZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJvb2wgZGlk
QmxvY2tFbnRpcmVQYWdlID0gbV94c3NQcm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25EaXNwb3Np
dGlvbjo6QmxvY2tFbmFibGVkOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFhTU0luZm8+
KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQcm90
ZWN0aW9uSGVhZGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50
VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRl
cik7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU3RhcnRUb2tlbihjb25zdCBGaWx0ZXJU
b2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC03MTIsNyArNzEyLDcgQEAgU3VmZml4VHJlZTxBU0NJ
SUNvZGVib29rPiogWFNTQXVkaXRvcjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSgpCiAgICAg
Y29uc3QgdW5zaWduZWQgc3VmZml4VHJlZURlcHRoID0gNTsKIAogICAgIGlmICghbV9kZWNvZGVk
SFRUUEJvZHlTdWZmaXhUcmVlICYmIG1fZGVjb2RlZEhUVFBCb2R5Lmxlbmd0aCgpID49IG1pbmlt
dW1MZW5ndGhGb3JTdWZmaXhUcmVlKQotICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRy
ZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2Rl
ZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOworICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1
ZmZpeFRyZWUgPSBtYWtlVW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2Rl
ZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwogICAgIHJldHVybiBtX2RlY29kZWRIVFRQQm9k
eVN1ZmZpeFRyZWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDNhNjM3ZGFlZjAxMjRl
MmU0ZWQzMzZiNjYzNzUyZDAwMjJiNWJlMDEuLmQ1NjZiY2M3OTRhYTcyNGFiZTYwYTA4MGEzZjJj
Zjk1MWY0NTM3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIFJlbmRlclRl
eHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZW5kZXJl
cigpIGNvbnN0CiBPcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVy
U3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIHN0eWxlID0gZG93bmNhc3Q8SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KCkpLmNyZWF0ZUlubmVyVGV4dFN0
eWxlKCpzaGFkb3dIb3N0U3R5bGUpOwotICAgIHJldHVybiBFbGVtZW50U3R5bGUoc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHlsZSkpKTsKKyAgICByZXR1cm4gRWxlbWVu
dFN0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CiB9CiAKIC8v
IE1BUks6IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCBlNDAyMDBh
OWE3YTIyNWRkZmQ4NzQ0ZDhjOTNiZGU2OTA5NjQ3MDA5Li40OTM0ZDcyOWMxOThkMDgwNTlhYzhj
OWYwYjE3NGE5NWU3NmY3MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3Vl
JiBjdWUpCiBXZWJWVFRQYXJzZXImIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNlcigpCiB7
CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50
Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fd2ViVlRUUGFy
c2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNs
aWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiAqbV93
ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCA4NTViYjIzOTI3ZWIxMGEzNWE1OWQxMmJlMGQy
MzVhNzNjYWJjMTBlLi4xMGZhYTEyZjkwYjQ2MGI1MDU2ZjI1NjdjYzJkOTgxMjdkOGZhYTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJh
Y2suY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluYmFuZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdl
YlZUVFRleHRUcmFjaygpID0gZGVmYXVsdDsKIFdlYlZUVFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4
dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1f
d2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0
PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwor
ICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNf
Y2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDhmMjljN2YxNjc5YTBmYTI5
MThkZWNmYTUxM2UyZDgwMjcxYTM1ZTIuLjdhMWUxYmM0NjkxYjIxMTY4OGMzY2Y1ZGE2MTlhYzYx
ZGJkNmZlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVU
ZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0
VHJhY2suY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRU
aW1lckZpcmVkKCkKICAgICAvLyA0LiBEb3dubG9hZDogSWYgVVJMIGlzIG5vdCB0aGUgZW1wdHkg
c3RyaW5nLCBwZXJmb3JtIGEgcG90ZW50aWFsbHkgQ09SUy1lbmFibGVkIGZldGNoIG9mIFVSTCwg
d2l0aCB0aGUKICAgICAvLyBtb2RlIGJlaW5nIHRoZSBzdGF0ZSBvZiB0aGUgbWVkaWEgZWxlbWVu
dCdzIGNyb3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmlidXRlLCB0aGUgb3JpZ2luIGJlaW5nIHRoZQog
ICAgIC8vIG9yaWdpbiBvZiB0aGUgbWVkaWEgZWxlbWVudCdzIERvY3VtZW50LCBhbmQgdGhlIGRl
ZmF1bHQgb3JpZ2luIGJlaGF2aW91ciBzZXQgdG8gZmFpbC4KLSAgICBtX2xvYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJD
bGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90
cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8VGV4
dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJDbGllbnQmPigqdGhpcyks
IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90cmFja0VsZW1lbnQtPmRv
Y3VtZW50KCkpKTsKICAgICBpZiAoIW1fbG9hZGVyLT5sb2FkKG1fdXJsLCAqbV90cmFja0VsZW1l
bnQpKQogICAgICAgICBtX3RyYWNrRWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKEhUTUxUcmFja0Vs
ZW1lbnQ6OkZhaWx1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElIb3N0LmNwcAppbmRleCAwMzEwODBlMWFiNjZkMzJjYzljMDcxNzhmMDJmOTM1MjNi
YzcwNmIwLi45MDI5YjkyZDhiODNmMmQ3YmVkNmQ4ZTU0NTc2YzBhMTY4Y2E1MjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtNjEs
NyArNjEsNyBAQCBSZWY8Q29tbWFuZExpbmVBUElIb3N0PiBDb21tYW5kTGluZUFQSUhvc3Q6OmNy
ZWF0ZSgpCiB9CiAKIENvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KCkKLSAg
ICA6IG1faW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+
KCkpCisgICAgOiBtX2luc3BlY3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0
PigpKQogewogfQogCkBAIC0xOTYsNyArMTk2LDcgQEAgSlNWYWx1ZSBDb21tYW5kTGluZUFQSUhv
c3Q6OndyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2IK
IHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKCkKIHsKICAgICBtX3dy
YXBwZXJzLmNsZWFyQWxsV3JhcHBlcnMoKTsKLSAgICBtX2luc3BlY3RlZE9iamVjdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCk7CisgICAgbV9pbnNwZWN0ZWRPYmplY3Qg
PSBtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCmluZGV4IDZjMzFlNDk4
ZTQzNGQzMDBiMGYxYzZlYWI4NDM0Njc3NmNmMGEyZmMuLjgzODkwOGRjOTM2ZWZhNmJhMjZjNzkx
NjcxNDRkYjdkZTllMmFlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIERPTUVkaXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9uIGZp
bmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gcGVyZm9ybSgpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5wYXJlbnRO
b2RlKCkpIHsKLSAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZSk7Cisg
ICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gbWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFj
dGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOwogICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX3JlbW92ZUNoaWxkQWN0aW9uLT5wZXJmb3JtKCk7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpOwpAQCAtMzg1LDI3ICszODUsMjcgQEAgRE9NRWRpdG9yOjp+RE9NRWRp
dG9yKCkgPSBkZWZhdWx0OwogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6Omluc2VydEJl
Zm9yZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiBub2RlLCBOb2RlKiBhbmNob3JOb2Rl
KQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2Vy
dEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOwor
ICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPEluc2VydEJlZm9yZUFjdGlv
bj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUsIE5vZGUm
IG5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0
b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwgbm9k
ZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldEF0dHJpYnV0ZShFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0QXR0cmli
dXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpOworICAgIHJldHVybiBtX2hpc3Rvcnku
cGVyZm9ybShtYWtlVW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwgdmFs
dWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxl
bWVudCwgbmFtZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJl
bW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0
bWwsIE5vZGUqJiBuZXdOb2RlKQogewotICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOworICAgIGF1dG8gYWN0aW9uID0gbWFr
ZVVuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOwogICAgIGF1dG8mIHJhd0Fj
dGlvbiA9ICphY3Rpb247CiAgICAgYXV0byByZXN1bHQgPSBtX2hpc3RvcnkucGVyZm9ybShXVEZN
b3ZlKGFjdGlvbikpOwogICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNDE1LDIy
ICs0MTUsMjIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9k
ZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYKIAogRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3Ry
aW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKQogewotICAgIHJldHVybiBtX2hpc3Rvcnku
cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlvbj4oZWxlbWVu
dCwgd2hlcmUsIGh0bWwpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1
ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7CiB9CiAK
IEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChUZXh0JiB0ZXh0
Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0
KSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVwbGFjZVdob2xl
VGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9N
RWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYgbmV3Tm9k
ZSwgTm9kZSYgb2xkTm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjpt
YWtlX3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5l
d05vZGUpLCBvbGROb2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlx
dWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdOb2RlKSwg
b2xkTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE5vZGVWYWx1
ZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBtX2hpc3Rv
cnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwgdmFs
dWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxTZXROb2RlVmFs
dWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CiB9CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRXJyb3JT
dHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQsIEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXgg
MjBkYTM0MzBjMTVjODU1MTQ4NWM1NzM4YzU0N2ZhMGMzNDMxYTFiYS4uMmU5ZDc1NTY1NWM4M2Vm
ODgxNTk2YWFkMjBjOTZlMTBlNjg4MjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBhZGRT
dHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVE
aWdlc3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNNYXAqIHVudXNlZE5vZGVzTWFwKQogewotICAg
IGF1dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWdlc3Q+KCk7CisgICAgYXV0byBkaWdl
c3QgPSBtYWtlVW5pcXVlPERpZ2VzdD4oKTsKICAgICBkaWdlc3QtPm5vZGUgPSAmbm9kZTsKICAg
ICBTSEExIHNoYTE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAppbmRleCA1MjAzNzA2YjUzYjMyYjBiYTRmMGVkNGQ0YmE0MDBiNmM3OWI1
ZTE1Li42M2ZmM2FiNjIzYTQ0NmNkNjIwZWU0N2UzOTIwNTVjZWE1MWE4NzZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC05Mywx
MCArOTMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ29udHJv
bGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGlu
c3BlY3RvckNsaWVudCkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5n
QWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1h
a2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVy
OjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCi0gICAgLCBtX292ZXJsYXkoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQor
ICAgICwgbV9vdmVybGF5KG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVj
dG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRl
KCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKHBhZ2UpCiAgICAgLCBtX3BhZ2UocGFnZSkK
QEAgLTEwNiw3ICsxMDYsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9s
bGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAgYXV0byBw
YWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7CisgICAg
YXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250
ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25z
b2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2Vu
dCkpOwogfQpAQCAtMTUzLDM3ICsxNTMsMzcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpj
cmVhdGVMYXp5QWdlbnRzKCkKICAgICBlbnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogICAgIGVuc3Vy
ZVBhZ2VBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCkpOwogCi0gICAgYXV0byBkZWJ1Z2dl
ckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQp
OworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+
KHBhZ2VDb250ZXh0KTsKICAgICBhdXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBkZWJ1Z2dlckFnZW50
LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKIAot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsKICAgICBlbnN1cmVE
T01BZ2VudCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4
dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250
ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4
dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOwogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOwog
I2VuZGlmCiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRv
IHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtlVW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldElu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7
CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ1BV
UHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUF1ZGl0QWdlbnQ+
KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VBdWRpdEFnZW50PihwYWdlQ29u
dGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNhbnZhc0Fn
ZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFu
ZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9z
dCgpKQogICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmNvcHlSZWYoKSk7CkBAIC00MjEsNyArNDIxLDcgQEAgSW5zcGVjdG9yQWdlbnQmIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5z
cGVjdG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRl
eHQoKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICAgICAgbV9pbnNw
ZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAgICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdlbnQpOwogICAgICAgICBt
X2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwpAQCAtNDMzLDcgKzQzMyw3
IEBAIEluc3BlY3RvckRPTUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01BZ2Vu
dCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckRPTUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFn
ZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gZG9tQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgbV9vdmVybGF5
LmdldCgpKTsKKyAgICAgICAgYXV0byBkb21BZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9N
QWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgICAgICBtX2luc3BlY3Rv
ckRPTUFnZW50ID0gZG9tQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZN
b3ZlKGRvbUFnZW50KSk7CiAgICAgfQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIEluc3BlY3RvclBhZ2VB
Z2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KCkKIHsKICAgICBpZiAo
IW1faW5zcGVjdG9yUGFnZUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdl
QWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gcGFnZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9v
dmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBwYWdlQWdlbnQgPSBtYWtlVW5pcXVlPEluc3Bl
Y3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1faW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXku
Z2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvclBhZ2VBZ2VudCA9IHBhZ2VBZ2VudC5nZXQoKTsK
ICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUocGFnZUFnZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmgKaW5kZXggMjhlZTcyN2EzNmQ2NmNlMjEwOTY5NzgzMWFlMGE4YWFjNDIzODU3NS4u
NmMxYjUxYWRlZTlhMzg0MjYzMzM4ZjQ1ZDg4ODRhNmQ5YzM3ZWE4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5o
CkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgOiBw
dWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNldHRpbmdzIHsKKyAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBTZXR0aW5n
cygpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+U2V0dGluZ3MoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKaW5kZXggMDBk
NWYxODUyY2ViYTI3MGMzYWY4MWMxMzIwOTAwNWRhN2IxMThhOC4uYzgxMDNkZDdkYmI4MzIwZWFi
MmU2YWQ1ZTMyYzJkNTJkNzJiMDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJ
bnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlvbikK
IAogdm9pZCBJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVTdGF0ZSgpCiB7Ci0gICAgcGVy
Zm9ybShzdGQ6Om1ha2VfdW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigpKTsKKyAgICBwZXJmb3Jt
KG1ha2VVbmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBJbnNwZWN0b3JIaXN0b3J5Ojp1bmRvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAxNDk1ZjM5ZTJhNDVlM2M3MmE5NjE0YWZm
NTc5ZTY0ZGRmNTVjMGI1Li5kYmU1NTUzZjAxMjE3MzRhOTY1OTEzODQ2YWFkNDZiZjI3Nzk3M2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VE
YXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291cmNlRGF0YUxpc3Q+IHNvdXJjZUQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVs
ZVNvdXJjZURhdGFMaXN0PigpOworICAgIG1fc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UnVsZVNv
dXJjZURhdGFMaXN0PigpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc29s
dXRpb24gdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBmbGF0IHNvdXJjZURhdGEgc3RydWN0dXJlCiAg
ICAgLy8gY29udGFpbmluZyBvbmx5IHN0eWxlIHJ1bGVzLCBldmVuIHRob3VnaCBDU1NQYXJzZXIg
bm93IHByb3ZpZGVzIHRoZSBmdWxsIHJ1bGUgc291cmNlIGRhdGEgdHJlZS4KQEAgLTEzMjAsNyAr
MTMyMCw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0YSgpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hl
ZXRDb250ZW50czo6Y3JlYXRlKCk7Ci0gICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIGF1dG8gcnVsZVNvdXJj
ZURhdGFSZXN1bHQgPSBtYWtlVW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKICAgICAKICAg
ICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQocGFyc2VyQ29udGV4dEZvckRvY3VtZW50KG1fcGFn
ZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSkpOwogICAgIFN0eWxlU2hlZXRIYW5kbGVyIGhh
bmRsZXIobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIG1fcGFnZVN0eWxlU2hlZXQtPm93bmVy
RG9jdW1lbnQoKSwgcnVsZVNvdXJjZURhdGFSZXN1bHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggZDNiNzU5ZjI5
Y2NmMWFlMTgwMjgwZDVlMTczNjcwZDI5YzRmOGNjMS4uZmQ3Y2FkMzA3NjdlNzc1YjE2NzVlYzQ1
NGVmN2EwOGJiMDM2ZDU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25z
dCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKIAot
ICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZURhdGE+KHJl
cXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxS
ZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0
VHlwZSh0eXBlKTsKICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0
SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVxdWVz
dElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJj
ZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gbWFr
ZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwogICAgIHJlc291cmNl
RGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoJmNhY2hlZFJlc291cmNlKTsKICAgICBtX3JlcXVlc3RJ
ZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggNDM1MWU4NzJhOWU1YTM2NDcyOWY1YjRmYjI2MjE2YzczMzAy
YzhkZC4uMzY0YWVhN2Q0YjVkOTExNzkzMjc1ZDY0NmYyOTVlNjdiZjBlZWVmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtlckds
b2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50
cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0
aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywg
V2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVy
KEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAgICAg
LCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQpAQCAtNjksNyArNjks
NyBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAogCiAgICAgYXV0byB3b3JrZXJDb250ZXh0ID0g
d29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3b3JrZXJDb250ZXh0KTsKKyAgICBhdXRvIGNv
bnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3b3JrZXJDb250ZXh0
KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xl
QWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkp
OwogfQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+cmVzZXQoKTsKICAg
ICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQoKTsKIAotICAgIG1fZm9yd2FyZGluZ0NoYW5u
ZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3Jr
ZXJHbG9iYWxTY29wZSk7CisgICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8V29y
a2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX2Zy
b250ZW5kUm91dGVyLT5jb25uZWN0RnJvbnRlbmQoKm1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0KCkp
OwogICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVuZFJv
dXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQpAQCAtMTY0LDE4ICsx
NjQsMTggQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRz
KCkKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgpOwogCi0g
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyUnVudGltZUFnZW50Pih3
b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyUnVu
dGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV93b3JrZXJHbG9iYWxTY29w
ZSkpIHsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdv
cmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgICAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtlckNv
bnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyTmV0d29y
a0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXZWJIZWFwQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50Pih3
b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29y
a2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtl
VW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBt
X2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJBdWRpdEFnZW50Pih3b3JrZXJDb250ZXh0
KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQSUhv
c3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYThkM2M4OTljMzI4MGEyOGU2NzMyY2Y4OGFiODRk
MDAwZDQ1ZWQyZC4uZmRmMDQ0YzU3OWIzNjhjMzIwNTFiNjVkYzQ0MGUzODdmNjAxOGZiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6
Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0
KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJBcHBsaWNhdGlvbkNhY2hlIl9zLCBjb250ZXh0
KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkFw
cGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
KQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmls
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQ
VVByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGNmOTRjYTgwOTZmZjU3MWQ3NGQ3NzNiMWYwMDI3NTA1
NGMwY2UxZjkuLjExNjI0ZTI0MDk0NjRmYzFlMWU2NWE2OTk4ZGJkMWIwNjgyZjBiMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmls
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDUFVQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9m
aWxlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIkNQVVByb2ZpbGVyIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
cjo6Q1BVUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0YjY5OTQ1ZWM3MDY3Zjk2NDNl
NDgwNzMwMzQ4NDI2ODZkNjE5ZmI4Li40NGU5YzVhYmViNGM5NjZhYmFlYTk0NGE0MGQ1ZTAzZDQ3
MmQxMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIENTU1N0eWxlUnVsZSogSW5z
cGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUmIHJ1bGUpCiAKIEluc3BlY3Rv
ckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNTUyJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBy
ZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0
U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRT
dHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkpOwogICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9y
RE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiB9CkBA
IC02NDYsNyArNjQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCkt
PnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0
eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBk
b21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9u
PihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CiAgICAgaWYgKHBlcmZv
cm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0
b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBK
U09OOjpPYgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZXJmb3JtUmVzdWx0
ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFJ1bGVT
ZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3Ip
KTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3Jt
KG1ha2VVbmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBj
b21wb3VuZElkLCBzZWxlY3RvcikpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JT
dHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47
CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBZGRSdWxl
QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CisgICAgYXV0byBhY3Rpb24g
PSBtYWtlVW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9y
KTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwogICAgIGF1dG8gcGVyZm9ybVJlc3Vs
dCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oV1RGTW92ZShhY3Rpb24pKTsKICAgICBp
ZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCA5
YmUwNjExOWZiMzIxOTcwMDcyOTcyMmQ4MzZhODE2YjI1ZjFjMDE1Li4wZTUwYzc1YmE0ODc1MTU1
NmU0MTJkY2I5N2FkMTk2Njk2NWE5OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNzEsNyArNzEs
NyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
SW5zcGVjdG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiQ2FudmFzIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpD
YW52YXNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNj
cmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdl
KQpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZENh
bnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kCiAgICAgaWYgKCFp
bnNwZWN0b3JDYW52YXMtPmN1cnJlbnRGcmFtZUhhc0RhdGEoKSkgewogICAgICAgICBpZiAoYXV0
byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y29udGV4dCgpLmNh
bnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8m
IHF1ZXVlID0gTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpOwotICAgICAgICAgICAg
cXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+
KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgWyYsIHByb3RlY3RlZEluc3BlY3RvckNh
bnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCldIHsKKyAgICAgICAgICAgIHF1ZXVlLmFw
cGVuZChtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihxdWV1ZSwgKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0
b3JDYW52YXMuY29weVJlZigpXSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZhc0Vs
ZW1lbnQgPSBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMtPmNhbnZhc0VsZW1lbnQoKSkgewogICAg
ICAgICAgICAgICAgICAgICBpZiAoY2FudmFzRWxlbWVudC0+aXNEZXNjZW5kYW50T2YoY2FudmFz
RWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCmluZGV4IDZjMTk2ZTBjYzY4MmI0NDI1NmM3ZGRhYWUwOTBhYTBhYWQ1NTMxN2QuLmYw
YTI4YzEzMzFjNWJiMzA4OGQ1M2U3MjQzZGJhZjRlZWI2M2U3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0y
ODMsNyArMjgzLDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKEV4
Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2Vu
dChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET00iX3MsIGNvbnRleHQpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
cjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAg
ICAgLCBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTMwMSw4ICszMDEsOCBAQCBJbnNwZWN0b3JET01B
Z2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7Ci0gICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7CisgICAgbV9oaXN0b3J5ID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3JIaXN0b3J5PigpOworICAgIG1fZG9tRWRpdG9yID0gbWFrZVVuaXF1ZTxET01F
ZGl0b3I+KCptX2hpc3RvcnkpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3Bl
Y3RvckRPTUFnZW50KHRoaXMpOwogICAgIG1fZG9jdW1lbnQgPSBtX2luc3BlY3RlZFBhZ2UubWFp
bkZyYW1lKCkuZG9jdW1lbnQoKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBpbnQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICAgICAg
Tm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUpOwogICAgICAgICBpZiAoIXBhcmVu
dCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWluZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4gcHVz
aCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBhdXRvIG5ld01hcCA9IHN0ZDo6bWFrZV91bmlx
dWU8Tm9kZVRvSWRNYXA+KCk7CisgICAgICAgICAgICBhdXRvIG5ld01hcCA9IG1ha2VVbmlxdWU8
Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5nZXQoKTsK
ICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNl
KCkpOwogICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CkBAIC0xMTc3LDcgKzExNzcsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0Q29uZmlnRnJvbUluc3BlY3RvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29u
ZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRD
b25maWc+KCk7CiAgICAgYm9vbCBzaG93SW5mbyA9IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxzZSAo
ZG8gbm90IHNob3cgYSB0b29sdGlwKS4KICAgICBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdl
dEJvb2xlYW4oInNob3dJbmZvIiwgc2hvd0luZm8pOwogICAgIGhpZ2hsaWdodENvbmZpZy0+c2hv
d0luZm8gPSBzaG93SW5mbzsKQEAgLTExOTYsMTMgKzExOTYsMTMgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Ym9vbCBlbmEKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0
cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBKU09OOjpP
YmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9v
bCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlx
dWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIGF1dG8g
cXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdo
dCkpOwogICAgIGlubmVySGlnaGxpZ2h0UXVhZChXVEZNb3ZlKHF1YWQpLCBjb2xvciwgb3V0bGlu
ZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJy
YXkmIHF1YWRBcnJheSwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAg
ICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKTsKKyAgICBhdXRvIHF1
YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNlUXVhZChxdWFkQXJy
YXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgUXVhZCBm
b3JtYXQiX3M7CiAgICAgICAgIHJldHVybjsKQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBKU09OOjpBcnJhCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0
UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBKU09OOjpPYmplY3Qq
IGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNl
UGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtl
X3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBt
YWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICBoaWdobGlnaHRDb25maWctPmNvbnRl
bnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRs
aW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+dXNl
UGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VDb29yZGluYXRl
cyA6IGZhbHNlOwpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGYK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewotICAg
ICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29u
ZmlnPigpOworICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxp
Z2h0Q29uZmlnPigpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gdHJ1ZTsg
Ly8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KICAgICAgICAgaGlnaGxpZ2h0Q29u
ZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgICAgIGhpZ2hsaWdodENvbmZp
Zy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CkBAIC0xMzk4LDcg
KzEzOTgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0ZWROb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAgICBtX2luc3BlY3RlZE5vZGUgPSBu
b2RlOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0PFdl
YkluamVjdGVkU2NyaXB0TWFuYWdlciY+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKS5jb21tYW5k
TGluZUFQSUhvc3QoKSkKLSAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRP
YmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKKyAgICAgICAg
Y29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNwZWN0
YWJsZU5vZGU+KG5vZGUpKTsKIAogICAgIG1fc3VwcHJlc3NFdmVudExpc3RlbmVyQ2hhbmdlZEV2
ZW50ID0gZmFsc2U7CiB9CkBAIC0yMzE0LDcgKzIzMTQsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzaykKLSAgICAgICAgbV9y
ZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2YWxpZGF0ZVN0eWxl
QXR0cmlidXRlVGFzaz4odGhpcyk7CisgICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sg
PSBtYWtlVW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KHRoaXMpOwogICAgIG1f
cmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnNjaGVkdWxlRm9yKCZlbGVtZW50KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGU5NzFhOTlmNzA1MjRkODMxODFhZTcxNWQ4MjY1ODgx
MWZlMDg4MDguLjgxZjE0ZGMxN2JmYTA0NzQ3ZTNkMjNlNDUzZjVlNGFmOGQwOWZkODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFz
ZSgiRE9NU3RvcmFnZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01T
dG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiMzdhNTYwY2U4MDc2OGM2NjQ0MDg1MTVmYjA1NTEy
NjE2NWJlZDgyLi4zNThhODU2NTEyZWE0ZDcxOTYzMzJhMjA2OTkwZGUzMjUwMDQxMGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAKIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEYXRhYmFzZSJfcywgY29udGV4dCkK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpE
YXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5j
cHAKaW5kZXggZTFlMDgyZTQxYWQyZDUyNGY1N2VmMTA2NDAyODg3NjExNTY4MjRiOS4uYjU5ODJj
ZWUzN2UzNzQ0NzA1Mzk0NmJjZjRjNDM0YjQzMWVmOWE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KFdlYkFnZW50Q29udGV4
dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTGF5ZXJUcmVlIl9zLCBjb250
ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TGF5ZXJU
cmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hlcjo6
Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcAppbmRleCAyOWM3NmQwYzdmZWE5MjJjMmEzZDk5NDE0Yzk4NmVhOGQyOGQ3N2I1Li4yODMy
OTUxZjUzODAxMjFmYTQ1MmJmYThkNDcwZjRkMzVlNzg5YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApA
QCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JN
ZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTWVtb3J5Il9zLCBjb250ZXh0KQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yOjpNZW1vcnlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDNlNGU5NmVi
MjMxYTA1NGIyMTIxMjQ3YmMyY2IwOTE2NWYwMjY1YjMuLjVkMDgxNjM4MGNkYzY2YzdkNzk2MGMx
MmQzNDhhMGZiZjNmN2IxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE3MiwxMCArMTcyLDEw
IEBAIGNsYXNzIEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAKIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6SW5zcGVj
dG9yTmV0d29ya0FnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rv
ckFnZW50QmFzZSgiTmV0d29yayJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpOZXR3
b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQotICAgICwgbV9yZXNvdXJjZXNEYXRhKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1Jlc291cmNlc0RhdGE+KCkpCisgICAgLCBtX3Jlc291cmNlc0RhdGEobWFrZVVuaXF1ZTxOZXR3
b3JrUmVzb3VyY2VzRGF0YT4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDMyOWUxYjBjNWFk
OTJmYjQ1MWRmMTc2NzMzYWUyYWUzNThmYjQ5MzcuLmM2NDFhNmEwNDg0MTkzMjY4ZTI5ZTkwZmYw
MTI2YWI5MTFjOTMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBEb2N1bWVu
dExvYWRlciogSW5zcGVjdG9yUGFnZUFnZW50Ojphc3NlcnREb2N1bWVudExvYWRlcihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbgogCiBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2Vu
dChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5z
cGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiUGFnZSJf
cywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpQYWdl
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShj
b250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAppbmRleCAzYTM2MWU5MWU2ZjJkZWIwMDQyZTE4YTdjNjRjN2I1MTZmOWI4MGM1Li4z
MGQ4NmM3NDYzYzQ3ZjViM2FkMmIzOGNmNWRlMjQ5ZDQ0ZWI5YTVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIENGUnVuTG9vcFJlZiBjdXJyZW50UnVuTG9v
cCgpCiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQoUGFn
ZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGltZWxp
bmUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBt
X2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpAQCAtMTkzLDcgKzE5Myw3
IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQq
IG1heENhbGxTdGFja0RlcHRoKQogICAgIC8vIEZJWE1FOiBBYnN0cmFjdCBhd2F5IHBsYXRmb3Jt
LXNwZWNpZmljIGNvZGUgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQyNzQ4IGlzIGZpeGVkLgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9mcmFtZVN0
YXJ0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nh
c3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNw
ZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgeworICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0g
bWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BP
YnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdpbiksIFt0
aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0
RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yMDIs
NyArMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNv
bnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgICAgIG1fcnVuTG9vcE5lc3RpbmdMZXZl
bCsrOwogICAgIH0pOwogCi0gICAgbV9mcmFtZVN0b3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6
OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lRW5kKSwgW3RoaXNdKCkgewor
ICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3Rh
dGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJz
OjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNraW5n
IHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcKICAgICAgICAgICAgICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXph
dGlvbj8KICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5
KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0cmluZygiUHJv
ZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAgICAgICAgICAg
ICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9m
aWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzE2LDcgKzMxNiw3IEBAIHZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/
CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIk5vIHByb2ZpbGVz
IGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgZG9lcyBub3Qg
ZXhpc3QiKTsKLSAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6
bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsK
KyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9m
aWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAKaW5kZXggOTE2MWQ4NDNjZDM4ZTRkOTY2MTI2YWNkZDM2ZTgzZGQxOGY1MTAw
Mi4uMWUzOThlZGQxYTllYTNlZjI2YmUwOWVjMDNkNmM2YzJjZDM5OGRlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5z
cGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KFBhZ2VBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIldvcmtlciJfcywgY29udGV4dCkK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpX
b3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZShjb250ZXh0Lmluc3BlY3Rl
ZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dl
YkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNv
bnNvbGVBZ2VudC5jcHAKaW5kZXggMmVlZDFjZTYwYjMwMjJhZDk4MjRmYTYyOGEzNWRkYzU0NDQ5
NjBkOS4uYzIwOTRiOTkyZDM1NDE2MGYxN2VlMjhmNjQxMGE3OTNkY2RlOWYzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcApA
QCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0CiAKICAgICBpZiAocmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQg
d2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAiICgiLCByZXNw
b25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xl
KHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmss
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNl
LnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOworICAg
ICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0
SWRlbnRpZmllcikpOwogICAgIH0KIH0KIApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYkNvbnNv
bGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3QgUmVzbwogICAgICAgICBtZXNzYWdlLmFwcGVuZChlcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpKTsKICAgICB9CiAKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpM
b2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFpbGlu
Z1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0
d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0
cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlm
aWVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAppbmRleCBiYjVkMWJlYzZjNjMyMjM5
YmVlNjQ2MzQzN2FlZmVkMTJiYTQ3MWQ1Li4wOWNiNmY0NjY2YWI0YzkxY2JlZTJkMGZjZmRkNGJh
NmE2MWExMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dl
YkhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJI
ZWFwQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBHYXJiYWdlQ29sbGVjdGlvbkRh
dGEgewogfTsKIAogY2xhc3MgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2VuZEdhcmJhZ2VDb2xsZWN0
aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmKTsKICAgICB2b2lkIGFkZEdhcmJhZ2VDb2xsZWN0
aW9uKEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSYmKTsKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBTZW5k
R2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrOjp0aW1lckZpcmVkKCkKIFdlYkhlYXBBZ2VudDo6
V2ViSGVhcEFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rvckhl
YXBBZ2VudChjb250ZXh0KQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5z
dHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFz
ayhzdGQ6Om1ha2VfdW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlz
KSkKKyAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhtYWtlVW5pcXVlPFNl
bmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdl
bnQuY3BwCmluZGV4IDVlYWZiNmEzMjg0NmU3MDAxNTNhYzgyNjgxYjdiZTUwZDNhZmU0OGMuLjg5
ODViYzk0NWZlNzVlMGU4NTFhMzZkZTM1ODRhYjA0NzFjMGZkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogUGFnZVJ1
bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6
UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcykpCiAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYjIwY2JiYzk1MDcwMjgxMWI2NTg5YWMx
ZGZiZDU3MzM5MTkzZDMzNy4uODA4MmVlMzFlZWM2MGEyZjYwMzI5ZGJhYmQ0ZDk4NDJmNmE1NWZm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgV29ya2Vy
RGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQg
V29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhFeGVjU3RhdGUmIHN0YXRl
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRD
b25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNy
ZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CisgICAgbV93b3JrZXJHbG9iYWxTY29wZS5h
ZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0
ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CiB9CiAKIEluamVjdGVkU2NyaXB0IFdvcmtlckRl
YnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRTdGF0ZS5jcHAKaW5kZXggYmQ5ZDRjYWRlZmIyZmFhMWYyZTBiMjU3OTU1YWQ1MTI0ZTE3OTRl
ZS4uMWYzZmFiYTMxMjZmMmU5YjM2Yjg0ZDEzZTczYmYxZmRhMzE3NTQyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgTGF5b3V0U3Rh
dGU6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBCb3gmIGxheW91dFJvb3Qp
CiBEaXNwbGF5OjpCb3gmIExheW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0
IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIHJldHVybiAqbV9sYXlvdXRUb0Rpc3BsYXlC
b3guZW5zdXJlKCZsYXlvdXRCb3gsIFsmbGF5b3V0Qm94XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERpc3BsYXk6OkJveD4obGF5b3V0Qm94LnN0eWxlKCkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+KGxheW91dEJveC5zdHlsZSgpKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTE0MCwxMyArMTQwLDEzIEBAIEZvcm1hdHRpbmdT
dGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290
SWZOZWVkZWQoY29uCiAgICAgICAgICAgICAvLyBzaG91bGQgbm90IGludGVyZmVyZSB3aXRoIHRo
ZSBjb250ZW50IGluc2lkZS4KICAgICAgICAgICAgIC8vIDxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0
Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzogaGlkZGVuIj4gPC0gaXMgYSBub24taW50cnVz
aXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gdHJpZ2dlcnMgbmV3IGJsb2NrIGZv
cm1hdHRpbmcgY29udGV4dC48L2Rpdj4KICAgICAgICAgICAgIGlmIChmb3JtYXR0aW5nUm9vdC5l
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6
OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpj
cmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogCiAgICAgICAgICAgICAvLyBP
dGhlcndpc2UsIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgaW5oZXJpdHMgdGhlIGZsb2F0cyBmcm9t
IHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0LgogICAgICAgICAgICAgLy8gRmluZCB0aGUg
Zm9ybWF0dGluZyBzdGF0ZSBpbiB3aGljaCB0aGlzIGZvcm1hdHRpbmcgcm9vdCBsaXZlcywgbm90
IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQgdXNlIGl0cyBmbG9hdGluZyBzdGF0ZS4KICAgICAgICAg
ICAgIGF1dG8mIHBhcmVudEZvcm1hdHRpbmdTdGF0ZSA9IGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZv
ckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ1Jvb3QuZm9ybWF0dGluZ0NvbnRleHRS
b290KCkpOyAKICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZsb2F0aW5nU3RhdGUgPSBwYXJlbnRG
b3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRlLCAq
dGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0
U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29u
CiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jv
b3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIEJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBhbHdh
eXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUuCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3Jl
YXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRo
aXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0
ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAg
ICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwg
WyZdIHsKIAogICAgICAgICAgICAgLy8gVGFibGUgZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBl
c3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZSAtYW5kIGl0IHN0YXlzIGVtcHR5LgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZs
b2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdT
dGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTc0LDE4ICsxNzQsMTggQEAgc3RkOjp1bmlx
dWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ0Nv
bnRleHQoY29uc3QgQm8KICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlz
aGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5l
c3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0byYgaW5s
aW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihjcmVh
dGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250
ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9y
bWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAg
IGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hl
c0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpOwogICAgICAgICBhdXRvJiBibG9ja0Zvcm1h
dHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0
aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkp
OwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRl
eHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdHRp
bmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAg
ICAgICBhdXRvJiB0YWJsZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PFRhYmxlRm9ybWF0dGlu
Z1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZv
cm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
YWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9ybWF0
dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nQ29u
dGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAg
fQogCiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheVJ1bi5oCmluZGV4IDdhZTNiNDA5ZDc2MTE2ZjJlOWQxM2NjMzFlYjZlNTYwNjNiMTA3
NmYuLjc5OTE2Mjc1NzQwMTgzZjM1M2Y1YWZkNWIxNTIyZTU2NTNmYzg5NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaApAQCAtMzYsNyArMzYs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheSB7CiAKIHN0cnVjdCBS
dW4geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdHJ1Y3QgVGV4
dENvbnRleHQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgogICAgICAgICBUZXh0Q29udGV4dCh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQg
bGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGExY2Q2
ZDZmMWI3ZWI5MGZjYzc5MDVlMzFlOWYwNGZlM2JmODI2MGIuLjUwOGQ2NjEyOWQxNDg3YzRlODQ0
MDkzOTNkYTMzNDA5MTllYTdmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xs
ZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIXRyZWF0QXNJbmxpbmVD
b250YWluZXIobGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4gPHNwYW4+
KS4KLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91
bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJT
dGFydCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVu
aXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0
YXJ0KSk7CiAgICAgICAgICAgICBhdXRvJiBjb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+
KGxheW91dEJveCk7CiAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5oYXNJbkZsb3dPckZsb2F0
aW5nQ2hpbGQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5MiwxNyArMjkyLDE3IEBA
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50KCkgY29u
c3QKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFzdCgp
OwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZW5kIG9mIGFuIGlubGluZSBjb250YWluZXIg
KGUuZy4gPC9zcGFuPikuCiAgICAgICAgICAgICBpZiAodHJlYXRBc0lubGluZUNvbnRhaW5lcihs
YXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVt
KHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBl
OjpDb250YWluZXJFbmQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5s
aW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlw
ZTo6Q29udGFpbmVyRW5kKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5l
QnJlYWtCb3goKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRl
bShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlw
ZTo6SGFyZExpbmVCcmVhaykpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJ
bmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpU
eXBlOjpIYXJkTGluZUJyZWFrKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNG
bG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
SW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5l
SXRlbTo6VHlwZTo6RmxvYXQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
SW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6
VHlwZTo6RmxvYXQpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VS
VChsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgpKTsKICAgICAgICAgICAgICAgICBpZiAobGF5
b3V0Qm94Lmhhc1RleHRDb250ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIElubGluZVRleHRJ
dGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0ZW1z
KCksIGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0
ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CisgICAgICAgICAgICAgICAg
ICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4o
bGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpCb3gpKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5nID0gbGF5b3V0Qm94Lm5leHRJbkZsb3dPckZs
b2F0aW5nU2libGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHRMaW5lTGF5b3V0LmNwcAppbmRleCBmNzQxZGU0ODllOTQyNDYxZDc2OTJlMmU0MDQxNTkzODNi
MGM4MTYwLi4wYTIxMzAyMTNmMTI0ZWViNWY3ZjcxMTJlODg2ZDcxMmM1MzFkYTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKQEAgLTM5
Niw3ICszOTYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6
OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgZGlzcGxh
eUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7CiAgICAgICAgICAgICBkaXNw
bGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChsb2dpY2FsUmVjdC53aWR0aCgpKTsKICAgICAgICAg
ICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChsb2dpY2FsUmVjdC5oZWlnaHQoKSk7
Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlx
dWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlS
dW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgICAgIHRvcExlZnQgKz0gR2VvbWV0
cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRTdGF0ZSgpLCBsYXlvdXRC
b3gpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KHRvcExlZnQpOwogICAgICAg
ICAgICAgbGluZUJveFJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkp
OwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5p
cXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdT
dGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDIsNyArNDQyLDcgQEAg
dm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5
UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNSdW5DYW5C
ZUV4dGVuZGVkID0gcHJldmlvdXNMaW5lUnVuICYmIHByZXZpb3VzTGluZVJ1bi0+dGV4dENvbnRl
eHQoKSA/IHByZXZpb3VzTGluZVJ1bi0+dGV4dENvbnRleHQoKS0+Y2FuQmVFeHRlbmRlZCA6IGZh
bHNlOwogICAgICAgICAgICAgYXV0byByZXF1aXJlc05ld1J1biA9ICFpbmRleCB8fCAhcHJldmlv
dXNSdW5DYW5CZUV4dGVuZGVkIHx8ICZsYXlvdXRCb3ggIT0gJnByZXZpb3VzTGluZVJ1bi0+bGF5
b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAocmVxdWlyZXNOZXdSdW4pCi0gICAgICAgICAgICAg
ICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6
OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29udGV4
dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5ndGggfSkpOworICAgICAgICAgICAgICAgIGZvcm1h
dHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxS
ZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0
Q29udGV4dC0+bGVuZ3RoIH0pKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
IGF1dG8mIGxhc3REaXNwbGF5UnVuID0gZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5sYXN0
KCk7CiAgICAgICAgICAgICAgICAgbGFzdERpc3BsYXlSdW4tPmV4cGFuZEhvcml6b250YWxseShs
b2dpY2FsUmVjdC53aWR0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRleCBiMDAxM2I2ZWQ1NjNiY2JmODI4MTM5MTM0
MWYyZGQ1NjE1ZWM1M2VmLi43OTA2MTk2ODFlNjc1MmQyODcyNDkzODYyMmUzYTc0YmUwMzNmZjM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lSXRlbS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVtIDogcHVibGljIENhbk1ha2VXZWFrUHRyPElu
bGluZUl0ZW0+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBIYXJkTGluZUJyZWFrLCBCb3gsIEZsb2F0LCBDb250YWlu
ZXJTdGFydCwgQ29udGFpbmVyRW5kIH07CiAgICAgSW5saW5lSXRlbShjb25zdCBCb3gmIGxheW91
dEJveCwgVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDRmMjBhNmZmMWQ3MGNlMzQ5YmRlMGViZWRmZThm
ODBhMzVlODVhMjguLmVkNjUyMDViN2RiOTliMGY2YWIxMGYzZWVlYWEwN2M0NDZiN2Y4ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIExpbmU6OkNvbnRlbnQ6OlJ1bjo6UnVuKGNvbnN0
IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFRleHRDb250ZXh0JiB0ZXh0Q29uCiAKIExp
bmU6OkxpbmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBJbml0aWFsQ29u
c3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywgU2tpcFZlcnRpY2FsQWxpZ21lbnQgc2tpcFZl
cnRpY2FsQWxpZ21lbnQpCiAgICAgOiBtX2xheW91dFN0YXRlKGxheW91dFN0YXRlKQotICAgICwg
bV9jb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8TGluZTo6Q29udGVudD4oKSkKKyAgICAsIG1fY29u
dGVudChtYWtlVW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkpCiAgICAgLCBtX2xvZ2ljYWxUb3BMZWZ0
KGluaXRpYWxDb25zdHJhaW50cy5sb2dpY2FsVG9wTGVmdCkKICAgICAsIG1fYmFzZWxpbmUoeyBp
bml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQsIGluaXRp
YWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5oZWlnaHQgLSBpbml0aWFsQ29uc3RyYWlu
dHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQgfSkKICAgICAsIG1faW5pdGlhbFN0
cnV0KGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5zdHJ1dCkKQEAgLTIxMyw3
ICsyMTMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
LCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIAogdm9pZCBMaW5lOjphcHBlbmROb25CcmVha2Fi
bGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0
JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9j
b250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVt
LCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsUmVj
dC53aWR0aCgpOwogfQogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0
Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dp
Y2EKICAgICB9CiAKICAgICBhdXRvIHRleHRDb250ZXh0ID0gQ29udGVudDo6UnVuOjpUZXh0Q29u
dGV4dCB7IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5saW5lSXRlbS5pc0NvbGxhcHNlZCgpID8gMSA6
IGlubGluZUl0ZW0ubGVuZ3RoKCksIGlzQ29tcGxldGVseUNvbGxhcHNlZCwgaW5saW5lSXRlbS5p
c1doaXRlc3BhY2UoKSwgY2FuQmVFeHRlbmRlZCB9OwotICAgIGF1dG8gbGluZUl0ZW0gPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgdGV4dENvbnRleHQsIGxvZ2lj
YWxSZWN0KTsKKyAgICBhdXRvIGxpbmVJdGVtID0gbWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlu
bGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2FsUmVjdCk7CiAgICAgaWYgKGlzVHJpbW1hYmxl
ICYmICFpc0NvbXBsZXRlbHlDb2xsYXBzZWQpCiAgICAgICAgIG1fdHJpbW1hYmxlQ29udGVudC5h
ZGQobGluZUl0ZW0uZ2V0KCkpOwogCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBMaW5lOjphcHBl
bmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlv
dXRVbml0IGwKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGlubGluZUl0ZW1Db250ZW50
SGVpZ2h0KGlubGluZUl0ZW0pKTsKICAgICB9CiAKLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0
KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVu
PihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCAr
PSAobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250YWxNYXJn
aW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuY2xlYXIoKTsKIH0KQEAgLTMyMyw3ICsz
MjMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYg
aW5saW5lSXRlbSkKICAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGluZUl0
ZW0sIHsgfSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KCkp
OwogICAgIH0KLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5y
dW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2Fs
UmVjdCkpOwogfQogCiB2b2lkIExpbmU6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IHJ1bkhlaWdodCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaAppbmRl
eCBmYWYwNTQ3NTNkMzcyMmFiYzAxZDhhNzNmNDc5OTM0OWJjYjFhYTExLi43MzdhMDdiMDMyYWY2
ZmYxMTk5MDk2ZjdhMzc1NzU3ZTZkYTlmMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCkBAIC01Miw4ICs1MiwxMCBAQCBj
bGFzcyBMaW5lIHsKICAgICBMaW5lKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgSW5pdGlhbENv
bnN0cmFpbnRzJiwgU2tpcFZlcnRpY2FsQWxpZ21lbnQpOwogCiAgICAgY2xhc3MgQ29udGVudCB7
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
c3RydWN0IFJ1biB7CisgICAgICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgICAgICBzdHJ1Y3QgVGV4dENvbnRleHQgewogICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcAppbmRleCBmMTMwODlhNzA4ZjNmZTNmZjliNzdmNzIwOTZjZGE0MmVm
MzZlMjIyLi41ZTZjMjU2ZGIwYjMwOWFhZjFlMjU4MjFmMGUxZTE4ZTU2NDUyZjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRl
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
VGV4dEl0ZW0uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0
ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QKIHsK
ICAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRlbnQoKTsKICAgICBpZiAoIXRleHQu
bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkpOwor
ICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0
SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIGF1dG8mIHN0eWxl
ID0gaW5saW5lQm94LnN0eWxlKCk7CiAgICAgYXV0byBwcmVzZXJ2ZU5ld2xpbmUgPSBzdHlsZS5w
cmVzZXJ2ZU5ld2xpbmUoKTsKQEAgLTk5LDIwICs5OSwyMCBAQCB2b2lkIElubGluZVRleHRJdGVt
OjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNv
bnN0CiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlvbiA8IHRleHQubGVuZ3RoKCkpIHsKICAgICAg
ICAgLy8gU29mdCBsaW5lYnJlYWs/CiAgICAgICAgIGlmIChpc1NvZnRMaW5lQnJlYWsodGV4dFtj
dXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7Ci0gICAgICAgICAgICBpbmxpbmVD
b250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gs
IGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgICAgIGlubGluZUNv
bnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVu
dFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOwogICAgICAgICAgICAgKytjdXJyZW50UG9zaXRp
b247CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNXaGl0
ZXNwYWNlQ2hhcmFjdGVyKHRleHRbY3VycmVudFBvc2l0aW9uXSwgcHJlc2VydmVOZXdsaW5lKSkg
ewogICAgICAgICAgICAgYXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0
aW9uKHRleHQsIGN1cnJlbnRQb3NpdGlvbiwgcHJlc2VydmVOZXdsaW5lKTsKICAgICAgICAgICAg
IGF1dG8gaXNDb2xsYXBzZWQgPSBjb2xsYXBzZVdoaXRlU3BhY2UgJiYgbGVuZ3RoID4gMTsKLSAg
ICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4
dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFw
c2VkKSk7CisgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGlu
ZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBpc0Nv
bGxhcHNlZCkpOwogICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBsZW5ndGggPSBtb3Zl
VG9OZXh0QnJlYWthYmxlUG9zaXRpb24oY3VycmVudFBvc2l0aW9uLCBsaW5lQnJlYWtJdGVyYXRv
ciwgc3R5bGUpOwotICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBmYWxz
ZSwgZmFsc2UpKTsKKyAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxp
bmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgZmFsc2UsIGZh
bHNlKSk7CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQogfQpAQCAt
MTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gSW5saW5lVGV4
dEl0ZW06OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9zaXRpb24sIHVuCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoc3BsaXRQb3NpdGlvbiA+PSB0aGlzLT5zdGFydCgpKTsKICAgICBSRUxFQVNFX0FTU0VS
VChzcGxpdFBvc2l0aW9uICsgbGVuZ3RoIDw9IGVuZCgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24sIGxlbmd0
aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1do
aXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDgwODRlMmJiNjllOGM5MmFhYTli
N2JlNmQ4YTE0Yjc3OTUyOTEyMDMuLjNiYWY5ZWFhMWZiYTkyYzcwZjRjNmM3MzI5NWIxMzhiMzFi
YzViOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmNwcApAQCAtNDUsNyArNDUsNyBAQCBCb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRl
cz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbAogICAgICwgbV9o
YXNSYXJlRGF0YShmYWxzZSkKIHsKICAgICBpZiAoaXNSZXBsYWNlZCgpKQotICAgICAgICBlbnN1
cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlZD4oKnRoaXMp
OworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gbWFrZVVuaXF1ZTxSZXBsYWNl
ZD4oKnRoaXMpOwogfQogCiBCb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0
cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBjb25zdCBC
b3g6OkJveFJhcmVEYXRhJiBCb3g6OnJhcmVEYXRhKCkgY29uc3QKIEJveDo6Qm94UmFyZURhdGEm
IEJveDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAg
IHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAq
cmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxCb3hSYXJl
RGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIEJveDo6cmVtb3ZlUmFyZURh
dGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGFiMjg0ZWEwOTliOGZhM2ZmYTcyNzRlMDZlNGNlY2NhZjg0
NzQzMDcuLmYyYWZjYWJkMGEzODFjNmQ1YzhkYTM5ZDM0NmUxYWVhMzNkNDdiMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRl
ci5jcHAKQEAgLTEzMCwyNSArMTMwLDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWls
ZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAg
aWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBD
bGVhcmx5IHRoZXJlIG11c3QgYmUgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoaXMuCiAgICAgICAg
IGlmIChwYXJlbnRSZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5s
aW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4o
ZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRl
clN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGls
ZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJl
bmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFJlbmRlcmVy
LnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlciku
b3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNw
bGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKKyAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRl
eHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlw
ZTo6SW5saW5lKSk7CiAgICAgICAgIHJldHVybiBjaGlsZExheW91dEJveDsKICAgICB9CiAKICAg
ICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVyZXIp
OwogICAgIGF1dG8gZGlzcGxheVR5cGUgPSByZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKTsKICAg
ICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHls
ZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxC
b3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRl
cmVyLnN0eWxlKCkpKTsKIAogICAgIGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpKSB7CiAg
ICAgICAgIC8vIENvbnN0cnVjdCB0aGUgcHJpbmNpcGFsIHRhYmxlIHdyYXBwZXIgYm94IChhbmQg
bm90IHRoZSB0YWJsZSBib3ggaXRzZWxmKS4KLSAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxl
bWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIu
c3R5bGUoKSkpOworICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVy
PihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVy
Qm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgfSBlbHNl
IGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpKSB7CiAgICAgICAgIGlmIChkaXNwbGF5
VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9
IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRl
clN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRl
clN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAg
ICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAg
ICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHlldCBzdXBwb3J0IGFsbCByZXBsYWNlZCBlbGVtZW50
cyBhbmQgdGhpcyBpcyB0ZW1wb3JhcnkgYW55d2F5LgogICAgICAgICBpZiAoY2hpbGRMYXlvdXRC
b3gtPnJlcGxhY2VkKCkpCiAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKS0+
c2V0SW50cmluc2ljU2l6ZShkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpLmludHJp
bnNpY1NpemUoKSk7CkBAIC0xNjMsMTggKzE2MywxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBU
cmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJl
bgogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVu
ZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldFRvcCh7IG9mZnNldC0+
aGVpZ2h0KCksIEZpeGVkIH0pOwogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRMZWZ0KHsgb2Zm
c2V0LT53aWR0aCgpLCBGaXhlZCB9KTsKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFdURk1vdmUoKnN0eWxlKSk7CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtl
VW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKCpz
dHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVy
ZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAg
ICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxl
bWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5
bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5l
cj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlw
ZTo6SW5saW5lQmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxl
OjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9
IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRl
clN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKGRpc3Bs
YXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24gfHwgZGlzcGxheVR5cGUgPT0gRGlz
cGxheVR5cGU6OlRhYmxlQ2VsbCkgewotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5k
ZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVsc2Ug
aWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwIHx8IGRpc3BsYXlU
eXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERp
c3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCiAgICAgICAgICAgICB8fCBkaXNwbGF5VHlwZSA9
PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRh
YmxlQ29sdW1uR3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1u
KSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFp
bmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8
Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9u
ZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTIx
MCw3ICsyMTAsNyBAQCB2b2lkIFRyZWVCdWlsZGVyOjpjcmVhdGVUYWJsZVN0cnVjdHVyZShjb25z
dCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29udGFpbgogICAgICAgICB0YWJsZUNoaWxk
ID0gdGFibGVDaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiAKLSAgICBhdXRvIHRhYmxlQm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBC
b3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVSZW5k
ZXJlci5zdHlsZSgpKSk7CisgICAgYXV0byB0YWJsZUJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVy
PihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwg
UmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOwogICAgIGFwcGVuZENo
aWxkKHRhYmxlV3JhcHBlckJveCwgKnRhYmxlQm94KTsKICAgICB3aGlsZSAodGFibGVDaGlsZCkg
ewogICAgICAgICBUcmVlQnVpbGRlcjo6Y3JlYXRlU3ViVHJlZShkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PigqdGFibGVDaGlsZCksICp0YWJsZUJveCk7CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBw
cmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKICAgICAgICAgLy8gRklYTUU6IE5lZWQg
dG8gZmluZCBhIHdheSB0byBvdXRwdXQgZ2VvbWV0cnkgd2l0aG91dCBsYXlvdXQgY29udGV4dC4K
ICAgICAgICAgYXV0byYgcmVuZGVyVmlldyA9ICpkb2N1bWVudC0+cmVuZGVyVmlldygpOwogICAg
ICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2sgPSBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5
b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oKmluaXRpYWxDb250YWluaW5nQmxvY2spOwor
ICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gbWFrZVVuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRl
PigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgIGxheW91dFN0YXRlLT5zZXRRdWly
a3NNb2RlKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5pbkxpbWl0ZWRRdWlya3NNb2RlKCkgPyBMYXlv
dXRTdGF0ZTo6UXVpcmtzTW9kZTo6TGltaXRlZCA6IChyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5R
dWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6WWVzIDogTGF5b3V0U3RhdGU6
OlF1aXJrc01vZGU6Ok5vKSk7CiAgICAgICAgIGxheW91dFN0YXRlLT51cGRhdGVMYXlvdXQoKTsK
ICAgICAgICAgc2hvd0xheW91dFRyZWUoKmluaXRpYWxDb250YWluaW5nQmxvY2ssIGxheW91dFN0
YXRlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA1
MWQ3N2U0YWYxZGJkZGYwNDVhOTJjMWM4YWQzYjk5ZWFjZWI5N2I1Li5iNDk4YTIyNGIxOTBjNmNl
ODQ0ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVy
PiBDb250ZW50RmlsdGVyOjpjcmVhdGUoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hCiAgICAg
aWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRv
Y3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZN
b3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7CiB9CiAKIENvbnRlbnRGaWx0ZXI6OkNvbnRl
bnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVudEZpbHRlcnMsIERvY3VtZW50TG9hZGVyJiBkb2N1
bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAKaW5kZXggZDBkNTRiOTdlYWU3MjA0MjZmOTYxYzhkYWU4OTVlMjAzNjlj
ZWRjYy4uYzRjZTVmNTUyMTcwYjNjZmM4Yjg0MWI1OWE1MTBmZDc1YWE4M2ZiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAg
LTIwNSw3ICsyMDUsNyBAQCBib29sIHZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAgIGlmICghcGFzc2Vz
QWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2Vj
dXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBhdXRvIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICBpZiAoIXJlc3VsdC0+cGFyc2UocmVzcG9uc2UpCiAg
ICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKHJlcXVlc3QuaHR0cE1l
dGhvZCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZXJyb3JEZXNjcmlwdGlvbikKICAgICAg
ICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmlnaW5IZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRl
ckZpZWxkcygpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZXJyb3JEZXNjcmlwdGlvbikpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGRlMDllNzAzOTlj
Yzc0N2U4ODczNjk3ODM3MjRlNmRhYTlmYzc4OGIuLjA0NTVjYWZjNTlmZjdiNmVhMWY5YTJjZDM5
MzFhNjllOWY2OTQ0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cApAQCAtMTg5LDcgKzE4OSw3IEBAIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVECiAgICAgLCBtX29y
aWdpbmFsU3Vic3RpdHV0ZURhdGFXYXNWYWxpZChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAg
ICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIoKnRoaXMsICZEb2N1bWVudExv
YWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKQogICAgICwgbV9kYXRh
TG9hZFRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9h
ZE5vdykKLSAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxBcHBs
aWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQorICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCht
YWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCiB7CiB9CiAKQEAgLTEzMzYs
NyArMTMzNiw3IEBAIHVpbnQ2NF90IERvY3VtZW50TG9hZGVyOjpsb2FkQXBwbGljYXRpb25NYW5p
ZmVzdCgpCiAgICAgaWYgKG1hbmlmZXN0VVJMLmlzRW1wdHkoKSB8fCAhbWFuaWZlc3RVUkwuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVz
dFVSTCwgdXNlQ3JlZGVudGlhbHMpOworICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBtYWtlVW5p
cXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3Jl
ZGVudGlhbHMpOwogICAgIGF1dG8qIHJhd01hbmlmZXN0TG9hZGVyID0gbWFuaWZlc3RMb2FkZXIu
Z2V0KCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbmV4dENhbGxiYWNrSUQrKzsKICAgICBtX2Fw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChXVEZNb3ZlKG1hbmlmZXN0TG9hZGVyKSwgY2Fs
bGJhY2tJRCk7CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRB
cmNoaXZlKFJlZjxBcmNoaXZlPiYmIGFyY2hpdmUpCiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRB
bGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB7CiAgICAgaWYgKCFtX2FyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKKyAgICAg
ICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkQWxs
UmVzb3VyY2VzKGFyY2hpdmUpOwogfQogCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB2b2lk
IERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4m
JiByZXNvdXJjZSkKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAg
ICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9h
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7
CiB9CiAKQEAgLTE5NjMsNyArMTk2Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRNYWlu
UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICAgICAgLy8gSWYgdGhlIGxv
YWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRoZSBB
cHBsaWNhdGlvbkNhY2hlSG9zdAogICAgICAgICAvLyBpcyBub3cgaW4gYSBzdGF0ZSB3aGVyZSBz
dGFydGluZyBhbiBlbXB0eSBsb2FkIHdpbGwgYmUgaW5jb25zaXN0ZW50LiBSZXBsYWNlIGl0IHdp
dGgKICAgICAgICAgLy8gYSBuZXcgQXBwbGljYXRpb25DYWNoZUhvc3QuCi0gICAgICAgIG1fYXBw
bGljYXRpb25DYWNoZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0
PigqdGhpcyk7CisgICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QgPSBtYWtlVW5pcXVlPEFw
cGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CiAgICAgICAgIG1heWJlTG9hZEVtcHR5KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTIyLDcgKzIxMjIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90
IGxvYWRJZGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpY29uTG9hZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGVyPigqdGhpcywgaWNvbi51cmwpOworICAgIGF1
dG8gaWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8SWNvbkxvYWRlcj4oKnRoaXMsIGljb24udXJsKTsK
ICAgICBhdXRvKiByYXdJY29uTG9hZGVyID0gaWNvbkxvYWRlci5nZXQoKTsKICAgICBtX2ljb25M
b2FkZXJzLnNldChXVEZNb3ZlKGljb25Mb2FkZXIpLCBuZXdDYWxsYmFja0lEKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBjNDUwYzA4NzBjMGRiOTAwMmI5MDRj
N2I2Y2JjZTRjOTY5MDJjNmRjLi5hY2EzNDUyOTg1YjczMTE5YmNiMjNjNDNiYTIzZWVmYjc1YTdh
MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTgyLDcgKzU4
Miw3IEBAIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50
cygpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5UHJvZ3Jlc3NUcmFja2VyQ2xpZW50
PiBkdW1teVByb2dyZXNzVHJhY2tlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9n
cmVzc1RyYWNrZXJDbGllbnQgPSAmZHVtbXlQcm9ncmVzc1RyYWNrZXJDbGllbnQuZ2V0KCk7CiAK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8RW1wdHlEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudD4oKTsKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZSh7IH0sIHsgfSk7
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcg
RW1wdHlEYXRhYmFzZVByb3ZpZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IGUwZjQ2MTQ4ZjJkZmFhODdmNmIyNDI2MzdkNTA4OTE4NTIwYTYwYTIuLjgzYmViMjcx
N2QzMzdjMzQxYzAxNWVjZjQ2ZDRmMzczZTA4YjE1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcApAQCAtMjcwLDEwICsyNzAsMTAgQEAgY2xhc3MgRnJhbWVMb2FkZXI6OkZy
YW1lUHJvZ3Jlc3NUcmFja2VyIHsKIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSYgZnJh
bWUsIEZyYW1lTG9hZGVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAg
ICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9wb2xpY3lDaGVja2VyKHN0ZDo6bWFrZV91bmlx
dWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQotICAgICwgbV9oaXN0b3J5KHN0ZDo6bWFrZV91bmlx
dWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkKKyAgICAsIG1fcG9saWN5Q2hlY2tlcihtYWtl
VW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1lKSkKKyAgICAsIG1faGlzdG9yeShtYWtlVW5pcXVl
PEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCiAgICAgLCBtX25vdGlmaWVyKGZyYW1lKQotICAg
ICwgbV9zdWJmcmFtZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFt
ZSkpCisgICAgLCBtX3N1YmZyYW1lTG9hZGVyKG1ha2VVbmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZy
YW1lKSkKICAgICAsIG1fbWl4ZWRDb250ZW50Q2hlY2tlcihmcmFtZSkKICAgICAsIG1fc3RhdGUo
RnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlOjpT
dGFuZGFyZCkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKICAg
ICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkRpc3Bs
YXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0g
bV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNzVHJhY2tl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOworICAg
IG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9m
cmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50
KGNvbnN0IFVSTCYpCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdEZv
clN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJMJikKICAgICBtX25lZWRzQ2xlYXIgPSB0cnVl
OwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtpbmdD
b250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZyYW1l
UHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAgICBtX3Byb2dyZXNzVHJhY2tlciA9IG1ha2VV
bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQpAQCAtMjY3OCw3ICsyNjc4LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRyZW4oKQogICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRtbCNuYXZpZ2F0ZQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXZpZ2F0aW9uRGlzYWJsZXI+IG5hdmlnYXRpb25EaXNhYmxl
cjsKICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICBuYXZpZ2F0aW9uRGlz
YWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRpb25EaXNhYmxlcj4oJm1fZnJhbWUpOwor
ICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBtYWtlVW5pcXVlPE5hdmlnYXRpb25EaXNhYmxl
cj4oJm1fZnJhbWUpOwogCiAgICAgLy8gQW55IHN1YmZyYW1lIGluc2VydGVkIGJ5IHVubG9hZCBl
dmVudCBoYW5kbGVycyBleGVjdXRlZCBpbiB0aGUgbG9vcCBiZWxvdyB3aWxsIG5vdCBnZXQgdW5s
b2FkZWQKICAgICAvLyBiZWNhdXNlIHdlIGNyZWF0ZSBhIGNvcHkgb2YgdGhlIHN1YmZyYW1lcyBs
aXN0IGJlZm9yZSBsb29waW5nLiBUaGVyZWZvcmUsIGl0IHdvdWxkIGJlIHVuc2FmZSB0bwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCA4ZTNhNDZiNTEwYTk5ODBjMmFmYjgwYTM0
NDhhNDk4OWVhYzE5ZTE5Li41ZmZmNjdkOTQyZWJlOTFlMDNhNTI5NmU2ZTlkYTI0ZGIzYjdjY2Iz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtOTYsNiArOTYsNyBAQCBXRUJD
T1JFX0VYUE9SVCBib29sIGlzUmVsb2FkKEZyYW1lTG9hZFR5cGUpOwogdXNpbmcgQ29udGVudFBv
bGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIpPjsKIAogY2xhc3MgRnJhbWVMb2FkZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVy
KTsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWRlcihGcmFtZSYsIEZyYW1lTG9hZGVyQ2xpZW50Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggY2RmNjQ5NTI2ZmUzZDFmMzMy
OGQ2ZTM2YzIwMTA4N2MzMWYxNjU1Yi4uNDA4YzUzNjQyOWUzYjA4Nzc5OGViOTdlNzY4NjRjYzk0
ODY2NjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMTQyLDIyICsx
NDIsMjIgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50
PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW4KIHsKICAgICBzd2l0Y2ggKHJlc291cmNl
LnR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJj
ZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRJbWFnZT4ocmVzb3VyY2UpKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50Pihsb2Fk
ZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OlNjcmlwdDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlu
a1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2Ny
aXB0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERl
ZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlc291
cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldDoKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRTdHlsZVJlc291cmNlQ2xp
ZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4o
bG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXNvdXJjZSkpOwogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93
bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9u
dD4ocmVzb3VyY2UpKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25j
YXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2Fj
aGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwogI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6TWVkaWFSZXNvdXJjZToKICAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWVkaWFQcmVsb2FkaW5nRW5hYmxlZCgpKTsKICAgICAg
ICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6UmF3UmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkUmF3UmVzb3Vy
Y2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNlKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNlKSk7CiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6Okljb246CiAjaWYgRU5BQkxFKFNWR19GT05UUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaAppbmRleCAwMmNjN2QxMjBjYTRiY2ZmMzUyNWM4
Zjc0OWNjNDE4MGZlNmQ0NWUyLi44YWU0YjMxYjhiNjlmOThkMDFhZGE3ODg5OWE5OGJkMTFkZDQy
NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCkBAIC0z
MCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5hdmlnYXRpb25EaXNh
YmxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmF2aWdh
dGlvbkRpc2FibGVyKEZyYW1lKiBmcmFtZSkKICAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDU1OGM3
ODA0OTU3ZWM4ODI4ODE4ZWY1NjE5YmY5ODNkM2Y5NDBhNTUuLjNjMmMyNTJhYTUxYjk2OTI5NWVj
ZjE0ODEyNTRhMzI0MGVjNDJhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hl
ZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCwgZG91
YmxlCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBiYWNrL2ZvcndhcmQgbGlzdCBpdGVtIGlmIHRoZSBy
ZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4KICAgICBpZiAoIW1fcmVkaXJlY3QgfHwgZGVs
YXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkgewogICAgICAgICBhdXRvIGxvY2tCYWNrRm9yd2Fy
ZExpc3QgPSBkZWxheSA8PSAxID8gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIDogTG9ja0JhY2tG
b3J3YXJkTGlzdDo6Tm87Ci0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1
bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVudCwgZGVsYXksICZtX2ZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3
YXJkTGlzdCkpOworICAgICAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0
Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsK
ICAgICB9CiB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6
OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCwgUwog
ICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVuIGEgZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRpb24g
b2YgYW5vdGhlciBmcmFtZS4KICAgICBib29sIGR1cmluZ0xvYWQgPSAhbG9hZGVyLnN0YXRlTWFj
aGluZSgpLmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpOwogCi0gICAgc2NoZWR1bGUo
c3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3Vt
ZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwor
ICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRpYXRp
bmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwg
bG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNz
aW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW9uKQpAQCAtNDY4LDcgKzQ2OCw3IEBA
IHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9y
bVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvCiAgICAgICAgIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBM
b2NrQmFja0ZvcndhcmRMaXN0OjpZZXM7CiAgICAgfQogICAgIAotICAgIHNjaGVkdWxlKHN0ZDo6
bWFrZV91bmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24+KFdURk1vdmUoc3VibWlzc2lvbiks
IGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5p
cXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihXVEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFj
a0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxl
cjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQpCkBAIC00Nzks
NyArNDc5LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2goRG9j
dW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWZy
ZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKKyAgICBz
Y2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJlZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVudCwg
Jm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxvYWRl
cigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6
OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQpAQCAtNDk4LDEzICs0OTgsMTMg
QEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGlu
dCBzdGVwcykKICAgICB9CiAKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMsIHNjaGVkdWxlIHRo
ZSBoaXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1ciBhc3luY2hyb25vdXNseS4KLSAgICBzY2hlZHVs
ZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uPihzdGVwcykpOwor
ICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0ZXBz
KSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVQYWdlQmxvY2soRG9j
dW1lbnQmIG9yaWdpbkRvY3VtZW50KQogewogICAgIGlmIChzaG91bGRTY2hlZHVsZU5hdmlnYXRp
b24oKSkKLSAgICAgICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRQYWdlQmxv
Y2s+KG9yaWdpbkRvY3VtZW50KSk7CisgICAgICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1
bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hl
ZHVsZXI6OnRpbWVyRmlyZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmgKaW5kZXggYTJkZGFjZTI4ZjA3YzM5MWZlMjRlMTkxOGQyNTRhNTAwMmZhYjQ3Ni4u
OTdjMjNiMTUwOTJiZjM5M2IzMWQyMGM4ZjM0ZDI1NzcyNjMxY2M5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNz
IFNlY3VyaXR5T3JpZ2luOwogZW51bSBjbGFzcyBOZXdMb2FkSW5Qcm9ncmVzcyA6IGJvb2wgeyBO
bywgWWVzIH07CiAgICAgCiBjbGFzcyBOYXZpZ2F0aW9uU2NoZWR1bGVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uU2NoZWR1
bGVyKEZyYW1lJik7CiAgICAgfk5hdmlnYXRpb25TY2hlZHVsZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZTE3YTlkYzcyZGUwMzdjOTYzNGJjMWNj
OTNjMmMxYTc3YTg2YmZhMy4uMjgxN2E3NjY2NDU3YjIzOTczYTY4ZmNmN2JjMDE4MGMxMmJmNWNk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTIwMSw3
ICsyMDEsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3ModW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZQogCiAgICAgYXV0byYgaXRlbSA9IG1f
cHJvZ3Jlc3NJdGVtcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGlmICghaXRlbSkgewotICAgICAgICBpdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVz
c0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CisgICAgICAgIGl0ZW0gPSBtYWtlVW5pcXVlPFByb2dy
ZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IGVhNWRi
ZmJhYWIyMGJmZDQzZGVhY2YxZTc3NjExYzM0MzNhYmFiODMuLjgyNDZiYjA3MDZjZDBjMDcxZjg5
OTYyODk4NmE1YmE1MWM0OGI2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCBib29sIFRleHRSZXNvdXJjZURl
Y29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbiwg
Ym9vbAogICAgIGlmIChtX2NvbnRlbnRUeXBlID09IFhNTCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBtX2NoYXJzZXRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxNZXRhQ2hhcnNl
dFBhcnNlcj4oKTsKKyAgICBtX2NoYXJzZXRQYXJzZXIgPSBtYWtlVW5pcXVlPEhUTUxNZXRhQ2hh
cnNldFBhcnNlcj4oKTsKICAgICByZXR1cm4gY2hlY2tGb3JNZXRhQ2hhcnNldChkYXRhLCBsZW4p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGNh
OWU2YzQzNDNkNzQwMTA1NTNhOWUxMGZhNjU2M2VlNTIzOTFiYmUuLmZhOTI2ZWEwNjJhZGZmMjA1
NzBjOGEzNjkxMjQ2NzJiOWVmNTY2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9j
ZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghbV9jdWVQYXJzZXIpCi0gICAgICAgIG1fY3VlUGFyc2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRo
aXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBtX2N1ZVBhcnNlciA9IG1h
a2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0
aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAogICAgIHdoaWxlIChtX3BhcnNlT2Zm
c2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVyLT5nZXRT
b21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBhMTI2M2UyZjA0NTc0YjRmMGVlNzNjMDRlOGI2
MmY1YzgwNzJhNzU4Li43NzUzMmY4NjEzNGUwNDNhZDM3ZDNmNTk5OThhNmY1N2E0MjQxNzQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC0xMTUsMTEgKzExNSwxMSBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VS
VChjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCiAgICAgYXV0byBzZWN1cml0eU9yaWdpbkNvcHkg
PSBzZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgYXV0byBjb250ZW50U2VjdXJp
dHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGds
b2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1cml0
eVBvbGljeUNvcHkgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2Nv
cGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkt
PmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5UG9saWN5KTsKICAgICBjb250ZW50U2VjdXJp
dHlQb2xpY3lDb3B5LT5jb3B5VXBncmFkZUluc2VjdXJlUmVxdWVzdFN0YXRlRnJvbSgqY29udGVu
dFNlY3VyaXR5UG9saWN5KTsKIAotICAgIGF1dG8gb3B0aW9uc0NvcHkgPSBzdGQ6Om1ha2VfdW5p
cXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlz
TnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1v
dmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7CisgICAgYXV0byBvcHRpb25zQ29weSA9IG1ha2VVbmlx
dWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMsIHJlcXVlc3QuaHR0cFJlZmVycmVyKCkuaXNO
dWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDogcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgV1RGTW92
ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKIAogICAgIC8vIEFsbCBsb2FkcyBzdGFydCBvdXQgYXMg
RG9jdW1lbnQuIEluc2lkZSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIHdlIHVwZ3JhZGUgdGhpcyB0
byBhIFdvcmtlciBsb2FkLgogICAgIEFTU0VSVChvcHRpb25zQ29weS0+b3B0aW9ucy5pbml0aWF0
b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXgg
Zjk3ZWIwMDQyNWJkMjliM2NiNmJjYjM0NWZiZmQ2NTIyNDA4ZjhjZS4uYmJhOTEwNDE5MTU0ZWNm
NDNjMTIyZTJkOTBjZjg2NDU1OTdhOTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQyMyw3ICs0MjMsNyBA
QCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUm
IG5vZGUsIFdURjo6RnVuY3Rpb248Ym9vbAogICAgIC8vIGJ1dCB3ZSBjYW4gYXBwcm94aW1hdGUg
dGhhdCBieSBjaGVja2luZyBpZiBzY3JpcHRpbmcgaXMgZW5hYmxlZCByaWdodCBub3cuCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4gdGFnTmFtZXNUb0ZpbHRlcjsK
ICAgICBpZiAoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLmlzU2Ny
aXB0RW5hYmxlZCgpKSB7Ci0gICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4oKTsKKyAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9
IG1ha2VVbmlxdWU8VmVjdG9yPFF1YWxpZmllZE5hbWU+PigpOwogICAgICAgICB0YWdOYW1lc1Rv
RmlsdGVyLT5hcHBlbmQoSFRNTE5hbWVzOjpub3NjcmlwdFRhZyk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBmMzEyOTA3MjhmNjk5
MGQ4MDA4YmEyNjQ0MDIxY2IxZDg4NWI5NDU3Li43MGY1ODY4NDhlYWVlMjkxMjZjNGJhZTkxMDZj
MTVlMjk2YTkwNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZy
b20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBtX2ltYWdlT2JzZXJ2
ZXItPmNhY2hlZEltYWdlcygpLmFkZCh0aGlzKTsKIAogICAgIGlmIChtX2ltYWdlICYmIGlzPFNW
R0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAg
ICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2Fz
dDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkBAIC0zNTcsNyArMzU3LDcgQEAgaW5s
aW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKCkKIAogICAgIGlmIChtX2ltYWdlKSB7
CiAgICAgICAgIGlmIChpczxTVkdJbWFnZT4oKm1faW1hZ2UpKQotICAgICAgICAgICAgbV9zdmdJ
bWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZH
SW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5p
cXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIAogICAg
ICAgICAvLyBTZW5kIHF1ZXVlZCBjb250YWluZXIgc2l6ZSByZXF1ZXN0cy4KICAgICAgICAgaWYg
KG1faW1hZ2UtPnVzZXNDb250YWluZXJTaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGJlNjE4M2FiZmE1OWQ1Yzhl
MTYyZmVjMWQ2NTUyNDUyM2FkZTI3OGMuLmY5YTc1ZjM1NDUyNzY5MDJhOWU0YTVjMzViNmFjNmIx
ZjE1MGMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
CiAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVz
dCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQoUmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJlc3Bv
bnNlKSk7Ci0gICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIHN0ZDo6bWFrZV91
bmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50
cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92
ZShyZXF1ZXN0KSwgbWFrZVVuaXF1ZTxSZXNvdXJjZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBy
ZXNwb25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAg
ICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVz
cG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXgg
ZTQzMGU0NDdhYzQ5NDYzNmM5ODRlNzRkNDBiOTFlNjVjZGViYjUwYi4uMDU2N2QxZDVkZThjNmYx
M2UxODY4NDRhZWQ3NTU3NWNmMTdlMTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01NDYsNyArNTQ2LDcgQEAgYm9vbCBDYWNoZWRS
ZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAg
ICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBzZW5kaW5nIGNhbGxi
YWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90aGVyIENhY2hlZFJlc291cmNlcywKICAgICAgICAg
Ly8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlzaCBz
eW5jaHJvbm91c2x5LgogICAgICAgICBBU1NFUlQoIW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2su
Y29udGFpbnMoJmNsaWVudCkpOwotICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFk
ZCgmY2xpZW50LCBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrPigqdGhpcywgY2xpZW50KSk7Cisg
ICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKCZjbGllbnQsIG1ha2VVbmlxdWU8
Q2FsbGJhY2s+KCp0aGlzLCBjbGllbnQpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCAy
MjlhMTQyZDY0NDEzY2ViYWVmYWM1MjcxMGJiMmJmOGRkZWRmN2JlLi4yZmZlMmI0MTg3OTk3ZWVm
ZGQ0MTVlMGVkYmU4MDJkYzE3MmNhZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMzgxLDkgKzM4MSw3IEBAIGNsYXNzIENhY2hlZFJlc291
cmNlIHsKIH07CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOjpDYWxsYmFjayB7Ci0jaWYgIUNPTVBJ
TEVSKE1TVkMpCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0jZW5kaWYKIHB1YmxpYzoK
ICAgICBDYWxsYmFjayhDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJlc291cmNlQ2xpZW50Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDg0M2E5ZDFmOWQ2Yzg1ZjEwMDBhMmM0MGYxOTY0YjQ3YTJlYjFjN2EuLmIz
NGI4ZmQzNWMxMDc3YTU0NTJhYmIzNDMyMzYxYjRjYzNkMTFjOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNzkx
LDcgKzc5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgLy8gRW50cnkgcG9pbnQg
dG8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI21haW4tZmV0Y2guCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gb3JpZ2luYWxSZXF1ZXN0OwogICAgIGlmIChDYWNo
ZWRSZXNvdXJjZTo6c2hvdWxkVXNlUGluZ0xvYWQodHlwZSkgfHwgcmVxdWVzdC5vcHRpb25zKCku
ZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpIHsK
LSAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVl
c3Q+KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpOworICAgICAgICBvcmlnaW5hbFJlcXVlc3Qg
PSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7
CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdC0+Y2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAgICAg
b3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBPcmlnaW4oKTsKICAgICB9CkBAIC0xMzkxLDcgKzEz
OTEsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbAogICAgICAgICByZXNvdXJjZVZhbHVlLT5p
bmNyZWFzZVByZWxvYWRDb3VudCgpOwogCiAgICAgICAgIGlmICghbV9wcmVsb2FkcykKLSAgICAg
ICAgICAgIG1fcHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJl
c291cmNlKj4+KCk7CisgICAgICAgICAgICBtX3ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFz
aFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICBtX3ByZWxvYWRzLT5hZGQocmVzb3Vy
Y2VWYWx1ZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZTsKQEAgLTE0MzMsNyAr
MTQzMyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMoQ2xlYXJQ
cmVsb2Fkc01vZGUgbW9kZSkKICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICAgICAgaWYg
KG1vZGUgPT0gQ2xlYXJQcmVsb2Fkc01vZGU6OkNsZWFyU3BlY3VsYXRpdmVQcmVsb2FkcyAmJiBy
ZXNvdXJjZS0+aXNMaW5rUHJlbG9hZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZ0xp
bmtQcmVsb2FkcykKLSAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CisgICAgICAgICAg
ICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNo
ZWRSZXNvdXJjZSo+PigpOwogICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzLT5hZGQo
cmVzb3VyY2UpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
LmgKaW5kZXggNzBjYjFhZmE0Y2YxZDNhNmU2NDJhOGFlOWRiODQ0OGY4NGQxNGJkNi4uMjJhZTcy
ZDhmZjVlZjcyOWExNjRjNzZhNGZkYmIwZTQ5ZDcxZjRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKQEAg
LTM1LDcgKzM1LDggQEAgY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CiBjbGFzcyBDYWNoZWRSZXNv
dXJjZUxvYWRlcjsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKLWNsYXNzIENhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsK
K2NsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIGZpbmFsIDogcHVibGljIENhY2hlZFNW
R0RvY3VtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQyM2Mz
ZmM1MjRiZDhiNmY1NWYzNWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2FmZmNi
ZWYzOTI3ODI2M2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25S
ZXNvdXJjZU1hcChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAgQVNT
RVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJlc291
cmNlcy5hZGQoc2Vzc2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFt
YXApCi0gICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7
CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAgcmV0
dXJuICptYXA7CiB9CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJ
bWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7
IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1dG8g
Yml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRy
KTsKLSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4o
dXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRJ
bWFnZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlD
YWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0
bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVtb3J5
Q2FjaGU6OmxydUxpc3RGb3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0Jgog
CiAgICAgbV9hbGxSZXNvdXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsKICAg
ICB3aGlsZSAobV9hbGxSZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAgIG1f
YWxsUmVzb3VyY2VzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+KCkp
OworICAgICAgICBtX2FsbFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxMUlVM
aXN0PigpKTsKICAgICByZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCmluZGV4IDYxOGU5NDI5NTAx
N2RjM2I4MzAzNjVjMTE2NzYxNTM4YjFkYjYyMzguLjE1MDNkNzhlM2FmNTk5NDk1NGIzM2MyYTgw
ODRmNGZlYTYzMDA3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJl
dmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRl
ci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFByZXZpZXdMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdMb2FkZXIpOwogcHVibGlj
OgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gY3JlYXRlKFJlc291
cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCmluZGV4IGY2YjgyMjE3OTE2Y2FkOTViZmU5NjBiYjNl
Mzc4NGEyNzBhOWJhNjcuLmM1Y2E1YzI1ZjExYjRkOGE5Y2E5M2VmYzg4OTA5OTA3ZjZiNzY2MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTg2LDcg
Kzg2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFJlc291cmNl
TG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJjZVIKIAogICAgIF9yZXNvdXJjZUxvYWRlciA9
IG1ha2VXZWFrUHRyKHJlc291cmNlTG9hZGVyKTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJjZVJl
c3BvbnNlOwotICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0
ZXI+KHNlbGYsIF9yZXNwb25zZSk7CisgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmll
d0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKICAgICBfYnVmZmVyZWREYXRhQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfc2hvdWxkRGVjaWRl
UG9saWN5QmVmb3JlTG9hZGluZyA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCku
c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKTsKIApAQCAt
MjQ2LDcgKzI0Niw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29u
bmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgfQogCiAgICAgX2Ns
aWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFtzZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIo
c2VsZildIChjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSB7Ci0gICAgICAgIF9jb252ZXJ0ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dv
cmQpOworICAgICAgICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihz
ZWxmLCBfcmVzcG9uc2UsIHBhc3N3b3JkKTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3Jt
Q29udmVydGVyKCkgYXBwZW5kRGF0YUFycmF5Ol9idWZmZXJlZERhdGFBcnJheS5nZXQoKV07CiAg
ICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZpbmlzaGVkQXBwZW5kaW5n
RGF0YV07CiAgICAgfSk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUHJldmlld0xvYWRlcjo6flByZXZp
ZXdMb2FkZXIoKQogc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2FkZXI6
OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBBU1NFUlQoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlw
ZShyZXNwb25zZS5taW1lVHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UHJl
dmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UHJl
dmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CiB9CiAKIGJvb2wgUHJldmlld0xvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAppbmRleCBlNmFkYjY3ZGE5NDg2ODYy
NmZlMjA2ZmYxNmU2NGRkYWNlMjcwMWZlLi42MTNlNzg5MmI0MTBmM2IyYTQ5NGVjZmI2ODAwMGFh
YzBkYzY2MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJl
ZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBUZXh0VHJhY2tMaXN0Owogc3RydWN0IE1lZGlh
U2VsZWN0aW9uT3B0aW9uOwogCiBjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzKFBhZ2VHcm91cCYpOwogICAgIHZpcnR1YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBj
NDc5Y2ExZjljYjA3ZDRhYzdiNGI5ZmIyMjg1MWYwYzk5NGIxNzE0Li40Y2NkYWIwNGI3YjNmNTUz
NGNlY2MyYTE5ZWMwYTRiY2I3YWIxN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4dE1l
bnUoRXZlbnQKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENv
bnRleHRNZW51PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRleHRNZW51PigpOwogfQog
CiB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51KEV2ZW50JiBldmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggZjYzZGFh
N2Y2MzQ3MjU1ODg3M2RiM2I1ODNiYzI1MTJhMTc3NTI3YS4uY2RjNzRmNmRlMDllOTNkZTlhYWI5
MjM1NmVmMmZiZjQ0ZGQyZDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXkg
ZmluYWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7CiAKIGJvb2wgTW91c2VXaGVlbFJlZ2lvbk92
ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCiB7Ci0gICAgYXV0byByZWdpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlZ2lvbj4oKTsKKyAgICBhdXRvIHJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigpOwog
ICAgIAogICAgIGZvciAoY29uc3QgRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBp
ZiAoIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCmluZGV4IDQ4YzA3MzQ3NzBlYjExMGMxYzVkODQ1M2RkMDg3OTkyZTU2
NDlhMWUuLmQyMGI5OGM0MTVlZWM4Mjc2Zjg5MDBmMjRjNjdhOTdmMTAxZDBhMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCBFdmVudEhhbmRs
ZXI6OkV2ZW50SGFuZGxlcihGcmFtZSYgZnJhbWUpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwg
bV9wZW5kaW5nTW9tZW50dW1XaGVlbEV2ZW50c1RpbWVyKCp0aGlzLCAmRXZlbnRIYW5kbGVyOjpj
bGVhckxhdGNoZWRTdGF0ZSkKICNlbmRpZgotICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQorICAgICwgbV9hdXRvc2Ny
b2xsQ29udHJvbGxlcihtYWtlVW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQogI2lmICFF
TkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGltZXIo
KnRoaXMsICZFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRpbWVyRmlyZWQpCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAyMzM3Mjk0MmIzNzYzZDkyOTNkMjY1
YjM1YWNjMTUyNWUzNGNjMDBmLi5hNWU1ZWRlMGI0Yjc0N2U0Nzk0ZGM3OTQwNmFlZmNjYmIzODVk
ZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBS
ZW5kZXJCb3gqIEZyYW1lVmlldzo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKIHZvaWQgRnJh
bWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0JiBl
bWJlZGRlZE9iamVjdCkKIHsKICAgICBpZiAoIW1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUpCi0g
ICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RI
YXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CisgICAgICAgIG1fZW1iZWRkZWRPYmpl
Y3RzVG9VcGRhdGUgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0
Kj4+KCk7CiAKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9i
amVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwogICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVudD4o
ZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkpIHsKQEAgLTE0MjcsNyAr
MTQyNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdChSZW5kZXJFbGVt
ZW50JiByZW5kZXJlcikKICAgICBib29sIGhhZFNsb3dSZXBhaW50T2JqZWN0cyA9IGhhc1Nsb3dS
ZXBhaW50T2JqZWN0cygpOwogCiAgICAgaWYgKCFtX3Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAg
ICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3Qg
UmVuZGVyRWxlbWVudCo+PigpOworICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IG1ha2VV
bmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CiAKICAgICBtX3Nsb3dSZXBh
aW50T2JqZWN0cy0+YWRkKCZyZW5kZXJlcik7CiAgICAgaWYgKGhhZFNsb3dSZXBhaW50T2JqZWN0
cykKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWlu
dE9iamVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHZvaWQgRnJhbWVWaWV3OjphZGRWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIG9iamVjdCkKIHsK
ICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCi0gICAgICAgIG1fdmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RTZXQ+KCk7CisgICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBt
YWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+KCk7CiAKICAgICBpZiAoIW1f
dmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAgICAg
bV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YWRkKG9iamVjdCk7CkBAIC00ODY2LDcgKzQ4
NjYsNyBAQCBTdHJpbmcgRnJhbWVWaWV3Ojp0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29u
c3QKIGJvb2wgRnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKLSAgICAgICAgbV9z
Y3JvbGxhYmxlQXJlYXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOwor
ICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IG1ha2VVbmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+
KCk7CiAgICAgCiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWFzLT5hZGQoc2Nyb2xsYWJsZUFyZWEp
LmlzTmV3RW50cnkpIHsKICAgICAgICAgc2Nyb2xsYWJsZUFyZWFTZXRDaGFuZ2VkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAppbmRleCA3MzA5
OGYxZmExZjEwNzFlNjFmY2QzYWE2NTM1MzMwZDNlODliZjU5Li5lODU4YzkyY2JmOGMzMWEzMjFi
ZjM4MDA5N2FiYTU1ZjE1NzAwMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlld0xheW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3TGF5b3V0Q29udGV4dC5jcHAKQEAgLTU5NiwxNCArNTk2LDE0IEBAIHZvaWQgRnJhbWVWaWV3
TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKFJlbmRlckVsZW1lbnQmIHJvb3QpCiAgICAg
QVNTRVJUKCFtX3BhaW50T2Zmc2V0Q2FjaGVEaXNhYmxlQ291bnQpOwogICAgIEFTU0VSVCghbGF5
b3V0U3RhdGUoKSk7CiAKLSAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2su
YXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsKIH0KIAogYm9vbCBG
cmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVk
ZWQoUmVuZGVyQmxvY2tGbG93JiBsYXlvdXRSb290KQogewogICAgIGlmIChsYXlvdXRTdGF0ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihsYXlvdXRSb290LCBSZW5kZXJMYXlv
dXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBl
bmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0
U3RhdGU6OklzUGFnaW5hdGVkOjpZZXMpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKQEAg
LTYxMyw3ICs2MTMsNyBAQCBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRT
dGF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaQogICAgIGF1dG8qIGxheW91
dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKICAgICBpZiAoIWxheW91dFN0YXRlIHx8ICFu
ZWVkc0Z1bGxSZXBhaW50KCkgfHwgbGF5b3V0U3RhdGUtPmlzUGFnaW5hdGVkKCkgfHwgcmVuZGVy
ZXIuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKQogICAgICAgICB8fCBsYXlvdXRTdGF0ZS0+bGlu
ZUdyaWQoKSB8fCAocmVuZGVyZXIuc3R5bGUoKS5saW5lR3JpZCgpICE9IFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUdyaWQoKSAmJiByZW5kZXJlci5pc1JlbmRlckJsb2NrRmxvdygpKSkgewotICAg
ICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5
b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdo
dCwgcGFnZUhlaWdodENoYW5nZWQpKTsKKyAgICAgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVu
ZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihtX2xheW91dFN0YXRlU3RhY2ssIHJlbmRl
cmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VIZWlnaHRDaGFuZ2VkKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZp
Z2F0b3JCYXNlLmNwcAppbmRleCA4YzNjNTJhMDczNTIyNzkwY2QwYzRhNjBkYzA1ZTYxNDEyYzE5
YWU5Li41MjI3ZTQyYWMwOTZjZTY5MjVkN2VjNmExOGU1MTkyNWQyZTAwNmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyJiBOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKCkKIHsKICAgICBBU1NF
UlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29ya2Vy
RW5hYmxlZCgpKTsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbnRhaW5lcikKLSAgICAgICAg
bV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsKKyAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyQ29udGFpbmVy
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsKICAgICByZXR1cm4gKm1fc2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZWRhN2M1ZmE1ZDY0
NzliYTcxMDkwMjBiNTI4MzJjZTI2MWJjZDdlOS4uMjlhMmFmNzRiY2FkZDZiMzBjNmFmZjYwZWM0
ZTMxZDBiNDcyYmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMTEsMjYgKzIxMSwyNiBAQCBz
dGF0aWMgY29uc3RleHByIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBwYWdlSW5pdGlh
bEFjdGl2aXR5U3RhdGUoKQogfQogCiBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5pcXVlPENocm9tZT4o
KnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQotICAgICwgbV9kcmFnQ2Fy
ZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NhcmV0Q29udHJvbGxlcj4oKSkKKyAg
ICA6IG1fY2hyb21lKG1ha2VVbmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9u
LmNocm9tZUNsaWVudCkpCisgICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIobWFrZVVuaXF1ZTxE
cmFnQ2FyZXRDb250cm9sbGVyPigpKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgLCBt
X2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAq
cGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCisgICAgLCBtX2RyYWdDb250cm9sbGVyKG1h
a2VVbmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0Ns
aWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpKQorICAg
ICwgbV9mb2N1c0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBw
YWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0g
ICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51
Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkp
CisgICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihtYWtlVW5pcXVlPENvbnRleHRNZW51Q29u
dHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkpCiAj
ZW5kaWYKLSAgICAsIG1fdXNlcklucHV0QnJpZGdlKHN0ZDo6bWFrZV91bmlxdWU8VXNlcklucHV0
QnJpZGdlPigqdGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVj
dG9yQ2xpZW50KSkKKyAgICAsIG1fdXNlcklucHV0QnJpZGdlKG1ha2VVbmlxdWU8VXNlcklucHV0
QnJpZGdlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxJ
bnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xp
ZW50KSkKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgLCBtX3BvaW50ZXJDYXB0dXJl
Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRo
aXMpKQorICAgICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2ludGVy
Q2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCi0gICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBvaW50
ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwg
bV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9wcm9ncmVzcyhzdGQ6
Om1ha2VfdW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNz
VHJhY2tlckNsaWVudCkpCi0gICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKKyAgICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1ZTxQ
cm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQp
KQorICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIobWFrZVVuaXF1ZTxCYWNrRm9yd2FyZENv
bnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xp
ZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShGcmFtZTo6Y3JlYXRlKHRoaXMsIG51bGxwdHIsIHBh
Z2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSkpCiAgICAgLCBtX2VkaXRv
ckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCkpCiAgICAgLCBt
X3BsdWdJbkNsaWVudChwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQpCkBAIC0yNTAsOSAr
MjUwLDkgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9u
KQogICAgICwgbV9kb21UaW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lcigqdGhpcywg
JlBhZ2U6OmRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQpCiAgICAg
LCBtX2FjdGl2aXR5U3RhdGUocGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpCiAgICAgLCBtX2Fs
dGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGll
bnQpCi0gICAgLCBtX2NvbnNvbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNs
aWVudD4oKnRoaXMpKQorICAgICwgbV9jb25zb2xlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnNv
bGVDbGllbnQ+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAsIG1f
aW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhp
cykpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUobWFrZVVuaXF1ZTxQYWdlRGVidWdnYWJs
ZT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIpKQogICAgICwgbV9jb29raWVKYXIoV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbi5jb29raWVKYXIpKQpAQCAtMjY4LDE2ICsyNjgsMTYgQEAgUGFnZTo6
UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9wbGF5
YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyKCp0aGlzLCAmUGFnZTo6cGxheWJhY2tDb250
cm9sc01hbmFnZXJVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCiAgICAgLCBtX2lzVXRpbGl0eVBh
Z2UoaXNVdGlsaXR5UGFnZUNocm9tZUNsaWVudChjaHJvbWUoKS5jbGllbnQoKSkpCi0gICAgLCBt
X3BlcmZvcm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogc3RkOjptYWtl
X3VuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKLSAgICAsIG1fbG93UG93ZXJNb2Rl
Tm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJv
b2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShpc0xv
d1Bvd2VyTW9kZUVuYWJsZWQpOyB9KSkKLSAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nKHN0ZDo6
bWFrZV91bmlxdWU8UGVyZm9ybWFuY2VMb2dnaW5nPigqdGhpcykpCisgICAgLCBtX3BlcmZvcm1h
bmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogbWFrZVVuaXF1ZTxQZXJmb3Jt
YW5jZU1vbml0b3I+KCp0aGlzKSkKKyAgICAsIG1fbG93UG93ZXJNb2RlTm90aWZpZXIobWFrZVVu
aXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFi
bGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpOyB9
KSkKKyAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nKG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VMb2dn
aW5nPigqdGhpcykpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAoRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikpCi0gICAgLCBtX3NlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVu
aXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1f
cmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyKFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRl
KCkpCi0gICAgLCBtX3BhZ2VPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VP
dmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoQVBQ
TEVfUEFZKQotICAgICwgbV9wYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXlt
ZW50Q29vcmRpbmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGll
bnQpKQorICAgICwgbV9wYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29vcmRp
bmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQpKQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAsIG1fYXV0aGVudGljYXRvckNvb3JkaW5h
dG9yKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yPihXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCkpKQpAQCAtNTYxLDcg
KzU2MSw3IEBAIHZvaWQgUGFnZTo6aW5pdEdyb3VwKCkKIHsKICAgICBBU1NFUlQoIW1fc2luZ2xl
UGFnZUdyb3VwKTsKICAgICBBU1NFUlQoIW1fZ3JvdXApOwotICAgIG1fc2luZ2xlUGFnZUdyb3Vw
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlR3JvdXA+KCp0aGlzKTsKKyAgICBtX3NpbmdsZVBhZ2VH
cm91cCA9IG1ha2VVbmlxdWU8UGFnZUdyb3VwPigqdGhpcyk7CiAgICAgbV9ncm91cCA9IG1fc2lu
Z2xlUGFnZUdyb3VwLmdldCgpOwogfQogCkBAIC0yNjU0LDcgKzI2NTQsNyBAQCB2b2lkIFBhZ2U6
OnNldFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgfQogCiAg
ICAgaWYgKCFtX3Jlc291cmNlVXNhZ2VPdmVybGF5ICYmIG1fc2V0dGluZ3MtPmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKCkpCi0gICAgICAgIG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5PigqdGhpcyk7CisgICAgICAgIG1f
cmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBtYWtlVW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5Pigq
dGhpcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50
LmNwcAppbmRleCBkMDMyZmNmNzBmODZhNjNhYWRkMTFmMjI3ZmE5NmRkMDYzYzFlYTYxLi42M2Y2
NTZmMWE1YWI4ZTI2ZmI5NTVlNjM0ZTQ1YTlhOGExMmZkZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMTYwLDkgKzE2MCw5IEBAIHZvaWQgUGFnZUNv
bnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+IG1lc3NhZ2U7CiAKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VU
eXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCks
IHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVz
c2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7
CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdl
VGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdnZXN0ZWRDb2x1bW5O
dW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtl
VW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6Okxv
ZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1iZXIs
IHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKIAogICAg
IGFkZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgdm9p
ZCBQYWdlQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUg
dHlwZSwgTWVzc2FnZUxldmVsIGwKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYm9vbCBn
b3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRl
eHQpOwogCi0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBhcmd1bWVudHMuY29weVJlZigpLCBl
eGVjKTsKIAogICAgIFN0cmluZyB1cmwgPSBtZXNzYWdlLT51cmwoKTsKICAgICB1bnNpZ25lZCBs
aW5lTnVtYmVyID0gbWVzc2FnZS0+bGluZSgpOwpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWY8U2Ny
aXB0QXJndW1lbnRzPiYmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0YVVSTC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6
SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3QgY2FwdHVyZSBzY3JlZW5zaG90
Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICAgICAgICAgIGFkZE1lc3NhZ2UobWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3QgY2Fw
dHVyZSBzY3JlZW5zaG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBhZ2VDb25z
b2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlwdEFy
Z3VtZW50cz4mJgogICAgIGZvciAoc2l6ZV90IGkgPSAoIXRhcmdldCA/IDAgOiAxKTsgaSA8IGFy
Z3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFkanVzdGVkQXJndW1lbnRz
LmFwcGVuZCh7IHN0YXRlLT52bSgpLCBhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkgfSk7CiAgICAg
YXJndW1lbnRzID0gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoKnN0YXRlLCBXVEZNb3ZlKGFkanVz
dGVkQXJndW1lbnRzKSk7Ci0gICAgYWRkTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJndW1lbnRzKSkp
OworICAgIGFkZE1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZl
bDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDkxOTM2MDQ1YzJmYWY3
NmNhYzVlMmM2OWU2MjMzZjJjZTMwYmY5YjEuLjEyOGMxOGYxNGI5MDhlNzFiYzdjZWZiMzk2MjA3
ZmViYmMwMGYyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTExNiw5ICsxMTYs
OSBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNl
cygpCiB7CiAgICAgaWYgKCFtX2NhcHRpb25QcmVmZXJlbmNlcykgewogI2lmIFBMQVRGT1JNKE1B
QykgfHwgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKLSAgICAgICAgbV9jYXB0
aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGPigqdGhpcyk7CisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVuaXF1
ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRj4oKnRoaXMpOwogI2Vsc2UKLSAgICAgICAg
bV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5pcXVl
PENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlzKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCA2YzE1YjNmYWE4M2Y1Y2FlMGQ5MTc2ZDAwYzhh
ZmMxNWI3NjY5MzE2Li5jYmJhYzIxZDQwMDViMWIwZTExODAyMmY3YWExNGE4YmNmZWQ4NTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQg
UGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVyRmlyZWQoKQogRXhjZXB0
aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKIHsK
ICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtl
X3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VV
bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3VzZXJUaW1p
bmctPm1hcmsobWFya05hbWUpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0y
NzksMTQgKzI3OSwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhjb25z
dCBTdHJpbmcmIG1hcmtOYW1lKQogdm9pZCBQZXJmb3JtYW5jZTo6Y2xlYXJNYXJrcyhjb25zdCBT
dHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3Vz
ZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAg
bV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAgICAgbV91c2Vy
VGltaW5nLT5jbGVhck1hcmtzKG1hcmtOYW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gUGVy
Zm9ybWFuY2U6Om1lYXN1cmUoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgY29uc3QgU3RyaW5n
JiBzdGFydE1hcmssIGNvbnN0IFN0cmluZyYgZW5kTWFyaykKIHsKICAgICBpZiAoIW1fdXNlclRp
bWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5n
PigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4o
KnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3VzZXJUaW1pbmctPm1lYXN1cmUobWVhc3Vy
ZU5hbWUsIHN0YXJ0TWFyaywgZW5kTWFyayk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKQEAgLTMwMCw3ICszMDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWVh
c3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcmCiB2b2lkIFBlcmZv
cm1hbmNlOjpjbGVhck1lYXN1cmVzKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUpCiB7CiAgICAg
aWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlx
dWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVl
PFVzZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmctPmNsZWFyTWVhc3VyZXMobWVh
c3VyZU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1J
bmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaApp
bmRleCA5OWE0MzcyZTU0ZDg0MDI5YmFmYmY5YjhmN2E1ODIwMDFmYTYzYTFiLi4xNmJjZjA0Mzkw
YTE3MGYzZGU3ODI2NTBjMmZjMjUyMmNmNTA1NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJl
d2FybUluZm9ybWF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IFdFQkNPUkVfRVhQT1JUIFByZXdhcm1JbmZvcm1hdGlvbiB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0
aW9uIGZvbnRDYWNoZTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCAw
MzcwZjI4ODdmNjViNTdiM2NkODk3ZTRmYzY5ZThhMmVmYjg3NWRmLi40NDI5MWFlZmEzN2M4YTdh
ODQ0OGJlYzM5YWVlYWMyNDM5ZWM0NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcmludENvbnRleHQ6Om91dHB1dExpbmtlZERl
c3RpbmF0aW9ucyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgRG8KICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX2xpbmtlZERlc3RpbmF0aW9ucykgewotICAgICAgICBtX2xp
bmtlZERlc3RpbmF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFJlZjxF
bGVtZW50Pj4+KCk7CisgICAgICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0gbWFrZVVuaXF1ZTxI
YXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4oKTsKICAgICAgICAgY29sbGVjdExpbmtlZERl
c3RpbmF0aW9ucyhkb2N1bWVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKaW5kZXggNTZhMDExYzRjZWU5OTc4OTkwMWZh
ZDM2MzAyYmUxMGMzNDU2NjUyNy4uM2I4ODFkZmJiMTcxN2Y0ZTQxMWE2YzUzNDQ1OTVmYmQzYWI0
MzA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6
aXNTY2hlZHVsZWQoKSBjb25zdAogdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnN0YXJ0
VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAgICBBU1NFUlQoIWlzU2NoZWR1bGVkKCkpOwotICAg
IG1fcmVmcmVzaFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOworICAgIG1fcmVmcmVzaFRp
bWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6
OmRpc3BsYXlSZWZyZXNoRmlyZWQpOwogICAgIG1fcmVmcmVzaFRpbWVyLT5zdGFydE9uZVNob3Qo
ZGVsYXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1Vw
ZGF0ZVNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXIuaAppbmRleCBmYWRlNjJmYzc4N2VlNDg5NzlhZjZkZDgyNjYyNzc5ODA0ZDM3NTE3Li42
ZjA2MDgxNzgyNmVjNTZjNmVlOGE1ZjhjZDM5NDRlYzJkNDE5MGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAg
Y2xhc3MgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+IGNyZWF0ZShQYWdlJiBwYWdlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyPihwYWdlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyPihwYWdlKTsKICAgICB9CiAKICAgICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIo
UGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCmluZGV4IDk1YjFjOGI1YmU4
M2Q4OWIyNDk3OWVhZWQ5YjlkNGU5MGQzZjRmODcuLmVlZWJmOWI5ZTYxYmQ1ODhmZDNiYTk5ZmFi
MTUwMTkxY2M4ZjY3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2Jz
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKQEAgLTQw
LDYgKzQwLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogCiBzdHJ1Y3QgUmVz
aXplT2JzZXJ2ZXJEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgVmVjdG9yPFdlYWtQdHI8UmVzaXplT2JzZXJ2ZXI+PiBvYnNlcnZlcnM7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDQyMzQxODI4MGVhMmVlM2M5YmZk
ZmM5MWNkMTI3Yjk2OGViMWUxYmYuLjBkZWIwNjQxNDhmOTcyNmNkMzhiNDEwMDVkNTIyOTcyNjBj
MWM2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KICAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KG9yaWdpbkFjY2Vzc01hcExvY2spOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwogICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOworICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7
CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlv
blByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMg
PyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6
OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJ
UEFkZHJlc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBiNjg0ODk2
ZjM5ODg0NjI1NGExNzk3YWRjZGVkNjY2NjA1ZTg1ZDVjLi4yN2VlYTZjMGFiOTM4ZWJjOGY5NjVk
YWNiODIwMzExNDQzMTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBA
IC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGxheW91dFNjaGVkdWxlVGhyZXNo
b2xkID0gMjUwX21zOwogCiBTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZShQYWdlKiBwYWdlKQog
ICAgIDogbV9wYWdlKG51bGxwdHIpCi0gICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMoc3RkOjpt
YWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQorICAgICwgbV9mb250R2VuZXJpY0Zh
bWlsaWVzKG1ha2VVbmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKICAgICAsIG1fbGF5b3V0
SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAgICAgLCBtX21pbmltdW1ET01UaW1l
ckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAgLCBtX3Nl
dEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdlTG9h
ZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U3VzcGVuZGFibGVUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVy
LmgKaW5kZXggNTU4NDQzNDA3ODM0NmZiOWI1N2E2ZWE1OWFmY2UyN2E2MjQwYjU1YS4uM2MzZDQ5
ZTA1OGFiMTMxNzQ3ZWI0OWJiMGM5M2EwZmQyOTQ1MThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
dXNwZW5kYWJsZVRpbWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgU3VzcGVuZGFibGVUaW1lciA6IHByaXZhdGUgVGltZXJCYXNlLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAg
ICB2aXJ0dWFsIH5TdXNwZW5kYWJsZVRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggYjljZTk4Y2M2Y2E1YzI0NTZjZGI5NGY1ZGM0
MWI0ZDJiNTBlOThmNi4uNjUyMzExZDdhNTVmNTUwN2EwNWFhNDNiNjJjODAyMDg3MjJkYmFkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAt
NzMsNyArNzMsNyBAQCB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6Zm9yRWFjaFVzZXJNZXNz
YWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFVzZXJNZQogCiB2b2lkIFVzZXJDb250ZW50
Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVu
aXF1ZV9wdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCkKIHsKLSAgICBhdXRvJiBzY3JpcHRzSW5X
b3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1
dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyBy
ZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApA
QCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2Vy
U2NyaXB0cyhET01XcmFwcGVyV29ybGQmIHdvcmxkKQogCiB2b2lkIFVzZXJDb250ZW50Q29udHJv
bGxlcjo6YWRkVXNlclN0eWxlU2hlZXQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1bmlx
dWVfcHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCwgVXNlclN0eWxlSW5qZWN0aW9u
VGltZSBpbmplY3Rpb25UaW1lKQogewotICAgIGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1f
dXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0
byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwg
WyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJT
dHlsZVNoZWV0KSk7CiAKICAgICBpZiAoaW5qZWN0aW9uVGltZSA9PSBJbmplY3RJbkV4aXN0aW5n
RG9jdW1lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVs
dGFGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIu
Y3BwCmluZGV4IGYyNTlhZWIxYTBhOWU1Y2U3YTEzNGYwZDEyNjllYzMxNGM5YTljMzEuLjMwNGQ5
NGE3NWJmMzYxZDhkZDQ2ZjZhZmZhZmUzMWMzZWY4MmE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKQEAgLTQzLDkgKzQzLDkgQEAgV2hlZWxF
dmVudERlbHRhRmlsdGVyOjp+V2hlZWxFdmVudERlbHRhRmlsdGVyKCkgPSBkZWZhdWx0Owogc3Rk
Ojp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0YUZpbHRlcj4gV2hlZWxFdmVudERlbHRhRmlsdGVy
OjpjcmVhdGUoKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2hlZWxFdmVudERlbHRhRmlsdGVyTWFjPigpOwogI2Vsc2UKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IDE0NDY2M2NhZTk1OTc5Y2ZjYzdjNGEyMjQyZTFkMTYxZDYxMDI5MjUuLjEz
YzMxZjU3NjRiN2IyMjRhMmI3ZWE1NWFlMzNhNmIzOTg2Yjk2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
CkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6
YW5pbWF0aW9uV2lsbEJlUmVtb3ZlZChBbmltYXRpb25CYXNlJiBhbmltYXQKIH0KIAogQ1NTQW5p
bWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcihGcmFtZSYgZnJhbWUpCi0g
ICAgOiBtX2RhdGEoc3RkOjptYWtlX3VuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZT4oZnJhbWUpKQorICAgIDogbV9kYXRhKG1ha2VVbmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJvbGxl
clByaXZhdGU+KGZyYW1lKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDc0ZWVkYzk5NjZlOWY4
MWFjYjk5NmNmMzc2OTgzZGFiNjg1NTQwYzYuLmJhZWIyNDc2NTcxNjczN2I4NGExY2M4ZjE5ZGUw
MTczZjM2N2U5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTExNyw5ICsxMTcsOSBAQCBzdGF0aWMgaW5s
aW5lIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVy
dHlCbGVuZGluZ0NsaQogewogICAgIEFTU0VSVChmcm9tICYmIHRvKTsKICAgICBpZiAoZnJvbS0+
c3R5bGUoKSAhPSB0by0+c3R5bGUoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U2hhZG93RGF0YT4oKnRvKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0YT4o
KnRvKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KGJsZW5kKGZy
b20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlvbigpLCBwcm9ncmVzcyksCisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9u
KCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmQoZnJvbS0+cmFkaXVzKCksIHRvLT5yYWRpdXMo
KSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5zcHJlYWQoKSwgdG8tPnNwcmVhZCgp
LCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLT5zdHlsZSgpLCB0by0+
c3R5bGUoKSwgcHJvZ3Jlc3MpLApAQCAtOTc0LDE1ICs5NzQsMTUgQEAgY2xhc3MgUHJvcGVydHlX
cmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFw
cGVyQmFzZQogICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3Bl
cnR5SUQgcHJvcCwgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwg
dm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IENvbG9yJiksCiAgICAgICAgIGNvbnN0
IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5k
ZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0
aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihzdGQ6Om1h
a2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCi0g
ICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBl
ckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKKyAgICAgICAgLCBt
X3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVyLCBz
ZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdy
YXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAgewog
ICAgIH0KICAgICBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0
eUlEIHByb3AsIE1heWJlSW52YWxpZENvbG9yVGFnLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxl
OjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29s
b3ImKSwKICAgICAgICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIp
KCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3Im
KSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAg
ICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlk
Q29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVy
KHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3As
IHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1fd3JhcHBlcihtYWtl
VW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCBnZXR0ZXIsIHNl
dHRlcikpCisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3Jh
cHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVy
KSkKICAgICB7CiAgICAgfQogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBj
b25zdCBSZW5kZXJTdHlsZSogYikgY29uc3Qgb3ZlcnJpZGUKQEAgLTEyMjksMTkgKzEyMjksMTkg
QEAgY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBBbmltYXRpb25Qcm9w
ZXJ0eVdyYXBwZXJCYXNlIHsKICAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5
V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBw
ZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3Np
dGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tn
cm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+
KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlv
biwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91
bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb25ZOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdy
YXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVy
Pihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRp
b24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3Jv
dW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4o
cHJvcGVydHksICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9u
LCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWU9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3Vu
ZFlPcmlnaW4sIEVkZ2U6OkJvdHRvbSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6
ZToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmls
bExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3RoKTsKKyAgICAgICAg
ICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQcm9w
ZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVuZ3Ro
LCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgotICAgICAgICAgICAgbV9maWxsTGF5
ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQ
cm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6
c2V0SW1hZ2UpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtl
VW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmls
bExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3NzAsNyArMTc3MCw3
IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25X
cmFwcGVyTWFwKCkKICAgICAgICAgICAgIGxvbmdoYW5kV3JhcHBlcnMudW5jaGVja2VkQXBwZW5k
KG1fcHJvcGVydHlXcmFwcGVyc1t3cmFwcGVySW5kZXhdLmdldCgpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIFdURk1vdmUobG9uZ2hhbmRX
cmFwcGVycykpKTsKKyAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZCht
YWtlVW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShs
b25naGFuZFdyYXBwZXJzKSkpOwogICAgICAgICBpbmRleEZyb21Qcm9wZXJ0eUlEKHByb3BlcnR5
SUQpID0gYW5pbWF0YWJsZUxvbmdoYW5kUHJvcGVydGllc0NvdW50ICsgaTsKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApp
bmRleCA3MDQ3ZTgzZGU3ODVkYjgxYjZkOTkwYTk0ODM3YmE3MWQ3MjgyOWEwLi44ZjBmNmJmNTNi
MDNlMDhmNzAzMzE2NmViOGM3NGQ2YmY5NzI4MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2
b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcm
IGhlYWRlciwgQ29udGVudFNlY3VyaQogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZGF0
ZVNvdXJjZVNlbGYoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewogICAg
IG1fc2VsZlNvdXJjZVByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKTsKLSAgICBt
X3NlbGZTb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNl
Y3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBt
X3NlbGZTb3VyY2UgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRo
aXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5
T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKIH0KIAogdm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFwcGx5UG9saWN5VG9TY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlLmgKaW5kZXggYThmMWQ0ZjBiZGUxNGYxNGI4OGFhMzk0MGVkZDhjODk2
MjYxZTNkZS4uYmJkOTE4OWUyNDgzNGRhY2M4ZDdiYWUxNWNjNTgxNmNhMzIwY2YxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDsKIAogY2xhc3MgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGlyZWN0aXZlTGlzdCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICA6IG1fbmFtZShuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0LmNwcAppbmRleCBkZGJkOGNkZTI3ODBlOTJkYmEyMGUwYWJkOTljZjA0OTg0
M2Y0YzRkLi5jMDE1NmRkZjAxYzk0N2U1MDRiNTY5ZDBhNDExNjk4YzU1OGYzZWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Qo
Q29udGVudFNlCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVhdGUoQ29udGVu
dFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lIZWFkZXJUeXBlIHR5cGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UG9saWN5
RnJvbSBmcm9tKQogewotICAgIGF1dG8gZGlyZWN0aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsKKyAgICBhdXRv
IGRpcmVjdGl2ZXMgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q+KHBvbGljeSwgdHlwZSk7CiAgICAgZGlyZWN0aXZlcy0+cGFyc2UoaGVhZGVyLCBmcm9tKTsK
IAogICAgIGlmICghY2hlY2tFdmFsKGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJl
Y3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkpKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAgbV9wb2xpY3kucmVwb3J0RHVwbGljYXRlRGlyZWN0
aXZlKG5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRpcmVjdGl2ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKKyAgICBk
aXJlY3RpdmUgPSBtYWtlVW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2YWx1
ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YXBwbHlT
YW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzYW5kYm94UG9s
aWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIu
aAppbmRleCA2NWFhZTgxM2E2ODhjMGM5OWE2ZmE5OWRkMmY2NWQ3MDNmZGFlMzdhLi40MjIyMTE2
ODZhNzZjNGMwNTdkYjQ5MThjNWFlZjQzYTYzNjA3OWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFz
cyBET01UaW1lcjsKIGNsYXNzIEVsZW1lbnQ7CiAKIGNsYXNzIENvbnRlbnRDaGFuZ2VPYnNlcnZl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXIoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9N
VGltZXJIb2xkaW5nVGFuay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xk
aW5nVGFuay5oCmluZGV4IGI2MjE4NGZlMTc5NDJkYTk0ODU5YTgwMmNlZmRlNzZlMjQyZDNlNGMu
LmJiZjc5NDVhYWE0OTlhNzZiN2UxMmFiM2M3NWQ1OTQ0MjFlNDVlZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmgKQEAgLTM1LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NVGltZXI7CiAKIGNsYXNzIERPTVRpbWVySG9s
ZGluZ1RhbmsgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERP
TVRpbWVySG9sZGluZ1RhbmsoKTsKICAgICB+RE9NVGltZXJIb2xkaW5nVGFuaygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51
eC5jcHAKaW5kZXggNGZkZjc1NmMwMjE5ODg1MzNiMmYxMjU1YzkxYTRlY2M5MTQ4NGZhNC4uYzA3
YjEyNzY5Y2QwNGJhN2IzMWY4OGM0NmE5ZjA2YjZhZDZiNDlkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBA
IC03MCw2ICs3MCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2NUaW1lclN0cmluZyhNb25vdG9uaWNUaW1l
IHRpbWVyRmlyZURhdGUsIE1vbm90b25pY1RpbWUgbm93KQogc3RhdGljIGNvbnN0IGZsb2F0IGdG
b250U2l6ZSA9IDE0OwogCiBjbGFzcyBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmluYWwg
OiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyKFJlc291cmNlVXNh
Z2VPdmVybGF5JiBvdmVybGF5KQogICAgICAgICA6IG1fb3ZlcmxheShvdmVybGF5KQpAQCAtMTMy
LDcgKzEzMyw3IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlciBmaW5hbCA6IHB1
YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIAogdm9pZCBSZXNvdXJjZVVzYWdlT3ZlcmxheTo6
cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAgICBtX292ZXJsYXlQYWludGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsKKyAgICBtX292ZXJs
YXlQYWludGVyID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlz
KTsKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUob3ZlcmxheSgpLnBh
Z2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1fb3Zlcmxh
eVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNE
KCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3JtYWxIZWln
aHQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQppbmRleCBkN2FkZmZkNzJmOWZhOGZl
OTdhZmNkYTA3MThkODNjNmUwOTA4NTBjLi4wODYzYWQyNjcyNWQ2NTU0NzUyYjdhYzIxNDhlZWQx
YzZkZmMyM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KQEAgLTkwLDcgKzkwLDcg
QEAgdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogdm9pZCBQYWdlOjphZGRTY2hlZHVs
ZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogewogICAgIGlmICghbV9zY2hlZHVsZWRS
dW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOworICAgICAgICBtX3NjaGVkdWxlZFJ1bkxv
b3BQYWlycyA9IG1ha2VVbmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVk
dWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCiAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JX
aW5kb3cuaAppbmRleCBkY2RkOTUwNDhiZDk1OGFhNzQ0MGEwZmMzZDliY2U3ZGYyZjU0ODBmLi42
NDc1Y2U1ZWJjOTA3YWUxODgwYWYxNzFjMDczNmZmM2VjYjUwMjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCkBAIC01Miw2ICs1Miw3IEBAIGVu
dW0gY2xhc3MgVGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlvbiA6IHVpbnQ4X3Qg
ewogI2lmIFBMQVRGT1JNKE1BQykKIAogY2xhc3MgVGV4dEluZGljYXRvcldpbmRvdyB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dElu
ZGljYXRvcldpbmRvdyk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggMzA2
Y2ZlZDE5Y2U2ZDAwYjYyYTg1MjQ5NzAwMjhiODA0NWZhZDgyMy4uMDBhZjM5NDc4ZGM3NWY3MDI5
YzI0ODQ1NGVmMDFhYjBjNmM3ZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTU5LDcg
KzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKiBwYWdlKQogICAgIDogU2Nyb2xsaW5nQ29v
cmRpbmF0b3IocGFnZSkKICAgICAsIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXIoKnRo
aXMsICZBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVy
QXN5bmNTY3JvbGxUaW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQorICAgICwgbV9zY3JvbGxpbmdT
dGF0ZVRyZWUobWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRz
SW5mby5oCmluZGV4IDYzYmQ5NjM4YjYzYTFhMTFjYTQwZjM2NzIxMjlmNzE0MTBjNmZmMmUuLjNh
YjY0MDY4MjY0YzUwNDA4YmFiNGVlMzhkMmNjZDRhNjQxYzc4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBAIC0z
Nyw2ICszNyw3IEBAIHN0cnVjdCBTY3JvbGxPZmZzZXRSYW5nZSB7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CisgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZlY3RvcjxUPiBob3Jpem9udGFsU25hcE9mZnNldHM7
CiAgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25hcE9mZnNldHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3IuY3BwCmluZGV4IDc2NDBkNTVkOTZhM2YwOTU5YjkzMWVmMDQzM2VjMTVmYTIwN2RiZDQuLmM4
OTBmOWViYTAwNGNhODc4MDE0MWI4NWNlZWUwMDU1NjJlMmU0NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yLmNwcApAQCAtNzEsNyArNzEsNyBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUm
IGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxE
ZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlh
bE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRp
Y3Rpb25FbmFibGVkKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCmluZGV4IGJlOTlkMGVlNmEz
ZjA3ODlmYzRkN2RjNjkyODg1YjUyNDAwNDM4MDIuLjIxYzMxMWNkODliNzk0MDg0YTg0OTBkNWZj
OWJhNTVhOTNiOWFlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCkBAIC0zOSw2ICszOSw3IEBA
IGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiAKIGNsYXNzIFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3Bv
cnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBp
bml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUm
IGluaXRpYWxWZWxvY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAppbmRleCA5NjgyZDJjMWJjZWUzNzU3MTNjMzQ2ZDNl
MzNjZDRkYzEzNWFmYzc4Li5iZTU3YzliODY5ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0MGM4MTY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlTm9kZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6
YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAgY2hp
bGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAg
IG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3Rh
dGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQ
dHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1v
dmUoY2hpbGROb2RlKSk7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKENoaWxkTm9kZXMpOwogfQpA
QCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZChS
ZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90CiAKICAgICBpZiAoIW1f
Y2hpbGRyZW4pIHsKICAgICAgICAgQVNTRVJUKCFpbmRleCk7Ci0gICAgICAgIG1fY2hpbGRyZW4g
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7
CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5n
U3RhdGVOb2RlPj4+KCk7CiAgICAgfQogCiAgICAgaWYgKGluZGV4ID4gbV9jaGlsZHJlbi0+c2l6
ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVUcmVlLmNwcAppbmRleCBmNjFlMjhlMGVjNTAzMDEyYjM3MmZiMjU1NjlhOGNiN2RkNTNh
YTcwLi43MTU3ZTE2ODYwZjQ5YzkxZGRhMzViYmM0ZWFmZTk4MTllYWNiZTZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAK
QEAgLTI5Myw3ICsyOTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBT
Y3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdChMYXllclJlcHJlc2VudGF0aQogICAgIH0KIAogICAg
IC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVzIGFuZCByZXNldHMgdGhlIGN1cnJlbnQgc3RhdGUgdHJl
ZSwgYnV0IGxlYXZlcyB0aGUgdHJlZSBzdHJ1Y3R1cmUgaW50YWN0LgotICAgIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRyZWVTdGF0ZUNsb25lID0gc3RkOjptYWtlX3VuaXF1
ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0
YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4o
KTsKICAgICB0cmVlU3RhdGVDbG9uZS0+c2V0UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbihw
cmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKTsKIAogICAgIGlmIChtX3Jvb3RTdGF0ZU5vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9k
ZS5jcHAKaW5kZXggZWE3NGUyY2E0MjQyOWE4ZTJiZTlmOWEzNzllMzY3ZGE0ZGRkYTNkMS4uNzI5
NjE1YTY5ZjAxMjI2MzE1MTQ3ZWNmZGI1NTI4YjAxOTlmMzg2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5n
VHJlZU5vZGU+JiYgY2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMpOwog
CiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hp
bGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsK
ICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RGTW92ZShjaGlsZE5vZGUpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KaW5kZXggMWM3YWI3NmExNTFlNjM1MGQ4YjYx
NGMzNmQwNWJjZTY1YzZjOTU4NC4uYjQzZWE5OTVmYWY2YjQ3MDMzNWZiZjA3YTIwODZhNmIzNWY3
MGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0zNiw3ICsz
Niw3IEBAIHN0YXRpYyBib29sIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbiA9IHRydWU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRT
aXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9y
dFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxW
ZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0
Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCmluZGV4IDcxZTQzZDNmM2I5NDYxMDYwOGNiZjEx
ZGI1MTE1YmNiZWMwNTQ4OTAuLjA4OGRmNTQzZTA0NzkxMTdjODM3YWZlMjIzYmJjYzU1MTQ4OGE3
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1BVTW9uaXRvciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgRXhjZWVkZWRDUFVMaW1pdEhhbmRs
ZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoZG91YmxlKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgQ1BV
TW9uaXRvcihTZWNvbmRzIGNoZWNrSW50ZXJ2YWwsIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKaW5kZXggZTYwZjc3MTNmNjJiYjI1
NjJhODQyODg4YzdmYzYyOWYyYzU0N2YzMy4uNmIyODhlMWUxN2U0NDhiYjg2ZmI5ZWNlMjljYzll
NWJkYjlkZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCkBAIC00Miw2
ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVNb25pdG9yIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEZpbGVD
aGFuZ2VUeXBlIHsgTW9kaWZpY2F0aW9uLCBSZW1vdmFsIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGguY3BwCmluZGV4IDRmZjk4MDRlYWVjMTMwNmIyNjhhMjQ1ZjI3NzFhMTEyZTI4ZDJhMWUu
LjNmYzQzMWE0NzQ2MWQ4YzQ0M2RiNGI2MjJkNmVhOTA2MzRkYTBmMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoLmNwcApAQCAtMjg4LDkgKzI4OCw5IEBAIExlbmd0aCBjb252ZXJ0VG8xMDBQ
ZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgLy8gVHVybiB0aGlz
IGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Ro
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNl
bnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxj
RXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRv
cjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2Fs
Y0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51
bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7
CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1v
dmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgo
Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9
CiAKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgTGVuZ3RoIGJsZW5kTWl4ZWRUeXBlcyhjb25z
dCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncgogICAgIGlmIChw
cm9ncmVzcyA+PSAxLjApCiAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgCi0gICAgYXV0byBi
bGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aD4oZnJvbSwg
dG8sIHByb2dyZXNzKTsKKyAgICBhdXRvIGJsZW5kID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lv
bkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3MpOwogICAgIHJldHVybiBMZW5ndGgoQ2Fs
Y3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBWYWx1ZVJhbmdlQWxsKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIu
Y3BwCmluZGV4IDU1MmIxMmY2YzFlOGNkYTZmZmVhNjQ3ODY5MjIyOWVhOTNlZDE3Y2EuLjhlMzVl
MzA0YzFlNzI1N2JjNjRjNmFkMTBlZGRlOTY0MjA0ZTY1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcApAQCAtMzEsNyArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgKCFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oTUFDKSkgfHwgIUhBVkUoTUVESUFfUExBWUVSKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29t
bWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCmluZGV4IDJlNWY2M2JjZWYyYmZkZmNmZjky
MTZkOTg2YjBmNDM2MGM2ODBiNDEuLmI3YzFkMjRlYjQ5ZTVhNTVmNjkxZjA2Y2U5ZTFkODBiMjFi
Y2NhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBAIC0z
NCw2ICszNCw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIAog
Y2xhc3MgU2Nyb2xsQW5pbWF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb24oKSB7IH07CiAgICAgdmlydHVhbCBi
b29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0
IC8qIHN0ZXAgKi8sIGZsb2F0IC8qIG11bHRpcGxpZXIgKi8pIHsgcmV0dXJuIHRydWU7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggZDkxNTRkOTM1
MWEyZjMzNjZkZGQwNWZlNjBmZGViYjljMWExZTczOC4uZjhlZGM4ODJkN2YzNjAwMmUxOTg1MTBk
ODFiOGViMzRhYTUwMDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIUVOQUJM
RShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JN
KE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCBjNjJhZDgz
NGU2YjM4MDhlMWVjZGE4YmExMzEyZDNkOTU3MDVlOTZhLi45NmQwZjMwMGIzNDE4ZTYwODIxZGEy
ZGEyYTY0MTg5YzRkZWUwYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFNjcm9sbEFuaW1hdG9yJiBTY3JvbGxhYmxlQXJl
YTo6c2Nyb2xsQW5pbWF0b3IoKSBjb25zdAogewogICAgIGlmICghbV9zY3JvbGxBbmltYXRvcikg
ewogICAgICAgICBpZiAodXNlc01vY2tTY3JvbGxBbmltYXRvcigpKSB7Ci0gICAgICAgICAgICBt
X3Njcm9sbEFuaW1hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+KGNv
bnN0X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpIHsKKyAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBtYWtlVW5pcXVlPFNjcm9s
bEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0aGlzKSwgW3RoaXNd
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIGxvZ01vY2tTY3JvbGxB
bmltYXRvck1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNl
CkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFzTGF5ZXJGb3JTY3Jv
bGxDb3JuZXIoKSBjb25zdAogU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3Jv
bGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKIHsKICAgICBpZiAoIW1fc25hcE9m
ZnNldHNJbmZvKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PigpOworICAgICAgICBtX3NuYXBPZmZz
ZXRzSW5mbyA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Pigp
OwogICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0c0luZm87CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCmluZGV4IDcyYjAwNDUxMzE0MmM4ZjRlOTVkZjIy
ODE4YzNkZGMxODBhYWVjZWQuLjBkNzRiMTZlNTkyNTk4YWI4M2IwYzhjMGViNTRiNDQ2ZGZkMzhk
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaApAQCAt
NDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIGNsYXNzIFN1
ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3VkZGVuVGVybWluYXRpb25EaXNhYmxl
cik7CiAgICAgcHVibGljOgogICAgICAgICBTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYTI4MDEw
ZWNmZTVhMzY3YWQ5ZDBiMjlhMjAwNTYzYTBmNTYxZDU2MC4uMjdhNzM2NDE2YmEwNGMwNTNjMmU3
N2RiMmM1NTgxNDQ0MGQyZjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKLSAgICA6IG1fY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlUmVx
dWVzdEluaXRpYXRvcnM+KCkpCisgICAgOiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQogICAgICwg
bV9ldmVudE5hbWVzKEV2ZW50TmFtZXM6OmNyZWF0ZSgpKQotICAgICwgbV90aHJlYWRUaW1lcnMo
c3RkOjptYWtlX3VuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCi0gICAgLCBtX3F1YWxpZmllZE5hbWVD
YWNoZShzdGQ6Om1ha2VfdW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkKKyAgICAsIG1fdGhy
ZWFkVGltZXJzKG1ha2VVbmlxdWU8VGhyZWFkVGltZXJzPigpKQorICAgICwgbV9xdWFsaWZpZWRO
YW1lQ2FjaGUobWFrZVVuaXF1ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCiAjaWZuZGVmIE5ERUJV
RwogICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKLSAgICAsIG1f
Y2FjaGVkQ29udmVydGVySUNVKHN0ZDo6bWFrZV91bmlxdWU8SUNVQ29udmVydGVyV3JhcHBlcj4o
KSkKKyAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKG1ha2VVbmlxdWU8SUNVQ29udmVydGVyV3Jh
cHBlcj4oKSkKIHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBvbgogICAgIC8vIGFueSBv
dGhlciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0aGlzIG1h
a2VzIHRoaXMgYSBjb252ZW5pZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0J1cy5jcHAKaW5kZXggMmY4OTJkNmIxOWFiYTQyMzBlOTI0Yzc2MTg3MzhmYzZjYjQ4ZjdlYy4u
ZTcwZDQ2ZDBiOWYyNDA3ZjkwODU0OGZhOGYyZTk4YzlkYTQ1NjNiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBBdWRpb0J1
czo6QXVkaW9CdXModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGxlbmd0aCwgYm9v
bCBhbGxvY2F0ZSkKICAgICBtX2NoYW5uZWxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVy
T2ZDaGFubmVscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFu
bmVsczsgKytpKSB7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8gc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hh
bm5lbD4obnVsbHB0ciwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byBjaGFubmVsID0gYWxsb2NhdGUg
PyBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IG1ha2VVbmlxdWU8QXVkaW9DaGFu
bmVsPihudWxscHRyLCBsZW5ndGgpOwogICAgICAgICBtX2NoYW5uZWxzLnVuY2hlY2tlZEFwcGVu
ZChXVEZNb3ZlKGNoYW5uZWwpKTsKICAgICB9CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIEF1
ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZsb2F0
KiBsYXN0TWl4R2FpbiwgZgogCiAgICAgaWYgKGZyYW1lc1RvRGV6aXBwZXIpIHsKICAgICAgICAg
aWYgKCFtX2RlemlwcGVyR2FpblZhbHVlcy5nZXQoKSB8fCBtX2RlemlwcGVyR2FpblZhbHVlcy0+
c2l6ZSgpIDwgZnJhbWVzVG9EZXppcHBlcikKLSAgICAgICAgICAgIG1fZGV6aXBwZXJHYWluVmFs
dWVzID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6aXBwZXIp
OworICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBtYWtlVW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4oZnJhbWVzVG9EZXppcHBlcik7CiAKICAgICAgICAgZmxvYXQqIGdhaW5WYWx1ZXMg
PSBtX2RlemlwcGVyR2FpblZhbHVlcy0+ZGF0YSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZnJhbWVzVG9EZXppcHBlcjsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9CdXMuaAppbmRleCAyMTczZGM5MzgzZTRhMzNjMWI1OTM0NzY1YTFlNWIxMDc0
NmYwM2ExLi5iYmIzZDJhY2QyMmM1NzJiYzkyM2E0OGIxZjcwYWY4NTRjMGNiMDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gQW4gQXVkaW9CdXMgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24g
b2Ygb25lIG9yIG1vcmUgQXVkaW9DaGFubmVscy4KIC8vIFRoZSBkYXRhIGxheW91dCBpcyAicGxh
bmFyIiBhcyBvcHBvc2VkIHRvICJpbnRlcmxlYXZlZCIuCiAvLyBBbiBBdWRpb0J1cyB3aXRoIG9u
ZSBjaGFubmVsIGlzIG1vbm8sIGFuIEF1ZGlvQnVzIHdpdGggdHdvIGNoYW5uZWxzIGlzIHN0ZXJl
bywgZXRjLgotY2xhc3MgQXVkaW9CdXMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVk
aW9CdXM+IHsKK2NsYXNzIEF1ZGlvQnVzIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEF1ZGlvQnVzPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9CdXMpOwogcHVi
bGljOgogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9DaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0No
YW5uZWwuaAppbmRleCBiYmMxMzU3YTNkNTNmMDU0OGY4ODc4ZTU4N2RiN2Q2ZGQxYzRmYWQ4Li43
Yjk4OTNkMzhhYzQxNzQ1MzE3NDFiNzcyNGM2ZmYyYWJkMDFkZjkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaApAQCAtMzcsNyArMzcsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvQ2hhbm5lbCByZXByZXNlbnRzIGEgYnVmZmVy
IG9mIG5vbi1pbnRlcmxlYXZlZCBmbG9hdGluZy1wb2ludCBhdWRpbyBzYW1wbGVzLgogLy8gVGhl
IFBDTSBzYW1wbGVzIGFyZSBub3JtYWxseSBhc3N1bWVkIHRvIGJlIGluIGEgbm9taW5hbCByYW5n
ZSAtMS4wIC0+ICsxLjAKLWNsYXNzIEF1ZGlvQ2hhbm5lbCB7CitjbGFzcyBBdWRpb0NoYW5uZWwg
ZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEF1ZGlvQ2hhbm5lbCk7CiBwdWJsaWM6CiAgICAgLy8gTWVtb3J5IGNhbiBiZSBleHRl
cm5hbGx5IHJlZmVyZW5jZWQsIG9yIGNhbiBiZSBpbnRlcm5hbGx5IGFsbG9jYXRlZCB3aXRoIGFu
IEF1ZGlvRmxvYXRBcnJheS4KQEAgLTU2LDcgKzU3LDcgQEAgY2xhc3MgQXVkaW9DaGFubmVsIHsK
ICAgICAgICAgLCBtX3Jhd1BvaW50ZXIoMCkKICAgICAgICAgLCBtX3NpbGVudCh0cnVlKQogICAg
IHsKLSAgICAgICAgbV9tZW1CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJh
eT4obGVuZ3RoKTsKKyAgICAgICAgbV9tZW1CdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4obGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBBICJibGFuayIgYXVkaW8gY2hhbm5lbCAt
LSBtdXN0IGNhbGwgc2V0KCkgYmVmb3JlIGl0J3MgdXNlZnVsLi4uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCmluZGV4IDc1YzlhYmQ3NDk0ZDM1ODIyZjgyYWNlN2Nj
ZDBkODU2ODYxMWQ3ZWEuLjBmNDM4ZGQ3ZDBmYTU5ZmI2NDRkNGRmNTcyZjU1OWZkNjYzMDhiZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCkBAIC0zMyw3ICsz
Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9GSUZPIHsKK2NsYXNz
IEF1ZGlvRklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgLy8gQ3JlYXRlIGEgRklGTyBsYXJnZSBlbm91Z2ggdG8gaG9sZCB8Zmlmb0xlbmd0aHwg
ZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLgogICAgIEF1ZGlv
RklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKaW5kZXggYmZiZTk4
M2E1NzVhNDU0YWFjMmIwYzNjYmU0NTc1ZWZhZjZiNzhkNy4uZDc0OGZhNDEzODczNzlkYjM5NWJl
YWU2NWY4ODJiYTI1OGU5ZmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9QdWxsRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvUHVsbEZJRk8uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAv
LyB0aGUgRklGTyB3aWxsIGFzayB0aGUgcHJvdmlkZXIgZm9yIG1vcmUgZGF0YSB3aGVuIG5lY2Vz
c2FyeSB0byBmdWxmaWxsIGEgcmVxdWVzdC4gQ29udHJhc3QgdGhpcwogLy8gd2l0aCBhICJwdXNo
IiBGSUZPLCB3aGVyZSB0aGUgc2VuZGVyIHB1c2hlcyBkYXRhIHRvIHRoZSBGSUZPIHdoaWNoIHdp
bGwgaXRzZWxmIHB1c2ggdGhlIGRhdGEgdG8KIC8vIHRoZSByZWNlaXZlciB3aGVuIHRoZSBGSUZP
IGlzIGZ1bGwuCi1jbGFzcyBBdWRpb1B1bGxGSUZPIHsKK2NsYXNzIEF1ZGlvUHVsbEZJRk8gZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIENyZWF0
ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJvdmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJl
IGxhcmdlIGVub3VnaCB0byBob2xkCiAgICAgLy8gfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRh
IG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4gVGhlIEF1ZGlvU291cmNlUHJvdmlkZXIg
d2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9S
ZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBs
ZXIuY3BwCmluZGV4IDg2OTA2YmE1MTI0NzU4NjkyYzY4M2UyYmM5MDM4MzUwMWVhYjhmZDkuLjI4
NGMwNTQ5NDMyNTkzNDRlYWNlMzI0MThhZGE5YjgzMDNkYTJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgY29uc3QgZG91YmxlIEF1ZGlvUmVzYW1wbGVyOjpNYXhSYXRlID0gOC4wOwogQXVkaW9SZXNh
bXBsZXI6OkF1ZGlvUmVzYW1wbGVyKCkKICAgICA6IG1fcmF0ZSgxLjApCiB7Ci0gICAgbV9rZXJu
ZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7
CisgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0
aGlzKSk7CiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIDAsIGZhbHNlKTsK
IH0KIApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIodW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IG1fcmF0ZSgxLjApCiB7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9rZXJu
ZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7
CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5l
bD4odGhpcykpOwogCiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9m
Q2hhbm5lbHMsIDAsIGZhbHNlKTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBdWRpb1Jlc2Ft
cGxlcjo6Y29uZmlndXJlQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICAv
LyBGaXJzdCBkZWFsIHdpdGggYWRkaW5nIG9yIHJlbW92aW5nIGtlcm5lbHMuCiAgICAgaWYgKG51
bWJlck9mQ2hhbm5lbHMgPiBjdXJyZW50U2l6ZSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBjdXJyZW50U2l6ZTsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgICAgIG1f
a2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhp
cykpOworICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1w
bGVyS2VybmVsPih0aGlzKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fa2VybmVscy5yZXNpemUo
bnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Jlc2FtcGxlci5oCmluZGV4IGQxMWZhOTNlYmFhY2JkOGU1NmI5OGRhMzM3NWZhZTE0MDY4
ZTNiYzkuLjIwMTZiYWZmN2M4OGRmMThhZjVkMzUyYzMwMWY1ZmY0Mzc2ODlmN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaApAQCAtMzcsNyAr
MzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgYXVkaW8gc3RyZWFtIG1heSBiZSBz
aW5nbGUgb3IgbXVsdGktY2hhbm5lbC4KIC8vIFRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1
bHRzIHRvIHNpbmdsZS1jaGFubmVsIChtb25vKS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXIgewor
Y2xhc3MgQXVkaW9SZXNhbXBsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVyKCk7CiAgICAgQXVkaW9SZXNhbXBsZXIodW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAppbmRleCA5OWQ4NzdiYjdjZDY4ZGJiMDUz
Njc3YTA5N2NkNGUwZWFjODNiNzgyLi44YWMyYmFhNDJjNTg3YTM0ODVkNTM0MDIzYWRlZTI0Zjg4
MzI2ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
UmVzYW1wbGVyS2VybmVsLmgKQEAgLTM0LDcgKzM0LDkgQEAgY2xhc3MgQXVkaW9SZXNhbXBsZXI7
CiAvLyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBkb2VzIHJlc2FtcGxpbmcgb24gYSBzaW5nbGUgbW9u
byBjaGFubmVsLgogLy8gSXQgdXNlcyBhIHNpbXBsZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmb3Ig
Z29vZCBwZXJmb3JtYW5jZS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgeworY2xhc3Mg
QXVkaW9SZXNhbXBsZXJLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvUmVzYW1wbGVyS2VybmVsKTsKIHB1Ymxp
YzoKICAgICBBdWRpb1Jlc2FtcGxlcktlcm5lbChBdWRpb1Jlc2FtcGxlciopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAppbmRleCA1YzFiZjJh
MzE3MzQyZWEzZTUyOTJhNzk3ZThlNjZlMWE4ZGEzOTdjLi5iNWZiNTgwNjQ4ZjljZjhlYzRmMTg2
ZmFmYTQ4ZTEzZmRjZjJmNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRy
eVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogY2xhc3Mg
QXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiB9Owog
CiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IDE3ZGE4MWIzYjc1ZDdhNWFhYjgyMTQ4NmI3YzFl
MzNmMWE4ZGY0NjkuLmU3MDA4MjJmZjFmZWViZDc4MjlhZWM3NTBjY2U0MGE2MGI5MjU2NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC00NCw3
ICs0NCw4IEBAIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdCB7CiAgICAg
TG9uZ0Zvcm1WaWRlbwogfTsKIAotY2xhc3MgQXVkaW9TZXNzaW9uIHsKK2NsYXNzIEF1ZGlvU2Vz
c2lvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgQXVkaW9TZXNzaW9uJiBzaGFyZWRTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0JpcXVhZC5oCmluZGV4IGJiNzIxYTIzYTdmY2M3NzRiNjA5M2U0ZWE5MDhjNjBlODkw
ODEwN2MuLjcxMzQ5NGM5MTRkMzM3ODY0M2UyOWE4MGJjMzllNzczNjZkZjE4MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vICAgIGxvd3Bhc3MsIGhpZ2hwYXNzLCBzaGVsdmluZywgcGFyYW1ldGVy
aWMsIG5vdGNoLCBhbGxwYXNzLCAuLi4KIAogY2xhc3MgQmlxdWFkIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBCaXF1YWQoKTsKICAgICB+Qmlx
dWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKaW5kZXggZDgxYzA1ZGM2OGU2
ZTJmYTIxZDI0NWRkMTM3YjRmMTc4YTIxMjBiNC4uYTdhY2EzYTRjNTRkMjc0YjNhYTNkNDBhZDlk
MTQzZWJkZmM0NWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Q29uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaApAQCAtMzUs
NyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbmUgZ2FpbiBpcyBkZWZpbmVk
IGFjY29yZGluZyB0byB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24KIAotY2xhc3MgQ29uZUVmZmVj
dCB7CitjbGFzcyBDb25lRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBDb25lRWZmZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAppbmRleCA2ZTlmNGUwMWRhZTZkNDVkMDIx
MTFkNWQ1YjEyOGVmMzg4NmIyMjQyLi5lMGIzZWZkODBmNzhmZmFhMzA2NTczMzIzMTQ3MDJkYzcz
YTJmMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1h
bERpc2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxE
aXNhYmxlci5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgog
CiAjaWZkZWYgSEFWRV9ERU5PUk1BTAotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBE
ZW5vcm1hbERpc2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBEZW5vcm1hbERpc2FibGVyKCkKICAgICAgICAgICAgIDogbV9zYXZlZENTUigw
KQpAQCAtMTAzLDcgKzEwNCw4IEBAIGNsYXNzIERlbm9ybWFsRGlzYWJsZXIgewogCiAjZWxzZQog
Ly8gRklYTUU6IGFkZCBpbXBsZW1lbnRhdGlvbnMgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMgYW5k
IGNvbXBpbGVycwotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBEZW5vcm1hbERpc2Fi
bGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBE
ZW5vcm1hbERpc2FibGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRGlyZWN0Q29udm9sdmVyLmgKaW5kZXggNmYyZmFmNDBlNjFiZjZlMzJhNGY0OTk5NzY1Yzll
MWJiNTE5NDFhOC4uNWM4ZDg2NmMxNjU1Y2MzOTFhODI1ZDNiMjM3ODhiZjQwYzc4OWEzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKQEAg
LTMwLDEwICszMCwxMyBAQAogI2RlZmluZSBEaXJlY3RDb252b2x2ZXJfaAogCiAjaW5jbHVkZSAi
QXVkaW9BcnJheS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIERpcmVjdENvbnZvbHZlciB7CitjbGFzcyBEaXJlY3RDb252b2x2
ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKERpcmVjdENvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRGlyZWN0
Q29udm9sdmVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EaXN0YW5jZS5oCmluZGV4IDkxZDM0OWI5N2U2Mjc3MzMyZDc2MzFhODg0NDI2YjE2
NjhkY2YyODMuLmIzZWI3Nzk3M2NmYTQ3OTVmMTUwNTM2OWI3ZTRiMmY4OWZmYjZjNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaApAQCAtNDAsNyArNDAsOCBAQCBl
bnVtIGNsYXNzIERpc3RhbmNlTW9kZWxUeXBlIHsKICAgICBFeHBvbmVudGlhbAogfTsKIAotY2xh
c3MgRGlzdGFuY2VFZmZlY3QgeworY2xhc3MgRGlzdGFuY2VFZmZlY3QgZmluYWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERpc3RhbmNlRWZmZWN0KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oCmluZGV4IGY0YjQy
MDE3ZWU3NjI3Y2FkNjU2YmZmNDU3YWFlOTg5NDgwMTRiZjIuLjk1NzBiODkxYzk3ZmZhOTExYTAx
MTM0MDAzYjRmZGNiNWY3NmY5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0Rvd25TYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RG93blNhbXBsZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IERvd25TYW1wbGVyIGRvd24tc2FtcGxlcyB0aGUgc291cmNlIHN0cmVhbSBieSBhIGZhY3RvciBv
ZiAyeC4KIAotY2xhc3MgRG93blNhbXBsZXIgeworY2xhc3MgRG93blNhbXBsZXIgZmluYWwgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IERvd25T
YW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAppbmRleCBiMjU1MThkODgwYThk
MmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViLi41MTM3OTlhODUxMmY0MjdiNGU0YjhkOWIyOTQ1
YTk0ZDM0OTE4Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAgLTI3MSw4ICsyNzEsOCBAQCB2b2lkIER5bmFtaWNz
Q29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
KQogICAgIG1fcHJlRmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5j
bGVhcigpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyAr
K2kpIHsKLSAgICAgICAgbV9wcmVGaWx0ZXJQYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxa
ZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKLSAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7CisgICAgICAgIG1fcHJl
RmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7Cisg
ICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFplcm9Qb2xlRmlsdGVy
UGFjazQ+KCkpOwogICAgIH0KIAogICAgIG1fc291cmNlQ2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJy
YXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKaW5kZXggZWY4YzA5M2ExYjk2
NTMyMjlkNzk5ZjFhNmIyOTJhZmFkYmRhYmFkMS4uODIyYzkzMWYzOGNlMGVjOGRjNjI4MmYwZjhj
MzQzYWY2NzdmOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTQzLDggKzQzLDkgQEAgY2xhc3MgQXVkaW9CdXM7CiAv
LyBvZiB0aGUgbG91ZGVzdCBwYXJ0cyBvZiB0aGUgc2lnbmFsIGFuZCByYWlzZXMgdGhlIHZvbHVt
ZSBvZiB0aGUgc29mdGVzdCBwYXJ0cywKIC8vIG1ha2luZyB0aGUgc291bmQgcmljaGVyLCBmdWxs
ZXIsIGFuZCBtb3JlIGNvbnRyb2xsZWQuCiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3NvciB7Citj
bGFzcyBEeW5hbWljc0NvbXByZXNzb3IgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKER5bmFtaWNzQ29tcHJlc3Nvcik7CiBwdWJs
aWM6CiAgICAgZW51bSB7CiAgICAgICAgIFBhcmFtVGhyZXNob2xkLApAQCAtOTUsOSArOTYsMTAg
QEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yIHsKICAgICBmbG9hdCBtX2xhc3RBbmNob3I7CiAg
ICAgZmxvYXQgbV9sYXN0RmlsdGVyU3RhZ2VHYWluOwogCi0gICAgdHlwZWRlZiBzdHJ1Y3Qgewor
ICAgIHN0cnVjdCBaZXJvUG9sZUZpbHRlclBhY2s0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBaZXJvUG9sZSBmaWx0ZXJzWzRdOwotICAgIH0gWmVy
b1BvbGVGaWx0ZXJQYWNrNDsKKyAgICB9OwogCiAgICAgLy8gUGVyLWNoYW5uZWwgZW1waGFzaXMg
ZmlsdGVycy4KICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Qb2xlRmlsdGVyUGFjazQ+
PiBtX3ByZUZpbHRlclBhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKaW5kZXggNzM0YjA2NmNkYTQ4
YmMyYzdhNzllZGY1MDdkMDZjMDU2YzcwYTA5MC4uYWZlZGI3YjRjZDBhNWE2MWQxYTlmZTI3OGMz
NDAzODNmOThlMjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZv
aWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMpCiAKICAgICBtX3ByZURlbGF5QnVmZmVycy5jbGVhcigpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAg
IG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJh
eT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKKyAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBwZW5k
KG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihNYXhQcmVEZWxheUZyYW1lcykpOwogfQogCiB2
b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0UHJlRGVsYXlUaW1lKGZsb2F0IHByZURl
bGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yS2VybmVsLmgKaW5kZXggYjdiY2VhMmZhZmQ4OTk2Y2E1MjhiMGI1ZGFi
NDljYjg4OTU4ZGNjNC4uZTExZjQ3YmFhZjBiYzZjNWQwY2E3ZTNkNzIwMDgyNjM5ZDI3MGMwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmgKQEAgLTM1LDcgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwgeworY2xhc3MgRHluYW1pY3NDb21w
cmVzc29yS2VybmVsIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwoZmxvYXQgc2FtcGxlUmF0
ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAppbmRleCA4Y2Y1OTkxNzk1ZjNmMWY2M2Uy
ODFkOWUxNmFjYWYzZDdhNTdhNWRhLi40ZTQ2M2IxMjgxYTdmYTNiYjM5N2E2YjA2NWNlMDMzY2Ni
ZjlhZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBv
d2VyUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dl
clBhbm5lci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ29t
bW9uIHR5cGUgb2Ygc3RlcmVvIHBhbm5lciBhcyBmb3VuZCBpbiBub3JtYWwgYXVkaW8gbWl4aW5n
IGVxdWlwbWVudC4KIAotY2xhc3MgRXF1YWxQb3dlclBhbm5lciA6IHB1YmxpYyBQYW5uZXIgewor
Y2xhc3MgRXF1YWxQb3dlclBhbm5lciBmaW5hbCA6IHB1YmxpYyBQYW5uZXIgewogcHVibGljOgog
ICAgIGV4cGxpY2l0IEVxdWFsUG93ZXJQYW5uZXIoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKaW5kZXggNDU0MmI2ZmIy
NTc4NTQ5NWFiMjA2YWJjM2M5MGM3NWJjMmYxNmVhMC4uMzg2MjI3ZjE5NzA0YWZkNzkyZTM2NjIy
YmRkYTljMWFjZWE3NTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZUQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
Q29udm9sdmVyLmgKQEAgLTM0LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBGRlRDb252b2x2ZXIgeworY2xhc3MgRkZUQ29udm9sdmVyIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGRlRDb252b2x2
ZXIpOwogcHVibGljOgogICAgIC8vIGZmdFNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3bwogICAg
IEZGVENvbnZvbHZlcihzaXplX3QgZmZ0U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRGcmFtZS5jcHAKaW5kZXggNGMwMmI2OTkyYjA2MzgzYjgwMzU3Mzc4NzhkYmY2NWEy
NmZiOWMzMS4uNGMxNTIwNjdkNDRhYzRiODU0MTkyMWFhZWQyOTU5ODJiOTY5Mzc4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcApAQCAtNTQsNyArNTQsNyBA
QCB2b2lkIEZGVEZyYW1lOjpkb1BhZGRlZEZGVChjb25zdCBmbG9hdCogZGF0YSwgc2l6ZV90IGRh
dGFTaXplKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RkZURnJhbWU+IEZGVEZyYW1lOjpjcmVhdGVJbnRl
cnBvbGF0ZWRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUxLCBjb25zdCBGRlRGcmFtZSYgZnJh
bWUyLCBkb3VibGUgeCkKIHsKLSAgICBhdXRvIG5ld0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxG
RlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CisgICAgYXV0byBuZXdGcmFtZSA9IG1ha2VVbmlx
dWU8RkZURnJhbWU+KGZyYW1lMS5mZnRTaXplKCkpOwogCiAgICAgbmV3RnJhbWUtPmludGVycG9s
YXRlRnJlcXVlbmN5Q29tcG9uZW50cyhmcmFtZTEsIGZyYW1lMiwgeCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgKaW5kZXggNzU3YmNmYTRiNmFlZmQ3
MGViYWU4NjU0ODcyNWZhNDA2MjljNmU5ZS4uYTUxOTM0OTgxNTA0NTI2ZDZmYzY0ZDQ1Yjk3OTBi
Mzc4MTAzYTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIUlRG
S2VybmVsOwogCi1jbGFzcyBIUlRGRGF0YWJhc2UgeworY2xhc3MgSFJURkRhdGFiYXNlIGZpbmFs
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShIUlRGRGF0YWJhc2UpOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKaW5kZXggZjQ1YmU4NDdjZTcxMGRjZWRh
MmUwZWMxMDZiNzViZjI2ODU3ODljZC4uYTQ3NGE3MGM0MDg1MmFlMmUxZjlmNThhNDlhMDAwMzYx
NTgwYjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSFJURkRhdGFiYXNlTG9h
ZGVyOjpsb2FkKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1faHJ0
ZkRhdGFiYXNlLmdldCgpKSB7CiAgICAgICAgIC8vIExvYWQgdGhlIGRlZmF1bHQgSFJURiBkYXRh
YmFzZS4KLSAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZEYXRh
YmFzZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUpOworICAgICAgICBtX2hydGZEYXRhYmFzZSA9IG1h
a2VVbmlxdWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmlu
ZGV4IGM4NGFiOTc1MWExNDU5ODlhMDM3N2ZhZDFmNGE3NWU4ZjE3ZTJiMjQuLjYwNTIzMmNkMWE5
OWM5MjMzZDlhZDEwNDliYTMwN2UyMTc3MzhmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0yNDQsOCArMjQ0LDggQEAgc3RkOjp1
bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3Qo
Y29uc3QgU3RyaW5nJiBzdWIKICAgICBpZiAoIWlzRWxldmF0aW9uR29vZCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAgIGF1dG8g
a2VybmVsTGlzdFIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRv
dGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhSVEZLZXJu
ZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIgPSBt
YWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAgICAg
Ly8gTG9hZCBjb252b2x1dGlvbiBrZXJuZWxzIGZyb20gSFJURiBmaWxlcy4KICAgICBpbnQgaW50
ZXJwb2xhdGVkSW5kZXggPSAwOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxI
UlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmlu
ZyYgc3ViCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlz
dFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhSVEZF
bGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgZWxl
dmF0aW9uLCBzYW1wbGVSYXRlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+
IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxldmF0aW9u
KiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjIsIGZsb2F0IHgs
IGZsb2F0IHNhbXBsZVJhdGUpCkBAIC0yODUsOCArMjg1LDggQEAgc3RkOjp1bmlxdWVfcHRyPEhS
VEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhI
UlRGRWwKICAgICAgICAgCiAgICAgQVNTRVJUKHggPj0gMC4wICYmIHggPCAxLjApOwogICAgIAot
ICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihO
dW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAgIGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8g
a2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXpp
bXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0
PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5lbExp
c3RMMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0TCgpOwogICAgIEhSVEZLZXJuZWxMaXN0
KiBrZXJuZWxMaXN0UjEgPSBocnRmRWxldmF0aW9uMS0+a2VybmVsTGlzdFIoKTsKQEAgLTMwMiw3
ICszMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6
Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbAogICAgIC8vIEludGVycG9sYXRlIGVs
ZXZhdGlvbiBhbmdsZS4KICAgICBkb3VibGUgYW5nbGUgPSAoMS4wIC0geCkgKiBocnRmRWxldmF0
aW9uMS0+ZWxldmF0aW9uQW5nbGUoKSArIHggKiBocnRmRWxldmF0aW9uMi0+ZWxldmF0aW9uQW5n
bGUoKTsKICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9uPihX
VEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIHN0YXRpY19jYXN0PGlu
dD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRGRWxldmF0
aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIHN0YXRpY19j
YXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBIUlRGRWxldmF0aW9uOjpn
ZXRLZXJuZWxzRnJvbUF6aW11dGgoZG91YmxlIGF6aW11dGhCbGVuZCwgdW5zaWduZWQgYXppbXV0
aEluZGV4LCBIUlRGS2VybmVsKiAma2VybmVsTCwgSFJURktlcm5lbCogJmtlcm5lbFIsIGRvdWJs
ZSYgZnJhbWVEZWxheUwsIGRvdWJsZSYgZnJhbWVEZWxheVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKaW5kZXggMmE5NTkwNDU1MjE4NDNhMTUxNjJl
Y2M4ZTMyMTE3MzllMDcwNTNmNy4uZWY3NTJjM2MwMWJlMzllY2RiN2VmNjRkZjQzOTA5MjY2ZDZl
ZDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24u
aApAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEhSVEZFbGV2YXRp
b24gY29udGFpbnMgYWxsIG9mIHRoZSBIUlRGS2VybmVscyAob25lIGxlZnQgZWFyIGFuZCBvbmUg
cmlnaHQgZWFyIHBlciBhemltdXRoIGFuZ2xlKSBmb3IgYSBwYXJ0aWN1bGFyIGVsZXZhdGlvbi4K
IAotY2xhc3MgSFJURkVsZXZhdGlvbiB7CitjbGFzcyBIUlRGRWxldmF0aW9uIGZpbmFsIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIUlRG
RWxldmF0aW9uKTsKIHB1YmxpYzoKICAgICBIUlRGRWxldmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxI
UlRGS2VybmVsTGlzdD4ga2VybmVsTGlzdEwsIHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2VybmVsTGlz
dD4ga2VybmVsTGlzdFIsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCmluZGV4IGVkZjZjNjBkMGRi
ODE0ZDk0YzBmNzFiNjMwNmU0MzgyNjUzYWE0YzcuLjM3NTUyMTZhZTI4N2E3MWM3NDI5MjlhNTNj
OTU5MDk2ZGIxZGJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZL
ZXJuZWwuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEhSVEZLZXJuZWw6OkhSVEZLZXJuZWwoQXVkaW9D
aGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAg
ICAgfQogICAgIH0KIAotICAgIG1fZmZ0RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1l
PihmZnRTaXplKTsKKyAgICBtX2ZmdEZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6
ZSk7CiAgICAgbV9mZnRGcmFtZS0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNlLCB0cnVuY2F0
ZWRSZXNwb25zZUxlbmd0aCk7CiB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzaXplX3QgSFJURktl
cm5lbDo6ZmZ0U2l6ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0NoYW5uZWw+IEhS
VEZLZXJuZWw6OmNyZWF0ZUltcHVsc2VSZXNwb25zZSgpCiB7Ci0gICAgYXV0byBjaGFubmVsID0g
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CisgICAgYXV0byBjaGFu
bmVsID0gbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CiAgICAgRkZURnJhbWUg
ZmZ0RnJhbWUoKm1fZmZ0RnJhbWUpOwogCiAgICAgLy8gQWRkIGxlYWRpbmcgZGVsYXkgYmFjayBp
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAppbmRleCBiZjVl
ZWZhYTVlNGM2ZDJiZjE3YTk5MDAzMDc0MTY1YzZlNDMzYWQ3Li5jYWFhNDQxZjFkMTRlYTM2ZjVl
OTY4YWQ4YTc3ZDBiN2E2MGRkOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURlBhbm5lci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgSFJURlBhbm5lciA6IHB1YmxpYyBQYW5uZXIgeworY2xhc3MgSFJURlBhbm5lciBmaW5h
bCA6IHB1YmxpYyBQYW5uZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEhSVEZQYW5uZXIoZmxv
YXQgc2FtcGxlUmF0ZSwgSFJURkRhdGFiYXNlTG9hZGVyKik7CiAgICAgdmlydHVhbCB+SFJURlBh
bm5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlD
aGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRp
Q2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXggYmJiZjE2NDQ2MjA3NjM5ZTM1Y2Y3OTU2NDgyODI2
M2QzZTkzNzNhZS4uNWJmOWFiOTVkMDE1NzUwMDgxNWQ2MTMxYWIxZDg5NzQxYmUxZmUyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1w
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxS
ZXNhbXBsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6TXVs
dGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVyCiB7
CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAgICBmb3IgKHVuc2ln
bmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsr
Y2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFwcGVuZCht
YWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yKSk7CiB9CiAKIHZvaWQgTXVsdGlD
aGFubmVsUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyLCBB
dWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCmlu
ZGV4IDQ0MTc1NDc2MDU4M2QyODAzNGE0NWIzYmQ4YTYxODhkNDY1YTJmMzYuLjYxNDZlOTI1YzA2
YTJkZGE3NmNiNDEyZjBjYzFlMGEyNDZhYzgwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CiAgICAgCi1jbGFzcyBN
dWx0aUNoYW5uZWxSZXNhbXBsZXIgeworY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGZpbmFs
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBleHBsaWNp
dCBNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1Bhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCmlu
ZGV4IGFjNzI4NmFjOWEwNjBiNzUzNGNiMmVkZTkyMWQ2Y2JkNzdhOTdhODguLjQwYjlkMDFkYzE4
NGI5NmQ1ZGYzYWI5YjdmNDA5NDYzYTk3ODM0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUGFubmVyLmNwcApAQCAtNDMsMTEgKzQzLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYW5u
ZXI+IFBhbm5lcjo6Y3JlYXRlKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwsIGZsb2F0IHNhbXBsZVJh
dGUsCiAKICAgICBzd2l0Y2ggKG1vZGVsKSB7CiAgICAgY2FzZSBQYW5uaW5nTW9kZWxUeXBlOjpF
cXVhbHBvd2VyOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVxdWFsUG93ZXJQ
YW5uZXI+KHNhbXBsZVJhdGUpOworICAgICAgICBwYW5uZXIgPSBtYWtlVW5pcXVlPEVxdWFsUG93
ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgUGFubmlu
Z01vZGVsVHlwZTo6SFJURjoKLSAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRG
UGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRlcik7CisgICAgICAgIHBhbm5lciA9IG1h
a2VVbmlxdWU8SFJURlBhbm5lcj4oc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybUF1ZGlvRGF0YS5oCmluZGV4IGNkYTcyZThhYjNjNGNkYzBhODY4ZmFhYzRmMDVjZTYx
YzQ0NDAyZDAuLjQ2MzVhNjczM2VjYzNmM2EwNzUwMmZjN2E3NTAxNzNlMzNlMTFmMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaApA
QCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9ybUF1
ZGlvRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UGxhdGZvcm1BdWRpb0RhdGEoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRleCBl
MDIzOTRhYTViMTQ5Y2QxNTk2OTEyYTI1NjgxZmY1ZWE0NGFkOGQyLi5jOGJkNjRhNDFiZjYxMmU4
OWUzYzIxNGZhMjJkY2M1OTk0OGU1NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0xMDksNyArMTA5LDcg
QEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVk
aWFTZXNzaW9uPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNz
aW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1NZWRpYVNlc3Npb24+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1N
ZWRpYVNlc3Npb24+KGNsaWVudCk7CiB9CiAKIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKaW5kZXggMzA0M2ZjOGEwNGRmMGQ3N2Mx
MGFhMDM3OWJkMjZhMzlkNDZjZTZiYS4uOGE2NzU1YzU0YWQwMGEzYTgxMDE4NzQyMTYyY2NkMDc0
ZGUxMGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCkBAIC0x
MTcsNyArMTE3LDcgQEAgdm9pZCBSZXZlcmI6OmluaXRpYWxpemUoQXVkaW9CdXMqIGltcHVsc2VS
ZXNwb25zZUJ1ZmZlciwgc2l6ZV90IHJlbmRlclNsaWNlU2l6ZSwKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bVJlc3BvbnNlQ2hhbm5lbHM7ICsraSkgewogICAgICAgICBBdWRpb0NoYW5u
ZWwqIGNoYW5uZWwgPSBpbXB1bHNlUmVzcG9uc2VCdWZmZXItPmNoYW5uZWwoaSk7CiAKLSAgICAg
ICAgbV9jb252b2x2ZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYkNvbnZvbHZlcj4o
Y2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBtYXhGRlRTaXplLCBjb252b2x2ZXJSZW5kZXJQaGFz
ZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsKKyAgICAgICAgbV9jb252b2x2ZXJzLmFwcGVuZCht
YWtlVW5pcXVlPFJldmVyYkNvbnZvbHZlcj4oY2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBtYXhG
RlRTaXplLCBjb252b2x2ZXJSZW5kZXJQaGFzZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsKIAog
ICAgICAgICBjb252b2x2ZXJSZW5kZXJQaGFzZSArPSByZW5kZXJTbGljZVNpemU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaAppbmRleCAzZTI1NzZiMzU3NTdkYmEy
NDcwYzhlYjdkYTNjMTdiZWViYmZkY2VkLi4yMzRlMzFkYWViYmQ0ZGRhYTM2YTFlOTA1MzExZWI5
OTIyZmFhNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaApAQCAtMzgs
NyArMzgsNyBAQCBjbGFzcyBBdWRpb0J1czsKICAgICAKIC8vIE11bHRpLWNoYW5uZWwgY29udm9s
dXRpb24gcmV2ZXJiIHdpdGggY2hhbm5lbCBtYXRyaXhpbmcgLSBvbmUgb3IgbW9yZSBSZXZlcmJD
b252b2x2ZXIgb2JqZWN0cyBhcmUgdXNlZCBpbnRlcm5hbGx5LgogCi1jbGFzcyBSZXZlcmIgewor
Y2xhc3MgUmV2ZXJiIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBlbnVtIHsgTWF4RnJhbWVTaXplID0gMjU2IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCmluZGV4
IDUxMmI2YWRlMzQxYTI4NTY5NzJlZTNmN2JjYjIxMTY2YmI3MjFhMWYuLmE2MjgzNWY5YzBkN2Q3
NDNjOWU5MjdjZWRlMmQ2YTFkYTQ1NTg0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCkBAIC0zNiw3ICsz
Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciBp
cyBhIGNpcmN1bGFyIGRlbGF5IGJ1ZmZlciB3aXRoIG9uZSBjbGllbnQgcmVhZGluZyBmcm9tIGl0
IGFuZCBtdWx0aXBsZSBjbGllbnRzCiAvLyB3cml0aW5nL2FjY3VtdWxhdGluZyB0byBpdCBhdCBk
aWZmZXJlbnQgZGVsYXkgb2Zmc2V0cyBmcm9tIHRoZSByZWFkIHBvc2l0aW9uLiAgVGhlIHJlYWQg
b3BlcmF0aW9uIHdpbGwgemVybyB0aGUgbWVtb3J5CiAvLyBqdXN0IHJlYWQgZnJvbSB0aGUgYnVm
ZmVyLCBzbyBpdCB3aWxsIGJlIHJlYWR5IGZvciBhY2N1bXVsYXRpb24gdGhlIG5leHQgdGltZSBh
cm91bmQuCi1jbGFzcyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgeworY2xhc3MgUmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIoc2l6ZV90IGxlbmd0
aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwCmluZGV4IDE0NWRmODFlMmE2YmEyYzJkYWE5YmI0MWU2YjVjYWJhZjM4NWY5MWMuLmE5
YzkzNWMxYTI4NWFiMTM2MmQ4ZmYxZGY4Y2ViYTVhN2U1YWE3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApAQCAtOTQsNyArOTQs
NyBAQCBSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcihBdWRpb0NoYW5uZWwqIGltcHVs
c2VSZXNwb25zZSwgc2l6ZV90IHJlbmRlclNsaQogCiAgICAgICAgIGJvb2wgdXNlRGlyZWN0Q29u
dm9sdmVyID0gIXN0YWdlT2Zmc2V0OwogCi0gICAgICAgIGF1dG8gc3RhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90YWxSZXNwb25zZUxlbmd0
aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VTaXplLCBmZnRTaXplLCBy
ZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRpb25CdWZmZXIsIHVzZURp
cmVjdENvbnZvbHZlcik7CisgICAgICAgIGF1dG8gc3RhZ2UgPSBtYWtlVW5pcXVlPFJldmVyYkNv
bnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90YWxSZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90YWxM
YXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VTaXplLCBmZnRTaXplLCByZW5kZXJQaGFzZSwgcmVu
ZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRpb25CdWZmZXIsIHVzZURpcmVjdENvbnZvbHZlcik7
CiAKICAgICAgICAgYm9vbCBpc0JhY2tncm91bmRTdGFnZSA9IGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCmluZGV4IDViODE5ZTFh
M2U2ZjRmYjFmOGRiMGM1OTY5NzI2MmFhYzA5YzZiZGUuLjMyMDBiNDVlYThkZjdjMjFjZTZmYTM3
ZTA4YmIyNzkxZjhhZTVmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlci5oCkBAIC00Myw4ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQXVkaW9DaGFubmVsOwogCi1jbGFzcyBSZXZlcmJDb252b2x2ZXIgeworY2xhc3Mg
UmV2ZXJiQ29udm9sdmVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXZlcmJDb252b2x2ZXIpOwogcHVibGljOgogICAgIC8v
IG1heEZGVFNpemUgY2FuIGJlIGFkanVzdGVkIChmcm9tIHNheSAyMDQ4IHRvIDMyNzY4KSBkZXBl
bmRpbmcgb24gaG93IG11Y2ggcHJlY2lzaW9uIGlzIG5lY2Vzc2FyeS4KICAgICAvLyBGb3IgY2Vy
dGFpbiB0d2Vha3kgZGUtY29udm9sdmluZyBhcHBsaWNhdGlvbnMgdGhlIHBoYXNlIGVycm9ycyBh
ZGQgdXAgcXVpY2tseSBhbmQgbGVhZCB0byBub24tc2Vuc2ljYWwgcmVzdWx0cyB3aXRoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFn
ZS5jcHAKaW5kZXggMGZkZTQyMWFmMmY4MmZkNDg3NGQ5NGY2YWYxZDYzNDcyMzljNjU2ZS4uNGZm
OTUzYjI2MDQ5MTdkMzQ1MjAzOTQwNWI2NWRlMmJkNWExZWFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcApAQCAt
NTUsMTYgKzU1LDE2IEBAIFJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFn
ZShjb25zdCBmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QsCiAgICAgQVNTRVJUKGFjY3Vt
dWxhdGlvbkJ1ZmZlcik7CiAKICAgICBpZiAoIW1fZGlyZWN0TW9kZSkgewotICAgICAgICBtX2Zm
dEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOworICAgICAgICBt
X2ZmdEtlcm5lbCA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOwogICAgICAgICBtX2Zm
dEtlcm5lbC0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNlICsgc3RhZ2VPZmZzZXQsIHN0YWdl
TGVuZ3RoKTsKLSAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVENv
bnZvbHZlcj4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0Q29udm9sdmVyID0gbWFrZVVuaXF1ZTxG
RlRDb252b2x2ZXI+KGZmdFNpemUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghc3Rh
Z2VPZmZzZXQpOwogICAgICAgICBBU1NFUlQoc3RhZ2VMZW5ndGggPD0gZmZ0U2l6ZSAvIDIpOwog
Ci0gICAgICAgIG1fZGlyZWN0S2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJy
YXk+KGZmdFNpemUgLyAyKTsKKyAgICAgICAgbV9kaXJlY3RLZXJuZWwgPSBtYWtlVW5pcXVlPEF1
ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIpOwogICAgICAgICBtX2RpcmVjdEtlcm5lbC0+Y29w
eVRvUmFuZ2UoaW1wdWxzZVJlc3BvbnNlLCAwLCBzdGFnZUxlbmd0aCk7Ci0gICAgICAgIG1fZGly
ZWN0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXJlY3RDb252b2x2ZXI+KHJlbmRlclNs
aWNlU2l6ZSk7CisgICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0gbWFrZVVuaXF1ZTxEaXJlY3RD
b252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CiAgICAgfQogICAgIG1fdGVtcG9yYXJ5QnVmZmVy
LmFsbG9jYXRlKHJlbmRlclNsaWNlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCmluZGV4IGEwNDkwOTcwMzQwYWIz
YjMzNjAwYjA4OWU1OTg0NzRmYjNkNDU1ZTYuLjNjMDNiZTM0MWIzYjdkNjQ2MjFkYzgwMzgxNjY5
MzYwZjRkYjRjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlclN0YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiQ29udm9sdmVyU3RhZ2UuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBEaXJlY3RDb252
b2x2ZXI7CiAgICAgCiAvLyBBIFJldmVyYkNvbnZvbHZlclN0YWdlIHJlcHJlc2VudHMgdGhlIGNv
bnZvbHV0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIHN1Yi1zZWN0aW9uIG9mIGEgbGFyZ2UgaW1wdWxz
ZSByZXNwb25zZS4KIC8vIEl0IGluY29ycG9yYXRlcyBhIGRlbGF5IGxpbmUgdG8gYWNjb3VudCBm
b3IgdGhlIG9mZnNldCBvZiB0aGUgc3ViLXNlY3Rpb24gd2l0aGluIHRoZSBsYXJnZXIgaW1wdWxz
ZSByZXNwb25zZS4KLWNsYXNzIFJldmVyYkNvbnZvbHZlclN0YWdlIHsKK2NsYXNzIFJldmVyYkNv
bnZvbHZlclN0YWdlIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICAvLyByZW5kZXJQaGFzZSBpcyB1c2VmdWwgdG8ga25vdyBzbyB0aGF0IHdlIGNhbiBt
YW5pcHVsYXRlIHRoZSBwcmUgdmVyc3VzIHBvc3QgZGVsYXkgc28gdGhhdCBzdGFnZXMgd2lsbCBw
ZXJmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJ
bnB1dEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRC
dWZmZXIuaAppbmRleCBiYjA2ZTRlZWQ2MzNmMGU3YzY4MmUyMGU0ZTZhNTcyYWExZmFhOTY2Li5h
ZjllZDAwZDczM2U4NDJiNmVkM2E2NDc0ODU0MjBkM2M3Njc3NTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKQEAgLTM0LDcgKzM0
LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gUmV2ZXJiSW5wdXRCdWZmZXIgaXMgdXNl
ZCB0byBidWZmZXIgaW5wdXQgc2FtcGxlcyBmb3IgZGVmZXJyZWQgcHJvY2Vzc2luZyBieSB0aGUg
YmFja2dyb3VuZCB0aHJlYWRzLgotY2xhc3MgUmV2ZXJiSW5wdXRCdWZmZXIgeworY2xhc3MgUmV2
ZXJiSW5wdXRCdWZmZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFJldmVyYklucHV0QnVmZmVyKHNpemVfdCBsZW5ndGgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKaW5kZXggMmZj
ZDg5ZjdlY2EzNzU4NTg2MzFhOWIyNzY1YTEwZDIwMWIzNDFjNy4uYzEzMmY1ZDk3NjJjNzU2NmIy
MzI1YzA2NGIyOGRlOGI2ZTM5MDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1NpbmNSZXNhbXBsZXIuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIFNpbmNSZXNhbXBsZXIgaXMgYSBoaWdoLXF1YWxpdHkgc2FtcGxlLXJhdGUgY29udmVy
dGVyLgogCi1jbGFzcyBTaW5jUmVzYW1wbGVyIHsKK2NsYXNzIFNpbmNSZXNhbXBsZXIgZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAgIC8vIHNjYWxl
RmFjdG9yID09IHNvdXJjZVNhbXBsZVJhdGUgLyBkZXN0aW5hdGlvblNhbXBsZVJhdGUKICAgICAv
LyBrZXJuZWxTaXplIGNhbiBiZSBhZGp1c3RlZCBmb3IgcXVhbGl0eSAoaGlnaGVyIGlzIGJldHRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgKaW5kZXggMjY2YmNh
Zjk4MGQ3MjZmYTJmNjM3Y2ZlOTNhNWQ0YzM4YjI0ZWUwNi4uNjc1ZWU0YWQwYzQ0NjdjZDFkZDZk
MWQ1MTYxMWU3N2I5OGM0YzYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vVXBTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBT
YW1wbGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBVcFNh
bXBsZXIgdXAtc2FtcGxlcyB0aGUgc291cmNlIHN0cmVhbSBieSBhIGZhY3RvciBvZiAyeC4KIAot
Y2xhc3MgVXBTYW1wbGVyIHsKK2NsYXNzIFVwU2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXBTYW1wbGVyKHNpemVfdCBp
bnB1dEJsb2NrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9aZXJvUG9sZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaApp
bmRleCA4MzFkZTkwOTNiMDA1NjE2YjRiZDc3ZWE3YjA3NzhjMzdkYWE3YjZlLi4wMmZmYWNkNWVh
Y2E3Y2UyNzU4OTJiZThkNjQzOTRjNzMzZGM3ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1plcm9Qb2xlLmgKQEAgLTMzLDcgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBaZXJvUG9sZSBpcyBhIHNpbXBsZSBmaWx0ZXIgd2l0aCBvbmUgemVybyBhbmQgb25lIHBv
bGUuCiAKLWNsYXNzIFplcm9Qb2xlIHsKK2NsYXNzIFplcm9Qb2xlIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBaZXJvUG9sZSgpCiAgICAgICAgIDog
bV96ZXJvKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9XZWJBdWRpb0J1ZmZlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oCmluZGV4IDg2YjY1YTIyNTNhZjFhZWIyYTFjYTljYWEz
NjY3ODZjZDdkNjU1MjAuLjhhN2U3YTAzYWMzM2E0ZTU1YzQzYzMxYWVjNjM3YjE4OWNiMWM3ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlv
QnVmZmVyTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dl
YkF1ZGlvQnVmZmVyTGlzdC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogCi1jbGFzcyBXZWJBdWRpb0J1ZmZl
ckxpc3QgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgeworY2xhc3MgV2ViQXVkaW9CdWZmZXJM
aXN0IGZpbmFsIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKIHB1YmxpYzoKICAgICBXZWJB
dWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcAppbmRleCA1YmY4ZmRhNmIyOTEyYjE4ZjExOTBkY2JlNzA4MmJmNjg0YmVl
OThmLi4xYTU0OTVmZDc2NGQ5YzNjYzZlZGI1ODFmYTQ4MGVhZWFkMTQ1OWJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVk
aW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikK
ICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYp
IC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcj4oY2FsbGJh
Y2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNh
bXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4IDhhZjg3N2VjMmM0Y2EwYWJkMzA3NDgz
NWY1NGIzNGFlYmYwNDMzYTIuLjRiZGU3ZTQxZTJiNjQzN2NkMGZmNzI1ZTRkMDc5ZDY4Zjg5ZTdk
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJh
Y2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAgICBM
T0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhhbmRs
ZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1
dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9TPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAK
IGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQppbmRl
eCBkYzZjOGJjY2UzNjlkMDZhZWRjOGZkMzMzYzczOGMwYmU5NTc1ZGQ0Li42Mzk4MjQwYmJkOGQ5
NjczMDJkZjdlOWVjZmY0MDc1MDJkYTZlMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTU5LDYgKzU5LDcgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlw
ZSBjYXRlZ29yeSkKICNlbmRpZgogCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBdWRpb1Nlc3Npb25Qcml2YXRl
KEF1ZGlvU2Vzc2lvbiopOwogICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdv
cnlPdmVycmlkZTsKQEAgLTcxLDcgKzcyLDcgQEAgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6QXVkaW9T
ZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKQogfQogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vz
c2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2
YXRlPih0aGlzKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZh
dGU+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggNzY0YTM0N2Y5ODI5ZTFl
ODQ3NWJkMmVhMTI4MGFhMTc1MDI2ZWNmYy4uOWZlNjRiYWFhNDc4NGZlY2RhYjNkNmRkYjVlMjc4
MzgxZTFlMDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlv
SU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAg
ICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAt
IHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNrLCBzYW1wbGVSYXRl
KTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURh
dGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1w
bGVEYXRhU291cmNlLm1tCmluZGV4IDc3ZDQzMTY1NjY5OTBlOTAxYjkyMGJmNzc4ZDk2OWU5ZjE4
ZjE4OGEuLjQxYWZlMzlmMjMyYWU1ODgwODYwZjA4NGQ1NTZjYjRhNWQ4YWUyNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6c2V0SW5wdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBm
CiB7CiAgICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX2lucHV0
RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4o
Zm9ybWF0KTsKKyAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKICAgICBpZiAobV9vdXRwdXREZXNjcmlwdGlvbikKICAg
ICAgICAgcmV0dXJuIHNldHVwQ29udmVydGVyKCk7CiAKQEAgLTEyMCw5ICsxMjAsOSBAQCBPU1N0
YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mCiAgICAgQVNTRVJUKG1faW5wdXREZXNjcmlwdGlvbik7CiAgICAg
QVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX291dHB1dERlc2NyaXB0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7
CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPihmb3JtYXQpOwogICAgIGlmICghbV9yaW5nQnVmZmVyKQotICAgICAgICBtX3JpbmdC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9yaW5n
QnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAKICAgICBtX3JpbmdCdWZmZXIt
PmFsbG9jYXRlKGZvcm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVDb3Vu
dCkpOwogICAgIG1fc2NyYXRjaEJ1ZmZlciA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y3JlYXRl
KG1fb3V0cHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbWF4aW11bVNhbXBs
ZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2Vzc2lvbk1hYy5jcHAKaW5kZXggN2Y2ZWY5ZDMzZGIxZmI0N2U3Y2YxNGM1OTA0YTQ2MTEy
YjE1MjIzMi4uY2MwNGYwYmUzMDk3NDk4YjgzNjZlOTI0MjA3M2VjZTNlMTk3NWFiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
Yy5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiB9Owog
CiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQorICAgIDogbV9wcml2YXRl
KG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCmluZGV4
IDE4YTI2YWI2ZGM1YzhkZDAxMjUyZGIwNjQ2ZDRmNWI5YjQ3YjZmZjUuLjA0YWNlZmM4ZGFhZDcx
MzI4YTRkZGZhYmJkMDRhZjllY2Q4ZWI5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgQXVkaW9CdWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0FSaW5nQnVmZmVyU3RvcmFnZSgpID0gZGVm
YXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgYWxsb2NhdGUoc2l6ZV90KSA9IDA7CkBAIC00Niw3ICs0
Nyw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2UgewogICAgIHZpcnR1YWwgdm9pZCogZGF0
YSgpID0gMDsKIH07CiAKLWNsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IgOiBwdWJsaWMg
Q0FSaW5nQnVmZmVyU3RvcmFnZSB7CitjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yIGZp
bmFsIDogcHVibGljIENBUmluZ0J1ZmZlclN0b3JhZ2UgewogcHVibGljOgogICAgIH5DQVJpbmdC
dWZmZXJTdG9yYWdlVmVjdG9yKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKaW5kZXggYjk4MDNiZmEwMjMyNDM1N2MwZGZlMDQ3
MzEzZDJjM2VjMzA0Y2I5Mi4uN2E0N2Y1NjA4YmJiNmRlOWQzNzczYjE3ZTk4ZTQ3NjRhMjQyMjJj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxL
ZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29kZXJD
Rj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyQ0Y+KGRh
dGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJDRjo6S2V5ZWREZWNvZGVyQ0YoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKaW5kZXggMWE2MjdlYTAwYjkyY2JhYTZjZjdjMzU1ZDVlNDQ1ZWM0
ODYxYTQxMi4uNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMzQsNyAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29k
ZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8S2V5ZWRFbmNvZGVyQ0Y+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVy
Q0Y+KCk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3Jl
YXRlRGljdGlvbmFyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9N
YWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9N
YWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggYjY4OTIyODA1ZTVkMzczZGU3ZjBhZWQ3
ODkwODI1YWNjY2MxMjAzOS4uMDdhNDVjYWQ3OGI2ZDQzN2ZhYTg0MjUyNjk5YzBkNDg2ZDc4ZWQ2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJl
ZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRT
aGFyZWRUaW1lckNGLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cFBvd2Vy
T2JzZXJ2ZXIoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgUG93ZXJPYnNlcnZlciog
cG93ZXJPYnNlcnZlcjsKICAgICBpZiAoIXBvd2VyT2JzZXJ2ZXIpCi0gICAgICAgIHBvd2VyT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRUaW1l
cikucmVsZWFzZSgpOworICAgICAgICBwb3dlck9ic2VydmVyID0gbWFrZVVuaXF1ZTxQb3dlck9i
c2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKICNlbGlmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZp
Y2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmlj
YXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDcwNWVkMTVhNWM1OGM0
MTFjNDlmMzRmYWY3M2VlYjMwN2IyYzk0OC4uYWI5NWZmZDBmODcxZWMwNDYwOGQ1MDk2NDZiNDNl
M2QwMzQ5ZjUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTY1LDcgKzY1LDcg
QEAgYm9vbCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmluaXRpYWxpemUoY29uc3QgVVJMKiB1cmwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tCmluZGV4IGFlMGJkMjA5Y2NkNmYzMTdjOTE5MzI1YTE2YTE4YTk5Y2Qx
NTcyZTQuLjBkMmE2MjE4NmI1YTU0ZTJiODUxZmY5NmQ1MjgxMDFmODQ2NmY0MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpjcmVh
dGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyPigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgY2FuSGFuZGxlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQppbmRleCBlODM2OWM2ZTUwMTZlMjNj
Zjg3M2I5NTM3ZDJhZmI0ZjBiYzY4NTIyLi44ZmUzOGFkMGNjZTJmZDU0MmQyOTcwMTdmZGEyZDFj
YjM1NWI3NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3Jv
bGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9s
bENvbnRyb2xsZXIubW0KQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6
OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3Rv
cgogICAgICAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbFNu
YXBBbmltYXRvclN0YXRlPigpOworICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG1ha2VVbmlx
dWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7CiAgICAgfQogCiAgICAgaWYgKHNuYXBQb2lu
dHMuaXNFbXB0eSgpICYmIG1fc2Nyb2xsU25hcFN0YXRlLT5zbmFwT2Zmc2V0c0ZvckF4aXMob3Ro
ZXJTY3JvbGxFdmVudEF4aXMoYXhpcykpLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcAppbmRleCA1MDNmOTdiOTIwMThkYTg3YzI0ODg5MWIyMjY3OWFiYjcwMDViMzAwLi45
NmM4NTEyOTM1YWI5YjY5OGU4OTg1NTE2M2JiNmQyMmFjOWI4MmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENETVBy
aXZhdGU+IENETUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lz
dGUKICNlbHNlCiAgICAgQVNTRVJUKHN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpOwogI2Vu
ZGlmCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVDbGVhcktleT4oKTsKIH0KIAogYm9vbCBD
RE1GYWN0b3J5Q2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggZDQ3MzA0Yzk1YjI2ZWYyMDRmNWRh
NGFkY2JiOGEwODY0ZGUxOGJiMy4uMGI5MTA2NDljYTRhNDdhOTE1ZDU0OGM5ZDk0YWZmZjMzNTM1
OTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUZhY3RvcnlDbGVhcktleSBmaW5hbCA6IHB1Ymxp
YyBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgQ0RNRmFjdG9yeUNsZWFyS2V5JiBzaW5nbGV0b24oKTsKIApAQCAtNTQsNiArNTUs
NyBAQCBjbGFzcyBDRE1GYWN0b3J5Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7
CiB9OwogCiBjbGFzcyBDRE1Qcml2YXRlQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNUHJpdmF0
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0
ZUNsZWFyS2V5KCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUNsZWFyS2V5KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQppbmRleCBmNzIwY2ZkMzM0M2Y5YmFk
MzNhNDkxOWE3OGY4NjZmOWQ4NjJhMGFkLi41YTZlYjQwNDM5ZWY1OTA1NzJhN2MyOWVmYzMzOGQ5
MmYyMzljNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0K
QEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29u
dHJvbGxlckRpZENvbm5lY3QoR0NDb250cm9sbGVyICpjb250cm9sbGUKICAgICBMT0coR2FtZXBh
ZCwgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyIGNvbnRyb2xsZXIgJXAgYWRkZWQiLCBj
b250cm9sbGVyKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3Rl
ZERldmljZSgpOwotICAgIGF1dG8gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8R2FtZUNvbnRy
b2xsZXJHYW1lcGFkPihjb250cm9sbGVyLCBpbmRleCk7CisgICAgYXV0byBnYW1lcGFkID0gbWFr
ZVVuaXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKIAogICAg
IGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICBtX2dhbWVwYWRW
ZWN0b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZC5oCmluZGV4IDE1ZjA0YzcwOGU5MDA3YmI0ZGFkZWU1NDM1YzM1
N2YwMmY1MzFjOTMuLmEyNTIzNGZiODc1YTc1MWM2M2MzN2JhNmE1Y2VlN2Q0NTM0ZDVhOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgK
QEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEhJREdhbWVw
YWRFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgSElE
R2FtZXBhZEVsZW1lbnQoZG91YmxlIHRoZU1pbiwgZG91YmxlIHRoZU1heCwgSU9ISURFbGVtZW50
UmVmIGVsZW1lbnQpCiAgICAgICAgIDogbWluKHRoZU1pbikKICAgICAgICAgLCBtYXgodGhlTWF4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggNTc0MzkxYjVjMTExYTMyYmU5MTI1Y2E2Y2UwNjAw
ZjVkNjM4MjI1Ny4uNmQxNGI2YjIxNjEwYjg2Y2U0YzAwMTNlNTA5MTFiODhmOTVlMWE2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBISURHYW1lcGFkUHJv
dmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKICAgICBMT0coR2FtZXBh
ZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRkZWQiLCBkZXZpY2UpOwogCiAgICAg
dW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhJREdh
bWVwYWQ+KGRldmljZSwgaW5kZXgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBn
YW1lcGFkID0gbWFrZVVuaXF1ZTxISURHYW1lcGFkPihkZXZpY2UsIGluZGV4KTsKIAogICAgIGlm
IChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICBtX2dhbWVwYWRWZWN0
b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKaW5kZXggYTRhMzBiNTJhYmU0OGFmODUw
ZGM3Yzc0N2EzYmNkZTFkNTFmZGE1Zi4uMGU1OTcyMzIxYjVmNzNmNTcyYmQ3OTY1ODgxMWYwMDNh
OTVlZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZERlY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEtleWVkRGVj
b2RlckdlbmVyaWM6OkRpY3Rpb25hcnkgewogICAgIHVzaW5nIE5vZGUgPSBWYXJpYW50PFZlY3Rv
cjx1aW50OF90PiwgYm9vbCwgdWludDMyX3QsIHVpbnQ2NF90LCBpbnQzMl90LCBpbnQ2NF90LCBm
bG9hdCwgZG91YmxlLCBTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Piwgc3RkOjp1
bmlxdWVfcHRyPEFycmF5Pj47CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lk
IGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIHN0ZDo6
bWFrZV91bmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CisgICAgdm9pZCBh
ZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBtYWtlVW5p
cXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQogICAgIE5vZGUmIGdldChjb25z
dCBTdHJpbmcmIGtleSkgeyByZXR1cm4gKm1fbWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6CkBA
IC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBib29sIHJlYWRTaW1wbGVWYWx1ZShXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyJiBkZWNvZGVyLCBLZXllZERlY29kZXJHZW5lCiAKIHN0ZDo6dW5pcXVlX3B0
cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29k
ZXJHZW5lcmljPihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29k
ZXJHZW5lcmljPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWRE
ZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTg2LDcg
Kzg2LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBl
IHR5cGU7CiAgICAgU3RyaW5nIGtleTsKIAotICAgIG1fcm9vdERpY3Rpb25hcnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgbV9yb290RGljdGlvbmFyeSA9IG1ha2VVbmlx
dWU8RGljdGlvbmFyeT4oKTsKICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobV9yb290RGlj
dGlvbmFyeS5nZXQoKSk7CiAKICAgICBib29sIG9rID0gdHJ1ZTsKQEAgLTE0NCw3ICsxNDQsNyBA
QCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGF1dG8qIGN1cnJlbnREaWN0aW5hcnkgPSBtX2RpY3Rpb25h
cnlTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkg
PSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFj
ay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50RGljdGlu
YXJ5LT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0RpY3Rpb25hcnkpKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTU2LDEzICsxNTYsMTMgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVy
R2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIG9r
ID0gcmVhZFN0cmluZyhkZWNvZGVyLCBrZXkpOwogICAgICAgICAgICAgaWYgKCFvaykKICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFycmF5PigpOworICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlxdWU8
QXJyYXk+KCk7CiAgICAgICAgICAgICBtX2FycmF5U3RhY2suYXBwZW5kKG5ld0FycmF5LmdldCgp
KTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+YWRkKGtleSwgV1RGTW92
ZShuZXdBcnJheSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCZWdpbkFycmF5RWxlbWVudDogewotICAgICAg
ICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5Pigp
OworICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5
PigpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25hcnku
Z2V0KCkpOwogICAgICAgICAgICAgbV9hcnJheVN0YWNrLmxhc3QoKS0+YXBwZW5kKFdURk1vdmUo
bmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCAy
Zjg0MTA0NzQ2Mzk1NThmMjk1ZTgxYTUxNzE5YTg3MzRiMzJkNThhLi4yMWNjMWViZTRhOTAxYTEz
Yzc0NDAzZGMwMWNmMmZjODE4MTMwMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBL
ZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtl
eWVkRW5jb2RlckdlbmVyaWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVy
R2VuZXJpYz4oKTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJpbmco
Y29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKaW5kZXggN2FlNjVjNWE4ZDMwOWUz
ZGVlZjUzY2U4Y2YxZTMwMjQyNmQyN2MxNC4uMjA4YWY3Yjg0NzllY2FlZjU1MzBjY2M1NTdiNzM2
ZWJhYmNiY2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9T
Y3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcApAQCAtNDQsMTQgKzQ0LDE0IEBAIHN0YXRp
YyBjb25zdCBTZWNvbmRzIHNjcm9sbENhcHR1cmVUaHJlc2hvbGQgeyAxNTBfbXMgfTsKIAogc3Rk
Ojp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Ny
b2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogICAgIDogU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsYWJsZUFyZWEpCiAg
ICAgLCBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lcigqdGhpcywgJlNjcm9sbEFuaW1h
dG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyRmlyZWQpCiB7Ci0gICAg
bV9raW5ldGljQW5pbWF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5l
dGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Cisg
ICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGlj
PihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAjaWYg
RU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikK
ICAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRp
b24pOwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJl
U21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fc21vb3RoQW5pbWF0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBvc2l0
aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgbV9zbW9vdGhBbmltYXRp
b24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJlYSwg
bV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICAgICAg
ICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKaW5kZXgg
ZTdkZDE5MTQwNDE3MTk2OGY5MGQ2ZmVhMzM1NGUxNGNlZjZmNTU2Ny4uMzYxZTlkZjMyNDViZTU2
NWIwZTJhNDFkZjE4YjI2ZmZiYzcxOWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVy
OjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdsaWI+KGRhdGEsIHNpemUpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdsaWI+KGRhdGEsIHNpemUpOwogfQogCiBLZXll
ZERlY29kZXJHbGliOjpLZXllZERlY29kZXJHbGliKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5jcHAKaW5kZXggNzQwNGJjYmQ0NDlhYTQ5MjFiOGNlMmI3ZTAxODQ0OTUwMTA2ZjY4MC4u
NzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0zMyw3ICsz
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rl
cj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxLZXllZEVuY29kZXJHbGliPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2Rl
ckdsaWI+KCk7CiB9CiAKIEtleWVkRW5jb2RlckdsaWI6OktleWVkRW5jb2RlckdsaWIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4
IGEyM2UyMTlkMWE2ODZkYTczMGMwMTFiZTBkMTI0OWNjZTBiYTQ1Y2QuLmVmY2NjNWM2Zjc5YTVh
OWEyZWU0NzcwYmY1Y2M5OTRmODQyYjk2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIEJp
dG1hcEltYWdlOjpjbGVhclRpbWVyKCkKIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIoU2Vj
b25kcyBkZWxheSkKIHsKICAgICBBU1NFUlQoIW1fZnJhbWVUaW1lcik7Ci0gICAgbV9mcmFtZVRp
bWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2YW5j
ZUFuaW1hdGlvbik7CisgICAgbV9mcmFtZVRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CiAgICAgbV9mcmFtZVRpbWVyLT5zdGFy
dE9uZVNob3QoZGVsYXkpOwogfQogCkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBCaXRtYXBJbWFn
ZTo6cmVzZXRBbmltYXRpb24oKQogdm9pZCBCaXRtYXBJbWFnZTo6ZGVjb2RlKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9kZWNvZGluZ0NhbGxiYWNrcykK
LSAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZ1
bmN0aW9uPHZvaWQoKT4sIDE+PigpOworICAgICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+KCk7CiAKICAgICBtX2RlY29kaW5n
Q2FsbGJhY2tzLT5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cAppbmRleCAwZDM1NTYxODk3MGZiMjc3ZjcyZTc4OTkwZTNmNGYyYTIxNmZiYzY5Li4zNTNmY2E2
NjAxMzI2NGIwMjQ2MmE1NzEyMjRkMDVhMTgxZDk2ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgVGV4dExheW91dCB7CiAgICAgVGV4dExheW91dChSZW5k
ZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgeFBvcykKICAgICAg
ICAgOiBtX2ZvbnQoZm9udCkKICAgICAgICAgLCBtX3J1bihjb25zdHJ1Y3RUZXh0UnVuKHRleHQs
IHhQb3MpKQotICAgICAgICAsIG1fY29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhU
ZXh0Q29udHJvbGxlcj4obV9mb250LCBtX3J1biwgdHJ1ZSkpCisgICAgICAgICwgbV9jb250cm9s
bGVyKG1ha2VVbmlxdWU8Q29tcGxleFRleHRDb250cm9sbGVyPihtX2ZvbnQsIG1fcnVuLCB0cnVl
KSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFBvaW50LmgKaW5kZXggNzIwNDUzZDlmMDQ2ZDc5ZjQ4YTA5YjgxYWY3MDAwZjRkZTNiZTAy
NS4uY2VmZDhkNDIyNDRkMDZmY2I4MjRiZTVlM2I3MzQxOWNkNDk4YTRlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaApAQCAtNjMsNiArNjMsNyBA
QCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CiAKIGNsYXNzIEZsb2F0UG9pbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZsb2F0UG9pbnQoKSB7
IH0KICAgICBGbG9hdFBvaW50KGZsb2F0IHgsIGZsb2F0IHkpIDogbV94KHgpLCBtX3koeSkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE4NGI0NGIw
N2E0MTIyMTZiOWVjNTk4NDIyZjA3ODdmMGU2YzdhZWIuLmUwYjQ5ZjI0N2MyMDA5YmRkNWYxZDBj
OGViYTdhZDZjN2ViOGNiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZvckNo
YXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikgY29uc3QKIGF1dG8gRm9udDo6ZW5zdXJlRGVyaXZl
ZEZvbnREYXRhKCkgY29uc3QgLT4gRGVyaXZlZEZvbnRzJgogewogICAgIGlmICghbV9kZXJpdmVk
Rm9udERhdGEpCi0gICAgICAgIG1fZGVyaXZlZEZvbnREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxE
ZXJpdmVkRm9udHM+KCk7CisgICAgICAgIG1fZGVyaXZlZEZvbnREYXRhID0gbWFrZVVuaXF1ZTxE
ZXJpdmVkRm9udHM+KCk7CiAgICAgcmV0dXJuICptX2Rlcml2ZWRGb250RGF0YTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDJlNThiZDY5ZWJiNTM5MWUw
MzZkMjhjMjcwMmMxZjQ1MDUwOGIzMTIuLjU0NGIwYjcxMThhYjJmOTA4MDc0OWU0NDFlNTE0OWYw
NTE4ZjJlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTI2
OSw5ICsyNjksNyBAQCBjbGFzcyBGb250IDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udD4gewogI2Vu
ZGlmCiAKICAgICBzdHJ1Y3QgRGVyaXZlZEZvbnRzIHsKLSNpZiAhQ09NUElMRVIoTVNWQykKLSAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0jZW5kaWYKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKIAogICAgICAgICBSZWZQdHI8Rm9u
dD4gc21hbGxDYXBzRm9udDsKQEAgLTM0NSw3ICszNDMsNyBAQCBBTFdBWVNfSU5MSU5FIEZsb2F0
UmVjdCBGb250Ojpib3VuZHNGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIAogICAgIGJvdW5k
cyA9IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoZ2x5cGgpOwogICAgIGlmICghbV9nbHlwaFRvQm91
bmRzTWFwKQotICAgICAgICBtX2dseXBoVG9Cb3VuZHNNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEds
eXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOworICAgICAgICBtX2dseXBoVG9Cb3VuZHNNYXAg
PSBtYWtlVW5pcXVlPEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOwogICAgIG1fZ2x5cGhU
b0JvdW5kc01hcC0+c2V0TWV0cmljc0ZvckdseXBoKGdseXBoLCBib3VuZHMpOwogICAgIHJldHVy
biBib3VuZHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcAppbmRleCAwYTYyYTI3NWJjNjkyZWYzOTkxMTQwZTAyOGY1ODAwNDIxZDBjNzExLi4z
NzA5YjQxZWIyYjdiZDBiZjdiMTAyYWM1ZGJlZmUyZjc3NzNhZjFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTI0NCw3ICsyNDQsNyBA
QCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAgICAgICAgICAgIGl0ID0gZm9udFBsYXRm
b3JtRGF0YUNhY2hlKCkuZmluZChrZXkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChpdCAhPSBm
b250UGxhdGZvcm1EYXRhQ2FjaGUoKS5lbmQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGZvbnRQ
bGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKQotICAgICAgICAgICAgICAgICAgICBpdC0+dmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KCpmb250UGxhdGZvcm1EYXRh
Rm9yQWx0ZXJuYXRlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGl0LT52YWx1ZSA9IG1ha2VV
bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1l
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA3Mjc0ZGIwZGIzMmIzYjQx
YjNlMGUxYjFlZDBmYjJhZWE4YjM2YTNiLi42NDgxOGY0YjUxNTVkNDJiZmFjODFiNjFmNGI1Zjlj
ZGVhNTQ1MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIFJlZjxGb250Q2FzY2FkZUZv
bnRzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGkK
ICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZvbnRzLmdldCgpOwog
CiAgICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIG5l
d0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KFdURk1vdmUo
a2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkpOwor
ICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KFdURk1vdmUo
a2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkpOwog
ICAgIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBnbHlwaHMgPSBuZXdFbnRyeS0+Zm9udHMuZ2V0KCk7
CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5yZWZlcmVuY2VkUHJ1bmVJbnRlcnZhbCA9
IDUwOwpAQCAtMzI2LDkgKzMyNiw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAgaWYg
KGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VV
bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwogICAgIEdyYXBoaWNzQ29udGV4dCBy
ZWNvcmRpbmdDb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+
KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0
UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERp
c3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3QsIGNv
bnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICB9KTsK
ICAgICAKICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKaW5k
ZXggZGI3NDMwMmU5ZGFhNGViNTJjMGNlMDgxZmQ1NjA1Mjc5NTc4ZmJmNC4uMTJhYzgzN2ZjZDI0
NjVmOWY4MWRlYjA2ODdhYTc3NmQ1ZWEwNjQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgdm9pZCBGb250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERh
dGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGEKIHsKICAgICBBU1NFUlQoIWdseXBoRGF0YUZvckNo
YXJhY3RlcihjaGFyYWN0ZXIpLmdseXBoKTsKICAgICBpZiAoIW1fbWl4ZWRGb250KSB7Ci0gICAg
ICAgIG1fbWl4ZWRGb250ID0gc3RkOjptYWtlX3VuaXF1ZTxNaXhlZEZvbnRHbHlwaFBhZ2U+KG1f
c2luZ2xlRm9udC5nZXQoKSk7CisgICAgICAgIG1fbWl4ZWRGb250ID0gbWFrZVVuaXF1ZTxNaXhl
ZEZvbnRHbHlwaFBhZ2U+KG1fc2luZ2xlRm9udC5nZXQoKSk7CiAgICAgICAgIG1fc2luZ2xlRm9u
dCA9IG51bGxwdHI7CiAgICAgfQogICAgIG1fbWl4ZWRGb250LT5zZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIoY2hhcmFjdGVyLCBnbHlwaERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAppbmRleCAyNTllOTc1MzNjYWVkY2ZjMTQ1
ZmY3YWI0MjhlYTE2OWY2NGIxNTk0Li43OWUyZjUzODhjNDZlNTg5MjMwMTYxYzQ3NDUyNTQxOTI0
N2U4MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aE1ldHJpY3NNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aE1ldHJpY3NNYXAuaApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdHlw
ZW5hbWUgR2x5cGhNZXRyaWNzTWFwPFQ+OjpHbHlwaE1ldHJpY3NQYWdlJiBHbHlwaE1ldHJpY3NN
YXAKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZXMpCi0gICAgICAgIG1fcGFnZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+
PigpOworICAgICAgICBtX3BhZ2VzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPGludCwgc3RkOjp1bmlx
dWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4oKTsKIAogICAgIGF1dG8mIHBhZ2UgPSBtX3BhZ2Vz
LT5lbnN1cmUocGFnZU51bWJlciwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4odW5rbm93bk1ldHJpY3MoKSk7CiAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAqcGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZGRjN2NhYzg1Nzgx
N2I3N2U5NTQyODQ1YjA2OTg5Nzc5ZDJjNjk2Yi4uM2JiYjEyNTU5Yjg3NzFlMTY2OWEyZWI2YjIy
MjE0MjFmNjA4YzNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU1Nyw2ICs1NTcsNyBAQCBjbGFzcyBHcmFwaGljc0Nv
bnRleHQgewogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cygpIGNvbnN0OwogCiAg
ICAgY2xhc3MgV2luZG93c0JpdG1hcCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaW5kb3dzQml0bWFwKTsKICAgICBwdWJs
aWM6CiAgICAgICAgIFdpbmRvd3NCaXRtYXAoSERDLCBjb25zdCBJbnRTaXplJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5oCmluZGV4IDFiNDIyODZkZGY0NjVjMGUyYjEyNGQ4YWZkZjBmN2NkNjQ3N2Ni
YjcuLmUzM2Y4ZmJlNzM4OTJlMzRiOGRlZjgzNmQ0NmY1YzcwYzc5YzYxZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEJpdG1hcFRleHR1cmVHTDsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5
bGUpOwogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAw
YmFkNGU3MDYzNDIxOTk4Njg5NDQ5MmRmZTZmNjFkMzE3ODgxOWQzLi5iODczMTk0ZWUyNDYwMWZl
NGUwNzE0N2FhNzFlYTMwNTg3YTg0YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC0zMCw2ICszMCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBo
aWNzQ29udGV4dEltcGwpOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEltcGwoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCmluZGV4IDk0YWFjMWRmODM1NmJkYjEwZGY3ZDA4NmZhY2UyNmMxZTM3MTgz
MjYuLjZjZDAwYzI2NTcwZDlkYjNiOWZhYTdlMjAyM2FmMWE1ZTdlNjNhMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0x
MTIsNyArMTEyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyOjpzdXBwb3J0c0NvbnRlbnRzVGlsaW5n
KCkKICNlbmRpZgogCiAvLyBTaW5nbGV0b24gY2xpZW50IHVzZWQgZm9yIGxheWVycyBvbiB3aGlj
aCBjbGVhckNsaWVudCBoYXMgYmVlbiBjYWxsZWQuCi1jbGFzcyBFbXB0eUdyYXBoaWNzTGF5ZXJD
bGllbnQgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CitjbGFzcyBFbXB0eUdyYXBoaWNz
TGF5ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEVtcHR5R3JhcGhpY3NM
YXllckNsaWVudCYgc2luZ2xldG9uKCk7CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkK
ICAgICBpZiAobV90cmFuc2Zvcm0pCiAgICAgICAgICptX3RyYW5zZm9ybSA9IG1hdHJpeDsKICAg
ICBlbHNlCi0gICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgR3JhcGhpY3NMYXllcjo6Y2hpbGRyZW5UcmFuc2Zvcm0oKSBjb25zdApAQCAtMzU2LDcg
KzM1Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKICAgICBpZiAobV9jaGlsZHJlblRyYW5zZm9y
bSkKICAgICAgICAgKm1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQotICAg
ICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1ha2VVbmlx
dWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
cjo6c2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmIGxheWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDAwOWQ0
ODY4OTVkNTY4NjI1NDAxMWRmNTYwMGE3MjExMjQzMGU2MmYuLjdhMWZlYWFjNzllNzhiYTg4ZmNh
ZGNiODVlMzI5OWZkNzlhMDA0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBGbG9hdEFu
aW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAg
ICAgfQogCiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC0x
MzIsNyArMTMyLDcgQEAgY2xhc3MgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5p
bWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9u
ZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhlcikK
QEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBGaWx0ZXJBbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBB
bmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNs
b25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAgICAgRmlsdGVyQW5p
bWF0aW9uVmFsdWUoY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIG90aGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IGU0NGE2MWUyMjRjYTExOTRk
MDkxOGQ0NDQzYmVhN2MxZTdlNGEwZTEuLmMyMWZlMjlkMGYwNWZkZGUzOWUwYzRiZjRiNjFhMWM5
NzZjY2IxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
QEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9u
cyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpYwogdm9pZCBJbWFnZTo6
c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSgpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvblN0
YXJ0VGltZXIpCi0gICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKTsKKyAgICAgICAgbV9hbmlt
YXRpb25TdGFydFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3RhcnRB
bmltYXRpb24pOwogICAgIGlmIChtX2FuaW1hdGlvblN0YXJ0VGltZXItPmlzQWN0aXZlKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXItPnN0YXJ0T25lU2hvdCgw
X3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5
Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RN
U2Vzc2lvbi5oCmluZGV4IGJlNzY3NjBmOGUzNTY1ZDQyNjcyYjAwNWE5NmRjZGI3ZmE0YjJkNjku
LjI1ZTc5YTZkYzBhNWIyMTkzYTcyYTIyN2FhY2ExNzczYTdlM2MyOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKQEAgLTMz
LDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZv
aWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlvblVSTCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDc1N2YwOTU2N2RjNWRmZGY1YmUwMjYzOTYzOWQxZWZlYzcxOGMwZGIuLmFiZTg2OTQxOTRm
ZjdjMTc1MTAwYjY5ODgwNGExMjQwYmQ2MmM4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBjbGFz
cyBOdWxsTWVkaWFQbGF5ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSB7CiAKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAwOyB9CiAgICAgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZm
ZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVm
ZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKTsgfQogCiAgICAgZG91YmxlIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZh
bCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBSZWY8TWVk
aWFQbGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkK
IE1lZGlhUGxheWVyOjpNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogICAg
IDogbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcmVsb2FkVGltZXIoKnRoaXMsICZNZWRpYVBs
YXllcjo6cmVsb2FkVGltZXJGaXJlZCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlx
dWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKQEAgLTUxMSw3ICs1MTEs
NyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRp
YVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAjZW5kaWYKICAgICAgICAgbV9wcml2YXRlLT5sb2Fk
KG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX3ByaXZhdGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOworICAgICAgICBtX3By
aXZhdGUgPSBtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOwogICAgICAg
ICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQodGhpcyk7CiAgICAgICAgIGNsaWVu
dCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQodGhpcyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAppbmRleCAwMGQ4NWE0OTk2NDJiM2Y1MjM3YjMwYmZmNWY0ZTZiNDI5MTMwZWNkLi4xZDJmYzAw
OTIwNGE4YzAyNTU0MWIyYTJkN2M1ZjBkMGJlNWM5OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTI5LDcg
KzEyOSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgdmlydHVh
bCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7
CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHNlZWth
YmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2FibGUoKSA9PSBNZWRpYVRpbWU6
Onplcm9UaW1lKCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKSA6IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgp
LCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhNZWRpYVRp
bWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSA/IG1ha2VVbmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlh
VGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmlydHVhbCBm
bG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBN
ZWRpYVRpbWUgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhEb3VibGUobWF4VGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmlydHVhbCBkb3Vi
bGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAppbmRleCAzZTY4ODA1
NWJkY2MwYjEwZTQxNjBjZjE0MGQ0ZmFjZTkyMzIwYTY1Li41YWQ5MzM0OWJmYjQwZGE0ZmYzMDhh
ZGE5ODQ5N2ZjMzc1ZTEwOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtODksNyArODksNyBAQCBGbG9hdFBvaW50R3Jh
cGg6Ok5vZGUqIEZsb2F0UG9pbnRHcmFwaDo6ZmluZE9yQ3JlYXRlTm9kZShGbG9hdFBvaW50IHBv
aW50KQogICAgICAgICAgICAgcmV0dXJuIHRlc3ROb2RlLmdldCgpOwogICAgIH0KIAotICAgIG1f
YWxsTm9kZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRQb2ludEdyYXBoOjpOb2RlPihw
b2ludCkpOworICAgIG1fYWxsTm9kZXMuYXBwZW5kKG1ha2VVbmlxdWU8RmxvYXRQb2ludEdyYXBo
OjpOb2RlPihwb2ludCkpOwogICAgIHJldHVybiBtX2FsbE5vZGVzLmxhc3QoKS5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKaW5kZXggOWRj
ZWU4NzYxNjI1YzAxNDg4YjRkOTBkMWFmMjJlMzU0MzVkNGE1ZS4uNmE3MDFjMWExMjg5NzlkNGM5
NDhiMWE3YmFiNTY4ZjEwMjQ3Y2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBSZWdpb246OnNldFNoYXBl
KFNoYXBlJiYgc2hhcGUpCiAgICAgfQogCiAgICAgaWYgKCFtX3NoYXBlKQotICAgICAgICBtX3No
YXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOworICAgICAgICBt
X3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOwogICAgIGVsc2UKICAg
ICAgICAgKm1fc2hhcGUgPSBXVEZNb3ZlKHNoYXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggNzk2MzNmZGI2YWRmMzRmZmZlZThmODI2NzQ4M2I4
Y2ZmNWNlMWYzYy4uYmMzOWMzMDAwMGVhOGI2YjVhOWU2MGNmMmJjNWFlMTg2NjY0YjZjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKQEAgLTkxLDYgKzkxLDcg
QEAgY2xhc3MgUmVnaW9uIHsKICAgICB9OwogCiAgICAgY2xhc3MgU2hhcGUgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFNoYXBlKCkgPSBk
ZWZhdWx0OwogICAgICAgICBTaGFwZShjb25zdCBJbnRSZWN0Jik7CkBAIC0xNDgsNyArMTQ5LDcg
QEAgY2xhc3MgUmVnaW9uIHsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aGFwZSYsIGNvbnN0IFNoYXBlJik7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFw
ZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IHN0ZDo6bWFrZV91bmlxdWU8
U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBtYWtlVW5pcXVlPFNoYXBlPigq
bV9zaGFwZSkgOiBudWxscHRyOyB9CiAgICAgdm9pZCBzZXRTaGFwZShTaGFwZSYmKTsKIAogICAg
IEludFJlY3QgbV9ib3VuZHM7CkBAIC0yODksNyArMjkwLDcgQEAgT3B0aW9uYWw8UmVnaW9uPiBS
ZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBkZWNvZGVyID4+IHNoYXBl
OwogICAgICAgICBpZiAoIXNoYXBlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZNb3Zl
KCpzaGFwZSkpOworICAgICAgICByZWdpb24ubV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hhcGU+KFdU
Rk1vdmUoKnNoYXBlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgcmVnaW9uIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbi5jcHAKaW5kZXggMWU0ZTdmYWMzNmM3YzMwYTY1NmYxZWZkMDBhYWNlNmQ0Yzk1
Y2VkYS4uNjkzOWY5MTdhZTZmYWIxM2VjMWM5MWQ0YWE4MTU1NjZhOTE3MGRkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uLmNwcApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBOdWxsVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24gOiBwdWJsaWMgVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gewogCiBzdGQ6OnVu
aXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IFRleHRUcmFja1JlcHJlc2VudGF0aW9u
OjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQmKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaApp
bmRleCA3YWViNzU5YjM0YjE4YTFlODQ2ODNmMjljNjE2YTZjZGIwMjU3NGQ4Li42YTA2Y2M2ZWJh
MzRiOTU5ZDJmMTg2MDIyOWUxZjJmMzhmZjMxOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaApAQCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3Qg
VmVsb2NpdHlEYXRhICB7CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBWZWxvY2l0eURhdGEmKTsKIAogY2xhc3MgSGlzdG9yaWNhbFZlbG9j
aXR5RGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSGlz
dG9yaWNhbFZlbG9jaXR5RGF0YSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQz
REFOR0xFLmNwcAppbmRleCA3N2EzZTE4YzFjNmMyZTI3ZGQ2M2FlMjk2ZjZlYzlhMWVhMmZhZTFm
Li42MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1YjE2Y2E0ZTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFO
R0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHQzREFOR0xFLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMzRCYgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25z
KQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzREFO
R0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBt
YWtlVW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwog
ICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGwuaAppbmRleCBhOWVjZDMyMTM2ZGE4NzcwMmY0NzhhZmNkOGFj
YzhlYjk3YzIzOTQwLi45OWRkZGQ4Zjg1MDI3MzAzYmI4YTc2M2VjYWMyYjg2OTg4MmZhOThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTZWxlY3Rpb25PcHRp
b25BVkZPYmpDOwogCiBjbGFzcyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRyYWNrKik7CiAgICAgZXhwbGljaXQgQVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbChBVkFzc2V0VHJhY2sqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCA1Y2Q3NzcyYWMyZWUxY2VhOTAxMGU4
MzM3MWVhNmFhZWY3ZjA2OTU4Li42YjNjOTIyZTZhZWJlNTkyMGFlNjVlNTdhZjA1ZWRlNGFkMDM3
NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
Lm1tCkBAIC0zMTMsMTIgKzMxMywxMiBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
OjpwcmVwYXJlKENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogewogICAg
IEFTU0VSVChtYXhGcmFtZXMgPj0gMCk7CiAKLSAgICBtX3RhcERlc2NyaXB0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpwcm9jZXNzaW5nRm9ybWF0
KTsKKyAgICBtX3RhcERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zvcm1hdCk7CiAgICAg
aW50IG51bWJlck9mQ2hhbm5lbHMgPSBwcm9jZXNzaW5nRm9ybWF0LT5tQ2hhbm5lbHNQZXJGcmFt
ZTsKICAgICBkb3VibGUgc2FtcGxlUmF0ZSA9IHByb2Nlc3NpbmdGb3JtYXQtPm1TYW1wbGVSYXRl
OwogICAgIEFTU0VSVChzYW1wbGVSYXRlID49IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlwdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOworICAg
IG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CiAgICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+
bVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1Gb3Jt
YXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5t
Rm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkOwpAQCAtMzM4
LDcgKzMzOCw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoQ01J
dGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0cmVhCiAgICAgLy8gTWFrZSB0aGUgcmlu
Z2J1ZmZlciBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgYXQgbGVhc3QgdHdvIGNhbGxiYWNrcyB3b3J0
aCBvZiBhdWRpbywgb3IgMXMsIHdoaWNoZXZlciBpcyBsYXJnZXIuCiAgICAgc2l6ZV90IGNhcGFj
aXR5ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigyICogbWF4RnJhbWVzKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihrUmluZ0J1ZmZlckR1cmF0aW9uICogc2FtcGxlUmF0ZSkpOwogCi0gICAg
bV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgbV9y
aW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAgICAgbV9yaW5nQnVmZmVy
LT5hbGxvY2F0ZShDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnByb2Nlc3NpbmdGb3JtYXQpLCBj
YXBhY2l0eSk7CiAKICAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJpYWJsZS1sZW5ndGgg
c3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMgbmV3KCkgb3BlcmF0
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDM2MWE5
OTJmMGM0NjUwY2YyYjk2MjhhNjQyZTk3YjVkYmEwZTJhM2MuLjRmYzY3ODdkZDhkOTA3Y2FkNmEy
NzdmMzliMWVkMzJlZDY3OWE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRl
PiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmCiAg
ICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc+KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0
c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggODkxOGU4MGUwYzM5MGQ3ZThkYWNhMTkwMzk0NzlhMGQw
ZjY5NWFkOC4uNTM4Njk2OWY5NDk3NmYzODM2ODAxODc0MWJhZmQxMjU1MWUyOGI4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEZvdXJDQzsKIAogY2xhc3MgQ0RNRmFjdG9yeUZhaXJQ
bGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5RmFpclBsYXlTdHJl
YW1pbmcmIHNpbmdsZXRvbigpOwogCkBAIC00OSw2ICs1MCw3IEBAIGNsYXNzIENETUZhY3RvcnlG
YWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAKIGNsYXNz
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmcoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oCmluZGV4IDRhNTBlYjQxYTU4MzY4M2Y2NmE2NzYyMjk1NDZjNTgwMWIyMGI1ODguLmQ4MWJj
YTM1NDkwMzkxOGExYmRhMGFkZGQ5NThkNTk0M2Y3MDFiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMzcsNiArMzcsNyBAQCBj
bGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOwogCiBj
bGFzcyBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIDogcHVibGljIENETVByaXZhdGVJbnRl
cmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTGVnYWN5Q0RNKiBjZG0pCiAgICAgICAg
IDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQppbmRleCAyY2MwOGE5YTNiNTFjYmY3YWIxOTc0MjAyYTk4YjE2OWRiNDNj
MTAxLi4wY2QwMTI5YTNjZDllYWY4NjNhZDQ3ODk4Mzg1MDMxZDhiNzZlZjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTQ3
LDEwICsxNDcsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24oTGUKICNlbmRpZgogICAgIAogICAg
IGlmIChzaG91bGRVc2VBVkNvbnRlbnRLZXlTZXNzaW9uICYmIENETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKQotICAgICAgICBzZXNzaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZh
bHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBjbGll
bnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVy
cy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBjbGllbnQpOwogICAgIGVsc2UKICNpZiBIQVZFKEFW
U1RSRUFNU0VTU0lPTikKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vz
c2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xz
KSwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyks
ICp0aGlzLCBjbGllbnQpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAppbmRl
eCBlNDYwMTQ4MzA1Y2VlZDFiNTY0ODQxOTk2Y2I5ZmMzNGNkYzNhYjUyLi4xNDdjMzc5ZjEyNzA2
ODJlNTVmZDIxNWNlMjNhMzllYTEyNDk1YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lT
T0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJ
bmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFp
clBsYXlTdHJlYW1pbmdJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGlj
OgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzaSI7IH0KIApA
QCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWlu
Z0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAgICAgRm91ckNDIG1fc2NoZW1lOwogfTsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5m
b0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma3Jp
IjsgfQogCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAgICAgS2V5
SUQgbV9rZXlJRDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma2Fp
IjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhOyB9CkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5
U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50
OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVh
bWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3gg
ewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmtj
eCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YTsgfQpAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCBmaW5hbCA6IHB1Ymxp
YyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJl
dHVybiAiZmt2bCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gdmVyc2lvbnMoKSBjb25z
dCB7IHJldHVybiBtX3ZlcnNpb25zOyB9CkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggOiBwdWJsaWMgSVNP
Qm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV92ZXJzaW9uczsKIH07CiAKLWNsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCA6IHB1YmxpYyBJU09C
b3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0
Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBi
b3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNrIjsgfQogCkBAIC0xMDYsNyArMTA2LDcgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IDogcHVi
bGljIElTT0JveCB7CiAgICAgT3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9u
TGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggZmluYWwgOiBwdWJsaWMg
SVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gImZwc2QiOyB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVj
dG9yPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveD4gbV9yZXF1ZXN0czsKIH07CiAK
LWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCA6IHB1Ymxp
YyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggeworY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94IGZpbmFsIDogcHVibGljIElTT1Byb3Rl
Y3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZmFpclBsYXlTeXN0ZW1JRCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDg1N2Yz
MWYyNzcyZjQwODFmYmE2MzhmODEwYzExNDk0Mjg1OGI5NGIuLjU5Y2Y4YmEyMTMxNmIzMDdjMDUw
MjNlZDU2ZDliMzlkMjU2MTdmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjpidWZmZXJlZCgpIGMKICAgICBpZiAoIW1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcykKICAg
ICAgICAgbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzID0gcGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5n
ZXMoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
Km1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsKIH0KIAogTWVkaWFUaW1l
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
CmluZGV4IDM5NWNlNzgyZThjNTgwNDU5NjE2MjQ2OTgwZjMzZWFkZjAzYjc4YjIuLjVmNWI2ZjY5
NTJiNDkzYTk4ODdiYWZjN2YzMGI3YmVlNzMzNDE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViTWVk
aWFTZXNzaW9uTWFuYWdlck1hYzo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMoKSA9IGRlZmF1
bHQ7CiBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcigpCiB7CiAgICAgaWYgKCFtX3RhcmdldFBpY2tlcikK
LSAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKKyAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBtYWtlVW5p
cXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKIAogICAgIHJldHVybiAq
bV90YXJnZXRQaWNrZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbkNGLmgKaW5kZXggNzYwOGEwMTcyNjNiMzA0NDRjYWJlNTM1ZmRhNDRj
OTlmZmFmMTFmMi4uZDYxNjdiODc2ODk5OWRjMDQ5NDc1MzgyMGQ5YTJiYzdiZWQwNjRkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaApAQCAt
MzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGIGZpbmFs
IDogcHVibGljIExlZ2FjeUNETVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRiYgcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YuY3BwCmluZGV4IGFmMGE3Y2M3N2JmMjkyY2RmZDY2YWJjNmU3ZjYzYTUwOTAwYWFk
NjcuLjNiNzBlNzY2MzllNTk0MGFmMWYyYjFkNWJmMjY3M2FlMzJkZWNhMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmNwcApAQCAtOTgsNiArOTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogY2xhc3MgTGF5
ZXJDbGllbnQ7CiAKIGNsYXNzIEFWRldyYXBwZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YqKTsKICAgICB+QVZGV3JhcHBlcigpOwpAQCAtMjEzLDYgKzIxNCw3IEBAIGNsYXNzIEFW
RldyYXBwZXIgewogdWludHB0cl90IEFWRldyYXBwZXI6OnNfbmV4dEFWRldyYXBwZXJPYmplY3RJ
RDsKIAogY2xhc3MgTGF5ZXJDbGllbnQgOiBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMYXllckNsaWVudChB
VkZXcmFwcGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KICAgICB2aXJ0dWFsIH5M
YXllckNsaWVudCgpIHsgbV9wYXJlbnQgPSAwOyB9CkBAIC0zNDMsNyArMzQ1LDcgQEAgc3RhdGlj
IGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5n
aW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAgICAg
ICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0sCisgICAg
ICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAogICAgICAgICAg
ICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNLZXlT
eXN0ZW0pOwogfQogCkBAIC02NzIsNyArNjc0LDcgQEAgc3RhdGljIGJvb2wgdGltZVJhbmdlSXNW
YWxpZEFuZE5vdEVtcHR5KENNVGltZSBzdGFydCwgQ01UaW1lIGR1cmF0aW9uKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gdGlt
ZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1
dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAgICAg
aWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuIHRpbWVSYW5n
ZXM7CkBAIC0xMTM3LDcgKzExMzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lv
bj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3NpbwogICAgIGlm
ICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
Q0Y+KCp0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25BVkZv
dW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CiAKICNlbGlmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQpAQCAtMTY0MSw2ICsxNjQzLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwZXJp
b2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUsIHZv
aWQKIH0KIAogc3RydWN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9wcm9w
ZXJ0eU5hbWU7CiAgICAgdm9pZCogbV9jb250ZXh0OwogCkBAIC0xNzA4LDcgKzE3MTEsNyBAQCB2
b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVy
UmVmLCB2b2lkKiBvYnNlcnZlciwgQwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6Om5vdGlm
aWNhdGlvbkNhbGxiYWNrKGlmPSVkKSAlcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihv
YnNlcnZlciksIG5vdGlmaWNhdGlvbk5hbWUpOwogI2VuZGlmCiAKLSAgICBhdXRvIG5vdGlmaWNh
dGlvbkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4ocHJv
cGVydHlOYW1lLCBvYnNlcnZlcik7CisgICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gbWFrZVVu
aXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIpOwog
CiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBub3RpZmlj
YXRpb25EYXRhLnJlbGVhc2UoKSwgcHJvY2Vzc05vdGlmaWNhdGlvbik7CiB9CkBAIC0xNzg1LDYg
KzE3ODgsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJiB0
aW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVG9sZQogCiAjaWYgSEFWRShBVkZPVU5EQVRJ
T05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09V
VFBVVF9TVVBQT1JUKQogc3RydWN0IExlZ2libGVPdXRwdXREYXRhIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fYXR0cmli
dXRlZFN0cmluZ3M7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fc2FtcGxlczsKICAgICBN
ZWRpYVRpbWUgbV90aW1lOwpAQCAtMTgzMyw3ICsxODM3LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjps
ZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxl
T3V0cHUKIAogICAgIEFTU0VSVChsZWdpYmxlT3V0cHV0ID09IHNlbGYtPm1fbGVnaWJsZU91dHB1
dCk7CiAKLSAgICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdp
YmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBB
TDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0KTsKKyAgICBhdXRvIGxlZ2libGVPdXRw
dXREYXRhID0gbWFrZVVuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3Ms
IG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0
KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbGVn
aWJsZU91dHB1dERhdGEucmVsZWFzZSgpLCBwcm9jZXNzQ3VlKTsKIH0KQEAgLTE4NDEsNiArMTg0
NSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRl
eHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9M
T0FERVJfREVMRUdBVEUpCiBzdHJ1Y3QgTG9hZFJlcXVlc3REYXRhIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3RSZWY+IG1fcmVxdWVzdDsKICAgICB2b2lkKiBtX2NvbnRleHQ7CiAKQEAgLTE5
MjYsNyArMTkzMSw3IEBAIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRX
YWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzCiAKICAgICBMT0coTWVkaWEs
ICJBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0
ZWRSZXNvdXJjZSglcCkiLCBzZWxmKTsKIAotICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsK
KyAgICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IG1ha2VVbmlxdWU8TG9hZFJlcXVlc3REYXRhPihs
b2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIGxvYWRSZXF1ZXN0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NTaG91
bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOwogCkBAIC0xOTUzLDcgKzE5NTgsNyBAQCBQbGF0
Zm9ybUxheWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICAvLyBDcmVhdGUgYSBQbGF0Zm9ybUNBTGF5ZXIgc28gd2UgY2FuIHJlc2l6ZSB0aGUg
dmlkZW8gbGF5ZXIgdG8gbWF0Y2ggdGhlIGVsZW1lbnQgc2l6ZS4KLSAgICBtX2xheWVyQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CisgICAgbV9sYXllckNsaWVu
dCA9IG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOwogICAgIGlmICghbV9sYXllckNsaWVu
dCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1
ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMTRhZjFhMjdmMjZiZDFhZDYwMjg2MDRh
NTc1MmYwZGY5YThkZjUyLi43ZGUxNGMyNTcxZjdkMzhlZWNiYjM0OGZkYTNjNzRhNDNkZWI4MmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDLm1tCkBAIC0zMywxMyArMzMsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVt
VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpOwogfQogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1faW1wbChz
dGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCisgICAg
OiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQog
ewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNTksNyArNTksNyBAQCB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkK
IAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBs
YXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVz
RnJvbVRyYWNrKCk7CiB9CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCBBVlBsYXllckl0ZW1UcmFjayog
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogfQogCiBBdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJhY2sq
IHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwog
fQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0
VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpOwogfQogCkBAIC04Nyw3ICs4Nyw3IEBAIEFWQXNzZXRUcmFjayogQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDOjphc3NldFRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0
aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBlYzBkMGVkZGJmNzNiZWVkYTY3MTdi
N2E1MThjNzMyMTI2MDk1YWUyLi5kZjUyMjZhNGVhMDM2ZTU2ZmEyNTM5YTYyNzYyYTIzOGFlNzBl
MGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFr
ZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBs
KG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9w
YXJlbnQocGFyZW50KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwpAQCAtNTIs
NyArNTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZXNl
dFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9p
bXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7
CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
ayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIyYWFm
ZWM3YjgzNDI3YjgxMzBhN2MwNDNmOGY2NzIwODM0Y2NhNDcuLjVkOGUyNTA3NDcwYmM3YTQ5OTk1
NWM5ODFiMTc2ZmY0NDRmYmM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaApAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiAK
LWNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIDogcHVibGljIExlZ2FjeUNETVNlc3Np
b24sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4gewor
Y2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RN
U2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFy
ZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAyNGIyYTE3ZDk3N2ViYmYwNTMzNTBjNTVk
OWQ0MDlhNjEyNzk2MzhmLi4zOWVhOGU1MTEzNjMyYWU3NGJmNTM2NGE4ZDFiMDI2OTcyMjFhYTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQy5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiAKIGNsYXNzIENETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhDRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfkNE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDJmZTI1MjQ5OTRjM2IxOTQ0NTllYzMzMzAyOWFi
ZDllOTg1Yzc1YjQuLmJiMDc3NzYxMzgyYzg4MDgwN2JhNTNjOGRhZGIyOTQ1NmU1NmViNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtNDEy
LDcgKzQxMiw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEo
KQogICAgICAgICB8fCAhbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkKICAgICAg
ICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkudmFsdWUoKSAhPSBmaW5h
bFRyYW5zZm9ybQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXplKCkgIT0g
c2l6ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNpemUsIGtD
VlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFn
ZUNvbXBhdGlibGU6Olllcyk7CisgICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBtYWtl
VW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBz
aXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJ
c0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwogCiAgICAgbV9zaXplID0gZXhwYW5kZWRJbnRTaXpl
KG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJvdGF0ZWRTaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KaW5kZXggYzY1OTBiZGVlNjdiNGUyMDk4ODhlOTZhMmMzMzBmMmZlMjMzODY5Ny4u
ODQ5OTA0YWNmOTI5YzdjZmUzZjk0YmM0MTBlMGQwYjJlOGIxYjQ0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKICAg
ICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtd
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRl
ZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNo
ZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFT
U0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CiB9
CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIAogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uKHBsYXllcikKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6
bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBs
YXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRv
cHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBsYXllcjptYWtl
V2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQpAQCAt
MTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFu
Z2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0
aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBpZiAo
IW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAgLTE4OTIsNyAr
MTg5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRl
Um90YXRpb25TZXNzaW9uKCkKICAgICAgICAgJiYgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+c2l6
ZSgpID09IG5hdHVyYWxTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ltYWdlUm90YXRp
b25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZN
b3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJH
UkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7Cisg
ICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Np
b25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZvcm1h
dFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxl
OjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMjIxNiw3ICsyMjE2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1h
Z2UoVXBkYXRlVHlwZSB0eXBlKQogI2Vsc2UKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGVzID0gbmlsOwogI2VuZGlmCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25h
cnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtl
VW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
YXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yMjY1
LDcgKzIyNjUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHNpemVfdCBoZWlnaHQg
PSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAogICAg
IGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOworICAg
ICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVy
Q1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUlt
YWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWln
aHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBm
b3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KQEAgLTIzMzAsNyArMjMz
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzCiB7CiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1
cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNl
c3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0aGlz
LCBjbGllbnQpOworICAgIGF1dG8gc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVudCk7CiAgICAgbV9zZXNzaW9uID0gbWFrZVdlYWtQdHIo
KnNlc3Npb24pOwogICAgIHJldHVybiBXVEZNb3ZlKHNlc3Npb24pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAppbmRleCA3Mzk2ZTViMWI0MzExOThlNWU2MGQ4ZmNkMDYzNTliYjI3Y2Y0OWY3
Li5hMWRkMGY5MDkxZmIyODY0NjhkYmUwYWUxMGNlOGIzYzE0MmMwYmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaApAQCAtMjY4LDYgKzI2OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQwogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDOwogCiAgICAgc3RydWN0IFBlbmRpbmdTZWVrIHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nU2Vlayhjb25zdCBNZWRpYVRpbWUm
IHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1l
ZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpCiAgICAgICAgICAgICA6IHRhcmdldFRpbWUodGFy
Z2V0VGltZSkKICAgICAgICAgICAgICwgbmVnYXRpdmVUaHJlc2hvbGQobmVnYXRpdmVUaHJlc2hv
bGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZjE5NTE1NmQ4Y2YyMjU2ZjYwZjlm
NTUzMjQxMjllODUyM2Q5ZDM4Yi4uOWMwYWVmNjE5YWRjMmEzMThmMGRiN2QyZTM4NjdjMjFkZmMz
MWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKE1lZGlhCiAgICAgLCBtX3BsYXlpbmcoMCkKICAgICAsIG1fc2Vla2lu
ZyhmYWxzZSkKICAgICAsIG1fbG9hZGluZ1Byb2dyZXNzZWQoZmFsc2UpCi0gICAgLCBtX3ZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlciht
YWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAgICAgLCBtX2Vm
ZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXIoRWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcjo6
Y3JlYXRlKCp0aGlzLCBbbV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkK
QEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdAogICAgIGlmICghaXNB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRpYVBs
YXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1
cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hl
OjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2Uo
Y29uc3QgTWVkaWFUaW1lJiB0aQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ0aW1lID0g
IiwgdGltZSwgIiwgbmVnYXRpdmVUaHJlc2hvbGQgPSAiLCBuZWdhdGl2ZVRocmVzaG9sZCwgIiwg
cG9zaXRpdmVUaHJlc2hvbGQgPSAiLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBtX3NlZWtp
bmcgPSB0cnVlOwotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdT
ZWVrPih0aW1lLCBuZWdhdGl2ZVRocmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOworICAgIG1f
cGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRocmVz
aG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgaWYgKG1fc2Vla1RpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgIG1fc2Vla1RpbWVyLnN0b3AoKTsKQEAgLTU0Myw3ICs1NDMsNyBAQCBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnJlYWR5U3RhdGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWthYmxlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1l
ZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4
TWVkaWFUaW1lU2Vla2FibGUoKSk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKQEAgLTU1OCw3
ICs1NTgsNyBAQCBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjptaW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6YnVmZmVy
ZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFT
b3VyY2VQcml2YXRlLT5idWZmZXJlZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNvdXJj
ZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
IH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRpZExvYWRp
bmdQcm9ncmVzcygpIGNvbnN0CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAKICAgICBpZiAoIW1f
cmdiQ29uZm9ybWVyKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IEB7IChfX2JyaWRnZSBO
U1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9y
bWF0VHlwZV8zMkJHUkEpIH07Ci0gICAgICAgIG1fcmdiQ29uZm9ybWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0
dHJpYnV0ZXMpOworICAgICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAg
ICB9CiAKICAgICBtX2xhc3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21Q
aXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CkBAIC02NDksNyArNjQ5LDcgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmEKICAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZl
ckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlkZW9U
ZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91
bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1Rl
eHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7
CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1U
ZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0
dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBw
cmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5k
ZXggY2EzYjExMzU1MmIzODg1Yzk5OTc3ZGFlMmEyMWVhMTY1NzdlZGE4MC4uOWRlZWU0NmYyY2Ey
NDUyOTUzZGY1Y2E4OGJiNjlmODE4ZTdlNGU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bQpAQCAtMTgzLDcgKzE4Myw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKE1lZGlhCiAgICAgOiBtX3Bs
YXllcihwbGF5ZXIpCiAgICAgLCBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyKGFkb3B0TlMoW1tXZWJB
VlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0
aGlzXSkpCiAgICAgLCBtX2Nsb2NrKFBBTDo6Q2xvY2s6OmNyZWF0ZSgpKQotICAgICwgbV92aWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIo
bWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dl
cigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlm
aWVyKCkpCkBAIC0yMjAsNyArMjIwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkK
LSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5ZXIp
OyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgICAgIHN1
cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiB9CiAKQEAgLTEwNTQsMTIgKzEwNTQsMTIgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YnVmZmVyZWQoKSBj
b25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNzMsNyArMTA3Myw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJy
ZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9pbWFnZVBhaW50
ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVm
ZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0p
OworICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlx
dWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAo
X19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChr
Q1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIAogICAgIEFTU0VSVChtX2ltYWdlUGFpbnRl
ci5waXhlbEJ1ZmZlckNvbmZvcm1lcik7CiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1
ZmZlckNvbmZvcm1lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakMuY3BwCmluZGV4IGM4NzFjNTk0ODM1NTA4NTcxODJjN2EyNGQ1NTM0Yjg1
YTVkNGVmN2UuLjI5NDgzYmE1ZTk4ZDk1ZmE4ZTVlYzlhNmExMGJmNjQxYWFlMzU1OWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNw
cApAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNr
KiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsK
IH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMo
QVZBc3NldFRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNG
cm9tVHJhY2soKTsKIH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakMoTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCi0gICAgOiBt
X2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24p
KQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0
aW9uKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJh
Y2soQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1h
a2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIEFWUGxheWVySXRlbVRy
YWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiAKIHZvaWQg
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJh
Y2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAK
QEAgLTg4LDcgKzg4LDcgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OmFzc2V0VHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFT
ZWxlY3Rvbk9wdGlvbihNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKIHsKLSAg
ICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9w
dGlvbik7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
PihvcHRpb24pOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCmluZGV4IGZjYzI0OTZhMTM1YWE0ZjczYThmZTU0OGQxNGUwYzgwMDA0
YWQxYjAuLjk3NTZjZmZhZmQ4YzNmNmZlM2I0N2EyMzMzNzFiNzRkZWM5OGQwNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Zp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJlbnQocGFyZW50KQog
ICAgICwgbV90cmFja0lEKC0xKQogICAgICwgbV9zZWxlY3RlZChmYWxzZSkKQEAgLTU2LDcgKzU2
LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQcm9w
ZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAg
IG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwog
ICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAx
NzFmMjc3MmM5NGE2OWNkYTczNDkzY2M5YzhjNzg3OGIwMDEwOGRkLi44NzY1MzQ0NTIwMjRlNjE2
NTE0MTdhMDRhMGQ5NDUwNThhOTU0MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE2MzYsMTIgKzE2
MzYsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoQ29t
bWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25zdCBUcmEKICAgICBpZiAodXNlc0Rpc3BsYXlMaXN0
RHJhd2luZygpICYmIG1fZHJhd3NDb250ZW50ICYmICghbV9oYXNFdmVyUGFpbnRlZCB8fCBoYWRE
aXJ0eVJlY3RzKSkgewogICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShEaXNwbGF5TGlz
dFJlY29yZFN0YXJ0LCBEaXNwbGF5TGlzdFJlY29yZEVuZCk7CiAKLSAgICAgICAgbV9kaXNwbGF5
TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOworICAg
ICAgICBtX2Rpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+
KCk7CiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRzT3JpZ2lu
KCksIHNpemUoKSk7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoWyZdKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3JhcGhp
Y3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwg
Km1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZp
bmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pOwogICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJD
b250ZW50cyhjb250ZXh0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpKTsKICAgICB9
CkBAIC0yODY3LDcgKzI4NjcsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJh
bnNmb3JtQW5pbWF0aW9uKCkgY29uc3QKIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXll
ckFuaW1hdGlvbnMoKQogewogICAgIGlmICghbV9hbmltYXRpb25zKQotICAgICAgICBtX2FuaW1h
dGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKKyAgICAgICAgbV9h
bmltYXRpb25zID0gbWFrZVVuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24mIGNh
QW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsIGludCBpbmRleCwgaW50IHN1YkluZGV4LCBTZWNvbmRzIHRpbWVPZmZzZXQpCkBAIC0z
OTAzLDcgKzM5MDMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMo
Q2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPgogICAgIGNvbnRlbnRzTGF5
ZXIgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQotICAgICAgICBtX2xheWVy
Q2xvbmVzID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsb25lcz4oKTsKKyAgICAgICAgbV9sYXll
ckNsb25lcyA9IG1ha2VVbmlxdWU8TGF5ZXJDbG9uZXM+KCk7CiAKICAgICBwcmltYXJ5TGF5ZXIg
PSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9sYXllci5nZXQoKSwgbV9sYXllckNsb25lcy0+
cHJpbWFyeUxheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKICAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBm
aW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXJD
bG9uZXMtPnN0cnVjdHVyYWxMYXllckNsb25lcywgY2xvbmVMZXZlbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4
IDNhYzRjMWUzMmExNTQ4ZDU4YzY5MTExN2NjNjlhMjljNGRjZjBlMWEuLmM0YjJjOWMzNDcwODBh
NmI3Yzk2ZDY3MDJmNGE0ZDhhMzBjN2Y2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTcsNiArMTU3LDcg
QEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIEZsb2F0U2l6ZSBwaXhlbEFsaWdubWVudE9mZnNl
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7IH0KIAog
ICAgIHN0cnVjdCBDb21taXRTdGF0ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgdW5zaWduZWQgdHJlZURlcHRoIHsgMCB9OwogICAgICAgICB1bnNp
Z25lZCB0b3RhbEJhY2tkcm9wRmlsdGVyQXJlYSB7IDAgfTsKICAgICAgICAgYm9vbCBhbmNlc3Rv
ckhhZENoYW5nZXMgeyBmYWxzZSB9OwpAQCAtMzA5LDYgKzMxMCw3IEBAIGNsYXNzIEdyYXBoaWNz
TGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHsKICAgICB0eXBlZGVmIHVuc2lnbmVkIENvbXB1dGVWaXNpYmxlUmVjdEZsYWdzOwogICAg
IAogICAgIHN0cnVjdCBWaXNpYmxlQW5kQ292ZXJhZ2VSZWN0cyB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0Owog
ICAgICAgICBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0OwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBhbmltYXRpbmdUcmFuc2Zvcm07CkBAIC0zMjgsNiArMzMwLDcgQEAgY2xhc3MgR3JhcGhp
Y3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQgewogCiAgICAgLy8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVlIGZv
ciByZXBsaWNhIGxheWVycy4KICAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKKyAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IG1heFJlcGxpY2FEZXB0aCA9IDE2OwogICAgICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBlIHsg
Q2hpbGRCcmFuY2ggPSAwLCBSZXBsaWNhQnJhbmNoID0gMSB9OwogICAgICAgICBSZXBsaWNhU3Rh
dGUoUmVwbGljYUJyYW5jaFR5cGUgZmlyc3RCcmFuY2gpCkBAIC01NzksNiArNTgyLDcgQEAgY2xh
c3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQgewogCiAgICAgLy8gUmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3VyIGxh
eWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJzLgogICAgIHN0cnVjdCBMYXllckNsb25lcyB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJNYXAg
cHJpbWFyeUxheWVyQ2xvbmVzOwogICAgICAgICBMYXllck1hcCBzdHJ1Y3R1cmFsTGF5ZXJDbG9u
ZXM7CiAgICAgICAgIExheWVyTWFwIGNvbnRlbnRzTGF5ZXJDbG9uZXM7CkBAIC02MDgsNiArNjEy
LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1Ymxp
YyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZl
Y3RvcjxBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPj4gQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlv
bj4+IEFuaW1hdGlvbnNNYXA7CiAgICAgc3RydWN0IExheWVyQW5pbWF0aW9ucyB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgVmVjdG9yPExheWVyUHJv
cGVydHlBbmltYXRpb24+IHVuY29taXR0ZWRBbmltYXRpb25zOwogICAgICAgICBBbmltYXRpb25z
VG9Qcm9jZXNzTWFwIGFuaW1hdGlvbnNUb1Byb2Nlc3M7CiAgICAgICAgIEFuaW1hdGlvbnNNYXAg
cnVubmluZ0FuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggNGQ2NGMyYzRiMTliMzFiODA1NGMx
YmM0MWFjMDIyNTczYmVmZjU2Mi4uMzA1ZWZkMzMzYmQ2MTFjNmVmNWU0YzFiMjYyMjg4NzUyNTZm
MjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGls
ZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcgVGlsZUNvbnRyb2xs
ZXI6Onpvb21lZE91dFRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCkKIFRpbGVDb250cm9sbGVy
OjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RQbGF0Zm9ybUxheWVyKQogICAg
IDogbV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1MYXllcikKICAgICAsIG1fZGV2aWNlU2Nh
bGVGYWN0b3Iob3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2Fs
ZUZhY3RvcigpKQotICAgICwgbV90aWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigq
dGhpcykpCisgICAgLCBtX3RpbGVHcmlkKG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkKICAg
ICAsIG1fdGlsZVJldmFsaWRhdGlvblRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVS
ZXZhbGlkYXRpb25UaW1lckZpcmVkKQogICAgICwgbV90aWxlU2l6ZUNoYW5nZVRpbWVyKCp0aGlz
LCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVTaXplQ2hhbmdlVGltZXJGaXJlZCwgdGlsZVNpemVVcGRh
dGVEZWxheSkKICAgICAsIG1fbWFyZ2luRWRnZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNTY2Fs
ZShmbG9hdCBzY2FsZSkKICAgICBpZiAobV96b29tZWRPdXRDb250ZW50c1NjYWxlICYmIG1fem9v
bWVkT3V0Q29udGVudHNTY2FsZSA9PSB0aWxlR3JpZCgpLnNjYWxlKCkgJiYgdGlsZUdyaWQoKS5z
Y2FsZSgpICE9IHNjYWxlICYmICFtX2hhc1RpbGVzV2l0aFRlbXBvcmFyeVNjYWxlRmFjdG9yKSB7
CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQgPSBXVEZNb3ZlKG1fdGlsZUdyaWQpOwogICAg
ICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT5zZXRJc1pvb21lZE91dFRpbGVHcmlkKHRydWUpOwot
ICAgICAgICBtX3RpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOwor
ICAgICAgICBtX3RpbGVHcmlkID0gbWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOwogICAgICAg
ICB0aWxlR3JpZHNDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC01MDAsNyArNTAwLDcgQEAgRmxvYXRS
ZWN0IFRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9yU2Nyb2xsaW5nKGNv
bnN0IEZsb2F0UmVjdCYgY28KICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIW1f
aGlzdG9yaWNhbFZlbG9jaXR5RGF0YSkKLSAgICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yaWNhbFZlbG9jaXR5RGF0YT4oKTsKKyAgICAg
ICAgICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSA9IG1ha2VVbmlxdWU8SGlzdG9yaWNhbFZl
bG9jaXR5RGF0YT4oKTsKIAogICAgICAgICBtX3ZlbG9jaXR5ID0gbV9oaXN0b3JpY2FsVmVsb2Np
dHlEYXRhLT52ZWxvY2l0eUZvck5ld0RhdGEoc2Nyb2xsT2Zmc2V0LCBjb250ZW50c1NjYWxlLCBN
b25vdG9uaWNUaW1lOjpub3coKSk7CiAgICAgfTsKQEAgLTY4NSw3ICs2ODUsNyBAQCBJbnRSZWN0
IFRpbGVDb250cm9sbGVyOjp0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3QKIFBsYXRmb3JtQ0FMYXll
ciogVGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIoKQogewogICAg
IGlmICghbV9jb3ZlcmFnZU1hcCkKLSAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CisgICAgICAgIG1fY292ZXJhZ2VNYXAgPSBt
YWtlVW5pcXVlPFRpbGVDb3ZlcmFnZU1hcD4oKnRoaXMpOwogCiAgICAgcmV0dXJuICZtX2NvdmVy
YWdlTWFwLT5sYXllcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRl
eCBhNDg1MjNjZjUxNzZiMzFmMmFjYzQ5ODRiMmVjZDhlMmM4NzRmNjA3Li4zNmFjMmY3ODRiMDA2
ZmY5YzcwM2Y0MWU3YmZmNjg3YTFhYTRjNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNv
bW1vbkluaXQoKQogICAgICAgICBXZWJUaWxlZEJhY2tpbmdMYXllciogdGlsZWRCYWNraW5nTGF5
ZXIgPSBzdGF0aWNfY2FzdDxXZWJUaWxlZEJhY2tpbmdMYXllcio+KG1fbGF5ZXIuZ2V0KCkpOwog
ICAgICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSBbdGlsZWRCYWNraW5nTGF5
ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6dGhpc107CiAKLSAgICAgICAgbV9jdXN0b21TdWJsYXll
cnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVy
LT5jb250YWluZXJMYXllcnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVu
aXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJz
KCkpOwogICAgIH0KIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTk0Nyw3ICs5
NDcsNyBAQCBGbG9hdFJvdW5kZWRSZWN0IFBsYXRmb3JtQ0FMYXllckNvY29hOjpzaGFwZVJvdW5k
ZWRSZWN0KCkgY29uc3QKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCiB7CiAgICAgQVNTRVJU
KG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNoYXBlTGF5ZXIpOwotICAgIG1fc2hhcGVSb3VuZGVk
UmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwor
ICAgIG1fc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91
bmRlZFJlY3QpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgUGF0aCBz
aGFwZVBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCmluZGV4IGMxOTFmMzkx
YzY0NTcyY2M5OTU1YTQ3YzZjYjdiOTAwNzg2NzI2MzkuLmIzZTIxZjY0MGFlOTFhMGQxZjU5Mzg0
NmE4NTBmZWMyMmZhNzhhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCkBA
IC02Miw3ICs2Miw3IEBAIC0gKGlkKWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCiAtIChXZWJDb3Jl
OjpUaWxlQ29udHJvbGxlciopY3JlYXRlVGlsZUNvbnRyb2xsZXI6KFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllciopcm9vdExheWVyCiB7CiAgICAgQVNTRVJUKCFfdGlsZUNvbnRyb2xsZXIpOwotICAg
IF90aWxlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRyb2xs
ZXI+KHJvb3RMYXllcik7CisgICAgX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAgICByZXR1cm4gX3RpbGVDb250cm9sbGVy
LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDE1ZDRlNDZiMDZj
NzZjMTdmMzQwNTEzOWM2Yzk3OWMxMDE3YjM2OTYuLmQ2YTdjMTY4ZjBlNDQxZmQ3ZDI5MGZjNGZl
MzEzNjBjNTg1ZDU2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNTIsNyAr
MTUyLDcgQEAgUGxhdGZvcm1DQUxheWVyV2luOjpQbGF0Zm9ybUNBTGF5ZXJXaW4oTGF5ZXJUeXBl
IGxheWVyVHlwZSwgUGxhdGZvcm1MYXllciogbGF5ZXIKICAgICBpZiAodXNlc1RpbGVkQmFja2lu
Z0xheWVyKCkpIHsKICAgICAgICAgaW50ZXJuID0gbmV3IFdlYlRpbGVkQmFja2luZ0xheWVyV2lu
KHRoaXMpOwogICAgICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSByZWludGVy
cHJldF9jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyV2luKj4oaW50ZXJuKS0+Y3JlYXRlVGlsZUNv
bnRyb2xsZXIodGhpcyk7Ci0gICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJz
KCkpOworICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1DQUxh
eWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgaW50ZXJuID0gbmV3IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKHRoaXMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2Vi
VGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAppbmRleCAyMjRkOGJiZWVkMzk5
MmFlZWZjOTMyYTFiZWU4MGRjNjNmY2EyZjhiLi5jNWE3M2U4ZDNhZTliYjQ5YTk2YmUyN2Y1MzI3
ZTA2YzA2MjE0ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKQEAg
LTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpzZXRCb3JkZXJD
b2xvcihjb25zdCBDb2xvciYgdmFsdWUpCiBUaWxlQ29udHJvbGxlciogV2ViVGlsZWRCYWNraW5n
TGF5ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVy
KQogewogICAgIEFTU0VSVCghbV90aWxlQ29udHJvbGxlcik7Ci0gICAgbV90aWxlQ29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CisgICAgbV90
aWxlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CiAg
ICAgcmV0dXJuIG1fdGlsZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaAppbmRleCBjMzFjYzZlMzhiYTU5OWM5ZmI4MjZhYTAzOTc2YjIwNTFjYzExNWJl
Li4xOGYzNDA1MGFhOWUzYjc0MzRhNjI3YTA3N2NkMmNjZjJmOTljOWZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC00MSw2ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxp
bnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoKICAgICBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5jcHAKaW5kZXggNTBiN2Q5YzIzYzAxYWJmYzNhMDUxNzhjMTA1MjUxMDcwZjE1ZDZk
Yi4uMDRmMmE5ZmY1NDY5YWE1YmEyNGQxNDk1NjU0YjYwZjBiYzQzZDJhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdyYXBoaWNzQ29u
dGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0
SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29u
dGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU0LDE0ICs1NCwx
NCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6
OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbY2Fpcm9Db250ZXh0XShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250
ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKICAgICA6
IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNm
b3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAgICAs
IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9w
bGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkp
OwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CkBA
IC02OSw5ICs2OSw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhCiAKIEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY2Fpcm9fdCogY2Fpcm9Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChj
b250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9vd25l
ZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihj
YWlyb0NvbnRleHQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVlPFBs
YXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQogICAgICwgbV9wbGF0Zm9ybUNvbnRl
eHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkK
KyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBo
aWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmND
b250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKaW5kZXggOTllMTgzY2M3MDU2MDNkMjM0ZThl
OGVkOWZkNjY5ZDU5NmZiZWVhMi4uMDgzNzI1ZDZmZDM4MzI2MDdhYTc2MWZmOWY2ODM1OTA2NjRj
OTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
YWlyby5oCkBAIC00NSw2ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgIDogcGxhdGZvcm1Db250ZXh0
KHBsYXRmb3JtQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggMTg4ZTdiYzNkYjg1
ODI5NjVjYWJiMjg5YmM1YzAyYmM3MTYyM2FhNS4uMWY3NjNiNTA3NzNiZGY1ZDFlNTJlNWQxOWMw
YjgwZmJhZDM3YjQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE2NSw3ICsxNjUsNyBA
QCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgICAg
ICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsK
LSAgICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3Np
emUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKKyAgICAgICAgICAg
ICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKICAgICAgICAgICAgIH07CiAjaWYgVVNFKE5JQ09T
SUEpCiAgICAgICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsKQEAg
LTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogCiAgICAgUmVmUHRyPGNh
aXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkp
KTsKICAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwotICAgIG1f
ZGF0YS5tX2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4
dCkpOworICAgIG1fZGF0YS5tX2NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4o
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3Jt
Q29udGV4dCkpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uaAppbmRleCA4MGVjNzI1OGI2NDIxZmJmOThiM2ViNTUxM2QwY2VhZmJlN2FkZmRjLi45OWM4
MmUyZTZlOTkzMWM4ZmVhOWRlMjE1ZDBmMzZjNzE5YzM4OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4
dENhaXJvLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IFNoYWRvd1N0YXRlOwogLy8gY29kZSBm
cm9tIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQuCiAKIGNsYXNzIFBs
YXRmb3JtQ29udGV4dENhaXJvIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNvbnRleHRDYWlybyk7CiBwdWJsaWM6CiAgICAg
UGxhdGZvcm1Db250ZXh0Q2Fpcm8oY2Fpcm9fdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4MGI1ZDRmYmQy
NzJkZWU0MzViNWNlN2MwODRlZTM1OWE1MDFlZDY0Li5kMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAy
NmJjZGE5ZWFmYTM0ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEltYWdlQnVm
ZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ0dDb2xvclNwCiAgICAgICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGlj
c0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZGF0YS5jb250ZXh0ID0gbWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAgICAg
Y29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3Bw
CmluZGV4IDcyNTJlNDk1MjRmNjA5ODZiMDM4Y2E4N2M4ZTdlMjY1ZDA1NzQ3MGQuLmMwMTYwMWUx
MDExMTI3OThiMjY4ZGZhZjI2OTM4MmI2NTMxOWQ1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAKQEAgLTEzNzEsNyArMTM3MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRh
PiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAKICAgICBh
dXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlT
eW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0
KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlv
bi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNj
cmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250
UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNP
YmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndp
ZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiB9CiAK
IHR5cGVkZWYgSGFzaFNldDxSZXRhaW5QdHI8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmpl
Y3RIYXNoPENURm9udFJlZj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaFRyYWl0czxDVEZvbnRS
ZWY+PiBGYWxsYmFja0RlZHVwU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNh
dGlvbkNvcmVUZXh0LmNwcAppbmRleCAxY2UwYzk0N2UxN2U5YTY4ZWVhZDNhNGQ1N2I1OWQ4ZmEx
NmNlZjI5Li4wZGU5MzRhN2IzODQxMDBlZWI3NmQ3N2Y0NTZhMTgyZmJiYWJjZWNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMTEyLDcg
KzExMiw3IEBAIEZvbnRSYW5nZXMgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9u
dFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAKICAgICAgICAgYXV0byBbc3ludGhl
dGljQm9sZCwgc3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZv
bnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2Js
aXF1ZVBhaXIoKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZv
cm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERl
c2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwg
Zm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhl
dGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlv
bi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCmluZGV4IDg5MmI0YTk4YzAwN2I2Zjk3MGEz
Njg2MWJlOTE3MTQ4YmIwNDY3MmMuLjU3OWYxYjkxOGRiYmU3NWI4NDEzZTZkNmZkMTVkZmFmNjRh
MzU2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtOTIsNiArOTIsNyBA
QCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQgPSA1OwogLy8gRklY
TUU6IFRoaXMgY2xhc3MgaXMgY3VycmVudGx5IGVtcHR5IG9uIE1hYywgYnV0IHdpbGwgZ2V0IHBv
cHVsYXRlZCBhcwogLy8gdGhlIHJlc3RydWN0dXJpbmcgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2OTAzIGlzIGRvbmUKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKikgeyB9CiAgICAgCkBAIC0y
MTIsNyArMjEzLDcgQEAgc3RhdGljIHZvaWQgc2V0R1BVQnlEaXNwbGF5TWFzayhQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEIGNvbnRleHRPYmosIENHTFBpeGVsRm8KIAogR3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRycywg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlLCBH
cmFwaGljc0NvbnRleHQzRCogc2hhcmVkQ29udGV4dCkKICAgICA6IG1fYXR0cnMoYXR0cnMpCi0g
ICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+
KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlPih0aGlzKSkKIHsKICNpZiAhVVNFKEFOR0xFKQogI2lmIFVTRShPUEVOR0xfRVMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0K
aW5kZXggNWM3MzNlM2JhZDFlOWQzZDI1YzFlZDU3ZjVhY2RmZmYzYTRjYjk5Zi4uMzg3NWZjZmQz
MDZkZjg2ZDM0NzRlZTE4NjBiYTU5MGEzYThiYzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzI2LDcgKzMyNiw3
IEBAIEdyYXBoaWNzQ29udGV4dCYgSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0NvbnRleHQoKQog
ICAgIGlmIChtX2dyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29u
dGV4dDsKIAotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGlj
c0NvbnRleHQ+KGVuc3VyZVBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4
dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQoKSk7
CiAgICAgbV9ncmFwaGljc0NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KHRydWUpOwog
CiAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbkNvY29hLm1tCmluZGV4IDZlNjBlYmYxZmZhNjU5MGY2ZjM0ZTUyOGEzZTMzNTgz
MThiNWViZGYuLjI3ODc0NjgxNjZmZWYxYjVmNjQ2MjFmZWI1YmI1ZTUwZDlkNmRhMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQpAQCAtMTA4LDcgKzEwOCw3
IEBAIEBlbmQKIAogc3RkOjp1bmlxdWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50
JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYT4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOwogfQogCiBUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hKFRleHRUcmFja1JlcHJlc2VudGF0
aW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKaW5kZXggYWRjOTdhZGMx
ZmEyNDU4MDk5MDAzYzNkZTljMGFhMzhkODc2MTg3ZC4uNjAwMWJiNzBhMTAwNDE3NDQxMDkyMTM2
ZjNmZTViNjE3NjJjYjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaApAQCAtMzYsNyArMzYs
OCBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9v
bFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUIHsKK2NsYXNzIEltYWdlUm90YXRpb25TZXNzaW9uVlQgZmluYWwgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBSb3RhdGlvblByb3BlcnRpZXMg
ewogICAgICAgICBib29sIGZsaXBYIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaApp
bmRleCBkZDEzNTY5ZTA4MWExYjM5OWRjYmFiZjNmNWU4ODM3Zjg0YzJhYjRlLi5jZDViNmZjYzAw
ZDc3NDY0ZTZlNmJlNzQ2MzExZTEzZDBkMjdlMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5o
CkBAIC0zNiw2ICszNiw3IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZm
ZXJSZWY7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1YgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YoQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOwogICAgIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKaW5k
ZXggODFhYjJmOTI0ZGFmMjZjZGEyMmM1ZTIwMDc3NmMyMTgwMjAyM2EzYi4uYzlmZjQxOWQ0M2Jl
NDVmNDA0NDAzMDQwYWRkOGM0ZDA0NDAyYmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCkBAIC00NCw2ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBU
ZXh0dXJlQ2FjaGVDViA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0dXJlQ2FjaGVDVj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2Fj
aGVDVi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNo
ZUNWLm1tCmluZGV4IDU3N2VjMjg0NjM5MmE3MjE1ZDk5OGFhMzEwZDNkOGQ2MzNmNWYxZWMuLjlm
MWY2NmIzYmQ1OWY1OWIxYWQzY2I3MDVjODU2NTQ0MjI3ZWMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCkBAIC01
MCw3ICs1MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gVGV4dHVyZUNhY2hl
Q1Y6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCYgY29udGV4CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+IHN0cm9uZ0NhY2hlID0gYWRv
cHRDRihjYWNoZSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZUNhY2hlQ1Y+
KGNvbnRleHQsIFdURk1vdmUoc3Ryb25nQ2FjaGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
ZXh0dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOwogfQogCiBUZXh0
dXJlQ2FjaGVDVjo6VGV4dHVyZUNhY2hlQ1YoR3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleHQsIFJl
dGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiYmIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKaW5k
ZXggNDNhOTZkYzE0MzY1ODRhZmE3NzE4NzhiMTk3ZjJhOTU0N2RjY2NlZS4uOWQzOTJlYTA1OGIz
NjAwOGNhNTY5Y2E0NGZkNzEyODgzYjBkNmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCkBAIC00
MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVDYWNoZUNWOwog
CiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgVmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0M0Qm
KTsKICAgICB+VmlkZW9UZXh0dXJlQ29waWVyQ1YoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcAppbmRleCA4ZmVhYTJmNWQ3NTMyOGU0MzZiZjlkODhiOGRjMDViYWMx
YzJlMWYzLi5jNTYxZjVmOWVhYjk5NjIxMWE4YjIyMjE5Nzc2ZDY4ZjM5ZTE2NDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBib29sCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+
IHJlcGxheUxpc3Q7CiAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpCi0gICAgICAg
IHJlcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0PigpOworICAgICAgICBy
ZXBsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKIAogICAgIHNpemVfdCBudW1J
dGVtcyA9IG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1JdGVtczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNTU3Yjhl
MDA4NjJkNmFiYzU4MDRiNDE0MzIxMDA4MGE4MzUxNmQxZS4uMzBiYjQ4Y2M4ZjBjNDk1NDQ4YWI2
NWY2ODExNzJjY2M2YmNhNTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1l
bnRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlcgogICAgICAgICByZXR1cm47CiAgICAgaWYg
KCFTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UobV91cmwsICpjYWNoZWRS
ZXNvdXJjZUxvYWRlci5kb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlPihtX3VybCk7CisgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IG1h
a2VVbmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKICAgICBtX2NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRpb25z
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDY1NjNjOGJmZWViMzVi
YTUzMjdmNDg5NjFlZDYyMWZlM2Q1M2FhNDEuLjcxYTRhYjJmNDgyNWYxYTU0MzE5MTgwMzRiMzUz
MWVjZGE4YTBmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTQ1NSw3ICs0
NTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgICAgICAgICAgRmNQYXR0ZXJuQWRk
U3RyaW5nKHJlc3VsdFBhdHRlcm4uZ2V0KCksIEZDX0ZPTlRfVkFSSUFUSU9OUywgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBGY0NoYXI4Kj4odmFyaWFudHMudXRmOCgpLmRhdGEoKSkpOwogICAgIH0K
ICNlbmRpZgotICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxh
dGZvcm1EYXRhPihmb250RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5
bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKKyAgICBhdXRv
IHBsYXRmb3JtRGF0YSA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2UuZ2V0
KCksIHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6
ZSgpLCBmaXhlZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVz
Y3JpcHRpb24ub3JpZW50YXRpb24oKSk7CiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBmb250IGhh
cyBhbiBlbmNvZGluZyBjb21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNvbmZpZyBjdXJy
ZW50bHkKICAgICAvLyBzdXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlwZUNoYXJJ
bmRleDogVW5pY29kZSwgU3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElmIHRoaXMgZm9u
dCBkb2Vzbid0IGhhdmUgb25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9uJ3Qgc2VsZWN0
IGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKaW5kZXggMTM3NjVmNDNkYTg2NjhkMmRlODJlNjcxZDgxODBkNjg0NDI4NDNiMC4uNTg5NDNk
MmE5MGRmYzU1MDFmMmRjYWE4ZWNmMGU5MGUxYWM3ZjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAgICBp
ZiAoRlRfTmV3X01lbW9yeV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRf
Qnl0ZSo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsK
IH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBT
dHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9UZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9UZXh0dXJlLmNwcAppbmRleCA4Njk4MTM2NDUxM2I4ZTZmMGQ3YjJkZGE1YmI4ZDFmODcyZTdm
NTc2Li43MWZkYTBkOTI0Y2QyNTVkYjNlZjEwNzdmOWUxMDc4MTRlMjQzZGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC05NSw3
ICs5NSw3IEBAIFJlZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIEZvcm1hdCBmb3JtYXQsIGludCB3CiAgICAgICAgIG51bVRpbGVzID0gMDsK
ICAgICB9CiAKLSAgICBhdXRvIHRleHR1cmVJZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1
bnNpZ25lZD4+KG51bVRpbGVzKTsKKyAgICBhdXRvIHRleHR1cmVJZHMgPSBtYWtlVW5pcXVlPFZl
Y3Rvcjx1bnNpZ25lZD4+KG51bVRpbGVzKTsKICAgICB0ZXh0dXJlSWRzLT5maWxsKDAsIG51bVRp
bGVzKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmNGE0YmEx
YThhY2FkNWUyMDVhNTkzYTQ4Zjc0ODZiMjhjN2JlMWQ1Li5mNmUxZTE0NjkzYzc5ODQyNTJmNzhl
Yjc4MGQwMjRjZjY0NWVhNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJl
Z2lzCiB7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6ZURl
YnVnQ2F0ZWdvcnkoKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3Ry
YXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVz
LCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lz
dGVtKTsKICAgICB9CiB9CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAog
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fZXJyb3JPY2N1cmVk
IHx8IGlzTGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIApAQCAtMjM3
Niw3ICsyMzc2LDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjph
dWRpb1NpbmsoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3Vy
ZUF1ZGlvU291cmNlUHJvdmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVy
KQotICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXI+KCk7CisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRl
ciA9IG1ha2VVbmlxdWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKIH0KIAogQXVk
aW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NvdXJj
ZVByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcAppbmRleCAwNzI4ZWViNjQyMGFmZmI5NmM3YTFhNDlmNTU1NWQ5ZjNiM2Q5
OGQ1Li5lZThmYmRkYTU3MmZmNTdlZDRjMTc3YzBjNDljN2U1ODJkZjk5ZmE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03
MTAsMTkgKzcxMCwxOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1
c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKICAgICAgICAgICAgIGlmICghcHJveHkuaXNBY3RpdmUo
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0
VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAh
bV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxH
c3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFt
ZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0Zh
bGxiYWNrVmlkZW9TaW5rKTsKIAogICAgICAgICAgICAgR0x1aW50IHRleHR1cmVJRCA9IGZyYW1l
SG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgICAgICBpZiAo
dGV4dHVyZUlEKSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9s
ZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSk7CisgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZy
YW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAgICAg
ICAgICAgbGF5ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGTW92ZShm
cmFtZUhvbGRlcikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBsYXll
ckJ1ZmZlciA9IHByb3h5LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6ZSgpLCBH
TF9ET05UX0NBUkUpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbGF5ZXJCdWZmZXIp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6
Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkpOwogICAgICAgICAg
ICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRl
ci0+aGFzQWxwaGFDaGFubmVsKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0
bWFwVGV4dHVyZTo6Tm9GbGFnKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3Zl
KHRleHR1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnVwZGF0ZVRleHR1
cmUobGF5ZXJCdWZmZXItPnRleHR1cmVHTCgpKTsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZl
ci0+c2V0RXh0cmFGbGFncyhtX3RleHR1cmVNYXBwZXJGbGFncyB8IChmcmFtZUhvbGRlci0+aGFz
QWxwaGFDaGFubmVsKCkgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCkpOwpAQCAt
OTEyLDcgKzkxMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgaWYgKCFHU1RfSVNf
U0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFw
cGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVy
PiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUu
Z2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVyZUlE
ID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAtOTIz
LDcgKzkyMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgICAgIHNpemUgPSBzaXpl
LnRyYW5zcG9zZWRTaXplKCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAg
ICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJl
Q29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAg
ICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAgcmV0
dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUodGV4dHVyZUlELCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBp
bnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0
aW9uKTsKIH0KQEAgLTkzOSw3ICs5MzksNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBpZiAo
IUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1f
dGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9G
cmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+
KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRv
IHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJ
RCkKQEAgLTk1Myw3ICs5NTMsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBjb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0g
ICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7Cisg
ICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAgICBp
ZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUodGV4dHVyZUlELCBzaXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlv
bikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEyNSw2ICsxMTI1LDcgQEAgc3RhdGlj
IHZvaWQgc2V0UmVjdGFuZ2xlVG9WaWRlb1NpbmsoR3N0RWxlbWVudCogdmlkZW9TaW5rLCBjb25z
dCBJbnRSZWN0JiByZWN0KQogfQogCiBjbGFzcyBHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQgOiBw
dWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OkhvbGVQdW5jaENsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVySG9s
ZVB1bmNoQ2xpZW50KEdSZWZQdHI8R3N0RWxlbWVudD4mJiB2aWRlb1NpbmspIDogbV92aWRlb1Np
bmsoV1RGTW92ZSh2aWRlb1NpbmspKSB7IH07CiAgICAgdm9pZCBzZXRWaWRlb1JlY3RhbmdsZShj
b25zdCBJbnRSZWN0JiByZWN0KSBmaW5hbCB7IHNldFJlY3RhbmdsZVRvVmlkZW9TaW5rKG1fdmlk
ZW9TaW5rLmdldCgpLCByZWN0KTsgfQpAQCAtMTE0Nyw4ICsxMTQ4LDggQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAg
ICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAg
ICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4g
bGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RP
TlRfQ0FSRSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9sZVB1bmNo
Q2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckhvbGVQ
dW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VV
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9
IG1ha2VVbmlxdWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQoKSk7
CiAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0SG9sZVB1bmNoQ2xpZW50KFdURk1vdmUoaG9s
ZVB1bmNoQ2xpZW50KSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3Zl
KGxheWVyQnVmZmVyKSk7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA4MDc5YTVmZWFhYTc5N2ZhZGMzODI0Njcy
NGViYmNkN2Y2Zjk5NWUzLi5hZDRlZGY1ZTZlNWRmYjM3ODRmY2ViMTc4YmE4Mjc3MTRkZjljY2Ux
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmgKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmwKICNlbmRpZgogI2Vu
ZGlmCiB7Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKaW5kZXggMjBmYjY2M2VmMTI0MzEwMTY2NTQ3ZjQw
MmNlNzYzMDNlMGM3MTUxNS4uZjAxNjAwYTNjNDU5NGRmOGQxNmY0ZjBjYzE0Njg1MmFlMTVjNGI2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaApAQCAt
MzMsNiArMzMsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTsKIGNsYXNzIElt
YWdlT3JpZW50YXRpb247CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDb2xv
ckNvbnZlcnNpb24gewogICAgICAgICBDb252ZXJ0QkdSQVRvUkdCQSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTczZjRkNGYwMDMyMzU2ZjE3N2Vi
ZDdmYzRiOWU5NGE1MjkyZjk1YS4uOTgxMGMyNTdiMzc3NmZmZDhkNDIxMmU5Njk0YmU5MmIyNTk3
MzUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAg
LTUwLDYgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIExPV19RVUVV
RV9GQUNUT1JfVEhSRVNIT0xEIDAuMgogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudCBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50KTsKIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZVN0cmVh
bWluZ0NsaWVudChXZWJLaXRXZWJTcmMqLCBSZXNvdXJjZVJlcXVlc3QmJik7CkBAIC02MzIsNyAr
NjMzLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KEdzdEJhc2VT
cmMqIGJhc2VTcmMsIGJvb2wgbm90aWZ5QXN5bmNDb20KICAgICAgICAgICAgIGxvYWRPcHRpb25z
IHw9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0YTsK
ICAgICAgICAgcHJpdi0+cmVzb3VyY2UgPSBwcml2LT5sb2FkZXItPnJlcXVlc3RSZXNvdXJjZShS
ZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGxvYWRPcHRpb25zKTsKICAgICAgICAgaWYgKHByaXYt
PnJlc291cmNlKSB7Ci0gICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5nZXQo
KSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CisgICAgICAgICAgICBwcml2LT5yZXNvdXJj
ZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHBy
b3RlY3Rvci5nZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CiAgICAgICAgICAgICBH
U1RfREVCVUdfT0JKRUNUKHByb3RlY3Rvci5nZXQoKSwgIlN0YXJ0ZWQgcmVxdWVzdCIpOwogICAg
ICAgICAgICAgaWYgKG5vdGlmeUFzeW5jQ29tcGxldGlvbikKICAgICAgICAgICAgICAgICBnc3Rf
YmFzZV9zcmNfc3RhcnRfY29tcGxldGUoR1NUX0JBU0VfU1JDKHNyYyksIEdTVF9GTE9XX09LKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcAppbmRleCA0ZTlkMTlkODUyN2Q2OTYyMGNmNWFhOTQxMDczNjI4MzgxYjNjOWYwLi5l
Njg4MGQ5OGU3ZmNhZDFkMDUzZjg0ZWQzOGE2ZmQ4MTk4ZGU3Yjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlCiAgICAgaW5pdGlhbGl6ZUdTdHJl
YW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMoKTsKICAgICBHU1RfREVCVUdfQ0FURUdPUllf
SU5JVCh3ZWJraXRfbXNlX2RlYnVnLCAid2Via2l0bXNlIiwgMCwgIldlYktpdCBNU0UgbWVkaWEg
cGxheWVyIik7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtd
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBl
cywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5
c3RlbSk7CiAgICAgfQogfQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjpzZXRSYXRlKGZsb2F0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZl
cmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1
cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0U6OnNvdXJjZVNldHVwKEdzdEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmluZGV4IDExNzI0NTg0
MTBlOWExNDUzYjYzNWIwZjhkOTFiOWZiNGE2OTZjNTguLjBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1
M2Y4YWI0OTdkNDdlMzc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2guY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAgICAgICAg
ICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3Np
emUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CisgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NB
UkUpOwogICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZl
cikpOwogICAgICAgICB9OwogCkBAIC0xNDEsNyArMTQxLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25zdCBN
ZWRpYUUKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQ
bGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2g+KHBsYXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5
cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xl
cHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggZjBkMDRkNGM2M2Q5MzEy
MGJjZTgwNWFiOGZlYTI4N2EwMWUwNDQyYS4uOGJmNzIxMzE4ODE5YzQwMjY3YjcyMWZhOWI4MmFj
MWNkOTI2ZjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2guaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2gg
OiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgICwgcHVi
bGljIFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogewotCisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKE1lZGlhUGxheWVy
Kik7CiAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCgpOwpAQCAtNzksNyArNzksNyBA
QCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUg
bmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkVtcHR5OyB9
OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9OwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OwogCiAgICAgYm9vbCBkaWRMb2Fk
aW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IGUxYTNhODY2MzE0
NzVjYWI3YTliMTcxYjQwNjJkMzkzZDg5MGU2MDYuLmVjZjg5NjkzZGEzMzg1MjAxMmU3NTAyMTEy
OTk4MDk5ZWM4ZGFjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPQm94LmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgRGF0YVZpZXc7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SVNPQm94KCkgPSBkZWZhdWx0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
T3JpZ2luYWxGb3JtYXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09PcmlnaW5hbEZvcm1hdEJveC5oCmluZGV4IDcwYmI4NjExMzE2ZTY4NWI3NmI3ODgzOGI1
ZWQwNjAzNzZiOWIxYTkuLjE4ODNiYTQ3YmRmM2E1MmFmYjJmZjdkMGRkNWNkOWRjZDdjZGQ4NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Pcmln
aW5hbEZvcm1hdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09PcmlnaW5hbEZvcm1hdEJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2luYWxGb3JtYXRCb3ggOiBw
dWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0Qm94
IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hU
eXBlTmFtZSgpIHsgcmV0dXJuICJmcm1hIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJ
bmZvQm94LmNwcAppbmRleCBkOGQ3NDAxYTc1NjAwNDZjOThhZmY4Y2IxMWViMmU3MjIzYzk4MWNl
Li5iZGZkYmRjOTZjZjBlMWI1MGE3Mjg1ODI4OGM5YjJmNDc0ZjdkMGZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUlu
Zm9Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBJU09Qcm90
ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZz
ZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChvcHRpb25hbEJveFR5cGUudmFs
dWUoKS5maXJzdCA9PSBJU09TY2hlbWVUeXBlQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAgICAg
IG1fc2NoZW1lVHlwZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lVHlwZUJveD4oKTsK
KyAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0gbWFrZVVuaXF1ZTxJU09TY2hlbWVUeXBlQm94Pigp
OwogICAgICAgICBpZiAoIW1fc2NoZW1lVHlwZUJveC0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBJU09Q
cm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBv
ZmZzZXQpCiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLmZpcnN0ID09
IElTT1NjaGVtZUluZm9ybWF0aW9uQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAgICAgIG1fc2No
ZW1lSW5mb3JtYXRpb25Cb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZUluZm9ybWF0aW9u
Qm94PigpOworICAgICAgICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0gbWFrZVVuaXF1ZTxJU09T
Y2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZUluZm9ybWF0aW9u
Qm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1By
b3RlY3Rpb25TY2hlbWVJbmZvQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAppbmRleCBmMzdiNzYyNDlkOGUwMGZh
MTdhMDU1OTI5ZTc3NjY4NTEzNzMzMzY2Li44ZTU2NzNlMDUxNmE2NTAxNGY1Y2Q0OWY2MWFhN2I3
NTM4ZDJjYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJU09TY2hlbWVUeXBlQm94OwogY2xh
c3MgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1By
b3RlY3Rpb25TY2hlbWVJbmZvQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewog
cHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAic2luZiI7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKaW5kZXggYjRmMjc3YTY4NDdjYzIw
ZDRmYzlkNjI2ZjljYWNjNzQzMGFkYWY3MC4uYzgzYzRmZjdiMzhhYmYxYWUyMmZmZTVlNzJjN2Ex
Zjg2YTA4ZWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIGJvb2wgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3
LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICBpZiAobG9jYWxPZmZzZXQgKyBzY2hlbWVTcGVj
aWZpY0JveFR5cGUudmFsdWUoKS5zZWNvbmQgPiBvZmZzZXQgKyBtX3NpemUpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9zY2hlbWVTcGVjaWZpY0RhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVTcGVj
aWZpY0RhdGEgPSBtYWtlVW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKICAgICAgICAg
aWYgKCFtX3NjaGVtZVNwZWNpZmljRGF0YS0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaApp
bmRleCA5ZWRiMTg3OGE5YmE5MTliZWIxOWQ3YjYyMjNkOWU3ZTQ2NGY2ODU4Li5lOGVjMGM0YzY5
Yjc0ZTgzMzQ0OTg5NDFmMjRlZWU0MTBmMmNkZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25C
b3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9ybWF0aW9uQm94IDogcHVibGljIElTT0JveCB7Citj
bGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCBmaW5hbCA6IHB1Ymxp
YyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJl
dHVybiAic2NoaSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKaW5kZXggNjE5NjEwMzlmNDhjZjJiYzZlZTdi
ODg0ODA3M2M4Mzc2ZTU4MzEzMC4uNGI4ZjI2MzM3NTBmOGFkZjkwYmMyN2MyZDBjZjE0ZWY5ODJj
MTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1NjaGVtZVR5cGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPU2NoZW1lVHlwZUJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlwZUJveCA6IHB1YmxpYyBJ
U09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggZmluYWwg
OiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBl
TmFtZSgpIHsgcmV0dXJuICJzY2htIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKaW5kZXgg
ZjRlZmUyODEwNTFlM2M3YjI5ZGJlZjc4ZTQ0ZGEzYjAzODc4MDNmMy4uNDdmYTQ5NzI0NmM3MTVi
ZTFkMmNlZjliMGVhODdkZDdmNzllZjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaApAQCAt
MjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxs
Qm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4g
InRlbmMiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1ZUVEN1ZS5jcHAKaW5kZXggOWVjNDA4OTRmMWUyOGEwNWEyMTRjYjMyMzUxNGY3YjEzOTU1
ZDI4NC4uNGI1MTZlZThkZDdmN2QyMzdlOGQ2MjcyNzk3YjAzMmRkMWY1YWNjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAgdXNpbmcgSlNDOjpEYXRhVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBJU09TdHJpbmdCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT1N0cmlu
Z0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYg
Y29udGVudHMoKSB7IHJldHVybiBtX2NvbnRlbnRzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAppbmRleCBhNjE2MGI2NmFlOTQ2ODIw
Njc3YWQyOTM0YjE4MWRlYjkzY2M0ZjQ5Li5hZTIzYmVmZmZlZDY0YTZkZTI4OTE3NmU0MTUxMDEx
ZjA2N2M5ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1ZUVEN1ZS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE4g
Ynl0ZXMgOiBDdWVUaW1lQm94IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVTZXR0
aW5nc0JveCA6IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlUGF5bG9hZEJveCA6IGJv
eCA6IHJlcXVpcmVkCi1jbGFzcyBJU09XZWJWVFRDdWUgOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNz
IElTT1dlYlZUVEN1ZSBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIElTT1dl
YlZUVEN1ZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGNvbnN0IE1lZGlhVGlt
ZSYgZHVyYXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggM2Q1ZWYw
OWI3ZDk0MDMwNTk3NDFkODA4MjhmNTE4ZGVmYzg0MjNiNS4uZWYxMGIzM2E1NGIzNWQ3ZDU3MWYw
NmU0MTZmMTI5MjIwODlhYzA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAt
ODQsNyArODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpKTsKIH0KIAogYm9v
bCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZv
cm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oCmluZGV4IDgzZjc3NjY3
OWUxODljNmZjZTRlZjg2MjU3YjAwNWQxMTM3NGUyMmQuLjZmMjE1YjI3YWFkOTZjM2ZhOWMyMDdm
MzIwZWY5ZTMyYjQzYjdjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24u
aApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgTmljb3NpYSB7CiBzdHJ1Y3QgUGFpbnRpbmdP
cGVyYXRpb25SZXBsYXkgeyB9OwogCiBzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb24geworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICB2aXJ0dWFsIH5QYWludGluZ09wZXJh
dGlvbigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJh
dGlvblJlcGxheSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0m
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDEwOWMy
YzU3NzY3OWExMjE0YWE2ZWExMDFjNmY0ODBmYmEyZWM2MDEuLjViZWU2MTNmY2Y2YjQ2YTA3YzYy
OGU1ODAxNmY0OWJiOTAyMWIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRp
b24uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVxdWVzdFVw
ZGF0ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4g
U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKIH0KIAogU2NlbmVJbnRlZ3Jh
dGlvbjo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAyYjFhZWNmMGQx
YjdlNmEzNDFiZjk0YmZmYWVkMjIwZjFhNDU4NjM4Li41MGUwYzNjN2Q5NzY4MjZiYTdiYjgxODVk
MWVlMTQyMTI5YWRhMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBhdXRvIGNyZWF0ZUNv
bW1hbmQoQXJncyYmLi4uIGFyZ3VtZW50cykgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jh
c2Vfb2Y8T3BlcgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGF1dG8gY3JlYXRlQ29tbWFuZCgpIC0+
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXJhdGlvbkRhdGE8PiwgVD46OnZh
bHVlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+PgogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VD4oKTsKIH0KIAog
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKaW5kZXgg
MGM4YTY3MGUzYTBhMzYzMDdlM2YyOTllY2RhMDI1NTJmZDc3NGVkMS4uYjM1MDhkNTE3YjI0ZTQ3
NWMwOGFmNDhiMzNlNDMxZmQyNzkyMDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcApAQCAtNzAsOCArNzAsOCBAQCBQYWludGlu
Z0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYgYnVmZmVyKQog
ICAgICAgICB9KTsKIAogICAgIG1fY2Fpcm8uY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0
ZShtX2NhaXJvLnN1cmZhY2UuZ2V0KCkpKTsKLSAgICBtX3BsYXRmb3JtQ29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4
dC5nZXQoKSk7Ci0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpj
cmVhdGVGYWN0b3J5KCptX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fcGxhdGZvcm1Db250ZXh0
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWlyby5jb250
ZXh0LmdldCgpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0
ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CiB9CiAKIFBhaW50aW5nQ29udGV4dENhaXJv
OjpGb3JQYWludGluZzo6fkZvclBhaW50aW5nKCkKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHZvaWQg
UGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkoY29uc3QgUGFpbnRpbmdP
cGVyYXRpb25zJiBwYWludGluCiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6
OkZvclJlY29yZGluZyhQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0aW9ucykKIHsK
LSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0PigKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0PigKICAgICAgICAgWyZwYWludGluZ09wZXJhdGlvbnNdKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRp
bmdPcGVyYXRpb25zKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CiAgICAgICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBkNGM5YjYwNWI0Y2QyOGUzNDhlZmQ4NTMz
NTAzOGI1OGM5YTRkZGZhLi44ZTM3OTBmN2FiNTRmNmIzZDk1NmYzMDcwNGM0MjljMmFjZGMzMTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5n
U3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBCYWNraW5n
U3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAg
ICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10oQmFja2luZ1N0b3JlJikgewotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+
KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0
dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggZWFk
NDk3NzZlNTBhMjNjZmQ1MDE0YTdlOTY0MzBiM2RlMTI0ZGIwYS4uZDQzNmYyMGMzMTYxYzA1NTRh
NWFhMjJhMzkzMGE5OTVlZWMzNWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQxLDYgKzQx
LDcgQEAKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwgZmluYWwgOiBwdWJsaWMgQmFja2luZ1N0b3JlOjpJbXBsLCBwdWJsaWMgV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXll
clRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCAzOGZkZDkzZGE2YjEzODgzMTQwNTkxNjUzY2Rm
MjllMDdkZTMyMzk2Li43NTY5MmM3YzRhN2JmZGIxODcxZGYxODAyZTM4Nzc1MzZiNjE1NTFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9z
aXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRvIENv
bXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3Rv
cnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10odWludDY0X3QsIENvbXBvc2l0
aW9uTGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21wb3Np
dGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9z
aXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggNjU1NWJmYjA4MDI2MWU4YTMwOTVi
ZGU0ODNhMDYxYmI1NDIxNDU3NC4uNTMwYTY3NTEwMTcyNmVhMjg3MjhjNTNkODg4ZGJkZWY3YWFl
Nzk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFD
b21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFz
cyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIENvbXBv
c2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb21wb3NpdGlvbkxh
eWVyOjpJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmlu
ZGV4IDU2MTcyOGI1ZWYxZjQwZDgwYzUzNTk5MjY3MTA2NmFkODc0ODE5YTcuLjJmYjBlYzk1OTE1
YWViMGJhMDk2ZjgwYmM2OTBkMmYzYjI4NDhjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0
dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApA
QCAtMzksNyArMzksNyBAQCBhdXRvIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVh
dGVGYWN0b3J5KENsaWVudCYgY2xpZW50KSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3Rv
cnkoCiAgICAgICAgIFsmY2xpZW50XShDb250ZW50TGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBw
ZXJJbXBsPihjbGllbnQpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaAppbmRl
eCBlZjk2YTYwODMxNjJkZTQxYzI3ZGU0YmYzNTdiOGE0ZmNhZjhkOWNmLi5iMDEwNWI3M2FjMjI2
NGY1N2NhN2I3ZTUwM2VjZjcwZGE1MjdkYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDEs
NiArNDEsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OwogbmFtZXNw
YWNlIE5pY29zaWEgewogCiBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCBmaW5h
bCA6IHB1YmxpYyBDb250ZW50TGF5ZXI6OkltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUdDM0RMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAppbmRleCA1MmVjNzBiNjgxZjdiYzU2M2E2NzQ3
NTQzNjIzODc2YjAzMTM5YTliLi45YTliZDQ2ODNiMjY3NDJhZmVjYjE0OTFmNjE0NGYyYTc4YzU5
NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcApAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIEdDM0RMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgIGF1
dG8mIHByb3h5ID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGw+KG1fY29udGVudExheWVyLT5pbXBsKCkpLnByb3h5KCk7CiAKICAgICAgICAgTG9ja0hvbGRl
ciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0
Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50
ZXJuYWxDb2xvckZvcm1hdCkpOworICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3Np
dG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9y
Rm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFHQzNETGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaAppbmRleCAzMmRiOWRkMzdhNmYwZDlm
YThkNGQxODhlYjE4ZjhhZTE0NzVhMDBiLi45ZjU0NDViYmUxMTgzY2U3NDg1NTkzY2JiYmYxNjUw
ZWRjY2U0MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oCkBAIC00MSw2
ICs0MSw3IEBAIGNsYXNzIEdMQ29udGV4dDsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3Mg
R0MzRExheWVyIDogcHVibGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdDM0RMYXllcihX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpS
ZW5kZXJTdHlsZSk7CiAgICAgdmlydHVhbCB+R0MzRExheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VC
YWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBs
LmNwcAppbmRleCBhMmFlMzRhMzEzMjdlODcxNTY1NDE0NmQxOGY3N2M3YTY3ZjI0MjE2Li5kMzUz
YzhiZTFiNWJmYTExNmI2Y2I4NTIwOTcwMjc3Y2M5MzI0NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNr
aW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAg
ICAgICAgW10oSW1hZ2VCYWNraW5nJikgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggMWE2MjNhZmE0MDkzYjIyYWMyMGQxM2Iz
MjkzNjA4M2FjYjA4ZWE4MC4uNDliMWU5YjJlYzAzNTUyYTBiZDYxMjBhZTc3YjhlNjk0YTk0NjE1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFj
a2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgSW1hZ2U7CiBu
YW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBs
IGZpbmFsIDogcHVibGljIEltYWdlQmFja2luZzo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uczNET3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKaW5kZXggN2M2MTRmYjQwMzM1OGVh
NDA0NTZkODQ2MmNmOGRjNWJjM2E0ZWIxOS4uMTQ3MjE3OTA3NzI3Y2FlZWEyN2VmNjhhMDY5Y2Mw
NTMxMDgyMGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaApAQCAtMzUs
NiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlbnNpb25zM0RPcGVu
R0xDb21tb24gOiBwdWJsaWMgRXh0ZW5zaW9uczNEIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zM0RPcGVuR0xDb21tb24oKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTY4NDhmY2VjYTQx
ZTk3MzZmMmEzODE3YTlmZDAzY2ViYWUzYWMxMS4uYjk2MzYzYjU1MTkzNTZjOGNkZjQ2NTQzNjMy
NmVkMDZjZWNlZDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBA
IC00NzUsNyArNDc1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNE
Y2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5z
aW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxp
YW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9w
ZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9u
czsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggYjI0ZGYwMzVlMjg4ZTFlYjJmOGFmOWY3YWI5MWQ3NzlkMGFjYTQ5ZS4uMmEw
ZTViNzZlNGQ2YmFiNzBlOTBiMmYzZDI4ZWI0M2MwN2Y0MjUxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRl
cikKICAgICBBTkdMRVJlc291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZvclNoYWRlcjsK
IAogICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1lSGFzaE1hcEZv
clNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAgICBu
YW1lSGFzaE1hcEZvclNoYWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwogICAg
IHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMuZ2V0
KCkpOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIApAQCAt
MTAyMyw3ICsxMDIzLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xO
YW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAgICAgICAgLy8gQXR0
cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZvcmUg
YW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBhbmQgYXJlbid0IGV2
ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0uCiAgICAgICAgIGlm
ICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFk
ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgICAgIG5h
bWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAgICAg
ICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMu
Z2V0KCkpOwogCiAgICAgICAgIGF1dG8gZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFzaGVkTmFt
ZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRleCAy
NDMwNDZkOTg5YWQ3MzhmN2M5ZjcxNDk1NTY3Yzk2YmIzNGM1NjQxLi43MGEyMGQ1MGMzNTIxYTYx
MjNlNmVmYWYxZjQ3NjhmNjQ5NWNkZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMRVMuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAg
IG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRo
aXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlx
dWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAg
cmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3ND
b250ZXh0M0RBdHRyaWJ1dGVzCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0Qo
R3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNE
KiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV9jb21w
aWxlcihpc0dMRVMyQ29tcGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dMU0xfQ09NUEFU
SUJJTElUWV9PVVRQVVQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKKyAgICAsIG1fcHJpdmF0ZSht
YWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RU
ZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlZDZjY2YxOTRiYmVlMWUwMGZkNDM5ZjYxYTZkZTYyZTQw
MzAyZWEzLi44ZmQzYWQ0ZjcyZDc2NGJkOTVkMjIwZjU4MWVkMmI3OTYyODgzYzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTA2LDkg
KzEwNiw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiB7CiAgICAgQVNTRVJUX1VOVVNFRChz
aGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAjaWYgVVNFKE5JQ09TSUEpCi0gICAgbV9u
aWNvc2lhTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRoaXMs
IHJlbmRlclN0eWxlKTsKKyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6
R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2Vsc2UKLSAgICBtX3RleG1hcExheWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlz
LCByZW5kZXJTdHlsZSk7CisgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2VuZGlmCiAKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTMyNSwxMCArMzI1LDEwIEBAIEV4dGVuc2lvbnMz
RCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgIGlmICghbV9leHRlbnNp
b25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5v
dCBhdmFpbGFibGUgb24gR0xFUzIuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CisgICAgICAgIG1fZXh0
ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7
CiAjZWxzZQogICAgICAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3JlIHBy
b2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCi0gICAgICAgIG1fZXh0
ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENv
bnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIG1fZXh0ZW5zaW9u
cyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJl
bnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuICptX2V4
dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIu
Y3BwCmluZGV4IDE0ZjFkYmYxOGQ5MWIzOTA3NWUyZDUwZjIxNDliNzc2YmJjMTc0OTMuLjY2MzIz
MTU2OTViYTIxYzI2N2QxNTU5MzJlYmE5MTQ3ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIAog
ICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHktPmxv
Y2soKSk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihzdGQ6
Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQu
bV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRl
cm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4
dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2Nv
bnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQu
bV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXIuaAppbmRleCA4YjYwMjE0YWJhOWI4M2NhMTkzMGYxMzVjNzUzNDhiMjY2ZmU1Y2FjLi5lNmYw
OWM4Nzk4NTQ4NjMyZWU0YjBhYTVhNTYzMDYxNWEyNGEzNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9y
bUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIEdM
Q29udGV4dDsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7CiAKIGNsYXNz
IFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllciA6IHB1YmxpYyBQbGF0Zm9ybUxheWVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVy
R0MzRFBsYXRmb3JtTGF5ZXIoR3JhcGhpY3NDb250ZXh0M0QmLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyU3R5bGUpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA5NzRiODU3OGI4OGFhNjQzNTA5MWU4YjBj
MzhiYjJkYjcxMGVmMTAyLi5hMmY3NTg2NmUzMjNiOGZkYmE0M2EwMDdkNDQ3YWFhNDY1NzZiZmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIFRleHR1cmVNYXBw
ZXJHTDo6VGV4dHVyZU1hcHBlckdMKCkKIAogICAgIG1fZGF0YSA9IG5ldyBUZXh0dXJlTWFwcGVy
R0xEYXRhKHBsYXRmb3JtQ29udGV4dCk7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAg
IG1fdGV4dHVyZVBvb2wgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFRleHR1cmVQb29sPihtX2Nv
bnRleHRBdHRyaWJ1dGVzKTsKKyAgICBtX3RleHR1cmVQb29sID0gbWFrZVVuaXF1ZTxCaXRtYXBU
ZXh0dXJlUG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7CiAjZW5kaWYKIH0KIApAQCAtNzkwLDcg
Kzc5MCw3IEBAIFJlZjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1
cmUoR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
PiBUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOwogfQogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggN2FmZGYzMGEwNWJjYTUzOTdi
ODAxOGJmZWJkODllMGUxZGE1MDMzMy4uZTExYTBiYjI3YjgxMGMyZDUyNzZiMmE5YjBjNTA5Zjg4
OTUwNjZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAg
YXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRl
eHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7CiAgICAgdGV4dHVyZS0+cmVz
ZXQobV9zaXplKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdl
dCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUo
dGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7
CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwg
ZmxvYXQgb3BhY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5LmNwcAppbmRleCBjNzE0ZjZkNzhjMWNmMWE2MWQ0ZGZmNmI0MjA1MjFiMDJlY2Q3YzUw
Li4zNzkzNjc1YWM4ZDZiM2MzMmEzYjMxODE5M2U0OWE3YjM3ZGM0ODgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC03MSw4ICs3MSw4
IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBv
c2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvCiAgICAgaWYgKG1fdGFyZ2V0TGF5ZXIgJiYgbV9j
dXJyZW50QnVmZmVyKQogICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xheWVyKG1f
Y3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKLSAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOwotICAgIG1fY29t
cG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1l
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0
aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVw
ZGF0ZVRpbWVyRmlyZWQpOworICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IG1ha2VV
bmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7CisgICAgbV9jb21wb3NpdG9yVGhyZWFk
VXBkYXRlVGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7CiAK
ICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRp
bWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkNvbXBvc2l0aW5nVGhyZWFk
VXBkYXRlVGltZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAzNjdkOGE1M2NmMzcwZDIyMDJkNmYzNDAxY2RjYjNh
MDJmZjQyYzJiLi5kNDc1NzEwYmEwY2RkZmJjZGJkYTBjNjhjZTMwYjgxZWZhYWQ2OWNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcApAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1
cGRhdGVDb250ZW50QnVmZmVycygpCiAKICAgICAvLyBFbnN1cmUgdGhlIFRpbGVkQmFja2luZ1N0
b3JlIG9iamVjdCwgYW5kIGVuZm9yY2UgYSBjb21wbGV0ZSByZXBhaW50IGlmIGl0J3Mgbm90IGJl
ZW4gcHJlc2VudCB5ZXQuCiAgICAgaWYgKCFsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUpIHsK
LSAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxU
aWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKKyAgICAg
ICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxUaWxlZEJhY2tpbmdT
dG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKICAgICAgICAgbV9wZW5kaW5n
VmlzaWJsZVJlY3RBZGp1c3RtZW50ID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5o
CmluZGV4IDJjMjRlMDg0ZTMyOTZhNDdlMDllOTYxMGQ3NDhkNmE4OGZlNDk2NTYuLmZiYzI0NWJl
MWU1MDM4NTNjNzMyZjAxZTVhMzRlNTU4NGE1YjNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaApA
QCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUaWxlZEJhY2tpbmdT
dG9yZTsKIAogY2xhc3MgVGlsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBDb29yZGluYXRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzYmU0MzExZGVhYTAyNDk3Yzdl
ZDFjZGNhMTM0NWJhNWE2ODAzMTA5Li40YTY5NzgyMmU0ZGUyY2RiOGI2NmY4MWQ0MDRkOGRiZTgy
YjQ5ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5j
cHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxl
cyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgcwogICAgIHVuc2ln
bmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikgewogICAgICAgICBU
aWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25dOwotICAgICAgICBt
X3RpbGVzLmFkZChjb29yZGluYXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFRpbGU+KCp0aGlzLCBjb29y
ZGluYXRlKSk7CisgICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIG1ha2VVbmlxdWU8VGls
ZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKICAgICB9CiAgICAgcmVxdWlyZWRUaWxlQ291bnQgLT0g
dGlsZXNUb0NyZWF0ZUNvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4IGM4
OGU5YmVmOWQ2NmNhMmI1NTAxOGM5MGY0YjBhNDI4YjQ2ODJlZjguLjRlYWYwMDExMjBjNDdmZmNl
NTVhYjRkZmE5MjE4M2NlOGIzMTk0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCkBA
IC00MCw3ICs0MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9
KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBpZiAobV9tYXBRdWFkKSB7CiAgICAg
ICAgIG1fbGFzdFBsYW5hclF1YWQgPSBvdGhlci5tX2xhc3RQbGFuYXJRdWFkOwogICAgICAgICBp
ZiAob3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBs
YW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKm90aGVyLm1f
bGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25k
YXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vjb25k
YXJ5UXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFy
eVF1YWQgPSBudWxscHRyOwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgVHJhbnNmb3JtU3RhdGUm
IFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVyKQog
ICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBudWxscHRyOwogCiAgICAgaWYgKG90aGVyLm1f
YWNjdW11bGF0ZWRUcmFuc2Zvcm0pCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRl
ZFRyYW5zZm9ybSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CiAg
ICAgICAgIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTEyOSwxMiArMTI5LDEyIEBAIHZvaWQg
VHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm1Gcm9tQ29uCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBhY2N1bXVsYXRlZCB0cmFu
c2Zvcm0gZnJvbSBsYXN0IHRpbWUsIG11bHRpcGx5IGluIHRoaXMgdHJhbnNmb3JtCiAgICAgaWYg
KG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IEFw
cGx5VHJhbnNmb3JtRGlyZWN0aW9uKQotICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21D
b250YWluZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgICAgICBtX2FjY3Vt
dWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNm
b3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdGlwbHkodHJhbnNmb3Jt
RnJvbUNvbnRhaW5lcik7CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRlID09IEFjY3VtdWxhdGVU
cmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3RhcnRlZCB0byBhY2N1bXVs
YXRlCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKKyAgICAgICAgbV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRy
YW5zZm9ybUZyb21Db250YWluZXIpOwogICAgIH0KICAgICAKICAgICBpZiAoYWNjdW11bGF0ZSA9
PSBGbGF0dGVuVHJhbnNmb3JtKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBUcmFuc2Zvcm1T
dGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRRdWFkKiBxdWFkKQog
ICAgIC8vIE1hcCB0aGUgcXVhZCBiYWNrIHRocm91Z2ggYW55IHRyYW5zZm9ybSBvciBvZmZzZXQg
YmFjayBpbnRvIHRoZSBsYXN0IGZsYXR0ZW5pbmcgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBGbG9h
dFF1YWQgYmFja01hcHBlZFF1YWQoKnF1YWQpOwogICAgIG1hcFF1YWQoYmFja01hcHBlZFF1YWQs
IGludmVyc2VEaXJlY3Rpb24oKSk7Ci0gICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0
ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CisgICAgbV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7
CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBUcmFu
c2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sKiB3YXNDbGFtcGVkKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1TdGF0ZS5oCmluZGV4IDEwODYzNzQwMGEyMGZhMmYwOWRmNmFkNDM5MzNjYTdkYTE3
ZjQ4NjEuLmI2MjU4MzZhNWNlMjI1YmY0N2YzMzBjMDhjMjlkOGM3NTY1MmVlNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybVN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgVHJhbnNmb3JtU3RhdGUg
ewogICAgICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0YXRlIChubyBhY2N1bXVs
YXRlZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBxdWFkLgogICAgICAgICBB
U1NFUlQobV9hY2N1bXVsYXRlZE9mZnNldCA9PSBMYXlvdXRTaXplKCkpOwogICAgICAgICBpZiAo
cXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25k
YXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAKaW5kZXggZDMxYTI1NzlmYjFlMWM3OTQyNWQwMjkwNWViZWJjODhkMTRhZGQ1MC4uOGY3
NzAyNzVkZTY5OTU2OGM4NTE1YWVhMGYyY2ZhMGU1MjA1NjcyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTY0
Miw3ICs2NDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hl
OjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgIGJvb2wgc3ludGhlc2l6
ZUJvbGQgPSBpc0dESUZvbnRXZWlnaHRCb2xkKHdlaWdodCkgJiYgIWlzR0RJRm9udFdlaWdodEJv
bGQobG9nRm9udC5sZldlaWdodCk7CiAgICAgYm9vbCBzeW50aGVzaXplSXRhbGljID0gaXNJdGFs
aWMoZm9udERlc2NyaXB0aW9uLml0YWxpYygpKSAmJiAhbG9nRm9udC5sZkl0YWxpYzsKIAotICAg
IGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3Zl
KGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVC
b2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVu
aXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNv
bXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VH
REkpOwogCiAjaWYgVVNFKENHKQogICAgIGJvb2wgZm9udENyZWF0aW9uRmFpbGVkID0gIXJlc3Vs
dC0+Y2dGb250KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMzg3YTIzOWY4
MjljMmQ3ODA5YzJjOTZkM2ZlMTI0ZGVlMTRiZDNkNy4uNjQ4NDg1YWMyNmNiMjM3NWNmNjU3NGY4
MWZmNGNkNjU2NzJjNTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTEz
LDcgKzExMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgZm9udFJlZmVyZW5jZSA9
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAgICBpZiAoIWZvbnRS
ZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJl
bmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9y
dHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApp
bmRleCAxOTA0NDkwMDQ1ZjRlN2U3ZjdkYjgxZDk1ZjBhNmEyNDJiZDU0ODM4Li5lYWI4MDZlNDJj
MDYyZDU1OTc4OTk0NTJlZmU3NDc0ZTU5OWY5MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKQEAgLTQxLDYgKzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdn
ZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVT
ZXR0aW5nczsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOwogcHVibGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoSEFORExFIGZv
bnRSZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKaW5kZXggYWI3Yzc5MGQ2MGYyZThmNzRhZjAzYzA2YWNmYzcyYzhlMzlj
MjJkOS4uZWVlYWZlYmQ5MzNjYTljNzhkZDA1MTQxM2QyMzM0NGNhODUzYjAxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmUKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAog
Ym9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcm
IGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI5NTM1NTAzYzMwNmM1MDFh
YTM5M2YzMWZmZDkyODg1ZWRlOWJkZWYuLmNjN2FkM2VjMzEwYmFmZjlmMmQ1MzEzZWEzN2ViYjY2
N2M3OWQ0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcApAQCAtNDMsNiArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgaW50IGtGdWxsU2NyZWVuQW5pbWF0aW9u
RHVyYXRpb24gPSA1MDA7IC8vIG1pbGxpc2Vjb25kcyAKIAogY2xhc3MgRnVsbFNjcmVlbkNvbnRy
b2xsZXI6OlByaXZhdGUgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVu
dCAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByaXZhdGUo
RnVsbFNjcmVlbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIEZ1bGxTY3JlZW5Db250cm9sbGVyQ2xp
ZW50KiBjbGllbnQpIAogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpAQCAtMTAz
LDcgKzEwNCw3IEBAIExSRVNVTFQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZhdGU6OmZ1bGxz
Y3JlZW5DbGllbnRXbmRQcm9jKEhXTkQgaHduZCwgVUlOVCBtCiB9CiAKIEZ1bGxTY3JlZW5Db250
cm9sbGVyOjpGdWxsU2NyZWVuQ29udHJvbGxlcihGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudCog
Y2xpZW50KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UHJpdmF0ZT4odGhpcywg
Y2xpZW50KSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFByaXZhdGU+KHRoaXMsIGNsaWVu
dCkpCiB7CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CiB9CkBAIC0xMzEsMTMgKzEz
MiwxMyBAQCB2b2lkIEZ1bGxTY3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4oKQogICAg
IG1fcHJpdmF0ZS0+bV9vcmlnaW5hbEZyYW1lID0gb3JpZ2luYWxGcmFtZTsKIAogICAgIEFTU0VS
VCghbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9iYWNr
Z3JvdW5kV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5k
V2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Piht
X3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5jcmVh
dGVXaW5kb3coMCk7CiAgICAgOjpBbmltYXRlV2luZG93KG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5k
V2luZG93LT5od25kKCksIGtGdWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24sIEFXX0JMRU5EIHwg
QVdfQUNUSVZBVEUpOwogCiAgICAgbV9wcml2YXRlLT5tX2NsaWVudC0+ZnVsbFNjcmVlbkNsaWVu
dFdpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS0+bV9mdWxsU2Ny
ZWVuV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdl
dCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IG1ha2VVbmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKICAgICBB
U1NFUlQobV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwogICAgIG1fcHJpdmF0ZS0+bV9m
dWxsU2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fp
cm9XaW4uY3BwCmluZGV4IDEwNjdiOTYwOTNkYjJlZDU5MWEyMWEzMWQ5ZDAyNTZkYzEyOTNlODku
LmYxNDQyNTcyY2M2ZDFkNTRiYmVlNThiZGJjMzZlZGY3NzRhYWJiNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENhaXJvV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9vbCBoYXNBbHBoYSkKIAogICAgIGNhaXJvX3QqIGNy
ID0gY3JlYXRlQ2Fpcm9Db250ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOwogCi0gICAgbV9kYXRh
ID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtQ29udGV4dENhaXJvPihjcikpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY3IpKTsK
ICAgICBtX2RhdGEtPnBsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1f
ZGF0YSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggYzJiYWZhZjk2
YTE2MDcwODBiNzYzMzk1MjY2MmU3Njc3NjE0YjAwYy4uOTZjODI4MWFmNGIyMmM2Njg2YWNiMTRj
NWU4MmMxZDY5YjkwZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMsIElE
MkQxRENSZW5kZXJUYXJnZXQqKiByZW5kZXJUYXJnZXQsIFJFCiAKICAgICAoKnJlbmRlclRhcmdl
dCktPkJpbmREQyhoZGMsICZyZWN0KTsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFyZ2V0
KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwgQml0
bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9
IGhkYzsKIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZv
cm1Jbml0KEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsK
KyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNvbnRleHQpLCBC
aXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1faGRj
ID0gaGRjOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGJk
NzZlZmJiYTlkMGU4OTdkM2QyODhlODVlOGQyNDQ0Y2M0ZjhmNGUuLjFlYmI1YjA5ZDM4NTM3YzAx
OTIyMGI5NDdkY2FkOTQ0ZDhlMTAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250
ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAg
ICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZv
cm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU1LDE0ICs1NSwxNCBAQCBHcmFwaGlj
c0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29u
dGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbcmVuZGVyVGFyZ2V0XShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4o
Y29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkKICAg
ICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJh
bnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAg
ICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5n
Q29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0Nv
bnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAgIG1f
cGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgp
KTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKQEAgLTcw
LDkgKzcwLDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXgKIAogR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIDogR3JhcGhpY3ND
b250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQot
ICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4
dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQogICAg
ICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3By
aXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1f
cGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRU
eXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpC
aXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRmb3Jt
Q29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAg
bV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRX
aW4uY3BwCmluZGV4IDViZGU0Y2VkZjUxNmE5MTc5YTZkM2QzYjNlMzNkMTM0ZWQ1YWI1MTEuLjFk
ODA0MjBjZjdlYzZjZDc3NWE2MmJhZWEyMmY5OTA2MDdlYjRjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRX
aW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6V2luZG93c0JpdG1hcDo6
fldpbmRvd3NCaXRtYXAoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0OjpXaW5k
b3dzQml0bWFwPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXAoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dzQml0bWFw
PihtX2RhdGEtPm1faGRjLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaW5kb3dzQml0
bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHAKaW5kZXggMDZjMTc0NTc5YTRiYzEzMDkxZjM0YjU3OTRhYWE5Mjk5M2JiYmEyNC4uMzVh
OWZmNjExMzUxYzMzYzcxNzRkOTJhMWZkY2Y0NDcwZTgxYTg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVj
dDJELmNwcApAQCAtMTEyLDggKzExMiw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIE5vdGU6IFRoaXMgcGxhY2VzIHRoZSBiaXRtYXBjb250ZXh0
IGludG8gYSBsb2NrZWQgc3RhdGUgYmVjYXVzZSBvZiB0aGUgQmVnaW5EcmF3IGNhbGwgaW4gdGhl
IGNvbnN0cnVjdG9yLgotICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKLSAgICBt
X2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEu
cGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0Nv
bnRleHRUeXBlOjpHUFVNZW1vcnkpOworICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBtYWtl
VW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAg
ICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEucGxh
dGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRUeXBlOjpHUFVNZW1vcnkpOwogCiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAppbmRleCBlMDY2MzEwYTBhY2E3
MWJkOWFjODFkZDE2YmEwZGIxNWE3ZDUxMWQ1Li5kMjg1MzhhMTU4MjI4YjJjODllMTgzYzczOTE0
ZTEyYjhhMTg5MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbkNsaWVudCB7CiB9OwogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5D
bGllbnQqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA1ODM4
ZWMxNTdhMmM3YjcxNjNiNzE2ODJhNGViOGM4MDM0ZTk2MzIxLi42ZDY0YWU5YTZlM2E0MTdmYjE0
ZjEyMTY2ZjY4ZDNjOWE1NTI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtODIsNyArODIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUo
TWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgp
KSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVy
KTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJu
IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9
LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwg
MCk7CiAgICAgfQogfQpAQCAtMzAxLDcgKzMwMSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpidWZmZXJlZCgpIGNvbnN0CiB7IAotICAgIGF1dG8gcmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byByYW5nZXMgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBpZiAobV9wcmVzZW50ZXIgJiYgbV9wcmVzZW50ZXIt
Pm1heFRpbWVMb2FkZWQoKSA+IDApCiAgICAgICAgIHJhbmdlcy0+YWRkKE1lZGlhVGltZTo6emVy
b1RpbWUoKSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fcHJlc2VudGVyLT5tYXhUaW1l
TG9hZGVkKCkpKTsKICAgICByZXR1cm4gcmFuZ2VzOwpAQCAtODg4LDcgKzg4OCw3IEBAIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3Rv
bVZpZGVvUHJlc2VudGVyKE1lCiAgICAgbV9zb3VyY2VSZWN0LmJvdHRvbSA9IDE7CiAgICAgbV9z
b3VyY2VSZWN0LnJpZ2h0ID0gMTsKIAotICAgIG1fcHJlc2VudGVyRW5naW5lID0gc3RkOjptYWtl
X3VuaXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKKyAgICBtX3ByZXNlbnRlckVuZ2luZSA9IG1h
a2VVbmlxdWU8RGlyZWN0M0RQcmVzZW50ZXI+KCk7CiAgICAgaWYgKCFtX3ByZXNlbnRlckVuZ2lu
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmgKaW5kZXggOTBlOWI3MjE1NzA4YWMyYTJlZmY3ZDRhNmFkZTE0N2VlZTI4ODQ2
Ni4uYTIxNjYxMTBiMzgwMGYxNzY0NzE2NWMyZDAyYTBkYTllYTk1MTAyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaApAQCAtNDcsNiArNDcsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKE1lZGlhUGxheWVyKik7CiAgICAgfk1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpOwpAQCAtMTY4LDYgKzE2OSw3IEBAIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhCiAgICAgfTsKIAogICAgIGNsYXNzIEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMg
SU1GQXN5bmNDYWxsYmFjaywgcHVibGljIE1lZGlhUGxheWVyTGlzdGVuZXIgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFzeW5jQ2FsbGJh
Y2soTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKiwgYm9vbCBldmVudCk7CiAgICAg
ICAgIH5Bc3luY0NhbGxiYWNrKCk7CkBAIC0xOTEsNiArMTkzLDcgQEAgY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmEKICAgICB0eXBlZGVmIERlcXVlPENPTVB0cjxJTUZTYW1wbGU+PiBWaWRlb1NhbXBs
ZUxpc3Q7CiAKICAgICBjbGFzcyBWaWRlb1NhbXBsZVBvb2wgeworICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFZpZGVvU2FtcGxlUG9vbCgpID0g
ZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+VmlkZW9TYW1wbGVQb29sKCkgPSBkZWZhdWx0OwpA
QCAtMjEyLDYgKzIxNSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
biBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgY2xhc3MgRGly
ZWN0M0RQcmVzZW50ZXI7CiAKICAgICBjbGFzcyBWaWRlb1NjaGVkdWxlciB7CisgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVmlkZW9TY2hlZHVs
ZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflZpZGVvU2NoZWR1bGVyKCkgPSBkZWZh
dWx0OwpAQCAtMjU3LDYgKzI2MSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgfTsK
IAogICAgIGNsYXNzIERpcmVjdDNEUHJlc2VudGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBEaXJlY3QzRFByZXNlbnRlcigpOwogICAg
ICAgICB+RGlyZWN0M0RQcmVzZW50ZXIoKTsKQEAgLTMxOSw2ICszMjQsNyBAQCBjbGFzcyBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYQogICAgICAgICAsIHB1YmxpYyBJTUZWaWRlb0Rpc3BsYXlDb250cm9sCiAg
ICAgICAgICwgcHVibGljIElNRkFzeW5jQ2FsbGJhY2sKICAgICAgICAgLCBwdWJsaWMgTWVkaWFQ
bGF5ZXJMaXN0ZW5lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1
YmxpYzoKICAgICAgICAgQ3VzdG9tVmlkZW9QcmVzZW50ZXIoTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uKik7CiAgICAgICAgIH5DdXN0b21WaWRlb1ByZXNlbnRlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4
dERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQuaAppbmRleCA2ZmJlMmI1ZWQ3NWFiM2JhMDRlMzAyNTQ5Y2NlYjkx
NjFhZjVjMDEzLi4xOTA1NDBlMDMzZDliN2NjOGM1NGI4YjFiZWY3NzY5MmJkNWY5NDI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaApAQCAtNDUsNiArNDUsNyBAQCBzdHJ1Y3QgU2hhZG93
U3RhdGU7CiB9CiAKIGNsYXNzIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCk7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQoSUQyRDFS
ZW5kZXJUYXJnZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCmluZGV4IDMzN2ZhZjM3OGRhNzk1NWJlYTYxMGFl
YzkwNzU3OTY2ZDZjNDgyMDAuLjlkN2Q5MmU4ZWFkOTZhMWJiZGZiZDFkOTJkYzk2NjIxYzZjNDJm
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NB
SW1hZ2VRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FJbWFnZVF1ZXVlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBXS0NBSW1hZ2VRdWV1ZVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFJldGFpblB0cjxDQUltYWdlUXVldWVSZWY+IG1faW1hZ2VR
dWV1ZTsKIH07CkBAIC01MCwxMyArNTEsMTMgQEAgc3RhdGljIHZvaWQgV0tDQUltYWdlUXVldWVS
ZWxlYXNlKENBSW1hZ2VRdWV1ZVJlZiBpcSkKIH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJbWFn
ZVF1ZXVlKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGNhcGFjaXR5
KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRl
PigpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigp
KQogewogICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlID0gYWRvcHRDRih3a0NBSW1hZ2VRdWV1
ZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBjYXBhY2l0eSkpOwogfQogCiBXS0NBSW1hZ2VRdWV1ZTo6
V0tDQUltYWdlUXVldWUoY29uc3QgV0tDQUltYWdlUXVldWUmIG8pCi0gICAgOiBtX3ByaXZhdGUo
c3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZh
dGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRl
LT5tX2ltYWdlUXVldWUgPSBvLm1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDcxYTAwYTMwYzBm
YWVkZDliNDBlYzRmZmFkZjE3ODYzOGYyNWI4NTQuLjQyMjUyZDM0YjU0ZmU2YzJjMjZiNTIyYzY2
MGU4NjJmMDU2ZWYwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEd0ay5jcHAKQEAgLTQzLDI0ICs0MywyNCBAQCBlbnVtIENsaXBib2FyZERhdGFUeXBlIHsK
IAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIkNM
SVBCT0FSRCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQi
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckdsb2JhbFNlbGVjdGlvbigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVi
b2FyZD4oIlBSSU1BUlkiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiUFJJ
TUFSWSIpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0
ZSgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NFUlQo
ZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5k
ZXggNDkwMzcxYWQ4OWVmMmU3OTZlMzQwMWFhYzFkYmI4MDZlYTk2NmViMC4uYWY4ZmYzNDI0NmJj
OTcyZjFhNWZmNzM3Zjk5Mjk4MDlmYjY2OWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApAQCAtMjY2LDYgKzI2Niw3IEBAIFZlY3Rv
cjxHZGtBdG9tPiBQYXN0ZWJvYXJkSGVscGVyOjpkcm9wQXRvbXNGb3JDb250ZXh0KEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtEcmFnCiBzdGF0aWMgU2VsZWN0aW9uRGF0YSogc2V0dGluZ0NsaXBib2Fy
ZFNlbGVjdGlvbjsKIAogc3RydWN0IENsaXBib2FyZFNldERhdGEgeworICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRhdGEm
IHNlbGVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENhbGxi
YWNrKQogICAgICAgICA6IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAgICAsIHNlbGVj
dGlvbkNsZWFyZWRDYWxsYmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykpCkBA
IC0zMDAsNyArMzAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENv
bnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWwKIAogICAgIGlmIChudW1i
ZXJPZlRhcmdldHMgPiAwICYmIHRhYmxlKSB7CiAgICAgICAgIFNldEZvclNjb3BlPFNlbGVjdGlv
bkRhdGEqPiBjaGFuZ2Uoc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgY29uc3RfY2FzdDxTZWxl
Y3Rpb25EYXRhKj4oJnNlbGVjdGlvbikpOwotICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENsaXBib2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBXVEZN
b3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IG1ha2VV
bmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1v
dmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRf
c2V0X3dpdGhfZGF0YShjbGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENsaXBi
b2FyZENvbnRlbnRzQ2FsbGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgZGF0
YS5nZXQoKSkpIHsKICAgICAgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShjbGlw
Ym9hcmQsIG51bGxwdHIsIDApOwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJkX3Nl
dF93aXRoX2RhdGEoKSBzdWNjZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sgdGFr
ZXMgdGhlIG93bmVyc2hpcCBvZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAppbmRleCBiZGNj
OTllODU5ZDQ5NzUwNzhmZjNjNWUyZWJjMzg1ZDliOTViOTUyLi43M2UwNzU4YTZlZGQxZTE5MzIz
MTA4M2Y4OWE3ZTdmZGYyMGQxMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKQEAgLTM1LDIwICszNSwyMCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyVGhlbWVHYWRnZXQ+IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoY29uc3Qg
UmVuZGVyVGhlbWVHYQogewogICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CiAgICAgY2FzZSBSZW5k
ZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJpYzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9u
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBh
cmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpU
eXBlOjpUZXh0RmllbGQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZv
LCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdl
dDo6VHlwZTo6UmFkaW86CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6Q2hlY2s6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0
PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBw
b3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QXJyb3c6Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGluZm8s
IHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24p
OwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6Okljb246Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBz
aWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZUljb25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNl
IFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpTY3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNp
YmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1l
U2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAg
Y2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJs
aW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1
dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIH0KIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKaW5kZXggMDVkMTJkZDllYWZiZWYwMmE0NTljYTUy
NzY0MTdhNWI5YjBlODk3Ni4uY2E2ZWQ5MThhNTAzM2UyOTc2ZGI4NGQ4OWMyMDQ4ODcwMGYwMmJj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lk
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRn
ZXQuY3BwCkBAIC00Miw0OSArNDIsNDkgQEAgUmVuZGVyVGhlbWVXaWRnZXQmIFJlbmRlclRoZW1l
V2lkZ2V0OjpnZXRPckNyZWF0ZShUeXBlIHdpZGdldFR5cGUpCiAgICAgYXV0byBhZGRSZXN1bHQg
PSB3aWRnZXRNYXAoKS5lbnN1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdpZGdldFR5cGUpLCBb
d2lkZ2V0VHlwZV0oKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVXaWRnZXQ+IHsKICAg
ICAgICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJ
Q0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJ
Q0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2UgUmVu
ZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdDoKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5U
QVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJU
aGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJ
Q0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3JvbGxi
YXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lk
Z2V0OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xsYmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9O
VEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUkla
T05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBS
ZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihH
VEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRp
Y2F0b3IpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxi
YXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6
OkluZGljYXRvcik7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRp
Y2FsU2Nyb2xsSW5kaWNhdG9yTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRl
clRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpW
ZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1l
U2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNh
bFBvc2l0aW9uOjpMZWZ0KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
SG9yaXpvbnRhbFNjcm9sbEluZGljYXRvcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwg
UmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUkla
T05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpDaGVja0J1dHRvbjoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVt
ZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBl
OjpDaGVjayk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlJhZGlvQnV0
dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dn
bGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhl
bWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlvKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVC
dXR0b246OkRlZmF1bHQ6Ok5vKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlw
ZTo6QnV0dG9uRGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1
dHRvbjo6RGVmYXVsdDo6WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlw
ZTo6Q29tYm9Cb3g6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZUNvbWJvQm94PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhl
bWVDb21ib0JveD4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6RW50
cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5
PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oKTsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VsZWN0ZWRFbnRyeToKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJlbmRl
clRoZW1lRW50cnk6OlNlbGVjdGVkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNlYXJjaEVudHJ5OgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+KCk7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNwaW5CdXR0b246Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2xpZGVyOgot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdU
S19PUklFTlRBVElPTl9WRVJUSUNBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNsaWRlcjoKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJ
T05fSE9SSVpPTlRBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NC
YXI6Ok1vZGU6OkRldGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVy
bWluYXRlKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SW5kZXRlcm1p
bmF0ZVByb2dyZXNzQmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5kZXRl
cm1pbmF0ZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVByb2dy
ZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsKICAg
ICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6TGlzdFZpZXc6Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lSWNvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6V2luZG93OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVXaW5kb3c+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVdpbmRvdz4oKTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKEd0a09yaWVudGF0aW9uIG9yaWVudGF0
aW9uLCBNb2RlIG1vZGUKICAgICBpbmZvLnR5cGUgPSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6
R2VuZXJpYzsKICAgICBpbmZvLm5hbWUgPSAiY29udGVudHMiOwogICAgIGluZm8uY2xhc3NMaXN0
LmNsZWFyKCk7Ci0gICAgbV9jb250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVC
b3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1fc2Ny
b2xsYmFyLmdldCgpKTsKKyAgICBtX2NvbnRlbnRzID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJv
eEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3Jv
bGxiYXIuZ2V0KCkpOwogICAgIGluZm8ubmFtZSA9ICJzbGlkZXIiOwogICAgIG1fc2xpZGVyID0g
UmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShpbmZvLCBtX2NvbnRlbnRzLT5jaGlsZChtX3Ryb3Vn
aFBvc2l0aW9uKSk7CiB9CkBAIC0xOTcsNyArMTk3LDcgQEAgUmVuZGVyVGhlbWVDb21ib0JveDo6
UmVuZGVyVGhlbWVDb21ib0JveCgpCiAgICAgfTsKICAgICBpbmZvLm5hbWUgPSAiYm94IjsKICAg
ICBpbmZvLmNsYXNzTGlzdCA9IHsgImhvcml6b250YWwiLCAibGlua2VkIiB9OwotICAgIG1fYm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVO
VEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKKyAgICBtX2Jv
eCA9IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElP
Tl9IT1JJWk9OVEFMLCBjaGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CiAgICAgUmVuZGVyVGhl
bWVHYWRnZXQqIGJ1dHRvbiA9IG1fYm94LT5jaGlsZCgwKTsKICAgICBpbmZvLmNsYXNzTGlzdC5y
ZW1vdmVMYXN0KCk7CiAgICAgbV9idXR0b25Cb3ggPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRl
KGluZm8sIGJ1dHRvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDg0MDdjMTEw
MWRkZDZkYjZlMzc4ZGVmY2IzYWI4MjZiZjcyNjQ1NGQuLjc4Njk3ZWIwMDAwZjdmN2I4MmE3ZDBl
Y2Y1Zjk4NWExZTkyODljMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIoYm9vbCBvbmx5U2l6
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3JlYWRlcikgewotICAgICAg
ICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVj
b2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwgZmFsc2UpOworICAgICAgICBtX3JlYWRlciA9IG1h
a2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9m
ZnNldCwgZmFsc2UpOwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3YmE3ZWQ5MTAxY2UyNWE5
YmY2ZTIzMTA4N2JmMGJjMTE0Y2MyMmQ2Li40ZjM0ODdlMzM0NzY0MDU0NzRjZjg2YjVjNjA2ZDJj
MTk4OGM3Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzM0LDcgKzMzNCw3
IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJ
RlF1ZXJ5IHF1ZXJ5LCBib29sIGFsbERhdGFSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
bV9yZWFkZXIpIHsKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkltYWdl
UmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEdJRkltYWdlUmVh
ZGVyPih0aGlzKTsKICAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDFjY2E1ZTU5ZWViMzUxYjA1OGEy
MWRiMTM0ZjY0Mzc5MWU1MDc3Y2EuLmQ3NzE4NmVhOTczOWJkZmIyYzU2MjI4ZWU0Y2Y1ZTg4Mjhk
ODg1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIGJv
b2wgR0lGRnJhbWVDb250ZXh0OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgV2ViQ29yZTo6CiAgICAgICAgIGlmICghaXNEYXRhU2l6ZURlZmluZWQoKSB8
fCAhaXNIZWFkZXJEZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAg
ICBtX2x6d0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNsaWVudCwg
dGhpcyk7CisgICAgICAgIG1fbHp3Q29udGV4dCA9IG1ha2VVbmlxdWU8R0lGTFpXQ29udGV4dD4o
Y2xpZW50LCB0aGlzKTsKICAgICAgICAgaWYgKCFtX2x6d0NvbnRleHQtPnByZXBhcmVUb0RlY29k
ZSgpKSB7CiAgICAgICAgICAgICBtX2x6d0NvbnRleHQgPSBudWxscHRyOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OnNl
dFJlbWFpbmluZ0J5dGVzKHNpemVfdCByZW1haW5pbmdCeXRlcykKIHZvaWQgR0lGSW1hZ2VSZWFk
ZXI6OmFkZEZyYW1lSWZOZWNlc3NhcnkoKQogewogICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5KCkg
fHwgbV9mcmFtZXMubGFzdCgpLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIG1fZnJhbWVzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7Cisg
ICAgICAgIG1fZnJhbWVzLmFwcGVuZChtYWtlVW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFt
ZXMuc2l6ZSgpKSk7CiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIHRvIGNsb3NlIHRv
IGRvTFpXKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDE4NzBiYjE2MGI4NDk0
OGYwYjU5ZGU0NTExNjM2YmE0YzBmMzhmMmUuLmZmNmExYzg3YWU2ZjA1YjQ5Y2NjMTI4YWJlMDVj
MzAzZDZlZWJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xOTUsNyArMTk1
LDcgQEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQog
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBoYXZlIGFscmVhZHkgc2l6ZWQgbV9mcmFtZUJ1ZmZl
ckNhY2hlIGJlZm9yZSB0aGlzLCBhbmQKICAgICAgICAgICAgIC8vIHdlIG11c3Qgbm90IHJlc2l6
ZSBpdCBhZ2FpbiBsYXRlciAoc2VlIGNhdXRpb24gaW4gZnJhbWVDb3VudCgpKS4KICAgICAgICAg
ICAgIEFTU0VSVChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpID09IG1fZGlyRW50cmllcy5zaXpl
KCkpOwotICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8
Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOwor
ICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFk
ZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOwogICAgICAgICAgICAg
bV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgICAgICAgICAg
bV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0QnVmZmVyKCZtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhd
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjcyYzU1
YTJjYjkwOWZhMzQ2MWNmNzk1ZjA0ZGNlYWQ1MTA0ZThlZS4uZDBiOTE2YTVkYWY4YTNhYTI1NGY0
OTczNDczYTgzMTU1NzI5ZGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBA
IC02NTMsNyArNjUzLDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5
U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
bV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxKUEVHSW1hZ2VS
ZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8SlBFR0ltYWdlUmVh
ZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0
IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjMThhMzliNTkxMzNhMzE4ZjE1MTA1
ODFlOGY5MWViZGQ3Njg3OWFiLi42MmNiOWIyMmEwMWYyNmU5ZjJjZDQxZGVhMzgxYjM2MzY4OTdl
ZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZv
aWQgUE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5zaWduZWQgaGFsdEF0
RnJhbWUsIGJvb2wgYWxsRGF0YVJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFk
ZXIpCi0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFnZVJlYWRlcj4o
dGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhp
cyk7CiAKICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2ZSBy
ZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IDIwOWY4
OGY0N2EzYjdjZGMwMTQzZGU5MmUyNGJhZGRmOTY2NGI1ZjQuLmNhZTNkY2YxNjQ3OTZjZWVjYjY4
YjI0NDhmMTEzM2MxMGVjOWMyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZShXQUtXaW5kb3cqIHdpbmRvdykKICAg
ICA6IG1fd2luZG93KHdpbmRvdykKICAgICAsIG1fdG9tYnN0b25lKGFkb3B0TlMoW1tMZWdhY3lU
aWxlQ2FjaGVUb21ic3RvbmUgYWxsb2NdIGluaXRdKSkKLSAgICAsIG1fem9vbWVkT3V0VGlsZUdy
aWQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQor
ICAgICwgbV96b29tZWRPdXRUaWxlR3JpZChtYWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhp
cywgbV90aWxlU2l6ZSkpCiAgICAgLCBtX3RpbGVDcmVhdGlvblRpbWVyKCp0aGlzLCAmTGVnYWN5
VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1lckZpcmVkKQogewogICAgIFtob3N0TGF5ZXIoKSBp
bnNlcnRTdWJsYXllcjptX3pvb21lZE91dFRpbGVHcmlkLT50aWxlSG9zdExheWVyKCkgYXRJbmRl
eDowXTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2Nh
bGVDaGFuZ2UoKQogCiAgICAgaWYgKG1fY3VycmVudFNjYWxlICE9IG1fem9vbWVkT3V0VGlsZUdy
aWQtPnNjYWxlKCkpIHsKICAgICAgICAgaWYgKCFtX3pvb21lZEluVGlsZUdyaWQpIHsKLSAgICAg
ICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGlsZUdy
aWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKKyAgICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9
IG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKICAgICAgICAg
ICAgIFtob3N0TGF5ZXIoKSBhZGRTdWJsYXllcjptX3pvb21lZEluVGlsZUdyaWQtPnRpbGVIb3N0
TGF5ZXIoKV07CiAgICAgICAgICAgICBob3N0TGF5ZXJTaXplQ2hhbmdlZCgpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCmluZGV4IDY2
NDdlYzNhMzZkMTU4Nzg2OTRmMDdkMDJiMWZiMWU4YzM1MGQ1M2YuLjMwZWY5ZmMzMWM4N2YxMWJm
YWZlNGNhNmE5ZWE4MTI0ZDVmYzNhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlR3JpZC5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIExlZ2FjeVRpbGVHcmlkVGlsZTsKIAogY2xhc3MgTGVnYWN5VGlsZUdyaWQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgSW50UG9pbnQg
VGlsZUluZGV4OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCmluZGV4IDE5MWFjNzY5NjIxNTEyMTUzZGJkY2IwNzhkZDY2ZjQ2NTUzYmMyMWQuLjAyNzFi
OTNlNzA1Y2UyYzQyZDYzMmZlMmRiMjlhYTQ2ZTgzNmQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02NiwxMiArNjYsMTIgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50
ZXJhY3Rpb24gcGFzdGVib2FyZCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+
KCJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9hcmQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihk
cmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJv
YXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsKIH0KIAogI2VuZGlmCkBAIC0xMDEsNyAr
MTAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VD
b3VudEZvclBhc3RlYm9hcmQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4o
Y2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggYTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEzMWNl
NjQ2OTAyNTY4NS4uYzJiNWEwYjA4YmRmNzVlOGMwMWNkOWJkMmQ1MWMzMTQ5MzA1ZjM4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC04NCw3ICs4NCw3IEBA
IFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVk
ZWQoTlNVUkwgKnVybCwgTlNTdHJpbmcKICAgICBpZiAoW1FMUHJldmlld0dldFN1cHBvcnRlZE1J
TUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OnVwZGF0ZWRNSU1FVHlwZS5nZXQoKV0pIHsKICAg
ICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB1dGkgPSBhZG9wdE5TKFBBTDo6c29mdExpbmtfUXVp
Y2tMb29rX1FMVHlwZUNvcHlVVElGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIHVwZGF0ZWRNSU1FVHlw
ZS5nZXQoKSkpOwogCi0gICAgICAgIGF1dG8gY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0KCkpOworICAgICAgICBhdXRvIGNvbnZlcnRl
ciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHByZXZpZXdSZXF1ZXN0ID0gY29udmVydGVyLT5wcmV2aWV3UmVx
dWVzdCgpOwogCiAgICAgICAgIC8vIFdlIHVzZSBbcmVxdWVzdCBVUkxdIGhlcmUgaW5zdGVhZCBv
ZiB1cmwgc2luY2UgaXQgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KaW5kZXggMTA3Yzc3Yzc1M2VhYjdk
OTJkYTI5NDg3Y2E2ZjY1ZjgwNzA0ODIxMy4uNmQ5Y2NlMTViODc0ZjE1ZjE1NDg3NWVhMGVlNmI5
ZjEwMzVhODM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRl
KFJlbW90ZUNvbW1hCiAgICAgaWYgKCFNZWRpYVBsYXllckxpYnJhcnkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5k
TGlzdGVuZXJJT1M+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFu
ZExpc3RlbmVySU9TPihjbGllbnQpOwogfQogCiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6OlJl
bW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRv
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5t
bQppbmRleCAwMWYwYTliYjIwYTI0OGI2OTk4ODU2NDcwYWVlMzc0YTk4Y2ZhNTFjLi5lZDYzMmVh
NWUzZjU1OTdlOWQ3NmZkMmU1NTY5NTYxZmU2YzRjMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCkBAIC00MCw3ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3Jv
bGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJsZUFy
ZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxl
QXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9ySU9TOjpTY3JvbGxBbmltYXRvcklPUyhTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggMDU0M2VkNWU5ZmM5ZmNmZTNiYmFh
NDAzNTVlNDA3MmY5ZjNjM2Y0MC4uZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3Y2Q2NzZlZmI5ZGU1
YmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9h
cmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJv
YXJkTGliV1BFLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKTsKIH0KIAogUGFzdGVib2FyZDo6UGFzdGVi
b2FyZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmlu
ZGV4IDUxNTIwZGNiYmVhNTkyMTg1YzMyNjcwMmNiYTY5ZmU4OGI0ZDRkZGUuLjhlYjE1Y2Y4ODUy
ZDk4NTc0NDdlMDU5YzM4YWNhZWJhMjM0MTVkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgUGFzdGVib2FyZDo6
UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcHJvbWkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFs
UGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9h
cmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCkBAIC0xMDgs
MTMgKzEwOCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihO
U0RyYWdQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bi
b2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVz
KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9h
cmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5t
bQppbmRleCAwNWNjMDg5NTdlMWQ1MDEyNGRkNjMyZTJhNGM4OTIxMjk4OTY5NjExLi4xYWEyY2Q4
MDEzMmYyYzIxZWUzOGI5ZmZiZGI4MzM3M2JiZjRjMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KQEAgLTM3
LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
Q29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21t
YW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGllbnQpOwogfQogCiB2b2lkIFJlbW90ZUNv
bW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IGE4MzE3NTEy
MmVjMmU0YjZiNmRlNTFiZTZkZjUyNjRiNDFhMWY4YzQuLjY4NjBlMzNjM2EzYjIxNTYzMDVmYjMx
YWY0MjdkYzQ5MDIzNTg3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBT
Y3JvbGxBbmltYXRvck1hYzo6U2Nyb2xsQW5pbWF0b3JNYWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4
IDFiOWRjNTM0NWI4ODFlYjM2ZDk2ZmNlMzU4MmRmMGU1NGExMzg1YmEuLmUyNDQ1YmM4MjNmODZl
MDU1YjBlNTc4NzdkNmNmNTMxYTRmZmNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUK
ICAgICBpZiAoIXdyaXRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxl
YXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lk
KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3
cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZp
ZGVvVHJhY2tJZCkpOwogfQogCiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYgd3Jp
dGVyLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQsIFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCmluZGV4IGQ0YWRiMTUyYmQ0YmFlZjdlZjdi
ZjA1NWY2ZDlhODNkODY3ZTY3ZWIuLmEyMmY1NzFiYzUxNjExZjYxNzQ0OTEwNGNmNWZjODYwZTUy
ZTlhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CiAK
IGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbCBmaW5hbCA6IHB1YmxpYyBNZWRpYVJl
Y29yZGVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IGNy
ZWF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVy
ZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBkYjk0ZmRhZjgzYThhYmQ2
N2FmY2ZkNmVhMzY5ZmFhODljNDZjM2UyLi41OWFiMzg0MGZkNzM2Y2ExNDUwMTZjN2Y2NjBlY2Ez
YjA5MDMyNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0
dXJlU291cmNlLmNwcApAQCAtOTEsMTQgKzkxLDE0IEBAIEF1ZGlvQ2FwdHVyZUZhY3RvcnkmIEdT
dHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpCiAKIEdTdHJlYW1lckF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVE
ZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lTWVkaWFTb3Vy
Y2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0cmluZyB7IGRldmljZS5wZXJz
aXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0
KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1
cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlv
Q2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9
CiAKIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkK
ICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVk
aW8sIFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkK
LSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVy
PigpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+
KCkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVk
aW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQXVkaW9EYXRhLmgKaW5kZXggOTUzZjNhOGEwZTRmNmEwNjJiOWI5NGE4ZjQxNTFh
NDlmMWE0MzAxZC4uMzQxNTQ5MjUxZWQ1NzFiNzVlZjVkMGMyZGVkZjFlNzdiNzUyMzc4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lckF1ZGlvRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaApAQCAtMjksNyArMjksNyBAQAogI2lu
Y2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBH
U3RyZWFtZXJBdWRpb0RhdGEgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgeworY2xhc3MgR1N0
cmVhbWVyQXVkaW9EYXRhIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKIHB1Ymxp
YzoKICAgICBHU3RyZWFtZXJBdWRpb0RhdGEoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBH
c3RBdWRpb0luZm8gaW5mbykKICAgICAgICAgOiBtX3NhbXBsZShXVEZNb3ZlKHNhbXBsZSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQ2FwdHVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCmluZGV4IGJiZTVhZTczOTU0YWU1M2NjMjE2
NTc5M2VjMDk2YTg4NzkyYWQ0ZjIuLmY5MmE2YTliMTI2MTEwMGYxOTM0NWY0ZWNhMjE5NGJmZTFi
OGEzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCkBAIC0zMiw2ICszMiw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lckNhcHR1cmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJDYXB0dXJl
cihHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLCBHUmVmUHRyPEdzdENhcHM+KTsKICAgICBHU3RyZWFt
ZXJDYXB0dXJlcihjb25zdCBjaGFyKiBzb3VyY2VGYWN0b3J5LCBHUmVmUHRyPEdzdENhcHM+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmlu
ZGV4IGIzYWYzNWFmODI0ODhkZDRjZjgyMWNkM2VlYWU2M2Q5Y2YxYWNkODQuLmYzZTUxODZiZjY2
ODc4MWVmYjEzOTVmZTg1MWIzNDMyM2M0MmEzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIEdzdFN0
cmVhbSogd2Via2l0TWVkaWFTdHJlYW1OZXcoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHRyYWNr
KQogCiBjbGFzcyBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIKICAgICA6IHB1YmxpYyBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNl
cnZlcigpIHsgfTsKICAgICBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIoV2ViS2l0TWVk
aWFTdHJlYW1TcmMqIHNyYykKQEAgLTE0Myw2ICsxNDQsNyBAQCBjbGFzcyBXZWJLaXRNZWRpYVN0
cmVhbVRyYWNrT2JzZXJ2ZXIKIAogY2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcgogICAg
IDogcHVibGljIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFtT2Jz
ZXJ2ZXIoKSB7IH07CiAgICAgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcihXZWJLaXRNZWRpYVN0
cmVhbVNyYyogc3JjKQpAQCAtMzUxLDggKzM1Myw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRp
YV9zdHJlYW1fc3JjX2NsYXNzX2luaXQoV2ViS2l0TWVkaWFTdHJlYW1TcmNDbGFzcyoga2xhc3Mp
CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQoV2ViS2l0TWVkaWFT
dHJlYW1TcmMqIHNlbGYpCiB7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOwot
ICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1l
ZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNl
cnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyPihzZWxmKTsK
KyAgICBzZWxmLT5tZWRpYVN0cmVhbU9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0
cmVhbU9ic2VydmVyPihzZWxmKTsKICAgICBzZWxmLT5mbG93Q29tYmluZXIgPSBnc3RfZmxvd19j
b21iaW5lcl9uZXcoKTsKICAgICBzZWxmLT5maXJzdEF1ZGlvQnVmZmVyUHRzID0gR1NUX0NMT0NL
X1RJTUVfTk9ORTsKICAgICBzZWxmLT5maXJzdEZyYW1lUHRzID0gR1NUX0NMT0NLX1RJTUVfTk9O
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5j
cHAKaW5kZXggZTVkOWIwZTAyNzZlZGRhNWRiZDUyMGJjMTBmMzUxODBkMDE1ZDY5Yi4uOTdiZTFm
MTJmYmIyMmRjMzU4Yzk5YzgzOWY5ODFmMTY1NmE4ZTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEyNywxNCArMTI3LDE0
IEBAIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpk
aXNwbGF5RmFjdG9yeSgpCiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJp
bmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIgKnNvdXJjZV9mYWN0b3J5KQogICAgIDogUmVhbHRp
bWVWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdU
Rk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJl
YW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKKyAgICAsIG1fY2FwdHVyZXIobWFr
ZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9yeSkpCiB7CiAgICAg
aW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZpY2Ug
ZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291
cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFi
ZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3Vu
aXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJlciht
YWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5pdGlh
bGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1l
clZpZGVvRGVjb2RlckZhY3RvcnkuaAppbmRleCBlNGQ1MDhlMzE3OWFjNDdiZjFkMTBmNGYyODdj
NTQ3YmMyNTYwMDJhLi5lZmRhMjliZTM5NzE4YmJhNzkxMzQxOGNjNzNlYjlhZDM2ODRmOGJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmgK
QEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVy
VmlkZW9EZWNvZGVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnkg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lclZp
ZGVvRGVjb2RlckZhY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBuZXdTb3VyY2UoU3RyaW5nIHRy
YWNrSWQsIEdzdEVsZW1lbnQgKnNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0
cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKaW5kZXggNjk5NWM2MDJjYjE3NDQ3ZmE3NDFk
MzlkNDQ5NGMzNTYxZGMxYmI4Mi4uODM1ODFlODVhMzk2MmQ5N2UwMTc0M2IxMGU1NmNlYWExNTFj
ZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJG
YWN0b3J5LmNwcApAQCAtNjAsNiArNjAsNyBAQCBHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X3dl
YnJ0Y2VuY19kZWJ1Zyk7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lclZp
ZGVvRW5jb2RlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9FbmNvZGVyKGNvbnN0
IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmKQogICAgICAgICA6IG1fZmlyc3RGcmFtZVB0cyhHU1Rf
Q0xPQ0tfVElNRV9OT05FKQpAQCAtNTEyLDE0ICs1MTMsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6VmlkZW9FbmNvZGVyPiBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVW
aWRlb0UKICAgICAgICAgZ19vYmplY3RfZ2V0KHdlYnJ0Y2VuY29kZXIuZ2V0KCksICJlbmNvZGVy
IiwgJmVuY29kZXIub3V0UHRyKCksIE5VTEwpOwogCiAgICAgICAgIGlmIChlbmNvZGVyKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4oZm9y
bWF0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZQOEVuY29kZXI+
KGZvcm1hdCk7CiAKICAgICAgICAgR1NUX0lORk8oIlVzaW5nIFZQOCBFbmNvZGVyIGZyb20gTGli
V2ViUlRDLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx3ZWJydGM6OkxpYnZw
eFZwOEVuY29kZXI+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazx3ZWJydGM6OkxpYnZweFZwOEVuY29kZXI+KCk7CiAgICAgfQogCiAgICAgaWYgKGZv
cm1hdC5uYW1lID09IGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKQotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CiAKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNv
ZGVyRmFjdG9yeS5oCmluZGV4IDc5NmEyMGY5NDVlM2E5NTE5OGVjZTEwZmU3MGQ5YjUyZjcyMzNk
MTEuLjE0ODNhMmIyMGIzNTE1YzcxYjdhMGM3YTUyMjYyNmU5ZmY1MzkyMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJW
aWRlb0VuY29kZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaApAQCAtMjgsNiAr
MjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJWaWRlb0VuY29k
ZXJGYWN0b3J5IGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9F
bmNvZGVyRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2Vu
ZGVyQmFja2VuZC5oCmluZGV4IGRjNmY4ZjNmYjA1N2ZiNTQwZDkwYzAwMjI2OGE5OTc3NDQxMDI3
N2YuLjRhMDYxZmNjOTUzYjEzZDU4M2JhZTU1NDUxNTViY2UwOGRmOGY5ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
VE1GU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCkBAIC00MCw2ICs0MCw3
IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENEVE1GU2Vu
ZGVyQmFja2VuZCwgcHJpdmF0ZSB3ZWJydGM6OkR0bWZTZW5kZXJPYnNlcnZlckludGVyZmFjZSwg
cHVibGljIENhbk1ha2VXZWFrUHRyPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGliV2ViUlRD
RFRNRlNlbmRlckJhY2tlbmQocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RHRtZlNlbmRlcklu
dGVyZmFjZT4mJik7CiAgICAgfkxpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCAyMDdhYjc4YTlhMmJiZTQwYTBlZDRk
YTY5NTY5YWVkYjEyMjk5ZTIwLi43NDUzM2M1ZmE0ZGYwZDRlNWE2NGQ3NWNlNjI3YjMyNDJjNDZi
ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTc5LDkgKzc5
LDEwIEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRy
ZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIH0KIAogY2xhc3MgQmFzaWNQYWNrZXRTb2Nr
ZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCYXNpY1BhY2tl
dFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQmIG5ldHdvcmtUaHJlYWQpCi0gICAgICAgIDogbV9z
b2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+
KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAgOiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZu
ZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAgfQogCkBAIC0xNzksNyArMTgwLDcgQEAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMoUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxp
bmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAKLSAgICBmYWN0b3J5QW5k
VGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDQXVk
aW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBt
YWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpOwogfQogCiBzdGF0aWMgaW5saW5lIFBl
ZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkK
QEAgLTI4OCwxMCArMjg5LDEwIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25u
ZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAgICAgYXV0byYg
ZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdv
cmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKIAogICAgIGlmICghZmFjdG9yeUFuZFRocmVhZHMu
bmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2Vy
ID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAgICAg
IGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogCiAgICAgaWYgKCFmYWN0
b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5KQotICAgICAgICBmYWN0b3J5QW5kVGhy
ZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1BhY2tldFNv
Y2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKKyAgICAgICAg
ZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSA9IG1ha2VVbmlxdWU8QmFzaWNQ
YWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZCk7CiAg
ICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeS0+c2V0RGlzYWJsZU5vbkxv
Y2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKTsKIAog
ICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKmZhY3RvcnlBbmRUaHJl
YWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9y
eSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbnVsbHB0cik7CkBAIC0zMTQsNyArMzE1LDcgQEAg
cnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldl
YlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpC
YXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMu
c2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgewotICAg
ICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6
QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0b3J5
KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRBbGxvY2F0b3IgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdl
ciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwogICAgICAgICBpZiAoIW1fZW5hYmxlRW51bWVyYXRp
bmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAgICAgICAgICAgIGJhc2ljUG9ydEFsbG9jYXRvci0+
c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRvci0+ZmxhZ3MoKSB8IGNyaWNrZXQ6OlBPUlRBTExP
Q0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1FUkFUSU9OKTsKICAgICAgICAgcG9ydEFsbG9jYXRv
ciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2NhdG9yKTsKQEAgLTMzNSw3ICszMzYsNyBAQCBydGM6
OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNhdGVH
ZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGljRmFj
dG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAgICAg
aWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcikKLSAgICAgICAgZmFj
dG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0
Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+KGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1Ro
cmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5nZXQoKSk7CisgICAg
ICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9y
eUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3
b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJldHVybiAqZmFjdG9yeUFuZFRocmVhZHMuY2VydGlm
aWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4
IGJkZjA5MDA0MGM5MDY1N2Y0OWYwY2U0YWUyODA3NzM4YTFlOGJlNzkuLjdhYThkZTJlYjNhNGM1
NTVlMDlhNjBkN2Q3YzNhZDgzMTliMTE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5oCkBAIC02NCw2ICs2NCw3IEBAIHN0cnVjdCBSVENSdHBDYXBhYmlsaXRpZXM7CiBlbnVt
IGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1wbGVtZW50ZWQsIEJhZFBhcmFtZXRlciwg
RE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldl
YlJUQ1Byb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiBjcmVhdGUoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmgKaW5kZXggNzcyYTM5NWYwY2JiNDNl
NzMwNzUwY2NiOTYzNjE2MWNhYTM0MWM2My4uZDNjMzgzOTVjMDc3ZjM0NjA0YjViYjBmNGI0M2Fl
MTEwMGNkZjIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5o
CkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2Eg
OiBwdWJsaWMgTGliV2ViUlRDUHJvdmlkZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKSA9IGRlZmF1bHQ7CiAgICAg
fkxpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDE1ZTJhODc4OWMwN2ZiMGQwYWVjNmY2YzIw
ZjdiYjE3ZmE4ZGI3ZDIuLjViODI3M2IwODUxOTZmZmQzMGU0ZDdhN2Y2NTUxMGJlYzA4MDMxNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNw
cApAQCAtNDQsMTIgKzQ0LDEyIEBAIGJvb2wgTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWls
YWJsZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExp
YldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4oKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5PigpOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBMaWJXZWJS
VENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmNwcAppbmRleCA4MmNiY2IxYzY2ZDMyZWExOGNkZWIxNjc5Mzhk
NjhkM2IxMmU0MTlhLi5mN2Q4NWRjNjBhNjFhODE0NmRiYTBkMDNlNTVkNzU3NjJmZTkwZjgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNw
cApAQCAtMTg4LDggKzE4OCw4IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzCiAgICAgICAgIGlm
ICghcmVtb3RlSU9Vbml0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1faW5wdXRE
ZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihp
bnB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7Cisg
ICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9
IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7
CiAKICAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUo
ZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMiwgc3RyZWFtVHJhY2soKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBlOGUzZDM0ODZkYTQzYWFjMWRk
NTRiNzhlNmI0ZGY0ZGM5ODE2NzkwLi42MTFhYzE2YjllY2I4Njg5OGEzNzI2NDcxYzc2MjA3MTJm
YjliMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1
cmUoKQogICAgIGNvbnN0IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CiAgICAgRmlsbE91
dEFTQkRGb3JMUENNKG1fc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCksIGNoYW5uZWxDb3VudCwg
Yml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQs
IGlzRmxvYXQsIGlzQmlnRW5kaWFuLCBpc05vbkludGVybGVhdmVkKTsKIAotICAgIG1fYXVkaW9C
dWZmZXJMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFt
Rm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNv
dW50KTsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJM
aXN0PihtX3N0cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBtX21h
eGltaXVtRnJhbWVDb3VudCk7CiAKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERl
c2NyaXB0aW9uOwogICAgIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShOVUxMLCAmbV9z
dHJlYW1Gb3JtYXQsIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXREZXNjcmlwdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5k
ZXggZjlkYzRhODQ3ZjRhMzU1ZDljY2ZmNGNkZTAzMDhkMGQ1YzVjNDQ1Ni4uMzg4ZDcxZTI0YjI1
ZWJmNmQ3Nzg4MTRmZGQwYTk2NjNiMTcwNTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZl
cnRUb1lVVihDVlBpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9waXhl
bEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlw
ZUtleTogQChwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpIH0pOworICAgICAgICBtX3BpeGVs
QnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19i
cmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVm
ZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7
CiAKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y29udmVydChwaXhlbEJ1ZmZl
cik7CiB9CkBAIC03NSw3ICs3NSw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIoCiAgICAgICAg
IEludFNpemUgc2l6ZSA9IHsgKGludClDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIp
ICwgKGludClDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSB9OwogICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJvdGF0
aW9uVG9BbmdsZShyb3RhdGlvbikpOwotICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0pLCBz
aXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOworICAgICAgICBtX3Jv
dGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92
ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVs
QnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8p
OwogICAgIH0KIAogICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHBpeGVsQnVm
ZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAppbmRleCA4ZTI5ZDdiODFhMTczZGZhNTM3MDVm
YTFlNjJjOWU4ODNjNGY5NTAyLi5kNDc2OWQ2OWU0YWYwNDcwZDYyY2U5MGI3NTQ0MGUyODI3Njll
N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrIGZpbmFs
IDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
LmgKaW5kZXggM2M2ZGUxYzRlYmU0ZWM3NDczNTQwYWVjY2I4OTc2MmIxOTU1NWNkNC4uMTM4OGFk
MDUxMzEwOGIyZWI5MmVjMmJiZTI4OTMzNjUyZTk5YTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKQEAg
LTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyTW9jayBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1Ymxp
YyBUaW1lckV2ZW50QmFzZWRNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFJUQ0RhdGFDaGFubmVsSW5pdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAppbmRleCAyZjFmYjU1ZWU2NzFmMmYyMjhmYzUxNTFk
MGRkNjljZjhlYzY5NWNiLi4yYzdjNDFiZDY5NmZmMWY5YmFiMzgzODFhNGI1ODM4NTY4YjE4YTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01v
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9j
ay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6UmVtb3Rl
RGF0YUNoYW5uZWxOb3RpZmllcihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGkKIAogdm9pZCBS
ZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKCkKIHsKLSAgICBtX2NsaWVudC0+ZGlkQWRk
UmVtb3RlRGF0YUNoYW5uZWwoc3RkOjptYWtlX3VuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7
CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKG1ha2VVbmlxdWU8UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENEYXRh
Q2hhbm5lbEluaXQoKSkpOwogfQogCiBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI6OkRhdGFDaGFu
bmVsU3RhdGVOb3RpZmllcihSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCwgUlRD
RGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZS5jcHAKaW5kZXggNTU5OTMzODJiM2ExZGMzNmQ4MzU2YjYxYjI1YzcwMDJlMDczNDdm
ZS4uMzg3YTIxZGFmNDU1MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4ODY5MGQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQgTW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCisgICAgcmVnaXN0cmFyKFtdIChNZWRp
YVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgc3VwcG9ydHNU
eXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpidWZmZXJl
ZCgpIGNvbnN0CiAgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2YXRlKQogICAgICAgICByZXR1cm4g
bV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBib29sIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
OjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGNjNjdjZTY4OGYz
YmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjguLjkwNTE0MzE2MjFhOGMxMDhhNmVmMGY1MWVi
NjBmNzc0YWZjYzBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE1OSw5ICsxNTksOSBAQCBCbG9iUmVz
b3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0
IFJlc291cmNlUmVxdWVzdAogICAgICwgbV9hc3luYyB7IGFzeW5jIH0KIHsKICAgICBpZiAobV9h
c3luYykKLSAgICAgICAgbV9hc3luY1N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNGaWxl
U3RyZWFtPigqdGhpcyk7CisgICAgICAgIG1fYXN5bmNTdHJlYW0gPSBtYWtlVW5pcXVlPEFzeW5j
RmlsZVN0cmVhbT4oKnRoaXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJlYW0gPSBzdGQ6Om1h
a2VfdW5pcXVlPEZpbGVTdHJlYW0+KCk7CisgICAgICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZTxG
aWxlU3RyZWFtPigpOwogfQogCiBCbG9iUmVzb3VyY2VIYW5kbGU6On5CbG9iUmVzb3VyY2VIYW5k
bGUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuY3BwCmluZGV4IDgxMTJiOTczZWVmNTRlZDdhNWM3YTUxNGNmMTAyYWM5
OTFlNzY1MzMuLmI1NDFmNjJlZTAwNTIwMzYyYzE1NTdmN2NhNDk2NGEyMzdiODc0OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
CkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlY29kaW5nUmVzdWx0RGlzcGEKIAogc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNrKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxEZWNvZGVUYXNrPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVUYXNrPigKICAg
ICAgICAgdXJsLnN0cmluZygpLAogICAgICAgICBzY2hlZHVsZUNvbnRleHQsCiAgICAgICAgIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggYTk4NDNmNTBlNWE0MzQwM2Q4ZjUy
ZjBhOTY3ZjkwMjc4NjVlOGQ1Ni4uOGRhZWM1NGExMzQyZGFiNTljMzVjYzQ5MjdhMDBmZTYyMjk0
OTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VFcnJvckJhc2UuaApAQCAtMzcsNiArMzcsNyBAQCBXRUJDT1JFX0VYUE9SVCBleHRlcm4gY29u
c3QgY2hhciogY29uc3QgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbDsgLy8gVXNlZCBmb3IgZQog
V0VCQ09SRV9FWFBPUlQgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2ViS2l0
U2VydmljZVdvcmtlcjsgLy8gVXNlZCBmb3IgZXJyb3JzIHRoYXQgaGFwcGVuIHdoZW4gbG9hZGlu
ZyBhIHJlc291cmNlIGZyb20gYSBzZXJ2aWNlIHdvcmtlci4KIAogY2xhc3MgUmVzb3VyY2VFcnJv
ckJhc2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXgg
MzBjMjdmNTc2YTE3N2U2YjZhYjE5NDc0MGE3ZDkwMjViNjU5ZmNhZC4uNmEzMWUzZTUyN2Y4ZWM5
MmQ2ZjYyYjk2Y2RkODE5NDQxNGI1NWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29uc3QgQXRv
bVN0cmluZyYgcHJvdG9jb2wKIH0KIAogUmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxlKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBz
aG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpCi0gICAg
OiBkKHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhpcywgY29udGV4
dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYgJiYg
c2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250ZW50RW5jb2Rp
bmdTbmlmZikpCisgICAgOiBkKG1ha2VVbmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhp
cywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50
U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZikpCiB7CiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLmlzVmFsaWQoKSkg
ewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUoSW52YWxpZFVSTEZhaWx1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZGFkOTAxMGY5NTcwZWJjNTY3NjMzNTQzZmQx
ZmM1MDJmODQ2OWI5OS4uNzEzYjRkZmIzMGIyYWZkZmJlYWZmNGVlNTM3MGEyNTQ2ZmFkM2E0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAg
Q0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVl
KQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVs
c2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFw
aG9yZS53YWl0KCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UK
ICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3Jr
KSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248
dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMjYsNyAr
MjI2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICB9OwogICAgIAogICAgIGlmICht
X21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNz
YWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7
CiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICB9Owog
ICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsK
KyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
V1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWlsKENGRXJy
b3JSZWYKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTMxMSw3ICszMTEsNyBAQCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU6OgogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQot
ICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248
dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5k
KG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UK
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9y
ZS53YWl0KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmcKICAg
ICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkp
OworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRCb2R5
RGF0YShDRgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVz
c2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIEJvb2xl
YW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6Y2FuUmVzcG9uZFRvUHJvCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUp
Ci0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlv
bjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBl
bmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxz
ZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBo
b3JlLndhaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBjOWI1M2UzMTJhZDg1NTc2
ZDM2NmVmNGRjNTM3NDM5MWZlOGM2OTBjLi5iYTU1ZjAwNDhiOGU0ZGRjNWIwNzM0ZDk5M2RjOWIx
M2I4Y2IyYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01MjMsNyArNTIzLDcgQEAg
LSAodm9pZClfcmVzdGFydAogCiAgICAgX3Jlc291cmNlID0gc2VsZi5zZXNzaW9uLmxvYWRlci5y
ZXF1ZXN0UmVzb3VyY2Uoc2VsZi5vcmlnaW5hbFJlcXVlc3QsIFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoX3Jlc291cmNl
KQotICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2VsZikpOworICAgICAgICBfcmVzb3VyY2UtPnNl
dENsaWVudChtYWtlVW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2Vs
ZikpOwogfQogCiAtICh2b2lkKV9jYW5jZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGE0NWE1ZjRlNGEwMjhmZTZl
N2YyZGZiNzVlYzJjOGFlYzkzZWQyYmIuLjEwMTYyNGYyOTAwYTk0Y2M3ZDFhODk5ODk2NzZkNmI0
NWFiN2ZhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxD
b29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0CiAgICAgICAgICJBTkQgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdMT0IgPykpICJc
CiAgICAgICAgICJPUkRFUiBCWSBsZW5ndGgocGF0aCkgREVTQywgbGFzdHVwZGF0ZWQiOwogCi0g
ICAgYXV0byBwc3RtdCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBzcWwpOworICAgIGF1dG8gcHN0bXQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4o
bV9kYXRhYmFzZSwgc3FsKTsKICAgICBpZiAoIXBzdG10KQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCkBAIC01NjYsNyArNTY2LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQWxs
Q29va2llcygpCiAKIHZvaWQgQ29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoY29u
c3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9
IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGludCBy
ZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlQocmV0ID09IFNRTElURV9PSyk7
CiAgICAgbV9zdGF0ZW1lbnRzLmFkZChzcWwsIFdURk1vdmUoc3RhdGVtZW50KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCmluZGV4
IDBjMDNlOWQ2OTJjN2Y2ZGM2MTMwODZmZjI1NWMyMGU1YzZiYmU5ZTkuLjI2ODdhZTc0ZmI5ZDk5
NDI5NzJiZWRjYWM2YWI5YjExNTlhN2U1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0g
Y2xhc3MgQ29va2llQWNjZXB0UG9saWN5IHsKIH07CiAKIGNsYXNzIENvb2tpZUphckRCIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb29r
aWVKYXJEQik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggMTEwMjdjZTNiM2NmNjM4OGY5OTU0
YWFmNDljNDkwM2ZlOTNmZGZmNS4uOGNlMTE0Mzg0OGZiMjMxOGJhMTk5MGVhZDE4ZTE1ZjM3ZDg0
MzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ3VybENhY2hlRW50cnkgewotCisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQ3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNl
SGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpOwogICAgIH5DdXJsQ2FjaGVFbnRy
eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGZhNWM4ZDJkMjFiNjI3MzgxNWQwMjNhNGYyMDQ1
NTAxNmU5NjM4YWYuLmUyYjRiNWRmYmRhNjJhM2MwY2I2YmY5MTgxYmJkNjhmZDdhNGEwODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFn
ZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIC0tZW5kOyAvLyBMYXN0IGxpbmUgaXMgZW1wdHkKICAg
ICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBpdC0+c3RyaXBXaGl0
ZVNwYWNlKCk7Ci0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Vy
bENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2Fj
aGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNo
ZURpcik7CiAKICAgICAgICAgaWYgKGNhY2hlRW50cnktPmlzQ2FjaGVkKCkgJiYgY2FjaGVFbnRy
eS0+ZW50cnlTaXplKCkgPCBtX3N0b3JhZ2VTaXplTGltaXQpIHsKICAgICAgICAgICAgIG1fY3Vy
cmVudFN0b3JhZ2VTaXplICs9IGNhY2hlRW50cnktPmVudHJ5U2l6ZSgpOwpAQCAtMjEzLDcgKzIx
Myw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlJiBqb2IsIFJlc291cmNlUmVzcG9uc2UmCiAKICAgICAgICAgaW52YWxpZGF0ZUNhY2hl
RW50cnkodXJsKTsgLy8gSW52YWxpZGF0ZSBleGlzdGluZyBlbnRyeSBvbiAyMDAKIAotICAgICAg
ICBhdXRvIGNhY2hlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmws
ICZqb2IsIG1fY2FjaGVEaXIpOworICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlVW5pcXVl
PEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2IsIG1fY2FjaGVEaXIpOwogICAgICAgICBib29sIGNh
Y2hlYWJsZSA9IGNhY2hlRW50cnktPnBhcnNlUmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsKICAg
ICAgICAgaWYgKGNhY2hlYWJsZSkgewogICAgICAgICAgICAgY2FjaGVFbnRyeS0+c2V0SXNMb2Fk
aW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ29udGV4dC5jcHAKaW5kZXggN2QxNzIxN2MyZTQ0MmFjNmYzZGU4YzRiNjBhOTUyNmM5
ZjY1ODQyYS4uN2IwNGZhMjZhNDJhYjk3OGFlMDdiZDMxZjBlNjkxNTUxYmJjNDYwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
Y3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgQ3VybENvbnRleHQ6OkN1cmxDb250ZXh0KCkKICAgICBp
ZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFkQXM8c2lnbmVkPigiV0VCS0lUX0NVUkxfTUFYX0hP
U1RfQ09OTkVDVElPTlMiKSkKICAgICAgICAgbWF4SG9zdENvbm5lY3Rpb25zID0gKnZhbHVlOwog
Ci0gICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1bGVy
PihtYXhDb25uZWN0cywgbWF4VG90YWxDb25uZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25zKTsK
KyAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENv
bm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOwogCiAjaWZu
ZGVmIE5ERUJVRwogICAgIG1fdmVyYm9zZSA9IGVudlZhci5kZWZpbmVkKCJERUJVR19DVVJMIik7
CkBAIC0zMzYsNyArMzM2LDcgQEAgQ1VSTGNvZGUgQ3VybEhhbmRsZTo6d2lsbFNldHVwU3NsQ3R4
KHZvaWQqIHNzbEN0eCkKICAgICAgICAgcmV0dXJuIENVUkxFX0FCT1JURURfQllfQ0FMTEJBQ0s7
CiAKICAgICBpZiAoIW1fc3NsVmVyaWZpZXIpCi0gICAgICAgIG1fc3NsVmVyaWZpZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEN1cmxTU0xWZXJpZmllcj4oc3NsQ3R4KTsKKyAgICAgICAgbV9zc2xWZXJp
ZmllciA9IG1ha2VVbmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOwogCiAgICAgcmV0dXJu
IENVUkxFX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENvbnRleHQuaAppbmRleCA3ZDA2MDY4Y2Q5ZDFhZWJlZTQyZDM4NTk0YWJkMDk0Yjkw
MTE0NDQ0Li5hNGY4YzAyODI3NjdiMGI0ODc3MGEwNDhlZTg1MmYxNjZlMDdhN2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaApA
QCAtMTQ3LDYgKzE0Nyw3IEBAIGNsYXNzIEN1cmxDb250ZXh0IDogcHVibGljIEN1cmxHbG9iYWwg
ewogLy8gQ3VybE11bHRpSGFuZGxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIGNsYXNzIEN1cmxNdWx0aUhhbmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybE11bHRpSGFuZGxlKTsKIAog
cHVibGljOgpAQCAtMjAyLDYgKzIwMyw3IEBAIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBO
ZXR3b3JrTG9hZE1ldHJpY3M7CiAKIGNsYXNzIEN1cmxIYW5kbGUgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxIYW5kbGUpOwogCiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IDJiYmE1YTZjM2E0YjI2OTVlYjliNGUx
MDVmODUyZDUxNGU4YmY4YzguLjI0N2M1ZjJlYjJkOWNkNWE0YmM2NjI3MWY1NmMwYTQyOWQxZTY4
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Rm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC03Niw3ICs3Niw3IEBAIGNvbnN0IFZlY3Rv
cjxjaGFyPiogQ3VybEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgaWYgKCFtX3Bvc3REYXRhKQotICAgICAgICBtX3Bvc3REYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7Cisg
ICAgICAgIG1fcG9zdERhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+
ZmxhdHRlbigpKTsKIAogICAgIHJldHVybiBtX3Bvc3REYXRhLmdldCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCmluZGV4IGE4YmI4ZDgxYTdhYmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZkZTJk
NTUuLmNjZGJiMjgyMzlmMjJjMzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0
aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwK
ICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpi
b3VuZGFyeSk7CiB9CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0
cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuaAppbmRleCA4MDRjNzQ0NmM0NTNiNjcxNWY4ODVlOWFmYzI3Mzg4NThlMjY4NzFhLi43MjBj
Njk4MGVkZDNkYWUzZTEyYzYzZjA4YjYzYzZmODk2ZTUzMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBh
cnRIYW5kbGU+IGNyZWF0ZUlmTmVlZGVkKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25z
dCBDdXJsUmVzcG9uc2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMTdmZWRkZjBlMDgxNGQ1ZWFkMDY4MmY2
ZWYxNGY3NjVjOTFlNTkwOC4uYzFkMTU3YmVmZjk0NDU0NjMxY2QwNTk2MmYyMzExMzJmZDhkYjhk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FsbENs
aWVudChGdW5jdGlvbjx2b2lkKEN1cmxSZXF1ZXN0JiwgQ3VybFJlcXVlc3RDbGllbnQmKT4mJgog
dm9pZCBDdXJsUmVxdWVzdDo6cnVuT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNr
KQogewogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsK
KyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUodGFzaykpKTsKICAgICBlbHNlIGlmIChpc01haW5UaHJlYWQoKSkKICAgICAg
ICAgdGFzaygpOwogICAgIGVsc2UKQEAgLTIwNSw3ICsyMDUsNyBAQCBDVVJMKiBDdXJsUmVxdWVz
dDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgYXV0byBodHRwSGVhZGVyRmllbGRzID0gbV9yZXF1ZXN0
Lmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICBhcHBlbmRBY2NlcHRMYW5ndWFnZUhlYWRlcihodHRw
SGVhZGVyRmllbGRzKTsKIAotICAgIG1fY3VybEhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Vy
bEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUgPSBtYWtlVW5pcXVlPEN1cmxIYW5kbGU+KCk7
CiAKICAgICBtX2N1cmxIYW5kbGUtPnNldFVybChtX3JlcXVlc3QudXJsKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hl
ZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0U2NoZWR1bGVyLmNwcAppbmRleCA5MTgzN2FmOWYzZTQ3NzNiNWM3MWMxYzI2MGRiOTZmNTg2
YjIxMWFmLi4zYWE1ZjUyZGI2MjdhYmIwZWNjYWYyOTIxM2RjZTEyZmJjNmZiYzkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hl
ZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0
U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgbV9jdXJsTXVsdGlIYW5kbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aUhh
bmRsZT4oKTsKKyAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybE11bHRpSGFu
ZGxlPigpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhDb25uZWN0cyhtX21heENvbm5l
Y3RzKTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4VG90YWxDb25uZWN0aW9ucyhtX21h
eFRvdGFsQ29ubmVjdGlvbnMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhIb3N0Q29u
bmVjdGlvbnMobV9tYXhIb3N0Q29ubmVjdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAppbmRl
eCBjYTNiYmE4MTM0NDBiZmY2ZTgwMzEyNjQwOTc2Y2MzODhhNzQ4NjRmLi40Yjk1YzBkMTlhZDkw
NDJkMmFjNzBlZDRiMTMzZjhkMWQwYzYzMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaApAQCAt
MzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdFNjaGVk
dWxlckNsaWVudDsKIAogY2xhc3MgQ3VybFJlcXVlc3RTY2hlZHVsZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXF1ZXN0U2No
ZWR1bGVyKTsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8Q3VybFJlcXVlc3RTY2hlZHVsZXI+
OwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTU0xWZXJpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxTU0xWZXJpZmllci5oCmluZGV4IDQ1MmY3MDVmOWNiOGZlMjkxOWNmMjg1NmRlZThk
MGFkMWE4MTRmMWEuLjNiNTljYjFmODYzNjU0ODgxZDQ2ZTY1YmJlOTU1NGU5ZjY2MzQzNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVy
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNT
TFZlcmlmaWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ3VybFNTTFZlcmlmaWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDdXJsU1NMVmVyaWZpZXIpOwogcHVibGljOgogICAgIGVudW0g
Y2xhc3MgU1NMQ2VydGlmaWNhdGVGbGFncyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDdi
ZTAwYWQzNGI4ZTU5ODgyZGUwZjUxM2I2YzJkZGY5MDExZjk5ZTEuLjdkNGE3MmZkODc1NTc2ZDlh
NTk4YWExNTg0MDRlODlmMTI0ZDcwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0xNjIs
NyArMTYyLDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ3VybFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmUKIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICghZC0+bV9kZWxl
Z2F0ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKKyAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IG1ha2VV
bmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKIAogICAgIHJldHVybiBk
LT5tX2RlbGVnYXRlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5j
cHAKaW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5NTVlNjg4OWM2NTcyMGM5ZWZhZjIxYi4uMTNhODMy
YzI2NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkwMmRmYTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2Fs
bE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgbV90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgIG1fdGFza1F1ZXVlLmFwcGVu
ZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpleGVjdXRlVGFza3MoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCmluZGV4
IDVhMDZmMmVmODllZjVjMjFiZTE1N2M3MWRhMTQxOWVjODQ4MDllZjcuLjc2NTQzYWQxNmMxNDk0
ODU4ODIyOTkxZjMwNWZmN2EzM2UxN2FlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTM2LDYgKzM2LDcg
QEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogY2xh
c3MgUHJldmlld0NvbnZlcnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6CiAgICAgUHJl
dmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFmMTg3
YjUwNzY1YTlkMTdjMmVjNGVjODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdjZWMx
ZTJmZjZlNzNmMjRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9p
ZCljYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgog
ewogICAgIC8vIFN5bmMgeGhyIHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1fbWVz
c2FnZVF1ZXVlKQotICAgICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgICAg
IHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgp
Pj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNl
LgogICAgIGlmICghc2NoZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVkUGFp
cnMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0RO
U1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3MTkz
NGZlYzM3NjNhNWE0YTgyZDkuLmQ0YmE0ZTk1MDQxNWJiNDA2YmFiYzAxYjZkMjBjNjZkNGY4NGIy
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNS
ZXNvbHZlUXVldWVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIERO
U1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0
X3QgaWRlbnRpZmllciwgRAogCiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVz
cy5nZXQoKSksICJpZGVudGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CiAK
LSAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjpt
YWtlX3VuaXF1ZTxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxl
cnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOwor
ICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9u
QW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNh
bmNlbGxhYmxlKSkpOwogfQogCiB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZl
KHVpbnQ2NF90IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAK
aW5kZXggZTRjOGIwZjEzZTZkMDg5YTU4OTJhYTdhZTBhOWI4MjE1ODViYjlhNC4uYmQwNjJmNzI4
ZjE2ZjcwMGM0NjgwM2JjODM5ZWMwYmM1NTc4ZTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcApAQCAtMTM0LDYgKzEzNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBhdXRo
VHlwZUZyb21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9uU3Bh
CiB9CiAKIHN0cnVjdCBTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YSB7CisgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhKEdDYW5jZWxs
YWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZvaWQgKENyZWRlbnRpYWwmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgICAgIDogY2FuY2VsbGFibGUoY2FuY2VsbGFibGUpCiAgICAgICAg
ICwgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCkBAIC0xNzMs
NyArMTc0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9t
UGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblMKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjcmV0U2VydmljZVNlYXJj
aERhdGE+KGNhbmNlbGxhYmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0
byBkYXRhID0gbWFrZVVuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBzZWNyZXRfc2VydmljZV9zZWFyY2go
bnVsbHB0ciwgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwK
ICAgICAgICAgc3RhdGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5M
T0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NFQ1JFVFMpLCBjYW5jZWxsYWJsZSwKICAgICAgICAg
W10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRh
dGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29s
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCmluZGV4
IDEwZmVjYmM0MTk0Nzk1ZjMyZDFjYTdlNzYwOWFjNGZmMjA5MmNkMjMuLmFhZmVkM2RlNzliOTlh
YWM0NzY5Yzc2YjU1ZjZjMWNiYjY2MWI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmlkaVJlc29sdmVy
QmFzZTxJdGVyYXRvciwgUnVuLCBEZXJpdmVkQ2xhc3M+OjphcHBlbmRSdW5JbnRlcm5hbCgpCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoZW5kT2Zmc2V0ID49IHN0YXJ0T2Zmc2V0KQotICAgICAg
ICAgICAgbV9ydW5zLmFwcGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKKyAgICAgICAgICAgIG1f
cnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxSdW4+KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgKyAx
LCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5jcmVtZW50KCk7
CiAgICAgICAgIG1fc29yID0gbV9lb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xv
Y2FsZUlDVS5jcHAKaW5kZXggNTllMWZjNzJhMmJmMjk2OTQ1YTg2Zjg1NTJiODYzNzZhOWVhNTg2
ZC4uMmM4Y2NlNzMwODhmYTVhZDBjZjU5NTljY2U0Zjk2OTFiZjM1N2EwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgaWN1OwogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9
CiAKIExvY2FsZUlDVTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAgLTE2MywyMiAr
MTYzLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29uc3QgVURhdGVG
b3JtYXQqIGRhdGVGb3JtYXQpCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2Fs
ZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQsIFVE
YXRlRm9ybWF0U3ltYm9sVHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6
ZSkKIHsKICAgICBpZiAoIWRhdGVGb3JtYXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSkg
IT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5n
Pj4oKTsKIAotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5n
Pj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAg
ICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwogICAgICAgICBpbnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0
LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChzdGF0
dXMgIT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihsZW5n
dGgpOwogICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIHVkYXRfZ2V0U3lt
Ym9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgYnVmZmVyLmRhdGEoKSwgbGVu
Z3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5h
cHBlbmQoU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICB9CiAgICAgcmV0dXJu
IFdURk1vdmUobGFiZWxzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3Jt
YXQqCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxi
YWNrTW9udGhMYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0
cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChX
VEY6Om1vbnRoRnVsbE5hbWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FS
UkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+YXBw
ZW5kKFdURjo6bW9udGhGdWxsTmFtZVtpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgY29uc3QgVmVj
dG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQogCiBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMoKQogewotICAg
IGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBh
dXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5y
ZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIkFNIik7CiAgICAgbGFiZWxz
LT5hcHBlbmQoIlBNIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZU5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25l
LmNwcAppbmRleCBiYjZiMjZiYTU5Y2IzNmI5ODliN2U2ZjU4NjMwYzdhN2IzYjU2ZWE3Li43ODE1
YTQ3OGUwMjk3NDU1OTY1NzZjMmRlZDIyMTE5MzZhYTk2YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgTG9j
YWxlTm9uZSA6IHB1YmxpYyBMb2NhbGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2Nh
bGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxMb2NhbGVOb25lPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZU5vbmU+KCk7
CiB9CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVOb25lKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmluZGV4IGY4ZTE2NzA4NDlhOTU4
OThhMTQ1N2JjOThkYTkxZTRiZGU3ODRjNzkuLmU1ZjI4MTY2YzZkZDM0YmM1MzUwOWI2YTAwMjBh
ODg4OTA3YzJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjSUNVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y0lDVS5jcHAKQEAgLTE1Niw0MyArMTU2LDQzIEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3Rl
ckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICAvLyBodHRwOi8v
ZGVtby5pY3UtcHJvamVjdC5vcmcvaWN1LWJpbi9jb252ZXhwCiAgICAgICAgIGlmICghc3RyY21w
KG5hbWUsICJ3aW5kb3dzLTg3NCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25h
bWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJ
Q1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
IXN0cmNtcChuYW1lLCAid2luZG93cy05NDkiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5h
bWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4
dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWN5cmlsbGljIikpIHsKICAgICAgICAgICAgIHJl
Z2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTdfMy0xMC4yIik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEw
LjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWdyZWVrIikpIHsKICAgICAgICAgICAg
IHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTZfMi0xMC40Iik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8y
LTEwLjQiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWNlbnRyYWxldXJyb21hbiIpKSB7
CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4y
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1l
LCAibWFjb3MtMjktMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtdHVya2lzaCIp
KSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0x
MC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihu
YW1lLCAibWFjb3MtMzUtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiRVVDLUtSIikpIHsK
ICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5Iik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAi
d2luZG93cy05NDkiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJD
b2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgY29uc3QgY2hhciog
Y2Fub25pY2FsQ29udmVydGVyTmFtZSA9IHVjbnZfZ2V0Q2Fub25pY2FsTmFtZShuYW1lLCAiSUFO
QSIsICZlcnJvcik7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1MoZXJyb3IpKTsKICAgICAgICAg
cmVnaXN0cmFyKG5hbWUsIFtuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lXSB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNh
bENvbnZlcnRlck5hbWUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVj
SUNVPihuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lKTsKICAgICAgICAgfSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRp
bjEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3Bw
CmluZGV4IDkzMTQ1MzMyOGE2ZjY2OTQ4NWVlMDFmOGE0ZTJjZWRlNTAyNjc3ZmYuLjkyYzY2MTNj
YjFmY2MwZTMwOGE3M2MzNTBhOWUwN2VmNzczNDYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9p
ZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdp
c3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKFRl
eHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ3aW5kb3dzLTEy
NTIiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0xhdGlu
MT4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1JlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjUmVwbGFjZW1lbnQuY3BwCmluZGV4IDE3NjViZjc5MjE1OTc1YjE1N2M4YjNmNzRjNTU3MmM0
NzFlMjExNDEuLmM4YjU1OGM4Y2EyZDNhZmQzMDIxNGJjZmMzN2ExNDU3NzU2YTEzYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1l
bnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lz
dGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRl
eHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVn
aXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigicmVwbGFjZW1lbnQiLCBbXSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRl
eCBiZTAwNjU2NDQ2NDhmY2UwYzM3OWQzYzc0M2VlMjI3ZWE5ZWRhNmY0Li45MGM0NDc1ZDAyMGI5
ZjQ3MWI1YmU3N2MzY2FhYzBmZGM5OGNiYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBAIHZvaWQgVGV4
dENvZGVjVVRGMTY6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIg
cmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVj
UmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi0xNkxFIiwgW10gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKICAgICB9KTsK
ICAgICByZWdpc3RyYXIoIlVURi0xNkJFIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCBhM2RhZDRlOWQxNjM3Njg2
MzA4OGIxOTcxMGY4MzlkYmJmZmVhOGRkLi5lMWQwYTUzYzcxN2FhZTczOTkzOWY1MWM0ZDMyOTM0
NWFmODljYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VURjguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VVRGOC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckVu
Y29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENv
ZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsK
ICAgICByZWdpc3RyYXIoIlVURi04IiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29kZWNVVEY4PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29k
ZWNVVEY4PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCmluZGV4IDI5NmM0NjlmMTY5ZmI5MTFk
YzhkYmQ3YTY0N2VhNTY0MWUyZmZlMTkuLjQ4YWRiYTlkNGIxYTdhOWE2NThhZWY5ZGZhZGY4NWFk
ZGU5ZGNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjVXNlckRlZmluZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjVXNlckRlZmluZWQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgVGV4dENvZGVjVXNl
ckRlZmluZWQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVn
aXN0cmFyCiB2b2lkIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29k
ZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigieC11c2VyLWRlZmluZWQi
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VzZXJEZWZp
bmVkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVc2VyRGVmaW5lZD4o
KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9j
YWxlTWFjLm1tCmluZGV4IGE1MTdiZTM0MWY2YWM0YmU4ZTg5M2NmYWQ3YzIyODg0NWQ2YTgyODAu
LjJiM2QwM2EzOGE1ZDIwMWJiNmRjYjhlYmU0NGY0NmZlZWZjNjdlMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTY3LDcgKzY3LDcgQEAg
c3RhdGljIFJldGFpblB0cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9jYWxlKGNvbnN0IFN0cmluZyYg
bG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBB
dG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxl
TWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5n
ZXQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVEYXRl
VGltZUZvcm1hdHRlcihOU0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFyKiBjYWxlbmRhciwgTlNE
YXRlRm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSB0aW1lU3R5
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApp
bmRleCA2YTE2MGRlY2NmYzkyNmFlZjM3ZGUyM2U5N2Y2MmU4ZjVjNjc5MDZhLi5hYTAwYTRhZDZm
NWI1OTk4MmI2YjQ3NzMxNzFjOGJjN2MwMzM5MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIExD
SUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlV2luPihMQ0lERnJvbUxvY2FsZShs
b2NhbGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxl
KGxvY2FsZSkpOwogfQogCiBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAK
aW5kZXggYWY0NjkxMzkwODFlODBjMTIwN2I4MmM5N2ZkZmEzYzc3MjFhNjUxMS4uMmNlYjQ3NWU1
ZmFlYmI2NzBjNzQxNDQ3NWE0NzI5MjQ5NTJkY2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAg
c3RhdGljIFVJTlQgZ2V0Q29kZVBhZ2UoY29uc3QgY2hhciogbmFtZSkKIAogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2Rpbmcm
IGVuY29kaW5nLCBjb25zdCB2b2lkKikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CiB9
CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVu
VlIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxh
eU9wZW5WUi5oCmluZGV4IGRkNmFlNzM2MDQ2NzlmMTg4ZTAxZTExMGU0ZmViZTU5M2Q1MzdmMWIu
LmY3MWJkOWYwZDU4OWNjMmY4MzliMDY3YzIzZWM4Y2I1MTgxMDY4ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxh
eU9wZW5WUi5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSIDogcHVibGljIFZSUGxhdGZvcm1EaXNwbGF5IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBWUlBsYXRm
b3JtRGlzcGxheU9wZW5WUih2cjo6SVZSU3lzdGVtKiwgdnI6OklWUkNoYXBlcm9uZSosIHZyOjpJ
VlJDb21wb3NpdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Zy
L29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCmluZGV4IGQxZGM2NzM2
ODZmNjUxZTNlMDMyOTFiN2MwMmMzMWIwYzE2OWJiYzIuLmU3Y2Y3MTM3ZTMzYWE1NWJmN2U1ODVl
ZTE2NGU2NzNkM2FhZWVjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Zy
L29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcApAQCAtMzUsNyAr
MzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+IFZSUGxhdGZv
cm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUoKQogICAgIGlmICghdnI6OlZSX0lzUnVudGltZUluc3Rh
bGxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOwogfQogCiBWUlBsYXRmb3JtTWFuYWdlck9wZW5W
Ujo6flZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSKCkKQEAgLTc4LDcgKzc4LDcgQEAgVmVjdG9yPFdl
YWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJE
aXNwbGF5cygpCiAKICAgICBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IGRpc3Bs
YXlzOwogICAgIGlmICghbV9kaXNwbGF5KQotICAgICAgICBtX2Rpc3BsYXkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVyb25lLCBjb21w
b3NpdG9yKTsKKyAgICAgICAgbV9kaXNwbGF5ID0gbWFrZVVuaXF1ZTxWUlBsYXRmb3JtRGlzcGxh
eU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CiAgICAgZGlzcGxheXMu
YXBwZW5kKG1ha2VXZWFrUHRyKCptX2Rpc3BsYXkpKTsKICAgICByZXR1cm4gZGlzcGxheXM7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9y
bU1hbmFnZXJPcGVuVlIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBs
YXRmb3JtTWFuYWdlck9wZW5WUi5oCmluZGV4IDZhNDM4N2NjMzA4MTVlMDBjMzQxNmM4OTY2YWQy
OWQ0YjczZjcwZDkuLjZhNzgyM2JjN2I5NWVkNDBkY2VjZGYwZjU3MzNlMTZkODQ0NWFhNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFu
YWdlck9wZW5WUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBs
YXRmb3JtTWFuYWdlck9wZW5WUi5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSOwogCiBjbGFzcyBWUlBsYXRmb3JtTWFu
YWdlck9wZW5WUiA6IHB1YmxpYyBWUlBsYXRmb3JtTWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWUlBsYXRm
b3JtTWFuYWdlck9wZW5WUj4gY3JlYXRlKCk7CiAgICAgZXhwbGljaXQgVlJQbGF0Zm9ybU1hbmFn
ZXJPcGVuVlIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKaW5kZXggYWJhZGRjN2ZiY2EyMzU5ZWZmNWI5ODExYzE5NWY2YjVhYmMx
YmE4My4uMTY5Nzg1NWZlNzJmNjM3ZTY1YWQ0Nzc3MmFmYTYxYzc0NzE5MjQ0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jKEhXTkQg
aFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gdwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICBhdXRvIHBhc3Rl
Ym9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJv
YXJkID0gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOwogICAgIENPTVB0cjxJRGF0YU9iamVjdD4g
Y2xpcGJvYXJkRGF0YTsKICAgICBpZiAoIVNVQ0NFRURFRChPbGVHZXRDbGlwYm9hcmQoJmNsaXBi
b2FyZERhdGEpKSkKICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IDA7CkBAIC0xMDYsMTYgKzEwNiwx
NiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJh
Z0FuZERyb3AoKQogewogICAgIENPTVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAg
V0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CiB9CiAKIC8vIHN0YXRp
Ywogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdB
bmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBpZiAoZHJhZ0RhdGEucGxh
dGZvcm1EYXRhKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+
KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogICAgIC8vIEZJWE1FOiBTaG91bGQg
YWRkIGEgY29uc3Qgb3ZlcmxvYWQgb2YgZHJhZ0RhdGFNYXAgc28gd2UgZG9uJ3QgbmVlZCBhIGNv
bnN0X2Nhc3QgaGVyZS4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihj
b25zdF9jYXN0PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSku
ZHJhZ0RhdGFNYXAoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKaW5kZXggMTk2NDljNTY2Y2ZjZjVmNDI0MzA5
ZDFkOGQxMDBiMGI0ZmY3NzBhOC4uNmY3ZjRiYTE2NjBiNGY3YTk3NzIxMmM4NTYzYTQzYzY2NWUz
MGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVw
TWVudURCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBN
ZW51REIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgaW50IFNlYXJjaFBvcHVwTWVudURCOjpleGVj
dXRlU2ltcGxlU3FsKGNvbnN0IFN0cmluZyYgc3FsLCBib29sIGlnbm9yZUVycm9yKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRlUHJl
cGFyZWRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAg
ICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNl
LCBzcWwpOwogICAgIGludCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlRf
VU5VU0VEKHJldCwgcmV0ID09IFNRTElURV9PSyk7CiAgICAgcmV0dXJuIHN0YXRlbWVudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKaW5kZXggZGJmOTlh
NDVjZTcwM2E5ZDg1N2EwZTYwMTlkNjgwNmRkMTFmYTE3Yi4uMjQxMDAzYTEwMDMxYTNkN2U2ZDdh
YTFlMjRhNDljYjk4OTgyMGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1dDRGF0YU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dD
RGF0YU9iamVjdC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBTVERNRVRIT0RJTVAgV0NEYXRhT2Jq
ZWN0OjpTZXREYXRhKEZPUk1BVEVUQyogcGZvcm1hdGV0YywgU1RHTUVESVVNKiBwbWVkaXVtLCBC
TwogICAgIGlmICghcGZvcm1hdGV0YyB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9J
TlRFUjsKIAotICAgIGF1dG8gZmV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFURVRDPigpOwor
ICAgIGF1dG8gZmV0YyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1BVEVU
Qz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBw
U3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmZXRjLmdldCgpLCBzaXpl
b2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4
IGMwMDRmYzllNzA0YTZhZDMyMzQ5ZmI4MjRjZGM1ZGRkMDM2MDFiNWMuLjQ3OTgxYWU2OTkxZGM2
NDkxNTIwZmM4MjQzMmVjYzQ5NTg2NDQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmls
dGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKIAog
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKIAotICAgIGF1dG8gYnVpbGRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKKyAgICBh
dXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0VmZmVj
dCk7CiAgICAgbV9zb3VyY2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNlQWxw
aGE6OmVmZmVjdE5hbWUoKSk7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGls
ZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0ZXIp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcApp
bmRleCAwMTMzNzg3ZDlkMzA2MmIxY2E3OWIxNjA3OTYzZjIwYzEwNzFlZDUzLi5iZDNjOWJlZTg3
Mjk4NmVjNjFiMWEzMGEwNDk1YjhjMGEyNmZkNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZv
aWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVy
YXRvciBpdGVyKQogCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGNyZWF0ZVJ1bihp
bnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXIm
IHJlc29sdmVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHN0YXJ0
LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0
KCksIHJlc29sdmVyLmRpcigpKTsKIH0KIAogdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5k
UnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXJ0LCBpbnQg
ZW5kLCBSZW5kZXJPYmplY3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKQEAg
LTEzMCwxMiArMTMwLDEyIEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNGb3JP
YmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFyCiBzdGQ6OnVuaXF1ZV9w
dHI8Um9vdElubGluZUJveD4gQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3go
KQogewogICAgIGlmIChpczxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7Ci0gICAgICAgIGF1dG8g
Ym94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSb290SW5saW5lQm94Pihkb3duY2FzdDxSZW5kZXJT
VkdUZXh0PihtX2Zsb3cpKTsKKyAgICAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR1Jvb3RJ
bmxpbmVCb3g+KGRvd25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOwogICAgICAgICBib3gt
PnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBib3g7CiAgICAg
fQogICAgICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94Piht
X2Zsb3cpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiB9
CiAKIFJvb3RJbmxpbmVCb3gqIENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290
SW5saW5lQm94KCkKQEAgLTEwODUsNyArMTA4NSw3IEBAIGlubGluZSBCaWRpUnVuKiBDb21wbGV4
TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJp
CiAgICAgICAgIHdoaWxlIChCaWRpQ29udGV4dCogcGFyZW50ID0gYmFzZUNvbnRleHQtPnBhcmVu
dCgpKQogICAgICAgICAgICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7CiAKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEJpZGlSdW4+IG5ld1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRp
UnVuPihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VS
dW4tPnJlbmRlcmVyKCksIGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBtYWtlVW5pcXVlPEJpZGlS
dW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1
bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAgIHRy
YWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIHRyYWlsaW5nU3Bh
Y2VSdW4gPSBuZXdUcmFpbGluZ1J1bi5nZXQoKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2b2lkIENvbXBsZXhMaW5l
TGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSkKICAgICAgICAgaWYgKGxheW91dFN0YXRlLmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKCkp
IHsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0Um9v
dEJveCgpLT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAgICAgIExheW91
dFVuaXQgYm90dG9tTGF5b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9t
TGF5b3V0T3ZlcmZsb3coKTsKLSAgICAgICAgICAgIGF1dG8gbmV3TGluZUJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgICAgICAg
ICAgYXV0byBuZXdMaW5lQm94ID0gbWFrZVVuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVC
b3g+KG1fZmxvdyk7CiAgICAgICAgICAgICBhdXRvIHRyYWlsaW5nRmxvYXRzTGluZUJveCA9IG5l
d0xpbmVCb3guZ2V0KCk7CiAgICAgICAgICAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94KFdU
Rk1vdmUobmV3TGluZUJveCkpOwogICAgICAgICAgICAgdHJhaWxpbmdGbG9hdHNMaW5lQm94LT5z
ZXRDb25zdHJ1Y3RlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zs
b2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmpl
Y3RzLmNwcAppbmRleCA0Y2RkMTM5YzQ4NzUxNmVhMGU3YjEyMTNiNzAzYmQzNDI3YWIwMThjLi5h
NmM2NDgxOGM0OTc0NTYwOTBmNjYyM2MzMDRiNWQ2Mjc3MDdhZTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBGbG9h
dGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94JiByZW5kZXJlciwgVHlwZSB0eXBl
LCBjb25zdCBMYXlvdXRSZWN0JgogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZs
b2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikKIHsKLSAgICBhdXRvIG9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKKyAgICBh
dXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKICAgICBv
YmplY3QtPnNldFNob3VsZFBhaW50KCFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsg
Ly8gSWYgYSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3
aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgogICAgIG9iamVjdC0+c2V0SXNEZXNjZW5kYW50KHRydWUp
OwogICAgIHJldHVybiBvYmplY3Q7CkBAIC04MywxMiArODMsMTIgQEAgc3RkOjp1bmlxdWVfcHRy
PEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVuZGVy
ZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNv
cHlUb05ld0NvbnRhaW5lcihMYXlvdXRTaXplIG9mZnNldCwgYm9vbCBzaG91bGRQYWludCwgYm9v
bCBpc0Rlc2NlbmRhbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5s
b2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwg
c2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRp
bmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2Nh
dGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hv
dWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09i
amVjdD4gRmxvYXRpbmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50KCkgY29uc3QKIHsKLSAgICBh
dXRvIGNsb25lT2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVy
ZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQs
IG1faXNEZXNjZW5kYW50KTsKKyAgICBhdXRvIGNsb25lT2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9h
dGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZz
ZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKICAgICBjbG9uZU9iamVjdC0+bV9w
YWdpbmF0aW9uU3RydXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBjbG9uZU9iamVjdC0+bV9p
c1BsYWNlZCA9IG1faXNQbGFjZWQ7CiAgICAgcmV0dXJuIGNsb25lT2JqZWN0OwpAQCAtMzcyLDcg
KzM3Miw3IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSgp
CiAgICAgaWYgKG1fc2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGFj
ZWRGbG9hdHNUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7Cisg
ICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7
CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zZXQuYmVnaW4oKSwgZW5kID0gbV9zZXQuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3Qg
PSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCBjNzJkMDFkODFjN2Q3MTY2MTU3OWUzYmEwMTgz
MGU0MjlkMzBmNjg4Li4xZTkxMWFlNjBhNjEyNjg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4N2UyOTUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVk
IGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4
ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFsw
XS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJh
Y2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFF
bm91Z2gocm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxHcmlkQXJlYT4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46
OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dT
cGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgs
IG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFu
c2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3Bhbiks
IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2Nv
bHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRl
cmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhl
IHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdUcmFj
a0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggNWZjMzI4MTUzYTZk
OGJmYzQ4ODNiYTUxMjFjY2EwYmY2ZjJlOTlkMC4uNjYwOTA5OGY5Yzg3MDQ2ODgxMTQxOGFiMTc4
Mjk0MTdiZWUyZDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRC
YXNlbGluZUFsaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRC
YXNlbGluZUFsaWdubWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdyaWRCYXNlbGlu
ZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KEl0ZW1Qb3NpdGlvbiBw
cmVmZXJlbgogCiAgICAgLy8gTG9va2luZyBmb3IgYSBjb21wYXRpYmxlIGJhc2VsaW5lLXNoYXJp
bmcgZ3JvdXAuCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNo
aWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOworICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJl
bmNlLCBhc2NlbnQsIGRlc2NlbnQpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvKiBjb250ZXh0
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICAgICAgY29udGV4dC0+dXBk
YXRlU2hhcmVkR3JvdXAoY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0u
Y3BwCmluZGV4IGFkZGVkYzQyOGIxZjJmZGIzNTAzZTgxMjYyNmI5NzY5M2EzZTdiNWYuLmIyYjAx
MWJkZjc0OTFiMzVhYjFkYmI3YWM2YjI2Mzk2MTcyMWNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC02ODEs
NyArNjgxLDcgQEAgZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhG
YWN0b3JVbml0U2l6ZShjb25zdCBWZWN0b3I8R3JpZFRyYWMKICAgICAgICAgICAgIGxlZnRPdmVy
U3BhY2UgLT0gYmFzZVNpemU7CiAgICAgICAgICAgICBmbGV4RmFjdG9yU3VtIC09IGZsZXhGYWN0
b3I7CiAgICAgICAgICAgICBpZiAoIXRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUpCi0gICAgICAg
ICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJh
Y2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxl
ID0gbWFrZVVuaXF1ZTxUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgdHJhY2tzVG9UcmVh
dEFzSW5mbGV4aWJsZS0+YWRkKGluZGV4KTsKICAgICAgICAgICAgIHZhbGlkRmxleEZhY3RvclVu
aXQgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMTI2MCwxMCArMTI2MCwxMCBAQCB2b2lkIEdyaWRU
cmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbiwgdW5zaWduZQogICAgIG1fc2l6aW5nT3BlcmF0aW9uID0gc2l6aW5nT3BlcmF0aW9uOwog
ICAgIHN3aXRjaCAobV9zaXppbmdPcGVyYXRpb24pIHsKICAgICBjYXNlIEludHJpbnNpY1NpemVD
b21wdXRhdGlvbjoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZWZp
bml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVuaXF1
ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVHJhY2tTaXppbmc6Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVlPERl
ZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5p
cXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDczYjM2
NTQ3NjcxNDBhMDM3MGU0ZDU2OTU2ZTU0ZjI2NzRiNThiMzYuLmIzYzQwMDc5MDJkZjYwNDg2MmE1
YWM3YzI5OThjYmFkNzNmMTEyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3Vs
dChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90aGVy
LmlzT3ZlcldpZGdldCgpKQogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNl
IG9mIGxpc3QgaGl0IHRlc3QuCi0gICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9s
aXN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9s
aXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CisgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0
ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigqb3Ro
ZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6
On5IaXRUZXN0UmVzdWx0KCkgPSBkZWZhdWx0OwpAQCAtMTEzLDcgKzExMyw3IEBAIEhpdFRlc3RS
ZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhl
cikKICAgICBtX2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAgLy8g
T25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xp
c3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1h
a2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0
cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDog
bnVsbHB0cjsKIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTY5MCwxNCArNjkwLDE0IEBAIHZv
aWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxCiBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRU
ZXN0UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fbGlz
dEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBt
YWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7
CiB9CiAKIEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0
QmFzZWRUZXN0UmVzdWx0KCkKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAg
ICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0Pigp
OworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7
CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggNDNjNjUzODc2Y2Y5ODRhNjJiNmZjOTI5
NDVkM2RkNjkwY2EzZWRiOS4uMTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3
ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9y
cyhjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRlcikKIC8vIG9mIEJpZGlSZXNvbHZlciB3aGljaCBr
bm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdHMuCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRk
UGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
dmVyLCBSZW5kZXJPYmplY3QmIG9iaiwgdW5zaWduZWQgcG9zLCBSZW5kZXJFbGVtZW50JiByb290
KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmlkaVJ1bj4ocG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNv
bHZlci5kaXIoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0g
bWFrZVVuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJl
c29sdmVyLmRpcigpKTsKICAgICAvLyBGSVhNRTogaXNvbGF0ZWRSdW5zKCkgY291bGQgYmUgYSBo
YXNoIG9mIG9iamVjdC0+cnVuIGFuZCB0aGVuIHdlIGNvdWxkIGNoZWFwbHkKICAgICAvLyBBU1NF
UlQgaGVyZSB0aGF0IHdlIGRpZG4ndCBjcmVhdGUgbXVsdGlwbGUgb2JqZWN0cyBmb3IgdGhlIHNh
bWUgaW5saW5lLgogICAgIHJlc29sdmVyLnNldFdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlv
bkZvcklzb2xhdGVkUnVuKCppc29sYXRlZFJ1biwgcmVzb2x2ZXIud2hpdGVzcGFjZUNvbGxhcHNp
bmdTdGF0ZSgpLmN1cnJlbnRUcmFuc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5ZXJPdmVybGFwTWFwLmNwcAppbmRleCAyODVhYTVmOWZlOWJhZTdkZmM4NTI4YzI0YzFk
NTU2N2Q0MTI5ZmYzLi45NmFmOTVhNDU1Njk1MGU4MTI2Yjk1MzczNTM0ZDQ3NmRhZTM1NjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtNzEs
NiArNzEsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgUmVjdExpc3QmIHJlY3RMaXN0KQogLy8gQ2hlY2tpbmcgZm9yIG92ZXJsYXAgaW52b2x2
ZXMgZmluZGluZyB0aGUgbm9kZSBmb3IgdGhlIGNsaXBwaW5nIGxheWVyIGVuY2xvc2luZyB0aGUg
Z2l2ZW4gbGF5ZXIgKG9yIHRoZSByb290KSwKIC8vIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUg
Ym91bmRzIG9mIGVhcmxpZXIgc2libGluZ3MuCiBjbGFzcyBPdmVybGFwTWFwQ29udGFpbmVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPdmVybGFwTWFwQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckxheWVyJiByb290TGF5ZXIpCiAgICAgICAgIDogbV9yb290U2Nv
cGUocm9vdExheWVyKQpAQCAtMjk2LDcgKzI5Nyw3IEBAIGJvb2wgTGF5ZXJPdmVybGFwTWFwOjpv
dmVybGFwc0xheWVycyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IExheW91dFJlY3Qm
CiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKQogewot
ICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE92ZXJsYXBNYXBDb250
YWluZXI+KG1fcm9vdExheWVyKSk7CisgICAgbV9vdmVybGFwU3RhY2suYXBwZW5kKG1ha2VVbmlx
dWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9yb290TGF5ZXIpKTsKIH0KIAogdm9pZCBMYXllck92
ZXJsYXBNYXA6OnBvcENvbXBvc2l0aW5nQ29udGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRkYmEzZjFjNDEwNWFmYjBlOGU0Yzc2YTdjZmNiOWU1
ZmZmNzE4NTQuLjAwMTkyNTg4MmU1MDI4YzhhMjA5OWI0YmJkZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJs
b2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGRlc2NlbmRh
bnRTZXQgPSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAtPmVuc3VyZSgmY29udGFpbmVyLCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RI
YXNoU2V0PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0
SGFzaFNldD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBib29sIGFkZGVkID0g
ZGVzY2VuZGFudFNldC0+YWRkKCZkZXNjZW5kYW50KS5pc05ld0VudHJ5OwpAQCAtMTE1LDcgKzEx
NSw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJl
bmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGNv
bnRhaW5lclNldCA9IHBlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmVuc3VyZSgmZGVzY2VuZGFu
dCwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJl
bmRlckJsb2NrKj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3Qg
UmVuZGVyQmxvY2sqPj4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQo
IWNvbnRhaW5lclNldC0+Y29udGFpbnMoJmNvbnRhaW5lcikpOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IGNsYXNzIFBvc2l0aW9uZWREZXNjZW5kYW50c01hcCB7CiAgICAgICAgIH0KIAogICAgICAgICBh
dXRvJiBkZXNjZW5kYW50cyA9IG1fZGVzY2VuZGFudHNNYXAuZW5zdXJlKCZjb250YWluaW5nQmxv
Y2ssIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5k
ZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tl
ZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAog
ICAgICAgICBib29sIGlzTmV3RW50cnkgPSBtb3ZlRGVzY2VuZGFudFRvRW5kID09IE1vdmVEZXNj
ZW5kYW50VG9FbmQ6OlllcyA/IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0
aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGlu
bGluZSBVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbiogY3VycmVudFVwZGF0
ZVNjcm9sbEluZm9BZnQKIHZvaWQgUmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0Fm
dGVyTGF5b3V0VHJhbnNhY3Rpb24oKQogewogICAgIGlmICghdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpKQotICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJM
YXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5ZWRVcGRhdGVT
Y3JvbGxJbmZvU3RhY2s+KCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRy
YW5zYWN0aW9uU3RhY2soKSA9IG1ha2VVbmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFj
az4oKTsKICAgICBpZiAodXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFj
aygpLT5pc0VtcHR5KCkgfHwgY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5z
YWN0aW9uKCktPnZpZXcgIT0gJnZpZXcoKSkKICAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5hcHBlbmQoVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5
b3V0VHJhbnNhY3Rpb24odmlldygpKSk7CiAgICAgKytjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0Fm
dGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+bmVzdGVkQ291bnQ7CkBAIC02MjAsNyArNjIwLDcgQEAg
c3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEmIGVuc3VyZUJsb2NrUmFyZURhdGEoY29uc3QgUmVu
ZGVyQmxvY2smIGJsb2NrKQogICAgIAogICAgIGF1dG8mIHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFw
LT5hZGQoJmJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0
YSkKLSAgICAgICAgcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrUmFyZURh
dGE+KCk7CisgICAgICAgIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRh
PigpOwogICAgIHJldHVybiAqcmFyZURhdGEuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggN2YxZTYzOTcwNjNiZTRmOGRmOWI1
N2YxNzVkNmUyNmU3OGVmYjEzNC4uYjg2NDJkMTcyMDNiZDRiZjI1YmRlMTcxZjk4NzBhZjdkNWE0
M2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
QEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hp
bGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZQogICAgIG1fc2ltcGxl
TGluZUxheW91dCA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fY29tcGxleExpbmVMYXlvdXQpCi0g
ICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5l
TGF5b3V0PigqdGhpcyk7CisgICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVl
PENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0LT5s
YXlvdXRMaW5lQm94ZXMocmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFp
bnRMb2dpY2FsQm90dG9tKTsKIH0KQEAgLTIwMTksNyArMjAxOSw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgpCiAgICAgCiAgICAgc2V0TGluZUdyaWRCb3goMCk7
CiAKLSAgICBhdXRvIGxpbmVHcmlkQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94
PigqdGhpcyk7CisgICAgYXV0byBsaW5lR3JpZEJveCA9IG1ha2VVbmlxdWU8Um9vdElubGluZUJv
eD4oKnRoaXMpOwogICAgIGxpbmVHcmlkQm94LT5zZXRIYXNUZXh0Q2hpbGRyZW4oKTsgLy8gTmVl
ZGVkIHRvIG1ha2UgdGhlIGxpbmUgYXNjZW50L2Rlc2NlbnQgYWN0dWFsbHkgYmUgaG9ub3JlZCBp
biBxdWlya3MgbW9kZS4KICAgICBsaW5lR3JpZEJveC0+c2V0Q29uc3RydWN0ZWQoKTsKICAgICBH
bHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0ZXh0Qm94RGF0YU1hcDsKQEAgLTIyNjAs
NyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3Rz
KFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBhaW50CiAKIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMoKQogewotICAgIG1fZmxvYXRpbmdPYmplY3RzID0g
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsKKyAgICBtX2Zsb2F0aW5n
T2JqZWN0cyA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3RzPigqdGhpcyk7CiB9CiAKIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVjdHMoKQpAQCAtMzY3Nyw3ICszNjc3
LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcygpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVCghbV9jb21wbGV4TGluZUxheW91dCk7Ci0gICAgbV9jb21wbGV4
TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsK
KyAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4o
KnRoaXMpOwogCiAgICAgaWYgKFNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckxpbmVCb3hUcmVl
KCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KSkgewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0
OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KTsKQEAgLTM3
MzUsNyArMzczNSw3IEBAIFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEm
IFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFyZUJsb2NrRmxvd0RhCiB2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0YSgpCiB7CiAgICAgQVNTRVJUKCFoYXNS
YXJlQmxvY2tGbG93RGF0YSgpKTsKLSAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7
CisgICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tGbG93OjpS
ZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZGIzYTZk
YThmMWEzMjE1MzcwMGU3MzQxN2QxMGY2YTQ4MTMwODM1Zi4uOTY3N2RhZTljZmUyOGIxZGMzOTA1
YzNhODJiMDZlYzZlY2RjZGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgQ29udHJvbFN0YXRlc1JlbmRlcmVyTWFwJiBj
b250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQogc3RhdGljIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogewogICAgIHJldHVy
biBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5lbnN1cmUoJnJlbmRlcmVyLCBbXSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOwogfQogCkBAIC0yMTIyLDcgKzIxMjIsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6
b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91
dAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gUmVuZGVyQm94OjpjcmVhdGVJ
bmxpbmVCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRC
b3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhp
cyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAppbmRleCA0MjQzMGRmOGJhN2I2YWI4NjMyMzI4ZTYyZWY5MjU3MDFhZjNiNzc4Li5jZGNhNDU4
YTFjMWY0MGU5Njk2MjA0Y2Y0NjhkOTkxNGVkYTI0ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI1MzgsNyArMjUzOCw3
IEBAIGF1dG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9k
ZSgpIC0+IENvbnRpbnVhdGlvbkNoYWluTm9kCiB7CiAgICAgc2V0SGFzQ29udGludWF0aW9uQ2hh
aW5Ob2RlKHRydWUpOwogICAgIHJldHVybiAqY29udGludWF0aW9uQ2hhaW5Ob2RlTWFwKCkuZW5z
dXJlKHRoaXMsIFsmXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVh
dGlvbkNoYWluTm9kZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250aW51
YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAyMjEwNDQzNGU0
NWQ2Yzk4NDc2ZmZkMjlhYjU1MGJkNjJhYzQwOGZlLi5jMWUwM2YwOTdlZjU5YWQ1YTE2YjE5NGM5
YzA1ZDY0OWY3ZmYxNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRl
ck5vZGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICBp
ZiAocGxhY2UucGFyZW50KQogICAgICAgICBwbGFjZS5wYXJlbnQtPmluc2VydEFmdGVyKG5ld05v
ZGUsIHBsYWNlLnByZXZpb3VzU2libGluZy5nZXQoKSwgaWRlbnRpZmllcik7CiAKLSAgICBtYXBz
LmFkZCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3It
PnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkpOworICAgIG1hcHMuYWRk
KCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFk
ZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7CiAgICAgcmVuZGVyZXIuc2V0SGFzQ291
bnRlck5vZGVNYXAodHJ1ZSk7CiAKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcApp
bmRleCA1MWE5ZTQ2ODQzNDRkMjYzN2QwNGE5MWZiNTlhM2NkNmVmOGYwNmVkLi43ZjZjYWJjMDU5
MTIxMDgxYzRkNzI4NjAyMTliZDRiOWM4NWI5NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKQEAgLTMwMyw3ICszMDMs
NyBAQCBSZW5kZXJCb3hGcmFnbWVudEluZm8qIFJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRS
ZW5kZXJCb3hGcmFnbWVudEluZm8oY29uc3QgUgogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBt
X3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQoYm94LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJv
eEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRh
aW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21l
bnRJbmZvLmFkZChib3gsIG1ha2VVbmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2Fs
TGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0
KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBib3hJbmZvLmdldCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAppbmRl
eCA0NGY1NjM1YmE1M2FlM2Y3ZTk0ZDdhYzhlNDk2NzM5MGY1OGMyZTU2Li44NDZkZDNhMDJhYTg2
YWFmNzE1YzA5NGU4YzM1MGMxNjZhODY3YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIFJl
bmRlckZyYWdtZW50Q29udGFpbmVyKiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y3VycmVudEZyYWdt
ZW50KCkgY29uc3QKIENvbnRhaW5pbmdGcmFnbWVudE1hcCYgUmVuZGVyRnJhZ21lbnRlZEZsb3c6
OmNvbnRhaW5pbmdGcmFnbWVudE1hcCgpCiB7CiAgICAgaWYgKCFtX2xpbmVUb0ZyYWdtZW50TWFw
KQotICAgICAgICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWlu
aW5nRnJhZ21lbnRNYXA+KCk7CisgICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAgPSBtYWtlVW5p
cXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKIAogICAgIHJldHVybiAqbV9saW5lVG9GcmFn
bWVudE1hcC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwCmluZGV4IGI5MDQ1ZTY3OTA4NzNhYmY4MWE5MGRmYTViYmIxMTA5M2M2Nzdi
MDIuLjUyYzc5MGQ0ZTU3ODliMTc4ZTI2YzhhYmQ4YmE3YjEzY2M1OTE1MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMjE4LDcgKzIx
OCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NCiAgICAgCiAgICAgUmVuZGVyR2VvbWV0cnlN
YXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIGlmICgh
dC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3Rk
OjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odCk7CisgICAgICAgIHN0ZXAubV90
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKICAgICBlbHNl
CiAgICAgICAgIHN0ZXAubV9vZmZzZXQgPSBMYXlvdXRTaXplKHQuZSgpLCB0LmYoKSk7CiAKQEAg
LTIzNSw3ICsyMzUsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBS
ZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIFJlbmRlckdlb21l
dHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBz
dGVwLm1fb2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OwogICAgIGlmICh0KQotICAgICAgICBzdGVwLm1f
dHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwor
ICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4oKnQpOwogICAgIAogICAgIHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBlMzVhMmMxMzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0
Y2NjOWQwZjM0OTdmLi40OWFkMDM1NTUzNzM0MjI1ZjFkZGQ2MzNiNDJjMTM4MzJjY2VmYmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC01NDQsNyArNTQ0LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21w
dXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICB1bnNpZ25lZCBsYXN0QXV0b1JlcGVhdFRy
YWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBlYXRUcmFja3MoZGlyZWN0
aW9uKTsKIAogICAgIGlmICghZ3JpZC5oYXNHcmlkSXRlbXMoKSkgewotICAgICAgICBlbXB0eVRy
YWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7Cisg
ICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNl
dD4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFja0luZGV4ID0gZmlyc3RBdXRvUmVwZWF0
VHJhY2s7IHRyYWNrSW5kZXggPCBsYXN0QXV0b1JlcGVhdFRyYWNrOyArK3RyYWNrSW5kZXgpCiAg
ICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5kZXgpOwogICAgIH0gZWxz
ZSB7CkBAIC01NTIsNyArNTUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4
U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICAgICAg
ICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBkaXJlY3Rpb24sIHRyYWNrSW5kZXgpOwog
ICAgICAgICAgICAgaWYgKCFpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgewogICAgICAgICAgICAg
ICAgIGlmICghZW1wdHlUcmFja0luZGV4ZXMpCi0gICAgICAgICAgICAgICAgICAgIGVtcHR5VHJh
Y2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAg
ICAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRU
cmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQo
dHJhY2tJbmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTczMiw3ICs3MzIsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFy
ZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dAogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NE
aXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQg
Y3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVG
b3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFu
IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdy
aWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0Rp
cmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4o
c3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9u
cyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMg
PyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8R3JpZEFyZWE+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5z
ID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmll
ZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJl
Y3Rpb25Qb3NpdGlvbnMpOwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFq
b3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBh
dXRvR3JpZEl0ZW1zKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKaW5kZXggZjZjYjU2MTgxMmQyMjI2ODY2OTgzZjNhYjljNzQwYTU2ZGIwMjZlOC4uYzM1NWZm
MzcxYjQxMWE1OGU3OTA2Yzg3N2VhZDRiNTM0NjcxNWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0
IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFn
ZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHls
ZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAs
IG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291
cmNlPigpKQogICAgICwgbV9pbWFnZURldmljZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJh
dGlvKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwg
U3R5bGVJbWFnZSogc3R5bAogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQogICAg
IDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0g
ICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdl
ID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2Up
IDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDlkOGE2NTkzNGJhM2ZkMjU0NzRj
MzljOTFmZWVjNDNhYTBjOWY5ZjUuLjE1MzI1Y2RhMTY5MDY3YTU2OTFiODg1YThkZmRjN2FhOTAz
NjQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0x
MTAwLDcgKzExMDAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6ZGVsZXRlTGluZXMoKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gUmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93
Qm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhp
cyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMpOwogfQogCiBJ
bmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3go
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZjlmMGQwZDRj
ZWU2NmMxZjQzZGU1MzJiNjEwMDUzMmJmYjYxNTA4Yy4uMTg1NDY4NzA1MTZlNGQwZmQ1ZTJiMDI4
ZGViM2JjNDBjZTZjOGJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxv
d0xpc3QoKQogICAgICAgICAvLyBJZ25vcmUgbm9uLW92ZXJmbG93IGxheWVycyBhbmQgcmVmbGVj
dGlvbnMuCiAgICAgICAgIGlmIChjaGlsZC0+aXNOb3JtYWxGbG93T25seSgpICYmICFpc1JlZmxl
Y3Rpb25MYXllcigqY2hpbGQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fbm9ybWFsRmxvd0xpc3Qp
Ci0gICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9
IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CiAgICAgICAgICAgICBtX25vcm1h
bEZsb3dMaXN0LT5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzU2LDcgKzc1
Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVu
TGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yCiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXll
ciAmJiAhaXNOb3JtYWxGbG93T25seSgpKSB7CiAgICAgICAgIGF1dG8mIGxheWVyTGlzdCA9ICh6
SW5kZXgoKSA+PSAwKSA/IHBvc2l0aXZlWk9yZGVyTGlzdCA6IG5lZ2F0aXZlWk9yZGVyTGlzdDsK
ICAgICAgICAgaWYgKCFsYXllckxpc3QpCi0gICAgICAgICAgICBsYXllckxpc3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOworICAgICAgICAgICAgbGF5ZXJMaXN0
ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAgbGF5ZXJMaXN0
LT5hcHBlbmQodGhpcyk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3Ry
YW5zZm9ybTsKICAgICBpZiAoaGFzVHJhbnNmb3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAg
ICBpZiAoaGFzVHJhbnNmb3JtKQotICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0g
PSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX3RyYW5zZm9ybSA9IG51bGxwdHI7CiAgICAgICAgIApAQCAtNTUyNyw3ICs1NTI3
LDcgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBD
bGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb24KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2Ns
aXBSZWN0c0NhY2hlKQotICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0gc3RkOjptYWtlX3VuaXF1
ZTxDbGlwUmVjdHNDYWNoZT4oKTsKKyAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlx
dWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fY2xpcFJlY3RzQ2Fj
aGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQucm9v
dExheWVyOwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fc2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBS
ZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5j
eTsKQEAgLTYxMDUsNyArNjEwNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3Rz
KENsaXBSZWN0c1R5cGUgdHlwZVRvQ2xlYXIpCiBSZW5kZXJMYXllckJhY2tpbmcqIFJlbmRlckxh
eWVyOjplbnN1cmVCYWNraW5nKCkKIHsKICAgICBpZiAoIW1fYmFja2luZykgewotICAgICAgICBt
X2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOwor
ICAgICAgICBtX2JhY2tpbmcgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMp
OwogICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVDb21wb3NpdGVkKCp0aGlzKTsKIAog
ICAgICAgICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CkBAIC02NTIzLDcgKzY1MjMs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNIVE1M
TWFycXVlZSgpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5tYXJxdWVlQmVoYXZpb3IoKSAhPSBNYXJx
dWVlQmVoYXZpb3I6Ok5vbmUgJiYgcmVuZGVyZXIoKS5pc0JveCgpKSB7CiAgICAgICAgIGlmICgh
bV9tYXJxdWVlKQotICAgICAgICAgICAgbV9tYXJxdWVlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJNYXJxdWVlPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWFycXVlZSA9IG1ha2VVbmlxdWU8UmVu
ZGVyTWFycXVlZT4odGhpcyk7CiAgICAgICAgIG1fbWFycXVlZS0+dXBkYXRlTWFycXVlZVN0eWxl
KCk7CiAgICAgfSBlbHNlIGlmIChtX21hcnF1ZWUpCiAgICAgICAgIG1fbWFycXVlZSA9IG51bGxw
dHI7CkBAIC02NzM1LDcgKzY3MzUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjplbnN1cmVMYXllckZp
bHRlcnMoKQogICAgIGlmIChtX2ZpbHRlcnMpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBt
X2ZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOwor
ICAgIG1fZmlsdGVycyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyTGF5ZXJGaWx0ZXJzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggN2YxNDM2NmE3ZTU2
MTEwMzM3MjA3N2JlZmUyYTYwODM0MmY3YmE0OS4uNzVmOWViMGYyOTdhMjM2YzdhNzgyNTY4NjNk
MDUyODU3YjRjZGNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKQEAgLTE2MjcsNyArMTYyNyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5nU3RhY2soVmVjdG9yPENvbXBvc2l0ZWRDbGlwRGF0
YT4mCiAgICAgfQogICAgIAogICAgIGlmICghbV9hbmNlc3RvckNsaXBwaW5nU3RhY2spIHsKLSAg
ICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3RhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5j
ZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkpOworICAgICAgICBtX2Fu
Y2VzdG9yQ2xpcHBpbmdTdGFjayA9IG1ha2VVbmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3Rh
Y2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb21w
b3NpdGluZywgc3RyZWFtIDw8ICJsYXllciAiIDw8ICZtX293bmluZ0xheWVyIDw8ICIgYW5jZXN0
b3JDbGlwcGluZ1N0YWNrICIgPDwgKm1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3OCwxNyArMzE3OCwxNyBAQCBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1h
dGlvbiYgYW5pbQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUg
PSBrZXkgPT0gMCB8fCBrZXkgPT0gMTsKICAgICAgICAgaWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNG
aXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShD
U1NQcm9wZXJ0eVRyYW5zZm9ybSkpCi0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0
KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVT
dHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5z
ZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHls
ZS0+dHJhbnNmb3JtKCksIHRmKSk7CiAKICAgICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmly
c3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NT
UHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6
bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFj
aXR5KCksIHRmKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVl
PEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0Zikp
OwogCiAgICAgICAgIGlmICgoaGFzRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwg
Y3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpKQotICAg
ICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1h
dGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOworICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihr
ZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwogCiAjaWYgRU5BQkxFKEZJTFRFUlNf
TEVWRUxfMikKICAgICAgICAgaWYgKChoYXNCYWNrZHJvcEZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0
S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5
V2Via2l0QmFja2Ryb3BGaWx0ZXIpKQotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3Iu
aW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJh
bWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmls
dGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtl
eWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCksIHRmKSk7CiAjZW5kaWYKICAgICB9CiAKQEAg
LTMyNDMsOCArMzI0Myw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRp
b24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0
IEFuaW1hdGlvbiogb3BhY2l0eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHko
Q1NTUHJvcGVydHlPcGFjaXR5KTsKICAgICAgICAgaWYgKG9wYWNpdHlBbmltICYmICFvcGFjaXR5
QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFs
dWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgICAgICAg
ICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZh
bHVlPigwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7Ci0gICAg
ICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0
aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7Cisg
ICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAg
ICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25W
YWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAg
ICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFu
aW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3Mg
YW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRk
QW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEZsb2F0U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhp
Y3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNp
dHkpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRo
ZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxz
byBzZXQgdGhlIGZpbmFsIG9wYWNpdHkuCkBAIC0zMjU4LDggKzMyNTgsOCBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0
b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAg
ICAgICBpZiAodHJhbnNmb3JtQW5pbSAmJiAhdHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1
cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3Rv
cihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rv
ci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJv
bVN0eWxlLT50cmFuc2Zvcm0oKSkpOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT50
cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5p
cXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7
CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBp
ZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCBzbmFwcGVk
SW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKS5zaXplKCksIHRyYW5zZm9ybUFu
aW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJv
cGVydHlUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVu
c3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1h
dGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAg
IHVwZGF0ZVRyYW5zZm9ybSgqdG9TdHlsZSk7CkBAIC0zMjcyLDggKzMyNzIsOCBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0gPSB0
b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpOwogICAgICAg
ICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkp
IHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihBbmltYXRlZFBy
b3BlcnR5RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtl
X3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOwot
ICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFu
aW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVy
VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5
bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlx
dWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAg
ICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBGbG9h
dFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5z
aXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hl
biB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAg
ICAgICAgICAgdXBkYXRlRmlsdGVycygqdG9TdHlsZSk7CkBAIC0zMjg3LDggKzMyODcsOCBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGJhY2tkcm9w
RmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdEJhY2tkcm9wRmlsdGVyKTsKICAgICAgICAgaWYgKGJhY2tkcm9wRmlsdGVyQW5pbSAmJiAh
YmFja2Ryb3BGaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAg
ICAgS2V5ZnJhbWVWYWx1ZUxpc3QgYmFja2Ryb3BGaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0
eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9y
Lmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5
bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9y
Lmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxl
LT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5p
bnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNr
ZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQo
bWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0
ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGJh
Y2tkcm9wRmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgYmFja2Ryb3BGaWx0ZXJBbmltLCBHcmFw
aGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Vi
a2l0QmFja2Ryb3BGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRv
IGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGJhY2tkcm9wIGZpbHRlciBpcyB2aXNpYmxlIHdoZW4g
dGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgYmFja2Ryb3AgZmlsdGVyLgog
ICAgICAgICAgICAgICAgIHVwZGF0ZUJhY2tkcm9wRmlsdGVycygqdG9TdHlsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4
IGFiZTRkNGQ2NzVhMjIxODZlMmVhODlkNDEyZmZhODE1MzhjNWM5MjkuLjMyMTIyOWQ2ZjIzY2Zh
ZTY2YTA1YTUyODA4ZGQwYjBjYmE4YzE0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYgcmVu
ZGVyVmlldykKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3JlbmRlclZp
ZXcuZnJhbWVWaWV3KCkucGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgbV9sZWdhY3lTY3JvbGxp
bmdMYXllckNvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxp
bmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1l
Q29tcG9zaXRvcigpKTsKKyAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9y
ID0gbWFrZVVuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdl
KCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKICNlbmRpZgog
fQogCkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlm
eUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllcioKIHsKICAgICBp
ZiAoIW1fbGF5ZXJVcGRhdGVyKSB7CiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCA9IHBhZ2UoKS5jaHJvbWUoKS5kaXNwbGF5SUQoKTsKLSAgICAgICAgbV9sYXllclVwZGF0ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlE
KTsKKyAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRh
dGVyPigqdGhpcywgZGlzcGxheUlEKTsKICAgICB9CiAgICAgCiAgICAgbV9sYXllclVwZGF0ZXIt
PnNjaGVkdWxlVXBkYXRlKCk7CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2b2lkIExlZ2FjeVdlYktp
dFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5l
ZExheWVycwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBj
b25zdHJhaW50czsKICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmlzU3RpY2tpbHlQb3Np
dGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxT
dGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNr
eVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9
IG1ha2VVbmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9y
LmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAgICAgICAgICAg
Y29uc3QgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0
cjsKICAgICAgICAgICAgIGlmIChjb21wb3NpdG9yLmlzQXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5
ZXIoKmxheWVyLCAmZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpICYmIGVuY2xvc2luZ1Rv
dWNoU2Nyb2xsYWJsZUxheWVyKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVuY2xvc2luZ1Rv
dWNoU2Nyb2xsYWJsZUxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CkBAIC00ODAwLDcgKzQ4MDAsNyBA
QCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxs
Vmlld3BvcnRDb25zdHJhaW5lZExheWVycwogICAgICAgICAgICAgICAgIHN0aWNreUNvbnRhaW5l
ck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVy
KCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5iYWNraW5nKCktPnNjcm9sbENvbnRh
aW5lckxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNGaXhlZFBvc2l0aW9uZWQoKSkKLSAgICAgICAg
ICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRD
b25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCps
YXllcikpOworICAgICAgICAgICAgY29uc3RyYWludHMgPSBtYWtlVW5pcXVlPEZpeGVkUG9zaXRp
b25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29u
c3RyYWludHMoKmxheWVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
aW5kZXggYmY2NDVjZDQxYjg5MTIxMmQ3ZjVhMzAzODZlZjljYTU0YmZhNDYwMi4uOGRkMDM5YmFm
ZGE2MzUzOGNlMzIxM2RjMzEzNTYwZmFhOGE0YmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHN0
YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFNjcm9sbENvb3JkaW5hdGlvblJvbGU+IGFsbFNjcm9s
bENvb3JkaW5hdGlvblJvbGVzKCkKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBM
ZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3Jk
aW5hdG9yKENocm9tZUNsaWVudCYgY2hyb21lQ2xpZW50LCBib29sIGNvb3JkaW5hdGVWaWV3cG9y
dENvbnN0cmFpbmVkTGF5ZXJzKQogICAgICAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcAppbmRleCA0Yjg2ZmUyYWQxNzVkY2U4NmFkMzg1MmJkZmMxNTJmZDEzMDhkNDVlLi4x
MjhjOTZkYWUwYjMxMDA2Y2EyNWQ1YTU2YzcyMGJjODkwZDM0ZjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC05NSw3
ICs5NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKCkKIHZv
aWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRlTGF5ZXIoKQogewogICAgIEFTU0VSVCgh
bV9sYXllcik7Ci0gICAgbV9sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXI+KCp0
aGlzKTsKKyAgICBtX2xheWVyID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllcj4oKnRoaXMpOwogICAg
IHNldEhhc0xheWVyKHRydWUpOwogICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXgg
YmM1NTI3YjhjNDZhNGRlMDY2ZjY5ZTVhMzEwYzg4NjgxOTZmYzIzYS4uMWFhZTA5ZDAwYjI2ZWEz
Y2FkZWE4NjcyZTI3NzkyOWJmZDE3YTYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgaW50IFJlbmRlckxpbmVCcmVh
azo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0
TGluZSwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJlbmRlckxpbmVCcmVh
azo6Y3JlYXRlSW5saW5lQm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxp
bmVFbGVtZW50Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRWxlbWVu
dEJveD4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0SW5saW5lQm94V3Jh
cHBlcihJbmxpbmVFbGVtZW50Qm94KiBpbmxpbmVCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDliYjlhNTM5ZDY2NDJk
ZjkwMDI2YTc4MmFmOGNmODRkYzQ5ZGEyYTkuLjQxMDNkYWQ0ODQ0ZGQyNGEzMDJhNzMyYWYyMjE5
YWM5MDAwMWNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtbkZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtbkZsb3cuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChSZW5kZXJNdWx0aUNvbHVtbkZsb3cpOwogCiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6
OlJlbmRlck11bHRpQ29sdW1uRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJGcmFnbWVudGVkRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHls
ZSkpCi0gICAgLCBtX3NwYW5uZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxTcGFubmVyTWFwPigpKQor
ICAgICwgbV9zcGFubmVyTWFwKG1ha2VVbmlxdWU8U3Bhbm5lck1hcD4oKSkKICAgICAsIG1fbGFz
dFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCiAgICAgLCBtX2Nv
bHVtbldpZHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDRkYTNiZDczNzcxYmExNzE5MGVhYzM1ZGE2MzhlMjQzZjE5MDI5MDcuLjBiZjUxOTNkZTQ4
NDQ1YmNjNjc3ZTkxNGU4YWQzZGY4MWNlYjgyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODkzLDcgKzE4OTMsNyBAQCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OnJhcmVEYXRhKCkgY29uc3QK
IFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGEmIFJlbmRlck9iamVjdDo6ZW5zdXJl
UmFyZURhdGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFy
ZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFy
ZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJPYmpl
Y3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIFJlbmRlck9iamVj
dDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggM2ZhYWZhMTEyMDY1MjYyM2UwNjVlNmEy
MWNlMWM3NTFkYmE5MWEzNy4uMDNkZDA4ZmU2YjdmMGE2ZGQxNWYyMWYyMzM1Y2NhYmM1YWYwMmE2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik7CiAKIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3QoZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9zbmFwc2hvdFJlc291cmNlKG1ha2VV
bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsKICAgICBtX3NuYXBzaG90UmVzb3VyY2Ut
PmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKaW5kZXggMTg2Y2E4NzBlZDEwOTEzZDU4Yjg1NDllYjk2ZGUzMzZlMzQ1NTM1OS4uZTkx
YTEzMzcxOTkxMmQxOGZhNTVlMzZkODM1NTg4NTdjMmQxOGIzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBSZW5kZXJU
YWJsZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHkKICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1MyIHNwZWMsIHlvdSBv
bmx5IHVzZSBmaXhlZCB0YWJsZSBsYXlvdXQgaWYgYW4KICAgICAgICAgLy8gZXhwbGljaXQgd2lk
dGggaXMgc3BlY2lmaWVkIG9uIHRoZSB0YWJsZS4gIEF1dG8gd2lkdGggaW1wbGllcyBhdXRvIHRh
YmxlIGxheW91dC4KICAgICAgICAgaWYgKHN0eWxlKCkudGFibGVMYXlvdXQoKSA9PSBUYWJsZUxh
eW91dFR5cGU6OkZpeGVkICYmICFzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpKQotICAg
ICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRUYWJsZUxheW91
dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxGaXhlZFRh
YmxlTGF5b3V0Pih0aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90YWJsZUxheW91
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QXV0b1RhYmxlTGF5b3V0Pih0aGlzKTsKKyAgICAgICAgICAg
IG1fdGFibGVMYXlvdXQgPSBtYWtlVW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CiAgICAg
fQogCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBpbnZhbGlkYXRlIGNvbGxhcHNlZCBi
b3JkZXJzIGNhY2hlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4
IDY4YzNhMTVkOTUxNmI1YjNjN2MyZGRhYjRhZGE0MDlhNWRjMjBkZmEuLmEwMmQ5YzE2ZjNhMjdj
YzUyMjA5NzEwMmMyNjliNzU1NTA5ZDAwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6ZGlydHlM
aW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJv
eD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SW5saW5lVGV4dEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGlu
ZVRleHRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3go
SW5saW5lVGV4dEJveCYgdGV4dEJveCkKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgUmVuZGVy
VGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0
QWZ0ZXJMYXN0VHlwCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBzZWN1cmVUZXh0VGltZXIg
PSBzZWN1cmVUZXh0VGltZXJzKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIXNlY3VyZVRleHRUaW1lcikKLSAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKKyAgICAgICAgc2VjdXJlVGV4
dFRpbWVyID0gbWFrZVVuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKICAgICBzZWN1cmVU
ZXh0VGltZXItPnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYzE0NDUxYTE4ZWVhN2E1
NzFhMjc3Nzg5OGE3OWNjOGI0M2ZmMzE0Mi4uNWZlYzY3OGM2YmI1ZGYwZTQ5MjJiMDEyYzNmMjY4
ZGJhYjRhN2I2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAt
NDkyLDcgKzQ5Miw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUoY29u
c3QgTGF5b3V0UmVjdCYgcmVwYWludFJlY3QpIGNvbnN0CiAgICAgLy8gRklYTUU6IE1heWJlIHRo
ZXJlIHNob3VsZCBiZSBhIHJlZ2lvbiB0eXBlIHRoYXQgZG9lcyB0aGlzIGF1dG9tYXRpY2FsbHku
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUg
PSAxNiAqIDE2OwogICAgIGlmIChtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Z3JpZFNpemUo
KSA+IG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUpCi0gICAgICAgIG1fYWNjdW11bGF0ZWRS
ZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBh
aW50UmVnaW9uLT5ib3VuZHMoKSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9u
ID0gbWFrZVVuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMo
KSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6Zmx1c2hBY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24o
KSBjb25zdApAQCAtNzI0LDcgKzcyNCw3IEBAIGJvb2wgUmVuZGVyVmlldzo6dXNlc0NvbXBvc2l0
aW5nKCkgY29uc3QKIFJlbmRlckxheWVyQ29tcG9zaXRvciYgUmVuZGVyVmlldzo6Y29tcG9zaXRv
cigpCiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29tcG9zaXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CisgICAgICAgIG1f
Y29tcG9zaXRvciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CiAK
ICAgICByZXR1cm4gKm1fY29tcG9zaXRvcjsKIH0KQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFJl
bmRlclZpZXc6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bAogSW1hZ2VRdWFsaXR5Q29udHJvbGxlciYgUmVuZGVyVmlldzo6aW1h
Z2VRdWFsaXR5Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIpCi0gICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlUXVhbGl0eUNv
bnRyb2xsZXIgPSBtYWtlVW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKIH0KIApAQCAtODM0LDcgKzgzNCw3
IEBAIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFj
Y3VtdWxhdG9yKFJlbmRlclZpZXcqIHZpZXcpCiAKICAgICBtX3dhc0FjY3VtdWxhdGluZ1JlcGFp
bnRSZWdpb24gPSAhIXJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbjsK
ICAgICBpZiAoIW1fd2FzQWNjdW11bGF0aW5nUmVwYWludFJlZ2lvbikKLSAgICAgICAgcm9vdFJl
bmRlclZpZXctPm1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZWdpb24+KCk7CisgICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJl
Z2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigpOwogICAgIG1fcm9vdFZpZXcgPSBtYWtlV2Vha1B0
cigqcm9vdFJlbmRlclZpZXcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5jcHAKaW5kZXggZmRjZDU5YzUyYzVmMzI4ZjUyMDlmMDBjMWY4ZDgxNmFkYzVmNzY2
OC4uNDQ1NTg0MWFmMzJmZjE1MjUyY2ZhMjhlZDhhNjljM2U0OWYxZjMwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIGZs
b2F0IFJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBz
aXNTdHIsICBib29sIGx0ciwgZmxvCiAgICAgICAgIGdFbGxpcHNpc0JveE1hcCA9IG5ldyBFbGxp
cHNpc0JveE1hcCgpOwogCiAgICAgQVNTRVJUKCFoYXNFbGxpcHNpc0JveCgpKTsKLSAgICBhdXRv
KiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIHN0ZDo6bWFrZV91bmlx
dWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNX
aWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2lj
YWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJv
eCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxp
cHNpc0JveE1hcC0+c2V0KHRoaXMsIG1ha2VVbmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygp
LCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBC
b3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RC
b3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
ICAgICBzZXRIYXNFbGxpcHNpc0JveCh0cnVlKTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBh
biBSVEwgdmVyc2lvbiBvZiB0aGlzPwogICAgIGlmIChsdHIgJiYgKHgoKSArIGxvZ2ljYWxXaWR0
aCgpICsgZWxsaXBzaXNXaWR0aCkgPD0gYmxvY2tSaWdodEVkZ2UpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IDdkZjI4Mjg4YTRkNTVjMmM3ZDI2YWQ0YmMw
MTc2ZDBiNzYxNzgzNjQuLjI0N2U1NWMwNjllOWZlODgxY2FmNGJmYmMyYjRhZWYxOWUzNjE3YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApAQCAtMTQ1LDcgKzE0
NSw3IEBAIGNsYXNzIFJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxvd0JveCwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFJvb3RJbmxpbmVCb3g+CiAgICAgICAgIGlmIChtX2Zsb2F0cykKICAg
ICAgICAgICAgIG1fZmxvYXRzLT5hcHBlbmQobWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9mbG9hdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENsZWFu
TGluZUZsb2F0TGlzdD4oMSwgbWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKKyAgICAgICAgICAg
IG1fZmxvYXRzID0gbWFrZVVuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRy
KGZsb2F0aW5nQm94KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVGbG9hdChSZW5kZXJCb3gm
IGZsb2F0aW5nQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFu
Z2VEYXRhLmNwcAppbmRleCBlYzVlNzM1NmE2NGQxMjQ5ZGRhMTE0N2U4YmJhMzFmNDc5MGI0YmYy
Li5iOWJhZDBhMDlmMjliZjdhZGM5ZDMzM2Y0ZTgxMWMzZWExYjkzZmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApAQCAtMTMxLDEzICsx
MzEsMTMgQEAgc3RhdGljIFNlbGVjdGlvbkRhdGEgY29sbGVjdChjb25zdCBTZWxlY3Rpb25SYW5n
ZURhdGE6OkNvbnRleHQmIHNlbGVjdGlvbiwgYm9vbAogICAgIHdoaWxlIChzdGFydCAmJiBzdGFy
dCAhPSBzdG9wKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKnN0
YXJ0LCBzZWxlY3Rpb24pKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxl
IGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhh
bWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNl
dChzdGFydCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRy
dWUpKTsKKyAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwg
bWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKICAgICAgICAg
ICAgIGlmIChyZXBhaW50RGlmZmVyZW5jZSkgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byog
YmxvY2sgPSBjb250YWluaW5nQmxvY2tCZWxvd1ZpZXcoKnN0YXJ0KTsgYmxvY2s7IGJsb2NrID0g
Y29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAg
YXV0byYgYmxvY2tJbmZvID0gb2xkU2VsZWN0aW9uRGF0YS5ibG9ja3MuYWRkKGJsb2NrLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8p
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgYmxv
Y2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpibG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyQmxv
Y2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMjEzLDEzICsyMTMsMTMgQEAgSW50UmVjdCBTZWxlY3Rpb25SYW5n
ZURhdGE6OmNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQgY2xpcFRvVmlzaWJsZUNv
bnQKICAgICAgICAgaWYgKChzdGFydC0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgc3RhcnQgPT0g
bV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0
LmVuZCgpKQogICAgICAgICAgICAgJiYgc3RhcnQtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3Bv
bnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3Qg
YmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIHJlbmRlcmVycy5zZXQoc3RhcnQsIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBjbGlwVG9WaXNpYmxl
Q29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKSk7CisgICAgICAgICAgICByZW5k
ZXJlcnMuc2V0KHN0YXJ0LCBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwg
Y2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOwogICAg
ICAgICAgICAgYXV0byogYmxvY2sgPSBzdGFydC0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAg
ICAgICB3aGlsZSAoYmxvY2sgJiYgIWlzPFJlbmRlclZpZXc+KCpibG9jaykpIHsKICAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9
IHJlbmRlcmVycy5hZGQoYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAg
ICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbklu
Zm8+KCpibG9jaywgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6
Olllcyk7CisgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxl
Y3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVD
b250ZW50OjpZZXMpOwogICAgICAgICAgICAgICAgIGJsb2NrID0gYmxvY2stPmNvbnRhaW5pbmdC
bG9jaygpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9p
ZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwg
UmVwYWludE1vZGUgYmxvY2tSZXAKICAgICBzZWxlY3Rpb25JdGVyYXRvciA9IFNlbGVjdGlvbkl0
ZXJhdG9yKHNlbGVjdGlvblN0YXJ0KTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5kZXJlciA9
IHNlbGVjdGlvblN0YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmVyICE9IHNl
bGVjdGlvbkVuZDsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7
CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKmN1cnJlbnRSZW5kZXJl
ciwgbV9zZWxlY3Rpb25Db250ZXh0KSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOworICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBtYWtlVW5p
cXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOwogI2lmIEVO
QUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgICAgICAgICAgZm9yIChhdXRvJiByZWN0IDogc2Vs
ZWN0aW9uSW5mby0+Y29sbGVjdGVkU2VsZWN0aW9uUmVjdHMoKSkKICAgICAgICAgICAgICAgICBt
X3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRSZWN0KHNlbGVjdGlvbkluZm8tPnJlcGFpbnRDb250
YWluZXIoKSwgcmVjdCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURh
dGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tS
ZXAKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25J
bmZvPiYgYmxvY2tJbmZvID0gbmV3U2VsZWN0ZWRCbG9ja3MuYWRkKGNvbnRhaW5pbmdCbG9jaywg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8p
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqY29udGFpbmluZ0Js
b2NrKTsKKyAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2Nr
U2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgICAgICAgICAgY29udGFp
bmluZ0Jsb2NrID0gY29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICNpZiBFTkFC
TEUoU0VSVklDRV9DT05UUk9MUykKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRo
ZXJlci5hZGRHYXBSZWN0cyhibG9ja0luZm8tPnJlcGFpbnRDb250YWluZXIoKSwgYmxvY2tJbmZv
LT5yZWN0cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcAppbmRleCA4Yzc2NmU2ZGUyYzc0YWQwMzc5NzMzMzFmYzdmNWE0NzQ5MDE1YjhlLi5jMzYy
ZjRlNTdiMDBmOWNlMzlhNzNlY2U4MTFjMmM4MzJkNjUwYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC05OTcsNyArOTk3LDcgQEAgTGF5
b3V0OjpMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3Vu
dCwgY29uc3QgUmVuZGVyQmxvY2sKIGNvbnN0IFJ1blJlc29sdmVyJiBMYXlvdXQ6OnJ1blJlc29s
dmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcnVuUmVzb2x2ZXIpCi0gICAgICAgIG1fcnVuUmVz
b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVy
LCAqdGhpcyk7CisgICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFJ1blJlc29sdmVy
PihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3J1blJlc29sdmVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggMWJmOThlNGVlYjQzYmEyMmNkYTRlNmY1ZDNiYzJhNWY5
ZmM0YjRiNy4uMDYyNWIxNmJkNTQzMTk3M2VkMzFkZTk5OGFlZDg4OWIwMTJiYTNiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rp
b25zLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJs
b2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gZGVidWdTaGFkb3cgPSBudWxscHRyOwogICAg
IGlmIChmbG93LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQo
KSkgewotICAgICAgICBkZWJ1Z1NoYWRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4o
SW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3Io
MCwgMjU1LCAwLCAyMDApKTsKKyAgICAgICAgZGVidWdTaGFkb3cgPSBtYWtlVW5pcXVlPFNoYWRv
d0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUs
IENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CiAgICAgICAgIHRleHRQYWludGVyLnNldFNoYWRvdyhk
ZWJ1Z1NoYWRvdy5nZXQoKSk7CiAgICAgfQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBnZW5l
cmF0ZUxpbmVCb3hUcmVlKFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlv
dXQpCiAgICAgICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+IGJpZGlSdW5zOwogICAgICAgICBmb3Ig
KGF1dG8gaXQgPSByYW5nZS5iZWdpbigpOyBpdCAhPSByYW5nZS5lbmQoKTsgKytpdCkgewogICAg
ICAgICAgICAgYXV0byBydW4gPSAqaXQ7Ci0gICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4o
c3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQo
KSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0
LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKKyAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVuZFJ1
bihtYWtlVW5pcXVlPEJpZGlSdW4+KHJ1bi5sb2NhbFN0YXJ0KCksIHJ1bi5sb2NhbEVuZCgpLCBj
b25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJ1bi5yZW5kZXJlcigpKSwgYmlkaUNvbnRleHQucHRy
KCksIFVfTEVGVF9UT19SSUdIVCkpOwogICAgICAgICB9CiAKICAgICAgICAgTGluZUluZm8gbGlu
ZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXpp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAppbmRl
eCAzYmExMzBkNDU1OWQ3MjkyZDg5MWY1NTNjZjE0ODBmODY2YmIyYmFkLi40YjQzZTZhY2JlMGVl
ZGFmNGVhZjRkMmU1ZDVhNDQ2MzkwNjA1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0QXV0b1NpemluZy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFRleHRBdXRvU2l6
aW5nOjphZGRUZXh0Tm9kZShUZXh0JiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXplKQogICAgIExP
RyhUZXh0QXV0b3NpemluZywgIiBhZGRBdXRvU2l6ZWROb2RlICVwIGNhbmRpZGF0ZVNpemU9JWYi
LCAmbm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RleHROb2Rl
cy5hZGQ8VGV4dEF1dG9TaXppbmdIYXNoVHJhbnNsYXRvcj4obm9kZS5yZW5kZXJlcigpLT5zdHls
ZSgpLCBudWxscHRyKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5n
VmFsdWU+KCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YWRkVGV4dE5vZGUobm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAppbmRleCAyYjFjMWZhMDNjYTFjNTc1Njkw
Mjc3YTVlODEyODcxMDEwZDQ0NjdlLi5kMTE2NjE1YTcyNmM1YTBhOTQzZDliOWY2ZTA5NDBiOTVl
NjkwOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJl
YWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgTGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYKICAgICAgICAgaWYg
KG9iamVjdC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgc2V0U3RhdGlj
UG9zaXRpb25zKG1fYmxvY2ssIGRvd25jYXN0PFJlbmRlckJveD4ob2JqZWN0KSwgd2lkdGguc2hv
dWxkSW5kZW50VGV4dCgpKTsKICAgICAgICAgICAgIGlmIChvYmplY3Quc3R5bGUoKS5pc09yaWdp
bmFsRGlzcGxheUlubGluZVR5cGUoKSkgewotICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMo
KS5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPigwLCAxLCBvYmplY3QsIHJlc29s
dmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZl
ci5ydW5zKCkuYXBwZW5kUnVuKG1ha2VVbmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNv
bHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CiAgICAgICAgICAgICAgICAgbGluZUlu
Zm8uaW5jcmVtZW50UnVuc0Zyb21MZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKG9iamVjdC5pc0Zsb2F0aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCmluZGV4IDRiMTU5N2U5ZjIxYzlj
ZDRiMmYwZDg4MzQ3NDQ3NzVmMWQ4YmRlMDEuLmQ1MjA5MmI2OGVkOGUyYzhmZGE1MTVjOTBjZDUy
MjM1NmQ2NTVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIEludFNoYXBlSW50ZXJ2YWwgTWFyZ2luSW50
ZXJ2YWxHZW5lcmF0b3I6OmludGVydmFsQXQoaW50IHkpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8
UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVN
YXJnaW5JbnRlcnZhbHMoaW50IHNoYXBlTWFyZ2luKSBjb25zdAogewogICAgIGludCBtYXJnaW5J
bnRlcnZhbHNTaXplID0gKG9mZnNldCgpID4gc2hhcGVNYXJnaW4pID8gc2l6ZSgpIDogc2l6ZSgp
IC0gb2Zmc2V0KCkgKiAyICsgc2hhcGVNYXJnaW4gKiAyOwotICAgIGF1dG8gcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwg
c3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtl
VW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5JbnRlcnZhbHNTaXplLCBzdGQ6Om1h
eChzaGFwZU1hcmdpbiwgb2Zmc2V0KCkpKTsKICAgICBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvciBt
YXJnaW5JbnRlcnZhbEdlbmVyYXRvcihzaGFwZU1hcmdpbik7CiAKICAgICBmb3IgKGludCB5ID0g
Ym91bmRzKCkueSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggMzAyMzFhMGJlMWJiYzYzZTRiZTNkMjUw
NTEyYmVkM2QxOTU5NDA5OS4uZjVlZmVmZGQzMmIzMDU0N2FkYmQ4ZWIwOGY1NGU2M2IwMjQwZmQ5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTQ2LDI0
ICs0NiwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNo
YXBlPiBjcmVhdGVJbnNldFNoYXBlKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGJvdW5kcykKIHsK
ICAgICBBU1NFUlQoYm91bmRzLnJlY3QoKS53aWR0aCgpID49IDAgJiYgYm91bmRzLnJlY3QoKS5o
ZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91
bmRzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKIH0KIAogc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUoY29uc3QgRmxvYXRQ
b2ludCYgY2VudGVyLCBmbG9hdCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNl
bnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMq
MiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
Y3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGl1cywgY2VudGVyLnkoKSAt
IHJhZGl1cywgcmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSk7
CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShj
b25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiB7CiAgICAg
QVNTRVJUKHJhZGlpLndpZHRoKCkgPj0gMCAmJiByYWRpaS5oZWlnaHQoKSA+PSAwKTsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54
KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndp
ZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBj
ZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0
KCkqMiksIHJhZGlpKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRl
UG9seWdvblNoYXBlKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2Vz
LCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2x5
Z29uU2hhcGU+KFdURk1vdmUodmVydGljZXMpLCBmaWxsUnVsZSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOwogfQogCiBz
dGF0aWMgaW5saW5lIEZsb2F0UmVjdCBwaHlzaWNhbFJlY3RUb0xvZ2ljYWwoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVh
dGVTaGFwZShjb25zdCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBlLCBjb25zdCBMYQogICAgICAgICBj
b25zdCBWZWN0b3I8TGVuZ3RoPiYgdmFsdWVzID0gcG9seWdvbi52YWx1ZXMoKTsKICAgICAgICAg
c2l6ZV90IHZhbHVlc1NpemUgPSB2YWx1ZXMuc2l6ZSgpOwogICAgICAgICBBU1NFUlQoISh2YWx1
ZXNTaXplICUgMikpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+
PiB2ZXJ0aWNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNT
aXplIC8gMik7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZl
cnRpY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7IGkgKz0gMikgewog
ICAgICAgICAgICAgRmxvYXRQb2ludCB2ZXJ0ZXgoCiAgICAgICAgICAgICAgICAgZmxvYXRWYWx1
ZUZvckxlbmd0aCh2YWx1ZXMuYXQoaSksIGJveFdpZHRoKSwKQEAgLTE3OSw3ICsxNzksNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1h
Z2UsIGZsb2F0IHRocmVzaG9sZCwgYwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVk
SW50UmVjdChpbWFnZVIpOwogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0
KG1hcmdpblIpOwotICAgIGF1dG8gaW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJT
aGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKKyAg
ICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdp
blJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6
IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQu
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAKQEAgLTIxOCw3
ICsyMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFw
ZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgYXV0byByYXN0ZXJTaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGU+KFdURk1v
dmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOworICAgIGF1dG8gcmFzdGVyU2hhcGUg
PSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Qu
c2l6ZSgpKTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwog
ICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKICAgICByZXR1cm4gcmFzdGVyU2hh
cGU7CkBAIC0yMzAsNyArMjMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3Jl
YXRlQm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBXcmkKIAogICAgIEZs
b2F0UmVjdCByZWN0KDAsIDAsIHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgpLCByb3VuZGVkUmVj
dC5yZWN0KCkuaGVpZ2h0KCkpOwogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmRzKHJlY3QsIHJv
dW5kZWRSZWN0LnJhZGlpKCkpOwotICAgIGF1dG8gc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJv
eFNoYXBlPihib3VuZHMpOworICAgIGF1dG8gc2hhcGUgPSBtYWtlVW5pcXVlPEJveFNoYXBlPihi
b3VuZHMpOwogICAgIHNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgc2hh
cGUtPm1fbWFyZ2luID0gbWFyZ2luOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IGNkOTRmODljMDJiMGI4YzEzNTE5NDU3
ZTQ0ZDBkZGFmNmQ4N2YxZmEuLjk0ODQzMTcxOTQ3YzAyMzA5YWI3ZjRmYjFiOTdjMjYzODgyZWUz
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU2hhcGVPdXRzaWRlSW5mbyBmaW5h
bCB7CiAgICAgICAgIEluZm9NYXAmIGluZm9NYXAgPSBTaGFwZU91dHNpZGVJbmZvOjppbmZvTWFw
KCk7CiAgICAgICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBpbmZvID0gaW5mb01hcC5nZXQoJmtl
eSkpCiAgICAgICAgICAgICByZXR1cm4gKmluZm87Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gaW5m
b01hcC5hZGQoJmtleSwgc3RkOjptYWtlX3VuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBpbmZvTWFwLmFkZCgma2V5LCBtYWtlVW5pcXVlPFNoYXBl
T3V0c2lkZUluZm8+KGtleSkpOwogICAgICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CiAgICAgfQogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUluZm8oY29uc3QgUmVuZGVyQm94JiBr
ZXkpIHsgaW5mb01hcCgpLnJlbW92ZSgma2V5KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMGM5OGY5MTY2ZjdlMTUyOTcwM2JjZGIy
YzhjODNjYzgwYmI3YmYyNC4uNzQ0YzkwYjhmYjNmNTI3NjhhNTM4ZDIxMzU4MzYyY2E2MzQ4Mjdl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3Bw
CkBAIC0zNTgsNyArMzU4LDcgQEAgUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVQYXRoOjpibGVu
ZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGMKIAogICAgIGF1dG8m
IGZyb21QYXRoID0gZG93bmNhc3Q8QmFzaWNTaGFwZVBhdGg+KGZyb20pOwogCi0gICAgYXV0byBy
ZXN1bHRpbmdQYXRoQnl0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigp
OworICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0
cmVhbT4oKTsKICAgICBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oKmZyb21QYXRoLm1f
Ynl0ZVN0cmVhbSwgKm1fYnl0ZVN0cmVhbSwgKnJlc3VsdGluZ1BhdGhCeXRlcywgcHJvZ3Jlc3Mp
OwogCiAgICAgYXV0byByZXN1bHQgPSBCYXNpY1NoYXBlUGF0aDo6Y3JlYXRlKFdURk1vdmUocmVz
dWx0aW5nUGF0aEJ5dGVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ29udGVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250
ZW50RGF0YS5oCmluZGV4IGU3YmIwNjE2NTAyZDk5ZDZkYjQzOTJiYjQ2OGE5YWI0NjljZTQ5NGEu
LjJjMTJkZDliNDBkZDQwYjNjMGJmNjc0OTMyMmFlMmIwZmQxZTA3MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCkBAIC05NSw3ICs5NSw3IEBAIGNs
YXNzIEltYWdlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJl
bmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGF1dG8g
aW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJl
ZigpKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4o
bV9pbWFnZS5jb3B5UmVmKCkpOwogICAgICAgICBpbWFnZS0+c2V0QWx0VGV4dChhbHRUZXh0KCkp
OwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQpAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNz
IFRleHRDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6
CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3Vt
ZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihtX3RleHQpOyB9CiAKICAgICBTdHJpbmcgbV90ZXh0
OwogfTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBDb3VudGVyQ29udGVudERhdGEgZmluYWwg
OiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0
ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmlu
YWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29u
c3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJD
b250ZW50RGF0YT4oc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4obWFrZVVuaXF1
ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPENvdW50ZXJDb250ZW50PiBtX2NvdW50ZXI7CkBAIC0xOTAsNyArMTkwLDcgQEAgY2xhc3Mg
UXVvdGVDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6
CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3Vt
ZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKCkpOyB9CisgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQogCiAgICAgUXVvdGVUeXBl
IG1fcXVvdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVy
LmNwcAppbmRleCBmM2Q5MWRjOGRiYzhkOWU0NmM2MDFiOTU4NDNiOWE5NTJmM2IyZDFkLi4zMDAx
NGQwNGY3MGZiOTE4MTc0Mjg3NjAzZmRlYWI3MjM5NTYxNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCBGaWxsTGF5
ZXI6OkZpbGxMYXllcihGaWxsTGF5ZXJUeXBlIHR5cGUpCiB9CiAKIEZpbGxMYXllcjo6RmlsbExh
eWVyKGNvbnN0IEZpbGxMYXllciYgbykKLSAgICA6IG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKKyAgICA6IG1fbmV4dChv
Lm1fbmV4dCA/IG1ha2VVbmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKICAg
ICAsIG1faW1hZ2Uoby5tX2ltYWdlKQogICAgICwgbV94UG9zaXRpb24oby5tX3hQb3NpdGlvbikK
ICAgICAsIG1feVBvc2l0aW9uKG8ubV95UG9zaXRpb24pCkBAIC0xMTcsNyArMTE3LDcgQEAgRmls
bExheWVyOjp+RmlsbExheWVyKCkKIAogRmlsbExheWVyJiBGaWxsTGF5ZXI6Om9wZXJhdG9yPShj
b25zdCBGaWxsTGF5ZXImIG8pCiB7Ci0gICAgbV9uZXh0ID0gby5tX25leHQgPyBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CisgICAgbV9uZXh0ID0gby5t
X25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CiAKICAg
ICBtX2ltYWdlID0gby5tX2ltYWdlOwogICAgIG1feFBvc2l0aW9uID0gby5tX3hQb3NpdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4
IDI0OWJhNDdlNTg0M2VjYzYyZTZmZDRmMjZhZjFjZjUzOGExNjNmOWMuLmZiNDNjMjBlNWNlOTll
Y2UxOWY0NTJmZDlmODc5NjRkODE0YmI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFJlbmRlclN0eWxl
IFJlbmRlclN0eWxlOjpjbG9uZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4o
c3R5bGUsIENsb25lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUs
IENsb25lKTsKIH0KIAogUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBEaXNwbGF5VHlw
ZSBkaXNwbGF5KQpAQCAtNDA5LDcgKzQwOSw3IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6
YWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwc2V1CiAg
ICAgUmVuZGVyU3R5bGUqIHJlc3VsdCA9IHBzZXVkby5nZXQoKTsKIAogICAgIGlmICghbV9jYWNo
ZWRQc2V1ZG9TdHlsZXMpCi0gICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gc3RkOjptYWtl
X3VuaXF1ZTxQc2V1ZG9TdHlsZUNhY2hlPigpOworICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxl
cyA9IG1ha2VVbmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKIAogICAgIG1fY2FjaGVkUHNldWRv
U3R5bGVzLT5hcHBlbmQoV1RGTW92ZShwc2V1ZG8pKTsKIApAQCAtMTA1OCw3ICsxMDU4LDcgQEAg
dm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKICAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykKLSAgICAg
ICAgZGF0YS5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxI
YXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dGllcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgIGRhdGEuY3VzdG9tUGFp
bnRXYXRjaGVkUHJvcGVydGllcy0+YWRkKG5hbWUpOwogfQogCkBAIC0xMzAxLDcgKzEzMDEsNyBA
QCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdl
LCBib29sIGFkZCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0
Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VO
b25OdWxsKCkpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxJbWFnZUNvbnRlbnRE
YXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQpCkBAIC0xMzEwLDEz
ICsxMzEwLDEzIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGJvb2wgYWRkKQogICAgIGlmIChhZGQgJiYgZGF0YS5jb250ZW50KSB7CiAgICAgICAg
IGF1dG8mIGxhc3QgPSBsYXN0Q29udGVudCgqZGF0YS5jb250ZW50KTsKICAgICAgICAgaWYgKCFp
czxUZXh0Q29udGVudERhdGE+KGxhc3QpKQotICAgICAgICAgICAgbGFzdC5zZXROZXh0KHN0ZDo6
bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpKTsKKyAgICAgICAgICAgIGxhc3Qu
c2V0TmV4dChtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgYXV0byYgdGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29udGVu
dERhdGE+KGxhc3QpOwogICAgICAgICAgICAgdGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVu
dC50ZXh0KCkgKyBzdHJpbmcpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0
YS5jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7Cisg
ICAgICAgIGRhdGEuY29udGVudCA9IG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcp
OwogICAgICAgICBhdXRvJiBhbHRUZXh0ID0gZGF0YS5hbHRUZXh0OwogICAgICAgICBpZiAoIWFs
dFRleHQuaXNOdWxsKCkpCiAgICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0
VGV4dCk7CkBAIC0xMzI3LDEyICsxMzI3LDEyIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRl
bnQoc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKIHsK
ICAgICBpZiAoIWNvdW50ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRDb250ZW50KHN0ZDo6
bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsK
KyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNv
dW50ZXIpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChRdW90ZVR5
cGUgcXVvdGUsIGJvb2wgYWRkKQogewotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxR
dW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVl
PFF1b3RlQ29udGVudERhdGE+KHF1b3RlKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0xNTUxLDcgKzE1NTEs
NyBAQCBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVj
dGl2ZXMoKQogewogICAgIGF1dG8mIG1hcCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCkuY291bnRlckRpcmVjdGl2ZXM7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFrZVVu
aXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0x
NjcxLDE0ICsxNjcxLDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkK
IEFuaW1hdGlvbkxpc3QmIFJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25zKCkKIHsKICAgICBp
ZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucykKLSAgICAgICAg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbmltYXRpb25MaXN0PigpOworICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLmFuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0
dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zOwogfQogCiBBbmltYXRpb25M
aXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMoKQogewogICAgIGlmICghbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucykKLSAgICAgICAgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5p
bWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50
cmFuc2l0aW9ucyA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gKm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCmluZGV4IDIw
YjJhODExNGIwYzhlOWViZDQ4MjcwNzlhOTgyMGYyZWMwZGNkYzIuLjZlMzdjZjhmYjhhYmE1NWVj
MzMwYTk2MDMzYThhOTU0YzdjYjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAg
U3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoKQogCiBpbmxpbmUgU3R5bGVT
aGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRh
JiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPigpCi0gICAgLCBz
aGFkb3cob3RoZXIuc2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIu
c2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gbWFrZVVuaXF1
ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAppbmRleCAzZDYxYzk0YzAx
NjYxNjA4NThkYWJkODQwOWZjNDA4NjcwZTUwMWNhLi5jMTdlYWY4NTliMGJmYWE3ZGFiYzAwOGQ0
ZTc0MGZjNjMwYTRiODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1No
YWRvd0RhdGEuY3BwCkBAIC0zMyw3ICszMyw3IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEoY29u
c3QgU2hhZG93RGF0YSYgbykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQogICAgICwgbV9zdHls
ZShvLm1fc3R5bGUpCiAgICAgLCBtX2lzV2Via2l0Qm94U2hhZG93KG8ubV9pc1dlYmtpdEJveFNo
YWRvdykKLSAgICAsIG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0
YT4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgLCBtX25leHQoby5tX25leHQgPyBtYWtlVW5p
cXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHAKaW5kZXggYWQyY2JkOTU3ZWVmODI1NjBjZmIzNTJlOWY1MGIzOWU2MzNhMjZmZi4uOTZk
YmJhMDA3ZTZhNjRhN2Q2OTdhMjlhMjFkNjIxYWQ0NDc1NGI2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNw
cApAQCAtMTcyLDcgKzE3Miw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCB2aXNp
dGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKG8udmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcikK
ICAgICAsIGNhcmV0Q29sb3Ioby5jYXJldENvbG9yKQogICAgICwgdmlzaXRlZExpbmtDYXJldENv
bG9yKG8udmlzaXRlZExpbmtDYXJldENvbG9yKQotICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFk
b3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0
cikKKyAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRh
Pigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCBjdXJzb3JEYXRhKG8uY3Vyc29yRGF0
YSkKICAgICAsIGluZGVudChvLmluZGVudCkKICAgICAsIGVmZmVjdGl2ZVpvb20oby5lZmZlY3Rp
dmVab29tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDZmYmIyYjdiMGMzZWIwM2U4Njlh
MWVhYWM5MTYxMTE5YzljNjFlOWIuLmJkZDAxOTE1YWEyNzhkZDZhNjY0OGZmNGMzZmJkYjNmY2Nk
MTQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTEzOSwxMyArMTM5LDEzIEBAIGlu
bGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
KGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAgLCBzY3JvbGxTbmFwQXJlYShvLnNjcm9sbFNuYXBB
cmVhKQogI2VuZGlmCiAgICAgLCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xvbmUo
KSA6IG51bGxwdHIpCi0gICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVz
ID8gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigqby5jb3VudGVyRGlyZWN0
aXZlcykgOiBudWxscHRyKQorICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0
aXZlcyA/IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2
ZXMpIDogbnVsbHB0cikKICAgICAsIGFsdFRleHQoby5hbHRUZXh0KQotICAgICwgYm94U2hhZG93
KG8uYm94U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5ib3hTaGFkb3cp
IDogbnVsbHB0cikKKyAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hh
ZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCB3aWxsQ2hhbmdlKG8ud2ls
bENoYW5nZSkKICAgICAsIGJveFJlZmxlY3Qoby5ib3hSZWZsZWN0KQotICAgICwgYW5pbWF0aW9u
cyhvLmFuaW1hdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1h
dGlvbnMpIDogbnVsbHB0cikKLSAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBzdGQ6
Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCisg
ICAgLCBhbmltYXRpb25zKG8uYW5pbWF0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4o
Km8uYW5pbWF0aW9ucykgOiBudWxscHRyKQorICAgICwgdHJhbnNpdGlvbnMoby50cmFuc2l0aW9u
cyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMpIDogbnVsbHB0cikK
ICAgICAsIG1hc2soby5tYXNrKQogICAgICwgbWFza0JveEltYWdlKG8ubWFza0JveEltYWdlKQog
ICAgICwgcGFnZVNpemUoby5wYWdlU2l6ZSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBpbmxpbmUgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZVJhcmVOb25JbgogICAgICwganVzdGlmeUl0ZW1zKG8uanVzdGlmeUl0ZW1zKQogICAgICwg
anVzdGlmeVNlbGYoby5qdXN0aWZ5U2VsZikKICAgICAsIGN1c3RvbVByb3BlcnRpZXMoby5jdXN0
b21Qcm9wZXJ0aWVzKQotICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5n
Pj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQorICAgICwgY3Vz
dG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMg
PyBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dGllcykgOiBudWxscHRyKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICAsIHRvdWNo
QWN0aW9ucyhvLnRvdWNoQWN0aW9ucykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCAyYzZmMzE3OGVlYjI2YzdiMmMwZDk1
YWUxMDhiN2VmY2M2ZTIyYzRlLi4yNGNkZTRiZDYxZTcxNGMyMzIzYjllNWNkMmNmMjY5ZTI4NDVm
OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZH
SW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
U1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91
bmRhcmllc1VwZGF0ZSh0cnVlKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQot
ICAgICwgbV9pbWFnZVJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJj
ZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3Vy
Y2U+KCkpCiB7CiAgICAgaW1hZ2VSZXNvdXJjZSgpLmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4
IDNjMzEwNTZkMWNhYjFmZWExMDQ5MDc4MGQwMGM4ZGNkMmM3OTgwNjguLmJhMWNkMDUyZGFkYWEx
Y2UxODQxYzdjMjNjYWYzM2ZhYTRlMzQ3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVuZGVyU1ZH
SW5saW5lOjpSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5k
ZXJTdHlsZSYmIHN0eWwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+IFJlbmRlclNW
R0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCgpCiB7Ci0gICAgYXV0byBib3ggPSBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGJveCA9IG1ha2VV
bmlxdWU8U1ZHSW5saW5lRmxvd0JveD4oKnRoaXMpOwogICAgIGJveC0+c2V0SGFzVmlydHVhbExv
Z2ljYWxIZWlnaHQoKTsKICAgICByZXR1cm4gYm94OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggNjdlNmY5ODk3
ZDI3NzQ0ZmQ0MTMzZmYyNzY3MTRjNGU5ZGE2NjViMC4uZGJmNDkwM2Y4OWY0ZGM5MmVkZmYzMDUz
OTI1ODY5ZjMyZTJkOTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZW5k
ZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclNW
R0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5p
cXVlPFNWR0lubGluZVRleHRCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMWIz
ZWYyNGNjOTJkMjA1MmEzNGFhZDIwODgyMzMwZTFhMTIzYjg0Zi4uMWFkMjY0OTY0NjcwOWMyM2Yw
ZGI5Y2ZhZTRiODYzYzI0N2IzNjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmkKICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdC
b3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKIAogICAgIC8vIEFkZCBlZmZlY3RzIHRv
IHRoZSBidWlsZGVyCi0gICAgYXV0byBidWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0
ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgYXV0byBidWls
ZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUo
ZmlsdGVyKSk7CiAgICAgYnVpbGRlci0+c2V0UHJpbWl0aXZlVW5pdHMoZmlsdGVyRWxlbWVudCgp
LnByaW1pdGl2ZVVuaXRzKCkpOwogICAgIGJ1aWxkZXItPnNldFRhcmdldEJvdW5kaW5nQm94KHRh
cmdldEJvdW5kaW5nQm94KTsKICAgICAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFscmVhZHkgYnVpbHQsIG9yIHdl
J3JlIGluIGEgY3ljbGUsIG9yIHdlJ3JlIG1hcmtlZCBmb3IgcmVtb3ZhbC4gUmVnYXJkbGVzcywg
anVzdCBkbyBub3RoaW5nIG1vcmUgbm93LgogICAgIH0KIAotICAgIGF1dG8gZmlsdGVyRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyRGF0YT4oKTsKKyAgICBhdXRvIGZpbHRlckRhdGEgPSBt
YWtlVW5pcXVlPEZpbHRlckRhdGE+KCk7CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94
ID0gcmVuZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKTsKIAogICAgIGZpbHRlckRhdGEtPmJvdW5k
YXJpZXMgPSBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlckVsZW1l
bnQ+KCZmaWx0ZXJFbGVtZW50KCksIGZpbHRlckVsZW1lbnQoKS5maWx0ZXJVbml0cygpLCB0YXJn
ZXRCb3VuZGluZ0JveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCBkOGFkMDgwNDY2YzVjNmQ5
ZWVjZjA3OGNkZmY2NDI2YzYxNGEwY2UyLi41NTJjZTVhMzNhODA2MmU2YmVlMGIwNGFlM2YxNjBm
MDk5ZWI1MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbgogCiAgICAgYXV0byYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVu
dE1hcC5hZGQoJnJlbmRlcmVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFn
cmFkaWVudERhdGEpCi0gICAgICAgIGdyYWRpZW50RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8R3Jh
ZGllbnREYXRhPigpOworICAgICAgICBncmFkaWVudERhdGEgPSBtYWtlVW5pcXVlPEdyYWRpZW50
RGF0YT4oKTsKIAogICAgIGJvb2wgaXNQYWludGluZ1RleHQgPSByZXNvdXJjZU1vZGUuY29udGFp
bnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAK
aW5kZXggYWE1NzY1ZWQzNzliNmFiMWI5NDQ3MjZmNWI1ZWU0NTQzODNjNDY0ZS4uNGM4MTliOWJj
NTVkYzJiZmE4MmZiYmMwOTdmNjM3NTg1YjViMTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKIAogICAgIGJvb2wgbWlzc2luZ01h
c2tlckRhdGEgPSAhbV9tYXNrZXIuY29udGFpbnMoJnJlbmRlcmVyKTsKICAgICBpZiAobWlzc2lu
Z01hc2tlckRhdGEpCi0gICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91
bmlxdWU8TWFza2VyRGF0YT4oKSk7CisgICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIG1h
a2VVbmlxdWU8TWFza2VyRGF0YT4oKSk7CiAKICAgICBNYXNrZXJEYXRhKiBtYXNrZXJEYXRhID0g
bV9tYXNrZXIuZ2V0KCZyZW5kZXJlcik7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJh
bnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091
dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCmluZGV4IDI5ZThl
N2MyNDc1NjU4NzkyZWU0ZWQ0ZWQwODIwZmFlZWM5YmRjMGMuLmRmMDE3YmExYmZjMGNjZjdhZWE5
M2EzYmIyZjdmYzc4OGY2OTZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBzdHJ1Y3QgTWFza2Vy
RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmlu
ZGV4IGNjMmNiZmNmMGZlOWE1OWVjZTE1ZjUyZjM1NzJkYjU5ZDE2MzIwZDYuLjMxYmM1ZjE5MzFi
ZGFlNTBhYWM2NjEzNTlmYzBhMjZmMTc4NTg2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWls
ZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIC8vIEJ1aWxkIHBhdHRlcm4uCi0gICAgYXV0byBwYXR0ZXJuRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRhdGE+KCk7CisgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1h
a2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0
ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAK
ICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDM0YjBhZTc1
YmRjMDA1NjU3NmQ1MTM4MDE4NWVmZTZiYzcyYzcwNmUuLjZhNjcxMThmZjFiMjU4YjMwM2M5NTYz
ODU5M2Y0NzRlZTg5YmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlbmRlclNWR1NoYXBlOjp+UmVu
ZGVyU1ZHU2hhcGUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNo
YXBlRnJvbUVsZW1lbnQoKQogewotICAgIG1fcGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4o
cGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CisgICAgbV9wYXRo
ID0gbWFrZVVuaXF1ZTxQYXRoPihwYXRoRnJvbUdyYXBoaWNzRWxlbWVudCgmZ3JhcGhpY3NFbGVt
ZW50KCkpKTsKICAgICBwcm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKICAgICBtX2ZpbGxCb3Vu
ZGluZ0JveCA9IGNhbGN1bGF0ZU9iamVjdEJvdW5kaW5nQm94KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5kZXggYmY3ODY0NDNkZGQ2MGQ2MjFi
Y2Q1NzliODc3MGVkY2Q5MWQyOWZhOS4uOWM3MzdjYWZmOGI5Mjc2Y2M0MTA2MDJmNTc5YTlmMzY0
ZTVhMDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2Vz
LmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcikKICAgICBBU1NFUlQoY2xpcHBlci0+cmVz
b3VyY2VUeXBlKCkgPT0gQ2xpcHBlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fY2xpcHBl
ckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOworICAgICAgICBtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0
YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIgPSBjbGlwcGVy
OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2Vz
OjpzZXRGaWx0ZXIoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKICAgICBBU1NFUlQo
ZmlsdGVyLT5yZXNvdXJjZVR5cGUoKSA9PSBGaWx0ZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYg
KCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNr
ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAg
ICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRl
ck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIg
PSBmaWx0ZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NTAsNyArNTUwLDcgQEAgYm9vbCBTVkdS
ZXNvdXJjZXM6OnNldE1hcmtlclN0YXJ0KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJT
dGFydCkKICAgICBBU1NFUlQobWFya2VyU3RhcnQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJl
c291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRh
dGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtl
clN0YXJ0ID0gbWFya2VyU3RhcnQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NzEsNyArNTcxLDcg
QEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtl
ciogbWFya2VyTWlkKQogICAgIEFTU0VSVChtYXJrZXJNaWQtPnJlc291cmNlVHlwZSgpID09IE1h
cmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9t
YXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21h
cmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEt
Pm1hcmtlck1pZCA9IG1hcmtlck1pZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU5Miw3ICs1OTIs
NyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNWR1Jlc291cmNlTWFy
a2VyKiBtYXJrZXJFbmQpCiAgICAgQVNTRVJUKG1hcmtlckVuZC0+cmVzb3VyY2VUeXBlKCkgPT0g
TWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBt
X21hcmtlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtlckRhdGE+KCk7CisgICAgICAgIG1f
bWFya2VyRGF0YSA9IG1ha2VVbmlxdWU8TWFya2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0
YS0+bWFya2VyRW5kID0gbWFya2VyRW5kOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjEzLDcgKzYx
Myw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIoUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIqIG1hc2tlcikKICAgICBBU1NFUlQobWFza2VyLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXNrZXJS
ZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAg
ICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVy
RmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9
IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhLT5tYXNrZXIgPSBtYXNrZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02
MzYsNyArNjM2LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldEZpbGwoUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIqIGZpbGwpCiAgICAgICAgICAgIHx8IGZpbGwtPnJlc291cmNlVHlwZSgpID09
IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0
YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9r
ZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJv
a2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+ZmlsbCA9IGZpbGw7CiAgICAgcmV0
dXJuIHRydWU7CkBAIC02NTksNyArNjU5LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldFN0cm9r
ZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogc3Ryb2tlKQogICAgICAgICAgICB8fCBzdHJv
a2UtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAg
IGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEg
PSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+
c3Ryb2tlID0gc3Ryb2tlOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCAxOTE5NWFhMWRhYmM2
NmU0YjM1NjU5NzJlYzkxZjg5NDc3ZjQwMzliLi4xZWViNzhmNTdiM2ViYjMxYjRjZGU4ZTUzMDJk
ZGUwOWUwNDhjMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlc0NhY2hlLmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIFNWR1Jlc291cmNlc0Nh
Y2hlOjphZGRSZXNvdXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0CiAgICAgQVNTRVJUKCFtX2NhY2hlLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogCiAgICAgLy8g
QnVpbGQgYSBsaXN0IG9mIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXNzZWQg
UmVuZGVyT2JqZWN0Ci0gICAgYXV0byBuZXdSZXNvdXJjZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNW
R1Jlc291cmNlcz4oKTsKKyAgICBhdXRvIG5ld1Jlc291cmNlcyA9IG1ha2VVbmlxdWU8U1ZHUmVz
b3VyY2VzPigpOwogICAgIGlmICghbmV3UmVzb3VyY2VzLT5idWlsZENhY2hlZFJlc291cmNlcyhy
ZW5kZXJlciwgc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCAzMjQx
MDI1ODRjMWYxMTNkMGVlZDMzMjE0YTY3ZjU1MzRhYjBmNTlhLi44MTBhMGI4ODBhOGFhNGRhZTAy
ZmFiNDQ2YTk0MWVkZDljNWE3MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAg
dm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0
UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW4KICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQogICAgICAg
ICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBudWxscHRyOwogICAgIGVsc2UKLSAgICAgICAgbV9z
aW1wbGVXaWR0aEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2Nh
bGVkRm9udCwgbV9ydW4pOworICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBtYWtlVW5p
cXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRGb250LCBtX3J1bik7CiB9CiAKIHN0cnVjdCBNZWFz
dXJlVGV4dERhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggZDM3YmVlOGNiY2U1NTYxNTExYjI0ZTM2
NGUxYWY2NGFhZDdhYTc1ZC4uZTZiMjczMjBkOTJmZTg1NmQ4Mzc0MTA4ZWQ5NTQyZTA5MWVlYWY0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjIsMjIgKzEyMiwyMiBAQCBzdGF0aWMgdm9pZCBnZXRJ
bmxpbmVSdW4oUmVuZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBib3VuZGFyeSwgUmVu
ZGVyT2JqZQogCiBSZW5kZXJUcmVlQnVpbGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIoUmVuZGVyVmll
dyYgdmlldykKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9maXJzdExldHRlckJ1aWxkZXIo
c3RkOjptYWtlX3VuaXF1ZTxGaXJzdExldHRlcj4oKnRoaXMpKQotICAgICwgbV9saXN0QnVpbGRl
cihzdGQ6Om1ha2VfdW5pcXVlPExpc3Q+KCp0aGlzKSkKLSAgICAsIG1fbXVsdGlDb2x1bW5CdWls
ZGVyKHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlDb2x1bW4+KCp0aGlzKSkKLSAgICAsIG1fdGFibGVC
dWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFibGU+KCp0aGlzKSkKLSAgICAsIG1fcnVieUJ1aWxk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxSdWJ5PigqdGhpcykpCi0gICAgLCBtX2Zvcm1Db250cm9sc0J1
aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ29udHJvbHM+KCp0aGlzKSkKLSAgICAsIG1fYmxv
Y2tCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tG
bG93QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRmxvdz4oKnRoaXMpKQotICAgICwgbV9p
bmxpbmVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lPigqdGhpcykpCi0gICAgLCBtX3N2
Z0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxTVkc+KCp0aGlzKSkKKyAgICAsIG1fZmlyc3RMZXR0
ZXJCdWlsZGVyKG1ha2VVbmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKKyAgICAsIG1fbGlzdEJ1
aWxkZXIobWFrZVVuaXF1ZTxMaXN0PigqdGhpcykpCisgICAgLCBtX211bHRpQ29sdW1uQnVpbGRl
cihtYWtlVW5pcXVlPE11bHRpQ29sdW1uPigqdGhpcykpCisgICAgLCBtX3RhYmxlQnVpbGRlciht
YWtlVW5pcXVlPFRhYmxlPigqdGhpcykpCisgICAgLCBtX3J1YnlCdWlsZGVyKG1ha2VVbmlxdWU8
UnVieT4oKnRoaXMpKQorICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKG1ha2VVbmlxdWU8Rm9y
bUNvbnRyb2xzPigqdGhpcykpCisgICAgLCBtX2Jsb2NrQnVpbGRlcihtYWtlVW5pcXVlPEJsb2Nr
PigqdGhpcykpCisgICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9ja0Zsb3c+
KCp0aGlzKSkKKyAgICAsIG1faW5saW5lQnVpbGRlcihtYWtlVW5pcXVlPElubGluZT4oKnRoaXMp
KQorICAgICwgbV9zdmdCdWlsZGVyKG1ha2VVbmlxdWU8U1ZHPigqdGhpcykpCiAjaWYgRU5BQkxF
KE1BVEhNTCkKLSAgICAsIG1fbWF0aE1MQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE1hdGhNTD4o
KnRoaXMpKQorICAgICwgbV9tYXRoTUxCdWlsZGVyKG1ha2VVbmlxdWU8TWF0aE1MPigqdGhpcykp
CiAjZW5kaWYKLSAgICAsIG1fY29udGludWF0aW9uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPENv
bnRpbnVhdGlvbj4oKnRoaXMpKQorICAgICwgbV9jb250aW51YXRpb25CdWlsZGVyKG1ha2VVbmlx
dWU8Q29udGludWF0aW9uPigqdGhpcykpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAg
ICwgbV9mdWxsU2NyZWVuQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxTY3JlZW4+KCp0aGlz
KSkKKyAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIobWFrZVVuaXF1ZTxGdWxsU2NyZWVuPigqdGhp
cykpCiAjZW5kaWYKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghc19jdXJyZW50IHx8ICZtX3ZpZXcg
IT0gJnNfY3VycmVudC0+bV92aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IGY0MmJjYTNiMzQ2OWU2
ZDU2ZTZhNGQ3Yjk0NDVlMTY3YjExMTFiMmIuLjI2ODU0NGExZTY1YmZhM2QzOGY0M2ViNWJiY2U0
ZWVlY2FhYzQ2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBSZW5kZXJUcmVl
VXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVs
ZW1lbnRVcGRhdGVzKgogCiBSZW5kZXJUcmVlVXBkYXRlcjo6UmVuZGVyVHJlZVVwZGF0ZXIoRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fZ2Vu
ZXJhdGVkQ29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkK
KyAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChtYWtlVW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0
aGlzKSkKICAgICAsIG1fYnVpbGRlcihyZW5kZXJWaWV3KCkpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKaW5kZXggN2ZlN2Y2ODczMjA0MTBlZjA0ODM4N2Q0ODFm
OTI3YjEyYzIzODNhYy4uYjljNzJlYjg4MGU5YmI4NzU5OGY0MTQ0MDc3ZDAyMzAxNjY2NWI4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaApAQCAtNDksNiArNDksNyBA
QCBlbnVtIGNsYXNzIElucHV0U291cmNlIHsKIH07CiAKIGNsYXNzIFVzZXJJbnB1dEJyaWRnZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
VXNlcklucHV0QnJpZGdlKTsKIHB1YmxpYzoKICAgICBVc2VySW5wdXRCcmlkZ2UoUGFnZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAppbmRleCBkYWUxMWNiMmY2
Mjg5OTE4NDUzYTEyODA5YWU0M2I4MTI0YjZiMTJiLi42ZDY5NWE2NjBkMGU0ZTA0NWEyNmRhYmUz
MzMxZWNhMjZmYWQyZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUlu
dmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9y
LmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGREaXJ0eUFsbFN0eWxlKGNv
bnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzKQogfQogCiBJbnZhbGlkYXRv
cjo6SW52YWxpZGF0b3IoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50cyo+JiBzaGVldHMs
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGlhUXVlcnlFdmFsdWF0b3IpCi0gICAgOiBt
X293bmVkUnVsZVNldChzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkpCisgICAgOiBtX293bmVk
UnVsZVNldChtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkpCiAgICAgLCBtX3J1bGVTZXQoKm1fb3duZWRS
dWxlU2V0KQogICAgICwgbV9kaXJ0aWVzQWxsU3R5bGUoc2hvdWxkRGlydHlBbGxTdHlsZShzaGVl
dHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCmluZGV4IDRkODE0
OGI0ZTMxZDc0ZDZhMGE1MTc1NGRlZTVlYWI4MDc1OWFiYWEuLjA2MmQ1OTY0ZDc3ZWM1ZGI4M2Iz
ZjQxYWNiYWE4N2VmY2U5OGRkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVsYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9u
cy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4gY29tbWl0
UmVsYXRpb25zVG9SZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnMKIAogICAgIGF1
dG8gYXBwZW5kU3R5bGVSZWxhdGlvbiA9IFsmcmVtYWluaW5nUmVsYXRpb25zXSAoY29uc3QgUmVs
YXRpb24mIHJlbGF0aW9uKSB7CiAgICAgICAgIGlmICghcmVtYWluaW5nUmVsYXRpb25zKQotICAg
ICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxSZWxhdGlvbnM+
KCk7CisgICAgICAgICAgICByZW1haW5pbmdSZWxhdGlvbnMgPSBtYWtlVW5pcXVlPFJlbGF0aW9u
cz4oKTsKICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zLT5hcHBlbmQocmVsYXRpb24pOwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggOWYwZDFhZDc0OTBiZmVh
YjI0MDdjZTdiYzg4YjA5NTExNmQwYjIyMi4uZGNiNjViYzA5YzM0Nzc5YjYzYTI5MzI0ZTI0ZDM3
MmJmYzZhMjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTk2LDcgKzk2
LDcgQEAgU3R5bGVSZXNvbHZlciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICBpZiAoIW1fcmVzb2x2
ZXIpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIg
eyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9yZXNvbHZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7CisgICAgICAg
IG1fcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOwogCiAg
ICAgICAgIGlmICghbV9zaGFkb3dSb290KSB7CiAgICAgICAgICAgICBtX2RvY3VtZW50LmZvbnRT
ZWxlY3RvcigpLmJ1aWxkU3RhcnRlZCgpOwpAQCAtNTYzLDcgKzU2Myw3IEBAIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0Zvckluc3Bl
Y3RvcigpCiBib29sIFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKGNvbnN0IENTU1N0
eWxlU2hlZXQqIHNoZWV0KSBjb25zdAogewogICAgIGlmICghbV93ZWFrQ29weU9mQWN0aXZlU3R5
bGVTaGVldExpc3RGb3JGYXN0TG9va3VwKSB7Ci0gICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0
eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25z
dCBDU1NTdHlsZVNoZWV0Kj4+KCk7CisgICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hl
ZXRMaXN0Rm9yRmFzdExvb2t1cCA9IG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBDU1NTdHlsZVNo
ZWV0Kj4+KCk7CiAgICAgICAgIGZvciAoYXV0byYgYWN0aXZlU3R5bGVTaGVldCA6IG1fYWN0aXZl
U3R5bGVTaGVldHMpCiAgICAgICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlz
dEZvckZhc3RMb29rdXAtPmFkZChhY3RpdmVTdHlsZVNoZWV0LmdldCgpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggODQ2YTIzMWFkMmIx
OGI1ZDdmMjk0OTAxNmQwOWYyMjNkZDY5ZTg4Yi4uYTAwZjRmZTBmNGNjYjUyZGQ4MzFhOTRlMjZh
NTg2NGU1YzFiNzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGU+IFRyZWVSZXNv
bHZlcjo6cmVzb2x2ZSgpCiAKICAgICBtX2RpZFNlZVBlbmRpbmdTdHlsZXNoZWV0ID0gbV9kb2N1
bWVudC5zdHlsZVNjb3BlKCkuaGFzUGVuZGluZ1NoZWV0c0JlZm9yZUJvZHkoKTsKIAotICAgIG1f
dXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOworICAgIG1fdXBk
YXRlID0gbWFrZVVuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOwogICAgIG1fc2NvcGVTdGFjay5h
cHBlbmQoYWRvcHRSZWYoKm5ldyBTY29wZShtX2RvY3VtZW50KSkpOwogICAgIG1fcGFyZW50U3Rh
Y2suYXBwZW5kKFBhcmVudChtX2RvY3VtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggYmM1MTQzNGIwYjJiOGUwYmY3N2U1N2E0YTc2
ZTRkNGJjZWVlOTk2NS4uMjVmMzg2M2QwNzk1NGFjOGQ2YTYzZTY4NjRhMWYwNzZiMGQ1MWFlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3Vt
ZW50KGRvY3VtZW50KQotICAgICwgbV9yZXNvdXJjZXNDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFNW
R1Jlc291cmNlc0NhY2hlPigpKQorICAgICwgbV9yZXNvdXJjZXNDYWNoZShtYWtlVW5pcXVlPFNW
R1Jlc291cmNlc0NhY2hlPigpKQogICAgICwgbV9hcmVBbmltYXRpb25zUGF1c2VkKCFkb2N1bWVu
dC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkpCiB7CiB9CkBAIC0xNDYs
NyArMTQ2LDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJj
ZShjb25zdCBBdG9tU3RyaW5nJiBpZCwgRWxlbWVudCYgZWwKIAogICAgIGF1dG8gcmVzdWx0ID0g
bV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nRWxlbWVudHM+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPFBlbmRpbmdFbGVtZW50cz4oKTsKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LT5hZGQoJmVsZW1lbnQpOwogCiAgICAgZWxlbWVudC5zZXRIYXNQZW5kaW5nUmVzb3VyY2VzKCk7
CkBAIC0yNzksNyArMjc5LDcgQEAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFyZ2V0KFNWR0UKIHZvaWQgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxlbWVudCYg
cmVmZXJlbmNpbmdFbGVtZW50LCBTVkdFbGVtZW50JiByZWZlcmVuY2VkRWxlbWVudCkKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5lbnN1cmUoJnJlZmVyZW5jZWRF
bGVtZW50LCBbJnJlZmVyZW5jaW5nRWxlbWVudF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0PFNWR0Vs
ZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+PihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZHRWxlbWVu
dCo+IHsgJnJlZmVyZW5jaW5nRWxlbWVudCB9KTsKICAgICB9KTsKICAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQoJnJlZmVyZW5j
aW5nRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYTgwOTZkZGFkYTgx
ZWFkNmE3YTFlYTMyNGNkODUwNjdmNWMwYjI4Yi4uZTRkZTNiNzQ5ZjBhMDAzOWJjNWM0Y2ZjZDA4
ZTE5Mzk2Y2Q2NTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTYxLDcgKzE2
MSw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgSGFzaE1hcDxBdG9tU3RyaW5nSW1wbCosIENTU1By
b3BlcnR5SUQ+IGNyZWF0ZUF0dHJpYnV0ZU5hbWVUCiBTVkdFbGVtZW50OjpTVkdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFN0
eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZVNWR0VsZW1lbnQpCiAgICAgLCBT
VkdMYW5nU3BhY2UodGhpcykKLSAgICAsIG1fcHJvcGVydHlBbmltYXRvckZhY3Rvcnkoc3RkOjpt
YWtlX3VuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKKyAgICAsIG1fcHJvcGVy
dHlBbmltYXRvckZhY3RvcnkobWFrZVVuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4o
KSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6
OndpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIGNoYW5nZSkKIFNWR0VsZW1lbnRSYXJlRGF0
YSYgU1ZHRWxlbWVudDo6ZW5zdXJlU1ZHUmFyZURhdGEoKQogewogICAgIGlmICghbV9zdmdSYXJl
RGF0YSkKLSAgICAgICAgbV9zdmdSYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRWxlbWVu
dFJhcmVEYXRhPigpOworICAgICAgICBtX3N2Z1JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTVkdFbGVt
ZW50UmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICptX3N2Z1JhcmVEYXRhOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IGE3NTg5MGYzMTgwNDY4ZDE1
MjRiZWU4NTQzNTlkMDM1NmViNTIyMmQuLjgwZWM3ZmM4NjI5MmI2M2JiYmE4NTFlMTFlMTA2ZmEx
NTJmOTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBA
IC0xMTksNyArMTE5LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVudDo6YW5p
bWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiBBZmZpbmVUcmFuc2Zvcm0qIFNWR0dyYXBoaWNz
RWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkKIHsKICAgICBpZiAoIW1fc3VwcGxlbWVu
dGFsVHJhbnNmb3JtKQotICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOworICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5z
Zm9ybSA9IG1ha2VVbmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOwogICAgIHJldHVybiBtX3N1cHBs
ZW1lbnRhbFRyYW5zZm9ybS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVT
dHJlYW0uaAppbmRleCA2ZjBhY2FjZjE5ZWU4NTBkYjRlNjkxMGQzZTgzZDI2NDk0ZDY3ZWIwLi40
MzRkOTFlYjNkZjhhZDg3OWY4MzlhNDg5NjY4Njc4MGI0MDlmMjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBTVkdQYXRoQnl0
ZVN0cmVhbSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGNvcHko
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5
dGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVT
dHJlYW0+KCp0aGlzKTsKICAgICB9CiAKICAgICBEYXRhSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAppbmRleCBlMDQyM2NlOTgxNWZhMGYyNTU2M2Ez
YjU0MzE0MDg2YWMzNTZmZjQ0Li4zZWI1N2FkMmYyMWRmYTY0YjliMTE4MDFmNDI3MjgzNjAyYjc1
YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29u
dGFpbmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzY2hl
ZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0YXJnZXQsCiAgICAg
RWxlbWVudEF0dHJpYnV0ZVBhaXIga2V5KHRhcmdldCwgYXR0cmlidXRlTmFtZSk7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFuaW1hdGlvbnNWZWN0b3I+JiBzY2hlZHVsZWQgPSBtX3NjaGVkdWxlZEFu
aW1hdGlvbnMuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2No
ZWR1bGVkKQotICAgICAgICBzY2hlZHVsZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbnNW
ZWN0b3I+KCk7CisgICAgICAgIHNjaGVkdWxlZCA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uc1ZlY3Rv
cj4oKTsKICAgICBBU1NFUlQoIXNjaGVkdWxlZC0+Y29udGFpbnMoYW5pbWF0aW9uKSk7CiAgICAg
c2NoZWR1bGVkLT5hcHBlbmQoYW5pbWF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAKaW5kZXggNDBlZTk5MTU1ODVlY2E5YTEwMDQ0YjllMzMwYzg3NTI4MGMy
NTFlNy4uM2IyN2QwNjA4YmY5MGZkYWEwZTViMTU2MDBlYTRhZDVmZTEzNGQyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAgRW5j
b2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBhdXRvIHBhZ2VDb25maWd1
cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCk7Ci0gICAgICAgIG1f
Y2hyb21lQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhp
cyk7CisgICAgICAgIG1fY2hyb21lQ2xpZW50ID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNocm9tZUNs
aWVudD4odGhpcyk7CiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG1f
Y2hyb21lQ2xpZW50LmdldCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIFNWRyBlbmRz
IHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBtaWdodCBsZWFrIHRoZSB3b3JsZC4KQEAgLTQ2Niw3ICs0
NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgYW4gaXNzdWUgd2hlbiBT
VkdJbWFnZSB3aWxsIGJlIGFibGUgdG8gbG9hZCBvdGhlcgogICAgICAgICAvLyBTVkdJbWFnZSBv
YmplY3RzLCBidXQgd2UncmUgc2FmZSBub3csIGJlY2F1c2UgU1ZHSW1hZ2UgY2FuIG9ubHkgYmUK
ICAgICAgICAgLy8gbG9hZGVkIGJ5IGEgdG9wLWxldmVsIGRvY3VtZW50LgotICAgICAgICBtX3Bh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsK
KyAgICAgICAgbV9wYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uKSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2Up
OwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CiAg
ICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmgKaW5kZXggZDk3MDMwMmFkZjg2NTg1NTA5YzY1MDhkNTA0OTUyYTI1NTMyMzYyYi4uYzc3
YWUwOGJhYzY1YzNjMmNmYzg5NzRmYTMzZTc2NDYwY2U5N2ZhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAt
MzMsNiArMzMsNyBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50
OwogCiBjbGFzcyBTVkdGaWx0ZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj4gRmlsdGVyRWZm
ZWN0U2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZERlY29yYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTVlZmFhZWE3MTExYmM2Yzk1
N2Q5NzJkNzQ1NDhkZTkyZDhhMTMzZS4uY2ViYWEzNjNiZjUyN2JiYjM4ZTU2N2QzZTNkNDJiZjg0
MzEwMmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHkgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgdHlwZW5hbWUgQW5pbWF0
ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk+CiAgICAgc3RhdGljIFJl
ZjxBbmltYXRlZFByb3BlcnR5PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRl
eHRFbGVtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25U
eXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFu
aW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIG1ha2VVbmlxdWU8RGVjb3JhdGVkUHJvcGVy
dHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkpKTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBT
VkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5o
CmluZGV4IDI4ODc0MWIxMjkwNWNiODUxNDMwNTQwOTBjNGUyYzkxMzliMzViZjMuLmQwNzM3YWNi
YTMzMWZlMTIzNDdiODM0ZmY3YWEzMDEwMGFkMTU2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3JJbXBsLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmkKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmlt
YXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQm9v
bGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxT
VkdBCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiYgYW5p
bWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBl
Pj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJ
bnRlZ2VyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
PFNWR0EKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBT
VkdBbmltYXRlZExlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjxTVkdBbgogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZExlbmd0aD4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBs
ZW5ndGhNb2RlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3Mg
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9yPFMKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiYgYW5pbWF0
ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wg
aXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUp
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZExlbmd0
aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTcyLDcgKzE3
Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMTg5LDcgKzE4OSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZE51bWJlckxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmlt
YXRlZE51bWJlckxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTIwNiw3ICsyMDYsNyBAQCBjbGFz
cyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlz
dD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRQYXRoU2VnTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTIyNCw3ICsyMjQsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVgogcHVibGlj
OgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBSZWY8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBh
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29s
IGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdB
bmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yNDMsNyArMjQzLDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlw
ZT4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRl
ZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0yNjIsNyArMjYyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUEKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgUmVmPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4mIGFuaW1hdGVkLCBBbmltYXRp
b25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0
ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW0KIAogICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
QW5pbWF0ZWRSZWN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2Fs
Y01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0Fu
aW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTI5OCw3ICsyOTgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogcHVibGljOgog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTMzOCw3ICszMzgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0bwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiYgYW5pbWF0ZWQs
IEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNB
Y2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlQYWlyQW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCmluZGV4IDRlZGEzNGM5YjE4ODhmZmQ2
ZDNkNjYzMmNmMGNmNmQzM2E2ZmE5ZTEuLjM5N2ZmMDkxNTk0MDBkMzNjMDUyYjExZDgyOGNiOGUz
N2IzYzgwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaApAQCAtNDAs
NyArNDAsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3IgZmluYWwgOiBw
dWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQogcHVibGljOgogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5p
bWF0ZWRBbmdsZT4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1h
dGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9v
bCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0Fu
aW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmlt
YXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0
ZWRJbnRlZ2VyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQ
YWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMSwg
UmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQy
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0x
NTYsNyArMTU2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXQKIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmlt
YXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0Fu
aW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1h
dGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCmluZGV4IDY0YTY1YjE4NjJmZmI5Njk2MDNjNzE1
NjA3YjU0NGY1NTZlMDA4M2EuLjAyMmVkZWRhODIxYjUzMzU1YjNmZGQzOTU4ZjI0MzY4MDE5YWFk
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0
ZUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmli
dXRlQW5pbWF0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIENhbGNNb2RlIDogdWlu
dDhfdCB7CiB9OwogCiBjbGFzcyBTVkdBdHRyaWJ1dGVBbmltYXRvciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHQXR0cmlidXRlQW5pbWF0b3IoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUo
YXR0cmlidXRlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCmluZGV4IDI2NGMzNmI2OTA3NGNjZjNlMmUyOWQy
Njc3MjFjZjUzNzQ1NzAzMTEuLmEzNWUyNTBhOWIxNTFmOWU4OTdmODVmNjM2N2MzODdkYmIzY2E1
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRl
ZEVudW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVj
b3JhdGVkRW51bWVyYXRpb24uaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdEZWNvcmF0ZWRF
bnVtZXJhdGlvbiA6IHB1YmxpYyBTVkdEZWNvcmF0ZWRQcmltaXRpdmU8RGVjb3JhdGlvblR5cGUs
IEVudQogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBFbnVtVHlwZSYgdmFsdWUpCiAgICAg
ewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8RGVjb3JhdGlvblR5cGU+
Ojp2YWx1ZSwgIkRlY29yYXRpb25UeXBlIGZvcm0gZW51bSBzaG91bGQgYmUgaW50ZWdyYWwuIik7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0aW9u
Pih2YWx1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0
aW9uPih2YWx1ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTRhYjAzNzBiOTQ3
OWU1NTUwYmJiMTEwODczNDIzNTMxMTY2NTA3MC4uYWIxNGYzY2JlNWE3ZmMyMGUxMzBmZGE5YmQ0
ODc5N2RkZGQzZTg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHRGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb3JhdGlvblR5cGU+CiBjbGFzcyBTVkdEZWNv
cmF0ZWRQcm9wZXJ0eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgU1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+U1ZHRGVj
b3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXgg
NDEyMTcyMjBiZGZjZmVmZjY3YzE2MDkxM2FkMTRkNmI5OWJhMTQyYy4uNjhiMmUwYjExMzdhZGU4
ZDM3ZjgwZTBlMjk4YjVkZTI0ZDAxYTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yIDogcHVibGlj
IFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5pbWF0aW9uRnVuY3RpbwogcHVibGljOgogICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
UHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlB
bmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5LmgKaW5kZXggYWQ1MGQ0MjM2Mjk2OTQyZDFkYzg3MThhMmRhOGU2
YWRmOGQxYmNjYi4uNWUzMDE4ZjVhNDAyYTljN2YxMjlkNDFkNDE5YWM1ZTk0OWZlZTA0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRv
ckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eUFuaW1hdG9yRmFjdG9yeS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSgpID0g
ZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
VmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDExODg4NmM0ZjhiYjcyMzZh
NDQ2ZmZhZDAzODY5ZmYwYjBkY2RlOTUuLmZkM2RjOTYwZmZhN2QzMTI5MDEzN2Q0NTJjZGUxYTI4
NzlhN2VkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUFuaW1h
dG9yPFNWR0xlbmd0aCwgU1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3Bl
cnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3Zl
KHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xl
bmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhl
cik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBv
dmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFs
dWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKaW5kZXggNWVlOGFjM2QwZjRl
MTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2OC4uYWU5NGUyOWVkNGI4NjEzYjk5Y2Q5NzQ4NmVk
MGIwNjI4MjZjMDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9w
ZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3Zl
KHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggYzExMzFkMjViMzg4YmJhODM2NjUzZDI5NzA4ZTZhNWJi
ZTRiZGZjNC4uMjQzNzg5YmI5ZDI3OWE2ZTg1M2UwODY0NGI2NGJlZTg1MWU1ZWUyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0yMzEsNiArMjMx
LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyYg
c2V0dGluZ3MpCiB9CiAKIGNsYXNzIEludGVybmFsU2V0dGluZ3NXcmFwcGVyIDogcHVibGljIFN1
cHBsZW1lbnQ8UGFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3NXcmFwcGVyKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IDogbV9pbnRlcm5hbFNldHRpbmdzKEludGVybmFsU2V0dGluZ3M6OmNyZWF0ZShwYWdlKSkgeyB9
CkBAIC0yNTIsNyArMjUzLDcgQEAgY29uc3QgY2hhciogSW50ZXJuYWxTZXR0aW5nczo6c3VwcGxl
bWVudE5hbWUoKQogSW50ZXJuYWxTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShQYWdl
KiBwYWdlKQogewogICAgIGlmICghU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVt
ZW50TmFtZSgpKSkKLSAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1
cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+
KHBhZ2UpKTsKKyAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1cHBs
ZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2UpKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIqPihTdXBwbGVt
ZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKS0+aW50ZXJuYWxTZXR0aW5n
cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTE3OGI0OTY4
NTg3NTUxYmYwNzA0ZDgzMDIwNTYyZGQxMmRmNGViYi4uNjJlNzM0OWExY2ExNjYyZDA2MmM2MDc5
Mzg5MmZjNzBmZjYwNTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MzQxLDcgKzM0MSw3IEBAIGNsYXNzIEluc3BlY3RvclN0dWJGcm9udGVuZCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBwdWJsaWMKIH07CiAKIEluc3BlY3RvclN0
dWJGcm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKFBhZ2UmIGluc3BlY3RlZFBhZ2UsIFJl
ZlB0cjxET01XaW5kb3c+JiYgZnJvbnRlbmRXaW5kb3cpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRl
bmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwoJmluc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVu
ZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpLCBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OlNldHRpbmdzPigpKQogICAgICwgbV9mcm9udGVuZFdpbmRvdyhmcm9udGVu
ZFdpbmRvdy5jb3B5UmVmKCkpCiB7CiAgICAgQVNTRVJUX0FSRyhmcm9udGVuZFdpbmRvdywgZnJv
bnRlbmRXaW5kb3cpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIEludGVybmFsczo6SW50ZXJuYWxzKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAg
ICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsK
ICAgICAgICAgYXV0byBtb2NrUGF5bWVudENvb3JkaW5hdG9yID0gbmV3IE1vY2tQYXltZW50Q29v
cmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwotICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXlt
ZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2Nr
UGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1lbnRD
b29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50Q29v
cmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTE0MTcsNyArMTQxNyw3IEBAIHZvaWQg
SW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKQogICAgIGlmICghc3ludGhl
c2lzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzeW50aGVzaXMtPnNldFBsYXRmb3JtU3ludGhl
c2l6ZXIoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4oc3lu
dGhlc2lzKSk7CisgICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKG1ha2VVbmlx
dWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOwogfQogCiAjZW5k
aWYKQEAgLTI0ODksNyArMjQ4OSw3IEBAIFJlZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJuYWxzOjpv
cGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBhdXRvKiBp
bnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBh
dXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5kb21X
aW5kb3coKTsKICAgICBhdXRvIGZyb250ZW5kV2luZG93UHJveHkgPSB3aW5kb3ctPm9wZW4oKndp
bmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclN0dWJGcm9udGVu
ZD4oKmluc3BlY3RlZFBhZ2UsIGRvd25jYXN0PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5kb3dQcm94
eS0+d2luZG93KCkpKTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZy
b250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CiAgICAgcmV0dXJuIGZyb250ZW5kV2luZG93
UHJveHk7CiB9CiAKQEAgLTMwMDksNyArMzAwOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVy
bmFsczo6c2V0Vmlld0V4cG9zZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQcmludGluZyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
Ci0gICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENv
bnRleHQ+KGZyYW1lKCkpOworICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IG1ha2VVbmlx
dWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKICAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkt
PmJlZ2luKHdpZHRoLCBoZWlnaHQpOwogfQogCkBAIC0zNDQ4LDcgKzM0NDgsNyBAQCB2b2lkIElu
dGVybmFsczo6ZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogCiB2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0oKQogewotICAgIExl
Z2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAorICAgIExlZ2FjeUNETTo6
cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1
ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAogICAgICAgICBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0
c0tleVN5c3RlbSwgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk7
CiB9CiAKQEAgLTQyNDEsNyArNDI0MSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1pY3JvVGFz
ayhpbnQgdGVzdE51bWJlcikKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBb
ZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1
ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRR
dWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVudCwgdGVzdE51bWJlcl0oKSB7CiAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCB0ZXN0TnVtYmVyLCAiIGhhcyBydW4u
IikpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2Fj
eU1vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApp
bmRleCA2NDI4N2QyMzlhZjU3M2U5MjAzZDI1ODQzMWIyNzNjN2I4NzQ5MDA2Li42MDI3MmQzNDk3
ZjRiODY1Y2RiMDM3MGZlNDFkM2Q2ZmJkZThiN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TGVnYWN5TW9ja0NETS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTW9ja0NETVNlc3Npb24gOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETVNlc3Npb24oTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfk1vY2tDRE1TZXNzaW9uKCkgPSBk
ZWZhdWx0OwpAQCAtNzMsNyArNzQsNyBAQCBib29sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE1TZXNz
aW9uPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE1TZXNzaW9uPihjbGll
bnQpOwogfQogCiBzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQcmVmaXgoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAppbmRleCAyNGI5YjgwMDhjNGY1MTliNGE2NjZlYzZk
MTUyNWFjNjJlYzFjMzBhLi5iOTNhZWI5M2ZmNjMyOWU1MTU0N2MxM2ZmNzZhNjkyZWU2YTcxODZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lDRE07CiAKIGNsYXNzIExlZ2FjeU1v
Y2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5TW9ja0NETShMZWdhY3lDRE0q
IGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCmluZGV4IDU2Nzk2ZWU5MDBiYmYzYjZjYzA1Y2Y2YTIyOTZlZmQ0M2I5ZWY3
YjYuLmNlNWQ4ZjdkNmJkZjM4YjU5MjIwOTMwMmE2ZTZkNzFiMzY5NjYzMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9p
ZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYg
dHlwZXMpCiAKIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9yeTo6Y3Jl
YXRlQ0RNKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9j
a0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RN
PihtYWtlV2Vha1B0cigqdGhpcykpOwogfQogCiBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9j
a0NETUZhY3Rvcnk+IGZhY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmgKaW5kZXggMzM5NmNkMDJhZDAyZGQxNGU5MmYxNTc5ZTI3NTE2ZTZiYzNmNDI5OC4uMzk5MDli
OTMwM2E5NGM5MzY4ZWFhMGY2MjVmNGI2N2U1MjUwNTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIE1vY2tDRE1GYWN0
b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NETUZhY3Rvcnk+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxNb2NrQ0RNPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5Pik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTExODFkYWU3MmUx
M2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4Ny4uNzc4YTkxOGE2YjkwNzU1Y2I4NmQzYWFhNzRm
NzliM2U2MThkNGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBNb2NrQ29udGVudEZpbHRlcjo6ZW5hYmxl
ZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0
ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NvbnRlbnRG
aWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CiB9
CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBk
M2FjNWQ4N2QxOWUyYTg1MzYxYzExNTcyY2YzMTFmMGM4M2IyNDViLi5kNDBkZWQxZGExMTk4Y2Fh
MzQ1OWQ2NzdlMWZlODRmNWJmYjk0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0dhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBNb2NrR2FtZXBh
ZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHModW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgZ2EKICAgICBpZiAobV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0pCiAgICAgICAgIG1f
bW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdLT51cGRhdGVEZXRhaWxzKGdhbWVwYWRJRCwgYXhpc0Nv
dW50LCBidXR0b25Db3VudCk7CiAgICAgZWxzZQotICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9y
W2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQs
IGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOworICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2lu
ZGV4XSA9IG1ha2VVbmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4aXNDb3Vu
dCwgYnV0dG9uQ291bnQpOwogfQogCiBib29sIE1vY2tHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3RN
b2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IGRiZTkwNzNkNmFkZWJmYzUwMTU5Y2MyZWRiYjIy
ODNjY2QxN2JhODUuLjhmMTY0N2MxZjMyMjUxODE2YzdjZjA4OTYxODJhZTM0MjM1YzUxODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApAQCAt
NDYsNyArNDYsNyBAQCB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFu
ZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbAogewogICAgIFN0cmluZyBtZXNz
YWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdl
VGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhl
Yyk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1l
c3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJF
dmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5j
cHAKaW5kZXggZjQzYmQyYTdhNjA1OTM3MjdhZDBhNmE5MWRlY2Q2ZWJlYzcyMjY4OC4uNjkwM2Jl
NWVjMjVmYjkxZWZmNzc3NmU0NDc2YWQ0ZWEyYmNlNzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFdvcmtlckV2ZW50
UXVldWU6On5Xb3JrZXJFdmVudFF1ZXVlKCkKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6RXZl
bnREaXNwYXRjaGVyCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRXZlbnREaXNwYXRjaGVyKFJlZlB0cjxFdmVudD4mJiBldmVudCwgV29ya2VyRXZlbnRRdWV1
ZSYgZXZlbnRRdWV1ZSkKICAgICAgICAgOiBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQpAQCAtODQs
NyArODUsNyBAQCBib29sIFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+
JiYgZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8qIGV2ZW50UHRyID0g
ZXZlbnQucHRyKCk7Ci0gICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsKKyAgICBhdXRvIGV2ZW50
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8RXZlbnREaXNwYXRjaGVyPihXVEZNb3ZlKGV2ZW50KSwg
KnRoaXMpOwogICAgIG1fZXZlbnREaXNwYXRjaGVyTWFwLmFkZChldmVudFB0ciwgZXZlbnREaXNw
YXRjaGVyLmdldCgpKTsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9zdFRhc2soW2V2
ZW50RGlzcGF0Y2hlciA9IFdURk1vdmUoZXZlbnREaXNwYXRjaGVyKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CiAgICAgICAgIGV2ZW50RGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKaW5kZXggNjExNWVmNGExMzY1MmE2
ZWFkMTBhZjM3Y2ZiNDk0MjgyMGMzY2IyYi4uZDg5NzNkNWJjYWUxN2I5NTUwMDQ0YzdlODAxNjA1
Yjk5ZDU0OWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgK
QEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZSBmaW5hbCA6IHB1YmxpYyBFdmVu
dFF1ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXb3JrZXJFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0
dWFsIH5Xb3JrZXJFdmVudFF1ZXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCmluZGV4IDdiYTZlZGI1MjA4ZjIyYzNmOGYxNmRlMjlkODI1Yjc3MWY2
YzNlOWUuLmIxN2Q2NjM2M2FjMzU4MGU3YTM0NDAwODFhMmY3YzYzYTA3Mzg3NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02Miw5ICs2Miw5
IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKICAgICAsIG1fdXNlckFnZW50KHVzZXJBZ2VudCkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkK
LSAgICAsIG1fc2NyaXB0KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4o
dGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCi0gICAgLCBtX21pY3JvdGFza1F1ZXVlKHN0
ZDo6bWFrZV91bmlxdWU8TWljcm90YXNrUXVldWU+KG1fc2NyaXB0LT52bSgpKSkKKyAgICAsIG1f
c2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBt
X2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
PigqdGhpcykpCisgICAgLCBtX21pY3JvdGFza1F1ZXVlKG1ha2VVbmlxdWU8TWljcm90YXNrUXVl
dWU+KG1fc2NyaXB0LT52bSgpKSkKICAgICAsIG1faXNPbmxpbmUoaXNPbmxpbmUpCiAgICAgLCBt
X3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMp
CkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBVUkwmIHVybCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgICAgIG9yaWdp
bi0+Z3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKIAogICAgIHNldFNlY3Vy
aXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShvcmln
aW4pKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAgIHNldENvbnRl
bnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsg
bV91cmwgfSwgKnRoaXMpKTsKIH0KIAogV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxT
Y29wZSgpCkBAIC0zNjIsOSArMzYyLDkgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVz
c2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogICAg
IGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1l
c3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIp
OworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
Pihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNr
LnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNv
dXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNl
LCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZSht
ZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAKaW5kZXggYTc1YzAxNTZjNTllMzhkZDk5OWQ2Y2VjMWRkZWVkZTIzYmUxODdi
My4uNGU5ZjUxOWFlZmVkZDI1Zjg4M2Y2M2FjYTBhNDc4OWZmMDI3ZTRiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSYgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6Y3Jl
YXRlKFdvcmtlciYgd29ya2VyKQogCiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2Fn
aW5nUHJveHkoV29ya2VyJiB3b3JrZXJPYmplY3QpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQod29ya2VyT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faW5z
cGVjdG9yUHJveHkoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2Vy
T2JqZWN0LmlkZW50aWZpZXIoKSkpCisgICAgLCBtX2luc3BlY3RvclByb3h5KG1ha2VVbmlxdWU8
V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQogICAgICwg
bV93b3JrZXJPYmplY3QoJndvcmtlck9iamVjdCkKIHsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2Vy
R2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydAogICAgICAgICArK21fdW5jb25maXJt
ZWRNZXNzYWdlQ291bnQ7CiAgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soV1RGTW92ZSh0YXNrKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcXVldWVkRWFybHlUYXNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihX
VEZNb3ZlKHRhc2spKSk7CisgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7CiB9CiAK
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5M
b29wLmNwcAppbmRleCBiY2Q5NGU2YWMwNDAzYWNkNmE1NGJhYzQxZmFiNDFlNWJmNTUyN2RhLi5i
ZmFjOTU5MmRmYWE3OTIxMDA2NWIzNDU5YmQyMjE2MTk1Nzg0ODc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgTW9kZVBy
ZWRpY2F0ZSB7CiB9OwogCiBXb3JrZXJSdW5Mb29wOjpXb3JrZXJSdW5Mb29wKCkKLSAgICA6IG1f
c2hhcmVkVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKKyAgICA6
IG1fc2hhcmVkVGltZXIobWFrZVVuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKIHsKIH0KIApA
QCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0
VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIHsK
LSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4o
V1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVu
ZEFuZEtpbGwobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKSk7
CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbV9tZXNz
YWdlUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgbW9k
ZSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFRhc2s+KFdURk1vdmUo
dGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0RGVidWdnZXJUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDE5OTEyZjAyNzVmZWExOTQ4MDU0
MmEwNzA5NzVkY2IwYzdkMjgwMzUuLjIyOGYzZDE3ZmYwMDIyZTYyZTYzNjQ1MzJkNTU2Yjk1MDdh
MDE4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5j
aHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dAogCiAgICAgQVNT
RVJUKHNjcmlwdFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsKIAotICAgIGF1dG8gcmVx
dWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihXVEZNb3ZlKHNjcmlwdFJl
cXVlc3QpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4o
V1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1
cm47CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjb25zdCBVUkwmIFdvcmtlclNjcmlwdExvYWRlcjo6
cmVzcG9uc2VVUkwoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBX
b3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIGlu
aXRpYXRvcklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVl
PFJlc291cmNlUmVxdWVzdD4obV91cmwpOwogICAgIHJlcXVlc3QtPnNldEhUVFBNZXRob2QoIkdF
VCJfcyk7CiAgICAgcmVxdWVzdC0+c2V0SW5pdGlhdG9ySWRlbnRpZmllcihpbml0aWF0b3JJZGVu
dGlmaWVyKTsKICAgICByZXR1cm4gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcAppbmRleCAxZjc1NjE4NmEyMGYwMTY5ZTQ3ODQzOTUxYmVlMzY4N2UwMDI0ZmJh
Li4zYzM4NThiZGE5YjQ0YjU3ZmFkYjM5ZWZhMmUwYTBmM2EzMDQxMThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgV29ya2VyVGhy
ZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW4KICAgICAsIG1fd29ya2VyRGVidWdnZXJQcm94eSh3b3JrZXJEZWJ1Z2dl
clByb3h5KQogICAgICwgbV93b3JrZXJSZXBvcnRpbmdQcm94eSh3b3JrZXJSZXBvcnRpbmdQcm94
eSkKICAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFncykKLSAgICAsIG1fc3RhcnR1cERh
dGEoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0VVJMLCBu
YW1lLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCBzb3VyY2VDb2RlLCBzdGFydE1v
ZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCB0b3BPcmlnaW4sIHRpbWVPcmlnaW4sIHNlc3Np
b25JRCkpCisgICAgLCBtX3N0YXJ0dXBEYXRhKG1ha2VVbmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1
cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwg
c291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2lu
LCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
ICAgICwgbV9pZGJDb25uZWN0aW9uUHJveHkoY29ubmVjdGlvblByb3h5KQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKaW5kZXggYjJkMjYxNWExMjYzZDE2MjY2MTgyMDA0NjQ4ZjkwZWRhNjkyMDZi
NS4uNTljNzFjNGQxNDc2MjdjZmQ5ZDMxYTQ1ZWFiY2NjZGFlMTAzZTc4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRl
cmVmRXZlbnRUYXJnZXQoKQogYXV0byBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSgpIC0+
IFJlYWR5UHJvbWlzZSYKIHsKICAgICBpZiAoIW1fcmVhZHlQcm9taXNlKSB7Ci0gICAgICAgIG1f
cmVhZHlQcm9taXNlID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkeVByb21pc2U+KCk7CisgICAgICAg
IG1fcmVhZHlQcm9taXNlID0gbWFrZVVuaXF1ZTxSZWFkeVByb21pc2U+KCk7CiAKICAgICAgICAg
aWYgKG1faXNTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgp
LmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7CkBAIC0xODAs
NyArMTgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24o
Y29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBqb2JEYXRhLnR5cGUgPSBT
ZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25P
cHRpb25zID0gb3B0aW9uczsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8U2Vy
dmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkp
KTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBX
VEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3Bl
VVJMLCBSZWY8RGVmZXJyZQogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJlbW92ZVJlZ2lzdHJhdGlvbjogVW5yZWdpc3RlcmluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElE
OiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQo
KSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+
KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1
bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNl
KSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlw
dFVSTCwgV29ya2VyVHlwZSwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAt
MjMyLDcgKzIzMiw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0
cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYKIAogICAgIENPTlRBSU5FUl9S
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVwZGF0aW5nIHNlcnZp
Y2Ugd29ya2VyLiBKb2IgSUQ6ICUiIFBSSXU2NCwgam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8
U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0
YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlz
LCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2Ioc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3Jr
ZXJKb2I+JiYgam9iKQpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgY2xpZW50VVJMLCBSZWY8RGVmZXJy
CiAgICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyID0gKyttX2xh
c3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5k
aW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1
ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZp
ZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAgIGF1dG8gY29udGV4dElkZW50aWZp
ZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyhSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVu
dGlmaWVyID0gKyttX2xhc3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0byBwZW5k
aW5nUHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJv
bWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRpbmdQcm9t
aXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBl
bmRpbmdBY3Rpdml0eSgqdGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5n
UHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAgIGF1dG8g
Y29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmgKaW5kZXggN2FjOWM5ODM4M2IwNGI2ZWI4OWM5OWYyMjA4ODVlNzY3Mzk3NmMzZi4uM2JkNmI5
YjA2ZTU3Mzc2NjViNThmOTY5ZTI5M2QwZmVkNjJjM2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0x
MzksNiArMTM5LDcgQEAgY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lciBmaW5hbCA6IHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWMKICNlbmRpZgogCiAgICAgc3Ry
dWN0IFBlbmRpbmdQcm9taXNlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBQZW5kaW5nUHJvbWlzZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIFJlZjxQZW5kaW5nQWN0aXZpdHk8U2VydmljZVdvcmtlckNvbnRhaW5lcj4+JiYgcGVuZGlu
Z0FjdGl2aXR5KQogICAgICAgICAgICAgOiBwcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCiAgICAg
ICAgICAgICAsIHBlbmRpbmdBY3Rpdml0eShXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCmluZGV4IGVkYmM4ZjkxZWU0MzQ2MmE1MDQ5ZTg4YzFjZWY1ZWZhNzYy
Yzk4ZmYuLmNiNWMyMjFmYzk0ODhkN2MwMDcyOTgzYTE1Nzg5NWRjYThjNmNlYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2Vy
Ojp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vj
b24KIAogICAgIHNlcnZpY2VXb3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsK
IAotICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVu
dGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+
KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CisgICAgbV9wZW5kaW5nU2VydmljZVdvcmtl
clRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8U2VydmljZVdv
cmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQpKTsKIAog
ICAgIGF1dG8mIHRocmVhZCA9IHNlcnZpY2VXb3JrZXItPnRocmVhZCgpOwogICAgIHRocmVhZC5z
dG9wKFt0aGlzLCBpZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyID0gV1RGTW92ZShzZXJ2aWNlV29y
a2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGM2MTcz
NjEzY2FjYjU1ZDY5MDU4YmUyYzdlMmE1ZmJkODUyOWM3NzYuLjllNzI4YzNhN2FmYTQ2Yzk0OWNk
Y2JlMGQ2ZmViMDRhOTUzMWNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgYWxs
U2VydmljZVdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBtX3JlbW90ZURlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigqdGhpcywgZGF0YSk7CisgICAgbV9yZW1vdGVEZWJ1
Z2dhYmxlID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEp
OwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCh0cnVl
KTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPmluaXQoKTsKICNlbmRpZgpAQCAtMTY4LDcgKzE2
OCw3IEBAIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGZXRjaExv
YWRlcj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVyKEZldGNoTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsKLSAgICBhdXRvIGxvYWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KGNsaWVudCwgbnVsbHB0cik7CisgICAg
YXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOwog
ICAgIGxvYWRlci0+c3RhcnRMb2FkaW5nQmxvYlVSTChtX2RvY3VtZW50LCBibG9iVVJMKTsKICAg
ICBpZiAoIWxvYWRlci0+aXNTdGFydGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1Jl
Z2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCAxYzc4MzEyYzg1NDgyZjk4NjlhNWZjMGM2ZDJj
YzZjNmZkZmMxMGEwLi5lNGI4NDMxNjg0ZjdkODdkMmJmZGU2ZGQ0MjdmMzM5MDMwMzRiYWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUmVn
aXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxG
aWxlbmFtZSkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRGlyZWN0b3J5
RXhpc3RzKG1fZGF0YWJhc2VEaXJlY3RvcnkpOwogCi0gICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuKGZ1bGxGaWxlbmFt
ZSkpIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0gIkZhaWxlZCB0byBvcGVuIHJlZ2lzdHJhdGlv
biBkYXRhYmFzZSI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZmU1Y2M4NTllNjVhNmUzMmE3
OGI1Mjg5NzVhMTMyZTc0YmYxNzg3ZS4uOTMyNmEzYmFjNjU5YTI0NjcwNWU5MjBhODg4NDZkZjRk
MGU5NjliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICAv
LyBQYWdlcyBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIG1ha2UgYSBuZXcgcmVnaXN0cmF0
aW9uIHRvIHRoaXMga2V5IHdoaWxlIHRoZSBpbXBvcnQgd2FzIHN0aWxsIHRha2luZyBwbGFjZS4K
ICAgICBBU1NFUlQoIW1fcmVnaXN0cmF0aW9ucy5jb250YWlucyhkYXRhLnJlZ2lzdHJhdGlvbi5r
ZXkpKTsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3Ry
YXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNj
cmlwdFVSTCk7CisgICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVn
aXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlv
bi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0
VVJMKTsKICAgICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0
aW9uLmxhc3RVcGRhdGVUaW1lKTsKICAgICBhdXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJh
dGlvbi5nZXQoKTsKICAgICBhZGRSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsK
QEAgLTMwNCw3ICszMDQsNyBAQCBTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2lu
U3RvcmU+JiYgb3JpZ2luU3RvcmUsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbgogewogICAgIEFTU0VS
VCghcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAg
ICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0cmF0aW9u
U3RvcmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5KSk7Cisg
ICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBtYWtlVW5pcXVlPFJlZ2lzdHJhdGlvblN0b3Jl
PigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOwogICAgIGVs
c2UKICAgICAgICAgcmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwogCkBAIC0zMjEs
NyArMzIxLDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYkRh
dGEmJiBqb2JEYXRhKQogICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQg
am9iLgogCiAgICAgYXV0byYgam9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEu
cmVnaXN0cmF0aW9uS2V5KCksIFt0aGlzLCAmam9iRGF0YV0gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRp
b25LZXkoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0
aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKICAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKGpvYkRhdGEpOwpAQCAtODIwLDcgKzgyMCw3IEBA
IHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVu
dE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAKICAgICBpZiAoY2xpZW50SWRlbnRpZmllcnMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVCghaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzVGltZXIpOwotICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2Vydmlj
ZVdvcmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNs
aWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlzXSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50
ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oW2NsaWVudE9y
aWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNdIHsKICAgICAgICAgICAgIFZlY3Rv
cjxTV1NlcnZlcldvcmtlcio+IHdvcmtlcnNUb1Rlcm1pbmF0ZTsKICAgICAgICAgICAgIGZvciAo
YXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPm9yaWdp
bigpID09IGNsaWVudE9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDhiNjhiNzBmMDFk
MjUyNzhhZjUzOGFiY2U5MTRiOGM3YzY4YWI4MzcuLmRjYWY1YThhNzEwZjc5NDQ2NDdkZTNjZDVl
OTgwNjM5OWE4ZmQ1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmIGpvYikKICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0VXBkYXRlVmlhQ2Fj
aGUoam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUpOwogICAgICAgICBSRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3Rl
ckpvYjogRm91bmQgcmVnaXN0cmF0aW9uICVsbHUgZm9yIGpvYiAlcyBidXQgaXQgbmVlZHMgdXBk
YXRpbmciLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBqb2Iu
aWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJh
dGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7
CisgICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0
aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJMKTsKICAgICAg
ICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUobmV3UmVnaXN0cmF0aW9uKSk7CiAK
ICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1
ZTo6cnVuUmVnaXN0ZXJKb2I6IE5vIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiBmb3Igam9iICVzLCBj
b25zdHJ1Y3RpbmcgYSBuZXcgb25lLiIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDJiN2EyZmUzZmJiNThkNGM0ZWUzOGZj
MDRiNTM2YTNlNGUwYzc3ZTcuLjNiZTc1N2UwMmFlMTlkNzU5MGVjMDdiM2ZhNGNiZTdkNjNjZTgx
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiAg
ICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxs
YmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9i
YWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgICAgIGF1dG8gcGFpbnREZWZpbml0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3Ry
dWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0
aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpOworICAgICAgICBhdXRvIHBhaW50RGVmaW5p
dGlvbiA9IG1ha2VVbmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9y
LmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyks
IFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKICAgICAgICAgcGFpbnREZWZpbml0aW9uTWFwKCku
YWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA5NmNm
MTg1MGIwY2FlM2FhZTk2MDdkYjEzNDE2NzM1OGI2NzFjMWQ5Li42NGZjNzhlZWU3ODgwZWQ5YmVk
Y2ZjMmE3MDEyY2E2ZWMzY2UxYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlIHsKIAogICAgIC8v
IEFsbCBwYWludCBkZWZpbml0aW9ucyBtdXN0IGJlIGRlc3Ryb3llZCBiZWZvcmUgdGhlIHZtIGlz
IGRlc3Ryb3llZCwgYmVjYXVzZSBvdGhlcndpc2UgdGhleSB3aWxsIHBvaW50IHRvIGZyZWVkIG1l
bW9yeS4KICAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFBhaW50RGVmaW5pdGlvbj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBKU0M6
OkpTT2JqZWN0KiBwYWludENvbnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiwgVmVj
dG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1
bWVudHMpOwogCiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcgbmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4ZThhMmE0Y2Ey
M2UyYjkzZGExMzRhZmI1MmQwZTk1NzZjNDAyMTU5Li4zZjA5MjU2M2JkNTJhYzRhNGJiZWRhNDE1
YzIzN2EyZDFkZmRhZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgV29ya2xldENvbnNvbGVD
bGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VM
ZXZlCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVj
KTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwg
V1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRD
b25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggNGJiNzg4ZWE2M2NkNmJiZGM1
MzI1ODdlMDUxMGQ1MzI1MjYwNmZmYS4uY2VmODJmN2I0MTFkMjE4YzczM2Q2NmZhOWRiYTJkOTMx
MjVhZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3Jr
bGV0R2xvYmFsU2NvcGUpOwogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKICAgICA6IG1fZG9j
dW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9zZXNzaW9uSUQobV9kb2N1bWVu
dC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2xl
dFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmln
aW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogICAgICwgbV9j
b2RlKFdURk1vdmUoY29kZSkpCkBAIC02Miw3ICs2Miw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6
V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYm
IGNvCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdp
blBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlSZWYo
KSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7CisgICAgc2V0
Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihV
UkwgeyBtX2NvZGUudXJsKCkgfSwgKnRoaXMpKTsKIH0KIAogV29ya2xldEdsb2JhbFNjb3BlOjp+
V29ya2xldEdsb2JhbFNjb3BlKCkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdvcmtsZXRHbG9i
YWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lcwogewogICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVu
KCkgfHwgIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25z
b2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1l
c3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3Nh
Z2UtPm1lc3NhZ2UoKSwgMCkpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1l
c3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7
CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMWNlZTllYjM0MjFj
ZDk5YTU2Yzg4NjBiOGVjZGQ0NTk2ZjgwZDJkZS4uNzEzMzkwMGYxNzFlZWY0MTU2NzNkNGU5MGQ1
Y2Y3N2NmZWJjMmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQogICAgIEFTU0VSVChtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUp
OworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+
KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxFcnJvcnMuaAppbmRleCBiMDIxY2NlMTUzYzMxOTI5NTBhMmJmNzdkODA5YTI4NDdhYjBmMGMx
Li5hNjMyN2I5ZGZmMWI3NmJiNTgyYzYzNjAzODE1MjQyOGM3MWFhODI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEVycm9ycy5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERv
Y3VtZW50OwogCiBjbGFzcyBYTUxFcnJvcnMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFhNTEVycm9ycyhEb2N1bWVudCYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBmMDE5M2Q4Yzk2ZTM1YzlmZjc1ZTZhNjNh
MzUwYzY1NWRjYTg2MGVmLi5mODY2MzNhOGQ2ZGI3MDU0MzAxODgyODU3NWI1OWYyNjY3YzY2ZWQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBA
QCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVVJMKCkgY29uc3QKIFhNTEh0dHBSZXF1
ZXN0VXBsb2FkJiBYTUxIdHRwUmVxdWVzdDo6dXBsb2FkKCkKIHsKICAgICBpZiAoIW1fdXBsb2Fk
KQotICAgICAgICBtX3VwbG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8WE1MSHR0cFJlcXVlc3RVcGxv
YWQ+KCp0aGlzKTsKKyAgICAgICAgbV91cGxvYWQgPSBtYWtlVW5pcXVlPFhNTEh0dHBSZXF1ZXN0
VXBsb2FkPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VwbG9hZDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggYWQ3ZTEzYzhhMTk0YWQ1NmQ2MjM0MjAwMDE3Y2Jh
NzdmZTgwYjc0Mi4uYTkyNDQwOWVlNDZjNTNlNzNiMjdhNDlhMTllZmU5Njk3MjE2NzNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgYykKICAgICByZXR1cm4gYyA9PSAnICcg
fHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcdCc7CiB9CiAKLSNkZWZpbmUgREVG
SU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0
aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
dW4jI1N1ZmZpeD4oKTsgfQorI2RlZmluZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihTdWZmaXgp
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNTdWZmaXgo
KSB7IHJldHVybiBtYWtlVW5pcXVlPEZ1biMjU3VmZml4PigpOyB9CiAKIGNsYXNzIEludGVydmFs
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4IDA0NjE1
YzNkNWYwMzEzMTA2OTM4ZmFhMDVmYjM5Yzk5Y2UxMjNiNWMuLmMxYmJjNTRlYjgzMDE2OTExOWM4
NjgzMWE0ZjJhNmU3YzAwNDU2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFByZWRpY2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNw
cApAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgZXZhbHVhdGVQcmVkaWNhdGUoY29uc3QgRXhwcmVz
c2lvbiYgZXhwcmVzc2lvbikKIAogICAgIC8vIGZvb1szXSBtZWFucyBmb29bcG9zaXRpb24oKT0z
XQogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVx
VGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBzdGQ6Om1ha2Vf
dW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigp
OworICAgICAgICByZXR1cm4gRXFUZXN0T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlvbjo6Y3Jl
YXRlKCJwb3NpdGlvbiJfcyksIG1ha2VVbmlxdWU8TnVtYmVyPihyZXN1bHQudG9OdW1iZXIoKSkp
LmV2YWx1YXRlKCkudG9Cb29sZWFuKCk7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXgg
ZWMyYzZhZTA0NTlhMDY5MjU2YTY2MmY3MmM4NzI2N2ZlYTFhNDViZC4uNjMwNGU5MjgxMWE5MzRm
N2RlNzRjOGM5NGIyYjY5YzAwNGVhNDk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5
bGVTaGVldExpYnhzbHQuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBYU0xTdHlsZVNoZWV0
Ojpsb2FkQ2hpbGRTaGVldHMoKQogCiB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZikKIHsKLSAgICBhdXRvIGNoaWxkUnVsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8WFNMSW1wb3J0UnVsZT4odGhpcywgaHJlZik7CisgICAgYXV0byBjaGlsZFJ1bGUgPSBt
YWtlVW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYpOwogICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKGNoaWxkUnVsZS5yZWxlYXNlKCkpOwogICAgIG1fY2hpbGRyZW4ubGFzdCgpLT5sb2FkU2hl
ZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggZTAyNGVmYjU2YmY2NTJiOTBhOWExZDRmODEzMDY0OTE4MzBkOGUwZi4uNzA0
ODg5MmE1YWEwZWY5YTU1ZmJkMjQwOGNkMTc5MTRkMDJhOWM4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTEyOCw3ICsxMjgsNyBA
QCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5w
dXRTb3VyY2UpCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihYTUxFcnJvcnM6
OkVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24gcG9zaXRpb24pCiB7
CiAgICAgaWYgKCFtX3htbEVycm9ycykKLSAgICAgICAgbV94bWxFcnJvcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkpOworICAgICAgICBtX3htbEVycm9ycyA9IG1h
a2VVbmlxdWU8WE1MRXJyb3JzPigqZG9jdW1lbnQoKSk7CiAgICAgbV94bWxFcnJvcnMtPmhhbmRs
ZUVycm9yKHR5cGUsIG0sIHBvc2l0aW9uKTsKICAgICBpZiAodHlwZSAhPSBYTUxFcnJvcnM6Ondh
cm5pbmcpCiAgICAgICAgIG1fc2F3RXJyb3IgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGI5MzEw
MWI4YWFjNDgzOWEzOWJiNTRiMmI4OWRlODk4Yzc5Yjc1YWIuLmI5OWIzMDg5NzM4NTUwOWViYWIw
NDUyMTM5NzUzOWIwNzBjZWU3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRTdGFydEVsZW1l
bnROU0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciog
eG1sUHJlZml4LCBjb25zdCB4bWxDaGFyKiB4bWxVUkksIGludCBudW1OYW1lc3BhY2VzLCBjb25z
dCB4bWxDaGFyKiogbmFtZXNwYWNlcywgaW50IG51bUF0dHJpYnV0ZXMsIGludCBudW1EZWZhdWx0
ZWQsIGNvbnN0IHhtbENoYXIqKiBhdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxs
YmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2s+KCk7
CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnRO
U0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT54bWxMb2NhbE5hbWUgPSB4bWxTdHJk
dXAoeG1sTG9jYWxOYW1lKTsKICAgICAgICAgY2FsbGJhY2stPnhtbFByZWZpeCA9IHhtbFN0cmR1
cCh4bWxQcmVmaXgpOwpAQCAtMTIyLDEyICsxMjIsMTIgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNr
cyB7CiAKICAgICB2b2lkIGFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKCkKICAgICB7Ci0gICAg
ICAgIG1fY2FsbGJhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50
TlNDYWxsYmFjaz4oKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFBl
bmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4oKSk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRD
aGFyYWN0ZXJzQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2Fs
bGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDaGFy
YWN0ZXJzQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMs
IGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xMzcsNyArMTM3LDcgQEAg
Y2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZFByb2Nlc3NpbmdJbnN0
cnVjdGlvbkNhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHRhcmdldCwgY29uc3QgeG1sQ2hhciogZGF0
YSkKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFj
ayA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrPigpOwog
CiAgICAgICAgIGNhbGxiYWNrLT50YXJnZXQgPSB4bWxTdHJkdXAodGFyZ2V0KTsKICAgICAgICAg
Y2FsbGJhY2stPmRhdGEgPSB4bWxTdHJkdXAoZGF0YSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZENEQVRBQmxvY2tDYWxsYmFj
ayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFj
ayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKKyAgICAg
ICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4o
KTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cm5kdXAocywgbGVuKTsKICAgICAgICAg
Y2FsbGJhY2stPmxlbiA9IGxlbjsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2Fs
bGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kQ29tbWVudENhbGxiYWNrKGNvbnN0IHhtbENoYXIq
IHMpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nQ29tbWVudENhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1
ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1s
U3RyZHVwKHMpOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7
CiAKICAgICB2b2lkIGFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2soY29uc3QgeG1sQ2hhciog
bmFtZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciogc3lzdGVtSUQp
CiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5n
SW50ZXJuYWxTdWJzZXRDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VV
bmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJh
Y2stPm5hbWUgPSB4bWxTdHJkdXAobmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbElE
ID0geG1sU3RyZHVwKGV4dGVybmFsSUQpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGNsYXNzIFBlbmRp
bmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFcnJvckNhbGxiYWNrKFhNTEVycm9yczo6
RXJyb3JUeXBlIHR5cGUsIGNvbnN0IHhtbENoYXIqIG1lc3NhZ2UsIE9yZGluYWxOdW1iZXIgbGlu
ZU51bWJlciwgT3JkaW5hbE51bWJlciBjb2x1bW5OdW1iZXIpCiAgICAgewotICAgICAgICBhdXRv
IGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRXJyb3JDYWxsYmFjaz4oKTsKKyAg
ICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7
CiAKICAgICAgICAgY2FsbGJhY2stPm1lc3NhZ2UgPSB4bWxTdHJkdXAobWVzc2FnZSk7CiAgICAg
ICAgIGNhbGxiYWNrLT50eXBlID0gdHlwZTsKQEAgLTE5Nyw2ICsxOTcsNyBAQCBjbGFzcyBQZW5k
aW5nQ2FsbGJhY2tzIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGVuZGluZ0NhbGxiYWNrIHsK
KyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFs
IH5QZW5kaW5nQ2FsbGJhY2soKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxs
KFhNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIpID0gMDsKICAgICB9OwpAQCAtNTY0LDcgKzU2NSw3
IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbihjb25zdCBTdHJp
bmcmIHZlcnNpb24pCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1l
bnQmIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICA6IFNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fdmlldyhmcmFtZVZpZXcpCi0gICAgLCBtX3Bl
bmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAg
ICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAg
ICAsIG1fY3VycmVudE5vZGUoJmRvY3VtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9u
KFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiB7CkBAIC01NzIsNyArNTczLDcg
QEAgWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVu
dCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVu
dFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVu
dCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIDogU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCksIHBhcnNlckNvbnRlbnRQb2xp
Y3kpCi0gICAgLCBtX3BlbmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2Fs
bGJhY2tzPigpKQorICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0Nh
bGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUoJmZyYWdtZW50KQogICAgICwgbV9zY3Jp
cHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAg
LCBtX3BhcnNpbmdGcmFnbWVudCh0cnVlKQpAQCAtMTMyOCw3ICsxMzI5LDcgQEAgdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6ZG9FbmQoKQogICAgICAgICB4bWxUcmVlVmlld2VyLnRyYW5zZm9ybURv
Y3VtZW50VG9UcmVlVmlldygpOwogICAgIH0gZWxzZSBpZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsK
ICAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbERvY1B0ckZvclN0cmluZyhkb2N1bWVudCgpLT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLnRvU3Ry
aW5nKCksIGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+
c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2Mp
KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKG1ha2VVbmlxdWU8VHJh
bnNmb3JtU291cmNlPihkb2MpKTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZh
bHNlKTsgLy8gTWFrZSB0aGUgZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFw
cGx5IFhTTCBzdHlsZXNoZWV0cy4KICAgICAgICAgZG9jdW1lbnQoKS0+YXBwbHlQZW5kaW5nWFNM
VHJhbnNmb3Jtc05vd0lmU2NoZWR1bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVy
L1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmNwcAppbmRleCAwNWJjOTUzZjdmMGRkYzc4N2IxZTYzMDQ4NzY5NmMyMDg1OWNhZTBmLi5kNjll
MTQ5OTJkNTg2NzUxY2EwNDM0MjYzNjJhNmY0MWMyNjk5ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2Vi
RHJpdmVyU2VydmljZS5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZp
Y2U6OmNvbm5lY3RUb0Jyb3dzZXIoVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNM
aXN0LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSG9zdCA9IHN0
ZDo6bWFrZV91bmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7
CisgICAgYXV0byBzZXNzaW9uSG9zdCA9IG1ha2VVbmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxp
dGllc0xpc3QudGFrZUxhc3QoKSk7CiAgICAgYXV0byogc2Vzc2lvbkhvc3RQdHIgPSBzZXNzaW9u
SG9zdC5nZXQoKTsKICAgICBzZXNzaW9uSG9zdFB0ci0+Y29ubmVjdFRvQnJvd3NlcihbdGhpcywg
Y2FwYWJpbGl0aWVzTGlzdCA9IFdURk1vdmUoY2FwYWJpbGl0aWVzTGlzdCksIHNlc3Npb25Ib3N0
ID0gV1RGTW92ZShzZXNzaW9uSG9zdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpIG11dGFibGUgewogICAgICAg
ICBpZiAoZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAK
aW5kZXggN2EyMGI4OTQxYWZmNzJhODUyYjc2ZjVjNTUxMDYyNjU0Nzc0YTFjYy4uMTc3YWE1NGYy
MjI5N2FjMzE2MTRkMzUzYmU5ZjNhNzlkMWFhYjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGli
L1Nlc3Npb25Ib3N0R2xpYi5jcHAKQEAgLTExMyw2ICsxMTMsNyBAQCBib29sIFNlc3Npb25Ib3N0
Ojppc0Nvbm5lY3RlZCgpIGNvbnN0CiB9CiAKIHN0cnVjdCBDb25uZWN0VG9Ccm93c2VyQXN5bmNE
YXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQ29ubmVjdFRv
QnJvd3NlckFzeW5jRGF0YShTZXNzaW9uSG9zdCogc2Vzc2lvbkhvc3QsIEdVbmlxdWVQdHI8Y2hh
cj4mJiBkYnVzQWRkcmVzcywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9p
ZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAg
IDogc2Vzc2lvbkhvc3Qoc2Vzc2lvbkhvc3QpCiAgICAgICAgICwgZGJ1c0FkZHJlc3MoV1RGTW92
ZShkYnVzQWRkcmVzcykpCkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6bGF1
bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21w
bGUKICAgICB9LCB0aGlzKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGJ1c0FkZHJlc3MoZ19z
dHJkdXBfcHJpbnRmKCJ0Y3A6aG9zdD0lcyxwb3J0PSV1IiwgIjEyNy4wLjAuMSIsIHBvcnQpKTsK
LSAgICBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6bWFrZV91bmlxdWU8Q29ubmVjdFRvQnJvd3NlckFz
eW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFibGUuZ2V0KCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgY29ubmVjdFRvQnJvd3NlcihtYWtl
VW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1c0FkZHJl
c3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwog
fQogCiB2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVlX3B0cjxD
b25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPiYmIGRhdGEpCkBAIC0zNzEsNiArMzcyLDcgQEAgdm9p
ZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25J
RCwgdWludDY0X3QgdGFyZ2V0SUQKIH0KIAogc3RydWN0IE1lc3NhZ2VDb250ZXh0IHsKKyAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgbG9uZyBtZXNzYWdlSUQ7CiAgICAg
U2Vzc2lvbkhvc3QqIGhvc3Q7CiB9OwpAQCAtMzgxLDcgKzM4Myw3IEBAIHZvaWQgU2Vzc2lvbkhv
c3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGxvbmcgbWVzc2FnZUlELCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiAgICAgQVNTRVJUKG1fY29ubmVjdGlvbklEKTsKICAgICBBU1NFUlQobV90YXJnZXQu
aWQpOwogCi0gICAgYXV0byBtZXNzYWdlQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2Fn
ZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlELCB0aGlzIH0pOworICAgIGF1dG8g
bWVzc2FnZUNvbnRleHQgPSBtYWtlVW5pcXVlPE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4
dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fZGJ1
c0Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsCiAgICAgICAgIElOU1BFQ1RPUl9EQlVTX09CSkVD
VF9QQVRILAogICAgICAgICBJTlNQRUNUT1JfREJVU19JTlRFUkZBQ0UsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5o
CmluZGV4IGI2MmYxMmUxODJmMjFlYjhkNTEwNzRjYjI1NGQ3YjIxMmUwY2VkMTkuLmI0NDVlN2E2
NWE0OGQwNzQ4YmQ3ZTkyMDVhMzQ0MGY3ZjFhOTU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCkBAIC0z
OSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQWRDbGlja0F0dHJpYnV0
aW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcAppbmRleCAyZTI5NmIyOWY0M2E0ZmM4OGU3MDA5MzI0YTVlMjNiMGJlOWNkNTFjLi45MzAz
ZDJhZGMxNWVmNmZiMzEwYjZmYjE2ZDA3MGNjODUzZmRjM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKCkKICAgICBpZiAocmVzb3VyY2VMb2dQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigp
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChGaWxlTW9uaXRvcjo6Rmls
ZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVN
b25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBl
IHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3Rv
cnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsZU1vbml0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVl
dWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7
CisgICAgbV9maWxlTW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHN0b3JhZ2VQYXRo
LCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VU
eXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAg
IGlmICh0eXBlID09IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbCkgewogICAg
ICAgICAgICAgLy8gRGlyZWN0b3J5IHdhcyByZW1vdmVkIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCmluZGV4IDRjMDMzZTM1
M2Q0ZjMwOGY3Zjc2MDAxMmNhOTYyOTYzMDNjMTA3MzAuLjcxZjM0YmZhM2Q2YzJiNTI3NjE2ODk0
NGVlMzM0YzczZGFmNTAzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogCiAvLyBDYW4gb25seSBiZSBjb25zdHJ1
Y3RlZCAvIGRlc3Ryb3llZCAvIHVzZWQgZnJvbSB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJ3Mgc3RhdGlzdGljIHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmLCBXb3JrUXVldWUmLCBjb25zdCBTdHJpbmcm
IHN0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
aW5kZXggNzBhY2JkY2U5NmY2NWNmODNhOTQ2MzdkM2ZiOGQxZTliMjY1NTNkZC4uYTBjZWY2ZjMx
YjQ5NjYyZTVmOTIwM2NjZjhiMTkwODdlMzBlODRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNzcsNiArNzcsNyBAQCBlbnVtIGNsYXNzIE9wZXJhdGlu
Z0RhdGVzV2luZG93IDogYm9vbCB7IExvbmcsIFNob3J0IH07CiAKIC8vIFRoaXMgaXMgYWx3YXlz
IGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czsKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApp
bmRleCA4YzIxMTU3Y2M3ZjY5MTdiYTk3MDg5ZTM2ZjE2OWQ4NmNmOGI4YWIwLi5hMWMwN2YzNmE2
ZjhmZmZjZDc2MDM4ZGQ2Y2VhY2JjYTY0N2ViMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTU5LDE1ICsxNTksMTUgQEAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
TmV0d29ya1Nlc3Npb24mIG4KICAgICAKICAgICBwb3N0VGFzayhbdGhpcywgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNv
bGF0ZWRDb3B5KCksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RdIHsKICAgICAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNJVFBEYXRhYmFzZUVuYWJsZWQo
KSkgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVl
dWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwog
Ci0gICAgICAgICAgICBhdXRvIG1lbW9yeVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
PigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KTsKKyAgICAgICAgICAgIGF1dG8gbWVtb3J5U3RvcmUgPSBtYWtlVW5pcXVlPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVl
LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKKyAgICAgICAgICAgIGF1dG8gcGVyc2lzdGVudFN0
b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+
KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOwogCiAgICAgICAgICAgICBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlLmdldCgpKS5wb3B1bGF0ZUZyb21NZW1v
cnlTdG9yZSgqbWVtb3J5U3RvcmUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9z
dGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0KTsKLSAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRp
c3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QpOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFnZSA9IG1ha2VVbmlxdWU8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1
ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIEZJWE1FKDE5MzI5Nyk6IFRoaXMgc2hvdWxkIGJlIHJldmlzZWQgYWZ0ZXIgdGhlIFVJ
UHJvY2VzcyB2ZXJzaW9uIGdvZXMgYXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDYwNWFlZjNlNmVl
OTUwZjM5NDgzZmNkOGNjNGQ4ZTY1OGUwMmNmMGMuLmJiZTM5ODQ3NTJiZTE0NjA1MGQ1MDM1NzEz
NzE1NTBmYjJjYjYzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBXZWJDb29raWVNYW5h
Z2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXZWJDb29raWVNYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBXZWJDb29raWVNYW5h
Z2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlci5oCmluZGV4IGRjNzllZWJjZjE4ZGJmNjdiNDY0YzM1ODYxMGZiM2NlN2Nm
ZTkwY2MuLmY5MGYwZmNiNDE5MDI0YjhhOTVmNTc3MGM5Yjc5OTdiNTc4NGIzMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCkBAIC02Myw2ICs2
Myw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOwogCiBjbGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJs
aWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CkBAIC03OCw2ICs3OSw3
IEBAIGNsYXNzIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJv
Y2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICBz
dHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0RhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdSZWZQdHI8
R1Rhc2s+JiYsIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyopOwogICAgICAgICB+V2ViU291cFJl
cXVlc3RBc3luY0RhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKaW5kZXggMmM0ZDJmZjk0ODA5YzQy
YTYxMTY3M2I1ZmI1Y2FkYmZhNTkxNjA0ZS4uYzliMGMzYjIxNTdhZDhhZWJlNzQ2ZjRmMzlmYjVl
ZmNkNzVlNzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIEN1
c3RvbVByb3RvY29sUmVxdWVzdENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWNDbGllbnQKICAgICAgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjdXN0b21Qcm90b2NvbElEID0gY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChzdGQ6Om1ha2VfdW5pcXVlPExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KFdURk1vdmUo
dGFzayksIHJlcXVlc3QpKTsKKyAgICAgICAgYXV0byBjdXN0b21Qcm90b2NvbElEID0gY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChtYWtlVW5pcXVlPExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KFdURk1vdmUodGFzayks
IHJlcXVlc3QpKTsKICAgICAgICAgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zdGFydExvYWRpbmco
Y3VzdG9tUHJvdG9jb2xJRCwgd2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0UmVxdWVzdChyZXF1
ZXN0KSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGZmZmI0NzM1ZGIyMWVk
NTRhODBiNGQwM2Y0ZDRlNzA0NTQ2YmY5ZGMuLjUyMTA2M2NlOTEyMGJiMzUwOGQ5OWU0YmU5MjRk
N2U5NGEyZmEwMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lk
IERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IERvd25sb2FkSUQgZG93bmxvYQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNl
cyA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLmZp
bGVzSW5CbG9iKHJlcXVlc3QudXJsKCkpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAKLSAgICBtX3Bl
bmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rv
d25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFt
ZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgbWFrZVVuaXF1ZTxQ
ZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxv
YWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwg
JmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLCBzdWdn
ZXN0ZWROYW1lKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURv
d25sb2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9h
ZD4mJiBkb3dubG9hZCkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6Ondp
bGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHcK
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25s
b2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmIG5ldHdvcmtM
b2FkLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiBibG9iRmlsZVJlZmVy
ZW5jZXMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdEb3dubG9hZHMuY29udGFp
bnMoZG93bmxvYWRJRCkpOwotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwg
c3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUobmV0d29ya0xvYWQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICBt
X3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25s
b2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZN
b3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25sb2FkSUQs
IHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51
ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwg
U3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIERvd25sb2FkSUQgZG93bmxvCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAjZWxzZQotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERv
d25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKKyAgICBhdXRv
IGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxw
dHIsIHNlc3Npb25JRCk7CiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgs
IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIEFTU0VSVCghbV9kb3dubG9h
ZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCmluZGV4IGE4ODRhY2IyOTVkNDJj
ZTkzZTIxYmFjNDMzMDg0ZDdiYmM0MzNlNjUuLmFlM2NhN2UwZTRlZTdlYzg1ZGVhMmUzMDllMWQz
YzIwYjc0OTY1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRG93bmxvYWRNYXA6
OkRvd25sb2FkTWFwVHlwZTo6QWRkUmVzdWx0IERvd25sb2FkTWFwOjphZGQoRG93bmxvYWRJRCBk
b3dubG9hZElELAogICAgIGF1dG8gcmVzdWx0ID0gbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQs
IFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBpZiAobV9kb3dubG9hZHMuc2l6ZSgpID09IDEpIHsK
ICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkQXNzZXJ0aW9uKTsKLSAgICAgICAgbV9kb3dubG9h
ZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0cGlkKCks
ICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2lu
Zyk7CisgICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVu
Ym91bmRlZE5ldHdvcmtpbmcpOwogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lv
biwgIlRvb2sgJ1dlYktpdCBkb3dubG9hZHMnIGFzc2VydGlvbiBpbiBOZXR3b3JrUHJvY2VzcyIp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKaW5kZXggYTI3ODI4ZDdhOGJkODRhN2FlMzc3
MTY4Njc4NjkxYzc2N2YyNzk2ZC4uNTkxMjNmMmM0OGYxYzFlNDE3OWJiMWQ1YmNlMTU3MGM2Yjc1
NGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFBlbmRpbmdEb3dubG9hZDo6UGVu
ZGluZ0Rvd25sb2FkKElQQzo6Q29ubmVjdGlvbiogcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24sIE5l
dHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
TmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBs
KiBibG9iUmVnaXN0cnksIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKLSAgICA6IG1fbmV0
d29ya0xvYWQoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdpc3Ry
eSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQorICAgIDogbV9uZXR3b3Jr
TG9hZChtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgYmxvYlJlZ2lzdHJ5LCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBuZXR3b3JrU2Vzc2lvbikpCiAgICAgLCBtX3BhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKQogewogICAgIG1faXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMgPSBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0g
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJlNGY1M2QyYWRjMGU4NTIwMjZiMDM3MWI1MTU0
ZDRiM2M4OTk2YzEuLjQ3MDk0MGUzN2RlZjU5ZjlkOTcyMjU3ZmIxM2VjYjc1YmZmMGZiZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQogdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vz
c2lvbihzZXNzaW9uSUQpOwotICAgIGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVj
dGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVl
PFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5l
Y3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CiAgICAgCiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmlkZW50aWZp
ZXIoKTsKICAgICBMT0coU2VydmljZVdvcmtlciwgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24gLSAlcyIsIHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlci5jcHAKaW5kZXggNDQ0MjBmZjVmZjIyOTliZTM3NTRjZTM3Y2RkYzdlZTYxNjJlMTkz
MS4uNTQzNTI4MjhlNjg3MjFhZjBiYWRlMGMwMjc1YmUyZjA5NWExNjYwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBOZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlcjo6Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kKFVzZXJDb250ZW50Q29udHJv
bGwKIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRlbnRSdWxlTGlz
dHMoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4mJiBjb250ZW50
UnVsZUxpc3RzKQogewogICAgIGF1dG8mIGJhY2tlbmQgPSAqbV9jb250ZW50RXh0ZW5zaW9uQmFj
a2VuZHMuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKICAgICBmb3IgKGF1dG8mJiBjb250ZW50UnVsZUxpc3QgOiBjb250ZW50UnVsZUxpc3RzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tC
bG9iLmNwcAppbmRleCA4NTZjYTFmMDk1ZTEwM2M1NDJhZDRlNDMwMDBiY2I3MGZmMWZiMzA3Li44
YTZjNWExZjIxOGQzYzlhYjIxMDRkZjA5NDY5MmNjM2Y2NTUyMjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHdlYktpdEJsb2JSZXNvdXJjZURv
bWFpbiA9ICJXZWJLaXRCbG9iUmVzb3VyY2UiOwogCiBOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3
b3JrRGF0YVRhc2tCbG9iKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBCbG9iUmVnaXN0cnlJbXBs
JiBibG9iUmVnaXN0cnksIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50
U25pZmYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNl
Pj4mIGZpbGVSZWZlcmVuY2VzKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVu
dCwgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBmYWxzZSwgZmFs
c2UpCi0gICAgLCBtX3N0cmVhbShzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRo
aXMpKQorICAgICwgbV9zdHJlYW0obWFrZVVuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkK
ICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoZmlsZVJlZmVyZW5jZXMpCiAgICAgLCBtX25ldHdvcmtQ
cm9jZXNzKHNlc3Npb24ubmV0d29ya1Byb2Nlc3MoKSkKIHsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKICAgICB9CiAKICAgICBhdXRvJiBk
b3dubG9hZE1hbmFnZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKTsKLSAg
ICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5h
Z2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwg
c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93
bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vz
c2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgIGF1dG8qIGRvd25s
b2FkUHRyID0gZG93bmxvYWQuZ2V0KCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVj
YW1lRG93bmxvYWRUYXNrKG1fcGVuZGluZ0Rvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsK
ICAgICBkb3dubG9hZFB0ci0+ZGlkQ3JlYXRlRGVzdGluYXRpb24obV9wZW5kaW5nRG93bmxvYWRM
b2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCmluZGV4IGY2NTQyOTU4YjQ3MTAzZDM4MWY4
Y2M1MzcwZDlkNmI1OTRkYzExNmMuLjE5MzI2ZjJmNDdkYzlmNGY2MjI4YTRjOWFhODRmNmM5ZmFh
YmI3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIE5ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX2RhdGFiYXNlID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4oKTsKKyAgICAgICAgbV9kYXRhYmFzZSA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgICAgIGJvb2wgaXNE
YXRhYmFzZU9wZW4gPSBtX2RhdGFiYXNlLT5vcGVuKHBhdGgsIFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlOjpPcGVuTW9kZTo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIWlzRGF0YWJhc2VPcGVuKSB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04MCw3ICs4MCw3IEBAIE5ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiAgICAgICAgIC8vIFNpbmNl
IHdlIGFyZSB1c2luZyBhIHdvcmtlclF1ZXVlLCB0aGUgc2VxdWVudGlhbCBkaXNwYXRjaCBibG9j
a3MgbWF5IGJlIGNhbGxlZCBieSBkaWZmZXJlbnQgdGhyZWFkcy4KICAgICAgICAgbV9kYXRhYmFz
ZS0+ZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogCi0gICAgICAgIG1fc3RhdGVtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KCptX2RhdGFiYXNlLCBodHRw
c1VwZ3JhZGVDaGVja2VyUXVlcnkpOworICAgICAgICBtX3N0YXRlbWVudCA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tl
clF1ZXJ5KTsKICAgICAgICAgaW50IGlzU3RhdGVtZW50UHJlcGFyZWQgPSAobV9zdGF0ZW1lbnQt
PnByZXBhcmUoKSA9PSBTUUxJVEVfT0spOwogICAgICAgICBBU1NFUlQoaXNTdGF0ZW1lbnRQcmVw
YXJlZCk7CiAgICAgICAgIGlmICghaXNTdGF0ZW1lbnRQcmVwYXJlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
aAppbmRleCBkY2Q0NmE2MDFiZTYzMDk4NmZjMmFlMGMxYzk2NTU4Yzk1OTIyMDhhLi41MWQyMDMx
NGVhYTQ5ZTk2YTQxYTU3Y2U4ZDQyMjI2YmJmYjA3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCkBA
IC00Miw2ICs0Miw3IEBAIGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKICAgICB+
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggOTEwN2ZlYzFlMzRkYjQ0ODgxNjIyODY4NjIyYzhm
YmViNWIzODgzYy4uZWU4MGFjNmVhMWE3Nzk3NzNhMDcxMGUxNzg4NzA2Mzc2N2M1MTJiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTIxNSw3
ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZQogICAgIH0KIAogICAgIGlmIChtX2xv
YWRUaHJvdHRsZUxhdGVuY3kgPiAwX3MpIHsKLSAgICAgICAgbV90aHJvdHRsZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGhyb3R0bGU+KCp0aGlzLCBtX2xvYWRUaHJvdHRsZUxhdGVuY3ksIFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fdGhyb3R0
bGUgPSBtYWtlVW5pcXVlPFRocm90dGxlPigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBX
VEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggNDA5NzE0ZDY2NzI2YTg0NzRhZmYyOWExNjA4MTdm
MjQ3OTY3YjAxNi4uZTFhZTAwYmQ5ZDk1NDc3NzgxNzQzOTg1ZGYwNzNhOGIxY2QyNTM3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NP
UlNSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0CiAgICAgICAg
IG1fZnJhbWVJRCwKICAgICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeQogICAgIH07Ci0g
ICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgW3RoaXMsIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgaXNSZWRp
cmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgbV9j
b3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX3Nob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgaXNSZWRpcmVjdGVkID0gaXNS
ZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0IC0gbWFrZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQgcHJlZmxpZ2h0IGNvbXBsZXRlLCBzdWNjZXNz
OiAlZCBmb3JSZWRpcmVjdD8gJWQiLCBlcnJvci5pc051bGwoKSwgaXNSZWRpcmVjdGVkKTsKIAog
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CkBAIC00NDYsNyArNDQ2LDcgQEAgQ29udGVu
dFNlY3VyaXR5UG9saWN5KiBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRTZWN1cml0eVBvbGljeSAmJiBtX2NzcFJlc3BvbnNl
SGVhZGVycykgewogICAgICAgICAvLyBGSVhNRTogUGFzcyB0aGUgVVJMIG9mIHRoZSBwcm90ZWN0
ZWQgcmVzb3VyY2UgaW5zdGVhZCBvZiBpdHMgb3JpZ2luLgotICAgICAgICBtX2NvbnRlbnRTZWN1
cml0eVBvbGljeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwg
eyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJpbmcoKSB9KTsKKyAgICAgICAgbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJM
IHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7CiAgICAgICAgIG1fY29udGVudFNlY3VyaXR5
UG9saWN5LT5kaWRSZWNlaXZlSGVhZGVycygqbV9jc3BSZXNwb25zZUhlYWRlcnMsIFN0cmluZyB7
IG1fcmVmZXJyZXIgfSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRQYXJzaW5nRXJyb3Jz
OjpObyk7CiAgICAgfQogICAgIHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggNDgxY2VjN2IzMWE4MmRhYWEzZDZlNTM4MGNmYmIwZjNhYjE4ZDUzOC4uNzlhYWZhZDExYmVl
OGVmZGNjODU1NDZhMDU2ZDVhYmQzMGQ2NjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUwMyw5ICs1MDMsOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAgICAgICAgIGNv
b2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3Jh
Z2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIG1f
ZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
LCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBtX2RlZmF1
bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShz
ZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkgfHwgVVNF
KFNPVVApCi0gICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpOworICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKTsKICNlbmRpZgogfQogCkBAIC01MzUsOSArNTM1LDkgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENG
KF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Np
b25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwor
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29r
aWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCi0gICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihzZXNzaW9uSUQpOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCkBAIC0yNDQ0
LDcgKzI0NDQsNyBAQCBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm90LCB0
aGVuIHdoZXJlIGRpZCB0aGlzIFBBTDo6U2Vzc2lvbklEIGNvbWUgZnJvbT8KICAgICAgICAgQVNT
RVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpIHx8ICFwYXRoLmlzRW1wdHkoKSk7CiAgICAgICAg
IAotICAgICAgICBhdXRvIHZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlcj4obWFrZVVu
aXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQpOwor
ICAgICAgICBhdXRvIHZhbHVlID0gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxX
ZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQpOwogICAgICAgICBp
ZiAobV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KQog
ICAgICAgICAgICAgdmFsdWUtPmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkoKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMjU1Niw2ICsyNTU2LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IENsaWVudE8KIH0KIAogY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVF1b3RhVXNlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUXVvdGFVc2VySW5pdGlhbGl6ZXIo
U3RvcmFnZVF1b3RhTWFuYWdlciYgbWFuYWdlcikKICAgICAgICAgOiBtX21hbmFnZXIobWFrZVdl
YWtQdHIobWFuYWdlcikpCkBAIC0yNTkwLDcgKzI1OTEsNyBAQCBjbGFzcyBRdW90YVVzZXJJbml0
aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFVc2VyIHsKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMoU3RvcmFnZVF1b3RhTWFuYWdl
ciYgbWFuYWdlciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbikKIHsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgb3JpZ2luLCB1c2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxRdW90YVVzZXJJbml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJsZSB7CisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBzZXNzaW9uSUQsIG9yaWdpbiwgdXNlciA9IG1ha2VVbmlxdWU8UXVvdGFVc2VySW5pdGlh
bGl6ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLT5pZGJTZXJ2ZXIoc2Vzc2lvbklEKS5pbml0
aWFsaXplUXVvdGFVc2VyKG9yaWdpbik7CkBAIC0yNjA0LDcgKzI2MDUsNyBAQCBTdG9yYWdlUXVv
dGFNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSQogICAgICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcnMgeyB9Owog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4gKnN0b3JhZ2VRdW90YU1hbmFnZXJz
Lm1hbmFnZXJzUGVyT3JpZ2luKCkuZW5zdXJlKG9yaWdpbiwgW3RoaXMsICZzdG9yYWdlUXVvdGFN
YW5hZ2Vycywgc2Vzc2lvbklELCAmb3JpZ2luXSB7Ci0gICAgICAgIGF1dG8gbWFuYWdlciA9IHN0
ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFuYWdlcnMu
ZGVmYXVsdFF1b3RhKG9yaWdpbiksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0odWludDY0X3Qg
cXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0
byBjYWxsYmFjaykgeworICAgICAgICBhdXRvIG1hbmFnZXIgPSBtYWtlVW5pcXVlPFN0b3JhZ2VR
dW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBb
dGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50
U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAg
ICAgIHRoaXMtPnJlcXVlc3RTdG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIHF1b3RhLCBj
dXJyZW50U3BhY2UsIHNwYWNlSW5jcmVhc2UsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAg
fSk7CiAgICAgICAgIGluaXRpYWxpemVRdW90YVVzZXJzKCptYW5hZ2VyLCBzZXNzaW9uSUQsIG9y
aWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggMzNkZmZmYjJmMDRlYzcyN2YyMmFiMGYzNDNmYTI4ZjcxZWZhMDQ2OS4uNjdiNjNkZTQz
OGM1NmJiNzRhY2E0NmY0YzYzMDk3YjI0ZDEwZTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIE5l
dHdvcmtQcm9jZXNzIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRN
YW5hZ2VyOjpDbGllbnQsCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRT
dXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1l
bnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVt
ZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAg
IH0KIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NzgyZWYxNWYzZGVl
ZTVhZjRlYWVmMDVjZGY2MDM2YWU3ZTZkMmZiLi44YzMzZmI4NjBhZDdhNzg3MzZlNGI4ZmJhZGYy
MGM3NzU1MzI5ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBwYXIKIAogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5IHx8IHBhcmFtZXRlcnMu
c2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgfHwgcGFyYW1ldGVycy5vcHRpb25zLmtl
ZXBBbGl2ZSkgewogICAgICAgICBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlIHJlcXVlc3RM
b2FkVHlwZSA9IGlzTWFpbkZyYW1lTG9hZCgpID8gTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlw
ZTo6TWFpbkZyYW1lIDogTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZTo6T3RoZXI7Ci0gICAg
ICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZENo
ZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJh
bWV0ZXJzLm9wdGlvbnMgfSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFt
ZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVz
dC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0
ZXJzLnByZWZsaWdodFBvbGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1f
cGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpLCByZXF1ZXN0TG9hZFR5cGUpOworICAgICAgICBtX25ldHdvcmtMb2Fk
Q2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFy
YW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJz
LnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9y
aWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVz
dExvYWRUeXBlKTsKICAgICAgICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMp
CiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJz
KENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IG1fcGFyYW1ldGVycy5jc3BS
ZXNwb25zZUhlYWRlcnMudmFsdWUoKSB9KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQpAQCAtMTE5LDcgKzExOSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291
cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAjZW5kaWYKICAg
ICB9CiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkpCi0gICAgICAgIG1fc3luY2hyb25vdXNMb2Fk
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5j
aHJvbm91c1JlcGx5KSk7CisgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IG1ha2VVbmlx
dWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7CiB9CiAK
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6fk5ldHdvcmtSZXNvdXJjZUxvYWRlcigpCkBAIC0zMTgs
NyArMzE4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgcGFyYW1ldGVycy5i
bG9iRmlsZVJlZmVyZW5jZXMgPSBuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJ
bkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1
ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdU
Rk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9
IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdp
c3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVz
Y3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25l
dHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDUwNmU3ZmYwOGZiYzlh
NzY0ZWE4MzAzMDk0YjZkMzA2NzRhM2YzYTQuLjMzNWIxOWJmYjA5MDUwYTdmYmFkMzMzODQ3YjFj
NGY1MmNjYzYwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgQ2FjaGU7CiB9CiAKIGNsYXNzIE5ldHdv
cmtTZXNzaW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdmlydHVhbCB+TmV0d29ya1Nlc3Npb24oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hh
bm5lbC5jcHAKaW5kZXggMDRlM2QwMjUyMjBkZTRjNDNjNzM2MmRhMTQxZGYzMmJhMjAzMGZhZi4u
NTkxODg1NzU3YTg0NzUxYzgzMThmN2JlNWQyNzVhN2YxMWM1YTRhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gTmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZShOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0aW9uLm5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwgcHJvdG9j
b2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3b3JrU29j
a2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKTsKICAg
ICBpZiAoIXJlc3VsdC0+bV9zb2NrZXQpIHsKICAgICAgICAgcmVzdWx0LT5kaWRDbG9zZSgwLCAi
Q2Fubm90IGNyZWF0ZSBhIHdlYiBzb2NrZXQgdGFzayJfcyk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
Q2hhbm5lbC5oCmluZGV4IDY3MmIzNzgxYTRkNGEzNGI5YzFlMWUyNDE1YmQ0OTEwZTc3OWVkNzEu
LjlkZjlhYWNkY2IzMzJlMDQxZGI2OWJkMDY4MTAyMjljZjhiYjRlOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsK
IAogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVy
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENo
YW5uZWw+IGNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCBkOTBjY2NhOTgwYThlZmZjMmQ0ZjM4ZjVl
M2Y2YmMwYWEyYzJlNTQ2Li4yYzY0MjdlNjQ4MjJjZWY1ZDFhODEyMDI1ZWZkNmM4NTQ1NDFjZTg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNw
cApAQCAtNTMsNyArNTMsNyBAQCBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrTG9hZFBhcmFtZQogICAgIH0KIAogICAg
IEFTU0VSVChwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RPbmx5
OjpZZXMpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2Fk
PigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsK
KyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxw
dHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBtX3RpbWVv
dXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IDNhNTlmZmE2YTFhMDhkNjNkZTViZmY1OWUz
ZjY5NDZmMGU0MDhlYjQuLjA0Nzk5MjA4OTZkYTI1N2ZjNTg2NDUxNjBjMDAwOWQxNjRjZTVmZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0z
NCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0VGFzayB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB1aW50
NjRfdCBUYXNrSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5k
ZXggYmY1MTU3OGZiMTQ3ZGRkYzg3ZTY2ZDkwYTVlZGQwMmE0Y2Q3MjY5My4uY2M4Nzg0ZDQyODNh
NjI1ZmMwZTFkOWVmYWE1MjcwNTIzYWM3MTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2No
ZWR1bGVEYXRhYmFzZVVwZGF0ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9kaXNh
YmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSkKLSAgICAgICAg
bV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsKKyAgICAgICAgbV9k
aXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSA9IG1ha2VV
bmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsKIAogICAgIG1fZGlkU2NoZWR1bGVE
YXRhYmFzZVVwZGF0ZSA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAzZTlkMTdkNjAyZDM0MTc3MDMzYzkz
MzhiNGJiZTZkYTBiYWJhOGE0Li5iMDgzZDVkMzJhNTFlNjFkYTQzNzZkZjk0NDZlZjExMTRlYTZi
ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCkBAIC04NCwxNyArODQsMTcgQEAgQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVmPFN0b3JhZ2U+JiYgc3RvcmFnZSwgT3B0aW9uU2V0PEMK
IHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAg
ICAgaWYgKG9wdGlvbnMuY29udGFpbnMoQ2FjaGVPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKSkgewotICAgICAgICBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1v
ZGVFbmFibGVkKSB7CisgICAgICAgIG1fbG93UG93ZXJNb2RlTm90aWZpZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9k
ZUVuYWJsZWQpIHsKICAgICAgICAgICAgIEFTU0VSVChXVEY6OlJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICAgICAgICAgIGlmIChpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpCiAgICAgICAgICAgICAgICAg
bV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgIEFTU0VSVCghbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKTsKLSAgICAg
ICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOworICAgICAgICAg
ICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0pOwogICAgICAgICBpZiAoIW1fbG93UG93ZXJNb2RlTm90aWZpZXItPmlzTG93UG93ZXJN
b2RlRW5hYmxlZCgpKQotICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdl
dCgpKTsKKyAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IG1ha2VVbmlxdWU8
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CiAgICAgfQog
I2VuZGlmCiAKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmll
dmUoUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAg
ICAgCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURh
dGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShy
ZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVj
dFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5
PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSks
IFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5k
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVl
c3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShy
ZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlp
bmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
LCByZXF1ZXN0LCByZXNwb25zZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtl
Q2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNv
bGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9k
eSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6OnVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IGV4
aXN0aW5nRW50cnkucmVzcG9uc2UoKTsKICAgICBXZWJDb3JlOjp1cGRhdGVSZXNwb25zZUhlYWRl
cnNBZnRlclJldmFsaWRhdGlvbihyZXNwb25zZSwgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIAotICAg
IGF1dG8gdXBkYXRlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihleGlzdGluZ0VudHJ5
LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRyeS5idWZmZXIoKSwgV2ViQ29yZTo6Y29sbGVj
dFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgYXV0byB1cGRhdGVFbnRy
eSA9IG1ha2VVbmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnkua2V5KCksIHJlc3BvbnNlLCBleGlz
dGluZ0VudHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIG9yaWdpbmFsUmVxdWVz
dCwgcmVzcG9uc2UpKTsKICAgICBhdXRvIHVwZGF0ZVJlY29yZCA9IHVwZGF0ZUVudHJ5LT5lbmNv
ZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAogICAgIG1fc3RvcmFnZS0+c3RvcmUodXBkYXRlUmVjb3Jk
LCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCA3YWUxYzJmZTdkY2U2MDdiOWY4YTUzZDk5YTFi
ZDc5ODUzOTliY2YxLi4xZjQxNDRhOGZhZTg3YmY1ZmM1YzgzZWQ5MDJiNmZmMDhhMDY0YWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRy
eTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3Jh
Z2VFbnRyeSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oc3Rv
cmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxFbnRyeT4oc3RvcmFnZUVu
dHJ5KTsKIAogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50
cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRlci5zaXplKCkpOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fcmVzcG9uc2UpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCmluZGV4IGU3ZmM1Yjg5MzIyYjk5MWM3MDlkMDY4YmUyZGU3NzczODNjYjRi
YzAuLjIyMDE5NDE3YThjNTAxYmY5NTViZjUzMjJjMDY5Y2IwMzJhNDFlNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3BlY3VsYXRpdmVM
b2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBn
bG9iYWxGcmFtZUkKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRl
bnRTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7CiAgICAgcGFyYW1ldGVycy5jb250
ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
OjpTbmlmZjsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKLSAg
ICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51
bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpjYWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKKyAgICBtX25l
dHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1v
dmUocGFyYW1ldGVycyksICpjYWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKIH0KIAogU3BlY3VsYXRpdmVMb2Fk
Ojp+U3BlY3VsYXRpdmVMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIuY3BwCmluZGV4IDFjZDZiNDkyZjgxYTVhODFkMjRjYTc5MTA4ZGE2YjE5ZTBjMDAz
ZjEuLjU3ZThlNzU5OWIxY2NhNjViMjZlMDZlYzM4NzJlZTJkZDk0OWRmNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApAQCAtMTc0LDcgKzE3NCw3
IEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxvYWQgOiBwdWJs
aWMgUmVmQ291bnRlZDxQZW5kaW5nRnJhbWVMCiAgICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNl
TG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgc3VicmVzb3Vy
Y2VLZXkpCiAgICAgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAg
ICBtX3N1YnJlc291cmNlTG9hZHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U3VicmVzb3VyY2VM
b2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkpOworICAgICAgICBtX3N1YnJlc291cmNlTG9h
ZHMuYXBwZW5kKG1ha2VVbmlxdWU8U3VicmVzb3VyY2VMb2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJj
ZUtleSkpOwogICAgICAgICBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkuaW1wdWxzZSgpOwogICAg
IH0KIApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0
cmlldmUoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBSZXRyaWV2ZUNvbXBsZXRpb25ICiAgICAgQVNT
RVJUKG1fcGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5zKHN0b3JhZ2VLZXkpKTsKICAgICAvLyBGSVhN
RTogVGhpcyBicmVha3MgaW5jcmVtZW50YWwgbG9hZGluZyB3aGVuIHRoZSByZXZhbGlkYXRpb24g
aXMgbm90IHN1Y2Nlc3NmdWwuCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXRyaWV2
ZVJlcXVlc3RzLmVuc3VyZShzdG9yYWdlS2V5LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+PigpOwog
ICAgIH0pOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVu
dHJ5LCBjb24KICAgICBBU1NFUlQoZW50cnkpOwogICAgIEFTU0VSVCghZW50cnktPm5lZWRzVmFs
aWRhdGlvbigpKTsKICAgICBhdXRvIGtleSA9IGVudHJ5LT5rZXkoKTsKLSAgICBtX3ByZWxvYWRl
ZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkZWRFbnRyeT4oV1RGTW92
ZShlbnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlzLCBrZXksIGZyYW1l
SURdIHsKKyAgICBtX3ByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgbWFrZVVuaXF1ZTxQcmVsb2Fk
ZWRFbnRyeT4oV1RGTW92ZShlbnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0
aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgYXV0byBwcmVsb2FkZWRFbnRyeSA9IG1fcHJl
bG9hZGVkRW50cmllcy50YWtlKGtleSk7CiAgICAgICAgIEFTU0VSVChwcmVsb2FkZWRFbnRyeSk7
CiAgICAgICAgIGlmIChwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSkKQEAgLTQ0OSw3
ICs0NDksNyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVx
dWVzdHMoY29uc3QgS2V5JiBrZXksIEVudHJ5KiBlbnRyeQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBmb3IgKGF1dG8mIGNvbXBsZXRpb25IYW5kbGVyIDogKmNvbXBsZXRpb25IYW5kbGVy
cykKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkgPyBzdGQ6Om1ha2VfdW5pcXVlPEVu
dHJ5PigqZW50cnkpIDogbnVsbHB0cik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVudHJ5
ID8gbWFrZVVuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6IG51bGxwdHIpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXMKIAogICAg
IExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3Mp
IFNwZWN1bGF0aXZlbHkgcmV2YWxpZGF0aW5nICclcyc6Iiwga2V5LmlkZW50aWZpZXIoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gcmV2YWxpZGF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
ZWN1bGF0aXZlTG9hZD4obV9jYWNoZSwgZnJhbWVJRCwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgV1RG
TW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlvblJlcXVlc3QsIGZyYW1lSURdKHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgeworICAgIGF1dG8gcmV2YWxp
ZGF0b3IgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4obV9jYWNoZSwgZnJhbWVJRCwgcmV2
YWxpZGF0aW9uUmVxdWVzdCwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlv
blJlcXVlc3QsIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRy
eSkgewogICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgIXJldmFsaWRhdGVkRW50
cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5
IHx8IHJldmFsaWRhdGVkRW50cnktPmtleSgpID09IGtleSk7CiAKQEAgLTU1OSw3ICs1NTksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24oY29uc3QgR2xvYmFsRnJhbWVJRCYgZgogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwg
c3VicmVzb3VyY2VJbmZvLCBmcmFtZUlEKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBM
T0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBO
b3QgcHJlbG9hZGluZyAnJXMnIGJlY2F1c2UgaXQgaXMgbWFya2VkIGFzIHRyYW5zaWVudCIsIGtl
eS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX25vdFByZWxvYWRl
ZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywg
a2V5LCBmcmFtZUlEXSB7CisgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMuYWRkKGtl
eSwgbWFrZVVuaXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAg
ICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UobV9jYWNo
ZS5uZXR3b3JrUHJvY2VzcygpLCBmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5
UmlnaHRseU5vdFdhcm1lZFVwS2V5KCkpOwogICAgICAgICAgICAgICAgIG1fbm90UHJlbG9hZGVk
RW50cmllcy5yZW1vdmUoa2V5KTsKICAgICAgICAgICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IGJiZmM2NDk4OTBmOTVjYzdlMDRjZTgyYTRmZTMyOTQ0ZGMxYWIxZjAuLjgwNGM0Mjk4
Y2MzZTNjMjgxNGZkYmMyYmJiNmNiZWU1NzU4NGFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApA
QCAtMjkwLDggKzI5MCw4IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgIExPRyhO
ZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBzeW5jaHJvbml6aW5nIGNhY2hl
Iik7CiAKICAgICBiYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewotICAgICAgICBhdXRvIHJlY29yZEZp
bHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7Ci0gICAgICAgIGF1dG8g
YmxvYkZpbHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAg
IGF1dG8gcmVjb3JkRmlsdGVyID0gbWFrZVVuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAg
ICAgYXV0byBibG9iRmlsdGVyID0gbWFrZVVuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKIAogICAg
ICAgICAvLyBNb3N0IG9mIHRoZSBkaXNrIHNwYWNlIHVzYWdlIGlzIGluIGJsb2JzIGlmIHdlIGFy
ZSB1c2luZyB0aGVtLiBBcHByb3hpbWF0ZSByZWNvcmRzIGZpbGUgc2l6ZXMgdG8gYXZvaWQgZXhw
ZW5zaXZlIHN0YXQoKSBjYWxscy4KICAgICAgICAgc2l6ZV90IHJlY29yZHNTaXplID0gMDsKQEAg
LTQ4OSw3ICs0ODksNyBAQCB2b2lkIFN0b3JhZ2U6OnJlYWRSZWNvcmQoUmVhZE9wZXJhdGlvbiYg
cmVhZE9wZXJhdGlvbiwgY29uc3QgRGF0YSYgcmVjb3JkRGF0YSkKICAgICB9CiAKICAgICByZWFk
T3BlcmF0aW9uLmV4cGVjdGVkQm9keUhhc2ggPSBtZXRhRGF0YS5ib2R5SGFzaDsKLSAgICByZWFk
T3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3Jk
PihTdG9yYWdlOjpSZWNvcmQgeworICAgIHJlYWRPcGVyYXRpb24ucmVzdWx0UmVjb3JkID0gbWFr
ZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJlY29yZCB7CiAgICAgICAgIG1ldGFE
YXRhLmtleSwKICAgICAgICAgbWV0YURhdGEudGltZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRh
LApAQCAtNzU4LDcgKzc1OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIHJldHJpZXZlRnJv
bU1lbW9yeShjb25zdCBUJiBvcGVyYXRpb25zLCBjb25zdCBLZXkmIGtleSwKICAgICAgICAgaWYg
KG9wZXJhdGlvbi0+cmVjb3JkLmtleSA9PSBrZXkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3Jr
Q2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBmb3VuZCB3cml0ZSBvcGVyYXRpb24gaW4g
cHJvZ3Jlc3MiKTsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVjb3Jk
ID0gb3BlcmF0aW9uLT5yZWNvcmQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihyZWNvcmQpLCB7IH0pOworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmlxdWU8U3RvcmFnZTo6UmVjb3Jk
PihyZWNvcmQpLCB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQpAQCAtODYyLDcgKzg2Miw3IEBAIHZvaWQgU3RvcmFnZTo6cmV0cmlldmUo
Y29uc3QgS2V5JiBrZXksIHVuc2lnbmVkIHByaW9yaXR5LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5k
CiAgICAgaWYgKHJldHJpZXZlRnJvbU1lbW9yeShtX2FjdGl2ZVdyaXRlT3BlcmF0aW9ucywga2V5
LCBjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVhZE9w
ZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZE9wZXJhdGlvbj4oKnRoaXMsIGtleSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gcmVhZE9wZXJhdGlvbiA9IG1ha2VV
bmlxdWU8UmVhZE9wZXJhdGlvbj4oKnRoaXMsIGtleSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogCiAgICAgcmVhZE9wZXJhdGlvbi0+dGltaW5ncy5zdGFydFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKICAgICByZWFkT3BlcmF0aW9uLT50aW1pbmdzLmRpc3BhdGNoQ291bnRBdFN0
YXJ0ID0gbV9yZWFkT3BlcmF0aW9uRGlzcGF0Y2hDb3VudDsKQEAgLTg3OSw3ICs4NzksNyBAQCB2
b2lkIFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBNYXBwZWRCb2R5SGFuZGxl
ciYmIG1hcHBlZEJvZHlIYW5kbGVyLAogICAgIGlmICghbV9jYXBhY2l0eSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVP
cGVyYXRpb24+KCp0aGlzLCByZWNvcmQsIFdURk1vdmUobWFwcGVkQm9keUhhbmRsZXIpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9IG1ha2VV
bmlxdWU8V3JpdGVPcGVyYXRpb24+KCp0aGlzLCByZWNvcmQsIFdURk1vdmUobWFwcGVkQm9keUhh
bmRsZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgbV9wZW5kaW5nV3JpdGVP
cGVyYXRpb25zLnByZXBlbmQoV1RGTW92ZSh3cml0ZU9wZXJhdGlvbikpOwogCiAgICAgLy8gQWRk
IGtleSB0byB0aGUgZmlsdGVyIGFscmVhZHkgaGVyZSBhcyB3ZSBkbyBsb29rdXBzIGZyb20gdGhl
IHBlbmRpbmcgb3BlcmF0aW9ucyB0b28uCkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBTdG9yYWdl
Ojp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZs
YWdzLCBUcmF2ZXIKICAgICBBU1NFUlQodHJhdmVyc2VIYW5kbGVyKTsKICAgICAvLyBBdm9pZCBu
b24tdGhyZWFkIHNhZmUgRnVuY3Rpb24gY29waWVzLgogCi0gICAgYXV0byB0cmF2ZXJzZU9wZXJh
dGlvblB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRo
aXMpLCB0eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKKyAgICBhdXRvIHRy
YXZlcnNlT3BlcmF0aW9uUHRyID0gbWFrZVVuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJl
ZigqdGhpcyksIHR5cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikpOwogICAgIGF1
dG8mIHRyYXZlcnNlT3BlcmF0aW9uID0gKnRyYXZlcnNlT3BlcmF0aW9uUHRyOwogICAgIG1fYWN0
aXZlVHJhdmVyc2VPcGVyYXRpb25zLmFkZChXVEZNb3ZlKHRyYXZlcnNlT3BlcmF0aW9uUHRyKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXggN2I4ODkyMjk5
NTM5ZGIzNGM1YjM5MTRkM2IyMTRjZThiODE0M2I5OC4uNjNhZDA0MDlmZGQyMzZmNmUzYzJjYTMw
ZTg3ZTRhN2MwYTI5NTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5j
cHAKQEAgLTkzLDcgKzkzLDcgQEAgU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5Ojpl
bmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3Vy
Y2VzRW50cnk+IFN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0
b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQogewotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOworICAgIGF1dG8gZW50
cnkgPSBtYWtlVW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0
YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShlbnRyeS0+bV9zdWJyZXNvdXJjZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5kZXggZDhhMDU5NDBkNzE5N2ViMzIy
NWEzNmJjNTEzYTJkYjYxMGRiMGNkOC4uNzEwNGQxZjc0Y2Q3MDFjYmNlY2ZhYjU3ZDI0ZWJmZjhk
YWViZWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Q
cmVmZXRjaENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuY3BwCkBAIC03Myw4ICs3Myw4IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRz
IGV4cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07CiB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNv
bnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1f
c2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
c2Vzc2lvblByZWZldGNoZXMtPmFkZChyZXF1ZXN0VXJsLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZl
dGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShidWZmZXIpKSk7Cisg
ICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01h
cD4oKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvblByZWZldGNoZXMtPmFkZChyZXF1
ZXN0VXJsLCBtYWtlVW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlc3BvbnNl
KSwgV1RGTW92ZShidWZmZXIpKSk7CiAgICAgLy8gTGltaXQgcHJlZmV0Y2hlcyBmb3Igc2FtZSB1
cmwgdG8gMS4KICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47
CkBAIC04Niw5ICs4Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiBy
ZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFByZWZldGNo
Q2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVkaXJlY3RSZXF1ZXN0KQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKLSAg
ICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hFbnRy
aWVzTWFwPigpOworICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVm
ZXRjaEVudHJpZXNNYXA+KCk7CiAgICAgcmVkaXJlY3RSZXF1ZXN0LmNsZWFyUHVycG9zZSgpOwot
ICAgIG1fc2Vzc2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0VXJsLCBzdGQ6Om1ha2VfdW5pcXVl
PFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3Zl
KHJlZGlyZWN0UmVxdWVzdCkpKTsKKyAgICBtX3Nlc3Npb25QcmVmZXRjaGVzLT5zZXQocmVxdWVz
dFVybCwgbWFrZVVuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZWRpcmVjdFJl
c3BvbnNlKSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpKSk7CiAgICAgbV9zZXNzaW9uRXhwaXJh
dGlvbkxpc3QuYXBwZW5kKHN0ZDo6bWFrZV90dXBsZShyZXF1ZXN0VXJsLCBXYWxsVGltZTo6bm93
KCkpKTsKICAgICBpZiAoIW1fZXhwaXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
ZXhwaXJhdGlvblRpbWVyLnN0YXJ0T25lU2hvdChleHBpcmF0aW9uVGltZW91dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4
IGExNzEwYmFlOWU1YTg4NTI2Y2VmYTNiMzlhYTc4OGZhYWYyY2ZhMGUuLmEyNTE1MjBiMzFlYWM5
MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNz
IFByZWZldGNoQ2FjaGUgewogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIHN0cnVjdCBFbnRyeSB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgRW50cnko
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCAwNzdmMTZmYTY1
MDY1MmM3ODdhNmYwMzE2MDkwOTAyNjhlYmI4YWMwLi5jY2UyNmFjZmIwNGNmNzA3NGU3NjNmNWJi
YzhlNGE1ZTk4YTE1YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIFJldGFpblB0
cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgp
IGNvbnN0CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Q
cm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpCiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlciYgTmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKIHsKICAg
ICBpZiAoIW1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpCi0gICAgICAgIG1fbmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyPigpOworICAgICAgICBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyID0gbWFrZVVu
aXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsKICAgICByZXR1cm4gKm1fbmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBhOTVlNWM5
MzFmOWZjMTVmZDEyODk1OWY5MzYwZWExZTUwODJhZTc1Li4wZDJkYjJiYjAwMDAzMDZlMjgwOWNi
YTgyMGE4YzQ2ZmJjZDFiYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC04MDIsNyArODAyLDcg
QEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihO
U1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEKICAgICAgICAgUmVmPE5ldHdvcmtEYXRhVGFza0Nv
Y29hPiBwcm90ZWN0ZWROZXR3b3JrRGF0YVRhc2soKm5ldHdvcmtEYXRhVGFzayk7CiAgICAgICAg
IGF1dG8gZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsK
ICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNz
KCkuZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93
bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2Vz
dGVkRmlsZW5hbWUoKSk7CisgICAgICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPFdlYktp
dDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBf
c2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9E
b3dubG9hZCgqZG93bmxvYWQpOwogICAgICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAg
ZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rv
d25sb2FkTG9jYXRpb24oKSk7CkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lv
bkNvY29hOjpzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6
OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4obmV0d29y
a1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5
ICpwcm94eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQ
cm94eSkKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNr
PiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTCiB7CiAg
ICAgLy8gRklYTUU6IFVzZSBwcm90b2NvbC4KICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uV2Vi
U29ja2V0VGFzaz4gdGFzayA9IFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuZ2V0KCkg
d2ViU29ja2V0VGFza1dpdGhSZXF1ZXN0OiByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpI
VFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIFdURk1vdmUodGFzaykpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIFdURk1vdmUodGFz
aykpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFkZFdlYlNvY2tldFRhc2soV2Vi
U29ja2V0VGFzayYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCmluZGV4IDkzN2UyODczMmJlNTc0MzI2MTY5
ZDg1NGRmNjRjMTUxM2UyYjY4YTMuLmY2Y2Q3YTkyOGI5NzM4ODE2YzM4OWE5NTdjOGE5MWRlOGMy
NWIyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2Vi
U29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBOZXR3b3JrU2Vz
c2lvbjsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogCiBjbGFzcyBXZWJTb2NrZXRUYXNr
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNvY2tldFRhc2s+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRD
aGFubmVsJiwgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+JiYpOwogICAgIH5X
ZWJTb2NrZXRUYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCmluZGV4IGJlNjgwMWYzMGNkZjQ5MDAyNTRj
MjI0YjliMTFmYmRmNzNmZTJlMzEuLjViZTE3MDI2NmY0NWI4YmY3MmVmNTZiMTAwODdjYjU5YmI1
NmRiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrUHJvY2Vzc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
bGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAppbmRleCBk
NDcwOWE1ZTRhYzhhMmZiNmFjZWI1NmM1N2ViZjBiNWM3NDBkNDU2Li5lMThhNDM5MGIxODhhMjdl
OTMxOGM1MjQwNDU1ZjA2NGNmNmJkNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCkBAIC0zNSw3ICszNSw3IEBA
IGNsYXNzIE5ldHdvcmtTZXNzaW9uQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4o
bmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3Jr
U2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25DdXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzSU9TLm1tCmluZGV4IDIzNzQ1Mjg4YTA2ZDAxMTQ1OTE5NjhiNTA4NmRlYjVm
NDVhYTBhYzYuLmM4Yjg2YzUxMTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9z
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IoKQogewogICAgIGlmICghbV9w
YXltZW50Q29vcmRpbmF0b3IpCi0gICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBt
X3BheW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcGF5bWVudENvb3JkaW5hdG9yOwogfQogCkBAIC04
Miw3ICs4Miw3IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uCiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmIGNvb3JkaW5hdG9yLCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJv
bGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1l
bnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRN
ZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApp
bmRleCBkNDZjNTAzZDgxZTk4MzRlNWQyYTI1NjYwYzg3MjNlYWU3ZTE3MGVjLi40ZmFjYzgyMTNl
Zjg1MDVjZjlkNTQ4YjIzYzU2NmRkM2QwYmUwYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC04
OTcsNyArODk3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAg
bV9kb3dubG9hZE91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihHX09VVFBVVF9TVFJFQU0ob3V0cHV0
U3RyZWFtLmxlYWtSZWYoKSkpOwogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9zZXNz
aW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxv
YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGlu
Z0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxl
bmFtZSgpKTsKKyAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxv
YWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9u
SUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3du
bG9hZC5nZXQoKTsKICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRh
c2sobV9wZW5kaW5nRG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2Fk
UHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vz
c1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAKaW5kZXggODNjMmYyOGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFm
OS4uN2E3NDgxZjdkNDI1ZjAyMzM3YTBjMTBhZGY5ZDY1NGY3MGVjN2RkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3Jz
KGJvb2wgaWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCAzMGZjOGE1MzU1ZDA4
NDUyYWMzNjFiMWRjZWE5N2M4NGYzNjA3ZmVkLi40MDczNjFmMDM2ZTc5ODkxNzY3ZDgwN2ZiYjYz
YzkwNDRiMjYwYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNv
dXAoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJv
Y2VzcywgcGFyYW1ldGVycykKLSAgICAsIG1fbmV0d29ya1Nlc3Npb24oc3RkOjptYWtlX3VuaXF1
ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKKyAgICAsIG1fbmV0d29ya1Nlc3Np
b24obWFrZVVuaXF1ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKIHsKICAgICBh
dXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIEFTU0VS
VChzdG9yYWdlU2Vzc2lvbik7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3
b3JrU28KICAgICByZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpLCBi
bG9iUmVnaXN0cnkoKSk7CiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygid3NzIikp
CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cE1lc3NhZ2UuZ2V0KCksICJuZXR3b3JrLWV2
ZW50IiwgR19DQUxMQkFDSyh3ZWJTb2NrZXRNZXNzYWdlTmV0d29ya0V2ZW50Q2FsbGJhY2spLCBu
dWxscHRyKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFu
bmVsLCBzb3VwU2Vzc2lvbigpLCBzb3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNv
dXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5oCmluZGV4IGY5ZWY0YmI1NDMwYmJmNzNiMDRhMGUzYmVjMjQ3OTI4ZDU5ZTcxNmIu
LjQ2NmIyNzgyYmY5M2M3NzA3MGY3OTdkZDM2NTIzNGNjMWRlM2ZiMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25Tb3VwIGZpbmFsIDogcHVibGlj
IE5ldHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9j
ZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0
d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAg
ICAgfQogICAgIE5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvblNvdXAoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAppbmRleCA2ZGRjODFhMzZkODQ5Y2JjMjgz
NzkzYjYxNzA2N2EyN2UyOWQ5MWYwLi44NzQ1MjVlMzhjZTcwNGViZTFkYWE3MTBiYjU1YzAxY2Mw
NThlYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiBzdHJ1Y3QgQXN5bmNS
ZWFkRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEFzeW5j
UmVhZERhdGEoR1JlZlB0cjxHVGFzaz4mJiB0YXNrLCB2b2lkKiBidWZmZXIsIGdzaXplIGNvdW50
KQogICAgICAgICA6IHRhc2soV1RGTW92ZSh0YXNrKSkKICAgICAgICAgLCBidWZmZXIoYnVmZmVy
KQpAQCAtMzksNiArNDAsNyBAQCBzdHJ1Y3QgQXN5bmNSZWFkRGF0YSB7CiB9OwogCiBzdHJ1Y3Qg
X1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgdWludDY0X3QgY29udGVudExlbmd0aDsKICAgICB1aW50
NjRfdCBieXRlc1JlY2VpdmVkOwogICAgIHVpbnQ2NF90IGJ5dGVzUmVhZDsKQEAgLTk5LDcgKzEw
MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMo
R0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgdm9pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFz
eW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291bnQpOworICAgIHN0cmVhbS0+
cHJpdi0+cGVuZGluZ0FzeW5jUmVhZCA9IG1ha2VVbmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92
ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7CiB9CiAKIHN0YXRpYyBnc3NpemUgd2Via2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbVJlYWRGaW5pc2goR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBkYTg3NjEx
MDY0ODFmOTZhOWQ2YTAwMDE4NGNjZDI0MDdiMWYyNjUwLi41ZWY3YjQ4ZTQyMDgzOWVlZjgwMDgx
MWIwZDk3NDBmNDRlMDFmMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogCiBjbGFzcyBXZWJTb2Nr
ZXRUYXNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJT
b2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgU291cFNlc3Npb24qLCBTb3VwTWVzc2Fn
ZSosIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIH5XZWJTb2NrZXRUYXNrKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oCmluZGV4IDhmMjA1Y2UwMjk3MTNkOGJhMjEzZjE0M2JhNzFiYjExNDc1
MmRlZjUuLjIyYWJkZWM2OWRiMjQ1YTRjZjk4M2YyNDdiMzhmNzJkOTAwYTZmNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTmV0d29ya1JUQ1Byb3ZpZGVyOwogCiBjbGFzcyBMaWJXZWJSVENTb2NrZXRDbGllbnQgZmlu
YWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFVEUCwgU2VydmVyVENQLCBD
bGllbnRUQ1AsIFNlcnZlckNvbm5lY3Rpb25UQ1AgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApp
bmRleCBlNzg2NTY4ZmY1MDVhN2I4NzE3ODcwZGY1N2ZhNTdkMTVmNWQ3NzYzLi45MjY2NjhjMzhm
ZmY3MDhhZTUwMmY1OGZkNDE1Mjg4MDNlYzU1NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApA
QCAtNjQsNiArNjQsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5T
TmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZQogfQogCiBzdHJ1Y3QgUGVu
ZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdChSZWY8SVBDOjpDb25uZWN0aW9u
PiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICA6IGNvbm5lY3Rpb24oV1RGTW92ZShj
b25uZWN0aW9uKSkKICAgICAgICAgLCByZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0SWRlbnRpZmll
cikKQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2VzcwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBzZXNzaW9uSUQpOwor
ICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdSZWdpc3RyYXRpb25S
ZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRp
ZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKICAgICBhdXRvKiByZWNvcmQgPSAmcGVu
ZGluZ1JlcXVlc3QtPnJlY29yZDsKICAgICBhdXRvIGVycm9yID0gRE5TU2VydmljZVJlZ2lzdGVy
UmVjb3JkKHNlcnZpY2UsCiAgICAgICAgIHJlY29yZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAppbmRleCAz
NTNlYWM4Y2UxMWI2OTA2ZWZhZGQyZmQyNzE4Yjk3YWI1MmNkYTRkLi5hYjcwNmRjMmU5MzRhOWE3
ZWY5OTI2ODk3OTc0YmRjNzU0ZWEzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIHZvaWQgTmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQogewogICAgIG1f
aXNTdGFydGVkID0gdHJ1ZTsKICAgICBtX3J0Y1Byb3ZpZGVyLmNhbGxPblJUQ05ldHdvcmtUaHJl
YWQoW3RoaXNdKCkgewotICAgICAgICBtX21hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6
QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgbV9tYW5hZ2VyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogICAgICAg
ICBtX21hbmFnZXItPlNpZ25hbE5ldHdvcmtzQ2hhbmdlZC5jb25uZWN0KHRoaXMsICZOZXR3b3Jr
UlRDTW9uaXRvcjo6b25OZXR3b3Jrc0NoYW5nZWQpOwogICAgICAgICBtX21hbmFnZXItPlN0YXJ0
VXBkYXRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1YWM1NzIxMzc5
ZGIzZDFiMjU4NzU1ODYxMDMwYmJhNGRiOWViOGUuLjE1ZDQ0ZDBhZDlkYjBmM2IwNTk5ZTFhMzNl
ZmNmZGI4OTYxYTY1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCBO
ZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbgogICAgIDogbV9jb25uZWN0aW9uKCZjb25uZWN0aW9uKQog
ICAgICwgbV9ydGNNb25pdG9yKCp0aGlzKQogICAgICwgbV9ydGNOZXR3b3JrVGhyZWFkKGNyZWF0
ZVRocmVhZCgpKQotICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRj
OjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCisg
ICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5n
ZXQoKSkpCiB7CiAjaWYgZGVmaW5lZChOREVCVUcpCiAgICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dU
b0RlYnVnKHJ0Yzo6TFNfTk9ORSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBOZXR3b3JrUlRD
UHJvdmlkZXI6OmNyZWF0ZVNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjoKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYWRkU29j
a2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50Pihp
ZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CisgICAgYWRkU29ja2V0
KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVy
LCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1By
b3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgUlRDTmV0
d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3Qg
bWF4UG9ydCkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6d3Jh
cE5ld1RDUENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgbmV3Qwogewog
ICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIG5ld0Nvbm5lY3Rp
b25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCA9IG1fcGVuZGluZ0luY29taW5nU29ja2V0cy50YWtlKG5l
d0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKTsKLSAgICAgICAgYWRkU29ja2V0KGlkZW50aWZp
ZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAq
dGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZl
ckNvbm5lY3Rpb25UQ1ApKTsKKyAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlx
dWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2Nr
ZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApp
bmRleCAzODM4MmIwOWQ0ZmIzYmUyNjRmODliNzc4NDFhNDFkN2MwOGNhYzA1Li5jNWVmNmQ5OWE1
NjBkZDE0ODhmMTg0OTk1YWU4YTdiMTZkOWFkMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3lu
Y1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgLy8gSGFu
ZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBxdWV1ZSBtZXNz
YWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CkBAIC0zODgsNyArMzg4LDcg
QEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFs
aWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3luY01l
c3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBz
eW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5j
b2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFt
ZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPnNldElzU3luY01l
c3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KQEAgLTc1
Niw3ICs3NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNUaHJv
dHRsaW5nKCkKICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlcyk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyID0gbWFrZVVuaXF1
ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5n
TWVzc2FnZXMpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBvc3RDb25uZWN0aW9uRGlkQ2xvc2VP
bkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29k
ZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8g
cmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVw
bHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gIldyYXBwZWRBc3luY01l
c3NhZ2VGb3JUZXN0aW5nIikgewogICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJvbm91c01vZGVJ
c0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKaW5kZXggMjBmNWVjNWIyMDJiZWMyYmRmNThmMDIwZWJkZWVmODMxNDkzMTFiZi4uYWRjNGFh
ZDk4ODE4ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDMzLDcgKzQzMyw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRP
cHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihU
OjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCks
IGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygp
KTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9w
dGlvbnMpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90CiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0g
ICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5h
bWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgp
OwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CmluZGV4IGNjYTA3MzkwYWRlYzQ0NmRlNzQ2NmNmOGUxMDEyM2MyNzkzODUzNTIuLmZkNTE3MDE3
MTJiMDYyOWQ0NzI1MmQwNDA4OTZjNjRmY2JjYmIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IERlY29kZXI6OnVud3JhcEZvclRlc3RpbmcoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHdyYXBwZWRNZXNzYWdlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5k
YXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50
cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEo
KSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhfdCogcm91bmRVcFRvQWxpZ25tZW50KGNv
bnN0IHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDg1NDUyY2RhN2UwNDVlNDQ1NWUwN2I5M2Jh
ZmNhMzViMTAyMDAxMWUuLmE3NDlhYWI4NzAwNTRjZWI2OTBlNWYxNGY0MDc1NjNmZmNkMGY5Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE4Miw3
ICsxODIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAgICAgfQogCiAgICAgdHlwZW5hbWUg
VDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVy
SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11
dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+
KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOworICAgICAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNN
ZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwog
ICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFy
Z3MuLi4pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVy
LmgKaW5kZXggM2Q2ZjM0Mjg5MmJjODgzOTA2NzhlOGMzNjQ2MzkxMTBkZTRmNTcyNi4uNzcxNDQ4
YTQ0ZDA4ODZkZDAxYmIwYzJkZTY0ZGM5YTQyODYyN2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZXNzYWdl
U2VuZGVyIHsKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6OmlzU3luYywgIk1lc3Nh
Z2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwor
ICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFt
ZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDM3MDJhY2M3ZGY1
MWJkODQ2YjkzYWY2NGJmMDcwYTRjMTAwMzkxOWYuLjg3ZGQyOGY4MDg2NzgyY2UyYTNkZjc5MGY0
YWMwZTZkNzQ5ZGFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikKICAgICAgICAgLCBtX3dhdGNoZG9n
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hk
b2c6OndhdGNoZG9nVGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAg
ICAsIG1fYXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3Nl
cnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdldCgpKSwgIkNv
bm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlvblN0YXRlOjpC
YWNrZ3JvdW5kKSkKKyAgICAgICAgLCBtX2Fzc2VydGlvbihtYWtlVW5pcXVlPFdlYktpdDo6UHJv
Y2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29ubmVjdGlv
bi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0OjpBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG1fd2F0Y2hk
b2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wg
Q29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogICAgICAg
ICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlu
cyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICBhdXRvIGVuY29k
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNvbm5lY3Rp
b24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBD
IiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShN
YWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpOwogCiAgICAg
ICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFk
ZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBib2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhlYWRlci0+
bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKIAotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9y
PEF0dGFjaG1lbnQ+IHsgfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KGJv
ZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsKICAgICB9CiAK
ICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgPT0gb3V0T2ZMaW5l
Qm9keU1lc3NhZ2VJRDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIp
CiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRl
c2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MpOwogICAgICAgICBzaXplX3QgbWVzc2FnZUJv
ZHlTaXplID0gZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuc2l6ZTsKIAotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBb
XShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpIHsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7CiAgICAgICAgICAgICB2bV9kZWFs
bG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190Pihi
dWZmZXIpLCBsZW5ndGgpOwogICAgICAgICB9LCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAg
fQpAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3Jl
YXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICB1aW50OF90
KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAgIHNpemVfdCBtZXNzYWdlQm9keVNp
emUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9yRGF0YSAtIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVj
b2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgbnVsbHB0ciwgV1RGTW92ZShhdHRh
Y2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0KIAogLy8g
VGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVt
IHRyYWlsZXIgc2l6ZS4KQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2Vp
dmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1cm47CiAKICNpZiBQTEFURk9STShN
QUMpCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVl
PEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOworICAgIGRlY29kZXItPnNldEltcG9ydGFu
Y2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKICNl
bmRpZgogCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAm
JiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXplQ29ubmVjdGlvbiIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXgu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
aW5kZXggNjNiNmJlNzI3MWU0NDU4ODM5NTA1YWE5MTVlMzg3M2Y4NTE0ZGVkZC4uNzdhZjliMjg1
ODQ1MjZiYjcwYzdmZmM4ZTMyNTZhM2JhYTEzYTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBA
QCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKCkKICAgICBpZiAobWVzc2FnZUluZm8u
aXNCb2R5T3V0T2ZMaW5lKCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBhdXRvIGRlY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5
U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgYXV0byBkZWNvZGVy
ID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUo
KSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogCiAgICAgcHJvY2Vzc0luY29taW5n
TWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIApAQCAtNDgyLDcgKzQ4Miw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJu
byA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgbV9wZW5kaW5n
T3V0cHV0TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0
cHV0TWVzc2FnZSkpOworICAgICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IG1ha2VV
bmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOwogICAgICAgICAgICAg
bV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9zb2NrZXQuZ2V0KCksIEdfSU9fT1VULCBtX2Nv
bm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4gZ2Jvb2xlYW4gewogICAgICAgICAg
ICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobV9wZW5kaW5nT3V0cHV0TWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggNjQwZjQ1Mjk5ZTNiMjY2ZTAyNjlj
Y2NjYzk0NTJiM2JhNTc5ZWZiMS4uNWFkZmQ4MmJlY2E0NmRiMDI0NDdlOGJjYjZkMzg0YzJjMDE1
NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9u
V2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFu
ZGxlcigpCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3BhdGNoIGl0LgogICAgICAgICAgICAg
VmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKDApOwotICAgICAgICAgICAgYXV0byBkZWNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3Jl
YWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgICAg
ICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29kZXI+KG1fcmVhZEJ1ZmZlci5kYXRh
KCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsK
ICAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKaW5kZXggZGQyYjY2YTdjYTE5NTkxYjZl
ZTY3YjhmMjg0ZmQyNTRhMzgyNzg1ZC4uNTY4MzcyMTNkZmJlYWViNGQ1OWU5M2MzZDQ5ZjZjN2Fj
MmY1MzRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCkBAIC00NCw2ICs0NCw3IEBAIHR5cGVk
ZWYgc3RydWN0IF9HTW9kdWxlIEdNb2R1bGU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNb2R1bGUpOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1vZHVsZShjb25zdCBTdHJp
bmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGlu
Z0NvbnRleHQubW0KaW5kZXggODIzMmRiNGViNTZlYWNiNmY4Y2U4NTU2NjRiOGI3ODJhYjY1MGE5
OC4uN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdmMDJiMDRjZjQ0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0
aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYWNo
U2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVy
SG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAKICAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewogICAgICAgICBrQ0FDb250ZXh0UG9ydE51bWJl
ciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVG
b3JQb3J0KGNvbnN0IE1hCiAjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQog
c3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6
OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4
dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0
aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKICAgICBsYXll
ckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpP
dXRPZlByb2Nlc3M7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCkBAIC04Miw3ICs4Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpCiAjaWYg
UExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVy
SG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MoKQog
ewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJI
b3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5p
cXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9s
YXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogICAgIGxh
eWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1ND
b25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZp
bHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwogICAgIHJldHVybiBsYXllckhvc3RpbmdDb250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oCmluZGV4IDk3ZTJkZjM1M2IzNjgyMzkyOWEzMWFlOTU3YTFkZGNkYzIxYzM3ZDYu
LmI5OGNhOTRiYzllZmMyM2IyZWQ4MThhNWI3ODQzMzcyMzE3ZTljNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTQ5
LDcgKzQ5LDggQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb247CiBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOwogCi1jbGFzcyBQbHVnaW5D
b250cm9sbGVyUHJveHkgOiBQbHVnaW5Db250cm9sbGVyIHsKK2NsYXNzIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eSA6IHB1YmxpYyBQbHVnaW5Db250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5Db250cm9sbGVyUHJveHkp
OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAzNjZiOTgzY2MwYmVhNTgzODYzYTdjZDYzMzNmOTQ4
ZGY3NDg0NDM1Li5jZTgyNjdkMmVlNzhjYWNiM2RkYTBhOWIzNzViZmFhZmM2ODZlZTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbgogCiB2b2lk
IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgYm9vbCYgcmVzdWx0LCBib29s
JiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCkKIHsKLSAg
ICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29u
dHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOworICAgIGF1dG8gcGx1Z2lu
Q29udHJvbGxlclByb3h5ID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJveHk+KHRoaXMs
IGNyZWF0aW9uUGFyYW1ldGVycyk7CiAKICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBsdWdp
bkNvbnRyb2xsZXJQcm94eVB0ciA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS5nZXQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IGJiZDQyM2JjZjU3MTVlNGFkNzBiZjUyZGVmOGMy
YzMwYzQxYmYwZjYuLjNlNjFiYmQwMDBlMWY0Y2RiNmMyYTM2Y2E0Zjc1ZTkwNGY4MzVjZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgVVJMIDog
cHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsKICAgICB7CiAgICAgICAgIEFT
U0VSVChiYXNlVVJMKTsKICAgICAgICAgYmFzZVVSTC0+cGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oKmJh
c2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CisgICAgICAgIGF1dG8gYWJz
b2x1dGVVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0
KCksIHJlbGF0aXZlVVJMKTsKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGFic29sdXRlVVJM
U3RyaW5nID0gYWJzb2x1dGVVUkwtPnN0cmluZygpOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFQSTo6VVJMKFdURk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykp
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBpZiAobV9wYXJzZWRVUkwpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6
OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IG1ha2VV
bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6
OlN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KaW5kZXggMjU5Mjg0N2UzNDFhM2I2Zjcy
ODc1NGJkNzg4YTY2NTNkZDIyMTViMC4uZDNmZjYyMWVjMGY0YTEwZDc1NjQ4N2NjMjE2ZjQ5NWNl
ODZkNzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90
ZU9iamVjdEludm9jYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZW1vdGVP
YmplY3RJbnZvY2F0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVPYmpl
Y3RJbnZvY2F0aW8KICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibG9ja1NpZ25hdHVyZSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWdu
YXR1cmUpKTsKKyAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxSZXBseUlu
Zm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUpKTsKICAgICB9CiAKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCA2NWRhOWVmZjAxYjQzZWE1NzEwODAyZjZj
NDZhNmQwMjAyNjU2OTNlLi40ODk5NzYyOTMyYjdhZjY5MjIxZDA1MGFmNjc0NTgzNmZjMzg3YjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgLSAoaWQpX2luaXRXaXRo
V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlJilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBh
Z2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAg
LTExOSw3ICsxMTksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQYWdlUHJveHk6KFdlYktpdDo6V2Vi
UGFnZVByb3h5JilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOworICAgIF9yZW1v
dGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTE2MCw3ICsxNjAsNyBA
QCAtICh2b2lkKV9zZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiBpbnRl
cmZhY2U6KF9XS1JlbW90ZU9iamVjdEludAogICAgICAgICBpZiAoc3RyY21wKFtOU01ldGhvZFNp
Z25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5QmxvY2tTaWduYXR1cmVdLm1ldGhv
ZFJldHVyblR5cGUsICJ2IikpCiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiUmV0dXJuIHZhbHVlIG9mIGJsb2NrIGFyZ3Vt
ZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMpIiwgc2VsX2dldE5hbWUoaW52b2NhdGlvbi5zZWxlY3Rv
cildOwogCi0gICAgICAgIHJlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCks
IHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAgICByZXBseUluZm8gPSBtYWtlVW5pcXVlPFdl
YktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRl
bnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKIAogICAgICAgICAvLyBSZXBsYWNlIHRo
ZSBibG9jayBvYmplY3Qgc28gd2Ugd29uJ3QgdHJ5IHRvIGVuY29kZSBpdC4KICAgICAgICAgaWQg
bnVsbCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAppbmRleCA3ZWQxMWU2YzE3MWUyMGJlMWU5ZWFk
YjMwN2U3MWZjNDhiZmRlODQ5Li5mYWVmZWQyZGNjODM4ZWU5NTczOTA2NWRhYzYzZjEzNTYzZjBk
M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktp
dENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiB3ZWJraXRDb250ZXh0TWVudUl0ZW1DcmVhdGUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSYKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVY
VF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBO
VUxMKSk7CiAKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihpdGVtRGF0YSk7CiAgICAgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBzdWJNZW51ID0gaXRlbURhdGEuc3Vi
bWVudSgpOwogICAgIGlmICghc3ViTWVudS5pc0VtcHR5KCkpCiAgICAgICAgIHdlYmtpdENvbnRl
eHRNZW51SXRlbVNldFN1Yk1lbnUoaXRlbSwgYWRvcHRHUmVmKHdlYmtpdENvbnRleHRNZW51Q3Jl
YXRlKHN1Yk1lbnUpKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KEd0a0FjdGlvbiogYWN0aW9uKQogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19BQ1RJT04oYWN0aW9uKSwgbnVsbHB0cik7CiAKICAg
ICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0o
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0g
ICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51
SXRlbUdsaWI+KGFjdGlvbik7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CiAKICAgICByZXR1cm4gaXRlbTsKIH0K
QEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKEdBY3Rpb24qIGFjdGlvbgogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKCF0YXJnZXQgfHwgZ192YXJpYW50X2lzX29mX3R5cGUodGFyZ2V0LCBnX2Fj
dGlvbl9nZXRfcGFyYW1ldGVyX3R5cGUoYWN0aW9uKSksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGli
PihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOworICAgIGl0ZW0tPnBy
aXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24s
IFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9
CkBAIC0xOTQsNyArMTk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uKFdlYktpdENvbnQKIAogICAgIFdlYktp
dENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKICAgICBDb250
ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxl
KGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZTsKLSAgICBpdGVtLT5w
cml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
dHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0
Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsKKyAgICBpdGVtLT5wcml2LT5tZW51
SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29u
dGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0Q29udGV4dE1lbnVBY3Rp
b25HZXRMYWJlbChhY3Rpb24pKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMjE2LDcgKzIx
Niw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsCiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlw
ZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hl
Y2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENv
bnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0
aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBA
IC0yMzksNyArMjM5LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09O
VEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVN
LCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbUJhc2VB
cHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0ZW0tPnByaXYt
Pm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKICAgICBpdGVtLT5wcml2LT5zdWJNZW51ID0gc3VibWVudTsKICAgICB3ZWJraXRDb250
ZXh0TWVudVNldFBhcmVudEl0ZW0oc3VibWVudSwgaXRlbSk7CiAKQEAgLTI1Niw3ICsyNTYsNyBA
QCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0
aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcih2b2lkKQogewogICAgIFdlYktpdENvbnRl
eHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2
LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oU2Vw
YXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKKyAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
U2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKIAog
ICAgIHJldHVybiBpdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggNWVkMTQzYTk5ODU5
MDQ5NmMzMzc2YTU2OTg4MTE1M2E2YTAyYjI4Yy4uZjMzY2FiMzA1ZmVlMTI3NGZhYTdiMjE4Mzhl
OWJiN2VmNzZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC03Miw2ICs3Miw3IEBAIGNs
YXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVNlbmRlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5PgogICAgICwgcHVibGljIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBD
bGllbnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggN2FkMzMzMTQ1MzkxODg4OWZkM2I5ODk2Mzg2
YThiZWQxZjUxOWExNC4uMzkxNGE0YzIwMTRhOWE1NGE2MzQ4OGE0ZTc0MzgxOWM2YThkYjNhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtNzksNyArNzksNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFTU0VSVCh2aWV3Q29udHJvbGxlcik7
CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNl
bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmlld0Nv
bnRyb2xsZXIpOworICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0
aW9uUHJlc2VudGVyID0gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3
Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNTRVJUKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+
bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0
V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6dmlld0Nv
bnRyb2xsZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRleCA4NmU3NDRjMTA4ZGY0Y2JjZjVk
MDQ3NjA5YWNmOTZjNjgyM2Q2YjE2Li40ZjgzNzAyNGVlNWYzNGZmYTBlNjliYWY3YjNiZmM4ODFh
NTI4MDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtNTUsNiArNTUsNyBAQCBlbnVtIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gOiB1aW50OF90OwogdXNpbmcg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KT47CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0aW9uTWFuYWdlcik7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKE5ldHdvcmtQcm9jZXNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0KaW5kZXggNTZhNzgzYTBiMjNiMjZhMjBjNWI4ZmE0YTU5ZjE1N2E0YzAzN2JiNy4u
MmQ1ZDFhZmMwODI3YTQxYTBiZDgzYmJhYTgwZjc4ZjYxNGY1YmQ3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMzgs
NiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25J
bXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29uc3QgY2hhciog
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBPcHRpb25hbDxwaWRfdD4gcGlkID0g
V1RGOjpudWxsb3B0KQogICAgIHsKQEAgLTE2MCw3ICsxNjEsNyBAQCBhdXRvIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8
SGFuZGxlPgogICAgICAgICByZXR1cm4ge3sgfX07CiAKICAgICBIYW5kbGUgaGFuZGxlOwotICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRl
bnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRh
dGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uID0gbWFrZVVuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7
CiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDE4ZGMyZmI4ZWQxM2QxNTM0MTJlYTMwZTI5MTExNzhl
YWNlZmM1YWUuLjcwNDMwZjQ0MzEyYzhhNTYyY2UxNWZjNzMyZjY5ZDM4NzZmZTljMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBA
QCBUZXh0dXJlTWFwcGVyTGF5ZXImIHRleG1hcExheWVyKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5
ZXImIGNvbXBvc2l0aW9uTGF5ZXIpCiB7CiAgICAgYXV0byYgY29tcG9zaXRpb25TdGF0ZSA9IGNv
bXBvc2l0aW9uTGF5ZXJJbXBsKGNvbXBvc2l0aW9uTGF5ZXIpLmNvbXBvc2l0aW9uU3RhdGUoKTsK
ICAgICBpZiAoIWNvbXBvc2l0aW9uU3RhdGUubGF5ZXIpIHsKLSAgICAgICAgY29tcG9zaXRpb25T
dGF0ZS5sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOworICAg
ICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5
ZXI+KCk7CiAgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXItPnNldElEKGNvbXBvc2l0aW9u
TGF5ZXIuaWQoKSk7CiAgICAgfQogICAgIHJldHVybiAqY29tcG9zaXRpb25TdGF0ZS5sYXllcjsK
QEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZW5zdXJl
Um9vdExheWVyKCkKICAgICBpZiAobV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcm9vdExheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7Cisg
ICAgbV9yb290TGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICBt
X3Jvb3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNl
dERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQzRCgwLCAwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRleCBjZDNlNTdjNmJjYjlkOGRjMWZm
OTljYWQ1OWM0ZTEzZmY2NjAzYTZiLi5iY2IyMzU5NzViMTMzZDJlMjc2NzZkMjgzZmU4OTEzODFh
MGQ1ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmPFRocmVhZGVkQ29tcG9z
aXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVk
RGlzcGwKIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCYgY2xp
ZW50LCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Q2xpZW50JiBkaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZUZhY3RvciwgVGV4dHVyZU1hcHBlcjo6UGFpbnRG
bGFncyBwYWludEZsYWdzKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wYWludEZs
YWdzKHBhaW50RmxhZ3MpCi0gICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChzdGQ6Om1ha2VfdW5p
cXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQor
ICAgICwgbV9jb21wb3NpdGluZ1J1bkxvb3AobWFrZVVuaXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+
KFt0aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgICwgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3Io
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShkaXNwbGF5SUQsIGRpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAppbmRleCAxYTA1NDc1MDdl
YzFjMWE4MTI0NzJiYjdlYmQ5ZmEwZDRhZDEzYTQ4Li4wN2U4YmJjOWI1YzljM2M2YzlkOGQ2YzNi
OTQ1ZTUzOTMyN2I4NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIE5Q
VmFyaWFudERhdGE7CiBjbGFzcyBQbHVnaW47CiAKIGNsYXNzIE5QT2JqZWN0TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5kZXggNjFlMWY5
NDAyNTIzODVkYjgwNWVjMTIyZGZmMWM5ZTRmMWI3MjU2My4uZDRiNTI0YzgyOWVjNjY3MjFkZjFh
NzBkMmQ1MTNhZTRlYjNmM2QyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBOUFJlbW90
ZU9iamVjdE1hcDo6bnBPYmplY3RQcm94eURlc3Ryb3llZChOUE9iamVjdCogbnBPYmplY3QpCiB1
aW50NjRfdCBOUFJlbW90ZU9iamVjdE1hcDo6cmVnaXN0ZXJOUE9iamVjdChOUE9iamVjdCogbnBP
YmplY3QsIFBsdWdpbiogcGx1Z2luKQogewogICAgIHVpbnQ2NF90IG5wT2JqZWN0SUQgPSBnZW5l
cmF0ZU5QT2JqZWN0SUQoKTsKLSAgICBtX3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0
SUQsIHN0ZDo6bWFrZV91bmlxdWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdp
biwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7CisgICAgbV9yZWdpc3RlcmVkTlBP
YmplY3RzLnNldChucE9iamVjdElELCBtYWtlVW5pcXVlPE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVy
Pih0aGlzLCBwbHVnaW4sIG5wT2JqZWN0SUQsIG5wT2JqZWN0KS5yZWxlYXNlKCkpOwogCiAgICAg
cmV0dXJuIG5wT2JqZWN0SUQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCmluZGV4IDdi
MDJiNWUxMmYzMmM3MmQzOGY1MjA0NWJiNmQ2YTIzYjYyYWUyZTEuLjI2MWQ3YTg5NjkzMDZhODky
NWM0YWIzNmU0Nzk0N2IzOTZjMTI1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBA
IC0yMDYsNyArMjA2LDcgQEAgc3RhdGljIGJvb2wgbW9kdWxlTWl4ZXNHdGtTeW1ib2xzKE1vZHVs
ZSogbW9kdWxlKQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKIHsKLSAg
ICBtX21vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtX3BsdWdpblBhdGgpOworICAg
IG1fbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7CiAgICAgaWYgKCFt
X21vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggZWEyYmU5MzA4Y2JiZTZkZDdlYjhjZjJjNTg4YzhmZjYx
OWVhOTkzYy4uOTU1MTNmNDc5ODJmZDY3ZWU1Zjk4ZGQ3OTk2Yzg1OThmMWY0NjNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgRW5j
b2RlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBM
YXllckNoYW5nZSB7CiAgICAgICAgIE5hbWVDaGFuZ2VkICAgICAgICAgICAgICAgICAgICAgPSAx
TExVIDw8IDEsCkBAIC05NCw2ICs5NSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uIHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllckNyZWF0
aW9uUHJvcGVydGllcygpOwogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwpAQCAtMTA5LDYgKzExMSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
IHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVyUHJvcGVydGllcyB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVzKCk7CiAg
ICAgICAgIExheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRpZXMmIG90aGVyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDFmMmRlNGQwMzdlYTNlODMw
Mjg3YWI5OGNiMmE4ZjIxYzRlY2VhMmUuLjBkMjI3ZmZjMWQ5YzU1NTZhYWQ5MmU3ZWUxNTc2NWUx
NmIzNDQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTE1Miwx
MyArMTUyLDEzIEBAIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6
OkxheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRpCiAgICAgLy8gRklYTUU6IExheWVy
UHJvcGVydGllcyBzaG91bGRuJ3QgYmUgY29weWFibGU7IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
Y2xvbmUgc2hvdWxkIGNvcHkgdGhlIHJlbGV2YW50IHByb3BlcnRpZXMuCiAKICAgICBpZiAob3Ro
ZXIudHJhbnNmb3JtKQotICAgICAgICB0cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKKyAgICAgICAgdHJh
bnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVy
LnRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pCi0gICAgICAg
IHN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKKyAgICAgICAgc3VibGF5ZXJU
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3Ro
ZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOwogCiAgICAgaWYgKG90aGVyLmZpbHRlcnMpCi0gICAgICAg
IGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCpv
dGhlci5maWx0ZXJzKTsKKyAgICAgICAgZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQudHJhbnNmb3JtID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAg
cmVzdWx0LnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGll
cyAmIFN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCkgewpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFuc2Zvcm0p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5zdWJsYXllclRy
YW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+
KHRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAg
ICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEhpZGRlbkNoYW5nZWQpIHsKQEAgLTQy
NSw3ICs0MjUsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocm91bmRlZFJlY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKLSAgICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICAgICAgcmVzdWx0LnNo
YXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJv
dW5kZWRSZWN0KTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYg
U2hhcGVQYXRoQ2hhbmdlZCkgewpAQCAtNDcxLDcgKzQ3MSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNGcm9udEJ1ZmZlcikpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChoYXNGcm9udEJ1ZmZlcikgewotICAg
ICAgICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlPihudWxscHRyKTsKKyAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3JlID0g
bWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7CiAgICAgICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKCpiYWNraW5nU3RvcmUpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIApAQCAtNDg2LDcgKzQ4Niw3IEBAIGJvb2wgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYg
RmlsdGVyc0NoYW5nZWQpIHsKLSAgICAgICAgYXV0byBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigpOworICAgICAgICBhdXRvIGZpbHRlcnMgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoKmZpbHRlcnMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICByZXN1bHQuZmlsdGVycyA9IFdURk1vdmUoZmlsdGVycyk7CkBAIC02MDIsNyArNjAyLDcgQEAg
Ym9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgUmVtb3RlTGF5ZXJUcmVlVHIKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXll
cklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExh
eWVyUHJvcGVydGllcz4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGll
cz4gbGF5ZXJQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmxheWVyUHJvcGVydGllcykpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcAppbmRleCA5NzhjNGJiZWQ3YjVjZDkxY2FhZWMxNTRiYzhiYTE0YmFi
NzUzNDYxLi5lODI2YTMwYjEyZTI0ZWNmNDMwYzY5Yjc2YjFhNmYyOGY1YmI5OGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBA
IC01MjIsNyArNTIyLDcgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzTmV3Um9vdE5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgbV9z
Y3JvbGxpbmdTdGF0ZVRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4o
KTsKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVU
cmVlPigpOwogCiAgICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydGllczsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc0NoYW5nZWRQcm9wZXJ0aWVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCBjNzM0N2M3OWU2Njkz
ODM3ODVkMDVkMjI5ZTQ3Yjc0N2MxZjBjYTU1Li5iMmNkNDg0NjY3N2NlOTdkZmFjMjg1ODQ5MGMx
ZWE0MzRmOTYyOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFy
ZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkK
IHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZSA9IGNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOwogICAgIFJlZlB0cjxjYWlyb190PiBiaXRtYXBDb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9f
Y3JlYXRlKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFw
Q29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4o
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0
KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4
IDkyZjEwNjJiMjkwZjc3NWRiNWFlN2VkMTk1MmE5Y2E4NThhYjMxMjIuLjAxNmFiYmQ5OTNlMThh
NDVjMDFhN2YwNDk3ZGNjMzFhNTNiNDM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDAsIG1f
c2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oYml0bWFwQ29udGV4dC5nZXQo
KSwgMSwgLTEpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
PihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0Nv
bnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCmluZGV4IDYwZjhmM2Ni
NzMyODliNmIwZDJmNGMzNTE0NmYxY2ZlZDQwMzRhODAuLjEwMDFlZTNlNTI5MmVkY2I1MzZmODIz
MzAzYzJjNzRjMmIxZTkyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9T
aGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpCiB7CiAgICAgbV9iaXRtYXAgPSBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKTsKICAgICBD
T01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IGJpdG1hcENvbnRleHQgPSBEaXJlY3QyRDo6Y3JlYXRl
UmVuZGVyVGFyZ2V0RnJvbVdJQ0JpdG1hcChtX2JpdG1hcC5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVh
dGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRt
YXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBv
aW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKaW5kZXggMjk5NTgxMDk1ZGQxZDFiMTVhZmVh
YmI0ZGFjYmVkMDVkMmJkZDExNC4uNTQ1YTdiZTRkNDgxOTcxMzI4ZDFjM2Y3OWQyNzFlZDlhMjFm
ODM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRp
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlv
bkNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkF1dG9tYXRpb25DbGllbnQoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlv
blNlc3Npb25DbGllbnQuaAppbmRleCAyOGZhZjY4NzE5YTlkNzI4ZDUxYjZjNzcyZDg0ZTE3YjY0
OTA5N2NhLi4yYWUyYTUwMzRjM2E0MTcxY2NmNDc3Yjk3ODViNzNhNmYyNGRiODE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIEF1dG9tYXRpb25TZXNzaW9uQnJvd3Np
bmdDb250ZXh0T3B0aW9ucyA6IHVpbnQxNl90IHsKIH07CiAKIGNsYXNzIEF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIEphdmFTY3JpcHREaWFsb2dUeXBlIHsKICAgICAgICAgQWxlcnQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCmluZGV4
IGFmMTA5YzFkZjY3MDBkYzIzZTJlMzMxYjBiNTBlZmJjZmY0Mjg2NjcuLjgxNmY3MWUxMjY3MGNi
M2Q2NWIxZTYzMjgwM2E2YjQwZWY3ZGJmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBDb250ZXh0TWVudUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
Q29udGV4dE1lbnVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmluZGV4IDBm
OGNhYjk3MzI5ZjA5NTdmMzJiNDdjMjc3ODFkMWU3ODZmYTE0N2QuLjhiNDRhM2Y0NTZjNTMyYWQz
MzgwNmVmNjliNDdlYWQwOTQxZGY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTM4
LDYgKzM4LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNs
YXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURp
YWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKaW5kZXggOTJiMmQ2NzVkZmNhMmNhZmRhMjExYjNmNzFj
NTc5OGFmZDQ1ZDYyYS4uYjRlMmFkZTcyOWVhNjZkOGRkYThkZDUwMjExOGFlNGFiZGIyMTg2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0
aWNMb2dnaW5nQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFz
cyBEaWN0aW9uYXJ5OwogCiBjbGFzcyBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RG93bmxvYWRDbGllbnQuaAppbmRleCAwMjM3NmUxZTExMGQ0NzZlYjJiOTE4NWU0ZTJmY2Q4ZDZl
MTMzMmUxLi5iMmVhY2M5YjgzMjU5OGIxN2E5OWRiZDlkNjdlZjI0ZTQ3M2FlZDE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApAQCAtNDYs
NiArNDYsNyBAQCBlbnVtIGNsYXNzIEFsbG93T3ZlcndyaXRlIHsgTm8sIFllcyB9OwogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIERvd25sb2FkQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVudCgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAppbmRleCBmMzEyM2Fm
MTk1MTY1YTY2OWQ2NjY4MzE4YjgxMmU5MzM2NWU2ZGMyLi42ZDFlM2IyMTFmZTBkZDk1YTk0ODUw
NTg0MTdkYjRkZTA4MjQwZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRmluZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
aW5kQ2xpZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIEZpbmRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbmRDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaAppbmRleCBj
NmY0NTczNDJkMTExOTAxZGNhNmQzYzMwOTAzMzdmZWU3YTFmZWMyLi5mYWUxZGNkM2NkNjg4MzUw
N2VmYmUzZDk1ZDVkNmY3MmEwMzY5ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRmluZE1hdGNoZXNDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkZp
bmRNYXRjaGVzQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGb3JtQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Rm9ybUNsaWVudC5oCmluZGV4IDViMGM2Y2NhMjRlZWZjMWE5NTgxOTFlMGUyNzk0YTQ3YjRmNTRl
N2MuLmYwY2EwNjAxMTE5ODAyZWQzNjliNGQwNzhkODNjODYyYTUxNjEyZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgRm9ybUNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9ybUNsaWVu
dCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVs
bHNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3Jl
ZW5DbGllbnQuaAppbmRleCAxMzc1NTI5Y2RhMjVmMjVjYmIxNzliZGM4OTg5MTcxYzg5ZWU4ODU3
Li44OTc0Y2QxMzM5NDc3NTAyNzNmNDUwZjBlODM5NmMwZTZiMTMyMDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKQEAgLTMyLDYg
KzMyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEZ1
bGxzY3JlZW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGVudW0gVHlwZSB7CiAgICAgICAgIEFQSVR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaAppbmRleCA1MjY2YmMyY2E1
NGNmMDk5YzIzOGNhY2M2MjE0NGM5Nzk5YTA5Nzk3Li43YzZmNTYyOWNiNjBlNTNiYzdiODVhYTg4
ODlmNzJlNjhkN2E0YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgR2VvbG9jYXRp
b25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+R2VvbG9jYXRpb25Qcm92aWRlcigpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCmluZGV4IDk4MWE5ODViYmRl
NWYxY2I2NWY5NmNiYjIxMzlmYmNmMTlkN2RjZTUuLmUxMjJlZTNlZGIxYzQyMTlkMWQ4NDE5OTMy
MWE4MDAzZDUyYzgyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBIVFRQQ29va2ll
U3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQogCiAgICAgQVNTRVJU
KCFtX29ic2VydmVkQ29va2llTWFuYWdlclByb3h5KTsKIAotICAgIG1fY29va2llTWFuYWdlclBy
b3h5T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9i
c2VydmVyPigqdGhpcyk7CisgICAgbV9jb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9IG1ha2VV
bmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsKIAogICAgIGF1
dG8qIHBvb2wgPSBtX293bmluZ0RhdGFTdG9yZS0+cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdl
T3BlcmF0aW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSGlzdG9yeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3Rv
cnlDbGllbnQuaAppbmRleCBmY2Y0NjA2MWY2YmZhNmRjYjc2MGUxMmM2NjMzYjZiNDVmMTU2ZGQ0
Li4xMTg0YWE0MzJjM2I5ZmZjYjE1ZGE1ZjgyOGVmNGFjNGYxYWRiMWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKQEAgLTM1LDYgKzM1LDcg
QEAgc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgSGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SGlzdG9yeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKaW5kZXggZWE5ZWJhNTBl
MWVmZThmMDMyMWM0ZGZlM2E0NDZmMGRjYmI1ZDhjOS4uYmU0M2FlZWM1NGZmMmQ0YWJiNWEyOGZm
MzYzMTQ1YzQ5MGM3ZTg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUljb25EYXRhYmFzZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJY29uRGF0YWJhc2VDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBXZWJJY29u
RGF0YWJhc2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkRhdGFiYXNlQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JY29u
RGF0YWJhc2VDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCA2ZjllN2FmOWM5ODA5MjMzYjZhNTY1ZWMz
ZTM4MGJlMGFhY2Q1NjdlLi4yZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdD
bGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JY29uTG9hZGluZ0NsaWVudCgpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCmluZGV4IGMzNWU3YjNhZTQ5M2Q5YWM2M2NiM2E0YjU4MWZlMzJmY2I0MGFjZTgu
LjlkNDM0ODlhMmQ2MjU3Y2IwY2FmOTIyYjNmYjA5MzI5NWNlOWJiOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBA
IC0zNyw2ICszNyw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEluamVjdGVkQnVuZGxlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZUNsaWVudCgpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAppbmRleCBjYmI5ZTBhOTcxNDViZDE3ZGRlZjhlMGJi
MTRhZjhjMzc2ZGZiMzg4Li5kYjVkOTBjMzFmOTI3NjlkMzAzYTAxYWQ3OGJkYTdmYmQxYTRkMDE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBzdHJ1Y3QgV2ViTmF2
aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCmluZGV4IDM0OGQ2YmY3NzI5
MjcyZThmMmFiYWVjMzc1NWMyMGRlNTQyZDY0NWQuLmIyZWE0MWQ5ZTJmMmU4MWUyYzllYjNiODc3
OTFmYzNlZjhjM2YwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9h
ZGVyQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgTmF2aWdhdGlvbjsKIGNsYXNzIE9i
amVjdDsKIAogY2xhc3MgTG9hZGVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0
KikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAppbmRleCBhNmUwMTljYzQ1MTg2M2E0MWFjZmM4YmVhN2JmMzAyODk2YjFiYjczLi5j
ZDIyYTI2NzY0NjhkMTgyMzRhNjA4NDJmZTlkOTE2NzFiMjBhODdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTczLDYgKzcz
LDcgQEAgY2xhc3MgTmF2aWdhdGlvblJlc3BvbnNlOwogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBO
YXZpZ2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5OYXZpZ2F0aW9uQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAppbmRleCA1ZWJlNDQwNzQyYTc2NTQxYjFk
OWNjZjI5OTVjOWE5NWZlODRkNWFkLi42YWU4ZTc1MjA1ZmZmYzg2NTJmNGY5YjgzYmIzZGUzMGVl
NmNmYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiBj
bGFzcyBQb2xpY3lDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgflBvbGljeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGQ5ZGQwZGI0NjYzNzcyMmI2MDJiMjBkZGRmNjcz
ODEzNWY2NDZmNjIuLjc3MmRhNmU1YTg2OTc3ZWM4YWUyZGMwNzU0MmQ4ZmNmMWUxNDk2MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC03MSw2ICs3MSw3
IEBAIGNsYXNzIE9wZW5QYW5lbFBhcmFtZXRlcnM7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAog
Y2xhc3MgVUlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IGFmY2U3MGI2MjdmZWVmN2I1YmY4ODI4OWFkODIyZjE5
YzE5Y2RiNmYuLjNkMDE2MTFjMDI5ZjkzZjVjZTNlNWViM2UzMDY0NzQ4ODlhYjhmM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29u
c3QgV0tDb250ZXh0Q2xpZW50QmFzZSogd2tDbAogCiB2b2lkIFdLQ29udGV4dFNldEluamVjdGVk
QnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKGNv
bnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktp
dDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVl
PFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTE1Niw3ICsx
NTYsNyBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogICAgIH07CiAKICAgICBXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCA9ICpXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKTsK
LSAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9y
eUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xpZW50KG1h
a2VVbmlxdWU8SGlzdG9yeUNsaWVudD4od2tDbGllbnQpKTsKIAogICAgIGJvb2wgYWRkc1Zpc2l0
ZWRMaW5rcyA9IHByb2Nlc3NQb29sLmhpc3RvcnlDbGllbnQoKS5hZGRzVmlzaXRlZExpbmtzKCk7
CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHREb3dubG9hZAogICAgICAgICB9
CiAgICAgfTsKIAotICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3dubG9hZENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdl
YktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPERv
d25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rp
b25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rp
b25DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCAxMWI4MzRiNGVlMmE5YTY4
NzYyNmM3MzJiZjU4YTQ4ODIzZjYzMzRhLi44ODhiNzViYzdjZWM4OWQxNmUwN2Y2MTdlN2JiMmNl
Mjk3OWZhNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dl
b2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdLVHlwZUlEIFdLR2Vv
bG9jYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdlclNl
dFByb3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwg
Y29uc3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKLSAgICB0b0lt
cGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CisgICAgdG9JbXBsKGdlb2xvY2F0
aW9uTWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92
aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyUHJvdmlk
ZXJEaWRDaGFuZ2VQb3NpdGlvbihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1h
bmFnZXJSZWYsIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBwb3NpdGlvblJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCmluZGV4IGIyMjNkNmY4N2JmYTVlOTZlM2U1MGRhMmRkNzhmZjBkMmRkNDE2Y2UuLjc2OTIz
OTkwYWI1YjllYTIxMzg1ZjFkMzU2OWU4YjUwYWE3ZjY1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBXS1R5cGVJRCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQog
CiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZiBtYW5hZ2VyUmVmLCBjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyQmFzZSogd2tQ
cm92aWRlcikKIHsKLSAgICB0b0ltcGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAgICB0b0lt
cGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJS
ZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKaW5kZXggNDdlYzcyNmIwY2U0NDA1N2YwMDJiNTQwYmVhNzY4ZTQzYjEwYThk
NC4uNjFhNjliMWYzYTZkYTc0OTZhZDQ3MjY5NzBiODVmMmM5MTE4MTNmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZUNvbnRleHRNZW51Q2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJl
ZiktPnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGll
bnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250ZXh0TWVudUNsaWVu
dChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKQEAgLTk1
Nyw3ICs5NTcsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogCiB2b2lkIFdLUGFnZVNldFBh
Z2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFn
ZVJlZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFn
ZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJQYWdlRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0Ns
aWVudCkKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbAogICAgICAg
ICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEZpbmRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9p
ZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0
IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDM4LDcgKzEwMzgs
NyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5k
TWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRN
YXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8RmluZE1hdGNoZXNDbGllbnQ+KHdrQ2xpZW50KSk7CiB9
CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAt
MTA0OCw3ICsxMDQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnUKIAogdm9pZCBXS1BhZ2VT
ZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2ViRm9ybUNsaWVudD4od2tDbGllbnQp
KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTExOTksNyArMTE5
OSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKIAogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFn
ZVByb3h5ID0gdG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgYXV0byBsb2FkZXJDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPExvYWRlckNsaWVudD4od2tDbGllbnQpOworICAgIGF1dG8gbG9hZGVyQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KTsKIAogICAgIC8vIEl0IHdv
dWxkIGJlIG5pY2UgdG8gZ2V0IHJpZCBvZiB0aGlzIGNvZGUgYW5kIHRyYW5zaXRpb24gYWxsIGNs
aWVudHMgdG8gdXNpbmcgZGlkTGF5b3V0IGluc3RlYWQgb2YKICAgICAvLyBkaWRGaXJzdExheW91
dEluRnJhbWUgYW5kIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUuIEluIHRo
ZSBtZWFudGltZSwgdGhpcyBpcyByZXF1aXJlZApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQ
b2xpY3lDbGllbnRCYXNlKgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0UG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2xpZW50Pih3a0NsaWVu
dCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50KG1ha2VVbmlxdWU8UG9s
aWN5Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIwNzUs
NyArMjA3NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgIH0KICAgICB9Owog
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xp
ZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQobWFrZVVu
aXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdh
dGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWVu
dEJhc2UqIHdrQ2xpZW50KQpAQCAtMjI5MywxNjQgKzIyOTMsMTY2IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmln
YXRpb25DbGllCiAgICAgd2ViUGFnZVByb3h5LT5zZXROYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlx
dWVSZWY8TmF2aWdhdGlvbkNsaWVudD4od2tDbGllbnQpKTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQ
YWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xp
ZW50KQotewotICAgIGNsYXNzIFN0YXRlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50
PFdLUGFnZVN0YXRlQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7
Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBTdGF0ZUNsaWVudChjb25zdCBXS1BhZ2VT
dGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgaW5pdGlhbGl6
ZShjbGllbnQpOwotICAgICAgICB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB3aWxsQ2hh
bmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorY2xhc3MgU3RhdGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpD
bGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2Vy
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBTdGF0ZUNsaWVudChjb25zdCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKKyAgICB7
CisgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICB9Citwcml2YXRlOgorICAgIHZvaWQg
d2lsbENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZykKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRp
bmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hh
bmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlk
Q2hhbmdlSXNMb2FkaW5nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5k
aWRDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAg
ICAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
VGl0bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlk
Q2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZv
aWQgZGlkQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRDaGFuZ2VUaXRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAg
ICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUFjdGl2
ZVVSTCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VB
Y3RpdmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFu
Z2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAg
dm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJM
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVV
UkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxs
Q2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25s
eVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAg
IHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3Vy
ZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9p
ZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSGFz
T25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3Vy
ZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9p
ZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZv
aWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VF
c3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlRXN0
aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJp
ZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29C
YWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAg
IHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjaykK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VD
YW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQg
ZGlkQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9
CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VD
YW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZv
aWQgd2lsbENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNh
bkdvRm9yd2FyZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtS
ZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgd2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Q
cm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5n
ZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VO
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlTmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3Mo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hh
bmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUNl
cnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50Lndp
bGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNlcnRp
ZmljYXRlSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAg
ICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUlu
Zm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxs
Q2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZVdl
YlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAg
fQorICAgIHZvaWQgd2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9u
c2l2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZVdl
YlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAK
LSAgICAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNz
SXNSZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50
LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRTd2FwV2ViUHJvY2Vzc2VzKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2Vz
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN3YXBX
ZWJQcm9jZXNzZXMobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgIH07
CisgICAgdm9pZCBkaWRTd2FwV2ViUHJvY2Vzc2VzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KK307CisKK3ZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKK3sKICAgICBpZiAoY2xp
ZW50KQotICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6
Om1ha2VfdW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKKyAgICAgICAgdG9JbXBsKHBhZ2Up
LT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobWFrZVVuaXF1ZTxTdGF0ZUNsaWVudD4oY2xpZW50
KSk7CiAgICAgZWxzZQogICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNl
cnZlcihudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KaW5kZXggZjc2M2FmNjAwM2RhNDY2NzM2MzFlOTFl
YTgxYjgzYjVjOTdhMDg3ZC4uMzVlZjkyMjE1NGUxOTYzMDBlNGI2ZWU3NWQ0Yzk4MTc4NWJjM2Uy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVBy
aXZhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFn
ZVByaXZhdGVNYWMubW0KQEAgLTUyLDcgKzUyLDcgQEAgLSAoaWQpaW5pdFdpdGhQYWdlOihSZWZQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYpcGFnZQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgX3BhZ2UgPSBXVEZNb3ZlKHBhZ2UpOwotICAgIF9vYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYsIEAiVVJMIik7CisgICAgX29i
c2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwg
QCJVUkwiKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfb2JzZXJ2
ZXIpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L3dwZS9XS1ZpZXcuY3BwCmluZGV4IDc4YmJhMzk2N2I2MTk3YzBlOGE3YzIzYWMzZGE4Y2QxMzJl
N2M0YmUuLjk2NDA2ZDBhYWZiYzM1NTU2MGI1ZDMxOTdhMDBjMjVmNTc1OWEzZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCkBAIC02OCw1ICs2OCw1
IEBAIHZvaWQgV0tWaWV3U2V0Vmlld0NsaWVudChXS1ZpZXdSZWYgdmlldywgY29uc3QgV0tWaWV3
Q2xpZW50QmFzZSogY2xpZW50KQogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbCh2aWV3
KS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Vmlld0NsaWVudD4oY2xpZW50KSk7CisgICAg
dG9JbXBsKHZpZXcpLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDI2NTU1NGYzZDdmMmQ3YWQy
OTZlOWYzZjlmYTExMzg4Yjc4ZmQ1NjQuLjQ5Njc3ODhhMTA1N2ZhODgyYTBhMDFjOGRiZjUwMDJl
OTIyNmVjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjAyLDcgKzYw
Miw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhQYWdlUmVmOihXS1BhZ2VSZWYpcGFnZVJl
ZgogCiAgICAgX3BhZ2UgPSBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKTsKIAotICAgIF9wYWdlTG9h
ZFN0YXRlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9i
c2VydmVyPihzZWxmKTsKKyAgICBfcGFnZUxvYWRTdGF0ZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZik7CiAgICAgX3BhZ2UtPnBhZ2VMb2Fk
U3RhdGUoKS5hZGRPYnNlcnZlcigqX3BhZ2VMb2FkU3RhdGVPYnNlcnZlcik7CiAKICAgICBBU1NF
UlQoIWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJNYXAoKS5jb250YWlucyhfcGFnZS5nZXQoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JlLm1tCmluZGV4IDEzNzJjYTQxMDZjNzZlMWQ2MjM1ZDYxNGFkNWMxZTZhNTZlYTA1
YTEuLjgxZDM3MDNiMGVlYTgyZTVlNmM2MmYzMjIyYWM0ZTY4MTlmNmIzYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUu
bW0KQEAgLTEwOCw3ICsxMDgsNyBAQCAtICh2b2lkKWFkZE9ic2VydmVyOihpZDxXS0hUVFBDb29r
aWVTdG9yZU9ic2VydmVyPilvYnNlcnZlcgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKKyAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPihv
YnNlcnZlcik7CiAgICAgX2Nvb2tpZVN0b3JlLT5yZWdpc3Rlck9ic2VydmVyKCpyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBiYWNlNWFjN2VjMDBiMTg5OGFkMmRmNzJjYjFi
MTk0NDY3ZGNlYzlkLi5lYmFjNTY4ZTNkZGI2ODcwZjg1YjAxNTA4ZWMyMGZhYWI3ZjIwNGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQpAQCAtMzczLDcgKzM3Myw3IEBAIC0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93
bmxvYWREZWxlZ2F0ZQogLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25s
b2FkRGVsZWdhdGU+KWRvd25sb2FkRGVsZWdhdGUKIHsKICAgICBfZG93bmxvYWREZWxlZ2F0ZSA9
IGRvd25sb2FkRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUp
KTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0
b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC0zODQsNyArMzg0LDcgQEAg
LSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQogLSAodm9p
ZClfc2V0QXV0b21hdGlvbkRlbGVnYXRlOihpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilhdXRv
bWF0aW9uRGVsZWdhdGUKIHsKICAgICBfYXV0b21hdGlvbkRlbGVnYXRlID0gYXV0b21hdGlvbkRl
bGVnYXRlOwotICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0b21hdGlvbkRlbGVnYXRl
KSk7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8V2Vi
S2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKIH0KIAog
LSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXgg
OGI2ZGYyNGY4OTUyZDg0ZjYwNzU0NGM2YTMxYTJkZDFiOGFhMzU1ZC4uYTAwYjIwM2NjOTA1OTMw
MWJlY2M0NjFkNjFiNDY3MzJiODU2MTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAt
MTE4LDYgKzExOCw3IEBAIC0gKHZvaWQpcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cwogfQogCiBj
bGFzcyBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYktpdDo6
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZShXS1VzZXJD
b250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+
IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9s
bGVyKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAKIC0gKHZvaWQpYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFu
ZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6
OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRN
ZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSks
IG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBo
YW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlx
dWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRs
ZXIsIG5hbWUpLCBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwog
ICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVz
c2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5h
bWVdOwogfQpAQCAtMjI5LDcgKzIzMCw3IEBAIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTdHlsZVNo
ZWV0c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXCiAKIC0g
KHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxl
cj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNTdHJpbmcgKiluYW1lIHVzZXJDb250ZW50
V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgYXV0
byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVz
c2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50
V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYs
IHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVzZXJDb250ZW50V29ybGQtPl91
c2VyQ29udGVudFdvcmxkKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+
YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1w
dCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBh
bHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAzOTFhMTk5MmUzNTMyZGJlNWYyMWRiNjkxZGQ4
MTA4YWFlMmE2NmMuLjA4ZjQyZWM4YjEzYmY3MGJkMmI2YjM3YmM3ZDgxNTY4MjNkNmM2ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
NzU3LDcgKzc1Nyw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIF9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBs
PihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsK
KyAgICBfaW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwg
cHJvY2Vzc1Bvb2wsIHBhZ2VDb25maWd1cmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgX3BhZ2UgPSAm
X2ltcGwtPnBhZ2UoKTsKIAogICAgIF9pbXBsLT5zZXRBdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRl
bnRJbnNldHModHJ1ZSk7CkBAIC03NjksMTQgKzc2OSwxNCBAQCAtICh2b2lkKV9pbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9u
CiAKICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudChjb25m
aWd1cmF0aW9uLl9hcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KTsKIAotICAgIF9u
YXZpZ2F0aW9uU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
PihzZWxmKTsKKyAgICBfbmF2aWdhdGlvblN0YXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZT4oc2VsZik7CiAgICAgX3BhZ2UtPnNldE5hdmlnYXRpb25DbGllbnQoX25hdmln
YXRpb25TdGF0ZS0+Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpKTsKIAotICAgIF91aURlbGVnYXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOwotICAgIF9wYWdl
LT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxm
KSk7Ci0gICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOworICAgIF91aURlbGVn
YXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOworICAgIF9wYWdlLT5z
ZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7CisgICAg
X3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOwogCi0gICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7Cisg
ICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdE
ZWxlZ2F0ZT4oc2VsZik7CiAKICAgICBfdXNlUGxhdGZvcm1GaW5kVUkgPSBZRVM7CiAKQEAgLTM0
MjUsNyArMzQyNSw3IEBAIC0gKHZvaWQpc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXM6KEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uCiAgICAgX2FsbG93c0JhY2tG
b3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXM7CiAKICAgICBpZiAoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgJiYg
IV9nZXN0dXJlQ29udHJvbGxlcikgewotICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2UpOworICAg
ICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyPigqX3BhZ2UpOwogICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmluc3RhbGxT
d2lwZUhhbmRsZXIoc2VsZiwgW3NlbGYgc2Nyb2xsVmlld10pOwogICAgICAgICBpZiAoV0tXZWJW
aWV3ICphbHRlcm5hdGVXZWJWaWV3ID0gW19jb25maWd1cmF0aW9uIF9hbHRlcm5hdGVXZWJWaWV3
Rm9yTmF2aWdhdGlvbkdlc3R1cmVzXSkKICAgICAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+
c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShhbHRlcm5hdGVXZWJWaWV3LT5f
cGFnZS5nZXQoKSk7CkBAIC01Njc4LDcgKzU2NzgsNyBAQCAtICh2b2lkKV9zZXRJbnB1dERlbGVn
YXRlOihpZCA8X1dLSW5wdXREZWxlZ2F0ZT4paW5wdXREZWxlZ2F0ZQogICAgIH07CiAKICAgICBp
ZiAoaW5wdXREZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50
KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2Ut
PnNldEZvcm1DbGllbnQobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KaW5kZXggN2FkMDcz
YjhjZDZkZDQyMDNlMWE3NjA1OGY3YzdkZjJhOWY4YWQ3Yi4uMmFkZWVhNzYwYzY5OGIxOGFlNTkx
ZTU3MDU3MTMyOTVmMjRjNTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpAQCAtNzIsNyArNzIsNyBA
QCAtIChpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4pZGVsZWdhdGUKIC0gKHZvaWQp
c2V0RGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQog
ewogICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIF9zZXNzaW9uLT5zZXRDbGllbnQoZGVs
ZWdhdGUgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+
KGRlbGVnYXRlKSA6IG51bGxwdHIpOworICAgIF9zZXNzaW9uLT5zZXRDbGllbnQoZGVsZWdhdGUg
PyBtYWtlVW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KGRlbGVnYXRlKSA6
IG51bGxwdHIpOwogfQogCiAtIChOU1N0cmluZyAqKXNlc3Npb25JZGVudGlmaWVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggYjM3YjA1MDUzZjEy
NGFjYjcwZmQ2YWRlNmRmNDIwZmU4MjVkNTRjZi4uMGRkNDA5YTQzZGU2NTMwMGM5ZjBjYzg1NDQ3
YWMyZjcxM2VjOTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbQpAQCAtMzgsNiArMzgsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgZmluYWwgOiBwdWJsaWMgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIF9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50KF9XS1JlbW90ZVdl
Ykluc3BlY3RvclZpZXdDb250cm9sbGVyICpjb250cm9sbGVyKQogICAgICAgICA6IG1fY29udHJv
bGxlcihjb250cm9sbGVyKQpAQCAtNzUsNyArNzYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eSA9IFdlYktp
dDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSgpOwotICAgIG1fcmVtb3RlSW5zcGVj
dG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5Q2xpZW50PihzZWxmKTsKKyAgICBtX3JlbW90ZUluc3BlY3RvckNsaWVudCA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudD4oc2VsZik7CiAg
ICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+c2V0Q2xpZW50KG1fcmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmdldCgpKTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggOGQyZjg4YWUwMDMyYTBkOTM0
NWU2ODAwYTk3ODU4YjQyOGE0ZDZkOS4uMDY4NzBkMjFkZWU3Y2E0Zjg5ZGI5ZTM0MmY2ZjBmNWZk
M2Y1NGE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwCkBAIC0xNjkxLDcgKzE2OTEsNyBAQCBpbmxpbmUgdm9pZCByZWFkeVNRTGl0
ZVN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBT
UQogICAgICAgICBzdGF0ZW1lbnQgPSBudWxscHRyOwogICAgIH0KICAgICBpZiAoIXN0YXRlbWVu
dCkgewotICAgICAgICBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVu
dD4oZGIsIHN0cik7CisgICAgICAgIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVt
ZW50PihkYiwgc3RyKTsKICAgICAgICAgaWYgKHN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElU
RV9PSykKICAgICAgICAgICAgIExPR19FUlJPUigiUHJlcGFyaW5nIHN0YXRlbWVudCAlcyBmYWls
ZWQiLCBzdHIuYXNjaWkoKS5kYXRhKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5kZXggYmFiZDhhOTgyOWZiODBkMTk4NTJl
Yzk3NGFlZWE3MGNlZTBiOTE1OC4uOGE4Y2FiYmQ1M2MxZTY1ZjcwYWRkMDg1ZDRmNTVlYTMxMDEx
NjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEljb25EYXRhYmFzZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkRhdGFiYXNlQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCkBAIC01OCw2ICs1OSw3IEBAIGNsYXNzIEljb25EYXRhYmFzZSB7CiAKIHByaXZh
dGU6CiAgICAgY2xhc3MgSWNvblNuYXBzaG90IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJY29uU25hcHNob3QoKSA9IGRlZmF1bHQ7CiAK
QEAgLTExOCw2ICsxMjAsNyBAQCBjbGFzcyBJY29uRGF0YWJhc2UgewogICAgIH07CiAKICAgICBj
bGFzcyBQYWdlVVJMU25hcHNob3QgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFBhZ2VVUkxTbmFwc2hvdCgpID0gZGVmYXVsdDsKIApAQCAt
MTcyLDYgKzE3NSw3IEBAIGNsYXNzIEljb25EYXRhYmFzZSB7CiAgICAgfTsKIAogICAgIGNsYXNz
IE1haW5UaHJlYWROb3RpZmllciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgTWFpblRocmVhZE5vdGlmaWVyKCkKICAgICAgICAgICAgIDog
bV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNYWluVGhyZWFkTm90aWZpZXI6OnRpbWVy
RmlyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggZDJhZjY0YmFkODZhOGEzM2YxMzM1
NDcyNTgxYjcwMmU0MWE2N2VjMi4uMjE4NjYwNDUxOTI3NjliZTZkZmY4NTlhNjMyMDQzZDUxMzU2
OWMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzAsNiArNzAsNyBAQCBzdGF0aWMg
Z3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiBXRUJLSVRfREVGSU5FX1RZUEUo
V2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb24sIEdfVFlQ
RV9PQkpFQ1QpCiAKIGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IGZpbmFsIDogcHVibGlj
IEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50KFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQogICAgICAgICA6IG1fc2Vzc2lvbihzZXNzaW9u
KQpAQCAtMjIzLDcgKzIyNCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9u
Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lv
biA9IGFkb3B0UmVmKG5ldyBXZWJBdXRvbWF0aW9uU2Vzc2lvbigpKTsKICAgICBzZXNzaW9uLT5w
cml2LT5zZXNzaW9uLT5zZXRTZXNzaW9uSWRlbnRpZmllcihTdHJpbmc6OmZyb21VVEY4KHNlc3Np
b24tPnByaXYtPmlkLmRhdGEoKSkpOwotICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7
CisgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8QXV0b21h
dGlvblNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0QXV0
b21hdGlvblNlc3Npb25EaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50
LmNwcAppbmRleCA5N2U5MjU2MDE3NzM3Yjc2NjVhY2M4ZWIyZjM1OGViMmVjNTkwMGI5Li4yODU4
ZGY2ZjM0ZDRmYTYyMTIwOWJmMWViMWUxMDg4NWFkMDVlNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGll
bnQuY3BwCkBAIC01Niw2ICs1Niw2IEBAIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IGZpbmFsOiBw
dWJsaWMgQVBJOjpDb250ZXh0TWVudUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoQ29udGV4dE1lbnVD
bGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3
R2V0UGFnZSh3ZWJWaWV3KS5zZXRDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENv
bnRleHRNZW51Q2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2Vi
Vmlldykuc2V0Q29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4o
d2ViVmlldykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNw
cAppbmRleCBkMzJiNTljNTQ3NjY3YTdlYzg3NzE4MTA1MmJkMWE3NDljMGRiYzFjLi5hMzczYjI5
NDU3MTY3OTFhMmQ0YzMwN2JkNWUwYTkyOWM4MTQwYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAKQEAgLTU2LDUgKzU2LDUgQEAgY2xhc3MgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW4KIAogdm9pZCBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRl
eHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0
R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pih3ZWJD
b250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQp
LnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVlPEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCmlu
ZGV4IGVhZDRmMjM0OTkxNjcwNGQxN2QxZjIzMDY0MDg5ZjdhMWEwNDU5NGYuLmU3NzFkZDcxODdl
NTg1OWFkYmQ1YTAxNmY4Y2E5MzVkMjhlODRhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKQEAgLTEx
OCw1ICsxMTgsNSBAQCBjbGFzcyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRv
d25sb2FkQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERv
d25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nl
c3NQb29sKHdlYkNvbnRleHQpLnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRD
bGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDIxODA4M2U3
Njk3YTUxMzk4ZjJlZTA5NGNkYjA2OGMyMDgzN2IxZmEuLjliNTgxOGE5ODM2ZjM3NjJkODk2MjJl
MzYyYzNmYzhiMmQzZWJmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjY3LDggKzI2Nyw4
IEBAIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3BlbihXZWJLaXRGYXZpY29uRGF0YWJhc2Uq
IGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYktp
dEZhdmljb25EYXRhYmFzZVByaXZhdGUqIHByaXYgPSBkYXRhYmFzZS0+cHJpdjsKLSAgICBwcml2
LT5pY29uRGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25EYXRhYmFzZT4oKTsKLSAgICBw
cml2LT5pY29uRGF0YWJhc2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEljb25E
YXRhYmFzZUNsaWVudD4oZGF0YWJhc2UpKTsKKyAgICBwcml2LT5pY29uRGF0YWJhc2UgPSBtYWtl
VW5pcXVlPEljb25EYXRhYmFzZT4oKTsKKyAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldENsaWVu
dChtYWtlVW5pcXVlPFdlYktpdEljb25EYXRhYmFzZUNsaWVudD4oZGF0YWJhc2UpKTsKICAgICBJ
Y29uRGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgcHJpdi0+aWNvbkRhdGFi
YXNlLT5zZXRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVC
cm93c2luZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcAppbmRleCA0Zjk4MGQ0ZWUyNThhY2FjNDU1ODMy
M2NhN2JkNzFjY2RmM2JlZWIxLi43Njc1YzljYjNhNWVkYWY4ODY0ZDE3YTE3OTIxN2NiOTQyMzM2
NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
aW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0RmluZENvbnRyb2xsZXJDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X2ZpbmRfY29udHJvbGxlcl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1
Y3RlZChvYmplY3QpOwogCiAgICAgV2ViS2l0RmluZENvbnRyb2xsZXIqIGZpbmRDb250cm9sbGVy
ID0gV0VCS0lUX0ZJTkRfQ09OVFJPTExFUihvYmplY3QpOwotICAgIGdldFBhZ2UoZmluZENvbnRy
b2xsZXIpLnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5kQ2xpZW50PihmaW5kQ29u
dHJvbGxlcikpOworICAgIGdldFBhZ2UoZmluZENvbnRyb2xsZXIpLnNldEZpbmRDbGllbnQobWFr
ZVVuaXF1ZTxGaW5kQ2xpZW50PihmaW5kQ29udHJvbGxlcikpOwogfQogCiBzdGF0aWMgdm9pZCB3
ZWJraXRGaW5kQ29udHJvbGxlckdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwCmluZGV4
IDEzNGQxYzZjZWJlNTY3ZmM1NGQ5NzBmODc2YmUwMjkzMWQzMjgyMmQuLmJjNjdhMzU3ZGMwNzQ0
NWEzNTI4ZjgwZjBhYmQ3OWQwN2MzYmMwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwCkBAIC00OCw1ICs0OCw1IEBA
IGNsYXNzIEZvcm1DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpGb3JtQ2xpZW50IHsKIAogdm9p
ZCBhdHRhY2hGb3JtQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAg
d2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJW
aWV3KS5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4od2ViVmlldykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMmUxNTk0NWRmYWQyOWMzMTU1MGQxYWQzYzRk
ZDE0OThiZTdiNzIwNC4uOGNiYTQyMmVkNWUzOGJmODRjNzYwNTk0ZDZjZjBmNjU4OGNiZWE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyU3RhcnQoV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2Vy
KiBtYW5hZ2VyKQogICAgIH0KIAogICAgIGlmICghbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3Zp
ZGVyKSB7Ci0gICAgICAgIG1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8R2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1hbmFnZXIt
PnByaXYtPmdlb2NsdWVQcm92aWRlciA9IG1ha2VVbmlxdWU8R2VvY2x1ZUdlb2xvY2F0aW9uUHJv
dmlkZXI+KCk7CiAgICAgICAgIG1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlci0+c2V0RW5h
YmxlSGlnaEFjY3VyYWN5KG1hbmFnZXItPnByaXYtPmhpZ2hBY2N1cmFjeUVuYWJsZWQpOwogICAg
IH0KICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnN0YXJ0KFttYW5hZ2VyXShH
ZW9sb2NhdGlvblBvc2l0aW9uJiYgY29yZVBvc2l0aW9uLCBPcHRpb25hbDxDU3RyaW5nPiBlcnJv
cikgewpAQCAtMzEyLDcgKzMxMiw3IEBAIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogd2Via2l0
R2VvbG9jYXRpb25NYW5hZ2VyQ3JlYXRlKFdlYkdlb2xvY2F0aW9uTWFuYWdlclByCiB7CiAgICAg
YXV0byogbWFuYWdlciA9IFdFQktJVF9HRU9MT0NBVElPTl9NQU5BR0VSKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9HRU9MT0NBVElPTl9NQU5BR0VSLCBudWxscHRyKSk7CiAgICAgbWFuYWdlci0+
cHJpdi0+bWFuYWdlciA9IHByb3h5OwotICAgIHByb3h5LT5zZXRQcm92aWRlcihzdGQ6Om1ha2Vf
dW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXI+KG1hbmFnZXIpKTsKKyAgICBwcm94eS0+c2V0UHJv
dmlkZXIobWFrZVVuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyPihtYW5hZ2VyKSk7CiAgICAgcmV0
dXJuIG1hbmFnZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcAppbmRleCBiOGYwMWZiMjRm
ZjI3NjU0YzBhZDYwOWFkZDMyNDE5NWVlNDFjYTU5Li42NWZkN2M2OTkyMzg4MDExNTU4YzY3ZGVi
MjVmZGFhMjdmNjZjNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6
IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQpAQCAtNjEsNSArNjIs
NSBAQCBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50IHsKIAogdm9pZCBhdHRhY2hJY29uTG9hZGluZ0NsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEljb25M
b2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHdlYlZpZXcp
KTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVu
dChtYWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggYTkzZmYyNWIzOWEyOTI1NjAwZDJjNGFlY2NlY2JjNzU3
MGQ1ZGYzZC4uOTI2MmE4NGRlY2UyNWJmMGJkZjVjNTliNDhkMDAyNTg1MmYzNmJhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMTc5LDUgKzE3OSw1IEBAIGNsYXNzIFdlYktp
dEluamVjdGVkQnVuZGxlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGVD
bGllbnQgewogCiB2b2lkIGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KFdlYktp
dFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nl
c3NQb29sKHdlYkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRX
ZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2ViQ29udGV4dCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDIzNmU4MWMxMzkwYjNlYzNjMTU0
OTE4Njg2YmFmYTVlNTM4NjQ2ODcuLjU1MTYzNjQ0Nzc1NTc0N2I3MGFjNWU3NmIxZDEwNGQ2MWMw
YjVjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm8KICAgICAsIG1fbm90aWZpY2F0aW9uTWFuYWdlcihub3Rp
ZmljYXRpb25NYW5hZ2VyKQogewogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbk1hbmFnZXIpOwot
ICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxO
b3RpZmljYXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKKyAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXIt
PnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlzKSk7CiB9
CiAKIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXggOWU1OGJjYjBiMWFiMzNmYWFkOTdm
Y2Y4NTk4MTI3ZTYxMGExMjMzNi4uMzZiNzgzNDM4ODBkOTYwMzBlNzJmZmFhMTUzNzQ4ZWU1YjFl
M2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eSosIFdlYktpdFdlYkNvbnRleHQqKTsKICAgICB+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJ
Q2xpZW50LmNwcAppbmRleCA1YmNlZjY4ZjY1ZDIzMTg5ODBjZjkxZGFlNTkzZDc2NjcxNDhhOTg5
Li44OTZlMTNkYWQ5N2JlN2ZmNzc2YzAzYmY2ZTdkMDI3ODJlMDMyMWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0y
MjUsNiArMjI1LDYgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAK
IHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAg
ICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmll
dykuc2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2ViVmlldykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA0OGIzOGVhYzA4ZDkxMmM5NjM5ZWY1NTA5NGIxMGYx
ZmZhZDFkOWY5Li4yNTVlOGU1YTY3OTI3NjQ4MzNkMzdkYWZmOWY1NzkwZjA4NTk2NjU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVzZXJDb250ZW50TWFuYWdlci5jcHAKQEAgLTE4Miw2ICsxODIsNyBAQCB2b2lkIHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3NjcmlwdHMoV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyKiBtYQogfQogCiBjbGFzcyBTY3JpcHRNZXNzYWdlQ2xpZW50R3RrIGZpbmFsIDogcHVi
bGljIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3NhZ2VDbGllbnRHdGsoV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBjaGFyKiBoYW5kbGVyTmFtZSkKICAgICAg
ICAgOiBtX2hhbmRsZXJOYW1lKGdfcXVhcmtfZnJvbV9zdHJpbmcoaGFuZGxlck5hbWUpKQpAQCAt
MjM4LDcgKzIzOSw3IEBAIGdib29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdp
c3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKFdlYktpdFVzZXJDCiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwobmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJp
bmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkp
OworICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2Ny
aXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFt
ZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcmV0dXJuIG1h
bmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCkBAIC0yODgsNyArMjg5LDcgQEAgZ2Jvb2xlYW4g
d2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRs
ZXJfaW5fd29ybGQoV2UKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3b3JsZE5hbWUsIEZBTFNF
KTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9Ci0gICAgICAg
IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRN
ZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwg
d2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKKyAgICAgICAgV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1h
bmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdv
cmxkKHdvcmxkTmFtZSkpOwogICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcAppbmRleCBiZmM1NjdjZWQ1YmIxNzAxZDNhYzkyNzY3YWViYWE0MmRiMmMzOTdh
Li5hNTdkYjQyYTQxOWZiY2M3YmVmZDVmN2I5NjRiMDA2MGNmYTY1ZTZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApA
QCAtMTk4LDYgKzE5OCw3IEBAIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsg
MCwgfTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogY2xhc3MgV2ViS2l0QXV0b21h
dGlvbkNsaWVudCBmaW5hbCA6IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYktp
dEF1dG9tYXRpb25DbGllbnQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKICAgICAgICAgOiBt
X3dlYkNvbnRleHQoY29udGV4dCkKQEAgLTM2Nyw5ICszNjgsOSBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRU
b0NvbnRleHQod2ViQ29udGV4dCk7CiAKICAgICBwcml2LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBh
ZG9wdEdSZWYod2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyQ3JlYXRlKHByaXYtPnByb2Nlc3NQb29s
LT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKSk7Ci0gICAgcHJpdi0+
bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk+KCksIHdlYkNvbnRleHQpOworICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3Zp
ZGVyID0gbWFrZVVuaXF1ZTxXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vz
c1Bvb2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250
ZXh0KTsKICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IHByaXYtPnJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5y
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcj4od2ViQ29udGV4dCk7CiAjZW5kaWYKIH0KIApAQCAtNjc4LDcgKzY3
OSw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgZ2Jvb2xlCiAgICAgICAgICAgICBnX3dhcm5pbmcoIk5v
dCBlbmFibGluZyBhdXRvbWF0aW9uIG9uIFdlYktpdFdlYkNvbnRleHQgYmVjYXVzZSB0aGVyZSdz
IGFub3RoZXIgY29udGV4dCB3aXRoIGF1dG9tYXRpb24gZW5hYmxlZCwgb25seSBvbmUgaXMgYWxs
b3dlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQt
PnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEF1dG9tYXRp
b25DbGllbnQ+KGNvbnRleHQpOworICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKICAgICB9
IGVsc2UKICAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG51bGxwdHI7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlldy5jcHAKaW5kZXggYjIzOWFjNGUxOWU2M2QzM2E4NjlkZWZiNjZmYzNjMGI0NTAwYjc4
NS4uNzQzMGMzZmNmZDU0YzQ2ZWZhNjRlMTJmZDk3ZGU1YTkzMjk4YTQ4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIw
MSw2ICsyMDEsNyBAQCBjbGFzcyBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI7CiAjaWYgUExBVEZPUk0o
V1BFKQogc3RhdGljIHVuc2lnbmVkIGZyYW1lRGlzcGxheUNhbGxiYWNrSUQ7CiBzdHJ1Y3QgRnJh
bWVEaXNwbGF5ZWRDYWxsYmFjayB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIEZyYW1lRGlzcGxheWVkQ2FsbGJhY2soV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFj
ayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEgPSBudWxscHRyLCBHRGVzdHJveU5vdGlmeSBk
ZXN0cm95Tm90aWZ5RnVuY3Rpb24gPSBudWxscHRyKQogICAgICAgICA6IGlkKCsrZnJhbWVEaXNw
bGF5Q2FsbGJhY2tJRCkKICAgICAgICAgLCBjYWxsYmFjayhjYWxsYmFjaykKQEAgLTIyNyw2ICsy
MjgsNyBAQCBzdHJ1Y3QgRnJhbWVEaXNwbGF5ZWRDYWxsYmFjayB7CiAjZW5kaWYgLy8gUExBVEZP
Uk0oV1BFKQogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgfl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSgpCiAgICAg
ewogICAgICAgICAvLyBGb3IgbW9kYWwgZGlhbG9ncywgbWFrZSBzdXJlIHRoZSBtYWluIGxvb3Ag
aXMgc3RvcHBlZCB3aGVuIGZpbmFsaXppbmcgdGhlIHdlYlZpZXcuCkBAIC0zMjYsNiArMzI4LDcg
QEAgdm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB9CiAKIGNsYXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlciBmaW5hbCA6IHB1Ymxp
YyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgUGFnZUxvYWRTdGF0ZU9ic2VydmVyKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBAIC0zOTksNiArNDAyLDcgQEAgY2xh
c3MgUGFnZUxvYWRTdGF0ZU9ic2VydmVyIGZpbmFsIDogcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9i
c2VydmVyIHsKIAogI2lmIFBMQVRGT1JNKFdQRSkKIGNsYXNzIFdlYlZpZXdDbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpWaWV3Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJWaWV3Q2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBAIC03MjUsNyArNzI5LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAg
IHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhwcml2LT5jb250ZXh0LmdldCgp
LCB3ZWJWaWV3LCBwcml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRW
aWV3KTsKIAotICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxv
YWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKKyAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBtYWtl
VW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CiAgICAgZ2V0UGFnZSh3ZWJW
aWV3KS5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKnByaXYtPmxvYWRPYnNlcnZlcik7CiAK
ICAgICAvLyBUaGUgcmVsYXRlZCB2aWV3IGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoZSBjb25zdHJ1
Y3Rpb24uCkBAIC03NDEsNyArNzQ1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1BFKQotICAg
IHByaXYtPnZpZXctPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYlZpZXdDbGllbnQ+KHdl
YlZpZXcpKTsKKyAgICBwcml2LT52aWV3LT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJWaWV3Q2xp
ZW50Pih3ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgYWZ0ZXIg
YXR0YWNoVUlDbGllbnRUb1ZpZXcoKSBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQo
KSBjYWxscyBzZXRDYW5SdW5Nb2RhbCgpIHdpdGggdHJ1ZS4KQEAgLTM3MDEsNiArMzcwNSw3IEBA
IGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgY29uc3QgY2hhcioKIH0KIAogc3RydWN0IFZpZXdTYXZlQXN5bmNEYXRhIHsK
KyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmVmUHRyPEFQSTo6RGF0
YT4gd2ViRGF0YTsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggZjA5ZDZj
N2U5MjA2ODNhNzU2NjUyNzY5NjdlNzQ3Y2M2Y2VlYjQ4MS4uMDZiM2I4MzYwNjVkOWY2NmEwNzk4
YTIwOTU1MTNjYTg2OGIzMWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUGFnZUNsaWVudElt
cGw6OlBhZ2VDbGllbnRJbXBsKEd0a1dpZGdldCogdmlld1dpZGdldCkKIC8vIFBhZ2VDbGllbnQn
cyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94
eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9X
RUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndlYmtpdFdlYlZpZXdC
YXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSwgcHJvY2Vzcyk7
CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2Vi
Q29yZTo6UmVnaW9uJiByZWdpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKaW5kZXggMzFlMDk3M2ZlMTAwM2M2ZWE2
NTIzMDYxYTY3Yzk0OWQ1M2ViZDZiNy4uMmQxYzJjYjM2OGE5OTMzMTY5NzQyNDZhMGVkNTk5YzI4
ZGNhZTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRFbW9qaUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RW1vamlDaG9vc2VyLmNwcApAQCAtNTE5LDcgKzUxOSw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0aW9ucyhXZWJLaXRFbW9qaUNob29zZXIqIGNo
b29zZXIsIEd0CiAgICAgICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9
IG51bGxwdHI7CiAgICAgfTsKIAotICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNU
aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RGTW92ZShwb3B1bGF0ZVNl
Y3Rpb25zKSk7CisgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbWFr
ZVVuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsKICAgICBj
aG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnNldFByaW9yaXR5KEdfUFJJT1JJ
VFlfREVGQVVMVF9JRExFKTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGlt
ZXItPnNldE5hbWUoIltXZWJLaXRFbW9qaUNob29zZXJdIHBvcHVsYXRlIHNlY3Rpb25zIHRpbWVy
Iik7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zdGFydFJlcGVh
dGluZyh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CmluZGV4IDBmNjc0ODY0NTJjZDFmYTg3YTgyODYyZTdlNjA1NzM0ZGZjMzU5NjguLjViYTYxMGU3
ZDlhNDRkMDQ3MzgzODFlMjNkMDQwYmRhOTJjM2ZjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgU2NyaXB0TWVzc2FnZUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNzYWdlQ2xp
ZW50KFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciYgaW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyKQogICAgICAgICA6IG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKGluc3BlY3RvclByb3Rv
Y29sSGFuZGxlcikKQEAgLTEwNSwxMyArMTA2LDEzIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVl
CiAgICAgYXV0byogdXNlckNvbnRlbnRNYW5hZ2VyID0gd2Via2l0X3dlYl92aWV3X2dldF91c2Vy
X2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KTsKICAgICBhdXRvIHVzZXJDb250ZW50TWFuYWdlclJl
c3VsdCA9IG1fdXNlckNvbnRlbnRNYW5hZ2Vycy5hZGQodXNlckNvbnRlbnRNYW5hZ2VyKTsKICAg
ICBpZiAodXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgYXV0
byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5p
cXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50
PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOwogICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoaGFuZGxlci5nZXQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfcmVmKEdfT0JKRUNUKHVz
ZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KHVzZXJDb250
ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0KIAogICAgIGF1dG8qIGNsaWVudCA9
IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBbdGhp
cywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
SW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVx
dWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKTsKIAogICAgIEdTdHJpbmcqIGh0bWwgPSBnX3N0cmluZ19uZXcoCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKaW5k
ZXggMGYwMTcxMWU3OTYxZThiMDBjNWU1NzRkMjg4NTBkMDViMjQxZjZlYy4uODBkMjBhYTc2MDNi
YWRhYjkwMGZlNGJkMTU5MGFhZDM5YjMwZTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcApAQCAtMjg0LDYgKzI4
NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQoV2ViS2l0
V2ViSW5zcGVjdG9yQ2xhc3MqIGZpbmRDbGFzcykKIH0KIAogY2xhc3MgV2ViS2l0SW5zcGVjdG9y
Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkluc3BlY3RvclByb3h5Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJLaXRJbnNwZWN0
b3JDbGllbnQoV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IpCiAgICAgICAgIDogbV9pbnNw
ZWN0b3IoaW5zcGVjdG9yKQpAQCAtMzYwLDcgKzM2MSw3IEBAIFdlYktpdFdlYkluc3BlY3Rvciog
d2Via2l0V2ViSW5zcGVjdG9yQ3JlYXRlKFdlYkluc3BlY3RvclByb3h5KiB3ZWJJbnNwZWN0b3Ip
CiB7CiAgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBXRUJLSVRfV0VCX0lOU1BF
Q1RPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiwgTlVMTCkpOwogICAg
IGluc3BlY3Rvci0+cHJpdi0+d2ViSW5zcGVjdG9yID0gd2ViSW5zcGVjdG9yOwotICAgIHdlYklu
c3BlY3Rvci0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50
PihpbnNwZWN0b3IpKTsKKyAgICB3ZWJJbnNwZWN0b3ItPnNldENsaWVudChtYWtlVW5pcXVlPFdl
YktpdEluc3BlY3RvckNsaWVudD4oaW5zcGVjdG9yKSk7CiAgICAgcmV0dXJuIGluc3BlY3RvcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcAppbmRleCAxYjlkZDhkMWY0NjAyMTRmNWE3NzI2NzJjMmZiNjUzNzBiNTIw
YzVlLi44OGIzY2Y0M2JmZTY4ZWU5N2M3MzFiNzY0ZDQ0OTkwYTdiZmM1YThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cApAQCAtNTY2LDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIGd0a19kcmFnX2Rlc3Rfc2V0X3RhcmdldF9saXN0
KHZpZXdXaWRnZXQsIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLnRhcmdldExpc3QoKSk7
CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdf
QkFTRShvYmplY3QpLT5wcml2OwotICAgIHByaXYtPnBhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3V2lkZ2V0KTsKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlld1dpZGdldCk7CiAgICAgcHJpdi0+ZGlhbG9n
ID0gbnVsbHB0cjsKIH0KIApAQCAtMTIyMCw3ICsxMjIwLDcgQEAgR2VzdHVyZUNvbnRyb2xsZXIm
IHdlYmtpdFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXcKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFz
ZS0+cHJpdjsKICAgICBpZiAoIXByaXYtPmdlc3R1cmVDb250cm9sbGVyKQotICAgICAgICBwcml2
LT5nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VzdHVyZUNvbnRyb2xsZXI+
KEdUS19XSURHRVQod2ViVmlld0Jhc2UpLCBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoR2VzdHVyZUNv
bnRyb2xsZXI+KHdlYlZpZXdCYXNlKSk7CisgICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSks
IG1ha2VVbmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmlld0Jhc2UpKTsKICAgICBy
ZXR1cm4gKnByaXYtPmdlc3R1cmVDb250cm9sbGVyOwogfQogCkBAIC0xNTAxLDcgKzE1MDEsNyBA
QCBEcmFnQW5kRHJvcEhhbmRsZXImIHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5kbGVy
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+ZHJhZ0FuZERyb3BI
YW5kbGVyKQotICAgICAgICBwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERyYWdBbmREcm9wSGFuZGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CisgICAgICAgIHByaXYt
PmRyYWdBbmREcm9wSGFuZGxlciA9IG1ha2VVbmlxdWU8RHJhZ0FuZERyb3BIYW5kbGVyPigqcHJp
di0+cGFnZVByb3h5KTsKICAgICByZXR1cm4gKnByaXYtPmRyYWdBbmREcm9wSGFuZGxlcjsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJWaWV3QmFz
ZSogd2Via2l0V2ViVmlld0Jhc2UKICAgICBpZiAocHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVy
KQogICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXItPmNvbm5lY3RUb1Byb2Nlc3Mo
KTsKICAgICBlbHNlIHsKLSAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQ
cm94eSk7CisgICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8
V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAgICAg
ICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXItPnNldFN3aXBlR2VzdHVyZUVuYWJsZWQocHJp
di0+aXNCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlRW5hYmxlZCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAyY2FiMmUwNTM4NmQ0
MmIzNzFmNDQwNmFiNzFhN2Y2NTkzMGY3ZDc3Li4xNDYwM2Q1YWZlYmFmNmRlZTAxMTk3OTU3NzAz
ODgzNDlkNGU3YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQpAQCAtODk1LDYgKzg5NSw3IEBAIC0gKHZvaWQpbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGll
bnQKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGNsYXNz
IEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxp
Y2l0IEljb25Mb2FkaW5nQ2xpZW50KFdLVmlldyAqd2tWaWV3KQogICAgICAgICAgICAgOiBtX3dr
Vmlldyh3a1ZpZXcpCkBAIC05MzIsNyArOTMzLDcgQEAgLSAodm9pZCltYXliZUluc3RhbGxJY29u
TG9hZGluZ0NsaWVudAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAg
ICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpJY29uTG9hZGluZ0NsaWVudDo6ZGVsZWdh
dGVTZWxlY3RvcigpXSkKLSAgICAgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCkuc2V0SWNvbkxvYWRp
bmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oc2VsZikpOworICAg
ICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVl
PEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wm
KXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYm
KWNvbmZpZ3VyYXRpb24KQEAgLTk0NCw3ICs5NDUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29s
JgogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAogICAgIF9kYXRhID0gW1tXS1Zp
ZXdEYXRhIGFsbG9jXSBpbml0XTsKLSAgICBfZGF0YS0+X2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIG51bGxwdHIsIHByb2Nlc3NQb29sLCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKTsKKyAgICBfZGF0YS0+X2ltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6
V2ViVmlld0ltcGw+KHNlbGYsIG51bGxwdHIsIHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKTsKIAogICAgIFtzZWxmIG1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAppbmRl
eCAyMTk5MWY4ZGFmMzFiNDFiMTU2NWZmZjk4NjVkZTk5MzhmYjhhMGRmLi42NGNhMmZjYjVhODUx
MjdmNWI0MTQ3MWVjZTZlYThmNDQ2Y2UwNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBWaWV3
OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFZpZXdDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflZpZXdDbGllbnQoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNs
aWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5jcHAKaW5kZXggODUxMjlhNTQ4N2M5ZmZiZWQ1NjY0NmNjMTBkZDE4ODNjOTg3NTZkMy4u
ZTIwOGE1YzU1ZDc1ODg1NzNkZmY0MzYwMzM3N2VmOGQxNjM1ODVhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbChXS1dQRTo6VmlldyYgdmlldykKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9zY3Jv
bGxHZXN0dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEdlc3R1cmVDb250cm9s
bGVyPigpKQorICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcihtYWtlVW5pcXVlPFNjcm9s
bEdlc3R1cmVDb250cm9sbGVyPigpKQogewogfQogCkBAIC02Myw3ICs2Myw3IEBAIElQQzo6QXR0
YWNobWVudCBQYWdlQ2xpZW50SW1wbDo6aG9zdEZpbGVEZXNjcmlwdG9yKCkKIAogc3RkOjp1bmlx
dWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJl
YVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4obV92aWV3LnBhZ2Uo
KSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1
cmVDb250cm9sbGVyLmgKaW5kZXggOWM5ZjZlOWUzYjE4YjQyZjUzZjcyZjhlYjU1YTRlNjc1NWRi
NDdhMi4uM2Y2MzI1MTIxZDgyOGUzNThhZDE1Yjc2YzRkNWNkYzQ4Mzc1ZGMxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFNjcm9sbEdlc3R1cmVDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcigpID0gZGVmYXVsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0
ZThjMWZhNDkxMDlhYTI4NTViOGJiNDE1NzE3MDQ0Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDky
ODQ5ODQ0MGQwMzBjZTA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuY3BwCkBAIC00Miw4ICs0Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1l
c3BhY2UgV0tXUEUgewogCiBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNr
ZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAg
ICA6IG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwg
bV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAg
ICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdl
Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7
IDgwMCwgNjAwIH0KICAgICAsIG1fdmlld1N0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzSW5XaW5kb3cgfQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcg
QEAgVmlldzo6flZpZXcoKQogdm9pZCBWaWV3OjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6Vmlld0NsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1f
Y2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1f
Y2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAg
ICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZh
ODUzNjU5Y2M1YjEzNTYxY2IzNjZjLi5iNGYyN2I2ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1
ZDA5ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQ
RVF0Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVR
dFZpZXcuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRD
aGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCBldmVudCwKIAog
ICAgIGlmIChzdGF0dXNTZXQpIHsKICAgICAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRl
IGxvYWRSZXF1ZXN0UHJpdmF0ZSh2aWV3LT51cmwoKSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVz
dCA9IG1ha2VVbmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7
CiAgICAgICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7
CiAgICAgfQogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2Fk
RmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QKICAg
ICAgICAgbG9hZFN0YXR1cyA9IFdQRVF0Vmlldzo6TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1
czsKIAogICAgIFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUo
UVVybChRU3RyaW5nKGZhaWxpbmdVUkkpKSwgbG9hZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3Qg
PSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwog
ICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAK
QEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2Jq
ZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BF
UXRWaWV3OjpydW5KYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFs
dWUmIGNhbGxiYWNrKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tE
YXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxs
YmFjaywgUVBvaW50ZXI8V1BFUXRWaWV3Pih0aGlzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEph
dmFzY3JpcHRDYWxsYmFja0RhdGE+IGRhdGEgPSBtYWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFj
a0RhdGE+KGNhbGxiYWNrLCBRUG9pbnRlcjxXUEVRdFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRf
d2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCku
Y29uc3REYXRhKCksIG51bGxwdHIsIGpzQXN5bmNSZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2Uo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQv
V1BFUXRWaWV3QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0
L1dQRVF0Vmlld0JhY2tlbmQuY3BwCmluZGV4IGE4NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5
YzJkZDNhYmQxZjkuLjEzZmQzN2FlZmYyYjY1MzVkNTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZp
ZXdCYWNrZW5kLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3
QmFja2VuZD4gV1BFUXRWaWV3QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQog
ICAgIGlmICghZWdsQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBl
Z2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZp
ZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsK
IH0KIAogV1BFUXRWaWV3QmFja2VuZDo6V1BFUXRWaWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNp
emUsIEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxR
T3BlbkdMQ29udGV4dD4gY29udGV4dCwgUVBvaW50ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgKaW5kZXgg
NDIwOGU4ZjIyZTBhYTRlZGQ4NWI1MjI1OTA0YzJkYzQ5OWIwNWU5Ni4uOTQ5MzdiMDAxOTQ2MjUz
NjJmNjQ0Y2E3NzA1MDhkMGRhYTY3NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xB
U1MgVUlWaWV3OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uU3RhdGVU
cmFja2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIoVUlWaWV3ICosIFNFTCBkaWRFbnRlckJhY2tncm91bmRTZWxlY3RvciwgU0VM
IGRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kU2VsZWN0b3IsIFNF
TCB3aWxsRW50ZXJGb3JlZ3JvdW5kU2VsZWN0b3IpOwogICAgIH5BcHBsaWNhdGlvblN0YXRlVHJh
Y2tlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBjY2U1YzQ4MTdhODA0OTE3Y2RjMTk5
YzFiMDE2MGUyNTZlOWJlMjk3Li5hNTkxNTBkYjdhNDBkYzdiYzE1ZGI1MWJlOGVmNGUxMTM1NmRj
NTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzMsMTEgKzczLDExIEBAIHN0YXRpYyBj
b25zdCBTZWNvbmRzIGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQgPSAzMDBfczsKIHN0YXRpYyBjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5IGRlZmF1
bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwogCiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21h
dGlvblNlc3Npb24oKQotICAgIDogbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50PigpKQorICAgIDogbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVu
ZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9kb21h
aW5EaXNwYXRjaGVyKEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9kb21haW5Ob3RpZmllcihzdGQ6Om1ha2VfdW5p
cXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9kb21haW5Ob3RpZmllcihtYWtlVW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNo
ZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmV2ViQXV0b21hdGlvblNlc3Npb246OmxvYWRUaW1lckZpcmVkKQogewogI2lmIEVO
QUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5
YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3ZTg3YzUxZGM0YWU5ZDYzOWIxZDRmMzI2MzgwNjhiMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
CkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYm
IG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDwKIHsKICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRv
IGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1l
KCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAg
IHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25D
bGllbnQuaAppbmRleCAxMGE4ZTQyNDEzYjI5YWZmYjYzNzdkODRhMDliZTUxMWJkMjUxZDVjLi5k
ZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFhNDAxNTdjOTRmMmZhOWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgK
QEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudChpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGlu
Z0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0Rl
bGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3MjM5NzMyMDVjYzZkZjRjYzY2YTY3OTA2YzAyOWIwZC4u
MDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlkZjQyYzIzYzE0ZDYwNWFkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaApAQCAtMzcs
NiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3ICopOwogICAgIH5JY29uTG9hZGluZ0RlbGVn
YXRlKCk7CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgewogCiBw
cml2YXRlOgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxv
YWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KEljb25Mb2FkaW5nRGVsZWdh
dGUmKTsKICAgICAgICAgfkljb25Mb2FkaW5nQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQppbmRleCBhMzQ0ZGZm
OWNlMGQ1MzVjYTMwZGIyYmViNWJjYmQ3YzBkNzRjZmI0Li4xNjNmYjk1MmVlMGVhOWI3MWEzZDQ5
ZDNkZDk3Y2UwMDQzY2M2OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgSWNvbkxvYWRp
bmdEZWxlZ2F0ZTo6fkljb25Mb2FkaW5nRGVsZWdhdGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJY29uTG9hZGluZ0NsaWVudD4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRp
bmdDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xp
ZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KCp0
aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tJY29uTG9hZGluZ0RlbGVnYXRlPiA+IEljb25M
b2FkaW5nRGVsZWdhdGU6OmRlbGVnYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCmluZGV4IGE1MWEyMjM2MjM4NDE1MWFiMTFkNDg5NDM2OWY4YTE4NTgw
MDY3ZGEuLmY1MTM3ZjljYzczMTYzODhlNjFkZTEwNzczZmYzNDI4NTYyNTA1OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtNzgsMTMgKzc4LDEz
IEBAIFVJRGVsZWdhdGU6On5VSURlbGVnYXRlKCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
IHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiBVSURlbGVnYXRlOjpjcmVh
dGVDb250ZXh0TWVudUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVu
dUNsaWVudD4oKnRoaXMpOwogfQogI2VuZGlmCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xp
ZW50PiBVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxVSUNsaWVu
dD4oKnRoaXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPFdLVUlEZWxlZ2F0ZT4gPiBVSURlbGVnYXRl
OjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDQ4YzJiMmI0ZTA2
MTA2OTI3MmFlYjhiOTRhMjM0ZWFhOTI2YWY3NmQuLjkxY2Y5NDgwYzc1MThjZDliYjE3ZTlmY2E0
ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC00NSw2ICs0
NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNs
YXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5IDogcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyLCBwdWJsaWMgU2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2U6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
U291cmNlUHJveHkodWludDY0X3QgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
biwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogICAgICAgICA6IG1faWQoaWQp
CkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Ojpj
cmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICAgICAgc291
cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsKICAgICAgICAgc2V0dGluZ3MgPSBzb3VyY2UtPnNldHRp
bmdzKCk7CiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAg
IG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9w
cm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CisgICAgICAgIG1fcHJveGll
cy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rp
b24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGludmFsaWRDb25z
dHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5lcnJvck1lc3NhZ2UpOwogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwgaW52YWxpZENvbnN0cmFpbnRzLCBXVEZNb3ZlKHNldHRp
bmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXggOWNhNmZhMzUzNDk2MDE4MDNkZjVk
M2QxYjJhYmEzMTY1NTc0MGMzOS4uOWJkZGI5OTA5ZGY3ZThmZWYxZTU0ODA2Y2JlNmJjNWM0MGNm
YzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBT
aGFyZWRNZW1vcnk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQcm94eSYpOwogICAgIH5Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzMDcwZDU3NDQzZmRmNzE5NjA4NjAzMGUz
ZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQyZmEyYTA4NjA0MTdjNmNmODBkN2JjZTU5YjlhNzM5YWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemUoKQogICAgIGlmICghW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Il0pCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKTsKIAotICAgIHNldExl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisgICAgc2V0TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50PigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01MTQsNyArNTE0LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9ic2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlMaW5rID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5
TGluaz4oZGlzcGxheUlEKTsKKyAgICBhdXRvIGRpc3BsYXlMaW5rID0gbWFrZVVuaXF1ZTxEaXNw
bGF5TGluaz4oZGlzcGxheUlEKTsKICAgICBkaXNwbGF5TGluay0+YWRkT2JzZXJ2ZXIoY29ubmVj
dGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAgbV9kaXNwbGF5TGlua3MuYXBwZW5kKFdURk1vdmUoZGlz
cGxheUxpbmspKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggNWMyMWNhNzVhMTgyOWM1MGYxZDgyZjU3Nzc4
YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3YjQ2MDU0OGNlMGY4NmQ3YTVkMTE3YTY3Njc4YzRmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKQog
ICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIgPSBbYWN0aXZpdHlUb2tl
biA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVk
KCkgLSBsYW1iZGEsIGJhY2tncm91bmQgYWN0aXZpdHkgdGltZWQgb3V0Iiwgd2Vha1RoaXMuZ2V0
KCkpOwogICAgIH07Ci0gICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92ZShiYWNrZ3JvdW5k
QWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0aW9uKTsKKyAg
ICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpEZWZlcnJh
YmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRBY3Rpdml0eVRpbWVvdXRIYW5kbGVy
KSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOwogICAgIGNvbXBsZXRpb24oKTsKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRl
eCBmMTc2ZjFhNjVhOTkyYzUxYWMzNDRlZDAwODg1N2UwMTNlZjk5NGIxLi4zN2Y1NGRhNGFkMmQ2
YTI1NDdjMWRkMzU5Yjg5NWM4YTU0YTI1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTMzNCw3ICsxMzM0LDcgQEAgc3RhdGljIE5TVHJh
Y2tpbmdBcmVhT3B0aW9ucyB0cmFja2luZ0FyZWFPcHRpb25zKCkKIAogV2ViVmlld0ltcGw6Oldl
YlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmlldyAq
b3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAs
IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRl
cldlYlZpZXcpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+
KHZpZXcsIG91dGVyV2ViVmlldykpCiAgICAgLCBtX3BhZ2UocHJvY2Vzc1Bvb2wuY3JlYXRlV2Vi
UGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSkKICAgICAsIG1fbmVl
ZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKG1fcGFnZS0+cHJlZmVyZW5jZXMoKS5wbHVn
aW5zRW5hYmxlZCgpKQogICAgICwgbV9pbnRyaW5zaWNDb250ZW50U2l6ZShDR1NpemVNYWtlKE5T
Vmlld05vSW50cmluc2ljTWV0cmljLCBOU1ZpZXdOb0ludHJpbnNpY01ldHJpYykpCkBAIC0xMzcy
LDcgKzEzNzIsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoTlNWaWV3IDxXZWJWaWV3SW1w
bERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldlYgogICAgIHZpZXcubGF5ZXJDb250
ZW50c1BsYWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQbGFjZW1lbnRUb3BMZWZ0OwogCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOworICAg
IG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVl
bkNsaWVudD4odmlldykpOwogI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGlj
cygpLndrVmlld0NvdW50Kys7CkBAIC0xNzMwLDkgKzE3MzAsOSBAQCBDR1NpemUgV2ViVmlld0lt
cGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3
aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgaWYgKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXQyVXNlUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEiXSBib29sVmFsdWVdKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3Bh
Z2UsIHByb2Nlc3MpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nl
c3MpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcoKSBj
b25zdApAQCAtMzM3NSw3ICszMzc1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJlZmVyZW5jZXNE
aWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGV4dEluZGljYXRvcihXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93
TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAgICAgaWYgKCFtX3RleHRJbmRpY2F0b3JXaW5kb3cpCi0g
ICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxlYXNlZCgpKTsKKyAgICAgICAg
bV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
V2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOwogCiAgICAgTlNSZWN0IHRleHRCb3Vu
ZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW1ttX3ZpZXcgd2luZG93XSBjb252ZXJ0UmVj
dFRvU2NyZWVuOlttX3ZpZXcgY29udmVydFJlY3Q6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdS
ZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5pbF1dOwogICAgIG1fdGV4dEluZGlj
YXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVj
dCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyksIGxpZmV0aW1lKTsKQEAgLTQz
NzcsNyArNDM3Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNhdmVCYWNrRm9yd2FyZFNuYXBzaG90
Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogVmlld0dlc3R1cmVDb250cm9s
bGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIoKQogewogICAgIGlmICgh
bV9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOworICAgICAgICBtX2dl
c3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KG1fcGFn
ZSk7CiAgICAgcmV0dXJuICptX2dlc3R1cmVDb250cm9sbGVyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmlu
ZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5ZTU4Y2NkYTEwZjNlYTQ0NGMyNzYuLjYyNjRkZGI3Zjc5
MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2NWQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0yNDAsNyAr
MjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6aW5jb3Jw
b3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXAKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5mby5kZXZp
Y2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2JhY2tpbmdTdG9yZSA9
IG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZvLnZpZXdTaXplLCB1cGRhdGVJbmZv
LmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7CiAKICAgICBtX2JhY2tpbmdTdG9y
ZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2
b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRjaEFmdGVyRW5z
dXJpbmdEcmF3aW5nKFdURjo6RnVuYwogICAgIH0KIAogICAgIGlmICghbV9kcmF3aW5nTW9uaXRv
cikKLSAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdNb25pdG9yPihtX3dlYlBhZ2VQcm94
eSk7CisgICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOwog
ICAgIG1fZHJhd2luZ01vbml0b3ItPnN0YXJ0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5jcHAKaW5kZXggYTJkMDM4NmFjZjVkOGFkNTM1Yzc5MTJhODg2Y2JkMGYwMDU0Nzg2OC4u
NmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2NjVlZTFiNzg2OTZhNmE0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMTc4
LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6SGFz
aFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9yCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgp
KSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2
aWNlSWRIYXNoU2FsdCkpOworICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVl
PEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwg
V1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2aWNl
SWRIYXNoU2FsdCkpOwogCiAgICAgaGFzaFNhbHRGb3JPcmlnaW4tPmxhc3RUaW1lVXNlZCA9IFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0VGltZVVzZWQpOwogCkBAIC0yMTksNyArMjE5LDcg
QEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0
Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKIAogICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNo
U2FsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgICAgICBhdXRvIG5ld0hhc2hTYWx0Rm9y
T3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShkb2N1
bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hT
YWx0KSk7CisgICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhh
c2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShwYXJlbnRP
cmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAogICAgICAgICByZXR1cm4gbmV3
SGFzaFNhbHRGb3JPcmlnaW47CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCmlu
ZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5OWE1MDM0NGYzMTI1MWY1ZTk2ODQuLmRjNWFkZjFhM2U0
Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1Y2E3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKQEAgLTg4LDExICs4
OCwxMSBAQCBEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFBy
b3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbAogCiAgICAgaWYgKG1fZG93bmxvYWRzLnNp
emUoKSA9PSAxICYmIG1fc2hvdWxkVGFrZUFzc2VydGlvbikgewogICAgICAgICBBU1NFUlQoIW1f
ZG93bmxvYWRVSUFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRVSUFzc2VydGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAi
V2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcp
OworICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAgICAgICBBU1NFUlQoIW1fZG93
bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9j
ZXNzKTsKLSAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
IldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5n
KTsKKyAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFBy
b2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBk
b3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAg
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyB0b29rICdXZWJL
aXQgZG93bmxvYWRzJyBhc3NlcnRpb25zIGZvciBVSVByb2Nlc3MgYW5kIE5ldHdvcmtQcm9jZXNz
Iik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmlu
ZGV4IDNkZWY1ZDc5ZjA3Y2I5MTQwYjgyNTYyZGI5ZjZmMmJjNmQwZjcyZjYuLjU2MDZjNTExNjUz
NGY0M2NmYzgwNmQ1MTFkNDFlZDk4Y2ZiMjUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5IDogcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcm90ZWN0ZWQgSVBDOjpNZXNzYWdlU2VuZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
cmF3aW5nQXJlYVByb3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBlY2FhYzMwMWI0YmRm
NDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRmNjQwLi5mNGI3YmVhNjU4NTA5OTFlOTQ5NGE2MjIzZDU0
Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1l
cGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFVJR2FtZXBh
ZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMoY29uc3QgVmVjdG9yPFBsYXRm
b3JtR2FtZXBhZAogICAgIGZvciAoYXV0byogZ2FtZXBhZCA6IGluaXRpYWxHYW1lcGFkcykgewog
ICAgICAgICBpZiAoIWdhbWVwYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9n
YW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPigq
Z2FtZXBhZCk7CisgICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBtYWtlVW5p
cXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcG9vbCA6
IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcykKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFk
JiBnYW1lcGFkKQogICAgICAgICBtX2dhbWVwYWRzLmdyb3coZ2FtZXBhZC5pbmRleCgpICsgMSk7
CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7Ci0gICAgbV9nYW1l
cGFkc1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVw
YWQpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IG1ha2VVbmlxdWU8VUlHYW1l
cGFkPihnYW1lcGFkKTsKIAogICAgIHNjaGVkdWxlR2FtZXBhZFN0YXRlU3luYygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3Jh
cGhpY3NVc2FnZVNhbXBsZXIuaAppbmRleCA3ZDU2YjBhMjQ2M2RlZGYxNjY5NThjMjhmZmI3NWFh
MGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVlZTJlZmExYmQwNWEyYTc1NjExMWExNWQ5OGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgSGlnaFBlcmZvcm1hbmNlR3JhcGhp
Y3NVc2FnZVNhbXBsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKFdlYlByb2Nl
c3NQb29sJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk0ZmFmNmI5ZGUyNjIwMWQ4NGQyNmZmODM5
MzNmODIyOWMwNWQ2YjkuLjI3N2NhMDQ0ZTQwN2IwN2JjNGFmNThmMjIyMTdjYjZiNjg0MjhhYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpCiBEb3dubG9h
ZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFBy
b3h5TWFwKQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERv
d25sb2FkUHJveHlNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0gbWFr
ZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CiAKICAgICByZXR1cm4gbV9kb3dubG9h
ZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVx
dWVzdCk7CiB9CkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKCkKIHsKICAgICBB
U1NFUlQoIW1fdXBsb2FkQXNzZXJ0aW9uKTsKLSAgICBtX3VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktp
dCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAg
bV91cGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3NJ
ZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRl
ZE5ldHdvcmtpbmcpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyVXBsb2Fk
QXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNDMzNTQ1YzBlMzNmYWFlZWQ5ZGViYjM0ZjZiMjBj
ZmNhZTVlOTVjOC4uNTk1YjNlZTQxNWNkZjcwNDYwOWM1MzZjOTBhYmEyNTk3MTdkNDY3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkg
ZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVnaXN0
cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBUb3BG
cmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJhYWZmMWVjMmE2NTQ5MGQ4ODU0Mzk5NmJm
ODEwMmMyZDQ5YzUwNDIuLjQ3YTNlOWIyM2JhMTI2NTE5OGI2MGVkZGY2YzRkZDk4NmZjZDIwMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTU2LDE0ICs1
NiwxNCBAQCBSZWY8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUAogCiBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vz
c1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1f
cHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQor
ICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkp
CiB7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsK
ICAgICBpZiAoIXByb3ZpZGVyKSB7Ci0gICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBt
YWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlYzY0YmM5ZTE2
MmNiN2NhMWU3NTM3ZTkzMzFkNGYxMzk1ODdlYzQxLi42Y2Y1ZTE0ZWE1NjlmMjNkYTg0NzU0MDk2
Y2E1MTE0NTNjMjk4YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0x
NjgsNiArMTY4LDcgQEAgdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7CiAj
ZW5kaWYKIAogY2xhc3MgUGFnZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWdlQ2xp
ZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UGFnZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKaW5kZXggMDFhN2RhN2I4OTFh
OTAwNjZjOTBlODQyOWM2NTZiZDcwMGIxNjZiZC4uZWE0MzkyN2Q0OGQ3NTJiZWI2NzI4MDk0OTlj
OWFkMGJmZTA3YmM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFz
cyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihXZWJQ
cm9jZXNzUG9vbCYpOwogICAgIH5QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJv
Y2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggZjZmNDc5YjFlMDM5MmYzMjIxNjBhNjQ5
NGFlYzYyZTBhMDY3OTZkZC4uODQzNjlkMzM0NDA3Y2ZiYzJlODNhYTgyN2M1Y2MwZTVkYjkxMjJl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
blByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYQogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyBib29sIHBsdWdp
blJlcXVpcmVzR3RrMihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KHBsdWdpblBh
dGgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IG1ha2VVbmlxdWU8TW9k
dWxlPihwbHVnaW5QYXRoKTsKICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPGdwb2ludGVyPigi
Z3RrX29iamVjdF9nZXRfdHlwZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmNwcAppbmRleCAwMGE5OTE4ODYxNDg3MzkzOGE2Y2I0YWJkOTkxNGJjODYyOTQ1
Y2Y3Li40Y2UyNjJlOWRjYmI0YjFiMGZmMGFkNWRiOTdlYjk3ZjM2MDczNzVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtMTAzLDkgKzEwMyw5
IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2VzcyhQcm9jZXNzSUQg
cGlkKQogCiAgICAgbV9zdXNwZW5kVGltZXIuc3RvcCgpOwogICAgIGlmIChtX3Nob3VsZFRha2VV
SUJhY2tncm91bmRBc3NlcnRpb24pCi0gICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHki
X3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8
UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBh
c3NlcnRpb25TdGF0ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5
Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2Vy
dGlvblN0YXRlKCkpOwogICAgIG1fcHJvY2Vzcy5kaWRTZXRBc3NlcnRpb25TdGF0ZShhc3NlcnRp
b25TdGF0ZSgpKTsKICAgICBtX2Fzc2VydGlvbi0+c2V0Q2xpZW50KCp0aGlzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggNjBmMDJj
NjEwZmNkOTg4MzA2MzljNTdiM2U5ZDYxZmYxZmQ1MjVmZC4uMjc0YWJkMzAyOWMwMDc3MzM5ZGZl
Mzc0OGZmMzA2OTdjOWI0OGI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkubW0KQEAgLTEwNyw3ICsxMDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKQogICAgIDogRHJhd2luZ0FyZWFQcm94eShEcmF3aW5nQXJlYVR5cGVSZW1v
dGVMYXllclRyZWUsIHdlYlBhZ2VQcm94eSwgcHJvY2VzcykKLSAgICAsIG1fcmVtb3RlTGF5ZXJU
cmVlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKKyAg
ICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+
KCp0aGlzKSkKIHsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJIHByb2Nlc3MuCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp1cGRhdGVEZWJ1Z0luZGljYXRvcihJ
bnRTaXplIGNvbnRlbnRzU2l6ZSwKIAogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKQogewotICAgIG1fZGVidWdJbmRpY2F0b3JM
YXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhp
cyk7CisgICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3QgPSBtYWtlVW5pcXVlPFJlbW90
ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKICAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9z
dC0+c2V0SXNEZWJ1Z0xheWVyVHJlZUhvc3QodHJ1ZSk7CiAKICAgICBtX3RpbGVNYXBIb3N0TGF5
ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5tbQppbmRleCAzMDAyNWQ0Mjk5ZjNiY2EwNDg1ZDMwNGQ4MzM1ODE3NjEwYmE1MGJkLi44
YTRlNTA0ODE3ZWJjMTI1Y2U4OThjMWMyOTFkOWE2ZTRkNWY1ODJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3Jl
CiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9z
dDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRp
b25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIGF1dG8gbWFrZVdpdGhMYXllciA9IFsm
XSAoUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZShs
YXllcikpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihw
cm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKICAgICB9OwogICAgIGF1dG8gbWFr
ZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENBTGF5ZXIqIGxheWVyKSB7CiAgICAgICAgIHJldHVybiBt
YWtlV2l0aExheWVyKGFkb3B0TlMobGF5ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0K
aW5kZXggZTg4YmJjNjA4ZDRmYjA1ODM4NGQyOWIyNjk4MTU5MmVkYTgxNGViYS4uNGZkNGVhMjY5
ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBkODQyNDA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW0KQEAgLTczLDcgKzczLDcgQEAgUmVtb3RlTGF5ZXJUcmVlTm9kZTo6flJlbW90ZUxheWVy
VHJlZU5vZGUoKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxh
eWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKQogewogICAgIFJldGFpblB0cjxDQUxheWVyPiBsYXll
ciA9IGFkb3B0TlMoW1tXS1BsYWluUmVtb3RlTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihsYXllcklELCBXVEZNb3Zl
KGxheWVyKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4obGF5
ZXJJRCwgV1RGTW92ZShsYXllcikpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZU5vZGU6OmRl
dGFjaEZyb21QYXJlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCmluZGV4IGMyNzgxZGM4YWRhMzQzMzlmNzllZDg1YTdl
M2U5ZmY3NjUyMjI1MjguLjI5ZGZlZmU2Y2I3MmMxMjBhNjFjYzIyZDBkM2JhNjRhNmQ5NDQyNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OwogCiBjbGFzcyBSZW1vdGVMYXllclRyZWVT
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YShSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Jik7CiAgICAgflJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5LmgKaW5kZXggODZkMGRlZmM2OTY1ZTRmYTZiYTExNjQ3NjFiYzlhYzcxOThj
NzJlNi4uMWE3Njk0M2YyNDViZTFjZDgyMmYxOTYxM2NkZDM1ZjU0MGE5NGNkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCkBAIC00OSw2ICs0OSw3
IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGluZ1RyZWU7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNs
YXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJl
ZUhvc3RJT1MubW0KaW5kZXggNjI5YTljNjUwZDQzYzBkNTYxYzgxOTMzYmEwZDE0ZThkMzNlYTQ0
NC4uMGMxMjZhZTZhZjc1ZTQxMzhhZmQwMDg2ODM5NTY2MjlmZjcwMDIzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPFVJVmlldz4gY3JlYXRlUmVtb3RlVmlldyhwaWRfdCBwaWQsIHVpbnQzMl90IGNv
bnRleHRJRCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJDcmVhdGlvblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7CiAgICAgYXV0byBtYWtlV2l0aFZp
ZXcgPSBbJl0gKFJldGFpblB0cjxVSVZpZXc+IHZpZXcpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZN
b3ZlKHZpZXcpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9k
ZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKICAgICB9OwogICAgIGF1dG8g
bWFrZUFkb3B0aW5nVmlldyA9IFsmXSAoVUlWaWV3KiB2aWV3KSB7CiAgICAgICAgIHJldHVybiBt
YWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KaW5kZXggODFh
MmViOWE2MzVkNTk4NDE2MDBmNzgzNTIwNGFjODRiZDZkNWMyOC4uYjg5MDY4MWU5ZTdhNTEzYmEz
NDM2N2NlZjM5ODliZTNiMTlkOWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQpAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgUwogCiAgICAgaWYgKHN0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWlu
ZXJMYXllcikpIHsKICAgICAgICAgaWYgKHNjcm9sbENvbnRhaW5lckxheWVyKCkpCi0gICAgICAg
ICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOworICAgICAgICAgICAgbV9zY3Jv
bGxpbmdOb2RlRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M+KCp0aGlzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9zY3JvbGxp
bmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQppbmRleCBiNTZl
MmVhNjRkYTUyMDMxZGZhZjEyOGVjMjQ4Y2QxNWM3MTAwOTI2Li5kMGJkZDNjNTdkYmJjYmVmMDcw
ZTg1MWFmZTA0ZWVlNmFhYjU3ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCkBAIC00Myw3ICs0Myw3IEBA
IFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEIG5v
ZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoc2Nyb2xsaW5n
VHJlZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCisgICAg
LCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCA2NDg5
YThlNzQ0MmQ3YjE3MDUyOTViNjJlZWI1YzAyNWM3YTliMzNhLi5lNjM3ZDYxNTMyNWQzODBjZTky
ZDA3YTJiMTIxOTEzZmYxODFkZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtNDgsNiArNDgsNyBAQCBj
bGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIDogcHVibGljIFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmKTsK
ICAgICB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUygpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2N2MwYjYxNjJlMDY3ODNjZjM3NmNm
NjE5MDdlMi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3OWM3NDUyOTQzNzI5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNj
cm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDog
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlVHlwZSwgbm9kZUlE
KQotICAgICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+
KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFj
PigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90
ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IGQ4OTYw
Y2VjMzBlNDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMuLmI2Y2EzY2JiYTgwODA3YWY3Yjlm
Njk5YmU5YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90
ZU1hYz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTgogCiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVJRCBub2Rl
SUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5v
ZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWly
TWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFp
ck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXIuaAppbmRleCBmMjYxZjUyNjgxNTJkMGZkZGI2ODU1MWE4NjAx
NTJlNDE2N2QwYWVjLi4yYjkwZTFiODljMGFhNWVlZWFmMDU0ZGU0MjhkZWVkNDBlNjNhOGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
LmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJv
eHk7CiAKIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxl
cihXZWJQYWdlUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKaW5kZXgg
ZjUwNWUyODBjNDQyOTBhODAzZGJkYjY4Yzk4ZWVhNjMwYjFjOWJiNi4uODY4YjU0ZTc5MmFmMmFi
ZDk4NmJjODY2MDA1Y2IxMmY0NTY4MjQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5CiAgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgogI2VuZGlmCiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5Jik7CiAgICAgflVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5t
bQppbmRleCA5ZWFlMThlZGQ1ZjRkMmRjNWRmMzhlOTZkMDUwNTA5M2JjYTliMzk4Li5hYmQwZTdl
NzI5NDc5MTI4Y2I2YWZmZjdmMjE4MTI2M2U0ZGE5ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZp
Y2UubW0KQEAgLTkyLDcgKzkyLDcgQEAgVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+IEhpZFNlcnZp
Y2U6OmNyZWF0ZUhpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogCiB2b2lkIEhp
ZFNlcnZpY2U6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKLSAgICBhdXRv
IGRyaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVj
dGlvbihkZXZpY2UpKTsKKyAgICBhdXRvIGRyaXZlciA9IG1ha2VVbmlxdWU8Q3RhcEhpZERyaXZl
cj4oY3JlYXRlSGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKICAgICAvLyBHZXQgYXV0aGVudGljYXRv
ciBpbmZvIGZyb20gdGhlIGRldmljZS4KICAgICBkcml2ZXItPnRyYW5zYWN0KGVuY29kZUVtcHR5
QXV0aGVudGljYXRvclJlcXVlc3QoQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdl
dEluZm8pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHB0ciA9IGRyaXZlci5nZXQo
KV0oVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5oCmluZGV4IDg1Y2U2OTA2MTExNDQyYmM2NzljYzdhNzc1Yjg2ODJkZDE1NzI4Yzku
LmY4NTJiZWQyMTMwYjQ3YzJmN2RkMjk4YWQzNTZhZWFjODdjMDI2ODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApAQCAtNDQsNiArNDQs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSk7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggOTlkNmVhMzM0MTUzZWNmNDlkNDU4NGM3NDNkYzY4MTY4ODQxNTUyMC4u
ODQ2YTVhYTI3ZGZhYjNkMjc0Y2ZmYTQ4NzM4NjFmMjU4N2QxN2ZkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApA
QCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1BvbwogCiBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wq
IHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0g
ICAgLCBtX3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVy
PigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRl
cj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CkBAIC01NCw3ICs1NCw3IEBAIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9v
bCogcHJvY2Vzc1BvCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRl
cihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQog
ewogICAgIGlmICghcHJvdmlkZXIpCi0gICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1h
a2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgIGVsc2UKICAgICAgICAg
bV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKaW5kZXggMmNk
Y2QxNzY1Mjk5ZmU3NzY0OWJhYmY5ZGUzZTc0ZThiMGYwMGUzNy4uMzM2NGJjYmNjOTExODRhNmJh
NzU0MWVmOTBiMGY5NjA0Y2RlNGRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnVwZGF0ZVBsYXliYWNrQXR0cmli
dXRlc0Zyb21NZWRpYVN0YXRlKFdlYlBhZ2UKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFnZVByb3h5JiBwcm94eSwgdWludDY0
X3QgZWxlbWVudElEKQogewotICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOworICAgIG1fZm9j
dXNlZE1lZGlhRWxlbWVudCA9IG1ha2VVbmlxdWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5
LCBlbGVtZW50SUQpOwogfQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y2xl
YXJGb2N1c2VkTWVkaWFFbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2
aWdhdGlvblN0YXRlLmgKaW5kZXggOWViOWQyOGFkZGQ1YjViMDA2ZDUwYjA4YTNkNzRmYjY5ZDE2
MjM5Mi4uMTZhNzU5YWM4YTFmZjMxNDYwNWIwOTQ2ZmZjNWFhNjU4MThlMDc0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIAog
Y2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICB+V2ViTmF2
aWdhdGlvblN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IDY1Mjk4MmE4MTJhOWVmYmVmNTIxYTZhOTg5
OWZhNGJlZTVmYWYzNGMuLjFiMjlmNzlkZGZhZWEwN2I5ZTcyNDliZDc3MjM4NGVlYmY1MzBmZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQgOiBwdWJs
aWMgQVBJOjpDbGllbnQ8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9i
amVjdCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCosIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGM0YjkyYzgzY2ZlYTI5YjMxZWRiYjM0YWE4NDAyNWJhNWM4YjAzYjcuLmJkYTU5Y2Q4MDUx
NTc2NDZiMzA4ZDJmZDIzNmYzZDExODI3MWUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRS
b3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKIHsKLSAgICBhdXRvIHRh
cmdldEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQ+
KG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAg
IGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2Vu
dD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAK
ICAgICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdmYTJiNGQ2ZDNjMTY2MWE3MDAzYjc3ODU1
OGRhN2MyZmYyNGYwN2UuLjBiNDBkYjI3NzgzZmRlOWQyNTZmZjUyOTJlZWE3ZWJmZTMxNmNhMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzk3LDE1ICsz
OTcsMTUgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICAgICAsIG1fY29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlx
dWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KG1h
a2VVbmlxdWVSZWY8QVBJOjpIaXN0b3J5Q2xpZW50PigpKQotICAgICwgbV9pY29uTG9hZGluZ0Ns
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCkpCi0gICAgLCBt
X2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBt
X3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKLSAgICAsIG1fZmlu
ZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKLSAgICAsIG1fZmlu
ZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50Pigp
KQorICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdD
bGllbnQ+KCkpCisgICAgLCBtX2Zvcm1DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+
KCkpCisgICAgLCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKKyAgICAs
IG1fZmluZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKKyAgICAsIG1fZmlu
ZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpKQogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51
Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKICNlbmRpZgotICAg
ICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+
KCkpCisgICAgLCBtX25hdmlnYXRpb25TdGF0ZShtYWtlVW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0
ZT4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAoKm1fY29u
ZmlndXJhdGlvbi0+cGFnZUdyb3VwKCkpCiAgICAgLCBtX3ByZWZlcmVuY2VzKCptX2NvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VzKCkpCkBAIC00MTYsNyArNDE2LDcgQEAgV2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCBQYWcKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgeyBtX2NvbmZp
Z3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgfQogICAgICwgbV90cmVh
dHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZpZ3VyYXRpb24tPnRyZWF0c1NIQTFT
aWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2Ny
ZWVuQ2xpZW50PigpKQorICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpG
dWxsc2NyZWVuQ2xpZW50PigpKQogI2VuZGlmCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKnRoaXMpCkBAIC00MzUsOSArNDM1LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCBQYWcKICNlbmRpZgogICAgICwgbV9wYWdlTG9hZFN0YXRlKCp0aGlzKQogICAgICwgbV9jb25m
aWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhtX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1
ZXMoKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6
bWFrZV91bmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9y
RGVidWdnYWJsZShtYWtlVW5pcXVlPFdlYlBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYK
ICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7CkBAIC00NzcsNyArNDc3
LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6
OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10gewor
ICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BP
YnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25S
dW5Mb29wT3JkZXJzOjpBY3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNdIHsKICAgICAgICAgdGhp
cy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTYw
MSw3ICs2MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4mJiBwb2xpY3lDbAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNsaWVudD4mJiBmb3JtQ2xp
ZW50KQogewogICAgIGlmICghZm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1DbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYgdWlD
bGllbnQpCiB7CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgICAgICBtX3VpQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02
MjgsNyArNjI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYKIHsKICAgICBib29sIGhhc0Ns
aWVudCA9IGljb25Mb2FkaW5nQ2xpZW50LmdldCgpOwogICAgIGlmICghaWNvbkxvYWRpbmdDbGll
bnQpCi0gICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SWNvbkxvYWRpbmdDbGllbnQ+KCk7CisgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2lj
b25Mb2FkaW5nQ2xpZW50ID0gV1RGTW92ZShpY29uTG9hZGluZ0NsaWVudCk7CiAKQEAgLTY1MCw3
ICs2NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0
ZDo6dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcgogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50
KQogewogICAgIGlmICghZmluZENsaWVudCkgewotICAgICAgICBtX2ZpbmRDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKKyAgICAgICAgbV9maW5kQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50KQogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRN
YXRjaGVzQ2xpZW50PiYmIGZpbmRNYXRjaGVzQ2xpZW50KQogewogICAgIGlmICghZmluZE1hdGNo
ZXNDbGllbnQpIHsKLSAgICAgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICAgICAgbV9maW5kTWF0Y2hlc0NsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREaWFn
bm9zdGljTG9nZ2luZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEaWFnbm9zdGljTG9nCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6Q29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGllbnQpCiB7CiAgICAgaWYgKCFj
b250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRleHRN
ZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
QmFzZSoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5qZWN0ZWRCdW5kbGVDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKKyAg
ICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KCk7CiAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+aW5pdGlhbGl6ZShjbGll
bnQpOwogfQogCkBAIC03NzYsNyArNzc2LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRD
dXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAg
ICB9CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9j
ZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgYXV0byBz
dXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlz
LCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1Vu
dGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CisgICAgYXV0byBzdXNwZW5k
ZWRQYWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3Mu
Y29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAi
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHBy
b2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKS50b1VJ
bnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkg
OiAwKTsKIApAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hU
b1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBBU1NF
UlQoIW1fZnVsbFNjcmVlbk1hbmFnZXIpOwotICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50
KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKKyAgICBtX2Z1bGxTY3JlZW5NYW5h
Z2VyID0gbWFrZVVuaXF1ZTxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PigqdGhpcywgcGFnZUNs
aWVudCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSk7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIEFTU0VSVCghbV9wbGF5YmFja1Nlc3Np
b25NYW5hZ2VyKTsKQEAgLTg2MCwyMiArODYwLDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRB
dHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAgICAgQVNT
RVJUKCFtX3BheW1lbnRDb29yZGluYXRvcik7Ci0gICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAg
bV9wYXltZW50Q29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBBU1NF
UlQoIW1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIpOwotICAgIG1fc3lzdGVtUHJldmlld0NvbnRy
b2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhpcyk7
CisgICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8U3lzdGVtUHJldmll
d0NvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAg
ICBBU1NFUlQoIW1fY3JlZGVudGlhbHNNZXNzZW5nZXIpOwotICAgIG1fY3JlZGVudGlhbHNNZXNz
ZW5nZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
PigqdGhpcyk7CisgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG1ha2VVbmlxdWU8V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgSEFWRShQ
RU5DSUxLSVQpCiAgICAgQVNTRVJUKCFtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyKTsKLSAgICBt
X2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFZGl0YWJsZUltYWdl
Q29udHJvbGxlcj4oKnRoaXMpOworICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBtYWtl
VW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAt
OTQzLDcgKzk0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmF3aW5nQXJlYShzdGQ6OnVu
aXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlCiAKICNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9kcmF3aW5nQXJlYS0+
dHlwZSgpID09IERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSkgewotICAgICAgICBtX3Nj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRv
clByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5PigqdGhp
cyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gT24gaU9TLCBtYWluIGZy
YW1lIHNjcm9sbHMgYXJlIHNlbnQgaW4gdGVybXMgb2YgdmlzaWJsZSByZWN0IHVwZGF0ZXMuCiAg
ICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS0+c2V0UHJvcGFnYXRlc01haW5GcmFt
ZVNjcm9sbHMoZmFsc2UpOwpAQCAtMTAwNiwxNyArMTAwNiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xvc2UoKQogICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX25hdmlnYXRp
b25DbGllbnQgPSBtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKTsKICAgICBt
X3BvbGljeUNsaWVudCA9IG51bGxwdHI7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKLSAgICBtX2Zvcm1DbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKLSAgICBtX3VpQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwotICAgIG1fZmluZENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwotICAgIG1fZmluZE1hdGNoZXNDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CisgICAgbV9p
Y29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsK
KyAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAgICBt
X3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgIG1fZmluZENsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgIG1fZmluZE1hdGNoZXNDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CiAgICAgbV9kaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0g
ICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVu
dUNsaWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNv
bnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQot
ICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVu
Q2xpZW50PigpOworICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGdWxs
c2NyZWVuQ2xpZW50PigpOwogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
cmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlzKTsKQEAgLTEyMjYsNyArMTIyNiw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBt
X25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVuY29kaW5n
LCBiYXNlVVJMLCB1c2VyRGF0YSkpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlv
blN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24obWFrZVVuaXF1ZTxBUEk6OlN1YnN0aXR1
dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJE
YXRhKSk7CiAgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJE
YXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQsIHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQpAQCAt
MjQxNSw3ICsyNDE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxO
YXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKKyAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBt
YWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBjb2FsZXNjZWRX
aGVlbEV2ZW50LT5hcHBlbmQoZXZlbnQpOwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxF
dmVudHMuYXBwZW5kKFdURk1vdmUoY29hbGVzY2VkV2hlZWxFdmVudCkpOwogICAgIHNlbmRXaGVl
bEV2ZW50KGV2ZW50KTsKQEAgLTI0MjMsNyArMjQyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50KCkKIHsKLSAgICBhdXRv
IG5leHRDb2FsZXNjZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldo
ZWVsRXZlbnQ+PigpOworICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CiAgICAgV2ViV2hlZWxFdmVudCBuZXh0V2hl
ZWxFdmVudCA9IGNvYWxlc2NlZFdoZWVsRXZlbnQobV93aGVlbEV2ZW50UXVldWUsICpuZXh0Q29h
bGVzY2VkRXZlbnQuZ2V0KCkpOwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMu
YXBwZW5kKFdURk1vdmUobmV4dENvYWxlc2NlZEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQo
bmV4dFdoZWVsRXZlbnQpOwpAQCAtMjk4NCw3ICsyOTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIHMKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwogICAgIH0KIAotICAg
IG1fcHJvdmlzaW9uYWxQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94
eT4oKnRoaXMsIG5ld1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2VQcm94
eSksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJ
c1JlZGlyZWN0KCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCk7CisgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zp
c2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3Vz
cGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5j
dXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKIAogICAgIGlmIChhdXRvKiBpdGVtID0gbmF2
aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJv
eHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMi
LCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTU3MDIsNyArNTcwMiw3IEBA
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6ZnVsbFNjcmVlbk1hbmFn
ZXIoKQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQp
IHsKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1
bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03NDM3LDcgKzc0MzcsNyBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSYgV2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogICAgIGlmIChtX3Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKICAgICAgICAgcmV0dXJuICptX3VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAotICAgIG1fdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eT4oKnRoaXMpOworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyID0gbWFrZVVuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eT4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI7CiB9CiAKQEAgLTgxNDMsNyArODE0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRT
Y3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAg
bV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CiAKICAg
ICBpZiAobV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCAmJiAhbV9zY3Jv
bGxpbmdQZXJmb3JtYW5jZURhdGEpCi0gICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGE+KGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdB
cmVhKSk7CisgICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbWFrZVVuaXF1ZTxS
ZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+KGRvd25jYXN0PFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdBcmVhKSk7CiAgICAgZWxzZSBpZiAo
IW1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQpCiAgICAgICAgIG1fc2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbnVsbHB0cjsKIH0KQEAgLTkxOTAsNyArOTE5MCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFNwZWVjaFN5bnRoZXNpemVyKCkKIFdlYlBhZ2VQcm94
eTo6U3BlZWNoU3ludGhlc2lzRGF0YSYgV2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVzaXNEYXRh
KCkKIHsKICAgICBpZiAoIW1fc3BlZWNoU3ludGhlc2lzRGF0YSkKLSAgICAgICAgbV9zcGVlY2hT
eW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3Bl
ZWNoU3ludGhlc2lzRGF0YSB7IG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4o
dGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKICAg
ICByZXR1cm4gKm1fc3BlZWNoU3ludGhlc2lzRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBiNDM4M2NhZjg4ZjM3MjcyY2Y5NDc3YjY0MDM5Y2U5ZWY1
Yzk0OWExLi4xN2JmNWZhOWJlMTdlNjM4NWMyM2JiODc0NWExYjVkM2FjNzhjZjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzQ3LDggKzM0Nyw3IEBAIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVp
bnQzMl90PiBUb3VjaGVzQ2FsCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mPiBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrOwogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiY+IEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb25DYWxsYmFjazsKIHN0cnVjdCBFbGVtZW50RGlkRm9jdXNBcmd1
bWVudHMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgorICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
IGluZm9ybWF0aW9uOwogICAgIGJvb2wgdXNlcklzSW50ZXJhY3Rpbmc7CiAgICAgYm9vbCBibHVy
UHJldmlvdXNOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5j
cHAKaW5kZXggOGJkZjhjZjgzODhjZGM3YmZhY2ZmMmI3ZTYwNWQwYTgxOGRhYWM2NC4uOTYyZjNi
ZWQyZDgyNTY5YTA3ZGQ0ZTljZGFiOGZjYzcyMTE5ZjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyID0gZ2VuZXJhdGVBZGRSZXF1ZXN0SWRlbnRpZmllcigpOwotICAgIG1fcGVuZGluZ0Fk
ZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRQ
cm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOworICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFk
ZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuaXF1ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNv
cHlSZWYoKSkpOwogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQ
cm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxlKCk6IENoZWNraW5nIGlmIHByb2Nlc3Mg
JWkgaXMgcmVzcG9uc2l2ZSBiZWZvcmUgY2FjaGluZyBpdC4uLiIsIHRoaXMsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIHByb2Nlc3MtPmlzUmVzcG9uc2l2ZShbdGhpcywgcHJv
Y2Vzc1Bvb2wgPSBtYWtlUmVmKHByb2Nlc3MtPnByb2Nlc3NQb29sKCkpLCByZXF1ZXN0SWRlbnRp
Zmllcl0oYm9vbCBpc1Jlc3BvbnNpdmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAppbmRleCBkYmUyNTM1MmI1MjU4OGQ4YTNjYzg2OTQ4NDQ0MGU3OWU4NWEw
OTZkLi5mZWRhOGVlOGU4ZDMwZjM5NGZmMTA4ZmJmYTgwNDE1ZDgxMDc3YTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yMzMsMTUgKzIzMywxNSBA
QCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2Jh
bFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdAogV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29s
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9j
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24uY29weSgpKQogICAgICwgbV9kZWZhdWx0UGFnZUdy
b3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCi0gICAgLCBtX2luamVjdGVkQnVuZGxlQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKLSAgICAsIG1f
YXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4o
KSkKLSAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2Fk
Q2xpZW50PigpKQotICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpM
ZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKLSAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCkpCisgICAgLCBtX2luamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZUNsaWVudD4oKSkKKyAgICAsIG1fYXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVl
PEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKKyAgICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQorICAgICwgbV9oaXN0b3J5Q2xpZW50KG1ha2VV
bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyAgICAsIG1fY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQ+KCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6
Y3JlYXRlKCkpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFw
aGljc1VzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNz
VXNhZ2VTYW1wbGVyPigqdGhpcykpCi0gICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNh
bXBsZXIoc3RkOjptYWtlX3VuaXF1ZTxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigq
dGhpcykpCisgICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKG1ha2VV
bmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAs
IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihtYWtlVW5pcXVlPFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9hbHdheXNSdW5z
QXRCYWNrZ3JvdW5kUHJpb3JpdHkobV9jb25maWd1cmF0aW9uLT5hbHdheXNSdW5zQXRCYWNrZ3Jv
dW5kUHJpb3JpdHkoKSkKICAgICAsIG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbiht
X2NvbmZpZ3VyYXRpb24tPnNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24oKSkKQEAgLTM2
NCw3ICszNjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLQ29udGV4dENsaWVudEJhc2UqIGNsaWVudCkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldElu
amVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlQ2xp
ZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9pbmplY3RlZEJ1
bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4o
KTsKKyAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1faW5qZWN0ZWRCdW5kbGVD
bGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29u
bmVjdGlvbkNsaWVudEIKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+JiYgaGlzdG9yeUNs
aWVudCkKIHsKICAgICBpZiAoIWhpc3RvcnlDbGllbnQpCi0gICAgICAgIG1faGlzdG9yeUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKTsK
KyAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gV1RG
TW92ZShoaXN0b3J5Q2xpZW50KTsKIH0KQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRl
eHRIaXN0b3J5Qwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgZG93bmxvYWRDbGllbnQpCiB7CiAgICAg
aWYgKCFkb3dubG9hZENsaWVudCkKLSAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKTsKKyAgICAgICAgbV9kb3dubG9hZENsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAg
IG1fZG93bmxvYWRDbGllbnQgPSBXVEZNb3ZlKGRvd25sb2FkQ2xpZW50KTsKIH0KQEAgLTM5Myw3
ICszOTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4mJiBkbwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50
PiYmIGF1dG9tYXRpb25DbGllbnQpCiB7CiAgICAgaWYgKCFhdXRvbWF0aW9uQ2xpZW50KQotICAg
ICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlv
bkNsaWVudD4oKTsKKyAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkF1dG9tYXRpb25DbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2F1dG9tYXRpb25DbGll
bnQgPSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQpAQCAtNDAyLDcgKzQwMiw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpDCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9D
T0xfTUFOQUdFUikKICAgICBpZiAoIWN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCkKLSAgICAg
ICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpOworICAgICAgICBtX2N1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9
IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KTsKICNlbmRpZgpAQCAtNDkyLDcg
KzQ5Miw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3
b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgIHJldHVybiAqbV9uZXR3
b3JrUHJvY2VzczsKICAgICB9CiAKLSAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5PigqdGhpcyk7CisgICAgYXV0byBuZXR3b3JrUHJv
Y2VzcyA9IG1ha2VVbmlxdWU8TmV0d29ya1Byb2Nlc3NQcm94eT4oKnRoaXMpOwogCiAgICAgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIApAQCAtMjUxMCw3ICsy
NTEwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlv
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWEKICAgICAgICAgbV9wcmV3YXJtSW5mb3Jt
YXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUobV9wcmV3YXJtSW5mb3JtYXRpb25QZXJS
ZWdpc3RyYWJsZURvbWFpbi5yYW5kb20oKSk7CiAKICAgICBhdXRvJiB2YWx1ZSA9IG1fcHJld2Fy
bUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4uZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWlu
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlByZXdhcm1J
bmZvcm1hdGlvbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6UHJld2Fy
bUluZm9ybWF0aW9uPigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICp2YWx1ZSA9
IHByZXdhcm1JbmZvcm1hdGlvbjsKQEAgLTI1NTcsMTIgKzI1NTcsMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lEKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT50YWtlVXBsb2FkQXNzZXJ0aW9uKCk7CiAg
ICAgICAgIAogICAgICAgICBBU1NFUlQoIW1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uKTsKLSAg
ICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBB
c3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fdWlQcm9jZXNz
VXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50
UHJvY2Vzc0lEKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRl
ZE5ldHdvcmtpbmcpOwogICAgIH0KICAgICAKICAgICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc2Vz
V2l0aFVwbG9hZHMuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5p
c05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0
IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0
YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xl
YXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCkBAIC0y
NTk5LDEyICsyNTk5LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NJc1Bs
YXlpbmdBdWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpCiAgICAgICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVGhlIG51bWJlciBvZiBwcm9jZXNzZXMgcGxheWlu
ZyBhdWRpYmxlIG1lZGlhIGlzIG5vdyBvbmUuIFRha2luZyBVSSBwcm9jZXNzIGFzc2VydGlvbi4i
KTsKIAogICAgICAgICBBU1NFUlQoIW1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbik7
Ci0gICAgICAgIG1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IE1l
ZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVh
c29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNz
ZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lE
KCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5k
LCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOwogICAgIH0KIAogICAgIGF1dG8gcmVz
dWx0ID0gbV9wcm9jZXNzZXNQbGF5aW5nQXVkaWJsZU1lZGlhLmFkZChwcm9jZXNzSUQsIG51bGxw
dHIpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3Rh
dGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CisgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0
aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVN
ZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlMTY5MTM3ZjUzODlkMzBiYjhi
MTFiM2E4ZTFmNTBjYTQzYWEwNmVkLi4xZTNjZGRlOGZiZTg4ZTg1ZDgwMjk4Nzc5N2Y4MTJlZWM1
MjViMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTE1MSw3ICsxNTEsNyBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQ
cm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAgICAgLCBtX3Zpc2li
bGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRS
ZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUod2Vic2l0
ZURhdGFTdG9yZSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0aGlzKSkKKyAgICAsIG1fdXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+
KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9pc1ByZXdhcm1lZChpc1ByZXdhcm1lZCA9PSBJc1By
ZXdhcm1lZDo6WWVzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IGU5ZmNmMDAxNTM5
OTVkYzFjY2UxMzVmOGMwOTJlOTJlNjZkYmZmM2EuLmQwYmJhNTY0YzI3NTgyZDc4MjZlOWYyYzIw
NjIyMzcwMjI3Mjk1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcg
QEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlQ2xpZW50KCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNw
cAppbmRleCAxODI5NGQzN2ZlNDllZWQ2ZDY5ZGZmZmY1ZjJmNjUwNzBiNjZjZDkwLi43YmRkMDNk
M2M4ZWM4ZTA2NjJlNzdkMDE4MjUwYjUwODhjMjZjZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC01NCwxMiArNTQs
MTIgQEAgc3RkOjp1bmlxdWVfcHRyPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybz4gQmFja2luZ1N0
b3JlOjpjcmVhdGVCYWNrZW5kKCkKICAgICAgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBndGtfd2lk
Z2V0X2dldF92aXN1YWwobV93ZWJQYWdlUHJveHkudmlld1dpZGdldCgpKTsKICAgICAgICAgR2Rr
U2NyZWVuKiBzY3JlZW4gPSBnZGtfdmlzdWFsX2dldF9zY3JlZW4odmlzdWFsKTsKICAgICAgICAg
QVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZl
KCkgPT0gR0RLX1NDUkVFTl9YRElTUExBWShzY3JlZW4pKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExPihHREtfV0lORE9XX1hJRChn
ZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExPihHREtfV0lORE9XX1hJRChnZGtfc2Ny
ZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwKICAgICAgICAgICAgIEdES19WSVNVQUxfWFZJ
U1VBTCh2aXN1YWwpLCBnZGtfdmlzdWFsX2dldF9kZXB0aCh2aXN1YWwpLCBtX3NpemUsIG1fZGV2
aWNlU2NhbGVGYWN0b3IpOwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxl
RmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9J
bXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9y
ZTo6cGFpbnQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cAppbmRleCBiODc0ZmIwZmIyZTJhN2U3ZWMzNmNjNDRlMzlkNjI0OTA2YTRjNWYxLi5mODg4YzBm
NDQ2YzYyNzEyN2M4Mzc1YmUwZDgxYTZhM2YyYzA5ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0yNDks
NyArMjQ5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OmNvbm5lY3Rpb25DbG9zZWQo
KQogdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QodWludDY0X3QgY29ubmVjdGlv
bklELCB1aW50NjRfdCB0YXJnZXRJRCkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW5zcGVj
dG9yUHJveHlNYXAuZW5zdXJlKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQp
LCBbdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRF0gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFy
Z2V0SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4o
KnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpOwogICAgIH0pOwogICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2hv
dygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAppbmRleCAzODMxMDAwNTg4OTRkZWMwZmI3
YjUxY2FhMDlhMjM5ZDc3ZDA4YThiLi44OTMyNzlmYmNmNThhZWFmMmFmZDZiMWE0N2MxYzc2YzIz
ZDgyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcApAQCAtNzksOSArNzksOSBAQCBi
b29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMoKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxz
ZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lv
bnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250
ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lv
bnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAz
MjApOwogI2VuZGlmCiAgICAgICAgIGlmIChnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNf
RUdMX2ltYWdlIikgfHwgZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbCIpKQogICAgICAgICAgICAgZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NB
ZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAppbmRleCBlOWFlNjU1
MmE3YTJkODYyYzRiZDRlZTEwZWQyZWMzNmU5MmY4MzFkLi5jYTY1M2U1ZWJhNzBjOTYxNTVmZjc2
NDg4YzNlZGY0MjgxZjg1NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFNlbGVjdGlvbkRh
dGEqIERyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24oR2RrRHJhZ0NvbnRleHQq
IGNvbnRleHQsIGNvCiAgICAgc3RkOjp1bmlxdWVfcHRyPERyb3BwaW5nQ29udGV4dD4mIGRyb3Bw
aW5nQ29udGV4dCA9IG1fZHJvcHBpbmdDb250ZXh0cy5hZGQoY29udGV4dCwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwogICAgIGlmICghZHJvcHBpbmdDb250ZXh0KSB7CiAgICAgICAgIEd0a1dp
ZGdldCogd2lkZ2V0ID0gbV9wYWdlLnZpZXdXaWRnZXQoKTsKLSAgICAgICAgZHJvcHBpbmdDb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEcm9wcGluZ0NvbnRleHQ+KGNvbnRleHQsIHBvc2l0aW9u
KTsKKyAgICAgICAgZHJvcHBpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEcm9wcGluZ0NvbnRleHQ+
KGNvbnRleHQsIHBvc2l0aW9uKTsKICAgICAgICAgVmVjdG9yPEdka0F0b20+IGFjY2VwdGFibGVU
YXJnZXRzKFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLmRyb3BBdG9tc0ZvckNvbnRleHQo
d2lkZ2V0LCBkcm9wcGluZ0NvbnRleHQtPmdka0NvbnRleHQpKTsKICAgICAgICAgZHJvcHBpbmdD
b250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3RzID0gYWNjZXB0YWJsZVRhcmdldHMuc2l6ZSgpOwog
ICAgICAgICBmb3IgKGF1dG8mIHRhcmdldCA6IGFjY2VwdGFibGVUYXJnZXRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCmluZGV4IDUyNTQy
MDM3MWY2MWJkNGI4ZjNjMWEzOTliN2I4MjYxYjk5NGVhMTAuLjU5MTRiN2UwZGY1NDMxYWNmNjYz
NzEwM2U2ODgwNDA0ZWQ0NDNmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgU2hhcmVhYmxl
Qml0bWFwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBEcmFnQW5kRHJvcEhhbmRsZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERyYWdBbmREcm9wSGFuZGxlcik7CiBwdWJsaWM6CiAgICAgRHJhZ0FuZERyb3BIYW5kbGVyKFdl
YlBhZ2VQcm94eSYpOwpAQCAtNjQsNiArNjUsNyBAQCBjbGFzcyBEcmFnQW5kRHJvcEhhbmRsZXIg
ewogCiBwcml2YXRlOgogICAgIHN0cnVjdCBEcm9wcGluZ0NvbnRleHQgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIERyb3BwaW5nQ29udGV4dChHZGtE
cmFnQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7CiAKICAgICAg
ICAgR2RrRHJhZ0NvbnRleHQqIGdka0NvbnRleHQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCBjYmUzODBi
MjQwZDk2MDExMTcyN2I3NzBhODI1ZTA5ZTA1NDdjOWVkLi5jM2Q5OTczYzcwZGMyMDg5YzY4M2Q2
NWE5MTNkYTI5NGQ1ZmZlYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTQyMCw5ICs0MjAsOSBAQCBib29sIFdheWxhbmRD
b21wb3NpdG9yOjppbml0aWFsaXplRUdMKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYg
VVNFKE9QRU5HTF9FUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+
IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51
bGxwdHIsICBmYWxzZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVT
PiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRy
LCAgZmFsc2UpOwogI2Vsc2UKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdM
PiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVs
bHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lv
bigpID49IDMyMCk7CiAjZW5kaWYKICAgICBpZiAoZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
T0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwiKSkKICAgICAgICAgZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NB
ZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAppbmRleCBi
YmY5M2MyMDI4NmVlNmM2NjI4YTcxODJiYWVkNDUyZjJiYzhmNzRjLi41MTRlY2E2ODliNjUxY2Nk
ZmVkNjExODUwZDJiMTRiYzJmNGM1OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaApAQCAtNDEsMTEgKzQxLDEzIEBA
IE9CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3Qg
RWRpdGFibGVJbWFnZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBkcmF3aW5nVmlldzsKICAgICBTdHJpbmcgYXR0YWNo
bWVudElEOwogfTsKIAogY2xhc3MgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShFZGl0YWJsZUltYWdlQ29udHJvbGxlcik7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIubW0KaW5kZXggYzIzNDExYzFmMDliMDEwYTY1MjU0YjM2OWRkMzE2OWQzMWYwYzBlMC4uNjFl
ODU5NGQ1YjdjNDFhYWY5ZmM4MmM2NTM4ZGI5YWQ3MTg1NjM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQpAQCAt
NTgsNyArNTgsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6fkVkaXRhYmxlSW1hZ2VDb250
cm9sbGVyKCkKIEVkaXRhYmxlSW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjplbnN1cmVF
ZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVk
ZGVkVmlld0lEKQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9lZGl0YWJsZUltYWdlcy5lbnN1cmUo
ZW1iZWRkZWRWaWV3SUQsIFsmXSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUlt
YWdlPiBpbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gbWFrZVVuaXF1ZTxFZGl0YWJs
ZUltYWdlPigpOwogICAgICAgICBpbWFnZS0+ZHJhd2luZ1ZpZXcgPSBtX3dlYlBhZ2VQcm94eS0+
cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdWaWV3KGVtYmVkZGVkVmlld0lEKTsKICAgICAgICAg
cmV0dXJuIGltYWdlOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaAppbmRleCBjNmY1MGFiMTFmM2RiMjZlMzFj
YzIwNDQzYTFlODQyYjdkODAyZjhkLi5lZmMzM2RlNmYyYTgyMjVkZmM0ZTFhMzQzYzE5YzIyZWUx
YzM0MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRW
aWV3VXBkYXRlRGVmZXJyZXIuaApAQCAtMzMsNiArMzMsNyBAQCBPQkpDX0NMQVNTIFVJVmlldzsK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IElucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyKFVJVmlldyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDcyODA3ODg2
MzgxMmU4MDljZGUwOTZlZTg5YjFmNjAyMDUwYmM0ZDEuLjAyMDExNjc5Yjc5MWY4ZTBhZDExZjFh
OGY1MjczMWFmYTMwODU3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIpOwogcHVibGljOgogICAgIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIoV0tDb250ZW50VmlldyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1t
CmluZGV4IGQwM2ExNzI2YWIzMzRhMDBlNjBmYmMwNTBiNTBlNWMzMzc1YWY3MjAuLjdmMGY5NDg0
ZmQ3Nzc0ZGQxMTU3YWUyODg1YzkwYTNiZjJlZTc5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmll
dy5tbQpAQCAtNjUsNyArNjUsNyBAQCAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogICAgIGlmICgh
c2VsZi5fY29udGVudFZpZXcud2luZG93IHx8IF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0b3Io
X2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRp
ZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9h
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsKKyAgICBfYXBwbGljYXRpb25TdGF0ZVRy
YWNrZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNlbGYs
IEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3IoX2Fw
cGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpLCBA
c2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOwogICAgIAogICAgIGlm
IChfbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kICYmICFbc2VsZiBpc0JhY2tncm91bmRd
KQogICAgICAgICBbc2VsZiBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggNjgxMWU4N2E0
YTQyMTAwNWJkOTRhN2FjMjE2NTQzZWNjMDBhNzdmYy4uNDMxZmFjZDFlNjgzOTdlYzg1NzM5MWFi
MWNmODg4ZDM4NDE1N2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2NvbW1vbklu
aXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcgog
ICAgIF9wYWdlLT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1ZSk7CiAKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi0gICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7CisgICAgX3BhZ2UtPnNl
dEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93
ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3Rp
Y3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMjM5LDcgKzIzOSw3IEBAIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wmCiAKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFnZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2Vi
Vmlldyk7CisgICAgX3BhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUNsaWVudElt
cGw+KHNlbGYsIHdlYlZpZXcpOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIHJldHVy
biBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wg
Y29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pXTsKQEAgLTU0MSw3ICs1NDEsNyBA
QCAtICh2b2lkKV93ZWJWaWV3RGVzdHJveWVkCiAKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5OihXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eSYpcHJvY2VzcwogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLCBwcm9jZXNzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk+KCpfcGFnZSwgcHJvY2Vzcyk7CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCA5ZTE2Y2NiZmQ2YjIwMWNiNTlmNzM4N2FiYWZmODE4YjU1NjA2OTcyLi5k
M2VkYTM2OWMwMzcxYzFmMmMxM2ExZDA1OTkxNWRiNmRkNWU5MmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTgwNiw3ICs4MDYsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICAgICAKICAgICBf
YWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tBY3Rpb25TaGVldEFzc2lzdGFudCBh
bGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50IHNl
dERlbGVnYXRlOnNlbGZdOwotICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYp
OworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6
OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOwogICAgIF9pc0V4cGVjdGluZ0Zh
c3RTaW5nbGVUYXBDb21taXQgPSBOTzsKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5P
OwogICAgIF9pc0RvdWJsZVRhcFBlbmRpbmcgPSBOTzsKQEAgLTgyMSw3ICs4MjEsNyBAQCAtICh2
b2lkKXNldHVwSW50ZXJhY3Rpb24KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RSSVZF
Tl9URVhUX0NIRUNLSU5HKQotICAgIF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAgX3Rl
eHRDaGVja2luZ0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5nQ29u
dHJvbGxlcj4oKl9wYWdlKTsKICNlbmRpZgogCiAgICAgX2hhc1NldFVwSW50ZXJhY3Rpb25zID0g
WUVTOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgLSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRlckZv
cldlYlZpZXcKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYgKCFfaW5wdXRWaWV3VXBkYXRl
RGVmZXJyZXIpCi0gICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CisgICAgICAgIF9p
bnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlcj4oc2VsZik7CiAKICAgICBCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVyOwog
ICAgIHsKQEAgLTUzMTEsNyArNTMxMSw3IEBAIC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czooY29u
c3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1CiAgICAg
ICAgIC8vIERlZmVyIHZpZXcgdXBkYXRlcyB1bnRpbCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24g
dG8gYXZvaWQgYSBub3RpY2VhYmxlIGZsYXNoIHdoZW4gc3dpdGNoaW5nIGZvY3VzCiAgICAgICAg
IC8vIGJldHdlZW4gZWxlbWVudHMgdGhhdCByZXF1aXJlIHRoZSBrZXlib2FyZC4KICAgICAgICAg
aWYgKCFpbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAgICAgICAgICAgIGlucHV0Vmlld1VwZGF0
ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVy
cmVyPihzZWxmKTsKKyAgICAgICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFrZVVu
aXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKICAgICAgICAgW3Nl
bGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGIwMjgyNDg5MjAwM2EwNDk4OTI5ZTcwNmE1
OTA0NTlhNGY4NzFhY2QuLmMwOGY5Nzg2ZjBlYWFiNGE5NzViYjU2NDhjNzQyN2M1NjM2ZGJlMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtOTEyLDcgKzkxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMoY29u
c3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24sCiAgICAgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwogICAgIGlmIChtX2VkaXRvclN0YXRlLmlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIGVs
aW1pbmF0ZSBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIGFsdG9nZXRoZXIsIGlu
IGZhdm9yIG9mIG9ubHkgZGVmZXJyaW5nIGFjdGlvbnMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIHBv
c3QtbGF5b3V0IGVkaXRvciBzdGF0ZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgbV9kZWZlcnJlZEVs
ZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudERpZEZvY3Vz
QXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklz
SW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2Vy
RGF0YU9iamVjdCB9KTsKKyAgICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50
cyA9IG1ha2VVbmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNB
cmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05v
ZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTI1OCw3ICsxMjU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVm
PFcKIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBXZWJQ
YWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29yZGluYXRvclByb3h5LCBQS1BheW1lbnRS
ZXF1ZXN0ICpwYXltZW50UmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXltZW50Q29vcmRpbmF0b3JQcm94
eSwgcGF5bWVudFJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVx
dWVzdCk7CiB9CiAKIFVJVmlld0NvbnRyb2xsZXIgKldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2Ny
ZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KaW5kZXggOGIx
MjNiMGE5N2MwMzBlOTQ1MGY1ZWQ0ZjhjMTc0YjMyMWJiNDA3Yi4uOGZmOGEwYmY0NzViM2Y3YjIz
NjIyOWY0MTJlM2YzMjY2Y2Y5NTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRy
b2xsZXIubW0KQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIFdLRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIg
KnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggODM0MzQ4ODljZGNmMjQ5YzFj
Mjc5MWJkMDdiZmZmYTIwMWNmNDg3ZC4uYTkxMjk1M2VjOTFjMjczMzYyNjc2M2RhZjlkYTI2YjI0
OTMzYzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbChOU1ZpZXcqIHZpZXcsIFdLV2ViVmlldyAqd2ViVmlldykKICAgICA6IFBhZ2VDbGllbnRJ
bXBsQ29jb2Eod2ViVmlldykKICAgICAsIG1fdmlldyh2aWV3KQogI2lmIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX2FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcj4oKSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCA0M2U5Zjk2
N2JjODk3N2ZiZmY4Yzg2NjhhNWNjYTFmMzgyNGMwODA5Li4zNGE2OWJiZTBiYjBkMTc2YjU1MWJh
ZjJkN2EzNWMxZmFhYzAzN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtNTQsNiArNTQs
NyBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgRGVmYXVsdFdhdGNoZG9nVGltZXJJbnRl
cnZhbCA9IDE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29yZTo6VmlkZW9GdWxs
c2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgKnBhcmVu
dCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCkBAIC0xNTAsNyArMTUxLDcgQEAgLSAoaWQpaW5p
dFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luZG93IHdlYlZpZXc6KE5TVmlldyAqKXdlYlZpZXcg
cGFnZTooV2ViS2l0OjoKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgX3BhZ2UgPSAmcGFn
ZTsKIAotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50
PigpOworICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6V0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PigpOwog
ICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldFBhcmVudChzZWxmKTsKIAogICAgIFtzZWxm
IHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IDY2MDMxN2MyZmJjNzliNjhi
YjViNzM0NzZhNThiZWZlYTA5YjA2ZDMuLjY5ZDlkOWUyZDQ0NDg0M2QxNTI3MGY1MTE3Zjc3NGNk
MjM3ZDVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRG
aW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZp
bmRlckNsaWVudC5tbQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBUZXh0RmluZGVyRmluZENsaWVudCA6IHB1Ymxp
YyBBUEk6OkZpbmRNYXRjaGVzQ2xpZW50LCBwdWJsaWMgQVBJOjpGaW5kQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0RmluZGVy
RmluZENsaWVudChXS1RleHRGaW5kZXJDbGllbnQgKnRleHRGaW5kZXJDbGllbnQpCiAgICAgICAg
IDogbV90ZXh0RmluZGVyQ2xpZW50KHRleHRGaW5kZXJDbGllbnQpCkBAIC0xNjgsOCArMTY5LDgg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBh
Z2UgdmlldzooTlNWaWV3ICopdmlldyB1c2UKICAgICBfdmlldyA9IHZpZXc7CiAgICAgX3VzZVBs
YXRmb3JtRmluZFVJID0gdXNlUGxhdGZvcm1GaW5kVUk7CiAgICAgCi0gICAgX3BhZ2UtPnNldEZp
bmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENs
aWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXRGaW5k
TWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNl
bGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4dEZp
bmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAppbmRleCBlZDBkNWZmZTk1ODlmOTVlNDRhMDdmMjIxOGVkODJjMDBmMDE3ZDdlLi5lNzRh
ZGFjMWU2NWViZTVjOTliMzFkOTA2N2FlNjExNThmMzk4N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApA
QCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpkaWRDbG9zZShD
b25uZWN0aW9uSUQpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdChDb25uZWN0
aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiB0eXBl
KQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUoc3Rk
OjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9uSUQs
IHRhcmdldElELCAmdHlwZV0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNv
bm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwogICAgIH0pOwogCiAgICAgaWYgKCFhZGRSZXN1
bHQuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCAx
YjZkOWNjNTRmYzYwYjUzZTQ0MDI3MWYyMzA4ZTdjMGY0N2M4NzRjLi5hODgzM2Y2MjQ4N2Y5YTY3
MjEwMzk5ZWM5ZjhmZjVlMDkyNzEyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94eSwKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3VyZShy
ZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwu
aG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0
VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhp
cyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgLy8gU2V0dXAgdGFyZ2V0
IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0
aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7
CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtl
VW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNl
ckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgp
LnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5k
bGVyLmdldCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbEJ1aWxkZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcAppbmRl
eCBiNjdkNzNhNGRjNDg4YjMxZmRjOWE0NzIxOTY5MTQwNDI3NDQ4ODI1Li41ZDUwYWU1NTQ2ODBh
NmU5ZTNkYTJjZTg0YmU1NjRkNWMzMjM3ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVC
YWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4obV9z
aXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5n
U3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwog
fQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRh
cmdldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGNkNmYwOGZmMThiZDU1YzE1NTQ0NjNkNGE0MGI1
MWU0NWIyZWFiOWYuLjAzMDdjNGY5ZjE0M2Y4NmRjNjIwOGI0ODRiZThkYjQyMmRjMGY0MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV2ViVmlldyYgdmll
dykKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1ZV9w
dHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJv
eHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2UoKSwg
cHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJlZ2lv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCBjZDUzNTJkZjdh
YTA0ZTY5ZDliMGY5OGVkMDAxZTVjNjMzMmY3NTkzLi42N2U1ZTRiMjdhM2FlODBhYjY2OGY2YzM0
MTdjMGYwY2U2YjdmMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3Bw
CkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBXZWJWaWV3OjpyZWdpc3RlcldlYlZpZXdXaW5kb3dD
bGFzcygpCiB9CiAKIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBjb25zdCBBUEk6OlBhZ2VD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBhcmVudFdpbmRvdykKLSAgICA6IG1f
cGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisgICAg
OiBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQogewogICAg
IHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAppbmRleCBi
NmQ0YTA0MjBkNWE1ZGJkNjQ2MDgzYWY2Nzg4MDUxYmY2Y2M0N2UwLi5mMmQ2MmVhOTc5MGY4MDdh
NjViNWQzZTU4ZjgwYjk3ZjA2YWRiZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBAIC01MSw2ICs1
MSw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlBhZ2U7CiAK
IGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZh
dGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwogICAgIGV4
cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvcihXZWJQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRl
eCA0ZjgxMGNjZjM4ZWNmYTJjOTllY2JkYTg5ZDA0MWNlYjhkMjMzM2I4Li5hYWIzNDU3Y2VkNjRh
NWE5MTBjZGM1NjJhY2MwMTE1MDBkM2M2Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFkcyhjb25zdCBW
ZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGEKICAgICAgICAgaWYgKGdhbWVwYWREYXRhc1tp
XS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fZ2FtZXBhZHNb
aV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7CisgICAg
ICAgIG1fZ2FtZXBhZHNbaV0gPSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tp
XSk7CiAgICAgICAgIG1fcmF3R2FtZXBhZHNbaV0gPSBtX2dhbWVwYWRzW2ldLmdldCgpOwogICAg
IH0KIH0KQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRD
b25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmIGdhbWVwYWREYXRhKQogCiAgICAgQVNTRVJUKCFt
X2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldKTsKIAotICAgIG1fZ2FtZXBhZHNbZ2FtZXBh
ZERhdGEuaW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRh
KTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gbWFrZVVuaXF1ZTxXZWJH
YW1lcGFkPihnYW1lcGFkRGF0YSk7CiAgICAgbV9yYXdHYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRl
eCgpXSA9IG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0uZ2V0KCk7CiAKICAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZmQ2NTIzZDZmYTdkNzU5M2QxYjhkM2IzMmJhYjQ2
M2E5NjhlYWEyOC4uNjMzZjIyZmRmZTQyNzJiMzlkZTI1ZWEwZTRhMGEwNGQ3Y2RlNmNjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM3
LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXggMGJi
NGYyYjQyMWEzZWMyMjg3NTRlNjM4MjlkNDFhYmJlMmUwNmY4ZC4uYTZjMjg3MTZhYjE2NzhhZmRk
NTc0YzlkZjlmZTI4Njg2MzQ2MzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtNDQs
NiArNDQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGUuY3BwCmluZGV4IGYzZWM3MjA4N2NhMjg4NjdmNTRkOWRmMGY1MGQ4NzEwMmUwMTZmYTIu
LmNhODVkNTg1ZGNmMWI3NmVmMGI4ZDExZDU5YWQ2NjA0YWMzZjE4NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZUdldFR5cGVJRCgpCiAK
IHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZUNs
aWVudEJhc2UgKndrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnNl
dENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdr
Q2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9p
ZCBXS0J1bmRsZVNldFNlcnZpY2VXb3JrZXJQcm94eUNyZWF0aW9uQ2FsbGJhY2soV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmLCB2b2lkICgqY2FsbGJhY2spKHVpbnQ2NF90KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKaW5kZXggZjEyYTViYTc3NGQ2Y2M2OGQwODRmMWY2MDIxY2ViZjM4MWFhM2E1
OC4uZGMwNzU4YWQ3NWFmMzYxZGZiZTgxNmViMTEzZjQxYzdmMDlkODFjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdl
R2V0VHlwZUlEKCkKIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSogd2tD
bGllbnQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVu
dCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRl
eHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYp
OwogICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBAIC04NiwyMiArODYsMjIgQEAgdm9pZCBX
S0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwg
V0tCdW5kbGVQYWdlQ29udGUKIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudEJhc2UqIHdrQ2xp
ZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudCh3a0NsaWVudCA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFn
ZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50ID8gbWFrZVVuaXF1
ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudD4oKndrQ2xpZW50KSA6IG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpKTsKIH0KIAogdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1
bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJL
aXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlx
dWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSZWYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdl
YktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudD4o
d2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UmVzb3Vy
Y2VMb2FkQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVm
KS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQpKTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxv
YWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9h
ZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGll
bnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJhc2Uq
IHdrQ2xpZW50KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5
Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllCiAK
IHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdL
QnVuZGxlUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6
dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1ha2VVbmlxdWU8V2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBX
S0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXggZWJkM2VmNWYyOTMwOGMxNDE5M2ExODFi
N2UxZTRhNDI1ZmQyMWRkMi4uNjlmN2FmMjJiNTY3NTA0ZDRmMzFmMGQ3YTcwYjg3NGUwOWZhNTVh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcApAQCAtNTQsNiAr
NTQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlT3Zlcmxh
eUFjY2Vzc2liaWxpdHlDbGllbnRCYXNlPiB7CiB9CiAKIGNsYXNzIFBhZ2VPdmVybGF5Q2xpZW50
SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlPiwgcHVibGlj
IFdlYktpdDo6V2ViUGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGFnZU92ZXJsYXlDbGllbnRJbXBsKFdLQnVu
ZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAtMjE2LDcgKzIxNyw3
IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZU92ZXJsYXlHZXRUeXBlSUQoKQogCiBXS0J1bmRsZVBh
Z2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQYWdlT3Zlcmxh
eUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAgYXV0byBjbGll
bnRJbXBsID0gbWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAg
ICByZXR1cm4gdG9BUEkoJldlYktpdDo6V2ViUGFnZU92ZXJsYXk6OmNyZWF0ZShXVEZNb3ZlKGNs
aWVudEltcGwpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tC
dW5kbGVQYWdlQmFubmVyTWFjLm1tCmluZGV4IGFjYzM1YTIxYjU5ZjFhYTMxZTMzMDUxYTY2YmMx
MzA1OTk2Njk5ZDMuLmQ2ZmZkMWNjYzA0YTkzYTdhMDlkMmIzNjU1OWE4ZjBjMDk1MGZmMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9t
YWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCkBAIC00
Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIGNsYXNzIFBhZ2VCYW5uZXJDbGllbnRJbXBsIDogQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdl
QmFubmVyQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlQmFubmVyOjpDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VCYW5uZXJDbGll
bnRJbXBsKFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJhc2UqIGNsaWVudCkKICAgICB7CkBAIC0x
MDMsNyArMTA0LDcgQEAgV0tCdW5kbGVQYWdlQmFubmVyUmVmIFdLQnVuZGxlUGFnZUJhbm5lckNy
ZWF0ZUJhbm5lcldpdGhDQUxheWVyKENBTGF5ZXIgKmxheWVyLAogICAgIGlmICh3a0NsaWVudCAm
JiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIGNsaWVu
dEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+KHdr
Q2xpZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUJh
bm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6UGFn
ZUJhbm5lcjo6Y3JlYXRlKGxheWVyLCBoZWlnaHQsIGNsaWVudEltcGwucmVsZWFzZSgpKS5sZWFr
UmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3Bw
CmluZGV4IDQyMTAxZjhjODJjYjJhNTQ4M2JhZTRkYzg0ODA3YjQxNjVhOTJkODYuLjIyYjQwZTQz
OWJiYjYwMTVlMThhYThjMjU1OGUwZTY5M2Y1ZWIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogc3RydWN0IERPTU9iamVjdENhY2hlRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgIERPTU9iamVjdENhY2hlRGF0YShHT2JqZWN0KiB3cmFwcGVy
KQogICAgICAgICA6IG9iamVjdCh3cmFwcGVyKQogICAgICAgICAsIGNhY2hlUmVmZXJlbmNlcygx
KQpAQCAtNzcsMTUgKzc4LDggQEAgc3RhdGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlck1h
cCYgZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAot
c3RhdGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciYgZ2V0T3JDcmVhdGVET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQotewotICAgIERPTU9iamVj
dENhY2hlRnJhbWVPYnNlcnZlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdENhY2hl
RnJhbWVPYnNlcnZlcnMoKS5hZGQoJmZyYW1lLCBudWxscHRyKTsKLSAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUpOwotICAgIHJldHVybiAqcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKLX0KLQogY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01PYmplY3RDYWNoZUZy
YW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQogICAgICAgICA6IEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlcigmZnJhbWUpCkBAIC0xMDUsNyArOTksNyBAQCBjbGFzcyBET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZQogICAgICAgICBpZiAoZG9tV2luZG93ICYmICghbV9kb21XaW5kb3dPYnNlcnZlciB8
fCBtX2RvbVdpbmRvd09ic2VydmVyLT53aW5kb3coKSAhPSBkb21XaW5kb3cpKSB7CiAgICAgICAg
ICAgICAvLyBOZXcgRE9NV2luZG93LCBjbGVhciB0aGUgY2FjaGUgYW5kIGNyZWF0ZSBhIG5ldyBE
T01XaW5kb3dPYnNlcnZlci4KICAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgICAgICBtX2Rv
bVdpbmRvd09ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRv
bVdpbmRvdywgKnRoaXMpOworICAgICAgICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IG1ha2VV
bmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlzKTsKICAgICAgICAgfQog
CiAgICAgICAgIG1fb2JqZWN0cy5hcHBlbmQoJmRhdGEpOwpAQCAtMTkxLDYgKzE4NSwxNCBAQCBj
bGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpG
cmFtZURlc3RydWN0aW9uT2JzZXJ2ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01XaW5kb3dPYnNl
cnZlcj4gbV9kb21XaW5kb3dPYnNlcnZlcjsKIH07CiAKK3N0YXRpYyBET01PYmplY3RDYWNoZUZy
YW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNv
cmU6OkZyYW1lJiBmcmFtZSkKK3sKKyAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZm
cmFtZSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2
ZXI+KGZyYW1lKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKIHR5
cGVkZWYgSGFzaE1hcDx2b2lkKiwgc3RkOjp1bmlxdWVfcHRyPERPTU9iamVjdENhY2hlRGF0YT4+
IERPTU9iamVjdE1hcDsKIAogc3RhdGljIERPTU9iamVjdE1hcCYgZG9tT2JqZWN0cygpCkBAIC0y
MTUsNyArMjE3LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6cHV0KHZvaWQqIG9iamVjdEhhbmRs
ZSwgdm9pZCogd3JhcHBlcikKIHsKICAgICBET01PYmplY3RNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBkb21PYmplY3RzKCkuYWRkKG9iamVjdEhhbmRsZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihH
X09CSkVDVCh3cmFwcGVyKSk7CiB9CiAKIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3Jl
OjpOb2RlKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCkBAIC0yMjQsNyArMjI2LDcgQEAg
dm9pZCBET01PYmplY3RDYWNoZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9p
ZCogd3JhcHBlcikKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47
CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmpl
Y3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsK
ICAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gb2JqZWN0SGFuZGxlLT5kb2N1bWVudCgp
LmZyYW1lKCkpCiAgICAgICAgIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVy
KCpmcmFtZSkuYWRkT2JqZWN0Q2FjaGVEYXRhKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRl
eCA0Y2NlYzYyZWYwZTExMzFmYTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmLi40ZDc0MmU0MDliYmZj
N2NmYWI0MDhjZDY1MzhhZWY5ZjIyOGZkNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJL
aXRFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIEFQ
STo6T2JqZWN0KiB1c2UKICAgICBzY2FuTW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBt
b2R1bGVQYXRocyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1
bGU+KG1vZHVsZVBhdGhzW2ldKTsKKyAgICAgICAgYXV0byBtb2R1bGUgPSBtYWtlVW5pcXVlPE1v
ZHVsZT4obW9kdWxlUGF0aHNbaV0pOwogICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChpbml0aWFsaXplV2ViRXh0ZW5zaW9uKG1v
ZHVsZS5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RWRpdG9yLmNwcAppbmRleCAwNDA3MmViODY0ZGJlMzVmODBkZmM4NmFkMGU4ODNjM2U5OWNlNDRm
Li5jY2I1MWUwZDk2NDBjNjZmODU5NmU0NzQxNzE0MDU4ZTkxMzk3Njg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRXZWJF
ZGl0b3IqIHdlYmtpdFdlYkVkaXRvckNyZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewog
ICAgIFdlYktpdFdlYkVkaXRvciogZWRpdG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9FRElUT1IsIG51bGxwdHIpKTsKICAgICBlZGl0b3ItPnByaXYt
PndlYlBhZ2UgPSB3ZWJQYWdlOwotICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5z
ZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VFZGl0b3JD
bGllbnQ+KGVkaXRvcikpOworICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVk
aXRvcikpOwogICAgIHJldHVybiBlZGl0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYkV4dGVuc2lvbi5jcHAKaW5kZXggNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5NjEyOTlh
NzAxMDgxNzUwMS4uZTMwNmUzZmVmMjYzMWQ1NDY2NTU3MTE2ZTVlNDg3ZDM3MWM3ODU3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTE5Niw3ICsx
OTYsNyBAQCBjbGFzcyBXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1
YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJr
aXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJL
aXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBOVUxMKSk7Ci0gICAgYnVuZGxlLT5zZXRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4o
ZXh0ZW5zaW9uKSk7CisgICAgYnVuZGxlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJFeHRlbnNp
b25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lv
bjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGNmYzUwMzFl
ZDZlNGEyOTU0ZmUwMmEwM2RhODdhMTYxY2QyZDMwODIuLmM5MjA0YjIzOTgxZDdmMTdhZDA3M2I5
ZWQ0MTJhODc3Njg1Y2U3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAK
QEAgLTk1LDYgKzk1LDcgQEAgV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYlBhZ2UsIHdlYmtp
dF93ZWJfcGFnZSwgR19UWVBFX09CSkVDVCkKIHN0YXRpYyB2b2lkIHdlYkZyYW1lRGVzdHJveWVk
KFdlYkZyYW1lKik7CiAKIGNsYXNzIFdlYktpdEZyYW1lV3JhcHBlciBmaW5hbDogcHVibGljIEZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViS2l0RnJhbWVXcmFwcGVyKFdlYkZyYW1lJiB3ZWJGcmFtZSkKICAgICAg
ICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIod2ViRnJhbWUuY29yZUZyYW1lKCkpCkBAIC0x
MjgsNyArMTI5LDcgQEAgc3RhdGljIFdlYktpdEZyYW1lKiB3ZWJraXRGcmFtZUdldE9yQ3JlYXRl
KFdlYkZyYW1lKiB3ZWJGcmFtZSkKICAgICBpZiAod3JhcHBlclB0cikKICAgICAgICAgcmV0dXJu
IHdyYXBwZXJQdHItPndlYmtpdEZyYW1lKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0
RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRGcmFtZVdyYXBw
ZXI+KCp3ZWJGcmFtZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEZyYW1lV3JhcHBlcj4g
d3JhcHBlciA9IG1ha2VVbmlxdWU8V2ViS2l0RnJhbWVXcmFwcGVyPigqd2ViRnJhbWUpOwogICAg
IHdyYXBwZXJQdHIgPSB3cmFwcGVyLmdldCgpOwogICAgIHdlYkZyYW1lTWFwKCkuc2V0KHdlYkZy
YW1lLCBXVEZNb3ZlKHdyYXBwZXIpKTsKICAgICByZXR1cm4gd3JhcHBlclB0ci0+d2Via2l0RnJh
bWUoKTsKQEAgLTY3OCwxMSArNjc5LDExIEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VD
cmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKICAgICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gV0VCS0lU
X1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfUEFHRSwgTlVMTCkpOwogICAg
IHBhZ2UtPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwogCi0gICAgd2ViUGFnZS0+c2V0SW5qZWN0
ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlUmVzb3VyY2VM
b2FkQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxvYWRlckNsaWVudD4ocGFnZSkpOwotICAg
IHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVVJQ2xpZW50PihwYWdlKSk7
Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8UGFnZUZvcm1DbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZVJlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBh
Z2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQobWFr
ZVVuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0
ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb250ZXh0TWVudUNsaWVu
dD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQobWFrZVVu
aXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOwogCiAgICAgcmV0
dXJuIHBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCmluZGV4
IDgxMDU1Y2U3ZmRlYmEzMThkYWIwNjgyNjM0YzZiZDg0YTM3ZmFlOGMuLjA4NGYzMDA1ZDYxMDNk
NGUyNTAzM2MyNTZjNzBjMGUwNjQwNDFjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4
dEl0ZXJhdG9yLm1tCkBAIC00NSw3ICs0NSw3IEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KFdLRE9N
UmFuZ2UgKilyYW5nZQogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IF90ZXh0SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4o
V2ViS2l0Ojp0b1dlYkNvcmVSYW5nZShyYW5nZSkpOworICAgIF90ZXh0SXRlcmF0b3IgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oV2ViS2l0Ojp0b1dlYkNvcmVSYW5nZShyYW5n
ZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KaW5kZXggNDg4MDBiYjMxNzkwNjVlNGU3MzI5MzA2OTA1NDY4MGU0MzRhZjFmZi4uNDIwMjM5
NmFiYWZhZjMwZDcxODlhZWI2ODUwOWVhMjcxNzFiOTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbQpAQCAtNTQ0LDcgKzU0NCw3IEBAIC0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0
ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGU+KWZvcm1EZWxlZ2F0
CiAgICAgfTsKIAogICAgIGlmIChmb3JtRGVsZWdhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRJbmpl
Y3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7
CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxG
b3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRC
dW5kbGVGb3JtQ2xpZW50KG51bGxwdHIpOwogfQpAQCAtNjczLDcgKzY3Myw3IEBAIC0gKHZvaWQp
X3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0
ZT4pZWRpdGluZ0RlbGVnCiAgICAgfTsKIAogICAgIGlmIChlZGl0aW5nRGVsZWdhdGUpCi0gICAg
ICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PENsaWVudD4oc2VsZikpOworICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQobWFrZVVuaXF1ZTxDbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCmluZGV4IDIwY2U1NTkxMWQ3MDY1MWMzMzVhNzBhY2YyNGU1YmRmYzIxYmQ2MzEuLjk5
NzlkNjM4NGRmZjVjOTgwNTkxZjI5MDgzYzkzNzI5NjM0NGE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRC
dW5kbGU6OmNyZWF0ZShXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiBJbmplY3Rl
ZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKICAgICA6IG1fcGF0aChwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0
aCkKICAgICAsIG1fcGxhdGZvcm1CdW5kbGUoMCkKLSAgICAsIG1fY2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpKQorICAgICwgbV9jbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCiB7CiB9CiAKQEAgLTExNCw3
ICsxMTQsNyBAQCBJbmplY3RlZEJ1bmRsZTo6fkluamVjdGVkQnVuZGxlKCkKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
Q2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9jbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKTsKKyAgICAg
ICAgbV9jbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5oCmluZGV4IDBjYTVlYTZkMmFiZTU3MjE1NGQyMWJlZDBjYzlh
MDUzZTdkNjZjMTguLmJmYjNkMDQ1MTQzNzM2YzMxZGY5ODhhYjFiMDBkZTQyYjg1MzA4OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNo
ZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
KFdlYlByb2Nlc3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuaAppbmRleCBkN2M1YzY4MzQ0YjcyNzM4ZDk0OTdkZjAxMmNhMzc2YmI4NDE4OGRhLi5i
MGJkNTM0Y2UxOWQ3Mzg2MWQ4MTc2YTgyMDVjZGNlNjE5NWZkMDY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcj4sIHByaXZhdGUgV2ViQ29yZTo6TWVkaWFDYW5TdGFydExpc3RlbmVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogICAgIH5Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDcz
MzUyNzY1ODcxZDgyNTVhMjNkYjdiNTVlNmQ0NGVlNzMzOTIyZDcuLjJlNTdhZjI0ODNiZDM2YjNk
ZDg1ZTRlYzE4ZGRlMTBmNDQzNmU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMzIsMzggKzEzMiwxMSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRNZXNzYWdl
KFQmJiBtZXNzYWdlLCBzaXplX3QgYnl0ZQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLVdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCi17Ci0gICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOwot
ICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0
dXJuIFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAg
ICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3Ry
aW5nIHsgbWVzc2FnZSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGlu
Z01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdl
KSk7Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KLVdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBi
aW5hcnlEYXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQotewot
ICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0
dXJuIFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAg
ICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0
YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5h
cnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7
Ci0gICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxQZW5kaW5nTWVzc2FnZT4oYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkp
OwotCi0gICAgcmV0dXJuIFNlbmRTdWNjZXNzOwotfQotCiBjbGFzcyBCbG9iTG9hZGVyIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJsb2JMb2FkZXIoV2ViQ29yZTo6RG9jdW1l
bnQqIGRvY3VtZW50LCBXZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9sb2FkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVy
OjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhpcykpCisgICAgICAgIDogbV9sb2FkZXIobWFrZVVuaXF1
ZTxXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpS
ZWFkQXNBcnJheUJ1ZmZlciwgdGhpcykpCiAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CiAgICAgICAgIG1fbG9hZGVyLT5zdGFy
dChkb2N1bWVudCwgYmxvYik7CkBAIC0yMjYsNyArMTk5LDcgQEAgY2xhc3MgUGVuZGluZ01lc3Nh
Z2UgewogCiAgICAgUGVuZGluZ01lc3NhZ2UoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3VtZW50LCBX
ZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgICAgIDogbV90eXBlKFR5cGU6OkJsb2IpCi0gICAgICAgICwgbV9ibG9i
TG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJsb2IsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKSkKKyAgICAgICAgLCBtX2Jsb2JMb2FkZXIobWFrZVVuaXF1
ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
KQogICAgIHsKICAgICB9CiAKQEAgLTI0NCwxMyArMjE3LDQwIEBAIGNsYXNzIFBlbmRpbmdNZXNz
YWdlIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogfTsK
IAorV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNp
emVJbkJ5dGVzKCk7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgp
KQorICAgICAgICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMu
aXNFbXB0eSgpKQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENo
YW5uZWw6OlNlbmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAg
ICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+
KG1lc3NhZ2UpKTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKworV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlC
dWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpCit7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAg
ICAgICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0
eSgpKQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6
OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRl
TGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtl
VW5pcXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3Ro
KSk7CisKKyAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Cit9CisKIFdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChXZWJDb3JlOjpCbG9iJiBibG9iKQogewog
ICAgIC8vIEF2b2lkIHRoZSBCbG9iIHF1ZXVlIGFuZCBsb2FkaW5nIGZvciBlbXB0eSBibG9icy4K
ICAgICBpZiAoIWJsb2Iuc2l6ZSgpKQogICAgICAgICByZXR1cm4gc2VuZChKU0M6OkFycmF5QnVm
ZmVyOjpjcmVhdGUoYmxvYi5zaXplKCksIDEpLCAwLCAwKTsKIAotICAgIG1fcGVuZGluZ01lc3Nh
Z2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50Lmdl
dCgpLCBibG9iLCBbdGhpc10geworICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5p
cXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9iLCBbdGhpc10gewogICAg
ICAgICB3aGlsZSAoIW1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
YXV0byYgbWVzc2FnZSA9IG1fcGVuZGluZ01lc3NhZ2VzLmZpcnN0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCmluZGV4IDA5NGFjNzFmN2U1ZWZmYWI3NDg1ZmNlZmNhZTU0ODkzZGIzZTA1
MDYuLjdlYzM3Y2RmMDlkMzkwYTM4MjdhNjljYTNmNjBhNmMzMDU2ZGE3MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1
YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHByaXZhdGU6CiAgICAgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlKiBDcmVh
dGUoKSBmaW5hbAogICAgIHsKQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQXN5bmNSZXNvbHZlckZh
Y3RvcnkgOiBwdWJsaWMgd2VicnRjOjpBc3luY1Jlc29sdmVyRmFjdG9yeSB7CiAKIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVy
JiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJh
dGlvbikKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENO
ZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZl
ciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKSwg
KnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNS
ZXNvbHZlckZhY3Rvcnk+KCkpOwogfQogCiB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxl
Tm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaAppbmRleCA1ZDYz
ODNmNmI1MDY1M2I1YzY3MDcwNzA1YzZjMTAyODcwZmEwMjMxLi4zOTkwNjk5ZDA3NzhmZWIxN2Iw
Y2E4ZTYwNzgxNDEwOGE1YzAwYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaApAQCAtNDAsNiAr
NDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk7
CiAKIGNsYXNzIExpYldlYlJUQ1Jlc29sdmVyIGZpbmFsIDogcHVibGljIHJ0Yzo6QXN5bmNSZXNv
bHZlckludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgTGliV2ViUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllcikgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcAppbmRl
eCBmOGI3ZWQyMjljNGY2ZjJkYzAzNjEzMmNjOTZlNDExZWVjYTU3MDJlLi4yMzU4MmRlNzU5Yjk4
NDVlYjdmZTQwNjQ0MzY1ZWZiYzE5Yjc1ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZh
Y3RvcnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRy
ZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIAogcnRj
OjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVy
VGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWlu
UG9ydCwgdWludDE2X3QgbWF4UG9ydCwgaW50IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBzb2NrZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2Nr
ZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwgYWRkcmVzcywg
cnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJX
ZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRD
U29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsK
ICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwog
CiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigp
LCBhZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9uTG9j
YWxob3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0LCBvcHRpb25zXSgpIHsKQEAgLTY2
LDcgKzY2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9y
eTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3luY1BhY2tldFNv
Y2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9y
dCkKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0
PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlw
ZTo6VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0byBzb2NrZXQg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVu
dGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRjOjpTb2NrZXRB
ZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tl
dC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0gc29ja2V0LT5p
ZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVzcyhhZGRyZXNzLCBtX2Rp
c2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1heFBvcnRdKCkgewpAQCAt
ODAsNyArODAsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0
b3J5OjpjcmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZQogCiBydGM6OkFzeW5jUGFja2V0
U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQoY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBsb2NhbEFkZHJlc3MsIGNvbnN0IHJ0Yzo6U29ja2V0QWRk
cmVzcyYgcmVtb3RlQWRkcmVzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcmJiB1
c2VyQWdlbnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwg
TGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywgcmVtb3RlQWRk
cmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRo
aXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OkNs
aWVudFRDUCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNldFN0
YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVElORyk7CiAgICAgbV9zb2NrZXRzLnNl
dChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtOTYsNyArOTYsNyBA
QCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVD
bGllbnRUY3BTb2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KExpYldlYlJUQ1Nv
Y2tldCYgc2VydmVyU29ja2V0LCB1aW50NjRfdCBuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmll
ciwgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzKQogewotICAgIGF1dG8g
c29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5p
cXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJDb25uZWN0
aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJlc3MpOworICAg
IGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5p
cXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJDb25uZWN0
aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJlc3MpOwogICAg
IHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05ORUNURUQpOwogICAg
IG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmRldGFjaChMaWJX
ZWJSVENTb2NrZXQmIHNvY2tldCkKIAogcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlKiBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVBc3luY1Jlc29sdmVyKCkKIHsKLSAgICBhdXRvIHJl
c29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytzX3VuaXF1ZVJl
c29sdmVySWRlbnRpZmllcik7CisgICAgYXV0byByZXNvbHZlciA9IG1ha2VVbmlxdWU8TGliV2Vi
UlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOwogICAgIGF1dG8qIHJl
c29sdmVyUG9pbnRlciA9IHJlc29sdmVyLmdldCgpOwogICAgIG1fcmVzb2x2ZXJzLnNldChyZXNv
bHZlclBvaW50ZXItPmlkZW50aWZpZXIoKSwgV1RGTW92ZShyZXNvbHZlcikpOwogICAgIHJldHVy
biByZXNvbHZlclBvaW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggMmQx
ZTg0MjQ3YmQwYTMwYzk0ZDFmMmVhMzAxZGQ1NWQwMmE2ZTA3Ni4uYjI3MTNmNDZjMWZjMTNjOWYy
N2JiZTM5Y2E1ZGM1MTg1MGIxODNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaApA
QCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xh
c3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJOb3RpZmljYXRpb25NYW5hZ2VyKTsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCAxNmExYTdmODM0NDYwNTNm
MzNkNjU0ZTgzMzMyMjk1MGVlOTk0ZDcyLi5kNzNmMWYxNmY4OTA3NjljNzJjYzlkZDQ0MGQyMjky
MWZmNWZmYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHsKICAgICBleHBsaWNp
dCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihOZXRzY2FwZVBsdWdpbiogcGx1Z2luKQogICAg
IHsKICAgICAgICAgaWYgKHBsdWdpbikKLSAgICAgICAgICAgIG1fcHJvdGVjdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcj4o
c3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29udHJvbGxlcigpKTsKKyAgICAgICAgICAg
IG1fcHJvdGVjdG9yID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVnaW5EZXN0cnVj
dGlvblByb3RlY3Rvcj4oc3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29udHJvbGxlcigp
KTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDY5
YTNjOTNmMTMyNmZhNGM2ZjdmZWJmOGFiMWIyY2E0Yzc3NmJjMGUuLjU5ZjQ4MjUxZjI4ODU0YzZk
MTY4MGIxZDY0ZGZhYTVhNDdjNjgxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM1
MCw3ICszNTAsNyBAQCB1aW50MzJfdCBOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVUaW1lcih1bnNp
Z25lZCBpbnRlcnZhbCwgYm9vbCByZXBlYXQsIHZvaWQgKCp0aQogICAgIC8vIEZJWE1FOiBIYW5k
bGUgd3JhcHBpbmcgYXJvdW5kLgogICAgIHVuc2lnbmVkIHRpbWVySUQgPSArK21fbmV4dFRpbWVy
SUQ7CiAKLSAgICBhdXRvIHRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4odGhpcywgdGlt
ZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKKyAgICBhdXRvIHRpbWVyID0gbWFr
ZVVuaXF1ZTxUaW1lcj4odGhpcywgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5j
KTsKICAgICAKICAgICAvLyBGSVhNRTogQmFzZWQgb24gdGhlIHBsdWctaW4gdmlzaWJpbGl0eSwg
ZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgdGhyb3R0bGUgdGhlIHRpbWVyLCBvciBpZiB3ZSBzaG91
bGQgc3RhcnQgaXQgYXQgYWxsLgogICAgIHRpbWVyLT5zdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKaW5kZXggZTBhYmMyYzdiNDEyOTkzMDAyYmJhYjhiZGZhYjdmMjY1MWFkYzU3Zi4uYjZjNzZi
NmVkNzE0Y2FhYTNhNDFkZGU0MWMxZDZhMTA0ZmI3YWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CkBAIC0zMDgsNiArMzA4LDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2lu
IHsKICAgICBWZWN0b3I8Ym9vbCwgOD4gbV9wb3B1cEVuYWJsZWRTdGF0ZXM7CiAKICAgICBjbGFz
cyBUaW1lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUaW1lcik7CiAKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMDQ5NjI4ZjVjNjI3MDJlNGQ1ZDQxMTE4MjAxMjNiYTVm
NGI5NjUyNC4uYmRhYTE0NDc4NDIyNjk1ZDUwZWE4NDhhYWZjY2JjZTEyZDJhZDkyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAg
ICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7CisgICAgICAgICAgICBtX2RlbGl2
ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPHVpbnQ4X3Q+PigpOwogCiAgICAgICAgIG1fZGVs
aXZlcnlEYXRhLT5yZXNlcnZlQ2FwYWNpdHkobV9kZWxpdmVyeURhdGEtPnNpemUoKSArIGxlbmd0
aCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAppbmRleCA0NGQxMWI1N2MzZWE2ZDUxOGMx
OGQwNGI4MjJkMjg2ZDUzZTk2OGNmLi4wN2Q1NTZjM2I3ZmM2MzcxOWMyYTI1NTllMGFhZDZjMjI2
YzA3Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAgLTEzNiwx
MCArMTM2LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gTmV0c2NhcGVQ
bHVnaW5YMTE6OmNyZWF0ZShOZXRzY2FwZVBsdWdpbiYgcGx1CiAKICNpZiBQTEFURk9STShHVEsp
CiAgICAgaWYgKHBsdWdpbi5pc1dpbmRvd2VkKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRvd0lEKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxh
eSwgd2luZG93SUQpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRz
Y2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxO
ZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKIH0KIAogTmV0c2NhcGVQbHVnaW5Y
MTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4sIERpc3BsYXkqIGRp
c3BsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCmluZGV4IDQxZTliNmM5ZDg0
Y2FhNDk1OGUzODViOWVkODBmZGQ3ZTExZGNhNWIuLjFmOWZkODdmYTNhMzBjOTM2MDQzOGVkNTk3
ZGMzMmM4OTU4N2FmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCkBAIC0z
Nyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0c2NhcGVQbHVnaW47CiAK
IGNsYXNzIE5ldHNjYXBlUGx1Z2luWDExIGZpbmFsIDogcHVibGljIE5ldHNjYXBlUGx1Z2luVW5p
eCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gY3JlYXRlKE5ldHNjYXBlUGx1Z2luJik7
CiAgICAgTmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVnaW4mLCBEaXNwbGF5Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgK
aW5kZXggYTFmODA3ZTFlNTUwNzIzZWZlZWExNzcxMzNiODFkZmY0ZDE3NmIzNS4uYjU3MmFhM2E1
MzZkNDg1Y2I5YjgxN2ExNmUwMmMzMzJjNGJjMjExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtMTU5LDYgKzE1OSw3
IEBAIGNsYXNzIFBsdWdpbkNvbnRyb2xsZXIgewogCiAgICAgLy8gSGVscGVyIGNsYXNzIGZvciBk
ZWxheWluZyBkZXN0cnVjdGlvbiBvZiBhIHBsdWctaW4uCiAgICAgY2xhc3MgUGx1Z2luRGVzdHJ1
Y3Rpb25Qcm90ZWN0b3IgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKFBsdWdp
bkNvbnRyb2xsZXIqIHBsdWdpbkNvbnRyb2xsZXIpCiAgICAgICAgICAgICA6IG1fcGx1Z2luQ29u
dHJvbGxlcihwbHVnaW5Db250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGYzN2MyY2MyNGUzZGQ5NzYzZjNlYmRkNjMy
ZDhiZmRiNzcxNDQzNDcuLjlhYjU4MzczMGI4OWRiZDk2MDFkNjUyMGVmOGY5YjBiZTAwNmRjNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIG1fY29ubmVjdGlvbi0+YWRkUGx1Z2luUHJveHko
dGhpcyk7CiAKICAgICAvLyBBc2sgdGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBwbHVn
LWluLgotICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyA9IHN0ZDo6bWFrZV91
bmlxdWU8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPigpOworICAgIG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycyA9IG1ha2VVbmlxdWU8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPigp
OwogCiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5wbHVnaW5JbnN0YW5j
ZUlEID0gbV9wbHVnaW5JbnN0YW5jZUlEOwogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycy0+d2luZG93TlBPYmplY3RJRCA9IHdpbmRvd05QT2JqZWN0SUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggN2FiODk2
NmRiOTA1YWRkMTIzOTQ4MTY1MGIxOWRlNGE3ZTdkMjIzZi4uMTE5ZDJiOTBjMmI0NDIzMWYyNTY5
NTdlNjJkZGNhOGYxMzBmYzczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTg5OCw3ICs4OTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNlRXZlbnQmIGV2ZW50KSBj
b25zdAogICAgIGlmIChldmVudC5tZXRhS2V5KCkpCiAgICAgICAgIG1vZGlmaWVycy5hZGQoV2Vi
RXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdlYk1vdXNlRXZlbnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQuYnV0dG9ucygpLCBtX3BsdWdpbi0+
Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQub2Zmc2V0WCgpLCBldmVudC5vZmZzZXRZ
KCkpKSwgZXZlbnQuc2NyZWVuTG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3VudCwgbW9kaWZp
ZXJzLCBXYWxsVGltZSB7IH0sIDApOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYk1vdXNlRXZl
bnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQuYnV0dG9ucygpLCBtX3BsdWdpbi0+Y29udmVydFRvUm9v
dFZpZXcoSW50UG9pbnQoZXZlbnQub2Zmc2V0WCgpLCBldmVudC5vZmZzZXRZKCkpKSwgZXZlbnQu
c2NyZWVuTG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3VudCwgbW9kaWZpZXJzLCBXYWxsVGlt
ZSB7IH0sIDApOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2ZW50JiBldmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA2ZmMwOWM0ZjY1YjI0
NWI2MGJmNGQ0ZjU5N2E5ZjkwYWQ0ZDBhYWY5Li5hMWZmMDMzYjIwNGVhZmFkYzg4OGE4MjA4YTg5
Zjc5ZGEwMGJjZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFs
bFNlcnZpY2VXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckNvbnQKIAogICAgIC8vIEZJWE1FOiBU
aGlzIG1ldGhvZCBzaG91bGQgYmUgbW92ZWQgZGlyZWN0bHkgdG8gV2ViQ29yZTo6U1dDb250ZXh0
TWFuYWdlcjo6Q29ubmVjdGlvbgogICAgIC8vIElmIGl0IHdlcmVuJ3QgZm9yIFNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudCdzIGRlcGVuZGVuY2Ugb24gV2ViRG9jdW1lbnRMb2FkZXIsIHRo
aXMgY291bGQgYWxyZWFkeSBoYXBwZW4uCi0gICAgYXV0byBmcmFtZUxvYWRlckNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PigqdGhpcywgc2Vz
c2lvbklELCBtX3BhZ2VJRCwgKyttX3ByZXZpb3VzU2VydmljZVdvcmtlcklELCBlZmZlY3RpdmVV
c2VyQWdlbnQpOworICAgIGF1dG8gZnJhbWVMb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPFNlcnZp
Y2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsICsr
bV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZmZWN0aXZlVXNlckFnZW50KTsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBmcmFtZUxvYWRlckNsaWVu
dC5nZXQoKTsKICAgICBtX2xvYWRlcnMuYWRkKFdURk1vdmUoZnJhbWVMb2FkZXJDbGllbnQpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmln
aW5UYWJsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5U
YWJsZS5oCmluZGV4IDkyMGRlZDA0MGNlNTYxODMzOTlmNmM5M2I4MmViMzZkZjczMDQ5NmEuLjkz
MGU0NjE4MTllMTg2ZjVhODBkOGY2NzE2ZmIxMThjNGRjMGVhODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKQEAgLTM3LDYg
KzM3LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJTV09yaWdpblRhYmxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBXZWJTV09yaWdpblRhYmxlKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggNGRmNmYwMTllNTU4NTc1NTJjODRkZmFiOTI1
MGM0MDFhODRjYjgzNS4uZjRjZjI5MWE0MDEwYjFlN2MyNDE2N2Q0NTRiNTRlYzRiODY0YzRmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudChXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDNjODcyZjVhZGYzOWJlYWNk
M2E3MDY2N2IyNjg5ZDM4YzliMTExMmUuLjRkMjc0NzY4NjIwZTVhNDZlYjk1MDhmZGU0N2I1NzFl
Nzk2ZjE3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03OTMsNyArNzkzLDcgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbiwKIAogc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50JiBjbGll
bnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29sb3JDaG9vc2VyPigmbV9wYWdlLCAmY2xpZW50LCBpbml0aWFsQ29sb3IpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwg
aW5pdGlhbENvbG9yKTsKIH0KIAogI2VuZGlmCkBAIC04MDIsNyArODAyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIo
Q29sb3JDaG9vc2VyQ2wKIAogc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoRGF0YUxp
c3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPigmbV9wYWdlLCAm
Y2xpZW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggY2VkMzZhNmMyNWI3
ZTRmODM0NGE1ODk5NDAwNjc5MWY3Y2M5Mjc2Zi4uZDQ1NTZkOTg3YTM2NmQxODExNDA4YWQ5MGJm
N2EzNDdkZDU5OGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFz
cyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJQYWdlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggNmMyOWI0ZTA4MTI2ZTdjZDY2NzljYzQ3MDIzNWM1
NTc0ZGU1MGQyZS4uYzFjODljZDk5ZTg3YWVlODRlZDU3NDZjMmU4MWY2NDdlODJmMWZjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVDbGllbnQoV2ViUGFnZSogcGFnZSkK
ICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDFhZDRjM2RlMmNiN2Qz
OGU2MjYyYzE5N2FhYjI0Y2NhNmZlZGE4MjEuLmIyNGVjZjc2YzQ1NTI0ZjYwZDg2YWVkNmZiMWVj
ZjZmMGYzOTQyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShw
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDI2ODEwMmZlYTFhNzc1N2VkN2UxNmRkZWNjZTNj
YWQ4ZWU2YmQ0MzUuLmQyMmQ0Y2I3M2YyOTczZjU2NTVhODczZWJkMjJkNmIwMDZhZTBmM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVu
dChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaAppbmRleCAzMGY1YWQ2YjRiYzJhNjM4ZDYwMzdmOGVjOTczODA5ZGY2ZTU2YjE4
Li4zNWEzMWZjMmEzNDRiMzEyODczMDUwNGI3ZmU3YTExNWYwMTFiODgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQogICAgICAgICA6
IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA3Y2RhYWNkMWZj
MWQ0NmQ2NWVhZGMzZjNhNjEzNGFhMzU1OGEyZDExLi5kNjdiNjJjMDJlNjg4M2I0NDg2NWZiYTE1
ODUxNmVhMGNiY2I1YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKICAgICB9CiAKICAgICBpZiAoIW1fcGFpbnRJbmRpY2F0b3JMYXllckNs
aWVudCkKLSAgICAgICAgbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ+KCp0aGlzKTsKKyAgICAgICAgbV9wYWlu
dEluZGljYXRvckxheWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxSZXBhaW50SW5kaWNhdG9yTGF5ZXJD
bGllbnQ+KCp0aGlzKTsKIAogICAgIGF1dG8gcGFpbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZShtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICptX3Bh
aW50SW5kaWNhdG9yTGF5ZXJDbGllbnQpOwogICAgIApAQCAtMTYyLDkgKzE2Miw5IEBAIHZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
ICAgICBwYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IoMS4wZiwgMC4wZiwgMC4w
ZiwgMC4yZikpOwogCiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmFkZUtleWZyYW1lcyhBbmltYXRl
ZFByb3BlcnR5T3BhY2l0eSk7Ci0gICAgZmFkZUtleWZyYW1lcy5pbnNlcnQoc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCAxKSk7CisgICAgZmFkZUtleWZyYW1lcy5pbnNl
cnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCAxKSk7CiAKLSAgICBmYWRlS2V5
ZnJhbWVzLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAuMjUs
IDApKTsKKyAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KDAuMjUsIDApKTsKICAgICAKICAgICBhdXRvIG9wYWNpdHlBbmltYXRpb24gPSBBbmlt
YXRpb246OmNyZWF0ZSgpOwogICAgIG9wYWNpdHlBbmltYXRpb24tPnNldER1cmF0aW9uKDAuMjUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGY1ZWNjNjRjOTIzZjM4NmM1MGU3YjUyOTc3
ZWZjMDk5ZTBiY2ZhZDYuLjI3YzNlZTE0MmUxNjE2ZTQzNWY0OGQ0MWYyNzI3MTVmZThlMDM4MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgV2ViUGFn
ZTsKIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudDsKIAogY2xhc3MgV2ViSW5zcGVj
dG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHJpdmF0ZSBXZWJD
b3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IGZyaWVuZCBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAg
V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggNTMzYmU4NDBjYWQ3MTQ1NTVkYWYwYWEyMDcyOGEzYzkz
MzU1YzliZS4uNGJiMzdmZGQ2MDc3NzRlZDgwOWE5NjdhNzc1MTVmYmFmYjZlZjZhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKQEAgLTMyLDYgKzMyLDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oCmluZGV4IDE2MzdhZDEwOTdkNzY0OWU1MGRmNzRmNWUwNjIyNzI3MWZhYjg0NWEuLjAw
Y2MwYTA4ZDkyNjA0ZmRkZmI1Y2E2MmY2Yjg4NTk1YzMxYWIwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlOwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJOb3RpZmljYXRpb25DbGllbnQoV2ViUGFnZSopOwogICAgIHZpcnR1YWwg
fldlYk5vdGlmaWNhdGlvbkNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMu
Y3BwCmluZGV4IDc5MDA4NGNlNDhkMjI2YjEwZTY2NWI4Mjg0NDM0OWZkYWFmZmVlNDYuLjY5ZjBh
ZTgyNzk1MDdiNzI5NjVmNjVjMjE2ODczYzQ4MWFkZjRkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkT3Zl
cnJpZGVzOjphZGRPdmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHIKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3ZlcnJpZGVzTWFwLmFkZChwYXN0ZWJvYXJkTmFt
ZSwgbnVsbHB0cik7CiAKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PiB0eXBlTWFw
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4oKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+
PiB0eXBlTWFwID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4o
KTsKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUodHlwZU1hcCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKaW5kZXggZjZlMDE0OTU3ZWRjMjc3ZGI5ODM3MzEy
N2VjMTA2M2U5MzU1OGNiOC4uY2Y5MGE1ZGZjZmRhNjNlY2I5ODk3Y2M2NmQwZDQ4MTI5NDQ4MTNj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsdWdJbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnSW5DbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBsdWdJbkNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpQbHVnSW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFdlYlBsdWdJbkNsaWVudChXZWJQYWdlJik7CiAgICAgdmlydHVhbCB+
V2ViUGx1Z0luQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgKaW5k
ZXggNWRkNjViZmEwZDUwY2NmZGIxNDYxZmViM2ZlNTI0MWZjYWEwZmJhNi4uNjNkNzc0ZTVhOTQy
N2M3MzViNTI0OTBiZDAxY2Q3OWFiNzRhMTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YlBhZ2U7CiAKIGNsYXNzIFdlYlByb2dyZXNzVHJhY2tlckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpQcm9ncmVzc1RyYWNrZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudChXZWJQYWdlJik7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKaW5kZXggZWFkMTdkMzBm
MDU5MGQ3NDQ2NzIwNTVjYWQ3N2Q5NWM2ZDBhNDc3MC4uN2JkODc1OTA1YTY1Yzc3ZDk2YzNmNzg4
NDAwMTg1ODJjZmFmNzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaApA
QCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAgICAg
CiBjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNo
U3ludGhlc2lzQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgOiBt
X3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAppbmRleCAxMDkzMDQ1M2NlNzk3ZWRk
OTBkZTc2ZjAzNTRiOWExZDQwNmYyZTZlLi42OTUyMTc0YjkxMmM5NzFlMzU3ODZlMjdjNDgyMjVk
MmZjYTE0MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCkBAIC0yOSw2ICsyOSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViVXNlck1lZGlhQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViVXNlck1lZGlhQ2xpZW50KFdlYlBhZ2UmKTsK
ICAgICB+V2ViVXNlck1lZGlhQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eS5oCmluZGV4IDAwYTFlMmU4ZTI2MzM1NjNjMzA2OTk4ZGQxNWEyMThiOTZkMTY1
MTIuLjA3NDEzY2ZjOTM5ODVmZTVkOTllOTQwNjhmMTYxNWY0YjI0NGM2MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkoV2Vi
UGFnZSYpOwogICAgIH5UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzLmNwcAppbmRleCA5Y2ZmY2M5YTlmZDJiNjQ0NDkyMmY4NTRhZDk3ZDFkMzMxZTcwYjBlLi5i
MjQ1ODFjOTdlN2E4ODE2ZjQ2YWY5MzE5YTkxZWEyMWI3MmJkNjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkKICAgICAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRy
dWUpOwogICAgIH0gZWxzZSB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyVHJlZUhvc3Q+KG1fd2Vi
UGFnZSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8TGF5ZXJUcmVlSG9z
dD4obV93ZWJQYWdlKTsKICNlbHNlCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG51bGxwdHI7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmNwcAppbmRleCBjMDczOTZmMDJmMWZhNjVmNDVhY2VlNzJmMTM0ZjRmYjJk
OWU4OTA5Li41MzU4Y2Q2ODYzYjMyMjY5NThlZTI3NGVmZDAzMmFkMjAwNjRkZDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC01
MCwxMyArNTAsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5nQXJlYTo6
Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2UKICNpZiBQTEFURk9STShDT0NP
QSkKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVRp
bGVkQ29yZUFuaW1hdGlvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2ViUGFnZSwg
cGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVy
VHJlZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZWxp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKICAgICBj
YXNlIERyYXdpbmdBcmVhVHlwZUNvb3JkaW5hdGVkR3JhcGhpY3M6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwg
cGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCmlu
ZGV4IDBmMjY0MDNlYmI3MGE4MTFiMThlOTg3OTVlMTlkZTc3NDBiZTgzNjAuLjFhNTM1ZjE3ZDk3
ZjY2NjgzOTcyNjlhODZlMjg1N2IyOWI5NzJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEZpbmRDb250cm9sbGVyIDog
cHJpdmF0ZSBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGaW5kQ29udHJvbGxlcik7CiAK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5j
cHAKaW5kZXggNDUyZjUzYmNlZGMwMDQ3ZjczM2QxYzM0YmNkNzY1MTE5MmNiOGJlNi4uNDZlOGFh
MDk5ODY0NWE4Y2U1ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQo
bV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsKIAogICAgIGlmICghbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOworICAgICAgICBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdT
dG9yZT4odGhpcyk7CiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKIH0KQEAgLTUyMSw3ICs1
MjEsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnRyYW5z
Zm9ybSgpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy50
cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7
CisgICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25N
YXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNTMy
LDcgKzUzMiw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQog
ewotICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJU
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAg
bV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6U3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNzM4LDcgKzczOCw3IEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQogCiB2
b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKQogewotICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWx0ZXJPcGVyYXRpb25zPihmaWx0ZXJzKTsKKyAgICBtX3Byb3BlcnRpZXMuZmlsdGVy
cyA9IG1ha2VVbmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CiAgICAgbV9wcm9wZXJ0
aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Rmls
dGVyc0NoYW5nZWQpOwogfQogCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91
bmRlZFIKICAgICBpZiAobV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgJiYgKm1fcHJvcGVy
dGllcy5zaGFwZVJvdW5kZWRSZWN0ID09IHJvdW5kZWRSZWN0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5k
ZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAg
bV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6U2hhcGVSb3VuZGVkUmVjdENoYW5nZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlVGlsZWRCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCmlu
ZGV4IDFjYmQxYjRiYTc5YTdkZjljZTU1ZTA0MjFkNDRlNjViNDA4ODIxYzIuLjA5OTUzNmI5M2Mw
MTFhYzNmMmEwNzNjM2NhNDY0ZjA3MjY0NjljZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVU
aWxlZEJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyhMYXll
clR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXll
clRyZWVDb250ZXh0JiBjb250ZXh0KQogICAgIDogUGxhdGZvcm1DQUxheWVyUmVtb3RlKGxheWVy
VHlwZSwgb3duZXIsIGNvbnRleHQpCi0gICAgLCBtX3RpbGVDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV90aWxlQ29udHJvbGxlcihtYWtl
VW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDVlNTBlMGJhMWVm
MTI0NmM2YWUwOGYyOWQ5MmE4MzBlMGRiNGYyMzcuLjQ0NDZmMzRkMDRjY2ZiZmJlYjM2OWJhNDRj
MzIwNmJmMGRkMjNlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5
ZXJUcmVlLCBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciwgd2ViUGFnZSkKLSAgICAs
IG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJl
ZUNvbnRleHQ+KHdlYlBhZ2UpKQorICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KG1ha2VV
bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCiAgICAgLCBtX3Jvb3RMYXll
cihHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQog
ICAgICwgbV9sYXllckZsdXNoVGltZXIoKnRoaXMsICZSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6Zmx1c2hMYXllcnMpCiB7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2Fj
dGlvbi50cmFuc2FjdGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9u
LCBzY3JvbGxpbmdUcmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1f
aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5p
cXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OkNvbW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlm
aWVyLnRvVUludDY0KCkpOwogICAgIGNvbW1pdEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3Vt
ZW50cygpKTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5n
IG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGFhZGUzZDlmMTg0NGQ3ZjA1YzA5MjE4ZDhlMjA0
NGQ1OGEyZjA1ZjguLmIyYmRjNDFiNzIzMzZiYjZlNDg0OTBmNzMxYjI0ODVkMjcwNzgyZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihX
ZWJQYWdlJik7CiAgICAgflZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA2MGNmZDhkMmEx
NzU0YTdhY2VkNThkNjFkZjE3YmU0YzE0MzEzNjk0Li5iZGQ0YjM5NTI1NGE3MTY3NjM5YWVjZDcz
ODYwZTA3MmQ2OWM0MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6
Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMK
IAogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50KQogewotICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFt
ZUxvYWRlckNsaWVudD4oKSk7CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShtYWtlVW5pcXVlPFdl
YkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGF1dG8g
Y29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25lckVsZW1lbnQs
IGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTMzNjU3MGQ5M2FhNTExMDY5Nzg1NjEx
NzAyNjA4OTNiOGEzY2RiNC4uZGIzMmRhNDgxMzllMTlmNzE0MjEyNTY1NDBhMjE2MzIzNGNjOTEw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTM4MywyMSArMzgzLDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fdGV4dENo
ZWNraW5nQ29udHJvbGxlclByb3h5KG1ha2VVbmlxdWVSZWY8VGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5PigqdGhpcykpCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0o
R1RLKQotICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFrZV91bmlx
dWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQorICAgICwgbV92aWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yKG1ha2VVbmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcj4oKnRoaXMpKQogI2VsaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdU
SykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQogI2VuZGlmCiAgICAgLCBt
X3NldENhblN0YXJ0TWVkaWFUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlOjpz
ZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50
KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50Pigp
KQogI2VuZGlmCi0gICAgLCBtX2VkaXRvckNsaWVudCB7IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBt
X2xvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VM
b2FkZXJDbGllbnQ+KCkpCi0gICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKSkKLSAgICAsIG1f
dWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGll
bnQ+KCkpCisgICAgLCBtX2VkaXRvckNsaWVudCB7IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCisgICAgLCBtX2xvYWRlckNsaWVudCht
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCkpCisgICAg
LCBtX3Jlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJl
c291cmNlTG9hZENsaWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKG1h
a2VVbmlxdWVSZWY8RmluZENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JUYXJn
ZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRy
b2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihtYWtlVW5p
cXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRl
KHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQogI2lmIEVOQUJMRShHRU9MT0NB
VElPTikKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIobWFrZVVu
aXF1ZVJlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMpKQpAQCAt
NDY0LDIxICs0NjQsMjEgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VDb25maWd1
cmF0aW9uLnBsdWdJbkNsaWVudCA9IG5ldyBXZWJQbHVnSW5DbGllbnQoKnRoaXMpOwogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxv
YWRlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQg
PSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJmb3Jt
YW5jZUxvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2lu
Z0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5n
Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlx
dWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7CiAKICNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViR0xTdGF0ZVRyYWNrZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMU3RhdGVUcmFja2VyPihbdGhpc10oYm9vbCBpc1VzaW5nSGlnaFBlcmZvcm1h
bmNlV2ViR0wpIHsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlciA9IG1h
a2VVbmlxdWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9y
bWFuY2VXZWJHTCkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldElz
VXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTChpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpKTsK
ICAgICB9KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5z
cGVlY2hTeW50aGVzaXNDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dD4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBwYWdlQ29uZmln
dXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFs
aWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxp
ZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGll
bnQ+KCp0aGlzKTsKICNlbmRpZgogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UgPSAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UoKTsKQEAgLTQ5MywxNCArNDkzLDE0IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5hdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yPigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gcGFyYW1ldGVy
cy5hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCiAKLSAgICBtX3BhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBtX3BhZ2UgPSBt
YWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIC8vIFNl
dCB0aGUgc2Vzc2lvbklEICpiZWZvcmUqIHVwZGF0aW5nIHRoZSBwcmVmZXJlbmNlcyBhcyB0aGUg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBwcmVmZXJlbmNlcyBtYXkgbmVlZCB0byBvdmVycmlkZSBp
dC4KICAgICBpZiAocGFyYW1ldGVycy5zZXNzaW9uSUQuaXNWYWxpZCgpKQpAQCAtODUzLDcgKzg1
Myw3IEBAIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PiYm
IGNvbnRleHRNZW51Q2xpZW50KQogewogICAgIGlmICghY29udGV4dE1lbnVDbGllbnQpIHsKLSAg
ICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRleHRNZW51
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVD
bGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg2NCw3ICs4NjQsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6SW5qZWN0ZWRCdQogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xp
ZW50PiYmIGVkaXRvckNsaWVudCkKIHsKICAgICBpZiAoIWVkaXRvckNsaWVudCkgewotICAgICAg
ICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
RWRpdG9yQ2xpZW50PigpOworICAgICAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZToKIHZvaWQgV2Vi
UGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklu
amVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3Jt
Q2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkYK
IHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PiYmIGxvYWRlckNs
aWVudCkKIHsKICAgICBpZiAoIWxvYWRlckNsaWVudCkgewotICAgICAgICBtX2xvYWRlckNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVu
dD4oKTsKKyAgICAgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTkwNSw3ICs5MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBv
bGljeUNsaWVudChXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNlKgogdm9pZCBXZWJQYWdlOjpz
ZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAo
IW1fcmVzb3VyY2VMb2FkQ2xpZW50KQotICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50Pigp
OworICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNv
dXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBAIC05MTMsNyArOTEzLDcgQEAg
dm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpJbmplY3RlZEIKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVV
SUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50
PiYmIHVpQ2xpZW50KQogewogICAgIGlmICghdWlDbGllbnQpIHsKLSAgICAgICAgbV91aUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50Pigp
OworICAgICAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQ
YWdlVUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0MTAsMTQgKzE0
MTAsMTQgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICBtX2NvbnRl
eHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4
dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKLSAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwotICAgIG1fZm9ybUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4o
KTsKLSAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICBt
X2xvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRl
ckNsaWVudD4oKTsKICAgICBtX3BvbGljeUNsaWVudC5pbml0aWFsaXplKDApOwotICAgIG1fcmVz
b3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ+KCk7Ci0gICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgIG1fcmVzb3VyY2VMb2Fk
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGll
bnQ+KCk7CisgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UGFnZVVJQ2xpZW50PigpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX2Z1bGxT
Y3JlZW5DbGllbnQuaW5pdGlhbGl6ZSgwKTsKICNlbmRpZgpAQCAtNDY5Niw3ICs0Njk2LDcgQEAg
dm9pZCBXZWJQYWdlOjpiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYgcHJpbnRJbmZvKQogI2VuZGlmCiAKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KSB7Ci0g
ICAgICAgIG1fcHJpbnRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+KGNv
cmVGcmFtZSk7CisgICAgICAgIG1fcHJpbnRDb250ZXh0ID0gbWFrZVVuaXF1ZTxQcmludENvbnRl
eHQ+KGNvcmVGcmFtZSk7CiAgICAgICAgIG1fcGFnZS0+ZGlzcGF0Y2hCZWZvcmVQcmludEV2ZW50
KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCA3MzU2NmExMzM4NWRl
M2FhYzY0NmZiOTQ5NmJkZGFmY2I1YWY0NmI2Li4zMWVmZjExZjdhZTBhM2ViOGNmYmI2ZmYyYjNk
YmE1MTYyNGMxZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTIxMyw2ICsyMTMs
NyBAQCBjbGFzcyBXZWJQcmludE9wZXJhdGlvbkd0a1dpbjMyIGZpbmFsOiBwdWJsaWMgV2ViUHJp
bnRPcGVyYXRpb25HdGsgewogI2VuZGlmCiAKIHN0cnVjdCBQcmludFBhZ2VzRGF0YSB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFByaW50UGFnZXNEYXRhKFdlYlBy
aW50T3BlcmF0aW9uR3RrKiBwcmludE9wZXJhdGlvbikKICAgICAgICAgOiBwcmludE9wZXJhdGlv
bihwcmludE9wZXJhdGlvbikKICAgICAgICAgLCB0b3RhbFByaW50ZWQoLTEpCkBAIC03MjYsNyAr
NzI3LDcgQEAgdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQoY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlLCBkb3VibGUgeERQSSwgZG91YmxlIHkKIHsKICAgICBBU1NFUlQobV9wcmludENv
bnRleHQpOwogCi0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludFBhZ2VzRGF0
YT4odGhpcyk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQcmludFBhZ2VzRGF0YT4odGhp
cyk7CiAgICAgaWYgKCFkYXRhLT5pc1ZhbGlkKSB7CiAgICAgICAgIGNhaXJvX3N1cmZhY2VfZmlu
aXNoKHN1cmZhY2UpOwogICAgICAgICBwcmludERvbmUoaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQo
ZnJhbWVVUkwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmluZGV4IDlhYmIyYTc5Mjk5ZDU5NmI5MWU2
ZWY2MWNhNDNlZjg2MTkwYTkwNDkuLjkzNDE4YWIyMWQ3NGZjOTQ1OGEwMjI0ZTRjYjQ4YTczNDE3
ODA5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGaW5kQ29u
dHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBp
c1Nob3dpbmdPdmUKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIG1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNh
dG9yLmdldCgpKTsKKyAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50ID0gbWFrZVVuaXF1
ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4dEluZGlj
YXRvci5nZXQoKSk7CiAgICAgbV9maW5kSW5kaWNhdG9yUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
dGV4dEluZGljYXRvci0+c2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpKTsKICAg
ICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqbV9maW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudCwgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7
CiAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5pbnN0
YWxsUGFnZU92ZXJsYXkoKm1fZmluZEluZGljYXRvck92ZXJsYXksIFBhZ2VPdmVybGF5OjpGYWRl
TW9kZTo6RG9Ob3RGYWRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TLmgK
aW5kZXggNTM1Yjg0ZmI2NDI5YTk3ZjBjOThhOGVhYzE4NWQ5ZGYyZWU5NDg1NC4uMDE1ZTMyZGIx
ODkzZTZhMDYyZDllM2E3Y2EwZGM1MmU5NDZkZDBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JP
dmVybGF5Q2xpZW50SU9TLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUyA6IHB1YmxpYyBXZWJDb3JlOjpQ
YWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUyhXZWJDb3JlOjpGcmFtZSYgZnJh
bWUsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3IqIHRleHRJbmRpY2F0b3IpCiAgICAgICAgIDogbV9m
cmFtZShmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9EcmF3aW5nQXJlYU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCmluZGV4IDkwNjg3Yzk3NGFjZjMzZDgyYjhjNjRiOTQ4
ZTZlZTlhMzBlZTJlOWMuLjA2ZmNjNDcxNTkzZWI3OGVkZWJmY2M2M2Y4OTQ0YjNkZmFlOWRhYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5n
QXJlYU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Ry
YXdpbmdBcmVhTWFjLmNwcApAQCAtODMsNyArODMsNyBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCiAgICAgaWYgKCFtX2hhc1NlbnRNZXNz
YWdlKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGlu
ayhtX29ic2VydmVySUQsIGRpc3BsYXlJRCgpKSwgMCk7CiAgICAgICAgIG1faGFzU2VudE1lc3Nh
Z2UgPSB0cnVlOwotICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKKyAgICAgICAgbV9y
dW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9vcEVu
dHJ5LCBbdGhpc10oKSB7CiAgICAgICAgICAgICB0aGlzLT5tX2ZpcnN0Q2FsbGJhY2tJbkN1cnJl
bnRSdW5sb29wID0gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fcnVuTG9vcE9ic2VydmVy
LT5zY2hlZHVsZShDRlJ1bkxvb3BHZXRDdXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGRmNjAwMzY0NTk4ZjEzNDYyOWRhYjYyNzA2ZWFmNjg2
MWU1ZmYzM2QuLjRjYjNkZjlhZWE1MjllZmY1MjYzMzZjODFmMTMwMjA0NWJhM2UwYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg3LDcgKzg3LDcgQEAg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0T3BhcXVlOllF
U107CiAgICAgW21faG9zdGluZ0xheWVyIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwogCi0gICAg
bV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpS
dW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2Vs
bEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBtX2xheWVy
Rmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZl
cj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgewogICAgICAgICB0aGlzLT5sYXllckZsdXNo
UnVuTG9vcENhbGxiYWNrKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCBhMmRhMTJjNjAyMjkzNzNjZjg3ODkyYjgzZGFhNTc3MzUwMGE3N2Yy
Li5hOWUzNzQ0NGZiZDM2ODQ0YTQ5MjhjOTYxMjJkNzRlZDFmMGZiYjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTczLDcgKzE1NzMsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbgogICAgIEFTU0VSVCghbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRp
bGVDb3VudGVyKTsKICAgICBtX2NvdW50T2ZQYWdlc0ZhaWxpbmdUb01hcmtWb2xhdGlsZSA9IDA7
CiAKLSAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXI+KFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmQ291bnRlckV2ZW50
KSB7CisgICAgbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyID0gbWFrZVVuaXF1
ZTxQYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyPihbdGhpcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50ZXJFdmVudCkgewog
ICAgICAgICBpZiAobV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyLT52YWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xODM4LDcgKzE4MzgsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnNldEVuYWJsZWRTZXJ2aWNlcyhib29sIGhhc0ltYWdlU2VydmljZXMsIGJvb2wgaGFz
U2VsZWN0aW9uU2VydgogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25TZXNzaW9u
UHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikKIHsKLSAgICBtX2F1dG9tYXRp
b25TZXNzaW9uUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk+KHNlc3Npb25JZGVudGlmaWVyKTsKKyAgICBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBt
YWtlVW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+KHNlc3Npb25JZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpCkBA
IC0xODcxLDcgKzE4NzEsNyBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKCkg
Y29uc3QKIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQog
ewogICAgIGlmICghbV9saWJXZWJSVENOZXR3b3JrKQotICAgICAgICBtX2xpYldlYlJUQ05ldHdv
cmsgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ05ldHdvcms+KCk7CisgICAgICAgIG1fbGli
V2ViUlRDTmV0d29yayA9IG1ha2VVbmlxdWU8TGliV2ViUlRDTmV0d29yaz4oKTsKICAgICByZXR1
cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0KIApAQCAtMTg4Miw3ICsxODgyLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUcKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJs
eWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCiAgICAgYXV0byYgaXBjQ29ubmVjdGlv
biA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKHN0ZDo6bWFrZV91bmlx
dWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91
cElELCBwYWdlSUQsIHN0b3JlKSk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
c2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihp
cGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBzdG9yZSkpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZDRjMDFiYWIxZjkzZGE5MDg1YjBmMjE5NGNkMzI3ZDQ3
MTg2NTBiMi4uMmY0ZmI1MzBhYmNlZDdlZmM3Mzc2NDIyMzA5ZmQzMTg4N2E0N2IwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMzMsNiArMTMzLDcgQEAgY2xhc3Mg
V2ViUHJvY2VzcwogICAgICwgUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpDbGllbnQKICNlbmRp
ZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBX
ZWJQcm9jZXNzJiBzaW5nbGV0b24oKTsKICAgICBzdGF0aWMgY29uc3RleHByIFByb2Nlc3NUeXBl
IHByb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ7CkBAIC0xNDYsNyArMTQ3LDcg
QEAgY2xhc3MgV2ViUHJvY2VzcwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQg
YWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBw
bGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7CisgICAgICAgIG1fc3Vw
cGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsK
ICAgICB9CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJ
UHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5jcHAKaW5kZXggMjcyMGI4NmZjZDJmZmVlNjAyMmY1YWQ1ZWVkNTBiY2YzNjkyZDdm
OC4uOWFmMDBlZThhYTBmMWNkODQwYTgxNzM3OTBmYTA2MjMwMDQ2ZmRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
OjpTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiAgICAgewogICAgICAgICBB
U1NFUlQoZGV2aWNlVHlwZSAhPSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duKTsK
ICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBtX3JpbmdCdWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOworICAgICAgICAgICAgbV9yaW5nQnVmZmVyID0g
bWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2U+KG51bGxwdHIpKTsKICAgICB9CiAKICAgICB+U291cmNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgK
aW5kZXggYmFlZDBjZDllMDliNDlkMjIxZTk0MDE4ZjY0OWZlNmRiY2Y5MjUxOS4uYzFkNDNmY2Iz
YWY1ODQxNDUzYWQzNDM0YzdjZjkzZWJmYzllN2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKQEAgLTQ2
LDYgKzQ2LDcgQEAgY2xhc3MgQ3Jvc3NQcm9jZXNzUmVhbHRpbWVBdWRpb1NvdXJjZTsKIGNsYXNz
IFdlYlByb2Nlc3M7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIDogcHVibGljIFdl
YlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBX
ZWJDb3JlOjpBdWRpb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6VmlkZW9DYXB0dXJl
RmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIoV2ViUHJvY2VzcyYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KaW5kZXggYjQ3ZDFkOGFmYTAzZmVkMzZkZWNhZDk4OWQ3MmRiYzQxODQ4N2Y1OS4uM2I5MDZh
ODBjNWFkOGY2OWJlZjc3ZjlhOGM3NjRhZjgwOWY0OTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zMTAsNyArMzEwLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKFByb2Nlc3NUYXNr
U3RhdGVPYnNlcnZlcjo6VGFza1N0YXRlIHQKIAogICAgIC8vIFdlIHdlcmUgYXdha2VuZWQgZnJv
bSBzdXNwZW5zaW9uIHVuZXhwZWN0ZWRseS4gTm90aWZ5IHRoZSBXZWJQcm9jZXNzUHJveHksIGJ1
dCB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gb24gb3VyIHBhcmVudCBQSUQKICAgICAvLyB0byBl
bnN1cmUgdGhhdCBpdCB0b28gaXMgYXdha2VuZWQuCi0gICAgYXV0byB1aVByb2Nlc3NBc3NlcnRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5IHJlc3VtZWQiLCBBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5pc2hUYXNrKTsKKyAg
ICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4o
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCksICJVbmV4cGVjdGVk
bHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246
OkZpbmlzaFRhc2spOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQcm9jZXNzV2FzVW5leHBlY3RlZGx5
VW5zdXNwZW5kZWQoKSwgW3VpUHJvY2Vzc0Fzc2VydGlvbiA9IFdURk1vdmUodWlQcm9jZXNzQXNz
ZXJ0aW9uKV0geyB9KTsKIH0KICNlbmRpZgpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24gcmVhc29u
KQogICAgIH0KIAogICAgIGlmICghbV9jcHVNb25pdG9yKSB7Ci0gICAgICAgIG1fY3B1TW9uaXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBb
dGhpc10oZG91YmxlIGNwdVVzYWdlKSB7CisgICAgICAgIG1fY3B1TW9uaXRvciA9IG1ha2VVbmlx
dWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVz
YWdlKSB7CiAgICAgICAgICAgICBpZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6U2Vy
dmljZVdvcmtlcikKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5j
ZUxvZ2dpbmcsICIlcCAtIFNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgZXhjZWVkZWQgQ1BVIGxpbWl0
IG9mICUuMWYlJSAod2FzIHVzaW5nICUuMWYlJSkiLCB0aGlzLCBtX2NwdUxpbWl0LnZhbHVlKCkg
KiAxMDAsIGNwdVVzYWdlICogMTAwKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggMzY5MDk1
Y2RhZDFkMzQ3MTFhMDY3NmQ4NzM2YTkwZTE5M2UyOTA1ZS4uMjI4ZjRhMzZkNGIwZjIyMmMxNzg2
MGQwYmM0OThjMWY5ZTA4OWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVmPFN0b3JhZ2VT
eW5jTWFuYWdlcj4gU3RvcmFnZVN5bmNNYW5hZ2VyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRo
KQogfQogCiBTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcihjb25zdCBTdHJp
bmcmIHBhdGgpCi0gICAgOiBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VUaHJlYWQ+
KCkpCisgICAgOiBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAgICAgLCBt
X3BhdGgocGF0aC5pc29sYXRlZENvcHkoKSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4
IDQ0MzkzODI5NWY0ZTFjMjlkZDA0ODZiNDMxYmE3ZmVhMzUyOWQxNmQuLjljNzUxNGUzNDYyYzRi
NGQ4YTg1NjA1ZWQwMjlkYmQxOTI1ZDZiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTdG9yYWdlVGhy
ZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxlZCgpICYmIG1fdGhy
ZWFkKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQg
KCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8
RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIHZvaWQgU3RvcmFn
ZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFk
Ojp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlz
XSB7CisgICAgbV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3Ro
aXNdIHsKICAgICAgICAgcGVyZm9ybVRlcm1pbmF0ZSgpOwogICAgIH0pKTsKICAgICBtX3RocmVh
ZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGI5MzRkMWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFi
MWNmNzdmYTIuLjgwNmNiMDk5NWQwYTA3YzcxODI3MWQyMTA1MDcwMzk4YzQwM2JjODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtOTgs
NyArOTgsNyBAQCBTdG9yYWdlVHJhY2tlciYgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKQogU3Rv
cmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgpCiAg
ICAgOiBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0b3JhZ2VQYXRoLmlzb2xhdGVkQ29weSgpKQog
ICAgICwgbV9jbGllbnQoMCkKLSAgICAsIG1fdGhyZWFkKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFn
ZVRocmVhZD4oKSkKKyAgICAsIG1fdGhyZWFkKG1ha2VVbmlxdWU8U3RvcmFnZVRocmVhZD4oKSkK
ICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiAgICAgLCBtX25lZWRzSW5pdGlhbGl6YXRpb24oZmFs
c2UpCiAgICAgLCBtX1N0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkZWZhdWx0U3RvcmFnZURh
dGFiYXNlSWRsZUludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCmluZGV4IDQz
ZWE0NWRhZTg5MjA2YzgyOWE1MTRkNGRhOGUzZDFjOTdjYzEyODQuLjg1MWNjMTAxN2RlZDAwYzA2
ZDQ2ZDJjODU5ZDcwMDAwYjZkNzJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OnN0b3JhZ2VTZXNzaW9uKGNvbnN0IFAKIFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKQogewogICAgIGlmICghZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQot
ICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSk7CisgICAgICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gKmRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9y
YWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBkZWZhdWx0TmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92
ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgZGVmYXVsdE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiks
IFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMCwxMSArMTAwLDEx
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKGNvbnN0IFBB
TDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0g
YWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNv
b2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9y
YWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogCiAjZWxpZiBVU0UoQ1VSTCkK
ICAgICBnbG9iYWxTZXNzaW9uTWFwKCkuZW5zdXJlKHNlc3Npb25JRCwgW3Nlc3Npb25JRF0gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKICAgICB9KTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAxODc2Yjk2MGI5NDcwODE0YzM1MGJjNTkyNmE0
YzgxYWVkZjM5MDIzLi43Yjg2OTgxYTNmNDhlNTBmOGIzY2NhYzM3MDY5MTdkNGFmMWZkYmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtMTU5LDUgKzE1OSw1IEBAIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4g
V2ViSW5zcGVjdG9yQ2xpCiAgICAgICAgICAgICBkZWxldGVTZXR0aW5nKG5hbWUpOwogICAgICAg
ICB9CiAgICAgfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVu
ZFNldHRpbmdzQ0Y+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRT
ZXR0aW5nc0NGPigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCAzYjFhNDUwNzA3OGZh
NGNjMDY4ZTc0MDMwMzIyMTIzOWIyYWQ3MTIzLi4xNDU3NzIyMmE5ZTEzZTYzZTQ5MWQ2ZDNiOTJj
YTFiYzg5ZTdjYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaApAQCAtMjgsNiArMjgsNyBAQAog
I2ltcG9ydCAiV2ViQ2hyb21lQ2xpZW50LmgiCiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudElPUyBm
aW5hbCA6IHB1YmxpYyBXZWJDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudElPUyhXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgICAgICA6IFdlYkNocm9tZUNsaWVudCh3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9u
Q29udGVudC5tbQppbmRleCAyMTdhNGVkMGE4NWE2YmI0MTRkMzE5NGNiN2JmYWVmZGUwMzZkNDdh
Li5hZmUxMWE4MGI5ZjFjOWNlNzZhMzU2MmZhNjNjNDViZjcxZDExZDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29u
dGVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aXhlZFBvc2l0aW9uQ29udGVudC5tbQpAQCAtNTIsNiArNTIsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogc3RhdGljIExvY2sgd2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jazsKIAogc3Ry
dWN0IFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhKCkKICAgICAg
ICAgOiBtX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Nyb2xsTGF5ZXIobmlsKQogICAgIHsgfQpAQCAt
NjIsNiArNjMsNyBAQCBzdHJ1Y3QgVmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YSB7CiB0eXBl
ZGVmIEhhc2hNYXA8UmV0YWluUHRyPENBTGF5ZXI+LCBzdGQ6OnVuaXF1ZV9wdHI8Vmlld3BvcnRD
b25zdHJhaW5lZExheWVyRGF0YT4+IExheWVySW5mb01hcDsKIAogc3RydWN0IFdlYkZpeGVkUG9z
aXRpb25Db250ZW50RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YShXZWJWaWV3ICopOwogICAg
IH5XZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGEoKTsKQEAgLTE3OCw3ICsxODAsNyBAQCAtICh2
b2lkKXNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6KFdURjo6SGFzaE1hcDxDQUxheWVyICos
IHN0ZDo6dW5pcXVlX3B0cjxXZQogCiAgICAgZm9yIChhdXRvJiBsYXllckFuZENvbnN0cmFpbnRz
IDogbGF5ZXJNYXApIHsKICAgICAgICAgQ0FMYXllciogbGF5ZXIgPSBsYXllckFuZENvbnN0cmFp
bnRzLmtleTsKLSAgICAgICAgYXV0byBsYXllckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdw
b3J0Q29uc3RyYWluZWRMYXllckRhdGE+KCk7CisgICAgICAgIGF1dG8gbGF5ZXJEYXRhID0gbWFr
ZVVuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPigpOwogCiAgICAgICAgIGxheWVy
RGF0YS0+bV9lbmNsb3NpbmdBY2NlbGVyYXRlZFNjcm9sbExheWVyID0gc3RpY2t5Q29udGFpbmVy
cy5nZXQobGF5ZXIpOwogICAgICAgICBsYXllckRhdGEtPm1fdmlld3BvcnRDb25zdHJhaW50cyA9
IFdURk1vdmUobGF5ZXJBbmRDb25zdHJhaW50cy52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggYThiNmEwNDM5M2VjMDAwMTQ2NTM4
ZDRjZjY1YmQ2NDBjNzRiZDkwMS4uNWFkODFiNGEzYjQ5YjVkMDYzOTM2NTY4M2ExYmNmNWQ1N2Vm
Mzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5t
bQpAQCAtMTMzLDcgKzEzMyw3IEBAIC0gKGlkKWluaXQKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICAKICAgICBfZW50cmllc0J5VVJMID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XTsKLSAgICBfZW50cmllc0J5RGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0ZVRvRW50cmllc01h
cD4oKTsKKyAgICBfZW50cmllc0J5RGF0ZSA9IG1ha2VVbmlxdWU8RGF0ZVRvRW50cmllc01hcD4o
KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXggYjczOTU5MzVlNTEwYmYzYjdmMGM0OGVk
ZDQzNmM1OGJiYzQ4MWQ4ZS4uODZmOWQzZDQyMjM4NDZiYzk1Y2JjOTU2NDVhMWNhNzMyMGFmZTE5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5
SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCkBAIC0zNDgsNyArMzQ4LDcgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVz
ZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICAgICAgY29yZShfcHJpdmF0ZSktPnNl
dExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAgICAgCiAgICAgaWYgKE5TQXJyYXkgKnJlZGly
ZWN0VVJMcyA9IFtkaWN0IF93ZWJraXRfYXJyYXlGb3JLZXk6cmVkaXJlY3RVUkxzS2V5XSkgewot
ICAgICAgICBhdXRvIHJlZGlyZWN0VVJMc1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yLT5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KFtyZWRpcmVjdFVSTHMgY291bnRdKTsKIAogICAgICAgICBmb3IgKGlk
IHJlZGlyZWN0VVJMIGluIHJlZGlyZWN0VVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQ
cm94eS5tbQppbmRleCBlMTdjNzg4MWE1MTdmMGMzNTVmODc1NjliNjBkYTNmMjE1YTFlYmE3Li5m
NWU3ZmJjZjEyZTQ3ZjkwZGVlZjFlYTJjZmViNzE3NDI2ODgwYWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtNDkzLDcgKzQ5Myw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQ
Q0dldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQz
Ml90IHBsCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlM
VVJFOwogCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3Rk
OjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkdldFNjcmlwdGFibGVO
UE9iamVjdFJlcGx5PihvYmplY3RJRCkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRS
ZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpH
ZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0SUQpKTsKICAgICByZXR1cm4gS0VSTl9T
VUNDRVNTOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVh
blJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELCB1aW50MzIK
ICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAg
ICAgCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjpt
YWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVz
dWx0KSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFr
ZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0
KSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApAQCAtNTI4LDcgKzUyOCw3IEBAIGtl
cm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5BbmREYXRhUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9y
dCwgdWludDMyX3QgcGx1Z2luSUQsCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bHQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCBy
ZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0RGF0YSksIHJlc3VsdExlbmd0aCkpOwotICAg
IGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlx
dWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1
cm5WYWx1ZSwgcmVzdWx0KSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJl
cXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5B
bmREYXRhUmVwbHk+KHJldHVyblZhbHVlLCByZXN1bHQpKTsKICAgICAKICAgICByZXR1cm4gS0VS
Tl9TVUNDRVNTOwogfQpAQCAtNTQ1LDcgKzU0NSw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0luc3Rh
bnRpYXRlUGx1Z2luUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2lu
CiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwog
Ci0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtl
X3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVw
bHk+KHJlc3VsdCwgcmVuZGVyQ29udGV4dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJl
bmRlcmVyVHlwZSkpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVz
dElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQ
bHVnaW5SZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVy
VHlwZT4ocmVuZGVyZXJUeXBlKSkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKaW5kZXggMTBhMDhlOTUwYTNkYzBj
OTM2NzFmMWZjMWM3NGM5NDc3OTNhMDdlOC4uZTU2YTEwM2EyOGE3NjBmOWNlMGI5N2U3MWRkNmIy
M2E2MGM1M2U4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKQEAg
LTE3MSw2ICsxNzEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkgOiBwdWJs
aWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveAogCiAgICAgLy8gUmVwbHkg
c3RydWN0cwogICAgIHN0cnVjdCBSZXBseSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAgICAgIEluc3RhbnRpYXRl
UGx1Z2luLAogICAgICAgICAgICAgR2V0U2NyaXB0YWJsZU5QT2JqZWN0LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0K
aW5kZXggMjAyYzZkZWFmMTNkMDdjNmUzYTU2OThiMWNkYjU5YTE5YjVkYTAzOS4uNTJiZjdiZDEy
ZTRlMzcxMmQzMTQ3NWUyYTUzOWE0MjhjZmY4ZmE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0zNjIs
NyArMzYyLDcgQEAgTWV0aG9kKiBQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZChQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVz
cyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAg
YXV0byBtYXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKTsK
ICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQotICAg
ICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm94
eU1ldGhvZD4obWV0aG9kTmFtZSk7CisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPFByb3h5TWV0aG9kPihtZXRob2ROYW1lKTsKIAogICAgIHJldHVybiBt
YXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQpAQCAtMzk3LDcgKzM5Nyw3IEBA
IEZpZWxkKiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdh
cyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBhdXRvIG1hcEFkZFJl
c3VsdCA9IG1fZmllbGRzLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1hcEFk
ZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlGaWVsZD4oaWRlbnRp
Zmllcik7CisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOwogICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW0KaW5kZXggOWM3MWEzY2M5MjNmMzNkMmUwYWIzOWExYmY2YjE0YjQ0M2U5NGQ0Yi4uZWUx
OWM1NjdjMDFmYTE4YzVlOGRjNjFiMDhjODk0ZTUyMDAyZGFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNjAsNiArNjAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCiBjbGFzcyBTb2Z0d2FyZUNBUmVu
ZGVyZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFNvZnR3YXJlQ0FSZW5kZXJlcih1aW50MzJfdCBjb250ZXh0SUQpCiAgICAgICAgIDogbV9j
b250ZXh0IHsgW0NBQ29udGV4dCBsb2NhbENvbnRleHRdIH0KQEAgLTE2OCw3ICsxNjksNyBAQCAt
IChCT09MKWNyZWF0ZVBsdWdpbgogICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoX3Byb3h5
LT5yZW5kZXJlclR5cGUoKSA9PSBVc2VTb2Z0d2FyZVJlbmRlcmVyKQotICAgICAgICBfc29mdHdh
cmVSZW5kZXJlciA9IHN0ZDo6bWFrZV91bmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHkt
PnJlbmRlckNvbnRleHRJRCgpKTsKKyAgICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBtYWtlVW5p
cXVlPFNvZnR3YXJlQ0FSZW5kZXJlcj4oX3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CiAgICAg
ZWxzZQogICAgICAgICBbc2VsZiBjcmVhdGVQbHVnaW5MYXllcl07CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlci5tbQppbmRleCBmN2FlZGJjZWQ0ZDdmNWM0YmEzZTk2ZTM1NjFjYTdm
MGIyNjVjOGFjLi44ZWMxYmY3OWVlMzJhMmFjMWJiY2Y3YTIxZTczZTdlMWUwMWRiMWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KQEAgLTM1LDcgKzM1LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlcjo6Y3IKIHsKICAgICBzd2l0Y2ggKFtwbHVnaW5WaWV3IGV2ZW50TW9kZWxdKSB7
CiAgICAgY2FzZSBOUEV2ZW50TW9kZWxDb2NvYToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmlldyk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29j
b2E+KHBsdWdpblZpZXcpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNvY29hLmgKaW5kZXggNzA4Mzc3NmQyOGE3NWNmYjU0MjUzM2Q5MGYzNzc4ZTg1YWJjZDFk
Mi4uYmJkOWM1ZDU4MjFmODVmNjVlYmM4Zjc3N2VjNjU1MjI5ZDVlODlmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oIgogCiBjbGFzcyBXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlckNvY29hIDogcHVibGljIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hKFdlYk5ldHNjYXBlUGx1Z2luVmlldyopOyAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbQppbmRleCAwMmZmMjE4NmRmODRhOWE5MGQ3ZTljMjZjMDc2Mjc5ZTMyMjEx
Mzc4Li4xNjA2NjNlODYxZjcxMGViZmVkMWQ3Njg1NjVkZDIyYTExNGU4ZTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQpAQCAtMTY1NSw3ICsxNjU1LDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVUaW1lcldp
dGhJbnRlcnZhbDoodWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0IHQKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKCF0aW1lcnMpCi0gICAgICAgIHRpbWVycyA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdp
blRpbWVyPj4+KCk7CisgICAgICAgIHRpbWVycyA9IG1ha2VVbmlxdWU8SGFzaE1hcDx1aW50MzJf
dCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGx1Z2luVGltZXI+KiBzbG90OwogICAgIHVpbnQzMl90IHRpbWVySUQ7CkBAIC0xNjYzLDcg
KzE2NjMsNyBAQCAtICh1aW50MzJfdClzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJf
dClpbnRlcnZhbCByZXBlYXQ6KE5QQm9vbClyZXBlYXQgdAogICAgICAgICB0aW1lcklEID0gKytj
dXJyZW50VGltZXJJRDsKICAgICB3aGlsZSAoIXRpbWVycy0+aXNWYWxpZEtleSh0aW1lcklEKSB8
fCAqKHNsb3QgPSAmdGltZXJzLT5hZGQodGltZXJJRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
KSk7CiAKLSAgICBhdXRvIHRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1
Z2luLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGlt
ZXIgPSBtYWtlVW5pcXVlPFBsdWdpblRpbWVyPihwbHVnaW4sIHRpbWVySUQsIGludGVydmFsLCBy
ZXBlYXQsIHRpbWVyRnVuYyk7CiAKICAgICBpZiAoX3Nob3VsZEZpcmVUaW1lcnMpCiAgICAgICAg
IHRpbWVyLT5zdGFydChfaXNDb21wbGV0ZWx5T2JzY3VyZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5t
bQppbmRleCA3MDRjZDA5NWU4OGZlMWEyMzgxMTg2YzZiZmYxMzBmYzkwMjA0MWViLi41N2ZiYmZh
ZDllNjRiNzY3OGFkM2FjY2U4MDc3OGJhY2YwMzc4MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5t
bQpAQCAtOTQsMTAgKzk0LDExIEBAIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6fldlYkRhdGFi
YXNlTWFuYWdlckNsaWVudCgpCiB9CiAKIGNsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCYgY2xpZW50LCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKICAgICB7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8RGlkTW9kaWZ5T3JpZ2luRGF0YT4oY2xpZW50LCBvcmlnaW4pOwor
ICAgICAgICBhdXRvIGNvbnRleHQgPSBtYWtlVW5pcXVlPERpZE1vZGlmeU9yaWdpbkRhdGE+KGNs
aWVudCwgb3JpZ2luKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dCA9IFdURk1v
dmUoY29udGV4dCldIHsKICAgICAgICAgICAgIGNvbnRleHQtPmNsaWVudC5kaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbihjb250ZXh0LT5vcmlnaW4pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggYTNiMTU5OGVlMzUzZDY3ZTIzYWY4MDk1OGViN2Y3NWVi
MTY3ZjRkOC4uY2Q3MjY0MjY4MjViYTcyMjE1NTdlMDU2NmZhOTJlYzA4MTExNDVjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIEBjbGFzcyBX
ZWJWaWV3OwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmlldyop
OwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNh
Y2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKaW5kZXggNzhiNTM5ZTM3MmI4NjVjNTk0ZmMwNzZmNWEx
ZmM4NGFhZmU5OGJmMC4uMjcxNDI3ZTJkNDZlZTNhMjk3ZDA1NDAxMmE3YTg1YWI4YjNlMWIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhIDogcHVibGljIFdlYkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YShpZCB3ZWJEb2N1bWVudFZpZXcpIDogbV93ZWJEb2N1bWVudFZpZXcod2ViRG9jdW1l
bnRWaWV3KSB7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZmRjNGNjNzgxOTZmY2JjZjMy
NjAyZDE4ZTI4OWYwN2ExMTU0Y2M5NS4uYzBmYmRhOWIyZGExZGQ0NTEwZmZlMDg5YmY2OGY1YTc2
N2RkNDE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSFRNTElt
YWdlRWxlbWVudDsKIC8vIGJhc2UgY2xhc3Mgb2YgdGhlIGNvbmNyZXRlIGNsYXNzLCBXZWJDaHJv
bWVDbGllbnRJT1MuIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBjbGFzcyBhbmQKIC8vIG1hbnkgb2Yg
aXRzIGZ1bmN0aW9ucyBhcmUgbm90IG1hcmtlZCBmaW5hbC4gVGhhdCBpcyBtZXNzeSB3YXkgdG8g
b3JnYW5pemUgdGhpbmdzLgogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgK
aW5kZXggMTg4NWYwMzEzMTM1YjgxN2IzMGY5NDU3NzdkOGUyNGIxNTM5YmY5MC4uYTdmNjZlZWVm
MzA2YTY4NjA1NDIwZTc5ODc2MjAyNTdiZTA2YjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50CiAgICAgLCBwdWJsaWMgV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDbGllbnQKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpOwogICAg
IHZpcnR1YWwgfldlYkNvbnRleHRNZW51Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggODQ3YTcz
YjE3YTQ2MTdiZDU0YThkMjhhOTIzYzFkNGE2M2JkZDEyZS4uMzBkZjNmNzNkODUwZWE3NjljNzEz
NTIyMWQyZTg4NjVlYTY3ZTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogQGNs
YXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJh
Z0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
RHJhZ0NsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZjA1OWUwNTllMTE4
N2EzYmM1YmQyNDdjYzI0MWY1OWFkZDQ1MDk1MC4uYjUxMDc4N2Q4MDliY2Y5N2I3Njg5ZTc0MDkz
MjgzNzVhYTBiMGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIEBjbGFz
cyBXZWJFZGl0b3JVbmRvVGFyZ2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJD
bGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJFZGl0b3JDbGllbnQ+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViVmll
dyAqKTsKICAgICB2aXJ0dWFsIH5XZWJFZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KaW5kZXggM2RkNTBlN2IzYjljZjk5MzM0OWM5YWJiNGNiNDk3ODM3ZWVjMzUzZS4u
OTQwYjBmZjk2M2E4NWNlOWQ4OGQ3YmM1NmZmNmIzZWViMmUzZDkxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogc3RhdGljIHZvaWQgYWRkUmVkaXJlY3RVUkwo
V2ViSGlzdG9yeUl0ZW0gKml0ZW0sIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICghaXRl
bS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMpCi0gICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVk
aXJlY3RVUkxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAg
aXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+
PigpOwogCiAgICAgLy8gT3VyIEFQSSBhbGxvd3MgdXMgdG8gc3RvcmUgYWxsIHRoZSBVUkxzIGlu
IHRoZSByZWRpcmVjdCBjaGFpbiwgYnV0IGZvcgogICAgIC8vIG5vdyB3ZSBvbmx5IGhhdmUgYSB1
c2UgZm9yIHRoZSBmaW5hbCBVUkwuCkBAIC0xMzgwLDcgKzEzODAsNyBAQCBJR05PUkVfV0FSTklO
R1NfRU5ECiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0Nh
Y2hlZEZyYW1lKENhY2hlZEZyYW1lKiBjYWNoZWRGcmFtZSkKIHsKLSAgICBjYWNoZWRGcmFtZS0+
c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldy5kb2N1bWVu
dFZpZXcpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFr
ZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUt
PndlYkZyYW1lVmlldy5kb2N1bWVudFZpZXcpKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoaXMgZnJhbWUgaXMgZ29pbmcgdG8gYmUg
Y2FjaGVkLiBTdG9wIGFsbCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXgg
ZmZlMjk5MzEyZWI0ODBiYWZiNWYwZWFjNDM1MmYyNDNmOTZlMDBmNy4uZmZkYmFjZmMyNzQyMWU4
ZDM1ODg4ZjJjZTZiMTgwNzdhMTZlMzNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBA
IC0zMyw2ICszMyw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiBAY2xhc3MgV2ViVmll
dzsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9j
YXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmlldygp
IHsgcmV0dXJuIG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBiZDdmNjJm
Yzg1ZGM5OWMzODcxNmYwNzY2NjQ2MzE4MjUxMWM1NGE1Li4wYzk0OGIzYWVmOTg3NjA5NjMwMzUx
ZDU5YWM3OTBiMmFiZWFkYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTEsNiArNTEs
NyBAQCBjbGFzcyBQYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAKIGNs
YXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50
KFdlYlZpZXcgKmluc3BlY3RlZFdlYlZpZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5k
ZXggMWMwMDgwOTc2OTJmZjliMDcxZmNlNWFjNGE0YjQ2OTJkMTM3ZWQ5NS4uN2QzZTVlYzllNjE1
ZTFkNDhjM2QwNWQ3MWE1OWM0NTFmZWI3NjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpA
QCAtMTA5LDcgKzEwOSw3IEBAIEZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50Ojpv
cGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwCiAgICAgW3dpbmRvd0Nv
bnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9yQ2xpZW50OnRoaXNdOwogCiAgICAgbV9mcm9udGVu
ZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgpIGZyb250ZW5kV2ViVmlld10pOwot
ICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGlu
c3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0
aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgp
LCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5k
U2V0dGluZ3MoKSk7CiAKICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYklu
c3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBp
bml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21f
aW5zcGVjdGVkV2ViVmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250
ZW5kLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggMTViNDE4MDQ4ZTRm
MWQ0NjI0YzMwM2RjYmJmZWQxNjk3OTY0NDg2MS4uOTRlZDYxOGFjNzhlZThiY2Y1NzE1NWM5YWRh
YmNiZGFkZjY4YzczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2
LDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb3RpZmljYXRpb25DbGllbnQoV2ViVmlldyAqKTsK
ICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaAppbmRleCBhM2Q2YWU2MzYzNjQ3YzVmMzBj
Yzc5ZmJkNjM1ZjY2NGJjYTAxMjNjLi5kYzlkMTFhMzU4N2VlMDRmNTAxNTFiZTg4YmM1ZDRiMTQ4
YmNkZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKQEAg
LTQzLDYgKzQzLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiB9CiAKIGNsYXNzIFdlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyIDogcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlcihXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJNb2NrLm1tCmluZGV4IDI1MzY0OGQ4ZTg0NTkxMWUyYWUyOGMwYmI4NjNjYjU3ZjdjMzAwMzku
LjI3NmQ5ZjE1ZWY4ZmE1ZTFmZWQ0MzhlZDljMWQyNTlhNzg1ODM1MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2subW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQpAQCAtMzYsNyArMzYsNyBAQCAtIChpZClpbml0CiAg
ICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgbV9jb3JlID0gc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2s+KCk7CisgICAgbV9jb3JlID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2s+KCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGE5MDYyMmMyMDc0ZTBjZGNlY2VmMmM2YzFjODQ5
NDVkNGU5ZGZmYWIuLjNhOTRiYjkxMGQyNTllZmFhODkxZDUyOWU4MGQyYjViMDAyMGI0ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMzc4LDcg
KzM3OCw3IEBAIC0gKHZvaWQpX2F0dGFjaFNjcmlwdERlYnVnZ2VyCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYlNjcmlwdERlYnVnZ2VyPihnbG9iYWxPYmplY3QpOworICAgIF9wcml2YXRlLT5zY3JpcHRE
ZWJ1Z2dlciA9IG1ha2VVbmlxdWU8V2ViU2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVjdCk7CiB9
CiAKIC0gKHZvaWQpX2RldGFjaFNjcmlwdERlYnVnZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ci5oCmluZGV4IGRmYTdlZmQwNjA2YWRjNDlmZTI5MWQwNTIxZDEzMmU2ZTE5YzUwNzMuLmEwNzJl
ODE5NTI0OTM5YWUwZjIyYmI5ODM2ZDNhYzcwNWQ4NTc5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlci5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIFBhZ2U7CiB9CiAKIGNsYXNzIFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIgOiBwdWJsaWMgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9u
TWFuYWdlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBj
cmVhdGUoV2ViQ29yZTo6UGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KaW5k
ZXggNzJjMjBjNjkzZmVjYmE5NzEwNDYzNDE2NDFjY2UxMTQ5NGRlNGE2OS4uNjAyNDAyOTk2MmVj
MzRmMDBmNGFhZDk0MzJhN2ZjNDJiYTFkMTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ci5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlcj4gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKFdlYkNv
cmU6OlBhZ2UmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CiB9CiAKIFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXI6OldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGFnZSYgcGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0
ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0
b3IubW0KaW5kZXggMWE3MjU4YjQyM2E4NDU3ODkxZTQxNWUxMGQwMDI1NjczMGFhMmJkZS4uZTM2
M2I4NWIyYjNkNWFlMTQ3M2M4MzcyNzE4NTgzNGQ1MTc4N2IxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KQEAgLTY5LDcgKzY5
LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooRE9NUmFuZ2UgKilyYW5nZQogICAgICAgICByZXR1
cm4gc2VsZjsKICAgICAKICAgICBfcHJpdmF0ZSA9IFtbV2ViVGV4dEl0ZXJhdG9yUHJpdmF0ZSBh
bGxvY10gaW5pdF07Ci0gICAgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5nZSkpOworICAgIF9wcml2YXRlLT5f
dGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUocmFu
Z2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IGJjY2M2NGIwN2EzZDA1ZjliZTg0NWZkMTZhOGE0ZTE1OGI1
NjQ3NWQuLjEwZjIxODg0ZWI0YTljOTg0YWMzMmU2MDE0MTQ5ODUwYjhjMTlhOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEyMjksNyArMTIyOSw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMo
KQogLSh2b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0CiB7CiAgICAgc3RhdGljIE5TU3Ry
aW5nICpvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMgPSBsZWFrT3V0bG9va1F1aXJrc1VzZXJT
Y3JpcHRDb250ZW50cygpOwotICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwgc3RkOjpt
YWtlX3VuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgp
LCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5k
LCBJbmplY3RJbkFsbEZyYW1lcykpOworICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRD
b250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwg
bWFrZVVuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgp
LCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5k
LCBJbmplY3RJbkFsbEZyYW1lcykpOwogCiB9CiAjZW5kaWYKQEAgLTE0NDMsNyArMTQ0Myw3IEBA
IC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilm
cmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xp
ZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5j
b250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKTsKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGVuYWJsZSB0aGlzIG9uIGlPUyBhcyB3ZWxsLgotICAgIHBhZ2VD
b25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24u
dmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdl
Q2xpZW50PihzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwogI2Vsc2UKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNlbGYpOwpAQCAtNDYzMyw3
ICs0NjMzLDcgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3Jv
dXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICBpZiAoIXdvcmxkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmlu
Z1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRT
dGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVj
dGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJ
bmplY3RJblRvcEZyYW1lT25seSk7CisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxV
c2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJp
bmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50
U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLCBpbmpl
Y3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDog
SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZSh3b3JsZCksIFdURk1vdmUodXNlclNjcmlwdCkpOwog
fQogCkBAIC00NjU2LDcgKzQ2NTYsNyBAQCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgIGlm
ICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc3R5bGVTaGVldCA9IHN0ZDo6
bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3
aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBX
ZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFt
ZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVu
aXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlz
dCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVj
dEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwg
VXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxl
cigpLmFkZFVzZXJTdHlsZVNoZWV0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwg
SW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKQEAgLTk0MTYsNyArOTQxNiw3IEBAIC0g
KFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlv
bkNvbnRleHQKIC0gKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyJilfc2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXIKIHsKICAgICBpZiAoIV9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXIpCi0gICAgICAgIF9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyPihzZWxmKTsK
KyAgICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOwogICAgIHJldHVybiAqX3By
aXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIH0KICNlbmRpZgpAQCAtOTQ3NSw3
ICs5NDc1LDcgQEAgLSAodm9pZClfc2V0VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciYpdGV4
dEluZGljYXRvcgogLSAodm9pZClfc2V0VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciYpdGV4
dEluZGljYXRvciB3aXRoTGlmZXRpbWU6KFRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSlsaWZl
dGltZQogewogICAgIGlmICghX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAg
IF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5k
aWNhdG9yV2luZG93PihzZWxmKTsKKyAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5k
b3cgPSBtYWtlVW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+KHNlbGYpOwogCiAgICAgTlNSZWN0
IHRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6
W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5n
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpXSB0b1ZpZXc6bmlsXTsKICAgICBOU1JlY3QgdGV4
dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMgPSBbc2VsZi53aW5kb3cgY29udmVydFJl
Y3RUb1NjcmVlbjp0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlc107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAxMDYwYzJk
ODU0YWRhMGRjYWZiMzM1NTljODExZTRlZTQ5NGNjNmUwLi44MjM4YTRlYzVmZWUxNjgzNjRlZDEz
MDRiYzc1MTVmNTUxN2ZlODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEubW0KQEAgLTk2LDcgKzk2LDcgQEAgTGF5ZXJGbHVzaENvbnRyb2xsZXI6
OkxheWVyRmx1c2hDb250cm9sbGVyKFdlYlZpZXcqIHdlYlZpZXcpCiBXZWJWaWV3TGF5ZXJGbHVz
aFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xs
ZXIqIGZsdXNoQ29udHJvbGxlcikKICAgICA6IG1fZmx1c2hDb250cm9sbGVyKGZsdXNoQ29udHJv
bGxlcikKIHsKLSAgICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihXZWJDb3JlOjpSdW5Mb29w
T2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7
CisgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNl
cnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxs
S25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgewogICAgICAgICB0aGlz
LT5sYXllckZsdXNoQ2FsbGJhY2soKTsKICAgICB9KTsKIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCAt
IChpZClpbml0CiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwogCiAjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4o
KTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOwogI2VuZGlmCiAKICAgICByZXR1cm4g
c2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAKaW5kZXggNjQ2ZTZhZWY5MzJmMWM5OTI5ODUzNmM4MmYyYzk1NWE3MWEx
OTJjZi4uZGU1MmM4NTg2NDE0MjkyYzNjOTdlZGJlOTk0YWJmMWQ1Zjc4ZDViZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAKQEAgLTE3Niw2ICsxNzYsNyBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhZyhjb25zdCBJbnRQb2lu
dCYgcG9pbnQsIGJvb2wgc3RhcnQpCiAKICNpZiBVU0UoQ0EpCiBjbGFzcyBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpMYXllckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExh
eWVyQ2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkgOiBtX3BhcmVudChw
YXJlbnQpIHsgfQogCkBAIC0yNDYsMTAgKzI0NywxMCBAQCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKICAgICAsIG1fbW92aW5nV2luZG93KGZh
bHNlKQogICAgICwgbV90aW1lcigqdGhpcywgJkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnRp
bWVyRmlyZWQpCiAjaWYgVVNFKENBKQotICAgICwgbV9sYXllckNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPExheWVyQ2xpZW50Pih0aGlzKSkKKyAgICAsIG1fbGF5ZXJDbGllbnQobWFrZVVuaXF1ZTxM
YXllckNsaWVudD4odGhpcykpCiAgICAgLCBtX3Jvb3RDaGlsZChQbGF0Zm9ybUNBTGF5ZXJXaW46
OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyLCBtX2xheWVyQ2xpZW50Lmdl
dCgpKSkKICNlbmRpZgotICAgICwgbV9mdWxsc2NyZWVuV2luZG93KHN0ZDo6bWFrZV91bmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRoaXMpKSkKKyAgICAsIG1fZnVsbHNjcmVlbldp
bmRvdyhtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KHN0YXRp
Y19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqPih0aGlzKSkpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuaAppbmRleCBmMWRlOGRkN2NjZTc4ODdkNmM4M2NiMjgxMTU2MTNlYTgwYjU1ZDc4Li4x
MzhjM2VjNGUyNjRiMThiMjcyZTI2N2MxNjgzNzU3NmFiYzg0MTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCkBAIC00Miw2
ICs0Miw3IEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIH0KIAogY2xhc3MgSFVEV2lkZ2V0IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIVURXaWRnZXQoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkgOiBtX3JlY3QocmVjdCkgeyB9CiAgICAgCkBAIC0x
MDEsNiArMTAyLDcgQEAgY2xhc3MgSFVEU2xpZGVyIDogcHVibGljIEhVRFdpZGdldCB7CiB9Owog
CiBjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDogV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik7CiBwdWJs
aWM6CiAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4u
aAppbmRleCA1ZmQ3NmQ0MTc4MjUyNjFkNGVkNTI4YTg1NDFmNjYyYTRmN2Y4N2Y5Li40Yjc5ZmU2
MmJmZDg0NTk5YjI0ZGMyZDk1YzY4YzUxZTIxNTAzYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4u
aApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGx1Z2lu
VmlldzsKIAogICAgIHN0cnVjdCBQbHVnaW5NZXNzYWdlIHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBIV05EIGhXbmQ7CiAgICAgICAgIFVJTlQgbXNn
OwogICAgICAgICBXUEFSQU0gd1BhcmFtOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgfTsKIAogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4gewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFBs
dWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4oUGx1Z2luVmlldyopOwogICAgICAgICB+UGx1Z2luTWVz
c2FnZVRocm90dGxlcldpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IGFiYTYzZGFiOGIzMWU0N2FiZDgwODhiMzc4M2E4MGVj
NTRjMTAyMTguLjBmNmJlZWZmYWQxZGMwMTVjOGE0NzdlN2ZiZTVjOWI2YWFmYWZmMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKQEAg
LTQzMyw3ICs0MzMsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogCiAgICAgaWYgKG1fdHJh
bnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAgICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0
YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
Y2hhcj4+KCk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9y
PGNoYXI+PigpOwogCiAgICAgICAgIGludCBvbGRTaXplID0gbV9kZWxpdmVyeURhdGEtPnNpemUo
KTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2l6ZShvbGRTaXplICsgbGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDIx
MzYzMTdmMjk5OWQ1ZTEzNzQ5ZGYzOGUxOWE4ZjRkMmYyNWJkNjAuLjU0NzE2YTBiYjJiMWZhYjc1
ZDgxZGU0MmFlZTk2ZWVhMmY2YjEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNTEwLDcgKzUxMCw3IEBAIE5QRXJyb3IgUGx1Z2lu
Vmlldzo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgYm9vbCBzZW5k
Tm90aWZpY2F0CiAgICAgfSBlbHNlIGlmICghbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpCiAgICAgICAgIHJldHVybiBOUEVSUl9HRU5F
UklDX0VSUk9SOwogCi0gICAgc2NoZWR1bGVSZXF1ZXN0KHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2lu
UmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlmaWNhdGlvbiwgbm90
aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CisgICAgc2NoZWR1bGVSZXF1ZXN0KG1ha2VV
bmlxdWU8UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlm
aWNhdGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CiAKICAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAwNTcyOGYzZWQzNzIwNTA0YWY1NWY5ODc3Zjg2MjFi
ZGMwNWNlNjIyLi41MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQyOTgxYzNmNTYzZWRmZjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAK
QEAgLTMxMCw3ICszMTAsNyBAQCBQbHVnaW5WaWV3Ojp3bmRQcm9jKEhXTkQgaFduZCwgVUlOVCBt
ZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGlmIChtZXNzYWdlID09
IFdNX1VTRVIgKyAxICYmCiAgICAgICAgIG1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVn
aW5RdWlya1Rocm90dGxlV01Vc2VyUGx1c09uZU1lc3NhZ2VzKSkgewogICAgICAgICBpZiAoIW1f
bWVzc2FnZVRocm90dGxlcikKLSAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CisgICAgICAgICAg
ICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJX
aW4+KHRoaXMpOwogCiAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlci0+YXBwZW5kTWVzc2FnZSho
V25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgK
aW5kZXggNTMwYjY5ZWQ3MTljMjdhY2M2YjA3ZTM1MTU5MjIxZjU1MjZjNTMwNS4uM2JmNDRkODdk
MThkNWYyNzNjZDI5NTM1Njc2YjI0MDhmMmM5MTRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oPgogCiBjbGFz
cyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoSVdlYkRhdGFTb3VyY2UqIHdlYkRhdGFTb3Vy
Y2UpIDogbV93ZWJEYXRhU291cmNlKHdlYkRhdGFTb3VyY2UpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCBlM2VjMzNmZDQ5OTdhMDFhMjI1ZDVl
MWNmOWI0ZjRiNjJkNzdlMjJkLi5jNDFmODZlMDczZDhkY2I5ZTRhOGE1Mjk0ZjBkNjNjYzk0ZTU2
M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKQEAgLTQw
LDYgKzQwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0IDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dChXZWJWaWV3Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0
YTQ5Yjk0YmJhNThkMGM1NDYzMzI5YzNmNmVmMjNlODQ4OGI3YWYzLi43YjI5OWNlZTI1ZWNkMTBi
YmE2MjFjODU4MWIwNmFlMDZjNWExZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGaWxlUGF0aHNMaXN0U2l6ZSA9IFVTSFJU
X01BWDsKIFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAg
ICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRGVza3RvcE5v
dGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCisgICAgLCBtX25vdGlmaWNhdGlvbnNEZWxl
Z2F0ZShtYWtlVW5pcXVlPFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZpZXcp
KQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDQxZDVmMDZhZWFjYjdlMTQxN2Q0
YjcwMjQwMDYwYmJlNTdmNjkzMGYuLjc4NzU0MzI1M2Q1ZGZmNGVjNjY4ZWJlODhmMDg4NWQwYmFk
YjY1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYkRlc2t0
b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiBpbnRlcmZhY2UgSVdlYlVJRGVsZWdhdGU7CiAKIGNs
YXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNs
aWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGM5ZGU0OWIz
Y2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQuLmY0OGVlNzMwZWVmNzE5NzllNGQ4ZDJj
MzI3ZWQxYmExN2I5NGZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzAsNiAr
MzAsNyBAQAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVz
a3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCmluZGV4IDgyOTZj
OGNjYjY4ODdkMzQ1NDhkNWE2NGM2ODY3NzI2YTc0NjA3NzIuLjRjZmQxMDI2NWQxZDA3YTU3ZjAz
MGE0ZTZiMTUwNjljYmJmYjkzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiB9CiAKIGNs
YXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUgOiBwdWJsaWMgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKFdlYlZpZXcqIHZpZXcpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmgKaW5kZXggYjU5ODkzMzI5MTAwOWUyODUxZWQ3NTQxNWVjNGFhMGZlNDAzZDYxMS4u
NDVlM2NhNzI3NTNhZDFhYzExNTNiZTk2MTkzZjZlZDYyMWZmODlkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApA
QCAtMzEsNiArMzEsNyBAQAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZGI2MzUy
ZDYzODE2ZjdjOWFlZWU5Zjc0NGU0OGUzODFlODU2ZDJiNS4uNjlkN2VkM2UwYWEzMWYxM2JlYTY0
Y2YwYzI3NjVlMjU0ZmJmOGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAg
Y2xhc3MgV2ViTm90aWZpY2F0aW9uOwogY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAogY2xh
c3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwg
cHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViVmlldyopOwogICAgIH5X
ZWJFZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZTM1
NGI3MWNkZmQyYTVmOWI4YjAxMWEwMzI5ZDc0MjRiYzkwYmJjLi5kNGIyZjdmNjNlODYwODU5Mzkz
NDUyYmQ2MmUxMjg1ZDJlOGFkNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC05Myw2ICs5Myw3IEBAIHN0YXRpYyBXZWJEYXRhU291cmNlKiBnZXRXZWJEYXRhU291cmNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiB9CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUoKSAKICAgICAg
ICAgOiBtX3BvbGljeUZ1bmN0aW9uKG51bGxwdHIpCkBAIC0xMDcsNyArMTA4LDcgQEAgY2xhc3Mg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlIHsKIH07
CiAKIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSog
d2ViRnJhbWUpCi0gICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQorICAgIDogbV9wb2xpY3lMaXN0ZW5l
clByaXZhdGUobWFrZVVuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZT4oKSkKICAg
ICAsIG1fd2ViRnJhbWUod2ViRnJhbWUpCiAgICAgLCBtX21hbnVhbExvYWRlcigwKQogICAgICwg
bV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkgCkBAIC05NzMsNyArOTc0LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2Fj
aGVkRnJhbWUqIGNhY2hlZEZyYW0KIAogICAgIEFTU0VSVChjb3JlRnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkgPT0gY2FjaGVkRnJhbWUtPmRvY3VtZW50TG9hZGVyKCkpOwogCi0gICAg
Y2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4o
Z2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkp
OworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVl
PFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihzdGF0aWNfY2FzdDxJV2ViRGF0YVNvdXJjZSo+
KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkp
KTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKaW5kZXggZWI5NzU4YmQ0MjEwN2QyZjlhODU0ZTRlNjg4MTY2YTZmNTE1ZmI5Zi4u
YmJhOWM5ZjQ0NTM1OGQ3Y2UzZWEwM2Y4OTY2NDFiZDZlNWUwNDBkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247
CiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcAppbmRleCA3NTY5NTkwYzFiM2NmMzgxNmZjNDJhMzViZjNmNjZiZmQ3
ODkwMjI0Li5mODBhZTA0OGI4MmRiZGIyMzQ2NTQ2OGQ5MzNjNjBhNzA5NzJjN2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0
b3JDb250cgogICAgICAgICByZXR1cm4gMDsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShm
cm9udGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1f
aW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZy
b250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAg
bV9mcm9udGVuZENsaWVudCA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+
KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3
bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJv
bnRlbmRTZXR0aW5ncygpKTsKICAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwog
ICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBmcm9udGVuZEh3bmQ7CiAgICAgcmV0dXJuIHRoaXM7CkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCgpCiAg
ICAgYm9vbCBjcmVhdGluZ0hpZ2hsaWdodCA9ICFtX2hpZ2hsaWdodDsKIAogICAgIGlmIChjcmVh
dGluZ0hpZ2hsaWdodCkKLSAgICAgICAgbV9oaWdobGlnaHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
Yk5vZGVIaWdobGlnaHQ+KG1faW5zcGVjdGVkV2ViVmlldyk7CisgICAgICAgIG1faGlnaGxpZ2h0
ID0gbWFrZVVuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3BlY3RlZFdlYlZpZXcpOwogCiAg
ICAgaWYgKG1faGlnaGxpZ2h0LT5pc1Nob3dpbmcoKSkKICAgICAgICAgbV9oaWdobGlnaHQtPnVw
ZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5NWM5YWZhODUwMDJhNTQzMjcwYjdj
ZTZiMzg4YzcwZDQ4OTE4NTE4Li4wYTUxNDgzOTFiYWUxMjYwZGY2ODY2YjI4NzA3ZTY2MDg0ZTky
MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBXZWJO
b2RlSGlnaGxpZ2h0OwogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyopOwogCkBAIC05NCw2
ICs5NSw3IEBAIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0CiB9OwogCiBjbGFzcyBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLCBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5zcGVjdGVkV2ViVmlld0h3bmQs
IEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01QdHI8V2ViVmlldz4mIGZyb3RuZW5kV2ViVmll
dywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0b3JDbGllbnQqLCBzdGQ6OnVu
aXF1ZV9wdHI8U2V0dGluZ3M+KTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAKaW5kZXggNjhjNmJkNDkzOWNmOWIwNDg5NTdiYzc1MDBiZDg1NDhhMDFlZTNiMi4uMTYyN2Vj
NWZhMjZiZjU5MDFkMDU5M2I1YTE4Mzk2OTQ3OTIxOTBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0zNDcsNiArMzQ3LDcgQEAgSFJF
U1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbEluZGV4ZWREYXRhYmFzZXMoKQogfQog
CiBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaWRNb2RpZnlPcmlnaW5EYXRhKTsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFn
ZXIqIGRhdGFiYXNlTWFuYWdlciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApp
bmRleCAyN2FmMWJhZTY1M2VmZjAyZjY3MDRmN2UzOWFkMGUxYWM1MGFkNzBiLi44YWZiYTBmNmQ1
M2FmZDU1NTg0NWMxOTUzNmMyYTljMWVjNWYzN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogV2ViRWxlbWVudFByb3Bl
cnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0
KQotICAgIDogbV9yZXN1bHQoc3RkOjptYWtlX3VuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQp
KQorICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewog
ICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50
UHJvcGVydHlCYWciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNw
cAppbmRleCBhODFjMDBlNTZjNWRlMmFlYmMxMmFiOGI2ZGIxMWJjOTM0ZWJiYmRhLi5mYjg4ZTM5
ZTdiNTZhYzMyZGNmNWNmNTAxMWMzNTQ4MTcxYTZjM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSFJFU1VMVCBXZWJI
aXN0b3J5SXRlbTo6aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oX0luX29wdF8gdm9p
ZCogZGljdGlvbmEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IHJlZGlyZWN0
VVJMc1ZlY3RvcjsKICAgICBpZiAoQ0ZBcnJheVJlZiByZWRpcmVjdFVSTHNSZWYgPSBzdGF0aWNf
Y2FzdDxDRkFycmF5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5UmVmLCByZWRp
cmVjdFVSTHNLZXkpKSkgewogICAgICAgICBDRkluZGV4IHNpemUgPSBDRkFycmF5R2V0Q291bnQo
cmVkaXJlY3RVUkxzUmVmKTsKLSAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oc2l6ZSk7CisgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3Rv
ciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KHNpemUpOwogICAgICAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICAoKnJlZGlyZWN0VVJMc1ZlY3Rv
cilbaV0gPSBTdHJpbmcoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgocmVkaXJlY3RVUkxzUmVmLCBpKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NB
RDNEUmVuZGVyZXIuY3BwCmluZGV4IDJmMWYyZjQ4MDdlYjljNGZlNzA4MzVkYjc4ZTM0YTM0YmNm
ZjM2ZDAuLmQ2NWRlMTllZTk5YzQ1MTQ0NWRmYmYxYjEzNTlkYzJhOGJhMzhjODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6
Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+IENBRDNEUmVuZGVyZXI6OmNyZWF0
ZUQzRFBvc3RQcm9jZXNzaW5nCiAgICAgbWVtY3B5KG92ZXJsYXlRdWFkQnVmZmVyLCBvdmVybGF5
UXVhZFZlcnRpY2VzLCBzaXplb2Yob3ZlcmxheVF1YWRWZXJ0aWNlcykpOwogICAgIG92ZXJsYXlR
dWFkLT5VbmxvY2soKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEQzRFBvc3RQcm9j
ZXNzaW5nQ29udGV4dD4oc2NlbmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlR
dWFkKTsKIH0KIAogLy8gRklYTUU6IDxyZGFyOi8vNjUwNzg1MT4gU2hhcmUgdGhpcyBjb2RlIHdp
dGggQ29yZUFuaW1hdGlvbidzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCmluZGV4
IDY3ZDQ4MzUzYjAzZDcyZWE4YTljMjhhYjg3MGQ3NWRhMTFkODA4ZWMuLjQ3ZWFkZGE2NTYxMmU2
MDUwZDJjMjhhY2U2ZjRjOWFjZTljYmI1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5k
ZXJlci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXS1FDQSB7CiBjbGFzcyBJbWFnZTsK
IAogY2xhc3MgRDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQoY29uc3QgQ0Nv
bVB0cjxJRGlyZWN0M0RUZXh0dXJlOT4mLCBjb25zdCBDQ29tUHRyPElEaXJlY3QzRFZlcnRleEJ1
ZmZlcjk+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVI
aWdobGlnaHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaApp
bmRleCBmOTc1NWJiOGRhZWFhYjM5ZDM0MjJlZThmZWIwZjI0YzFiMzU0ZmVkLi5iMjY5NTQ5OWI4
MjZiOTliODJlYWZhODQ1NDE4N2QxOWY2ZTA3ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTm9kZUhpZ2hsaWdodC5oCkBAIC0zNSw2ICszNSw3IEBACiBjbGFzcyBXZWJWaWV3Owog
CiBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0IDogV2ViQ29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb2RlSGln
aGxpZ2h0KFdlYlZpZXcqKTsKICAgICB+V2ViTm9kZUhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggN2JkOTg4
OTYxMTFjM2IzZmU2ZmU1NGYwYTI0Nzk2NjA2YjIyYTc1Zi4uOTI1MzJkYmRjYTQxYjg1MzFlOTE2
OGNkZGRlMzFiNTdhN2Y0NTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgT2JqZWN0
T2JzZXJ2ZXJMaXN0OjppdGVyYXRvciBPYnNlcnZlckxpc3RJdGVyYXRvcjsKIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIE9iamVjdE9ic2VydmVyTGlzdD4gTWFwcGVkT2JzZXJ2ZXJzOwogCiBzdHJ1
Y3QgV2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgIE1hcHBlZE9ic2VydmVycyBtX21hcHBlZE9ic2VydmVyczsKIH07
CiAKQEAgLTUzLDcgKzU0LDcgQEAgc3RydWN0IFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGUg
ewogSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjptX2RlZmF1
bHRDZW50ZXIgPSAwOwogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNl
bnRlcigpCi0gICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJp
dmF0ZT4oKSkKKyAgICA6IGQobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRl
PigpKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXggMzg5ZTk4YzdkOWZkY2EzMDMxNjAxNGY5ZjFkMWY2
MjBhMzQ5ZWYyZi4uZjE0OTgxMjJkOGRlM2MzMzczMjU0NDhiZTM5MTQ0MjRlYzc2MDA1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgKQEAg
LTMxLDYgKzMxLDcgQEAKIHN0cnVjdCBXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlOwogCiBj
bGFzcyBXZWJOb3RpZmljYXRpb25DZW50ZXIgZmluYWwgOiBwdWJsaWMgSVdlYk5vdGlmaWNhdGlv
bkNlbnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogY3JlYXRlSW5zdGFuY2UoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA5NzYxNDhlMzNmNzQ0NmQ3YzM4NDk5NTlkNmNmNzNk
ZWY0OGY2N2ZmLi45YTYxMDc5ZWJlNWQzOTBhM2VjNDlmY2NkMDg2NGQ5NzMxNjRhMjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTg4MCw3ICsxODgwLDcgQEAgYm9vbCBX
ZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSkKICAgICAgICAgbW91c2VFdmVudC5zZXRDbGlja0NvdW50KGdsb2JhbENsaWNr
Q291bnQpOwogICAgICAgICBoYW5kbGVkID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRs
ZXIoKS5tb3VzZU1vdmVkKG1vdXNlRXZlbnQpOwogICAgICAgICBpZiAoIW1fbW91c2VPdXRUcmFj
a2VyKSB7Ci0gICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8
VFJBQ0tNT1VTRUVWRU5UPigpOworICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXIgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxUUkFDS01PVVNFRVZFTlQ+KCk7CiAgICAgICAg
ICAgICBtX21vdXNlT3V0VHJhY2tlci0+Y2JTaXplID0gc2l6ZW9mKFRSQUNLTU9VU0VFVkVOVCk7
CiAgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlci0+ZHdGbGFncyA9IFRNRV9MRUFWRTsKICAg
ICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5od25kVHJhY2sgPSBtX3ZpZXdXaW5kb3c7CkBA
IC02Nzk0LDcgKzY3OTQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3
TUlNRVR5cGUoX0luXyBCU1RSIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwog
CiAgICAgaWYgKCFtX2VtYmVkZGVkVmlld01JTUVUeXBlcykKLSAgICAgICAgbV9lbWJlZGRlZFZp
ZXdNSU1FVHlwZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAg
ICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4o
KTsKIAogICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzLT5hZGQodG9TdHJpbmcobWltZVR5cGUp
KTsKICAgICByZXR1cm4gU19PSzsKQEAgLTY4OTQsNyArNjg5NCw3IEBAIHZvaWQgV2ViVmlldzo6
ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYgdmlk
ZW9FbGVtZW50CiAgICAgICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyKTsK
ICAgICB9CiAKLSAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+KCk7CisgICAgbV9mdWxsU2NyZWVuVmlkZW9D
b250cm9sbGVyID0gbWFrZVVuaXF1ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyPigpOwogICAg
IG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlci0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1l
bnQpOwogICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7
CiAjZW5kaWYKQEAgLTY5NDYsNyArNjk0Niw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNj
cmlwdFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSBy
ZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHVzZXJT
Y3JpcHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCisgICAgYXV0byB1c2Vy
U2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3Ry
aW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLAogICAgICAgICB0b1N0cmluZ1Zl
Y3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmpl
Y3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3Vt
ZW50RW5kLAogICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/
IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91
cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh3b3JsZC0+d29ybGQoKSwg
V1RGTW92ZSh1c2VyU2NyaXB0KSk7CkBAIC02OTczLDcgKzY5NzMsNyBAQCBIUkVTVUxUIFdlYlZp
ZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0
XyBJV2ViU2NyaQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgV2ViU2NyaXB0V29y
bGQqIHdvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7Ci0g
ICAgYXV0byBzdHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291
cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50
KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksCisgICAgYXV0byBz
dHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwp
LCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0
b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09
IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZy
YW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHN0
eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1cm4gU19PSzsK
QEAgLTcyMzcsNyArNzIzNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZyhib29sIGFjY2VsZXJhdGVkKQogICAgIH0KICNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKICAgICBpZiAoYWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQpCi0gICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcg
PSBhY2NlbGVyYXRlZDsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAppbmRleCBl
ZWNhNzM5ZDJiMzk0ZTg2MDM1MWJhMWI0NjRkZTU0NzhiOWJiMTY3Li5kYjM2ZWI5ZGVkMmI5ZTBm
NWY2ZWY0MGRiNmM2OTkxOWE3MzA2ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaApAQCAt
ODIsNiArODIsNyBAQCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10o
c2l6ZV90IHNpemUpID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lk
KiBwKSA9IGRlbGV0ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHBy
aXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZE1hY3JvU2VtaWNvbG9uaWZp
ZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5o
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oCmluZGV4IGMwNDRkNzcz
Yjg3OWE2NmRmYWRkMmUyY2EzMTVlZWVhMzc2ZmZhNGEuLjNhYTFkMjA5NTFkYmYzMzY0ZTdkMTZk
ZDIzNjQzZDBjZDk3ZjZmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
SGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVz
LmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0
b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxl
dGVbXSh2b2lkKiBwKSA9IGRlbGV0ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xh
c3M7IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1h
Y3JvU2VtaWNvbG9uaWZpZXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGNiNjM1MzViMjNhNWRjM2E2MjQzMDFjMjBmNTYzNGNlYjg2OTAzODku
LmNlMjk1ZWJkYzI0ZDY3MTA0YjY5ODBjODEyZWMyMjE4NjZiOWMwOWQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzQgQEAKKzIw
MTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBb
V1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoYWRkVVJMVG9SZWRpcmVjdENhbGxi
YWNrKToKKyAgICAgICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpydW5VSVNjcmlwdCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRP
cGVuUGFuZWxGaWxlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgIChldmVudFByZXNz
ZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwOgorICAgICAgICAoRFJURGF0YU9iamVjdDo6
U2V0RGF0YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRl
LmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAgICAgICAoRFJU
VW5kb01hbmFnZXI6OkRSVFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OlVJRGVs
ZWdhdGUpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6cmVzZXRVbmRvTWFuYWdlcik6CisgICAgICAg
ICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgorICAgICAgICAoY3JlYXRlVmlld0JhY2tlbmQp
OgorICAgICAgICAobWFpbik6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250ZXh0Lmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2Nv
YS9DbGFzc01ldGhvZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db3VudGVy
cy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6cnVuSlNUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1RE
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3Vu
dGVkU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdFbnN1cmUp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdE1vdmluZ1VzaW5nQWRkKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNo
U2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVu
TG9ja1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3Qu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVW5pcXVlUmVmLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9WYXJpYW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmlu
Z0J1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDQVJpbmdCdWZmZXJUZXN0OjpT
ZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9u
VmFsdWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVGVzdFZhbHVlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nv
b2tpZXMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJv
bVdpdGhpbkNyZWF0ZVBhZ2UuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3
UGFnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNT
UEkuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0
aW5nLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2Fn
ZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyVXNlck1lc3NhZ2VSb3VuZFRy
aXBUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2ls
bExvYWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0MldpbGxMb2FkVGVzdDo6
U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxp
Z2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVUZXN0OjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlv
bi5jcHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICh0ZXN0V2ViVmlld0F1
dGhlbnRpY2F0aW9uUHJveHlIVFRQUyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01ET01X
aW5kb3dUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZv
cm1VdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1RE
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAg
ICAgIChhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVt
UHJvdmlkZXJzKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZp
Z3VyYXRpb246YWRkVG9XaW5kb3c6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFj
L1Rlc3RGb250T3B0aW9ucy5tbToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIGluaXRXaXRo
Rm9udE9wdGlvbnM6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclBy
b3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9j
ay5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6
OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmg6CisgICAgICAgIChXVFI6OnRvU1REKToKKyAgICAg
ICAgKFdUUjo6dG9XVEZTdHJpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9u
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRW
YWx1ZXMpOgorICAgICAgICAoV1RSOjpjcmVhdGVUZXN0VVJMKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnJ1blVJU2lkZVNjcmlw
dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAg
KFdUUjo6Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVy
UHJveHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1v
dmVUbyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQ
RS5jcHA6CisgICAgICAgIChXVFI6OndwZUtleVN5bUZvcktleVJlZik6CisKIDIwMTktMDgtMTMg
IFpoaWZlaSBGYW5nICA8emhpZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtyZXN1bHRz
LndlYmtpdC5vcmcgVGltZWxpbmVdIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50IC0gU2tpcCByZW5k
ZXIgb2Zmc2NyZWVuIGNhbnZhcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBl
ODE3YTU3M2E1OGQxNTlkNGNmMjM0OTgyY2NhMDRkY2Q2NGI2MDRhLi44ZjEzZWUwMDNhM2RlMGEw
ZDk0ODYxMTkxMzIyZjM0ZjhhZGVlZDI0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cApAQCAtMzYzLDExICszNjMsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgYWRkVVJMVG9SZWRpcmVj
dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW4KICAgICBBU1NF
UlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShvcmlnaW4uZ2V0KCkpOwotICAgIGF1dG8gb3JpZ2luQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gb3Jp
Z2luQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhM
ZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKG9yaWdpbi5nZXQoKSwgb3Jp
Z2luQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIG1heExlbmd0aCA9IEpTU3Ry
aW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShkZXN0aW5hdGlvbi5nZXQoKSk7Ci0gICAgYXV0
byBkZXN0aW5hdGlvbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGgg
KyAxKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhD
U3RyaW5nKGRlc3RpbmF0aW9uLmdldCgpLCBkZXN0aW5hdGlvbkJ1ZmZlci5nZXQoKSwgbWF4TGVu
Z3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVz
dFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xMzA0LDcgKzEz
MDQsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKUwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7
CiAKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKGhlYWRlci5nZXQoKSk7Ci0gICAgYXV0byBoZWFkZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBoZWFkZXJCdWZmZXIgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAg
IEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaGVhZGVyLmdldCgpLCBoZWFkZXJCdWZmZXIuZ2V0KCks
IG1heExlbmd0aCArIDEpOwogCiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19j
YXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMjM3
OSw3ICsyMzc5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdl
KGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QWNjdW1t
dWxhdGVMb2dzRm9yQ2hhbm5lbChKU1N0cmluZ1JlZiBjaGFubmVsKQogewogICAgIHNpemVfdCBt
YXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY2hhbm5lbCk7Ci0g
ICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7
CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFy
W10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoY2hhbm5lbCwg
YnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6
c2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZSh7IGJ1ZmZlci5nZXQoKSB9KTsKQEAgLTI0NDksNyAr
MjQ0OSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHQoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTU3RyaW5nUmVmIHNjcmlwdCwgSlNWYWx1ZVJlCiAgICAgY2FjaGVUZXN0UnVubmVyQ2Fs
bGJhY2soY2FsbGJhY2tJRCwgY2FsbGJhY2spOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4
dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdUUjo6VUlT
Y3JpcHRDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsK
IAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcoSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyKHNjcmlw
dCksIEpTU3RyaW5nR2V0TGVuZ3RoKHNjcmlwdCkpOwogICAgIG1fVUlTY3JpcHRDb250ZXh0LT5y
dW5VSVNjcmlwdChzY3JpcHRTdHJpbmcsIGNhbGxiYWNrSUQpOwpAQCAtMjUwNiw3ICsyNTA2LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0KEpT
VmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBudWxscHRyKSk7CiAgICAgICAg
IHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUp
OwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZpbGVCdWZmZXIu
Z2V0KCksIGZpbGVCdWZmZXJTaXplKTsKIAogICAgICAgICBtX29wZW5QYW5lbEZpbGVzLnB1c2hf
YmFjayhmaWxlQnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbQppbmRleCA2NGRiMWQxN2Y5YmM5Y2I4Y2U2ZDgyZjliNzdkYmYzODc1YWNhMGNh
Li45NTdjNGU2Mzk1OTExODYzNWQ3MjIxNWUwY2FjN2NiNmZkNzIwY2RmIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xNTM1LDcgKzE1MzUsNyBAQCBz
dGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgIC8v
IHRoZSByZXN1bHQgd2l0aG91dCBhbnkgY29udmVyc2lvbi4KICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gc3RyaW5nUmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpaW5uZXJUZXh0KSk7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nUmVmLmdldCgpKTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4o
YnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENT
dHJpbmdOb25TdHJpY3Qoc3RyaW5nUmVmLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUp
OwogICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiJUBcbiIsIFN0cmluZzo6ZnJvbVVURjhXaXRo
TGF0aW4xRmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCA0NjFiZDNkZjNlYmIyNjAzYWMzMjE4Mjg4MjE4ZGQ4
ZjY5MTY4ZmZkLi4zYmUzMzIyMWQ2YjNlYmMzNTZkNTFlMzM0YTI0ZDkyOWFlMjUzYTllIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5t
bQpAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2xhc3NNZXRob2RT
d2l6emxlcj4gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWCiB7CiAgICAgaWYg
KFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAgICAgIHZpZXcg
PSBbKFdlYkhUTUxWaWV3ICopdmlldyBfaGl0Vmlld0ZvckV2ZW50OmV2ZW50XTsKLSAgICByZXR1
cm4gIVt2aWV3IGlzS2luZE9mQ2xhc3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IHN0ZDo6bWFrZV91
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJl
c3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9ucykpIDogTlVMTDsKKyAgICByZXR1cm4gIVt2aWV3IGlzS2luZE9mQ2xh
c3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4o
W05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpIDogTlVMTDsK
IH0KIAogc3RhdGljIE5TVUludGVnZXIgc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCmluZGV4IGVmMmQy
ZWZiODU5ZjRiOGEyMmYzMGM0NjdhY2UxZjhhYWQxNTdhNGQuLjc2YTIxYTU4YTlmNjZkZGUxNjA3
MjlmOGZlZTFlMTVmOTQ5ZTY2MjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EUlREYXRhT2JqZWN0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0
YU9iamVjdC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBTVERNRVRIT0RJTVAgRFJURGF0YU9iamVj
dDo6U2V0RGF0YShfSW5fIEZPUk1BVEVUQyogcGZvcm1hdGV0YywgX0luXyBTVEdNRURJVU0qCiAg
ICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwogCi0gICAgYXV0byBmb3JtYXRldGMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZPUk1BVEVUQz4oKTsK
KyAgICBhdXRvIGZvcm1hdGV0YyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEZP
Uk1BVEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxl
dGVyPiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmb3JtYXRldGMu
Z2V0KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuY3BwCmluZGV4IGM4MGRmMWJlNWYyZGU0N2QzYjgzMTYzN2VmNmU5
ZmJjZDkzNGM4ZTYuLjExYzkzMzliMTZkODA0ZDJjMjAxYzkzMjlmNGE4YzM1NDQyYTgzY2IgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcApAQCAt
NzIsOSArNzIsOSBAQCBzdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoSVdl
YkZyYW1lKiB3ZWJGcmFtZSkKIH0KIAogRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9hZERlbGVn
YXRlKCkKLSAgICA6IG1fZ2NDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8R0NDb250cm9sbGVy
PigpKQotICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyPigpKQotICAgICwgbV90ZXh0SW5wdXRDb250cm9sbGVyKHN0
ZDo6bWFrZV91bmlxdWU8VGV4dElucHV0Q29udHJvbGxlcj4oKSkKKyAgICA6IG1fZ2NDb250cm9s
bGVyKG1ha2VVbmlxdWU8R0NDb250cm9sbGVyPigpKQorICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcihtYWtlVW5pcXVlPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPigpKQorICAgICwgbV90
ZXh0SW5wdXRDb250cm9sbGVyKG1ha2VVbmlxdWU8VGV4dElucHV0Q29udHJvbGxlcj4oKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCmluZGV4IGYwYWRiY2U0
Nzk2ZmFiZjRmMGQ0MmIyNzExNjMzNzAxYWM3ODEzMTQuLjQ3YWEyNzJiZjE5NWNkOWEyNWFmMjg2
NTVkMzcxZjQxNjAwZjQ1OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9V
SURlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5j
cHAKQEAgLTEwMSw4ICsxMDEsOCBAQCBjbGFzcyBEUlRVbmRvTWFuYWdlciB7CiB9OwogCiBEUlRV
bmRvTWFuYWdlcjo6RFJUVW5kb01hbmFnZXIoKQotICAgIDogbV9yZWRvU3RhY2soc3RkOjptYWtl
X3VuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCi0gICAgLCBtX3VuZG9TdGFjayhzdGQ6Om1ha2VfdW5p
cXVlPERSVFVuZG9TdGFjaz4oKSkKKyAgICA6IG1fcmVkb1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5k
b1N0YWNrPigpKQorICAgICwgbV91bmRvU3RhY2sobWFrZVVuaXF1ZTxEUlRVbmRvU3RhY2s+KCkp
CiB7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIERSVFVuZG9NYW5hZ2VyOjp1bmRvKCkK
IH0KIAogVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCi0gICAgOiBtX3VuZG9NYW5hZ2VyKHN0ZDo6
bWFrZV91bmlxdWU8RFJUVW5kb01hbmFnZXI+KCkpCisgICAgOiBtX3VuZG9NYW5hZ2VyKG1ha2VV
bmlxdWU8RFJUVW5kb01hbmFnZXI+KCkpCiAgICAgLCBtX2Rlc2t0b3BOb3RpZmljYXRpb25zKG5l
dyBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyKQogewogICAgIG1fZnJhbWUuYm90dG9t
ID0gMDsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkKIAogdm9p
ZCBVSURlbGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKCkKIHsKLSAgICBtX3VuZG9NYW5hZ2VyID0g
c3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKKyAgICBtX3VuZG9NYW5hZ2VyID0g
bWFrZVVuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKIH0KIAogSFJFU1VMVCBVSURlbGVnYXRlOjpR
dWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9i
amVjdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcCBiL1Rvb2xz
L01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAppbmRleCBiZTY0NjBlNTZiN2I3MGNkMjQ4MGZjODdk
ZTJiOWJhOTcwZTU4YzM4Li40MzkxOTI5NzkxZGQ2NzEzMWM4NThhMTY2ODljNTJiYWRjMWRkODYy
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvd3BlL21haW4uY3BwCkBAIC0xMjksOCArMTI5LDggQEAgc3RhdGljIGdib29s
ZWFuIGRlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KFdlYktpdFdlYlZpZXcgKiwgV2ViS2l0UGVybWlz
c2lvblJlcXVlc3QKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V1BFVG9vbGluZ0JhY2tlbmRzOjpW
aWV3QmFja2VuZD4gY3JlYXRlVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhl
aWdodCkKIHsKICAgICBpZiAoaGVhZGxlc3NNb2RlKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ+KHdpZHRoLCBo
ZWlnaHQpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6
V2luZG93Vmlld0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ+KHdpZHRoLCBoZWln
aHQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6V2luZG93Vmll
d0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQpOwogfQogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yNTEs
NyArMjUxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgbnVs
bHB0cikpOwogICAgIGdfb2JqZWN0X3VucmVmKHNldHRpbmdzKTsKIAotICAgIGJhY2tlbmRQdHIt
PnNldElucHV0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SW5wdXRDbGllbnQ+KGxvb3AsIHdlYlZp
ZXcpKTsKKyAgICBiYWNrZW5kUHRyLT5zZXRJbnB1dENsaWVudChtYWtlVW5pcXVlPElucHV0Q2xp
ZW50Pihsb29wLCB3ZWJWaWV3KSk7CiAjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYm
IEhBVkVfQUNDRVNTSUJJTElUWQogICAgIGF1dG8qIGFjY2Vzc2libGUgPSB3cGVfdmlld19iYWNr
ZW5kX2Rpc3BhdGNoX2dldF9hY2Nlc3NpYmxlKHdwZUJhY2tlbmQpOwogICAgIGlmIChBVEtfSVNf
T0JKRUNUKGFjY2Vzc2libGUpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaAppbmRleCA0ZTAyMGYxOTZjZDAzM2Q2
MWVlMGU2MjhmNmExZTU5Y2ExYzMzNDU4Li4wYjg0ZDJkNDU0NTU4M2RlOWZjMGRlYzEyYTRhYTg4
YTY1OWVkMTk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRleHQuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaApAQCAtNjgsNiArNjgsNyBAQCB0eXBlZGVmIGVu
dW0gIHsKIH0gQ2FsbGJhY2tUeXBlOwogCiBjbGFzcyBVSVNjcmlwdENvbnRleHQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVJU2NyaXB0
Q29udGV4dCk7CiBwdWJsaWM6CiAgICAgVUlTY3JpcHRDb250ZXh0KFVJU2NyaXB0Q29udGV4dERl
bGVnYXRlJik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNz
TWV0aG9kU3dpenpsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRo
b2RTd2l6emxlci5oCmluZGV4IDI4ZGIxMGE0Nzk5NjMwYzY0YzU1ZDA3ODZjMDBlZTA5NDg5MTQ1
ZTIuLjM5YjRlNWVhNzE4MzY4OGNkZWM5YmVmY2M5NjRjZTg5M2E1NDNmMDcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oCisrKyBi
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oCkBAIC0y
Niw5ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiBjbGFzcyBDbGFzc01ldGhvZFN3aXp6bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGFzc01ldGhvZFN3aXp6bGVyKTsKIHB1
YmxpYzoKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyKENsYXNzLCBTRUwsIElNUCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NvdW50ZXJzLmgKaW5kZXggZjllYTIyNDAyNjE1MGQ4ZTFhYzZiYjc2MTViNmRlMzg5MGFmNjcw
ZS4uYWI1YzUyZjc1ZDFhYzZhZjk2MGFjMTRjYTcwYjVjYjc0ZmEzNjI4OCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q291bnRlcnMuaApAQCAtMjcsNiArMjcsOCBAQAogI2lmbmRlZiBDb3VudGVyc19oCiAjZGVmaW5l
IENvdW50ZXJzX2gKIAorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKIHN0cnVjdCBDb3B5
TW92ZUNvdW50ZXIgewogICAgIHN0YXRpYyB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAg
ICBzdGF0aWMgdW5zaWduZWQgY29weUNvdW50OwpAQCAtNTAsNiArNTIsNyBAQCBzdHJ1Y3QgQ29w
eU1vdmVDb3VudGVyIHsKIAogCiBzdHJ1Y3QgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRpYyB1bnNpZ25l
ZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0aWMgdW5zaWduZWQgZGVzdHJ1Y3Rpb25Db3Vu
dDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcAppbmRleCAyMTM2ZTk4ZDhl
YmI4NzVkNTk3ZmM2ZTA3YzdiMDFlZDViODRhZTE2Li42YTIzMzYzMjk0MWFjZjYwNzA1OTQ5NDI2
NDAxYjMyNzMzN2M3MDgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3Jp
cHRUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcApA
QCAtNzUsNyArNzUsNyBAQCA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBydW5KU1Rlc3QoY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgV0tQYQogICAgIFV0aWw6OnJ1bigm
Y29udGV4dC5kaWRGaW5pc2gpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dl
dE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY29udGV4dC5hY3R1YWxTdHJpbmcuZ2V0KCkpOwotICAg
IGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAg
IGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihi
dWZmZXJTaXplKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGNvbnRleHQuYWN0dWFsU3Ry
aW5nLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIAogICAgIHJldHVybiBj
b21wYXJlSlNSZXN1bHQoc2NyaXB0LCBidWZmZXIuZ2V0KCksIGV4cGVjdGVkUmVzdWx0KTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKaW5kZXggOGY4ZDc2OGE1M2My
NzUxYTI0M2UwNTk1ZTJjMGMwZjQ0NWRkOTZjOC4uYmJiZmY3MDllNjdkMzU5YjRlNDgxNzFlZDdj
NGMyNDAwOGE1NjdmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0
aWxpdGllcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5j
cHAKQEAgLTY5LDcgKzY5LDcgQEAgV0tDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRGb3JJbmplY3Rl
ZEJ1bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3ROYW1lLCBXS1QKIHN0ZDo6c3RyaW5n
IHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdL
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsK
ICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcs
IGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZl
ci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdl
YlZpZXcuaAppbmRleCBhZDJhNzMyZDUxOTQ3YmJjN2FmYzY0ZTI3ZDQyMTVjZTMyODdkZGVlLi4w
YzI3YTQ2MTY0NWZiYTEyYTVjNjk1ZDkzMjY0MzA1MjZjNGVmMTI5IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgUGxhdGZvcm1X
ZWJWaWV3X2gKICNkZWZpbmUgUGxhdGZvcm1XZWJWaWV3X2gKIAorI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CisKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0
cnkuaD4KICNlbmRpZgpAQCAtNjMsNiArNjUsNyBAQCB0eXBlZGVmIHVpbnQzMl90IFdLRXZlbnRN
b2RpZmllcnM7CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIGNsYXNzIFBsYXRmb3JtV2Vi
VmlldyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpOwogICAgIGV4cGxpY2l0
IFBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKaW5kZXggNGIxMGM4NmEyYWI3
MzJlMWVhNjI3NDg0Y2M3ODk0MGZiNmNkNmU5Ni4uMmEwNmY4YmE1Y2E5ZmViNDkyYTM1MjJjNWM2
NTUwMTM4ZDIyMzdlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RXhwZWN0ZWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVk
LmNwcApAQCAtNDA3LDYgKzQwNyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCBkZXN0cnVjdG9ycykK
IHN0YXRpYyBpbnQgc25vd2ZsYWtlcyA9IDA7CiBzdGF0aWMgaW50IG1lbHRlZCA9IDA7CiBzdHJ1
Y3Qgc25vd2ZsYWtlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
c3RhdGljIHZvaWQgcmVzZXQoKSB7IHNub3dmbGFrZXMgPSBtZWx0ZWQgPSAwOyB9CiAgICAgc25v
d2ZsYWtlKCkgeyArK3Nub3dmbGFrZXM7IH0KICAgICB+c25vd2ZsYWtlKCkgeyArK21lbHRlZDsg
fQpAQCAtNDE2LDcgKzQxNyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogewog
ICAgIC8vIFVuaXF1ZSBzbm93Zmxha2VzIGNhbm5vdCBiZSBjb3BpZWQuCiAgICAgewotICAgICAg
ICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7
CisgICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigp
KTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwogICAgICAgICBFWFBFQ1RfRVEo
bWVsdGVkLCAwKTsKICAgICB9CkBAIC00MjUsNyArNDI2LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQs
IHVuaXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBh
dXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7Cisg
ICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKTsK
ICAgICAgICAgVW5leHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gYyhXVEZNb3Zl
KHMpKTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwogICAgICAgICBFWFBFQ1Rf
RVEobWVsdGVkLCAwKTsKQEAgLTQ0Niw3ICs0NDcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5p
cXVlX3B0cikKICAgICB9OwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9w
dHI8c25vd2ZsYWtlPiwgaW50PiBzKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAg
ICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4sIGludD4gcyhtYWtlVW5p
cXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS52YWx1ZSgpKTsKICAg
ICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpAQCAtNDU0LDcgKzQ1NSw3IEBAIFRF
U1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAog
ICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4g
cyhtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSkpOworICAgICAg
ICBFeHBlY3RlZDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVj
dGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS5l
cnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpAQCAtNDYyLDcg
KzQ2Myw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFrZTo6
cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgc3RkOjp1bmlxdWVfcHRy
PHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+
KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+
IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpKTsKICAgICAgICAgcGxv
dyhXVEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywg
MSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRl
ZFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5j
cHAKaW5kZXggODRkYTVlYzNmZmMyNDhhY2RkOWUzNjMzMDM4YzY5ZGFlODkxMjA5OS4uN2I4ZmFm
Mjg4YWJjMDdjZmFmOGI1MjcxMjM4Zjc2ZDAxMzAxMmVlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBA
IFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoQ291bnRl
ZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hD
b3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5p
cXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgaGFzaENvdW50ZWRTZXQu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI1OSw3ICsyNTksNyBA
QCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5SW5pdGlhbENvdW50KQogCiAg
ICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVl
UHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGhh
c2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDEyKTsKIAogICAgIEVYUEVDVF9F
USgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpA
QCAtMjk4LDcgKzI5OCw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlf
RmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9w
dHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7
CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMxMiw3
ICszMTIsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5z
VXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxp
bnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAg
ICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMzIzLDcgKzMy
Myw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfR2V0VXNpbmdSYXdQ
b2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNo
Q291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+
KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291
bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMzM3LDcgKzMzNyw3IEBAIFRF
U1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVy
KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8g
dW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwog
ICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsK
ICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAppbmRleCAxZTE2M2QzODk5OGU2YmFiZmZm
NTM4NDEzY2NhMjhhYTZkMjk4OTgyLi5hODBjYTc0OTRhOGY5YTc5NjdlMWU0OTQ2ZmU4Y2NhNjM5
Y2JiNThiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFw
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcApAQCAt
MTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleSkKIAogICAgIEhh
c2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+
IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpLCAyKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIFRFU1QoV1RGX0hh
c2hNYXAsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8
c3RkOjp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRy
LmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjQ0LDcg
KzI0NCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3
UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsK
IAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1
dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsK
ICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5p
cXVlUHRyKSwgMik7CiAKQEAgLTI1NSw3ICsyNTUsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlx
dWVQdHJLZXlfR2V0VXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVf
cHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAg
IG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjY5LDcgKzI2OSw3IEBAIFRF
U1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAg
ICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwg
aW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3Zl
KHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yODksNyArMjg5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwg
VW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5p
cXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBh
dXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIg
PSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwog
CkBAIC01NjMsMTIgKzU2MywxMiBAQCBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfVW5pcXVlUG9p
bnRlcikKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQ+
PiBtYXA7CiAgICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5lbnN1cmUoMSwgW10g
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMSk7IH0pOworICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDEpOyB9KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAq
bWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKmFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIGFkZFJlc3VsdC5pdGVyYXRvci0+
a2V5KTsKICAgICAgICAgRVhQRUNUX1RSVUUoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAg
ICBhdXRvIGFkZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8dW5zaWduZWQ+KDIpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQyID0gbWFwLmVu
c3VyZSgxLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNp
Z25lZD4oMik7IH0pOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICptYXAuZ2V0KDEpKTsKICAgICAg
ICAgRVhQRUNUX0VRKDF1LCAqYWRkUmVzdWx0Mi5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoMXUsIGFkZFJlc3VsdDIuaXRlcmF0b3ItPmtleSk7CkBAIC01OTAsNiAr
NTkwLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1JlZlB0cikKIH0KIAogY2xhc3MgT2Jq
ZWN0V2l0aFJlZkxvZ2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgT2JqZWN0V2l0aFJlZkxvZ2dlcihSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKICAgICAg
ICAgOiBtX2xvZ2dlcihXVEZNb3ZlKGxvZ2dlcikpCkBAIC02MDQsNyArNjA1LDcgQEAgdm9pZCB0
ZXN0TW92aW5nVXNpbmdFbnN1cmUoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiB7CiAgICAgSGFz
aE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFdpdGhSZWZMb2dnZXI+PiBtYXA7
CiAgICAgCi0gICAgbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9KTsKKyAgICBtYXAuZW5zdXJl
KDEsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUo
bG9nZ2VyKSk7IH0pOwogfQogCiB2b2lkIHRlc3RNb3ZpbmdVc2luZ0FkZChSZWY8UmVmTG9nZ2Vy
PiYmIGxvZ2dlcikKQEAgLTYxMiw3ICs2MTMsNyBAQCB2b2lkIHRlc3RNb3ZpbmdVc2luZ0FkZChS
ZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1
ZV9wdHI8T2JqZWN0V2l0aFJlZkxvZ2dlcj4+IG1hcDsKIAogICAgIGF1dG8mIHNsb3QgPSBtYXAu
YWRkKDEsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBzbG90ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOworICAgIHNsb3QgPSBt
YWtlVW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7CiB9CiAKIFRF
U1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9MYW1iZGFzQ2FwdHVyaW5nQnlSZWZlcmVuY2UpCkBAIC02
ODMsNiArNjg0LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVmFsdWVJc0Rlc3RydWN0ZWRPblJlbW92
ZSkKIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogewogICAg
IHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCByZWYoKQogICAgICAgICB7CiAgICAg
ICAgICAgICArK2NvdW50OwpAQCAtNjk3LDcgKzY5OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFJl
ZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogICAgICAgICBjb25zdCBEZXJlZk9ic2VydmVyKiBv
YnNlcnZlZEJ1Y2tldCB7IG51bGxwdHIgfTsKICAgICB9OwogCi0gICAgYXV0byBvYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAgICBhdXRvIG9ic2VydmVyID0g
bWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAgICAgSGFzaE1hcDxSZWZQdHI8RGVyZWZP
YnNlcnZlcj4sIGludD4gbWFwOwogICAgIG1hcC5hZGQoYWRvcHRSZWYob2JzZXJ2ZXIuZ2V0KCkp
LCA1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKaW5kZXggNzFl
Y2ZkZGI4NDJiNmJkNTE2NDFjYTA1YjYxMDhhZDQ4ZjYyYmI3ZC4uODcyNjhjNzRmMGNiOGZjMTQ5
ZWJmNjBjODU4OGZjZWQzNTgxYTIwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaFNldC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQ
dHJLZXkpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgc2V0LmFkZChX
VEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEVT
VChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAg
SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVl
UHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTU4LDcg
KzE1OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3
UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBzZXQ7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAg
aW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0
cikpOwogCkBAIC0xNzEsNyArMTcxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5
X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBh
dXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0
KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xOTEsNyArMTkxLDcg
QEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAK
ICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVl
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1
bmlxdWVQdHIpKTsKIApAQCAtMjgzLDYgKzI4Myw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIENvcHlD
YXBhY2l0eUlzTm90T25Cb3VuZGFyeSkKIFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0ck5vdFplcm9l
ZEJlZm9yZURlcmVmKQogewogICAgIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKKyAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBy
ZWYoKQogICAgICAgICB7CiAgICAgICAgICAgICArK2NvdW50OwpAQCAtMjk3LDcgKzI5OCw3IEBA
IFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogICAgICAgICBj
b25zdCBEZXJlZk9ic2VydmVyKiBvYnNlcnZlZEJ1Y2tldCB7IG51bGxwdHIgfTsKICAgICB9Owog
Ci0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsK
KyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAgICAg
SGFzaFNldDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4+IHNldDsKICAgICBzZXQuYWRkKGFkb3B0UmVm
KG9ic2VydmVyLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9MaXN0SGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0
SGFzaFNldC5jcHAKaW5kZXggNjU3YmU0MWQ2MjA3MjQ0NjdhNTU0OWUyYWI1YTE5NDFjNGUzNzNj
MS4uYjc3MGE1YjI3YzFkMmIwOTVhNWJiNTlkNjVhYzNmNGRjNGU0ZTY4ZSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcApAQCAtMzgwLDcgKzM4MCw3
IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBMaXN0SGFzaFNl
dDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGxpc3Q7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikp
OwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25z
dHJ1Y3Rpb25Db3VudCk7CkBAIC0zOTYsNyArMzk2LDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQs
IFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0
ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVlUHRyLmdldCgp
OwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTQxMCw3ICs0MTAsNyBA
QCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2lu
dGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0g
ICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1
bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAg
IGF1dG8gcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVl
UHRyKSk7CiAKQEAgLTQyMSw5ICs0MjEsOSBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVl
UHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxz
dGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGludD4oMik7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoMiA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMik7CiAgICAgYXV0byBwdHJXaXRoMiA9
IHVuaXF1ZVB0cldpdGgyLmdldCgpOwotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQgPSBzdGQ6Om1h
a2VfdW5pcXVlPGludD4oNCk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoNCA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNCk7CiAgICAgYXV0byBwdHJXaXRoNCA9IHVuaXF1
ZVB0cldpdGg0LmdldCgpOwogCiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHJXaXRoMikp
OwpAQCAtNDM1LDcgKzQzNSw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlf
SW5zZXJ0QmVmb3JlVXNpbmdSYXdQb2ludGVyKQogICAgIEFTU0VSVF9FUShwdHJXaXRoNCwgbGlz
dC5sYXN0KCkuZ2V0KCkpOwogICAgIEFTU0VSVF9FUSg0LCAqbGlzdC5sYXN0KCkuZ2V0KCkpOwog
Ci0gICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IHN0ZDo6bWFrZV91bmlxdWU8aW50PigzKTsKKyAg
ICBhdXRvIHVuaXF1ZVB0cldpdGgzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
aW50PigzKTsKICAgICBhdXRvIHB0cldpdGgzID0gdW5pcXVlUHRyV2l0aDMuZ2V0KCk7CiAKICAg
ICBsaXN0Lmluc2VydEJlZm9yZShwdHJXaXRoNCwgV1RGTW92ZSh1bmlxdWVQdHJXaXRoMykpOwpA
QCAtNDYyLDcgKzQ2Miw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVt
b3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAg
YXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CiAgICAgYXV0byogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0xvY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKaW5k
ZXggMmRjY2VkY2FkY2M2YzIyMjczZGViYzIwZjNmZjY3N2M4NzMyOTAyNy4uNWZkMzFiZjFjOWFi
ZWNmYjhhYmU3MzU2MDhhNDdjNTYwNDMwNDc3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvTG9jay5jcHAKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IExvY2tJbnNwZWN0b3IgewogdGVt
cGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiB2b2lkIHJ1bkxvY2tUZXN0KHVuc2lnbmVkIG51bVRo
cmVhZEdyb3VwcywgdW5zaWduZWQgbnVtVGhyZWFkc1Blckdyb3VwLCB1bnNpZ25lZCB3b3JrUGVy
Q3JpdGljYWxTZWN0aW9uLCB1bnNpZ25lZCBudW1JdGVyYXRpb25zKQogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9IHN0ZDo6bWFrZV91bmlxdWU8TG9ja1R5cGVbXT4o
bnVtVGhyZWFkR3JvdXBzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlW10+IHdvcmRzID0g
c3RkOjptYWtlX3VuaXF1ZTxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVm
UHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3VwKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9ja3MgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxMb2NrVHlwZVtdPihudW1UaHJlYWRHcm91cHMpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRy
PFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJl
ZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIHRocmVhZEdyb3VwSW5kZXggPSBudW1UaHJlYWRHcm91cHM7IHRo
cmVhZEdyb3VwSW5kZXgtLTspIHsKICAgICAgICAgd29yZHNbdGhyZWFkR3JvdXBJbmRleF0gPSAw
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAppbmRleCA0
NTJlMjI3NzFkYzA2NGFkYWFmZTYyMGViMzNlODAxMzBmNzlmMTk3Li5lMDBhMDliMmExN2FhNzM0
ODU2ZTQyYzExNDVjYmU2MDg2M2YwYTA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9QYXJraW5nTG90LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0cnVjdCBTaW5nbGVMYXRj
aFRlc3QgewogCiB2b2lkIHJ1blBhcmtpbmdUZXN0KHVuc2lnbmVkIG51bUxhdGNoZXMsIHVuc2ln
bmVkIGRlbGF5LCB1bnNpZ25lZCBudW1UaHJlYWRzLCB1bnNpZ25lZCBudW1TaW5nbGVVbnBhcmtz
KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRjaFRlc3RbXT4gdGVzdHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8U2luZ2xlTGF0Y2hUZXN0W10+KG51bUxhdGNoZXMpOwogCiAgICAgZm9yICh1
bnNpZ25lZCBsYXRjaEluZGV4ID0gbnVtTGF0Y2hlczsgbGF0Y2hJbmRleC0tOykKICAgICAgICAg
dGVzdHNbbGF0Y2hJbmRleF0uaW5pdGlhbGl6ZShudW1UaHJlYWRzKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKaW5kZXggMDgxZGY5ZTRmYzFkMjUxZDgx
NGIyMjY0YmQyZDBlMDUyYzBiZDQxZi4uZjRlZjk4M2IxYTlmYmU4OTgwN2M3NWFjMjhmZGI2MjZk
OWE5NmExMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291
bnRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5j
cHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBURVNUKFdURiwgUmVmQ291bnRlcikKIFRFU1QoV1RGLCBS
ZWZDb3VudGVyRGVsZXRlQ291bnRlcldpdGhPdXRzdGFuZGluZ1Rva2VucykKIHsKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBjb3VudGVyID0gbWFrZVVuaXF1ZTxUZXN0Q291
bnRlcj4oWyZdKFJlZkNvdW50ZXJFdmVudCBldmVudCkgewogICAgICAgICAgICAgaWYgKCFjb3Vu
dGVyLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgIGNvdW50ZXIgPSBudWxscHRyOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJl
Zi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwCmluZGV4
IDRkMmIyMmFhNTRmOGIwMjU0ODBmNTllNTYxYTNjY2U3MTU1MDIzMTIuLjFhZmUzZTk3NzliYjg0
ODg3ZTk0MzBkZTQxNzI2Yzc0Mzg1MzJmZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVW5pcXVlUmVmLmNwcApAQCAtMzAsOCArMzAsMTEgQEAKIAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogICAgIAotY2xhc3MgQSB7IH07CitjbGFzcyBBIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK307CiBjbGFzcyBCIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBCKGludCBhLCBpbnQgYiwgaW50IGMpCiAgICAgICAgIDogYShhKQpA
QCAtNDMsNiArNDYsNyBAQCBjbGFzcyBCIHsKICAgICBpbnQgYzsKIH07CiBjbGFzcyBDIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDKFVuaXF1ZVJlZjxBPiYm
IGEpCiAgICAgICAgIDogYShXVEZNb3ZlKGEpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9WYXJpYW50LmNwcAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1NGZmZmQzMzIxMzk1ZTlmMWUyZDJh
N2MyLi41MWVjYTA3NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5ZmY0ZmQ1NmJiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFRF
U1QoV1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKICAgICBDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7CiAKICAgICB7Ci0gICAgICAgIGF1
dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOworICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICAgICAgVmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gdiA9IFdURk1vdmUodW5pcXVlUHRyKTsK
IAogICAgICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNv
bnN0cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5j
cHAKaW5kZXggMTUwYjliNzZjOGE1NjVlMzY1NTQ4MzZlMGJiZWMwNTA1Yzc4NDhmMi4uN2U2MzA2
OTNlZWM2MDQxYTM3NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IEludCA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnQ+IHsKIH07CiAKIGNsYXNzIEJhc2UgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIEJhc2UoKSB7IH0KIApAQCAtNTc4LDEwICs1NzksMTAgQEAgVEVTVChXVEZfV2Vha1B0
ciwgV2Vha0hhc2hTZXRFeHBhbnNpb24pCiAgICAgICAgIEVYUEVDVF9FUSh3ZWFrSGFzaFNldC5j
YXBhY2l0eSgpLCAwdSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGluaXRpYWxDYXBhY2l0eSAvIG1h
eExvYWRDYXApOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdGlhbENhcGFj
aXR5IC8gbWF4TG9hZENhcDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6
bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1
ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAg
ICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAgICAgIG90aGVy
T2JqZWN0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpKTsKKyAgICAgICAgICAgIG90
aGVyT2JqZWN0cy5hcHBlbmQobWFrZVVuaXF1ZTxCYXNlPigpKTsKICAgICAgICAgICAgIHdlYWtI
YXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEo
c19iYXNlV2Vha1JlZmVyZW5jZXMsIG90aGVyT2JqZWN0cy5zaXplKCkpOwpAQCAtNjE1LDcgKzYx
Niw3IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBF
WFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICB1bnNpZ25lZCBv
YmplY3RDb3VudCA9IGluaXRpYWxDYXBhY2l0eSAqIDI7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBvYmplY3RDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9
IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFr
ZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwog
ICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAgICAg
IHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTY2NywxMCArNjY4LDEwIEBAIFRF
U1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZXNFbXB0eSkKICAgICB7CiAgICAgICAg
IFdlYWtIYXNoU2V0PEJhc2U+IHdlYWtIYXNoU2V0OwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJhc2U+PiBvYmplY3RzOwotICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1
ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAg
ICAgZG8gewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+
KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAg
ICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBw
ZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgIH0gd2hpbGUgKHdlYWtIYXNoU2V0LmJlZ2lu
KCkuZ2V0KCkgPT0gZmlyc3RPYmplY3QuZ2V0KCkpOwpAQCAtNzM0LDggKzczNSw4IEBAIFRFU1Qo
V1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAKICAgICB3aGlsZSAoMSkgewog
ICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKLSAgICAgICAgYXV0byBmaXJz
dE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKLSAgICAgICAgYXV0byBsYXN0T2Jq
ZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0
ID0gbWFrZVVuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGxhc3RPYmplY3QgPSBtYWtlVW5p
cXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqZmlyc3RPYmplY3QpOwogICAg
ICAgICB3ZWFrSGFzaFNldC5hZGQoKmxhc3RPYmplY3QpOwogICAgICAgICBpZiAod2Vha0hhc2hT
ZXQuYmVnaW4oKS5nZXQoKSAhPSBmaXJzdE9iamVjdC5nZXQoKSkKQEAgLTc1OSwxMCArNzYwLDEw
IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAgICAgewogICAg
ICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9
IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9
IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpub25GaXJzdE9i
amVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJh
c2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAg
ICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFr
SGFzaFNldC5iZWdpbigpLmdldCgpID09IG5vbkZpcnN0T2JqZWN0LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXgg
MmFhYjY1ZGQ4ZmQ3ZWYwNzA1MWZiNmY3NTY3NThjZGU3MDJlMDdhMS4uODFkN2JhMjkxYWU5ZjRh
YjdjZjJlNWY5YWFkNjJjOTQyNDM1MzY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
Q0FSaW5nQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKQogICAgIHsKICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwot
ICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsK
KyAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Q0FSaW5nQnVmZmVyPigpOwogICAgIH0KIAogICAgIC8vIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bihkb3VibGUgc2FtcGxlUmF0ZSwgVUludDMyIG51bUNoYW5uZWxzLCBQQ01Gb3JtYXQgZm9ybWF0
LCBib29sIGlzSW50ZXJsZWF2ZWQsIHNpemVfdCBjYXBhY2l0eSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA3
NzhlNjE1NWYwNmNjMTI4Mzk3OTc1ZjA0NTg3MTJhMmM3MTA0MGZhLi5kY2E0NjM2MDJlOTZkNjBh
MDQ1MTM4MTIxY2JiZGNlZmJlZTllNWMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zNyw2ICszNyw3IEBA
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHN0YXRpYyB1bnNpZ25lZCBkZWxldGlvbkNvdW50
OwogCiBjbGFzcyBDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6
Q2FsY0V4cHJlc3Npb25Ob2RlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUoKQogICAgIHsKQEAg
LTUyLDcgKzUzLDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlIDogcHVibGlj
IFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CiAKIHN0YXRpYyBSZWY8V2ViQ29yZTo6Q2Fs
Y3VsYXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsKLSAgICBhdXRvIG5vZGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKKyAgICBhdXRvIG5v
ZGUgPSBtYWtlVW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKICAgICByZXR1
cm4gV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUobm9kZSksIFdlYkNv
cmU6OlZhbHVlUmFuZ2VBbGwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCmluZGV4IGY1OGRhOGE0MjA3
M2VjOTliYmVlMzRhODViZWMzNGMwODVjNTJhNjQuLjBjMWEwNjlmMTNjMzljNDA5ZTVkNWUxYjAz
YTdlOTJiZjliMzY2YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgVEVT
VChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRTaXplKQogICAgIHVpbnQzMl90IGNoYW5u
ZWxJZCA9IDB4MDUwNjA3MDg7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAKLSAgICBhdXRv
IGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVs
SWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBk
YXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5p
dFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1
aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGluaXRQYWNr
ZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKIAotICAgIGF1dG8gY29udGludWF0aW9u
UGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFu
bmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0g
bWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdURk1v
dmUoZGF0YSkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGNvbnRpbnVhdGlvblBhY2tldC0+Z2V0U2Vy
aWFsaXplZERhdGEoKS5zaXplKCkpOwogfQogCkBAIC03MCw3ICs3MCw3IEBAIFRFU1QoRmlkb0hp
ZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAw
eEY1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9I
aWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsKLSAgICBh
dXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFu
bmVsSWQsIGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0
byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBj
bWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIHNpemVfdCBpbmRl
eCA9IDA7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZCA9IGluaXRQYWNrZXQtPmdl
dFNlcmlhbGl6ZWREYXRhKCk7CkBAIC05NCw3ICs5NCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VU
ZXN0LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsx
MCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21t
YW5kOjprV2luazsKICAgICBzaXplX3QgbGVuZ3RoID0gZGF0YS5zaXplKCk7Ci0gICAgYXV0byBv
cmlnUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElk
LCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CisgICAgYXV0byBvcmlnUGFja2V0ID0gbWFr
ZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSks
IGxlbmd0aCk7CiAKICAgICBzaXplX3QgcGF5bG9hZExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVf
dD4ob3JpZ1BhY2tldC0+cGF5bG9hZExlbmd0aCgpKTsKICAgICBWZWN0b3I8dWludDhfdD4gb3Jp
Z0RhdGEgPSBvcmlnUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggMWVkMTMyOGY4
MTMwOWUxMmUxMzcxY2IzYWRmZTZiMGE5NzgzZWViNi4uMjI4MzgzYTBmMzBhOWIxMzlmNmFhZjQz
Zjk1Y2VkZDgwOTE2NmU2YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgVEVTVF9GKEZpbGVNb25p
dG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6
OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYo
KSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25p
dG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5j
b3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAg
ICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBA
IC0xOTAsNyArMTkwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVD
aGFuZ2VzKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBX
b3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVN
b25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1
ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmls
ZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yNTAsNyArMjUwLDcg
QEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRpb24pCiAKICAgICBhdXRvIHRl
c3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1
dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgp
LCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5
cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmls
ZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5
cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTI4OSw3ICsyODksNyBAQCBURVNUX0YoRmlsZU1vbml0b3JU
ZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBX
b3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVl
LmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAg
YXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRl
c3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9k
aWZpY2F0aW9uOgpAQCAtMzQ2LDcgKzM0Niw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERl
dGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVl
dWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAg
ICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwg
dGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBl
KSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpN
b2RpZmljYXRpb246CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
dXJsL0Nvb2tpZXMuY3BwCmluZGV4IDkyZDhhMTkyY2E3YjJhMTA4MTU2NTk5N2IwZWE1YjFmOWFl
YThmNjUuLjIxOWU5NjZkYmViYWE4NGQzNjAyNzIyZTk1OWUzMmY2NGZiNGRiMmUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBA
IC00NCw3ICs0NCw3IEBAIGNsYXNzIEN1cmxDb29raWVzOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CiAgICAgewogICAgICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeSgpOwogCi0gICAgICAgIG1fY29va2llSmFyID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOworICAgICAgICBtX2Nv
b2tpZUphciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIp
KTsKICAgICAgICAgbV9jb29raWVKYXItPm9wZW4oKTsKICAgICAgICAgbV9jb29raWVKYXItPnNl
dEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5cyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3Jl
YXRlUGFnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21X
aXRoaW5DcmVhdGVQYWdlLmNwcAppbmRleCA1YzBhZTMzMTMyOGIzNmIwYmE3MGExOGQ5OTM2Njk0
MTJhY2EyOWE5Li5iM2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5ZGRhMTIxMmYxOTMyYTBkMjBmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5D
cmVhdGVQYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9z
ZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgV0tQYWdl
UmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1
ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7
CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+
KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4o
cGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlD
bGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCmluZGV4IGE0ZmJhMTI3YzZlNGQwM2U2
M2Q5YTgxNzJhMzliM2NiOGIxNDcyYzcuLjdiYzM1MjRmMmJkYjlkYmQ3YTQzNWEzY2M2YWQzODMy
ZTk0NGVkZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01v
ZGFsQWxlcnRzU1BJLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9N
b2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNy
ZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBX
S0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAg
ICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2Up
OworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7
CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQs
IDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5j
cHAKaW5kZXggMGY3ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4MDM4ZDE5MjIxZWRiZjdkNS4uY2QxOWQ3
Y2RlNTg4OTYyNWYxMjIxMmZjNzUzY2ZkNTVlMjc4ZDkyMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdp
bkFuZEVuZEVkaXRpbmcuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBXZWJLaXQyVGV4dEZp
ZWxkQmVnaW5BbmRFZGl0RWRpdGluZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAg
ICAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpj
cmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJUZXh0RmllbGREaWRCZWdpbkFuZEVu
ZEVkaXRpbmdFdmVudHNUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChj
b250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBzZXRQYWdl
TG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAgZGlkRmluaXNo
TG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvVXNlck1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNl
ck1lc3NhZ2UuY3BwCmluZGV4IGM3YjAyNTFiZmNmMjFhYTRhYmQxMTRjODU1MDc5MjQxZDY2MTc0
ZTkuLjlkYzNhNmRhOTk1MDljMjcxMTIxZDRjM2E0NTMwODRmZWU5ODliZDcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKQEAgLTkzLDcg
KzkzLDcgQEAgY2xhc3MgV2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdCA6IHB1YmxpYyA6
OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVD
b250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJVc2VyTWVzc2FnZVRlc3QiKSk7CiAgICAgICAg
IHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAg
IHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQo
KSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4
dC5nZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy0+cGFnZSgpLCB0
aGlzKTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKaW5kZXggZWQ5ZjBmZmM3MDI1YWIxMmNi
NTM5NjdmNzIwNWZmOTZjODliZTY5OS4uNTJmMThkY2ViNDJkNTFhYzA4Mzk1YjYyMDAxZDRhOTU0
MGY3NDUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2ls
bExvYWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2Fk
LmNwcApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBXZWJLaXQyV2lsbExvYWRUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0
ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIldpbGxMb2FkVGVzdCIpKTsKICAgICAgICAg
c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAg
d2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgp
KTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0
LmdldCgpKTsKIAogICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZhbHNlOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0
QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQppbmRleCBh
ZWJhMWMzNDhmYmM2NmExNzBlNTM5ZTBhNzI4NmFlZTkxNTNlNjA0Li4yOTFhNDc4YTI3ODQyNDJk
YWQ0NWEzYThmMTczOTA1ZDdkM2IyZjIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBl
YXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgYXV0byByZXN1bHRTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KHNjcmlwdENv
bnRleHQsIHJlc3VsdCwgbnVsbHB0cikpOwogCiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IEpT
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShyZXN1bHRTdHJpbmcuZ2V0KCkpOwotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxj
aGFyW10+KGJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHJlc3Vs
dFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAgICAgICBXS0J1
bmRsZVBhZ2VTZXRVc2VEYXJrQXBwZWFyYW5jZShtX3BhZ2UsIHRydWUpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0
aW9uLmNwcAppbmRleCBkNmNjMmZiMjQ3ZTU2MjA2Njk3NzYxMGIyNTY3OWI3ZWQxZGNjOGJhLi43
YzhjOGI1MjE1NGFjNGViMDk4ZTY5NTE3OTA2OWEwNWViZGM2NmFjIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0
aW9uLmNwcApAQCAtMjU2LDYgKzI1Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVu
dGljYXRpb25FbXB0eVJlYWxtKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0CiB9CiAK
IGNsYXNzIFR1bm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgVHVubmVsKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAg
ICAgIDogbV9zZXJ2ZXIoc2VydmVyKQpAQCAtMjk5LDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHNl
cnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNv
bnN0IGNoYXIqCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9DT05O
RUNUKSB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2Vy
dmVyKSwgPT0sIGdQcm94eVNlcnZlclBvcnQpOwotICAgICAgICBhdXRvIHR1bm5lbCA9IHN0ZDo6
bWFrZV91bmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOworICAgICAgICBhdXRvIHR1bm5l
bCA9IG1ha2VVbmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOwogICAgICAgICBhdXRvKiB0
dW5uZWxQdHIgPSB0dW5uZWwuZ2V0KCk7CiAgICAgICAgIHR1bm5lbFB0ci0+Y29ubmVjdChbdHVu
bmVsID0gV1RGTW92ZSh0dW5uZWwpXShjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpIHsKICAgICAg
ICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKQEAgLTM5NCw3ICszOTUsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHkoUHJveHlBdXRoZW50aWNhdGlvblRlc3Qq
IHRlc3QsIGdjb25zdAogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJv
eHlIVFRQUyhQcm94eUF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
LSAgICBhdXRvIGh0dHBzU2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRUZXN0U2VydmVy
PihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7CisgICAgYXV0byBodHRwc1NlcnZlciA9
IG1ha2VVbmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVySFRU
UFMpOwogICAgIGh0dHBzU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOwogCiAgICAgdGVzdC0+
bG9hZFVSSShodHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Byb3h5L2F1dGgtdGVzdC5odG1s
IikuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNiMDVjZDRiYzAyN2UxMmQxMTAzZmFmNmEw
MDdhYzZmNDBmMy4uYjZiNzI4ZTQ1ZTA5YzUxYTZkNmJhOTliZjcxN2UxOTVlOWEwZTBjMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NU
ZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nl
c3NUZXN0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNlbmRpZgogCiBjbGFzcyBXZWJQcm9jZXNzVGVz
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChjb25zdCBjaGFy
KiB0ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSopID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKaW5kZXggMTI1
NjI0MTk2YTcxYzZkM2FkNWJjZGQyOWYxNDJiODZhYmI5ZmQxMS4uZTQwMDA3NjMzZjIzNjI0MDUy
OWRmNTRhZTg2MzIwODdiZDM2OTUyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKQEAgLTMwLDcgKzMwLDcg
QEAgc3RhdGljIGdib29sZWFuIGNsaWNrZWRDYWxsYmFjayhXZWJLaXRET01ET01XaW5kb3cqLCBX
ZWJLaXRET01FdmVudCosIFdlYktpdERPTUQKIAogY2xhc3MgV2ViS2l0RE9NRE9NV2luZG93VGVz
dCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXRET01E
T01XaW5kb3dUZXN0PigpOyB9CiAKIHByaXZhdGU6CiAgICAgZ3VpbnQ2NCB3ZWJQYWdlRnJvbUFy
Z3MoR1ZhcmlhbnQqIGFyZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Bs
YXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggOGQyZWU4YWQxNmNhZDY3OTU2OGVkOWI2ZDc1
Y2VjZDgyMTUwZmVkYi4uMzQ5MGVmMWNlYjZmMTc4MDUwMmYwY2RjOTE5Yzk3MWUyOTJiZTkwNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0Nv
Y29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXND
b2NvYS5tbQpAQCAtMzgsNyArMzgsNyBAQCBzdGQ6OnN0cmluZyB0b1NURChOU1N0cmluZyAqc3Ry
aW5nKQogICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIAogICAgIHNpemVfdCBidWZmZXJT
aXplID0gW3N0cmluZyBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ107Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVy
U2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIE5TVUludGVnZXIgc3RyaW5nTGVuZ3RoOwogICAg
IFtzdHJpbmcgZ2V0Qnl0ZXM6YnVmZmVyLmdldCgpIG1heExlbmd0aDpidWZmZXJTaXplIHVzZWRM
ZW5ndGg6JnN0cmluZ0xlbmd0aCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBvcHRpb25z
OjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSByZW1haW5pbmdSYW5nZTow
XTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGgpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDU0NmNhNmUy
MjJkOWZlYTgxY2U3YmU0ZTJjMmQzOTg1YzViNDRmMGYuLjI0NzU3Mjg5OGI2YTg3OWM3YTM2YjRm
YzY1YjkxNTMzMDQ3MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVdvcmthcm91bmRU
b0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCkKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IHN3aXp6bGVyOwogICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXnsKLSAgICAgICAgc3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9k
U3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlw
ZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRh
YmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKKyAg
ICAgICAgc3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmli
dXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRl
bVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJz
Rm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKICAgICB9KTsKIH0KIApAQCAtMzQ3
LDcgKzM0Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUg
Y29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9uY2UgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE3NTIwND4gaXMgZml4ZWQuCi0gICAgX3NoYXJlZENhbGxvdXRCYXJT
d2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91
dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CisgICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6
emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFz
c10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1
cHByZXNzVUlDYWxsb3V0QmFyKSk7CiAgICAgX2lucHV0U2Vzc2lvbkNoYW5nZUNvdW50ID0gMDsK
ICAgICBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVt
UHJvdmlkZXJzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaAppbmRleCA2OTBmMGE3NzU2Y2ZlM2FmYjA3
ZDkwYmVlZmYwOTU3OGIyZmM1NWRlLi4yODE0NTI3ZjE5Yjk1NGY4MmFlYjg3YmMwZTRjOGRjMGI5
YTdmNWI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJLaXRUZXN0U2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViS2l0VGVzdFNlcnZlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiBjbGFzcyBXZWJLaXRUZXN0U2VydmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIGVudW0gU2VydmVyT3B0aW9ucyB7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KaW5kZXggODYyNjM1NDQzMzVh
N2Y1ZDk3MWI1ZGMwZDI1OWU1NWRjMGQ3M2M2Ni4uNGJkZTZjNTEwMGQyYmQ2ZmU0YmI5MGZhY2Jl
MjVkMzM5YTUwNTRiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZv
bnRPcHRpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9u
cy5tbQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGb250T3B0aW9u
czooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCiAKICAgICBfc2hhZG93T2Zmc2V0ID0gQ0dT
aXplWmVybzsKICAgICBfc2hhZG93Qmx1clJhZGl1cyA9IDA7Ci0gICAgX3JlcGxhY2VGb250T3B0
aW9uc1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0Ns
YXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRp
b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNoYXJlZEZvbnRPcHRpb25zRm9yVGVzdGluZykp
OworICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRo
b2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3Rv
cihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0
aW9uc0ZvclRlc3RpbmcpKTsKICAgICBfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMgPSBOTzsKICAg
ICBfaGFzTXVsdGlwbGVGb250cyA9IE5POwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRT
ZW5kZXJQcm94eS5oCmluZGV4IDE1MzIyMTgyNjk5ZTBlYTMwNzU0YTAyMjZjM2E3YjYyOTU5NzZk
MDAuLjExMzk5YjM5MGZlOTE3MGY2YzUyNTI3NWFjMjM0NTgyZGFmNzUwZjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVj
dCBXVFJFdmVudFF1ZXVlSXRlbTsKICNlbmRpZgogCiBjbGFzcyBFdmVudFNlbmRlclByb3h5IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFdmVu
dFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKik7CiAgICAgfkV2ZW50U2VuZGVyUHJveHkoKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1v
Y2suaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaApp
bmRleCA3ZDk0NWQ2N2VjNjc1MGJlNzA2NDM1YTJhNmIzYzc0ZDFhZDE3NDNjLi4xZWQ0YWRmOWIz
OTM5M2EzMzNhYTMyNTEwOTdiOWUzYWE0MmNjMzZiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCkBAIC0yNywxMCArMjcsMTIgQEAKICNk
ZWZpbmUgR2VvbG9jYXRpb25Qcm92aWRlck1vY2tfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0
YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdUUiB7
CiAKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayhXS0NvbnRleHRS
ZWYpOwogICAgIH5HZW9sb2NhdGlvblByb3ZpZGVyTW9jaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5jcHAKaW5kZXggMWY5ZDNlZmM5NjRmYjEzNzdiYzY2M2MwMTYwYzM0YTg4YjIzMjhh
Ni4uYzlhNTJjMTVmNzcwODMwNjgzYzhlZmY2ODk0MjliZDBiYzFmNTY0NSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9s
bGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50
U2VuZGluZ0NvbnRyb2xsZXIuY3BwCkBAIC02MTIsNiArNjEyLDcgQEAgdm9pZCBFdmVudFNlbmRp
bmdDb250cm9sbGVyOjptb25pdG9yV2hlZWxFdmVudHMoKQogfQogCiBzdHJ1Y3QgU2Nyb2xsQ29t
cGxldGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIEpTQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAgICAgSlNPYmplY3RSZWYgbV9mdW5jdGlv
bjsKIApAQCAtNjQ3LDcgKzY0OCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsCiAgICAgCiAg
ICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAKLSAg
ICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNj
cm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmpl
Y3QpOworICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSA9IG1ha2VVbmlxdWU8
U2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YT4oY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09i
amVjdCk7CiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyID0gc2Nyb2xs
Q29tcGxldGlvbkNhbGxiYWNrRGF0YS5yZWxlYXNlKCk7CiAgICAgYm9vbCBjYWxsYmFja1dpbGxC
ZUNhbGxlZCA9IFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNh
bGxiYWNrKHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0
YVB0cik7CiAgICAgaWYgKCFjYWxsYmFja1dpbGxCZUNhbGxlZCkgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApp
bmRleCA3MTE2Y2M5ODE1NjY5ZDk0OTRkYmY4ZGU0OGJhZWVjZDYzNzRjMzc2Li44M2IyYjMwYjEz
MzJlYzc3YmZlZmNjMjlmZGQxYTJlNDgzY2I1ZjIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTEx
LDcgKzExMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYg
YnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiB2b2lkIEluamVjdGVkQnVuZGxl
OjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewogICAgIGJvb2wgaXNNYWlu
UGFnZSA9IG1fcGFnZXMuaXNFbXB0eSgpOwotICAgIG1fcGFnZXMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7CisgICAgbV9wYWdlcy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+KHBhZ2UpKTsKIAogICAgIHNldFVwSW5qZWN0ZWRC
dW5kbGVDbGllbnRzKHBhZ2UpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA1OWQzZTFiMGQw
MmUyMmM1MmZhNzY1NDMzMjljMjNmNmI2MmEzODlhLi5iMzIzYzI1MDQ0ZjU1MDM2MDc2ZjQ4ZWRk
ZDQ3YmNlYWEzZTIwZjE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2UgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlUGFnZShXS0J1
bmRsZVBhZ2VSZWYpOwogICAgIH5JbmplY3RlZEJ1bmRsZVBhZ2UoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDM3
MjllMDVhOWI3YmM1OTEwYjA5OTgwOWU4NmYwYTcyZmE1Y2ZjOTkuLmY1YzlkNmYyOWMwZjQ2ZmRl
OGEzNGQ4OWM0MjA5OTc0ODY1Y2M3MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjM4NCw3ICsyMzg0LDcgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmIGZpbGVzVmFsdWUp
CiAKICAgICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCBmaWxlVmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0g
SlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAg
ICAgYXV0byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJT
aXplKTsKKyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRG
OENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwog
CiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGZpbGVVUkxzLmdldCgpLCBhZG9wdFdLKFdLVVJM
Q3JlYXRlV2l0aEJhc2VVUkwobV90ZXN0VVJMLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpKSkuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCAw
ZTVjMDdjYTcyOWI2ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMyYzAwMTdjLi4xOGU1N2QyZmNmNjI5NzY3
YTczMjk3OWJjMmVkYzU3YWNmMTA5Y2UyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcApAQCAtNzMwLDcgKzczMCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNv
bnZlcnRUb0pTT2JqZWN0QXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlw
dENvbnRleHQobWFpbkZyYW1lKTsKIAogICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBjaGlsZHJl
bi5zaXplKCk7Ci0gICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1Zh
bHVlUmVmW10+KGVsZW1lbnRDb3VudCk7CisgICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyBpKyspCiAgICAgICAgIHZh
bHVlRWxlbWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29udGV4dCwgY2hpbGRyZW5baV0tPndyYXBw
ZXJDbGFzcygpLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Bs
YXRmb3JtV2ViVmlldy5oCmluZGV4IGY3NGNjMmQzOTNkNTMwNWZkMzY2NWJiMGUwYTM1NTE4NDQ3
MzEwOWYuLmNhNGZkYmQ3MjIxNWFmNDhiZGE5NjdkNWJjYWI0ODE1NmJhZGNjNzEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgIWRlZmluZWQoQlVJTERJTkdfR1RL
X18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgpAQCAtNjQsNiArNjUsNyBAQCB0
eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1JbWFnZTsKIG5hbWVzcGFjZSBXVFIgewog
CiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtV2ViVmlldyhXS1dlYlZp
ZXdDb25maWd1cmF0aW9uKiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1N0cmluZ0Z1bmN0aW9ucy5oCmluZGV4IGRhZjE0Y2E3MDU0ODZiZmMyMDY0MzEyM2RlNTA5
MWI3OWU1ZDAxMzEuLmJiYTE3YzJlZmZiMDk2NjVlZmMyOGVlYjY5ZTcyMzI5YjFkNjliNzQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaApAQCAtNzMsNyArNzMsNyBA
QCBpbmxpbmUgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRvSlMoY29uc3QgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+JiBzdHJpbmcpCiBpbmxpbmUgc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdS
ZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJp
bmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBi
dWZmZXJTaXplKTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdM
ZW5ndGggLSAxKTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1RE
KGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIFdURjo6U3Ry
aW5nIHRvV1RGU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1
dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1
dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZm
ZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmlu
Z05vblN0cmljdChzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJu
IFdURjo6U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0
cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCA4ZmVkNTkyNTU4ZjFjNjAyMmVkMTM5ZTBjOGM4MmVlYTI0ZGE1NWFhLi43NDU5
NWU1ZTVmMmQyYjFiZWFkYWY2MGE5YjFlMjY1Y2I4NDFlNmVlIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllciA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdFRlc3RSdW5uZXJQYWdlR3JvdXAiKSk7
CiAgICAgbV9wYWdlR3JvdXAuYWRvcHQoV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihw
YWdlR3JvdXBJZGVudGlmaWVyLmdldCgpKSk7CiAKLSAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBz
dGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOworICAgIG1fZXZlbnRTZW5k
ZXJQcm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CiB9CiAKIFdLUmV0
YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0
ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zOjpDb250ZXh0T3B0aW9ucyYg
b3B0aW9ucykgY29uc3QKQEAgLTUyMSw3ICs1MjEsNyBAQCBXS1JldGFpblB0cjxXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihj
bwogICAgICAgICBtX2NvbnRleHQgPSBwbGF0Zm9ybUFkanVzdENvbnRleHQoYWRvcHRXSyhXS0Nv
bnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSkp
LmdldCgpLCBjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fY29udGV4dE9w
dGlvbnMgPSBvcHRpb25zLmNvbnRleHRPcHRpb25zOwogCi0gICAgICAgIG1fZ2VvbG9jYXRpb25Q
cm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29u
dGV4dC5nZXQoKSk7CisgICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8
R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgaWYg
KGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygp
KSB7CiAgICAgICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRG
OChkdW1wUmVuZGVyVHJlZVRlbXApOwpAQCAtOTUxLDcgKzk1MSw3IEBAIGJvb2wgVGVzdENvbnRy
b2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9w
dGlvbnMsIFJlCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsc28gZW5zdXJl
IHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVzZXQgdGhlIEV2
ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJv
eHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogCiAgICAgLy8gRklYTUU6
IElzIHRoaXMgbmVlZGVkPyBOb3RoaW5nIGluIFRlc3RDb250cm9sbGVyIGNoYW5nZXMgcHJlZmVy
ZW5jZXMgZHVyaW5nIHRlc3RzLCBhbmQgaWYgdGhlcmUgaXMKICAgICAvLyBzb21lIG90aGVyIGNv
ZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVh
bnVwIHRvby4KQEAgLTEyMzQsMTEgKzEyMzQsMTEgQEAgc3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRl
c3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJb
XT4gYnVmZmVyOwogICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAg
ICAgIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4ocHJl
Zml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZp
bGVQcmVmaXgpOwogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBw
YXRoT3JVUkwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZv
ciB0aGUgcGF0aFNlcGFyYXRvcgorICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0aCArIFBBVEhfTUFYICsgbGVuZ3RoICsg
Mik7IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0
KCksIGZpbGVQcmVmaXgpOwogICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVm
aXhMZW5ndGgsIFBBVEhfTUFYKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY0OCw3ICsx
NjQ4LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cnVuVGVzdChjb25zdCBjaGFyKiBpbnB1dExp
bmUpCiAgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21tYW5k
KTsKIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0soY3JlYXRlVGVz
dFVSTChjb21tYW5kLnBhdGhPclVSTC5jX3N0cigpKSk7Ci0gICAgbV9jdXJyZW50SW52b2NhdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25z
KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gbWFrZVVuaXF1ZTxUZXN0SW52b2NhdGlvbj4o
d2tVUkwuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVs
cyB8fCBtX3Nob3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+c2V0SXNQaXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CkBAIC0y
OTYwLDcgKzI5NjAsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5UZXN0
KGNvbnN0IFRlc3RJbnZvY2F0aW9uJikKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1D
cmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3Qg
VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKKyAgICBtX21h
aW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9w
dGlvbnMpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNy
ZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3Vy
YXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDRkNTllODM2NzdhYTkw
MmZjNTgwMzQwM2UxOTJjMGI0MDcxZjljOGEuLjc4MzBmMDFjNmIwZmMwMjNkYzg5ZTQ0YzAwZDY1
MWJmZGYzOTdiZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CkBAIC0xNjc4LDcgKzE2NzgsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3Jp
cHQoV0tTdHJpbmdSZWYgc2NyaXB0LCB1bnNpZ25lZCBzY3JpcHRDYWxsYmFjawogICAgIG1fcGVu
ZGluZ1VJU2NyaXB0SW52b2NhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX1VJU2Ny
aXB0Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1h
a2VVbmlxdWU8VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAgICAgCiAgICAgbV9VSVNjcmlwdENv
bnRleHQtPnJ1blVJU2NyaXB0KHRvV1RGU3RyaW5nKHNjcmlwdCksIHNjcmlwdENhbGxiYWNrSUQp
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDc4ODBkZDhk
ZjU1MmZjOWQ4MmI5NGQxZDJmMmRkZmQ2ZGY4MmVjMmIuLjg1YjFiMDIwNmViODkyMjZlODZjNmI0
MWFiOTNlNWRiOTVlYmZkOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0SW52b2Nh
dGlvbiBmaW5hbCA6IHB1YmxpYyBVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGVzdEludm9jYXRp
b24pOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRlc3RJbnZvY2F0aW9uKFdLVVJMUmVmLCBjb25z
dCBUZXN0T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDBmYmY4ZWE1MjNkMzQ4ZDI1NmVjYzUyMzA0MmRl
YTAyZmVjZGQxZGMuLjBlYmY3YmZkMDAzOWY0ZWY4MDkzMmMxZWI1MTkyZmY1NGVlM2M0YTMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNy
ZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAgICAg
ICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0QXBwbGljYXRpb25NYW5pZmVzdDpbX1dLQXBwbGlj
YXRpb25NYW5pZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046dGV4dCBtYW5pZmVzdFVS
TDpuaWwgZG9jdW1lbnRVUkw6bmlsXV07CiAgICAgfQogCi0gICAgbV9tYWluV2ViVmlldyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdldCgp
LCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZp
ZXc+KGNvcGllZENvbmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwogICAgIGZpbmlzaENyZWF0
aW5nUGxhdGZvcm1XZWJWaWV3KG1fbWFpbldlYlZpZXcuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAg
aWYgKG9wdGlvbnMucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSkKQEAgLTIyNiw3
ICsyMjYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKE5T
U3RyaW5nICppZGVudGlmaWVyKQogewogICAgIG1fb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7CiAgICAgaWYgKCFtX2NhbGVuZGFyU3dpenpsZXIpCi0gICAgICAgIG1f
Y2FsZW5kYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4o
W05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsKKyAgICAgICAgbV9jYWxlbmRhclN3aXp6
bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNDYWxlbmRhciBjbGFzc10s
IEBzZWxlY3RvcihjdXJyZW50Q2FsZW5kYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenps
ZWRDYWxlbmRhcikpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldENvbnRlbnRFeHRl
bnNpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2Vu
ZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQ
cm94eUd0ay5jcHAKaW5kZXggZGU1NzhmNzNmYzM2ZWNkMTU4OWM5OWY4ZGJmOGZjY2MzOTg3YjQy
ZS4uZWY5ZTM4ZTcyM2JhYTk1ZGZmZTcwZWM1YTg3NWNmZWM4NGUzMjg3NyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTI3
MSw3ICsyNzEsNyBAQCBpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJl
ZiwgdW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2RpZmllcgogICAgICAgICByZXR1cm4gR0RL
X0tFWV9GMTI7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVU
RjhDU3RyaW5nU2l6ZShrZXlSZWYpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBXS1N0cmluZ0dldFVU
RjhDU3RyaW5nKGtleVJlZiwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBjaGFyIGNo
YXJDb2RlID0gYnVmZmVyLmdldCgpWzBdOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IDZhNjFkZjhlMzVkNmZhMDhjOGIxNGM1MWE4
MjNjNjJkMDgwNWQ0ZDIuLmYzYzQxN2M3ZmI3Y2FhNGRlNDc3N2M3YTQ5NGY1M2FmMzJhMThiZmQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9T
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1t
CkBAIC0xNTEsOCArMTUxLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKIAogICAgIG1fcHJl
c2VudFBvcG92ZXJTd2l6emxlcnMuY2xlYXIoKTsKICAgICBpZiAoIW9wdGlvbnMuc2hvdWxkUHJl
c2VudFBvcG92ZXJzKSB7Ci0gICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRyb2xs
ZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNvbXBs
ZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9s
bGVyT3JQb3BvdmVyKSkpOwotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJDb250
cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBl
cm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElNUD4o
b3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CisgICAgICAgIG1fcHJl
c2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6
emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250
cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQ
b3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+
KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJv
bVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7
CiAgICAgfQogICAgIAogICAgIEJPT0wgc2hvdWxkUmVzdG9yZUZpcnN0UmVzcG9uZGVyID0gTk87
CkBAIC0yNjksOSArMjY5LDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0S2V5Ym9hcmRJbnB1
dE1vZGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogICAgIGF1dG8gY29u
dHJvbGxlckNsYXNzID0gVUlLZXlib2FyZElucHV0TW9kZUNvbnRyb2xsZXIuY2xhc3M7CiAgICAg
bV9pbnB1dE1vZGVTd2l6emxlcnMucmVzZXJ2ZUNhcGFjaXR5KDMpOwotICAgIG1faW5wdXRNb2Rl
U3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9k
U3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCBy
ZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9p
bnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFu
Y2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0
TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElu
cHV0TW9kZSkpKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBz
ZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVB
Y3RpdmVJbnB1dE1vZGVzKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFw
cGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywg
QHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenps
ZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2Vk
QXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNz
LCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6
bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihj
b250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkpOwogICAgIFtVSUtleWJvYXJkSW1w
bC5zaGFyZWRJbnN0YW5jZSBwcmVwYXJlS2V5Ym9hcmRJbnB1dE1vZGVGcm9tUHJlZmVyZW5jZXM6
bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRT
ZW5kZXJQcm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJv
eHkubW0KaW5kZXggZDFjZmM2YTMzMjFlMDI5YzhiYTgxMTVmNGE2ZDkyMDdmOGU3MTg0Zi4uODlj
ZTRlZjEyNmMxNWQ5MmRjZjc2NjUwY2U2ZWVmNWI4OTIzMTcyZSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCkBAIC0zMjUsNyArMzI1LDcgQEAg
dm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVyLCBX
S0V2ZW50TW9kaWZpZXJzIG1vZGlmaWUKIAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rl
c3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVu
dCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0
byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xh
c3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNl
QnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVy
ID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxl
Y3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVk
RXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2
ZW50OmV2ZW50XTsKICAgICAgICAgW3RhcmdldFZpZXcgbW91c2VEb3duOmV2ZW50XTsKICAgICAg
ICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lk
IEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50
TW9kaWZpZXJzIG1vZGlmaWVycwogICAgICAgICB0YXJnZXRWaWV3ID0gbV90ZXN0Q29udHJvbGxl
ci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAKICAgICBBU1NFUlQodGFyZ2V0Vmll
dyk7Ci0gICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3Io
cHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
U3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNz
XSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4o
c3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKICAgICBbTlNBcHAgX3NldEN1cnJl
bnRFdmVudDpldmVudF07CiAgICAgW3RhcmdldFZpZXcgbW91c2VVcDpldmVudF07CiAgICAgW05T
QXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICAvLyBBbHdh
eXMgdGFyZ2V0IGRyYWdzIGF0IHRoZSBXS1dlYlZpZXcgdG8gYWxsb3cgZm9yIGRyYWctc2Nyb2xs
aW5nIG91dHNpZGUgdGhlIHZpZXcuCiAgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gaXNEcmFnID8g
bV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgOiBbbV90ZXN0
Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDp3aW5kb3dM
b2NhdGlvbl07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNz
ZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6
emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwor
ICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1
ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2Vk
TW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsK
ICAgICAgICAgaWYgKGlzRHJhZykKICAgICAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRHJhZ2dl
ZDpldmVudF07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNl
bmRlclByb3h5V1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVy
UHJveHlXUEUuY3BwCmluZGV4IDQ2OWJmYWYwZThjZjI5MDczMGJhYmZhMDc4MzZkODc3ZWM3MGU4
ZjUuLjY5NmY0NTU3NTg5NmZlODI2NjQ4N2QwOThlOGZlOGVlNjFlNTRkNTYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCkBAIC0y
NzksNyArMjc5LDcgQEAgc3RhdGljIHVpbnQzMl90IHdwZUtleVN5bUZvcktleVJlZihXS1N0cmlu
Z1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1aW50MzIKICAgICAgICAgcmV0dXJuIFdQ
RV9LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1V
VEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRV
VEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBj
aGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376337</attachid>
            <date>2019-08-14 17:48:27 -0700</date>
            <delta_ts>2019-08-14 18:21:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190814174826.patch</filename>
            <type>text/plain</type>
            <size>1787868</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2U0YzNjMTA2MDY0ODRlNjNkZDVmZDExMGYyZjNkYzRmMGZhN2FlLi4yNTdiNDMzNGE2ZGVmMWY2
MWE2NzBhZDI5YjQ2MjVmZjUyY2NlM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBz
dXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY0YWRlYjM2NDhmNzMyYzNiNDM0MDM5Nzg5
MzUyYTliOTBmNjExNWIuLmE4NzYzYTJmODJkMzY1YzYwYTFmYmRlOWEyNmEwNmI1MmMxNTg2ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAg
ICAgICogYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3Vy
cmVudFZlY3Rvci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAg
ICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHA6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3Rm
L0Z1bmN0aW9uLmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3Rm
L0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAg
ICAgICAqIHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6Cisg
ICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToK
KyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAg
ICAqIHd0Zi9TdHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBl
bmQpOgorICAgICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVm
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6
SXRlcmF0b3IpOgorCiAyMDE5LTA4LTE0ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbWFjT1MgPCAxMC4xMwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDc3MmRiMmIwNmRjMTZkMWMzMTlmNWM0ZTQ1MzFmZWI5M2ZhODdlMjcuLjI1MmI4YzBkYjk4
OWFjYjg5NzhhZTJiOWE3MTEzNTdkNmU2YWFhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODgw
IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZl
bG9wZXJXYXJuaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjpmcm9tKToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3dDYWNoZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVD
YWNoZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2
aWdhdG9yQ3JlZGVudGlhbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ3JlZGVu
dGlhbHM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0
UHNzaEJveGVzRnJvbUNlbmMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNyZWF0ZSk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmtleVN5c3RlbSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNsaWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OnNldENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0
ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hSZXNwb25zZTo6ZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9OYXZp
Z2F0b3JHYW1lcGFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdhbWVwYWQ6OmZy
b20pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKToKKyAgICAgICAg
KiBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRvckdlb2xvY2F0aW9uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6aW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6SURCQ29ubmVjdGlvblRvU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZW5zdXJlUXVv
dGFVc2VyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0b3JlOjph
ZGRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0
YWJsaXNoRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
SURCQmFja2luZ1N0b3JlOjpzZXREYXRhYmFzZUluZm8pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUluZGV4OjpwdXRJbmRleEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUluZGV4OjptYXliZU9wZW5DdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6bWF5YmVPcGVuQ3Vyc29yKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVBbmRQb3B1bGF0ZUluaXRpYWxEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNhY2hlZFN0YXRlbWVudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJl
Q3JlYXRlQmFja2luZ1N0b3JlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJUcmFuc2FjdGlvbjo6
YmVnaW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWREZWxldGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdERhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6SURC
UmVzdWx0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjppc29sYXRlZENv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRl
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFiYXNl
U3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpwdXRPckFkZFN1Y2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRzU3VjY2Vzcyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25JbmZvOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJv
Y2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY2Fw
YWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlOjpzZXRMaXZlU2Vla2FibGVSYW5nZSk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlk
ZVVzZXJNZWRpYVRvKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjaGFubmVsRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFuc2Nl
aXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVU
cmFuc2NlaXZlckJhY2tlbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OnRyYW5zY2VpdmVyQmFja2VuZEZyb21TZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
Ojp2aWRlb1JlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRN
RkJhY2tlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVNlbmRlckJh
Y2tlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnByb3ZpZGVOb3RpZmljYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMv
cXVvdGEvRE9NV2luZG93UXVvdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UXVv
dGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6Cisg
ICAgICAgICogTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKToKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpmcm9tKToKKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzOjplbnN1cmVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNB
dWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9EYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnNhbXBsZVJhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29k
aW5nVGFzazo6c3VjY2Vzc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmVycm9yQ2FsbGJhY2spOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9C
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6ZGVjb2RlQXVkaW9EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25O
b2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZEZpbHRlck5vZGU6
OkJpcXVhZEZpbHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVz
cG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheU5vZGU6OkRlbGF5Tm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlOjpzZXRGb3JtYXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFubmVyTm9kZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyaW9kaWNXYXZlOjpj
cmVhdGVCYW5kTGltaXRlZFRhYmxlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OlJl
YWx0aW1lQW5hbHlzZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6c2V0
RmZ0U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nl
c3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5l
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXp5SW5pdGlh
bGl6ZU92ZXJzYW1wbGluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcDoKKyAgICAg
ICAgKGZpZG86OkZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2FnZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwOgorICAgICAgICAoZmlkbzo6Rmlk
b0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YSk6CisgICAgICAgIChmaWRv
OjpGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2NoZWR1bGVU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2Fj
dGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRhYmxlTmFtZXMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpyZWNvcmREZWxldGluZ0RhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b246OmV4ZWN1dGVTcWwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om9wZW5U
cmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkcml2ZXIvTmF2
aWdhdG9yV2ViRHJpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYkRyaXZl
cjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdQVTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6UmVuZGVyRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjpjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVh
dGVFbnRyeVBvaW50U2NhZmZvbGRpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6VHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2Vy
Ojphc3NpZ25Db25jcmV0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNrZXI6
OmFzc2lnblR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNrZXI6OmZvcndhcmRU
eXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJzZVNlbWFudGljKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRVcGRhdGVCdWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZ3JhZGVVUkwp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVm
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmluZmxhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
dnIvTmF2aWdhdG9yV2ViVlIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yV2ViVlI6
OmZyb20pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKToKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRT
dGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNFdmVudFRh
cmdldENhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRh
c2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZmVyQXJyYXlCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlSlNDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpp
bml0Tm9ybWFsV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5p
dFNjcmlwdCk6CisgICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpDQ2xhc3M6Om1ldGhvZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCBjb25zdCk6CisgICAgICAgICogYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNzOjptZXRob2ROYW1lZCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZpZWxkTmFtZWQgY29uc3QpOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNh
bGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJp
bmVkVVJMRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
Q29tYmluZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybik6Cisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg6Cisg
ICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3Jt
YWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3Nz
VGhyZWFkQ29weUltcG9ydFBhcmFtcyk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lQ2F0ZWdvcnkpOgorICAgICAgICAq
IGNzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVm
YXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6
YXBwZW5kU291cmNlcyk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWls
eVJlZ2lzdGVyZWQpOgorICAgICAgICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpjc3NSdWxlcyBjb25zdCk6CisgICAgICAgICog
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZSk6CisgICAgICAgICogY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVs
ZTo6Y3NzUnVsZXMpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKToKKyAgICAgICAgKiBjc3MvRE9NQ1NT
UGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6
ZnJvbSk6CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbSk6Cisg
ICAgICAgICogY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRSdWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50UnVsZVNldHM6OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
ZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29s
bGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KToKKyAgICAgICAgKiBjc3MvRm9u
dEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1
ZmZlcik6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OndyYXBG
b3JEZXByZWNhdGVkQ1NTT00pOgorICAgICAgICAqIGNzcy9SdWxlRmVhdHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFRvUnVsZVNldCk6CisgICAgICAgICog
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAq
IGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6CisgICAg
ICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFy
YXRpb24pOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKToKKyAgICAg
ICAgKiBjc3MvbWFrZXByb3AucGw6CisgICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5
SW5oZXJpdFZhbHVlU2V0dGVyKToKKyAgICAgICAgKGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlW
YWx1ZVNldHRlcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OkNTU1BhcnNlckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lU3VwcG9ydHNSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rvcik6
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lQmFzaWNTaGFwZVBhdGgpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JQYXJzZXI6
OmNvbnN1bWVQc2V1ZG8pOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5z
dXJlQmFja3VwUXVldWUpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjppdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OnNldERyYWdJbWFnZSk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlRGV2aWNlT3JpZW50YXRp
b25Ubyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nl
c3NLZXlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvcm1Db250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpheE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRQYXJzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojph
Y2Nlc3NTVkdFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2Vj
dXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0QXV0b1Npemlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRMb2dNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZWdpc3RlckNTU1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9tVGltZXJIb2xkaW5nVGFuayk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlUGFyc2Vy
WWllbGRUb2tlbik6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgICogZG9t
L0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xhc3NMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmRhdGFzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZVJl
c2l6ZU9ic2VydmVyRGF0YSk6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20v
RXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFBhdGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRQYXRoOjpidWlsZFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRo
OjpFdmVudFBhdGgpOgorICAgICAgICAqIGRvbS9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAg
ICAqIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcik6CisgICAgICAgICogZG9tL0tl
eWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6S2V5Ym9h
cmRFdmVudCk6CisgICAgICAgICogZG9tL01pY3JvdGFza3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1pY3JvdGFza1F1ZXVlOjp2bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL011dGF0
aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVy
Q29tcG91bmRNaWNyb3Rhc2spOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cDo6Y3JlYXRlSWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb246Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9O
b2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9k
ZUxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25P
YnNlcnZlckRhdGEpOgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBk
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFBy
b21pc2VUcmFja2VyU2xvdyk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAg
ICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6
OlNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jv
b3RUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RF
bGVtZW50QnlOYW1lKToKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjphZGRJbWFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
bGFiZWxFbGVtZW50Rm9ySWQpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OkVkaXRvcik6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZW5zdXJl
UmVwbGFjZW1lbnRGcmFnbWVudCk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0
aGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVh
ckFuZENyZWF0ZU5vdGlmaWVyKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVy
dGVyOjpIVE1MQ29udmVydGVyKToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1
dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCk6Cisg
ICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbE9uRmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OkFz
eW5jRmlsZVN0cmVhbSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgICogaGlzdG9y
eS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6Q2FjaGVk
RnJhbWUpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKToKKyAg
ICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6cmVxdWVzdEljb24pOgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRG
b3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnJlbExpc3QgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVu
dDo6bWFwTW91c2VFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVw
ZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6YWRkVG9QYXN0TmFtZXNNYXApOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3gpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpyZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAg
ICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50OjpzaXplcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnJlbExp
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXphdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZUFmdGVyU3R5bGVSZXNvbHV0aW9uKToK
KyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFj
aFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9WYWxp
ZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6
c2V0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVz
c2FnZURPTUFuZFN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3Nh
Z2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQ6OkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRv
Q29uc29sZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVt
ZW50SW50ZXJmYWNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQ
YXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5p
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbGVtZW50U3RhY2s6Omluc2VydEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50U3RhY2s6OnB1c2hDb21tb24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVy
OjpTdGFydFRhZ1NjYW5uZXI6OmNyZWF0ZVByZWxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5E
T0NUWVBFKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OmRlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICog
aHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9J
bmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRU
VGV4dFRyYWNrOjpwYXJzZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZp
cmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0RPTUVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01F
ZGl0b3I6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlbW92
ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0QXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVk
aXRvcjo6aW5zZXJ0QWRqYWNlbnRIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
cmVwbGFjZVdob2xlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE5vZGVWYWx1ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuc3VyZURPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIaXN0b3J5OjptYXJr
VW5kb2FibGVTdGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAoUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRl
TGF6eUFnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxl
ckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhU
b0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGln
aHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50Ojppbm5lckhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmhpZ2hsaWdodEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpzZXRJbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0
b3JNZW1vcnlBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViSGVhcEFnZW50OjpX
ZWJIZWFwQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGlt
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50
aW1lQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6Y3JlYXRl
Rm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAg
ICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaDoKKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29u
dGVudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMg
Y29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaDoK
KyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVUZXh0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6c3BsaXQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjplbnN1cmVSYXJlRGF0YSk6Cisg
ICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZVRhYmxlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50
cyk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUHJlZmxpZ2h0UmVz
cG9uc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZp
Z3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRyZW4pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9OYXZp
Z2F0aW9uRGlzYWJsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGly
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9j
YXRpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVGb3JtU3VibWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1
bGVyOjpzY2hlZHVsZVJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVBhZ2VCbG9jayk6CisgICAgICAgICogbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3Mp
OgorICAgICAgICAqIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQpOgorICAgICAg
ICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9t
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OmFkZENsaWVudFRvU2V0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fkcyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6bG9hZFJlcXVlc3RlZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZTo6ZG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZW5zdXJlU2Vzc2lvblJlc291
cmNlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmxydUxpc3RGb3IpOgorICAgICAgICAq
IGxvYWRlci9pb3MvUHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvUHJldmll
d0xvYWRlci5tbToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0aFJlc291cmNl
TG9hZGVyOnJlc291cmNlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6UHJldmll
d0xvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4dE1lbnUpOgor
ICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VXaGVlbFJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
d0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3TGF5b3V0Q29u
dGV4dDo6cHVzaExheW91dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91
dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZCk6CisgICAgICAg
ICogcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJh
c2U6OnNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmluaXRHcm91cCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUp
OgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAgKiBwYWdlL1BhZ2VH
cm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNl
cyk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZTo6bWFyayk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6Y2xlYXJN
YXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6bWVhc3VyZSk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6Y2xlYXJNZWFzdXJlcyk6CisgICAgICAgICogcGFnZS9Q
cmV3YXJtSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyk6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzdGFydFRpbWVyKToKKyAgICAgICAg
KiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvUmVzaXplT2Jz
ZXJ2ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6Cisg
ICAgICAgICogcGFnZS9TZXR0aW5nc0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3NCYXNlOjpTZXR0aW5nc0Jhc2UpOgorICAgICAgICAqIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5o
OgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBwYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
aGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24v
Q1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NBbmltYXRp
b25Db250cm9sbGVyOjpDU1NBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVk
Q29sb3I6OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGxMYXllcnNQcm9wZXJ0eVdyYXBwZXI6OkZpbGxMYXllcnNQcm9wZXJ0eVdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpD
U1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXApOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnVwZGF0ZVNvdXJjZVNlbGYpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZSk6CisgICAgICAg
ICogcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9pb3Mv
RE9NVGltZXJIb2xkaW5nVGFuay5oOgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3Zlcmxh
eTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlTm9kZTo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6
OmNvbW1pdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9GaWxlTW9uaXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRNaXhlZFR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5k
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZv
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xv
YmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJl
ck9mQ2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OmNoYW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q2hhbm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q2hhbm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6
bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6
bXV0YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpk
YXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVy
byk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50
RmxhZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jl
c2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBs
ZXI6OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
RGVub3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1pl
cm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NS
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3RhbmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5j
ZUVmZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VF
ZmZlY3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXN0YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6
RHluYW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVz
c29yS2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2Fp
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBh
bm5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRG
cmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0hSVEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJP
ZkF6aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2Ft
cGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6
bG9hZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpIUlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNp
emUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxl
cjo6TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0
aUNoYW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJldmVyYjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmltcHVsc2VSZXNwb25z
ZUxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJBY2N1bXVsYXRp
b25CdWZmZXI6OnJlYWRJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJBY2N1bXVsYXRpb25CdWZmZXI6OnJlYWRUaW1lRnJhbWUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJD
b252b2x2ZXI6OmltcHVsc2VSZXNwb25zZUxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OmlucHV0QnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6dXNlQmFja2dyb3VuZFRocmVhZHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252
b2x2ZXJTdGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3Rh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjppbnB1dFJlYWRJ
bmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5w
dXRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYklucHV0QnVmZmVyOjp3cml0ZUlu
ZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1w
bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpa
ZXJvUG9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6cmVzZXQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnNldFplcm8pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnNldFBvbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6WmVyb1BvbGU6Onplcm8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6WmVyb1BvbGU6OnBvbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVk
aW9CdWZmZXJMaXN0OjpsaXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkF1ZGlvQnVmZmVyTGlzdDo6b3BlcmF0b3IgQXVkaW9CdWZmZXJMaXN0JiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6OmtpbmQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNv
dXJjZTo6c2V0SW5wdXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRh
U291cmNlOjpzZXRPdXRwdXRGb3JtYXQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRp
b1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcik6
CisgICAgICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRp
ZENvbm5lY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyk6CisgICAgICAgICogcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxB
bmltYXRvckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6
OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9LZXllZERlY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OnN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlY29k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRMYXlvdXQ6OlRleHRMYXlvdXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmVuc3VyZURlcml2ZWRGb250
RGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6Ym91bmRzRm9yR2x5cGggY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlT3JBZGRDYWNoZWRG
b250cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0
UnVuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRm9udHM6OkdseXBoUGFnZUNhY2hl
RW50cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR2x5cGhNZXRyaWNzTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE1ldHJpY3NN
YXA8VD46OmxvY2F0ZVBhZ2VTbG93Q2FzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0
QW5pbWF0aW9uQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xl
Z2FjeUNETVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2Vla2FibGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpz
ZXRTaGFwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZWdpb246OmNvcHlTaGFwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWdpb246OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50YXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdM
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1QaWNrZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBs
YXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0
ZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdGlvbk9w
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlUm90YXRpb25TZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdp
c3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1
ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdG9uT3B0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
Q29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRy
b2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xs
ZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91bmRlZFJlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xh
eWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBjcmVhdGVUaWxlQ29udHJv
bGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6UGxhdGZvcm1DQUxheWVy
V2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5n
TGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OmNyZWF0ZVRp
bGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjptX3ByaXZh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZUNhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6
OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dDo6Zm9udFJhbmdlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1
cmVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW06CisgICAgICAgIChUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJv
dGF0aW9uU2Vzc2lvblZULmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUOjpSb3RhdGlvblByb3BlcnRpZXM6OmlzSWRlbnRpdHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6dHJhbnNmb3JtIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJvdGF0
aW9uUHJvcGVydGllcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUOjpzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
Um90YXRpb25TZXNzaW9uVlQ6OnJvdGF0ZWRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVD
YWNoZUNWOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4
dHVyZUNvcGllckNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlcGxheWVyOjpyZXBsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5zdXJlQXVk
aW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaE5l
eHRIb2xlUHVuY2hCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVu
Y2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT0JveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09P
cmlnaW5hbEZvcm1hdEJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
U09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPU3RyaW5nQm94Ojpj
b250ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZU
VEN1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpib3hUeXBlTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnByZXNlbnRhdGlvblRpbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpkdXJhdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnNvdXJj
ZUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6aWQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpvcmlnaW5h
bFN0YXJ0VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRD
dWU6OnNldHRpbmdzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZU
VEN1ZTo6Y3VlVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6OlNjZW5lSW50ZWdyYXRpb246OmNyZWF0ZVVwZGF0ZVNjb3BlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OmNyZWF0ZUNvbW1hbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJv
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGlu
Zzo6Rm9yUGFpbnRpbmcpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclJlY29yZGluZzo6Rm9yUmVjb3JkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3Bw
OgorICAgICAgICAoTmljb3NpYTo6QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1h
cHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllclRleHR1cmVN
YXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0MzRExheWVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkdDM0RMYXllcjo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUdDM0RMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRl
eHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Okdy
YXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpUZXh0dXJlTWFwcGVyR0wpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5n
VGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybVN0YXRlOjphcHBseVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpzZXRTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
dWxsU2NyZWVuQ29udHJvbGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVv
UHJlc2VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FJbWFnZVF1ZXVl
OjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpZGdl
dDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTY3JvbGxiYXI6
OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29t
Ym9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1h
Z2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6OmRlY29kZSk6Cisg
ICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OkxlZ2Fj
eVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNj
YWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVy
dGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fY2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvRGF0YTo6R1N0cmVh
bWVyQXVkaW9EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlv
RGF0YTo6Z2V0U2FtcGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1
ZGlvRGF0YTo6Z2V0QXVkaW9JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckF1ZGlvRGF0YTo6a2luZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6bV9j
YXB0dXJlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJl
YW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeTo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJl
YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNh
dGVHZW5lcmF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRl
RW5jb2RlckZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpy
ZWNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVik6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVm
ZmVyZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpjcmVhdGVEZWNvZGVUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsQ2FjaGVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OmRpZFNlbmRCb2R5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90
ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9y
ZXN0YXJ0XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFu
YWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6OkN1cmxD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OndpbGxTZXR1cFNzbEN0eCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2No
ZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdFNjaGVkdWxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU1NMVmVyaWZpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxl
Z2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmNhbGxPbldvcmtlclRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNhbGxGdW5jdGlvbk9u
TWFpblRocmVhZDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2
ZVF1ZXVlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpy
ZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEZXJpdmVkQ2xhc3M+Ojph
cHBlbmRSdW5JbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
YWxsYmFja01vbnRoTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrQU1Q
TUxhYmVscyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0lDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVy
Q29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dENvZGVjVVRGOC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpyZWdpc3Rl
ckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJDb2Rl
Y3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuZXdUZXh0Q29kZWNXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtRGlzcGxheU9wZW5WUi5oOgorICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtTWFuYWdlck9wZW5WUi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdl
ck9wZW5WUjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSOjpnZXRWUkRpc3BsYXlzKToKKyAgICAgICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Ap
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRlUHJlcGFyZWRTdGF0ZW1lbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V0NEYXRhT2JqZWN0OjpTZXREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSdW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlvdXQ6
OmNyZWF0ZVJvb3RJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlv
dXQ6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5l
TGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9GbG9h
dGluZ09iamVjdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6Y29weVRvTmV3Q29udGFpbmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjbG9uZUZvck5ld1Bh
cmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQ
bGFjZWRGbG9hdHNUcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
aWRCYXNlbGluZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OnNldHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6YWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllck92ZXJsYXBNYXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omluc2Vy
dEludG9UcmFja2VkUmVuZGVyZXJNYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uZWRE
ZXNjZW5kYW50c01hcDo6YWRkRGVzY2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6YmVnaW5VcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjplbnN1cmVCbG9ja1JhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
OjpsYXlvdXRMaW5lR3JpZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6OmVuc3VyZUxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
Om1hdGVyaWFsaXplUmFyZUJsb2NrRmxvd0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y3JlYXRlSW5saW5lQm94KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFr
ZUNvdW50ZXJOb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRDb250YWluZXI6OnNldFJl
bmRlckJveEZyYWdtZW50SW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
ZWRGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb250
YWluaW5nRnJhZ21lbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNv
bXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lk
ZUdyaWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpj
cmVhdGVJbmxpbmVGbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlQW5jZXN0b3JDbGlwcGluZ1N0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJl
Z2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6Y3JlYXRlSW5saW5lQm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvdzo6UmVuZGVyTXVsdGlDb2x1bW5GbG93KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6c3R5bGVE
aWRDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OmNyZWF0ZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZp
ZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OmNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6aW1hZ2VR
dWFsaXR5Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZXBhaW50
UmVnaW9uQWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcik6CisgICAgICAgICog
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGlu
ZUJveDo6cGxhY2VFbGxpcHNpcyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFwcGVuZEZsb2F0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbGxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0
Qm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6YXBw
bHkpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dDo6cnVuUmVzb2x2ZXIgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9T
aXppbmc6OmFkZFRleHROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtlcjo6c2tpcExlYWRpbmdXaGl0ZXNw
YWNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRl
cnZhbHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5zZXRTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVDaXJjbGVTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFbGxpcHNlU2hhcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUG9seWdvblNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXBlOjpjcmVhdGVTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFz
dGVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZUJveFNoYXBlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNT
aGFwZVBhdGg6OmJsZW5kIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGxMYXllcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsb25lUHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRDYWNoZWRQc2V1ZG9TdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphY2Nlc3NDb3VudGVyRGlyZWN0aXZlcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGFkb3dT
VkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OlNoYWRvd0RhdGEp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVy
aXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRl
clNWR0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRl
cm4pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJj
ZXM6OnNldEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtl
clN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFya2VyTWlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFza2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlczo6c2V0RmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNl
dFN0cm9rZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJl
bmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVN
ZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRl
cjo6UmVuZGVyVHJlZVVwZGF0ZXIpOgorICAgICAgICAqIHJlcGxheS9Vc2VySW5wdXRCcmlkZ2Uu
aDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IpOgorICAgICAgICAqIHN0eWxlL1N0
eWxlUmVsYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21taXRSZWxhdGlv
bnNUb1JlbmRlclN0eWxlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zIGNvbnN0KToKKyAgICAgICAg
KiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
VHJlZVJlc29sdmVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6YWRkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpTVkdFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmVuc3VyZVNWR1JhcmVEYXRhKToKKyAgICAg
ICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dy
YXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aEJ5dGVTdHJlYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtOjpj
b3B5IGNvbnN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjpzY2hlZHVsZSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3Jh
dGVkUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0
ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVjb3JhdGVkRW51bWVyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVy
dHkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0
b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9y
SW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5p
bWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJGcm9udGVu
ZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVj
aFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1bW15SW5z
cGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQcmludGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAgICAqIHRl
c3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lNb2NrQ0RN
OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaDoKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2FtZXBhZFBy
b3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVucXVldWVF
dmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJH
bG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Oldv
cmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpXb3Jr
ZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5k
VGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9y
TW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3Qp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVh
ZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3Jl
YXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdpc3RyYXRp
b25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICogd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6Om1l
c3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0
R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRT
Y3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmV2YWx1
YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgorICAgICAg
ICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2Fs
bGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBl
bmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNr
czo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxs
YmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xNCAgS2VpdGggUm9sbGlu
ICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIG1hY09T
IDwgMTAuMTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDYwZTdmYjU2Yzk3MDVlMTlmYzg5YmM4YTZi
ZDRmNDIzZWYxNjI1YmUuLmM3YWFhOGQxNDYzYTFlYTI5M2FiMjM0NTM3ZjJmMzMzMjNhNjZmMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA4LTE0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvY3J5cHRvL29wZW5zc2wvQ3J5
cHRvRGlnZXN0T3BlblNTTC5jcHA6CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdENvbnRleHRJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcDoKKyAg
ICAgICAgKFBBTDo6Q2xvY2s6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL3N5c3RlbS9tYWMvQ2xv
Y2tDTS5tbToKKyAgICAgICAgKENsb2NrOjpjcmVhdGUpOgorCiAyMDE5LTA4LTE0ICBLZWl0aCBS
b2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Ig
bWFjT1MgPCAxMC4xMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCAzNThmMmJmMDA1YWU2NDRkODEyMzI4ZDVk
ZWRlNDE5YzhiYTAxY2ZiLi4zYjE5MjhlOWEzMDkzMDUwYTUxNzBiNzM3MDkyNmY5NmU4MTUwYmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8
VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAg
ICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6Cisg
ICAgICAgICogZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpT
ZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3Nlcik6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25I
b3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZCk6CisKIDIwMTktMDYtMDMgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0NTU2
Nyk6IFtHVEtdW1dQRV0gWzIuMjUuMV0gV2ViS2l0V2ViRHJpdmVyIGdldHMgaW5zdGFsbGVkIGFz
IFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMmQ4Njk2MDBlMDAxMDIwMjEwOThjOTZhNmZmYjczZGI4
ZDFjZmY1Li4yNDgyNGNkNTVjZTAyZWI1NGI5MzE4ZjYzZDI1OTY3MzM4YTI4YmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYzOCBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpt
b25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YXA6OmFkZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25s
b2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVzZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjph
ZGRTdXBwbGVtZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnROZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dl
YlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJh
c2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRhdGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2Fj
aGU6OkNhY2hlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6bWFrZUVu
dHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6bWFrZVJlZGlyZWN0
RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjp1cGRhdGUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6
OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZDo6cmVnaXN0
ZXJTdWJyZXNvdXJjZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c2F0aXNmeVBl
bmRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzeW5j
aHJvbml6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVhZFJl
Y29yZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmV0cmlldmVGcm9tTWVtb3J5
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZXRyaWV2ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3Jh
Z2VSZWNvcmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRjaENhY2hlOjpzdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlUmVkaXJlY3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06Cisg
ICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRp
ZEJlY29tZURvd25sb2FkVGFzazpdKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3Jl
YXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29j
a2V0VGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJv
Y2Vzc0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1D
cmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
aW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29y
ZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza1NvdXA6OmRvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpw
bGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOgorICAgICAg
ICAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENNb25pdG9yOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Byb3ZpZGVyOjpOZXR3b3JrUlRDUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSVENQcm92aWRlcjo6d3JhcE5ld1RDUENvbm5lY3Rpb24pOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hX
b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
ZW5hYmxlSW5jb21pbmdNZXNzYWdlc1Rocm90dGxpbmcpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
RGVjb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkRlY29kZXI6OnVud3JhcEZvclRlc3RpbmcpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChJUEM6Omhh
bmRsZU1lc3NhZ2VBc3luYyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZzo6Q29ubmVjdGlvblRlcm1p
bmF0aW9uV2F0Y2hkb2cpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAg
ICAgKElQQzo6Y3JlYXRlTWVzc2FnZURlY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NN
ZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHA6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OnJlYWRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL01v
ZHVsZS5oOgorICAgICAgICAqIFBsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0
aW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0
ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25uZWN0
aW9uOjpjcmVhdGVQbHVnaW5JbnRlcm5hbCk6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkwu
aDoKKyAgICAgICAgKEFQSTo6VVJMOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpVUkw6OnBhcnNl
VVJMSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvUmVtb3Rl
T2JqZWN0SW52b2NhdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2Nh
dGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfaW5pdFdp
dGhXZWJQYWdlOl0pOgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfaW5pdFdp
dGhXZWJQYWdlUHJveHk6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9z
ZW5kSW52b2NhdGlvbjppbnRlcmZhY2U6XSk6CisgICAgICAgICogU2hhcmVkL0FQSS9nbGliL1dl
YktpdENvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgICh3ZWJraXRDb250ZXh0TWVudUl0ZW1D
cmVhdGUpOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyk6CisgICAgICAg
ICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbik6CisgICAgICAgICh3
ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uKToKKyAgICAgICAg
KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9sYWJl
bCk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudSk6
CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcik6CisgICAg
ICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAg
ICAgICogU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3Jt
U2hvd1BheW1lbnRVSSk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0Ojp0ZXhtYXBMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZW5zdXJlUm9vdExheWVyKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9y
OjpUaHJlYWRlZENvbXBvc2l0b3IpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0
TWVzc2FnZVJlY2VpdmVyLmg6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmpl
Y3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJlbW90ZU9iamVjdE1hcDo6cmVnaXN0ZXJO
UE9iamVjdCk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5Nb2R1bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5
TG9hZCk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2NhaXJvL1No
YXJlYWJsZUJpdG1hcENhaXJvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVC
aXRtYXBDRy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVj
dDJELmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJRmluZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRmluZE1h
dGNoZXNDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OkhUVFBDb29r
aWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElI
aXN0b3J5Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUG9saWN5Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tD
b250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV0tDb250ZXh0U2V0SGlz
dG9yeUNsaWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV0tOb3RpZmljYXRpb25N
YW5hZ2VyU2V0UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQ
YWdlRmluZENsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KToK
KyAgICAgICAgKFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdl
U3RhdGVDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0
ZU1hYy5tbToKKyAgICAgICAgKC1bV0tPYnNlcnZhYmxlUGFnZVN0YXRlIGluaXRXaXRoUGFnZTpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHA6CisgICAgICAgIChX
S1ZpZXdTZXRWaWV3Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyIF9pbml0V2l0aFBhZ2VSZWY6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbToKKyAgICAgICAgKC1bV0tIVFRQQ29va2llU3RvcmUg
YWRkT2JzZXJ2ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZXREb3dubG9hZERlbGVnYXRlOl0p
OgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbToK
KyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6bmFtZTpdKToKKyAgICAgICAgKC1bV0tVc2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOm5hbWU6dXNlckNvbnRlbnRXb3JsZDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRBbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRJbnB1dERlbGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXV0b21hdGlvblNlc3Npb24ubW06CisgICAgICAgICgtW19XS0F1dG9tYXRpb25TZXNzaW9uIHNl
dERlbGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyIGluaXRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVhZHlTUUxpdGVTdGF0ZW1lbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAod2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFj
aENvbnRleHRNZW51Q2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaERvd25s
b2FkQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6
CisgICAgICAgICh3ZWJraXRGaW5kQ29udHJvbGxlckNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hG
b3JtQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2Vv
bG9jYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xp
ZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEljb25Mb2FkaW5nQ2xpZW50VG9WaWV3KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOgor
ICAgICAgICAoYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6
CisgICAgICAgIChhdHRhY2hVSUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRfdXNl
cl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcik6CisgICAg
ICAgICh3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2Vf
aGFuZGxlcl9pbl93b3JsZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJWaWV3Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURy
YXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2pp
Q2hvb3Nlci5jcHA6CisgICAgICAgICh3ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2ppU2VjdGlv
bnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3Rv
Y29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkluc3BlY3RvckNyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
RHJhZ0FuZERyb3BIYW5kbGVyKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVu
Y2hXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW06Cisg
ICAgICAgICgtW1dLVmlldyBtYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudF0pOgorICAgICAg
ICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
d3BlL1dQRVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6OlZpZXc6OlZpZXcpOgorICAgICAgICAo
V0tXUEU6OlZpZXc6OnNldENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvcXQv
V1BFUXRWaWV3LmNwcDoKKyAgICAgICAgKFdQRVF0Vmlldzo6bm90aWZ5TG9hZENoYW5nZWRDYWxs
YmFjayk6CisgICAgICAgIChXUEVRdFZpZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFjayk6Cisg
ICAgICAgIChXUEVRdFZpZXc6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwOgorICAgICAgICAoV1BFUXRWaWV3QmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okljb25Mb2Fk
aW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6Y3Jl
YXRlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpjcmVh
dGVVSUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWludHMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZXRUZXh0SW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVu
c3VyZUdlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBvcmF0
ZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZTo6Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZv
ck9yaWdpbkNhbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5lY3RlZEdhbWVwYWRzKToK
KyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBhZENvbm5l
Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VT
YW1wbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25s
b2FkUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBs
b2FkQXNzZXJ0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGx1Z2luUmVxdWly
ZXNHdGsyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RUb1Byb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmluaXRpYWxpemVEZWJ1Z0luZGljYXRv
cik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2Rl
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxh
aW5MYXllcik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZVJlbW90ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUyk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlTWFjOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZVJlbW90ZU1hYyk6CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdD
b250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0hpZFNlcnZpY2UubW06CisgICAgICAgIChXZWJLaXQ6OkhpZFNlcnZpY2U6OmRldmlj
ZUFkZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjptX3Jlc2V0UmVjZW50Q3Jh
c2hDb3VudFRpbWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5
YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NIYXNVcGxvYWRz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NJc1BsYXlp
bmdBdWRpYmxlTWVkaWEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpjaGVja1JlcXVpcmVtZW50cyk6CisgICAg
ICAgICogVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdEYXRhU2VsZWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9z
aXRvcjo6aW5pdGlhbGl6ZUVHTCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjpl
bnN1cmVFZGl0YWJsZUltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0lucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3Rh
dGVUcmFja2luZ1ZpZXcubW06CisgICAgICAgICgtW1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5n
VmlldyBkaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9u
V2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyRm9yV2ViVmlld10pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9lbGVtZW50RGlkRm9jdXM6dXNlcklzSW50ZXJhY3Rpbmc6Ymx1clByZXZpb3Vz
Tm9kZTphY3Rpdml0eVN0YXRlQ2hhbmdlczp1c2VyT2JqZWN0Ol0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmVsZW1lbnREaWRGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5
bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyIGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tU
ZXh0RmluZGVyQ2xpZW50IGluaXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmluZFVJOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1T
dGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2ViVmll
dyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsR2FtZXBhZHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRDb25uZWN0ZWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGUuY3BwOgorICAgICAgICAoV0tCdW5kbGVTZXRDbGllbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAg
ICAgICAgKFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdLQnVu
ZGxlUGFnZVNldEVkaXRvckNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xp
ZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAg
ICAoV0tCdW5kbGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxl
UGFnZVNldFVJQ2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlT3Zlcmxh
eUNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMv
V0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tOgorICAgICAgICAoV0tCdW5kbGVQYWdlQmFubmVyQ3Jl
YXRlQmFubmVyV2l0aENBTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0
T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpE
T01PYmplY3RDYWNoZTo6cHV0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHA6CisgICAgICAgICh3
ZWJraXRXZWJFZGl0b3JDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkV4
dGVuc2lvbkNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJQYWdlLmNwcDoKKyAgICAgICAgKHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUp
OgorICAgICAgICAod2Via2l0V2ViUGFnZUNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtX
S0RPTVRleHRJdGVyYXRvciBpbml0V2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciBfc2V0Rm9ybURlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldENsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGVuZGluZ01lc3NhZ2U6OlBlbmRpbmdNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldl
YlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldCk6Cisg
ICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVVkcFNvY2tldCk6
CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUNsaWVudFRj
cFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0
ZU5ld0Nvbm5lY3Rpb25Tb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRG
YWN0b3J5OjpjcmVhdGVBc3luY1Jlc29sdmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rv
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmNy
ZWF0ZVdlYkV2ZW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3Rl
Ym9hcmRPdmVycmlkZXM6OmFkZE92ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYXdpbmdBcmVhOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DQUxheWVyUmVtb3RlOjplbnN1cmVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEZpbHRlcnMpOgorICAgICAgICAoV2Vi
S2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFNoYXBlUm91bmRlZFJlY3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
Y3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV90ZXh0QXV0b1NpemluZ0FkanVzdG1lbnRUaW1lcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxl
UmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0
ZWRCdW5kbGVVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YmVnaW5QcmludGluZyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpwcmludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6RmluZENv
bnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xh
dGlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25TZXNz
aW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3Jr
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OlNvdXJjZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKToKKwogMjAxOS0wOC0xNCAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBidWlsZCB3
aGVuIEVOQUJMRShBUFBMRV9QQVkpIGlzIGZhbHNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA0
YzUxZTk2NWY2ODI2YmVjM2VlOTJlNzUyOTU4N2UxYjFiMmQwNDNhLi40ZjlmZmJlMGVmOTg3MjFi
MDI3MzZlMDZjY2Q3NTQ2Nzc0YzkxOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0
LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcik6CisgICAgICAgICogU3RvcmFn
ZS9TdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRp
c3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6Cisg
ICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJhY2tlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcDoKKyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6CisgICAgICAgIChOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24pOgorCiAyMDE5LTA4LTEyICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSURCLXNwZWNpZmlj
IHF1b3RhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCmluZGV4IGM2M2VmYWJhNWQ4ODY4M2JlZmJm
MTY5NThmZjFmZTAwMDRlYTljNmIuLjE5Njk0YmQxMTExNmE2MGZjMTNiMDMxYzQ4NzZkZWFlYzJj
OGQ3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTkt
MDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RG
XSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6Y3JlYXRlRnJvbnRlbmRTZXR0aW5ncyk6CisKIDIwMTktMDgtMTAgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJ
T04ocjI0ODQ1NCk6IFdLMSBpbnNwZWN0b3IgZnJvbnRlbmQgY2xpZW50IGRvZXNuJ3QgcXVldWUg
bWVzc2FnZXMgdG8gdGhlIGZyb250ZW5kIGJlZm9yZSBpdCdzIGxvYWRlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvQ2hhbmdlTG9nCmluZGV4IDg1YmZlN2ZlN2FhNGMzZjdmY2JiMmQ3MjhkYjVkZWE3YWRhYmE4
ZmYuLmJiNTQwYzFlNWFlMmE4N2M2MDcxNGZiOWJjNTIyNmM5ZWU4MDQ0YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVl
PFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnQubW06CisgICAgICAgICgtW1dlYkZpeGVkUG9zaXRpb25Db250ZW50IHNldFZpZXdwb3J0
Q29uc3RyYWluZWRMYXllcnM6c3RpY2t5Q29udGFpbmVyTWFwOl0pOgorCiAyMDE5LTA3LTI5ICBa
YWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnRDaGFuZ2VP
YnNlcnZlcl0gZGlkRmluaXNoQ29udGVudENoYW5nZU9ic2VydmluZyBzaG91bGQgaW5jbHVkZSB0
aGUgdHlwZSBvZiBjb250ZW50IGNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCAwY2M0YWNiYzExMTkwZDA3ZDA2Yjc3ZjE4OWE0NzU1OWUyMDVkNjAyLi43M2QxM2RjMWEzYjA4
Mjg3NGUxYzJhOTA3YzRlOTEwMDhiYTIxNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjYgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2ViSGlz
dG9yeVByaXZhdGUgaW5pdF0pOgorICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06
CisgICAgICAgICgtW1dlYkhpc3RvcnlJdGVtIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0
aW9uOl0pOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5
Lm1tOgorICAgICAgICAoV0tQQ0dldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5KToKKyAgICAgICAg
KFdLUENCb29sZWFuUmVwbHkpOgorICAgICAgICAoV0tQQ0Jvb2xlYW5BbmREYXRhUmVwbHkpOgor
ICAgICAgICAoV0tQQ0luc3RhbnRpYXRlUGx1Z2luUmVwbHkpOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6
Om1ldGhvZE5hbWVkKToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6ZmllbGROYW1l
ZCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1Z2lu
XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbToK
KyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyOjpjcmVhdGUpOgorICAgICAg
ICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oOgorICAgICAg
ICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRz
Y2FwZVBsdWdpblZpZXcgc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZhbDpyZXBlYXQ6dGltZXJGdW5j
Ol0pOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOgorICAg
ICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAg
ICAgIChhZGRSZWRpcmVjdFVSTCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2
ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9hdHRhY2hTY3Jp
cHREZWJ1Z2dlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlci5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5t
bToKKyAgICAgICAgKFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW06CisgICAgICAgICgtW1dlYlRleHRJdGVy
YXRvciBpbml0V2l0aFJhbmdlOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfaW5qZWN0T3V0bG9va1F1aXJrc1NjcmlwdF0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0p
OgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU2NyaXB0VG9Hcm91cDp3b3JsZDpzb3VyY2U6
dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0aW9uVGltZTppbmplY3RlZEZyYW1lczpdKToK
KyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOndvcmxkOnNvdXJj
ZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKC1b
V2ViVmlldyBfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViVmll
dyBfc2V0VGV4dEluZGljYXRvcjp3aXRoTGlmZXRpbWU6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJW
aWV3TGF5ZXJGbHVzaFNjaGVkdWxlcik6CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRd
KToKKwogMjAxOS0wOC0xNCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIG1hY09TIDwgMTAuMTMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCBjYTE0NTk5NTZmMmVjMjZlMDVmYjBhOTQ5MzRmMzUwYTFmYjEzZGNjLi44
YWYzMjFiNjYzZmQwNTc1YjJkOWE3OGZmYzJlYTgyNmExNzdmZDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwg
d2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcik6CisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFBsdWdpbnMvUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oOgorICAgICAgICAqIFBsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblN0cmVhbTo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZp
ZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6d25kUHJvYyk6CisgICAg
ICAgICogV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6Oldl
YkNocm9tZUNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpXZWJGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6
c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2Fs
RnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNw
cDoKKyAgICAgICAgKFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFn
KToKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRl
bTo6aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6Q0FE
M0RSZW5kZXJlcjo6Y3JlYXRlRDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0KToKKyAgICAgICAgKiBX
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaDoKKyAgICAgICAgKiBXZWJO
b2RlSGlnaGxpZ2h0Lmg6CisgICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAg
ICAgICAgKFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKToKKyAg
ICAgICAgKiBXZWJOb3RpZmljYXRpb25DZW50ZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViVmlldzo6
cmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlwZSk6CisgICAgICAgIChXZWJWaWV3OjplbnRlclZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2Vy
U2NyaXB0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXApOgorICAgICAgICAoV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyk6CisKIDIw
MTktMDgtMTQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplIHNob3VsZCB0YWtlIGEgU2Vzc2lvbklEIGFz
IHBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nIGIvU291cmNl
L2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDNmMGZiMmUxY2VlYWVmMDY1OWMzNGM4MjcxYmVlYzEw
ODIzNzU2ZWQuLjZlMDFkYWJjZjgwMDcwOTkzNzAxYjg2MWQzZGQzODhlMDZkMTY4NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBl
bnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwLmg6CisgICAgICAgICogYm1hbGxv
Yy9Jc29IZWFwSW5saW5lcy5oOgorCiAyMDE5LTA3LTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIEFkZCBJc29IZWFwIHRlc3QgdG8gZW5z
dXJlIHRoYXQgSXNvSGVhcCBwYWdlcyBhcmUgbm90IGFsbG9jYXRpbmcgdG9vIGxhcmdlIFZBCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDA3ZDcw
OWJhMTJjODJjODU0ODJkNzNjNzIzNzdmNTE5ZTdmYzJhNWMuLmQwZTYyNTI4MmE4NGY0ZjM1ZWVk
ZWQxOTVlZGI4ZGM4OTdiMWE1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBKU0NhbGxiYWNrT2JqZWN0
RGF0YSB7CiAgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVydHkoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgewog
ICAgICAgICBpZiAoIW1fcHJpdmF0ZVByb3BlcnRpZXMpCi0gICAgICAgICAgICBtX3ByaXZhdGVQ
cm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ByaXZhdGVQcm9wZXJ0eU1hcD4oKTsKKyAg
ICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEpTUHJpdmF0ZVByb3Bl
cnR5TWFwPigpOwogICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVy
dHkodm0sIG93bmVyLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CmluZGV4IGFlM2E2ZmUzYWNmOWM2YTgwMzk0ZTFkNzM0ZmEzMTdkOTA4ZmFlMmMuLjljYTNiNGJm
NDA4NTA3NTBiOGJjNDE5NDlmNzUwNDJiMzU3MjMxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC01OCw3ICs1
OCw3IEBAIGlubGluZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6YXNDYWxsYmFja09iamVjdChFbmNvCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgog
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgdm9pZCogZGF0YSkK
ICAgICA6IFBhcmVudChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2Jq
ZWN0RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0Ns
YXNzKSkKKyAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09i
amVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KFZNJiB2bSwgSlNDbGFzc1JlZiBqc0NsYXNz
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IFBhcmVudCh2bSwgc3RydWN0dXJlKQotICAg
ICwgbV9jYWxsYmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0
RGF0YT4obnVsbHB0ciwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtl
VW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5kZXggZjFjOWQ1NzAyYThh
YTY5MDQ0ZGZiMjk1YjQ3MWZjZmNiYzg5MGI2Yi4uN2VlYzJhOTBhNDRmODYwYmFhMjI3NmI5NmQ0
NWYyYmQ2ODYxNzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Ns
YXNzUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3Bw
CkBAIC01OSwyMSArNTksMjEgQEAgT3BhcXVlSlNDbGFzczo6T3BhcXVlSlNDbGFzcyhjb25zdCBK
U0NsYXNzRGVmaW5pdGlvbiogZGVmaW5pdGlvbiwgT3BhcXVlSlNDbGFzcyoKICAgICBpbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAKICAgICBpZiAoY29uc3QgSlNTdGF0aWNWYWx1ZSogc3RhdGljVmFs
dWUgPSBkZWZpbml0aW9uLT5zdGF0aWNWYWx1ZXMpIHsKLSAgICAgICAgbV9zdGF0aWNWYWx1ZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAg
ICAgICAgbV9zdGF0aWNWYWx1ZXMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1
ZXNUYWJsZT4oKTsKICAgICAgICAgd2hpbGUgKHN0YXRpY1ZhbHVlLT5uYW1lKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgdmFsdWVOYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdGF0aWNWYWx1ZS0+bmFt
ZSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgICAg
ICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8
U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+
c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAg
ICAgICAgICAgICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCksIG1ha2VVbmlx
dWU8U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3BlcnR5LCBzdGF0aWNWYWx1
ZS0+c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKICAg
ICAgICAgICAgICsrc3RhdGljVmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoY29u
c3QgSlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rpb24gPSBkZWZpbml0aW9uLT5zdGF0aWNG
dW5jdGlvbnMpIHsKLSAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAgICAgbV9zdGF0aWNG
dW5jdGlvbnMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4o
KTsKICAgICAgICAgd2hpbGUgKHN0YXRpY0Z1bmN0aW9uLT5uYW1lKSB7CiAgICAgICAgICAgICBT
dHJpbmcgZnVuY3Rpb25OYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdGF0aWNGdW5jdGlvbi0+bmFt
ZSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAg
ICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0
aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOworICAgICAgICAgICAgICAgIG1fc3Rh
dGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNG
dW5jdGlvbkVudHJ5PihzdGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0
aW9uLT5hdHRyaWJ1dGVzKSk7CiAgICAgICAgICAgICArK3N0YXRpY0Z1bmN0aW9uOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTI4LDIxICsxMjgsMjEgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
OjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpWTSYsIE9wYXF1ZUpTQ2xhc3MqIGpzQ2wK
ICAgICA6IG1fY2xhc3MoanNDbGFzcykKIHsKICAgICBpZiAoanNDbGFzcy0+bV9zdGF0aWNWYWx1
ZXMpIHsKLSAgICAgICAgc3RhdGljVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0Ns
YXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CisgICAgICAgIHN0YXRpY1ZhbHVlcyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICBPcGFxdWVKU0Ns
YXNzU3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGpzQ2xhc3MtPm1fc3Rh
dGljVmFsdWVzLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVz
VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJUKCFpdC0+a2V5LT5pc0F0
b20oKSk7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWVOYW1lID0gaXQtPmtleS0+aXNvbGF0ZWRD
b3B5KCk7Ci0gICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1ZU5hbWUuaW1wbCgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1ZS0+Z2V0UHJvcGVydHks
IGl0LT52YWx1ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1l
KSk7CisgICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1ZU5hbWUuaW1wbCgpLCBtYWtl
VW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1ZS0+Z2V0UHJvcGVydHksIGl0LT52YWx1
ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoanNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMpIHsKLSAg
ICAgICAgc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU+KCk7CisgICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwogICAgICAgICBPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGpzQ2xhc3Mt
Pm1fc3RhdGljRnVuY3Rpb25zLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganNDbGFzcy0+bV9zdGF0aWNG
dW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJU
KCFpdC0+a2V5LT5pc0F0b20oKSk7Ci0gICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChp
dC0+a2V5LT5pc29sYXRlZENvcHkoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVu
dHJ5PihpdC0+dmFsdWUtPmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsK
KyAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgp
LCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rp
b24sIGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTUx
LDcgKzE1MSw3IEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgT3BhcXVlSlNDbGFzczo6Y29u
dGV4dERhdGEoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVK
U0NsYXNzQ29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+b3BhcXVlSlNDbGFzc0RhdGEoKS5hZGQodGhpcywgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghY29udGV4dERhdGEpCi0gICAgICAgIGNvbnRleHREYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwor
ICAgICAgICBjb250ZXh0RGF0YSA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
PihleGVjLT52bSgpLCB0aGlzKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRhOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFBy
aXZhdGUuY3BwCmluZGV4IGQ5ZWU2NzQwMzQ5Y2ZlZmRmYmNjMGQzMTA5NGYxZjRkZTVhNTJjMWUu
LmJhNGE1YTE2Njk3YWY1ZjhhOTcyMmU1NzQ2OWUzOTRkOTc5MDQyYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNDb250ZXh0R3JvdXBBZGRNYXJraW5nQ29uc3Ry
YWludChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNNYXJraW5nQ29uc3RyCiAgICAgLy8gZWxz
ZSBnZXRzIG1hcmtlZC4KICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5ID0gQ29u
c3RyYWludFZvbGF0aWxpdHk6OkdyZXllZEJ5TWFya2luZzsKICAgICAKLSAgICBhdXRvIGNvbnN0
cmFpbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PigKKyAgICBh
dXRvIGNvbnN0cmFpbnQgPSBtYWtlVW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PigKICAg
ICAgICAgdG9DU3RyaW5nKCJBbWMiLCBjb25zdHJhaW50SW5kZXgsICIoIiwgUmF3UG9pbnRlcihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFpbnRDYWxsYmFjaykpLCAiKSIpLAogICAgICAgICB0
b0NTdHJpbmcoIkFQSSBNYXJraW5nIENvbnN0cmFpbnQgIyIsIGNvbnN0cmFpbnRJbmRleCwgIiAo
IiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFpbnRDYWxsYmFjaykpLCAi
LCAiLCBSYXdQb2ludGVyKHVzZXJEYXRhKSwgIikiKSwKICAgICAgICAgW2NvbnN0cmFpbnRDYWxs
YmFjaywgdXNlckRhdGFdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
V3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1t
CmluZGV4IGQ0NjliNzVhMzFmMGVmY2E5ZDA3YWJiMDNiMGJlNjYxNjFiMzk1NjcuLjRiNTk5MDcz
ZmU3NmI0ODY0NDM2OTlhYmRjYjM0YzQxNjRiYzJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC02MDYsNyArNjA2LDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKICAg
ICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKICAg
ICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlP
cHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBjYXBhY2l0eTowXTsK
IAotICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NN
YXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoY29udGV4dCkt
PnZtKCkpOworICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IG1ha2VVbmlxdWU8SlNDOjpXZWFrR0NN
YXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoY29udGV4dCkt
PnZtKCkpOwogCiAgICAgQVNTRVJUKCF0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT53cmFwcGVy
TWFwKCkpOwogICAgIHRvSlNHbG9iYWxPYmplY3QoY29udGV4dCktPnNldFdyYXBwZXJNYXAoc2Vs
Zik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1
bmN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlv
bi5tbQppbmRleCBlZTkzMjgyMWVmNzRiZDY4OTFhZThmMjlmYWQ3YmJhNWFmZWEwY2JjLi43M2Ni
NDI3MDQzODE4MzFlODE5ZDlkOTQzZWI5ZTU0NDAzMDk2ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KQEAgLTE5NSwxOCArMTk1
LDE4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudERvdWJsZTxU
Pj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudERvdWJsZTxU
Pj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQm9vbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50Qm9vbGVhbj4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJvb2xlYW4+KCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQpAQCAtMjE3LDcgKzIx
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SWQ+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJZD4oKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlT2ZDbGFzcyhjb25zdCBjaGFyKiBiZWdpbiwgY29u
c3QgY2hhciogZW5kKQpAQCAtMjI4LDE5ICsyMjgsMTkgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKGNscyA9PSBbSlNWYWx1ZSBjbGFzc10pCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SlNWYWx1
ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRKU1Zh
bHVlPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU1N0cmluZyBjbGFzc10pCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmc+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmc+KCk7
CiAgICAgICAgIGlmIChjbHMgPT0gW05TTnVtYmVyIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051bWJlcj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051bWJlcj4oKTsKICAgICAg
ICAgaWYgKGNscyA9PSBbTlNEYXRlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RhdGU+KCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOwogICAgICAgICBpZiAoY2xzID09
IFtOU0FycmF5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrQXJndW1lbnROU0FycmF5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGljdGlv
bmFyeSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFj
a0FyZ3VtZW50TlNEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKQEAg
LTI1Miw3ICsyNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5
KGJlZ2luLCBlbmQpOwogICAgICAgICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdmFs
dWVUb1R5cGVJbnZvY2F0aW9uRm9yKGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3RydWN0PihpbnZvY2F0
aW9uLCBjb3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTMzNSw0
NSArMzM1LDQ1IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRp
YyBSZXN1bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZURvdWJsZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8
VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxU
Pj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQm9vbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdEJvb2xlYW4+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0Qm9vbGVhbj4oKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4oKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlT2ZD
bGFzcyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBl
IHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVTdHJ1Y3QoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkKICAg
ICB7CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChO
U0ludm9jYXRpb24gKmludm9jYXRpb24gPSB0eXBlVG9WYWx1ZUludm9jYXRpb25Gb3IoY29weSkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFN0cnVj
dD4oaW52b2NhdGlvbiwgY29weSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxs
YmFja1Jlc3VsdFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIH07CkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIEpTT2JqZWN0UmVmIG9i
akNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbihKU0NvbnRleHQgKmNvbnRleHQsIE5TSW52
b2MKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSk7CiAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgYXV0byBpbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFz
cywgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOworICAgIGF1dG8gaW1wbCA9
IG1ha2VVbmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5
cGUsIGluc3RhbmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsK
ICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBpbXBsLT5uYW1lKCk7CiAgICAgcmV0dXJuIHRvUmVm
KEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBuYW1lLCBXVEZNb3ZlKGltcGwpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKaW5kZXggZTAxZTk3MGM3ZjU4MDM2NTYxOGVm
MWRhYjg1NTQ0ZDcwNGY5YjQ3YS4uNzhkNzY1NWZmODA3NzYwZDQ2MDhhNjE3ZTU3YzkwZjE1NDI3
OTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIGpzY0NvbnRleHRTZXRWaXJ0dWFsTWFj
aGluZShKU0NDb250ZXh0KiBjb250ZXh0LCBHUmVmUHRyPEpTQ1ZpcnR1YWxNCiAgICAgICAgICAg
ICBwcml2LT5qc0NvbnRleHQgPSBKU1JldGFpblB0cjxKU0dsb2JhbENvbnRleHRSZWY+KEFkb3B0
LCBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGpzY1ZpcnR1YWxNYWNoaW5lR2V0Q29udGV4
dEdyb3VwKHByaXYtPnZtLmdldCgpKSwgbnVsbHB0cikpOwogICAgICAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSB0b0pTR2xvYmFsT2JqZWN0KHByaXYtPmpzQ29udGV4dC5nZXQoKSk7CiAgICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0LT53cmFwcGVyTWFwKCkpCi0gICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldFdyYXBwZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxKU0M6OldyYXBwZXJNYXA+KHByaXYt
PmpzQ29udGV4dC5nZXQoKSkpOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRXcmFwcGVy
TWFwKG1ha2VVbmlxdWU8SlNDOjpXcmFwcGVyTWFwPihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsK
ICAgICAgICAganNjVmlydHVhbE1hY2hpbmVBZGRDb250ZXh0KHByaXYtPnZtLmdldCgpLCBjb250
ZXh0KTsKICAgICB9IGVsc2UgaWYgKHByaXYtPnZtKSB7CiAgICAgICAgIEFTU0VSVChwcml2LT5q
c0NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q1dyYXBwZXJNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBw
ZXJNYXAuY3BwCmluZGV4IDExYmI3YzBiODczN2RiNjdkZDE3ZGNkMjRmNzAyOTQzNDQ2OWE4MDMu
LmY1MjNlYTQxOTlmOGFiZDczMmY3N2I2MjgxNDEyMDEzNGJiOGJlYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKEpTR2xvYmFs
Q29udGV4dFJlZiBqc0NvbnRleHQpCi0gICAgOiBtX2NhY2hlZEpTV3JhcHBlcnMoc3RkOjptYWtl
X3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09iamVjdD4+KHRvSlMoanND
b250ZXh0KS0+dm0oKSkpCisgICAgOiBtX2NhY2hlZEpTV3JhcHBlcnMobWFrZVVuaXF1ZTxKU0M6
OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09iamVjdD4+KHRvSlMoanNDb250ZXh0KS0+dm0o
KSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3Rh
Y2suY3BwCmluZGV4IGE3NWY1OGRjMTQ2YjNiNjQ5NWNlYjE2N2FkZjRkYWJmZjA2YjBjODkuLmRh
NDc3MDUxZjM0NWUwNzE2OGZjN2QwNmUwYzdmNTI2MzExODZlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBA
IFBhZ2UqIFN0YWNrOjplbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpCiAgICAgaWYgKExJS0VM
WShpdCAhPSBtX3BhZ2VzLmVuZCgpKSkKICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gaXQt
PnZhbHVlLmdldCgpOwogICAgIGVsc2UgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4g
cGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oYmFzZUFkZHJlc3MpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZT4gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oYmFzZUFkZHJlc3MpOwog
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZXMuYWRkKGJhc2VBZGRyZXNzLCBXVEZNb3ZlKHBh
Z2UpKTsKICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CmluZGV4IDJjOWMzYjBkZTg5ZWIzZTM4M2Y0Y2JkY2YyMTJkMjY4YzFjMTlkYmEuLjdmNjg1ODZj
MWMwMjg5YzBhMzI1MjJmZGU5ZTA2N2RmMWY0MWUyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBjbGFzcyBMb3dlclRv
QWlyIHsKICAgICB2b2lkIHByaW50KFZhbHVlKiBvcmlnaW4sIEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gcHJpbnRMaXN0ID0gUHJpbnRlcjo6bWFrZVByaW50
UmVjb3JkTGlzdChhcmd1bWVudHMuLi4pOwotICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0
YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtl
X3VuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOworICAgICAgICBhdXRvIHBy
aW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwobWFrZVVuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOwogICAgICAg
ICBJbnN0IGluc3QoQWlyOjpQYXRjaCwgb3JpZ2luLCBBcmc6OnNwZWNpYWwocHJpbnRTcGVjaWFs
KSk7CiAgICAgICAgIFByaW50ZXI6OmFwcGVuZEFpckFyZ3MoaW5zdCwgc3RkOjpmb3J3YXJkPEFy
Z3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAgICAgICAgIGFwcGVuZChXVEZNb3ZlKGluc3QpKTsK
QEAgLTEzMDgsNyArMTMwOCw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgIHsKICAgICAgICAg
aWYgKCFmaWVsZCkgewogICAgICAgICAgICAgZmllbGQgPSBzdGF0aWNfY2FzdDxUKj4oCi0gICAg
ICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOworICAgICAgICAgICAgICAgIG1fY29k
ZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLikpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggZmZjYjJkNGUyNzE0NDI5
NzBlNTQ2NDM2NjcwZjdmMjlkZWIxYWIxYy4uMmVjY2RhYzA0OWU2OGQxMTNlMjNmOTdmMjQzNTNh
NWQ0YWFhM2I5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogUHJvY2VkdXJl
OjpQcm9jZWR1cmUoKQogICAgIDogbV9jZmcobmV3IENGRygqdGhpcykpCiAgICAgLCBtX2xhc3RQ
aGFzZU5hbWUoImluaXRpYWwiKQotICAgICwgbV9ieXByb2R1Y3RzKHN0ZDo6bWFrZV91bmlxdWU8
T3BhcXVlQnlwcm9kdWN0cz4oKSkKKyAgICAsIG1fYnlwcm9kdWN0cyhtYWtlVW5pcXVlPE9wYXF1
ZUJ5cHJvZHVjdHM+KCkpCiAgICAgLCBtX2NvZGUobmV3IEFpcjo6Q29kZSgqdGhpcykpCiB7CiAg
ICAgbV9jb2RlLT5zZXROdW1FbnRyeXBvaW50cyhtX251bUVudHJ5cG9pbnRzKTsKQEAgLTMxMSwy
OCArMzExLDI4IEBAIHZvaWQgUHJvY2VkdXJlOjpkZWxldGVPcnBoYW5zKCkKIERvbWluYXRvcnMm
IFByb2NlZHVyZTo6ZG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFtX2RvbWluYXRvcnMpCi0gICAg
ICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwor
ICAgICAgICBtX2RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPERvbWluYXRvcnM+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fZG9taW5hdG9yczsKIH0KIAogTmF0dXJhbExvb3BzJiBQcm9jZWR1cmU6Om5h
dHVyYWxMb29wcygpCiB7CiAgICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAg
ICBtX25hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX25hdHVyYWxMb29wczsKIH0KIAogQmFja3dhcmRzQ0ZHJiBQcm9jZWR1cmU6OmJh
Y2t3YXJkc0NGRygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9iYWNr
d2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAgICAg
ICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIAogQmFja3dhcmRzRG9taW5hdG9ycyYgUHJvY2Vk
dXJlOjpiYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKICAgICBpZiAoIW1fYmFja3dhcmRzRG9taW5h
dG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxC
YWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9y
cyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAq
bV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCogUHJv
Y2VkdXJlOjphZGREYXRhU2VjdGlvbihzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4g
ZGF0YVNlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0gbWFrZVVuaXF1ZTxEYXRh
U2VjdGlvbj4oc2l6ZSk7CiAgICAgdm9pZCogcmVzdWx0ID0gZGF0YVNlY3Rpb24tPmRhdGEoKTsK
ICAgICBtX2J5cHJvZHVjdHMtPmFkZChXVEZNb3ZlKGRhdGFTZWN0aW9uKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IDMz
ZjhhYmZlZmJjMWY4ZjkxNjU0NWEzYmRjYTE5NmIwY2M2NmMzOTguLmQ1ZDY5YzMwYTU5OTE3NWYy
ODE0ODM2Mjg2MzZmY2I3NzA2ODAxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIENDYWxsU3BlY2lhbCogQ29kZTo6Y0NhbGxT
cGVjaWFsKCkKIHsKICAgICBpZiAoIW1fY0NhbGxTcGVjaWFsKSB7CiAgICAgICAgIG1fY0NhbGxT
cGVjaWFsID0gc3RhdGljX2Nhc3Q8Q0NhbGxTcGVjaWFsKj4oCi0gICAgICAgICAgICBhZGRTcGVj
aWFsKHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7CisgICAgICAgICAgICBhZGRT
cGVjaWFsKG1ha2VVbmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IG1fY0NhbGxTcGVjaWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcAppbmRleCBmMzZiOWIyZmU2NjgxNjBiODg5OWIwYzUwYjMxOTdkNzU4ODI0ZjgwLi45
NWNhYTAwNGQ4ZWIzOTIzMzBlMWNjYmI2MzlhNWNlZTc5Y2JjNzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAgICAgICAgIGRhdGFMb2co
Y29kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJl
Z2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4o
Y29kZSk7CisgICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gbWFr
ZVVuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2RlKTsKICAgICAgICAgY29k
ZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMtPnByZXBhcmVGb3JHZW5lcmF0aW9uKCk7
CiAKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci90ZXN0YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5j
cHAKaW5kZXggZWYxNTQ0YzA3YmIzMmE5MDM3ZjJjYjcxZTE1ZTc0YTliZTYxYmY5NC4uM2RjYTI5
Njc4OGIwMDEwNjhlMDFmNDIzZTExNmM3YzJhNGU3ZGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxC
Mzo6Q29tcGlsYXRpb24+IGNvbXBpbGUoQjM6OlByb2NlZHVyZSYgcHJvYykKICAgICBnZW5lcmF0
ZShwcm9jLmNvZGUoKSwgaml0KTsKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxs
cHRyKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVf
Q09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAidGVzdGFpciBjb21waWxhdGlv
biIpLCBwcm9jLnJlbGVhc2VCeXByb2R1Y3RzKCkpOwogfQogCkBAIC0xODU1LDcgKzE4NTUsNyBA
QCB2b2lkIHRlc3RJbnZhbGlkYXRlQ2FjaGVkVGVtcFJlZ2lzdGVycygpCiAgICAgcm9vdC0+YXBw
ZW5kKE1vdmUsIG51bGxwdHIsIEFyZzo6YmlnSW1tKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnRo
aW5ncykpLCBiYXNlKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBwYXRjaFBvaW50MVJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwg
PSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRT
cGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIC8vIElu
IFBhdGNocG9pbnQsIExvYWQgdGhpbmdzWzBdIC0+IHRtcC4gVGhpcyB3aWxsIG1hdGVyaWFsaXpl
IHRoZSBhZGRyZXNzIGluIHgxNyAoZGF0YU1lbW9yeVJlZ2lzdGVyKS4KICAgICBCMzo6UGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50MSA9IHBhdGNoUG9pbnQxUm9vdC0+YXBwZW5kTmV3PEIzOjpQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTkzMCw3
ICsxOTMwLDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQoKQogICAgIEdQUlJlZyBwaW5u
ZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQp
OwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNw
ZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIz
OjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VV
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBi
M1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpW
b2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgdm9pZCB0ZXN0QXJndW1l
bnRSZWdQaW5uZWQyKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
OwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwq
IHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6
OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50
U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwog
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxC
Mzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTIw
MDAsNyArMjAwMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkMygpCiAgICAgR1BSUmVn
IHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBp
bm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUu
YWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7Cisg
ICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwo
bWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxv
Y2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywg
QjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXgg
MTU1Y2E0YWI0NzBiMDE0NDJhZDk1NDNhOGFlMWZjMWZjNTlmN2UzYS4uMWM3YWQwZjk0ZTA2Yjhj
MzFiZmU3Y2M5NGQwNTUyYzQ3Nzk2MDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApA
QCAtMTg5LDcgKzE4OSw3IEBAIGV4dGVybiBMb2NrIGNyYXNoTG9jazsKIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNvbXBpbGVQcm9jKFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1
bnNpZ25lZCBvcHRMZXZlbCA9IE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkpCiB7CiAgICAg
cHJvY2VkdXJlLnNldE9wdExldmVsKG9wdExldmVsKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJlKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzEwODU5YWNlZDNkYjc4YjY2
NDk3NmEwOGI4ZTViNDhkNjUyYjJmMy4uNzdmYjY1ZGEwYjdhMDZjN2Q2NThiYWJkYjRlNTEwOGE3
OTE3ZWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBzdGF0ZS5zZXRTcGlsbFN0
YXRlRm9ySlNHZXR0ZXJTZXR0ZXIoc3BpbGxTdGF0ZSk7CiAKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFhY2Nlc3MuY2FsbExpbmtJbmZvKCkpOwotICAgICAgICAgICAgYWNjZXNzLm1fY2Fs
bExpbmtJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua0luZm8+KCk7CisgICAgICAgICAg
ICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBtYWtlVW5pcXVlPENhbGxMaW5rSW5mbz4oKTsKIAog
ICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGdlbmVyYXRlZCBhIHBvbHltb3JwaGljIGNhbGwg
c3R1YiB0aGF0IGp1bXBlZCBiYWNrIHRvIHRoZSBnZXR0ZXIKICAgICAgICAgICAgIC8vIHN0dWIs
IHdoaWNoIHRoZW4ganVtcGVkIGJhY2sgdG8gdGhlIG1haW4gY29kZSwgdGhlbiB3ZSdkIGhhdmUg
YSByZWFjaGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCmluZGV4IDJiZDlmZTY1MTk5ZDA3ZjE3
M2UzODMwZGM3NGU0NjdlYjlkNTQxZmMuLjkyNTdmYzIyNjY1MjlmODYxMzdkNWRhZDhjOTI0OTcx
ODM5MDQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlU25pcHBldFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNz
IFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMgOiBwdWJsaWMgQWNjZXNzQ2FzZVNu
aXBwZXRQYXJhbXM6OlNsb3dQCiAgICAgdm9pZCBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6YWRk
U2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVy
cyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIHN0ZDo6
dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKICAgICB7IFwKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCB0byA9IGppdC5sYWJlbCgpOyBcCi0gICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzPENDYWxs
SGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIF9fVkFfQVJHU19f
Pj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKKyAgICAgICAgbV9nZW5l
cmF0b3JzLmFwcGVuZChtYWtlVW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVu
dHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgX19W
QV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAogICAgIH0g
XAogCiBTTklQUEVUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKaW5kZXggMzNiYjBjMDY2MzUzODFlODk4ZjY1YTg3NGYxZjM2YThjOTQ4MjNhZi4u
MTBjNjViYjlkZDcwOWE5YWY3YWJhNmNlYjhhOWI3MzU5NzcxNjQxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAg
LTY1LDE1ICs2NSwxNSBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgLy8gQ3JlYXRlIHRo
ZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNh
cGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwogCi0gICAgYXV0byBlbnRyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5
QmxvY2spOwotICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZW50
cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpF
bnRyeUJsb2NrKTsKKyAgICBhdXRvIGZpcnN0QmxvY2sgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFz
aWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKICAgICBsaW5rQmxvY2tz
KGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAogICAgIGFwcGVuZEJsb2NrKFdURk1v
dmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJsb2Nr
LmdldCgpOwogICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCi0gICAgYXV0
byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFz
aWNCbG9jazo6RXhpdEJsb2NrKTsKKyAgICBhdXRvIGV4aXQgPSBtYWtlVW5pcXVlPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBu
ZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKICAg
ICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBqdW1wIHRhcmdldCwgdGhlbiBp
dCdzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBiYXNpYyBibG9jay4KICAgICAgICAgaWYgKGlzSnVt
cFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5z
dHJ1Y3Rpb25Jc0xlYWRlcikgewotICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0cnVjdGlvbik7CisgICAgICAgICAgICBh
dXRvIG5ld0Jsb2NrID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGluc3RydWN0aW9u
KTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKICAgICAgICAgICAgIGFw
cGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCmluZGV4IGQ4ZGFjMTU4NWZhYjJiOTk4YzFlNWQ4ODc1MmJhMTJkZjZkYWRiZGUuLjM5M2Yx
ODI0ZTQxYTRiZWI1MTRjNjJhNjk2ZjMzYTgzNzI0OTVjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAg
dm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiAKIHZvaWQgQ2FsbExpbmtJbmZv
OjpzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRhJiBzaHVmZmxl
RGF0YSkKIHsKLSAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxG
cmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0YSk7CisgICAgbV9mcmFtZVNodWZmbGVEYXRhID0g
bWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggZWYxY2FiZmE3MThiMDgwZDdmM2U4NjM3ZjlmOTRmNjA1ODZlZTRlOC4uMzlh
MjNiNGM3ZjQ3ZDhmY2U1ZTMwZWVjYTU1MGU3N2RhZDMxNTg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKIENvZGVCbG9jazo6SklU
RGF0YSYgQ29kZUJsb2NrOjplbnN1cmVKSVREYXRhU2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImKQogewogICAgIEFTU0VSVCghbV9qaXREYXRhKTsKLSAgICBtX2ppdERhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVERhdGE+KCk7CisgICAgbV9qaXREYXRhID0gbWFrZVVuaXF1ZTxKSVREYXRh
PigpOwogICAgIHJldHVybiAqbV9qaXREYXRhOwogfQogCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCB1
bnNpZ25lZCBDb2RlQmxvY2s6OnJhcmVDYXNlUHJvZmlsZUNvdW50Rm9yQnl0ZWNvZGVPZmZzZXQo
Y29uc3QgQ29uY3VycmVudEpTTG9jawogdm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdp
c3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycykKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1fY2Fs
bGVlU2F2ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
KGNhbGxlZVNhdmVSZWdpc3RlcnMpOworICAgIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX2NhbGxl
ZVNhdmVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihjYWxsZWVT
YXZlUmVnaXN0ZXJzKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3Rl
cnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3RlckF0T2Zmc2V0
TGlzdCkKQEAgLTE3OTAsNyArMTc5MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjplbnN1cmVDYXRjaExp
dmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0U2xvdyhjb25zdCBPcENhdGNoCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKICAgICAgICAgbGl2ZU9w
ZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CiAKLSAgICBhdXRv
IHByb2ZpbGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
PihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICBhdXRvIHByb2ZpbGVzID0gbWFrZVVuaXF1ZTxW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKICAgICBS
RUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCiAgICAg
ICAgIHByb2ZpbGVzLT5tX2J1ZmZlci5nZXQoKVtpXS5tX29wZXJhbmQgPSBsaXZlT3BlcmFuZHNb
aV0ub2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggODcwNjhiYTY1ZGQ4NWMyM2ZiZTRhNDkwZTk3NGE3MjgxZjI1NjA0Yy4uMzE0MzhlMGFj
NTA2OWIyNzQ5Njk4ODg2YWIxMTIwMDc2YmNiNzNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTQzLDcgKzk0Myw3IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gcmFy
ZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICAgICAgYXV0byBy
YXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOyAvLyBtX2NhdGNoUHJvZmlsZXMgY2FuIGJlIHRvdWNoZWQgZnJvbSBjb21w
aWxlciB0aHJlYWRzLgogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdURk1vdmUocmFyZURhdGEp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmNwcAppbmRleCAyZDk0MzFjZjBiMTQ0ZmEzYTJjMjIxYTY2ZTk0MDcwYzc3NTBl
MGUwLi5iMWEwMWZmYTRkOTM0OGZlY2IyNGM5Njg4YmM4MDA1MmY5Mzg4NmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgYm9vbCBFeGl0UHJvZmlsZTo6YWRkKENvZGVCbG9jayogb3duZXIsIGNvbnN0
IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgc2VlbiBhbnkg
ZnJlcXVlbnQgZXhpdHMgdGhlbiBjcmVhdGUgdGhlIGxpc3QgYW5kIHB1dCB0aGlzIHNpdGUKICAg
ICAvLyBpbnRvIGl0LgogICAgIGlmICghcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzKSB7Ci0g
ICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPEZyZXF1ZW50RXhpdFNpdGU+PigpOworICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0
U2l0ZXMgPSBtYWtlVW5pcXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKICAgICAgICAg
cHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzLT5hcHBlbmQoc2l0ZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKaW5kZXggNGY0OGExZDZj
OTg3MjJlNWFjMmVjZTg3ZTUwNDAyMzJmOWE1ZDZiMS4uNGZiMTE1NzMwMDNiNTJlZmQ5YTg2NmZi
M2JkZjc3NTA5OGNlZmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgdm9pZCBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlk
Q29tcGxldGUoQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiwKIFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1
bXA+JiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmVuc3VyZURlZmVycmVkU291cmNlRHVt
cCgpCiB7CiAgICAgaWYgKCFtX2RlZmVycmVkU291cmNlRHVtcCkKLSAgICAgICAgbV9kZWZlcnJl
ZFNvdXJjZUR1bXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+
PigpOworICAgICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IG1ha2VVbmlxdWU8VmVjdG9yPERl
ZmVycmVkU291cmNlRHVtcD4+KCk7CiAgICAgcmV0dXJuICptX2RlZmVycmVkU291cmNlRHVtcDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCmluZGV4IGRiOWFkMTYwYWMyODEzMGYzOTg0MWZmM2JmZWIzMmI2ODNkZGVhZDYuLmRmNGQ3
N2NlM2Y2M2I1MjAwNzU1NDRjNDFhMTZjYjIzMWQ3ZGZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKQEAgLTI0Myw3ICsyNDMsNyBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRF
eGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpHZXR0ZXI6IHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5r
U3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9IG1ha2VVbmlx
dWU8Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLmNh
bGxMaW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtTdGF0dXMg
PSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5j
cHAKaW5kZXggZmMxZjQ2MGRlOTY1NDFkOGZhMDk5Y2JiNDVmMjMwOWMyYTMzMzgwZi4uZWQ4ZDQ5
M2Y3ZWU2ZjFkYTJiOTA5YWQ1N2M2Mjc3MTgxM2MyZDZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBA
IEdldEJ5SWRWYXJpYW50JiBHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBvdGhlcikKICAgICBtX2N1c3RvbUFjY2Vzc29yR2V0dGVyID0gb3RoZXIubV9jdXN0
b21BY2Nlc3NvckdldHRlcjsKICAgICBtX2RvbUF0dHJpYnV0ZSA9IG90aGVyLm1fZG9tQXR0cmli
dXRlOwogICAgIGlmIChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5r
U3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExp
bmtTdGF0dXMpOworICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9j
YWxsTGlua1N0YXR1cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5jcHAKaW5kZXggMDkyOWQ2ZmI0MTI2NzRlZDdmMjA0MDQ1ZmI0MjVlYjdkMzhkM2M5My4uNmVl
YjE0NWIzMzc5NjYyYWYxYzE1MDAxOTA3NjcyN2EzOWVlMmJkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBDb21wcmVzc2Vk
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCgKICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KQogewogICAg
IGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExhenlPcGVy
YW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOworICAgICAgICBtX2RhdGEgPSBtYWtlVW5pcXVlPExh
enlPcGVyYW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOwogICAgIGVsc2UgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRhLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
aWYgKG1fZGF0YS0+YXQoaSkua2V5KCkgPT0ga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAppbmRleCBiNDllNGUyNDJl
NTJmMDgxMzE1ZTQ4ZmIxZTFiY2MyOTdlNTI4YWUwLi5hMWVjYjk0ZGQwZDE4NjcwODYzNTJmNTJi
NWI1OGMzMTkzZWVjZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBQb2x5
UHJvdG9BY2Nlc3NDaGFpbiB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IGNsb25lKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBv
bHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBv
bHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPFN0
cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4
IDIyZjQ1NTgxNGI4NGFmNGZlNzRjYWYyMzQwMWQzMGFkYWRhZTVjNmUuLjNiMzAyMzM5ZjAzNTBk
YWM0MjhmM2YwNGNjNzM1MmEzYWU1MjFiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNjE2LDcgKzYxNiw3IEBA
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiAg
ICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxv
Y2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFu
ZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CiAgICAgbV93YXRjaHBv
aW50cyA9IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwogICAgIGlmICghc3RhdGUud2Vha1Jl
ZmVyZW5jZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtS
ZWZlcmVuY2VzKSk7CisgICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsK
ICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKaW5kZXggYzJkOTUz
MjBjZWJkNTZkYmRjOTNlZWJkNmMzMTQwYTdkZjdjYzIwOS4uZDY0MmJjY2ZlNzk3NjZjNTI3OWJi
YzgxMDg3MDFlYjdmODU4MjRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OklubGluZWFibGU6IHsKICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiBjYWxsTGlu
a1N0YXR1cyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPENhbGxM
aW5rU3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICAgICAgbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gYWNjZXNzLmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZv
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwg
cHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAppbmRleCA1
ZDZiMjkwNDVjYTY3NWM1NmZhNzFkNTQ3NWExMTViMmRmNmYzYzVlLi43MmM2Y2FjODRmYjI3YmNm
NWU0MTdjNDk2ZTYzNjJmNzJlNmMwYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUHV0QnlJZFZh
cmlhbnQmIFB1dEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgUHV0QnlJZFZhcmlhbnQmIG90
aGVyKQogICAgIG1fY29uZGl0aW9uU2V0ID0gb3RoZXIubV9jb25kaXRpb25TZXQ7CiAgICAgbV9v
ZmZzZXQgPSBvdGhlci5tX29mZnNldDsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykK
LSAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0
dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9
IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAq
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmNwcAppbmRleCA5NmQyMmVjZmEwYTRjNzU2ZWRmZjYxZjAwMTNmNzI1OGU3ZDNmYmQ1
Li41M2YyMDhiY2FkZWQzZGVhMmRlZTE4YTBlODk2MDVjNDkwYTE5NWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFJlY29yZGVkU3RhdHVzZXM6OlJlY29yZGVkU3RhdHVzZXMoUmVjb3JkZWRT
dGF0dXNlcyYmIG90aGVyKQogCiBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRk
Q2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgQ2FsbExp
bmtTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOwogICAgIENhbGxMaW5rU3RhdHVzKiByZXN1bHQg
PSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVP
cmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01Myw3
ICs1Myw3IEBAIENhbGxMaW5rU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luCiAKIEdldEJ5SWRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVz
UHRyID0gbWFrZVVuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIEdldEJ5SWRTdGF0
dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNjEsNyArNjEsNyBAQCBHZXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRH
ZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sCiAgICAgCiBQdXRCeUlk
U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4sIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRv
IHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAg
ICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKICAg
ICBQdXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgcHV0cy5hcHBl
bmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTY5LDcgKzY5LDcgQEAgUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRT
dGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAog
CiBJbkJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEluQnlJZFN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBJbkJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAg
ICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5CeUlkU3RhdHVzPihzdGF0dXMp
OworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7
CiAgICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgaW5zLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4
IDMwYTFmMDU1MjU5ZTNkZWQxYTcxNjhlZTM1MjZmNzJjMDg0YmVlNWEuLmZjYzI5MTE4MDI0NGUw
YjMyMjllMmZkNzYzMDA3YmU3OWE4NzQxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2lu
dCogV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2UKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBrZXkpCiB7CiAgICAgaWYgKCFob2xkZXJSZWYpCi0gICAgICAgIGhvbGRlclJlZiA9IHN0ZDo6
bWFrZV91bmlxdWU8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0
dWJJbmZvKTsKKyAgICAgICAgaG9sZGVyUmVmID0gbWFrZVVuaXF1ZTxXYXRjaHBvaW50c09uU3Ry
dWN0dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOwogICAgIGVsc2UgewogICAgICAg
ICBBU1NFUlQoaG9sZGVyUmVmLT5tX2NvZGVCbG9jayA9PSBjb2RlQmxvY2spOwogICAgICAgICBB
U1NFUlQoaG9sZGVyUmVmLT5tX3N0dWJJbmZvID09IHN0dWJJbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDcy
MjJkNDgyYWQxZTVlMjg2Y2VmNTlkNGZmMWUxZjVlYjA3MTA3OGQuLjQ5MTk1ZDE1NzIxZDJjZGE0
Zjc0OGFlOGRiZTJhZjAwOWEyOGE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNj
ZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4oKTsKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQ
b2x5bW9ycGhpY0FjY2Vzcz4oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CiAgICAgICAgICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IGUwMDZkMTZiOWI4YTBmYzMwZjA0MzNjZGU2MDJlY2MzYjE2OGQ0MmUuLjJj
OWEwYjMwMWViMDk4ZTExNWVmMWUzNmIxMjdiZTI5ZTNhYmRhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDE0
LDcgKzQxNCw3IEBAIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgVW5saW5rZWRDb2RlQmxvY2s6
OmxpdmVuZXNzQW5hbHlzaXNTbG93KENvZGVCbG9jayogY29kCiAgICAgICAgIGlmICghbV9saXZl
bmVzcykgewogICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBjaGFuY2UgdHdvIGNvbXBpbGVyIHRo
cmVhZHMgcmFjZWQgdG8gdGhlIHNsb3cgcGF0aC4KICAgICAgICAgICAgIC8vIEdyYWJiaW5nIHRo
ZSBsb2NrIGFib3ZlIGRlZmVuZHMgYWdhaW5zdCBjb21wdXRpbmcgbGl2ZW5lc3MgdHdpY2UuCi0g
ICAgICAgICAgICBtX2xpdmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM+KGNvZGVCbG9jayk7CisgICAgICAgICAgICBtX2xpdmVuZXNzID0gbWFrZVVuaXF1
ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KGNvZGVCbG9jayk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCmluZGV4IDQzNzA5NTE5ZWI2MTZlMjY1MTA2ZWYxZDU1Mjk2MTdkNjQ1YzliYzku
LjUxMjUzNmMwZDQ0ODU3YTRjYTc2ZTgxM2ZlMTQ4MDNhOTczZmZhNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00MDIs
NyArNDAyLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkgewogICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBsb2NrRHVyaW5nTWFya2luZygqaGVhcCgpLCBjZWxsTG9jaygpKTsKLSAgICAgICAgICAgIG1f
cmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9y
YXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGZiZWM5ZjcyY2EyZmQxYTE4YmFjYjA3M2U2ODcy
NTRiNzBiOWViZTEuLjQ5ZDlkMmZkM2U2ZmU5ZmI0YjUyN2Y2NzdhYmQ1YmQ0YTUxMjI2Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoVk0mIHZtKQogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOwot
ICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgIG1fcmFy
ZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJldHVybiAqbV9yYXJlRGF0YTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IGU5NzY4NmFhM2VkY2RkOGQzZjliNTdjNGE2ZDEyM2JhYzlj
YjM5ODcuLjE3OGE2MWRmNjkxMzNhZmRjYzEyNzI4Y2JmZDk2ZWIzOWY0MmFlYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKQEAgLTQwMSw3ICs0MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVC
bG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCk7CisgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5v
ZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsK
ICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0b3ItPmdlbmVyYXRlKCk7
CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBp
bGVUaW1lcygpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApp
bmRleCBiY2Q3MmVhMDlmNWY3MTdhNjVmNjVkN2QyZWZjMTc1ZTAyM2U2OTkwLi5lYmFiYjU5ZDQz
NTlhOWUzNjRmMmNhM2FmNmFmZDBlZmQwMzkwYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBWTTsKIHR5cGVkZWYg
RXhlY1N0YXRlIENhbGxGcmFtZTsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlYnVnZ2VyKFZN
Jik7CiAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBmMjBh
MzU3ZWNiNzNhYTdlZmU0Y2IxMDdkMWNjYjdlOWRjOTAwMzM5Li4yNzY1NjkyNmE4ZDI5ZDI3ZWJl
ZWFhOWZmZGNhMjAzY2MyNWZhMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC01OCw3ICs1OCw3
IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpBYnN0cmFjdEludGVy
cHJldGVyKEdyYXBoJiBncmFwaCwgQWJzdHJhCiAgICAgLCBtX3N0YXRlKHN0YXRlKQogewogICAg
IGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgIG1fcGhpQ2hpbGRyZW4gPSBzdGQ6
Om1ha2VfdW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKKyAgICAgICAgbV9waGlDaGlsZHJl
biA9IG1ha2VVbmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggNWIwYzg3ZmZlZTUyYjJhOWU1MDExZTViZjhjNzFjMDEyOTQyZWZkMC4uZTY4M2E4
MjFiMjJiY2ZlNTZiMzllZjQxYTExZjFjMmRkYmQ2NjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwg
UGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFu
LmNvZGVCbG9jaygpKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5h
dGl2ZSgpKQotICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkK
KyAgICAsIG1fc3NhQ0ZHKG1ha2VVbmlxdWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRN
YWNoaW5lTG9jYWwoMCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAg
ICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3Rlcmlu
ZykKQEAgLTg2LDggKzg2LDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAg
ICAKICAgICBtX2hhc0RlYnVnZ2VyRW5hYmxlZCA9IG1fcHJvZmlsZWRCbG9jay0+d2FzQ29tcGls
ZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29k
ZUdlbmVyYXRpb24oKTsKICAgICAKLSAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZsb3dJbmRleGluZz4oKnRoaXMpOwotICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworICAgIG1faW5k
ZXhpbmdDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7CisgICAgbV9hYnN0
cmFjdFZhbHVlc0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhp
cyk7CiAKICAgICByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkp
OwogICAgIHRoaXMtPnN0cmluZ1N0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBGdWxsQnl0ZWNvZGVMaXZl
bmVzcyYgR3JhcGg6OmxpdmVuZXNzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGlmIChp
dGVyICE9IG1fYnl0ZWNvZGVMaXZlbmVzcy5lbmQoKSkKICAgICAgICAgcmV0dXJuICppdGVyLT52
YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxp
dmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gbWFrZVVuaXF1
ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlz
aXMoKS5jb21wdXRlRnVsbExpdmVuZXNzKGNvZGVCbG9jaywgKmxpdmVuZXNzKTsKICAgICBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0ID0gKmxpdmVuZXNzOwogICAgIG1fYnl0ZWNvZGVMaXZl
bmVzcy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGxpdmVuZXNzKSk7CkBAIC0xMTE1LDcgKzExMTUs
NyBAQCBCeXRlY29kZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUtpbGxzLmVuZCgpKQogICAgICAgICByZXR1cm4g
Kml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBr
aWxscyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVLaWxscz4ga2lsbHMgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7
CiAgICAgY29kZUJsb2NrLT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0ZUtpbGxzKGNvZGVCbG9j
aywgKmtpbGxzKTsKICAgICBCeXRlY29kZUtpbGxzJiByZXN1bHQgPSAqa2lsbHM7CiAgICAgbV9i
eXRlY29kZUtpbGxzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUoa2lsbHMpKTsKQEAgLTE1NTMsNyAr
MTU1Myw3IEBAIENQU0NGRyYgR3JhcGg6OmVuc3VyZUNQU0NGRygpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFt
X2Nwc0NGRykKLSAgICAgICAgbV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4oKnRo
aXMpOworICAgICAgICBtX2Nwc0NGRyA9IG1ha2VVbmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2Nwc0NGRzsKIH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgQ1BTRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwogICAgIGlmICghbV9jcHNEb21p
bmF0b3JzKQotICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxD
UFNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc0RvbWluYXRvcnM7CiB9CiAK
QEAgLTE1NjksNyArMTU2OSw3IEBAIFNTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FEb21p
bmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNT
QUNvbnZlcnNpb24pOwogICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQotICAgICAgICBtX3NzYURv
bWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAg
ICAgbV9zc2FEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIENQ
U05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29wcygpCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgZW5z
dXJlQ1BTRG9taW5hdG9ycygpOwogICAgIGlmICghbV9jcHNOYXR1cmFsTG9vcHMpCi0gICAgICAg
IG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0
aGlzKTsKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPENQU05hdHVyYWxM
b29wcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1
ODcsNyArMTU4Nyw3IEBAIFNTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZVNTQU5hdHVyYWxM
b29wcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgZW5zdXJlU1NB
RG9taW5hdG9ycygpOwogICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fc3Nh
TmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsK
KyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPFNTQU5hdHVyYWxMb29wcz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1OTYsNyAr
MTU5Niw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiAgICAg
Ly8gV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSB0byB3b3JrIG92ZXIg
Q1BTLCBidXQgdG9kYXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4KICAgICBSRUxFQVNFX0FTU0VS
VChtX2Zvcm0gPT0gU1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9i
YWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAg
ICAgICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIApAQCAtMTYwNCw3ICsxNjA0LDcgQEAgQmFj
a3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNE
b21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNEb21p
bmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0
dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE2MTIsNyArMTYxMiw3IEBAIENv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlm
ICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKLSAgICAgICAgbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXM+KCp0aGlzKTsKKyAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG1ha2VV
bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
Y29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNjM5MDQzZTllMjdmYmUwZTBiOTJhYjQ2YTY2
OWJlMTQxMDUwMzM3MC4uZjJiNjY0MDJlM2FkMGU3MmRmY2UwNWI2NWFmM2ZjOTI2ZDAwOWRhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgSklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBoJiBkZmcpCiAgICAgLCBt
X3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcihkZmcubV92bSkKIHsKICAgICBpZiAoVU5MSUtFTFko
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgbV9ncmFwaC5tX3ZtLm1fcGVyQnl0ZWNvZGVQcm9m
aWxlcikpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNhc3Nl
bWJsZXI+KGRmZyk7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxEaXNhc3Nl
bWJsZXI+KGRmZyk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgbV9qaXRDb2RlLT50aWVyVXBJ
bkxvb3BIaWVyYXJjaHkgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnRpZXJVcEluTG9vcEhpZXJh
cmNoeSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIHRpZXJVcEJ5dGVjb2RlIDogbV9ncmFwaC5tX3Bs
YW4udGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMoKSkKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lk
IEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgfQogCiAgICAg
aWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAg
ICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1Rv
Q29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtC
dWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VV
bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIpLCBsaW5rQnVmZmVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hl
Y2soSklUQ29tcGlsZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzdGFja092ZXJm
bG93KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAg
ICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKLSAgICBtX3NwZWN1bGF0
aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3Bl
Y3VsYXRpdmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAKICAgICAvLyBQ
bGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpT
U3RhY2suCiAgICAgSnVtcExpc3Qgc3RhY2tPdmVyZmxvdzsKQEAgLTQwMiw5ICs0MDIsOSBAQCB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBtX3NwZWN1bGF0aXZlLT5jcmVhdGVPU1JF
bnRyaWVzKCk7CiAgICAgc2V0RW5kT2ZDb2RlKCk7CiAKLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGls
YXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZm
ZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAo
bGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxh
bi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgu
bV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVl
PEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkK
IAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNl
dEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZm
ZXIpKSk7CiB9CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
RnVuY3Rpb24oKQogICAgIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKTsKIAogICAgIC8vID09
PSBGdW5jdGlvbiBib2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KLSAgICBtX3NwZWN1bGF0aXZlID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3BlY3VsYXRp
dmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAgICAgY29tcGlsZUJvZHko
KTsKICAgICBzZXRFbmRPZk1haW5QYXRoKCk7CiAKQEAgLTUwNyw5ICs1MDcsOSBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIHNldEVuZE9mQ29kZSgpOwogCiAgICAg
Ly8gPT09IExpbmsgPT09Ci0gICAgYXV0byBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxM
aW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Cisg
ICAgYXV0byBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZh
aWxUb0FsbG9jYXRlKCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0
ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOworICAgICAg
ICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+
KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbGluaygqbGlu
a0J1ZmZlcik7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1
bmN0aW9uKCkKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRo
QXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oYXJpdHlD
aGVjayk7CiAKLSAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1
ZTxKSVRGaW5hbGl6ZXI+KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5p
cXVlPEpJVEZpbmFsaXplcj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2spKTsKIH0K
IApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVD
b25zdGFudChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIGlm
ICghbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cykKLSAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNv
bnN0YW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFnPGRvdWJsZT4+KCk7CisgICAgICAgIG1fZ3Jh
cGgubV9kb3VibGVDb25zdGFudHMgPSBtYWtlVW5pcXVlPEJhZzxkb3VibGU+PigpOwogCiAgICAg
ZG91YmxlKiBhZGRyZXNzSW5Db25zdGFudFBvb2wgPSBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRz
LT5hZGQoKTsKICAgICAqYWRkcmVzc0luQ29uc3RhbnRQb29sID0gdmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAK
aW5kZXggYmI4MDAyNzRkZGNiNjMwMzQ3ODM3MzdlMzhhZDFlNjFlOWM1ZWEwNC4uYTk0NDA0NzQ1
OTI1MjE4NDViYTMxODgzN2IxM2I5ZjRhMzE3ZWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBjbGFzcyBMaXZlbmVzc0FuYWx5c2lzUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAsIG1fbGl2ZUF0VGFpbChtX2dyYXBoKQogICAgIHsKICAgICAgICAgbV9ncmFwaC5tX2lu
ZGV4aW5nQ2FjaGUtPnJlY29tcHV0ZSgpOwotICAgICAgICBtX3dvcmtzZXQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1JbmRpY2VzKCkpOwor
ICAgICAgICBtX3dvcmtzZXQgPSBtYWtlVW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGlu
Z0NhY2hlLT5udW1JbmRpY2VzKCkpOwogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IDM0YWNiYzFmZTIyZmI3N2YzNTgwZGEzNjc5
OWM4MjE0YmViYzlkNjIuLmI2OTQ5YWEwMzVjMTJmYTc0OWQ1ODBjYzdjMmFlY2NhOGQ5MmMxNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBA
IFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBp
ZiAobV9tb2RlID09IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAgICAgICBib29sIHJlc3VsdCA9
IHBlcmZvcm1PU1JFbnRyeXBvaW50Q3JlYXRpb24oZGZnKTsKICAgICAgICAgaWYgKCFyZXN1bHQp
IHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5h
bGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAg
ICAgfQogICAgICAgICBSVU5fUEhBU0UocGVyZm9ybUNQU1JldGhyZWFkaW5nKTsKQEAgLTM5OCw3
ICszOTgsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCgpCiAgICAgY2FzZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICNpZiBFTkFCTEUoRlRMX0pJVCkK
ICAgICAgICAgaWYgKEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkg
ewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFs
aXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxl
ZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtNDc4LDcgKzQ3OCw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQ
bGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1XYXRj
aHBvaW50Q29sbGVjdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxl
KGRmZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBt
X2ZpbmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAg
ICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCmluZGV4IDg3MTU5NWIxZmYy
NTliZWU0NGM3MWNlMDNkN2Q4ZThiZDY0MzY1MzcuLjUzNGQ2NGI1MzhmYTE4MGFmNDhlODlkNGY4
MjYwMmZiNDVjOTIxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBTU0FDb252
ZXJzaW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigp
OwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwotICAgICAgICAgICAg
YmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2sp
OworICAgICAgICAgICAgYmxvY2stPnNzYSA9IG1ha2VVbmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0
YT4oYmxvY2spOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZW50cnlw
b2ludEluZGV4VG9Bcmd1bWVudHNCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDdjZjQyNTIxYTYyMTE3OGZmODUxMmFm
ZjlmZmZhMzI1MjAwMjI0ZDYuLmNkY2RhYTYwZDg5OGEzYjY2ZDdiMjk4ZjY2ODE4Yzc5ZGM0OGM4
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwKICAgICBSZXN1bHRUeXBl
IHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oCisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KAogICAgICAgICBmcm9t
LCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50
cy4uLik7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlw
ZSwgdHlwZW5hbWUgRGVzdGluYXRpb25UeXBlLCB0eXBlbmFtZSBTb3VyY2VUeXBlLCB1bnNpZwog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAog
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFNvdXJjZVR5cGUgc291cmNl
W251bWJlck9mQXNzaWdubWVudHNdLCBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25bbnVtYmVy
T2ZBc3NpZ25tZW50c10pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5n
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwg
bnVtYmVyT2ZBc3NpZ25tZW50cz4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Ns
b3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIG51
bWJlck9mQXNzaWdubWVudHM+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbiwgc291
cmNlKTsKIH0KIApAQCAtMjQ5LDcgKzI0OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFy
cmF5WzFdID0geyBzb3VyY2UgfTsKICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25BcnJh
eVsxXSA9IHsgZGVzdGluYXRpb24gfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3Np
Z25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VU
eXBlLCAxPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0
b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMT4+KAogICAgICAgICBm
cm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIApAQCAtMjU5LDcg
KzI1OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5WzJdID0geyBzb3VyY2UxLCBz
b3VyY2UyIH07CiAgICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0aW9uQXJyYXlbMl0gPSB7IGRl
c3RpbmF0aW9uMSwgZGVzdGluYXRpb24yIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291
cmNlVHlwZSwgMj4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2Vu
ZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDI+PigKICAgICAg
ICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjA3
YTliNjliNDg4NTViNTZiMWY4MzcyMDY1MWMyYmM3NmUzOGY5ZS4uNzBlNzA1ZDc4NDkzMmQ5ZDNm
YzI3MjQ5MTMyZWZkM2UzZTVkNjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZQogICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0
IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0J3MKICAgICAvLyB3aGF0IHRoaXMgY3VzdG9t
IENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90
CiAgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHku
IDotLwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1h
a2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0R1BSLCBzdG9yYWdl
R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOwogCkBAIC04OTksNyArODk5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZSwgR1BSUmVnIGJh
c2VSZWcsIEdQUlJlZyBwcm9wZXJ0eVJlZykKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBT
bG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAg
ICB9CiAgICAgCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxBcnJh
eWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5p
cXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93UGF0aCwgdGhpcywg
bm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHRlbXBHUFIsIHN0cnVjdHVyZUdQUikpOwogICAg
IAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwpAQCAtMjI0MiwxMCArMjI0MiwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlKiBub2RlKQog
ICAgICAgICB9CiAgICAgICAgIGlmIChwcm90b3R5cGVDaGFpbklzU2FuZSkgewogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhH
ZW5lcmF0b3I+KAogICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVn
cyhzY3JhdGNoUmVnKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbHNlCi0gICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1h
a2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAg
ICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdSZWcsIHNjcmF0
Y2hSZWcpLAogICAgICAgICAgICAgICAgIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAjZW5kaWYK
QEAgLTc2MTksNyArNzYxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVE
aXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwK
ICAgICAgICAgICAgICAgICBrbm93bkxlbmd0aCwgbWluQ2FwYWNpdHkpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBhdXRvIGdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbENyZWF0ZURp
cmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYXV0byBnZW5lcmF0b3Ig
PSBtYWtlVW5pcXVlPENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4o
CiAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGxlbmd0
aEdQUiwgbWluQ2FwYWNpdHkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KGdlbmVyYXRvcikpOwogICAgIH0KQEAgLTg0MzksNyArODQzOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJs
ZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVT
dHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgdGVtcFZh
bHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSKSk7CiAgICAgfQogCkBAIC05MTM1LDcgKzkx
MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJlQ2hlY2soTm9kZSogbm9k
ZSwgR1BSUmVnIGNlbGxHUFIsIEdQUlJlZyB0ZW1wRwogICAgICAgICBHUFJSZWcgc3RydWN0dXJl
R1BSOwogICAgICAgICAKICAgICAgICAgaWYgKHRlbXBHUFIgPT0gSW52YWxpZEdQUlJlZykgewot
ICAgICAgICAgICAgc3RydWN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRo
aXMpOworICAgICAgICAgICAgc3RydWN0dXJlID0gbWFrZVVuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRo
aXMpOwogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLT5ncHIoKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSB0ZW1wR1BSOwpAQCAtMTMxNzYs
NyArMTMxNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJh
eVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgbV9qaXQubXV0YXRv
ckZlbmNlKCptX2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9j
YXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAogICAgICAgICBz
dHJ1Y3R1cmUsCiAgICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSkgOiBzdHJ1Y3R1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGZhMzk2ZjRmMTkyYThi
YjRhZWY5OWQwMzcxOTI0YTJhMzhjNjQ1ZTguLmJhNjEyOGVmZTliYjM2OGZlM2IwNjYyM2I1MWVl
M2VlYWQzYzRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC05NSw4ICs5NSw4IEBAIGNs
YXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
Y2FzZSBQaGFzZU1vZGU6Okdsb2JhbDogewogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogCi0gICAgICAgICAgICBtX3N0YXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7Ci0gICAg
ICAgICAgICBtX2ludGVycHJldGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEludGVycHJl
dGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUpOworICAgICAgICAg
ICAgbV9zdGF0ZSA9IG1ha2VVbmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+KG1fZ3JhcGgpOwor
ICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IG1ha2VVbmlxdWU8QWJzdHJhY3RJbnRlcnByZXRl
cjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0YXRlKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9pc0NvbnZlcmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCkBAIC0x
MDcsOCArMTA3LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgLy8gdG93YXJkcyBiZWxpZXZpbmcgdGhhdCBhbGwgbm9kZXMg
bmVlZCBiYXJyaWVycy4gIk5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlCiAgICAgICAgICAgICAv
LyBzYXlpbmcgdGhhdCB0aGUgbm9kZSBpcyBpbiBhIHBhc3QgZXBvY2guICJOb3QgbmVlZGluZyBh
IGJhcnJpZXIiIGlzIGxpa2Ugc2F5aW5nCiAgICAgICAgICAgICAvLyB0aGF0IHRoZSBub2RlIGlz
IGluIHRoZSBjdXJyZW50IGVwb2NoLgotICAgICAgICAgICAgbV9zdGF0ZUF0SGVhZCA9IHN0ZDo6
bWFrZV91bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKLSAgICAgICAg
ICAgIG1fc3RhdGVBdFRhaWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9k
ZSo+Pj4obV9ncmFwaCk7CisgICAgICAgICAgICBtX3N0YXRlQXRIZWFkID0gbWFrZVVuaXF1ZTxC
bG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0
VGFpbCA9IG1ha2VVbmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgQmxvY2tMaXN0IHBvc3RPcmRlciA9IG1fZ3JhcGguYmxv
Y2tzSW5Qb3N0T3JkZXIoKTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dvcmtsaXN0LmNwcAppbmRleCBlNmMyMjIxZWUzMDE1NDRjNzJhOWNlODM1Zjk4MGZmMzZm
MDI0YjdkLi44ZjkzMDM0YjBjNmY5MGJhNjZmNGJmNWM1M2JlMWI0ZjBmYmE3NGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IGNsYXNzIFdvcmtsaXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1dG9tYXRpY1RocmVhZCB7CiAg
ICAgICAgIGlmIChtX3JlbGF0aXZlUHJpb3JpdHkpCiAgICAgICAgICAgICBUaHJlYWQ6OmN1cnJl
bnQoKS5jaGFuZ2VQcmlvcml0eShtX3JlbGF0aXZlUHJpb3JpdHkpOwogICAgICAgICAKLSAgICAg
ICAgbV9jb21waWxhdGlvblNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvblNjb3Bl
PigpOworICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBtYWtlVW5pcXVlPENvbXBpbGF0aW9u
U2NvcGU+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBB
YnN0cmFjdExvY2tlciYpIG92ZXJyaWRlCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXb3JrbGlz
dDo6ZmluaXNoQ3JlYXRpb24odW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQ
cmlvcml0eSkKIAogdm9pZCBXb3JrbGlzdDo6Y3JlYXRlTmV3VGhyZWFkKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaHJlYWREYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWREYXRhPih0aGlz
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IG1ha2VVbmlxdWU8VGhy
ZWFkRGF0YT4odGhpcyk7CiAgICAgZGF0YS0+bV90aHJlYWQgPSBhZG9wdFJlZihuZXcgVGhyZWFk
Qm9keShsb2NrZXIsICp0aGlzLCAqZGF0YSwgbV9sb2NrLCBtX3BsYW5FbnF1ZXVlZC5jb3B5UmVm
KCksIHJlbGF0aXZlUHJpb3JpdHkpKTsKICAgICBtX3RocmVhZHMuYXBwZW5kKFdURk1vdmUoZGF0
YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9E
aXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuY3BwCmluZGV4IDE5YjExNWM5ZmRkNjdjYmM4YWUxMDljNjQ0NTc0MjhiYTNhZGZh
NTMuLjAwYmRhNjU3Mjc5Y2Y3YTk5ZGJhYjE0OWIwOWM3MDNkNjhiMzViZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKQEAg
LTEzMCw3ICsxMzAsNyBAQCBBc3luY2hyb25vdXNEaXNhc3NlbWJsZXImIGFzeW5jaHJvbm91c0Rp
c2Fzc2VtYmxlcigpCiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCiAgICAgY29uc3Qg
Q1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQ
dHJUYWc+JiBjb2RlUmVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4KQogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PERpc2Fzc2VtYmx5VGFzaz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNr
PiB0YXNrID0gbWFrZVVuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CiAgICAgdGFzay0+aGVhZGVy
ID0gc3RyZHVwKGhlYWRlci5kYXRhKCkpOyAvLyBZdWNrISBXZSBuZWVkIHRoaXMgYmVjYXVzZSBD
U3RyaW5nIGRvZXMgcmFjeSByZWZjb3VudGluZy4KICAgICB0YXNrLT5jb2RlUmVmID0gY29kZVJl
ZjsKICAgICB0YXNrLT5zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwLmNwcAppbmRleCA5MGFlMmY0ZmUwNmExNTJjYWU1Nzg1ZTJjMDNjOTk5
YjY4MzJiYzFiLi5lYzgwZWE2N2IyNTZmODkxOGQ0ODgzYThjNTJiOGYzNzk1ODNhYmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCkBAIC0xNTcs
MTEgKzE1NywxMSBAQCBjb25zdCBBYnN0cmFjdEhlYXAmIEluZGV4ZWRBYnN0cmFjdEhlYXA6OmF0
U2xvdyhwdHJkaWZmX3QgaW5kZXgpCiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5k
ZXgpID49IG1fc21hbGxJbmRpY2VzLnNpemUoKSk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKCFt
X2xhcmdlSW5kaWNlcykpCi0gICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gc3RkOjptYWtlX3VuaXF1
ZTxNYXBUeXBlPigpOworICAgICAgICBtX2xhcmdlSW5kaWNlcyA9IG1ha2VVbmlxdWU8TWFwVHlw
ZT4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBYnN0cmFjdEhlYXA+JiBmaWVsZCA9IG1fbGFy
Z2VJbmRpY2VzLT5hZGQoaW5kZXgsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
IWZpZWxkKSB7Ci0gICAgICAgIGZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEhlYXA+
KCk7CisgICAgICAgIGZpZWxkID0gbWFrZVVuaXF1ZTxBYnN0cmFjdEhlYXA+KCk7CiAgICAgICAg
IGluaXRpYWxpemUoKmZpZWxkLCBpbmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA1ZDA0YjcyZjA0ODMxZDA2MzAyMzA0ZDFlYjdlNDky
OWQ0ODA0MjdmLi40NjM1Y2M5NmY5MTA5MWY3M2YwOGQxZjc1MmIwNDdkMTA1M2JmYjQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
dm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJl
c3VsdCkKICAgICBWTSYgdm0gPSBncmFwaC5tX3ZtOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNh
c3NlbWJseSgpKQotICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKHN0
ZDo6bWFrZV91bmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKKyAgICAgICAgc3RhdGUu
cHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2Vt
Ymxlcj4oKSk7CiAKICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0
ZS5ncmFwaCwgc2FmZXBvaW50UmVzdWx0KTsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBjb21waWxl
KFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4gcmVnaXN0ZXJPZmZzZXRzID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0
T2Zmc2V0TGlzdD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkp
OworICAgICAgICBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5j
YWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CiAgICAgaWYgKHNob3VsZER1bXBEaXNh
c3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBmb3IgIiwgQ29kZUJsb2Nr
V2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiOiAiLCAqcmVnaXN0ZXJP
ZmZzZXRzLCAiXG4iKTsKICAgICBjb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoV1RG
TW92ZShyZWdpc3Rlck9mZnNldHMpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIGNvbXBpbGUo
U3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
bG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKIAotICAgIHN0YXRlLmZpbmFs
aXplci0+YjNDb2RlTGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0
LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgc3RhdGUuZmluYWxpemVy
LT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIAogICAgIGlmIChzdGF0ZS5maW5hbGl6ZXItPmIz
Q29kZUxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgc3RhdGUuYWxs
b2NhdGlvbkZhaWxlZCA9IHRydWU7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBjb21waWxlKFN0
YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAKICAg
ICBCMzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9jLT5yZWxlYXNlUENUb09y
aWdpbk1hcCgpOwogICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5n
KCkpCi0gICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3Vu
aXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZN
b3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7Cisg
ICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29k
ZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1h
cCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7CiAKICAgICBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihzdGF0ZS5wcm9jLT5lbnRyeXBv
aW50TGFiZWwoMCkpOwogICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcAppbmRleCAxNjUzMzUwOWNkMGI0ODJjNzRiY2E2
NzMxODc2M2YyZTBmMDlkZGYxLi5jM2Y5MzM5MmYyNmU2ZmM5NWY5YzJjYzU5MjllZDM0YzZiYzMw
YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIERGRzsKIAogdm9pZCBmYWlsKFN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBzdGF0ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVk
RmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3BsYW4pKTsKKyAgICBzdGF0ZS5ncmFwaC5tX3BsYW4u
c2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3Bs
YW4pKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKaW5kZXggMDg1NDA1NmVjN2QxNjJiMTFjZGMyMWNkNzhmZTE1MTdmN2Fj
ZjNlYi4uOTVkYjY5NjFlOGU5MDc3MGNkNmU1NTY3MzAyMmI0NDc2M2I1ODA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAg
ICAgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOwogCi0gICAgICAgICAg
ICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBtYWtl
VW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwp
OwogICAgICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAg
ICAgICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbWFpblBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCi0gICAgICAgIGxpbmtC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOworICAgICAgICBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5r
QnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAg
aWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgIHN0YXRl
LmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFmMWJhNGJmOTBh
OGZkMGJhMjUwMmM2NDdlMmMxNzE0MTIyZGU3ZDQuLjA5YjM0MjczY2JiN2NhYjQ0Y2Q4NjNlOTli
Mjg1OTBlODdjOTRiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTE1MDgwLDcgKzE1MDgwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGdlbmVyYXRv
ckp1bXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbDxKSVRUaHVua1B0clRhZz4odm0tPmdldENUSVN0dWIobGF6eVNsb3dQYXRoR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5
U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF6eVNsb3dQYXRoPigp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF6eVNs
b3dQYXRoPiBsYXp5U2xvd1BhdGggPSBtYWtlVW5pcXVlPExhenlTbG93UGF0aD4oKTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmtlZFBhdGNoYWJsZUp1bXAgPSBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KGxpbmtCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVKdW1wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTdGF0ZS5jcHAKaW5kZXggNjUzZWM2ZjY5NjA0OWI3NTJhYzI0YTc3OTMxMGQ0YWQ5N2Ji
MDNkYi4uNGE0ODRmYTZkNDY0MzBkNzFlNTcwMDhiZjFlOTlmNmMyNWI4NDg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTYwLDEwICs2MCwxMCBAQCBTdGF0ZTo6
U3RhdGUoR3JhcGgmIGdyYXBoKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPihncmFwaC5t
X3BsYW4pKTsKKyAgICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmlu
YWxpemVyPihncmFwaC5tX3BsYW4pKTsKICAgICBmaW5hbGl6ZXIgPSBzdGF0aWNfY2FzdDxKSVRG
aW5hbGl6ZXIqPihncmFwaC5tX3BsYW4uZmluYWxpemVyKCkpOwogCi0gICAgcHJvYyA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2VkdXJlPigpOworICAgIHByb2MgPSBtYWtlVW5pcXVlPFByb2NlZHVy
ZT4oKTsKIAogICAgIHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAgICAgICAgIFtdIChQcmludFN0
cmVhbSYgb3V0LCBCMzo6T3JpZ2luIG9yaWdpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRleCAyMmQ3ZmQ2NWQ1YTE3NTViNWIyZDNi
NzhkZGE1NWMwZDAwN2UxY2NiLi4wMjFiMGNkYjlkZmFjMThiMzY4NjQyOGE5ODIzZjI4MTEwYmI3
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNw
YWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcApAQCAtODAsNyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2Nh
dG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgQmxvY2tE
aXJlY3RvcnkvTG9jYWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwgIiwgYXR0cmlidXRlcygp
LCAiLCAiLCBzaXplQ2xhc3MsICIuXG4iKTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qmxv
Y2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9yeSA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8
QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3MpOworICAgICAgICBtYWtl
VW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKICAgICBC
bG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0b3J5LmdldCgpOwogICAgIG1f
ZGlyZWN0b3JpZXMuYXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0b3J5KSk7CiAgICAgCkBAIC04
OCw3ICs4OCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93
KHNpemVfdCBzaXplKQogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3RvcnkobG9ja2VyLCBkaXJl
Y3RvcnkpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbEFsbG9jYXRvcj4gdW5pcXVl
TG9jYWxBbGxvY2F0b3IgPQotICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsQWxsb2NhdG9y
PihkaXJlY3RvcnkpOworICAgICAgICBtYWtlVW5pcXVlPExvY2FsQWxsb2NhdG9yPihkaXJlY3Rv
cnkpOwogICAgIExvY2FsQWxsb2NhdG9yKiBsb2NhbEFsbG9jYXRvciA9IHVuaXF1ZUxvY2FsQWxs
b2NhdG9yLmdldCgpOwogICAgIG1fbG9jYWxBbGxvY2F0b3JzLmFwcGVuZChXVEZNb3ZlKHVuaXF1
ZUxvY2FsQWxsb2NhdG9yKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmlu
ZGV4IGEwMWI1YTJiNGFlZmQzZTUyOTY5NzdhNWM4Mzg0MDQyZTVhMjk1NmEuLjk3MTk5ZTE4NmRl
NzJkNzcyNzk3MzVjOWQzYzk5NDBjODVjNDhhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCkBAIC0yODksMTUgKzI4OSwxNSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAs
IG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9vYmplY3RTcGFjZSh0
aGlzKQotICAgICwgbV9tYWNoaW5lVGhyZWFkcyhzdGQ6Om1ha2VfdW5pcXVlPE1hY2hpbmVUaHJl
YWRzPigpKQotICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgIkMiKSkKLSAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKHN0ZDo6
bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQotICAgICwgbV9tdXRhdG9yTWFy
a1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3JhY2VN
YXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fY29u
c3RyYWludFNldChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykp
CisgICAgLCBtX21hY2hpbmVUaHJlYWRzKG1ha2VVbmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCisg
ICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlz
LCAiQyIpKQorICAgICwgbV9tdXRhdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90VmlzaXRv
cj4oKnRoaXMsICJNIikpCisgICAgLCBtX211dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJr
U3RhY2tBcnJheT4oKSkKKyAgICAsIG1fcmFjZU1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFj
a0FycmF5PigpKQorICAgICwgbV9jb25zdHJhaW50U2V0KG1ha2VVbmlxdWU8TWFya2luZ0NvbnN0
cmFpbnRTZXQ+KCp0aGlzKSkKICAgICAsIG1faGFuZGxlU2V0KHZtKQotICAgICwgbV9jb2RlQmxv
Y2tzKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQotICAgICwgbV9qaXRTdHViUm91
dGluZXMoc3RkOjptYWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKKyAgICAsIG1fY29k
ZUJsb2NrcyhtYWtlVW5pcXVlPENvZGVCbG9ja1NldD4oKSkKKyAgICAsIG1faml0U3R1YlJvdXRp
bmVzKG1ha2VVbmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCiAgICAgLCBtX3ZtKHZtKQogICAg
IC8vIFdlIHNlZWQgd2l0aCAxMG1zIHNvIHRoYXQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxv
Y2F0ZSBkb2Vzbid0IGNvbnRpbnVvdXNseSAKICAgICAvLyBzY2hlZHVsZSB0aGUgdGltZXIgaWYg
d2UndmUgbmV2ZXIgZG9uZSBhIGNvbGxlY3Rpb24uCkBAIC0zMDUsOCArMzA1LDggQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxs
YmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKICAgICAs
IG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCiAgICAg
LCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGlt
ZXIodm0pKSkKLSAgICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlx
dWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3RhY2soc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fc2hhcmVkQ29sbGVjdG9y
TWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3NoYXJlZE11
dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKICAgICAsIG1faGVs
cGVyQ2xpZW50KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2Nr
Pjo6Y3JlYXRlKCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25k
aXRpb246OmNyZWF0ZSgpKQpAQCAtMzE0LDcgKzMxNCw3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkcyA9IGhlYXBIZWxwZXJQb29s
KCkubnVtYmVyT2ZUaHJlYWRzKCk7IGkgPCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkczsgKytpKSB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0b3IgPSBtYWtlVW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEpKTsKICAgICAgICAgaWYgKE9w
dGlvbnM6Om9wdGltaXplUGFyYWxsZWxTbG90VmlzaXRvcnNGb3JTdG9wcGVkTXV0YXRvcigpKQog
ICAgICAgICAgICAgdmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogICAgICAg
ICBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVuZCh2aXNpdG9yLmdldCgpKTsK
QEAgLTMyMywxNyArMzIzLDE3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAKICAgICBpZiAoT3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkpIHsKICAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1bGVyKCkpCi0gICAgICAgICAg
ICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0
b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1
ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VUaW1l
TXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtl
VW5pcXVlPFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBXZSBzaW11bGF0ZSB0dXJuaW5nIG9mZiBjb25jdXJyZW50IEdDIGJ5IG1ha2lu
ZyB0aGUgc2NoZWR1bGVyIHNheSB0aGF0IHRoZSB3b3JsZAogICAgICAgICAvLyBzaG91bGQgYWx3
YXlzIGJlIHN0b3BwZWQgd2hlbiB0aGUgY29sbGVjdG9yIGlzIHJ1bm5pbmcuCi0gICAgICAgIG1f
c2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0
b3JTY2hlZHVsZXI+KCk7CisgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTeW5jaHJv
bm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CiAgICAgfQogICAgIAogICAgIGlm
IChPcHRpb25zOjp2ZXJpZnlIZWFwKCkpCi0gICAgICAgIG1fdmVyaWZpZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xlc1RvUmVj
b3JkRm9yVmVyaWZpY2F0aW9uKCkpOworICAgICAgICBtX3ZlcmlmaWVyID0gbWFrZVVuaXF1ZTxI
ZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0NDeWNsZXNUb1JlY29yZEZvclZl
cmlmaWNhdGlvbigpKTsKICAgICAKICAgICBtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5vcHRpbWl6
ZUZvclN0b3BwZWRNdXRhdG9yKCk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCBzaXplX3QgSGVhcDo6
cHJvdGVjdGVkT2JqZWN0Q291bnQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBI
ZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKICAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgKICAgICAgICAgWyZdIChK
U0NlbGwqIGNlbGwpIHsKICAgICAgICAgICAgIHJlY29yZFR5cGUoKnZtKCksICpyZXN1bHQsIGNl
bGwpOwpAQCAtOTA5LDcgKzkwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhl
YXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNv
dW50U2V0PiBIZWFwOjpvYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBpdGVyYXRp
b25TY29wZSwKQEAgLTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFp
bnRzKCkKICAgICAgICAgfSwKICAgICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6OlNlbGRvbUdy
ZXllZCk7CiAgICAgCi0gICAgbV9jb25zdHJhaW50U2V0LT5hZGQoc3RkOjptYWtlX3VuaXF1ZTxN
YXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludD4oKnRoaXMpKTsKKyAgICBtX2NvbnN0cmFpbnRTZXQt
PmFkZChtYWtlVW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhpcykpOwogfQog
CiB2b2lkIEhlYXA6OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6dW5pcXVlX3B0cjxNYXJraW5n
Q29uc3RyYWludD4gY29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCmluZGV4IDViNjljZDVlMzVmNjJiNTA2NjNhOWNiZGM3Mzk0ZDFiZDY3YWQxZDguLmUx
ZWI2Yzc4MzNkNDg1ODcxYTljNTMzY2ZkNDczMWM3NWY5YjExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtMjE3LDcgKzIxNyw3IEBAIGlubGluZSB2b2lk
IEhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKIGlubGluZSBIYXNo
U2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4mIEhlYXA6Om1hcmtMaXN0U2V0KCkKIHsKICAgICBp
ZiAoIW1fbWFya0xpc3RTZXQpCi0gICAgICAgIG1fbWFya0xpc3RTZXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsKKyAgICAgICAgbV9tYXJrTGlz
dFNldCA9IG1ha2VVbmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOwogICAg
IHJldHVybiAqbV9tYXJrTGlzdFNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA1YjlhYzg5ZGFiZjA0YTA2MTRk
YzEwZmJiYWYxNmMwZjRhNDk5ZjdlLi4yZDJiYzhmYjliMjdmZTlmOWIxYjViZTU0Y2I3NTFmODNl
MGQzZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNo
b3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNo
b3RCdWlsZGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxkZXI6
OmJ1aWxkU25hcHNob3QoKQogCiAgICAgUHJldmVudENvbGxlY3Rpb25TY29wZSBwcmV2ZW50Q29s
bGVjdGlvblNjb3BlKG1fcHJvZmlsZXIudm0oKS5oZWFwKTsKIAotICAgIG1fc25hcHNob3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhlYXBTbmFwc2hvdD4obV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNo
b3QoKSk7CisgICAgbV9zbmFwc2hvdCA9IG1ha2VVbmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2Zp
bGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKICAgICB7CiAgICAgICAgIG1fcHJvZmlsZXIuc2V0
QWN0aXZlU25hcHNob3RCdWlsZGVyKHRoaXMpOwogICAgICAgICBtX3Byb2ZpbGVyLnZtKCkuaGVh
cC5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IGI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBm
MTBjZGQ2ZTliYjE5OGZkYTkuLjdjMmVkMjQwMmZkNzMwMWZjMDk5YThkZmI1ZDNjMzM2YWVhZDEx
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+
KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9jCiAgICAgYXV0byYgYml0c1B0clJlZiA9
IG1fYml0c1tibG9ja0luZGV4XTsKICAgICBhdXRvKiBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsK
ICAgICBpZiAoIWJpdHMpIHsKLSAgICAgICAgYml0c1B0clJlZiA9IHN0ZDo6bWFrZV91bmlxdWU8
Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKKyAgICAgICAgYml0c1B0clJl
ZiA9IG1ha2VVbmlxdWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKICAg
ICAgICAgYml0cyA9IGJpdHNQdHJSZWYuZ2V0KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZl
bmNlKCk7CiAgICAgICAgIG1fYmxvY2tzV2l0aEJpdHNbYmxvY2tJbmRleF0gPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IGQ1MTAwMGViYTg3
ZjMxZGU0ODFiZWQwOGE1ZjJmZWQ4YTYzOWZmOTkuLmNkM2U3ZTU2MTU0NTY2ZGNmOGMxNTE2M2Ex
NWI3MmYyNzY4ZjI5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHMKICAgICAsIG1f
c2l6ZShzaXplKQogICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRv
cigmbV9kaXJlY3RvcnkpCi0gICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgbV9pc29BbGln
bmVkTWVtb3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4o
KSkKIHsKICAgICBpbml0aWFsaXplKGhlYXBDZWxsVHlwZSwgbV9pc29BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTZXQuY3BwCmluZGV4IGIzYWJkMmM1MjI0ZmNlM2U1Y2UxMmM0ZjE2M2Vk
NDgyM2RhZTY5OGUuLjE3ODBjMDhhNDcwZjI3NjIzMTYzN2VmNjgxMTdjOWE0ZTMyYzFkMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNl
dC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6ZGlkU3Rh
cnRNYXJraW5nKCkKIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKENTdHJpbmcgYWJi
cmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYp
PiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSwgQ29uc3RyYWludENv
bmN1cnJlbmN5IGNvbmN1cnJlbmN5LCBDb25zdHJhaW50UGFyYWxsZWxpc20gcGFyYWxsZWxpc20p
CiB7Ci0gICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdU
Rk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiks
IHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOworICAgIGFkZChtYWtlVW5p
cXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdU
Rk1vdmUobmFtZSksIFdURk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwg
cGFyYWxsZWxpc20pKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQuY3BwCmluZGV4IDgyYmUzYmJiNDRjYjZjNTc3NmI4ZWNmN2Zh
MGM5NDBkNWQ1YTU4MjUuLjUzYTkxYTIzYzFkODkyOTE4ZWU0Mjk0MWE2NWY1Mjc4NjdkNDMzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3MKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGFyZ3VtZW50cy0+
Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwotICAgIG1fY29uc29sZUFnZW50LT5h
ZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIGV4ZWMpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CiB9CiAKIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpjb3VudChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbGFiZWwpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25z
b2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
ICAgICAgICAgICAgIGlmIChleGlzdGluZ1RpdGxlID09IHRpdGxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KICAgICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJV
bm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwi
IiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgIG1fY29uc29s
ZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAgICAgICBtX2NvbnNvbGVB
Z2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRp
dGwKIAogICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2Nh
bGl6YXRpb24/CiAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJv
ZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBkb2Vz
IG5vdCBleGlzdCIpOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0
ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJv
ZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzdGFydENvbnNvbGVQcm9maWxlKCkKQEAgLTE4NSw3
ICsxODUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChF
eGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKQogdm9pZCBKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ6Ondhcm5VbmltcGxlbWVudGVkKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogewog
ICAgIFN0cmluZyBtZXNzYWdlID0gbWV0aG9kICsgIiBpcyBjdXJyZW50bHkgaWdub3JlZCBpbiBK
YXZhU2NyaXB0IGNvbnRleHQgaW5zcGVjdGlvbi4iOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgbWVzc2FnZSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCBjOGRhNTJlZmQxM2M0OTFjY2FlNjM5NWUwNzRjNDY0NGU3MGNjMGE3Li5iZGJk
MzFkNjMxMmIyYzA1NmQ3YzQ3ODE1ZGM2MTVkMTIyNmQ5MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAg
IDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KG1ha2VVbmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNy
ZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihnbG9iYWxPYmplY3QpCiAgICAgLCBt
X2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKQEAgLTcxLDExICs3MSwx
MSBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iagogewogICAgIGF1dG8gY29udGV4dCA9IGpzQWdl
bnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKICAgICBtX2NvbnNv
bGVBZ2VudCA9IGNvbnNvbGVBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZShjb25zb2xlQWdlbnQpKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50PihtX2NvbnNvbGVBZ2VudCk7CisgICAgbV9j
b25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1f
Y29uc29sZUFnZW50KTsKIAogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogfQpA
QCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpyZXBvcnRBUElFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlCiAgICAgICAgICAgICBD
b25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFN0cmluZygp
LCAwLCAwKTsKICAgICB9CiAKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29s
ZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3Zl
KGNhbGxTdGFjaykpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFj
aykpKTsKIH0KIAogQ29uc29sZUNsaWVudCogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25zb2xlQ2xpZW50KCkgY29uc3QKQEAgLTI4MCw3ICsyODAsNyBAQCBJbnNwZWN0b3JB
Z2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JB
Z2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29u
dGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0KTsKKyAgICAgICAgYXV0byBp
bnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOwogICAg
ICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1f
YWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CiAgICAgfQpAQCAtMjkxLDcg
KzI5MSw3IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlRGVidWdnZXJBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2RlYnVnZ2Vy
QWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAg
ICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKKyAgICAgICAgYXV0byBkZWJ1
Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KGNvbnRl
eHQsIG1fY29uc29sZUFnZW50KTsKICAgICAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJB
Z2VudC5nZXQoKTsKICAgICAgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KG1fZGVidWdnZXJBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3Zl
KGRlYnVnZ2VyQWdlbnQpKTsKQEAgLTMyNywyMCArMzI3LDIwIEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGVuc3VyZUlu
c3BlY3RvckFnZW50KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxK
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4oY29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CiAKICAg
ICBlbnN1cmVEZWJ1Z2dlckFnZW50KCk7CiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRl
eHQpOworICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CiAgICAgbV9jb25zb2xlQ2xpZW50LT5z
ZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0
KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIp
KTsKIAotICAgIGF1dG8gaGVhcEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIZWFw
QWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8gaGVhcEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3JIZWFwQWdlbnQ+KGNvbnRleHQpOwogICAgIGlmIChtX2NvbnNvbGVBZ2VudCkKICAgICAgICAg
bV9jb25zb2xlQWdlbnQtPnNldEluc3BlY3RvckhlYXBBZ2VudChoZWFwQWdlbnQuZ2V0KCkpOwog
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGhlYXBBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFn
ZW50Pihjb250ZXh0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwCmluZGV4IGMwYjVjOWFhZDE4YzA4Y2VkZGMzNjk2NmJmMDQ2ODUxNDE3NjI2NDMuLjQx
N2U3NzVmYjgwMjQ5YzA0MDMxMzdhODI3ODIxMzczMjdkMzMyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBJbnNwZWN0b3JBZ2Vu
dDo6SW5zcGVjdG9yQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJJbnNwZWN0b3IiX3MpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52
aXJvbm1lbnQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA3
ZWRiYzgwNjYwZjM2ZDZhODFhYTkxZmI4ZmEzZmRkZGVkYWU2ZjI2Li41ZDI0YzY5ZTZiZjQ1ZDcy
ZmIwYmRhNTNiNGM0NTc1OTg2MTNjYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2Fn
ZXNTdGVwID0gMTA7CiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNvbnNv
bGUiX3MpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2Ny
aXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8
Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihD
b25zb2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKSkKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6c3RhcnRUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQg
YW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5n
IHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgYWxyZWFkeSBleGlz
dHMiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zv
ckNvbnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENh
bGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICB9CiB9CiAKQEAgLTE1OSwxNCArMTU5
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpsb2dUaW1pbmcoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5k
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9y
IGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1l
ciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdh
cm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92
ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNU
aW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9u
aWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobGFiZWwsICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxp
c2Vjb25kcygpLCAzKSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFr
ZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2Fn
ZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShhcmd1
bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZWwpCkBAIC0xODQsMTQgKzE4NCwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3Rv
cFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAgIGlm
IChpdCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0g
dG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5n
ID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0g
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25k
cyBlbGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
V2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVz
c2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxT
dGFjaykpKTsKIAogICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIH0KQEAgLTIyNCw3ICsyMjQsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgbGFiZWwpCiAgICAgLy8gRklYTUU6IFdlYiBJbnNwZWN0b3Igc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgVUkgZm9yIGNvdW50ZXJzLCBidXQgZm9yIG5vdyB3ZSBqdXN0IGxvZyBh
biB1cGRhdGVkIGNvdW50ZXIgdmFsdWUuCiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobGFiZWwsICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbAogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkgewogICAgICAgICAvLyBGSVhN
RTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAg
ICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIkNvdW50ZXIgXCIiLCBsYWJlbCwgIlwiIGRv
ZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
bWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZTVmMjQ4MmEzY2FhMDhh
YTgxNjQ1ZmE4Yzc5YzUyOWJhNDM4MGQwYS4uMjVmMWQzZTcyODFjNmIwZmI4MzMwZmYxMzc4NzM2
NDNlYmM2MGVkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oY29u
c3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW8KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIkRlYnVnZ2VyIl9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZl
cihjb250ZXh0LmVudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwCmluZGV4IGI1MzVmZjYxOTJhYWNlZmM3OWI0ZjZjZDkzZGYxMjAxYTM3
MTQ4YWMuLjU4MmMzNWQzNjdkZmUxZTRmN2RjNGU5YTU2ODRkY2EyYTRlM2I0YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIEluc3BlY3RvckhlYXBBZ2VudDo6SW5zcGVjdG9ySGVhcEFnZW50KEFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSGVhcCJfcykKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEhlYXBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZpcm9ubWVu
dChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAppbmRleCA1NmZjMWI3OThkYTBlZWVlYTAyMzMxZWQ1MjU0YTk1MDIxMDA1
ODc0Li5jYmFkODFkNjk5NDQwYTczM2IwYWYwNDE2OTRhODZjYTllNmU4ZWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6SW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIlNjcmlwdFByb2ZpbGVyIl9zKQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoU2NyaXB0UHJvZmlsZXJCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwCmluZGV4IDNhY2E0MTA1MTBmZTUwMGYwNWJmYmFhYzQ2N2ZmZGFjY2Iy
MWM1MjQuLjkzNTA2OGM3YWUxMTk3MTA1NDRjMWY3Njc5ODIyZGZiNjZlNTZiODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdl
dEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIEluc3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9u
dGVuZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlz
cGF0Y2hlcikKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGFyZ2V0Il9zKQotICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5jcHAKaW5kZXggZTMyOWEzYjQzY2Q2MDk2NWQ5Zjc3ODVhNDgyMjAxMWFiMzY2ZmE1My4u
OWIzZjM3OWQ1ZTVhNDkwZGJlMzc1YzcyYWM5OWZhNzIwYjlhY2NlZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVk
U2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KEVycm9yU3RyaW5nJiBlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpicmVh
a3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZz
dGF0ZSksIDApKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3Rh
dGUpLCAwKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IDE0NWQwNTE2YjhlMzk2ODg3OGQ5MmNiNTk0
YWE1OTliYWZhMzlkMzIuLjNiN2MzZTIxZDMxYzFjMmY1YjZkMWJhMGMxNmY0ODg4M2U2Y2YzMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChKU0FnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9nbG9iYWxPYmplY3QoY29u
dGV4dC5pbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCA3MTAxNjY4YTk3Yzg3NDQ4
MTJmNDY1NmYxNmUwYjdkZDU5NGYxYTYwLi5jYzk2NDAwNTY3OWRiZmNkNGZlMDI5MDZiYzkzYzIz
YjJjODJlY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludC5jcHAKQEAgLTE0NCwxMSArMTQ0LDExIEBAIE9wdGlvbmFsPENvbm5lY3Rp
b25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9y
bVNvY2tlCiAKICAgICBTb2NrZXQ6OnNldHVwKHNvY2tldCk7CiAKLSAgICBhdXRvIGNvbm5lY3Rp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKKyAgICBhdXRvIGNv
bm5lY3Rpb24gPSBtYWtlVW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKIAogICAgIGNvbm5l
Y3Rpb24tPnBvbGwgPSBTb2NrZXQ6OnByZXBhcmVQb2xsaW5nKHNvY2tldCk7CiAgICAgY29ubmVj
dGlvbi0+c29ja2V0ID0gc29ja2V0OwotICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVzc2FnZVBhcnNlcj4oaWQsIFNvY2tldDo6QnVmZmVyU2l6ZSk7CisgICAgY29u
bmVjdGlvbi0+cGFyc2VyID0gbWFrZVVuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpC
dWZmZXJTaXplKTsKICAgICBjb25uZWN0aW9uLT5wYXJzZXItPnNldERpZFBhcnNlTWVzc2FnZUxp
c3RlbmVyKFt0aGlzXShDb25uZWN0aW9uSUQgaWQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsK
ICAgICAgICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KQogICAgICAgICAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JFdmVudChpZCwgV1RGTW92ZShkYXRhKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCmlu
ZGV4IDcwZjJkN2E0ODEzNDcwZjgxMzczMmIzYjk3N2I1YjczYTQxOTYwYjUuLjMyMDQwMGZkNWIz
Y2RiMmM0YjE1ZGJkYzkzMDQ2YmJmZDAwY2FkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50PiBjcmVhdGUoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCogaW5zcGVjdG9yQ2xp
ZW50LCBjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFt
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50PihpbnNwZWN0b3JDbGllbnQsIG5hbWUpOwogICAgIH0KIAogICAgIFJlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50KFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQqLCBjb25zdCBj
aGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMu
cHkKaW5kZXggNjZmOWZkMmRjNDcwZDIxZjRkZTU3ZGU4MjhjMTU5NDQ1NjcxMjNiYi4uZmE1MDZh
NjFlOTliMzlhODc0NmUwY2U1YmUwZDZhYmMwYjBhNGU5NCAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVt
cGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM4LDggKzEzOCw4IEBAIGNs
YXNzIE9iakNHZW5lcmF0b3JUZW1wbGF0ZXM6CiAgICAgW18ke3ZhcmlhYmxlTmFtZVByZWZpeH1I
YW5kbGVyIHJlbGVhc2VdOwogICAgIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyID0gW2hh
bmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRl
cm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBt
YWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7
ZG9tYWluTmFtZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVB
Z2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3Jt
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dAppbmRleCA4ODQyYzllYjY5NzU2Y2U2MTQ3ZWM0YzJkOTdiZjcyYzdmMzUyMjNhLi5lMDcyZmFi
MjIxMjljYWY2NGEyMmY2NGVmMzRlMWUwOGFmYTcyODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRp
b25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTc3MSw4ICs3NzEsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25l
dHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250
cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwg
V1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4
dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGE3MTRmYjEzMTgzMjkz
ZDE4MzJmYzU4MWU2YzUzMzc4NjgwMmQ1NzIuLmMwZTE3MzM3ZmQ0YTc5ODgzMGU4NWQyOWU4NWQ4
ZWQzMDIwY2E3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb24tcmVzdWx0CkBAIC0xMTg5LDggKzExODksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9kYXRhYmFzZUhhbmRs
ZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
PihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdU
Rk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRy
YUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CmluZGV4IDUzYmQ1NTNiN2JhNzRkZGQyOWUyNTUxY2MwYjg0ZmE0MzA3MTRjYWUu
LmFlZDA3Yjc1ZThiODg4ZGQ1OTMzOTBhZmEyMWQyYzg5MGRkZmM1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEwNjgsOCArMTA2OCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RhdGFiYXNl
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBB
bHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVy
bmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxl
ciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWls
YWJpbGl0eS5qc29uLXJlc3VsdAppbmRleCA2NzhjNmFhYTg1YWNhMzg0MjQ4Yjk5MjkwMzRjY2Yw
OTQxMThkZWU3Li4xYWRjYmQzZmQyYWNiOWNhMTQ2MWMzMDhlNDVjNDkyZWMzZTAzMjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKQEAgLTc4Miw4ICs3ODIsOCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZG9tYWluQUhhbmRsZXIgcmVsZWFzZV07CiAg
ICAgX2RvbWFpbkFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5BQmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkEiX3MsICpfY29udHJv
bGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFw
cGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC04MDAsOCAr
ODAwLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkJIYW5kbGVy
IHJlbGVhc2VdOwogICAgIF9kb21haW5CSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0
b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRl
QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFp
bkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPj4o
IkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9y
RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5CQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5C
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKaW5kZXggZjZjNWVkY2NiOTI4NWFmNDhjNmRlYjk4NDIyYTcyMzZiODcwMmQ0ZS4u
YTNlMjdkZjM4Y2VhZmJiM2M0NTFlMTNiNjExOWUyZTU0YzNkMmE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0x
MDM5LDggKzEwMzksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29y
azFIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRh
aW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVl
PE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0
ZXJuYXRlQWdlbnQpKTsKIH0KIApAQCAtMTA1Nyw4ICsxMDU3LDggQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBbX25ldHdvcmszSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29y
azNIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazMiX3MsICpfY29u
dHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0
ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9s
bGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBw
ZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1y
ZXN1bHQKaW5kZXggZWMwYzEwYjRkYjQ2YjNiYzA4Mzg2ZmZiNzNjZmZmOTkwODZiZjA2NC4uYWJm
YjZlMTUzNzM2ZTdkNDZiY2RiMGNiZjM1NzliM2ViZDA5YzVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1
bHQKQEAgLTgxNSw4ICs4MTUsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
Y29tbWFuZERvbWFpbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2NvbW1hbmREb21haW5IYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hl
cj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFp
biJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
Pj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRl
cm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggMzBlODJjNWExNzY2MjhjZWJiZGJi
MGZjNDEwZWU5NmM4YTQ4ZGM0OS4uNmJkZWZmMTg3OTdjMTY5NWE4MWZiMTU2NDA2ZGUzOWM5Zjg4
MTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3Vh
cmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdApAQCAtNzk4LDggKzc5OCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmsx
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBB
bHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVy
bmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxl
ciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9u
cy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCA4ODQyYzllYjY5NzU2Y2U2MTQ3
ZWM0YzJkOTdiZjcyYzdmMzUyMjNhLi5lMDcyZmFiMjIxMjljYWY2NGEyMmY2NGVmMzRlMWUwOGFm
YTcyODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQK
QEAgLTc3MSw4ICs3NzEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0
d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0
YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERp
c3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURp
c3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9i
akNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8g
YWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVy
Pj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVB
Z2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggODM0MmU1ZmM1ZWZj
YTI4NDlkZmQxMmRiN2FhNGFiNDk4MmI2MWZlOC4uZWY5MDY2OTQzMGJiMTI2ZTY4OWJiYzdiZmZh
OWJiMGY1NDQ3MzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNjU0LDcgKzY1
NCw3IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0KQogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wRGlzYXNz
ZW1ibHkoKSB8fCAobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIE9wdGlvbnM6OmRpc2Fz
c2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKSkpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29kZUJsb2NrKTsKKyAgICAgICAg
bV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2sp
OwogICAgIGlmIChVTkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7CiAgICAg
ICAgIG1fY29tcGlsYXRpb24gPSBhZG9wdFJlZigKICAgICAgICAgICAgIG5ldyBQcm9maWxlcjo6
Q29tcGlsYXRpb24oCkBAIC05MDEsNyArOTAxLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjps
aW5rKCkKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVp
bGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChz
dGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmln
aW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBD
VG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9w
Y1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOwogICAgIAogICAgIENvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hC
dWZmZXIsIEpTRW50cnlQdHJUYWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAKaW5kZXggMTZiZjcwZDgwMTc0NDIzMDUwMmEyZDhiMTk3Y2Q0MDFjODAyNGYzOC4uNWJkZjgz
MDQ2NTA0Mzk5NGUxMWJhZmZlZDUyYmI3ODVjMWJhMGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IEpJVFRodW5rczo6SklUVGh1bmtzKCkKLSAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChzdGQ6
Om1ha2VfdW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCisgICAgOiBtX2hvc3RGdW5jdGlv
blN0dWJNYXAobWFrZVVuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMzg4ZmIwZTYyNzA4YjM0ZWNiOTcx
ZTk0NmI0NmIxOTNjNGNhZTNiLi44ZjlhODY0ZTRmZTg2MjZhMWZlZmMwYzMwN2M5ZTQ2NTY2MmY1
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwOTIsNyArMTA5
Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
bEZyYW1lU2h1ZmZsZXI+IGZyYW1lU2h1ZmZsZXI7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5mcmFt
ZVNodWZmbGVEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxs
KCkpOwotICAgICAgICBmcmFtZVNodWZmbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRnJhbWVT
aHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOworICAg
ICAgICBmcmFtZVNodWZmbGVyID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1Ykpp
dCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgICAgIC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGNh
bGxlZSBpcyBhIGNlbGwsIGFuZCB3ZSBjYW4KICAgICAgICAgLy8gdXNlIHRoZSBhZGRpdGlvbmFs
IHJlZ2lzdGVyIHRoaXMgYnV5cyB1cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzY4MTdlMDQ1
ZjU2N2U5ZWQzYTBlNTk1N2QyNWU2Mzc5ODU2NWZhZS4uNWFiMDBlZjdmZTU5MzFmNzQ2MjRmZTdj
MWYxYjBhYzQ2NzFjMDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI5NjksNyArMjk2OSw3
IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIs
IGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAg
ICAgICAgIGlmIChvcHRpb25zLm1fcHJvZmlsZSAmJiAhdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVy
KQotICAgICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZtKTsKKyAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQ
cm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CiAKICAgICAgICAg
Z2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1bWVudHMpOwogICAgICAg
ICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQob3B0aW9ucy5tX2VuYWJs
ZVJlbW90ZURlYnVnZ2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggZjhkYmU3MTk2ZjExMTcxNmQwYTU4ZjdmNTdlM2Y4ZjY3YjdhMmFjZi4uYTE2NGZkOTAz
ZjM2ZTk0MjBhNzM2NGVmNDI3YzZjMmZmZTMyMmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUKICAgICAsIG1faW1tZWRpYXRlUGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkluU3Rh
dGVtZW50KGZhbHNlKQogICAgICwgbV9kZWJ1Z2dlclBhcnNlRGF0YShkZWJ1Z2dlclBhcnNlRGF0
YSkKIHsKLSAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWls
dGluTW9kZSwgc2NyaXB0TW9kZSk7CisgICAgbV9sZXhlciA9IG1ha2VVbmlxdWU8TGV4ZXJUeXBl
Pih2bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291
cmNlLCAmbV9wYXJzZXJBcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24uc3Rh
cnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IDY5YWEwYmMxOTBhZjY3ODNkODkyOGMzNTlhYTNiMTBiYjFmYmQ4NzMu
LjBhNWVkZTRiODQyNWNmZDFiMzE3Yzc2YzUxZWE3Mzc4MTc4MGI1MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBTY29wZSB7
CiAgICAgdm9pZCBwdXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFiZWwsIGJvb2wgaXNMb29w
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2xhYmVscykKLSAgICAgICAgICAgIG1fbGFiZWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxMYWJlbFN0YWNrPigpOworICAgICAgICAgICAgbV9sYWJlbHMgPSBt
YWtlVW5pcXVlPExhYmVsU3RhY2s+KCk7CiAgICAgICAgIG1fbGFiZWxzLT5hcHBlbmQoU2NvcGVM
YWJlbEluZm8geyBsYWJlbC0+aW1wbCgpLCBpc0xvb3AgfSk7CiAgICAgfQogCkBAIC0xOTQxLDcg
KzE5NDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgICAgICBlbmRMb2NhdGlvbi5s
aW5lU3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAg
ICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNldCgpOwog
ICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVu
ZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAorICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydENvbHVtbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApp
bmRleCBkZjE3YmU1MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNmMzNhN2VlLi40MTAwMDZkOTI3
NTFjZTk2YjkyY2I5NjI1NjM1ZWE3Y2Y3OGVjNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xODAsNyArMTgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIElkZW50aWZpZXJBcmVuYSYgaWRlbnRpZmllckFyZW5hKCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZICghbV9pZGVudGlmaWVyQXJlbmEpKQotICAgICAgICAg
ICAgICAgIG1faWRlbnRpZmllckFyZW5hID0gc3RkOjptYWtlX3VuaXF1ZTxJZGVudGlmaWVyQXJl
bmE+KCk7CisgICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBtYWtlVW5pcXVlPElk
ZW50aWZpZXJBcmVuYT4oKTsKICAgICAgICAgICAgIHJldHVybiAqbV9pZGVudGlmaWVyQXJlbmE7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCmluZGV4IDA1MDMyYjVkMTMxMDhjMGViNjIwZTlkYWU4
MjBjZWY3YWM3NTMxOGMuLjM1NzExYjVmYTY0MjY5ZTY3NzRhYjcwZTIxZGQ1MDI1MTY5YzhlYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBp
bGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJD
b21waWxhdGlvbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0aW9uQ291bnRlciogQ29tcGls
YXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IoY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpbikKIHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhlY3V0aW9uQ291bnRlcj4mIGNvdW50ZXIgPSBtX2NvdW50
ZXJzLmFkZChvcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvdW50
ZXIpCi0gICAgICAgIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+
KCk7CisgICAgICAgIGNvdW50ZXIgPSBtYWtlVW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+KCk7CiAK
ICAgICByZXR1cm4gY291bnRlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAppbmRleCA3MGM3MTQ3MzMyNDQ0MDgwNzg3OTM0MDE5ODY2NzNjOTdlMWVhODNk
Li5hNjRkZTNmZGQ2NjI1NTE4YWM1ZDEyNmNlYWM3OGI2ZjIxMjVhNGZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gZ2V0U3RhY2tUcmFjZShFeGVjU3RhdGUqIGV4ZWMs
IFZNJiB2bSwgSlNPYmoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzaXplX3QgZnJh
bWVzVG9Ta2lwID0gdXNlQ3VycmVudEZyYW1lID8gMCA6IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0YWNrRnJhbWU+PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+
IHN0YWNrVHJhY2UgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKICAgICB2bS5p
bnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShvYmosICpzdGFja1RyYWNlLCBmcmFtZXNUb1NraXAs
IGdsb2JhbE9iamVjdC0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWUoKSk7CiAgICAgaWYgKCFzdGFj
a1RyYWNlLT5pc0VtcHR5KCkpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYyA9PSB2
bS50b3BDYWxsRnJhbWUgfHwgZXhlYy0+aXNHbG9iYWxFeGVjKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNDM5
ZTIwOWIwYTVmOGZiODI5Yjc5MTk3NTc0ODhjNDE1NjM0MjczZi4uZWYyZTgzMDg3NDFiODg1MmU1
NjIzMjZmOTYyNTdjOWQwMjkzNWQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJl
RGF0YVNsb3coKQogewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgYXV0byByYXJlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgYXV0byByYXJlRGF0YSA9IG1h
a2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmFyZURhdGEtPm1fbGluZUNvdW50ID0gbGluZUNv
dW50KCk7CiAgICAgcmFyZURhdGEtPm1fZW5kQ29sdW1uID0gZW5kQ29sdW1uKCk7CiAgICAgcmFy
ZURhdGEtPm1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgK
aW5kZXggNDYyMzY0MWM1OThlM2ViYjVmYmE2YmMwMjM3MjY0ZTUwNTJmZDE3OS4uNTJiMjhiMTNj
N2UyZTI1ZDIxYmJiYWIzYWQzMWQ1YjZiYzBjZGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGNs
YXNzIEZ1bmN0aW9uUmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50
IGZpbmFsIDogcHVibGljIFdhdGNoCiBpbmxpbmUgV2F0Y2hwb2ludCogRnVuY3Rpb25SYXJlRGF0
YTo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKCFoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKTsK
LSAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CisgICAgbV9h
bGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8QWxsb2NhdGlv
blByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+KHRoaXMpOwogICAgIHJldHVybiBtX2FsbG9jYXRp
b25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMWE1N2VmM2RjZmU5
MTllNzBiMzdmYTdlMzQ4NTRhMTNlOTA1M2ZhZS4uY2M4Nzc2N2YxMDhiY2M0ODNiMzE1ZjExMmZh
OWM1MzQ3ZjUyMDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmluaXQoVk0mIHZtKQogICAgIG1fZGVidWdnZXIgPSAwOwogCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwotICAg
IG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlPigqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CiAgICAg
bV9jb25zb2xlQ2xpZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xlQ2xpZW50KCk7
CiAjZW5kaWYKQEAgLTExNDUsNTcgKzExNDUsNTcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IG1h
a2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2
bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fYXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1f
YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAg
ICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0p
OwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0b3JQcm90b3R5cGUsIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQo
bV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wp
OwotICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQ
cm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc2V0SXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAg
IHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFw
dGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQobV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKLSAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlw
ZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCht
X3N0cmluZ1Byb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCk7Ci0gICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJv
bEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hw
b2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwotICAg
ICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90
eXBlU2V0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBT
ZXRXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0
YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgp
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRX
YXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOwogICAgICAgICBt
X3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIApAQCAtMTIw
Niw3ICsxMjA2LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgdGhpcy0+c3lt
Ym9sUHJvdG90eXBlKCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCBtX3ZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVy
VG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwogICAgIH0KQEAgLTE5MzIsMTAg
KzE5MzIsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dh
dGNocG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3Bl
Y2llc1dhdGNocG9pbnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAgbV9hcnJheVNwZWNpZXNXYXRj
aHBvaW50LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKTsKIAot
ICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBv
aW50KTsKKyAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hw
b2ludCk7CiAgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0
Y2hwb2ludCk7CisgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQgPSBtYWtl
VW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9p
bnQpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggMDQ3YzE2NjUzZTcxYjFhODA2YmQ5ZmM3ZDU2NjQzYTVmOTg4ZjExZS4uODQ1MzVj
YTVjNjAwY2VjYmQ4YjQ3OGY2NWI1M2NkMDdlMzZhODM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01MjEsNyArNTIxLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgewogICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4o
KTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0
YT4oKTsKICAgICB9CiAgICAgICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDFhZjAwMzY1M2NiOGMzZGU2NDNm
OGM0OTEyN2FiYjNlNTUxM2Q1YWQuLjMyN2ZlZDA2YzY3YTViZjExMjUxZjlmNGRlZDgzOWU3MDMz
YzhhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9v
cFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BU
aW1lci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6
UGVyVk1EYXRhOjpzZXRSdW5Mb29wKE1hbmFnZXIqIG1hbmFnZXIsIENGUnVuTG9vcFIKICNlbHNl
CiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdlciYg
bWFuYWdlcikKICAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKLSAgICAsIHRpbWVy
KHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFu
YWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCisg
ICAgLCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PigqcnVuTG9vcCwg
Jm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2sp
KQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGltZXItPnNldFByaW9yaXR5KFJ1
bkxvb3BTb3VyY2VQcmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsKQEAgLTE3Miw3ICsxNzIsNyBA
QCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlciYgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNoYXJl
ZCgpCiAKIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVyVk0oVk0mIHZtKQog
ewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVyVk1EYXRhPigqdGhpcyk7Cisg
ICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKICNpZiBVU0UoQ0Yp
CiAgICAgZGF0YS0+c2V0UnVuTG9vcCh0aGlzLCB2bS5ydW5Mb29wKCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAppbmRleCA1ZjA3OGQyYTUwOWQyYjQ0MjAwZjdhNGFmMzg4MTI0NmNiMmQ1OGE3Li41MjkwMjBk
ZjBmMWRjMmEyODZmODAwYWJhZDlkN2ViN2QzZjhlZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTQ0OCw3ICs0
NDgsNyBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9m
ZnNldCgpCiBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAg
IG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNl
dD4+KCk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4+KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAK
aW5kZXggNTllYzQxYzQ5YWU4MmY0N2Y2OTg2ODA2ZGQ2MTQzOTQ0YTQyYjVkNi4uYjFiYjY3OTE5
OTI2NWFmY2JjY2M4MzY1NmQ4ZDU2ZmM1YjRhMzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUHJvcGVy
dHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVy
KQogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQ
cm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZz
ZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0
ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3Ro
ZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVl
PFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogUHJv
cGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0
eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCkBAIC0xMDcsNyArMTA3LDcgQEAgUHJvcGVy
dHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwg
Y29uc3QgUHJvcGVydHlUYWIKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rv
ci4KICAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3Ro
ZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykK
LSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CiB9CiAKIHZvaWQgUHJvcGVydHlUYWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCAwNzFiMWY2NjMxNWNl
M2FlOGRjZmUxNzVmZjYzNjZmNWM2MzJhZmZjLi43MGU1OTNkNTNlYmRkODFkOGMwODEzYTI5Nzcw
ZTk0MGNlMDQxMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAK
QEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
CiAgICAgbV9udW1TdWJwYXR0ZXJucyA9IHBhdHRlcm4ubV9udW1TdWJwYXR0ZXJuczsKICAgICBp
ZiAoIXBhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcy5pc0VtcHR5KCkgfHwgIXBhdHRlcm4ubV9u
YW1lZEdyb3VwVG9QYXJlbkluZGV4LmlzRW1wdHkoKSkgewotICAgICAgICBtX3JhcmVEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VV
bmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fY2FwdHVyZUdyb3VwTmFt
ZXMuc3dhcChwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMpOwogICAgICAgICBtX3JhcmVEYXRh
LT5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguc3dhcChwYXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFy
ZW5JbmRleCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRl
eCAzOWNkZDkxMTZlMDI3ZTNkYjYwNDBkYmQ4ZmU1MjcwZDJlOTk1ZDhkLi5lOGRhODUyNmU3Yzdl
ODFmYmVhNzVjODg5ODgxNjFiOWFmODkxNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaApAQCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGVuc3VyZVJlZ0V4cEpJVENvZGUo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUpCi0gICAgICAgICAgICBtX3Jl
Z0V4cEpJVENvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7Cisg
ICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUgPSBtYWtlVW5pcXVlPFlhcnI6OllhcnJDb2RlQmxv
Y2s+KCk7CiAgICAgICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2RlLmdldCgpOwogICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmNwcAppbmRleCAyMzdkN2RlNjg4ZGQyMDc2NTAyMDEyMTZjZDBkNTQ2ODBjNDk2ZWFhLi5l
ZTZlMThjZWZkYmU3OWY0YmMyZWIyMTk3ZmY1MzkxMDRlMWY3OTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtNDY5LDcg
KzQ2OSw3IEBAIGF1dG8gU2NyaXB0RXhlY3V0YWJsZTo6ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXBJ
bXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjCiB7CiAgICAgaWYgKGRlc3QpCiAgICAg
ICAgIHJldHVybiAqZGVzdDsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVt
cGxhdGVPYmplY3RNYXA+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFRlbXBsYXRl
T2JqZWN0TWFwPigpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgZGVzdCA9IFdU
Rk1vdmUocmVzdWx0KTsKICAgICByZXR1cm4gKmRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAyOTNjNDY0NzJlNzQ4OTQxY2E5Y2MyYWRhYzE2
YTNkMmRjNWRlZWVjLi4wMWNkMmJkNTQ3ZmUwMmI1MDQ3YTZkNDViM2M4YWQ2ZmQ1MmJkYjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTg1Niw3
ICs4NTYsNyBAQCBXYXRjaHBvaW50U2V0KiBTdHJ1Y3R1cmU6OmVuc3VyZVByb3BlcnR5UmVwbGFj
ZW1lbnRXYXRjaHBvaW50U2V0KFZNJiB2bSwgUHJvcGVydAogICAgIFN0cnVjdHVyZVJhcmVEYXRh
KiByYXJlRGF0YSA9IHRoaXMtPnJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS0+bV9yZXBs
YWNlbWVudFdhdGNocG9pbnRTZXRzKSB7CiAgICAgICAgIHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50
V2F0Y2hwb2ludFNldHMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxTdHJ1Y3R1cmVS
YXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOworICAgICAgICAgICAgbWFrZVVuaXF1
ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOwogICAgICAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IHJhcmVEYXRh
LT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMtPmFkZChvZmZzZXQsIG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
CmluZGV4IDk5YThkOWY3ZGFhYzIxN2U0YzgxZTdlNzEyNmU5YzAyYjM3NGVkM2YuLmQzY2YxODNi
MGY2ZDdjNDg5ODgwMGFiNjhlZTQ4Y2QxMjhmN2ZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAgLTE0MCw3ICsxNDAs
NyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cgogICAgIEFTU0VSVChjb25kaXRpb25TZXQuc3Ry
dWN0dXJlc0Vuc3VyZVZhbGlkaXR5KCkpOwogICAgIGZvciAoT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uIDogY29uZGl0aW9uU2V0KSB7CiAgICAgICAgIGlmIChjb25kaXRpb24uY29u
ZGl0aW9uKCkua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZSkgewotICAgICAg
ICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CisgICAgICAgICAgICBtX29iamVj
dFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2Jq
ZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2
Q29uZGl0aW9uLCB0aGlzKTsKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUlu
ZmVycmVkVmFsdWVXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0LmFkZChjb25kaXRp
b24sIHRoaXMpLT5pbnN0YWxsKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcAppbmRleCAzOTJmMjE3YzE0ZWZhZWI1NDViZjBkNGY3NzkwYzExMjc5
MzJiYzg1Li5hNGE4NzBmYzFmY2FkMzVjNDM5NWYxMDliMjJhOTljNDIwZDc0MTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xMTgsNyAr
MTE4LDcgQEAgY29uc3QgU3ltYm9sVGFibGU6OkxvY2FsVG9FbnRyeVZlYyYgU3ltYm9sVGFibGU6
OmxvY2FsVG9FbnRyeShjb25zdCBDb25jdXJyZW50SlMKICAgICAgICAgICAgICAgICBzaXplID0g
c3RkOjptYXgoc2l6ZSwgb2Zmc2V0LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgKyAxKTsKICAgICAg
ICAgfQogICAgIAotICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9j
YWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsKKyAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBt
YWtlVW5pcXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CiAgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX21hcCkgewogICAgICAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVu
dHJ5LnZhbHVlLnZhck9mZnNldCgpOwogICAgICAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkp
CkBAIC0xNTksNyArMTU5LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3Bl
UGFydChWTSYgdm0pCiAgICAgICAgIHJlc3VsdC0+bV9hcmd1bWVudHMuc2V0KHZtLCByZXN1bHQs
IGFyZ3VtZW50cyk7CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEpIHsKLSAgICAgICAgcmVzdWx0
LT5tX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwor
ICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURh
dGE+KCk7CiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpdGVyID0gbV9yYXJlRGF0YS0+
bV91bmlxdWVJRE1hcC5iZWdpbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgU3ltYm9sVGFi
bGU6OnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiAg
ICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmFyZURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIGZvciAoYXV0byBpdGVy
ID0gbV9tYXAuYmVnaW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKICAgICAgICAgbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoaXRlci0+a2V5LCBUeXBl
UHJvZmlsZXJOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7CkBAIC0yMTAsNyArMjEwLDcgQEAgQ29k
ZUJsb2NrKiBTeW1ib2xUYWJsZTo6cmFyZURhdGFDb2RlQmxvY2soKQogdm9pZCBTeW1ib2xUYWJs
ZTo6c2V0UmFyZURhdGFDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgaWYg
KCFtX3JhcmVEYXRhKQotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1i
b2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1i
b2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX2NvZGVCbG9j
ayk7CiAgICAgbV9yYXJlRGF0YS0+bV9jb2RlQmxvY2suc2V0KCpjb2RlQmxvY2stPnZtKCksIHRo
aXMsIGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
CmluZGV4IDQxMGViNmQ1YWUxNmYzNjAyMjZkYjM4MjNmN2VlODI4ZWNjYWIzODMuLjQxYWNhOWQz
ZDRkOWI4YTU2YWU2ODUyMzBlOGQ2Njc1MmFjMGQwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIFN0cnVjdHVy
ZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb3RvLT5w
cm9wZXJ0eUhhc2goKSk7CiAgICAgfQogCi0gICAgbV9wcm9wZXJ0eUhhc2ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsKKyAgICBtX3Byb3BlcnR5SGFzaCA9
IG1ha2VVbmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiAqbV9w
cm9wZXJ0eUhhc2g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0
ZTJkMGQzMjRhMjRlMjMyY2QxOTUzODkyZWQ4YjBhMzNiMGIwNWVlLi5iNzA5MmMwOGVmNzJiMGVj
YTg5ZmYwYjVjNGJlMWFlNTlhYTFkYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC0yNTIsMTggKzI1MiwxOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQogI2VuZGlm
IC8vIFVTRShDRikKICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCi0gICAgLCBmYXN0TWFsbG9j
QWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3I+KCkpCi0gICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVl
PEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCi0g
ICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFy
eUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0
ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQotICAgICwg
aW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxU
eXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlND
ZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUoc3RkOjpt
YWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1
Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlw
ZShzdGQ6Om1ha2VfdW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQotICAgICwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlx
dWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVH
aWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Io
bWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1Zh
bHVlKSkKKyAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlw
ZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGls
aWFyeSkpKQorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKKyAgICAsIGNlbGxIZWFwQ2VsbFR5
cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZSht
YWtlVW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQorICAgICwgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGU+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxv
Y2tIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVh
cENlbGxUeXBlPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShzdGQ6
Om1ha2VfdW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3
ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlKG1ha2VVbmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkKICNl
bmRpZgogICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJp
bWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgogICAgICwg
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5
IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxv
Y2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2CkBAIC0yOTYsNyArMjk2LDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9hdG9tU3RyaW5nVGFi
bGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUo
KSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAg
ICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCi0gICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0
ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVTdGF0cz4oKSkK
KyAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChtYWtl
VW5pcXVlPFNpbXBsZVN0YXRzPigpKQogICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25N
YXAoKnRoaXMpCiAgICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKICAgICAsIHN5bWJvbEltcGxUb1N5
bWJvbE1hcCgqdGhpcykKQEAgLTMxMiw4ICszMTIsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luaXRpYWxpemluZ09iamVjdENsYXNzKDApCiAj
ZW5kaWYKICAgICAsIG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KDApCi0gICAgLCBtX2NvZGVDYWNo
ZShzdGQ6Om1ha2VfdW5pcXVlPENvZGVDYWNoZT4oKSkKLSAgICAsIG1fYnVpbHRpbkV4ZWN1dGFi
bGVzKHN0ZDo6bWFrZV91bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCisgICAgLCBt
X2NvZGVDYWNoZShtYWtlVW5pcXVlPENvZGVDYWNoZT4oKSkKKyAgICAsIG1fYnVpbHRpbkV4ZWN1
dGFibGVzKG1ha2VVbmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCiAgICAgLCBtX3R5
cGVQcm9maWxlckVuYWJsZWRDb3VudCgwKQogICAgICwgbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJs
ZWQoSXNXYXRjaGVkKQogICAgICwgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50KDAp
CkBAIC00MDcsNyArNDA3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgIExMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7CiAgICAgCiAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZVByb2ZpbGVyKCkpKSB7Ci0gICAgICAgIG1fcGVy
Qnl0ZWNvZGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPigq
dGhpcyk7CisgICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmls
ZXI6OkRhdGFiYXNlPigqdGhpcyk7CiAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gcGF0aE91
dDsKICAgICAgICAgY29uc3QgY2hhciogcHJvZmlsZXJQYXRoID0gZ2V0ZW52KCJKU0NfUFJPRklM
RVJfUEFUSCIpOwpAQCAtNDIzLDcgKzQyMyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlD
b250cm9sbGVyID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOwog
Ci0gICAgbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CisgICAgbV9ieXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CiAK
ICAgICBpZiAoT3B0aW9uczo6dXNlVHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIGVuYWJsZVR5cGVQ
cm9maWxlcigpOwpAQCAtNDQyLDkgKzQ0Miw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKICAg
ICBpZiAoT3B0aW9uczo6dXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRG
dXp6ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPFJhbmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlz
KSk7CisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8UmFuZG9taXppbmdGdXp6ZXJB
Z2VudD4oKnRoaXMpKTsKICAgICBlbHNlIGlmIChPcHRpb25zOjp1c2VEb3VibGVQcmVkaWN0aW9u
RnV6emVyQWdlbnQoKSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxE
b3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAgIHNldEZ1enplckFn
ZW50KG1ha2VVbmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOwogCiAg
ICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAoKSkKICAgICAg
ICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsKQEAgLTQ1Nyw5ICs0NTcs
OSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUgSklUIGlzIGdv
aW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvbXBpbGF0aW9uIHRocmVhZHMuCiAg
ICAgaWYgKGNhblVzZUpJVCgpKSB7Ci0gICAgICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1
ZTxKSVRUaHVua3M+KCk7CisgICAgICAgIGppdFN0dWJzID0gbWFrZVVuaXF1ZTxKSVRUaHVua3M+
KCk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgICAgIGZ0bFRodW5rcyA9IHN0ZDo6bWFrZV91
bmlxdWU8RlRMOjpUaHVua3M+KCk7CisgICAgICAgIGZ0bFRodW5rcyA9IG1ha2VVbmlxdWU8RlRM
OjpUaHVua3M+KCk7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUlu
dGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJ
SW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CkBAIC02MTks
NyArNjE5LDcgQEAgV2F0Y2hkb2cmIFZNOjplbnN1cmVXYXRjaGRvZygpCiBIZWFwUHJvZmlsZXIm
IFZNOjplbnN1cmVIZWFwUHJvZmlsZXIoKQogewogICAgIGlmICghbV9oZWFwUHJvZmlsZXIpCi0g
ICAgICAgIG1faGVhcFByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwUHJvZmlsZXI+KCp0
aGlzKTsKKyAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBtYWtlVW5pcXVlPEhlYXBQcm9maWxlcj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9oZWFwUHJvZmlsZXI7CiB9CiAKQEAgLTEwNDEsOCArMTA0
MSw4IEBAIHN0YXRpYyBib29sIGRpc2FibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCh1bnNp
Z25lZCYgY291bnRlciwgY29uc3QgRnVuYyYgZG9ECiBib29sIFZNOjplbmFibGVUeXBlUHJvZmls
ZXIoKQogewogICAgIGF1dG8gZW5hYmxlVHlwZVByb2ZpbGVyID0gW3RoaXNdICgpIHsKLSAgICAg
ICAgdGhpcy0+bV90eXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlcj4o
KTsKLSAgICAgICAgdGhpcy0+bV90eXBlUHJvZmlsZXJMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5
cGVQcm9maWxlckxvZz4oKnRoaXMpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IG1h
a2VVbmlxdWU8VHlwZVByb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlckxv
ZyA9IG1ha2VVbmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CiAgICAgfTsKIAogICAgIHJl
dHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX3R5cGVQcm9maWxlckVuYWJs
ZWRDb3VudCwgZW5hYmxlVHlwZVByb2ZpbGVyKTsKQEAgLTEwNjEsNyArMTA2MSw3IEBAIGJvb2wg
Vk06OmRpc2FibGVUeXBlUHJvZmlsZXIoKQogYm9vbCBWTTo6ZW5hYmxlQ29udHJvbEZsb3dQcm9m
aWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyID0gW3RoaXNdICgp
IHsKLSAgICAgICAgdGhpcy0+bV9jb250cm9sRmxvd1Byb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93UHJv
ZmlsZXIgPSBtYWtlVW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CiAgICAgfTsKIAogICAg
IHJldHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX2NvbnRyb2xGbG93UHJv
ZmlsZXJFbmFibGVkQ291bnQsIGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpOwpAQCAtMTA4Nyw3
ICsxMDg3LDcgQEAgdm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEoKQogCiB2b2lkIFZNOjpx
dWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNr
PiYmIHRhc2spCiB7Ci0gICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOworICAg
IG1fbWljcm90YXNrUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZn
bG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBWTTo6ZHJhaW5NaWNyb3Rh
c2tzKCkKQEAgLTEyMzAsMTQgKzEyMzAsMTQgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tl
bigpCiB7CiAgICAgaWYgKG1fc2hhZG93Q2hpY2tlbikKICAgICAgICAgcmV0dXJuOwotICAgIG1f
c2hhZG93Q2hpY2tlbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKKyAgICBt
X3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAKICNkZWZp
bmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxs
VHlwZSwgdHlwZSkgXAogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7
IFwKICAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBD
ZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1v
dmUoc3BhY2UpOyBcCiAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXApAQCAtMTI2OCw3
ICsxMjY4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWEKICAgICBJc29TdWJzcGFjZSogVk06
Om5hbWUjI1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0g
ICAgICAgIGF1dG8gc3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3Bh
Y2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFw
Q2VsbFR5cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAg
ICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gJm1fIyNu
YW1lLT5zcGFjZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKaW5kZXggMjRmMThhZDAyZGUyZmVmOTAwOTM0NDg2NDMwYzk4ZmU5NDk0
MjRlZi4uNTMzOTNjYjI1OGY3NDJjNmFjZmRkZWFlYzZjNzE3NTY0NGQ3OTQxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC00
MTcsNyArNDE3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3IgewogICAgIHZvaWQgZW1pdFBhdGNo
cG9pbnQoQmFzaWNCbG9jayogYmFzaWNCbG9jaywgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2gs
IFRtcCByZXN1bHQsIFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgaW5saW5lU2l6ZT4mJiBhcmdzKQog
ICAgIHsKICAgICAgICAgaWYgKCFtX3BhdGNocG9pbnRTcGVjaWFsKQotICAgICAgICAgICAgbV9w
YXRjaHBvaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1f
Y29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigp
KSk7CisgICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBh
dGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hw
b2ludFNwZWNpYWw+KCkpKTsKIAogICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIHBhdGNoLCBBcmc6
OnNwZWNpYWwobV9wYXRjaHBvaW50U3BlY2lhbCkpOwogICAgICAgICBJbnN0IHJlc3VsdE1vdjsK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAKICAgICAgICAgLy8g
RklYTUU6IE1ha2UgYSBoYXNobWFwIG9mIHRoZXNlLgogICAgICAgICBCMzo6Q2hlY2tTcGVjaWFs
OjpLZXkga2V5KGJyYW5jaCk7Ci0gICAgICAgIEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBz
dGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtl
X3VuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CisgICAgICAgIEIzOjpDaGVja1NwZWNp
YWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwobWFrZVVuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CiAKICAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGUgbmVlZCBmb3IgZHVtbXkgdmFsdWVzCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAKQEAgLTIxMzksMTAgKzIx
MzksMTAgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4gQjM6Ok9yaWdpbgogCiBF
eHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VB
bmRDb21waWxlQWlyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25z
dCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlu
a2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5
TW9kZSBtb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBU
aHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250
ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJz
PigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRl
ckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxh
dGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4o
KTsKIAogICAgIEIzOjpQcm9jZWR1cmUgcHJvY2VkdXJlOwogICAgIENvZGUmIGNvZGUgPSBwcm9j
ZWR1cmUuY29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCmluZGV4IDIwOTQxNzdlZDZmMTgzYWI0ZDg2MmVjMjI2N2QzMGYyOGI3ZGU1
YjYuLjE1OGRmOWZhOWYwYzlmNzIxYWMyOTI3NzgxODhkY2YyOGU3MDdmZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE1NTEs
MTAgKzE1NTEsMTAgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBPcmlnaW4KIAog
RXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNl
QW5kQ29tcGlsZShDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29uc3Qg
dWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtl
ZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9yeU1v
ZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rp
b25JbmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2Fz
bUV4Y2VwdGlvbikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJu
YWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5j
dGlvbj4oKTsKIAotICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRl
eHQud2FzbUVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsK
KyAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50
SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBQcm9jZWR1cmUgcHJvY2Vk
dXJlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXgg
Zjk4NWQ1MjNjMmU5M2YzYmQyM2ZiN2M1NzEyYjU4NjhjYzE2YTY4NS4uNTA2ZGY0YmVmZDBkNTY0
MTg0NGNlNTI3OTUxMTVmNjEyODcxNjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxl
dGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1fd2FzbUludGVybmFs
RnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIG1fd2FzbUludGVy
bmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFr
ZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICAgICAgICAgICAgICBGSU5BTElaRV9D
T0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBCQlEgZnVu
Y3Rpb25bJWldICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3Bh
Y2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNw
YWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250
ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwogICAgICAgICAgICAgfQpAQCAtMzI3LDcg
KzMyNyw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+ZW50cnlwb2lu
dC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAg
ICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24tPmVudHJ5cG9pbnQuY29t
cGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAg
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIkVtYmVk
ZGVyLT5XZWJBc3NlbWJseSBlbnRyeXBvaW50WyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRl
eCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhP
ck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlv
bi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAg
ICAgICAgICAgIFdURk1vdmUoY29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5j
cHAKaW5kZXggYzUxM2ZkMmY1MGVkNmZiMTdjMzM4NWVmMjkwNTI3ODE3MzkyMTAzNy4uMGQ3YTAz
YzM2MTI5Y2QxZGUyYzU0ZmZjZDUwMjk1YjU2YzViODk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIE9NR1BsYW46
OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBv
bWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRp
b24+KAorICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21w
aWxhdGlvbj4oCiAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlv
blB0clRhZywgIldlYkFzc2VtYmx5IE9NRyBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIG1fZnVu
Y3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJp
bmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5u
YW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAg
ICAgICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKaW5kZXggMzZkNzRjMTRi
MThjNzA3YjgxMmEwNDg3ZjkxZTI5YzM4NTM5MWRlMi4uNjYwZjk1NjU3MzhiMTBhMzBmM2U3Y2M4
MThhMzJjODU4NzgyMTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVdvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29y
a2xpc3QuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgV29ya2xpc3Q6OldvcmtsaXN0KCkKICAgICBt
X3RocmVhZHMucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzKTsKICAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKLSAgICAgICAgbV90aHJlYWRzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwg
KnRoaXMpKTsKKyAgICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFdv
cmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKIH0KIAogV29ya2xpc3Q6On5Xb3JrbGlz
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggNWRk
NDUxYmVhODRkNTkwYmJmMGZjYjA3NmUyNmZmZDNjYzdiODFhYy4uNzM1MjIwMjg5MzdjNmRhYzFm
YzQ3M2M3ZTRjZGM2NDk1OGNlOGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTVG9XYXNtLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxG
dW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAog
ewogICAgIENDYWxsSGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVu
dHJ5cG9pbnRKSVQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJu
YWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5j
dGlvbj4oKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgIC8vIEZJWE1F
IFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcAppbmRleCA3ZjAzM2ZlYzFjMzY5YTk0MjNiMzNjZjhlYjMzMzRjNTFjZTA4
MDhiLi5jNGI3N2NhZGJlNWVlYTU3M2VjODUyYjk1ZWY2YTc4OWI4Mjg1MzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTE3MDYsNyAr
MTcwNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgICAgICBkdW1wRGlzanVuY3Rp
b24obV9ib2R5RGlzanVuY3Rpb24uZ2V0KCkpOwogI2VuZGlmCiAKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9u
KSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURp
c2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBs
b2NrKTsKICAgICB9CiAKICAgICB2b2lkIGNoZWNrSW5wdXQodW5zaWduZWQgY291bnQpCkBAIC0x
OTI2LDcgKzE5MjYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICB1bnNpZ25lZCBz
dWJwYXR0ZXJuSWQgPSBwYXJlbnRoZXNlc0JlZ2luLmF0b20uc3VicGF0dGVybklkOwogCiAgICAg
ICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gbGFzdFN1YnBhdHRlcm5JZCAtIHN1YnBhdHRl
cm5JZCArIDE7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7
CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURp
c2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAKICAgICAgICAgdW5z
aWduZWQgZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyA9IGJlZ2luVGVybSArIDE7CiAgICAgICAgIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24tPnRlcm1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW5kVGVy
bSAtIGZpcnN0VGVybUluUGFyZW50aGVzZXMgKyAyKTsKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAKICAgICB2b2lkIHJlZ2V4QmVnaW4odW5zaWduZWQgbnVtU3Vi
cGF0dGVybnMsIHVuc2lnbmVkIGNhbGxGcmFtZVNpemUsIGJvb2wgb25jZVRocm91Z2gpCiAgICAg
ewotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZURpc2p1
bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIG1fYm9keURp
c2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBj
YWxsRnJhbWVTaXplKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChC
eXRlVGVybTo6Qm9keUFsdGVybmF0aXZlQmVnaW4ob25jZVRocm91Z2gpKTsKICAgICAgICAgbV9i
b2R5RGlzanVuY3Rpb24tPnRlcm1zWzBdLmZyYW1lTG9jYXRpb24gPSAwOwogICAgICAgICBtX2N1
cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAKaW5kZXggNDEyYzZlNGE2Y2JlYWM4OTMyMWIwYWU3ODBmZGQ3NmEwNjE5YmUyZC4uZjY2
YTgyZTU3NTFhZGRhMzI5ZWRlZWY3MGFkOTI2OWQxMWVkMmI5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTM4OTksNyArMzg5OSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgp
IHx8IE9wdGlvbnM6OmR1bXBSZWdFeHBEaXNhc3NlbWJseSgpKSkKLSAgICAgICAgICAgIG1fZGlz
YXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0aGlzKTsKKyAg
ICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0
aGlzKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBtX2Rpc2Fz
c2VtYmxlci0+c2V0U3RhcnRPZkNvZGUobGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAKaW5kZXggNDlmNzdmNjljNjg1YzY1MjAzZGYzZjAzNGM5MGQx
ODc3YzkyZGM5Yi4uZmNjNTFiMjc3ZjUwMTEwM2I3YzY1YmJkMzNhNWNhNDEwZDgxYzBlZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMjQwLDcgKzI0
MCw3IEBAIGNsYXNzIENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAg
Y29hbGVzY2VUYWJsZXMoKTsKIAotICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICAgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAKICAgICAgICAgY2hhcmFjdGVyQ2xh
c3MtPm1fbWF0Y2hlcy5zd2FwKG1fbWF0Y2hlcyk7CiAgICAgICAgIGNoYXJhY3RlckNsYXNzLT5t
X3Jhbmdlcy5zd2FwKG1fcmFuZ2VzKTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBjbGFzcyBZYXJyUGF0
dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgLCBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3Io
cGF0dGVybi5pZ25vcmVDYXNlKCksIHBhdHRlcm4udW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6
VW5pY29kZSA6IENhbm9uaWNhbE1vZGU6OlVDUzIpCiAgICAgICAgICwgbV9zdGFja0xpbWl0KHN0
YWNrTGltaXQpCiAgICAgewotICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
dHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5ID0gbWFrZVVuaXF1ZTxQYXR0
ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBib2R5LmdldCgp
OwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAg
ICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGJvZHkpKTsKQEAg
LTQ1Niw3ICs0NTYsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAg
bV9wYXR0ZXJuLnJlc2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAgIG1fY2hhcmFjdGVyQ2xhc3ND
b25zdHJ1Y3Rvci5yZXNldCgpOwogCi0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlx
dWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBtYWtlVW5pcXVl
PFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9keSA9IGJvZHku
Z2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRlcm5hdGl2ZSgp
OwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoYm9keSkp
OwpAQCAtNjA4LDcgKzYwOCw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVCghb3B0R3JvdXBOYW1lKTsKIAotICAgICAg
ICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5E
aXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNq
dW5jdGlvbiA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsK
ICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVy
blRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRlcm5JZCwgcGFyZW50aGVz
ZXNEaXNqdW5jdGlvbi5nZXQoKSwgY2FwdHVyZSwgZmFsc2UpKTsKICAgICAgICAgbV9hbHRlcm5h
dGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAg
ICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShwYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uKSk7CkBAIC02MTYsNyArNjE2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciB7CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBp
bnZlcnQgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsK
KyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJu
RGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rl
cm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3Nl
cnRpb24sIG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFyZW50aGVzZXNEaXNqdW5j
dGlvbi5nZXQoKSwgZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9pbnZl
cnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwpAQCAtNzA3LDcgKzcwNyw3IEBAIGNs
YXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0
aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLmdldCgp
OwogICAgICAgICAgICAgaWYgKCFmaWx0ZXJTdGFydHNXaXRoQk9MIHx8ICFhbHRlcm5hdGl2ZS0+
bV9zdGFydHNXaXRoQk9MKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXdEaXNqdW5jdGlvbikg
ewotICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlv
biA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICAgICAgICAgICAg
ICBuZXdEaXNqdW5jdGlvbi0+bV9wYXJlbnQgPSBkaXNqdW5jdGlvbi0+bV9wYXJlbnQ7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbmV3QWx0
ZXJuYXRpdmUgPSBuZXdEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKQEAgLTE0NzMs
NyArMTQ3Myw3IEBAIHZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0ZXJuKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRyPENoYXJh
Y3RlckNsYXNzPiBhbnljaGFyQ3JlYXRlKCkKIHsKLSAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0g
c3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+
bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MDAsIDB4N2YpKTsKICAgICBjaGFyYWN0
ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwODAsIDB4
MTBmZmZmKSk7CiAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fY2hhcmFjdGVyV2lkdGhzID0gQ2hhcmFj
dGVyQ2xhc3NXaWR0aHM6Okhhc0JvdGhCTVBBbmROb25CTVA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCAwYjdkYjJlYmE4YWQ1MmRlZDJiNWY3ZTY3ZTU0NWI4
YzE2Yzk0NWM3Li43ZTgyYzg1NWE4NzhlNmMxODBlZDUyMWYxZjdhZDQ4ZDhjMWZiYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTM0MSw3ICszNDEsNyBA
QCBzdHJ1Y3QgUGF0dGVybkRpc2p1bmN0aW9uIHsKICAgICAKICAgICBQYXR0ZXJuQWx0ZXJuYXRp
dmUqIGFkZE5ld0FsdGVybmF0aXZlKCkKICAgICB7Ci0gICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOworICAgICAg
ICBtX2FsdGVybmF0aXZlcy5hcHBlbmQobWFrZVVuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+KHRo
aXMpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhdHRlcm5BbHRlcm5hdGl2ZSo+KG1f
YWx0ZXJuYXRpdmVzLmxhc3QoKS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwppbmRleCBjMWY5Zjk5ZGUwOTFjZWNiMmUx
ZGI1NWMzOGZhMzYwMzExZWUzN2Y0Li42OWNkODg4NjU3ODU0Y2Q1NDQ1Zjg2M2UyMmQ1NWZmYjlj
NDBlZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVn
ZXhfdGFibGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90
YWJsZXMKQEAgLTk1LDExICs5NSwxMSBAQCBmb3IgbmFtZSwgY2xhc3NlcyBpbiB0eXBlcy5pdGVt
cygpOgogICAgIGZ1bmN0aW9uICs9ICgie1xuIikKICAgICBpZiBlbWl0VGFibGVzIGFuZCBjbGFz
c2VzWyJVc2VUYWJsZSJdOgogICAgICAgICBpZiAiSW52ZXJzZSIgaW4gY2xhc3NlczoKLSAgICAg
ICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52
ZXJzZSJdKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xh
c3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xh
c3Nlc1siSW52ZXJzZSJdKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmN0aW9uICs9
ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNs
YXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQorICAgICAgICAgICAgZnVuY3Rpb24g
Kz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+
KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCiAgICAgZWxzZToKLSAgICAgICAgZnVuY3Rp
b24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFj
dGVyQ2xhc3M+KCk7XG4iKQorICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3Rl
ckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCiAgICAgaGFzQk1QQ2hh
cmFjdGVycyA9IEZhbHNlCiAgICAgaGFzTm9uQk1QQ2hhcmFjdGVycyA9IEZhbHNlCiAgICAgZm9y
IChtaW4sIG1heCkgaW4gcmFuZ2VzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5CmluZGV4
IGY5ZmVmNDY4ZDJiNWRkYTZhYWVlYWIwYjNmYzA1OGNkM2VlY2VhYzEuLjUyNmZiNmU3YWMzYTIy
N2E2ZDQzY2JiZWZkMjcwMmQxYTBjNTRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMu
cHkKQEAgLTUyOSw3ICs1MjksNyBAQCBkZWYgZHVtcE1hdGNoRGF0YShzZWxmLCBmaWxlLCB2YWx1
ZXNQZXJMaW5lLCBkYXRhTGlzdCwgZm9ybWF0dGVyKToKICAgICBkZWYgZHVtcChzZWxmLCBmaWxl
LCBjb21tYUFmdGVyKToKICAgICAgICAgZmlsZS53cml0ZSgic3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDaGFyYWN0ZXJDbGFzcz4ge30oKVxue3tcbiIuZm9ybWF0KHNlbGYuZ2V0Q3JlYXRlRnVuY05h
bWUoKSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAvLyBOYW1lID0ge30sIG51bWJlciBvZiBj
b2RlUG9pbnRzOiB7fVxuIi5mb3JtYXQoc2VsZi5uYW1lLCBzZWxmLmNvZGVQb2ludENvdW50KSkK
LSAgICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPihcbiIpCisgICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRv
IGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQogICAgICAg
ICBmaWxlLndyaXRlKCIgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcjMyPigiKQog
ICAgICAgICBzZWxmLmR1bXBNYXRjaERhdGEoZmlsZSwgOCwgc2VsZi5tYXRjaGVzLCBsYW1iZGEg
ZmlsZSwgbWF0Y2g6IChmaWxlLndyaXRlKCJ7MDowPSM0eH0iLmZvcm1hdChtYXRjaCkpKSkKICAg
ICAgICAgZmlsZS53cml0ZSgiKSxcbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFy
a3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJu
ZXNzVGVzdC5jcHAKaW5kZXggY2M3MDdkZTNmZjRlYzEzOGNmYTQ2YWI0YzhlMTNhYmI2NTkzY2Jh
MS4uOGM5N2MxYTI0MWI3MjlhZjhmMzFmMzU5YzdmNTE3N2E2MzQwOWRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9X
VEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcApAQCAtNjEsOCArNjEsOCBAQCBzdHJ1
Y3QgQmVuY2htYXJrIHsKICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAg
ICB7CiAgICAgICAgIExvY2tUeXBlIGxvY2s7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNp
Z25lZFtdPiBjb3VudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkW10+KG51bVRocmVhZHMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazx1bnNpZ25lZFtdPihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsKICAgICAKICAgICAgICAgdm9s
YXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0cnVlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xv
Y2tTcGVlZFRlc3QuY3BwCmluZGV4IGYxNTY1MGQ0YzljOGZhNjc3MGY4OTEyZjA5ZGZlMzkyOTEz
MDdjMzQuLmJlN2FiYTM5MGViNTNlMzU4MWUzNmY0YThiOTUwMGQwZTI5OWY5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgc3RydWN0
IEJlbmNobWFyayB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiAgICAgc3RhdGlj
IHZvaWQgcnVuKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+IGxvY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxXaXRo
UGFkZGluZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdp
dGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0
cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4obnVt
VGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJs
ZT5bXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGlu
Zzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3Vw
KTsKIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Nv
bmN1cnJlbnRWZWN0b3IuaAppbmRleCAwYjU0MWI4YzczZDBmNTk4NjUxYmY5NWU3NjkzYjgwN2M5
OTlmNzhhLi44ODRlZDczMjMzNzYxYTI5ZmI0OTZmMGFkMDk4OTY3NTQ1ZTcwMzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93
dGYvQ29uY3VycmVudFZlY3Rvci5oCkBAIC0yNTQsNyArMjU0LDcgQEAgY2xhc3MgQ29uY3VycmVu
dFZlY3RvciBmaW5hbCB7CiAgICAgdm9pZCBhbGxvY2F0ZVNlZ21lbnQoKQogICAgIHsKICAgICAg
ICAgbV9zZWdtZW50cy5ncm93KG1fbnVtU2VnbWVudHMgKyAxKTsKLSAgICAgICAgbV9zZWdtZW50
c1ttX251bVNlZ21lbnRzKytdID0gc3RkOjptYWtlX3VuaXF1ZTxTZWdtZW50PigpOworICAgICAg
ICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBtYWtlVW5pcXVlPFNlZ21lbnQ+KCk7CiAg
ICAgfQogCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5jcHAKaW5kZXggODNjMjA3NTFmODVmNGU0ZDIwMTU2MTQ0MWNhODMxNDFj
YjVjMzdmZi4uYzYzYzA1NWEwYTAzNDFkZjZhNWFmMjcwYTRhY2NiOGQ1N2Q3ODQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKQEAgLTczLDcgKzczLDcgQEAg
dm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgpCiAKICAgICB3aGlsZSAo
IW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29sID0gKG1fdXNlQXV0b2Ry
YWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVzZSkgPyBzdGQ6Om1ha2Vf
dW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJh
aW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNlKSA/IG1ha2VVbmlxdWU8
QXV0b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKIAogICAgICAgICAgICAgbV90YXNrUXVldWUu
d2FpdEZvck1lc3NhZ2UoKS5wZXJmb3JtVGFzaygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgK
aW5kZXggZWZlZmIzYTMxMzNlODNmNjQzMzZmZDJlYzJkYTUyYTU0ODMyZTYyMS4uOTViNjc1OTcy
ZDMxMGUzZGRiZDQxM2Q0YThmOGQxMjg4ZjIwZmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMzAx
LDkgKzMwMSwxMSBAQCB1c2luZyBXVEY6OmZhc3RBbGlnbmVkRnJlZTsKICNkZWZpbmUgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQgXAogcHVibGljOiBcCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJpdmF0ZTog
XAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
bwogCiAjZGVmaW5lIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRCBcCiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFz
czsgXAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNN
YWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKaW5kZXggM2UyNTNjZjJhYzIxOWNjODU1
ODRkNDJjNDUxZWZjN2NhNzliNjRlYS4uNzA3NGMwM2FiYWY4ZmNmMzk3N2YyYjExYWI5YzNkNmUz
ODE2MTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGaWxlUHJpbnRTdHJlYW0+IEZpbGVQcmludFN0cmVhbTo6b3Blbihj
b25zdCBjaGFyKiBmaWxlbmFtZSwgY29uCiAgICAgaWYgKCFmaWxlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVQcmludFN0cmVhbT4o
ZmlsZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKIH0K
IAogdm9pZCBGaWxlUHJpbnRTdHJlYW06OnZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9s
aXN0IGFyZ0xpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oIGIvU291
cmNlL1dURi93dGYvRnVuY3Rpb24uaAppbmRleCAwNWUzNjk3ODI1YmMzZDM0OWY0OGQ2OGMzMmE2
ODYyMjU1ZmI1ODNlLi4wYjc5NTg2NzQ4MGZkMDMyMjQxMjQ1NGU3ZDBhZjgzMzhkNmUzYTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0Z1bmN0aW9uLmgKQEAgLTY3LDExICs2NywxMSBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4p
PiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8IShzdGQ6OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUg
JiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxl
VHlwZT46OnR5cGU+Ojp2YWx1ZSkgJiYgc3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxl
VHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxh
YmxlKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV0YWls
OjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxs
YWJsZSkpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtlVW5pcXVlPERldGFp
bDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoY2Fs
bGFibGUpKSkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNz
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46
OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxG
dW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKEZ1bmN0aW9u
VHlwZSBmKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV0
YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShm
KSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpD
YWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSkpIHsg
fQogCiAgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0CiAgICAgewpAQCAtODQsMTQg
Kzg0LDE0IEBAIGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IShzdGQ6
OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxlVHlwZT46OnR5cGU+Ojp2YWx1ZSkgJiYg
c3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgog
ICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCiAgICAgewot
ICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxs
YWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkp
OworICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJs
ZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpOwog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxGdW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBG
dW5jdGlvbiYgb3BlcmF0b3I9KEZ1bmN0aW9uVHlwZSBmKQogICAgIHsKLSAgICAgICAgbV9jYWxs
YWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1
bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOworICAgICAgICBtX2NhbGxhYmxl
V3JhcHBlciA9IG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBl
LCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93
dGYvSGFzaFRhYmxlLmgKaW5kZXggM2IxZTk1MzAzZGU1NDA1MTQzZmI1NjNjY2I4MDQ3ZTVhY2Vh
ZDBiMy4uYTRkMDc3Zjg0ZjAyYTFmYTFjMWJlMDM0YTg2ZWIzNTBkNmQ3ZjQ5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRh
YmxlLmgKQEAgLTU4OCwxMCArNTg4LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAsIG1f
ZGVsZXRlZENvdW50KDApCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICAs
IG1faXRlcmF0b3JzKDApCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+
KCkpCisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICNpZiBE
VU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKLSAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdHM+KCkpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigp
KQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTEzMzQsMTAgKzEzMzQsMTAgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVf
SVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMobnVsbHB0cikKLSAgICAgICAgLCBtX211
dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlx
dWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQot
ICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKm90aGVyLm1fc3RhdHMp
KQorICAgICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxTdGF0cz4oKm90aGVyLm1fc3RhdHMpKQog
I2VuZGlmCiAgICAgewogICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNvdW50ID0gb3RoZXIuc2l6
ZSgpOwpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgaW5saW5lIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6SGFzaFRhYmxlKEhhc2hUYWJsZSYmIG90aGVyKQogI2lmIENIRUNLX0hBU0hUQUJM
RV9JVEVSQVRPUlMKICAgICAgICAgOiBtX2l0ZXJhdG9ycyhudWxscHRyKQotICAgICAgICAsIG1f
bXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVu
aXF1ZTxMb2NrPigpKQogI2VuZGlmCiAgICAgewogICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRl
cmF0b3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCA5
ZTg3MjBmNmQ5YTc5ODBiOTVlNWIxM2M1ZTY1NWMzODk0OTMwNGI1Li41Mzc5YzBhNGQ1YzhjNmYz
NjdkOTE2OTZlMGQ2YTE4YzVkOWZlYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sIHVzZSkKICAgICB9CiAKICAg
ICBpZiAodXNlKSB7Ci0gICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwor
ICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1l
bW9yeVByZXNzdXJlSGFuZGxlcj4+KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKTsKICAgICAgICAgbV9tZWFzdXJlbWVu
dFRpbWVyLT5zdGFydFJlcGVhdGluZygzMF9zKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9tZWFz
dXJlbWVudFRpbWVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggYWY2NWUwOGNh
ODgwMjQwZWE5ZjE5YzNjMWZjMWZkYzU3YWI0ZDRhYi4uZGVmODM0MGUzYzhhY2M4NTg2ZGE0ZjAw
YmI4ZTlkYzU2ZTAxM2VmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFz
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTU2NSw2ICs1NjUsMjQg
QEAgY29uc3RleHByIHNpemVfdCBjbHoodWludDMyX3QgdmFsdWUsIFplcm9TdGF0dXMgbWlnaHRC
ZVplcm8gPSBaZXJvU3RhdHVzOjpNYXlCZVoKIAogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lO
TElORSBkZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVlKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVuYW1lIFQ6Ol9fZmFzdEFsbG9jYXRlZENsYXNz
LCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJn
cz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwogI2RlZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KHZhbHVlKQogCiB1c2luZyBXVEY6OktCOwpAQCAtNTg1LDMgKzYwMyw1IEBAIHVzaW5n
IFdURjo6bWVyZ2VEZWR1cGxpY2F0ZWRTb3J0ZWQ7CiB1c2luZyBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Y7CiB1c2luZyBXVEY6OnNhZmVDYXN0OwogdXNpbmcgV1RGOjp0cnlCaW5hcnlTZWFyY2g7
Cit1c2luZyBXVEY6Om1ha2VVbmlxdWU7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAppbmRleCAyNmJiYzhmZDY3YTQ5MzQ2MzIy
MWQ2MTk2MThlYjdjNjQ2ODY0MDMwLi5jYTMzZjg2N2QzOGI1NzU5MjAxNDFkNTIzYzMwN2FhZTdj
ODIwYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBTdHJl
YW1CdWZmZXIgewogICAgICAgICBtX3NpemUgKz0gc2l6ZTsKICAgICAgICAgd2hpbGUgKHNpemUp
IHsKICAgICAgICAgICAgIGlmICghbV9idWZmZXIuc2l6ZSgpIHx8IG1fYnVmZmVyLmxhc3QoKS0+
c2l6ZSgpID09IEJsb2NrU2l6ZSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxCbG9jaz4oKSk7CisgICAgICAgICAgICAgICAgbV9idWZmZXIuYXBwZW5k
KG1ha2VVbmlxdWU8QmxvY2s+KCkpOwogICAgICAgICAgICAgc2l6ZV90IGFwcGVuZFNpemUgPSBz
dGQ6Om1pbihCbG9ja1NpemUgLSBtX2J1ZmZlci5sYXN0KCktPnNpemUoKSwgc2l6ZSk7CiAgICAg
ICAgICAgICBtX2J1ZmZlci5sYXN0KCktPmFwcGVuZChkYXRhLCBhcHBlbmRTaXplKTsKICAgICAg
ICAgICAgIGRhdGEgKz0gYXBwZW5kU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Vu
aXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggNzNlOWRmZWMwNmZk
Nzg3ZjNiMDZiM2RjOWRhNjVhNTUwNGQxYzAyOS4uNjU5MTI1MWI4NjI3ZGYzNmNmMmViOWY3NDc5
M2VmNDg5Y2ExZTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysr
IGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTMzLDExICszMywxOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFVuaXF1ZVJlZjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVm
KEFyZ3MmJi4uLiBhcmdzKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1h
bGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQogewogICAgIHJldHVybiBVbmlxdWVSZWY8VD4oKm5l
dyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4u
IGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6X19m
YXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFVuaXF1ZVJlZiB7CiBwdWJsaWM6CkBA
IC02Myw3ICs3MCw3IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFQ+
IG1vdmVUb1VuaXF1ZVB0cigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWYpOyB9CiAKIHByaXZhdGU6
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxV
PiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3Mu
Li4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxs
b2NDaGVjayhBcmdzJiYuLi4pOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBjbGFzcyBV
bmlxdWVSZWY7CiAKICAgICBVbmlxdWVSZWYoVCYgb3RoZXIpCkBAIC03OSwzICs4Niw0IEBAIGNs
YXNzIFVuaXF1ZVJlZiB7CiAKIHVzaW5nIFdURjo6VW5pcXVlUmVmOwogdXNpbmcgV1RGOjptYWtl
VW5pcXVlUmVmOwordXNpbmcgV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVj
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291
cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXggNWU1YmE4YWJlYmRiZDQ5YmJi
ODM3ZGQ0YzRmZDY5YmQ2ZmZjMzYxZi4uZmIyMTFkMGEyOTYxZGZjMTZhYTZlMjFhMjFhOTc0ZGZm
MTUyNjk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTE0Nyw3ICsxNDcs
NyBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQo
KSwgIltXZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hBZnRlciIpOwogICAgIGdfc291cmNlX3NldF9y
ZWFkeV90aW1lKHNvdXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIGR1cmF0aW9u
Lm1pY3Jvc2Vjb25kc0FzPGdpbnQ2ND4oKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0
Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BhdGNoQWZ0ZXJD
b250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNo
QWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4o
V1RGTW92ZShmdW5jdGlvbikpOwogICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhzb3VyY2UuZ2V0
KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChzdGF0aWNfY2FzdDxEaXNwYXRj
aEFmdGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7CiAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBkY2JhMDYwODJjNWY2NmUzMTlhMTVl
ZTU5N2ZjNjQ5NzY2YjA1ZTZjLi41YmY0ZTZkMDFkZTg0M2VkMjg3ODgzZWEzYTAzZTg0OTQ5M2Jl
Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBj
bGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbCB7CiB9Owog
CiBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpCi0gICAgOiBtX2ltcGwoc3Rk
OjptYWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3LmlzTnVsbCgpID8gV1RG
OjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKKyAgICA6
IG1faW1wbChtYWtlVW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkg
PyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
PihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFu
aWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKaW5k
ZXggZmRiOGNlMjkyZDczOGRhNDIwMzhhYTk2NWFmM2FjYTE3OGE4MGNlYi4uOGRjNzZmYTJlNTll
YTY3ZTAyMTczOGMzMTFhMzU3N2Y0ZDM2ZTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlJbnZhbGlkVVJMKGNvbnN0IFN0cmlu
ZyYgcHJvcAogdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZlbG9wZXJXYXJu
aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9jb25zb2xlQ29udGV4dCkK
LSAgICAgICAgbV9jb25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVy
LCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2csIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtl
U3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5z
dHJpbmcoKSwgIjogIl9zLCBtZXNzYWdlKSkpOworICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KEpT
Qzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFuaWZl
c3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7CiB9CiAK
IFVSTCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZVN0YXJ0VVJMKGNvbnN0IEpTT046
Ok9iamVjdCYgbWFuaWZlc3QsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCA5YmZhNWY5
NDk5NGIwNTQ1MDZiODI2YTMxNGI4MjU4MjdlYTQxYWRiLi43ZTRmNzk0NzFlMmM1OWZlNzFjMTQ4
MTMyZjRiNTUxZDhmZmM3OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVh
Y29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgTmF2aWdhdG9yQmVhY29u
KiBOYXZpZ2F0b3JCZWFjb246OmZyb20oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CiAgICAgYXV0
byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckJlYWNvbio+KFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYg
KCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2
aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAK
aW5kZXggNWVkMWY1Y2NhNjQxZWIwNGVjMGUwYTBjZTA2YzgzNzI0NTY4YTJmZi4uNjE1Mzk0MzBk
ZmI5NjE2ZmQyODhmZWQ5MmNiOTQ0ZmY0NDZiMDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcApAQCAtNDksNyArNDksNyBAQCBET01X
aW5kb3dDYWNoZXMqIERPTVdpbmRvd0NhY2hlczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsK
ICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93Q2FjaGVzKj4oU3Vw
cGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2Fj
aGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVD
YWNoZXMuY3BwCmluZGV4IDA2NTZiZWYwYjE3MThlMzNkYmM3ZmEwZWU2MGM1N2Q0OGUzOGQ0ZTgu
LjUxMThhNDg4NTBmMjQyZDA0NGQzYjQwZmYwZTNiMjNiYjk2ZTI4ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKiBXb3JrZXJHbG9i
YWxTY29wZUNhY2hlczo6ZnJvbShXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCiB7CiAgICAgYXV0
byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKj4oU3Vw
cGxlbWVudDxXb3JrZXJHbG9iYWxTY29wZT46OmZyb20oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM+KHNjb3BlKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUNhY2hl
cz4oc2NvcGUpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAg
ICAgICAgcHJvdmlkZVRvKCZzY29wZSwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVk
ZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcApp
bmRleCA3MWY0MzhjZjc4NmM3NmQ3YjU4NzIxNTU5NzY2OGI2MjM2MWI1OTkzLi4xMTgxYmQ5ODVh
MjJiYTQ5M2Y4MzYzMWQ3ZTQxZmVlODc5YjU2YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRv
ckNyZWRlbnRpYWxzLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOYXZpZ2F0b3JDcmVkZW50aWFscyog
TmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAg
TmF2aWdhdG9yQ3JlZGVudGlhbHMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JD
cmVkZW50aWFscyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50aWFscz4oKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50aWFs
cz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IGI2ZmQ2OGQ2NzJlZGUzODc3
OGMxNWM2ZmVhYWY0NmI0NTVlNWExY2QuLjc1ZWRiNmE5MzYzODgwZTU4N2MzNTc1NmIxNGRlYzlm
OWI0NWU2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIE9wdGlv
bmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94Pj4+IEluaXREYXRhCiAgICAgICAgIGF1dG8gc3lzdGVtSUQgPSBJU09Qcm90ZWN0aW9u
U3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRCh2aWV3LCBvZmZzZXQpOwogI2lm
IEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICAgICAgaWYgKHN5c3Rl
bUlEID09IElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveDo6ZmFpclBsYXlTeXN0ZW1JRCgpKSB7
Ci0gICAgICAgICAgICBhdXRvIGZwc1Bzc2ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveD4oKTsKKyAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IG1ha2VVbmlx
dWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOwogICAgICAgICAgICAgaWYgKCFmcHNQ
c3NoLT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgICAgIHBzc2hCb3hlcy5hcHBlbmQoV1RGTW92ZShmcHNQc3NoKSk7CkBA
IC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICNlbHNlCiAgICAgICAg
IFVOVVNFRF9QQVJBTShzeXN0ZW1JRCk7CiAjZW5kaWYKLSAgICAgICAgYXV0byBwc3NoQm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7
CisgICAgICAgIGF1dG8gcHNzaEJveCA9IG1ha2VVbmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNw
ZWNpZmljSGVhZGVyQm94PigpOwogICAgICAgICBpZiAoIXBzc2hCb3gtPnJlYWQodmlldywgb2Zm
c2V0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0u
Y3BwCmluZGV4IDgyNjI4OTNmZTBhZjk5OTE0ZWQzOWU5NjBjZjEwYTc1MzQwNzA1YjYuLjgzN2Rm
MTIzYWU1OTZmMzUzN2M5MTUyNzAzZTNkMjcxYjM0NmViNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNw
cApAQCAtNjEsMTUgKzYxLDE1IEBAIHN0cnVjdCBDRE1GYWN0b3J5IHsKIHN0YXRpYyBWZWN0b3I8
Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQogewogICAgIHN0YXRpYyBhdXRv
IGNkbXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPENETUZhY3RvcnkqPiB7Ci0gICAgICAg
IG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZh
Y3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5PihjZG0pOyB9LAogICAgICAgICAgICAgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogICAgICAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBz
cGVjaWZpYyBVQSBDRE1zLiBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMxOCwgaHR0cDovL3dlYmtp
dC5vcmcvYi8xMDkzMjAKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9
LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCiAgICAgICAgICAgICBDRE1Q
cml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAjaWYgKEhBVkUoQVZDT05URU5U
S0VZU0VTU0lPTikgfHwgSEFWRShBVlNUUkVBTVNFU1NJT04pKSAmJiBFTkFCTEUoTUVESUFfU09V
UkNFKQotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAor
ICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVu
aXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAogICAgICAgICAgICAg
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogI2Vu
ZGlmCiAgICAgfSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TT4gTGVnYWN5Q0RNOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgaWYgKCFz
dXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUNETT4oa2V5U3lzdGVtKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3RlbSk7CiB9CiAKIExlZ2FjeUNETTo6
TGVnYWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAppbmRleCA0
NThlYzUzYjQzMzdiMTcxMDU1NmY4YTE3YjRlZjAxZWZjZTE1NjRlLi5mYjVkYTFmMTZkYTAyZWM4
NGMzNDc3ZDM1NWZlMGE1ZTg5NjQwNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaApAQCAtNTAsNyArNTAs
OCBAQCBjbGFzcyBMZWdhY3lDRE1DbGllbnQgewogICAgIHZpcnR1YWwgUmVmUHRyPE1lZGlhUGxh
eWVyPiBjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25zdCA9IDA7CiB9OwogCi1j
bGFzcyBMZWdhY3lDRE0geworY2xhc3MgTGVnYWN5Q0RNIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDRE0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKaW5kZXggMGE4
ZDU0ZTVjNTY1ZjM0NTA4NTYyYzVhOGMxZTAwMzVhZjE0YTc0Zi4uZjI0OTcwNzJlNzg1NzYwYzU5
ZTIzMDM5MzRmYjdmOWNjNDc3MmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaApA
QCAtMzUsNiArMzUsNyBAQCBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwogY2xhc3MgTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudDsKIAogY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUludGVyZmFjZSgpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgPSBkZWZhdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggYzkz
MTZkZmQ4YWJiNDA1NDkyZjU1NWViM2QxYjNkMDkxN2NlZmY1MC4uM2E4YzAwZjUyMzFmNTJhNmU4
OWQxODNkMTUxMWMzYWM4NzczYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlQ2xlYXJLZXkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6
OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMmY3YjAzNTM5
ZWY4ZWE0NzRlMjM2ZDA1ZDllMTdmZWM0ODRlNjI3ZS4uYmM3NzdmMGNiYzhjZTdiODllOTQzYjhh
NjNlNGU2ZTgyODliMzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNs
ZWFyS2V5LmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDRE1TZXNzaW9uQ2xlYXJLZXkgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CitjbGFzcyBD
RE1TZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkNsZWFyS2V5
KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQ2xlYXJL
ZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHAKaW5kZXggYWRkYzU0ODk2YjhhNDQzOGNmYmZkMDY1ODBhZGJjODYwYTgxZjg2NC4uZGI2Mzkw
ZTdmOTkyNTk3N2I4N2NhMDA5ZWRhYmQ1MWNkYjY2NzMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRjaEJvZHlD
b25zdW1lciogY29uc3VtZXIpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyLmVtcGxhY2UoKnRo
aXMpOwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExv
YWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOworICAgIG1fYmxvYkxvYWRlci0+bG9hZGVy
ID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOwogCiAg
ICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGJsb2IpOwogICAgIGlmICghbV9ibG9iTG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCBj
ZDM0NWViOWVjMzQwYzM2ZTBmMGE2ZWVkODJkZDk4OGI0Zjk3ZDM5Li45NDAxM2NmNGVhNjUyMzhk
ODNiOWI0YzgxZGI3ZDE4MTY1MzI0NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVz
dCYgcmVxdWVzdAogCiAgICAgcmVzcG9uc2UtPmFkZEFib3J0U3RlcHMocmVxdWVzdC5zaWduYWwo
KSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxCb2R5
TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNrKSk7CisgICAg
cmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG1ha2VVbmlxdWU8Qm9keUxvYWRlcj4ocmVzcG9uc2Uu
Z2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwogICAgIGlmICghcmVzcG9uc2UtPm1f
Ym9keUxvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3BvbnNlLT5t
X2JvZHlMb2FkZXIgPSBudWxscHRyOwogfQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCiAKIGJvb2wgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZt
X3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVl
PEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigpKTsKICAg
ICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIG1fbG9hZGVy
LT5pc1N0YXJ0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAppbmRleCA2MTAyMDg5OWNiYzRhN2U0MzNiMTUxZGNjYWVi
ZmU5MDc2NGQzZTJkLi44NTBkMjJkZTI4NWJiMzM1ZDIyZThjMmUyNTNiN2FiNmUwYzYwMzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVw
YWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvckdhbWVwYWQqIE5hdmlnYXRvckdhbWVw
YWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2FtZXBhZCog
c3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdhbWVwYWQqPihTdXBwbGVtZW50PE5h
dmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwCmluZGV4IGIwOWZjMzQzM2JiZmJiNzI4ZjMxNWMxNTMzYTZmMmM5ZTRmYzAwNzEuLmNkODA3
MGIyMDdkYjhhMzQ0MDI2Y2ZmNjEwNWI4NWVlMTliYzUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCkKIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFnZSogcGFn
ZSwgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQocGFnZSk7Ci0gICAg
U3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+
KCpwYWdlLCBjbGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEdlb2xv
Y2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCBiMzRmNDlhNjcxZDg1ZjUxNDJi
OGJhZjBmNTJiYTk5MWFjNDM1OWRjLi4zNWRmYmY4ZjNmMjU2OWMwMTM1MzU2NjMwMGY1Yjc4Mzdk
ZTI4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05h
dmlnYXRvckdlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCBOYXZpZ2F0
b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20oTmF2aWdhdG9yJiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxOYXZpZ2F0b3JHZW9sb2NhdGlvbio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgm
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR2Vv
bG9jYXRpb24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYzcyMDNhOWE4NjQwOTcwNTBkM2RjMDA3OTJmN2E2YjU4
MWZhYTI1ZS4uNWU5ZDk3OTY2YmZkZTU4ZTY2MDk5YTUwOWU2MThiODRjMThkMDVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5k
b3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERPTVdpbmRvd0luZGV4ZWRE
YXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKERPTVdpbmRvdyogd2luZG93
KQogewogICAgIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJv
bSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2U+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVt
ZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3Vw
cGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4
IGY0MzA5MGM0ZGNjM2VkZTVlMjdkMWFhNDQzODQ0NDdkODQ5YzY0MGIuLjlhNzgxMjc4NDYzZWQw
YTRhMGFkZGQzZjdkYjBjNTY1Njk2MmI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmRleCcgb24gJ0lEQk9iamVj
dFN0b3JlJzogVGhlIHNwZWNpZmllZCBpbmRleCB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAg
YXV0byBpbmRleCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBpbmRleCA9IG1ha2VVbmlxdWU8SURC
SW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CiAKICAgICBS
ZWY8SURCSW5kZXg+IHJlZmVyZW5jZWRJbmRleCB7ICppbmRleCB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZmEy
Y2Q3ZWFkMDliNjA1NTI1YjhjYjQ0MWVmNzAwMWQ4MzM1MDEwMC4uNDIyNDNmYmE1NzMxMjk1NDE4
ODk0YTMyMDQzZTg5ZTBiMmMxYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYgKCFpbmZvIHx8ICghZm91bmQgJiYgIWlzVmVyc2lv
bkNoYW5nZSgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJG
YWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3RvcmUnIG9uICdJREJUcmFuc2FjdGlvbic6IFRoZSBz
cGVjaWZpZWQgb2JqZWN0IHN0b3JlIHdhcyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBhdXRvIG9i
amVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gbWFr
ZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8s
ICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwog
ICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmVOYW1lLCBXVEZNb3Zl
KG9iamVjdFN0b3JlKSk7CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+
IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mCiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9j
ayk7CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RT
dG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOworICAgIGF1dG8g
b2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmpl
Y3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KGluZm8ubmFt
ZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RT
dG9yZSYgb2JqZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jcmVhdGVJbmRleE9uU2Vy
dmVyKG9wZXJhdGlvbiwgaW5mbyk7CiAgICAgfSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0
b3JlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpj
cmVhdGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRl
eGVkRGF0YWJhc2UuY3BwCmluZGV4IGE0ODUwM2I0ZDJkODA0Mjk0Njg0YTY1YTY1ZWJkNjRmMjMz
Y2Q3YjkuLjliNzU3NzQ5MjFiNDY1MDZmNTgzZGU3ZmVjNDI1MGU4NTRhY2U1MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9X
b3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV29y
a2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERh
dGFiYXNlOjpmcm9tKFdvcmtlckcKICAgICAgICAgaWYgKCFjb25uZWN0aW9uUHJveHkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwg
KmNvbm5lY3Rpb25Qcm94eSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlx
dWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblBy
b3h5KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVu
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggOTQ4Y2Y3
NDY2M2FlNjljODJkYTQ0NGUwOTM0NzNkZDg1NmQ0ZGU5My4uMzc3MTFkYzEwM2RiNmM5YTliODEz
ZGJjOWRmNzk5YjdlMjZhNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gSURCQ29ubmVjdGlv
blRvU2VydmVyOjpjcmVhdGUoSURCQ29ubmVjdGlvblRvU2VydmVyRGUKIAogSURCQ29ubmVjdGlv
blRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIoSURCQ29ubmVjdGlvblRvU2VydmVyRGVs
ZWdhdGUmIGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShtYWtlV2Vha1B0cihkZWxlZ2F0ZSkp
Ci0gICAgLCBtX3Byb3h5KHN0ZDo6bWFrZV91bmlxdWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhp
cykpCisgICAgLCBtX3Byb3h5KG1ha2VVbmlxdWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhpcykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDI3NTNmZDBjMjQ1
N2I5YzA5ZDlkODllNGY3NjJiNDc5ZjhiNDQwYjEuLjhlMWRlMDZkNzFlOGYwYjIyM2Q2ODZlNWUx
YThhMjIwOWI3NDM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApAQCAtNDIs
NyArNDIsNyBAQCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChtX2luZGV4SWRlbnRp
ZmllcikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1ZXN0LnJlcXVlc3RlZEluZGV4
UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0LnBlbmRpbmdDdXJz
b3IoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CisgICAgICAg
IG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihj
dXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCiAgICAgbV9pZGJSZXF1ZXN0ID0gJnJlcXVl
c3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuY3BwCmluZGV4IGY2YWI0ZjNhYjJjMjhiMGVlMjI0Njg5NGEwZGU1ODRiZDA4
NzUxZmQuLmY1NTY4ZTMyNWQzNzAxMWEyNzVlMDFkZjk2NmRmZGY1OTUyZThiMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVW5pcXVlSURCRGF0YWJhc2UmIElEQlNlcnZlcjo6Z2V0
T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW4KIAogICAgIGF1
dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLmFkZChpZGVudGlm
aWVyLCBudWxscHRyKTsKICAgICBpZiAodW5pcXVlSURCRGF0YWJhc2UuaXNOZXdFbnRyeSkKLSAg
ICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworICAgICAgICB1bmlxdWVJ
REJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFVuaXF1ZUlEQkRhdGFiYXNl
PigqdGhpcywgaWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gKnVuaXF1ZUlEQkRhdGFiYXNlLml0
ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURC
QmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRh
YmFzZQogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9u
SUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdTdG9yZVRl
bXBvcmFyeUZpbGVIYW5kbGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTUUxpdGVJREJCYWNr
aW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0
aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcik7CiB9CiAKIHZvaWQgSURCU2Vy
dmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpAQCAt
NzUzLDcgKzc1Myw3IEBAIHZvaWQgSURCU2VydmVyOjpRdW90YVVzZXI6OmluaXRpYWxpemVTcGFj
ZVVzZWQodWludDY0X3Qgc3BhY2VVc2VkKQogSURCU2VydmVyOjpRdW90YVVzZXImIElEQlNlcnZl
cjo6ZW5zdXJlUXVvdGFVc2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJl
dHVybiAqbV9xdW90YVVzZXJzLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAmb3JpZ2luXSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVvdGFNYW5h
Z2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmlnaW4gfSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVvdGFNYW5h
Z2VyR2V0dGVyKG1fc2Vzc2lvbklELCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmlnaW4gfSk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCmluZGV4
IDY5ODNjOWQ3ZWFmZjU2MTY3MjA0ZDk1MmYxZjIyNjdiYjQwY2E0YmEuLjhkOTIxZDhlZmU2YmE4
NDBhMzBkNjFkZmRjNmE3MjFlODI4YTQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCkBAIC05
Miw3ICs5Miw3IEBAIElEQkVycm9yIEluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElE
QktleURhdGEmIGluZGV4S2V5LCBjb25zdCBJREJLZXlEYXRhCiAgICAgICAgIHJldHVybiBJREJF
cnJvcihDb25zdHJhaW50RXJyb3IpOwogCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRleFZhbHVl
RW50cnk+KG1fdW5pcXVlKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8SW5kZXhWYWx1ZUVudHJ5PihtX3VuaXF1ZSk7CiAKICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLT5hZGRLZXkodmFsdWVLZXkpOwogICAgIG1fb3JkZXJlZEtleXMuaW5zZXJ0KGluZGV4
S2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDQ3Y2M0MmZkMjZkNjQ3M2M2NDE5MjdlOTkyZDRlYzZlOGQ3YmY4ZWUuLjVlNzE0NDk3ODRh
MGRhMDc2Nzc4OWE4ZGVkYzUyMjY4OWY0ZDhkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSURC
U2VydmVyIHsKIAogc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
PiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6Y3JlYXRlKE1lbW9yeUlEQkJhY2tpbmdT
dG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+
KGJhY2tpbmdTdG9yZSwgaW5mbyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7CiB9CiAKIE1lbW9yeUJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihNZW1vcnlJ
REJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBp
bmZvKQpAQCAtNTIsNyArNTIsNyBAQCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVt
b3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oTWVtb3J5SURCQmFja2luZ1N0bwogICAgICAgICBJ
REJEYXRhYmFzZUluZm8gaW5mbzsKICAgICAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3Jl
LmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKGluZm8pOwogICAgICAgICBpZiAoZXJyb3IuaXNO
dWxsKCkpCi0gICAgICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgICAgICAgICAgbV9vcmlnaW5hbERhdGFi
YXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICB9CiB9CiAK
QEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpy
ZWNvcmRWYWx1ZUNoYW5nZWQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdAogCiAgICAgYXV0byBv
cmlnaW5hbEFkZFJlc3VsdCA9IG1fb3JpZ2luYWxWYWx1ZXMuYWRkKCZvYmplY3RTdG9yZSwgbnVs
bHB0cik7CiAgICAgaWYgKG9yaWdpbmFsQWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIG9y
aWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8S2V5VmFs
dWVNYXA+KCk7CisgICAgICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1h
a2VVbmlxdWU8S2V5VmFsdWVNYXA+KCk7CiAKICAgICBhdXRvKiBtYXAgPSBvcmlnaW5hbEFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggN2QxNDJiMDA1MGFiNjA4ODFlMzg3YmU4YzE5ODk0N2FjNmU4ZGQ4MS4uY2Zm
ZTMzMzdmNzk0NDhiOGMyMTNkYmJlNWZhMzViNGQzYTcwZjJmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHVpbnQ2NF90IG1heEdl
bmVyYXRlZEtleVZhbHVlID0gMHgyMDAwMDAwMDAwMDAwMDsKIAogc3RkOjp1bmlxdWVfcHRyPE1l
bW9yeUlEQkJhY2tpbmdTdG9yZT4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIH0KIAogTWVt
b3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJh
c2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtNjEsNyArNjEsNyBAQCBNZW1vcnlJREJCYWNr
aW5nU3RvcmU6On5NZW1vcnlJREJCYWNraW5nU3RvcmUoKSA9IGRlZmF1bHQ7CiBJREJFcnJvciBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFi
YXNlSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2Rh
dGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZp
ZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlx
dWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOwogCiAg
ICAgaW5mbyA9ICptX2RhdGFiYXNlSW5mbzsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAt
NzIsNyArNzIsNyBAQCB2b2lkIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJhc2VJbmZv
KGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbykKICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8g
ZGlyZWN0bHkgc2V0IGRhdGFiYXNlIGluZm8gb24gYSBiYWNraW5nIHN0b3JlIHRoYXQgaGFzbid0
IGFscmVhZHkgc2V0IGl0cyBvd24gZGF0YWJhc2UgaW5mby4KICAgICBBU1NFUlQobV9kYXRhYmFz
ZUluZm8pOwogCi0gICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4oaW5mbyk7CisgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4oaW5mbyk7CiB9CiAKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YmVn
aW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNw
cAppbmRleCA0OWRkY2E2YmQ0MGQyOWQ0MmUzOGI4NTEzMWM4OWZkZmU3ZDQ3OTJkLi44NTk1ZGJi
OGY0YTdlZTNkMTkxZTMxZmI2MTBiMDQ5NzViODc0NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKQEAgLTE5
NCw3ICsxOTQsNyBAQCBJREJFcnJvciBNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkoY29uc3QgSURC
S2V5RGF0YSYgdmFsdWVLZXksIGNvbnN0IEluZGV4S2V5JiBpbgogICAgIExPRyhJbmRleGVkREIs
ICJNZW1vcnlJbmRleDo6cHJvdmlzaW9uYWxQdXRJbmRleEtleSIpOwogCiAgICAgaWYgKCFtX3Jl
Y29yZHMpIHsKLSAgICAgICAgbV9yZWNvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRleFZhbHVl
U3RvcmU+KG1faW5mby51bmlxdWUoKSk7CisgICAgICAgIG1fcmVjb3JkcyA9IG1ha2VVbmlxdWU8
SW5kZXhWYWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOwogICAgICAgICBub3RpZnlDdXJzb3Jz
T2ZBbGxSZWNvcmRzQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIE1lbW9y
eUluZGV4Q3Vyc29yKiBNZW1vcnlJbmRleDo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNv
ckluZm8mIGluZm8pCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBtYWtlVW5pcXVlPE1lbW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAg
cmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuY3BwCmluZGV4IGVkNmViYTkyN2YxZjRmNmI5YzMwNjhmNmI1ZDg4ZGUyOTk3MjY3ZWIu
LjViNDRhNzM4NzhjOWZkZDdhMWUwNWE5NWI3NjU3ZWJlNjM2MzUxNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcApAQCAtMjU5LDggKzI1OSw4IEBAIElEQkVycm9yIE1lbW9yeU9iamVjdFN0
b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
CiAKICAgICBpZiAoIW1fa2V5VmFsdWVTdG9yZSkgewogICAgICAgICBBU1NFUlQoIW1fb3JkZXJl
ZEtleXMpOwotICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtleVZh
bHVlTWFwPigpOwotICAgICAgICBtX29yZGVyZWRLZXlzID0gc3RkOjptYWtlX3VuaXF1ZTxJREJL
ZXlEYXRhU2V0PigpOworICAgICAgICBtX2tleVZhbHVlU3RvcmUgPSBtYWtlVW5pcXVlPEtleVZh
bHVlTWFwPigpOworICAgICAgICBtX29yZGVyZWRLZXlzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8SURCS2V5RGF0YVNldD4oKTsKICAgICB9CiAKICAgICBhdXRvIG1hcFJlc3Vs
dCA9IG1fa2V5VmFsdWVTdG9yZS0+c2V0KGtleURhdGEsIHZhbHVlLmRhdGEoKSk7CkBAIC00OTcs
NyArNDk3LDcgQEAgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IqIE1lbW9yeU9iamVjdFN0b3JlOjpt
YXliZU9wZW5DdXJzb3IoY29uc3QgSURCQ3Vyc29ySW5mbyYKICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywg
aW5mbyk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVtb3J5T2Jq
ZWN0U3RvcmVDdXJzb3I+KCp0aGlzLCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCA0ZjIwOGU0ZDA2MDRiODc3ZGQxZDc0ODY3YjhlM2UyODcyN2FjMDQ0Li42ZTg5M2Y5ODQ0ZTcw
OGVkMTk3MmI0YTJjMThiMTU5ZmE3MGI1OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNjIzLDcgKzYyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUlu
Zm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsCiAgICAg
fQogCiAgICAgLy8gVGhpcyBpbml0aWFsIGRhdGFiYXNlIGluZm8gbWF0Y2hlcyB0aGUgZGVmYXVs
dCB2YWx1ZXMgd2UganVzdCBwdXQgaW50byB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJh
c2VOYW1lKCksIDApOworICAgIHJldHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9p
ZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPElEQkRh
dGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFz
ZUluZm8oKQpAQCAtNjU4LDcgKzY1OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUlu
Zm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGRhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7CisgICAgYXV0
byBkYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1l
LCBkYXRhYmFzZVZlcnNpb24pOwogCiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3Fs
KCptX3NxbGl0ZURCLCAiU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jLCBtYXhJbmRl
eElEIEZST00gT2JqZWN0U3RvcmVJbmZvOyJfcyk7CkBAIC04MjAsNyArODIwLDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJE
YXRhYmFzZUluZm8mIGluZm8KIAogICAgIFN0cmluZyBkYkZpbGVuYW1lID0gZnVsbERhdGFiYXNl
UGF0aCgpOwogCi0gICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0YWJh
c2U+KCk7CisgICAgbV9zcWxpdGVEQiA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CiAg
ICAgaWYgKCFtX3NxbGl0ZURCLT5vcGVuKGRiRmlsZW5hbWUpKSB7CiAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5h
bWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKQEAgLTkwMywxMSAr
OTAzLDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlv
bihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZXN0YWJsaXNoIHRyYW5zYWN0aW9uIGlkZW50
aWZpZXIgdGhhdCBhbHJlYWR5IGV4aXN0cyJfcyB9OwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigq
dGhpcywgaW5mbyk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
U1FMaXRlSURCVHJhbnNhY3Rpb24+KCp0aGlzLCBpbmZvKTsKIAogICAgIGF1dG8gZXJyb3IgPSBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5iZWdpbigqbV9zcWxpdGVEQik7CiAgICAgaWYgKGVy
cm9yLmlzTnVsbCgpICYmIGluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lv
bmNoYW5nZSkgewotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNo
YW5nZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8p
OworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8pOwogCiAgICAgICAgIFNR
TGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsICJVUERBVEUgSURCRGF0YWJhc2VJbmZvIFNF
VCB2YWx1ZSA9ID8gd2hlcmUga2V5ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKICAgICAgICAg
aWYgKHNxbC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC0yNjExLDcgKzI2MTEsNyBAQCBTUUxp
dGVTdGF0ZW1lbnQqIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50KFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6UwogICAgIH0KIAogICAgIGlmIChtX3NxbGl0ZURCKSB7Ci0gICAg
ICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gc3RkOjpt
YWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQpOworICAg
ICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IG1ha2VV
bmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKICAgICAgICAg
aWYgKG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldLT5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19j
YXN0PHNpemVfdD4oc3FsKV0gPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAK
aW5kZXggZjg0MDVhNzk4YTM2ODEwZGM1NzZhZjFlNzNiY2FmNTMxMDIzN2JhZi4uYzZiM2ZkOTUz
YTBkNTNhYzE1NjhlMjg0OGNiYzc4YTEyZjE5NTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0ID0gODsK
IAogc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXli
ZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkN1cnNv
ckluZm8mIGluZm8pCiB7Ci0gICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0
ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8pOworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVu
aXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKIAogICAgIGlmICghY3Vy
c29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01
OSw3ICs1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1
cnNvcjo6bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxT
UUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVD
dXJzb3IoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50NjRfdCBv
YmplY3RTdG9yZUlELCBjb25zdCB1aW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlKQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJ
REJDdXJzb3I+KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7Cisg
ICAgYXV0byBjdXJzb3IgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24s
IG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIHJhbmdlKTsKIAogICAgIGlmICghY3Vyc29yLT5lc3Rh
Ymxpc2hTdGF0ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTksNyArMTk5
LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBT
dHJpbmcmIHNxbCkKICAgICBBU1NFUlQoIW1fY3VycmVudFVwcGVyS2V5LmlzTnVsbCgpKTsKICAg
ICBBU1NFUlQobV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKSk7CiAKLSAgICBtX3N0
YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9u
LT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOworICAgIG1fc3RhdGVtZW50
ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5z
YWN0aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7CiAKICAgICBpZiAobV9zdGF0ZW1lbnQtPnByZXBh
cmUoKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRl
IGN1cnNvciBzdGF0ZW1lbnQgKHByZXBhcmUvaWQpIC0gJyVzJyIsIG1fdHJhbnNhY3Rpb24tPnNx
bGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwpAQCAtNDY0LDcg
KzQ2NCw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjpp
bnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpCi0g
ICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJWYWx1
ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVS
THMsIGJsb2JGaWxlUGF0aHMpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG1h
a2VVbmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShr
ZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXpl
KCksIHJlY29yZC5yZWNvcmQucHJpbWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIGRlc2VyaWFsaXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZh
bmNpbmcgaW5kZXggY3Vyc29yIik7CkBAIC00ODYsNyArNDg2LDcgQEAgU1FMaXRlSURCQ3Vyc29y
OjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNR
TGl0ZUN1cnMKIAogICAgICAgICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAgICAgICAg
ICAgIG9iamVjdFN0b3JlU3RhdGVtZW50LmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlEYXRh
KTsKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsK
KyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihU
aHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKICAgICAgICAg
fSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
aW5kaWNhdGVzIHRoYXQgdGhlIHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUgaGFzIGJl
ZW4gcmVtb3ZlZCBmcm9tIHRoZSBvYmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBTa2lwIG92
ZXIgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBhNmEzYzVmZmYzMzgw
YzI1ZWY3MzYxZTY4OGJlZjM2YzA2MTVmYzgzLi5kMjEyZGUyYjZiODhhZmZlMGEzNWIwZmQwZmQz
M2ZjODY3Y2VjYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKFNRTGl0ZURhdGFi
YXNlJiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwogCi0g
ICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJhbnNhY3Rp
b24+KGRhdGFiYXNlLCBtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9u
bHkpOworICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRyYW5zYWN0
aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRv
bmx5KTsKICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgaWYgKG1fc3Fs
aXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmlu
ZGV4IDFlYmMwODE4Zjg5ZWYzZjc2YjQ2YjI3ZGU3NGYzMWNjYzNlNDZjY2YuLmJlNTkxYjk4ODQw
ZWRhZDY0ODBhZjBjNDFiN2M4ZTkyYzVmMTJhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJh
Y2tpbmdTdG9yZSh1aW50NjRfdCBkZWxldGVkVmVyc2lvbikKICAgICAvLyB3ZSB3b24ndCBoYXZl
IGEgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mby4gSW4gdGhhdCBjYXNlLCB3ZSdsbCBt
YW51ZmFjdHVyZSBvbmUgdXNpbmcgdGhlCiAgICAgLy8gcGFzc2VkIGluIGRlbGV0ZWRWZXJzaW9u
IGFyZ3VtZW50LgogICAgIGlmICghbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbykKLSAg
ICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRWZXJz
aW9uKTsKKyAgICAgICAgbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IG1ha2VVbmlx
dWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRW
ZXJzaW9uKTsKIAogICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0KSB7CiAgICAgICAgIG1f
Y3VycmVudE9wZW5EQlJlcXVlc3QtPm5vdGlmeURpZERlbGV0ZURhdGFiYXNlKCptX21vc3RSZWNl
bnREZWxldGVkRGF0YWJhc2VJbmZvKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5m
bywgY29uc3QgSQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIpOwogICAg
IAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGluZm8pOwogICAgIG1fYmFja2luZ1N0b3JlT3BlbkVycm9yID0gZXJyb3I7CiAKICAgICBBU1NF
UlQobV9pc09wZW5pbmdCYWNraW5nU3RvcmUpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2Fs
bGJhY2tJZGVudGlmaWVyLAogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24gPT0gdHJhbnNhY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZURhdGFi
YXNlQ29ubmVjdGlvbiB8fCAmbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmRhdGFiYXNlQ29u
bmVjdGlvbigpID09IG1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CiAgICAgICAg
IEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8o
KSk7Ci0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8o
KSk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CiAg
ICAgfQogCiAgICAgSURCRXJyb3IgcmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkgPT0gVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2FjdGlvbi0+
cmVzdWx0KCkgOiBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmNwcAppbmRleCBmMTdhNGU1NTIzZmI1ZjYxYjAyNmEwOTE0N2Y4MTQxZDViNjQxMzlhLi44
NTQwY2E3ODZkNTczNThkOTgyYzczZTY0NjBmN2Y4ZjBhODgzNDU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBAIC01MSw3ICs1MSw3IEBAIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5p
cXVlSURCRGF0YWJhc2VDb25uCiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKIAogICAgIGlmIChtX3Ry
YW5zYWN0aW9uSW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdl
KQotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOworICAgICAgICBtX29yaWdpbmFsRGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwog
CiAgICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5zZXJ2ZXIoKSkK
ICAgICAgICAgc2VydmVyLT5yZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuY3BwCmluZGV4IGIxMGQ4NDA5OWIyNTI4ZTZmNzNjMjhiMTUwNGE4YTkzMjRkMGIyMWEuLjIx
NjQxNmFmYTExY2YyNTVkMzZkZWZiM2VmZjM2ZWZhZjE5NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRh
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoKQog
CiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94eSwgY29uc3QgSURCT3BlbkRCUmVxdWVzdCYgcmVx
dWVzdCkKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvblByb3h5
LnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVy
KHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHks
IHJlcXVlc3QpKQorICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291
cmNlSWRlbnRpZmllcj4oY29ubmVjdGlvblByb3h5LCByZXF1ZXN0KSkKICAgICAsIG1fZGF0YWJh
c2VJZGVudGlmaWVyKHJlcXVlc3QuZGF0YWJhc2VJZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVl
c3RlZFZlcnNpb24ocmVxdWVzdC52ZXJzaW9uKCkpCiAgICAgLCBtX3JlcXVlc3RUeXBlKHJlcXVl
c3QucmVxdWVzdFR5cGUoKSkKQEAgLTQ5LDggKzQ5LDggQEAgSURCUmVxdWVzdERhdGE6OklEQlJl
cXVlc3REYXRhKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9u
UHIKIAogSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb24mIG9wZXJhdGlvbikKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIob3BlcmF0aW9uLnRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5jb25uZWN0aW9uUHJveHkoKS5z
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihz
dGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZp
ZXIoKSkpCi0gICAgLCBtX3RyYW5zYWN0aW9uSWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkK
KyAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpKQorICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZp
ZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSkpCiAgICAgLCBtX29iamVjdFN0b3JlSWRlbnRpZmllcihvcGVyYXRpb24u
b2JqZWN0U3RvcmVJZGVudGlmaWVyKCkpCiAgICAgLCBtX2luZGV4SWRlbnRpZmllcihvcGVyYXRp
b24uaW5kZXhJZGVudGlmaWVyKCkpCiB7CkBAIC01OCw3ICs1OCw3IEBAIElEQlJlcXVlc3REYXRh
OjpJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRp
b24pCiAgICAgICAgIG1faW5kZXhSZWNvcmRUeXBlID0gb3BlcmF0aW9uLmluZGV4UmVjb3JkVHlw
ZSgpOwogCiAgICAgaWYgKG9wZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpCi0gICAgICAgIG1f
Y3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVy
Pigqb3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRp
ZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNv
cklkZW50aWZpZXIoKSk7CiB9CiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25z
dCBJREJSZXF1ZXN0RGF0YSYgb3RoZXIpCkBAIC03MSwxMSArNzEsMTEgQEAgSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKICAgICAsIG1f
cmVxdWVzdFR5cGUob3RoZXIubV9yZXF1ZXN0VHlwZSkKIHsKICAgICBpZiAob3RoZXIubV9yZXF1
ZXN0SWRlbnRpZmllcikKLSAgICAgICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7
CisgICAgICAgIG1fcmVxdWVzdElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX3Ry
YW5zYWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKICAgICBpZiAob3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnNvcklk
ZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVy
Lm1fY3Vyc29ySWRlbnRpZmllcik7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsK
IH0KIAogSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRh
JiB0aGF0LCBJc29sYXRlZENvcHlUYWcpCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCB2b2lkIElEQlJl
cXVlc3REYXRhOjppc29sYXRlZENvcHkoY29uc3QgSURCUmVxdWVzdERhdGEmIHNvdXJjZSwgSURC
UmVxdWVzdERhdGEmCiAgICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJZGVudGlmaWVyID0g
c291cmNlLm1fZGF0YWJhc2VJZGVudGlmaWVyLT5pc29sYXRlZENvcHkoKTsKIAogICAgIGlmIChz
b3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0
SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291
cmNlLm1fcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3JlcXVlc3RJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9y
ZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmll
cikKLSAgICAgICAgZGVzdGluYXRpb24ubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSWRl
bnRpZmllcik7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklk
ZW50aWZpZXIpOwogICAgIGlmIChzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBk
ZXN0aW5hdGlvbi5tX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291
cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBkZXN0
aW5hdGlvbi5tX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRp
Zmllcj4oKnNvdXJjZS5tX2N1cnNvcklkZW50aWZpZXIpOwogfQogCiB1aW50NjRfdCBJREJSZXF1
ZXN0RGF0YTo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEu
aAppbmRleCA0NWNmZmFlYTYwM2E1M2I1OTkwNGM4YjE0YjdhMWRlZjdkMjVmMzEwLi40MDhiNGU0
NjI4NzMzN2I5YWMzNDRhZmJmNDY5MTU4NjhlODBmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAt
MTU2LDcgKzE1Niw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhh
c09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3JlcXVlc3RJ
ZGVudGlmaWVyID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgSURC
UmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
REJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IFdURk1vdmUo
b2JqZWN0KTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhh
c09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVy
PiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFr
ZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVl
c3QubV9jdXJzb3JJZGVudGlmaWVyID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3Bw
CmluZGV4IGE4OTQ1NGU2ZTYzZjZlYjdjYjUwMzhiOWM5MzJmYTIxODYzM2VkYzYuLjRjYmQ1ZDli
ZGYwYTg1MjNiZjdmNTJhYzViYzVjYjRiN2VkMTA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAg
LTU3LDE1ICs1NywxNSBAQCBJREJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJl
c3VsdERhdGEmIG90aGVyKQogICAgICwgbV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50
ZWdlcikKIHsKICAgICBpZiAob3RoZXIubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJh
c2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFi
YXNlSW5mbyk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rp
b25JbmZvKQotICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
VHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOworICAgICAgICBtX3Ry
YW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90
cmFuc2FjdGlvbkluZm8pOwogICAgIGlmIChvdGhlci5tX3Jlc3VsdEtleSkKLSAgICAgICAgbV9y
ZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtl
eSk7CisgICAgICAgIG1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIu
bV9yZXN1bHRLZXkpOwogICAgIGlmIChvdGhlci5tX2dldFJlc3VsdCkKLSAgICAgICAgbV9nZXRS
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0
KTsKKyAgICAgICAgbV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVy
Lm1fZ2V0UmVzdWx0KTsKICAgICBpZiAob3RoZXIubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIG1f
Z2V0QWxsUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5t
X2dldEFsbFJlc3VsdCk7CisgICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJH
ZXRBbGxSZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7CiB9CiAKIElEQlJlc3VsdERhdGE6
OklEQlJlc3VsdERhdGEoY29uc3QgSURCUmVzdWx0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFn
KQpAQCAtODcsMTUgKzg3LDE1IEBAIHZvaWQgSURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KGNv
bnN0IElEQlJlc3VsdERhdGEmIHNvdXJjZSwgSURCUmVzdWx0RGF0YSYgZGVzCiAgICAgZGVzdGlu
YXRpb24ubV9yZXN1bHRJbnRlZ2VyID0gc291cmNlLm1fcmVzdWx0SW50ZWdlcjsKIAogICAgIGlm
IChzb3VyY2UubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJ
bmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFz
ZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRp
b24ubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5t
X2RhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChz
b3VyY2UubV90cmFuc2FjdGlvbkluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rp
b25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90
cmFuc2FjdGlvbkluZm8sIElEQlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAg
ICAgZGVzdGluYXRpb24ubV90cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0
aW9uSW5mbz4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJ
c29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV9yZXN1bHRLZXkpCi0gICAgICAgIGRlc3Rp
bmF0aW9uLm1fcmVzdWx0S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqc291cmNl
Lm1fcmVzdWx0S2V5LCBJREJLZXlEYXRhOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5h
dGlvbi5tX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3Vs
dEtleSwgSURCS2V5RGF0YTo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fZ2V0UmVz
dWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCR2V0UmVzdWx0Pigqc291cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVk
Q29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJH
ZXRSZXN1bHQ+KCpzb3VyY2UubV9nZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNvbGF0ZWRDb3B5
KTsKICAgICBpZiAoc291cmNlLm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5t
X2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNl
Lm1fZ2V0QWxsUmVzdWx0LCBJREJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAg
IGRlc3RpbmF0aW9uLm1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+
KCpzb3VyY2UubV9nZXRBbGxSZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsK
IH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjplcnJvcihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCkBA
IC0xMTEsNyArMTExLDcgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJh
c2VTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmUKICAgICBJREJSZXN1bHRE
YXRhIHJlc3VsdCB7IHJlcXVlc3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElE
QlJlc3VsdFR5cGU6Ok9wZW5EYXRhYmFzZVN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIHJlc3Vs
dC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25u
ZWN0aW9uLmRhdGFiYXNlKCktPmluZm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0g
bWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBJREJSZXN1
bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaQogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50
aWZpZXIgfTsKICAgICByZXN1bHQubV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNl
VXBncmFkZU5lZWRlZDsKICAgICByZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gdHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigpOwotICAgIHJl
c3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPih0
cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOwotICAg
IHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rp
b25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rp
b24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOworICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9
IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRl
RGF0YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBJREJSZXN1bHREYXRh
IHJlc3VsdCB7SURCUmVzdWx0VHlwZTo6RGVsZXRlRGF0YWJhc2VTdWNjZXNzLCByZXF1ZXN0SWRl
bnRpZmllciB9OwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMTcxLDIxICsxNzEsMjEgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpyZW5hbWVJ
bmRleFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXEKIElEQlJlc3VsdERh
dGEgSURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsK
ICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OlB1dE9yQWRkU3VjY2Vz
cywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9yZXN1bHRLZXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQktleURhdGE+KHJlc3VsdEtleSk7CisgICAgcmVzdWx0Lm1fcmVzdWx0S2V5
ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPihyZXN1bHRLZXkpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyhjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRS
ZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3Vs
dFR5cGU6OkdldFJlY29yZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0
Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7
CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHRE
YXRhOjpnZXRBbGxSZWNvcmRzU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRBbGxSZXN1bHQmIGdldEFsbFJlc3VsdCkKIHsK
ICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNT
dWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOworICAgIHJl
c3VsdC5tX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxS
ZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIwNCwxNCArMjA0LDE0IEBAIElE
QlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5D
dXJzb3JTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEg
cmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlm
aWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRS
ZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJ
REJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVz
dWx0RGF0YSBJREJSZXN1bHREYXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdl
dFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Okl0
ZXJhdGVDdXJzb3JTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dl
dFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAg
IHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDcxN2IzZTJkZTUz
YjM1M2ZlYjZkZDc1NTAwYTBlNWU2OGM5NDdhM2YuLjYyMDYyYTFlMjk1ZjdiNTk4MTU4OTViNTdi
ZWMwMDhlNWIxODc2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6
OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAg
ICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKKyAg
ICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0
KTsKQEAgLTE5Myw3ICsxOTMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJ
REJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVu
aXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Km9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1
bHQubV90cmFuc2FjdGlvbkluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMDIsNyArMjAyLDcg
QEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVz
dWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09i
amVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkg
ewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKTsK
KyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAg
IE9wdGlvbmFsPElEQktleURhdGE+IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlv
bmFsOwogICAgICAgICBpZiAoIW9wdGlvbmFsKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRl
Y29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAg
YXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKTsKKyAgICAgICAg
YXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIyMyw3
ICsyMjMsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRh
PiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFz
T2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRB
bGxSZXN1bHQ+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxS
ZXN1bHQ+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQg
PSBXVEZNb3ZlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCmluZGV4IDk4M2Mx
YzExYzk5YjQ1YjZjZTU0NGRmY2FjMDM3ZTRjNzM3Mjk1YzMuLjRmYjk5OTE5ZjY3ZDVmN2M5YWJj
MTA5ZTJlMzAwMGNjZTRjNDQwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCkBAIC01
NSw3ICs1NSw3IEBAIElEQlRyYW5zYWN0aW9uSW5mbyBJREJUcmFuc2FjdGlvbkluZm86OnZlcnNp
b25DaGFuZ2UoY29uc3QgSURCU2VydmVyOjpJREJDb25uZWN0CiAgICAgSURCVHJhbnNhY3Rpb25J
bmZvIHJlc3VsdCgoSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pKSk7CiAgICAgcmVz
dWx0Lm1fbW9kZSA9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZTsKICAgICByZXN1
bHQubV9uZXdWZXJzaW9uID0gbmV3VmVyc2lvbjsKLSAgICByZXN1bHQubV9vcmlnaW5hbERhdGFi
YXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFi
YXNlSW5mbyk7CisgICAgcmVzdWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4ob3JpZ2luYWxEYXRhYmFzZUluZm8pOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KQEAgLTY3LDcgKzY3LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2Fj
dGlvbkluZm8oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICwgbV9vYmplY3RT
dG9yZXMoaW5mby5tX29iamVjdFN0b3JlcykKIHsKICAgICBpZiAoaW5mby5tX29yaWdpbmFsRGF0
YWJhc2VJbmZvKQotICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAg
ICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOwogfQogCiBJREJUcmFuc2FjdGlvbkluZm86
OklEQlRyYW5zYWN0aW9uSW5mbyhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHRoYXQsIElzb2xh
dGVkQ29weVRhZykKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkluZm86Omlz
b2xhdGVkQ29weShjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHNvdXJjZSwgSURCVHJhbnMKICAg
ICAgICAgZGVzdGluYXRpb24ubV9vYmplY3RTdG9yZXMudW5jaGVja2VkQXBwZW5kKG9iamVjdFN0
b3JlLmlzb2xhdGVkQ29weSgpKTsKIAogICAgIGlmIChzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNl
SW5mbykKLSAgICAgICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24u
bV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291
cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5
KTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAppbmRleCA5
MzBkODAyMzYxODIzMmFiZjZjMDgxZGYyMTI5NThmZjYyYTU1NWVkLi43Yjk0NzdlOGVjNTU0Yzkx
M2QyYTQ4YmU1NThlMTYzM2Q5M2ZjZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCkBAIC0x
MTksNyArMTE5LDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkluZm86OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFi
YXNlSW5mbz4gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IG1ha2VVbmlx
dWU8SURCRGF0YWJhc2VJbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmpl
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpbmZvLm1fb3JpZ2luYWxE
YXRhYmFzZUluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
CmluZGV4IDg3YjFhZGNkOTY2NjIwNmVjOTcxNjYwMzYyYjQwZTVhZDdkODAxZDEuLmM5Njg5NDQ0
ZmQyMjQwMmNlZDIxMTNiM2JmYTBiOWE1MjZjNjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vz
c0lEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiBTdG9yYWdl
UXVvdGFNYW5hZ2VyKiBJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGll
bnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShv
cmlnaW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3Rh
TWFuYWdlcj4oU3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90
IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1
dG8gY2FsbGJhY2spIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFu
YWdlcj4oU3RvcmFnZVF1b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1
b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8g
Y2FsbGJhY2spIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsg
c3BhY2VJbmNyZWFzZSk7CiAgICAgICAgIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMv
TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5kZXggZjg3
MjU3NGU4NWMyNDA4NzcyYjFkMTFhMmU4YmNiNmRkNjBkYTI5Ny4uYTMxYmFkYjU0YWM5ODFlMGUz
YmFkYWZlMjA5ODc4MjlkM2Y3NDAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNh
cGFiaWxpdGllcy5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRp
ZXMmIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG8K
IHsKICAgICBOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcyogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpm
cm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0
b3JNZWRpYUNhcGFiaWxpdGllcz4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcz4oKTsKICAgICAgICAgc3VwcGxlbWVu
dCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBz
dXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlh
U2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IDUwZDBiYjBiMWVkNTNhNDMyNDU4ZDlmYjcxMzU3MGFl
MGVjYTBkMDYuLmI5NzQzNGM0ZTYyNDVkNzNjY2YyZDYyNWEwYTFiMDNlMTI5MGNiZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyOjpzZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNv
bnN0IFN0cmluZyYKIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyOjptb2NrUGlja2VyKCkKIHsKICAgICBpZiAoIW1fcGlja2VyT3ZlcnJpZGUpCi0g
ICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CisgICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBtYWtl
VW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CiAKICAgICByZXR1
cm4gKm1fcGlja2VyT3ZlcnJpZGUuZ2V0KCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdWludDY0
X3QgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQo
V2ViTWVkaWFTZXNzaW9uTWEKIAogICAgIExPRyhNZWRpYSwgIldlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KCVwICsgJWxsdSkiLCAmY2xpZW50LCBj
b250ZXh0SWQpOwogCi0gICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxD
bGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKKyAgICBtX2NsaWVudFN0YXRlLmFwcGVu
ZChtYWtlVW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwogCiAgICAgaWYg
KG1fZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKICAg
ICAgICAgc2NoZWR1bGVEZWxheWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJn
ZXRDbGllbnRzQ29uZmlndXJhdGlvblRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAppbmRleCBkNDE3YTEyMTY5MTExMjE1ZDU0
MjI5MWUwM2M1OWQ1ZDZlN2ViM2Y0Li43Y2JjNmExMzM1MWUwZDMyY2UyNTVhOWJhZGNiOTc0NGRh
ZjRkNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcApAQCAtMTc4LDkgKzE3OCw5IEBAIE1lZGlhVGltZSBNZWRpYVNvdXJjZTo6
Y3VycmVudFRpbWUoKSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
TWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKICAgICBpZiAobV9idWZmZXJlZCAmJiBt
X2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmxlbmd0aCgpICYmIHN0ZDo6YWxsX29mKG1fYWN0aXZlU291
cmNlQnVmZmVycy0+YmVnaW4oKSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5lbmQoKSwgW10oYXV0
byYgYnVmZmVyKSB7IHJldHVybiAhYnVmZmVyLT5pc0J1ZmZlcmVkRGlydHkoKTsgfSkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVy
ZWQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1
ZmZlcmVkKTsKIAotICAgIG1fYnVmZmVyZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oKTsKKyAgICBtX2J1ZmZlcmVkID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCk7CiAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiAqbV9hY3RpdmVTb3VyY2VCdWZm
ZXJzKQogICAgICAgICBzb3VyY2VCdWZmZXItPnNldEJ1ZmZlcmVkRGlydHkoZmFsc2UpOwogCkBA
IC0xOTAsNyArMTkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVk
aWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKIAogICAgIC8vIDEuIElmIGFjdGl2ZVNvdXJjZUJ1
ZmZlcnMubGVuZ3RoIGVxdWFscyAwIHRoZW4gcmV0dXJuIGFuIGVtcHR5IFRpbWVSYW5nZXMgb2Jq
ZWN0IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoYWN0aXZlUmFuZ2VzLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigq
bV9idWZmZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKm1fYnVmZmVyZWQpOwogCiAgICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJh
bmdlcyByZXR1cm5lZCBieSBidWZmZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGlu
IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMuCiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUg
dGhlIGxhcmdlc3QgcmFuZ2UgZW5kIHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0yMDMs
NyArMjAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3Vy
Y2U6OmJ1ZmZlcmVkKCkgY29uc3QKIAogICAgIC8vIFJldHVybiBhbiBlbXB0eSByYW5nZSBpZiBh
bGwgcmFuZ2VzIGFyZSBlbXB0eS4KICAgICBpZiAoIWhpZ2hlc3RFbmRUaW1lKQotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJl
ZCk7CiAKICAgICAvLyA0LiBMZXQgaW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5n
ZSBvYmplY3QgY29udGFpbmluZyBhIHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQg
dGltZS4KICAgICBtX2J1ZmZlcmVkLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBoaWdoZXN0
RW5kVGltZSk7CkBAIC0yMjEsNyArMjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgbV9idWZmZXJl
ZC0+aW50ZXJzZWN0V2l0aChzb3VyY2VSYW5nZXMpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogfQogCiB2b2lk
IE1lZGlhU291cmNlOjpzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKQEAgLTM0NCw3
ICszNDQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxl
UmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQogCiAgICAgLy8gU2V0IGxpdmUgc2Vla2Fi
bGUgcmFuZ2UgdG8gYmUgYSBuZXcgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBjb250YWlu
aW5nIGEgc2luZ2xlIHJhbmdlCiAgICAgLy8gd2hvc2Ugc3RhcnQgcG9zaXRpb24gaXMgc3RhcnQg
YW5kIGVuZCBwb3NpdGlvbiBpcyBlbmQuCi0gICAgbV9saXZlU2Vla2FibGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0
YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCkpOworICAgIG1fbGl2ZVNlZWth
YmxlID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKIAogICAg
IHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKaW5kZXggZTQxODI3ODM4ZDYy
Y2EzOGZjM2JmM2JlNzhmOGY0YWE4YWU1MjU5Ni4uN2IzNThmNWUwZGU0MmZiMjI2OGQzNjkwM2U1
OGRiNWViNzhlOTBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApAQCAtNTEsNyArNTEsNyBA
QCBOYXZpZ2F0b3JNZWRpYURldmljZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZp
Z2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBsZW1l
bnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5hdmln
YXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3ItPndpbmRvdygpKTsKKyAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmln
YXRvci0+d2luZG93KCkpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQo
KTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92
ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKaW5kZXggOGQ3ZTYz
Y2M2MDZkNmRhMTlmYmRiMTJkZTU0ZmI4NTVmZGY2MmM5OS4uMTRkZjExNjFkYWU2OGNjNDZjYjQ5
ZWFhZTIxZjVlZjk4OWUyYWNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3
IEBAIFVzZXJNZWRpYUNvbnRyb2xsZXI6On5Vc2VyTWVkaWFDb250cm9sbGVyKCkKIAogdm9pZCBw
cm92aWRlVXNlck1lZGlhVG8oUGFnZSogcGFnZSwgVXNlck1lZGlhQ2xpZW50KiBjbGllbnQpCiB7
Ci0gICAgVXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRy
b2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ29udHJv
bGxlcj4oY2xpZW50KSk7CisgICAgVXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2Us
IFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VXNlck1l
ZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlY3Vy
ZShEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCBhYWE0MDAwMjA3MzY1ZmZjYmU1
MjgxMjhlMjhjZTAyZjZjNjA3Y2RkLi5jOTg1YmMxOWEzMWQwMTE0NTY1YWJhYmE1ZjA2MGVlNTBk
YTYxMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IExpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hhbm5lbEV2ZW50KFNjcmlwdEV4ZWN1dGkKICAgICBp
bml0Lm5lZ290aWF0ZWQgPSBkYXRhQ2hhbm5lbC0+bmVnb3RpYXRlZCgpOwogICAgIGluaXQuaWQg
PSBkYXRhQ2hhbm5lbC0+aWQoKTsKIAotICAgIGF1dG8gaGFuZGxlciA9ICBzdGQ6Om1ha2VfdW5p
cXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOwor
ICAgIGF1dG8gaGFuZGxlciA9ICBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOwogICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0RhdGFDaGFu
bmVsOjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShoYW5kbGVyKSwgZnJvbVN0ZFN0cmluZyhsYWJl
bCksIFdURk1vdmUoaW5pdCkpOwogCiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZGF0YWNoYW5uZWxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKGNoYW5uZWwpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggZGVmMWY5MWVlZTllZDZlYzc4
ZDEzYzY5ZWM0MzQ4ZjBhYTY4ZDM2Ny4uZDFhNzRiODU3MWJlZTdlZTVlOWMzMTYyZWNhMmY0ZDZm
ZjQxZTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAK
QEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90
ZVRyYWNrKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9
CiAKLSAgICByZWNlaXZlci0+c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+
c2V0QmFja2VuZChtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92
ZShydGNSZWNlaXZlcikpKTsKICAgICBhdXRvJiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwog
ICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KHJlY2VpdmVyLnJlbGVhc2VOb25OdWxsKCksIHRyYWNr
LCBydGNTdHJlYW1zLCBudWxscHRyKTsKIH0KQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXNv
dXJjZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFj
a2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRy
YW5zY2VpdmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZN
b3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiB9
CiAKQEAgLTQ5OSw3ICs0OTksNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1Ry
YW5zY2VpdmVyKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zYwogICAgIGlmICgh
c291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVy
KSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9
IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSks
IHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KG1h
a2VSZWYobmV3VHJhbnNjZWl2ZXIucmVjZWl2ZXIoKSksIG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVy
KCkudHJhY2soKSwgcnRjUmVjZWl2ZXItPnN0cmVhbXMoKSwgbWFrZVJlZihuZXdUcmFuc2NlaXZl
cikpOwogfQpAQCAtNTM0LDcgKzUzNCw3IEBAIE9wdGlvbmFsPExpYldlYlJUQ01lZGlhRW5kcG9p
bnQ6OkJhY2tlbmRzPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVUcmFuc2NlCiAgICAg
aWYgKCFyZXN1bHQub2soKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1
dG8gdHJhbnNjZWl2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVy
QmFja2VuZD4ocmVzdWx0Lk1vdmVWYWx1ZSgpKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gbWFr
ZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUo
KSk7CiAgICAgcmV0dXJuIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzIHsgdHJhbnNj
ZWl2ZXItPmNyZWF0ZVNlbmRlckJhY2tlbmQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQsIFdURk1v
dmUoc291cmNlKSksIHRyYW5zY2VpdmVyLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSwgV1RGTW92
ZSh0cmFuc2NlaXZlcikgfTsKIH0KIApAQCAtNTg1LDcgKzU4NSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OnRyYW5zY2VpCiB7CiAgICAgZm9yIChhdXRvJiB0cmFuc2NlaXZlciA6IG1fYmFja2VuZC0+R2V0
VHJhbnNjZWl2ZXJzKCkpIHsKICAgICAgICAgaWYgKHRyYW5zY2VpdmVyLT5zZW5kZXIoKS5nZXQo
KSA9PSBiYWNrZW5kLnJ0Y1NlbmRlcigpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpSdHBUcmFuc2NlaXZlckludGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2Vp
dmVyKSk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtNjU0LDcgKzY1NCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsCiB7CiAgICAgYXV0byBpbml0ID0gTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyOjpmcm9tUlRDRGF0YUNoYW5uZWxJbml0KG9wdGlvbnMpOwogICAgIGF1
dG8gY2hhbm5lbCA9IG1fYmFja2VuZC0+Q3JlYXRlRGF0YUNoYW5uZWwobGFiZWwudXRmOCgpLmRh
dGEoKSwgJmluaXQpOwotICAgIHJldHVybiBjaGFubmVsID8gc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKKyAg
ICByZXR1cm4gY2hhbm5lbCA/IG1ha2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
PihXVEZNb3ZlKGNoYW5uZWwpKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6T25EYXRhQ2hhbm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hh
bm5lbEludGVyZmFjZT4gZGF0YUNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyMDdmMTVlNjQ1N2I5ZGZjYWMx
YzMzOWVhMzlmZWExZDc3ODU5ZDhiLi5mYzkxY2NkMGJiZDFmZGJiYTc2NDJlNzA0ZjM3ZmU4NWNj
NzJmZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2UK
IAogICAgIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkuc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlv
bihwYWdlLT5zZXR0aW5ncygpLndlYlJUQ0VuY3J5cHRpb25FbmFibGVkKCkpOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVy
Q29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFn
ZS0+bGliV2ViUlRDUHJvdmlkZXIoKSk7CiB9CiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2Vu
ZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDsKQEAgLTMxMSw3ICszMTEsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OlZpZGVvUmVjZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2
aQogICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUo
bnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJl
Y2VpdmVyRm9yU291cmNlKHNvdXJjZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBz
ZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
PigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFu
c2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUo
KnRoaXMsICJ2aWRlbyJfcywgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIu
Y29weVJlZigpLCBudWxscHRyKTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJl
Y3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJh
bnNjZWl2ZXIpKTsKQEAgLTMzNCw3ICszMzQsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OkF1ZGlvUmVjZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdQog
ICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVs
bHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2Vp
dmVyRm9yU291cmNlKHNvdXJjZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5k
ZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigq
dGhpcywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2Nl
aXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRo
aXMsICJhdWRpbyJfcywgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29w
eVJlZigpLCBudWxscHRyKTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rp
b24oKTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNj
ZWl2ZXIpKTsKQEAgLTQwMCw3ICs0MDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBT
ZW5kZXI+IGZpbmRFeGlzdGluZ1NlbmRlcihjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cAogRXhj
ZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVk
aWFTdHJlYW1JZHMpCiB7CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5FbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBzZW5k
ZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigq
dGhpcywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBpZiAo
IW1fZW5kcG9pbnQtPmFkZFRyYWNrKCpzZW5kZXJCYWNrZW5kLCB0cmFjaywgbWVkaWFTdHJlYW1J
ZHMpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuYWJsZSB0
byBhZGQgdHJhY2siX3MgfTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxS
VENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1l
ZGlhU3RyCiAgICAgICAgIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgpOwog
ICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAot
ICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNr
ZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0
cik7CiAgICAgICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMs
IG1ha2VSZWYodHJhY2spLCBWZWN0b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1v
dmUoc2VuZGVyQmFja2VuZCkpOwogICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2
ZXIodHJhY2tLaW5kLCB0cmFja0lkKTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0
cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVy
KSwgbnVsbHB0cik7CkBAIC00NzIsNyArNDcyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRy
YW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYK
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENV
bmlmaWVkUGxhbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNj
ZWl2ZXIoU3RyaW5nIHsgdHJhY2tLaW5kIH0sIGluaXQpOwogCi0gICAgYXV0byBzZW5kZXJCYWNr
ZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywg
bnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byBuZXdTZW5kZXIgPSBS
VENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJp
bmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIHJldHVybiBjb21wbGV0ZUFkZFRy
YW5zY2VpdmVyKFdURk1vdmUobmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpLCB0cmFja0tpbmQpOwogfQpAQCAtNDgyLDcgKzQ4Miw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxSVENSdHBUcmFuc2NlaXZlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRk
VHJhbnNjZWl2CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2ViUlRDVW5pZmllZFBsYW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVk
UGxhblRyYW5zY2VpdmVyKFdURk1vdmUodHJhY2spLCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVy
QmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRo
aXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8mIGJhY2tlbmQg
PSAqc2VuZGVyQmFja2VuZDsKICAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRl
KCp0aGlzLCB0cmFjay5jb3B5UmVmKCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVy
QmFja2VuZCkpOwogICAgIGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soYmFja2VuZCwgdHJhY2ss
IFZlY3RvcjxTdHJpbmc+IHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQuY3BwCmluZGV4IDY4NTBlNmE4NWU5MDI0YmIxMTQ1YjZiOTQyMjljMGY2MTQy
ZGY3YWEuLjZhZWVhMTMzODkyZDIwNjNmMDM1MzliOGVlYzRkYjliY2U2NGQ3ZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgdm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRQYXJhbWV0ZXJzKGNv
bnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiBwYXJhbWUKIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RU
TUZTZW5kZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFj
a2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRFRNRlNlbmRl
ckJhY2tlbmQ+KG1fcnRjU2VuZGVyLT5HZXREdG1mU2VuZGVyKCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNl
bmRlcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKaW5kZXggZWI4NzFlYjdk
YjAzODg0ZjRjYzdlMGFkZWY2ODc4MmUxYzA5NzJkNy4uNWMwZDdlOTVlMmZkMTJlM2Y4NGYxN2Nm
YmViNmQ4NjdhNTFmMmU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBM
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5k
PihtX3J0Y1RyYW5zY2VpdmVyLT5yZWNlaXZlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4gTGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZCYgYmFja2VuZCwgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6
U291cmNlJiYgc291cmNlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBX
VEZNb3ZlKHNvdXJjZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ+KGJhY2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNv
dXJjZSkpOwogfQogCiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQ6OmRpcmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDBjMzI4ZmFl
NDQyMzU5OTI1MzMwNzJjODVkNmIzMmZkYzZjMTM4MzguLjBlYmFmZjg5ZmZiYzUwMDNlMjQ2MWJh
ZGVlNTIwMzkxMTcxY2JkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5vdGlmaWNh
dGlvbjo6Tm90aWZpY2F0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgT3B0aW9uCiAgICAgLCBtX2JvZHkob3B0aW9ucy5ib2R5KQogICAgICwgbV90YWco
b3B0aW9ucy50YWcpCiAgICAgLCBtX3N0YXRlKElkbGUpCi0gICAgLCBtX3Rhc2tUaW1lcihzdGQ6
Om1ha2VfdW5pcXVlPFRpbWVyPihbdGhpc10gKCkgeyBzaG93KCk7IH0pKQorICAgICwgbV90YXNr
VGltZXIobWFrZVVuaXF1ZTxUaW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKIHsKICAgICBp
ZiAoIW9wdGlvbnMuaWNvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBpY29uVVJMID0gZG9j
dW1lbnQuY29tcGxldGVVUkwob3B0aW9ucy5pY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVy
LmNwcAppbmRleCBhNjIwMzUzOTNjN2ZiM2Y2ZGRmMDFjNWM4OWQ3NGYzYjVlZGQyZDQ0Li5kNDhm
MjA1YTllMjQxNGUwN2Q3MjJmOTAzMjVhN2MzNjRkNDg5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNv
bnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGNvbnN0IGNoYXIqIE5vdGlmaWNhdGlvbkNv
bnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIAogdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBh
Z2UqIHBhZ2UsIE5vdGlmaWNhdGlvbkNsaWVudCogY2xpZW50KQogewotICAgIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBw
bGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNs
aWVudCkpOworICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3Rp
ZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCmluZGV4
IDAzZmU5ZTM4Njc4ZjQwNTA3MzI1NTA5YzIwMzg2N2M5Y2Y4MjBmZjEuLmM5OGM5OTg2ZGVkNmNk
MjA1NDI2MTcyMTVmNjUzNmNlNThmMjc5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIERPTVdpbmRvd1F1
b3RhKiBET01XaW5kb3dRdW90YTo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01X
aW5kb3dRdW90YSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1F1b3RhKj4oU3Vw
cGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTVdpbmRvd1F1b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd1F1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywg
c3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEu
Y3BwCmluZGV4IDdiYTFkM2Q0YjM2OTQ0MGM2NGUxN2RkMjBjYTk0NTM4YjhhZDliNzQuLjdhMDgw
NDU5NTY5ODNhMzFmNmQ4MzRlZjdlYTc3MmZhNjY3MzZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6
OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
KiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxl
bWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtl
ck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3Rh
L1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKaW5kZXggOTVjM2U0MzY0NzMxNjJhNTBk
NjFiNWNlNzUxNjVlZTY4YjIxYjcyNy4uMWExYzg0N2RjNDk3ZGM2NDg0NWY1NmVjZTU5MjYzYTQy
NmFmNjMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJO
YXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVv
dGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3Jr
ZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJv
bShXb3JrZXJOYXZpZ2F0b3IqCiB7CiAgICAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBz
dXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3Vw
cGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUo
KSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsK
KyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JT
dG9yYWdlUXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCAz
Nzk1NjUyNmZiZjI4NjkwZWNmMDM5OTUyYzUyZjZlMDQ0NmJjYjRjLi45NjljMjM3ZjdjODE1NTE1
M2RlMDcxZWM5NmE2MWE0YTQ2MmQzZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVz
aXM6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93U3BlZWNoU3ludGhl
c2lzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzKj4o
U3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKKyAgICAgICAg
YXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+
KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAg
ICAgICBwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzLmNwcAppbmRleCA3MmI1NjNlNGJiZjdkY2UwM2ZhMzA4ODBkMmZhNzcwYjg5
ODY5M2E0Li5lN2I2MmExYTE3YmQ5NmE5ZjVhMTNmZDA5ZTc0OWFiNGJjZTE5ODRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAg
LTczLDcgKzczLDcgQEAgdm9pZCBTcGVlY2hTeW50aGVzaXM6OnZvaWNlc0RpZENoYW5nZSgpCiBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyJiBTcGVlY2hTeW50aGVzaXM6OmVuc3VyZVBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIoKQogewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyKQotICAgICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpOworICAgICAgICBtX3BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIgPSBtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+
KHRoaXMpOwogICAgIHJldHVybiAqbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuY3BwCmluZGV4IDYyZjY4ZWM2NjNhODAyMTJjNmYzYWY3Yjg1ZTIzYzZiNGY3NDJhMGEuLjJm
NTQyNzJhYzVjMDFkMGEyMzBlNWMwZGYwNDUyNGFmYjJhNGUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC01
Niw3ICs1Niw3IEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJh
eUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAotICAgIGF1dG8gZGVjb2RpbmdUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxE
ZWNvZGluZ1Rhc2s+KFdURk1vdmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNj
ZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spKTsKKyAgICBhdXRvIGRlY29kaW5n
VGFzayA9IG1ha2VVbmlxdWU8RGVjb2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBs
ZVJhdGUsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7
CiAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZShkZWNvZGluZ1Rhc2spKTsgLy8gbm90ZSB0aGF0
IG93bmVyc2hpcCBvZiB0aGUgdGFzayBpcyBlZmZlY3RpdmVseSB0YWtlbiBieSB0aGUgcXVldWUu
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNB
dWRpb0RlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuaAppbmRleCBiYzAwZWI5Zjg3ZDFiY2Q1OGNiZjc0OWI3ZGE3YzQ5M2NmN2U4ODc2
Li5jZjkyNjljMzA0NGM0MzIyZDc0NGQwNjI5ZGRhMGZhODk0OTNlY2MzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC00
Miw3ICs0Miw4IEBAIGNsYXNzIEF1ZGlvQnVmZmVyQ2FsbGJhY2s7CiAvLyBBc3luY0F1ZGlvRGVj
b2RlciBhc3luY2hyb25vdXNseSBkZWNvZGVzIGF1ZGlvIGZpbGUgZGF0YSBmcm9tIGFuIEFycmF5
QnVmZmVyIGluIGEgd29ya2VyIHRocmVhZC4KIC8vIFVwb24gc3VjY2Vzc2Z1bCBkZWNvZGluZywg
YSBjb21wbGV0aW9uIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBkZWNvZGVkIFBD
TSBkYXRhIGluIGFuIEF1ZGlvQnVmZmVyLgogCi1jbGFzcyBBc3luY0F1ZGlvRGVjb2RlciB7Citj
bGFzcyBBc3luY0F1ZGlvRGVjb2RlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXN5bmNBdWRpb0RlY29kZXIpOwogcHVibGlj
OgogICAgIEFzeW5jQXVkaW9EZWNvZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IGJh
OGMyNTVhZTdkN2RhNzNiYzlmZjY1NTQzZjFlMzdiYzk1NDA0YjMuLjBmYjU1YjA4ZjBjMWEyYmUy
ZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC00MCw4
ICs0MCw4IEBAIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhCiAgICAgOiBBdWRpb05vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9y
KTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBv
dXRwdXRDaGFubmVsQ291bnQpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlu
cHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCBvdXRwdXRDaGFubmVsQ291bnQpKTsKIH0KIAogLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0
cygpIGFzIGFuIG9wdGltaXphdGlvbiBhbGxvd2luZyB0aGlzIG5vZGUgdG8gdGFrZSBhZHZhbnRh
Z2Ugb2YgaW4tcGxhY2UgcHJvY2Vzc2luZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYmMx
ODljMDhjYmVmYzdjMTk2MDY0NjZjMDc2OGI4ZmE2MzRiMTZhYi4uMGI5ZjFjZWQ4NzQ1YjVkOTk4
ZGMzOGQ2MzZlNzkwYWJmYmU2ZTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQyLDgg
KzQyLDggQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlKTsKIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05v
ZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1
dD4odGhpcywgMSkpOwogCiAgICAgLy8gVGhlIHN1YmNsYXNzIG11c3QgY3JlYXRlIG1fcHJvY2Vz
c29yLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQwYWMzMmM1YzU1YzNkMzJkMGUxNGI2YTdk
MjJiMjQ2NzM5MGY0YmYuLjI1MTBjNDBhN2Y2MTIzZDRjN2ZjMmQ2NDBhOTBiNGYwYTk4ZTZmOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBz
YW1wbGUKICAgICBtX3BsYXliYWNrUmF0ZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAi
cGxheWJhY2tSYXRlIiwgMS4wLCAtTWF4UmF0ZSwgTWF4UmF0ZSk7CiAKICAgICAvLyBEZWZhdWx0
IHRvIG1vbm8uICBBIGNhbGwgdG8gc2V0QnVmZmVyKCkgd2lsbCBzZXQgdGhlIG51bWJlciBvZiBv
dXRwdXQgY2hhbm5lbHMgdG8gdGhhdCBvZiB0aGUgYnVmZmVyLgotICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCmluZGV4IDk5NTZjMTU4NjIxODljNzE0MjljYmNmZDYwMDQyZjAwYzk4YmFlZjYuLmQ0Y2Ri
NzY1OGMwZjM1YjVmYzlhMjJjZTg5OGJjYjJiOTllZTRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBA
QCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBt
X2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiAgICAgLCBtX21l
ZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1f
ZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisg
ICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQog
ewogICAgIC8vIEFjY29yZGluZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFm
dGVyIHBhZ2UgbmF2aWdhdGUuCiAgICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVj
dCB3aXRoIHBlbmRpbmcgYWN0aXZpdHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCkBA
IC0xNjYsNyArMTY2LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRv
Y3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICNlbmRpZgogICAgICwg
bV9pc09mZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2Vf
dW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFr
ZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1v
bigpOwogCkBAIC00MzIsNyArNDMyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4g
QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmUKIHZvaWQg
QXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0
YSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8
QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICghbV9hdWRp
b0RlY29kZXIpCi0gICAgICAgIG1fYXVkaW9EZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBc3lu
Y0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFz
eW5jQXVkaW9EZWNvZGVyPigpOwogICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZN
b3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBX
VEZNb3ZlKGVycm9yQ2FsbGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA5NzU4ODc1
NDc0N2UxNTI0ODE4OWY0OTcwYzZkMzNlM2M2YWUxZTExLi5kOWFiYjk3NzdhOWQyNWVlYWYyNDJm
ZjRmZmZjNWVjNWVmNDg2YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYQogICAgICwgbV9tdXRlZChmYWxzZSkKIHsKICAgICBzZXRO
b2RlVHlwZShOb2RlVHlwZURlc3RpbmF0aW9uKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOwogfQogCiBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVz
dGluYXRpb25Ob2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IDE2MzczY2U5Mzc4ZDMyMmZkZDljMjUzZjljNzZk
OTYzZTYxM2NkM2IuLjRhODI1NWU2ZjBhZjA3NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJO
b2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJO
b2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXROb2Rl
VHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CiAKICAgICAvLyBJbml0aWFsbHkgc2V0dXAgYXMg
bG93cGFzcyBmaWx0ZXIuCi0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVh
ZFByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2UpOworICAgIG1fcHJvY2Vz
c29yID0gbWFrZVVuaXF1ZTxCaXF1YWRQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEs
IGZhbHNlKTsKIH0KIAogQmlxdWFkRmlsdGVyVHlwZSBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFk
UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcAppbmRleCAwZTRlMzY4NWI4MmNlNDc3ZWM0ZTU4NTQ3ZjE2YWQ4YjcwZmM3OTA0
Li5lODRiOTgwMzU2NzBmYjFkY2MzMjcwOTY2M2QyYjM5MDU1MmU2NWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIEJpcXVhZFByb2Nlc3Nvcjo6fkJpcXVhZFByb2Nlc3NvcigpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gQmlxdWFkUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwo
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9p
ZCBCaXF1YWRQcm9jZXNzb3I6OmNoZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQpAQCAtMTI1LDcg
KzEyNSw3IEBAIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lSZXNwb25zZShpbnQg
bkZyZXF1ZW5jaWVzLCBjb25zdCBmbG9hdCogZnJlcXVlCiAgICAgLy8gdG8gYXZvaWQgaW50ZXJm
ZXJpbmcgd2l0aCB0aGUgcHJvY2Vzc2luZyBydW5uaW5nIGluIHRoZSBhdWRpbwogICAgIC8vIHRo
cmVhZCBvbiB0aGUgbWFpbiBrZXJuZWxzLgogICAgIAotICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgYXV0byByZXNw
b25zZUtlcm5lbCA9IG1ha2VVbmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIAogICAgIHJl
c3BvbnNlS2VybmVsLT5nZXRGcmVxdWVuY3lSZXNwb25zZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5j
eUh6LCBtYWdSZXNwb25zZSwgcGhhc2VSZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IDIwYjhk
YTE5ZTVmNDM5Y2ZlNTQ1NWYwMWRjMjkwODc0NDZiMjNjMDguLmRmNTBmMjY4NzM2OGFhNWMzMjk1
NDE0ODE1MDc3N2EwMjkxNzMyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC01OSw5ICs1OSw5IEBAIENoYW5u
ZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuCiAKICAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIg
b2YgaW5wdXRzLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0czsg
KytpKQotICAgICAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0
aGlzKSk7CisgICAgICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMp
KTsKIAotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MSkpOwogICAgIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDQ2MzU0
OThjMDM0YzU5MzBiNGU4ZjIyMDg2ZTE0YjJiNGJkMjkxMTcuLjgyZjY5YTA0Zjk5OTI2MWQ1OGMx
NTJiZmM2MDJhMzY2MDk2MDkxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBA
IENoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFu
bmVsU3BsaXR0ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJ
bnB1dD4odGhpcykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRo
aXMpKTsKIAogICAgIC8vIENyZWF0ZSBhIGZpeGVkIG51bWJlciBvZiBvdXRwdXRzIChhYmxlIHRv
IGhhbmRsZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgZmVkIHRvIGFuIGlucHV0KS4K
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCi0gICAg
ICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkp
OworICAgICAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEp
KTsKICAgICAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCAyMzgyZGFiY2M5Yzk5MjdjYWMz
MWQzMjc1ZjIyMDNjYzhmNThhMDkzLi5lMzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFh
NTNkZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZv
bHZlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5jcHAKQEAgLTUyLDggKzUyLDggQEAgQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9k
ZVR5cGUoTm9kZVR5cGVDb252b2x2ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1
ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcg
cnVsZXMuCiAgICAgbV9jaGFubmVsQ291bnQgPSAyOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVy
KQogCiAgICAgLy8gQ3JlYXRlIHRoZSByZXZlcmIgd2l0aCB0aGUgZ2l2ZW4gaW1wdWxzZSByZXNw
b25zZS4KICAgICBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzID0gIWNvbnRleHQoKS5pc09mZmxp
bmVDb250ZXh0KCk7Ci0gICAgYXV0byByZXZlcmIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4o
YnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZG
VFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CisgICAgYXV0byBy
ZXZlcmIgPSBtYWtlVW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlBy
b2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRz
LCBtX25vcm1hbGl6ZSk7CiAKICAgICB7CiAgICAgICAgIC8vIFN5bmNocm9uaXplIHdpdGggcHJv
Y2VzcygpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3Bw
CmluZGV4IDQyNjVhMDA3NDllYWZmZjZhOWUxYjlkMWRkYTYwZDRkYjcwMjhiMDMuLjgxYmQ3ZDE5
YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdjZTI1NTc4MDJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIERl
bGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSwgZG91YmxlIG1heEQKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7Ci0gICAgbV9wcm9j
ZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVS
YXRlLCAxLCBtYXhEZWxheVRpbWUpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxh
eVByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAog
RXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5k
ZXggYTc1YmE2YjdjOTJlNzQ0NGM2NTYwOGU4YWUxOGY5ZDUwMDAyNmEwNC4uMTAzNjZlZjZlYWZi
NmM0NGRiMTkxMjcxYTk5NWQ5ZTZkMmFjYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGVs
YXlQcm9jZXNzb3I6On5EZWxheVByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RT
UEtlcm5lbD4gRGVsYXlQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPERlbGF5RFNQS2VybmVsPih0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yTm9kZS5jcHAKaW5kZXggYWEwZTRhODAxMTllYmVkOWRkMzY5NmIzZmExMzA1ZGRm
MzJiZDA1Mi4uMTQwOTZkOGYwYzU5NmE1Mjk3MTY2NmVmODI2N2EwMjNmZGI0NGIyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuY3BwCkBAIC00Niw4ICs0Niw4IEBAIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6
OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
CiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwogCi0gICAg
YWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFk
ZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgbV90aHJlc2hv
bGQgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInRocmVzaG9sZCIsIC0yNCwgLTEwMCwg
MCk7CiAgICAgbV9rbmVlID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJrbmVlIiwgMzAs
IDAsIDQwKTsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpp
bml0aWFsaXplKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9Ob2RlOjppbml0aWFsaXpl
KCk7ICAgIAotICAgIG1fZHluYW1pY3NDb21wcmVzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEeW5h
bWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpOworICAgIG1fZHluYW1pY3NDb21wcmVzc29yID0gbWFrZVVuaXF1ZTxEeW5hbWljc0NvbXBy
ZXNzb3I+KHNhbXBsZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogfQog
CiB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDZjOTRhNTIzYzNiMmEw
MjEyYjJhNTRhMWE5YzhmMDI2YmJkMWRiNWYuLjI1N2RmMmVjZTIzMzhjYmNiYWI5ZWQwNTEyMzNj
NjRiMWM1N2YyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwCkBAIC00Niw4ICs0Niw4IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAKICAgICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgImdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIGFkZElucHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMzgxYWU3Mjc5NGZiMGU3ZmVhNjMzMWFi
ZDMzYjIwYzE1ODQ1ZmY5Yi4uOTEyZTZlYjIzMjE0NTY0M2Q2ZmRhZmJjMTFlOTY3NjRjM2QyZjVk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBNZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFu
Z2UgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIG1lZGlhIGVsZW1lbnQgLnNyYyBpcyBzZXQgdG8uCi0g
ICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAK
ICAgICBpbml0aWFsaXplKCk7CiB9CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0
IHNvdXJjCiAKICAgICAgICAgaWYgKHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7
CiAgICAgICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2Ft
cGxlUmF0ZSgpOwotICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hh
bm5lbHMpOworICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVl
PE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQnlwYXNzIHJlc2FtcGxpbmcuCiAgICAg
ICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGUuY3BwCmluZGV4IDViMmE1MDBkZDI5NGQxMDU1OGJjN2EwOGNmNzcxNmU0MjZiNWMy
YWMuLmU0M2Y1NDQ4YmMyNmI4NmFmNjkzZDAwOTk5NWM2NzM0ZjY5NTVkM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IE1lCiAgICAgYXVkaW9Tb3VyY2VQcm92aWRlci0+c2V0Q2xpZW50KHRoaXMpOwogICAgIAogICAg
IC8vIERlZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhl
IGZvcm1hdCBvZiB0aGUgTWVkaWFTdHJlYW0ncyBhdWRpbyB0cmFjay4KLSAgICBhZGRPdXRwdXQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRw
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxp
emUoKTsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UKICAgICAg
ICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAg
ICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZTsKLSAg
ICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hh
bm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBt
X211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVy
PihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VO
dW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggNWI1MDI5YmZiY2U3
N2FkNWI2YzNjODgzMjYwZGI5ZGVmZGY2MTA0Yi4uYTk5Y2VhYWQ2YjVjMjFlMDlkZDIyNTNjMmFj
ZjMwNDU1NDc1M2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9z
Y2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICBzZXRUeXBlKG1fdHlwZSk7CiAKICAgICAvLyBBbiBvc2NpbGxhdG9yIGlzIGFsd2F5cyBtb25v
LgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkp
OwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5jcHAKaW5kZXggZjY0NzQ2OWUyMzU1ZWIzYTBjMDliM2IwODUyYmZi
ZWM2ZTQ4ZDI4ZC4uNTFjNjk5MTZmZmRlNzBmNWU2ODBhYTkyN2NlZmVmN2NhNzMyYzNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC01
OCw4ICs1OCw4IEBAIFBhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNo
cm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNy
ZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNlLgogICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJU
RkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShj
b250ZXh0LnNhbXBsZVJhdGUoKSk7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05v
ZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1
dD4odGhpcywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxl
cy4KICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKaW5kZXggYmIyYTA3ZDIzNTRlYmFmOTRkMDA0NjVh
NGI0MWQ4NjA1NTU5OTg2Yi4uZWM5YTE3YzRmNTZlYjk5NjZkYzE3NjI3ZTkzNDA1YmExZmQ0OGM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZl
LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgUGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGlt
aXRlZFRhYmxlcyhjb25zdCBmbG9hdCogcmVhbERhdGEsIGNvbnN0IGZsb2F0KiBpCiAgICAgICAg
IHJlYWxQWzBdID0gMDsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGJhbmQtbGltaXRlZCB0YWJs
ZS4KLSAgICAgICAgbV9iYW5kTGltaXRlZFRhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb0Zsb2F0QXJyYXk+KG1fcGVyaW9kaWNXYXZlU2l6ZSkpOworICAgICAgICBtX2JhbmRMaW1p
dGVkVGFibGVzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dh
dmVTaXplKSk7CiAKICAgICAgICAgLy8gQXBwbHkgYW4gaW52ZXJzZSBGRlQgdG8gZ2VuZXJhdGUg
dGhlIHRpbWUtZG9tYWluIHRhYmxlIGRhdGEuCiAgICAgICAgIGZsb2F0KiBkYXRhID0gbV9iYW5k
TGltaXRlZFRhYmxlc1tyYW5nZUluZGV4XS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggM2I2MjgxZDFl
ODQzZWQyOTljZjYxNTNjNzMyNzk3MDc0MTgwNjc3OC4uODAyMzczNDA3Zjc1ZDQ3ZTI1OWViNjA1
NjM4MGY2MzVmMTNhY2VmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQW5h
bHlzZXI6OlJlYWx0aW1lQW5hbHlzZXIoKQogICAgICwgbV9taW5EZWNpYmVscyhEZWZhdWx0TWlu
RGVjaWJlbHMpCiAgICAgLCBtX21heERlY2liZWxzKERlZmF1bHRNYXhEZWNpYmVscykKIHsKLSAg
ICBtX2FuYWx5c2lzRnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZU
U2l6ZSk7CisgICAgbV9hbmFseXNpc0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oRGVmYXVs
dEZGVFNpemUpOwogfQogCiBSZWFsdGltZUFuYWx5c2VyOjp+UmVhbHRpbWVBbmFseXNlcigpID0g
ZGVmYXVsdDsKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRT
aXplKHNpemVfdCBzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mZnRT
aXplICE9IHNpemUpIHsKLSAgICAgICAgbV9hbmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1
ZTxGRlRGcmFtZT4oc2l6ZSk7CisgICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8
RkZURnJhbWU+KHNpemUpOwogICAgICAgICAvLyBtX21hZ25pdHVkZUJ1ZmZlciBoYXMgc2l6ZSA9
IGZmdFNpemUgLyAyIGJlY2F1c2UgaXQgY29udGFpbnMgZmxvYXRzIHJlZHVjZWQgZnJvbSBjb21w
bGV4IHZhbHVlcyBpbiBtX2FuYWx5c2lzRnJhbWUuCiAgICAgICAgIG1fbWFnbml0dWRlQnVmZmVy
LmFsbG9jYXRlKHNpemUgLyAyKTsKICAgICAgICAgbV9mZnRTaXplID0gc2l6ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUu
Y3BwCmluZGV4IGQ1OWRlY2Y5OTUxNmY2ZDAxYWY5YzFkOWZkYmYxZDBiMTAxOWU0MGYuLmQ1YjNh
ZmJmMjcxMDE0NTE0OTRiMTg5Mzc3NjhiNjA1ZjZhM2I0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAt
NjgsOCArNjgsOCBAQCBTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZQogICAgIEFTU0VSVChudW1iZXJP
ZklucHV0Q2hhbm5lbHMgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwog
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVKYXZhU2NyaXB0KTsKLSAgICBhZGRJbnB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscykpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXgg
NDEwZDFkYWY1Yzg5NTQwMDlmZjA2MzZhODI5MDBiZjk0YWY0ZjhmMS4uZjNkMjEyMmRmNTFjNGYx
YTI5MjI0ZTY5M2FiNDk1YmJjMmI5MzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCkBAIC00OSwxMiArNDks
MTIgQEAgdm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGlu
ZygpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmICghbV90ZW1wQnVmZmVy
KSB7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFy
cmF5PihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwotICAg
ICAgICBtX3VwU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdR
dWFudHVtKTsKLSAgICAgICAgbV9kb3duU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV91cFNhbXBsZXIyID0gc3Rk
OjptYWtlX3VuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAg
bV9kb3duU2FtcGxlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdR
dWFudHVtICogNCk7CisgICAgICAgIG1fdGVtcEJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9h
dEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogMik7CisgICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBt
YWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAg
ICBtX3VwU2FtcGxlciA9IG1ha2VVbmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsK
KyAgICAgICAgbV9kb3duU2FtcGxlciA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmlu
Z1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV91cFNhbXBsZXIyID0gbWFrZVVuaXF1ZTxVcFNhbXBs
ZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBtYWtl
VW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3Bw
CmluZGV4IDg0ODY5OTNmMjEwODRjY2M2MWNjZDgwYjJjMTg3ZTA4YzE1NWZkMDEuLjZlN2U4ZGQx
YzljMTlmYTNjODVlM2Q5ZDg1NWFiOWY0NTc4NWI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IFdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUo
KSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwotICAgIG1fcHJvY2Vz
c29yID0gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBs
ZVJhdGUoKSwgMSk7CisgICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPFdhdmVTaGFwZXJQcm9j
ZXNzb3I+KGNvbnRleHQuc2FtcGxlUmF0ZSgpLCAxKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclBy
b2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQ
cm9jZXNzb3IuY3BwCmluZGV4IDI4OWMzOWY1ZjNmOWY3YTc5ZTlhNWI2YTZkODMxNWI1OTFmNDMy
ZGEuLmJmZTVlMGU0N2ZiODRhMjhjNjNjNmUyOGIzMmUwZmMxMWU1YzY3YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29y
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBXYXZlU2hhcGVyUHJvY2Vzc29yOjp+V2F2ZVNoYXBlclBy
b2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclBy
b2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
YXZlU2hhcGVyRFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXYXZlU2hh
cGVyRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRD
dXJ2ZShGbG9hdDMyQXJyYXkqIGN1cnZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggYjFjNDlk
YjUyM2I5MzZiMGE0ZWMyMjEwNDFiNzdkYTdjYzE0NzhmZC4uMjBkNjA2OTcyNDI4OTczNzc5ODJi
ODRlZTczZDRkYTYzNGVkOGZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC00NCw2ICs0NCw3
IEBAIHN0cnVjdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiB1c2luZyBDcmVk
ZW50aWFsUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZh
Y2U8QmFzaWNDcmVkZW50aWFsPj4+OwogCiBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ig
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKaW5kZXggOGMzZDEzNDZj
NDAzMGNmYjNkODI3NzM3YTBhMTVmM2YxY2I5YmFkNy4uMWI5MTJkOThkOWYwNGYzMDc0YTFiOGUx
YTYyNjAxYTQyZmFmMzU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCkBAIC0xNTAsOSArMTUwLDkgQEAgRmlk
b0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERl
dmljZUNvbW1hbmQgdHlwZSwgY28KICAgICB1aW50OF90IHNlcXVlbmNlID0gMDsKIAogICAgIHNp
emVfdCBwb3MgPSBkYXRhLnNpemUoKSA+IGtIaWRJbml0UGFja2V0RGF0YVNpemUgPyBrSGlkSW5p
dFBhY2tldERhdGFTaXplIDogZGF0YS5zaXplKCk7Ci0gICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQ
YWNrZXREYXRhKGRhdGEpLCBkYXRhLnNpemUoKSkpOworICAgIG1fcGFja2V0cy5hcHBlbmQobWFr
ZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0
RGF0YShkYXRhKSwgZGF0YS5zaXplKCkpKTsKICAgICBmb3IgKDsgcG9zIDwgZGF0YS5zaXplKCk7
IHBvcyArPSBrSGlkQ29udGludWF0aW9uUGFja2V0RGF0YVNpemUpCi0gICAgICAgIG1fcGFja2V0
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFu
bmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRpbnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkp
OworICAgICAgICBtX3BhY2tldHMuYXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlv
blBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRh
KGRhdGEsIHBvcykpKTsKIH0KIAogRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxGaWRvSGlkSW5pdFBhY2tldD4gaW5pdFBhY2tldCwgc2l6ZV90IHJlbWFpbmlu
Z1NpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0hpZFBhY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0hpZFBhY2tldC5jcHAKaW5kZXggNTViN2IyZDcxNTM2YTIzNTQ5MTNhZTM2ZTlmYjkxZWYw
MGE4ZjA4My4uMjZiODBhYThhNWYxMzk2M2M3NjhlN2U5MjNiYmFhYjJiODdiNWVlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFj
a2V0LmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNr
ZXQ+IEZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoYwogICAgIGF1
dG8gZGF0YSA9IFZlY3Rvcjx1aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQu
YmVnaW4oKSArIGluZGV4LCBkYXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBw
YXlsb2FkU2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNo
YW5uZWxJZCwgY29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCiAvLyBV
MkYgSW5pdGlhbGl6YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CkBAIC0xMjMsNyArMTIzLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250
aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb20KICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhf
dD4oKTsKICAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNp
emUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwg
V1RGTW92ZShkYXRhKSk7CiB9CiAKIC8vIFUyRiBDb250aW51YXRpb24gcGFja2V0IGlzIGRlZmlu
ZWQgYXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCmluZGV4IDAyMTQ1ZDBjYzJlOGM5ZWFkYjBjODgyOTQxYjg1OWZjMGFlODA1MmQuLjViNjRh
MDg3NDZhZjgwODBjZDJlNzI1MDNmYTAwZDNjOTQ5ZmIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0
VmVyc2lvbkluTmV3RGF0YWJhc2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciB9OwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVzdWx0OwotICAgIGF1dG8g
dGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNp
b25Jbk5ld0RhdGFiYXNlLCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0g
bWFrZVVuaXF1ZTxEYXRhYmFzZU9wZW5UYXNrPigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJh
c2UsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVU
YXNrKFdURk1vdmUodGFzaykpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRp
b24oKTsKIApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soc3Rk
OjptYWtlX3VuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOwor
ICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2sobWFrZVVuaXF1ZTxEYXRhYmFzZUNsb3Nl
VGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOwogCiAgICAgLy8gRklYTUU6IGlPUyBkZXBlbmRz
IG9uIHRoaXMgZnVuY3Rpb24gYmxvY2tpbmcgdW50aWwgdGhlIGRhdGFiYXNlIGlzIGNsb3NlZCBh
cyBwYXJ0CiAgICAgLy8gb2YgY2xvc2luZyBhbGwgb3BlbiBkYXRhYmFzZXMgZnJvbSBhIHByb2Nl
c3MgYXNzZXJ0aW9uIGV4cGlyYXRpb24gaGFuZGxlci4KQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lk
IERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uKCkKICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9n
cmVzcyA9IHRydWU7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVl
LnRha2VGaXJzdCgpOwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VU
cmFuc2FjdGlvblRhc2s+KFdURk1vdmUodHJhbnNhY3Rpb24pKTsKKyAgICBhdXRvIHRhc2sgPSBt
YWtlVW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7
CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNr
ICVwIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24o
KSk7CiAgICAgZGF0YWJhc2VUaHJlYWQoKS5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9
CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0
ZXAoU1FMVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIGF1dG8mIHRocmVhZCA9IGRh
dGFiYXNlVGhyZWFkKCk7CiAKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFi
YXNlVHJhbnNhY3Rpb25UYXNrPigmdHJhbnNhY3Rpb24pOworICAgIGF1dG8gdGFzayA9IG1ha2VV
bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0
b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUg
dHJhbnNhY3Rpb24gc3RlcFxuIiwgdGFzay5nZXQoKSk7CiAgICAgdGhyZWFkLnNjaGVkdWxlVGFz
ayhXVEZNb3ZlKHRhc2spKTsKIH0KQEAgLTc2Myw3ICs3NjMsNyBAQCBWZWN0b3I8U3RyaW5nPiBE
YXRhYmFzZTo6dGFibGVOYW1lcygpCiAgICAgaWYgKHRocmVhZC50ZXJtaW5hdGlvblJlcXVlc3Rl
ZCgmc3luY2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGF1dG8gdGFz
ayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNo
cm9uaXplciwgcmVzdWx0KTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVGFi
bGVOYW1lc1Rhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNj
aGVkdWxlSW1tZWRpYXRlVGFzayhXVEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2Fp
dEZvclRhc2tDb21wbGV0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggM2JhYmQ0OTU2NmYxNGExYjNj
MGQzYjE3YmY0YzdmMzJjNWUzZDVmNy4uZDY0OTdjMzk3ZmE0NzQyODU5ZTA1ODYyMjM2ZWRlZTQz
ZDRlZjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogRGF0YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFkKCkKLSAgICA6IG1fdHJhbnNhY3Rp
b25Db29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+
KCkpCisgICAgOiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZTxTUUxUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yPigpKQogewogICAgIG1fc2VsZlJlZiA9IHRoaXM7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHAKaW5kZXggZDhkZGNjNTk4NTUxNTc2ZDJhMmMxMGY0MmU0YWQxMmE4MjU5YjUxOS4uYzI4YTk2
ZjQ1ODM5ZWY1NGRhZjFmOTlhMWFkNThkN2VjZDRhNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNTQ5
LDcgKzU0OSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJh
c2UmIGRhdGFiYXNlKQogICAgIExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5E
YXRhYmFzZU1hcEd1YXJkKTsKIAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCi0gICAgICAg
IG1fb3BlbkRhdGFiYXNlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4o
KTsKKyAgICAgICAgbV9vcGVuRGF0YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2lu
TWFwPigpOwogCiAgICAgYXV0byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwog
CkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5n
RGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBk
b24ndCB1c2UgSGFzaE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVk
IGNvcHkgb2YgdGhlIG9yaWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2Jl
aW5nQ3JlYXRlZC5nZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0
byBvd25lZFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsK
KyAgICAgICAgYXV0byBvd25lZFNldCA9IG1ha2VVbmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5n
Pj4oKTsKICAgICAgICAgbmFtZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5n
Q3JlYXRlZC5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAg
ICAgfQpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERl
bGV0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAv
LyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlz
b2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQg
PSBtX2JlaW5nRGVsZXRlZC5nZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAg
ICAgYXV0byBvd25lZFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwor
ICAgICAgICBhdXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAg
ICAgICAgIG5hbWVTZXQgPSBvd25lZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0RlbGV0ZWQu
YWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCmlu
ZGV4IDg1ZjFiNjM1YzNlNDliM2ZlMWE4MWY5NDg3ODI0ODBlMWRlNDhmYjUuLjhhNTRhMzY2N2Ew
N2FhY2UwM2E5NjBmYjI1NjRmN2ViZGYzYmQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFz
cyBTUUxSZXN1bHRTZXQ7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ7CiAKIGNsYXNzIFNR
TFN0YXRlbWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
U1FMU3RhdGVtZW50KERhdGFiYXNlJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNRTFZhbHVlPiYm
LCBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrPiYmLCBpbnQgcGVybWlzc2lvbnMpOwogICAgIH5TUUxTdGF0ZW1lbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5jcHAKaW5kZXggMjBkNjk3MzQ3NzRkYmZiZjMwYmQ4ZjM5Y2U0YzU5NTcyMTRlOTAwYy4uNGNi
MDQxZTQ1MmM4MGY1ZjU5YmIyNzIxZWFiOGVjMWE4ZjYxODM2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwo
Y29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlvbmEKICAgICBlbHNlIGlmIChtX3JlYWRP
bmx5KQogICAgICAgICBwZXJtaXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5
TWFzazsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxTdGF0ZW1l
bnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNR
TFZhbHVlPiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwg
cGVybWlzc2lvbnMpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1l
bnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNR
TFZhbHVlPiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwg
cGVybWlzc2lvbnMpOwogCiAgICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAg
c3RhdGVtZW50LT5zZXREYXRhYmFzZURlbGV0ZWRFcnJvcigpOwpAQCAtMjM0LDcgKzIzNCw3IEBA
IHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAgICAg
fQogCiAgICAgQVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKLSAgICBtX3NxbGl0ZVRyYW5z
YWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+
c3FsaXRlRGF0YWJhc2UoKSwgbV9yZWFkT25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9
IG1ha2VVbmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNl
KCksIG1fcmVhZE9ubHkpOwogCiAgICAgbV9kYXRhYmFzZS0+cmVzZXREZWxldGVzKCk7CiAgICAg
bV9kYXRhYmFzZS0+ZGlzYWJsZUF1dGhvcml6ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCmluZGV4IDc5YWE1
NjE4MWZmZWYzYWIxYTkyYWE1N2ZlY2RiNmZiYTU5ZTZmMGIuLjEyOWQ4NmZmY2ZiZDE1N2E4MGIw
MTkyZTNiNDk5NzEzM2JlYjc4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBO
YXZpZ2F0b3JXZWJEcml2ZXIqIE5hdmlnYXRvcldlYkRyaXZlcjo6ZnJvbShOYXZpZ2F0b3IqIG5h
dmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JXZWJEcml2ZXIqIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxOYXZpZ2F0b3JXZWJEcml2ZXIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2
aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViRHJp
dmVyPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRv
cldlYkRyaXZlcj4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7
CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUo
bmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9OYXZpZ2F0b3JHUFUuY3BwCmluZGV4IDg4YTk3ODA0NGJjMWU3MDg5MzM1NjVkYzYyZDBhMzE0
NmIzOGI0MjYuLjM3NmQxNTVjYTliMmY1ZDJhNGFiMTg1MmM3NzZkOWMxOGYyZTUyMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBOYXZpZ2F0b3JHUFUqIE5hdmlnYXRvckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5h
dmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxO
YXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR1BVPigpOworICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZp
Z2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKaW5kZXggMWIzNDI1MDRkNjk1
NTA4ZjA4MTZjY2I1NTgyZjViZDlhYTc2MWE2Yi4uNWY1N2VmMTE3NzUzMWEwYWMzZDk2MGRlYjFk
NDM4NzExYTRmMDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgK
QEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVi
bGljIE5hbWVkVHlwZSB7CiAKICAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJl
cikKICAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFt
ZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikp
KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1h
a2VVbmlxdWU8RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRy
eVBvaW50U2NhZmZvbGRpbmcuaAppbmRleCAwZTMxZmZiZGUwYjE0ODZmNmM2ZjY1ZTIwZWI2Mzhh
ZTg4MWI4N2Y4Li5jYmNjNDg0YjY4MjUwYzBhYTA5YjU5OTQzYWRjNzllODEwMDkyNzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVu
dHJ5UG9pbnRTY2FmZm9sZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKQEAgLTUwLDYgKzUwLDcg
QEAgbmFtZXNwYWNlIE1ldGFsIHsKIGNsYXNzIFR5cGVOYW1lcjsKIAogY2xhc3MgRW50cnlQb2lu
dFNjYWZmb2xkaW5nIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5FbnRyeVBvaW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rp
b25Xcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xGdW5jdGlvbldyaXRlci5jcHAKaW5kZXggODI1NDhiOGM2ZWEwYmU1YmJhODJkODk3Nzc2
ZDc0NjMyMTBkOThlNi4uNTE5Yzc4MmJlMmZjNmFmMmFjYWQxZGJiODhmOWFiMWE1ODQ3NjZkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xGdW5jdGlvbldyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKQEAgLTc1Nyw5ICs3NTcsOSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OmNyZWF0ZUVudAogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKCk7CiAgICAgfTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBt
X21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwg
bV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRl
ckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNl
TWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNo
ZWRTZW1hbnRpY3MubWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwg
bV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRl
ckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNl
TWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNo
ZWRTZW1hbnRpY3MubWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOwogICAgIGlmICgmZnVuY3Rpb25E
ZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1
bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2Vt
YW50aWNzLmZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3Mu
ZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRz
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRp
bmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRj
aGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1h
bnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJh
dGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFj
aG1lbnRzKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNzgzLDcgKzc4Myw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmlu
aXRpb25Xcml0ZXI6OmNyZWF0ZUVuCiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRW
YXJpYWJsZU5hbWUoKTsKICAgICB9OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1f
bWF0Y2hlZFNlbWFudGljcy5zaGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRy
aW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywg
bV9tYXRjaGVkU2VtYW50aWNzLnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVu
dHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1f
dHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRT
ZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5j
cHAKaW5kZXggMTg1YmEwYjA4OGE1Y2VkNGM1YjY2MzZmYTk0NDJjMDAzNDBkZDAyYS4uNDBiNjJj
MzdkYmUyNTgwZTIzZDU5MGMwOTFlYmI0MTdjYTliODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVy
LmNwcApAQCAtMjcyLDE5ICsyNzIsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5v
ZGU+IFR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICBz
d2l0Y2ggKHVubmFtZWRUeXBlLmtpbmQoKSkgewogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6
S2luZDo6VHlwZVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93
bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5l
eHRUeXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4
dFR5cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIH0KICAgICBj
YXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9p
bnRlclR5cGUgPSBkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwg
Z2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVy
YXRlTmV4dFR5cGVOYW1lKCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAg
ICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAg
ICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNl
VHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJh
eVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBh
cnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBl
TmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBj
YXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5
VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRl
TmV4dFR5cGVOYW1lKCksIGFycmF5VHlwZS5udW1FbGVtZW50cygpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5h
bWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggNzdkYTQ4ZTJl
Y2YxNjI5NDZjYWJjZGU1MjI4MzU5YjY4ODI5MDIwNy4uMWE2MTYyYTJlZjczNzlkMzcxOTI0NWM0
M2E0NGVlZTFjMmVhZTY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCkBAIC05NjYsMTQgKzk2NiwxNCBAQCB2b2lkIENo
ZWNrZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlv
bikKIAogdm9pZCBDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBl
eHByZXNzaW9uLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFu
bm90YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8
UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkpKTsKKyAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4o
V1RGTW92ZSh1bm5hbWVkVHlwZSkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRk
UmVzdWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RG
TW92ZSh0eXBlQW5ub3RhdGlvbikpOwogfQogCiB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNU
OjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+
IHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0
aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVN
YXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1v
dmUocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5
cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUo
cmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9u
KFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKIH0KQEAgLTk4MSwxMCArOTgxLDEwIEBAIHZvaWQg
Q2hlY2tlcjo6YXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxS
ZXNvbHZhYmxlVHlwZVJlZmVyCiB2b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVz
c2lvbiYgZXhwcmVzc2lvbiwgUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpUeXBl
QW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewogICAgIHJl
c29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5
cGU+JiByZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZl
eHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVm
KCkpKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9u
LCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9LCBb
Jl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1
ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBl
PihyZXN1bHQuY29weVJlZigpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfSkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFu
bm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IDAxNjExNGE2MTBl
MTEwMGVmZTY5NzJjYTJhMjM1MzI3YzE1MmU3YWIuLjVlNDlmMDNhM2IzODI2ZDFmZTdjYjNhNTU4
Nzk2NzY2NTc2OWZiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFBhcnNlci5jcHAKQEAgLTc0MCwxOSArNzQwLDE5IEBAIGF1dG8gUGFyc2Vy
OjpwYXJzZVNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50
aWM+LCBFcnJvcj4KICAgICBzd2l0Y2ggKHRva2VuLT50eXBlKSB7CiAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6QXR0cmlidXRlOiB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFu
dGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihX
VEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2Vt
YW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6
OlNwZWNpYWxpemVkOiAgewogICAgICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpT
ZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1
ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpSZWdpc3RlcjogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNl
bWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGlj
PihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6
U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIGRlZmF1bHQ6ICB7CiAg
ICAgICAgIFBBUlNFKHJlc3VsdCwgQnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsg
c3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAg
ICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkp
IH07CiAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmgKaW5kZXggNTU5Y2U4YmE5M2IyOWQ1
MTdmYTc3M2Y2YTVmNTI3ZGRmNGE4NWIwMS4uNDU3MDBjZWQ4ZmQzNDQ5YzRkYTQ5NTlmNzFhNDAy
YWEwMmQ2ZTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xSZXNvbHZpbmdUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmgKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgUmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJl
ZmVyZW5jZT4gewogLy8gSXQgZXhpc3RzIHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVm
YXVsdCBjb25zdHJ1Y3RvciBkb2VzIHRoZSByaWdodCB0aGluZy4KIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdo
dCBub3QgYmUgbmVjZXNzYXJ5LgogY2xhc3MgUmVzb2x2aW5nVHlwZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb2x2aW5nVHlwZSgpCiAgICAgICAgIDog
bV9pbm5lcihSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAppbmRleCBi
ZjkwZjZjMzYwNTQ4ZDUyYzhmZDhlZWVjNzUzYzc4ZDhmYTliZjFjLi5kOTUyMjMwNWFkYTFlZTk3
MWYxNjUyOGRlMDY2MDRiYjZhOTZiMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgV29y
a2VyTmF2aWdhdG9yR1BVKiBXb3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20oV29ya2VyTmF2aWdhdG9y
KiBuYXZpZ2F0b3IpCiB7CiAgICAgV29ya2VyTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8V29ya2VyTmF2aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+
Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtl
ck5hdmlnYXRvckdQVT4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1
ZTxXb3JrZXJOYXZpZ2F0b3JHUFU+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgp
LCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCmluZGV4IGVkNWEzY2M4MzRmZTE5ZDQ4
ODhiODU1NTA0YmExNTVkNDgzZmM0MDcuLmMxYmFjODZkM2FiMmIwZDkxM2ZjZTc0MjE0MzFhOTQ0
NTllZWQyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXIuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmNsZWFyQ2xpZW50KCkKIAogdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QoKQogewotICAgIG1fcGVuZGlu
Z1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQp
CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ29ubmVjdCgpOwogICAgIH0pKTsKQEAgLTE2NCw3
ICsxNjQsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZGlkQ29ubmVjdCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9w
ZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9
IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBt
ZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdl
KG1lc3NhZ2UpOwogICAgIH0pKTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKIHsKLSAg
ICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5h
cnlEYXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBt
dXRhYmxlIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBiaW5hcnlEYXRhID0gV1RGTW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0pKTsK
QEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91
bnQodW5zaWduZWQgYnVmZmVyZWRBbW91bnQpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZl
cmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKICAgICB9KSk7CkBAIC0xOTcsNyArMTk3LDcgQEAg
dm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1
ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGIKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVu
dCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAg
ICB9KSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAKIHZvaWQgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRz
aGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVk
IHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIG1fcGVuZGluZ1Rhc2tz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1v
dW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlz
b2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdU
YXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29s
YXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBpZiAo
bV9jbGllbnQpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZENsb3NlKHVuaGFuZGxlZEJ1
ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsK
ICAgICAgICAgfSkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJl
CiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNl
aXZlTWVzc2FnZUVycm9yKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKICAgICB9KSk7CkBAIC0yMzAsNyArMjMwLDcgQEAg
dm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVN
ZXNzYWdlRXJyb3IoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6ZGlkVXBncmFkZVVSTCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAg
bV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRVcGdyYWRlVVJMKCk7CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDYwNzE0NDA5
MjRmYjJjZTY3ZjUzNDA2MmQ3OWU4ZTNiMDRlZTFjNTAuLmEwN2E4NzYzYWZiOTY5YjQyMDcwYmM0
OWE4NjIzOWI3ODNkNmViYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgV2ViU29j
a2V0Q2hhbm5lbDo6Q29ubmVjdFN0YXR1cyBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0
IFVSTCYgcmVxdWVzdGVkVVIKICAgICBtX2FsbG93Q29va2llcyA9IHZhbGlkYXRlZFVSTC0+YXJl
Q29va2llc0FsbG93ZWQ7CiAgICAgU3RyaW5nIHVzZXJBZ2VudCA9IG1fZG9jdW1lbnQtPnVzZXJB
Z2VudChtX2RvY3VtZW50LT51cmwoKSk7CiAgICAgU3RyaW5nIGNsaWVudE9yaWdpbiA9IG1fZG9j
dW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJpbmcoKTsKLSAgICBtX2hhbmRzaGFrZSA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJv
dG9jb2wsIHVzZXJBZ2VudCwgY2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CisgICAgbV9o
YW5kc2hha2UgPSBtYWtlVW5pcXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51
cmwsIHByb3RvY29sLCB1c2VyQWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwog
ICAgIG1faGFuZHNoYWtlLT5yZXNldCgpOwogICAgIGlmIChtX2RlZmxhdGVGcmFtZXIuY2FuRGVm
bGF0ZSgpKQogICAgICAgICBtX2hhbmRzaGFrZS0+YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKG1fZGVm
bGF0ZUZyYW1lci5jcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKSk7CkBAIC03MDMsNyArNzAzLDcg
QEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKICAgICBB
U1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Bl
bik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7Cisg
ICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9w
Q29kZSA9IFdlYlNvY2tldEZyYW1lOjpPcENvZGVUZXh0OwogICAgIGZyYW1lLT5mcmFtZVR5cGUg
PSBRdWV1ZWRGcmFtZVR5cGVTdHJpbmc7CiAgICAgZnJhbWUtPnN0cmluZ0RhdGEgPSBzdHJpbmc7
CkBAIC03MTMsNyArNzEzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZy
YW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1
ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVT
dGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8
UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+
ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBlVmVjdG9yOwogICAgIGZyYW1lLT52ZWN0b3JEYXRh
LnJlc2l6ZShkYXRhTGVuZ3RoKTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFdlYlNvY2tldENo
YW5uZWw6OmVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29u
c3QgY2hhcgogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUgb3BDb2RlLCBCbG9iJiBibG9iKQogewogICAgIEFTU0VSVChtX291dGdv
aW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRv
IGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1l
ID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2Rl
OwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVCbG9iOwogICAgIGZyYW1l
LT5ibG9iRGF0YSA9ICZibG9iOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpCiAgICAgICAgICAgICAgICAgcmVmKCk7
IC8vIFdpbGwgYmUgZGVyZWZlZCBhZnRlciBkaWRGaW5pc2hMb2FkaW5nKCkgb3IgZGlkRmFpbCgp
LgogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9ibG9iTG9hZGVyKTsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoZnJhbWUtPmJsb2JEYXRhKTsKLSAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJl
YWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBt
YWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5
QnVmZmVyLCB0aGlzKTsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBCbG9i
TG9hZGVyU3RhcnRlZDsKICAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KG1fZG9j
dW1lbnQuZ2V0KCksICpmcmFtZS0+YmxvYkRhdGEpOwogICAgICAgICAgICAgICAgIG1fb3V0Z29p
bmdGcmFtZVF1ZXVlLnByZXBlbmQoV1RGTW92ZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwCmluZGV4IGYyZmE2MjA5YzA0OGY1MTUxOGEyNWVlYzEzYWVmMjU2NGM5ZjRlN2IuLmVlMzNl
YTBmZTVjZjFkNWJmNzlhMmRhMDY3MDdiNzNjZDNhNzhjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1l
ci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyKCkKIAogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29y
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZs
YXRlRnJhbWU+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZT4odGhpcyk7CiB9CiAKIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
Y2FuRGVmbGF0ZSgpIGNvbnN0CkBAIC0xNzAsOCArMTcwLDggQEAgYm9vbCBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKICNpZiBVU0UoWkxJQikKIHZvaWQgV2ViU29j
a2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0
RGVmbGF0ZXI6OkNvbnRleHRUYWtlT3Zlck1vZGUgbW9kZSkKIHsKLSAgICBtX2RlZmxhdGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXREZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7Ci0g
ICAgbV9pbmZsYXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0SW5mbGF0ZXI+KCk7Cisg
ICAgbV9kZWZsYXRlciA9IG1ha2VVbmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMs
IG1vZGUpOworICAgIG1faW5mbGF0ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigp
OwogICAgIGlmICghbV9kZWZsYXRlci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2luZmxhdGVyLT5pbml0
aWFsaXplKCkpIHsKICAgICAgICAgbV9kZWZsYXRlciA9IG51bGxwdHI7CiAgICAgICAgIG1faW5m
bGF0ZXIgPSBudWxscHRyOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6
OkNvCiBzdGQ6OnVuaXF1ZV9wdHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6ZGVmbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7CiAjaWYgVVNFKFpMSUIp
Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+
KHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVy
Pih0aGlzKTsKICAgICBpZiAoIWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29u
dHJvbE9wQ29kZShmcmFtZS5vcENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5
bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBA
IC0xOTYsNyArMTk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdl
YlNvY2tldERlZmxhdGVGcmFtZXI6OmRlZmxhdGUoV2ViU29ja2V0RnIKICAgICBmcmFtZS5wYXls
b2FkTGVuZ3RoID0gbV9kZWZsYXRlci0+c2l6ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxz
ZQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogI2Vu
ZGlmCiB9CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6
OnJlc2V0RGVmbGF0ZUNvbnRleHQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhv
bGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJh
bWUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZmxhdGVSZXN1bHRI
b2xkZXI+KHRoaXMpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0
SG9sZGVyPih0aGlzKTsKICAgICBpZiAoIWVuYWJsZWQoKSAmJiBmcmFtZS5jb21wcmVzcykgewog
ICAgICAgICByZXN1bHQtPmZhaWwoIkNvbXByZXNzZWQgYml0IG11c3QgYmUgMCBpZiBubyBuZWdv
dGlhdGVkIGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dERlZmxhdGVyLmNwcAppbmRleCAxZDZmMTc4MjJjODA1MjgxYjcwYTQxNjIwZGNkZWU2YWQyYWI4
ODljLi40YTQ4NjVmODQ5NGQwNjEzZWFjMzIxYTU5NGY4YmFlMTk5OTZiYjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
ci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgV2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxh
dGVyKGludCB3aW5kb3dCaXRzLCBDb250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHQKIHsKICAgICBB
U1NFUlQobV93aW5kb3dCaXRzID49IDgpOwogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPD0gMTUp
OwotICAgIG1fc3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0
cmVhbSA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAg
IG1lbXNldChtX3N0cmVhbS5nZXQoKSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKQEAgLTEy
NCw3ICsxMjQsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVyOjpyZXNldCgpCiBXZWJTb2NrZXRJ
bmZsYXRlcjo6V2ViU29ja2V0SW5mbGF0ZXIoaW50IHdpbmRvd0JpdHMpCiAgICAgOiBtX3dpbmRv
d0JpdHMod2luZG93Qml0cykKIHsKLSAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9z
dHJlYW0+KCk7CisgICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azx6X3N0cmVhbT4oKTsKICAgICBtZW1zZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0
cmVhbSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApp
bmRleCA5OTQwNzNlYWE1ZThiMjMwZDFjOGIwMGMxNmM1OTY0M2U5Nzg0MjY4Li5kYzZmNjYwZmQz
ODhjZWZmYWYwZWJlZjZlNjYwZTZiNjk1YmI2MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlw
dEV4ZWN1dAogCiAgICAgYm9vbCBzZW50ID0gbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJHbG9iYWxTY29wZSh7CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6
OkNsZWFudXBUYXNrLAotICAgICAgICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29w
eVJlZigpLCAmbG9hZGVyUHJveHksIHBlZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlZXI+KGNsaWVu
dFdyYXBwZXIuY29weVJlZigpLCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1v
dmUocHJvdmlkZXIpKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7
CisgICAgICAgIFtjbGllbnRXcmFwcGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2Fk
ZXJQcm94eSwgcGVlciA9IG1ha2VVbmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCks
IGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAg
ICAgICAgaWYgKGNsaWVudFdyYXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigp
KSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBl
YXJsaWVyLCB3ZSBuZWVkIHRvIGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhl
IHBlZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRv
cldlYlZSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIu
Y3BwCmluZGV4IGQ5N2I1YzJhODVhOWQyMzI4Zjk4NDBmNDRkM2QxZTk2MzJjODJkOWUuLjc3NmM0
M2FlYzBiOWI1YmRlYWRjM2RkODkxMjZhY2VkNmJhNzUxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIE5h
dmlnYXRvcldlYlZSKiBOYXZpZ2F0b3JXZWJWUjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JXZWJWUiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRv
cldlYlZSKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOworICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9E
aWdlc3RPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wv
Q3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKaW5kZXggYmMyM2Q1OWNjMzEyMzdiMTQ5N2E3NmFjYzU5
ZDNlYWY1ZDJiNTg0MC4uNmNhNjdmMzkxYTMxZmNkMzg2OTI1NWIyMWYyZmNiN2YzZmJmOWJiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9E
aWdlc3RPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVu
c3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0cnVjdCBDcnlw
dG9EaWdlc3RDb250ZXh0SW1wbCA6IHB1YmxpYyBDcnlwdG9EaWdlc3RDb250ZXh0IHsKIAogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gY3JlYXRlKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHRJ
bXBsPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1w
bD4oKTsKICAgICB9CiAKICAgICBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCAzMTUzMTY4MDgw
N2I3MmQ1ZWY5MzgwOTE0ZTdhZTI0MGFkOWQwMzk3Li5lNTNlMTk1YjM1ZjQ5OGY3OTUyNTE1MWVi
YzJhY2ViNWZhZmNkMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9DbG9ja0dlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Ns
b2NrR2VuZXJpYy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFBBTCB7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxDbG9jaz4gQ2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2xvY2tHZW5lcmljPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrR2Vu
ZXJpYz4oKTsKIH0KIAogQ2xvY2tHZW5lcmljOjpDbG9ja0dlbmVyaWMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQppbmRleCBjNjg5MzIxNWYwNmIwYzY3
NGQ1NDYwODMzYjFhNGQ1MWNjMzJiNjE0Li45ZTA3MWI3ODE0ZTQ0ZmUwMDQ0MmU2NmM3MjBiMmJm
YjMxMzA2OWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMv
Q2xvY2tDTS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tD
TS5tbQpAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNj
YWxlID0gMTAwMDsKIAogc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDbG9ja0NNPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPENsb2NrQ00+KCk7CiB9CiAKIENsb2NrQ006OkNsb2NrQ00oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggY2FjYWI4NTY4Yzg2
MTEyZDljZGZlZmMzMDkwMjZhZDljODE1MzNlNS4uYjM1ZmMxNTY0MzdmMWNhMDlkNjQyMmJkNTlj
NzEzM2ZhYzJjNjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCkBAIC0xNTc1LDcgKzE1NzUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJl
Y29tcHV0ZUlzSWdub3JlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogdm9pZCBBWE9iamVjdENh
Y2hlOjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVz
KCkKIHsKICAgICBpZiAoIW1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSkKLSAgICAgICAg
bV9jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWENvbXB1
dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU+KCk7CisgICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRy
aWJ1dGVDYWNoZSA9IG1ha2VVbmlxdWU8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlPigp
OwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRy
aWJ1dGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5kZXgg
ZWRmZGJiMGEwNmZkNmVkYTI1MDQ4Yjk3MTliOWVmMWJhOWUxMzQ0My4uZTZkZWE5NjExZjliNDg4
MGE1YTE5YjlhZDFlMWJkZTcxYzE4NDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dl
YkFuaW1hdGlvbi5jcHAKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dXBk
YXRlRmluaXNoZWRTdGF0ZShEaWRTZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlOb3RpZnkgc3lu
YwogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiBzeW5jaHJvbm91c2x5IG5vdGlmeSBpcyBm
YWxzZSwgcXVldWUgYSBtaWNyb3Rhc2sgdG8gcnVuIGZpbmlzaCBub3RpZmljYXRpb24gc3RlcHMg
Zm9yIGFuaW1hdGlvbiB1bmxlc3MgdGhlcmUKICAgICAgICAgICAgIC8vIGlzIGFscmVhZHkgYSBt
aWNyb3Rhc2sgcXVldWVkIHRvIHJ1biB0aG9zZSBzdGVwcyBmb3IgYW5pbWF0aW9uLgogICAgICAg
ICAgICAgbV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSB0cnVlOwot
ICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVl
dWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZmluaXNoTm90
aWZpY2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1f
ZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCmluZGV4IDdkYTQ2YTYxNTA0ZWYyNDgxNWE2
OTRkZmJhMTJjMjhiMWVmNGZlNjYuLjYyMWI4OTA1MWJiNDhkYjAzMDFlYTgwNDdjN2FmZWZmYjY4
Y2RlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5o
CkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIERPTVByb21pc2VQcm94eSB7CiAKIHRlbXBsYXRlPD4K
IGNsYXNzIERPTVByb21pc2VQcm94eTxJRExWb2lkPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgRE9NUHJvbWlzZVByb3h5KCkgPSBkZWZhdWx0OwogICAgIH5E
T01Qcm9taXNlUHJveHkoKSA9IGRlZmF1bHQ7CkBAIC04NCw2ICs4NSw3IEBAIGNsYXNzIERPTVBy
b21pc2VQcm94eTxJRExWb2lkPiB7CiAvLyBGb250RmFjZSBhbmQgRm9udEZhY2VTZXQuCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBJRExUeXBlPgogY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVD
YWxsYmFjayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNp
bmcgUmVzb2x2ZUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx0eXBlbmFtZSBJRExUeXBlOjpQYXJh
bWV0ZXJUeXBlICgpPjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKaW5kZXggZGIwYzFkYzc2ZjhhMjg5NzA0NWVlMmNmYzkxOTIzZDU4ZGYxYjZm
OS4uYzVjNDcwNjFiZmFjYTFmY2E3MjhiZTI3YjBhMmI0YTlmMGIzMDI1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMTAsNyArMjEw
LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFs
T2JqZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3IKICAgICBKU0RPTVdpbmRvd0Jhc2UmIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwogCiAgICAgYXV0
byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZN
b3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZl
RE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwg
KnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVl
dWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsK
ICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0Q3VzdG9tLmNwcAppbmRleCA2Mjk1ZjU4NGNmZThhMTcyOWRkZjZiMThkNzc1NDlmZDQ0Yzlh
MGJlLi5kYjVlNzczNDkwYmVkZmJmM2UwYzEwY2YyM2QwYTM2YzhhM2JkYTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAt
NTYsMTEgKzU2LDExIEBAIEV2ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoVk0m
IHZtLCBKU1ZhbHVlIHZhbHVlKQogc3RkOjp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRXcmFwcGVy
PiBqc0V2ZW50VGFyZ2V0Q2FzdChWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIGlm
IChhdXRvKiB0YXJnZXQgPSBqc0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih2bSwgdGhpc1Zh
bHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBw
ZXI+KHRhcmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKICAg
ICBpZiAoYXV0byogd2luZG93ID0gdG9KU0RPTVdpbmRvdyh2bSwgdGhpc1ZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+
d3JhcHBlZCgpLCAqd2luZG93KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRh
cmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKICAgICBpZiAoYXV0byog
c2NvcGUgPSB0b0pTV29ya2VyR2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPihzY29wZS0+d3JhcHBl
ZCgpLCAqc2NvcGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3Jh
cHBlcj4oc2NvcGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwCmluZGV4IGQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcwYmI0
MDIuLjliZDY2NDQ2MDE3MDU0OTVhOTRlN2IzZmFkZjA0OGYzYzdiMDQzZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1
ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SgogCiAgICAgYXV0
byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZN
b3ZlKHRhc2spKTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWlj
cm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVu
aXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgp
LCBjb250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMTE0ZmYzYzhh
NWRmMDM5MDI4M2IxYTY3Y2U2MDhkN2Y0MjQ2ZTdjMi4uMzVjY2Q0OTYzNWUwNjExOTRlOTcyOTNl
NzEyZjdhYTM3MmM0OWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4+IHRy
YW5zZmVyQXJyYXlCdWZmZQogICAgIGlmIChhcnJheUJ1ZmZlcnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CisgICAgYXV0
byBjb250ZW50cyA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1
ZmZlcnMuc2l6ZSgpKTsKIAogICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7
CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZmZXJJbmRleCA9IDA7IGFycmF5QnVmZmVySW5kZXgg
PCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJheUJ1ZmZlckluZGV4KyspIHsKQEAgLTM0NTEsNyAr
MzQ1MSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgIFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsKICNlbmRpZgotICAgIHN0ZDo6dW5p
cXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gbWFrZVVuaXF1ZTxB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxp
emVyOjpzZXJpYWxpemUoJnN0YXRlLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMs
IGltYWdlQml0bWFwcywKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1
bGVzLCAKQEAgLTM0NjksNyArMzQ2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZm
ZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/
IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBudWxscHRyLCBXVEZNb3ZlKGltYWdlQnVmZmVycykK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgICAgICAgICAgLCBzdGQ6Om1ha2VfdW5p
cXVlPFdhc21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCisgICAgICAgICAgICAgICAgLCBtYWtl
VW5pcXVlPFdhc21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCiAjZW5kaWYKICAgICAgICAgICAg
ICAgICApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKaW5kZXggNWM0NjYyOTRiZWU1NmMyMWJmMGY2M2QxNWIwZjhkZjBmMjdh
M2EwZS4uNGY0YjBjZjNiN2VlY2RkZDA3ODcwMjU1MjA4ODk1ZTQ1ZmEyYTA3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAg
LTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBBU1NFUlQoYXJyYXlMZW5ndGgpOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4o
KTsKKyAgICBhdXRvIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIHdoaWxlIChhcnJheUxlbmd0aC0tKSB7CiAgICAg
ICAgIHVuc2lnbmVkIGJ1ZmZlclNpemU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVm
ZmVyU2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
SlNDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0Ns
aWVudERhdGEuY3BwCmluZGV4IDI0NmY2NGE5ZjYzMjJiNTg3MGNiYjY4MmVkYjJkNGVkYjk1M2Vj
N2MuLjNiMTEyNTJhZTY0Y2FmMmU0ZmU3MzllMzFlZTEwOTk1NGQ1NmE1OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0p
CiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBuZXcgSlNWTUNsaWVudERhdGEoKnZt
KTsKICAgICB2bS0+Y2xpZW50RGF0YSA9IGNsaWVudERhdGE7IC8vIH5WTSBkZWxldGVzIHRoaXMg
cG9pbnRlci4KICAgICAKLSAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChzdGQ6Om1h
a2VfdW5pcXVlPERPTUdDT3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOworICAg
IHZtLT5oZWFwLmFkZE1hcmtpbmdDb25zdHJhaW50KG1ha2VVbmlxdWU8RE9NR0NPdXRwdXRDb25z
dHJhaW50Pigqdm0sICpjbGllbnREYXRhKSk7CiAgICAgICAgIAogICAgIGNsaWVudERhdGEtPm1f
bm9ybWFsV29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZSgqdm0sIHRydWUpOwogICAgIHZt
LT5tX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFdlYkNvcmVUeXBlZEFycmF5
Q29udHJvbGxlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTZhNzZjNDk1MjlhNGJiODcxY2I2NmNhM2Fk
NzVhMmQ3NmE4MDY1NS4uZDIzOTg1N2FhM2JkZGU5ZmViOWNiODc0MGZjZjVkNjQ5ZTM1MGRiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQoKQogICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VS
VChhc09iamVjdChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0
KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsK
IAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUNs
aWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VV
bmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVu
dC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xh
c3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKaW5kZXggMjljODE4
NjgzNmVhMDU0MTFlOGYxZWQ2NDFjMDU3MGNlODE3NjgxNS4uYWE1NmUyZmRlODU1NzdhY2Y5YzA0
NzRjODk4NzdmNGUwZDVjNTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y19jbGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKQEAg
LTgxLDcgKzgxLDcgQEAgTWV0aG9kKiBDQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFu
Y2UqIGluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAg
TlBPYmplY3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzTWV0
aG9kICYmIG1faXNhLT5oYXNNZXRob2Qob2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBtZXRo
b2QgPSBzdGQ6Om1ha2VfdW5pcXVlPENNZXRob2Q+KGlkZW50KTsKKyAgICAgICAgYXV0byBtZXRo
b2QgPSBtYWtlVW5pcXVlPENNZXRob2Q+KGlkZW50KTsKICAgICAgICAgQ01ldGhvZCogcmV0ID0g
bWV0aG9kLmdldCgpOwogICAgICAgICBtX21ldGhvZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3Zl
KG1ldGhvZCkpOwogICAgICAgICByZXR1cm4gcmV0OwpAQCAtMTAzLDcgKzEwMyw3IEBAIEZpZWxk
KiBDQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2Uq
IGluc3RhbmNlKSBjb25zdAogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0
PGNvbnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+
Z2V0T2JqZWN0KCk7CiAgICAgaWYgKG1faXNhLT5oYXNQcm9wZXJ0eSAmJiBtX2lzYS0+aGFzUHJv
cGVydHkob2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBmaWVsZCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q0ZpZWxkPihpZGVudCk7CisgICAgICAgIGF1dG8gZmllbGQgPSBtYWtlVW5pcXVlPENGaWVs
ZD4oaWRlbnQpOwogICAgICAgICBDRmllbGQqIHJldCA9IGZpZWxkLmdldCgpOwogICAgICAgICBt
X2ZpZWxkcy5zZXQobmFtZS5pbXBsKCksIFdURk1vdmUoZmllbGQpKTsKICAgICAgICAgcmV0dXJu
IHJldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IGYyZjYyMDgyYTgw
OGExOWYxMGE1ZDkzNWQ5MjJiNzczYzEyMjFjMjguLjA0Y2RkY2QyNGNhYTgyOWMzMmU1NmVjMjcz
YWZiZDM1MWYyNTRlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJp
ZGdlSlNDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAt
NDksNiArNDksNyBAQCBjbGFzcyBSb290T2JqZWN0OwogY2xhc3MgUnVudGltZU9iamVjdDsKIAog
Y2xhc3MgRmllbGQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0
YW5jZSopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4
ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KaW5kZXggYjg2Zjc1MWEwYTcxMzhiZTAwNzc2
YTc4Y2JjMmE2ZDQ1ZGQzNzUwMi4uYTNkOGQzMmYyOGRkODA1OGE0YWI0NDI3Mzk1MzQ0MDc0ZjI2
Yzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0xMzQs
NyArMTM0LDcgQEAgTWV0aG9kKiBPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEluc3RhbmNlKikgY29uc3QKICAgICAgICAgICAgICAgICBtYXBwZWROYW1l
ID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6b2JqY01ldGhvZFNlbGVjdG9y
XTsKIAogICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6
KF9fYnJpZGdlIE5TU3RyaW5nKiltZXRob2ROYW1lLmdldCgpXSkgfHwgIXN0cmNtcChvYmpjTWV0
aG9kU2VsZWN0b3JOYW1lLCBidWZmZXIuZGF0YSgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8g
bWV0aG9kID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRo
b2RTZWxlY3Rvcik7CisgICAgICAgICAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPE9i
amNNZXRob2Q+KHRoaXNDbGFzcywgb2JqY01ldGhvZFNlbGVjdG9yKTsKICAgICAgICAgICAgICAg
ICBtZXRob2RQdHIgPSBtZXRob2QuZ2V0KCk7CiAgICAgICAgICAgICAgICAgbV9tZXRob2RDYWNo
ZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobWV0aG9kKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xODksNyArMTg5LDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAg
ICAgICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5OlVURjhL
ZXlOYW1lXTsKIAogICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlz
RXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgW2tleU5hbWUg
aXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byBuZXdGaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY0ZpZWxkPigoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5TmFtZSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVs
ZCA9IG1ha2VVbmlxdWU8T2JqY0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5TmFtZSk7
CiAgICAgICAgICAgICAgICAgZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsKICAgICAgICAgICAgICAg
ICBtX2ZpZWxkQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjAsNyArMjIwLDcgQEAgRmllbGQqIE9iamNDbGFzczo6
ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2Up
IGNvbnMKICAgICAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2Ny
aXB0TmFtZUZvcktleTpvYmpjSXZhck5hbWVdOwogCiAgICAgICAgICAgICAgICAgaWYgKChtYXBw
ZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGRO
YW1lLmdldCgpXSkgfHwgIXN0cmNtcChvYmpjSXZhck5hbWUsIGpzTmFtZS5kYXRhKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNG
aWVsZD4ob2JqY0lWYXIpOworICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gbWFr
ZVVuaXF1ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKICAgICAgICAgICAgICAgICAgICAgZmllbGQg
PSBuZXdGaWVsZC5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChu
YW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVsZCkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCBlMDhi
MDQ4ZTNiNTY4NDI5OGNkZWZkOTNlYjkxODgzODkxNTZmNDM4Li4zYjkzZTE4NzgzODU0YzI0NDQ2
ZTFjZmE1NzU4NDY2ZjBmMGE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
CiAgICAgaWYgKFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZv
a2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAg
ICBPYmpjQ2xhc3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0
YW5jZS0+Z2V0Q2xhc3MoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBm
YWxsYmFja01ldGhvZChzdGQ6Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNh
KCksIEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1
bWVudHM6KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tN
ZXRob2QobWFrZVVuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3Io
aW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxs
YmFja09iamVjdEltcCo+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKICAgICAg
ICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVudGlmaWVyLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmludm9r
ZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKaW5k
ZXggODNkNDRlMDY3ZmJkZjU0N2Y2Yzg4YjY3YTM2ZWI1M2Y2OTE0NjZlZS4uZjE3MWE1ODIwM2Y5
OGFmMTU1NDc4MGUwNTE5ZTA0YTFlNTNhMGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OnByaW50KCkgY29uc3QKICNlbmRpZgog
CiBDb21iaW5lZFVSTEZpbHRlcnM6OkNvbWJpbmVkVVJMRmlsdGVycygpCi0gICAgOiBtX3ByZWZp
eFRyZWVSb290KHN0ZDo6bWFrZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKKyAgICA6IG1f
cHJlZml4VHJlZVJvb3QobWFrZVVuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpKQogewogfQogCkBA
IC0yMDksNyArMjA5LDcgQEAgdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4odWlu
dDY0X3QgYWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxUZXJtPiYgcGF0dGUKICAgICAgICAgaWYgKG5l
eHRFbnRyeUluZGV4ICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAgICAgICBsYXN0UHJlZml4VHJl
ZSA9IGxhc3RQcmVmaXhUcmVlLT5lZGdlc1tuZXh0RW50cnlJbmRleF0uY2hpbGQuZ2V0KCk7CiAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQ
cmVmaXhUcmVlRWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgc3RkOjptYWtlX3VuaXF1
ZTxQcmVmaXhUcmVlVmVydGV4PigpfSkpOworICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVk
Z2VzLmFwcGVuZChQcmVmaXhUcmVlRWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgbWFr
ZVVuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpfSkpOwogICAgICAgICAgICAgbGFzdFByZWZpeFRy
ZWUgPSBsYXN0UHJlZml4VHJlZS0+ZWRnZXMubGFzdCgpLmNoaWxkLmdldCgpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRleCA4YzdlM2Y3ZDdmMWUwZDU1YWFkODkz
NGFiYmE1YWE3MGZiOGY4NWNmLi43N2ZlYjYwYzUwYmM4YTRmMjRiMjc2OTZhZDExMGQxZWRhNzQy
ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgUmVz
b3VyY2VMb2FkSW5mbzsKIC8vIDEpIEl0IHN0b3JlcyB0aGUgcnVsZXMgZm9yIGVhY2ggY29udGVu
dCBleHRlbnNpb24uCiAvLyAyKSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRl
cmZhY2VzIHRvIHVzZSB0aG9zZSBydWxlcyBlZmZpY2llbnRseS4KIGNsYXNzIENvbnRlbnRFeHRl
bnNpb25zQmFja2VuZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgLy8gLSBSdWxlIG1hbmFnZW1lbnQgaW50ZXJmYWNlLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHVw
cGVyIGxheWVyLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5
cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IDk2
ZTJkNjM0Yjg5M2IzOTkzMDRhOGIyYjI4NWU2MWY0ZTQ2OWRjMGMuLmIyYTlhNzgzNTIyNzcyODNm
OTVkODQ5ZDAzYjE1NmZjZGM3MjFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9TdWJ0bGVDcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlw
dG8uY3BwCkBAIC0xMTUsMzEgKzExNSwzMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAg
IGNhc2UgT3BlcmF0aW9uczo6RGVjcnlwdDoKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikg
ewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3Yx
XzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDogewogICAgICAg
ICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzoK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOiB7CiAgICAg
ICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFl
c0NiY0NmYlBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFl
c0NiY0NmYlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8
Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfQ1RSOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENy
eXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfR0NNOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9u
YXJ5PENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAg
ICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5n
RXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE1MSw3ICsx
NTEsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBzd2l0Y2ggKCppZGVudGlm
aWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BL
Q1MxX3YxXzU6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOiB7CiAgICAgICAgICAgICBh
dXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1z
PihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlv
bigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIu
cmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6UlNBX1BTUzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0
RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQo
KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0x
ODAsNyArMTgwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FF
U19QS0NTMV92MV81OiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9u
YXJ5PENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKQEAgLTIwMyw3ICsyMDMsNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVy
Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBo
YXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihw
YXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1S
c2FIYXNoZWRLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBA
IC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0
ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQ
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsKQEAgLTIyMywxNCArMjIzLDE0
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZp
ZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVy
LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9
IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5
UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9
IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFs
dWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihw
YXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoK
QEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogCiAgICAgICAgICAg
ICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZGhLZXlE
ZXJpdmVQYXJhbXM+KHN0YXRlLCBuZXdWYWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5
RGVyaXZlUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpIS0RGOiB7CkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAg
ICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAg
ICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZh
bHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobUhrZGZQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RG
MjogewpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
ICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBh
cmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Q
YmtkZjJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIEV4
Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9y
bWFsaXplQ3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkltcG9ydEtleToKICAgICAgICAg
c3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FTU0FfUEtDUzFfdjFfNToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpSU0FfUFNTOgpAQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0Fs
CiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAg
ICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1
bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFy
YW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjoKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBu
b3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19HQ006CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NG
QjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CiAgICAgICAgICAgICBhdXRvIHBh
cmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHN0
YXRlLCB2YWx1ZS5nZXQoKSk7CkBAIC0zMDcsMTkgKzMwNywxOSBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6RUNEU0E6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6RUNESDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxD
cnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6SEtERjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAg
Y2FzZSBPcGVyYXRpb25zOjpVbndyYXBLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIp
IHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRv
IHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4o
c3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVz
S2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0zNTQsMTIgKzM1
NCwxMiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVu
dGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRp
Zmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZp
ZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJl
c3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1h
Y0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtNTIwLDE2ICs1MjAs
MTYgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBj
cm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMoY28KIHsKICAgICBzd2l0Y2ggKGltcG9ydFBhcmFt
cy5wYXJhbWV0ZXJzQ2xhc3MoKSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
czo6Q2xhc3M6Ok5vbmU6IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOwogICAgICAgICByZXN1bHQtPmlk
ZW50aWZpZXIgPSBpbXBvcnRQYXJhbXMuaWRlbnRpZmllcjsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6RWNL
ZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bUVjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNL
ZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1FY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6OkhtYWNLZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFk
Q29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMp
KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJh
bXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
PihpbXBvcnRQYXJhbXMpKSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpD
bGFzczo6UnNhSGFzaGVkSW1wb3J0UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29w
eShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBh
cmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFz
aGVkSW1wb3J0UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGht
UnNhSGFzaGVkSW1wb3J0UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGRiY2NjOTAwZjMz
NzQ4Y2QyMDY3ZjYwY2IyOTBjMGJkNjAwNjU1MzMuLmE0MmY1NjRmODFmZTFmMGVhMDk0NDNkMWYx
MDUzYzFjM2NkMGNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxh
dGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHAKQEAgLTIxNywxMiArMjE3LDEyIEBAIGNsYXNzIENTU0NhbGNQcmltaXRpdmVWYWx1ZSBm
aW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAgIHsKICAgICAgICAgc3dp
dGNoIChjYXRlZ29yeSgpKSB7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVt
YmVyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25O
dW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxjRXhwcmVzc2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKICAgICAg
ICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNv
bXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgo
bV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpG
aXhlZCkpOwogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6CiAgICAg
ICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudExlbmd0aDogewotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUt
PmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9u
Pihjb252ZXJzaW9uRGF0YSkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4
cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVy
c2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAgICAgICB9CiAg
ICAgICAgIC8vIE9ubHkgdHlwZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVuZ3RoIGV4cHJl
c3Npb24gY2FuIGJlIGNvbnZlcnRlZAogICAgICAgICAvLyB0byBhIENhbGNFeHByZXNzaW9uTm9k
ZS4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudE51bWJlciBtYWtlcyBubyBzZW5zZSBhcyBh
IExlbmd0aC4KQEAgLTUyMCw3ICs1MjAsNyBAQCBjbGFzcyBDU1NDYWxjT3BlcmF0aW9uIGZpbmFs
IDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgICAgICBub2Rlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShub2Rl
KSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJl
c3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBt
X29wZXJhdG9yKTsKICAgICB9CiAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBmaW5h
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAppbmRleCBj
NDRjZWJjNTEyMGVkODMyNmQ5YTFiMmE2NTZiOTM2N2I2ZTE5MTI4Li5lNWFlOGI3N2E1MTRmMDlj
M2I0OTQ0MWI1NjJmNWMyYTFlYzc1MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzLmNwcApAQCAtMTY3LDExICsxNjcsMTEgQEAgdm9pZCBDU1NEZWZhdWx0
U3R5bGVTaGVldHM6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICAgICAgc2ltcGxlRGVmYXVs
dFN0eWxlU2hlZXQgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghZGVm
YXVsdFN0eWxlKTsKLSAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1
ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFr
ZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBkZWZhdWx0U3R5bGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwotICAgIGRlZmF1bHRQcmlu
dFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZh
dWx0U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQ
cmludFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICBtZWRpYVF1
ZXJ5U3R5bGVTaGVldCA9ICZTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250
ZXh0KFVBU2hlZXRNb2RlKSkubGVha1JlZigpOwogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMu
CkBAIC0xOTAsMTAgKzE5MCwxMCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNp
bXBsZURlZmF1bHRTdHlsZSgpCiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwogICAgIEFTU0VS
VCghc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQpOwogCi0gICAgZGVmYXVsdFN0eWxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtl
VW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIC8vIFRoZXJlIGFyZSBubyBtZWRpYS1z
cGVjaWZpYyBydWxlcyBpbiB0aGUgc2ltcGxlIGRlZmF1bHQgc3R5bGUuCiAgICAgZGVmYXVsdFBy
aW50U3R5bGUgPSBkZWZhdWx0U3R5bGU7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUg
PSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxlRGVmYXVsdFN0
eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwgc3RybGVu
KHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KCpzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDc3MDliNWRlYWZiZmU5ZjlhYjExYWMwNzdjNjE5
ZDc5NGQxNjQyZjIuLjY0NmMxNGExMWFjNjQ1Yjk5MjYxNDlmMjllOTgwMGM0YzcyNjdiY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgQ1NT
Rm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxp
c3QmIHNyY0xpc3QsIERvCiAgICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3Vu
ZFNWR0ZvbnQgfHwgKHNldHRpbmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250
c0VuYWJsZWQoKSk7CiAgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlz
U3VwcG9ydGVkRm9ybWF0KCkgJiYgZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoQ2Fj
aGVkRm9udCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwgZm91bmRTVkdG
b250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAgICAgICAg
ICAgICAgICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4o
Zm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVt
LnJlc291cmNlKCksIGNhY2hlZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+
KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxlbWVudCk7Cisg
ICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFj
ZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwogCiAgICAgICAg
IGlmIChzb3VyY2UpCiAgICAgICAgICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNv
dXJjZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggMDVlM2EzZjZl
MjFiYzkyODE3ODU1NjlhMTRhYTUwZmY1MmU0YTI3MC4uMThlODM0ZDY5MGE2ZWI1MTAxZGM5MGM4
ZGU1ZGI1ZTdhMWIwYzVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBA
IC0xMTksNyArMTE5LDcgQEAgdm9pZCBDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFj
ZXNGb3JGYW1pbHlSZWdpc3RlcmVkKGNvbnN0IFN0cmluZyYgZmFtaWwKICAgICAgICAgZmFtaWx5
TGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhbWlseVZh
bHVlKGZhbWlseU5hbWUpKTsKICAgICAgICAgZmFjZS0+c2V0RmFtaWxpZXMoZmFtaWx5TGlzdC5n
ZXQoKSk7CiAgICAgICAgIGZhY2UtPnNldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMoaXRlbSk7
Ci0gICAgICAgIGZhY2UtPmFkb3B0U291cmNlKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VT
b3VyY2U+KGZhY2UuZ2V0KCksIGZhbWlseU5hbWUpKTsKKyAgICAgICAgZmFjZS0+YWRvcHRTb3Vy
Y2UobWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkp
OwogICAgICAgICBBU1NFUlQoIWZhY2UtPmNvbXB1dGVGYWlsdXJlU3RhdGUoKSk7CiAgICAgICAg
IGZhY2VzLmFwcGVuZChXVEZNb3ZlKGZhY2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cm91cGluZ1J1bGUuY3BwCmluZGV4IGRlNmYzOWQzZjVkODczMWQ5OWU1ZWIzYzk2OGUyOWFkMWVh
Y2JmZTYuLmM2YzVjMzk1NDBhNWM1MDVjZGY0ZDU5Yzc0NmMzOTE4NWM5ZTAzYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQ1NTUnVs
ZSogQ1NTR3JvdXBpbmdSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxp
c3QmIENTU0dyb3VwaW5nUnVsZTo6Y3NzUnVsZXMoKSBjb25zdAogewogICAgIGlmICghbV9ydWxl
TGlzdENTU09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8
Q1NTR3JvdXBpbmdSdWxlJj4oKnRoaXMpKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBl
ciA9IG1ha2VVbmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nh
c3Q8Q1NTR3JvdXBpbmdSdWxlJj4oKnRoaXMpKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NP
TVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcAppbmRleCBmZmRkM2QwYWE2NTdmMjVlYWYzMWQ1NzBjNTg2OGVkNTMwOWUyZWZkLi41
NTUxZjJjNjkxN2QwMzMwNzI2YWNkZjgxMDkxYTkxZmFiNGUwYjU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAg
R2VuZXJhdGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZEltYWdlRm9yU2l6
ZShGbG9hdFNpemUgc2l6ZSkKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hl
ZEltYWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSwgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKQogewog
ICAgIEFTU0VSVCghbV9pbWFnZXMuY29udGFpbnMoc2l6ZSkpOwotICAgIG1faW1hZ2VzLmFkZChz
aXplLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwg
aW1hZ2UpKTsKKyAgICBtX2ltYWdlcy5hZGQoc2l6ZSwgbWFrZVVuaXF1ZTxDYWNoZWRHZW5lcmF0
ZWRJbWFnZT4oKnRoaXMsIHNpemUsIGltYWdlKSk7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZTo6ZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUgc2l6ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCBjOTA5ODMyZGEwZTUxOTAyNTM1
MTNhMzk4MzE5MWE3YzJmMzkzMDA1Li42ZjFlYjMzODZkOWZiYzcyZDQ0Mzc4NWQxZDE5YzRkZDhj
NWMzN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0yMjAs
NyArMjIwLDcgQEAgQ1NTS2V5ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVz
KCkKIHsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxp
c3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlm
cmFtZXNSdWxlPj4oKnRoaXMpOworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFr
ZVVuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKICAgICBy
ZXR1cm4gKm1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcAppbmRleCA0ODBhODk4NTIzN2FkYTkwYTExNzhlMGIyNzllMGU2NjgwN2UzMzQx
Li5jODhkMWVkYzkzYjdhNmM4M2YyMTc3YmFjNzY3ZjliNzgyZWU3NThiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPENTU1J1bGVM
aXN0PiBDU1NTdHlsZVNoZWV0Ojpjc3NSdWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBw
ZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0
eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBw
ZXIgPSBtYWtlVW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CiAgICAgcmV0dXJu
IG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1BhaW50V29ya2xldC5jcHAKaW5kZXggNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZi
MWE5Mjg0YzA3MC4uOTE0YmRlNGEyZGU5YWEyMTA2YzAxMDYzYjgwOGQ5Y2E0ZmZmNmRiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgRE9NQ1NTUGFpbnRXb3JrbGV0KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFt
ZXNwYWNlJiBjc3MpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNT
U1BhaW50V29ya2xldCo+KFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBz
dXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3Mp
OworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1BhaW50V29y
a2xldD4oY3NzKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgIHByb3ZpZGVUbygmY3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVn
aXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0
ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggN2VjZDkzZDdkYzNkNDMyZWFmODJiYzk1NmU2MWQ0
ODlhNTEwNjI1Yi4uMGRmNmFhZTk2ZjBlMWM3MGIzNzU1NjE2NDllZTM1ZDI4ZWI0YzM5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5
LmNwcApAQCAtODQsNyArODQsNyBAQCBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5KiBET01D
U1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Ojpmcm9tKERPTUNTU05hbWVzcGFjZQogewogICAgIGF1
dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5
Kj4oU3VwcGxlbWVudDxET01DU1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1l
KCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOwor
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3Vz
dG9tUHJvcGVydHk+KGNzcyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50Lmdl
dCgpOwogICAgICAgICBwcm92aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShu
ZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Rv
Y3VtZW50UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMu
Y3BwCmluZGV4IGQ4NTk2ZmQxYjI0NTlkZTA3ZTFjODk5Y2MwNzlmYzE5ODUxMTY1ZTkuLjgyYjdm
Y2MzMGU1ODI3NDk5MjAyZTI4YjgzMDg2Y2YwZmE0NGFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RG9jdW1lbnRSdWxlU2V0cy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBEb2N1bWVudFJ1bGVT
ZXRzOjpzX2lzSW52YWxpZGF0aW5nU3R5bGVXaXRoUnVsZVNldHMgeyBmYWxzZSB9OwogRG9jdW1l
bnRSdWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
KQogICAgIDogbV9zdHlsZVJlc29sdmVyKHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgbV9hdXRob3JT
dHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0g
bWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hy
aW5rVG9GaXQoKTsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6
OnVwZGF0ZVVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZUlmTmVlZGVkKCkgY29uc3QKIAogICAgIC8v
IE1lZGlhIHF1ZXJpZXMgb24gdXNlciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRlZCBpbiBk
b2N1bWVudCBjb250ZXh0LiBUaGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4gdGhpcyBy
ZXNwZWN0LgogICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIu
bWVkaWFRdWVyeUV2YWx1YXRvcigpOwotICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0
eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRpYVF1ZXJ5
U3R5bGVTaGVldCwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAKICAg
ICAvLyBWaWV3cG9ydCBkZXBlbmRlbnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBpbmVmZmlj
aWVudCB0byBhbGxvdyBvbiBVQSBzaGVldC4KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBEb2N1bWVu
dFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKIHsKICAgICBhdXRvJiBleHRlbnNpb25T
dHlsZVNoZWV0cyA9IG1fc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hl
ZXRzKCk7CiAgICAgYXV0byYgbWVkaWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNvbHZlci5t
ZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7Ci0gICAgYXV0byB0ZW1wVXNlclN0eWxlID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IG1ha2VVbmlxdWU8
UnVsZVNldD4oKTsKICAgICBpZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVu
c2lvblN0eWxlU2hlZXRzLnBhZ2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+
YWRkUnVsZXNGcm9tU2hlZXQocGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbWVkaWFRdWVyeUV2
YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHls
ZVNoZWV0cyhleHRlbnNpb25TdHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLCAq
dGVtcFVzZXJTdHlsZSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29sdmVyKTsKQEAg
LTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxl
U2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogICAgIHNpemVfdCBzaXplID0g
cnVsZXMuc2l6ZSgpOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgYXV0byBydWxlU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8g
cnVsZVNldCA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkKICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBy
dWxlc1tpXS5zZWxlY3RvckluZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAg
cnVsZVNldC0+c2hyaW5rVG9GaXQoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4m
IHJ1bGVzKQogdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAg
ICBtX2lzQXV0aG9yU3R5bGVEZWZpbmVkID0gdHJ1ZTsKLSAgICBtX2F1dGhvclN0eWxlID0gc3Rk
OjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVl
PFJ1bGVTZXQ+KCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgp
OwogfQogCkBAIC0xOTUsMTIgKzE5NSwxMiBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1
bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJgogICAg
ICAgICAgICAgYXV0byBhcnJheUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpmZWF0dXJl
Lm1hdGNoRWxlbWVudCk7CiAgICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50
QXJyYXlbYXJyYXlJbmRleF07CiAgICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCi0gICAgICAgICAg
ICAgICAgcnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICAgICAgICAg
ICAgICBydWxlU2V0ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgICAgICAgICAgcnVsZVNl
dC0+YWRkUnVsZShmZWF0dXJlLnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5z
ZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25T
ZWxlY3RvcikKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2FycmF5
SW5kZXhdLmFwcGVuZChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAgfQot
ICAgICAgICBhdXRvIGludmFsaWRhdGlvblJ1bGVTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+KCk7CisgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVs
ZVNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBpZiAobWF0Y2hFbGVtZW50QXJyYXlbaV0pCiAgICAgICAgICAgICAg
ICAgaW52YWxpZGF0aW9uUnVsZVNldHMtPmFwcGVuZCh7IHN0YXRpY19jYXN0PE1hdGNoRWxlbWVu
dD4oaSksIFdURk1vdmUobWF0Y2hFbGVtZW50QXJyYXlbaV0pLCBXVEZNb3ZlKGludmFsaWRhdGlv
blNlbGVjdG9yQXJyYXlbaV0pIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAKaW5kZXggMDVkMzg1YTU1OGM0OGM0OGVlOGRhOTBmNmExOGNiNGU3NWE2YTk1
YS4uMDViNDU3ZmQ2ODIwYzY3ZjBlMGZiZTkzMDg3YjhjZWYwODI5ZWJhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNvbGxl
Y3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2UKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBydWxlRGF0YVZlY3RvciA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CisgICAgYXV0byBydWxlRGF0
YVZlY3RvciA9IG1ha2VVbmlxdWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVs
ZURhdGFWZWN0b3ItPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkUnVsZXMuc2l6ZSgp
KTsKICAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMpCiAgICAgICAg
IHJ1bGVEYXRhVmVjdG9yLT51bmNoZWNrZWRBcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDIxMjI0NWRlZGNhZmY5NTZhZDQ0MTA3YjllYjQ0
Y2I0MTMyOGFhZGIuLmUxYjFhZjIwZmIxMWFlM2RmZWUxOTJjYWM5MmU2MmNkZWE1NTdkYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NTRm9u
dEZhY2UmIGZvbnRGYWNlLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJW
aWV3KQogewotICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNv
dXJjZT4oZm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5
QnVmZmVyVmlldykpOworICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNv
dXJjZT4oZm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5
QnVmZmVyVmlldykpOwogICAgIGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzYjIwZDQxMzMzNzUzM2Q2Y2Iz
YzU4Y2IzZDEwNGYwZjA0YjVlNjE5Li5lMWUxZDcyMTIxMWU2ZGUwMWE4YTg2ZTBkNDBkODUyODk5
N2IzNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxEZXByZWNhdGVk
Q1NTT01WYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVj
YXRlZENTCiAgICAgLy8gVGhlIG1hcCBpcyBoZXJlIHRvIG1haW50YWluIHRoZSBvYmplY3QgaWRl
bnRpdHkgb2YgdGhlIENTU1ZhbHVlcyBvdmVyIG11bHRpcGxlIGludm9jYXRpb25zLgogICAgIC8v
IEZJWE1FOiBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgaWRlbnRpdHkgaXMgbm90IGltcG9ydGFudCBm
b3Igd2ViIGNvbXBhdGliaWxpdHkgYW5kIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZC4KICAg
ICBpZiAoIW1fY3Nzb21WYWx1ZVdyYXBwZXJzKQotICAgICAgICBtX2Nzc29tVmFsdWVXcmFwcGVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRl
ZENTU09NVmFsdWU+Pj4oKTsKKyAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBtYWtlVW5p
cXVlPEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7
CiAgICAgCiAgICAgYXV0byYgY2xvbmVkVmFsdWUgPSBtX2Nzc29tVmFsdWVXcmFwcGVycy0+YWRk
KGludGVybmFsVmFsdWUsIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+KCkpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAoY2xvbmVkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNw
cAppbmRleCBkZmZkYTZmNTFkZjk1NGQyMDZmMDNkMGM3MzU2MGRkYTM5MmQxNDMwLi40NGVlYjFk
NzAyZDJmOWRjYjZiMTJiNTUyNzgxNTY3ZmQwMGQyZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVh
dHVyZS5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0
RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogCiAgICAgZm9yIChhdXRvJiBuYW1l
QW5kTWF0Y2ggOiBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXMpIHsKICAgICAgICAgY2xhc3NSdWxl
cy5lbnN1cmUobmFtZUFuZE1hdGNoLmZpcnN0LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3It
PnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxl
Y3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVBbmRNYXRjaC5z
ZWNvbmQpKTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVtZW50
OjpIb3N0KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVBbmRNYXRj
aC5maXJzdCk7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVj
dEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0byogc2VsZWN0
b3IgPSBzZWxlY3RvckFuZE1hdGNoLmZpcnN0OwogICAgICAgICBhdXRvIG1hdGNoRWxlbWVudCA9
IHNlbGVjdG9yQW5kTWF0Y2guc2Vjb25kOwogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUo
c2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxl
RmVhdHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZl
YXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVy
ZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2Vs
ZWN0b3JMaXN0SW5kZXgoKSwgbWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOwogICAgICAgICBpZiAo
bWF0Y2hFbGVtZW50ID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0
ZXNBZmZlY3RpbmdIb3N0LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBAQCB2b2lkIFJ1bGVG
ZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIHVuY29tbW9u
QXR0cmlidXRlUnVsZXMuYXBwZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMp
OwogICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxlcykgewogICAg
ICAgICBjbGFzc1J1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAg
ICAgfQogICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5jbGFzc2VzQWZmZWN0aW5n
SG9zdC5iZWdpbigpLCBvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CiAKICAgICBm
b3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLmF0dHJpYnV0ZVJ1bGVzKSB7CiAgICAgICAg
IGF0dHJpYnV0ZVJ1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAg
ICAgfQogICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRyaWJ1dGVzQWZm
ZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5lbmQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggZmE2YjkxMjAyMTNlYzU0YmI2NTkwM2NmYWU2Njli
ZDQ2NmZiYjAyNy4uM2JiYmJmZWJjYTAwOTk3ODJhZjM5ODFlYjg2NzM2Y2U2ODAzNmVkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUnVsZVNldDo6YWRk
VG9SdWxlU2V0KGNvbnN0IEF0b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3Qg
UnVsZURhCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBydWxlcyA9IG1hcC5hZGQoa2V5LCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFydWxlcykKLSAgICAgICAgcnVsZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVEYXRhVmVjdG9yPigpOworICAgICAgICBydWxlcyA9IG1h
a2VVbmlxdWU8UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZXMtPmFwcGVuZChydWxlRGF0YSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA2
OWFmNTU4MTU2NTRiZTMyMGYxYTlmZDcxYTc3NjY3ZDkyOTNmYTk3Li44ODc3NWFkN2JhOGFhNTkw
YWQ3YmY3MmEzN2QzYjVmNjViNWQyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCkBAIC0zNDgsOSArMzQ4LDkgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5n
dGgKICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0g
bGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4g
bGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVu
Z3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0
aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRv
IG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShs
ZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRB
cHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2Vu
dCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNz
aW9uTGVuZ3RoPihsZW5ndGgpKTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVz
c2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7
CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCks
IFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3Rv
bS5oCmluZGV4IDlhMTkxZDE3ZGQ4ZTNlZGNjMWMxMzBjMjY1OTBlMGNhNmY0ZTM2YTMuLmM1YzJi
ZjVkMGY1ZmM3OTEwYWZmMTYyNTk5OTBjNDM4NjYwYzE0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTgxMyw3ICs4MTMsNyBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1p
dGl2ZVZhbHVlKCpzaGFkb3dWYWx1ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvbG9yID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICBhdXRvIHNo
YWRvd0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBi
bHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwor
ICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50
KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNw
YXJlbnQpOwogICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQog
ICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KFdURk1vdmUo
c2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBp
cyBub3QgdGhlIGZpcnN0IGVudHJ5CiAgICAgICAgIGVsc2UKQEAgLTgyOSw3ICs4MjksNyBAQCBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3coU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbAogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsK
LSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5w
YXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+
KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsK
KyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5w
YXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAog
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dFNoYWRvdyhTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC04NDQsNyArODQ0
LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxCb3hTaGFk
b3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
cikKIHsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29s
dmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dE
YXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRy
KTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVy
LnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5
bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAog
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQm94U2hhZG93KFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEzNTksNyArMTM1
OSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlz
dFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAg
ICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxp
c3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAt
IENTU1ZhbHVlRGlzYyk7Ci0gICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxl
VHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50
ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIo
KSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CiAgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlk
U2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDRjZjZjNmY3YWI3ZGY5ZmMwNDMz
NGJiZThkZDA1YTNiNTU5ZTkzNWMuLjE5Y2IwMzNkNzBiYjVhODk2ODY1NTcyNzU1Yjk2Yjk3NzA1
MWNiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0xNTMwLDcg
KzE1MzAsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpl
bnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkKICAgICAgICAgQVNTRVJUKCFtX2Nzc29tV3JhcHBl
ci0+cGFyZW50RWxlbWVudCgpKTsKICAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAg
ICB9Ci0gICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVuaXF1
ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
Y3Nzb21XcmFwcGVyOwogfQogCkBAIC0xNTQwLDcgKzE1NDAsNyBAQCBDU1NTdHlsZURlY2xhcmF0
aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0
aW9uKFN0eQogICAgICAgICBBU1NFUlQobV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSA9
PSAmcGFyZW50RWxlbWVudCk7CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAg
fQotICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVDU1NTdHlsZURl
Y2xhcmF0aW9uPigqdGhpcywgcGFyZW50RWxlbWVudCk7CisgICAgbV9jc3NvbVdyYXBwZXIgPSBt
YWtlVW5pcXVlPElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50
KTsKICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKaW5kZXggM2E1MmMzNjE5OWE3OWEyNWUwOWMwMWQ4ZmEwYzUwYWVmZjY4MmJi
NS4uZGU0ZGE1ZjU1MTI5OTA5MzFkYTg2YzVjN2U4M2JjYjEwMTgwOGJjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTcxNSw3ICsxNzE1LDcgQEAgU3R5bGVSZXNvbHZl
cjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNG
b3JSb2xsYmFjaygKICAgICAgICAgaWYgKGF1dGhvclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0
dXJuIGF1dGhvclJvbGxiYWNrOwogCi0gICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2soc3Rk
OjptYWtlX3VuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUp
KTsKKyAgICAgICAgYXV0byBuZXdBdXRob3JSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJv
cGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3Bl
Y2lhbCByb2xsYmFjayBjYXNjYWRlIGNvbnRhaW5zIFVBIHJ1bGVzIGFuZCB1c2VyIHJ1bGVzIGJ1
dCBubyBhdXRob3IgcnVsZXMuCiAgICAgICAgIG5ld0F1dGhvclJvbGxiYWNrLT5hZGROb3JtYWxN
YXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNo
UmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBmYWxzZSk7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBT
dHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVk
UHJvcGVydGllc0ZvclJvbGxiYWNrKAogICAgICAgICBpZiAodXNlclJvbGxiYWNrKQogICAgICAg
ICAgICAgcmV0dXJuIHVzZXJSb2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFj
ayhzdGQ6Om1ha2VfdW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5n
TW9kZSkpOworICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVk
UHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMg
c3BlY2lhbCByb2xsYmFjayBjYXNjYWRlIGNvbnRhaW5zIG9ubHkgVUEgcnVsZXMuCiAgICAgICAg
IG5ld1VzZXJSb2xsYmFjay0+YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1
bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFs
c2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNl
L1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDk5N2M0YzAzNjdkZDVkMGQ2NDVkNWVkZjUx
ZWVjNGJmYjBjMzIxMDUuLjAyYTM2ZWZlMDVkM2NjOWZlOTdkZDVjMGUyNTkzYWU3OWZkNmMyYzYg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdWIgZ2VuZXJhdGVG
aWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49
ICRpbmRlbnQgLiAiRmlsbExheWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yIChhdXRvKiBwYXJlbnQgPSAmc3R5bGVSZXNv
bHZlci5wYXJlbnRTdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBw
YXJlbnQgJiYgcGFyZW50LT4iIC4gJHRlc3RGdW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50
LT5uZXh0KCkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmICgh
Y2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2
aW91c0NoaWxkLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0Rmls
bExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4o
IiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsK
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgfVxuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgY2hpbGQtPiIgLiAkc2V0dGVyIC4gIihwYXJlbnQtPiIgLiAk
Z2V0dGVyIC4gIigpKTtcbiI7CkBAIC04MzcsNyArODM3LDcgQEAgc3ViIGdlbmVyYXRlRmlsbExh
eWVyUHJvcGVydHlWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
ICAgIC8vIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcg
bmV3IGxheWVycyBhcyBuZWVkZWQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
IiAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkge1xu
IjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIGlmICghY2hpbGQpIHtc
biI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXND
aGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXll
clR5cGUoJG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExheWVyPigi
IC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAu
PSAkaW5kZW50IC4gIiAgICAgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xu
IjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIH1cbiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlTWFwKCkt
PiIgLiBnZXRGaWxsTGF5ZXJNYXBmdW5jdGlvbigkbmFtZSkgLiAiKCIgLiAkQ1NTUHJvcGVydHlJ
ZCAuICIsICpjaGlsZCwgaXRlbSk7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VySW1wbC5jcHAKaW5kZXggNjdjZmRmNTZkNjI1MDUzYTAxMTE5OTJkNzExZjhjOGZmZGI5
NWRjMi4uZDc1ZTRmYzkyYzc3YjA3YjFlNTNkYWQzMzg3ZTU1MWEzOTBjMjViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IENTU1BhcnNlckltcGw6OkNTU1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBzdHJpCiAgICAgLCBtX3N0eWxlU2hlZXQoc3R5bGVTaGVldCkK
ICAgICAsIG1fb2JzZXJ2ZXJXcmFwcGVyKHdyYXBwZXIpCiB7Ci0gICAgbV90b2tlbml6ZXIgPSB3
cmFwcGVyID8gc3RkOjptYWtlX3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIp
IDogc3RkOjptYWtlX3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CisgICAgbV90b2tlbml6
ZXIgPSB3cmFwcGVyID8gbWFrZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIp
IDogbWFrZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CiAgICAgaWYgKGNvbnRleHQuZGVm
ZXJyZWRDU1NQYXJzZXJFbmFibGVkICYmICF3cmFwcGVyICYmIHN0eWxlU2hlZXQgJiYgcnVsZVBh
cnNpbmcgPT0gQ1NTUGFyc2VyOjpSdWxlUGFyc2luZzo6RGVmZXJyZWQpCiAgICAgICAgIG1fZGVm
ZXJyZWRQYXJzZXIgPSBDU1NEZWZlcnJlZFBhcnNlcjo6Y3JlYXRlKGNvbnRleHQsIHN0cmluZywg
KnN0eWxlU2hlZXQpOwogfQpAQCAtMjgyLDkgKzI4Miw5IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQ
YXJzZXJJbXBsOjpwYXJzZVBhZ2VTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBT
dHlsCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yOwog
ICAgIGlmICghdHlwZVNlbGVjdG9yLmlzTnVsbCgpICYmIHBzZXVkby5pc051bGwoKSkKLSAgICAg
ICAgc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZp
ZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVz
cGFjZSgpKSk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rv
cj4oUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRl
ZmF1bHROYW1lc3BhY2UoKSkpOwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVjdG9yID0gbWFr
ZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgaWYgKCFwc2V1ZG8uaXNOdWxs
KCkpIHsKICAgICAgICAgICAgIHNlbGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNl
bGVjdG9yPihDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IocHNldWRv
KSk7CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9yLT5tYXRjaCgpICE9IENT
U1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpCkBAIC01MzUsNyArNTM1LDcgQEAgUmVmUHRyPFN0
eWxlUnVsZU5hbWVzcGFjZT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU5hbWVzcGFjZVJ1bGUoQ1NT
UGFyc2VyVG9rZW5SYW4KIFJlZlB0cjxTdHlsZVJ1bGVNZWRpYT4gQ1NTUGFyc2VySW1wbDo6Y29u
c3VtZU1lZGlhUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2Vu
UmFuZ2UgYmxvY2spCiB7CiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVy
biBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVy
eVNldChwcmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNl
Tm9uTnVsbCgpLCAgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4o
YmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRp
YTo6Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBN
ZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgbWFr
ZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFy
c2VyKSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKIApAQCAt
NTYzLDcgKzU2Myw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVTdXBwb3J0cz4gQ1NTUGFyc2VySW1wbDo6
Y29uc3VtZVN1cHBvcnRzUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlCiAgICAgICAgIHJldHVybiBu
dWxscHRyOyAvLyBQYXJzZSBlcnJvciwgaW52YWxpZCBAc3VwcG9ydHMgY29uZGl0aW9uCiAKICAg
ICBpZiAobV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRz
OjpjcmVhdGUocHJlbHVkZS5zZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVk
LCBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1f
ZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVh
dGUocHJlbHVkZS5zZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBtYWtl
VW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJz
ZXIpKTsKIAogICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVy
V3JhcHBlci0+b2JzZXJ2ZXIoKS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpTdXBwb3J0cywg
bV9vYnNlcnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKQEAgLTYzNSw3ICs2MzUs
NyBAQCBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5
ZnJhbWVzUnVsZShib29sIHdlYmtpdFByZWZpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8g
UGFyc2UgZXJyb3I7IGV4cGVjdGVkIGlkZW50IHRva2VuIGluIEBrZXlmcmFtZXMgaGVhZGVyCiAK
ICAgICBpZiAobV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtleWZy
YW1lczo6Y3JlYXRlKG5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVs
ZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVS
dWxlS2V5ZnJhbWVzOjpjcmVhdGUobmFtZSwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBS
dWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZl
cldyYXBwZXIpIHsKICAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRS
dWxlSGVhZGVyKFN0eWxlUnVsZTo6S2V5ZnJhbWVzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRP
ZmZzZXQocmFuZ2VDb3B5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlclNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyU2VsZWN0b3IuY3BwCmluZGV4IDRkYmVmNDA1OGM3MTYyY2Q5NjQ2ZWE3NjRkY2JiOWJiY2Yz
MWU0NTkuLmEwODcwZDM3NjJjZWE0MmY1YjVlYWJkMDVlYTc0NGYyZDlkNmIzNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCkBAIC00NCw3
ICs0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2Vs
ZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKFN0CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1Bh
cnNlclNlbGVjdG9yPigpOworICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNl
clNlbGVjdG9yPigpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6UGFnZVBzZXVkb0NsYXNzKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UGFn
ZVBzZXVkb1R5cGUocHNldWRvVHlwZSk7CiAgICAgcmV0dXJuIHNlbGVjdG9yOwpAQCAtNjMsNyAr
NjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVj
dG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTZWxlY3RvcgogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVj
dG9yOjpQc2V1ZG9FbGVtZW50KTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRv
RWxlbWVudFR5cGUocHNldWRvVHlwZSk7CiAgICAgQXRvbVN0cmluZyBuYW1lOwpAQCAtODQsMTMg
Kzg0LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2Vs
ZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3RvcihTCiB7CiAgICAgYXV0byBwc2V1ZG9UeXBl
ID0gcGFyc2VQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50U3RyaW5nKHBzZXVkb1R5
cGVTdHJpbmcpOwogICAgIGlmIChwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzICE9IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc1Vua25vd24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBt
YWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxl
Y3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKICAgICAgICAgc2VsZWN0
b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0NsYXNzVHlwZShwc2V1ZG9UeXBlLnBzZXVkb0NsYXNz
KTsKICAgICAgICAgcmV0dXJuIHNlbGVjdG9yOwogICAgIH0KICAgICBpZiAocHNldWRvVHlwZS5j
b21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVu
a25vd24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1Bh
cnNlclNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2go
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rv
ci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxl
bWVudCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRWYWx1ZShwc2V1ZG9UeXBl
U3RyaW5nLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwpAQCAtMTAwLDEyICsxMDAsMTIgQEAg
c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFy
c2VQc2V1ZG9DbGFzc1NlbGVjdG9yKFMKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNl
clNlbGVjdG9yKCkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rv
cj4oKSkKKyAgICA6IG1fc2VsZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKIHsKIH0K
IAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ1FOYW1lKQotICAgIDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVj
dG9yPih0YWdRTmFtZSkpCisgICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+
KHRhZ1FOYW1lKSkKIHsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIENTU1BhcnNlclNlbGVjdG9y
Ojp+Q1NTUGFyc2VyU2VsZWN0b3IoKQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNl
bGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiYm
IHNlbGVjdG9yVmVjdG9yKQogewotICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChzdGQ6
Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsK
KyAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxpc3QobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvckxp
c3Q+KFdURk1vdmUoc2VsZWN0b3JWZWN0b3IpKSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0
b3I6OnNldExhbmdBcmd1bWVudExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9tU3RyaW5n
Pj4gYXJndW1lbnRMaXN0KQpAQCAtMjA5LDEyICsyMDksMTIgQEAgdm9pZCBDU1NQYXJzZXJTZWxl
Y3Rvcjo6YXBwZW5kVGFnSGlzdG9yeShDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3IgcmVsYXRp
b24sIHMKIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKIHsK
LSAgICBhdXRvIHNlY29uZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7
CisgICAgYXV0byBzZWNvbmQgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAg
IHNlY29uZC0+bV9zZWxlY3RvciA9IFdURk1vdmUobV9zZWxlY3Rvcik7CiAgICAgc2Vjb25kLT5t
X3RhZ0hpc3RvcnkgPSBXVEZNb3ZlKG1fdGFnSGlzdG9yeSk7CiAgICAgbV90YWdIaXN0b3J5ID0g
V1RGTW92ZShzZWNvbmQpOwogCi0gICAgbV9zZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NT
U2VsZWN0b3I+KHRhZ1FOYW1lLCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOworICAgIG1fc2VsZWN0
b3IgPSBtYWtlVW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VS
dWxlKTsKICAgICBtX3NlbGVjdG9yLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0
b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCmluZGV4IDQ4OGU2MDIzZjIwMDI0YWZmZWY4NjE3YTUxNGM0MDliZjQ5ZDFlZjMuLjcw
OGVjNzc3M2MxOGQ2ZTA4ZTAwMWNhZmEzZDI4YzgwZDlmODcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0yNDM1LDcgKzI0MzUs
NyBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBh
dGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncwogICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkg
IT0gU3RyaW5nVG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8g
Ynl0ZVN0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CisgICAg
YXV0byBieXRlU3RyZWFtID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBp
ZiAoIWJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCksICpieXRlU3RyZWFtLCBVbmFsdGVyZWRQ
YXJzaW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4IDZiM2FjYzg1ZTZmYzVl
NWNiYjk1YWI5ZmUxYTZjN2NhOWVmODEwNDcuLmYzMzIzYjIyNmI0YjAxMDBjOTgzYzQ4NjYzNzVm
MWU2NTdiMTczOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2Vs
ZWN0b3JQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0
b3JQYXJzZXIuY3BwCkBAIC01NjQsNyArNTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNl
clNlbGVjdG9yPiBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyhDU1NQYXJzZXJUb2sK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhbmc6IHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBDU1MgU2VsZWN0b3JzIExldmVsIDQgYWxsb3dzIDpsYW5n
KCotZm9vKQotICAgICAgICAgICAgYXV0byBhcmd1bWVudExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxBdG9tU3RyaW5nPj4oKTsKKyAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0g
bWFrZVVuaXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+KCk7CiAgICAgICAgICAgICBpZiAoIWNvbnN1
bWVMYW5nQXJndW1lbnRMaXN0KGFyZ3VtZW50TGlzdCwgYmxvY2spKQogICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExp
c3QoV1RGTW92ZShhcmd1bWVudExpc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCmluZGV4IDllYjVkN2U0OWY1NmExZTk4ZDFmYmI5
YjIzZTZlYTcyZTIyNjE1OGYuLjg4MTE3ZjE5ZTRiMjZiYTI1YmZmMjVhODU1OTE3MzJiYjdhM2U3
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25R
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjpF
bGVtZW50UXVldWUmIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVCYWNrCiB7CiAg
ICAgaWYgKCFzX3Byb2Nlc3NpbmdCYWNrdXBFbGVtZW50UXVldWUpIHsKICAgICAgICAgc19wcm9j
ZXNzaW5nQmFja3VwRWxlbWVudFF1ZXVlID0gdHJ1ZTsKLSAgICAgICAgTWljcm90YXNrUXVldWU6
Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJhY2t1cEVsZW1lbnRR
dWV1ZU1pY3JvdGFzaz4oKSk7CisgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVl
dWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOwog
ICAgIH0KICAgICByZXR1cm4gYmFja3VwRWxlbWVudFF1ZXVlKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCmluZGV4IGU3OTNmMjBkOTMxYmY4NGM4NWZhYjlhZDI0ZjgzZmU4YTQ4
YTJmMWQuLmQzYWY3MGZiOGJhMzM2YmZhNjE4YmY5YzEyNTZiMTA3ZDlkMjVhYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBEYXRhVHJh
bnNmZXI6OmRpZEFkZEZpbGVUb0l0ZW1MaXN0KCkKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRh
VHJhbnNmZXI6Oml0ZW1zKCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRl
bUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7Cisg
ICAgICAgIG1faXRlbUxpc3QgPSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhp
cyk7CiAgICAgcmV0dXJuICptX2l0ZW1MaXN0OwogfQogCkBAIC00MTYsNyArNDE2LDcgQEAgYm9v
bCBEYXRhVHJhbnNmZXI6Omhhc1N0cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFJl
ZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcm
IGh0bWxUZXh0KQogewotICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3Rh
dGljUGFzdGVib2FyZD4oKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRp
Y1Bhc3RlYm9hcmQ+KCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4i
X3MsIHBsYWluVGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJf
cywgaHRtbFRleHQpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1
bWVudCwgU3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5w
dXRFdmVudCkpOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFJlZjxEYXRh
VHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5l
dyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAg
IGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQs
IFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5
cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlm
aWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1
cm4gZGF0YVRyYW5zZmVyOwogfQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVy
OjpzZXREcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgaW50IHgsIGludCB5KQogICAgIG1fZHJh
Z0ltYWdlID0gaW1hZ2U7CiAgICAgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIGlmICghbV9k
cmFnSW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1fZHJhZ0ltYWdl
TG9hZGVyID0gbWFrZVVuaXF1ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOwogICAgICAgICBtX2Ry
YWdJbWFnZUxvYWRlci0+c3RhcnRMb2FkaW5nKG1fZHJhZ0ltYWdlKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKaW5k
ZXggMzM2MjIzMTA4MWIxM2Y3MmRjMThkYWM1ZjM5MDdhNWU3YzE3YjBiZi4uZjIxMTMxZmY4Mjc4
MjFkYzc0ZTg1MGE5OGYxYmIyMzA5OWUwMjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBi
b29sIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChQYWdlKiBwYWdlKQog
CiB2b2lkIHByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRvKFBhZ2UmIHBhZ2UsIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
Ojpwcm92aWRlVG8oJnBhZ2UsIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVu
dE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNs
aWVudCkpOworICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdl
LCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlx
dWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTJiMTQ0ZDU2N2Q3OTY2
MmU5OGY3NGJjNTFlOTI0MTE2Y2M2ZDU2Zi4uZWIwYjk3NDU1NWFkMjUzOTJlODA2NjVhNmNkMTE1
MTkyNmZlN2YyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjEsMTkgKzUyMSwxOSBA
QCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWdu
ZWQgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9xdWlya3MobWFrZVVuaXF1ZVJlZjxR
dWlya3M+KCp0aGlzKSkKICAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIobV9mcmFtZSA/IFJl
ZjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4obV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSkgOiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Y3JlYXRlKG51bGxwdHIpKQogICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZl
cnNpb24pCi0gICAgLCBtX3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+
KCp0aGlzKSkKLSAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVldHMoc3RkOjptYWtlX3VuaXF1ZTxF
eHRlbnNpb25TdHlsZVNoZWV0cz4oKnRoaXMpKQotICAgICwgbV92aXNpdGVkTGlua1N0YXRlKHN0
ZDo6bWFrZV91bmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQotICAgICwgbV9tYXJrZXJz
KHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCisgICAg
LCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1f
ZXh0ZW5zaW9uU3R5bGVTaGVldHMobWFrZVVuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4oKnRo
aXMpKQorICAgICwgbV92aXNpdGVkTGlua1N0YXRlKG1ha2VVbmlxdWU8VmlzaXRlZExpbmtTdGF0
ZT4oKnRoaXMpKQorICAgICwgbV9tYXJrZXJzKG1ha2VVbmlxdWU8RG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3N0eWxlUmVjYWxjVGltZXIoW3RoaXNdIHsgdXBkYXRl
U3R5bGVJZk5lZWRlZCgpOyB9KQogICAgICwgbV9kb2N1bWVudENyZWF0aW9uVGltZShNb25vdG9u
aWNUaW1lOjpub3coKSkKLSAgICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2Ny
aXB0UnVubmVyPigqdGhpcykpCi0gICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVu
aXF1ZTxTY3JpcHRSdW5uZXI+KCp0aGlzKSkKKyAgICAsIG1fbW9kdWxlTG9hZGVyKG1ha2VVbmlx
dWU8U2NyaXB0TW9kdWxlTG9hZGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBt
X2FwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBl
bmRpbmdYU0xUcmFuc2Zvcm1zVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV94bWxWZXJzaW9u
KCIxLjAiX3MpCi0gICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAoc3RkOjptYWtlX3VuaXF1ZTxD
b25zdGFudFByb3BlcnR5TWFwPigqdGhpcykpCisgICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAo
bWFrZVVuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFwPigqdGhpcykpCiAgICAgLCBtX2RvY3VtZW50
Q2xhc3Nlcyhkb2N1bWVudENsYXNzZXMpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtNTQ1LDEwICs1NDUsMTAgQEAgRG9jdW1lbnQ6OkRv
Y3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xh
c3NlcywgdW5zaWcKICNlbmRpZgogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAm
RG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VNb3Rpb25D
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCi0gICAgLCBt
X2RldmljZU1vdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25Db250
cm9sbGVyPigqbV9kZXZpY2VNb3Rpb25DbGllbnQpKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlv
bkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TPigpKQot
ICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KSkKKyAg
ICAsIG1fZGV2aWNlTW90aW9uQ2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9T
PigpKQorICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlTW90
aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlTW90aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQobWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkK
KyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCiAjZW5kaWYK
ICAgICAsIG1fcGVuZGluZ1Rhc2tzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6cGVuZGluZ1Rhc2tz
VGltZXJGaXJlZCkKICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRoaXMs
ICZEb2N1bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKQEAgLTc1OCw3
ICs3NTgsNyBAQCBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZvckFjY2Vzc0tleShjb25zdCBT
dHJpbmcmIGtleSkKIAogdm9pZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlDYWNoZSgpCiB7Ci0g
ICAgbV9hY2Nlc3NLZXlDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVs
ZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PihbdGhpc10geworICAgIG1fYWNjZXNz
S2V5Q2FjaGUgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEVsZW1l
bnQqLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBu
b2RlIDogY29tcG9zZWRUcmVlRGVzY2VuZGFudHMoKnRoaXMpKSB7CiAgICAgICAgICAgICBpZiAo
IWlzPEVsZW1lbnQ+KG5vZGUpKQpAQCAtNzgzLDcgKzc4Myw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVj
dG9yUXVlcnkmPiBEb2N1bWVudDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcm
IHNlbGVjCiAgICAgaWYgKHNlbGVjdG9yU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAgICAgaWYgKCFtX3NlbGVjdG9yUXVlcnlDYWNo
ZSkKLSAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVj
dG9yUXVlcnlDYWNoZT4oKTsKKyAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBtYWtlVW5p
cXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsKICAgICByZXR1cm4gbV9zZWxlY3RvclF1ZXJ5Q2Fj
aGUtPmFkZChzZWxlY3RvclN0cmluZywgKnRoaXMpOwogfQogCkBAIC04NDgsNyArODQ4LDcgQEAg
dm9pZCBEb2N1bWVudDo6cmVzZXRBY3RpdmVMaW5rQ29sb3IoKQogRE9NSW1wbGVtZW50YXRpb24m
IERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigpCiB7CiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9u
KQotICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxET01JbXBsZW1l
bnRhdGlvbj4oKnRoaXMpOworICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gbWFrZVVuaXF1ZTxE
T01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pbXBsZW1lbnRhdGlvbjsK
IH0KIApAQCAtMTc2Myw3ICsxNzYzLDcgQEAgTm9kZTo6Tm9kZVR5cGUgRG9jdW1lbnQ6Om5vZGVU
eXBlKCkgY29uc3QKIEZvcm1Db250cm9sbGVyJiBEb2N1bWVudDo6Zm9ybUNvbnRyb2xsZXIoKQog
ewogICAgIGlmICghbV9mb3JtQ29udHJvbGxlcikKLSAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNvbnRyb2xsZXI+KCk7CisgICAgICAgIG1fZm9ybUNvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPEZvcm1Db250cm9sbGVyPigpOwogICAgIHJldHVybiAqbV9mb3Jt
Q29udHJvbGxlcjsKIH0KIApAQCAtMTk4OCw3ICsxOTg4LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBk
YXRlVGV4dFJlbmRlcmVyKFRleHQmIHRleHQsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWRUZXh0
LCB1bnMKICAgICBBU1NFUlQoIW1faW5SZW5kZXJUcmVlVXBkYXRlKTsKICAgICBTZXRGb3JTY29w
ZTxib29sPiBpblJlbmRlclRyZWVVcGRhdGUobV9pblJlbmRlclRyZWVVcGRhdGUsIHRydWUpOwog
Ci0gICAgYXV0byB0ZXh0VXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6VXBkYXRlPigq
dGhpcyk7CisgICAgYXV0byB0ZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6VXBkYXRlPigq
dGhpcyk7CiAgICAgdGV4dFVwZGF0ZS0+YWRkVGV4dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRU
ZXh0LCBsZW5ndGhPZlJlcGxhY2VkVGV4dCwgV1RGOjpudWxsb3B0IH0pOwogCiAgICAgUmVuZGVy
VHJlZVVwZGF0ZXIgcmVuZGVyVHJlZVVwZGF0ZXIoKnRoaXMpOwpAQCAtMjI3MCw3ICsyMjcwLDcg
QEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRl
eCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKIFN0eWxlUmVzb2x2ZXImIERvY3VtZW50Ojp1c2Vy
QWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpCiB7CiAgICAgaWYgKCFtX3VzZXJBZ2VudFNo
YWRvd1RyZWVTdHlsZVJlc29sdmVyKQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHls
ZVJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CisgICAg
ICAgIG1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxl
UmVzb2x2ZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxl
UmVzb2x2ZXI7CiB9CiAKQEAgLTI2NzMsNyArMjY3Myw3IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3Vt
ZW50OjpheE9iamVjdENhY2hlKCkgY29uc3QKIAogICAgIEFTU0VSVCgmdG9wRG9jdW1lbnQgPT0g
dGhpcyB8fCAhbV9heE9iamVjdENhY2hlKTsKICAgICBpZiAoIXRvcERvY3VtZW50Lm1fYXhPYmpl
Y3RDYWNoZSkgewotICAgICAgICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFYT2JqZWN0Q2FjaGU+KHRvcERvY3VtZW50KTsKKyAgICAgICAgdG9wRG9jdW1l
bnQubV9heE9iamVjdENhY2hlID0gbWFrZVVuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVu
dCk7CiAgICAgICAgIGhhc0V2ZXJDcmVhdGVkQW5BWE9iamVjdENhY2hlID0gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZS5nZXQoKTsKQEAgLTMwMzcs
NyArMzAzNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFBhcnNpbmcoYm9vbCBiKQogICAgIG1fYlBh
cnNpbmcgPSBiOwogCiAgICAgaWYgKG1fYlBhcnNpbmcgJiYgIW1fc2hhcmVkT2JqZWN0UG9vbCkK
LSAgICAgICAgbV9zaGFyZWRPYmplY3RQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFNo
YXJlZE9iamVjdFBvb2w+KCk7CisgICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IG1ha2VVbmlx
dWU8RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sPigpOwogCiAgICAgaWYgKCFtX2JQYXJzaW5nICYm
IHZpZXcoKSAmJiAhdmlldygpLT5uZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3KCktPmZpcmVM
YXlvdXRSZWxhdGVkTWlsZXN0b25lc0lmTmVlZGVkKCk7CkBAIC01NTY3LDcgKzU1NjcsNyBAQCBj
b25zdCBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIERvY3VtZW50OjpzdmdFeHRlbnNpb25zKCkKIFNW
R0RvY3VtZW50RXh0ZW5zaW9ucyYgRG9jdW1lbnQ6OmFjY2Vzc1NWR0V4dGVuc2lvbnMoKQogewog
ICAgIGlmICghbV9zdmdFeHRlbnNpb25zKQotICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOworICAgICAgICBtX3N2
Z0V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9zdmdFeHRlbnNpb25zOwogfQogCkBAIC01NzcyLDcgKzU3NzIsNyBAQCB2
b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4g
b2NjdXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAg
ICAgIHNldENvb2tpZVVSTChVUkwoeyB9LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNl
Y3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZVVuaXF1ZSgpKSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGlj
eShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0
eVN0cmluZygpIH0sICp0aGlzKSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeSht
YWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygp
IH0sICp0aGlzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3OTEsNyArNTc5MSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICBpc1NlY3Vy
aXR5T3JpZ2luVW5pcXVlID0gZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnJlc3Bv
bnNlKCkudGFpbnRpbmcoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlOwog
CiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0
ZShpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgp
IDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1f
dXJsIH0sICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8
Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogCiAgICAgU3Ry
aW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gbV9mcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKICAgICBpZiAoIW92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5LmlzTnVsbCgpKQpAQCAtNjAyOSw3ICs2MDI5LDcgQEAgU3Ry
aW5nIERvY3VtZW50OjpuYW1lRm9yQ1NTQ2FudmFzRWxlbWVudChjb25zdCBIVE1MQ2FudmFzRWxl
bWVudCYgY2FudmFzRWxlbWVudCkKIFRleHRBdXRvU2l6aW5nJiBEb2N1bWVudDo6dGV4dEF1dG9T
aXppbmcoKQogewogICAgIGlmICghbV90ZXh0QXV0b1NpemluZykKLSAgICAgICAgbV90ZXh0QXV0
b1NpemluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7CisgICAgICAgIG1f
dGV4dEF1dG9TaXppbmcgPSBtYWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwogICAgIHJldHVy
biAqbV90ZXh0QXV0b1NpemluZzsKIH0KICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQpAQCAtNjM5Niw3ICs2Mzk2LDcgQEAgdm9pZCBEb2N1bWVudDo6d2hlZWxFdmVudEhhbmRsZXJz
Q2hhbmdlZCgpCiB2b2lkIERvY3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcihOb2RlJiBu
b2RlKQogewogICAgIGlmICghbV93aGVlbEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV93aGVlbEV2
ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAg
IG1fd2hlZWxFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAg
ICAgbV93aGVlbEV2ZW50VGFyZ2V0cy0+YWRkKCZub2RlKTsKIApAQCAtNjQ1Niw3ICs2NDU2LDcg
QEAgdm9pZCBEb2N1bWVudDo6ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoTm9kZSYgaGFuZGxlcikK
IHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmICghbV90b3VjaEV2ZW50VGFyZ2V0
cykKLSAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRU
YXJnZXRTZXQ+KCk7CisgICAgICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2
ZW50VGFyZ2V0U2V0PigpOwogCiAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cy0+YWRkKCZoYW5kbGVy
KTsKIApAQCAtODA0NCw3ICs4MDQ0LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkTG9nTWVzc2FnZShj
b25zdCBXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgVmUKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IG1lc3NhZ2VMZXZl
bEZyb21XVEZMb2dMZXZlbChsZXZlbCk7Ci0gICAgICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxk
RXhlY1N0YXRlKGZyYW1lKCkpKTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9n
LCBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUo
ZnJhbWUoKSkpOwogCiAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkp
OwogICAgIH0pOwpAQCAtODA3OSw3ICs4MDc5LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdAog
CiBib29sIERvY3VtZW50OjpyZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eSYmIHByb3ApCiB7Ci0gICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0
LmFkZChwcm9wLm5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5PihXVEZNb3ZlKHByb3ApKSkuaXNOZXdFbnRyeTsKKyAgICByZXR1cm4gbV9DU1NSZWdpc3Rl
cmVkUHJvcGVydHlTZXQuYWRkKHByb3AubmFtZSwgbWFrZVVuaXF1ZTxDU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHk+KFdURk1vdmUocHJvcCkpKS5pc05ld0VudHJ5OwogfQogCiB2b2lkIERvY3Vt
ZW50OjpkZXRhY2hGcm9tRnJhbWUoKQpAQCAtODE3Myw3ICs4MTczLDcgQEAgRGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb24KICAgICAgICAgcmV0dXJuIHRvcERvY3VtZW50KCkuZGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCk7CiAKICAgICBpZiAoIW1fZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKQotICAgICAgICBtX2RldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CisgICAgICAgIG1fZGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1
cm4gKm1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOwogfQogCkBA
IC04MjA0LDcgKzgyMDQsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWY8UGFpbnRXbwogQ29udGVudENoYW5n
ZU9ic2VydmVyJiBEb2N1bWVudDo6Y29udGVudENoYW5nZU9ic2VydmVyKCkKIHsKICAgICBpZiAo
IW1fY29udGVudENoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CisgICAg
ICAgIG1fY29udGVudENoYW5nZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udGVudENoYW5nZU9ic2VydmVyOyAKIH0K
IApAQCAtODIxMiw3ICs4MjEyLDcgQEAgRE9NVGltZXJIb2xkaW5nVGFuayYgRG9jdW1lbnQ6OmRv
bVRpbWVySG9sZGluZ1RhbmsoKQogewogICAgIGlmIChtX2RvbVRpbWVySG9sZGluZ1RhbmspCiAg
ICAgICAgIHJldHVybiAqbV9kb21UaW1lckhvbGRpbmdUYW5rOwotICAgIG1fZG9tVGltZXJIb2xk
aW5nVGFuayA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4oKTsKKyAgICBt
X2RvbVRpbWVySG9sZGluZ1RhbmsgPSBtYWtlVW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7
CiAgICAgcmV0dXJuICptX2RvbVRpbWVySG9sZGluZ1Rhbms7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggMGY1MzhiZmEwNWRiY2VmM2U4YTZmOGU2NmM5ODBmZDNkOTdjZWU5Ni4uYWI1ODA0
MjU0OGNlNmE0NGY2NTg0Y2Y5MjBiNzE5MGVhZGQ1MjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTEyODQsNyArMTI4NCw3IEBAIGNsYXNzIERvY3VtZW50CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRU
b2tlbj4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEb2N1bWVudFBhcnNlcllp
ZWxkVG9rZW4+KCp0aGlzKTsKICAgICB9CiAKICAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxk
VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAppbmRleCAwMWM3Zjk2ZTAyZTllYmQ1
ODg1M2ZiNWRiMWM0Yjg4MjFlMmY5NzI4Li4wMzcwM2I2MmJjNjUwNTU3OGIzODliOTk5MzhhNGRh
YWI2ZDc2YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApA
QCAtNTksNyArNTksNyBAQCBjbGFzcyBEb2N1bWVudEV2ZW50UXVldWU6OlRpbWVyIGZpbmFsIDog
cHVibGljIFN1c3BlbmRhYmxlVGltZXIgewogCiBEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50
RXZlbnRRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50
KQotICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhp
cykpCisgICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzKSkK
ICAgICAsIG1faXNDbG9zZWQoZmFsc2UpCiB7CiAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3Vz
cGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCmluZGV4IDcyOTFkNGFkZWU5ZjQxNzdmZGJmZWZlZWZkZGYyNjcwNTRhOWM0
ZjAuLmU3NjQxYWY2MjE4YmYxM2FiMGUzYzY4OTIwMjBkZTg4OWM0ZTkwNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zNjQsNyAr
MzY0LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihOb2RlJiBu
b2RlLCBjb25zdCBEb2N1bWVudE1hcmtlciYgbmV3TWEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFy
a2VyTGlzdD4mIGxpc3QgPSBtX21hcmtlcnMuYWRkKCZub2RlLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAKICAgICBpZiAoIWxpc3QpIHsKLSAgICAgICAgbGlzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8TWFya2VyTGlzdD4oKTsKKyAgICAgICAgbGlzdCA9IG1ha2VVbmlxdWU8TWFya2VyTGlzdD4o
KTsKICAgICAgICAgbGlzdC0+YXBwZW5kKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIobmV3TWFya2Vy
KSk7CiAgICAgfSBlbHNlIGlmIChzaG91bGRJbnNlcnRBc1NlcGFyYXRlTWFya2VyKG5ld01hcmtl
cikpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbWVyZ2UgZGljdGF0aW9uIG1hcmtlcnMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4IDgxZWZiMTBk
NWU3NmVkYjZmNmQzODM1MzAwNTFkMjljMzg4ZWFmZGIuLjg1NWEyYTA2NTZmNzFiNDVlZThkNGZm
ZjI4NGE1MzUzNzlhMzg3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFN0b3JhZ2VBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MuY3BwCkBAIC00OCw3ICs0OCw3IEBAIERvY3VtZW50U3RvcmFnZUFjY2VzcyogRG9j
dW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRv
KiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNzKj4oU3VwcGxl
bWVudDxEb2N1bWVudD46OmZyb20oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVu
dCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1l
bnQpKTsKICAgICB9CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
ICAgICAgICAgYm9vbCBzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2FzR3JhbnRlZCA9PSBT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzIHx8IHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87CiAKICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNl
ckdlc3R1cmUpIHsKLSAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUo
KS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVu
Y2UgPSBtYWtlV2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tR
dWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4o
W2RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgewogICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQog
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0
dXJlKCk7CiAgICAgICAgICAgICB9KSk7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBEb2N1bWVu
dFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJH
ZXN0dXJlKSB7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCku
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNl
ID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5jZSldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFz
a1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNr
PihbZG9jdW1lbnRSZWZlcmVuY2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgewog
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdl
dCgpKQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+Y29uc3VtZVRlbXBvcmFyeVRpbWVV
c2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgfSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVU
ZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKQogewotICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdl
c3R1cmUsICZtX2RvY3VtZW50KTsKKyAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gbWFrZVVu
aXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1
bWVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpjb25zdW1lVGVtcG9yYXJ5
VGltZVVzZXJHZXN0dXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0NTE2MWM5Y2EyMGJh
ZDY5MzMwMDUxZDA5YTU1ZjBhZmE1NTg2Y2M2Li5lZWIxZjM0MjlkNjRlZmM0ZGIwYjEzMGQxMzdm
MzE2ZTM1MGQwZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00NzcsNyArNDc3LDcgQEAg
TmFtZWROb2RlTWFwJiBFbGVtZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICBpZiAoTmFtZWRO
b2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSByYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKSkKICAgICAgICAg
cmV0dXJuICphdHRyaWJ1dGVNYXA7CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAoc3Rk
OjptYWtlX3VuaXF1ZTxOYW1lZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkp
OworICAgIHJhcmVEYXRhLnNldEF0dHJpYnV0ZU1hcChtYWtlVW5pcXVlPE5hbWVkTm9kZU1hcD4o
Y29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5hdHRy
aWJ1dGVNYXAoKTsKIH0KIApAQCAtMjMwNyw3ICsyMzA3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJ
c0RlZmluZWRDdXN0b21FbGVtZW50KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudElu
dGVyZmEKICAgICBzZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7CiAgICAgYXV0byYgZGF0YSA9IGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rp
b25RdWV1ZSgpKQotICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0
ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZh
Y2UpKTsKKyAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5p
cXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAg
aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKCp0aGlzKTsKIH0KQEAgLTIzNDQsNyArMjM0
NCw3IEBAIHZvaWQgRWxlbWVudDo6ZW5xdWV1ZVRvVXBncmFkZShKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UmIGVsZW1lbnRJbnRlcmZhY2UpCiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpOwogICAgIGJvb2wgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSA9IGRhdGEuY3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKTsKICAgICBpZiAoIWFscmVhZHlTY2hlZHVsZWRUb1Vw
Z3JhZGUpCi0gICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjpt
YWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkp
OworICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKICAgICBkYXRh
LmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCktPmVucXVldWVFbGVtZW50VXBncmFkZSgqdGhp
cywgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSk7CiB9CiAKQEAgLTM0ODAsNyArMzQ4MCw3IEBA
IERPTVRva2VuTGlzdCYgRWxlbWVudDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVtZW50UmFyZURh
dGEmIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY2xhc3NM
aXN0KCkpCi0gICAgICAgIGRhdGEuc2V0Q2xhc3NMaXN0KHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9r
ZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsKKyAgICAgICAgZGF0YS5zZXRD
bGFzc0xpc3QobWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNz
QXR0cikpOwogICAgIHJldHVybiAqZGF0YS5jbGFzc0xpc3QoKTsKIH0KIApAQCAtMzQ4OCw3ICsz
NDg4LDcgQEAgRGF0YXNldERPTVN0cmluZ01hcCYgRWxlbWVudDo6ZGF0YXNldCgpCiB7CiAgICAg
RWxlbWVudFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYg
KCFkYXRhLmRhdGFzZXQoKSkKLSAgICAgICAgZGF0YS5zZXREYXRhc2V0KHN0ZDo6bWFrZV91bmlx
dWU8RGF0YXNldERPTVN0cmluZ01hcD4oKnRoaXMpKTsKKyAgICAgICAgZGF0YS5zZXREYXRhc2V0
KG1ha2VVbmlxdWU8RGF0YXNldERPTVN0cmluZ01hcD4oKnRoaXMpKTsKICAgICByZXR1cm4gKmRh
dGEuZGF0YXNldCgpOwogfQogCkBAIC0zNjMyLDcgKzM2MzIsNyBAQCBJbnRlcnNlY3Rpb25PYnNl
cnZlckRhdGEmIEVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpCiB7CiAg
ICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIXJh
cmVEYXRhLmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRJ
bnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcnNlY3Rpb25PYnNl
cnZlckRhdGE+KCkpOworICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRh
dGEobWFrZVVuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAq
cmFyZURhdGEuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKQEAgLTM2NTgsNyArMzY1
OCw3IEBAIFJlc2l6ZU9ic2VydmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlUmVzaXplT2JzZXJ2ZXJE
YXRhKCkKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwog
ICAgIGlmICghcmFyZURhdGEucmVzaXplT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRh
LnNldFJlc2l6ZU9ic2VydmVyRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0
YT4oKSk7CisgICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YShtYWtlVW5pcXVl
PFJlc2l6ZU9ic2VydmVyRGF0YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5yZXNpemVPYnNl
cnZlckRhdGEoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmlu
ZGV4IGQ5ZTY2MzQ5Y2JkYmEwYmI4MWQyYWNmYmZkYzBkNDMzNzhjNjU4ZGIuLjBiMDlkMDgyYzM2
ZWRkZDg0YjljZGU5ODgyNTI3MmRiNWY5NmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
aXN0ZW5lck1hcC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6
OmFkZChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxp
cwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvIGxpc3RlbmVycyA9IHN0
ZDo6bWFrZV91bmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKTsKKyAgICBhdXRvIGxpc3RlbmVy
cyA9IG1ha2VVbmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKTsKICAgICBsaXN0ZW5lcnMtPnVu
Y2hlY2tlZEFwcGVuZChSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUobGlz
dGVuZXIpLCBvcHRpb25zKSk7CiAgICAgbV9lbnRyaWVzLmFwcGVuZCh7IGV2ZW50VHlwZSwgV1RG
TW92ZShsaXN0ZW5lcnMpIH0pOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgKaW5kZXggOWU5MzA4YmI1ZGExNDYxZTM1OGUzY2M2MmZlYWZkY2ZjZDBjYzdhZC4uNWI2YWI2
ODc1NWI2MWJmZTJkNGE2OGJjYmU3NTI0ZmQwZGRhYmI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCkBAIC0zMzksMTMgKzMzOSwxMyBAQCBzdHJ1Y3QgRXZlbnROYW1lcyB7CiAgICAgRE9NX0VW
RU5UX05BTUVTX0ZPUl9FQUNIKERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKQogI3VuZGVmIERPTV9F
VkVOVF9OQU1FU19ERUNMQVJFCiAKLSAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlv
biB0byBzdGQ6Om1ha2VfdW5pcXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0
LgorICAgIC8vIEZJWE1FOiBUaGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIG1ha2VVbmlxdWUgYmVs
b3cgZG9lcyBub3Qgd29yayBpbiB3aW5kb3dzIHBvcnQuCiAgICAgLy8KICAgICAvLyB0ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgotICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9V
bmlxdWVfaWY8VD46Ol9TaW5nbGVfb2JqZWN0IHN0ZDo6bWFrZV91bmlxdWUoQXJncyYmLi4uKTsK
KyAgICAvLyBmcmllbmQgdHlwZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVj
dCBtYWtlVW5pcXVlKEFyZ3MmJi4uLik7CiAgICAgLy8KICAgICAvLyBUaGlzIGNyZWF0ZSBmdW5j
dGlvbiBzaG91bGQgYmUgZGVsZXRlZCBsYXRlciBhbmQgaXMgb25seSBmb3Iga2VlcGluZyBFdmVu
dE5hbWVzIGFzIHByaXZhdGUuCi0gICAgLy8gc3RkOjptYWtlX3VuaXF1ZSBzaG91bGQgYmUgdXNl
ZCBpbnN0ZWFkLgorICAgIC8vIG1ha2VVbmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KICAg
ICAvLwogICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxFdmVudE5hbWVzPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBh
dGguY3BwCmluZGV4IGRiMTQyOGQxZDQyNjA1OGNiNjViMWViNmZhY2EyM2RiOTg5MjgyYmQuLmEw
YWQwYWQ3YzQ4MjY5MmU2MzhlNTcyODBmMWEyOTI0N2FjZWMxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFBhdGguY3BwCkBAIC0xMTUsMTcgKzExNSwxNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRo
KE5vZGUmIG9yaWdpbmFsVGFyZ2V0LCBFdmVudCYgZXZlbnQpCiB7CiAgICAgdXNpbmcgTWFrZUV2
ZW50Q29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+ICgqKShOb2RlJiwgRXZl
bnRUYXJnZXQqLCBFdmVudFRhcmdldCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgTWFr
ZUV2ZW50Q29udGV4dCBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFy
Z2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93
RGVwdGgpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pigm
bm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRh
cmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgIH07CiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+
KGV2ZW50KSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKSkgewogICAgICAgICBtYWtlRXZlbnRDb250
ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRh
cmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxF
dmVudENvbnRleHQ+IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNl
T3JGb2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRT
aGFkb3dEZXB0aCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb3VzZU9yRm9jdXNF
dmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVw
dGgpOwogICAgICAgICB9OwogICAgIH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlm
IChpczxUb3VjaEV2ZW50PihldmVudCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtd
IChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRh
cmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250
ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29u
dGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3Vy
cmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAg
fQogI2VuZGlmCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChO
b2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQodGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pigq
bm9kZSkuZG9tV2luZG93KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3cs
ICp0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3
aW5kb3csICp0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKSk7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA4LDcg
KzMwOCw3IEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIHRh
cmdldHMpCiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBOb2RlKiBvcmlnaW4gPSAq
dGFyZ2V0cy5iZWdpbigpOwogICAgICAgICBpZiAoIXRhcmdldC0+aXNDbG9zZWRTaGFkb3dIaWRk
ZW4oKm9yaWdpbikpCi0gICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CisgICAgICAgICAgICBt
X3BhdGguYXBwZW5kKG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3Jp
Z2luLCAwKSk7CiAgICAgfQogfQogCkBAIC0zMTcsNyArMzE3LDcgQEAgRXZlbnRQYXRoOjpFdmVu
dFBhdGgoY29uc3QgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4mIHRhcmdldHMpCiAgICAgZm9yIChhdXRv
KiB0YXJnZXQgOiB0YXJnZXRzKSB7CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBB
U1NFUlQoIWlzPE5vZGU+KHRhcmdldCkpOwotICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRDb250ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCks
IDApKTsKKyAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4obnVs
bHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5iZWdpbigpLCAwKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IGVkZDljYTI4ZWE0OTNhYzdjOTRjOGJk
ZTI4NWIxNjY2YzM4ODI1NTkuLmE3MGJjYWVjY2M4Nzk1YTRmNGJhNDI2ZTI1MTNkZmY3YTBmNzRi
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIFJlbmRlclRyZWVCdWlsZGVyOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNz
IEZ1bGxzY3JlZW5NYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBGdWxsc2NyZWVuTWFuYWdlcihEb2N1bWVudCYpOwogICAgIH5GdWxsc2NyZWVuTWFu
YWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmNwcAppbmRleCBiM2EwNmU0N2IwNzAwZjdjNDdkM2Q5YWVmMzNmNDQzNzI0ZTBjNTVlLi45NDBl
ZmNhZWQ4MzA5MWMyNTgzZmE5ZTMzNmVmM2Q3OGM1NGFhM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQCB2
b2lkIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbVN0cmlu
ZyYgaWQsIElkVGFyZ2V0T2JzZXJ2ZQogICAgIAogICAgIElkVG9PYnNlcnZlclNldE1hcDo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fcmVnaXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7CiAgICAg
aWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
c3RkOjptYWtlX3VuaXF1ZTxPYnNlcnZlclNldD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IG1ha2VVbmlxdWU8T2JzZXJ2ZXJTZXQ+KCk7CiAKICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLT5hZGQob2JzZXJ2ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQu
Y3BwCmluZGV4IDdlN2EzNDc5N2I4NjI5ZjYyZjdmNzg2YWIxNGM1YzZmNWJkOTBiMTQuLmNlODU2
YmI1NWQ1YmQ5OWU2NmY1MGNiNTViMGJlNDc5MGUwOTg0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5
Ym9hcmRFdmVudC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIEtleWJvYXJkRXZlbnQ6Oktl
eWJvYXJkRXZlbnQoKSA9IGRlZmF1bHQ7CiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRF
dmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5
PiYmIHZpZXcpCiAgICAgOiBVSUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZUZvcktleWJvYXJk
RXZlbnRUeXBlKGtleS50eXBlKCkpLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMs
IElzQ29tcG9zZWQ6OlllcywKICAgICAgICAga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9u
b3RvbmljVGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5Lm1vZGlmaWVycygpLCBJc1RydXN0
ZWQ6OlllcykKLSAgICAsIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybUtleWJvYXJkRXZlbnQ+KGtleSkpCisgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9y
bUV2ZW50KG1ha2VVbmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJM
RShLRVlCT0FSRF9LRVlfQVRUUklCVVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01pY3JvdGFza3MuaAppbmRleCBiNjMxODQxNTBmNWEzOTE0MjUyYjg0MmVkOWQw
N2RlYWFmNmI0MDM2Li5iYTcyMmExMWM3MGZjYTgwODMyZTY0Yzg1MjdlZTQ2YjljMzQ3Njg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKQEAgLTY5LDcgKzY5LDggQEAgY2xhc3MgVm9pZE1pY3Jv
dGFzayBmaW5hbCA6IHB1YmxpYyBNaWNyb3Rhc2sgewogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9m
dW5jdGlvbjsKIH07CiAKLWNsYXNzIE1pY3JvdGFza1F1ZXVlIHsKK2NsYXNzIE1pY3JvdGFza1F1
ZXVlIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8TWljcm90YXNrUXVldWU+OwogICAgIGZyaWVuZCBjbGFzcyBNaWNyb3Rhc2s7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggNjZj
NWVhMGI5ZDYzNDU0NDM4MTJmYjEzMWZmZTVkYmU2Y2ExZGRmMy4uMTkzZjI3ODA1YTVhZWQ0YjYw
NmU5Y2VlYTNhOWEzNWQ4YjFlOTkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHN0YXRpYyB2b2lkIHF1ZXVlTXV0YXRpb25PYnNl
cnZlckNvbXBvdW5kTWljcm90YXNrKCkKICAgICBpZiAobXV0YXRpb25PYnNlcnZlckNvbXBvdW5k
TWljcm90YXNrUXVldWVkRmxhZykKICAgICAgICAgcmV0dXJuOwogICAgIG11dGF0aW9uT2JzZXJ2
ZXJDb21wb3VuZE1pY3JvdGFza1F1ZXVlZEZsYWcgPSB0cnVlOwotICAgIE1pY3JvdGFza1F1ZXVl
OjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2Vy
dmVyTWljcm90YXNrPigpKTsKKyAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCku
YXBwZW5kKG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlck1pY3JvdGFzaz4oKSk7CiB9CiAKIHZv
aWQgTXV0YXRpb25PYnNlcnZlcjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFJlZjxNdXRhdGlvblJl
Y29yZD4mJiBtdXRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXAuY3BwCmluZGV4IDUyZGE2MWY3NGYxZjU3YWY2ODU0OWYzNjY1
NjMwNmQ4ZDE3MDNjNzkuLjAyNzZlNDJiZTViZDgzZmY0MmE3OTM1NmJkZTljZTczNjA5OWNiZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA+IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcgogICAg
IGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihX
VEZNb3ZlKG9ic2VydmVycyksIG9sZFZhbHVlRmxhZyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFs
dWVGbGFnKTsKIH0KIAogYm9vbCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6aXNPbGRW
YWx1ZVJlcXVlc3RlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggYzhmYzAxMDY3MjQ1ZTRlMzYxOTdhMmY2
ZDRkMWU0NTc1NDdiYmM4YS4uZTVjNmRkMTZhNGRiNjA5YmE1MjczYTQ3YWY3ZmE2ODI2NjJhMmM0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb246Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKE5vZGUmIG5vZGUpCiAgICAgbV9v
YnNlcnZlci0+c2V0SGFzVHJhbnNpZW50UmVnaXN0cmF0aW9uKCk7CiAKICAgICBpZiAoIW1fdHJh
bnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpIHsKLSAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRp
b25Ob2RlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+
KCk7CisgICAgICAgIG1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMgPSBtYWtlVW5pcXVlPEhh
c2hTZXQ8R0NSZWFjaGFibGVSZWY8Tm9kZT4+PigpOwogCiAgICAgICAgIEFTU0VSVCghbV9ub2Rl
S2VwdEFsaXZlKTsKICAgICAgICAgbV9ub2RlS2VwdEFsaXZlID0gJm1fbm9kZTsgLy8gQmFsYW5j
ZWQgaW4gdGFrZVRyYW5zaWVudFJlZ2lzdHJhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzZk
NGVhOWQ3MzBhOTIzNzJhOWY4ZTdhNmQ4ZjY3ZDAwZmQzZGJmNS4uY2FiZjFlYjU4YzljMjNjYWQ4
ODViZDAxZGYxMjJiNjUxYWUwMmJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzk4LDkgKzM5OCw5
IEBAIHZvaWQgTm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgpCiB7CiAgICAgTm9kZVJhcmVEYXRh
KiBkYXRhOwogICAgIGlmIChpczxFbGVtZW50PigqdGhpcykpCi0gICAgICAgIGRhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9k
YXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPEVs
ZW1lbnRSYXJlRGF0YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIp
KS5yZWxlYXNlKCk7CiAgICAgZWxzZQotICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxO
b2RlUmFyZURhdGE+KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEg
PSBtYWtlVW5pcXVlPE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsK
ICAgICBBU1NFUlQoZGF0YSk7CiAKICAgICBtX2RhdGEubV9yYXJlRGF0YSA9IGRhdGE7CkBAIC0y
MjE1LDcgKzIyMTUsNyBAQCBFdmVudFRhcmdldERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpCiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfZXZlbnRUYXJnZXREYXRhTWFw
TG9jayk7CiAgICAgc2V0SGFzRXZlbnRUYXJnZXREYXRhKHRydWUpOwotICAgIHJldHVybiAqZXZl
bnRUYXJnZXREYXRhTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRE
YXRhPigpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAo
KS5hZGQodGhpcywgbWFrZVVuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1
ZTsKIH0KIAogdm9pZCBOb2RlOjpjbGVhckV2ZW50VGFyZ2V0RGF0YSgpCkBAIC0yMjg3LDcgKzIy
ODcsNyBAQCB2b2lkIE5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2Vy
dmVyJiBvYnNlcnZlciwgTXV0YXRpb25PYnNlcnZlcgogICAgIH0KIAogICAgIGlmICghcmVnaXN0
cmF0aW9uKSB7Ci0gICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmli
dXRlRmlsdGVyKSk7CisgICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRl
RmlsdGVyKSk7CiAgICAgICAgIHJlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJ5Lmxhc3QoKS5nZXQoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA3NjkwZDU5OWZjYTdkYzk5
Y2I0OWUxNjBmYmUyYWZhZGRmMDBjZGY0Li43NjZkNjdmM2Y2ZDYyOWFmMDg5NDJhZGMyM2UyYzIy
YzI5ZjNlNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yODEsNyArMjgxLDcg
QEAgY2xhc3MgTm9kZVJhcmVEYXRhIDogcHVibGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5v
ZGVMaXN0c05vZGVEYXRhJiBlbnN1cmVOb2RlTGlzdHMoKQogICAgIHsKICAgICAgICAgaWYgKCFt
X25vZGVMaXN0cykKLSAgICAgICAgICAgIG1fbm9kZUxpc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxO
b2RlTGlzdHNOb2RlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fbm9kZUxpc3RzID0gbWFrZVVuaXF1
ZTxOb2RlTGlzdHNOb2RlRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICptX25vZGVMaXN0czsKICAg
ICB9CiAKQEAgLTI4OSw3ICsyODksNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9k
ZVJhcmVEYXRhQmFzZSB7CiAgICAgTm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhJiBlbnN1cmVNdXRh
dGlvbk9ic2VydmVyRGF0YSgpCiAgICAgewogICAgICAgICBpZiAoIW1fbXV0YXRpb25PYnNlcnZl
ckRhdGEpCi0gICAgICAgICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxOb2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CisgICAgICAgICAgICBtX211dGF0aW9u
T2JzZXJ2ZXJEYXRhID0gbWFrZVVuaXF1ZTxOb2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CiAg
ICAgICAgIHJldHVybiAqbV9tdXRhdGlvbk9ic2VydmVyRGF0YTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCmluZGV4IDUzMzdjNThjZGZiYmFhYjIzMDE4
NDUwMjYzOGRjNjM0NDlmNzk2YWMuLjYxYmJjNGVkZmY5MzRhNjQ0NmVhMjU2NzU1NjYzZmQ1NDY4
NzdlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcApAQCAtMTk4
LDExICsxOTgsMTEgQEAgdm9pZCBSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKEhUTUxJbnB1
dEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9uYW1lVG9H
cm91cE1hcCkKLSAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8TmFt
ZVRvR3JvdXBNYXA+KCk7CisgICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBtYWtlVW5pcXVlPE5h
bWVUb0dyb3VwTWFwPigpOwogCiAgICAgYXV0byYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5h
ZGQoZWxlbWVudC5uYW1lKCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
aWYgKCFncm91cCkKLSAgICAgICAgZ3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhZGlvQnV0dG9u
R3JvdXA+KCk7CisgICAgICAgIGdyb3VwID0gbWFrZVVuaXF1ZTxSYWRpb0J1dHRvbkdyb3VwPigp
OwogICAgIGdyb3VwLT5hZGQoZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBjODI1YTdlZGVlNmJiMmQ1ZjUxNmM2ZDNl
NmVhNzQxMGU2ZWNjNzU2Li4wNGFmZTlkNzhhZDBiZDEwMjhhNjcwM2MwZmMzZDRmNjUzYjEzZGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBA
IC0zNzksOCArMzc5LDggQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNl
cHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW4KIHsKICAgICBpZiAobV9p
bkRpc3BhdGNoRXJyb3JFdmVudCkgewogICAgICAgICBpZiAoIW1fcGVuZGluZ0V4Y2VwdGlvbnMp
Ci0gICAgICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsKLSAgICAgICAgbV9wZW5k
aW5nRXhjZXB0aW9ucy0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4o
ZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92
ZShjYWxsU3RhY2spKSk7CisgICAgICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zID0gbWFrZVVu
aXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsKKyAgICAg
ICAgbV9wZW5kaW5nRXhjZXB0aW9ucy0+YXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ0V4Y2VwdGlv
bj4oZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RG
TW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxNCw5ICs0
MTQsOSBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydFVuaGFuZGxlZFByb21p
c2VSZWplY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2Ug
PSBtYWtlU3RyaW5nKCJVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246ICIsIHJlc3VsdE1lc3Nh
Z2UpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNz
YWdlOwogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2cs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIG1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwogICAg
IGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQogCkBAIC01MDksNyArNTA5
LDcgQEAgUmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5z
dXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3cKICAgICAvLyBXaGVuIGluaXRpYWxpemluZyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCB2bSgpIGlzIG5vdCByZWFkeS4KIAogICAgIEFTU0VSVCgh
bV9yZWplY3RlZFByb21pc2VUcmFja2VyKTsKLSAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlamVjdGVkUHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsK
KyAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFJlamVjdGVkUHJvbWlz
ZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsKICAgICByZXR1cm4gKm1fcmVqZWN0ZWRQcm9taXNlVHJh
Y2tlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDU1
ZGMyYzg3YTRhYzIwMmQ3MWFkZGE2NmQ1OTZiNWZlYTBiYzg4NTYuLjIxMDljZTRhMjI4YzNlN2Jh
ODdhNGJhNTJiMmRiMjgyMzYwODcxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5j
cHAKQEAgLTYzMyw3ICs2MzMsNyBAQCBFeGNlcHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gU2VsZWN0
b3JRdWVyeUNhY2hlOjphZGQoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIERvYwogICAgIGlmICht
X2VudHJpZXMuc2l6ZSgpID09IG1heGltdW1TZWxlY3RvclF1ZXJ5Q2FjaGVTaXplKQogICAgICAg
ICBtX2VudHJpZXMucmVtb3ZlKG1fZW50cmllcy5yYW5kb20oKSk7CiAKLSAgICByZXR1cm4gKm1f
ZW50cmllcy5hZGQoc2VsZWN0b3JzLCBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdU
Rk1vdmUoc2VsZWN0b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKm1fZW50
cmllcy5hZGQoc2VsZWN0b3JzLCBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2Vs
ZWN0b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwCmluZGV4IDY5NjNiNjgzNzlkODhmMjdhODRlMmYxZGE2NTE1MzgxODA1YjI5M2MuLjY3
ODZjMGQyMWUxYjJjMmE1Nzg1MWJkMDg1MTY0YzFhMWU5MmM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1
bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUpCiAgICAgOiBEb2N1bWVudEZyYWdt
ZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBk
b2N1bWVudCkKICAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFr
ZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVu
aXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKIHsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCBTaGFk
b3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNs
b3RBc3NpZ25tZW50PiYmIHNsbwogICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3Jl
YXRlU2hhZG93Um9vdCkKICAgICAsIFRyZWVTY29wZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBt
X3R5cGUoU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKLSAgICAsIG1fc3R5bGVTY29wZShzdGQ6
Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1h
a2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCiAgICAgLCBtX3Nsb3RBc3NpZ25tZW50KFdU
Rk1vdmUoc2xvdEFzc2lnbm1lbnQpKQogewogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU2hh
ZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KERvY3VtZW50JiBuZXdEb2N1bWVu
dCkKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFwYXJlbnRU
cmVlU2NvcGUoKSB8fCAmcGFyZW50VHJlZVNjb3BlKCktPmRvY3VtZW50U2NvcGUoKSA9PSAmbmV3
RG9jdW1lbnQpOwogCiAgICAgLy8gU3R5bGUgc2NvcGVzIGFyZSBkb2N1bWVudCBzcGVjaWZpYy4K
LSAgICBtX3N0eWxlU2NvcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMp
OworICAgIG1fc3R5bGVTY29wZSA9IG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CiAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmbV9zdHlsZVNjb3Bl
LT5kb2N1bWVudCgpID09ICZuZXdEb2N1bWVudCk7CiB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2
b2lkIFNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUsIEhUTUxTbG90RWxlbWVudCYgcwogewogICAgIEFTU0VSVCgmc2xvdC5yb290Tm9kZSgpID09
IHRoaXMpOwogICAgIGlmICghbV9zbG90QXNzaWdubWVudCkKLSAgICAgICAgbV9zbG90QXNzaWdu
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U2xvdEFzc2lnbm1lbnQ+KCk7CisgICAgICAgIG1fc2xv
dEFzc2lnbm1lbnQgPSBtYWtlVW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOwogCiAgICAgcmV0dXJu
IG1fc2xvdEFzc2lnbm1lbnQtPmFkZFNsb3RFbGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICp0aGlz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCmluZGV4IGE0MTlkZGE1Mjhh
Y2NiZGE2ZGU5ZGRmMWE1NDg2NGNmZGY5MTYwZWYuLjQ1YzA4ZWEzNmFmZTEzOTdiZTBlY2JmYjI5
ZTIyOGVjZDBjOTkwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdu
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcApAQCAt
MTIwLDcgKzEyMCw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1l
KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVuCiAgICAgICAgIC8vIHRvIGF2
b2lkIGFsd2F5cyBoYXZpbmcgYSB2ZWN0b3Igb2YgYWxsIGNoaWxkIG5vZGVzIG9mIGEgc2hhZG93
IGhvc3QuCiAgICAgICAgIGlmIChzbG90TmFtZSA9PSBkZWZhdWx0U2xvdE5hbWUoKSkKICAgICAg
ICAgICAgIG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTbG90PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90
PigpOwogICAgIH0pOwogICAgIGF1dG8mIHNsb3QgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKICAgICBib29sIG5lZWRzU2xvdGNoYW5nZUV2ZW50ID0gc2hhZG93Um9vdC5zaG91bGRGaXJl
U2xvdGNoYW5nZUV2ZW50KCkgJiYgaGFzQXNzaWduZWROb2RlcyhzaGFkb3dSb290LCBzbG90KTsK
QEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QoTm9k
ZSYgY2hpbGQsIGNvbnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lKQogICAgIH0KIAogICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9zbG90cy5lbnN1cmUoc2xvdE5hbWUsIFtdIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2xv
dD4oKTsKICAgICB9KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hc3NpZ25lZE5v
ZGVzLmFwcGVuZCgmY2hpbGQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAyZjI4
NzBkMTY2OWQ0NGJjNjE4NGE3MmVjNjNlYjMyM2Y1MjdkMzlmLi41MzFhY2RmNGRkNjU2OGUwZjQ2
MjFlYjUwZDg5ZGVlNDY3ZDU1YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNjQs
NyArNjQsNyBAQCBUcmVlU2NvcGU6OlRyZWVTY29wZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKHNoYWRvd1Jvb3QpCiAgICAgLCBt
X2RvY3VtZW50U2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3BhcmVudFRyZWVTY29wZSgmZG9jdW1l
bnQpCi0gICAgLCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5KG1ha2VVbmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewogICAgIHNoYWRv
d1Jvb3Quc2V0VHJlZVNjb3BlKCp0aGlzKTsKIH0KQEAgLTczLDcgKzczLDcgQEAgVHJlZVNjb3Bl
OjpUcmVlU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShkb2N1bWVu
dCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNj
b3BlKG51bGxwdHIpCi0gICAgLCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2Vf
dW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5KG1ha2VVbmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewog
ICAgIGRvY3VtZW50LnNldFRyZWVTY29wZSgqdGhpcyk7CiB9CkBAIC0xNDEsNyArMTQxLDcgQEAg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiogVHJlZVNjb3BlOjpnZXRBbGxFbGVtZW50c0J5SWQoY29u
c3QgQXRvbVN0cmluZyYgZWxlbWVudEkKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZChj
b25zdCBBdG9tU3RyaW5nSW1wbCYgZWxlbWVudElkLCBFbGVtZW50JiBlbGVtZW50LCBib29sIG5v
dGlmeU9ic2VydmVycykKIHsKICAgICBpZiAoIW1fZWxlbWVudHNCeUlkKQotICAgICAgICBtX2Vs
ZW1lbnRzQnlJZCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAg
ICAgICAgbV9lbGVtZW50c0J5SWQgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7
CiAgICAgbV9lbGVtZW50c0J5SWQtPmFkZChlbGVtZW50SWQsIGVsZW1lbnQsICp0aGlzKTsKICAg
ICBpZiAobm90aWZ5T2JzZXJ2ZXJzKQogICAgICAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eS0+bm90aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJZCk7CkBAIC0xNjgsNyArMTY4LDcgQEAgRWxlbWVu
dCogVHJlZVNjb3BlOjpnZXRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNv
bnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkRWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nSW1w
bCYgbmFtZSwgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1fZWxlbWVudHNCeU5hbWUp
Ci0gICAgICAgIG1fZWxlbWVudHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9y
ZGVyZWRNYXA+KCk7CisgICAgICAgIG1fZWxlbWVudHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVT
Y29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9lbGVtZW50c0J5TmFtZS0+YWRkKG5hbWUsIGVsZW1l
bnQsICp0aGlzKTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgVHJlZVNjb3BlOjphZGRJ
bWFnZU1hcChIVE1MTWFwRWxlbWVudCYgaW1hZ2VNYXApCiAgICAgaWYgKCFuYW1lKQogICAgICAg
ICByZXR1cm47CiAgICAgaWYgKCFtX2ltYWdlTWFwc0J5TmFtZSkKLSAgICAgICAgbV9pbWFnZU1h
cHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAg
ICAgIG1faW1hZ2VNYXBzQnlOYW1lID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigp
OwogICAgIG1faW1hZ2VNYXBzQnlOYW1lLT5hZGQoKm5hbWUsIGltYWdlTWFwLCAqdGhpcyk7CiB9
CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBIVE1MTWFwRWxlbWVudCogVHJlZVNjb3BlOjpnZXRJbWFn
ZU1hcChjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZElt
YWdlRWxlbWVudEJ5VXNlbWFwKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBIVE1MSW1hZ2VF
bGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghbV9pbWFnZXNCeVVzZW1hcCkKLSAgICAgICAg
bV9pbWFnZXNCeVVzZW1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4o
KTsKKyAgICAgICAgbV9pbWFnZXNCeVVzZW1hcCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJl
ZE1hcD4oKTsKICAgICByZXR1cm4gbV9pbWFnZXNCeVVzZW1hcC0+YWRkKG5hbWUsIGVsZW1lbnQs
ICp0aGlzKTsKIH0KIApAQCAtMzAwLDcgKzMwMCw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIFRyZWVT
Y29wZTo6bGFiZWxFbGVtZW50Rm9ySWQoY29uc3QgQXRvbVN0cmluZyYgZm9yQXR0cmlidXRlVmFs
CiAKICAgICBpZiAoIW1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUpIHsKICAgICAgICAgLy8gUG9wdWxh
dGUgdGhlIG1hcCBvbiBmaXJzdCBhY2Nlc3MuCi0gICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1f
bGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7
CiAKICAgICAgICAgZm9yIChhdXRvJiBsYWJlbCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxMYWJl
bEVsZW1lbnQ+KG1fcm9vdE5vZGUpKSB7CiAgICAgICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBm
b3JWYWx1ZSA9IGxhYmVsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9yQXR0cik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKaW5kZXgg
ZGRhNDkwYjEzY2RjMmRkYjgzZmIxZmM4ZmZhYjA5ZGYwMDg4ZDgyYy4uNDI2ODE5NmY4OTJhZjMw
NTUxMDNjNDg3MmZlOGVjYmRkNWYxMWFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBTdHlsZWRFbGVt
ZW50OwogY2xhc3MgVGV4dDsKIAogY2xhc3MgQWNjZXNzaWJpbGl0eVVuZG9SZXBsYWNlZFRleHQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFjY2Vzc2liaWxp
dHlVbmRvUmVwbGFjZWRUZXh0KCkgeyB9CiAgICAgdm9pZCBjb25maWd1cmVSYW5nZURlbGV0ZWRC
eVJlYXBwbHlXaXRoU3RhcnRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDc5MzQyYzQ5Nzc1M2Q5YTE1MjZlMDU1NTQ5
ZmM3Nzk3MjE0YmY2ZTQuLjg5MWMxMjg4YzZlMzE0YWNjYWU5YjYyNzE5NzgxODgxZTc0MmRjMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM4MCwxMiArMzgwLDEyIEBAIHN0YXRp
YyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudChE
b2N1bWVudCYgZG9jdW1lbnQsCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBDbGlwYm9h
cmRFdmVudEtpbmQ6OkNvcHk6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkN1dDoKLSAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0
YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3Jp
dGUsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiAgICAgY2FzZSBDbGlwYm9hcmRF
dmVudEtpbmQ6OlBhc3RlQXNQbGFpblRleHQ6CiAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpKSB7
CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dFR5cGUgPSAidGV4dC9wbGFpbiJfczsKICAgICAg
ICAgICAgIGF1dG8gcGxhaW5UZXh0ID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KCktPnJlYWRTdHJpbmcocGxhaW5UZXh0VHlwZSk7Ci0gICAgICAgICAgICBhdXRvIHBhc3RlYm9h
cmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CisgICAgICAgICAgICBh
dXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgICAg
ICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZyhwbGFpblRleHRUeXBlLCBwbGFpblRleHQpOwog
ICAgICAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRv
Y3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVi
b2FyZCkpOwogICAgICAgICB9CkBAIC0zOTYsMTAgKzM5NiwxMCBAQCBzdGF0aWMgUmVmPERhdGFU
cmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRv
Y3VtZW50LAogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5OgogICAgIGNh
c2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDdXQ6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVu
dEtpbmQ6OkJlZm9yZVBhc3RlOgotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlk
LCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgICAgICByZXR1cm4g
RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zl
cjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2Rl
OjpJbnZhbGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgIHJl
dHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRy
YW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4o
KSk7CiB9CiAKIC8vIFJldHVybnMgd2hldGhlciBjYWxsZXIgc2hvdWxkIGNvbnRpbnVlIHdpdGgg
InRoZSBkZWZhdWx0IHByb2Nlc3NpbmciLCB3aGljaCBpcyB0aGUgc2FtZSBhcwpAQCAtMTE4Myw5
ICsxMTgzLDkgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21w
b3NpdGlvbiYgY29tcG9zaXRpb24pCiAKIEVkaXRvcjo6RWRpdG9yKEZyYW1lJiBmcmFtZSkKICAg
ICA6IG1fZnJhbWUoZnJhbWUpCi0gICAgLCBtX2tpbGxSaW5nKHN0ZDo6bWFrZV91bmlxdWU8UEFM
OjpLaWxsUmluZz4oKSkKLSAgICAsIG1fc3BlbGxDaGVja2VyKHN0ZDo6bWFrZV91bmlxdWU8U3Bl
bGxDaGVja2VyPihmcmFtZSkpCi0gICAgLCBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPihmcmFtZSkpCisgICAgLCBt
X2tpbGxSaW5nKG1ha2VVbmlxdWU8UEFMOjpLaWxsUmluZz4oKSkKKyAgICAsIG1fc3BlbGxDaGVj
a2VyKG1ha2VVbmlxdWU8U3BlbGxDaGVja2VyPihmcmFtZSkpCisgICAgLCBtX2FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIobWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPihmcmFt
ZSkpCiAgICAgLCBtX2VkaXRvclVJVXBkYXRlVGltZXIoKnRoaXMsICZFZGl0b3I6OmVkaXRvclVJ
VXBkYXRlVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04p
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV90ZWxlcGhvbmVOdW1iZXJEZXRlY3Rp
b25VcGRhdGVUaW1lcigqdGhpcywgJkVkaXRvcjo6c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51
bWJlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCmluZGV4IDBkZGMxNWJkYzBkMzA0ZjQ1NDNhMDU5NjJiYzZjYzc2NDVmNTQ3OTQu
LjJjMjAyOGNjNjNjMWI5MzhiYzY2ZmY0YmVhNTg5OTI1OGU5YTRhNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xNjMx
LDcgKzE2MzEsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjp1cGRhdGVOb2Rlc0lu
c2VydGVkKE5vZGUgKm5vZGUpCiBSZXBsYWNlbWVudEZyYWdtZW50KiBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6ZW5zdXJlUmVwbGFjZW1lbnRGcmFnbWVudCgpCiB7CiAgICAgaWYgKCFtX3JlcGxh
Y2VtZW50RnJhZ21lbnQpCi0gICAgICAgIG1fcmVwbGFjZW1lbnRGcmFnbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVwbGFjZW1lbnRGcmFnbWVudD4obV9kb2N1bWVudEZyYWdtZW50LmdldCgpLCBl
bmRpbmdTZWxlY3Rpb24oKSk7CisgICAgICAgIG1fcmVwbGFjZW1lbnRGcmFnbWVudCA9IG1ha2VV
bmlxdWU8UmVwbGFjZW1lbnRGcmFnbWVudD4obV9kb2N1bWVudEZyYWdtZW50LmdldCgpLCBlbmRp
bmdTZWxlY3Rpb24oKSk7CiAgICAgcmV0dXJuIG1fcmVwbGFjZW1lbnRGcmFnbWVudC5nZXQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0
aGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIu
Y3BwCmluZGV4IDNiNDA2ODhjYjRkYTY1NmIzNDQ1ODdjMDg4ODYzNmMwYWIxNTY2Y2YuLmY5YjY0
YzVjOGM4OTZiZjMyMjYzMDg3MDlmMjZhYTY2N2UxZWQ5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Tm90aWZpZXI+IFNlbGVjdGlv
blJlY3RHYXRoZXJlcjo6Y2xlYXJBbmQKICAgICBtX2dhcFJlY3RzLmNsZWFyKCk7CiAgICAgbV9p
c1RleHRPbmx5ID0gdHJ1ZTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWVy
PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Tm90aWZpZXI+KCp0aGlzKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCmluZGV4IDE4OTZlMWEyMjgxYzFhOWIwNDZlOGVmYWNkOTExOWFmNWUyNzdkNTYuLmYxZDE5
YzEwMTE0YzFhOTg1YjhiNDI2ZmE2OGZkYjgxMjJhNjBjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTY1MCw3ICs2NTAsNyBAQCBib29sIFRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IChtX25v
ZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0
KSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKICAgICAgICAgaWYgKCFtX2Zsb3dSdW5SZXNvbHZl
ckNhY2hlIHx8ICZtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5mbG93KCkgIT0gJmJsb2NrRmxvdykg
ewogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cgPSBtX2Zs
b3dSdW5SZXNvbHZlckNhY2hlID8gMCA6IHRleHROb2RlT2Zmc2V0SW5GbG93KHRleHROb2RlKTsK
LSAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNp
bXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQpOworICAgICAg
ICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IG1ha2VVbmlxdWU8U2ltcGxlTGluZUxheW91
dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7CiAgICAgICAgIH0KICAgICAgICAg
Ly8gU2tpcCB0byBtX29mZnNldCBwb3NpdGlvbi4KICAgICAgICAgYXV0byByYW5nZSA9IG1fZmxv
d1J1blJlc29sdmVyQ2FjaGUtPnJhbmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDBhODNhYzA5NTky
NzRjMDc4MGQ1ZDdiMzg1ZjAxOWMwZTg2ZTNjNzQuLjljZjg2YTRhMTVmMWM3YzZmMDI4MTU1NjQ3
YWZhMDA1OWFlM2I2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KQEAgLTM4MCw3ICszODAsNyBAQCBIVE1MQ29udmVydGVyOjpIVE1MQ29udmVy
dGVyKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKICAgICBfZmxh
Z3MucmVhY2hlZFN0YXJ0ID0gZmFsc2U7CiAgICAgX2ZsYWdzLnJlYWNoZWRFbmQgPSBmYWxzZTsK
ICAgICAKLSAgICBfY2FjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVz
PigpOworICAgIF9jYWNoZXMgPSBtYWtlVW5pcXVlPEhUTUxDb252ZXJ0ZXJDYWNoZXM+KCk7CiB9
CiAKIEhUTUxDb252ZXJ0ZXI6On5IVE1MQ29udmVydGVyKCkKQEAgLTU1MSw3ICs1NTEsNyBAQCBS
ZWZQdHI8Q1NTVmFsdWU+IEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0
eUZvckVsZW1lbnQoRWxlbWVudCYgZQogCiAgICAgYXV0byByZXN1bHQgPSBtX2NvbXB1dGVkU3R5
bGVzLmFkZCgmZWxlbWVudCwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQot
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yPigmZWxlbWVudCwgdHJ1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+KCZlbGVtZW50LCB0
cnVlKTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yJiBjb21wdXRlZFN0eWxlID0gKnJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuIGNvbXB1dGVkU3R5bGUucHJvcGVydHlWYWx1
ZShwcm9wZXJ0eUlkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKaW5kZXggMjU3N2Q1YTc2OTY4MTYyMmY1
ZDBhN2I2M2ZmNGQwOWQ4OGM5NWRjMS4uMjljNWE4ZGE3ZWUzMjU1NjEyNjU2OTA1NGUzMDIyMjhh
NTMwMTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgT0JKQ19DTEFTUyBO
U1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkgeyB9CiAgICAgLy8gUmV0dXJucyBhIGNvbnRleHQg
SUQuCkBAIC01Miw2ICs1Myw3IEBAIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7
CiAgICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAKICAgICBjbGFzcyBBbGVybmF0aXZl
VGV4dENvbnRleHRDb250cm9sbGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgcHVibGljOgogICAgICAgICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkg
eyB9CiAgICAgICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNU
ZXh0QWx0ZXJuYXRpdmVzPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGZiNDM3
MTYzMDNhZTI1YjgxOTI5MmQyNzFjYTJjYWU2ODRiOWMwMmUuLmMzYzhmOGIzMjRiZmVjZGNlOWU1
YzRlYjE5YjViNzQ2MDg5MjhjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTE3
OCw3ICsxNzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXpp
bmdXZWJDb250ZW50KCkKIHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZp
Z3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCk7CiAgICAgCi0gICAgYXV0byBwYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgYXV0byBw
YWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAg
cGFnZS0+c2V0SXNGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogICAgIHBhZ2UtPnNldHRpbmdz
KCkuc2V0TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFNjcmlw
dEVuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3lu
Y0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
Y3BwCmluZGV4IGEwOTVlZWFlOWIyYTc5N2JkYWJhZTM0OTQwZmRjNmEzY2UzMDQyNGIuLmQ1ODEx
MmZmOWJkZjZjZDdkMTk4NTUyZDg2Njk5MWY4NWI3YTFjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTk0LDExICs5NCwxMSBAQCBzdGF0aWMgdm9p
ZCBjYWxsT25GaWxlVGhyZWFkKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAg
IH0pOwogICAgIH0pOwogCi0gICAgcXVldWUuZ2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgcXVldWUuZ2V0KCku
YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7
CiB9CiAKIEFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQm
IGNsaWVudCkKLSAgICA6IG1faW50ZXJuYWxzKHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxzPihj
bGllbnQpKQorICAgIDogbV9pbnRlcm5hbHMobWFrZVVuaXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXIuY3BwCmluZGV4IDlhZDNkYTllZmZmMGYzYTcwN2EwNjAxZjc4NjAxZDVkODY4MjU4
ZjUuLjk5YTdiNWM2Zjk4N2ExNGJhMTkwOTQ1ODk4N2FlODRlY2ZjNGYwODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IEZpbGVSZWFkZXI6OnJlYWRJbnRlcm5hbChCbG9iJiBibG9iLCBGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkVHlwCiAgICAgbV9zdGF0ZSA9IExPQURJTkc7CiAgICAgbV9lcnJvciA9IG51bGxw
dHI7CiAKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4o
bV9yZWFkVHlwZSwgc3RhdGljX2Nhc3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsK
KyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRlcj4obV9yZWFkVHlwZSwg
c3RhdGljX2Nhc3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsKICAgICBtX2xvYWRl
ci0+c2V0RW5jb2RpbmcobV9lbmNvZGluZyk7CiAgICAgbV9sb2FkZXItPnNldERhdGFUeXBlKG1f
YmxvYi0+dHlwZSgpKTsKICAgICBtX2xvYWRlci0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNmFl
NTUyY2JjZWZiYTM1YWY1NDk0YWQ4MGExNDczMWQwMGFjYTNkMS4uNWM4ZjE4ZTNkYWIwZWIyNTk3
YWQ1ZTgyMjEzOWJkODhmZjMyNGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUm
IGZyYW1lKQogCiAgICAgLy8gQ3JlYXRlIHRoZSBDYWNoZWRGcmFtZXMgZm9yIGFsbCBGcmFtZXMg
aW4gdGhlIEZyYW1lVHJlZS4KICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLnRyZWUoKS5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkK
LSAgICAgICAgbV9jaGlsZEZyYW1lcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRGcmFt
ZT4oKmNoaWxkKSk7CisgICAgICAgIG1fY2hpbGRGcmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8Q2Fj
aGVkRnJhbWU+KCpjaGlsZCkpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC0+ZG9t
V2luZG93KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9jdW1lbnQtPmZyYW1lKCkpOwpAQCAt
MTcyLDcgKzE3Miw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAg
ICAgLy8gQWN0aXZlIERPTSBvYmplY3RzIG11c3QgYmUgc3VzcGVuZGVkIGJlZm9yZSB3ZSBjYWNo
ZSB0aGUgZnJhbWUgc2NyaXB0IGRhdGEuCiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZChSZWFzb25G
b3JTdXNwZW5zaW9uOjpQYWdlQ2FjaGUpOwogCi0gICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4oZnJhbWUpOworICAgIG1f
Y2FjaGVkRnJhbWVTY3JpcHREYXRhID0gbWFrZVVuaXF1ZTxTY3JpcHRDYWNoZWRGcmFtZURhdGE+
KGZyYW1lKTsKIAogICAgIG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5zdXNwZW5kRm9yUGFnZUNh
Y2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IDA2ODZhZThm
ZWNlNDRmMWVmNjkwZTVmOGY2YWJlODQ2MTQ2M2RmN2QuLjk3NDdhNDA0MDE2YWM4NjhkMmY3Nzk2
ZTUzMzA0MzZmZmE1ODc0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVk
TGVha0NvdW50ZXIsIGNhY2hlZFBhZ2VDb3VudGVyLCAoIkNhY2hlZAogQ2FjaGVkUGFnZTo6Q2Fj
aGVkUGFnZShQYWdlJiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2V4cGlyYXRp
b25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpICsgU2Vjb25kcyhwYWdlLnNldHRpbmdzKCkuYmFj
a0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbCgpKSkKLSAgICAsIG1fY2FjaGVkTWFpbkZy
YW1lKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2UubWFpbkZyYW1lKCkpKQorICAg
ICwgbV9jYWNoZWRNYWluRnJhbWUobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJh
bWUoKSkpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGNhY2hlZFBhZ2VDb3VudGVyLmluY3JlbWVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4IDAwMjk2NTU4OTJkMTU0
Y2I1MDQzZTFkYTIyODI1ODc5ZjYzZWRkZTUuLjNiYTI0YjlkZTJlOTk0MTk2YTBkZjkyZmMzNjYz
Y2VlYTViZjRiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTQ3OCw3
ICs0NzgsNyBAQCBib29sIFBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0
ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBK
UyBldmVudHMgaW4gdGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJ
bk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0gICAgICAgIGl0ZW0ubV9jYWNo
ZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7CisgICAgICAgIGl0
ZW0ubV9jYWNoZWRQYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7CiAgICAgICAg
IGl0ZW0ubV9wcnVuaW5nUmVhc29uID0gUHJ1bmluZ1JlYXNvbjo6Tm9uZTsKICAgICAgICAgbV9p
dGVtcy5hZGQoJml0ZW0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmlsZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
CmluZGV4IDdhOTkxZjE3YjAzZDgzZTkwNWY3ZDNlMDYwN2JmNTJhOTliODBlNDUuLmIxNGQzMTAx
NThiNjQ1ZmU4Njk5ZjdmOTlmNDE4NThiZDU1YWUyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVx
dWVzdEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgICAgICBtX2ZpbGVJY29u
TG9hZGVyLT5pbnZhbGlkYXRlKCk7CiAKICAgICBGaWxlSWNvbkxvYWRlckNsaWVudCYgY2xpZW50
ID0gKnRoaXM7Ci0gICAgbV9maWxlSWNvbkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZUlj
b25Mb2FkZXI+KGNsaWVudCk7CisgICAgbV9maWxlSWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8Rmls
ZUljb25Mb2FkZXI+KGNsaWVudCk7CiAKICAgICBjaHJvbWUtPmxvYWRJY29uRm9yRmlsZXMocGF0
aHMsICptX2ZpbGVJY29uTG9hZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCA4MDZlNWYzZGFlYmUyOTRlMzMwMjMwZGZhNWVkZThj
OTJkNThjMzE4Li4xN2MwMjdjZmRmYTFiYjQzYjY0NWVlNjJkNThjOGFjMzIwNmQ4NzY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC0yNzks
NyArMjc5LDcgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5
KGNvbnN0IFN0cmluZyYgZXJyb3IpCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRG
b3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGFzSFRNTEVsZW1lbnQoKS5pc0Nvbm5lY3RlZCgpKTsKLSAgICBtX2Zvcm1B
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUF0dHJpYnV0ZVRh
cmdldE9ic2VydmVyPihhc0hUTUxFbGVtZW50KCkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihmb3JtQXR0ciksICp0aGlzKTsKKyAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
ciA9IG1ha2VVbmlxdWU8Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhc0hUTUxFbGVtZW50
KCkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0ciksICp0aGlzKTsKIH0K
IAogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVUYXJnZXRDaGFuZ2Vk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggZWE1YjA5YWFhMDhk
YjI3Mzk2MWI5NTM0MjJmMDNkZDdhZDZlNDY3MS4uZDBlMDNmNTZjYjA2M2UyN2YxMTM0MGEyNzEz
ZDRmOTYxYjVhZTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAg
LTIwMCw3ICsyMDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2F2ZWRGb3JtU3RhdGU+IFNhdmVkRm9y
bVN0YXRlOjpkZXNlcmlhbGl6ZShjb25zdCBWZWN0b3I8U3RyaW5nPgogICAgIHNpemVfdCBpdGVt
Q291bnQgPSBzdGF0ZVZlY3RvcltpbmRleCsrXS50b1VJbnQoKTsKICAgICBpZiAoIWl0ZW1Db3Vu
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBzYXZlZEZvcm1TdGF0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CisgICAgYXV0byBzYXZlZEZvcm1TdGF0
ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CiAgICAgd2hpbGUgKGl0ZW1Db3VudC0t
KSB7CiAgICAgICAgIGlmIChpbmRleCArIDEgPj0gc3RhdGVWZWN0b3Iuc2l6ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNjUsMTMgKzM2NSwxMyBAQCBzdGF0aWMgU3RyaW5n
IGZvcm1TdGF0ZVNpZ25hdHVyZSgpCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI6OlNh
dmVkRm9ybVN0YXRlTWFwPiBGb3JtQ29udHJvbGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAo
Y29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCYgY29udHJvbExpc3QpCiB7CiAgICAgRm9ybUtl
eUdlbmVyYXRvciBrZXlHZW5lcmF0b3I7Ci0gICAgYXV0byBzdGF0ZU1hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8U2F2ZWRGb3JtU3RhdGVNYXA+KCk7CisgICAgYXV0byBzdGF0ZU1hcCA9IG1ha2VVbmlx
dWU8U2F2ZWRGb3JtU3RhdGVNYXA+KCk7CiAgICAgZm9yIChhdXRvJiBjb250cm9sIDogY29udHJv
bExpc3QpIHsKICAgICAgICAgaWYgKCFjb250cm9sLT5zaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1D
b250cm9sU3RhdGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvJiBmb3Jt
U3RhdGUgPSBzdGF0ZU1hcC0+YWRkKGtleUdlbmVyYXRvci5mb3JtS2V5KCpjb250cm9sKS5pbXBs
KCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgaWYgKCFmb3JtU3RhdGUpCi0g
ICAgICAgICAgICBmb3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigp
OworICAgICAgICAgICAgZm9ybVN0YXRlID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsK
ICAgICAgICAgZm9ybVN0YXRlLT5hcHBlbmRDb250cm9sU3RhdGUoY29udHJvbC0+bmFtZSgpLCBj
b250cm9sLT50eXBlKCksIGNvbnRyb2wtPnNhdmVGb3JtQ29udHJvbFN0YXRlKCkpOwogICAgIH0K
ICAgICByZXR1cm4gc3RhdGVNYXA7CkBAIC00MDMsNyArNDAzLDcgQEAgRm9ybUNvbnRyb2xTdGF0
ZSBGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1D
b250cm9sRWwKICAgICBpZiAobV9zYXZlZEZvcm1TdGF0ZU1hcC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7CiAgICAgaWYgKCFtX2Zvcm1LZXlHZW5lcmF0b3Ip
Ci0gICAgICAgIG1fZm9ybUtleUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUtleUdl
bmVyYXRvcj4oKTsKKyAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxGb3Jt
S2V5R2VuZXJhdG9yPigpOwogICAgIFNhdmVkRm9ybVN0YXRlTWFwOjppdGVyYXRvciBpdCA9IG1f
c2F2ZWRGb3JtU3RhdGVNYXAuZmluZChtX2Zvcm1LZXlHZW5lcmF0b3ItPmZvcm1LZXkoY29udHJv
bCkuaW1wbCgpKTsKICAgICBpZiAoaXQgPT0gbV9zYXZlZEZvcm1TdGF0ZU1hcC5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMTA0N2M1OGVlYzM1MzZlM2QzOTkzYTdiNmU1ODYyNWIw
MTU5NTJmMS4uZWI5YmQwNjg1ZDU5MmVhNjkyMzEzYWQ0MTZjMjdkN2YyODI2MWY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTMxNCw3ICszMTQsNyBA
QCBib29sIEhUTUxBbmNob3JFbGVtZW50OjpoYXNSZWwoUmVsYXRpb24gcmVsYXRpb24pIGNvbnN0
CiBET01Ub2tlbkxpc3QmIEhUTUxBbmNob3JFbGVtZW50OjpyZWxMaXN0KCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fcmVsTGlzdCkgewotICAgICAgICBtX3JlbExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PERPTVRva2VuTGlzdD4oY29uc3RfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCY+KCp0aGlzKSwgSFRN
TE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAg
ICAgbV9yZWxMaXN0ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nhc3Q8SFRNTEFu
Y2hvckVsZW1lbnQmPigqdGhpcyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmLCBT
dHJpbmdWaWV3IHRva2VuKSB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgICAgICAgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJub3JlZmVycmVyIikgfHwgZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm5vb3BlbmVyIikgfHwgZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZSh0b2tlbiwgImFyIik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVs
ZW1lbnQuY3BwCmluZGV4IGFjMDc1OGRlODNiMDQ4ODJhNWQ4OTIyZmQ0MDU1NDhlZjk1NmRjYTIu
LjQ5YWJmYTVmNzBhN2FiOTdkNzNlMmM4MmI3NjdiMDUzNTFhZGVmODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBIVE1MQXJl
YUVsZW1lbnQ6OmludmFsaWRhdGVDYWNoZWRSZWdpb24oKQogYm9vbCBIVE1MQXJlYUVsZW1lbnQ6
Om1hcE1vdXNlRXZlbnQoTGF5b3V0UG9pbnQgbG9jYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNp
emUsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBpZiAobV9sYXN0U2l6ZSAhPSBzaXpl
KSB7Ci0gICAgICAgIG1fcmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXRoPihnZXRSZWdpb24o
c2l6ZSkpOworICAgICAgICBtX3JlZ2lvbiA9IG1ha2VVbmlxdWU8UGF0aD4oZ2V0UmVnaW9uKHNp
emUpKTsKICAgICAgICAgbV9sYXN0U2l6ZSA9IHNpemU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDA3NzE1Y2JiNTA5NTRhNjI2MzZjOTMz
MDVhNzY1MzM1OWQxZTZmNmIuLjIwMTRlZmU3NWNlYzQ2MGUzNzkxZTM2M2Y1NjI4ZTUwMDFiOGRj
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC05NTIs
NyArOTUyLDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIoc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikgY28KICAgICBtX2ltYWdlQnVmZmVyLT5j
b250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXModHJ1ZSk7CiAgICAgbV9pbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoZGVmYXVsdEludGVy
cG9sYXRpb25RdWFsaXR5KTsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U3Ryb2tl
VGhpY2tuZXNzKDEpOwotICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7Cisg
ICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlcj4obV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGxvY2soSFRNTEVsZW1lbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKSk7CiAgICAg
SFRNTEVsZW1lbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4
dHJhTWVtb3J5QWxsb2NhdGVkKG1lbW9yeUNvc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCmluZGV4IDk3NmM4ZTBhOWEwNmE5YjgzZDZjYTk0MWJkNWRkMzdiOWYzMzg1
YzUuLjMyODE3NmI2OWU4Y2QxYmYyMmQ0ZTc2MzI3ZTlmMjkyOTY4YWI0MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBIVE1M
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAgIGlmIChoYXNO
YW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNhY2hlID0g
c3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CisgICAgYXV0
byBjYWNoZSA9IG1ha2VVbmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwogCiAg
ICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFp
bHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNw
cAppbmRleCBmMTU3ODc0ZTZkNTM0ZTNmNjEzNGU0YTVkZjRmNTFiZTJmNjdhMzFhLi42MGRkMWZi
MjUyMDM4NjBkM2Q5MmE3YTVhY2IzMzFjMmFiMDRiNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC04OCw3ICs4OCw3IEBAIGNvbnN0IEF0b21TdHJp
bmcmIERldGFpbHNTbG90QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3QgTm9k
ZSYgY2hpbGQpCiBSZWY8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgYXV0byBkZXRhaWxzID0gYWRvcHRSZWYoKm5ldyBIVE1MRGV0YWlsc0VsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKLSAgICBkZXRhaWxzLT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6
OmNyZWF0ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWxzU2xvdEFzc2lnbm1lbnQ+
KCkpKTsKKyAgICBkZXRhaWxzLT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1
bWVudCwgbWFrZVVuaXF1ZTxEZXRhaWxzU2xvdEFzc2lnbm1lbnQ+KCkpKTsKICAgICByZXR1cm4g
ZGV0YWlsczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKaW5kZXggZDg4OTNiMWYwOTQ5ZWYxMDJlMjlkMDNjNTg5NjdjNGRkNGYzZmQ1YS4u
ZTE1MzE2YTE5ZWVmYjQ3N2UzZjM2N2M4MGY3YzNjMWEyYTYzNGI4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC00ODAsNyArNDgwLDcg
QEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1l
c3NhZ2UoKQogICAgIGlmIChyZW5kZXJlcigpICYmIHdpbGxWYWxpZGF0ZSgpKQogICAgICAgICBt
ZXNzYWdlID0gdmFsaWRhdGlvbk1lc3NhZ2UoKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBpZiAo
IW1fdmFsaWRhdGlvbk1lc3NhZ2UpCi0gICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0aGlzKTsKKyAgICAgICAgbV92YWxpZGF0
aW9uTWVzc2FnZSA9IG1ha2VVbmlxdWU8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMpOwogICAgIG1f
dmFsaWRhdGlvbk1lc3NhZ2UtPnVwZGF0ZVZhbGlkYXRpb25NZXNzYWdlKG1lc3NhZ2UpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
Y3BwCmluZGV4IDZlYzIyZDc3NDlmMmY3OGJkMzFlZjc3ZWE2MzYwNzNiNzFjNTlmZjIuLmEyYjAw
ZThmODE2ZGExYzIyMWIxYzM2NmVhNmU2ODljM2IxYzY4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50
Q2FjaGUoKSBjb25zdAogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFt
ZWRFbGVtZW50Q2FjaGU+KCk7CisgICAgYXV0byBjYWNoZSA9IG1ha2VVbmlxdWU8Q29sbGVjdGlv
bk5hbWVkRWxlbWVudENhY2hlPigpOwogCiAgICAgSGFzaFNldDxBdG9tU3RyaW5nSW1wbCo+IGZv
dW5kSW5wdXRFbGVtZW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
CmluZGV4IGM3NmQ0OTNhNjJjZWQ4MzA4ODAxYjZiMDFkMzMyMWUwYTMzM2Y1MWQuLjQzNWQ5NTE0
ZGQyOWRkZDFmNmRmYjFkMTY5ZTM0N2UzMTVhMzAxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVu
dDo6YWRkVG9QYXN0TmFtZXNNYXAoRm9ybU5hbWVkSXRlbSogaXRlbSwgY29uc3QgQXRvbVN0cmlu
ZyYgcAogICAgIGlmIChwYXN0TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fcGFzdE5hbWVzTWFwKQotICAgICAgICBtX3Bhc3ROYW1lc01hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8UGFzdE5hbWVzTWFwPigpOworICAgICAgICBtX3Bhc3ROYW1lc01hcCA9IG1ha2VVbmlx
dWU8UGFzdE5hbWVzTWFwPigpOwogICAgIG1fcGFzdE5hbWVzTWFwLT5zZXQocGFzdE5hbWUuaW1w
bCgpLCBpdGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNw
cAppbmRleCAwMmQ3ZDRlNGZiZTg2ZjUyNzBmNTg0YjZhOGRlYjliZTQ2Zjk3YWE5Li5iMWM4MjFk
ZDliYWJhMmEyMGNiMjllMWMxY2ZkOTBkNzFmZWM1OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCBSZWY8SFRNTElGcmFtZUVs
ZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRAogRE9NVG9rZW5MaXN0JiBIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCgpCiB7CiAg
ICAgaWYgKCFtX3NhbmRib3gpIHsKLSAgICAgICAgbV9zYW5kYm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzYW5kYm94QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdW
aWV3IHRva2VuKSB7CisgICAgICAgIG1fc2FuZGJveCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0
PigqdGhpcywgc2FuZGJveEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewog
ICAgICAgICAgICAgcmV0dXJuIFNlY3VyaXR5Q29udGV4dDo6aXNTdXBwb3J0ZWRTYW5kYm94UG9s
aWN5KHRva2VuKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKaW5kZXggMGMyNWNkZDgwZDVmOGE3NzBhMWQ5NzAwNTc4NDdhODljNTY4
M2RiZC4uMzc2YzUyMTk2NGUwZjcxYjZmZDljMjE3MmQ2MjAxYzI5MjU3YTFiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVm
PEhUTUxJbnB1dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2MKIEhUTUxJbWFnZUxvYWRlciYgSFRNTElucHV0RWxlbWVudDo6
ZW5zdXJlSW1hZ2VMb2FkZXIoKQogewogICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAg
bV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7
CisgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRo
aXMpOwogICAgIHJldHVybiAqbV9pbWFnZUxvYWRlcjsKIH0KIApAQCAtMTY0MSw3ICsxNjQxLDcg
QEAgUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmRhdGFMaXN0
KCkgY29uc3QKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0cmlidXRlVGFyZ2V0
T2JzZXJ2ZXIoKQogewogICAgIGlmIChpc0Nvbm5lY3RlZCgpKQotICAgICAgICBtX2xpc3RBdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdl
dE9ic2VydmVyPihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhp
cyk7CisgICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbWFrZVVuaXF1ZTxM
aXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24obGlzdEF0dHIpLCB0aGlzKTsKICAgICBlbHNlCiAgICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRh
cmdldE9ic2VydmVyID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAppbmRleCBiODYzNGNhZGFmYTE4YTBhMjdjY2Y3MjhmOWJiZjU2Y2I3Zjc4ZDE2Li5m
NmE3YmM4MDI0ZmZhNWU0YmQ3MWY2OWEyN2M5N2M4YzkzNmJiNGUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBIVE1MTGlu
a0VsZW1lbnQ6OnN0eWxlU2hlZXRJc0xvYWRpbmcoKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1M
TGlua0VsZW1lbnQ6OnNpemVzKCkKIHsKICAgICBpZiAoIW1fc2l6ZXMpCi0gICAgICAgIG1fc2l6
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNpemVzQXR0cik7Cisg
ICAgICAgIG1fc2l6ZXMgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNpemVzQXR0
cik7CiAgICAgcmV0dXJuICptX3NpemVzOwogfQogCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBI
VE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KExpbmtFdmVudFNlbmRlciogZXZl
bnRTZW5kZXIpCiBET01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCgpCiB7CiAg
ICAgaWYgKCFtX3JlbExpc3QpIAotICAgICAgICBtX3JlbExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmIGRv
Y3VtZW50LCBTdHJpbmdWaWV3IHRva2VuKSB7CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlx
dWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYg
ZG9jdW1lbnQsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiBMaW5rUmVs
QXR0cmlidXRlOjppc1N1cHBvcnRlZChkb2N1bWVudCwgdG9rZW4pOwogICAgICAgICB9KTsKICAg
ICByZXR1cm4gKm1fcmVsTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IGI1NWM0NjkwNjFkY2MwNGYyYTExOWEyNTUzOGVmMDgyZmU2ZTQzNTUuLmY2NGZl
OTJiNmI3ZDAxYzQ5NGI1N2E3NjVlMmE1NWI2NGIzZjA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIEhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoSW5pdGlhbGl6YXRpb24o
KQogewotICAgIG1fbWVkaWFTZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYUVsZW1lbnRT
ZXNzaW9uPigqdGhpcyk7CisgICAgbV9tZWRpYVNlc3Npb24gPSBtYWtlVW5pcXVlPE1lZGlhRWxl
bWVudFNlc3Npb24+KCp0aGlzKTsKIAogICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJl
c3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxz
Y3JlZW4pOwogICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlh
RWxlbWVudFNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhKTsKQEAgLTMwMjcs
NyArMzAyNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UoY29u
c3QgTWVkaWFUaW1lJiBpblRpbWUsIGNvbnN0IE1lZGlhVGltCiAKICAgICAvLyA1IC0gSWYgdGhl
IHNlZWsgd2FzIGluIHJlc3BvbnNlIHRvIGEgRE9NIG1ldGhvZCBjYWxsIG9yIHNldHRpbmcgb2Yg
YW4gSURMIGF0dHJpYnV0ZSwgdGhlbiBjb250aW51ZQogICAgIC8vIHRoZSBzY3JpcHQuIFRoZSBy
ZW1haW5kZXIgb2YgdGhlc2Ugc3RlcHMgbXVzdCBiZSBydW4gYXN5bmNocm9ub3VzbHkuCi0gICAg
bV9wZW5kaW5nU2VlayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwg
bmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKKyAgICBtX3BlbmRpbmdTZWVr
ID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwg
cG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIGlmIChmcm9tRE9NKSB7CiAgICAgICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsICJlbnF1ZXVpbmcgc2VlayBmcm9tICIsIG5vdywgIiB0byAiLCB0aW1l
KTsKICAgICAgICAgbV9zZWVrVGFza1F1ZXVlLnNjaGVkdWxlVGFzayhzdGQ6OmJpbmQoJkhUTUxN
ZWRpYUVsZW1lbnQ6OnNlZWtUYXNrLCB0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCmluZGV4IDYxMjQ1NDFmN2NmNTRhMTEwYTVlNDg2ZTQyYzcxY2QyYTJlZmExOTMu
LjJjNmVjMDU4ZTRjOTUyMTMxYzBlYTA4ZTA4YTdlYTk0MzU4MDY1M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC05OTAsNiArOTkwLDcgQEAgY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudAogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCiAgICAgc3RydWN0
IFBlbmRpbmdTZWVrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICBQZW5kaW5nU2Vlayhjb25zdCBNZWRpYVRpbWUmIG5vdywgY29uc3QgTWVkaWFUaW1l
JiB0YXJnZXRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVG9sZXJhbmNlLCBjb25zdCBN
ZWRpYVRpbWUmIHBvc2l0aXZlVG9sZXJhbmNlKQogICAgICAgICAgICAgOiBub3cobm93KQogICAg
ICAgICAgICAgLCB0YXJnZXRUaW1lKHRhcmdldFRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE91dHB1dEVsZW1lbnQuY3BwCmluZGV4IGRkNGZhMmQ3MGU0ZjQzZjQyYjgyMjJkMzdkNDQxOGYx
YTEzMWVkODcuLjU2YjcyMDZhZTNiZThmMTBhODgxNGFlOWFmYWM2MmJmZWI1NjA5YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCkBAIC0xMzIsNyArMTMyLDcg
QEAgdm9pZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiBET01Ub2tlbkxpc3QmIEhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKCkKIHsKICAg
ICBpZiAoIW1fdG9rZW5zKQotICAgICAgICBtX3Rva2VucyA9IHN0ZDo6bWFrZV91bmlxdWU8RE9N
VG9rZW5MaXN0PigqdGhpcywgZm9yQXR0cik7CisgICAgICAgIG1fdG9rZW5zID0gbWFrZVVuaXF1
ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBmb3JBdHRyKTsKICAgICByZXR1cm4gKm1fdG9rZW5zOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBkZGE5NDQ5ZDU3YWQ0MjA4NTg2MjdkZWQzZmRkOTE4MTMyMTVmZTJiLi41Yjk5ZDU1NTUz
MDQ5NzA5M2M2YmNhOTk1ODdjN2EyZjcyNTU5MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZUFmdGVyU3R5bGVSZXNvbHV0aW9uKCkKICAgICBp
ZiAocmVuZGVyZXIoKSAmJiAhdXNlRmFsbGJhY2tDb250ZW50KCkpIHsKICAgICAgICAgaWYgKGlz
SW1hZ2VUeXBlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAg
ICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+
KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1M
SW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgICAgIGlmIChtX25lZWRzSW1hZ2VSZWxvYWQp
CiAgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmlu
Z1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN1bW1hcnlFbGVtZW50LmNwcAppbmRleCAxMGJjMDlmZjA5OWM4ODhiMjI2MjY5MzkwYjhl
MWY4YmU0Y2UzOTY3Li5iMDQ5MzliOWMyZDcyNzAyMTM3OWM1YTRkZDM0MDQ3ZDgxMmFkOTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIGNsYXNzIFN1bW1hcnlTbG90RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTbG90QXNzaWdu
bWVudCB7CiBSZWY8SFRNTFN1bW1hcnlFbGVtZW50PiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAg
ICAgUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4gc3VtbWFyeSA9IGFkb3B0UmVmKCpuZXcgSFRNTFN1
bW1hcnlFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgc3VtbWFyeS0+YWRkU2hhZG93
Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8U3VtbWFy
eVNsb3RFbGVtZW50PigpKSk7CisgICAgc3VtbWFyeS0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290
OjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8U3VtbWFyeVNsb3RFbGVtZW50PigpKSk7CiAg
ICAgcmV0dXJuIHN1bW1hcnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCmluZGV4IGE1ZTc1YWFmZjUyZGRmOWY1NzU0NWJhMDY3ZWVjNzg5ODg4ZGQ5YWIuLjY3
ZmYyMTI1MmYxYjhlODMxMGExZDdjYmIyMzJlYThjNzM5MzhhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUTUxWaWRl
b0VsZW1lbnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgdXBkYXRlRGlzcGxheVN0YXRlKCk7
CiAgICAgaWYgKHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CiAgICAgICAgIGlmICghbV9p
bWFnZUxvYWRlcikKLSAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1h
a2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXIt
PnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+aW1hZ2VSZXNvdXJjZSgpLnNldENh
Y2hlZEltYWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZv
aWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluCiAKICAgICAgICAgaWYgKHNob3VsZERpc3BsYXlQb3N0ZXJJ
bWFnZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICAg
ICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhp
cyk7CisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdl
TG9hZGVyPigqdGhpcyk7CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxl
bWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCmluZGV4IDdiZWJjN2ExMGNjYmVkNTNjZmU4Y2FmOGEw
N2M3OGU2YzU3OWQ2NGYuLmI2NjhkYTFmMzIxNGRiZjliOTE2MWVmYTgzMjU2Yzk1Y2E4MjExZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQdWJsaWNVUkxNYW5h
Z2VyPiBQdWJsaWNVUkxNYW5hZ2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKIHsKLSAgICBhdXRvIHB1YmxpY1VSTE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1
YmxpY1VSTE1hbmFnZXI+KGNvbnRleHQpOworICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9IG1h
a2VVbmlxdWU8UHVibGljVVJMTWFuYWdlcj4oY29udGV4dCk7CiAgICAgcHVibGljVVJMTWFuYWdl
ci0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHB1YmxpY1VSTE1hbmFnZXI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmluZGV4IDhhZjczYThhMDA1
NDk4MGFkMTc5MDY5NTZhODQzMmE2ZjljZGIxNGIuLmY1ZGFiMGY0MmYyZDA1M2U3MDNjNmM1NzIz
Y2ExNjAzNzFkMWEyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlv
bk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2Uu
Y3BwCkBAIC0xMTUsOSArMTE1LDkgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7
CiAgICAgbV9tZXNzYWdlID0gbWVzc2FnZTsKICAgICBpZiAoIW1fYnViYmxlKQotICAgICAgICBt
X3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2Fn
ZTo6YnVpbGRCdWJibGVUcmVlKTsKKyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+
KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7CiAgICAgZWxzZQot
ICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0
aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIpOworICAgICAgICBtX3RpbWVy
ID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2Fn
ZURPTUFuZFN0YXJ0VGltZXIpOwogICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQog
CkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURP
TUFuZFN0YXJ0VGltZXIoKQogICAgIGlmIChtYWduaWZpY2F0aW9uIDw9IDApCiAgICAgICAgIG1f
dGltZXIgPSBudWxscHRyOwogICAgIGVsc2UgewotICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJl
ZSk7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRp
b25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKICAgICAgICAgbV90aW1lci0+c3RhcnRPbmVT
aG90KHN0ZDo6bWF4KDVfcywgMV9tcyAqIHN0YXRpY19jYXN0PGRvdWJsZT4obV9tZXNzYWdlLmxl
bmd0aCgpKSAqIG1hZ25pZmljYXRpb24pKTsKICAgICB9CiB9CkBAIC0yMzQsNyArMjM0LDcgQEAg
dm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6cmVxdWVzdFRvSGlkZU1lc3NhZ2UoKQogICAgIH0KIAog
ICAgIC8vIFdlIG11c3Qgbm90IG1vZGlmeSB0aGUgRE9NIHRyZWUgaW4gdGhpcyBjb250ZXh0IGJ5
IHRoZSBzYW1lIHJlYXNvbiBhcyBzZXRNZXNzYWdlKCkuCi0gICAgbV90aW1lciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRy
ZWUpOworICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25N
ZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMF9z
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCBiMTY3Nzg0NDI4YzNiZmU5ZTZmMTZh
Nzc4NDBkM2YzYmI5NzA1Yjk2Li41M2M5YzU2NjA0MjdjNDg2ZTMyYWJjMGMyZDY1NGNjYzU2YzAy
OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtOTksNyArOTksNyBAQCBzdHJ1Y3QgRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dCB7CiAKICAgICBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBjbGlw
KQogICAgICAgICA6IGNvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250
ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6
UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgZGlzcGxheUxpc3QsIHN0YXRlLCBjbGlwLCBB
ZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5
TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgZGlzcGxheUxpc3QsIHN0YXRlLCBj
bGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KQEAgLTIx
MTgsNyArMjExOCw3IEBAIEdyYXBoaWNzQ29udGV4dCogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogewogICAgIGlmIChVTkxJS0VMWShtX3VzZXNE
aXNwbGF5TGlzdERyYXdpbmcpKSB7CiAgICAgICAgIGlmICghbV9yZWNvcmRpbmdDb250ZXh0KQot
ICAgICAgICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5
TGlzdERyYXdpbmdDb250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxv
YXRQb2ludDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CisgICAgICAgICAgICBtX3Jl
Y29yZGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdy
YXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZh
c0Jhc2UoKS5zaXplKCkpKTsKICAgICAgICAgcmV0dXJuICZtX3JlY29yZGluZ0NvbnRleHQtPmNv
bnRleHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDYzMTE5MTc1NzBmMmRiMjg1OTRjYmIzNDkw
MjQ2OTk3YjU4M2ZiZTAuLmNkNDcyMTI2MWIyZTAyMmI1NTI1ZGQzZDNjYTU0NjlmOWMwYjNlYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwCkBAIC0xMzU5LDcgKzEzNTksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICNkZWZp
bmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVu
YWJsZSkgXAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFs
KSkgeyBcCiAgICAgICAgIGlmICghdmFyaWFibGUpIHsgXAotICAgICAgICAgICAgdmFyaWFibGUg
PSAoY2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsg
XAorICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4o
KnRoaXMpIDogbnVsbHB0cjsgXAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIp
IFwKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4
dGVuc2lvbigqdGhpcywgbmFtZSk7IFwKICAgICAgICAgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlMDZiZjk5
ZDU5MTU5NjM5ODBhNjExYzMyYTgzOWUyOTdmMTI4MDQ1Li5lNWZkZTcwMzM3NDU2YTMxZTE1NzFl
ZTEwZjNmZDI2NDJkYjAzNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBXZWJHTEV4
dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBuYW1lKQogI2RlZmluZSBFTkFCTEVfSUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1l
TGl0ZXJhbCwgY2FuRW5hYmxlKSBcCiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgbmFtZUxpdGVyYWwpKSB7IFwKICAgICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAgICAg
ICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigqdGhp
cykgOiBudWxscHRyOyBcCisgICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gbWFr
ZVVuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFi
bGUgIT0gbnVsbHB0cikgXAogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKQEAgLTEz
Miw3ICsxMzIsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVy
VGV4dHVyZUxPRCA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIl9zKTsKLSAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KCp0aGlzKTsKKyAgICAgICAg
ICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBtYWtlVW5pcXVlPEVYVFNoYWRlclRleHR1
cmVMT0Q+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTE1OSw3ICsxNTksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgICAgIG1f
d2ViZ2xEcmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
ZHJhd19idWZmZXJzIl9zKTsKLSAgICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KCp0aGlzKTsKKyAgICAgICAgICAgICAg
ICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBtYWtlVW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KCp0aGlz
KTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4
dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE3MSw3
ICsxNzEsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5j
ZWRBcnJheXMgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFu
Y2VkX2FycmF5cyJfcyk7Ci0gICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9
IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKKyAgICAgICAg
ICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbWFrZVVuaXF1ZTxBTkdMRUluc3RhbmNl
ZEFycmF5cz4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAzZWNlN2VlYjc0MmZhZGI2ZmUxOGIzM2ViNWE2MTM5
Y2VkNDFiYTU2Li5kMTY2ZmIyMzkwNzZkMzYyNjVkOTZjNjQ1ZjA3MTg3NWFjODJiYjM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcApAQCAtNzk5LDggKzc5OSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1fY29udGV4dC0+dmlld3BvcnQo
MCwgMCwgY2FudmFzU2l6ZS53aWR0aCgpLCBjYW52YXNTaXplLmhlaWdodCgpKTsKICAgICBtX2Nv
bnRleHQtPnNjaXNzb3IoMCwgMCwgY2FudmFzU2l6ZS53aWR0aCgpLCBjYW52YXNTaXplLmhlaWdo
dCgpKTsKIAotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dExvc3RDYWxsYmFjaz4odGhpcykpOwotICAgIG1f
Y29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJl
bmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjaz4odGhpcykpOworICAgIG1fY29udGV4
dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhtYWtlVW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4
dExvc3RDYWxsYmFjaz4odGhpcykpOworICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2Fs
bGJhY2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFj
az4odGhpcykpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxh
Z3MoKQpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpjb21waWxlU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiAgICAgICAgIFJlZjxJbnNwZWN0
b3I6OlNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSk7CiAKICAgICAgICAgZm9yIChh
dXRvJiBlcnJvciA6IGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5zcGxpdCgnXG4nKSkKLSAgICAg
ICAgICAgIGNhbnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3Is
IHN0YWNrVHJhY2UuY29weVJlZigpKSk7CisgICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50KCku
YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJXZWJHTDogIiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkpOwogICAgIH0K
IH0KIApAQCAtNTgwOCw5ICs1ODA4LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpwcmludFRvQ29uc29sZShNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYKICAgICAv
LyBFcnJvciBtZXNzYWdlcyBjYW4gb2NjdXIgZHVyaW5nIGZ1bmN0aW9uIGNhbGxzLCBzbyBzaG93
IHN0YWNrIHRyYWNlcyBmb3IgdGhlbS4KICAgICBpZiAobGV2ZWwgPT0gTWVzc2FnZUxldmVsOjpF
cnJvcikgewogICAgICAgICBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJh
Y2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVu
dFN0YXRlKCkpOwotICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdl
VHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CisgICAgICAg
IGNvbnNvbGVNZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdl
LCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKICAgICB9IGVsc2UKLSAgICAgICAgY29uc29sZU1lc3Nh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UpOworICAg
ICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVz
c2FnZSk7CiAKICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCk7CiAgICAgaWYgKGNhbnZh
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2Fu
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNw
cAppbmRleCBlODU5MGNjYzY5NzI4YWYzOTMwMWQzYWU4ZDg5ODhmNWMxNWE0YjJhLi5hZWZlNDU3
ZjRlZmYwNDM2NTc2M2NiMjZmNzE3ODQ2M2UzMmUxZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAg
dm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUoKQogICAgICAgICBpZiAoIXVybC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIFVSTCBiYXNlRWxlbWVudFVSTDsgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHBhc3NlZCBpbiBmcm9tIHRoZSBIVE1MUHJlbG9hZFNjYW5uZXIgdmlhIHNjYW4o
KTogd2l0aG91dCBpdCB3ZSB3aWxsIGdldCByZWxhdGl2ZSBVUkxzIHdyb25nLgogICAgICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIGluY2x1ZGluZyB0aGUgY2hhcnNldCBpbiB0aGUg
cHJlbG9hZCByZXF1ZXN0PwotICAgICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0
OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpKTsKKyAgICAg
ICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3Nz
IiwgdXJsLCBiYXNlRWxlbWVudFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hl
ZXQsIFN0cmluZygpLCBQcmVsb2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQ
b2xpY3k6OkVtcHR5U3RyaW5nKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9zdGF0ZSA9IEluaXRp
YWw7CiAgICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShydWxlLCAi
Y2hhcnNldCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCmluZGV4IDUxYmFlNGMyMWNmOTQwZGNkOGM2ZDMyMGJjNGRiZDY2MjZi
ZTdkOWYuLjlhYzQ0NGVmMGE2NzFmOGE0NzY5OTU3YWUzMjIyYmQ4ZDEwMDdkOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAK
QEAgLTUwMyw3ICs1MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVj
dGlvbkRhdGE+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRQogICAgIEpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZSogZWxlbWVudEludGVyZmFjZSA9IG51bGxwdHI7CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UodG9rZW4sICZlbGVtZW50SW50ZXJmYWNlKTsKICAgICBpZiAoVU5MSUtFTFkoZWxl
bWVudEludGVyZmFjZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPigqZWxlbWVudEludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBX
VEZNb3ZlKHRva2VuLmF0dHJpYnV0ZXMoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
dXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4oKmVsZW1lbnRJbnRlcmZhY2UsIHRva2VuLm5h
bWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVzKCkpKTsKICAgICBhdHRhY2hMYXRlcihjdXJy
ZW50Tm9kZSgpLCAqZWxlbWVudCk7CiAgICAgbV9vcGVuRWxlbWVudHMucHVzaChIVE1MU3RhY2tJ
dGVtOjpjcmVhdGUoZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHRva2VuKSkpOwog
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNGZmNGUyYjg3ODhhOTE5YmY0MmQxN2FkOWZkNjUx
YjliMDNhZDE5Yi4uZGQ5ZWEwNGM2ZjUwMGM4NjRiOGM5NGMxOTM4Mzc4NzdhZmZkZTVjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CkBAIC01MywxMSArNTMsMTEgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJz
ZXIoSFRNTERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cihkb2N1bWVudCkKICAgICAsIG1fb3B0aW9ucyhkb2N1bWVudCkKICAgICAsIG1fdG9rZW5pemVy
KG1fb3B0aW9ucykKLSAgICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFNj
cmlwdFJ1bm5lcj4oZG9jdW1lbnQsIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0Jj4o
KnRoaXMpKSkKLSAgICAsIG1fdHJlZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MVHJlZUJ1
aWxkZXI+KCp0aGlzLCBkb2N1bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMp
KQotICAgICwgbV9wYXJzZXJTY2hlZHVsZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MUGFyc2VyU2No
ZWR1bGVyPigqdGhpcykpCisgICAgLCBtX3NjcmlwdFJ1bm5lcihtYWtlVW5pcXVlPEhUTUxTY3Jp
cHRSdW5uZXI+KGRvY3VtZW50LCBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVubmVySG9zdCY+KCp0
aGlzKSkpCisgICAgLCBtX3RyZWVCdWlsZGVyKG1ha2VVbmlxdWU8SFRNTFRyZWVCdWlsZGVyPigq
dGhpcywgZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAs
IG1fcGFyc2VyU2NoZWR1bGVyKG1ha2VVbmlxdWU8SFRNTFBhcnNlclNjaGVkdWxlcj4oKnRoaXMp
KQogICAgICwgbV94c3NBdWRpdG9yRGVsZWdhdGUoZG9jdW1lbnQpCi0gICAgLCBtX3ByZWxvYWRl
cihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxSZXNvdXJjZVByZWxvYWRlcj4oZG9jdW1lbnQpKQorICAg
ICwgbV9wcmVsb2FkZXIobWFrZVVuaXF1ZTxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+KGRvY3VtZW50
KSkKIHsKIH0KIApAQCAtNzAsNyArNzAsNyBAQCBpbmxpbmUgSFRNTERvY3VtZW50UGFyc2VyOjpI
VE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbgogICAg
IDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCksIHJhd1BvbGlj
eSkKICAgICAsIG1fb3B0aW9ucyhmcmFnbWVudC5kb2N1bWVudCgpKQogICAgICwgbV90b2tlbml6
ZXIobV9vcHRpb25zKQotICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxU
cmVlQnVpbGRlcj4oKnRoaXMsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVu
dFBvbGljeSgpLCBtX29wdGlvbnMpKQorICAgICwgbV90cmVlQnVpbGRlcihtYWtlVW5pcXVlPEhU
TUxUcmVlQnVpbGRlcj4oKnRoaXMsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29u
dGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQogICAgICwgbV94c3NBdWRpdG9yRGVsZWdhdGUoZnJh
Z21lbnQuZG9jdW1lbnQoKSkKIHsKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLWh0bWwtZnJhZ21lbnRzCkBAIC0zMTUsNyAr
MzE1LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25v
dXNNb2RlIG1vZGUpCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICBB
U1NFUlQobV90b2tlbml6ZXIuaXNJbkRhdGFTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFtX3ByZWxv
YWRTY2FubmVyKSB7Ci0gICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRv
Y3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgbV9wcmVsb2FkU2Nh
bm5lciA9IG1ha2VVbmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50
KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgICAg
IG1fcHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKG1faW5wdXQuY3VycmVudCgpKTsKICAgICAg
ICAgfQogICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3Vt
ZW50KCkpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjppbnNl
cnQoU2VnbWVudGVkU3RyaW5nJiYgc291cmNlKQogICAgICAgICAvLyBDaGVjayB0aGUgZG9jdW1l
bnQud3JpdGUoKSBvdXRwdXQgd2l0aCBhIHNlcGFyYXRlIHByZWxvYWQgc2Nhbm5lciBhcwogICAg
ICAgICAvLyB0aGUgbWFpbiBzY2FubmVyIGNhbid0IGRlYWwgd2l0aCBpbnNlcnRpb25zLgogICAg
ICAgICBpZiAoIW1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIpCi0gICAgICAgICAgICBtX2luc2Vy
dGlvblByZWxvYWRTY2FubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+
KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFj
dG9yKCkpOworICAgICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IG1ha2VVbmlx
dWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1
bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2Fk
U2Nhbm5lci0+YXBwZW5kVG9FbmQoc291cmNlKTsKICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2Fk
U2Nhbm5lci0+c2NhbigqbV9wcmVsb2FkZXIsICpkb2N1bWVudCgpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCmluZGV4IDMwYzVi
NDZkZjEwM2RiZGY2ZjRiN2NlNDA5Y2MzYWExNmM1NDYwMTIuLjZlZjE3MTJiOWQ2M2I3MWFjYjdj
MTY5ZjYyYjQ5YzgyZjMxMDU4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxFbGVtZW50U3RhY2suY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBIVE1MRWxlbWVu
dFN0YWNrOjppbnNlcnRBYm92ZShSZWY8SFRNTFN0YWNrSXRlbT4mJiBpdGVtLCBFbGVtZW50UmVj
b3JkJiByZWMKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICsrbV9zdGFja0RlcHRo
OwotICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRS
ZWNvcmQ+KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSk7CisgICAg
ICAgIHJlY29yZEFib3ZlLT5zZXROZXh0KG1ha2VVbmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92
ZShpdGVtKSwgcmVjb3JkQWJvdmUtPnJlbGVhc2VOZXh0KCkpKTsKICAgICAgICAgcmVjb3JkQWJv
dmUtPm5leHQoKS0+ZWxlbWVudCgpLmJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpw
dXNoQ29tbW9uKFJlZjxIVE1MU3RhY2tJdGVtPiYmIGl0ZW0pCiAgICAgQVNTRVJUKG1fcm9vdE5v
ZGUpOwogCiAgICAgKyttX3N0YWNrRGVwdGg7Ci0gICAgbV90b3AgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdURk1vdmUobV90b3ApKTsKKyAgICBtX3Rv
cCA9IG1ha2VVbmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShtX3Rv
cCkpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcENvbW1vbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCA1M2Ex
NzJkMzNhZmNkYThmZjg4ZDM0NGQ5YzBlZjA5MDNjZGVjYzkyLi4zM2Q3YjNiYjA4YjY1MmQwY2Q2
OWJjZWRmMWY4NjA2MzFhZmFhMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBUb2tl
blByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXIgewogICAgICAgICBpZiAoIUxpbmtMb2Fk
ZXI6OmlzU3VwcG9ydGVkVHlwZSh0eXBlLnZhbHVlKCksIG1fdHlwZUF0dHJpYnV0ZSkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JGb3IobV90YWdJZCksIG1fdXJsVG9M
b2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCB0eXBlLnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1dGUsIG1f
bW9kdWxlU2NyaXB0LCBtX3JlZmVycmVyUG9saWN5KTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0g
bWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBtX3VybFRv
TG9hZCwgcHJlZGljdGVkQmFzZVVSTCwgdHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0cmlidXRlLCBt
X21vZHVsZVNjcmlwdCwgbV9yZWZlcnJlclBvbGljeSk7CiAgICAgICAgIHJlcXVlc3QtPnNldENy
b3NzT3JpZ2luTW9kZShtX2Nyb3NzT3JpZ2luTW9kZSk7CiAgICAgICAgIHJlcXVlc3QtPnNldE5v
bmNlKG1fbm9uY2VBdHRyaWJ1dGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oCmluZGV4IGY3MWIyMWQyNzg5NWU1NzhhYjQ3ZjVjZjU0MDI1ODNlMzYxMjFkMDIuLjNmNzQ2
ZGM2ZDY2N2M0MzcxMWI2OGQwOWI0MjAyZDIzZmYwYzA4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUb2tlbi5oCkBAIC0yMDksNyArMjA5LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRv
a2VuOjpiZWdpbkRPQ1RZUEUoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXpl
ZCk7CiAgICAgbV90eXBlID0gRE9DVFlQRTsKLSAgICBtX2RvY3R5cGVEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxEb2N0eXBlRGF0YT4oKTsKKyAgICBtX2RvY3R5cGVEYXRhID0gbWFrZVVuaXF1ZTxE
b2N0eXBlRGF0YT4oKTsKIH0KIAogaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUo
VUNoYXIgY2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
WFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNw
cAppbmRleCBhYzZlNzk0NDMwMDcwMzY0MjFlYjE2ZGY4M2E5MGQzZDI3NzJmODU2Li4wNjFkOTU2
N2I3ODRkOWIwYmFjZjNmNmRiOWNkZTVhODA2YjAxYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxYU1NJbmZvPiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVl
c3QmIHJlcXVlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYm9vbCBkaWRCbG9ja0Vu
dGlyZVBhZ2UgPSBtX3hzc1Byb3RlY3Rpb24gPT0gWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uOjpC
bG9ja0VuYWJsZWQ7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8WFNTSW5mbz4obV9kb2N1
bWVudFVSTCwgZGlkQmxvY2tFbnRpcmVQYWdlLCBtX2RpZFNlbmRWYWxpZFhTU1Byb3RlY3Rpb25I
ZWFkZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFhTU0luZm8+KG1fZG9jdW1lbnRVUkwsIGRp
ZEJsb2NrRW50aXJlUGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQcm90ZWN0aW9uSGVhZGVyKTsKIH0K
IAogYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJTdGFydFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVx
dWVzdCYgcmVxdWVzdCkKQEAgLTcxMiw3ICs3MTIsNyBAQCBTdWZmaXhUcmVlPEFTQ0lJQ29kZWJv
b2s+KiBYU1NBdWRpdG9yOjpkZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlKCkKICAgICBjb25zdCB1
bnNpZ25lZCBzdWZmaXhUcmVlRGVwdGggPSA1OwogCiAgICAgaWYgKCFtX2RlY29kZWRIVFRQQm9k
eVN1ZmZpeFRyZWUgJiYgbV9kZWNvZGVkSFRUUEJvZHkubGVuZ3RoKCkgPj0gbWluaW11bUxlbmd0
aEZvclN1ZmZpeFRyZWUpCi0gICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3VmZml4VHJlZTxBU0NJSUNvZGVib29rPj4obV9kZWNvZGVkSFRUUEJv
ZHksIHN1ZmZpeFRyZWVEZXB0aCk7CisgICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJl
ZSA9IG1ha2VVbmlxdWU8U3VmZml4VHJlZTxBU0NJSUNvZGVib29rPj4obV9kZWNvZGVkSFRUUEJv
ZHksIHN1ZmZpeFRyZWVEZXB0aCk7CiAgICAgcmV0dXJuIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4
VHJlZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggM2E2MzdkYWVmMDEyNGUyZTRlZDMz
NmI2NjM3NTJkMDAyMmI1YmUwMS4uZDU2NmJjYzc5NGFhNzI0YWJlNjBhMDgwYTNmMmNmOTUxZjQ1
MzdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgUmVuZGVyVGV4dENvbnRy
b2xJbm5lckJsb2NrKiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlbmRlcmVyKCkgY29u
c3QKIE9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSog
c2hhZG93SG9zdFN0eWxlKQogewogICAgIGF1dG8gc3R5bGUgPSBkb3duY2FzdDxIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QoKSkuY3JlYXRlSW5uZXJUZXh0U3R5bGUoKnNo
YWRvd0hvc3RTdHlsZSk7Ci0gICAgcmV0dXJuIEVsZW1lbnRTdHlsZShzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOworICAgIHJldHVybiBFbGVtZW50U3R5bGUo
bWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHlsZSkpKTsKIH0KIAogLy8gTUFSSzog
VGV4dENvbnRyb2xQbGFjZWhvbGRlckVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IGU0MDIwMGE5YTdhMjI1
ZGRmZDg3NDRkOGM5M2JkZTY5MDk2NDcwMDkuLjQ5MzRkNzI5YzE5OGQwODA1OWFjOGM5ZjBiMTc0
YTk1ZTc2ZjcyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
R2VuZXJpY1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmIGN1ZSkK
IFdlYlZUVFBhcnNlciYgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKCkKIHsKICAgICBp
ZiAoIW1fd2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dlYlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlz
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBt
YWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4o
dGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICptX3dlYlZUVFBh
cnNlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRX
ZWJWVFRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJW
VFRUZXh0VHJhY2suY3BwCmluZGV4IDg1NWJiMjM5MjdlYjEwYTM1YTU5ZDEyYmUwZDIzNWE3M2Nh
YmMxMGUuLjEwZmFhMTJmOTBiNDYwYjUwNTZmMjU2N2NjMmQ5ODEyN2Q4ZmFhODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjp+SW5iYW5kV2ViVlRUVGV4
dFRyYWNrKCkgPSBkZWZhdWx0OwogV2ViVlRUUGFyc2VyJiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6
OnBhcnNlcigpCiB7CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAgICAgICAgbV93ZWJWVFRQ
YXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRU
UGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAg
IG1fd2ViVlRUUGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdl
YlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAg
IHJldHVybiAqbV93ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKaW5kZXggOGYyOWM3ZjE2NzlhMGZhMjkxOGRlY2Zh
NTEzZTJkODAyNzFhMzVlMi4uN2ExZTFiYzQ2OTFiMjExNjg4YzNjZjVkYTYxOWFjNjFkYmQ2ZmUw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5j
cHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmly
ZWQoKQogICAgIC8vIDQuIERvd25sb2FkOiBJZiBVUkwgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcs
IHBlcmZvcm0gYSBwb3RlbnRpYWxseSBDT1JTLWVuYWJsZWQgZmV0Y2ggb2YgVVJMLCB3aXRoIHRo
ZQogICAgIC8vIG1vZGUgYmVpbmcgdGhlIHN0YXRlIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgY3Jv
c3NvcmlnaW4gY29udGVudCBhdHRyaWJ1dGUsIHRoZSBvcmlnaW4gYmVpbmcgdGhlCiAgICAgLy8g
b3JpZ2luIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgRG9jdW1lbnQsIGFuZCB0aGUgZGVmYXVsdCBv
cmlnaW4gYmVoYXZpb3VyIHNldCB0byBmYWlsLgotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0VHJhY2tMb2FkZXI+KHN0YXRpY19jYXN0PFRleHRUcmFja0xvYWRlckNsaWVudCY+
KCp0aGlzKSwgc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KCZtX3RyYWNrRWxl
bWVudC0+ZG9jdW1lbnQoKSkpOworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxUZXh0VHJhY2tM
b2FkZXI+KHN0YXRpY19jYXN0PFRleHRUcmFja0xvYWRlckNsaWVudCY+KCp0aGlzKSwgc3RhdGlj
X2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KCZtX3RyYWNrRWxlbWVudC0+ZG9jdW1lbnQo
KSkpOwogICAgIGlmICghbV9sb2FkZXItPmxvYWQobV91cmwsICptX3RyYWNrRWxlbWVudCkpCiAg
ICAgICAgIG1fdHJhY2tFbGVtZW50LT5kaWRDb21wbGV0ZUxvYWQoSFRNTFRyYWNrRWxlbWVudDo6
RmFpbHVyZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQ
SUhvc3QuY3BwCmluZGV4IDAzMTA4MGUxYWI2NmQzMmNjOWMwNzE3OGYwMmY5MzUyM2JjNzA2YjAu
LjkwMjliOTJkOGI4M2YyZDdiZWQ2ZDhlNTQ1NzZjMGExNjhjYTUyNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIFJlZjxDb21tYW5kTGluZUFQSUhvc3Q+IENvbW1hbmRMaW5lQVBJSG9zdDo6Y3JlYXRlKCkK
IH0KIAogQ29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QoKQotICAgIDogbV9p
bnNwZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKSkKKyAg
ICA6IG1faW5zcGVjdGVkT2JqZWN0KG1ha2VVbmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCkpCiB7
CiB9CiAKQEAgLTE5Niw3ICsxOTYsNyBAQCBKU1ZhbHVlIENvbW1hbmRMaW5lQVBJSG9zdDo6d3Jh
cHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogdm9pZCBD
b21tYW5kTGluZUFQSUhvc3Q6OmNsZWFyQWxsV3JhcHBlcnMoKQogewogICAgIG1fd3JhcHBlcnMu
Y2xlYXJBbGxXcmFwcGVycygpOwotICAgIG1faW5zcGVjdGVkT2JqZWN0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKTsKKyAgICBtX2luc3BlY3RlZE9iamVjdCA9IG1ha2VV
bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKaW5kZXggNmMzMWU0OThlNDM0ZDMw
MGIwZjFjNmVhYjg0MzQ2Nzc2Y2YwYTJmYy4uODM4OTA4ZGM5MzZlZmE2YmEyNmM3OTE2NzE0NGRi
N2RlOWUyYWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTg5
LDcgKzg5LDcgQEAgY2xhc3MgRE9NRWRpdG9yOjpJbnNlcnRCZWZvcmVBY3Rpb24gZmluYWwgOiBw
dWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBw
ZXJmb3JtKCkgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPnBhcmVudE5vZGUoKSkg
ewotICAgICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVt
b3ZlQ2hpbGRBY3Rpb24+KCptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlKTsKKyAgICAgICAg
ICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBtYWtlVW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigq
bV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG1fcmVtb3ZlQ2hpbGRBY3Rpb24tPnBlcmZvcm0oKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCk7CkBAIC0zODUsMjcgKzM4NSwyNyBAQCBET01FZGl0b3I6On5ET01FZGl0b3IoKSA9
IGRlZmF1bHQ7CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5zZXJ0QmVmb3JlKE5v
ZGUmIHBhcmVudE5vZGUsIFJlZjxOb2RlPiYmIG5vZGUsIE5vZGUqIGFuY2hvck5vZGUpCiB7Ci0g
ICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8SW5zZXJ0QmVmb3Jl
QWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5vZGUpLCBhbmNob3JOb2RlKSk7CisgICAgcmV0
dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8SW5zZXJ0QmVmb3JlQWN0aW9uPihwYXJl
bnROb2RlLCBXVEZNb3ZlKG5vZGUpLCBhbmNob3JOb2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IERPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQoTm9kZSYgcGFyZW50Tm9kZSwgTm9kZSYgbm9kZSkK
IHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVD
aGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwgbm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShtYWtlVW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPihwYXJlbnROb2RlLCBub2RlKSk7CiB9
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0QXR0cmlidXRlKEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRBdHRyaWJ1dGVBY3Rp
b24+KGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3Jt
KG1ha2VVbmlxdWU8U2V0QXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpOwog
fQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUF0dHJpYnV0ZShFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5w
ZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBu
YW1lKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVtb3ZlQXR0
cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERP
TUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9k
ZSomIG5ld05vZGUpCiB7Ci0gICAgYXV0byBhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNldE91
dGVySFRNTEFjdGlvbj4obm9kZSwgaHRtbCk7CisgICAgYXV0byBhY3Rpb24gPSBtYWtlVW5pcXVl
PFNldE91dGVySFRNTEFjdGlvbj4obm9kZSwgaHRtbCk7CiAgICAgYXV0byYgcmF3QWN0aW9uID0g
KmFjdGlvbjsKICAgICBhdXRvIHJlc3VsdCA9IG1faGlzdG9yeS5wZXJmb3JtKFdURk1vdmUoYWN0
aW9uKSk7CiAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC00MTUsMjIgKzQxNSwy
MiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2Rl
LCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqJgogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0
b3I6Omluc2VydEFkamFjZW50SFRNTChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHdo
ZXJlLCBjb25zdCBTdHJpbmcmIGh0bWwpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3Jt
KHN0ZDo6bWFrZV91bmlxdWU8SW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uPihlbGVtZW50LCB3aGVy
ZSwgaHRtbCkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPEluc2Vy
dEFkamFjZW50SFRNTEFjdGlvbj4oZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsKIH0KIAogRXhjZXB0
aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZXBsYWNlV2hvbGVUZXh0KFRleHQmIHRleHROb2RlLCBj
b25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6
bWFrZV91bmlxdWU8UmVwbGFjZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKKyAg
ICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0
aW9uPih0ZXh0Tm9kZSwgdGV4dCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6
OnJlcGxhY2VDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiBuZXdOb2RlLCBOb2Rl
JiBvbGROb2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5p
cXVlPFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobmV3Tm9kZSks
IG9sZE5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZXBs
YWNlQ2hpbGROb2RlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5ld05vZGUpLCBvbGROb2Rl
KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKE5vZGUm
IG5vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJm
b3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSkpOwor
ICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlv
bj4obm9kZSwgdmFsdWUpKTsKIH0KIAogc3RhdGljIGJvb2wgcG9wdWxhdGVFcnJvclN0cmluZyhF
eGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCwgRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCAyMGRhMzQz
MGMxNWM4NTUxNDg1YzU3MzhjNTQ3ZmEwYzM0MzFhMWJhLi4yZTlkNzU1NjU1YzgzZWY4ODE1OTZh
YWQyMGM5NmUxMGU2ODgyNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcApAQCAtNDAyLDcgKzQwMiw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZ1Rv
U0hBMShTSEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRy
PERPTVBhdGNoU3VwcG9ydDo6RGlnZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChO
b2RlJiBub2RlLCBVbnVzZWROb2Rlc01hcCogdW51c2VkTm9kZXNNYXApCiB7Ci0gICAgYXV0byBk
aWdlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZ2VzdD4oKTsKKyAgICBhdXRvIGRpZ2VzdCA9IG1h
a2VVbmlxdWU8RGlnZXN0PigpOwogICAgIGRpZ2VzdC0+bm9kZSA9ICZub2RlOwogICAgIFNIQTEg
c2hhMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCmluZGV4IDUyMDM3MDZiNTNiMzJiMGJhNGYwZWQ0ZDRiYTQwMGI2Yzc5YjVlMTUuLjYz
ZmYzYWI2MjNhNDQ2Y2Q2MjBlZTQ3ZTM5MjA1NWNlYTUxYTg3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTkzLDEwICs5Mywx
MCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9y
Q2xpZW50KQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6
OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0
SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1
ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6
OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0
ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKLSAgICAsIG1fb3ZlcmxheShzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCisgICAgLCBt
X292ZXJsYXkobWFrZVVuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGll
bnQpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAg
ICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIocGFnZSkKICAgICAsIG1fcGFnZShwYWdlKQpAQCAtMTA2
LDcgKzEwNiw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFn
ZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAKICAgICBhdXRvIHBhZ2VDb250
ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIGNv
bnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRleHQpOwog
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2Vu
dC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9
CkBAIC0xNTMsMzcgKzE1MywzNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxh
enlBZ2VudHMoKQogICAgIGVuc3VyZUluc3BlY3RvckFnZW50KCk7CiAgICAgZW5zdXJlUGFnZUFn
ZW50KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGlt
ZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBh
Z2VSdW50aW1lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAKLSAgICBhdXRvIGRlYnVnZ2VyQWdlbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCk7CisgICAg
YXV0byBkZWJ1Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNv
bnRleHQpOwogICAgIGF1dG8gZGVidWdnZXJBZ2VudFB0ciA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7
CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwogCi0gICAgbV9h
Z2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDU1NB
Z2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdl
TmV0d29ya0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5p
cXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCkpOwogICAgIGVuc3VyZURPTUFnZW50
KCk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIGRlYnVnZ2VyQWdlbnRQdHIpKTsKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+
KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0g
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIGRl
YnVnZ2VyQWdlbnRQdHIpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yV29ya2VyQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1h
a2VVbmlxdWU8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYK
IAotICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gc2NyaXB0
UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2Vu
dD4ocGFnZUNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudChzY3JpcHRQcm9maWxlckFnZW50UHRyLmdldCgpKTsKICAgICBt
X2FnZW50cy5hcHBlbmQoV1RGTW92ZShzY3JpcHRQcm9maWxlckFnZW50UHRyKSk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfVVNBR0UpCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDUFVQcm9maWxl
ckFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPElu
c3BlY3Rvck1lbW9yeUFnZW50PihwYWdlQ29udGV4dCkpOwogI2VuZGlmCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNv
bnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JD
YW52YXNBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZUF1ZGl0QWdlbnQ+KHBhZ2VDb250ZXh0KSk7
CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQ
SUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpCiAg
ICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+aW5pdChtX2luc3RydW1lbnRpbmdBZ2VudHMuY29w
eVJlZigpKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBJbnNwZWN0b3JBZ2VudCYgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JB
Z2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwot
ICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JB
Z2VudD4ocGFnZUNvbnRleHQpOworICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3JBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgICAgICBtX2luc3BlY3RvckFn
ZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yQWdlbnQobV9pbnNwZWN0b3JBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CkBAIC00MzMsNyArNDMzLDcgQEAgSW5z
cGVjdG9yRE9NQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURPTUFnZW50KCkKIHsK
ICAgICBpZiAoIW1faW5zcGVjdG9yRE9NQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4
dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBkb21BZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXkuZ2V0KCkp
OworICAgICAgICBhdXRvIGRvbUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4o
cGFnZUNvbnRleHQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAgICAgIG1faW5zcGVjdG9yRE9NQWdl
bnQgPSBkb21BZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZG9t
QWdlbnQpKTsKICAgICB9CkBAIC00NDQsNyArNDQ0LDcgQEAgSW5zcGVjdG9yUGFnZUFnZW50JiBJ
bnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVQYWdlQWdlbnQoKQogewogICAgIGlmICghbV9pbnNw
ZWN0b3JQYWdlQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENv
bnRleHQoKTsKLSAgICAgICAgYXV0byBwYWdlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1faW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXku
Z2V0KCkpOworICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yUGFn
ZUFnZW50PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7
CiAgICAgICAgIG1faW5zcGVjdG9yUGFnZUFnZW50ID0gcGFnZUFnZW50LmdldCgpOwogICAgICAg
ICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShwYWdlQWdlbnQpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aAppbmRleCAyOGVlNzI3YTM2ZDY2Y2UyMTA5Njk3ODMxYWUwYThhYWM0MjM4NTc1Li42YzFiNTFh
ZGVlOWEzODQyNjMzMzhmNDVkODg4NGE2ZDljMzdlYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTUw
LDYgKzUwLDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCA6IHB1YmxpYyBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2V0dGluZ3MgeworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFNldHRpbmdzKCkgPSBk
ZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIH5TZXR0aW5ncygpID0gZGVmYXVsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAppbmRleCAwMGQ1ZjE4NTJj
ZWJhMjcwYzNhZjgxYzEzMjA5MDA1ZGE3YjExOGE4Li5jODEwM2RkN2RiYjgzMjBlYWIyZTZhZDVl
MzJjMmQ1MmQ3MmIwNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckhpc3RvcnkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rv
ckhpc3Rvcnk6OnBlcmZvcm0oc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4gYWN0aW9uKQogCiB2b2lk
IEluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJsZVN0YXRlKCkKIHsKLSAgICBwZXJmb3JtKHN0
ZDo6bWFrZV91bmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCkpOworICAgIHBlcmZvcm0obWFrZVVu
aXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3Bl
Y3Rvckhpc3Rvcnk6OnVuZG8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDE0OTVmMzllMmE0NWUzYzcyYTk2MTRhZmY1NzllNjRk
ZGY1NWMwYjUuLmRiZTU1NTNmMDEyMTczNGE5NjU5MTM4NDZhYWQ0NmJmMjc3OTczZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIFBhcnNlZFN0eWxlU2hlZXQ6OnNldFNvdXJjZURhdGEoc3Rk
Ojp1bmlxdWVfcHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4gc291cmNlRAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9zb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNl
RGF0YUxpc3Q+KCk7CisgICAgbV9zb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0
YUxpc3Q+KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiB0
byByZXRhaW4gdGhlIG9yaWdpbmFsIGZsYXQgc291cmNlRGF0YSBzdHJ1Y3R1cmUKICAgICAvLyBj
b250YWluaW5nIG9ubHkgc3R5bGUgcnVsZXMsIGV2ZW4gdGhvdWdoIENTU1BhcnNlciBub3cgcHJv
dmlkZXMgdGhlIGZ1bGwgcnVsZSBzb3VyY2UgZGF0YSB0cmVlLgpAQCAtMTMyMCw3ICsxMzIwLDcg
QEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRl
bnRzOjpjcmVhdGUoKTsKLSAgICBhdXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CisgICAgYXV0byBydWxlU291cmNlRGF0YVJl
c3VsdCA9IG1ha2VVbmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwogICAgIAogICAgIENTU1Bh
cnNlckNvbnRleHQgY29udGV4dChwYXJzZXJDb250ZXh0Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVT
aGVldC0+b3duZXJEb2N1bWVudCgpKSk7CiAgICAgU3R5bGVTaGVldEhhbmRsZXIgaGFuZGxlciht
X3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgbV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVu
dCgpLCBydWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkM2I3NTlmMjljY2YxYWUx
ODAyODBkNWUxNzM2NzBkMjljNGY4Y2MxLi5mZDdjYWQzMDc2N2U3NzViMTY3NWVjNDU0ZWY3YTA4
YmIwMzZkNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZwogewogICAgIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0
byByZXNvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElk
LCBsb2FkZXJJZCk7CisgICAgYXV0byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291cmNl
RGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5
cGUpOwogICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RG
TW92ZShyZXNvdXJjZURhdGEpKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZwogewogICAgIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwog
Ci0gICAgYXV0byByZXNvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4o
cmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAgYXV0byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVl
PFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5z
ZXRDYWNoZWRSZXNvdXJjZSgmY2FjaGVkUmVzb3VyY2UpOwogICAgIG1fcmVxdWVzdElkVG9SZXNv
dXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RGTW92ZShyZXNvdXJjZURhdGEpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCA0MzUxZTg3MmE5ZTVhMzY0NzI5ZjViNGZiMjYyMTZjNzMzMDJjOGRkLi4z
NjRhZWE3ZDRiNWQ5MTE3OTMyNzVkNjQ2ZjI5NWU2N2JmMGVlZWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3Ry
dW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdl
YkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRl
bmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZXhl
Y3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCkBAIC02OSw3ICs2OSw3IEBAIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsCiAKICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJB
Z2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFn
ZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5n
ZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9CkBA
IC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0
RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5yZXNldCgpOwogICAgIG1fZXhl
Y3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogCi0gICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IHN0
ZDo6bWFrZV91bmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2Jh
bFNjb3BlKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1Bh
Z2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fZnJvbnRlbmRS
b3V0ZXItPmNvbm5lY3RGcm9udGVuZCgqbV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7CiAgICAg
bV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdl
dCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CkBAIC0xNjQsMTggKzE2NCwxOCBA
QCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogCiAg
ICAgYXV0byB3b3JrZXJDb250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNv
bnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdl
bnQ+KHdvcmtlckNvbnRleHQpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBp
ZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihtX3dvcmtlckdsb2JhbFNjb3BlKSkgewot
ICAgICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyQWdl
bnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8V29ya2VyTmV0d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkp
OworICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+
KHdvcmtlckNvbnRleHQpKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNv
bnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJBdWRp
dEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8
V2ViSGVhcEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VV
bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlckF1ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAog
ICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+Y29tbWFuZExpbmVBUElIb3N0KCkpCiAgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+aW5p
dChtX2luc3RydW1lbnRpbmdBZ2VudHMuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcAppbmRleCBhOGQzYzg5OWMzMjgwYTI4ZTY3MzJjZjg4YWI4NGQwMDBkNDVl
ZDJkLi5mZGYwNDRjNTc5YjM2OGMzMjA1MWI2NWRjNDQwZTM4N2Y2MDE4ZmI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoIkFwcGxpY2F0aW9uQ2FjaGUiX3MsIGNvbnRleHQpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGlj
YXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRp
b25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmls
ZXJBZ2VudC5jcHAKaW5kZXggY2Y5NGNhODA5NmZmNTcxZDc0ZDc3M2IxZjAwMjc1MDU0YzBjZTFm
OS4uMTE2MjRlMjQwOTQ2NGZjMWUxZTY1YTY5OThkYmQxYjA2ODJmMGIyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVBy
b2ZpbGVyQWdlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdl
bnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
Q1BVUHJvZmlsZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpDUFVQ
cm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDRiNjk5NDVlYzcwNjdmOTY0M2U0ODA3MzAz
NDg0MjY4NmQ2MTlmYjguLjQ0ZTljNWFiZWI0Yzk2NmFiYWVhOTQ0YTQwZDVlMDNkNDcyZDExZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JD
U1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYgcnVsZSkKIAogSW5zcGVjdG9yQ1NTQWdl
bnQ6Okluc3BlY3RvckNTU0FnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiQ1NTIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJv
bnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDU1NG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9
IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVNo
ZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkpOworICAgIGF1dG8gcmVz
dWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlU2hl
ZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CiAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2Vu
dDo6dG9FcnJvclN0cmluZyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKIH0KQEAgLTY0Niw3
ICs2NDYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplYwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVl
dCwgY29tcG91bmRJZCwgdGV4dCkpOworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50
LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3Bl
Y3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKICAgICBpZiAocGVyZm9ybVJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFn
ZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9i
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21B
Z2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0UnVsZVNlbGVjdG9y
QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOworICAg
IGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVu
aXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5k
SWQsIHNlbGVjdG9yKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhw
ZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTc1
Nyw3ICs3NTcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFkZFJ1bGVBY3Rpb24+
KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VV
bmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOwogICAg
IGF1dG8mIHJhd0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9t
QWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmIChwZXJm
b3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDliZTA2MTE5
ZmIzMjE5NzAwNzI5NzIyZDgzNmE4MTZiMjVmMWMwMTUuLjBlNTBjNzViYTQ4NzUxNTU2ZTQxMmRj
Yjk3YWQxOTY2OTY1YTk5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0
b3JDYW52YXNBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJDYW52YXMiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNhbnZhc0Jh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCkBAIC00
MzYsNyArNDM2LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0
aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmQKICAgICBpZiAoIWluc3BlY3Rv
ckNhbnZhcy0+Y3VycmVudEZyYW1lSGFzRGF0YSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jb250ZXh0KCkuY2FudmFzQmFz
ZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICAgICAgYXV0byYgcXVldWUg
PSBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCk7Ci0gICAgICAgICAgICBxdWV1ZS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUs
ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0g
aW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKV0geworICAgICAgICAgICAgcXVldWUuYXBwZW5kKG1h
a2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgWyYsIHByb3RlY3RlZEluc3BlY3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZh
cy5jb3B5UmVmKCldIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9
IHByb3RlY3RlZEluc3BlY3RvckNhbnZhcy0+Y2FudmFzRWxlbWVudCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChjYW52YXNFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihjYW52YXNFbGVtZW50
LT5kb2N1bWVudCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggNmMxOTZlMGNjNjgyYjQ0MjU2YzdkZGFhZTA5MGFhMGFhZDU1MzE3ZC4uZjBhMjhjMTMz
MWM1YmIzMDg4ZDUzZTcyNDNkYmFmNGVlYjYzZTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTI4Myw3ICsy
ODMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoRXhjZXB0aW9u
JiYgZXhjZXB0aW9uKQogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBhZ2VB
Z2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIkRPTSJfcywgY29udGV4dCkKICAgICAsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01C
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
KQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1f
b3ZlcmxheShvdmVybGF5KQpAQCAtMzAxLDggKzMwMSw4IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+
SW5zcGVjdG9yRE9NQWdlbnQoKQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1faGlzdG9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9ySGlzdG9yeT4oKTsKLSAgICBtX2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8
RE9NRWRpdG9yPigqbV9oaXN0b3J5KTsKKyAgICBtX2hpc3RvcnkgPSBtYWtlVW5pcXVlPEluc3Bl
Y3Rvckhpc3Rvcnk+KCk7CisgICAgbV9kb21FZGl0b3IgPSBtYWtlVW5pcXVlPERPTUVkaXRvcj4o
Km1faGlzdG9yeSk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9N
QWdlbnQodGhpcyk7CiAgICAgbV9kb2N1bWVudCA9IG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUo
KS5kb2N1bWVudCgpOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICBOb2RlKiBw
YXJlbnQgPSBpbm5lclBhcmVudE5vZGUobm9kZSk7CiAgICAgICAgIGlmICghcGFyZW50KSB7CiAg
ICAgICAgICAgICAvLyBOb2RlIGJlaW5nIHB1c2hlZCBpcyBkZXRhY2hlZCAtPiBwdXNoIHN1YnRy
ZWUgcm9vdC4KLSAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOb2Rl
VG9JZE1hcD4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gbWFrZVVuaXF1ZTxOb2RlVG9J
ZE1hcD4oKTsKICAgICAgICAgICAgIGRhbmdsaW5nTWFwID0gbmV3TWFwLmdldCgpOwogICAgICAg
ICAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5hcHBlbmQobmV3TWFwLnJlbGVhc2UoKSk7CiAg
ICAgICAgICAgICBhdXRvIGNoaWxkcmVuID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKQEAgLTExNzcsNyArMTE3Nyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxIaWdobGlnaHRDb25maWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25m
aWdGcm9tSW5zcGVjdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1
dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7
CisgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4o
KTsKICAgICBib29sIHNob3dJbmZvID0gZmFsc2U7IC8vIERlZmF1bHQ6IGZhbHNlIChkbyBub3Qg
c2hvdyBhIHRvb2x0aXApLgogICAgIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVh
bigic2hvd0luZm8iLCBzaG93SW5mbyk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9
IHNob3dJbmZvOwpAQCAtMTE5NiwxMyArMTE5NiwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVu
YQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nJiwg
aW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IEpTT046Ok9iamVjdCog
Y29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQ
YWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9h
dFF1YWQ+KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgYXV0byBxdWFkID0g
bWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAg
ICAgaW5uZXJIaWdobGlnaHRRdWFkKFdURk1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29sb3Is
IHVzZVBhZ2VDb29yZGluYXRlcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hs
aWdodFF1YWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYgcXVh
ZEFycmF5LCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91
dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8g
cXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigpOworICAgIGF1dG8gcXVhZCA9IG1h
a2VVbmlxdWU8RmxvYXRRdWFkPigpOwogICAgIGlmICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVh
ZC5nZXQoKSkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBRdWFkIGZvcm1hdCJf
czsKICAgICAgICAgcmV0dXJuOwpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpT
T046OkFycmEKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0
ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3Is
IGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29v
cmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlx
dWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBh
cnNlQ29sb3IoY29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBw
YXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT51c2VQYWdlQ29v
cmRpbmF0ZXMgPSB1c2VQYWdlQ29vcmRpbmF0ZXMgPyAqdXNlUGFnZUNvb3JkaW5hdGVzIDogZmFs
c2U7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGln
aHRGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZgogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIGF1
dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7
CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25m
aWc+KCk7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdh
eXMgc2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgogICAgICAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250
ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKQEAgLTEzOTgsNyArMTM5OCw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIG1faW5zcGVjdGVkTm9kZSA9IG5vZGU7CiAK
ICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyJj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmNvbW1hbmRMaW5lQVBJ
SG9zdCgpKQotICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOworICAgICAgICBjb21tYW5k
TGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlTm9k
ZT4obm9kZSkpOwogCiAgICAgbV9zdXBwcmVzc0V2ZW50TGlzdGVuZXJDaGFuZ2VkRXZlbnQgPSBm
YWxzZTsKIH0KQEAgLTIzMTQsNyArMjMxNCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrKQotICAgICAgICBtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1
dGVUYXNrPih0aGlzKTsKKyAgICAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IG1ha2VV
bmlxdWU8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7CiAgICAgbV9yZXZhbGlk
YXRlU3R5bGVBdHRyVGFzay0+c2NoZWR1bGVGb3IoJmVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5jcHAKaW5kZXggZTk3MWE5OWY3MDUyNGQ4MzE4MWFlNzE1ZDgyNjU4ODExZmUwODgw
OC4uODFmMTRkYzE3YmZhMDQ3NDdlM2QyM2U0NTNmNWU0YWY4ZDA5ZmQ4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChQ
YWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET01T
dG9yYWdlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTVN0b3JhZ2VC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
KQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCmluZGV4IGIzN2E1NjBjZTgwNzY4YzY2NDQwODUxNWZiMDU1MTI2MTY1YmVk
ODIuLjM1OGE4NTY1MTJlYTRkNzE5NjMzMmEyMDY5OTBkZTMyNTAwNDEwYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIAogSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRhdGFiYXNlIl9zLCBjb250ZXh0KQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNl
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRj
aGVyKEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRl
eCBlMWUwODJlNDFhZDJkNTI0ZjU3ZWYxMDY0MDI4ODc2MTE1NjgyNGI5Li5iNTk4MmNlZTM3ZTM3
NDQ3MDUzOTQ2YmNmNGM0MzRiNDMxZWY5YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAt
NDgsNyArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJMYXllclRyZWUiX3MsIGNvbnRleHQpCi0g
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TGF5
ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
Y29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmlu
ZGV4IDI5Yzc2ZDBjN2ZlYTkyMmMyYTNkOTk0MTRjOTg2ZWE4ZDI4ZDc3YjUuLjI4MzI5NTFmNTM4
MDEyMWZhNDUyYmZhOGQ0NzBmNGQzNWU3ODliMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3Rvck1lbW9yeUFn
ZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKCJNZW1vcnkiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6Ok1lbW9yeUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggM2U0ZTk2ZWIyMzFhMDU0
YjIxMjEyNDdiYzJjYjA5MTY1ZjAyNjViMy4uNWQwODE2MzgwY2RjNjZjN2Q3OTYwYzEyZDM0OGEw
ZmJmM2Y3YjExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgY2xh
c3MgSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50IHsKIAogSW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJOZXR3b3JrIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1
ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok5ldHdvcmtCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFn
ZXIpCi0gICAgLCBtX3Jlc291cmNlc0RhdGEoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3Vy
Y2VzRGF0YT4oKSkKKyAgICAsIG1fcmVzb3VyY2VzRGF0YShtYWtlVW5pcXVlPE5ldHdvcmtSZXNv
dXJjZXNEYXRhPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMzI5ZTFiMGM1YWQ5MmZiNDUx
ZGYxNzY3MzNhZTJhZTM1OGZiNDkzNy4uYzY0MWE2YTA0ODQxOTMyNjhlMjllOTBmZjAxMjZhYjkx
MWM5MzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzMzLDcgKzMzMyw3IEBAIERvY3VtZW50TG9hZGVy
KiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluCiAKIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KFBhZ2VB
Z2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JP
dmVybGF5KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJQYWdlIl9zLCBjb250
ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQu
aW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CmluZGV4IDNhMzYxZTkxZTZmMmRlYjAwNDJlMThhN2M2NGM3YjUxNmY5YjgwYzUuLjMwZDg2Yzc0
NjNjNDdmNWIzYWQyYjM4Y2Y1ZGUyNDlkNDRlYjlhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApA
QCAtODcsNyArODcsNyBAQCBzdGF0aWMgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKIAog
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChQYWdlQWdlbnRD
b250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUaW1lbGluZSJfcywg
Y29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6VGlt
ZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVj
dGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2Fs
bFN0YWNrRGVwdGgpCiAgICAgLy8gRklYTUU6IEFic3RyYWN0IGF3YXkgcGxhdGZvcm0tc3BlY2lm
aWMgY29kZSBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3
NDggaXMgZml4ZWQuCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2ZyYW1lU3RhcnRPYnNl
cnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRklu
ZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZy
YW1lQmVnaW4pLCBbdGhpc10oKSB7CisgICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVy
OjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkg
ewogICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1Nl
cnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIwMiw3ICsyMDIs
NyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50
KiBtYXhDYWxsU3RhY2tEZXB0aCkKICAgICAgICAgbV9ydW5Mb29wTmVzdGluZ0xldmVsKys7CiAg
ICAgfSk7CiAKLSAgICBtX2ZyYW1lU3RvcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5M
b29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtu
b3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7CisgICAgbV9m
cmFtZVN0b3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2Fz
dDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3Bl
Y3RvckZyYW1lRW5kKSwgW3RoaXNdKCkgewogICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9l
bnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAg
ICAgICAgICAgICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwog
ICAgICAgICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJV
bm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwi
IiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgICAgICBjb25z
b2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICAgICAgICAgICAgICBjb25z
b2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmIHRpdGwKICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAgLy8gRklY
TUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAg
ICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3Qi
X3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIp
OwotICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAg
ICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50
LmNwcAppbmRleCA5MTYxZDg0M2NkMzhlNGQ5NjYxMjZhY2RkMzZlODNkZDE4ZjUxMDAyLi4xZTM5
OGVkZDFhOWVhM2VmMjZiZTA5ZWMwM2Q2YzZjMmNkMzk4ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApA
QCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JX
b3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiV29ya2VyIl9zLCBjb250ZXh0KQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29s
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFn
ZW50LmNwcAppbmRleCAyZWVkMWNlNjBiMzAyMmFkOTgyNGZhNjI4YTM1ZGRjNTQ0NDk2MGQ5Li5j
MjA5NGI5OTJkMzU0MTYwZjE3ZWUyOGY2NDEwYTc5M2RjZGU5ZjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC03Miw3
ICs3Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QKIAogICAgIGlmIChyZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpID49IDQwMCkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEg
c3RhdHVzIG9mICIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICIgKCIsIHJlc3BvbnNlLmh0
dHBTdGF0dXNUZXh0KCksICcpJyk7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjpt
YWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2Fn
ZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCku
c3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAgICAgIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2Fn
ZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlm
aWVyKSk7CiAgICAgfQogfQogCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50
OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBS
ZXNvCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkp
OwogICAgIH0KIAotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVz
c2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCks
IDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAgYWRkTWVzc2FnZVRvQ29u
c29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCks
IGVycm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCmluZGV4IGJiNWQxYmVjNmM2MzIyMzliZWU2NDYz
NDM3YWVmZWQxMmJhNDcxZDUuLjA5Y2I2ZjQ2NjZhYjRjOTFjYmVlMmQwZmNmZGQ0YmE2YTYxYTEz
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2Vu
dC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgc3RydWN0IEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSB7CiB9
OwogCiBjbGFzcyBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVu
dHNUYXNrKFdlYkhlYXBBZ2VudCYpOwogICAgIHZvaWQgYWRkR2FyYmFnZUNvbGxlY3Rpb24oR2Fy
YmFnZUNvbGxlY3Rpb25EYXRhJiYpOwpAQCAtOTYsNyArOTcsNyBAQCB2b2lkIFNlbmRHYXJiYWdl
Q29sbGVjdGlvbkV2ZW50c1Rhc2s6OnRpbWVyRmlyZWQoKQogV2ViSGVhcEFnZW50OjpXZWJIZWFw
QWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9ySGVhcEFnZW50
KGNvbnRleHQpCiAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50
aW5nQWdlbnRzKQotICAgICwgbV9zZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKHN0ZDo6
bWFrZV91bmlxdWU8U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzaz4oKnRoaXMpKQorICAg
ICwgbV9zZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKG1ha2VVbmlxdWU8U2VuZEdhcmJh
Z2VDb2xsZWN0aW9uRXZlbnRzVGFzaz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAK
aW5kZXggNWVhZmI2YTMyODQ2ZTcwMDE1M2FjODI2ODFiN2JlNTBkM2FmZTQ4Yy4uODk4NWJjOTQ1
ZmU3NWUwZTg1MWEzNmRlMzU4NGFiMDQ3MWMwZmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAt
NTcsNyArNTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBQYWdlUnVudGltZUFn
ZW50OjpQYWdlUnVudGltZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpSdW50aW1l
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2Vu
dHMpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdn
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBiMjBjYmJjOTUwNzAyODExYjY1ODlhYzFkZmJkNTcz
MzkxOTNkMzM3Li44MDgyZWUzMWVlYzYwYTJmNjAzMjlkYmFiZDRkOTg0MmY2YTU1ZmZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1
Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCBXb3JrZXJEZWJ1Z2dl
ckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJE
ZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVN
ZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrKCZzdGF0ZSkpKTsKKyAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNv
bGVNZXNzYWdlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0
Q2FsbFN0YWNrKCZzdGF0ZSkpKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRl
LmNwcAppbmRleCBiZDlkNGNhZGVmYjJmYWExZjJlMGIyNTc5NTVhZDUxMjRlMTc5NGVlLi4xZjNm
YWJhMzEyNmYyZTliMzZiODRkMTNlNzNiZjFmZGEzMTc1NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRTdGF0ZS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBMYXlvdXRTdGF0ZTo6bGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IEJveCYgbGF5b3V0Um9vdCkKIERpc3Bs
YXk6OkJveCYgTGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBs
YXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgcmV0dXJuICptX2xheW91dFRvRGlzcGxheUJveC5lbnN1
cmUoJmxheW91dEJveCwgWyZsYXlvdXRCb3hdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5bGUoKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPERpc3BsYXk6OkJveD4obGF5b3V0Qm94LnN0eWxlKCkpOwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKIH0KIApAQCAtMTQwLDEzICsxNDAsMTMgQEAgRm9ybWF0dGluZ1N0YXRlJiBM
YXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRl
ZChjb24KICAgICAgICAgICAgIC8vIHNob3VsZCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGNvbnRl
bnQgaW5zaWRlLgogICAgICAgICAgICAgLy8gPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQiPjwvZGl2
PjxkaXYgc3R5bGU9Im92ZXJmbG93OiBoaWRkZW4iPiA8LSBpcyBhIG5vbi1pbnRydXNpdmUgZmxv
YXQsIGJlY2F1c2Ugb3ZlcmZsb3c6IGhpZGRlbiB0cmlnZ2VycyBuZXcgYmxvY2sgZm9ybWF0dGlu
ZyBjb250ZXh0LjwvZGl2PgogICAgICAgICAgICAgaWYgKGZvcm1hdHRpbmdSb290LmVzdGFibGlz
aGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRl
KCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgq
dGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAKICAgICAgICAgICAgIC8vIE90aGVyd2lz
ZSwgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBpbmhlcml0cyB0aGUgZmxvYXRzIGZyb20gdGhlIHBh
cmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCiAgICAgICAgICAgICAvLyBGaW5kIHRoZSBmb3JtYXR0
aW5nIHN0YXRlIGluIHdoaWNoIHRoaXMgZm9ybWF0dGluZyByb290IGxpdmVzLCBub3QgdGhlIG9u
ZSBpdCBjcmVhdGVzIGFuZCB1c2UgaXRzIGZsb2F0aW5nIHN0YXRlLgogICAgICAgICAgICAgYXV0
byYgcGFyZW50Rm9ybWF0dGluZ1N0YXRlID0gY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0
dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nUm9vdC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7
IAogICAgICAgICAgICAgYXV0byYgcGFyZW50RmxvYXRpbmdTdGF0ZSA9IHBhcmVudEZvcm1hdHRp
bmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFy
ZW50RmxvYXRpbmdTdGF0ZSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgfQogCkBAIC0xNTQsNyArMTU0LDcgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6
Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAg
ICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwgWyZd
IHsKIAogICAgICAgICAgICAgLy8gQmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3Rh
Ymxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZS4KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRo
aXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9y
bWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9
CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVh
dGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICBy
ZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0gewog
CiAgICAgICAgICAgICAvLyBUYWJsZSBmb3JtYXR0aW5nIGNvbnRleHQgYWx3YXlzIGVzdGFibGlz
aGVzIGEgbmV3IGZsb2F0aW5nIHN0YXRlIC1hbmQgaXQgc3RheXMgZW1wdHkuCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdT
dGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpj
cmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNzQsMTggKzE3NCwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9ybWF0dGluZ0NvbnRleHQ+IExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChj
b25zdCBCbwogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGb3Jt
YXR0aW5nQ29udGV4dCgpKTsKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlz
aGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBhdXRvJiBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1h
dHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290
KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250
ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZv
cm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkg
ewogICAgICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tG
b3JtYXR0aW5nQ29udGV4dE9ubHkoKSk7CiAgICAgICAgIGF1dG8mIGJsb2NrRm9ybWF0dGluZ1N0
YXRlID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0
ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgYmxvY2tGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3Qs
IGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRl
eHRSb290LmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGF1
dG8mIHRhYmxlRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8VGFibGVGb3JtYXR0aW5nU3RhdGU+
KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGlu
Z0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5nU3Rh
dGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAg
ICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UnVuLmgKaW5kZXggN2FlM2I0MDlkNzYxMTZmMmU5ZDEzY2MzMWViNmU1NjA2M2IxMDc2Zi4uNzk5
MTYyNzU3NDAxODNmMzUzZjVhZmQ1YjE1MjJlNTY1M2ZjODk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCkBAIC0zNiw3ICszNiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKIAogc3RydWN0IFJ1biB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0cnVjdCBUZXh0Q29udGV4
dCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
CiAgICAgICAgIFRleHRDb250ZXh0KHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYTFjZDZkNmYxYjdl
YjkwZmNjNzkwNWUzMWU5ZjA0ZmUzYmY4MjYwYi4uNTA4ZDY2MTI5ZDE0ODdjNGU4NDQwOTM5M2Rh
MzM0MDkxOWVhN2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAt
MjgxLDcgKzI4MSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxp
bmVDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgIGlmICghdHJlYXRBc0lubGluZUNvbnRhaW5l
cihsYXlvdXRCb3gpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgc3RhcnQgb2YgYW4gaW5saW5lIGNvbnRhaW5lciAoZS5nLiA8c3Bhbj4pLgotICAg
ICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJ
bmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0YXJ0KSk7
CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElu
bGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyU3RhcnQpKTsK
ICAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0
Qm94KTsKICAgICAgICAgICAgIGlmICghY29udGFpbmVyLmhhc0luRmxvd09yRmxvYXRpbmdDaGls
ZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjkyLDE3ICsyOTIsMTcgQEAgdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQoKSBjb25zdAogICAg
ICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gKmxheW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBlbmQgb2YgYW4gaW5saW5lIGNvbnRhaW5lciAoZS5nLiA8
L3NwYW4+KS4KICAgICAgICAgICAgIGlmICh0cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJv
eCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRh
aW5lckVuZCkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVt
KG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250
YWluZXJFbmQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0xpbmVCcmVha0Jv
eCgpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6
bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpIYXJk
TGluZUJyZWFrKSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0
ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6Okhh
cmRMaW5lQnJlYWspKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5n
UG9zaXRpb25lZCgpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJ
dGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpU
eXBlOjpGbG9hdCkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJ
dGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpG
bG9hdCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGxheW91
dEJveC5pc0lubGluZUxldmVsQm94KCkpOwogICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3gu
aGFzVGV4dENvbnRlbnQoKSkKICAgICAgICAgICAgICAgICAgICAgSW5saW5lVGV4dEl0ZW06OmNy
ZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhmb3JtYXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKSwgbGF5
b3V0Qm94KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZvcm1h
dHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5
b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpCb3gpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRC
b3gsIElubGluZUl0ZW06OlR5cGU6OkJveCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBsYXlvdXRCb3gubmV4dEluRmxvd09yRmxvYXRpbmdT
aWJsaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVM
YXlvdXQuY3BwCmluZGV4IGY3NDFkZTQ4OWU5NDI0NjFkNzY5MmUyZTQwNDE1OTM4M2IwYzgxNjAu
LjBhMjEzMDIxM2YxMjRlZWI1ZjdmNzExMmU4ODZkNzEyYzUzMWRhMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcApAQCAtMzk2LDcgKzM5
Niw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRl
RGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNl
dFRvcExlZnQobG9naWNhbFJlY3QudG9wTGVmdCgpKTsKICAgICAgICAgICAgIGRpc3BsYXlCb3gu
c2V0Q29udGVudEJveFdpZHRoKGxvZ2ljYWxSZWN0LndpZHRoKCkpOwogICAgICAgICAgICAgZGlz
cGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0KGxvZ2ljYWxSZWN0LmhlaWdodCgpKTsKLSAgICAg
ICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNw
bGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
SW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29u
c3QgTGluZTo6Q29udGVuCiAgICAgICAgICAgICAgICAgdG9wTGVmdCArPSBHZW9tZXRyeTo6aW5G
bG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGxheW91dFN0YXRlKCksIGxheW91dEJveCk7CiAg
ICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQodG9wTGVmdCk7CiAgICAgICAgICAgICBs
aW5lQm94UmVjdC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgoKSk7Ci0gICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlz
cGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNv
bnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgYXV0byBwcmV2aW91c1J1bkNhbkJlRXh0ZW5k
ZWQgPSBwcmV2aW91c0xpbmVSdW4gJiYgcHJldmlvdXNMaW5lUnVuLT50ZXh0Q29udGV4dCgpID8g
cHJldmlvdXNMaW5lUnVuLT50ZXh0Q29udGV4dCgpLT5jYW5CZUV4dGVuZGVkIDogZmFsc2U7CiAg
ICAgICAgICAgICBhdXRvIHJlcXVpcmVzTmV3UnVuID0gIWluZGV4IHx8ICFwcmV2aW91c1J1bkNh
bkJlRXh0ZW5kZWQgfHwgJmxheW91dEJveCAhPSAmcHJldmlvdXNMaW5lUnVuLT5sYXlvdXRCb3go
KTsKICAgICAgICAgICAgIGlmIChyZXF1aXJlc05ld1J1bikKLSAgICAgICAgICAgICAgICBmb3Jt
YXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihs
b2dpY2FsUmVjdCwgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5zdGFy
dCwgdGV4dENvbnRleHQtPmxlbmd0aCB9KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QsIERp
c3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29udGV4dC0+c3RhcnQsIHRleHRDb250ZXh0
LT5sZW5ndGggfSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byYg
bGFzdERpc3BsYXlSdW4gPSBmb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpLmxhc3QoKTsKICAg
ICAgICAgICAgICAgICBsYXN0RGlzcGxheVJ1bi0+ZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxS
ZWN0LndpZHRoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lSXRlbS5oCmluZGV4IGIwMDEzYjZlZDU2M2JjYmY4MjgxMzkxMzQxZjJkZDU2
MTVlYzUzZWYuLjc5MDYxOTY4MWU2NzUyZDI4NzI0OTM4NjIyZTNhNzRiZTAzM2ZmMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVt
LmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91
dCB7CiAKIGNsYXNzIElubGluZUl0ZW0gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW5saW5lSXRl
bT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xh
c3MgVHlwZSB7IFRleHQsIEhhcmRMaW5lQnJlYWssIEJveCwgRmxvYXQsIENvbnRhaW5lclN0YXJ0
LCBDb250YWluZXJFbmQgfTsKICAgICBJbmxpbmVJdGVtKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBU
eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZS5jcHAKaW5kZXggNGYyMGE2ZmYxZDcwY2UzNDliZGUwZWJlZGZlOGY4MGEzNWU4
NWEyOC4uZWQ2NTIwNWI3ZGI5OWIwZjZhYjEwZjNlZWVhYTA3YzQ0NmI3ZjhkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgTGluZTo6Q29udGVudDo6UnVuOjpSdW4oY29uc3QgSW5saW5l
SXRlbSYgaW5saW5lSXRlbSwgY29uc3QgVGV4dENvbnRleHQmIHRleHRDb24KIAogTGluZTo6TGlu
ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50
cyYgaW5pdGlhbENvbnN0cmFpbnRzLCBTa2lwVmVydGljYWxBbGlnbWVudCBza2lwVmVydGljYWxB
bGlnbWVudCkKICAgICA6IG1fbGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpCi0gICAgLCBtX2NvbnRl
bnQoc3RkOjptYWtlX3VuaXF1ZTxMaW5lOjpDb250ZW50PigpKQorICAgICwgbV9jb250ZW50KG1h
a2VVbmlxdWU8TGluZTo6Q29udGVudD4oKSkKICAgICAsIG1fbG9naWNhbFRvcExlZnQoaW5pdGlh
bENvbnN0cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0KQogICAgICwgbV9iYXNlbGluZSh7IGluaXRpYWxD
b25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5iYXNlbGluZU9mZnNldCwgaW5pdGlhbENvbnN0
cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmhlaWdodCAtIGluaXRpYWxDb25zdHJhaW50cy5oZWln
aHRBbmRCYXNlbGluZS5iYXNlbGluZU9mZnNldCB9KQogICAgICwgbV9pbml0aWFsU3RydXQoaW5p
dGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLnN0cnV0KQpAQCAtMjEzLDcgKzIxMyw3
IEBAIHZvaWQgTGluZTo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91
dFVuaXQgbG9naWNhbFdpZHRoKQogCiB2b2lkIExpbmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNl
KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2lj
YWxSZWN0KQogewotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQt
PnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2lj
YWxSZWN0KSk7CiAgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IGxvZ2ljYWxSZWN0LndpZHRo
KCk7CiB9CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50
KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYQogICAg
IH0KIAogICAgIGF1dG8gdGV4dENvbnRleHQgPSBDb250ZW50OjpSdW46OlRleHRDb250ZXh0IHsg
aW5saW5lSXRlbS5zdGFydCgpLCBpbmxpbmVJdGVtLmlzQ29sbGFwc2VkKCkgPyAxIDogaW5saW5l
SXRlbS5sZW5ndGgoKSwgaXNDb21wbGV0ZWx5Q29sbGFwc2VkLCBpbmxpbmVJdGVtLmlzV2hpdGVz
cGFjZSgpLCBjYW5CZUV4dGVuZGVkIH07Ci0gICAgYXV0byBsaW5lSXRlbSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCB0ZXh0Q29udGV4dCwgbG9naWNhbFJlY3Qp
OworICAgIGF1dG8gbGluZUl0ZW0gPSBtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRl
bSwgdGV4dENvbnRleHQsIGxvZ2ljYWxSZWN0KTsKICAgICBpZiAoaXNUcmltbWFibGUgJiYgIWlz
Q29tcGxldGVseUNvbGxhcHNlZCkKICAgICAgICAgbV90cmltbWFibGVDb250ZW50LmFkZChsaW5l
SXRlbS5nZXQoKSk7CiAKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZE5vblJl
cGxhY2VkSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQg
bAogICAgICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQoaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQo
aW5saW5lSXRlbSkpOwogICAgIH0KIAotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAg
ICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGlu
ZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiAgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IChsb2dp
Y2FsV2lkdGggKyBob3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgaG9yaXpvbnRhbE1hcmdpbi5lbmQp
OwogICAgIG1fdHJpbW1hYmxlQ29udGVudC5jbGVhcigpOwogfQpAQCAtMzIzLDcgKzMyMyw3IEBA
IHZvaWQgTGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayhjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJ
dGVtKQogICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSwgeyB9
KTsKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSk7CiAgICAg
fQotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6
OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5h
cHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7
CiB9CiAKIHZvaWQgTGluZTo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgcnVuSGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCmluZGV4IGZhZjA1
NDc1M2QzNzIyYWJjMDFkOGE3M2Y0Nzk5MzQ5YmNiMWFhMTEuLjczN2EwN2IwMzJhZjZmZjExOTkw
OTZmN2EzNzU3NTdlNmRhOWYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKQEAgLTUyLDggKzUyLDEwIEBAIGNsYXNzIExp
bmUgewogICAgIExpbmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBJbml0aWFsQ29uc3RyYWlu
dHMmLCBTa2lwVmVydGljYWxBbGlnbWVudCk7CiAKICAgICBjbGFzcyBDb250ZW50IHsKKyAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBzdHJ1Y3Qg
UnVuIHsKKyAgICAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgICAgIHN0cnVjdCBUZXh0Q29udGV4dCB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3Rh
cnQgeyAwIH07CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoIHsgMCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0
ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4
dEl0ZW0uY3BwCmluZGV4IGYxMzA4OWE3MDhmM2ZlM2ZmOWI3N2Y3MjA5NmNkYTQyZWYzNmUyMjIu
LjVlNmMyNTZkYjBiMzA5YWFmMWUyNTgyMWYwZTFlMThlNTY0NTJmMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRl
bS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBw
ZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogewogICAgIGF1
dG8gdGV4dCA9IGlubGluZUJveC50ZXh0Q29udGVudCgpOwogICAgIGlmICghdGV4dC5sZW5ndGgo
KSkKLSAgICAgICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgMCwgMCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAg
IHJldHVybiBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihp
bmxpbmVCb3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgYXV0byYgc3R5bGUgPSBpbmxp
bmVCb3guc3R5bGUoKTsKICAgICBhdXRvIHByZXNlcnZlTmV3bGluZSA9IHN0eWxlLnByZXNlcnZl
TmV3bGluZSgpOwpAQCAtOTksMjAgKzk5LDIwIEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0
ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QKICAg
ICB3aGlsZSAoY3VycmVudFBvc2l0aW9uIDwgdGV4dC5sZW5ndGgoKSkgewogICAgICAgICAvLyBT
b2Z0IGxpbmVicmVhaz8KICAgICAgICAgaWYgKGlzU29mdExpbmVCcmVhayh0ZXh0W2N1cnJlbnRQ
b3NpdGlvbl0sIHByZXNlcnZlTmV3bGluZSkpIHsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVu
dFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOworICAgICAgICAgICAgaW5saW5lQ29udGVudC5h
cHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRp
b24sIDEsIHRydWUsIGZhbHNlKSk7CiAgICAgICAgICAgICArK2N1cnJlbnRQb3NpdGlvbjsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc1doaXRlc3BhY2VD
aGFyYWN0ZXIodGV4dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7CiAgICAg
ICAgICAgICBhdXRvIGxlbmd0aCA9IG1vdmVUb05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odGV4
dCwgY3VycmVudFBvc2l0aW9uLCBwcmVzZXJ2ZU5ld2xpbmUpOwogICAgICAgICAgICAgYXV0byBp
c0NvbGxhcHNlZCA9IGNvbGxhcHNlV2hpdGVTcGFjZSAmJiBsZW5ndGggPiAxOwotICAgICAgICAg
ICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4o
aW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgdHJ1ZSwgaXNDb2xsYXBzZWQpKTsK
KyAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0
ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFwc2Vk
KSk7CiAgICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gbGVuZ3RoOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGxlbmd0aCA9IG1vdmVUb05leHRC
cmVha2FibGVQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVCcmVha0l0ZXJhdG9yLCBzdHls
ZSk7Ci0gICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIGZhbHNlLCBmYWxz
ZSkpOworICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJ
dGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsK
ICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICB9CiB9CkBAIC0xMzAsNyAr
MTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRJdGVtPiBJbmxpbmVUZXh0SXRlbTo6
c3BsaXQodW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgdW4KIHsKICAgICBSRUxFQVNFX0FTU0VSVChz
cGxpdFBvc2l0aW9uID49IHRoaXMtPnN0YXJ0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNwbGl0
UG9zaXRpb24gKyBsZW5ndGggPD0gZW5kKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1do
aXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGxheW91dEJveCgpLCBzcGxpdFBvc2l0aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFj
ZSgpLCBpc0NvbGxhcHNlZCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5jcHAKaW5kZXggODA4NGUyYmI2OWU4YzkyYWFhOWI3YmU2ZDhh
MTRiNzc5NTI5MTIwMy4uM2JhZjllYWExZmJhOTJjNzBmNGM2YzczMjk1YjEzOGIzMWJjNWI5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCkBA
IC00NSw3ICs0NSw3IEBAIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRy
aWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsCiAgICAgLCBtX2hhc1JhcmVE
YXRhKGZhbHNlKQogewogICAgIGlmIChpc1JlcGxhY2VkKCkpCi0gICAgICAgIGVuc3VyZVJhcmVE
YXRhKCkucmVwbGFjZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CisgICAg
ICAgIGVuc3VyZVJhcmVEYXRhKCkucmVwbGFjZWQgPSBtYWtlVW5pcXVlPFJlcGxhY2VkPigqdGhp
cyk7CiB9CiAKIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVz
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGNvbnN0IEJveDo6Qm94
UmFyZURhdGEmIEJveDo6cmFyZURhdGEoKSBjb25zdAogQm94OjpCb3hSYXJlRGF0YSYgQm94Ojpl
bnN1cmVSYXJlRGF0YSgpCiB7CiAgICAgc2V0SGFzUmFyZURhdGEodHJ1ZSk7Ci0gICAgcmV0dXJu
ICpyYXJlRGF0YU1hcCgpLmVuc3VyZSh0aGlzLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEJveFJhcmVEYXRhPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpyYXJlRGF0
YU1hcCgpLmVuc3VyZSh0aGlzLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlPEJveFJhcmVEYXRhPigp
OyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgQm94OjpyZW1vdmVSYXJlRGF0YSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAKaW5kZXggYWIyODRlYTA5OWI4ZmEzZmZhNzI3NGUwNmU0Y2VjY2FmODQ3NDMwNy4u
ZjJhZmNhYmQwYTM4MWM2ZDVjOGRhMzlkMzQ2ZTFhZWEzM2Q0N2IyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApA
QCAtMTMwLDI1ICsxMzAsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNy
ZWF0ZUxheW91dEJveChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICBpZiAoaXM8
UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikpIHsKICAgICAgICAgLy8gRklYTUU6IENsZWFybHkg
dGhlcmUgbXVzdCBiZSBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhpcy4KICAgICAgICAgaWYgKHBh
cmVudFJlbmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0g
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94Pihkb3duY2Fz
dDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6
OmNsb25lKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIp
Lm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUo
KSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5h
bFRleHQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFy
ZW50UmVuZGVyZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkpOworICAgICAgICAgICAg
Y2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hp
bGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxp
bmUpKTsKICAgICAgICAgcmV0dXJuIGNoaWxkTGF5b3V0Qm94OwogICAgIH0KIAogICAgIGF1dG8m
IHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGRSZW5kZXJlcik7CiAgICAg
YXV0byBkaXNwbGF5VHlwZSA9IHJlbmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpOwogICAgIGlmIChp
czxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9u
ZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJveD4oZWxl
bWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5
bGUoKSkpOwogCiAgICAgaWYgKGlzPFJlbmRlclRhYmxlPihyZW5kZXJlcikpIHsKICAgICAgICAg
Ly8gQ29uc3RydWN0IHRoZSBwcmluY2lwYWwgdGFibGUgd3JhcHBlciBib3ggKGFuZCBub3QgdGhl
IHRhYmxlIGJveCBpdHNlbGYpLgotICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlw
ZTo6VGFibGVXcmFwcGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CisgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6
RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZVdyYXBwZXJCb3ggfSwg
UmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICB9IGVsc2UgaWYgKGlz
PFJlbmRlclJlcGxhY2VkPihyZW5kZXJlcikpIHsKICAgICAgICAgaWYgKGRpc3BsYXlUeXBlID09
IERpc3BsYXlUeXBlOjpCbG9jaykKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6
OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0g
bWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6
OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAg
ICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICAv
LyBGSVhNRTogV2UgZG9uJ3QgeWV0IHN1cHBvcnQgYWxsIHJlcGxhY2VkIGVsZW1lbnRzIGFuZCB0
aGlzIGlzIHRlbXBvcmFyeSBhbnl3YXkuCiAgICAgICAgIGlmIChjaGlsZExheW91dEJveC0+cmVw
bGFjZWQoKSkKICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpLT5zZXRJbnRy
aW5zaWNTaXplKGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihyZW5kZXJlcikuaW50cmluc2ljU2l6
ZSgpKTsKQEAgLTE2MywxOCArMTYzLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWls
ZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAg
ICAgICAgICAgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5z
dHlsZSgpKTsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VG9wKHsgb2Zmc2V0LT5oZWlnaHQo
KSwgRml4ZWQgfSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldExlZnQoeyBvZmZzZXQtPndp
ZHRoKCksIEZpeGVkIH0pOwotICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92
ZSgqc3R5bGUpKTsKKyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8
Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9
IGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0
cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7
CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVt
ZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHls
ZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxp
bmVCbG9jaykKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25l
KHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6
OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUg
PT0gRGlzcGxheVR5cGU6OlRhYmxlQ2FwdGlvbiB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlw
ZTo6VGFibGVDZWxsKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxl
OjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9
IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRl
clN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZGlz
cGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXAgfHwgZGlzcGxheVR5cGUgPT0g
RGlzcGxheVR5cGU6OlRhYmxlSGVhZGVyR3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5
cGU6OlRhYmxlRm9vdGVyR3JvdXAKICAgICAgICAgICAgIHx8IGRpc3BsYXlUeXBlID09IERpc3Bs
YXlUeXBlOjpUYWJsZVJvdyB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1
bW5Hcm91cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW4pIHsKLSAg
ICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVs
ZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0
eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWlu
ZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRl
cmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
SU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMjEwLDcgKzIx
MCw3IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OmNyZWF0ZVRhYmxlU3RydWN0dXJlKGNvbnN0IFJlbmRl
clRhYmxlJiB0YWJsZVJlbmRlcmVyLCBDb250YWluCiAgICAgICAgIHRhYmxlQ2hpbGQgPSB0YWJs
ZUNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0KIAotICAgIGF1dG8gdGFibGVCb3ggPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxl
bWVudFR5cGU6OlRhYmxlQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZSh0YWJsZVJlbmRlcmVyLnN0
eWxlKCkpKTsKKyAgICBhdXRvIHRhYmxlQm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6
RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJT
dHlsZTo6Y2xvbmUodGFibGVSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgYXBwZW5kQ2hpbGQodGFi
bGVXcmFwcGVyQm94LCAqdGFibGVCb3gpOwogICAgIHdoaWxlICh0YWJsZUNoaWxkKSB7CiAgICAg
ICAgIFRyZWVCdWlsZGVyOjpjcmVhdGVTdWJUcmVlKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0
YWJsZUNoaWxkKSwgKnRhYmxlQm94KTsKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIHByaW50TGF5
b3V0VHJlZUZvckxpdmVEb2N1bWVudHMoKQogICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5k
IGEgd2F5IHRvIG91dHB1dCBnZW9tZXRyeSB3aXRob3V0IGxheW91dCBjb250ZXh0LgogICAgICAg
ICBhdXRvJiByZW5kZXJWaWV3ID0gKmRvY3VtZW50LT5yZW5kZXJWaWV3KCk7CiAgICAgICAgIGF1
dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9jayA9IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRUcmVl
KHJlbmRlclZpZXcpOwotICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gc3RkOjptYWtlX3VuaXF1
ZTxMYXlvdXQ6OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CisgICAgICAg
IGF1dG8gbGF5b3V0U3RhdGUgPSBtYWtlVW5pcXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCppbml0
aWFsQ29udGFpbmluZ0Jsb2NrKTsKICAgICAgICAgbGF5b3V0U3RhdGUtPnNldFF1aXJrc01vZGUo
cmVuZGVyVmlldy5kb2N1bWVudCgpLmluTGltaXRlZFF1aXJrc01vZGUoKSA/IExheW91dFN0YXRl
OjpRdWlya3NNb2RlOjpMaW1pdGVkIDogKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5pblF1aXJrc01v
ZGUoKSA/IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpZZXMgOiBMYXlvdXRTdGF0ZTo6UXVpcmtz
TW9kZTo6Tm8pKTsKICAgICAgICAgbGF5b3V0U3RhdGUtPnVwZGF0ZUxheW91dCgpOwogICAgICAg
ICBzaG93TGF5b3V0VHJlZSgqaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgbGF5b3V0U3RhdGUuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxZDc3ZTRh
ZjFkYmRkZjA0NWE5MmMxYzhhZDNiOTllYWNlYjk3YjUuLmI0OThhMjI0YjE5MGM2Y2U4NDRlYjlk
ZDdlYjliN2ExMDVkNzZkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRl
bnRGaWx0ZXI6OmNyZWF0ZShEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2EKICAgICBpZiAoZmls
dGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9jdW1lbnRM
b2FkZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmls
dGVycyksIGRvY3VtZW50TG9hZGVyKTsKIH0KIAogQ29udGVudEZpbHRlcjo6Q29udGVudEZpbHRl
cihDb250YWluZXImJiBjb250ZW50RmlsdGVycywgRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9h
ZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmNwcAppbmRleCBkMGQ1NGI5N2VhZTcyMDQyNmY5NjFjOGRhZTg5NWUyMDM2OWNlZGNjLi5j
NGNlNWY1NTIxNzBiM2NmYzhiODQxYjU5YTUxMGZkNzVhYTgzZmI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMjA1LDcg
KzIwNSw3IEBAIGJvb2wgdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgaWYgKCFwYXNzZXNBY2Nlc3ND
b250cm9sQ2hlY2socmVzcG9uc2UsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzZWN1cml0eU9y
aWdpbiwgZXJyb3JEZXNjcmlwdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlSXRlbT4oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOwogICAgIGlmICghcmVzdWx0LT5wYXJzZShyZXNwb25zZSkKICAgICAgICAg
fHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QocmVxdWVzdC5odHRwTWV0aG9kKCks
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlcnJvckRlc2NyaXB0aW9uKQogICAgICAgICB8fCAh
cmVzdWx0LT5hbGxvd3NDcm9zc09yaWdpbkhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRz
KCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlcnJvckRlc2NyaXB0aW9uKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZGUwOWU3MDM5OWNjNzQ3ZTg4
NzM2OTc4MzcyNGU2ZGFhOWZjNzg4Yi4uMDQ1NWNhZmM1OWZmN2I2ZWExZjlhMmNkMzkzMWE2OWU5
ZjY5NDQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZUQKICAgICAsIG1fb3JpZ2luYWxT
dWJzdGl0dXRlRGF0YVdhc1ZhbGlkKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAsIG1f
c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpz
dWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpCiAgICAgLCBtX2RhdGFMb2FkVGlt
ZXIoKnRoaXMsICZEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KQot
ICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9u
Q2FjaGVIb3N0PigqdGhpcykpCisgICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0KG1ha2VVbmlx
dWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKSkKIHsKIH0KIApAQCAtMTMzNiw3ICsxMzM2
LDcgQEAgdWludDY0X3QgRG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCkK
ICAgICBpZiAobWFuaWZlc3RVUkwuaXNFbXB0eSgpIHx8ICFtYW5pZmVzdFVSTC5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXV0byBtYW5pZmVzdExvYWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1
c2VDcmVkZW50aWFscyk7CisgICAgYXV0byBtYW5pZmVzdExvYWRlciA9IG1ha2VVbmlxdWU8QXBw
bGljYXRpb25NYW5pZmVzdExvYWRlcj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFs
cyk7CiAgICAgYXV0byogcmF3TWFuaWZlc3RMb2FkZXIgPSBtYW5pZmVzdExvYWRlci5nZXQoKTsK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBuZXh0Q2FsbGJhY2tJRCsrOwogICAgIG1fYXBwbGljYXRp
b25NYW5pZmVzdExvYWRlcnMuc2V0KFdURk1vdmUobWFuaWZlc3RMb2FkZXIpLCBjYWxsYmFja0lE
KTsKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEFyY2hpdmUo
UmVmPEFyY2hpdmU+JiYgYXJjaGl2ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hp
dmVSZXNvdXJjZXMoQXJjaGl2ZSYgYXJjaGl2ZSkKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbikKLSAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAgICAgICBtX2Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24+KCk7CiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRBbGxSZXNvdXJj
ZXMoYXJjaGl2ZSk7CiB9CiAKQEAgLTE0MzYsNyArMTQzNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYgYXJjaGl2ZSkKIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIHJlc291
cmNlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICBt
X2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24+KCk7CisgICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9
IG1ha2VVbmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKICAgICBtX2FyY2hpdmVS
ZXNvdXJjZUNvbGxlY3Rpb24tPmFkZFJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKIH0KIApA
QCAtMTk2Myw3ICsxOTYzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJj
ZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMg
YWJvcnRlZCBieSBjbGVhcmluZyBtX3JlcXVlc3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0CiAgICAgICAgIC8vIGlzIG5vdyBpbiBhIHN0YXRlIHdoZXJlIHN0YXJ0aW5n
IGFuIGVtcHR5IGxvYWQgd2lsbCBiZSBpbmNvbnNpc3RlbnQuIFJlcGxhY2UgaXQgd2l0aAogICAg
ICAgICAvLyBhIG5ldyBBcHBsaWNhdGlvbkNhY2hlSG9zdC4KLSAgICAgICAgbV9hcHBsaWNhdGlv
bkNhY2hlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlz
KTsKKyAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IG1ha2VVbmlxdWU8QXBwbGljYXRp
b25DYWNoZUhvc3Q+KCp0aGlzKTsKICAgICAgICAgbWF5YmVMb2FkRW1wdHkoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTIxMjIsNyArMjEyMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElk
ZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGljb25Mb2FkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CisgICAgYXV0byBpY29u
TG9hZGVyID0gbWFrZVVuaXF1ZTxJY29uTG9hZGVyPigqdGhpcywgaWNvbi51cmwpOwogICAgIGF1
dG8qIHJhd0ljb25Mb2FkZXIgPSBpY29uTG9hZGVyLmdldCgpOwogICAgIG1faWNvbkxvYWRlcnMu
c2V0KFdURk1vdmUoaWNvbkxvYWRlciksIG5ld0NhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGM0NTBjMDg3MGMwZGI5MDAyYjkwNGM3YjZjYmNl
NGM5NjkwMmM2ZGMuLmFjYTM0NTI5ODViNzMxMTliY2IyM2M0M2JhMjNlZWZiNzVhN2EzNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC01ODIsNyArNTgyLDcgQEAg
UGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCkKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlQcm9ncmVzc1RyYWNrZXJDbGllbnQ+IGR1bW15
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJh
Y2tlckNsaWVudCA9ICZkdW1teVByb2dyZXNzVHJhY2tlckNsaWVudC5nZXQoKTsKIAotICAgIHBh
Z2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigpOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50PigpOwogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKHsgfSwgeyB9KTsKICAgICBw
YWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBFbXB0eURh
dGFiYXNlUHJvdmlkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
ZTBmNDYxNDhmMmRmYWE4N2Y2YjI0MjYzN2Q1MDg5MTg1MjBhNjBhMi4uODNiZWIyNzE3ZDMzN2Mz
NDFjMDE1ZWNmNDZkNGYzNzNlMDhiMTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0yNzAsMTAgKzI3MCwxMCBAQCBjbGFzcyBGcmFtZUxvYWRlcjo6RnJhbWVQcm9n
cmVzc1RyYWNrZXIgewogRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lJiBmcmFtZSwgRnJh
bWVMb2FkZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2Ns
aWVudChjbGllbnQpCi0gICAgLCBtX3BvbGljeUNoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2xp
Y3lDaGVja2VyPihmcmFtZSkpCi0gICAgLCBtX2hpc3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxIaXN0
b3J5Q29udHJvbGxlcj4oZnJhbWUpKQorICAgICwgbV9wb2xpY3lDaGVja2VyKG1ha2VVbmlxdWU8
UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQorICAgICwgbV9oaXN0b3J5KG1ha2VVbmlxdWU8SGlzdG9y
eUNvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAsIG1fbm90aWZpZXIoZnJhbWUpCi0gICAgLCBtX3N1
YmZyYW1lTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKKyAg
ICAsIG1fc3ViZnJhbWVMb2FkZXIobWFrZVVuaXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUpKQog
ICAgICwgbV9taXhlZENvbnRlbnRDaGVja2VyKGZyYW1lKQogICAgICwgbV9zdGF0ZShGcmFtZVN0
YXRlUHJvdmlzaW9uYWwpCiAgICAgLCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJk
KQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogICAgIG1fc3Rh
dGVNYWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KTsKIAogICAgIG1fbmV0d29ya2luZ0NvbnRleHQgPSBtX2NsaWVu
dC5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwotICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CisgICAgbV9wcm9n
cmVzc1RyYWNrZXIgPSBtYWtlVW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3Qg
VVJMJikKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhl
c2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQogICAgIG1fbmVlZHNDbGVhciA9IHRydWU7CiAKICAg
ICBtX25ldHdvcmtpbmdDb250ZXh0ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQo
KTsKLSAgICBtX3Byb2dyZXNzVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9ncmVz
c1RyYWNrZXI+KG1fZnJhbWUpOworICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxG
cmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCkBAIC0yNjc4LDcgKzI2NzgsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbigpCiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NpbmctdGhlLXdlYi5odG1sI25hdmlnYXRlCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE5hdmlnYXRpb25EaXNhYmxlcj4gbmF2aWdhdGlvbkRpc2FibGVyOwogICAg
IGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdGlvbkRpc2FibGVyPigmbV9mcmFtZSk7CisgICAgICAg
IG5hdmlnYXRpb25EaXNhYmxlciA9IG1ha2VVbmlxdWU8TmF2aWdhdGlvbkRpc2FibGVyPigmbV9m
cmFtZSk7CiAKICAgICAvLyBBbnkgc3ViZnJhbWUgaW5zZXJ0ZWQgYnkgdW5sb2FkIGV2ZW50IGhh
bmRsZXJzIGV4ZWN1dGVkIGluIHRoZSBsb29wIGJlbG93IHdpbGwgbm90IGdldCB1bmxvYWRlZAog
ICAgIC8vIGJlY2F1c2Ugd2UgY3JlYXRlIGEgY29weSBvZiB0aGUgc3ViZnJhbWVzIGxpc3QgYmVm
b3JlIGxvb3BpbmcuIFRoZXJlZm9yZSwgaXQgd291bGQgYmUgdW5zYWZlIHRvCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDhlM2E0NmI1MTBhOTk4MGMyYWZiODBhMzQ0OGE0OTg5
ZWFjMTllMTkuLjVmZmY2N2Q5NDJlYmU5MWUwM2E1Mjk2ZTZlOWRhMjRkYjNiN2NjYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC05Niw2ICs5Niw3IEBAIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNSZWxvYWQoRnJhbWVMb2FkVHlwZSk7CiB1c2luZyBDb250ZW50UG9saWN5RGVj
aXNpb25GdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChQb2xpY3lBY3Rpb24sIFBvbGljeUNo
ZWNrSWRlbnRpZmllcik+OwogCiBjbGFzcyBGcmFtZUxvYWRlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhbWVMb2FkZXIpOwogcHVi
bGljOgogICAgIEZyYW1lTG9hZGVyKEZyYW1lJiwgRnJhbWVMb2FkZXJDbGllbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBjZGY2NDk1MjZmZTNkMWYzMzI4ZDZlMzZj
MjAxMDg3YzMxZjE2NTViLi40MDhjNTM2NDI5ZTNiMDg3Nzk4ZWI5N2U3Njg2NGNjOTQ4NjY2N2Fh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC0xNDIsMjIgKzE0MiwyMiBA
QCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IGNyZWF0
ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbgogewogICAgIHN3aXRjaCAocmVzb3VyY2UudHlwZSgp
KSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50
Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNvdXJjZSkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZEltYWdlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93
bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
VHlwZTo6U2NyaXB0OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9h
ZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJl
c291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJl
c291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFNjcmlwdD4ocmVzb3VyY2UpKTsK
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0OgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZFN0eWxlUmVzb3VyY2VDbGllbnQ+KGxv
YWRlciwgZG93bmNhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVzb3VyY2UpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRTdHlsZVJlc291cmNlQ2xpZW50Pihsb2FkZXIs
IGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxMaW5rUHJlbG9hZEZvbnRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxD
YWNoZWRGb250PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJl
bG9hZEZvbnRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRGb250PihyZXNv
dXJjZSkpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBjYXNlIENhY2hlZFJlc291cmNl
OjpUeXBlOjpUZXh0VHJhY2tSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2Fj
aGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5r
UHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRUZXh0
VHJhY2s+KHJlc291cmNlKSk7CiAjZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBl
OjpNZWRpYVJlc291cmNlOgogICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5tZWRpYVByZWxvYWRpbmdFbmFibGVkKCkpOwogICAgICAgICBGQUxM
VEhST1VHSDsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpSYXdSZXNvdXJjZToKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRSYXdSZXNvdXJjZUNsaWVu
dD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVzb3VyY2UpKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRSYXdSZXNvdXJjZUNsaWVudD4obG9hZGVy
LCBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hl
ZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2U6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
VHlwZTo6SWNvbjoKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25EaXNhYmxlci5oCmluZGV4IDAyY2M3ZDEyMGNhNGJjZmYzNTI1YzhmNzQ5Y2M0
MTgwZmU2ZDQ1ZTIuLjhhZTRiMzFiOGI2OWY5OGQwMWFkYTc4ODk5YTk4YmQxMWRkNDI3M2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKQEAgLTMwLDYgKzMw
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmF2aWdhdGlvbkRpc2FibGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXZpZ2F0aW9uRGlz
YWJsZXIoRnJhbWUqIGZyYW1lKQogICAgICAgICA6IG1fZnJhbWUoZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggNTU4Yzc4MDQ5NTdl
Yzg4Mjg4MThlZjU2MTliZjk4M2QzZjk0MGE1NS4uM2MyYzI1MmFhNTFiOTY5Mjk1ZWNmMTQ4MTI1
NGEzMjQwZWM0MmE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6
c2NoZWR1bGVSZWRpcmVjdChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50LCBkb3VibGUKICAg
ICAvLyBXZSB3YW50IGEgbmV3IGJhY2svZm9yd2FyZCBsaXN0IGl0ZW0gaWYgdGhlIHJlZnJlc2gg
dGltZW91dCBpcyA+IDEgc2Vjb25kLgogICAgIGlmICghbV9yZWRpcmVjdCB8fCBkZWxheSA8PSBt
X3JlZGlyZWN0LT5kZWxheSgpKSB7CiAgICAgICAgIGF1dG8gbG9ja0JhY2tGb3J3YXJkTGlzdCA9
IGRlbGF5IDw9IDEgPyBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgOiBMb2NrQmFja0ZvcndhcmRM
aXN0OjpObzsKLSAgICAgICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWRp
cmVjdD4oaW5pdGlhdGluZ0RvY3VtZW50LCBkZWxheSwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0ZvcndhcmRMaXN0
KSk7CisgICAgICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGluaXRp
YXRpbmdEb2N1bWVudCwgZGVsYXksICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCksIHVybCwgTG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJkTGlzdCkpOwogICAgIH0K
IH0KIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1
bGVMb2NhdGlvbkNoYW5nZShEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50LCBTCiAgICAgLy8g
VGhpcyBtYXkgaGFwcGVuIHdoZW4gYSBmcmFtZSBjaGFuZ2VzIHRoZSBsb2NhdGlvbiBvZiBhbm90
aGVyIGZyYW1lLgogICAgIGJvb2wgZHVyaW5nTG9hZCA9ICFsb2FkZXIuc3RhdGVNYWNoaW5lKCku
Y29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCk7CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1h
a2VfdW5pcXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZz
ZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIGR1cmluZ0xvYWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgc2No
ZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3Vt
ZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFj
a0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwog
fQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oUmVm
PEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3Npb24pCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKFJlZjxGb3JtU3VibWlz
c2lvbj4mJiBzdWJtaXNzaW8KICAgICAgICAgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IExvY2tCYWNr
Rm9yd2FyZExpc3Q6OlllczsKICAgICB9CiAgICAgCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3Vu
aXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lvbj4oV1RGTW92ZShzdWJtaXNzaW9uKSwgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2No
ZWR1bGVkRm9ybVN1Ym1pc3Npb24+KFdURk1vdmUoc3VibWlzc2lvbiksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIGR1cmluZ0xvYWQpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hl
ZHVsZVJlZnJlc2goRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkKQEAgLTQ3OSw3ICs0Nzks
NyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChEb2N1bWVudCYg
aW5pdGlhdGluZ0RvY3VtZW50KQogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZnJlc2g+KGlu
aXRpYXRpbmdEb2N1bWVudCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwg
dXJsLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOworICAgIHNjaGVkdWxl
KG1ha2VVbmlxdWU8U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGluZ0RvY3VtZW50LCAmbV9mcmFt
ZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1fZnJhbWUubG9hZGVyKCkub3V0
Z29pbmdSZWZlcnJlcigpKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1
bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCkBAIC00OTgsMTMgKzQ5OCwxMyBAQCB2b2lk
IE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBz
KQogICAgIH0KIAogICAgIC8vIEluIGFsbCBvdGhlciBjYXNlcywgc2NoZWR1bGUgdGhlIGhpc3Rv
cnkgdHJhdmVyc2FsIHRvIG9jY3VyIGFzeW5jaHJvbm91c2x5LgotICAgIHNjaGVkdWxlKHN0ZDo6
bWFrZV91bmlxdWU8U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0ZXBzKSk7CisgICAgc2No
ZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbj4oc3RlcHMpKTsKIH0K
IAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVBhZ2VCbG9jayhEb2N1bWVudCYg
b3JpZ2luRG9jdW1lbnQpCiB7CiAgICAgaWYgKHNob3VsZFNjaGVkdWxlTmF2aWdhdGlvbigpKQot
ICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3Jp
Z2luRG9jdW1lbnQpKTsKKyAgICAgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRQYWdl
QmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6
dGltZXJGaXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIu
aAppbmRleCBhMmRkYWNlMjhmMDdjMzkxZmUyNGUxOTE4ZDI1NGE1MDAyZmFiNDc2Li45N2MyM2Ix
NTA5MmJmMzkzYjMxZDIwYzhmMzRkMjU3NzI2MzFjYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgU2VjdXJp
dHlPcmlnaW47CiBlbnVtIGNsYXNzIE5ld0xvYWRJblByb2dyZXNzIDogYm9vbCB7IE5vLCBZZXMg
fTsKICAgICAKIGNsYXNzIE5hdmlnYXRpb25TY2hlZHVsZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IE5hdmlnYXRpb25TY2hlZHVsZXIoRnJh
bWUmKTsKICAgICB+TmF2aWdhdGlvblNjaGVkdWxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UHJvZ3Jlc3NUcmFja2VyLmNwcAppbmRleCBlMTdhOWRjNzJkZTAzN2M5NjM0YmMxY2M5M2MyYzFh
NzdhODZiZmEzLi4yODE3YTc2NjY0NTdiMjM5NzNhNjhmY2Y3YmMwMTgwYzEyYmY1Y2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcApAQCAtMjAxLDcgKzIwMSw3
IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlCiAKICAgICBhdXRvJiBpdGVtID0gbV9wcm9ncmVz
c0l0ZW1zLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KCFpdGVtKSB7Ci0gICAgICAgIGl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzSXRlbT4o
ZXN0aW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgaXRlbSA9IG1ha2VVbmlxdWU8UHJvZ3Jlc3NJdGVt
Pihlc3RpbWF0ZWRMZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKaW5kZXggZWE1ZGJmYmFhYjIw
YmZkNDNkZWFjZjFlNzc2MTFjMzQzM2FiYWI4My4uODI0NmJiMDcwNmNkMGMwNzFmODk5NjI4OTg2
YTViYTUxYzQ4YjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VE
ZWNvZGVyLmNwcApAQCAtNTM1LDcgKzUzNSw3IEBAIGJvb2wgVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y2hlY2tGb3JIZWFkQ2hhcnNldChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuLCBib29sCiAg
ICAgaWYgKG1fY29udGVudFR5cGUgPT0gWE1MKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IG1fY2hhcnNldFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTE1ldGFDaGFyc2V0UGFyc2Vy
PigpOworICAgIG1fY2hhcnNldFBhcnNlciA9IG1ha2VVbmlxdWU8SFRNTE1ldGFDaGFyc2V0UGFy
c2VyPigpOwogICAgIHJldHVybiBjaGVja0Zvck1ldGFDaGFyc2V0KGRhdGEsIGxlbik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggY2E5ZTZjNDM0
M2Q3NDAxMDU1M2E5ZTEwZmE2NTYzZWU1MjM5MWJiZS4uZmE5MjZlYTA2MmFkZmYyMDU3MGM4YTM2
OTEyNDY3MmI5ZWY1NjZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRl
ci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdD
dWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFtX2N1ZVBhcnNlcikKLSAgICAgICAgbV9jdWVQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIG1fY3VlUGFyc2VyID0gbWFrZVVuaXF1
ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgd2hpbGUgKG1fcGFyc2VPZmZzZXQgPCBi
dWZmZXItPnNpemUoKSkgewogICAgICAgICBhdXRvIGRhdGEgPSBidWZmZXItPmdldFNvbWVEYXRh
KG1fcGFyc2VPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IGExMjYzZTJmMDQ1NzRiNGYwZWU3M2MwNGU4YjYyZjVjODA3
MmE3NTguLjc3NTMyZjg2MTM0ZTA0M2FkMzdkM2Y1OTk5OGE2ZjU3YTQyNDE3NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTEx
NSwxMSArMTE1LDExIEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgQVNTRVJUKGNvbnRl
bnRTZWN1cml0eVBvbGljeSk7CiAKICAgICBhdXRvIHNlY3VyaXR5T3JpZ2luQ29weSA9IHNlY3Vy
aXR5T3JpZ2luLT5pc29sYXRlZENvcHkoKTsKLSAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGlj
eUNvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2Nv
cGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOworICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5
Q29weSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihnbG9iYWxTY29wZS51cmwo
KS5pc29sYXRlZENvcHkoKSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVN0
YXRlRnJvbShjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGlj
eUNvcHktPmNvcHlVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0U3RhdGVGcm9tKCpjb250ZW50U2VjdXJp
dHlQb2xpY3kpOwogCi0gICAgYXV0byBvcHRpb25zQ29weSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9h
ZGVyVGFza09wdGlvbnM+KG9wdGlvbnMsIHJlcXVlc3QuaHR0cFJlZmVycmVyKCkuaXNOdWxsKCkg
PyBvdXRnb2luZ1JlZmVycmVyIDogcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgV1RGTW92ZShzZWN1
cml0eU9yaWdpbkNvcHkpKTsKKyAgICBhdXRvIG9wdGlvbnNDb3B5ID0gbWFrZVVuaXF1ZTxMb2Fk
ZXJUYXNrT3B0aW9ucz4ob3B0aW9ucywgcmVxdWVzdC5odHRwUmVmZXJyZXIoKS5pc051bGwoKSA/
IG91dGdvaW5nUmVmZXJyZXIgOiByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luQ29weSkpOwogCiAgICAgLy8gQWxsIGxvYWRzIHN0YXJ0IG91dCBhcyBEb2N1bWVu
dC4gSW5zaWRlIFdvcmtlclRocmVhZGFibGVMb2FkZXIgd2UgdXBncmFkZSB0aGlzIHRvIGEgV29y
a2VyIGxvYWQuCiAgICAgQVNTRVJUKG9wdGlvbnNDb3B5LT5vcHRpb25zLmluaXRpYXRvckNvbnRl
eHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6RG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBmOTdlYjAw
NDI1YmQyOWIzY2I2YmNiMzQ1ZmJmZDY1MjI0MDhmOGNlLi5iYmE5MTA0MTkxNTRlY2Y0M2MxMjJl
MmQ5MGNmODY0NTU5N2E5OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNDIzLDcgKzQyMyw3IEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoTm9kZSYgbm9kZSwg
V1RGOjpGdW5jdGlvbjxib29sCiAgICAgLy8gYnV0IHdlIGNhbiBhcHByb3hpbWF0ZSB0aGF0IGJ5
IGNoZWNraW5nIGlmIHNjcmlwdGluZyBpcyBlbmFibGVkIHJpZ2h0IG5vdy4KICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPFF1YWxpZmllZE5hbWU+PiB0YWdOYW1lc1RvRmlsdGVyOwogICAgIGlm
IChmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCkuaXNTY3JpcHRFbmFi
bGVkKCkpIHsKLSAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFF1YWxpZmllZE5hbWU+PigpOworICAgICAgICB0YWdOYW1lc1RvRmlsdGVyID0gbWFrZVVu
aXF1ZTxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+KCk7CiAgICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIt
PmFwcGVuZChIVE1MTmFtZXM6Om5vc2NyaXB0VGFnKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDgzNjhhOTU3MDVlMzE5MmQxZjgx
N2ZmMmVjZDY4MzdlM2Y5ZTEzNWQuLmVmOTNiMzUxZTc5MWQ1MjdkYWU4MGY4N2M1MjVhN2RjMTRl
N2U0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIG1faW1hZ2VPYnNlcnZlci0+Y2Fj
aGVkSW1hZ2VzKCkuYWRkKHRoaXMpOwogCiAgICAgaWYgKG1faW1hZ2UgJiYgaXM8U1ZHSW1hZ2U+
KCptX2ltYWdlKSkKLSAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAgIG1f
c3ZnSW1hZ2VDYWNoZSA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0lt
YWdlPigqbV9pbWFnZSkpOwogfQogCiB2b2lkIENhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKQEAgLTM1Nyw3ICszNTcsNyBAQCBpbmxpbmUgdm9p
ZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogCiAgICAgaWYgKG1faW1hZ2UpIHsKICAgICAg
ICAgaWYgKGlzPFNWR0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAgICAgICBtX3N2Z0ltYWdlQ2Fj
aGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4o
Km1faW1hZ2UpKTsKKyAgICAgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IG1ha2VVbmlxdWU8U1ZH
SW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOwogCiAgICAgICAgIC8v
IFNlbmQgcXVldWVkIGNvbnRhaW5lciBzaXplIHJlcXVlc3RzLgogICAgICAgICBpZiAobV9pbWFn
ZS0+dXNlc0NvbnRhaW5lclNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggYmU2MTgzYWJmYTU5ZDVjOGUxNjJmZWMx
ZDY1NTI0NTIzYWRlMjc4Yy4uZjlhNzVmMzU0NTI3NjkwMmE5ZTRhNWMzNWI2YWM2YjFmMTUwYzMw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXIKICAgICAg
ICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVz
cG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlIHsKICAgICAgICAg
bV9yZWRpcmVjdENoYWluLmFwcGVuZChSZWRpcmVjdFBhaXIocmVxdWVzdCwgcmVzcG9uc2UpKTsK
LSAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92ZShyZXF1ZXN0KSwgc3RkOjptYWtlX3VuaXF1ZTxS
ZXNvdXJjZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNwb25zZV0gKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICBpdGVyYXRlQ2xpZW50cyhDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4obV9jbGllbnRzKSwgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBXVEZNb3ZlKHJlcXVl
c3QpLCBtYWtlVW5pcXVlPFJlc291cmNlUmVzcG9uc2U+KHJlc3BvbnNlKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3BvbnNl
XSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBDYWNo
ZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBlNDMwZTQ0
N2FjNDk0NjM2Yzk4NGU3NGQ0MGI5MWU2NWNkZWJiNTBiLi4wNTY3ZDFkNWRlOGM2ZjEzZTE4Njg0
NGFlZDc1NTc1Y2YxN2UxNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKQEAgLTU0Niw3ICs1NDYsNyBAQCBib29sIENhY2hlZFJlc291cmNl
OjphZGRDbGllbnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgICAgICAv
LyBUaGVyZWZvcmUsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IHNlbmRpbmcgY2FsbGJhY2tzIG9u
IGEgY2FjaGUgaGl0IGxpa2Ugb3RoZXIgQ2FjaGVkUmVzb3VyY2VzLAogICAgICAgICAvLyB3ZSBz
Y2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZCBlbnN1cmUgd2UgbmV2ZXIgZmluaXNoIHN5bmNocm9u
b3VzbHkuCiAgICAgICAgIEFTU0VSVCghbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5jb250YWlu
cygmY2xpZW50KSk7Ci0gICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKCZjbGll
bnQsIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2s+KCp0aGlzLCBjbGllbnQpKTsKKyAgICAgICAg
bV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoJmNsaWVudCwgbWFrZVVuaXF1ZTxDYWxsYmFj
az4oKnRoaXMsIGNsaWVudCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIyOWExNDJk
NjQ0MTNjZWJhZWZhYzUyNzEwYmIyYmY4ZGRlZGY3YmUuLjJmZmUyYjQxODc5OTdlZWZkZDQxNWUw
ZWRiZTgwMmRjMTcyY2FlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCkBAIC0zODEsOSArMzgxLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2Ugewog
fTsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrIHsKLSNpZiAhQ09NUElMRVIoTVNW
QykKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSNlbmRpZgogcHVibGljOgogICAgIENh
bGxiYWNrKENhY2hlZFJlc291cmNlJiwgQ2FjaGVkUmVzb3VyY2VDbGllbnQmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggODQzYTlkMWY5ZDZjODVmMTAwMGEyYzQwZjE5NjRiNDdhMmViMWM3YS4uYjM0YjhmZDM1
YzEwNzdhNTQ1MmFiYjM0MzIzNjFiNGNjM2QxMWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03OTEsNyArNzkx
LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAgICAvLyBFbnRyeSBwb2ludCB0byBodHRw
czovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaC4KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVzb3VyY2VSZXF1ZXN0PiBvcmlnaW5hbFJlcXVlc3Q7CiAgICAgaWYgKENhY2hlZFJlc291
cmNlOjpzaG91bGRVc2VQaW5nTG9hZCh0eXBlKSB8fCByZXF1ZXN0Lm9wdGlvbnMoKS5kZXN0aW5h
dGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykgewotICAgICAg
ICBvcmlnaW5hbFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IG1ha2VV
bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKICAgICAg
ICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBSZWZlcnJlcigpOwogICAgICAgICBvcmlnaW5h
bFJlcXVlc3QtPmNsZWFySFRUUE9yaWdpbigpOwogICAgIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBA
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpwcmVsCiAgICAgICAgIHJlc291cmNlVmFsdWUtPmluY3JlYXNl
UHJlbG9hZENvdW50KCk7CiAKICAgICAgICAgaWYgKCFtX3ByZWxvYWRzKQotICAgICAgICAgICAg
bV9wcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2Uq
Pj4oKTsKKyAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENh
Y2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgIG1fcHJlbG9hZHMtPmFkZChyZXNvdXJjZVZhbHVl
LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNlOwpAQCAtMTQzMyw3ICsxNDMzLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2FkcyhDbGVhclByZWxvYWRz
TW9kZSBtb2RlKQogICAgICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAgICAgICBpZiAobW9kZSA9
PSBDbGVhclByZWxvYWRzTW9kZTo6Q2xlYXJTcGVjdWxhdGl2ZVByZWxvYWRzICYmIHJlc291cmNl
LT5pc0xpbmtQcmVsb2FkKCkpIHsKICAgICAgICAgICAgIGlmICghcmVtYWluaW5nTGlua1ByZWxv
YWRzKQotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xpbmtQcmVsb2FkcyA9IHN0ZDo6bWFrZV91
bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgICAgICBy
ZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291
cmNlKj4+KCk7CiAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMtPmFkZChyZXNvdXJj
ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAppbmRl
eCA3MGNiMWFmYTRjZjFkM2E2ZTY0MmE4YWU5ZGI4NDQ4Zjg0ZDE0YmQ2Li4yMmFlNzJkOGZmNWVm
NzI5YTE2NGM3NmE0ZmRiYjBlNDlkNzFmNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaApAQCAtMzUsNyAr
MzUsOCBAQCBjbGFzcyBDYWNoZWRTVkdEb2N1bWVudDsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9h
ZGVyOwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAotY2xhc3MgQ2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UgOiBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgeworY2xhc3Mg
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1l
bnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBkM2I4MDUxNDIzYzNmYzUyNGJk
OGI2ZjU1ZjM1YTZhYzIyMzBiMjAyLi4zZGVhZDQ2YzFkNGQ3OGNmN2NkZjAzYWZmY2JlZjM5Mjc4
MjYzYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
QEAgLTg2LDcgKzg2LDcgQEAgYXV0byBNZW1vcnlDYWNoZTo6ZW5zdXJlU2Vzc2lvblJlc291cmNl
TWFwKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gQ2FjaGVkUmUKICAgICBBU1NFUlQoc2Vz
c2lvbklELmlzVmFsaWQoKSk7CiAgICAgYXV0byYgbWFwID0gbV9zZXNzaW9uUmVzb3VyY2VzLmFk
ZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIW1hcCkKLSAg
ICAgICAgbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZU1hcD4oKTsKKyAgICAg
ICAgbWFwID0gbWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZU1hcD4oKTsKICAgICByZXR1cm4gKm1h
cDsKIH0KIApAQCAtMjE2LDcgKzIxNiw3IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9D
YWNoZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICBy
ZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsgLy8gUmVt
b3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgogCiAgICAgYXV0byBiaXRtYXBJ
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAg
IGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJp
dG1hcEltYWdlLnB0cigpLCBzZXNzaW9uSUQsIGNvb2tpZUphciwgZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24pOworICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBtYWtlVW5pcXVlPENhY2hlZEltYWdlPih1
cmwsIGJpdG1hcEltYWdlLnB0cigpLCBzZXNzaW9uSUQsIGNvb2tpZUphciwgZG9tYWluRm9yQ2Fj
aGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2UtPmFkZENsaWVudChkdW1teUNhY2hlZElt
YWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFn
ZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC00NzMsNyArNDczLDcgQEAgYXV0byBNZW1vcnlDYWNoZTo6
bHJ1TGlzdEZvcihDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIC0+IExSVUxpc3QmCiAKICAgICBt
X2FsbFJlc291cmNlcy5yZXNlcnZlQ2FwYWNpdHkocXVldWVJbmRleCArIDEpOwogICAgIHdoaWxl
IChtX2FsbFJlc291cmNlcy5zaXplKCkgPD0gcXVldWVJbmRleCkKLSAgICAgICAgbV9hbGxSZXNv
dXJjZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TFJVTGlzdD4oKSk7CisgICAg
ICAgIG1fYWxsUmVzb3VyY2VzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPExSVUxpc3Q+KCkp
OwogICAgIHJldHVybiAqbV9hbGxSZXNvdXJjZXNbcXVldWVJbmRleF07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKaW5kZXggNjE4ZTk0Mjk1MDE3ZGMzYjgz
MDM2NWMxMTY3NjE1MzhiMWRiNjIzOC4uMTUwM2Q3OGUzYWY1OTk0OTU0YjMzYzJhODA4NGY0ZmVh
NjMwMDcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKQEAg
LTM5LDYgKzM5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgUHJldmlld0xvYWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0xvYWRlcik7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBjcmVhdGUoUmVzb3VyY2VMb2Fk
ZXImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L1ByZXZpZXdMb2FkZXIubW0KaW5kZXggZjZiODIyMTc5MTZjYWQ5NWJmZTk2MGJiM2UzNzg0YTI3
MGE5YmE2Ny4uYzVjYTVjMjVmMTFiNGQ4YTljYTkzZWZjODg5MDk5MDdmNmI3NjYwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQpAQCAtODYsNyArODYsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooUmVzb3VyY2VMb2FkZXIm
KXJlc291cmNlTG9hZGVyIHJlc291cmNlUgogCiAgICAgX3Jlc291cmNlTG9hZGVyID0gbWFrZVdl
YWtQdHIocmVzb3VyY2VMb2FkZXIpOwogICAgIF9yZXNwb25zZSA9IHJlc291cmNlUmVzcG9uc2U7
Ci0gICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2Vs
ZiwgX3Jlc3BvbnNlKTsKKyAgICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVy
dGVyPihzZWxmLCBfcmVzcG9uc2UpOwogICAgIF9idWZmZXJlZERhdGFBcnJheSA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9zaG91bGREZWNpZGVQb2xpY3lC
ZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpOwogCkBAIC0yNDYsNyAr
MjQ2LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICB9CiAKICAgICBfY2xpZW50LT5k
aWRSZXF1ZXN0UGFzc3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
KGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBwYXNzd29yZCk7Cisg
ICAgICAgIF9jb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9y
ZXNwb25zZSwgcGFzc3dvcmQpOwogICAgICAgICBbX2NvbnZlcnRlci0+cGxhdGZvcm1Db252ZXJ0
ZXIoKSBhcHBlbmREYXRhQXJyYXk6X2J1ZmZlcmVkRGF0YUFycmF5LmdldCgpXTsKICAgICAgICAg
W19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgZmluaXNoZWRBcHBlbmRpbmdEYXRhXTsK
ICAgICB9KTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBQcmV2aWV3TG9hZGVyOjp+UHJldmlld0xvYWRl
cigpCiBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gUHJldmlld0xvYWRlcjo6Y3JlYXRl
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKHJlc3Bv
bnNlLm1pbWVUeXBlKCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3TG9h
ZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQcmV2aWV3TG9h
ZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKIH0KIAogYm9vbCBQcmV2aWV3TG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCmluZGV4IGU2YWRiNjdkYTk0ODY4NjI2ZmUyMDZm
ZjE2ZTY0ZGRhY2UyNzAxZmUuLjYxM2U3ODkyYjQxMGYzYjJhNDk0ZWNmYjY4MDAwYWFjMGRjNjYw
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCkBA
IC00MCw2ICs0MCw3IEBAIGNsYXNzIFRleHRUcmFja0xpc3Q7CiBzdHJ1Y3QgTWVkaWFTZWxlY3Rp
b25PcHRpb247CiAKIGNsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMoUGFn
ZUdyb3VwJik7CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGM0NzljYTFm
OWNiMDdkNGFjN2I0YjlmYjIyODUxZjBjOTk0YjE3MTQuLjRjY2RhYjA0YjdiM2Y1NTM0Y2VjYzJh
MTllYzBhNGJjYjdhYjE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGV4
dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0TWVudShFdmVu
dAogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1l
bnU+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGV4dE1lbnU+KCk7CiB9CiAKIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29udGV4dE1lbnUoRXZlbnQmIGV2ZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCBmNjNkYWE3ZjYzNDcy
NTU4ODczZGIzYjU4M2JjMjUxMmExNzc1MjdhLi5jZGM3NGY2ZGUwOWU5M2RlOWFhYjkyMzU2ZWYy
ZmJmNDRkZDJkMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92
ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNw
cApAQCAtODgsNyArODgsNyBAQCBjbGFzcyBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6
IHB1YmxpYyBSZWdpb25PdmVybGF5IHsKIAogYm9vbCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6
dXBkYXRlUmVnaW9uKCkKIHsKLSAgICBhdXRvIHJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVn
aW9uPigpOworICAgIGF1dG8gcmVnaW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KCk7CiAgICAgCiAg
ICAgZm9yIChjb25zdCBGcmFtZSogZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmICghZnJh
bWUtPnZpZXcoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggNDhjMDczNDc3MGViMTEwYzFjNWQ4NDUzZGQwODc5OTJlNTY0OWExZS4u
ZDIwYjk4YzQxNWVlYzgyNzZmODkwMGYyNGM2N2E5N2YxMDFkMGEwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIEV2ZW50SGFuZGxlcjo6RXZl
bnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3BlbmRp
bmdNb21lbnR1bVdoZWVsRXZlbnRzVGltZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmNsZWFyTGF0
Y2hlZFN0YXRlKQogI2VuZGlmCi0gICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHN0ZDo6bWFr
ZV91bmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkpCisgICAgLCBtX2F1dG9zY3JvbGxDb250
cm9sbGVyKG1ha2VVbmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkpCiAjaWYgIUVOQUJMRShJ
T1NfVE9VQ0hfRVZFTlRTKQogICAgICwgbV9mYWtlTW91c2VNb3ZlRXZlbnRUaW1lcigqdGhpcywg
JkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCkKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDIzMzcyOTQyYjM3NjNkOTI5M2QyNjViMzVhY2Mx
NTI1ZTM0Y2MwMGYuLmE1ZTVlZGUwYjRiNzQ3ZTQ3OTRkYzc5NDA2YWVmY2NiYjM4NWRkNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTEsNyArMTI5MSw3IEBAIFJlbmRlckJv
eCogRnJhbWVWaWV3OjplbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdAogdm9pZCBGcmFtZVZpZXc6
OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVk
T2JqZWN0KQogewogICAgIGlmICghbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkKLSAgICAgICAg
bV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8
UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKKyAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1Vw
ZGF0ZSA9IG1ha2VVbmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsK
IAogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZy
YW1lT3duZXJFbGVtZW50KCk7CiAgICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50
KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSkgewpAQCAtMTQyNyw3ICsxNDI3LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyKQogICAgIGJvb2wgaGFkU2xvd1JlcGFpbnRPYmplY3RzID0gaGFzU2xvd1JlcGFpbnRP
YmplY3RzKCk7CiAKICAgICBpZiAoIW1fc2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICBtX3Ns
b3dSZXBhaW50T2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJF
bGVtZW50Kj4+KCk7CisgICAgICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzID0gbWFrZVVuaXF1ZTxI
YXNoU2V0PGNvbnN0IFJlbmRlckVsZW1lbnQqPj4oKTsKIAogICAgIG1fc2xvd1JlcGFpbnRPYmpl
Y3RzLT5hZGQoJnJlbmRlcmVyKTsKICAgICBpZiAoaGFkU2xvd1JlcGFpbnRPYmplY3RzKQpAQCAt
MTQ2Miw3ICsxNDYyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3QoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogb2JqZWN0KQogewogICAgIGlm
ICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKLSAgICAgICAgbV92aWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dFNldD4oKTsKKyAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IG1ha2VVbmlx
dWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKIAogICAgIGlmICghbV92aWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkgewogICAgICAgICBtX3ZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzLT5hZGQob2JqZWN0KTsKQEAgLTQ4NjYsNyArNDg2Niw3IEBA
IFN0cmluZyBGcmFtZVZpZXc6OnRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdAogYm9v
bCBGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxl
QXJlYSkKIHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQotICAgICAgICBtX3Njcm9sbGFi
bGVBcmVhcyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CisgICAgICAg
IG1fc2Nyb2xsYWJsZUFyZWFzID0gbWFrZVVuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKICAg
ICAKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYXMtPmFkZChzY3JvbGxhYmxlQXJlYSkuaXNOZXdF
bnRyeSkgewogICAgICAgICBzY3JvbGxhYmxlQXJlYVNldENoYW5nZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCmluZGV4IDczMDk4ZjFmYTFm
MTA3MWU2MWZjZDNhYTY1MzUzMzBkM2U4OWJmNTkuLmU4NThjOTJjYmY4YzMxYTMyMWJmMzgwMDk3
YWJhNTVmMTU3MDAwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlv
dXRDb250ZXh0LmNwcApAQCAtNTk2LDE0ICs1OTYsMTQgQEAgdm9pZCBGcmFtZVZpZXdMYXlvdXRD
b250ZXh0OjpwdXNoTGF5b3V0U3RhdGUoUmVuZGVyRWxlbWVudCYgcm9vdCkKICAgICBBU1NFUlQo
IW1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVDb3VudCk7CiAgICAgQVNTRVJUKCFsYXlvdXRTdGF0
ZSgpKTsKIAotICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJMYXlvdXRTdGF0ZT4ocm9vdCkpOworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQo
bWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9vdCkpOwogfQogCiBib29sIEZyYW1lVmll
d0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZChSZW5k
ZXJCbG9ja0Zsb3cmIGxheW91dFJvb3QpCiB7CiAgICAgaWYgKGxheW91dFN0YXRlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRl
OjpJc1BhZ2luYXRlZDo6WWVzKSk7CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtl
VW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihsYXlvdXRSb290LCBSZW5kZXJMYXlvdXRTdGF0ZTo6
SXNQYWdpbmF0ZWQ6OlllcykpOwogICAgIHJldHVybiB0cnVlOwogfQogICAgIApAQCAtNjEzLDcg
KzYxMyw3IEBAIGJvb2wgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKFJl
bmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFNpCiAgICAgYXV0byogbGF5b3V0U3RhdGUg
PSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIGlmICghbGF5b3V0U3RhdGUgfHwgIW5lZWRzRnVs
bFJlcGFpbnQoKSB8fCBsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSB8fCByZW5kZXJlci5lbmNs
b3NpbmdGcmFnbWVudGVkRmxvdygpCiAgICAgICAgIHx8IGxheW91dFN0YXRlLT5saW5lR3JpZCgp
IHx8IChyZW5kZXJlci5zdHlsZSgpLmxpbmVHcmlkKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxM
aW5lR3JpZCgpICYmIHJlbmRlcmVyLmlzUmVuZGVyQmxvY2tGbG93KCkpKSB7Ci0gICAgICAgIG1f
bGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0
ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdl
SGVpZ2h0Q2hhbmdlZCkpOworICAgICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VV
bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9m
ZnNldCwgcGFnZUhlaWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwCmluZGV4IDhjM2M1MmEwNzM1MjI3OTBjZDBjNGE2MGRjMDVlNjE0MTJjMTlhZTkuLjUy
MjdlNDJhYzA5NmNlNjkyNWQ3ZWM2YTE4ZTUxOTI1ZDJlMDA2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3JCYXNlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFNlcnZpY2VXb3JrZXJDb250
YWluZXImIE5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIoKQogewogICAgIEFTU0VSVChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVk
KCkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyKQotICAgICAgICBtX3NlcnZp
Y2VXb3JrZXJDb250YWluZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMpOworICAgICAgICBtX3NlcnZpY2VX
b3JrZXJDb250YWluZXIgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMpOwogICAgIHJldHVybiAqbV9zZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA0ZDRhNDljNzMxYTRjYWY0NmVk
ZTYxMTU3N2NiMzllNmJmZmYwYTIyLi5iODIwZTQ5ZDM2NmQ3MTY5MjVhOTczZTJiMjhjOWI1ODJh
Zjk5NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIxMSwyNiArMjExLDI2IEBAIHN0YXRpYyBj
b25zdGV4cHIgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IHBhZ2VJbml0aWFsQWN0aXZp
dHlTdGF0ZSgpCiB9CiAKIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmln
dXJhdGlvbikKLSAgICA6IG1fY2hyb21lKHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21lPigqdGhpcywg
KnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCi0gICAgLCBtX2RyYWdDYXJldENvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQorICAgIDogbV9j
aHJvbWUobWFrZVVuaXF1ZTxDaHJvbWU+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21l
Q2xpZW50KSkKKyAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihtYWtlVW5pcXVlPERyYWdDYXJl
dENvbnRyb2xsZXI+KCkpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICAsIG1fZHJhZ0Nv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29u
ZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkKKyAgICAsIG1fZHJhZ0NvbnRyb2xsZXIobWFrZVVuaXF1
ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkK
ICNlbmRpZgotICAgICwgbV9mb2N1c0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxGb2N1c0Nv
bnRyb2xsZXI+KCp0aGlzLCBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCisgICAgLCBtX2Zv
Y3VzQ29udHJvbGxlcihtYWtlVW5pcXVlPEZvY3VzQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VJbml0
aWFsQWN0aXZpdHlTdGF0ZSgpKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1f
Y29udGV4dE1lbnVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDb250cm9s
bGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKKyAgICAs
IG1fY29udGV4dE1lbnVDb250cm9sbGVyKG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVy
PigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKICNlbmRpZgot
ICAgICwgbV91c2VySW5wdXRCcmlkZ2Uoc3RkOjptYWtlX3VuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+
KCp0aGlzKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGll
bnQpKQorICAgICwgbV91c2VySW5wdXRCcmlkZ2UobWFrZVVuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+
KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPEluc3BlY3Rv
ckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQpKQog
I2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckNhcHR1cmVDb250cm9sbGVyPigqdGhpcykpCisg
ICAgLCBtX3BvaW50ZXJDYXB0dXJlQ29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJDYXB0dXJl
Q29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAg
ICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckxvY2tD
b250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihtYWtlVW5p
cXVlPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NldHRp
bmdzKFNldHRpbmdzOjpjcmVhdGUodGhpcykpCi0gICAgLCBtX3Byb2dyZXNzKHN0ZDo6bWFrZV91
bmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50KSkKLSAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5i
YWNrRm9yd2FyZENsaWVudCkpKQorICAgICwgbV9wcm9ncmVzcyhtYWtlVW5pcXVlPFByb2dyZXNz
VHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCisgICAg
LCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihtYWtlVW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxl
cj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkK
ICAgICAsIG1fbWFpbkZyYW1lKEZyYW1lOjpjcmVhdGUodGhpcywgbnVsbHB0ciwgcGFnZUNvbmZp
Z3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lKSkKICAgICAsIG1fZWRpdG9yQ2xpZW50
KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50KSkKICAgICAsIG1fcGx1Z0lu
Q2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCkKQEAgLTI1MCw5ICsyNTAsOSBA
QCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAg
LCBtX2RvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyKCp0aGlzLCAmUGFnZTo6
ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXJGaXJlZCkKICAgICAsIG1fYWN0
aXZpdHlTdGF0ZShwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkKICAgICAsIG1fYWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLmFsdGVybmF0aXZlVGV4dENsaWVudCkKLSAg
ICAsIG1fY29uc29sZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50Pigq
dGhpcykpCisgICAgLCBtX2NvbnNvbGVDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ29uc29sZUNsaWVu
dD4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAg
ICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhp
cykpCiAjZW5kaWYKICAgICAsIG1fc29ja2V0UHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbi5zb2NrZXRQcm92aWRlcikpCiAgICAgLCBtX2Nvb2tpZUphcihXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uLmNvb2tpZUphcikpCkBAIC0yNjgsMTYgKzI2OCwxNiBAQCBQYWdlOjpQYWdlKFBh
Z2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3BsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyVXBkYXRlVGltZXIoKnRoaXMsICZQYWdlOjpwbGF5YmFja0NvbnRyb2xzTWFu
YWdlclVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1faXNVdGlsaXR5UGFnZShpc1V0
aWxpdHlQYWdlQ2hyb21lQ2xpZW50KGNocm9tZSgpLmNsaWVudCgpKSkKLSAgICAsIG1fcGVyZm9y
bWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/IG51bGxwdHIgOiBzdGQ6Om1ha2VfdW5pcXVl
PFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQotICAgICwgbV9sb3dQb3dlck1vZGVOb3RpZmll
cihzdGQ6Om1ha2VfdW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xv
d1Bvd2VyTW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlzTG93UG93ZXJN
b2RlRW5hYmxlZCk7IH0pKQotICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmcoc3RkOjptYWtlX3Vu
aXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+KCp0aGlzKSkKKyAgICAsIG1fcGVyZm9ybWFuY2VNb25p
dG9yKGlzVXRpbGl0eVBhZ2UoKSA/IG51bGxwdHIgOiBtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTW9u
aXRvcj4oKnRoaXMpKQorICAgICwgbV9sb3dQb3dlck1vZGVOb3RpZmllcihtYWtlVW5pcXVlPExv
d1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsg
aGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQorICAg
ICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmcobWFrZVVuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+KCp0
aGlzKSkKICNpZiBQTEFURk9STShNQUMpICYmIChFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSkKLSAgICAsIG1fc2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+
KCp0aGlzKSkKKyAgICAsIG1fc2VydmljZXNPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFNl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZWNlbnRX
aGVlbEV2ZW50RGVsdGFGaWx0ZXIoV2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKSkKLSAg
ICAsIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlD
b250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BhZ2VPdmVybGF5Q29udHJvbGxlcihtYWtlVW5p
cXVlPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShBUFBMRV9QQVkp
Ci0gICAgLCBtX3BheW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29y
ZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCkpCisg
ICAgLCBtX3BheW1lbnRDb29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4o
KnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCkpCiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICwgbV9hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IobWFr
ZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KSkpCkBAIC01NjEsNyArNTYxLDcg
QEAgdm9pZCBQYWdlOjppbml0R3JvdXAoKQogewogICAgIEFTU0VSVCghbV9zaW5nbGVQYWdlR3Jv
dXApOwogICAgIEFTU0VSVCghbV9ncm91cCk7Ci0gICAgbV9zaW5nbGVQYWdlR3JvdXAgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VHcm91cD4oKnRoaXMpOworICAgIG1fc2luZ2xlUGFnZUdyb3VwID0g
bWFrZVVuaXF1ZTxQYWdlR3JvdXA+KCp0aGlzKTsKICAgICBtX2dyb3VwID0gbV9zaW5nbGVQYWdl
R3JvdXAuZ2V0KCk7CiB9CiAKQEAgLTI2NTQsNyArMjY1NCw3IEBAIHZvaWQgUGFnZTo6c2V0UmVz
b3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICB9CiAKICAgICBpZiAo
IW1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgJiYgbV9zZXR0aW5ncy0+YWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoKSkKLSAgICAgICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+KCp0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJj
ZVVzYWdlT3ZlcmxheSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+KCp0aGlzKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xl
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCmlu
ZGV4IDE4OTFlOTU5YjM3OGEzODMyZDRjYzFmOGY0OGE4Y2ZkNjhkOTc4MjkuLjRlNDgwYzBjMjBl
NDBjMmI5NmQ0YzNlY2E5ZmE0MzVlMmI5YWVmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbnNvbGVDbGllbnQuY3BwCkBAIC0xNjEsOSArMTYxLDkgQEAgdm9pZCBQYWdlQ29uc29sZUNs
aWVudDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb24KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVz
c2FnZTsKIAogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6Okxv
ZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVz
dElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4
dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBl
bHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBz
dWdnZXN0ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwg
c3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZl
bCwgbWVzc2FnZVRleHQsIHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2Vz
dGVkQ29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgYWRkTWVz
c2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFBhZ2VD
b25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbAogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBib29sIGdvdE1lc3Nh
Z2UgPSBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7CiAK
LSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4
dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOwog
CiAgICAgU3RyaW5nIHVybCA9IG1lc3NhZ2UtPnVybCgpOwogICAgIHVuc2lnbmVkIGxpbmVOdW1i
ZXIgPSBtZXNzYWdlLT5saW5lKCk7CkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBQYWdlQ29uc29s
ZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1
bWVudHM+JiYKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkYXRhVVJMLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgYWRkTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgIkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdU
Rk1vdmUoYXJndW1lbnRzKSkpOworICAgICAgICAgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkNvdWxkIG5vdCBjYXB0dXJlIHNj
cmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGll
bnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmCiAgICAgZm9yIChzaXplX3QgaSA9ICghdGFyZ2V0ID8gMCA6IDEpOyBpIDwgYXJndW1lbnRz
LT5hcmd1bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYWRqdXN0ZWRBcmd1bWVudHMuYXBwZW5k
KHsgc3RhdGUtPnZtKCksIGFyZ3VtZW50cy0+YXJndW1lbnRBdChpKSB9KTsKICAgICBhcmd1bWVu
dHMgPSBTY3JpcHRBcmd1bWVudHM6OmNyZWF0ZSgqc3RhdGUsIFdURk1vdmUoYWRqdXN0ZWRBcmd1
bWVudHMpKTsKLSAgICBhZGRNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdl
LCBNZXNzYWdlTGV2ZWw6OkxvZywgZGF0YVVSTCwgV1RGTW92ZShhcmd1bWVudHMpKSk7CisgICAg
YWRkTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2cs
IGRhdGFVUkwsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggOTE5MzYwNDVjMmZhZjc2Y2FjNWUy
YzY5ZTYyMzNmMmNlMzBiZjliMS4uMTI4YzE4ZjE0YjkwOGU3MWJjN2NlZmIzOTYyMDdmZWJiYzAw
ZjJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtMTE2LDkgKzExNiw5IEBAIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMmIFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVuY2VzKCkKIHsK
ICAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2VzKSB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBI
QVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQotICAgICAgICBtX2NhcHRpb25QcmVm
ZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY+
KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGPigqdGhpcyk7CiAjZWxzZQotICAgICAgICBtX2NhcHRp
b25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4o
KnRoaXMpOworICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2FwdGlv
blVzZXJQcmVmZXJlbmNlcz4oKnRoaXMpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2UuY3BwCmluZGV4IDZjMTViM2ZhYTgzZjVjYWUwZDkxNzZkMDBjOGFmYzE1Yjc2
NjkzMTYuLmNiYmFjMjFkNDAwNWIxYjBlMTE4MDIyZjdhYTE0YThiY2ZlZDg1MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBQZXJmb3Jt
YW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsVGltZXJGaXJlZCgpCiBFeGNlcHRpb25Pcjx2
b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlm
ICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxV
c2VyVGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IG1fdXNlclRpbWluZy0+bWFy
ayhtYXJrTmFtZSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTI3OSwxNCAr
Mjc5LDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNvbnN0IFN0cmlu
ZyYgbWFya05hbWUpCiB2b2lkIFBlcmZvcm1hbmNlOjpjbGVhck1hcmtzKGNvbnN0IFN0cmluZyYg
bWFya05hbWUpCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWlu
ZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJU
aW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmct
PmNsZWFyTWFya3MobWFya05hbWUpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5j
ZTo6bWVhc3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcmIHN0YXJ0
TWFyaywgY29uc3QgU3RyaW5nJiBlbmRNYXJrKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQot
ICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlz
KTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7
CiAKICAgICBhdXRvIHJlc3VsdCA9IG1fdXNlclRpbWluZy0+bWVhc3VyZShtZWFzdXJlTmFtZSwg
c3RhcnRNYXJrLCBlbmRNYXJrKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAt
MzAwLDcgKzMwMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptZWFzdXJlKGNv
bnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYKIHZvaWQgUGVyZm9ybWFuY2U6
OmNsZWFyTWVhc3VyZXMoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSkKIHsKICAgICBpZiAoIW1f
dXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2Vy
VGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRp
bWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRpbWluZy0+Y2xlYXJNZWFzdXJlcyhtZWFzdXJlTmFt
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCmluZGV4IDk5
YTQzNzJlNTRkODQwMjliYWZiZjliOGY3YTU4MjAwMWZhNjNhMWIuLjE2YmNmMDQzOTBhMTcwZjNk
ZTc4MjY1MGMyZmMyNTIyY2Y1MDU0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJld2FybUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5m
b3JtYXRpb24uaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgV0VCQ09SRV9FWFBPUlQgUHJld2FybUluZm9ybWF0aW9uIHsKKyAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24gZm9u
dENhY2hlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDAzNzBmMjg4
N2Y2NWI1N2IzY2Q4OTdlNGZjNjllOGEyZWZiODc1ZGYuLjQ0MjkxYWVmYTM3YzhhN2E4NDQ4YmVj
MzlhZWVhYzI0MzllYzQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAg
LTMyMSw3ICszMjEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6b3V0cHV0TGlua2VkRGVzdGluYXRp
b25zKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBEbwogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIW1fbGlua2VkRGVzdGluYXRpb25zKSB7Ci0gICAgICAgIG1fbGlua2VkRGVz
dGluYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+
Pj4oKTsKKyAgICAgICAgbV9saW5rZWREZXN0aW5hdGlvbnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8
U3RyaW5nLCBSZWY8RWxlbWVudD4+PigpOwogICAgICAgICBjb2xsZWN0TGlua2VkRGVzdGluYXRp
b25zKGRvY3VtZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyLmNwcAppbmRleCA1NmEwMTFjNGNlZTk5Nzg5OTAxZmFkMzYzMDJi
ZTEwYzM0NTY2NTI3Li4zYjg4MWRmYmIxNzE3ZjRlNDExYTZjNTM0NDU5NWZiZDNhYjQzMDZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjppc1NjaGVk
dWxlZCgpIGNvbnN0CiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcihT
ZWNvbmRzIGRlbGF5KQogewogICAgIEFTU0VSVCghaXNTY2hlZHVsZWQoKSk7Ci0gICAgbV9yZWZy
ZXNoVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CisgICAgbV9yZWZyZXNoVGltZXIgPSBt
YWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxh
eVJlZnJlc2hGaXJlZCk7CiAgICAgbV9yZWZyZXNoVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5o
CmluZGV4IGZhZGU2MmZjNzg3ZWU0ODk3OWFmNmRkODI2NjI3Nzk4MDRkMzc1MTcuLjZmMDYwODE3
ODI2ZWM1NmM2ZWU4YTVmOGNkMzk0NGVjMmQ0MTkwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4gY3JlYXRlKFBhZ2UmIHBhZ2UpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+
KHBhZ2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXI+KHBhZ2UpOwogICAgIH0KIAogICAgIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcihQYWdlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKaW5kZXggOTViMWM4YjViZTgzZDg5YjI0
OTc5ZWFlZDliOWQ0ZTkwZDNmNGY4Ny4uZWVlYmY5YjllNjFiZDU4OGZkM2JhOTlmYWIxNTAxOTFj
YzhmNjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaApAQCAtNDAsNiArNDAs
NyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiAKIHN0cnVjdCBSZXNpemVPYnNl
cnZlckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBWZWN0
b3I8V2Vha1B0cjxSZXNpemVPYnNlcnZlcj4+IG9ic2VydmVyczsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNDIzNDE4MjgwZWEyZWUzYzliZmRmYzkxY2Qx
MjdiOTY4ZWIxZTFiZi4uMGRlYjA2NDE0OGY5NzI2Y2QzOGI0MTAwNWQ1MjI5NzI2MGMxYzY1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTE4OSw3ICsxODksNyBA
QCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2lu
QWNjZXNzTWFwTG9jayk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0g
b3JpZ2luQWNjZXNzTWFwKCkuYWRkKHNvdXJjZVN0cmluZywgbnVsbHB0cik7CiAgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7CisgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4oKTsKIAogICAg
IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiAgICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdp
bkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxs
b3dTdWJkb21haW5zLCBPcmlnaW5BY2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVz
cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCmluZGV4IGI2ODQ4OTZmMzk4ODQ2
MjU0YTE3OTdhZGNkZWQ2NjY2MDVlODVkNWMuLjI3ZWVhNmMwYWI5MzhlYmM4Zjk2NWRhY2I4MjAz
MTE0NDMxNjBiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgbGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgPSAy
NTBfbXM7CiAKIFNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKFBhZ2UqIHBhZ2UpCiAgICAgOiBt
X3BhZ2UobnVsbHB0cikKLSAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyhzdGQ6Om1ha2VfdW5p
cXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCisgICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMo
bWFrZVVuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQogICAgICwgbV9sYXlvdXRJbnRlcnZh
bChsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCkKICAgICAsIG1fbWluaW11bURPTVRpbWVySW50ZXJ2
YWwoRE9NVGltZXI6OmRlZmF1bHRNaW5pbXVtSW50ZXJ2YWwoKSkKICAgICAsIG1fc2V0SW1hZ2VM
b2FkaW5nU2V0dGluZ3NUaW1lcigqdGhpcywgJlNldHRpbmdzQmFzZTo6aW1hZ2VMb2FkaW5nU2V0
dGluZ3NUaW1lckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5k
YWJsZVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRl
eCA1NTg0NDM0MDc4MzQ2ZmI5YjU3YTZlYTU5YWZjZTI3YTYyNDBiNTVhLi4zYzNkNDllMDU4YWIx
MzE3NDdlYjQ5YmIwYzkzYTBmZDI5NDUxOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1N1c3BlbmRhYmxlVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRh
YmxlVGltZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTdXNwZW5kYWJsZVRpbWVyIDogcHJpdmF0ZSBUaW1lckJhc2UsIHB1YmxpYyBBY3RpdmVET01P
YmplY3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1
YWwgflN1c3BlbmRhYmxlVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRl
bnRDb250cm9sbGVyLmNwcAppbmRleCBiOWNlOThjYzZjYTVjMjQ1NmNkYjk0ZjVkYzQxYjRkMmI1
MGU5OGY2Li42NTIzMTFkN2E1NWY1NTA3YTA1YWE0M2I2MmM4MDIwODcyMmRiYWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC03Myw3ICs3
Myw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpmb3JFYWNoVXNlck1lc3NhZ2VIYW5k
bGVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgVXNlck1lCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVlX3B0
cjxVc2VyU2NyaXB0PiB1c2VyU2NyaXB0KQogewotICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0g
bV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc2Ny
aXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBt
YWtlVW5pcXVlPFVzZXJTY3JpcHRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBz
Y3JpcHRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC0xMDAs
NyArMTAwLDcgQEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRz
KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjph
ZGRVc2VyU3R5bGVTaGVldChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1ZV9wdHI8
VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0LCBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIGlu
amVjdGlvblRpbWUpCiB7Ci0gICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5
bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXNl
clN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzdHls
ZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxkLCBbJl0geyBy
ZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOwogICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclN0eWxlU2hl
ZXQpKTsKIAogICAgIGlmIChpbmplY3Rpb25UaW1lID09IEluamVjdEluRXhpc3RpbmdEb2N1bWVu
dHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKaW5k
ZXggZjI1OWFlYjFhMGE5ZTVjZTdhMTM0ZjBkMTI2OWVjMzE0YzlhOWMzMS4uMzA0ZDk0YTc1YmYz
NjFkOGRkNDZmNmFmZmFmZTMxYzNlZjgyYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcApAQCAtNDMsOSArNDMsOSBAQCBXaGVlbEV2ZW50RGVs
dGFGaWx0ZXI6On5XaGVlbEV2ZW50RGVsdGFGaWx0ZXIoKSA9IGRlZmF1bHQ7CiBzdGQ6OnVuaXF1
ZV9wdHI8V2hlZWxFdmVudERlbHRhRmlsdGVyPiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0
ZSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdo
ZWVsRXZlbnREZWx0YUZpbHRlck1hYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaGVlbEV2
ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJh
c2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
aW5kZXggMTQ0NjYzY2FlOTU5NzljZmNjN2M0YTIyNDJlMWQxNjFkNjEwMjkyNS4uMTNjMzFmNTc2
NGI3YjIyNGEyYjdlYTU1YWUzM2E2YjM5ODZiOTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTU5
Niw3ICs1OTYsNyBAQCB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphbmltYXRp
b25XaWxsQmVSZW1vdmVkKEFuaW1hdGlvbkJhc2UmIGFuaW1hdAogfQogCiBDU1NBbmltYXRpb25D
b250cm9sbGVyOjpDU1NBbmltYXRpb25Db250cm9sbGVyKEZyYW1lJiBmcmFtZSkKLSAgICA6IG1f
ZGF0YShzdGQ6Om1ha2VfdW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPihmcmFt
ZSkpCisgICAgOiBtX2RhdGEobWFrZVVuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZT4oZnJhbWUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNzRlZWRjOTk2NmU5ZjgxYWNiOTk2
Y2YzNzY5ODNkYWI2ODU1NDBjNi4uYmFlYjI0NzY1NzE2NzM3Yjg0YTFjYzhmMTlkZTAxNzNmMzY3
ZTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVy
dHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHN0YXRpYyBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5k
aW5nQ2xpCiB7CiAgICAgQVNTRVJUKGZyb20gJiYgdG8pOwogICAgIGlmIChmcm9tLT5zdHlsZSgp
ICE9IHRvLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dE
YXRhPigqdG8pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqdG8pOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJvbS0+bG9j
YXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTaGFkb3dEYXRhPihibGVuZChmcm9tLT5sb2NhdGlvbigpLCB0by0+bG9jYXRpb24oKSwgcHJv
Z3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5yYWRpdXMoKSwgdG8tPnJhZGl1cygpLCBwcm9n
cmVzcyksCiAgICAgICAgIGJsZW5kKGZyb20tPnNwcmVhZCgpLCB0by0+c3ByZWFkKCksIHByb2dy
ZXNzKSwKICAgICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20tPnN0eWxlKCksIHRvLT5zdHlsZSgp
LCBwcm9ncmVzcyksCkBAIC05NzQsMTUgKzk3NCwxNSBAQCBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJW
aXNpdGVkQWZmZWN0ZWRDb2xvciA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNl
CiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBw
cm9wLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChS
ZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3Im
IChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxl
OjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9w
ZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlx
dWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAgICAgICAg
LCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+
KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1fd3JhcHBl
cihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikp
CisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNv
bG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAgICAgfQog
ICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJv
cCwgTWF5YmVJbnZhbGlkQ29sb3JUYWcsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OipnZXR0
ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpLAog
ICAgICAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRlcikoKSBjb25z
dCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0dGVyKShjb25zdCBDb2xvciYpKQogICAg
ICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKLSAgICAgICAgLCBtX3dy
YXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4o
cHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3RkOjpt
YWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgdmlzaXRl
ZEdldHRlciwgdmlzaXRlZFNldHRlcikpCisgICAgICAgICwgbV93cmFwcGVyKG1ha2VVbmlxdWU8
UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkK
KyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5
YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAg
IHsKICAgICB9CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJl
bmRlclN0eWxlKiBiKSBjb25zdCBvdmVycmlkZQpAQCAtMTIyOSwxOSArMTIyOSwxOSBAQCBjbGFz
cyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3Jh
cHBlckJhc2UgewogICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uWDoKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJv
cGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAm
RmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFhP
cmlnaW4sIEVkZ2U6OlJpZ2h0KTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFw
cGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVy
dHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmls
bExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFhPcmln
aW4sIEVkZ2U6OlJpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tQb3NpdGlvblk6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3Bl
cnR5LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZp
bGxMYXllcjo6YmFja2dyb3VuZFlPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRZT3Jp
Z2luLCBFZGdlOjpCb3R0b20pOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBw
ZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0
eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxs
TGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWU9yaWdp
biwgRWRnZTo6Qm90dG9tKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNr
Z3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgotICAg
ICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6
OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOworICAgICAgICAgICAgbV9m
aWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3Jh
cHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxs
TGF5ZXI6OnNldFNpemVMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5
V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFn
ZSk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8
RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6
OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc3MCw3ICsxNzcwLDcgQEAgQ1NT
UHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJN
YXAoKQogICAgICAgICAgICAgbG9uZ2hhbmRXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQobV9wcm9w
ZXJ0eVdyYXBwZXJzW3dyYXBwZXJJbmRleF0uZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
bV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNob3J0
aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdyYXBwZXJz
KSkpOworICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlx
dWU8U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3ZlKGxvbmdoYW5k
V3JhcHBlcnMpKSk7CiAgICAgICAgIGluZGV4RnJvbVByb3BlcnR5SUQocHJvcGVydHlJRCkgPSBh
bmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQgKyBpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDcw
NDdlODNkZTc4NWRiODFiNmQ5OTBhOTQ4MzdiYTcxZDcyODI5YTAuLjhmMGY2YmY1M2IwM2UwOGY3
MDMzMTY2ZWI4Yzc0ZDZiZjk3MjgzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVy
LCBDb250ZW50U2VjdXJpCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNl
U2VsZihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgbV9zZWxm
U291cmNlUHJvdG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpOwotICAgIG1fc2VsZlNv
dXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhp
cywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlP
cmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOworICAgIG1fc2VsZlNv
dXJjZSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhpcywgbV9z
ZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlPcmlnaW4u
cG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOwogfQogCiB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUuaAppbmRleCBhOGYxZDRmMGJkZTE0ZjE0Yjg4YWEzOTQwZWRkOGM4OTYyNjFlM2Rl
Li5iYmQ5MTg5ZTI0ODM0ZGFjYzhkN2JhZTE1Y2M1ODE2Y2EzMjBjZjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0JiBkaXJlY3RpdmVMaXN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3QuY3BwCmluZGV4IGRkYmQ4Y2RlMjc4MGU5MmRiYTIwZTBhYmQ5OWNmMDQ5ODQzZjRjNGQu
LmMwMTU2ZGRmMDFjOTQ3ZTUwNGI1NjlkMGE0MTE2OThjNTU4ZjNlZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3QuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdChDb250ZW50
U2UKIAogc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250ZW50U2VjdXJp
dHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cml0eVBv
bGljeUhlYWRlclR5cGUgdHlwZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tIGZy
b20pCiB7Ci0gICAgYXV0byBkaXJlY3RpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pihwb2xpY3ksIHR5cGUpOworICAgIGF1dG8gZGlyZWN0
aXZlcyA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9s
aWN5LCB0eXBlKTsKICAgICBkaXJlY3RpdmVzLT5wYXJzZShoZWFkZXIsIGZyb20pOwogCiAgICAg
aWYgKCFjaGVja0V2YWwoZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRpcmVjdGl2ZXMt
Pm1fc2NyaXB0U3JjLmdldCgpKSkpIHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbgogICAgICAgICBtX3BvbGljeS5yZXBvcnREdXBsaWNhdGVEaXJlY3RpdmUobmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZGlyZWN0aXZlID0gc3RkOjptYWtlX3Vu
aXF1ZTxDU1BEaXJlY3RpdmVUeXBlPigqdGhpcywgbmFtZSwgdmFsdWUpOworICAgIGRpcmVjdGl2
ZSA9IG1ha2VVbmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKIH0K
IAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphcHBseVNhbmRib3hQ
b2xpY3koY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQb2xpY3kpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCmluZGV4
IDFjMmI0ZDA4ZTZkYjI0MzA1MjkxYTFlYTFjODZlYjYzNmUzZjM1MjYuLjg0OTQ4NDI2NGU5MTcz
MGY3YTY5MDk4ZGYzZDdkYWQxNDkyZGNlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
aW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIERPTVRp
bWVyOwogY2xhc3MgRWxlbWVudDsKIAogY2xhc3MgQ29udGVudENoYW5nZU9ic2VydmVyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRlbnRDaGFuZ2VPYnNlcnZlcihEb2N1
bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhv
bGRpbmdUYW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5r
LmgKaW5kZXggYjYyMTg0ZmUxNzk0MmRhOTQ4NTlhODAyY2VmZGU3NmUyNDJkM2U0Yy4uYmJmNzk0
NWFhYTQ5OWE3NmI3ZTEyYWIzYzc1ZDU5NDQyMWU0NWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBET01UaW1lcjsKIAogY2xhc3MgRE9NVGltZXJIb2xkaW5nVGFu
ayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRE9NVGltZXJI
b2xkaW5nVGFuaygpOwogICAgIH5ET01UaW1lckhvbGRpbmdUYW5rKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcApp
bmRleCA0ZmRmNzU2YzAyMTk4ODUzM2IyZjEyNTVjOTFhNGVjYzkxNDg0ZmE0Li5jMDdiMTI3Njlj
ZDA0YmE3YjMxZjg4YzQ2YTlmMDZiNmFkNmI0OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKQEAgLTcwLDYg
KzcwLDcgQEAgc3RhdGljIFN0cmluZyBnY1RpbWVyU3RyaW5nKE1vbm90b25pY1RpbWUgdGltZXJG
aXJlRGF0ZSwgTW9ub3RvbmljVGltZSBub3cpCiBzdGF0aWMgY29uc3QgZmxvYXQgZ0ZvbnRTaXpl
ID0gMTQ7CiAKIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlciBmaW5hbCA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIoUmVzb3VyY2VVc2FnZU92ZXJs
YXkmIG92ZXJsYXkpCiAgICAgICAgIDogbV9vdmVybGF5KG92ZXJsYXkpCkBAIC0xMzIsNyArMTMz
LDcgQEAgY2xhc3MgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyIGZpbmFsIDogcHVibGljIEdy
YXBoaWNzTGF5ZXJDbGllbnQgewogCiB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9y
bUluaXRpYWxpemUoKQogewotICAgIG1fb3ZlcmxheVBhaW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlcj4oKnRoaXMpOworICAgIG1fb3ZlcmxheVBhaW50
ZXIgPSBtYWtlVW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlcj4oKnRoaXMpOwogICAg
IG1fcGFpbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShvdmVybGF5KCkucGFnZSgpLT5j
aHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqbV9vdmVybGF5UGFpbnRl
cik7CiAgICAgbV9wYWludExheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAg
ICAgbV9wYWludExheWVyLT5zZXRTaXplKHsgbm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdodCB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IGQ3YWRmZmQ3MmY5ZmE4ZmU5N2FmY2Rh
MDcxOGQ4M2M2ZTA5MDg1MGMuLjA4NjNhZDI2NzI1ZDY1NTQ3NTJiN2FjMjE0OGVlZDFjNmRmYzIz
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lk
IFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB2b2lkIFBhZ2U6OmFkZFNjaGVkdWxlUGFpcihS
ZWY8U2NoZWR1bGVQYWlyPiYmIHBhaXIpCiB7CiAgICAgaWYgKCFtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlycykKLSAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CisgICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJz
ID0gbWFrZVVuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOwogICAgIG1fc2NoZWR1bGVkUnVu
TG9vcFBhaXJzLT5hZGQocGFpci5wdHIoKSk7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZt
X21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRv
cldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5o
CmluZGV4IGRjZGQ5NTA0OGJkOTU4YWE3NDQwYTBmYzNkOWJjZTdkZjJmNTQ4MGYuLjY0NzVjZTVl
YmM5MDdhZTE4ODBhZjE3MWMwNzM2ZmYzZWNiNTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFz
cyBUZXh0SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9uIDogdWludDhfdCB7CiAjaWYg
UExBVEZPUk0oTUFDKQogCiBjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0SW5kaWNhdG9y
V2luZG93KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCAzMDZjZmVkMTlj
ZTZkMDBiNjJhODUyNDk3MDAyOGI4MDQ1ZmFkODIzLi4wMGFmMzk0NzhkYzc1ZjcwMjljMjQ4NDU0
ZWYwMWFiMGM2YzdkMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNTksNyArNTksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqIHBhZ2UpCiAgICAgOiBTY3JvbGxpbmdDb29yZGluYXRv
cihwYWdlKQogICAgICwgbV91cGRhdGVOb2RlU2Nyb2xsUG9zaXRpb25UaW1lcigqdGhpcywgJkFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Nj
cm9sbFRpbWVyRmlyZWQpCi0gICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZShzdGQ6Om1ha2VfdW5p
cXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhpcykpCisgICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJl
ZShtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgK
aW5kZXggNjNiZDk2MzhiNjNhMWExMWNhNDBmMzY3MjEyOWY3MTQxMGM2ZmYyZS4uM2FiNjQwNjgy
NjRjNTA0MDhiYWI0ZWUzOGQyY2NkNGE2NDFjNzg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKQEAgLTM3LDYgKzM3
LDcgQEAgc3RydWN0IFNjcm9sbE9mZnNldFJhbmdlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgVmVjdG9yPFQ+IGhvcml6b250YWxTbmFwT2Zmc2V0czsKICAgICBW
ZWN0b3I8VD4gdmVydGljYWxTbmFwT2Zmc2V0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAK
aW5kZXggNzY0MGQ1NWQ5NmEzZjA5NTliOTMxZWYwNDMzZWMxNWZhMjA3ZGJkNC4uYzg5MGY5ZWJh
MDA0Y2E4NzgwMTQxYjg1Y2VlZTAwNTU2MmUyZTQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIEZsb2F0U2l6ZSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVu
dFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4o
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBp
bml0aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0
LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVu
YWJsZWQoYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKaW5kZXggYmU5OWQwZWU2YTNmMDc4OWZj
NGQ3ZGM2OTI4ODViNTI0MDA0MzgwMi4uMjFjMzExY2Q4OWI3OTQwODRhODQ5MGQ1ZmM5YmE1NWE5
M2I5YWViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3Mg
RmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIAogY2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxP
ZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxWZWxvY2l0eSk7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3I+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNl
dCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bFZlbG9jaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuY3BwCmluZGV4IDk2ODJkMmMxYmNlZTM3NTcxM2MzNDZkM2UzM2NkNGRj
MTM1YWZjNzguLmJlNTdjOWI4NjlkMGNjNTIzODZiMDA0NmE1MDdkMzRjODQwYzgxNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2Rl
LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRD
aGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSkKICAgICBjaGlsZE5vZGUt
PnNldFBhcmVudCh0aGlzKTsKIAogICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgbV9jaGls
ZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+
Pj4oKTsKKyAgICAgICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0cjxTY3Jv
bGxpbmdTdGF0ZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RGTW92ZShjaGls
ZE5vZGUpKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ2hpbGROb2Rlcyk7CiB9CkBAIC0xMTIs
NyArMTEyLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxkKFJlZjxTY3Jv
bGxpbmdTdGF0ZU5vZGU+JiYgY2hpbGROb2RlLCBzaXplX3QKIAogICAgIGlmICghbV9jaGlsZHJl
bikgewogICAgICAgICBBU1NFUlQoIWluZGV4KTsKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKKyAgICAg
ICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5v
ZGU+Pj4oKTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBtX2NoaWxkcmVuLT5zaXplKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRy
ZWUuY3BwCmluZGV4IGY2MWUyOGUwZWM1MDMwMTJiMzcyZmIyNTU2OWE4Y2I3ZGQ1M2FhNzAuLjcx
NTdlMTY4NjBmNDljOTFkZGEzNWJiYzRlYWZlOTgxOWVhY2JlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcApAQCAtMjkz
LDcgKzI5Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IFNjcm9sbGlu
Z1N0YXRlVHJlZTo6Y29tbWl0KExheWVyUmVwcmVzZW50YXRpCiAgICAgfQogCiAgICAgLy8gVGhp
cyBmdW5jdGlvbiBjbG9uZXMgYW5kIHJlc2V0cyB0aGUgY3VycmVudCBzdGF0ZSB0cmVlLCBidXQg
bGVhdmVzIHRoZSB0cmVlIHN0cnVjdHVyZSBpbnRhY3QuCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bGluZ1N0YXRlVHJlZT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVl
PiB0cmVlU3RhdGVDbG9uZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOwogICAg
IHRyZWVTdGF0ZUNsb25lLT5zZXRQcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKHByZWZlcnJl
ZExheWVyUmVwcmVzZW50YXRpb24pOwogCiAgICAgaWYgKG1fcm9vdFN0YXRlTm9kZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcApp
bmRleCBlYTc0ZTJjYTQyNDI5YThlMmJlOWY5YTM3OWUzNjdkYTRkZGRhM2QxLi43Mjk2MTVhNjlm
MDEyMjYzMTUxNDdlY2ZkYjU1MjhiMDE5OWYzODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCkBAIC01MCw3ICs1MCw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKFJlZjxTY3JvbGxpbmdUcmVlTm9k
ZT4mJiBjaGlsZE5vZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBp
ZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsKKyAgICAgICAgbV9jaGlsZHJlbiA9
IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4+PigpOwogICAgIG1f
Y2hpbGRyZW4tPmFwcGVuZChXVEZNb3ZlKGNoaWxkTm9kZSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvck1hYy5tbQppbmRleCAxYzdhYjc2YTE1MWU2MzUwZDhiNjE0YzM2ZDA1
YmNlNjVjNmM5NTg0Li5iNDNlYTk5NWZhZjZiNDcwMzM1ZmJmMDdhMjA4NmE2YjM1ZjcwZWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAg
c3RhdGljIGJvb2wgZ0VuYWJsZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uID0g
dHJ1ZTsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9y
dFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGlu
aXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM+KHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5
KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9t
ZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DUFVNb25pdG9yLmgKaW5kZXggNzFlNDNkM2YzYjk0NjEwNjA4Y2JmMTFkYjUxMTVi
Y2JlYzA1NDg5MC4uMDg4ZGY1NDNlMDQ3OTExN2M4MzdhZmUyMjNiYmNjNTUxNDg4YTdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDUFVNb25pdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciA9IFdU
Rjo6RnVuY3Rpb248dm9pZChkb3VibGUpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBDUFVNb25pdG9y
KFNlY29uZHMgY2hlY2tJbnRlcnZhbCwgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXImJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaAppbmRleCBlNjBmNzcxM2Y2MmJiMjU2MmE4NDI4
ODhjN2ZjNjI5ZjJjNTQ3ZjMzLi42YjI4OGUxZTE3ZTQ0OGJiODZmYjllY2UyOWNjOWU1YmRiOWRk
OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKQEAgLTQyLDYgKzQyLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsZU1vbml0b3IgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgRmlsZUNoYW5nZVR5
cGUgeyBNb2RpZmljYXRpb24sIFJlbW92YWwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5j
cHAKaW5kZXggNGZmOTgwNGVhZWMxMzA2YjI2OGEyNDVmMjc3MWExMTJlMjhkMmExZS4uM2ZjNDMx
YTQ3NDYxZDhjNDQzZGI0YjYyMmQ2ZWE5MDYzNGRhMGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGguY3BwCkBAIC0yODgsOSArMjg4LDkgQEAgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRN
aW51c0xlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAvLyBUdXJuIHRoaXMgaW50byBh
IGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsK
LSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNz
aW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxj
RXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0
cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVz
c2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tl
ZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKKyAgICBh
dXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5n
dGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxh
dGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApAQCAt
MzAyLDcgKzMwMiw3IEBAIHN0YXRpYyBMZW5ndGggYmxlbmRNaXhlZFR5cGVzKGNvbnN0IExlbmd0
aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyCiAgICAgaWYgKHByb2dyZXNz
ID49IDEuMCkKICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAKLSAgICBhdXRvIGJsZW5kID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJv
Z3Jlc3MpOworICAgIGF1dG8gYmxlbmQgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uQmxlbmRM
ZW5ndGg+KGZyb20sIHRvLCBwcm9ncmVzcyk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlv
blZhbHVlOjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKaW5k
ZXggNTUyYjEyZjZjMWU4Y2RhNmZmZWE2NDc4NjkyMjI5ZWE5M2VkMTdjYS4uOGUzNWUzMDRjMWU3
MjU3YmM2NGM2YWQxMGVkZGU5NjQyMDRlNjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNpZiAoIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShN
QUMpKSB8fCAhSEFWRShNRURJQV9QTEFZRVIpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFu
ZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlz
dGVuZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVDb21tYW5kTGlzdGVuZXI+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
Q29tbWFuZExpc3RlbmVyPihjbGllbnQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKaW5kZXggMmU1ZjYzYmNlZjJiZmRmY2ZmOTIxNmQ5ODZi
MGY0MzYwYzY4MGI0MS4uYjdjMWQyNGViNDllNWE1NWY2OTFmMDZjZTllMWQ4MGIyMWJjY2FkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTM0LDYgKzM0
LDcgQEAgY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFzcyBT
Y3JvbGxBbmltYXRpb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbigpIHsgfTsKICAgICB2aXJ0dWFsIGJvb2wgc2Ny
b2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgLyogc3Rl
cCAqLywgZmxvYXQgLyogbXVsdGlwbGllciAqLykgeyByZXR1cm4gdHJ1ZTsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBkOTE1NGQ5MzUxYTJmMzM2
NmRkZDA1ZmU2MGZkZWJiOWMxYTFlNzM4Li5mOGVkYzg4MmQ3ZjM2MDAyZTE5ODUxMGQ4MWI4ZWIz
NGFhNTAwN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpICYmICFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKQog
c3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFNjcm9sbEFuaW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGM2MmFkODM0ZTZiMzgw
OGUxZWNkYThiYTEzMTJkM2Q5NTcwNWU5NmEuLjk2ZDBmMzAwYjM0MThlNjA4MjFkYTJkYTJhNjQx
ODljNGRlZTBiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5j
cHAKQEAgLTgwLDcgKzgwLDcgQEAgU2Nyb2xsQW5pbWF0b3ImIFNjcm9sbGFibGVBcmVhOjpzY3Jv
bGxBbmltYXRvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Njcm9sbEFuaW1hdG9yKSB7CiAgICAg
ICAgIGlmICh1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCkpIHsKLSAgICAgICAgICAgIG1fc2Nyb2xs
QW5pbWF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2Fz
dDxTY3JvbGxhYmxlQXJlYSY+KCp0aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
eworICAgICAgICAgICAgbV9zY3JvbGxBbmltYXRvciA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0
b3JNb2NrPihjb25zdF9jYXN0PFNjcm9sbGFibGVBcmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSB7CiAgICAgICAgICAgICAgICAgbG9nTW9ja1Njcm9sbEFuaW1hdG9y
TWVzc2FnZShtZXNzYWdlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKQEAgLTQz
NSw3ICs0MzUsNyBAQCBib29sIFNjcm9sbGFibGVBcmVhOjpoYXNMYXllckZvclNjcm9sbENvcm5l
cigpIGNvbnN0CiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIFNjcm9sbGFibGVB
cmVhOjplbnN1cmVTbmFwT2Zmc2V0c0luZm8oKQogewogICAgIGlmICghbV9zbmFwT2Zmc2V0c0lu
Zm8pCi0gICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxT
bmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+KCk7CisgICAgICAgIG1fc25hcE9mZnNldHNJbmZv
ID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+KCk7CiAgICAg
cmV0dXJuICptX3NuYXBPZmZzZXRzSW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N1ZGRlblRlcm1pbmF0aW9uLmgKaW5kZXggNzJiMDA0NTEzMTQyYzhmNGU5NWRmMjI4MThjM2Rk
YzE4MGFhZWNlZC4uMGQ3NGIxNmU1OTI1OThhYjgzYjBjOGMwZWI1NGI0NDZkZmQzOGQzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCkBAIC00Miw2ICs0
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgY2xhc3MgU3VkZGVuVGVy
bWluYXRpb25EaXNhYmxlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKTsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAppbmRleCBhMjgwMTBlY2ZlNWEz
NjdhZDlkMGIyOWEyMDA1NjNhMGY1NjFkNTYwLi4yN2E3MzY0MTZiYTA0YzA1M2MyZTc3ZGIyYzU1
ODE0NDQwZDJmMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxE
YXRhLmNwcApAQCAtNDAsMTQgKzQwLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRocmVh
ZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEoKQotICAgIDogbV9jYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5p
dGlhdG9ycz4oKSkKKyAgICA6IG1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhtYWtl
VW5pcXVlPENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+KCkpCiAgICAgLCBtX2V2ZW50
TmFtZXMoRXZlbnROYW1lczo6Y3JlYXRlKCkpCi0gICAgLCBtX3RocmVhZFRpbWVycyhzdGQ6Om1h
a2VfdW5pcXVlPFRocmVhZFRpbWVycz4oKSkKLSAgICAsIG1fcXVhbGlmaWVkTmFtZUNhY2hlKHN0
ZDo6bWFrZV91bmlxdWU8UXVhbGlmaWVkTmFtZUNhY2hlPigpKQorICAgICwgbV90aHJlYWRUaW1l
cnMobWFrZVVuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCisgICAgLCBtX3F1YWxpZmllZE5hbWVDYWNo
ZShtYWtlVW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkKICNpZm5kZWYgTkRFQlVHCiAgICAg
LCBtX2lzTWFpblRocmVhZChpc01haW5UaHJlYWQoKSkKICNlbmRpZgotICAgICwgbV9jYWNoZWRD
b252ZXJ0ZXJJQ1Uoc3RkOjptYWtlX3VuaXF1ZTxJQ1VDb252ZXJ0ZXJXcmFwcGVyPigpKQorICAg
ICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1UobWFrZVVuaXF1ZTxJQ1VDb252ZXJ0ZXJXcmFwcGVyPigp
KQogewogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igd2lsbCBoYXZlIGJlZW4gY2FsbGVkIG9uIHRo
ZSBtYWluIHRocmVhZCBiZWZvcmUgYmVpbmcgY2FsbGVkIG9uCiAgICAgLy8gYW55IG90aGVyIHRo
cmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHRocmVhZCAtIHRoaXMgbWFrZXMgdGhp
cyBhIGNvbnZlbmllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNw
cAppbmRleCAyZjg5MmQ2YjE5YWJhNDIzMGU5MjRjNzYxODczOGZjNmNiNDhmN2VjLi5lNzBkNDZk
MGI5ZjI0MDdmOTA4NTQ4ZmE4ZjJlOThjOWRhNDU2M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEF1ZGlvQnVzOjpBdWRp
b0J1cyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbGVuZ3RoLCBib29sIGFsbG9j
YXRlKQogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZkNoYW5u
ZWxzKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyAr
K2kpIHsKLSAgICAgICAgYXV0byBjaGFubmVsID0gYWxsb2NhdGUgPyBzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihu
dWxscHRyLCBsZW5ndGgpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IG1ha2VV
bmlxdWU8QXVkaW9DaGFubmVsPihsZW5ndGgpIDogbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KG51
bGxwdHIsIGxlbmd0aCk7CiAgICAgICAgIG1fY2hhbm5lbHMudW5jaGVja2VkQXBwZW5kKFdURk1v
dmUoY2hhbm5lbCkpOwogICAgIH0KIApAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgQXVkaW9CdXM6
OmNvcHlXaXRoR2FpbkZyb20oY29uc3QgQXVkaW9CdXMgJnNvdXJjZUJ1cywgZmxvYXQqIGxhc3RN
aXhHYWluLCBmCiAKICAgICBpZiAoZnJhbWVzVG9EZXppcHBlcikgewogICAgICAgICBpZiAoIW1f
ZGV6aXBwZXJHYWluVmFsdWVzLmdldCgpIHx8IG1fZGV6aXBwZXJHYWluVmFsdWVzLT5zaXplKCkg
PCBmcmFtZXNUb0RlemlwcGVyKQotICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZnJhbWVzVG9EZXppcHBlcik7CisgICAg
ICAgICAgICBtX2RlemlwcGVyR2FpblZhbHVlcyA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5
PihmcmFtZXNUb0RlemlwcGVyKTsKIAogICAgICAgICBmbG9hdCogZ2FpblZhbHVlcyA9IG1fZGV6
aXBwZXJHYWluVmFsdWVzLT5kYXRhKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBmcmFtZXNUb0RlemlwcGVyOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5oCmluZGV4IDIxNzNkYzkzODNlNGEzM2MxYjU5MzQ3NjVhMWU1YjEwNzQ2ZjAzYTEu
LmJiYjNkMmFjZDIyYzU3MmJjOTIzYTQ4YjFmNzBhZjg1NGMwY2IwMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBBbiBBdWRpb0J1cyByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBvbmUg
b3IgbW9yZSBBdWRpb0NoYW5uZWxzLgogLy8gVGhlIGRhdGEgbGF5b3V0IGlzICJwbGFuYXIiIGFz
IG9wcG9zZWQgdG8gImludGVybGVhdmVkIi4KIC8vIEFuIEF1ZGlvQnVzIHdpdGggb25lIGNoYW5u
ZWwgaXMgbW9ubywgYW4gQXVkaW9CdXMgd2l0aCB0d28gY2hhbm5lbHMgaXMgc3RlcmVvLCBldGMu
Ci1jbGFzcyBBdWRpb0J1cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0J1cz4g
eworY2xhc3MgQXVkaW9CdXMgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVk
aW9CdXM+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb0J1cyk7CiBwdWJsaWM6CiAg
ICAgZW51bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0NoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5o
CmluZGV4IGJiYzEzNTdhM2Q1M2YwNTQ4Zjg4NzhlNTg3ZGI3ZDZkZDFjNGZhZDguLjdiOTg5M2Qz
OGFjNDE3NDUzMTc0MWI3NzI0YzZmZjJhYmQwMWRmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogLy8gQW4gQXVkaW9DaGFubmVsIHJlcHJlc2VudHMgYSBidWZmZXIgb2Ygbm9u
LWludGVybGVhdmVkIGZsb2F0aW5nLXBvaW50IGF1ZGlvIHNhbXBsZXMuCiAvLyBUaGUgUENNIHNh
bXBsZXMgYXJlIG5vcm1hbGx5IGFzc3VtZWQgdG8gYmUgaW4gYSBub21pbmFsIHJhbmdlIC0xLjAg
LT4gKzEuMAotY2xhc3MgQXVkaW9DaGFubmVsIHsKK2NsYXNzIEF1ZGlvQ2hhbm5lbCBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QXVkaW9DaGFubmVsKTsKIHB1YmxpYzoKICAgICAvLyBNZW1vcnkgY2FuIGJlIGV4dGVybmFsbHkg
cmVmZXJlbmNlZCwgb3IgY2FuIGJlIGludGVybmFsbHkgYWxsb2NhdGVkIHdpdGggYW4gQXVkaW9G
bG9hdEFycmF5LgpAQCAtNTYsNyArNTcsNyBAQCBjbGFzcyBBdWRpb0NoYW5uZWwgewogICAgICAg
ICAsIG1fcmF3UG9pbnRlcigwKQogICAgICAgICAsIG1fc2lsZW50KHRydWUpCiAgICAgewotICAg
ICAgICBtX21lbUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihsZW5n
dGgpOworICAgICAgICBtX21lbUJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5Pihs
ZW5ndGgpOwogICAgIH0KIAogICAgIC8vIEEgImJsYW5rIiBhdWRpbyBjaGFubmVsIC0tIG11c3Qg
Y2FsbCBzZXQoKSBiZWZvcmUgaXQncyB1c2VmdWwuLi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9GSUZPLmgKaW5kZXggNzVjOWFiZDc0OTRkMzU4MjJmODJhY2U3Y2NkMGQ4NTY4
NjExZDdlYS4uMGY0MzhkZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2NjMwOGJkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKQEAgLTMzLDcgKzMzLDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0ZJRk8geworY2xhc3MgQXVkaW9G
SUZPIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAv
LyBDcmVhdGUgYSBGSUZPIGxhcmdlIGVub3VnaCB0byBob2xkIHxmaWZvTGVuZ3RofCBmcmFtZXMg
b2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVsc3wgY2hhbm5lbHMuCiAgICAgQXVkaW9GSUZPKHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBmaWZvTGVuZ3RoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaAppbmRleCBiZmJlOTgzYTU3NWE0
NTRhYWMyYjBjM2NiZTQ1NzVlZmFmNmI3OGQ3Li5kNzQ4ZmE0MTM4NzM3OWRiMzk1YmVhZTY1Zjg4
MmJhMjU4ZTlmYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1B1bGxGSUZPLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Q
dWxsRklGTy5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHRoZSBG
SUZPIHdpbGwgYXNrIHRoZSBwcm92aWRlciBmb3IgbW9yZSBkYXRhIHdoZW4gbmVjZXNzYXJ5IHRv
IGZ1bGZpbGwgYSByZXF1ZXN0LiBDb250cmFzdCB0aGlzCiAvLyB3aXRoIGEgInB1c2giIEZJRk8s
IHdoZXJlIHRoZSBzZW5kZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJRk8gd2hpY2ggd2lsbCBpdHNl
bGYgcHVzaCB0aGUgZGF0YSB0bwogLy8gdGhlIHJlY2VpdmVyIHdoZW4gdGhlIEZJRk8gaXMgZnVs
bC4KLWNsYXNzIEF1ZGlvUHVsbEZJRk8geworY2xhc3MgQXVkaW9QdWxsRklGTyBmaW5hbCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgRklG
TyB0aGF0IGdldHMgZGF0YSBmcm9tIHxwcm92aWRlcnwuIFRoZSBGSUZPIHdpbGwgYmUgbGFyZ2Ug
ZW5vdWdoIHRvIGhvbGQKICAgICAvLyB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51
bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLiBUaGUgQXVkaW9Tb3VyY2VQcm92aWRlciB3aWxsIGJl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAK
aW5kZXggODY5MDZiYTUxMjQ3NTg2OTJjNjgzZTJiYzkwMzgzNTAxZWFiOGZkOS4uMjg0YzA1NDk0
MzI1OTM0NGVhY2UzMjQxOGFkYTliODMwM2RhMmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcApAQCAtMzksNyArMzksNyBAQCBjb25z
dCBkb3VibGUgQXVkaW9SZXNhbXBsZXI6Ok1heFJhdGUgPSA4LjA7CiBBdWRpb1Jlc2FtcGxlcjo6
QXVkaW9SZXNhbXBsZXIoKQogICAgIDogbV9yYXRlKDEuMCkKIHsKLSAgICBtX2tlcm5lbHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICBt
X2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsK
ICAgICBtX3NvdXJjZUJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgMCwgZmFsc2UpOwogfQogCkBA
IC00Nyw3ICs0Nyw3IEBAIEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxlcih1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzKQogICAgIDogbV9yYXRlKDEuMCkKIHsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICBtX2tlcm5lbHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICAg
ICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlz
KSk7CiAKICAgICBtX3NvdXJjZUJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVs
cywgMCwgZmFsc2UpOwogfQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEF1ZGlvUmVzYW1wbGVyOjpj
b25maWd1cmVDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgIC8vIEZpcnN0
IGRlYWwgd2l0aCBhZGRpbmcgb3IgcmVtb3Zpbmcga2VybmVscy4KICAgICBpZiAobnVtYmVyT2ZD
aGFubmVscyA+IGN1cnJlbnRTaXplKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGN1cnJl
bnRTaXplOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICAgICAgbV9rZXJuZWxz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7Cisg
ICAgICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJu
ZWw+KHRoaXMpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9rZXJuZWxzLnJlc2l6ZShudW1iZXJP
ZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9SZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVz
YW1wbGVyLmgKaW5kZXggZDExZmE5M2ViYWFjYmQ4ZTU2Yjk4ZGEzMzc1ZmFlMTQwNjhlM2JjOS4u
MjAxNmJhZmY3Yzg4ZGYxOGFmNWQzNTJjMzAxZjVmZjQzNzY4OWY3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCkBAIC0zNyw3ICszNyw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBhdWRpbyBzdHJlYW0gbWF5IGJlIHNpbmdsZSBv
ciBtdWx0aS1jaGFubmVsLgogLy8gVGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdHMgdG8g
c2luZ2xlLWNoYW5uZWwgKG1vbm8pLgogCi1jbGFzcyBBdWRpb1Jlc2FtcGxlciB7CitjbGFzcyBB
dWRpb1Jlc2FtcGxlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQXVkaW9SZXNhbXBsZXIoKTsKICAgICBBdWRpb1Jlc2FtcGxlcih1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCmluZGV4IDk5ZDg3N2JiN2NkNjhkYmIwNTM2NzdhMDk3
Y2Q0ZTBlYWM4M2I3ODIuLjhhYzJiYWE0MmM1ODdhMzQ4NWQ1MzQwMjNhZGVlMjRmODgzMjZlZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVy
S2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBs
ZXJLZXJuZWwuaApAQCAtMzQsNyArMzQsOSBAQCBjbGFzcyBBdWRpb1Jlc2FtcGxlcjsKIC8vIEF1
ZGlvUmVzYW1wbGVyS2VybmVsIGRvZXMgcmVzYW1wbGluZyBvbiBhIHNpbmdsZSBtb25vIGNoYW5u
ZWwuCiAvLyBJdCB1c2VzIGEgc2ltcGxlIGxpbmVhciBpbnRlcnBvbGF0aW9uIGZvciBnb29kIHBl
cmZvcm1hbmNlLgogCi1jbGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5lbCB7CitjbGFzcyBBdWRpb1Jl
c2FtcGxlcktlcm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9SZXNhbXBsZXJLZXJuZWwpOwogcHVibGljOgogICAg
IEF1ZGlvUmVzYW1wbGVyS2VybmVsKEF1ZGlvUmVzYW1wbGVyKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IDVjMWJmMmEzMTczNDJl
YTNlNTI5MmE3OTdlOGU2NmUxYThkYTM5N2MuLmI1ZmI1ODA2NDhmOWNmOGVjNGYxODZmYWZhNDhl
MTNmZGNmMmY1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmNwcApAQCAtNTAsNiArNTAsNyBAQCBib29sIEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRB
Y3RpdmUoYm9vbCBhY3RpdmUpCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBjbGFzcyBBdWRpb1Nl
c3Npb25Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIH07CiAKIEF1ZGlv
U2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmgKaW5kZXggMTdkYTgxYjNiNzVkN2E1YWFiODIxNDg2YjdjMWUzM2YxYThk
ZjQ2OS4uZTcwMDgyMmZmMWZlZWJkNzgyOWFlYzc1MGNjZTQwYTYwYjkyNTY2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDgg
QEAgZW51bSBjbGFzcyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90IHsKICAgICBMb25nRm9y
bVZpZGVvCiB9OwogCi1jbGFzcyBBdWRpb1Nlc3Npb24geworY2xhc3MgQXVkaW9TZXNzaW9uIGZp
bmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBdWRpb1Nlc3Npb24pOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBB
dWRpb1Nlc3Npb24mIHNoYXJlZFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QmlxdWFkLmgKaW5kZXggYmI3MjFhMjNhN2ZjYzc3NGI2MDkzZTRlYTkwOGM2MGU4OTA4MTA3Yy4u
NzEzNDk0YzkxNGQzMzc4NjQzZTI5YTgwYmMzOWU3NzM2NmRmMTgyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8gICAgbG93cGFzcywgaGlnaHBhc3MsIHNoZWx2aW5nLCBwYXJhbWV0ZXJpYywgbm90
Y2gsIGFsbHBhc3MsIC4uLgogCiBjbGFzcyBCaXF1YWQgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAgIEJpcXVhZCgpOwogICAgIH5CaXF1YWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaAppbmRleCBkODFjMDVkYzY4ZTZlMmZhMjFk
MjQ1ZGQxMzdiNGYxNzhhMjEyMGI0Li5hN2FjYTNhNGM1NGQyNzRiM2FhM2Q0MGFkOWQxNDNlYmRm
YzQ1ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCkBAIC0zNSw3ICszNSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ29uZSBnYWluIGlzIGRlZmluZWQgYWNjb3Jk
aW5nIHRvIHRoZSBPcGVuQUwgc3BlY2lmaWNhdGlvbgogCi1jbGFzcyBDb25lRWZmZWN0IHsKK2Ns
YXNzIENvbmVFZmZlY3QgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIENvbmVFZmZlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCmluZGV4IDZlOWY0ZTAxZGFlNmQ0NWQwMjExMWQ1ZDVi
MTI4ZWYzODg2YjIyNDIuLmUwYjNlZmQ4MGY3OGZmYWEzMDY1NzMzMjMxNDcwMmRjNzNhMmYwMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVy
LmgKQEAgLTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZmRl
ZiBIQVZFX0RFTk9STUFMCi1jbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKK2NsYXNzIERlbm9ybWFs
RGlzYWJsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIERlbm9ybWFsRGlzYWJsZXIoKQogICAgICAgICAgICAgOiBtX3NhdmVkQ1NSKDApCkBAIC0x
MDMsNyArMTA0LDggQEAgY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CiAKICNlbHNlCiAvLyBGSVhN
RTogYWRkIGltcGxlbWVudGF0aW9ucyBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcyBhbmQgY29tcGls
ZXJzCi1jbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKK2NsYXNzIERlbm9ybWFsRGlzYWJsZXIgZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlbm9ybWFs
RGlzYWJsZXIoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRGlyZWN0Q29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJl
Y3RDb252b2x2ZXIuaAppbmRleCA2ZjJmYWY0MGU2MWJmNmUzMmE0ZjQ5OTk3NjVjOWUxYmI1MTk0
MWE4Li41YzhkODY2YzE2NTVjYzM5MWE4MjVkM2IyMzc4OGJmNDBjNzg5YTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaApAQCAtMzAsMTAg
KzMwLDEzIEBACiAjZGVmaW5lIERpcmVjdENvbnZvbHZlcl9oCiAKICNpbmNsdWRlICJBdWRpb0Fy
cmF5LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgRGlyZWN0Q29udm9sdmVyIHsKK2NsYXNzIERpcmVjdENvbnZvbHZlciBmaW5h
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRGlyZWN0Q29udm9sdmVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEaXJlY3RDb252b2x2
ZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0Rpc3RhbmNlLmgKaW5kZXggOTFkMzQ5Yjk3ZTYyNzczMzJkNzYzMWE4ODQ0MjZiMTY2OGRjZjI4
My4uYjNlYjc3OTczY2ZhNDc5NWYxNTA1MzY5YjdlNGIyZjg5ZmZiNmM0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCkBAIC00MCw3ICs0MCw4IEBAIGVudW0gY2xh
c3MgRGlzdGFuY2VNb2RlbFR5cGUgewogICAgIEV4cG9uZW50aWFsCiB9OwogCi1jbGFzcyBEaXN0
YW5jZUVmZmVjdCB7CitjbGFzcyBEaXN0YW5jZUVmZmVjdCBmaW5hbCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGlzdGFuY2VFZmZlY3QoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKaW5kZXggZjRiNDIwMTdlZTc2
MjdjYWQ2NTZiZmY0NTdhYWU5ODk0ODAxNGJmMi4uOTU3MGI4OTFjOTdmZmE5MTFhMDExMzQwMDNi
NGZkY2I1Zjc2ZjkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RG93blNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2Ft
cGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRG93blNh
bXBsZXIgZG93bi1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9yIG9mIDJ4Lgog
Ci1jbGFzcyBEb3duU2FtcGxlciB7CitjbGFzcyBEb3duU2FtcGxlciBmaW5hbCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRG93blNhbXBsZXIo
c2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IGIyNTUxOGQ4ODBhOGQyZDk5NGE3
Njk2YjhmYWRhOWU1NTQ4YzI5ZWIuLjUxMzc5OWE4NTEyZjQyN2I0ZTRiOGQ5YjI5NDVhOTRkMzQ5
MTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmNwcApAQCAtMjcxLDggKzI3MSw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVz
c29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAg
bV9wcmVGaWx0ZXJQYWNrcy5jbGVhcigpOwogICAgIG1fcG9zdEZpbHRlclBhY2tzLmNsZWFyKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewot
ICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xl
RmlsdGVyUGFjazQ+KCkpOwotICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAgICAgICAgbV9wcmVGaWx0ZXJQ
YWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAgICAgICAg
bV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4o
KSk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VDaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxjb25z
dCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRleCBlZjhjMDkzYTFiOTY1MzIyOWQ3
OTlmMWE2YjI5MmFmYWRiZGFiYWQxLi44MjJjOTMxZjM4Y2UwZWM4ZGM2MjgyZjBmOGMzNDNhZjY3
N2Y5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuaApAQCAtNDMsOCArNDMsOSBAQCBjbGFzcyBBdWRpb0J1czsKIC8vIG9mIHRo
ZSBsb3VkZXN0IHBhcnRzIG9mIHRoZSBzaWduYWwgYW5kIHJhaXNlcyB0aGUgdm9sdW1lIG9mIHRo
ZSBzb2Z0ZXN0IHBhcnRzLAogLy8gbWFraW5nIHRoZSBzb3VuZCByaWNoZXIsIGZ1bGxlciwgYW5k
IG1vcmUgY29udHJvbGxlZC4KIAotY2xhc3MgRHluYW1pY3NDb21wcmVzc29yIHsKK2NsYXNzIER5
bmFtaWNzQ29tcHJlc3NvciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHluYW1pY3NDb21wcmVzc29yKTsKIHB1YmxpYzoKICAg
ICBlbnVtIHsKICAgICAgICAgUGFyYW1UaHJlc2hvbGQsCkBAIC05NSw5ICs5NiwxMCBAQCBjbGFz
cyBEeW5hbWljc0NvbXByZXNzb3IgewogICAgIGZsb2F0IG1fbGFzdEFuY2hvcjsKICAgICBmbG9h
dCBtX2xhc3RGaWx0ZXJTdGFnZUdhaW47CiAKLSAgICB0eXBlZGVmIHN0cnVjdCB7CisgICAgc3Ry
dWN0IFplcm9Qb2xlRmlsdGVyUGFjazQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIFplcm9Qb2xlIGZpbHRlcnNbNF07Ci0gICAgfSBaZXJvUG9sZUZp
bHRlclBhY2s0OworICAgIH07CiAKICAgICAvLyBQZXItY2hhbm5lbCBlbXBoYXNpcyBmaWx0ZXJz
LgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcHJl
RmlsdGVyUGFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCA3MzRiMDY2Y2RhNDhiYzJjN2E3
OWVkZjUwN2QwNmMwNTZjNzBhMDkwLi5hZmVkYjdiNGNkMGE1YTYxZDFhOWZlMjc4YzM0MDM4M2Y5
OGUyMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBEeW5h
bWljc0NvbXByZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscykKIAogICAgIG1fcHJlRGVsYXlCdWZmZXJzLmNsZWFyKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9wcmVE
ZWxheUJ1ZmZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihNYXhQ
cmVEZWxheUZyYW1lcykpOworICAgICAgICBtX3ByZURlbGF5QnVmZmVycy5hcHBlbmQobWFrZVVu
aXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVzKSk7CiB9CiAKIHZvaWQgRHlu
YW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXRQcmVEZWxheVRpbWUoZmxvYXQgcHJlRGVsYXlUaW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWwuaAppbmRleCBiN2JjZWEyZmFmZDg5OTZjYTUyOGIwYjVkYWI0OWNiODg5
NThkY2M0Li5lMTFmNDdiYWFmMGJjNmM1ZDBjYTdlM2Q3MjAwODI2MzlkMjcwYzAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3JLZXJuZWwuaApAQCAtMzUsNyArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IDhjZjU5OTE3OTVmM2YxZjYzZTI4MWQ5ZTE2
YWNhZjNkN2E1N2E1ZGEuLjRlNDYzYjEyODFhN2ZhM2JiMzk3YTZiMDY1Y2UwMzNjY2JmOWFkMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5u
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVy
LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBDb21tb24gdHlw
ZSBvZiBzdGVyZW8gcGFubmVyIGFzIGZvdW5kIGluIG5vcm1hbCBhdWRpbyBtaXhpbmcgZXF1aXBt
ZW50LgogCi1jbGFzcyBFcXVhbFBvd2VyUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBF
cXVhbFBvd2VyUGFubmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgRXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAppbmRleCA0NTQyYjZmYjI1Nzg1NDk1
YWIyMDZhYmMzYzkwYzc1YmMyZjE2ZWEwLi4zODYyMjdmMTk3MDRhZmQ3OTJlMzY2MjJiZGRhOWMx
YWNlYTc1MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRD
b252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2
ZXIuaApAQCAtMzQsNyArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZG
VENvbnZvbHZlciB7CitjbGFzcyBGRlRDb252b2x2ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZGVENvbnZvbHZlcik7CiBw
dWJsaWM6CiAgICAgLy8gZmZ0U2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvCiAgICAgRkZUQ29u
dm9sdmVyKHNpemVfdCBmZnRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZG
VEZyYW1lLmNwcAppbmRleCA0YzAyYjY5OTJiMDYzODNiODAzNTczNzg3OGRiZjY1YTI2ZmI5YzMx
Li40YzE1MjA2N2Q0NGFjNGI4NTQxOTIxYWFlZDI5NTk4MmI5NjkzNzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQg
RkZURnJhbWU6OmRvUGFkZGVkRkZUKGNvbnN0IGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0YVNpemUp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxGRlRGcmFtZT4gRkZURnJhbWU6OmNyZWF0ZUludGVycG9sYXRl
ZEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZGVEZyYW1lJiBmcmFtZTIsIGRv
dWJsZSB4KQogewotICAgIGF1dG8gbmV3RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1l
PihmcmFtZTEuZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRG
cmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CiAKICAgICBuZXdGcmFtZS0+aW50ZXJwb2xhdGVGcmVx
dWVuY3lDb21wb25lbnRzKGZyYW1lMSwgZnJhbWUyLCB4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAppbmRleCA3NTdiY2ZhNGI2YWVmZDcwZWJhZTg2
NTQ4NzI1ZmE0MDYyOWM2ZTllLi5hNTE5MzQ5ODE1MDQ1MjZkNmZjNjRkNDViOTc5MGIzNzgxMDNh
NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhSVEZLZXJuZWw7
CiAKLWNsYXNzIEhSVEZEYXRhYmFzZSB7CitjbGFzcyBIUlRGRGF0YWJhc2UgZmluYWwgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhSVEZE
YXRhYmFzZSk7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBmNDViZTg0N2NlNzEwZGNlZGEyZTBlYzEw
NmI3NWJmMjY4NTc4OWNkLi5hNDc0YTcwYzQwODUyYWUyZTFmOWY1OGE0OWEwMDAzNjE1ODBiMzE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFz
ZUxvYWRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIUlRGRGF0YWJhc2VMb2FkZXI6Omxv
YWQoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9ocnRmRGF0YWJh
c2UuZ2V0KCkpIHsKICAgICAgICAgLy8gTG9hZCB0aGUgZGVmYXVsdCBIUlRGIGRhdGFiYXNlLgot
ICAgICAgICBtX2hydGZEYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURkRhdGFiYXNlPiht
X2RhdGFiYXNlU2FtcGxlUmF0ZSk7CisgICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gbWFrZVVuaXF1
ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKaW5kZXggYzg0
YWI5NzUxYTE0NTk4OWEwMzc3ZmFkMWY0YTc1ZThmMTdlMmIyNC4uNjA1MjMyY2QxYTk5YzkyMzNk
OWFkMTA0OWJhMzA3ZTIxNzczOGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTI0NCw4ICsyNDQsOCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChjb25zdCBT
dHJpbmcmIHN1YgogICAgIGlmICghaXNFbGV2YXRpb25Hb29kKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8
SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxM
aXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemlt
dXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+
KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlx
dWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICAvLyBMb2Fk
IGNvbnZvbHV0aW9uIGtlcm5lbHMgZnJvbSBIUlRGIGZpbGVzLgogICAgIGludCBpbnRlcnBvbGF0
ZWRJbmRleCA9IDA7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2
YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWIK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIUlRG
RWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIGVs
ZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SFJURkVsZXZhdGlv
bj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBlbGV2YXRpb24s
IHNhbXBsZVJhdGUpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVs
ZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbGV2YXRpb24qIGhydGZF
bGV2YXRpb24xLCBIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMiwgZmxvYXQgeCwgZmxvYXQg
c2FtcGxlUmF0ZSkKQEAgLTI4NSw4ICsyODUsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZh
dGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbAog
ICAgICAgICAKICAgICBBU1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEuMCk7CiAgICAgCi0gICAgYXV0
byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9m
VG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8
SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxM
aXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7
CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJl
ck9mVG90YWxBemltdXRocyk7CiAKICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdEwxID0g
aHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RMKCk7CiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5l
bExpc3RSMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0UigpOwpAQCAtMzAyLDcgKzMwMiw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVC
eUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgLy8gSW50ZXJwb2xhdGUgZWxldmF0aW9u
IGFuZ2xlLgogICAgIGRvdWJsZSBhbmdsZSA9ICgxLjAgLSB4KSAqIGhydGZFbGV2YXRpb24xLT5l
bGV2YXRpb25BbmdsZSgpICsgeCAqIGhydGZFbGV2YXRpb24yLT5lbGV2YXRpb25BbmdsZSgpOwog
ICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUo
a2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGljX2Nhc3Q8aW50Pihhbmds
ZSksIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhSVEZFbGV2YXRpb24+KFdU
Rk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGljX2Nhc3Q8aW50
PihhbmdsZSksIHNhbXBsZVJhdGUpOwogfQogCiB2b2lkIEhSVEZFbGV2YXRpb246OmdldEtlcm5l
bHNGcm9tQXppbXV0aChkb3VibGUgYXppbXV0aEJsZW5kLCB1bnNpZ25lZCBhemltdXRoSW5kZXgs
IEhSVEZLZXJuZWwqICZrZXJuZWxMLCBIUlRGS2VybmVsKiAma2VybmVsUiwgZG91YmxlJiBmcmFt
ZURlbGF5TCwgZG91YmxlJiBmcmFtZURlbGF5UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uaAppbmRleCAyYTk1OTA0NTUyMTg0M2ExNTE2MmVjYzhlMzIx
MTczOWUwNzA1M2Y3Li5lZjc1MmMzYzAxYmUzOWVjZGI3ZWY2NGRmNDM5MDkyNjZkNmVkOTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCkBAIC0z
OSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gSFJURkVsZXZhdGlvbiBjb250
YWlucyBhbGwgb2YgdGhlIEhSVEZLZXJuZWxzIChvbmUgbGVmdCBlYXIgYW5kIG9uZSByaWdodCBl
YXIgcGVyIGF6aW11dGggYW5nbGUpIGZvciBhIHBhcnRpY3VsYXIgZWxldmF0aW9uLgogCi1jbGFz
cyBIUlRGRWxldmF0aW9uIHsKK2NsYXNzIEhSVEZFbGV2YXRpb24gZmluYWwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhSVEZFbGV2YXRp
b24pOwogcHVibGljOgogICAgIEhSVEZFbGV2YXRpb24oc3RkOjp1bmlxdWVfcHRyPEhSVEZLZXJu
ZWxMaXN0PiBrZXJuZWxMaXN0TCwgc3RkOjp1bmlxdWVfcHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJu
ZWxMaXN0UiwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKaW5kZXggZWRmNmM2MGQwZGI4MTRkOTRj
MGY3MWI2MzA2ZTQzODI2NTNhYTRjNy4uMzc1NTIxNmFlMjg3YTcxYzc0MjkyOWE1M2M5NTkwOTZk
YjFkYmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktl
cm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5j
cHAKQEAgLTkyLDcgKzkyLDcgQEAgSFJURktlcm5lbDo6SFJURktlcm5lbChBdWRpb0NoYW5uZWwq
IGNoYW5uZWwsIHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgbV9mZnRGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZmdFNp
emUpOworICAgIG1fZmZ0RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKICAg
ICBtX2ZmdEZyYW1lLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2UsIHRydW5jYXRlZFJlc3Bv
bnNlTGVuZ3RoKTsKIH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHNpemVfdCBIUlRGS2VybmVsOjpm
ZnRTaXplKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQ2hhbm5lbD4gSFJURktlcm5l
bDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKCkKIHsKLSAgICBhdXRvIGNoYW5uZWwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIGNoYW5uZWwgPSBt
YWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKICAgICBGRlRGcmFtZSBmZnRGcmFt
ZSgqbV9mZnRGcmFtZSk7CiAKICAgICAvLyBBZGQgbGVhZGluZyBkZWxheSBiYWNrIGluLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCmluZGV4IGJmNWVlZmFhNWU0
YzZkMmJmMTdhOTkwMDMwNzQxNjVjNmU0MzNhZDcuLmNhYWE0NDFmMWQxNGVhMzZmNWU5NjhhZDhh
NzdkMGI3YTYwZGQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFu
bmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBI
UlRGUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBIUlRGUGFubmVyIGZpbmFsIDogcHVi
bGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSFJURlBhbm5lcihmbG9hdCBzYW1w
bGVSYXRlLCBIUlRGRGF0YWJhc2VMb2FkZXIqKTsKICAgICB2aXJ0dWFsIH5IUlRGUGFubmVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxS
ZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmNwcAppbmRleCBiYmJmMTY0NDYyMDc2MzllMzVjZjc5NTY0ODI4MjYzZDNlOTM3
M2FlLi41YmY5YWI5NWQwMTU3NTAwODE1ZDYxMzFhYjFkODk3NDFiZTFmZTI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxl
ci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5u
ZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXIKIHsKICAgICAv
LyBDcmVhdGUgZWFjaCBjaGFubmVsJ3MgcmVzYW1wbGVyLgogICAgIGZvciAodW5zaWduZWQgY2hh
bm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVs
SW5kZXgpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTaW5jUmVz
YW1wbGVyPihzY2FsZUZhY3RvcikpOworICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlx
dWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKIH0KIAogdm9pZCBNdWx0aUNoYW5uZWxS
ZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIsIEF1ZGlvQnVz
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKaW5kZXggNDQx
NzU0NzYwNTgzZDI4MDM0YTQ1YjNiZDhhNjE4OGQ0NjVhMmYzNi4uNjE0NmU5MjVjMDZhMmRkYTc2
Y2I0MTJmMGNjMWUwYTI0NmFjODBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKICAgICAKLWNsYXNzIE11bHRpQ2hh
bm5lbFJlc2FtcGxlciB7CitjbGFzcyBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgZmluYWwgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAgIGV4cGxpY2l0IE11bHRp
Q2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKaW5kZXggYWM3
Mjg2YWM5YTA2MGI3NTM0Y2IyZWRlOTIxZDZjYmQ3N2E5N2E4OC4uNDBiOWQwMWRjMTg0Yjk2ZDVk
ZjNhYjliN2Y0MDk0NjNhOTc4MzRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
YW5uZXIuY3BwCkBAIC00MywxMSArNDMsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4gUGFu
bmVyOjpjcmVhdGUoUGFubmluZ01vZGVsVHlwZSBtb2RlbCwgZmxvYXQgc2FtcGxlUmF0ZSwKIAog
ICAgIHN3aXRjaCAobW9kZWwpIHsKICAgICBjYXNlIFBhbm5pbmdNb2RlbFR5cGU6OkVxdWFscG93
ZXI6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8RXF1YWxQb3dlclBhbm5lcj4o
c2FtcGxlUmF0ZSk7CisgICAgICAgIHBhbm5lciA9IG1ha2VVbmlxdWU8RXF1YWxQb3dlclBhbm5l
cj4oc2FtcGxlUmF0ZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBQYW5uaW5nTW9kZWxU
eXBlOjpIUlRGOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZQYW5uZXI+
KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKKyAgICAgICAgcGFubmVyID0gbWFrZVVuaXF1
ZTxIUlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRlcik7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1BdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
QXVkaW9EYXRhLmgKaW5kZXggY2RhNzJlOGFiM2M0Y2RjMGE4NjhmYWFjNGYwNWNlNjFjNDQ0MDJk
MC4uNDYzNWE2NzMzZWNjM2YzYTA3NTAyZmM3YTc1MDE3M2UzM2UxMWYzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oCkBAIC0yOCw2
ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRh
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Q
bGF0Zm9ybUF1ZGlvRGF0YSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IGUwMjM5NGFh
NWIxNDljZDE1OTY5MTJhMjU2ODFmZjVlYTQ0YWQ4ZDIuLmM4YmQ2NGE0MWJmNjEyZTg5ZTNjMjE0
ZmEyMmRjYzU5OTQ4ZTU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdHJp
bmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbnRyb2xDb21tYW5kVHlwZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Np
b24+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25DbGll
bnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybU1lZGlh
U2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbj4oY2xpZW50KTsKIH0KIAogUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAppbmRleCAzMDQzZmM4YTA0ZGYwZDc3YzEwYWEwMzc5
YmQyNmEzOWQ0NmNlNmJhLi44YTY3NTVjNTRhZDAwYTNhODEwMTg3NDIxNjJjY2QwNzRkZTEwZTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIFJldmVyYjo6aW5pdGlhbGl6ZShBdWRpb0J1cyogaW1wdWxzZVJlc3BvbnNl
QnVmZmVyLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtUmVzcG9uc2VDaGFubmVsczsgKytpKSB7CiAgICAgICAgIEF1ZGlvQ2hhbm5lbCogY2hh
bm5lbCA9IGltcHVsc2VSZXNwb25zZUJ1ZmZlci0+Y2hhbm5lbChpKTsKIAotICAgICAgICBtX2Nv
bnZvbHZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29udm9sdmVyPihjaGFubmVs
LCByZW5kZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJlbmRlclBoYXNlLCB1c2VC
YWNrZ3JvdW5kVGhyZWFkcykpOworICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5kKG1ha2VVbmlx
dWU8UmV2ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNpemUsIG1heEZGVFNpemUs
IGNvbnZvbHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcykpOwogCiAgICAgICAg
IGNvbnZvbHZlclJlbmRlclBoYXNlICs9IHJlbmRlclNsaWNlU2l6ZTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCmluZGV4IDNlMjU3NmIzNTc1N2RiYTI0NzBjOGVi
N2RhM2MxN2JlZWJiZmRjZWQuLjIzNGUzMWRhZWJiZDRkZGFhMzZhMWU5MDUzMTFlYjk5MjJmYWE2
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCkBAIC0zOCw3ICszOCw3
IEBAIGNsYXNzIEF1ZGlvQnVzOwogICAgIAogLy8gTXVsdGktY2hhbm5lbCBjb252b2x1dGlvbiBy
ZXZlcmIgd2l0aCBjaGFubmVsIG1hdHJpeGluZyAtIG9uZSBvciBtb3JlIFJldmVyYkNvbnZvbHZl
ciBvYmplY3RzIGFyZSB1c2VkIGludGVybmFsbHkuCiAKLWNsYXNzIFJldmVyYiB7CitjbGFzcyBS
ZXZlcmIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGVudW0geyBNYXhGcmFtZVNpemUgPSAyNTYgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKaW5kZXggNTEyYjZh
ZGUzNDFhMjg1Njk3MmVlM2Y3YmNiMjExNjZiYjcyMWExZi4uYTYyODM1ZjljMGQ3ZDc0M2M5ZTky
N2NlZGUyZDZhMWRhNDU1ODQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKQEAgLTM2LDcgKzM2LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIGlzIGEgY2ly
Y3VsYXIgZGVsYXkgYnVmZmVyIHdpdGggb25lIGNsaWVudCByZWFkaW5nIGZyb20gaXQgYW5kIG11
bHRpcGxlIGNsaWVudHMKIC8vIHdyaXRpbmcvYWNjdW11bGF0aW5nIHRvIGl0IGF0IGRpZmZlcmVu
dCBkZWxheSBvZmZzZXRzIGZyb20gdGhlIHJlYWQgcG9zaXRpb24uICBUaGUgcmVhZCBvcGVyYXRp
b24gd2lsbCB6ZXJvIHRoZSBtZW1vcnkKIC8vIGp1c3QgcmVhZCBmcm9tIHRoZSBidWZmZXIsIHNv
IGl0IHdpbGwgYmUgcmVhZHkgZm9yIGFjY3VtdWxhdGlvbiB0aGUgbmV4dCB0aW1lIGFyb3VuZC4K
LWNsYXNzIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciB7CitjbGFzcyBSZXZlcmJBY2N1bXVsYXRp
b25CdWZmZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAK
aW5kZXggMTQ1ZGY4MWUyYTZiYTJjMmRhYTliYjQxZTZiNWNhYmFmMzg1ZjkxYy4uYTljOTM1YzFh
Mjg1YWIxMzYyZDhmZjFkZjhjZWJhNWE3ZTVhYTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFJl
dmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3Bv
bnNlLCBzaXplX3QgcmVuZGVyU2xpCiAKICAgICAgICAgYm9vbCB1c2VEaXJlY3RDb252b2x2ZXIg
PSAhc3RhZ2VPZmZzZXQ7CiAKLSAgICAgICAgYXV0byBzdGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmV2ZXJiQ29udm9sdmVyU3RhZ2U+KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZl
cmJUb3RhbExhdGVuY3ksIHN0YWdlT2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBo
YXNlLCByZW5kZXJTbGljZVNpemUsICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29u
dm9sdmVyKTsKKyAgICAgICAgYXV0byBzdGFnZSA9IG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9sdmVy
U3RhZ2U+KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZlcmJUb3RhbExhdGVuY3ks
IHN0YWdlT2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBoYXNlLCByZW5kZXJTbGlj
ZVNpemUsICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVyKTsKIAogICAg
ICAgICBib29sIGlzQmFja2dyb3VuZFN0YWdlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKaW5kZXggNWI4MTllMWEzZTZmNGZi
MWY4ZGIwYzU5Njk3MjYyYWFjMDljNmJkZS4uMzIwMGI0NWVhOGRmN2MyMWNlNmZhMzdlMDhiYjI3
OTFmOGFlNWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
Q29udm9sdmVyLmgKQEAgLTQzLDggKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBdWRpb0NoYW5uZWw7CiAKLWNsYXNzIFJldmVyYkNvbnZvbHZlciB7CitjbGFzcyBSZXZlcmJD
b252b2x2ZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFJldmVyYkNvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gbWF4RkZU
U2l6ZSBjYW4gYmUgYWRqdXN0ZWQgKGZyb20gc2F5IDIwNDggdG8gMzI3NjgpIGRlcGVuZGluZyBv
biBob3cgbXVjaCBwcmVjaXNpb24gaXMgbmVjZXNzYXJ5LgogICAgIC8vIEZvciBjZXJ0YWluIHR3
ZWFreSBkZS1jb252b2x2aW5nIGFwcGxpY2F0aW9ucyB0aGUgcGhhc2UgZXJyb3JzIGFkZCB1cCBx
dWlja2x5IGFuZCBsZWFkIHRvIG5vbi1zZW5zaWNhbCByZXN1bHRzIHdpdGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcApp
bmRleCAwZmRlNDIxYWYyZjgyZmQ0ODc0ZDk0ZjZhZjFkNjM0NzIzOWM2NTZlLi40ZmY5NTNiMjYw
NDkxN2QzNDUyMDM5NDA1YjY1ZGUyYmQ1YTFlYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCkBAIC01NSwxNiAr
NTUsMTYgQEAgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKGNvbnN0
IGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCwKICAgICBBU1NFUlQoYWNjdW11bGF0aW9u
QnVmZmVyKTsKIAogICAgIGlmICghbV9kaXJlY3RNb2RlKSB7Ci0gICAgICAgIG1fZmZ0S2VybmVs
ID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0S2Vy
bmVsID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CiAgICAgICAgIG1fZmZ0S2VybmVs
LT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2UgKyBzdGFnZU9mZnNldCwgc3RhZ2VMZW5ndGgp
OwotICAgICAgICBtX2ZmdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RkZUQ29udm9sdmVy
PihmZnRTaXplKTsKKyAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBtYWtlVW5pcXVlPEZGVENvbnZv
bHZlcj4oZmZ0U2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFzdGFnZU9mZnNl
dCk7CiAgICAgICAgIEFTU0VSVChzdGFnZUxlbmd0aCA8PSBmZnRTaXplIC8gMik7CiAKLSAgICAg
ICAgbV9kaXJlY3RLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZmZ0
U2l6ZSAvIDIpOworICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IG1ha2VVbmlxdWU8QXVkaW9GbG9h
dEFycmF5PihmZnRTaXplIC8gMik7CiAgICAgICAgIG1fZGlyZWN0S2VybmVsLT5jb3B5VG9SYW5n
ZShpbXB1bHNlUmVzcG9uc2UsIDAsIHN0YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9kaXJlY3RDb252
b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERpcmVjdENvbnZvbHZlcj4ocmVuZGVyU2xpY2VTaXpl
KTsKKyAgICAgICAgbV9kaXJlY3RDb252b2x2ZXIgPSBtYWtlVW5pcXVlPERpcmVjdENvbnZvbHZl
cj4ocmVuZGVyU2xpY2VTaXplKTsKICAgICB9CiAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYWxsb2Nh
dGUocmVuZGVyU2xpY2VTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKaW5kZXggYTA0OTA5NzAzNDBhYjNiMzM2MDBi
MDg5ZTU5ODQ3NGZiM2Q0NTVlNi4uM2MwM2JlMzQxYjNiN2Q2NDYyMWRjODAzODE2NjkzNjBmNGRi
NGM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJD
b252b2x2ZXJTdGFnZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIERpcmVjdENvbnZvbHZlcjsK
ICAgICAKIC8vIEEgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgcmVwcmVzZW50cyB0aGUgY29udm9sdXRp
b24gYXNzb2NpYXRlZCB3aXRoIGEgc3ViLXNlY3Rpb24gb2YgYSBsYXJnZSBpbXB1bHNlIHJlc3Bv
bnNlLgogLy8gSXQgaW5jb3Jwb3JhdGVzIGEgZGVsYXkgbGluZSB0byBhY2NvdW50IGZvciB0aGUg
b2Zmc2V0IG9mIHRoZSBzdWItc2VjdGlvbiB3aXRoaW4gdGhlIGxhcmdlciBpbXB1bHNlIHJlc3Bv
bnNlLgotY2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgeworY2xhc3MgUmV2ZXJiQ29udm9sdmVy
U3RhZ2UgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IC8vIHJlbmRlclBoYXNlIGlzIHVzZWZ1bCB0byBrbm93IHNvIHRoYXQgd2UgY2FuIG1hbmlwdWxh
dGUgdGhlIHByZSB2ZXJzdXMgcG9zdCBkZWxheSBzbyB0aGF0IHN0YWdlcyB3aWxsIHBlcmZvcm0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5o
CmluZGV4IGJiMDZlNGVlZDYzM2YwZTdjNjgyZTIwZTRlNmE1NzJhYTFmYWE5NjYuLmFmOWVkMDBk
NzMzZTg0MmI2ZWQzYTY0NzQ4NTQyMGQzYzc2Nzc1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaApAQCAtMzQsNyArMzQsOCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBSZXZlcmJJbnB1dEJ1ZmZlciBpcyB1c2VkIHRvIGJ1
ZmZlciBpbnB1dCBzYW1wbGVzIGZvciBkZWZlcnJlZCBwcm9jZXNzaW5nIGJ5IHRoZSBiYWNrZ3Jv
dW5kIHRocmVhZHMuCi1jbGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciB7CitjbGFzcyBSZXZlcmJJbnB1
dEJ1ZmZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgUmV2ZXJiSW5wdXRCdWZmZXIoc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAppbmRleCAyZmNkODlmN2Vj
YTM3NTg1ODYzMWE5YjI3NjVhMTBkMjAxYjM0MWM3Li5jMTMyZjVkOTc2MmM3NTY2YjIzMjVjMDY0
YjI4ZGU4YjZlMzkwMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9TaW5jUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
U2luY1Jlc2FtcGxlciBpcyBhIGhpZ2gtcXVhbGl0eSBzYW1wbGUtcmF0ZSBjb252ZXJ0ZXIuCiAK
LWNsYXNzIFNpbmNSZXNhbXBsZXIgeworY2xhc3MgU2luY1Jlc2FtcGxlciBmaW5hbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAgLy8gc2NhbGVGYWN0b3Ig
PT0gc291cmNlU2FtcGxlUmF0ZSAvIGRlc3RpbmF0aW9uU2FtcGxlUmF0ZQogICAgIC8vIGtlcm5l
bFNpemUgY2FuIGJlIGFkanVzdGVkIGZvciBxdWFsaXR5IChoaWdoZXIgaXMgYmV0dGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaAppbmRleCAyNjZiY2FmOTgwZDcy
NmZhMmY2MzdjZmU5M2E1ZDRjMzhiMjRlZTA2Li42NzVlZTRhZDBjNDQ2N2NkMWRkNmQxZDUxNjEx
ZTc3Yjk4YzRjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9V
cFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIu
aApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVwU2FtcGxlciB1
cC1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBV
cFNhbXBsZXIgeworY2xhc3MgVXBTYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVcFNhbXBsZXIoc2l6ZV90IGlucHV0Qmxv
Y2tTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Q
b2xlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCmluZGV4IDgz
MWRlOTA5M2IwMDU2MTZiNGJkNzdlYTdiMDc3OGMzN2RhYTdiNmUuLjAyZmZhY2Q1ZWFjYTdjZTI3
NTg5MmJlOGQ2NDM5NGM3MzNkYzdkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1plcm9Qb2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
WmVyb1BvbGUuaApAQCAtMzMsNyArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFpl
cm9Qb2xlIGlzIGEgc2ltcGxlIGZpbHRlciB3aXRoIG9uZSB6ZXJvIGFuZCBvbmUgcG9sZS4KIAot
Y2xhc3MgWmVyb1BvbGUgeworY2xhc3MgWmVyb1BvbGUgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFplcm9Qb2xlKCkKICAgICAgICAgOiBtX3plcm8o
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1
ZGlvQnVmZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2Vi
QXVkaW9CdWZmZXJMaXN0LmgKaW5kZXggODZiNjVhMjI1M2FmMWFlYjJhMWNhOWNhYTM2Njc4NmNk
N2Q2NTUyMC4uOGE3ZTdhMDNhYzMzYTRlNTVjNDNjMzFhZWM2MzdiMTg5Y2IxYzdlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9C
dWZmZXJMaXN0LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiAKLWNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdCA6
IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CitjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3QgZmlu
YWwgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgewogcHVibGljOgogICAgIFdlYkF1ZGlvQnVm
ZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
dWludDMyX3Qgc2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIuY3BwCmluZGV4IDViZjhmZGE2YjI5MTJiMThmMTE5MGRjYmU3MDgyYmY2ODRiZWU5OGYuLjFh
NTQ5NWZkNzY0ZDljM2NjNmVkYjU4MWZhNDgwZWFlYWQxNDU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2Fs
bGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAg
ICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhh
bmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyPihjYWxsYmFjaywgc2Ft
cGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9E
ZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggOGFmODc3ZWMyYzRjYTBhYmQzMDc0ODM1ZjU0YjM0
YWViZjA0MzNhMi4uNGJkZTdlNDFlMmI2NDM3Y2QwZmY3MjVlNGQwNzlkNjhmODllN2RjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRp
b25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcApAQCAtODAsNyArODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9E
ZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2Fs
bAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAgICAgIExPRyhNZWRp
YSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBvdXRw
dXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9EZXN0
aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0KIAogZmxvYXQg
QXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmluZGV4IGRjNmM4
YmNjZTM2OWQwNmFlZGM4ZmQzMzNjNzM4YzBiZTk1NzVkZDQuLjYzOTgyNDBiYmQ4ZDk2NzMwMmRm
N2U5ZWNmZjQwNzUwMmRhNmUyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtNTksNiArNTksNyBAQCBzdGF0aWMg
Y29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIGNhdGVn
b3J5KQogI2VuZGlmCiAKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9T
ZXNzaW9uKik7CiAgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJy
aWRlOwpAQCAtNzEsNyArNzIsNyBAQCBBdWRpb1Nlc3Npb25Qcml2YXRlOjpBdWRpb1Nlc3Npb25Q
cml2YXRlKEF1ZGlvU2Vzc2lvbiopCiB9CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkK
LSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KHRo
aXMpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhp
cykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCA3NjRhMzQ3Zjk4MjllMWU4NDc1YmQy
ZWExMjgwYWExNzUwMjZlY2ZjLi45ZmU2NGJhYWE0Nzg0ZmVjZGFiM2Q2ZGRiNWUyNzgzODFlMWUw
NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9E
ZXN0aW5hdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxi
YWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAg
TE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5k
bGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQog
CiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFT
b3VyY2UubW0KaW5kZXggNzdkNDMxNjU2Njk5MGU5MDFiOTIwYmY3NzhkOTY5ZTlmMThmMTg4YS4u
NDFhZmUzOWYyMzJhZTU4ODA4NjBmMDg0ZDU1NmNiNGE1ZDhhZTI1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291
cmNlLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNl
OjpzZXRJbnB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGYKIHsKICAg
ICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAotICAgIG1faW5wdXREZXNjcmlw
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQp
OworICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPihmb3JtYXQpOwogICAgIGlmIChtX291dHB1dERlc2NyaXB0aW9uKQogICAgICAgICBy
ZXR1cm4gc2V0dXBDb252ZXJ0ZXIoKTsKIApAQCAtMTIwLDkgKzEyMCw5IEBAIE9TU3RhdHVzIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbiYKICAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQo
Zm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAotICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKKyAgICBt
X291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+
KGZvcm1hdCk7CiAgICAgaWYgKCFtX3JpbmdCdWZmZXIpCi0gICAgICAgIG1fcmluZ0J1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAgICAgICBtX3JpbmdCdWZmZXIg
PSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKIAogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2Nh
dGUoZm9ybWF0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbWF4aW11bVNhbXBsZUNvdW50KSk7CiAg
ICAgbV9zY3JhdGNoQnVmZmVyID0gQXVkaW9TYW1wbGVCdWZmZXJMaXN0OjpjcmVhdGUobV9vdXRw
dXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24oKSwgbV9tYXhpbXVtU2FtcGxlQ291bnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vz
c2lvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNz
aW9uTWFjLmNwcAppbmRleCA3ZjZlZjlkMzNkYjFmYjQ3ZTdjZjE0YzU5MDRhNDYxMTJiMTUyMjMy
Li5jYzA0ZjBiZTMwOTc0OThiODM2NmU5MjQyMDczZWNlM2UxOTc1YWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcApA
QCAtNjIsNyArNjIsNyBAQCBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKIH07CiAKIEF1ZGlv
U2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvU2Vzc2lvblByaXZhdGU+KGlzTXV0ZWQoKSkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVu
aXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKaW5kZXggMThhMjZh
YjZkYzVjOGRkMDEyNTJkYjA2NDZkNGY1YjliNDdiNmZmNS4uMDRhY2VmYzhkYWFkNzEzMjhhNGRk
ZmFiYmQwNGFmOWVjZDhlYjk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9DQVJpbmdCdWZmZXIuaApAQCAtMzksNiArMzksNyBAQCB0eXBlZGVmIHN0cnVjdCBB
dWRpb0J1ZmZlckxpc3QgQXVkaW9CdWZmZXJMaXN0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQVJpbmdCdWZmZXJTdG9yYWdlKCkgPSBkZWZhdWx0Owog
ICAgIHZpcnR1YWwgdm9pZCBhbGxvY2F0ZShzaXplX3QpID0gMDsKQEAgLTQ2LDcgKzQ3LDcgQEAg
Y2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CiAgICAgdmlydHVhbCB2b2lkKiBkYXRhKCkgPSAw
OwogfTsKIAotY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvciA6IHB1YmxpYyBDQVJpbmdC
dWZmZXJTdG9yYWdlIHsKK2NsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IgZmluYWwgOiBw
dWJsaWMgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CiBwdWJsaWM6CiAgICAgfkNBUmluZ0J1ZmZlclN0
b3JhZ2VWZWN0b3IoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRGVjb2RlckNGLmNwcAppbmRleCBiOTgwM2JmYTAyMzI0MzU3YzBkZmUwNDczMTNkMmMz
ZWMzMDRjYjkyLi43YTQ3ZjU2MDhiYmI2ZGU5ZDM3NzNiMTdlOThlNDc2NGEyNDIyMmM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVj
b2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckNGPihkYXRh
LCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJDRj4oZGF0YSwgc2l6
ZSk7CiB9CiAKIEtleWVkRGVjb2RlckNGOjpLZXllZERlY29kZXJDRihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcAppbmRleCAxYTYyN2VhMDBiOTJjYmFhNmNmN2MzNTVkNWU0NDVlYzQ4NjFhNDEy
Li40NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0zNCw3ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5
ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXll
ZEVuY29kZXJDRj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJDRj4oKTsK
IH0KIAogc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVEaWN0
aW9uYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcAppbmRleCBiNjg5MjI4MDVlNWQzNzNkZTdmMGFlZDc4OTA4MjVh
Y2NjYzEyMDM5Li4wN2E0NWNhZDc4YjZkNDM3ZmFhODQyNTI2OTljMGQ0ODZkNzhlZDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZl
cigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9i
c2VydmVyOwogICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxl
YXNlKCk7CisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBvd2VyT2JzZXJ2ZXI+
KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24g
PSBmYWxzZTsKICAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCAxMmFiMzIxY2I0NzcyYmU3MDAxNTAw
ZjE5NmY3OGI2ZWJlNWUyYmQ1Li4wNWM1NTI0ZGVmYzc3NzYxMWRmNzVmNDliMTkxZDdmZDY5ZjQ1
ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtNjUsNyArNjUsNyBAQCBib29s
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlcjo6aW5pdGlhbGl6ZShjb25zdCBVUkwqIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW0KaW5kZXggYWUwYmQyMDljY2Q2ZjMxN2M5MTkzMjVhMTZhMThhOTljZDE1NzJlNC4u
MGQyYTYyMTg2YjVhNTRlMmI4NTFmZjk2ZDUyODEwMWY4NDY2ZjQwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW0KQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXI+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5kbGVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGU4MzY5YzZlNTAxNmUyM2NmODczYjk1
MzdkMmFmYjRmMGJjNjg1MjIuLjhmZTM4YWQwY2NlMmZkNTQyZDI5NzAxN2ZkYTJkMWNiMzU1Yjc3
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJv
bGxlci5tbQpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRl
U2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yCiAgICAg
ICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGU+KCk7CisgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbWFrZVVuaXF1ZTxTY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsKICAgICB9CiAKICAgICBpZiAoc25hcFBvaW50cy5pc0Vt
cHR5KCkgJiYgbV9zY3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRzRm9yQXhpcyhvdGhlclNjcm9s
bEV2ZW50QXhpcyhheGlzKSkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CmluZGV4IDUwM2Y5N2I5MjAxOGRhODdjMjQ4ODkxYjIyNjc5YWJiNzAwNWIzMDAuLjk2Yzg1MTI5
MzVhYjliNjk4ZTg5ODU1MTYzYmI2ZDIyYWM5YjgyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
Q0RNRmFjdG9yeUNsZWFyS2V5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZQogI2Vs
c2UKICAgICBBU1NFUlQoc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7CiAjZW5kaWYKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOwogfQogCiBib29sIENETUZhY3Rv
cnlDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCBkNDczMDRjOTViMjZlZjIwNGY1ZGE0YWRjYmI4
YTA4NjRkZTE4YmIzLi4wYjkxMDY0OWNhNGE0N2E5MTVkNTQ4YzlkOTRhZmZmMzM1MzU5MjY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUZh
Y3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBDRE1GYWN0b3J5Q2xlYXJLZXkmIHNpbmdsZXRvbigpOwogCkBAIC01NCw2ICs1NSw3IEBAIGNs
YXNzIENETUZhY3RvcnlDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAK
IGNsYXNzIENETVByaXZhdGVDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJL
ZXkoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXkoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFk
UHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGY3MjBjZmQzMzQzZjliYWQzM2E0OTE5
YTc4Zjg2NmY5ZDg2MmEwYWQuLjVhNmViNDA0MzllZjU5MDU3MmE3YzI5ZWZjMzM4ZDkyZjIzOWM1
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtNjEs
NyArNjEsNyBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVy
RGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIgKmNvbnRyb2xsZQogICAgIExPRyhHYW1lcGFkLCAiR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxlciAlcCBhZGRlZCIsIGNvbnRyb2xs
ZXIpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNl
KCk7Ci0gICAgYXV0byBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1ZTxHYW1lQ29udHJvbGxlckdh
bWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKKyAgICBhdXRvIGdhbWVwYWQgPSBtYWtlVW5pcXVl
PEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOwogCiAgICAgaWYgKG1f
Z2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5n
cm93KGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1l
cGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
Yy9ISURHYW1lcGFkLmgKaW5kZXggMTVmMDRjNzA4ZTkwMDdiYjRkYWRlZTU0MzVjMzU3ZjAyZjUz
MWM5My4uYTI1MjM0ZmI4NzVhNzUxYzYzYzM3YmE2YTVjZWU3ZDQ1MzRkNWE5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMzYs
NiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgSElER2FtZXBhZEVsZW1l
bnQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBISURHYW1lcGFk
RWxlbWVudChkb3VibGUgdGhlTWluLCBkb3VibGUgdGhlTWF4LCBJT0hJREVsZW1lbnRSZWYgZWxl
bWVudCkKICAgICAgICAgOiBtaW4odGhlTWluKQogICAgICAgICAsIG1heCh0aGVNYXgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBh
ZFByb3ZpZGVyLmNwcAppbmRleCA1NzQzOTFiNWMxMTFhMzJiZTkxMjVjYTZjZTA2MDBmNWQ2Mzgy
MjU3Li42ZDE0YjZiMjE2MTBiODZjZTRjMDAxM2U1MDkxMWI4OGY5NWUxYTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQ
cm92aWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6
ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAgIExPRyhHYW1lcGFkLCAiSElE
R2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CiAKICAgICB1bnNpZ25l
ZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SElER2FtZXBhZD4gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8SElER2FtZXBhZD4o
ZGV2aWNlLCBpbmRleCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQg
PSBtYWtlVW5pcXVlPEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2Ft
ZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93
KGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRleCBhNGEzMGI1MmFiZTQ4YWY4NTBkYzdjNzQ3
YTNiY2RlMWQ1MWZkYTVmLi4wZTU5NzIzMjFiNWY3M2Y1NzJiZDc5NjU4ODExZjAwM2E5NWVkNDky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rl
ckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRE
ZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgS2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6RGljdGlvbmFyeSB7CiAgICAgdXNpbmcgTm9kZSA9IFZhcmlhbnQ8VmVjdG9yPHVpbnQ4
X3Q+LCBib29sLCB1aW50MzJfdCwgdWludDY0X3QsIGludDMyX3QsIGludDY0X3QsIGZsb2F0LCBk
b3VibGUsIFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+LCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXk+PjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRkKGNv
bnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgc3RkOjptYWtlX3Vu
aXF1ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KKyAgICB2b2lkIGFkZChjb25z
dCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9k
ZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmlu
ZyYga2V5KSB7IHJldHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KIAogcHJpdmF0ZToKQEAgLTc3LDcg
Kzc3LDcgQEAgc3RhdGljIGJvb2wgcmVhZFNpbXBsZVZhbHVlKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXImIGRlY29kZXIsIEtleWVkRGVjb2RlckdlbmUKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVk
RGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdlbmVy
aWM+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdlbmVy
aWM+KGRhdGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJH
ZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpAQCAtODYsNyArODYsNyBA
QCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogICAgIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGUgdHlwZTsK
ICAgICBTdHJpbmcga2V5OwogCi0gICAgbV9yb290RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlx
dWU8RGljdGlvbmFyeT4oKTsKKyAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0
aW9uYXJ5PigpOwogICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChtX3Jvb3REaWN0aW9uYXJ5
LmdldCgpKTsKIAogICAgIGJvb2wgb2sgPSB0cnVlOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEtleWVk
RGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgYXV0byogY3VycmVudERpY3RpbmFyeSA9IG1fZGljdGlvbmFyeVN0YWNr
Lmxhc3QoKTsKLSAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlx
dWU8RGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VV
bmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVu
ZChuZXdEaWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAgICAgIGN1cnJlbnREaWN0aW5hcnktPmFk
ZChrZXksIFdURk1vdmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
NTYsMTMgKzE1NiwxMyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmlj
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgb2sgPSByZWFk
U3RyaW5nKGRlY29kZXIsIGtleSk7CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8
QXJyYXk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheT4o
KTsKICAgICAgICAgICAgIG1fYXJyYXlTdGFjay5hcHBlbmQobmV3QXJyYXkuZ2V0KCkpOwogICAg
ICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0Fy
cmF5KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEtleWVk
RW5jb2RlckdlbmVyaWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50OiB7Ci0gICAgICAgICAgICBh
dXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAg
ICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAg
ICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7
CiAgICAgICAgICAgICBtX2FycmF5U3RhY2subGFzdCgpLT5hcHBlbmQoV1RGTW92ZShuZXdEaWN0
aW9uYXJ5KSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDJmODQxMDQ3
NDYzOTU1OGYyOTVlODFhNTE3MTlhODczNGIzMmQ1OGEuLjIxY2MxZWJlNGE5MDFhMTNjNzQ0MDNk
YzAxY2YyZmM4MTgxMzAxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5j
b2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNv
ZGVyR2VuZXJpYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmlj
PigpOwogfQogCiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmluZyhjb25zdCBT
dHJpbmcmIGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
U2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCA3YWU2NWM1YThkMzA5ZTNkZWVmNTNj
ZThjZjFlMzAyNDI2ZDI3YzE0Li4yMDhhZjdiODQ3OWVjYWVmNTUzMGNjYzU1N2I3MzZlYmFiY2Jj
YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFu
aW1hdG9yR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9T
Y3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAgc3RhdGljIGNvbnN0
IFNlY29uZHMgc2Nyb2xsQ2FwdHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBzdGQ6OnVuaXF1
ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmlt
YXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1f
b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKLSAgICBtX2tpbmV0
aWNBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1f
c2Nyb2xsYWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX2tp
bmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Ny
b2xsYWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICNpZiBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAg
ICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CkBA
IC03Myw3ICs3Myw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhT
Y3JvbGxpbmdBbmltYXRpb24oKQogICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bEFuaW1hdGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0
aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1h
a2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJl
bnRQb3NpdGlvbiwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogICAgICAgICB1cGRh
dGVQb3NpdGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAppbmRleCBlN2RkMTkx
NDA0MTcxOTY4ZjkwZDZmZWEzMzU0ZTE0Y2VmNmY1NTY3Li4zNjFlOWRmMzI0NWJlNTY1YjBlMmE0
MWRmMThiMjZmZmJjNzE5Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRGVjb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29k
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2Rl
ckdsaWI6OktleWVkRGVjb2RlckdsaWIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNw
cAppbmRleCA3NDA0YmNiZDQ0OWFhNDkyMWI4Y2UyYjdlMDE4NDQ5NTAxMDZmNjgwLi43MGQyNGMx
MTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXll
ZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVk
RW5jb2RlckdsaWI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyR2xpYj4o
KTsKIH0KIAogS2V5ZWRFbmNvZGVyR2xpYjo6S2V5ZWRFbmNvZGVyR2xpYigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZjFjOTBl
NTk4ODkzYWRhODM0NzlmYzdiMzgzYTkwYTUzNWJmMmE5OS4uYjJiZDQ3Y2IxNjE0Y2RhZTVkODll
ZWExN2I0MmM0Nzg2YmMyZDliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmNsZWFyVGltZXIoKQogdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihTZWNvbmRzIGRl
bGF5KQogewogICAgIEFTU0VSVCghbV9mcmFtZVRpbWVyKTsKLSAgICBtX2ZyYW1lVGltZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0
aW9uKTsKKyAgICBtX2ZyYW1lVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1h
cEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hv
dChkZWxheSk7CiB9CiAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNl
dEFuaW1hdGlvbigpCiB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2RlY29kaW5nQ2FsbGJhY2tzKQotICAgICAg
ICBtX2RlY29kaW5nQ2FsbGJhY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnVuY3Rpb248
dm9pZCgpPiwgMT4+KCk7CisgICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBtYWtlVW5pcXVl
PFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4oKTsKIAogICAgIG1fZGVjb2RpbmdDYWxsYmFj
a3MtPmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4
IDBkMzU1NjE4OTcwZmIyNzdmNzJlNzg5OTBlM2Y0ZjJhMjE2ZmJjNjkuLjM1M2ZjYTY2MDEzMjY0
YjAyNDYyYTU3MTIyNGQwNWExODFkOTY4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNzcs
NyArNzcsNyBAQCBjbGFzcyBUZXh0TGF5b3V0IHsKICAgICBUZXh0TGF5b3V0KFJlbmRlclRleHQm
IHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB4UG9zKQogICAgICAgICA6IG1f
Zm9udChmb250KQogICAgICAgICAsIG1fcnVuKGNvbnN0cnVjdFRleHRSdW4odGV4dCwgeFBvcykp
Ci0gICAgICAgICwgbV9jb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleFRleHRDb250
cm9sbGVyPihtX2ZvbnQsIG1fcnVuLCB0cnVlKSkKKyAgICAgICAgLCBtX2NvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxDb21wbGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUpKQogICAg
IHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9p
bnQuaAppbmRleCA3MjA0NTNkOWYwNDZkNzlmNDhhMDliODFhZjcwMDBmNGRlM2JlMDI1Li5jZWZk
OGQ0MjI0NGQwNmZjYjgyNGJlNWUzYjczNDE5Y2Q0OThhNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNz
IEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgRmxvYXRQb2ludCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCgpIHsgfQogICAg
IEZsb2F0UG9pbnQoZmxvYXQgeCwgZmxvYXQgeSkgOiBtX3goeCksIG1feSh5KSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTg0YjQ0YjA3YTQxMjIx
NmI5ZWM1OTg0MjJmMDc4N2YwZTZjN2FlYi4uZTBiNDlmMjQ3YzIwMDliZGQ1ZjFkMGM4ZWJhN2Fk
NmM3ZWI4Y2JkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
QEAgLTM5NCw3ICszOTQsNyBAQCBHbHlwaERhdGEgRm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KFVDaGFyMzIgY2hhcmFjdGVyKSBjb25zdAogYXV0byBGb250OjplbnN1cmVEZXJpdmVkRm9udERh
dGEoKSBjb25zdCAtPiBEZXJpdmVkRm9udHMmCiB7CiAgICAgaWYgKCFtX2Rlcml2ZWRGb250RGF0
YSkKLSAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRG
b250cz4oKTsKKyAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBtYWtlVW5pcXVlPERlcml2ZWRG
b250cz4oKTsKICAgICByZXR1cm4gKm1fZGVyaXZlZEZvbnREYXRhOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggMmU1OGJkNjllYmI1MzkxZTAzNmQyOGMy
NzAyYzFmNDUwNTA4YjMxMi4uNTQ0YjBiNzExOGFiMmY5MDgwNzQ5ZTQ0MWU1MTQ5ZjA1MThmMmUx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMjY5LDkgKzI2
OSw3IEBAIGNsYXNzIEZvbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250PiB7CiAjZW5kaWYKIAog
ICAgIHN0cnVjdCBEZXJpdmVkRm9udHMgewotI2lmICFDT01QSUxFUihNU1ZDKQotICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSNlbmRpZgorICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogCiAgICAgICAgIFJlZlB0cjxGb250PiBzbWFs
bENhcHNGb250OwpAQCAtMzQ1LDcgKzM0Myw3IEBAIEFMV0FZU19JTkxJTkUgRmxvYXRSZWN0IEZv
bnQ6OmJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogCiAgICAgYm91bmRzID0gcGxh
dGZvcm1Cb3VuZHNGb3JHbHlwaChnbHlwaCk7CiAgICAgaWYgKCFtX2dseXBoVG9Cb3VuZHNNYXAp
Ci0gICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8R2x5cGhNZXRy
aWNzTWFwPEZsb2F0UmVjdD4+KCk7CisgICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IG1ha2VV
bmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7CiAgICAgbV9nbHlwaFRvQm91bmRz
TWFwLT5zZXRNZXRyaWNzRm9yR2x5cGgoZ2x5cGgsIGJvdW5kcyk7CiAgICAgcmV0dXJuIGJvdW5k
czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
CmluZGV4IDBhNjJhMjc1YmM2OTJlZjM5OTExNDBlMDI4ZjU4MDA0MjFkMGM3MTEuLjM3MDliNDFl
YjJiN2JkMGJmN2IxMDJhYzVkYmVmZTJmNzc3M2FmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIEZvbnRQ
bGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvCiAgICAgICAgICAgICAgICAgaXQgPSBmb250UGxhdGZvcm1EYXRh
Q2FjaGUoKS5maW5kKGtleSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ICE9IGZvbnRQbGF0
Zm9ybURhdGFDYWNoZSgpLmVuZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZm9udFBsYXRmb3Jt
RGF0YUZvckFsdGVybmF0ZU5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGl0LT52YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRl
cm5hdGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaXQtPnZhbHVlID0gbWFrZVVuaXF1ZTxG
b250UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDcyNzRkYjBkYjMyYjNiNDFiM2UwZTFi
MWVkMGZiMmFlYThiMzZhM2IuLjY0ODE4ZjRiNTE1NWQ0MmJmYWM4MWI2MWY0YjVmOWNkZWE1NDUy
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgUmVmPEZvbnRDYXNjYWRlRm9udHM+IHJl
dHJpZXZlT3JBZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aQogICAgICAg
ICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Zm9udHMuZ2V0KCk7CiAKICAgICBh
dXRvJiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgbmV3RW50cnkg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBG
b250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CisgICAgbmV3
RW50cnkgPSBtYWtlVW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBG
b250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CiAgICAgUmVm
PEZvbnRDYXNjYWRlRm9udHM+IGdseXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQoKTsKIAogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQcnVuZUludGVydmFsID0gNTA7CkBA
IC0zMjYsOSArMzI2LDkgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAgICBpZiAoZ2x5cGhC
dWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IHN0ZDo6
bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0IHJlY29yZGlu
Z0NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxh
eUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCks
IEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxp
c3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5z
dGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIH0pOwogICAgIAog
ICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChzdGFydFgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAppbmRleCBkYjc0
MzAyZTlkYWE0ZWI1MmMwY2UwODFmZDU2MDUyNzk1NzhmYmY0Li4xMmFjODM3ZmNkMjQ2NWY5Zjgx
ZGViMDY4N2FhNzc2ZDVlYTA2NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lk
IEZvbnRDYXNjYWRlRm9udHM6OkdseXBoUGFnZUNhY2hlRW50cnk6OnNldEdseXBoRGF0YUZvckNo
YXJhY3RlcihVQ2hhcjMyIGNoYQogewogICAgIEFTU0VSVCghZ2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KGNoYXJhY3RlcikuZ2x5cGgpOwogICAgIGlmICghbV9taXhlZEZvbnQpIHsKLSAgICAgICAgbV9t
aXhlZEZvbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVG
b250LmdldCgpKTsKKyAgICAgICAgbV9taXhlZEZvbnQgPSBtYWtlVW5pcXVlPE1peGVkRm9udEds
eXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKICAgICAgICAgbV9zaW5nbGVGb250ID0gbnVs
bHB0cjsKICAgICB9CiAgICAgbV9taXhlZEZvbnQtPnNldEdseXBoRGF0YUZvckNoYXJhY3Rlcihj
aGFyYWN0ZXIsIGdseXBoRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDI1OWU5NzUzM2NhZWRjZmMxNDVmZjdhYjQy
OGVhMTY5ZjY0YjE1OTQuLjc5ZTJmNTM4OGM0NmU1ODkyMzAxNjFjNDc0NTI1NDE5MjQ3ZTgyYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmlj
c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmlj
c01hcC5oCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB0eXBlbmFtZSBH
bHlwaE1ldHJpY3NNYXA8VD46OkdseXBoTWV0cmljc1BhZ2UmIEdseXBoTWV0cmljc01hcAogICAg
IH0KIAogICAgIGlmICghbV9wYWdlcykKLSAgICAgICAgbV9wYWdlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+KCk7Cisg
ICAgICAgIG1fcGFnZXMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8
R2x5cGhNZXRyaWNzUGFnZT4+PigpOwogCiAgICAgYXV0byYgcGFnZSA9IG1fcGFnZXMtPmVuc3Vy
ZShwYWdlTnVtYmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdseXBo
TWV0cmljc1BhZ2U+KHVua25vd25NZXRyaWNzKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygpKTsKICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgcmV0dXJuICpwYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0MDhjZmI3ZDFlMmRiOThmN2Fk
YzgzYmJjMzNiODFiOWFmMTIxYjBjLi40NDdkN2UzZTM1NDc2MmU4MGI4ZjI3YTk1MjYyMzIyNzli
NWY5MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtNTU3LDYgKzU1Nyw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7
CiAgICAgYm9vbCBzaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKCkgY29uc3Q7CiAKICAgICBjbGFz
cyBXaW5kb3dzQml0bWFwIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbmRvd3NCaXRtYXApOwogICAgIHB1YmxpYzoKICAg
ICAgICAgV2luZG93c0JpdG1hcChIREMsIGNvbnN0IEludFNpemUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgKaW5kZXggMWI0MjI4NmRkZjQ2NWMwZTJiMTI0ZDhhZmRmMGY3Y2Q2NDc3Y2JiNy4uZTMz
ZjhmYmU3Mzg5MmUzNGI4ZGVmODM2ZDQ2ZjVjNzBjNzljNjFkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFw
VGV4dHVyZUdMOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZShHcmFwaGljc0NvbnRleHQzRCosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAg
ICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDBiYWQ0ZTcw
NjM0MjE5OTg2ODk0NDkyZGZlNmY2MWQzMTc4ODE5ZDMuLmI4NzMxOTRlZTI0NjAxZmU0ZTA3MTQ3
YWE3MWVhMzA1ODdhODRhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3JhcGhpY3NDb250
ZXh0SW1wbCk7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0SW1wbChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5jcHAKaW5kZXggOTRhYWMxZGY4MzU2YmRiMTBkZjdkMDg2ZmFjZTI2YzFlMzcxODMyNi4uNmNk
MDBjMjY1NzBkOWRiM2I5ZmFhN2UyMDIzYWYxYTVlN2U2M2EwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXI6OnN1cHBvcnRzQ29udGVudHNUaWxpbmcoKQogI2Vu
ZGlmCiAKIC8vIFNpbmdsZXRvbiBjbGllbnQgdXNlZCBmb3IgbGF5ZXJzIG9uIHdoaWNoIGNsZWFy
Q2xpZW50IGhhcyBiZWVuIGNhbGxlZC4KLWNsYXNzIEVtcHR5R3JhcGhpY3NMYXllckNsaWVudCA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKK2NsYXNzIEVtcHR5R3JhcGhpY3NMYXllckNs
aWVudCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgRW1wdHlHcmFwaGljc0xheWVyQ2xp
ZW50JiBzaW5nbGV0b24oKTsKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6
OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogICAgIGlm
IChtX3RyYW5zZm9ybSkKICAgICAgICAgKm1fdHJhbnNmb3JtID0gbWF0cml4OwogICAgIGVsc2UK
LSAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0
cml4PihtYXRyaXgpOworICAgICAgICBtX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBH
cmFwaGljc0xheWVyOjpjaGlsZHJlblRyYW5zZm9ybSgpIGNvbnN0CkBAIC0zNTYsNyArMzU2LDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4KQogICAgIGlmIChtX2NoaWxkcmVuVHJhbnNmb3JtKQogICAg
ICAgICAqbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1hdHJpeDsKICAgICBlbHNlCi0gICAgICAgIG1f
Y2hpbGRyZW5UcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4
PihtYXRyaXgpOworICAgICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyOjpzZXRN
YXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYgbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggMDA5ZDQ4Njg5NWQ1
Njg2MjU0MDExZGY1NjAwYTcyMTEyNDMwZTYyZi4uN2ExZmVhYWM3OWU3OGJhODhmY2FkY2I4NWUz
Mjk5ZmQ3OWEwMDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIEZsb2F0QW5pbWF0aW9u
VmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFu
aW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAK
ICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KQEAgLTEzMiw3ICsx
MzIsNyBAQCBjbGFzcyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25W
YWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAgICAgVHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmIG90aGVyKQpAQCAtMTYz
LDcgKzE2Myw3IEBAIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlv
blZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmls
dGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmls
dGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBGaWx0ZXJBbmltYXRpb25W
YWx1ZShjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggOGVjZjMzZjg5OGI3NDQ5MTFmNzA1YTE0
OWZmNzg4YjY3YjZkOTRlZi4uMzk5OTY3MmI5ZjU4OTMyODZjZjMyZGIxY2M2YjgwYTMzMTgyYWRj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0
aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljCiB2b2lkIEltYWdlOjpzdGFydEFu
aW1hdGlvbkFzeW5jaHJvbm91c2x5KCkKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9uU3RhcnRUaW1l
cikKLSAgICAgICAgbV9hbmltYXRpb25TdGFydFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1l
cj4oKnRoaXMsICZJbWFnZTo6c3RhcnRBbmltYXRpb24pOworICAgICAgICBtX2FuaW1hdGlvblN0
YXJ0VGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkltYWdlOjpzdGFydEFuaW1hdGlv
bik7CiAgICAgaWYgKG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+aXNBY3RpdmUoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9u
LmgKaW5kZXggYmU3Njc2MGY4ZTM1NjVkNDI2NzJiMDA1YTk2ZGNkYjdmYTRiMmQ2OS4uMjVlNzlh
NmRjMGE1YjIxOTNhNzJhMjI3YWFjYTE3NzNhN2UzYzI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaApAQCAtMzMsNiArMzMs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5M
ZWdhY3lDRE1TZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBzZW5k
TWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNzU3
ZjA5NTY3ZGM1ZGZkZjViZTAyNjM5NjM5ZDFlZmVjNzE4YzBkYi4uYWJlODY5NDE5NGZmN2MxNzUx
MDBiNjk4ODA0YTEyNDBiZDYyYzg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIGNsYXNzIE51bGxN
ZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlIHsKIAogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IDA7IH0KICAgICBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
MDsgfQotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9
CiAKICAgICBkb3VibGUgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gMDsgfQpAQCAtMzU1LDcgKzM1NSw3IEBAIFJlZjxNZWRpYVBsYXll
cj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogTWVkaWFQ
bGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2Ns
aWVudCgmY2xpZW50KQogICAgICwgbV9yZWxvYWRUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyOjpy
ZWxvYWRUaW1lckZpcmVkKQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8TnVsbE1l
ZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxs
TWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKIHsKIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVy
RmFjdG9yeSogY3VycmVudCkKICNlbmRpZgogICAgICAgICBtX3ByaXZhdGUtPmxvYWQobV91cmwu
c3RyaW5nKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcHJpdmF0ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcyk7CisgICAgICAgIG1fcHJpdmF0ZSA9
IG1ha2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcyk7CiAgICAgICAgIGNsaWVu
dCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCh0aGlzKTsKICAgICAgICAgY2xpZW50KCkubWVk
aWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4
IDAwZDg1YTQ5OTY0MmIzZjUyMzdiMzBiZmY1ZjRlNmI0MjkxMzBlY2QuLjFkMmZjMDA5MjA0YThj
MDI1NTQxYjJhMmQ3YzVmMGQwYmU1Yzk5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xMjksNyArMTI5LDcg
QEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAotICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBj
b25zdCB7IHJldHVybiBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1Rp
bWUoKSA/IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpIDogc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1l
ZGlhVGltZVNlZWthYmxlKCkpOyB9CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heE1lZGlhVGltZVNlZWth
YmxlKCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpID8gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vl
a2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1h
eFRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIE1lZGlhVGlt
ZSBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRl
V2l0aERvdWJsZShtYXhUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5U
aW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCmluZGV4IDNlNjg4MDU1YmRjYzBi
MTBlNDE2MGNmMTQwZDRmYWNlOTIzMjBhNjUuLjVhZDkzMzQ5YmZiNDBkYTRmZjMwOGFkYTk4NDk3
ZmMzNzVlMTA4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhVdGlsaXRpZXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEZsb2F0UG9pbnRHcmFwaDo6Tm9k
ZSogRmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2RlKEZsb2F0UG9pbnQgcG9pbnQpCiAg
ICAgICAgICAgICByZXR1cm4gdGVzdE5vZGUuZ2V0KCk7CiAgICAgfQogCi0gICAgbV9hbGxOb2Rl
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFBvaW50R3JhcGg6Ok5vZGU+KHBvaW50KSk7
CisgICAgbV9hbGxOb2Rlcy5hcHBlbmQobWFrZVVuaXF1ZTxGbG9hdFBvaW50R3JhcGg6Ok5vZGU+
KHBvaW50KSk7CiAgICAgcmV0dXJuIG1fYWxsTm9kZXMubGFzdCgpLmdldCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAppbmRleCA5ZGNlZTg3NjE2
MjVjMDE0ODhiNGQ5MGQxYWYyMmUzNTQzNWQ0YTVlLi42YTcwMWMxYTEyODk3OWQ0Yzk0OGIxYTdi
YWI1NjhmMTAyNDdjZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5jcHAKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIFJlZ2lvbjo6c2V0U2hhcGUoU2hhcGUm
JiBzaGFwZSkKICAgICB9CiAKICAgICBpZiAoIW1fc2hhcGUpCi0gICAgICAgIG1fc2hhcGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBlKSk7CisgICAgICAgIG1fc2hhcGUg
PSBtYWtlVW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBlKSk7CiAgICAgZWxzZQogICAgICAgICAq
bV9zaGFwZSA9IFdURk1vdmUoc2hhcGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uaAppbmRleCA3OTYzM2ZkYjZhZGYzNGZmZmVlOGY4MjY3NDgzYjhjZmY1Y2Ux
ZjNjLi5iYzM5YzMwMDAwZWE4YjZiNWE5ZTYwY2YyYmM1YWUxODY2NjRiNmM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaApAQCAtOTEsNiArOTEsNyBAQCBjbGFz
cyBSZWdpb24gewogICAgIH07CiAKICAgICBjbGFzcyBTaGFwZSB7CisgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgU2hhcGUoKSA9IGRlZmF1bHQ7
CiAgICAgICAgIFNoYXBlKGNvbnN0IEludFJlY3QmKTsKQEAgLTE0OCw3ICsxNDksNyBAQCBjbGFz
cyBSZWdpb24gewogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlJiwg
Y29uc3QgU2hhcGUmKTsKICAgICB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjb3B5
U2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4o
Km1fc2hhcGUpIDogbnVsbHB0cjsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY29weVNo
YXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IG1ha2VVbmlxdWU8U2hhcGU+KCptX3NoYXBl
KSA6IG51bGxwdHI7IH0KICAgICB2b2lkIHNldFNoYXBlKFNoYXBlJiYpOwogCiAgICAgSW50UmVj
dCBtX2JvdW5kczsKQEAgLTI4OSw3ICsyOTAsNyBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGRlY29kZXIgPj4gc2hhcGU7CiAgICAg
ICAgIGlmICghc2hhcGUpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAg
ICByZWdpb24ubV9zaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+KFdURk1vdmUoKnNoYXBl
KSk7CisgICAgICAgIHJlZ2lvbi5tX3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92ZSgq
c2hhcGUpKTsKICAgICB9CiAKICAgICByZXR1cm4geyByZWdpb24gfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0
aW9uLmNwcAppbmRleCAxZTRlN2ZhYzM2YzdjMzBhNjU2ZjFlZmQwMGFhY2U2ZDRjOTVjZWRhLi42
OTM5ZjkxN2FlNmZhYjEzZWMxYzkxZDRhYTgxNTU2NmE5MTcwZGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24uY3BwCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIE51bGxUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbiA6IHB1YmxpYyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiB7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0
ZShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCmluZGV4IDdh
ZWI3NTliMzRiMThhMWU4NDY4M2YyOWM2MTZhNmNkYjAyNTc0ZDguLjZhMDZjYzZlYmEzNGI5NTlk
MmYxODYwMjI5ZTFmMmYzOGZmMzE5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCkBAIC02NSw2ICs2NSw3IEBAIHN0cnVjdCBWZWxvY2l0
eURhdGEgIHsKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IFZlbG9jaXR5RGF0YSYpOwogCiBjbGFzcyBIaXN0b3JpY2FsVmVsb2NpdHlEYXRh
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIaXN0b3JpY2Fs
VmVsb2NpdHlEYXRhKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUu
Y3BwCmluZGV4IDc3YTNlMThjMWM2YzJlMjdkZDYzYWUyOTZmNmVjOWExZWEyZmFlMWYuLjYxMjYw
ZTljODNkYzRhNTUyODU3MWM5OWQ0YTI3MDViMTZjYTRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dDNEQU5HTEUuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAg
ICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNEQU5HTEU+KHRo
aXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlx
dWU8RXh0ZW5zaW9uczNEQU5HTEU+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAgcmV0
dXJuICptX2V4dGVuc2lvbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbC5oCmluZGV4IGE5ZWNkMzIxMzZkYTg3NzAyZjQ3OGFmY2Q4YWNjOGViOTdj
MjM5NDAuLjk5ZGRkZDhmODUwMjczMDNiYjhhNzYzZWNhYzJiODY5ODgyZmE5OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaApAQCAtNDQsNiArNDQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9i
akM7CiAKIGNsYXNzIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGwoQVZQbGF5ZXJJdGVtVHJhY2sqKTsKICAgICBleHBsaWNpdCBBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsKEFWQXNzZXRUcmFjayopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IDVjZDc3NzJhYzJlZTFjZWE5MDEwZTgzMzcxZWE2
YWFlZjdmMDY5NTguLjZiM2M5MjJlNmFlYmU1OTIwYWU2NWU1N2FmMDVlZGU0YWQwMzc0M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9B
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAg
LTMxMywxMiArMzEzLDEyIEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBh
cmUoQ01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0cmVhCiB7CiAgICAgQVNTRVJU
KG1heEZyYW1lcyA+PSAwKTsKIAotICAgIG1fdGFwRGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOworICAg
IG1fdGFwRGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpwcm9jZXNzaW5nRm9ybWF0KTsKICAgICBpbnQgbnVt
YmVyT2ZDaGFubmVscyA9IHByb2Nlc3NpbmdGb3JtYXQtPm1DaGFubmVsc1BlckZyYW1lOwogICAg
IGRvdWJsZSBzYW1wbGVSYXRlID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bVNhbXBsZVJhdGU7CiAgICAg
QVNTRVJUKHNhbXBsZVJhdGUgPj0gMCk7CiAKLSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CisgICAgbV9vdXRw
dXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tU2FtcGxl
UmF0ZSA9IHNhbXBsZVJhdGU7CiAgICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUZvcm1hdElEID0g
a0F1ZGlvRm9ybWF0TGluZWFyUENNOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1Gb3JtYXRG
bGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQ7CkBAIC0zMzgsNyArMzM4
LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3Vu
dCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEKICAgICAvLyBNYWtlIHRoZSByaW5nYnVmZmVy
IGxhcmdlIGVub3VnaCB0byBzdG9yZSBhdCBsZWFzdCB0d28gY2FsbGJhY2tzIHdvcnRoIG9mIGF1
ZGlvLCBvciAxcywgd2hpY2hldmVyIGlzIGxhcmdlci4KICAgICBzaXplX3QgY2FwYWNpdHkgPSBz
dGQ6Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+KDIgKiBtYXhGcmFtZXMpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGtSaW5nQnVmZmVyRHVyYXRpb24gKiBzYW1wbGVSYXRlKSk7CiAKLSAgICBtX3JpbmdC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICBtX3JpbmdCdWZm
ZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9j
YXRlKENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbigqcHJvY2Vzc2luZ0Zvcm1hdCksIGNhcGFjaXR5
KTsKIAogICAgIC8vIEF1ZGlvQnVmZmVyTGlzdCBpcyBhIHZhcmlhYmxlLWxlbmd0aCBzdHJ1Y3Qs
IHNvIGNyZWF0ZSBvbiB0aGUgaGVhcCB3aXRoIGEgZ2VuZXJpYyBuZXcoKSBvcGVyYXRvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggMzYxYTk5MmYwYzQ2
NTBjZjJiOTYyOGE2NDJlOTdiNWRiYTBlMmEzYy4uNGZjNjc4N2RkOGQ5MDdjYWQ2YTI3N2YzOWIx
ZWQzMmVkNjc5YTZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwCkBAIC0yMzQsNyArMjM0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IENETUZh
Y3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYKICAgICBpZiAo
IXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZz4o
KTsKIH0KIAogYm9vbCBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuaAppbmRleCA4OTE4ZTgwZTBjMzkwZDdlOGRhY2ExOTAzOTQ3OWEwZDBmNjk1YWQ4
Li41Mzg2OTY5Zjk0OTc2ZjM4MzY4MDE4NzQxYmFmZDEyNTUxZTI4Yjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgRm91ckNDOwogCiBjbGFzcyBDRE1GYWN0b3J5RmFpclBsYXlTdHJl
YW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyYg
c2luZ2xldG9uKCk7CiAKQEAgLTQ5LDYgKzUwLDcgQEAgY2xhc3MgQ0RNRmFjdG9yeUZhaXJQbGF5
U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgewogfTsKIAogY2xhc3MgQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETVByaXZhdGUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5k
ZXggNGE1MGViNDFhNTgzNjgzZjY2YTY3NjIyOTU0NmM1ODAxYjIwYjU4OC4uZDgxYmNhMzU0OTAz
OTE4YTFiZGEwYWRkZDk1OGQ1OTQzZjcwMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIExl
Z2FjeUNETTsKIGNsYXNzIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM7CiAKIGNsYXNzIENE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhMZWdhY3lDRE0qIGNkbSkKICAgICAgICAgOiBtX2Nk
bShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCmluZGV4IDJjYzA4YTlhM2I1MWNiZjdhYjE5NzQyMDJhOThiMTY5ZGI0M2MxMDEuLjBj
ZDAxMjlhM2NkOWVhZjg2M2FkNDc4OTgzODUwMzFkOGI3NmVmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xNDcsMTAgKzE0
NywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbihMZQogI2VuZGlmCiAgICAgCiAgICAgaWYgKHNo
b3VsZFVzZUFWQ29udGVudEtleVNlc3Npb24gJiYgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b246OmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENE
TVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5w
cm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7Cisg
ICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
PihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVl
KCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7CiAgICAgZWxzZQogI2lmIEhBVkUoQVZTVFJFQU1T
RVNTSU9OKQotICAgICAgICBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZT
dHJlYW1TZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCAqdGhp
cywgY2xpZW50KTsKKyAgICAgICAgc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWU3Ry
ZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgKnRoaXMs
IGNsaWVudCk7CiAjZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0Zh
aXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCmluZGV4IGU0NjAx
NDgzMDVjZWVkMWI1NjQ4NDE5OTZjYjlmYzM0Y2RjM2FiNTIuLjE0N2MzNzlmMTI3MDY4MmU1NWZk
MjE1Y2UyM2EzOWVhMTI0OTVhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBs
YXlTdHJlYW1pbmdQc3NoQm94LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3gg
OiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0luZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNpIjsgfQogCkBAIC00Miw3
ICs0Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0Jv
eCA6IHB1YmxpYyBJU09GdWxsQm94IHsKICAgICBGb3VyQ0MgbV9zY2hlbWU7CiB9OwogCi1jbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IDog
cHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdLZXlSZXF1ZXN0SW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrcmkiOyB9CiAK
QEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXF1ZXN0SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKICAgICBLZXlJRCBtX2tl
eUlEOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlB
c3NldElkQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrYWkiOyB9CiAg
ICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0K
QEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlBc3NldElkQm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
ZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma2N4IjsgfQog
ICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBt
X2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tl
eVZlcnNpb25MaXN0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IGZpbmFsIDogcHVibGljIElTT0Jv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJm
a3ZsIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiB2ZXJzaW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fdmVyc2lvbnM7IH0KQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggewog
ICAgIFZlY3Rvcjx1aW50OF90PiBtX3ZlcnNpb25zOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IDogcHVibGljIElTT0JveCB7Citj
bGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggZmlu
YWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVO
YW1lKCkgeyByZXR1cm4gImZwc2siOyB9CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggOiBwdWJsaWMgSVNP
Qm94IHsKICAgICBPcHRpb25hbDxJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94
PiBtX3ZlcnNpb25MaXN0OwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlT
dHJlYW1pbmdJbml0RGF0YUJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3gg
ewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBz
ZCI7IH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8SVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94PiBtX3JlcXVlc3RzOwogfTsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94IDogcHVibGljIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggZmluYWwgOiBwdWJsaWMgSVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBmYWlyUGxheVN5c3RlbUlEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggODU3ZjMxZjI3NzJm
NDA4MWZiYTYzOGY4MTBjMTE0OTQyODU4Yjk0Yi4uNTljZjhiYTIxMzE2YjMwN2MwNTAyM2VkNTZk
OWIzOWQyNTYxN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmJ1
ZmZlcmVkKCkgYwogICAgIGlmICghbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKQogICAgICAgICBt
X2NhY2hlZExvYWRlZFRpbWVSYW5nZXMgPSBwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNo
ZWRMb2FkZWRUaW1lUmFuZ2VzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KCptX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjptYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXgg
Mzk1Y2U3ODJlOGM1ODA0NTk2MTYyNDY5ODBmMzNlYWRmMDNiNzhiMi4uNWY1YjZmNjk1MmI0OTNh
OTg4N2JhZmM3ZjMwYjdiZWU3MzM0MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjOjp+V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYygpID0gZGVmYXVsdDsKIFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXImIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJN
YWM6OnBsYXRmb3JtUGlja2VyKCkKIHsKICAgICBpZiAoIW1fdGFyZ2V0UGlja2VyKQotICAgICAg
ICBtX3RhcmdldFBpY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1hYz4oKnRoaXMpOworICAgICAgICBtX3RhcmdldFBpY2tlciA9IG1ha2VVbmlxdWU8TWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX3Rhcmdl
dFBpY2tlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0YuaAppbmRleCA3NjA4YTAxNzI2M2IzMDQ0NGNhYmU1MzVmZGE0NGM5OWZmYWYx
MWYyLi5kNjE2N2I4NzY4OTk5ZGMwNDk0NzUzODIwZDlhMmJjN2JlZDA2NGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oCkBAIC0zOCw2ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOwogCiBjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YgZmluYWwgOiBwdWJs
aWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGJiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKaW5kZXggYWYwYTdjYzc3YmYyOTJjZGZkNjZhYmM2ZTdmNjNhNTA5MDBhYWQ2Ny4uM2I3
MGU3NjYzOWU1OTQwYWYxZjJiMWQ1YmYyNjczYWUzMmRlY2ExMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
CkBAIC05OCw2ICs5OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiBjbGFzcyBMYXllckNsaWVu
dDsKIAogY2xhc3MgQVZGV3JhcHBlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQVZGV3JhcHBlcihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiop
OwogICAgIH5BVkZXcmFwcGVyKCk7CkBAIC0yMTMsNiArMjE0LDcgQEAgY2xhc3MgQVZGV3JhcHBl
ciB7CiB1aW50cHRyX3QgQVZGV3JhcHBlcjo6c19uZXh0QVZGV3JhcHBlck9iamVjdElEOwogCiBj
bGFzcyBMYXllckNsaWVudCA6IHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExheWVyQ2xpZW50KEFWRldyYXBw
ZXIqIHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHsgfQogICAgIHZpcnR1YWwgfkxheWVyQ2xp
ZW50KCkgeyBtX3BhcmVudCA9IDA7IH0KQEAgLTM0Myw3ICszNDUsNyBAQCBzdGF0aWMgZGlzcGF0
Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVn
aXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRT
dXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCBzdXBwb3J0c0tleVN5c3RlbSk7
CiB9CiAKQEAgLTY3Miw3ICs2NzQsNyBAQCBzdGF0aWMgYm9vbCB0aW1lUmFuZ2VJc1ZhbGlkQW5k
Tm90RW1wdHkoQ01UaW1lIHN0YXJ0LCBDTVRpbWUgZHVyYXRpb24pCiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpw
bGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2Vz
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1l
UmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBpZiAoIWF2
UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAg
LTExMzcsNyArMTEzOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lvCiAgICAgaWYgKCFrZXlT
eXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25DRj4oKnRo
aXMsIGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlv
bkNGPigqdGhpcywgY2xpZW50KTsKIH0KIAogI2VsaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCkBAIC0xNjQxLDYgKzE2NDMsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnBlcmlvZGljVGlt
ZU9ic2VydmVyQ2FsbGJhY2soQVZDRlBsYXllclJlZiwgQ01UaW1lIGNtVGltZSwgdm9pZAogfQog
CiBzdHJ1Y3QgTm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtX3Byb3BlcnR5TmFt
ZTsKICAgICB2b2lkKiBtX2NvbnRleHQ7CiAKQEAgLTE3MDgsNyArMTcxMSw3IEBAIHZvaWQgQVZG
V3JhcHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZv
aWQqIG9ic2VydmVyLCBDCiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9u
Q2FsbGJhY2soaWY9JWQpICVzIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9ic2VydmVy
KSwgbm90aWZpY2F0aW9uTmFtZSk7CiAjZW5kaWYKIAotICAgIGF1dG8gbm90aWZpY2F0aW9uRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPihwcm9wZXJ0eU5h
bWUsIG9ic2VydmVyKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbkRhdGEgPSBtYWtlVW5pcXVlPE5v
dGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4ocHJvcGVydHlOYW1lLCBvYnNlcnZlcik7CiAKICAgICBk
aXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG5vdGlmaWNhdGlvbkRh
dGEucmVsZWFzZSgpLCBwcm9jZXNzTm90aWZpY2F0aW9uKTsKIH0KQEAgLTE3ODUsNiArMTc4OCw3
IEBAIHZvaWQgQVZGV3JhcHBlcjo6c2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNv
bnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlCiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJ
QV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NV
UFBPUlQpCiBzdHJ1Y3QgTGVnaWJsZU91dHB1dERhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9hdHRyaWJ1dGVkU3Ry
aW5nczsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9zYW1wbGVzOwogICAgIE1lZGlhVGlt
ZSBtX3RpbWU7CkBAIC0xODMzLDcgKzE4MzcsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVP
dXRwdXRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdQog
CiAgICAgQVNTRVJUKGxlZ2libGVPdXRwdXQgPT0gc2VsZi0+bV9sZWdpYmxlT3V0cHV0KTsKIAot
ICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2libGVPdXRw
dXREYXRhPihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0b01l
ZGlhVGltZShpdGVtVGltZSksIGNvbnRleHQpOworICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEg
PSBtYWtlVW5pcXVlPExlZ2libGVPdXRwdXREYXRhPihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0aXZl
U2FtcGxlQnVmZmVycywgUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIGNvbnRleHQpOwogCiAg
ICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBsZWdpYmxlT3V0
cHV0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NDdWUpOwogfQpAQCAtMTg0MSw2ICsxODQ1LDcgQEAg
dm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZD
RlBsYXllckl0ZW1MZWdpYmxlT3V0cHUKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9E
RUxFR0FURSkKIHN0cnVjdCBMb2FkUmVxdWVzdERhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBSZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdFJlZj4gbV9yZXF1ZXN0OwogICAgIHZvaWQqIG1fY29udGV4dDsKIApAQCAtMTkyNiw3ICsx
OTMxLDcgQEAgQm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXMKIAogICAgIExPRyhNZWRpYSwgIkFWRldy
YXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291
cmNlKCVwKSIsIHNlbGYpOwogCi0gICAgYXV0byBsb2FkUmVxdWVzdERhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9hZGluZ1JlcXVlc3QsIGNvbnRleHQpOworICAgIGF1
dG8gbG9hZFJlcXVlc3REYXRhID0gbWFrZVVuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdS
ZXF1ZXN0LCBjb250ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgbG9hZFJlcXVlc3REYXRhLnJlbGVhc2UoKSwgcHJvY2Vzc1Nob3VsZFdhaXRG
b3JMb2FkaW5nT2ZSZXNvdXJjZSk7CiAKQEAgLTE5NTMsNyArMTk1OCw3IEBAIFBsYXRmb3JtTGF5
ZXIqIEFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IC8vIENyZWF0ZSBhIFBsYXRmb3JtQ0FMYXllciBzbyB3ZSBjYW4gcmVzaXplIHRoZSB2aWRlbyBs
YXllciB0byBtYXRjaCB0aGUgZWxlbWVudCBzaXplLgotICAgIG1fbGF5ZXJDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKTsKKyAgICBtX2xheWVyQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CiAgICAgaWYgKCFtX2xheWVyQ2xpZW50KQogICAg
ICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUxNGFmMWEyN2YyNmJkMWFkNjAyODYwNGE1NzUyZjBk
ZjlhOGRmNTIuLjdkZTE0YzI1NzFmN2QzOGVlY2JiMzQ4ZmRhM2M3NGE0M2RlYjgyYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0K
QEAgLTMzLDEzICszMywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayog
dHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9
CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKE1l
ZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAgIDogbV9pbXBsKHN0ZDo6bWFr
ZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKKyAgICA6IG1faW1w
bChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCiB7CiAgICAg
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lk
IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKEFWUGxheWVySXRl
bVRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJh
Y2soKTsKIH0KIApAQCAtNjksMTQgKzY5LDE0IEBAIEFWUGxheWVySXRlbVRyYWNrKiBBdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiB9CiAKIEF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2sp
Ci0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
Pih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIHZv
aWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAq
dHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9
CiAKQEAgLTg3LDcgKzg3LDcgQEAgQVZBc3NldFRyYWNrKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OmFzc2V0VHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVk
aWFTZWxlY3Rpb25PcHRpb24oTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCiB7
Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
PihvcHRpb24pOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4ob3B0aW9uKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGVjMGQwZWRkYmY3M2JlZWRhNjcxN2I3YTUxOGM3
MzIxMjYwOTVhZTIuLmRmNTIyNmE0ZWEwMzZlNTZmYTI1MzlhNjI3NjJhMjM4YWU3MGUwYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiAgICAgLCBtX3BhcmVudChw
YXJlbnQpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CkBAIC01Miw3ICs1Miw3
IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlc2V0UHJvcGVy
dGllc0Zyb21UcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBt
X2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAg
ICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjJhYWZlYzdiODM0
MjdiODEzMGE3YzA0M2Y4ZjY3MjA4MzRjY2E0Ny4uNWQ4ZTI1MDc0NzBiYzdhNDk5OTU1Yzk4MWIx
NzZmZjQ0NGZiYzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIAotY2xhc3Mg
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPiB7CitjbGFzcyBD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9u
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIExl
Z2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDI0YjJhMTdkOTc3ZWJiZjA1MzM1MGM1NWQ5ZDQwOWE2
MTI3OTYzOGYuLjM5ZWE4ZTUxMTM2MzJhZTc0YmY1MzY0YThkMWIwMjY5NzIyMWFhNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIAogY2xhc3MgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQyA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakNFcnJvckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKENETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lv
bk1lZGlhU291cmNlQVZGT2JqQygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0KaW5kZXggNTQ4MjBkMjI1MTk3ZGI3ZjliZTczZjRmYmQyY2VjODc4Zjlh
ODAwOC4uMzI2ZGFkYmIxN2QwODkxMTcwZWI3NTQ1M2I2MzQ4ZDdmZTgzOTc4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC00MTIsNyArNDEy
LDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpyZWFkVHJhY2tNZXRhZGF0YSgpCiAgICAg
ICAgIHx8ICFtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKQogICAgICAgICB8fCBt
X2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKS52YWx1ZSgpICE9IGZpbmFsVHJhbnNm
b3JtCiAgICAgICAgIHx8IG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNpemUoKSAhPSBzaXplKQot
ICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgc2l6ZSwga0NWUGl4ZWxG
b3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0
aWJsZTo6WWVzKTsKKyAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8
SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNpemUsIGtD
VlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFn
ZUNvbXBhdGlibGU6Olllcyk7CiAKICAgICBtX3NpemUgPSBleHBhbmRlZEludFNpemUobV9pbWFn
ZVJvdGF0aW9uU2Vzc2lvbi0+cm90YXRlZFNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCA1Y2QyMjQwM2FhMmMyZWY2MjJlMzAwZDAwNzQxZmMwYzMzMzliZjM2Li43ZmMwMThh
ZTU4ZWFmNTI1NjBkZWU2YjM0YTFhOTdjZTdkMDFkMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYQogICAgIGlmICgh
aXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQ
bGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgQVNTRVJUKEFW
QXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKIH0KQEAgLTM2
Niw3ICszNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJgogCiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24o
cGxheWVyKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjptYWtlX3Vu
aXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92aWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXJPYmpDPigpKQogICAgICwgbV92aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpW
aWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpCiAgICAgLCBtX29iamNPYnNlcnZlcihhZG9wdE5TKFtb
V2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVyOm1ha2VXZWFrUHRy
KCp0aGlzKV0pKQogICAgICwgbV92aWRlb0ZyYW1lSGFzRHJhd24oZmFsc2UpCkBAIC0xMzM3LDcg
KzEzMzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFBy
ZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRm
b3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5nZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRpbWVSYW5n
ZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIAogICAgIGlmICghbV9hdlBs
YXllckl0ZW0pCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwpAQCAtMTg5Miw3ICsxODkyLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVSb3RhdGlv
blNlc3Npb24oKQogICAgICAgICAmJiBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXplKCkgPT0g
bmF0dXJhbFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW1hZ2VSb3RhdGlvblNlc3Np
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmlu
YWxUcmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKKyAgICBtX2lt
YWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihX
VEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8z
MkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7
CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0yMjE2LDcgKzIyMTYsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRh
dGVUeXBlIHR5cGUpCiAjZWxzZQogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBu
aWw7CiAjZW5kaWYKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilh
dHRyaWJ1dGVzKTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1
dGVzKTsKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTIyNjUsNyArMjI2
NSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgc2l6ZV90IGhlaWdodCA9IENWUGl4
ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKCFt
X3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CisgICAgICAgIG1f
dmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNv
bnRleHQpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1Bs
YXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0
cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwg
dHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQpAQCAtMjMzMCw3ICsyMzMwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3MKIHsKICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVk
KGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gc2Vzc2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVu
dCk7CisgICAgYXV0byBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQz4odGhpcywgY2xpZW50KTsKICAgICBtX3Nlc3Npb24gPSBtYWtlV2Vha1B0cigqc2Vzc2lv
bik7CiAgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oCmluZGV4IDczOTZlNWIxYjQzMTE5OGU1ZTYwZDhmY2QwNjM1OWJiMjdjZjQ5ZjcuLmExZGQw
ZjkwOTFmYjI4NjQ2OGRiZTBhZTEwY2U4YjNjMTQyYzBiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCkBAIC0yNjgsNiArMjY4LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDCiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM7
CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1NlZWsgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdTZWVrKGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0
VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9sZCwgY29uc3QgTWVkaWFUaW1l
JiBwb3NpdGl2ZVRocmVzaG9sZCkKICAgICAgICAgICAgIDogdGFyZ2V0VGltZSh0YXJnZXRUaW1l
KQogICAgICAgICAgICAgLCBuZWdhdGl2ZVRocmVzaG9sZChuZWdhdGl2ZVRocmVzaG9sZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBmMTk1MTU2ZDhjZjIyNTZmNjBmOWY1NTMyNDEy
OWU4NTIzZDlkMzhiLi45YzBhZWY2MTlhZGMyYTMxOGYwZGI3ZDJlMzg2N2MyMWRmYzMxZGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMoTWVkaWEKICAgICAsIG1fcGxheWluZygwKQogICAgICwgbV9zZWVraW5nKGZhbHNl
KQogICAgICwgbV9sb2FkaW5nUHJvZ3Jlc3NlZChmYWxzZSkKLSAgICAsIG1fdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlx
dWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fZWZmZWN0aXZl
UmF0ZUNoYW5nZWRMaXN0ZW5lcihFZmZlY3RpdmVSYXRlQ2hhbmdlZExpc3RlbmVyOjpjcmVhdGUo
KnRoaXMsIFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pKQogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQpAQCAtMjAx
LDcgKzIwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0CiAgICAgaWYgKCFpc0F2YWlsYWJs
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNU
eXBlLCAwLCAwLCAwLCAwKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmds
ZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBN
ZWRpYVRpbWUmIHRpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInRpbWUgPSAiLCB0aW1l
LCAiLCBuZWdhdGl2ZVRocmVzaG9sZCA9ICIsIG5lZ2F0aXZlVGhyZXNob2xkLCAiLCBwb3NpdGl2
ZVRocmVzaG9sZCA9ICIsIHBvc2l0aXZlVGhyZXNob2xkKTsKIAogICAgIG1fc2Vla2luZyA9IHRy
dWU7Ci0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1NlZWs+KHRp
bWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CisgICAgbV9wZW5kaW5n
U2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBw
b3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBpZiAobV9zZWVrVGltZXIuaXNBY3RpdmUoKSkKICAg
ICAgICAgbV9zZWVrVGltZXIuc3RvcCgpOwpAQCAtNTQzLDcgKzU0Myw3IEBAIE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVhZHlT
dGF0ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdAogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1l
U2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRp
bWVTZWVrYWJsZSgpKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdApAQCAtNTU4LDcgKzU1OCw3
IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om1pbk1l
ZGlhVGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpidWZmZXJlZCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNvdXJjZVBy
aXZhdGUtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0
ZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGlkTG9hZGluZ1Byb2dy
ZXNzKCkgY29uc3QKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKIAogICAgIGlmICghbV9yZ2JDb25m
b3JtZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gQHsgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBl
XzMyQkdSQSkgfTsKLSAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBp
eGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRl
cyk7CisgICAgICAgIG1fcmdiQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0KIAog
ICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVm
ZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKQEAgLTY0OSw3ICs2NDksNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYQogICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVp
Z2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVD
b3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxW
aWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNv
cGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKIAogICAg
IHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91
dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBjYTNi
MTEzNTUyYjM4ODVjOTk5NzdkYWUyYTIxZWExNjU3N2VkYTgwLi45ZGVlZTQ2ZjJjYTI0NTI5NTNk
ZjVjYTg4YmI2OWY4MThlN2U0ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0x
ODMsNyArMTgzLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWEKICAgICA6IG1fcGxheWVyKHBs
YXllcikKICAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkK
ICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3JlYXRlKCkpCi0gICAgLCBtX3ZpZGVvRnVsbHNj
cmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5p
cXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCiAg
ICAgLCBtX2xvZ0lkZW50aWZpZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSkK
QEAgLTIyMCw3ICsyMjAsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAg
ICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdl
dFN1cHBvcnRlZFR5cGVzLAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAgICAgICAgICAgc3VwcG9ydHNU
eXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTA1NCwxMiArMTA1NCwxMiBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlVHJhY2tzKCkKIAogc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMTA3Myw3ICsxMDczLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFt
ZUltYWdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhl
bEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25m
b3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQ
aXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfSk7CisgICAg
ICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRn
ZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVs
Rm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCiAgICAgQVNTRVJUKG1faW1hZ2VQYWludGVyLnBpeGVs
QnVmZmVyQ29uZm9ybWVyKTsKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29u
Zm9ybWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQy5jcHAKaW5kZXggYzg3MWM1OTQ4MzU1MDg1NzE4MmM3YTI0ZDU1MzRiODVhNWQ0ZWY3
ZS4uMjk0ODNiYTVlOThkOTVmYThlNWVjOWE2YTEwYmY2NDFhYWUzNTU5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9U
cmFja1ByaXZhdGVBVkZPYmpDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwCkBAIC0z
NCwxOSArMzQsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNr
KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiBW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0
VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1faW1wbChz
dGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCisgICAg
OiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQog
ewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkK
IAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBs
YXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVz
RnJvbVRyYWNrKCk7CiB9CiAKQEAgLTc3LDcgKzc3LDcgQEAgQVZQbGF5ZXJJdGVtVHJhY2sqIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRlbVRyYWNrKCkKIAogdm9pZCBWaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsK
LSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtODgs
NyArODgsNyBAQCBBVkFzc2V0VHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6YXNzZXRU
cmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdG9u
T3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQogewotICAgIG1faW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsK
KyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlv
bik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KaW5kZXggZmNjMjQ5NmExMzVhYTRmNzNhOGZlNTQ4ZDE0ZTBjODAwMDRhZDFiMC4u
OTc1NmNmZmFmZDhjM2Y2ZmUzYjQ3YTIzMzM3MWI3NGRlYzk4ZDA2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDKiBwYXJlbnQpCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiAgICAgLCBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBt
X3RyYWNrSUQoLTEpCiAgICAgLCBtX3NlbGVjdGVkKGZhbHNlKQpAQCAtNTYsNyArNTYsNyBAQCB2
b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNG
cm9tVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpz
ZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBs
ID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVz
ZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDE3MWYyNzcy
Yzk0YTY5Y2RhNzM0OTNjYzljOGM3ODc4YjAwMTA4ZGQuLjg3NjUzNDQ1MjAyNGU2MTY1MTQxN2Ew
NGEwZDk0NTA1OGE5NTQwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTYzNiwxMiArMTYzNiwxMiBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhDb21taXRTdGF0
ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgIGlmICh1c2VzRGlzcGxheUxpc3REcmF3aW5n
KCkgJiYgbV9kcmF3c0NvbnRlbnQgJiYgKCFtX2hhc0V2ZXJQYWludGVkIHx8IGhhZERpcnR5UmVj
dHMpKSB7CiAgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKERpc3BsYXlMaXN0UmVjb3Jk
U3RhcnQsIERpc3BsYXlMaXN0UmVjb3JkRW5kKTsKIAotICAgICAgICBtX2Rpc3BsYXlMaXN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisgICAgICAgIG1f
ZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKICAg
ICAgICAgCiAgICAgICAgIEZsb2F0UmVjdCBpbml0aWFsQ2xpcChib3VuZHNPcmlnaW4oKSwgc2l6
ZSgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChbJl0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNw
bGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAqbV9kaXNw
bGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5z
Zm9ybSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRz
KGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSkpOwogICAgIH0KQEAgLTI4
NjcsNyArMjg2Nyw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjppc1J1bm5pbmdUcmFuc2Zvcm1B
bmltYXRpb24oKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0
aW9ucygpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvbnMpCi0gICAgICAgIG1fYW5pbWF0aW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOworICAgICAgICBtX2FuaW1hdGlv
bnMgPSBtYWtlVW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKIH0KIAogdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYgY2FBbmltLCBB
bmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwg
aW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIFNlY29uZHMgdGltZU9mZnNldCkKQEAgLTM5MDMsNyAr
MzkwMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlE
IGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+CiAgICAgY29udGVudHNMYXllciA9IG51
bGxwdHI7CiAKICAgICBpZiAoIW1fbGF5ZXJDbG9uZXMpCi0gICAgICAgIG1fbGF5ZXJDbG9uZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xvbmVzPigpOworICAgICAgICBtX2xheWVyQ2xvbmVz
ID0gbWFrZVVuaXF1ZTxMYXllckNsb25lcz4oKTsKIAogICAgIHByaW1hcnlMYXllciA9IGZpbmRP
ck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLT5wcmltYXJ5
TGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwogICAgIHN0cnVjdHVyYWxMYXllciA9IGZpbmRPck1h
a2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllckNsb25lcy0+
c3RydWN0dXJhbExheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggM2FjNGMx
ZTMyYTE1NDhkNThjNjkxMTE3Y2M2OWEyOWM0ZGNmMGUxYS4uYzRiMmM5YzM0NzA4MGE2YjdjOTZk
NjcwMmY0YTRkOGEzMGM3ZjZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1Nyw2ICsxNTcsNyBAQCBjbGFz
cyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCB7CiAgICAgRmxvYXRTaXplIHBpeGVsQWxpZ25tZW50T2Zmc2V0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9waXhlbEFsaWdubWVudE9mZnNldDsgfQogCiAgICAgc3Ry
dWN0IENvbW1pdFN0YXRlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICB1bnNpZ25lZCB0cmVlRGVwdGggeyAwIH07CiAgICAgICAgIHVuc2lnbmVkIHRv
dGFsQmFja2Ryb3BGaWx0ZXJBcmVhIHsgMCB9OwogICAgICAgICBib29sIGFuY2VzdG9ySGFkQ2hh
bmdlcyB7IGZhbHNlIH07CkBAIC0zMDksNiArMzEwLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNB
IDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewog
ICAgIHR5cGVkZWYgdW5zaWduZWQgQ29tcHV0ZVZpc2libGVSZWN0RmxhZ3M7CiAgICAgCiAgICAg
c3RydWN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3Q7CiAgICAgICAg
IEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3Q7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFu
aW1hdGluZ1RyYW5zZm9ybTsKQEAgLTMyOCw2ICszMzAsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVy
Q0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7
CiAKICAgICAvLyBVc2VkIHRvIHRyYWNrIHRoZSBwYXRoIGRvd24gdGhlIHRyZWUgZm9yIHJlcGxp
Y2EgbGF5ZXJzLgogICAgIHN0cnVjdCBSZXBsaWNhU3RhdGUgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4UmVw
bGljYURlcHRoID0gMTY7CiAgICAgICAgIGVudW0gUmVwbGljYUJyYW5jaFR5cGUgeyBDaGlsZEJy
YW5jaCA9IDAsIFJlcGxpY2FCcmFuY2ggPSAxIH07CiAgICAgICAgIFJlcGxpY2FTdGF0ZShSZXBs
aWNhQnJhbmNoVHlwZSBmaXJzdEJyYW5jaCkKQEAgLTU3OSw2ICs1ODIsNyBAQCBjbGFzcyBHcmFw
aGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXll
ckNsaWVudCB7CiAKICAgICAvLyBSZWZlcmVuY2VzIHRvIGNsb25lcyBvZiBvdXIgbGF5ZXJzLCBm
b3IgcmVwbGljYXRlZCBsYXllcnMuCiAgICAgc3RydWN0IExheWVyQ2xvbmVzIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllck1hcCBwcmltYXJ5
TGF5ZXJDbG9uZXM7CiAgICAgICAgIExheWVyTWFwIHN0cnVjdHVyYWxMYXllckNsb25lczsKICAg
ICAgICAgTGF5ZXJNYXAgY29udGVudHNMYXllckNsb25lczsKQEAgLTYwOCw2ICs2MTIsNyBAQCBj
bGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRm
b3JtQ0FMYXllckNsaWVudCB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPEFu
aW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+PiBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOwogICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPj4gQW5p
bWF0aW9uc01hcDsKICAgICBzdHJ1Y3QgTGF5ZXJBbmltYXRpb25zIHsKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFu
aW1hdGlvbj4gdW5jb21pdHRlZEFuaW1hdGlvbnM7CiAgICAgICAgIEFuaW1hdGlvbnNUb1Byb2Nl
c3NNYXAgYW5pbWF0aW9uc1RvUHJvY2VzczsKICAgICAgICAgQW5pbWF0aW9uc01hcCBydW5uaW5n
QW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA0ZDY0YzJjNGIxOWIzMWI4MDU0YzFiYzQxYWMw
MjI1NzNiZWZmNTYyLi4zMDVlZmQzMzNiZDYxMWM2ZWY1ZTRjMWIyNjIyODg3NTI1NmYyNGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBUaWxlQ29udHJvbGxlcjo6em9v
bWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKQogVGlsZUNvbnRyb2xsZXI6OlRpbGVD
b250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgOiBtX3Rp
bGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rv
cihvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9y
KCkpCi0gICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkK
KyAgICAsIG1fdGlsZUdyaWQobWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQogICAgICwgbV90
aWxlUmV2YWxpZGF0aW9uVGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVJldmFsaWRh
dGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX3RpbGVTaXplQ2hhbmdlVGltZXIoKnRoaXMsICZUaWxl
Q29udHJvbGxlcjo6dGlsZVNpemVDaGFuZ2VUaW1lckZpcmVkLCB0aWxlU2l6ZVVwZGF0ZURlbGF5
KQogICAgICwgbV9tYXJnaW5FZGdlcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKQEAgLTEz
Miw3ICsxMzIsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0
IHNjYWxlKQogICAgIGlmIChtX3pvb21lZE91dENvbnRlbnRzU2NhbGUgJiYgbV96b29tZWRPdXRD
b250ZW50c1NjYWxlID09IHRpbGVHcmlkKCkuc2NhbGUoKSAmJiB0aWxlR3JpZCgpLnNjYWxlKCkg
IT0gc2NhbGUgJiYgIW1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2NhbGVGYWN0b3IpIHsKICAgICAg
ICAgbV96b29tZWRPdXRUaWxlR3JpZCA9IFdURk1vdmUobV90aWxlR3JpZCk7CiAgICAgICAgIG1f
em9vbWVkT3V0VGlsZUdyaWQtPnNldElzWm9vbWVkT3V0VGlsZUdyaWQodHJ1ZSk7Ci0gICAgICAg
IG1fdGlsZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7CisgICAgICAg
IG1fdGlsZUdyaWQgPSBtYWtlVW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7CiAgICAgICAgIHRpbGVH
cmlkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCBGbG9hdFJlY3QgVGls
ZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcoY29uc3QgRmxv
YXRSZWN0JiBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghbV9oaXN0b3Jp
Y2FsVmVsb2NpdHlEYXRhKQotICAgICAgICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlEYXRhPigpOworICAgICAgICAgICAg
bV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhID0gbWFrZVVuaXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlE
YXRhPigpOwogCiAgICAgICAgIG1fdmVsb2NpdHkgPSBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEt
PnZlbG9jaXR5Rm9yTmV3RGF0YShzY3JvbGxPZmZzZXQsIGNvbnRlbnRzU2NhbGUsIE1vbm90b25p
Y1RpbWU6Om5vdygpKTsKICAgICB9OwpAQCAtNjg1LDcgKzY4NSw3IEBAIEludFJlY3QgVGlsZUNv
bnRyb2xsZXI6OnRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdAogUGxhdGZvcm1DQUxheWVyKiBUaWxl
Q29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllcigpCiB7CiAgICAgaWYgKCFt
X2NvdmVyYWdlTWFwKQotICAgICAgICBtX2NvdmVyYWdlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxU
aWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IG1ha2VVbmlx
dWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CiAKICAgICByZXR1cm4gJm1fY292ZXJhZ2VNYXAt
PmxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IGE0ODUy
M2NmNTE3NmIzMWYyYWNjNDk4NGIyZWNkOGUyYzg3NGY2MDcuLjM2YWMyZjc4NGIwMDZmZjljNzAz
ZjQxZTdiZmY2ODdhMWFhNGM2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1t
CkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29tbW9uSW5p
dCgpCiAgICAgICAgIFdlYlRpbGVkQmFja2luZ0xheWVyKiB0aWxlZEJhY2tpbmdMYXllciA9IHN0
YXRpY19jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyKj4obV9sYXllci5nZXQoKSk7CiAgICAgICAg
IFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IFt0aWxlZEJhY2tpbmdMYXllciBjcmVh
dGVUaWxlQ29udHJvbGxlcjp0aGlzXTsKIAotICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRh
aW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CiAg
ICAgfQogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAtOTQ3LDcgKzk0Nyw3IEBA
IEZsb2F0Um91bmRlZFJlY3QgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNoYXBlUm91bmRlZFJlY3Qo
KSBjb25zdAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0U2hhcGVSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCkKIHsKICAgICBBU1NFUlQobV9sYXll
clR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVMYXllcik7Ci0gICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CisgICAgbV9z
aGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVj
dCk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBQYXRoIHNoYXBlUGF0
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1dlYlRpbGVkQmFja2luZ0xheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KaW5kZXggYzE5MWYzOTFjNjQ1NzJj
Yzk5NTVhNDdjNmNiN2I5MDA3ODY3MjYzOS4uYjNlMjFmNjQwYWU5MWEwZDFmNTkzODQ2YTg1MGZl
YzIyZmE3OGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KQEAgLTYyLDcg
KzYyLDcgQEAgLSAoaWQpaW5pdFdpdGhMYXllcjooaWQpbGF5ZXIKIC0gKFdlYkNvcmU6OlRpbGVD
b250cm9sbGVyKiljcmVhdGVUaWxlQ29udHJvbGxlcjooV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
Kilyb290TGF5ZXIKIHsKICAgICBBU1NFUlQoIV90aWxlQ29udHJvbGxlcik7Ci0gICAgX3RpbGVD
b250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUaWxlQ29udHJvbGxlcj4ocm9v
dExheWVyKTsKKyAgICBfdGlsZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRpbGVD
b250cm9sbGVyPihyb290TGF5ZXIpOwogICAgIHJldHVybiBfdGlsZUNvbnRyb2xsZXIuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggMTVkNGU0NmIwNmM3NmMxN2Yz
NDA1MTM5YzZjOTc5YzEwMTdiMzY5Ni4uZDZhN2MxNjhmMGU0NDFmZDdkMjkwZmM0ZmUzMTM2MGM1
ODVkNTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTE1Miw3ICsxNTIsNyBA
QCBQbGF0Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbihMYXllclR5cGUgbGF5ZXJU
eXBlLCBQbGF0Zm9ybUxheWVyKiBsYXllcgogICAgIGlmICh1c2VzVGlsZWRCYWNraW5nTGF5ZXIo
KSkgewogICAgICAgICBpbnRlcm4gPSBuZXcgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4odGhpcyk7
CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4qPihpbnRlcm4pLT5jcmVhdGVUaWxlQ29udHJvbGxl
cih0aGlzKTsKLSAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7Cisg
ICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0
Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOwogICAgIH0gZWxzZQogICAgICAg
ICBpbnRlcm4gPSBuZXcgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwodGhpcyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJh
Y2tpbmdMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IDIyNGQ4YmJlZWQzOTkyYWVlZmM5
MzJhMWJlZTgwZGM2M2ZjYTJmOGIuLmM1YTczZThkM2FlOWJiNDlhOTZiZTI3ZjUzMjdlMDZjMDYy
MTRmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcApAQCAtMTY0LDcg
KzE2NCw3IEBAIHZvaWQgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OnNldEJvcmRlckNvbG9yKGNv
bnN0IENvbG9yJiB2YWx1ZSkKIFRpbGVDb250cm9sbGVyKiBXZWJUaWxlZEJhY2tpbmdMYXllcldp
bjo6Y3JlYXRlVGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIpCiB7CiAg
ICAgQVNTRVJUKCFtX3RpbGVDb250cm9sbGVyKTsKLSAgICBtX3RpbGVDb250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKKyAgICBtX3RpbGVDb250
cm9sbGVyID0gbWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAgICByZXR1
cm4gbV90aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCmluZGV4IGMzMWNjNmUzOGJhNTk5YzlmYjgyNmFhMDM5NzZiMjA1MWNjMTE1YmUuLjE4ZjM0
MDUwYWE5ZTNiNzQzNGE2MjdhMDc3Y2QyY2NmMmY5OWM5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKQEAgLTQxLDYgKzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9u
dEZlYXR1cmVTZXR0aW5nczsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
RlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcAppbmRleCA1MGI3ZDljMjNjMDFhYmZjM2EwNTE3OGMxMDUyNTEwNzBmMTVkNmRiLi4wNGYy
YTlmZjU0NjlhYTViYTI0ZDE0OTU2NTRiNjBmMGJjNDNkMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpH
cmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0
ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFj
dG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBw
bGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsKIH0KIApAQCAtNTQsMTQgKzU0LDE0IEBAIEdy
YXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhp
Y3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFtjYWlyb0NvbnRleHRdKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBjYWlyb0NvbnRleHQpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihj
b250ZXh0LCBjYWlyb0NvbnRleHQpOwogICAgICAgICB9KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQogICAgIDogR3JhcGhp
Y3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9
KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2
YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3Bs
YXRmb3JtQ29udGV4dCkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkKIHsKICAgICBtX3BsYXRmb3Jt
Q29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAg
bV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dC5jcigpKTsKQEAgLTY5LDkg
KzY5LDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGEKIAogR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
YWlyb190KiBjYWlyb0NvbnRleHQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQs
IEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCi0gICAgLCBtX293bmVkUGxhdGZv
cm1Db250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29u
dGV4dCkpCisgICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1D
b250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgqbV9v
d25lZFBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwg
bV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3Bs
YXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250
ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQo
bV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAppbmRleCA5OWUxODNjYzcwNTYwM2QyMzRlOGU4ZWQ5ZmQ2
NjlkNTk2ZmJlZWEyLi4wODM3MjVkNmZkMzgzMjYwN2FhNzYxZmY5ZjY4MzU5MDY2NGM5ODEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgK
QEAgLTQ1LDYgKzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgOiBwbGF0Zm9ybUNvbnRleHQocGxhdGZv
cm1Db250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAxMzc0MTVmM2VhYmY1MzIxZmMz
NWNhYzIwZTFlMTI3ODRkNzUyMjMzLi5lMDFlNjBiOWVlZTdiYTE4Mzk3YTYzZWY0YTE3NjY3ZmZk
YzRhNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQg
SW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICAgICAgICAgIFt0aGlz
XShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAg
ICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4
dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOworICAgICAgICAgICAgICAgIHBy
b3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCwgR0xfUkdCQSkpOwogICAgICAgICAgICAgfTsKICNpZiBVU0UoTklDT1NJQSkKICAg
ICAgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5pbXBsKCkpLnByb3h5KCkpOwpAQCAtMzA4LDcg
KzMwOCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAKICAgICBSZWZQdHI8Y2Fpcm9fdD4g
Y3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkpOwogICAg
IG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRDcihjci5nZXQoKSk7Ci0gICAgbV9kYXRhLm1f
Y29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7Cisg
ICAgbV9kYXRhLm1fY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0
KSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCmlu
ZGV4IDgwZWM3MjU4YjY0MjFmYmY5OGIzZWI1NTEzZDBjZWFmYmU3YWRmZGMuLjk5YzgyZTJlNmU5
OTMxYzhmZWE5ZGUyMTVkMGYzNmM3MTljMzg5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
aApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgU2hhZG93U3RhdGU7CiAvLyBjb2RlIGZyb20gdGhl
IHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dC4KIAogY2xhc3MgUGxhdGZvcm1D
b250ZXh0Q2Fpcm8geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBsYXRmb3JtQ29udGV4dENhaXJvKTsKIHB1YmxpYzoKICAgICBQbGF0Zm9y
bUNvbnRleHRDYWlybyhjYWlyb190Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDgwYjVkNGZiZDI3MmRlZTQz
NWI1Y2U3YzA4NGVlMzU5YTUwMWVkNjQuLmQzNWZmMGVmZjk3MTk1MGVlZDFlM2ZkMDI2YmNkYTll
YWZhMzRlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgSW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBD
R0NvbG9yU3AKICAgICAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oY2dDb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBtYWtlVW5pcXVl
PEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKICAgICB9CiAKICAgICBjb250ZXh0
KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXgg
NzE4OGU0MzdkMmM4ODY3MjZkM2QzZjRkZWI0MWJmMjVjYjA2YjM4MC4uZmY3ZmM2NjM2OGJkMmM2
NjBjNDhjMTA2NzQ1ZjliYTg5YjNkZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAt
MTM3MSw3ICsxMzcxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRD
YWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUKIAogICAgIGF1dG8gW3N5
bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNp
cyhmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRPYmxpcXVlUGFpcigpOwogCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6
ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVu
dGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9u
LnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9y
bURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUs
IGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJp
YW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0KIAogdHlwZWRl
ZiBIYXNoU2V0PFJldGFpblB0cjxDVEZvbnRSZWY+LCBXVEY6OlJldGFpblB0ck9iamVjdEhhc2g8
Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmplY3RIYXNoVHJhaXRzPENURm9udFJlZj4+IEZh
bGxiYWNrRGVkdXBTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuY3BwCmluZGV4IDFjZTBjOTQ3ZTE3ZTlhNjhlZWFkM2E0ZDU3YjU5ZDhmYTE2Y2VmMjku
LjBkZTkzNGE3YjM4NDEwMGVlYjc2ZDc3ZjQ1NmExODJmYmJhYmNlY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCkBAIC0xMTIsNyArMTEyLDcg
QEAgRm9udFJhbmdlcyBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2Vz
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KIAogICAgICAgICBhdXRvIFtzeW50aGV0aWNCb2xk
LCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udEZvclN5
bnRoZXNpc0NvbXB1dGF0aW9uLmdldCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRPYmxpcXVlUGFp
cigpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+
KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNlLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRp
b24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVz
Y3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNlLCBzeW50aGV0aWNPYmxp
cXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRo
VmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKGZvbnRQbGF0Zm9ybURhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0M0RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dDNEQ29jb2EubW0KaW5kZXggZmVlYWNkNGQzMjY2MDVmMDQyOTFjZTljMzFl
ZWNiYmU5Y2IyMmI5Mi4uMmMzY2FjMGFhYTA1NjNhZjFlZDRiMzM5Mzg2OTg5ODMyMjA1N2M4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0M0RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCkBAIC05Miw2ICs5Miw3IEBAIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBzdGF0dXNDaGVja1RocmVzaG9sZCA9IDU7CiAvLyBGSVhNRTogVGhp
cyBjbGFzcyBpcyBjdXJyZW50bHkgZW1wdHkgb24gTWFjLCBidXQgd2lsbCBnZXQgcG9wdWxhdGVk
IGFzCiAvLyB0aGUgcmVzdHJ1Y3R1cmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjY5MDMgaXMgZG9uZQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqKSB7IH0KICAgICAKQEAgLTE4MSw3ICsx
ODIsNyBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcgogCiBHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2lu
ZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUsIEdyYXBoaWNz
Q29udGV4dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRycykKLSAgICAsIG1f
cHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykp
CisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRo
aXMpKQogewogI2lmICFVU0UoQU5HTEUpCiAjaWYgVVNFKE9QRU5HTF9FUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQppbmRleCA1
YzczM2UzYmFkMWU5ZDNkMjVjMWVkNTdmNWFjZGZmZjNhNGNiOTlmLi4zODc1ZmNmZDMwNmRmODZk
MzQ3NGVlMTg2MGJhNTkwYTNhOGJjMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAgR3Jh
cGhpY3NDb250ZXh0JiBJT1N1cmZhY2U6OmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpCiAgICAgaWYg
KG1fZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0Owog
Ci0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOworICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGVuc3VyZVBsYXRmb3JtQ29udGV4dCgpKTsKICAgICBt
X2dyYXBoaWNzQ29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQodHJ1ZSk7CiAKICAgICBy
ZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0
aW9uQ29jb2EubW0KaW5kZXggNmU2MGViZjFmZmE2NTkwZjZmMzRlNTI4YTNlMzM1ODMxOGI1ZWJk
Zi4uMjc4NzQ2ODE2NmZlZjFiNWY2NDYyMWZlYjViYjVlNTBkOWQ2ZGEzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgQGVu
ZAogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQmIGNsaWVu
dCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNvY29hPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2E+KGNsaWVudCk7CiB9CiAKIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6
OlRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGll
bnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaAppbmRleCBhZGM5N2FkYzFmYTI0NTgw
OTkwMDNjM2RlOWMwYWEzOGQ4NzYxODdkLi42MDAxYmI3MGExMDA0MTc0NDEwOTIxMzZmM2ZlNWI2
MTc2MmNiMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCkBAIC0zNiw3ICszNiw4IEBAIHR5
cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4ZWxCdWZmZXJQb29sUmVmOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdlUm90YXRpb25TZXNzaW9uVlQgewor
Y2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IFJvdGF0aW9uUHJvcGVydGllcyB7CiAgICAg
ICAgIGJvb2wgZmxpcFggeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCmluZGV4IGRk
MTM1NjllMDgxYTFiMzk5ZGNiYWJmM2Y1ZTg4MzdmODRjMmFiNGUuLmNkNWI2ZmNjMDBkNzc0NjRl
NmU2YmU3NDYzMTFlMTNkMGQyN2UzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKQEAgLTM2
LDYgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUGl4ZWxCdWZmZXJDb25m
b3JtZXJDVihDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyk7CiAgICAgUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IGNvbnZlcnQoQ1ZQaXhlbEJ1ZmZlclJlZik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaAppbmRleCA4MWFi
MmY5MjRkYWYyNmNkYTIyYzVlMjAwNzc2YzIxODAyMDIzYTNiLi5jOWZmNDE5ZDQzYmU0NWY0MDQ0
MDMwNDBhZGQ4YzRkMDQ0MDJiYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNzIFRleHR1cmVD
YWNoZUNWIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRleHR1cmVDYWNoZUNWPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlQ2FjaGVDVj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0K
aW5kZXggNTc3ZWMyODQ2MzkyYTcyMTVkOTk4YWEzMTBkM2Q4ZDYzM2Y1ZjFlYy4uOWYxZjY2YjNi
ZDU5ZjU5YjFhZDNjYjcwNWM4NTY1NDQyMjdlYzM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KQEAgLTUwLDcgKzUw
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVDYWNoZUNWPiBUZXh0dXJlQ2FjaGVDVjo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBSZXRhaW5QdHI8VGV4dHVyZUNhY2hlVHlwZT4gc3Ryb25nQ2FjaGUgPSBhZG9wdENGKGNh
Y2hlKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlQ2FjaGVDVj4oY29udGV4
dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVD
YWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0cm9uZ0NhY2hlKSk7CiB9CiAKIFRleHR1cmVDYWNo
ZUNWOjpUZXh0dXJlQ2FjaGVDVihHcmFwaGljc0NvbnRleHQzRCYgY29udGV4dCwgUmV0YWluUHRy
PFRleHR1cmVDYWNoZVR5cGU+JiYgY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAppbmRleCA0M2E5
NmRjMTQzNjU4NGFmYTc3MTg3OGIxOTdmMmE5NTQ3ZGNjY2VlLi45ZDM5MmVhMDU4YjM2MDA4Y2E1
NjljYTQ0ZmQ3MTI4ODNiMGQ2ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKQEAgLTQwLDYgKzQw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZUNhY2hlQ1Y7CiAKIGNsYXNz
IFZpZGVvVGV4dHVyZUNvcGllckNWIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBWaWRlb1RleHR1cmVDb3BpZXJDVihHcmFwaGljc0NvbnRleHQzRCYpOwogICAg
IH5WaWRlb1RleHR1cmVDb3BpZXJDVigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwCmluZGV4IDhmZWFhMmY1ZDc1MzI4ZTQzNmJmOWQ4OGI4ZGMwNWJhYzFjMmUxZjMu
LmM1NjFmNWY5ZWFiOTk2MjExYThiMjIyMTk3NzZkNjhmMzllMTY0NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5p
dGlhbENsaXAsIGJvb2wKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gcmVwbGF5
TGlzdDsKICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkKLSAgICAgICAgcmVwbGF5
TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q+KCk7CisgICAgICAgIHJlcGxheUxp
c3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0PigpOwogCiAgICAgc2l6ZV90IG51bUl0ZW1zID0g
bV9kaXNwbGF5TGlzdC5pdGVtQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUl0ZW1zOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAppbmRleCA1NTdiOGUwMDg2MmQ2
YWJjNTgwNGI0MTQzMjEwMDgwYTgzNTE2ZDFlLi4zMGJiNDhjYzhmMGM0OTU0NDhhYjY1ZjY4MTE3
MmNjYzZiY2E1MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpsb2FkRXh0ZXJuYWxEb2N1bWVudElmTmVl
ZGVkKENhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIVNWR1VS
SVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJlZmVyZW5jZShtX3VybCwgKmNhY2hlZFJlc291cmNl
TG9hZGVyLmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVu
Y2U+KG1fdXJsKTsKKyAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVVuaXF1
ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91cmwpOwogICAgIG1fY2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggNjU2M2M4YmZlZWIzNWJhNTMyN2Y0
ODk2MWVkNjIxZmUzZDUzYWE0MS4uNzFhNGFiMmY0ODI1ZjFhNTQzMTkxODAzNGIzNTMxZWNkYThh
MGYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtNDU1LDcgKzQ1NSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgICAgICAgICBGY1BhdHRlcm5BZGRTdHJpbmco
cmVzdWx0UGF0dGVybi5nZXQoKSwgRkNfRk9OVF9WQVJJQVRJT05TLCByZWludGVycHJldF9jYXN0
PGNvbnN0IEZjQ2hhcjgqPih2YXJpYW50cy51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogI2VuZGlm
Ci0gICAgYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURh
dGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQYXR0ZXJuLmdldCgpLCBmb250RGVzY3JpcHRpb24u
Y29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRXaWR0aCwgc3ludGhldGljQm9sZCwgc3ludGhldGlj
T2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpOworICAgIGF1dG8gcGxhdGZv
cm1EYXRhID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250RmFjZS5nZXQoKSwgcmVz
dWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIGZp
eGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlv
bi5vcmllbnRhdGlvbigpKTsKICAgICAvLyBWZXJpZnkgdGhhdCB0aGlzIGZvbnQgaGFzIGFuIGVu
Y29kaW5nIGNvbXBhdGlibGUgd2l0aCBGb250Y29uZmlnLiBGb250Y29uZmlnIGN1cnJlbnRseQog
ICAgIC8vIHN1cHBvcnRzIHRocmVlIGVuY29kaW5ncyBpbiBGY0ZyZWVUeXBlQ2hhckluZGV4OiBV
bmljb2RlLCBTeW1ib2wgYW5kIEFwcGxlUm9tYW4uCiAgICAgLy8gSWYgdGhpcyBmb250IGRvZXNu
J3QgaGF2ZSBvbmUgb2YgdGhlc2UgdGhyZWUgZW5jb2RpbmdzLCBkb24ndCBzZWxlY3QgaXQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRl
eCAxMzc2NWY0M2RhODY2OGQyZGU4MmU2NzFkODE4MGQ2ODQ0Mjg0M2IwLi41ODk0M2QyYTkwZGZj
NTUwMWYyZGNhYThlY2YwZTkwZTFhYzdmNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZQogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlOwogICAgIGlmIChGVF9O
ZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBGVF9CeXRlKj4o
YnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCksIDAsICZmcmVlVHlwZUZhY2UpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOwogfQogCiBi
b29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYg
Zm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuY3BwCmluZGV4IDg2OTgxMzY0NTEzYjhlNmYwZDdiMmRkYTViYjhkMWY4NzJlN2Y1NzYuLjcx
ZmRhMGQ5MjRjZDI1NWRiM2VmMTA3N2Y5ZTEwNzgxNGUyNDNkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgRm9ybWF0IGZvcm1hdCwgaW50IHcKICAgICAgICAgbnVtVGlsZXMgPSAwOwogICAgIH0K
IAotICAgIGF1dG8gdGV4dHVyZUlkcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHVuc2lnbmVk
Pj4obnVtVGlsZXMpOworICAgIGF1dG8gdGV4dHVyZUlkcyA9IG1ha2VVbmlxdWU8VmVjdG9yPHVu
c2lnbmVkPj4obnVtVGlsZXMpOwogICAgIHRleHR1cmVJZHMtPmZpbGwoMCwgbnVtVGlsZXMpOwog
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsrKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDRhOWZkZWMzZWM1OTEy
Y2UyNWIxZTZiMjViOTE0NGZhOGY0MGM3ZDAuLmFiMzdlZTA0MWViMjhjM2M4MmYzNWFmMzYzY2Nl
ZGI5YjQyYjE0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXMKIHsK
ICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjppbml0aWFsaXplRGVidWdDYXRl
Z29yeSgpOwogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBv
cnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwog
ICAgIH0KIH0KQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtlVW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBpZiAobV9lcnJvck9jY3VyZWQgfHwgaXNM
aXZlU3RyZWFtKCkpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwogCkBAIC0yMzc2LDcgKzIz
NzYsNyBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvU2lu
aygpIGNvbnN0CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5zdXJlQXVkaW9T
b3VyY2VQcm92aWRlcigpCiB7CiAgICAgaWYgKCFtX2F1ZGlvU291cmNlUHJvdmlkZXIpCi0gICAg
ICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Tb3VyY2VQ
cm92aWRlckdTdHJlYW1lcj4oKTsKKyAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVyID0gbWFr
ZVVuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpOwogfQogCiBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvU291cmNlUHJvdmlk
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCmluZGV4IGM1NzhlZWU2ZDU1ZGQ0YjQzMDdjZDQyYmIwMGNjZjQ3NjI5N2JiMzMuLmIw
MmUyOGVkY2Q0MDdmZGZmOGNiZWE3OGFkMWE2ZTdiMGM3YjU4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTcxMCwxOSAr
NzEwLDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1
cmVUb0NvbXBvc2l0b3IoKQogICAgICAgICAgICAgaWYgKCFwcm94eS5pc0FjdGl2ZSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZp
ZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0Zy
YW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3VzaW5n
RmFsbGJhY2tWaWRlb1NpbmspOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVv
RnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVy
PihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tW
aWRlb1NpbmspOwogCiAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZUlEID0gZnJhbWVIb2xkZXIt
PnRleHR1cmVJRCgpOwogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlcjsKICAgICAgICAgICAgIGlmICh0ZXh0dXJl
SUQpIHsKLSAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJRCwgZnJhbWVIb2xkZXItPnNp
emUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAg
ICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJRCwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xk
ZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihXVEZNb3ZlKGZyYW1lSG9s
ZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVy
ID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVyKGZyYW1lSG9sZGVyLT5zaXplKCksIEdMX0RPTlRf
Q0FSRSk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFsYXllckJ1ZmZlcikpIHsKICAg
ICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUo
VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHRleHR1cmUtPnJlc2V0KGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5oYXNB
bHBoYUNoYW5uZWwoKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0
dXJlOjpOb0ZsYWcpOwotICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVy
ZSkpOworICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSkpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBmcmFtZUhvbGRlci0+dXBkYXRlVGV4dHVyZShsYXll
ckJ1ZmZlci0+dGV4dHVyZUdMKCkpOwogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRF
eHRyYUZsYWdzKG1fdGV4dHVyZU1hcHBlckZsYWdzIHwgKGZyYW1lSG9sZGVyLT5oYXNBbHBoYUNo
YW5uZWwoKSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKSk7CkBAIC05MTIsNyAr
OTEyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKICAgICBpZiAoIUdTVF9JU19TQU1QTEUo
bV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFn
cywgdHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1l
SG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwg
bV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCiAgICAgYXV0byB0ZXh0dXJlSUQgPSBmcmFt
ZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlSUQpCkBAIC05MjMsNyArOTIz
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNw
b3NlZFNpemUoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1f
dmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CisgICAgICAgIG1f
dmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAgICByZXR1cm4gbV92
aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0
dXJlSUQsIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOwog
fQpAQCAtOTM5LDcgKzkzOSw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIGlmICghR1NUX0lT
X1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJl
TWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9s
ZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1w
bGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVy
ZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAt
OTUzLDcgKzk1Myw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAgIGNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAg
bV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGll
ckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKKyAgICAgICAg
bV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKIAogICAgIGlmICghbV92
aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0
dXJlSUQsIHNpemUsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFLCBmYWxzZSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTI1LDYgKzExMjUsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRSZWN0YW5nbGVUb1ZpZGVvU2luayhHc3RFbGVtZW50KiB2aWRlb1NpbmssIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiB9CiAKIGNsYXNzIEdTdHJlYW1lckhvbGVQdW5jaENsaWVudCA6IHB1YmxpYyBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6SG9sZVB1bmNoQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJIb2xlUHVuY2hD
bGllbnQoR1JlZlB0cjxHc3RFbGVtZW50PiYmIHZpZGVvU2luaykgOiBtX3ZpZGVvU2luayhXVEZN
b3ZlKHZpZGVvU2luaykpIHsgfTsKICAgICB2b2lkIHNldFZpZGVvUmVjdGFuZ2xlKGNvbnN0IElu
dFJlY3QmIHJlY3QpIGZpbmFsIHsgc2V0UmVjdGFuZ2xlVG9WaWRlb1NpbmsobV92aWRlb1Npbmsu
Z2V0KCksIHJlY3QpOyB9CkBAIC0xMTQ3LDggKzExNDgsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCkKICAgICAgICAgW3Ro
aXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICB7CiAg
ICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJF
KTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+
IGhvbGVQdW5jaENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xp
ZW50PihtX3ZpZGVvU2luay5nZXQoKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4gaG9sZVB1bmNoQ2xpZW50ID0gbWFrZVVu
aXF1ZTxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+KG1fdmlkZW9TaW5rLmdldCgpKTsKICAgICAg
ICAgICAgIGxheWVyQnVmZmVyLT5zZXRIb2xlUHVuY2hDbGllbnQoV1RGTW92ZShob2xlUHVuY2hD
bGllbnQpKTsKICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKFdURk1vdmUobGF5ZXJC
dWZmZXIpKTsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDdhZTdlY2VkNmU5ZjZiYjY1NTMzYjdkODkwMzAyMzdj
Y2NkZmZlNjYuLmUyNjA0YzRhZTNiMDU5Y2UxZmI2ZTA0ZDU2OGYxYTgzNmEyMzA0YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAt
OTcsNyArOTcsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVi
bGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSwgcHVibAogI2VuZGlmCiAjZW5kaWYKIHsK
LQorICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXIuaAppbmRleCA1MWZkOWIyNWIwYjg0MzdjODQ5MTI1M2U2ZjAyMWU2
NTdkMDNhODE3Li41YzU2ZWMzNDE4ODgzMzQ1Nzg4ZmEwYjU0OWE5ODAzMjdkM2U3YmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCkBAIC0zMyw2ICsz
Myw3IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOwogY2xhc3MgSW1hZ2VPcmll
bnRhdGlvbjsKIAogY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENvbG9yQ29udmVy
c2lvbiB7CiAgICAgICAgIENvbnZlcnRCR1JBVG9SR0JBLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA5NzNmNGQ0ZjAwMzIzNTZmMTc3ZWJkN2ZjNGI5
ZTk0YTUyOTJmOTVhLi45ODEwYzI1N2IzNzc2ZmZkOGQ0MjEyZTk2OTRiZTkyYjI1OTczNTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTAsNiAr
NTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZpbmUgTE9XX1FVRVVFX0ZBQ1RP
Ul9USFJFU0hPTEQgMC4yCiAKIGNsYXNzIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50IGZp
bmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQpOwogcHVibGljOgogICAgIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50KFdlYktpdFdlYlNyYyosIFJlc291cmNlUmVxdWVzdCYmKTsKQEAgLTYzMiw3ICs2MzMsNyBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoR3N0QmFzZVNyYyogYmFz
ZVNyYywgYm9vbCBub3RpZnlBc3luY0NvbQogICAgICAgICAgICAgbG9hZE9wdGlvbnMgfD0gUGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpCdWZmZXJEYXRhOwogICAgICAg
ICBwcml2LT5yZXNvdXJjZSA9IHByaXYtPmxvYWRlci0+cmVxdWVzdFJlc291cmNlKFJlc291cmNl
UmVxdWVzdChyZXF1ZXN0KSwgbG9hZE9wdGlvbnMpOwogICAgICAgICBpZiAocHJpdi0+cmVzb3Vy
Y2UpIHsKLSAgICAgICAgICAgIHByaXYtPnJlc291cmNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4ocHJvdGVjdG9yLmdldCgpLCBSZXNv
dXJjZVJlcXVlc3QocmVxdWVzdCkpKTsKKyAgICAgICAgICAgIHByaXYtPnJlc291cmNlLT5zZXRD
bGllbnQobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4ocHJvdGVjdG9y
LmdldCgpLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpKTsKICAgICAgICAgICAgIEdTVF9ERUJV
R19PQkpFQ1QocHJvdGVjdG9yLmdldCgpLCAiU3RhcnRlZCByZXF1ZXN0Iik7CiAgICAgICAgICAg
ICBpZiAobm90aWZ5QXN5bmNDb21wbGV0aW9uKQogICAgICAgICAgICAgICAgIGdzdF9iYXNlX3Ny
Y19zdGFydF9jb21wbGV0ZShHU1RfQkFTRV9TUkMoc3JjKSwgR1NUX0ZMT1dfT0spOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3Bw
CmluZGV4IDRlOWQxOWQ4NTI3ZDY5NjIwY2Y1YWE5NDEwNzM2MjgzODFiM2M5ZjAuLmU2ODgwZDk4
ZTdmY2FkMWQwNTNmODRlZDM4YTZmZDgxOThkZTdiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTc3LDcgKzc3
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmUKICAgICBpbml0aWFsaXplR1N0cmVhbWVyQW5k
UmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpOwogICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdl
YmtpdF9tc2VfZGVidWcsICJ3ZWJraXRtc2UiLCAwLCAiV2ViS2l0IE1TRSBtZWRpYSBwbGF5ZXIi
KTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQ
bGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBs
YXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRT4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBw
b3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsK
ICAgICB9CiB9CkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0U6OnNldFJhdGUoZmxvYXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6YnVmZmVyZWQoKSBjb25zdAog
ewotICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKSA6
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtX21l
ZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RTo6c291cmNlU2V0dXAoR3N0RWxlbWVudCogc291cmNlRWxlbWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1
bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKaW5kZXggMTE3MjQ1ODQxMGU5YTE0
NTNiNjM1YjBmOGQ5MWI5ZmI0YTY5NmM1OC4uMGYwOGMxOWRiZGJlNjliMDZmN2I3NTUzZjhhYjQ5
N2Q0N2UzNzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2g6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCkKICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4
dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJC
dWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBt
X3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CiAg
ICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3ZlKGxheWVyQnVmZmVyKSk7CiAg
ICAgICAgIH07CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4o
cGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9N
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAppbmRleCBmMGQwNGQ0YzYzZDkzMTIwYmNlODA1
YWI4ZmVhMjg3YTAxZTA0NDJhLi44YmY3MjEzMTg4MTljNDAyNjdiNzIxZmE5YjgyYWMxY2Q5MjZm
OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVu
Y2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCkBA
IC00NCw3ICs0NCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCA6IHB1Ymxp
YyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDCiAgICAgLCBwdWJsaWMgUGxh
dGZvcm1MYXllcgogI2VuZGlmCiB7Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2goTWVkaWFQbGF5ZXIqKTsKICAg
ICB+TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKCk7CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2UsIHB1YmxpYyBDCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3Jr
U3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6RW1wdHk7IH07CiAgICAg
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7IH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CiAKICAgICBib29sIGRpZExvYWRpbmdQcm9n
cmVzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXggZTFhM2E4NjYzMTQ3NWNhYjdh
OWIxNzFiNDA2MmQzOTNkODkwZTYwNi4uZWNmODk2OTNkYTMzODUyMDEyZTc1MDIxMTI5OTgwOTll
YzhkYWMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09C
b3guaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBEYXRhVmlldzsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPQm94IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JU09Cb3goKSA9IGRlZmF1bHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5h
bEZvcm1hdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09y
aWdpbmFsRm9ybWF0Qm94LmgKaW5kZXggNzBiYjg2MTEzMTZlNjg1Yjc2Yjc4ODM4YjVlZDA2MDM3
NmI5YjFhOS4uMTg4M2JhNDdiZGYzYTUyYWZiMmZmN2QwZGQ1Y2Q5ZGNkN2NkZDg3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9y
bWF0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09y
aWdpbmFsRm9ybWF0Qm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09PcmlnaW5hbEZvcm1hdEJveCA6IHB1YmxpYyBJ
U09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2luYWxGb3JtYXRCb3ggZmluYWwg
OiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1l
KCkgeyByZXR1cm4gImZybWEiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3gu
Y3BwCmluZGV4IGQ4ZDc0MDFhNzU2MDA0NmM5OGFmZjhjYjExZWIyZTcyMjNjOTgxY2UuLmJkZmRi
ZGM5NmNmMGUxYjUwYTcyODU4Mjg4YzliMmY0NzRmN2QwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rp
b25TY2hlbWVJbmZvQm94LmNwcApAQCAtNTMsNyArNTMsNyBAQCBib29sIElTT1Byb3RlY3Rpb25T
Y2hlbWVJbmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLmZp
cnN0ID09IElTT1NjaGVtZVR5cGVCb3g6OmJveFR5cGVOYW1lKCkpIHsKLSAgICAgICAgbV9zY2hl
bWVUeXBlQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVUeXBlQm94PigpOworICAgICAg
ICBtX3NjaGVtZVR5cGVCb3ggPSBtYWtlVW5pcXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7CiAgICAg
ICAgIGlmICghbV9zY2hlbWVUeXBlQm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjgsNyArNjgsNyBAQCBib29sIElTT1Byb3RlY3Rp
b25TY2hlbWVJbmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkK
ICAgICB9CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVlKCkuZmlyc3QgPT0gSVNPU2No
ZW1lSW5mb3JtYXRpb25Cb3g6OmJveFR5cGVOYW1lKCkpIHsKLSAgICAgICAgbV9zY2hlbWVJbmZv
cm1hdGlvbkJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g+KCk7
CisgICAgICAgIG1fc2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBtYWtlVW5pcXVlPElTT1NjaGVtZUlu
Zm9ybWF0aW9uQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lSW5mb3JtYXRpb25Cb3gtPnJl
YWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlv
blNjaGVtZUluZm9Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCmluZGV4IGYzN2I3NjI0OWQ4ZTAwZmExN2EwNTU5
MjllNzc2Njg1MTM3MzMzNjYuLjhlNTY3M2UwNTE2YTY1MDE0ZjVjZDQ5ZjYxYWE3Yjc1MzhkMmNh
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElTT1NjaGVtZVR5cGVCb3g7CiBjbGFzcyBJU09T
Y2hlbWVJbmZvcm1hdGlvbkJveDsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPUHJvdGVjdGlv
blNjaGVtZUluZm9Cb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJzaW5mIjsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1l
SW5mb3JtYXRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcAppbmRleCBiNGYyNzdhNjg0N2NjMjBkNGZjOWQ2
MjZmOWNhY2M3NDMwYWRhZjcwLi5jODNjNGZmN2IzOGFiZjFhZTIyZmZlNWU3MmM3YTFmODZhMDhl
YjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
U2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
Ym9vbCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2ln
bmVkJiBvZmZzZXQpCiAgICAgICAgIGlmIChsb2NhbE9mZnNldCArIHNjaGVtZVNwZWNpZmljQm94
VHlwZS52YWx1ZSgpLnNlY29uZCA+IG9mZnNldCArIG1fc2l6ZSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICBtX3NjaGVtZVNwZWNpZmljRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94PigpOworICAgICAgICBtX3NjaGVtZVNwZWNpZmljRGF0
YSA9IG1ha2VVbmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94PigpOwogICAgICAgICBpZiAoIW1f
c2NoZW1lU3BlY2lmaWNEYXRhLT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oCmluZGV4IDll
ZGIxODc4YTliYTkxOWJlYjE5ZDdiNjIyM2Q5ZTdlNDY0ZjY4NTguLmU4ZWMwYzRjNjliNzRlODMz
NDQ5ODk0MWYyNGVlZTQxMGYyY2RkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9ybWF0aW9uQm94IGZpbmFsIDogcHVibGljIElTT0Jv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJz
Y2hpIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPU2NoZW1lVHlwZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1NjaGVtZVR5cGVCb3guaAppbmRleCA2MTk2MTAzOWY0OGNmMmJjNmVlN2I4ODQ4MDcz
YzgzNzZlNTgzMTMwLi40YjhmMjYzMzc1MGY4YWRmOTBiYzI3YzJkMGNmMTRlZjk4MmMxNzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1l
VHlwZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09T
Y2hlbWVUeXBlQm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVUeXBlQm94IDogcHVibGljIElTT0Z1bGxC
b3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlwZUJveCBmaW5hbCA6IHB1Ymxp
YyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkg
eyByZXR1cm4gInNjaG0iOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaAppbmRleCBmNGVmZTI4
MTA1MWUzYzdiMjlkYmVmNzhlNDRkYTNiMDM4NzgwM2YzLi40N2ZhNDk3MjQ2YzcxNWJlMWQyY2Vm
OWIwZWE4N2RkN2Y3OWVmNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCkBAIC0yOSw3ICsy
OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
VHJhY2tFbmNyeXB0aW9uQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPVHJhY2tFbmNyeXB0aW9uQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewog
cHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAidGVuYyI7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRU
Q3VlLmNwcAppbmRleCA5ZWM0MDg5NGYxZTI4YTA1YTIxNGNiMzIzNTE0ZjdiMTM5NTVkMjg0Li40
YjUxNmVlOGRkN2Y3ZDIzN2U4ZDYyNzI3OTdiMDMyZGQxZjVhY2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcApAQCAtMzUsNyAr
MzUsNyBAQCB1c2luZyBKU0M6OkRhdGFWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIElTT1N0cmluZ0JveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPU3RyaW5nQm94IGZp
bmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZW50
cygpIHsgcmV0dXJuIG1fY29udGVudHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCmluZGV4IGE2MTYwYjY2YWU5NDY4MjA2NzdhZDI5
MzRiMTgxZGViOTNjYzRmNDkuLmFlMjNiZWZmZmVkNjRhNmRlMjg5MTc2ZTQxNTEwMTFmMDY3Yzk4
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRU
Q3VlLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTiBieXRlcyA6
IEN1ZVRpbWVCb3ggOiBib3ggOiBvcHRpb25hbAogLy8gTiBieXRlcyA6IEN1ZVNldHRpbmdzQm94
IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVQYXlsb2FkQm94IDogYm94IDogcmVx
dWlyZWQKLWNsYXNzIElTT1dlYlZUVEN1ZSA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPV2Vi
VlRUQ3VlIGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgSVNPV2ViVlRUQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJh
dGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAzMjdlYmY2MDYyNTkw
OWZiZTJjNWI2YmQ1MTk4YWNhMTlhNDVkNGE0Li41MDc5MzhiZTExMDVjZjQyNjA0NTU5MTNiMGM1
ZTk5ZDRmNTRmOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC04NCw3ICs4
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
I2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPihmb250RGVzY3JpcHRvci5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOwogfQogCiBib29sIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhUGFpbnRpbmdPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKaW5kZXggODNmNzc2Njc5ZTE4OWM2
ZmNlNGVmODYyNTdiMDA1ZDExMzc0ZTIyZC4uNmYyMTViMjdhYWQ5NmMzZmE5YzIwN2YzMjBlZjll
MzJiNDNiN2NjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oCkBAIC00
MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIHN0cnVjdCBQYWludGluZ09wZXJhdGlv
blJlcGxheSB7IH07CiAKIHN0cnVjdCBQYWludGluZ09wZXJhdGlvbiB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHZpcnR1YWwgflBhaW50aW5nT3BlcmF0aW9uKCkg
PSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVw
bGF5JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKaW5kZXggMTA5YzJjNTc3Njc5
YTEyMTRhYTZlYTEwMWM2ZjQ4MGZiYTJlYzYwMS4uNWJlZTYxM2ZjZjZiNDZhMDdjNjI4ZTU4MDE2
ZjQ5YmI5MDIxYjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTY2VuZUludGVncmF0aW9uOjpyZXF1ZXN0VXBkYXRlKCkK
IAogc3RkOjp1bmlxdWVfcHRyPFNjZW5lSW50ZWdyYXRpb246OlVwZGF0ZVNjb3BlPiBTY2VuZUlu
dGVncmF0aW9uOjpjcmVhdGVVcGRhdGVTY29wZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxVcGRhdGVTY29wZT4obWFrZVJlZigqdGhpcykpOwogfQogCiBTY2VuZUludGVncmF0aW9uOjpD
bGllbnQ6On5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDJiMWFlY2YwZDFiN2U2YTM0
MWJmOTRiZmZhZWQyMjBmMWE0NTg2MzguLjUwZTBjM2M3ZDk3NjgyNmJhN2JiODE4NWQxZWUxNDIx
MjlhZGEwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGF1dG8gY3JlYXRlQ29tbWFuZChB
cmdzJiYuLi4gYXJndW1lbnRzKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxP
cGVyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogYXV0byBjcmVhdGVDb21tYW5kKCkgLT4gc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8T3BlcmF0aW9uRGF0YTw+LCBUPjo6dmFsdWUsIHN0
ZDo6dW5pcXVlX3B0cjxQYWludGluZ09wZXJhdGlvbj4+CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUPigpOwogfQogCiBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpDYWlyb09wZXJhdGlvblJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgUGFpbnRpbmdPcGVyYXRpb25zJiBjb21tYW5kTGlzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50
aW5nQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcAppbmRleCAwYzhhNjcw
ZTNhMGEzNjMwN2UzZjI5OWVjZGEwMjU1MmZkNzc0ZWQxLi5iMzUwOGQ1MTdiMjRlNDc1YzA4YWY0
OGIzM2U0MzFmZDI3OTIwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
UGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCkBAIC03MCw4ICs3MCw4IEBAIFBhaW50aW5nQ29udGV4
dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGFpbnRpbmcoQnVmZmVyJiBidWZmZXIpCiAgICAgICAg
IH0pOwogCiAgICAgbV9jYWlyby5jb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fY2Fp
cm8uc3VyZmFjZS5nZXQoKSkpOwotICAgIG1fcGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWlyby5jb250ZXh0LmdldCgp
KTsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZh
Y3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CisgICAgbV9wbGF0Zm9ybUNvbnRleHQgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvPihtX2NhaXJvLmNvbnRleHQuZ2V0
KCkpOworICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9y
eSgqbV9wbGF0Zm9ybUNvbnRleHQpKTsKIH0KIAogUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBh
aW50aW5nOjp+Rm9yUGFpbnRpbmcoKQpAQCAtMTA0LDEwICsxMDQsMTAgQEAgdm9pZCBQYWludGlu
Z0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OnJlcGxheShjb25zdCBQYWludGluZ09wZXJhdGlv
bnMmIHBhaW50aW4KIAogUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclJlY29yZGluZzo6Rm9yUmVj
b3JkaW5nKFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbmdPcGVyYXRpb25zKQogewotICAgIG1f
Z3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ+KAorICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+KAogICAgICAgICBbJnBhaW50aW5nT3BlcmF0aW9uc10oV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihjb250ZXh0LCBwYWludGluZ09wZXJh
dGlvbnMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcj4oY29udGV4dCwgcGFpbnRpbmdPcGVyYXRpb25zKTsKICAgICAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4
dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGQ0YzliNjA1YjRjZDI4ZTM0OGVmZDg1MzM1MDM4YjU4
YzlhNGRkZmEuLjhlMzc5MGY3YWI1NGY2YjNkOTU2ZjMwNzA0YzQyOWMyYWNkYzMxNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRl
eHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzcsNyArMzcsNyBAQCBhdXRvIEJhY2tpbmdTdG9yZVRl
eHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVy
biBGYWN0b3J5KAogICAgICAgICBbXShCYWNraW5nU3RvcmUmKSB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBs
PigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaAppbmRleCBlYWQ0OTc3NmU1
MGEyM2NmZDUwMTRhN2U5NjQzMGIzZGUxMjRkYjBhLi5kNDM2ZjIwYzMxNjFjMDU1NGE1YWEyMmEz
OTMwYTk5NWVlYzM1YTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDEsNiArNDEsNyBAQAog
bmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bCBmaW5hbCA6IHB1YmxpYyBCYWNraW5nU3RvcmU6OkltcGwsIHB1YmxpYyBXZWJDb3JlOjpUaWxl
ZEJhY2tpbmdTdG9yZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29t
cG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVy
ZU1hcHBlckltcGwuY3BwCmluZGV4IDM4ZmRkOTNkYTZiMTM4ODMxNDA1OTE2NTNjZGYyOWUwN2Rl
MzIzOTYuLjc1NjkyYzdjNGE3YmZkYjE4NzFkZjE4MDJlMzg3NzUzNmI2MTU1MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxh
eWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGF1dG8gQ29tcG9zaXRp
b25MYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewog
ICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXSh1aW50NjRfdCwgQ29tcG9zaXRpb25MYXll
ciYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW9uTGF5
ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENv
bXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxh
eWVyVGV4dHVyZU1hcHBlckltcGwuaAppbmRleCA2NTU1YmZiMDgwMjYxZThhMzA5NWJkZTQ4M2Ew
NjFiYjU0MjE0NTc0Li41MzBhNjc1MTAxNzI2ZWEyODcyOGM1M2Q4ODhkYmRlZjdhYWU3OTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0
aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIFRleHR1
cmVNYXBwZXJMYXllcjsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgQ29tcG9zaXRpb25M
YXllclRleHR1cmVNYXBwZXJJbXBsIGZpbmFsIDogcHVibGljIENvbXBvc2l0aW9uTGF5ZXI6Oklt
cGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBG
YWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggNTYx
NzI4YjVlZjFmNDBkODBjNTM1OTkyNjcxMDY2YWQ4NzQ4MTlhNy4uMmZiMGVjOTU5MTVhZWIwYmEw
OTZmODBiYzY5MGQyZjNiMjg0OGM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBw
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zOSw3
ICszOSw3IEBAIGF1dG8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3Rv
cnkoQ2xpZW50JiBjbGllbnQpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAg
ICAgICAgWyZjbGllbnRdKENvbnRlbnRMYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+
KGNsaWVudCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCmluZGV4IGVmOTZh
NjA4MzE2MmRlNDFjMjdkZTRiZjM1N2I4YTRmY2FmOGQ5Y2YuLmIwMTA1YjczYWMyMjY0ZjU3Y2E3
YjdlNTAzZWNmNzBkYTUyN2RhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC00MSw2ICs0MSw3
IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7CiBuYW1lc3BhY2UgTmlj
b3NpYSB7CiAKIGNsYXNzIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsIGZpbmFsIDogcHVi
bGljIENvbnRlbnRMYXllcjo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFHQzNETGF5ZXIuY3BwCmluZGV4IDUyZWM3MGI2ODFmN2JjNTYzYTY3NDc1NDM2MjM4
NzZiMDMxMzlhOWIuLjlhOWJkNDY4M2IyNjc0MmFmZWNiMTQ5MWY2MTQ0ZjJhNzhjNTk1MmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFHQzNETGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBA
IHZvaWQgR0MzRExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICAgICAgYXV0byYgcHJv
eHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9j
b250ZW50TGF5ZXItPmltcGwoKSkucHJveHkoKTsKIAogICAgICAgICBMb2NrSG9sZGVyIGhvbGRl
cihwcm94eS5sb2NrKCkpOwotICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2Vf
dW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21w
b3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENv
bG9yRm9ybWF0KSk7CisgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0
dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQp
KTsKICAgICB9CiAKICAgICBtX2NvbnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUdDM0RMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oCmluZGV4IDMyZGI5ZGQzN2E2ZjBkOWZhOGQ0ZDE4
OGViMThmOGFlMTQ3NWEwMGIuLjlmNTQ0NWJiZTExODNjZTc0ODU1OTNjYmJiZjE2NTBlZGNjZTQz
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmgKQEAgLTQxLDYgKzQxLDcg
QEAgY2xhc3MgR0xDb250ZXh0OwogbmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBHQzNETGF5
ZXIgOiBwdWJsaWMgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR0MzRExheWVyKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0
eWxlKTsKICAgICB2aXJ0dWFsIH5HQzNETGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCmlu
ZGV4IGEyYWUzNGEzMTMyN2U4NzE1NjU0MTQ2ZDE4Zjc3YzdhNjdmMjQyMTYuLmQzNTNjOGJlMWI1
YmZhMTE2YjZjYjg1MjA5NzAyNzdjYzkzMjQ1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0
dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBhdXRvIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjpjcmVh
dGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBb
XShJbWFnZUJhY2tpbmcmKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJ
bWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5n
VGV4dHVyZU1hcHBlckltcGwuaAppbmRleCAxYTYyM2FmYTQwOTNiMjJhYzIwZDEzYjMyOTM2MDgz
YWNiMDhlYTgwLi40OWIxZTliMmVjMDM1NTJhMGJkNjEyMGFlNzdiOGU2OTRhOTQ2MTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4
dHVyZU1hcHBlckltcGwuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBJbWFnZTsKIG5hbWVzcGFj
ZSBOaWNvc2lhIHsKIAogY2xhc3MgSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwgZmluYWwg
OiBwdWJsaWMgSW1hZ2VCYWNraW5nOjpJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdGF0aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
M0RPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaAppbmRleCA3YzYxNGZiNDAzMzU4ZWE0MDQ1NmQ4
NDYyY2Y4ZGM1YmMzYTRlYjE5Li4xNDcyMTc5MDc3MjdjYWVlYTI3ZWY2OGEwNjljYzA1MzEwODIw
ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oCkBAIC0zNSw2ICszNSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTENvbW1v
biA6IHB1YmxpYyBFeHRlbnNpb25zM0QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBlNjg0OGZjZWNhNDFlOTczNmYy
YTM4MTdhOWZkMDNjZWJhZTNhYzExLi5iOTYzNjNiNTUxOTM1NmM4Y2RmNDY1NDM2MzI2ZWQwNmNl
Y2VkODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTQ3NSw3
ICs0NzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYg
ZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkK
IHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjpt
YWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7
CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0
aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApp
bmRleCBiMjRkZjAzNWUyODhlMWViMmY4YWY5ZjdhYjkxZDc3OWQwYWNhNDllLi4yYTBlNWI3NmU0
ZDZiYWI3MGU5MGIyZjNkMjhlYjQzYzA3ZjQyNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAg
IEFOR0xFUmVzb3VyY2VzLkhhc2hGdW5jdGlvbiA9IG5hbWVIYXNoRm9yU2hhZGVyOwogCiAgICAg
aWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CisgICAgICAgIG5hbWVIYXNo
TWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAgICAgc2V0Q3Vy
cmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFwRm9yU2hhZGVycy5nZXQoKSk7CiAg
ICAgbV9jb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJjZXMpOwogCkBAIC0xMDIzLDcg
KzEwMjMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUoUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBBTkdMRVNoYWRlcgogICAgICAgICAvLyBBdHRyaWJ1dGVz
IGFyZSBhIHNwZWNpYWwgY2FzZTogdGhleSBtYXkgYmUgcmVxdWVzdGVkIGJlZm9yZSBhbnkgc2hh
ZGVycyBoYXZlIGJlZW4gY29tcGlsZWQsCiAgICAgICAgIC8vIGFuZCBhcmVuJ3QgZXZlbiByZXF1
aXJlZCB0byBiZSB1c2VkIGluIGFueSBzaGFkZXIgcHJvZ3JhbS4KICAgICAgICAgaWYgKCFuYW1l
SGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAgICAgICAgbmFtZUhhc2hN
YXBGb3JTaGFkZXJzID0gbWFrZVVuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKICAgICAgICAgc2V0
Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFwRm9yU2hhZGVycy5nZXQoKSk7
CiAKICAgICAgICAgYXV0byBnZW5lcmF0ZWROYW1lID0gZ2VuZXJhdGVIYXNoZWROYW1lKG5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCmluZGV4IDI0MzA0NmQ5
ODlhZDczOGY3YzlmNzE0OTU1NjdjOTZiYjM0YzU2NDEuLjcwYTIwZDUwYzM1MjFhNjEyM2U2ZWZh
ZjFmNDc2OGY2NDk1Y2RlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xF
Uy5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRl
cHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRl
bnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgaXNH
TEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRl
bnNpb25zM0RPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4g
Km1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpAQCAtMjcxLDcgKzI3MSw3IEBAIFJlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQz
REF0dHJpYnV0ZXMKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGlj
c0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29u
dGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJl
ZENvbnRleHQpCiAgICAgOiBtX2F0dHJzKGF0dHJpYnV0ZXMpCiAgICAgLCBtX2NvbXBpbGVyKGlz
R0xFUzJDb21wbGlhbnQoKSA/IFNIX0VTU0xfT1VUUFVUIDogU0hfR0xTTF9DT01QQVRJQklMSVRZ
X09VVFBVVCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlx
dWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJTdHlsZSkpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVN
YXBwZXIuY3BwCmluZGV4IGVkNmNjZjE5NGJiZWUxZTAwZmQ0MzlmNjFhNmRlNjJlNDAzMDJlYTMu
LjhmZDNhZDRmNzJkNzY0YmQ5NWQyMjBmNTgxZWQyYjc5NjI4ODNjOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRl
eHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCkBAIC0xMDYsOSArMTA2LDkg
QEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNE
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3MKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNoYXJlZENv
bnRleHQsICFzaGFyZWRDb250ZXh0KTsKICNpZiBVU0UoTklDT1NJQSkKLSAgICBtX25pY29zaWFM
YXllciA9IHN0ZDo6bWFrZV91bmlxdWU8Tmljb3NpYTo6R0MzRExheWVyPigqdGhpcywgcmVuZGVy
U3R5bGUpOworICAgIG1fbmljb3NpYUxheWVyID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQzNETGF5
ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAjZWxzZQotICAgIG1fdGV4bWFwTGF5ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcj4oKnRoaXMsIHJlbmRl
clN0eWxlKTsKKyAgICBtX3RleG1hcExheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAjZW5kaWYKIAogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwpAQCAtMzI1LDEwICszMjUsMTAgQEAgRXh0ZW5zaW9uczNEJiBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsK
ICNpZiBVU0UoT1BFTkdMX0VTKQogICAgICAgICAvLyBnbEdldFN0cmluZ2kgaXMgbm90IGF2YWls
YWJsZSBvbiBHTEVTMi4KLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxF
eHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKKyAgICAgICAgbV9leHRlbnNpb25z
ID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKICNlbHNl
CiAgICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmlsZSwg
YW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KLSAgICAgICAgbV9leHRlbnNpb25z
ID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIEdMQ29udGV4dDo6
Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFr
ZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52
ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgIH0KICAgICByZXR1cm4gKm1fZXh0ZW5zaW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKaW5k
ZXggMTRmMWRiZjE4ZDkxYjM5MDc1ZTJkNTBmMjE0OWI3NzZiYmMxNzQ5My4uNjYzMjMxNTY5NWJh
MjFjMjY3ZDE1NTkzMmViYTkxNDdmYjY2YWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogCiAgICAgewog
ICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsK
LSAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBv
c2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29s
b3JGb3JtYXQpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVy
KG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5t
X2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVy
bmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQubWFya0xheWVyQ29tcG9z
aXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oCmlu
ZGV4IDhiNjAyMTRhYmE5YjgzY2ExOTMwZjEzNWM3NTM0OGIyNjZmZTVjYWMuLmU2ZjA5Yzg3OTg1
NDg2MzJlZTRiMGFhNWE1NjMwNjE1YTI0YTM3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgR0xDb250ZXh0
OwogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTsKIAogY2xhc3MgVGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyIDogcHVibGljIFBsYXRmb3JtTGF5ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFRleHR1cmVNYXBwZXJHQzNEUGxh
dGZvcm1MYXllcihHcmFwaGljc0NvbnRleHQzRCYsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJT
dHlsZSk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDk3NGI4NTc4Yjg4YWE2NDM1MDkxZThiMGMzOGJiMmRi
NzEwZWYxMDIuLmEyZjc1ODY2ZTMyM2I4ZmRiYTQzYTAwN2Q0NDdhYWE0NjU3NmJmZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgVGV4dHVyZU1hcHBlckdMOjpU
ZXh0dXJlTWFwcGVyR0woKQogCiAgICAgbV9kYXRhID0gbmV3IFRleHR1cmVNYXBwZXJHTERhdGEo
cGxhdGZvcm1Db250ZXh0KTsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgbV90ZXh0
dXJlUG9vbCA9IHN0ZDo6bWFrZV91bmlxdWU8Qml0bWFwVGV4dHVyZVBvb2w+KG1fY29udGV4dEF0
dHJpYnV0ZXMpOworICAgIG1fdGV4dHVyZVBvb2wgPSBtYWtlVW5pcXVlPEJpdG1hcFRleHR1cmVQ
b29sPihtX2NvbnRleHRBdHRyaWJ1dGVzKTsKICNlbmRpZgogfQogCkBAIC03OTAsNyArNzkwLDcg
QEAgUmVmPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZShHTGlu
dCBpbnRlcm5hbEZvcm1hdCkKIAogc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXI+IFRleHR1
cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJHTD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
ZXh0dXJlTWFwcGVyR0w+KCk7CiB9CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCA3YWZkZjMwYTA1YmNhNTM5N2I4MDE4YmZl
YmQ4OWUwZTFkYTUwMzMzLi5lMTFhMGJiMjdiODEwYzJkNTI3NmIyYTliMGM1MDlmODg5NTA2NmMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmYKICAgICBhdXRvIHRl
eHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJp
YnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5yZXNldChtX3Np
emUpOwogICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUuZ2V0KCkpLmNv
cHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJl
KSwgbV9leHRyYUZsYWdzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKIH0KIAog
dm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBv
cGFjaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHku
Y3BwCmluZGV4IGM3MTRmNmQ3OGMxY2YxYTYxZDRkZmY2YjQyMDUyMWIwMmVjZDdjNTAuLjM3OTM2
NzVhYzhkNmIzYzMyYTNiMzE4MTkzZTQ5YTdiMzdkYzQ4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKQEAgLTcxLDggKzcxLDggQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdU
aHJlYWQoQ29tcG9zaXRvciogY28KICAgICBpZiAobV90YXJnZXRMYXllciAmJiBtX2N1cnJlbnRC
dWZmZXIpCiAgICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50
QnVmZmVyLmdldCgpKTsKIAotICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7Ci0gICAgbV9jb21wb3NpdG9y
VGhyZWFkVXBkYXRlVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGlt
ZXJGaXJlZCk7CisgICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyID0gbWFrZVVuaXF1ZTxS
dW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6
Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFz
ZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKTsKKyAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVU
aW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk6OmNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKTsKIAogI2lmIFVT
RShHTElCX0VWRU5UX0xPT1ApCiAgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXItPnNl
dFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVU
aW1lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwCmluZGV4IDM2N2Q4YTUzY2YzNzBkMjIwMmQ2ZjM0MDFjZGNiM2EwMmZmNDJj
MmIuLmQ0NzU3MTBiYTBjZGRmYmNkYmRhMGM2OGNlMzBiODFlZmFhZDY5Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBA
IC05ODEsNyArOTgxLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNv
bnRlbnRCdWZmZXJzKCkKIAogICAgIC8vIEVuc3VyZSB0aGUgVGlsZWRCYWNraW5nU3RvcmUgb2Jq
ZWN0LCBhbmQgZW5mb3JjZSBhIGNvbXBsZXRlIHJlcGFpbnQgaWYgaXQncyBub3QgYmVlbiBwcmVz
ZW50IHlldC4KICAgICBpZiAoIWxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSkgewotICAgICAg
ICBsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQmFj
a2luZ1N0b3JlPihpbXBsLCBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOworICAgICAgICBsYXll
clN0YXRlLm1haW5CYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFRpbGVkQmFja2luZ1N0b3JlPihp
bXBsLCBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOwogICAgICAgICBtX3BlbmRpbmdWaXNpYmxl
UmVjdEFkanVzdG1lbnQgPSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKaW5kZXgg
MmMyNGUwODRlMzI5NmE0N2UwOWU5NjEwZDc0OGQ2YTg4ZmU0OTY1Ni4uZmJjMjQ1YmUxZTUwMzg1
M2M3MzJmMDFlNWEzNGU1NTg0YTViM2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRpbGVkQmFja2luZ1N0b3JlOwog
CiBjbGFzcyBUaWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEludFBvaW50IENvb3JkaW5hdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNiZTQzMTFkZWFhMDI0OTdjN2VkMWNkY2Ex
MzQ1YmE1YTY4MDMxMDkuLjRhNjk3ODIyZTRkZTJjZGI4YjY2ZjgxZDQwNGQ4ZGJlODJiNDk4NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAt
MjIwLDcgKzIyMCw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKGNvbnN0
IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBzCiAgICAgdW5zaWduZWQgdGls
ZXNUb0NyZWF0ZUNvdW50ID0gdGlsZXNUb0NyZWF0ZS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBuID0gMDsgbiA8IHRpbGVzVG9DcmVhdGVDb3VudDsgKytuKSB7CiAgICAgICAgIFRpbGU6OkNv
b3JkaW5hdGUgY29vcmRpbmF0ZSA9IHRpbGVzVG9DcmVhdGVbbl07Ci0gICAgICAgIG1fdGlsZXMu
YWRkKGNvb3JkaW5hdGUsIHN0ZDo6bWFrZV91bmlxdWU8VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUp
KTsKKyAgICAgICAgbV90aWxlcy5hZGQoY29vcmRpbmF0ZSwgbWFrZVVuaXF1ZTxUaWxlPigqdGhp
cywgY29vcmRpbmF0ZSkpOwogICAgIH0KICAgICByZXF1aXJlZFRpbGVDb3VudCAtPSB0aWxlc1Rv
Q3JlYXRlQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggYzg4ZTliZWY5
ZDY2Y2EyYjU1MDE4YzkwZjRiMGE0MjhiNDY4MmVmOC4uNGVhZjAwMTEyMGM0N2ZmY2U1NWFiNGRm
YTkyMTgzY2U4YjMxOTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgVHJhbnNmb3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3Qg
VHJhbnNmb3JtU3RhdGUmIG90aGVyKQogICAgIGlmIChtX21hcFF1YWQpIHsKICAgICAgICAgbV9s
YXN0UGxhbmFyUXVhZCA9IG90aGVyLm1fbGFzdFBsYW5hclF1YWQ7CiAgICAgICAgIGlmIChvdGhl
ci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKQotICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCk7CisgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFk
ID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFk
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9
IG51bGxwdHI7CiAgICAgfQpAQCAtNTAsNyArNTAsNyBAQCBUcmFuc2Zvcm1TdGF0ZSYgVHJhbnNm
b3JtU3RhdGU6Om9wZXJhdG9yPShjb25zdCBUcmFuc2Zvcm1TdGF0ZSYgb3RoZXIpCiAgICAgbV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybSA9IG51bGxwdHI7CiAKICAgICBpZiAob3RoZXIubV9hY2N1bXVs
YXRlZFRyYW5zZm9ybSkKLSAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5tX2FjY3VtdWxhdGVkVHJhbnNm
b3JtKTsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNm
b3JtYXRpb25NYXRyaXg+KCpvdGhlci5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAgICAgICAg
CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMTI5LDEyICsxMjksMTIgQEAgdm9pZCBUcmFuc2Zv
cm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybUZyb21Db24KICAgICAvLyBJZiB3ZSBoYXZlIGFuIGFjY3VtdWxhdGVkIHRyYW5zZm9ybSBm
cm9tIGxhc3QgdGltZSwgbXVsdGlwbHkgaW4gdGhpcyB0cmFuc2Zvcm0KICAgICBpZiAobV9hY2N1
bXVsYXRlZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFu
c2Zvcm1EaXJlY3Rpb24pCi0gICAgICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gc3Rk
OjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5l
ciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRU
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9t
Q29udGFpbmVyICogKm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tdWx0aXBseSh0cmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyKTsKICAgICB9IGVsc2UgaWYgKGFjY3VtdWxhdGUgPT0gQWNjdW11bGF0ZVRyYW5zZm9y
bSkgewogICAgICAgICAvLyBNYWtlIG9uZSBpZiB3ZSBzdGFydGVkIHRvIGFjY3VtdWxhdGUKLSAg
ICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIpOworICAgICAgICBtX2FjY3VtdWxh
dGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3Jt
RnJvbUNvbnRhaW5lcik7CiAgICAgfQogICAgIAogICAgIGlmIChhY2N1bXVsYXRlID09IEZsYXR0
ZW5UcmFuc2Zvcm0pIHsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpz
ZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZChjb25zdCBGbG9hdFF1YWQqIHF1YWQpCiAgICAgLy8g
TWFwIHRoZSBxdWFkIGJhY2sgdGhyb3VnaCBhbnkgdHJhbnNmb3JtIG9yIG9mZnNldCBiYWNrIGlu
dG8gdGhlIGxhc3QgZmxhdHRlbmluZyBjb29yZGluYXRlIHNwYWNlLgogICAgIEZsb2F0UXVhZCBi
YWNrTWFwcGVkUXVhZCgqcXVhZCk7CiAgICAgbWFwUXVhZChiYWNrTWFwcGVkUXVhZCwgaW52ZXJz
ZURpcmVjdGlvbigpKTsKLSAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjptYWtl
X3VuaXF1ZTxGbG9hdFF1YWQ+KGJhY2tNYXBwZWRRdWFkKTsKKyAgICBtX2xhc3RQbGFuYXJTZWNv
bmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KGJhY2tNYXBwZWRRdWFkKTsKIH0KIAog
dm9pZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZChGbG9hdFF1YWQmIHF1YWQsIFRyYW5zZm9ybURp
cmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bVN0YXRlLmgKaW5kZXggMTA4NjM3NDAwYTIwZmEyZjA5ZGY2YWQ0MzkzM2NhN2RhMTdmNDg2MS4u
YjYyNTgzNmE1Y2UyMjViZjQ3ZjMzMGMwOGMyOWQ4Yzc1NjUyZWU3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtU3RhdGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZSB7CiAgICAg
ICAgIC8vIFdlIG11c3QgYmUgaW4gYSBmbGF0dGVuZWQgc3RhdGUgKG5vIGFjY3VtdWxhdGVkIG9m
ZnNldCkgd2hlbiBzZXR0aW5nIHRoaXMgc2Vjb25kYXJ5IHF1YWQuCiAgICAgICAgIEFTU0VSVCht
X2FjY3VtdWxhdGVkT2Zmc2V0ID09IExheW91dFNpemUoKSk7CiAgICAgICAgIGlmIChxdWFkKQot
ICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8
RmxvYXRRdWFkPigqcXVhZCk7CisgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFk
ID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpxdWFkKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApp
bmRleCBkMzFhMjU3OWZiMWUxYzc5NDI1ZDAyOTA1ZWJlYmM4OGQxNGFkZDUwLi44Zjc3MDI3NWRl
Njk5NTY4Yzg1MTVhZWEwZjJjZmEwZTUyMDU2NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtNjQyLDcgKzY0
Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0
ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgYm9vbCBzeW50aGVzaXplQm9sZCA9
IGlzR0RJRm9udFdlaWdodEJvbGQod2VpZ2h0KSAmJiAhaXNHRElGb250V2VpZ2h0Qm9sZChsb2dG
b250LmxmV2VpZ2h0KTsKICAgICBib29sIHN5bnRoZXNpemVJdGFsaWMgPSBpc0l0YWxpYyhmb250
RGVzY3JpcHRpb24uaXRhbGljKCkpICYmICFsb2dGb250LmxmSXRhbGljOwogCi0gICAgYXV0byBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQp
LCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5
bnRoZXNpemVJdGFsaWMsIHVzZUdESSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEZv
bnRQbGF0Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQ
aXhlbFNpemUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJdGFsaWMsIHVzZUdESSk7CiAK
ICNpZiBVU0UoQ0cpCiAgICAgYm9vbCBmb250Q3JlYXRpb25GYWlsZWQgPSAhcmVzdWx0LT5jZ0Zv
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAzODdhMjM5ZjgyOWMyZDc4
MDljMmM5NmQzZmUxMjRkZWUxNGJkM2Q3Li42NDg0ODVhYzI2Y2IyMzc1Y2Y2NTc0ZjgxZmY0Y2Q2
NTY3MmM1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTMsNyArMTEz
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBmb250UmVmZXJlbmNlID0gcmVuYW1l
QW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICghZm9udFJlZmVyZW5j
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZv
bnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1h
dChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDE5
MDQ0OTAwNDVmNGU3ZTdmN2RiODFkOTVmMGE2YTI0MmJkNTQ4MzguLmVhYjgwNmU0MmMwNjJkNTU5
Nzg5OTQ1MmVmZTc0NzRlNTk5ZjkyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAt
NDEsNiArNDEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRp
bmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdz
OwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk7CiBwdWJsaWM6CiAgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShIQU5ETEUgZm9udFJlZmVy
ZW5jZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAppbmRleCBhYjdjNzkwZDYwZjJlOGY3NGFmMDNjMDZhY2ZjNzJjOGUzOWMyMmQ5Li5l
ZWVhZmViZDkzM2NhOWM3OGRkMDUxNDEzZDIzMzQ0Y2E4NTNiMDEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShT
aGFyZWRCdWZmZQogICAgIGlmICghZm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
Pihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOwogfQogCiBib29sIEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxT
Y3JlZW5Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKaW5kZXggYjk1MzU1MDNjMzA2YzUwMWFhMzkzZjMx
ZmZkOTI4ODVlZGU5YmRlZi4uY2M3YWQzZWMzMTBiYWZmOWYyZDUzMTNlYTM3ZWJiNjY3Yzc5ZDRl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxT
Y3JlZW5Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBpbnQga0Z1bGxTY3JlZW5BbmltYXRpb25EdXJhdGlv
biA9IDUwMDsgLy8gbWlsbGlzZWNvbmRzIAogCiBjbGFzcyBGdWxsU2NyZWVuQ29udHJvbGxlcjo6
UHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50ICB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUHJpdmF0ZShGdWxsU2Ny
ZWVuQ29udHJvbGxlciogY29udHJvbGxlciwgRnVsbFNjcmVlbkNvbnRyb2xsZXJDbGllbnQqIGNs
aWVudCkgCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC0xMDMsNyArMTA0
LDcgQEAgTFJFU1VMVCBGdWxsU2NyZWVuQ29udHJvbGxlcjo6UHJpdmF0ZTo6ZnVsbHNjcmVlbkNs
aWVudFduZFByb2MoSFdORCBod25kLCBVSU5UIG0KIH0KIAogRnVsbFNjcmVlbkNvbnRyb2xsZXI6
OkZ1bGxTY3JlZW5Db250cm9sbGVyKEZ1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50KiBjbGllbnQp
Ci0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxQcml2YXRlPih0aGlzLCBjbGllbnQp
KQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8UHJpdmF0ZT4odGhpcywgY2xpZW50KSkKIHsK
ICAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKIH0KQEAgLTEzMSwxMyArMTMyLDEzIEBA
IHZvaWQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbigpCiAgICAgbV9wcml2
YXRlLT5tX29yaWdpbmFsRnJhbWUgPSBvcmlnaW5hbEZyYW1lOwogCiAgICAgQVNTRVJUKCFtX3By
aXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdyk7Ci0gICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRX
aW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5k
b3c+KG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cg
PSBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0
ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3ctPmNyZWF0ZVdpbmRv
dygwKTsKICAgICA6OkFuaW1hdGVXaW5kb3cobV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3ct
Pmh3bmQoKSwga0Z1bGxTY3JlZW5BbmltYXRpb25EdXJhdGlvbiwgQVdfQkxFTkQgfCBBV19BQ1RJ
VkFURSk7CiAKICAgICBtX3ByaXZhdGUtPm1fY2xpZW50LT5mdWxsU2NyZWVuQ2xpZW50V2lsbEVu
dGVyRnVsbFNjcmVlbigpOwogICAgIEFTU0VSVCghbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5k
b3cpOwotICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93ID0gc3RkOjptYWtlX3VuaXF1
ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOwor
ICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIEFTU0VSVCht
X3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyk7CiAgICAgbV9wcml2YXRlLT5tX2Z1bGxTY3Jl
ZW5XaW5kb3ctPmNyZWF0ZVdpbmRvdygwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5j
cHAKaW5kZXggMTA2N2I5NjA5M2RiMmVkNTkxYTIxYTMxZDlkMDI1NmRjMTI5M2U4OS4uZjE0NDI1
NzJjYzZkMWQ1NGJiZWU1OGJkYmMzNmVkZjc3NGFhYmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
Q2Fpcm9XaW4uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUluaXQoSERDIGRjLCBib29sIGhhc0FscGhhKQogCiAgICAgY2Fpcm9fdCogY3IgPSBjcmVh
dGVDYWlyb0NvbnRleHRXaXRoSERDKGRjLCBoYXNBbHBoYSk7CiAKLSAgICBtX2RhdGEgPSBuZXcg
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1D
b250ZXh0Q2Fpcm8+KGNyKSk7CisgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZShtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOwogICAgIG1f
ZGF0YS0+cGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9kYXRhKTsK
ICAgICBtX2RhdGEtPm1faGRjID0gZGM7CiAgICAgaWYgKHBsYXRmb3JtQ29udGV4dCgpLT5jcigp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCBjMmJhZmFmOTZhMTYwNzA4
MGI3NjMzOTUyNjYyZTc2Nzc2MTRiMDBjLi45NmM4MjgxYWY0YjIyYzY2ODZhY2IxNGM1ZTgyYzFk
NjliOTBkZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoSERDIGhkYywgSUQyRDFEQ1Jl
bmRlclRhcmdldCoqIHJlbmRlclRhcmdldCwgUkUKIAogICAgICgqcmVuZGVyVGFyZ2V0KS0+Qmlu
ZERDKGhkYywgJnJlY3QpOwogCi0gICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOworICAg
IGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEPigqcmVuZGVyVGFyZ2V0KTsKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNvbnRleHQpLCBCaXRtYXBSZW5k
ZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1faGRjID0gaGRjOwog
fQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQo
SERDIGhkYywgYm9vbCBoYXNBbHBoYSkKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQuZ2V0KCkpOworICAgIGF1
dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVj
dDJEPihyZW5kZXJUYXJnZXQuZ2V0KCkpOwogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShvd25lZFBsYXRmb3JtQ29udGV4dCksIEJpdG1hcFJl
bmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYmQ3NmVmYmJh
OWQwZTg5N2QzZDI4OGU4NWU4ZDI0NDRjYzRmOGY0ZS4uMWViYjViMDlkMzg1MzdjMDE5MjIwYjk0
N2RjYWQ5NDRkOGUxMDExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBs
RmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUYKICAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZw
bGF0Zm9ybUNvbnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRl
eHQpOwogICAgICAgICB9KTsKIH0KIApAQCAtNTUsMTQgKzU1LDE0IEBAIEdyYXBoaWNzQ29udGV4
dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
OjpjcmVhdGVGCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1w
bEZhY3RvcnkoCiAgICAgICAgIFtyZW5kZXJUYXJnZXRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCByZW5kZXJUYXJnZXQpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0
LCByZW5kZXJUYXJnZXQpOwogICAgICAgICB9KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0KQogICAgIDogR3Jh
cGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0g
eyB9KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9w
cml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPiht
X3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0
VHlwZTo6R1BVTWVtb3J5KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCiB7CiAgICAgbV9wbGF0Zm9y
bUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAg
IG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQpOwpAQCAtNzAsOSArNzAs
OSBAQCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRChHcmFwaGljc0NvbnRleHQmIGNvbnRleAogCiBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJ
bXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCi0gICAgLCBt
X293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQ+KHJlbmRlclRhcmdldCkpCisgICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KG1ha2VV
bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldCkpCiAgICAgLCBtX3Bs
YXRmb3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9y
bUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQ
VU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJl
bmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0
LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZh
dGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAK
aW5kZXggNWJkZTRjZWRmNTE2YTkxNzlhNmQzZDNiM2UzM2QxMzRlZDVhYjUxMS4uMWQ4MDQyMGNm
N2VjNmNkNzc1YTYyYmFlYTIyZjk5MDYwN2ViNGNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAK
QEAgLTk1LDcgKzk1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpXaW5kb3dzQml0bWFwOjp+V2luZG93
c0JpdG1hcCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRt
YXA+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlV2luZG93c0JpdG1hcChjb25zdCBJbnRTaXplJiBz
aXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdpbmRvd3NCaXRtYXA+KG1fZGF0
YS0+bV9oZGMsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdpbmRvd3NCaXRtYXA+KG1f
ZGF0YS0+bV9oZGMsIHNpemUpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcApp
bmRleCAwNmMxNzQ1NzlhNGJjMTMwOTFmMzRiNTc5NGFhYTkyOTkzYmJiYTI0Li4zNWE5ZmY2MTEz
NTFjMzNjNzE3NGQ5MmExZmRjZjQ0NzBlODFhODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
CkBAIC0xMTIsOCArMTEyLDggQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gTm90ZTogVGhpcyBwbGFjZXMgdGhlIGJpdG1hcGNvbnRleHQgaW50byBh
IGxvY2tlZCBzdGF0ZSBiZWNhdXNlIG9mIHRoZSBCZWdpbkRyYXcgY2FsbCBpbiB0aGUgY29uc3Ry
dWN0b3IuCi0gICAgbV9kYXRhLnBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOwotICAgIG1fZGF0YS5j
b250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KG1fZGF0YS5wbGF0Zm9y
bUNvbnRleHQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5
cGU6OkdQVU1lbW9yeSk7CisgICAgbV9kYXRhLnBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOworICAgIG1fZGF0
YS5jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KG1fZGF0YS5wbGF0Zm9ybUNv
bnRleHQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6
OkdQVU1lbW9yeSk7CiAKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmluZGV4IGUwNjYzMTBhMGFjYTcxYmQ5YWM4
MWRkMTZiYTBkYjE1YTdkNTExZDUuLmQyODUzOGExNTgyMjhiMmM4OWUxODNjNzM5MTRlMTJiOGEx
ODkxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cu
aApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xp
ZW50IHsKIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCop
OwogICAgIH5NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IDU4MzhlYzE1N2Ey
YzdiNzE2M2I3MTY4MmE0ZWI4YzgwMzRlOTYzMjEuLjZkNjRhZTlhNmUzYTQxN2ZiMTRmMTIxNjZm
NjhkM2M5YTU1MjY2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAg
ICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAor
ICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCiAgICAg
ICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAg
ICB9CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmJ1ZmZl
cmVkKCkgY29uc3QKIHsgCi0gICAgYXV0byByYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOwogICAgIGlmIChtX3ByZXNlbnRlciAmJiBtX3ByZXNlbnRlci0+bWF4VGlt
ZUxvYWRlZCgpID4gMCkKICAgICAgICAgcmFuZ2VzLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgp
LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV9wcmVzZW50ZXItPm1heFRpbWVMb2FkZWQo
KSkpOwogICAgIHJldHVybiByYW5nZXM7CkBAIC04ODgsNyArODg4LDcgQEAgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6Q3VzdG9tVmlkZW9Q
cmVzZW50ZXIoTWUKICAgICBtX3NvdXJjZVJlY3QuYm90dG9tID0gMTsKICAgICBtX3NvdXJjZVJl
Y3QucmlnaHQgPSAxOwogCi0gICAgbV9wcmVzZW50ZXJFbmdpbmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PERpcmVjdDNEUHJlc2VudGVyPigpOworICAgIG1fcHJlc2VudGVyRW5naW5lID0gbWFrZVVuaXF1
ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKICAgICBpZiAoIW1fcHJlc2VudGVyRW5naW5lKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uaAppbmRleCA5MGU5YjcyMTU3MDhhYzJhMmVmZjdkNGE2YWRlMTQ3ZWVlMjg4NDY2Li5hMjE2
NjExMGIzODAwZjE3NjQ3MTY1YzJkMDJhMGRhOWVhOTUxMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oCkBAIC00Nyw2ICs0Nyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBm
aW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24oTWVkaWFQbGF5ZXIqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uKCk7CkBAIC0xNjgsNiArMTY5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmEKICAgICB9OwogCiAgICAgY2xhc3MgQXN5bmNDYWxsYmFjayA6IHB1YmxpYyBJTUZBc3lu
Y0NhbGxiYWNrLCBwdWJsaWMgTWVkaWFQbGF5ZXJMaXN0ZW5lciB7CisgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQXN5bmNDYWxsYmFjayhNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24qLCBib29sIGV2ZW50KTsKICAgICAgICAgfkFz
eW5jQ2FsbGJhY2soKTsKQEAgLTE5MSw2ICsxOTMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YQogICAgIHR5cGVkZWYgRGVxdWU8Q09NUHRyPElNRlNhbXBsZT4+IFZpZGVvU2FtcGxlTGlzdDsK
IAogICAgIGNsYXNzIFZpZGVvU2FtcGxlUG9vbCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVmlkZW9TYW1wbGVQb29sKCkgPSBkZWZhdWx0
OwogICAgICAgICB2aXJ0dWFsIH5WaWRlb1NhbXBsZVBvb2woKSA9IGRlZmF1bHQ7CkBAIC0yMTIs
NiArMjE1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFs
IDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICBjbGFzcyBEaXJlY3QzRFBy
ZXNlbnRlcjsKIAogICAgIGNsYXNzIFZpZGVvU2NoZWR1bGVyIHsKKyAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBWaWRlb1NjaGVkdWxlcigpID0g
ZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+VmlkZW9TY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CkBA
IC0yNTcsNiArMjYxLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
IGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICB9OwogCiAgICAg
Y2xhc3MgRGlyZWN0M0RQcmVzZW50ZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAgICAgICAgIERpcmVjdDNEUHJlc2VudGVyKCk7CiAgICAgICAgIH5E
aXJlY3QzRFByZXNlbnRlcigpOwpAQCAtMzE5LDYgKzMyNCw3IEBAIGNsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhCiAgICAgICAgICwgcHVibGljIElNRlZpZGVvRGlzcGxheUNvbnRyb2wKICAgICAgICAg
LCBwdWJsaWMgSU1GQXN5bmNDYWxsYmFjawogICAgICAgICAsIHB1YmxpYyBNZWRpYVBsYXllckxp
c3RlbmVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgog
ICAgICAgICBDdXN0b21WaWRlb1ByZXNlbnRlcihNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24qKTsKICAgICAgICAgfkN1c3RvbVZpZGVvUHJlc2VudGVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRC5oCmluZGV4IDZmYmUyYjVlZDc1YWIzYmEwNGUzMDI1NDljY2ViOTE2MWFmNWMw
MTMuLjE5MDU0MGUwMzNkOWI3Y2M4YzU0YjhiMWJlZjc3NjkyYmQ1Zjk0MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9y
bUNvbnRleHREaXJlY3QyRC5oCkBAIC00NSw2ICs0NSw3IEBAIHN0cnVjdCBTaGFkb3dTdGF0ZTsK
IH0KIAogY2xhc3MgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtQ29udGV4dERpcmVj
dDJEKTsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRChJRDJEMVJlbmRlclRh
cmdldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1dLQ0FJbWFnZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9XS0NBSW1hZ2VRdWV1ZS5jcHAKaW5kZXggMzM3ZmFmMzc4ZGE3OTU1YmVhNjEwYWVjOTA3NTc5
NjZkNmM0ODIwMC4uOWQ3ZDkyZThlYWQ5NmExYmJkZmJkMWQ5MmRjOTY2MjFjNmM0MmY3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUlt
YWdlUXVldWUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENBSW1hZ2VRdWV1ZVJlZj4gbV9pbWFnZVF1ZXVlOwog
fTsKQEAgLTUwLDEzICs1MSwxMyBAQCBzdGF0aWMgdm9pZCBXS0NBSW1hZ2VRdWV1ZVJlbGVhc2Uo
Q0FJbWFnZVF1ZXVlUmVmIGlxKQogfQogCiBXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUo
dWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgY2FwYWNpdHkpCi0gICAg
OiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCisg
ICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCiB7CiAg
ICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBhZG9wdENGKHdrQ0FJbWFnZVF1ZXVlQ3JlYXRl
KHdpZHRoLCBoZWlnaHQsIGNhcGFjaXR5KSk7CiB9CiAKIFdLQ0FJbWFnZVF1ZXVlOjpXS0NBSW1h
Z2VRdWV1ZShjb25zdCBXS0NBSW1hZ2VRdWV1ZSYgbykKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1h
a2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtl
VW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKIHsKICAgICBtX3ByaXZhdGUtPm1faW1h
Z2VRdWV1ZSA9IG8ubV9wcml2YXRlLT5tX2ltYWdlUXVldWU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggNzFhMDBhMzBjMGZhZWRkOWI0
MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NC4uNDIyNTJkMzRiNTRmZTZjMmMyNmI1MjJjNjYwZTg2MmYw
NTZlZjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3Rr
LmNwcApAQCAtNDMsMjQgKzQzLDI0IEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigiQ0xJUEJPQVJE
Iik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIkNMSVBCT0FSRCIpOwogfQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFs
U2VsZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigi
UFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJQUklNQVJZIik7
CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhOjpjcmVhdGUoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJh
Z0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIEFTU0VSVChkcmFnRGF0
YS5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2Fy
ZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0
ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCA0OTAz
NzFhZDg5ZWYyZTc5NmUzNDAxYWFjMWRiYjgwNmVhOTY2ZWIwLi5hZjhmZjM0MjQ2YmM5NzJmMWE1
ZmY3MzdmOTkyOTgwOWZiNjY5YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC0yNjYsNiArMjY2LDcgQEAgVmVjdG9yPEdka0F0
b20+IFBhc3RlYm9hcmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0KiB3aWRn
ZXQsIEdka0RyYWcKIHN0YXRpYyBTZWxlY3Rpb25EYXRhKiBzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0
aW9uOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgIENsaXBib2FyZFNldERhdGEoU2VsZWN0aW9uRGF0YSYgc2VsZWN0
aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2spCiAg
ICAgICAgIDogc2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pCiAgICAgICAgICwgc2VsZWN0aW9uQ2xl
YXJlZENhbGxiYWNrKFdURk1vdmUoc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKSkKQEAgLTMwMCw3
ICszMDEsNyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xpcGJvYXJkQ29udGVudHMo
R3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IFNlbAogCiAgICAgaWYgKG51bWJlck9mVGFy
Z2V0cyA+IDAgJiYgdGFibGUpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8U2VsZWN0aW9uRGF0YSo+
IGNoYW5nZShzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBjb25zdF9jYXN0PFNlbGVjdGlvbkRh
dGEqPigmc2VsZWN0aW9uKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJp
bWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKKyAgICAgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxD
bGlwYm9hcmRTZXREYXRhPigqc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgV1RGTW92ZShwcmlt
YXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOwogICAgICAgICBpZiAoZ3RrX2NsaXBib2FyZF9zZXRfd2l0
aF9kYXRhKGNsaXBib2FyZCwgdGFibGUsIG51bWJlck9mVGFyZ2V0cywgZ2V0Q2xpcGJvYXJkQ29u
dGVudHNDYWxsYmFjaywgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLCBkYXRhLmdldCgp
KSkgewogICAgICAgICAgICAgZ3RrX2NsaXBib2FyZF9zZXRfY2FuX3N0b3JlKGNsaXBib2FyZCwg
bnVsbHB0ciwgMCk7CiAgICAgICAgICAgICAvLyBXaGVuIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhf
ZGF0YSgpIHN1Y2NlZWRzIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayB0YWtlcyB0aGUg
b3duZXJzaGlwIG9mIGRhdGEsIHNvIHdlIGxlYWsgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCmluZGV4IGJkY2M5OWU4NTlk
NDk3NTA3OGZmM2M1ZTJlYmMzODVkOWI5NWI5NTIuLjczZTA3NThhNmVkZDFlMTkzMjMxMDgzZjg5
YTdlN2ZkZjIwZDEzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZUdhZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR2FkZ2V0LmNwcApAQCAtMzUsMjAgKzM1LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJUaGVtZUdhZGdldD4gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShjb25zdCBSZW5kZXJU
aGVtZUdhCiB7CiAgICAgc3dpdGNoIChpbmZvLnR5cGUpIHsKICAgICBjYXNlIFJlbmRlclRoZW1l
R2FkZ2V0OjpUeXBlOjpHZW5lcmljOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBz
aWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlRl
eHRGaWVsZDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUZXh0
RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVu
dCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBl
OjpSYWRpbzoKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpDaGVjazoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8s
IHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9u
KTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpBcnJvdzoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5mbywgcGFyZW50
LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZUFycm93R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAg
Y2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdz
LCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbkdh
ZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVy
VGhlbWVHYWRnZXQ6OlR5cGU6OlNjcm9sbGJhcjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3Ms
IHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxi
YXJHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJl
bmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBw
b3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uR2Fk
Z2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgfQogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lV2lkZ2V0LmNwcAppbmRleCAwNWQxMmRkOWVhZmJlZjAyYTQ1OWNhNTI3NjQxN2E1
YjliMGU4OTc2Li5jYTZlZDkxOGE1MDMzZTI5NzZkYjg0ZDg5YzIwNDg4NzAwZjAyYmNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAK
QEAgLTQyLDQ5ICs0Miw0OSBAQCBSZW5kZXJUaGVtZVdpZGdldCYgUmVuZGVyVGhlbWVXaWRnZXQ6
OmdldE9yQ3JlYXRlKFR5cGUgd2lkZ2V0VHlwZSkKICAgICBhdXRvIGFkZFJlc3VsdCA9IHdpZGdl
dE1hcCgpLmVuc3VyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2lkZ2V0VHlwZSksIFt3aWRnZXRU
eXBlXSgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZVdpZGdldD4gewogICAgICAgICBz
d2l0Y2ggKHdpZGdldFR5cGUpIHsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlw
ZTo6VmVydGljYWxTY3JvbGxiYXJSaWdodDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVt
ZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJMZWZ0OgotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9W
RVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwsIFJlbmRlclRoZW1lU2Ny
b2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVy
dGljYWxQb3NpdGlvbjo6TGVmdCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5
cGU6Okhvcml6b250YWxTY3JvbGxiYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwg
UmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwogICAgICAgICBjYXNlIFJlbmRlclRo
ZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvclJpZ2h0OgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklF
TlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RL
X09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNh
dG9yKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3Jv
bGxJbmRpY2F0b3JMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVT
Y3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2Fs
UG9zaXRpb246OkxlZnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhl
bWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxi
YXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRp
b246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9u
dGFsU2Nyb2xsSW5kaWNhdG9yOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJU
aGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwg
UmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CiAgICAgICAgIGNhc2UgUmVu
ZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkNoZWNrQnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xl
QnV0dG9uOjpUeXBlOjpDaGVjayk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OkNoZWNr
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6UmFkaW9CdXR0b246Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRv
bj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlvKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2ds
ZUJ1dHRvbjo6VHlwZTo6UmFkaW8pOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpU
eXBlOjpCdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Ok5vKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6
RGVmYXVsdDo6Tm8pOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0
b25EZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpE
ZWZhdWx0OjpZZXMpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpDb21i
b0JveDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQ29t
Ym9Cb3g+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUNvbWJv
Qm94PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpFbnRyeToKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOwogICAgICAg
ICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTZWxlY3RlZEVudHJ5OgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVyVGhlbWVF
bnRyeTo6U2VsZWN0ZWQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZUVudHJ5PihSZW5kZXJUaGVtZUVudHJ5OjpTZWxlY3RlZDo6WWVzKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VhcmNoRW50cnk6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNlYXJjaEVudHJ5PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U3BpbkJ1dHRvbjoKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTbGlkZXI6Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVO
VEFUSU9OX1ZFUlRJQ0FMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRo
ZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2xpZGVyOgotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9IT1JJ
Wk9OVEFMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2xpZGVy
PihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVX
aWRnZXQ6OlR5cGU6OlByb2dyZXNzQmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9k
ZTo6RGV0ZXJtaW5hdGUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhl
bWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUp
OwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJbmRldGVybWluYXRlUHJv
Z3Jlc3NCYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVt
ZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRl
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+
KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkluZGV0ZXJtaW5hdGUpOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpMaXN0VmlldzoKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lTGlzdFZpZXc+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOwogICAgICAgICBjYXNlIFJl
bmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJY29uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVJY29uPigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpU
eXBlOjpXaW5kb3c6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZVdpbmRvdz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1l
V2luZG93PigpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzOSw3ICsxMzksNyBAQCBSZW5kZXJUaGVtZVNjcm9s
bGJhcjo6UmVuZGVyVGhlbWVTY3JvbGxiYXIoR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24sIE1v
ZGUgbW9kZQogICAgIGluZm8udHlwZSA9IFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmlj
OwogICAgIGluZm8ubmFtZSA9ICJjb250ZW50cyI7CiAgICAgaW5mby5jbGFzc0xpc3QuY2xlYXIo
KTsKLSAgICBtX2NvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdl
dD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIu
Z2V0KCkpOworICAgIG1fY29udGVudHMgPSBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0
PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIGNoaWxkcmVuLCBtX3Njcm9sbGJhci5n
ZXQoKSk7CiAgICAgaW5mby5uYW1lID0gInNsaWRlciI7CiAgICAgbV9zbGlkZXIgPSBSZW5kZXJU
aGVtZUdhZGdldDo6Y3JlYXRlKGluZm8sIG1fY29udGVudHMtPmNoaWxkKG1fdHJvdWdoUG9zaXRp
b24pKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBSZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJU
aGVtZUNvbWJvQm94KCkKICAgICB9OwogICAgIGluZm8ubmFtZSA9ICJib3giOwogICAgIGluZm8u
Y2xhc3NMaXN0ID0geyAiaG9yaXpvbnRhbCIsICJsaW5rZWQiIH07Ci0gICAgbV9ib3ggPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05f
SE9SSVpPTlRBTCwgY2hpbGRyZW4sIG1fY29tYm9Cb3guZ2V0KCkpOworICAgIG1fYm94ID0gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUkla
T05UQUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKICAgICBSZW5kZXJUaGVtZUdhZGdl
dCogYnV0dG9uID0gbV9ib3gtPmNoaWxkKDApOwogICAgIGluZm8uY2xhc3NMaXN0LnJlbW92ZUxh
c3QoKTsKICAgICBtX2J1dHRvbkJveCA9IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoaW5mbywg
YnV0dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggODQwN2MxMTAxZGRkNmRi
NmUzNzhkZWZjYjNhYjgyNmJmNzI2NDU0ZC4uNzg2OTdlYjAwMDBmN2Y3YjgyYTdkMGVjZjVmOTg1
YTFlOTI4OWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTk4LDcgKzk4LDcg
QEAgYm9vbCBCTVBJbWFnZURlY29kZXI6OmRlY29kZUhlbHBlcihib29sIG9ubHlTaXplKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fcmVhZGVyKSB7Ci0gICAgICAgIG1fcmVh
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zm
c2V0LCBpbWdEYXRhT2Zmc2V0LCBmYWxzZSk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1
ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBm
YWxzZSk7CiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDdiYTdlZDkxMDFjZTI1YTliZjZlMjMx
MDg3YmYwYmMxMTRjYzIyZDYuLjRmMzQ4N2UzMzQ3NjQwNTQ3NGNmODZiNWM2MDZkMmMxOTg4Yzdj
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9p
ZCBHSUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVlcnkg
cXVlcnksIGJvb2wgYWxsRGF0YVIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRl
cikgewotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VSZWFkZXI+
KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8R0lGSW1hZ2VSZWFkZXI+KHRo
aXMpOwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggMWNjYTVlNTllZWIzNTFiMDU4YTIxZGIxMzRm
NjQzNzkxZTUwNzdjYS4uZDc3MTg2ZWE5NzM5YmRmYjJjNTYyMjhlZTRjZjVlODgyOGQ4ODU5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgYm9vbCBHSUZG
cmFtZUNvbnRleHQ6OmRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBXZWJDb3JlOjoKICAgICAgICAgaWYgKCFpc0RhdGFTaXplRGVmaW5lZCgpIHx8ICFpc0hl
YWRlckRlZmluZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIG1fbHp3
Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlzKTsK
KyAgICAgICAgbV9sendDb250ZXh0ID0gbWFrZVVuaXF1ZTxHSUZMWldDb250ZXh0PihjbGllbnQs
IHRoaXMpOwogICAgICAgICBpZiAoIW1fbHp3Q29udGV4dC0+cHJlcGFyZVRvRGVjb2RlKCkpIHsK
ICAgICAgICAgICAgIG1fbHp3Q29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBHSUZJbWFnZVJlYWRlcjo6c2V0UmVtYWlu
aW5nQnl0ZXMoc2l6ZV90IHJlbWFpbmluZ0J5dGVzKQogdm9pZCBHSUZJbWFnZVJlYWRlcjo6YWRk
RnJhbWVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1fZnJhbWVzLmlzRW1wdHkoKSB8fCBtX2Zy
YW1lcy5sYXN0KCktPmlzQ29tcGxldGUoKSkKLSAgICAgICAgbV9mcmFtZXMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXplKCkpKTsKKyAgICAgICAg
bV9mcmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXpl
KCkpKTsKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhpcyBtZXRob2QgdG8gY2xvc2UgdG8gZG9MWlco
KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTg3MGJiMTYwYjg0OTQ4ZjBiNTlk
ZTQ1MTE2MzZiYTRjMGYzOGYyZS4uZmY2YTFjODdhZTZmMDViNDljY2MxMjhhYmUwNWMzMDNkNmVl
YmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBi
b29sIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgICAg
ICAgICAvLyBXZSBuZWVkIHRvIGhhdmUgYWxyZWFkeSBzaXplZCBtX2ZyYW1lQnVmZmVyQ2FjaGUg
YmVmb3JlIHRoaXMsIGFuZAogICAgICAgICAgICAgLy8gd2UgbXVzdCBub3QgcmVzaXplIGl0IGFn
YWluIGxhdGVyIChzZWUgY2F1dGlvbiBpbiBmcmFtZUNvdW50KCkpLgogICAgICAgICAgICAgQVNT
RVJUKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPT0gbV9kaXJFbnRyaWVzLnNpemUoKSk7Ci0g
ICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFn
ZVJlYWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CisgICAgICAg
ICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhp
cywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CiAgICAgICAgICAgICBtX2JtcFJl
YWRlcnNbaW5kZXhdLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgICAgICAgICBtX2JtcFJl
YWRlcnNbaW5kZXhdLT5zZXRCdWZmZXIoJm1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0pOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlYmZlNDUzMGY3MTg1
MzA3MmUzYTUzZDJmY2M2NjBlN2EwOTZjZjQzLi4wYzA1NDliNWEzZWUwNGFmMjljYTdkNjA2MDM1
ZmNmZTYxNzQ4NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTY1Myw3
ICs2NTMsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRl
cikKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpQRUdJbWFnZVJlYWRlcj4o
dGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRo
aXMpOwogCiAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVjb2RlIHRoZSBpbWFnZSBidXQgd2UndmUg
cmVjZWl2ZWQgYWxsIHRoZSBkYXRhLCBkZWNvZGluZwogICAgIC8vIGhhcyBmYWlsZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGMxOGEzOWI1OTEzM2EzMThmMTUxMDU4MWU4Zjkx
ZWJkZDc2ODc5YWIuLjYyY2I5YjIyYTAxZjI2ZTlmMmNkNDFkZWEzODFiMzYzNjg5N2VlNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBQTkdJ
bWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCB1bnNpZ25lZCBoYWx0QXRGcmFtZSwg
Ym9vbCBhbGxEYXRhUmUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikKLSAg
ICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsK
KyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsKIAog
ICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVk
IGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggMjA5Zjg4ZjQ3YTNi
N2NkYzAxNDNkZTkyZTI0YmFkZGY5NjY0YjVmNC4uY2FlM2RjZjE2NDc5NmNlZWNiNjhiMjQ0OGYx
MTMzYzEwZWM5YzIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUNhY2hlLm1tCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIExlZ2Fj
eVRpbGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyogd2luZG93KQogICAgIDogbV93
aW5kb3cod2luZG93KQogICAgICwgbV90b21ic3RvbmUoYWRvcHROUyhbW0xlZ2FjeVRpbGVDYWNo
ZVRvbWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV96b29tZWRPdXRUaWxlR3JpZChzdGQ6
Om1ha2VfdW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSkpCisgICAgLCBt
X3pvb21lZE91dFRpbGVHcmlkKG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3Rp
bGVTaXplKSkKICAgICAsIG1fdGlsZUNyZWF0aW9uVGltZXIoKnRoaXMsICZMZWdhY3lUaWxlQ2Fj
aGU6OnRpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgW2hvc3RMYXllcigpIGluc2VydFN1
YmxheWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKSBhdEluZGV4OjBdOwpA
QCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5n
ZSgpCiAKICAgICBpZiAobV9jdXJyZW50U2NhbGUgIT0gbV96b29tZWRPdXRUaWxlR3JpZC0+c2Nh
bGUoKSkgewogICAgICAgICBpZiAoIW1fem9vbWVkSW5UaWxlR3JpZCkgewotICAgICAgICAgICAg
bV96b29tZWRJblRpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRo
aXMsIG1fdGlsZVNpemUpOworICAgICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkID0gbWFrZVVu
aXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOwogICAgICAgICAgICAgW2hv
c3RMYXllcigpIGFkZFN1YmxheWVyOm1fem9vbWVkSW5UaWxlR3JpZC0+dGlsZUhvc3RMYXllcigp
XTsKICAgICAgICAgICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKaW5kZXggNjY0N2VjM2Ez
NmQxNTg3ODY5NGYwN2QwMmIxZmIxZThjMzUwZDUzZi4uMzBlZjlmYzMxYzg3ZjExYmZhZmU0Y2E2
YTllYTgxMjRkNWZjM2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0xlZ2FjeVRpbGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVHcmlkLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TGVnYWN5VGlsZUdyaWRUaWxlOwogCiBjbGFzcyBMZWdhY3lUaWxlR3JpZCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBUaWxlSW5k
ZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5k
ZXggMTkxYWM3Njk2MjE1MTIxNTNkYmRjYjA3OGRkNjZmNDY1NTNiYzIxZC4uMDI3MWI5M2U3MDVj
ZTJjNDJkNjMyZmUyZGIyOWFhNDZlODM2ZDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY2LDEyICs2NiwxMiBAQCB2b2lkIFBhc3RlYm9h
cmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigiZGF0YSBpbnRlcmFjdGlv
biBwYXN0ZWJvYXJkIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oImRhdGEg
aW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdE
YXRhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRh
LnBhc3RlYm9hcmROYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRy
YWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOwogfQogCiAjZW5kaWYKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGNoYW5nZUNvdW50Rm9y
UGFzdGVib2FyZCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VD
b3VudEZvclBhc3RlYm9hcmQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1F1aWNrTG9vay5tbQppbmRleCBhOWQ5ZTQ3MTA1MDE3ZDY0ZDgyZTM3YzhhYTMxY2U2NDY5MDI1
Njg1Li5jMmI1YTBiMDhiZGY3NWU4YzAxY2Q5YmQyZDUxYzMxNDkzMDVmMzg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KQEAgLTg0LDcgKzg0LDcgQEAgUmV0YWlu
UHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VS
TCAqdXJsLCBOU1N0cmluZwogICAgIGlmIChbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVz
U2V0KCkgY29udGFpbnNPYmplY3Q6dXBkYXRlZE1JTUVUeXBlLmdldCgpXSkgewogICAgICAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHV0aSA9IGFkb3B0TlMoUEFMOjpzb2Z0TGlua19RdWlja0xvb2tf
UUxUeXBlQ29weVVUSUZvclVSTEFuZE1pbWVUeXBlKHVybCwgdXBkYXRlZE1JTUVUeXBlLmdldCgp
KSk7CiAKLSAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdD
b252ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQoKSk7CisgICAgICAgIGF1dG8gY29udmVydGVyID0gbWFr
ZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0KCkpOwogICAgICAgICBSZXNv
dXJjZVJlcXVlc3QgcHJldmlld1JlcXVlc3QgPSBjb252ZXJ0ZXItPnByZXZpZXdSZXF1ZXN0KCk7
CiAKICAgICAgICAgLy8gV2UgdXNlIFtyZXF1ZXN0IFVSTF0gaGVyZSBpbnN0ZWFkIG9mIHVybCBz
aW5jZSBpdCB3aWxsIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQppbmRleCAxMDdjNzdjNzUzZWFiN2Q5MmRhMjk0
ODdjYTZmNjVmODA3MDQ4MjEzLi42ZDljY2UxNWI4NzRmMTVmMTU0ODc1ZWEwZWU2YjlmMTAzNWE4
MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFu
ZExpc3RlbmVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVD
b21tYW5kTGlzdGVuZXJJT1MubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3Rl
Q29tbWEKICAgICBpZiAoIU1lZGlhUGxheWVyTGlicmFyeSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5l
cklPUz4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1M+KGNsaWVudCk7CiB9CiAKIFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29t
bWFuZExpc3RlbmVySU9TKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCmluZGV4
IDAxZjBhOWJiMjBhMjQ4YjY5OTg4NTY0NzBhZWUzNzRhOThjZmE1MWMuLmVkNjMyZWE1ZTNmNTU5
N2U5ZDc2ZmQyZTU1Njk1NjFmZTZjNGMyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1h
dG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFibGVBcmVhKTsK
IH0KIAogU2Nyb2xsQW5pbWF0b3JJT1M6OlNjcm9sbEFuaW1hdG9ySU9TKFNjcm9sbGFibGVBcmVh
JiBzY3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
YndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCAwNTQzZWQ1ZTlmYzlmY2ZlM2JiYWE0MDM1NWU0
MDcyZjlmM2MzZjQwLi5mOGE2MWVjNzBjMGMxYTRjZDM3N2YwZTdjZDY3NmVmYjlkZTViYzhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQ
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJX
UEUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOwogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNTE1
MjBkY2JiZWE1OTIxODVjMzI2NzAyY2JhNjlmZTg4YjRkNGRkZS4uOGViMTVjZjg4NTJkOTg1NzQ0
N2UwNTljMzhhY2FlYmEyMzQxNWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEwMCw3ICsxMDAsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
cm9taQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2FyZCk7CiAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKQEAgLTEwOCwxMyArMTA4
LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoKQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bi
b2FyZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oTlNEcmFnUGJvYXJkKTsK
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJv
YXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUo
KSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCmluZGV4
IDA1Y2MwODk1N2UxZDUwMTI0ZGQ2MzJlMmE0Yzg5MjEyOTg5Njk2MTEuLjFhYTJjZDgwMTMyZjJj
MjFlZTM4YjlmZmJkYjgzMzczYmJmNGMxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQpAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5k
TGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0
ZW5lckNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggYTgzMTc1MTIyZWMyZTRi
NmI2ZGU1MWJlNmRmNTI2NGI0MWExZjhjNC4uNjg2MGUzM2MzYTNiMjE1NjMwNWZiMzFhZjQyN2Rj
NDkwMjM1ODdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxB
bmltYXRvck1hYy5tbQpAQCAtNjk3LDcgKzY5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdG9yTWFjPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFu
aW1hdG9yTWFjOjpTY3JvbGxBbmltYXRvck1hYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFy
ZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggMWI5ZGM1
MzQ1Yjg4MWViMzZkOTZmY2UzNTgyZGYwZTU0YTEzODViYS4uZTI0NDViYzgyM2Y4NmUwNTViMGU1
Nzg3N2Q2Y2Y1MzFhNGZmY2M5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgIGlm
ICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4od3JpdGVyLnJlbGVhc2VOb25O
dWxsKCksIFdURk1vdmUoYXVkaW9UcmFja0lkKSwgV1RGTW92ZSh2aWRlb1RyYWNrSWQpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5y
ZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFj
a0lkKSk7CiB9CiAKIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6TWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsKFJlZjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4mJiB3cml0ZXIsIFN0
cmluZyYmIGF1ZGlvVHJhY2tJZCwgU3RyaW5nJiYgdmlkZW9UcmFja0lkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKaW5kZXggZDRhZGIxNTJiZDRiYWVmN2VmN2JmMDU1ZjZk
OWE4M2Q4NjdlNjdlYi4uYTIyZjU3MWJjNTE2MTFmNjE3NDQ5MTA0Y2Y1ZmM4NjBlNTJlOWFlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCkBAIC0zNCw2ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIAogY2xhc3Mg
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsIGZpbmFsIDogcHVibGljIE1lZGlhUmVjb3JkZXJQ
cml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gY3JlYXRlKGNv
bnN0IE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGRiOTRmZGFmODNhOGFiZDY3YWZjZmQ2
ZWEzNjlmYWE4OWM0NmMzZTIuLjU5YWIzODQwZmQ3MzZjYTE0NTAxNmM3ZjY2MGVjYTNiMDkwMzI0
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UuY3BwCkBAIC05MSwxNCArOTEsMTQgQEAgQXVkaW9DYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBk
ZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJ
ZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAg
ICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KGRl
dmljZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJl
cj4oZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0
cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoU3Ry
aW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDog
UmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgV1RG
TW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwg
bV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkpCisg
ICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkKIHsK
ICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJBdWRpb0RhdGEuaAppbmRleCA5NTNmM2E4YTBlNGY2YTA2MmI5Yjk0YThmNDE1MWE0OWYxYTQz
MDFkLi4zNDE1NDkyNTFlZDU3MWI3NWVmNWQwYzJkZWRmMWU3N2I3NTIzNzg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8
Z3N0L2F1ZGlvL2F1ZGlvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdTdHJlYW1l
ckF1ZGlvRGF0YSA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CitjbGFzcyBHU3RyZWFtZXJB
dWRpb0RhdGEgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgewogcHVibGljOgogICAg
IEdTdHJlYW1lckF1ZGlvRGF0YShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIEdzdEF1ZGlv
SW5mbyBpbmZvKQogICAgICAgICA6IG1fc2FtcGxlKFdURk1vdmUoc2FtcGxlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJDYXB0dXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKaW5kZXggYmJlNWFlNzM5NTRhZTUzY2MyMTY1NzkzZWMw
OTZhODg3OTJhZDRmMi4uZjkyYTZhOWIxMjYxMTAwZjE5MzQ1ZjRlY2EyMTk0YmZlMWI4YTNhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckNhcHR1cmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyQ2FwdHVyZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lckNhcHR1cmVyKEdTdHJl
YW1lckNhcHR1cmVEZXZpY2UsIEdSZWZQdHI8R3N0Q2Fwcz4pOwogICAgIEdTdHJlYW1lckNhcHR1
cmVyKGNvbnN0IGNoYXIqIHNvdXJjZUZhY3RvcnksIEdSZWZQdHI8R3N0Q2Fwcz4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lck1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggYjNh
ZjM1YWY4MjQ4OGRkNGNmODIxY2QzZWVhZTYzZDljZjFhY2Q4NC4uZjNlNTE4NmJmNjY4NzgxZWZi
MTM5NWZlODUxYjM0MzIzYzQyYTNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0xMDcsNiArMTA3LDcgQEAgR3N0U3RyZWFtKiB3
ZWJraXRNZWRpYVN0cmVhbU5ldyhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdHJhY2spCiAKIGNs
YXNzIFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcgogICAgIDogcHVibGljIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyKCkg
eyB9OwogICAgIFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcihXZWJLaXRNZWRpYVN0cmVh
bVNyYyogc3JjKQpAQCAtMTQzLDYgKzE0NCw3IEBAIGNsYXNzIFdlYktpdE1lZGlhU3RyZWFtVHJh
Y2tPYnNlcnZlcgogCiBjbGFzcyBXZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyCiAgICAgOiBwdWJs
aWMgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcigp
IHsgfTsKICAgICBXZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyKFdlYktpdE1lZGlhU3RyZWFtU3Jj
KiBzcmMpCkBAIC0zNTEsOCArMzUzLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVh
bV9zcmNfY2xhc3NfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyY0NsYXNzKiBrbGFzcykKIAogc3Rh
dGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNy
Yyogc2VsZikKIHsKLSAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4oc2VsZik7Ci0gICAgc2Vs
Zi0+bWVkaWFTdHJlYW1PYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0TWVkaWFTdHJl
YW1PYnNlcnZlcj4oc2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0g
bWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNl
bGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtT2Jz
ZXJ2ZXI+KHNlbGYpOwogICAgIHNlbGYtPmZsb3dDb21iaW5lciA9IGdzdF9mbG93X2NvbWJpbmVy
X25ldygpOwogICAgIHNlbGYtPmZpcnN0QXVkaW9CdWZmZXJQdHMgPSBHU1RfQ0xPQ0tfVElNRV9O
T05FOwogICAgIHNlbGYtPmZpcnN0RnJhbWVQdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRl
eCBlNWQ5YjBlMDI3NmVkZGE1ZGJkNTIwYmMxMGYzNTE4MGQwMTVkNjliLi45N2JlMWYxMmZiYjIy
ZGMzNThjOTljODM5Zjk4MWYxNjU2YThlMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTI3LDE0ICsxMjcsMTQgQEAgRGlz
cGxheUNhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3BsYXlG
YWN0b3J5KCkKIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhh
c2hTYWx0LCBjb25zdCBnY2hhciAqc291cmNlX2ZhY3RvcnkpCiAgICAgOiBSZWFsdGltZVZpZGVv
Q2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSho
YXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlk
ZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVl
PEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKIHsKICAgICBpbml0aWFs
aXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZpY2Us
IFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoU3Ry
aW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0s
IFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdT
dHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlx
dWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXplR1N0
cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9E
ZWNvZGVyRmFjdG9yeS5oCmluZGV4IGU0ZDUwOGUzMTc5YWM0N2JmMWQxMGY0ZjI4N2M1NDdiYzI1
NjAwMmEuLmVmZGEyOWJlMzk3MThiYmE3OTEzNDE4Y2M3M2ViOWFkMzY4NGY4YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFt
ZXJWaWRlb0RlY29kZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaApAQCAtMzAs
NiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJWaWRlb0Rl
Y29kZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9EZWNv
ZGVyRmFjdG9yeSgpOwogICAgIHN0YXRpYyBib29sIG5ld1NvdXJjZShTdHJpbmcgdHJhY2tJZCwg
R3N0RWxlbWVudCAqc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJW
aWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA2OTk1YzYwMmNiMTc0NDdmYTc0MWQzOWQ0NDk0
YzM1NjFkYzFiYjgyLi44MzU4MWU4NWEzOTYyZDk3ZTAxNzQzYjEwZTU2Y2VhYTE1MWNlZmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnku
Y3BwCkBAIC02MCw2ICs2MCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfd2VicnRjZW5j
X2RlYnVnKTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyVmlkZW9FbmNv
ZGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRlb0VuY29kZXIoY29uc3Qgd2VicnRj
OjpTZHBWaWRlb0Zvcm1hdCYpCiAgICAgICAgIDogbV9maXJzdEZyYW1lUHRzKEdTVF9DTE9DS19U
SU1FX05PTkUpCkBAIC01MTIsMTQgKzUxMywxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0VuY29kZXI+IEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRQog
ICAgICAgICBnX29iamVjdF9nZXQod2VicnRjZW5jb2Rlci5nZXQoKSwgImVuY29kZXIiLCAmZW5j
b2Rlci5vdXRQdHIoKSwgTlVMTCk7CiAKICAgICAgICAgaWYgKGVuY29kZXIpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihmb3JtYXQpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4oZm9ybWF0
KTsKIAogICAgICAgICBHU1RfSU5GTygiVXNpbmcgVlA4IEVuY29kZXIgZnJvbSBMaWJXZWJSVEMu
Iik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6TGlidnB4VnA4RW5j
b2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PHdlYnJ0Yzo6TGlidnB4VnA4RW5jb2Rlcj4oKTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0Lm5h
bWUgPT0gY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEdTdHJlYW1lckgyNjRFbmNvZGVyPihmb3JtYXQpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0
b3J5LmgKaW5kZXggNzk2YTIwZjk0NWUzYTk1MTk4ZWNlMTBmZTcwZDliNTJmNzIzM2QxMS4uMTQ4
M2EyYjIwYjM1MTVjNzFiN2EwYzdhNTIyNjI2ZTlmZjUzOTIwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rv
cnkgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRlb0VuY29kZXJG
YWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNr
ZW5kLmgKaW5kZXggZGM2ZjhmM2ZiMDU3ZmI1NDBkOTBjMDAyMjY4YTk5Nzc0NDEwMjc3Zi4uNGEw
NjFmY2M5NTNiMTNkNTgzYmFlNTU0NTE1NWJjZTA4ZGY4ZjlkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5k
ZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKQEAgLTQwLDYgKzQwLDcgQEAgQUxM
T1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExp
YldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ0RUTUZTZW5kZXJCYWNr
ZW5kLCBwcml2YXRlIHdlYnJ0Yzo6RHRtZlNlbmRlck9ic2VydmVySW50ZXJmYWNlLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMaWJXZWJSVENEVE1GU2Vu
ZGVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEdG1mU2VuZGVySW50ZXJmYWNl
PiYmKTsKICAgICB+TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDIwN2FiNzhhOWEyYmJlNDBhMGVkNGRhNjk1Njlh
ZWRiMTIyOTllMjAuLjc0NTMzYzVmYTRkZjBkNGU1YTY0ZDc1Y2U2MjdiMzI0MmM0NmI4MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtNzksOSArNzksMTAgQEAg
c3RhdGljIGlubGluZSBydGM6OlNvY2tldEFkZHJlc3MgcHJlcGFyZVNvY2tldEFkZHJlc3MoY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJgogfQogCiBjbGFzcyBCYXNpY1BhY2tldFNvY2tldEZhY3Rv
cnkgOiBwdWJsaWMgcnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeShydGM6OlRocmVhZCYgbmV0d29ya1RocmVhZCkKLSAgICAgICAgOiBtX3NvY2tldEZh
Y3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oJm5ldHdv
cmtUaHJlYWQpKQorICAgICAgICA6IG1fc29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oJm5ldHdvcmtU
aHJlYWQpKQogICAgIHsKICAgICB9CiAKQEAgLTE3OSw3ICsxODAsNyBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyhQZWVyQ29ubmVjdGlvbkZh
Y3RvcnlBbmRUaAogICAgIHJlc3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVh
ZC0+U3RhcnQoKTsKICAgICBBU1NFUlQocmVzdWx0KTsKIAotICAgIGZhY3RvcnlBbmRUaHJlYWRz
LmF1ZGlvRGV2aWNlTW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENBdWRpb01vZHVs
ZT4oKTsKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGVlckNvbm5l
Y3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKQpAQCAtMjg4
LDEwICsyODksMTAgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKICAgICBhdXRvJiBmYWN0b3J5
QW5kVGhyZWFkcyA9IGdldFN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKG1fdXNlTmV0d29ya1RocmVh
ZFdpdGhTb2NrZXRTZXJ2ZXIpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3Jr
TWFuYWdlcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgZmFjdG9y
eUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CiAKICAgICBpZiAoIWZhY3RvcnlBbmRU
aHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLnBh
Y2tldFNvY2tldEZhY3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljUGFja2V0U29ja2V0RmFj
dG9yeT4oKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQpOworICAgICAgICBmYWN0b3J5
QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gbWFrZVVuaXF1ZTxCYXNpY1BhY2tldFNv
Y2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKICAgICBmYWN0
b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LT5zZXREaXNhYmxlTm9uTG9jYWxob3N0
Q29ubmVjdGlvbnMobV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpOwogCiAgICAgcmV0
dXJuIGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCAqZmFjdG9yeUFuZFRocmVhZHMubmV0
d29ya01hbmFnZXIsICpmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LCBXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pLCBudWxscHRyKTsKQEAgLTMxNCw3ICszMTUsNyBAQCBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJv
dmlkZXI6OmNyZWF0ZVBlZQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkJhc2ljUG9y
dEFsbG9jYXRvcj4gcG9ydEFsbG9jYXRvcjsKICAgICBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxp
bmdUaHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0oKSB7Ci0gICAgICAgIGF1
dG8gYmFzaWNQb3J0QWxsb2NhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpCYXNpY1Bv
cnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOworICAg
ICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4oJm5ldHdvcmtNYW5hZ2VyLCAmcGFj
a2V0U29ja2V0RmFjdG9yeSk7CiAgICAgICAgIGlmICghbV9lbmFibGVFbnVtZXJhdGluZ0FsbE5l
dHdvcmtJbnRlcmZhY2VzKQogICAgICAgICAgICAgYmFzaWNQb3J0QWxsb2NhdG9yLT5zZXRfZmxh
Z3MoYmFzaWNQb3J0QWxsb2NhdG9yLT5mbGFncygpIHwgY3JpY2tldDo6UE9SVEFMTE9DQVRPUl9E
SVNBQkxFX0FEQVBURVJfRU5VTUVSQVRJT04pOwogICAgICAgICBwb3J0QWxsb2NhdG9yID0gV1RG
TW92ZShiYXNpY1BvcnRBbGxvY2F0b3IpOwpAQCAtMzM1LDcgKzMzNiw3IEBAIHJ0Yzo6UlRDQ2Vy
dGlmaWNhdGVHZW5lcmF0b3ImIExpYldlYlJUQ1Byb3ZpZGVyOjpjZXJ0aWZpY2F0ZUdlbmVyYXRv
cigpCiB7CiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5k
VGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKICAgICBpZiAoIWZh
Y3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yKQotICAgICAgICBmYWN0b3J5QW5k
VGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpSVEND
ZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdl
dCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKKyAgICAgICAgZmFj
dG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yPihmYWN0b3J5QW5kVGhy
ZWFkcy5zaWduYWxpbmdUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJl
YWQuZ2V0KCkpOwogCiAgICAgcmV0dXJuICpmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdl
bmVyYXRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggYmRmMDkw
MDQwYzkwNjU3ZjQ5ZjBjZTRhZTI4MDc3MzhhMWU4YmU3OS4uN2FhOGRlMmViM2E0YzU1NWUwOWE2
MGQ3ZDdjM2FkODMxOWIxMThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgK
QEAgLTY0LDYgKzY0LDcgQEAgc3RydWN0IFJUQ1J0cENhcGFiaWxpdGllczsKIGVudW0gY2xhc3Mg
TUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBsZW1lbnRlZCwgQmFkUGFyYW1ldGVyLCBETlNTRCwg
SW50ZXJuYWwsIFRpbWVvdXQgfTsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJv
dmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGNyZWF0ZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAppbmRleCA3NzJhMzk1ZjBjYmI0M2U3MzA3NTBj
Y2I5NjM2MTYxY2FhMzQxYzYzLi5kM2MzODM5NWMwNzdmMzQ2MDRiNWJiMGY0YjQzYWUxMTAwY2Rm
MjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmgKQEAgLTM3
LDcgKzM3LDYgQEAgY2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeTsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXJDb2NvYSA6IHB1Ymxp
YyBMaWJXZWJSVENQcm92aWRlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgTGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpID0gZGVmYXVsdDsKICAgICB+TGliV2Vi
UlRDUHJvdmlkZXJDb2NvYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlckdTdHJlYW1lci5jcHAKaW5kZXggMTVlMmE4Nzg5YzA3ZmIwZDBhZWM2ZjZjMjBmN2JiMTdm
YThkYjdkMi4uNWI4MjczYjA4NTE5NmZmZDMwZTRkN2E3ZjY1NTEwYmVjMDgwMzE2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCkBAIC00
NCwxMiArNDQsMTIgQEAgYm9vbCBMaWJXZWJSVENQcm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkK
IAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gTGliV2ViUlRD
UHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5PigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRGVjb2RlckZhY3Rvcnk+KCk7CiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3Zp
ZGVyR1N0cmVhbWVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5PigpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtQ29jb2EuY3BwCmluZGV4IDgyY2JjYjFjNjZkMzJlYTE4Y2RlYjE2NzkzOGQ2OGQzYjEy
ZTQxOWEuLmY3ZDg1ZGM2MGE2MWE4MTQ2ZGJhMGQwM2U1NWQ3NTc2MmZlOTBmODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCkBAIC0x
ODgsOCArMTg4LDggQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHMKICAgICAgICAgaWYgKCFyZW1v
dGVJT1VuaXQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9pbnB1dERlc2NyaXB0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGlucHV0RGVz
Y3JpcHRpb24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAg
bV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+
KGlucHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVu
aXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKIAogICAg
ICAgICBtX2RhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShkZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCkgKiAyLCBzdHJlYW1UcmFjaygpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGU4ZTNkMzQ4NmRhNDNhYWMxZGQ1NGI3OGU2
YjRkZjRkYzk4MTY3OTAuLjYxMWFjMTZiOWVjYjg2ODk4YTM3MjY0NzFjNzYyMDcxMmZiOWIzODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KQEAgLTEzNCw3ICsx
MzQsNyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZWNvbmZpZ3VyZSgpCiAg
ICAgY29uc3QgYm9vbCBpc05vbkludGVybGVhdmVkID0gdHJ1ZTsKICAgICBGaWxsT3V0QVNCREZv
ckxQQ00obV9zdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUoKSwgY2hhbm5lbENvdW50LCBiaXRzUGVy
Qnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdCwgaXNGbG9h
dCwgaXNCaWdFbmRpYW4sIGlzTm9uSW50ZXJsZWF2ZWQpOwogCi0gICAgbV9hdWRpb0J1ZmZlckxp
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4obV9zdHJlYW1Gb3JtYXQs
IG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQpOwor
ICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1f
c3RyZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1G
cmFtZUNvdW50KTsKIAogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRp
b247CiAgICAgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKE5VTEwsICZtX3N0cmVhbUZv
cm1hdCwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdERlc2NyaXB0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCBmOWRj
NGE4NDdmNGEzNTVkOWNjZmY0Y2RlMDMwOGQwZDVjNWM0NDU2Li4zODhkNzFlMjRiMjVlYmY2ZDc3
ODgxNGZkZDBhOTY2M2IxNzA1NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC00Niw3ICs0Niw3IEBAIFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRvWVVW
KENWUGl4CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyKQotICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7
IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBA
KHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJD
b25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBD
RkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhl
bEZvcm1hdFR5cGVLZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKSB9KTsKIAogICAg
IHJldHVybiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5jb252ZXJ0KHBpeGVsQnVmZmVyKTsKIH0K
QEAgLTc1LDcgKzc1LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcigKICAgICAgICAgSW50U2l6
ZSBzaXplID0geyAoaW50KUNWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikgLCAoaW50
KUNWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpIH07CiAgICAgICAgIEFmZmluZVRy
YW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS5yb3RhdGUocm90YXRpb25Ub0Fu
Z2xlKHJvdGF0aW9uKSk7Ci0gICAgICAgIG1fcm90YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKHRyYW5zZm9ybSksIHNpemUsIENW
UGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpLCBJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7CisgICAgICAgIG1fcm90YXRpb25T
ZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKHRyYW5z
Zm9ybSksIHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIp
LCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5yb3RhdGUocGl4ZWxCdWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jay5oCmluZGV4IDhlMjlkN2I4MWExNzNkZmE1MzcwNWZhMWU2MmM5
ZTg4M2M0Zjk1MDIuLmQ0NzY5ZDY5ZTRhZjA0NzBkNjJjZTkwYjc1NDQwZTI4Mjc2OWU3Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2sgZmluYWwgOiBwdWJs
aWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2spOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2Nr
KE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAppbmRl
eCAzYzZkZTFjNGViZTRlYzc0NzM1NDBhZWNjYjg5NzYyYjE5NTU1Y2Q0Li4xMzg4YWQwNTEzMTA4
YjJlYjkyZWMyYmJlMjg5MzM2NTJlOTlhMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaApAQCAtMzMsNiAr
MzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIFRpbWVy
RXZlbnRCYXNlZE1vY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0
YUNoYW5uZWxJbml0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDTm90aWZpZXJzTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JU
Q05vdGlmaWVyc01vY2suY3BwCmluZGV4IDJmMWZiNTVlZTY3MWYyZjIyOGZjNTE1MWQwZGQ2OWNm
OGVjNjk1Y2IuLjJjN2M0MWJkNjk2ZmYxZjliYWIzODM4MWE0YjU4Mzg1NjhiMThhNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcApA
QCAtOTgsNyArOTgsNyBAQCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpSZW1vdGVEYXRhQ2hh
bm5lbE5vdGlmaWVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaQogCiB2b2lkIFJlbW90ZURh
dGFDaGFubmVsTm90aWZpZXI6OmZpcmUoKQogewotICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVE
YXRhQ2hhbm5lbChzdGQ6Om1ha2VfdW5pcXVlPFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s+KCJS
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNoYW5uZWxJbml0KCkpKTsKKyAgICBt
X2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwobWFrZVVuaXF1ZTxSVENEYXRhQ2hhbm5l
bEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVs
SW5pdCgpKSk7CiB9CiAKIERhdGFDaGFubmVsU3RhdGVOb3RpZmllcjo6RGF0YUNoYW5uZWxTdGF0
ZU5vdGlmaWVyKFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogY2xpZW50LCBSVENEYXRhQ2hh
bm5lbFN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmNwcAppbmRleCA1NTk5MzM4MmIzYTFkYzM2ZDgzNTZiNjFiMjVjNzAwMmUwNzM0N2ZlLi4zODdh
MjFkYWY0NTUyMzk2OGFlZTRmNzk0MTlkM2Q4Yjg4NjkwZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBNZWRpYVBsYXllciBFbmlnbmUgU3VwcG9ydAogdm9pZCBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdIChNZWRpYVBsYXllciogcGxheWVyKSB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5
ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICByZWdpc3RyYXIoW10gKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+
KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAgICAgICBzdXBwb3J0c1R5cGUsIDAs
IDAsIDAsIDApOwogfQogCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29u
c3QKICAgICBpZiAobV9tZWRpYVNvdXJjZVByaXZhdGUpCiAgICAgICAgIHJldHVybiBtX21lZGlh
U291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmRpZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggY2M2N2NlNjg4ZjNiY2EyMjI2
OTBiNDNmMTA1ODc4YmE5ZTNjMjhmOC4uOTA1MTQzMTYyMWE4YzEwOGE2ZWYwZjUxZWI2MGY3NzRh
ZmNjMGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMTU5LDkgKzE1OSw5IEBAIEJsb2JSZXNvdXJjZUhh
bmRsZTo6QmxvYlJlc291cmNlSGFuZGxlKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0CiAgICAgLCBtX2FzeW5jIHsgYXN5bmMgfQogewogICAgIGlmIChtX2FzeW5jKQot
ICAgICAgICBtX2FzeW5jU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+
KCp0aGlzKTsKKyAgICAgICAgbV9hc3luY1N0cmVhbSA9IG1ha2VVbmlxdWU8QXN5bmNGaWxlU3Ry
ZWFtPigqdGhpcyk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlx
dWU8RmlsZVN0cmVhbT4oKTsKKyAgICAgICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVlPEZpbGVTdHJl
YW0+KCk7CiB9CiAKIEJsb2JSZXNvdXJjZUhhbmRsZTo6fkJsb2JSZXNvdXJjZUhhbmRsZSgpID0g
ZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5jcHAKaW5kZXggODExMmI5NzNlZWY1NGVkN2E1YzdhNTE0Y2YxMDJhYzk5MWU3NjUz
My4uYjU0MWY2MmVlMDA1MjAzNjJjMTU1N2Y3Y2E0OTY0YTIzN2I4NzQ5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTE0
NSw3ICsxNDUsNyBAQCBjbGFzcyBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8RGVjb2RpbmdSZXN1bHREaXNwYQogCiBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPERlY29kZVRhc2s+IGNyZWF0ZURlY29kZVRhc2soY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFNjaGVkdWxlQ29udGV4dCYgc2NoZWR1bGVDb250ZXh0LCBEZWNvZGVDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERl
Y29kZVRhc2s+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZVRhc2s+KAogICAgICAgICB1
cmwuc3RyaW5nKCksCiAgICAgICAgIHNjaGVkdWxlQ29udGV4dCwKICAgICAgICAgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuaAppbmRleCBhOTg0M2Y1MGU1YTQzNDAzZDhmNTJmMGE5Njdm
OTAyNzg2NWU4ZDU2Li44ZGFlYzU0YTEzNDJkYWI1OWMzNWNjNDkyN2EwMGZlNjIyOTQ5NjhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oCkBAIC0zNyw2ICszNyw3IEBAIFdFQkNPUkVfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFy
KiBjb25zdCBlcnJvckRvbWFpbldlYktpdEludGVybmFsOyAvLyBVc2VkIGZvciBlCiBXRUJDT1JF
X0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZXJyb3JEb21haW5XZWJLaXRTZXJ2aWNl
V29ya2VyOyAvLyBVc2VkIGZvciBlcnJvcnMgdGhhdCBoYXBwZW4gd2hlbiBsb2FkaW5nIGEgcmVz
b3VyY2UgZnJvbSBhIHNlcnZpY2Ugd29ya2VyLgogCiBjbGFzcyBSZXNvdXJjZUVycm9yQmFzZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgUmVzb3VyY2VFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCAzMGMyN2Y1
NzZhMTc3ZTZiNmFiMTk0NzQwYTdkOTAyNWI2NTlmY2FkLi42YTMxZTNlNTI3ZjhlYzkyZDZmNjJi
OTZjZGQ4MTk0NDE0YjU1YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcihjb25zdCBBdG9tU3RyaW5n
JiBwcm90b2NvbAogfQogCiBSZXNvdXJjZUhhbmRsZTo6UmVzb3VyY2VIYW5kbGUoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqIGNsaWVudCwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikKLSAgICA6IGQoc3Rk
OjptYWtlX3VuaXF1ZTxSZXNvdXJjZUhhbmRsZUludGVybmFsPih0aGlzLCBjb250ZXh0LCByZXF1
ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZiAmJiBzaG91bGRD
b250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSksIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZm
KSkKKyAgICA6IGQobWFrZVVuaXF1ZTxSZXNvdXJjZUhhbmRsZUludGVybmFsPih0aGlzLCBjb250
ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZiAm
JiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSksIHNob3VsZENvbnRlbnRFbmNv
ZGluZ1NuaWZmKSkKIHsKICAgICBpZiAoIXJlcXVlc3QudXJsKCkuaXNWYWxpZCgpKSB7CiAgICAg
ICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVyZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcAppbmRleCBkYWQ5MDEwZjk1NzBlYmM1Njc2MzM1NDNmZDFmYzUwMmY4
NDY5Yjk5Li43MTNiNGRmYjMwYjJhZmRmYmVhZmY0ZWU1MzcwYTI1NDZmYWQzYTQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBDRlVSTFJl
cXVlc3RSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6d2lsbFNlbgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAg
ICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFr
ZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndh
aXQoKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgIH07
CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7Cisg
ICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+
PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdU
Rk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsKQEAgLTIyNiw3ICsyMjYsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2Fn
ZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwog
ICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAg
LTI1MSw3ICsyNTEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIH07CiAgICAgCiAg
ICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAg
ICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3Zl
KHdvcmspKTsKIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZhaWwoQ0ZFcnJvclJlZgog
ICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVl
LT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmsp
KSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2
b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzExLDcgKzMxMSw3IEBAIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAg
IG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+
PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVu
aXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQo
KTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZwogICAgIH07CiAK
ICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAg
ICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihX
VEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1v
dmUod29yaykpOwogfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKENG
CiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVl
dWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zODAsNyArMzgwLDcgQEAgQm9vbGVhbiBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5S
ZXNwb25kVG9Qcm8KICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAg
ICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtl
VW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2Fp
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGM5YjUzZTMxMmFkODU1NzZkMzY2ZWY0
ZGM1Mzc0MzkxZmU4YzY5MGMuLmJhNTVmMDA0OGI4ZTRkZGM1YjA3MzRkOTkzZGM5YjEzYjhjYjJi
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTUyMyw3ICs1MjMsNyBAQCAtICh2b2lk
KV9yZXN0YXJ0CiAKICAgICBfcmVzb3VyY2UgPSBzZWxmLnNlc3Npb24ubG9hZGVyLnJlcXVlc3RS
ZXNvdXJjZShzZWxmLm9yaWdpbmFsUmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
OjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOwogICAgIGlmIChfcmVzb3VyY2UpCi0gICAg
ICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50
KG1ha2VVbmlxdWU8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50PihzZWxmKSk7CiB9
CiAKIC0gKHZvaWQpX2NhbmNlbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYTQ1YTVmNGU0YTAyOGZlNmU3ZjJkZmI3
NWVjMmM4YWVjOTNlZDJiYi4uMTAxNjI0ZjI5MDBhOTRjYzdkMWE4OTk4OTY3NmQ2YjQ1YWI3ZmEz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgT3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+
IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QK
ICAgICAgICAgIkFORCAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xPQiA/KSkgIlwKICAgICAg
ICAgIk9SREVSIEJZIGxlbmd0aChwYXRoKSBERVNDLCBsYXN0dXBkYXRlZCI7CiAKLSAgICBhdXRv
IHBzdG10ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNx
bCk7CisgICAgYXV0byBwc3RtdCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBzcWwpOwogICAgIGlmICghcHN0bXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKQEAgLTU2Niw3ICs1NjYsNyBAQCBib29sIENvb2tpZUphckRCOjpkZWxldGVBbGxDb29raWVz
KCkKIAogdm9pZCBDb29raWVKYXJEQjo6Y3JlYXRlUHJlcGFyZVN0YXRlbWVudChjb25zdCBTdHJp
bmcmIHNxbCkKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRl
U3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVu
aXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaW50IHJldCA9IHN0
YXRlbWVudC0+cHJlcGFyZSgpOwogICAgIEFTU0VSVChyZXQgPT0gU1FMSVRFX09LKTsKICAgICBt
X3N0YXRlbWVudHMuYWRkKHNxbCwgV1RGTW92ZShzdGF0ZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKaW5kZXggMGMwM2U5
ZDY5MmM3ZjZkYzYxMzA4NmZmMjU1YzIwZTVjNmJiZTllOS4uMjY4N2FlNzRmYjlkOTk0Mjk3MmJl
ZGNhYzZhYjliMTE1OWE3ZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBjbGFzcyBD
b29raWVBY2NlcHRQb2xpY3kgewogfTsKIAogY2xhc3MgQ29va2llSmFyREIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvb2tpZUphckRC
KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCAxMTAyN2NlM2IzY2Y2Mzg4Zjk5NTRhYWY0OWM0
OTAzZmU5M2ZkZmY1Li44Y2UxMTQzODQ4ZmIyMzE4YmExOTkwZWFkMThlMTVmMzdkODQzNDdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlRW50cnkuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDdXJsQ2FjaGVFbnRyeSB7Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUq
IGpvYiwgY29uc3QgU3RyaW5nJiBjYWNoZURpcik7CiAgICAgfkN1cmxDYWNoZUVudHJ5KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAKaW5kZXggZmE1YzhkMmQyMWI2MjczODE1ZDAyM2E0ZjIwNDU1MDE2ZTk2
MzhhZi4uZTJiNGI1ZGZiZGE2MmEzYzBjYjZiZjkxODFiYmQ2OGZkN2E0YTA4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9h
ZEluZGV4KCkKICAgICAgICAgLS1lbmQ7IC8vIExhc3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxl
IChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2Uo
KTsKLSAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVF
bnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKKyAgICAgICAgYXV0byBjYWNoZUVudHJ5
ID0gbWFrZVVuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsK
IAogICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRy
eVNpemUoKSA8IG1fc3RvcmFnZVNpemVMaW1pdCkgewogICAgICAgICAgICAgbV9jdXJyZW50U3Rv
cmFnZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CkBAIC0yMTMsNyArMjEzLDcgQEAg
dm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUm
IGpvYiwgUmVzb3VyY2VSZXNwb25zZSYKIAogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1
cmwpOyAvLyBJbnZhbGlkYXRlIGV4aXN0aW5nIGVudHJ5IG9uIDIwMAogCi0gICAgICAgIGF1dG8g
Y2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwg
bV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENh
Y2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CiAgICAgICAgIGJvb2wgY2FjaGVhYmxl
ID0gY2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOwogICAgICAgICBp
ZiAoY2FjaGVhYmxlKSB7CiAgICAgICAgICAgICBjYWNoZUVudHJ5LT5zZXRJc0xvYWRpbmcodHJ1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmNwcAppbmRleCA3ZDE3MjE3YzJlNDQyYWM2ZjNkZThjNGI2MGE5NTI2YzlmNjU4NDJh
Li43YjA0ZmEyNmE0MmFiOTc4YWUwN2JkMzFmMGU2OTE1NTFiYmM0NjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBDdXJsQ29udGV4dDo6Q3VybENvbnRleHQoKQogICAgIGlmIChhdXRv
IHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+KCJXRUJLSVRfQ1VSTF9NQVhfSE9TVF9DT05O
RUNUSU9OUyIpKQogICAgICAgICBtYXhIb3N0Q29ubmVjdGlvbnMgPSAqdmFsdWU7CiAKLSAgICBt
X3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENv
bm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOworICAgIG1f
c2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxDdXJsUmVxdWVzdFNjaGVkdWxlcj4obWF4Q29ubmVjdHMs
IG1heFRvdGFsQ29ubmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9ucyk7CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgbV92ZXJib3NlID0gZW52VmFyLmRlZmluZWQoIkRFQlVHX0NVUkwiKTsKQEAgLTMz
Niw3ICszMzYsNyBAQCBDVVJMY29kZSBDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xDdHgodm9pZCog
c3NsQ3R4KQogICAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKIAogICAg
IGlmICghbV9zc2xWZXJpZmllcikKLSAgICAgICAgbV9zc2xWZXJpZmllciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOworICAgICAgICBtX3NzbFZlcmlmaWVyID0g
bWFrZVVuaXF1ZTxDdXJsU1NMVmVyaWZpZXI+KHNzbEN0eCk7CiAKICAgICByZXR1cm4gQ1VSTEVf
T0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5oCmluZGV4IDdkMDYwNjhjZDlkMWFlYmVlNDJkMzg1OTRhYmQwOTRiOTAxMTQ0NDQu
LmE0ZjhjMDI4Mjc2N2IwYjQ4NzcwYTA0OGVlODUyZjE2NmUwN2E3ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCkBAIC0xNDcs
NiArMTQ3LDcgQEAgY2xhc3MgQ3VybENvbnRleHQgOiBwdWJsaWMgQ3VybEdsb2JhbCB7CiAvLyBD
dXJsTXVsdGlIYW5kbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogY2xhc3MgQ3VybE11bHRpSGFuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsTXVsdGlIYW5kbGUpOwogCiBwdWJsaWM6
CkBAIC0yMDIsNiArMjAzLDcgQEAgY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNzIE5ldHdvcmtM
b2FkTWV0cmljczsKIAogY2xhc3MgQ3VybEhhbmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybEhhbmRsZSk7CiAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9y
bURhdGFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxGb3JtRGF0YVN0cmVhbS5jcHAKaW5kZXggOWZjNjZlYzAyMGUyOTk2ZDM4ZDA2MGFkNzhkMzZm
MTE0YWU0ODFjNi4uNzg1ZDZjYjhlNmRjOGZhZmU4ZTgxMGRmYmZkZjRjZTc2MmY0YjM3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0
YVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxGb3JtRGF0YVN0cmVhbS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgY29uc3QgVmVjdG9yPGNoYXI+
KiBDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoIW1fcG9zdERhdGEpCi0gICAgICAgIG1fcG9zdERhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsKKyAgICAgICAg
bV9wb3N0RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPGNoYXI+PihtX2Zvcm1EYXRhLT5mbGF0dGVu
KCkpOwogCiAgICAgcmV0dXJuIG1fcG9zdERhdGEuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAKaW5kZXggYThiYjhkODFhN2FiZDcxNzQzYmQzOTVkY2M4NjYzMTc5ZmRlMmQ1NS4uY2Nk
YmIyODIzOWYyMmMzNjM2Y2FjMTRiMDc4NWQ2ZjU1YWIyZjViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybE11bHRpcGFydEhh
bmRsZT4gQ3VybE11bHRpcGFydEhhbmRsZTo6Y3JlYXRlSWZOZWVkZWQoQ3VybE11bAogICAgIGlm
ICghYm91bmRhcnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAqYm91bmRhcnkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5
KTsKIH0KIAogT3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0Qm91
bmRhcnkoY29uc3QgQ3VybFJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmlu
ZGV4IDgwNGM3NDQ2YzQ1M2I2NzE1Zjg4NWU5YWZjMjczODg1OGUyNjg3MWEuLjcyMGM2OTgwZWRk
M2RhZTNlMTJjNjNmMDhiNjNjNmY4OTZlNTMzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAt
MzcsNiArMzcsNyBAQCBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3VybE11bHRpcGFydEhhbmRs
ZT4gY3JlYXRlSWZOZWVkZWQoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IEN1cmxS
ZXNwb25zZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAwNzAzNGJiNjJkN2JiZTY0MGQ0ZjgwMWM0ZTE4NDIy
M2RmMjQxM2RjLi5iMmEyMmRhMjJkNmMwMTU1NTA3NTk5NWY2YjgzMDg2ZmVhODFmZTA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjYWxsQ2xpZW50KEZ1
bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3QmLCBDdXJsUmVxdWVzdENsaWVudCYpPiYmCiB2b2lkIEN1
cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAg
ICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgICAg
ICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh0YXNrKSkpOwogICAgIGVsc2UgaWYgKGlzTWFpblRocmVhZCgpKQogICAgICAgICB0YXNr
KCk7CiAgICAgZWxzZQpAQCAtMjA1LDcgKzIwNSw3IEBAIENVUkwqIEN1cmxSZXF1ZXN0OjpzZXR1
cFRyYW5zZmVyKCkKICAgICBhdXRvIGh0dHBIZWFkZXJGaWVsZHMgPSBtX3JlcXVlc3QuaHR0cEhl
YWRlckZpZWxkcygpOwogICAgIGFwcGVuZEFjY2VwdExhbmd1YWdlSGVhZGVyKGh0dHBIZWFkZXJG
aWVsZHMpOwogCi0gICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsSGFuZGxl
PigpOworICAgIG1fY3VybEhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybEhhbmRsZT4oKTsKIAogICAg
IG1fY3VybEhhbmRsZS0+c2V0VXJsKG1fcmVxdWVzdC51cmwoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hl
ZHVsZXIuY3BwCmluZGV4IDkxODM3YWY5ZjNlNDc3M2I1YzcxYzFjMjYwZGI5NmY1ODZiMjExYWYu
LjNhYTVmNTJkYjYyN2FiYjBlY2NhZjI5MjEzZGNlMTJmYmM2ZmJjOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVs
ZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRpSGFuZGxlPigp
OworICAgIG1fY3VybE11bHRpSGFuZGxlID0gbWFrZVVuaXF1ZTxDdXJsTXVsdGlIYW5kbGU+KCk7
CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heENvbm5lY3RzKG1fbWF4Q29ubmVjdHMpOwog
ICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhUb3RhbENvbm5lY3Rpb25zKG1fbWF4VG90YWxD
b25uZWN0aW9ucyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heEhvc3RDb25uZWN0aW9u
cyhtX21heEhvc3RDb25uZWN0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCmluZGV4IGNhM2Ji
YTgxMzQ0MGJmZjZlODAzMTI2NDA5NzZjYzM4OGE3NDg2NGYuLjRiOTVjMGQxOWFkOTA0MmQyYWM3
MGVkNGIxMzNmOGQxZDBjNjMyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCkBAIC0zOCw2ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xp
ZW50OwogCiBjbGFzcyBDdXJsUmVxdWVzdFNjaGVkdWxlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybFJlcXVlc3RTY2hlZHVsZXIp
OwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxDdXJsUmVxdWVzdFNjaGVkdWxlcj47CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTFZlcmlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTFZlcmlmaWVyLmgKaW5kZXggNDUyZjcwNWY5Y2I4ZmUyOTE5Y2YyODU2ZGVlOGQwYWQxYTgx
NGYxYS4uM2I1OWNiMWY4NjM2NTQ4ODFkNDZlNjViYmU5NTU0ZTlmNjYzNDM2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVyaWZp
ZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJs
U1NMVmVyaWZpZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEN1cmxTU0xWZXJpZmllcik7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBT
U0xDZXJ0aWZpY2F0ZUZsYWdzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggNDdiMzc4M2U2
NDYyOWE5MmVlOGRhNDBiZDQ3OTcwYzc5NmVhNTQ4Ni4uNzA3ZDBhNjYzYTcxODZkYjEwNTA0ZGRj
Mjg2NmI3Njk3N2QzNGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTE2Myw3ICsxNjMs
NyBAQCBSZWY8Q3VybFJlcXVlc3Q+IFJlc291cmNlSGFuZGxlOjpjcmVhdGVDdXJsUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZQogQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUq
IFJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSgpCiB7CiAgICAgaWYgKCFkLT5tX2RlbGVnYXRlKQot
ICAgICAgICBkLT5tX2RlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZT4oKnRoaXMpOworICAgICAgICBkLT5tX2RlbGVnYXRlID0gbWFrZVVuaXF1ZTxD
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOwogCiAgICAgcmV0dXJuIGQtPm1fZGVs
ZWdhdGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRl
eCBhMzY3ZmRhNjJhNmQyMTJhNDk1NWU2ODg5YzY1NzIwYzllZmFmMjFiLi4xM2E4MzJjMjY2OWI0
Y2U4Y2JlYmYzMTM0YmEwODlkOTAyZGZhOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsQ3VybC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OnN0b3BUaHJlYWQoKQogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjYWxsT25Xb3Jr
ZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlv
bjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7CisgICAgbV90YXNrUXVldWUuYXBwZW5kKG1ha2VV
bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OmV4ZWN1dGVUYXNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggNWEwNmYy
ZWY4OWVmNWMyMWJlMTU3YzcxZGExNDE5ZWM4NDgwOWVmNy4uNzY1NDNhZDE2YzE0OTQ4NTg4MjI5
OTFmMzA1ZmY3YTMzZTE3YWU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBjbGFzcyBQcmV2
aWV3Q29udmVydGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQcmV2aWV3Q29udmVydGVyKTsKIHB1YmxpYzoKICAgICBQcmV2aWV3Q29u
dmVydGVyKGlkIGRlbGVnYXRlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3RyaW5n
JiBwYXNzd29yZCA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggZGUwYjdlMWYxODdiNTA3NjVh
OWQxN2MyZWM0ZWM4MDMzZDgzZjM0MS4uZjEwZWI2MjVlYTA4MTMwMjkyNzgwN2NlYzFlMmZmNmU3
M2YyNGMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWNhbGxG
dW5jdGlvbk9uTWFpblRocmVhZDooRnVuY3Rpb248dm9pZCgpPiYmKWZ1bmN0aW9uCiB7CiAgICAg
Ly8gU3luYyB4aHIgdXNlcyB0aGUgbWVzc2FnZSBxdWV1ZS4KICAgICBpZiAobV9tZXNzYWdlUXVl
dWUpCi0gICAgICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICAgICAgcmV0dXJu
IG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKGZ1bmN0aW9uKSkpOwogCiAgICAgLy8gVGhpcyBpcyB0aGUgY29tbW9uIGNhc2UuCiAgICAg
aWYgKCFzY2hlZHVsZWRXaXRoQ3VzdG9tUnVuTG9vcE1vZGUobV9zY2hlZHVsZWRQYWlycykpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2
ZVF1ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
UmVzb2x2ZVF1ZXVlU291cC5jcHAKaW5kZXggNGJiMzBhODcxZGU1NzAzOWI3YjcxOTM0ZmVjMzc2
M2E1YTRhODJkOS4uZDRiYTRlOTUwNDE1YmI0MDZiYWJjMDFiNmQyMGM2NmQ0Zjg0YjJlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVR
dWV1ZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNSZXNvbHZlUXVldWVTb3VwLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgRE5TUmVzb2x2
ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVu
dGlmaWVyLCBECiAKICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChhZGRyZXNzLmdldCgp
KSwgImlkZW50aWZpZXIiLCBHVUlOVF9UT19QT0lOVEVSKGlkZW50aWZpZXIpKTsKIAotICAgIG1f
Y29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5p
cXVlPEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4oV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoY2FuY2VsbGFibGUpKSk7CisgICAgbV9j
b21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNvbXBsZXRpb25BbmRDYW5j
ZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoY2FuY2VsbGFi
bGUpKSk7CiB9CiAKIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29sdmUodWludDY0
X3QgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBl
NGM4YjBmMTNlNmQwODlhNTg5MmFhN2FlMGE5YjgyMTU4NWJiOWE0Li5iZDA2MmY3MjhmMTZmNzAw
YzQ2ODAzYmM4MzllYzBiYzU1NzhlMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGF1dGhUeXBlRnJv
bVByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lKFByb3RlY3Rpb25TcGEKIH0KIAog
c3RydWN0IFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgU2VjcmV0U2VydmljZVNlYXJjaERhdGEoR0NhbmNlbGxhYmxlKiBj
YW5jZWxsYWJsZSwgRnVuY3Rpb248dm9pZCAoQ3JlZGVudGlhbCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICAgICAgOiBjYW5jZWxsYWJsZShjYW5jZWxsYWJsZSkKICAgICAgICAgLCBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKQEAgLTE3Myw3ICsxNzQs
NyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0
ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4o
Y2FuY2VsbGFibGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIGRhdGEg
PSBtYWtlVW5pcXVlPFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhPihjYW5jZWxsYWJsZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIHNlY3JldF9zZXJ2aWNlX3NlYXJjaChudWxscHRy
LCBTRUNSRVRfU0NIRU1BX0NPTVBBVF9ORVRXT1JLLCBhdHRyaWJ1dGVzLmdldCgpLAogICAgICAg
ICBzdGF0aWNfY2FzdDxTZWNyZXRTZWFyY2hGbGFncz4oU0VDUkVUX1NFQVJDSF9VTkxPQ0sgfCBT
RUNSRVRfU0VBUkNIX0xPQURfU0VDUkVUUyksIGNhbmNlbGxhYmxlLAogICAgICAgICBbXShHT2Jq
ZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKaW5kZXggMTBmZWNi
YzQxOTQ3OTVmMzJkMWNhN2U3NjA5YWM0ZmYyMDkyY2QyMy4uYWFmZWQzZGU3OWI5OWFhYzQ3Njlj
NzZiNTVmNmMxY2JiNjYxYjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9CaWRpUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jp
ZGlSZXNvbHZlci5oCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBCaWRpUmVzb2x2ZXJCYXNlPEl0
ZXJhdG9yLCBSdW4sIERlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bkludGVybmFsKCkKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChlbmRPZmZzZXQgPj0gc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICBt
X3J1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8UnVuPihzdGFydE9mZnNldCwgZW5kT2Zm
c2V0ICsgMSwgY29udGV4dCgpLCBtX2RpcmVjdGlvbikpOworICAgICAgICAgICAgbV9ydW5zLmFw
cGVuZFJ1bihtYWtlVW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRl
eHQoKSwgbV9kaXJlY3Rpb24pKTsKIAogICAgICAgICBtX2Vvci5pbmNyZW1lbnQoKTsKICAgICAg
ICAgbV9zb3IgPSBtX2VvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlSUNVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNV
LmNwcAppbmRleCA1OWUxZmM3MmEyYmYyOTY5NDVhODZmODU1MmI4NjM3NmE5ZWE1ODZkLi4yYzhj
Y2U3MzA4OGZhNWFkMGNmNTk1OWNjZTRmOTY5MWJmMzU3YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBpY3U7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0
IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2Nh
bGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogTG9j
YWxlSUNVOjpMb2NhbGVJQ1UoY29uc3QgY2hhciogbG9jYWxlKQpAQCAtMTYzLDIyICsxNjMsMjIg
QEAgc3RhdGljIFN0cmluZyBnZXREYXRlRm9ybWF0UGF0dGVybihjb25zdCBVRGF0ZUZvcm1hdCog
ZGF0ZUZvcm1hdCkKIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpj
cmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3Jt
YXRTeW1ib2xUeXBlIHR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQogewog
ICAgIGlmICghZGF0ZUZvcm1hdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+
PigpOwogICAgIGlmICh1ZGF0X2NvdW50U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlKSAhPSBzdGFy
dEluZGV4ICsgc2l6ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0
cmluZz4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwog
Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwor
ICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJl
bHMtPnJlc2VydmVDYXBhY2l0eShzaXplKTsKICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKICAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAg
ICAgICAgIGludDMyX3QgbGVuZ3RoID0gdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUs
IHN0YXJ0SW5kZXggKyBpLCAwLCAwLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKHN0YXR1cyAhPSBV
X0JVRkZFUl9PVkVSRkxPV19FUlJPUikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAg
ICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRTeW1ib2xzKGRh
dGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsICZz
dGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBsYWJlbHMtPmFwcGVuZChT
dHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSkpOwogICAgIH0KICAgICByZXR1cm4gV1RGTW92
ZShsYWJlbHMpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3Ry
aW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCoKIAog
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tNb250
aExhYmVscygpCiB7Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxT
dHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
KTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9u
dGhGdWxsTmFtZSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVO
R1RIKFdURjo6bW9udGhGdWxsTmFtZSk7ICsraSkKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoV1RG
Ojptb250aEZ1bGxOYW1lW2ldKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgTG9jYWxlSUNVOjptb250aExhYmVscygpCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygpCiB7Ci0gICAgYXV0byBs
YWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFi
ZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVD
YXBhY2l0eSgyKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiQU0iKTsKICAgICBsYWJlbHMtPmFwcGVu
ZCgiUE0iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
Tm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCmlu
ZGV4IGJiNmIyNmJhNTljYjM2Yjk4OWI3ZTZmNTg2MzBjN2E3YjNiNTZlYTcuLjc4MTVhNDc4ZTAy
OTc0NTU5NjU3NmMyZGVkMjIxMTkzNmFhOTZhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBMb2NhbGVOb25l
IDogcHVibGljIExvY2FsZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3Jl
YXRlKGNvbnN0IEF0b21TdHJpbmcmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExv
Y2FsZU5vbmU+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlTm9uZT4oKTsKIH0KIAog
TG9jYWxlTm9uZTo6fkxvY2FsZU5vbmUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKaW5kZXggZjhlMTY3MDg0OWE5NTg5OGExNDU3
YmM5OGRhOTFlNGJkZTc4NGM3OS4uZTVmMjgxNjZjNmRkMzRiYzUzNTA5YjZhMDAyMGE4ODg5MDdj
MmNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJ
Q1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNw
cApAQCAtMTU2LDQzICsxNTYsNDMgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyQ29kZWNz
KFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiAgICAgICAgIC8vIGh0dHA6Ly9kZW1vLmlj
dS1wcm9qZWN0Lm9yZy9pY3UtYmluL2NvbnZleHAKICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwg
IndpbmRvd3MtODc0IikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFt
ZSwgIndpbmRvd3MtODc0LTIwMDAiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21w
KG5hbWUsICJ3aW5kb3dzLTk0OSIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25h
bWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJ
Q1U+KG5hbWUsICJ3aW5kb3dzLTk0OS0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
IXN0cmNtcChuYW1lLCAieC1tYWMtY3lyaWxsaWMiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFy
KG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEwLjIiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy03XzMtMTAuMiIpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtZ3JlZWsiKSkgewogICAgICAgICAgICAgcmVnaXN0
cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8yLTEwLjQiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy02XzItMTAuNCIp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtY2VudHJhbGV1cnJvbWFuIikpIHsKICAgICAg
ICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTI5LTEwLjIiKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNv
cy0yOS0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy10dXJraXNoIikpIHsKICAg
ICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTM1LTEwLjIiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJt
YWNvcy0zNS0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJFVUMtS1IiKSkgewogICAgICAg
ICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDkiKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dz
LTk0OSIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyhU
ZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICBjb25zdCBjaGFyKiBjYW5vbmlj
YWxDb252ZXJ0ZXJOYW1lID0gdWNudl9nZXRDYW5vbmljYWxOYW1lKG5hbWUsICJJQU5BIiwgJmVy
cm9yKTsKICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOwogICAgICAgICByZWdpc3Ry
YXIobmFtZSwgW25hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWVdIHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgY2Fub25pY2FsQ29udmVy
dGVyTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5h
bWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWUpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKaW5kZXgg
OTMxNDUzMzI4YTZmNjY5NDg1ZWUwMWY4YTRlMmNlZGU1MDI2NzdmZi4uOTJjNjYxM2NiMWZjYzBl
MzA4YTczYzM1MGE5ZTA3ZWY3NzM0NjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFRleHRD
b2RlY0xhdGluMTo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVj
UmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIndpbmRvd3MtMTI1MiIsIFtd
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNMYXRpbjE+KCk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVw
bGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBs
YWNlbWVudC5jcHAKaW5kZXggMTc2NWJmNzkyMTU5NzViMTU3YzhiM2Y3NGM1NTcyYzQ3MWUyMTE0
MS4uYzhiNTU4YzhjYTJkM2FmZDMwMjE0YmNmYzM3YTE0NTc3NTZhMTNhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAK
QEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJFbmNv
ZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIKIHZvaWQgVGV4dENvZGVj
UmVwbGFjZW1lbnQ6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIp
CiB7CiAgICAgcmVnaXN0cmFyKCJyZXBsYWNlbWVudCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjUmVwbGFjZW1lbnQ+KCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCmluZGV4IGJlMDA2
NTY0NDY0OGZjZTBjMzc5ZDNjNzQzZWUyMjdlYTllZGE2ZjQuLjkwYzQ0NzVkMDIwYjlmNDcxYjVi
ZTc3YzNjYWFjMGZkYzk4Y2JhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVVRGMTYuY3BwCkBAIC01NCwxMCArNTQsMTAgQEAgdm9pZCBUZXh0Q29kZWNV
VEYxNjo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiB2b2lkIFRleHRDb2RlY1VURjE2OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3Ry
YXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigiVVRGLTE2TEUiLCBbXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjVVRGMTY+KHRydWUpOwogICAgIH0pOwogICAgIHJl
Z2lzdHJhcigiVVRGLTE2QkUiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRleHRDb2RlY1VURjE2PihmYWxzZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRD
b2RlY1VURjE2PihmYWxzZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCmluZGV4IGEzZGFkNGU5ZDE2Mzc2ODYzMDg4YjE5
NzEwZjgzOWRiYmZmZWE4ZGQuLmUxZDBhNTNjNzE3YWFlNzM5OTM5ZjUxYzRkMzI5MzQ1YWY4OWNh
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRG
OC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNw
cApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFRleHRDb2RlY1VURjg6OnJlZ2lzdGVyRW5jb2RpbmdO
YW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEY4
OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJl
Z2lzdHJhcigiVVRGLTgiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRDb2RlY1VURjg+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjg+
KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKaW5kZXggMjk2YzQ2OWYxNjlmYjkxMWRjOGRiZDdh
NjQ3ZWE1NjQxZTJmZmUxOS4uNDhhZGJhOWQ0YjFhN2E5YTY1OGFlZjlkZmFkZjg1YWRkZTlkY2Y1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2Vy
RGVmaW5lZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNV
c2VyRGVmaW5lZC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5l
ZDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIK
IHZvaWQgVGV4dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lz
dHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ4LXVzZXItZGVmaW5lZCIsIFtdIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVXNlckRlZmluZWQ+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVkPigpOwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9M
b2NhbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMu
bW0KaW5kZXggYTUxN2JlMzQxZjZhYzRiZThlODkzY2ZhZDdjMjI4ODQ1ZDZhODI4MC4uMmIzZDAz
YTM4YTVkMjAxYmI2ZGNiOGViZTQ0ZjQ2ZmVlZmM2N2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TTG9jYWxlPiBkZXRlcm1pbmVMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJp
bmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVNYWM+KGRl
dGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsK
IH0KIAogc3RhdGljIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGNyZWF0ZURhdGVUaW1lRm9y
bWF0dGVyKE5TTG9jYWxlKiBsb2NhbGUsIE5TQ2FsZW5kYXIqIGNhbGVuZGFyLCBOU0RhdGVGb3Jt
YXR0ZXJTdHlsZSBkYXRlU3R5bGUsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIHRpbWVTdHlsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IDZh
MTYwZGVjY2ZjOTI2YWVmMzdkZTIzZTk3ZjYyZThmNWM2NzkwNmEuLmFhMDBhNGFkNmY1YjU5OTgy
YjZiNDc3MzE3MWM4YmM3YzAzMzkwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgTENJRCBMQ0lE
RnJvbUxvY2FsZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxM
b2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxvY2FsZSkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZVdpbj4oTENJREZyb21Mb2NhbGUobG9jYWxl
KSk7CiB9CiAKIGlubGluZSBMb2NhbGVXaW46OkxvY2FsZVdpbihMQ0lEIGxjaWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAppbmRleCBh
ZjQ2OTEzOTA4MWU4MGMxMjA3YjgyYzk3ZmRmYTNjNzcyMWE2NTExLi4yY2ViNDc1ZTVmYWViYjY3
MGM3NDE0NDc1YTQ3MjkyNDk1MmRjYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMg
VUlOVCBnZXRDb2RlUGFnZShjb25zdCBjaGFyKiBuYW1lKQogCiBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjV2luKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2Rp
bmcsIGNvbnN0IHZvaWQqKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2Rl
Y1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VGV4dENvZGVjV2luPihnZXRDb2RlUGFnZShlbmNvZGluZy5uYW1lKCkpKTsKIH0KIAogVGV4
dENvZGVjV2luOjpUZXh0Q29kZWNXaW4oVUlOVCBjb2RlUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZS
LmgKaW5kZXggZGQ2YWU3MzYwNDY3OWYxODhlMDFlMTEwZTRmZWJlNTkzZDUzN2YxYi4uZjcxYmQ5
ZjBkNTg5Y2MyZjgzOWIwNjdjMjNlYzhjYjUxODEwNjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZS
LmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVlJQbGF0
Zm9ybURpc3BsYXlPcGVuVlIgOiBwdWJsaWMgVlJQbGF0Zm9ybURpc3BsYXkgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFZSUGxhdGZvcm1EaXNw
bGF5T3BlblZSKHZyOjpJVlJTeXN0ZW0qLCB2cjo6SVZSQ2hhcGVyb25lKiwgdnI6OklWUkNvbXBv
c2l0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZy
L1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Zy
L29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKaW5kZXggZDFkYzY3MzY4NmY2NTFl
M2UwMzI5MWI3YzAyYzMxYjBjMTY5YmJjMi4uZTdjZjcxMzdlMzNhYTU1YmY3ZTU4NWVlMTY0ZTY3
M2QzYWFlZWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZy
L1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCkBAIC0zNSw3ICszNSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4gVlJQbGF0Zm9ybU1hbmFn
ZXJPcGVuVlI6OmNyZWF0ZSgpCiAgICAgaWYgKCF2cjo6VlJfSXNSdW50aW1lSW5zdGFsbGVkKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlI+KCk7CiB9CiAKIFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjp+VlJQ
bGF0Zm9ybU1hbmFnZXJPcGVuVlIoKQpAQCAtNzgsNyArNzgsNyBAQCBWZWN0b3I8V2Vha1B0cjxW
UlBsYXRmb3JtRGlzcGxheT4+IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpnZXRWUkRpc3BsYXlz
KCkKIAogICAgIFZlY3RvcjxXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gZGlzcGxheXM7CiAg
ICAgaWYgKCFtX2Rpc3BsYXkpCi0gICAgICAgIG1fZGlzcGxheSA9IHN0ZDo6bWFrZV91bmlxdWU8
VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNvbXBvc2l0b3Ip
OworICAgICAgICBtX2Rpc3BsYXkgPSBtYWtlVW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZS
PihtX3N5c3RlbSwgY2hhcGVyb25lLCBjb21wb3NpdG9yKTsKICAgICBkaXNwbGF5cy5hcHBlbmQo
bWFrZVdlYWtQdHIoKm1fZGlzcGxheSkpOwogICAgIHJldHVybiBkaXNwbGF5czsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdl
ck9wZW5WUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1N
YW5hZ2VyT3BlblZSLmgKaW5kZXggNmE0Mzg3Y2MzMDgxNWUwMGMzNDE2Yzg5NjZhZDI5ZDRiNzNm
NzBkOS4uNmE3ODIzYmM3Yjk1ZWQ0MGRjZWNkZjBmNTczM2UxNmQ4NDQ1YWE0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1N
YW5hZ2VyT3BlblZSLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI7CiAKIGNsYXNzIFZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSIDogcHVibGljIFZSUGxhdGZvcm1NYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZSUGxhdGZvcm1NYW5h
Z2VyT3BlblZSPiBjcmVhdGUoKTsKICAgICBleHBsaWNpdCBWUlBsYXRmb3JtTWFuYWdlck9wZW5W
UigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAppbmRleCBhYmFkZGM3ZmJjYTIzNTllZmY1Yjk4MTFjMTk1ZjZiNWFiYzFiYTgzLi4x
Njk3ODU1ZmU3MmY2MzdlNjVhZDQ3NzcyYWZhNjFjNzQ3MTkyNDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0
YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25lclduZFByb2MoSFdORCBoV25kLCBV
SU5UIG1lc3NhZ2UsIFdQQVJBTSB3CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIGF1dG8gcGFzdGVib2FyZCA9
IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiAgICAgQ09NUHRyPElEYXRhT2JqZWN0PiBjbGlwYm9h
cmREYXRhOwogICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENsaXBib2FyZCgmY2xpcGJvYXJkRGF0
YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0gMDsKQEAgLTEwNiwxNiArMTA2LDE2IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cCgpCiB7CiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0YU9iamVjdDsKICAgICBXQ0RhdGFP
YmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKIH0KIAogLy8gc3RhdGljCiBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Ao
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFnRGF0YS5wbGF0Zm9ybURh
dGEoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0Rh
dGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJk
PihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgLy8gRklYTUU6IFNob3VsZCBhZGQgYSBj
b25zdCBvdmVybG9hZCBvZiBkcmFnRGF0YU1hcCBzbyB3ZSBkb24ndCBuZWVkIGEgY29uc3RfY2Fz
dCBoZXJlLgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGNvbnN0X2Nh
c3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2FzdDxEcmFnRGF0YSY+KGRyYWdEYXRhKS5kcmFnRGF0
YU1hcCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCAxOTY0OWM1NjZjZmNmNWY0MjQzMDlkMWQ4ZDEw
MGIwYjRmZjc3MGE4Li42ZjdmNGJhMTY2MGI0ZjdhOTc3MjEyYzg1NjNhNDNjNjY1ZTMwYjU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5j
cHAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQgU2VhcmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTaW1w
bGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wgaWdub3JlRXJyb3IpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IFNlYXJjaFBvcHVwTWVudURCOjpjcmVhdGVQcmVwYXJlZFN0
YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8g
c3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7
CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwogICAgIEFTU0VSVF9VTlVTRUQo
cmV0LCByZXQgPT0gU1FMSVRFX09LKTsKICAgICByZXR1cm4gc3RhdGVtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAppbmRleCBkYmY5OWE0NWNlNzAz
YTlkODU3YTBlNjAxOWQ2ODA2ZGQxMWZhMTdiLi4yNDEwMDNhMTAwMzFhM2Q3ZTZkN2FhMWUyNGE0
OWNiOTg5ODIwY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NE
YXRhT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2Jq
ZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFNURE1FVEhPRElNUCBXQ0RhdGFPYmplY3Q6OlNl
dERhdGEoRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBTVEdNRURJVU0qIHBtZWRpdW0sIEJPCiAgICAg
aWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwog
Ci0gICAgYXV0byBmZXRjID0gc3RkOjptYWtlX3VuaXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0
byBmZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Rk9STUFURVRDPigpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0Z01lZGl1bURlbGV0ZXI+IHBTdGdNZWQo
bmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5KGZldGMuZ2V0KCksIHNpemVvZihGT1JN
QVRFVEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggYzAwNGZj
OWU3MDRhNmFkMzIzNDlmYjgyNGNkYzVkZGQwMzYwMWI1Yy4uNDc5ODFhZTY5OTFkYzY0OTE1MjBm
YzgyNDMyZWNjNDk1ODY0NDNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1
aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBGaQogCiAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogCi0gICAgYXV0byBidWlsZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlvdXNFZmZlY3QpOworICAgIGF1dG8gYnVp
bGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKICAg
ICBtX3NvdXJjZUFscGhhID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChTb3VyY2VBbHBoYTo6ZWZm
ZWN0TmFtZSgpKTsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0RWxlbWVudCA6IGNoaWxkcmVuT2ZU
eXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oKmZpbHRlcikpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCmluZGV4IDAx
MzM3ODdkOWQzMDYyYjFjYTc5YjE2MDc5NjNmMjBjMTA3MWVkNTMuLmJkM2M5YmVlODcyOTg2ZWM2
MWIxYTMwYTA0OTViOGMwYTI2ZmQ2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NvbXBsZXhMaW5lTGF5b3V0LmNwcApAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgdm9pZCBkZXRl
cm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0ZXJhdG9yIGl0
ZXIpCiAKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gY3JlYXRlUnVuKGludCBzdGFy
dCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0JiBvYmosIElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2
ZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4oc3RhcnQsIGVuZCwg
b2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxCaWRpUnVuPihzdGFydCwgZW5kLCBvYmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVz
b2x2ZXIuZGlyKCkpOwogfQogCiB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjphcHBlbmRSdW5zRm9y
T2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBpbnQgc3RhcnQsIGludCBlbmQsIFJl
bmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQpAQCAtMTMwLDEy
ICsxMzAsMTIgQEAgdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5kUnVuc0Zvck9iamVjdChC
aWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXIKIHN0ZDo6dW5pcXVlX3B0cjxSb290
SW5saW5lQm94PiBDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9vdElubGluZUJveCgpCiB7CiAg
ICAgaWYgKGlzPFJlbmRlclNWR1RleHQ+KG1fZmxvdykpIHsKLSAgICAgICAgYXV0byBib3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25jYXN0PFJlbmRlclNWR1RleHQ+
KG1fZmxvdykpOworICAgICAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZHUm9vdElubGluZUJv
eD4oZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSk7CiAgICAgICAgIGJveC0+c2V0SGFz
VmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0dXJuIGJveDsKICAgICB9CiAgICAg
ICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4obV9mbG93KTsKIH0KIAogUm9v
dElubGluZUJveCogQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZUFuZEFwcGVuZFJvb3RJbmxpbmVC
b3goKQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW5saW5lIEJpZGlSdW4qIENvbXBsZXhMaW5lTGF5
b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmkKICAgICAg
ICAgd2hpbGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNlQ29udGV4dC0+cGFyZW50KCkpCiAg
ICAgICAgICAgICBiYXNlQ29udGV4dCA9IHBhcmVudDsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KGZp
cnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1bi0+cmVu
ZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IG1ha2VVbmlxdWU8QmlkaVJ1bj4oZmly
c3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFpbGluZ1NwYWNlUnVuLT5yZW5k
ZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFMKTsKICAgICAgICAgdHJhaWxpbmdT
cGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1biA9
IG5ld1RyYWlsaW5nUnVuLmdldCgpOwogICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJl
Y3Rpb246OkxUUikKQEAgLTE2MTcsNyArMTYxNyw3IEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6
OmxpbmtUb0VuZExpbmVJZk5lZWRlZChMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQogICAg
ICAgICBpZiAobGF5b3V0U3RhdGUuY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUoKSkgewogICAg
ICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21WaXN1YWxPdmVyZmxvdyA9IGxhc3RSb290Qm94KCkt
PmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygpOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBi
b3R0b21MYXlvdXRPdmVyZmxvdyA9IGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b21MYXlvdXRP
dmVyZmxvdygpOwotICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CisgICAgICAgICAgICBhdXRv
IG5ld0xpbmVCb3ggPSBtYWtlVW5pcXVlPFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveD4obV9m
bG93KTsKICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdGbG9hdHNMaW5lQm94ID0gbmV3TGluZUJv
eC5nZXQoKTsKICAgICAgICAgICAgIG1fbGluZUJveGVzLmFwcGVuZExpbmVCb3goV1RGTW92ZShu
ZXdMaW5lQm94KSk7CiAgICAgICAgICAgICB0cmFpbGluZ0Zsb2F0c0xpbmVCb3gtPnNldENvbnN0
cnVjdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3Bw
CmluZGV4IDRjZGQxMzljNDg3NTE2ZWEwZTdiMTIxM2I3MDNiZDM0MjdhYjAxOGMuLmE2YzY0ODE4
YzQ5NzQ1NjA5MGY2NjIzYzMwNGI1ZDYyNzcwN2FlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC03NSw3ICs3NSw3IEBAIEZsb2F0aW5nT2Jq
ZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gmIHJlbmRlcmVyLCBUeXBlIHR5cGUsIGNvbnN0
IExheW91dFJlY3QmCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdP
YmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyKQogewotICAgIGF1dG8gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIpOworICAgIGF1dG8gb2Jq
ZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIpOwogICAgIG9iamVjdC0+
c2V0U2hvdWxkUGFpbnQoIXJlbmRlcmVyLmhhc1NlbGZQYWludGluZ0xheWVyKCkpOyAvLyBJZiBh
IGxheWVyIGV4aXN0cywgdGhlIGZsb2F0IHdpbGwgcGFpbnQgaXRzZWxmLiBPdGhlcndpc2Ugc29t
ZW9uZSBlbHNlIHdpbGwuCiAgICAgb2JqZWN0LT5zZXRJc0Rlc2NlbmRhbnQodHJ1ZSk7CiAgICAg
cmV0dXJuIG9iamVjdDsKQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRp
bmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikKIAog
c3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y29weVRvTmV3
Q29udGFpbmVyKExheW91dFNpemUgb2Zmc2V0LCBib29sIHNob3VsZFBhaW50LCBib29sIGlzRGVz
Y2VuZGFudCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09i
amVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZyYW1lUmVjdCgpLmxvY2F0aW9u
KCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdpbk9mZnNldCgpLCBzaG91bGRQ
YWludCwgaXNEZXNjZW5kYW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVj
dD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkg
LSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdpbk9mZnNldCgpLCBzaG91bGRQYWlu
dCwgaXNEZXNjZW5kYW50KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBG
bG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQoKSBjb25zdAogewotICAgIGF1dG8gY2xv
bmVPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0
eXBlKCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9mZnNldCwgbV9zaG91bGRQYWludCwgbV9pc0Rl
c2NlbmRhbnQpOworICAgIGF1dG8gY2xvbmVPYmplY3QgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2Jq
ZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9mZnNldCwgbV9z
aG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOwogICAgIGNsb25lT2JqZWN0LT5tX3BhZ2luYXRp
b25TdHJ1dCA9IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIGNsb25lT2JqZWN0LT5tX2lzUGxhY2Vk
ID0gbV9pc1BsYWNlZDsKICAgICByZXR1cm4gY2xvbmVPYmplY3Q7CkBAIC0zNzIsNyArMzcyLDcg
QEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQbGFjZWRGbG9hdHNUcmVlKCkKICAgICBp
ZiAobV9zZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsYWNlZEZsb2F0
c1RyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0VHJlZT4oKTsKKyAgICBtX3Bs
YWNlZEZsb2F0c1RyZWUgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0VHJlZT4oKTsKICAgICBm
b3IgKGF1dG8gaXQgPSBtX3NldC5iZWdpbigpLCBlbmQgPSBtX3NldC5lbmQoKTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCA9IGl0LT5n
ZXQoKTsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5pc1BsYWNlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuY3BwCmluZGV4IGM3MmQwMWQ4MWM3ZDcxNjYxNTc5ZTNiYTAxODMwZTQyOWQz
MGY2ODguLjFlOTExYWU2MGE2MTI2ODlhNDk3ZmYyZDViN2YwZDUwYjg3ZTI5NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRU
cmFja1NwYQogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9k
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUo
KTsKICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRPZlZhcnlpbmdUcmFja0luZGV4
OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgIGlmIChpc0VtcHR5QXJlYUVub3VnaChy
b3dTcGFuLCBjb2x1bW5TcGFuKSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRB
cmVhPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRBcmVhPihHcmlkU3Bhbjo6dHJhbnNs
YXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCArIHJvd1NwYW4pLCBH
cmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1
bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlk
QXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWRE
ZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNw
YW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5k
ZXggKyBjb2x1bW5TcGFuKSk7CiAgICAgICAgICAgICAvLyBBZHZhbmNlIHRoZSBpdGVyYXRvciB0
byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdlIHdvdWxkIHJldHVybiB0aGUgc2FtZSBn
cmlkIGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAgICAgICsrdmFyeWluZ1RyYWNrSW5kZXg7
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAppbmRleCA1ZmMzMjgxNTNhNmQ4YmZjNDg4
M2JhNTEyMWNjYTBiZjZmMmU5OWQwLi42NjA5MDk4ZjljODcwNDY4ODExNDE4YWIxNzgyOTQxN2Jl
ZTJkMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5l
QWxpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5l
QWxpZ25tZW50LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgR3JpZEJhc2VsaW5lQWxpZ25t
ZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQoSXRlbVBvc2l0aW9uIHByZWZlcmVu
CiAKICAgICAvLyBMb29raW5nIGZvciBhIGNvbXBhdGlibGUgYmFzZWxpbmUtc2hhcmluZyBncm91
cC4KICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2VsaW5lQ29udGV4dD4oY2hpbGQsIHBy
ZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBtYWtlVW5pcXVlPEJhc2VsaW5lQ29udGV4dD4oY2hpbGQsIHByZWZlcmVuY2UsIGFz
Y2VudCwgZGVzY2VudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8qIGNvbnRleHQgPSBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgICAgICBjb250ZXh0LT51cGRhdGVTaGFy
ZWRHcm91cChjaGlsZCwgcHJlZmVyZW5jZSwgYXNjZW50LCBkZXNjZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKaW5k
ZXggYWRkZWRjNDI4YjFmMmZkYjM1MDNlODEyNjI2Yjk3NjkzYTNlN2I1Zi4uYjJiMDExYmRmNzQ5
MWIzNWFiMWRiYjdhYzZiMjYzOTYxNzIxY2NhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKQEAgLTY4MSw3ICs2ODEs
NyBAQCBkb3VibGUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxleEZhY3RvclVu
aXRTaXplKGNvbnN0IFZlY3RvcjxHcmlkVHJhYwogICAgICAgICAgICAgbGVmdE92ZXJTcGFjZSAt
PSBiYXNlU2l6ZTsKICAgICAgICAgICAgIGZsZXhGYWN0b3JTdW0gLT0gZmxleEZhY3RvcjsKICAg
ICAgICAgICAgIGlmICghdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSkKLSAgICAgICAgICAgICAg
ICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFja0luZGV4
U2V0PigpOworICAgICAgICAgICAgICAgIHRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUgPSBtYWtl
VW5pcXVlPFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZs
ZXhpYmxlLT5hZGQoaW5kZXgpOwogICAgICAgICAgICAgdmFsaWRGbGV4RmFjdG9yVW5pdCA9IGZh
bHNlOwogICAgICAgICB9CkBAIC0xMjYwLDEwICsxMjYwLDEwIEBAIHZvaWQgR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtOjpzZXR1cChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1
bnNpZ25lCiAgICAgbV9zaXppbmdPcGVyYXRpb24gPSBzaXppbmdPcGVyYXRpb247CiAgICAgc3dp
dGNoIChtX3NpemluZ09wZXJhdGlvbikgewogICAgIGNhc2UgSW50cmluc2ljU2l6ZUNvbXB1dGF0
aW9uOgotICAgICAgICBtX3N0cmF0ZWd5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRlZmluaXRlU2l6
ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5pcXVlPEluZGVm
aW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUcmFj
a1NpemluZzoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVmaW5pdGVT
aXplU3RyYXRlZ3k+KCp0aGlzKTsKKyAgICAgICAgbV9zdHJhdGVneSA9IG1ha2VVbmlxdWU8RGVm
aW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNzNiMzY1NDc2NzE0
MGEwMzcwZTRkNTY5NTZlNTRmMjY3NGI1OGIzNi4uYjNjNDAwNzkwMmRmNjA0ODYyYTVhYzdjMjk5
OGNiYWQ3M2YxMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcApAQCAtOTYsNyArOTYsNyBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0
IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pc092ZXJXaWRnZXQob3RoZXIuaXNPdmVy
V2lkZ2V0KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgbGlz
dCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNl
ZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNl
ZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhl
ci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xp
c3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIH0KIAogSGl0VGVzdFJlc3VsdDo6fkhpdFRl
c3RSZXN1bHQoKSA9IGRlZmF1bHQ7CkBAIC0xMTMsNyArMTEzLDcgQEAgSGl0VGVzdFJlc3VsdCYg
SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAg
IG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CiAKICAgICAvLyBPbmx5IGNv
cHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0IGhpdCB0ZXN0LgotICAgIG1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCA/IHN0ZDo6bWFrZV91bmlx
dWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOworICAg
IG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCA/IG1h
a2VVbmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRy
OwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjkwLDE0ICs2OTAsMTQgQEAgdm9pZCBIaXRU
ZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIsIGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXEKIGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1
bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQoKSBjb25zdAogewogICAgIGlmICghbV9saXN0QmFzZWRU
ZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG1ha2VVbmlx
dWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3VsdDsKIH0KIAog
SGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJlc3VsdDo6bXV0YWJsZUxpc3RCYXNlZFRl
c3RSZXN1bHQoKQogewogICAgIGlmICghbV9saXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBt
X2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CisgICAg
ICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG1ha2VVbmlxdWU8Tm9kZVNldD4oKTsKICAgICBy
ZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggMzMyZjI4NTMxZDM4OGNmZTJjM2Q1OGE5NGMzZjI2MTdk
Y2I5MTY2Ni4uMTBhMTk0MzZiNGJhYzY1NjI5MDZiMjQxYTcwZDFkNTg1MjAwMDJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIFNjcm9sbGJhcjsKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3RvcCwgQ29udGlu
dWUgfTsKIAogY2xhc3MgSGl0VGVzdFJlc3VsdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4+IE5vZGVT
ZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggNDNj
NjUzODc2Y2Y5ODRhNjJiNmZjOTI5NDVkM2RkNjkwY2EzZWRiOS4uMTVmZGU1NGRlNWQzNDk5MjA4
MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG51
bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRlcikKIC8vIG9m
IEJpZGlSZXNvbHZlciB3aGljaCBrbm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdHMuCiBz
dGF0aWMgaW5saW5lIHZvaWQgYWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZShJbmxp
bmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBSZW5kZXJPYmplY3QmIG9iaiwgdW5zaWduZWQgcG9z
LCBSZW5kZXJFbGVtZW50JiByb290KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBp
c29sYXRlZFJ1biA9IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocG9zLCBwb3MsIG9iaiwgcmVz
b2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJp
ZGlSdW4+IGlzb2xhdGVkUnVuID0gbWFrZVVuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCBy
ZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKICAgICAvLyBGSVhNRTogaXNvbGF0
ZWRSdW5zKCkgY291bGQgYmUgYSBoYXNoIG9mIG9iamVjdC0+cnVuIGFuZCB0aGVuIHdlIGNvdWxk
IGNoZWFwbHkKICAgICAvLyBBU1NFUlQgaGVyZSB0aGF0IHdlIGRpZG4ndCBjcmVhdGUgbXVsdGlw
bGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgaW5saW5lLgogICAgIHJlc29sdmVyLnNldFdoaXRlc3Bh
Y2VDb2xsYXBzaW5nVHJhbnNpdGlvbkZvcklzb2xhdGVkUnVuKCppc29sYXRlZFJ1biwgcmVzb2x2
ZXIud2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSgpLmN1cnJlbnRUcmFuc2l0aW9uKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAppbmRleCAyODVhYTVm
OWZlOWJhZTdkZmM4NTI4YzI0YzFkNTU2N2Q0MTI5ZmYzLi45NmFmOTVhNDU1Njk1MGU4MTI2Yjk1
MzczNTM0ZDQ3NmRhZTM1NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGF5ZXJPdmVybGFwTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJP
dmVybGFwTWFwLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVjdExpc3QmIHJlY3RMaXN0KQogLy8gQ2hlY2tp
bmcgZm9yIG92ZXJsYXAgaW52b2x2ZXMgZmluZGluZyB0aGUgbm9kZSBmb3IgdGhlIGNsaXBwaW5n
IGxheWVyIGVuY2xvc2luZyB0aGUgZ2l2ZW4gbGF5ZXIgKG9yIHRoZSByb290KSwKIC8vIGFuZCBj
b21wYXJpbmcgYWdhaW5zdCB0aGUgYm91bmRzIG9mIGVhcmxpZXIgc2libGluZ3MuCiBjbGFzcyBP
dmVybGFwTWFwQ29udGFpbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBPdmVybGFwTWFwQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyJiByb290TGF5ZXIp
CiAgICAgICAgIDogbV9yb290U2NvcGUocm9vdExheWVyKQpAQCAtMjk2LDcgKzI5Nyw3IEBAIGJv
b2wgTGF5ZXJPdmVybGFwTWFwOjpvdmVybGFwc0xheWVycyhjb25zdCBSZW5kZXJMYXllciYgbGF5
ZXIsIGNvbnN0IExheW91dFJlY3QmCiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpwdXNoQ29tcG9z
aXRpbmdDb250YWluZXIoKQogewotICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1fcm9vdExheWVyKSk7CisgICAgbV9vdmVybGFw
U3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9yb290TGF5ZXIp
KTsKIH0KIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnBvcENvbXBvc2l0aW5nQ29udGFpbmVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRkYmEzZjFjNDEw
NWFmYjBlOGU0Yzc2YTdjZmNiOWU1ZmZmNzE4NTQuLjAwMTkyNTg4MmU1MDI4YzhhMjA5OWI0YmJk
ZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVy
ZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAg
IAogICAgIGF1dG8mIGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAt
PmVuc3VyZSgmY29udGFpbmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKICAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKCZkZXNjZW5kYW50KS5pc05l
d0VudHJ5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2Vk
UmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAg
fQogICAgIAogICAgIGF1dG8mIGNvbnRhaW5lclNldCA9IHBlcmNlbnRIZWlnaHRDb250YWluZXJN
YXAtPmVuc3VyZSgmZGVzY2VuZGFudCwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsKICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiAKICAgICBBU1NFUlQoIWNvbnRhaW5lclNldC0+Y29udGFpbnMoJmNvbnRhaW5lcikp
OwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFBvc2l0aW9uZWREZXNjZW5kYW50c01hcCB7CiAg
ICAgICAgIH0KIAogICAgICAgICBhdXRvJiBkZXNjZW5kYW50cyA9IG1fZGVzY2VuZGFudHNNYXAu
ZW5zdXJlKCZjb250YWluaW5nQmxvY2ssIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICBib29sIGlzTmV3RW50cnkgPSBtb3ZlRGVzY2Vu
ZGFudFRvRW5kID09IE1vdmVEZXNjZW5kYW50VG9FbmQ6OlllcyA/IGRlc2NlbmRhbnRzLT5hcHBl
bmRPck1vdmVUb0xhc3QoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5CkBAIC01Mjgs
NyArNTI4LDcgQEAgc3RhdGljIGlubGluZSBVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFu
c2FjdGlvbiogY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnQKIHZvaWQgUmVuZGVyQmxvY2s6OmJl
Z2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKQogewogICAgIGlmICgh
dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpKQotICAgICAgICB1
cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7CisgICAgICAgIHVwZGF0ZVNj
cm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IG1ha2VVbmlxdWU8RGVsYXll
ZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKICAgICBpZiAodXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkgfHwgY3VycmVudFVwZGF0ZVNjcm9s
bEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCktPnZpZXcgIT0gJnZpZXcoKSkKICAgICAgICAg
dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5hcHBlbmQoVXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24odmlldygpKSk7CiAgICAgKytjdXJy
ZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+bmVzdGVkQ291bnQ7
CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEmIGVuc3VyZUJs
b2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQogICAgIAogICAgIGF1dG8mIHJh
cmVEYXRhID0gZ1JhcmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgaWYgKCFyYXJlRGF0YSkKLSAgICAgICAgcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CisgICAgICAgIHJhcmVEYXRhID0gbWFrZVVuaXF1
ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOwogICAgIHJldHVybiAqcmFyZURhdGEuZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXgg
N2YxZTYzOTcwNjNiZTRmOGRmOWI1N2YxNzVkNmUyNmU3OGVmYjEzNC4uYjg2NDJkMTcyMDNiZDRi
ZjI1YmRlMTcxZjk4NzBhZjdkNWE0M2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRV
bml0JiByZQogICAgIG1fc2ltcGxlTGluZUxheW91dCA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1f
Y29tcGxleExpbmVMYXlvdXQpCi0gICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CisgICAgICAgIG1fY29tcGxleExp
bmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKICAgICBt
X2NvbXBsZXhMaW5lTGF5b3V0LT5sYXlvdXRMaW5lQm94ZXMocmVsYXlvdXRDaGlsZHJlbiwgcmVw
YWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKIH0KQEAgLTIwMTksNyArMjAx
OSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgpCiAgICAgCiAg
ICAgc2V0TGluZUdyaWRCb3goMCk7CiAKLSAgICBhdXRvIGxpbmVHcmlkQm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxSb290SW5saW5lQm94PigqdGhpcyk7CisgICAgYXV0byBsaW5lR3JpZEJveCA9IG1h
a2VVbmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMpOwogICAgIGxpbmVHcmlkQm94LT5zZXRIYXNU
ZXh0Q2hpbGRyZW4oKTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhlIGxpbmUgYXNjZW50L2Rlc2NlbnQg
YWN0dWFsbHkgYmUgaG9ub3JlZCBpbiBxdWlya3MgbW9kZS4KICAgICBsaW5lR3JpZEJveC0+c2V0
Q29uc3RydWN0ZWQoKTsKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0ZXh0
Qm94RGF0YU1hcDsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpj
bGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBhaW50
CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMoKQogewotICAg
IG1fZmxvYXRpbmdPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0
aGlzKTsKKyAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Rz
PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVj
dHMoKQpAQCAtMzY3Nyw3ICszNjc3LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxp
bmVCb3hlcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9jb21wbGV4TGluZUxh
eW91dCk7Ci0gICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxl
eExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1
ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAgaWYgKFNpbXBsZUxpbmVMYXlvdXQ6
OmNhblVzZUZvckxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KSkgewogICAg
ICAgICBTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1w
bGVMaW5lTGF5b3V0KTsKQEAgLTM3MzUsNyArMzczNSw3IEBAIFJlbmRlckJsb2NrRmxvdzo6UmVu
ZGVyQmxvY2tGbG93UmFyZURhdGEmIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFyZUJsb2NrRmxv
d0RhCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0YSgp
CiB7CiAgICAgQVNTRVJUKCFoYXNSYXJlQmxvY2tGbG93RGF0YSgpKTsKLSAgICBtX3JhcmVCbG9j
a0Zsb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2Nr
Rmxvd1JhcmVEYXRhPigqdGhpcyk7CisgICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9IG1ha2VVbmlx
dWU8UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOwogfQog
CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggZGIzYTZkYThmMWEzMjE1MzcwMGU3MzQxN2QxMGY2YTQ4MTMwODM1Zi4u
OTY3N2RhZTljZmUyOGIxZGMzOTA1YzNhODJiMDZlYzZlY2RjZGM0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgQ29udHJv
bFN0YXRlc1JlbmRlcmVyTWFwJiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQogc3RhdGljIENv
bnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJCb3gmIHJl
bmRlcmVyKQogewogICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5lbnN1cmUo
JnJlbmRlcmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xT
dGF0ZXM+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CiAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCkBAIC0yMTIyLDcgKzIxMjIsNyBAQCBM
YXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBj
b250YWluZXIsIGNvbnN0IExheW91dAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJv
eD4gUmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpkaXJ0eUxpbmVC
b3hlcyhib29sIGZ1bGxMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBiY2JhN2I0MTY4NWEzZjQxMjBjMWVlYTU0NjEw
MmY4MzZkNTZhYTI2Li45MDFjNDExMGUxYzU2YmE2MGE0ZGQzYmE3YjkzZmFhZjYwNDFjYjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKQEAgLTI1MzgsNyArMjUzOCw3IEBAIGF1dG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3Vy
ZUNvbnRpbnVhdGlvbkNoYWluTm9kZSgpIC0+IENvbnRpbnVhdGlvbkNoYWluTm9kCiB7CiAgICAg
c2V0SGFzQ29udGludWF0aW9uQ2hhaW5Ob2RlKHRydWUpOwogICAgIHJldHVybiAqY29udGludWF0
aW9uQ2hhaW5Ob2RlTWFwKCkuZW5zdXJlKHRoaXMsIFsmXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRoaXMpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcAppbmRleCAyMjEwNDQzNGU0NWQ2Yzk4NDc2ZmZkMjlhYjU1MGJkNjJhYzQwOGZlLi5jMWUw
M2YwOTdlZjU5YWQ1YTE2YjE5NGM5YzA1ZDY0OWY3ZmYxNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIENv
dW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IEF0b21TdHJpbmcmIGkKICAgICBpZiAocGxhY2UucGFyZW50KQogICAgICAgICBwbGFjZS5wYXJl
bnQtPmluc2VydEFmdGVyKG5ld05vZGUsIHBsYWNlLnByZXZpb3VzU2libGluZy5nZXQoKSwgaWRl
bnRpZmllcik7CiAKLSAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8Q291
bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5jb3B5
UmVmKCkpOworICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxDb3VudGVyTWFwPigp
KS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7CiAg
ICAgcmVuZGVyZXIuc2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7CiAKICAgICBpZiAobmV3Tm9k
ZS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhZ21lbnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YWdtZW50Q29udGFpbmVyLmNwcAppbmRleCA1MWE5ZTQ2ODQzNDRkMjYzN2QwNGE5MWZiNTlhM2Nk
NmVmOGYwNmVkLi43ZjZjYWJjMDU5MTIxMDgxYzRkNzI4NjAyMTliZDRiOWM4NWI5NGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5l
ci5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJCb3hGcmFnbWVudEluZm8qIFJlbmRlckZy
YWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8oY29uc3QgUgogewogICAg
IEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveEZyYWdt
ZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQoYm94LCBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJbnNldCwgbG9n
aWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9yLT52
YWx1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94SW5m
byA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gsIG1ha2VVbmlxdWU8UmVuZGVyQm94
RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFp
bmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBib3hJ
bmZvLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YWdtZW50ZWRGbG93LmNwcAppbmRleCA0NGY1NjM1YmE1M2FlM2Y3ZTk0ZDdhYzhlNDk2NzM5MGY1
OGMyZTU2Li44NDZkZDNhMDJhYTg2YWFmNzE1YzA5NGU4YzM1MGMxNjZhODY3YjFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKQEAg
LTExMTUsNyArMTExNSw3IEBAIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBSZW5kZXJGcmFnbWVu
dGVkRmxvdzo6Y3VycmVudEZyYWdtZW50KCkgY29uc3QKIENvbnRhaW5pbmdGcmFnbWVudE1hcCYg
UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVudE1hcCgpCiB7CiAgICAgaWYg
KCFtX2xpbmVUb0ZyYWdtZW50TWFwKQotICAgICAgICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+KCk7CisgICAgICAgIG1fbGluZVRv
RnJhZ21lbnRNYXAgPSBtYWtlVW5pcXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKIAogICAg
IHJldHVybiAqbV9saW5lVG9GcmFnbWVudE1hcC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IGI5MDQ1ZTY3OTA4NzNhYmY4
MWE5MGRmYTViYmIxMTA5M2M2NzdiMDIuLjUyYzc5MGQ0ZTU3ODliMTc4ZTI2YzhhYmQ4YmE3YjEz
Y2M1OTE1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5
TWFwLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2go
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NCiAgICAg
CiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9u
UG9zaXRpb25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQotICAgICAgICBz
dGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
dCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9u
TWF0cml4Pih0KTsKICAgICBlbHNlCiAgICAgICAgIHN0ZXAubV9vZmZzZXQgPSBMYXlvdXRTaXpl
KHQuZSgpLCB0LmYoKSk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5
TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBz
Y3JvbAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2luc2Vy
dGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OwogICAgIGlm
ICh0KQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4oKnQpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gbWFrZVVuaXF1
ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwogICAgIAogICAgIHN0ZXBJbnNlcnRlZChzdGVw
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBlMzVhMmMx
MzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0Y2NjOWQwZjM0OTdmLi40OWFkMDM1NTUzNzM0MjI1ZjFkZGQ2
MzNiNDJjMTM4MzJjY2VmYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4
U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICB1bnNp
Z25lZCBsYXN0QXV0b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sgKyBncmlkLmF1
dG9SZXBlYXRUcmFja3MoZGlyZWN0aW9uKTsKIAogICAgIGlmICghZ3JpZC5oYXNHcmlkSXRlbXMo
KSkgewotICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3JkZXJl
ZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gbWFrZVVuaXF1
ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFja0lu
ZGV4ID0gZmlyc3RBdXRvUmVwZWF0VHJhY2s7IHRyYWNrSW5kZXggPCBsYXN0QXV0b1JlcGVhdFRy
YWNrOyArK3RyYWNrSW5kZXgpCiAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRkKHRy
YWNrSW5kZXgpOwogICAgIH0gZWxzZSB7CkBAIC01NTIsNyArNTUyLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NG
b3JBdXRvUmVwZWEKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBkaXJl
Y3Rpb24sIHRyYWNrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFpdGVyYXRvci5uZXh0R3JpZEl0
ZW0oKSkgewogICAgICAgICAgICAgICAgIGlmICghZW1wdHlUcmFja0luZGV4ZXMpCi0gICAgICAg
ICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVk
VHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMg
PSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgICAgIGVt
cHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTczMiw3ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdy
aWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dAogICAgIGNvbnN0
IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVj
dGlvbik7CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlv
bnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJl
Y3Rpb24pOwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46
OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jv
c3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBj
cm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGly
ZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlv
blBvc2l0aW9ucyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JpZEFyZWE+KHNwZWNpZmllZERp
cmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZp
ZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVk
UG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwogfQogCiB2b2lkIFJlbmRlckdy
aWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29uc3Qg
VmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODkxM2U3NmM5ZDYxYzlkMjU0MTk5MGE5MDFi
N2IwMjk0ZTQ4YWFkYy4uZjUxZTJmZWIzN2UxZmNmMGZkMGU3OTFhZTY0ZjAzZWU4OGEyYTdjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMzQsNyArMTM0
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVySW1hZ2U6OlJlbmRlcklt
YWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0
eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRl
clJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2lt
YWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1h
Z2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVu
aXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVu
aXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9pbWFnZURldmljZVBpeGVsUmF0
aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKQEAgLTE0
NCw3ICsxNDQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bAogCiBSZW5kZXJJbWFnZTo6UmVu
ZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUlt
YWdlKiBzdHlsZUltYWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURk1vdmUo
c3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdl
KSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1h
Z2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4
IDlkOGE2NTkzNGJhM2ZkMjU0NzRjMzljOTFmZWVjNDNhYTBjOWY5ZjUuLjE1MzI1Y2RhMTY5MDY3
YTU2OTFiODg1YThkZmRjN2FhOTAzNjQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6
ZGVsZXRlTGluZXMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gUmVuZGVySW5s
aW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRmxv
d0JveD4oKnRoaXMpOwogfQogCiBJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFu
ZEFwcGVuZElubGluZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKaW5kZXggZjlmMGQwZDRjZWU2NmMxZjQzZGU1MzJiNjEwMDUzMmJmYjYxNTA4Yy4uMTg1
NDY4NzA1MTZlNGQwZmQ1ZTJiMDI4ZGViM2JjNDBjZTZjOGJmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgICAgICAvLyBJZ25vcmUgbm9uLW92ZXJm
bG93IGxheWVycyBhbmQgcmVmbGVjdGlvbnMuCiAgICAgICAgIGlmIChjaGlsZC0+aXNOb3JtYWxG
bG93T25seSgpICYmICFpc1JlZmxlY3Rpb25MYXllcigqY2hpbGQpKSB7CiAgICAgICAgICAgICBp
ZiAoIW1fbm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAgICAgICAg
ICAgbV9ub3JtYWxGbG93TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7
CiAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0LT5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9
CiAgICAgfQpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXll
cnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yCiAgICAg
aWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93T25seSgpKSB7CiAgICAgICAg
IGF1dG8mIGxheWVyTGlzdCA9ICh6SW5kZXgoKSA+PSAwKSA/IHBvc2l0aXZlWk9yZGVyTGlzdCA6
IG5lZ2F0aXZlWk9yZGVyTGlzdDsKICAgICAgICAgaWYgKCFsYXllckxpc3QpCi0gICAgICAgICAg
ICBsYXllckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOwor
ICAgICAgICAgICAgbGF5ZXJMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4o
KTsKICAgICAgICAgbGF5ZXJMaXN0LT5hcHBlbmQodGhpcyk7CiAgICAgfQogCkBAIC0xMjA2LDcg
KzEyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGJvb2wg
aGFkVHJhbnNmb3JtID0gISFtX3RyYW5zZm9ybTsKICAgICBpZiAoaGFzVHJhbnNmb3JtICE9IGhh
ZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQotICAgICAgICAgICAgbV90
cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOworICAg
ICAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3RyYW5zZm9ybSA9IG51bGxwdHI7CiAgICAg
ICAgIApAQCAtNTUyNyw3ICs1NTI3LDcgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6OnVw
ZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb24KICAgICB9
CiAgICAgCiAgICAgaWYgKCFtX2NsaXBSZWN0c0NhY2hlKQotICAgICAgICBtX2NsaXBSZWN0c0Nh
Y2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKKyAgICAgICAgbV9jbGlw
UmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CiAjaWZuZGVmIE5ERUJV
RwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNUeXBlXSA9
IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyOwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fc2Ny
b2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4dC5vdmVybGF5
U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeTsKQEAgLTYxMDUsNyArNjEwNSw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKENsaXBSZWN0c1R5cGUgdHlwZVRvQ2xlYXIpCiBSZW5kZXJM
YXllckJhY2tpbmcqIFJlbmRlckxheWVyOjplbnN1cmVCYWNraW5nKCkKIHsKICAgICBpZiAoIW1f
YmFja2luZykgewotICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxh
eWVyQmFja2luZz4oKnRoaXMpOworICAgICAgICBtX2JhY2tpbmcgPSBtYWtlVW5pcXVlPFJlbmRl
ckxheWVyQmFja2luZz4oKnRoaXMpOwogICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVD
b21wb3NpdGVkKCp0aGlzKTsKIAogICAgICAgICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5
KCk7CkBAIC02NTIzLDcgKzY1MjMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQo
U3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogCiAgICAg
aWYgKHJlbmRlcmVyKCkuaXNIVE1MTWFycXVlZSgpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5tYXJx
dWVlQmVoYXZpb3IoKSAhPSBNYXJxdWVlQmVoYXZpb3I6Ok5vbmUgJiYgcmVuZGVyZXIoKS5pc0Jv
eCgpKSB7CiAgICAgICAgIGlmICghbV9tYXJxdWVlKQotICAgICAgICAgICAgbV9tYXJxdWVlID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWFy
cXVlZSA9IG1ha2VVbmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7CiAgICAgICAgIG1fbWFycXVl
ZS0+dXBkYXRlTWFycXVlZVN0eWxlKCk7CiAgICAgfSBlbHNlIGlmIChtX21hcnF1ZWUpCiAgICAg
ICAgIG1fbWFycXVlZSA9IG51bGxwdHI7CkBAIC02NzM1LDcgKzY3MzUsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjplbnN1cmVMYXllckZpbHRlcnMoKQogICAgIGlmIChtX2ZpbHRlcnMpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBtX2ZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxh
eWVyRmlsdGVycz4oKnRoaXMpOworICAgIG1fZmlsdGVycyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5
ZXJGaWx0ZXJzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyTGF5ZXJGaWx0
ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKaW5kZXggMjJlZDZkZDdjMDI1MmIxOTUzZGUzYmUxNTM5NzFiMTI5YWUxYzc0Yi4uMTIxZDEy
ZjI2OWY5MGQxM2M2Y2NkZDA5N2I5MjJlM2FkYWNlMjZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE2MjcsNyArMTYyNyw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5nU3RhY2soVmVj
dG9yPENvbXBvc2l0ZWRDbGlwRGF0YT4mCiAgICAgfQogICAgIAogICAgIGlmICghbV9hbmNlc3Rv
ckNsaXBwaW5nU3RhY2spIHsKLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3RhY2sgPSBzdGQ6
Om1ha2VfdW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3ZlKGNsaXBwaW5n
RGF0YSkpOworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9IG1ha2VVbmlxdWU8TGF5
ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7CiAgICAgICAg
IExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJsYXllciAiIDw8ICZtX293
bmluZ0xheWVyIDw8ICIgYW5jZXN0b3JDbGlwcGluZ1N0YWNrICIgPDwgKm1fYW5jZXN0b3JDbGlw
cGluZ1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3OCwxNyArMzE3
OCwxNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRp
bWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbQogICAgICAgICAKICAgICAgICAgYm9vbCBp
c0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkgPT0gMTsKICAgICAgICAgaWYg
KChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJh
bWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSkpCi0gICAgICAgICAgICB0
cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CisgICAgICAgICAg
ICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CiAKICAgICAgICAgaWYg
KChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1l
LmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNp
dHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oa2V5
LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVj
dG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVT
dHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgoaGFzRmlsdGVyICYmIGlzRmly
c3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NT
UHJvcGVydHlGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1h
a2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRl
cigpLCB0ZikpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwog
CiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICAgICAgaWYgKChoYXNCYWNrZHJvcEZp
bHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWlu
c1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpKQotICAgICAgICAgICAg
YmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0
aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKKyAg
ICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFu
aW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCksIHRmKSk7
CiAjZW5kaWYKICAgICB9CiAKQEAgLTMyNDMsOCArMzI0Myw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQg
cHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogb3BhY2l0eUFuaW0gPSB0b1N0eWxlLT50
cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KTsKICAgICAgICAgaWYgKG9w
YWNpdHlBbmltICYmICFvcGFjaXR5QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAg
ICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0
eU9wYWNpdHkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxl
LT5vcGFjaXR5KCkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0
eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtl
VW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5
bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VV
bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUt
Pm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkg
dXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5k
ZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYg
KG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEZsb2F0U2l6ZSgp
LCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24o
QW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAg
IC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlzaWJsZSB3aGVuIHRo
ZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9wYWNpdHkuCkBAIC0zMjU4LDgg
KzMyNTgsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJs
ZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRp
b24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJv
cGVydHlUcmFuc2Zvcm0pOwogICAgICAgICBpZiAodHJhbnNmb3JtQW5pbSAmJiAhdHJhbnNmb3Jt
QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFs
dWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKTsKLSAgICAg
ICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOwotICAgICAgICAgICAg
dHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlv
blZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3Jt
VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigwLCBmcm9t
U3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0
KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5zZm9y
bSgpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJh
bnNmb3JtVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgp
KS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JU
cmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgewogICAg
ICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9ybSBpcyB2
aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgdHJhbnNm
b3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgqdG9TdHlsZSk7CkBAIC0zMjcy
LDggKzMyNzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRv
dWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmlt
YXRpb24qIGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJv
cGVydHlGaWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+aXNF
bXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZp
bHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRlclZl
Y3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJv
bVN0eWxlLT5maWx0ZXIoKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6
Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5maWx0ZXIoKSkp
OworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1h
dGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJW
ZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUt
PmZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRp
b24oZmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6
YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlciksIHRpbWVP
ZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3Qg
ZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBm
aW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVycygqdG9TdHlsZSk7CkBA
IC0zMjg3LDggKzMyODcsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0
aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25z
dCBBbmltYXRpb24qIGJhY2tkcm9wRmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKICAgICAgICAgaWYgKGJh
Y2tkcm9wRmlsdGVyQW5pbSAmJiAhYmFja2Ryb3BGaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVy
YXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgYmFja2Ryb3BGaWx0ZXJW
ZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKLSAgICAgICAgICAg
IGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1h
dGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKLSAgICAgICAgICAg
IGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1h
dGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBi
YWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1
ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJv
cEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwg
dG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NM
YXllci0+YWRkQW5pbWF0aW9uKGJhY2tkcm9wRmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgYmFj
a2Ryb3BGaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlv
bihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewog
ICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGJhY2tkcm9wIGZp
bHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmlu
YWwgYmFja2Ryb3AgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVwZGF0ZUJhY2tkcm9wRmlsdGVy
cygqdG9TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCmluZGV4IGFiZTRkNGQ2NzVhMjIxODZlMmVhODlkNDEyZmZhODE1Mzhj
NWM5MjkuLjMyMTIyOWQ2ZjIzY2ZhZTY2YTA1YTUyODA4ZGQwYjBjYmE4YzE0NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBA
IC0yOTUsNyArMjk1LDcgQEAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBv
c2l0b3IoUmVuZGVyVmlldyYgcmVuZGVyVmlldykKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGlmIChtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGxhdGZvcm1XaWRnZXQoKSkKLSAg
ICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCku
Y2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKKyAgICAgICAgbV9sZWdhY3lTY3Jv
bGxpbmdMYXllckNvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdM
YXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29t
cG9zaXRvcigpKTsKICNlbmRpZgogfQogCkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2goY29uc3QgR3Jh
cGhpY3NMYXllcioKIHsKICAgICBpZiAoIW1fbGF5ZXJVcGRhdGVyKSB7CiAgICAgICAgIFBsYXRm
b3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9IHBhZ2UoKS5jaHJvbWUoKS5kaXNwbGF5SUQoKTsKLSAg
ICAgICAgbV9sYXllclVwZGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRh
dGVyPigqdGhpcywgZGlzcGxheUlEKTsKKyAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBtYWtlVW5p
cXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKICAgICB9CiAgICAg
CiAgICAgbV9sYXllclVwZGF0ZXItPnNjaGVkdWxlVXBkYXRlKCk7CkBAIC00NzkyLDcgKzQ3OTIs
NyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVy
QWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxW
aWV3cG9ydENvbnN0cmFpbnRzPiBjb25zdHJhaW50czsKICAgICAgICAgaWYgKGxheWVyLT5yZW5k
ZXJlcigpLmlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGNvbnN0cmFpbnRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNv
bXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CisgICAg
ICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENv
bnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKCps
YXllcikpOwogICAgICAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RvdWNoU2Ny
b2xsYWJsZUxheWVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChjb21wb3NpdG9yLmlzQXN5
bmNTY3JvbGxhYmxlU3RpY2t5TGF5ZXIoKmxheWVyLCAmZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxl
TGF5ZXIpICYmIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7
CkBAIC00ODAwLDcgKzQ4MDAsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29v
cmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogICAgICAgICAg
ICAgICAgIHN0aWNreUNvbnRhaW5lck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NM
YXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5i
YWNraW5nKCktPnNjcm9sbENvbnRhaW5lckxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNGaXhlZFBv
c2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxG
aXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlRml4ZWRW
aWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAgICAgICAgY29uc3RyYWludHMgPSBt
YWtlVW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNv
bXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggYmY2NDVjZDQxYjg5MTIxMmQ3ZjVhMzAzODZlZjlj
YTU0YmZhNDYwMi4uOGRkMDM5YmFmZGE2MzUzOGNlMzIxM2RjMzEzNTYwZmFhOGE0YmRmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApA
QCAtMTA3LDYgKzEwNyw3IEBAIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFNjcm9sbENvb3Jk
aW5hdGlvblJvbGU+IGFsbFNjcm9sbENvb3JkaW5hdGlvblJvbGVzKCkKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiBjbGFzcyBMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9y
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMZWdhY3lXZWJL
aXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yKENocm9tZUNsaWVudCYgY2hyb21lQ2xpZW50LCBi
b29sIGNvb3JkaW5hdGVWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKQogICAgICAgICA6IG1fY2hy
b21lQ2xpZW50KGNocm9tZUNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAppbmRleCA0Yjg2ZmUyYWQxNzVkY2U4NmFkMzg1
MmJkZmMxNTJmZDEzMDhkNDVlLi4xMjhjOTZkYWUwYjMxMDA2Y2EyNWQ1YTU2YzcyMGJjODkwZDM0
ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDo6ZGVzdHJveUxheWVyKCkKIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRlTGF5
ZXIoKQogewogICAgIEFTU0VSVCghbV9sYXllcik7Ci0gICAgbV9sYXllciA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKKyAgICBtX2xheWVyID0gbWFrZVVuaXF1ZTxSZW5k
ZXJMYXllcj4oKnRoaXMpOwogICAgIHNldEhhc0xheWVyKHRydWUpOwogICAgIG1fbGF5ZXItPmlu
c2VydE9ubHlUaGlzTGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpbmVCcmVhay5jcHAKaW5kZXggYmM1NTI3YjhjNDZhNGRlMDY2ZjY5ZTVhMzEwYzg4NjgxOTZm
YzIzYS4uMWFhZTA5ZDAwYjI2ZWEzY2FkZWE4NjcyZTI3NzkyOWJmZDE3YTYyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgaW50IFJlbmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFz
ZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUVsZW1l
bnRCb3g+IFJlbmRlckxpbmVCcmVhazo6Y3JlYXRlSW5saW5lQm94KCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckxpbmVC
cmVhazo6c2V0SW5saW5lQm94V3JhcHBlcihJbmxpbmVFbGVtZW50Qm94KiBpbmxpbmVCb3gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3Bw
CmluZGV4IDliYjlhNTM5ZDY2NDJkZjkwMDI2YTc4MmFmOGNmODRkYzQ5ZGEyYTkuLjQxMDNkYWQ0
ODQ0ZGQyNGEzMDJhNzMyYWYyMjE5YWM5MDAwMWNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCkBAIC00Miw3ICs0Miw3IEBA
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJNdWx0aUNvbHVtbkZsb3cpOwogCiBS
ZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyhEb2N1bWVudCYgZG9j
dW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGcmFnbWVudGVkRmxvdyhk
b2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3NwYW5uZXJNYXAoc3RkOjptYWtlX3Vu
aXF1ZTxTcGFubmVyTWFwPigpKQorICAgICwgbV9zcGFubmVyTWFwKG1ha2VVbmlxdWU8U3Bhbm5l
ck1hcD4oKSkKICAgICAsIG1fbGFzdFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVt
bkNvdW50KDEpCiAgICAgLCBtX2NvbHVtbldpZHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDRkYTNiZDczNzcxYmExNzE5MGVhYzM1ZGE2MzhlMjQz
ZjE5MDI5MDcuLjBiZjUxOTNkZTQ4NDQ1YmNjNjc3ZTkxNGU4YWQzZGY4MWNlYjgyZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODkzLDcgKzE4OTMs
NyBAQCBjb25zdCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmpl
Y3Q6OnJhcmVEYXRhKCkgY29uc3QKIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGEm
IFJlbmRlck9iamVjdDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRy
dWUpOwotICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwog
fQogCiB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggNmQ1
NmI1ZWNhMmM2YjI3NjhhZmJiMmQ0Y2ZmMGFjMDg4MmU5ZmRjNi4uMGRmZTI4Mjc2NGY0MDhiNjIw
YmVmNWQ5ZjU4ZTg4YTZjYzc2YzA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik7CiAKIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRW1i
ZWRkZWRPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3NuYXBzaG90UmVz
b3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9z
bmFwc2hvdFJlc291cmNlKG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsKICAg
ICBtX3NuYXBzaG90UmVzb3VyY2UtPmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMTg2Y2E4NzBlZDEwOTEzZDU4Yjg1NDll
Yjk2ZGUzMzZlMzQ1NTM1OS4uZTkxYTEzMzcxOTkxMmQxOGZhNTVlMzZkODM1NTg4NTdjMmQxOGIz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xMzcsOSAr
MTM3LDkgQEAgdm9pZCBSZW5kZXJUYWJsZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
IGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICAgICAgLy8gQWNjb3JkaW5nIHRv
IHRoZSBDU1MyIHNwZWMsIHlvdSBvbmx5IHVzZSBmaXhlZCB0YWJsZSBsYXlvdXQgaWYgYW4KICAg
ICAgICAgLy8gZXhwbGljaXQgd2lkdGggaXMgc3BlY2lmaWVkIG9uIHRoZSB0YWJsZS4gIEF1dG8g
d2lkdGggaW1wbGllcyBhdXRvIHRhYmxlIGxheW91dC4KICAgICAgICAgaWYgKHN0eWxlKCkudGFi
bGVMYXlvdXQoKSA9PSBUYWJsZUxheW91dFR5cGU6OkZpeGVkICYmICFzdHlsZSgpLmxvZ2ljYWxX
aWR0aCgpLmlzQXV0bygpKQotICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91
bmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0
ID0gbWFrZVVuaXF1ZTxGaXhlZFRhYmxlTGF5b3V0Pih0aGlzKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8QXV0b1RhYmxlTGF5b3V0
Pih0aGlzKTsKKyAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBtYWtlVW5pcXVlPEF1dG9UYWJs
ZUxheW91dD4odGhpcyk7CiAgICAgfQogCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBp
bnZhbGlkYXRlIGNvbGxhcHNlZCBib3JkZXJzIGNhY2hlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCmluZGV4IGFhZDBjMTQ3ZjExZDM5YjNhZDE2Y2FkZGMxNTNjMzIyZTky
ZDdhMGEuLmI2MzA1ZGU1ZjYzMTZjNGRiMjYwYTc5OWNkMTE2YmJkMWFlNTQ0NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHZv
aWQgUmVuZGVyVGV4dDo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQogCiBzdGQ6OnVu
aXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEJveD4oKnRoaXMpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJU
ZXh0Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lVGV4dEJveCYgdGV4dEJveCkKQEAgLTE1NDUsNyAr
MTU0NSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFy
YWN0ZXIodW5zaWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwCiAgICAgICAgIHJldHVybjsKICAgICBh
dXRvJiBzZWN1cmVUZXh0VGltZXIgPSBzZWN1cmVUZXh0VGltZXJzKCkuYWRkKHRoaXMsIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNlY3VyZVRleHRUaW1lcikKLSAgICAgICAg
c2VjdXJlVGV4dFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlz
KTsKKyAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gbWFrZVVuaXF1ZTxTZWN1cmVUZXh0VGltZXI+
KCp0aGlzKTsKICAgICBzZWN1cmVUZXh0VGltZXItPnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlw
ZWRDaGFyYWN0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
aW5kZXggYzE0NDUxYTE4ZWVhN2E1NzFhMjc3Nzg5OGE3OWNjOGI0M2ZmMzE0Mi4uNWZlYzY3OGM2
YmI1ZGYwZTQ5MjJiMDEyYzNmMjY4ZGJhYjRhN2I2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVw
YWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYgcmVwYWludFJlY3QpIGNvbnN0CiAg
ICAgLy8gRklYTUU6IE1heWJlIHRoZXJlIHNob3VsZCBiZSBhIHJlZ2lvbiB0eXBlIHRoYXQgZG9l
cyB0aGlzIGF1dG9tYXRpY2FsbHkuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1S
ZXBhaW50UmVnaW9uR3JpZFNpemUgPSAxNiAqIDE2OwogICAgIGlmIChtX2FjY3VtdWxhdGVkUmVw
YWludFJlZ2lvbi0+Z3JpZFNpemUoKSA+IG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUpCi0g
ICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdp
b24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMoKSk7CisgICAgICAgIG1fYWNj
dW11bGF0ZWRSZXBhaW50UmVnaW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRS
ZXBhaW50UmVnaW9uLT5ib3VuZHMoKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6Zmx1c2hBY2N1
bXVsYXRlZFJlcGFpbnRSZWdpb24oKSBjb25zdApAQCAtNzI0LDcgKzcyNCw3IEBAIGJvb2wgUmVu
ZGVyVmlldzo6dXNlc0NvbXBvc2l0aW5nKCkgY29uc3QKIFJlbmRlckxheWVyQ29tcG9zaXRvciYg
UmVuZGVyVmlldzo6Y29tcG9zaXRvcigpCiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0b3IpCi0gICAg
ICAgIG1fY29tcG9zaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9y
PigqdGhpcyk7CisgICAgICAgIG1fY29tcG9zaXRvciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJD
b21wb3NpdG9yPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fY29tcG9zaXRvcjsKIH0KQEAgLTc0
NSw3ICs3NDUsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bAogSW1hZ2VRdWFsaXR5Q29udHJv
bGxlciYgUmVuZGVyVmlldzo6aW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFt
X2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIpCi0gICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4oKnRoaXMpOworICAg
ICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEltYWdlUXVhbGl0eUNv
bnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsK
IH0KIApAQCAtODM0LDcgKzgzNCw3IEBAIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVs
YXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKFJlbmRlclZpZXcqIHZpZXcpCiAKICAgICBt
X3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRSZWdpb24gPSAhIXJvb3RSZW5kZXJWaWV3LT5tX2FjY3Vt
dWxhdGVkUmVwYWludFJlZ2lvbjsKICAgICBpZiAoIW1fd2FzQWNjdW11bGF0aW5nUmVwYWludFJl
Z2lvbikKLSAgICAgICAgcm9vdFJlbmRlclZpZXctPm1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KCk7CisgICAgICAgIHJvb3RSZW5kZXJWaWV3LT5t
X2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigpOwogICAgIG1f
cm9vdFZpZXcgPSBtYWtlV2Vha1B0cigqcm9vdFJlbmRlclZpZXcpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggZmRjZDU5YzUyYzVmMzI4ZjUy
MDlmMDBjMWY4ZDgxNmFkYzVmNzY2OC4uNDQ1NTg0MWFmMzJmZjE1MjUyY2ZhMjhlZDhhNjljM2U0
OWYxZjMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApA
QCAtMTI5LDcgKzEyOSw3IEBAIGZsb2F0IFJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMoY29u
c3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsICBib29sIGx0ciwgZmxvCiAgICAgICAgIGdFbGxp
cHNpc0JveE1hcCA9IG5ldyBFbGxpcHNpc0JveE1hcCgpOwogCiAgICAgQVNTRVJUKCFoYXNFbGxp
cHNpc0JveCgpKTsKLSAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0
KHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNp
c1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2lj
YWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNI
b3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBhdXRv
KiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIG1ha2VVbmlxdWU8RWxs
aXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAt
IChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWln
aHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0
ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICBzZXRIYXNFbGxpcHNpc0JveCh0cnVlKTsKICAgICAv
LyBGSVhNRTogRG8gd2UgbmVlZCBhbiBSVEwgdmVyc2lvbiBvZiB0aGlzPwogICAgIGlmIChsdHIg
JiYgKHgoKSArIGxvZ2ljYWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0aCkgPD0gYmxvY2tSaWdodEVk
Z2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IDdkZjI4
Mjg4YTRkNTVjMmM3ZDI2YWQ0YmMwMTc2ZDBiNzYxNzgzNjQuLjI0N2U1NWMwNjllOWZlODgxY2Fm
NGJmYmMyYjRhZWYxOWUzNjE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFJvb3RJbmxpbmVCb3ggOiBwdWJsaWMg
SW5saW5lRmxvd0JveCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJvb3RJbmxpbmVCb3g+CiAgICAg
ICAgIGlmIChtX2Zsb2F0cykKICAgICAgICAgICAgIG1fZmxvYXRzLT5hcHBlbmQobWFrZVdlYWtQ
dHIoZmxvYXRpbmdCb3gpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mbG9hdHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPENsZWFuTGluZUZsb2F0TGlzdD4oMSwgbWFrZVdlYWtQdHIoZmxvYXRp
bmdCb3gpKTsKKyAgICAgICAgICAgIG1fZmxvYXRzID0gbWFrZVVuaXF1ZTxDbGVhbkxpbmVGbG9h
dExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgfQogCiAgICAgdm9pZCBy
ZW1vdmVGbG9hdChSZW5kZXJCb3gmIGZsb2F0aW5nQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAppbmRleCBlYzVlNzM1NmE2NGQxMjQ5ZGRh
MTE0N2U4YmJhMzFmNDc5MGI0YmYyLi5iOWJhZDBhMDlmMjliZjdhZGM5ZDMzM2Y0ZTgxMWMzZWEx
YjkzZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFu
Z2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VE
YXRhLmNwcApAQCAtMTMxLDEzICsxMzEsMTMgQEAgc3RhdGljIFNlbGVjdGlvbkRhdGEgY29sbGVj
dChjb25zdCBTZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRleHQmIHNlbGVjdGlvbiwgYm9vbAogICAg
IHdoaWxlIChzdGFydCAmJiBzdGFydCAhPSBzdG9wKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVu
ZGVyZXJGb3JTZWxlY3Rpb24oKnN0YXJ0LCBzZWxlY3Rpb24pKSB7CiAgICAgICAgICAgICAvLyBC
bG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBn
YXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIG9sZFNlbGVj
dGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxl
Y3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKKyAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEu
cmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3Rh
cnQsIHRydWUpKTsKICAgICAgICAgICAgIGlmIChyZXBhaW50RGlmZmVyZW5jZSkgewogICAgICAg
ICAgICAgICAgIGZvciAoYXV0byogYmxvY2sgPSBjb250YWluaW5nQmxvY2tCZWxvd1ZpZXcoKnN0
YXJ0KTsgYmxvY2s7IGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpibG9jaykpIHsK
ICAgICAgICAgICAgICAgICAgICAgYXV0byYgYmxvY2tJbmZvID0gb2xkU2VsZWN0aW9uRGF0YS5i
bG9ja3MuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9j
a1NlbGVjdGlvbkluZm8+KCpibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9
IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjEzLDEzICsyMTMsMTMgQEAg
SW50UmVjdCBTZWxlY3Rpb25SYW5nZURhdGE6OmNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNv
bnRlbnQgY2xpcFRvVmlzaWJsZUNvbnQKICAgICAgICAgaWYgKChzdGFydC0+Y2FuQmVTZWxlY3Rp
b25MZWFmKCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgc3RhcnQg
PT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQogICAgICAgICAgICAgJiYgc3RhcnQtPnNlbGVj
dGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAg
ICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1h
cmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIHJl
bmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4o
KnN0YXJ0LCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVz
KSk7CisgICAgICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBtYWtlVW5pcXVlPFJlbmRlclNl
bGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJs
ZUNvbnRlbnQ6OlllcykpOwogICAgICAgICAgICAgYXV0byogYmxvY2sgPSBzdGFydC0+Y29udGFp
bmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGlsZSAoYmxvY2sgJiYgIWlzPFJlbmRlclZpZXc+
KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0
aW9uSW5mbz4mIGJsb2NrSW5mbyA9IHJlbmRlcmVycy5hZGQoYmxvY2ssIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpibG9jaywgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0g
Q2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olllcyk7CisgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0g
bWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250
ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOwogICAgICAgICAgICAgICAgIGJsb2Nr
ID0gYmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0yODEsNyArMjgxLDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENv
bnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tSZXAKICAgICBzZWxlY3Rpb25J
dGVyYXRvciA9IFNlbGVjdGlvbkl0ZXJhdG9yKHNlbGVjdGlvblN0YXJ0KTsKICAgICBmb3IgKGF1
dG8qIGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvblN0YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYg
Y3VycmVudFJlbmRlcmVyICE9IHNlbGVjdGlvbkVuZDsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0
aW9uSXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxl
Y3Rpb24oKmN1cnJlbnRSZW5kZXJlciwgbV9zZWxlY3Rpb25Db250ZXh0KSkgewotICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRy
dWUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNl
bGVjdGlvbkluZm8gPSBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVu
ZGVyZXIsIHRydWUpOwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgICAgICAgICAg
Zm9yIChhdXRvJiByZWN0IDogc2VsZWN0aW9uSW5mby0+Y29sbGVjdGVkU2VsZWN0aW9uUmVjdHMo
KSkKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRSZWN0KHNlbGVj
dGlvbkluZm8tPnJlcGFpbnRDb250YWluZXIoKSwgcmVjdCk7CkBAIC0yOTQsNyArMjk0LDcgQEAg
dm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlv
biwgUmVwYWludE1vZGUgYmxvY2tSZXAKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gbmV3U2VsZWN0ZWRCbG9ja3Mu
YWRkKGNvbnRhaW5pbmdCbG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAg
ICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rp
b25JbmZvPigqY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBt
YWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CiAg
ICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrID0gY29udGFpbmluZ0Jsb2NrLT5jb250YWlu
aW5nQmxvY2soKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAgICAgICAgICAg
ICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRHYXBSZWN0cyhibG9ja0luZm8tPnJlcGFpbnRD
b250YWluZXIoKSwgYmxvY2tJbmZvLT5yZWN0cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCA4Yzc2NmU2ZGUyYzc0YWQwMzc5NzMzMzFm
YzdmNWE0NzQ5MDE1YjhlLi5jMzYyZjRlNTdiMDBmOWNlMzlhNzNlY2U4MTFjMmM4MzJkNjUwYmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBA
IC05OTcsNyArOTk3LDcgQEAgTGF5b3V0OjpMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0
b3IsIHVuc2lnbmVkIGxpbmVDb3VudCwgY29uc3QgUmVuZGVyQmxvY2sKIGNvbnN0IFJ1blJlc29s
dmVyJiBMYXlvdXQ6OnJ1blJlc29sdmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcnVuUmVzb2x2
ZXIpCi0gICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1blJlc29sdmVy
PihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7CisgICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBt
YWtlVW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7CiAgICAg
cmV0dXJuICptX3J1blJlc29sdmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggMWJmOThlNGVlYjQz
YmEyMmNkYTRlNmY1ZDNiYzJhNWY5ZmM0YjRiNy4uMDYyNWIxNmJkNTQzMTk3M2VkMzFkZTk5OGFl
ZDg4OWIwMTJiYTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgcGFp
bnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQs
IFBhaW50SW5mbyYgcGFpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gZGVidWdT
aGFkb3cgPSBudWxscHRyOwogICAgIGlmIChmbG93LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91
dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkgewotICAgICAgICBkZWJ1Z1NoYWRvdyA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6
Ok5vcm1hbCwgdHJ1ZSwgQ29sb3IoMCwgMjU1LCAwLCAyMDApKTsKKyAgICAgICAgZGVidWdTaGFk
b3cgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRv
d1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CiAgICAgICAgIHRl
eHRQYWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRvdy5nZXQoKSk7CiAgICAgfQogCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBnZW5lcmF0ZUxpbmVCb3hUcmVlKFJlbmRlckJsb2NrRmxvdyYgZmxv
dywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiAgICAgICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+IGJp
ZGlSdW5zOwogICAgICAgICBmb3IgKGF1dG8gaXQgPSByYW5nZS5iZWdpbigpOyBpdCAhPSByYW5n
ZS5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgYXV0byBydW4gPSAqaXQ7Ci0gICAgICAgICAg
ICBiaWRpUnVucy5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxT
dGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVu
ZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKKyAgICAgICAg
ICAgIGJpZGlSdW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlSdW4+KHJ1bi5sb2NhbFN0YXJ0
KCksIHJ1bi5sb2NhbEVuZCgpLCBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJ1bi5yZW5kZXJl
cigpKSwgYmlkaUNvbnRleHQucHRyKCksIFVfTEVGVF9UT19SSUdIVCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgTGluZUluZm8gbGluZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRBdXRvU2l6aW5nLmNwcAppbmRleCAzYmExMzBkNDU1OWQ3MjkyZDg5MWY1NTNjZjE0ODBmODY2
YmIyYmFkLi40YjQzZTZhY2JlMGVlZGFmNGVhZjRkMmU1ZDVhNDQ2MzkwNjA1M2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKQEAgLTIyNSw3ICsyMjUs
NyBAQCB2b2lkIFRleHRBdXRvU2l6aW5nOjphZGRUZXh0Tm9kZShUZXh0JiBub2RlLCBmbG9hdCBj
YW5kaWRhdGVTaXplKQogICAgIExPRyhUZXh0QXV0b3NpemluZywgIiBhZGRBdXRvU2l6ZWROb2Rl
ICVwIGNhbmRpZGF0ZVNpemU9JWYiLCAmbm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3RleHROb2Rlcy5hZGQ8VGV4dEF1dG9TaXppbmdIYXNoVHJhbnNsYXRvcj4o
bm9kZS5yZW5kZXJlcigpLT5zdHlsZSgpLCBudWxscHRyKTsKICAgICBpZiAoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7CiAgICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkVGV4dE5vZGUobm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAppbmRl
eCAyYjFjMWZhMDNjYTFjNTc1NjkwMjc3YTVlODEyODcxMDEwZDQ0NjdlLi5kMTE2NjE1YTcyNmM1
YTBhOTQzZDliOWY2ZTA5NDBiOTVlNjkwOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgTGluZUJyZWFr
ZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBM
aW5lSW5mbyYKICAgICAgICAgaWYgKG9iamVjdC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewog
ICAgICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25zKG1fYmxvY2ssIGRvd25jYXN0PFJlbmRlckJv
eD4ob2JqZWN0KSwgd2lkdGguc2hvdWxkSW5kZW50VGV4dCgpKTsKICAgICAgICAgICAgIGlmIChv
YmplY3Quc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgewotICAgICAgICAg
ICAgICAgIHJlc29sdmVyLnJ1bnMoKS5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVu
PigwLCAxLCBvYmplY3QsIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKG1ha2VVbmlxdWU8QmlkaVJ1
bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CiAg
ICAgICAgICAgICAgICAgbGluZUluZm8uaW5jcmVtZW50UnVuc0Zyb21MZWFkaW5nV2hpdGVzcGFj
ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG9iamVjdC5pc0Zsb2F0aW5n
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3Bw
CmluZGV4IDRiMTU5N2U5ZjIxYzljZDRiMmYwZDg4MzQ3NDQ3NzVmMWQ4YmRlMDEuLmQ1MjA5MmI2
OGVkOGUyYzhmZGE1MTVjOTBjZDUyMjM1NmQ2NTVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIEludFNo
YXBlSW50ZXJ2YWwgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OmludGVydmFsQXQoaW50IHkpIGNv
bnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50
ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50IHNoYXBlTWFyZ2luKSBjb25z
dAogewogICAgIGludCBtYXJnaW5JbnRlcnZhbHNTaXplID0gKG9mZnNldCgpID4gc2hhcGVNYXJn
aW4pID8gc2l6ZSgpIDogc2l6ZSgpIC0gb2Zmc2V0KCkgKiAyICsgc2hhcGVNYXJnaW4gKiAyOwot
ICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4o
bWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7Cisg
ICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5J
bnRlcnZhbHNTaXplLCBzdGQ6Om1heChzaGFwZU1hcmdpbiwgb2Zmc2V0KCkpKTsKICAgICBNYXJn
aW5JbnRlcnZhbEdlbmVyYXRvciBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvcihzaGFwZU1hcmdpbik7
CiAKICAgICBmb3IgKGludCB5ID0gYm91bmRzKCkueSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyAr
K3kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggMzAy
MzFhMGJlMWJiYzYzZTRiZTNkMjUwNTEyYmVkM2QxOTU5NDA5OS4uZjVlZmVmZGQzMmIzMDU0N2Fk
YmQ4ZWIwOGY1NGU2M2IwMjQwZmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHAKQEAgLTQ2LDI0ICs0NiwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVJbnNldFNoYXBlKGNvbnN0IEZsb2F0Um91
bmRlZFJlY3QmIGJvdW5kcykKIHsKICAgICBBU1NFUlQoYm91bmRzLnJlY3QoKS53aWR0aCgpID49
IDAgJiYgYm91bmRzLnJlY3QoKS5oZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3hTaGFw
ZT4oYm91bmRzKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlQ2ly
Y2xlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBmbG9hdCByYWRpdXMpCiB7CiAgICAg
QVNTRVJUKHJhZGl1cyA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5n
bGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRp
dXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlY3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAt
IHJhZGl1cywgY2VudGVyLnkoKSAtIHJhZGl1cywgcmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRT
aXplKHJhZGl1cywgcmFkaXVzKSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IGNyZWF0ZUVsbGlwc2VTaGFwZShjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0
U2l6ZSYgcmFkaWkpCiB7CiAgICAgQVNTRVJUKHJhZGlpLndpZHRoKCkgPj0gMCAmJiByYWRpaS5o
ZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFw
ZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFk
aWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54
KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndp
ZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxTaGFwZT4gY3JlYXRlUG9seWdvblNoYXBlKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQb2x5Z29uU2hhcGU+KFdURk1vdmUodmVydGljZXMpLCBmaWxsUnVs
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2Vz
KSwgZmlsbFJ1bGUpOwogfQogCiBzdGF0aWMgaW5saW5lIEZsb2F0UmVjdCBwaHlzaWNhbFJlY3RU
b0xvZ2ljYWwoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBl
LCBjb25zdCBMYQogICAgICAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgdmFsdWVzID0gcG9seWdv
bi52YWx1ZXMoKTsKICAgICAgICAgc2l6ZV90IHZhbHVlc1NpemUgPSB2YWx1ZXMuc2l6ZSgpOwog
ICAgICAgICBBU1NFUlQoISh2YWx1ZXNTaXplICUgMikpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RmxvYXRQb2lu
dD4+KHZhbHVlc1NpemUgLyAyKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZh
bHVlc1NpemU7IGkgKz0gMikgewogICAgICAgICAgICAgRmxvYXRQb2ludCB2ZXJ0ZXgoCiAgICAg
ICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aCh2YWx1ZXMuYXQoaSksIGJveFdpZHRoKSwK
QEAgLTE3OSw3ICsxNzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVS
YXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogCiAgICAgSW50UmVj
dCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChpbWFnZVIpOwogICAgIEludFJlY3QgbWFyZ2lu
UmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwotICAgIGF1dG8gaW50ZXJ2YWxzID0gc3Rk
OjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwg
LW1hcmdpblJlY3QueSgpKTsKKyAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAg
ICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgVW5hY2Nl
bGVyYXRlZCk7CiAKQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNo
YXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byByYXN0ZXJTaGFwZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmFzdGVyU2hhcGU+KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwor
ICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGlu
dGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5n
TW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsK
ICAgICByZXR1cm4gcmFzdGVyU2hhcGU7CkBAIC0yMzAsNyArMjMwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlQm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3QmIHJvdW5k
ZWRSZWN0LCBXcmkKIAogICAgIEZsb2F0UmVjdCByZWN0KDAsIDAsIHJvdW5kZWRSZWN0LnJlY3Qo
KS53aWR0aCgpLCByb3VuZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkpOwogICAgIEZsb2F0Um91bmRl
ZFJlY3QgYm91bmRzKHJlY3QsIHJvdW5kZWRSZWN0LnJhZGlpKCkpOwotICAgIGF1dG8gc2hhcGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJveFNoYXBlPihib3VuZHMpOworICAgIGF1dG8gc2hhcGUgPSBt
YWtlVW5pcXVlPEJveFNoYXBlPihib3VuZHMpOwogICAgIHNoYXBlLT5tX3dyaXRpbmdNb2RlID0g
d3JpdGluZ01vZGU7CiAgICAgc2hhcGUtPm1fbWFyZ2luID0gbWFyZ2luOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IGNk
OTRmODljMDJiMGI4YzEzNTE5NDU3ZTQ0ZDBkZGFmNmQ4N2YxZmEuLjk0ODQzMTcxOTQ3YzAyMzA5
YWI3ZjRmYjFiOTdjMjYzODgyZWUzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3Mg
U2hhcGVPdXRzaWRlSW5mbyBmaW5hbCB7CiAgICAgICAgIEluZm9NYXAmIGluZm9NYXAgPSBTaGFw
ZU91dHNpZGVJbmZvOjppbmZvTWFwKCk7CiAgICAgICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBp
bmZvID0gaW5mb01hcC5nZXQoJmtleSkpCiAgICAgICAgICAgICByZXR1cm4gKmluZm87Ci0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQoJmtleSwgc3RkOjptYWtlX3VuaXF1ZTxTaGFw
ZU91dHNpZGVJbmZvPihrZXkpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBpbmZvTWFwLmFkZCgm
a2V5LCBtYWtlVW5pcXVlPFNoYXBlT3V0c2lkZUluZm8+KGtleSkpOwogICAgICAgICByZXR1cm4g
KnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUlu
Zm8oY29uc3QgUmVuZGVyQm94JiBrZXkpIHsgaW5mb01hcCgpLnJlbW92ZSgma2V5KTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMGM5
OGY5MTY2ZjdlMTUyOTcwM2JjZGIyYzhjODNjYzgwYmI3YmYyNC4uNzQ0YzkwYjhmYjNmNTI3Njhh
NTM4ZDIxMzU4MzYyY2E2MzQ4MjdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgUmVmPEJhc2ljU2hhcGU+
IEJhc2ljU2hhcGVQYXRoOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBkb3VibGUgcHJv
Z3Jlc3MpIGMKIAogICAgIGF1dG8mIGZyb21QYXRoID0gZG93bmNhc3Q8QmFzaWNTaGFwZVBhdGg+
KGZyb20pOwogCi0gICAgYXV0byByZXN1bHRpbmdQYXRoQnl0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNWR1BhdGhCeXRlU3RyZWFtPigpOworICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gbWFr
ZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5
dGVTdHJlYW0oKmZyb21QYXRoLm1fYnl0ZVN0cmVhbSwgKm1fYnl0ZVN0cmVhbSwgKnJlc3VsdGlu
Z1BhdGhCeXRlcywgcHJvZ3Jlc3MpOwogCiAgICAgYXV0byByZXN1bHQgPSBCYXNpY1NoYXBlUGF0
aDo6Y3JlYXRlKFdURk1vdmUocmVzdWx0aW5nUGF0aEJ5dGVzKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCmluZGV4IGU3YmIwNjE2NTAyZDk5ZDZkYjQz
OTJiYjQ2OGE5YWI0NjljZTQ5NGEuLjJjMTJkZDliNDBkZDQwYjNjMGJmNjc0OTMyMmFlMmIwZmQx
ZTA3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5o
CkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIEltYWdlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMg
Q29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRS
ZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwK
ICAgICB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVu
dERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IG1ha2VVbmlx
dWU8SW1hZ2VDb250ZW50RGF0YT4obV9pbWFnZS5jb3B5UmVmKCkpOwogICAgICAgICBpbWFnZS0+
c2V0QWx0VGV4dChhbHRUZXh0KCkpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQpAQCAt
MTI2LDcgKzEyNiw3IEBAIGNsYXNzIFRleHRDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250
ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRl
Q29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5h
bDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0
KTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihtX3RleHQpOyB9
CiAKICAgICBTdHJpbmcgbV90ZXh0OwogfTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBDb3Vu
dGVyQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJlbmRlclB0
cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRh
PiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVy
Q29udGVudD4oY291bnRlcigpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvdW50ZXJD
b250ZW50RGF0YT4obWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7CiAgICAg
fQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBtX2NvdW50ZXI7CkBAIC0x
OTAsNyArMTkwLDcgQEAgY2xhc3MgUXVvdGVDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250
ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRl
Q29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5h
bDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3Rl
KCkpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgp
KTsgfQogCiAgICAgUXVvdGVUeXBlIG1fcXVvdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAppbmRleCBmM2Q5MWRjOGRiYzhkOWU0NmM2MDFiOTU4
NDNiOWE5NTJmM2IyZDFkLi4zMDAxNGQwNGY3MGZiOTE4MTc0Mjg3NjAzZmRlYWI3MjM5NTYxNGYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcApAQCAt
NzYsNyArNzYsNyBAQCBGaWxsTGF5ZXI6OkZpbGxMYXllcihGaWxsTGF5ZXJUeXBlIHR5cGUpCiB9
CiAKIEZpbGxMYXllcjo6RmlsbExheWVyKGNvbnN0IEZpbGxMYXllciYgbykKLSAgICA6IG1fbmV4
dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVs
bHB0cikKKyAgICA6IG1fbmV4dChvLm1fbmV4dCA/IG1ha2VVbmlxdWU8RmlsbExheWVyPigqby5t
X25leHQpIDogbnVsbHB0cikKICAgICAsIG1faW1hZ2Uoby5tX2ltYWdlKQogICAgICwgbV94UG9z
aXRpb24oby5tX3hQb3NpdGlvbikKICAgICAsIG1feVBvc2l0aW9uKG8ubV95UG9zaXRpb24pCkBA
IC0xMTcsNyArMTE3LDcgQEAgRmlsbExheWVyOjp+RmlsbExheWVyKCkKIAogRmlsbExheWVyJiBG
aWxsTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBGaWxsTGF5ZXImIG8pCiB7Ci0gICAgbV9uZXh0ID0g
by5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxw
dHI7CisgICAgbV9uZXh0ID0gby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9u
ZXh0KSA6IG51bGxwdHI7CiAKICAgICBtX2ltYWdlID0gby5tX2ltYWdlOwogICAgIG1feFBvc2l0
aW9uID0gby5tX3hQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCmluZGV4IDI0OWJhNDdlNTg0M2VjYzYyZTZmZDRmMjZhZjFjZjUzOGEx
NjNmOWMuLmZiNDNjMjBlNWNlOTllY2UxOWY0NTJmZDlmODc5NjRkODE0YmI3YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjbG9uZShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKIH0KIAogUmVuZGVyU3R5bGUgUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlLCBEaXNwbGF5VHlwZSBkaXNwbGF5KQpAQCAtNDA5LDcgKzQwOSw3IEBAIFJlbmRl
clN0eWxlKiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBwc2V1CiAgICAgUmVuZGVyU3R5bGUqIHJlc3VsdCA9IHBzZXVkby5nZXQo
KTsKIAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMpCi0gICAgICAgIG1fY2FjaGVkUHNl
dWRvU3R5bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQc2V1ZG9TdHlsZUNhY2hlPigpOworICAgICAg
ICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IG1ha2VVbmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsK
IAogICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzLT5hcHBlbmQoV1RGTW92ZShwc2V1ZG8pKTsKIApA
QCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRj
aFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvJiBkYXRhID0gbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tUGFpbnRXYXRj
aGVkUHJvcGVydGllcykKLSAgICAgICAgZGF0YS5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVz
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAgIGRhdGEuY3Vz
dG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+Pigp
OwogICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcy0+YWRkKG5hbWUpOwogfQog
CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFJlZlB0
cjxTdHlsZUltYWdlPiYmIGltYWdlLCBib29sIGFkZCkKIHsKICAgICBpZiAoIWltYWdlKQogICAg
ICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVu
dERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFr
ZVVuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsK
IH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIHN0cmluZywg
Ym9vbCBhZGQpCkBAIC0xMzEwLDEzICsxMzEwLDEzIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENv
bnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQogICAgIGlmIChhZGQgJiYgZGF0
YS5jb250ZW50KSB7CiAgICAgICAgIGF1dG8mIGxhc3QgPSBsYXN0Q29udGVudCgqZGF0YS5jb250
ZW50KTsKICAgICAgICAgaWYgKCFpczxUZXh0Q29udGVudERhdGE+KGxhc3QpKQotICAgICAgICAg
ICAgbGFzdC5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcp
KTsKKyAgICAgICAgICAgIGxhc3Quc2V0TmV4dChtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4o
c3RyaW5nKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byYgdGV4dENvbnRlbnQg
PSBkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KGxhc3QpOwogICAgICAgICAgICAgdGV4dENvbnRl
bnQuc2V0VGV4dCh0ZXh0Q29udGVudC50ZXh0KCkgKyBzdHJpbmcpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgZGF0YS5jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29u
dGVudERhdGE+KHN0cmluZyk7CisgICAgICAgIGRhdGEuY29udGVudCA9IG1ha2VVbmlxdWU8VGV4
dENvbnRlbnREYXRhPihzdHJpbmcpOwogICAgICAgICBhdXRvJiBhbHRUZXh0ID0gZGF0YS5hbHRU
ZXh0OwogICAgICAgICBpZiAoIWFsdFRleHQuaXNOdWxsKCkpCiAgICAgICAgICAgICBkYXRhLmNv
bnRlbnQtPnNldEFsdFRleHQoYWx0VGV4dCk7CkBAIC0xMzI3LDEyICsxMzI3LDEyIEBAIHZvaWQg
UmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBj
b3VudGVyLCBib29sIGFkZCkKIHsKICAgICBpZiAoIWNvdW50ZXIpCiAgICAgICAgIHJldHVybjsK
LSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZN
b3ZlKGNvdW50ZXIpKSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8Q291bnRlckNv
bnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Q29udGVudChRdW90ZVR5cGUgcXVvdGUsIGJvb2wgYWRkKQogewotICAgIHNldENvbnRl
bnQoc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CisgICAg
c2V0Q29udGVudChtYWtlVW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKSwgYWRkKTsKIH0K
IAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHls
ZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKQogewogICAgIGF1dG8mIG1hcCA9IG1fcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY291bnRlckRpcmVjdGl2ZXM7CiAgICAgaWYgKCFtYXAp
Ci0gICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsK
KyAgICAgICAgbWFwID0gbWFrZVVuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOwogICAgIHJl
dHVybiAqbWFwOwogfQogCkBAIC0xNjcxLDE0ICsxNjcxLDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6
OmFkanVzdFRyYW5zaXRpb25zKCkKIEFuaW1hdGlvbkxpc3QmIFJlbmRlclN0eWxlOjplbnN1cmVB
bmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
YW5pbWF0aW9ucykKLSAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmlt
YXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigpOworICAgICAgICBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1h
dGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRp
b25zOwogfQogCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMo
KQogewogICAgIGlmICghbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9u
cykKLSAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlz
dD4oKTsKICAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGVEZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJT
dHlsZURlZnMuY3BwCmluZGV4IDIwYjJhODExNGIwYzhlOWViZDQ4MjcwNzlhOTgyMGYyZWMwZGNk
YzIuLjZlMzdjZjhmYjhhYmE1NWVjMzMwYTk2MDMzYThhOTU0YzdjYjA0YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3Bw
CkBAIC0yMDEsNyArMjAxLDcgQEAgU3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0Rh
dGEoKQogCiBpbmxpbmUgU3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoY29u
c3QgU3R5bGVTaGFkb3dTVkdEYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVTaGFk
b3dTVkdEYXRhPigpCi0gICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gc3RkOjptYWtlX3VuaXF1
ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBzaGFkb3cob3Ro
ZXIuc2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxw
dHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRh
LmNwcAppbmRleCAzZDYxYzk0YzAxNjYxNjA4NThkYWJkODQwOWZjNDA4NjcwZTUwMWNhLi5jMTdl
YWY4NTliMGJmYWE3ZGFiYzAwOGQ0ZTc0MGZjNjMwYTRiODM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCkBAIC0zMyw3ICszMyw3IEBAIFNoYWRv
d0RhdGE6OlNoYWRvd0RhdGEoY29uc3QgU2hhZG93RGF0YSYgbykKICAgICAsIG1fY29sb3Ioby5t
X2NvbG9yKQogICAgICwgbV9zdHlsZShvLm1fc3R5bGUpCiAgICAgLCBtX2lzV2Via2l0Qm94U2hh
ZG93KG8ubV9pc1dlYmtpdEJveFNoYWRvdykKLSAgICAsIG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6
bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgLCBtX25l
eHQoby5tX25leHQgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRy
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggYWQyY2JkOTU3ZWVmODI1NjBjZmIzNTJl
OWY1MGIzOWU2MzNhMjZmZi4uOTZkYmJhMDA3ZTZhNjRhN2Q2OTdhMjlhMjFkNjIxYWQ0NDc1NGI2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIGlubGluZSBTdHlsZVJh
cmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUlu
aGVyaXRlZERhCiAgICAgLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKG8udmlzaXRlZExp
bmtUZXh0RW1waGFzaXNDb2xvcikKICAgICAsIGNhcmV0Q29sb3Ioby5jYXJldENvbG9yKQogICAg
ICwgdmlzaXRlZExpbmtDYXJldENvbG9yKG8udmlzaXRlZExpbmtDYXJldENvbG9yKQotICAgICwg
dGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpv
LnRleHRTaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8g
bWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCBj
dXJzb3JEYXRhKG8uY3Vyc29yRGF0YSkKICAgICAsIGluZGVudChvLmluZGVudCkKICAgICAsIGVm
ZmVjdGl2ZVpvb20oby5lZmZlY3RpdmVab29tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4
IDZmYmIyYjdiMGMzZWIwM2U4NjlhMWVhYWM5MTYxMTE5YzljNjFlOWIuLmJkZDAxOTE1YWEyNzhk
ZDZhNjY0OGZmNGMzZmJkYjNmY2NkMTQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAg
LTEzOSwxMyArMTM5LDEzIEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAgLCBzY3JvbGxT
bmFwQXJlYShvLnNjcm9sbFNuYXBBcmVhKQogI2VuZGlmCiAgICAgLCBjb250ZW50KG8uY29udGVu
dCA/IG8uY29udGVudC0+Y2xvbmUoKSA6IG51bGxwdHIpCi0gICAgLCBjb3VudGVyRGlyZWN0aXZl
cyhvLmNvdW50ZXJEaXJlY3RpdmVzID8gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZl
TWFwPigqby5jb3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRyKQorICAgICwgY291bnRlckRpcmVj
dGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1h
cD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKICAgICAsIGFsdFRleHQoby5hbHRU
ZXh0KQotICAgICwgYm94U2hhZG93KG8uYm94U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFk
b3dEYXRhPigqby5ib3hTaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIGJveFNoYWRvdyhvLmJveFNo
YWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCiAg
ICAgLCB3aWxsQ2hhbmdlKG8ud2lsbENoYW5nZSkKICAgICAsIGJveFJlZmxlY3Qoby5ib3hSZWZs
ZWN0KQotICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFu
aW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKLSAgICAsIHRyYW5zaXRpb25z
KG8udHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5z
aXRpb25zKSA6IG51bGxwdHIpCisgICAgLCBhbmltYXRpb25zKG8uYW5pbWF0aW9ucyA/IG1ha2VV
bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8uYW5pbWF0aW9ucykgOiBudWxscHRyKQorICAgICwgdHJh
bnNpdGlvbnMoby50cmFuc2l0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8udHJh
bnNpdGlvbnMpIDogbnVsbHB0cikKICAgICAsIG1hc2soby5tYXNrKQogICAgICwgbWFza0JveElt
YWdlKG8ubWFza0JveEltYWdlKQogICAgICwgcGFnZVNpemUoby5wYWdlU2l6ZSkKQEAgLTE3MCw3
ICsxNzAsNyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwganVzdGlmeUl0ZW1zKG8u
anVzdGlmeUl0ZW1zKQogICAgICwganVzdGlmeVNlbGYoby5qdXN0aWZ5U2VsZikKICAgICAsIGN1
c3RvbVByb3BlcnRpZXMoby5jdXN0b21Qcm9wZXJ0aWVzKQotICAgICwgY3VzdG9tUGFpbnRXYXRj
aGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBzdGQ6Om1ha2Vf
dW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykg
OiBudWxscHRyKQorICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBh
aW50V2F0Y2hlZFByb3BlcnRpZXMgPyBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3Vz
dG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQogI2lmIEVOQUJMRShQT0lOVEVS
X0VWRU5UUykKICAgICAsIHRvdWNoQWN0aW9ucyhvLnRvdWNoQWN0aW9ucykKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCAy
YzZmMzE3OGVlYjI2YzdiMmMwZDk1YWUxMDhiN2VmY2M2ZTIyYzRlLi4yNGNkZTRiZDYxZTcxNGMy
MzIzYjllNWNkMmNmMjY5ZTI4NDVmOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZW5kZXJTVkdJbWFn
ZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVlKQogICAgICwgbV9uZWVkc1Ry
YW5zZm9ybVVwZGF0ZSh0cnVlKQotICAgICwgbV9pbWFnZVJlc291cmNlKHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShtYWtlVW5p
cXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiAgICAgaW1hZ2VSZXNvdXJjZSgpLmluaXRp
YWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmUuY3BwCmluZGV4IDNjMzEwNTZkMWNhYjFmZWExMDQ5MDc4MGQwMGM4ZGNkMmM3
OTgwNjguLmJhMWNkMDUyZGFkYWExY2UxODQxYzdjMjNjYWYzM2ZhYTRlMzQ3ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgUmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWwKIAogc3RkOjp1bmlxdWVfcHRyPElu
bGluZUZsb3dCb3g+IFJlbmRlclNWR0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCgpCiB7Ci0g
ICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsK
KyAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZHSW5saW5lRmxvd0JveD4oKnRoaXMpOwogICAg
IGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICByZXR1cm4gYm94OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4
dC5jcHAKaW5kZXggNjdlNmY5ODk3ZDI3NzQ0ZmQ0MTMzZmYyNzY3MTRjNGU5ZGE2NjViMC4uZGJm
NDkwM2Y4OWY0ZGM5MmVkZmYzMDUzOTI1ODY5ZjMyZTJkOTljMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUKIAogc3RkOjp1bmlxdWVfcHRyPElu
bGluZVRleHRCb3g+IFJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAg
IGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7Cisg
ICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZVRleHRCb3g+KCp0aGlzKTsKICAgICBi
b3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKaW5kZXggMWIzZWYyNGNjOTJkMjA1MmEzNGFhZDIwODgyMzMwZTFhMTIzYjg0
Zi4uMWFkMjY0OTY0NjcwOWMyM2YwZGI5Y2ZhZTRiODYzYzI0N2IzNjkxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmkKICAgICBGbG9h
dFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKIAog
ICAgIC8vIEFkZCBlZmZlY3RzIHRvIHRoZSBidWlsZGVyCi0gICAgYXV0byBidWlsZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmls
dGVyKSk7CisgICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihT
b3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CiAgICAgYnVpbGRlci0+c2V0UHJpbWl0aXZl
VW5pdHMoZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCkpOwogICAgIGJ1aWxkZXItPnNl
dFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsKICAgICAKQEAgLTEyMiw3ICsx
MjIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7IC8v
IEFscmVhZHkgYnVpbHQsIG9yIHdlJ3JlIGluIGEgY3ljbGUsIG9yIHdlJ3JlIG1hcmtlZCBmb3Ig
cmVtb3ZhbC4gUmVnYXJkbGVzcywganVzdCBkbyBub3RoaW5nIG1vcmUgbm93LgogICAgIH0KIAot
ICAgIGF1dG8gZmlsdGVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyRGF0YT4oKTsKKyAg
ICBhdXRvIGZpbHRlckRhdGEgPSBtYWtlVW5pcXVlPEZpbHRlckRhdGE+KCk7CiAgICAgRmxvYXRS
ZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gcmVuZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKTsKIAog
ICAgIGZpbHRlckRhdGEtPmJvdW5kYXJpZXMgPSBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVj
dGFuZ2xlPFNWR0ZpbHRlckVsZW1lbnQ+KCZmaWx0ZXJFbGVtZW50KCksIGZpbHRlckVsZW1lbnQo
KS5maWx0ZXJVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApp
bmRleCBkOGFkMDgwNDY2YzVjNmQ5ZWVjZjA3OGNkZmY2NDI2YzYxNGEwY2UyLi41NTJjZTVhMzNh
ODA2MmU2YmVlMGIwNGFlM2YxNjBmMDk5ZWI1MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAg
LTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVz
b3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbgogCiAgICAgYXV0byYgZ3Jh
ZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5hZGQoJnJlbmRlcmVyLCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgaWYgKCFncmFkaWVudERhdGEpCi0gICAgICAgIGdyYWRpZW50RGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8R3JhZGllbnREYXRhPigpOworICAgICAgICBncmFkaWVudERhdGEg
PSBtYWtlVW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKIAogICAgIGJvb2wgaXNQYWludGluZ1RleHQg
PSByZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggYWE1NzY1ZWQzNzliNmFiMWI5NDQ3MjZmNWI1ZWU0
NTQzODNjNDY0ZS4uNGM4MTliOWJjNTVkYzJiZmE4MmZiYmMwOTdmNjM3NTg1YjViMTI3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUK
IAogICAgIGJvb2wgbWlzc2luZ01hc2tlckRhdGEgPSAhbV9tYXNrZXIuY29udGFpbnMoJnJlbmRl
cmVyKTsKICAgICBpZiAobWlzc2luZ01hc2tlckRhdGEpCi0gICAgICAgIG1fbWFza2VyLnNldCgm
cmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8TWFza2VyRGF0YT4oKSk7CisgICAgICAgIG1fbWFz
a2VyLnNldCgmcmVuZGVyZXIsIG1ha2VVbmlxdWU8TWFza2VyRGF0YT4oKSk7CiAKICAgICBNYXNr
ZXJEYXRhKiBtYXNrZXJEYXRhID0gbV9tYXNrZXIuZ2V0KCZyZW5kZXJlcik7CiAgICAgQWZmaW5l
VHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3Vs
YXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oCmluZGV4IDI5ZThlN2MyNDc1NjU4NzkyZWU0ZWQ0ZWQwODIwZmFlZWM5YmRjMGMu
LmRmMDE3YmExYmZjMGNjZjdhZWE5M2EzYmIyZjdmYzc4OGY2OTZjNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgK
QEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwogCiBzdHJ1Y3QgTWFza2VyRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGNjMmNiZmNmMGZlOWE1OWVjZTE1ZjUyZjM1NzJkYjU5
ZDE2MzIwZDYuLjMxYmM1ZjE5MzFiZGFlNTBhYWM2NjEzNTlmYzBhMjZmMTc4NTg2ZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9w
dAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEJ1aWxkIHBhdHRlcm4uCi0gICAg
YXV0byBwYXR0ZXJuRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRhdGE+KCk7CisgICAg
YXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7CiAgICAgcGF0dGVy
bkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51
bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNm
b3JtYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCmluZGV4IDM0YjBhZTc1YmRjMDA1NjU3NmQ1MTM4MDE4NWVmZTZiYzcyYzcwNmUuLjZh
NjcxMThmZjFiMjU4YjMwM2M5NTYzODU5M2Y0NzRlZTg5YmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC03OSw3ICs3OSw3IEBA
IFJlbmRlclNWR1NoYXBlOjp+UmVuZGVyU1ZHU2hhcGUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVu
ZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKQogewotICAgIG1fcGF0aCA9IHN0
ZDo6bWFrZV91bmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxl
bWVudCgpKSk7CisgICAgbV9wYXRoID0gbWFrZVVuaXF1ZTxQYXRoPihwYXRoRnJvbUdyYXBoaWNz
RWxlbWVudCgmZ3JhcGhpY3NFbGVtZW50KCkpKTsKICAgICBwcm9jZXNzTWFya2VyUG9zaXRpb25z
KCk7CiAKICAgICBtX2ZpbGxCb3VuZGluZ0JveCA9IGNhbGN1bGF0ZU9iamVjdEJvdW5kaW5nQm94
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5k
ZXggYmY3ODY0NDNkZGQ2MGQ2MjFiY2Q1NzliODc3MGVkY2Q5MWQyOWZhOS4uOWM3MzdjYWZmOGI5
Mjc2Y2M0MTA2MDJmNTc5YTlmMzY0ZTVhMDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIGJvb2wgU1ZHUmVz
b3VyY2VzOjpzZXRDbGlwcGVyKFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcikKICAg
ICBBU1NFUlQoY2xpcHBlci0+cmVzb3VyY2VUeXBlKCkgPT0gQ2xpcHBlclJlc291cmNlVHlwZSk7
CiAKICAgICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xpcHBl
ckZpbHRlck1hc2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhPigpOworICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gbWFrZVVuaXF1ZTxD
bGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRh
dGEtPmNsaXBwZXIgPSBjbGlwcGVyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTI5LDcgKzUyOSw3
IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikKICAgICBBU1NFUlQoZmlsdGVyLT5yZXNvdXJjZVR5cGUoKSA9PSBGaWx0ZXJSZXNv
dXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAg
ICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmls
dGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1h
a2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSBmaWx0ZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NTAs
NyArNTUwLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlclN0YXJ0KFJlbmRlclNWR1Jl
c291cmNlTWFya2VyKiBtYXJrZXJTdGFydCkKICAgICBBU1NFUlQobWFya2VyU3RhcnQtPnJlc291
cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0
YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigp
OworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAg
ICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0ID0gbWFya2VyU3RhcnQ7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC01NzEsNyArNTcxLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZChS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyTWlkKQogICAgIEFTU0VSVChtYXJrZXJNaWQt
PnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFy
a2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJE
YXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7
CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9IG1hcmtlck1pZDsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5k
KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJFbmQpCiAgICAgQVNTRVJUKG1hcmtlckVu
ZC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9t
YXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtl
ckRhdGE+KCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9IG1ha2VVbmlxdWU8TWFya2VyRGF0YT4o
KTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID0gbWFya2VyRW5kOwogICAgIHJldHVy
biB0cnVlOwpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIo
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlcikKICAgICBBU1NFUlQobWFza2VyLT5yZXNv
dXJjZVR5cGUoKSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+
KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5tYXNrZXIgPSBtYXNrZXI7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC02MzYsNyArNjM2LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNl
dEZpbGwoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIGZpbGwpCiAgICAgICAgICAgIHx8IGZp
bGwtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAg
IGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEg
PSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+
ZmlsbCA9IGZpbGw7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02NTksNyArNjU5LDcgQEAgYm9vbCBT
VkdSZXNvdXJjZXM6OnNldFN0cm9rZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogc3Ryb2tl
KQogICAgICAgICAgICB8fCBzdHJva2UtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50
UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9m
aWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAg
ICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAg
ICAgbV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlID0gc3Ryb2tlOwogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNw
cAppbmRleCAxOTE5NWFhMWRhYmM2NmU0YjM1NjU5NzJlYzkxZjg5NDc3ZjQwMzliLi4xZWViNzhm
NTdiM2ViYjMxYjRjZGU4ZTUzMDJkZGUwOWUwNDhjMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcApAQCAtMzUsNyArMzUsNyBA
QCB2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjphZGRSZXNvdXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0CiAgICAgQVNTRVJUKCFtX2NhY2hlLmNvbnRhaW5zKCZy
ZW5kZXJlcikpOwogCiAgICAgLy8gQnVpbGQgYSBsaXN0IG9mIGFsbCByZXNvdXJjZXMgYXNzb2Np
YXRlZCB3aXRoIHRoZSBwYXNzZWQgUmVuZGVyT2JqZWN0Ci0gICAgYXV0byBuZXdSZXNvdXJjZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKKyAgICBhdXRvIG5ld1Jlc291cmNl
cyA9IG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2VzPigpOwogICAgIGlmICghbmV3UmVzb3VyY2VzLT5i
dWlsZENhY2hlZFJlc291cmNlcyhyZW5kZXJlciwgc3R5bGUpKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyLmNwcAppbmRleCAzMjQxMDI1ODRjMWYxMTNkMGVlZDMzMjE0YTY3ZjU1MzRhYjBmNTlh
Li44MTBhMGI4ODBhOGFhNGRhZTAyZmFiNDQ2YTk0MWVkZDljNWE3MWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxp
emVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW4KICAgICBpZiAobV9p
c0NvbXBsZXhUZXh0KQogICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBudWxscHRyOwog
ICAgIGVsc2UKLSAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4pOworICAgICAgICBtX3NpbXBsZVdp
ZHRoSXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRGb250LCBtX3J1
bik7CiB9CiAKIHN0cnVjdCBNZWFzdXJlVGV4dERhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggZDM3
YmVlOGNiY2U1NTYxNTExYjI0ZTM2NGUxYWY2NGFhZDdhYTc1ZC4uZTZiMjczMjBkOTJmZTg1NmQ4
Mzc0MTA4ZWQ5NTQyZTA5MWVlYWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjIsMjIgKzEyMiwy
MiBAQCBzdGF0aWMgdm9pZCBnZXRJbmxpbmVSdW4oUmVuZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVy
T2JqZWN0KiBib3VuZGFyeSwgUmVuZGVyT2JqZQogCiBSZW5kZXJUcmVlQnVpbGRlcjo6UmVuZGVy
VHJlZUJ1aWxkZXIoUmVuZGVyVmlldyYgdmlldykKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwg
bV9maXJzdExldHRlckJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGaXJzdExldHRlcj4oKnRoaXMp
KQotICAgICwgbV9saXN0QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPExpc3Q+KCp0aGlzKSkKLSAg
ICAsIG1fbXVsdGlDb2x1bW5CdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlDb2x1bW4+KCp0
aGlzKSkKLSAgICAsIG1fdGFibGVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFibGU+KCp0aGlz
KSkKLSAgICAsIG1fcnVieUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxSdWJ5PigqdGhpcykpCi0g
ICAgLCBtX2Zvcm1Db250cm9sc0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ29udHJvbHM+
KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCp0
aGlzKSkKLSAgICAsIG1fYmxvY2tGbG93QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRmxv
dz4oKnRoaXMpKQotICAgICwgbV9pbmxpbmVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
PigqdGhpcykpCi0gICAgLCBtX3N2Z0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxTVkc+KCp0aGlz
KSkKKyAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKG1ha2VVbmlxdWU8Rmlyc3RMZXR0ZXI+KCp0
aGlzKSkKKyAgICAsIG1fbGlzdEJ1aWxkZXIobWFrZVVuaXF1ZTxMaXN0PigqdGhpcykpCisgICAg
LCBtX211bHRpQ29sdW1uQnVpbGRlcihtYWtlVW5pcXVlPE11bHRpQ29sdW1uPigqdGhpcykpCisg
ICAgLCBtX3RhYmxlQnVpbGRlcihtYWtlVW5pcXVlPFRhYmxlPigqdGhpcykpCisgICAgLCBtX3J1
YnlCdWlsZGVyKG1ha2VVbmlxdWU8UnVieT4oKnRoaXMpKQorICAgICwgbV9mb3JtQ29udHJvbHNC
dWlsZGVyKG1ha2VVbmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhpcykpCisgICAgLCBtX2Jsb2NrQnVp
bGRlcihtYWtlVW5pcXVlPEJsb2NrPigqdGhpcykpCisgICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIo
bWFrZVVuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKKyAgICAsIG1faW5saW5lQnVpbGRlcihtYWtl
VW5pcXVlPElubGluZT4oKnRoaXMpKQorICAgICwgbV9zdmdCdWlsZGVyKG1ha2VVbmlxdWU8U1ZH
PigqdGhpcykpCiAjaWYgRU5BQkxFKE1BVEhNTCkKLSAgICAsIG1fbWF0aE1MQnVpbGRlcihzdGQ6
Om1ha2VfdW5pcXVlPE1hdGhNTD4oKnRoaXMpKQorICAgICwgbV9tYXRoTUxCdWlsZGVyKG1ha2VV
bmlxdWU8TWF0aE1MPigqdGhpcykpCiAjZW5kaWYKLSAgICAsIG1fY29udGludWF0aW9uQnVpbGRl
cihzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQorICAgICwgbV9jb250aW51
YXRpb25CdWlsZGVyKG1ha2VVbmlxdWU8Q29udGludWF0aW9uPigqdGhpcykpCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQotICAgICwgbV9mdWxsU2NyZWVuQnVpbGRlcihzdGQ6Om1ha2VfdW5p
cXVlPEZ1bGxTY3JlZW4+KCp0aGlzKSkKKyAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIobWFrZVVu
aXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCiAjZW5kaWYKIHsKICAgICBSRUxFQVNFX0FTU0VSVCgh
c19jdXJyZW50IHx8ICZtX3ZpZXcgIT0gJnNfY3VycmVudC0+bV92aWV3KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3Bw
CmluZGV4IDlhOThkMjVjMzJiOTM2NGI0NmE2YWVjZmMzY2ZmZGM2YzQ2NmY0ZDIuLmI5ZDIwN2Y3
ZGZkMzI0NmZlMDMwODZjODRjYTIwMWJjYjdiOTE5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNzEs
NyArNzEsNyBAQCBSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKgogCiBSZW5kZXJUcmVlVXBkYXRlcjo6
UmVuZGVyVHJlZVVwZGF0ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChk
b2N1bWVudCkKLSAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEdlbmVy
YXRlZENvbnRlbnQ+KCp0aGlzKSkKKyAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChtYWtlVW5pcXVl
PEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkKICAgICAsIG1fYnVpbGRlcihyZW5kZXJWaWV3KCkp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKaW5kZXggN2ZlN2Y2
ODczMjA0MTBlZjA0ODM4N2Q0ODFmOTI3YjEyYzIzODNhYy4uYjljNzJlYjg4MGU5YmI4NzU5OGY0
MTQ0MDc3ZDAyMzAxNjY2NWI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Vz
ZXJJbnB1dEJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlk
Z2UuaApAQCAtNDksNiArNDksNyBAQCBlbnVtIGNsYXNzIElucHV0U291cmNlIHsKIH07CiAKIGNs
YXNzIFVzZXJJbnB1dEJyaWRnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVXNlcklucHV0QnJpZGdlKTsKIHB1YmxpYzoKICAgICBVc2Vy
SW5wdXRCcmlkZ2UoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVJbnZhbGlkYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9y
LmNwcAppbmRleCBkYWUxMWNiMmY2Mjg5OTE4NDUzYTEyODA5YWU0M2I4MTI0YjZiMTJiLi42ZDY5
NWE2NjBkMGU0ZTA0NWEyNmRhYmUzMzMxZWNhMjZmYWQyZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgYm9vbCBz
aG91bGREaXJ0eUFsbFN0eWxlKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hl
ZXRzKQogfQogCiBJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IoY29uc3QgVmVjdG9yPFN0eWxlU2hl
ZXRDb250ZW50cyo+JiBzaGVldHMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGlhUXVl
cnlFdmFsdWF0b3IpCi0gICAgOiBtX293bmVkUnVsZVNldChzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVT
ZXQ+KCkpCisgICAgOiBtX293bmVkUnVsZVNldChtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkpCiAgICAg
LCBtX3J1bGVTZXQoKm1fb3duZWRSdWxlU2V0KQogICAgICwgbV9kaXJ0aWVzQWxsU3R5bGUoc2hv
dWxkRGlydHlBbGxTdHlsZShzaGVldHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxh
dGlvbnMuY3BwCmluZGV4IDRkODE0OGI0ZTMxZDc0ZDZhMGE1MTc1NGRlZTVlYWI4MDc1OWFiYWEu
LjA2MmQ1OTY0ZDc3ZWM1ZGI4M2IzZjQxYWNiYWE4N2VmY2U5OGRkNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbGF0aW9ucz4gY29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvbnMKIAogICAgIGF1dG8gYXBwZW5kU3R5bGVSZWxhdGlvbiA9IFsmcmVtYWluaW5n
UmVsYXRpb25zXSAoY29uc3QgUmVsYXRpb24mIHJlbGF0aW9uKSB7CiAgICAgICAgIGlmICghcmVt
YWluaW5nUmVsYXRpb25zKQotICAgICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZWxhdGlvbnM+KCk7CisgICAgICAgICAgICByZW1haW5pbmdSZWxhdGlvbnMg
PSBtYWtlVW5pcXVlPFJlbGF0aW9ucz4oKTsKICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zLT5h
cHBlbmQocmVsYXRpb24pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAK
aW5kZXggOWYwZDFhZDc0OTBiZmVhYjI0MDdjZTdiYzg4YjA5NTExNmQwYjIyMi4uZGNiNjViYzA5
YzM0Nzc5YjYzYTI5MzI0ZTI0ZDM3MmJmYzZhMjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgU3R5bGVSZXNvbHZlciYgU2NvcGU6OnJlc29sdmVy
KCkKICAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNV
cGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07
CiAKLSAgICAgICAgbV9yZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4o
bV9kb2N1bWVudCk7CisgICAgICAgIG1fcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2
ZXI+KG1fZG9jdW1lbnQpOwogCiAgICAgICAgIGlmICghbV9zaGFkb3dSb290KSB7CiAgICAgICAg
ICAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxkU3RhcnRlZCgpOwpAQCAtNTYzLDcg
KzU2Myw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IFNjb3BlOjphY3Rp
dmVTdHlsZVNoZWV0c0Zvckluc3BlY3RvcigpCiBib29sIFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0
c0NvbnRhaW5zKGNvbnN0IENTU1N0eWxlU2hlZXQqIHNoZWV0KSBjb25zdAogewogICAgIGlmICgh
bV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwKSB7Ci0gICAgICAg
IG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaFNldDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4+KCk7CisgICAgICAgIG1fd2Vh
a0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IG1ha2VVbmlxdWU8SGFz
aFNldDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4+KCk7CiAgICAgICAgIGZvciAoYXV0byYgYWN0aXZl
U3R5bGVTaGVldCA6IG1fYWN0aXZlU3R5bGVTaGVldHMpCiAgICAgICAgICAgICBtX3dlYWtDb3B5
T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAtPmFkZChhY3RpdmVTdHlsZVNoZWV0
LmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRy
ZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5j
cHAKaW5kZXggODQ2YTIzMWFkMmIxOGI1ZDdmMjk0OTAxNmQwOWYyMjNkZDY5ZTg4Yi4uYTAwZjRm
ZTBmNGNjYjUyZGQ4MzFhOTRlMjZhNTg2NGU1YzFiNzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZSgpCiAKICAgICBtX2RpZFNlZVBlbmRp
bmdTdHlsZXNoZWV0ID0gbV9kb2N1bWVudC5zdHlsZVNjb3BlKCkuaGFzUGVuZGluZ1NoZWV0c0Jl
Zm9yZUJvZHkoKTsKIAotICAgIG1fdXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGU+KG1f
ZG9jdW1lbnQpOworICAgIG1fdXBkYXRlID0gbWFrZVVuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQp
OwogICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoYWRvcHRSZWYoKm5ldyBTY29wZShtX2RvY3VtZW50
KSkpOwogICAgIG1fcGFyZW50U3RhY2suYXBwZW5kKFBhcmVudChtX2RvY3VtZW50KSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggYmM1MTQz
NGIwYjJiOGUwYmY3N2U1N2E0YTc2ZTRkNGJjZWVlOTk2NS4uMjVmMzg2M2QwNzk1NGFjOGQ2YTYz
ZTY4NjRhMWYwNzZiMGQ1MWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Rv
Y3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudCYgZG9j
dW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9yZXNvdXJjZXNDYWNo
ZShzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQorICAgICwgbV9yZXNvdXJj
ZXNDYWNoZShtYWtlVW5pcXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQogICAgICwgbV9hcmVBbmlt
YXRpb25zUGF1c2VkKCFkb2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNp
YmxlKCkpCiB7CiB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCwgRWxlbWVudCYgZWwK
IAogICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgbnVsbHB0cik7
CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7CisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFBlbmRpbmdFbGVtZW50cz4oKTsKICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQoJmVsZW1lbnQpOwogCiAgICAgZWxlbWVudC5zZXRI
YXNQZW5kaW5nUmVzb3VyY2VzKCk7CkBAIC0yNzksNyArMjc5LDcgQEAgSGFzaFNldDxTVkdFbGVt
ZW50Kj4qIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFy
Z2V0KFNWR0UKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNp
bmdUYXJnZXQoU1ZHRWxlbWVudCYgcmVmZXJlbmNpbmdFbGVtZW50LCBTVkdFbGVtZW50JiByZWZl
cmVuY2VkRWxlbWVudCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudERlcGVuZGVuY2ll
cy5lbnN1cmUoJnJlZmVyZW5jZWRFbGVtZW50LCBbJnJlZmVyZW5jaW5nRWxlbWVudF0gewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjpp
bml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+PihzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8U1ZHRWxlbWVudCo+IHsgJnJlZmVyZW5jaW5nRWxlbWVudCB9KTsKICAgICB9
KTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLT5hZGQoJnJlZmVyZW5jaW5nRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKaW5kZXggYTgwOTZkZGFkYTgxZWFkNmE3YTFlYTMyNGNkODUwNjdmNWMwYjI4Yi4uZTRkZTNi
NzQ5ZjBhMDAzOWJjNWM0Y2ZjZDA4ZTE5Mzk2Y2Q2NTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgSGFzaE1hcDxB
dG9tU3RyaW5nSW1wbCosIENTU1Byb3BlcnR5SUQ+IGNyZWF0ZUF0dHJpYnV0ZU5hbWVUCiBTVkdF
bGVtZW50OjpTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCkKICAgICA6IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0
ZVNWR0VsZW1lbnQpCiAgICAgLCBTVkdMYW5nU3BhY2UodGhpcykKLSAgICAsIG1fcHJvcGVydHlB
bmltYXRvckZhY3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9y
eT4oKSkKKyAgICAsIG1fcHJvcGVydHlBbmltYXRvckZhY3RvcnkobWFrZVVuaXF1ZTxTVkdQcm9w
ZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTIwMyw3ICsyMDMs
NyBAQCB2b2lkIFNWR0VsZW1lbnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIGNoYW5n
ZSkKIFNWR0VsZW1lbnRSYXJlRGF0YSYgU1ZHRWxlbWVudDo6ZW5zdXJlU1ZHUmFyZURhdGEoKQog
ewogICAgIGlmICghbV9zdmdSYXJlRGF0YSkKLSAgICAgICAgbV9zdmdSYXJlRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOworICAgICAgICBtX3N2Z1JhcmVEYXRh
ID0gbWFrZVVuaXF1ZTxTVkdFbGVtZW50UmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICptX3N2Z1Jh
cmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmlu
ZGV4IGE3NTg5MGYzMTgwNDY4ZDE1MjRiZWU4NTQzNTlkMDM1NmViNTIyMmQuLjgwZWM3ZmM4NjI5
MmI2M2JiYmE4NTFlMTFlMTA2ZmExNTJmOTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNW
R0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiBBZmZpbmVU
cmFuc2Zvcm0qIFNWR0dyYXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkKIHsK
ICAgICBpZiAoIW1fc3VwcGxlbWVudGFsVHJhbnNmb3JtKQotICAgICAgICBtX3N1cHBsZW1lbnRh
bFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOworICAgICAg
ICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8QWZmaW5lVHJhbnNmb3JtPigp
OwogICAgIHJldHVybiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5nZXQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAppbmRleCA2ZjBhY2FjZjE5ZWU4NTBkYjRlNjkx
MGQzZTgzZDI2NDk0ZDY3ZWIwLi40MzRkOTFlYjNkZjhhZDg3OWY4MzlhNDg5NjY4Njc4MGI0MDlm
MjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaApAQCAtODYsNyArODYs
NyBAQCBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
UGF0aEJ5dGVTdHJlYW0+IGNvcHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsKICAgICB9CiAKICAgICBEYXRhSXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAppbmRleCBl
MDQyM2NlOTgxNWZhMGYyNTU2M2EzYjU0MzE0MDg2YWMzNTZmZjQ0Li4zZWI1N2FkMmYyMWRmYTY0
YjliMTE4MDFmNDI3MjgzNjAyYjc1YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNN
SUxUaW1lQ29udGFpbmVyOjpzY2hlZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uLCBTVkdF
bGVtZW50KiB0YXJnZXQsCiAgICAgRWxlbWVudEF0dHJpYnV0ZVBhaXIga2V5KHRhcmdldCwgYXR0
cmlidXRlTmFtZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbnNWZWN0b3I+JiBzY2hl
ZHVsZWQgPSBtX3NjaGVkdWxlZEFuaW1hdGlvbnMuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOwogICAgIGlmICghc2NoZWR1bGVkKQotICAgICAgICBzY2hlZHVsZWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFuaW1hdGlvbnNWZWN0b3I+KCk7CisgICAgICAgIHNjaGVkdWxlZCA9IG1ha2VV
bmlxdWU8QW5pbWF0aW9uc1ZlY3Rvcj4oKTsKICAgICBBU1NFUlQoIXNjaGVkdWxlZC0+Y29udGFp
bnMoYW5pbWF0aW9uKSk7CiAgICAgc2NoZWR1bGVkLT5hcHBlbmQoYW5pbWF0aW9uKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggODA5YWZmNWQ4ODUzNzEy
MDcyYWQ4NzE1NjczNWU5MzBmOWJhMzVjZC4uNWM1NmI2OTk5NWJjOTJmNGNhODgxZTJiOTFlOWYz
N2ZmNWMzOGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBA
IC00NTcsNyArNDU3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2Vk
KGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAg
ICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlD
bGllbnRzKCk7Ci0gICAgICAgIG1fY2hyb21lQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJ
bWFnZUNocm9tZUNsaWVudD4odGhpcyk7CisgICAgICAgIG1fY2hyb21lQ2xpZW50ID0gbWFrZVVu
aXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhpcyk7CiAgICAgICAgIHBhZ2VDb25maWd1cmF0
aW9uLmNocm9tZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGlzIFNWRyBlbmRzIHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBtaWdodCBsZWFrIHRo
ZSB3b3JsZC4KQEAgLTQ2Niw3ICs0NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6
ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBi
ZWNvbWUgYW4gaXNzdWUgd2hlbiBTVkdJbWFnZSB3aWxsIGJlIGFibGUgdG8gbG9hZCBvdGhlcgog
ICAgICAgICAvLyBTVkdJbWFnZSBvYmplY3RzLCBidXQgd2UncmUgc2FmZSBub3csIGJlY2F1c2Ug
U1ZHSW1hZ2UgY2FuIG9ubHkgYmUKICAgICAgICAgLy8gbG9hZGVkIGJ5IGEgdG9wLWxldmVsIGRv
Y3VtZW50LgotICAgICAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICAgICAgbV9wYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5z
ZXRNZWRpYUVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2Ny
aXB0RW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQbHVnaW5z
RW5hYmxlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKaW5kZXggZDk3MDMwMmFkZjg2NTg1NTA5YzY1MDhk
NTA0OTUyYTI1NTMyMzYyYi4uYzc3YWUwOGJhYzY1YzNjMmNmYzg5NzRmYTMzZTc2NDYwY2U5N2Zh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlckJ1aWxkZXIuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiBj
bGFzcyBTVkdGaWx0ZXJFbGVtZW50OwogCiBjbGFzcyBTVkdGaWx0ZXJCdWlsZGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hTZXQ8Rmls
dGVyRWZmZWN0Kj4gRmlsdGVyRWZmZWN0U2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKaW5k
ZXggZTVlZmFhZWE3MTExYmM2Yzk1N2Q5NzJkNzQ1NDhkZTkyZDhhMTMzZS4uY2ViYWEzNjNiZjUy
N2JiYjM4ZTU2N2QzZTNkNDJiZjg0MzEwMmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5IDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHkgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5
VHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHk+CiAgICAgc3RhdGljIFJlZjxBbmltYXRlZFByb3BlcnR5PiBjcmVhdGUoU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBB
bmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERlY29yYXRl
ZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIG1ha2VV
bmlxdWU8RGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkp
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1l
IEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDI4ODc0MWIxMjkwNWNiODUxNDMwNTQwOTBjNGUy
YzkxMzliMzViZjMuLmQwNzM3YWNiYTMzMWZlMTIzNDdiODM0ZmY3YWEzMDEwMGFkMTU2MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU1ZH
QW5pbWF0ZWRBbmdsZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjxTVkdBbmkKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRl
ZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBp
c0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC02OCw3ICs2OCw3IEBA
IGNsYXNzIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4mIGFu
aW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5B
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04OSw3
ICs4OSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvciBmaW5hbCA6IHB1
YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTEsNyArMTExLDcg
QEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0EKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYg
YW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdl
ckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEz
Miw3ICsxMzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogCiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3Ro
TW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2Rl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0x
NTMsNyArMTUzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIAogICAgIHN0YXRpYyBhdXRv
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2Fs
Y01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdM
ZW5ndGhNb2RlIGxlbmd0aE1vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBs
ZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtMTcyLDcgKzE3Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0
b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wg
aXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Fu
aW1hdGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTg5LDcgKzE4OSw3IEBAIGNsYXNzIFNWR0FuaW1h
dGVkTnVtYmVyTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjxTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlckxpc3Q+JiBhbmltYXRl
ZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBp
c0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAg
LTIwNiw3ICsyMDYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3IgZmlu
YWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVk
UGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIyNCw3ICsyMjQsNyBAQCBjbGFzcyBTVkdB
bmltYXRlZFBvaW50TGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjxTVgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+JiBhbmlt
YXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9v
bCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBA
IC0yNDMsNyArMjQzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3IgZmlu
YWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIHB1YmxpYzoKICAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVk
T3JpZW50VHlwZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yNjIsNyArMjYyLDcgQEAgY2xhc3MgU1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
bz4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0Fu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
VkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgU1ZHQW5pbWF0
ZWRSZWN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
PFNWR0FuaW0KIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRSZWN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5OCw3ICsyOTgsNyBAQCBjbGFzcyBTVkdBbmlt
YXRlZFN0cmluZ0FuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmlt
YXRvcjxTVkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+JiBhbmltYXRlZCwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTMzOCw3ICszMzgsNyBA
QCBjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0bwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwog
ICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCmlu
ZGV4IDRlZGEzNGM5YjE4ODhmZmQ2ZDNkNjYzMmNmMGNmNmQzM2E2ZmE5ZTEuLjM5N2ZmMDkxNTk0
MDBkMzNjMDUyYjExZDgyOGNiOGUzN2IzYzgwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJB
bmltYXRvckltcGwuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3Jp
ZW50QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQog
cHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1h
dGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3Jp
ZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTMsNyArMTEz
LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
SW50ZWdlcj4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMiwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVk
SW50ZWdlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIs
IGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1i
ZXJQYWlyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmlt
YXQKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZH
QW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQ
YWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCmluZGV4IDY0
YTY1YjE4NjJmZmI5Njk2MDNjNzE1NjA3YjU0NGY1NTZlMDA4M2EuLjAyMmVkZWRhODIxYjUzMzU1
YjNmZGQzOTU4ZjI0MzY4MDE5YWFkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVt
IGNsYXNzIENhbGNNb2RlIDogdWludDhfdCB7CiB9OwogCiBjbGFzcyBTVkdBdHRyaWJ1dGVBbmlt
YXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHQXR0
cmlidXRlQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICAg
ICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCmluZGV4IDI2
NGMzNmI2OTA3NGNjZjNlMmUyOWQyNjc3MjFjZjUzNzQ1NzAzMTEuLmEzNWUyNTBhOWIxNTFmOWU4
OTdmODVmNjM2N2MzODdkYmIzY2E1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaApAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbiA6IHB1YmxpYyBTVkdEZWNvcmF0ZWRQcmlt
aXRpdmU8RGVjb3JhdGlvblR5cGUsIEVudQogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBF
bnVtVHlwZSYgdmFsdWUpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50
ZWdyYWw8RGVjb3JhdGlvblR5cGU+Ojp2YWx1ZSwgIkRlY29yYXRpb25UeXBlIGZvcm0gZW51bSBz
aG91bGQgYmUgaW50ZWdyYWwuIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0RlY29yYXRlZEVudW1lcmF0aW9uPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0RlY29yYXRlZEVudW1lcmF0aW9uPih2YWx1ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVy
dHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5
LmgKaW5kZXggZTRhYjAzNzBiOTQ3OWU1NTUwYmJiMTEwODczNDIzNTMxMTY2NTA3MC4uYWIxNGYz
Y2JlNWE3ZmMyMGUxMzBmZGE5YmQ0ODc5N2RkZGQzZTg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0yOSw2ICsy
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb3JhdGlv
blR5cGU+CiBjbGFzcyBTVkdEZWNvcmF0ZWRQcm9wZXJ0eSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7
CiAgICAgdmlydHVhbCB+U1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFu
aW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9w
ZXJ0eUFuaW1hdG9yLmgKaW5kZXggNDEyMTcyMjBiZGZjZmVmZjY3YzE2MDkxM2FkMTRkNmI5OWJh
MTQyYy4uNjhiMmUwYjExMzdhZGU4ZDM3ZjgwZTBlMjk4YjVkZTI0ZDAxYTgyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVBy
b3BlcnR5QW5pbWF0b3IuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTVkdQcmltaXRpdmVQcm9w
ZXJ0eUFuaW1hdG9yIDogcHVibGljIFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5pbWF0aW9uRnVuY3Rp
bwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
UHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0
eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKaW5kZXggYWQ1MGQ0MjM2
Mjk2OTQyZDFkYzg3MThhMmRhOGU2YWRmOGQxYmNjYi4uNWUzMDE4ZjVhNDAyYTljN2YxMjlkNDFk
NDE5YWM1ZTk0OWZlZTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCkBAIC0zNCw2ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTVkdQcm9wZXJ0
eUFuaW1hdG9yRmFjdG9yeSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmlu
ZGV4IDExODg4NmM0ZjhiYjcyMzZhNDQ2ZmZhZDAzODY5ZmYwYjBkY2RlOTUuLmZkM2RjOTYwZmZh
N2QzMTI5MDEzN2Q0NTJjZGUxYTI4NzlhN2VkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMg
U1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yPFNWR0xlbmd0aCwgU1ZHQW4KIHB1YmxpYzoKICAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3Zl
KHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBs
LmgKaW5kZXggNWVlOGFjM2QwZjRlMTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2OC4uYWU5NGUy
OWVkNGI4NjEzYjk5Y2Q5NzQ4NmVkMGIwNjI4MjZjMDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFu
aW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmltYXRv
ciBmaW5hbCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBw
dWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5n
dGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90
aGVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAg
ICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggYzExMzFkMjViMzg4
YmJhODM2NjUzZDI5NzA4ZTZhNWJiZTRiZGZjNC4uMjQzNzg5YmI5ZDI3OWE2ZTg1M2UwODY0NGI2
NGJlZTg1MWU1ZWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwCkBAIC0yMzEsNiArMjMxLDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6
OnJlc3RvcmVUbyhTZXR0aW5ncyYgc2V0dGluZ3MpCiB9CiAKIGNsYXNzIEludGVybmFsU2V0dGlu
Z3NXcmFwcGVyIDogcHVibGljIFN1cHBsZW1lbnQ8UGFnZT4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3NXcmFwcGVy
KFBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9pbnRlcm5hbFNldHRpbmdzKEludGVybmFsU2V0dGlu
Z3M6OmNyZWF0ZShwYWdlKSkgeyB9CkBAIC0yNTIsNyArMjUzLDcgQEAgY29uc3QgY2hhciogSW50
ZXJuYWxTZXR0aW5nczo6c3VwcGxlbWVudE5hbWUoKQogSW50ZXJuYWxTZXR0aW5ncyogSW50ZXJu
YWxTZXR0aW5nczo6ZnJvbShQYWdlKiBwYWdlKQogewogICAgIGlmICghU3VwcGxlbWVudDxQYWdl
Pjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSkKLSAgICAgICAgU3VwcGxlbWVudDxQYWdl
Pjo6cHJvdmlkZVRvKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8SW50
ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2UpKTsKKyAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6
cHJvdmlkZVRvKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8SW50ZXJuYWxTZXR0
aW5nc1dyYXBwZXI+KHBhZ2UpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50ZXJuYWxTZXR0
aW5nc1dyYXBwZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1l
KCkpKS0+aW50ZXJuYWxTZXR0aW5ncygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggZTE3OGI0OTY4NTg3NTUxYmYwNzA0ZDgzMDIwNTYyZGQxMmRmNGViYi4uNjJl
NzM0OWExY2ExNjYyZDA2MmM2MDc5Mzg5MmZjNzBmZjYwNTgxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIGNsYXNzIEluc3BlY3RvclN0dWJG
cm9udGVuZCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBwdWJs
aWMKIH07CiAKIEluc3BlY3RvclN0dWJGcm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKFBh
Z2UmIGluc3BlY3RlZFBhZ2UsIFJlZlB0cjxET01XaW5kb3c+JiYgZnJvbnRlbmRXaW5kb3cpCi0g
ICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKKyAg
ICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmluc3BlY3RlZFBhZ2UuaW5zcGVjdG9y
Q29udHJvbGxlcigpLCBmcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpLCBtYWtlVW5p
cXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPigpKQogICAgICwgbV9m
cm9udGVuZFdpbmRvdyhmcm9udGVuZFdpbmRvdy5jb3B5UmVmKCkpCiB7CiAgICAgQVNTRVJUX0FS
Ryhmcm9udGVuZFdpbmRvdywgZnJvbnRlbmRXaW5kb3cpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIElu
dGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBhdXRvKiBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJh
bWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgYXV0byBtb2NrUGF5bWVudENvb3JkaW5hdG9y
ID0gbmV3IE1vY2tQYXltZW50Q29vcmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwotICAgICAgICBm
cmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXlt
ZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAgICAgIGZyYW1l
LT5wYWdlKCktPnNldFBheW1lbnRDb29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGlu
YXRvcj4oKm1vY2tQYXltZW50Q29vcmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTE0
MTcsNyArMTQxNyw3IEBAIHZvaWQgSW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6
ZXIoKQogICAgIGlmICghc3ludGhlc2lzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzeW50aGVz
aXMtPnNldFBsYXRmb3JtU3ludGhlc2l6ZXIoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jaz4oc3ludGhlc2lzKSk7CisgICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9y
bVN5bnRoZXNpemVyKG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5
bnRoZXNpcykpOwogfQogCiAjZW5kaWYKQEAgLTI0ODksNyArMjQ4OSw3IEBAIFJlZlB0cjxXaW5k
b3dQcm94eT4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJp
bmcmIHVybCkKICAgICBhdXRvKiBpbnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50KCktPmZy
YW1lKCktPnBhZ2UoKTsKICAgICBhdXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJh
bWUoKS5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICBhdXRvIGZyb250ZW5kV2luZG93UHJv
eHkgPSB3aW5kb3ctPm9wZW4oKndpbmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIpLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOwotICAgIG1faW5zcGVjdG9yRnJvbnRlbmQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvclN0dWJGcm9udGVuZD4oKmluc3BlY3RlZFBhZ2UsIGRvd25jYXN0PERPTVdpbmRv
dz4oZnJvbnRlbmRXaW5kb3dQcm94eS0+d2luZG93KCkpKTsKKyAgICBtX2luc3BlY3RvckZyb250
ZW5kID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBk
b3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CiAgICAg
cmV0dXJuIGZyb250ZW5kV2luZG93UHJveHk7CiB9CiAKQEAgLTMwMDksNyArMzAwOSw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0Vmlld0V4cG9zZWRSZWN0KGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHdpZHRoLCBmCiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQcmludGluZyhpbnQg
d2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpID0gc3Rk
OjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+KGZyYW1lKCkpOworICAgIHByaW50Q29udGV4dEZv
clRlc3RpbmcoKSA9IG1ha2VVbmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKICAgICBwcmlu
dENvbnRleHRGb3JUZXN0aW5nKCktPmJlZ2luKHdpZHRoLCBoZWlnaHQpOwogfQogCkBAIC0zNDQ4
LDcgKzM0NDgsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5h
YmxlZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiB2b2lkIEludGVybmFsczo6aW5pdGlhbGl6
ZU1vY2tDRE0oKQogewotICAgIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdh
Y3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0p
OyB9LAorICAgIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNk
bSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAogICAgICAgICBM
ZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNL
ZXlTeXN0ZW1BbmRNaW1lVHlwZSk7CiB9CiAKQEAgLTQyNDEsNyArNDI0MSw3IEBAIHZvaWQgSW50
ZXJuYWxzOjpxdWV1ZU1pY3JvVGFzayhpbnQgdGVzdE51bWJlcikKICAgICBpZiAoIWRvY3VtZW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFk
UXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgeworICAgIGF1dG8g
bWljcm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90
YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVudCwgdGVzdE51
bWJlcl0oKSB7CiAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCB0
ZXN0TnVtYmVyLCAiIGhhcyBydW4uIikpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9MZWdhY3lNb2NrQ0RNLmNwcAppbmRleCA2NDI4N2QyMzlhZjU3M2U5MjAzZDI1ODQzMWIyNzNj
N2I4NzQ5MDA2Li42MDI3MmQzNDk3ZjRiODY1Y2RiMDM3MGZlNDFkM2Q2ZmJkZThiN2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9ja0NETVNlc3Npb24gOiBwdWJsaWMgTGVn
YWN5Q0RNU2Vzc2lvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgTW9ja0NETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwg
fk1vY2tDRE1TZXNzaW9uKCkgPSBkZWZhdWx0OwpAQCAtNzMsNyArNzQsNyBAQCBib29sIExlZ2Fj
eU1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogc3Rk
Ojp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Np
b24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE1vY2tDRE1TZXNzaW9uPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PE1vY2tDRE1TZXNzaW9uPihjbGllbnQpOwogfQogCiBzdGF0aWMgVWludDhBcnJheSogaW5pdERh
dGFQcmVmaXgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2Nr
Q0RNLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAppbmRleCAyNGI5
YjgwMDhjNGY1MTliNGE2NjZlYzZkMTUyNWFjNjJlYzFjMzBhLi5iOTNhZWI5M2ZmNjMyOWU1MTU0
N2MxM2ZmNzZhNjkyZWU2YTcxODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0xlZ2FjeU1vY2tDRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tD
RE0uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lD
RE07CiAKIGNsYXNzIExlZ2FjeU1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVn
YWN5TW9ja0NETShMZWdhY3lDRE0qIGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDU2Nzk2ZWU5MDBiYmYzYjZj
YzA1Y2Y2YTIyOTZlZmQ0M2I5ZWY3YjYuLmNlNWQ4ZjdkNmJkZjM4YjU5MjIwOTMwMmE2ZTZkNzFi
MzY5NjYzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5
cGVzKFZlY3RvcjxTdHJpbmc+JiYgdHlwZXMpCiAKIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRl
PiBNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0cigqdGhpcykpOwogfQogCiBNb2NrQ0RN
OjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggMzM5NmNkMDJhZDAyZGQxNGU5MmYxNTc5ZTI3
NTE2ZTZiYzNmNDI5OC4uMzk5MDliOTMwM2E5NGM5MzY4ZWFhMGY2MjVmNGI2N2U1MjUwNTlmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMTAwLDYgKzEwMCw3
IEBAIGNsYXNzIE1vY2tDRE1GYWN0b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NETUZhY3Rv
cnk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGlj
IENETVByaXZhdGUsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2NrQ0RNPiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1G
YWN0b3J5Pik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5j
cHAKaW5kZXggNTExODFkYWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4Ny4uNzc4YTkx
OGE2YjkwNzU1Y2I4NmQzYWFhNzRmNzliM2U2MThkNGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBNb2Nr
Q29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29udGVudEZp
bHRlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9j
a0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBh
ZFByb3ZpZGVyLmNwcAppbmRleCBkM2FjNWQ4N2QxOWUyYTg1MzYxYzExNTcyY2YzMTFmMGM4M2Iy
NDViLi5kNDBkZWQxZGExMTk4Y2FhMzQ1OWQ2NzdlMWZlODRmNWJmYjk0NmU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAgdm9pZCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHModW5z
aWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgZ2EKICAgICBpZiAobV9tb2NrR2FtZXBhZFZlY3Rv
cltpbmRleF0pCiAgICAgICAgIG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdLT51cGRhdGVEZXRh
aWxzKGdhbWVwYWRJRCwgYXhpc0NvdW50LCBidXR0b25Db3VudCk7CiAgICAgZWxzZQotICAgICAg
ICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0dhbWVw
YWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOworICAgICAgICBt
X21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XSA9IG1ha2VVbmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4
LCBnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwogfQogCiBib29sIE1vY2tHYW1l
cGFkUHJvdmlkZXI6OmNvbm5lY3RNb2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IGRiZTkwNzNk
NmFkZWJmYzUwMTU5Y2MyZWRiYjIyODNjY2QxN2JhODUuLjhmMTY0N2MxZjMyMjUxODE2YzdjZjA4
OTYxODJhZTM0MjM1YzUxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b25zb2xlQ2xpZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFdvcmtlckNvbnNvbGVDbGll
bnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bAogewogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJn
dW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7
CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdU
Rk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25z
b2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKaW5kZXggZjQzYmQyYTdhNjA1OTM3MjdhZDBhNmE5MWRl
Y2Q2ZWJlYzcyMjY4OC4uNjkwM2JlNWVjMjVmYjkxZWZmNzc3NmU0NDc2YWQ0ZWEyYmNlNzMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC00NCw2
ICs0NCw3IEBAIFdvcmtlckV2ZW50UXVldWU6On5Xb3JrZXJFdmVudFF1ZXVlKCkKIAogY2xhc3Mg
V29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyCiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRXZlbnREaXNwYXRjaGVyKFJlZlB0cjxFdmVudD4mJiBl
dmVudCwgV29ya2VyRXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSkKICAgICAgICAgOiBtX2V2ZW50KFdU
Rk1vdmUoZXZlbnQpKQpAQCAtODQsNyArODUsNyBAQCBib29sIFdvcmtlckV2ZW50UXVldWU6OmVu
cXVldWVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGF1dG8qIGV2ZW50UHRyID0gZXZlbnQucHRyKCk7Ci0gICAgYXV0byBldmVudERpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0
aGlzKTsKKyAgICBhdXRvIGV2ZW50RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8RXZlbnREaXNwYXRj
aGVyPihXVEZNb3ZlKGV2ZW50KSwgKnRoaXMpOwogICAgIG1fZXZlbnREaXNwYXRjaGVyTWFwLmFk
ZChldmVudFB0ciwgZXZlbnREaXNwYXRjaGVyLmdldCgpKTsKICAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQucG9zdFRhc2soW2V2ZW50RGlzcGF0Y2hlciA9IFdURk1vdmUoZXZlbnREaXNwYXRj
aGVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGV2ZW50RGlzcGF0Y2hl
ci0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgK
aW5kZXggNjExNWVmNGExMzY1MmE2ZWFkMTBhZjM3Y2ZiNDk0MjgyMGMzY2IyYi4uZDg5NzNkNWJj
YWUxN2I5NTUwMDQ0YzdlODAxNjA1Yjk5ZDU0OWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJFdmVudFF1ZXVlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1
ZSBmaW5hbCA6IHB1YmxpYyBFdmVudFF1ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXb3JrZXJFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJFdmVudFF1ZXVlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDdiYTZlZGI1MjA4ZjIy
YzNmOGYxNmRlMjlkODI1Yjc3MWY2YzNlOWUuLmIxN2Q2NjM2M2FjMzU4MGU3YTM0NDAwODFhMmY3
YzYzYTA3Mzg3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCkBAIC02Miw5ICs2Miw5IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmIHVybCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgLCBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fdXNlckFnZW50KHVzZXJBZ2VudCkKICAg
ICAsIG1fdGhyZWFkKHRocmVhZCkKLSAgICAsIG1fc2NyaXB0KHN0ZDo6bWFrZV91bmlxdWU8V29y
a2VyU2NyaXB0Q29udHJvbGxlcj4odGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIo
c3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCi0gICAg
LCBtX21pY3JvdGFza1F1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8TWljcm90YXNrUXVldWU+KG1fc2Ny
aXB0LT52bSgpKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyU2NyaXB0Q29udHJv
bGxlcj4odGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX21pY3JvdGFza1F1ZXVlKG1h
a2VVbmlxdWU8TWljcm90YXNrUXVldWU+KG1fc2NyaXB0LT52bSgpKSkKICAgICAsIG1faXNPbmxp
bmUoaXNPbmxpbmUpCiAgICAgLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeShzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAg
LCBtX2V2ZW50UXVldWUoKnRoaXMpCkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNjb3Bl
OjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
IG9yaWdpCiAgICAgICAgIG9yaWdpbi0+Z3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVp
cmsoKTsKIAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5
OjpjcmVhdGUoV1RGTW92ZShvcmlnaW4pKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5
KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAq
dGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKIH0KIAogV29ya2VyR2xvYmFs
U2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCkBAIC0zNjIsOSArMzYyLDkgQEAgdm9pZCBXb3Jr
ZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb24KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2Fn
ZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwo
KSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBt
ZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVy
KTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3Nh
Z2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVl
c3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRl
eHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElk
ZW50aWZpZXIpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29u
c29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggYTc1YzAxNTZjNTllMzhkZDk5
OWQ2Y2VjMWRkZWVkZTIzYmUxODdiMy4uNGU5ZjUxOWFlZmVkZDI1Zjg4M2Y2M2FjYTBhNDc4OWZm
MDI3ZTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSYgV29ya2Vy
R2xvYmFsU2NvcGVQcm94eTo6Y3JlYXRlKFdvcmtlciYgd29ya2VyKQogCiBXb3JrZXJNZXNzYWdp
bmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkoV29ya2VyJiB3b3JrZXJPYmplY3QpCiAgICAg
OiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQod29ya2VyT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKLSAgICAsIG1faW5zcGVjdG9yUHJveHkoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJJ
bnNwZWN0b3JQcm94eT4od29ya2VyT2JqZWN0LmlkZW50aWZpZXIoKSkpCisgICAgLCBtX2luc3Bl
Y3RvclByb3h5KG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5p
ZGVudGlmaWVyKCkpKQogICAgICwgbV93b3JrZXJPYmplY3QoJndvcmtlck9iamVjdCkKIHsKICAg
ICBBU1NFUlQoKGlzPERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBpc01h
aW5UaHJlYWQoKSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydAog
ICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CiAgICAgICAgIG1fd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7CisgICAgICAgIG1fcXVldWVkRWFy
bHlUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihX
VEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNr
VG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBiY2Q5NGU2YWMwNDAzYWNkNmE1NGJh
YzQxZmFiNDFlNWJmNTUyN2RhLi5iZmFjOTU5MmRmYWE3OTIxMDA2NWIzNDU5YmQyMjE2MTk1Nzg0
ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTg2LDcg
Kzg2LDcgQEAgY2xhc3MgTW9kZVByZWRpY2F0ZSB7CiB9OwogCiBXb3JrZXJSdW5Mb29wOjpXb3Jr
ZXJSdW5Mb29wKCkKLSAgICA6IG1fc2hhcmVkVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJT
aGFyZWRUaW1lcj4oKSkKKyAgICA6IG1fc2hhcmVkVGltZXIobWFrZVVuaXF1ZTxXb3JrZXJTaGFy
ZWRUaW1lcj4oKSkKIHsKIH0KIApAQCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBXb3JrZXJSdW5M
b29wOjpwb3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIAogdm9p
ZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrJiYgdGFzaykKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKHN0
ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOworICAg
IG1fbWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRh
c2spLCBkZWZhdWx0TW9kZSgpKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tG
b3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcm
IG1vZGUpCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8VGFz
az4oV1RGTW92ZSh0YXNrKSwgbW9kZSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChtYWtl
VW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5M
b29wOjpwb3N0RGVidWdnZXJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4
IDE5OTEyZjAyNzVmZWExOTQ4MDU0MmEwNzA5NzVkY2IwYzdkMjgwMzUuLjIyOGYzZDE3ZmYwMDIy
ZTYyZTYzNjQ1MzJkNTU2Yjk1MDdhMDE4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFdvcmtlclNj
cmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dAogCiAgICAgQVNTRVJUKHNjcmlwdFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJH
RVQiKTsKIAotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1
ZXN0PihXVEZNb3ZlKHNjcmlwdFJlcXVlc3QpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5p
cXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CiAgICAgaWYgKCFy
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjb25zdCBVUkwm
IFdvcmtlclNjcmlwdExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9w
dHI8UmVzb3VyY2VSZXF1ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291cmNlUmVx
dWVzdChjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXF1
ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKKyAgICBhdXRv
IHJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4obV91cmwpOwogICAgIHJlcXVl
c3QtPnNldEhUVFBNZXRob2QoIkdFVCJfcyk7CiAgICAgcmVxdWVzdC0+c2V0SW5pdGlhdG9ySWRl
bnRpZmllcihpbml0aWF0b3JJZGVudGlmaWVyKTsKICAgICByZXR1cm4gcmVxdWVzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAxZjc1NjE4NmEyMGYwMTY5ZTQ3
ODQzOTUxYmVlMzY4N2UwMDI0ZmJhLi4zYzM4NThiZGE5YjQ0YjU3ZmFkYjM5ZWZhMmUwYTBmM2Ez
MDQxMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0xMTQs
NyArMTE0LDcgQEAgV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW4KICAgICAsIG1fd29ya2VyRGVidWdn
ZXJQcm94eSh3b3JrZXJEZWJ1Z2dlclByb3h5KQogICAgICwgbV93b3JrZXJSZXBvcnRpbmdQcm94
eSh3b3JrZXJSZXBvcnRpbmdQcm94eSkKICAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFn
cykKLSAgICAsIG1fc3RhcnR1cERhdGEoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRTdGFy
dHVwRGF0YT4oc2NyaXB0VVJMLCBuYW1lLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5l
LCBzb3VyY2VDb2RlLCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCB0b3BPcmln
aW4sIHRpbWVPcmlnaW4sIHNlc3Npb25JRCkpCisgICAgLCBtX3N0YXJ0dXBEYXRhKG1ha2VVbmlx
dWU8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwg
dXNlckFnZW50LCBpc09ubGluZSwgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogICAgICwgbV9pZGJDb25uZWN0aW9uUHJveHkoY29ubmVjdGlv
blByb3h5KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggYjJkMjYxNWExMjYzZDE2MjY2
MTgyMDA0NjQ4ZjkwZWRhNjkyMDZiNS4uNTljNzFjNGQxNDc2MjdjZmQ5ZDMxYTQ1ZWFiY2NjZGFl
MTAzZTc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmRlcmVmRXZlbnRUYXJnZXQoKQogYXV0byBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpyZWFkeSgpIC0+IFJlYWR5UHJvbWlzZSYKIHsKICAgICBpZiAoIW1fcmVhZHlQ
cm9taXNlKSB7Ci0gICAgICAgIG1fcmVhZHlQcm9taXNlID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFk
eVByb21pc2U+KCk7CisgICAgICAgIG1fcmVhZHlQcm9taXNlID0gbWFrZVVuaXF1ZTxSZWFkeVBy
b21pc2U+KCk7CiAKICAgICAgICAgaWYgKG1faXNTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNlc3Npb25JRCgpLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiAqbV9y
ZWFkeVByb21pc2U7CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjphZGRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28K
ICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI7CiAgICAg
am9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gb3B0aW9uczsKIAotICAgIHNjaGVkdWxlSm9i
KHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZp
Y2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7
CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNv
bnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIw
Niw3ICsyMDYsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJh
dGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZQogCiAgICAgQ09OVEFJTkVSX1JF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZVJlZ2lzdHJhdGlvbjogVW5yZWdpc3RlcmluZyBz
ZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpv
YklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5p
cXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpv
YkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigq
dGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3Bl
VVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmUHRyPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVS
TCYKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3Ry
YXRpb246IFVwZGF0aW5nIHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6ICUiIFBSSXU2NCwgam9iRGF0
YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHNjaGVkdWxl
Sm9iKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJv
bWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNl
cnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEp
KSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2Ioc3RkOjp1
bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYgam9iKQpAQCAtMjY5LDcgKzI2OSw3IEBAIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYg
Y2xpZW50VVJMLCBSZWY8RGVmZXJyCiAgICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21p
c2VJZGVudGlmaWVyID0gKyttX2xhc3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0
byBwZW5kaW5nUHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1v
dmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRp
bmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwg
bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChw
ZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAg
IGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpAQCAt
MzM0LDcgKzMzNCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0
aW9ucyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAgICAgdWludDY0
X3QgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyID0gKyttX2xhc3RQZW5kaW5nUHJvbWlzZUlkZW50
aWZpZXI7Ci0gICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGlu
Z1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsK
KyAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RG
TW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwogICAgIG1fcGVuZGlu
Z1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1By
b21pc2UpKTsKIAogICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRl
bnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggN2FjOWM5ODM4M2IwNGI2ZWI4OWM5OWYyMjA4
ODVlNzY3Mzk3NmMzZi4uM2JkNmI5YjA2ZTU3Mzc2NjViNThmOTY5ZTI5M2QwZmVkNjJjM2NjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5oCkBAIC0xMzksNiArMTM5LDcgQEAgY2xhc3MgU2VydmljZVdvcmtlckNv
bnRhaW5lciBmaW5hbCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMg
QWMKICNlbmRpZgogCiAgICAgc3RydWN0IFBlbmRpbmdQcm9taXNlIHsKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nUHJvbWlzZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlZjxQZW5kaW5nQWN0aXZpdHk8U2VydmljZVdvcmtl
ckNvbnRhaW5lcj4+JiYgcGVuZGluZ0FjdGl2aXR5KQogICAgICAgICAgICAgOiBwcm9taXNlKFdU
Rk1vdmUocHJvbWlzZSkpCiAgICAgICAgICAgICAsIHBlbmRpbmdBY3Rpdml0eShXVEZNb3ZlKHBl
bmRpbmdBY3Rpdml0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IGVkYmM4ZjkxZWU0MzQ2
MmE1MDQ5ZTg4YzFjZWY1ZWZhNzYyYzk4ZmYuLmNiNWMyMjFmYzk0ODhkN2MwMDcyOTgzYTE1Nzg5
NWRjYThjNmNlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAg
dm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgU2Vjb24KIAogICAgIHNlcnZpY2VXb3JrZXItPnNldEFzVGVybWlu
YXRpbmdPclRlcm1pbmF0ZWQoKTsKIAotICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5h
dGlvblJlcXVlc3RzLmFkZChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3Jr
ZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CisgICAg
bV9wZW5kaW5nU2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlkZW50aWZpZXIs
IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIGlkZW50
aWZpZXIsIHRpbWVvdXQpKTsKIAogICAgIGF1dG8mIHRocmVhZCA9IHNlcnZpY2VXb3JrZXItPnRo
cmVhZCgpOwogICAgIHRocmVhZC5zdG9wKFt0aGlzLCBpZGVudGlmaWVyLCBzZXJ2aWNlV29ya2Vy
ID0gV1RGTW92ZShzZXJ2aWNlV29ya2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuY3BwCmluZGV4IGM2MTczNjEzY2FjYjU1ZDY5MDU4YmUyYzdlMmE1ZmJkODUyOWM3NzYu
LjllNzI4YzNhN2FmYTQ2Yzk0OWNkY2JlMGQ2ZmViMDRhOTUzMWNjZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9u
JiYgcGFnZUNvbmZpCiAgICAgYWxsU2VydmljZVdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhp
cyk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX3JlbW90ZURlYnVnZ2Fi
bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigqdGhpcywgZGF0
YSk7CisgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRGVi
dWdnYWJsZT4oKnRoaXMsIGRhdGEpOwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+c2V0UmVtb3Rl
RGVidWdnaW5nQWxsb3dlZCh0cnVlKTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPmluaXQoKTsK
ICNlbmRpZgpAQCAtMTY4LDcgKzE2OCw3IEBAIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3RpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxGZXRjaExvYWRlcj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVh
dGVCbG9iTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVSTCYgYmxvYlVS
TCkKIHsKLSAgICBhdXRvIGxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KGNs
aWVudCwgbnVsbHB0cik7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVy
PihjbGllbnQsIG51bGxwdHIpOwogICAgIGxvYWRlci0+c3RhcnRMb2FkaW5nQmxvYlVSTChtX2Rv
Y3VtZW50LCBibG9iVVJMKTsKICAgICBpZiAoIWxvYWRlci0+aXNTdGFydGVkKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCAxZGQzNDEz
NzRjNDQ0NWEzNDk3MzJkNDRmZGVkMTU0Nzc0ODFjMGI0Li45MmNiYTA4NWQzYWNmNmEyOTNmMDZi
NTVkZjQ1ZjRkZmM3OTNmYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMTUy
LDcgKzE1Miw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFz
ZShjb25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmVu
c3VyZURhdGFiYXNlRGlyZWN0b3J5RXhpc3RzKG1fZGF0YWJhc2VEaXJlY3RvcnkpOwogCi0gICAg
bV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9k
YXRhYmFzZSA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX2RhdGFi
YXNlLT5vcGVuKGZ1bGxGaWxlbmFtZSkpIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0gIkZhaWxl
ZCB0byBvcGVuIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSI7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5k
ZXggZmU1Y2M4NTllNjVhNmUzMmE3OGI1Mjg5NzVhMTMyZTc0YmYxNzg3ZS4uOTMyNmEzYmFjNjU5
YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2
b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiYgZGF0YSkKICAgICAvLyBQYWdlcyBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRv
IG1ha2UgYSBuZXcgcmVnaXN0cmF0aW9uIHRvIHRoaXMga2V5IHdoaWxlIHRoZSBpbXBvcnQgd2Fz
IHN0aWxsIHRha2luZyBwbGFjZS4KICAgICBBU1NFUlQoIW1fcmVnaXN0cmF0aW9ucy5jb250YWlu
cyhkYXRhLnJlZ2lzdHJhdGlvbi5rZXkpKTsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0
aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0
aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CisgICAgYXV0byByZWdpc3RyYXRpb24gPSBt
YWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24u
a2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24u
c2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKICAgICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRh
dGVUaW1lKGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKICAgICBhdXRvIHJlZ2lz
dHJhdGlvblB0ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKICAgICBhZGRSZWdpc3RyYXRpb24oV1RG
TW92ZShyZWdpc3RyYXRpb24pKTsKQEAgLTMwNCw3ICszMDQsNyBAQCBTV1NlcnZlcjo6U1dTZXJ2
ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIFN0cmluZyYmIHJlZ2lz
dHJhdGlvbgogewogICAgIEFTU0VSVCghcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkuaXNF
bXB0eSgpIHx8IG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogICAgIGlmICghbV9zZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVnaXN0cmF0aW9uU3RvcmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRh
dGFiYXNlRGlyZWN0b3J5KSk7CisgICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBtYWtlVW5p
cXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhYmFz
ZURpcmVjdG9yeSkpOwogICAgIGVsc2UKICAgICAgICAgcmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRD
b21wbGV0ZSgpOwogCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NoZWR1bGVK
b2IoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIC8vIElmIGl0IGlzLCBzdGFj
ayBpdCBhbG9uZyB3aXRoIHRoYXQgam9iLgogCiAgICAgYXV0byYgam9iUXVldWUgPSAqbV9qb2JR
dWV1ZXMuZW5zdXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0aGlzLCAmam9iRGF0YV0g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhp
cywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNXU2VydmVySm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKGpvYkRhdGEp
OwpAQCAtODIwLDcgKzgyMCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAKICAgICBpZiAo
Y2xpZW50SWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVCghaXRlcmF0b3It
PnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIpOwotICAgICAgICBpdGVyYXRvci0+
dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGlt
ZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlzXSB7CisgICAg
ICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gbWFrZVVu
aXF1ZTxUaW1lcj4oW2NsaWVudE9yaWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNd
IHsKICAgICAgICAgICAgIFZlY3RvcjxTV1NlcnZlcldvcmtlcio+IHdvcmtlcnNUb1Rlcm1pbmF0
ZTsKICAgICAgICAgICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGlu
Z1dvcmtlcnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5p
bmcoKSAmJiB3b3JrZXItPm9yaWdpbigpID09IGNsaWVudE9yaWdpbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCmluZGV4IDhiNjhiNzBmMDFkMjUyNzhhZjUzOGFiY2U5MTRiOGM3YzY4YWI4MzcuLmRjYWY1
YThhNzEwZjc5NDQ2NDdkZTNjZDVlOTgwNjM5OWE4ZmQ1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNw
cApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJK
b2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICAgICAgICAgIHJlZ2lzdHJh
dGlvbi0+c2V0VXBkYXRlVmlhQ2FjaGUoam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlh
Q2FjaGUpOwogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZl
ckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogRm91bmQgcmVnaXN0cmF0aW9uICVsbHUgZm9yIGpv
YiAlcyBidXQgaXQgbmVlZHMgdXBkYXRpbmciLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJh
dGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29w
ZVVSTCwgam9iLnNjcmlwdFVSTCk7CisgICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gbWFr
ZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5
LCBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBq
b2Iuc2NyaXB0VVJMKTsKICAgICAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUo
bmV3UmVnaXN0cmF0aW9uKSk7CiAKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
IiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IE5vIGV4aXN0aW5nIHJlZ2lz
dHJhdGlvbiBmb3Igam9iICVzLCBjb25zdHJ1Y3RpbmcgYSBuZXcgb25lLiIsIHRoaXMsIGpvYi5p
ZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDJi
N2EyZmUzZmJiNThkNGM0ZWUzOGZjMDRiNTM2YTNlNGUwYzc3ZTcuLjNiZTc1N2UwMmFlMTlkNzU5
MGVjMDdiM2ZhNGNiZTdkNjNjZTgxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsCiAgICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBh
aW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0
YXRlLCBwYWludFZhbHVlLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAg
ICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYWludERlZmluaXRp
b24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpOworICAg
ICAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IG1ha2VVbmlxdWU8UGFpbnREZWZpbml0aW9uPihu
YW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZN
b3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKICAgICAgICAg
cGFpbnREZWZpbml0aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuaAppbmRleCA5NmNmMTg1MGIwY2FlM2FhZTk2MDdkYjEzNDE2NzM1OGI2NzFjMWQ5
Li42NGZjNzhlZWU3ODgwZWQ5YmVkY2ZjMmE3MDEyY2E2ZWMzY2UxYzA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xldEds
b2JhbFNjb3BlIHsKIAogICAgIC8vIEFsbCBwYWludCBkZWZpbml0aW9ucyBtdXN0IGJlIGRlc3Ry
b3llZCBiZWZvcmUgdGhlIHZtIGlzIGRlc3Ryb3llZCwgYmVjYXVzZSBvdGhlcndpc2UgdGhleSB3
aWxsIHBvaW50IHRvIGZyZWVkIG1lbW9yeS4KICAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFBhaW50RGVmaW5pdGlvbj4geworICAgICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBB
dG9tU3RyaW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWludENvbnN0cnVjdG9yLCBSZWY8Q1NT
UGFpbnRDYWxsYmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRpZXMsIFZlY3Rv
cjxTdHJpbmc+JiYgaW5wdXRBcmd1bWVudHMpOwogCiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcg
bmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xl
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50
LmNwcAppbmRleCA4ZThhMmE0Y2EyM2UyYjkzZGExMzRhZmI1MmQwZTk1NzZjNDAyMTU5Li4zZjA5
MjU2M2JkNTJhYzRhNGJiZWRhNDE1YzIzN2EyZDFkZmRhZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBA
IHZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAg
IGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBh
dXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RG
TW92ZShhcmd1bWVudHMpLCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUs
IGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKICAgICBtX3dv
cmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5k
ZXggNGJiNzg4ZWE2M2NkNmJiZGM1MzI1ODdlMDUxMGQ1MzI1MjYwNmZmYS4uY2VmODJmN2I0MTFk
MjE4YzczM2Q2NmZhOWRiYTJkOTMxMjVhZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChXb3JrbGV0R2xvYmFsU2NvcGUpOwogV29ya2xldEdsb2JhbFNjb3Bl
OjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2Rl
JiYgY29kZSkKICAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwg
bV9zZXNzaW9uSUQobV9kb2N1bWVudC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdChzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2Ny
aXB0KG1ha2VVbmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV90
b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV9ldmVudFF1
ZXVlKCp0aGlzKQogICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCkBAIC02Miw3ICs2Miw3IEBA
IFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVu
dCwgU2NyaXB0U291cmNlQ29kZSYmIGNvCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAK
ICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRl
KG1fdG9wT3JpZ2luLmNvcHlSZWYoKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShz
dGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgp
IH0sICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX2NvZGUudXJsKCkgfSwgKnRoaXMpKTsKIH0KIAog
V29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKQEAgLTE0MCw3ICsxNDAs
NyBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lcwogewogICAgIGlmICghbV9kb2N1bWVudCB8fCBp
c0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1l
c3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOworICAgIG1fZG9jdW1lbnQt
PmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4o
bWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVz
c2FnZS0+bWVzc2FnZSgpLCAwKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5j
cHAKaW5kZXggMWNlZTllYjM0MjFjZDk5YTU2Yzg4NjBiOGVjZGQ0NTk2ZjgwZDJkZS4uNzEzMzkw
MGYxNzFlZWY0MTU2NzNkNGU5MGQ1Y2Y3N2NmZWJjMmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTM2LDcgKzEz
Niw3IEBAIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xh
c3MoKQogICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVj
dCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0
KG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSkt
Pmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBt
X2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50Pigq
bV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8
V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3Jr
bGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5n
ZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAppbmRleCBiMDIxY2NlMTUzYzMxOTI5NTBh
MmJmNzdkODA5YTI4NDdhYjBmMGMxLi5hNjMyN2I5ZGZmMWI3NmJiNTgyYzYzNjAzODE1MjQyOGM3
MWFhODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBYTUxFcnJvcnMgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFhNTEVycm9ycyhE
b2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA4ZTQ0
MjRlZjI0NmEzNmE0ZGI4MTNjMzA2Y2IzMjFmYTRmZWEyNTEzLi4zNjViNTE1NmM0M2Y5YTEwMGIy
ODlhMmI3YWIzNDU0NjEyNzNjNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVVJM
KCkgY29uc3QKIFhNTEh0dHBSZXF1ZXN0VXBsb2FkJiBYTUxIdHRwUmVxdWVzdDo6dXBsb2FkKCkK
IHsKICAgICBpZiAoIW1fdXBsb2FkKQotICAgICAgICBtX3VwbG9hZCA9IHN0ZDo6bWFrZV91bmlx
dWU8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+KCp0aGlzKTsKKyAgICAgICAgbV91cGxvYWQgPSBtYWtl
VW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VwbG9h
ZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggYWQ3ZTEzYzhh
MTk0YWQ1NmQ2MjM0MjAwMDE3Y2JhNzdmZTgwYjc0Mi4uYTkyNDQwOWVlNDZjNTNlNzNiMjdhNDlh
MTllZmU5Njk3MjE2NzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVu
Y3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBA
IC00NSw3ICs0NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgYykK
ICAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdc
dCc7CiB9CiAKLSNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQorI2RlZmluZSBERUZJTkVfRlVO
Q1RJT05fQ1JFQVRPUihTdWZmaXgpIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb24+IGNy
ZWF0ZUZ1bmN0aW9uIyNTdWZmaXgoKSB7IHJldHVybiBtYWtlVW5pcXVlPEZ1biMjU3VmZml4Pigp
OyB9CiAKIGNsYXNzIEludGVydmFsIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVk
aWNhdGUuY3BwCmluZGV4IDA0NjE1YzNkNWYwMzEzMTA2OTM4ZmFhMDVmYjM5Yzk5Y2UxMjNiNWMu
LmMxYmJjNTRlYjgzMDE2OTExOWM4NjgzMWE0ZjJhNmU3YzAwNDU2OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoUHJlZGljYXRlLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgZXZhbHVhdGVQ
cmVkaWNhdGUoY29uc3QgRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKIAogICAgIC8vIGZvb1szXSBt
ZWFucyBmb29bcG9zaXRpb24oKT0zXQogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkKLSAgICAg
ICAgcmV0dXJuIEVxVGVzdE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9z
aXRpb24iX3MpLCBzdGQ6Om1ha2VfdW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5l
dmFsdWF0ZSgpLnRvQm9vbGVhbigpOworICAgICAgICByZXR1cm4gRXFUZXN0T3AoRXFUZXN0T3A6
Ok9QX0VRLCBGdW5jdGlvbjo6Y3JlYXRlKCJwb3NpdGlvbiJfcyksIG1ha2VVbmlxdWU8TnVtYmVy
PihyZXN1bHQudG9OdW1iZXIoKSkpLmV2YWx1YXRlKCkudG9Cb29sZWFuKCk7CiAKICAgICByZXR1
cm4gcmVzdWx0LnRvQm9vbGVhbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNo
ZWV0TGlieHNsdC5jcHAKaW5kZXggZWMyYzZhZTA0NTlhMDY5MjU2YTY2MmY3MmM4NzI2N2ZlYTFh
NDViZC4uNjMwNGU5MjgxMWE5MzRmN2RlNzRjOGM5NGIyYjY5YzAwNGVhNDk2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCkBAIC0yMzEsNyArMjMxLDcg
QEAgdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldHMoKQogCiB2b2lkIFhTTFN0eWxl
U2hlZXQ6OmxvYWRDaGlsZFNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZikKIHsKLSAgICBhdXRvIGNo
aWxkUnVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8WFNMSW1wb3J0UnVsZT4odGhpcywgaHJlZik7Cisg
ICAgYXV0byBjaGlsZFJ1bGUgPSBtYWtlVW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYp
OwogICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkUnVsZS5yZWxlYXNlKCkpOwogICAgIG1fY2hp
bGRyZW4ubGFzdCgpLT5sb2FkU2hlZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZTAyNGVmYjU2YmY2NTJiOTBhOWExZDRm
ODEzMDY0OTE4MzBkOGUwZi4uNzA0ODg5MmE1YWEwZWY5YTU1ZmJkMjQwOGNkMTc5MTRkMDJhOWM4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoUmVm
UHRyPFN0cmluZ0ltcGw+JiYgaW5wdXRTb3VyY2UpCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpo
YW5kbGVFcnJvcihYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZXh0
UG9zaXRpb24gcG9zaXRpb24pCiB7CiAgICAgaWYgKCFtX3htbEVycm9ycykKLSAgICAgICAgbV94
bWxFcnJvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkpOworICAg
ICAgICBtX3htbEVycm9ycyA9IG1ha2VVbmlxdWU8WE1MRXJyb3JzPigqZG9jdW1lbnQoKSk7CiAg
ICAgbV94bWxFcnJvcnMtPmhhbmRsZUVycm9yKHR5cGUsIG0sIHBvc2l0aW9uKTsKICAgICBpZiAo
dHlwZSAhPSBYTUxFcnJvcnM6Ondhcm5pbmcpCiAgICAgICAgIG1fc2F3RXJyb3IgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCmluZGV4IGI5MzEwMWI4YWFjNDgzOWEzOWJiNTRiMmI4OWRlODk4Yzc5Yjc1YWIu
LmI5OWIzMDg5NzM4NTUwOWViYWIwNDUyMTM5NzUzOWIwNzBjZWU3MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiBwdWJsaWM6CiAgICAg
dm9pZCBhcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHhtbExvY2Fs
TmFtZSwgY29uc3QgeG1sQ2hhciogeG1sUHJlZml4LCBjb25zdCB4bWxDaGFyKiB4bWxVUkksIGlu
dCBudW1OYW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyKiogbmFtZXNwYWNlcywgaW50IG51bUF0dHJp
YnV0ZXMsIGludCBudW1EZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIqKiBhdHRyaWJ1dGVzKQogICAg
IHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1N0YXJ0
RWxlbWVudE5TQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVl
PFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT54
bWxMb2NhbE5hbWUgPSB4bWxTdHJkdXAoeG1sTG9jYWxOYW1lKTsKICAgICAgICAgY2FsbGJhY2st
PnhtbFByZWZpeCA9IHhtbFN0cmR1cCh4bWxQcmVmaXgpOwpAQCAtMTIyLDEyICsxMjIsMTIgQEAg
Y2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZEVuZEVsZW1lbnROU0Nh
bGxiYWNrKCkKICAgICB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4oKSk7CisgICAgICAgIG1fY2FsbGJhY2tz
LmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4oKSk7CiAgICAg
fQogCiAgICAgdm9pZCBhcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywg
aW50IGxlbikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBt
YWtlVW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJh
Y2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47
CkBAIC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lk
IGFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHRhcmdl
dCwgY29uc3QgeG1sQ2hhciogZGF0YSkKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsK
KyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbkNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT50YXJnZXQgPSB4bWxTdHJk
dXAodGFyZ2V0KTsKICAgICAgICAgY2FsbGJhY2stPmRhdGEgPSB4bWxTdHJkdXAoZGF0YSk7CkBA
IC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFw
cGVuZENEQVRBQmxvY2tDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgIHsK
LSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NEQVRBQmxv
Y2tDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGlu
Z0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cm5k
dXAocywgbGVuKTsKICAgICAgICAgY2FsbGJhY2stPmxlbiA9IGxlbjsKQEAgLTE1Nyw3ICsxNTcs
NyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kQ29tbWVudENh
bGxiYWNrKGNvbnN0IHhtbENoYXIqIHMpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0g
c3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNrPigpOworICAgICAgICBhdXRv
IGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNrPigpOwogCiAgICAg
ICAgIGNhbGxiYWNrLT5zID0geG1sU3RyZHVwKHMpOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZEludGVybmFsU3Vic2V0Q2Fs
bGJhY2soY29uc3QgeG1sQ2hhciogbmFtZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJuYWxJRCwgY29u
c3QgeG1sQ2hhciogc3lzdGVtSUQpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjaz4oKTsKKyAgICAgICAg
YXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+
KCk7CiAKICAgICAgICAgY2FsbGJhY2stPm5hbWUgPSB4bWxTdHJkdXAobmFtZSk7CiAgICAgICAg
IGNhbGxiYWNrLT5leHRlcm5hbElEID0geG1sU3RyZHVwKGV4dGVybmFsSUQpOwpAQCAtMTc3LDcg
KzE3Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFcnJv
ckNhbGxiYWNrKFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IHhtbENoYXIqIG1lc3Nh
Z2UsIE9yZGluYWxOdW1iZXIgbGluZU51bWJlciwgT3JkaW5hbE51bWJlciBjb2x1bW5OdW1iZXIp
CiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5n
RXJyb3JDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVu
ZGluZ0Vycm9yQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPm1lc3NhZ2UgPSB4bWxT
dHJkdXAobWVzc2FnZSk7CiAgICAgICAgIGNhbGxiYWNrLT50eXBlID0gdHlwZTsKQEAgLTE5Nyw2
ICsxOTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nQ2FsbGJhY2soKSA9IGRlZmF1bHQ7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIpID0gMDsKICAg
ICB9OwpAQCAtNTY0LDcgKzU2NSw3IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRz
WE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24pCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1M
RG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykK
ICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fdmlldyhm
cmFtZVZpZXcpCi0gICAgLCBtX3BlbmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nQ2FsbGJhY2tzPigpKQorICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVu
ZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUoJmRvY3VtZW50KQogICAgICwg
bV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkp
CiB7CkBAIC01NzIsNyArNTczLDcgQEAgWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFy
c2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAKIFhNTERvY3Vt
ZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwg
RWxlbWVudCogcGFyZW50RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50
UG9saWN5KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50
KCksIHBhcnNlckNvbnRlbnRQb2xpY3kpCi0gICAgLCBtX3BlbmRpbmdDYWxsYmFja3Moc3RkOjpt
YWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tz
KG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUoJmZy
YWdtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dS
YW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3BhcnNpbmdGcmFnbWVudCh0cnVlKQpAQCAtMTMyOCw3
ICsxMzI5LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQoKQogICAgICAgICB4bWxU
cmVlVmlld2VyLnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpOwogICAgIH0gZWxzZSBpZiAo
bV9zYXdYU0xUcmFuc2Zvcm0pIHsKICAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbERvY1B0ckZv
clN0cmluZyhkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLCBtX29yaWdpbmFsU291
cmNlRm9yVHJhbnNmb3JtLnRvU3RyaW5nKCksIGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsK
LSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtU291cmNlPihkb2MpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3Jt
U291cmNlKG1ha2VVbmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2MpKTsKIAogICAgICAgICBkb2N1
bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUgZG9jdW1lbnQgdGhpbmsgaXQn
cyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IFhTTCBzdHlsZXNoZWV0cy4KICAgICAgICAgZG9jdW1l
bnQoKS0+YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc05vd0lmU2NoZWR1bGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRy
aXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCAwNWJjOTUzZjdmMGRkYzc4N2IxZTYzMDQ4
NzY5NmMyMDg1OWNhZTBmLi5kNjllMTQ5OTJkNTg2NzUxY2EwNDM0MjYzNjJhNmY0MWMyNjk5ZjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBA
QCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIoVmVjdG9yPENhcGFiaWxp
dGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBzZXNzaW9uSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxp
dGllc0xpc3QudGFrZUxhc3QoKSk7CisgICAgYXV0byBzZXNzaW9uSG9zdCA9IG1ha2VVbmlxdWU8
U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7CiAgICAgYXV0byogc2Vz
c2lvbkhvc3RQdHIgPSBzZXNzaW9uSG9zdC5nZXQoKTsKICAgICBzZXNzaW9uSG9zdFB0ci0+Y29u
bmVjdFRvQnJvd3NlcihbdGhpcywgY2FwYWJpbGl0aWVzTGlzdCA9IFdURk1vdmUoY2FwYWJpbGl0
aWVzTGlzdCksIHNlc3Npb25Ib3N0ID0gV1RGTW92ZShzZXNzaW9uSG9zdCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFN0cmluZz4gZXJy
b3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGli
L1Nlc3Npb25Ib3N0R2xpYi5jcHAKaW5kZXggN2EyMGI4OTQxYWZmNzJhODUyYjc2ZjVjNTUxMDYy
NjU0Nzc0YTFjYy4uMTc3YWE1NGYyMjI5N2FjMzE2MTRkMzUzYmU5ZjNhNzlkMWFhYjE5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKQEAgLTExMyw2ICsxMTMs
NyBAQCBib29sIFNlc3Npb25Ib3N0Ojppc0Nvbm5lY3RlZCgpIGNvbnN0CiB9CiAKIHN0cnVjdCBD
b25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgQ29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YShTZXNzaW9uSG9zdCogc2Vzc2lv
bkhvc3QsIEdVbmlxdWVQdHI8Y2hhcj4mJiBkYnVzQWRkcmVzcywgR0NhbmNlbGxhYmxlKiBjYW5j
ZWxsYWJsZSwgRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgICAgIDogc2Vzc2lvbkhvc3Qoc2Vzc2lvbkhvc3QpCiAgICAgICAg
ICwgZGJ1c0FkZHJlc3MoV1RGTW92ZShkYnVzQWRkcmVzcykpCkBAIC0xNzMsNyArMTc0LDcgQEAg
dm9pZCBTZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxT
dHJpbmc+IGVycm9yKT4mJiBjb21wbGUKICAgICB9LCB0aGlzKTsKIAogICAgIEdVbmlxdWVQdHI8
Y2hhcj4gZGJ1c0FkZHJlc3MoZ19zdHJkdXBfcHJpbnRmKCJ0Y3A6aG9zdD0lcyxwb3J0PSV1Iiwg
IjEyNy4wLjAuMSIsIHBvcnQpKTsKLSAgICBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6bWFrZV91bmlx
dWU8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVzcyks
IG1fY2FuY2VsbGFibGUuZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAg
Y29ubmVjdFRvQnJvd3NlcihtYWtlVW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+KHRo
aXMsIFdURk1vdmUoZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkpOwogfQogCiB2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93
c2VyKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPiYmIGRhdGEpCkBA
IC0zNzEsNiArMzcyLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQKIH0KIAogc3RydWN0IE1l
c3NhZ2VDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
bG9uZyBtZXNzYWdlSUQ7CiAgICAgU2Vzc2lvbkhvc3QqIGhvc3Q7CiB9OwpAQCAtMzgxLDcgKzM4
Myw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGxvbmcgbWVzc2Fn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKG1fY29ubmVjdGlvbklEKTsK
ICAgICBBU1NFUlQobV90YXJnZXQuaWQpOwogCi0gICAgYXV0byBtZXNzYWdlQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8TWVzc2FnZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlE
LCB0aGlzIH0pOworICAgIGF1dG8gbWVzc2FnZUNvbnRleHQgPSBtYWtlVW5pcXVlPE1lc3NhZ2VD
b250ZXh0PihNZXNzYWdlQ29udGV4dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKICAgICBnX2RidXNf
Y29ubmVjdGlvbl9jYWxsKG1fZGJ1c0Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsCiAgICAgICAg
IElOU1BFQ1RPUl9EQlVTX09CSkVDVF9QQVRILAogICAgICAgICBJTlNQRUNUT1JfREJVU19JTlRF
UkZBQ0UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tB
dHRyaWJ1dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlj
a0F0dHJpYnV0aW9uTWFuYWdlci5oCmluZGV4IGI2MmYxMmUxODJmMjFlYjhkNTEwNzRjYjI1NGQ3
YjIxMmUwY2VkMTkuLmI0NDVlN2E2NWE0OGQwNzQ4YmQ3ZTkyMDVhMzQ0MGY3ZjFhOTU2Y2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9u
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlci5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxB
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAyZTI5NmIyOWY0M2E0ZmM4OGU3MDA5MzI0
YTVlMjNiMGJlOWNkNTFjLi45MzAzZDJhZGMxNWVmNmZiMzEwYjZmYjE2ZDA3MGNjODUzZmRjM2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKCkKICAgICBpZiAo
cmVzb3VyY2VMb2dQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9maWxl
TW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwg
bV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyldIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0
b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVl
LmNvcHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihz
dG9yYWdlUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpG
aWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9maWxlTW9uaXRvciA9IG1ha2VVbmlxdWU8Rmls
ZU1vbml0b3I+KHN0b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmls
ZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgICAgIGlmICh0eXBlID09IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZTo6UmVtb3ZhbCkgewogICAgICAgICAgICAgLy8gRGlyZWN0b3J5IHdhcyByZW1vdmVkIQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZS5oCmluZGV4IDRjMDMzZTM1M2Q0ZjMwOGY3Zjc2MDAxMmNhOTYyOTYzMDNjMTA3MzAuLjcx
ZjM0YmZhM2Q2YzJiNTI3NjE2ODk0NGVlMzM0YzczZGFmNTAzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKQEAgLTQ1
LDYgKzQ1LDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogCiAv
LyBDYW4gb25seSBiZSBjb25zdHJ1Y3RlZCAvIGRlc3Ryb3llZCAvIHVzZWQgZnJvbSB0aGUgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljIHF1ZXVlLgogY2xhc3MgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmLCBXb3Jr
UXVldWUmLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAgICB+UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNzBhY2JkY2U5NmY2NWNmODNhOTQ2MzdkM2ZiOGQx
ZTliMjY1NTNkZC4uYTBjZWY2ZjMxYjQ5NjYyZTVmOTIwM2NjZjhiMTkwODdlMzBlODRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNzcsNiArNzcsNyBA
QCBlbnVtIGNsYXNzIE9wZXJhdGluZ0RhdGVzV2luZG93IDogYm9vbCB7IExvbmcsIFNob3J0IH07
CiAKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0
aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNs
YXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB1c2luZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA4YzIxMTU3Y2M3ZjY5MTdiYTk3MDg5ZTM2ZjE2OWQ4
NmNmOGI4YWIwLi5hMWMwN2YzNmE2ZjhmZmZjZDc2MDM4ZGQ2Y2VhY2JjYTY0N2ViMWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTU5
LDE1ICsxNTksMTUgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG4KICAgICAKICAgICBwb3N0VGFz
ayhbdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3Rd
IHsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
aXNJVFBEYXRhYmFzZUVuYWJsZWQoKSkgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigq
dGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUg
PSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqdGhpcywg
bV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkpOwogCi0gICAgICAgICAgICBhdXRvIG1lbW9yeVN0b3JlID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBt
X3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAgICAgICAgICBh
dXRvIHBlcnNpc3RlbnRTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGljc1F1ZXVlLCBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIGF1dG8gbWVtb3J5
U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRo
aXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKKyAgICAgICAg
ICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNzUXVldWUsIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCiAgICAgICAgICAgICBkb3duY2FzdDxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlLmdl
dCgpKS5wb3B1bGF0ZUZyb21NZW1vcnlTdG9yZSgqbWVtb3J5U3RvcmUpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVl
LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3Jh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0
aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IG1ha2VVbmlxdWU8UmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUs
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFn
ZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPihk
b3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NT
dG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FKDE5MzI5Nyk6IFRoaXMgc2hvdWxkIGJl
IHJldmlzZWQgYWZ0ZXIgdGhlIFVJUHJvY2VzcyB2ZXJzaW9uIGdvZXMgYXdheS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5oCmluZGV4IDYwNWFlZjNlNmVlOTUwZjM5NDgzZmNkOGNjNGQ4ZTY1OGUwMmNmMGMuLmJiZTM5
ODQ3NTJiZTE0NjA1MGQ1MDM1NzEzNzE1NTBmYjJjYjYzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAt
NDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwog
CiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb29raWVNYW5hZ2VyKTsKIHB1Ymxp
YzoKICAgICBXZWJDb29raWVNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJv
dG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCmluZGV4IGRjNzllZWJjZjE4ZGJm
NjdiNDY0YzM1ODYxMGZiM2NlN2NmZTkwY2MuLmY5MGYwZmNiNDE5MDI0YjhhOTVmNTc3MGM5Yjc5
OTdiNTc4NGIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogc3RydWN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcik7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKE5ldHdvcmtQcm9j
ZXNzJik7CkBAIC03OCw2ICs3OSw3IEBAIGNsYXNzIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6CiAjZW5kaWYK
ICNpZiBVU0UoU09VUCkKICAgICBzdHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0RhdGEgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdlYlNvdXBSZXF1
ZXN0QXN5bmNEYXRhKEdSZWZQdHI8R1Rhc2s+JiYsIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyop
OwogICAgICAgICB+V2ViU291cFJlcXVlc3RBc3luY0RhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAK
aW5kZXggMmM0ZDJmZjk0ODA5YzQyYTYxMTY3M2I1ZmI1Y2FkYmZhNTkxNjA0ZS4uYzliMGMzYjIx
NTdhZDhhZWJlNzQ2ZjRmMzlmYjVlZmNkNzVlNzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3Rv
bVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCkBAIC03
OCw3ICs3OCw3IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sUmVxdWVzdENsaWVudCBmaW5hbCA6IHB1
YmxpYyBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGllbnQKICAgICAgICAgaWYgKCFjdXN0b21Q
cm90b2NvbE1hbmFnZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjdXN0
b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChz
dGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVl
c3RBc3luY0RhdGE+KFdURk1vdmUodGFzayksIHJlcXVlc3QpKTsKKyAgICAgICAgYXV0byBjdXN0
b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbCht
YWtlVW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3lu
Y0RhdGE+KFdURk1vdmUodGFzayksIHJlcXVlc3QpKTsKICAgICAgICAgY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLT5zdGFydExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwgd2Via2l0U291cFJlcXVlc3RH
ZW5lcmljR2V0UmVxdWVzdChyZXF1ZXN0KSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
CmluZGV4IGY0ZDc1ZDlkZDMxODIwMDQ0OWEyYWIyZTU4ZTg4NjMxMjBjNzc3NDQuLjUwN2Y0ZjZm
ZmMzZDQwNjljMTM3ODI2NTI3NWM2NjA2NTRiNGM4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApA
QCAtNTYsNyArNTYsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYQogICAgICAgICBwYXJhbWV0
ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCktPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVlc3QudXJsKCkpOwogICAgIHBhcmFt
ZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpVc2U7CiAKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0
d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVn
aXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93
bmxvYWRJRCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2Fk
SUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkt
PmJsb2JSZWdpc3RyeSgpLCBzdWdnZXN0ZWROYW1lKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0
ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJiBkb3dubG9hZCkKQEAgLTkwLDcgKzkwLDcgQEAgdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihO
ZXR3b3JrRGF0YVRhc2smIG5ldHcKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29y
a0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtMb2FkPiYmIG5ldHdvcmtMb2FkLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlPj4mJiBibG9iRmlsZVJlZmVyZW5jZXMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotICAgIG1fcGVuZGluZ0Rvd25s
b2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1f
Y2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUobmV0
d29ya0xvYWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG93bmxvYWRJRCwgcmVxdWVz
dCwgcmVzcG9uc2UpKTsKKyAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIG1h
a2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERv
d25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQpA
QCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZWxzZQotICAgIGF1dG8gZG93bmxvYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwg
c2Vzc2lvbklEKTsKKyAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRo
aXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CiAKICAgICBkb3dubG9hZC0+cmVz
dW1lKHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwog
ICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3Bw
CmluZGV4IGE4ODRhY2IyOTVkNDJjZTkzZTIxYmFjNDMzMDg0ZDdiYmM0MzNlNjUuLmFlM2NhN2Uw
ZTRlZTdlYzg1ZGVhMmUzMDllMWQzYzIwYjc0OTY1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgRG93bmxvYWRNYXA6OkRvd25sb2FkTWFwVHlwZTo6QWRkUmVzdWx0IERvd25sb2Fk
TWFwOjphZGQoRG93bmxvYWRJRCBkb3dubG9hZElELAogICAgIGF1dG8gcmVzdWx0ID0gbV9kb3du
bG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBpZiAobV9kb3du
bG9hZHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkQXNzZXJ0aW9u
KTsKLSAgICAgICAgbV9kb3dubG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vz
c0Fzc2VydGlvbj4oZ2V0cGlkKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0
ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBt
YWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJf
cywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogICAgICAgICBSRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlRvb2sgJ1dlYktpdCBkb3dubG9hZHMnIGFzc2VydGlv
biBpbiBOZXR3b3JrUHJvY2VzcyIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKaW5kZXgg
YTI3ODI4ZDdhOGJkODRhN2FlMzc3MTY4Njc4NjkxYzc2N2YyNzk2ZC4uNTkxMjNmMmM0OGYxYzFl
NDE3OWJiMWQ1YmNlMTU3MGM2Yjc1NGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IFBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKElQQzo6Q29ubmVjdGlvbiogcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24sIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBXZWJD
b3JlOjpCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnksIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkTmFtZSkKLSAgICA6IG1fbmV0d29ya0xvYWQoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9h
ZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Np
b24pKQorICAgIDogbV9uZXR3b3JrTG9hZChtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywg
YmxvYlJlZ2lzdHJ5LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBuZXR3b3JrU2Vzc2lvbikpCiAgICAg
LCBtX3BhcmVudFByb2Nlc3NDb25uZWN0aW9uKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKQogewog
ICAgIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgPSBwYXJhbWV0ZXJzLmNsaWVu
dENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDFmMTAwNGUx
YjViY2QzOWQ4YjEyMmRmOGM2ZGE0OGQxMzdjNGJlNjEuLjMwMWRiZTM3ODMwMTY3OTJhYzEzNWQz
MGU2OTgxMjBiYTAyMGIwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC05MDMs
NyArOTAzLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3Rl
clNXQ29ubmVjdGlvbnMoKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1By
b2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGF1dG8gY29ubmVjdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9j
ZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIGNv
bm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJv
Y2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CiAgICAgCiAgICAg
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKTsKICAgICBMT0coU2VydmljZVdvcmtlciwgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24gLSAl
cyIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKaW5kZXggNDQ0MjBmZjVmZjIyOTliZTM3
NTRjZTM3Y2RkYzdlZTYxNjJlMTkzMS4uNTQzNTI4MjhlNjg3MjFhZjBiYWRlMGMwMjc1YmUyZjA5
NWExNjYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAg
dm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6Y29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kKFVzZXJDb250ZW50Q29udHJvbGwKIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFn
ZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3REYXRhPj4mJiBjb250ZW50UnVsZUxpc3RzKQogewogICAgIGF1dG8mIGJhY2tlbmQgPSAq
bV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBmb3IgKGF1dG8mJiBjb250ZW50UnVsZUxpc3Qg
OiBjb250ZW50UnVsZUxpc3RzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAppbmRleCA4NTZjYTFmMDk1ZTEwM2M1NDJhZDRl
NDMwMDBiY2I3MGZmMWZiMzA3Li44YTZjNWExZjIxOGQzYzlhYjIxMDRkZjA5NDY5MmNjM2Y2NTUy
MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJXZWJLaXRCbG9iUmVzb3VyY2UiOwogCiBOZXR3
b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnksIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENvbnRlbnRTbmlmZmlu
Z1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mIGZpbGVSZWZlcmVuY2VzKQogICAgIDogTmV0d29ya0Rh
dGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkRvTm90VXNlLCBmYWxzZSwgZmFsc2UpCi0gICAgLCBtX3N0cmVhbShzdGQ6Om1ha2VfdW5pcXVl
PEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpKQorICAgICwgbV9zdHJlYW0obWFrZVVuaXF1ZTxBc3lu
Y0ZpbGVTdHJlYW0+KCp0aGlzKSkKICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoZmlsZVJlZmVyZW5j
ZXMpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKHNlc3Npb24ubmV0d29ya1Byb2Nlc3MoKSkKIHsK
QEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkK
ICAgICB9CiAKICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5k
b3dubG9hZE1hbmFnZXIoKTsKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxE
b3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9z
ZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgYXV0byBkb3du
bG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93
bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1l
KCkpOwogICAgIGF1dG8qIGRvd25sb2FkUHRyID0gZG93bmxvYWQuZ2V0KCk7CiAgICAgZG93bmxv
YWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKG1fcGVuZGluZ0Rvd25sb2FkSUQs
IFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBkb3dubG9hZFB0ci0+ZGlkQ3JlYXRlRGVzdGluYXRp
b24obV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCmluZGV4
IGY2NTQyOTU4YjQ3MTAzZDM4MWY4Y2M1MzcwZDlkNmI1OTRkYzExNmMuLjE5MzI2ZjJmNDdkYzlm
NGY2MjI4YTRjOWFhODRmNmM5ZmFhYmI3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCkBAIC02
Nyw3ICs2Nyw3IEBAIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlcigpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBt
X2RhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4oKTsK
KyAgICAgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+
KCk7CiAgICAgICAgIGJvb2wgaXNEYXRhYmFzZU9wZW4gPSBtX2RhdGFiYXNlLT5vcGVuKHBhdGgs
IFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpPcGVuTW9kZTo6UmVhZE9ubHkpOwogICAgICAgICBp
ZiAoIWlzRGF0YWJhc2VPcGVuKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04MCw3ICs4MCw3
IEBAIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
cigpCiAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSB1c2luZyBhIHdvcmtlclF1ZXVlLCB0aGUgc2Vx
dWVudGlhbCBkaXNwYXRjaCBibG9ja3MgbWF5IGJlIGNhbGxlZCBieSBkaWZmZXJlbnQgdGhyZWFk
cy4KICAgICAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogCi0gICAg
ICAgIG1fc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ+KCptX2RhdGFiYXNlLCBodHRwc1VwZ3JhZGVDaGVja2VyUXVlcnkpOworICAgICAgICBtX3N0
YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFz
ZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsKICAgICAgICAgaW50IGlzU3RhdGVtZW50UHJl
cGFyZWQgPSAobV9zdGF0ZW1lbnQtPnByZXBhcmUoKSA9PSBTUUxJVEVfT0spOwogICAgICAgICBB
U1NFUlQoaXNTdGF0ZW1lbnRQcmVwYXJlZCk7CiAgICAgICAgIGlmICghaXNTdGF0ZW1lbnRQcmVw
YXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIuaAppbmRleCBkY2Q0NmE2MDFiZTYzMDk4NmZjMmFlMGMxYzk2
NTU4Yzk1OTIyMDhhLi41MWQyMDMxNGVhYTQ5ZTk2YTQxYTU3Y2U4ZDQyMjI2YmJmYjA3MjMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFNlc3Npb25JRDsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXIoKTsKICAgICB+TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggOTEwN2ZlYzFl
MzRkYjQ0ODgxNjIyODY4NjIyYzhmYmViNWIzODgzYy4uZWU4MGFjNmVhMWE3Nzk3NzNhMDcxMGUx
Nzg4NzA2Mzc2N2M1MTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZQog
ICAgIH0KIAogICAgIGlmIChtX2xvYWRUaHJvdHRsZUxhdGVuY3kgPiAwX3MpIHsKLSAgICAgICAg
bV90aHJvdHRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VGhyb3R0bGU+KCp0aGlzLCBtX2xvYWRUaHJv
dHRsZUxhdGVuY3ksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgICAgIG1fdGhyb3R0bGUgPSBtYWtlVW5pcXVlPFRocm90dGxlPigqdGhpcywgbV9s
b2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggNDA5NzE0ZDY2
NzI2YTg0NzRhZmYyOWExNjA4MTdmMjQ3OTY3YjAxNi4uZTFhZTAwYmQ5ZDk1NDc3NzgxNzQzOTg1
ZGYwNzNhOGIxY2QyNTM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgTmV0d29y
a0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0CiAgICAgICAgIG1fZnJhbWVJRCwKICAgICAgICAgbV9zdG9yZWRDcmVkZW50
aWFsc1BvbGljeQogICAgIH07Ci0gICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdl
dCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcywgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RG
TW92ZShoYW5kbGVyKSwgaXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJv
cikgbXV0YWJsZSB7CisgICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgW3Ro
aXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVy
KSwgaXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNoZWNrQ09SU1JlcXVlc3RXaXRoUHJl
ZmxpZ2h0IC0gbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQgcHJlZmxp
Z2h0IGNvbXBsZXRlLCBzdWNjZXNzOiAlZCBmb3JSZWRpcmVjdD8gJWQiLCBlcnJvci5pc051bGwo
KSwgaXNSZWRpcmVjdGVkKTsKIAogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CkBAIC00
NDYsNyArNDQ2LDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBOZXR3b3JrTG9hZENoZWNrZXI6
OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRTZWN1cml0eVBv
bGljeSAmJiBtX2NzcFJlc3BvbnNlSGVhZGVycykgewogICAgICAgICAvLyBGSVhNRTogUGFzcyB0
aGUgVVJMIG9mIHRoZSBwcm90ZWN0ZWQgcmVzb3VyY2UgaW5zdGVhZCBvZiBpdHMgb3JpZ2luLgot
ICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dFNlY3VyaXR5UG9saWN5PihVUkwgeyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJpbmcoKSB9KTsK
KyAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1
cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7CiAgICAg
ICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5LT5kaWRSZWNlaXZlSGVhZGVycygqbV9jc3BSZXNw
b25zZUhlYWRlcnMsIFN0cmluZyB7IG1fcmVmZXJyZXIgfSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRQYXJzaW5nRXJyb3JzOjpObyk7CiAgICAgfQogICAgIHJldHVybiBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTU0YTU0ZmVlNzQ4M2JmMTJkMmE5NGNhNGE2ZDljODJm
NWIzOWJlMy4uMWM2YjhkMWVkOGMyMTUyMjk4NDNjZDlhMDE4Y2FkY2I4NjYxZGVkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUw
Myw5ICs1MDMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQo
KSkpOwogICAgIH0KIAotICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0
b3JhZ2UpKTsKKyAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAj
ZWxpZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCi0gICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIG1fZGVmYXVsdE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICNlbmRpZgogfQogCkBA
IC01MzUsOSArNTM1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbihjb25z
dCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgIGNv
b2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3Jh
Z2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAK
LSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1v
dmUoY29va2llU3RvcmFnZSkpOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtl
VW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VT
ZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkgfHwgVVNF
KFNPVVApCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOworICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsK
ICNlbmRpZgogfQogCkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBTV1NlcnZlciYgTmV0d29ya1Byb2Nl
c3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAg
IC8vIElmIHRoZXJlJ3Mgbm90LCB0aGVuIHdoZXJlIGRpZCB0aGlzIFBBTDo6U2Vzc2lvbklEIGNv
bWUgZnJvbT8KICAgICAgICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpIHx8ICFwYXRo
LmlzRW1wdHkoKSk7CiAgICAgICAgIAotICAgICAgICBhdXRvIHZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3Zl
KHBhdGgpLCBzZXNzaW9uSUQpOworICAgICAgICBhdXRvIHZhbHVlID0gbWFrZVVuaXF1ZTxTV1Nl
cnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBz
ZXNzaW9uSUQpOwogICAgICAgICBpZiAobV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5KQogICAgICAgICAgICAgdmFsdWUtPmRpc2FibGVTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwpAQCAt
MjU1NSw2ICsyNTU1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFj
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE8KIH0KIAogY2xhc3MgUXVv
dGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVF1b3RhVXNl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
UXVvdGFVc2VySW5pdGlhbGl6ZXIoU3RvcmFnZVF1b3RhTWFuYWdlciYgbWFuYWdlcikKICAgICAg
ICAgOiBtX21hbmFnZXIobWFrZVdlYWtQdHIobWFuYWdlcikpCkBAIC0yNTg5LDcgKzI1OTAsNyBA
QCBjbGFzcyBRdW90YVVzZXJJbml0aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9y
YWdlUXVvdGFVc2VyIHsKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNl
cnMoU3RvcmFnZVF1b3RhTWFuYWdlciYgbWFuYWdlciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgb3Jp
Z2luLCB1c2VyID0gc3RkOjptYWtlX3VuaXF1ZTxRdW90YVVzZXJJbml0aWFsaXplcj4obWFuYWdl
cildKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQsIG9yaWdpbiwgdXNlciA9IG1ha2VV
bmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLT5pZGJT
ZXJ2ZXIoc2Vzc2lvbklEKS5pbml0aWFsaXplUXVvdGFVc2VyKG9yaWdpbik7CkBAIC0yNjAzLDcg
KzI2MDQsNyBAQCBTdG9yYWdlUXVvdGFNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1
b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgICAgICByZXR1cm4gU3RvcmFn
ZVF1b3RhTWFuYWdlcnMgeyB9OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4g
KnN0b3JhZ2VRdW90YU1hbmFnZXJzLm1hbmFnZXJzUGVyT3JpZ2luKCkuZW5zdXJlKG9yaWdpbiwg
W3RoaXMsICZzdG9yYWdlUXVvdGFNYW5hZ2Vycywgc2Vzc2lvbklELCAmb3JpZ2luXSB7Ci0gICAg
ICAgIGF1dG8gbWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4o
c3RvcmFnZVF1b3RhTWFuYWdlcnMuZGVmYXVsdFF1b3RhKG9yaWdpbiksIFt0aGlzLCBzZXNzaW9u
SUQsIG9yaWdpbl0odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0
X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgeworICAgICAgICBhdXRvIG1hbmFnZXIg
PSBtYWtlVW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRl
ZmF1bHRRdW90YShvcmlnaW4pLCBbdGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1
b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8g
Y2FsbGJhY2spIHsKICAgICAgICAgICAgIHRoaXMtPnJlcXVlc3RTdG9yYWdlU3BhY2Uoc2Vzc2lv
bklELCBvcmlnaW4sIHF1b3RhLCBjdXJyZW50U3BhY2UsIHNwYWNlSW5jcmVhc2UsIFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICAgICAgfSk7CiAgICAgICAgIGluaXRpYWxpemVRdW90YVVzZXJzKCpt
YW5hZ2VyLCBzZXNzaW9uSUQsIG9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYTkyYjcyNDFlYjI5OGVhNjZjNWE4YTI4NDc0ZjQw
M2U1N2U0NWMzOS4uNjU1NWIwODY1NTQ0YTUzYzdkZjE2MjVhYTE0ZTA4ZmNjZDgzNmQxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTUy
LDcgKzE1Miw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzIDogcHVibGljIEF1eGlsaWFyeVByb2Nl
c3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQsCiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxl
bWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4oKnRoaXMp
KTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVu
aXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCA0NzgyZWYxNWYzZGVlZTVhZjRlYWVmMDVjZGY2MDM2YWU3ZTZkMmZiLi44YzMzZmI4
NjBhZDdhNzg3MzZlNGI4ZmJhZGYyMGM3NzU1MzI5ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMTEs
NyArMTExLDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIo
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXIKIAogICAgIGlmIChzeW5jaHJvbm91
c1JlcGx5IHx8IHBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgfHwg
cGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSkgewogICAgICAgICBOZXR3b3JrTG9hZENoZWNr
ZXI6OkxvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSA9IGlzTWFpbkZyYW1lTG9hZCgpID8gTmV0d29y
a0xvYWRDaGVja2VyOjpMb2FkVHlwZTo6TWFpbkZyYW1lIDogTmV0d29ya0xvYWRDaGVja2VyOjpM
b2FkVHlwZTo6T3RoZXI7Ci0gICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwg
RmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnMgfSwgbV9wYXJhbWV0ZXJzLnNlc3Np
b25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIEhU
VFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwg
eyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2lu
LmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgb3JpZ2luYWxSZXF1ZXN0
KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQsIHNo
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpLCByZXF1ZXN0TG9hZFR5cGUpOwor
ICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWRDaGVj
a2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1l
dGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0
ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3Qu
dXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVy
cy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3Bh
cmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKICAgICAgICAgaWYgKG1fcGFyYW1ldGVy
cy5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+
c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyB7IG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMudmFsdWUoKSB9KTsKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTE5LDcgKzExOSw3IEBAIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYgcGFyCiAjZW5kaWYKICAgICB9CiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkpCi0gICAg
ICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNM
b2FkRGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7CisgICAgICAgIG1fc3luY2hyb25v
dXNMb2FkRGF0YSA9IG1ha2VVbmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5j
aHJvbm91c1JlcGx5KSk7CiB9CiAKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6fk5ldHdvcmtSZXNv
dXJjZUxvYWRlcigpCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EK
ICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBuZXR3b3JrU2Vzc2lvbi0+
YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpOwogCiAg
ICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAgICBtX25ldHdvcmtM
b2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lv
bi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7
CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0
d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29y
a1Nlc3Npb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9h
ZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRh
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CmluZGV4IDUwNmU3ZmYwOGZiYzlhNzY0ZWE4MzAzMDk0YjZkMzA2NzRhM2YzYTQuLjMzNWIxOWJm
YjA5MDUwYTdmYmFkMzMzODQ3YjFjNGY1MmNjYzYwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgQ2Fj
aGU7CiB9CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5l
dHdvcmtTZXNzaW9uPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdmlydHVh
bCB+TmV0d29ya1Nlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMDRlM2QwMjUyMjBkZTRjNDNjNzM2
MmRhMTQxZGYzMmJhMjAzMGZhZi4uNTkxODg1NzU3YTg0NzUxYzgzMThmN2JlNWQyNzVhN2YxMWM1
YTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gTmV0d29ya1NvY2tl
dENoYW5uZWw6OmNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25u
ZWN0aW9uLCBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0g
bWFrZVVuaXF1ZTxOZXR3b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5u
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3Rv
Y29sLCBpZGVudGlmaWVyKTsKICAgICBpZiAoIXJlc3VsdC0+bV9zb2NrZXQpIHsKICAgICAgICAg
cmVzdWx0LT5kaWRDbG9zZSgwLCAiQ2Fubm90IGNyZWF0ZSBhIHdlYiBzb2NrZXQgdGFzayJfcyk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDY3MmIzNzgxYTRkNGEzNGI5YzFl
MWUyNDE1YmQ0OTEwZTc3OWVkNzEuLjlkZjlhYWNkY2IzMzJlMDQxZGI2OWJkMDY4MTAyMjljZjhi
YjRlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRDaGFubmVsLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBj
bGFzcyBOZXR3b3JrU2Vzc2lvbjsKIAogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWwgOiBwdWJs
aWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IGNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCBkOTBj
Y2NhOTgwYThlZmZjMmQ0ZjM4ZjVlM2Y2YmMwYWEyYzJlNTQ2Li4yYzY0MjdlNjQ4MjJjZWY1ZDFh
ODEyMDI1ZWZkNmM4NTQ1NDFjZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApAQCAtNTMsNyArNTMsNyBAQCBQcmVjb25uZWN0VGFzazo6
UHJlY29ubmVjdFRhc2soTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrTG9h
ZFBhcmFtZQogICAgIH0KIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RP
bmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3
b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vz
c2lvbik7CiAKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IDNhNTlm
ZmE2YTFhMDhkNjNkZTViZmY1OWUzZjY5NDZmMGU0MDhlYjQuLjA0Nzk5MjA4OTZkYTI1N2ZjNTg2
NDUxNjBjMDAwOWQxNjRjZTVmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViU29ja2V0VGFzayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiB1aW50NjRfdCBUYXNrSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggYmY1MTU3OGZiMTQ3ZGRkYzg3ZTY2ZDkwYTVlZGQwMmE0
Y2Q3MjY5My4uY2M4Nzg0ZDQyODNhNjI1ZmMwZTFkOWVmYWE1MjcwNTIzYWM3MTE4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xv
Y2FsU3RvcmFnZSkKLSAgICAgICAgbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRp
bmdUb0xvY2FsU3RvcmFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNh
Ymxlcj4oKTsKKyAgICAgICAgbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdU
b0xvY2FsU3RvcmFnZSA9IG1ha2VVbmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsK
IAogICAgIG1fZGlkU2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSA9IHRydWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAz
ZTlkMTdkNjAyZDM0MTc3MDMzYzkzMzhiNGJiZTZkYTBiYWJhOGE0Li5iMDgzZDVkMzJhNTFlNjFk
YTQzNzZkZjk0NDZlZjExMTRlYTZiZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC04NCwxNyArODQsMTcgQEAgQ2Fj
aGU6OkNhY2hlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVmPFN0b3JhZ2U+JiYg
c3RvcmFnZSwgT3B0aW9uU2V0PEMKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxB
VElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoQ2FjaGVPcHRpb246
OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKSkgewotICAgICAgICBtX2xvd1Bvd2VyTW9kZU5vdGlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3RpZmllcj4oW3Ro
aXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7CisgICAgICAgIG1fbG93UG93ZXJNb2Rl
Tm90aWZpZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhp
c10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKICAgICAgICAgICAgIEFTU0VSVChXVEY6
OlJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgIGlmIChpc0xvd1Bvd2VyTW9kZUVuYWJs
ZWQpCiAgICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9zcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyKTsKLSAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3Jh
Z2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IG1h
a2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBpZiAoIW1fbG93UG93ZXJNb2Rl
Tm90aWZpZXItPmlzTG93UG93ZXJNb2RlRW5hYmxlZCgpKQotICAgICAgICAgICAgbV9zcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
PigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2Fk
TWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3Rv
cmFnZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHZvaWQg
Q2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRs
ZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAgCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpt
YWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VE
YXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2Vz
cygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBX
VEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRl
cnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVz
cG9uc2UpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0
RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1By
b2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1
bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNDU3LDcg
KzQ1Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnVwZGF0ZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSA9IGV4aXN0aW5nRW50cnkucmVzcG9uc2UoKTsKICAgICBXZWJDb3Jl
Ojp1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlvbihyZXNwb25zZSwgdmFsaWRh
dGluZ1Jlc3BvbnNlKTsKIAotICAgIGF1dG8gdXBkYXRlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVudHJ5PihleGlzdGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRyeS5idWZm
ZXIoKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2Vz
cygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKSk7
CisgICAgYXV0byB1cGRhdGVFbnRyeSA9IG1ha2VVbmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnku
a2V5KCksIHJlc3BvbnNlLCBleGlzdGluZ0VudHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0
VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCksIG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UpKTsKICAgICBhdXRvIHVwZGF0ZVJlY29y
ZCA9IHVwZGF0ZUVudHJ5LT5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAogICAgIG1fc3RvcmFn
ZS0+c3RvcmUodXBkYXRlUmVjb3JkLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCA3YWUxYzJm
ZTdkY2U2MDdiOWY4YTUzZDk5YTFiZDc5ODUzOTliY2YxLi4xZjQxNDRhOGZhZTg3YmY1ZmM1Yzgz
ZWQ5MDJiNmZmMDhhMDY0YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBA
IFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAog
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBT
dG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbnRyeT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVu
aXF1ZTxFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRl
ci5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fcmVzcG9uc2UpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDk0YjYwNjhhMGRmZWQ3NDJm
YWZmZGU1NzY4ODcwNWFlN2E0NjIwMWIuLmJiOTdjN2EzZjI3NjE3NmQwOWZmNDgzNWIyZjNiOTdl
ZjJlNThmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTU5LDcg
KzU5LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBj
b25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRT
bmlmZmluZ1BvbGljeSA9IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7
CiAgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBt
X29yaWdpbmFsUmVxdWVzdDsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxO
ZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpjYWNoZS5u
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpKTsKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4o
KnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpjYWNoZS5uZXR3b3JrUHJvY2Vz
cygpLm5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsK
IH0KIAogU3BlY3VsYXRpdmVMb2FkOjp+U3BlY3VsYXRpdmVMb2FkKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCmluZGV4IDFjZDZiNDkyZjgxYTVhODFk
MjRjYTc5MTA4ZGE2YjE5ZTBjMDAzZjEuLjU3ZThlNzU5OWIxY2NhNjViMjZlMDZlYzM4NzJlZTJk
ZDk0OWRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBl
bmRpbmdGcmFtZUxvYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nRnJhbWVMCiAgICAgdm9p
ZCByZWdpc3RlclN1YnJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IEtleSYgc3VicmVzb3VyY2VLZXkpCiAgICAgewogICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgICAgICBtX3N1YnJlc291cmNlTG9hZHMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8U3VicmVzb3VyY2VMb2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkpOworICAg
ICAgICBtX3N1YnJlc291cmNlTG9hZHMuYXBwZW5kKG1ha2VVbmlxdWU8U3VicmVzb3VyY2VMb2Fk
PihyZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkpOwogICAgICAgICBtX2xvYWRIeXN0ZXJlc2lzQWN0
aXZpdHkuaW1wdWxzZSgpOwogICAgIH0KIApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBSZXRyaWV2
ZUNvbXBsZXRpb25ICiAgICAgQVNTRVJUKG1fcGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5zKHN0b3Jh
Z2VLZXkpKTsKICAgICAvLyBGSVhNRTogVGhpcyBicmVha3MgaW5jcmVtZW50YWwgbG9hZGluZyB3
aGVuIHRoZSByZXZhbGlkYXRpb24gaXMgbm90IHN1Y2Nlc3NmdWwuCiAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3BlbmRpbmdSZXRyaWV2ZVJlcXVlc3RzLmVuc3VyZShzdG9yYWdlS2V5LCBbXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25I
YW5kbGVyPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJldHJpZXZlQ29t
cGxldGlvbkhhbmRsZXI+PigpOwogICAgIH0pOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC00MDQsNyArNDA0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeShzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb24KICAgICBBU1NFUlQoZW50cnkpOwogICAgIEFT
U0VSVCghZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKICAgICBhdXRvIGtleSA9IGVudHJ5LT5r
ZXkoKTsKLSAgICBtX3ByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxQ
cmVsb2FkZWRFbnRyeT4oV1RGTW92ZShlbnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVz
dCksIFt0aGlzLCBrZXksIGZyYW1lSURdIHsKKyAgICBtX3ByZWxvYWRlZEVudHJpZXMuYWRkKGtl
eSwgbWFrZVVuaXF1ZTxQcmVsb2FkZWRFbnRyeT4oV1RGTW92ZShlbnRyeSksIFdURk1vdmUocmV2
YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgYXV0byBw
cmVsb2FkZWRFbnRyeSA9IG1fcHJlbG9hZGVkRW50cmllcy50YWtlKGtleSk7CiAgICAgICAgIEFT
U0VSVChwcmVsb2FkZWRFbnRyeSk7CiAgICAgICAgIGlmIChwcmVsb2FkZWRFbnRyeS0+d2FzUmV2
YWxpZGF0ZWQoKSkKQEAgLTQ0OSw3ICs0NDksNyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMoY29uc3QgS2V5JiBrZXksIEVudHJ5KiBlbnRyeQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIGNvbXBsZXRpb25IYW5kbGVy
IDogKmNvbXBsZXRpb25IYW5kbGVycykKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkg
PyBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PigqZW50cnkpIDogbnVsbHB0cik7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVudHJ5ID8gbWFrZVVuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6IG51bGxw
dHIpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3Vy
Y2VJbmZvJiBzdWJyZXMKIAogICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRp
bmcsICIoTmV0d29ya1Byb2Nlc3MpIFNwZWN1bGF0aXZlbHkgcmV2YWxpZGF0aW5nICclcyc6Iiwg
a2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gcmV2YWxpZGF0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4obV9jYWNoZSwgZnJhbWVJRCwgcmV2
YWxpZGF0aW9uUmVxdWVzdCwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlv
blJlcXVlc3QsIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRy
eSkgeworICAgIGF1dG8gcmV2YWxpZGF0b3IgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4o
bV9jYWNoZSwgZnJhbWVJRCwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgV1RGTW92ZShlbnRyeSksIFt0
aGlzLCBrZXksIHJldmFsaWRhdGlvblJlcXVlc3QsIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50
cnkgfHwgIXJldmFsaWRhdGVkRW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKICAgICAgICAgQVNT
RVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8IHJldmFsaWRhdGVkRW50cnktPmtleSgpID09IGtleSk7
CiAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0
U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29uc3QgR2xvYmFsRnJhbWVJRCYgZgogICAgICAgICAg
ICAgcHJlbG9hZEVudHJ5KGtleSwgc3VicmVzb3VyY2VJbmZvLCBmcmFtZUlEKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5n
LCAiKE5ldHdvcmtQcm9jZXNzKSBOb3QgcHJlbG9hZGluZyAnJXMnIGJlY2F1c2UgaXQgaXMgbWFy
a2VkIGFzIHRyYW5zaWVudCIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxF
eHBpcmluZ0VudHJ5PihbdGhpcywga2V5LCBmcmFtZUlEXSB7CisgICAgICAgICAgICBtX25vdFBy
ZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgbWFrZVVuaXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywg
a2V5LCBmcmFtZUlEXSB7CiAgICAgICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlh
Z25vc3RpY01lc3NhZ2UobV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLCBmcmFtZUlELCBEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmVudHJ5UmlnaHRseU5vdFdhcm1lZFVwS2V5KCkpOwogICAgICAgICAg
ICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5yZW1vdmUoa2V5KTsKICAgICAgICAgICAgIH0p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGJiZmM2NDk4OTBmOTVjYzdlMDRjZTgyYTRmZTMy
OTQ0ZGMxYWIxZjAuLjgwNGM0Mjk4Y2MzZTNjMjgxNGZkYmMyYmJiNmNiZWU1NzU4NGFlNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMjkwLDggKzI5MCw4IEBAIHZvaWQgU3RvcmFnZTo6c3lu
Y2hyb25pemUoKQogICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNz
KSBzeW5jaHJvbml6aW5nIGNhY2hlIik7CiAKICAgICBiYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewot
ICAgICAgICBhdXRvIHJlY29yZEZpbHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudHNGaWx0
ZXI+KCk7Ci0gICAgICAgIGF1dG8gYmxvYkZpbHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dHNGaWx0ZXI+KCk7CisgICAgICAgIGF1dG8gcmVjb3JkRmlsdGVyID0gbWFrZVVuaXF1ZTxDb250
ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAgYXV0byBibG9iRmlsdGVyID0gbWFrZVVuaXF1ZTxDb250
ZW50c0ZpbHRlcj4oKTsKIAogICAgICAgICAvLyBNb3N0IG9mIHRoZSBkaXNrIHNwYWNlIHVzYWdl
IGlzIGluIGJsb2JzIGlmIHdlIGFyZSB1c2luZyB0aGVtLiBBcHByb3hpbWF0ZSByZWNvcmRzIGZp
bGUgc2l6ZXMgdG8gYXZvaWQgZXhwZW5zaXZlIHN0YXQoKSBjYWxscy4KICAgICAgICAgc2l6ZV90
IHJlY29yZHNTaXplID0gMDsKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIFN0b3JhZ2U6OnJlYWRS
ZWNvcmQoUmVhZE9wZXJhdGlvbiYgcmVhZE9wZXJhdGlvbiwgY29uc3QgRGF0YSYgcmVjb3JkRGF0
YSkKICAgICB9CiAKICAgICByZWFkT3BlcmF0aW9uLmV4cGVjdGVkQm9keUhhc2ggPSBtZXRhRGF0
YS5ib2R5SGFzaDsKLSAgICByZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IHN0ZDo6bWFrZV91
bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihTdG9yYWdlOjpSZWNvcmQgeworICAgIHJlYWRPcGVyYXRp
b24ucmVzdWx0UmVjb3JkID0gbWFrZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJl
Y29yZCB7CiAgICAgICAgIG1ldGFEYXRhLmtleSwKICAgICAgICAgbWV0YURhdGEudGltZVN0YW1w
LAogICAgICAgICBoZWFkZXJEYXRhLApAQCAtNzU4LDcgKzc1OCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUPiBib29sIHJldHJpZXZlRnJvbU1lbW9yeShjb25zdCBUJiBvcGVyYXRpb25zLCBjb25zdCBL
ZXkmIGtleSwKICAgICAgICAgaWYgKG9wZXJhdGlvbi0+cmVjb3JkLmtleSA9PSBrZXkpIHsKICAg
ICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBmb3Vu
ZCB3cml0ZSBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MiKTsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcmVjb3JkID0gb3BlcmF0aW9uLT5yZWNvcmQsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3Jk
PihyZWNvcmQpLCB7IH0pOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihyZWNvcmQpLCB7IH0pOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtODYyLDcgKzg2Miw3IEBAIHZv
aWQgU3RvcmFnZTo6cmV0cmlldmUoY29uc3QgS2V5JiBrZXksIHVuc2lnbmVkIHByaW9yaXR5LCBS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kCiAgICAgaWYgKHJldHJpZXZlRnJvbU1lbW9yeShtX2FjdGl2
ZVdyaXRlT3BlcmF0aW9ucywga2V5LCBjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gcmVhZE9wZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZE9wZXJh
dGlvbj4oKnRoaXMsIGtleSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8g
cmVhZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8UmVhZE9wZXJhdGlvbj4oKnRoaXMsIGtleSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgcmVhZE9wZXJhdGlvbi0+dGltaW5ncy5z
dGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICByZWFkT3BlcmF0aW9uLT50aW1p
bmdzLmRpc3BhdGNoQ291bnRBdFN0YXJ0ID0gbV9yZWFkT3BlcmF0aW9uRGlzcGF0Y2hDb3VudDsK
QEAgLTg3OSw3ICs4NzksNyBAQCB2b2lkIFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFJlY29yZCYgcmVj
b3JkLCBNYXBwZWRCb2R5SGFuZGxlciYmIG1hcHBlZEJvZHlIYW5kbGVyLAogICAgIGlmICghbV9j
YXBhY2l0eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8V3JpdGVPcGVyYXRpb24+KCp0aGlzLCByZWNvcmQsIFdURk1vdmUobWFw
cGVkQm9keUhhbmRsZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byB3
cml0ZU9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8V3JpdGVPcGVyYXRpb24+KCp0aGlzLCByZWNvcmQs
IFdURk1vdmUobWFwcGVkQm9keUhhbmRsZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgbV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLnByZXBlbmQoV1RGTW92ZSh3cml0ZU9wZXJh
dGlvbikpOwogCiAgICAgLy8gQWRkIGtleSB0byB0aGUgZmlsdGVyIGFscmVhZHkgaGVyZSBhcyB3
ZSBkbyBsb29rdXBzIGZyb20gdGhlIHBlbmRpbmcgb3BlcmF0aW9ucyB0b28uCkBAIC04OTgsNyAr
ODk4LDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlv
blNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICBBU1NFUlQodHJhdmVyc2VIYW5k
bGVyKTsKICAgICAvLyBBdm9pZCBub24tdGhyZWFkIHNhZmUgRnVuY3Rpb24gY29waWVzLgogCi0g
ICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhdmVyc2VP
cGVyYXRpb24+KG1ha2VSZWYoKnRoaXMpLCB0eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2ZXJzZUhh
bmRsZXIpKTsKKyAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRyID0gbWFrZVVuaXF1ZTxUcmF2
ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhpcyksIHR5cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZl
cnNlSGFuZGxlcikpOwogICAgIGF1dG8mIHRyYXZlcnNlT3BlcmF0aW9uID0gKnRyYXZlcnNlT3Bl
cmF0aW9uUHRyOwogICAgIG1fYWN0aXZlVHJhdmVyc2VPcGVyYXRpb25zLmFkZChXVEZNb3ZlKHRy
YXZlcnNlT3BlcmF0aW9uUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRy
eS5jcHAKaW5kZXggN2I4ODkyMjk5NTM5ZGIzNGM1YjM5MTRkM2IyMTRjZThiODE0M2I5OC4uNjNh
ZDA0MDlmZGQyMzZmNmUzYzJjYTMwZTg3ZTRhN2MwYTI5NTkwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgU3RvcmFnZTo6UmVjb3Jk
IFN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiBzdGQ6
OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IFN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVT
dG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQogewotICAg
IGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdl
RW50cnkpOworICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPFN1YnJlc291cmNlc0VudHJ5Pihz
dG9yYWdlRW50cnkpOwogCiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0
b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRyeS0+bV9zdWJyZXNvdXJjZXMpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5k
ZXggZDhhMDU5NDBkNzE5N2ViMzIyNWEzNmJjNTEzYTJkYjYxMGRiMGNkOC4uNzEwNGQxZjc0Y2Q3
MDFjYmNlY2ZhYjU3ZDI0ZWJmZjhkYWViZWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCkBAIC03Myw4ICs3Myw4IEBA
IHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07CiB2b2lkIFBy
ZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAgIG1fc2Vzc2lv
blByZWZldGNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKLSAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvblByZWZldGNoZXMtPmFkZChyZXF1ZXN0VXJsLCBz
dGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlc3BvbnNlKSwg
V1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5p
cXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lv
blByZWZldGNoZXMtPmFkZChyZXF1ZXN0VXJsLCBtYWtlVW5pcXVlPFByZWZldGNoQ2FjaGU6OkVu
dHJ5PihXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShidWZmZXIpKSk7CiAgICAgLy8gTGltaXQg
cHJlZmV0Y2hlcyBmb3Igc2FtZSB1cmwgdG8gMS4KICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0Vu
dHJ5KQogICAgICAgICByZXR1cm47CkBAIC04Niw5ICs4Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNo
ZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzCiB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiByZXF1
ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0KQogewogICAgIGlmICghbV9z
ZXNzaW9uUHJlZmV0Y2hlcykKLSAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOworICAgICAgICBtX3Nlc3Npb25QcmVmZXRj
aGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CiAgICAgcmVkaXJlY3RSZXF1
ZXN0LmNsZWFyUHVycG9zZSgpOwotICAgIG1fc2Vzc2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0
VXJsLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlZGly
ZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCkpKTsKKyAgICBtX3Nlc3Npb25Q
cmVmZXRjaGVzLT5zZXQocmVxdWVzdFVybCwgbWFrZVVuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRy
eT4oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpKSk7
CiAgICAgbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3QuYXBwZW5kKHN0ZDo6bWFrZV90dXBsZShyZXF1
ZXN0VXJsLCBXYWxsVGltZTo6bm93KCkpKTsKICAgICBpZiAoIW1fZXhwaXJhdGlvblRpbWVyLmlz
QWN0aXZlKCkpCiAgICAgICAgIG1fZXhwaXJhdGlvblRpbWVyLnN0YXJ0T25lU2hvdChleHBpcmF0
aW9uVGltZW91dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5oCmluZGV4IGExNzEwYmFlOWU1YTg4NTI2Y2VmYTNiMzlhYTc4OGZhYWYy
Y2ZhMGUuLmEyNTE1MjBiMzFlYWM5MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEzOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBA
IC00Niw2ICs0Niw3IEBAIGNsYXNzIFByZWZldGNoQ2FjaGUgewogICAgIHZvaWQgY2xlYXIoKTsK
IAogICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbQppbmRleCAwNzdmMTZmYTY1MDY1MmM3ODdhNmYwMzE2MDkwOTAyNjhlYmI4YWMwLi5jY2Uy
NmFjZmIwNGNmNzA3NGU3NjNmNWJiYzhlNGE1ZTk4YTE1YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1t
CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKIAogc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBs
YXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpzb3VyY2VB
cHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpCiBO
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciYgTmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyKCkKIHsKICAgICBpZiAoIW1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIp
Ci0gICAgICAgIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyPigpOworICAgICAgICBtX25ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsK
ICAgICByZXR1cm4gKm1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQppbmRleCA0YTYxZGYxNGRjZmYyZTZjM2QwZTA5MGVkM2U1MWNiNjAzMTVlNjQ0Li40
Njg2ODkzNWM2YzY0MmMyMDQ4Mjg4ZmJlMzg3OTAzYzAxMjgyMDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCkBAIC04MDIsNyArODAyLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEKICAgICAgICAg
UmVmPE5ldHdvcmtEYXRhVGFza0NvY29hPiBwcm90ZWN0ZWROZXR3b3JrRGF0YVRhc2soKm5ldHdv
cmtEYXRhVGFzayk7CiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFzay0+
cGVuZGluZ0Rvd25sb2FkSUQoKTsKICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nl
c3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgICAgIGF1dG8g
ZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFu
YWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5l
dHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgICAgIGF1dG8gZG93bmxv
YWQgPSBtYWtlVW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxv
YWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFz
ay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNm
ZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZCgqZG93bmxvYWQpOwogICAgICAgICBBU1NFUlQo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdv
cmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CkBAIC04OTcsNyArODk3LDcg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+
IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJv
Y2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29y
a1Nlc3Npb25Db2NvYT4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQog
CiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwcm94eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJv
eHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eSkKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2Nr
ZXRUYXNrKE5ldHdvcmtTCiB7CiAgICAgLy8gRklYTUU6IFVzZSBwcm90b2NvbC4KICAgICBSZXRh
aW5QdHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzaz4gdGFzayA9IFttX3Nlc3Npb25XaXRoQ3Jl
ZGVudGlhbFN0b3JhZ2UuZ2V0KCkgd2ViU29ja2V0VGFza1dpdGhSZXF1ZXN0OiByZXF1ZXN0Lm5z
VVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQ
Qm9keSldOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5u
ZWwsIFdURk1vdmUodGFzaykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+
KGNoYW5uZWwsIFdURk1vdmUodGFzaykpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OmFkZFdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCmluZGV4
IDkzN2UyODczMmJlNTc0MzI2MTY5ZDg1NGRmNjRjMTUxM2UyYjY4YTMuLmY2Y2Q3YTkyOGI5NzM4
ODE2YzM4OWE5NTdjOGE5MWRlOGMyNWIyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtNDEsNiArNDEs
NyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwog
CiBjbGFzcyBXZWJTb2NrZXRUYXNrIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNvY2tldFRh
c2s+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTb2Nr
ZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNv
Y2tldFRhc2s+JiYpOwogICAgIH5XZWJTb2NrZXRUYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCmluZGV4
IGJlNjgwMWYzMGNkZjQ5MDAyNTRjMjI0YjliMTFmYmRmNzNmZTJlMzEuLjViZTE3MDI2NmY0NWI4
YmY3MmVmNTZiMTAwODdjYjU5YmI1NmRiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qo
Y29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9z
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
U2Vzc2lvbkN1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
U2Vzc2lvbkN1cmwuaAppbmRleCBkNDcwOWE1ZTRhYzhhMmZiNmFjZWI1NmM1N2ViZjBiNWM3NDBk
NDU2Li5lMThhNDM5MGIxODhhMjdlOTMxOGM1MjQwNDU1ZjA2NGNmNmJkNjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3Vy
bC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ3VybCBmaW5hbCA6IHB1
YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3Jr
UHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykp
OwogICAgIH0KICAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25DdXJsKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
aW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCmluZGV4IDIzNzQ1Mjg4YTA2
ZDAxMTQ1OTE5NjhiNTA4NmRlYjVmNDVhYTBhYzYuLmM4Yjg2YzUxMTEzN2UzNzRlYzBiZTBjMGVi
NWIzZmViNGYwOWJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
aW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1t
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0
b3IoKQogewogICAgIGlmICghbV9wYXltZW50Q29vcmRpbmF0b3IpCi0gICAgICAgIG1fcGF5bWVu
dENvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eT4oKnRoaXMpOworICAgICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcGF5bWVudENv
b3JkaW5hdG9yOwogfQogCkBAIC04Miw3ICs4Miw3IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9u
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25Q
cmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIGNvb3JkaW5hdG9yLCBQS1BheW1l
bnRSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBheW1l
bnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0
b3IsIHJlcXVlc3QpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpw
YXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVy
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBkNDZjNTAzZDgxZTk4MzRlNWQyYTI1NjYwYzg3MjNl
YWU3ZTE3MGVjLi40ZmFjYzgyMTNlZjg1MDVjZjlkNTQ4YjIzYzU2NmRkM2QwYmUwYWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwCkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkb3dubG9hZCgpCiAgICAgbV9kb3dubG9hZE91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihH
X09VVFBVVF9TVFJFQU0ob3V0cHV0U3RyZWFtLmxlYWtSZWYoKSkpOwogCiAgICAgYXV0byYgZG93
bmxvYWRNYW5hZ2VyID0gbV9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdl
cigpOwotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPihkb3du
bG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Np
b25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVu
aXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhp
cywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgYXV0
byogZG93bmxvYWRQdHIgPSBkb3dubG9hZC5nZXQoKTsKICAgICBkb3dubG9hZE1hbmFnZXIuZGF0
YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5nRG93bmxvYWRJRCwgV1RGTW92ZShkb3du
bG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdE
b3dubG9hZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggODNjMmYyOGVhNWM3MDM0ZGFh
N2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFmOS4uN2E3NDgxZjdkNDI1ZjAyMzM3YTBjMTBhZGY5ZDY1NGY3
MGVjN2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNw
cAppbmRleCAzMGZjOGE1MzU1ZDA4NDUyYWMzNjFiMWRjZWE5N2M4NGYzNjA3ZmVkLi40MDczNjFm
MDM2ZTc5ODkxNzY3ZDgwN2ZiYjYzYzkwNDRiMjYwYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcApAQCAt
NDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTmV0d29ya1Nlc3Npb25T
b3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3
b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycykKLSAgICAsIG1fbmV0d29ya1Nl
c3Npb24oc3RkOjptYWtlX3VuaXF1ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkK
KyAgICAsIG1fbmV0d29ya1Nlc3Npb24obWFrZVVuaXF1ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1f
c2Vzc2lvbklEKSkKIHsKICAgICBhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbigpOwogICAgIEFTU0VSVChzdG9yYWdlU2Vzc2lvbik7CkBAIC0xMjQsNyArMTI0LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uU291cDo6Y3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU28KICAgICByZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdl
KHNvdXBNZXNzYWdlLmdldCgpLCBibG9iUmVnaXN0cnkoKSk7CiAgICAgaWYgKHJlcXVlc3QudXJs
KCkucHJvdG9jb2xJcygid3NzIikpCiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cE1lc3Nh
Z2UuZ2V0KCksICJuZXR3b3JrLWV2ZW50IiwgR19DQUxMQkFDSyh3ZWJTb2NrZXRNZXNzYWdlTmV0
d29ya0V2ZW50Q2FsbGJhY2spLCBudWxscHRyKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBzb3VwU2Vzc2lvbigpLCBzb3VwTWVzc2FnZS5nZXQo
KSwgcHJvdG9jb2wpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5u
ZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCmluZGV4IGY5ZWY0YmI1NDMwYmJmNzNiMDRh
MGUzYmVjMjQ3OTI4ZDU5ZTcxNmIuLjQ2NmIyNzgyYmY5M2M3NzA3MGY3OTdkZDM2NTIzNGNjMWRl
M2ZiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrU2Vzc2lvblNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Nlc3Npb25Tb3VwLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Np
b25Tb3VwIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vz
c2lvblNvdXA+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgfQogICAgIE5ldHdvcmtTZXNzaW9uU291cChOZXR3b3Jr
UHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIH5OZXR3
b3JrU2Vzc2lvblNvdXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAppbmRl
eCA2ZGRjODFhMzZkODQ5Y2JjMjgzNzkzYjYxNzA2N2EyN2UyOWQ5MWYwLi44NzQ1MjVlMzhjZTcw
NGViZTFkYWE3MTBiYjU1YzAxY2MwNThlYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRT
dHJlYW0uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0
ci5oPgogCiBzdHJ1Y3QgQXN5bmNSZWFkRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIEFzeW5jUmVhZERhdGEoR1JlZlB0cjxHVGFzaz4mJiB0YXNrLCB2b2lk
KiBidWZmZXIsIGdzaXplIGNvdW50KQogICAgICAgICA6IHRhc2soV1RGTW92ZSh0YXNrKSkKICAg
ICAgICAgLCBidWZmZXIoYnVmZmVyKQpAQCAtMzksNiArNDAsNyBAQCBzdHJ1Y3QgQXN5bmNSZWFk
RGF0YSB7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Qcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgdWludDY0X3QgY29u
dGVudExlbmd0aDsKICAgICB1aW50NjRfdCBieXRlc1JlY2VpdmVkOwogICAgIHVpbnQ2NF90IGJ5
dGVzUmVhZDsKQEAgLTk5LDcgKzEwMSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW1SZWFkQXN5bmMoR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgdm9pCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwg
Y291bnQpOworICAgIHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5jUmVhZCA9IG1ha2VVbmlxdWU8
QXN5bmNSZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7CiB9CiAKIHN0YXRp
YyBnc3NpemUgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRGaW5pc2goR0lucHV0U3Ry
ZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRh
c2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFz
a1NvdXAuaAppbmRleCBkYTg3NjExMDY0ODFmOTZhOWQ2YTAwMDE4NGNjZDI0MDdiMWYyNjUwLi41
ZWY3YjQ4ZTQyMDgzOWVlZjgwMDgxMWIwZDk3NDBmNDRlMDFmMGFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAt
MzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFu
bmVsOwogCiBjbGFzcyBXZWJTb2NrZXRUYXNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgU291
cFNlc3Npb24qLCBTb3VwTWVzc2FnZSosIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIH5X
ZWJTb2NrZXRUYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCmluZGV4IDhmMjA1Y2UwMjk3MTNk
OGJhMjEzZjE0M2JhNzFiYjExNDc1MmRlZjUuLjIyYWJkZWM2OWRiMjQ1YTRjZjk4M2YyNDdiMzhm
NzJkOTAwYTZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCkBAIC00OCw2ICs0OCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1JUQ1Byb3ZpZGVyOwogCiBjbGFzcyBMaWJX
ZWJSVENTb2NrZXRDbGllbnQgZmluYWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlw
ZSB7IFVEUCwgU2VydmVyVENQLCBDbGllbnRUQ1AsIFNlcnZlckNvbm5lY3Rpb25UQ1AgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01E
TlNSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrTUROU1JlZ2lzdGVyLmNwcAppbmRleCBlNzg2NTY4ZmY1MDVhN2I4NzE3ODcwZGY1N2ZhNTdk
MTVmNWQ3NzYzLi45MjY2NjhjMzhmZmY3MDhhZTUwMmY1OGZkNDE1Mjg4MDNlYzU1NWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1Jl
Z2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrTUROU1JlZ2lzdGVyLmNwcApAQCAtNjQsNiArNjQsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVn
aXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRv
Y3VtZQogfQogCiBzdHJ1Y3QgUGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVz
dChSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgU3RyaW5nJiYgbmFtZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICA6
IGNvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAgICAgLCByZXF1ZXN0SWRlbnRp
ZmllcihyZXF1ZXN0SWRlbnRpZmllcikKQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtN
RE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFBBTDo6U2VzcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZW5kaW5nUmVx
dWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VS
ZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3Zl
KG5hbWUpLCBzZXNzaW9uSUQpOworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVl
PFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0
aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKICAg
ICBhdXRvKiByZWNvcmQgPSAmcGVuZGluZ1JlcXVlc3QtPnJlY29yZDsKICAgICBhdXRvIGVycm9y
ID0gRE5TU2VydmljZVJlZ2lzdGVyUmVjb3JkKHNlcnZpY2UsCiAgICAgICAgIHJlY29yZCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENN
b25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENNb25pdG9yLmNwcAppbmRleCAzNTNlYWM4Y2UxMWI2OTA2ZWZhZGQyZmQyNzE4Yjk3YWI1MmNk
YTRkLi5hYjcwNmRjMmU5MzRhOWE3ZWY5OTI2ODk3OTc0YmRjNzU0ZWEzZGY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01v
bml0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgTmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0
VXBkYXRpbmcoKQogewogICAgIG1faXNTdGFydGVkID0gdHJ1ZTsKICAgICBtX3J0Y1Byb3ZpZGVy
LmNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdKCkgewotICAgICAgICBtX21hbmFnZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgbV9t
YW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdv
cmtNYW5hZ2VyPigpOwogICAgICAgICBtX21hbmFnZXItPlNpZ25hbE5ldHdvcmtzQ2hhbmdlZC5j
b25uZWN0KHRoaXMsICZOZXR3b3JrUlRDTW9uaXRvcjo6b25OZXR3b3Jrc0NoYW5nZWQpOwogICAg
ICAgICBtX21hbmFnZXItPlN0YXJ0VXBkYXRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCmluZGV4IGE1YWM1NzIxMzc5ZGIzZDFiMjU4NzU1ODYxMDMwYmJhNGRiOWViOGUuLjE1ZDQ0
ZDBhZDlkYjBmM2IwNTk5ZTFhMzNlZmNmZGI4OTYxYTY1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNw
cApAQCAtNjAsNyArNjAsNyBAQCBOZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRl
cihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbgogICAgIDogbV9jb25u
ZWN0aW9uKCZjb25uZWN0aW9uKQogICAgICwgbV9ydGNNb25pdG9yKCp0aGlzKQogICAgICwgbV9y
dGNOZXR3b3JrVGhyZWFkKGNyZWF0ZVRocmVhZCgpKQotICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0
b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0
d29ya1RocmVhZC5nZXQoKSkpCisgICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+
KG1fcnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCiB7CiAjaWYgZGVmaW5lZChOREVCVUcpCiAgICAg
cnRjOjpMb2dNZXNzYWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfTk9ORSk7CkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNvY2tldCh1aW50NjRfdCBpZGVu
dGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjoKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0
eXBlKSk7CisgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29j
a2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQodWludDY0X3QgaWRl
bnRpZmllciwgY29uc3QgUlRDTmV0d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2
X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIE5l
dHdvcmtSVENQcm92aWRlcjo6d3JhcE5ld1RDUENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmll
ciwgdWludDY0X3QgbmV3QwogewogICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlk
ZW50aWZpZXIsIG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCA9IG1fcGVuZGluZ0lu
Y29taW5nU29ja2V0cy50YWtlKG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKTsKLSAgICAg
ICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0
Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2Nr
ZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsKKyAgICAgICAgYWRkU29ja2V0
KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVy
LCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNl
cnZlckNvbm5lY3Rpb25UQ1ApKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCAzODM4MmIwOWQ0ZmIzYmUyNjRmODliNzc4NDFhNDFk
N2MwOGNhYzA1Li5jNWVmNmQ5OWE1NjBkZDE0ODhmMTg0OTk1YWU4YTdiMTZkOWFkMjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNz
YWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIHJlcGx5RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJT
eW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1
ZXN0SUQpOwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0
byB0aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rl
cik7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlz
cGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29u
bmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5h
bWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAg
IGVuY29kZXItPnNldElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5
bmMgcmVxdWVzdCBJRC4KQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVuYWJs
ZUluY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKCkKICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2Vz
VGhyb3R0bGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luY29taW5nTWVzc2FnZXNUaHJv
dHRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNvbm5l
Y3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2Vz
VGhyb3R0bGVyID0gbWFrZVVuaXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0
aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBv
c3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtODQzLDcgKzg0
Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNS
ZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigi
SVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChkZWNv
ZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gIldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIikgewogICAgICAgICBpZiAoIW1f
ZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggMjBmNWVjNWIyMDJiZWMyYmRmNThmMDIwZWJk
ZWVmODMxNDkzMTFiZi4uYWRjNGFhZDk4ODE4ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDMzLDcgKzQzMyw3
IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6Omlz
U3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5h
dGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2Vp
dmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29k
ZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RG
TW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhh
bmRsZXIsIHVpbnQ2NF90CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNN
ZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxF
bmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBU
OjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0
QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsK
ICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IGNjYTA3MzkwYWRlYzQ0NmRlNzQ2NmNmOGUxMDEy
M2MyNzkzODUzNTIuLmZkNTE3MDE3MTJiMDYyOWQ0NzI1MmQwNDA4OTZjNjRmY2JjYmIyYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IERlY29kZXI6OnVud3JhcEZvclRlc3RpbmcoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdyYXBwZWRNZXNzYWdlKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNv
ZGVyPih3cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0
ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+
KHdyYXBwZWRNZXNzYWdlLmRhdGEoKSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBX
VEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhfdCog
cm91bmRVcFRvQWxpZ25tZW50KGNvbnN0IHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25tZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDg1NDUy
Y2RhN2UwNDVlNDQ1NWUwN2I5M2JhZmNhMzViMTAyMDAxMWUuLmE3NDlhYWI4NzAwNTRjZWI2OTBl
NWYxNGY0MDc1NjNmZmNkMGY5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAg
ICAgfQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFts
aXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24p
XSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlO
YW1lKCksIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJB
c3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5j
b2RlciA8PCBsaXN0ZW5lcklEOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdU
Rk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggM2Q2ZjM0Mjg5MmJjODgzOTA2NzhlOGMzNjQ2
MzkxMTBkZTRmNTcyNi4uNzcxNDQ4YTQ0ZDA4ODZkZDAxYmIwYzJkZTY0ZGM5YTQyODYyN2EyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDMsNyAr
NDMsNyBAQCBjbGFzcyBNZXNzYWdlU2VuZGVyIHsKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoIVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29k
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1l
KCksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVu
Y29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAg
ICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAg
ICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29h
Lm1tCmluZGV4IDM3MDJhY2M3ZGY1MWJkODQ2YjkzYWY2NGJmMDcwYTRjMTAwMzkxOWYuLjg3ZGQy
OGY4MDg2NzgyY2UyYTNkZjc5MGY0YWMwZTZkNzQ5ZGFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikK
ICAgICAgICAgLCBtX3dhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVj
dGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OndhdGNoZG9nVGltZXJGaXJlZCkKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgICAgICAsIG1fYXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGND
b25uZWN0aW9uLmdldCgpKSwgIkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJL
aXQ6OkFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kKSkKKyAgICAgICAgLCBtX2Fzc2VydGlvbiht
YWtlVW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9n
ZXRfcGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRj
aGRvZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCiAjZW5kaWYKICAg
ICB7CiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpAQCAt
MjIwLDcgKzIyMCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25u
ZWN0ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBt
ZXNzYWdlLCB3aGljaCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNl
LgotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMi
LCAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CiAgICAg
ICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBF
X01BS0VfU0VORCkpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC00MTIs
NyArNDEyLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdl
RGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBib2R5
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVf
dCBib2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90
KTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5
U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPERlY29kZXI+KGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNo
bWVudD4geyB9KTsKICAgICB9CiAKICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXIt
Pm1zZ2hfaWQgPT0gb3V0T2ZMaW5lQm9keU1lc3NhZ2VJRDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hf
bXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MpOwogICAg
ICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuc2l6
ZTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9k
eSwgbWVzc2FnZUJvZHlTaXplLCBbXShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5n
dGgpIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1l
c3NhZ2VCb2R5U2l6ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7
CiAgICAgICAgICAgICB2bV9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm1fYWRkcmVzc190PihidWZmZXIpLCBsZW5ndGgpOwogICAgICAgICB9LCBXVEZNb3Zl
KGF0dGFjaG1lbnRzKSk7CiAgICAgfQpAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3Qq
IGhlYWRlcikKICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAg
IHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9y
RGF0YSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwg
bnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERl
Y29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0
YWNobWVudHMpKTsKIH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5
cyBpbmNsdWRlIHRoZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KQEAgLTUyNiw3ICs1MjYsNyBAQCB2
b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1
cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2Vy
dGlvbihzdGQ6Om1ha2VfdW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOworICAg
IGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNz
ZXJ0aW9uPihoZWFkZXIpKTsKICNlbmRpZgogCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFs
aXplQ29ubmVjdGlvbiIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjNiNmJlNzI3MWU0NDU4ODM5NTA1YWE5MTVlMzg3
M2Y4NTE0ZGVkZC4uNzdhZjliMjg1ODQ1MjZiYjcwYzdmZmM4ZTMyNTZhM2JhYTEzYTI4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKCkK
ICAgICBpZiAobWVzc2FnZUluZm8uaXNCb2R5T3V0T2ZMaW5lKCkpCiAgICAgICAgIG1lc3NhZ2VC
b2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7
CiAKLSAgICBhdXRvIGRlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VC
b2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRz
KSk7CisgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwg
bWVzc2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwog
CiAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIApAQCAtNDgy
LDcgKzQ4Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3Nh
Z2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVy
cm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElCKQot
ICAgICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5p
eE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOworICAgICAgICAgICAgbV9wZW5kaW5n
T3V0cHV0TWVzc2FnZSA9IG1ha2VVbmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVz
c2FnZSkpOwogICAgICAgICAgICAgbV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9zb2NrZXQu
Z2V0KCksIEdfSU9fT1VULCBtX2Nvbm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4g
Z2Jvb2xlYW4gewogICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkgewog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9wZW5kaW5nT3V0cHV0TWVzc2FnZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXgg
NjQwZjQ1Mjk5ZTNiMjY2ZTAyNjljY2NjYzk0NTJiM2JhNTc5ZWZiMS4uNWFkZmQ4MmJlY2E0NmRi
MDI0NDdlOGJjYjZkMzg0YzJjMDE1NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3Bh
dGNoIGl0LgogICAgICAgICAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKDApOwot
ICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtX3Jl
YWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0
dGFjaG1lbnRzKSk7CisgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29k
ZXI+KG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIFdU
Rk1vdmUoYXR0YWNobWVudHMpKTsKICAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uo
V1RGTW92ZShkZWNvZGVyKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKaW5k
ZXggZGQyYjY2YTdjYTE5NTkxYjZlZTY3YjhmMjg0ZmQyNTRhMzgyNzg1ZC4uNTY4MzcyMTNkZmJl
YWViNGQ1OWU5M2MzZDQ5ZjZjN2FjMmY1MzRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCkBA
IC00NCw2ICs0NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9HTW9kdWxlIEdNb2R1bGU7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgTW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGUpOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IE1vZHVsZShjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KaW5kZXggODIzMmRiNGViNTZlYWNiNmY4
Y2U4NTU2NjRiOGI3ODJhYjY1MGE5OC4uN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdmMDJi
MDRjZjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0
aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3Rp
bmdDb250ZXh0Lm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yUG9ydChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQogewotICAgIGF1dG8g
bGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4
dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9z
dGluZ0NvbnRleHQ+KCk7CiAKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewogICAgICAg
ICBrQ0FDb250ZXh0UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCkBAIC01
Miw3ICs1Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhv
c3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hCiAjaWYgSEFWRShPVVRfT0ZfUFJP
Q0VTU19MQVlFUl9IT1NUSU5HKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+
IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29u
c3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsYXll
ckhvc3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0Pigp
OworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5n
Q29udGV4dD4oKTsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUg
PSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCkBAIC04Miw3ICs4Miw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVG
b3JFeHRlcm5hbEhvc3RpCiAjaWYgUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPExheWVy
SG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsUGx1
Z2luSG9zdGluZ1Byb2Nlc3MoKQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9z
dGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5
ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6
T3V0T2ZQcm9jZXNzOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNv
bnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRp
b25zOkB7IGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwogICAgIHJl
dHVybiBsYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDk3ZTJkZjM1M2IzNjgyMzkyOWEz
MWFlOTU3YTFkZGNkYzIxYzM3ZDYuLmI5OGNhOTRiYzllZmMyM2IyZWQ4MThhNWI3ODQzMzcyMzE3
ZTljNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmgKQEAgLTQ5LDcgKzQ5LDggQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwog
Y2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzOwogCi1jbGFzcyBQbHVnaW5Db250cm9sbGVyUHJveHkgOiBQbHVnaW5Db250cm9sbGVyIHsK
K2NsYXNzIFBsdWdpbkNvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBQbHVnaW5Db250cm9sbGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
bHVnaW5Db250cm9sbGVyUHJveHkpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAzNjZiOTgzY2Mw
YmVhNTgzODYzYTdjZDYzMzNmOTQ4ZGY3NDg0NDM1Li5jZTgyNjdkMmVlNzhjYWNiM2RkYTBhOWIz
NzViZmFhZmM2ODZlZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpTdHJpbgogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5J
bnRlcm5hbChjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVy
cywgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3Rl
TGF5ZXJDbGllbnRJRCkKIHsKLSAgICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGx1Z2luQ29udHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRl
cnMpOworICAgIGF1dG8gcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbWFrZVVuaXF1ZTxQbHVnaW5D
b250cm9sbGVyUHJveHk+KHRoaXMsIGNyZWF0aW9uUGFyYW1ldGVycyk7CiAKICAgICBQbHVnaW5D
b250cm9sbGVyUHJveHkqIHBsdWdpbkNvbnRyb2xsZXJQcm94eVB0ciA9IHBsdWdpbkNvbnRyb2xs
ZXJQcm94eS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IGJiZDQyM2Jj
ZjU3MTVlNGFkNzBiZjUyZGVmOGMyYzMwYzQxYmYwZjYuLjNlNjFiYmQwMDBlMWY0Y2RiNmMyYTM2
Y2E0Zjc1ZTkwNGY4MzVjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgY2xhc3MgVVJMIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+
IHsKICAgICB7CiAgICAgICAgIEFTU0VSVChiYXNlVVJMKTsKICAgICAgICAgYmFzZVVSTC0+cGFy
c2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gc3RkOjptYWtl
X3VuaXF1ZTxXVEY6OlVSTD4oKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVS
TCk7CisgICAgICAgIGF1dG8gYWJzb2x1dGVVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPigqYmFz
ZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKICAgICAgICAgY29uc3QgV1RG
OjpTdHJpbmcmIGFic29sdXRlVVJMU3RyaW5nID0gYWJzb2x1dGVVUkwtPnN0cmluZygpOwogCiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFQSTo6VVJMKFdURk1vdmUoYWJzb2x1dGVVUkwp
LCBhYnNvbHV0ZVVSTFN0cmluZykpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFVSTCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBpZiAo
bV9wYXJzZWRVUkwpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkVVJMID0g
c3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOworICAgICAg
ICBtX3BhcnNlZFVSTCA9IG1ha2VVbmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5n
KTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KaW5k
ZXggMjU5Mjg0N2UzNDFhM2I2ZjcyODc1NGJkNzg4YTY2NTNkZDIyMTViMC4uZDNmZjYyMWVjMGY0
YTEwZDc1NjQ4N2NjMjE2ZjQ5NWNlODZkNzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KQEAgLTgzLDcg
KzgzLDcgQEAgYm9vbCBSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBSZW1vdGVPYmplY3RJbnZvY2F0aW8KICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShibG9ja1NpZ25hdHVyZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgcmVzdWx0Lm1fcmVwbHlJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBseUluZm8+KHJlcGx5
SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUpKTsKKyAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZv
ID0gbWFrZVVuaXF1ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUp
KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCA2NWRh
OWVmZjAxYjQzZWE1NzEwODAyZjZjNDZhNmQwMjAyNjU2OTNlLi40ODk5NzYyOTMyYjdhZjY5MjIx
ZDA1MGFmNjc0NTgzNmZjMzg3YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xMDksNyArMTA5
LDcgQEAgLSAoaWQpX2luaXRXaXRoV2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlJilwYWdlCiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBf
cmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2Jq
ZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1h
a2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAg
ICByZXR1cm4gc2VsZjsKIH0KQEAgLTExOSw3ICsxMTksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQ
YWdlUHJveHk6KFdlYktpdDo6V2ViUGFnZVByb3h5JilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVn
aXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNl
bGYsIHBhZ2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsK
IH0KQEAgLTE2MCw3ICsxNjAsNyBAQCAtICh2b2lkKV9zZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0
aW9uICopaW52b2NhdGlvbiBpbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdEludAogICAgICAgICBp
ZiAoc3RyY21wKFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5
QmxvY2tTaWduYXR1cmVdLm1ldGhvZFJldHVyblR5cGUsICJ2IikpCiAgICAgICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiUmV0dXJu
IHZhbHVlIG9mIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMpIiwgc2VsX2dldE5h
bWUoaW52b2NhdGlvbi5zZWxlY3RvcildOwogCi0gICAgICAgIHJlcGx5SW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVy
YXRlUmVwbHlJZGVudGlmaWVyKCksIHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAgICByZXBs
eUluZm8gPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJ
bmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKIAog
ICAgICAgICAvLyBSZXBsYWNlIHRoZSBibG9jayBvYmplY3Qgc28gd2Ugd29uJ3QgdHJ5IHRvIGVu
Y29kZSBpdC4KICAgICAgICAgaWQgbnVsbCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAppbmRleCA3
ZWQxMWU2YzE3MWUyMGJlMWU5ZWFkYjMwN2U3MWZjNDhiZmRlODQ5Li5mYWVmZWQyZGNjODM4ZWU5
NTczOTA2NWRhYzYzZjEzNTYzZjBkM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRDb250ZXh0TWVudUl0ZW1DcmVhdGUoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0q
IGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X0NPTlRFWFRfTUVOVV9JVEVNLCBOVUxMKSk7CiAKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEpOworICAg
IGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGli
PihpdGVtRGF0YSk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBz
dWJNZW51ID0gaXRlbURhdGEuc3VibWVudSgpOwogICAgIGlmICghc3ViTWVudS5pc0VtcHR5KCkp
CiAgICAgICAgIHdlYmtpdENvbnRleHRNZW51SXRlbVNldFN1Yk1lbnUoaXRlbSwgYWRvcHRHUmVm
KHdlYmtpdENvbnRleHRNZW51Q3JlYXRlKHN1Yk1lbnUpKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAg
V2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KEd0a0Fj
dGlvbiogYWN0aW9uKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19BQ1RJT04oYWN0
aW9uKSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJL
SVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVO
VV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CisgICAgaXRlbS0+cHJpdi0+
bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CiAK
ICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJLaXRDb250ZXh0TWVu
dUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKEdBY3Rpb24q
IGFjdGlvbgogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCF0YXJnZXQgfHwgZ192YXJpYW50X2lz
X29mX3R5cGUodGFyZ2V0LCBnX2FjdGlvbl9nZXRfcGFyYW1ldGVyX3R5cGUoYWN0aW9uKSksIG51
bGxwdHIpOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRF
WFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwg
bnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0
YXJnZXQpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0
TWVudUl0ZW1HbGliPihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOwog
CiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0xOTQsNyArMTk0LDcgQEAgV2ViS2l0Q29udGV4dE1l
bnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uKFdl
YktpdENvbnQKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05U
RVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0s
IG51bGxwdHIpKTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250ZXh0
TWVudUFjdGlvbklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0
aW9uVHlwZTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rp
b25UYWcoYWN0aW9uKSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsK
KyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVt
R2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwg
d2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsKIAogICAgIHJldHVybiBp
dGVtOwogfQpAQCAtMjE2LDcgKzIxNiw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsCiAKICAg
ICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0o
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CiAg
ICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0No
ZWNrYWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAg
aXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRl
bUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiks
IFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1h
a2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVB
Y3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogCiAg
ICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0yMzksNyArMjM5LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hh
ciogbGEKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0
ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUs
IENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJl
bCkpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVu
dUl0ZW1HbGliPihBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcs
IFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKICAgICBpdGVtLT5wcml2LT5zdWJNZW51ID0gc3Vi
bWVudTsKICAgICB3ZWJraXRDb250ZXh0TWVudVNldFBhcmVudEl0ZW0oc3VibWVudSwgaXRlbSk7
CiAKQEAgLTI1Niw3ICsyNTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250
ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogV2ViS2l0Q29u
dGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcih2b2lk
KQogewogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01F
TlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxw
dHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29u
dGV4dE1lbnVJdGVtR2xpYj4oU2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rp
b24sIFN0cmluZygpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oU2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9B
Y3Rpb24sIFN0cmluZygpKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKaW5kZXggNWVkMTQzYTk5ODU5MDQ5NmMzMzc2YTU2OTg4MTE1M2E2YTAyYjI4Yy4uZjMzY2Fi
MzA1ZmVlMTI3NGZhYTdiMjE4MzhlOWJiN2VmNzZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CiAgICAg
LCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PgogICAgICwgcHVibGljIFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0cnVjdCBDbGllbnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggN2FkMzMz
MTQ1MzkxODg4OWZkM2I5ODk2Mzg2YThiZWQxZjUxOWExNC4uMzkxNGE0YzIwMTRhOWE1NGE2MzQ4
OGE0ZTc0MzgxOWM2YThkYjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bQpAQCAtNzksNyArNzksNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFT
U0VSVCh2aWV3Q29udHJvbGxlcik7CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHkt
Pm1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50
UmVxdWVzdC5nZXQoKSwgdmlld0NvbnRyb2xsZXIpOworICAgICAgICBwYXltZW50Q29vcmRpbmF0
b3JQcm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbWFrZVVuaXF1ZTxQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1l
bnRSZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNTRVJUKCFwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBheW1lbnRDb29y
ZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dpdGhDb250ZW50
Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRl
eCA4NmU3NDRjMTA4ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2Li40ZjgzNzAyNGVlNWYz
NGZmYTBlNjliYWY3YjNiZmM4ODFhNTI4MDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAt
NTUsNiArNTUsNyBAQCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b24gOiB1aW50OF90OwogdXNpbmcgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT47CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciA6
IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhl
bnRpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25N
YW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggNTZhNzgzYTBiMjNiMjZhMjBjNWI4
ZmE0YTU5ZjE1N2E0YzAzN2JiNy4uMmQ1ZDFhZmMwODI3YTQxYTBiZDgzYmJhYTgwZjc4ZjYxNGY1
YmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVu
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRl
bnNpb25Db2NvYS5tbQpAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFNhbmRib3hFeHRlbnNpb25JbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBs
PiBjcmVhdGUoY29uc3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBP
cHRpb25hbDxwaWRfdD4gcGlkID0gV1RGOjpudWxsb3B0KQogICAgIHsKQEAgLTE2MCw3ICsxNjEs
NyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikgLT4gT3B0aW9uYWw8SGFuZGxlPgogICAgICAgICByZXR1cm4ge3sgfX07CiAKICAg
ICBIYW5kbGUgaGFuZGxlOwotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICBo
YW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gbWFrZVVuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1w
bD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBk
YXRhUmVmZXJlbmNlLnNpemUoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDE4ZGMyZmI4ZWQx
M2QxNTM0MTJlYTMwZTI5MTExNzhlYWNlZmM1YWUuLjcwNDMwZjQ0MzEyYzhhNTYyY2UxNWZjNzMy
ZjY5ZDM4NzZmZTljMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBUZXh0dXJlTWFwcGVyTGF5ZXImIHRleG1hcExheWVyKE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXImIGNvbXBvc2l0aW9uTGF5ZXIpCiB7CiAgICAgYXV0byYg
Y29tcG9zaXRpb25TdGF0ZSA9IGNvbXBvc2l0aW9uTGF5ZXJJbXBsKGNvbXBvc2l0aW9uTGF5ZXIp
LmNvbXBvc2l0aW9uU3RhdGUoKTsKICAgICBpZiAoIWNvbXBvc2l0aW9uU3RhdGUubGF5ZXIpIHsK
LSAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVy
ZU1hcHBlckxheWVyPigpOworICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gbWFrZVVu
aXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CiAgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5
ZXItPnNldElEKGNvbXBvc2l0aW9uTGF5ZXIuaWQoKSk7CiAgICAgfQogICAgIHJldHVybiAqY29t
cG9zaXRpb25TdGF0ZS5sYXllcjsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6ZW5zdXJlUm9vdExheWVyKCkKICAgICBpZiAobV9yb290TGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcm9vdExheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAgbV9yb290TGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVN
YXBwZXJMYXllcj4oKTsKICAgICBtX3Jvb3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7
CiAgICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290TGF5
ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAwLCAwKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRl
eCBjZDNlNTdjNmJjYjlkOGRjMWZmOTljYWQ1OWM0ZTEzZmY2NjAzYTZiLi5iY2IyMzU5NzViMTMz
ZDJlMjc2NzZkMjgzZmU4OTEzODFhMGQ1ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoQ2xp
ZW50JiBjbGllbnQsIFRocmVhZGVkRGlzcGwKIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRD
b21wb3NpdG9yKENsaWVudCYgY2xpZW50LCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
Q2xpZW50JiBkaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQsIFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZUZhY3Rvciwg
VGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBwYWludEZsYWdzKQogICAgIDogbV9jbGllbnQoY2xp
ZW50KQogICAgICwgbV9wYWludEZsYWdzKHBhaW50RmxhZ3MpCi0gICAgLCBtX2NvbXBvc2l0aW5n
UnVuTG9vcChzdGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVu
ZGVyTGF5ZXJUcmVlKCk7IH0pKQorICAgICwgbV9jb21wb3NpdGluZ1J1bkxvb3AobWFrZVVuaXF1
ZTxDb21wb3NpdGluZ1J1bkxvb3A+KFt0aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkKICNp
ZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgICwgbV9k
aXNwbGF5UmVmcmVzaE1vbml0b3IoVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0
ZShkaXNwbGF5SUQsIGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCkpCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2
ZXIuaAppbmRleCAxYTA1NDc1MDdlYzFjMWE4MTI0NzJiYjdlYmQ5ZmEwZDRhZDEzYTQ4Li4wN2U4
YmJjOWI1YzljM2M2YzlkOGQ2YzNiOTQ1ZTUzOTMyN2I4NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCkBAIC0z
OSw2ICszOSw3IEBAIGNsYXNzIE5QVmFyaWFudERhdGE7CiBjbGFzcyBQbHVnaW47CiAKIGNsYXNz
IE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcik7CiAKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVP
YmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVj
dE1hcC5jcHAKaW5kZXggNjFlMWY5NDAyNTIzODVkYjgwNWVjMTIyZGZmMWM5ZTRmMWI3MjU2My4u
ZDRiNTI0YzgyOWVjNjY3MjFkZjFhNzBkMmQ1MTNhZTRlYjNmM2QyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgdm9pZCBOUFJlbW90ZU9iamVjdE1hcDo6bnBPYmplY3RQcm94eURlc3Ryb3llZChO
UE9iamVjdCogbnBPYmplY3QpCiB1aW50NjRfdCBOUFJlbW90ZU9iamVjdE1hcDo6cmVnaXN0ZXJO
UE9iamVjdChOUE9iamVjdCogbnBPYmplY3QsIFBsdWdpbiogcGx1Z2luKQogewogICAgIHVpbnQ2
NF90IG5wT2JqZWN0SUQgPSBnZW5lcmF0ZU5QT2JqZWN0SUQoKTsKLSAgICBtX3JlZ2lzdGVyZWRO
UE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7
CisgICAgbV9yZWdpc3RlcmVkTlBPYmplY3RzLnNldChucE9iamVjdElELCBtYWtlVW5pcXVlPE5Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyPih0aGlzLCBwbHVnaW4sIG5wT2JqZWN0SUQsIG5wT2JqZWN0
KS5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0SUQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5Nb2R1bGUuY3BwCmluZGV4IDdiMDJiNWUxMmYzMmM3MmQzOGY1MjA0NWJiNmQ2YTIzYjYyYWUy
ZTEuLjI2MWQ3YTg5NjkzMDZhODkyNWM0YWIzNmU0Nzk0N2IzOTZjMTI1MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAgc3RhdGljIGJvb2wgbW9kdWxl
TWl4ZXNHdGtTeW1ib2xzKE1vZHVsZSogbW9kdWxlKQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9k
dWxlOjp0cnlMb2FkKCkKIHsKLSAgICBtX21vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxl
PihtX3BsdWdpblBhdGgpOworICAgIG1fbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KG1fcGx1
Z2luUGF0aCk7CiAgICAgaWYgKCFtX21vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggZWEyYmU5MzA4Y2Ji
ZTZkZDdlYjhjZjJjNTg4YzhmZjYxOWVhOTkzYy4uOTU1MTNmNDc5ODJmZDY3ZWU1Zjk4ZGQ3OTk2
Yzg1OThmMWY0NjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTUx
LDYgKzUxLDcgQEAgY2xhc3MgRW5jb2RlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZW51bSBMYXllckNoYW5nZSB7CiAgICAgICAgIE5hbWVDaGFuZ2VkICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDEsCkBAIC05NCw2ICs5NSw3IEBAIGNsYXNzIFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVyQ3Jl
YXRpb25Qcm9wZXJ0aWVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICBMYXllckNyZWF0aW9uUHJvcGVydGllcygpOwogCiAgICAgICAgIHZvaWQgZW5j
b2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwpAQCAtMTA5LDYgKzExMSw3IEBAIGNsYXNzIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVyUHJvcGVy
dGllcyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAg
TGF5ZXJQcm9wZXJ0aWVzKCk7CiAgICAgICAgIExheWVyUHJvcGVydGllcyhjb25zdCBMYXllclBy
b3BlcnRpZXMmIG90aGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmlu
ZGV4IDFmMmRlNGQwMzdlYTNlODMwMjg3YWI5OGNiMmE4ZjIxYzRlY2VhMmUuLjBkMjI3ZmZjMWQ5
YzU1NTZhYWQ5MmU3ZWUxNTc2NWUxNmIzNDQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KQEAgLTE1MiwxMyArMTUyLDEzIEBAIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRp
CiAgICAgLy8gRklYTUU6IExheWVyUHJvcGVydGllcyBzaG91bGRuJ3QgYmUgY29weWFibGU7IFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6Y2xvbmUgc2hvdWxkIGNvcHkgdGhlIHJlbGV2YW50IHByb3Bl
cnRpZXMuCiAKICAgICBpZiAob3RoZXIudHJhbnNmb3JtKQotICAgICAgICB0cmFuc2Zvcm0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJh
bnNmb3JtKTsKKyAgICAgICAgdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4oKm90aGVyLnRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuc3VibGF5
ZXJUcmFuc2Zvcm0pCi0gICAgICAgIHN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3Jt
KTsKKyAgICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOwogCiAgICAgaWYgKG90
aGVyLmZpbHRlcnMpCi0gICAgICAgIGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
OkZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0ZXJzKTsKKyAgICAgICAgZmlsdGVycyA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOwogfQog
CiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQudHJh
bnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
dHJhbnNmb3JtKTsKKyAgICAgICAgcmVzdWx0LnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKHJl
c3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIFN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCkgewpAQCAt
MzYyLDcgKzM2Miw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJv
cGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh0cmFuc2Zvcm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC5zdWJsYXll
clRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRy
YW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEhp
ZGRlbkNoYW5nZWQpIHsKQEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocm91bmRlZFJlY3QpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJlY3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0
KTsKKyAgICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0
LmNoYW5nZWRQcm9wZXJ0aWVzICYgU2hhcGVQYXRoQ2hhbmdlZCkgewpAQCAtNDcxLDcgKzQ3MSw3
IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSho
YXNGcm9udEJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICho
YXNGcm9udEJ1ZmZlcikgewotICAgICAgICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPihudWxscHRyKTsKKyAgICAgICAgICAg
IGF1dG8gYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4o
bnVsbHB0cik7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpiYWNraW5nU3RvcmUp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIApAQCAtNDg2LDcg
KzQ4Niw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGll
czo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICB9CiAKICAgICBpZiAocmVzdWx0
LmNoYW5nZWRQcm9wZXJ0aWVzICYgRmlsdGVyc0NoYW5nZWQpIHsKLSAgICAgICAgYXV0byBmaWx0
ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigpOworICAg
ICAgICBhdXRvIGZpbHRlcnMgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+
KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmZpbHRlcnMpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQuZmlsdGVycyA9IFdURk1vdmUoZmlsdGVycyk7
CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVlVHIKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyUHJvcGVydGllcz4oKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPExheWVyUHJvcGVydGllcz4gbGF5ZXJQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxMYXll
clByb3BlcnRpZXM+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmxheWVyUHJvcGVy
dGllcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAppbmRleCA5NzhjNGJiZWQ3YjVj
ZDkxY2FhZWMxNTRiYzhiYTE0YmFiNzUzNDYxLi5lODI2YTMwYjEyZTI0ZWNmNDMwYzY5Yjc2YjFh
NmYyOGY1YmI5OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yVHJhbnNhY3Rpb24uY3BwCkBAIC01MjIsNyArNTIyLDcgQEAgYm9vbCBSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzTmV3Um9vdE5vZGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IG1ha2VV
bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOwogCiAgICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVy
dGllczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0NoYW5nZWRQcm9wZXJ0aWVzKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJv
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNw
cAppbmRleCBjNzM0N2M3OWU2NjkzODM3ODVkMDVkMjI5ZTQ3Yjc0N2MxZjBjYTU1Li5iMmNkNDg0
NjY3N2NlOTdkZmFjMjg1ODQ5MGMxZWE0MzRmOTYyOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC02MCw3ICs2MCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFn
ZSA9IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOwogICAgIFJlZlB0cjxjYWlyb190PiBiaXRtYXBDb250
ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86
OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0
b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVh
YmxlQml0bWFwQ0cuY3BwCmluZGV4IDkyZjEwNjJiMjkwZjc3NWRiNWFlN2VkMTk1MmE5Y2E4NThh
YjMxMjIuLjAxNmFiYmQ5OTNlMThhNDVjMDFhN2YwNDk3ZGNjMzFhNTNiNDM3MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTEwMCw3ICsx
MDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGJpdG1h
cENvbnRleHQuZ2V0KCksIDAsIG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVD
VE0oYml0bWFwQ29udGV4dC5nZXQoKSwgMSwgLTEpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8R3JhcGhpY3NDb250ZXh0PihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOwogfQogCiB2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJl
Y3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0
MkQuY3BwCmluZGV4IDYwZjhmM2NiNzMyODliNmIwZDJmNGMzNTE0NmYxY2ZlZDQwMzRhODAuLjEw
MDFlZTNlNTI5MmVkY2I1MzZmODIzMzAzYzJjNzRjMmIxZTkyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcApAQCAtNzAs
NyArNzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7CiAgICAgbV9iaXRtYXAgPSBjcmVhdGVEaXJl
Y3QyRFN1cmZhY2UoKTsKICAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IGJpdG1hcENvbnRl
eHQgPSBEaXJlY3QyRDo6Y3JlYXRlUmVuZGVyVGFyZ2V0RnJvbVdJQ0JpdG1hcChtX2JpdG1hcC5n
ZXQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQo
KSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIH0K
IAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKaW5kZXgg
Mjk5NTgxMDk1ZGQxZDFiMTVhZmVhYmI0ZGFjYmVkMDVkMmJkZDExNC4uNTQ1YTdiZTRkNDgxOTcx
MzI4ZDFjM2Y3OWQyNzFlZDlhMjFmODM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdl
YlByb2Nlc3NQb29sOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkF1
dG9tYXRpb25DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAyOGZhZjY4NzE5YTlk
NzI4ZDUxYjZjNzcyZDg0ZTE3YjY0OTA5N2NhLi4yYWUyYTUwMzRjM2E0MTcxY2NmNDc3Yjk3ODVi
NzNhNmYyNGRiODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIEF1
dG9tYXRpb25TZXNzaW9uQnJvd3NpbmdDb250ZXh0T3B0aW9ucyA6IHVpbnQxNl90IHsKIH07CiAK
IGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEphdmFTY3JpcHREaWFsb2dUeXBlIHsKICAg
ICAgICAgQWxlcnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZXh0TWVudUNsaWVudC5oCmluZGV4IGFmMTA5YzFkZjY3MDBkYzIzZTJlMzMxYjBiNTBlZmJjZmY0
Mjg2NjcuLjgxNmY3MWUxMjY3MGNiM2Q2NWIxZTYzMjgwM2E2YjQwZWY3ZGJmYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCkBA
IC00OSw2ICs0OSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBj
bGFzcyBDb250ZXh0TWVudUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5oCmluZGV4IDBmOGNhYjk3MzI5ZjA5NTdmMzJiNDdjMjc3ODFkMWU3ODZmYTE0
N2QuLjhiNDRhM2Y0NTZjNTMyYWQzMzgwNmVmNjliNDdlYWQwOTQxZGY3YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
bmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKaW5kZXggOTJiMmQ2
NzVkZmNhMmNhZmRhMjExYjNmNzFjNTc5OGFmZDQ1ZDYyYS4uYjRlMmFkZTcyOWVhNjZkOGRkYThk
ZDUwMjExOGFlNGFiZGIyMTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAg
bmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEaWN0aW9uYXJ5OwogCiBjbGFzcyBEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAppbmRleCAwMjM3NmUxZTExMGQ0
NzZlYjJiOTE4NWU0ZTJmY2Q4ZDZlMTMzMmUxLi5iMmVhY2M5YjgzMjU5OGIxN2E5OWRiZDlkNjdl
ZjI0ZTQ3M2FlZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93
bmxvYWRDbGllbnQuaApAQCAtNDYsNiArNDYsNyBAQCBlbnVtIGNsYXNzIEFsbG93T3ZlcndyaXRl
IHsgTm8sIFllcyB9OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIERvd25sb2FkQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3du
bG9hZENsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRmluZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRD
bGllbnQuaAppbmRleCBmMzEyM2FmMTk1MTY1YTY2OWQ2NjY4MzE4YjgxMmU5MzM2NWU2ZGMyLi42
ZDFlM2IyMTFmZTBkZDk1YTk0ODUwNTg0MTdkYjRkZTA4MjQwZDZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEZpbmRDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbmRDbGll
bnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZp
bmRNYXRjaGVzQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1h
dGNoZXNDbGllbnQuaAppbmRleCBjNmY0NTczNDJkMTExOTAxZGNhNmQzYzMwOTAzMzdmZWU3YTFm
ZWMyLi5mYWUxZGNkM2NkNjg4MzUwN2VmYmUzZDk1ZDVkNmY3MmEwMzY5ZGU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaApAQCAt
MzgsNiArMzgsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgRmluZE1hdGNoZXNDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfkZpbmRNYXRjaGVzQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oCmluZGV4IDViMGM2Y2NhMjRlZWZjMWE5
NTgxOTFlMGUyNzk0YTQ3YjRmNTRlN2MuLmYwY2EwNjAxMTE5ODAyZWQzNjliNGQwNzhkODNjODYy
YTUxNjEyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3Jt
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQu
aApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIAogY2xh
c3MgRm9ybUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Rm9ybUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaAppbmRleCAxMzc1NTI5Y2RhMjVmMjVjYmIx
NzliZGM4OTg5MTcxYzg5ZWU4ODU3Li44OTc0Y2QxMzM5NDc3NTAyNzNmNDUwZjBlODM5NmMwZTZi
MTMyMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNj
cmVlbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2Ny
ZWVuQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIEZ1bGxzY3JlZW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIEFQSVR5cGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92
aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlk
ZXIuaAppbmRleCA1MjY2YmMyY2E1NGNmMDk5YzIzOGNhY2M2MjE0NGM5Nzk5YTA5Nzk3Li43YzZm
NTYyOWNiNjBlNTNiYzdiODVhYTg4ODlmNzJlNjhkN2E0YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTM0LDYg
KzM0LDcgQEAgY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk7CiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+R2VvbG9jYXRpb25Qcm92aWRlcigpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUu
Y3BwCmluZGV4IDk4MWE5ODViYmRlNWYxY2I2NWY5NmNiYjIxMzlmYmNmMTlkN2RjZTUuLmUxMjJl
ZTNlZGIxYzQyMTlkMWQ4NDE5OTMyMWE4MDAzZDUyYzgyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCkBAIC0xNDgsNyArMTQ4
LDcgQEAgdm9pZCBIVFRQQ29va2llU3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9i
c2VydmVyKQogCiAgICAgQVNTRVJUKCFtX29ic2VydmVkQ29va2llTWFuYWdlclByb3h5KTsKIAot
ICAgIG1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSVdl
YkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyPigqdGhpcyk7CisgICAgbV9jb29raWVNYW5hZ2Vy
UHJveHlPYnNlcnZlciA9IG1ha2VVbmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2
ZXI+KCp0aGlzKTsKIAogICAgIGF1dG8qIHBvb2wgPSBtX293bmluZ0RhdGFTdG9yZS0+cHJvY2Vz
c1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaAppbmRleCBmY2Y0NjA2MWY2YmZhNmRjYjc2
MGUxMmM2NjMzYjZiNDVmMTU2ZGQ0Li4xMTg0YWE0MzJjM2I5ZmZjYjE1ZGE1ZjgyOGVmNGFjNGYx
YWRiMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9y
eUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xp
ZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SGlzdG9yeUNsaWVudCgpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xp
ZW50LmgKaW5kZXggZWE5ZWJhNTBlMWVmZThmMDMyMWM0ZGZlM2E0NDZmMGRjYmI1ZDhjOS4uYmU0
M2FlZWM1NGZmMmQ0YWJiNWEyOGZmMzYzMTQ1YzQ5MGM3ZTg1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaApAQCAtMzQsNiAr
MzQsNyBAQCBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3Mg
SWNvbkRhdGFiYXNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JY29uRGF0YWJhc2VDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCA2Zjll
N2FmOWM5ODA5MjMzYjZhNTY1ZWMzZTM4MGJlMGFhY2Q1NjdlLi4yZmUzODYyNTk0NjNiZmIzNjIz
ZWJiZGI0ZmVmNWY4MzkzNmIwZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBEYXRh
UmVmZXJlbmNlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JY29u
TG9hZGluZ0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IGMzNWU3YjNhZTQ5M2Q5YWM2M2Ni
M2E0YjU4MWZlMzJmY2I0MGFjZTguLjlkNDM0ODlhMmQ2MjU3Y2IwY2FmOTIyYjNmYjA5MzI5NWNl
OWJiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29s
OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1
bmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAppbmRleCBjYmI5
ZTBhOTcxNDViZDE3ZGRlZjhlMGJiMTRhZjhjMzc2ZGZiMzg4Li5kYjVkOTBjMzFmOTI3NjlkMzAz
YTAxYWQ3OGJkYTdmYmQxYTRkMDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaApAQCAtMzgsNiAr
MzgsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkgewog
CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVu
dC5oCmluZGV4IDM0OGQ2YmY3NzI5MjcyZThmMmFiYWVjMzc1NWMyMGRlNTQyZDY0NWQuLmIyZWE0
MWQ5ZTJmMmU4MWUyYzllYjNiODc3OTFmYzNlZjhjM2YwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3Mg
TmF2aWdhdGlvbjsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgTG9hZGVyQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkZXJDbGll
bnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2
aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCBhNmUwMTljYzQ1MTg2M2E0MWFjZmM4
YmVhN2JmMzAyODk2YjFiYjczLi5jZDIyYTI2NzY0NjhkMTgyMzRhNjA4NDJmZTlkOTE2NzFiMjBh
ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50LmgKQEAgLTczLDYgKzczLDcgQEAgY2xhc3MgTmF2aWdhdGlvblJlc3BvbnNlOwogY2xh
c3MgT2JqZWN0OwogCiBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5OYXZpZ2F0aW9uQ2xpZW50KCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAppbmRl
eCA1ZWJlNDQwNzQyYTc2NTQxYjFkOWNjZjI5OTVjOWE5NWZlODRkNWFkLi42YWU4ZTc1MjA1ZmZm
Yzg2NTJmNGY5YjgzYmIzZGUzMGVlNmNmYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBBUEkg
ewogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBQb2xpY3lDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflBvbGljeUNsaWVudCgpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGQ5ZGQwZGI0
NjYzNzcyMmI2MDJiMjBkZGRmNjczODEzNWY2NDZmNjIuLjc3MmRhNmU1YTg2OTc3ZWM4YWUyZGMw
NzU0MmQ4ZmNmMWUxNDk2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oCkBAIC03MSw2ICs3MSw3IEBAIGNsYXNzIE9wZW5QYW5lbFBhcmFtZXRlcnM7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVUlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IGFmY2U3MGI2Mjdm
ZWVmN2I1YmY4ODI4OWFkODIyZjE5YzE5Y2RiNmYuLjNkMDE2MTFjMDI5ZjkzZjVjZTNlNWViM2Uz
MDY0NzQ4ODlhYjhmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogd2tDbAogCiB2b2lk
IFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewot
ICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3
a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1
bmRsZUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiB3
a0NsaWVudCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGll
bnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogICAg
IH07CiAKICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCA9ICpXZWJLaXQ6
OnRvSW1wbChjb250ZXh0UmVmKTsKLSAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8SGlzdG9yeUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBwcm9jZXNzUG9v
bC5zZXRIaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWU8SGlzdG9yeUNsaWVudD4od2tDbGllbnQpKTsK
IAogICAgIGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcyA9IHByb2Nlc3NQb29sLmhpc3RvcnlDbGllbnQo
KS5hZGRzVmlzaXRlZExpbmtzKCk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRl
eHREb3dubG9hZAogICAgICAgICB9CiAgICAgfTsKIAotICAgIFdlYktpdDo6dG9JbXBsKGNvbnRl
eHRSZWYpLT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkQ2xpZW50
Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3dubG9h
ZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lk
IFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNv
bnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApp
bmRleCAxMWI4MzRiNGVlMmE5YTY4NzYyNmM3MzJiZjU4YTQ4ODIzZjYzMzRhLi44ODhiNzViYzdj
ZWM4OWQxNmUwN2Y2MTdlN2JiMmNlMjk3OWZhNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC00MCw3ICs0
MCw3IEBAIFdLVHlwZUlEIFdLR2VvbG9jYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBX
S0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdl
b2xvY2F0aW9uTWFuYWdlclJlZiwgY29uc3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyQmFzZSogd2tQ
cm92aWRlcikKIHsKLSAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7
CisgICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlx
dWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdLR2Vv
bG9jYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXS0dlb2xvY2F0aW9uTWFu
YWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYsIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBw
b3NpdGlvblJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGIyMjNkNmY4N2JmYTVlOTZlM2U1MGRhMmRk
NzhmZjBkMmRkNDE2Y2UuLjc2OTIzOTkwYWI1YjllYTIxMzg1ZjFkMzU2OWU4YjUwYWE3ZjY1ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBXS1R5cGVJRCBXS05vdGlmaWNhdGlv
bk1hbmFnZXJHZXRUeXBlSUQoKQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3Zp
ZGVyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBjb25zdCBXS05vdGlmaWNh
dGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKLSAgICB0b0ltcGwobWFuYWdlclJlZikt
PnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+KHdr
UHJvdmlkZXIpKTsKKyAgICB0b0ltcGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlx
dWU8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAogdm9pZCBXS05v
dGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNDdlYzcyNmIwY2U0NDA1N2Yw
MDJiNTQwYmVhNzY4ZTQzYjEwYThkNC4uNjFhNjliMWYzYTZkYTc0OTZhZDQ3MjY5NzBiODVmMmM5
MTE4MTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC05
NDgsNyArOTQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2wKICAgICAgICAgfQogICAgIH07
CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5zZXRDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0Ns
aWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BB
UkFNKHdrQ2xpZW50KTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250
ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVD
bAogCiB2b2lkIFdLUGFnZVNldFBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRCYXNlKiB3a0NsaWVu
dCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8V2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVudCkp
OworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVu
aXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZUZpbmRDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xp
ZW50QmFzZSogd2tDbAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+
c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRDbGllbnQ+KHdrQ2xpZW50KSk7Cisg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4o
d2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSogd2tDbGll
bnQpCkBAIC0xMDM4LDcgKzEwMzgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0Ns
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbAogICAgICAg
ICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNldEZpbmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8RmluZE1hdGNoZXND
bGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dEJhc2UqIHdrQ2xpZW50KQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVj
dGVkQnUKIAogdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdl
UmVmKS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xp
ZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2Vi
Rm9ybUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0Ns
aWVudCkKQEAgLTExOTksNyArMTE5OSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKIAogICAg
IFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5ID0gdG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgYXV0
byBsb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRlckNsaWVudD4od2tDbGllbnQp
OworICAgIGF1dG8gbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMb2FkZXJDbGllbnQ+KHdrQ2xp
ZW50KTsKIAogICAgIC8vIEl0IHdvdWxkIGJlIG5pY2UgdG8gZ2V0IHJpZCBvZiB0aGlzIGNvZGUg
YW5kIHRyYW5zaXRpb24gYWxsIGNsaWVudHMgdG8gdXNpbmcgZGlkTGF5b3V0IGluc3RlYWQgb2YK
ICAgICAvLyBkaWRGaXJzdExheW91dEluRnJhbWUgYW5kIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEluRnJhbWUuIEluIHRoZSBtZWFudGltZSwgdGhpcyBpcyByZXF1aXJlZApAQCAtMTI4
MSw3ICsxMjgxLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICB9CiAgICAgfTsK
IAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
UG9saWN5Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UG9saWN5
Q2xpZW50KG1ha2VVbmlxdWU8UG9saWN5Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTIwNzUsNyArMjA3NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50
CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9p
ZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMjI5MywxNjQgKzIyOTMs
MTY2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgd2ViUGFnZVByb3h5LT5zZXROYXZp
Z2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8TmF2aWdhdGlvbkNsaWVudD4od2tDbGllbnQpKTsK
IH0KIAotdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFn
ZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQotewotICAgIGNsYXNzIFN0YXRlQ2xpZW50IGZpbmFs
IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZVN0YXRlQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdl
TG9hZFN0YXRlOjpPYnNlcnZlciB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBTdGF0
ZUNsaWVudChjb25zdCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOwotICAgICAgICB9Ci0gICAgcHJpdmF0ZToK
LSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmco
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorY2xhc3MgU3RhdGVDbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGlj
IFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTdGF0ZUNsaWVudChjb25zdCBXS1BhZ2VTdGF0ZUNsaWVu
dEJhc2UqIGNsaWVudCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICB9
Citwcml2YXRlOgorICAgIHZvaWQgd2lsbENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRp
bmcoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZUlzTG9hZGluZykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
VGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2ls
bENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2ls
bENoYW5nZVRpdGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxs
Q2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAg
dm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJp
ZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZl
VVJMKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAg
IHZvaWQgd2lsbENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTCkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VB
Y3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQg
ZGlkQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQuZGlkQ2hhbmdlQWN0aXZlVVJMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9
CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5
U2VjdXJlQ29udGVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2Ns
aWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhhc09u
bHlTZWN1cmVDb250ZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53
aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSGFz
T25seVNlY3VyZUNvbnRlbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRl
bnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VIYXNP
bmx5U2VjdXJlQ29udGVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VFc3Rp
bWF0ZWRQcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2Ns
aWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFBy
b2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
RXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAg
ICAgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdl
RXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hh
bmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2sobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VD
YW5Hb0JhY2soKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZENoYW5nZUNhbkdvQmFjaykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
LSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3
YXJkKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxs
Q2hhbmdlQ2FuR29Gb3J3YXJkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0Zvcndh
cmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRD
aGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZCkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29Gb3J3YXJk
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29G
b3J3YXJkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VD
YW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAg
dm9pZCB3aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0
c0luUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0lu
UHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3Jr
UmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1
ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAg
IHZvaWQgZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jl
c3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5ldHdv
cmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAK
LSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZv
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFu
Z2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgd2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VD
ZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2VydGlmaWNh
dGVJbmZvKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
Q2VydGlmaWNhdGVJbmZvKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5k
aWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9
CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jl
c3BvbnNpdmUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNS
ZXNwb25zaXZlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdl
V2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRTd2FwV2Vi
UHJvY2Vzc2VzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRTd2FwV2ViUHJvY2Vzc2VzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLSAgICAgICAgfQotICAgIH07CisgICAgdm9pZCBkaWRTd2FwV2ViUHJvY2Vzc2VzKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcykK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3Nl
cyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KK307CisKK3ZvaWQgV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKK3sKICAgICBpZiAoY2xpZW50KQotICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VM
b2FkU3RhdGVPYnNlcnZlcihzdGQ6Om1ha2VfdW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsK
KyAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobWFrZVVuaXF1
ZTxTdGF0ZUNsaWVudD4oY2xpZW50KSk7CiAgICAgZWxzZQogICAgICAgICB0b0ltcGwocGFnZSkt
PnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KaW5kZXggZjc2
M2FmNjAwM2RhNDY2NzM2MzFlOTFlYTgxYjgzYjVjOTdhMDg3ZC4uMzVlZjkyMjE1NGUxOTYzMDBl
NGI2ZWU3NWQ0Yzk4MTc4NWJjM2UyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KQEAgLTUyLDcgKzUyLDcgQEAgLSAo
aWQpaW5pdFdpdGhQYWdlOihSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYpcGFnZQogICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgX3BhZ2UgPSBXVEZNb3ZlKHBhZ2UpOwotICAgIF9vYnNl
cnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNl
bGYsIEAiVVJMIik7CisgICAgX29ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2Fk
U3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgp
LmFkZE9ic2VydmVyKCpfb2JzZXJ2ZXIpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCmluZGV4IDc4YmJhMzk2N2I2MTk3
YzBlOGE3YzIzYWMzZGE4Y2QxMzJlN2M0YmUuLjk2NDA2ZDBhYWZiYzM1NTU2MGI1ZDMxOTdhMDBj
MjVmNTc1OWEzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dw
ZS9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1Zp
ZXcuY3BwCkBAIC02OCw1ICs2OCw1IEBAIHZvaWQgV0tWaWV3U2V0Vmlld0NsaWVudChXS1ZpZXdS
ZWYgdmlldywgY29uc3QgV0tWaWV3Q2xpZW50QmFzZSogY2xpZW50KQogICAgICAgICB9CiAgICAg
fTsKIAotICAgIHRvSW1wbCh2aWV3KS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Vmlld0Ns
aWVudD4oY2xpZW50KSk7CisgICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxW
aWV3Q2xpZW50PihjbGllbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmlu
ZGV4IDI2NTU1NGYzZDdmMmQ3YWQyOTZlOWYzZjlmYTExMzg4Yjc4ZmQ1NjQuLjQ5Njc3ODhhMTA1
N2ZhODgyYTBhMDFjOGRiZjUwMDJlOTIyNmVjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlci5tbQpAQCAtNjAyLDcgKzYwMiw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhQYWdl
UmVmOihXS1BhZ2VSZWYpcGFnZVJlZgogCiAgICAgX3BhZ2UgPSBXZWJLaXQ6OnRvSW1wbChwYWdl
UmVmKTsKIAotICAgIF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmKTsKKyAgICBfcGFnZUxvYWRTdGF0ZU9i
c2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZik7
CiAgICAgX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqX3BhZ2VMb2FkU3RhdGVP
YnNlcnZlcik7CiAKICAgICBBU1NFUlQoIWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJNYXAoKS5j
b250YWlucyhfcGFnZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDEzNzJjYTQxMDZjNzZlMWQ2
MjM1ZDYxNGFkNWMxZTZhNTZlYTA1YTEuLjgxZDM3MDNiMGVlYTgyZTVlNmM2MmYzMjIyYWM0ZTY4
MTlmNmIzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0hUVFBDb29raWVTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCAtICh2b2lkKWFkZE9i
c2VydmVyOihpZDxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPilvYnNlcnZlcgogICAgIGlmICgh
cmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9i
c2VydmVyKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXS0hUVFBD
b29raWVTdG9yZU9ic2VydmVyPihvYnNlcnZlcik7CiAgICAgX2Nvb2tpZVN0b3JlLT5yZWdpc3Rl
ck9ic2VydmVyKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBiYWNlNWFj
N2VjMDBiMTg5OGFkMmRmNzJjYjFiMTk0NDY3ZGNlYzlkLi5lYmFjNTY4ZTNkZGI2ODcwZjg1YjAx
NTA4ZWMyMGZhYWI3ZjIwNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzczLDcgKzM3Myw3IEBAIC0gKGlkIDxfV0tE
b3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogLSAodm9pZClfc2V0RG93bmxvYWRE
ZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KWRvd25sb2FkRGVsZWdhdGUKIHsKICAg
ICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29s
LT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGll
bnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xp
ZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkp
OwogfQogCiAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRl
CkBAIC0zODQsNyArMzg0LDcgQEAgLSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9t
YXRpb25EZWxlZ2F0ZQogLSAodm9pZClfc2V0QXV0b21hdGlvbkRlbGVnYXRlOihpZCA8X1dLQXV0
b21hdGlvbkRlbGVnYXRlPilhdXRvbWF0aW9uRGVsZWdhdGUKIHsKICAgICBfYXV0b21hdGlvbkRl
bGVnYXRlID0gYXV0b21hdGlvbkRlbGVnYXRlOwotICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21h
dGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2Vs
ZiwgYXV0b21hdGlvbkRlbGVnYXRlKSk7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9u
Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0
aW9uRGVsZWdhdGUpKTsKIH0KIAogLSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIubW0KaW5kZXggOGI2ZGYyNGY4OTUyZDg0ZjYwNzU0NGM2YTMxYTJkZDFiOGFh
MzU1ZC4uYTAwYjIwM2NjOTA1OTMwMWJlY2M0NjFkNjFiNDY3MzJiODU2MTJmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlci5tbQpAQCAtMTE4LDYgKzExOCw3IEBAIC0gKHZvaWQpcmVtb3ZlQWxsQ29u
dGVudFJ1bGVMaXN0cwogfQogCiBjbGFzcyBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlIGZp
bmFsIDogcHVibGljIFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyaXB0TWVzc2FnZUhh
bmRsZXJEZWxlZ2F0ZShXS1VzZXJDb250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQgPFdL
U2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQogICAgICAgICA6
IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAK
IC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5k
bGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICBh
dXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRN
ZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2Vs
Ziwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29y
bGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRl
bXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25l
IGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpAQCAtMjI5LDcgKzIzMCw3IEBAIC0gKHZvaWQp
X3JlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDoo
X1dLVXNlckNvbnRlbnRXCiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8
V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNTdHJp
bmcgKiluYW1lIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29u
dGVudFdvcmxkCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxl
Z2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRl
bnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VI
YW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwg
KnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKICAgICBpZiAoIV91c2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIu
Z2V0KCkpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNl
cHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRo
IG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAzOTFhMTk5
MmUzNTMyZGJlNWYyMWRiNjkxZGQ4MTA4YWFlMmE2NmMuLjA4ZjQyZWM4YjEzYmY3MGJkMmI2YjM3
YmM3ZDgxNTY4MjNkNmM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtNzU3LDcgKzc1Nyw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIF9pbXBsID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZp
Z3VyYXRpb24uY29weVJlZigpKTsKKyAgICBfaW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJW
aWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2wsIHBhZ2VDb25maWd1cmF0aW9uLmNvcHlS
ZWYoKSk7CiAgICAgX3BhZ2UgPSAmX2ltcGwtPnBhZ2UoKTsKIAogICAgIF9pbXBsLT5zZXRBdXRv
bWF0aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHModHJ1ZSk7CkBAIC03NjksMTQgKzc2OSwxNCBA
QCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKiljb25maWd1cmF0aW9uCiAKICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9y
RGVza3RvcFVzZXJBZ2VudChjb25maWd1cmF0aW9uLl9hcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9w
VXNlckFnZW50KTsKIAotICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKKyAgICBfbmF2aWdhdGlvblN0YXRlID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7CiAgICAgX3BhZ2UtPnNldE5h
dmlnYXRpb25DbGllbnQoX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgp
KTsKIAotICAgIF91aURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdh
dGU+KHNlbGYpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7Ci0gICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5n
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4o
c2VsZikpOworICAgIF91aURlbGVnYXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+
KHNlbGYpOworICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGaW5k
Q2xpZW50PihzZWxmKSk7CisgICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KG1h
a2VVbmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOwogCi0gICAg
X2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SWNvbkxvYWRp
bmdEZWxlZ2F0ZT4oc2VsZik7CisgICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBtYWtlVW5pcXVl
PFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7CiAKICAgICBfdXNlUGxhdGZvcm1G
aW5kVUkgPSBZRVM7CiAKQEAgLTM0MjUsNyArMzQyNSw3IEBAIC0gKHZvaWQpc2V0QWxsb3dzQmFj
a0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6KEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0
aW9uCiAgICAgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gYWxsb3dzQmFj
a0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7CiAKICAgICBpZiAoYWxsb3dzQmFja0ZvcndhcmRO
YXZpZ2F0aW9uR2VzdHVyZXMgJiYgIV9nZXN0dXJlQ29udHJvbGxlcikgewotICAgICAgICBfZ2Vz
dHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyPigqX3BhZ2UpOworICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2UpOwogICAgICAgICBfZ2VzdHVy
ZUNvbnRyb2xsZXItPmluc3RhbGxTd2lwZUhhbmRsZXIoc2VsZiwgW3NlbGYgc2Nyb2xsVmlld10p
OwogICAgICAgICBpZiAoV0tXZWJWaWV3ICphbHRlcm5hdGVXZWJWaWV3ID0gW19jb25maWd1cmF0
aW9uIF9hbHRlcm5hdGVXZWJWaWV3Rm9yTmF2aWdhdGlvbkdlc3R1cmVzXSkKICAgICAgICAgICAg
IF9nZXN0dXJlQ29udHJvbGxlci0+c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFn
ZShhbHRlcm5hdGVXZWJWaWV3LT5fcGFnZS5nZXQoKSk7CkBAIC01Njc4LDcgKzU2NzgsNyBAQCAt
ICh2b2lkKV9zZXRJbnB1dERlbGVnYXRlOihpZCA8X1dLSW5wdXREZWxlZ2F0ZT4paW5wdXREZWxl
Z2F0ZQogICAgIH07CiAKICAgICBpZiAoaW5wdXREZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNl
dEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CisgICAgICAg
IF9wYWdlLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOwogICAg
IGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobnVsbHB0cik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Np
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNl
c3Npb24ubW0KaW5kZXggN2FkMDczYjhjZDZkZDQyMDNlMWE3NjA1OGY3YzdkZjJhOWY4YWQ3Yi4u
MmFkZWVhNzYwYzY5OGIxOGFlNTkxZTU3MDU3MTMyOTVmMjRjNTZkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lv
bi5tbQpAQCAtNzIsNyArNzIsNyBAQCAtIChpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0
ZT4pZGVsZWdhdGUKIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lv
bkRlbGVnYXRlPilkZWxlZ2F0ZQogewogICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIF9z
ZXNzaW9uLT5zZXRDbGllbnQoZGVsZWdhdGUgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXV0
b21hdGlvblNlc3Npb25DbGllbnQ+KGRlbGVnYXRlKSA6IG51bGxwdHIpOworICAgIF9zZXNzaW9u
LT5zZXRDbGllbnQoZGVsZWdhdGUgPyBtYWtlVW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNlc3Np
b25DbGllbnQ+KGRlbGVnYXRlKSA6IG51bGxwdHIpOwogfQogCiAtIChOU1N0cmluZyAqKXNlc3Np
b25JZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
bW0KaW5kZXggYjM3YjA1MDUzZjEyNGFjYjcwZmQ2YWRlNmRmNDIwZmU4MjVkNTRjZi4uMGRkNDA5
YTQzZGU2NTMwMGM5ZjBjYzg1NDQ3YWMyZjcxM2VjOTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMzgsNiArMzgsNyBAQCBAZW5kCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQg
ZmluYWwgOiBwdWJsaWMgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIF9XS1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5Q2xpZW50KF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyICpjb250cm9sbGVy
KQogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpAQCAtNzUsNyArNzYsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdAogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgbV9yZW1vdGVJ
bnNwZWN0b3JQcm94eSA9IFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSgp
OwotICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKKyAgICBtX3JlbW90ZUlu
c3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpfV0tSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eUNsaWVudD4oc2VsZik7CiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+c2V0Q2xpZW50
KG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50LmdldCgpKTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5k
ZXggOGQyZjg4YWUwMDMyYTBkOTM0NWU2ODAwYTk3ODU4YjQyOGE0ZDZkOS4uMDY4NzBkMjFkZWU3
Y2E0Zjg5ZGI5ZTM0MmY2ZjBmNWZkM2Y1NGE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0xNjkxLDcgKzE2OTEsNyBAQCBp
bmxpbmUgdm9pZCByZWFkeVNRTGl0ZVN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3Rh
dGVtZW50PiYgc3RhdGVtZW50LCBTUQogICAgICAgICBzdGF0ZW1lbnQgPSBudWxscHRyOwogICAg
IH0KICAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAgICBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oZGIsIHN0cik7CisgICAgICAgIHN0YXRlbWVudCA9IG1h
a2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYiwgc3RyKTsKICAgICAgICAgaWYgKHN0YXRlbWVu
dC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIExPR19FUlJPUigiUHJlcGFy
aW5nIHN0YXRlbWVudCAlcyBmYWlsZWQiLCBzdHIuYXNjaWkoKS5kYXRhKCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5kZXgg
YmFiZDhhOTgyOWZiODBkMTk4NTJlYzk3NGFlZWE3MGNlZTBiOTE1OC4uOGE4Y2FiYmQ1M2MxZTY1
ZjcwYWRkMDg1ZDRmNTVlYTMxMDExNjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgU2hhcmVk
QnVmZmVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEljb25EYXRhYmFzZUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNv
bkRhdGFiYXNlQ2xpZW50KCkgPSBkZWZhdWx0OwogCkBAIC01OCw2ICs1OSw3IEBAIGNsYXNzIElj
b25EYXRhYmFzZSB7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgSWNvblNuYXBzaG90IHsKKyAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJY29uU25h
cHNob3QoKSA9IGRlZmF1bHQ7CiAKQEAgLTExOCw2ICsxMjAsNyBAQCBjbGFzcyBJY29uRGF0YWJh
c2UgewogICAgIH07CiAKICAgICBjbGFzcyBQYWdlVVJMU25hcHNob3QgeworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFBhZ2VVUkxTbmFwc2hv
dCgpID0gZGVmYXVsdDsKIApAQCAtMTcyLDYgKzE3NSw3IEBAIGNsYXNzIEljb25EYXRhYmFzZSB7
CiAgICAgfTsKIAogICAgIGNsYXNzIE1haW5UaHJlYWROb3RpZmllciB7CisgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgTWFpblRocmVhZE5vdGlm
aWVyKCkKICAgICAgICAgICAgIDogbV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNYWlu
VGhyZWFkTm90aWZpZXI6OnRpbWVyRmlyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXgg
ZDJhZjY0YmFkODZhOGEzM2YxMzM1NDcyNTgxYjcwMmU0MWE2N2VjMi4uMjE4NjYwNDUxOTI3Njli
ZTZkZmY4NTlhNjMyMDQzZDUxMzU2OWMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAt
NzAsNiArNzAsNyBAQCBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07
CiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHdlYmtpdF9hdXRv
bWF0aW9uX3Nlc3Npb24sIEdfVFlQRV9PQkpFQ1QpCiAKIGNsYXNzIEF1dG9tYXRpb25TZXNzaW9u
Q2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50KFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQogICAgICAg
ICA6IG1fc2Vzc2lvbihzZXNzaW9uKQpAQCAtMjIzLDcgKzIyNCw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAg
c2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbiA9IGFkb3B0UmVmKG5ldyBXZWJBdXRvbWF0aW9uU2Vzc2lv
bigpKTsKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRTZXNzaW9uSWRlbnRpZmllcihT
dHJpbmc6OmZyb21VVEY4KHNlc3Npb24tPnByaXYtPmlkLmRhdGEoKSkpOwotICAgIHNlc3Npb24t
PnByaXYtPnNlc3Npb24tPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50PihzZXNzaW9uKSk7CisgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xp
ZW50KG1ha2VVbmlxdWU8QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKIH0KIAog
c3RhdGljIHZvaWQgd2Via2l0QXV0b21hdGlvblNlc3Npb25EaXNwb3NlKEdPYmplY3QqIG9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENv
bnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdENvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA5N2U5MjU2MDE3NzM3Yjc2NjVhY2M4ZWIy
ZjM1OGViMmVjNTkwMGI5Li4yODU4ZGY2ZjM0ZDRmYTYyMTIwOWJmMWViMWUxMDg4NWFkMDVlNzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC01Niw2ICs1Niw2IEBAIGNsYXNzIENvbnRl
eHRNZW51Q2xpZW50IGZpbmFsOiBwdWJsaWMgQVBJOjpDb250ZXh0TWVudUNsaWVudCB7CiAKIHZv
aWQgYXR0YWNoQ29udGV4dE1lbnVDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
IHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRDb250ZXh0TWVudUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Vi
a2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Q29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1
ZTxDb250ZXh0TWVudUNsaWVudD4od2ViVmlldykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAppbmRleCBkMzJiNTljNTQ3NjY3YTdlYzg3NzE4MTA1MmJk
MWE3NDljMGRiYzFjLi5hMzczYjI5NDU3MTY3OTFhMmQ0YzMwN2JkNWUwYTkyOWM4MTQwYTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKQEAgLTU2LDUgKzU2
LDUgQEAgY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZpbmFsIDogcHVibGljIEFQ
STo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW4KIAogdm9pZCBhdHRhY2hDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKIHsK
LSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFBy
b2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dChtYWtlVW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4dCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93
bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RG93bmxvYWRDbGllbnQuY3BwCmluZGV4IGVhZDRmMjM0OTkxNjcwNGQxN2QxZjIzMDY0MDg5Zjdh
MWEwNDU5NGYuLmU3NzFkZDcxODdlNTg1OWFkYmQ1YTAxNmY4Y2E5MzVkMjhlODRhOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3du
bG9hZENsaWVudC5jcHAKQEAgLTExOCw1ICsxMTgsNSBAQCBjbGFzcyBEb3dubG9hZENsaWVudCBm
aW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hEb3dubG9h
ZENsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIHdl
YmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3dubG9hZENsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Vi
a2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldERvd25sb2FkQ2xpZW50
KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCmluZGV4IDIxODA4M2U3Njk3YTUxMzk4ZjJlZTA5NGNkYjA2OGMyMDgzN2IxZmEuLjli
NTgxOGE5ODM2ZjM3NjJkODk2MjJlMzYyYzNmYzhiMmQzZWJmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNl
LmNwcApAQCAtMjY3LDggKzI2Nyw4IEBAIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3BlbihX
ZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgICAg
IHJldHVybjsKIAogICAgIFdlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUqIHByaXYgPSBkYXRh
YmFzZS0+cHJpdjsKLSAgICBwcml2LT5pY29uRGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElj
b25EYXRhYmFzZT4oKTsKLSAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdEljb25EYXRhYmFzZUNsaWVudD4oZGF0YWJhc2UpKTsKKyAgICBwcml2
LT5pY29uRGF0YWJhc2UgPSBtYWtlVW5pcXVlPEljb25EYXRhYmFzZT4oKTsKKyAgICBwcml2LT5p
Y29uRGF0YWJhc2UtPnNldENsaWVudChtYWtlVW5pcXVlPFdlYktpdEljb25EYXRhYmFzZUNsaWVu
dD4oZGF0YWJhc2UpKTsKICAgICBJY29uRGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7
CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPmlj
b25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55
UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcAppbmRleCA0
Zjk4MGQ0ZWUyNThhY2FjNDU1ODMyM2NhN2JkNzFjY2RmM2JlZWIxLi43Njc1YzljYjNhNWVkYWY4
ODY0ZDE3YTE3OTIxN2NiOTQyMzM2NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCkBAIC0xMzcsNyAr
MTM3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RmluZENvbnRyb2xsZXJDb25zdHJ1Y3RlZChHT2Jq
ZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2ZpbmRfY29udHJvbGxlcl9w
YXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwogCiAgICAgV2ViS2l0RmluZENvbnRy
b2xsZXIqIGZpbmRDb250cm9sbGVyID0gV0VCS0lUX0ZJTkRfQ09OVFJPTExFUihvYmplY3QpOwot
ICAgIGdldFBhZ2UoZmluZENvbnRyb2xsZXIpLnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxGaW5kQ2xpZW50PihmaW5kQ29udHJvbGxlcikpOworICAgIGdldFBhZ2UoZmluZENvbnRyb2xs
ZXIpLnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxGaW5kQ2xpZW50PihmaW5kQ29udHJvbGxlcikp
OwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRGaW5kQ29udHJvbGxlckdldFByb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJh
bVNwZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGb3JtQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZvcm1DbGllbnQuY3BwCmluZGV4IDEzNGQxYzZjZWJlNTY3ZmM1NGQ5NzBmODc2YmUwMjkzMWQz
MjgyMmQuLmJjNjdhMzU3ZGMwNzQ0NWEzNTI4ZjgwZjBhYmQ3OWQwN2MzYmMwNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQu
Y3BwCkBAIC00OCw1ICs0OCw1IEBAIGNsYXNzIEZvcm1DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJ
OjpGb3JtQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hGb3JtQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Rm9y
bUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJr
aXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNs
aWVudD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMmUxNTk0
NWRmYWQyOWMzMTU1MGQxYWQzYzRkZDE0OThiZTdiNzIwNC4uOGNiYTQyMmVkNWUzOGJmODRjNzYw
NTk0ZDZjZjBmNjU4OGNiZWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNDks
NyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyU3RhcnQoV2Vi
S2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBtYW5hZ2VyKQogICAgIH0KIAogICAgIGlmICghbWFuYWdl
ci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyKSB7Ci0gICAgICAgIG1hbmFnZXItPnByaXYtPmdlb2Ns
dWVQcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXI+
KCk7CisgICAgICAgIG1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlciA9IG1ha2VVbmlxdWU8
R2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgICAgIG1hbmFnZXItPnByaXYtPmdl
b2NsdWVQcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KG1hbmFnZXItPnByaXYtPmhpZ2hB
Y2N1cmFjeUVuYWJsZWQpOwogICAgIH0KICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlk
ZXItPnN0YXJ0KFttYW5hZ2VyXShHZW9sb2NhdGlvblBvc2l0aW9uJiYgY29yZVBvc2l0aW9uLCBP
cHRpb25hbDxDU3RyaW5nPiBlcnJvcikgewpAQCAtMzEyLDcgKzMxMiw3IEBAIFdlYktpdEdlb2xv
Y2F0aW9uTWFuYWdlciogd2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyQ3JlYXRlKFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByCiB7CiAgICAgYXV0byogbWFuYWdlciA9IFdFQktJVF9HRU9MT0NBVElPTl9N
QU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9NQU5BR0VSLCBudWxs
cHRyKSk7CiAgICAgbWFuYWdlci0+cHJpdi0+bWFuYWdlciA9IHByb3h5OwotICAgIHByb3h5LT5z
ZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXI+KG1hbmFnZXIp
KTsKKyAgICBwcm94eS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVy
PihtYW5hZ2VyKSk7CiAgICAgcmV0dXJuIG1hbmFnZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50
LmNwcAppbmRleCBiOGYwMWZiMjRmZjI3NjU0YzBhZDYwOWFkZDMyNDE5NWVlNDFjYTU5Li42NWZk
N2M2OTkyMzg4MDExNTU4YzY3ZGViMjVmZGFhMjdmNjZjNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGll
bnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBjbGFz
cyBJY29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uTG9h
ZGluZ0NsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQpAQCAtNjEsNSArNjIsNSBAQCBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1Ymxp
YyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hJY29uTG9hZGluZ0NsaWVu
dFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQ
YWdlKHdlYlZpZXcpLnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxv
YWRpbmdDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3
KS5zZXRJY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJW
aWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggYTkzZmYyNWIzOWEy
OTI1NjAwZDJjNGFlY2NlY2JjNzU3MGQ1ZGYzZC4uOTI2MmE4NGRlY2UyNWJmMGJkZjVjNTliNDhk
MDAyNTg1MmYzNmJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMTc5LDUg
KzE3OSw1IEBAIGNsYXNzIFdlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50IGZpbmFsIDogcHVibGlj
IEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQgewogCiB2b2lkIGF0dGFjaEluamVjdGVkQnVuZGxl
Q2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Vi
a2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxl
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdlYkNv
bnRleHQpKTsKKyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCku
c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudD4od2ViQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4
IDIzNmU4MWMxMzkwYjNlYzNjMTU0OTE4Njg2YmFmYTVlNTM4NjQ2ODcuLjU1MTYzNjQ0Nzc1NTc0
N2I3MGFjNWU3NmIxZDEwNGQ2MWMwYjVjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYktpdE5v
dGlmaWNhdGlvblByb3ZpZGVyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm8KICAgICAsIG1fbm90
aWZpY2F0aW9uTWFuYWdlcihub3RpZmljYXRpb25NYW5hZ2VyKQogewogICAgIEFTU0VSVChtX25v
dGlmaWNhdGlvbk1hbmFnZXIpOwotICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKKyAgICBt
X25vdGlmaWNhdGlvbk1hbmFnZXItPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9u
UHJvdmlkZXI+KCp0aGlzKSk7CiB9CiAKIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+V2Vi
S2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXgg
OWU1OGJjYjBiMWFiMzNmYWFkOTdmY2Y4NTk4MTI3ZTYxMGExMjMzNi4uMzZiNzgzNDM4ODBkOTYw
MzBlNzJmZmFhMTUzNzQ4ZWU1YjFlM2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oCkBA
IC0zMiw2ICszMiw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIAogY2xhc3MgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSosIFdlYktpdFdlYkNvbnRleHQqKTsKICAgICB+V2Vi
S2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCA1YmNlZjY4ZjY1ZDIzMTg5ODBj
ZjkxZGFlNTkzZDc2NjcxNDhhOTg5Li44OTZlMTNkYWQ5N2JlN2ZmNzc2YzAzYmY2ZTdkMDI3ODJl
MDMyMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0VUlDbGllbnQuY3BwCkBAIC0yMjUsNiArMjI1LDYgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJs
aWMgQVBJOjpVSUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRV
SUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0
V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4o
d2ViVmlldykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA0OGIzOGVhYzA4
ZDkxMmM5NjM5ZWY1NTA5NGIxMGYxZmZhZDFkOWY5Li4yNTVlOGU1YTY3OTI3NjQ4MzNkMzdkYWZm
OWY1NzkwZjA4NTk2NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKQEAgLTE4Miw2ICsx
ODIsNyBAQCB2b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3Njcmlw
dHMoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtYQogfQogCiBjbGFzcyBTY3JpcHRNZXNzYWdl
Q2xpZW50R3RrIGZpbmFsIDogcHVibGljIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3Nh
Z2VDbGllbnRHdGsoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBjaGFy
KiBoYW5kbGVyTmFtZSkKICAgICAgICAgOiBtX2hhbmRsZXJOYW1lKGdfcXVhcmtfZnJvbV9zdHJp
bmcoaGFuZGxlck5hbWUpKQpAQCAtMjM4LDcgKzIzOSw3IEBAIGdib29sZWFuIHdlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKFdlYktpdFVz
ZXJDCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwobmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+
KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50
V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSks
IFN0cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29y
bGQoKSk7CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+
YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCkBAIC0yODgs
NyArMjg5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVy
X3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQoV2UKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbCh3b3JsZE5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3Ry
aW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsK
KyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUp
LCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOwogICAgIHJldHVybiBtYW5hZ2Vy
LT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxl
cihoYW5kbGVyLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBhZDgzZGI4MjNkMzdkMjBmNTEz
YjAxMjNjZTI3NGEyYmJmNDcxNzgyLi44YzY4OTgyOTUzOWY0MjIzOGIzMDdmNTU1NjA4YTVjNTAw
MmRjZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTk4LDYgKzE5OCw3IEBAIHN0YXRpYyBndWludCBzaWdu
YWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogY2xhc3MgV2ViS2l0QXV0b21hdGlvbkNsaWVudCBmaW5hbCA6IEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFdlYktpdEF1dG9tYXRpb25DbGllbnQoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dCkKICAgICAgICAgOiBtX3dlYkNvbnRleHQoY29udGV4dCkKQEAgLTM2Nyw5ICszNjgs
OSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBhdHRhY2hDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAKICAgICBwcml2LT5n
ZW9sb2NhdGlvbk1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyQ3Jl
YXRlKHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5PigpKSk7Ci0gICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxl
bWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdlYkNvbnRleHQpOworICAgIHBy
aXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0gbWFrZVVuaXF1ZTxXZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5PigpLCB3ZWJDb250ZXh0KTsKICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQotICAgIHByaXYtPnJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPih3ZWJD
b250ZXh0KTsKKyAgICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIgPSBtYWtl
VW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4od2ViQ29udGV4dCk7CiAjZW5k
aWYKIH0KIApAQCAtNjc4LDcgKzY3OSw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9h
dXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgZ2Jvb2xlCiAgICAg
ICAgICAgICBnX3dhcm5pbmcoIk5vdCBlbmFibGluZyBhdXRvbWF0aW9uIG9uIFdlYktpdFdlYkNv
bnRleHQgYmVjYXVzZSB0aGVyZSdzIGFub3RoZXIgY29udGV4dCB3aXRoIGF1dG9tYXRpb24gZW5h
YmxlZCwgb25seSBvbmUgaXMgYWxsb3dlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQpOworICAgICAgICBjb250ZXh0
LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXRBdXRvbWF0aW9uQ2xp
ZW50Pihjb250ZXh0KTsKICAgICB9IGVsc2UKICAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21h
dGlvbkNsaWVudCA9IG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYjIzOWFjNGUxOWU2M2QzM2E4
NjlkZWZiNjZmYzNjMGI0NTAwYjc4NS4uNzQzMGMzZmNmZDU0YzQ2ZWZhNjRlMTJmZDk3ZGU1YTkz
Mjk4YTQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAKQEAgLTIwMSw2ICsyMDEsNyBAQCBjbGFzcyBQYWdlTG9hZFN0YXRlT2Jz
ZXJ2ZXI7CiAjaWYgUExBVEZPUk0oV1BFKQogc3RhdGljIHVuc2lnbmVkIGZyYW1lRGlzcGxheUNh
bGxiYWNrSUQ7CiBzdHJ1Y3QgRnJhbWVEaXNwbGF5ZWRDYWxsYmFjayB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEZyYW1lRGlzcGxheWVkQ2FsbGJhY2soV2ViS2l0
RnJhbWVEaXNwbGF5ZWRDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEgPSBudWxs
cHRyLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5RnVuY3Rpb24gPSBudWxscHRyKQogICAg
ICAgICA6IGlkKCsrZnJhbWVEaXNwbGF5Q2FsbGJhY2tJRCkKICAgICAgICAgLCBjYWxsYmFjayhj
YWxsYmFjaykKQEAgLTIyNyw2ICsyMjgsNyBAQCBzdHJ1Y3QgRnJhbWVEaXNwbGF5ZWRDYWxsYmFj
ayB7CiAjZW5kaWYgLy8gUExBVEZPUk0oV1BFKQogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2
YXRlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgfl9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZSgpCiAgICAgewogICAgICAgICAvLyBGb3IgbW9kYWwgZGlhbG9ncywgbWFr
ZSBzdXJlIHRoZSBtYWluIGxvb3AgaXMgc3RvcHBlZCB3aGVuIGZpbmFsaXppbmcgdGhlIHdlYlZp
ZXcuCkBAIC0zMjYsNiArMzI4LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9D
aGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIGNsYXNzIFBhZ2VMb2FkU3RhdGVP
YnNlcnZlciBmaW5hbCA6IHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUGFnZUxvYWRTdGF0ZU9ic2VydmVy
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBA
IC0zOTksNiArNDAyLDcgQEAgY2xhc3MgUGFnZUxvYWRTdGF0ZU9ic2VydmVyIGZpbmFsIDogcHVi
bGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKIAogI2lmIFBMQVRGT1JNKFdQRSkKIGNsYXNz
IFdlYlZpZXdDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpWaWV3Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJWaWV3Q2xpZW50
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBA
IC03MjUsNyArNzI5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdP
YmplY3QqIG9iamVjdCkKIAogICAgIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmll
dyhwcml2LT5jb250ZXh0LmdldCgpLCB3ZWJWaWV3LCBwcml2LT51c2VyQ29udGVudE1hbmFnZXIu
Z2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3KTsKIAotICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKKyAgICBwcml2
LT5sb2FkT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmll
dyk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKnBy
aXYtPmxvYWRPYnNlcnZlcik7CiAKICAgICAvLyBUaGUgcmVsYXRlZCB2aWV3IGlzIG9ubHkgdmFs
aWQgZHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24uCkBAIC03NDEsNyArNzQ1LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oV1BFKQotICAgIHByaXYtPnZpZXctPnNldENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFdlYlZpZXdDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICBwcml2LT52aWV3LT5zZXRDbGllbnQo
bWFrZVVuaXF1ZTxXZWJWaWV3Q2xpZW50Pih3ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIC8vIFRo
aXMgbmVlZHMgdG8gYmUgYWZ0ZXIgYXR0YWNoVUlDbGllbnRUb1ZpZXcoKSBiZWNhdXNlIFdlYlBh
Z2VQcm94eTo6c2V0VUlDbGllbnQoKSBjYWxscyBzZXRDYW5SdW5Nb2RhbCgpIHdpdGggdHJ1ZS4K
QEAgLTM3MDEsNiArMzcwNSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19t
aW1lX3R5cGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhcioKIH0KIAogc3RydWN0
IFZpZXdTYXZlQXN5bmNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gd2ViRGF0YTsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKaW5kZXggZjA5ZDZjN2U5MjA2ODNhNzU2NjUyNzY5NjdlNzQ3Y2M2Y2VlYjQ4MS4u
MDZiM2I4MzYwNjVkOWY2NmEwNzk4YTIwOTU1MTNjYTg2OGIzMWM1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTY1LDcg
KzY1LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKEd0a1dpZGdldCogdmlld1dp
ZGdldCkKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1
ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVh
UHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmll
d0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFw
aGljcz4oKndlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3Zp
ZXdXaWRnZXQpKSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdO
ZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKaW5k
ZXggMzFlMDk3M2ZlMTAwM2M2ZWE2NTIzMDYxYTY3Yzk0OWQ1M2ViZDZiNy4uMmQxYzJjYjM2OGE5
OTMzMTY5NzQyNDZhMGVkNTk5YzI4ZGNhZTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcApAQCAtNTE5LDcgKzUx
OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0aW9ucyhX
ZWJLaXRFbW9qaUNob29zZXIqIGNob29zZXIsIEd0CiAgICAgICAgIGNob29zZXItPnByaXYtPnBv
cHVsYXRlU2VjdGlvbnNUaW1lciA9IG51bGxwdHI7CiAgICAgfTsKIAotICAgIGNob29zZXItPnBy
aXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tUaW1l
cj4oV1RGTW92ZShwb3B1bGF0ZVNlY3Rpb25zKSk7CisgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxh
dGVTZWN0aW9uc1RpbWVyID0gbWFrZVVuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVs
YXRlU2VjdGlvbnMpKTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIt
PnNldFByaW9yaXR5KEdfUFJJT1JJVFlfREVGQVVMVF9JRExFKTsKICAgICBjaG9vc2VyLT5wcml2
LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnNldE5hbWUoIltXZWJLaXRFbW9qaUNob29zZXJdIHBv
cHVsYXRlIHNlY3Rpb25zIHRpbWVyIik7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0
aW9uc1RpbWVyLT5zdGFydFJlcGVhdGluZyh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IDBmNjc0ODY0NTJjZDFmYTg3YTgyODYyZTdlNjA1
NzM0ZGZjMzU5NjguLjViYTYxMGU3ZDlhNDRkMDQ3MzgzODFlMjNkMDQwYmRhOTJjM2ZjOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
Y2xhc3MgU2NyaXB0TWVzc2FnZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBTY3JpcHRNZXNzYWdlQ2xpZW50KFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciYg
aW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKQogICAgICAgICA6IG1faW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyKGluc3BlY3RvclByb3RvY29sSGFuZGxlcikKQEAgLTEwNSwxMyArMTA2LDEzIEBAIHZv
aWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KFdlYktpdFVS
SVNjaGVtZVJlcXVlc3QqIHJlcXVlCiAgICAgYXV0byogdXNlckNvbnRlbnRNYW5hZ2VyID0gd2Vi
a2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KTsKICAgICBhdXRv
IHVzZXJDb250ZW50TWFuYWdlclJlc3VsdCA9IG1fdXNlckNvbnRlbnRNYW5hZ2Vycy5hZGQodXNl
ckNvbnRlbnRNYW5hZ2VyKTsKICAgICBpZiAodXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0LmlzTmV3
RW50cnkpIHsKLSAgICAgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6
OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImlu
c3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgICAg
IGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1
ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250
ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFn
ZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5hZGRV
c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAgICAgICAgIGdfb2JqZWN0
X3dlYWtfcmVmKEdfT0JKRUNUKHVzZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8
R1dlYWtOb3RpZnk+KHVzZXJDb250ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0K
IAogICAgIGF1dG8qIGNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVzdFVS
TC5ob3N0QW5kUG9ydCgpLCBbdGhpcywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51
dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0
KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwogICAg
IH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIAogICAgIEdTdHJpbmcqIGh0bWwgPSBnX3N0cmlu
Z19uZXcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkluc3BlY3Rvci5jcHAKaW5kZXggMGYwMTcxMWU3OTYxZThiMDBjNWU1NzRkMjg4NTBkMDVi
MjQxZjZlYy4uODBkMjBhYTc2MDNiYWRhYjkwMGZlNGJkMTU5MGFhZDM5YjMwZTJmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVj
dG9yLmNwcApAQCAtMjg0LDYgKzI4NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVj
dG9yX2NsYXNzX2luaXQoV2ViS2l0V2ViSW5zcGVjdG9yQ2xhc3MqIGZpbmRDbGFzcykKIH0KIAog
Y2xhc3MgV2ViS2l0SW5zcGVjdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkluc3BlY3RvclBy
b3h5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJLaXRJbnNwZWN0b3JDbGllbnQoV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0
b3IpCiAgICAgICAgIDogbV9pbnNwZWN0b3IoaW5zcGVjdG9yKQpAQCAtMzYwLDcgKzM2MSw3IEBA
IFdlYktpdFdlYkluc3BlY3Rvciogd2Via2l0V2ViSW5zcGVjdG9yQ3JlYXRlKFdlYkluc3BlY3Rv
clByb3h5KiB3ZWJJbnNwZWN0b3IpCiB7CiAgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0
b3IgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0lO
U1BFQ1RPUiwgTlVMTCkpOwogICAgIGluc3BlY3Rvci0+cHJpdi0+d2ViSW5zcGVjdG9yID0gd2Vi
SW5zcGVjdG9yOwotICAgIHdlYkluc3BlY3Rvci0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0SW5zcGVjdG9yQ2xpZW50PihpbnNwZWN0b3IpKTsKKyAgICB3ZWJJbnNwZWN0b3ItPnNl
dENsaWVudChtYWtlVW5pcXVlPFdlYktpdEluc3BlY3RvckNsaWVudD4oaW5zcGVjdG9yKSk7CiAg
ICAgcmV0dXJuIGluc3BlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCAxYjlkZDhkMWY0NjAyMTRm
NWE3NzI2NzJjMmZiNjUzNzBiNTIwYzVlLi44OGIzY2Y0M2JmZTY4ZWU5N2M3MzFiNzY0ZDQ0OTkw
YTdiZmM1YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTY2LDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIGd0a19kcmFn
X2Rlc3Rfc2V0X3RhcmdldF9saXN0KHZpZXdXaWRnZXQsIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmds
ZXRvbigpLnRhcmdldExpc3QoKSk7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShvYmplY3QpLT5wcml2OwotICAgIHByaXYtPnBhZ2VD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3V2lkZ2V0KTsKKyAg
ICBwcml2LT5wYWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlld1dpZGdl
dCk7CiAgICAgcHJpdi0+ZGlhbG9nID0gbnVsbHB0cjsKIH0KIApAQCAtMTIyMCw3ICsxMjIwLDcg
QEAgR2VzdHVyZUNvbnRyb2xsZXImIHdlYmtpdFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAoIXByaXYtPmdlc3R1cmVDb250
cm9sbGVyKQotICAgICAgICBwcml2LT5nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlx
dWU8R2VzdHVyZUNvbnRyb2xsZXI+KEdUS19XSURHRVQod2ViVmlld0Jhc2UpLCBzdGQ6Om1ha2Vf
dW5pcXVlPFRvdWNoR2VzdHVyZUNvbnRyb2xsZXI+KHdlYlZpZXdCYXNlKSk7CisgICAgICAgIHBy
aXYtPmdlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RL
X1dJREdFVCh3ZWJWaWV3QmFzZSksIG1ha2VVbmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4o
d2ViVmlld0Jhc2UpKTsKICAgICByZXR1cm4gKnByaXYtPmdlc3R1cmVDb250cm9sbGVyOwogfQog
CkBAIC0xNTAxLDcgKzE1MDEsNyBAQCBEcmFnQW5kRHJvcEhhbmRsZXImIHdlYmtpdFdlYlZpZXdC
YXNlRHJhZ0FuZERyb3BIYW5kbGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaQogewogICAgIFdl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlm
ICghcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyKQotICAgICAgICBwcml2LT5kcmFnQW5kRHJvcEhh
bmRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYWdBbmREcm9wSGFuZGxlcj4oKnByaXYtPnBhZ2VQ
cm94eSk7CisgICAgICAgIHByaXYtPmRyYWdBbmREcm9wSGFuZGxlciA9IG1ha2VVbmlxdWU8RHJh
Z0FuZERyb3BIYW5kbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKICAgICByZXR1cm4gKnByaXYtPmRy
YWdBbmREcm9wSGFuZGxlcjsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAt
MTcxMyw3ICsxNzEzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJv
Y2VzcyhXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UKICAgICBpZiAocHJpdi0+
dmlld0dlc3R1cmVDb250cm9sbGVyKQogICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xs
ZXItPmNvbm5lY3RUb1Byb2Nlc3MoKTsKICAgICBlbHNlIHsKLSAgICAgICAgcHJpdi0+dmlld0dl
c3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CisgICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29u
dHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpwcml2
LT5wYWdlUHJveHkpOwogICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXItPnNldFN3
aXBlR2VzdHVyZUVuYWJsZWQocHJpdi0+aXNCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlRW5h
YmxlZCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQppbmRleCAyY2FiMmUwNTM4NmQ0MmIzNzFmNDQwNmFiNzFhN2Y2NTkzMGY3ZDc3Li4xNDYwM2Q1
YWZlYmFmNmRlZTAxMTk3OTU3NzAzODgzNDlkNGU3YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtODk1LDYgKzg5NSw3IEBAIC0gKHZvaWQpbWF5YmVJ
bnN0YWxsSWNvbkxvYWRpbmdDbGllbnQKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNv
bkxvYWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KFdLVmlldyAqd2tWaWV3
KQogICAgICAgICAgICAgOiBtX3drVmlldyh3a1ZpZXcpCkBAIC05MzIsNyArOTMzLDcgQEAgLSAo
dm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpJY29u
TG9hZGluZ0NsaWVudDo6ZGVsZWdhdGVTZWxlY3RvcigpXSkKLSAgICAgICAgX2RhdGEtPl9pbXBs
LT5wYWdlKCkuc2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGlu
Z0NsaWVudD4oc2VsZikpOworICAgICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9h
ZGluZ0NsaWVudChtYWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CiB9CiAKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24KQEAgLTk0NCw3ICs5NDUsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sJgogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsK
IAogICAgIF9kYXRhID0gW1tXS1ZpZXdEYXRhIGFsbG9jXSBpbml0XTsKLSAgICBfZGF0YS0+X2lt
cGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIG51bGxwdHIs
IHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICBfZGF0YS0+X2ltcGwg
PSBtYWtlVW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIG51bGxwdHIsIHByb2Nlc3NQ
b29sLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIAogICAgIFtzZWxmIG1heWJlSW5zdGFsbElj
b25Mb2FkaW5nQ2xpZW50XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9BUElWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L0FQSVZpZXdDbGllbnQuaAppbmRleCAyMTk5MWY4ZGFmMzFiNDFiMTU2NWZmZjk4NjVkZTk5Mzhm
YjhhMGRmLi42NGNhMmZjYjVhODUxMjdmNWI0MTQ3MWVjZTZlYThmNDQ2Y2UwNTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaApAQCAtMzgs
NiArMzgsNyBAQCBjbGFzcyBWaWV3OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFZpZXdDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
flZpZXdDbGllbnQoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggODUxMjlhNTQ4N2M5ZmZiZWQ1NjY0
NmNjMTBkZDE4ODNjOTg3NTZkMy4uZTIwOGE1YzU1ZDc1ODg1NzNkZmY0MzYwMzM3N2VmOGQxNjM1
ODVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xp
ZW50SW1wbC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhZ2VD
bGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChXS1dQRTo6VmlldyYgdmlldykKICAgICA6IG1fdmll
dyh2aWV3KQotICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVl
PFNjcm9sbEdlc3R1cmVDb250cm9sbGVyPigpKQorICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJv
bGxlcihtYWtlVW5pcXVlPFNjcm9sbEdlc3R1cmVDb250cm9sbGVyPigpKQogewogfQogCkBAIC02
Myw3ICs2Myw3IEBAIElQQzo6QXR0YWNobWVudCBQYWdlQ2xpZW50SW1wbDo6aG9zdEZpbGVEZXNj
cmlwdG9yKCkKIAogc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJ
bXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcz4obV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nl
c3MpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0
IFdlYkNvcmU6OlJlZ2lvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggOWM5ZjZlOWUzYjE4YjQy
ZjUzZjcyZjhlYjU1YTRlNjc1NWRiNDdhMi4uM2Y2MzI1MTIxZDgyOGUzNThhZDE1Yjc2YzRkNWNk
YzQ4Mzc1ZGMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9T
Y3JvbGxHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFNjcm9sbEdlc3R1cmVDb250cm9sbGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JvbGxHZXN0dXJlQ29udHJvbGxl
cigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmll
dy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkxMDlhYTI4NTViOGJiNDE1NzE3MDQ0Zi4uMTJl
MzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQwMzBjZTA0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC00Miw4ICs0Miw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tXUEUgewogCiBWaWV3OjpWaWV3KHN0cnVjdCB3
cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBi
YXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpW
aWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNs
aWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpWaWV3Q2xp
ZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0
aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAwIH0KICAgICAsIG1fdmlld1N0YXRlRmxhZ3Mg
eyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgfQogICAgICwgbV9iYWNrZW5kKGJhY2tl
bmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6flZpZXcoKQogdm9pZCBWaWV3OjpzZXRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0NsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYg
KCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlZpZXdD
bGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+
KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcAppbmRl
eCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1YjEzNTYxY2IzNjZjLi5iNGYyN2I2ZDM0ZTI0
MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBX
UEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktp
dExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChzdGF0dXNTZXQpIHsKICAgICAgICAgV1BFUXRW
aWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1ZXN0UHJpdmF0ZSh2aWV3LT51cmwoKSwgbG9h
ZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVl
c3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4o
bG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xv
YWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+
KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdl
ZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQg
V1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktp
dExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9hZFN0YXR1cyA9IFdQRVF0Vmlldzo6TG9hZFN0
YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAgIFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0
ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3RyaW5nKGZhaWxpbmdVUkkpKSwgbG9hZFN0YXR1
cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVx
dWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0
Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2Fk
UmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihs
b2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2Fk
UmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBqc0Fz
eW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBn
cG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3OjpydW5KYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcm
IHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxiYWNrKQogewotICAgIHN0ZDo6dW5pcXVlX3B0
cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKYXZhc2Ny
aXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BFUXRWaWV3Pih0aGlzKSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+IGRhdGEgPSBtYWtlVW5p
cXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNrLCBRUG9pbnRlcjxXUEVRdFZpZXc+
KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJWaWV3Lmdl
dCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRhKCksIG51bGxwdHIsIGpzQXN5bmNSZWFkeUNh
bGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCmluZGV4IGE4NTI2Y2Vk
MDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQxZjkuLjEzZmQzN2FlZmYyYjY1MzVkNTRmMzE0
YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4gV1BFUXRWaWV3QmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICghZWdsQ29udGV4dCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdCYWNrZW5k
PihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250
ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BFUXRWaWV3QmFja2VuZDo6V1BFUXRWaWV3QmFj
a2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBl
Z2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29udGV4dD4gY29udGV4dCwgUVBvaW50ZXI8V1BF
UXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9u
U3RhdGVUcmFja2VyLmgKaW5kZXggNDIwOGU4ZjIyZTBhYTRlZGQ4NWI1MjI1OTA0YzJkYzQ5OWIw
NWU5Ni4uOTQ5MzdiMDAxOTQ2MjUzNjJmNjQ0Y2E3NzA1MDhkMGRhYTY3NDMxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCkBAIC0z
OCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgVUlWaWV3OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEFwcGxp
Y2F0aW9uU3RhdGVUcmFja2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoVUlWaWV3ICosIFNFTCBkaWRFbnRlckJh
Y2tncm91bmRTZWxlY3RvciwgU0VMIGRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdC
YWNrZ3JvdW5kU2VsZWN0b3IsIFNFTCB3aWxsRW50ZXJGb3JlZ3JvdW5kU2VsZWN0b3IpOwogICAg
IH5BcHBsaWNhdGlvblN0YXRlVHJhY2tlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBl
MzM1NDNiN2JkYTFkNTkzZjMwNDUzYWU0ZDY5YmYyNWRlNzQwY2JlLi5hYjlkNDg0M2ZmNzUwMzg5
MjE3MzRhY2UzNDQxZjFkMTU3NTgwNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzMs
MTEgKzczLDExIEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQg
PSAzMDBfczsKIHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQ
YWdlTG9hZFN0cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwogCiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAgIDogbV9jbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQorICAgIDogbV9jbGll
bnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQogICAgICwgbV9m
cm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5
UmVmKCkpKQogICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9kb21haW5O
b3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1f
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmllcihtYWtlVW5pcXVlPEF1dG9t
YXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9sb2Fk
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21hdGlvblNlc3Npb246OmxvYWRU
aW1lckZpcmVkKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDZiMDli
YWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3ZTg3YzUxZGM0YWU5
ZDYzOWIxZDRmMzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9w
dGlvblNldDwKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VF
eHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5j
b2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdl
LmFyZ3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIp
LCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAxMGE4ZTQyNDEzYjI5YWZmYjYzNzdk
ODRhMDliZTUxMWJkMjUxZDVjLi5kZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFhNDAxNTdjOTRmMmZh
OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9t
YXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChpZCA8X1dLQXV0b21h
dGlvblNlc3Npb25EZWxlZ2F0ZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3MjM5NzMyMDVjYzZk
ZjRjYzY2YTY3OTA2YzAyOWIwZC4uMDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlkZjQyYzIzYzE0ZDYw
NWFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRp
bmdEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2Fk
aW5nRGVsZWdhdGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3ICopOwog
ICAgIH5JY29uTG9hZGluZ0RlbGVnYXRlKCk7CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNzIEljb25M
b2FkaW5nRGVsZWdhdGUgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50
IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xp
ZW50KEljb25Mb2FkaW5nRGVsZWdhdGUmKTsKICAgICAgICAgfkljb25Mb2FkaW5nQ2xpZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0Rl
bGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5tbQppbmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIyYmViNWJjYmQ3YzBkNzRjZmI0Li4x
NjNmYjk1MmVlMGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2OGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KQEAgLTQ0
LDcgKzQ0LDcgQEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fkljb25Mb2FkaW5nRGVsZWdhdGUoKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4gSWNvbkxvYWRpbmdEZWxl
Z2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
SWNvbkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tJY29uTG9h
ZGluZ0RlbGVnYXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmRlbGVnYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGE1MWEyMjM2MjM4NDE1
MWFiMTFkNDg5NDM2OWY4YTE4NTgwMDY3ZGEuLmY1MTM3ZjljYzczMTYzODhlNjFkZTEwNzczZmYz
NDI4NTYyNTA1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQpAQCAtNzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6On5VSURlbGVnYXRlKCkKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xp
ZW50PiBVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVudCgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOwogfQogI2VuZGlmCiAKIHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPFdLVUlE
ZWxlZ2F0ZT4gPiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDQ4YzJiMmI0ZTA2MTA2OTI3MmFlYjhiOTRhMjM0ZWFhOTI2YWY3NmQuLjkxY2Y5
NDgwYzc1MThjZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNv
dXJjZVByb3h5IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyLCBwdWJsaWMg
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgU291cmNlUHJveHkodWludDY0X3QgaWQsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNl
KQogICAgICAgICA6IG1faWQoaWQpCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRo
Q29uc3RyYWkKICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsKICAgICAgICAgc2V0
dGluZ3MgPSBzb3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNv
bnRhaW5zKGlkKSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8
U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2Up
KSk7CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlk
LCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgfSBlbHNl
CiAgICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5lcnJv
ck1lc3NhZ2UpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwgaW52YWxpZENvbnN0
cmFpbnRzLCBXVEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXgg
OWNhNmZhMzUzNDk2MDE4MDNkZjVkM2QxYjJhYmEzMTY1NTc0MGMzOS4uOWJkZGI5OTA5ZGY3ZThm
ZWYxZTU0ODA2Y2JlNmJjNWM0MGNmYzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAt
MzksNiArMzksNyBAQCBjbGFzcyBTaGFyZWRNZW1vcnk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7
CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQcm94eSYp
OwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzMDcw
ZDU3NDQzZmRmNzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQyZmEyYTA4NjA0MTdj
NmNmODBkN2JjZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIGlmICghW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFN1cHByZXNz
TWVtb3J5UHJlc3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhh
bmRsZXIoKTsKIAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisgICAg
c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5
TGluayhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9ic2UKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlMaW5rID0gc3Rk
OjptYWtlX3VuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKKyAgICBhdXRvIGRpc3BsYXlM
aW5rID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKICAgICBkaXNwbGF5TGlu
ay0+YWRkT2JzZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAgbV9kaXNwbGF5TGlu
a3MuYXBwZW5kKFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggNWMyMWNh
NzVhMTgyOWM1MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3YjQ2MDU0OGNlMGY4
NmQ3YTVkMTE3YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhh
bmRsZXIgPSBbYWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1Vu
ZXhwZWN0ZWRseVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tncm91bmQgYWN0aXZpdHkgdGlt
ZWQgb3V0Iiwgd2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAgbV91bmV4cGVjdGVkQWN0aXZp
dHlUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1l
cj4oV1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRB
Y3Rpdml0eUR1cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRB
Y3Rpdml0eVRpbWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOwogICAg
IGNvbXBsZXRpb24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQppbmRleCBjYWIwNTUwOWZiNmQwMmJiNDNlODhkOGQ2NTQ4OWZmYjcy
MmZlODAyLi44ZGY0ZGE3YjMyMDgwOTQ2ZGY3MWM5MjgyMTY1M2Y2ZWE5NDA3NTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTMxNSw3ICsx
MzE1LDcgQEAgc3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0cmFja2luZ0FyZWFPcHRpb25z
KCkKIAogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0
ZT4gKnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAg
OiBtX3ZpZXcodmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VD
bGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VV
bmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCiAgICAgLCBtX3BhZ2Uo
cHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKSkKICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKG1fcGFn
ZS0+cHJlZmVyZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAgICwgbV9pbnRyaW5zaWNDb250
ZW50U2l6ZShDR1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0cmljLCBOU1ZpZXdOb0ludHJp
bnNpY01ldHJpYykpCkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0lt
cGwoTlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldl
YgogICAgIHZpZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQ
bGFjZW1lbnRUb3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fcGFn
ZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVl
bkNsaWVudD4odmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5p
cXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwogI2VuZGlmCiAKICAgICBXZWJQ
cm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0xNzExLDkgKzE3MTEs
OSBAQCBDR1NpemUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1wbDo6Y3JlYXRlRHJh
d2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgaWYgKFtbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXQy
VXNlUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFsdWVdKQotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3Bh
Z2UsIHByb2Nlc3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9j
ZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc1VzaW5n
VUlTaWRlQ29tcG9zaXRpbmcoKSBjb25zdApAQCAtMzM1Niw3ICszMzU2LDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGV4
dEluZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yLCBXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAgICAgaWYgKCFtX3Rl
eHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9y
ZWxlYXNlZCgpKTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOwog
CiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW1ttX3Zp
ZXcgd2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcgY29udmVydFJlY3Q6dGV4dElu
ZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5p
bF1dOwogICAgIG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5k
aWNhdG9yLCBOU1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRl
cyksIGxpZmV0aW1lKTsKQEAgLTQzNTgsNyArNDM1OCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNh
dmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVt
KQogVmlld0dlc3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRy
b2xsZXIoKQogewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgbV9nZXN0
dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPiht
X3BhZ2UpOworICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICptX2dlc3R1cmVDb250cm9sbGVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5ZTU4Y2NkYTEwZjNl
YTQ0NGMyNzYuLjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2NWQyODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXAKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNr
aW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3
U2l6ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAg
ICAgICBtX2JhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZv
LnZpZXdTaXplLCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7
CiAKICAgICBtX2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAK
QEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuYwogICAgIH0KIAogICAg
IGlmICghbV9kcmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdN
b25pdG9yPihtX3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBtYWtl
VW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRv
cj4obV93ZWJQYWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0b3ItPnN0YXJ0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJkMDM4NmFjZjVkOGFkNTM1Yzc5
MTJhODg2Y2JkMGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2NjVlZTFiNzg2OTZh
NmE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNh
bHRTdG9yYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9y
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGFzaFNhbHRGb3JP
cmlnaW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEu
dmFsdWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgIGF1dG8gaGFzaFNhbHRG
b3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5
T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFs
dWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgaGFzaFNhbHRGb3JPcmln
aW4tPmxhc3RUaW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0VGltZVVzZWQp
OwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29t
cGxldGVEZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKIAogICAgICAg
ICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgICAg
ICBhdXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZv
ck9yaWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwg
V1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JP
cmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3Jp
Z2luKSwgV1RGTW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsK
IAogICAgICAgICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47CiAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5OWE1MDM0NGYzMTI1
MWY1ZTk2ODQuLmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1Y2E3YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eU1hcC5jcHAKQEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5
TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbAogCiAg
ICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hvdWxkVGFrZUFzc2VydGlvbikg
ewogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93
bmxvYWRVSUFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6
OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBt
YWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktp
dCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAog
ICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uKTsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdB
c3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRl
OjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3Nl
cnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IlVJUHJvY2VzcyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb25zIGZvciBVSVByb2Nl
c3MgYW5kIE5ldHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDNkZWY1ZDc5ZjA3Y2I5MTQwYjgyNTYyZGI5ZjZmMmJj
NmQwZjcyZjYuLjU2MDZjNTExNjUzNGY0M2NmYzgwNmQ1MTFkNDFlZDk4Y2ZiMjUxNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTUyLDYgKzUyLDcg
QEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBE
cmF3aW5nQXJlYVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcm90ZWN0ZWQg
SVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEcmF3aW5nQXJlYVByb3h5KTsKIAogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNw
cAppbmRleCBlY2FhYzMwMWI0YmRmNDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRmNjQwLi5mNGI3YmVh
NjU4NTA5OTFlOTQ5NGE2MjIzZDU0Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTEsNyAr
OTEsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBh
ZHMoY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZAogICAgIGZvciAoYXV0byogZ2FtZXBhZCA6
IGluaXRpYWxHYW1lcGFkcykgewogICAgICAgICBpZiAoIWdhbWVwYWQpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VUlHYW1lcGFkPigqZ2FtZXBhZCk7CisgICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBh
ZC0+aW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgcG9vbCA6IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcykKQEAgLTEw
Niw3ICsxMDYsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25u
ZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkKQogICAgICAgICBtX2dhbWVwYWRzLmdyb3co
Z2FtZXBhZC5pbmRleCgpICsgMSk7CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5p
bmRleCgpXSk7Ci0gICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3Vu
aXF1ZTxVSUdhbWVwYWQ+KGdhbWVwYWQpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgp
XSA9IG1ha2VVbmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKIAogICAgIHNjaGVkdWxlR2FtZXBh
ZFN0YXRlU3luYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdo
UGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAppbmRleCA3ZDU2YjBhMjQ2
M2RlZGYxNjY5NThjMjhmZmI3NWFhMGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVlZTJlZmExYmQwNWEy
YTc1NjExMWExNWQ5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdo
UGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKQEAgLTMyLDYgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3Mg
SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNz
VXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk0ZmFm
NmI5ZGUyNjIwMWQ4NGQyNmZmODM5MzNmODIyOWMwNWQ2YjkuLjI3N2NhMDQ0ZTQwN2IwN2JjNGFm
NThmMjIyMTdjYjZiNjg0MjhhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29s
IGJhY2tncm91bmQpCiBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVE
b3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewog
ICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9k
b3dubG9hZFByb3h5TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CiAK
ICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJv
Y2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBXZQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2Fk
QXNzZXJ0aW9uKCkKIHsKICAgICBBU1NFUlQoIW1fdXBsb2FkQXNzZXJ0aW9uKTsKLSAgICBtX3Vw
bG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vz
c0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3Vu
ZGVkTmV0d29ya2luZyk7CisgICAgbV91cGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmNsZWFyVXBsb2FkQXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNDMzNTQ1YzBl
MzNmYWFlZWQ5ZGViYjM0ZjZiMjBjZmNhZTVlOTVjOC4uNTk1YjNlZTQxNWNkZjcwNDYwOWM1MzZj
OTBhYmEyNTk3MTdkNDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxO
ZXR3b3JrUHJvY2Vzc1Byb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKICAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJhYWZm
MWVjMmE2NTQ5MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIuLjQ3YTNlOWIyM2JhMTI2NTE5OGI2
MGVkZGY2YzRkZDk4NmZjZDIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5jcHAKQEAgLTU2LDE0ICs1NiwxNCBAQCBSZWY8V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUAogCiBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShX
ZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChw
cm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlm
aWNhdGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90
aWZpY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92
aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVyKSB7Ci0gICAgICAgIG1fcHJv
dmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7Cisg
ICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCBlYzY0YmM5ZTE2MmNiN2NhMWU3NTM3ZTkzMzFkNGYxMzk1ODdlYzQxLi42Y2Y1
ZTE0ZWE1NjlmMjNkYTg0NzU0MDk2Y2E1MTE0NTNjMjk4YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgdXNpbmcgTGF5ZXJIb3N0aW5nQ29u
dGV4dElEID0gdWludDMyX3Q7CiAjZW5kaWYKIAogY2xhc3MgUGFnZUNsaWVudCA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxQYWdlQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
LmgKaW5kZXggMDFhN2RhN2I4OTFhOTAwNjZjOTBlODQyOWM2NTZiZDcwMGIxNjZiZC4uZWE0Mzky
N2Q0OGQ3NTJiZWI2NzI4MDk0OTljOWFkMGJmZTA3YmM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaApA
QCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKIAogY2xhc3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogICAgIH5QZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggZjZm
NDc5YjFlMDM5MmYzMjIxNjBhNjQ5NGFlYzYyZTBhMDY3OTZkZC4uODQzNjlkMzM0NDA3Y2ZiYzJl
ODNhYTgyN2M1Y2MwZTVkYjkxMjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApA
QCAtNjMsNyArNjMsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFs
aXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYQogI2lmIFBMQVRGT1JNKEdU
SykKIHN0YXRpYyBib29sIHBsdWdpblJlcXVpcmVzR3RrMihjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gc3RkOjptYWtlX3Vu
aXF1ZTxNb2R1bGU+KHBsdWdpblBhdGgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1v
ZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKICAgICBpZiAoIW1vZHVsZS0+
bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1vZHVsZS0+ZnVuY3Rp
b25Qb2ludGVyPGdwb2ludGVyPigiZ3RrX29iamVjdF9nZXRfdHlwZSIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAwMGE5OTE4ODYxNDg3Mzkz
OGE2Y2I0YWJkOTkxNGJjODYyOTQ1Y2Y3Li40Y2UyNjJlOWRjYmI0YjFiMGZmMGFkNWRiOTdlYjk3
ZjM2MDczNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVy
LmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVj
dFRvUHJvY2VzcyhQcm9jZXNzSUQgcGlkKQogCiAgICAgbV9zdXNwZW5kVGltZXIuc3RvcCgpOwog
ICAgIGlmIChtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCi0gICAgICAgIG1fYXNz
ZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldl
YiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fz
c2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29u
dGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJX
ZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9h
c3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50
IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwogICAgIG1fcHJvY2Vzcy5kaWRTZXRB
c3NlcnRpb25TdGF0ZShhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX2Fzc2VydGlvbi0+c2V0Q2xp
ZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkubW0KaW5kZXggNjBmMDJjNjEwZmNkOTg4MzA2MzljNTdiM2U5ZDYxZmYxZmQ1MjVmZC4u
Mjc0YWJkMzAyOWMwMDc3MzM5ZGZlMzc0OGZmMzA2OTdjOWI0OGI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEwNyw3ICsxMDcsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcm94eSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIDogRHJhd2luZ0FyZWFQcm94
eShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBhZ2VQcm94eSwgcHJvY2VzcykK
LSAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
VHJlZUhvc3Q+KCp0aGlzKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChtYWtlVW5pcXVl
PFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKIHsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJIHByb2Nlc3MuCkBA
IC0zNzYsNyArMzc2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp1
cGRhdGVEZWJ1Z0luZGljYXRvcihJbnRTaXplIGNvbnRlbnRzU2l6ZSwKIAogdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKQogewot
ICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVMYXllclRyZWVIb3N0PigqdGhpcyk7CisgICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhv
c3QgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKICAgICBtX2RlYnVn
SW5kaWNhdG9yTGF5ZXJUcmVlSG9zdC0+c2V0SXNEZWJ1Z0xheWVyVHJlZUhvc3QodHJ1ZSk7CiAK
ICAgICBtX3RpbGVNYXBIb3N0TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCAzMDAyNWQ0Mjk5ZjNiY2EwNDg1ZDMw
NGQ4MzM1ODE3NjEwYmE1MGJkLi44YTRlNTA0ODE3ZWJjMTI1Y2U4OThjMWMyOTFkOWE2ZTRkNWY1
ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyQ3JlCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9k
ZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIGF1
dG8gbWFrZVdpdGhMYXllciA9IFsmXSAoUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyKSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRp
ZXMubGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsK
ICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENBTGF5ZXIqIGxheWVy
KSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0TlMobGF5ZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVOb2RlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZU5vZGUubW0KaW5kZXggZTg4YmJjNjA4ZDRmYjA1ODM4NGQyOWIyNjk4MTU5
MmVkYTgxNGViYS4uNGZkNGVhMjY5ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBkODQyNDA2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KQEAgLTczLDcgKzczLDcgQEAgUmVtb3RlTGF5ZXJU
cmVlTm9kZTo6flJlbW90ZUxheWVyVHJlZU5vZGUoKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxh
eWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKQogewogICAgIFJl
dGFpblB0cjxDQUxheWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1BsYWluUmVtb3RlTGF5ZXIgYWxs
b2NdIGluaXRdKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVO
b2RlPihsYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVt
b3RlTGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwogfQogCiB2b2lkIFJl
bW90ZUxheWVyVHJlZU5vZGU6OmRldGFjaEZyb21QYXJlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCmluZGV4IGMyNzgx
ZGM4YWRhMzQzMzlmNzllZDg1YTdlM2U5ZmY3NjUyMjI1MjguLjI5ZGZlZmU2Y2I3MmMxMjBhNjFj
YzIyZDBkM2JhNjRhNmQ5NDQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OwogCiBj
bGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Jik7CiAgICAg
flJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5kZXggODZkMGRlZmM2OTY1ZTRm
YTZiYTExNjQ3NjFiYzlhYzcxOThjNzJlNi4uMWE3Njk0M2YyNDViZTFjZDgyMmYxOTYxM2NkZDM1
ZjU0MGE5NGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGluZ1RyZWU7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXggNjI5YTljNjUwZDQzYzBkNTYx
YzgxOTMzYmEwZDE0ZThkMzNlYTQ0NC4uMGMxMjZhZTZhZjc1ZTQxMzhhZmQwMDg2ODM5NTY2Mjlm
ZjcwMDIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAt
NjEsNyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4gY3JlYXRlUmVtb3RlVmlldyhw
aWRfdCBwaWQsIHVpbnQzMl90IGNvbnRleHRJRCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXll
clRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7
CiAgICAgYXV0byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0cjxVSVZpZXc+IHZpZXcpIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJv
cGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcp
KTsKICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9IFsmXSAoVUlWaWV3KiB2aWV3
KSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVJT1MubW0KaW5kZXggODFhMmViOWE2MzVkNTk4NDE2MDBmNzgzNTIwNGFjODRiZDZkNWMy
OC4uYjg5MDY4MWU5ZTdhNTEzYmEzNDM2N2NlZjM5ODliZTNiMTlkOWNiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZUlPUy5tbQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgUwogCiAg
ICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAgICAgaWYgKHNjcm9sbENvbnRh
aW5lckxheWVyKCkpCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMp
OworICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUy5tbQppbmRleCBiNTZlMmVhNjRkYTUyMDMxZGZhZjEyOGVjMjQ4Y2QxNWM3MTAwOTI2
Li5kMGJkZDNjNTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFhYjU3ZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
Lm1tCkBAIC00Myw3ICs0Myw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TCiAKIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgV2ViQ29y
ZTo6U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxpbmdOb2Rl
RGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShtYWtlVW5pcXVl
PFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MuaAppbmRleCA2NDg5YThlNzQ0MmQ3YjE3MDUyOTViNjJlZWI1YzAyNWM3YTliMzNh
Li5lNjM3ZDYxNTMyNWQzODBjZTkyZDA3YTJiMTIxOTEzZmYxODFkZDJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mu
aApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TIDogcHVibGljIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUmKTsKICAgICB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFj
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2
N2MwYjYxNjJlMDY3ODNjZjM3NmNmNjE5MDdlMi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3
OWM3NDUyOTQzNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNj
cm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdO
b2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0
cmVlLCBub2RlVHlwZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VV
bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1v
dGVNYWMuY3BwCmluZGV4IGQ4OTYwY2VjMzBlNDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMu
LmI2Y2EzY2JiYTgwODA3YWY3YjlmNjk5YmU5YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlUmVtb3RlTWFjLmNwcApAQCAtNDEsNyArNDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
TgogCiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUs
IFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlTWFjKHRyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpciht
YWtlVW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaAppbmRleCBmMjYxZjUy
NjgxNTJkMGZkZGI2ODU1MWE4NjAxNTJlNDE2N2QwYWVjLi4yYjkwZTFiODljMGFhNWVlZWFmMDU0
ZGU0MjhkZWVkNDBlNjNhOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
eXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5
c3RlbVByZXZpZXdDb250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlcihXZWJQYWdlUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmgKaW5kZXggZjUwNWUyODBjNDQyOTBhODAzZGJkYjY4Yzk4ZWVhNjMwYjFj
OWJiNi4uODY4YjU0ZTc5MmFmMmFiZDk4NmJjODY2MDA1Y2IxMmY0NTY4MjQyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5CiAgICAgLCBwcml2YXRlIExvZ2dlckhlbHBl
cgogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVBy
b3h5Jik7CiAgICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9IaWRTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvSGlkU2VydmljZS5tbQppbmRleCA5ZWFlMThlZGQ1ZjRkMmRjNWRmMzhlOTZkMDUw
NTA5M2JjYTliMzk4Li5hYmQwZTdlNzI5NDc5MTI4Y2I2YWZmZjdmMjE4MTI2M2U0ZGE5ODM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9IaWRTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KQEAgLTkyLDcgKzkyLDcgQEAgVW5pcXVlUmVmPEhp
ZENvbm5lY3Rpb24+IEhpZFNlcnZpY2U6OmNyZWF0ZUhpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VS
ZWYgZGV2aWNlKQogCiB2b2lkIEhpZFNlcnZpY2U6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVm
IGRldmljZSkKIHsKLSAgICBhdXRvIGRyaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3RhcEhpZERy
aXZlcj4oY3JlYXRlSGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKKyAgICBhdXRvIGRyaXZlciA9IG1h
a2VVbmlxdWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKICAg
ICAvLyBHZXQgYXV0aGVudGljYXRvciBpbmZvIGZyb20gdGhlIGRldmljZS4KICAgICBkcml2ZXIt
PnRyYW5zYWN0KGVuY29kZUVtcHR5QXV0aGVudGljYXRvclJlcXVlc3QoQ3RhcFJlcXVlc3RDb21t
YW5kOjprQXV0aGVudGljYXRvckdldEluZm8pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHB0ciA9IGRyaXZlci5nZXQoKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpIHsKICAg
ICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDg1Y2U2OTA2MTExNDQyYmM2Nzlj
YzdhNzc1Yjg2ODJkZDE1NzI4YzkuLmY4NTJiZWQyMTMwYjQ3YzJmN2RkMjk4YWQzNTZhZWFjODdj
MDI2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBh
Z2VQcm94eTsKIAogY2xhc3MgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgOiBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eSk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOTlkNmVhMzM0MTUzZWNmNDlkNDU4
NGM3NDNkYzY4MTY4ODQxNTUyMC4uODQ2YTVhYTI3ZGZhYjNkMjc0Y2ZmYTQ4NzM4NjFmMjU4N2Qx
N2ZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vz
c1BvbwogCiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBs
ZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpHZW9sb2NhdGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQ
STo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6
cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CkBAIC01NCw3
ICs1NCw3IEBAIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1BvCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblBy
b3ZpZGVyPiYmIHByb3ZpZGVyKQogewogICAgIGlmICghcHJvdmlkZXIpCi0gICAgICAgIG1fcHJv
dmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKKyAg
ICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigp
OwogICAgIGVsc2UKICAgICAgICAgbV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3Vz
TWFuYWdlci5jcHAKaW5kZXggMmNkY2QxNzY1Mjk5ZmU3NzY0OWJhYmY5ZGUzZTc0ZThiMGYwMGUz
Ny4uMzM2NGJjYmNjOTExODRhNmJhNzU0MWVmOTBiMGY5NjA0Y2RlNGRkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
Y3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6
OnVwZGF0ZVBsYXliYWNrQXR0cmlidXRlc0Zyb21NZWRpYVN0YXRlKFdlYlBhZ2UKIAogdm9pZCBX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFn
ZVByb3h5JiBwcm94eSwgdWludDY0X3QgZWxlbWVudElEKQogewotICAgIG1fZm9jdXNlZE1lZGlh
RWxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5LCBl
bGVtZW50SUQpOworICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9IG1ha2VVbmlxdWU8Rm9jdXNl
ZE1lZGlhRWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOwogfQogCiB2b2lkIFdlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlcjo6Y2xlYXJGb2N1c2VkTWVkaWFFbGVtZW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggOWViOWQyOGFkZGQ1YjVi
MDA2ZDUwYjA4YTNkNzRmYjY5ZDE2MjM5Mi4uMTZhNzU5YWM4YTFmZjMxNDYwNWIwOTQ2ZmZjNWFh
NjU4MThlMDc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdh
dGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0
YXRlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTsKIAogY2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJOYXZpZ2F0aW9u
U3RhdGUoKTsKICAgICB+V2ViTmF2aWdhdGlvblN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IDY1Mjk4
MmE4MTJhOWVmYmVmNTIxYTZhOTg5OWZhNGJlZTVmYWYzNGMuLjFiMjlmNzlkZGZhZWEwN2I5ZTcy
NDliZDc3MjM4NGVlYmY1MzBmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnRCYXNlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBj
b25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcm
LCBBUEk6Ok9iamVjdCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0
Pik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM0YjkyYzgzY2ZlYTI5YjMxZWRiYjM0YWE4NDAyNWJh
NWM4YjAzYjcuLmJkYTU5Y2Q4MDUxNTc2NDZiMzA4ZDJmZDIzNmYzZDExODI3MWUwYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6Oldl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAsIG1fZnJv
bnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJl
ZigpKSkKIHsKLSAgICBhdXRvIHRhcmdldEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0QWdlbnQ+KG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksIG1fYmFja2VuZERp
c3BhdGNoZXIuZ2V0KCkpOworICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPFdlYlBh
Z2VJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5k
RGlzcGF0Y2hlci5nZXQoKSk7CiAKICAgICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDMyNjMx
YzQ1MGViMjZkNzU0NTQ2OGI3MjZjMTVhNDQ5ODVjOTk4YTkuLmRhNWQxMmNhMjU0Y2Y1MTFiYzEy
MTc2YWEwZTI3MDJlZDU4OTdkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMzk3LDE1ICszOTcsMTUgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICAg
ICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZp
Z2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQogICAg
ICwgbV9oaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpIaXN0b3J5Q2xpZW50PigpKQot
ICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRp
bmdDbGllbnQ+KCkpCi0gICAgLCBtX2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZv
cm1DbGllbnQ+KCkpCi0gICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNs
aWVudD4oKSkKLSAgICAsIG1fZmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENs
aWVudD4oKSkKLSAgICAsIG1fZmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkZpbmRNYXRjaGVzQ2xpZW50PigpKQorICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChtYWtlVW5p
cXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCkpCisgICAgLCBtX2Zvcm1DbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCisgICAgLCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8QVBJ
OjpVSUNsaWVudD4oKSkKKyAgICAsIG1fZmluZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZENs
aWVudD4oKSkKKyAgICAsIG1fZmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZpbmRN
YXRjaGVzQ2xpZW50PigpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250
ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCkp
CisgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNs
aWVudD4oKSkKICNlbmRpZgotICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1
ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkpCisgICAgLCBtX25hdmlnYXRpb25TdGF0ZShtYWtlVW5p
cXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAg
ICwgbV9wYWdlR3JvdXAoKm1fY29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCkpCiAgICAgLCBtX3By
ZWZlcmVuY2VzKCptX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VzKCkpCkBAIC00MTYsNyArNDE2
LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZp
Z3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpKQorICAgICwgbV9mdWxsc2NyZWVuQ2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpKQogI2VuZGlmCiAgICAgLCBt
X2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCkBAIC00MzUsOSArNDM1LDkg
QEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICNlbmRpZgogICAgICwgbV9wYWdlTG9hZFN0YXRl
KCp0aGlzKQogICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhtX2NvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCisgICAg
LCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNw
ZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlz
KSkKKyAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFdlYlBhZ2VEZWJ1Z2dh
YmxlPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291
bnQpCiB7CkBAIC00NzcsNyArNDc3LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRklu
ZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3Rh
dGVDaGFuZ2UpLCBbdGhpc10geworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIg
PSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9v
cE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpBY3Rpdml0eVN0YXRlQ2hhbmdlKSwg
W3RoaXNdIHsKICAgICAgICAgdGhpcy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAg
ICAgfSk7CiAjZW5kaWYKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
UG9saWN5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4mJiBwb2xpY3lD
bAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
Rm9ybUNsaWVudD4mJiBmb3JtQ2xpZW50KQogewogICAgIGlmICghZm9ybUNsaWVudCkgewotICAg
ICAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsK
KyAgICAgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZv
cm1DbGllbnQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6VUlDbGllbnQ+JiYgdWlDbGllbnQpCiB7CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAg
ICAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAg
ICAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50
PiYKIHsKICAgICBib29sIGhhc0NsaWVudCA9IGljb25Mb2FkaW5nQ2xpZW50LmdldCgpOwogICAg
IGlmICghaWNvbkxvYWRpbmdDbGllbnQpCi0gICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CisgICAgICAgIG1faWNv
bkxvYWRpbmdDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CiAg
ICAgZWxzZQogICAgICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gV1RGTW92ZShpY29uTG9hZGlu
Z0NsaWVudCk7CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFn
ZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcgog
dm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rmlu
ZENsaWVudD4mJiBmaW5kQ2xpZW50KQogewogICAgIGlmICghZmluZENsaWVudCkgewotICAgICAg
ICBtX2ZpbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKKyAg
ICAgICAgbV9maW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBm
aW5kQ2xpZW50KQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PiYmIGZpbmRNYXRjaGVzQ2xpZW50KQog
ewogICAgIGlmICghZmluZE1hdGNoZXNDbGllbnQpIHsKLSAgICAgICAgbV9maW5kTWF0Y2hlc0Ns
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICAg
ICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVu
dD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpEaWFnbm9zdGljTG9nCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udGV4dE1lbnVDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVD
bGllbnQpCiB7CiAgICAgaWYgKCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRl
eHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50Pigp
OworICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRN
ZW51Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02OTEsNyArNjkxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudD4oKTsKKyAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1
ZTxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CiAgICAgbV9pbmplY3RlZEJ1bmRsZUNs
aWVudC0+aW5pdGlhbGl6ZShjbGllbnQpOwogfQogCkBAIC03NzYsNyArNzc2LDcgQEAgYm9vbCBX
ZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBPcHQKICAgICB9CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcg
Y3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7Ci0gICAgYXV0byBzdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNw
ZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQs
IHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSk7CisgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJv
eHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5
Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKICAgICBM
T0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3Vz
cGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIg
UFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5n
KCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+
aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKIApAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICAgICBBU1NFUlQoIW1fZnVsbFNjcmVlbk1hbmFnZXIpOwotICAgIG1fZnVs
bFNjcmVlbk1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk+KCp0aGlzLCBwYWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsK
KyAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gbWFrZVVuaXF1ZTxXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5PigqdGhpcywgcGFnZUNsaWVudCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQo
KSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIEFT
U0VSVCghbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKTsKQEAgLTg2MCwyMiArODYwLDIyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJM
RShBUFBMRV9QQVkpCiAgICAgQVNTRVJUKCFtX3BheW1lbnRDb29yZGluYXRvcik7Ci0gICAgbV9w
YXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5PigqdGhpcyk7CisgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKICAgICBBU1NFUlQoIW1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIpOwotICAg
IG1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IG1h
a2VVbmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKICAgICBBU1NFUlQoIW1fY3JlZGVudGlhbHNNZXNzZW5nZXIpOwot
ICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAgbV9jcmVkZW50aWFsc01lc3Nlbmdl
ciA9IG1ha2VVbmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsK
ICNlbmRpZgogCiAjaWYgSEFWRShQRU5DSUxLSVQpCiAgICAgQVNTRVJUKCFtX2VkaXRhYmxlSW1h
Z2VDb250cm9sbGVyKTsKLSAgICBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxFZGl0YWJsZUltYWdlQ29udHJvbGxlcj4oKnRoaXMpOworICAgIG1fZWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhp
cyk7CiAjZW5kaWYKIH0KIApAQCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXREcmF3aW5nQXJlYShzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5n
QXJlCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAobV9kcmF3aW5nQXJlYS0+dHlwZSgpID09IERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVy
VHJlZSkgewotICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAg
bV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgLy8gT24gaU9TLCBtYWluIGZyYW1lIHNjcm9sbHMgYXJlIHNlbnQgaW4gdGVybXMgb2Ygdmlz
aWJsZSByZWN0IHVwZGF0ZXMuCiAgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS0+
c2V0UHJvcGFnYXRlc01haW5GcmFtZVNjcm9sbHMoZmFsc2UpOwpAQCAtMTAwNiwxNyArMTAwNiwx
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVs
bHB0cjsKICAgICBtX25hdmlnYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdh
dGlvbkNsaWVudD4oKTsKICAgICBtX3BvbGljeUNsaWVudCA9IG51bGxwdHI7Ci0gICAgbV9pY29u
TG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4o
KTsKLSAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4o
KTsKLSAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwot
ICAgIG1fZmluZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwot
ICAgIG1fZmluZE1hdGNoZXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNo
ZXNDbGllbnQ+KCk7CisgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
Y29uTG9hZGluZ0NsaWVudD4oKTsKKyAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
Rm9ybUNsaWVudD4oKTsKKyAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50
PigpOworICAgIG1fZmluZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwor
ICAgIG1fZmluZE1hdGNoZXNDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGll
bnQ+KCk7CiAgICAgbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IG51bGxwdHI7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOworICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogI2VuZGlmCiAKICAgICBtX3By
b2Nlc3MtPnByb2Nlc3NQb29sKCkucmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlz
KTsKQEAgLTEyMjYsNyArMTIyNiw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSk7CiAKLSAg
ICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZp
Z2F0aW9uKHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3Io
KSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkpOworICAgIGF1dG8gbmF2
aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24obWFr
ZVVuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5j
b2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhKSk7CiAgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5j
b2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5v
LCBXVEY6Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVy
biBuYXZpZ2F0aW9uOwogfQpAQCAtMjQxNSw3ICsyNDE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKKyAgICBhdXRvIGNv
YWxlc2NlZFdoZWVsRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50
Pj4oKTsKICAgICBjb2FsZXNjZWRXaGVlbEV2ZW50LT5hcHBlbmQoZXZlbnQpOwogICAgIG1fY3Vy
cmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUoY29hbGVzY2VkV2hlZWxF
dmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KGV2ZW50KTsKQEAgLTI0MjMsNyArMjQyMyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVs
RXZlbnQmIGV2ZW50KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRXaGVl
bEV2ZW50KCkKIHsKLSAgICBhdXRvIG5leHRDb2FsZXNjZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1dG8gbmV4dENvYWxlc2Nl
ZEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CiAgICAg
V2ViV2hlZWxFdmVudCBuZXh0V2hlZWxFdmVudCA9IGNvYWxlc2NlZFdoZWVsRXZlbnQobV93aGVl
bEV2ZW50UXVldWUsICpuZXh0Q29hbGVzY2VkRXZlbnQuZ2V0KCkpOwogICAgIG1fY3VycmVudGx5
UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUobmV4dENvYWxlc2NlZEV2ZW50KSk7
CiAgICAgc2VuZFdoZWVsRXZlbnQobmV4dFdoZWVsRXZlbnQpOwpAQCAtMjk4NCw3ICsyOTg0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBu
dWxscHRyOwogICAgIH0KIAotICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIG5ld1Byb2Nlc3MuY29weVJlZigpLCBXVEZN
b3ZlKHN1c3BlbmRlZFBhZ2VQcm94eSksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmln
YXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVl
c3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCk7CisgICAgbV9wcm92aXNpb25hbFBh
Z2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5j
b3B5UmVmKCksIFdURk1vdmUoc3VzcGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0
aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlv
bi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKIAogICAg
IGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgTE9H
KExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
IHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsK
QEAgLTU3MDIsNyArNTcwMiw3IEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQ
cm94eTo6ZnVsbFNjcmVlbk1hbmFnZXIoKQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZ1bGxzY3Jl
ZW5DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4mJiBjbGllbnQp
CiB7CiAgICAgaWYgKCFjbGllbnQpIHsKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgICAgIG1fZnVsbHNj
cmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC03NDM2LDcgKzc0MzYsNyBAQCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdAogICAgIGlmIChtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKICAg
ICAgICAgcmV0dXJuICptX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAotICAg
IG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4oKnRoaXMpOworICAgIG1fdXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyID0gbWFrZVVuaXF1ZTxVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiB9CiAKQEAgLTgxNDIsNyArODE0Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5h
YmxlZCA9IGVuYWJsZWQ7CiAKICAgICBpZiAobV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0
aW9uRW5hYmxlZCAmJiAhbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEpCi0gICAgICAgIG1fc2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVT
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+KGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk+KCptX2RyYXdpbmdBcmVhKSk7CisgICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGE+KGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdB
cmVhKSk7CiAgICAgZWxzZSBpZiAoIW1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVu
YWJsZWQpCiAgICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbnVsbHB0cjsKIH0K
QEAgLTkxODksNyArOTE4OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFNwZWVjaFN5bnRo
ZXNpemVyKCkKIFdlYlBhZ2VQcm94eTo6U3BlZWNoU3ludGhlc2lzRGF0YSYgV2ViUGFnZVByb3h5
OjpzcGVlY2hTeW50aGVzaXNEYXRhKCkKIHsKICAgICBpZiAoIW1fc3BlZWNoU3ludGhlc2lzRGF0
YSkKLSAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICAgICAgbV9zcGVl
Y2hTeW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IG1ha2VVbmlxdWU8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIgfTsKICAgICByZXR1cm4gKm1fc3BlZWNoU3ludGhlc2lzRGF0YTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiNDM4M2NhZjg4ZjM3
MjcyY2Y5NDc3YjY0MDM5Y2U5ZWY1Yzk0OWExLi4xN2JmNWZhOWJlMTdlNjM4NWMyM2JiODc0NWEx
YjVkM2FjNzhjZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MzQ3LDggKzM0Nyw3IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90PiBUb3VjaGVzQ2FsCiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mPiBTZWxlY3Rpb25S
ZWN0c0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbiY+IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb25DYWxsYmFjazsKIHN0cnVj
dCBFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgorICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBGb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uIGluZm9ybWF0aW9uOwogICAgIGJvb2wgdXNlcklzSW50ZXJh
Y3Rpbmc7CiAgICAgYm9vbCBibHVyUHJldmlvdXNOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXggOGJkZjhjZjgzODhjZGM3YmZhY2ZmMmI3ZTYw
NWQwYTgxOGRhYWM2NC4uOTYyZjNiZWQyZDgyNTY5YTA3ZGQ0ZTljZGFiOGZjYzcyMTE5ZjdkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCkBAIC04NCw3
ICs4NCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZShSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gZ2VuZXJhdGVBZGRSZXF1ZXN0SWRlbnRpZmll
cigpOwotICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgc3Rk
OjptYWtlX3VuaXF1ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOworICAgIG1f
cGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuaXF1ZTxDYWNo
ZWRQcm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOwogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxlKCk6
IENoZWNraW5nIGlmIHByb2Nlc3MgJWkgaXMgcmVzcG9uc2l2ZSBiZWZvcmUgY2FjaGluZyBpdC4u
LiIsIHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIHByb2Nlc3MtPmlz
UmVzcG9uc2l2ZShbdGhpcywgcHJvY2Vzc1Bvb2wgPSBtYWtlUmVmKHByb2Nlc3MtPnByb2Nlc3NQ
b29sKCkpLCByZXF1ZXN0SWRlbnRpZmllcl0oYm9vbCBpc1Jlc3BvbnNpdmUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA1ZTg4MTlkNGM2MzlmZTQw
MDIyYjE3YWI2YmFjNWNiM2NlNzI5MjAxLi5mNWJjMGFjOGY0ZGM2YWMxMjRlZGJkMDZjMDRlZTM0
OTU2ZGRkMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC0yMzMsMTUgKzIzMywxNSBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdAogV2ViUHJvY2Vz
c1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24uY29weSgpKQog
ICAgICwgbV9kZWZhdWx0UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCi0gICAgLCBt
X2luamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZUNsaWVudD4oKSkKLSAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6QXV0b21hdGlvbkNsaWVudD4oKSkKLSAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQotICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKLSAgICAs
IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisgICAgLCBtX2luamVjdGVkQnVuZGxlQ2xpZW50
KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKKyAgICAsIG1fYXV0b21h
dGlvbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKKyAgICAsIG1f
ZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQorICAgICwg
bV9oaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dD4oKSkKKyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3Rv
cmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICwg
bV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPEhp
Z2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPigqdGhpcykpCi0gICAgLCBtX3BlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3VuaXF1ZTxQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykpCisgICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBo
aWNzVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNh
bXBsZXI+KCp0aGlzKSkKKyAgICAsIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlciht
YWtlVW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKICNlbmRp
ZgogICAgICwgbV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkobV9jb25maWd1cmF0aW9u
LT5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkoKSkKICAgICAsIG1fc2hvdWxkVGFrZVVJ
QmFja2dyb3VuZEFzc2VydGlvbihtX2NvbmZpZ3VyYXRpb24tPnNob3VsZFRha2VVSUJhY2tncm91
bmRBc3NlcnRpb24oKSkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpp
bml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIGNsaWVudCkKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkK
LSAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKKyAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBlbHNlCiAgICAg
ICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBAIC0zNzcs
NyArMzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGll
bnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEIKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3Rv
cnlDbGllbnQ+JiYgaGlzdG9yeUNsaWVudCkKIHsKICAgICBpZiAoIWhpc3RvcnlDbGllbnQpCi0g
ICAgICAgIG1faGlzdG9yeUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250
ZXh0SGlzdG9yeUNsaWVudD4oKTsKKyAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gbWFrZVVuaXF1
ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAg
bV9oaXN0b3J5Q2xpZW50ID0gV1RGTW92ZShoaXN0b3J5Q2xpZW50KTsKIH0KQEAgLTM4NSw3ICsz
ODUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Qwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0
RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgZG93
bmxvYWRDbGllbnQpCiB7CiAgICAgaWYgKCFkb3dubG9hZENsaWVudCkKLSAgICAgICAgbV9kb3du
bG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKTsKKyAg
ICAgICAgbV9kb3dubG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4o
KTsKICAgICBlbHNlCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEZNb3ZlKGRvd25sb2Fk
Q2xpZW50KTsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4mJiBkbwog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmIGF1dG9tYXRpb25DbGllbnQpCiB7CiAgICAgaWYgKCFh
dXRvbWF0aW9uQ2xpZW50KQotICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKKyAgICAgICAgbV9hdXRvbWF0aW9uQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCk7CiAgICAgZWxzZQogICAg
ICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQpA
QCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDCiB7CiAjaWYgRU5BQkxF
KExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICAgICBpZiAoIWN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudCkKLSAgICAgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpOworICAg
ICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2N1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KTsKICNlbmRpZgpAQCAtNDkyLDcgKzQ5Miw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAg
ICAgICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKICAgICB9CiAKLSAgICBhdXRvIG5ldHdv
cmtQcm9jZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5PigqdGhpcyk7
CisgICAgYXV0byBuZXR3b3JrUHJvY2VzcyA9IG1ha2VVbmlxdWU8TmV0d29ya1Byb2Nlc3NQcm94
eT4oKnRoaXMpOwogCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKIApAQCAtMjUwOCw3ICsyNTA4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29s
bGVjdFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWEKICAg
ICAgICAgbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUobV9w
cmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5yYW5kb20oKSk7CiAKICAgICBh
dXRvJiB2YWx1ZSA9IG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4uZW5z
dXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIAogICAgICp2YWx1ZSA9IHByZXdhcm1JbmZvcm1hdGlvbjsKQEAgLTI1NTUsMTIgKzI1
NTUsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoUHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT50YWtl
VXBsb2FkQXNzZXJ0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoIW1fdWlQcm9jZXNz
VXBsb2FkQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwg
IldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7
CisgICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNz
QXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogICAgIH0KICAgICAKICAgICBhdXRv
IHJlc3VsdCA9IG1fcHJvY2Vzc2VzV2l0aFVwbG9hZHMuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7
CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQ
cm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVw
bG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRp
ZmllciBwcm9jZXNzSUQpCkBAIC0yNTk3LDEyICsyNTk3LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnNldFdlYlByb2Nlc3NJc1BsYXlpbmdBdWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVGhlIG51bWJl
ciBvZiBwcm9jZXNzZXMgcGxheWluZyBhdWRpYmxlIG1lZGlhIGlzIG5vdyBvbmUuIFRha2luZyBV
SSBwcm9jZXNzIGFzc2VydGlvbi4iKTsKIAogICAgICAgICBBU1NFUlQoIW1fdWlQcm9jZXNzTWVk
aWFQbGF5YmFja0Fzc2VydGlvbik7Ci0gICAgICAgIG1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fz
c2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFBy
b2Nlc3NJRCgpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9y
ZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICAgICAgbV91aVBy
b2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9u
PihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2Vy
dGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOwog
ICAgIH0KIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNQbGF5aW5nQXVkaWJsZU1lZGlh
LmFkZChwcm9jZXNzSUQsIG51bGxwdHIpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7
Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fz
c2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBNZWRpYSBQbGF5
YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVk
aWFQbGF5YmFjayk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJv
Y2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBNZWRp
YSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNv
bjo6TWVkaWFQbGF5YmFjayk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJv
Y2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9j
ZXNzSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCBlMTY5MTM3ZjUzODlkMzBiYjhiMTFiM2E4ZTFmNTBjYTQzYWEwNmVkLi4xZTNjZGRlOGZiZTg4
ZTg1ZDgwMjk4Nzc5N2Y4MTJlZWM1MjViMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBXZWJQcm9jZXNzUHJveHk6
OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRh
U3RvcmUqCiAgICAgLCBtX3Zpc2libGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50
KSB7IHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCiAgICAgLCBtX3dl
YnNpdGVEYXRhU3RvcmUod2Vic2l0ZURhdGFTdG9yZSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0aGlzKSkK
KyAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9pc1ByZXdhcm1l
ZChpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVu
dC5oCmluZGV4IGU5ZmNmMDAxNTM5OTVkYzFjY2UxMzVmOGMwOTJlOTJlNjZkYmZmM2EuLmQwYmJh
NTY0YzI3NTgyZDc4MjZlOWYyYzIwNjIyMzcwMjI3Mjk1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xp
ZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0
b3JlQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2Nh
aXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJv
L0JhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCAxODI5NGQzN2ZlNDllZWQ2ZDY5ZGZmZmY1ZjJm
NjUwNzBiNjZjZDkwLi43YmRkMDNkM2M4ZWM4ZTA2NjJlNzdkMDE4MjUwYjUwODhjMjZjZmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwCkBAIC01NCwxMiArNTQsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEJhY2tpbmdTdG9yZUJh
Y2tlbmRDYWlybz4gQmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKCkKICAgICAgICAgR2RrVmlz
dWFsKiB2aXN1YWwgPSBndGtfd2lkZ2V0X2dldF92aXN1YWwobV93ZWJQYWdlUHJveHkudmlld1dp
ZGdldCgpKTsKICAgICAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBnZGtfdmlzdWFsX2dldF9zY3Jl
ZW4odmlzdWFsKTsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4o
c2hhcmVkRGlzcGxheSkubmF0aXZlKCkgPT0gR0RLX1NDUkVFTl9YRElTUExBWShzY3JlZW4pKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJv
WDExPihHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExPihH
REtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwKICAgICAg
ICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBnZGtfdmlzdWFsX2dldF9kZXB0aCh2
aXN1YWwpLCBtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbD4o
bV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwog
fQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBiODc0ZmIwZmIyZTJhN2U3ZWMzNmNjNDRlMzlk
NjI0OTA2YTRjNWYxLi5mODg4YzBmNDQ2YzYyNzEyN2M4Mzc1YmUwZDgxYTZhM2YyYzA5ZjcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0
b3JDbGllbnQuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGll
bnQ6OmNvbm5lY3Rpb25DbG9zZWQoKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3Bl
Y3QodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCkKIHsKICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJlKHN0ZDo6bWFrZV9wYWlyKGNv
bm5lY3Rpb25JRCwgdGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRF0gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRo
aXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpOwogICAg
IH0pOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+c2hvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAppbmRl
eCAzODMxMDAwNTg4OTRkZWMwZmI3YjUxY2FhMDlhMjM5ZDc3ZDA4YThiLi44OTMyNzlmYmNmNThh
ZWFmMmFmZDZiMWE0N2MxYzc2YzIzZDgyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNw
cApAQCAtNzksOSArNzksOSBAQCBib29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6
Y2hlY2tSZXF1aXJlbWVudHMoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNF
KE9QRU5HTF9FUykKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVT
PiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihu
dWxscHRyLCAgZmFsc2UpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3Bl
bkdMRVM+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51
bGxwdHIsICBmYWxzZSk7CiAjZWxzZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9u
czNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9w
ZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMg
PSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJy
ZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAgICAgIGlmIChnbEV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikgfHwgZ2xFeHRlbnNpb25zLT5zdXBwb3J0
cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQogICAgICAgICAgICAgZ2xJbWFnZVRhcmdl
dFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUy
RE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VT
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9w
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5k
bGVyLmNwcAppbmRleCBlOWFlNjU1MmE3YTJkODYyYzRiZDRlZTEwZWQyZWMzNmU5MmY4MzFkLi5j
YTY1M2U1ZWJhNzBjOTYxNTVmZjc2NDg4YzNlZGY0MjgxZjg1NzEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcApAQCAtMjAyLDcg
KzIwMiw3IEBAIFNlbGVjdGlvbkRhdGEqIERyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxl
Y3Rpb24oR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAgc3RkOjp1bmlxdWVfcHRyPERy
b3BwaW5nQ29udGV4dD4mIGRyb3BwaW5nQ29udGV4dCA9IG1fZHJvcHBpbmdDb250ZXh0cy5hZGQo
Y29udGV4dCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZHJvcHBpbmdDb250
ZXh0KSB7CiAgICAgICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gbV9wYWdlLnZpZXdXaWRnZXQoKTsK
LSAgICAgICAgZHJvcHBpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEcm9wcGluZ0NvbnRl
eHQ+KGNvbnRleHQsIHBvc2l0aW9uKTsKKyAgICAgICAgZHJvcHBpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxEcm9wcGluZ0NvbnRleHQ+KGNvbnRleHQsIHBvc2l0aW9uKTsKICAgICAgICAgVmVjdG9y
PEdka0F0b20+IGFjY2VwdGFibGVUYXJnZXRzKFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigp
LmRyb3BBdG9tc0ZvckNvbnRleHQod2lkZ2V0LCBkcm9wcGluZ0NvbnRleHQtPmdka0NvbnRleHQp
KTsKICAgICAgICAgZHJvcHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3RzID0gYWNjZXB0
YWJsZVRhcmdldHMuc2l6ZSgpOwogICAgICAgICBmb3IgKGF1dG8mIHRhcmdldCA6IGFjY2VwdGFi
bGVUYXJnZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdB
bmREcm9wSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9w
SGFuZGxlci5oCmluZGV4IDUyNTQyMDM3MWY2MWJkNGI4ZjNjMWEzOTliN2I4MjYxYjk5NGVhMTAu
LjU5MTRiN2UwZGY1NDMxYWNmNjYzNzEwM2U2ODgwNDA0ZWQ0NDNmMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgKQEAgLTQ5LDYgKzQ5
LDcgQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFz
cyBEcmFnQW5kRHJvcEhhbmRsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdBbmREcm9wSGFuZGxlcik7CiBwdWJsaWM6CiAgICAg
RHJhZ0FuZERyb3BIYW5kbGVyKFdlYlBhZ2VQcm94eSYpOwpAQCAtNjQsNiArNjUsNyBAQCBjbGFz
cyBEcmFnQW5kRHJvcEhhbmRsZXIgewogCiBwcml2YXRlOgogICAgIHN0cnVjdCBEcm9wcGluZ0Nv
bnRleHQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IERyb3BwaW5nQ29udGV4dChHZGtEcmFnQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb3NpdGlvbik7CiAKICAgICAgICAgR2RrRHJhZ0NvbnRleHQqIGdka0NvbnRleHQgeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3Np
dG9yLmNwcAppbmRleCBjYmUzODBiMjQwZDk2MDExMTcyN2I3NzBhODI1ZTA5ZTA1NDdjOWVkLi5j
M2Q5OTczYzcwZGMyMDg5YzY4M2Q2NWE5MTNkYTI5NGQ1ZmZlYmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTQyMCw5ICs0
MjAsOSBAQCBib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0
ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lv
bnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOwogI2Vsc2UKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4
dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24o
KSA+PSAzMjApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0
ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRl
eHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICBpZiAoZ2xFeHRl
bnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+c3Vw
cG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKICAgICAgICAgZ2xJbWFnZVRhcmdl
dFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUy
RE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VT
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1h
Z2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXIuaAppbmRleCBiYmY5M2MyMDI4NmVlNmM2NjI4YTcxODJiYWVkNDUyZjJiYzhm
NzRjLi41MTRlY2E2ODliNjUxY2NkZmVkNjExODUwZDJiMTRiYzJmNGM1OTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIu
aApAQCAtNDEsMTEgKzQxLDEzIEBAIE9CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgRWRpdGFibGVJbWFnZSB7CisgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBkcmF3aW5nVmll
dzsKICAgICBTdHJpbmcgYXR0YWNobWVudElEOwogfTsKIAogY2xhc3MgRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFZGl0YWJsZUltYWdlQ29u
dHJvbGxlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIo
V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KaW5kZXggYzIzNDExYzFmMDliMDEwYTY1MjU0YjM2
OWRkMzE2OWQzMWYwYzBlMC4uNjFlODU5NGQ1YjdjNDFhYWY5ZmM4MmM2NTM4ZGI5YWQ3MTg1NjM0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VD
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5tbQpAQCAtNTgsNyArNTgsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxl
cjo6fkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkKIEVkaXRhYmxlSW1hZ2UmIEVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyOjplbnN1cmVFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9l
ZGl0YWJsZUltYWdlcy5lbnN1cmUoZW1iZWRkZWRWaWV3SUQsIFsmXSB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPiBpbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFi
bGVJbWFnZT4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdl
ID0gbWFrZVVuaXF1ZTxFZGl0YWJsZUltYWdlPigpOwogICAgICAgICBpbWFnZS0+ZHJhd2luZ1Zp
ZXcgPSBtX3dlYlBhZ2VQcm94eS0+cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdWaWV3KGVtYmVk
ZGVkVmlld0lEKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaAppbmRl
eCBjNmY1MGFiMTFmM2RiMjZlMzFjYzIwNDQzYTFlODQyYjdkODAyZjhkLi5lZmMzM2RlNmYyYTgy
MjVkZmM0ZTFhMzQzYzE5YzIyZWUxYzM0MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaApAQCAtMzMsNiArMzMsNyBA
QCBPQkpDX0NMQVNTIFVJVmlldzsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbnB1dFZp
ZXdVcGRhdGVEZWZlcnJlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIpOwogcHVibGljOgogICAg
IGV4cGxpY2l0IElucHV0Vmlld1VwZGF0ZURlZmVycmVyKFVJVmlldyAqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5oCmluZGV4IDcyODA3ODg2MzgxMmU4MDljZGUwOTZlZTg5YjFmNjAyMDUwYmM0ZDEuLjAy
MDExNjc5Yjc5MWY4ZTBhZDExZjFhOGY1MjczMWFmYTMwODU3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXIuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIAogY2xhc3MgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA6IHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIpOwogcHVibGlj
OgogICAgIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIoV0tDb250ZW50VmlldyAqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVU
cmFja2luZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlv
blN0YXRlVHJhY2tpbmdWaWV3Lm1tCmluZGV4IGQwM2ExNzI2YWIzMzRhMDBlNjBmYmMwNTBiNTBl
NWMzMzc1YWY3MjAuLjdmMGY5NDg0ZmQ3Nzc0ZGQxMTU3YWUyODg1YzkwYTNiZjJlZTc5YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVU
cmFja2luZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGlj
YXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQpAQCAtNjUsNyArNjUsNyBAQCAtICh2b2lkKWRpZE1v
dmVUb1dpbmRvdwogICAgIGlmICghc2VsZi5fY29udGVudFZpZXcud2luZG93IHx8IF9hcHBsaWNh
dGlvblN0YXRlVHJhY2tlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX2FwcGxpY2F0aW9uU3Rh
dGVUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFj
a2VyPihzZWxmLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNl
bGVjdG9yKF9hcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNr
Z3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsKKyAg
ICBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6QXBwbGljYXRp
b25TdGF0ZVRyYWNrZXI+KHNlbGYsIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJF
bnRlcmluZ0JhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdy
b3VuZCkpOwogICAgIAogICAgIGlmIChfbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kICYm
ICFbc2VsZiBpc0JhY2tncm91bmRdKQogICAgICAgICBbc2VsZiBfYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KaW5kZXggNjgxMWU4N2E0YTQyMTAwNWJkOTRhN2FjMjE2NTQzZWNjMDBhNzdmYy4uNDMx
ZmFjZDFlNjgzOTdlYzg1NzM5MWFiMWNmODg4ZDM4NDE1N2E0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCAtIChp
bnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJilwcgogICAgIF9wYWdlLT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1
ZSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgX3BhZ2UtPnNldEZ1bGxzY3Jl
ZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJW
aWV3KSk7CisgICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMjM5LDcgKzIzOSw3
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bv
b2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJL
aXQyKCk7CiAKLSAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdl
Q2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CisgICAgX3BhZ2VDbGllbnQgPSBtYWtlVW5pcXVl
PFdlYktpdDo6UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwogICAgIF93ZWJWaWV3ID0g
d2ViVmlldzsKIAogICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJv
Y2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
XTsKQEAgLTU0MSw3ICs1NDEsNyBAQCAtICh2b2lkKV93ZWJWaWV3RGVzdHJveWVkCiAKIC0gKHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5nQXJl
YVByb3h5OihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eSYpcHJvY2VzcwogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4o
Kl9wYWdlLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7CiB9CiAKIC0gKHZvaWQp
X3Byb2Nlc3NEaWRFeGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBlZjNhZTQ0M2RhNjRkOTUxODJiMGUy
NTAwMzFiNmExODIwYjRmNDM0Li5lZjUwNmRhNGY2ZGI1ODE5MmY2ZDdkNjZjOTJmZjFjMTNkYzRh
OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTgwNiw3ICs4MDYsNyBAQCAtICh2b2lkKXNldHVwSW50
ZXJhY3Rpb24KICAgICAKICAgICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBbX2Fj
dGlvblNoZWV0QXNzaXN0YW50IHNldERlbGVnYXRlOnNlbGZdOwotICAgIF9zbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXI+KHNlbGYpOworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYp
OwogICAgIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQgPSBOTzsKICAgICBfcG90ZW50
aWFsVGFwSW5Qcm9ncmVzcyA9IE5POwogICAgIF9pc0RvdWJsZVRhcFBlbmRpbmcgPSBOTzsKQEAg
LTgyMSw3ICs4MjEsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICNlbmRpZgogCiAjaWYg
RU5BQkxFKFBMQVRGT1JNX0RSSVZFTl9URVhUX0NIRUNLSU5HKQotICAgIF90ZXh0Q2hlY2tpbmdD
b250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xs
ZXI+KCpfcGFnZSk7CisgICAgX3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdl
YktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlcj4oKl9wYWdlKTsKICNlbmRpZgogCiAgICAgX2hh
c1NldFVwSW50ZXJhY3Rpb25zID0gWUVTOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgLSAoQk9PTCli
ZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXcKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAg
aWYgKCFfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIpCi0gICAgICAgIF9pbnB1dFZpZXdVcGRhdGVE
ZWZlcnJlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJl
cj4oc2VsZik7CisgICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8
V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CiAKICAgICBCT09MIGRpZEJl
Y29tZUZpcnN0UmVzcG9uZGVyOwogICAgIHsKQEAgLTUzMTEsNyArNTMxMSw3IEBAIC0gKHZvaWQp
X2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
JilpbmZvcm1hdGlvbiB1CiAgICAgICAgIC8vIERlZmVyIHZpZXcgdXBkYXRlcyB1bnRpbCB0aGUg
ZW5kIG9mIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgYSBub3RpY2VhYmxlIGZsYXNoIHdoZW4gc3dp
dGNoaW5nIGZvY3VzCiAgICAgICAgIC8vIGJldHdlZW4gZWxlbWVudHMgdGhhdCByZXF1aXJlIHRo
ZSBrZXlib2FyZC4KICAgICAgICAgaWYgKCFpbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAgICAg
ICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKKyAgICAgICAgICAgIGlucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVy
PihzZWxmKTsKICAgICAgICAgW3NlbGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGIwMjgy
NDg5MjAwM2EwNDk4OTI5ZTcwNmE1OTA0NTlhNGY4NzFhY2QuLmMwOGY5Nzg2ZjBlYWFiNGE5NzVi
YjU2NDhjNzQyN2M1NjM2ZGJlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtOTEyLDcgKzkxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjplbGVtZW50RGlkRm9jdXMoY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3Jt
YXRpb24sCiAgICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2VzcygpLnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwogICAgIGlmICht
X2VkaXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdHJ5IHRvIGVsaW1pbmF0ZSBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJn
dW1lbnRzIGFsdG9nZXRoZXIsIGluIGZhdm9yIG9mIG9ubHkgZGVmZXJyaW5nIGFjdGlvbnMgdGhh
dCBhcmUgZGVwZW5kZW50IG9uIHBvc3QtbGF5b3V0IGVkaXRvciBzdGF0ZSBpbmZvcm1hdGlvbi4K
LSAgICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IHN0ZDo6bWFrZV91
bmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMg
eyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2
aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKKyAgICAgICAgbV9kZWZlcnJlZEVs
ZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IG1ha2VVbmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1l
bnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJh
Y3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9i
amVjdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1OCw3ICsxMjU4LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyPiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6
YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29yZGlu
YXRvclByb3h5LCBQS1BheW1lbnRSZXF1ZXN0ICpwYXltZW50UmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihw
YXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGlu
YXRvclByb3h5LCBwYXltZW50UmVxdWVzdCk7CiB9CiAKIFVJVmlld0NvbnRyb2xsZXIgKldlYlBh
Z2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0Nv
bnRyb2xsZXIubW0KaW5kZXggOGIxMjNiMGE5N2MwMzBlOTQ1MGY1ZWQ0ZjhjMTc0YjMyMWJiNDA3
Yi4uOGZmOGEwYmY0NzViM2Y3YjIzNjIyOWY0MTJlM2YzMjY2Y2Y5NTk2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0Nv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4v
V0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToK
IH07CiAKIGNsYXNzIFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9k
ZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxs
U2NyZWVuVmlld0NvbnRyb2xsZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5k
ZXggODM0MzQ4ODljZGNmMjQ5YzFjMjc5MWJkMDdiZmZmYTIwMWNmNDg3ZC4uYTkxMjk1M2VjOTFj
MjczMzYyNjc2M2RhZjlkYTI2YjI0OTMzYzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhZ2VD
bGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChOU1ZpZXcqIHZpZXcsIFdLV2ViVmlldyAqd2ViVmll
dykKICAgICA6IFBhZ2VDbGllbnRJbXBsQ29jb2Eod2ViVmlldykKICAgICAsIG1fdmlldyh2aWV3
KQogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgICwgbV9hbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXI+KCkpCisgICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihtYWtlVW5pcXVlPEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5tbQppbmRleCA0M2U5Zjk2N2JjODk3N2ZiZmY4Yzg2NjhhNWNjYTFmMzgyNGMwODA5Li4z
NGE2OWJiZTBiYjBkMTc2YjU1MWJhZjJkN2EzNWMxZmFhYzAzN2E3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5tbQpAQCAtNTQsNiArNTQsNyBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgRGVm
YXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCA9IDE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50
IDogV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCkBAIC0xNTAs
NyArMTUxLDcgQEAgLSAoaWQpaW5pdFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luZG93IHdlYlZp
ZXc6KE5TVmlldyAqKXdlYlZpZXcgcGFnZTooV2ViS2l0OjoKICAgICBfd2ViVmlldyA9IHdlYlZp
ZXc7CiAgICAgX3BhZ2UgPSAmcGFnZTsKIAotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVv
RnVsbHNjcmVlbk1vZGVsQ2xpZW50PigpOworICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBt
YWtlVW5pcXVlPFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNj
cmVlbk1vZGVsQ2xpZW50PigpOwogICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldFBhcmVu
dChzZWxmKTsKIAogICAgIFtzZWxmIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmlu
ZGV4IDY2MDMxN2MyZmJjNzliNjhiYjViNzM0NzZhNThiZWZlYTA5YjA2ZDMuLjY5ZDlkOWUyZDQ0
NDg0M2QxNTI3MGY1MTE3Zjc3NGNkMjM3ZDVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAtNTUsNiArNTUsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBUZXh0Rmlu
ZGVyRmluZENsaWVudCA6IHB1YmxpYyBBUEk6OkZpbmRNYXRjaGVzQ2xpZW50LCBwdWJsaWMgQVBJ
OjpGaW5kQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBUZXh0RmluZGVyRmluZENsaWVudChXS1RleHRGaW5kZXJDbGllbnQgKnRleHRG
aW5kZXJDbGllbnQpCiAgICAgICAgIDogbV90ZXh0RmluZGVyQ2xpZW50KHRleHRGaW5kZXJDbGll
bnQpCkBAIC0xNjgsOCArMTY5LDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICopdmlldyB1c2UKICAgICBfdmll
dyA9IHZpZXc7CiAgICAgX3VzZVBsYXRmb3JtRmluZFVJID0gdXNlUGxhdGZvcm1GaW5kVUk7CiAg
ICAgCi0gICAgX3BhZ2UtPnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikp
OworICAgIF9wYWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4
dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtl
VW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKIAogICAgIHJldHVy
biBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1Jl
bW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlZDBkNWZmZTk1ODlmOTVlNDRhMDdmMjIx
OGVkODJjMDBmMDE3ZDdlLi5lNzRhZGFjMWU2NWViZTVjOTliMzFkOTA2N2FlNjExNThmMzk4N2Yx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yQ2xpZW50OjpkaWRDbG9zZShDb25uZWN0aW9uSUQpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNs
aWVudDo6aW5zcGVjdChDb25uZWN0aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJnZXRJ
RCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0
b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCks
IFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCAmdHlwZV0gewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25J
RCwgdGFyZ2V0SUQsIHR5cGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNw
ZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwogICAgIH0p
OwogCiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAppbmRleCAxYjZkOWNjNTRmYzYwYjUzZTQ0MDI3MWYyMzA4ZTdjMGY0N2M4
NzRjLi5hODgzM2Y2MjQ4N2Y5YTY3MjEwMzk5ZWM5ZjhmZjVlMDkyNzEyZWRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHZvaWQgUmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkm
IHBhZ2VQcm94eSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNw
ZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVx
dWVzdFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0
b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9y
dCgpLnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5z
cGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJM
LnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
CiAgICAgLy8gU2V0dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5k
bGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwg
Imluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAg
cGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRt
bEJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2lu
Z1N0b3JlRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdT
dG9yZURpcmVjdDJELmNwcAppbmRleCBiNjdkNzNhNGRjNDg4YjMxZmRjOWE0NzIxOTY5MTQwNDI3
NDQ4ODI1Li41ZDUwYWU1NTQ2ODBhNmU5ZTNkYTJjZTg0YmU1NjRkNWMzMjM3ZjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5p
cXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9yZTo6Y3JlYXRl
QmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFj
a2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1f
ZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQyRDFS
ZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGNkNmYwOGZm
MThiZDU1YzE1NTQ0NjNkNGE0MGI1MWU0NWIyZWFiOWYuLjAzMDdjNGY5ZjE0M2Y4NmRjNjIwOGI0
ODRiZThkYjQyMmRjMGY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1Bh
Z2VDbGllbnRJbXBsLmNwcApAQCAtNDYsNyArNDYsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNs
aWVudEltcGwoV2ViVmlldyYgdmlldykKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVu
Y3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzPigqbV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNz
KTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBX
ZWJDb3JlOjpSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcAppbmRleCBjZDUzNTJkZjdhYTA0ZTY5ZDliMGY5OGVkMDAxZTVjNjMzMmY3NTkzLi42N2U1
ZTRiMjdhM2FlODBhYjY2OGY2YzM0MTdjMGYwY2U2YjdmMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBXZWJWaWV3Ojpy
ZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpCiB9CiAKIFdlYlZpZXc6OldlYlZpZXcoUkVDVCBy
ZWN0LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBh
cmVudFdpbmRvdykKLSAgICA6IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGll
bnRJbXBsPigqdGhpcykpCisgICAgOiBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50
SW1wbD4oKnRoaXMpKQogewogICAgIHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuaAppbmRleCBiNmQ0YTA0MjBkNWE1ZGJkNjQ2MDgzYWY2Nzg4MDUxYmY2Y2M0
N2UwLi5mMmQ2MmVhOTc5MGY4MDdhNjViNWQzZTU4ZjgwYjk3ZjA2YWRiZjM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQsIHByaXZhdGUgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOwogICAgIGV4cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvcihXZWJQYWdl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1l
cGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2Ft
ZXBhZFByb3ZpZGVyLmNwcAppbmRleCA0ZjgxMGNjZjM4ZWNmYTJjOTllY2JkYTg5ZDA0MWNlYjhk
MjMzM2I4Li5hYWIzNDU3Y2VkNjRhNWE5MTBjZGM1NjJhY2MwMTE1MDBkM2M2Y2M5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92
aWRlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnNldElu
aXRpYWxHYW1lcGFkcyhjb25zdCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGEKICAgICAg
ICAgaWYgKGdhbWVwYWREYXRhc1tpXS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIG1fZ2FtZXBhZHNbaV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdh
bWVwYWREYXRhc1tpXSk7CisgICAgICAgIG1fZ2FtZXBhZHNbaV0gPSBtYWtlVW5pcXVlPFdlYkdh
bWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7CiAgICAgICAgIG1fcmF3R2FtZXBhZHNbaV0gPSBtX2dh
bWVwYWRzW2ldLmdldCgpOwogICAgIH0KIH0KQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXZWJHYW1l
cGFkUHJvdmlkZXI6OmdhbWVwYWRDb25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmIGdhbWVwYWRE
YXRhKQogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldKTsKIAot
ICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdhbWVwYWQ+KGdhbWVwYWREYXRhKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4
KCldID0gbWFrZVVuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YSk7CiAgICAgbV9yYXdHYW1l
cGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgo
KV0uZ2V0KCk7CiAKICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZmQ2NTIzZDZm
YTdkNzU5M2QxYjhkM2IzMmJhYjQ2M2E5NjhlYWEyOC4uNjMzZjIyZmRmZTQyNzJiMzlkZTI1ZWEw
ZTRhMGEwNGQ3Y2RlNmNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlOwogCiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRp
b25NYW5hZ2VyLmgKaW5kZXggMGJiNGYyYjQyMWEzZWMyMjg3NTRlNjM4MjlkNDFhYmJlMmUwNmY4
ZC4uYTZjMjg3MTZhYjE2NzhhZmRkNTc0YzlkZjlmZTI4Njg2MzQ2MzAxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nl
c3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0aW9u
TWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdl
YlByb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGYzZWM3MjA4N2NhMjg4NjdmNTRk
OWRmMGY1MGQ4NzEwMmUwMTZmYTIuLmNhODVkNTg1ZGNmMWI3NmVmMGI4ZDExZDU5YWQ2NjA0YWMz
ZjE4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXS1R5cGVJRCBX
S0J1bmRsZUdldFR5cGVJRCgpCiAKIHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5kbGVSZWYg
YnVuZGxlUmVmLCBXS0J1bmRsZUNsaWVudEJhc2UgKndrQ2xpZW50KQogewotICAgIFdlYktpdDo6
dG9JbXBsKGJ1bmRsZVJlZiktPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxl
UmVmKS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4o
d2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVNldFNlcnZpY2VXb3JrZXJQcm94eUNyZWF0
aW9uQ2FsbGJhY2soV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCB2b2lkICgqY2FsbGJhY2spKHVpbnQ2
NF90KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZjEyYTViYTc3NGQ2Y2M2OGQw
ODRmMWY2MDIxY2ViZjM4MWFhM2E1OC4uZGMwNzU4YWQ3NWFmMzYxZGZiZTgxNmViMTEzZjQxYzdm
MDlkODFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAg
V0tUeXBlSUQgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkKIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29u
dGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRl
eHRNZW51Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1l
bnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRl
eHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5z
ZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBAIC04
NiwyMiArODYsMjIgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGUKIAogdm9pZCBXS0J1bmRsZVBh
Z2VTZXRFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUVk
aXRvckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYp
LT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVudCA/IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7Cisg
ICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KHdrQ2xpZW50ID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudD4oKndrQ2xpZW50KSA6IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9y
Q2xpZW50PigpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7
Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudD4o
d2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5k
bGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xp
ZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2Uq
IHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdl
UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQg
V0tCdW5kbGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBX
ZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9h
ZENsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5q
ZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1
bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxl
UGFnZVBvbGljeUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQg
V0tCdW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1
bmRsZVBhZ2VQb2xpY3lDbGllCiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7
Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0Ns
aWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVVJ
Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4od2tD
bGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50QmFzZSogd2tD
bGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXggZWJk
M2VmNWYyOTMwOGMxNDE5M2ExODFiN2UxZTRhNDI1ZmQyMWRkMi4uNjlmN2FmMjJiNTY3NTA0ZDRm
MzFmMGQ3YTcwYjg3NGUwOWZhNTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VP
dmVybGF5LmNwcApAQCAtNTQsNiArNTQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFp
dHM8V0tCdW5kbGVQYWdlT3ZlcmxheUFjY2Vzc2liaWxpdHlDbGllbnRCYXNlPiB7CiB9CiAKIGNs
YXNzIFBhZ2VPdmVybGF5Q2xpZW50SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZU92ZXJs
YXlDbGllbnRCYXNlPiwgcHVibGljIFdlYktpdDo6V2ViUGFnZU92ZXJsYXk6OkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGFnZU92
ZXJsYXlDbGllbnRJbXBsKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiBjbGllbnQpCiAg
ICAgewpAQCAtMjE2LDcgKzIxNyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZU92ZXJsYXlHZXRU
eXBlSUQoKQogCiBXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVh
dGUoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIGF1dG8g
Y2xpZW50SW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0Ns
aWVudCk7CisgICAgYXV0byBjbGllbnRJbXBsID0gbWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNsaWVu
dEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6V2ViUGFnZU92ZXJs
YXk6OmNyZWF0ZShXVEZNb3ZlKGNsaWVudEltcGwpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dL
QnVuZGxlUGFnZUJhbm5lck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCmluZGV4IGFjYzM1YTIx
YjU5ZjFhYTMxZTMzMDUxYTY2YmMxMzA1OTk2Njk5ZDMuLmQ2ZmZkMWNjYzA0YTkzYTdhMDlkMmIz
NjU1OWE4ZjBjMDk1MGZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQ
YWdlQmFubmVyTWFjLm1tCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFBhZ2VCYW5uZXJDbGllbnRJbXBsIDogQVBJ
OjpDbGllbnQ8V0tCdW5kbGVQYWdlQmFubmVyQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlQmFubmVy
OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFBhZ2VCYW5uZXJDbGllbnRJbXBsKFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJhc2Uq
IGNsaWVudCkKICAgICB7CkBAIC0xMDMsNyArMTA0LDcgQEAgV0tCdW5kbGVQYWdlQmFubmVyUmVm
IFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKENBTGF5ZXIgKmxheWVy
LAogICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFn
ZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBtYWtl
VW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1
cm4gdG9BUEkoJldlYktpdDo6UGFnZUJhbm5lcjo6Y3JlYXRlKGxheWVyLCBoZWlnaHQsIGNsaWVu
dEltcGwucmVsZWFzZSgpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9E
T00vRE9NT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDQyMTAxZjhjODJjYjJhNTQ4M2JhZTRkYzg0ODA3
YjQxNjVhOTJkODYuLjIyYjQwZTQzOWJiYjYwMTVlMThhYThjMjU1OGUwZTY5M2Y1ZWIxYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IERPTU9iamVjdENhY2hlRGF0YSB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERPTU9iamVjdENhY2hl
RGF0YShHT2JqZWN0KiB3cmFwcGVyKQogICAgICAgICA6IG9iamVjdCh3cmFwcGVyKQogICAgICAg
ICAsIGNhY2hlUmVmZXJlbmNlcygxKQpAQCAtNzcsMTUgKzc4LDggQEAgc3RhdGljIERPTU9iamVj
dENhY2hlRnJhbWVPYnNlcnZlck1hcCYgZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpCiAg
ICAgcmV0dXJuIG1hcDsKIH0KIAotc3RhdGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciYg
Z2V0T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZy
YW1lKQotewotICAgIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlck1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IGRvbU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcnMoKS5hZGQoJmZyYW1lLCBudWxscHRy
KTsKLSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJh
bWUpOwotICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLX0KLQogY2xhc3MgRE9N
T2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0
cnVjdGlvbk9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQog
ICAgICAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcigmZnJhbWUpCkBAIC0xMDUsNyArOTks
NyBAQCBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJD
b3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZQogICAgICAgICBpZiAoZG9tV2luZG93ICYmICgh
bV9kb21XaW5kb3dPYnNlcnZlciB8fCBtX2RvbVdpbmRvd09ic2VydmVyLT53aW5kb3coKSAhPSBk
b21XaW5kb3cpKSB7CiAgICAgICAgICAgICAvLyBOZXcgRE9NV2luZG93LCBjbGVhciB0aGUgY2Fj
aGUgYW5kIGNyZWF0ZSBhIG5ldyBET01XaW5kb3dPYnNlcnZlci4KICAgICAgICAgICAgIGNsZWFy
KCk7Ci0gICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOworICAgICAgICAgICAgbV9kb21X
aW5kb3dPYnNlcnZlciA9IG1ha2VVbmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpkb21XaW5kb3cs
ICp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fb2JqZWN0cy5hcHBlbmQoJmRhdGEpOwpA
QCAtMTkxLDYgKzE4NSwxNCBAQCBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmlu
YWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxET01XaW5kb3dPYnNlcnZlcj4gbV9kb21XaW5kb3dPYnNlcnZlcjsKIH07CiAKK3N0
YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2Fj
aGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKK3sKKyAgICBET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RDYWNoZUZy
YW1lT2JzZXJ2ZXJzKCkuYWRkKCZmcmFtZSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxET01P
YmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXI+KGZyYW1lKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgc3RkOjp1bmlxdWVfcHRy
PERPTU9iamVjdENhY2hlRGF0YT4+IERPTU9iamVjdE1hcDsKIAogc3RhdGljIERPTU9iamVjdE1h
cCYgZG9tT2JqZWN0cygpCkBAIC0yMTUsNyArMjE3LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6
cHV0KHZvaWQqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikKIHsKICAgICBET01PYmplY3RN
YXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RzKCkuYWRkKG9iamVjdEhhbmRsZSwgbnVs
bHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNU
KHdyYXBwZXIpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CiB9CiAKIHZvaWQgRE9NT2Jq
ZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIp
CkBAIC0yMjQsNyArMjI2LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6cHV0KFdlYkNvcmU6Ok5v
ZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikKICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+
KEdfT0JKRUNUKHdyYXBwZXIpKTsKICAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gb2Jq
ZWN0SGFuZGxlLT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGdldE9yQ3JlYXRlRE9NT2Jq
ZWN0Q2FjaGVGcmFtZU9ic2VydmVyKCpmcmFtZSkuYWRkT2JqZWN0Q2FjaGVEYXRhKCpyZXN1bHQu
aXRlcmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRl
bnNpb25NYW5hZ2VyLmNwcAppbmRleCA0Y2NlYzYyZWYwZTExMzFmYTEzZjdmYjA2MGM4MGUwN2Vl
NDI1MWFmLi40ZDc0MmU0MDliYmZjN2NmYWI0MDhjZDY1MzhhZWY5ZjIyOGZkNzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKEluamVj
dGVkQnVuZGxlKiBidW5kbGUsIEFQSTo6T2JqZWN0KiB1c2UKICAgICBzY2FuTW9kdWxlcyh3ZWJF
eHRlbnNpb25zRGlyZWN0b3J5LCBtb2R1bGVQYXRocyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gbW9kdWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKKyAgICAgICAgYXV0byBt
b2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0aHNbaV0pOwogICAgICAgICBpZiAo
IW1vZHVsZS0+bG9hZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChpbml0
aWFsaXplV2ViRXh0ZW5zaW9uKG1vZHVsZS5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYkVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAppbmRleCAwNDA3MmViODY0ZGJlMzVmODBk
ZmM4NmFkMGU4ODNjM2U5OWNlNDRmLi5jY2I1MWUwZDk2NDBjNjZmODU5NmU0NzQxNzE0MDU4ZTkx
Mzk3Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRXZWJFZGl0b3IqIHdlYmtpdFdlYkVkaXRvckNyZWF0ZShXZWJLaXRX
ZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIFdlYktpdFdlYkVkaXRvciogZWRpdG9yID0gV0VCS0lU
X1dFQl9FRElUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FRElUT1IsIG51bGxwdHIp
KTsKICAgICBlZGl0b3ItPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwotICAgIHdlYmtpdFdlYlBh
Z2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOworICAgIHdlYmtpdFdlYlBhZ2VH
ZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVl
PFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOwogICAgIHJldHVybiBlZGl0b3I7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKaW5kZXggNGEyM2JmNTYw
MTA3YzMxZjFhNGRlMmM5NjEyOTlhNzAxMDgxNzUwMS4uZTMwNmUzZmVmMjYzMWQ1NDY2NTU3MTE2
ZTVlNDg3ZDM3MWM3ODU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVu
c2lvbi5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBXZWJFeHRlbnNpb25JbmplY3RlZEJ1
bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbgogV2Vi
S2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRCdW5kbGUq
IGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiA9IFdFQktJVF9X
RUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBOVUxM
KSk7Ci0gICAgYnVuZGxlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJFeHRlbnNpb25J
bmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7CisgICAgYnVuZGxlLT5zZXRDbGllbnQo
bWFrZVVuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7
CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBh
Z2UuY3BwCmluZGV4IGNmYzUwMzFlZDZlNGEyOTU0ZmUwMmEwM2RhODdhMTYxY2QyZDMwODIuLmM5
MjA0YjIzOTgxZDdmMTdhZDA3M2I5ZWQ0MTJhODc3Njg1Y2U3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTk1LDYgKzk1LDcgQEAgV0VCS0lUX0RFRklORV9UWVBF
KFdlYktpdFdlYlBhZ2UsIHdlYmtpdF93ZWJfcGFnZSwgR19UWVBFX09CSkVDVCkKIHN0YXRpYyB2
b2lkIHdlYkZyYW1lRGVzdHJveWVkKFdlYkZyYW1lKik7CiAKIGNsYXNzIFdlYktpdEZyYW1lV3Jh
cHBlciBmaW5hbDogcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViS2l0RnJhbWVXcmFwcGVyKFdlYkZy
YW1lJiB3ZWJGcmFtZSkKICAgICAgICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIod2ViRnJh
bWUuY29yZUZyYW1lKCkpCkBAIC0xMjgsNyArMTI5LDcgQEAgc3RhdGljIFdlYktpdEZyYW1lKiB3
ZWJraXRGcmFtZUdldE9yQ3JlYXRlKFdlYkZyYW1lKiB3ZWJGcmFtZSkKICAgICBpZiAod3JhcHBl
clB0cikKICAgICAgICAgcmV0dXJuIHdyYXBwZXJQdHItPndlYmtpdEZyYW1lKCk7CiAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYktpdEZyYW1lV3JhcHBlcj4gd3JhcHBlciA9IG1ha2VVbmlxdWU8V2ViS2l0RnJhbWVXcmFw
cGVyPigqd2ViRnJhbWUpOwogICAgIHdyYXBwZXJQdHIgPSB3cmFwcGVyLmdldCgpOwogICAgIHdl
YkZyYW1lTWFwKCkuc2V0KHdlYkZyYW1lLCBXVEZNb3ZlKHdyYXBwZXIpKTsKICAgICByZXR1cm4g
d3JhcHBlclB0ci0+d2Via2l0RnJhbWUoKTsKQEAgLTY3OCwxMSArNjc5LDExIEBAIFdlYktpdFdl
YlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKICAgICBXZWJLaXRX
ZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfUEFHRSwgTlVMTCkpOwogICAgIHBhZ2UtPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwogCi0g
ICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxQYWdlUmVzb3VyY2VMb2FkQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxvYWRl
ckNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1l
bnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsK
LSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
UGFnZVVJQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUZvcm1DbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQ
YWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPFBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7Cisg
ICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVl
PFBhZ2VDb250ZXh0TWVudUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVk
QnVuZGxlVUlDbGllbnQobWFrZVVuaXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQ
YWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxQYWdlRm9ybUNsaWVu
dD4ocGFnZSkpOwogCiAgICAgcmV0dXJuIHBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
VGV4dEl0ZXJhdG9yLm1tCmluZGV4IDgxMDU1Y2U3ZmRlYmEzMThkYWIwNjgyNjM0YzZiZDg0YTM3
ZmFlOGMuLjA4NGYzMDA1ZDYxMDNkNGUyNTAzM2MyNTZjNzBjMGUwNjQwNDFjZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
VGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCkBAIC00NSw3ICs0NSw3IEBAIC0gKGlk
KWluaXRXaXRoUmFuZ2U6KFdLRE9NUmFuZ2UgKilyYW5nZQogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIF90ZXh0SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OlRleHRJdGVyYXRvcj4oV2ViS2l0Ojp0b1dlYkNvcmVSYW5nZShyYW5nZSkpOworICAg
IF90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oV2ViS2l0
Ojp0b1dlYkNvcmVSYW5nZShyYW5nZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggNDg4MDBiYjMxNzkwNjVlNGU3MzI5MzA2OTA1
NDY4MGU0MzRhZjFmZi4uNDIwMjM5NmFiYWZhZjMwZDcxODlhZWI2ODUwOWVhMjcxNzFiOTc0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNTQ0LDcgKzU0NCw3IEBAIC0g
KHZvaWQpX3NldEZvcm1EZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0
ZVByaXZhdGU+KWZvcm1EZWxlZ2F0CiAgICAgfTsKIAogICAgIGlmIChmb3JtRGVsZWdhdGUpCi0g
ICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxGb3JtQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZv
cm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAg
ICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG51bGxwdHIpOwogfQpAQCAtNjcz
LDcgKzY3Myw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vz
c1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgfTsKIAogICAgIGlmIChl
ZGl0aW5nRGVsZWdhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPENsaWVudD4oc2VsZikpOworICAgICAgICBfcGFnZS0+c2V0
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQobWFrZVVuaXF1ZTxDbGllbnQ+KHNlbGYpKTsKICAg
ICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChudWxs
cHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDIwY2U1NTkxMWQ3MDY1MWMzMzVhNzBh
Y2YyNGU1YmRmYzIxYmQ2MzEuLjk5NzlkNjM4NGRmZjVjOTgwNTkxZjI5MDgzYzkzNzI5NjM0NGE5
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhCiBJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1fcGF0aChwYXJhbWV0
ZXJzLmluamVjdGVkQnVuZGxlUGF0aCkKICAgICAsIG1fcGxhdGZvcm1CdW5kbGUoMCkKLSAgICAs
IG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50Pigp
KQorICAgICwgbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+
KCkpCiB7CiB9CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBJbmplY3RlZEJ1bmRsZTo6fkluamVjdGVk
QnVuZGxlKCkKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVu
dCkKLSAgICAgICAgbV9jbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkNsaWVudD4oKTsKKyAgICAgICAgbV9jbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50ID0gV1RGTW92
ZShjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
Q2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oCmluZGV4IDBjYTVlYTZk
MmFiZTU3MjE1NGQyMWJlZDBjYzlhMDUzZTdkNjZjMTguLmJmYjNkMDQ1MTQzNzM2YzMxZGY5ODhh
YjFiMDBkZTQyYjg1MzA4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTM5
LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFz
cyBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKFdlYlByb2Nlc3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBkN2M1YzY4MzQ0YjcyNzM4ZDk0OTdk
ZjAxMmNhMzc2YmI4NDE4OGRhLi5iMGJkNTM0Y2UxOWQ3Mzg2MWQ4MTc2YTgyMDVjZGNlNjE5NWZk
MDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBA
IC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xh
c3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4sIHByaXZhdGUgV2ViQ29yZTo6
TWVkaWFDYW5TdGFydExpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2Vi
UGFnZSYpOwogICAgIH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSA9IGRlZmF1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuY3BwCmluZGV4IDczMzUyNzY1ODcxZDgyNTVhMjNkYjdiNTVlNmQ0NGVlNzMzOTIy
ZDcuLjJlNTdhZjI0ODNiZDM2YjNkZDg1ZTRlYzE4ZGRlMTBmNDQzNmU4NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3Bw
CkBAIC0xMzIsMzggKzEzMiwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OnNlbmRNZXNzYWdlKFQmJiBtZXNzYWdlLCBzaXplX3QgYnl0ZQogICAgIHNlbmRX
aXRoQXN5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6
c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgYXV0byBieXRlTGVuZ3RoID0gbWVz
c2FnZS5zaXplSW5CeXRlcygpOwotICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRl
TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01l
c3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtT
b2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgbWVzc2FnZSB9LCBieXRlTGVuZ3RoKTsKLSAgICBl
bHNlCi0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdNZXNzYWdlPihtZXNzYWdlKSk7Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0K
LVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25z
dCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBieXRlTGVuZ3RoKQotewotICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRl
TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01l
c3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtT
b2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVu
Z3RoIH0gfSwgYnl0ZUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdl
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nTWVzc2FnZT4oYmluYXJ5RGF0YSwgYnl0
ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwotCi0gICAgcmV0dXJuIFNlbmRTdWNjZXNzOwotfQotCiBj
bGFzcyBCbG9iTG9hZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXJD
bGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJsb2JM
b2FkZXIoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJDb3JlOjpCbG9iJiBibG9iLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDog
bV9sb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJD
b3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhpcykpCisgICAgICAg
IDogbV9sb2FkZXIobWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3Jl
OjpGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhpcykpCiAgICAgICAgICwg
bV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CiAg
ICAgICAgIG1fbG9hZGVyLT5zdGFydChkb2N1bWVudCwgYmxvYik7CkBAIC0yMjYsNyArMTk5LDcg
QEAgY2xhc3MgUGVuZGluZ01lc3NhZ2UgewogCiAgICAgUGVuZGluZ01lc3NhZ2UoV2ViQ29yZTo6
RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogbV90eXBlKFR5cGU6OkJs
b2IpCi0gICAgICAgICwgbV9ibG9iTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvYkxvYWRlcj4o
ZG9jdW1lbnQsIGJsb2IsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSkKKyAgICAgICAgLCBt
X2Jsb2JMb2FkZXIobWFrZVVuaXF1ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpKQogICAgIHsKICAgICB9CiAKQEAgLTI0NCwxMyArMjE3LDQw
IEBAIGNsYXNzIFBlbmRpbmdNZXNzYWdlIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRl
cj4gbV9ibG9iTG9hZGVyOwogfTsKIAorV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGJ5
dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJbkJ5dGVzKCk7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZl
cmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAgICAgICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBp
ZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICBzZW5kTWVzc2FnZShNZXNz
YWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVM
ZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VV
bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1lc3NhZ2UpKTsKKworICAgIHJldHVybiBTZW5kU3VjY2Vz
czsKK30KKworV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpz
ZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCit7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1v
dW50KGJ5dGVMZW5ndGgpKQorICAgICAgICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9w
ZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6
TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQs
IGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGlu
Z01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBi
eXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CisKKyAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Cit9CisK
IFdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChXZWJD
b3JlOjpCbG9iJiBibG9iKQogewogICAgIC8vIEF2b2lkIHRoZSBCbG9iIHF1ZXVlIGFuZCBsb2Fk
aW5nIGZvciBlbXB0eSBibG9icy4KICAgICBpZiAoIWJsb2Iuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gc2VuZChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoYmxvYi5zaXplKCksIDEpLCAwLCAwKTsK
IAotICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdN
ZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9iLCBbdGhpc10geworICAgIG1fcGVuZGluZ01l
c3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgp
LCBibG9iLCBbdGhpc10gewogICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ01lc3NhZ2VzLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgYXV0byYgbWVzc2FnZSA9IG1fcGVuZGluZ01lc3NhZ2VzLmZp
cnN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDA5NGFjNzFmN2U1ZWZmYWI3
NDg1ZmNlZmNhZTU0ODkzZGIzZTA1MDYuLjdlYzM3Y2RmMDlkMzkwYTM4MjdhNjljYTNmNjBhNmMz
MDU2ZGE3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBBc3lu
Y1Jlc29sdmVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6CiAgICAgcnRjOjpBc3luY1Jl
c29sdmVySW50ZXJmYWNlKiBDcmVhdGUoKSBmaW5hbAogICAgIHsKQEAgLTQ2LDcgKzQ3LDcgQEAg
Y2xhc3MgQXN5bmNSZXNvbHZlckZhY3RvcnkgOiBwdWJsaWMgd2VicnRjOjpBc3luY1Jlc29sdmVy
RmFjdG9yeSB7CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50
ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5
KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25m
aWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFjdG9yeSwg
V1RGTW92ZShjb25maWd1cmF0aW9uKSwgc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Jlc29sdmVyRmFj
dG9yeT4oKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQ
ZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRD
TmV0d29yaygpLm1vbml0b3IoKSwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlv
biksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwogfQogCiB2b2lkIExpYldl
YlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29s
dmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UmVzb2x2ZXIuaAppbmRleCA1ZDYzODNmNmI1MDY1M2I1YzY3MDcwNzA1YzZjMTAyODcwZmEwMjMx
Li4zOTkwNjk5ZDA3NzhmZWIxN2IwY2E4ZTYwNzgxNDEwOGE1YzAwYWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UmVzb2x2ZXIuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIExp
YldlYlJUQ1NvY2tldEZhY3Rvcnk7CiAKIGNsYXNzIExpYldlYlJUQ1Jlc29sdmVyIGZpbmFsIDog
cHVibGljIHJ0Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGliV2ViUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRp
ZmllcikgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXRGYWN0b3J5LmNwcAppbmRleCBmOGI3ZWQyMjljNGY2ZjJkYzAzNjEzMmNjOTZlNDExZWVj
YTU3MDJlLi4yMzU4MmRlNzU5Yjk4NDVlYjdmZTQwNjQ0MzY1ZWZiYzE5Yjc1ZDE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29j
a2V0RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBp
bmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0
RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYg
YWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCwgaW50IG9wdGlvbnMp
CiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4o
KnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6
OlNlcnZlclRDUCwgYWRkcmVzcywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29j
a2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0
SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0
Yzo6U29ja2V0QWRkcmVzcygpKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmll
cigpLCBzb2NrZXQuZ2V0KCkpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9
IHNvY2tldC0+aWRlbnRpZmllcigpLCBhZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRk
cmVzcywgbV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0
LCBvcHRpb25zXSgpIHsKQEAgLTY2LDcgKzY2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCog
TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0YzoK
IAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRl
VWRwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWlu
UG9ydCwgdWludDE2X3QgbWF4UG9ydCkKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIs
IExpYldlYlJUQ1NvY2tldDo6VHlwZTo6VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3Mo
KSk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMs
ICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwg
YWRkcmVzcywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0
LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtp
ZGVudGlmaWVyID0gc29ja2V0LT5pZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0
QWRkcmVzcyhhZGRyZXNzLCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBv
cnQsIG1heFBvcnRdKCkgewpAQCAtODAsNyArODAsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0
KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2Nr
ZQogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVh
dGVDbGllbnRUY3BTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBsb2NhbEFkZHJlc3Ms
IGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlQWRkcmVzcywgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBTdHJpbmcmJiB1c2VyQWdlbnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8g
c29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5p
cXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxv
Y2FsQWRkcmVzcywgcmVtb3RlQWRkcmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVl
PExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJX
ZWJSVENTb2NrZXQ6OlR5cGU6OkNsaWVudFRDUCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNz
KTsKICAgICBzb2NrZXQtPnNldFN0YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVElO
Ryk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgp
KTsKIApAQCAtOTYsNyArOTYsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENT
b2NrZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0
aW9uU29ja2V0KExpYldlYlJUQ1NvY2tldCYgc2VydmVyU29ja2V0LCB1aW50NjRfdCBuZXdDb25u
ZWN0aW9uU29ja2V0SWRlbnRpZmllciwgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVB
ZGRyZXNzKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENT
b2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0
OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCks
IHJlbW90ZUFkZHJlc3MpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENT
b2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0
OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCks
IHJlbW90ZUFkZHJlc3MpOwogICAgIHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpT
VEFURV9DT05ORUNURUQpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCks
IHNvY2tldC5nZXQoKSk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmRldGFjaChMaWJXZWJSVENTb2NrZXQmIHNvY2tldCkKIAogcnRjOjpBc3luY1Jl
c29sdmVySW50ZXJmYWNlKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVBc3luY1Jlc29s
dmVyKCkKIHsKLSAgICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENS
ZXNvbHZlcj4oKytzX3VuaXF1ZVJlc29sdmVySWRlbnRpZmllcik7CisgICAgYXV0byByZXNvbHZl
ciA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50
aWZpZXIpOwogICAgIGF1dG8qIHJlc29sdmVyUG9pbnRlciA9IHJlc29sdmVyLmdldCgpOwogICAg
IG1fcmVzb2x2ZXJzLnNldChyZXNvbHZlclBvaW50ZXItPmlkZW50aWZpZXIoKSwgV1RGTW92ZShy
ZXNvbHZlcikpOwogICAgIHJldHVybiByZXNvbHZlclBvaW50ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyLmgKaW5kZXggMmQxZTg0MjQ3YmQwYTMwYzk0ZDFmMmVhMzAxZGQ1NWQwMmE2ZTA3
Ni4uYjI3MTNmNDZjMWZjMTNjOWYyN2JiZTM5Y2E1ZGM1MTg1MGIxODNlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJQYWdlOwogY2xh
c3MgV2ViUHJvY2VzczsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBX
ZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyKFdlYlByb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApp
bmRleCAxNmExYTdmODM0NDYwNTNmMzNkNjU0ZTgzMzMyMjk1MGVlOTk0ZDcyLi5kNzNmMWYxNmY4
OTA3NjljNzJjYzlkZDQ0MGQyMjkyMWZmNWZmYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93
c2VyRnVuY3MuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJv
dGVjdG9yIHsKICAgICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihOZXRzY2Fw
ZVBsdWdpbiogcGx1Z2luKQogICAgIHsKICAgICAgICAgaWYgKHBsdWdpbikKLSAgICAgICAgICAg
IG1fcHJvdGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVnaW5E
ZXN0cnVjdGlvblByb3RlY3Rvcj4oc3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29udHJv
bGxlcigpKTsKKyAgICAgICAgICAgIG1fcHJvdGVjdG9yID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250
cm9sbGVyOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcj4oc3RhdGljX2Nhc3Q8UGx1Z2luKj4o
cGx1Z2luKS0+Y29udHJvbGxlcigpKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCmluZGV4IDY5YTNjOTNmMTMyNmZhNGM2ZjdmZWJmOGFiMWIyY2E0Yzc3NmJj
MGUuLjU5ZjQ4MjUxZjI4ODU0YzZkMTY4MGIxZDY0ZGZhYTVhNDdjNjgxMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCB1aW50MzJfdCBOZXRzY2FwZVBsdWdp
bjo6c2NoZWR1bGVUaW1lcih1bnNpZ25lZCBpbnRlcnZhbCwgYm9vbCByZXBlYXQsIHZvaWQgKCp0
aQogICAgIC8vIEZJWE1FOiBIYW5kbGUgd3JhcHBpbmcgYXJvdW5kLgogICAgIHVuc2lnbmVkIHRp
bWVySUQgPSArK21fbmV4dFRpbWVySUQ7CiAKLSAgICBhdXRvIHRpbWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUaW1lcj4odGhpcywgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsK
KyAgICBhdXRvIHRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4odGhpcywgdGltZXJJRCwgaW50ZXJ2
YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKICAgICAKICAgICAvLyBGSVhNRTogQmFzZWQgb24gdGhl
IHBsdWctaW4gdmlzaWJpbGl0eSwgZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgdGhyb3R0bGUgdGhl
IHRpbWVyLCBvciBpZiB3ZSBzaG91bGQgc3RhcnQgaXQgYXQgYWxsLgogICAgIHRpbWVyLT5zdGFy
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggZTBhYmMyYzdiNDEyOTkzMDAyYmJhYjhiZGZh
YjdmMjY1MWFkYzU3Zi4uYjZjNzZiNmVkNzE0Y2FhYTNhNDFkZGU0MWMxZDZhMTA0ZmI3YWVjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0zMDgsNiArMzA4LDcgQEAgY2xhc3MgTmV0c2NhcGVQ
bHVnaW4gOiBwdWJsaWMgUGx1Z2luIHsKICAgICBWZWN0b3I8Ym9vbCwgOD4gbV9wb3B1cEVuYWJs
ZWRTdGF0ZXM7CiAKICAgICBjbGFzcyBUaW1lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaW1lcik7CiAKICAgICBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMDQ5NjI4ZjVjNjI3
MDJlNGQ1ZDQxMTE4MjAxMjNiYTVmNGI5NjUyNC4uYmRhYTE0NDc4NDIyNjk1ZDUwZWE4NDhhYWZj
Y2JjZTEyZDJhZDkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAt
MTkzLDcgKzE5Myw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNv
bnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlICE9
IE5QX0FTRklMRU9OTFkpIHsKICAgICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAgICAgICAg
ICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7
CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPHVpbnQ4X3Q+
PigpOwogCiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5yZXNlcnZlQ2FwYWNpdHkobV9kZWxpdmVy
eURhdGEtPnNpemUoKSArIGxlbmd0aCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5hcHBlbmQo
Ynl0ZXMsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAppbmRl
eCA0NGQxMWI1N2MzZWE2ZDUxOGMxOGQwNGI4MjJkMjg2ZDUzZTk2OGNmLi4wN2Q1NTZjM2I3ZmM2
MzcxOWMyYTI1NTllMGFhZDZjMjI2YzA3Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5jcHAKQEAgLTEzNiwxMCArMTM2LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2Fw
ZVBsdWdpblgxMT4gTmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0ZShOZXRzY2FwZVBsdWdpbiYgcGx1
CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKHBsdWdpbi5pc1dpbmRvd2VkKCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRp
c3BsYXksIHdpbmRvd0lEKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVn
aW5YMTE+KHBsdWdpbiwgZGlzcGxheSwgd2luZG93SUQpOwogI2VuZGlmCiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsK
IH0KIAogTmV0c2NhcGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2lu
JiBwbHVnaW4sIERpc3BsYXkqIGRpc3BsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgx
MS5oCmluZGV4IDQxZTliNmM5ZDg0Y2FhNDk1OGUzODViOWVkODBmZGQ3ZTExZGNhNWIuLjFmOWZk
ODdmYTNhMzBjOTM2MDQzOGVkNTk3ZGMzMmM4OTU4N2FmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRz
Y2FwZVBsdWdpblgxMS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTmV0c2NhcGVQbHVnaW47CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z2luWDExIGZpbmFsIDogcHVi
bGljIE5ldHNjYXBlUGx1Z2luVW5peCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gY3Jl
YXRlKE5ldHNjYXBlUGx1Z2luJik7CiAgICAgTmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVn
aW4mLCBEaXNwbGF5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Db250cm9sbGVyLmgKaW5kZXggYTFmODA3ZTFlNTUwNzIzZWZlZWExNzcxMzNiODFk
ZmY0ZDE3NmIzNS4uYjU3MmFhM2E1MzZkNDg1Y2I5YjgxN2ExNmUwMmMzMzJjNGJjMjExNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaApAQCAtMTU5LDYgKzE1OSw3IEBAIGNsYXNzIFBsdWdpbkNvbnRyb2xsZXIgewogCiAgICAg
Ly8gSGVscGVyIGNsYXNzIGZvciBkZWxheWluZyBkZXN0cnVjdGlvbiBvZiBhIHBsdWctaW4uCiAg
ICAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgeworICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBsdWdpbkRlc3Ry
dWN0aW9uUHJvdGVjdG9yKFBsdWdpbkNvbnRyb2xsZXIqIHBsdWdpbkNvbnRyb2xsZXIpCiAgICAg
ICAgICAgICA6IG1fcGx1Z2luQ29udHJvbGxlcihwbHVnaW5Db250cm9sbGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGYzN2My
Y2MyNGUzZGQ5NzYzZjNlYmRkNjMyZDhiZmRiNzcxNDQzNDcuLjlhYjU4MzczMGI4OWRiZDk2MDFk
NjUyMGVmOGY5YjBiZTAwNmRjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBQbHVnaW5Qcm94
eTo6aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIG1fY29ubmVj
dGlvbi0+YWRkUGx1Z2luUHJveHkodGhpcyk7CiAKICAgICAvLyBBc2sgdGhlIHBsdWctaW4gcHJv
Y2VzcyB0byBjcmVhdGUgYSBwbHVnLWluLgotICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPigpOwor
ICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyA9IG1ha2VVbmlxdWU8UGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzPigpOwogCiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzLT5wbHVnaW5JbnN0YW5jZUlEID0gbV9wbHVnaW5JbnN0YW5jZUlEOwogICAgIG1fcGVu
ZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+d2luZG93TlBPYmplY3RJRCA9IHdpbmRvd05Q
T2JqZWN0SUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKaW5kZXggN2FiODk2NmRiOTA1YWRkMTIzOTQ4MTY1MGIxOWRlNGE3ZTdkMjIzZi4u
MTE5ZDJiOTBjMmI0NDIzMWYyNTY5NTdlNjJkZGNhOGYxMzBmYzczMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTg5OCw3ICs4OTgs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50
KE1vdXNlRXZlbnQmIGV2ZW50KSBjb25zdAogICAgIGlmIChldmVudC5tZXRhS2V5KCkpCiAgICAg
ICAgIG1vZGlmaWVycy5hZGQoV2ViRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk1vdXNlRXZlbnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQu
YnV0dG9ucygpLCBtX3BsdWdpbi0+Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQub2Zm
c2V0WCgpLCBldmVudC5vZmZzZXRZKCkpKSwgZXZlbnQuc2NyZWVuTG9jYXRpb24oKSwgMCwgMCwg
MCwgY2xpY2tDb3VudCwgbW9kaWZpZXJzLCBXYWxsVGltZSB7IH0sIDApOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFdlYk1vdXNlRXZlbnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQuYnV0dG9ucygpLCBt
X3BsdWdpbi0+Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQub2Zmc2V0WCgpLCBldmVu
dC5vZmZzZXRZKCkpKSwgZXZlbnQuc2NyZWVuTG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3Vu
dCwgbW9kaWZpZXJzLCBXYWxsVGltZSB7IH0sIDApOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Omhh
bmRsZUV2ZW50KEV2ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cAppbmRleCA2ZmMwOWM0ZjY1YjI0NWI2MGJmNGQ0ZjU5N2E5ZjkwYWQ0ZDBhYWY5Li5hMWZmMDMz
YjIwNGVhZmFkYzg4OGE4MjA4YTg5Zjc5ZGEwMGJjZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckNv
bnQKIAogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgbW92ZWQgZGlyZWN0bHkg
dG8gV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbgogICAgIC8vIElmIGl0IHdl
cmVuJ3QgZm9yIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCdzIGRlcGVuZGVuY2Ugb24g
V2ViRG9jdW1lbnRMb2FkZXIsIHRoaXMgY291bGQgYWxyZWFkeSBoYXBwZW4uCi0gICAgYXV0byBm
cmFtZUxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckZyYW1lTG9h
ZGVyQ2xpZW50PigqdGhpcywgc2Vzc2lvbklELCBtX3BhZ2VJRCwgKyttX3ByZXZpb3VzU2Vydmlj
ZVdvcmtlcklELCBlZmZlY3RpdmVVc2VyQWdlbnQpOworICAgIGF1dG8gZnJhbWVMb2FkZXJDbGll
bnQgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4oKnRoaXMsIHNl
c3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZmZWN0aXZl
VXNlckFnZW50KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJh
bWUgPSBmcmFtZUxvYWRlckNsaWVudC5nZXQoKTsKICAgICBtX2xvYWRlcnMuYWRkKFdURk1vdmUo
ZnJhbWVMb2FkZXJDbGllbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCmluZGV4IDkyMGRlZDA0MGNlNTYxODMzOTlmNmM5
M2I4MmViMzZkZjczMDQ5NmEuLjkzMGU0NjE4MTllMTg2ZjVhODBkOGY2NzE2ZmIxMThjNGRjMGVh
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09y
aWdpblRhYmxlLmgKQEAgLTM3LDYgKzM3LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTV09yaWdpblRhYmxlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTV09yaWdpblRhYmxlKCkgPSBk
ZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggNGRmNmYw
MTllNTU4NTc1NTJjODRkZmFiOTI1MGM0MDFhODRjYjgzNS4uZjRjZjI5MWE0MDEwYjFlN2MyNDE2
N2Q0NTRiNTRlYzRiODY0YzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQu
aApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAK
IGNsYXNzIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5h
dGl2ZVRleHRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChXZWJQYWdlKik7CiAgICAgdmly
dHVhbCB+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDNjODcyZjVhZGYzOWJlYWNkM2E3MDY2N2IyNjg5ZDM4YzliMTExMmUuLjRkMjc0NzY4NjIw
ZTVhNDZlYjk1MDhmZGU0N2I1NzFlNzk2ZjE3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBA
IC03OTMsNyArNzkzLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwKIAogc3RkOjp1bmlxdWVf
cHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29s
b3JDaG9vc2VyQ2xpZW50JiBjbGllbnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29sb3JDaG9vc2VyPigmbV9wYWdlLCAmY2xp
ZW50LCBpbml0aWFsQ29sb3IpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvbG9yQ2hvb3Nl
cj4oJm1fcGFnZSwgJmNsaWVudCwgaW5pdGlhbENvbG9yKTsKIH0KIAogI2VuZGlmCkBAIC04MDIs
NyArODAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50
OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2wKIAogc3RkOjp1bmlxdWVfcHRyPERh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIoRGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1f
cGFnZSwgJmNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyPigmbV9wYWdlLCAmY2xpZW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKaW5kZXggY2VkMzZhNmMyNWI3ZTRmODM0NGE1ODk5NDAwNjc5MWY3Y2M5Mjc2Zi4uZDQ1NTZk
OTg3YTM2NmQxODExNDA4YWQ5MGJmN2EzNDdkZDU5OGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApA
QCAtNDEsNiArNDEsNyBAQCBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNz
IFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVu
dChXZWJQYWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggNmMyOWI0ZTA4
MTI2ZTdjZDY2NzljYzQ3MDIzNWM1NTc0ZGU1MGQyZS4uYzFjODljZDk5ZTg3YWVlODRlZDU3NDZj
MmU4MWY2NDdlODJmMWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTM1LDYg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJD
b250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVD
bGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
CmluZGV4IDFhZDRjM2RlMmNiN2QzOGU2MjYyYzE5N2FhYjI0Y2NhNmZlZGE4MjEuLmIyNGVjZjc2
YzQ1NTI0ZjYwZDg2YWVkNmZiMWVjZjZmMGYzOTQyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzUs
NiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdl
YkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJQYWdlKiBwYWdl
KQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDI2ODEwMmZl
YTFhNzc1N2VkN2UxNmRkZWNjZTNjYWQ4ZWU2YmQ0MzUuLmQyMmQ0Y2I3M2YyOTczZjU2NTVhODcz
ZWJkMjJkNmIwMDZhZTBmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJFZGl0b3JDbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6
VGV4dENoZWNrZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkVkaXRvckNsaWVudChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShw
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCAzMGY1YWQ2YjRiYzJhNjM4ZDYw
MzdmOGVjOTczODA5ZGY2ZTU2YjE4Li4zNWEzMWZjMmEzNDRiMzEyODczMDUwNGI3ZmU3YTExNWYw
MTFiODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9u
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQ
YWdlJiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcAppbmRleCA3Y2RhYWNkMWZjMWQ0NmQ2NWVhZGMzZjNhNjEzNGFhMzU1OGEyZDExLi5kNjdi
NjJjMDJlNjg4M2I0NDg2NWZiYTE1ODUxNmVhMGNiY2I1YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpz
aG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICB9CiAKICAgICBpZiAoIW1f
cGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCkKLSAgICAgICAgbV9wYWludEluZGljYXRvckxheWVy
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ+KCp0
aGlzKTsKKyAgICAgICAgbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxS
ZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ+KCp0aGlzKTsKIAogICAgIGF1dG8gcGFpbnRMYXll
ciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmdyYXBoaWNz
TGF5ZXJGYWN0b3J5KCksICptX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQpOwogICAgIApAQCAt
MTYyLDkgKzE2Miw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBwYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
Q29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMC4yZikpOwogCiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qg
ZmFkZUtleWZyYW1lcyhBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7Ci0gICAgZmFkZUtleWZyYW1l
cy5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCAxKSk7Cisg
ICAgZmFkZUtleWZyYW1lcy5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigw
LCAxKSk7CiAKLSAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0
QW5pbWF0aW9uVmFsdWU+KDAuMjUsIDApKTsKKyAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChtYWtl
VW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAuMjUsIDApKTsKICAgICAKICAgICBhdXRvIG9w
YWNpdHlBbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwogICAgIG9wYWNpdHlBbmltYXRp
b24tPnNldER1cmF0aW9uKDAuMjUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGY1ZWNj
NjRjOTIzZjM4NmM1MGU3YjUyOTc3ZWZjMDk5ZTBiY2ZhZDYuLjI3YzNlZTE0MmUxNjE2ZTQzNWY0
OGQ0MWYyNzI3MTVmZThlMDM4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTQyLDYg
KzQyLDcgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVu
dDsKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudCwgcHJpdmF0ZSBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIGZyaWVuZCBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJD
bGllbnQ7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggNTMzYmU4NDBjYWQ3
MTQ1NTVkYWYwYWEyMDcyOGEzYzkzMzU1YzliZS4uNGJiMzdmZGQ2MDc3NzRlZDgwOWE5NjdhNzc1
MTVmYmFmYjZlZjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDE2MzdhZDEwOTdkNzY0OWU1MGRmNzRm
NWUwNjIyNzI3MWZhYjg0NWEuLjAwY2MwYTA4ZDkyNjA0ZmRkZmI1Y2E2MmY2Yjg4NTk1YzMxYWIw
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25D
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb3RpZmljYXRpb25DbGllbnQoV2Vi
UGFnZSopOwogICAgIHZpcnR1YWwgfldlYk5vdGlmaWNhdGlvbkNsaWVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRP
dmVycmlkZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCmluZGV4IDc5MDA4NGNlNDhkMjI2YjEwZTY2NWI4Mjg0
NDM0OWZkYWFmZmVlNDYuLjY5ZjBhZTgyNzk1MDdiNzI5NjVmNjVjMjE2ODczYzQ4MWFkZjRkNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
dm9pZCBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjphZGRPdmVycmlkZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHIKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3ZlcnJpZGVz
TWFwLmFkZChwYXN0ZWJvYXJkTmFtZSwgbnVsbHB0cik7CiAKICAgICBpZiAoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8dWludDhfdD4+PiB0eXBlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywg
VmVjdG9yPHVpbnQ4X3Q+Pj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3Ry
aW5nLCBWZWN0b3I8dWludDhfdD4+PiB0eXBlTWFwID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPHVpbnQ4X3Q+Pj4oKTsKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IFdURk1vdmUodHlwZU1hcCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKaW5kZXggZjZl
MDE0OTU3ZWRjMjc3ZGI5ODM3MzEyN2VjMTA2M2U5MzU1OGNiOC4uY2Y5MGE1ZGZjZmRhNjNlY2I5
ODk3Y2M2NmQwZDQ4MTI5NDQ4MTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaApAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBsdWdJ
bkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpQbHVnSW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlBsdWdJbkNsaWVudChXZWJQ
YWdlJik7CiAgICAgdmlydHVhbCB+V2ViUGx1Z0luQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jl
c3NUcmFja2VyQ2xpZW50LmgKaW5kZXggNWRkNjViZmEwZDUwY2NmZGIxNDYxZmViM2ZlNTI0MWZj
YWEwZmJhNi4uNjNkNzc0ZTVhOTQyN2M3MzViNTI0OTBiZDAxY2Q3OWFiNzRhMTBlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNz
VHJhY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlByb2dyZXNzVHJhY2tlckNs
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXJDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlByb2dyZXNzVHJh
Y2tlckNsaWVudChXZWJQYWdlJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xp
ZW50LmgKaW5kZXggZWFkMTdkMzBmMDU5MGQ3NDQ2NzIwNTVjYWQ3N2Q5NWM2ZDBhNDc3MC4uN2Jk
ODc1OTA1YTY1Yzc3ZDk2YzNmNzg4NDAwMTg1ODJjZmFmNzZjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hTeW50aGVzaXNDbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYlBhZ2U7CiAgICAgCiBjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQoV2ViUGFn
ZSYgcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApp
bmRleCAxMDkzMDQ1M2NlNzk3ZWRkOTBkZTc2ZjAzNTRiOWExZDQwNmYyZTZlLi42OTUyMTc0Yjkx
MmM5NzFlMzU3ODZlMjdjNDgyMjVkMmZjYTE0MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5o
CkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViVXNlck1lZGlhQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViVXNlck1l
ZGlhQ2xpZW50KFdlYlBhZ2UmKTsKICAgICB+V2ViVXNlck1lZGlhQ2xpZW50KCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCmluZGV4IDAwYTFlMmU4ZTI2MzM1NjNj
MzA2OTk4ZGQxNWEyMThiOTZkMTY1MTIuLjA3NDEzY2ZjOTM5ODVmZTVkOTllOTQwNjhmMTYxNWY0
YjI0NGM2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCkBAIC00
Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3Mg
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHkoV2ViUGFnZSYpOwogICAgIH5UZXh0Q2hlY2tpbmdDb250cm9sbGVy
UHJveHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCA5Y2ZmY2M5YTlmZDJiNjQ0NDkyMmY4
NTRhZDk3ZDFkMzMxZTcwYjBlLi5iMjQ1ODFjOTdlN2E4ODE2ZjQ2YWY5MzE5YTkxZWEyMWI3MmJk
NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBEcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoR3JhcGhpY3NMYXkKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TGF5ZXJGbHVz
aFNjaGVkdWxpbmdFbmFibGVkKHRydWUpOwogICAgIH0gZWxzZSB7CiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQotICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PExheWVyVHJlZUhvc3Q+KG1fd2ViUGFnZSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG1h
a2VVbmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQYWdlKTsKICNlbHNlCiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdCA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAppbmRleCBjMDczOTZmMDJmMWZh
NjVmNDVhY2VlNzJmMTM0ZjRmYjJkOWU4OTA5Li41MzU4Y2Q2ODYzYjMyMjY5NThlZTI3NGVmZDAz
MmFkMjAwNjRkZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdp
bmdBcmVhPiBEcmF3aW5nQXJlYTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBh
Z2UKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBj
YXNlIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbjoKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBh
cmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICBjYXNlIERyYXdp
bmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFn
ZSwgcGFyYW1ldGVycyk7CiAjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVTRShU
RVhUVVJFX01BUFBFUikKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZUNvb3JkaW5hdGVkR3JhcGhp
Y3M6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7
CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5oCmluZGV4IDBmMjY0MDNlYmI3MGE4MTFiMThlOTg3OTVlMTlkZTc3
NDBiZTgzNjAuLjFhNTM1ZjE3ZDk3ZjY2NjgzOTcyNjlhODZlMjg1N2IyOWI5NzJhMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApA
QCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNs
YXNzIEZpbmRDb250cm9sbGVyIDogcHJpdmF0ZSBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShGaW5kQ29udHJvbGxlcik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNDUyZjUzYmNlZGMwMDQ3ZjczM2QxYzM0YmNk
NzY1MTE5MmNiOGJlNi4uNDZlOGFhMDk5ODY0NWE4Y2U1ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAg
LTIyMCw3ICsyMjAsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2lu
Z1N0b3JlKCkKICAgICBBU1NFUlQobV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsK
IAogICAgIGlmICghbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU+KHRoaXMpOworICAgICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1
ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4odGhpcyk7CiAKICAgICB1cGRhdGVCYWNraW5nU3Rv
cmUoKTsKIH0KQEAgLTUyMSw3ICs1MjEsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnRyYW5zZm9ybSgpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQog
ewotICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9y
bWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90
ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1D
aGFuZ2VkKTsKIH0KIApAQCAtNTMyLDcgKzUzMiw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBt
X3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9u
TWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0K
IApAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRPcGFj
aXR5KGZsb2F0IHZhbHVlKQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewotICAgIG1fcHJvcGVydGllcy5m
aWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJPcGVyYXRpb25zPihmaWx0ZXJzKTsKKyAg
ICBtX3Byb3BlcnRpZXMuZmlsdGVycyA9IG1ha2VVbmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmls
dGVycyk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6RmlsdGVyc0NoYW5nZWQpOwogfQogCkBAIC04MjYsNyArODI2LDcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFNoYXBlUm91bmRlZFJlY3QoY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFIKICAgICBpZiAobV9wcm9wZXJ0aWVzLnNoYXBlUm91
bmRlZFJlY3QgJiYgKm1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID09IHJvdW5kZWRSZWN0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9
IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgIG1f
cHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0
Pihyb3VuZGVkUmVjdCk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U2hhcGVSb3VuZGVkUmVjdENoYW5nZWQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGVUaWxlZEJhY2tpbmcuY3BwCmluZGV4IDFjYmQxYjRiYTc5YTdkZjljZTU1ZTA0MjFkNDRlNjVi
NDA4ODIxYzIuLjA5OTUzNmI5M2MwMTFhYzNmMmEwNzNjM2NhNDY0ZjA3MjY0NjljZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVU
aWxlZEJhY2tpbmcuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZVRpbGVkQmFja2luZyhMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQogICAgIDogUGxhdGZv
cm1DQUxheWVyUmVtb3RlKGxheWVyVHlwZSwgb3duZXIsIGNvbnRleHQpCi0gICAgLCBtX3RpbGVD
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHRoaXMpKQorICAgICwg
bV90aWxlQ29udHJvbGxlcihtYWtlVW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlzKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tCmluZGV4IDVlNTBlMGJhMWVmMTI0NmM2YWUwOGYyOWQ5MmE4MzBlMGRiNGYyMzcuLjQ0NDZm
MzRkMDRjY2ZiZmJlYjM2OWJhNDRjMzIwNmJmMGRkMjNlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTU4LDcgKzU4LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogRHJhd2luZ0FyZWEoRHJh
d2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRp
Zmllciwgd2ViUGFnZSkKLSAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dChzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+KHdlYlBhZ2UpKQorICAgICwgbV9yZW1vdGVM
YXllclRyZWVDb250ZXh0KG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFn
ZSkpCiAgICAgLCBtX3Jvb3RMYXllcihHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXll
ckZhY3RvcnkoKSwgKnRoaXMpKQogICAgICwgbV9sYXllckZsdXNoVGltZXIoKnRoaXMsICZSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpCiB7CkBAIC00MjMsNyArNDIzLDcg
QEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OldpbGxDb21taXRM
YXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkpKTsKIAogICAgIE1lc3Nh
Z2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVz
c2FnZShsYXllclRyYW5zYWN0aW9uLCBzY3JvbGxpbmdUcmFuc2FjdGlvbik7Ci0gICAgYXV0byBj
b21taXRFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVy
TmFtZSgpLCBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0
TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIGNv
bW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCks
IE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRy
ZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgIGNvbW1pdEVuY29kZXIt
PmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBi
YWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmVDb2xsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGFhZGUzZDlm
MTg0NGQ3ZjA1YzA5MjE4ZDhlMjA0NGQ1OGEyZjA1ZjguLmIyYmRjNDFiNzIzMzZiYjZlNDg0OTBm
NzMxYjI0ODVkMjcwNzgyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTQw
LDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdlJik7CiAgICAgflZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAppbmRleCA2MGNmZDhkMmExNzU0YTdhY2VkNThkNjFkZjE3YmU0YzE0MzEzNjk0Li5iZGQ0
YjM5NTI1NGE3MTY3NjM5YWVjZDczODYwZTA3MmQ2OWM0MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgUmVm
PFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFn
ZSwgV2ViQ29yZTo6RnJhbWUqIGMKIAogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3Vi
ZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewotICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CisgICAgYXV0byBmcmFtZSA9
IGNyZWF0ZShtYWtlVW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKICAgICBwYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCkpKTsKIAogICAgIGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3Jl
UGFnZSgpLCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTMz
NjU3MGQ5M2FhNTExMDY5Nzg1NjExNzAyNjA4OTNiOGEzY2RiNC4uZGIzMmRhNDgxMzllMTlmNzE0
MjEyNTY1NDBhMjE2MzIzNGNjOTEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4MywyMSArMzgzLDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKICAgICAsIG1fdGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5KG1ha2VVbmlxdWVSZWY8
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5PigqdGhpcykpCiAjZW5kaWYKICNpZiBQTEFURk9S
TShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQotICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRo
aXMpKQorICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKG1ha2VVbmlxdWU8Vmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQogI2VsaWYgRU5BQkxFKEFDQ0VTU0lC
SUxJVFkpICYmIFBMQVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxs
cHRyKQogI2VuZGlmCiAgICAgLCBtX3NldENhblN0YXJ0TWVkaWFUaW1lcihSdW5Mb29wOjptYWlu
KCksIHRoaXMsICZXZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCkKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAg
LCBtX2NvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZUNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlmCi0gICAgLCBtX2VkaXRvckNsaWVudCB7IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KLSAg
ICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZv
cm1DbGllbnQ+KCkpCi0gICAgLCBtX2xvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCkpCi0gICAgLCBtX3Jlc291cmNlTG9h
ZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9h
ZENsaWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCisgICAgLCBtX2VkaXRvckNsaWVudCB7IG1ha2VV
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KKyAgICAsIG1fZm9y
bUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCisg
ICAgLCBtX2xvYWRlckNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VM
b2FkZXJDbGllbnQ+KCkpCisgICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKSkKKyAgICAsIG1fdWlDbGll
bnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCiAgICAg
LCBtX2ZpbmRDb250cm9sbGVyKG1ha2VVbmlxdWVSZWY8RmluZENvbnRyb2xsZXI+KHRoaXMpKQot
ICAgICwgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFn
ZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yVGFy
Z2V0Q29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVy
PigqdGhpcykpCiAgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQp
KQogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIobWFrZVVuaXF1ZVJlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlcj4oKnRoaXMpKQpAQCAtNDY0LDIxICs0NjQsMjEgQEAgV2ViUGFnZTo6V2ViUGFnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCA9IG5ldyBXZWJQbHVnSW5D
bGllbnQoKnRoaXMpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5G
cmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5w
cm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KCp0aGlz
KTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi5wZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0
aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9n
Z2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhp
cyk7CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViR0xTdGF0
ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMU3RhdGVUcmFja2VyPihbdGhpc10oYm9v
bCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpIHsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi53
ZWJHTFN0YXRlVHJhY2tlciA9IG1ha2VVbmlxdWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlzXShi
b29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkgewogICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNldElzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTChpc1VzaW5nSGln
aFBlcmZvcm1hbmNlV2ViR0wpKTsKICAgICB9KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNQRUVD
SF9TWU5USEVTSVMpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ+KCp0aGlzKTsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi5zcGVlY2hTeW50aGVzaXNDbGllbnQgPSBtYWtlVW5pcXVlPFdl
YlNwZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlzKTsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2Vi
VmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlzKTsKICNlbmRpZgogCiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSAmV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKTsKQEAgLTQ5MywxNCArNDkzLDE0IEBAIFdlYlBh
Z2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBw
YWdlQ29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOworICAgIHBhZ2VD
b25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA9IG1ha2VVbmlxdWU8
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlv
bk1hbmlmZXN0ID0gcGFyYW1ldGVycy5hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCiAKLSAg
ICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKKyAgICBtX3BhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24pKTsKIAogICAgIC8vIFNldCB0aGUgc2Vzc2lvbklEICpiZWZvcmUqIHVwZGF0aW5nIHRo
ZSBwcmVmZXJlbmNlcyBhcyB0aGUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBwcmVmZXJlbmNlcyBt
YXkgbmVlZCB0byBvdmVycmlkZSBpdC4KICAgICBpZiAocGFyYW1ldGVycy5zZXNzaW9uSUQuaXNW
YWxpZCgpKQpAQCAtODUzLDcgKzg1Myw3IEBAIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVD
b250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZUNvbnRleHRNZW51Q2xpZW50PiYmIGNvbnRleHRNZW51Q2xpZW50KQogewogICAgIGlmICghY29u
dGV4dE1lbnVDbGllbnQpIHsKLSAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOwor
ICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4
dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdQogdm9pZCBXZWJQYWdl
OjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCkKIHsKICAgICBpZiAoIWVk
aXRvckNsaWVudCkgewotICAgICAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOworICAgICAgICBtX2VkaXRvckNs
aWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBXZWJQYWdl
OjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmpl
Y3RlZEJ1bmRsZToKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGll
bnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICAg
ICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xp
ZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04ODQsNyArODg0LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkYKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9h
ZGVyQ2xpZW50PiYmIGxvYWRlckNsaWVudCkKIHsKICAgICBpZiAoIWxvYWRlckNsaWVudCkgewot
ICAgICAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAgICAgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTkwNSw3ICs5MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmluaXRp
YWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRC
YXNlKgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PiYm
IGNsaWVudCkKIHsKICAgICBpZiAoIW1fcmVzb3VyY2VMb2FkQ2xpZW50KQotICAgICAgICBtX3Jl
c291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UmVzb3VyY2VMb2FkQ2xpZW50PigpOworICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwogICAg
IGVsc2UKICAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9
CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291
cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEIKIHZvaWQgV2ViUGFn
ZTo6c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PiYmIHVpQ2xpZW50KQogewogICAgIGlmICghdWlDbGllbnQp
IHsKLSAgICAgICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgICAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTE0MTAsMTQgKzE0MTAsMTQgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIG1fY29udGV4dE1lbnVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNs
aWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKLSAgICBtX2VkaXRv
ckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xp
ZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKLSAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAgICBtX2Vk
aXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50
PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
Rm9ybUNsaWVudD4oKTsKKyAgICBtX2xvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKICAgICBtX3BvbGljeUNsaWVudC5pbml0
aWFsaXplKDApOwotICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7Ci0gICAgbV91aUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50Pigp
OworICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOwogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBtX2Z1bGxTY3JlZW5DbGllbnQuaW5pdGlhbGl6ZSgwKTsKICNlbmRpZgpA
QCAtNDY5Niw3ICs0Njk2LDcgQEAgdm9pZCBXZWJQYWdlOjpiZWdpblByaW50aW5nKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvKQogI2VuZGlmCiAKICAgICBpZiAo
IW1fcHJpbnRDb250ZXh0KSB7Ci0gICAgICAgIG1fcHJpbnRDb250ZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcmludENvbnRleHQ+KGNvcmVGcmFtZSk7CisgICAgICAgIG1fcHJpbnRDb250ZXh0ID0g
bWFrZVVuaXF1ZTxQcmludENvbnRleHQ+KGNvcmVGcmFtZSk7CiAgICAgICAgIG1fcGFnZS0+ZGlz
cGF0Y2hCZWZvcmVQcmludEV2ZW50KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNw
cAppbmRleCA3MzU2NmExMzM4NWRlM2FhYzY0NmZiOTQ5NmJkZGFmY2I1YWY0NmI2Li4zMWVmZjEx
ZjdhZTBhM2ViOGNmYmI2ZmYyYjNkYmE1MTYyNGMxZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHAKQEAgLTIxMyw2ICsyMTMsNyBAQCBjbGFzcyBXZWJQcmludE9wZXJhdGlvbkd0a1dpbjMy
IGZpbmFsOiBwdWJsaWMgV2ViUHJpbnRPcGVyYXRpb25HdGsgewogI2VuZGlmCiAKIHN0cnVjdCBQ
cmludFBhZ2VzRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFByaW50UGFnZXNEYXRhKFdlYlByaW50T3BlcmF0aW9uR3RrKiBwcmludE9wZXJhdGlvbikKICAg
ICAgICAgOiBwcmludE9wZXJhdGlvbihwcmludE9wZXJhdGlvbikKICAgICAgICAgLCB0b3RhbFBy
aW50ZWQoLTEpCkBAIC03MjYsNyArNzI3LDcgQEAgdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6
cHJpbnQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBkb3VibGUgeERQSSwgZG91YmxlIHkKIHsK
ICAgICBBU1NFUlQobV9wcmludENvbnRleHQpOwogCi0gICAgYXV0byBkYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxQcmludFBhZ2VzRGF0YT4odGhpcyk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1
ZTxQcmludFBhZ2VzRGF0YT4odGhpcyk7CiAgICAgaWYgKCFkYXRhLT5pc1ZhbGlkKSB7CiAgICAg
ICAgIGNhaXJvX3N1cmZhY2VfZmluaXNoKHN1cmZhY2UpOwogICAgICAgICBwcmludERvbmUoaW52
YWxpZFBhZ2VSYW5nZVRvUHJpbnQoZnJhbWVVUkwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmluZGV4
IDlhYmIyYTc5Mjk5ZDU5NmI5MWU2ZWY2MWNhNDNlZjg2MTkwYTkwNDkuLjkzNDE4YWIyMWQ3NGZj
OTQ1OGEwMjI0ZTRjYjQ4YTczNDE3ODA5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTk4LDcg
Kzk4LDcgQEAgYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYg
c2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmUKICAgICBpZiAoIXRleHRJbmRpY2F0b3Ip
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fZmluZEluZGljYXRvck92ZXJsYXlDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TPihzZWxl
Y3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdldCgpKTsKKyAgICBtX2ZpbmRJbmRpY2F0b3JPdmVy
bGF5Q2xpZW50ID0gbWFrZVVuaXF1ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUz4oc2Vs
ZWN0ZWRGcmFtZSwgdGV4dEluZGljYXRvci5nZXQoKSk7CiAgICAgbV9maW5kSW5kaWNhdG9yUmVj
dCA9IGVuY2xvc2luZ0ludFJlY3QodGV4dEluZGljYXRvci0+c2VsZWN0aW9uUmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlcygpKTsKICAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5ID0gUGFnZU92ZXJs
YXk6OmNyZWF0ZSgqbV9maW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudCwgUGFnZU92ZXJsYXk6Ok92
ZXJsYXlUeXBlOjpEb2N1bWVudCk7CiAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5wYWdlT3Zl
cmxheUNvbnRyb2xsZXIoKS5pbnN0YWxsUGFnZU92ZXJsYXkoKm1fZmluZEluZGljYXRvck92ZXJs
YXksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RG9Ob3RGYWRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVu
dElPUy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0
b3JPdmVybGF5Q2xpZW50SU9TLmgKaW5kZXggNTM1Yjg0ZmI2NDI5YTk3ZjBjOThhOGVhYzE4NWQ5
ZGYyZWU5NDg1NC4uMDE1ZTMyZGIxODkzZTZhMDYyZDllM2E3Y2EwZGM1MmU5NDZkZDBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0
b3JPdmVybGF5Q2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TLmgKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElP
UyA6IHB1YmxpYyBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElP
UyhXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3IqIHRleHRJbmRp
Y2F0b3IpCiAgICAgICAgIDogbV9mcmFtZShmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCmluZGV4IDkwNjg3
Yzk3NGFjZjMzZDgyYjhjNjRiOTQ4ZTZlZTlhMzBlZTJlOWMuLjA2ZmNjNDcxNTkzZWI3OGVkZWJm
Y2M2M2Y4OTQ0YjNkZmFlOWRhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcApAQCAtODMsNyArODMsNyBAQCBi
b29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCiAg
ICAgaWYgKCFtX2hhc1NlbnRNZXNzYWdlKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6U3RhcnREaXNwbGF5TGluayhtX29ic2VydmVySUQsIGRpc3BsYXlJRCgpKSwgMCk7CiAg
ICAgICAgIG1faGFzU2VudE1lc3NhZ2UgPSB0cnVlOwotICAgICAgICBtX3J1bkxvb3BPYnNlcnZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0
aGlzXSgpIHsKKyAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BP
YnNlcnZlcj4oa0NGUnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7CiAgICAgICAgICAgICB0aGlzLT5t
X2ZpcnN0Q2FsbGJhY2tJbkN1cnJlbnRSdW5sb29wID0gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAg
ICAgIG1fcnVuTG9vcE9ic2VydmVyLT5zY2hlZHVsZShDRlJ1bkxvb3BHZXRDdXJyZW50KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGRmNjAwMzY0NTk4
ZjEzNDYyOWRhYjYyNzA2ZWFmNjg2MWU1ZmYzM2QuLjRjYjNkZjlhZWE1MjllZmY1MjYzMzZjODFm
MTMwMjA0NWJhM2UwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KQEAgLTg3LDcgKzg3LDcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMKICAgICBbbV9ob3N0
aW5nTGF5ZXIgc2V0T3BhcXVlOllFU107CiAgICAgW21faG9zdGluZ0xheWVyIHNldEdlb21ldHJ5
RmxpcHBlZDpZRVNdOwogCi0gICAgbV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+
KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0
aGlzXSgpIHsKKyAgICBtX2xheWVyRmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdl
YkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2Vy
dmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgewogICAg
ICAgICB0aGlzLT5sYXllckZsdXNoUnVuTG9vcENhbGxiYWNrKCk7CiAgICAgfSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA3YjQ4YTBmNzI0NjJmZmU1N2Zl
OTIwNmNiY2MwY2YzMzFjMzIxMWUxLi5jNzFjZDVmMjc0ZmY2MjJjNWQ0M2YzNTlmNjE1ZmQzN2Nm
MmQ2ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTcz
LDcgKzE1NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShXVEY6
OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbgogICAgIEFTU0VSVCghbV9wYWdl
TWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyKTsKICAgICBtX2NvdW50T2ZQYWdlc0ZhaWxp
bmdUb01hcmtWb2xhdGlsZSA9IDA7CiAKLSAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGls
ZUNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNv
dW50ZXI+KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoUmVmQ291bnRlckV2ZW50KSB7CisgICAgbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRp
bGVDb3VudGVyID0gbWFrZVVuaXF1ZTxQYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVy
PihbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFJlZkNvdW50ZXJFdmVudCkgewogICAgICAgICBpZiAobV9wYWdlTWFya2luZ0xheWVyc0FzVm9s
YXRpbGVDb3VudGVyLT52YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xODM4LDcg
KzE4MzgsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldEVuYWJsZWRTZXJ2aWNlcyhib29sIGhhc0lt
YWdlU2VydmljZXMsIGJvb2wgaGFzU2VsZWN0aW9uU2VydgogCiB2b2lkIFdlYlByb2Nlc3M6OmVu
c3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmll
cikKIHsKLSAgICBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk+KHNlc3Npb25JZGVudGlmaWVyKTsKKyAgICBtX2F1dG9t
YXRpb25TZXNzaW9uUHJveHkgPSBtYWtlVW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+
KHNlc3Npb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95QXV0b21h
dGlvblNlc3Npb25Qcm94eSgpCkBAIC0xODcxLDcgKzE4NzEsNyBAQCBib29sIFdlYlByb2Nlc3M6
Omhhc1Zpc2libGVXZWJQYWdlKCkgY29uc3QKIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6
OmxpYldlYlJUQ05ldHdvcmsoKQogewogICAgIGlmICghbV9saWJXZWJSVENOZXR3b3JrKQotICAg
ICAgICBtX2xpYldlYlJUQ05ldHdvcmsgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ05ldHdv
cms+KCk7CisgICAgICAgIG1fbGliV2ViUlRDTmV0d29yayA9IG1ha2VVbmlxdWU8TGliV2ViUlRD
TmV0d29yaz4oKTsKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0KIApAQCAtMTg4
Miw3ICsxODgyLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUcKICAgICAvLyBieSBjYWxsaW5n
IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0
byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAgLy8g
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCiAg
ICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25u
ZWN0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlw
Y0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCBwYWdlSUQsIHN0b3JlKSk7CisgICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBz
dG9yZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZDRjMDFiYWIxZjkz
ZGE5MDg1YjBmMjE5NGNkMzI3ZDQ3MTg2NTBiMi4uMmY0ZmI1MzBhYmNlZDdlZmM3Mzc2NDIyMzA5
ZmQzMTg4N2E0N2IwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0x
MzMsNiArMTMzLDcgQEAgY2xhc3MgV2ViUHJvY2VzcwogICAgICwgUHJvY2Vzc1Rhc2tTdGF0ZU9i
c2VydmVyOjpDbGllbnQKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBXZWJQcm9jZXNzJiBzaW5nbGV0b24oKTsKICAgICBzdGF0aWMg
Y29uc3RleHByIFByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OldlYkNvbnRl
bnQ7CkBAIC0xNDYsNyArMTQ3LDcgQEAgY2xhc3MgV2ViUHJvY2VzcwogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1
cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0
aGlzKSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1h
a2VVbmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nl
c3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVj
dGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggMjcyMGI4NmZjZDJmZmVlNjAy
MmY1YWQ1ZWVkNTBiY2YzNjkyZDdmOC4uOWFmMDBlZThhYTBmMWNkODQwYTgxNzM3OTBmYTA2MjMw
MDQ2ZmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZSB7CiAgICAgewogICAgICAgICBBU1NFUlQoZGV2aWNlVHlwZSAhPSBDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlOjpVbmtub3duKTsKICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6QXVkaW8pCi0g
ICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4o
bWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOworICAgICAg
ICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVS
ZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKTsKICAgICB9CiAKICAgICB+U291
cmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyLmgKaW5kZXggYmFlZDBjZDllMDliNDlkMjIxZTk0MDE4ZjY0OWZl
NmRiY2Y5MjUxOS4uYzFkNDNmY2IzYWY1ODQxNDUzYWQzNDM0YzdjZjkzZWJmYzllN2VmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgQ3Jvc3NQcm9jZXNzUmVhbHRp
bWVBdWRpb1NvdXJjZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpBdWRpb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMg
V2ViQ29yZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlDYXB0
dXJlRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoV2ViUHJvY2VzcyYpOwogICAgIH5Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYjQ3ZDFkOGFmYTAzZmVkMzZkZWNhZDk4OWQ3
MmRiYzQxODQ4N2Y1OS4uM2I5MDZhODBjNWFkOGY2OWJlZjc3ZjlhOGM3NjRhZjgwOWY0OTU2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRl
RGlkQ2hhbmdlKFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlcjo6VGFza1N0YXRlIHQKIAogICAgIC8v
IFdlIHdlcmUgYXdha2VuZWQgZnJvbSBzdXNwZW5zaW9uIHVuZXhwZWN0ZWRseS4gTm90aWZ5IHRo
ZSBXZWJQcm9jZXNzUHJveHksIGJ1dCB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gb24gb3VyIHBh
cmVudCBQSUQKICAgICAvLyB0byBlbnN1cmUgdGhhdCBpdCB0b28gaXMgYXdha2VuZWQuCi0gICAg
YXV0byB1aVByb2Nlc3NBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBl
Y3RlZGx5IHJlc3VtZWQiLCBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVh
c29uOjpGaW5pc2hUYXNrKTsKKyAgICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IG1ha2VVbmlx
dWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJv
Y2Vzc0lEKCksICJVbmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3Jv
dW5kLCBBc3NlcnRpb25SZWFzb246OkZpbmlzaFRhc2spOwogICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQ
cm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQoKSwgW3VpUHJvY2Vzc0Fzc2VydGlvbiA9
IFdURk1vdmUodWlQcm9jZXNzQXNzZXJ0aW9uKV0geyB9KTsKIH0KICNlbmRpZgpAQCAtNjIwLDcg
KzYyMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0
b3JVcGRhdGVSZWFzb24gcmVhc29uKQogICAgIH0KIAogICAgIGlmICghbV9jcHVNb25pdG9yKSB7
Ci0gICAgICAgIG1fY3B1TW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BVTW9uaXRvcj4oY3B1
TW9uaXRvcmluZ0ludGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVzYWdlKSB7CisgICAgICAgIG1f
Y3B1TW9uaXRvciA9IG1ha2VVbmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFs
LCBbdGhpc10oZG91YmxlIGNwdVVzYWdlKSB7CiAgICAgICAgICAgICBpZiAobV9wcm9jZXNzVHlw
ZSA9PSBQcm9jZXNzVHlwZTo6U2VydmljZVdvcmtlcikKICAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFNlcnZpY2Ugd29ya2VyIHByb2Nl
c3MgZXhjZWVkZWQgQ1BVIGxpbWl0IG9mICUuMWYlJSAod2FzIHVzaW5nICUuMWYlJSkiLCB0aGlz
LCBtX2NwdUxpbWl0LnZhbHVlKCkgKiAxMDAsIGNwdVVzYWdlICogMTAwKTsKICAgICAgICAgICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3lu
Y01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFu
YWdlci5jcHAKaW5kZXggMzY5MDk1Y2RhZDFkMzQ3MTFhMDY3NmQ4NzM2YTkwZTE5M2UyOTA1ZS4u
MjI4ZjRhMzZkNGIwZjIyMmMxNzg2MGQwYmM0OThjMWY5ZTA4OWEyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgUmVmPFN0b3JhZ2VTeW5jTWFuYWdlcj4gU3RvcmFnZVN5bmNNYW5hZ2VyOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBwYXRoKQogfQogCiBTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VT
eW5jTWFuYWdlcihjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBtX3RocmVhZChzdGQ6Om1ha2Vf
dW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCisgICAgOiBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3Jh
Z2VUaHJlYWQ+KCkpCiAgICAgLCBtX3BhdGgocGF0aC5pc29sYXRlZENvcHkoKSkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUaHJlYWQuY3BwCmluZGV4IDQ0MzkzODI5NWY0ZTFjMjlkZDA0ODZiNDMxYmE3ZmVhMzUy
OWQxNmQuLjljNzUxNGUzNDYyYzRiNGQ4YTg1NjA1ZWQwMjlkYmQxOTI1ZDZiMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1
ZXVlLmtpbGxlZCgpICYmIG1fdGhyZWFkKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVl
dWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24p
KSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVu
Y3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CisgICAgbV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxG
dW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKICAgICAgICAgcGVyZm9ybVRlcm1pbmF0ZSgpOwog
ICAgIH0pKTsKICAgICBtX3RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGI5MzRkMWEzYjFi
YWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNmNzdmYTIuLjgwNmNiMDk5NWQwYTA3YzcxODI3MWQyMTA1
MDcwMzk4YzQwM2JjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBTdG9yYWdlVHJhY2tlciYgU3RvcmFnZVRy
YWNrZXI6OnRyYWNrZXIoKQogU3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0
cmluZyYgc3RvcmFnZVBhdGgpCiAgICAgOiBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0b3JhZ2VQ
YXRoLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9jbGllbnQoMCkKLSAgICAsIG1fdGhyZWFkKHN0
ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICAsIG1fdGhyZWFkKG1ha2VVbmlx
dWU8U3RvcmFnZVRocmVhZD4oKSkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiAgICAgLCBtX25l
ZWRzSW5pdGlhbGl6YXRpb24oZmFsc2UpCiAgICAgLCBtX1N0b3JhZ2VEYXRhYmFzZUlkbGVJbnRl
cnZhbChkZWZhdWx0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXAuY3BwCmluZGV4IDQzZWE0NWRhZTg5MjA2YzgyOWE1MTRkNGRhOGUzZDFjOTdjYzEy
ODQuLjg1MWNjMTAxN2RlZDAwYzA2ZDQ2ZDJjODU5ZDcwMDAwYjZkNzJkNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN0b3JhZ2VTZXNzaW9uKGNv
bnN0IFAKIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQogewogICAgIGlmICghZGVmYXVsdE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgIGRlZmF1bHROZXR3b3Jr
U3RvcmFnZVNlc3Npb24oKSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gKmRl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAg
ICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNv
cHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAg
ICB9CiAKLSAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7
CisgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VuZGlmCiB9
CiAKQEAgLTEwMCwxMSArMTAwLDExIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpl
bnN1cmVTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvCiAgICAgICAg
ICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29r
aWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAg
ICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFn
ZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNl
c3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkp
OwogCiAjZWxpZiBVU0UoQ1VSTCkKICAgICBnbG9iYWxTZXNzaW9uTWFwKCkuZW5zdXJlKHNlc3Np
b25JRCwgW3Nlc3Npb25JRF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKICAg
ICB9KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAxODc2Yjk2
MGI5NDcwODE0YzM1MGJjNTkyNmE0YzgxYWVkZjM5MDIzLi43Yjg2OTgxYTNmNDhlNTBmOGIzY2Nh
YzM3MDY5MTdkNGFmMWZkYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtMTU5
LDUgKzE1OSw1IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpTZXR0aW5ncz4gV2ViSW5zcGVjdG9yQ2xpCiAgICAgICAgICAgICBkZWxldGVT
ZXR0aW5nKG5hbWUpOwogICAgICAgICB9CiAgICAgfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGPigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1Mu
aAppbmRleCAzYjFhNDUwNzA3OGZhNGNjMDY4ZTc0MDMwMzIyMTIzOWIyYWQ3MTIzLi4xNDU3NzIy
MmE5ZTEzZTYzZTQ5MWQ2ZDNiOTJjYTFiYzg5ZTdjYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1Mu
aApAQCAtMjgsNiArMjgsNyBAQAogI2ltcG9ydCAiV2ViQ2hyb21lQ2xpZW50LmgiCiAKIGNsYXNz
IFdlYkNocm9tZUNsaWVudElPUyBmaW5hbCA6IHB1YmxpYyBXZWJDaHJvbWVDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudElP
UyhXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IFdlYkNocm9tZUNsaWVudCh3ZWJWaWV3KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4
ZWRQb3NpdGlvbkNvbnRlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQppbmRleCAyMTdhNGVkMGE4NWE2YmI0MTRk
MzE5NGNiN2JmYWVmZGUwMzZkNDdhLi5hZmUxMWE4MGI5ZjFjOWNlNzZhMzU2MmZhNjNjNDViZjcx
ZDExZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQpAQCAtNTIsNiArNTIs
NyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogc3RhdGljIExvY2sgd2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnREYXRhTG9jazsKIAogc3RydWN0IFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGEgewor
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBWaWV3cG9ydENvbnN0cmFp
bmVkTGF5ZXJEYXRhKCkKICAgICAgICAgOiBtX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Nyb2xsTGF5
ZXIobmlsKQogICAgIHsgfQpAQCAtNjIsNiArNjMsNyBAQCBzdHJ1Y3QgVmlld3BvcnRDb25zdHJh
aW5lZExheWVyRGF0YSB7CiB0eXBlZGVmIEhhc2hNYXA8UmV0YWluUHRyPENBTGF5ZXI+LCBzdGQ6
OnVuaXF1ZV9wdHI8Vmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YT4+IExheWVySW5mb01hcDsK
IAogc3RydWN0IFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YSB7CisgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkZpeGVkUG9zaXRpb25Db250ZW50
RGF0YShXZWJWaWV3ICopOwogICAgIH5XZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGEoKTsKQEAg
LTE3OCw3ICsxODAsNyBAQCAtICh2b2lkKXNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6KFdU
Rjo6SGFzaE1hcDxDQUxheWVyICosIHN0ZDo6dW5pcXVlX3B0cjxXZQogCiAgICAgZm9yIChhdXRv
JiBsYXllckFuZENvbnN0cmFpbnRzIDogbGF5ZXJNYXApIHsKICAgICAgICAgQ0FMYXllciogbGF5
ZXIgPSBsYXllckFuZENvbnN0cmFpbnRzLmtleTsKLSAgICAgICAgYXV0byBsYXllckRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+KCk7CisgICAgICAg
IGF1dG8gbGF5ZXJEYXRhID0gbWFrZVVuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRh
PigpOwogCiAgICAgICAgIGxheWVyRGF0YS0+bV9lbmNsb3NpbmdBY2NlbGVyYXRlZFNjcm9sbExh
eWVyID0gc3RpY2t5Q29udGFpbmVycy5nZXQobGF5ZXIpOwogICAgICAgICBsYXllckRhdGEtPm1f
dmlld3BvcnRDb25zdHJhaW50cyA9IFdURk1vdmUobGF5ZXJBbmRDb25zdHJhaW50cy52YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rvcnku
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5kZXgg
YThiNmEwNDM5M2VjMDAwMTQ2NTM4ZDRjZjY1YmQ2NDBjNzRiZDkwMS4uNWFkODFiNGEzYjQ5YjVk
MDYzOTM2NTY4M2ExYmNmNWQ1N2VmMzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtMTMzLDcgKzEzMyw3IEBAIC0gKGlkKWluaXQKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBfZW50cmllc0J5VVJMID0gW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBfZW50cmllc0J5RGF0ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKKyAgICBfZW50cmllc0J5RGF0ZSA9IG1ha2VVbmlx
dWU8RGF0ZVRvRW50cmllc01hcD4oKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXggYjcz
OTU5MzVlNTEwYmYzYjdmMGM0OGVkZDQzNmM1OGJiYzQ4MWQ4ZS4uODZmOWQzZDQyMjM4NDZiYzk1
Y2JjOTU2NDVhMWNhNzMyMGFmZTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0zNDgsNyArMzQ4LDcgQEAgLSAoaWQpaW5p
dEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICAg
ICAgY29yZShfcHJpdmF0ZSktPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAgICAgCiAg
ICAgaWYgKE5TQXJyYXkgKnJlZGlyZWN0VVJMcyA9IFtkaWN0IF93ZWJraXRfYXJyYXlGb3JLZXk6
cmVkaXJlY3RVUkxzS2V5XSkgewotICAgICAgICBhdXRvIHJlZGlyZWN0VVJMc1ZlY3RvciA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8gcmVkaXJlY3RV
UkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgcmVkaXJl
Y3RVUkxzVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtyZWRpcmVjdFVSTHMgY291bnRd
KTsKIAogICAgICAgICBmb3IgKGlkIHJlZGlyZWN0VVJMIGluIHJlZGlyZWN0VVJMcykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRleCBlMTdjNzg4MWE1MTdmMGMzNTVmODc1
NjliNjBkYTNmMjE1YTFlYmE3Li5mNWU3ZmJjZjEyZTQ3ZjkwZGVlZjFlYTJjZmViNzE3NDI2ODgw
YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtNDkzLDcgKzQ5Myw3
IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0dldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5KG1hY2hfcG9y
dF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAg
ICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVu
dFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmplY3RJRCkpOworICAgIGluc3Rh
bmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0SUQp
KTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAga2Vy
bl9yZXR1cm5fdCBXS1BDQm9vbGVhblJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQz
Ml90IHBsdWdpbklELCB1aW50MzIKICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJl
dHVybiBLRVJOX0ZBSUxVUkU7CiAgICAgCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJl
cGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVu
dFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApA
QCAtNTI4LDcgKzUyOCw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5BbmREYXRhUmVwbHko
bWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQsCiAgICAgICAgIHJldHVy
biBLRVJOX0ZBSUxVUkU7CiAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bHQgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZSgwLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0RGF0YSks
IHJlc3VsdExlbmd0aCkpOwotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1
ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29s
ZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwgcmVzdWx0KSk7CisgICAgaW5zdGFuY2VQcm94
eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJldHVyblZhbHVlLCByZXN1bHQpKTsK
ICAgICAKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQpAQCAtNTQ1LDcgKzU0NSw3IEBAIGtl
cm5fcmV0dXJuX3QgV0tQQ0luc3RhbnRpYXRlUGx1Z2luUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50
UG9ydCwgdWludDMyX3QgcGx1Z2luCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAgICBy
ZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5
KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwgcmVuZGVyQ29udGV4dElELCBzdGF0aWNf
Y2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5z
ZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQs
IHN0YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4ocmVuZGVyZXJUeXBlKSkpOwogICAgIHJldHVybiBL
RVJOX1NVQ0NFU1M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgK
aW5kZXggMTBhMDhlOTUwYTNkYzBjOTM2NzFmMWZjMWM3NGM5NDc3OTNhMDdlOC4uZTU2YTEwM2Ey
OGE3NjBmOWNlMGI5N2U3MWRkNmIyM2E2MGM1M2U4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5LmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveAogCiAgICAgLy8gUmVwbHkgc3RydWN0cwogICAgIHN0cnVjdCBSZXBseSB7CisgICAgICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZW51bSBUeXBlIHsKICAg
ICAgICAgICAgIEluc3RhbnRpYXRlUGx1Z2luLAogICAgICAgICAgICAgR2V0U2NyaXB0YWJsZU5Q
T2JqZWN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0
ZWQvUHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMjAyYzZkZWFmMTNkMDdjNmUzYTU2OThiMWNkYjU5
YTE5YjVkYTAzOS4uNTJiZjdiZDEyZTRlMzcxMmQzMTQ3NWUyYTUzOWE0MjhjZmY4ZmE0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94
eUluc3RhbmNlLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgTWV0aG9kKiBQcm94eUluc3RhbmNlOjpt
ZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBl
bnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBp
biB3YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKG5h
bWUuaW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYg
cmVwbHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
c3RkOjptYWtlX3VuaXF1ZTxQcm94eU1ldGhvZD4obWV0aG9kTmFtZSk7CisgICAgICAgIG1hcEFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5TWV0aG9kPihtZXRob2RO
YW1lKTsKIAogICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwog
fQpAQCAtMzk3LDcgKzM5Nyw3IEBAIEZpZWxkKiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBt
YXAgdW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBs
eS4KICAgICBhdXRvIG1hcEFkZFJlc3VsdCA9IG1fZmllbGRzLmFkZChuYW1lLmltcGwoKSwgbnVs
bHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3Vs
dCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOwogICAgIHJldHVy
biBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBs
dWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJI
b3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggOWM3MWEzY2M5MjNmMzNkMmUwYWIzOWEx
YmY2YjE0YjQ0M2U5NGQ0Yi4uZWUxOWM1NjdjMDFmYTE4YzVlOGRjNjFiMDhjODk0ZTUyMDAyZGFj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNjAsNiAr
NjAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAg
CiBjbGFzcyBTb2Z0d2FyZUNBUmVuZGVyZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFNvZnR3YXJlQ0FSZW5kZXJlcih1aW50MzJfdCBjb250
ZXh0SUQpCiAgICAgICAgIDogbV9jb250ZXh0IHsgW0NBQ29udGV4dCBsb2NhbENvbnRleHRdIH0K
QEAgLTE2OCw3ICsxNjksNyBAQCAtIChCT09MKWNyZWF0ZVBsdWdpbgogICAgICAgICByZXR1cm4g
Tk87CiAKICAgICBpZiAoX3Byb3h5LT5yZW5kZXJlclR5cGUoKSA9PSBVc2VTb2Z0d2FyZVJlbmRl
cmVyKQotICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9IHN0ZDo6bWFrZV91bmlxdWU8U29mdHdh
cmVDQVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRleHRJRCgpKTsKKyAgICAgICAgX3NvZnR3
YXJlUmVuZGVyZXIgPSBtYWtlVW5pcXVlPFNvZnR3YXJlQ0FSZW5kZXJlcj4oX3Byb3h5LT5yZW5k
ZXJDb250ZXh0SUQoKSk7CiAgICAgZWxzZQogICAgICAgICBbc2VsZiBjcmVhdGVQbHVnaW5MYXll
cl07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQppbmRleCBmN2FlZGJjZWQ0
ZDdmNWM0YmEzZTk2ZTM1NjFjYTdmMGIyNjVjOGFjLi44ZWMxYmY3OWVlMzJhMmFjMWJiY2Y3YTIx
ZTczZTdlMWUwMWRiMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KQEAgLTM1
LDcgKzM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
PiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3IKIHsKICAgICBzd2l0Y2ggKFtwbHVn
aW5WaWV3IGV2ZW50TW9kZWxdKSB7CiAgICAgY2FzZSBOUEV2ZW50TW9kZWxDb2NvYToKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJD
b2NvYT4ocGx1Z2luVmlldyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYk5ldHNjYXBl
UGx1Z2luRXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdpblZpZXcpOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKaW5kZXggNzA4Mzc3NmQyOGE3NWNmYjU0
MjUzM2Q5MGYzNzc4ZTg1YWJjZDFkMi4uYmJkOWM1ZDU4MjFmODVmNjVlYmM4Zjc3N2VjNjU1MjI5
ZDVlODlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oIgog
CiBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hIDogcHVibGljIFdlYk5l
dHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hKFdlYk5ldHNj
YXBlUGx1Z2luVmlldyopOyAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAwMmZmMjE4NmRmODRhOWE5
MGQ3ZTljMjZjMDc2Mjc5ZTMyMjExMzc4Li4xNjA2NjNlODYxZjcxMGViZmVkMWQ3Njg1NjVkZDIy
YTExNGU4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTY1NSw3ICsxNjU1LDcgQEAgLSAodWlu
dDMyX3Qpc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoodWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0
OihOUEJvb2wpcmVwZWF0IHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKCF0aW1l
cnMpCi0gICAgICAgIHRpbWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDx1aW50MzJfdCwg
c3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7CisgICAgICAgIHRpbWVycyA9IG1ha2VV
bmlxdWU8SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+KiBzbG90OwogICAgIHVpbnQzMl90
IHRpbWVySUQ7CkBAIC0xNjYzLDcgKzE2NjMsNyBAQCAtICh1aW50MzJfdClzY2hlZHVsZVRpbWVy
V2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCByZXBlYXQ6KE5QQm9vbClyZXBlYXQgdAog
ICAgICAgICB0aW1lcklEID0gKytjdXJyZW50VGltZXJJRDsKICAgICB3aGlsZSAoIXRpbWVycy0+
aXNWYWxpZEtleSh0aW1lcklEKSB8fCAqKHNsb3QgPSAmdGltZXJzLT5hZGQodGltZXJJRCwgbnVs
bHB0cikuaXRlcmF0b3ItPnZhbHVlKSk7CiAKLSAgICBhdXRvIHRpbWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbHVnaW5UaW1lcj4ocGx1Z2luLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1l
ckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFBsdWdpblRpbWVyPihwbHVnaW4s
IHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAKICAgICBpZiAoX3Nob3Vs
ZEZpcmVUaW1lcnMpCiAgICAgICAgIHRpbWVyLT5zdGFydChfaXNDb21wbGV0ZWx5T2JzY3VyZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5tbQppbmRleCA3MDRjZDA5NWU4OGZlMWEyMzgxMTg2YzZiZmYx
MzBmYzkwMjA0MWViLi41N2ZiYmZhZDllNjRiNzY3OGFkM2FjY2U4MDc3OGJhY2YwMzc4MWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFu
YWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5tbQpAQCAtOTQsMTAgKzk0LDExIEBAIFdlYkRhdGFiYXNlTWFu
YWdlckNsaWVudDo6fldlYkRhdGFiYXNlTWFuYWdlckNsaWVudCgpCiB9CiAKIGNsYXNzIERpZE1v
ZGlmeU9yaWdpbkRhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlckNs
aWVudCYgY2xpZW50LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKICAgICB7Ci0g
ICAgICAgIGF1dG8gY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlkTW9kaWZ5T3JpZ2luRGF0
YT4oY2xpZW50LCBvcmlnaW4pOworICAgICAgICBhdXRvIGNvbnRleHQgPSBtYWtlVW5pcXVlPERp
ZE1vZGlmeU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2luKTsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbY29udGV4dCA9IFdURk1vdmUoY29udGV4dCldIHsKICAgICAgICAgICAgIGNvbnRleHQt
PmNsaWVudC5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihjb250ZXh0LT5vcmlnaW4pOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggYTNiMTU5OGVlMzUz
ZDY3ZTIzYWY4MDk1OGViN2Y3NWViMTY3ZjRkOC4uY2Q3MjY0MjY4MjViYTcyMjE1NTdlMDU2NmZh
OTJlYzA4MTExNDVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMx
LDYgKzMxLDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQoV2ViVmlldyopOwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENs
aWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKaW5kZXggNzhiNTM5
ZTM3MmI4NjVjNTk0ZmMwNzZmNWExZmM4NGFhZmU5OGJmMC4uMjcxNDI3ZTJkNDZlZTNhMjk3ZDA1
NDAxMmE3YTg1YWI4YjNlMWIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGNsYXNz
IFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIDogcHVibGljIFdlYkNvcmU6OkNhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShpZCB3ZWJEb2N1bWVudFZpZXcpIDogbV93ZWJE
b2N1bWVudFZpZXcod2ViRG9jdW1lbnRWaWV3KSB7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggZmRjNGNjNzgxOTZmY2JjZjMyNjAyZDE4ZTI4OWYwN2ExMTU0Y2M5NS4uYzBmYmRhOWIyZGEx
ZGQ0NTEwZmZlMDg5YmY2OGY1YTc2N2RkNDE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQxLDYg
KzQxLDcgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIC8vIGJhc2UgY2xhc3Mgb2YgdGhlIGNv
bmNyZXRlIGNsYXNzLCBXZWJDaHJvbWVDbGllbnRJT1MuIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBj
bGFzcyBhbmQKIC8vIG1hbnkgb2YgaXRzIGZ1bmN0aW9ucyBhcmUgbm90IG1hcmtlZCBmaW5hbC4g
VGhhdCBpcyBtZXNzeSB3YXkgdG8gb3JnYW5pemUgdGhpbmdzLgogY2xhc3MgV2ViQ2hyb21lQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMTg4NWYwMzEzMTM1YjgxN2IzMGY5NDU3NzdkOGUy
NGIxNTM5YmY5MC4uYTdmNjZlZWVmMzA2YTY4NjA1NDIwZTc5ODc2MjAyNTdiZTA2YjZiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkNvbnRl
eHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50CiAgICAgLCBw
dWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKICNlbmRpZgogeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdl
YlZpZXcgKndlYlZpZXcpOwogICAgIHZpcnR1YWwgfldlYkNvbnRleHRNZW51Q2xpZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmgKaW5kZXggODQ3YTczYjE3YTQ2MTdiZDU0YThkMjhhOTIzYzFkNGE2M2JkZDEyZS4u
MzBkZjNmNzNkODUwZWE3NjljNzEzNTIyMWQyZTg4NjVlYTY3ZTAzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApA
QCAtMzAsNiArMzAsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggZjA1OWUwNTllMTE4N2EzYmM1YmQyNDdjYzI0MWY1OWFkZDQ1MDk1MC4uYjUxMDc4
N2Q4MDliY2Y5N2I3Njg5ZTc0MDkzMjgzNzVhYTBiMGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAg
LTQ1LDYgKzQ1LDcgQEAKIEBjbGFzcyBXZWJFZGl0b3JVbmRvVGFyZ2V0OwogCiBjbGFzcyBXZWJF
ZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMg
V2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJFZGl0
b3JDbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBX
ZWJFZGl0b3JDbGllbnQoV2ViVmlldyAqKTsKICAgICB2aXJ0dWFsIH5XZWJFZGl0b3JDbGllbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggM2RkNTBlN2IzYjljZjk5MzM0OWM5
YWJiNGNiNDk3ODM3ZWVjMzUzZS4uOTQwYjBmZjk2M2E4NWNlOWQ4OGQ3YmM1NmZmNmIzZWViMmUz
ZDkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTEwNjcsNyArMTA2Nyw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogc3RhdGlj
IHZvaWQgYWRkUmVkaXJlY3RVUkwoV2ViSGlzdG9yeUl0ZW0gKml0ZW0sIGNvbnN0IFN0cmluZyYg
dXJsKQogewogICAgIGlmICghaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMpCi0gICAgICAg
IGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oKTsKKyAgICAgICAgaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBtYWtl
VW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogCiAgICAgLy8gT3VyIEFQSSBhbGxvd3MgdXMgdG8g
c3RvcmUgYWxsIHRoZSBVUkxzIGluIHRoZSByZWRpcmVjdCBjaGFpbiwgYnV0IGZvcgogICAgIC8v
IG5vdyB3ZSBvbmx5IGhhdmUgYSB1c2UgZm9yIHRoZSBmaW5hbCBVUkwuCkBAIC0xMzgwLDcgKzEz
ODAsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKiBjYWNoZWRGcmFtZSkK
IHsKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoc3RkOjptYWtl
X3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUt
PndlYkZyYW1lVmlldy5kb2N1bWVudFZpZXcpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4o
bV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldy5kb2N1bWVudFZpZXcpKTsKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoaXMg
ZnJhbWUgaXMgZ29pbmcgdG8gYmUgY2FjaGVkLiBTdG9wIGFsbCBwbHVnaW5zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmgKaW5kZXggZmZlMjk5MzEyZWI0ODBiYWZiNWYwZWFjNDM1MmYyNDNmOTZl
MDBmNy4uZmZkYmFjZmMyNzQyMWU4ZDM1ODg4ZjJjZTZiMTgwNzdhMTZlMzNmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9z
aXRpb247CiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcgKik7CiAg
ICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaAppbmRleCBiZDdmNjJmYzg1ZGM5OWMzODcxNmYwNzY2NjQ2MzE4MjUxMWM1NGE1Li4w
Yzk0OGIzYWVmOTg3NjA5NjMwMzUxZDU5YWM3OTBiMmFiZWFkYTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBQYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hh
bm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKmluc3BlY3RlZFdlYlZpZXcpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KaW5kZXggMWMwMDgwOTc2OTJmZjliMDcxZmNlNWFjNGE0YjQ2OTJk
MTM3ZWQ5NS4uN2QzZTVlYzllNjE1ZTFkNDhjM2QwNWQ3MWE1OWM0NTFmZWI3NjZiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIEZyb250ZW5kQ2hhbm5lbCog
V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwCiAgICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9yQ2xpZW50OnRo
aXNdOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgp
IGZyb250ZW5kV2ViVmlld10pOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHdpbmRv
d0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFn
ZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCB3
aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9mcm9udGVu
ZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAKICAgICBSZXRhaW5QdHI8V2ViSW5z
cGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3Bl
Y3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGll
bnQuZ2V0KCldKTsKICAgICBbW21faW5zcGVjdGVkV2ViVmlldyBpbnNwZWN0b3JdIHNldEZyb250
ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmgKaW5kZXggMTViNDE4MDQ4ZTRmMWQ0NjI0YzMwM2RjYmJmZWQxNjk3OTY0NDg2MS4uOTRlZDYx
OGFjNzhlZThiY2Y1NzE1NWM5YWRhYmNiZGFkZjY4YzczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJO
b3RpZmljYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb3RpZmljYXRp
b25DbGllbnQoV2ViVmlldyAqKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93
ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaAppbmRl
eCBhM2Q2YWU2MzYzNjQ3YzVmMzBjYzc5ZmJkNjM1ZjY2NGJjYTAxMjNjLi5kYzlkMTFhMzU4N2Vl
MDRmNTAxNTFiZTg4YmM1ZDRiMTQ4YmNkZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiB9CiAK
IGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyIDogcHVibGljIFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcihXZWJWaWV3Kik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRp
b25Qcm92aWRlck1vY2subW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRl
dmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCmluZGV4IDI1MzY0OGQ4ZTg0NTkxMWUyYWUy
OGMwYmI4NjNjYjU3ZjdjMzAwMzkuLjI3NmQ5ZjE1ZWY4ZmE1ZTFmZWQ0MzhlZDljMWQyNTlhNzg1
ODM1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQpAQCAtMzYsNyAr
MzYsNyBAQCAtIChpZClpbml0CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNl
bGYpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgbV9jb3JlID0gc3RkOjptYWtlX3VuaXF1ZTxE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CisgICAgbV9jb3JlID0gbWFrZVVuaXF1ZTxE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2s+KCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGE5MDYyMmMy
MDc0ZTBjZGNlY2VmMmM2YzFjODQ5NDVkNGU5ZGZmYWIuLjNhOTRiYjkxMGQyNTllZmFhODkxZDUy
OWU4MGQyYjViMDAyMGI0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQpAQCAtMzc4LDcgKzM3OCw3IEBAIC0gKHZvaWQpX2F0dGFjaFNjcmlwdERlYnVn
Z2VyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdn
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNjcmlwdERlYnVnZ2VyPihnbG9iYWxPYmplY3QpOwor
ICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IG1ha2VVbmlxdWU8V2ViU2NyaXB0RGVidWdn
ZXI+KGdsb2JhbE9iamVjdCk7CiB9CiAKIC0gKHZvaWQpX2RldGFjaFNjcmlwdERlYnVnZ2VyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlci5oCmluZGV4IGRmYTdlZmQwNjA2YWRjNDlmZTI5MWQwNTIx
ZDEzMmU2ZTE5YzUwNzMuLmEwNzJlODE5NTI0OTM5YWUwZjIyYmI5ODM2ZDNhYzcwNWQ4NTc5MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIFBh
Z2U7CiB9CiAKIGNsYXNzIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIgOiBwdWJsaWMgV2Vi
Q29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyPiBjcmVhdGUoV2ViQ29yZTo6UGFnZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIubW0KaW5kZXggNzJjMjBjNjkzZmVjYmE5NzEwNDYzNDE2NDFjY2UxMTQ5
NGRlNGE2OS4uNjAyNDAyOTk2MmVjMzRmMDBmNGFhZDk0MzJhN2ZjNDJiYTFkMTc0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4gV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlcjo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CiB9CiAK
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXIoV2ViQ29yZTo6UGFnZSYgcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KaW5kZXggMWE3MjU4YjQyM2E4NDU3ODkxZTQxNWUx
MGQwMDI1NjczMGFhMmJkZS4uZTM2M2I4NWIyYjNkNWFlMTQ3M2M4MzcyNzE4NTgzNGQ1MTc4N2Ix
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRl
cmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRl
cmF0b3IubW0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooRE9NUmFuZ2Ug
KilyYW5nZQogICAgICAgICByZXR1cm4gc2VsZjsKICAgICAKICAgICBfcHJpdmF0ZSA9IFtbV2Vi
VGV4dEl0ZXJhdG9yUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgX3ByaXZhdGUtPl90ZXh0SXRl
cmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5n
ZSkpOworICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I+KGNvcmUocmFuZ2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI4ZDk3MTFlNzBkNzc0
NWQ3ZDM5YjFmOWY1NDFhMTY1NGQ2NTljODIuLmZiN2NmMmZhYWQ2N2I0OWM5MzNhNjIxZTMyNzkx
MGUxMDgxYWVmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTEyMjQsNyArMTIyNCw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWly
a3NVc2VyU2NyaXB0Q29udGVudHMoKQogLSh2b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0
CiB7CiAgICAgc3RhdGljIE5TU3RyaW5nICpvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMgPSBs
ZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpOwotICAgIF9wcml2YXRlLT5ncm91
cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2NyaXB0
V29ybGQgd29ybGRdKSwgc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtz
U2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigp
LCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcykpOworICAgIF9wcml2YXRl
LT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2Vi
U2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtz
U2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigp
LCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcykpOwogCiB9CiAjZW5kaWYK
QEAgLTE0MzgsNyArMTQzOCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVu
dUNsaWVudChzZWxmKTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuYWJsZSB0aGlzIG9uIGlP
UyBhcyB3ZWxsLgotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtlVW5pcXVl
PFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwogI2Vsc2UK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50
SU9TKHNlbGYpOwpAQCAtNDYyOCw3ICs0NjI4LDcgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRv
R3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwK
ICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVzZXJTY3JpcHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lID09
IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVj
dEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8g
SW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CisgICAgYXV0byB1c2Vy
U2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9
PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmpl
Y3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/
IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91
cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZSh3b3JsZCksIFdU
Rk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC00NjUxLDcgKzQ2NTEsNyBAQCArICh2b2lkKV9h
ZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJT
Y3JpcHRXb3JsZCAqKQogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gc3R5bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwg
dXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3Qp
LCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJh
bWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAgYXV0
byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRv
U3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVj
dGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJ
bmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAt
PnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KCpjb3JlKHdvcmxkKSwg
V1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKQEAg
LTk0MDIsNyArOTQwMiw3IEBAIC0gKFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2
ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKIC0gKFdlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyJilfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIKIHsKICAgICBpZiAoIV9wcml2YXRl
LT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIpCi0gICAgICAgIF9wcml2YXRlLT5fc2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyPihzZWxmKTsKKyAgICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNl
bGYpOwogICAgIHJldHVybiAqX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsK
IH0KICNlbmRpZgpAQCAtOTQ2MSw3ICs5NDYxLDcgQEAgLSAodm9pZClfc2V0VGV4dEluZGljYXRv
cjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvcgogLSAodm9pZClfc2V0VGV4dEluZGljYXRv
cjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6KFRleHRJbmRpY2F0
b3JXaW5kb3dMaWZldGltZSlsaWZldGltZQogewogICAgIGlmICghX3ByaXZhdGUtPnRleHRJbmRp
Y2F0b3JXaW5kb3cpCi0gICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0SW5kaWNhdG9yV2luZG93PihzZWxmKTsKKyAgICAgICAgX3ByaXZh
dGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBtYWtlVW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+
KHNlbGYpOwogCiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVz
ID0gW3NlbGYgY29udmVydFJlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OnRleHRJ
bmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpXSB0b1ZpZXc6
bmlsXTsKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMgPSBb
c2VsZi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjp0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dD
b29yZGluYXRlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5tbQppbmRleCAxMDYwYzJkODU0YWRhMGRjYWZiMzM1NTljODExZTRlZTQ5NGNjNmUwLi44
MjM4YTRlYzVmZWUxNjgzNjRlZDEzMDRiYzc1MTVmNTUxN2ZlODkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTk2LDcgKzk2LDcgQEAg
TGF5ZXJGbHVzaENvbnRyb2xsZXI6OkxheWVyRmx1c2hDb250cm9sbGVyKFdlYlZpZXcqIHdlYlZp
ZXcpCiBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVs
ZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdXNoQ29udHJvbGxlcikKICAgICA6IG1fZmx1c2hD
b250cm9sbGVyKGZsdXNoQ29udHJvbGxlcikKIHsKLSAgICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRklu
ZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okxh
eWVyRmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oV2ViQ29yZTo6
UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3Ro
aXNdKCkgewogICAgICAgICB0aGlzLT5sYXllckZsdXNoQ2FsbGJhY2soKTsKICAgICB9KTsKIH0K
QEAgLTIwOCw3ICsyMDgsNyBAQCAtIChpZClpbml0CiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRD
b3VudCsrOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcj4oKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOwog
I2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKaW5kZXggNjQ2ZTZhZWY5MzJmMWM5
OTI5ODUzNmM4MmYyYzk1NWE3MWExOTJjZi4uZGU1MmM4NTg2NDE0MjkyYzNjOTdlZGJlOTk0YWJm
MWQ1Zjc4ZDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTE3Niw2ICsxNzYsNyBAQCB2b2lkIEhVRFNsaWRl
cjo6ZHJhZyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIGJvb2wgc3RhcnQpCiAKICNpZiBVU0UoQ0Ep
CiBjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIExheWVyQ2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHsgfQogCkBAIC0yNDYsMTAgKzI0NywxMCBAQCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKICAg
ICAsIG1fbW92aW5nV2luZG93KGZhbHNlKQogICAgICwgbV90aW1lcigqdGhpcywgJkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OnRpbWVyRmlyZWQpCiAjaWYgVVNFKENBKQotICAgICwgbV9sYXll
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKKyAgICAsIG1fbGF5
ZXJDbGllbnQobWFrZVVuaXF1ZTxMYXllckNsaWVudD4odGhpcykpCiAgICAgLCBtX3Jvb3RDaGls
ZChQbGF0Zm9ybUNBTGF5ZXJXaW46OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxh
eWVyLCBtX2xheWVyQ2xpZW50LmdldCgpKSkKICNlbmRpZgotICAgICwgbV9mdWxsc2NyZWVuV2lu
ZG93KHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4o
c3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRoaXMpKSkK
KyAgICAsIG1fZnVsbHNjcmVlbldpbmRvdyhtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5D
bGllbnQqPih0aGlzKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAppbmRleCBmMWRlOGRkN2NjZTc4ODdkNmM4M2Ni
MjgxMTU2MTNlYTgwYjU1ZDc4Li4xMzhjM2VjNGUyNjRiMThiMjcyZTI2N2MxNjgzNzU3NmFiYzg0
MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIH0K
IAogY2xhc3MgSFVEV2lkZ2V0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBIVURXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkgOiBtX3JlY3Qo
cmVjdCkgeyB9CiAgICAgCkBAIC0xMDEsNiArMTAyLDcgQEAgY2xhc3MgSFVEU2xpZGVyIDogcHVi
bGljIEhVRFdpZGdldCB7CiB9OwogCiBjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDog
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcik7CiBwdWJsaWM6CiAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NZXNz
YWdlVGhyb3R0bGVyV2luLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bk1lc3NhZ2VUaHJvdHRsZXJXaW4uaAppbmRleCA1ZmQ3NmQ0MTc4MjUyNjFkNGVkNTI4YTg1NDFm
NjYyYTRmN2Y4N2Y5Li40Yjc5ZmU2MmJmZDg0NTk5YjI0ZGMyZDk1YzY4YzUxZTIxNTAzYzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VU
aHJvdHRsZXJXaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bk1lc3NhZ2VUaHJvdHRsZXJXaW4uaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgUGx1Z2luVmlldzsKIAogICAgIHN0cnVjdCBQbHVnaW5NZXNzYWdlIHsK
KyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBIV05EIGhX
bmQ7CiAgICAgICAgIFVJTlQgbXNnOwogICAgICAgICBXUEFSQU0gd1BhcmFtOwpAQCAtNDQsNiAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAgIGNsYXNzIFBsdWdpbk1l
c3NhZ2VUaHJvdHRsZXJXaW4geworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4oUGx1Z2luVmlldyop
OwogICAgICAgICB+UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IGFiYTYzZGFiOGIz
MWU0N2FiZDgwODhiMzc4M2E4MGVjNTRjMTAyMTguLjBmNmJlZWZmYWQxZGMwMTVjOGE0NzdlN2Zi
ZTVjOWI2YWFmYWZmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblN0cmVhbS5jcHAKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6
ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3Qg
Y2hhcgogCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAgICAg
ICAgaWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KCk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0
YSA9IG1ha2VVbmlxdWU8VmVjdG9yPGNoYXI+PigpOwogCiAgICAgICAgIGludCBvbGRTaXplID0g
bV9kZWxpdmVyeURhdGEtPnNpemUoKTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2l6ZShv
bGRTaXplICsgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IDIxMzYzMTdmMjk5OWQ1ZTEzNzQ5ZGYzOGUxOWE4ZjRkMmYyNWJk
NjAuLjU0NzE2YTBiYjJiMWZhYjc1ZDgxZGU0MmFlZTk2ZWVhMmY2YjEzZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNTEwLDcgKzUx
MCw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVM
b2FkUmVxdWVzdCwgYm9vbCBzZW5kTm90aWZpY2F0CiAgICAgfSBlbHNlIGlmICghbV9wYXJlbnRG
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpCiAgICAg
ICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwogCi0gICAgc2NoZWR1bGVSZXF1ZXN0KHN0
ZDo6bWFrZV91bmlxdWU8UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwg
c2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CisgICAg
c2NoZWR1bGVSZXF1ZXN0KG1ha2VVbmlxdWU8UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxv
YWRSZXF1ZXN0KSwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dl
ZCgpKSk7CiAKICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAwNTcyOGYzZWQz
NzIwNTA0YWY1NWY5ODc3Zjg2MjFiZGMwNWNlNjIyLi41MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQy
OTgxYzNmNTYzZWRmZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luVmlld1dpbi5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCBQbHVnaW5WaWV3Ojp3bmRQ
cm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFt
KQogICAgIGlmIChtZXNzYWdlID09IFdNX1VTRVIgKyAxICYmCiAgICAgICAgIG1fcGx1Z2luLT5x
dWlya3MoKS5jb250YWlucyhQbHVnaW5RdWlya1Rocm90dGxlV01Vc2VyUGx1c09uZU1lc3NhZ2Vz
KSkgewogICAgICAgICBpZiAoIW1fbWVzc2FnZVRocm90dGxlcikKLSAgICAgICAgICAgIG1fbWVz
c2FnZVRocm90dGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldp
bj4odGhpcyk7CisgICAgICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPFBs
dWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4+KHRoaXMpOwogCiAgICAgICAgIG1fbWVzc2FnZVRocm90
dGxlci0+YXBwZW5kTWVzc2FnZShoV25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hl
ZEZyYW1lUGxhdGZvcm1EYXRhLmgKaW5kZXggNTMwYjY5ZWQ3MTljMjdhY2M2YjA3ZTM1MTU5MjIx
ZjU1MjZjNTMwNS4uM2JmNDRkODdkMThkNWYyNzNjZDI5NTM1Njc2YjI0MDhmMmM5MTRlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YS5oPgogCiBjbGFzcyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1Ymxp
YyBXZWJDb3JlOjpDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoSVdlYkRh
dGFTb3VyY2UqIHdlYkRhdGFTb3VyY2UpIDogbV93ZWJEYXRhU291cmNlKHdlYkRhdGFTb3VyY2Up
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCBl
M2VjMzNmZDQ5OTdhMDFhMjI1ZDVlMWNmOWI0ZjRiNjJkNzdlMjJkLi5jNDFmODZlMDczZDhkY2I5
ZTRhOGE1Mjk0ZjBkNjNjYzk0ZTU2M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LmgKQEAgLTQwLDYgKzQwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNz
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0IDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KTsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dChXZWJWaWV3Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAppbmRleCA0YTQ5Yjk0YmJhNThkMGM1NDYzMzI5YzNmNmVmMjNlODQ4OGI3
YWYzLi43YjI5OWNlZTI1ZWNkMTBiYmE2MjFjODU4MWIwNmFlMDZjNWExZDE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGaWxl
UGF0aHNMaXN0U2l6ZSA9IFVTSFJUX01BWDsKIFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xp
ZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLSAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKHN0ZDo6bWFr
ZV91bmlxdWU8V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCisgICAg
LCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShtYWtlVW5pcXVlPFdlYkRlc2t0b3BOb3RpZmljYXRp
b25zRGVsZWdhdGU+KHdlYlZpZXcpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4
IDQxZDVmMDZhZWFjYjdlMTQxN2Q0YjcwMjQwMDYwYmJlNTdmNjkzMGYuLjc4NzU0MzI1M2Q1ZGZm
NGVjNjY4ZWJlODhmMDg4NWQwYmFkYjY1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zOCw2ICsz
OCw3IEBAIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiBpbnRlcmZhY2Ug
SVdlYlVJRGVsZWdhdGU7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oCmluZGV4IGM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQuLmY0
OGVlNzMwZWVmNzE5NzllNGQ4ZDJjMzI3ZWQxYmExN2I5NGZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2Vi
Q29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51
Q2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNE
ZWxlZ2F0ZS5oCmluZGV4IDgyOTZjOGNjYjY4ODdkMzQ1NDhkNWE2NGM2ODY3NzI2YTc0NjA3NzIu
LjRjZmQxMDI2NWQxZDA3YTU3ZjAzMGE0ZTZiMTUwNjljYmJmYjkzMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRp
b25zRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xh
c3MgRG9jdW1lbnQ7CiB9CiAKIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUg
OiBwdWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRl
KFdlYlZpZXcqIHZpZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggYjU5ODkzMzI5MTAwOWUyODUxZWQ3
NTQxNWVjNGFhMGZlNDAzZDYxMS4uNDVlM2NhNzI3NTNhZDFhYzExNTNiZTk2MTkzZjZlZDYyMWZm
ODlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQAogY2xhc3MgV2ViVmlldzsKIAog
Y2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlZp
ZXcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggZGI2MzUyZDYzODE2ZjdjOWFlZWU5Zjc0NGU0OGUzODFlODU2ZDJiNS4u
NjlkN2VkM2UwYWEzMWYxM2JlYTY0Y2YwYzI3NjVlMjU0ZmJmOGU2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9uOwogY2xhc3MgV2ViRWRp
dG9yVW5kb1RhcmdldDsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGll
bnQoV2ViVmlldyopOwogICAgIH5XZWJFZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA4ZTM1NGI3MWNkZmQyYTVmOWI4YjAxMWEwMzI5ZDc0MjRiYzkwYmJj
Li5kNGIyZjdmNjNlODYwODU5MzkzNDUyYmQ2MmUxMjg1ZDJlOGFkNDdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC05Myw2ICs5Myw3IEBAIHN0YXRpYyBXZWJEYXRhU291cmNl
KiBnZXRXZWJEYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB9CiAKIGNsYXNzIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByaXZhdGUoKSAKICAgICAgICAgOiBtX3BvbGljeUZ1bmN0aW9uKG51bGxwdHIpCkBAIC0x
MDcsNyArMTA4LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcml2YXRlIHsKIH07CiAKIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxv
YWRlckNsaWVudChXZWJGcmFtZSogd2ViRnJhbWUpCi0gICAgOiBtX3BvbGljeUxpc3RlbmVyUHJp
dmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQor
ICAgIDogbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUobWFrZVVuaXF1ZTxXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJpdmF0ZT4oKSkKICAgICAsIG1fd2ViRnJhbWUod2ViRnJhbWUpCiAgICAgLCBtX21h
bnVhbExvYWRlcigwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkgCkBA
IC05NzMsNyArOTc0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3Jt
RGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZyYW0KIAogICAgIEFTU0VSVChj
b3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPT0gY2FjaGVkRnJhbWUtPmRvY3Vt
ZW50TG9hZGVyKCkpOwogCi0gICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0YXRpY19j
YXN0PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCkpKSkpOworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihzdGF0aWNf
Y2FzdDxJV2ViRGF0YVNvdXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpKSkpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggZWI5NzU4YmQ0MjEwN2QyZjlhODU0
ZTRlNjg4MTY2YTZmNTE1ZmI5Zi4uYmJhOWM5ZjQ0NTM1OGQ3Y2UzZWEwM2Y4OTY2NDFiZDZlNWUw
NDBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNz
IEdlb2xvY2F0aW9uUG9zaXRpb247CiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJHZW9sb2Nh
dGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQo
V2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA3NTY5NTkwYzFiM2Nm
MzgxNmZjNDJhMzViZjNmNjZiZmQ3ODkwMjI0Li5mODBhZTA0OGI4MmRiZGIyMzQ2NTQ2OGQ5MzNj
NjBhNzA5NzJjN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE2OSw3ICsxNjks
NyBAQCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVu
TG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cgogICAgICAgICByZXR1cm4gMDsKIAogICAgIG1f
ZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIG1fZnJvbnRl
bmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Piht
X2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25k
LCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250
ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG1ha2VVbmlxdWU8V2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJW
aWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3
SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKICAgICBtX2Zyb250ZW5kUGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJv
bnRlbmRDbGllbnQuZ2V0KCkpOwogICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBmcm9udGVuZEh3bmQ7
CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmhpZ2hsaWdodCgpCiAgICAgYm9vbCBjcmVhdGluZ0hpZ2hsaWdodCA9ICFtX2hpZ2hs
aWdodDsKIAogICAgIGlmIChjcmVhdGluZ0hpZ2hsaWdodCkKLSAgICAgICAgbV9oaWdobGlnaHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5vZGVIaWdobGlnaHQ+KG1faW5zcGVjdGVkV2ViVmlldyk7
CisgICAgICAgIG1faGlnaGxpZ2h0ID0gbWFrZVVuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2lu
c3BlY3RlZFdlYlZpZXcpOwogCiAgICAgaWYgKG1faGlnaGxpZ2h0LT5pc1Nob3dpbmcoKSkKICAg
ICAgICAgbV9oaWdobGlnaHQtPnVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5
NWM5YWZhODUwMDJhNTQzMjcwYjdjZTZiMzg4YzcwZDQ4OTE4NTE4Li4wYTUxNDgzOTFiYWUxMjYw
ZGY2ODY2YjI4NzA3ZTY2MDg0ZTkyMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTAs
NiArNTAsNyBAQCBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0OwogY2xhc3MgV2ViVmlldzsKIAogY2xh
c3MgV2ViSW5zcGVjdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudCwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQo
V2ViVmlldyopOwogCkBAIC05NCw2ICs5NSw3IEBAIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0CiB9
OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBXZWJDb3JlOjpXaW5kb3dNZXNzYWdl
TGlzdGVuZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIEhXTkQg
aW5zcGVjdGVkV2ViVmlld0h3bmQsIEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01QdHI8V2Vi
Vmlldz4mIGZyb3RuZW5kV2ViVmlldywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBXZWJJbnNw
ZWN0b3JDbGllbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+KTsKICAgICB2aXJ0dWFsIH5X
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjhjNmJkNDkzOWNmOWIwNDg5NTdiYzc1MDBi
ZDg1NDhhMDFlZTNiMi4uMTYyN2VjNWZhMjZiZjU5MDFkMDU5M2I1YTE4Mzk2OTQ3OTIxOTBiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBA
IC0zNDcsNiArMzQ3LDcgQEAgSFJFU1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZUFsbElu
ZGV4ZWREYXRhYmFzZXMoKQogfQogCiBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaWRNb2Rp
ZnlPcmlnaW5EYXRhKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRo
cmVhZChXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFuYWdlciwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxl
bWVudFByb3BlcnR5QmFnLmNwcAppbmRleCAyN2FmMWJhZTY1M2VmZjAyZjY3MDRmN2UzOWFkMGUx
YWM1MGFkNzBiLi44YWZiYTBmNmQ1M2FmZDU1NTg0NWMxOTUzNmMyYTljMWVjNWYzN2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIFdlYkVsZW1l
bnRQcm9wZXJ0eUJhZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQotICAgIDogbV9yZXN1bHQoc3RkOjptYWtlX3VuaXF1ZTxI
aXRUZXN0UmVzdWx0PihyZXN1bHQpKQorICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0
UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBhODFjMDBlNTZjNWRlMmFlYmMxMmFiOGI2ZGIx
MWJjOTM0ZWJiYmRhLi5mYjg4ZTM5ZTdiNTZhYzMyZGNmNWNmNTAxMWMzNTQ4MTcxYTZjM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVz
ZW50YXRpb24oX0luX29wdF8gdm9pZCogZGljdGlvbmEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPFN0cmluZz4+IHJlZGlyZWN0VVJMc1ZlY3RvcjsKICAgICBpZiAoQ0ZBcnJheVJlZiByZWRp
cmVjdFVSTHNSZWYgPSBzdGF0aWNfY2FzdDxDRkFycmF5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShkaWN0aW9uYXJ5UmVmLCByZWRpcmVjdFVSTHNLZXkpKSkgewogICAgICAgICBDRkluZGV4IHNp
emUgPSBDRkFycmF5R2V0Q291bnQocmVkaXJlY3RVUkxzUmVmKTsKLSAgICAgICAgcmVkaXJlY3RV
UkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oc2l6ZSk7CisgICAg
ICAgIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KHNpemUp
OwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAg
ICAoKnJlZGlyZWN0VVJMc1ZlY3RvcilbaV0gPSBTdHJpbmcoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVkaXJlY3RVUkxzUmVmLCBpKSkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRp
dGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRR
dWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCmluZGV4IDJmMWYyZjQ4MDdlYjlj
NGZlNzA4MzVkYjc4ZTM0YTM0YmNmZjM2ZDAuLmQ2NWRlMTllZTk5YzQ1MTQ0NWRmYmYxYjEzNTlk
YzJhOGJhMzhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcApAQCAt
MjI0LDcgKzIyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+
IENBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5nCiAgICAgbWVtY3B5KG92ZXJs
YXlRdWFkQnVmZmVyLCBvdmVybGF5UXVhZFZlcnRpY2VzLCBzaXplb2Yob3ZlcmxheVF1YWRWZXJ0
aWNlcykpOwogICAgIG92ZXJsYXlRdWFkLT5VbmxvY2soKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4oc2NlbmVUZXh0dXJlLCBvdmVybGF5
UXVhZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0Pihz
Y2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKIH0KIAogLy8gRklYTUU6IDxyZGFyOi8vNjUwNzg1
MT4gU2hhcmUgdGhpcyBjb2RlIHdpdGggQ29yZUFuaW1hdGlvbidzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVy
ZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
Q0FEM0RSZW5kZXJlci5oCmluZGV4IDY3ZDQ4MzUzYjAzZDcyZWE4YTljMjhhYjg3MGQ3NWRhMTFk
ODA4ZWMuLjQ3ZWFkZGE2NTYxMmU2MDUwZDJjMjhhY2U2ZjRjOWFjZTljYmI1MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBX
S1FDQSB7CiBjbGFzcyBJbWFnZTsKIAogY2xhc3MgRDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEM0RQb3N0UHJvY2Vz
c2luZ0NvbnRleHQoY29uc3QgQ0NvbVB0cjxJRGlyZWN0M0RUZXh0dXJlOT4mLCBjb25zdCBDQ29t
UHRyPElEaXJlY3QzRFZlcnRleEJ1ZmZlcjk+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vZGVIaWdobGlnaHQuaAppbmRleCBmOTc1NWJiOGRhZWFhYjM5ZDM0MjJlZThmZWIwZjI0
YzFiMzU0ZmVkLi5iMjY5NTQ5OWI4MjZiOTliODJlYWZhODQ1NDE4N2QxOWY2ZTA3ZjExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhpZ2hsaWdodC5oCkBAIC0zNSw2ICszNSw3
IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0IDogV2ViQ29yZTo6
V2luZG93TWVzc2FnZUxpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJOb2RlSGlnaGxpZ2h0KFdlYlZpZXcqKTsKICAgICB+V2ViTm9kZUhpZ2hs
aWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0
aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNl
bnRlci5jcHAKaW5kZXggN2JkOTg4OTYxMTFjM2IzZmU2ZmU1NGYwYTI0Nzk2NjA2YjIyYTc1Zi4u
OTI1MzJkYmRjYTQxYjg1MzFlOTE2OGNkZGRlMzFiNTdhN2Y0NTZiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC00NSw2ICs0
NSw3IEBAIHR5cGVkZWYgT2JqZWN0T2JzZXJ2ZXJMaXN0OjppdGVyYXRvciBPYnNlcnZlckxpc3RJ
dGVyYXRvcjsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE9iamVjdE9ic2VydmVyTGlzdD4gTWFw
cGVkT2JzZXJ2ZXJzOwogCiBzdHJ1Y3QgV2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZSB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIE1hcHBlZE9ic2VydmVycyBt
X21hcHBlZE9ic2VydmVyczsKIH07CiAKQEAgLTUzLDcgKzU0LDcgQEAgc3RydWN0IFdlYk5vdGlm
aWNhdGlvbkNlbnRlclByaXZhdGUgewogSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZp
Y2F0aW9uQ2VudGVyOjptX2RlZmF1bHRDZW50ZXIgPSAwOwogCiBXZWJOb3RpZmljYXRpb25DZW50
ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCi0gICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Tm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKKyAgICA6IGQobWFrZVVuaXF1ZTxXZWJOb3Rp
ZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0NvdW50Kys7CiAgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXggMzg5ZTk4Yzdk
OWZkY2EzMDMxNjAxNGY5ZjFkMWY2MjBhMzQ5ZWYyZi4uZjE0OTgxMjJkOGRlM2MzMzczMjU0NDhi
ZTM5MTQ0MjRlYzc2MDA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90
aWZpY2F0aW9uQ2VudGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKIHN0cnVjdCBXZWJOb3RpZmljYXRp
b25DZW50ZXJQcml2YXRlOwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25DZW50ZXIgZmluYWwgOiBw
dWJsaWMgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogY3JlYXRlSW5z
dGFuY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCA5NzYxNDhlMzNm
NzQ0NmQ3YzM4NDk5NTlkNmNmNzNkZWY0OGY2N2ZmLi45YTYxMDc5ZWJlNWQzOTBhM2VjNDlmY2Nk
MDg2NGQ5NzMxNjRhMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTg4
MCw3ICsxODgwLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KFVJTlQgbWVzc2Fn
ZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICAgICAgbW91c2VFdmVudC5zZXRD
bGlja0NvdW50KGdsb2JhbENsaWNrQ291bnQpOwogICAgICAgICBoYW5kbGVkID0gbV9wYWdlLT5t
YWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZU1vdmVkKG1vdXNlRXZlbnQpOwogICAgICAg
ICBpZiAoIW1fbW91c2VPdXRUcmFja2VyKSB7Ci0gICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VFJBQ0tNT1VTRUVWRU5UPigpOworICAgICAgICAgICAgbV9t
b3VzZU91dFRyYWNrZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxUUkFDS01P
VVNFRVZFTlQ+KCk7CiAgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlci0+Y2JTaXplID0gc2l6
ZW9mKFRSQUNLTU9VU0VFVkVOVCk7CiAgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlci0+ZHdG
bGFncyA9IFRNRV9MRUFWRTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5od25kVHJh
Y2sgPSBtX3ZpZXdXaW5kb3c7CkBAIC02Nzk0LDcgKzY3OTQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6
OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUoX0luXyBCU1RSIG1pbWVUeXBlKQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYgKCFtX2VtYmVkZGVkVmlld01JTUVUeXBlcykK
LSAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hT
ZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMgPSBtYWtlVW5p
cXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKIAogICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzLT5h
ZGQodG9TdHJpbmcobWltZVR5cGUpKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTY4OTQsNyArNjg5
NCw3IEBAIHZvaWQgV2ViVmlldzo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQo
SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50CiAgICAgICAgIEFTU0VSVCghbV9mdWxsU2Ny
ZWVuVmlkZW9Db250cm9sbGVyKTsKICAgICB9CiAKLSAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRy
b2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+KCk7Cisg
ICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyPigpOwogICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlci0+c2V0Vmlk
ZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwogICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxl
ci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYKQEAgLTY5NDYsNyArNjk0Niw3IEBAIEhSRVNV
TFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0lu
X29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBXZWJT
Y3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdv
cmxkKTsKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+
KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RD
b3VudCksCisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3Vy
Y2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQp
LAogICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwgaW5q
ZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50
U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLAogICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBX
ZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFt
ZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNj
cmlwdCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CkBAIC02OTczLDcgKzY5
NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChfSW5fIEJT
VFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAgICAgICByZXR1cm4gRV9QT0lOVEVS
OwogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTY3Jp
cHRXb3JsZCo+KGlXb3JsZCk7Ci0gICAgYXV0byBzdHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1
ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0
ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xp
c3RDb3VudCksCisgICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVl
dD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlz
dENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksCiAgICAg
ICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxG
cmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2
aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KHdvcmxk
LT53b3JsZCgpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRz
KTsKICAgICByZXR1cm4gU19PSzsKQEAgLTcyMzcsNyArNzIzNyw3IEBAIHZvaWQgV2ViVmlldzo6
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2VsZXJhdGVkKQogICAgIH0KICNlbGlm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBpZiAoYWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
PigqdGhpcyk7CisgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBtYWtl
VW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CiAgICAgbV9pc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRlZDsKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb0hlYXAuaAppbmRleCBlZWNhNzM5ZDJiMzk0ZTg2MDM1MWJhMWI0NjRkZTU0NzhiOWJi
MTY3Li5kYjM2ZWI5ZGVkMmI5ZTBmNWY2ZWY0MGRiNmM2OTkxOWE3MzA2ZDkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0hlYXAuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6IFwKICAgICBcCiAgICAg
dm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRlOyBcCiAgICAgdm9pZCBv
cGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0
QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxs
b2NlZE1hY3JvU2VtaWNvbG9uaWZpZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29IZWFwSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5s
aW5lcy5oCmluZGV4IGMwNDRkNzczYjg3OWE2NmRmYWRkMmUyY2EzMTVlZWVhMzc2ZmZhNGEuLjNh
YTFkMjA5NTFkYmYzMzY0ZTdkMTZkZDIzNjQzZDBjZDk3ZjZmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKQEAgLTEyMyw2ICsxMjMsNyBAQCBwdWJsaWM6IFwKICAg
ICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRlOyBcCiAg
ICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0ZTsgXAordHlwZWRlZiBp
bnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fbWFr
ZUJpc29NYWxsb2NlZElubGluZU1hY3JvU2VtaWNvbG9uaWZpZXIKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgxZmMyMGQ3NjY0NGZiMTE5NjIy
MmZlMzYzZjBkNTc0NzRjYmZkOWEuLjgxZTAyYWM5Y2RmZGE4ODViMjRlNjg0ZWU1ZWFkNDAxZTkw
NTI1NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMzYgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAo
YWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKToKKyAgICAgICAgKHNldFdpbGxTZW5kUmVxdWVzdENs
ZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVM
b2dzRm9yQ2hhbm5lbCk6CisgICAgICAgIChUZXN0UnVubmVyOjpydW5VSVNjcmlwdCk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06
CisgICAgICAgIChldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVu
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwOgorICAg
ICAgICAoRFJURGF0YU9iamVjdDo6U2V0RGF0YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpG
cmFtZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdh
dGUuY3BwOgorICAgICAgICAoRFJUVW5kb01hbmFnZXI6OkRSVFVuZG9NYW5hZ2VyKToKKyAgICAg
ICAgKFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6cmVzZXRV
bmRvTWFuYWdlcik6CisgICAgICAgICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgorICAgICAg
ICAoY3JlYXRlVmlld0JhY2tlbmQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0Lmg6CisgICAgICAgICog
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmg6CisgICAgICAgICog
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmg6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9Db3VudGVycy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvSmF2
YVNjcmlwdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuSlNUZXN0KToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRm
b3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVk
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojp0ZXN0TW92aW5nVXNpbmdFbnN1cmUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdE1v
dmluZ1VzaW5nQWRkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6cnVuTG9ja1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1JlZkNvdW50ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpDQVJpbmdCdWZmZXJUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y3JlYXRlVGVzdFZhbHVlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4
dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpX
ZWJLaXQyVXNlck1lc3NhZ2VSb3VuZFRyaXBUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6V2ViS2l0MldpbGxMb2FkVGVzdDo6U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVUZXN0
OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6
CisgICAgICAgICh0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0Lmg6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHA6
CisgICAgICAgIChXZWJLaXRET01ET01XaW5kb3dUZXN0OjpjcmVhdGUpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgIChhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGlu
Z0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKToKKyAgICAgICAgKC1bVGVzdFdLV2Vi
VmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246YWRkVG9XaW5kb3c6XSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbToKKyAgICAgICAgKC1b
VGVzdEZvbnRPcHRpb25zIGluaXRXaXRoRm9udE9wdGlvbnM6XSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRrLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmll
dy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmg6CisgICAg
ICAgIChXVFI6OnRvU1REKToKKyAgICAgICAgKFdUUjo6dG9XVEZTdHJpbmcpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpn
ZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpjcmVhdGVUZXN0
VVJMKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJ1blRlc3QpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OnJ1blVJU2lkZVNjcmlwdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
Q3JlYXRlV2ViVmlldyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0
Q2FsZW5kYXJUeXBlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRl
clByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZh
bHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRLZXlib2FyZElucHV0TW9k
ZUlkZW50aWZpZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW06CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHA6CisgICAgICAgIChXVFI6OndwZUtleVN5bUZv
cktleVJlZik6CisgICAgICAgICogd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmg6CisKIDIwMTkt
MDgtMTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSBzdXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
CmluZGV4IGU4MTdhNTczYTU4ZDE1OWQ0Y2YyMzQ5ODJjY2EwNGRjZDY0YjYwNGEuLjhmMTNlZTAw
M2EzZGUwYTBkOTQ4NjExOTEzMjJmMzRmOGFkZWVkMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuY3BwCkBAIC0zNjMsMTEgKzM2MywxMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBhZGRVUkxU
b1JlZGlyZWN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bgog
ICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJp
bmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKG9yaWdpbi5nZXQoKSk7Ci0gICAgYXV0byBvcmln
aW5CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAg
YXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFy
W10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcob3JpZ2luLmdl
dCgpLCBvcmlnaW5CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgbWF4TGVuZ3Ro
ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGRlc3RpbmF0aW9uLmdldCgpKTsK
LSAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1h
eExlbmd0aCArIDEpOworICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5n
R2V0VVRGOENTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCksIGRlc3RpbmF0aW9uQnVmZmVyLmdldCgp
LCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNf
Y2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTEz
MDQsNyArMTMwNCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFdpbGxTZW5kUmVxdWVzdENsZWFy
SGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgQVNTRVJUKCEqZXhj
ZXB0aW9uKTsKIAogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4
Q1N0cmluZ1NpemUoaGVhZGVyLmdldCgpKTsKLSAgICBhdXRvIGhlYWRlckJ1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGhlYWRlckJ1ZmZl
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsg
MSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhoZWFkZXIuZ2V0KCksIGhlYWRlckJ1ZmZl
ci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7
CkBAIC0yMzc5LDcgKzIzNzksNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNob3VsZFBhaW50QnJv
a2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKQogdm9pZCBUZXN0UnVubmVyOjpz
ZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5uZWwpCiB7CiAgICAg
c2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShjaGFu
bmVsKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5n
dGggKyAxKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhj
aGFubmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgV2ViQ29yZVRlc3RT
dXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKHsgYnVmZmVyLmdldCgpIH0pOwpAQCAt
MjQ0OSw3ICsyNDQ5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpydW5VSVNjcmlwdChKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1ZhbHVlUmUKICAgICBjYWNoZVRlc3RS
dW5uZXJDYWxsYmFjayhjYWxsYmFja0lELCBjYWxsYmFjayk7CiAKICAgICBpZiAoIW1fVUlTY3Jp
cHRDb250ZXh0KQotICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENvbnRleHQg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXVFI6OlVJU2NyaXB0Q29udGV4dD4o
KnRoaXMpOwogCiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyhKU1N0cmluZ0dldENoYXJhY3RlcnNQ
dHIoc2NyaXB0KSwgSlNTdHJpbmdHZXRMZW5ndGgoc2NyaXB0KSk7CiAgICAgbV9VSVNjcmlwdENv
bnRleHQtPnJ1blVJU2NyaXB0KHNjcmlwdFN0cmluZywgY2FsbGJhY2tJRCk7CkBAIC0yNTA2LDcg
KzI1MDYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAgYXV0byBmaWxlID0g
YWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUsIG51bGxwdHIpKTsK
ICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBmaWxl
QnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihmaWxlQnVm
ZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwgZmls
ZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIG1fb3BlblBhbmVsRmls
ZXMucHVzaF9iYWNrKGZpbGVCdWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDY0ZGIxZDE3ZjliYzljYjhjZTZkODJmOWI3N2RiZjM4
NzVhY2EwY2EuLjk1N2M0ZTYzOTU5MTE4NjM1ZDcyMjE1ZTBjYWM3Y2I2ZmQ3MjBjZGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MzUsNyArMTUz
NSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAqZnJhbWUp
CiAgICAgLy8gdGhlIHJlc3VsdCB3aXRob3V0IGFueSBjb252ZXJzaW9uLgogICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpbm5lclRleHQpKTsKICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmdSZWYuZ2V0
KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNp
emUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdH
ZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmdSZWYuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVm
ZmVyU2l6ZSk7CiAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwgU3RyaW5nOjpmcm9t
VVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDQ2MWJkM2RmM2ViYjI2MDNhYzMyMTgy
ODgyMThkZDhmNjkxNjhmZmQuLjNiZTMzMjIxZDZiM2ViYzM1NmQ1MWUzMzRhMjRkOTI5YWUyNTNh
OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250
cm9sbGVyLm1tCkBAIC01NjgsNyArNTY4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDbGFz
c01ldGhvZFN3aXp6bGVyPiBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclYKIHsK
ICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKICAgICAg
ICAgdmlldyA9IFsoV2ViSFRNTFZpZXcgKil2aWV3IF9oaXRWaWV3Rm9yRXZlbnQ6ZXZlbnRdOwot
ICAgIHJldHVybiAhW3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11dID8gc3Rk
OjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxl
Y3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVk
RXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSkgOiBOVUxMOworICAgIHJldHVybiAhW3ZpZXcgaXNL
aW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11dID8gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3
aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSkg
OiBOVUxMOwogfQogCiBzdGF0aWMgTlNVSW50ZWdlciBzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9i
amVjdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAKaW5k
ZXggZWYyZDJlZmI4NTlmNGI4YTIyZjMwYzQ2N2FjZTFmOGFhZDE1N2E0ZC4uNzZhMjFhNThhOWY2
NmRkZTE2MDcyOWY4ZmVlMWUxNWY5NDllNjYyNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EUlREYXRhT2JqZWN0LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIFNURE1FVEhPRElNUCBEUlRE
YXRhT2JqZWN0OjpTZXREYXRhKF9Jbl8gRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBfSW5fIFNUR01F
RElVTSoKICAgICBpZiAoIXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAKLSAgICBhdXRvIGZvcm1hdGV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFU
RVRDPigpOworICAgIGF1dG8gZm9ybWF0ZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0Z01l
ZGl1bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5KGZv
cm1hdGV0Yy5nZXQoKSwgc2l6ZW9mKEZPUk1BVEVUQykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggYzgwZGYxYmU1ZjJkZTQ3ZDNiODMx
NjM3ZWY2ZTlmYmNkOTM0YzhlNi4uMTFjOTMzOWIxNmQ4MDRkMmMyMDFjOTMyOWY0YThjMzU0NDJh
ODNjYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVn
YXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
Y3BwCkBAIC03Miw5ICs3Miw5IEBAIHN0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChJV2ViRnJhbWUqIHdlYkZyYW1lKQogfQogCiBGcmFtZUxvYWREZWxlZ2F0ZTo6RnJhbWVM
b2FkRGVsZWdhdGUoKQotICAgIDogbV9nY0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxHQ0Nv
bnRyb2xsZXI+KCkpCi0gICAgLCBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+KCkpCi0gICAgLCBtX3RleHRJbnB1dENvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5wdXRDb250cm9sbGVyPigpKQorICAgIDogbV9n
Y0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCisgICAgLCBtX2FjY2Vzc2li
aWxpdHlDb250cm9sbGVyKG1ha2VVbmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+KCkpCisg
ICAgLCBtX3RleHRJbnB1dENvbnRyb2xsZXIobWFrZVVuaXF1ZTxUZXh0SW5wdXRDb250cm9sbGVy
PigpKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxl
Z2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKaW5kZXgg
ZjBhZGJjZTQ3OTZmYWJmNGYwZDQyYjI3MTE2MzM3MDFhYzc4MTMxNC4uNDdhYTI3MmJmMTk1Y2Q5
YTI1YWYyODY1NWQzNzFmNDE2MDBmNDU5OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURl
bGVnYXRlLmNwcApAQCAtMTAxLDggKzEwMSw4IEBAIGNsYXNzIERSVFVuZG9NYW5hZ2VyIHsKIH07
CiAKIERSVFVuZG9NYW5hZ2VyOjpEUlRVbmRvTWFuYWdlcigpCi0gICAgOiBtX3JlZG9TdGFjayhz
dGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKLSAgICAsIG1fdW5kb1N0YWNrKHN0ZDo6
bWFrZV91bmlxdWU8RFJUVW5kb1N0YWNrPigpKQorICAgIDogbV9yZWRvU3RhY2sobWFrZVVuaXF1
ZTxEUlRVbmRvU3RhY2s+KCkpCisgICAgLCBtX3VuZG9TdGFjayhtYWtlVW5pcXVlPERSVFVuZG9T
dGFjaz4oKSkKIHsKIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgRFJUVW5kb01hbmFnZXI6
OnVuZG8oKQogfQogCiBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkKLSAgICA6IG1fdW5kb01hbmFn
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKKyAgICA6IG1fdW5kb01hbmFn
ZXIobWFrZVVuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKICAgICAsIG1fZGVza3RvcE5vdGlmaWNh
dGlvbnMobmV3IERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIpCiB7CiAgICAgbV9mcmFt
ZS5ib3R0b20gPSAwOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUo
KQogCiB2b2lkIFVJRGVsZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIoKQogewotICAgIG1fdW5kb01h
bmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOworICAgIG1fdW5kb01h
bmFnZXIgPSBtYWtlVW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOwogfQogCiBIUkVTVUxUIFVJRGVs
ZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lk
KiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3Bw
IGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmluZGV4IGJlNjQ2MGU1NmI3YjcwY2Qy
NDgwZmM4N2RlMmI5YmE5NzBlNThjMzguLjQzOTE5Mjk3OTFkZDY3MTMxYzg1OGExNjY4OWM1MmJh
ZGMxZGQ4NjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcAorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAgLTEyOSw4ICsxMjksOCBAQCBzdGF0
aWMgZ2Jvb2xlYW4gZGVjaWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyAqLCBXZWJL
aXRQZXJtaXNzaW9uUmVxdWVzdAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXUEVUb29saW5nQmFj
a2VuZHM6OlZpZXdCYWNrZW5kPiBjcmVhdGVWaWV3QmFja2VuZCh1aW50MzJfdCB3aWR0aCwgdWlu
dDMyX3QgaGVpZ2h0KQogewogICAgIGlmIChoZWFkbGVzc01vZGUpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZD4o
d2lkdGgsIGhlaWdodCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFVG9vbGluZ0Jh
Y2tlbmRzOjpXaW5kb3dWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZD4od2lk
dGgsIGhlaWdodCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpX
aW5kb3dWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CiB9CiAKIHR5cGVkZWYgc3RydWN0IHsK
QEAgLTI1MSw3ICsyNTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAg
ICAgICBudWxscHRyKSk7CiAgICAgZ19vYmplY3RfdW5yZWYoc2V0dGluZ3MpOwogCi0gICAgYmFj
a2VuZFB0ci0+c2V0SW5wdXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJbnB1dENsaWVudD4obG9v
cCwgd2ViVmlldykpOworICAgIGJhY2tlbmRQdHItPnNldElucHV0Q2xpZW50KG1ha2VVbmlxdWU8
SW5wdXRDbGllbnQ+KGxvb3AsIHdlYlZpZXcpKTsKICNpZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJ
TElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCiAgICAgYXV0byogYWNjZXNzaWJsZSA9IHdwZV92
aWV3X2JhY2tlbmRfZGlzcGF0Y2hfZ2V0X2FjY2Vzc2libGUod3BlQmFja2VuZCk7CiAgICAgaWYg
KEFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaCBiL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCmluZGV4IDRlMDIwZjE5
NmNkMDMzZDYxZWUwZTYyOGY2YTFlNTljYTFjMzM0NTguLjBiODRkMmQ0NTQ1NTgzZGU5ZmMwZGVj
MTJhNGFhODhhNjU5ZWQxOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCkBAIC02OCw2ICs2OCw3IEBAIHR5
cGVkZWYgZW51bSAgewogfSBDYWxsYmFja1R5cGU7CiAKIGNsYXNzIFVJU2NyaXB0Q29udGV4dCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
VUlTY3JpcHRDb250ZXh0KTsKIHB1YmxpYzoKICAgICBVSVNjcmlwdENvbnRleHQoVUlTY3JpcHRD
b250ZXh0RGVsZWdhdGUmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29j
b2EvQ2xhc3NNZXRob2RTd2l6emxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9D
bGFzc01ldGhvZFN3aXp6bGVyLmgKaW5kZXggMjhkYjEwYTQ3OTk2MzBjNjRjNTVkMDc4NmMwMGVl
MDk0ODkxNDVlMi4uMzliNGU1ZWE3MTgzNjg4Y2RlYzliZWZjYzk2NGNlODkzYTU0M2YwNyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVy
LmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVy
LmgKQEAgLTI2LDkgKzI2LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG9iamMvcnVu
dGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKIGNsYXNzIENsYXNzTWV0aG9kU3dpenpsZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENsYXNzTWV0aG9kU3dpenps
ZXIpOwogcHVibGljOgogICAgIENsYXNzTWV0aG9kU3dpenpsZXIoQ2xhc3MsIFNFTCwgSU1QKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRob2RT
d2l6emxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1ldGhvZFN3
aXp6bGVyLmgKaW5kZXggYjhhMGIwYjE4ZDEzMWVjYzk5YjI2YTM5MWM4OTBmOWY2YzZjMDcyZS4u
NWQ3ZDg3NWVlZGU2ZWFlOGZkNDI5ZWI0YTE3NTA2YzM4ZGE2MzVlYiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmgKKysrIGIv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogY2xhc3MgSW5z
dGFuY2VNZXRob2RTd2l6emxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zdGFuY2VNZXRob2RTd2l6emxlcik7CiBwdWJsaWM6CiAg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlcihDbGFzcywgU0VMLCBJTVApOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3Vu
dGVycy5oCmluZGV4IGY5ZWEyMjQwMjYxNTBkOGUxYWM2YmI3NjE1YjZkZTM4OTBhZjY3MGUuLmFi
NWM1MmY3NWQxYWM2YWY5NjBhYzE0Y2E3MGI1Y2I3NGZhMzYyODggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50
ZXJzLmgKQEAgLTI3LDYgKzI3LDggQEAKICNpZm5kZWYgQ291bnRlcnNfaAogI2RlZmluZSBDb3Vu
dGVyc19oCiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCiBzdHJ1Y3QgQ29weU1vdmVD
b3VudGVyIHsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CiAgICAgc3Rh
dGljIHVuc2lnbmVkIGNvcHlDb3VudDsKQEAgLTUwLDYgKzUyLDcgQEAgc3RydWN0IENvcHlNb3Zl
Q291bnRlciB7CiAKIAogc3RydWN0IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIgeworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29u
c3RydWN0aW9uQ291bnQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGRlc3RydWN0aW9uQ291bnQ7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKaW5kZXggMjEzNmU5OGQ4ZWJiODc1
ZDU5N2ZjNmUwN2M3YjAxZWQ1Yjg0YWUxNi4uNmEyMzM2MzI5NDFhY2Y2MDcwNTk0OTQyNjQwMWIz
MjczMzdjNzA4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKQEAgLTc1
LDcgKzc1LDcgQEAgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgcnVuSlNUZXN0KGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIFdLUGEKICAgICBVdGlsOjpydW4oJmNvbnRl
eHQuZGlkRmluaXNoKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhp
bXVtVVRGOENTdHJpbmdTaXplKGNvbnRleHQuYWN0dWFsU3RyaW5nLmdldCgpKTsKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVy
U2l6ZSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhjb250ZXh0LmFjdHVhbFN0cmluZy5n
ZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICAKICAgICByZXR1cm4gY29tcGFy
ZUpTUmVzdWx0KHNjcmlwdCwgYnVmZmVyLmdldCgpLCBleHBlY3RlZFJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCmluZGV4IDhmOGQ3NjhhNTNjMjc1MWEy
NDNlMDU5NWUyYzBjMGY0NDVkZDk2YzguLmJiYmZmNzA5ZTY3ZDM1OWI0ZTQ4MTcxZWQ3YzRjMjQw
MDhhNTY3ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRp
ZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIFdLQ29udGV4dFJlZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5k
bGVUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0TmFtZSwgV0tUCiBzdGQ6OnN0cmluZyB0b1NU
RChXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmlu
Z0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAg
c2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZm
ZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZ2V0
KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3
LmgKaW5kZXggYWQyYTczMmQ1MTk0N2JiYzdhZmM2NGUyN2Q0MjE1Y2UzMjg3ZGRlZS4uMGMyN2E0
NjE2NDVmYmExMmE1YzY5NWQ5MzI2NDMwNTI2YzRlZjEyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtV2ViVmlldy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtV2ViVmll
d19oCiAjZGVmaW5lIFBsYXRmb3JtV2ViVmlld19oCiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+
CiAjZW5kaWYKQEAgLTYzLDYgKzY1LDcgQEAgdHlwZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZp
ZXJzOwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBs
YXRmb3JtV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmKTsKICAgICBleHBsaWNpdCBQbGF0
Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IDRiMTBjODZhMmFiNzMyZTFl
YTYyNzQ4NGNjNzg5NDBmYjZjZDZlOTYuLjJhMDZmOGJhNWNhOWZlYjQ5MmEzNTIyYzVjNjU1MDEz
OGQyMjM3ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVj
dGVkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAK
QEAgLTQwNyw2ICs0MDcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgZGVzdHJ1Y3RvcnMpCiBzdGF0
aWMgaW50IHNub3dmbGFrZXMgPSAwOwogc3RhdGljIGludCBtZWx0ZWQgPSAwOwogc3RydWN0IHNu
b3dmbGFrZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRp
YyB2b2lkIHJlc2V0KCkgeyBzbm93Zmxha2VzID0gbWVsdGVkID0gMDsgfQogICAgIHNub3dmbGFr
ZSgpIHsgKytzbm93Zmxha2VzOyB9CiAgICAgfnNub3dmbGFrZSgpIHsgKyttZWx0ZWQ7IH0KQEAg
LTQxNiw3ICs0MTcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKIHsKICAgICAv
LyBVbmlxdWUgc25vd2ZsYWtlcyBjYW5ub3QgYmUgY29waWVkLgogICAgIHsKLSAgICAgICAgYXV0
byBzID0gbWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAg
ICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAg
ICAgICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRl
ZCwgMCk7CiAgICAgfQpAQCAtNDI1LDcgKzQyNiw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlx
dWVfcHRyKQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBz
ID0gbWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAg
ICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAg
ICAgIFVuZXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IGMoV1RGTW92ZShzKSk7
CiAgICAgICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1l
bHRlZCwgMCk7CkBAIC00NDYsNyArNDQ3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9w
dHIpCiAgICAgfTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNu
b3dmbGFrZT4sIGludD4gcyhzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAg
IEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMobWFrZVVuaXF1ZTxz
bm93Zmxha2U+KCkpOwogICAgICAgICBwbG93KFdURk1vdmUocykudmFsdWUoKSk7CiAgICAgfQog
ICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ1NCw3ICs0NTUsNyBAQCBURVNUKFdU
Rl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7
Ci0gICAgICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFr
ZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhw
ZWN0ZWQ8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZCht
YWtlVW5pcXVlPHNub3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3Io
KSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ2Miw3ICs0NjMs
NyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0
KCk7CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93
Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKSk7
CisgICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1h
a2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RG
TW92ZShzKS5lcnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCmlu
ZGV4IDg0ZGE1ZWMzZmZjMjQ4YWNkZDllMzYzMzAzOGM2OWRhZTg5MTIwOTkuLjdiOGZhZjI4OGFi
YzA3Y2ZhZjhiNTI3MTIzOGY3NmQwMTMwMTJlZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBURVNU
KFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8
c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRl
ZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChX
VEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yNTksNyArMjU5LDcgQEAgVEVT
VChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleUluaXRpYWxDb3VudCkKIAogICAgIEhh
c2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBoYXNoQ291
bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAxMik7CiAKICAgICBFWFBFQ1RfRVEoMXUs
IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI5
OCw3ICsyOTgsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRV
c2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGlu
dD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAg
IGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMTIsNyArMzEy
LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5n
UmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4g
aGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFz
aENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMyMyw3ICszMjMsNyBA
QCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRl
cikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50
ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsK
KyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGlu
dD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRT
ZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMzNyw3ICszMzcsNyBAQCBURVNUKFdU
Rl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAog
ICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1
ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAg
aGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggMWUxNjNkMzg5OThlNmJhYmZmZjUzODQx
M2NjYTI4YWE2ZDI5ODk4Mi4uYTgwY2E3NDk0YThmOWE3OTY3ZTFlNDk0NmZlOGNjYTYzOWNiYjU4
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTE5MSw3
ICsxOTEsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoTWFw
PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRy
KSwgMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6
OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBURVNUKFdURl9IYXNoTWFw
LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6
dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQo
KTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI0NCw3ICsyNDQs
NyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50
ZXIpCiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAg
aW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0
ciksIDIpOwogCkBAIC0yNTUsNyArMjU1LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRy
S2V5X0dldFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxp
bnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxp
bnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBURVNUKFdU
Rl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFz
aE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4g
bWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpLCAyKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1
ZVB0cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9w
dHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5p
cXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAt
NTYzLDEyICs1NjMsMTIgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1VuaXF1ZVBvaW50ZXIp
CiB7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkPj4gbWFw
OwogICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDEpOyB9KTsKKyAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPHVuc2lnbmVkPigxKTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1hcC5n
ZXQoMSkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1bHQuaXRlcmF0b3ItPmtleSk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgYXV0
byBhZGRSZXN1bHQyID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PHVuc2lnbmVkPigyKTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUo
MSwgW10geyByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+
KDIpOyB9KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgxdSwgKmFkZFJlc3VsdDIuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAg
RVhQRUNUX0VRKDF1LCBhZGRSZXN1bHQyLml0ZXJhdG9yLT5rZXkpOwpAQCAtNTkwLDYgKzU5MCw3
IEBAIFRFU1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9SZWZQdHIpCiB9CiAKIGNsYXNzIE9iamVjdFdp
dGhSZWZMb2dnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IE9iamVjdFdpdGhSZWZMb2dnZXIoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgICAgIDog
bV9sb2dnZXIoV1RGTW92ZShsb2dnZXIpKQpAQCAtNjA0LDcgKzYwNSw3IEBAIHZvaWQgdGVzdE1v
dmluZ1VzaW5nRW5zdXJlKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogewogICAgIEhhc2hNYXA8
dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogICAg
IAotICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0
V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CisgICAgbWFwLmVuc3VyZSgxLCBb
Jl0geyByZXR1cm4gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dl
cikpOyB9KTsKIH0KIAogdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBs
b2dnZXIpCkBAIC02MTIsNyArNjEzLDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJl
ZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRy
PE9iamVjdFdpdGhSZWZMb2dnZXI+PiBtYXA7CiAKICAgICBhdXRvJiBzbG90ID0gbWFwLmFkZCgx
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgc2xvdCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsKKyAgICBzbG90ID0gbWFrZVVu
aXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOwogfQogCiBURVNUKFdU
Rl9IYXNoTWFwLCBFbnN1cmVfTGFtYmRhc0NhcHR1cmluZ0J5UmVmZXJlbmNlKQpAQCAtNjgzLDYg
KzY4NCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFZhbHVlSXNEZXN0cnVjdGVkT25SZW1vdmUpCiBU
RVNUKFdURl9IYXNoTWFwLCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKIHsKICAgICBzdHJ1
Y3QgRGVyZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAgICAgICAgewogICAgICAgICAg
ICAgKytjb3VudDsKQEAgLTY5Nyw3ICs2OTksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJO
b3RaZXJvZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2
ZWRCdWNrZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VV
bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hNYXA8UmVmUHRyPERlcmVmT2JzZXJ2
ZXI+LCBpbnQ+IG1hcDsKICAgICBtYXAuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSwgNSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCmluZGV4IDcxZWNmZGRi
ODQyYjZiZDUxNjQxY2EwNWI2MTA4YWQ0OGY2MmJiN2QuLjg3MjY4Yzc0ZjBjYjhmYzE0OWViZjYw
Yzg1ODhmY2VkMzU4MWEyMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hT
ZXQuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5
KQogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVu
aXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIHNldC5hZGQoV1RGTW92
ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRFU1QoV1RG
X0hhc2hTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hT
ZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5n
ZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE1OCw3ICsxNTgs
NyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50
ZXIpCiB7CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0
byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCog
cHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsK
IApAQCAtMTcxLDcgKzE3MSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1v
dmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1
bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAg
ICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwog
ICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIFRF
U1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAg
SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNl
dDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVl
UHRyKSk7CiAKQEAgLTI4Myw2ICsyODMsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBDb3B5Q2FwYWNp
dHlJc05vdE9uQm91bmRhcnkpCiBURVNUKFdURl9IYXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZv
cmVEZXJlZikKIHsKICAgICBzdHJ1Y3QgRGVyZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkK
ICAgICAgICAgewogICAgICAgICAgICAgKytjb3VudDsKQEAgLTI5Nyw3ICsyOTgsNyBAQCBURVNU
KFdURl9IYXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3Qg
RGVyZWZPYnNlcnZlciogb2JzZXJ2ZWRCdWNrZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAg
IGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAg
YXV0byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hT
ZXQ8UmVmUHRyPERlcmVmT2JzZXJ2ZXI+PiBzZXQ7CiAgICAgc2V0LmFkZChhZG9wdFJlZihvYnNl
cnZlci5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
TGlzdEhhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hT
ZXQuY3BwCmluZGV4IDY1N2JlNDFkNjIwNzI0NDY3YTU1NDllMmFiNWExOTQxYzRlMzczYzEuLmI3
NzBhNWIyN2MxZDJiMDk1YTViYjU5ZDY1YWMzZjRkYzRlNGU2OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBU
RVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgTGlzdEhhc2hTZXQ8c3Rk
Ojp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAg
YXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAog
ICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0
aW9uQ291bnQpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlx
dWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVu
aXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAg
ICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00MTAsNyArNDEwLDcgQEAgVEVT
VChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikK
IHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1
dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVl
UHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRv
IHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikp
OwogCkBAIC00MjEsOSArNDIxLDkgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktl
eV9JbnNlcnRCZWZvcmVVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1
bmlxdWVfcHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgyID0gc3RkOjpt
YWtlX3VuaXF1ZTxpbnQ+KDIpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDIpOwogICAgIGF1dG8gcHRyV2l0aDIgPSB1bmlx
dWVQdHJXaXRoMi5nZXQoKTsKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGg0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDQpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDQpOwogICAgIGF1dG8gcHRyV2l0aDQgPSB1bmlxdWVQdHJX
aXRoNC5nZXQoKTsKIAogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyV2l0aDIpKTsKQEAg
LTQzNSw3ICs0MzUsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2Vy
dEJlZm9yZVVzaW5nUmF3UG9pbnRlcikKICAgICBBU1NFUlRfRVEocHRyV2l0aDQsIGxpc3QubGFz
dCgpLmdldCgpKTsKICAgICBBU1NFUlRfRVEoNCwgKmxpc3QubGFzdCgpLmdldCgpKTsKIAotICAg
IGF1dG8gdW5pcXVlUHRyV2l0aDMgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMyk7CisgICAgYXV0
byB1bmlxdWVQdHJXaXRoMyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4o
Myk7CiAgICAgYXV0byBwdHJXaXRoMyA9IHVuaXF1ZVB0cldpdGgzLmdldCgpOwogCiAgICAgbGlz
dC5pbnNlcnRCZWZvcmUocHRyV2l0aDQsIFdURk1vdmUodW5pcXVlUHRyV2l0aDMpKTsKQEAgLTQ2
Miw3ICs0NjIsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVz
aW5nUmF3UG9pbnRlcikKIAogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8g
dW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwog
ICAgIGF1dG8qIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVu
aXF1ZVB0cikpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9M
b2NrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCmluZGV4IDJk
Y2NlZGNhZGNjNmMyMjI3M2RlYmMyMGYzZmY2NzdjODczMjkwMjcuLjVmZDMxYmYxYzlhYmVjZmI4
YWJlNzM1NjA4YTQ3YzU2MDQzMDQ3NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0xvY2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xv
Y2suY3BwCkBAIC00Miw5ICs0Miw5IEBAIHN0cnVjdCBMb2NrSW5zcGVjdG9yIHsKIHRlbXBsYXRl
PHR5cGVuYW1lIExvY2tUeXBlPgogdm9pZCBydW5Mb2NrVGVzdCh1bnNpZ25lZCBudW1UaHJlYWRH
cm91cHMsIHVuc2lnbmVkIG51bVRocmVhZHNQZXJHcm91cCwgdW5zaWduZWQgd29ya1BlckNyaXRp
Y2FsU2VjdGlvbiwgdW5zaWduZWQgbnVtSXRlcmF0aW9ucykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8TG9ja1R5cGVbXT4gbG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPExvY2tUeXBlW10+KG51bVRo
cmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IHN0ZDo6
bWFrZV91bmlxdWU8ZG91YmxlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxU
aHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPExvY2tUeXBlW10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8TG9ja1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8ZG91YmxlW10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8ZG91
YmxlW10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJl
YWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8
VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAg
Zm9yICh1bnNpZ25lZCB0aHJlYWRHcm91cEluZGV4ID0gbnVtVGhyZWFkR3JvdXBzOyB0aHJlYWRH
cm91cEluZGV4LS07KSB7CiAgICAgICAgIHdvcmRzW3RocmVhZEdyb3VwSW5kZXhdID0gMDsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKaW5kZXggNDUyZTIy
NzcxZGMwNjRhZGFhZmU2MjBlYjMzZTgwMTMwZjc5ZjE5Ny4uZTAwYTA5YjJhMTdhYTczNDg1NmU0
MmMxMTQ1Y2JlNjA4NjNmMGEwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUGFya2luZ0xvdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UGFya2luZ0xvdC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3QgU2luZ2xlTGF0Y2hUZXN0
IHsKIAogdm9pZCBydW5QYXJraW5nVGVzdCh1bnNpZ25lZCBudW1MYXRjaGVzLCB1bnNpZ25lZCBk
ZWxheSwgdW5zaWduZWQgbnVtVGhyZWFkcywgdW5zaWduZWQgbnVtU2luZ2xlVW5wYXJrcykKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gc3RkOjptYWtl
X3VuaXF1ZTxTaW5nbGVMYXRjaFRlc3RbXT4obnVtTGF0Y2hlcyk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFNpbmdsZUxhdGNoVGVzdFtdPiB0ZXN0cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKIAogICAgIGZvciAodW5zaWdu
ZWQgbGF0Y2hJbmRleCA9IG51bUxhdGNoZXM7IGxhdGNoSW5kZXgtLTspCiAgICAgICAgIHRlc3Rz
W2xhdGNoSW5kZXhdLmluaXRpYWxpemUobnVtVGhyZWFkcyk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCmluZGV4IDA4MWRmOWU0ZmMxZDI1MWQ4MTRiMjI2
NGJkMmQwZTA1MmMwYmQ0MWYuLmY0ZWY5ODNiMWE5ZmJlODk4MDdjNzVhYzI4ZmRiNjI2ZDlhOTZh
MTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCkBA
IC0xNzAsNyArMTcwLDcgQEAgVEVTVChXVEYsIFJlZkNvdW50ZXIpCiBURVNUKFdURiwgUmVmQ291
bnRlckRlbGV0ZUNvdW50ZXJXaXRoT3V0c3RhbmRpbmdUb2tlbnMpCiB7CiAgICAgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdENvdW50ZXI+IGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRlc3RDb3VudGVyPihbJl0oUmVmQ291bnRlckV2ZW50IGV2ZW50KSB7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IG1ha2VVbmlxdWU8VGVzdENvdW50ZXI+
KFsmXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsKICAgICAgICAgICAgIGlmICghY291bnRlci0+
dmFsdWUoKSkKICAgICAgICAgICAgICAgICBjb3VudGVyID0gbnVsbHB0cjsKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAppbmRleCA0ZDJi
MjJhYTU0ZjhiMDI1NDgwZjU5ZTU2MWEzY2NlNzE1NTAyMzEyLi4xYWZlM2U5Nzc5YmI4NDg4N2U5
NDMwZGU0MTcyNmM3NDM4NTMyZmRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9VbmlxdWVSZWYuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1VuaXF1ZVJlZi5jcHAKQEAgLTMwLDggKzMwLDExIEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKICAgICAKLWNsYXNzIEEgeyB9OworY2xhc3MgQSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Cit9OwogY2xhc3MgQiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQihpbnQgYSwgaW50IGIsIGludCBjKQogICAgICAgICA6IGEoYSkKQEAgLTQz
LDYgKzQ2LDcgQEAgY2xhc3MgQiB7CiAgICAgaW50IGM7CiB9OwogY2xhc3MgQyB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQyhVbmlxdWVSZWY8QT4mJiBhKQog
ICAgICAgICA6IGEoV1RGTW92ZShhKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1ZhcmlhbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFy
aWFudC5jcHAKaW5kZXggMGVmMWYxZGE0NGJhYzUxNTRmZmZkMzMyMTM5NWU5ZjFlMmQyYTdjMi4u
NTFlY2EwNzY4ZDJjY2UxYzlhMzI5NTU1MmQzNTAwOWZmNGZkNTZiYiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBURVNUKFdU
Rl9WYXJpYW50LCBDb25zdHJ1Y3RvckRlc3RydWN0b3IpCiAgICAgQ29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcjo6VGVzdGluZ1Njb3BlIHNjb3BlOwogCiAgICAgewotICAgICAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKKyAgICAgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CiAgICAgICAgIFZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IHYgPSBXVEZNb3ZlKHVuaXF1ZVB0cik7CiAKICAg
ICAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1
Y3Rpb25Db3VudCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9X
ZWFrUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCmlu
ZGV4IDE1MGI5Yjc2YzhhNTY1ZTM2NTU0ODM2ZTBiYmVjMDUwNWM3ODQ4ZjIuLjdlNjMwNjkzZWVj
NjA0MWEzNzUwNDRhZjk0OWQ4NzQ2YjY5NWNhNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1dlYWtQdHIuY3BwCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBJbnQgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8SW50PiB7CiB9OwogCiBjbGFzcyBCYXNlIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPEJhc2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBCYXNlKCkgeyB9CiAKQEAgLTU3OCwxMCArNTc5LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdl
YWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNp
dHkoKSwgMHUpOwogICAgICAgICBFWFBFQ1RfVFJVRShpbml0aWFsQ2FwYWNpdHkgLyBtYXhMb2Fk
Q2FwKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluaXRpYWxDYXBhY2l0eSAv
IG1heExvYWRDYXA7ICsraSkgewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFz
ZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAg
IG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAgICAgICBvdGhlck9iamVj
dHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKSk7CisgICAgICAgICAgICBvdGhlck9i
amVjdHMuYXBwZW5kKG1ha2VVbmlxdWU8QmFzZT4oKSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNl
dC5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKHNfYmFz
ZVdlYWtSZWZlcmVuY2VzLCBvdGhlck9iamVjdHMuc2l6ZSgpKTsKQEAgLTYxNSw3ICs2MTYsNyBA
QCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldEV4cGFuc2lvbikKICAgICAgICAgRVhQRUNU
X0VRKHdlYWtIYXNoU2V0LmNhcGFjaXR5KCksIDB1KTsKICAgICAgICAgdW5zaWduZWQgb2JqZWN0
Q291bnQgPSBpbml0aWFsQ2FwYWNpdHkgKiAyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgb2JqZWN0Q291bnQ7ICsraSkgewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlx
dWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAg
ICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgICAgICB3ZWFr
SGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7CkBAIC02NjcsMTAgKzY2OCwxMCBAQCBURVNUKFdU
Rl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVzRW1wdHkpCiAgICAgewogICAgICAgICBXZWFr
SGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFz
ZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpmaXJzdE9iamVjdCk7CiAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOwor
ICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAg
ICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChX
VEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdl
dCgpID09IGZpcnN0T2JqZWN0LmdldCgpKTsKQEAgLTczNCw4ICs3MzUsOCBAQCBURVNUKFdURl9X
ZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogCiAgICAgd2hpbGUgKDEpIHsKICAgICAg
ICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7Ci0gICAgICAgIGF1dG8gZmlyc3RPYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7Ci0gICAgICAgIGF1dG8gbGFzdE9iamVjdCA9
IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1h
a2VVbmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxC
YXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAg
d2Vha0hhc2hTZXQuYWRkKCpsYXN0T2JqZWN0KTsKICAgICAgICAgaWYgKHdlYWtIYXNoU2V0LmJl
Z2luKCkuZ2V0KCkgIT0gZmlyc3RPYmplY3QuZ2V0KCkpCkBAIC03NTksMTAgKzc2MCwxMCBAQCBU
RVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogICAgIHsKICAgICAgICAg
V2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QmFzZT4+IG9iamVjdHM7Ci0gICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBtYWtl
VW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqbm9uRmlyc3RPYmplY3Qp
OwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlx
dWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigp
OwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2Jq
ZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAgfSB3aGlsZSAod2Vha0hhc2hT
ZXQuYmVnaW4oKS5nZXQoKSA9PSBub25GaXJzdE9iamVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCmluZGV4IDJhYWI2
NWRkOGZkN2VmMDcwNTFmYjZmNzU2NzU4Y2RlNzAyZTA3YTEuLjgxZDdiYTI5MWFlOWY0YWI3Y2Yy
ZTVmOWFhZDYyYzk0MjQzNTM2NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIENBUmlu
Z0J1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgdmlydHVhbCB2b2lkIFNl
dFVwKCkKICAgICB7CiAgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICAg
ICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAg
ICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPENBUmlu
Z0J1ZmZlcj4oKTsKICAgICB9CiAKICAgICAvLyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oZG91
YmxlIHNhbXBsZVJhdGUsIFVJbnQzMiBudW1DaGFubmVscywgUENNRm9ybWF0IGZvcm1hdCwgYm9v
bCBpc0ludGVybGVhdmVkLCBzaXplX3QgY2FwYWNpdHkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNzc4ZTYx
NTVmMDZjYzEyODM5Nzk3NWYwNDU4NzEyYTJjNzEwNDBmYS4uZGNhNDYzNjAyZTk2ZDYwYTA0NTEz
ODEyMWNiYmRjZWZiZWU5ZTVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiBzdGF0aWMgdW5zaWduZWQgZGVsZXRpb25Db3VudDsKIAog
Y2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNF
eHByZXNzaW9uTm9kZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlKCkKICAgICB7CkBAIC01Miw3
ICs1Myw3IEBAIGNsYXNzIENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZSA6IHB1YmxpYyBXZWJD
b3JlOjpDYWxjRXhwcmVzc2lvbk5vZGUgewogCiBzdGF0aWMgUmVmPFdlYkNvcmU6OkNhbGN1bGF0
aW9uVmFsdWU+IGNyZWF0ZVRlc3RWYWx1ZSgpCiB7Ci0gICAgYXV0byBub2RlID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGU+KCk7CisgICAgYXV0byBub2RlID0g
bWFrZVVuaXF1ZTxDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGU+KCk7CiAgICAgcmV0dXJuIFdl
YkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG5vZGUpLCBXZWJDb3JlOjpW
YWx1ZVJhbmdlQWxsKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcAppbmRleCBmNThkYThhNDIwNzNlYzk5
YmJlZTM0YTg1YmVjMzRjMDg1YzUyYTY0Li4wYzFhMDY5ZjEzYzM5YzQwOWU1ZDVlMWIwM2E3ZTky
YmY5YjM2NmMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Rmlkb0hpZE1lc3NhZ2VUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFRFU1QoRmlk
b0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0U2l6ZSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQg
PSAweDA1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogCi0gICAgYXV0byBpbml0
UGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5z
aXplKCkpOworICAgIGF1dG8gaW5pdFBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNr
ZXQ+KGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBWZWN0b3I8dWludDhf
dD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoNjR1LCBpbml0UGFja2V0LT5n
ZXRTZXJpYWxpemVkRGF0YSgpLnNpemUoKSk7CiAKLSAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tl
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElk
LCAwLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IG1ha2VV
bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRh
dGEpKTsKICAgICBFWFBFQ1RfRVEoNjR1LCBjb250aW51YXRpb25QYWNrZXQtPmdldFNlcmlhbGl6
ZWREYXRhKCkuc2l6ZSgpKTsKIH0KIApAQCAtNzAsNyArNzAsNyBAQCBURVNUKEZpZG9IaWRNZXNz
YWdlVGVzdCwgVGVzdFBhY2tldERhdGEpCiAgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHhGNTA2
MDcwODsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2
aWNlQ29tbWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7Ci0gICAgYXV0byBp
bml0UGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElk
LCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5p
dFBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBW
ZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKICAgICBzaXplX3QgaW5kZXggPSAw
OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWQgPSBpbml0UGFja2V0LT5nZXRTZXJp
YWxpemVkRGF0YSgpOwpAQCAtOTQsNyArOTQsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwg
VGVzdFBhY2tldENvbnN0cnVjdG9ycykKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDEx
fTsKICAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6
a1dpbms7CiAgICAgc2l6ZV90IGxlbmd0aCA9IGRhdGEuc2l6ZSgpOwotICAgIGF1dG8gb3JpZ1Bh
Y2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21k
LCBXVEZNb3ZlKGRhdGEpLCBsZW5ndGgpOworICAgIGF1dG8gb3JpZ1BhY2tldCA9IG1ha2VVbmlx
dWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5n
dGgpOwogCiAgICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG9y
aWdQYWNrZXQtPnBheWxvYWRMZW5ndGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9yaWdEYXRh
ID0gb3JpZ1BhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IDFlZDEzMjhmODEzMDll
MTJlMTM3MWNiM2FkZmU2YjBhOTc4M2VlYjYuLjIyODM4M2EwZjMwYTliMTM5ZjZhYWY0M2Y5NWNl
ZGQ4MDkxNjZlNmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWxlTW9uaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpbGVNb25pdG9yLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRl
c3QsIERldGVjdENoYW5nZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVh
dGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtd
IChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9
IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJl
ZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAg
ICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMTkw
LDcgKzE5MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdl
cykKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBR
dWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRv
cj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8Rmls
ZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMjUwLDcgKzI1MCw3IEBAIFRF
U1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogCiAgICAgYXV0byB0ZXN0UXVl
dWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1v
bml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVz
dFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7
CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRo
KCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUg
dHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpN
b2RpZmljYXRpb246CkBAIC0yODksNyArMjg5LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwg
RGV0ZWN0Q2hhbmdlQW5kVGhlbkRlbGV0ZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1
ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5
UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8g
bW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVl
dWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAg
ICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkg
ewogICAgICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNh
dGlvbjoKQEAgLTM0Niw3ICszNDYsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RE
ZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3Jr
UXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNv
cHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0
byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RR
dWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewog
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZp
Y2F0aW9uOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1
cmwvQ29va2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9D
b29raWVzLmNwcAppbmRleCA5MmQ4YTE5MmNhN2IyYTEwODE1NjU5OTdiMGVhNWIxZjlhZWE4ZjY1
Li4yMTllOTY2ZGJlYmFhODRkMzYwMjcyMmU5NTllMzJmNjRmYjRkYjJlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcApAQCAtNDQs
NyArNDQsNyBAQCBjbGFzcyBDdXJsQ29va2llczogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAg
IHsKICAgICAgICAgbV9jb29raWVEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3Jh
cnlEaXJlY3RvcnkoKTsKIAotICAgICAgICBtX2Nvb2tpZUphciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKKyAgICAgICAgbV9jb29raWVK
YXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvb2tpZUphckRCPihGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobV9jb29raWVEaXJlY3RvcnksICJjb29raWVkYi5zcWwiKSk7CiAg
ICAgICAgIG1fY29va2llSmFyLT5vcGVuKCk7CiAgICAgICAgIG1fY29va2llSmFyLT5zZXRBY2Nl
cHRQb2xpY3koQ29va2llQWNjZXB0UG9saWN5OjpBbHdheXMpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBh
Z2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGlu
Q3JlYXRlUGFnZS5jcHAKaW5kZXggNWMwYWUzMzEzMjhiMzZiMGJhNzBhMThkOTkzNjY5NDEyYWNh
MjlhOS4uYjNiM2JjM2NmNDlkNzg1NDMwNTg0OWRkYTEyMTJmMTkzMmEwZDIwZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRl
UGFnZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9t
V2l0aGluQ3JlYXRlUGFnZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIFdLUGFnZVJlZiBj
cmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwg
V0tEaWMKIHsKICAgICBFWFBFQ1RfVFJVRShvcGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0g
ICAgb3BlbmVkV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdl
KTsKKyAgICBvcGVuZWRXZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2Up
OwogCiAgICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50
LCAwLCBzaXplb2YodWlDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcAppbmRleCBhNGZiYTEyN2M2ZTRkMDNlNjNkOWE4
MTcyYTM5YjNjYjhiMTQ3MmM3Li43YmMzNTI0ZjJiZGI5ZGJkN2E0MzVhM2NjNmFkMzgzMmU5NDRl
ZGQ1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFs
ZXJ0c1NQSS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxB
bGVydHNTUEkuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVO
ZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMK
IHsKICAgICBFWFBFQ1RfVFJVRShvcGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3Bl
bmVkV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAg
ICBvcGVuZWRXZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAg
ICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBz
aXplb2YodWlDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCmlu
ZGV4IDBmN2ZkNDBhNjNlNWVjZjc4Yzk2OGRmODAzOGQxOTIyMWVkYmY3ZDUuLmNkMTlkN2NkZTU4
ODk2MjVmMTIyMTJmYzc1M2NmZDU1ZTI3OGQ5MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRF
bmRFZGl0aW5nLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdHJ1Y3QgV2ViS2l0MlRleHRGaWVsZEJl
Z2luQW5kRWRpdEVkaXRpbmdUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAg
IFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRl
Q29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0
aW5nRXZlbnRzVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4
dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlx
dWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKICAgICAgICAgc2V0UGFnZUxvYWRl
ckNsaWVudCh3ZWJWaWV3LT5wYWdlKCksIHRoaXMpOwogCiAgICAgICAgIGRpZEZpbmlzaExvYWQg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Vz
ZXJNZXNzYWdlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNz
YWdlLmNwcAppbmRleCBjN2IwMjUxYmZjZjIxYWE0YWJkMTE0Yzg1NTA3OTI0MWQ2NjE3NGU5Li45
ZGMzYTZkYTk5NTA5YzI3MTEyMWQ0YzNhNDUzMDg0ZmVlOTg5YmQ3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIGNsYXNzIFdlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0IHsKICAgICAgICAgY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4
dEZvckluamVjdGVkQnVuZGxlVGVzdCgiVXNlck1lc3NhZ2VUZXN0IikpOwogICAgICAgICBzZXRJ
bmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJW
aWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwor
ICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0
KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7
CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCmluZGV4IGVkOWYwZmZjNzAyNWFiMTJjYjUzOTY3
ZjcyMDVmZjk2Yzg5YmU2OTkuLjUyZjE4ZGNlYjQyZDUxYWMwODM5NWI2MjAwMWQ0YTk1NDBmNzQ1
MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2Fk
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgV2ViS2l0MldpbGxMb2FkVGVzdCA6IHB1YmxpYyA6OnRl
c3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJXaWxsTG9hZFRlc3QiKSk7CiAgICAgICAgIHNldElu
amVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZp
ZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7Cisg
ICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQo
KSk7CiAKICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVh
cmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KaW5kZXggYWViYTFj
MzQ4ZmJjNjZhMTcwZTUzOWUwYTcyODZhZWU5MTUzZTYwNC4uMjkxYTQ3OGEyNzg0MjQyZGFkNDVh
M2E4ZjE3MzkwNWQ3ZDNiMmYyMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5j
ZUluQnVuZGxlX0J1bmRsZS5tbQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1
dG8gcmVzdWx0U3RyaW5nID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShzY3JpcHRDb250ZXh0
LCByZXN1bHQsIG51bGxwdHIpKTsKIAogICAgICAgICBhdXRvIGJ1ZmZlclNpemUgPSBKU1N0cmlu
Z0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUocmVzdWx0U3RyaW5nLmdldCgpKTsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltd
PihidWZmZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhyZXN1bHRTdHJp
bmcuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAKICAgICAgICAgV0tCdW5kbGVQ
YWdlU2V0VXNlRGFya0FwcGVhcmFuY2UobV9wYWdlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5j
cHAKaW5kZXggZDZjYzJmYjI0N2U1NjIwNjY5Nzc2MTBiMjU2NzliN2VkMWRjYzhiYS4uN2M4Yzhi
NTIxNTRhYzRlYjA5OGU2OTUxNzkwNjlhMDVlYmRjNjZhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5j
cHAKQEAgLTI1Niw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0
aW9uRW1wdHlSZWFsbShBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogfQogCiBjbGFz
cyBUdW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFR1
bm5lbChTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICA6
IG1fc2VydmVyKHNlcnZlcikKQEAgLTI5OSw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJD
YWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBj
aGFyKgogewogICAgIGlmIChtZXNzYWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfQ09OTkVDVCkg
ewogICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHNvdXBfc2VydmVyX2dldF9wb3J0KHNlcnZlciks
ID09LCBnUHJveHlTZXJ2ZXJQb3J0KTsKLSAgICAgICAgYXV0byB0dW5uZWwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFR1bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKKyAgICAgICAgYXV0byB0dW5uZWwgPSBt
YWtlVW5pcXVlPFR1bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKICAgICAgICAgYXV0byogdHVubmVs
UHRyID0gdHVubmVsLmdldCgpOwogICAgICAgICB0dW5uZWxQdHItPmNvbm5lY3QoW3R1bm5lbCA9
IFdURk1vdmUodHVubmVsKV0oY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAg
ICBpZiAoZXJyb3JNZXNzYWdlKSB7CkBAIC0zOTQsNyArMzk1LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5KFByb3h5QXV0aGVudGljYXRpb25UZXN0KiB0ZXN0
LCBnY29uc3QKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRU
UFMoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAg
YXV0byBodHRwc1NlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2Vi
S2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOworICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBtYWtl
VW5pcXVlPFdlYktpdFRlc3RTZXJ2ZXI+KFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFBTKTsK
ICAgICBodHRwc1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKIAogICAgIHRlc3QtPmxvYWRV
UkkoaHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9wcm94eS9hdXRoLXRlc3QuaHRtbCIpLmRh
dGEoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
V2ViUHJvY2Vzc1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9X
ZWJQcm9jZXNzVGVzdC5oCmluZGV4IDdhNDRjYjA1Y2Q0YmMwMjdlMTJkMTEwM2ZhZjZhMDA3YWM2
ZjQwZjMuLmI2YjcyOGU0NWUwOWM1MWE2ZDZiYTk5YmY3MTdlMTk1ZTlhMGUwYzEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5o
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVz
dC5oCkBAIC0zMCw2ICszMCw3IEBACiAjZW5kaWYKIAogY2xhc3MgV2ViUHJvY2Vzc1Rlc3Qgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlBy
b2Nlc3NUZXN0KCkgeyB9CiAgICAgdmlydHVhbCBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdGVz
dE5hbWUsIFdlYktpdFdlYlBhZ2UqKSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCmluZGV4IDEyNTYyNDE5
NmE3MWM2ZDNhZDViY2RkMjlmMTQyYjg2YWJiOWZkMTEuLmU0MDAwNzYzM2YyMzYyNDA1MjlkZjU0
YWU4NjMyMDg3YmQzNjk1MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHN0
YXRpYyBnYm9vbGVhbiBjbGlja2VkQ2FsbGJhY2soV2ViS2l0RE9NRE9NV2luZG93KiwgV2ViS2l0
RE9NRXZlbnQqLCBXZWJLaXRET01ECiAKIGNsYXNzIFdlYktpdERPTURPTVdpbmRvd1Rlc3QgOiBw
dWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
UHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0RE9NRE9NV2lu
ZG93VGVzdD4oKTsgfQogCiBwcml2YXRlOgogICAgIGd1aW50NjQgd2ViUGFnZUZyb21BcmdzKEdW
YXJpYW50KiBhcmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0
Zm9ybVV0aWxpdGllc0NvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9y
bVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDhkMmVlOGFkMTZjYWQ2Nzk1NjhlZDliNmQ3NWNlY2Q4
MjE1MGZlZGIuLjM0OTBlZjFjZWI2ZjE3ODA1MDJmMGNkYzkxOWM5NzFlMjkyYmU5MDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2Eu
bW0KQEAgLTM4LDcgKzM4LDcgQEAgc3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJpbmcgKnN0cmluZykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IFtzdHJpbmcgbGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
OwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUp
OworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hh
cltdPihidWZmZXJTaXplKTsKICAgICBOU1VJbnRlZ2VyIHN0cmluZ0xlbmd0aDsKICAgICBbc3Ry
aW5nIGdldEJ5dGVzOmJ1ZmZlci5nZXQoKSBtYXhMZW5ndGg6YnVmZmVyU2l6ZSB1c2VkTGVuZ3Ro
OiZzdHJpbmdMZW5ndGggZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmcgb3B0aW9uczowIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgcmVtYWluaW5nUmFuZ2U6MF07CiAg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCA1NDZjYTZlMjIyZDlm
ZWE4MWNlN2JlNGUyYzJkMzk4NWM1YjQ0ZjBmLi4yNDc1NzI4OThiNmE4NzljN2EzNmI0ZmM2NWI5
MTUzMzA0NzBmZmQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
Lm1tCkBAIC0yOTQsNyArMjk0LDcgQEAgc3RhdGljIHZvaWQgYXBwbHlXb3JrYXJvdW5kVG9BbGxv
d1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygpCiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBzd2l6emxlcjsKICAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4s
IF57Ci0gICAgICAgIHN3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6
bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVu
dGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5
cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CisgICAgICAg
IHN3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRT
dHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92
aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0
ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CiAgICAgfSk7CiB9CiAKQEAgLTM0Nyw3ICsz
NDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZp
Z3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xNzUyMDQ+IGlzIGZpeGVkLgotICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenps
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIg
Y2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOworICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIg
PSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBA
c2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVz
c1VJQ2FsbG91dEJhcikpOwogICAgIF9pbnB1dFNlc3Npb25DaGFuZ2VDb3VudCA9IDA7CiAgICAg
YXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3Zp
ZGVycygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKaW5kZXggNjkwZjBhNzc1NmNmZTNhZmIwN2Q5MGJl
ZWZmMDk1NzhiMmZjNTVkZS4uMjgxNDUyN2YxOWI5NTRmODJhZWI4N2JjMGU0YzhkYzBiOWE3ZjVi
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0
VGVzdFNlcnZlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YktpdFRlc3RTZXJ2ZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAogY2xhc3MgV2ViS2l0VGVzdFNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAKICAgICBlbnVtIFNlcnZlck9wdGlvbnMgewpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCmluZGV4IDg2MjYzNTQ0MzM1YTdmNWQ5
NzFiNWRjMGQyNTllNTVkYzBkNzNjNjYuLjRiZGU2YzUxMDBkMmJkNmZlNGJiOTBmYWNiZTI1ZDMz
OWE1MDU0YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0
aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0K
QEAgLTg0LDcgKzg0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRm9udE9wdGlvbnM6KE5T
Rm9udE9wdGlvbnMgKilmb250T3B0aW9ucwogCiAgICAgX3NoYWRvd09mZnNldCA9IENHU2l6ZVpl
cm87CiAgICAgX3NoYWRvd0JsdXJSYWRpdXMgPSAwOwotICAgIF9yZXBsYWNlRm9udE9wdGlvbnNT
d2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zy
b21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKKyAg
ICBfcmVwbGFjZUZvbnRPcHRpb25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dp
enpsZXI+KE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0aW9ucyIpLCBAc2VsZWN0b3Ioc2hh
cmVkRm9udE9wdGlvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc2hhcmVkRm9udE9wdGlvbnNG
b3JUZXN0aW5nKSk7CiAgICAgX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzID0gTk87CiAgICAgX2hh
c011bHRpcGxlRm9udHMgPSBOTzsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9FdmVudFNlbmRlclByb3h5LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaAppbmRleCAxNTMyMjE4MjY5OWUwZWEzMDc1NGEwMjI2YzNhN2I2Mjk1OTc2ZDAwLi4x
MTM5OWIzOTBmZTkxNzBmNmM1MjUyNzVhYzIzNDU4MmRhZjc1MGY4IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaApAQCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgV1RS
RXZlbnRRdWV1ZUl0ZW07CiAjZW5kaWYKIAogY2xhc3MgRXZlbnRTZW5kZXJQcm94eSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXZlbnRTZW5k
ZXJQcm94eShUZXN0Q29udHJvbGxlciopOwogICAgIH5FdmVudFNlbmRlclByb3h5KCk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKaW5kZXgg
N2Q5NDVkNjdlYzY3NTBiZTcwNjQzNWEyYTZiM2M3NGQxYWQxNzQzYy4uMWVkNGFkZjliMzkzOTNh
MzMzYWEzMjUxMDk3YjllM2FhNDJjYzM2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaApAQCAtMjcsMTAgKzI3LDEyIEBACiAjZGVmaW5l
IEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCiBj
bGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgR2VvbG9jYXRpb25Qcm92aWRlck1vY2soV0tDb250ZXh0UmVmKTsK
ICAgICB+R2VvbG9jYXRpb25Qcm92aWRlck1vY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IDFmOWQzZWZjOTY0ZmIxMzc3YmM2NjNjMDE2MGMzNGE4OGIyMzI4YTYuLmM5
YTUyYzE1Zjc3MDgzMDY4M2M4ZWZmNjg5NDI5YmQwYmMxZjU2NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRp
bmdDb250cm9sbGVyLmNwcApAQCAtNjEyLDYgKzYxMiw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29u
dHJvbGxlcjo6bW9uaXRvcldoZWVsRXZlbnRzKCkKIH0KIAogc3RydWN0IFNjcm9sbENvbXBsZXRp
b25DYWxsYmFja0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICBKU0NvbnRleHRSZWYgbV9jb250ZXh0OwogICAgIEpTT2JqZWN0UmVmIG1fZnVuY3Rpb247CiAK
QEAgLTY0Nyw3ICs2NDgsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbAogICAgIAogICAgIEpT
VmFsdWVQcm90ZWN0KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogCi0gICAgYXV0
byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxD
b21wbGV0aW9uQ2FsbGJhY2tEYXRhPihjb250ZXh0LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsK
KyAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBtYWtlVW5pcXVlPFNjcm9s
bENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3Qp
OwogICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0ciA9IHNjcm9sbENvbXBs
ZXRpb25DYWxsYmFja0RhdGEucmVsZWFzZSgpOwogICAgIGJvb2wgY2FsbGJhY2tXaWxsQmVDYWxs
ZWQgPSBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFj
ayhwYWdlLCBleGVjdXRlQ2FsbGJhY2ssIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGFQdHIp
OwogICAgIGlmICghY2FsbGJhY2tXaWxsQmVDYWxsZWQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXgg
NzExNmNjOTgxNTY2OWQ5NDk0ZGJmOGRlNDhiYWVlY2Q2Mzc0YzM3Ni4uODNiMmIzMGIxMzMyZWM3
N2JmZWZjYzI5ZmRkMWEyZTQ4M2NiNWYyMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTExMSw3ICsx
MTEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlcgogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlk
Q3JlYXRlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKIHsKICAgICBib29sIGlzTWFpblBhZ2Ug
PSBtX3BhZ2VzLmlzRW1wdHkoKTsKLSAgICBtX3BhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluamVjdGVkQnVuZGxlUGFnZT4ocGFnZSkpOworICAgIG1fcGFnZXMuYXBwZW5kKG1ha2VVbmlx
dWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7CiAKICAgICBzZXRVcEluamVjdGVkQnVuZGxl
Q2xpZW50cyhwYWdlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKaW5kZXggNTlkM2UxYjBkMDJlMjJj
NTJmYTc2NTQzMzI5YzIzZjZiNjJhMzg5YS4uYjMyM2MyNTA0NGY1NTAzNjA3NmY0OGVkZGQ0N2Jj
ZWFhM2UyMGYxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1l
c3BhY2UgV1RSIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQ
YWdlUmVmKTsKICAgICB+SW5qZWN0ZWRCdW5kbGVQYWdlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAzNzI5ZTA1
YTliN2JjNTkxMGIwOTk4MDllODZmMGE3MmZhNWNmYzk5Li5mNWM5ZDZmMjljMGY0NmZkZThhMzRk
ODljNDIwOTk3NDg2NWNjNzA4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIzODQsNyArMjM4NCw3IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMoSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAg
ICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmls
ZVZhbHVlLCBudWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3Ry
aW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1
dG8gZmlsZUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7
CisgICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKGZpbGUuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCksIGZpbGVCdWZmZXJTaXplKTsKIAogICAg
ICAgICBXS0FycmF5QXBwZW5kSXRlbShmaWxlVVJMcy5nZXQoKSwgYWRvcHRXSyhXS1VSTENyZWF0
ZVdpdGhCYXNlVVJMKG1fdGVzdFVSTC5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSkpLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggMGU1YzA3
Y2E3MjliNmRmY2IzOGM4MDQyNmQzOTI0NGUzMmMwMDE3Yy4uMThlNTdkMmZjZjYyOTc2N2E3MzI5
NzliYzJlZGM1N2FjZjEwOWNlMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKQEAgLTczMCw3ICs3MzAsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0
VG9KU09iamVjdEFycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbQog
ICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250
ZXh0KG1haW5GcmFtZSk7CiAKICAgICBzaXplX3QgZWxlbWVudENvdW50ID0gY2hpbGRyZW4uc2l6
ZSgpOwotICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNWYWx1ZVJl
ZltdPihlbGVtZW50Q291bnQpOworICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPEpTVmFsdWVSZWZbXT4oZWxlbWVudENvdW50KTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgaSsrKQogICAgICAgICB2YWx1ZUVs
ZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNoaWxkcmVuW2ldLT53cmFwcGVyQ2xh
c3MoKSwgY2hpbGRyZW5baV0uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9y
bVdlYlZpZXcuaAppbmRleCBmNzRjYzJkMzkzZDUzMDVmZDM2NjViYjBlMGEzNTUxODQ0NzMxMDlm
Li5jYTRmZGJkNzIyMTVhZjQ4YmRhOTY3ZDViY2FiNDgxNTZiYWRjYzcxIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFkZWZpbmVkKEJVSUxESU5HX0dUS19fKQog
I2luY2x1ZGUgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KQEAgLTY0LDYgKzY1LDcgQEAgdHlwZWRl
ZiBjYWlyb19zdXJmYWNlX3QqIFBsYXRmb3JtSW1hZ2U7CiBuYW1lc3BhY2UgV1RSIHsKIAogY2xh
c3MgUGxhdGZvcm1XZWJWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9ybVdlYlZpZXcoV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiosIGNvbnN0IFRlc3RPcHRpb25zJik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9T
dHJpbmdGdW5jdGlvbnMuaAppbmRleCBkYWYxNGNhNzA1NDg2YmZjMjA2NDMxMjNkZTUwOTFiNzll
NWQwMTMxLi5iYmExN2MyZWZmYjA5NjY1ZWZjMjhlZWI2OWU3MjMyOWIxZDY5Yjc0IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKQEAgLTczLDcgKzczLDcgQEAgaW5s
aW5lIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0b0pTKGNvbnN0IFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0
cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxj
aGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVu
Z3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVy
U2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3Ro
IC0gMSk7CiB9CkBAIC04Niw3ICs4Niw3IEBAIGlubGluZSBzdGQ6OnN0cmluZyB0b1NURChjb25z
dCBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4mIHN0cmluZykKIGlubGluZSBXVEY6OlN0cmluZyB0
b1dURlN0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6
ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25T
dHJpY3Qoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBXVEY6
OlN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJpbmdM
ZW5ndGggLSAxKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
aW5kZXggOGZlZDU5MjU1OGYxYzYwMjJlZDEzOWUwYzhjODJlZWEyNGRhNTVhYS4uNzQ1OTVlNWU1
ZjJkMmIxYmVhZGFmNjBhOWIxZTI2NWNiODQxZTZlZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHBhZ2VHcm91cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJLaXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAg
IG1fcGFnZUdyb3VwLmFkb3B0KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdy
b3VwSWRlbnRpZmllci5nZXQoKSkpOwogCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJv
eHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogfQogCiBXS1JldGFpblB0
cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVDb250
ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9uczo6Q29udGV4dE9wdGlvbnMmIG9wdGlv
bnMpIGNvbnN0CkBAIC01MjEsNyArNTIxLDcgQEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJh
dGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY28KICAg
ICAgICAgbV9jb250ZXh0ID0gcGxhdGZvcm1BZGp1c3RDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0
Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oY29udGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpKS5nZXQo
KSwgY29udGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpOwogICAgICAgICBtX2NvbnRleHRPcHRpb25z
ID0gb3B0aW9ucy5jb250ZXh0T3B0aW9uczsKIAotICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRleHQu
Z2V0KCkpOworICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2xv
Y2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgICAgIGlmIChjb25z
dCBjaGFyKiBkdW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKSkgewog
ICAgICAgICAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVt
cFJlbmRlclRyZWVUZW1wKTsKQEAgLTk1MSw3ICs5NTEsNyBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25z
LCBSZQogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGVuc3VyZSB0aGF0
IHRoZXJlIGlzIG9ubHkgb25lIHBhZ2Ugb3Blbi4KIAogICAgIC8vIFJlc2V0IHRoZSBFdmVudFNl
bmRlciBmb3IgZWFjaCB0ZXN0LgotICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IHN0ZDo6bWFrZV91
bmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CisgICAgbV9ldmVudFNlbmRlclByb3h5ID0g
bWFrZVVuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBJcyB0
aGlzIG5lZWRlZD8gTm90aGluZyBpbiBUZXN0Q29udHJvbGxlciBjaGFuZ2VzIHByZWZlcmVuY2Vz
IGR1cmluZyB0ZXN0cywgYW5kIGlmIHRoZXJlIGlzCiAgICAgLy8gc29tZSBvdGhlciBjb2RlIGRv
aW5nIHRoaXMsIGl0IHNob3VsZCBwcm9iYWJseSBiZSByZXNwb25zaWJsZSBmb3IgY2xlYW51cCB0
b28uCkBAIC0xMjM0LDExICsxMjM0LDExIEBAIHN0YXRpYyBXS1VSTFJlZiBjcmVhdGVUZXN0VVJM
KGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGJ1
ZmZlcjsKICAgICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsKLSAgICAgICAgYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOworICAgICAgICBi
dWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExl
bmd0aCArIGxlbmd0aCArIDEpOwogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJl
Zml4KTsKICAgICAgICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSArIHByZWZpeExlbmd0aCwgcGF0aE9y
VVJMKTsKICAgICB9IGVsc2UgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNo
YXJbXT4ocHJlZml4TGVuZ3RoICsgUEFUSF9NQVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhl
IHBhdGhTZXBhcmF0b3IKKyAgICAgICAgYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAv
LyAxIGZvciB0aGUgcGF0aFNlcGFyYXRvcgogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBm
aWxlUHJlZml4KTsKICAgICAgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmdldCgpICsgcHJlZml4TGVu
Z3RoLCBQQVRIX01BWCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTE2NDgsNyArMTY0OCw3
IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJ1blRlc3QoY29uc3QgY2hhciogaW5wdXRMaW5lKQog
ICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QoY29tbWFuZCk7CiAK
ICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwgPSBhZG9wdFdLKGNyZWF0ZVRlc3RVUkwo
Y29tbWFuZC5wYXRoT3JVUkwuY19zdHIoKSkpOwotICAgIG1fY3VycmVudEludm9jYXRpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9ucyk7Cisg
ICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IG1ha2VVbmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJM
LmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChjb21tYW5kLnNob3VsZER1bXBQaXhlbHMgfHwg
bV9zaG91bGREdW1wUGl4ZWxzRm9yQWxsVGVzdHMpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRp
b24tPnNldElzUGl4ZWxUZXN0KGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwpAQCAtMjk2MCw3
ICsyOTYwLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChjb25z
dCBUZXN0SW52b2NhdGlvbiYpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRl
V2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RP
cHRpb25zJiBvcHRpb25zKQogewotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CisgICAgbV9tYWluV2Vi
VmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25z
KTsKIH0KIAogUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVP
dGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9u
UmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA0ZDU5ZTgzNjc3YWE5MDJmYzU4
MDM0MDNlMTkyYzBiNDA3MWY5YzhhLi43ODMwZjAxYzZiMGZjMDIzZGM4OWU0NGMwMGQ2NTFiZmRm
Mzk3YmQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAt
MTY3OCw3ICsxNjc4LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KFdL
U3RyaW5nUmVmIHNjcmlwdCwgdW5zaWduZWQgc2NyaXB0Q2FsbGJhY2sKICAgICBtX3BlbmRpbmdV
SVNjcmlwdEludm9jYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9VSVNjcmlwdENv
bnRleHQpCi0gICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxVSVNj
cmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBtYWtlVW5p
cXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOwogICAgIAogICAgIG1fVUlTY3JpcHRDb250ZXh0
LT5ydW5VSVNjcmlwdCh0b1dURlN0cmluZyhzY3JpcHQpLCBzY3JpcHRDYWxsYmFja0lEKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCA3ODgwZGQ4ZGY1NTJm
YzlkODJiOTRkMWQyZjJkZGZkNmRmODJlYzJiLi44NWIxYjAyMDZlYjg5MjI2ZTg2YzZiNDFhYjkz
ZTVkYjk1ZWJmZDkyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBA
IC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgVGVzdEludm9jYXRpb24g
ZmluYWwgOiBwdWJsaWMgVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRlc3RJbnZvY2F0aW9uKTsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXN0SW52b2NhdGlvbihXS1VSTFJlZiwgY29uc3QgVGVz
dE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbQppbmRleCAwZmJmOGVhNTIzZDM0OGQyNTZlY2M1MjMwNDJkZWEwMmZl
Y2RkMWRjLi4wZWJmN2JmZDAwMzlmNGVmODA5MzJjMWViNTE5MmZmNTRlZTNjNGEzIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVX
ZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKICAgICAgICAgW2Nv
cGllZENvbmZpZ3VyYXRpb24gX3NldEFwcGxpY2F0aW9uTWFuaWZlc3Q6W19XS0FwcGxpY2F0aW9u
TWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOnRleHQgbWFuaWZlc3RVUkw6bmls
IGRvY3VtZW50VVJMOm5pbF1dOwogICAgIH0KIAotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29waWVkQ29uZmlndXJhdGlvbi5nZXQoKSwgb3B0
aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihj
b3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKICAgICBmaW5pc2hDcmVhdGluZ1Bs
YXRmb3JtV2ViVmlldyhtX21haW5XZWJWaWV3LmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChv
cHRpb25zLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUpCkBAIC0yMjYsNyArMjI2
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZShOU1N0cmlu
ZyAqaWRlbnRpZmllcikKIHsKICAgICBtX292ZXJyaWRkZW5DYWxlbmRhcklkZW50aWZpZXIgPSBp
ZGVudGlmaWVyOwogICAgIGlmICghbV9jYWxlbmRhclN3aXp6bGVyKQotICAgICAgICBtX2NhbGVu
ZGFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0Nh
bGVuZGFyIGNsYXNzXSwgQHNlbGVjdG9yKGN1cnJlbnRDYWxlbmRhciksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlZENhbGVuZGFyKSk7CisgICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9
IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2Vs
ZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2Fs
ZW5kYXIpKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRDb250ZW50RXh0ZW5zaW9u
cygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclBy
b3h5R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlH
dGsuY3BwCmluZGV4IGRlNTc4ZjczZmMzNmVjZDE1ODljOTlmOGRiZjhmY2NjMzk4N2I0MmUuLmVm
OWUzOGU3MjNiYWE5NWRmZmU3MGVjNWE4NzVjZmVjODRlMzI4NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC0yNzEsNyAr
MjcxLDcgQEAgaW50IGdldEdES0tleVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYsIHVu
c2lnbmVkIGxvY2F0aW9uLCBndWludCogbW9kaWZpZXIKICAgICAgICAgcmV0dXJuIEdES19LRVlf
RjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0
cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hh
cltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0
cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29k
ZSA9IGJ1ZmZlci5nZXQoKVswXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9U
ZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCA2YTYxZGY4ZTM1ZDZmYTA4YzhiMTRjNTFhODIzYzYy
ZDA4MDVkNGQyLi5mM2M0MTdjN2ZiN2NhYTRkZTQ3NzdjN2E0OTRmNTNhZjMyYTE4YmZkIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAt
MTUxLDggKzE1MSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRv
Q29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0CiAKICAgICBtX3ByZXNlbnRQ
b3BvdmVyU3dpenpsZXJzLmNsZWFyKCk7CiAgICAgaWYgKCFvcHRpb25zLnNob3VsZFByZXNlbnRQ
b3BvdmVycykgewotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNs
YXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9y
UG9wb3ZlcikpKTsKLSAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxl
ciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0
ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQ
b3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+
KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxl
cjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVBy
ZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKKyAgICAgICAgbV9wcmVzZW50UG9wb3Zl
clN3aXp6bGVycy5hcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQ
b3BvdmVyQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0
OmluVmlldzpwZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwogICAg
IH0KICAgICAKICAgICBCT09MIHNob3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRlciA9IE5POwpAQCAt
MjY5LDkgKzI2OSw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEtleWJvYXJkSW5wdXRNb2Rl
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICAgICBhdXRvIGNvbnRyb2xs
ZXJDbGFzcyA9IFVJS2V5Ym9hcmRJbnB1dE1vZGVDb250cm9sbGVyLmNsYXNzOwogICAgIG1faW5w
dXRNb2RlU3dpenpsZXJzLnJlc2VydmVDYXBhY2l0eSgzKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6
bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOwotICAgIG1faW5wdXRN
b2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0
aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJ
blByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1v
ZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0
b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZl
SW5wdXRNb2RlcykpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQo
bWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxl
Y3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJy
ZW50SW5wdXRNb2RlKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVu
ZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNl
bGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElN
UD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMu
dW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJv
bGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKICAgICBbVUlLZXlib2FyZEltcGwuc2hh
cmVkSW5zdGFuY2UgcHJlcGFyZUtleWJvYXJkSW5wdXRNb2RlRnJvbVByZWZlcmVuY2VzOm5pbF07
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1t
CmluZGV4IGQxY2ZjNmEzMzIxZTAyOWM4YmE4MTE1ZjRhNmQ5MjA3ZjhlNzE4NGYuLjg5Y2U0ZWYx
MjZjMTVkOTJkY2Y3NjY1MGNlNmVlZjViODkyMzE3MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQg
RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllCiAKICAgICBOU1ZpZXcgKnRhcmdldFZpZXcgPSBbbV90ZXN0Q29u
dHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9j
YXRpb25JbldpbmRvd11dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0
aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRv
bnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRv
bnMpKTsKKyAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1h
a2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3Io
cHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpl
dmVudF07CiAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRG93bjpldmVudF07CiAgICAgICAgIFtO
U0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBFdmVu
dFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnMKICAgICAgICAgdGFyZ2V0VmlldyA9IG1fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwogCiAgICAgQVNTRVJUKHRhcmdldFZpZXcpOwot
ICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNz
ZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNz
ZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6
bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBz
ZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZl
bnQ6ZXZlbnRdOwogICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6ZXZlbnRdOwogICAgIFtOU0FwcCBf
c2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBFdmVudFNlbmRl
clByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCiAgICAgLy8gQWx3YXlzIHRh
cmdldCBkcmFncyBhdCB0aGUgV0tXZWJWaWV3IHRvIGFsbG93IGZvciBkcmFnLXNjcm9sbGluZyBv
dXRzaWRlIHRoZSB2aWV3LgogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IGlzRHJhZyA/IG1fdGVz
dENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIDogW21fdGVzdENvbnRy
b2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6d2luZG93TG9jYXRp
b25dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91
c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+
KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVy
cHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAg
ICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xh
c3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNl
QnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAg
ICAgIGlmIChpc0RyYWcpCiAgICAgICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZURyYWdnZWQ6ZXZl
bnRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQ
cm94eVdQRS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5
V1BFLmNwcAppbmRleCA0NjliZmFmMGU4Y2YyOTA3MzBiYWJmYTA3ODM2ZDg3N2VjNzBlOGY1Li42
OTZmNDU1NzU4OTZmZTgyNjY0ODdkMDk4ZThmZThlZTYxZTU0ZDU2IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcApAQCAtMjc5LDcg
KzI3OSw3IEBAIHN0YXRpYyB1aW50MzJfdCB3cGVLZXlTeW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYg
a2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgdWludDMyCiAgICAgICAgIHJldHVybiBXUEVfS0VZ
X0YxMjsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKGtleVJlZik7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNo
YXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIFdLU3RyaW5nR2V0VVRGOENT
dHJpbmcoa2V5UmVmLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIGNoYXIgY2hhckNv
ZGUgPSBidWZmZXIuZ2V0KClbMF07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9W
aWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggMDA5
Y2U0NjgwNjg4NTgzMTNhNmZlMDdiMWJhMmMwZDU1Njg5ZDEwZC4uM2JkMGUxMGFlODU2YTBlZWJm
NDVjZjI2YTYyYWRkMDNmYTYyZjIzNiAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL1Zp
ZXdCYWNrZW5kLmgKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKQEAgLTQy
LDEwICs0MiwxMiBAQCBzdHJ1Y3Qgd3BlX2Zkb19lZ2xfZXhwb3J0ZWRfaW1hZ2U7CiBuYW1lc3Bh
Y2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsKIAogY2xhc3MgVmlld0JhY2tlbmQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflZpZXdCYWNrZW5kKCk7
CiAKICAgICBjbGFzcyBJbnB1dENsaWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+SW5wdXRDbGllbnQoKSA9IGRlZmF1
bHQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376339</attachid>
            <date>2019-08-14 18:21:18 -0700</date>
            <delta_ts>2019-08-14 21:35:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190814182117.patch</filename>
            <type>text/plain</type>
            <size>1787894</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2U0YzNjMTA2MDY0ODRlNjNkZDVmZDExMGYyZjNkYzRmMGZhN2FlLi4yNTdiNDMzNGE2ZGVmMWY2
MWE2NzBhZDI5YjQ2MjVmZjUyY2NlM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBz
dXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY0YWRlYjM2NDhmNzMyYzNiNDM0MDM5Nzg5
MzUyYTliOTBmNjExNWIuLmE4NzYzYTJmODJkMzY1YzYwYTFmYmRlOWEyNmEwNmI1MmMxNTg2ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAg
ICAgICogYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3Vy
cmVudFZlY3Rvci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAg
ICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHA6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3Rm
L0Z1bmN0aW9uLmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3Rm
L0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAg
ICAgICAqIHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6Cisg
ICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToK
KyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAg
ICAqIHd0Zi9TdHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBl
bmQpOgorICAgICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVm
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6
SXRlcmF0b3IpOgorCiAyMDE5LTA4LTE0ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbWFjT1MgPCAxMC4xMwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGIwNWUzMjA0NzQwYmRmNjExNGQ5OTAzNmE4NjM5ZmFjYTRjYzRhOGEuLmM1ODRiMzRhYjdh
MjE5OWIwODI2N2I1YWE0MzZiNzU3MjQ0MTJiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODgw
IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZl
bG9wZXJXYXJuaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjpmcm9tKToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3dDYWNoZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVD
YWNoZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2
aWdhdG9yQ3JlZGVudGlhbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ3JlZGVu
dGlhbHM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0
UHNzaEJveGVzRnJvbUNlbmMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNyZWF0ZSk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmtleVN5c3RlbSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNsaWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OnNldENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0
ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hSZXNwb25zZTo6ZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9OYXZp
Z2F0b3JHYW1lcGFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdhbWVwYWQ6OmZy
b20pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKToKKyAgICAgICAg
KiBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRvckdlb2xvY2F0aW9uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6aW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6SURCQ29ubmVjdGlvblRvU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZW5zdXJlUXVv
dGFVc2VyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0b3JlOjph
ZGRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0
YWJsaXNoRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
SURCQmFja2luZ1N0b3JlOjpzZXREYXRhYmFzZUluZm8pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUluZGV4OjpwdXRJbmRleEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUluZGV4OjptYXliZU9wZW5DdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6bWF5YmVPcGVuQ3Vyc29yKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVBbmRQb3B1bGF0ZUluaXRpYWxEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNhY2hlZFN0YXRlbWVudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJl
Q3JlYXRlQmFja2luZ1N0b3JlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJUcmFuc2FjdGlvbjo6
YmVnaW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWREZWxldGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdERhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6SURC
UmVzdWx0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjppc29sYXRlZENv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRl
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFiYXNl
U3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpwdXRPckFkZFN1Y2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRzU3VjY2Vzcyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25JbmZvOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJv
Y2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY2Fw
YWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlOjpzZXRMaXZlU2Vla2FibGVSYW5nZSk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlk
ZVVzZXJNZWRpYVRvKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjaGFubmVsRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFuc2Nl
aXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVU
cmFuc2NlaXZlckJhY2tlbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OnRyYW5zY2VpdmVyQmFja2VuZEZyb21TZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
Ojp2aWRlb1JlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRN
RkJhY2tlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVNlbmRlckJh
Y2tlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnByb3ZpZGVOb3RpZmljYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMv
cXVvdGEvRE9NV2luZG93UXVvdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UXVv
dGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6Cisg
ICAgICAgICogTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKToKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpmcm9tKToKKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzOjplbnN1cmVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNB
dWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9EYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnNhbXBsZVJhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29k
aW5nVGFzazo6c3VjY2Vzc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmVycm9yQ2FsbGJhY2spOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9C
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6ZGVjb2RlQXVkaW9EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25O
b2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZEZpbHRlck5vZGU6
OkJpcXVhZEZpbHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVz
cG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheU5vZGU6OkRlbGF5Tm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlOjpzZXRGb3JtYXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFubmVyTm9kZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyaW9kaWNXYXZlOjpj
cmVhdGVCYW5kTGltaXRlZFRhYmxlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OlJl
YWx0aW1lQW5hbHlzZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6c2V0
RmZ0U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nl
c3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5l
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXp5SW5pdGlh
bGl6ZU92ZXJzYW1wbGluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcDoKKyAgICAg
ICAgKGZpZG86OkZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2FnZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwOgorICAgICAgICAoZmlkbzo6Rmlk
b0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YSk6CisgICAgICAgIChmaWRv
OjpGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2NoZWR1bGVU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2Fj
dGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRhYmxlTmFtZXMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpyZWNvcmREZWxldGluZ0RhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b246OmV4ZWN1dGVTcWwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om9wZW5U
cmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkcml2ZXIvTmF2
aWdhdG9yV2ViRHJpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYkRyaXZl
cjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdQVTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6UmVuZGVyRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjpjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVh
dGVFbnRyeVBvaW50U2NhZmZvbGRpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6VHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2Vy
Ojphc3NpZ25Db25jcmV0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNrZXI6
OmFzc2lnblR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNrZXI6OmZvcndhcmRU
eXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJzZVNlbWFudGljKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRVcGRhdGVCdWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZ3JhZGVVUkwp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVm
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmluZmxhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
dnIvTmF2aWdhdG9yV2ViVlIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yV2ViVlI6
OmZyb20pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKToKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRT
dGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNFdmVudFRh
cmdldENhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRh
c2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZmVyQXJyYXlCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlSlNDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpp
bml0Tm9ybWFsV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5p
dFNjcmlwdCk6CisgICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpDQ2xhc3M6Om1ldGhvZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCBjb25zdCk6CisgICAgICAgICogYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNzOjptZXRob2ROYW1lZCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZpZWxkTmFtZWQgY29uc3QpOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNh
bGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJp
bmVkVVJMRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
Q29tYmluZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybik6Cisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg6Cisg
ICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3Jt
YWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3Nz
VGhyZWFkQ29weUltcG9ydFBhcmFtcyk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lQ2F0ZWdvcnkpOgorICAgICAgICAq
IGNzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVm
YXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6
YXBwZW5kU291cmNlcyk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWls
eVJlZ2lzdGVyZWQpOgorICAgICAgICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpjc3NSdWxlcyBjb25zdCk6CisgICAgICAgICog
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZSk6CisgICAgICAgICogY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVs
ZTo6Y3NzUnVsZXMpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKToKKyAgICAgICAgKiBjc3MvRE9NQ1NT
UGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6
ZnJvbSk6CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbSk6Cisg
ICAgICAgICogY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRSdWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50UnVsZVNldHM6OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
ZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29s
bGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KToKKyAgICAgICAgKiBjc3MvRm9u
dEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1
ZmZlcik6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OndyYXBG
b3JEZXByZWNhdGVkQ1NTT00pOgorICAgICAgICAqIGNzcy9SdWxlRmVhdHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFRvUnVsZVNldCk6CisgICAgICAgICog
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAq
IGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6CisgICAg
ICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFy
YXRpb24pOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKToKKyAgICAg
ICAgKiBjc3MvbWFrZXByb3AucGw6CisgICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5
SW5oZXJpdFZhbHVlU2V0dGVyKToKKyAgICAgICAgKGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlW
YWx1ZVNldHRlcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OkNTU1BhcnNlckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lU3VwcG9ydHNSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rvcik6
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lQmFzaWNTaGFwZVBhdGgpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JQYXJzZXI6
OmNvbnN1bWVQc2V1ZG8pOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5z
dXJlQmFja3VwUXVldWUpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjppdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OnNldERyYWdJbWFnZSk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlRGV2aWNlT3JpZW50YXRp
b25Ubyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nl
c3NLZXlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvcm1Db250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpheE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRQYXJzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojph
Y2Nlc3NTVkdFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2Vj
dXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0QXV0b1Npemlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRMb2dNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZWdpc3RlckNTU1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9tVGltZXJIb2xkaW5nVGFuayk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlUGFyc2Vy
WWllbGRUb2tlbik6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgICogZG9t
L0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xhc3NMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmRhdGFzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZVJl
c2l6ZU9ic2VydmVyRGF0YSk6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20v
RXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFBhdGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRQYXRoOjpidWlsZFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRo
OjpFdmVudFBhdGgpOgorICAgICAgICAqIGRvbS9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAg
ICAqIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcik6CisgICAgICAgICogZG9tL0tl
eWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6S2V5Ym9h
cmRFdmVudCk6CisgICAgICAgICogZG9tL01pY3JvdGFza3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1pY3JvdGFza1F1ZXVlOjp2bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL011dGF0
aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVy
Q29tcG91bmRNaWNyb3Rhc2spOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cDo6Y3JlYXRlSWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb246Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9O
b2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9k
ZUxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25P
YnNlcnZlckRhdGEpOgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBk
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFBy
b21pc2VUcmFja2VyU2xvdyk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAg
ICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6
OlNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jv
b3RUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RF
bGVtZW50QnlOYW1lKToKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjphZGRJbWFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
bGFiZWxFbGVtZW50Rm9ySWQpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OkVkaXRvcik6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZW5zdXJl
UmVwbGFjZW1lbnRGcmFnbWVudCk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0
aGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVh
ckFuZENyZWF0ZU5vdGlmaWVyKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVy
dGVyOjpIVE1MQ29udmVydGVyKToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1
dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCk6Cisg
ICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbE9uRmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OkFz
eW5jRmlsZVN0cmVhbSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgICogaGlzdG9y
eS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6Q2FjaGVk
RnJhbWUpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKToKKyAg
ICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6cmVxdWVzdEljb24pOgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRG
b3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnJlbExpc3QgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVu
dDo6bWFwTW91c2VFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVw
ZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6YWRkVG9QYXN0TmFtZXNNYXApOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3gpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpyZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAg
ICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50OjpzaXplcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnJlbExp
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXphdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZUFmdGVyU3R5bGVSZXNvbHV0aW9uKToK
KyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFj
aFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9WYWxp
ZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6
c2V0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVz
c2FnZURPTUFuZFN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3Nh
Z2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQ6OkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRv
Q29uc29sZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVt
ZW50SW50ZXJmYWNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQ
YXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5p
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbGVtZW50U3RhY2s6Omluc2VydEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50U3RhY2s6OnB1c2hDb21tb24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVy
OjpTdGFydFRhZ1NjYW5uZXI6OmNyZWF0ZVByZWxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5E
T0NUWVBFKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OmRlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICog
aHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9J
bmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRU
VGV4dFRyYWNrOjpwYXJzZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZp
cmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0RPTUVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01F
ZGl0b3I6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlbW92
ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0QXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVk
aXRvcjo6aW5zZXJ0QWRqYWNlbnRIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
cmVwbGFjZVdob2xlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE5vZGVWYWx1ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuc3VyZURPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIaXN0b3J5OjptYXJr
VW5kb2FibGVTdGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAoUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRl
TGF6eUFnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxl
ckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhU
b0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGln
aHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50Ojppbm5lckhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmhpZ2hsaWdodEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpzZXRJbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0
b3JNZW1vcnlBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViSGVhcEFnZW50OjpX
ZWJIZWFwQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGlt
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50
aW1lQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6Y3JlYXRl
Rm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAg
ICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaDoKKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29u
dGVudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMg
Y29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaDoK
KyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVUZXh0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6c3BsaXQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjplbnN1cmVSYXJlRGF0YSk6Cisg
ICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZVRhYmxlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50
cyk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUHJlZmxpZ2h0UmVz
cG9uc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZp
Z3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRyZW4pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9OYXZp
Z2F0aW9uRGlzYWJsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGly
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9j
YXRpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVGb3JtU3VibWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1
bGVyOjpzY2hlZHVsZVJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVBhZ2VCbG9jayk6CisgICAgICAgICogbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3Mp
OgorICAgICAgICAqIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQpOgorICAgICAg
ICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9t
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OmFkZENsaWVudFRvU2V0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fkcyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6bG9hZFJlcXVlc3RlZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZTo6ZG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZW5zdXJlU2Vzc2lvblJlc291
cmNlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmxydUxpc3RGb3IpOgorICAgICAgICAq
IGxvYWRlci9pb3MvUHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvUHJldmll
d0xvYWRlci5tbToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0aFJlc291cmNl
TG9hZGVyOnJlc291cmNlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6UHJldmll
d0xvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4dE1lbnUpOgor
ICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VXaGVlbFJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
d0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3TGF5b3V0Q29u
dGV4dDo6cHVzaExheW91dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91
dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZCk6CisgICAgICAg
ICogcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJh
c2U6OnNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmluaXRHcm91cCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUp
OgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAgKiBwYWdlL1BhZ2VH
cm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNl
cyk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZTo6bWFyayk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6Y2xlYXJN
YXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6bWVhc3VyZSk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6Y2xlYXJNZWFzdXJlcyk6CisgICAgICAgICogcGFnZS9Q
cmV3YXJtSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyk6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzdGFydFRpbWVyKToKKyAgICAgICAg
KiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvUmVzaXplT2Jz
ZXJ2ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6Cisg
ICAgICAgICogcGFnZS9TZXR0aW5nc0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3NCYXNlOjpTZXR0aW5nc0Jhc2UpOgorICAgICAgICAqIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5o
OgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBwYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
aGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24v
Q1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NBbmltYXRp
b25Db250cm9sbGVyOjpDU1NBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVk
Q29sb3I6OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGxMYXllcnNQcm9wZXJ0eVdyYXBwZXI6OkZpbGxMYXllcnNQcm9wZXJ0eVdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpD
U1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXApOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnVwZGF0ZVNvdXJjZVNlbGYpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZSk6CisgICAgICAg
ICogcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9pb3Mv
RE9NVGltZXJIb2xkaW5nVGFuay5oOgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3Zlcmxh
eTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlTm9kZTo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6
OmNvbW1pdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9GaWxlTW9uaXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRNaXhlZFR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5k
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZv
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xv
YmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJl
ck9mQ2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OmNoYW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q2hhbm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q2hhbm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6
bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6
bXV0YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpk
YXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVy
byk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50
RmxhZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jl
c2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBs
ZXI6OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
RGVub3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1pl
cm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NS
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3RhbmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5j
ZUVmZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VF
ZmZlY3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXN0YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6
RHluYW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVz
c29yS2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2Fp
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBh
bm5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRG
cmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0hSVEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJP
ZkF6aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2Ft
cGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6
bG9hZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpIUlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNp
emUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxl
cjo6TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0
aUNoYW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJldmVyYjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmltcHVsc2VSZXNwb25z
ZUxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJBY2N1bXVsYXRp
b25CdWZmZXI6OnJlYWRJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJBY2N1bXVsYXRpb25CdWZmZXI6OnJlYWRUaW1lRnJhbWUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJD
b252b2x2ZXI6OmltcHVsc2VSZXNwb25zZUxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OmlucHV0QnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6dXNlQmFja2dyb3VuZFRocmVhZHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252
b2x2ZXJTdGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3Rh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjppbnB1dFJlYWRJ
bmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5w
dXRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYklucHV0QnVmZmVyOjp3cml0ZUlu
ZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1w
bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpa
ZXJvUG9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6cmVzZXQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnNldFplcm8pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnNldFBvbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6WmVyb1BvbGU6Onplcm8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6WmVyb1BvbGU6OnBvbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVk
aW9CdWZmZXJMaXN0OjpsaXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkF1ZGlvQnVmZmVyTGlzdDo6b3BlcmF0b3IgQXVkaW9CdWZmZXJMaXN0JiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6OmtpbmQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNv
dXJjZTo6c2V0SW5wdXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRh
U291cmNlOjpzZXRPdXRwdXRGb3JtYXQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRp
b1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcik6
CisgICAgICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRp
ZENvbm5lY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyk6CisgICAgICAgICogcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxB
bmltYXRvckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6
OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9LZXllZERlY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OnN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlY29k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRMYXlvdXQ6OlRleHRMYXlvdXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmVuc3VyZURlcml2ZWRGb250
RGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6Ym91bmRzRm9yR2x5cGggY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlT3JBZGRDYWNoZWRG
b250cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0
UnVuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRm9udHM6OkdseXBoUGFnZUNhY2hl
RW50cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR2x5cGhNZXRyaWNzTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE1ldHJpY3NN
YXA8VD46OmxvY2F0ZVBhZ2VTbG93Q2FzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0
QW5pbWF0aW9uQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xl
Z2FjeUNETVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2Vla2FibGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpz
ZXRTaGFwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZWdpb246OmNvcHlTaGFwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWdpb246OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50YXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdM
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1QaWNrZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBs
YXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0
ZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdGlvbk9w
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlUm90YXRpb25TZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdp
c3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1
ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdG9uT3B0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
Q29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRy
b2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xs
ZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91bmRlZFJlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xh
eWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBjcmVhdGVUaWxlQ29udHJv
bGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6UGxhdGZvcm1DQUxheWVy
V2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5n
TGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OmNyZWF0ZVRp
bGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjptX3ByaXZh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZUNhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6
OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dDo6Zm9udFJhbmdlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1
cmVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW06CisgICAgICAgIChUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJv
dGF0aW9uU2Vzc2lvblZULmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUOjpSb3RhdGlvblByb3BlcnRpZXM6OmlzSWRlbnRpdHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6dHJhbnNmb3JtIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJvdGF0
aW9uUHJvcGVydGllcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUOjpzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
Um90YXRpb25TZXNzaW9uVlQ6OnJvdGF0ZWRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVD
YWNoZUNWOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4
dHVyZUNvcGllckNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlcGxheWVyOjpyZXBsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5zdXJlQXVk
aW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaE5l
eHRIb2xlUHVuY2hCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVu
Y2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT0JveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09P
cmlnaW5hbEZvcm1hdEJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
U09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPU3RyaW5nQm94Ojpj
b250ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZU
VEN1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpib3hUeXBlTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnByZXNlbnRhdGlvblRpbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpkdXJhdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnNvdXJj
ZUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6aWQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpvcmlnaW5h
bFN0YXJ0VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRD
dWU6OnNldHRpbmdzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZU
VEN1ZTo6Y3VlVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6OlNjZW5lSW50ZWdyYXRpb246OmNyZWF0ZVVwZGF0ZVNjb3BlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OmNyZWF0ZUNvbW1hbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJv
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGlu
Zzo6Rm9yUGFpbnRpbmcpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclJlY29yZGluZzo6Rm9yUmVjb3JkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3Bw
OgorICAgICAgICAoTmljb3NpYTo6QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1h
cHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllclRleHR1cmVN
YXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0MzRExheWVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkdDM0RMYXllcjo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUdDM0RMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRl
eHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Okdy
YXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpUZXh0dXJlTWFwcGVyR0wpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5n
VGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybVN0YXRlOjphcHBseVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpzZXRTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
dWxsU2NyZWVuQ29udHJvbGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVv
UHJlc2VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FJbWFnZVF1ZXVl
OjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpZGdl
dDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTY3JvbGxiYXI6
OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29t
Ym9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1h
Z2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6OmRlY29kZSk6Cisg
ICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OkxlZ2Fj
eVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNj
YWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVy
dGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fY2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvRGF0YTo6R1N0cmVh
bWVyQXVkaW9EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlv
RGF0YTo6Z2V0U2FtcGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1
ZGlvRGF0YTo6Z2V0QXVkaW9JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckF1ZGlvRGF0YTo6a2luZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6bV9j
YXB0dXJlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJl
YW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeTo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJl
YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNh
dGVHZW5lcmF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRl
RW5jb2RlckZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpy
ZWNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVik6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVm
ZmVyZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpjcmVhdGVEZWNvZGVUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsQ2FjaGVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OmRpZFNlbmRCb2R5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90
ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9y
ZXN0YXJ0XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFu
YWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6OkN1cmxD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OndpbGxTZXR1cFNzbEN0eCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2No
ZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdFNjaGVkdWxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU1NMVmVyaWZpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxl
Z2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmNhbGxPbldvcmtlclRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNhbGxGdW5jdGlvbk9u
TWFpblRocmVhZDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2
ZVF1ZXVlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpy
ZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEZXJpdmVkQ2xhc3M+Ojph
cHBlbmRSdW5JbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
YWxsYmFja01vbnRoTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrQU1Q
TUxhYmVscyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0lDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVy
Q29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dENvZGVjVVRGOC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpyZWdpc3Rl
ckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJDb2Rl
Y3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuZXdUZXh0Q29kZWNXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtRGlzcGxheU9wZW5WUi5oOgorICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtTWFuYWdlck9wZW5WUi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdl
ck9wZW5WUjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSOjpnZXRWUkRpc3BsYXlzKToKKyAgICAgICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Ap
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRlUHJlcGFyZWRTdGF0ZW1lbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V0NEYXRhT2JqZWN0OjpTZXREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSdW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlvdXQ6
OmNyZWF0ZVJvb3RJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlv
dXQ6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5l
TGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9GbG9h
dGluZ09iamVjdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6Y29weVRvTmV3Q29udGFpbmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjbG9uZUZvck5ld1Bh
cmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQ
bGFjZWRGbG9hdHNUcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
aWRCYXNlbGluZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OnNldHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6YWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllck92ZXJsYXBNYXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omluc2Vy
dEludG9UcmFja2VkUmVuZGVyZXJNYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uZWRE
ZXNjZW5kYW50c01hcDo6YWRkRGVzY2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6YmVnaW5VcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjplbnN1cmVCbG9ja1JhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
OjpsYXlvdXRMaW5lR3JpZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6OmVuc3VyZUxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
Om1hdGVyaWFsaXplUmFyZUJsb2NrRmxvd0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y3JlYXRlSW5saW5lQm94KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFr
ZUNvdW50ZXJOb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRDb250YWluZXI6OnNldFJl
bmRlckJveEZyYWdtZW50SW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
ZWRGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb250
YWluaW5nRnJhZ21lbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNv
bXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lk
ZUdyaWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpj
cmVhdGVJbmxpbmVGbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlQW5jZXN0b3JDbGlwcGluZ1N0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJl
Z2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6Y3JlYXRlSW5saW5lQm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvdzo6UmVuZGVyTXVsdGlDb2x1bW5GbG93KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6c3R5bGVE
aWRDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OmNyZWF0ZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZp
ZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OmNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6aW1hZ2VR
dWFsaXR5Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZXBhaW50
UmVnaW9uQWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcik6CisgICAgICAgICog
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGlu
ZUJveDo6cGxhY2VFbGxpcHNpcyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFwcGVuZEZsb2F0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbGxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0
Qm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6YXBw
bHkpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dDo6cnVuUmVzb2x2ZXIgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9T
aXppbmc6OmFkZFRleHROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtlcjo6c2tpcExlYWRpbmdXaGl0ZXNw
YWNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRl
cnZhbHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5zZXRTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVDaXJjbGVTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFbGxpcHNlU2hhcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUG9seWdvblNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXBlOjpjcmVhdGVTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFz
dGVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZUJveFNoYXBlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNT
aGFwZVBhdGg6OmJsZW5kIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGxMYXllcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsb25lUHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRDYWNoZWRQc2V1ZG9TdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphY2Nlc3NDb3VudGVyRGlyZWN0aXZlcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGFkb3dT
VkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OlNoYWRvd0RhdGEp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVy
aXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRl
clNWR0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRl
cm4pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJj
ZXM6OnNldEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtl
clN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFya2VyTWlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFza2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlczo6c2V0RmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNl
dFN0cm9rZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJl
bmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVN
ZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRl
cjo6UmVuZGVyVHJlZVVwZGF0ZXIpOgorICAgICAgICAqIHJlcGxheS9Vc2VySW5wdXRCcmlkZ2Uu
aDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IpOgorICAgICAgICAqIHN0eWxlL1N0
eWxlUmVsYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21taXRSZWxhdGlv
bnNUb1JlbmRlclN0eWxlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zIGNvbnN0KToKKyAgICAgICAg
KiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
VHJlZVJlc29sdmVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6YWRkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpTVkdFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmVuc3VyZVNWR1JhcmVEYXRhKToKKyAgICAg
ICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dy
YXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aEJ5dGVTdHJlYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtOjpj
b3B5IGNvbnN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjpzY2hlZHVsZSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3Jh
dGVkUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0
ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVjb3JhdGVkRW51bWVyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVy
dHkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0
b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9y
SW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5p
bWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJGcm9udGVu
ZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVj
aFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1bW15SW5z
cGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQcmludGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAgICAqIHRl
c3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lNb2NrQ0RN
OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaDoKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2FtZXBhZFBy
b3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVucXVldWVF
dmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJH
bG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Oldv
cmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpXb3Jr
ZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5k
VGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9y
TW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3Qp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVh
ZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3Jl
YXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdpc3RyYXRp
b25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICogd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6Om1l
c3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0
R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRT
Y3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmV2YWx1
YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgorICAgICAg
ICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2Fs
bGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBl
bmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNr
czo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxs
YmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xNCAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjQ4NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNjBlN2ZiNTZjOTcwNWUxOWZjODliYzhh
NmJkNGY0MjNlZjE2MjViZS4uYzdhYWE4ZDE0NjNhMWVhMjkzYWIyMzQ1MzdmMmYzMzMyM2E2NmYx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDgtMTQgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29udGV4
dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwOgor
ICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL21hYy9D
bG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6OmNyZWF0ZSk6CisKIDIwMTktMDgtMTQgIEtlaXRo
IFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZv
ciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDM1OGYyYmYwMDVhZTY0NGQ4MTIzMjhk
NWRlZGU0MTljOGJhMDFjZmIuLjNiMTkyOGU5YTMwOTMwNTBhNTE3MGI3MzcwOTI2Zjk2ZTgxNTBi
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1
ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKToK
KyAgICAgICAgKiBnbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKwogMjAxOS0wNi0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjQ1
NTY3KTogW0dUS11bV1BFXSBbMi4yNS4xXSBXZWJLaXRXZWJEcml2ZXIgZ2V0cyBpbnN0YWxsZWQg
YXMgV2ViRHJpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVmMGY3MDdmOTgzYTgwOTcxZjhkMGZjNWM0N2MyZWFl
ZDE4YTQ0ODMuLmRhMjYyZGVmOTMxZmY5NDkzYzNhMWM1MzAxYjA2Zjc3MzhiNjRlMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjM4IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVu
c3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2spOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3Vw
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hcDo6YWRkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93
bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRh
YmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtl
RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlUmVkaXJl
Y3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3Jk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdp
c3RlclN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5
UGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5
bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFk
UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2ZUZyb21NZW1v
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToK
KyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpj
cmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQ
cm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENv
b3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrU291cDo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAg
ICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRj
aFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZyk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6dW53cmFwRm9yVGVzdGluZyk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6
aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjpDb25uZWN0aW9uVGVy
bWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAg
ICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vz
c01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0v
TW9kdWxlLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW06
CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhv
c3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVS
TC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6cGFy
c2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9SZW1v
dGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZv
Y2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51SXRl
bUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAg
ICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKToKKyAgICAgICAg
KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24pOgorICAgICAg
ICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xh
YmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51
KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKToKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRleG1hcExheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIpOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0
b3I6OlRocmVhZGVkQ29tcG9zaXRvcik6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9i
amVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rl
ck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0
cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8v
U2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5k
TWF0Y2hlc0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6SFRUUENv
b2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUhpc3RvcnlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFz
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChX
S0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXRI
aXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlv
bk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNl
dFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUgaW5pdFdpdGhQYWdl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoKKyAgICAgICAg
KFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9y
ZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFs
bG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24g
c2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNRTGl0ZVN0YXRlbWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAg
ICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoYXR0
YWNoQ29udGV4dE1lbnVDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNo
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoRG93
bmxvYWRDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAod2Via2l0RmF2aWNvbkRhdGFiYXNlT3Bl
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFj
aEZvcm1DbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25NYW5hZ2Vy
Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdD
bGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoSWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6
CisgICAgICAgIChhdHRhY2hJbmplY3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNw
cDoKKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKToKKyAg
ICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2Fn
ZV9oYW5kbGVyX2luX3dvcmxkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
RHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1v
amlDaG9vc2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0
aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViSW5zcGVjdG9yQ3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VEcmFnQW5kRHJvcEhhbmRsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaWRSZWxh
dW5jaFdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToK
KyAgICAgICAgKC1bV0tWaWV3IG1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5jcHA6CisgICAgICAgIChXS1dQRTo6Vmlldzo6Vmlldyk6CisgICAgICAg
IChXS1dQRTo6Vmlldzo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9x
dC9XUEVRdFZpZXcuY3BwOgorICAgICAgICAoV1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENh
bGxiYWNrKToKKyAgICAgICAgKFdQRVF0Vmlldzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKToK
KyAgICAgICAgKFdQRVF0Vmlldzo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHA6CisgICAgICAgIChXUEVRdFZpZXdCYWNr
ZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxv
YWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpj
cmVhdGVDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNy
ZWF0ZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydERpc3BsYXlMaW5rKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFRleHRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9y
YXRlVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0
Rm9yT3JpZ2luQ2FsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMp
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29u
bmVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VV
cGxvYWRBc3NlcnRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5SZXF1
aXJlc0d0azIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNh
dG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2Rl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2
aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRD
cmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpt
YXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2li
bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9h
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxh
eWluZ0F1ZGlibGVNZWRpYSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21w
b3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25T
dGF0ZVRyYWNraW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tp
bmdWaWV3IGRpZE1vdmVUb1dpbmRvd10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoUHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246d2ViVmlldzpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlv
dXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
YXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhXaW5kb3c6d2ViVmlldzpwYWdlOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgaW5pdFdpdGhQYWdlOnZpZXc6dXNlUGxhdGZvcm1GaW5kVUk6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9y
bVN0YXJ0VGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJW
aWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6Z2FtZXBhZENvbm5lY3Rl
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVNldENsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgor
ICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV0tC
dW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV0tCdW5k
bGVQYWdlU2V0VUlDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VPdmVy
bGF5Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21h
Yy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW06CisgICAgICAgIChXS0J1bmRsZVBhZ2VCYW5uZXJD
cmVhdGVCYW5uZXJXaXRoQ0FMYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0Ojpn
ZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpwdXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdEV4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYkVkaXRvckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwOgorICAgICAgICAod2Via2l0V2Vi
RXh0ZW5zaW9uQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0RnJhbWVHZXRPckNyZWF0
ZSk6CisgICAgICAgICh3ZWJraXRXZWJQYWdlQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW06CisgICAgICAgICgt
W1dLRE9NVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyIF9zZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQZW5kaW5nTWVzc2FnZTo6UGVuZGluZ01lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KToK
KyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50
VGNwU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3Jl
YXRlTmV3Q29ubmVjdGlvblNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZUFzeW5jUmVzb2x2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVj
dG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVUaW1lcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
OjpjcmVhdGVTdWJmcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRpbWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5k
bGVSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5k
Q29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1Zv
bGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNl
c3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdv
cmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6U291cmNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnByb2Nlc3NUYXNrU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUpOgorCiAyMDE5LTA4LTE0
ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ3YmZmY2Jk
MzdiZmUyMjcxNzA4YTYzMmEzMWY5NDdiZmJjM2MxMWYuLjc4MWJlNDUzYTIwYzJmZjQwZTBiYTRk
ZWRkZTRjOTljOTg0ZTk0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2Nh
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0
b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VT
eW5jTWFuYWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3Jh
Z2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVybWluYXRlKToKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRy
YWNrZXI6OlN0b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIwMTktMDgtMTQgIFJ5YW4gSGFkZGFkICA8
cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjI0ODUyNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggYzYzZWZhYmE1ZDg4NjgzYmVm
YmYxNjk1OGZmMWZlMDAwNGVhOWM2Yi4uMTk2OTRiZDExMTE2YTYwZmMxM2IwMzFjNDg3NmRlYWVj
MmM4ZDdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
OS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtX
VEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Q2xpZW50OjpjcmVhdGVGcm9udGVuZFNldHRpbmdzKToKKwogMjAxOS0wOC0xMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVT
U0lPTihyMjQ4NDU0KTogV0sxIGluc3BlY3RvciBmcm9udGVuZCBjbGllbnQgZG9lc24ndCBxdWV1
ZSBtZXNzYWdlcyB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgbG9hZGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKaW5kZXggODViZmU3ZmU3YWE0YzNmN2ZjYmIyZDcyOGRiNWRlYTdhZGFi
YThmZi4uYmI1NDBjMWU1YWUyYTg3YzYwNzE0ZmI5YmM1MjI2YzllZTgwNDRjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTE0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9u
Q29udGVudC5tbToKKyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2V0Vmlld3Bv
cnRDb25zdHJhaW5lZExheWVyczpzdGlja3lDb250YWluZXJNYXA6XSk6CisKIDIwMTktMDctMjkg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5n
ZU9ic2VydmVyXSBkaWRGaW5pc2hDb250ZW50Q2hhbmdlT2JzZXJ2aW5nIHNob3VsZCBpbmNsdWRl
IHRoZSB0eXBlIG9mIGNvbnRlbnQgY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDAyYTFjZTdiYTY4ZWJkZDJlN2ZiM2FiZjg0YzNkYjY4ZDc0ODVlNmUuLjljZDM1MWM1YmVk
NzZjMzI4MDlmZTRjYmI2M2E2MWQ0MmQwOWFkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2NiBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJI
aXN0b3J5UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bToKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50
YXRpb246XSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJv
eHkubW06CisgICAgICAgIChXS1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkpOgorICAgICAg
ICAoV0tQQ0Jvb2xlYW5SZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhbkFuZERhdGFSZXBseSk6
CisgICAgICAgIChXS1BDSW5zdGFudGlhdGVQbHVnaW5SZXBseSk6CisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5j
ZTo6bWV0aG9kTmFtZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5h
bWVkKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW06CisgICAgICAgICgtW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBjcmVhdGVQbHVn
aW5dKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1t
OgorICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmg6CisgICAg
ICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOnJlcGVhdDp0aW1lckZ1
bmM6XSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW06Cisg
ICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAg
ICAgICAgKGFkZFJlZGlyZWN0VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
YXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06CisgICAg
ICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2F0dGFjaFNj
cmlwdERlYnVnZ2VyXSk6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
Lm1tOgorICAgICAgICAoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV2ViVGV4dEl0
ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6
XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJj
ZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0p
OgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291
cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9zZXRUZXh0SW5kaWNhdG9yOndpdGhMaWZldGltZTpdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6Oldl
YlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5p
dF0pOgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKaW5kZXggNDYwMzBiYjYzYjQ2ZjJmOTI4NTNmMDQ5NzM2MDk1ZjMzNDIxYWE1
YS4uNmQ4OWMwM2M3OWJiOTVjNWNlNmIxZDVlMzkzZmUxYThlMTJlZDNmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8
VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIpOgorICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBQbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5TdHJlYW06
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6bG9hZCk6CisgICAgICAgICogUGx1Z2lucy9QbHVn
aW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnduZFByb2MpOgor
ICAgICAgICAqIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
OjpXZWJDaHJvbWVDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5M
b2NhbEZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkVsZW1lbnRQcm9wZXJ0eUJh
Zy5jcHA6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0
eUJhZyk6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAgICAgICAoV2ViSGlzdG9y
eUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBXZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwOgorICAgICAgICAoV0tRQ0E6
OkNBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dCk6CisgICAgICAg
ICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmg6CisgICAgICAgICog
V2ViTm9kZUhpZ2hsaWdodC5oOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHA6
CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcik6
CisgICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmg6CisgICAgICAgICogV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYlZp
ZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUpOgorICAgICAgICAoV2ViVmlldzo6ZW50
ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlldzo6YWRk
VXNlclNjcmlwdFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRU
b0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgor
CiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggM2YwZmIy
ZTFjZWVhZWYwNjU5YzM0YzgyNzFiZWVjMTA4MjM3NTZlZC4uNmUwMWRhYmNmODAwNzA5OTM3MDFi
ODYxZDNkZDM4OGUwNmQxNjg3NCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4
LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0g
QWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBibWFsbG9jL0lz
b0hlYXAuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg6CisKIDIwMTktMDct
MjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbYm1hbGxv
Y10gQWRkIElzb0hlYXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBub3Qg
YWxsb2NhdGluZyB0b28gbGFyZ2UgVkEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgKaW5kZXggMDdkNzA5YmExMmM4MmM4NTQ4MmQ3M2M3MjM3N2Y1MTllN2Zj
MmE1Yy4uZDBlNjI1MjgyYTg0ZjRmMzVlZWRlZDE5NWVkYjhkYzg5N2IxYTU3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU4LDcgKzU4LDcg
QEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAgICB2b2lkIHNldFByaXZhdGVQcm9w
ZXJ0eShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGll
cykKLSAgICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpT
UHJpdmF0ZVByb3BlcnR5TWFwPigpOworICAgICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcyA9
IG1ha2VVbmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7CiAgICAgICAgIG1fcHJpdmF0ZVBy
b3BlcnRpZXMtPnNldFByaXZhdGVQcm9wZXJ0eSh2bSwgb3duZXIsIHByb3BlcnR5TmFtZSwgdmFs
dWUpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggYWUzYTZmZTNhY2Y5YzZhODAzOTRlMWQ3
MzRmYTMxN2Q5MDhmYWUyYy4uOWNhM2I0YmY0MDg1MDc1MGI4YmM0MTk0OWY3NTA0MmIzNTcyMzFl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50PiogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojphc0NhbGxiYWNrT2JqZWN0KEVuY28K
IHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2Fs
bGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFz
c1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogICAgIDogUGFyZW50KGV4ZWMtPnZtKCksIHN0cnVj
dHVyZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxs
YmFja09iamVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVjdERh
dGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwganNDbGFzcykpCiB7CiB9
CiAKQEAgLTY3LDcgKzY3LDcgQEAgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNr
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3Qo
Vk0mIHZtLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
UGFyZW50KHZtLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShzdGQ6Om1h
a2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKKyAgICAs
IG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09iamVjdERhdGE+KG51
bGxwdHIsIGpzQ2xhc3MpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNz
UmVmLmNwcAppbmRleCBmMWM5ZDU3MDJhOGFhNjkwNDRkZmIyOTViNDcxZmNmY2JjODkwYjZiLi43
ZWVjMmE5MGE0NGY4NjBiYWEyMjc2Yjk2ZDQ1ZjJiZDY4NjE3MDgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTU5LDIxICs1OSwyMSBAQCBPcGFxdWVKU0Ns
YXNzOjpPcGFxdWVKU0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBP
cGFxdWVKU0NsYXNzKgogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogICAgIGlmIChjb25z
dCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZSA9IGRlZmluaXRpb24tPnN0YXRpY1ZhbHVlcykg
ewotICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFz
c1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3Rh
dGljVmFsdWUtPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBTdHJpbmc6
OmZyb21VVEY4KHN0YXRpY1ZhbHVlLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghdmFsdWVOYW1l
LmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1l
LmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1ZS0+
Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJp
YnV0ZXMsIHZhbHVlTmFtZSkpOworICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQo
dmFsdWVOYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1
ZS0+Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0
dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOwogICAgICAgICAgICAgKytzdGF0aWNWYWx1ZTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGlmIChjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5j
dGlvbiA9IGRlZmluaXRpb24tPnN0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBtX3N0YXRpY0Z1
bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1Rh
YmxlPigpOworICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlxdWU8T3BhcXVlSlND
bGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3RhdGljRnVuY3Rp
b24tPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBTdHJpbmc6OmZy
b21VVEY4KHN0YXRpY0Z1bmN0aW9uLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghZnVuY3Rpb25O
YW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGljRnVuY3Rpb25zLT5zZXQoZnVu
Y3Rpb25OYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5Pihz
dGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0aW9uLT5hdHRyaWJ1dGVz
KSk7CisgICAgICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUu
aW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5j
YWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgICAg
ICsrc3RhdGljRnVuY3Rpb247CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjgsMjEgKzEyOCwyMSBA
QCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShKU0M6
OlZNJiwgT3BhcXVlSlNDbGFzcyoganNDbAogICAgIDogbV9jbGFzcyhqc0NsYXNzKQogewogICAg
IGlmIChqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcykgewotICAgICAgICBzdGF0aWNWYWx1ZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAgICAg
ICAgc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFi
bGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRl
cmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmVuZCgpOwogICAgICAgICBmb3Ig
KE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0Ns
YXNzLT5tX3N0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKICAgICAgICAgICAgIFN0cmluZyB2YWx1
ZU5hbWUgPSBpdC0+a2V5LT5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgICAgIHN0YXRpY1ZhbHVl
cy0+YWRkKHZhbHVlTmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljVmFsdWVFbnRy
eT4oaXQtPnZhbHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZh
bHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+
YWRkKHZhbHVlTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQtPnZh
bHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5hdHRy
aWJ1dGVzLCB2YWx1ZU5hbWUpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChqc0NsYXNz
LT5tX3N0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAgICAg
c3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25z
VGFibGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29u
c3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMtPmVuZCgpOwogICAg
ICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKLSAgICAgICAg
ICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgpLCBzdGQ6Om1h
a2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rpb24s
IGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOworICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5h
ZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIG1ha2VVbmlxdWU8U3RhdGljRnVuY3Rpb25FbnRy
eT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzKSk7CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRl
eHREYXRhJiBPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHREYXRh
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vcGFxdWVKU0NsYXNzRGF0YSgpLmFkZCh0
aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFjb250ZXh0RGF0YSkKLSAg
ICAgICAgY29udGV4dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250ZXh0
RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CisgICAgICAgIGNvbnRleHREYXRhID0gbWFrZVVuaXF1
ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwogICAgIHJldHVy
biAqY29udGV4dERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKaW5kZXggZDllZTY3NDAzNDljZmVm
ZGZiY2MwZDMxMDk0ZjFmNGRlNWE1MmMxZS4uYmE0YTVhMTY2OTdhZjVmOGE5NzIyZTU3NDY5ZTM5
NGQ5NzkwNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU0Nv
bnRleHRHcm91cEFkZE1hcmtpbmdDb25zdHJhaW50KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBK
U01hcmtpbmdDb25zdHIKICAgICAvLyBlbHNlIGdldHMgbWFya2VkLgogICAgIENvbnN0cmFpbnRW
b2xhdGlsaXR5IHZvbGF0aWxpdHkgPSBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVkQnlNYXJr
aW5nOwogICAgIAotICAgIGF1dG8gY29uc3RyYWludCA9IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxl
TWFya2luZ0NvbnN0cmFpbnQ+KAorICAgIGF1dG8gY29uc3RyYWludCA9IG1ha2VVbmlxdWU8U2lt
cGxlTWFya2luZ0NvbnN0cmFpbnQ+KAogICAgICAgICB0b0NTdHJpbmcoIkFtYyIsIGNvbnN0cmFp
bnRJbmRleCwgIigiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWludENh
bGxiYWNrKSksICIpIiksCiAgICAgICAgIHRvQ1N0cmluZygiQVBJIE1hcmtpbmcgQ29uc3RyYWlu
dCAjIiwgY29uc3RyYWludEluZGV4LCAiICgiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oY29uc3RyYWludENhbGxiYWNrKSksICIsICIsIFJhd1BvaW50ZXIodXNlckRhdGEpLCAiKSIp
LAogICAgICAgICBbY29uc3RyYWludENhbGxiYWNrLCB1c2VyRGF0YV0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KaW5kZXggZDQ2OWI3NWEzMWYwZWZjYTlkMDdhYmIw
M2IwYmU2NjE2MWIzOTU2Ny4uNGI1OTkwNzNmZTc2YjQ4NjQ0MzY5OWFiZGNiMzRjNDE2NGJjMmUz
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYwNiw3
ICs2MDYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihKU0ds
b2JhbENvbnRleHRSZWYpY29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFs
dWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0
aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01h
cFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6
dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBdOwogCi0gICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3Rk
OjptYWtlX3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6
OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7CisgICAgbV9jYWNoZWRKU1dyYXBwZXJz
ID0gbWFrZVVuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6
OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7CiAKICAgICBBU1NFUlQoIXRvSlNHbG9i
YWxPYmplY3QoY29udGV4dCktPndyYXBwZXJNYXAoKSk7CiAgICAgdG9KU0dsb2JhbE9iamVjdChj
b250ZXh0KS0+c2V0V3JhcHBlck1hcChzZWxmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IGVlOTMyODIxZWY3NGJkNjg5MWFl
OGYyOWZhZDdiYmE1YWZlYTBjYmMuLjczY2I0MjcwNDM4MTgzMWU4MTlkOWQ5NDNlYjllNTQ0MDMw
OTZmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tG
dW5jdGlvbi5tbQpAQCAtMTk1LDE4ICsxOTUsMTggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+
PigpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3Vs
dFR5cGUgdHlwZURvdWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxiYWNrQXJndW1lbnRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
YWxsYmFja0FyZ3VtZW50Qm9vbGVhbj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlw
ZSB0eXBlVm9pZCgpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJl
c3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxiYWNrQXJndW1lbnRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNs
YXNzKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpCkBAIC0yMjgsMTkgKzIyOCwx
OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAo
Y2xzID09IFtKU1ZhbHVlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrQXJndW1lbnRKU1ZhbHVlPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEpTVmFsdWU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05T
U3RyaW5nIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxi
YWNrQXJndW1lbnROU1N0cmluZz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENh
bGxiYWNrQXJndW1lbnROU1N0cmluZz4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNOdW1iZXIg
Y2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1
bWVudE5TTnVtYmVyPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tB
cmd1bWVudE5TTnVtYmVyPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0RhdGUgY2xhc3NdKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0
ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0Rh
dGU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TQXJyYXkgY2xhc3NdKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKICAg
ICAgICAgaWYgKGNscyA9PSBbTlNEaWN0aW9uYXJ5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEaWN0aW9uYXJ5Pigp
OwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNs
YXNzPihjbHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZD
bGFzcz4oY2xzKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2soY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKQpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChOU0lu
dm9jYXRpb24gKmludm9jYXRpb24gPSB2YWx1ZVRvVHlwZUludm9jYXRpb25Gb3IoY29weSkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3RydWN0
PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxi
YWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiB9OwpAQCAtMzM1LDQ1ICszMzUsNDUgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmlj
PFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8
VD4+KCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVz
dWx0VHlwZSB0eXBlRG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxiYWNrUmVzdWx0Qm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bGJhY2tSZXN1bHRCb29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5
cGVWb2lkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
UmVzdWx0Vm9pZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRW
b2lkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAg
IHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBj
aGFyKikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVz
dWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVN0cnVjdChjb25zdCBjaGFyKiBi
ZWdpbiwgY29uc3QgY2hhciogZW5kKQogICAgIHsKICAgICAgICAgU3RyaW5nUmFuZ2UgY29weShi
ZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IHR5cGVU
b1ZhbHVlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBj
b3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTY2Miw3ICs2NjIs
NyBAQCBzdGF0aWMgSlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JJbnZvY2F0aW9u
KEpTQ29udGV4dCAqY29udGV4dCwgTlNJbnZvYwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
dG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKICAgICBKU0M6OlZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKLSAgICBhdXRvIGlt
cGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihpbnZv
Y2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUo
cmVzdWx0KSk7CisgICAgYXV0byBpbXBsID0gbWFrZVVuaXF1ZTxKU0M6Ok9iakNDYWxsYmFja0Z1
bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgV1RGTW92ZShhcmd1
bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IGltcGwt
Pm5hbWUoKTsKICAgICByZXR1cm4gdG9SZWYoSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG5hbWUsIFdURk1vdmUoaW1wbCkp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250
ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcApp
bmRleCBlMDFlOTcwYzdmNTgwMzY1NjE4ZWYxZGFiODU1NDRkNzA0ZjliNDdhLi43OGQ3NjU1ZmY4
MDc3NjBkNDYwOGE2MTdlNTdjOTBmMTU0Mjc5OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHZv
aWQganNjQ29udGV4dFNldFZpcnR1YWxNYWNoaW5lKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdSZWZQ
dHI8SlNDVmlydHVhbE0KICAgICAgICAgICAgIHByaXYtPmpzQ29udGV4dCA9IEpTUmV0YWluUHRy
PEpTR2xvYmFsQ29udGV4dFJlZj4oQWRvcHQsIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAo
anNjVmlydHVhbE1hY2hpbmVHZXRDb250ZXh0R3JvdXAocHJpdi0+dm0uZ2V0KCkpLCBudWxscHRy
KSk7CiAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlNHbG9iYWxPYmplY3QocHJpdi0+
anNDb250ZXh0LmdldCgpKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPndyYXBwZXJNYXAo
KSkKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0V3JhcHBlck1hcChzdGQ6Om1ha2VfdW5p
cXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgpKSk7CisgICAgICAgICAg
ICBnbG9iYWxPYmplY3QtPnNldFdyYXBwZXJNYXAobWFrZVVuaXF1ZTxKU0M6OldyYXBwZXJNYXA+
KHByaXYtPmpzQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBqc2NWaXJ0dWFsTWFjaGluZUFkZENv
bnRleHQocHJpdi0+dm0uZ2V0KCksIGNvbnRleHQpOwogICAgIH0gZWxzZSBpZiAocHJpdi0+dm0p
IHsKICAgICAgICAgQVNTRVJUKHByaXYtPmpzQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKaW5kZXggMTFiYjdjMGI4NzM3ZGI2
N2RkMTdkY2QyNGY3MDI5NDM0NDY5YTgwMy4uZjUyM2VhNDE5OWY4YWJkNzMyZjc3YjYyODE0MTIw
MTM0YmI4YmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q1dyYXBwZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NX
cmFwcGVyTWFwLmNwcApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFdyYXBw
ZXJNYXA6OldyYXBwZXJNYXAoSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCkKLSAgICA6IG1f
Y2FjaGVkSlNXcmFwcGVycyhzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVy
LCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKKyAgICA6IG1fY2FjaGVk
SlNXcmFwcGVycyhtYWtlVW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpTT2Jq
ZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKaW5kZXggYTc1ZjU4ZGMxNDZiM2I2NDk1
Y2ViMTY3YWRmNGRhYmZmMDZiMGM4OS4uZGE0NzcwNTFmMzQ1ZTA3MTY4ZmM3ZDA2ZTBjN2Y1MjYz
MTE4NmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9i
ZVN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3Rh
Y2suY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgUGFnZSogU3RhY2s6OmVuc3VyZVBhZ2VGb3Iodm9p
ZCogYWRkcmVzcykKICAgICBpZiAoTElLRUxZKGl0ICE9IG1fcGFnZXMuZW5kKCkpKQogICAgICAg
ICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihi
YXNlQWRkcmVzcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gbWFrZVVu
aXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5h
ZGQoYmFzZUFkZHJlc3MsIFdURk1vdmUocGFnZSkpOwogICAgICAgICBtX2xhc3RBY2Nlc3NlZFBh
Z2UgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMmM5YzNiMGRlODllYjNlMzgzZjRjYmRj
ZjIxMmQyNjhjMWMxOWRiYS4uN2Y2ODU4NmMxYzAyODljMGEzMjUyMmZkZTllMDY3ZGYxZjQxZTIx
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTEyNDEs
NyArMTI0MSw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgIHZvaWQgcHJpbnQoVmFsdWUqIG9y
aWdpbiwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgYXV0byBwcmlu
dExpc3QgPSBQcmludGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0KGFyZ3VtZW50cy4uLik7Ci0gICAg
ICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwqPiht
X2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmlu
dExpc3QpKSk7CisgICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQ
cmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEFpcjo6UHJpbnRTcGVj
aWFsPihwcmludExpc3QpKSk7CiAgICAgICAgIEluc3QgaW5zdChBaXI6OlBhdGNoLCBvcmlnaW4s
IEFyZzo6c3BlY2lhbChwcmludFNwZWNpYWwpKTsKICAgICAgICAgUHJpbnRlcjo6YXBwZW5kQWly
QXJncyhpbnN0LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKICAgICAg
ICAgYXBwZW5kKFdURk1vdmUoaW5zdCkpOwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgY2xhc3MgTG93
ZXJUb0FpciB7CiAgICAgewogICAgICAgICBpZiAoIWZpZWxkKSB7CiAgICAgICAgICAgICBmaWVs
ZCA9IHN0YXRpY19jYXN0PFQqPigKLSAgICAgICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lhbChz
dGQ6Om1ha2VfdW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4p
KSk7CisgICAgICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxUPihzdGQ6
OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBmaWVsZDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcAppbmRleCBmZmNiMmQ0ZTI3MTQ0Mjk3MGU1NDY0MzY2NzBmN2YyOWRlYjFhYjFjLi4yZWNj
ZGFjMDQ5ZTY4ZDExM2UyM2Y5N2YyNDM1M2E1ZDRhYWEzYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiBQcm9jZWR1cmU6OlByb2NlZHVyZSgpCiAgICAgOiBtX2NmZyhuZXcg
Q0ZHKCp0aGlzKSkKICAgICAsIG1fbGFzdFBoYXNlTmFtZSgiaW5pdGlhbCIpCi0gICAgLCBtX2J5
cHJvZHVjdHMoc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQorICAgICwgbV9i
eXByb2R1Y3RzKG1ha2VVbmlxdWU8T3BhcXVlQnlwcm9kdWN0cz4oKSkKICAgICAsIG1fY29kZShu
ZXcgQWlyOjpDb2RlKCp0aGlzKSkKIHsKICAgICBtX2NvZGUtPnNldE51bUVudHJ5cG9pbnRzKG1f
bnVtRW50cnlwb2ludHMpOwpAQCAtMzExLDI4ICszMTEsMjggQEAgdm9pZCBQcm9jZWR1cmU6OmRl
bGV0ZU9ycGhhbnMoKQogRG9taW5hdG9ycyYgUHJvY2VkdXJlOjpkb21pbmF0b3JzKCkKIHsKICAg
ICBpZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0gc3RkOjptYWtlX3Vu
aXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fZG9taW5hdG9ycyA9IG1ha2VVbmlx
dWU8RG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9kb21pbmF0b3JzOwogfQogCiBO
YXR1cmFsTG9vcHMmIFByb2NlZHVyZTo6bmF0dXJhbExvb3BzKCkKIHsKICAgICBpZiAoIW1fbmF0
dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0
dXJhbExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fbmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxO
YXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOwogfQogCiBC
YWNrd2FyZHNDRkcmIFByb2NlZHVyZTo6YmFja3dhcmRzQ0ZHKCkKIHsKICAgICBpZiAoIW1fYmFj
a3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFj
a3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1ZTxC
YWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQogCiBC
YWNrd2FyZHNEb21pbmF0b3JzJiBQcm9jZWR1cmU6OmJhY2t3YXJkc0RvbWluYXRvcnMoKQogewog
ICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWlu
YXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAg
ICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0
b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAg
LTM1OCw3ICszNTgsNyBAQCB2b2lkKiBQcm9jZWR1cmU6OmFkZERhdGFTZWN0aW9uKHNpemVfdCBz
aXplKQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0YVNlY3Rpb24+KHNpemUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4gZGF0
YVNlY3Rpb24gPSBtYWtlVW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKICAgICB2b2lkKiByZXN1
bHQgPSBkYXRhU2VjdGlvbi0+ZGF0YSgpOwogICAgIG1fYnlwcm9kdWN0cy0+YWRkKFdURk1vdmUo
ZGF0YVNlY3Rpb24pKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5jcHAKaW5kZXggMzNmOGFiZmVmYmMxZjhmOTE2NTQ1YTNiZGNhMTk2YjBj
YzY2YzM5OC4uZDVkNjljMzBhNTk5MTc1ZjI4MTQ4MzYyODYzNmZjYjc3MDY4MDE2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAg
Q0NhbGxTcGVjaWFsKiBDb2RlOjpjQ2FsbFNwZWNpYWwoKQogewogICAgIGlmICghbV9jQ2FsbFNw
ZWNpYWwpIHsKICAgICAgICAgbV9jQ2FsbFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxDQ2FsbFNwZWNp
YWwqPigKLSAgICAgICAgICAgIGFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbFNwZWNp
YWw+KCkpKTsKKyAgICAgICAgICAgIGFkZFNwZWNpYWwobWFrZVVuaXF1ZTxDQ2FsbFNwZWNpYWw+
KCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jQ2FsbFNwZWNpYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGYzNmI5YjJmZTY2ODE2MGI4
ODk5YjBjNTBiMzE5N2Q3NTg4MjRmODAuLjk1Y2FhMDA0ZDhlYjM5MjMzMGUxY2NiYjYzOWE1Y2Vl
NzljYmM3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2Vu
ZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUu
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBj
b2RlKQogICAgICAgICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIGNv
ZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxHZW5l
cmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2RlKTsKKyAgICAgICAgY29kZS5tX2dlbmVyYXRl
QW5kQWxsb2NhdGVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM+KGNvZGUpOwogICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
cy0+cHJlcGFyZUZvckdlbmVyYXRpb24oKTsKIAogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAppbmRleCBlZjE1NDRjMDdiYjMyYTkwMzdmMmNi
NzFlMTVlNzRhOWJlNjFiZjk0Li4zZGNhMjk2Nzg4YjAwMTA2OGUwMWY0MjNlMTE2YzdjMmE0ZTdk
YTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gY29tcGlsZShCMzo6UHJv
Y2VkdXJlJiBwcm9jKQogICAgIGdlbmVyYXRlKHByb2MuY29kZSgpLCBqaXQpOwogICAgIExpbmtC
dWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCMzo6Q29tcGls
YXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25Q
dHJUYWcsICJ0ZXN0YWlyIGNvbXBpbGF0aW9uIiksIHByb2MucmVsZWFzZUJ5cHJvZHVjdHMoKSk7
CiB9CiAKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgdGVzdEludmFsaWRhdGVDYWNoZWRUZW1w
UmVnaXN0ZXJzKCkKICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjpiaWdJbW0o
Yml0d2lzZV9jYXN0PGludHB0cl90PigmdGhpbmdzKSksIGJhc2UpOwogCiAgICAgQjM6OkJhc2lj
QmxvY2sqIHBhdGNoUG9pbnQxUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCMzo6QWlyOjpT
cGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5p
cXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0
Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2lu
dFNwZWNpYWw+KCkpOwogCiAgICAgLy8gSW4gUGF0Y2hwb2ludCwgTG9hZCB0aGluZ3NbMF0gLT4g
dG1wLiBUaGlzIHdpbGwgbWF0ZXJpYWxpemUgdGhlIGFkZHJlc3MgaW4geDE3IChkYXRhTWVtb3J5
UmVnaXN0ZXIpLgogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQxID0gcGF0Y2hQ
b2ludDFSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQs
IEIzOjpPcmlnaW4oKSk7CkBAIC0xOTMwLDcgKzE5MzAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJl
Z1Bpbm5lZCgpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAg
ICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRj
aHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRj
aHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNp
YWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkp
OwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBC
Mzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0xOTYyLDcg
KzE5NjIsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDIoKQogICAgIEdQUlJlZyBwaW5u
ZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQp
OwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNw
ZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIz
OjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VV
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBi
M1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpW
b2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgdm9pZCB0ZXN0QXJndW1l
bnRSZWdQaW5uZWQzKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
OwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwq
IHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6
OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50
U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwog
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxC
Mzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCAxNTVjYTRhYjQ3MGIwMTQ0MmFkOTU0M2E4YWUxZmMx
ZmM1OWY3ZTNhLi4xYzdhZDBmOTRlMDZiOGMzMWJmZTdjYzk0ZDA1NTJjNDc3OTYwN2U3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC0xODksNyArMTg5LDcgQEAgZXh0ZXJuIExvY2sg
Y3Jhc2hMb2NrOwogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY29tcGlsZVBy
b2MoUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsID0gT3B0aW9uczo6ZGVm
YXVsdEIzT3B0TGV2ZWwoKSkKIHsKICAgICBwcm9jZWR1cmUuc2V0T3B0TGV2ZWwob3B0TGV2ZWwp
OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShw
cm9jZWR1cmUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBp
bGUocHJvY2VkdXJlKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAppbmRleCBjMTA4NTlhY2VkM2RiNzhiNjY0OTc2YTA4YjhlNWI0OGQ2NTJiMmYzLi43N2ZiNjVk
YTBiN2EwNmM3ZDY1OGJhYmRiNGU1MTA4YTc5MTdlZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC04NTMsNyArODUzLDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgICAgIHN0YXRlLnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcihzcGlsbFN0YXRl
KTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFjY2Vzcy5jYWxsTGlua0luZm8oKSk7
Ci0gICAgICAgICAgICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxMaW5rSW5mbz4oKTsKKyAgICAgICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IG1ha2VV
bmlxdWU8Q2FsbExpbmtJbmZvPigpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2Vu
ZXJhdGVkIGEgcG9seW1vcnBoaWMgY2FsbCBzdHViIHRoYXQganVtcGVkIGJhY2sgdG8gdGhlIGdl
dHRlcgogICAgICAgICAgICAgLy8gc3R1Yiwgd2hpY2ggdGhlbiBqdW1wZWQgYmFjayB0byB0aGUg
bWFpbiBjb2RlLCB0aGVuIHdlJ2QgaGF2ZSBhIHJlYWNoYWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5j
cHAKaW5kZXggMmJkOWZlNjUxOTlkMDdmMTczZTM4MzBkYzc0ZTQ2N2ViOWQ1NDFmYy4uOTI1N2Zj
MjI2NjUyOWY4NjEzN2Q1ZGFkOGM5MjQ5NzE4MzkwNDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3Vt
ZW50cyA6IHB1YmxpYyBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6U2xvd1AKICAgICB2b2lkIEFj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6
SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9u
LCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAg
IHsgXAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvID0gaml0LmxhYmVsKCk7IFwKLSAg
ICAgICAgbV9nZW5lcmF0b3JzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNsb3dQYXRoQ2FsbEdl
bmVyYXRvcldpdGhBcmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlw
ZSwgUmVzdWx0VHlwZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQs
IGFyZ3MpKTsgXAorICAgICAgICBtX2dlbmVyYXRvcnMuYXBwZW5kKG1ha2VVbmlxdWU8U2xvd1Bh
dGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVy
YXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24s
IHJlc3VsdCwgYXJncykpOyBcCiAgICAgfSBcCiAKIFNOSVBQRVRfU0xPV19QQVRIX0NBTExTKEpT
Q19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCAzM2JiMGMwNjYzNTM4MWU4
OThmNjVhODc0ZjFmMzZhOGM5NDgyM2FmLi4xMGM2NWJiOWRkNzA5YTlhZjdhYmE2Y2ViOGE5Yjcz
NTk3NzE2NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNjUsMTUgKzY1LDE1IEBAIHZvaWQgQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4K
ICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7
CiAKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+
KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7Ci0gICAgYXV0byBmaXJzdEJsb2NrID0g
c3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6
RW50cnlCbG9jayk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZmlyc3RCbG9j
ayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVu
dHJ5QmxvY2spOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkp
OwogCiAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogY3VycmVudCA9IGZpcnN0QmxvY2suZ2V0KCk7CiAgICAgYXBwZW5kQmxvY2soV1RGTW92
ZShmaXJzdEJsb2NrKSk7CiAKLSAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOworICAgIGF1dG8g
ZXhpdCA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6
OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7
CiAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBs
KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBib29s
IGNyZWF0ZWRCbG9jayA9IGZhbHNlOwogICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29k
ZSBpcyBhIGp1bXAgdGFyZ2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJhc2lj
IGJsb2NrLgogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywg
Ynl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7Ci0gICAgICAgICAg
ICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGlu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBtYWtlVW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Js
b2NrLmdldCgpOwogICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwog
ICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDhkYWMxNTg1ZmFiMmI5OThjMWU1
ZDg4NzUyYmExMmRmNmRhZGJkZS4uMzkzZjE4MjRlNDFhNGJlYjUxNGM2MmE2OTZmMzNhODM3MjQ5
NWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZN
JiB2bSkKIAogdm9pZCBDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3QgQ2Fs
bEZyYW1lU2h1ZmZsZURhdGEmIHNodWZmbGVEYXRhKQogewotICAgIG1fZnJhbWVTaHVmZmxlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsK
KyAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVEYXRh
PihzaHVmZmxlRGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBlZjFjYWJmYTcxOGIwODBkN2Yz
ZTg2MzdmOWY5NGY2MDU4NmVlNGU4Li4zOWEyM2I0YzdmNDdkOGZjZTVlMzBlZWNhNTUwZTc3ZGFk
MzE1ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxp
bmVDYWNoZXMoKQogQ29kZUJsb2NrOjpKSVREYXRhJiBDb2RlQmxvY2s6OmVuc3VyZUpJVERhdGFT
bG93KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiB7CiAgICAgQVNTRVJUKCFtX2ppdERhdGEp
OwotICAgIG1faml0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGF0YT4oKTsKKyAgICBtX2pp
dERhdGEgPSBtYWtlVW5pcXVlPEpJVERhdGE+KCk7CiAgICAgcmV0dXJuICptX2ppdERhdGE7CiB9
CiAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6cmFyZUNhc2VQcm9m
aWxlQ291bnRGb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrCiB2b2lkIENv
ZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVn
aXN0ZXJzKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBl
bnN1cmVKSVREYXRhKGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CisgICAgZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOwogfQogCiB2b2lkIENvZGVC
bG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9m
ZnNldExpc3Q+IHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQpAQCAtMTc5MCw3ICsxNzkwLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZz
ZXRTbG93KGNvbnN0IE9wQ2F0Y2gKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhcmFtZXRl
cnMoKTsgKytpKQogICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGkpKTsKIAotICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgIGF1
dG8gcHJvZmlsZXMgPSBtYWtlVW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5tX3NpemUg
PT0gbGl2ZU9wZXJhbmRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBy
b2ZpbGVzLT5tX3NpemU7ICsraSkKICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA4NzA2OGJhNjVkZDg1YzIzZmJlNGE0OTBl
OTc0YTcyODFmMjU2MDRjLi4zMTQzOGUwYWM1MDY5YjI3NDk2OTg4ODZhYjExMjAwNzZiY2I3M2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC05NDMs
NyArOTQzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0
YSkgewotICAgICAgICAgICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURh
dGE+KCk7CisgICAgICAgICAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4o
KTsKICAgICAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIG1fY2F0Y2hQcm9maWxl
cyBjYW4gYmUgdG91Y2hlZCBmcm9tIGNvbXBpbGVyIHRocmVhZHMuCiAgICAgICAgICAgICBtX3Jh
cmVEYXRhID0gV1RGTW92ZShyYXJlRGF0YSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4IDJkOTQzMWNmMGIx
NDRmYTNhMmMyMjFhNjZlOTQwNzBjNzc1MGUwZTAuLmIxYTAxZmZhNGQ5MzQ4ZmVjYjI0Yzk2ODhi
YzgwMDUyZjkzODg2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RGR0V4aXRQcm9maWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIEV4aXRQcm9maWxlOjph
ZGQoQ29kZUJsb2NrKiBvd25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAv
LyBJZiB3ZSd2ZSBuZXZlciBzZWVuIGFueSBmcmVxdWVudCBleGl0cyB0aGVuIGNyZWF0ZSB0aGUg
bGlzdCBhbmQgcHV0IHRoaXMgc2l0ZQogICAgIC8vIGludG8gaXQuCiAgICAgaWYgKCFwcm9maWxl
Lm1fZnJlcXVlbnRFeGl0U2l0ZXMpIHsKLSAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNp
dGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CisgICAg
ICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZyZXF1
ZW50RXhpdFNpdGU+PigpOwogICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMtPmFw
cGVuZChzaXRlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcAppbmRleCA0ZjQ4YTFkNmM5ODcyMmU1YWMyZWNlODdlNTA0MDIzMmY5YTVkNmIx
Li40ZmIxMTU3MzAwM2I1MmVmZDlhODY2ZmIzYmRmNzc1MDk4Y2VmYWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZShDb2RlQmxvY2sqLCBDb2RlQmxvY2sq
LAogVmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4mIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
azo6ZW5zdXJlRGVmZXJyZWRTb3VyY2VEdW1wKCkKIHsKICAgICBpZiAoIW1fZGVmZXJyZWRTb3Vy
Y2VEdW1wKQotICAgICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4+KCk7CisgICAgICAgIG1fZGVmZXJyZWRTb3VyY2VE
dW1wID0gbWFrZVVuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPj4oKTsKICAgICByZXR1
cm4gKm1fZGVmZXJyZWRTb3VyY2VEdW1wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggZGI5YWQxNjBhYzI4MTMwZjM5ODQx
ZmYzYmZlYjMyYjY4M2RkZWFkNi4uZGY0ZDc3Y2UzZjYzYjUyMDA3NTU0NGM0MWExNmNiMjMxZDdk
ZmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRT
dGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIEFj
Y2Vzc0Nhc2U6OkdldHRlcjogewotICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gYWNjZXNzLmFzPEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZvKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICpjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKmNhbGxM
aW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAppbmRleCBmYzFmNDYwZGU5NjU0MWQ4ZmEwOTlj
YmI0NWYyMzA5YzJhMzMzODBmLi5lZDhkNDkzZjdlZTZmMWRhMmI5MDlhZDU3YzYyNzcxODEzYzJk
NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZh
cmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFy
aWFudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgR2V0QnlJZFZhcmlhbnQmIEdldEJ5SWRWYXJpYW50
OjpvcGVyYXRvcj0oY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQogICAgIG1fY3VzdG9tQWNj
ZXNzb3JHZXR0ZXIgPSBvdGhlci5tX2N1c3RvbUFjY2Vzc29yR2V0dGVyOwogICAgIG1fZG9tQXR0
cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1dGU7CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtT
dGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxM
aW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtT
dGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1
cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICBy
ZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAppbmRleCAwOTI5ZDZmYjQxMjY3NGVkN2Yy
MDQwNDVmYjQyNWViN2QzOGQzYzkzLi42ZWViMTQ1YjMzNzk2NjJhZjFjMTUwMDE5MDc2NzI3YTM5
ZWUyYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUqIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6
YWRkKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFs
dWVQcm9maWxlS2V5JiBrZXkpCiB7CiAgICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7CisgICAg
ICAgIG1fZGF0YSA9IG1ha2VVbmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNp
emUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobV9kYXRhLT5hdChpKS5rZXkoKSA9PSBrZXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNj
ZXNzQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nl
c3NDaGFpbi5oCmluZGV4IGI0OWU0ZTI0MmU1MmYwODEzMTVlNDhmYjFlMWJjYzI5N2U1MjhhZTAu
LmExZWNiOTRkZDBkMTg2NzA4NjM1MmY1MmI1YjU4YzMxOTNlZWNmZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY2xvbmUoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKICAg
ICB9CiAKICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyByZXR1
cm4gbV9jaGFpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMjJmNDU1ODE0Yjg0YWY0ZmU3NGNhZjIzNDAxZDMw
YWRhZGFlNWM2ZS4uM2IzMDIzMzlmMDM1MGRhYzQyOGYzZjA0Y2M3MzUyYTNhZTUyMWI4MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9y
cGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1
YlJvdXRpbmUoY29kZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgY29k
ZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlv
bkhhbmRsaW5nKTsKICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50
cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1f
d2Vha1JlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxXcml0ZUJhcnJpZXI8SlND
ZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgbV93ZWFrUmVm
ZXJlbmNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92
ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgp
LCAiXG4iKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcAppbmRleCBjMmQ5NTMyMGNlYmQ1NmRiZGM5M2VlYmQ2YzMxNDBhN2RmN2Nj
MjA5Li5kNjQyYmNjZmU3OTc2NmM1Mjc5YmJjODEwODcwMWViN2Y4NTgyNGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC0yMDIs
NyArMjAyLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1Yklu
Zm8oCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxleEdl
dFN0YXR1czo6SW5saW5lYWJsZTogewogICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzID0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
KmNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBj
YWxsRXhpdFNpdGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFZhcmlhbnQuY3BwCmluZGV4IDVkNmIyOTA0NWNhNjc1YzU2ZmE3MWQ1NDc1YTExNWIy
ZGY2ZjNjNWUuLjcyYzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZlNjM2MmY3MmU2YzBhMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcApA
QCAtNDYsNyArNDYsNyBAQCBQdXRCeUlkVmFyaWFudCYgUHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9y
PShjb25zdCBQdXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jb25kaXRpb25TZXQgPSBvdGhl
ci5tX2NvbmRpdGlvblNldDsKICAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zmc2V0OwogICAgIGlm
IChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwor
ICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90
aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9jYWxsTGlua1N0YXR1
cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IDk2ZDIyZWNmYTBhNGM3
NTZlZGZmNjFmMDAxM2Y3MjU4ZTdkM2ZiZDUuLjUzZjIwOGJjYWRlZDNkZWEyZGVlMThhMGU4OTYw
NWM0OTBhMTk1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVjb3JkZWRTdGF0dXNlczo6
UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAKIENhbGxMaW5rU3Rh
dHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8g
c3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKKyAg
ICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CiAg
ICAgQ2FsbExpbmtTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBjYWxscy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUzLDcgKzUzLDcgQEAgQ2FsbExpbmtTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4KIAogR2V0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhj
b25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMp
CiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdldEJ5SWRTdGF0dXM+
KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEdldEJ5SWRTdGF0dXM+
KHN0YXR1cyk7CiAgICAgR2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwog
ICAgIGdldHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVz
UHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02MSw3ICs2MSw3IEBAIEdldEJ5SWRTdGF0
dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbiwKICAgICAKIFB1dEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1
dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgUHV0QnlJZFN0
YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
dXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxQ
dXRCeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIFB1dEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1
c1B0ci5nZXQoKTsKICAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBX
VEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjksNyArNjksNyBA
QCBQdXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sCiAKIEluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IElu
QnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPEluQnlJZFN0YXR1cz4oc3RhdHVzKTsKICAgICBJbkJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0
YXR1c1B0ci5nZXQoKTsKICAgICBpbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4s
IFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNs
ZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggMzBhMWYwNTUyNTllM2RlZDFhNzE2OGVlMzUyNmY3
MmMwODRiZWU1YS4uZmNjMjkxMTgwMjQ0ZTBiMzIyOWUyZmQ3NjMwMDdiZTc5YTg3NDFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KiBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1Yklu
Zm86OmVuc3VyZVJlZmVyZW5jZQogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSkKIHsKICAgICBpZiAoIWhvbGRlclJlZikK
LSAgICAgICAgaG9sZGVyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBob2xkZXJSZWYgPSBt
YWtlVW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJsb2NrLCBzdHVi
SW5mbyk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fY29kZUJsb2Nr
ID09IGNvZGVCbG9jayk7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fc3R1YkluZm8gPT0g
c3R1YkluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNzIyMmQ0ODJhZDFlNWUyODZjZWY1OWQ0ZmYxZTFmNWVi
MDcxMDc4ZC4uNDkxOTVkMTU3MjFkMmNkYTRmNzQ4YWU4ZGJlMmFmMDA5YTI4YTdhMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVT
dHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvbHltb3Jw
aGljQWNjZXNzPigpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNj
ZXNzPiBhY2Nlc3MgPSBtYWtlVW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBh
Y2Nlc3NDYXNlczsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggZTAwNmQxNmI5YjhhMGZjMzBm
MDQzM2NkZTYwMmVjYzNiMTY4ZDQyZS4uMmM5YTBiMzAxZWIwOThlMTE1ZWYxZTM2YjEyN2JlMjll
M2FiZGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzJiBVbmxpbmtlZENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coQ29kZUJsb2Nr
KiBjb2QKICAgICAgICAgaWYgKCFtX2xpdmVuZXNzKSB7CiAgICAgICAgICAgICAvLyBUaGVyZSBp
cyBhIGNoYW5jZSB0d28gY29tcGlsZXIgdGhyZWFkcyByYWNlZCB0byB0aGUgc2xvdyBwYXRoLgog
ICAgICAgICAgICAgLy8gR3JhYmJpbmcgdGhlIGxvY2sgYWJvdmUgZGVmZW5kcyBhZ2FpbnN0IGNv
bXB1dGluZyBsaXZlbmVzcyB0d2ljZS4KLSAgICAgICAgICAgIG1fbGl2ZW5lc3MgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKKyAgICAgICAg
ICAgIG1fbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29k
ZUJsb2NrKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNDM3MDk1MTllYjYxNmUy
NjUxMDZlZjFkNTUyOTYxN2Q2NDVjOWJjOS4uNTEyNTM2YzBkNDQ4NTdhNGNhNzZlODEzZmUxNDgw
M2E5NzNmZmE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKQEAgLTQwMiw3ICs0MDIsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7
CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKCpoZWFwKCksIGNl
bGxMb2NrKCkpOwotICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFy
ZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4o
KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggZmJl
YzlmNzJjYTJmZDFhMThiYWNiMDczZTY4NzI1NGI3MGI5ZWJlMS4uNDlkOWQyZmQzZTZmZTlmYjRi
NTI3ZjY3N2FiZDViZDRhNTEyMjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2Fj
aGVkQ29kZUJsb2NrcyhWTSYgdm0pCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURh
dGEmIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQogewog
ICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7
CiAgICAgcmV0dXJuICptX3JhcmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTk3Njg2YWEz
ZWRjZGQ4ZDNmOWI1N2M0YTZkMTIzYmFjOWNiMzk4Ny4uMTc4YTYxZGY2OTEzM2FmZGNjMTI3Mjhj
YmZkOTZlYjM5ZjQyYWViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDAxLDcgKzQwMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogCiAgICAgICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRv
cj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmly
b25tZW50KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVl
PEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5l
cmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRl
Y29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IGJjZDcyZWEwOWY1ZjcxN2E2NWY2NWQ3ZDJl
ZmMxNzVlMDIzZTY5OTAuLmViYWJiNTlkNDM1OWE5ZTM2NGYyY2EzYWY2YWZkMGVmZDAzOTBiMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00NCw2ICs0
NCw3IEBAIGNsYXNzIFZNOwogdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwogCiBjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgRGVidWdnZXIoVk0mKTsKICAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IGYyMGEzNTdlY2I3M2FhN2VmZTRjYjEwN2QxY2NiN2U5ZGM5
MDAzMzkuLjI3NjU2OTI2YThkMjlkMjdlYmVlYWE5ZmZkY2EyMDNjYzI1ZmEwZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKQEAgLTU4LDcgKzU4LDcgQEAgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OkFic3RyYWN0SW50ZXJwcmV0ZXIoR3JhcGgmIGdyYXBoLCBBYnN0cmEKICAg
ICAsIG1fc3RhdGUoc3RhdGUpCiB7CiAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAg
ICAgICAgbV9waGlDaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3Jh
cGgpOworICAgICAgICBtX3BoaUNoaWxkcmVuID0gbWFrZVVuaXF1ZTxQaGlDaGlsZHJlbj4obV9n
cmFwaCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA1YjBjODdmZmVlNTJiMmE5ZTUwMTFl
NWJmOGM3MWMwMTI5NDJlZmQwLi5lNjgzYTgyMWIyMmJjZmU1NmIzOWVmNDFhMTFmMWMyZGRiZDY2
MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9wbGFuKHBsYW4p
CiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKCkpCiAgICAgLCBtX3Byb2ZpbGVk
QmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX3NzYUNGRyhzdGQ6Om1h
a2VfdW5pcXVlPFNTQUNGRz4oKnRoaXMpKQorICAgICwgbV9zc2FDRkcobWFrZVVuaXF1ZTxTU0FD
Rkc+KCp0aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2lu
dFN0YXRlKEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0
ZShIYXZlTm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtODYsOCArODYsOCBAQCBHcmFwaDo6R3Jh
cGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgIAogICAgIG1faGFzRGVidWdnZXJFbmFibGVkID0g
bV9wcm9maWxlZEJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgT3B0
aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwogICAgIAotICAgIG1faW5k
ZXhpbmdDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7Ci0gICAg
bV9hYnN0cmFjdFZhbHVlc0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93TWFwPEFic3RyYWN0
VmFsdWU+PigqdGhpcyk7CisgICAgbV9pbmRleGluZ0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93SW5k
ZXhpbmc+KCp0aGlzKTsKKyAgICBtX2Fic3RyYWN0VmFsdWVzQ2FjaGUgPSBtYWtlVW5pcXVlPEZs
b3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0aGlzKTsKIAogICAgIHJlZ2lzdGVyU3RydWN0dXJlKHZt
LnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSk7CiAgICAgdGhpcy0+c3RyaW5nU3RydWN0dXJlID0g
cmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKQEAgLTEwOTcsNyAr
MTA5Nyw3IEBAIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBHcmFwaDo6bGl2ZW5lc3NGb3IoQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUxpdmVuZXNzLmVuZCgp
KQogICAgICAgICByZXR1cm4gKml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxC
eXRlY29kZUxpdmVuZXNzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZl
bmVzcz4gbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVuZXNzPigpOwogICAg
IGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVGdWxsTGl2ZW5lc3MoY29kZUJs
b2NrLCAqbGl2ZW5lc3MpOwogICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQgPSAqbGl2
ZW5lc3M7CiAgICAgbV9ieXRlY29kZUxpdmVuZXNzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUobGl2
ZW5lc3MpKTsKQEAgLTExMTUsNyArMTExNSw3IEBAIEJ5dGVjb2RlS2lsbHMmIEdyYXBoOjpraWxs
c0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlS2ls
bHMuZW5kKCkpCiAgICAgICAgIHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29k
ZUtpbGxzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBraWxscyA9IG1h
a2VVbmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlz
aXMoKS5jb21wdXRlS2lsbHMoY29kZUJsb2NrLCAqa2lsbHMpOwogICAgIEJ5dGVjb2RlS2lsbHMm
IHJlc3VsdCA9ICpraWxsczsKICAgICBtX2J5dGVjb2RlS2lsbHMuYWRkKGNvZGVCbG9jaywgV1RG
TW92ZShraWxscykpOwpAQCAtMTU1Myw3ICsxNTUzLDcgQEAgQ1BTQ0ZHJiBHcmFwaDo6ZW5zdXJl
Q1BTQ0ZHKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5T
U0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fY3BzQ0ZHKQotICAgICAgICBtX2Nwc0NGRyA9IHN0
ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fY3BzQ0ZHID0gbWFrZVVu
aXF1ZTxDUFNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzQ0ZHOwogfQogCkBAIC0xNTYx
LDcgKzE1NjEsNyBAQCBDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVy
c2lvbik7CiAgICAgaWYgKCFtX2Nwc0RvbWluYXRvcnMpCi0gICAgICAgIG1fY3BzRG9taW5hdG9y
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2Nw
c0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1
cm4gKm1fY3BzRG9taW5hdG9yczsKIH0KIApAQCAtMTU2OSw3ICsxNTY5LDcgQEAgU1NBRG9taW5h
dG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX3NzYURv
bWluYXRvcnMpCi0gICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NB
RG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBtYWtlVW5pcXVl
PFNTQURvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0K
IApAQCAtMTU3OCw3ICsxNTc4LDcgQEAgQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BT
TmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lz
SW5TU0FDb252ZXJzaW9uKTsKICAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFt
X2Nwc05hdHVyYWxMb29wcykKLSAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX2Nwc05hdHVyYWxMb29w
cyA9IG1ha2VVbmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nw
c05hdHVyYWxMb29wczsKIH0KIApAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgU1NBTmF0dXJhbExvb3Bz
JiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zv
cm0gPT0gU1NBKTsKICAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFtX3NzYU5h
dHVyYWxMb29wcykKLSAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG1h
a2VVbmlxdWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3NzYU5hdHVy
YWxMb29wczsKIH0KIApAQCAtMTU5Niw3ICsxNTk2LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6
ZW5zdXJlQmFja3dhcmRzQ0ZHKCkKICAgICAvLyBXZSBjb3VsZCBlYXNpbHkgcmVsYXggdGhpcyBp
biB0aGUgZnV0dXJlIHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0b2RheSwgaXQncyBvbmx5IHVzZWQg
aW4gU1NBLgogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAKICAgICBpZiAoIW1f
YmFja3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFja3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1
ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQog
CkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJl
QmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNT
QSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRz
RG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMp
OworICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0Rv
bWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0K
IApAQCAtMTYxMiw3ICsxNjEyLDcgQEAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBo
OjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lz
KQotICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOworICAgICAgICBtX2NvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzID0gbWFrZVVuaXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA2
MzkwNDNlOWUyN2ZiZTBlMGI5MmFiNDZhNjY5YmUxNDEwNTAzMzcwLi5mMmI2NjQwMmUzYWQwZTcy
ZGZjZTA1YjY1YWYzZmM5MjZkMDA5ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCBKSVRDb21waWxlcjo6SklUQ29t
cGlsZXIoR3JhcGgmIGRmZykKICAgICAsIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKGRmZy5t
X3ZtKQogewogICAgIGlmIChVTkxJS0VMWShzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBtX2dy
YXBoLm1fdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyKSkKLSAgICAgICAgbV9kaXNhc3NlbWJsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKKyAgICAgICAgbV9kaXNhc3Nl
bWJsZXIgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKICNpZiBFTkFCTEUoRlRMX0pJ
VCkKICAgICBtX2ppdENvZGUtPnRpZXJVcEluTG9vcEhpZXJhcmNoeSA9IFdURk1vdmUobV9ncmFw
aC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkpOwogICAgIGZvciAodW5zaWduZWQgdGll
clVwQnl0ZWNvZGUgOiBtX2dyYXBoLm1fcGxhbi50aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2Rlcygp
KQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIu
ZGlkQnVpbGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdp
bk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOworICAgICAgICBtX2NvZGVCbG9jay0+
c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92
ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsKIH0KIAogc3RhdGlj
IHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDb21waWxlciYgaml0LCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmIHN0YWNrT3ZlcmZsb3cpCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZSgpCiAKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBp
bGVFbnRyeSgpOwotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0
aXZlSklUPigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRp
dmVKSVQ+KCp0aGlzKTsKIAogICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNw
YWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFjay4KICAgICBKdW1wTGlzdCBzdGFja092ZXJm
bG93OwpAQCAtNDAyLDkgKzQwMiw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAg
IG1fc3BlY3VsYXRpdmUtPmNyZWF0ZU9TUkVudHJpZXMoKTsKICAgICBzZXRFbmRPZkNvZGUoKTsK
IAotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oKnRo
aXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIGF1dG8gbGlua0J1
ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21w
aWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgp
KSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVl
PEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKKyAgICAgICAgbV9ncmFwaC5tX3Bs
YW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxh
bikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNDE2LDcgKzQxNiw3IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIp
OwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklU
RmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxK
SVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlcikpKTsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBA
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgY29tcGlsZUVudHJ5RXhl
Y3V0aW9uRmxhZygpOwogCiAgICAgLy8gPT09IEZ1bmN0aW9uIGJvZHkgY29kZSBnZW5lcmF0aW9u
ID09PQotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklU
PigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+
KCp0aGlzKTsKICAgICBjb21waWxlQm9keSgpOwogICAgIHNldEVuZE9mTWFpblBhdGgoKTsKIApA
QCAtNTA3LDkgKzUwNyw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAg
ICAgc2V0RW5kT2ZDb2RlKCk7CiAKICAgICAvLyA9PT0gTGluayA9PT0KLSAgICBhdXRvIGxpbmtC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywg
SklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVl
PExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsK
ICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dy
YXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+
KG1fZ3JhcGgubV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplciht
YWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBsaW5rKCpsaW5rQnVmZmVyKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRp
b25PZjxKU0VudHJ5UHRyVGFnPihhcml0eUNoZWNrKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNl
dEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZm
ZXIpLCB3aXRoQXJpdHlDaGVjaykpOwogfQogCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCogSklU
Q29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGUqIG5vZGUpCiAgICAgICAgIHJl
dHVybiBpdC0+c2Vjb25kOwogCiAgICAgaWYgKCFtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzKQot
ICAgICAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxCYWc8
ZG91YmxlPj4oKTsKKyAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IG1ha2VVbmlx
dWU8QmFnPGRvdWJsZT4+KCk7CiAKICAgICBkb3VibGUqIGFkZHJlc3NJbkNvbnN0YW50UG9vbCA9
IG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMtPmFkZCgpOwogICAgICphZGRyZXNzSW5Db25zdGFu
dFBvb2wgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAppbmRleCBiYjgwMDI3NGRkY2I2MzAzNDc4MzczN2Uz
OGFkMWU2MWU5YzVlYTA0Li5hOTQ0MDQ3NDU5MjUyMTg0NWJhMzE4ODM3YjEzYjlmNGEzMTdlZjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlz
aXNQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIExpdmVuZXNzQW5hbHlzaXNQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICwgbV9saXZlQXRUYWlsKG1fZ3JhcGgpCiAg
ICAgewogICAgICAgICBtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+cmVjb21wdXRlKCk7Ci0gICAg
ICAgIG1fd29ya3NldCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya3NldD4obV9ncmFwaC5tX2luZGV4
aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CisgICAgICAgIG1fd29ya3NldCA9IG1ha2VVbmlxdWU8
V29ya3NldD4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CiAgICAgfQog
CiAgICAgYm9vbCBydW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXgg
MzRhY2JjMWZlMjJmYjc3ZjM1ODBkYTM2Nzk5YzgyMTRiZWJjOWQ2Mi4uYjY5NDlhYTAzNWMxMmZh
NzQ5ZDU4MGNjN2MyYWVjY2E4ZDkyYzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNv
bXBpbGVJblRocmVhZEltcGwoKQogICAgIGlmIChtX21vZGUgPT0gRlRMRm9yT1NSRW50cnlNb2Rl
KSB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGVyZm9ybU9TUkVudHJ5cG9pbnRDcmVhdGlvbihk
ZmcpOwogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9m
aW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAg
ICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIFJVTl9QSEFTRShwZXJmb3Jt
Q1BTUmV0aHJlYWRpbmcpOwpAQCAtMzk4LDcgKzM5OCw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0
aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBjYXNlIEZUTEZvck9TUkVudHJ5TW9k
ZTogewogI2lmIEVOQUJMRShGVExfSklUKQogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxlKGRm
ZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0
ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2Zp
bmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAg
ICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NzgsNyArNDc4LDcg
QEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAg
ICAgICBSVU5fUEhBU0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6OkNhbm5vdENvbXBpbGUpIHsK
LSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6
ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWlsZWRG
aW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHAKaW5kZXggODcxNTk1YjFmZjI1OWJlZTQ0YzcxY2UwM2Q3ZDhlOGJkNjQzNjUzNy4u
NTM0ZDY0YjUzOGZhMTgwYWY0OGU4OWQ0ZjgyNjAyZmI0NWM5MjFjZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApAQCAtNDQ4
LDcgKzQ0OCw3IEBAIGNsYXNzIFNTQUNvbnZlcnNpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRUYWlsLmNsZWFyKCk7CiAgICAgICAgICAgICBi
bG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRI
ZWFkLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CisgICAgICAgICAgICBibG9jay0+c3NhID0gbWFr
ZVVuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KIAogICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBlbnRyeXBvaW50SW5kZXhUb0FyZ3VtZW50c0Jsb2NrKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5k
ZXggN2NmNDI1MjFhNjIxMTc4ZmY4NTEyYWZmOWZmZmEzMjUyMDAyMjRkNi4uY2RjZGFhNjBkODk4
YTNiNjZkN2IyOThmNjY4MThjNzlkYzQ4Yzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTkzLDcgKzE5Myw3IEBAIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJl
cXVpcmVtZW50LAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRz
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNT
bG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1
bWVudHMuLi4+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRz
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJn
dW1lbnRzLi4uPj4oCiAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVx
dWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBEZXN0aW5hdGlvblR5cGUsIHR5
cGVuYW1lIFNvdXJjZVR5cGUsIHVuc2lnCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgU291cmNlVHlwZSBzb3VyY2VbbnVtYmVyT2ZBc3NpZ25tZW50c10sIERlc3RpbmF0
aW9uVHlwZSBkZXN0aW5hdGlvbltudW1iZXJPZkFzc2lnbm1lbnRzXSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVz
dGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3Rp
bmF0aW9uVHlwZSwgU291cmNlVHlwZSwgbnVtYmVyT2ZBc3NpZ25tZW50cz4+KAogICAgICAgICBm
cm9tLCBqaXQsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCkBAIC0yNDksNyArMjQ5LDcgQEAg
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAog
ewogICAgIFNvdXJjZVR5cGUgc291cmNlQXJyYXlbMV0gPSB7IHNvdXJjZSB9OwogICAgIERlc3Rp
bmF0aW9uVHlwZSBkZXN0aW5hdGlvbkFycmF5WzFdID0geyBkZXN0aW5hdGlvbiB9OwotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDE+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBT
b3VyY2VUeXBlLCAxPj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291
cmNlQXJyYXkpOwogfQogCkBAIC0yNTksNyArMjU5LDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJjZVR5cGUgc291
cmNlQXJyYXlbMl0gPSB7IHNvdXJjZTEsIHNvdXJjZTIgfTsKICAgICBEZXN0aW5hdGlvblR5cGUg
ZGVzdGluYXRpb25BcnJheVsyXSA9IHsgZGVzdGluYXRpb24xLCBkZXN0aW5hdGlvbjIgfTsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1w
VHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAyPj4oCisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlw
ZSwgU291cmNlVHlwZSwgMj4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXks
IHNvdXJjZUFycmF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCAyMDdhOWI2OWI0ODg1NWI1NmIxZjgzNzIwNjUxYzJiYzc2
ZTM4ZjllLi43MGU3MDVkNzg0OTMyZDlkM2ZjMjcyNDkxMzJlZmQzZTNlNWQ2NTI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChH
UFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiAgICAgLy8gSSB3YW50IGEgc2xv
dyBwYXRoIHRoYXQgYWxzbyBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQn
cwogICAgIC8vIHdoYXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5l
cmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBsb3QKICAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21h
bGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCisg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93
UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3UmF3
T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwgdmVjdG9y
TGVuZ3RoKSk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJh
eWlmeShOb2RlKiBub2RlLCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAg
ICAgICBzbG93UGF0aC5hcHBlbmQoanVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BS
LCBub2RlLT5hcnJheU1vZGUoKSkpOwogICAgIH0KICAgICAKLSAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzdGQ6Om1ha2VfdW5pcXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4o
CiAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdGVt
cEdQUiwgc3RydWN0dXJlR1BSKSk7CiAgICAgCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7
CkBAIC0yMjQyLDEwICsyMjQyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb3RvdHlw
ZUNoYWluSXNTYW5lKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhH
ZW5lcmF0b3I+KAorICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxT
YW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0
T2ZCb3VuZHMsIHRoaXMsIEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZykpOwogI2Vsc2UKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93
UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIEpTVmFs
dWVSZWdzKHJlc3VsdFRhZ1JlZywgc2NyYXRjaFJlZyksCiAgICAgICAgICAgICAgICAgYmFzZVJl
ZywgcHJvcGVydHlSZWcpKTsKICNlbmRpZgpAQCAtNzYxOSw3ICs3NjE5LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVu
dHMsIHJlc3VsdEdQUiwgc3RydWN0dXJlLAogICAgICAgICAgICAgICAgIGtub3duTGVuZ3RoLCBt
aW5DYXBhY2l0eSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I+
KAorICAgICAgICBhdXRvIGdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Q2FsbENyZWF0ZURpcmVjdEFy
Z3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBy
ZXN1bHRHUFIsIHN0cnVjdHVyZSwgbGVuZ3RoR1BSLCBtaW5DYXBhY2l0eSk7CiAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoZ2VuZXJhdG9yKSk7CiAgICAgfQpAQCAtODQzOSw3
ICs4NDM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhH
ZW5lcmF0b3I+KAorICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxB
cnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2Vu
ZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlX
aXRoU2l6ZSwgcmVzdWx0R1BSLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIp
KTsKICAgICB9CiAKQEAgLTkxMzUsNyArOTEzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRTdHJ1Y3R1cmVDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgY2VsbEdQUiwgR1BSUmVnIHRlbXBH
CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFI7CiAgICAgICAgIAogICAgICAgICBpZiAodGVt
cEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBt
YWtlVW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIg
PSBzdHJ1Y3R1cmUtPmdwcigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN0cnVjdHVy
ZUdQUiA9IHRlbXBHUFI7CkBAIC0xMzE3Niw3ICsxMzE3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjCiAKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCi0gICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRo
VmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2Vu
ZXJhdG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplLCByZXN1bHRHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwKICAgICAgICAgc2hvdWxkQ29udmVy
dExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlID8gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVjdHVyZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKaW5kZXggZmEzOTZmNGYxOTJhOGJiNGFlZjk5ZDAzNzE5MjRhMmEzOGM2NDVlOC4uYmE2
MTI4ZWZlOWJiMzY4ZmUzYjA2NjIzYjUxZWUzZWVhZDNjNGZkMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKQEAgLTk1LDggKzk1LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIFBoYXNlTW9kZTo6R2xvYmFsOiB7CiAgICAg
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNT
QSk7CiAKLSAgICAgICAgICAgIG1fc3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluUGxhY2VBYnN0
cmFjdFN0YXRlPihtX2dyYXBoKTsKLSAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFic3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dy
YXBoLCAqbV9zdGF0ZSk7CisgICAgICAgICAgICBtX3N0YXRlID0gbWFrZVVuaXF1ZTxJblBsYWNl
QWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7CisgICAgICAgICAgICBtX2ludGVycHJldGVyID0gbWFr
ZVVuaXF1ZTxBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFw
aCwgKm1fc3RhdGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2lzQ29udmVyZ2VkID0g
ZmFsc2U7CiAgICAgICAgICAgICAKQEAgLTEwNyw4ICsxMDcsOCBAQCBjbGFzcyBTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyB0b3dhcmRz
IGJlbGlldmluZyB0aGF0IGFsbCBub2RlcyBuZWVkIGJhcnJpZXJzLiAiTmVlZGluZyBhIGJhcnJp
ZXIiIGlzIGxpa2UKICAgICAgICAgICAgIC8vIHNheWluZyB0aGF0IHRoZSBub2RlIGlzIGluIGEg
cGFzdCBlcG9jaC4gIk5vdCBuZWVkaW5nIGEgYmFycmllciIgaXMgbGlrZSBzYXlpbmcKICAgICAg
ICAgICAgIC8vIHRoYXQgdGhlIG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgZXBvY2guCi0gICAgICAg
ICAgICBtX3N0YXRlQXRIZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5v
ZGUqPj4+KG1fZ3JhcGgpOwotICAgICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9IHN0ZDo6bWFrZV91
bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1f
c3RhdGVBdEhlYWQgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFw
aCk7CisgICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxIYXNo
U2V0PE5vZGUqPj4+KG1fZ3JhcGgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCbG9ja0xp
c3QgcG9zdE9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblBvc3RPcmRlcigpOwogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IGU2YzIyMjFl
ZTMwMTU0NGM3MmE5Y2U4MzVmOTgwZmYzNmYwMjRiN2QuLjhmOTMwMzRiMGM2ZjkwYmE2NmY0YmY1
YzUzYmUxYjRmMGZiYTc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xp
c3QuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgV29ya2xpc3Q6OlRocmVhZEJvZHkgOiBw
dWJsaWMgQXV0b21hdGljVGhyZWFkIHsKICAgICAgICAgaWYgKG1fcmVsYXRpdmVQcmlvcml0eSkK
ICAgICAgICAgICAgIFRocmVhZDo6Y3VycmVudCgpLmNoYW5nZVByaW9yaXR5KG1fcmVsYXRpdmVQ
cmlvcml0eSk7CiAgICAgICAgIAotICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7CisgICAgICAgIG1fY29tcGlsYXRpb25TY29w
ZSA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb25TY29wZT4oKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKQEAgLTIx
NCw3ICsyMTQsNyBAQCB2b2lkIFdvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1bnNpZ25lZCBudW1i
ZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5KQogCiB2b2lkIFdvcmtsaXN0OjpjcmVh
dGVOZXdUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgaW50IHJlbGF0aXZlUHJp
b3JpdHkpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRocmVhZERhdGE+KHRoaXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRE
YXRhPiBkYXRhID0gbWFrZVVuaXF1ZTxUaHJlYWREYXRhPih0aGlzKTsKICAgICBkYXRhLT5tX3Ro
cmVhZCA9IGFkb3B0UmVmKG5ldyBUaHJlYWRCb2R5KGxvY2tlciwgKnRoaXMsICpkYXRhLCBtX2xv
Y2ssIG1fcGxhbkVucXVldWVkLmNvcHlSZWYoKSwgcmVsYXRpdmVQcmlvcml0eSkpOwogICAgIG1f
dGhyZWFkcy5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggMTliMTE1YzlmZGQ2
N2NiYzhhZTEwOWM2NDQ1NzQyOGJhM2FkZmE1My4uMDBiZGE2NTcyNzljZjdhOTlkYmFiMTQ5YjA5
YzcwM2Q2OGIzNWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2Vt
Ymxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIEFzeW5jaHJvbm91c0Rp
c2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHZvaWQgZGlzYXNzZW1ibGVB
c3luY2hyb25vdXNseSgKICAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVSZWYsIHNpemVfdCBzaXplLCBj
b25zdCBjaGFyKiBwcmVmaXgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFz
az4gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmx5
VGFzaz4oKTsKICAgICB0YXNrLT5oZWFkZXIgPSBzdHJkdXAoaGVhZGVyLmRhdGEoKSk7IC8vIFl1
Y2shIFdlIG5lZWQgdGhpcyBiZWNhdXNlIENTdHJpbmcgZG9lcyByYWN5IHJlZmNvdW50aW5nLgog
ICAgIHRhc2stPmNvZGVSZWYgPSBjb2RlUmVmOwogICAgIHRhc2stPnNpemUgPSBzaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDkwYWUy
ZjRmZTA2YTE1MmNhZTU3ODVlMmMwM2M5OTliNjgzMmJjMWIuLmVjODBlYTY3YjI1NmY4OTE4ZDQ4
ODNhOGM1MmI4ZjM3OTU4M2FiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcC5jcHAKQEAgLTE1NywxMSArMTU3LDExIEBAIGNvbnN0IEFic3RyYWN0SGVh
cCYgSW5kZXhlZEFic3RyYWN0SGVhcDo6YXRTbG93KHB0cmRpZmZfdCBpbmRleCkKICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPj0gbV9zbWFsbEluZGljZXMuc2l6ZSgpKTsK
ICAgICAKICAgICBpZiAoVU5MSUtFTFkoIW1fbGFyZ2VJbmRpY2VzKSkKLSAgICAgICAgbV9sYXJn
ZUluZGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcFR5cGU+KCk7CisgICAgICAgIG1fbGFyZ2VJ
bmRpY2VzID0gbWFrZVVuaXF1ZTxNYXBUeXBlPigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFi
c3RyYWN0SGVhcD4mIGZpZWxkID0gbV9sYXJnZUluZGljZXMtPmFkZChpbmRleCwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZmllbGQpIHsKLSAgICAgICAgZmllbGQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFic3RyYWN0SGVhcD4oKTsKKyAgICAgICAgZmllbGQgPSBtYWtlVW5pcXVl
PEFic3RyYWN0SGVhcD4oKTsKICAgICAgICAgaW5pdGlhbGl6ZSgqZmllbGQsIGluZGV4KTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDVkMDRi
NzJmMDQ4MzFkMDYzMDIzMDRkMWViN2U0OTI5ZDQ4MDQyN2YuLjQ2MzVjYzk2ZjkxMDkxZjczZjA4
ZDFmNzUyYjA0N2QxMDUzYmZiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZl
cG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07
CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCi0gICAgICAgIHN0YXRlLnByb2Mt
PmNvZGUoKS5zZXREaXNhc3NlbWJsZXIoc3RkOjptYWtlX3VuaXF1ZTxCMzo6QWlyOjpEaXNhc3Nl
bWJsZXI+KCkpOworICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKG1h
a2VVbmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAogICAgIHsKICAgICAgICAgR3Jh
cGhTYWZlcG9pbnQgc2FmZXBvaW50KHN0YXRlLmdyYXBoLCBzYWZlcG9pbnRSZXN1bHQpOwpAQCAt
NzgsNyArNzgsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3Vs
dCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rlck9mZnNldHMgPQotICAgICAgICBz
dGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5jYWxsZWVT
YXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CisgICAgICAgIG1ha2VVbmlxdWU8UmVnaXN0ZXJB
dE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgp
KTsKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2coIlVu
d2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVFR5cGU6
OkZUTEpJVCksICI6ICIsICpyZWdpc3Rlck9mZnNldHMsICJcbiIpOwogICAgIGNvZGVCbG9jay0+
c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhXVEZNb3ZlKHJlZ2lzdGVyT2Zmc2V0cykpOwpAQCAtMTQy
LDcgKzE0Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0
JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIH0pOwogCi0gICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5G
YWlsKTsKKyAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBtYWtlVW5pcXVl
PExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCiAg
ICAgaWYgKHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2Nh
dGUoKSkgewogICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKQEAgLTE1MSw3
ICsxNTEsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYg
c2FmZXBvaW50UmVzdWx0KQogICAgIAogICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9
IHN0YXRlLnByb2MtPnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7CiAgICAgaWYgKHZtLnNob3VsZEJ1
aWxkZXJQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKSkKLSAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1Rv
Q29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6
ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9y
aWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxp
bmtCdWZmZXIpKTsKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IGxhYmVs
ID0gc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50cnlQ
dHJUYWc+KHN0YXRlLnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSk7CiAgICAgc3RhdGUuZ2VuZXJh
dGVkRnVuY3Rpb24gPSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMRmFpbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCmlu
ZGV4IDE2NTMzNTA5Y2QwYjQ4MmM3NGJjYTY3MzE4NzYzZjJlMGYwOWRkZjEuLmMzZjkzMzkyZjI2
ZTZmYzk1ZjljMmNjNTkyOWVkMzRjNmJjMzBjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExGYWlsLmNwcApAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogCiB2b2lk
IGZhaWwoU3RhdGUmIHN0YXRlKQogewotICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6
ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikp
OworICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRG
aW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAwODU0MDU2ZWM3
ZDE2MmIxMWNkYzIxY2Q3OGZlMTUxN2Y3YWNmM2ViLi45NWRiNjk2MWU4ZTkwNzcwY2Q2ZTU1Njcz
MDIyYjQ0NzYzYjU4MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAg
LTE2Niw3ICsxNjYsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0
LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQo
aml0Lmp1bXAoKSk7CiAKLSAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAg
ICAgICAgICAgbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxv
Y2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICBpZiAobGlua0J1ZmZlci0+
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25G
YWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNz
KCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgp
OwogICAgICAgICAKLSAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1
ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgIGxp
bmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21w
aWxhdGlvbkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2Nh
dGUoKSkgewogICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKaW5kZXggYWYxYmE0YmY5MGE4ZmQwYmEyNTAyYzY0N2UyYzE3MTQxMjJkZTdkNC4u
MDliMzQyNzNjYmI3Y2FiNDRjZDg2M2U5OWIyODU5MGU4N2M5NGIxMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTUwODAsNyArMTUwODAs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoZ2VuZXJhdG9ySnVtcCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2bS0+Z2V0Q1RJ
U3R1YihsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gc3RkOjpt
YWtlX3VuaXF1ZTxMYXp5U2xvd1BhdGg+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IG1ha2VVbmlx
dWU8TGF6eVNsb3dQYXRoPigpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gbGlua2VkUGF0Y2hhYmxlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4obGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZUp1bXAp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCA2NTNlYzZmNjk2
MDQ5Yjc1MmFjMjRhNzc5MzEwZDRhZDk3YmIwM2RiLi40YTQ4NGZhNmQ0NjQzMGQ3MWU1NzAwOGJm
MWU5OWY2YzI1Yjg0ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApA
QCAtNjAsMTAgKzYwLDEwIEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3Vu
aXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOworICAgIGdyYXBoLm1fcGxhbi5zZXRG
aW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOwogICAgIGZp
bmFsaXplciA9IHN0YXRpY19jYXN0PEpJVEZpbmFsaXplcio+KGdyYXBoLm1fcGxhbi5maW5hbGl6
ZXIoKSk7CiAKLSAgICBwcm9jID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZWR1cmU+KCk7CisgICAg
cHJvYyA9IG1ha2VVbmlxdWU8UHJvY2VkdXJlPigpOwogCiAgICAgcHJvYy0+c2V0T3JpZ2luUHJp
bnRlcigKICAgICAgICAgW10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2luKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCmlu
ZGV4IDIyZDdmZDY1ZDVhMTc1NWI1YjJkM2I3OGRkYTU1YzBkMDA3ZTFjY2IuLjAyMWIwY2RiOWRm
YWMxOGIzNjg2NDI4YTk4MjNmMjgxMTBiYjc5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEFsbG9jYXRv
ciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgICAg
ICBkYXRhTG9nKCJDcmVhdGluZyBCbG9ja0RpcmVjdG9yeS9Mb2NhbEFsbG9jYXRvciBmb3IgIiwg
bV9uYW1lLCAiLCAiLCBhdHRyaWJ1dGVzKCksICIsICIsIHNpemVDbGFzcywgIi5cbiIpOwogICAg
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVlRGlyZWN0b3J5ID0K
LSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCks
IHNpemVDbGFzcyk7CisgICAgICAgIG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2Uu
aGVhcCgpLCBzaXplQ2xhc3MpOwogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSB1bmlx
dWVEaXJlY3RvcnkuZ2V0KCk7CiAgICAgbV9kaXJlY3Rvcmllcy5hcHBlbmQoV1RGTW92ZSh1bmlx
dWVEaXJlY3RvcnkpKTsKICAgICAKQEAgLTg4LDcgKzg4LDcgQEAgQWxsb2NhdG9yIENvbXBsZXRl
U3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgbV9zcGFjZS5hZGRC
bG9ja0RpcmVjdG9yeShsb2NrZXIsIGRpcmVjdG9yeSk7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVf
cHRyPExvY2FsQWxsb2NhdG9yPiB1bmlxdWVMb2NhbEFsbG9jYXRvciA9Ci0gICAgICAgIHN0ZDo6
bWFrZV91bmlxdWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CisgICAgICAgIG1ha2VVbmlx
dWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CiAgICAgTG9jYWxBbGxvY2F0b3IqIGxvY2Fs
QWxsb2NhdG9yID0gdW5pcXVlTG9jYWxBbGxvY2F0b3IuZ2V0KCk7CiAgICAgbV9sb2NhbEFsbG9j
YXRvcnMuYXBwZW5kKFdURk1vdmUodW5pcXVlTG9jYWxBbGxvY2F0b3IpKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggYTAxYjVhMmI0YWVmZDNlNTI5Njk3N2E1Yzgz
ODQwNDJlNWEyOTU2YS4uOTcxOTllMTg2ZGU3MmQ3NzI3OTczNWM5ZDNjOTk0MGM4NWM0OGFmNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTI4OSwxNSArMjg5LDE1IEBAIEhl
YXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4RWRlblNpemUo
bV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9tYXhIZWFwU2l6ZShtX21pbkJ5dGVzUGVyQ3lj
bGUpCiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCi0gICAgLCBtX21hY2hpbmVUaHJlYWRzKHN0
ZDo6bWFrZV91bmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCi0gICAgLCBtX2NvbGxlY3RvclNsb3RW
aXNpdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiQyIpKQotICAgICwg
bV9tdXRhdG9yU2xvdFZpc2l0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMs
ICJNIikpCi0gICAgLCBtX211dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3Rh
Y2tBcnJheT4oKSkKLSAgICAsIG1fcmFjZU1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtT
dGFja0FycmF5PigpKQotICAgICwgbV9jb25zdHJhaW50U2V0KHN0ZDo6bWFrZV91bmlxdWU8TWFy
a2luZ0NvbnN0cmFpbnRTZXQ+KCp0aGlzKSkKKyAgICAsIG1fbWFjaGluZVRocmVhZHMobWFrZVVu
aXF1ZTxNYWNoaW5lVGhyZWFkcz4oKSkKKyAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3IobWFr
ZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCisgICAgLCBtX211dGF0b3JTbG90Vmlz
aXRvcihtYWtlVW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKKyAgICAsIG1fbXV0YXRv
ck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9yYWNlTWFy
a1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX2NvbnN0cmFpbnRT
ZXQobWFrZVVuaXF1ZTxNYXJraW5nQ29uc3RyYWludFNldD4oKnRoaXMpKQogICAgICwgbV9oYW5k
bGVTZXQodm0pCi0gICAgLCBtX2NvZGVCbG9ja3Moc3RkOjptYWtlX3VuaXF1ZTxDb2RlQmxvY2tT
ZXQ+KCkpCi0gICAgLCBtX2ppdFN0dWJSb3V0aW5lcyhzdGQ6Om1ha2VfdW5pcXVlPEpJVFN0dWJS
b3V0aW5lU2V0PigpKQorICAgICwgbV9jb2RlQmxvY2tzKG1ha2VVbmlxdWU8Q29kZUJsb2NrU2V0
PigpKQorICAgICwgbV9qaXRTdHViUm91dGluZXMobWFrZVVuaXF1ZTxKSVRTdHViUm91dGluZVNl
dD4oKSkKICAgICAsIG1fdm0odm0pCiAgICAgLy8gV2Ugc2VlZCB3aXRoIDEwbXMgc28gdGhhdCBH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNuJ3QgY29udGludW91c2x5IAogICAg
IC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlvbi4K
QEAgLTMwNSw4ICszMDUsOCBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3Jl
YXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKCpuZXcgSW5jcmVt
ZW50YWxTd2VlcGVyKHRoaXMpKSkKICAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRS
ZWYoKm5ldyBTdG9wSWZOZWNlc3NhcnlUaW1lcih2bSkpKQotICAgICwgbV9zaGFyZWRDb2xsZWN0
b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1f
c2hhcmVkTXV0YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQorICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tB
cnJheT4oKSkKKyAgICAsIG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtT
dGFja0FycmF5PigpKQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkpCiAg
ICAgLCBtX3RocmVhZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fdGhyZWFkQ29u
ZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCkBAIC0zMTQsNyArMzE0
LDcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG1fd29ybGRT
dGF0ZS5zdG9yZSgwKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIG51bWJlck9mUGFyYWxs
ZWxUaHJlYWRzID0gaGVhcEhlbHBlclBvb2woKS5udW1iZXJPZlRocmVhZHMoKTsgaSA8IG51bWJl
ck9mUGFyYWxsZWxUaHJlYWRzOyArK2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RW
aXNpdG9yPiB2aXNpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRv
Q1N0cmluZygiUCIsIGkgKyAxKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRv
cj4gdmlzaXRvciA9IG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAi
LCBpICsgMSkpOwogICAgICAgICBpZiAoT3B0aW9uczo6b3B0aW1pemVQYXJhbGxlbFNsb3RWaXNp
dG9yc0ZvclN0b3BwZWRNdXRhdG9yKCkpCiAgICAgICAgICAgICB2aXNpdG9yLT5vcHRpbWl6ZUZv
clN0b3BwZWRNdXRhdG9yKCk7CiAgICAgICAgIG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRv
cnMuYXBwZW5kKHZpc2l0b3IuZ2V0KCkpOwpAQCAtMzIzLDE3ICszMjMsMTcgQEAgSGVhcDo6SGVh
cChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIAogICAgIGlmIChPcHRpb25zOjp1c2VD
b25jdXJyZW50R0MoKSkgewogICAgICAgICBpZiAoT3B0aW9uczo6dXNlU3RvY2hhc3RpY011dGF0
b3JTY2hlZHVsZXIoKSkKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAg
ICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2No
ZWR1bGVyPigqdGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAg
ICAgICAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxl
cj4oKnRoaXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHNpbXVsYXRlIHR1cm5pbmcg
b2ZmIGNvbmN1cnJlbnQgR0MgYnkgbWFraW5nIHRoZSBzY2hlZHVsZXIgc2F5IHRoYXQgdGhlIHdv
cmxkCiAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgYmUgc3RvcHBlZCB3aGVuIHRoZSBjb2xsZWN0
b3IgaXMgcnVubmluZy4KLSAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5
bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKKyAgICAgICAgbV9zY2hl
ZHVsZXIgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxl
cj4oKTsKICAgICB9CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmlmeUhlYXAoKSkKLSAgICAg
ICAgbV92ZXJpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRp
b25zOjpudW1iZXJPZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24oKSk7CisgICAgICAg
IG1fdmVyaWZpZXIgPSBtYWtlVW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVt
YmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uKCkpOwogICAgIAogICAgIG1fY29s
bGVjdG9yU2xvdFZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11dGF0b3IoKTsKIApAQCAtODk5
LDcgKzg5OSw3IEBAIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmplY3RDb3VudCgpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMo
KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRT
ZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIGZvckVhY2hQcm90
ZWN0ZWRDZWxsKAogICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgewogICAgICAgICAgICAgcmVj
b3JkVHlwZSgqdm0oKSwgKnJlc3VsdCwgY2VsbCk7CkBAIC05MDksNyArOTA5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVDb3VudHMo
KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRT
ZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIEhlYXBJdGVyYXRp
b25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNo
TGl2ZUNlbGwoCiAgICAgICAgIGl0ZXJhdGlvblNjb3BlLApAQCAtMjg1Niw3ICsyODU2LDcgQEAg
dm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICB9LAogICAgICAgICBDb25z
dHJhaW50Vm9sYXRpbGl0eTo6U2VsZG9tR3JleWVkKTsKICAgICAKLSAgICBtX2NvbnN0cmFpbnRT
ZXQtPmFkZChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhp
cykpOworICAgIG1fY29uc3RyYWludFNldC0+YWRkKG1ha2VVbmlxdWU8TWFya1N0YWNrTWVyZ2lu
Z0NvbnN0cmFpbnQ+KCp0aGlzKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWRkTWFya2luZ0NvbnN0cmFp
bnQoc3RkOjp1bmlxdWVfcHRyPE1hcmtpbmdDb25zdHJhaW50PiBjb25zdHJhaW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5kZXggNWI2OWNkNWUzNWY2MmI1MDY2
M2E5Y2JkYzczOTRkMWJkNjdhZDFkOC4uZTFlYjZjNzgzM2Q0ODU4NzFhOWM1MzNjZmQ0NzMxYzc1
ZjliMTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBAIC0y
MTcsNyArMjE3LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFu
ZEdDSWZOZWVkZWQoKQogaW5saW5lIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYgSGVh
cDo6bWFya0xpc3RTZXQoKQogewogICAgIGlmICghbV9tYXJrTGlzdFNldCkKLSAgICAgICAgbV9t
YXJrTGlzdFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZl
cio+PigpOworICAgICAgICBtX21hcmtMaXN0U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PE1hcmtl
ZEFyZ3VtZW50QnVmZmVyKj4+KCk7CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
CmluZGV4IDViOWFjODlkYWJmMDRhMDYxNGRjMTBmYmJhZjE2YzBmNGE0OTlmN2UuLjJkMmJjOGZi
OWIyN2ZlOWY5YjFiNWJlNTRjYjc1MWY4M2UwZDNkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgSGVhcFNuYXBzaG90QnVpbGRlcjo6YnVpbGRTbmFwc2hvdCgpCiAKICAgICBQcmV2ZW50
Q29sbGVjdGlvblNjb3BlIHByZXZlbnRDb2xsZWN0aW9uU2NvcGUobV9wcm9maWxlci52bSgpLmhl
YXApOwogCi0gICAgbV9zbmFwc2hvdCA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFNuYXBzaG90Piht
X3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKKyAgICBtX3NuYXBzaG90ID0gbWFrZVVu
aXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIubW9zdFJlY2VudFNuYXBzaG90KCkpOwogICAg
IHsKICAgICAgICAgbV9wcm9maWxlci5zZXRBY3RpdmVTbmFwc2hvdEJ1aWxkZXIodGhpcyk7CiAg
ICAgICAgIG1fcHJvZmlsZXIudm0oKS5oZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNj
b3BlOjpGdWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5k
ZXggYjhlNDMwMTkxZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOS4uN2MyZWQyNDAyZmQ3
MzAxZmMwOTlhOGRmYjVkM2MzMzZhZWFkMTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvQ2VsbFNldC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgTkVWRVJfSU5MSU5FIEJpdG1hcDxN
YXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6ZV90IGJs
b2MKICAgICBhdXRvJiBiaXRzUHRyUmVmID0gbV9iaXRzW2Jsb2NrSW5kZXhdOwogICAgIGF1dG8q
IGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgIGlmICghYml0cykgewotICAgICAgICBiaXRz
UHRyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxv
Y2s+PigpOworICAgICAgICBiaXRzUHRyUmVmID0gbWFrZVVuaXF1ZTxCaXRtYXA8TWFya2VkQmxv
Y2s6OmF0b21zUGVyQmxvY2s+PigpOwogICAgICAgICBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsK
ICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICAgICAgbV9ibG9ja3NXaXRoQml0
c1tibG9ja0luZGV4XSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5jcHAKaW5kZXggZDUxMDAwZWJhODdmMzFkZTQ4MWJlZDA4YTVmMmZlZDhhNjM5ZmY5OS4u
Y2QzZTdlNTYxNTQ1NjZkY2Y4YzE1MTYzYTE1YjcyZjI3NjhmMjkzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcApAQCAtMzksNyArMzksNyBAQCBJc29TdWJz
cGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUq
IGhlYXBDZWxsVHlwZSwgcwogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2RpcmVjdG9yeSgm
aGVhcCwgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6
ZSkpCiAgICAgLCBtX2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9yeSkKLSAgICAsIG1faXNvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPElzb0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3I+KCkpCisgICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJ
c29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQogewogICAgIGluaXRpYWxpemUoaGVhcENlbGxU
eXBlLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKaW5kZXggYjNh
YmQyYzUyMjRmY2UzZTVjZTEyYzRmMTYzZWQ0ODIzZGFlNjk4ZS4uMTc4MGMwOGE0NzBmMjc2MjMx
NjM3ZWY2ODExN2M5YTRlMzJjMWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1h
cmtpbmdDb25zdHJhaW50U2V0OjpkaWRTdGFydE1hcmtpbmcoKQogCiB2b2lkIE1hcmtpbmdDb25z
dHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgOjpG
dW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJik+IGZ1bmN0aW9uLCBDb25zdHJhaW50Vm9sYXRpbGl0
eSB2b2xhdGlsaXR5LCBDb25zdHJhaW50Q29uY3VycmVuY3kgY29uY3VycmVuY3ksIENvbnN0cmFp
bnRQYXJhbGxlbGlzbSBwYXJhbGxlbGlzbSkKIHsKLSAgICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxT
aW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5hbWUpLCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSwgY29uY3VycmVuY3ksIHBhcmFs
bGVsaXNtKSk7CisgICAgYWRkKG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdU
Rk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiks
IHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOwogfQogCiB2b2lkIE1hcmtp
bmdDb25zdHJhaW50U2V0OjphZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKaW5kZXgg
ODJiZTNiYmI0NGNiNmM1Nzc2YjhlY2Y3ZmEwYzk0MGQ1ZDVhNTgyNS4uNTNhOTFhMjNjMWQ4OTI5
MThlZTQyOTQxYTY1ZjUyNzg2N2Q0MzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNw
cApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6bWVz
c2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzcwogCiAgICAgU3RyaW5n
IG1lc3NhZ2U7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2Fn
ZSk7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYykpOworICAgIG1fY29uc29sZUFn
ZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIGV4ZWMpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OmNv
dW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTkxLDcgKzkxLDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGl0bGUg
PT0gdGl0bGUpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRo
ZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgIFN0cmluZyB3YXJu
aW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJf
cyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7
Ci0gICAgICAgICAgICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwor
ICAgICAgICAgICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VV
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VU
eXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOSw3ICsxMTks
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bAogCiAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51
bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICBTdHJpbmcgd2FybmluZyA9
IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VTdHJpbmcoIlBy
b2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgbV9jb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnN0YXJ0
Q29uc29sZVByb2ZpbGUoKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+
JiYpCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6d2FyblVuaW1wbGVtZW50ZWQo
Y29uc3QgU3RyaW5nJiBtZXRob2QpCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtZXRob2QgKyAi
IGlzIGN1cnJlbnRseSBpZ25vcmVkIGluIEphdmFTY3JpcHQgY29udGV4dCBpbnNwZWN0aW9uLiI7
Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKSk7CisgICAgbV9jb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCBtZXNzYWdlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZGE1MmVmZDEzYzQ5MWNjYWU2
Mzk1ZTA3NGM0NjQ0ZTcwY2MwYTcuLmJkYmQzMWQ2MzEyYjJjMDU2ZDdjNDc4MTVkYzYxNWQxMjI2
ZDkyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qp
Ci0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVk
U2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAg
ICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFn
ZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZXhlY3V0
aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2Vy
dmVyKGdsb2JhbE9iamVjdCkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6
OmNyZWF0ZSgpKQpAQCAtNzEsMTEgKzcxLDExIEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqCiB7
CiAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29s
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQp
OworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdl
bnQ+KGNvbnRleHQpOwogICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50LmdldCgpOwog
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogCi0gICAgbV9jb25z
b2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+
KG1fY29uc29sZUFnZW50KTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPEpTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwogCiAgICAgbV9leGVjdXRp
b25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiB9CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEV4Y2UKICAgICAgICAgICAgIENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIGVycm9yTWVzc2FnZSwgU3RyaW5nKCksIDAsIDApOwogICAgIH0KIAotICAgIG1fY29uc29s
ZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBlcnJvck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIG1fY29uc29sZUFn
ZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiBDb25zb2xlQ2xpZW50KiBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbnNvbGVDbGllbnQoKSBjb25zdApAQCAt
MjgwLDcgKzI4MCw3IEBAIEluc3BlY3RvckFnZW50JiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9y
QWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAg
ICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+
KGNvbnRleHQpOworICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JBZ2VudD4oY29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0
b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9y
QWdlbnQpKTsKICAgICB9CkBAIC0yOTEsNyArMjkxLDcgQEAgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVEZWJ1Z2dlckFnZW50
KCkKIHsKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBhdXRvIGNvbnRleHQg
PSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xl
QWdlbnQpOworICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFs
T2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOwogICAgICAgICBt
X2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgICAgICBtX2NvbnNvbGVD
bGllbnQtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQobV9kZWJ1Z2dlckFnZW50KTsKICAgICAg
ICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwpAQCAtMzI3LDIwICsz
MjcsMjAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxh
enlBZ2VudHMoKQogCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIG1fYWdlbnRz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250
ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSdW50
aW1lQWdlbnQ+KGNvbnRleHQpKTsKIAogICAgIGVuc3VyZURlYnVnZ2VyQWdlbnQoKTsKIAotICAg
IGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFn
ZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Pihjb250ZXh0
KTsKICAgICBtX2NvbnNvbGVDbGllbnQtPnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQo
c2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1v
dmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBoZWFwQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBoZWFw
QWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CiAgICAgaWYg
KG1fY29uc29sZUFnZW50KQogICAgICAgICBtX2NvbnNvbGVBZ2VudC0+c2V0SW5zcGVjdG9ySGVh
cEFnZW50KGhlYXBBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaGVh
cEFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2Jh
bE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzBiNWM5YWFkMThjMDhjZWRk
YzM2OTY2YmYwNDY4NTE0MTc2MjY0My4uNDE3ZTc3NWZiODAyNDljMDQwMzEzN2E4Mjc4MjEzNzMy
N2QzMzJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkluc3BlY3RvciJfcykKICAgICAs
IG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKLSAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDdlZGJjODA2NjBmMzZkNmE4MWFhOTFmYjhmYTNmZGRk
ZWRhZTZmMjYuLjVkMjRjNjllNmJmNDVkNzJmYjBiZGE1M2I0YzQ1NzU5ODYxM2NiY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29u
c3QgaW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDsKIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiQ29uc29sZSJfcykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAtMTQwLDcgKzE0MCw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkg
ewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9j
YWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwi
IiwgbGFiZWwsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fybmlu
ZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBh
ZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
Zywgd2FybmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwog
ICAgIH0KIH0KIApAQCAtMTU5LDE0ICsxNTksMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OmxvZ1RpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwK
ICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBh
biBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcg
d2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlz
dCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7Cisg
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwogICAg
IFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwogICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKLSAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVi
dWcsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7Cisg
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRl
YnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE4NCwxNCArMTg0LDE0IEBAIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVs
LCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6
Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBN
ZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1v
dmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpU
aW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2sp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGlt
ZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9uaWNUaW1lOjpub3co
KSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAz
KSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVi
dWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogCiAgICAgbV90aW1lcy5yZW1vdmUo
aXQpOwogfQpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpj
b3VudChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICAvLyBG
SVhNRTogV2ViIEluc3BlY3RvciBzaG91bGQgaGF2ZSBhIGJldHRlciBVSSBmb3IgY291bnRlcnMs
IGJ1dCBmb3Igbm93IHdlIGp1c3QgbG9nIGFuIHVwZGF0ZWQgY291bnRlciB2YWx1ZS4KIAogICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSk7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25z
b2xlKGV4ZWMsIDEpKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25z
b2xlKGV4ZWMsIDEpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJl
c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMjM2LDcg
KzIzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fY291bnRz
LmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5k
IGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygi
Q291bnRlciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVz
c2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKKyAg
ICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCBlNWYyNDgyYTNjYWEwOGFhODE2NDVmYThjNzljNTI5YmE0MzgwZDBhLi4yNWYx
ZDNlNzI4MWM2YjBmYjgzMzBmZjEzNzg3MzY0M2ViYzYwZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdy
b3VwRm9yQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rp
bwogCiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGVidWdnZXIiX3Mp
Ci0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPERlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihEZWJ1Z2dlckJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGNvbnRleHQuZW52aXJvbm1lbnQuc2NyaXB0RGVi
dWdTZXJ2ZXIoKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggYjUzNWZmNjE5
MmFhY2VmYzc5YjRmNmNkOTNkZjEyMDFhMzcxNDhhYy4uNTgyYzM1ZDM2N2RmZTFlNGY3ZGM0ZTlh
NTY4NGRjYTJhNGUzYjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSW5zcGVjdG9ySGVhcEFnZW50OjpJbnNwZWN0
b3JIZWFwQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJIZWFwIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
SGVhcEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDU2ZmMxYjc5OGRh
MGVlZWVhMDIzMzFlZDUyNTRhOTUwMjEwMDU4NzQuLmNiYWQ4MWQ2OTk0NDBhNzMzYjBhZjA0MTY5
NGE4NmNhOWU2ZThlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KEFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiU2NyaXB0UHJvZmls
ZXIiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlw
dFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8U2NyaXB0UHJvZmlsZXJGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihTY3JpcHRQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52
aXJvbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKaW5kZXggM2FjYTQxMDUx
MGZlNTAwZjA1YmZiYWFjNDY3ZmZkYWNjYjIxYzUyNC4uOTM1MDY4YzdhZTExOTcxMDU0NGMxZjc2
Nzk4MjJkZmI2NmU1NmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6
Okluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFj
a2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJUYXJnZXQiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5p
cXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVGFyZ2V0QmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dERlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlMzI5YTNiNDNjZDYwOTY1
ZDlmNzc4NWE0ODIyMDExYWIzNjZmYTUzLi45YjNmMzc5ZDVlNWE0OTBkYmUzNzVjNzJhYzk5ZmE3
MjBiOWFjY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFn
ZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGUKIAogdm9pZCBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdl
LCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOworICAgIG1fY29uc29sZUFnZW50
LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwg
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
MTQ1ZDA1MTZiOGUzOTY4ODc4ZDkyY2I1OTRhYTU5OWJhZmEzOWQzMi4uM2I3YzNlMjFkMzFjMWMy
ZjViNmQxYmEwYzE2ZjQ4ODgzZTZjZjMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEpT
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRl
eHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoUnVudGltZUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX2dsb2JhbE9iamVjdChjb250ZXh0Lmluc3BlY3RlZEdsb2JhbE9iamVjdCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQu
Y3BwCmluZGV4IDcxMDE2NjhhOTdjODc0NDgxMmY0NjU2ZjE2ZTBiN2RkNTk0ZjFhNjAuLmNjOTY0
MDA1Njc5ZGJmY2Q0ZmUwMjkwNmJjOTNjMjNiMmM4MmVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtMTQ0LDExICsx
NDQsMTEgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIAogICAgIFNvY2tldDo6c2V0dXAoc29j
a2V0KTsKIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U29ja2V0OjpD
b25uZWN0aW9uPigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8U29ja2V0OjpD
b25uZWN0aW9uPigpOwogCiAgICAgY29ubmVjdGlvbi0+cG9sbCA9IFNvY2tldDo6cHJlcGFyZVBv
bGxpbmcoc29ja2V0KTsKICAgICBjb25uZWN0aW9uLT5zb2NrZXQgPSBzb2NrZXQ7Ci0gICAgY29u
bmVjdGlvbi0+cGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29j
a2V0OjpCdWZmZXJTaXplKTsKKyAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBtYWtlVW5pcXVlPE1l
c3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwogICAgIGNvbm5lY3Rpb24tPnBh
cnNlci0+c2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNdKENvbm5lY3Rpb25JRCBpZCwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBpZiAobV9pbnNwZWN0b3JDbGllbnQp
CiAgICAgICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2
ZW50KGlkLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50LmgKaW5kZXggNzBmMmQ3YTQ4MTM0NzBmODEzNzMyYjNiOTc3
YjViNzNhNDE5NjBiNS4uMzIwNDAwZmQ1YjNjZGIyYzRiMTVkYmRjOTMwNDZiYmZkMDBjYWRjOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+IGNyZWF0ZShSZW1vdGVJbnNwZWN0b3JDb25u
ZWN0aW9uQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFtZSk7CiAg
ICAgfQogCiAgICAgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoUmVtb3RlSW5zcGVjdG9y
Q29ubmVjdGlvbkNsaWVudCosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRleCA2NmY5ZmQyZGM0NzBkMjFmNGRlNTdk
ZTgyOGMxNTk0NDU2NzEyM2JiLi5mYTUwNmE2MWU5OWIzOWE4NzQ2ZTBjZTViZTBkNmFiYzBiMGE0
ZTk0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVz
LnB5CkBAIC0xMzgsOCArMTM4LDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvclRlbXBsYXRlczoKICAg
ICBbXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgcmVsZWFzZV07CiAgICAgXyR7dmFyaWFi
bGVOYW1lUHJlZml4fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRl
cm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21haW5O
YW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlcj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRl
RGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8
T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Cisg
ICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywgKl9jb250cm9sbGVyLCBX
VEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0
cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdp
dGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDg4NDJjOWViNjk3NTZjZTYxNDdlYzRj
MmQ5N2JmNzJjN2YzNTIyM2EuLmUwNzJmYWIyMjEyOWNhZjY0YTIyZjY0ZWYzNGUxZTA4YWZhNzI4
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2Fs
bC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAt
NzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3Jr
SGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0
Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0
Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0lu
c3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29y
a0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+Pigi
TmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsK
ICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQKaW5kZXggYTcxNGZiMTMxODMyOTNkMTgzMmZjNTgxZTZjNTMzNzg2ODAyZDU3Mi4uYzBl
MTczMzdmZDRhNzk4ODMwZTg1ZDI5ZTg1ZDhlZDMwMjBjYTc5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTExODksOCArMTE4OSw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVs
ZWFzZV07CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4o
IkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikp
OworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRl
QWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0
YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAg
ICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0
dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggNTNiZDU1M2I3YmE3NGRk
ZDI5ZTI1NTFjYzBiODRmYTQzMDcxNGNhZS4uYWVkMDdiNzVlOGI4ODhkZDU5MzM5MGFmYTIxZDJj
ODkwZGRmYzU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxs
LXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
b3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTA2OCw4ICsx
MDY4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxl
ciByZWxlYXNlXTsKICAgICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAot
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRj
aGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIp
KTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFn
ZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CmluZGV4IDY3OGM2
YWFhODVhY2EzODQyNDhiOTkyOTAzNGNjZjA5NDExOGRlZTcuLjFhZGNiZDNmZDJhY2I5Y2ExNDYx
YzMwOGU0NWM0OTJlYzNlMDMyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxp
dHkuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3Vs
dApAQCAtNzgyLDggKzc4Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19k
b21haW5BSGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWluQUhhbmRsZXIgPSBbaGFuZGxlciBy
ZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmpDSW5zcGVjdG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudDxEb21haW5BQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5k
RGlzcGF0Y2hlcj4+KCJEb21haW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRl
RGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8
T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8
RG9tYWluQUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNo
ZXI+PigiRG9tYWluQSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNo
ZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0
ZUFnZW50KSk7CiB9CiAKQEAgLTgwMCw4ICs4MDAsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfZG9tYWluQkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkJIYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVE
b21haW5CQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIg
PSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJh
Y2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RG
TW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdp
dGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRo
LXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCBmNmM1ZWRjY2I5Mjg1YWY0
OGM2ZGViOTg0MjJhNzIzNmI4NzAyZDRlLi5hM2UyN2RmMzhjZWFmYmIzYzQ1MWUxM2I2MTE5ZTJl
NTRjM2QyYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5k
LXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTEwMzksOCArMTAzOSw4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdv
cmsxSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2Nv
bnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVl
PEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFs
dGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJv
bGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFw
cGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC0xMDU3LDgg
KzEwNTcsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazNIYW5k
bGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrM0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwog
Ci0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3Bh
dGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
Pj4oIk5ldHdvcmszIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hl
cikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRl
QWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCBlYzBjMTBiNGRiNDZiM2JjMDgz
ODZmZmI3M2NmZmY5OTA4NmJmMDY0Li5hYmZiNmUxNTM3MzZlN2Q0NmJjZGIwY2JmMzU3OWIzZWJk
MDljNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtODE1LDggKzgxNSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19jb21tYW5kRG9tYWluSGFuZGxlciByZWxlYXNlXTsK
ICAgICBfY29tbWFuZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0
byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yQ29t
bWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5k
RGlzcGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0
ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VV
bmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxl
cik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250cm9s
bGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBw
ZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApp
bmRleCAzMGU4MmM1YTE3NjYyOGNlYmJkYmIwZmM0MTBlZTk2YzhhNDhkYzQ5Li42YmRlZmYxODc5
N2MxNjk1YTgxZmIxNTY0MDZkZTM5YzlmODgxN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0
ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC03OTgsOCAr
Nzk4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmsxSGFuZGxl
ciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAot
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3Bl
Y3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRj
aGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5z
cGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIp
KTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFn
ZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0u
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0
CmluZGV4IDg4NDJjOWViNjk3NTZjZTYxNDdlYzRjMmQ5N2JmNzJjN2YzNTIyM2EuLmUwNzJmYWIy
MjEyOWNhZjY0YTIyZjY0ZWYzNGUxZTA4YWZhNzI4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlv
bnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRo
LW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0
d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNw
YXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0
Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5h
dGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBX
VEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0
cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAppbmRleCA4MzQyZTVmYzVlZmNhMjg0OWRmZDEyZGI3YWE0YWI0OTgyYjYxZmU4Li5l
ZjkwNjY5NDMwYmIxMjZlNjg5YmJjN2JmZmE5YmIwZjU0NDczM2RhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0
TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgfQogCiAgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IChtX3ZtLT5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXIgJiYgT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpKSkK
LSAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVERpc2Fzc2VtYmxl
cj4obV9jb2RlQmxvY2spOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8SklU
RGlzYXNzZW1ibGVyPihtX2NvZGVCbG9jayk7CiAgICAgaWYgKFVOTElLRUxZKG1fdm0tPm1fcGVy
Qnl0ZWNvZGVQcm9maWxlcikpIHsKICAgICAgICAgbV9jb21waWxhdGlvbiA9IGFkb3B0UmVmKAog
ICAgICAgICAgICAgbmV3IFByb2ZpbGVyOjpDb21waWxhdGlvbigKQEAgLTkwMSw3ICs5MDEsNyBA
QCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KIAogICAgIGlmIChtX3BjVG9D
b2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxv
Y2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5N
YXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOwor
ICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1Rv
Q29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNo
QnVmZmVyKSk7CiAgICAgCiAgICAgQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXN1bHQgPSBGSU5B
TElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwgSlNFbnRyeVB0clRhZywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCAxNmJmNzBkODAxNzQ0MjMwNTAyYTJk
OGIxOTdjZDQwMWM4MDI0ZjM4Li41YmRmODMwNDY1MDQzOTk0ZTExYmFmZmVkNTJiYjc4NWMxYmEw
YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogSklUVGh1bmtzOjpKSVRUaHVua3MoKQotICAgIDog
bV9ob3N0RnVuY3Rpb25TdHViTWFwKHN0ZDo6bWFrZV91bmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1h
cD4oKSkKKyAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChtYWtlVW5pcXVlPEhvc3RGdW5jdGlv
blN0dWJNYXA+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmlu
ZGV4IGUzODhmYjBlNjI3MDhiMzRlY2I5NzFlOTQ2YjQ2YjE5M2M0Y2FlM2IuLjhmOWE4NjRlNGZl
ODYyNmExZmVmYzBjMzA3YzllNDY1NjYyZjVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcApAQCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRnJhbWVTaHVmZmxlcj4gZnJhbWVTaHVmZmxlcjsK
ICAgICBpZiAoY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSkgewogICAgICAgICBBU1NF
UlQoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSk7Ci0gICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZv
LmZyYW1lU2h1ZmZsZURhdGEoKSk7CisgICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBtYWtlVW5pcXVl
PENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURh
dGEoKSk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgLy8gV2Ugd291bGQgaGF2ZSBh
bHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbCwgYW5kIHdlIGNhbgogICAg
ICAgICAvLyB1c2UgdGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIgdGhpcyBidXlzIHVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBjNjgxN2UwNDVmNTY3ZTllZDNhMGU1OTU3ZDI1ZTYzNzk4NTY1ZmFl
Li41YWIwMGVmN2ZlNTkzMWY3NDYyNGZlN2MxZjFiMGFjNDY3MWMwMjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMjk2OSw3ICsyOTY5LDcgQEAgaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGlu
ZSYgb3B0aW9ucywgYm9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykKICAgICAgICAgSlNM
b2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKICAgICAgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlICYm
ICF2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCi0gICAgICAgICAgICB2bS5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOworICAg
ICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6
RGF0YWJhc2U+KHZtKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNy
ZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgb3B0
aW9ucy5tX2FyZ3VtZW50cyk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0UmVtb3RlRGVidWdn
aW5nRW5hYmxlZChvcHRpb25zLm1fZW5hYmxlUmVtb3RlRGVidWdnaW5nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmOGRiZTcxOTZmMTExNzE2ZDBhNThmN2Y1
N2UzZjhmNjdiN2EyYWNmLi5hMTY0ZmQ5MDNmMzZlOTQyMGE3MzY0ZWY0MjdjNmMyZmZlMzIyY2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNDAsNyArMTQw
LDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgICwgbV9pbW1lZGlhdGVQYXJlbnRBbGxv
d3NGdW5jdGlvbkRlY2xhcmF0aW9uSW5TdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX2RlYnVnZ2Vy
UGFyc2VEYXRhKGRlYnVnZ2VyUGFyc2VEYXRhKQogewotICAgIG1fbGV4ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKKyAgICBtX2xl
eGVyID0gbWFrZVVuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2NyaXB0TW9kZSk7
CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5hKTsKICAgICBtX3Rv
a2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpOwog
ICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNjlhYTBiYzE5MGFmNjc4
M2Q4OTI4YzM1OWFhM2IxMGJiMWZiZDg3My4uMGE1ZWRlNGI4NDI1Y2ZkMWIzMTdjNzZjNTFlYTcz
NzgxNzgwYjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMDQs
NyArMjA0LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVu
dGlmaWVyKiBsYWJlbCwgYm9vbCBpc0xvb3ApCiAgICAgewogICAgICAgICBpZiAoIW1fbGFiZWxz
KQotICAgICAgICAgICAgbV9sYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExhYmVsU3RhY2s+KCk7
CisgICAgICAgICAgICBtX2xhYmVscyA9IG1ha2VVbmlxdWU8TGFiZWxTdGFjaz4oKTsKICAgICAg
ICAgbV9sYWJlbHMtPmFwcGVuZChTY29wZUxhYmVsSW5mbyB7IGxhYmVsLT5pbXBsKCksIGlzTG9v
cCB9KTsKICAgICB9CiAKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJz
ZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25z
dCBJCiAgICAgICAgIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgPSBt
X2xleGVyLT5jdXJyZW50T2Zmc2V0KCk7CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IGVu
ZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwotICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEs
CisgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRMb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IGRmMTdiZTUzNjYzZTdjYjdiNzBjNDg3NzBm
OWEwNTI5Y2YzM2E3ZWUuLjQxMDAwNmQ5Mjc1MWNlOTZiOTJjYjk2MjU2MzVlYTdjZjc4ZWM0ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTE4MCw3
ICsxODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllckFyZW5hJiBpZGVu
dGlmaWVyQXJlbmEoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkgKCFtX2lk
ZW50aWZpZXJBcmVuYSkpCi0gICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBzdGQ6
Om1ha2VfdW5pcXVlPElkZW50aWZpZXJBcmVuYT4oKTsKKyAgICAgICAgICAgICAgICBtX2lkZW50
aWZpZXJBcmVuYSA9IG1ha2VVbmlxdWU8SWRlbnRpZmllckFyZW5hPigpOwogICAgICAgICAgICAg
cmV0dXJuICptX2lkZW50aWZpZXJBcmVuYTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKaW5kZXgg
MDUwMzJiNWQxMzEwOGMwZWI2MjBlOWRhZTgyMGNlZjdhYzc1MzE4Yy4uMzU3MTFiNWZhNjQyNjll
Njc3NGFiNzBlMjFkZDUwMjUxNjljOGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcApAQCAtNzksNyArNzksNyBA
QCBFeGVjdXRpb25Db3VudGVyKiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZvcihjb25z
dCBPcmlnaW5TdGFjayYgb3JpZ2luKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGVjdXRpb25D
b3VudGVyPiYgY291bnRlciA9IG1fY291bnRlcnMuYWRkKG9yaWdpbiwgbnVsbHB0cikuaXRlcmF0
b3ItPnZhbHVlOwogICAgIGlmICghY291bnRlcikKLSAgICAgICAgY291bnRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKKyAgICAgICAgY291bnRlciA9IG1ha2VVbmlx
dWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKIAogICAgIHJldHVybiBjb3VudGVyLmdldCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDcwYzcxNDczMzI0NDQw
ODA3ODc5MzQwMTk4NjY3M2M5N2UxZWE4M2QuLmE2NGRlM2ZkZDY2MjU1MThhYzVkMTI2Y2VhYzc4
YjZmMjEyNWE0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAg
LTE3NCw3ICsxNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBnZXRT
dGFja1RyYWNlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iagogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHNpemVfdCBmcmFtZXNUb1NraXAgPSB1c2VDdXJyZW50RnJhbWUgPyAw
IDogMTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNl
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IG1ha2VVbmlxdWU8VmVjdG9y
PFN0YWNrRnJhbWU+PigpOwogICAgIHZtLmludGVycHJldGVyLT5nZXRTdGFja1RyYWNlKG9iaiwg
KnN0YWNrVHJhY2UsIGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2JqZWN0LT5zdGFja1RyYWNlTGltaXQo
KS52YWx1ZSgpKTsKICAgICBpZiAoIXN0YWNrVHJhY2UtPmlzRW1wdHkoKSkKICAgICAgICAgQVNT
RVJUX1VOVVNFRChleGVjLCBleGVjID09IHZtLnRvcENhbGxGcmFtZSB8fCBleGVjLT5pc0dsb2Jh
bEV4ZWMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcAppbmRleCA0MzllMjA5YjBhNWY4ZmI4MjliNzkxOTc1NzQ4OGM0MTU2
MzQyNzNmLi5lZjJlODMwODc0MWI4ODUyZTU2MjMyNmY5NjI1N2M5ZDAyOTM1ZDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKQEAgLTExMCw3ICsxMTAsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiBGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3Jh
cmVEYXRhKTsKLSAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4o
KTsKKyAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByYXJl
RGF0YS0+bV9saW5lQ291bnQgPSBsaW5lQ291bnQoKTsKICAgICByYXJlRGF0YS0+bV9lbmRDb2x1
bW4gPSBlbmRDb2x1bW4oKTsKICAgICByYXJlRGF0YS0+bV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQg
PSBwYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCA0NjIzNjQxYzU5OGUzZWJiNWZiYTZiYzAy
MzcyNjRlNTA1MmZkMTc5Li41MmIyOGIxM2M3ZTJlMjVkMjFiYmJhYjNhZDMxZDViNmJjMGNkZWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0
YS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlv
blByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2gKIGlubGluZSBX
YXRjaHBvaW50KiBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFy
aW5nV2F0Y2hwb2ludCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWhhc0FsbG9jYXRpb25Qcm9m
aWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkpOwotICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmlu
Z1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdX
YXRjaHBvaW50Pih0aGlzKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBv
aW50ID0gbWFrZVVuaXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhp
cyk7CiAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQuZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCAxYTU3ZWYzZGNmZTkxOWU3MGIzN2ZhN2UzNDg1NGExM2U5MDUzZmFlLi5j
Yzg3NzY3ZjEwOGJjYzQ4M2IzMTVmMTEyZmE5YzUzNDdmNTIwMTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NzcsOCArNDc3
LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9kZWJ1Z2dlciA9
IDA7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2luc3BlY3RvckNvbnRy
b2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyPigqdGhpcyk7Ci0gICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKKyAgICBtX2luc3Bl
Y3RvckNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gbWFr
ZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKICAgICBtX2luc3BlY3Rv
ckRlYnVnZ2FibGUtPmluaXQoKTsKICAgICBtX2NvbnNvbGVDbGllbnQgPSBtX2luc3BlY3RvckNv
bnRyb2xsZXItPmNvbnNvbGVDbGllbnQoKTsKICNlbmRpZgpAQCAtMTE0NSw1NyArMTE0NSw1NyBA
QCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0g
ZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0ZXJh
dG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX2FycmF5
SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX2FycmF5
SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBt
X2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX2FycmF5SXRlcmF0
b3JQcm90b3R5cGVOZXh0LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0
aGlzLT5hcnJheVByb3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
KTsKLSAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCht
YXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAg
bV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAg
ICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAg
ICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
ICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9u
LCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRp
b24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAg
ewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0
aXZlV2F0Y2hwb2ludChzZXRJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKLSAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50
LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5n
ZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fc2V0
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAg
ICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAg
ICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7
CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmdl
dCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFBy
b3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlz
LCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAg
ICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwog
ICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9
IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nUHJvdG90eXBlLmdldCgpLCBtX3ZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVT
eW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0
cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAg
ICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRp
dGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3Zt
LnByb3BlcnR5TmFtZXMtPnNldCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBv
aW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFBy
b3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKLSAg
ICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFByb3Rv
dHlwZUFkZFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0
QWRkV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+aW5z
dGFsbCh2bSk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBjYXBpdGFsTmFtZSAjIyBD
b25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBp
dGFsTmFtZQogICAgICAgICB0aGlzLT5zeW1ib2xQcm90b3R5cGUoKTsKIAogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChu
dW1iZXJQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpOwotICAgICAgICBt
X251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
KHRoaXMsIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOworICAgICAgICBt
X251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOwogICAgICAgICBtX251bWJl
clByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIG1fbnVt
YmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24q
PihudW1iZXJQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJp
bmcpKSk7CiAgICAgfQpAQCAtMTkzMiwxMCArMTkzMiwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludC5pc0JlaW5nV2F0Y2hlZCgp
KTsKICAgICBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQudG91Y2godm0sICJTZXQgdXAgYXJyYXkg
c3BlY2llcyB3YXRjaHBvaW50LiIpOwogCi0gICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9y
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0
aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlQcm90b3R5cGVDb25z
dHJ1Y3RvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRp
dGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5UHJvdG90eXBlQ29u
c3RydWN0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKIAotICAgIG1fYXJyYXlDb25zdHJ1Y3Rv
clNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0Nv
bmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2FycmF5Q29uc3RydWN0
b3JTcGVjaWVzV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRp
b24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yU3Bl
Y2llc1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAwNDdjMTY2NTNlNzFiMWE4MDZiZDlm
YzdkNTY2NDNhNWY5ODhmMTFlLi44NDUzNWNhNWM2MDBjZWNiZDhiNDc4ZjY1YjUzY2QwN2UzNmE4
MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICB7CiAgICAgICAgIGlmIChtX3JhcmVEYXRhKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVu
aXF1ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOwogICAgIH0KICAgICAgICAgCiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1l
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAK
aW5kZXggMWFmMDAzNjUzY2I4YzNkZTY0M2Y4YzQ5MTI3YWJiM2U1NTEzZDVhZC4uMzI3ZmVkMDZj
NjdhNWJmMTEyNTFmOWY0ZGVkODM5ZTcwMzNjOGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lk
IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OnNldFJ1bkxvb3AoTWFuYWdlciog
bWFuYWdlciwgQ0ZSdW5Mb29wUgogI2Vsc2UKIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJW
TURhdGE6OlBlclZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQogICAgIDogcnVuTG9vcCgmUnVuTG9v
cDo6Y3VycmVudCgpKQotICAgICwgdGltZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1l
cjxNYW5hZ2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6
OnRpbWVyRGlkRmlyZUNhbGxiYWNrKSkKKyAgICAsIHRpbWVyKG1ha2VVbmlxdWU8UnVuTG9vcDo6
VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkK
ICAgICB0aW1lci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpKYXZhc2NyaXB0
VGltZXIpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyJiBKU1J1
bkxvb3BUaW1lcjo6TWFuYWdlcjo6c2hhcmVkKCkKIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFu
YWdlcjo6cmVnaXN0ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFBlclZN
RGF0YT4oKnRoaXMpOwogI2lmIFVTRShDRikKICAgICBkYXRhLT5zZXRSdW5Mb29wKHRoaXMsIHZt
LnJ1bkxvb3AoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCmluZGV4IDVmMDc4ZDJhNTA5ZDJiNDQyMDBmN2E0
YWYzODgxMjQ2Y2IyZDU4YTcuLjUyOTAyMGRmMGYxZGMyYTI4NmY4MDBhYmFkOWQ3ZWI3ZDNmOGVl
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFw
SGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBQ
cm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKIGlubGluZSB2b2lkIFByb3BlcnR5VGFi
bGU6OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICgh
bV9kZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0
cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKICAgICBtX2RlbGV0ZWRP
ZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAppbmRleCA1OWVjNDFjNDlhZTgyZjQ3ZjY5ODY4MDZk
ZDYxNDM5NDRhNDJiNWQ2Li5iMWJiNjc5MTk5MjY1YWZjYmNjYzgzNjU2ZDhkNTZmYzViNGEzNTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNw
cApAQCAtODMsNyArODMsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwg
Y29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zm
c2V0cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zm
c2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRl
ZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAgICAgbV9k
ZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90aGVy
RGVsZXRlZE9mZnNldHMpOwogfQogCiBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2
bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikK
QEAgLTEwNyw3ICsxMDcsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwg
dW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYgogICAgIC8vIENvcHkg
dGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4q
IG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAg
IGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0
cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogdm9pZCBQcm9wZXJ0eVRhYmxl
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuY3BwCmluZGV4IDA3MWIxZjY2MzE1Y2UzYWU4ZGNmZTE3NWZmNjM2NmY1YzYzMmFmZmMuLjcw
ZTU5M2Q1M2ViZGQ4MWQ4YzA4MTNhMjk3NzBlOTQwY2UwNDExM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVnRXhw
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKICAgICBtX251bVN1YnBhdHRlcm5zID0gcGF0dGVy
bi5tX251bVN1YnBhdHRlcm5zOwogICAgIGlmICghcGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVz
LmlzRW1wdHkoKSB8fCAhcGF0dGVybi5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOwor
ICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAgbV9y
YXJlRGF0YS0+bV9jYXB0dXJlR3JvdXBOYW1lcy5zd2FwKHBhdHRlcm4ubV9jYXB0dXJlR3JvdXBO
YW1lcyk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5zd2Fw
KHBhdHRlcm4ubV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDM5Y2RkOTExNmUwMjdlM2RiNjA0MGRiZDhmZTUy
NzBkMmU5OTVkOGQuLmU4ZGE4NTI2ZTdjN2U4MWZiZWE3NWM4ODk4ODE2MWI5YWY4OTE3MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0xNjQsNyArMTY0LDcgQEAg
Y2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgWWFycjo6WWFyckNvZGVC
bG9jayYgZW5zdXJlUmVnRXhwSklUQ29kZSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcmVnRXhw
SklUQ29kZSkKLSAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8
WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKKyAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IG1h
a2VVbmlxdWU8WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKICAgICAgICAgcmV0dXJuICptX3JlZ0V4
cEpJVENvZGUuZ2V0KCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDIzN2Q3ZGU2ODhkZDIwNzY1
MDIwMTIxNmNkMGQ1NDY4MGM0OTZlYWEuLmVlNmUxOGNlZmRiZTc5ZjRiYzJlYjIxOTdmZjUzOTEw
NGUxZjc5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgYXV0byBTY3JpcHRFeGVjdXRhYmxl
OjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcEltcGwoc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2Jq
ZWMKIHsKICAgICBpZiAoZGVzdCkKICAgICAgICAgcmV0dXJuICpkZXN0OwotICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+KCk7CiAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKICAgICBkZXN0ID0gV1RGTW92ZShyZXN1bHQpOwogICAgIHJldHVybiAqZGVz
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDI5
M2M0NjQ3MmU3NDg5NDFjYTljYzJhZGFjMTZhM2QyZGM1ZGVlZWMuLjAxY2QyYmQ1NDdmZTAyYjUw
NDdhNmQ0NWIzYzhhZDZmZDUyYmRiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIFdhdGNocG9pbnRTZXQqIFN0cnVj
dHVyZTo6ZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQoVk0mIHZtLCBQcm9w
ZXJ0CiAgICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+cmFyZURhdGEoKTsK
ICAgICBpZiAoIXJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMpIHsKICAgICAg
ICAgcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cyA9Ci0gICAgICAgICAgICBz
dGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+
KCk7CisgICAgICAgICAgICBtYWtlVW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdh
dGNocG9pbnRNYXA+KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgfQog
ICAgIGF1dG8gcmVzdWx0ID0gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cy0+
YWRkKG9mZnNldCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKaW5kZXggOTlhOGQ5ZjdkYWFjMjE3ZTRjODFlN2U3
MTI2ZTljMDJiMzc0ZWQzZi4uZDNjZjE4M2IwZjZkN2M0ODk4ODAwYWI2OGVlNDhjZDEyOGY3ZmUy
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNl
dE9iamVjdFRvU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyCiAg
ICAgQVNTRVJUKGNvbmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHkoKSk7CiAgICAg
Zm9yIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsK
ICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgPT0gUHJvcGVydHlDb25k
aXRpb246OlByZXNlbmNlKSB7Ci0gICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVJ
bmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0VG9TdHJpbmdB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0
aGlzKTsKKyAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOwogICAgICAgICAgICAg
bV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2
ZVdhdGNocG9pbnRTZXQuYWRkKGNvbmRpdGlvbiwgdGhpcyktPmluc3RhbGwodm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDM5MmYyMTdj
MTRlZmFlYjU0NWJmMGQ0Zjc3OTBjMTEyNzkzMmJjODUuLmE0YTg3MGZjMWZjYWQzNWM0Mzk1ZjEw
OWIyMmE5OWM0MjBkNzQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBjb25zdCBTeW1ib2xUYWJsZTo6TG9j
YWxUb0VudHJ5VmVjJiBTeW1ib2xUYWJsZTo6bG9jYWxUb0VudHJ5KGNvbnN0IENvbmN1cnJlbnRK
UwogICAgICAgICAgICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBvZmZzZXQuc2NvcGVPZmZz
ZXQoKS5vZmZzZXQoKSArIDEpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIG1fbG9jYWxUb0Vu
dHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIpOwor
ICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IG1ha2VVbmlxdWU8TG9jYWxUb0VudHJ5VmVjPihzaXpl
LCBudWxscHRyKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbWFwKSB7CiAgICAgICAg
ICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFsdWUudmFyT2Zmc2V0KCk7CiAgICAgICAg
ICAgICBpZiAob2Zmc2V0LmlzU2NvcGUoKSkKQEAgLTE1OSw3ICsxNTksNyBAQCBTeW1ib2xUYWJs
ZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgcmVzdWx0LT5t
X2FyZ3VtZW50cy5zZXQodm0sIHJlc3VsdCwgYXJndW1lbnRzKTsKICAgICAKICAgICBpZiAobV9y
YXJlRGF0YSkgewotICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YSA9IG1h
a2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgICAgICB7CiAgICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLmJlZ2luKCk7CkBAIC0xOTEs
NyArMTkxLDcgQEAgdm9pZCBTeW1ib2xUYWJsZTo6cHJlcGFyZUZvclR5cGVQcm9maWxpbmcoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJikKICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJl
RGF0YT4oKTsKKyAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRh
PigpOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX21hcC5iZWdpbigpLCBlbmQgPSBtX21hcC5l
bmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBtX3JhcmVEYXRhLT5tX3VuaXF1
ZUlETWFwLnNldChpdGVyLT5rZXksIFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0aW9u
KTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBDb2RlQmxvY2sqIFN5bWJvbFRhYmxlOjpyYXJlRGF0YUNv
ZGVCbG9jaygpCiB2b2lkIFN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayhDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgIG1fcmFyZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIG1f
cmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICBBU1NF
UlQoIW1fcmFyZURhdGEtPm1fY29kZUJsb2NrKTsKICAgICBtX3JhcmVEYXRhLT5tX2NvZGVCbG9j
ay5zZXQoKmNvZGVCbG9jay0+dm0oKSwgdGhpcywgY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNDEwZWI2ZDVhZTE2ZjM2MDIyNmRiMzgy
M2Y3ZWU4MjhlY2NhYjM4My4uNDFhY2E5ZDNkNGQ5YjhhNTZhZTY4NTIzMGU4ZDY2NzUyYWMwZDAy
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTM2Miw3
ICszNjIsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCgpCiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1fcHJvdG8tPnByb3BlcnR5SGFzaCgpKTsKICAgICB9CiAKLSAgICBt
X3Byb3BlcnR5SGFzaCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5n
KCkpOworICAgIG1fcHJvcGVydHlIYXNoID0gbWFrZVVuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9T
dHJpbmcoKSk7CiAgICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDRlMmQwZDMyNGEyNGUyMzJjZDE5NTM4OTJlZDhiMGEz
M2IwYjA1ZWUuLmI3MDkyYzA4ZWY3MmIwZWNhODlmZjBiNWM0YmUxYWU1OWFhMWRiYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI1MiwxOCArMjUyLDE4IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcnVuTG9vcChDRlJ1
bkxvb3BHZXRDdXJyZW50KCkpCiAjZW5kaWYgLy8gVVNFKENGKQogICAgICwgaGVhcCh0aGlzLCBo
ZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxGYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdl
QWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
PihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihz
dGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6
OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8
SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUo
c3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVk
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQotICAg
ICwgY2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0
dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAg
ICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxs
VHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkp
KQotICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNTdHJpbmdIZWFw
Q2VsbFR5cGU+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoc3RkOjpt
YWtlX3VuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIGZh
c3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4oKSkKKyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKKyAgICAs
IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQorICAgICwgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJm
bHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERv
ZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVy
cykpKQorICAgICwgY2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2Vs
bEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQor
ICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlw
ZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQor
ICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+
KCkpCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVl
PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJs
eUZ1bmN0aW9uSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlv
bkhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBl
KG1ha2VVbmlxdWU8SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKKyAgICAs
IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxXZWJBc3NlbWJseUZ1
bmN0aW9uSGVhcENlbGxUeXBlPigpKQogI2VuZGlmCiAgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxp
YXJ5SGVhcENlbGxUeXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkg
Ly8gSGFzaDoweDNlN2NkNzYyCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgi
SlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUu
Z2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYK
QEAgLTI5Niw3ICsyOTYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAgICAgLCBtX2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6
Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKICAgICAs
IHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKLSAg
ICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChzdGQ6Om1h
a2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQorICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVj
b2RlV29yZEZvckJhc2VsaW5lSklUKG1ha2VVbmlxdWU8U2ltcGxlU3RhdHM+KCkpCiAgICAgLCBj
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykKICAgICAsIHN0cmluZ0NhY2hlKCp0
aGlzKQogICAgICwgc3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0aGlzKQpAQCAtMzEyLDggKzMxMiw4
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faW5p
dGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCkKICNlbmRpZgogICAgICwgbV9zdGFja1BvaW50ZXJBdFZN
RW50cnkoMCkKLSAgICAsIG1fY29kZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUNhY2hlPigp
KQotICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoc3RkOjptYWtlX3VuaXF1ZTxCdWlsdGluRXhl
Y3V0YWJsZXM+KCp0aGlzKSkKKyAgICAsIG1fY29kZUNhY2hlKG1ha2VVbmlxdWU8Q29kZUNhY2hl
PigpKQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMobWFrZVVuaXF1ZTxCdWlsdGluRXhlY3V0
YWJsZXM+KCp0aGlzKSkKICAgICAsIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50KDApCiAgICAg
LCBtX3ByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZChJc1dhdGNoZWQpCiAgICAgLCBtX2NvbnRyb2xG
bG93UHJvZmlsZXJFbmFibGVkQ291bnQoMCkKQEAgLTQwNyw3ICs0MDcsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZvcm1B
c3NlcnRpb25zKCp0aGlzKTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlUHJv
ZmlsZXIoKSkpIHsKLSAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKKyAgICAgICAgbV9wZXJCeXRlY29kZVBy
b2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKIAogICAgICAg
ICBTdHJpbmdQcmludFN0cmVhbSBwYXRoT3V0OwogICAgICAgICBjb25zdCBjaGFyKiBwcm9maWxl
clBhdGggPSBnZXRlbnYoIkpTQ19QUk9GSUxFUl9QQVRIIik7CkBAIC00MjMsNyArNDIzLDcgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIC8vIHdvbid0IHVz
ZSB0aGlzLgogICAgIG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgU2ltcGxl
VHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CiAKLSAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsK
KyAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsKIAogICAgIGlmIChPcHRpb25zOjp1c2VUeXBlUHJvZmls
ZXIoKSkKICAgICAgICAgZW5hYmxlVHlwZVByb2ZpbGVyKCk7CkBAIC00NDIsOSArNDQyLDkgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2VuZGlmIC8vIEVOQUJM
RShTQU1QTElOR19QUk9GSUxFUikKIAogICAgIGlmIChPcHRpb25zOjp1c2VSYW5kb21pemluZ0Z1
enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50KHN0ZDo6bWFrZV91bmlxdWU8UmFu
ZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFr
ZVVuaXF1ZTxSYW5kb21pemluZ0Z1enplckFnZW50PigqdGhpcykpOwogICAgIGVsc2UgaWYgKE9w
dGlvbnM6OnVzZURvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRGdXp6
ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRo
aXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxEb3VibGVQcmVkaWN0aW9u
RnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAKICAgICBpZiAoT3B0aW9uczo6YWx3YXlzR2VuZXJhdGVQ
Q1RvQ29kZU9yaWdpbk1hcCgpKQogICAgICAgICBzZXRTaG91bGRCdWlsZFBDVG9Db2RlT3JpZ2lu
TWFwcGluZygpOwpAQCAtNDU3LDkgKzQ1Nyw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFu
eSBzdHVicyB0aGF0IHRoZSBKSVQgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZCBpbiBu
b24tY29tcGlsYXRpb24gdGhyZWFkcy4KICAgICBpZiAoY2FuVXNlSklUKCkpIHsKLSAgICAgICAg
aml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKKyAgICAgICAgaml0U3R1
YnMgPSBtYWtlVW5pcXVlPEpJVFRodW5rcz4oKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICAg
ICAgZnRsVGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKKyAgICAgICAg
ZnRsVGh1bmtzID0gbWFrZVVuaXF1ZTxGVEw6OlRodW5rcz4oKTsKICNlbmRpZiAvLyBFTkFCTEUo
RlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29k
ZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihD
b2RlRm9yQ29uc3RydWN0KTsKQEAgLTYxOSw3ICs2MTksNyBAQCBXYXRjaGRvZyYgVk06OmVuc3Vy
ZVdhdGNoZG9nKCkKIEhlYXBQcm9maWxlciYgVk06OmVuc3VyZUhlYXBQcm9maWxlcigpCiB7CiAg
ICAgaWYgKCFtX2hlYXBQcm9maWxlcikKLSAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhlYXBQcm9maWxlcj4oKnRoaXMpOworICAgICAgICBtX2hlYXBQcm9maWxlciA9
IG1ha2VVbmlxdWU8SGVhcFByb2ZpbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2hlYXBQcm9m
aWxlcjsKIH0KIApAQCAtMTA0MSw4ICsxMDQxLDggQEAgc3RhdGljIGJvb2wgZGlzYWJsZVByb2Zp
bGVyV2l0aFJlc3BlY3RUb0NvdW50KHVuc2lnbmVkJiBjb3VudGVyLCBjb25zdCBGdW5jJiBkb0QK
IGJvb2wgVk06OmVuYWJsZVR5cGVQcm9maWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVUeXBlUHJv
ZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyPigpOwotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxl
ckxvZyA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CisgICAgICAg
IHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXI+KCk7CisgICAg
ICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXJMb2c+
KCp0aGlzKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RU
b0NvdW50KG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVUeXBlUHJvZmlsZXIpOwpA
QCAtMTA2MSw3ICsxMDYxLDcgQEAgYm9vbCBWTTo6ZGlzYWJsZVR5cGVQcm9maWxlcigpCiBib29s
IFZNOjplbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZUNvbnRy
b2xGbG93UHJvZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93
UHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CisgICAg
ICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9IG1ha2VVbmlxdWU8Q29udHJvbEZsb3dQ
cm9maWxlcj4oKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3Bl
Y3RUb0NvdW50KG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudCwgZW5hYmxlQ29udHJv
bEZsb3dQcm9maWxlcik7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFZNOjpkdW1wVHlwZVBy
b2ZpbGVyRGF0YSgpCiAKIHZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKIHsKLSAgICBtX21pY3JvdGFza1F1
ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQobWFrZVVu
aXF1ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOwog
fQogCiB2b2lkIFZNOjpkcmFpbk1pY3JvdGFza3MoKQpAQCAtMTIzMCwxNCArMTIzMCwxNCBAQCB2
b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKIHsKICAgICBpZiAobV9zaGFkb3dDaGlja2Vu
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9zaGFkb3dDaGlja2VuID0gc3RkOjptYWtlX3VuaXF1
ZTxTaGFkb3dDaGlja2VuPigpOworICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8U2hh
ZG93Q2hpY2tlbj4oKTsKIH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCiAgICAgSXNvU3Vic3BhY2Uq
IFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsg
XAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBhdXRv
IHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
aGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBc
CiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJuIG1f
IyNuYW1lLmdldCgpOyBcCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgY2Vs
bEhlYQogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7IFwKICAgICAg
ICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwg
dHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2Up
OyBcCiAgICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAyNGYxOGFkMDJk
ZTJmZWY5MDA5MzQ0ODY0MzBjOThmZTk0OTQyNGVmLi41MzM5M2NiMjU4Zjc0MmM2YWNmZGRlYWVj
NmM3MTc1NjQ0ZDc5NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBjbGFzcyBBaXJJUkdlbmVy
YXRvciB7CiAgICAgdm9pZCBlbWl0UGF0Y2hwb2ludChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrLCBC
Mzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCwgVG1wIHJlc3VsdCwgVmVjdG9yPENvbnN0cmFpbmVk
VG1wLCBpbmxpbmVTaXplPiYmIGFyZ3MpCiAgICAgewogICAgICAgICBpZiAoIW1fcGF0Y2hwb2lu
dFNwZWNpYWwpCi0gICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8
QjM6OlBhdGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1
ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIG1fcGF0Y2hwb2ludFNw
ZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNwZWNpYWwqPihtX2NvZGUuYWRkU3Bl
Y2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSkpOwogCiAgICAgICAgIElu
c3QgaW5zdChQYXRjaCwgcGF0Y2gsIEFyZzo6c3BlY2lhbChtX3BhdGNocG9pbnRTcGVjaWFsKSk7
CiAgICAgICAgIEluc3QgcmVzdWx0TW92OwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIGNsYXNzIEFpcklS
R2VuZXJhdG9yIHsKIAogICAgICAgICAvLyBGSVhNRTogTWFrZSBhIGhhc2htYXAgb2YgdGhlc2Uu
CiAgICAgICAgIEIzOjpDaGVja1NwZWNpYWw6OktleSBrZXkoYnJhbmNoKTsKLSAgICAgICAgQjM6
OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwqPiht
X2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtleSkp
KTsKKyAgICAgICAgQjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpD
aGVja1NwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpDaGVja1NwZWNp
YWw+KGtleSkpKTsKIAogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBkdW1t
eSB2YWx1ZXMKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDA0MApAQCAtMjEzOSwxMCArMjEzOSwxMCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjpv
cmlnaW4oKSAtPiBCMzo6T3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5h
bEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29tcGlsYXRpb25Db250ZXh0
JiBjb21waWxhdGlvbkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVf
dCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxp
bmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVs
ZUluZm9ybWF0aW9uJiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5k
ZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21FeGNl
cHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFsRnVu
Y3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVybmFsRnVuY3Rpb24+
KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gc3Rk
OjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAgY29tcGlsYXRpb25Db250ZXh0Lndh
c21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAg
Y29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0Nh
bGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9
IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAgQjM6OlByb2NlZHVyZSBwcm9jZWR1
cmU7CiAgICAgQ29kZSYgY29kZSA9IHByb2NlZHVyZS5jb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMjA5NDE3N2VkNmYx
ODNhYjRkODYyZWMyMjY3ZDMwZjI4YjdkZTViNi4uMTU4ZGY5ZmE5ZjBjOWY3MjFhYzI5Mjc3ODE4
OGRjZjI4ZTcwN2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcApAQCAtMTU1MSwxMCArMTU1MSwxMCBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6Om9yaWdpbigpIC0+IE9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJu
YWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYg
Y29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3Qg
ZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJ
bmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCBDb21waWxhdGlvbk1vZGUgY29tcGls
YXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBU
aHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250
ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJz
PigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRl
ckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxh
dGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4o
KTsKIAogICAgIFByb2NlZHVyZSBwcm9jZWR1cmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCBmOTg1ZDUyM2MyZTkzZjNiZDIzZmI3YzU3MTJiNTg2
OGNjMTZhNjg1Li41MDZkZjRiZWZkMGQ1NjQxODQ0Y2U1Mjc5NTExNWY2MTI4NzE2MWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zMTUsNyArMzE1
LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2Vy
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVudHJ5
cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisg
ICAgICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVu
dHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAg
ICAgICAgICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0
clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIGZ1bmN0aW9u
SW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5nKElu
ZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFtZVNl
Y3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLAogICAgICAg
ICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7
CiAgICAgICAgICAgICB9CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0
ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21J
bnRlcm5hbEZ1bmN0aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJu
YWxGdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBp
bGF0aW9uPigKICAgICAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBC
M0NvbXBpbGF0aW9uUHRyVGFnLCAiRW1iZWRkZXItPldlYkFzc2VtYmx5IGVudHJ5cG9pbnRbJWld
ICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9k
dWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFz
Y2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250ZXh0LmVtYmVk
ZGVyRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCBjNTEzZmQyZjUwZWQ2ZmIxN2MzMzg1
ZWYyOTA1Mjc4MTczOTIxMDM3Li4wZDdhMDNjMzYxMjljZDFkZTJjNTRmZmNkNTAyOTViNTZjNWI4
OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC05
NSw3ICs5NSw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisgICAgb21nRW50cnlwb2ludC5jb21waWxh
dGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVfQ09E
RShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2ViQXNzZW1ibHkgT01HIGZ1bmN0
aW9uWyVpXSAlcyBuYW1lICVzIiwgbV9mdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3Bh
Y2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNw
YWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRy
eXBvaW50Qnlwcm9kdWN0cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdv
cmtsaXN0LmNwcAppbmRleCAzNmQ3NGMxNGIxOGM3MDdiODEyYTA0ODdmOTFlMjljMzg1MzkxZGUy
Li42NjBmOTU2NTczOGIxMGEzMGYzZTdjYzgxOGEzMmM4NTg3ODIxMjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBX
b3JrbGlzdDo6V29ya2xpc3QoKQogICAgIG1fdGhyZWFkcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVy
T2ZDb21waWxhdGlvblRocmVhZHMpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNvbXBpbGF0aW9uVGhyZWFkczsg
aSsrKQotICAgICAgICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykpOworICAgICAgICBtX3RocmVhZHMudW5j
aGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykp
OwogfQogCiBXb3JrbGlzdDo6fldvcmtsaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTVG9XYXNtLmNwcAppbmRleCA1ZGQ0NTFiZWE4NGQ1OTBiYmYwZmNiMDc2ZTI2ZmZkM2Nj
N2I4MWFjLi43MzUyMjAyODkzN2M2ZGFjMWZjNDczYzdlNGNkYzY0OTU4Y2U4ZWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC00Niw3ICs0Niw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIo
Q29tcGlsYXRpb25Db250ZXh0JiBjb21wCiB7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29t
cGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVDsKIAotICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogICAgIGppdC5lbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOwogCiAgICAgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFzIGNvZGVCbG9ja3MuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdmMDMzZmVjMWMz
NjlhOTQyM2IzM2NmOGViMzMzNGM1MWNlMDgwOGIuLmM0Yjc3Y2FkYmU1ZWVhNTczZWM4NTJiOTVl
ZjZhNzg5YjgyODUzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcApAQCAtMTcwNiw3ICsxNzA2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsK
ICAgICAgICAgICAgIGR1bXBEaXNqdW5jdGlvbihtX2JvZHlEaXNqdW5jdGlvbi5nZXQoKSk7CiAj
ZW5kaWYKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+
KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0
ZXJuLCBhbGxvY2F0b3IsIGxvY2spOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCeXRlY29k
ZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5m
bywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tJ
bnB1dCh1bnNpZ25lZCBjb3VudCkKQEAgLTE5MjYsNyArMTkyNiw3IEBAIGNsYXNzIEJ5dGVDb21w
aWxlciB7CiAgICAgICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCA9IHBhcmVudGhlc2VzQmVnaW4u
YXRvbS5zdWJwYXR0ZXJuSWQ7CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBs
YXN0U3VicGF0dGVybklkIC0gc3VicGF0dGVybklkICsgMTsKLSAgICAgICAgYXV0byBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1
YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1
bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxs
RnJhbWVTaXplKTsKIAogICAgICAgICB1bnNpZ25lZCBmaXJzdFRlcm1JblBhcmVudGhlc2VzID0g
YmVnaW5UZXJtICsgMTsKICAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+dGVybXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShlbmRUZXJtIC0gZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyArIDIp
OwpAQCAtMTk5Nyw3ICsxOTk3LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKIAogICAgIHZvaWQg
cmVnZXhCZWdpbih1bnNpZ25lZCBudW1TdWJwYXR0ZXJucywgdW5zaWduZWQgY2FsbEZyYW1lU2l6
ZSwgYm9vbCBvbmNlVGhyb3VnaCkKICAgICB7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJh
bWVTaXplKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPEJ5dGVEaXNq
dW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwogICAgICAgICBtX2JvZHlE
aXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbihv
bmNlVGhyb3VnaCkpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbMF0uZnJhbWVM
b2NhdGlvbiA9IDA7CiAgICAgICAgIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXggPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCA0MTJjNmU0YTZjYmVhYzg5MzIx
YjBhZTc4MGZkZDc2YTA2MTliZTJkLi5mNjZhODJlNTc1MWFkZGEzMjllZGVlZjcwYWQ5MjY5ZDEx
ZWQyYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMzg5OSw3
ICszODk5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6ZHVtcFJlZ0V4cERpc2Fzc2Vt
Ymx5KCkpKQotICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFlh
cnJEaXNhc3NlbWJsZXI+KHRoaXMpOworICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtl
VW5pcXVlPFlhcnJEaXNhc3NlbWJsZXI+KHRoaXMpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fzc2Vt
YmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRTdGFydE9mQ29kZShsYWJlbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCA0OWY3
N2Y2OWM2ODVjNjUyMDNkZjNmMDM0YzkwZDE4NzdjOTJkYzliLi5mY2M1MWIyNzdmNTAxMTAzYjdj
NjViYmQzM2E1Y2E0MTBkODFjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgY2xhc3MgQ2hhcmFjdGVyQ2xhc3NDb25z
dHJ1Y3RvciB7CiAgICAgewogICAgICAgICBjb2FsZXNjZVRhYmxlcygpOwogCi0gICAgICAgIGF1
dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwor
ICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4o
KTsKIAogICAgICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLnN3YXAobV9tYXRjaGVzKTsK
ICAgICAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLnN3YXAobV9yYW5nZXMpOwpAQCAtNDQx
LDcgKzQ0MSw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAsIG1f
Y2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2UoKSwgcGF0dGVybi51
bmljb2RlKCkgPyBDYW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNTMikK
ICAgICAgICAgLCBtX3N0YWNrTGltaXQoc3RhY2tMaW1pdCkKICAgICB7Ci0gICAgICAgIGF1dG8g
Ym9keSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBh
dXRvIGJvZHkgPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9w
YXR0ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5
LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMu
YXBwZW5kKFdURk1vdmUoYm9keSkpOwpAQCAtNDU2LDcgKzQ1Niw3IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgICAgICBtX3BhdHRlcm4ucmVzZXRGb3JSZXBhcnNpbmcoKTsK
ICAgICAgICAgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnJlc2V0KCk7CiAKLSAgICAgICAg
YXV0byBib2R5ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAg
ICAgIGF1dG8gYm9keSA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAg
ICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9
IGJvZHktPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0
aW9ucy5hcHBlbmQoV1RGTW92ZShib2R5KSk7CkBAIC02MDgsNyArNjA4LDcgQEAgY2xhc3MgWWFy
clBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJU
KCFvcHRHcm91cE5hbWUpOwogCi0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKKyAg
ICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlz
anVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1z
LmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVy
biwgc3VicGF0dGVybklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBjYXB0dXJlLCBm
YWxzZSkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+
YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFw
cGVuZChXVEZNb3ZlKHBhcmVudGhlc2VzRGlzanVuY3Rpb24pKTsKQEAgLTYxNiw3ICs2MTYsNyBA
QCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKIAogICAgIHZvaWQgYXRvbVBhcmVudGhl
dGljYWxBc3NlcnRpb25CZWdpbihib29sIGludmVydCA9IGZhbHNlKQogICAgIHsKLSAgICAgICAg
YXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlz
anVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVu
Y3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CiAg
ICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKFBhdHRlcm5U
ZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbiwgbV9wYXR0ZXJuLm1fbnVtU3VicGF0dGVy
bnMgKyAxLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBmYWxzZSwgaW52ZXJ0KSk7CiAg
ICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRl
cm5hdGl2ZSgpOwogICAgICAgICBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb24gPSBpbnZl
cnQ7CkBAIC03MDcsNyArNzA3LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAg
ICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gZGlzanVuY3Rpb24t
Pm1fYWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWZpbHRlclN0YXJ0
c1dpdGhCT0wgfHwgIWFsdGVybmF0aXZlLT5tX3N0YXJ0c1dpdGhCT0wpIHsKICAgICAgICAgICAg
ICAgICBpZiAoIW5ld0Rpc2p1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1
bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAg
ICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rp
b24+KCk7CiAgICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uLT5tX3BhcmVudCA9IGRp
c2p1bmN0aW9uLT5tX3BhcmVudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
UGF0dGVybkFsdGVybmF0aXZlKiBuZXdBbHRlcm5hdGl2ZSA9IG5ld0Rpc2p1bmN0aW9uLT5hZGRO
ZXdBbHRlcm5hdGl2ZSgpOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBZYXJyUGF0dGVybjo6
ZHVtcFBhdHRlcm4oUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5n
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGFueWNoYXJDcmVhdGUoKQogewot
ICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNz
PigpOworICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNz
PigpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2Uo
MHgwMCwgMHg3ZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBwZW5k
KENoYXJhY3RlclJhbmdlKDB4MDA4MCwgMHgxMGZmZmYpKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+
bV9jaGFyYWN0ZXJXaWR0aHMgPSBDaGFyYWN0ZXJDbGFzc1dpZHRoczo6SGFzQm90aEJNUEFuZE5v
bkJNUDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4IDBiN2Ri
MmViYThhZDUyZGVkMmI1ZjdlNjdlNTQ1YjhjMTZjOTQ1YzcuLjdlODJjODU1YTg3OGU2YzE4MGVk
NTIxZjFmN2FkNDhkOGMxZmJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJQYXR0ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uaApAQCAtMzQxLDcgKzM0MSw3IEBAIHN0cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb24gewog
ICAgIAogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWRkTmV3QWx0ZXJuYXRpdmUoKQogICAgIHsK
LSAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkFs
dGVybmF0aXZlPih0aGlzKSk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChtYWtlVW5p
cXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UGF0dGVybkFsdGVybmF0aXZlKj4obV9hbHRlcm5hdGl2ZXMubGFzdCgpLmdldCgpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdl
eF90YWJsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVz
CmluZGV4IGMxZjlmOTlkZTA5MWNlY2IyZTFkYjU1YzM4ZmEzNjAzMTFlZTM3ZjQuLjY5Y2Q4ODg2
NTc4NTRjZDU0NDVmODYzZTIyZDU1ZmZiOWM0MGVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwpAQCAtOTUsMTEgKzk1LDExIEBAIGZvciBu
YW1lLCBjbGFzc2VzIGluIHR5cGVzLml0ZW1zKCk6CiAgICAgZnVuY3Rpb24gKz0gKCJ7XG4iKQog
ICAgIGlmIGVtaXRUYWJsZXMgYW5kIGNsYXNzZXNbIlVzZVRhYmxlIl06CiAgICAgICAgIGlmICJJ
bnZlcnNlIiBpbiBjbGFzc2VzOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBj
aGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEs
IHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQorICAgICAgICAgICAgZnVuY3Rpb24g
Kz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+
KF8lc0RhdGEsIHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQogICAgICAgICBlbHNl
OgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFt
ZSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0g
bWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkK
ICAgICBlbHNlOgotICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNz
ID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCisgICAgICAgIGZ1bmN0
aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNs
YXNzPigpO1xuIikKICAgICBoYXNCTVBDaGFyYWN0ZXJzID0gRmFsc2UKICAgICBoYXNOb25CTVBD
aGFyYWN0ZXJzID0gRmFsc2UKICAgICBmb3IgKG1pbiwgbWF4KSBpbiByYW5nZXM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVy
dHlUYWJsZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmlj
b2RlUHJvcGVydHlUYWJsZXMucHkKaW5kZXggZjlmZWY0NjhkMmI1ZGRhNmFhZWVhYjBiM2ZjMDU4
Y2QzZWVjZWFjMS4uNTI2ZmI2ZTdhYzNhMjI3YTZkNDNjYmJlZmQyNzAyZDFhMGM1NGNlOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVBy
b3BlcnR5VGFibGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRl
WWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQpAQCAtNTI5LDcgKzUyOSw3IEBAIGRlZiBkdW1w
TWF0Y2hEYXRhKHNlbGYsIGZpbGUsIHZhbHVlc1BlckxpbmUsIGRhdGFMaXN0LCBmb3JtYXR0ZXIp
OgogICAgIGRlZiBkdW1wKHNlbGYsIGZpbGUsIGNvbW1hQWZ0ZXIpOgogICAgICAgICBmaWxlLndy
aXRlKCJzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiB7fSgpXG57e1xuIi5m
b3JtYXQoc2VsZi5nZXRDcmVhdGVGdW5jTmFtZSgpKSkKICAgICAgICAgZmlsZS53cml0ZSgiICAg
IC8vIE5hbWUgPSB7fSwgbnVtYmVyIG9mIGNvZGVQb2ludHM6IHt9XG4iLmZvcm1hdChzZWxmLm5h
bWUsIHNlbGYuY29kZVBvaW50Q291bnQpKQotICAgICAgICBmaWxlLndyaXRlKCIgICAgYXV0byBj
aGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KFxuIikKKyAg
ICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENo
YXJhY3RlckNsYXNzPihcbiIpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAgICAgc3RkOjppbml0
aWFsaXplcl9saXN0PFVDaGFyMzI+KCIpCiAgICAgICAgIHNlbGYuZHVtcE1hdGNoRGF0YShmaWxl
LCA4LCBzZWxmLm1hdGNoZXMsIGxhbWJkYSBmaWxlLCBtYXRjaDogKGZpbGUud3JpdGUoInswOjA9
IzR4fSIuZm9ybWF0KG1hdGNoKSkpKQogICAgICAgICBmaWxlLndyaXRlKCIpLFxuIikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcCBiL1NvdXJj
ZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcAppbmRleCBjYzcwN2RlM2ZmNGVj
MTM4Y2ZhNDZhYjRjOGUxM2FiYjY1OTNjYmExLi44Yzk3YzFhMjQxYjcyOWFmOGYzMWYzNTljN2Y1
MTc3YTYzNDA5ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJu
ZXNzVGVzdC5jcHAKKysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3Qu
Y3BwCkBAIC02MSw4ICs2MSw4IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHN0YXRpYyB2b2lk
IHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKICAgICAgICAgTG9ja1R5cGUgbG9jazsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IHN0ZDo6bWFrZV91bmlx
dWU8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQ
dHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltd
PihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50
cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkW10+KG51bVRocmVh
ZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRo
cmVhZHMpOwogICAgIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAg
Yi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggZjE1NjUwZDRj
OWM4ZmE2NzcwZjg5MTJmMDlkZmUzOTI5MTMwN2MzNC4uYmU3YWJhMzkwZWI1M2UzNTgxZTM2ZjRh
OGI5NTAwZDBlMjk5Zjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tT
cGVlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNw
cApAQCAtNzQsOSArNzQsOSBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBMb2NrVHlwZT4KICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9j
a3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRH
cm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3
b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRH
cm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFk
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICog
bnVtVGhyZWFkc1Blckdyb3VwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5n
PExvY2tUeXBlPltdPiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdp
dGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRH
cm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAgICAgIHZvbGF0aWxlIGJvb2wga2Vl
cEdvaW5nID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZl
Y3Rvci5oIGIvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCmluZGV4IDBiNTQxYjhj
NzNkMGY1OTg2NTFiZjk1ZTc2OTNiODA3Yzk5OWY3OGEuLjg4NGVkNzMyMzM3NjFhMjlmYjQ5NmYw
YWQwOTg5Njc1NDVlNzAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRW
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKQEAgLTI1NCw3
ICsyNTQsNyBAQCBjbGFzcyBDb25jdXJyZW50VmVjdG9yIGZpbmFsIHsKICAgICB2b2lkIGFsbG9j
YXRlU2VnbWVudCgpCiAgICAgewogICAgICAgICBtX3NlZ21lbnRzLmdyb3cobV9udW1TZWdtZW50
cyArIDEpOwotICAgICAgICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNlZ21lbnQ+KCk7CisgICAgICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9
IG1ha2VVbmlxdWU8U2VnbWVudD4oKTsKICAgICB9CiAKICAgICBzaXplX3QgbV9zaXplIHsgMCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAppbmRleCA4M2MyMDc1
MWY4NWY0ZTRkMjAxNTYxNDQxY2E4MzE0MWNiNWMzN2ZmLi5jNjNjMDU1YTBhMDM0MWRmNmE1YWYy
NzBhNGFjY2I4ZDU3ZDc4NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVh
ZFRhc2tIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5k
bGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnRh
c2tSdW5Mb29wKCkKIAogICAgIHdoaWxlICghbV90YXNrUXVldWUuaXNLaWxsZWQoKSkgewogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRv
ZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9y
UnVuTG9vcDo6VXNlKSA/IHN0ZDo6bWFrZV91bmlxdWU8QXV0b2RyYWluZWRQb29sPigpIDogbnVs
bHB0cjsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9k
cmFpbmVkUG9vbCA9IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JS
dW5Mb29wOjpVc2UpID8gbWFrZVVuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOwog
CiAgICAgICAgICAgICBtX3Rhc2tRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBlcmZvcm1UYXNrKCk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1Nv
dXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCBlZmVmYjNhMzEzM2U4M2Y2NDMzNmZkMmVj
MmRhNTJhNTQ4MzJlNjIxLi45NWI2NzU5NzJkMzEwZTNkZGJkNDEzZDRhOGY4ZDEyODhmMjBmYWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRmFzdE1hbGxvYy5oCkBAIC0zMDEsOSArMzAxLDExIEBAIHVzaW5nIFdURjo6ZmFzdEFs
aWduZWRGcmVlOwogI2RlZmluZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBcCiBwdWJsaWM6IFwK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFzdEFs
bG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0Zv
cmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCiAKICNkZWZpbmUgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEIFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVk
ZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVU
b0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNw
cAppbmRleCAzZTI1M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFlZmM3Y2E3OWI2NGVhLi43MDc0YzAz
YWJhZjhmY2YzOTc3ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0
cmVhbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVh
bT4gRmlsZVByaW50U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb24KICAgICBp
ZiAoIWZpbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
aWxlUHJpbnRTdHJlYW0+KGZpbGUpOwogfQogCiB2b2lkIEZpbGVQcmludFN0cmVhbTo6dnByaW50
Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmluZGV4IDA1
ZTM2OTc4MjViYzNkMzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4M2UuLjBiNzk1ODY3NDgwZmQwMzIy
NDEyNDU0ZTdkMGFmODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtNjcsMTEgKzY3LDExIEBA
IGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENh
bGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9p
bnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVu
Y3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBw
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUs
IE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFi
bGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBl
LCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5
cGU+CiAgICAgRnVuY3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0gICAgICAgIDogbV9jYWxsYWJsZVdy
YXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5
cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdy
YXBwZXIobWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91
dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CiAKICAgICBPdXQgb3BlcmF0b3IoKShJbi4uLiBp
bikgY29uc3QKICAgICB7CkBAIC04NCwxNCArODQsMTQgQEAgY2xhc3MgRnVuY3Rpb248T3V0KElu
Li4uKT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFi
bGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFi
bGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJs
ZVR5cGUmJiBjYWxsYWJsZSkKICAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwg
SW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0g
bWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6
aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0
eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oRnVuY3Rpb25UeXBl
IGYpCiAgICAgewotICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92
ZShmKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNh
bGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAzYjFlOTUzMDNk
ZTU0MDUxNDNmYjU2M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQwNzdmODRmMDJhMWZhMWMxYmUwMzRh
ODZlYjM1MGQ2ZDdmNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNTg4LDEwICs1ODgsMTAgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKLSAgICAgICAgLCBtX211
dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlx
dWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQot
ICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyAgICAgICAgLCBt
X3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTMz
NCwxMCArMTMzNCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3Vu
dCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9y
cyhudWxscHRyKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQor
ICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlmCiAjaWYgRFVNUF9I
QVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5p
cXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVl
PFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIHVuc2lnbmVk
IG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXplKCk7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYg
b3RoZXIpCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0
b3JzKG51bGxwdHIpCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkp
CisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICAgICB7CiAg
ICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDllODcyMGY2ZDlhNzk4MGI5NWU1YjEzYzVlNjU1YzM4
OTQ5MzA0YjUuLjUzNzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUwZDZhMThjNWQ5ZmVjMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25p
dG9yKGJvb2wgdXNlKQogICAgIH0KIAogICAgIGlmICh1c2UpIHsKLSAgICAgICAgbV9tZWFzdXJl
bWVudFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG1h
a2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmly
ZWQpOwogICAgICAgICBtX21lYXN1cmVtZW50VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3MpOwog
ICAgIH0gZWxzZQogICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRM
aWJFeHRyYXMuaAppbmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlmMTljM2MxZmMxZmRjNTdhYjRkNGFi
Li5kZWY4MzQwZTNjOGFjYzg1ODZkYTRmMDBiYjhlOWRjNTZlMDEzZWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJF
eHRyYXMuaApAQCAtNTY1LDYgKzU2NSwyNCBAQCBjb25zdGV4cHIgc2l6ZV90IGNseih1aW50MzJf
dCB2YWx1ZSwgWmVyb1N0YXR1cyBtaWdodEJlWmVybyA9IFplcm9TdGF0dXM6Ok1heUJlWgogCiB9
IC8vIG5hbWVzcGFjZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNzIFQs
IGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWUo
QXJncyYmLi4uIGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5h
bWUgVDo6X19mYXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lOTElORSBkZWNsdHlwZShhdXRv
KSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKK3sKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0
ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCiAKIHVzaW5nIFdURjo6S0I7
CkBAIC01ODUsMyArNjAzLDUgQEAgdXNpbmcgV1RGOjptZXJnZURlZHVwbGljYXRlZFNvcnRlZDsK
IHVzaW5nIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjsKIHVzaW5nIFdURjo6c2FmZUNhc3Q7CiB1
c2luZyBXVEY6OnRyeUJpbmFyeVNlYXJjaDsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZTsKK3VzaW5n
IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5o
CmluZGV4IDI2YmJjOGZkNjdhNDkzNDYzMjIxZDYxOTYxOGViN2M2NDY4NjQwMzAuLmNhMzNmODY3
ZDM4YjU3NTkyMDE0MWQ1MjNjMzA3YWFlN2M4MjBiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1N0cmVhbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCkBA
IC02MCw3ICs2MCw3IEBAIGNsYXNzIFN0cmVhbUJ1ZmZlciB7CiAgICAgICAgIG1fc2l6ZSArPSBz
aXplOwogICAgICAgICB3aGlsZSAoc2l6ZSkgewogICAgICAgICAgICAgaWYgKCFtX2J1ZmZlci5z
aXplKCkgfHwgbV9idWZmZXIubGFzdCgpLT5zaXplKCkgPT0gQmxvY2tTaXplKQotICAgICAgICAg
ICAgICAgIG1fYnVmZmVyLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigpKTsKKyAgICAg
ICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQobWFrZVVuaXF1ZTxCbG9jaz4oKSk7CiAgICAgICAg
ICAgICBzaXplX3QgYXBwZW5kU2l6ZSA9IHN0ZDo6bWluKEJsb2NrU2l6ZSAtIG1fYnVmZmVyLmxh
c3QoKS0+c2l6ZSgpLCBzaXplKTsKICAgICAgICAgICAgIG1fYnVmZmVyLmxhc3QoKS0+YXBwZW5k
KGRhdGEsIGFwcGVuZFNpemUpOwogICAgICAgICAgICAgZGF0YSArPSBhcHBlbmRTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9Vbmlx
dWVSZWYuaAppbmRleCA3M2U5ZGZlYzA2ZmQ3ODdmM2IwNmIzZGM5ZGE2NWE1NTA0ZDFjMDI5Li42
NTkxMjUxYjg2MjdkZjM2Y2YyZWI5Zjc0NzkzZWY0ODljYTFlOTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApA
QCAtMzMsMTEgKzMzLDE4IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Y2xhc3MgVW5pcXVlUmVmOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgot
VW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCitVbmlxdWVSZWY8VD4g
bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCiB7CiAg
ICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CitVbmlxdWVSZWY8
VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0ZWRDbGFzcywgaW50Pjo6dmFsdWUp
OworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxUPihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xh
c3MgVW5pcXVlUmVmIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzcwLDcgQEAgY2xhc3MgVW5pcXVlUmVm
IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5pcXVlUHRyKCkgeyByZXR1cm4gV1RG
TW92ZShtX3JlZik7IH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4u
LiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1h
a2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAogICAgIFVuaXF1ZVJlZihUJiBv
dGhlcikKQEAgLTc5LDMgKzg2LDQgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAogdXNpbmcgV1RGOjpV
bmlxdWVSZWY7CiB1c2luZyBXVEY6Om1ha2VVbmlxdWVSZWY7Cit1c2luZyBXVEY6Om1ha2VVbmlx
dWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Z2xpYi9SdW5Mb29wR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNw
cAppbmRleCA1ZTViYThhYmViZGJkNDliYmI4MzdkZDRjNGZkNjliZDZmZmMzNjFmLi5mYjIxMWQw
YTI5NjFkZmMxNmFhNmUyMWEyMWE5NzRkZmYxNTI2OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxv
b3BHTGliLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRl
cihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgZ19z
b3VyY2Vfc2V0X25hbWUoc291cmNlLmdldCgpLCAiW1dlYktpdF0gUnVuTG9vcCBkaXNwYXRjaEFm
dGVyIik7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUoc291cmNlLmdldCgpLCBnX2dldF9t
b25vdG9uaWNfdGltZSgpICsgZHVyYXRpb24ubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8RGlzcGF0Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBtYWtlVW5p
cXVlPERpc3BhdGNoQWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZ19zb3Vy
Y2Vfc2V0X2NhbGxiYWNrKHNvdXJjZS5nZXQoKSwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdi
b29sZWFuIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBj
b250ZXh0KHN0YXRpY19jYXN0PERpc3BhdGNoQWZ0ZXJDb250ZXh0Kj4odXNlckRhdGEpKTsKICAg
ICAgICAgY29udGV4dC0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmlu
ZGV4IGRjYmEwNjA4MmM1ZjY2ZTMxOWExNWVlNTk3ZmM2NDk3NjZiMDVlNmMuLjViZjRlNmQwMWRl
ODQzZWQyODc4ODNlYTNhMDNlODQ5NDkzYmVjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3Rl
cnM6Okl0ZXJhdG9yOjpJbXBsIHsKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6
Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25l
ZCBpbmRleCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcs
IHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0
cmluZ1ZpZXcpKSwgaW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8SW1wbD4oc3RyaW5n
Vmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBmZGI4Y2UyOTJkNzM4ZGE0MjAzOGFhOTY1YWYz
YWNhMTc4YTgwY2ViLi44ZGM3NmZhMmU1OWVhNjdlMDIxNzM4YzMxMWEzNTc3ZjRkMzZlNjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC05MSw3
ICs5MSw3IEBAIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9w
ZXJ0eUludmFsaWRVUkwoY29uc3QgU3RyaW5nJiBwcm9wCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZl
c3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIGlmIChtX2NvbnNvbGVDb250ZXh0KQotICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KEpTQzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFu
aWZlc3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7Cisg
ICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNlOjpPdGhlciwgSlNDOjpN
ZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygi
UGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZlc3RVUkwuc3RyaW5nKCks
ICI6ICJfcywgbWVzc2FnZSkpKTsKIH0KIAogVVJMIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6
OnBhcnNlU3RhcnRVUkwoY29uc3QgSlNPTjo6T2JqZWN0JiBtYW5pZmVzdCwgY29uc3QgVVJMJiBk
b2N1bWVudFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05h
dmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0
b3JCZWFjb24uY3BwCmluZGV4IDliZmE1Zjk0OTk0YjA1NDUwNmI4MjZhMzE0YjgyNTgyN2VhNDFh
ZGIuLjdlNGY3OTQ3MWUyYzU5ZmU3MWMxNDgxMzJmNGI1NTFkOGZmYzc5MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBOYXZpZ2F0b3JCZWFjb24qIE5hdmlnYXRvckJlYWNvbjo6ZnJvbShOYXZpZ2F0
b3ImIG5hdmlnYXRvcikKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yQmVhY29uKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmlnYXRv
cik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yQmVh
Y29uPihuYXZpZ2F0b3IpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQo
KTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1v
dmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAppbmRleCA1ZWQxZjVjY2E2NDFlYjA0ZWMwZTBhMGNl
MDZjODM3MjQ1NjhhMmZmLi42MTUzOTQzMGRmYjk2MTZmZDI4OGZlZDkyY2I5NDRmZjQ0NmIwMTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIERPTVdpbmRvd0NhY2hlcyogRE9NV2luZG93Q2FjaGVzOjpm
cm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxET01XaW5kb3dDYWNoZXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5k
b3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd0Nh
Y2hlcz4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7
CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3
U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKaW5kZXggMDY1NmJlZjBiMTcxOGUz
M2RiYzdmYTBlZTYwYzU3ZDQ4ZTM4ZDRlOC4uNTExOGE0ODg1MGYyNDJkMDQ0ZDNiNDBmZjBlM2Iy
M2JiOTZlMjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKFdvcmtlckdsb2Jh
bFNjb3BlJiBzY29wZSkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29y
a2VyR2xvYmFsU2NvcGVDYWNoZXMqPihTdXBwbGVtZW50PFdvcmtlckdsb2JhbFNjb3BlPjo6ZnJv
bSgmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlcz4oc2NvcGUpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5p
cXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7CiAgICAgICAgIHN1cHBsZW1lbnQg
PSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVt
ZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRl
bnRpYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
TmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCmluZGV4IDcxZjQzOGNmNzg2Yzc2ZDdiNTg3MjE1NTk3
NjY4YjYyMzYxYjU5OTMuLjExODFiZDk4NWEyMmJhNDkzZjgzNjMxZDdlNDFmZWU4NzliNTZiM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
TmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCkBAIC02Myw3ICs2Myw3
IEBAIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbShOYXZp
Z2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JDcmVkZW50aWFscyogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckNyZWRlbnRpYWxzKj4oU3VwcGxlbWVudDxOYXZpZ2F0
b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxl
bWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5h
dmlnYXRvckNyZWRlbnRpYWxzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPE5hdmlnYXRvckNyZWRlbnRpYWxzPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAKaW5kZXggYjZmZDY4ZDY3MmVkZTM4Nzc4YzE1YzZmZWFhZjQ2YjQ1NWU1YTFjZC4uNzVlZGI2
YTkzNjM4ODBlNTg3YzM1NzU2YjE0ZGVjOWY5YjQ1ZTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CkBAIC0xMzMsNyArMTMzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICAgICAgICAgYXV0
byBzeXN0ZW1JRCA9IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGVla1N5
c3RlbUlEKHZpZXcsIG9mZnNldCk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lO
SVREQVRBKQogICAgICAgICBpZiAoc3lzdGVtSUQgPT0gSVNPRmFpclBsYXlTdHJlYW1pbmdQc3No
Qm94OjpmYWlyUGxheVN5c3RlbUlEKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IHN0
ZDo6bWFrZV91bmlxdWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOworICAgICAgICAg
ICAgYXV0byBmcHNQc3NoID0gbWFrZVVuaXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+
KCk7CiAgICAgICAgICAgICBpZiAoIWZwc1Bzc2gtPnJlYWQodmlldywgb2Zmc2V0KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgcHNzaEJveGVzLmFw
cGVuZChXVEZNb3ZlKGZwc1Bzc2gpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBPcHRpb25hbDxWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+
PiBJbml0RGF0YQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHN5c3RlbUlEKTsKICNlbmRp
ZgotICAgICAgICBhdXRvIHBzc2hCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKKyAgICAgICAgYXV0byBwc3NoQm94ID0gbWFrZVVu
aXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7CiAgICAgICAgIGlm
ICghcHNzaEJveC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggODI2Mjg5M2ZlMGFmOTk5MTRlZDM5
ZTk2MGNmMTBhNzUzNDA3MDViNi4uODM3ZGYxMjNhZTU5NmYzNTM3YzkxNTI3MDNlM2QyNzFiMzQ2
ZWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCkBAIC02MSwxNSArNjEsMTUgQEAgc3RydWN0IENE
TUZhY3Rvcnkgewogc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGluc3RhbGxlZENETUZhY3Rv
cmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0
b3I8Q0RNRmFjdG9yeSo+IHsKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBj
ZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5Pihj
ZG0pOyB9LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1
cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCiAgICAgICAg
ICAgICBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtLCBMZWdhY3lD
RE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAgICAg
ICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMuIGh0dHA6Ly93ZWJraXQu
b3JnL2IvMTA5MzE4LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMyMAotICAgICAgICBuZXcgQ0RN
RmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Q
cml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExl
Z2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXllcj4o
Y2RtKTsgfSwKICAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlT
eXN0ZW0sIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlw
ZSksCiAKICNpZiAoSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKSB8fCBIQVZFKEFWU1RSRUFNU0VT
U0lPTikpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtd
KExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2Fj
eUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+KGNkbSk7IH0sCiAgICAgICAgICAgICBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpz
dXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNL
ZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAjZW5kaWYKICAgICB9KTsKQEAgLTEwNyw3ICsxMDcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNPiBMZWdhY3lDRE06OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVn
YWN5Q0RNPihrZXlTeXN0ZW0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeUNETT4oa2V5
U3lzdGVtKTsKIH0KIAogTGVnYWN5Q0RNOjpMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETS5oCmluZGV4IDQ1OGVjNTNiNDMzN2IxNzEwNTU2ZjhhMTdiNGVmMDFl
ZmNlMTU2NGUuLmZiNWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1ZmUwYTVlODk2NDA2YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETS5oCkBAIC01MCw3ICs1MCw4IEBAIGNsYXNzIExlZ2FjeUNETUNsaWVudCB7CiAg
ICAgdmlydHVhbCBSZWZQdHI8TWVkaWFQbGF5ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2Fj
eUNETSopIGNvbnN0ID0gMDsKIH07CiAKLWNsYXNzIExlZ2FjeUNETSB7CitjbGFzcyBMZWdhY3lD
RE0gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IExlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVByaXZhdGUuaAppbmRleCAwYThkNTRlNWM1NjVmMzQ1MDg1NjJjNWE4YzFlMDAzNWFm
MTRhNzRmLi5mMjQ5NzA3MmU3ODU3NjBjNTllMjMwMzkzNGZiN2Y5Y2M0NzcyZGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIExlZ2FjeUNE
TVNlc3Npb247CiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OwogCiBjbGFzcyBDRE1Qcml2
YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBDRE1Qcml2YXRlSW50ZXJmYWNlKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkNETVByaXZh
dGVJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5LmNwcAppbmRleCBjOTMxNmRmZDhhYmI0MDU0OTJmNTU1ZWIzZDFiM2QwOTE3
Y2VmZjUwLi4zYThjMDBmNTIzMWY1MmE2ZTg5ZDE4M2QxNTExYzNhYzg3NzNhMWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE1Qcml2YXRlQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgYm9vbCBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lv
bkNsZWFyS2V5PihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25DbGVh
cktleT4oY2xpZW50KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuaAppbmRleCAyZjdiMDM1MzllZjhlYTQ3NGUyMzZkMDVkOWUxN2ZlYzQ4NGU2Mjdl
Li5iYzc3N2YwY2JjOGNlN2I4OWU5NDNiOGE2M2U0ZTZlODI4OWIzOGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNz
aW9uQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaApAQCAtMzMsNyArMzMsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENETVNlc3Npb25DbGVhcktleSA6IHB1YmxpYyBM
ZWdhY3lDRE1TZXNzaW9uIHsKK2NsYXNzIENETVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1Ymxp
YyBMZWdhY3lDRE1TZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAg
IHZpcnR1YWwgfkNETVNlc3Npb25DbGVhcktleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBhZGRjNTQ4OTZiOGE0NDM4Y2ZiZmQw
NjU4MGFkYmM4NjBhODFmODY0Li5kYjYzOTBlN2Y5OTI1OTc3Yjg3Y2EwMDllZGFiZDUxY2RiNjY3
MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKGNv
bnN0IEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikKICAgICB9CiAKICAg
ICBtX2Jsb2JMb2FkZXIuZW1wbGFjZSgqdGhpcyk7Ci0gICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1lcik7
CisgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVyPigqbV9i
bG9iTG9hZGVyLCBjb25zdW1lcik7CiAKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+c3RhcnQo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CiAgICAgaWYgKCFtX2Jsb2JMb2FkZXIt
PmxvYWRlci0+aXNTdGFydGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGNkMzQ1ZWI5ZWMzNDBjMzZlMGYwYTZlZWQ4MmRkOTg4
YjRmOTdkMzkuLjk0MDEzY2Y0ZWE2NTIzOGQ4M2I5YjRjODFkYjdkMTgxNjUzMjQ3MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMjQz
LDcgKzI0Myw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0CiAKICAgICByZXNwb25zZS0+YWRk
QWJvcnRTdGVwcyhyZXF1ZXN0LnNpZ25hbCgpKTsKIAotICAgIHJlc3BvbnNlLT5tX2JvZHlMb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEJvZHlMb2FkZXI+KHJlc3BvbnNlLmdldCgpLCBXVEZNb3Zl
KHJlc3BvbnNlQ2FsbGJhY2spKTsKKyAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gbWFrZVVu
aXF1ZTxCb2R5TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNr
KSk7CiAgICAgaWYgKCFyZXNwb25zZS0+bV9ib2R5TG9hZGVyLT5zdGFydChjb250ZXh0LCByZXF1
ZXN0KSkKICAgICAgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG51bGxwdHI7CiB9CkBAIC0z
ODIsNyArMzgyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogYm9vbCBGZXRjaFJlc3BvbnNl
OjpCb2R5TG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigpKTsK
KyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlzLCAmbV9yZXNwb25z
ZS5tX2JvZHktPmNvbnN1bWVyKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChjb250ZXh0LCByZXF1
ZXN0KTsKICAgICByZXR1cm4gbV9sb2FkZXItPmlzU3RhcnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCmluZGV4IDYx
MDIwODk5Y2JjNGE3ZTQzM2IxNTFkY2NhZWJmZTkwNzY0ZDNlMmQuLjg1MGQyMmRlMjg1YmIzMzVk
MjJlOGMyZTI1M2I3YWI2ZTBjNjAzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdh
dG9yR2FtZXBhZCogTmF2aWdhdG9yR2FtZXBhZDo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JHYW1lcGFkKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdh
dG9yR2FtZXBhZCo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRl
VG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYjA5ZmMzNDMzYmJmYmI3MjhmMzE1
YzE1MzNhNmYyYzllNGZjMDA3MS4uY2Q4MDcwYjIwN2RiOGEzNDQwMjZjZmY2MTA1Yjg1ZWUxOWJj
NTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGNvbnN0
IGNoYXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogdm9pZCBwcm92
aWRlR2VvbG9jYXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50KQog
ewogICAgIEFTU0VSVChwYWdlKTsKLSAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFn
ZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5p
cXVlPEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOworICAgIFN1cHBsZW1l
bnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1l
bnROYW1lKCksIG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Db250cm9sbGVyPigqcGFnZSwgY2xpZW50
KSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3Bw
CmluZGV4IGIzNGY0OWE2NzFkODVmNTE0MmI4YmFmMGY1MmJhOTkxYWM0MzU5ZGMuLjM1ZGZiZjhm
M2YyNTY5YzAxMzUzNTY2MzAwZjViNzgzN2RlMjhmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2Nh
dGlvbjo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JHZW9sb2Nh
dGlvbiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdlb2xvY2F0aW9uKj4oU3Vw
cGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsK
ICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHZW9sb2NhdGlvbj4obmF2aWdhdG9yKTsKKyAgICAgICAg
YXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHZW9sb2NhdGlvbj4obmF2
aWdhdG9yKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAg
ICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1
cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBjNzIwM2E5
YTg2NDA5NzA1MGQzZGMwMDc5MmY3YTZiNTgxZmFhMjVlLi41ZTlkOTc5NjZiZmRlNThlNjYwOTlh
NTA5ZTYxOGI4NGMxOGQwNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgRE9NV2luZG93SW5kZXhlZERhdGFiYXNlKiBET01XaW5kb3dJbmRleGVkRGF0YWJh
c2U6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93SW5kZXhlZERhdGFi
YXNlKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlKj4o
U3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93KTsKKyAgICAgICAg
YXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dJbmRleGVkRGF0YWJhc2U+
KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAg
ICAgICBwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZjQzMDkwYzRkY2MzZWRlNWUyN2QxYWE0NDM4NDQ0
N2Q4NDljNjQwYi4uOWE3ODEyNzg0NjNlZDBhNGEwYWRkZDNmN2RiMGM1NjU2OTYyYjljZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcApAQCAtNTE3LDcgKzUxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9i
amVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKICAgICBpZiAoIWluZm8p
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiRmFpbGVkIHRvIGV4
ZWN1dGUgJ2luZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgc3BlY2lmaWVkIGluZGV4IHdh
cyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBhdXRvIGluZGV4ID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBh
dXRvIGluZGV4ID0gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgKmluZm8sICp0aGlzKTsKIAogICAgIFJlZjxJREJJbmRleD4gcmVmZXJlbmNlZEluZGV4IHsg
KmluZGV4IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBmYTJjZDdlYWQwOWI2MDU1MjViOGNiNDQxZWY3MDAxZDgz
MzUwMTAwLi40MjI0M2ZiYTU3MzEyOTU0MTg4OTRhMzIwNDNlODllMGIyYzFhNWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CkBAIC0xNzksNyArMTc5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9iamVjdFN0b3JlPj4gSURC
VHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWMKICAgICBpZiAoIWlu
Zm8gfHwgKCFmb3VuZCAmJiAhaXNWZXJzaW9uQ2hhbmdlKCkpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdvYmplY3RTdG9yZScg
b24gJ0lEQlRyYW5zYWN0aW9uJzogVGhlIHNwZWNpZmllZCBvYmplY3Qgc3RvcmUgd2FzIG5vdCBm
b3VuZC4iX3MgfTsKIAotICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
Qk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwor
ICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJhd09iamVjdFN0
b3JlID0gb2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNl
dChvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUob2JqZWN0U3RvcmUpKTsKIApAQCAtNjY3LDcgKzY2
Nyw3IEBAIFJlZjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYKIAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
bV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsKIAotICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBpbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9yZSA9IG1ha2VVbmlxdWU8SURCT2Jq
ZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0aGlzKTsKICAgICBh
dXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwogICAgIG1fcmVmZXJlbmNl
ZE9iamVjdFN0b3Jlcy5zZXQoaW5mby5uYW1lKCksIFdURk1vdmUob2JqZWN0U3RvcmUpKTsKIApA
QCAtNzU1LDcgKzc1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4gSURCVHJhbnNhY3Rp
b246OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yCiAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmNyZWF0ZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBpbmZvKTsKICAgICB9KSk7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElE
QkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7CiB9
CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9i
YWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYTQ4NTAzYjRk
MmQ4MDQyOTQ2ODRhNjVhNjVlYmQ2NGYyMzNjZDdiOS4uOWI3NTc3NDkyMWI0NjUwNmY1ODNkZTdm
ZWM0MjUwZTg1NGFjZTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
LmNwcApAQCAtNTksNyArNTksNyBAQCBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSog
V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20oV29ya2VyRwogICAgICAgICBp
ZiAoIWNvbm5lY3Rpb25Qcm94eSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2Nv
cGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblByb3h5KTsKKyAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRh
YmFzZT4oc2NvcGUsICpjb25uZWN0aW9uUHJveHkpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZzY29wZSwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcAppbmRleCA5NDhjZjc0NjYzYWU2OWM4MmRhNDQ0ZTA5MzQ3M2RkODU2ZDRk
ZTkzLi4zNzcxMWRjMTAzZGI2YzlhOWI4MTNkYmM5ZGY3OTliN2UyNmE2ZDY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRv
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZWY8SURCQ29ubmVj
dGlvblRvU2VydmVyPiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZShJREJDb25uZWN0aW9u
VG9TZXJ2ZXJEZQogCiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cihJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZSYgZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVn
YXRlKG1ha2VXZWFrUHRyKGRlbGVnYXRlKSkKLSAgICAsIG1fcHJveHkoc3RkOjptYWtlX3VuaXF1
ZTxJREJDb25uZWN0aW9uUHJveHk+KCp0aGlzKSkKKyAgICAsIG1fcHJveHkobWFrZVVuaXF1ZTxJ
REJDb25uZWN0aW9uUHJveHk+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJh
dGlvbi5jcHAKaW5kZXggMjc1M2ZkMGMyNDU3YjljMDlkOWQ4OWU0Zjc2MmI0NzlmOGI0NDBiMS4u
OGUxZGUwNmQ3MWU4ZjBiMjIzZDY4NmU1ZTFhOGEyMjA5Yjc0Mzg0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFRyYW5zYWN0aW9uT3BlcmF0aW9u
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQlJl
cXVlCiAgICAgaWYgKG1faW5kZXhJZGVudGlmaWVyKQogICAgICAgICBtX2luZGV4UmVjb3JkVHlw
ZSA9IHJlcXVlc3QucmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCk7CiAgICAgaWYgKGF1dG8qIGN1
cnNvciA9IHJlcXVlc3QucGVuZGluZ0N1cnNvcigpKQotICAgICAgICBtX2N1cnNvcklkZW50aWZp
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY3Vyc29yLT5pbmZv
KCkuaWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CiAK
ICAgICBtX2lkYlJlcXVlc3QgPSAmcmVxdWVzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggODliZmU3OTNk
N2RiYjVjZTczMTE0NzllZjY5NTBiOWNmZDE3Y2UwOC4uM2JiNmRhY2E2OGQ3YzBmNTNhZDg3ZTlk
MWRmMThhM2ZmZTRhOTFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBVbmlxdWVJ
REJEYXRhYmFzZSYgSURCU2VydmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0
IElEQkRhdGFiYXNlSWRlbgogCiAgICAgYXV0byB1bmlxdWVJREJEYXRhYmFzZSA9IG1fdW5pcXVl
SURCRGF0YWJhc2VNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogICAgIGlmICh1bmlxdWVJ
REJEYXRhYmFzZS5pc05ld0VudHJ5KQotICAgICAgICB1bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXF1ZUlEQkRhdGFiYXNlPigqdGhpcywgaWRl
bnRpZmllcik7CisgICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZSA9IG1h
a2VVbmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKIAogICAgIHJl
dHVybiAqdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlOwogfQpAQCAtMTM1LDcgKzEz
NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNlcnZlcjo6Y3JlYXRl
QmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlKGlkZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRl
SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVj
dG9yeVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIsIG1fcGVyT3JpZ2lu
UXVvdGEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9z
ZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdT
dG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyLCBtX3Blck9yaWdpblF1b3RhKTsKIH0KIAogdm9pZCBJ
REJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
CkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBJREJTZXJ2ZXI6OlF1b3RhVXNlcjo6aW5pdGlhbGl6
ZVNwYWNlVXNlZCh1aW50NjRfdCBzcGFjZVVzZWQpCiBJREJTZXJ2ZXI6OlF1b3RhVXNlciYgSURC
U2VydmVyOjplbnN1cmVRdW90YVVzZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAg
ICAgcmV0dXJuICptX3F1b3RhVXNlcnMuZW5zdXJlKG9yaWdpbiwgW3RoaXMsICZvcmlnaW5dIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VyPigqdGhpcywgbV9xdW90
YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9yaWdpbiB7IG9yaWdp
biB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGFVc2VyPigqdGhpcywgbV9xdW90
YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9yaWdpbiB7IG9yaWdp
biB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAK
aW5kZXggNjk4M2M5ZDdlYWZmNTYxNjcyMDRkOTUyZjFmMjI2N2JiNDBjYTRiYS4uOGQ5MjFkOGVm
ZTZiYTg0MGEzMGQ2MWRmZGM2YTcyMWU4MjhhNDNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgSURCRXJyb3IgSW5kZXhWYWx1ZVN0b3JlOjphZGRSZWNvcmQoY29u
c3QgSURCS2V5RGF0YSYgaW5kZXhLZXksIGNvbnN0IElEQktleURhdGEKICAgICAgICAgcmV0dXJu
IElEQkVycm9yKENvbnN0cmFpbnRFcnJvcik7CiAKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGV4
VmFsdWVFbnRyeT4obV91bmlxdWUpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
bWFrZVVuaXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKIAogICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUtPmFkZEtleSh2YWx1ZUtleSk7CiAgICAgbV9vcmRlcmVkS2V5cy5pbnNlcnQo
aW5kZXhLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5j
cHAKaW5kZXggNDdjYzQyZmQyNmQ2NDczYzY0MTkyN2U5OTJkNGVjNmU4ZDdiZjhlZS4uNWU3MTQ0
OTc4NGEwZGEwNzY3Nzg5YThkZWRjNTIyNjg5ZjRkOGRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBJREJTZXJ2ZXIgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24+IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUoTWVtb3J5SURCQmFj
a2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsKIH0KIAogTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1l
bW9yeUlEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mIGluZm8pCkBAIC01Miw3ICs1Miw3IEBAIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihNZW1vcnlJREJCYWNraW5nU3RvCiAgICAg
ICAgIElEQkRhdGFiYXNlSW5mbyBpbmZvOwogICAgICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5n
U3RvcmUuZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oaW5mbyk7CiAgICAgICAgIGlmIChlcnJv
ci5pc051bGwoKSkKLSAgICAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIH0K
IH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b246OnJlY29yZFZhbHVlQ2hhbmdlZChNZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0CiAKICAgICBh
dXRvIG9yaWdpbmFsQWRkUmVzdWx0ID0gbV9vcmlnaW5hbFZhbHVlcy5hZGQoJm9iamVjdFN0b3Jl
LCBudWxscHRyKTsKICAgICBpZiAob3JpZ2luYWxBZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAg
ICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxL
ZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKIAogICAgIGF1dG8qIG1hcCA9IG9yaWdpbmFs
QWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCA3ZDE0MmIwMDUwYWI2MDg4MWUzODdiZThjMTk4OTQ3YWM2ZThkZDgx
Li5jZmZlMzMzN2Y3OTQ0OGI4YzIxM2RiYmU1ZmEzNWI0ZDNhNzBmMmY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdWludDY0X3Qg
bWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCiBzdGQ6OnVuaXF1ZV9w
dHI8TWVtb3J5SURCQmFja2luZ1N0b3JlPiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOwogfQog
CiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCkBAIC02MSw3ICs2MSw3IEBAIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6fk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpID0gZGVmYXVsdDsKIElEQkVy
cm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURC
RGF0YWJhc2VJbmZvJiBpbmZvKQogewogICAgIGlmICghbV9kYXRhYmFzZUluZm8pCi0gICAgICAg
IG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRl
bnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFr
ZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7
CiAKICAgICBpbmZvID0gKm1fZGF0YWJhc2VJbmZvOwogICAgIHJldHVybiBJREJFcnJvciB7IH07
CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpzZXREYXRhYmFz
ZUluZm8oY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogICAgIC8vIEl0IGlzIG5vdCB2YWxp
ZCB0byBkaXJlY3RseSBzZXQgZGF0YWJhc2UgaW5mbyBvbiBhIGJhY2tpbmcgc3RvcmUgdGhhdCBo
YXNuJ3QgYWxyZWFkeSBzZXQgaXRzIG93biBkYXRhYmFzZSBpbmZvLgogICAgIEFTU0VSVChtX2Rh
dGFiYXNlSW5mbyk7CiAKLSAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
RGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURC
RGF0YWJhc2VJbmZvPihpbmZvKTsKIH0KIAogSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRl
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwCmluZGV4IDQ5ZGRjYTZiZDQwZDI5ZDQyZTM4Yjg1MTMxYzg5ZmRmZTdkNDc5MmQuLjg1
OTVkYmI4ZjRhN2VlM2QxOTFlMzFmYjYxMGIwNDk3NWI4NzQ2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcApA
QCAtMTk0LDcgKzE5NCw3IEBAIElEQkVycm9yIE1lbW9yeUluZGV4OjpwdXRJbmRleEtleShjb25z
dCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgY29uc3QgSW5kZXhLZXkmIGluCiAgICAgTE9HKEluZGV4
ZWREQiwgIk1lbW9yeUluZGV4Ojpwcm92aXNpb25hbFB1dEluZGV4S2V5Iik7CiAKICAgICBpZiAo
IW1fcmVjb3JkcykgewotICAgICAgICBtX3JlY29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGV4
VmFsdWVTdG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKKyAgICAgICAgbV9yZWNvcmRzID0gbWFrZVVu
aXF1ZTxJbmRleFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUoKSk7CiAgICAgICAgIG5vdGlmeUN1
cnNvcnNPZkFsbFJlY29yZHNDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC0yNTksNyArMjU5LDcgQEAg
TWVtb3J5SW5kZXhDdXJzb3IqIE1lbW9yeUluZGV4OjptYXliZU9wZW5DdXJzb3IoY29uc3QgSURC
Q3Vyc29ySW5mbyYgaW5mbykKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1lbW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0aGlzLCBpbmZvKTsK
ICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAKaW5kZXggZWQ2ZWJhOTI3ZjFmNGY2YjljMzA2OGY2YjVkODhkZTI5OTcy
NjdlYi4uNWI0NGE3Mzg3OGM5ZmRkN2ExZTA1YTk1Yjc2NTdlYmU2MzYzNTE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0yNTksOCArMjU5LDggQEAgSURCRXJyb3IgTWVtb3J5T2Jq
ZWN0U3RvcmU6OmFkZFJlY29yZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24KIAogICAgIGlmICghbV9rZXlWYWx1ZVN0b3JlKSB7CiAgICAgICAgIEFTU0VSVCghbV9v
cmRlcmVkS2V5cyk7Ci0gICAgICAgIG1fa2V5VmFsdWVTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8
S2V5VmFsdWVNYXA+KCk7Ci0gICAgICAgIG1fb3JkZXJlZEtleXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQktleURhdGFTZXQ+KCk7CisgICAgICAgIG1fa2V5VmFsdWVTdG9yZSA9IG1ha2VVbmlxdWU8
S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG1fb3JkZXJlZEtleXMgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxJREJLZXlEYXRhU2V0PigpOwogICAgIH0KIAogICAgIGF1dG8gbWFw
UmVzdWx0ID0gbV9rZXlWYWx1ZVN0b3JlLT5zZXQoa2V5RGF0YSwgdmFsdWUuZGF0YSgpKTsKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvciogTWVtb3J5T2JqZWN0U3Rv
cmU6Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJDdXJzb3JJbmZvJgogICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0
aGlzLCBpbmZvKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxNZW1v
cnlPYmplY3RTdG9yZUN1cnNvcj4oKnRoaXMsIGluZm8pOwogICAgIHJldHVybiByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IGJmYmQwOWRiYjlhNzFkM2M0MWE5ZGY2YTc3OTRlZWRlNTgxYWJkNzAuLmRhYTRhMTli
ZDgzOTZmMzgxOWU2OWRjOTk1Njc2ZTMzOWVhZGQyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC02MjQsNyArNjI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFi
YXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwK
ICAgICB9CiAKICAgICAvLyBUaGlzIGluaXRpYWwgZGF0YWJhc2UgaW5mbyBtYXRjaGVzIHRoZSBk
ZWZhdWx0IHZhbHVlcyB3ZSBqdXN0IHB1dCBpbnRvIHRoZSBtZXRhZGF0YSBkYXRhYmFzZS4KLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5k
YXRhYmFzZU5hbWUoKSwgMCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZv
PihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0Rh
dGFiYXNlSW5mbygpCkBAIC02NTksNyArNjU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFi
YXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VWZXJzaW9uKTsKKyAg
ICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFz
ZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7CiAKICAgICB7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVu
dCBzcWwoKm1fc3FsaXRlREIsICJTRUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMsIG1h
eEluZGV4SUQgRlJPTSBPYmplY3RTdG9yZUluZm87Il9zKTsKQEAgLTgyMSw3ICs4MjEsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZv
KElEQkRhdGFiYXNlSW5mbyYgaW5mbwogCiAgICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0
YWJhc2VQYXRoKCk7CiAKLSAgICBtX3NxbGl0ZURCID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVE
YXRhYmFzZT4oKTsKKyAgICBtX3NxbGl0ZURCID0gbWFrZVVuaXF1ZTxTUUxpdGVEYXRhYmFzZT4o
KTsKICAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4oZGJGaWxlbmFtZSkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJG
aWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwpAQCAtOTMx
LDExICs5MzEsMTEgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5z
YWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBlc3RhYmxpc2ggdHJhbnNhY3Rpb24g
aWRlbnRpZmllciB0aGF0IGFscmVhZHkgZXhpc3RzIl9zIH07CiAgICAgfQogCi0gICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rp
b24+KCp0aGlzLCBpbmZvKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxTUUxpdGVJREJUcmFuc2FjdGlvbj4oKnRoaXMsIGluZm8pOwogCiAgICAgYXV0byBlcnJv
ciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmJlZ2luKCptX3NxbGl0ZURCKTsKICAgICBp
ZiAoZXJyb3IuaXNOdWxsKCkgJiYgaW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpW
ZXJzaW9uY2hhbmdlKSB7Ci0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJz
aW9uQ2hhbmdlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX2RhdGFiYXNl
SW5mbyk7CisgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdl
ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX2RhdGFiYXNlSW5mbyk7CiAKICAgICAg
ICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9zcWxpdGVEQiwgIlVQREFURSBJREJEYXRhYmFzZUlu
Zm8gU0VUIHZhbHVlID0gPyB3aGVyZSBrZXkgPSAnRGF0YWJhc2VWZXJzaW9uJzsiX3MpOwogICAg
ICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKQEAgLTI2NjIsNyArMjY2Miw3IEBA
IFNRTGl0ZVN0YXRlbWVudCogU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQo
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTCiAgICAgfQogCiAgICAgaWYgKG1fc3FsaXRlREIpIHsK
LSAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0YXRlbWVudCk7
CisgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0g
bWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQpOwogICAg
ICAgICBpZiAobV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0tPnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcAppbmRleCBmODQwNWE3OThhMzY4MTBkYzU3NmFmMWU3M2JjYWY1MzEwMjM3YmFmLi5jNmIz
ZmQ5NTNhMGQ1M2FjMTU2OGUyODQ4Y2JjNzhhMTJmMTk1NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoTGltaXQg
PSA4OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6
Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURC
Q3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7CisgICAgYXV0byBjdXJzb3IgPSBt
YWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8pOwogCiAgICAgaWYg
KCFjdXJzb3ItPmVzdGFibGlzaFN0YXRlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTU5LDcgKzU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRl
SURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGkKIAogc3RkOjp1bmlxdWVf
cHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdT
dG9yZUN1cnNvcihTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IHVpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IHVpbnQ2NF90IGluZGV4SUQsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNR
TGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIHJhbmdl
KTsKKyAgICBhdXRvIGN1cnNvciA9IG1ha2VVbmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2Fj
dGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFuZ2UpOwogCiAgICAgaWYgKCFjdXJzb3It
PmVzdGFibGlzaFN0YXRlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5OSw3
ICsxOTksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNv
bnN0IFN0cmluZyYgc3FsKQogICAgIEFTU0VSVCghbV9jdXJyZW50VXBwZXJLZXkuaXNOdWxsKCkp
OwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpKTsKIAotICAg
IG1fc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fdHJhbnNh
Y3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7CisgICAgbV9zdGF0
ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV90cmFuc2FjdGlvbi0+c3FsaXRl
VHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsKIAogICAgIGlmIChtX3N0YXRlbWVudC0+
cHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBj
cmVhdGUgY3Vyc29yIHN0YXRlbWVudCAocHJlcGFyZS9pZCkgLSAnJXMnIiwgbV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CkBAIC00
NjQsNyArNDY0LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJz
b3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlBbmRWYWx1
ZSkKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBi
bG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVl
ID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEuZGF0YSgpLCBrZXlEYXRh
LnNpemUoKSwgcmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5KSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgdmFsdWUgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxl
IGFkdmFuY2luZyBpbmRleCBjdXJzb3IiKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBTUUxpdGVJREJD
dXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNv
cmQoU1FMaXRlQ3VycwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewogICAg
ICAgICAgICAgb2JqZWN0U3RvcmVTdGF0ZW1lbnQuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDAsIGtl
eURhdGEpOwotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRh
KSkpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFs
dWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkpOwogICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgLy8g
VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0byByZXRyaWV2ZSBo
YXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIG9iamVjdCBzdG9yZS4KICAgICAgICAgICAgIC8vIFNr
aXAgb3ZlciBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGE2YTNjNWZm
ZjMzODBjMjVlZjczNjFlNjg4YmVmMzZjMDYxNWZjODMuLmQyMTJkZTJiNmI4OGFmZmUwYTM1YjBm
ZDBmZDMzZmM4NjdjZWNiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcApAQCAt
NTgsNyArNTgsNyBAQCBJREJFcnJvciBTUUxpdGVJREJUcmFuc2FjdGlvbjo6YmVnaW4oU1FMaXRl
RGF0YWJhc2UmIGRhdGFiYXNlKQogewogICAgIEFTU0VSVCghbV9zcWxpdGVUcmFuc2FjdGlvbik7
CiAKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVUcmFu
c2FjdGlvbj4oZGF0YWJhc2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpS
ZWFkb25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRlVHJh
bnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6
UmVhZG9ubHkpOwogICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24tPmJlZ2luKCk7CiAKICAgICBpZiAo
bV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKaW5kZXggNzMwNDk3NDQyMGZmNDZmZGYyZWE5Njc5YjZkNWI1YjdlNjliZmRlYy4uNTdiNzdj
MDEyNThmZDVkNDlmNzA1OGZlYmJkNTg1Mzc0M2MyZGI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVs
ZXRlQmFja2luZ1N0b3JlKHVpbnQ2NF90IGRlbGV0ZWRWZXJzaW9uKQogICAgIC8vIHdlIHdvbid0
IGhhdmUgYSBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvLiBJbiB0aGF0IGNhc2UsIHdl
J2xsIG1hbnVmYWN0dXJlIG9uZSB1c2luZyB0aGUKICAgICAvLyBwYXNzZWQgaW4gZGVsZXRlZFZl
cnNpb24gYXJndW1lbnQuCiAgICAgaWYgKCFtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZv
KQotICAgICAgICBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgZGVsZXRl
ZFZlcnNpb24pOworICAgICAgICBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvID0gbWFr
ZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgZGVs
ZXRlZFZlcnNpb24pOwogCiAgICAgaWYgKG1fY3VycmVudE9wZW5EQlJlcXVlc3QpIHsKICAgICAg
ICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+bm90aWZ5RGlkRGVsZXRlRGF0YWJhc2UoKm1fbW9z
dFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8pOwpAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJbmZv
JiBpbmZvLCBjb25zdCBJCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlIik7
CiAgICAgCi0gICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CisgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CiAgICAgbV9iYWNraW5nU3RvcmVPcGVuRXJyb3IgPSBlcnJvcjsKIAogICAg
IEFTU0VSVChtX2lzT3BlbmluZ0JhY2tpbmdTdG9yZSk7CkBAIC0xNzQ5LDcgKzE3NDksNyBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlvbih1aW50NjRf
dCBjYWxsYmFja0lkZW50aWZpZXIsCiAgICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbiA9PSB0cmFuc2FjdGlvbik7CiAgICAgICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdl
RGF0YWJhc2VDb25uZWN0aW9uIHx8ICZtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+ZGF0YWJh
c2VDb25uZWN0aW9uKCkgPT0gbV92ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25uZWN0aW9uKTsKICAg
ICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNl
SW5mbygpKTsKLSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oKm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNl
SW5mbygpKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oKm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygp
KTsKICAgICB9CiAKICAgICBJREJFcnJvciByZXN1bHQgPSB0cmFuc2FjdGlvbi0+c3RhdGUoKSA9
PSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRlZCA/IHRyYW5zYWN0
aW9uLT5yZXN1bHQoKSA6IGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24uY3BwCmluZGV4IGYxN2E0ZTU1MjNmYjVmNjFiMDI2YTA5MTQ3ZjgxNDFkNWI2NDEz
OWEuLjg1NDBjYTc4NmQ1NzM1OGQ5ODJjNzNlNjQ2MGY3ZjhmMGE4ODM0NTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAg
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bihVbmlxdWVJREJEYXRhYmFzZUNvbm4KICAgICBBU1NFUlQoZGF0YWJhc2UpOwogCiAgICAgaWYg
KG1fdHJhbnNhY3Rpb25JbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25j
aGFuZ2UpCi0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmluZm8oKSk7CisgICAgICAgIG1fb3JpZ2luYWxE
YXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmluZm8o
KSk7CiAKICAgICBpZiAoYXV0byogc2VydmVyID0gbV9kYXRhYmFzZUNvbm5lY3Rpb24tPnNlcnZl
cigpKQogICAgICAgICBzZXJ2ZXItPnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3RE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1
ZXN0RGF0YS5jcHAKaW5kZXggYjEwZDg0MDk5YjI1MjhlNmY3M2MyOGIxNTA0YThhOTMyNGQwYjIx
YS4uMjE2NDE2YWZhMTFjZjI1NWQzNmRlZmIzZWZmMzZlZmFmMTk1NzEwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVz
dERhdGEuY3BwCkBAIC00MCw3ICs0MCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0
YSgpCiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByb3h5LCBjb25zdCBJREJPcGVuREJSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIDogbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9u
UHJveHkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1fcmVxdWVzdElkZW50
aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGNvbm5lY3Rpb25Q
cm94eSwgcmVxdWVzdCkpCisgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQogICAgICwgbV9k
YXRhYmFzZUlkZW50aWZpZXIocmVxdWVzdC5kYXRhYmFzZUlkZW50aWZpZXIoKSkKICAgICAsIG1f
cmVxdWVzdGVkVmVyc2lvbihyZXF1ZXN0LnZlcnNpb24oKSkKICAgICAsIG1fcmVxdWVzdFR5cGUo
cmVxdWVzdC5yZXF1ZXN0VHlwZSgpKQpAQCAtNDksOCArNDksOCBAQCBJREJSZXF1ZXN0RGF0YTo6
SURCUmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5l
Y3Rpb25QcgogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgIDogbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcihvcGVyYXRpb24udHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLmNvbm5lY3Rpb25Qcm94
eSgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlm
aWVyKHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24uaWRl
bnRpZmllcigpKSkKLSAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkpKQorICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCisgICAgLCBtX3RyYW5zYWN0aW9uSWRl
bnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpKSkKICAgICAsIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyKG9wZXJh
dGlvbi5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSkKICAgICAsIG1faW5kZXhJZGVudGlmaWVyKG9w
ZXJhdGlvbi5pbmRleElkZW50aWZpZXIoKSkKIHsKQEAgLTU4LDcgKzU4LDcgQEAgSURCUmVxdWVz
dERhdGE6OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXJhdGlvbikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSBvcGVyYXRpb24uaW5kZXhSZWNv
cmRUeXBlKCk7CiAKICAgICBpZiAob3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSkKLSAgICAg
ICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50
aWZpZXI+KCpvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jdXJzb3JJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvcGVyYXRpb24u
Y3Vyc29ySWRlbnRpZmllcigpKTsKIH0KIAogSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRh
KGNvbnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKQEAgLTcxLDExICs3MSwxMSBAQCBJREJSZXF1
ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEmIG90aGVyKQogICAg
ICwgbV9yZXF1ZXN0VHlwZShvdGhlci5tX3JlcXVlc3RUeXBlKQogewogICAgIGlmIChvdGhlci5t
X3JlcXVlc3RJZGVudGlmaWVyKQotICAgICAgICBtX3JlcXVlc3RJZGVudGlmaWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3JlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICAgICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgaWYgKG90aGVy
Lm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKQotICAgICAgICBtX3RyYW5zYWN0aW9uSWRlbnRpZmll
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV90cmFu
c2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBtX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV90cmFuc2FjdGlvbklkZW50
aWZpZXIpOwogICAgIGlmIChvdGhlci5tX2N1cnNvcklkZW50aWZpZXIpCi0gICAgICAgIG1fY3Vy
c29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigq
b3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1cnNvcklkZW50aWZp
ZXIpOwogfQogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVz
dERhdGEmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTEwMiwxMSArMTAyLDExIEBAIHZvaWQg
SURCUmVxdWVzdERhdGE6Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXF1ZXN0RGF0YSYgc291cmNl
LCBJREJSZXF1ZXN0RGF0YSYKICAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUlkZW50aWZp
ZXIgPSBzb3VyY2UubV9kYXRhYmFzZUlkZW50aWZpZXItPmlzb2xhdGVkQ29weSgpOwogCiAgICAg
aWYgKHNvdXJjZS5tX3JlcXVlc3RJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3Jl
cXVlc3RJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fcmVx
dWVzdElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJj
ZS5tX3JlcXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAoc291cmNlLm1fdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90cmFuc2FjdGlvbklkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0
aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKHNvdXJjZS5tX2N1cnNvcklkZW50aWZpZXIpCi0gICAg
ICAgIGRlc3RpbmF0aW9uLm1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcik7CisgICAgICAg
IGRlc3RpbmF0aW9uLm1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAKIHVpbnQ2NF90IElE
QlJlcXVlc3REYXRhOjpzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0
RGF0YS5oCmluZGV4IDQ1Y2ZmYWVhNjAzYTUzYjU5OTA0YzhiMTRiN2ExZGVmN2QyNWYzMTAuLjQw
OGI0ZTQ2Mjg3MzM3YjlhYzM0NGFmYmY0NjkxNTg2OGU4MGYzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5o
CkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3Qp
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpv
YmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fcmVx
dWVzdElkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgYm9v
bCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gV1RG
TW92ZShvYmplY3QpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50
aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3Qg
PSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
cmVxdWVzdC5tX2N1cnNvcklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0
YS5jcHAKaW5kZXggYTg5NDU0ZTZlNjNmNmViN2NiNTAzOGI5YzkzMmZhMjE4NjMzZWRjNi4uNGNi
ZDVkOWJkZjBhODUyM2JmN2Y1MmFjNWJjNWNiNGI3ZWQxMDQ3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNw
cApAQCAtNTcsMTUgKzU3LDE1IEBAIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3Qg
SURCUmVzdWx0RGF0YSYgb3RoZXIpCiAgICAgLCBtX3Jlc3VsdEludGVnZXIob3RoZXIubV9yZXN1
bHRJbnRlZ2VyKQogewogICAgIGlmIChvdGhlci5tX2RhdGFiYXNlSW5mbykKLSAgICAgICAgbV9k
YXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm90aGVyLm1f
ZGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oKm90aGVyLm1fZGF0YWJhc2VJbmZvKTsKICAgICBpZiAob3RoZXIubV90cmFu
c2FjdGlvbkluZm8pCi0gICAgICAgIG1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpvdGhlci5tX3RyYW5zYWN0aW9uSW5mbyk7CisgICAgICAg
IG1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpvdGhl
ci5tX3RyYW5zYWN0aW9uSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fcmVzdWx0S2V5KQotICAgICAg
ICBtX3Jlc3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKm90aGVyLm1fcmVz
dWx0S2V5KTsKKyAgICAgICAgbV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCpv
dGhlci5tX3Jlc3VsdEtleSk7CiAgICAgaWYgKG90aGVyLm1fZ2V0UmVzdWx0KQotICAgICAgICBt
X2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqb3RoZXIubV9nZXRS
ZXN1bHQpOworICAgICAgICBtX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigq
b3RoZXIubV9nZXRSZXN1bHQpOwogICAgIGlmIChvdGhlci5tX2dldEFsbFJlc3VsdCkKLSAgICAg
ICAgbV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKm90
aGVyLm1fZ2V0QWxsUmVzdWx0KTsKKyAgICAgICAgbV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVl
PElEQkdldEFsbFJlc3VsdD4oKm90aGVyLm1fZ2V0QWxsUmVzdWx0KTsKIH0KIAogSURCUmVzdWx0
RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiB0aGF0LCBJc29sYXRlZENv
cHlUYWcpCkBAIC04NywxNSArODcsMTUgQEAgdm9pZCBJREJSZXN1bHREYXRhOjppc29sYXRlZENv
cHkoY29uc3QgSURCUmVzdWx0RGF0YSYgc291cmNlLCBJREJSZXN1bHREYXRhJiBkZXMKICAgICBk
ZXN0aW5hdGlvbi5tX3Jlc3VsdEludGVnZXIgPSBzb3VyY2UubV9yZXN1bHRJbnRlZ2VyOwogCiAg
ICAgaWYgKHNvdXJjZS5tX2RhdGFiYXNlSW5mbykKLSAgICAgICAgZGVzdGluYXRpb24ubV9kYXRh
YmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2Rh
dGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0
aW5hdGlvbi5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291
cmNlLm1fZGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CiAgICAg
aWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSW5mbykKLSAgICAgICAgZGVzdGluYXRpb24ubV90cmFu
c2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJj
ZS5tX3RyYW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwor
ICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJh
bnNhY3Rpb25JbmZvPigqc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvLCBJREJUcmFuc2FjdGlvbklu
Zm86Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX3Jlc3VsdEtleSkKLSAgICAgICAg
ZGVzdGluYXRpb24ubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCpz
b3VyY2UubV9yZXN1bHRLZXksIElEQktleURhdGE6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1f
cmVzdWx0S2V5LCBJREJLZXlEYXRhOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV9n
ZXRSZXN1bHQpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2UubV9nZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNv
bGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVl
PElEQkdldFJlc3VsdD4oKnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0UmVzdWx0OjpJc29sYXRl
ZENvcHkpOwogICAgIGlmIChzb3VyY2UubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIGRlc3RpbmF0
aW9uLm1fZ2V0QWxsUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpz
b3VyY2UubV9nZXRBbGxSZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKKyAg
ICAgICAgZGVzdGluYXRpb24ubV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldEFsbFJl
c3VsdD4oKnNvdXJjZS5tX2dldEFsbFJlc3VsdCwgSURCR2V0QWxsUmVzdWx0OjpJc29sYXRlZENv
cHkpOwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmVycm9yKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJv
cikKQEAgLTExMSw3ICsxMTEsNyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5E
YXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZQogICAgIElEQlJl
c3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1bHQubV90eXBl
ID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlU3VjY2VzczsKICAgICByZXN1bHQubV9kYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCk7Ci0gICAg
cmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUlu
Zm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlvbi5kYXRhYmFzZSgpLT5p
bmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyMSwxNSArMTIxLDE1IEBAIElE
QlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyByZXF1ZXN0
SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRUeXBlOjpPcGVuRGF0
YWJhc2VVcGdyYWRlTmVlZGVkOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIgPSB0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5pZGVudGlmaWVyKCk7Ci0g
ICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCktPmluZm8oKSk7
Ci0gICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFu
c2FjdGlvbkluZm8+KHRyYW5zYWN0aW9uLmluZm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJ
bmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29u
bmVjdGlvbigpLmRhdGFiYXNlKCktPmluZm8oKSk7CisgICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25J
bmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KHRyYW5zYWN0aW9uLmluZm8oKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpk
ZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogewogICAgIElEQlJlc3Vs
dERhdGEgcmVzdWx0IHtJREJSZXN1bHRUeXBlOjpEZWxldGVEYXRhYmFzZVN1Y2Nlc3MsIHJlcXVl
c3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC0xNzEsMjEgKzE3MSwyMSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OnJl
bmFtZUluZGV4U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcQogSURCUmVz
dWx0RGF0YSBJREJSZXN1bHREYXRhOjpwdXRPckFkZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYgcmVzdWx0S2V5
KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6UHV0T3JBZGRT
dWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKKyAgICByZXN1bHQubV9yZXN1
bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KHJlc3VsdEtleSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRSZWNvcmRTdWNjZXNz
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElE
QkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURC
UmVzdWx0VHlwZTo6R2V0UmVjb3JkU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICBy
ZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVz
dWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4o
Z2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJl
c3VsdERhdGE6OmdldEFsbFJlY29yZHNTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlc3VsdCYgZ2V0QWxsUmVzdWx0
KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6R2V0QWxsUmVj
b3Jkc1N1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0QWxsUmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KGdldEFsbFJlc3VsdCk7Cisg
ICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KGdl
dEFsbFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjA0LDE0ICsyMDQsMTQg
QEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpkZWxldGVSZWNvcmRTdWNjZXNzKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmUKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6
b3BlbkN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0
RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2VzcywgcmVxdWVzdElk
ZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5p
cXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJ
REJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJlc3Vs
dCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlw
ZTo6SXRlcmF0ZUN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0
Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7
CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKaW5kZXggNzE3YjNl
MmRlNTNiMzUzZmViNmRkNzU1MDBhMGU1ZTY4Yzk0N2EzZi4uNjIwNjJhMWUyOTVmN2I1OTgxNTg5
NWI1N2JlYzAwOGU1YjE4NzZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCkBAIC0xODQsNyArMTg0LDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0
RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVj
dCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewot
ICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigp
OworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOwog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gV1RGTW92ZShv
YmplY3QpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAg
IHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIwMiw3ICsy
MDIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJ
REJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2Jq
ZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRh
PigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKTsKICAg
ICAgICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CiAgICAgICAgIGRlY29kZXIgPj4g
b3B0aW9uYWw7CiAgICAgICAgIGlmICghb3B0aW9uYWwpCkBAIC0yMTQsNyArMjE0LDcgQEAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0
YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAg
ICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PigpOworICAg
ICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PigpOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwpAQCAt
MjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3Vs
dERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlm
IChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkdldEFsbFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkdl
dEFsbFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2dldEFsbFJl
c3VsdCA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAKaW5kZXgg
OTgzYzFjMTFjOTliNDViNmNlNTQ0ZGZjYWMwMzdlNGM3MzcyOTVjMy4uNGZiOTk5MTlmNjdkNWY3
YzlhYmMxMDllMmUzMDAwY2NlNGM0NDA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvIElEQlRyYW5zYWN0aW9uSW5mbzo6
dmVyc2lvbkNoYW5nZShjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3QKICAgICBJREJUcmFuc2Fj
dGlvbkluZm8gcmVzdWx0KChJREJSZXNvdXJjZUlkZW50aWZpZXIoY29ubmVjdGlvbikpKTsKICAg
ICByZXN1bHQubV9tb2RlID0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlOwogICAg
IHJlc3VsdC5tX25ld1ZlcnNpb24gPSBuZXdWZXJzaW9uOwotICAgIHJlc3VsdC5tX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG9yaWdpbmFs
RGF0YWJhc2VJbmZvKTsKKyAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VV
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtNjcsNyArNjcsNyBAQCBJREJUcmFuc2FjdGlvbkluZm86OklEQlRy
YW5zYWN0aW9uSW5mbyhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgLCBtX29i
amVjdFN0b3JlcyhpbmZvLm1fb2JqZWN0U3RvcmVzKQogewogICAgIGlmIChpbmZvLm1fb3JpZ2lu
YWxEYXRhYmFzZUluZm8pCi0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKmluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyk7
CisgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oKmluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyk7CiB9CiAKIElEQlRyYW5zYWN0aW9u
SW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgdGhhdCwg
SXNvbGF0ZWRDb3B5VGFnKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uSW5m
bzo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgc291cmNlLCBJREJUcmFu
cwogICAgICAgICBkZXN0aW5hdGlvbi5tX29iamVjdFN0b3Jlcy51bmNoZWNrZWRBcHBlbmQob2Jq
ZWN0U3RvcmUuaXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgaWYgKHNvdXJjZS5tX29yaWdpbmFsRGF0
YWJhc2VJbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9vcmlnaW5hbERhdGFi
YXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5h
dGlvbi5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCpzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRl
ZENvcHkpOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCmlu
ZGV4IDkzMGQ4MDIzNjE4MjMyYWJmNmMwODFkZjIxMjk1OGZmNjJhNTU1ZWQuLjdiOTQ3N2U4ZWM1
NTRjOTEzZDJhNDhiZTU1OGUxNjMzZDkzZmNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgK
QEAgLTExOSw3ICsxMTksNyBAQCBib29sIElEQlRyYW5zYWN0aW9uSW5mbzo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
RGF0YWJhc2VJbmZvPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0gbWFr
ZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Km9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGluZm8ubV9vcmln
aW5hbERhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHAKaW5kZXggODdiMWFkY2Q5NjY2MjA2ZWM5NzE2NjAzNjJiNDBlNWFkN2Q4MDFkMS4uYzk2
ODk0NDRmZDIyNDAyY2VkMjExM2IzYmZhMGI5YTUyNmM2NzNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Q
cm9jZXNzSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb24KIFN0
b3JhZ2VRdW90YU1hbmFnZXIqIEluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVybiBtX3F1b3RhTWFuYWdlcnMuZW5z
dXJlKG9yaWdpbiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdl
UXVvdGFNYW5hZ2VyPihTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10odWlu
dDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFz
ZSwgYXV0byBjYWxsYmFjaykgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTdG9yYWdlUXVv
dGFNYW5hZ2VyPihTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10odWludDY0
X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwg
YXV0byBjYWxsYmFjaykgewogICAgICAgICAgICAgY2FsbGJhY2socXVvdGEgKyBjdXJyZW50U3Bh
Y2UgKyBzcGFjZUluY3JlYXNlKTsKICAgICAgICAgfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxp
dGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCBmODcyNTc0ZTg1YzI0MDg3NzJiMWQxMWEyZThiY2I2ZGQ2MGRhMjk3Li5hMzFiYWRiNTRhYzk4
MWUwZTNiYWRhZmUyMDk4NzgyOWQzZjc0MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1l
ZGlhQ2FwYWJpbGl0aWVzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllcyYgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM6OmZyb20oTmF2aWdhdG9yJiBuYXZp
Z2F0bwogewogICAgIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMqPihTdXBwbGVtZW50PE5hdmlnYXRv
cj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxl
bWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5h
dmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzPigpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0
b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggNTBkMGJiMGIxZWQ1M2E0MzI0NThkOWZiNzEz
NTcwYWUwZWNhMGQwNi4uYjk3NDM0YzRlNjI0NWQ3M2NjZjJkNjI1YTBhMWIwM2UxMjkwY2JkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUoY29uc3QgU3RyaW5nJgogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2smIFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQogewogICAgIGlmICghbV9waWNrZXJPdmVycmlk
ZSkKLSAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKKyAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9
IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKIAogICAg
IHJldHVybiAqbV9waWNrZXJPdmVycmlkZS5nZXQoKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB1
aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudChXZWJNZWRpYVNlc3Npb25NYQogCiAgICAgTE9HKE1lZGlhLCAiV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoJXAgKyAlbGx1KSIsICZjbGll
bnQsIGNvbnRleHRJZCk7CiAKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOworICAgIG1fY2xpZW50U3RhdGUu
YXBwZW5kKG1ha2VVbmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CiAKICAg
ICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0
KQogICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1cmF0aW9uVGFzayB8
IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGQ0MTdhMTIxNjkxMTEy
MTVkNTQyMjkxZTAzYzU5ZDVkNmU3ZWIzZjQuLjdjYmM2YTEzMzUxZTBkMzJjZTI1NWE5YmFkY2I5
NzQ0ZGFmNGQ0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xNzgsOSArMTc4LDkgQEAgTWVkaWFUaW1lIE1lZGlhU291
cmNlOjpjdXJyZW50VGltZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogewogICAgIGlmIChtX2J1ZmZlcmVk
ICYmIG1fYWN0aXZlU291cmNlQnVmZmVycy0+bGVuZ3RoKCkgJiYgc3RkOjphbGxfb2YobV9hY3Rp
dmVTb3VyY2VCdWZmZXJzLT5iZWdpbigpLCBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmVuZCgpLCBb
XShhdXRvJiBidWZmZXIpIHsgcmV0dXJuICFidWZmZXItPmlzQnVmZmVyZWREaXJ0eSgpOyB9KSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9i
dWZmZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
Km1fYnVmZmVyZWQpOwogCi0gICAgbV9idWZmZXJlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpOworICAgIG1fYnVmZmVyZWQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oKTsKICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6ICptX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnMpCiAgICAgICAgIHNvdXJjZUJ1ZmZlci0+c2V0QnVmZmVyZWREaXJ0eShmYWxzZSk7
CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogCiAgICAgLy8gMS4gSWYgYWN0aXZlU291
cmNlQnVmZmVycy5sZW5ndGggZXF1YWxzIDAgdGhlbiByZXR1cm4gYW4gZW1wdHkgVGltZVJhbmdl
cyBvYmplY3QgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmIChhY3RpdmVSYW5nZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyAyLiBMZXQgYWN0aXZlIHJhbmdlcyBiZSB0
aGUgcmFuZ2VzIHJldHVybmVkIGJ5IGJ1ZmZlcmVkIGZvciBlYWNoIFNvdXJjZUJ1ZmZlciBvYmpl
Y3QgaW4gYWN0aXZlU291cmNlQnVmZmVycy4KICAgICAvLyAzLiBMZXQgaGlnaGVzdCBlbmQgdGlt
ZSBiZSB0aGUgbGFyZ2VzdCByYW5nZSBlbmQgdGltZSBpbiB0aGUgYWN0aXZlIHJhbmdlcy4KQEAg
LTIwMyw3ICsyMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRp
YVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogCiAgICAgLy8gUmV0dXJuIGFuIGVtcHR5IHJhbmdl
IGlmIGFsbCByYW5nZXMgYXJlIGVtcHR5LgogICAgIGlmICghaGlnaGVzdEVuZFRpbWUpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVy
ZWQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1
ZmZlcmVkKTsKIAogICAgIC8vIDQuIExldCBpbnRlcnNlY3Rpb24gcmFuZ2VzIGVxdWFsIGEgVGlt
ZVJhbmdlIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdlIGZyb20gMCB0byBoaWdoZXN0
IGVuZCB0aW1lLgogICAgIG1fYnVmZmVyZWQtPmFkZChNZWRpYVRpbWU6Onplcm9UaW1lKCksIGhp
Z2hlc3RFbmRUaW1lKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogICAgICAgICBtX2J1
ZmZlcmVkLT5pbnRlcnNlY3RXaXRoKHNvdXJjZVJhbmdlcyk7CiAgICAgfQogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiB9CiAK
IHZvaWQgTWVkaWFTb3VyY2U6OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQpAQCAt
MzQ0LDcgKzM0NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXRMaXZlU2Vl
a2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCiAKICAgICAvLyBTZXQgbGl2ZSBz
ZWVrYWJsZSByYW5nZSB0byBiZSBhIG5ldyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IGNv
bnRhaW5pbmcgYSBzaW5nbGUgcmFuZ2UKICAgICAvLyB3aG9zZSBzdGFydCBwb3NpdGlvbiBpcyBz
dGFydCBhbmQgZW5kIHBvc2l0aW9uIGlzIGVuZC4KLSAgICBtX2xpdmVTZWVrYWJsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3Vi
bGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7CisgICAgbV9saXZl
U2Vla2FibGUgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCkpOwog
CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcAppbmRleCBlNDE4Mjc4
MzhkNjJjYTM4ZmMzYmYzYmU3OGY4ZjRhYThhZTUyNTk2Li43YjM1OGY1ZTBkZTQyZmIyMjY4ZDM2
OTAzZTU4ZGI1ZWI3OGU5MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9t
KE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogc3Vw
cGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlhRGV2aWNlcyo+KFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAo
IXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvck1lZGlhRGV2aWNlcz4o
bmF2aWdhdG9yLT53aW5kb3coKSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCA4
ZDdlNjNjYzYwNmQ2ZGExOWZiZGIxMmRlNTRmYjg1NWZkZjYyYzk5Li4xNGRmMTE2MWRhZTY4Y2M0
NmNiNDllYWFlMjFmNWVmOTg5ZTJhY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgVXNlck1lZGlhQ29udHJvbGxlcjo6flVzZXJNZWRpYUNvbnRyb2xsZXIoKQogCiB2
b2lkIHByb3ZpZGVVc2VyTWVkaWFUbyhQYWdlKiBwYWdlLCBVc2VyTWVkaWFDbGllbnQqIGNsaWVu
dCkKIHsKLSAgICBVc2VyTWVkaWFDb250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgVXNlck1lZGlh
Q29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFD
b250cm9sbGVyPihjbGllbnQpKTsKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyOjpwcm92aWRlVG8o
cGFnZSwgVXNlck1lZGlhQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxV
c2VyTWVkaWFDb250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlz
U2VjdXJlKERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGFhYTQwMDAyMDczNjVm
ZmNiZTUyODEyOGUyOGNlMDJmNmM2MDdjZGQuLmM5ODViYzE5YTMxZDAxMTQ1NjVhYmFiYTVmMDYw
ZWU1MGRhNjExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCBSZWY8UlRDRGF0YUNoYW5uZWxFdmVudD4g
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjaGFubmVsRXZlbnQoU2NyaXB0RXhlY3V0aQog
ICAgIGluaXQubmVnb3RpYXRlZCA9IGRhdGFDaGFubmVsLT5uZWdvdGlhdGVkKCk7CiAgICAgaW5p
dC5pZCA9IGRhdGFDaGFubmVsLT5pZCgpOwogCi0gICAgYXV0byBoYW5kbGVyID0gIHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGRhdGFDaGFubmVs
KSk7CisgICAgYXV0byBoYW5kbGVyID0gIG1ha2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyPihXVEZNb3ZlKGRhdGFDaGFubmVsKSk7CiAgICAgYXV0byBjaGFubmVsID0gUlRDRGF0
YUNoYW5uZWw6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKGhhbmRsZXIpLCBmcm9tU3RkU3RyaW5n
KGxhYmVsKSwgV1RGTW92ZShpbml0KSk7CiAKICAgICByZXR1cm4gUlRDRGF0YUNoYW5uZWxFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhY2hhbm5lbEV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUoY2hhbm5lbCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBkZWYxZjkxZWVlOWVk
NmVjNzhkMTNjNjllYzQzNDhmMGFhNjhkMzY3Li5kMWE3NGI4NTcxYmVlN2VlNWU5YzMxNjJlY2Ey
ZjRkNmZmNDFlNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRk
UmVtb3RlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2CiAgICAgfQog
ICAgIH0KIAotICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOworICAgIHJlY2Vp
dmVyLT5zZXRCYWNrZW5kKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihX
VEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOwogICAgIGF1dG8mIHRyYWNrID0gcmVjZWl2ZXItPnRyYWNr
KCk7CiAgICAgYWRkUGVuZGluZ1RyYWNrRXZlbnQocmVjZWl2ZXIucmVsZWFzZU5vbk51bGwoKSwg
dHJhY2ssIHJ0Y1N0cmVhbXMsIG51bGxwdHIpOwogfQpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGVlckNvbm5lY3Rp
b25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
UnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVt
b3RlVHJhbnNjZWl2ZXIobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+
KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
IH0KIH0KIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
bmV3VHJhbnNjZWl2ZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjCiAgICAg
aWYgKCFzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG5ld1RyYW5zY2VpdmVy
ID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNj
ZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8mIG5ld1RyYW5zY2Vp
dmVyID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIobWFrZVVu
aXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2
ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgYWRkUGVuZGluZ1RyYWNrRXZl
bnQobWFrZVJlZihuZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpKSwgbmV3VHJhbnNjZWl2ZXIucmVj
ZWl2ZXIoKS50cmFjaygpLCBydGNSZWNlaXZlci0+c3RyZWFtcygpLCBtYWtlUmVmKG5ld1RyYW5z
Y2VpdmVyKSk7CiB9CkBAIC01MzQsNyArNTM0LDcgQEAgT3B0aW9uYWw8TGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6QmFja2VuZHM+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVRyYW5zY2UK
ICAgICBpZiAoIXJlc3VsdC5vaygpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgYXV0byB0cmFuc2NlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92ZVZhbHVlKCkpOworICAgIGF1dG8gdHJhbnNjZWl2ZXIg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1vdmVW
YWx1ZSgpKTsKICAgICByZXR1cm4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6QmFja2VuZHMgeyB0
cmFuc2NlaXZlci0+Y3JlYXRlU2VuZGVyQmFja2VuZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZCwg
V1RGTW92ZShzb3VyY2UpKSwgdHJhbnNjZWl2ZXItPmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpLCBX
VEZNb3ZlKHRyYW5zY2VpdmVyKSB9OwogfQogCkBAIC01ODUsNyArNTg1LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4gTGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6dHJhbnNjZWkKIHsKICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDogbV9iYWNrZW5k
LT5HZXRUcmFuc2NlaXZlcnMoKSkgewogICAgICAgICBpZiAodHJhbnNjZWl2ZXItPnNlbmRlcigp
LmdldCgpID09IGJhY2tlbmQucnRjU2VuZGVyKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2NlaXZlcikpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
PihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2NlaXZlckludGVyZmFjZT4odHJh
bnNjZWl2ZXIpKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC02NTQsNyArNjU0
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6Y3JlYXRlRGF0YUNoYW5uZWwKIHsKICAgICBhdXRvIGluaXQgPSBMaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OmZyb21SVENEYXRhQ2hhbm5lbEluaXQob3B0aW9ucyk7CiAg
ICAgYXV0byBjaGFubmVsID0gbV9iYWNrZW5kLT5DcmVhdGVEYXRhQ2hhbm5lbChsYWJlbC51dGY4
KCkuZGF0YSgpLCAmaW5pdCk7Ci0gICAgcmV0dXJuIGNoYW5uZWwgPyBzdGQ6Om1ha2VfdW5pcXVl
PExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFubmVsKSkgOiBudWxscHRy
OworICAgIHJldHVybiBjaGFubmVsID8gbWFrZVVuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjpPbkRhdGFDaGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRh
dGFDaGFubmVsSW50ZXJmYWNlPiBkYXRhQ2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIwN2YxNWU2NDU3Yjlk
ZmNhYzFjMzM5ZWEzOWZlYTFkNzc4NTlkOGIuLmZjOTFjY2QwYmJkMWZkYmJhNzY0MmU3MDRmMzdm
ZTg1Y2M3MmZkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gY3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZQogCiAgICAgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5zZXRFbmFibGVXZWJSVENFbmNy
eXB0aW9uKHBhZ2UtPnNldHRpbmdzKCkud2ViUlRDRW5jcnlwdGlvbkVuYWJsZWQoKSk7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+
KHBlZXJDb25uZWN0aW9uLCBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+KHBlZXJDb25uZWN0aW9u
LCBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpKTsKIH0KIAogQ3JlYXRlUGVlckNvbm5lY3Rpb25C
YWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOwpAQCAtMzExLDcgKzMxMSw3IEBAIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OnZpCiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNy
ZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3Jl
YXRlUmVjZWl2ZXJGb3JTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAKLSAgICBh
dXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRv
IHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBTZW5kZXI6OmNy
ZWF0ZSgqdGhpcywgInZpZGVvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpLCByZWNl
aXZlci5jb3B5UmVmKCksIG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNhYmxlU2VuZGlu
Z0RpcmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoV1RGTW92
ZSh0cmFuc2NlaXZlcikpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6QXVkaW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmF1CiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0
ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRl
UmVjZWl2ZXJGb3JTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAKLSAgICBhdXRv
IHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvIHRy
YW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBTZW5kZXI6OmNyZWF0
ZSgqdGhpcywgImF1ZGlvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpLCByZWNlaXZl
ci5jb3B5UmVmKCksIG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNhYmxlU2VuZGluZ0Rp
cmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoV1RGTW92ZSh0
cmFuc2NlaXZlcikpOwpAQCAtNDAwLDcgKzQwMCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFJU
Q1J0cFNlbmRlcj4gZmluZEV4aXN0aW5nU2VuZGVyKGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRw
CiBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgVmVjdG9yPFN0cmluZz4m
JiBtZWRpYVN0cmVhbUlkcykKIHsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkgewotICAgICAgICBhdXRv
IHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAg
IGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soKnNlbmRlckJhY2tlbmQsIHRyYWNrLCBtZWRpYVN0
cmVhbUlkcykpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVW5h
YmxlIHRvIGFkZCB0cmFjayJfcyB9OwogCkBAIC00MzgsNyArNDM4LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJh
Y2soTWVkaWFTdHIKICAgICAgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay5raW5k
KCk7CiAgICAgICAgIFN0cmluZyB0cmFja0lkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
OwogCi0gICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgICAgICBhdXRvIHNlbmRl
ckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBu
dWxscHRyKTsKICAgICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgq
dGhpcywgbWFrZVJlZih0cmFjayksIFZlY3RvcjxTdHJpbmc+IHsgbWVkaWFTdHJlYW1JZHMgfSwg
V1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVS
ZWNlaXZlcih0cmFja0tpbmQsIHRyYWNrSWQpOwogICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0g
UlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVj
ZWl2ZXIpLCBudWxscHRyKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5z
Y2VpdgogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRkVW5pZmllZFBsYW5U
cmFuc2NlaXZlcihTdHJpbmcgeyB0cmFja0tpbmQgfSwgaW5pdCk7CiAKLSAgICBhdXRvIHNlbmRl
ckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0
aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvIG5ld1NlbmRl
ciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBTdHJpbmcodHJhY2tLaW5kKSwgVmVjdG9y
PFN0cmluZz4oKSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgcmV0dXJuIGNvbXBsZXRl
QWRkVHJhbnNjZWl2ZXIoV1RGTW92ZShuZXdTZW5kZXIpLCBpbml0LCBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCksIHRyYWNrS2luZCk7CiB9CkBAIC00ODIsNyArNDgyLDcgQEAgRXhjZXB0aW9u
T3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGFkZFVu
aWZpZWRQbGFuVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGluaXQpOwogCi0gICAgYXV0byBz
ZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
PigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byYgYmFj
a2VuZCA9ICpzZW5kZXJCYWNrZW5kOwogICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpj
cmVhdGUoKnRoaXMsIHRyYWNrLmNvcHlSZWYoKSwgVmVjdG9yPFN0cmluZz4oKSwgV1RGTW92ZShz
ZW5kZXJCYWNrZW5kKSk7CiAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFjayhiYWNrZW5kLCB0
cmFjaywgVmVjdG9yPFN0cmluZz4geyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZC5jcHAKaW5kZXggNjg1MGU2YTg1ZTkwMjRiYjExNDViNmI5NDIyOWMw
ZjYxNDJkZjdhYS4uNmFlZWExMzM4OTJkMjA2M2YwMzUzOWI4ZWVjNGRiOWJjZTY0ZDdkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAgLTE0
OCw3ICsxNDgsNyBAQCB2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnNldFBhcmFtZXRl
cnMoY29uc3QgUlRDUnRwU2VuZFBhcmFtZXRlcnMmIHBhcmFtZQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UlRDRFRNRlNlbmRlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURU
TUZCYWNrZW5kKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIoKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2VuZGVyLT5HZXRE
dG1mU2VuZGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAppbmRleCBlYjg3
MWViN2RiMDM4ODRmNGNjN2UwYWRlZjY4NzgyZTFjMDk3MmQ3Li41YzBkN2U5NWUyZmQxMmUzZjg0
ZjE3Y2ZiZWI2ZDg2N2E1MWYyZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTM1LDEyICszNSwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQ+IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXJCYWNrZW5k
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJh
Y2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFuc2NlaXZlci0+cmVjZWl2
ZXIoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPiBM
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVNlbmRlckJhY2tlbmQoTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBiYWNrZW5kLCBMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kOjpTb3VyY2UmJiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oYmFja2VuZCwgbV9ydGNUcmFuc2NlaXZlci0+c2VuZGVy
KCksIFdURk1vdmUoc291cmNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZD4oYmFja2VuZCwgbV9ydGNUcmFuc2NlaXZlci0+c2VuZGVyKCksIFdURk1v
dmUoc291cmNlKSk7CiB9CiAKIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIExpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZDo6ZGlyZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggMGMz
MjhmYWU0NDIzNTk5MjUzMzA3MmM4NWQ2YjMyZmRjNmMxMzgzOC4uMGViYWZmODlmZmJjNTAwM2Uy
NDYxYmFkZWU1MjAzOTExNzFjYmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTm90
aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBPcHRpb24KICAgICAsIG1fYm9keShvcHRpb25zLmJvZHkpCiAgICAgLCBt
X3RhZyhvcHRpb25zLnRhZykKICAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAsIG1fdGFza1RpbWVy
KHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3coKTsgfSkpCisgICAgLCBt
X3Rhc2tUaW1lcihtYWtlVW5pcXVlPFRpbWVyPihbdGhpc10gKCkgeyBzaG93KCk7IH0pKQogewog
ICAgIGlmICghb3B0aW9ucy5pY29uLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIGljb25VUkwg
PSBkb2N1bWVudC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IGE2MjAzNTM5M2M3ZmIzZjZkZGYwMWM1Yzg5ZDc0ZjNiNWVkZDJkNDQu
LmQ0OGYyMDVhOWUyNDE0ZTA3ZDcyMmY5MDMyNWE3YzM2NGQ0ODk0MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgY2hhciogTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogCiB2b2lkIHByb3ZpZGVOb3RpZmljYXRp
b24oUGFnZSogcGFnZSwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgTm90aWZp
Y2F0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6
OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uQ29udHJvbGxl
cj4oY2xpZW50KSk7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2Us
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8Tm90
aWZpY2F0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVv
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAK
aW5kZXggMDNmZTllMzg2NzhmNDA1MDczMjU1MDljMjAzODY3YzljZjgyMGZmMS4uYzk4Yzk5ODZk
ZWQ2Y2QyMDU0MjYxNzIxNWY2NTM2Y2U1OGYyNzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRE9NV2lu
ZG93UXVvdGEqIERPTVdpbmRvd1F1b3RhOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAg
IERPTVdpbmRvd1F1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93UXVvdGEq
PihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93UXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93UXVvdGE+KHdpbmRvdyk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2lu
ZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VR
dW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VR
dW90YS5jcHAKaW5kZXggN2JhMWQzZDRiMzY5NDQwYzY0ZTE3ZGQyMGNhOTQ1MzhiOGFkOWI3NC4u
N2EwODA0NTk1Njk4M2EzMWY2ZDgzNGVmN2VhNzcyZmE2NjczNmE2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcApA
QCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIE5hdmlnYXRvclN0b3JhZ2VR
dW90YTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JTdG9yYWdl
UXVvdGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqPihT
dXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOworICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2lu
ZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA5NWMzZTQzNjQ3MzE2
MmE1MGQ2MWI1Y2U3NTE2NWVlNjhiMjFiNzI3Li4xYTFjODQ3ZGM0OTdkYzY0ODQ1ZjU2ZWNlNTky
NjNhNDI2YWY2MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dv
cmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSogV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
Ojpmcm9tKFdvcmtlck5hdmlnYXRvcioKIHsKICAgICBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEq
PihTdXBwbGVtZW50PFdvcmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5k
b3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlck5hdmln
YXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCmlu
ZGV4IDM3OTU2NTI2ZmJmMjg2OTBlY2YwMzk5NTJjNTJmNmUwNDQ2YmNiNGMuLjk2OWMyMzdmN2M4
MTU1MTUzZGUwNzFlYzk2YTYxYTRhNDYyZDNmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMqIERPTVdpbmRvd1NwZWVjaFN5
bnRoZXNpczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dTcGVlY2hT
eW50aGVzaXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dTcGVlY2hTeW50aGVz
aXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3aW5kb3cpOworICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd1NwZWVjaFN5bnRo
ZXNpcz4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7
CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3
U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IDcyYjU2M2U0YmJmN2RjZTAzZmEzMDg4MGQyZmE3
NzBiODk4NjkzYTQuLmU3YjYyYTFhMTdiZDk2YTlmNWExM2ZkMDllNzQ5YWI0YmNlMTk4NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNw
cApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6dm9pY2VzRGlkQ2hhbmdl
KCkKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXImIFNwZWVjaFN5bnRoZXNpczo6ZW5zdXJlUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcigpCiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIpCi0gICAgICAgIG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyk7CisgICAgICAgIG1fcGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplciA9IG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcj4odGhpcyk7CiAgICAgcmV0dXJuICptX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlv
RGVjb2Rlci5jcHAKaW5kZXggNjJmNjhlYzY2M2E4MDIxMmM2ZjNhZjdiODVlMjNjNmI0Zjc0MmEw
YS4uMmY1NDI3MmFjNWMwMWQwYTIzMGU1YzBkZjA0NTI0YWZiMmE0ZTIzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAK
QEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMoUmVm
PEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmEKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlY29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOworICAgIGF1dG8gZGVj
b2RpbmdUYXNrID0gbWFrZVVuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1vdmUoYXVkaW9EYXRhKSwg
c2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spKTsKICAgICBtX3F1ZXVlLmFwcGVuZChXVEZNb3ZlKGRlY29kaW5nVGFzaykpOyAvLyBub3Rl
IHRoYXQgb3duZXJzaGlwIG9mIHRoZSB0YXNrIGlzIGVmZmVjdGl2ZWx5IHRha2VuIGJ5IHRoZSBx
dWV1ZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3lu
Y0F1ZGlvRGVjb2Rlci5oCmluZGV4IGJjMDBlYjlmODdkMWJjZDU4Y2JmNzQ5YjdkYTdjNDkzY2Y3
ZTg4NzYuLmNmOTI2OWMzMDQ0YzQzMjJkNzQ0ZDA2MjlkZGEwZmE4OTQ5M2VjYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgK
QEAgLTQyLDcgKzQyLDggQEAgY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsKIC8vIEFzeW5jQXVk
aW9EZWNvZGVyIGFzeW5jaHJvbm91c2x5IGRlY29kZXMgYXVkaW8gZmlsZSBkYXRhIGZyb20gYW4g
QXJyYXlCdWZmZXIgaW4gYSB3b3JrZXIgdGhyZWFkLgogLy8gVXBvbiBzdWNjZXNzZnVsIGRlY29k
aW5nLCBhIGNvbXBsZXRpb24gY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIHdpdGggdGhlIGRlY29k
ZWQgUENNIGRhdGEgaW4gYW4gQXVkaW9CdWZmZXIuCiAKLWNsYXNzIEFzeW5jQXVkaW9EZWNvZGVy
IHsKK2NsYXNzIEFzeW5jQXVkaW9EZWNvZGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY0F1ZGlvRGVjb2Rlcik7CiBw
dWJsaWM6CiAgICAgQXN5bmNBdWRpb0RlY29kZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKaW5k
ZXggYmE4YzI1NWFlN2Q3ZGE3M2JjOWZmNjU1NDNmMWUzN2JjOTU0MDRiMy4uMGZiNTViMDhmMGMx
YTJiZTJkMDcwYzRlMGQ4ZDhmNDY3ZTM0NmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKQEAg
LTQwLDggKzQwLDggQEAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2EKICAgICA6IEF1ZGlvTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNw
ZWN0b3IpOwotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRo
aXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIG91dHB1dENoYW5uZWxDb3VudCkpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRw
dXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3VudCkpOwogfQogCiAvLyBXZSBvdmVycmlkZSBwdWxs
SW5wdXRzKCkgYXMgYW4gb3B0aW1pemF0aW9uIGFsbG93aW5nIHRoaXMgbm9kZSB0byB0YWtlIGFk
dmFudGFnZSBvZiBpbi1wbGFjZSBwcm9jZXNzaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCBiYzE4OWMwOGNiZWZjN2MxOTYwNjQ2NmMwNzY4YjhmYTYzNGIxNmFiLi4wYjlmMWNlZDg3NDVi
NWQ5OThkYzM4ZDYzNmU3OTBhYmZiZTZlOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcApAQCAt
NDIsOCArNDIsOCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUpOwogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlv
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1
ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICAvLyBUaGUgc3ViY2xhc3MgbXVzdCBjcmVhdGUgbV9w
cm9jZXNzb3IuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggNDBhYzMyYzVjNTVjM2QzMmQwZTE0
YjZhN2QyMmIyNDY3MzkwZjRiZi4uMjUxMGM0MGE3ZjYxMjNkNGM3ZmMyZDY0MGE5MGI0ZjBhOThl
NmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZQogICAgIG1fcGxheWJhY2tSYXRlID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRl
eHQsICJwbGF5YmFja1JhdGUiLCAxLjAsIC1NYXhSYXRlLCBNYXhSYXRlKTsKIAogICAgIC8vIERl
ZmF1bHQgdG8gbW9uby4gIEEgY2FsbCB0byBzZXRCdWZmZXIoKSB3aWxsIHNldCB0aGUgbnVtYmVy
IG9mIG91dHB1dCBjaGFubmVscyB0byB0aGF0IG9mIHRoZSBidWZmZXIuCi0gICAgYWRkT3V0cHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFs
aXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKaW5kZXggOTk1NmMxNTg2MjE4OWM3MTQyOWNiY2ZkNjAwNDJmMDBjOThiYWVmNi4u
ZDRjZGI3NjU4YzBmMzViNWZjOWEyMmNlODk4YmNiMmI5OWVlNGRkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTQwLDcgKzE0
MCw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCiAjZW5kaWYKICAgICAs
IG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQotICAg
ICwgbV9ldmVudFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlz
KSkKKyAgICAsIG1fZXZlbnRRdWV1ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhp
cykpCiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9u
bHkgYWZ0ZXIgcGFnZSBuYXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9N
T2JqZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhv
ZC4KQEAgLTE2Niw3ICsxNjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdAogI2VuZGlmCiAg
ICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKHN0ZDo6
bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiB7CiAgICAgY29uc3RydWN0
Q29tbW9uKCk7CiAKQEAgLTQzMiw3ICs0MzIsNyBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZm
ZXI+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYXJyYXlCdWZmZQog
dm9pZCBBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVk
aW9EYXRhLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCiB7CiAgICAgaWYgKCFt
X2F1ZGlvRGVjb2RlcikKLSAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFzeW5jQXVkaW9EZWNvZGVyPigpOworICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IG1ha2VVbmlx
dWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7CiAgICAgbV9hdWRpb0RlY29kZXItPmRlY29kZUFzeW5j
KFdURk1vdmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSgpLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFj
ayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDk3
NTg4NzU0NzQ3ZTE1MjQ4MTg5ZjQ5NzBjNmQzM2UzYzZhZTFlMTEuLmQ5YWJiOTc3N2E5ZDI1ZWVh
ZjI0MmZmNGZmZmM1ZWM1ZWY0ODZjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhCiAgICAgLCBtX211dGVkKGZhbHNlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlRGVzdGluYXRpb24pOwotICAgIGFkZElucHV0KHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiB9CiAKIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjp+QXVk
aW9EZXN0aW5hdGlvbk5vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5kZXggMTYzNzNjZTkzNzhkMzIyZmRkOWMyNTNm
OWM3NmQ5NjNlNjEzY2QzYi4uNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4YjYzNmFiMmQ3NTZl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0
ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZp
bHRlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIEJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZp
bHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlQmlxdWFkRmlsdGVyKTsKIAogICAgIC8vIEluaXRpYWxseSBzZXR1
cCBhcyBsb3dwYXNzIGZpbHRlci4KLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8
QmlxdWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxzZSk7CisgICAgbV9w
cm9jZXNzb3IgPSBtYWtlVW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0
ZSwgMSwgZmFsc2UpOwogfQogCiBCaXF1YWRGaWx0ZXJUeXBlIEJpcXVhZEZpbHRlck5vZGU6OnR5
cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1
YWRQcm9jZXNzb3IuY3BwCmluZGV4IDBlNGUzNjg1YjgyY2U0NzdlYzRlNTg1NDdmMTZhZDhiNzBm
Yzc5MDQuLmU4NGI5ODAzNTY3MGZiMWRjYzMyNzA5NjYzZDJiMzkwNTUyZTY1ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgQmlxdWFkUHJvY2Vzc29yOjp+QmlxdWFkUHJvY2Vzc29yKCkKIAog
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtl
cm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOwogfQog
CiB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6Y2hlY2tGb3JEaXJ0eUNvZWZmaWNpZW50cygpCkBAIC0x
MjUsNyArMTI1LDcgQEAgdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNl
KGludCBuRnJlcXVlbmNpZXMsIGNvbnN0IGZsb2F0KiBmcmVxdWUKICAgICAvLyB0byBhdm9pZCBp
bnRlcmZlcmluZyB3aXRoIHRoZSBwcm9jZXNzaW5nIHJ1bm5pbmcgaW4gdGhlIGF1ZGlvCiAgICAg
Ly8gdGhyZWFkIG9uIHRoZSBtYWluIGtlcm5lbHMuCiAgICAgCi0gICAgYXV0byByZXNwb25zZUtl
cm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKKyAgICBhdXRv
IHJlc3BvbnNlS2VybmVsID0gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOwogCiAg
ICAgcmVzcG9uc2VLZXJuZWwtPmdldEZyZXF1ZW5jeVJlc3BvbnNlKG5GcmVxdWVuY2llcywgZnJl
cXVlbmN5SHosIG1hZ1Jlc3BvbnNlLCBwaGFzZVJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKaW5kZXgg
MjBiOGRhMTllNWY0MzljZmU1NDU1ZjAxZGMyOTA4NzQ0NmIyM2MwOC4uZGY1MGYyNjg3MzY4YWE1
YzMyOTU0MTQ4MTUwNzc3YTAyOTE3MzJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTU5LDkgKzU5LDkgQEAg
Q2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW4KIAogICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVzdGVkIG51
bWJlciBvZiBpbnB1dHMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5w
dXRzOyArK2kpCi0gICAgICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5w
dXQ+KHRoaXMpKTsKKyAgICAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwogCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCAxKSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKaW5kZXgg
NDYzNTQ5OGMwMzRjNTkzMGI0ZThmMjIwODZlMTRiMmI0YmQyOTExNy4uODJmNjlhMDRmOTk5MjYx
ZDU4YzE1MmJmYzYwMmEzNjYwOTYwOTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBAIC01MCwxMSArNTAs
MTEgQEAgQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlw
ZUNoYW5uZWxTcGxpdHRlcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1
dD4odGhpcykpOwogCiAgICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVtYmVyIG9mIG91dHB1dHMgKGFi
bGUgdG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBmZWQgdG8gYW4gaW5w
dXQpLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsraSkK
LSAgICAgICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAxKSk7CisgICAgICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMSkpOwogICAgIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IDIzODJkYWJjYzljOTky
N2NhYzMxZDMyNzVmMjIwM2NjOGY1OGEwOTMuLmUzNjY3N2NmZDc0NWU4YmJlMDJkYTNkYzRkZDdi
YTFmMWE1M2RkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcApAQCAtNTIsOCArNTIsOCBAQCBDb252b2x2ZXJOb2RlOjpDb252b2x2
ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUNvbnZvbHZlcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1
ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlv
Tm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1p
eGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CkBAIC0xNDYsNyArMTQ2LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQ29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKEF1ZGlvQnVmZmVyKiBi
dWZmZXIpCiAKICAgICAvLyBDcmVhdGUgdGhlIHJldmVyYiB3aXRoIHRoZSBnaXZlbiBpbXB1bHNl
IHJlc3BvbnNlLgogICAgIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMgPSAhY29udGV4dCgpLmlz
T2ZmbGluZUNvbnRleHQoKTsKLSAgICBhdXRvIHJldmVyYiA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2
ZXJiPihidWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcywg
TWF4RkZUU2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFsaXplKTsKKyAgICBh
dXRvIHJldmVyYiA9IG1ha2VVbmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9k
ZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRo
cmVhZHMsIG1fbm9ybWFsaXplKTsKIAogICAgIHsKICAgICAgICAgLy8gU3luY2hyb25pemUgd2l0
aCBwcm9jZXNzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9k
ZS5jcHAKaW5kZXggNDI2NWEwMDc0OWVhZmZmNmE5ZTFiOWQxZGRhNjBkNGRiNzAyOGIwMy4uODFi
ZDdkMTliMjdlNzQxYjUwZjZmODRlNTFmN2NlMjU1NzgwMmI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBpbmxp
bmUgRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCBkb3VibGUgbWF4RAogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlbGF5KTsKLSAgICBt
X3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQsIHNh
bXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CisgICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVl
PERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpOwog
fQogCiBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gRGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNw
cAppbmRleCBhNzViYTZiN2M5MmU3NDQ0YzY1NjA4ZThhZTE4ZjlkNTAwMDI2YTA0Li4xMDM2NmVm
NmVhZmI2YzQ0ZGIxOTEyNzFhOTk1ZDllNmQyYWNiYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBEZWxheVByb2Nlc3Nvcjo6fkRlbGF5UHJvY2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRFNQS2VybmVsPiBEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWxheURTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5h
bWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCBhYTBlNGE4MDExOWViZWQ5ZGQzNjk2YjNmYTEz
MDVkZGYzMmJkMDUyLi4xNDA5NmQ4ZjBjNTk2YTUyOTcxNjY2ZWY4MjY3YTAyM2ZkYjQ0YjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgRHluYW1pY3NDb21wcmVzc29y
Tm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNhbXAKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJlc3Nvcik7CiAK
LSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0g
ICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZh
dWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CiAKICAgICBtX3Ro
cmVzaG9sZCA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAidGhyZXNob2xkIiwgLTI0LCAt
MTAwLCAwKTsKICAgICBtX2tuZWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImtuZWUi
LCAzMCwgMCwgNDApOwpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGU6OmluaXRpYWxpemUoKQogICAgICAgICByZXR1cm47CiAKICAgICBBdWRpb05vZGU6OmluaXRp
YWxpemUoKTsgICAgCi0gICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PER5bmFtaWNzQ29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRD
aGFubmVscyk7CisgICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBtYWtlVW5pcXVlPER5bmFtaWNz
Q29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7
CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6dW5pbml0aWFsaXplKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKaW5kZXggNmM5NGE1MjNj
M2IyYTAyMTJiMmE1NGExYTljOGYwMjZiYmQxZGI1Zi4uMjU3ZGYyZWNlMjMzOGNiY2JhYjllZDA1
MTIzM2M2NGIxYzU3ZjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9HYWluTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9H
YWluTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIAogICAgIG1fZ2FpbiA9IEF1ZGlvUGFy
YW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiIsIDEuMCwgMC4wLCAxLjApOwogCi0gICAgYWRkSW5w
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZElu
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAzODFhZTcyNzk0ZmIwZTdmZWE2
MzMxYWJkMzNiMjBjMTU4NDVmZjliLi45MTJlNmViMjMyMTQ1NjQzZDZmZGFmYmMxMWU5Njc2NGMz
ZDJmNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZU1lZGlhRWxl
bWVudEF1ZGlvU291cmNlKTsKIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxk
IGNoYW5nZSBkZXBlbmRpbmcgb24gd2hhdCB0aGUgbWVkaWEgZWxlbWVudCAuc3JjIGlzIHNldCB0
by4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMs
IDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIp
KTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywg
ZmxvYXQgc291cmMKIAogICAgICAgICBpZiAoc291cmNlU2FtcGxlUmF0ZSAhPSBzYW1wbGVSYXRl
KCkpIHsKICAgICAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUg
LyBzYW1wbGVSYXRlKCk7Ci0gICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVy
T2ZDaGFubmVscyk7CisgICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG1ha2VV
bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVs
cyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBCeXBhc3MgcmVzYW1wbGluZy4K
ICAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggNWIyYTUwMGRkMjk0ZDEwNTU4YmM3YTA4Y2Y3NzE2ZTQy
NmI1YzJhYy4uZTQzZjU0NDhiYzI2Yjg2YWY2OTNkMDA5OTk1YzY3MzRmNjk1NWQzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgTWUKICAgICBhdWRpb1NvdXJjZVByb3ZpZGVyLT5zZXRDbGllbnQodGhpcyk7CiAgICAg
CiAgICAgLy8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdlIGRlcGVuZGluZyBv
biB0aGUgZm9ybWF0IG9mIHRoZSBNZWRpYVN0cmVhbSdzIGF1ZGlvIHRyYWNrLgotICAgIGFkZE91
dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFk
ZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgaW5p
dGlhbGl6ZSgpOwogfQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjZQog
ICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUgLyBzYW1wbGVSYXRl
OwotICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TXVs
dGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CisgICAg
ICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0aUNoYW5uZWxSZXNh
bXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICB9CiAKICAgICBtX3Nv
dXJjZU51bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCA1YjUwMjli
ZmJjZTc3YWQ1YjZjM2M4ODMyNjBkYjlkZWZkZjYxMDRiLi5hOTljZWFhZDZiNWMyMWUwOWRkMjI1
M2MyYWNmMzA0NTU0NzUzZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBPc2NpbGxhdG9yTm9k
ZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIHNldFR5cGUobV90eXBlKTsKIAogICAgIC8vIEFuIG9zY2lsbGF0b3IgaXMgYWx3YXlz
IG1vbm8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBmNjQ3NDY5ZTIzNTVlYjNhMGMwOWIzYjA4
NTJiZmJlYzZlNDhkMjhkLi41MWM2OTkxNmZmZGU3MGY1ZTY4MGFhOTI3Y2VmZWY3Y2E3MzJjM2Vi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAK
QEAgLTU4LDggKzU4LDggQEAgUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgLy8gTG9hZCB0aGUgSFJURiBkYXRhYmFzZSBh
c3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9jayB0aGUgSmF2YXNjcmlwdCB0aHJlYWQgd2hp
bGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2UuCiAgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXIg
PSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNz
YXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1
ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5n
IHJ1bGVzLgogICAgIG1fY2hhbm5lbENvdW50ID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcAppbmRleCBiYjJhMDdkMjM1NGViYWY5NGQw
MDQ2NWE0YjQxZDg2MDU1NTk5ODZiLi5lYzlhMTdjNGY1NmViOTk2NmRjMTc2MjdlOTM0MDViYTFm
ZDQ4YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Blcmlv
ZGljV2F2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2Rp
Y1dhdmUuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBQZXJpb2RpY1dhdmU6OmNyZWF0ZUJh
bmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiByZWFsRGF0YSwgY29uc3QgZmxvYXQqIGkKICAg
ICAgICAgcmVhbFBbMF0gPSAwOwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUgYmFuZC1saW1pdGVk
IHRhYmxlLgotICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CisgICAgICAgIG1fYmFu
ZExpbWl0ZWRUYWJsZXMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihtX3Blcmlv
ZGljV2F2ZVNpemUpKTsKIAogICAgICAgICAvLyBBcHBseSBhbiBpbnZlcnNlIEZGVCB0byBnZW5l
cmF0ZSB0aGUgdGltZS1kb21haW4gdGFibGUgZGF0YS4KICAgICAgICAgZmxvYXQqIGRhdGEgPSBt
X2JhbmRMaW1pdGVkVGFibGVzW3JhbmdlSW5kZXhdLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCAzYjYy
ODFkMWU4NDNlZDI5OWNmNjE1M2M3MzI3OTcwNzQxODA2Nzc4Li44MDIzNzM0MDdmNzVkNDdlMjU5
ZWI2MDU2MzgwZjYzNWYxM2FjZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgUmVhbHRp
bWVBbmFseXNlcjo6UmVhbHRpbWVBbmFseXNlcigpCiAgICAgLCBtX21pbkRlY2liZWxzKERlZmF1
bHRNaW5EZWNpYmVscykKICAgICAsIG1fbWF4RGVjaWJlbHMoRGVmYXVsdE1heERlY2liZWxzKQog
ewotICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KERlZmF1
bHRGRlRTaXplKTsKKyAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihE
ZWZhdWx0RkZUU2l6ZSk7CiB9CiAKIFJlYWx0aW1lQW5hbHlzZXI6On5SZWFsdGltZUFuYWx5c2Vy
KCkgPSBkZWZhdWx0OwpAQCAtODMsNyArODMsNyBAQCBib29sIFJlYWx0aW1lQW5hbHlzZXI6OnNl
dEZmdFNpemUoc2l6ZV90IHNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICht
X2ZmdFNpemUgIT0gc2l6ZSkgewotICAgICAgICBtX2FuYWx5c2lzRnJhbWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZGVEZyYW1lPihzaXplKTsKKyAgICAgICAgbV9hbmFseXNpc0ZyYW1lID0gbWFrZVVu
aXF1ZTxGRlRGcmFtZT4oc2l6ZSk7CiAgICAgICAgIC8vIG1fbWFnbml0dWRlQnVmZmVyIGhhcyBz
aXplID0gZmZ0U2l6ZSAvIDIgYmVjYXVzZSBpdCBjb250YWlucyBmbG9hdHMgcmVkdWNlZCBmcm9t
IGNvbXBsZXggdmFsdWVzIGluIG1fYW5hbHlzaXNGcmFtZS4KICAgICAgICAgbV9tYWduaXR1ZGVC
dWZmZXIuYWxsb2NhdGUoc2l6ZSAvIDIpOwogICAgICAgICBtX2ZmdFNpemUgPSBzaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKaW5kZXggZDU5ZGVjZjk5NTE2ZjZkMDFhZjljMWQ5ZmRiZjFkMGIxMDE5ZTQwZi4u
ZDViM2FmYmYyNzEwMTQ1MTQ5NGIxODkzNzc2OGI2MDVmNmEzYjQ3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
CkBAIC02OCw4ICs2OCw4IEBAIFNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiAgICAgQVNTRVJUKG51
bWJlck9mSW5wdXRDaGFubmVscyA8PSBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMo
KSk7CiAKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUphdmFTY3JpcHQpOwotICAgIGFkZElucHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcApp
bmRleCA0MTBkMWRhZjVjODk1NDAwOWZmMDYzNmE4MjkwMGJmOTRhZjRmOGYxLi5mM2QyMTIyZGY1
MWM0ZjFhMjkyMjRlNjkzYWI0OTViYmMyYjkzOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKQEAgLTQ5LDEy
ICs0OSwxMiBAQCB2b2lkIFdhdmVTaGFwZXJEU1BLZXJuZWw6OmxhenlJbml0aWFsaXplT3ZlcnNh
bXBsaW5nKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3RlbXBC
dWZmZXIpIHsKLSAgICAgICAgbV90ZW1wQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zs
b2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV90ZW1wQnVmZmVyMiA9
IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogNCk7
Ci0gICAgICAgIG1fdXBTYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNhbXBsZXI+KFJlbmRl
cmluZ1F1YW50dW0pOwotICAgICAgICBtX2Rvd25TYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxE
b3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAgICAgICBtX3VwU2FtcGxlcjIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAg
ICAgICBtX2Rvd25TYW1wbGVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRl
cmluZ1F1YW50dW0gKiA0KTsKKyAgICAgICAgbV90ZW1wQnVmZmVyID0gbWFrZVVuaXF1ZTxBdWRp
b0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV90ZW1wQnVmZmVy
MiA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogNCk7Cisg
ICAgICAgIG1fdXBTYW1wbGVyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50
dW0pOworICAgICAgICBtX2Rvd25TYW1wbGVyID0gbWFrZVVuaXF1ZTxEb3duU2FtcGxlcj4oUmVu
ZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX3VwU2FtcGxlcjIgPSBtYWtlVW5pcXVlPFVw
U2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX2Rvd25TYW1wbGVyMiA9
IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
ck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5jcHAKaW5kZXggODQ4Njk5M2YyMTA4NGNjYzYxY2NkODBiMmMxODdlMDhjMTU1ZmQwMS4uNmU3
ZThkZDFjOWMxOWZhM2M4NWUzZDlkODU1YWI5ZjQ1Nzg1Yjc5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgV2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxl
UmF0ZSgpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBlcik7Ci0gICAgbV9w
cm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQu
c2FtcGxlUmF0ZSgpLCAxKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8V2F2ZVNoYXBl
clByb2Nlc3Nvcj4oY29udGV4dC5zYW1wbGVSYXRlKCksIDEpOwogCiAgICAgaW5pdGlhbGl6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlclByb2Nlc3Nvci5jcHAKaW5kZXggMjg5YzM5ZjVmM2Y5ZjdhNzllOWE1YjZhNmQ4MzE1YjU5
MWY0MzJkYS4uYmZlNWUwZTQ3ZmI4NGEyOGM2M2M2ZTI4YjMyZTBmYzExZTVjNjdiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9j
ZXNzb3IuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdhdmVTaGFwZXJQcm9jZXNzb3I6On5XYXZlU2hh
cGVyUHJvY2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBXYXZlU2hh
cGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdhdmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdh
dmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6
OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAppbmRleCBi
MWM0OWRiNTIzYjkzNmIwYTRlYzIyMTA0MWI3N2RhN2NjMTQ3OGZkLi4yMGQ2MDY5NzI0Mjg5NzM3
Nzk4MmI4NGVlNzNkNGRhNjM0ZWQ4ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKIHVzaW5n
IENyZWRlbnRpYWxQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETElu
dGVyZmFjZTxCYXNpY0NyZWRlbnRpYWw+Pj47CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1bmlxdWVfcHRyPEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAppbmRleCA4YzNk
MTM0NmM0MDMwY2ZiM2Q4Mjc3MzdhMGExNWYzZjFjYjliYWQ3Li4xYjkxMmQ5OGQ5ZjA0ZjMwNzRh
MWI4ZTFhNjI2MDFhNDJmYWYzNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKQEAgLTE1MCw5ICsxNTAsOSBA
QCBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UodWludDMyX3QgY2hhbm5lbElkLCBGaWRv
SGlkRGV2aWNlQ29tbWFuZCB0eXBlLCBjbwogICAgIHVpbnQ4X3Qgc2VxdWVuY2UgPSAwOwogCiAg
ICAgc2l6ZV90IHBvcyA9IGRhdGEuc2l6ZSgpID4ga0hpZEluaXRQYWNrZXREYXRhU2l6ZSA/IGtI
aWRJbml0UGFja2V0RGF0YVNpemUgOiBkYXRhLnNpemUoKTsKLSAgICBtX3BhY2tldHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgdHlwZSwgZ2V0
SW5pdFBhY2tldERhdGEoZGF0YSksIGRhdGEuc2l6ZSgpKSk7CisgICAgbV9wYWNrZXRzLmFwcGVu
ZChtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQ
YWNrZXREYXRhKGRhdGEpLCBkYXRhLnNpemUoKSkpOwogICAgIGZvciAoOyBwb3MgPCBkYXRhLnNp
emUoKTsgcG9zICs9IGtIaWRDb250aW51YXRpb25QYWNrZXREYXRhU2l6ZSkKLSAgICAgICAgbV9w
YWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+
KGNoYW5uZWxJZCwgc2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0RGF0YShkYXRhLCBw
b3MpKSk7CisgICAgICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkQ29udGlu
dWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRpbnVhdGlvblBhY2tl
dERhdGEoZGF0YSwgcG9zKSkpOwogfQogCiBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBpbml0UGFja2V0LCBzaXplX3QgcmVt
YWluaW5nU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkUGFja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkUGFja2V0LmNwcAppbmRleCA1NWI3YjJkNzE1MzZhMjM1NDkxM2FlMzZlOWZi
OTFlZjAwYThmMDgzLi4yNmI4MGFhOGE1ZjEzOTYzYzc2OGU3ZTkyM2JiYWFiMmI4N2I1ZWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBh
Y2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRQYWNrZXQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5p
dFBhY2tldD4gRmlkb0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShjCiAg
ICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CiAgICAgZGF0YS5hcHBlbmQoc2VyaWFs
aXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNvbW1hbmQsIFdURk1vdmUoZGF0
YSksIHBheWxvYWRTaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tl
dD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CiB9CiAK
IC8vIFUyRiBJbml0aWFsaXphdGlvbiBwYWNrZXQgaXMgZGVmaW5lZCBhczoKQEAgLTEyMyw3ICsx
MjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4gRmlkb0hp
ZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbQogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1
aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBk
YXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0
aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVl
bmNlLCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAogLy8gVTJGIENvbnRpbnVhdGlvbiBwYWNrZXQgaXMg
ZGVmaW5lZCBhczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZS5jcHAKaW5kZXggMDIxNDVkMGNjMmU4YzllYWRiMGM4ODI5NDFiODU5ZmMwYWU4MDUyZC4u
NWI2NGEwODc0NmFmODA4MGNkMmU3MjUwM2ZhMDBkM2M5NDlmYjAwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTI1MCw3ICsyNTAs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9v
bCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXN1bHQ7Ci0gICAg
YXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9wZW5UYXNrPigqdGhpcywgc2V0
VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKKyAgICBhdXRvIHRh
c2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRWZXJzaW9uSW5OZXdE
YXRhYmFzZSwgc3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5zY2hlZHVsZUltbWVk
aWF0ZVRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29t
cGxldGlvbigpOwogCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2UoKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFz
ayhzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlQ2xvc2VUYXNrPigqdGhpcywgc3luY2hyb25pemVy
KSk7CisgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhtYWtlVW5pcXVlPERhdGFiYXNl
Q2xvc2VUYXNrPigqdGhpcywgc3luY2hyb25pemVyKSk7CiAKICAgICAvLyBGSVhNRTogaU9TIGRl
cGVuZHMgb24gdGhpcyBmdW5jdGlvbiBibG9ja2luZyB1bnRpbCB0aGUgZGF0YWJhc2UgaXMgY2xv
c2VkIGFzIHBhcnQKICAgICAvLyBvZiBjbG9zaW5nIGFsbCBvcGVuIGRhdGFiYXNlcyBmcm9tIGEg
cHJvY2VzcyBhc3NlcnRpb24gZXhwaXJhdGlvbiBoYW5kbGVyLgpAQCAtNTMyLDcgKzUzMiw3IEBA
IHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgIG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzID0gdHJ1ZTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9u
UXVldWUudGFrZUZpcnN0KCk7Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRh
YmFzZVRyYW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOworICAgIGF1dG8gdGFz
ayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1vdmUodHJhbnNhY3Rp
b24pKTsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlv
blRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0YXNrLT50cmFuc2Fj
dGlvbigpKTsKICAgICBkYXRhYmFzZVRocmVhZCgpLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2sp
KTsKIH0KQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0
aW9uU3RlcChTUUxUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgYXV0byYgdGhyZWFk
ID0gZGF0YWJhc2VUaHJlYWQoKTsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CisgICAgYXV0byB0YXNrID0g
bWFrZVVuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oJnRyYW5zYWN0aW9uKTsKICAgICBM
T0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9y
IHRoZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKICAgICB0aHJlYWQuc2NoZWR1
bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQpAQCAtNzYzLDcgKzc2Myw3IEBAIFZlY3RvcjxTdHJp
bmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKICAgICBpZiAodGhyZWFkLnRlcm1pbmF0aW9uUmVx
dWVzdGVkKCZzeW5jaHJvbml6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgYXV0
byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPigqdGhpcywg
c3luY2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJh
c2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKICAgICB0aHJl
YWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwogICAgIHN5bmNocm9uaXpl
ci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAzYmFiZDQ5NTY2ZjE0
YTFiM2MwZDNiMTdiZjRjN2YzMmM1ZTNkNWY3Li5kNjQ5N2MzOTdmYTQ3NDI4NTllMDU4NjIyMzZl
ZGVlNDNkNGVmMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBEYXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQoKQotICAgIDogbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8U1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvcj4oKSkKKyAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihtYWtlVW5pcXVlPFNRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCiB7CiAgICAgbV9zZWxmUmVmID0gdGhpczsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAppbmRleCBkOGRkY2M1OTg1NTE1NzZkMmEyYzEwZjQyZTRhZDEyYTgyNTliNTE5Li5j
MjhhOTZmNDU4MzllZjU0ZGFmMWY5OWExYWQ1OGQ3ZWNkNGE2NzU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC01NDksNyArNTQ5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZShE
YXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1f
b3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCiAgICAgaWYgKCFtX29wZW5EYXRhYmFzZU1hcCkKLSAg
ICAgICAgbV9vcGVuRGF0YWJhc2VNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlT3JpZ2lu
TWFwPigpOworICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9IG1ha2VVbmlxdWU8RGF0YWJhc2VP
cmlnaW5NYXA+KCk7CiAKICAgICBhdXRvIG9yaWdpbiA9IGRhdGFiYXNlLnNlY3VyaXR5T3JpZ2lu
KCk7CiAKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkQ3Jl
YXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgYwogICAgIC8v
IFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9pZCBtYWtpbmcgYW4gaXNv
bGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAgYXV0byogbmFtZVNldCA9
IG1fYmVpbmdDcmVhdGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZVNldCkgewotICAgICAg
ICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoQ291bnRlZFNldDxTdHJpbmc+
PigpOworICAgICAgICBhdXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxIYXNoQ291bnRlZFNldDxT
dHJpbmc+PigpOwogICAgICAgICBuYW1lU2V0ID0gb3duZWRTZXQuZ2V0KCk7CiAgICAgICAgIG1f
YmVpbmdDcmVhdGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUob3duZWRTZXQp
KTsKICAgICB9CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVj
b3JkRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgYwog
ICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9pZCBtYWtpbmcg
YW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAgYXV0byogbmFt
ZVNldCA9IG1fYmVpbmdEZWxldGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZVNldCkgewot
ICAgICAgICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+
KCk7CisgICAgICAgIGF1dG8gb3duZWRTZXQgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4o
KTsKICAgICAgICAgbmFtZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nRGVs
ZXRlZC5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50
LmgKaW5kZXggODVmMWI2MzVjM2U0OWIzZmUxYTgxZjk0ODc4MjQ4MGUxZGU0OGZiNS4uOGE1NGEz
NjY3YTA3YWFjZTAzYTk2MGZiMjU2NGY3ZWJkZjNiZDk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCkBAIC00NCw2ICs0NCw3IEBA
IGNsYXNzIFNRTFJlc3VsdFNldDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQmFja2VuZDsKIAogY2xh
c3MgU1FMU3RhdGVtZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBTUUxTdGF0ZW1lbnQoRGF0YWJhc2UmLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8U1FMVmFs
dWU+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4mJiwgUmVmUHRyPFNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2s+JiYsIGludCBwZXJtaXNzaW9ucyk7CiAgICAgflNRTFN0YXRlbWVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcAppbmRleCAyMGQ2OTczNDc3NGRiZmJmMzBiZDhmMzljZTRjNTk1NzIxNGU5MDBj
Li40Y2IwNDFlNDUyYzgwZjVmNTliYjI3MjFlYWI4ZWMxYThmNjE4MzY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApA
QCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0
ZVNxbChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYQogICAgIGVsc2UgaWYgKG1f
cmVhZE9ubHkpCiAgICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0aG9yaXplcjo6UmVh
ZE9ubHlNYXNrOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTFN0
YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFsdWVPcihWZWN0
b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJy
b3IpLCBwZXJtaXNzaW9ucyk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTFN0
YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFsdWVPcihWZWN0
b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJy
b3IpLCBwZXJtaXNzaW9ucyk7CiAKICAgICBpZiAobV9kYXRhYmFzZS0+ZGVsZXRlZCgpKQogICAg
ICAgICBzdGF0ZW1lbnQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKCk7CkBAIC0yMzQsNyArMjM0
LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KCkK
ICAgICB9CiAKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwotICAgIG1fc3FsaXRl
VHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihtX2RhdGFi
YXNlLT5zcWxpdGVEYXRhYmFzZSgpLCBtX3JlYWRPbmx5KTsKKyAgICBtX3NxbGl0ZVRyYW5zYWN0
aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0
YWJhc2UoKSwgbV9yZWFkT25seSk7CiAKICAgICBtX2RhdGFiYXNlLT5yZXNldERlbGV0ZXMoKTsK
ICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKaW5kZXgg
NzlhYTU2MTgxZmZlZjNhYjFhOTJhYTU3ZmVjZGI2ZmJhNTllNmYwYi4uMTI5ZDg2ZmZjZmJkMTU3
YTgwYjAxOTJlM2I0OTk3MTMzYmViNzgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIE5hdmlnYXRvcldlYkRyaXZlciogTmF2aWdhdG9yV2ViRHJpdmVyOjpmcm9tKE5hdmlnYXRv
ciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvcldlYkRyaXZlciogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PE5hdmlnYXRvcldlYkRyaXZlcio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJv
bShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JX
ZWJEcml2ZXI+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2
aWdhdG9yV2ViRHJpdmVyPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5n
ZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKaW5kZXggODhhOTc4MDQ0YmMxZTcwODkzMzU2NWRjNjJk
MGEzMTQ2YjM4YjQyNi4uMzc2ZDE1NWNhOWIyZjVkMmE0YWIxODUyYzc3NmQ5YzE4ZjJlNTIyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIE5hdmlnYXRvckdQVSogTmF2aWdhdG9yR1BVOjpmcm9tKE5hdmlnYXRv
ciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PE5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3Is
IHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR1BVPigpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAppbmRleCAxYjM0MjUw
NGQ2OTU1MDhmMDgxNmNjYjU1ODJmNWJkOWFhNzYxYTZiLi41ZjU3ZWYxMTc3NTMxYTBhYzNkOTYw
ZGViMWQ0Mzg3MTFhNGYwNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRp
b24uaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24gZmluYWwg
OiBwdWJsaWMgTmFtZWRUeXBlIHsKIAogICAgIGJvb2wgYWRkKEVudW1lcmF0aW9uTWVtYmVyJiYg
bWVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJl
ci5uYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVt
YmVyKSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUo
KSwgbWFrZVVuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZm
b2xkaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCmluZGV4IDBlMzFmZmJkZTBiMTQ4NmY2YzZmNjVlMjBl
YjYzOGFlODgxYjg3ZjguLmNiY2M0ODRiNjgyNTBjMGFhMDliNTk5NDNhZGM3OWU4MTAwOTI3NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaApAQCAtNTAsNiAr
NTAsNyBAQCBuYW1lc3BhY2UgTWV0YWwgewogY2xhc3MgVHlwZU5hbWVyOwogCiBjbGFzcyBFbnRy
eVBvaW50U2NhZmZvbGRpbmcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAppbmRleCA4MjU0OGI4YzZlYTBiZTViYmE4MmQ4
OTc3NzZkNzQ2MzIxMGQ5OGU2Li41MTljNzgyYmUyZmM2YWYyYWNhZDFkYmI4OGY5YWIxYTU4NDc2
NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApAQCAtNzU3LDkgKzc1Nyw5
IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IFJlbmRlckZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50CiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICB9OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9u
ID09IG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0
aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4
U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyUmVz
b3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1f
bWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0
aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4
U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyUmVz
b3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1f
bWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7CiAgICAgaWYgKCZmdW5j
dGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyKQotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNo
ZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFu
dGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZENvbG9yQXR0YWNo
bWVudHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGcmFnbWVudEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBt
X21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hl
ZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZENvbG9y
QXR0YWNobWVudHMpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC03ODMsNyArNzgzLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gQ29tcHV0ZUZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW4KICAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRl
TmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIH07CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24g
PT0gbV9tYXRjaGVkU2VtYW50aWNzLnNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBt
X2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0
ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdl
bmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21w
dXRlRW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2lj
cywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50SXRlbXMsIG1fbWF0
Y2hlZFNlbWFudGljcy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5h
bWVyLmNwcAppbmRleCAxODViYTBiMDg4YTVjZWQ0YzViNjYzNmZhOTQ0MmMwMDM0MGRkMDJhLi40
MGI2MmMzN2RiZTI1ODBlMjNkNTkwYzA5MWViYjQxN2NhOWI4MDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBl
TmFtZXIuY3BwCkBAIC0yNzIsMTkgKzI3MiwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFzZVR5cGVO
YW1lTm9kZT4gVHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZShBU1Q6OlVubmFtZWRUeXBlJiB1bgog
ICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRU
eXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2Ug
PSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVy
YXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJh
dGVOZXh0VHlwZU5hbWUoKSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CiAgICAgfQog
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewogICAgICAgICBhdXRv
JiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGVOYW1lTm9kZT4ocGFy
ZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwg
Z2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAg
IH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOiB7CiAg
ICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlSZWZl
cmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1l
KCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4
dFR5cGVOYW1lKCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CiAgICAgfQog
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYg
YXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2Vu
ZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRU
eXBlTmFtZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CiAgICAgfQogICAgIGRlZmF1bHQ6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAppbmRleCA3N2Rh
NDhlMmVjZjE2Mjk0NmNhYmNkZTUyMjgzNTliNjg4MjkwMjA3Li4xYTYxNjJhMmVmNzM3OWQzNzE5
MjQ1YzQzYTQ0ZWVlMWMyZWFlNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTk2NiwxNCArOTY2LDE0IEBAIHZv
aWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xh
cmF0aW9uKQogCiB2b2lkIENoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Np
b24mIGV4cHJlc3Npb24sIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB1bm5hbWVkVHlwZSwgQVNUOjpU
eXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewotICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3Vu
aXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOworICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdU
eXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlv
bihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CiB9CiAKIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlw
ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZT4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFu
bm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
dHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4o
V1RGTW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RG
TW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90
YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwogfQpAQCAtOTgxLDEwICs5ODEsMTAgQEAg
dm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVm
UHRyPFJlc29sdmFibGVUeXBlUmVmZXIKIHZvaWQgQ2hlY2tlcjo6Zm9yd2FyZFR5cGUoQVNUOjpF
eHByZXNzaW9uJiBleHByZXNzaW9uLCBSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6
OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7CiAg
ICAgcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5h
bWVkVHlwZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5h
ZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNv
cHlSZWYoKSkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJl
c3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAg
IH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXN1bHQpIHsKLSAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmlu
Z1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9KSk7CiAgICAgZXhwcmVzc2lvbi5zZXRU
eXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKaW5kZXggMDE2MTE0
YTYxMGUxMTAwZWZlNjk3MmNhMmEyMzUzMjdjMTUyZTdhYi4uNWU0OWYwM2EzYjM4MjZkMWZlN2Ni
M2E1NTg3OTY3NjY1NzY5ZmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApAQCAtNzQwLDE5ICs3NDAsMTkgQEAgYXV0byBQ
YXJzZXI6OnBhcnNlU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpT
ZW1hbnRpYz4sIEVycm9yPgogICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpIHsKICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpBdHRyaWJ1dGU6IHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBTdGFnZUluT3V0
U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50
aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNU
OjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6U3BlY2lhbGl6ZWQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIGNh
c2UgVG9rZW46OlR5cGU6OlJlZ2lzdGVyOiAgewogICAgICAgICBQQVJTRShyZXN1bHQsIFJlc291
cmNlU2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2Vt
YW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8
QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgZGVmYXVsdDog
IHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBCdWlsdEluU2VtYW50aWMpOwotICAgICAgICByZXR1
cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07
CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVz
dWx0KSkgfTsKICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAppbmRleCA1NTljZThiYTkz
YjI5ZDUxN2ZhNzczZjZhNWY1MjdkZGY0YTg1YjAxLi40NTcwMGNlZDhmZDM0NDljNGRhNDk1OWY3
MWE0MDJhYTAyZDZlNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApAQCAtNzQsNiArNzQsNyBAQCBjbGFz
cyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlPiB7CiAvLyBJdCBleGlzdHMgc28gd2UgY2FuIG1ha2Ugc3VyZSB0aGF0IHRo
ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgogLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTggVGhpcyB3cmFwcGVy
IG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCiBjbGFzcyBSZXNvbHZpbmdUeXBlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvbHZpbmdUeXBlKCkKICAgICAg
ICAgOiBtX2lubmVyKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4oKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCmlu
ZGV4IGJmOTBmNmMzNjA1NDhkNTJjOGZkOGVlZWM3NTNjNzhkOGZhOWJmMWMuLmQ5NTIyMzA1YWRh
MWVlOTcxZjE2NTI4ZGUwNjYwNGJiNmE5NmIwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBXb3JrZXJOYXZpZ2F0b3JHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6ZnJvbShXb3JrZXJOYXZp
Z2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBXb3JrZXJOYXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQg
PSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PFdvcmtlck5hdmln
YXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyTmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1
cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggZWQ1YTNjYzgzNGZl
MTlkNDg4OGI4NTU1MDRiYTE1NWQ0ODNmYzQwNy4uYzFiYWM4NmQzYWIyYjBkOTEzZmNlNzQyMTQz
MWE5NDQ1OWVlZDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQoKQogCiB2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiB7Ci0gICAgbV9w
ZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2Ns
aWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7CiAgICAgfSkpOwpAQCAt
MTY0LDcgKzE2NCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRDb25uZWN0KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNz
YWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2Fn
ZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewog
ICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UobWVzc2FnZSk7CiAgICAgfSkpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQog
ewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIG11dGFibGUgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIG11dGFibGUgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5hcnlEYXRhKSk7CiAgICAg
fSkpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfCiAKIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudCh1bnNpZ25lZCBidWZmZXJlZEFtb3VudCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlx
dWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
ewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkVXBkYXRl
QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0pKTsKQEAgLTE5Nyw3ICsxOTcs
NyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBk
YXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYgogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIHsKLSAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
OwogICAgIH0pKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIAogdm9pZCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVk
IHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgdW5z
aWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgbV9wZW5kaW5n
VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFz
b24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVk
QW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29u
Lmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2xvc2UodW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFz
b24pOwogICAgICAgICB9KSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1
ZmZlcmUKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwogICAgIH0pKTsKQEAgLTIzMCw3ICsyMzAs
NyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VFcnJvcigpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
KyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNjA3
MTQ0MDkyNGZiMmNlNjdmNTM0MDYyZDc5ZThlM2IwNGVlMWM1MC4uYTA3YTg3NjNhZmI5NjliNDIw
NzBiYzQ5YTg2MjM5Yjc4M2Q2ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtOTcsNyArOTcsNyBAQCBX
ZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3Qo
Y29uc3QgVVJMJiByZXF1ZXN0ZWRVUgogICAgIG1fYWxsb3dDb29raWVzID0gdmFsaWRhdGVkVVJM
LT5hcmVDb29raWVzQWxsb3dlZDsKICAgICBTdHJpbmcgdXNlckFnZW50ID0gbV9kb2N1bWVudC0+
dXNlckFnZW50KG1fZG9jdW1lbnQtPnVybCgpKTsKICAgICBTdHJpbmcgY2xpZW50T3JpZ2luID0g
bV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotICAgIG1faGFuZHNoYWtl
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJs
LCBwcm90b2NvbCwgdXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29raWVzKTsKKyAg
ICBtX2hhbmRzaGFrZSA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRV
UkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwgY2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2ll
cyk7CiAgICAgbV9oYW5kc2hha2UtPnJlc2V0KCk7CiAgICAgaWYgKG1fZGVmbGF0ZUZyYW1lci5j
YW5EZWZsYXRlKCkpCiAgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3Io
bV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKQEAgLTcwMyw3ICs3
MDMsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiB2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewog
ICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVl
dWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4o
KTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFt
ZS0+b3BDb2RlID0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZVRleHQ7CiAgICAgZnJhbWUtPmZyYW1l
VHlwZSA9IFF1ZXVlZEZyYW1lVHlwZVN0cmluZzsKICAgICBmcmFtZS0+c3RyaW5nRGF0YSA9IHN0
cmluZzsKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVU
ZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVR
dWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0g
c3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVu
aXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZy
YW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7CiAgICAgZnJhbWUtPnZlY3Rv
ckRhdGEucmVzaXplKGRhdGFMZW5ndGgpOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2Rl
LCBjb25zdCBjaGFyCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVCbG9iRnJhbWUoV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIEJsb2ImIGJsb2IpCiB7CiAgICAgQVNTRVJUKG1f
b3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAg
IGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8g
ZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBv
cENvZGU7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlwZUJsb2I7CiAgICAg
ZnJhbWUtPmJsb2JEYXRhID0gJmJsb2I7CkBAIC03NjMsNyArNzYzLDcgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgICAgICAgICBy
ZWYoKTsgLy8gV2lsbCBiZSBkZXJlZmVkIGFmdGVyIGRpZEZpbmlzaExvYWRpbmcoKSBvciBkaWRG
YWlsKCkuCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2Jsb2JMb2FkZXIpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChmcmFtZS0+YmxvYkRhdGEpOwotICAgICAgICAgICAgICAgIG1fYmxvYkxv
YWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRl
cjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRl
ciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFz
QXJyYXlCdWZmZXIsIHRoaXMpOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9
IEJsb2JMb2FkZXJTdGFydGVkOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlci0+c3RhcnQo
bV9kb2N1bWVudC5nZXQoKSwgKmZyYW1lLT5ibG9iRGF0YSk7CiAgICAgICAgICAgICAgICAgbV9v
dXRnb2luZ0ZyYW1lUXVldWUucHJlcGVuZChXVEZNb3ZlKGZyYW1lKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5jcHAKaW5kZXggZjJmYTYyMDljMDQ4ZjUxNTE4YTI1ZWVjMTNhZWYyNTY0YzlmNGU3Yi4u
ZWUzM2VhMGZlNWNmMWQ1YmY3OWEyZGEwNjcwN2I3M2NkM2E3OGM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6Oldl
YlNvY2tldERlZmxhdGVGcmFtZXIoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9j
ZXNzb3IoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZT4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKIH0KIAogYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKQEAgLTE3MCw4ICsxNzAsOCBAQCBib29sIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUoKSBjb25zdAogI2lmIFVTRShaTElCKQogdm9pZCBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJT
b2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVyTW9kZSBtb2RlKQogewotICAgIG1fZGVmbGF0
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5kb3dCaXRzLCBtb2Rl
KTsKLSAgICBtX2luZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4o
KTsKKyAgICBtX2RlZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXREZWZsYXRlcj4od2luZG93
Qml0cywgbW9kZSk7CisgICAgbV9pbmZsYXRlciA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SW5mbGF0
ZXI+KCk7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5pbml0aWFsaXplKCkgfHwgIW1faW5mbGF0ZXIt
PmluaXRpYWxpemUoKSkgewogICAgICAgICBtX2RlZmxhdGVyID0gbnVsbHB0cjsKICAgICAgICAg
bV9pbmZsYXRlciA9IG51bGxwdHI7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZs
YXRlcjo6Q28KIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKICNpZiBVU0Uo
WkxJQikKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0ZVJlc3VsdEhv
bGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRI
b2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNO
b25Db250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgfHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFt
ZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkp
IHsKQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVmbGF0ZVJlc3VsdEhvbGRl
cj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShXZWJTb2NrZXRGcgogICAgIGZyYW1l
LnBheWxvYWRMZW5ndGggPSBtX2RlZmxhdGVyLT5zaXplKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
ICNlbHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4o
dGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7
CiAjZW5kaWYKIH0KIApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6cmVzZXREZWZsYXRlQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmZsYXRlUmVz
dWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKFdlYlNvY2tldEZyYW1l
JiBmcmFtZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5mbGF0ZVJl
c3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEluZmxhdGVS
ZXN1bHRIb2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpICYmIGZyYW1lLmNvbXByZXNz
KSB7CiAgICAgICAgIHJlc3VsdC0+ZmFpbCgiQ29tcHJlc3NlZCBiaXQgbXVzdCBiZSAwIGlmIG5v
IG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwCmluZGV4IDFkNmYxNzgyMmM4MDUyODFiNzBhNDE2MjBkY2RlZTZh
ZDJhYjg4OWMuLjRhNDg2NWY4NDk0ZDA2MTNlYWMzMjFhNTk0ZjhiYWUxOTk5NmJiMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0
RGVmbGF0ZXIoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUgY29udGV4dAogewog
ICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPj0gOCk7CiAgICAgQVNTRVJUKG1fd2luZG93Qml0cyA8
PSAxNSk7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3RyZWFtPigpOworICAg
IG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8el9zdHJlYW0+KCk7
CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKIH0KIApA
QCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0KCkKIFdlYlNv
Y2tldEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcihpbnQgd2luZG93Qml0cykKICAgICA6IG1f
d2luZG93Qml0cyh3aW5kb3dCaXRzKQogewotICAgIG1fc3RyZWFtID0gc3RkOjptYWtlX3VuaXF1
ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5nZXQoKSwgMCwgc2l6ZW9m
KHpfc3RyZWFtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDk5NDA3M2VhYTVlOGIyMzBkMWM4YjAwYzE2YzU5NjQzZTk3ODQyNjguLmRjNmY2
NjBmZDM4OGNlZmZhZjBlYmVmNmU2NjBlNmI2OTViYjYzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUo
U2NyaXB0RXhlY3V0CiAKICAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzazo6Q2xlYW51cFRhc2ssCi0gICAgICAgIFtjbGllbnRXcmFwcGVyID0gY2xpZW50V3JhcHBl
ci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGVlcj4o
Y2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwg
V1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwg
JmxvYWRlclByb3h5LCBwZWVyID0gbWFrZVVuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlS
ZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAg
ICAgICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+ZmFpbGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0
aW9uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiBCcmlkZ2U6OmluaXRpYWxpemUoKSBxdWl0
dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBtYWluVGhyZWFkRGVzdHJveSgpIHRvIGRlbGV0
ZSB0aGUgcGVlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2
aWdhdG9yV2ViVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JX
ZWJWUi5jcHAKaW5kZXggZDk3YjVjMmE4NWE5ZDIzMjhmOTg0MGY0NGQzZDFlOTYzMmM4MmQ5ZS4u
Nzc2YzQzYWVjMGI5YjViZGVhZGMzZGQ4OTEyNmFjZWQ2YmE3NTE2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgTmF2aWdhdG9yV2ViVlIqIE5hdmlnYXRvcldlYlZSOjpmcm9tKE5hdmlnYXRvciogbmF2aWdh
dG9yKQogewogICAgIE5hdmlnYXRvcldlYlZSKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yV2ViVlIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViVlI+KCk7CisgICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yV2ViVlI+KCk7CiAgICAg
ICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0RpZ2VzdE9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3Bl
bnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAppbmRleCBiYzIzZDU5Y2MzMTIzN2IxNDk3YTc2
YWNjNTlkM2VhZjVkMmI1ODQwLi42Y2E2N2YzOTFhMzFmY2QzODY5MjU1YjIxZjJmY2I3ZjNmYmY5
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0RpZ2VzdE9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RydWN0
IENyeXB0b0RpZ2VzdENvbnRleHRJbXBsIDogcHVibGljIENyeXB0b0RpZ2VzdENvbnRleHQgewog
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBjcmVhdGUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvRGlnZXN0Q29u
dGV4dEltcGw+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0RpZ2VzdENvbnRl
eHRJbXBsPigpOwogICAgIH0KIAogICAgIENyeXB0b0RpZ2VzdENvbnRleHRJbXBsKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCmluZGV4IDMxNTMx
NjgwODA3YjcyZDVlZjkzODA5MTRlN2FlMjQwYWQ5ZDAzOTcuLmU1M2UxOTViMzVmNDk4Zjc5NTI1
MTUxZWJjMmFjZWI1ZmFmY2QyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vQ2xvY2tHZW5lcmljLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAog
c3RkOjp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2xv
Y2tHZW5lcmljPigpOwogfQogCiBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCmluZGV4IGM2ODkzMjE1ZjA2
YjBjNjc0ZDU0NjA4MzNiMWE0ZDUxY2MzMmI2MTQuLjllMDcxYjc4MTRlNDRmZTAwNDQyZTY2Yzcy
MGIyYmZiMzEzMDY5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVt
L21hYy9DbG9ja0NNLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9D
bG9ja0NNLm1tCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBjb25zdCBpbnQzMl90IERlZmF1bHRU
aW1lU2NhbGUgPSAxMDAwOwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IENsb2NrOjpjcmVhdGUo
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENsb2NrQ00+KCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2xvY2tDTT4oKTsKIH0KIAogQ2xvY2tDTTo6Q2xvY2tDTSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBjYWNhYjg1
NjhjODYxMTJkOWNkZmVmYzMwOTAyNmFkOWM4MTUzM2U1Li5iMzVmYzE1NjQzN2YxY2EwOWQ2NDIy
YmQ1OWM3MTMzZmFjMmM2MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKQEAgLTE1NzUsNyArMTU3NSw3IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11
dGF0ZXMoKQogewogICAgIGlmICghbV9jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKQotICAg
ICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFY
Q29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsKKyAgICAgICAgbV9jb21wdXRlZE9iamVj
dEF0dHJpYnV0ZUNhY2hlID0gbWFrZVVuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2Fj
aGU+KCk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdDb21wdXRlZE9iamVj
dEF0dHJpYnV0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApp
bmRleCBlZGZkYmIwYTA2ZmQ2ZWRhMjUwNDhiOTcxOWI5ZWYxYmE5ZTEzNDQzLi5lNmRlYTk2MTFm
OWI0ODgwYTVhMTliOWFkMWUxYmRlNzFjMTg0Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9u
Ojp1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWsgZGlkU2VlaywgU3luY2hyb25vdXNseU5vdGlm
eSBzeW5jCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHN5bmNocm9ub3VzbHkgbm90aWZ5
IGlzIGZhbHNlLCBxdWV1ZSBhIG1pY3JvdGFzayB0byBydW4gZmluaXNoIG5vdGlmaWNhdGlvbiBz
dGVwcyBmb3IgYW5pbWF0aW9uIHVubGVzcyB0aGVyZQogICAgICAgICAgICAgLy8gaXMgYWxyZWFk
eSBhIG1pY3JvdGFzayBxdWV1ZWQgdG8gcnVuIHRob3NlIHN0ZXBzIGZvciBhbmltYXRpb24uCiAg
ICAgICAgICAgICBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IHRy
dWU7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKICAgICAgICAgICAgICAgICBpZiAobV9maW5p
c2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcpIHsKICAgICAgICAgICAgICAgICAg
ICAgbV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICAgICAgZmluaXNoTm90aWZpY2F0aW9uU3RlcHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKaW5kZXggN2RhNDZhNjE1MDRlZjI0
ODE1YTY5NGRmYmExMmMyOGIxZWY0ZmU2Ni4uNjIxYjg5MDUxYmI0OGRiMDMwMWVhODA0N2M3YWZl
ZmZiNjhjZGU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJv
bWlzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVBy
b3h5LmgKQEAgLTYwLDYgKzYwLDcgQEAgY2xhc3MgRE9NUHJvbWlzZVByb3h5IHsKIAogdGVtcGxh
dGU8PgogY2xhc3MgRE9NUHJvbWlzZVByb3h5PElETFZvaWQ+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01Qcm9taXNlUHJveHkoKSA9IGRlZmF1bHQ7CiAg
ICAgfkRPTVByb21pc2VQcm94eSgpID0gZGVmYXVsdDsKQEAgLTg0LDYgKzg1LDcgQEAgY2xhc3Mg
RE9NUHJvbWlzZVByb3h5PElETFZvaWQ+IHsKIC8vIEZvbnRGYWNlIGFuZCBGb250RmFjZVNldC4K
IHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiBjbGFzcyBET01Qcm9taXNlUHJveHlXaXRoUmVz
b2x2ZUNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB1c2luZyBSZXNvbHZlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHR5cGVuYW1lIElETFR5cGU6
OlBhcmFtZXRlclR5cGUgKCk+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAppbmRleCBkYjBjMWRjNzZmOGEyODk3MDQ1ZWUyY2ZjOTE5MjNkNThk
ZjFiNmY5Li5jNWM0NzA2MWJmYWNhMWZjYTcyOGJlMjdiMGEyYjRhOWYwYjMwMjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTIxMCw3
ICsyMTAsNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNH
bG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEpTQzo6TWljcgogICAgIEpTRE9NV2luZG93QmFzZSYg
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSY+KG9iamVjdCk7CiAKICAg
ICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3Qs
IFdURk1vdmUodGFzaykpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1
ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVu
aXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2Fs
bCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXRDdXN0b20uY3BwCmluZGV4IDYyOTVmNTg0Y2ZlOGExNzI5ZGRmNmIxOGQ3NzU0OWZk
NDRjOWEwYmUuLmRiNWU3NzM0OTBiZWRmYmYzZTBjMTBjZjIzZDBhMzZjOGEzYmRhODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3Bw
CkBAIC01NiwxMSArNTYsMTEgQEAgRXZlbnRUYXJnZXQqIEpTRXZlbnRUYXJnZXQ6OnRvV3JhcHBl
ZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiBzdGQ6OnVuaXF1ZV9wdHI8SlNFdmVudFRhcmdldFdy
YXBwZXI+IGpzRXZlbnRUYXJnZXRDYXN0KFZNJiB2bSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CiAg
ICAgaWYgKGF1dG8qIHRhcmdldCA9IGpzRHluYW1pY0Nhc3Q8SlNFdmVudFRhcmdldCo+KHZtLCB0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0
V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVkKCksICp0YXJnZXQpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVkKCksICp0YXJnZXQp
OwogICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHZtLCB0aGlzVmFsdWUpKQot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4od2lu
ZG93LT53cmFwcGVkKCksICp3aW5kb3cpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2
ZW50VGFyZ2V0V3JhcHBlcj4od2luZG93LT53cmFwcGVkKCksICp3aW5kb3cpOwogICAgIGlmIChh
dXRvKiBzY29wZSA9IHRvSlNXb3JrZXJHbG9iYWxTY29wZSh2bSwgdGhpc1ZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHNjb3BlLT53
cmFwcGVkKCksICpzY29wZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJn
ZXRXcmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckds
b2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckds
b2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZDgzMTYwNGNiYWViODdmMDdkMTJlYWRkYTRiZjA1MzFh
NzBiYjQwMi4uOWJkNjY0NDYwMTcwNTQ5NWE5NGU3YjNmYWRmMDQ4ZjNjN2IwNDNmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVC
YXNlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6
OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKCiAKICAg
ICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3Qs
IFdURk1vdmUodGFzaykpOwogICAgIGF1dG8mIGNvbnRleHQgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBt
YWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1
ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
ewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAxMTRm
ZjNjOGE1ZGYwMzkwMjgzYjFhNjdjZTYwOGQ3ZjQyNDZlN2MyLi4zNWNjZDQ5NjM1ZTA2MTE5NGU5
NzI5M2U3MTJmN2FhMzcyYzQ5YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTMzMDAsNyArMzMwMCw3IEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
Pj4gdHJhbnNmZXJBcnJheUJ1ZmZlCiAgICAgaWYgKGFycmF5QnVmZmVycy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjb250ZW50cyA9IHN0ZDo6bWFrZV91
bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1ZmZlcnMuc2l6ZSgpKTsKKyAg
ICBhdXRvIGNvbnRlbnRzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFy
cmF5QnVmZmVycy5zaXplKCkpOwogCiAgICAgSGFzaFNldDxKU0M6OkFycmF5QnVmZmVyKj4gdmlz
aXRlZDsKICAgICBmb3IgKHNpemVfdCBhcnJheUJ1ZmZlckluZGV4ID0gMDsgYXJyYXlCdWZmZXJJ
bmRleCA8IGFycmF5QnVmZmVycy5zaXplKCk7IGFycmF5QnVmZmVySW5kZXgrKykgewpAQCAtMzQ1
MSw3ICszNDUxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IHdhc21Nb2R1bGVzOwogI2VuZGlmCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IHN0
ZDo6bWFrZV91bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBtYWtlVW5p
cXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICBhdXRvIGNvZGUgPSBDbG9uZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZSgmc3RhdGUsIHZhbHVlLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVm
ZmVycywgaW1hZ2VCaXRtYXBzLAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgd2Fz
bU1vZHVsZXMsIApAQCAtMzQ2OSw3ICszNDY5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYK
IAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3Zl
KGJ1ZmZlciksIGJsb2JVUkxzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZVJldHVy
blZhbHVlKCksIGNvbnRleHQgPT0gU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNz
YWdlID8gV1RGTW92ZShzaGFyZWRCdWZmZXJzKSA6IG51bGxwdHIsIFdURk1vdmUoaW1hZ2VCdWZm
ZXJzKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgICAgICAgICAsIHN0ZDo6bWFr
ZV91bmlxdWU8V2FzbU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKKyAgICAgICAgICAgICAgICAs
IG1ha2VVbmlxdWU8V2FzbU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKICNlbmRpZgogICAgICAg
ICAgICAgICAgICkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA1YzQ2NjI5NGJlZTU2YzIxYmYwZjYzZDE1YjBmOGRm
MGYyN2EzYTBlLi40ZjRiMGNmM2I3ZWVjZGRkMDc4NzAyNTUyMDg4OTVlNDVmYTJhMDdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aApAQCAtMTY0LDcgKzE2NCw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIEFTU0VSVChhcnJheUxlbmd0aCk7CiAKLSAgICBhdXRvIGFycmF5QnVm
ZmVyQ29udGVudHNBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5PigpOworICAgIGF1dG8gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gbWFrZVVuaXF1ZTxB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgd2hpbGUgKGFycmF5TGVuZ3RoLS0pIHsK
ICAgICAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShidWZmZXJTaXplKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVKU0NsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUpTQ2xpZW50RGF0YS5jcHAKaW5kZXggMjQ2ZjY0YTlmNjMyMmI1ODcwY2JiNjgyZWRiMmQ0ZWRi
OTUzZWM3Yy4uM2IxMTI1MmFlNjRjYWYyZTRmZTczOWUzMWVlMTA5OTU0ZDU2YTU5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKFZN
KiB2bSkKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IG5ldyBKU1ZNQ2xpZW50RGF0
YSgqdm0pOwogICAgIHZtLT5jbGllbnREYXRhID0gY2xpZW50RGF0YTsgLy8gflZNIGRlbGV0ZXMg
dGhpcyBwb2ludGVyLgogICAgIAotICAgIHZtLT5oZWFwLmFkZE1hcmtpbmdDb25zdHJhaW50KHN0
ZDo6bWFrZV91bmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGllbnREYXRhKSk7
CisgICAgdm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFpbnQobWFrZVVuaXF1ZTxET01HQ091dHB1
dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERhdGEpKTsKICAgICAgICAgCiAgICAgY2xpZW50RGF0
YS0+bV9ub3JtYWxXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlKCp2bSwgdHJ1ZSk7CiAg
ICAgdm0tPm1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgV2ViQ29yZVR5cGVk
QXJyYXlDb250cm9sbGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAxNmE3NmM0OTUyOWE0YmI4NzFjYjY2
Y2EzYWQ3NWEyZDc2YTgwNjU1Li5kMjM5ODU3YWEzYmRkZTlmZWI5Y2I4NzQwZmNmNWQ2NDllMzUw
ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6aW5pdFNjcmlwdCgpCiAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAg
QVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVE
aXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25z
b2xlQ2xpZW50PigqbV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9jb25zb2xlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV93b3JrZXJHbG9iYWxTY29wZSk7CiAg
ICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobV9jb25zb2xl
Q2xpZW50LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2Mv
Y19jbGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAppbmRleCAy
OWM4MTg2ODM2ZWEwNTQxMWU4ZjFlZDY0MWMwNTcwY2U4MTc2ODE1Li5hYTU2ZTJmZGU4NTU3N2Fj
ZjljMDQ3NGM4OTg3N2Y0ZTBkNWM1MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2NsYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNw
cApAQCAtODEsNyArODEsNyBAQCBNZXRob2QqIENDbGFzczo6bWV0aG9kTmFtZWQoUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogICAgIGNvbnN0IENJ
bnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsK
ICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAgaWYgKG1faXNhLT5o
YXNNZXRob2QgJiYgbV9pc2EtPmhhc01ldGhvZChvYmosIGlkZW50KSkgewotICAgICAgICBhdXRv
IG1ldGhvZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q01ldGhvZD4oaWRlbnQpOworICAgICAgICBhdXRv
IG1ldGhvZCA9IG1ha2VVbmlxdWU8Q01ldGhvZD4oaWRlbnQpOwogICAgICAgICBDTWV0aG9kKiBy
ZXQgPSBtZXRob2QuZ2V0KCk7CiAgICAgICAgIG1fbWV0aG9kcy5zZXQobmFtZS5pbXBsKCksIFdU
Rk1vdmUobWV0aG9kKSk7CiAgICAgICAgIHJldHVybiByZXQ7CkBAIC0xMDMsNyArMTAzLDcgQEAg
RmllbGQqIENDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBp
bnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9pc2EtPmhhc1Byb3BlcnR5ICYmIG1faXNhLT5o
YXNQcm9wZXJ0eShvYmosIGlkZW50KSkgewotICAgICAgICBhdXRvIGZpZWxkID0gc3RkOjptYWtl
X3VuaXF1ZTxDRmllbGQ+KGlkZW50KTsKKyAgICAgICAgYXV0byBmaWVsZCA9IG1ha2VVbmlxdWU8
Q0ZpZWxkPihpZGVudCk7CiAgICAgICAgIENGaWVsZCogcmV0ID0gZmllbGQuZ2V0KCk7CiAgICAg
ICAgIG1fZmllbGRzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShmaWVsZCkpOwogICAgICAgICBy
ZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VK
U0MuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKaW5kZXggZjJmNjIw
ODJhODA4YTE5ZjEwYTVkOTM1ZDkyMmI3NzNjMTIyMWMyOC4uMDRjZGRjZDI0Y2FhODI5YzMyZTU2
ZWMyNzNhZmJkMzUxZjI1NGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pz
Yy9CcmlkZ2VKU0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5o
CkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFJvb3RPYmplY3Q7CiBjbGFzcyBSdW50aW1lT2JqZWN0
OwogCiBjbGFzcyBGaWVsZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0
IEluc3RhbmNlKikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZXRWYWx1ZVRvSW5zdGFu
Y2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBjb25zdCA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQppbmRleCBiODZmNzUxYTBhNzEzOGJl
MDA3NzZhNzhjYmMyYTZkNDVkZDM3NTAyLi5hM2Q4ZDMyZjI4ZGQ4MDU4YTRhYjQ0MjczOTUzNDQw
NzRmMjZjNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2Ns
YXNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KQEAg
LTEzNCw3ICsxMzQsNyBAQCBNZXRob2QqIE9iamNDbGFzczo6bWV0aG9kTmFtZWQoUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdAogICAgICAgICAgICAgICAgIG1hcHBl
ZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpvYmpjTWV0aG9kU2Vs
ZWN0b3JdOwogCiAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBlZE5hbWUgaXNF
cXVhbDooX19icmlkZ2UgTlNTdHJpbmcqKW1ldGhvZE5hbWUuZ2V0KCldKSB8fCAhc3RyY21wKG9i
amNNZXRob2RTZWxlY3Rvck5hbWUsIGJ1ZmZlci5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KHRoaXNDbGFzcywgb2Jq
Y01ldGhvZFNlbGVjdG9yKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IG1ha2VVbmlx
dWU8T2JqY01ldGhvZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpOwogICAgICAgICAg
ICAgICAgIG1ldGhvZFB0ciA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtX21ldGhv
ZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTE4OSw3ICsxODksNyBAQCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVk
KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29ucwogICAg
ICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JLZXk6
VVRGOEtleU5hbWVdOwogCiAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBlZE5h
bWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB8fCBba2V5
TmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHsKLSAg
ICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjRmllbGQ+
KChfX2JyaWRnZSBDRlN0cmluZ1JlZilrZXlOYW1lKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5l
d0ZpZWxkID0gbWFrZVVuaXF1ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilrZXlO
YW1lKTsKICAgICAgICAgICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdldCgpOwogICAgICAgICAg
ICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobmV3RmllbGQpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyMCw3ICsyMjAsNyBAQCBGaWVsZCogT2JqY0Ns
YXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0
YW5jZSkgY29ucwogICAgICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3
ZWJTY3JpcHROYW1lRm9yS2V5Om9iamNJdmFyTmFtZV07CiAKICAgICAgICAgICAgICAgICBpZiAo
KG1hcHBlZE5hbWUgJiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKilm
aWVsZE5hbWUuZ2V0KCldKSB8fCAhc3RyY21wKG9iamNJdmFyTmFtZSwganNOYW1lLmRhdGEoKSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqY0ZpZWxkPihvYmpjSVZhcik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQg
PSBtYWtlVW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOwogICAgICAgICAgICAgICAgICAgICBm
aWVsZCA9IG5ld0ZpZWxkLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBtX2ZpZWxkQ2FjaGUu
YWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4
IGUwOGIwNDhlM2I1Njg0Mjk4Y2RlZmQ5M2ViOTE4ODM4OTE1NmY0MzguLjNiOTNlMTg3ODM4NTRj
MjQ0NDZlMWNmYTU3NTg0NjZmMGYwYTdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW0KQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAKICAgICBpZiAoW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopXSl7CiAg
ICAgICAgIE9iamNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0NsYXNzKj4ob2Jq
Y0luc3RhbmNlLT5nZXRDbGFzcygpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamNNZXRo
b2Q+IGZhbGxiYWNrTWV0aG9kKHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhvZD4ob2JqY0NsYXNz
LT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0
aEFyZ3VtZW50czopKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxs
YmFja01ldGhvZChtYWtlVW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBzZWxl
Y3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkp
OwogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+anNDYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwog
ICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZUlkZW50aWZpZXIu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+
aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNw
cAppbmRleCA4M2Q0NGUwNjdmYmRmNTQ3ZjZjODhiNjdhMzZlYjUzZjY5MTQ2NmVlLi5mMTcxYTU4
MjAzZjk4YWYxNTU0NzgwZTA1MTllMDRhMWU1M2EwYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKQEAgLTEz
NSw3ICsxMzUsNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6cHJpbnQoKSBjb25zdAogI2Vu
ZGlmCiAKIENvbWJpbmVkVVJMRmlsdGVyczo6Q29tYmluZWRVUkxGaWx0ZXJzKCkKLSAgICA6IG1f
cHJlZml4VHJlZVJvb3Qoc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpKQorICAg
IDogbV9wcmVmaXhUcmVlUm9vdChtYWtlVW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkpCiB7CiB9
CiAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVy
bih1aW50NjRfdCBhY3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZQogICAgICAgICBp
ZiAobmV4dEVudHJ5SW5kZXggIT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgICAgIGxhc3RQcmVm
aXhUcmVlID0gbGFzdFByZWZpeFRyZWUtPmVkZ2VzW25leHRFbnRyeUluZGV4XS5jaGlsZC5nZXQo
KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBsYXN0UHJlZml4VHJlZS0+ZWRnZXMuYXBw
ZW5kKFByZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0LmludGVybmVkKHRlcm0pLCBzdGQ6Om1ha2Vf
dW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCl9KSk7CisgICAgICAgICAgICBsYXN0UHJlZml4VHJl
ZS0+ZWRnZXMuYXBwZW5kKFByZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0LmludGVybmVkKHRlcm0p
LCBtYWtlVW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCl9KSk7CiAgICAgICAgICAgICBsYXN0UHJl
Zml4VHJlZSA9IGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5sYXN0KCkuY2hpbGQuZ2V0KCk7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCmluZGV4IDhjN2UzZjdkN2YxZTBkNTVh
YWQ4OTM0YWJiYTVhYTcwZmI4Zjg1Y2YuLjc3ZmViNjBjNTBiYzhhNGYyNGIyNzY5NmFkMTEwZDFl
ZGE3NDI4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC00OSw2ICs0OSw3IEBAIHN0cnVj
dCBSZXNvdXJjZUxvYWRJbmZvOwogLy8gMSkgSXQgc3RvcmVzIHRoZSBydWxlcyBmb3IgZWFjaCBj
b250ZW50IGV4dGVuc2lvbi4KIC8vIDIpIEl0IHByb3ZpZGVzIEFQSXMgZm9yIHRoZSBXZWJDb3Jl
IGludGVyZmFjZXMgdG8gdXNlIHRob3NlIHJ1bGVzIGVmZmljaWVudGx5LgogY2xhc3MgQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICAvLyAtIFJ1bGUgbWFuYWdlbWVudCBpbnRlcmZhY2UuIFRoaXMgY2FuIGJlIHVzZWQg
YnkgdXBwZXIgbGF5ZXIuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0
bGVDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKaW5k
ZXggOTZlMmQ2MzRiODkzYjM5OTMwNGE4YjJiMjg1ZTYxZjRlNDY5ZGMwYy4uYjJhOWE3ODM1MjI3
NzI4M2Y5NWQ4NDlkMDNiMTU2ZmNkYzcyMWRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRs
ZUNyeXB0by5jcHAKQEAgLTExNSwzMSArMTE1LDMxIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0Fs
CiAgICAgY2FzZSBPcGVyYXRpb25zOjpEZWNyeXB0OgogICAgICAgICBzd2l0Y2ggKCppZGVudGlm
aWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtD
UzFfdjFfNToKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQOiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bVJzYU9hZXBQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0p
OwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1S
c2FPYWVwUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
Q0JDOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DRkI6IHsK
ICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3Jp
dGhtQWVzQ2JjQ2ZiUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVu
aXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DVFI6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25h
cnk8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHBhcmFtcyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkFFU19HQ006IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERp
Y3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhp
c3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAg
cmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMTUx
LDcgKzE1MSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIHN3aXRjaCAoKmlk
ZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FT
U0FfUEtDUzFfdjFfNToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpI
TUFDOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6IHsKICAgICAgICAg
ICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQ
YXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CkBAIC0xNjAsMTMgKzE2MCwxMyBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBu
b3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhj
ZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRp
Zmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNv
bnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oc3RhdGUsIHZhbHVl
LmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlv
biB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1zKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihw
YXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoK
QEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBu
b3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlJTQUVTX1BLQ1MxX3YxXzU6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERp
Y3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0
KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgpAQCAtMjAzLDcgKzIw
Myw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50
aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlm
aWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmll
ciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJh
bXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NU
UjoKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzogewogICAgICAgICAgICAgYXV0
byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+
KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAg
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBh
cmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFl
c0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewpAQCAtMjIzLDE0ICsy
MjMsMTQgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRl
bnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50
aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlm
aWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBh
cmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUht
YWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6IHsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHN0YXRl
LCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBF
eGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZh
dWx0OgpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAKICAgICAg
ICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNk
aEtleURlcml2ZVBhcmFtcz4oc3RhdGUsIG5ld1ZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVj
ZGhLZXlEZXJpdmVQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkhLREY6IHsKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9B
bAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAg
ICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VV
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UEJLREYyOiB7CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAg
ICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAg
ICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZh
bHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobVBia2RmMlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0
aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6SW1wb3J0S2V5OgogICAg
ICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNToKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlJTQV9QU1M6CkBAIC0yOTAsNyArMjkwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5
cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwog
ICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFz
ZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1z
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6QUVTX0dDTToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfQ0ZCOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsKICAgICAgICAgICAgIGF1
dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFt
cz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKQEAgLTMwNywxOSArMzA3LDE5IEBAIHN0YXRpYyBFeGNl
cHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1h
bGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRp
b24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVy
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAg
cmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9u
YXJ5PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQg
PSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpIS0RGOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBC
S0RGMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yIH07CkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwK
ICAgICBjYXNlIE9wZXJhdGlvbnM6OlVud3JhcEtleToKICAgICAgICAgc3dpdGNoICgqaWRlbnRp
ZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yIH07CkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAg
IGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFy
YW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1z
PihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsKQEAgLTM1NCwx
MiArMzU0LDEyIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFz
aElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJ
ZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRl
bnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
PihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOgogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC01MjAsMTYg
KzUyMCwxNiBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+IGNyb3NzVGhyZWFkQ29weUltcG9ydFBhcmFtcyhjbwogewogICAgIHN3aXRjaCAoaW1wb3J0
UGFyYW1zLnBhcmFtZXRlcnNDbGFzcygpKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzOjpDbGFzczo6Tm9uZTogewotICAgICAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CiAgICAgICAgIHJlc3Vs
dC0+aWRlbnRpZmllciA9IGltcG9ydFBhcmFtcy5pZGVudGlmaWVyOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNz
OjpFY0tleVBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxn
b3JpdGhtRWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0
aG1FY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6SG1hY0tleVBhcmFtczoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oY3Jvc3NU
aHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGltcG9ydFBh
cmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tl
eVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQ
YXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM6OkNsYXNzOjpSc2FIYXNoZWRJbXBvcnRQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oY3Jvc3NUaHJl
YWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oaW1w
b3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1S
c2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggZGJjY2M5
MDBmMzM3NDhjZDIwNjdmNjBjYjI5MGMwYmQ2MDA2NTUzMy4uYTQyZjU2NGY4MWZlMWYwZWEwOTQ0
M2QxZjEwNTNjMWMzY2QwY2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlv
blZhbHVlLmNwcApAQCAtMjE3LDEyICsyMTcsMTIgQEAgY2xhc3MgQ1NTQ2FsY1ByaW1pdGl2ZVZh
bHVlIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGNhdGVnb3J5KCkpIHsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5
OjpOdW1iZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVz
c2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9hdFZhbHVlKCkpOwog
ICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0aDoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1
ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExl
bmd0aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNv
cmU6OkZpeGVkKSk7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudDoK
ICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50TGVuZ3RoOiB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obV92
YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZl
cnNpb24+KGNvbnZlcnNpb25EYXRhKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4obV92YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRD
b252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gT25seSB0eXBlcyB0aGF0IGNvdWxkIGJlIHBhcnQgb2YgYSBMZW5ndGgg
ZXhwcmVzc2lvbiBjYW4gYmUgY29udmVydGVkCiAgICAgICAgIC8vIHRvIGEgQ2FsY0V4cHJlc3Np
b25Ob2RlLiBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50TnVtYmVyIG1ha2VzIG5vIHNlbnNl
IGFzIGEgTGVuZ3RoLgpAQCAtNTIwLDcgKzUyMCw3IEBAIGNsYXNzIENTU0NhbGNPcGVyYXRpb24g
ZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIG5vZGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3Zl
KG5vZGUpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxj
RXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShub2RlcyksIG1fb3BlcmF0b3IpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShub2Rl
cyksIG1fb3BlcmF0b3IpOwogICAgIH0KIAogICAgIGRvdWJsZSBkb3VibGVWYWx1ZSgpIGNvbnN0
IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCmlu
ZGV4IGM0NGNlYmM1MTIwZWQ4MzI2ZDlhMWIyYTY1NmI5MzY3YjZlMTkxMjguLmU1YWU4Yjc3YTUx
NGYwOWMzYjQ5NDQxYjU2MmY1YzJhMWVjNzUxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCkBAIC0xNjcsMTEgKzE2NywxMSBAQCB2b2lkIENTU0Rl
ZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogICAgICAgICBzaW1wbGVE
ZWZhdWx0U3R5bGVTaGVldCA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
KCFkZWZhdWx0U3R5bGUpOwotICAgICAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgICAgICBkZWZhdWx0UXVpcmtzU3R5bGUg
PSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIH0KIAotICAgIGRlZmF1bHRT
dHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7Ci0gICAgZGVmYXVs
dFByaW50U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAg
IGRlZmF1bHRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVm
YXVsdFByaW50U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIG1l
ZGlhUXVlcnlTdHlsZVNoZWV0ID0gJlN0eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKENTU1BhcnNl
ckNvbnRleHQoVUFTaGVldE1vZGUpKS5sZWFrUmVmKCk7CiAKICAgICAvLyBTdHJpY3QtbW9kZSBy
dWxlcy4KQEAgLTE5MCwxMCArMTkwLDEwIEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjps
b2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKICAgICBBU1NFUlQoIWRlZmF1bHRTdHlsZSk7CiAgICAg
QVNTRVJUKCFzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCk7CiAKLSAgICBkZWZhdWx0U3R5bGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRTdHlsZSA9
IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgLy8gVGhlcmUgYXJlIG5vIG1l
ZGlhLXNwZWNpZmljIHJ1bGVzIGluIHRoZSBzaW1wbGUgZGVmYXVsdCBzdHlsZS4KICAgICBkZWZh
dWx0UHJpbnRTdHlsZSA9IGRlZmF1bHRTdHlsZTsKLSAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRRdWlya3NT
dHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAKICAgICBzaW1wbGVEZWZh
dWx0U3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0LCBz
dHJsZW4oc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQoKnNpbXBsZURlZmF1bHRTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggNzcwOWI1ZGVhZmJmZTlmOWFiMTFhYzA3
N2M2MTlkNzk0ZDE2NDJmMi4uNjQ2YzE0YTExYWM2NDViOTkyNjE0OWYyOWU5ODAwYzRjNzI2N2Jj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC03NywxMCArNzcsMTAgQEAgdm9p
ZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZhY2UsIENTU1Zh
bHVlTGlzdCYgc3JjTGlzdCwgRG8KICAgICAgICAgICAgIGJvb2wgYWxsb3dEb3dubG9hZGluZyA9
IGZvdW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRvd25sb2FkYWJsZUJpbmFy
eUZvbnRzRW5hYmxlZCgpKTsKICAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5nICYmIGl0
ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBkb2N1bWVudCkgewogICAgICAgICAgICAgICAgIGlm
IChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250KGRvY3VtZW50LCBmb3Vu
ZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpKQotICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291
cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKKyAgICAgICAgICAg
ICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2Us
IGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNv
dXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwgZm9udEZhY2VFbGVtZW50
KTsKKyAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZv
bnRGYWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxlbWVudCk7CiAKICAg
ICAgICAgaWYgKHNvdXJjZSkKICAgICAgICAgICAgIGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1v
dmUoc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCAwNWUz
YTNmNmUyMWJjOTI4MTc4NTU2OWExNGFhNTBmZjUyZTRhMjcwLi4xOGU4MzRkNjkwYTZlYjUxMDFk
YzkwYzhkZTVkYjVlN2ExYjBjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5j
cHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZv
bnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29uc3QgU3RyaW5nJiBmYW1pbAogICAgICAgICBm
YW1pbHlMaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVGb250RmFt
aWx5VmFsdWUoZmFtaWx5TmFtZSkpOwogICAgICAgICBmYWNlLT5zZXRGYW1pbGllcyhmYW1pbHlM
aXN0LmdldCgpKTsKICAgICAgICAgZmFjZS0+c2V0Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyhp
dGVtKTsKLSAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250
RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOworICAgICAgICBmYWNlLT5hZG9w
dFNvdXJjZShtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmYWNlLmdldCgpLCBmYW1pbHlO
YW1lKSk7CiAgICAgICAgIEFTU0VSVCghZmFjZS0+Y29tcHV0ZUZhaWx1cmVTdGF0ZSgpKTsKICAg
ICAgICAgZmFjZXMuYXBwZW5kKFdURk1vdmUoZmFjZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyb3VwaW5nUnVsZS5jcHAKaW5kZXggZGU2ZjM5ZDNmNWQ4NzMxZDk5ZTVlYjNjOTY4ZTI5
YWQxZWFjYmZlNi4uYzZjNWMzOTU0MGE1YzUwNWNkZjRkNTljNzQ2YzM5MTg1YzllMDNiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBD
U1NSdWxlKiBDU1NHcm91cGluZ1J1bGU6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiBDU1NS
dWxlTGlzdCYgQ1NTR3JvdXBpbmdSdWxlOjpjc3NSdWxlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTR3JvdXBpbmdSdWxlPj4oY29uc3Rf
Y2FzdDxDU1NHcm91cGluZ1J1bGUmPigqdGhpcykpOworICAgICAgICBtX3J1bGVMaXN0Q1NTT01X
cmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTR3JvdXBpbmdSdWxlPj4oY29u
c3RfY2FzdDxDU1NHcm91cGluZ1J1bGUmPigqdGhpcykpOwogICAgIHJldHVybiAqbV9ydWxlTGlz
dENTU09NV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJh
dG9yVmFsdWUuY3BwCmluZGV4IGZmZGQzZDBhYTY1N2YyNWVhZjMxZDU3MGM1ODY4ZWQ1MzA5ZTJl
ZmQuLjU1NTFmMmM2OTE3ZDAzMzA3MjZhY2RmODEwOTFhOTFmYWI0ZTBiNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAgLTExMCw3ICsxMTAs
NyBAQCBHZW5lcmF0ZWRJbWFnZSogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VG
b3JTaXplKEZsb2F0U2l6ZSBzaXplKQogdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzYXZl
Q2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplLCBHZW5lcmF0ZWRJbWFnZSYgaW1hZ2Up
CiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlcy5jb250YWlucyhzaXplKSk7Ci0gICAgbV9pbWFnZXMu
YWRkKHNpemUsIHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBz
aXplLCBpbWFnZSkpOworICAgIG1faW1hZ2VzLmFkZChzaXplLCBtYWtlVW5pcXVlPENhY2hlZEdl
bmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKIH0KIAogdm9pZCBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjpldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEZsb2F0U2l6ZSBzaXplKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IGM5MDk4MzJkYTBlNTE5
MDI1MzUxM2EzOTgzMTkxYTdjMmYzOTMwMDUuLjZmMWViMzM4NmQ5ZmJjNzJkNDQzNzg1ZDFkMTlj
NGRkOGM1YzM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNS
dWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAg
LTIyMCw3ICsyMjAsNyBAQCBDU1NLZXlmcmFtZVJ1bGUqIENTU0tleWZyYW1lc1J1bGU6Oml0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0CiBDU1NSdWxlTGlzdCYgQ1NTS2V5ZnJhbWVzUnVsZTo6Y3Nz
UnVsZXMoKQogewogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKLSAgICAgICAgbV9y
dWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENT
U0tleWZyYW1lc1J1bGU+PigqdGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIg
PSBtYWtlVW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCmluZGV4IDQ4MGE4OTg1MjM3YWRhOTBhMTE3OGUwYjI3OWUwZTY2ODA3
ZTMzNDEuLmM4OGQxZWRjOTNiN2E2YzgzZjIxNzdiYWM3NjdmOWI3ODJlZTc1OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8Q1NT
UnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKCkKICAgICBpZiAoIWNhbkFjY2Vzc1J1
bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghbV9ydWxlTGlzdENTU09N
V3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlx
dWU8U3R5bGVTaGVldENTU1J1bGVMaXN0Pih0aGlzKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09N
V3JhcHBlciA9IG1ha2VVbmlxdWU8U3R5bGVTaGVldENTU1J1bGVMaXN0Pih0aGlzKTsKICAgICBy
ZXR1cm4gbV9ydWxlTGlzdENTU09NV3JhcHBlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAppbmRleCA2NWEyZmRmOGRmYWNiNGQ3ZjcxZDc2MWNi
MjE2NmIxYTkyODRjMDcwLi45MTRiZGU0YTJkZTlhYTIxMDZjMDEwNjNiODA4ZDljYTRmZmY2ZGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcApAQCAtNDUsNyAr
NDUsNyBAQCBET01DU1NQYWludFdvcmtsZXQqIERPTUNTU1BhaW50V29ya2xldDo6ZnJvbShET01D
U1NOYW1lc3BhY2UmIGNzcykKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8
RE9NQ1NTUGFpbnRXb3JrbGV0Kj4oU3VwcGxlbWVudDxET01DU1NOYW1lc3BhY2U+Ojpmcm9tKCZj
c3MsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAg
YXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01DU1NQYWludFdvcmtsZXQ+
KGNzcyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NQ1NTUGFp
bnRXb3JrbGV0Pihjc3MpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQo
KTsKICAgICAgICAgcHJvdmlkZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3
U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01D
U1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NS
ZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAppbmRleCA3ZWNkOTNkN2RjM2Q0MzJlYWY4MmJjOTU2
ZTYxZDQ4OWE1MTA2MjViLi4wZGY2YWFlOTZmMGUxYzcwYjM3NTU2MTY0OWVlMzVkMjhlYjRjMzlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkuY3BwCkBAIC04NCw3ICs4NCw3IEBAIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkq
IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20oRE9NQ1NTTmFtZXNwYWNlCiB7CiAg
ICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHkqPihTdXBwbGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZyb20oJmNzcywgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNz
cyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NQ1NTUmVnaXN0
ZXJDdXN0b21Qcm9wZXJ0eT4oY3NzKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1l
bnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmY3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZN
b3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxl
U2V0cy5jcHAKaW5kZXggZDg1OTZmZDFiMjQ1OWRlMDdlMWM4OTljYzA3OWZjMTk4NTExNjVlOS4u
ODJiN2ZjYzMwZTU4Mjc0OTkyMDJlMjhiODMwODZjZjBmYTQ0YWM1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBib29sIERvY3VtZW50
UnVsZVNldHM6OnNfaXNJbnZhbGlkYXRpbmdTdHlsZVdpdGhSdWxlU2V0cyB7IGZhbHNlIH07CiBE
b2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIpCiAgICAgOiBtX3N0eWxlUmVzb2x2ZXIoc3R5bGVSZXNvbHZlcikKIHsKLSAgICBtX2F1
dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fYXV0aG9yU3R5
bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1
dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgRG9jdW1lbnRSdWxl
U2V0czo6dXBkYXRlVXNlckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQoKSBjb25zdAogCiAg
ICAgLy8gTWVkaWEgcXVlcmllcyBvbiB1c2VyIGFnZW50IHNoZWV0IG5lZWQgdG8gZXZhbHVhdGVk
IGluIGRvY3VtZW50IGNvbnRleHQuIFRoZXkgYmVoYXZlIGxpa2UgYXV0aG9yIHNoZWV0cyBpbiB0
aGlzIHJlc3BlY3QuCiAgICAgYXV0byYgbWVkaWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNv
bHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7Ci0gICAgbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5
bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV91c2VyQWdlbnRNZWRpYVF1
ZXJ5U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV91c2VyQWdlbnRNZWRpYVF1
ZXJ5U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpDU1NEZWZhdWx0U3R5bGVTaGVldHM6Om1lZGlh
UXVlcnlTdHlsZVNoZWV0LCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCAmbV9zdHlsZVJlc29sdmVyKTsK
IAogICAgIC8vIFZpZXdwb3J0IGRlcGVuZGVudCBxdWVyaWVzIGFyZSBjdXJyZW50bHkgdG9vIGlu
ZWZmaWNpZW50IHRvIGFsbG93IG9uIFVBIHNoZWV0LgpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIERv
Y3VtZW50UnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5bGUoKQogewogICAgIGF1dG8mIGV4dGVu
c2lvblN0eWxlU2hlZXRzID0gbV9zdHlsZVJlc29sdmVyLmRvY3VtZW50KCkuZXh0ZW5zaW9uU3R5
bGVTaGVldHMoKTsKICAgICBhdXRvJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yID0gbV9zdHlsZVJlc29s
dmVyLm1lZGlhUXVlcnlFdmFsdWF0b3IoKTsKLSAgICBhdXRvIHRlbXBVc2VyU3R5bGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgYXV0byB0ZW1wVXNlclN0eWxlID0gbWFrZVVu
aXF1ZTxSdWxlU2V0PigpOwogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0ID0g
ZXh0ZW5zaW9uU3R5bGVTaGVldHMucGFnZVVzZXJTaGVldCgpKQogICAgICAgICB0ZW1wVXNlclN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYWdlVXNlclNoZWV0LT5jb250ZW50cygpLCBtZWRpYVF1
ZXJ5RXZhbHVhdG9yLCAmbV9zdHlsZVJlc29sdmVyKTsKICAgICBjb2xsZWN0UnVsZXNGcm9tVXNl
clN0eWxlU2hlZXRzKGV4dGVuc2lvblN0eWxlU2hlZXRzLmluamVjdGVkVXNlclN0eWxlU2hlZXRz
KCksICp0ZW1wVXNlclN0eWxlLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCBtX3N0eWxlUmVzb2x2ZXIp
OwpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbWFr
ZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMpCiAgICAgc2l6ZV90IHNp
emUgPSBydWxlcy5zaXplKCk7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBhdXRvIHJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAg
YXV0byBydWxlU2V0ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBydWxlU2V0LT5hZGRSdWxlKHJ1bGVzW2ldLnJ1
bGUsIHJ1bGVzW2ldLnNlbGVjdG9ySW5kZXgsIHJ1bGVzW2ldLnNlbGVjdG9yTGlzdEluZGV4KTsK
ICAgICBydWxlU2V0LT5zaHJpbmtUb0ZpdCgpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0
dXJlPiYgcnVsZXMpCiB2b2lkIERvY3VtZW50UnVsZVNldHM6OnJlc2V0QXV0aG9yU3R5bGUoKQog
ewogICAgIG1faXNBdXRob3JTdHlsZURlZmluZWQgPSB0cnVlOwotICAgIG1fYXV0aG9yU3R5bGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRob3JTdHlsZSA9IG1ha2VV
bmlxdWU8UnVsZVNldD4oKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1Rv
Rml0KCk7CiB9CiAKQEAgLTE5NSwxMiArMTk1LDEyIEBAIHN0YXRpYyBWZWN0b3I8SW52YWxpZGF0
aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcm
CiAgICAgICAgICAgICBhdXRvIGFycmF5SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKmZl
YXR1cmUubWF0Y2hFbGVtZW50KTsKICAgICAgICAgICAgIGF1dG8mIHJ1bGVTZXQgPSBtYXRjaEVs
ZW1lbnRBcnJheVthcnJheUluZGV4XTsKICAgICAgICAgICAgIGlmICghcnVsZVNldCkKLSAgICAg
ICAgICAgICAgICBydWxlU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgICAg
ICAgICAgICAgIHJ1bGVTZXQgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgICAgICAgICBy
dWxlU2V0LT5hZGRSdWxlKGZlYXR1cmUucnVsZSwgZmVhdHVyZS5zZWxlY3RvckluZGV4LCBmZWF0
dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICAgICAgICAgIGlmIChmZWF0dXJlLmludmFsaWRh
dGlvblNlbGVjdG9yKQogICAgICAgICAgICAgICAgIGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlb
YXJyYXlJbmRleF0uYXBwZW5kKGZlYXR1cmUuaW52YWxpZGF0aW9uU2VsZWN0b3IpOwogICAgICAg
ICB9Ci0gICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKKyAgICAgICAgYXV0byBpbnZhbGlkYXRp
b25SdWxlU2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PigpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0Y2hFbGVtZW50QXJyYXkuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgIGlmIChtYXRjaEVsZW1lbnRBcnJheVtpXSkKICAgICAgICAg
ICAgICAgICBpbnZhbGlkYXRpb25SdWxlU2V0cy0+YXBwZW5kKHsgc3RhdGljX2Nhc3Q8TWF0Y2hF
bGVtZW50PihpKSwgV1RGTW92ZShtYXRjaEVsZW1lbnRBcnJheVtpXSksIFdURk1vdmUoaW52YWxp
ZGF0aW9uU2VsZWN0b3JBcnJheVtpXSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmNwcAppbmRleCAwNWQzODVhNTU4YzQ4YzQ4ZWU4ZGE5MGY2YTE4Y2I0ZTc1
YTZhOTVhLi4wNWI0NTdmZDY4MjBjNjdmMGUwZmJlOTMwODdiOGNlZjA4MjllYmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKQEAgLTI5MSw3ICsyOTEs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+IEVsZW1lbnRSdWxl
Q29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZQogICAgIGlmIChtX21hdGNoZWRSdWxlcy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHJ1bGVEYXRhVmVjdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4oKTsKKyAgICBhdXRvIHJ1
bGVEYXRhVmVjdG9yID0gbWFrZVVuaXF1ZTxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4oKTsKICAg
ICBydWxlRGF0YVZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX21hdGNoZWRSdWxlcy5z
aXplKCkpOwogICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBtX21hdGNoZWRSdWxlcykKICAg
ICAgICAgcnVsZURhdGFWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCgqbWF0Y2hlZFJ1bGUucnVsZURh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggMjEyMjQ1ZGVkY2FmZjk1NmFkNDQxMDdi
OWViNDRjYjQxMzI4YWFkYi4uZTFiMWFmMjBmYjExYWUzZGZlZTE5MmNhYzkyZTYyY2RlYTU1N2Rj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgcG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcihD
U1NGb250RmFjZSYgZm9udEZhY2UsIFJlZjxKU0M6OkFycmF5QnVmZmVyVmlldz4mJiBhcnJheUJ1
ZmZlclZpZXcpCiB7Ci0gICAgYXV0byBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRG
YWNlU291cmNlPihmb250RmFjZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUo
YXJyYXlCdWZmZXJWaWV3KSk7CisgICAgYXV0byBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRG
YWNlU291cmNlPihmb250RmFjZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUo
YXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgZm9udEZhY2UuYWRvcHRTb3VyY2UoV1RGTW92ZShzb3Vy
Y2UpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDNiMjBkNDEzMzM3NTMz
ZDZjYjNjNThjYjNkMTA0ZjBmMDRiNWU2MTkuLmUxZTFkNzIxMjExZTZkZTAxYThhODZlMGQ0MGQ4
NTI4OTk3YjM1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPERlcHJl
Y2F0ZWRDU1NPTVZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OndyYXBGb3JE
ZXByZWNhdGVkQ1MKICAgICAvLyBUaGUgbWFwIGlzIGhlcmUgdG8gbWFpbnRhaW4gdGhlIG9iamVj
dCBpZGVudGl0eSBvZiB0aGUgQ1NTVmFsdWVzIG92ZXIgbXVsdGlwbGUgaW52b2NhdGlvbnMuCiAg
ICAgLy8gRklYTUU6IEl0IGlzIGxpa2VseSB0aGF0IHRoZSBpZGVudGl0eSBpcyBub3QgaW1wb3J0
YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eSBhbmQgdGhpcyBjb2RlIHNob3VsZCBiZSByZW1vdmVk
LgogICAgIGlmICghbV9jc3NvbVZhbHVlV3JhcHBlcnMpCi0gICAgICAgIG1fY3Nzb21WYWx1ZVdy
YXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPENTU1ZhbHVlKiwgV2Vha1B0cjxEZXBy
ZWNhdGVkQ1NTT01WYWx1ZT4+PigpOworICAgICAgICBtX2Nzc29tVmFsdWVXcmFwcGVycyA9IG1h
a2VVbmlxdWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+
Pj4oKTsKICAgICAKICAgICBhdXRvJiBjbG9uZWRWYWx1ZSA9IG1fY3Nzb21WYWx1ZVdyYXBwZXJz
LT5hZGQoaW50ZXJuYWxWYWx1ZSwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4oKSkuaXRl
cmF0b3ItPnZhbHVlOwogICAgIGlmIChjbG9uZWRWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCmluZGV4IGRmZmRhNmY1MWRmOTU0ZDIwNmYwM2QwYzczNTYwZGRhMzkyZDE0MzAuLjQ0
ZWViMWQ3MDJkMmY5ZGNiNmIxMmI1NTI3ODE1NjdmZDAwZDJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1
bGVGZWF0dXJlLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNv
bGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAKICAgICBmb3IgKGF1dG8m
IG5hbWVBbmRNYXRjaCA6IHNlbGVjdG9yRmVhdHVyZXMuY2xhc3NlcykgewogICAgICAgICBjbGFz
c1J1bGVzLmVuc3VyZShuYW1lQW5kTWF0Y2guZmlyc3QsIFtdIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRh
LnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwgbmFtZUFuZE1h
dGNoLnNlY29uZCkpOwogICAgICAgICBpZiAobmFtZUFuZE1hdGNoLnNlY29uZCA9PSBNYXRjaEVs
ZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQobmFtZUFu
ZE1hdGNoLmZpcnN0KTsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpj
b2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAgICAgICBhdXRvKiBz
ZWxlY3RvciA9IHNlbGVjdG9yQW5kTWF0Y2guZmlyc3Q7CiAgICAgICAgIGF1dG8gbWF0Y2hFbGVt
ZW50ID0gc2VsZWN0b3JBbmRNYXRjaC5zZWNvbmQ7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVu
c3VyZShzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKSwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxS
dWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVG
ZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0
YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBtYXRjaEVsZW1lbnQsIHNlbGVjdG9yKSk7CiAgICAgICAg
IGlmIChtYXRjaEVsZW1lbnQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgYXR0
cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUo
KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKQEAgLTIwMSwxNCArMjAxLDE0IEBAIHZvaWQg
UnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3RoZXIpCiAgICAgdW5j
b21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmRWZWN0b3Iob3RoZXIudW5jb21tb25BdHRyaWJ1dGVS
dWxlcyk7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5jbGFzc1J1bGVzKSB7
CiAgICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5rZXksIFtdIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAg
ICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVl
KTsKICAgICB9CiAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLmNsYXNzZXNBZmZl
Y3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmNsYXNzZXNBZmZlY3RpbmdIb3N0LmVuZCgpKTsKIAog
ICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuYXR0cmlidXRlUnVsZXMpIHsKICAg
ICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5rZXksIFtdIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAg
ICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVl
KTsKICAgICB9CiAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLmF0dHJpYnV0
ZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmVu
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCBmYTZiOTEyMDIxM2VjNTRiYjY1OTAzY2Zh
ZTY2OWJkNDY2ZmJiMDI3Li4zYmJiYmZlYmNhMDA5OTc4MmFmMzk4MWViODY3MzZjZTY4MDM2ZWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBSdWxlU2V0
OjphZGRUb1J1bGVTZXQoY29uc3QgQXRvbVN0cmluZyYga2V5LCBBdG9tUnVsZU1hcCYgbWFwLCBj
b25zdCBSdWxlRGEKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIHJ1bGVzID0gbWFwLmFkZChr
ZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXJ1bGVzKQotICAgICAgICBy
dWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZURhdGFWZWN0b3I+KCk7CisgICAgICAgIHJ1bGVz
ID0gbWFrZVVuaXF1ZTxSdWxlRGF0YVZlY3Rvcj4oKTsKICAgICBydWxlcy0+YXBwZW5kKHJ1bGVE
YXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmlu
ZGV4IDY5YWY1NTgxNTY1NGJlMzIwZjFhOWZkNzFhNzc2NjdkOTI5M2ZhOTcuLjg4Nzc1YWQ3YmE4
YWE1OTBhZDdiZjcyYTM3ZDNiNWY2NWI1ZDJkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTM0OCw5ICszNDgsOSBAQCBpbmxpbmUgTGVuZ3RoIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0
IExlbmd0aAogICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2FsYyBleHByZXNzaW9uOiBjYWxjKDEw
MCUgLSBsZW5ndGgpCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5v
ZGU+PiBsZW5ndGhzOwogICAgIGxlbmd0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAg
ICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9u
TGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOwotICAg
IGF1dG8gb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZN
b3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKKyAgICBsZW5ndGhzLnVuY2hl
Y2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQ
ZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4
cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOworICAgIGF1dG8gb3AgPSBtYWtlVW5pcXVlPENhbGNF
eHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRy
YWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3Zl
KG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
Q3VzdG9tLmgKaW5kZXggOWExOTFkMTdkZDhlM2VkY2MxYzEzMGMyNjU5MGUwY2E2ZjRlMzZhMy4u
YzVjMmJmNWQwZjVmYzc5MTBhZmYxNjI1OTk5MGM0Mzg2NjBjMTQyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtODEzLDcgKzgxMyw3IEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHlsZVJlc29s
dmVyJiBzdHlsZVJlCiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuY29sb3JGcm9t
UHJpbWl0aXZlVmFsdWUoKnNoYWRvd1ZhbHVlLmNvbG9yKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmNvbG9yKCk7Ci0gICAgICAgIGF1
dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoeCwg
eSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Vi
a2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVu
dCk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oSW50
UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1By
b3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0
cmFuc3BhcmVudCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVRleHRTaGFk
b3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3coV1RG
TW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0
aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQpAQCAtODI5LDcgKzgyOSw3
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsVGV4dFNoYWRv
dyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sCiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
KQogewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhzdHlsZVJlc29s
dmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93
RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpKSA6IG51bGxw
dHIpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhzdHlsZVJlc29s
dmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4o
KnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpKSA6IG51bGxwdHIpOwog
fQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0U2hhZG93
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTg0NCw3
ICs4NDQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEJv
eFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdgogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEJveFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyKQogewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hhZG93KHN0eWxl
UmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNo
YWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpKSA6IG51
bGxwdHIpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94U2hhZG93KHN0eWxlUmVz
b2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+
KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpKSA6IG51bGxwdHIpOwog
fQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVCb3hTaGFkb3co
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtMTM1OSw3
ICsxMzU5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29u
dGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAgICAgICAgICAgQ1NTVmFsdWVJ
RCBsaXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlSWRlbnQoKTsKICAgICAg
ICAgICAgIGlmIChsaXN0U3R5bGVJZGVudCAhPSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICAg
ICAgbGlzdFN0eWxlVHlwZSA9IHN0YXRpY19jYXN0PExpc3RTdHlsZVR5cGU+KGxpc3RTdHlsZUlk
ZW50IC0gQ1NTVmFsdWVEaXNjKTsKLSAgICAgICAgICAgIGF1dG8gY291bnRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0
U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpKTsKKyAgICAgICAgICAgIGF1dG8g
Y291bnRlciA9IG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXJWYWx1ZS0+aWRlbnRp
ZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpKTsKICAgICAg
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIp
LCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggNGNmNmM2ZjdhYjdkZjlm
YzA0MzM0YmJlOGRkMDVhM2I1NTllOTM1Yy4uMTljYjAzM2Q3MGJiNWE4OTY4NjU1NzI3NTViOTZi
OTc3MDUxY2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTE1
MzAsNyArMTUzMCw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKQogICAgICAgICBBU1NFUlQoIW1fY3Nzb21X
cmFwcGVyLT5wYXJlbnRFbGVtZW50KCkpOwogICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVy
OwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcyk7CisgICAgbV9jc3NvbVdyYXBwZXIgPSBtYWtl
VW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMpOwogICAgIHJldHVy
biAqbV9jc3NvbVdyYXBwZXI7CiB9CiAKQEAgLTE1NDAsNyArMTU0MCw3IEBAIENTU1N0eWxlRGVj
bGFyYXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24oU3R5CiAgICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVu
dCgpID09ICZwYXJlbnRFbGVtZW50KTsKICAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsK
ICAgICB9Ci0gICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUNTU1N0
eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKKyAgICBtX2Nzc29tV3JhcHBl
ciA9IG1ha2VVbmlxdWU8SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMsIHBhcmVudEVs
ZW1lbnQpOwogICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAppbmRleCAzYTUyYzM2MTk5YTc5YTI1ZTA5YzAxZDhmYTBjNTBhZWZm
NjgyYmI1Li5kZTRkYTVmNTUxMjk5MDkzMWRhODZjNWM3ZTgzYmNiMTAxODA4YmM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNzE1LDcgKzE3MTUsNyBAQCBTdHlsZVJl
c29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVy
dGllc0ZvclJvbGxiYWNrKAogICAgICAgICBpZiAoYXV0aG9yUm9sbGJhY2spCiAgICAgICAgICAg
ICByZXR1cm4gYXV0aG9yUm9sbGJhY2s7CiAKLSAgICAgICAgYXV0byBuZXdBdXRob3JSb2xsYmFj
ayhzdGQ6Om1ha2VfdW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5n
TW9kZSkpOworICAgICAgICBhdXRvIG5ld0F1dGhvclJvbGxiYWNrKG1ha2VVbmlxdWU8Q2FzY2Fk
ZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CiAKICAgICAgICAgLy8gVGhp
cyBzcGVjaWFsIHJvbGxiYWNrIGNhc2NhZGUgY29udGFpbnMgVUEgcnVsZXMgYW5kIHVzZXIgcnVs
ZXMgYnV0IG5vIGF1dGhvciBydWxlcy4KICAgICAgICAgbmV3QXV0aG9yUm9sbGJhY2stPmFkZE5v
cm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwg
bWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKQEAgLTE3MzIsNyArMTczMiw3
IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2Fz
Y2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgICAgIGlmICh1c2VyUm9sbGJhY2spCiAg
ICAgICAgICAgICByZXR1cm4gdXNlclJvbGxiYWNrOwogCi0gICAgICAgIGF1dG8gbmV3VXNlclJv
bGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdy
aXRpbmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3VXNlclJvbGxiYWNrKG1ha2VVbmlxdWU8Q2Fz
Y2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CiAKICAgICAgICAgLy8g
VGhpcyBzcGVjaWFsIHJvbGxiYWNrIGNhc2NhZGUgY29udGFpbnMgb25seSBVQSBydWxlcy4KICAg
ICAgICAgbmV3VXNlclJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRj
aFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxl
LCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKaW5kZXggOTk3YzRjMDM2N2RkNWQwZDY0NWQ1
ZWRmNTFlZWM0YmZiMGMzMjEwNS4uMDJhMzZlZmUwNWQzY2M5ZmU5N2RkNWMwZTI1OTNhZTc5ZmQ2
YzJjNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtODExLDcgKzgxMSw3IEBAIHN1YiBnZW5l
cmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQgPSBudWxscHRyO1xuIjsK
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGF1dG8qIHBhcmVudCA9ICZzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIgLiBnZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAi
KCk7IHBhcmVudCAmJiBwYXJlbnQtPiIgLiAkdGVzdEZ1bmN0aW9uIC4gIigpOyBwYXJlbnQgPSBw
YXJlbnQtPm5leHQoKSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
aWYgKCFjaGlsZCkge1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAg
IHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBn
ZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExh
eWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29u
dGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgY2hpbGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7
XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICB9XG4iOwogICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gIiAgICBjaGlsZC0+IiAuICRzZXR0ZXIgLiAiKHBhcmVudC0+
IiAuICRnZXR0ZXIgLiAiKCkpO1xuIjsKQEAgLTgzNyw3ICs4MzcsNyBAQCBzdWIgZ2VuZXJhdGVG
aWxsTGF5ZXJQcm9wZXJ0eVZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICIgICAgLy8gV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVh
dGluZyBuZXcgbGF5ZXJzIGFzIG5lZWRlZC5cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUp
KSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgaWYgKCFjaGls
ZCkge1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBwcmV2
aW91c0NoaWxkLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0Rmls
bExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQobWFrZVVuaXF1ZTxGaWxsTGF5
ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0ZXJDb250
ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgY2hpbGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0
KCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgfVxuIjsKICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGVN
YXAoKS0+IiAuIGdldEZpbGxMYXllck1hcGZ1bmN0aW9uKCRuYW1lKSAuICIoIiAuICRDU1NQcm9w
ZXJ0eUlkIC4gIiwgKmNoaWxkLCBpdGVtKTtcbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJJbXBsLmNwcAppbmRleCA2N2NmZGY1NmQ2MjUwNTNhMDExMTk5MmQ3MTFmOGM4
ZmZkYjk1ZGMyLi5kNzVlNGZjOTJjNzdiMDdiMWU1M2RhZDMzODdlNTUxYTM5MGMyNWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKQEAgLTc3LDcgKzc3
LDcgQEAgQ1NTUGFyc2VySW1wbDo6Q1NTUGFyc2VySW1wbChjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHN0cmkKICAgICAsIG1fc3R5bGVTaGVldChzdHlsZVNo
ZWV0KQogICAgICwgbV9vYnNlcnZlcldyYXBwZXIod3JhcHBlcikKIHsKLSAgICBtX3Rva2VuaXpl
ciA9IHdyYXBwZXIgPyBzdGQ6Om1ha2VfdW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nLCAqd3Jh
cHBlcikgOiBzdGQ6Om1ha2VfdW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nKTsKKyAgICBtX3Rv
a2VuaXplciA9IHdyYXBwZXIgPyBtYWtlVW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nLCAqd3Jh
cHBlcikgOiBtYWtlVW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nKTsKICAgICBpZiAoY29udGV4
dC5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgJiYgIXdyYXBwZXIgJiYgc3R5bGVTaGVldCAmJiBy
dWxlUGFyc2luZyA9PSBDU1NQYXJzZXI6OlJ1bGVQYXJzaW5nOjpEZWZlcnJlZCkKICAgICAgICAg
bV9kZWZlcnJlZFBhcnNlciA9IENTU0RlZmVycmVkUGFyc2VyOjpjcmVhdGUoY29udGV4dCwgc3Ry
aW5nLCAqc3R5bGVTaGVldCk7CiB9CkBAIC0yODIsOSArMjgyLDkgQEAgQ1NTU2VsZWN0b3JMaXN0
IENTU1BhcnNlckltcGw6OnBhcnNlUGFnZVNlbGVjdG9yKENTU1BhcnNlclRva2VuUmFuZ2UgcmFu
Z2UsIFN0eWwKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2VsZWN0
b3I7CiAgICAgaWYgKCF0eXBlU2VsZWN0b3IuaXNOdWxsKCkgJiYgcHNldWRvLmlzTnVsbCgpKQot
ICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KFF1
YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHlsZVNoZWV0LT5kZWZhdWx0
TmFtZXNwYWNlKCkpKTsKKyAgICAgICAgc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVl
dC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHNlbGVjdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAgICAgc2VsZWN0b3Ig
PSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBpZiAoIXBzZXVkby5p
c051bGwoKSkgewogICAgICAgICAgICAgc2VsZWN0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+KENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcihw
c2V1ZG8pKTsKICAgICAgICAgICAgIGlmICghc2VsZWN0b3IgfHwgc2VsZWN0b3ItPm1hdGNoKCkg
IT0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcykKQEAgLTUzNSw3ICs1MzUsNyBAQCBSZWZQ
dHI8U3R5bGVSdWxlTmFtZXNwYWNlPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lTmFtZXNwYWNlUnVs
ZShDU1NQYXJzZXJUb2tlblJhbgogUmVmUHRyPFN0eWxlUnVsZU1lZGlhPiBDU1NQYXJzZXJJbXBs
Ojpjb25zdW1lTWVkaWFSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBibG9jaykKIHsKICAgICBpZiAobV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAg
cmV0dXJuIFN0eWxlUnVsZU1lZGlhOjpjcmVhdGUoTWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRp
YVF1ZXJ5U2V0KHByZWx1ZGUsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KG1fY29udGV4dCkpLnJl
bGVhc2VOb25OdWxsKCksICBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVM
aXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVs
ZU1lZGlhOjpjcmVhdGUoTWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KHByZWx1
ZGUsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KG1fY29udGV4dCkpLnJlbGVhc2VOb25OdWxsKCks
ICBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJy
ZWRQYXJzZXIpKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IHJ1bGVzOwog
CkBAIC01NjMsNyArNTYzLDcgQEAgUmVmUHRyPFN0eWxlUnVsZVN1cHBvcnRzPiBDU1NQYXJzZXJJ
bXBsOjpjb25zdW1lU3VwcG9ydHNSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7IC8vIFBhcnNlIGVycm9yLCBpbnZhbGlkIEBzdXBwb3J0cyBjb25kaXRpb24K
IAogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1cm4gU3R5bGVSdWxlU3Vw
cG9ydHM6OmNyZWF0ZShwcmVsdWRlLnNlcmlhbGl6ZSgpLnN0cmlwV2hpdGVTcGFjZSgpLCBzdXBw
b3J0ZWQsIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2Nr
LCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlU3VwcG9ydHM6
OmNyZWF0ZShwcmVsdWRlLnNlcmlhbGl6ZSgpLnN0cmlwV2hpdGVTcGFjZSgpLCBzdXBwb3J0ZWQs
IG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJl
ZFBhcnNlcikpOwogCiAgICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKSB7CiAgICAgICAgIG1fb2Jz
ZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OlN1cHBv
cnRzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZzZXQocHJlbHVkZSkpOwpAQCAtNjM1LDcg
KzYzNSw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IENTU1BhcnNlckltcGw6OmNvbnN1
bWVLZXlmcmFtZXNSdWxlKGJvb2wgd2Via2l0UHJlZml4CiAgICAgICAgIHJldHVybiBudWxscHRy
OyAvLyBQYXJzZSBlcnJvcjsgZXhwZWN0ZWQgaWRlbnQgdG9rZW4gaW4gQGtleWZyYW1lcyBoZWFk
ZXIKIAogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1cm4gU3R5bGVSdWxl
S2V5ZnJhbWVzOjpjcmVhdGUobmFtZSwgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3Jv
dXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBT
dHlsZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1lLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVH
cm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIGlmIChtX29i
c2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIoKS5z
dGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpLZXlmcmFtZXMsIG1fb2JzZXJ2ZXJXcmFwcGVyLT5z
dGFydE9mZnNldChyYW5nZUNvcHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJTZWxlY3Rvci5jcHAKaW5kZXggNGRiZWY0MDU4YzcxNjJjZDk2NDZlYTc2NGRjYmI5
YmJjZjMxZTQ1OS4uYTA4NzBkMzc2MmNlYTQyZjViNWVhYmQwNWVhNzQ0ZjJkOWQ2YjM1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJz
ZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IoU3QKICAgICBlbHNlCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NT
UGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENT
U1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5z
ZXRQYWdlUHNldWRvVHlwZShwc2V1ZG9UeXBlKTsKICAgICByZXR1cm4gc2VsZWN0b3I7CkBAIC02
Myw3ICs2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2Vy
U2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFNlbGVjdG9yCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxD
U1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQ
YXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NT
U2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQ
c2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9UeXBlKTsKICAgICBBdG9tU3RyaW5nIG5hbWU7CkBAIC04
NCwxMyArODQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJz
ZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yKFMKIHsKICAgICBhdXRvIHBzZXVk
b1R5cGUgPSBwYXJzZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRTdHJpbmcocHNl
dWRvVHlwZVN0cmluZyk7CiAgICAgaWYgKHBzZXVkb1R5cGUucHNldWRvQ2xhc3MgIT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzVW5rbm93bikgewotICAgICAgICBhdXRvIHNlbGVjdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAgICAgYXV0byBzZWxlY3Rv
ciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIHNlbGVjdG9yLT5t
X3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwogICAgICAgICBz
ZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvQ2xhc3NUeXBlKHBzZXVkb1R5cGUucHNldWRv
Q2xhc3MpOwogICAgICAgICByZXR1cm4gc2VsZWN0b3I7CiAgICAgfQogICAgIGlmIChwc2V1ZG9U
eXBlLmNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50ICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVt
ZW50VW5rbm93bikgewotICAgICAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxD
U1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAgICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8
Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3Nl
bGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9UeXBlLmNvbXBhdGliaWxpdHlQc2V1
ZG9FbGVtZW50KTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFZhbHVlKHBzZXVk
b1R5cGVTdHJpbmcuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CkBAIC0xMDAsMTIgKzEwMCwx
MiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IoUwogfQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NT
UGFyc2VyU2VsZWN0b3IoKQotICAgIDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1Nl
bGVjdG9yPigpKQorICAgIDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENTU1NlbGVjdG9yPigpKQog
ewogfQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnUU5hbWUpCi0gICAgOiBtX3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q1NT
U2VsZWN0b3I+KHRhZ1FOYW1lKSkKKyAgICA6IG1fc2VsZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxl
Y3Rvcj4odGFnUU5hbWUpKQogewogfQogCkBAIC0xMjYsNyArMTI2LDcgQEAgQ1NTUGFyc2VyU2Vs
ZWN0b3I6On5DU1NQYXJzZXJTZWxlY3RvcigpCiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFk
b3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4+JiYgc2VsZWN0b3JWZWN0b3IpCiB7Ci0gICAgbV9zZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0
KHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3JMaXN0PihXVEZNb3ZlKHNlbGVjdG9yVmVjdG9y
KSkpOworICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChtYWtlVW5pcXVlPENTU1NlbGVj
dG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsKIH0KIAogdm9pZCBDU1NQYXJzZXJT
ZWxlY3Rvcjo6c2V0TGFuZ0FyZ3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21T
dHJpbmc+PiBhcmd1bWVudExpc3QpCkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIENTU1BhcnNl
clNlbGVjdG9yOjphcHBlbmRUYWdIaXN0b3J5KENTU1BhcnNlclNlbGVjdG9yQ29tYmluYXRvciBy
ZWxhdGlvbiwgcwogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3Io
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIGJvb2wgdGFnSXNGb3JOYW1lc3BhY2VSdWxl
KQogewotICAgIGF1dG8gc2Vjb25kID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rv
cj4oKTsKKyAgICBhdXRvIHNlY29uZCA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7
CiAgICAgc2Vjb25kLT5tX3NlbGVjdG9yID0gV1RGTW92ZShtX3NlbGVjdG9yKTsKICAgICBzZWNv
bmQtPm1fdGFnSGlzdG9yeSA9IFdURk1vdmUobV90YWdIaXN0b3J5KTsKICAgICBtX3RhZ0hpc3Rv
cnkgPSBXVEZNb3ZlKHNlY29uZCk7CiAKLSAgICBtX3NlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSk7CisgICAgbV9z
ZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lLCB0YWdJc0Zvck5hbWVz
cGFjZVJ1bGUpOwogICAgIG1fc2VsZWN0b3ItPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpTdWJz
ZWxlY3Rvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5jcHAKaW5kZXggNDg4ZTYwMjNmMjAwMjRhZmZlZjg2MTdhNTE0YzQwOWJmNDlkMWVm
My4uNzA4ZWM3NzczYzE4ZDZlMDhlMDAxY2FmYTNkMjhjODBkOWY4NzJmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTI0MzUsNyAr
MjQzNSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBhdGg+IGNvbnN1bWVCYXNpY1No
YXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzCiAgICAgaWYgKGFyZ3MucGVlaygpLnR5
cGUoKSAhPSBTdHJpbmdUb2tlbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAg
YXV0byBieXRlU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsK
KyAgICBhdXRvIGJ5dGVTdHJlYW0gPSBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOwog
ICAgIGlmICghYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoYXJncy5jb25zdW1lSW5j
bHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgKmJ5dGVTdHJlYW0sIFVuYWx0
ZXJlZFBhcnNpbmcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKaW5kZXggNmIzYWNjODVl
NmZjNWU1Y2JiOTVhYjlmZTFhNmM3Y2E5ZWY4MTA0Ny4uZjMzMjNiMjI2YjRiMDEwMGM5ODNjNDg2
NjM3NWYxZTY1N2IxNzM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NTZWxlY3RvclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NT
ZWxlY3RvclBhcnNlci5jcHAKQEAgLTU2NCw3ICs1NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKENTU1BhcnNl
clRvawogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTGFu
ZzogewogICAgICAgICAgICAgLy8gRklYTUU6IENTUyBTZWxlY3RvcnMgTGV2ZWwgNCBhbGxvd3Mg
OmxhbmcoKi1mb28pCi0gICAgICAgICAgICBhdXRvIGFyZ3VtZW50TGlzdCA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPEF0b21TdHJpbmc+PigpOworICAgICAgICAgICAgYXV0byBhcmd1bWVudExp
c3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5nPj4oKTsKICAgICAgICAgICAgIGlmICgh
Y29uc3VtZUxhbmdBcmd1bWVudExpc3QoYXJndW1lbnRMaXN0LCBibG9jaykpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBzZWxlY3Rvci0+c2V0TGFuZ0FyZ3Vt
ZW50TGlzdChXVEZNb3ZlKGFyZ3VtZW50TGlzdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKaW5kZXggOWViNWQ3ZTQ5ZjU2YTFlOThk
MWZiYjliMjNlNmVhNzJlMjI2MTU4Zi4uODgxMTdmMTllNGIyNmJhMjViZmYyNWE4NTU5MTczMmJi
N2EzZTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWUuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWU6OkVsZW1lbnRRdWV1ZSYgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2sK
IHsKICAgICBpZiAoIXNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRRdWV1ZSkgewogICAgICAgICBz
X3Byb2Nlc3NpbmdCYWNrdXBFbGVtZW50UXVldWUgPSB0cnVlOwotICAgICAgICBNaWNyb3Rhc2tR
dWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmFja3VwRWxl
bWVudFF1ZXVlTWljcm90YXNrPigpKTsKKyAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPEJhY2t1cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4o
KSk7CiAgICAgfQogICAgIHJldHVybiBiYWNrdXBFbGVtZW50UXVldWUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggZTc5M2YyMGQ5MzFiZjg0Yzg1ZmFiOWFkMjRmODNm
ZThhNDhhMmYxZC4uZDNhZjcwZmI4YmEzMzZiZmE2MThiZjljMTI1NmIxMDdkOWQyNWFhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIERh
dGFUcmFuc2Zlcjo6ZGlkQWRkRmlsZVRvSXRlbUxpc3QoKQogRGF0YVRyYW5zZmVySXRlbUxpc3Qm
IERhdGFUcmFuc2Zlcjo6aXRlbXMoKQogewogICAgIGlmICghbV9pdGVtTGlzdCkKLSAgICAgICAg
bV9pdGVtTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YVRyYW5zZmVySXRlbUxpc3Q+KCp0aGlz
KTsKKyAgICAgICAgbV9pdGVtTGlzdCA9IG1ha2VVbmlxdWU8RGF0YVRyYW5zZmVySXRlbUxpc3Q+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1faXRlbUxpc3Q7CiB9CiAKQEAgLTQxNiw3ICs0MTYsNyBA
QCBib29sIERhdGFUcmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkK
IAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0
cmluZyYgaHRtbFRleHQpCiB7Ci0gICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1
ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOworICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8
U3RhdGljUGFzdGVib2FyZD4oKTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9w
bGFpbiJfcywgcGxhaW5UZXh0KTsKICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9o
dG1sIl9zLCBodG1sVGV4dCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBl
OjpJbnB1dEV2ZW50KSk7CkBAIC00NzEsNyArNDcxLDcgQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0
YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIAogUmVm
PERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJl
ZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFkV3JpdGUsIHN0ZDo6
bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7
CisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1
bWVudCwgU3RvcmVNb2RlOjpSZWFkV3JpdGUsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4o
KSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiAgICAgZGF0YVRyYW5zZmVyLT5tX29yaWdpbklk
ZW50aWZpZXIgPSBkb2N1bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2FyZCgpOwogICAg
IHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CkBAIC01MDgsNyArNTA4LDcgQEAgdm9pZCBEYXRhVHJh
bnNmZXI6OnNldERyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBpbnQgeCwgaW50IHkpCiAgICAg
bV9kcmFnSW1hZ2UgPSBpbWFnZTsKICAgICBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAgICAgaWYg
KCFtX2RyYWdJbWFnZUxvYWRlcikKLSAgICAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOworICAgICAgICAgICAgbV9kcmFn
SW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPERyYWdJbWFnZUxvYWRlcj4odGhpcyk7CiAgICAgICAg
IG1fZHJhZ0ltYWdlTG9hZGVyLT5zdGFydExvYWRpbmcobV9kcmFnSW1hZ2UpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNw
cAppbmRleCAzMzYyMjMxMDgxYjEzZjcyZGMxOGRhYzVmMzkwN2E1ZTdjMTdiMGJmLi5mMjExMzFm
ZjgyNzgyMWRjNzRlODUwYTk4ZjFiYjIzMDk5ZTAyNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3
IEBAIGJvb2wgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjppc0FjdGl2ZUF0KFBhZ2UqIHBh
Z2UpCiAKIHZvaWQgcHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8oUGFnZSYgcGFnZSwgRGV2aWNl
T3JpZW50YXRpb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXI6OnByb3ZpZGVUbygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpzdXBw
bGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
cj4oY2xpZW50KSk7CisgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8o
JnBhZ2UsIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFr
ZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlMmIxNDRkNTY3
ZDc5NjYyZTk4Zjc0YmM1MWU5MjQxMTZjYzZkNTZmLi5lYjBiOTc0NTU1YWQyNTM5MmU4MDY2NWE2
Y2QxMTUxOTI2ZmU3ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUyMSwxOSArNTIx
LDE5IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1
bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX3F1aXJrcyhtYWtlVW5pcXVl
UmVmPFF1aXJrcz4oKnRoaXMpKQogICAgICwgbV9jYWNoZWRSZXNvdXJjZUxvYWRlcihtX2ZyYW1l
ID8gUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPihtX2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1
bWVudExvYWRlcigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKSA6IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpjcmVhdGUobnVsbHB0cikpCiAgICAgLCBtX2RvbVRyZWVWZXJzaW9uKCsrc19nbG9iYWxU
cmVlVmVyc2lvbikKLSAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpT
Y29wZT4oKnRoaXMpKQotICAgICwgbV9leHRlbnNpb25TdHlsZVNoZWV0cyhzdGQ6Om1ha2VfdW5p
cXVlPEV4dGVuc2lvblN0eWxlU2hlZXRzPigqdGhpcykpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rU3Rh
dGUoc3RkOjptYWtlX3VuaXF1ZTxWaXNpdGVkTGlua1N0YXRlPigqdGhpcykpCi0gICAgLCBtX21h
cmtlcnMoc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI+KCp0aGlzKSkK
KyAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAg
ICwgbV9leHRlbnNpb25TdHlsZVNoZWV0cyhtYWtlVW5pcXVlPEV4dGVuc2lvblN0eWxlU2hlZXRz
PigqdGhpcykpCisgICAgLCBtX3Zpc2l0ZWRMaW5rU3RhdGUobWFrZVVuaXF1ZTxWaXNpdGVkTGlu
a1N0YXRlPigqdGhpcykpCisgICAgLCBtX21hcmtlcnMobWFrZVVuaXF1ZTxEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fc3R5bGVSZWNhbGNUaW1lcihbdGhpc10geyB1
cGRhdGVTdHlsZUlmTmVlZGVkKCk7IH0pCiAgICAgLCBtX2RvY3VtZW50Q3JlYXRpb25UaW1lKE1v
bm90b25pY1RpbWU6Om5vdygpKQotICAgICwgbV9zY3JpcHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1
ZTxTY3JpcHRSdW5uZXI+KCp0aGlzKSkKLSAgICAsIG1fbW9kdWxlTG9hZGVyKHN0ZDo6bWFrZV91
bmlxdWU8U2NyaXB0TW9kdWxlTG9hZGVyPigqdGhpcykpCisgICAgLCBtX3NjcmlwdFJ1bm5lciht
YWtlVW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQorICAgICwgbV9tb2R1bGVMb2FkZXIobWFr
ZVVuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoWFNMVCkKICAg
ICAsIG1fYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmFw
cGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lckZpcmVkKQogI2VuZGlmCiAgICAgLCBtX3htbFZl
cnNpb24oIjEuMCJfcykKLSAgICAsIG1fY29uc3RhbnRQcm9wZXJ0eU1hcChzdGQ6Om1ha2VfdW5p
cXVlPENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlzKSkKKyAgICAsIG1fY29uc3RhbnRQcm9wZXJ0
eU1hcChtYWtlVW5pcXVlPENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlzKSkKICAgICAsIG1fZG9j
dW1lbnRDbGFzc2VzKGRvY3VtZW50Q2xhc3NlcykKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC01NDUsMTAgKzU0NSwxMCBAQCBEb2N1bWVu
dDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1l
bnRDbGFzc2VzLCB1bnNpZwogI2VuZGlmCiAgICAgLCBtX2xvYWRFdmVudERlbGF5VGltZXIoKnRo
aXMsICZEb2N1bWVudDo6bG9hZEV2ZW50RGVsYXlUaW1lckZpcmVkKQogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgLCBtX2RldmljZU1v
dGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERldmljZU1vdGlvbkNsaWVudElPUz4oKSkKLSAg
ICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERldmljZU1vdGlv
bkNvbnRyb2xsZXI+KCptX2RldmljZU1vdGlvbkNsaWVudCkpCi0gICAgLCBtX2RldmljZU9yaWVu
dGF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1M+
KCkpCi0gICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVl
PERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQp
KQorICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQobWFrZVVuaXF1ZTxEZXZpY2VNb3Rpb25DbGll
bnRJT1M+KCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIobWFrZVVuaXF1ZTxEZXZp
Y2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VNb3Rpb25DbGllbnQpKQorICAgICwgbV9kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudChtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9T
PigpKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIobWFrZVVuaXF1ZTxEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KSkKICNl
bmRpZgogICAgICwgbV9wZW5kaW5nVGFza3NUaW1lcigqdGhpcywgJkRvY3VtZW50OjpwZW5kaW5n
VGFza3NUaW1lckZpcmVkKQogICAgICwgbV92aXN1YWxVcGRhdGVzU3VwcHJlc3Npb25UaW1lcigq
dGhpcywgJkRvY3VtZW50Ojp2aXN1YWxVcGRhdGVzU3VwcHJlc3Npb25UaW1lckZpcmVkKQpAQCAt
NzU4LDcgKzc1OCw3IEBAIEVsZW1lbnQqIERvY3VtZW50OjplbGVtZW50Rm9yQWNjZXNzS2V5KGNv
bnN0IFN0cmluZyYga2V5KQogCiB2b2lkIERvY3VtZW50OjpidWlsZEFjY2Vzc0tleUNhY2hlKCkK
IHsKLSAgICBtX2FjY2Vzc0tleUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmlu
ZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0aGlzXSB7CisgICAgbV9h
Y2Nlc3NLZXlDYWNoZSA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+PihbdGhpc10gewogICAgICAgICBIYXNoTWFwPFN0cmluZywg
RWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbWFwOwogICAgICAgICBmb3IgKGF1
dG8mIG5vZGUgOiBjb21wb3NlZFRyZWVEZXNjZW5kYW50cygqdGhpcykpIHsKICAgICAgICAgICAg
IGlmICghaXM8RWxlbWVudD4obm9kZSkpCkBAIC03ODMsNyArNzgzLDcgQEAgRXhjZXB0aW9uT3I8
U2VsZWN0b3JRdWVyeSY+IERvY3VtZW50OjpzZWxlY3RvclF1ZXJ5Rm9yU3RyaW5nKGNvbnN0IFN0
cmluZyYgc2VsZWMKICAgICBpZiAoc2VsZWN0b3JTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKICAgICBpZiAoIW1fc2VsZWN0b3JRdWVy
eUNhY2hlKQotICAgICAgICBtX3NlbGVjdG9yUXVlcnlDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8
U2VsZWN0b3JRdWVyeUNhY2hlPigpOworICAgICAgICBtX3NlbGVjdG9yUXVlcnlDYWNoZSA9IG1h
a2VVbmlxdWU8U2VsZWN0b3JRdWVyeUNhY2hlPigpOwogICAgIHJldHVybiBtX3NlbGVjdG9yUXVl
cnlDYWNoZS0+YWRkKHNlbGVjdG9yU3RyaW5nLCAqdGhpcyk7CiB9CiAKQEAgLTg0OCw3ICs4NDgs
NyBAQCB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigpCiBET01JbXBsZW1lbnRh
dGlvbiYgRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkKIHsKICAgICBpZiAoIW1faW1wbGVtZW50
YXRpb24pCi0gICAgICAgIG1faW1wbGVtZW50YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUlt
cGxlbWVudGF0aW9uPigqdGhpcyk7CisgICAgICAgIG1faW1wbGVtZW50YXRpb24gPSBtYWtlVW5p
cXVlPERPTUltcGxlbWVudGF0aW9uPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltcGxlbWVudGF0
aW9uOwogfQogCkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBOb2RlOjpOb2RlVHlwZSBEb2N1bWVudDo6
bm9kZVR5cGUoKSBjb25zdAogRm9ybUNvbnRyb2xsZXImIERvY3VtZW50Ojpmb3JtQ29udHJvbGxl
cigpCiB7CiAgICAgaWYgKCFtX2Zvcm1Db250cm9sbGVyKQotICAgICAgICBtX2Zvcm1Db250cm9s
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ29udHJvbGxlcj4oKTsKKyAgICAgICAgbV9mb3Jt
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8Rm9ybUNvbnRyb2xsZXI+KCk7CiAgICAgcmV0dXJuICpt
X2Zvcm1Db250cm9sbGVyOwogfQogCkBAIC0xOTg4LDcgKzE5ODgsNyBAQCB2b2lkIERvY3VtZW50
Ojp1cGRhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNl
ZFRleHQsIHVucwogICAgIEFTU0VSVCghbV9pblJlbmRlclRyZWVVcGRhdGUpOwogICAgIFNldEZv
clNjb3BlPGJvb2w+IGluUmVuZGVyVHJlZVVwZGF0ZShtX2luUmVuZGVyVHJlZVVwZGF0ZSwgdHJ1
ZSk7CiAKLSAgICBhdXRvIHRleHRVcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpVcGRh
dGU+KCp0aGlzKTsKKyAgICBhdXRvIHRleHRVcGRhdGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpVcGRh
dGU+KCp0aGlzKTsKICAgICB0ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQsIHsgb2Zmc2V0T2ZSZXBs
YWNlZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0LCBXVEY6Om51bGxvcHQgfSk7CiAKICAgICBS
ZW5kZXJUcmVlVXBkYXRlciByZW5kZXJUcmVlVXBkYXRlcigqdGhpcyk7CkBAIC0yMjcwLDcgKzIy
NzAsNyBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFn
ZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogU3R5bGVSZXNvbHZlciYgRG9jdW1lbnQ6
OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKIHsKICAgICBpZiAoIW1fdXNlckFn
ZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpCi0gICAgICAgIG1fdXNlckFnZW50U2hhZG93VHJl
ZVN0eWxlUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsK
KyAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9IG1ha2VVbmlxdWU8
U3R5bGVSZXNvbHZlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2VyQWdlbnRTaGFkb3dUcmVl
U3R5bGVSZXNvbHZlcjsKIH0KIApAQCAtMjY3Myw3ICsyNjczLDcgQEAgQVhPYmplY3RDYWNoZSog
RG9jdW1lbnQ6OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogCiAgICAgQVNTRVJUKCZ0b3BEb2N1bWVu
dCA9PSB0aGlzIHx8ICFtX2F4T2JqZWN0Q2FjaGUpOwogICAgIGlmICghdG9wRG9jdW1lbnQubV9h
eE9iamVjdENhY2hlKSB7Ci0gICAgICAgIHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSA9IHN0
ZDo6bWFrZV91bmlxdWU8QVhPYmplY3RDYWNoZT4odG9wRG9jdW1lbnQpOworICAgICAgICB0b3BE
b2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBtYWtlVW5pcXVlPEFYT2JqZWN0Q2FjaGU+KHRvcERv
Y3VtZW50KTsKICAgICAgICAgaGFzRXZlckNyZWF0ZWRBbkFYT2JqZWN0Q2FjaGUgPSB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlLmdldCgpOwpAQCAt
MzAzNyw3ICszMDM3LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0UGFyc2luZyhib29sIGIpCiAgICAg
bV9iUGFyc2luZyA9IGI7CiAKICAgICBpZiAobV9iUGFyc2luZyAmJiAhbV9zaGFyZWRPYmplY3RQ
b29sKQotICAgICAgICBtX3NoYXJlZE9iamVjdFBvb2wgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3Vt
ZW50U2hhcmVkT2JqZWN0UG9vbD4oKTsKKyAgICAgICAgbV9zaGFyZWRPYmplY3RQb29sID0gbWFr
ZVVuaXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7CiAKICAgICBpZiAoIW1fYlBhcnNp
bmcgJiYgdmlldygpICYmICF2aWV3KCktPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHZpZXcoKS0+
ZmlyZUxheW91dFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKQEAgLTU1NjcsNyArNTU2Nyw3
IEBAIGNvbnN0IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogRG9jdW1lbnQ6OnN2Z0V4dGVuc2lvbnMo
KQogU1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucygp
CiB7CiAgICAgaWYgKCFtX3N2Z0V4dGVuc2lvbnMpCi0gICAgICAgIG1fc3ZnRXh0ZW5zaW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRG9jdW1lbnRFeHRlbnNpb25zPigqdGhpcyk7CisgICAgICAg
IG1fc3ZnRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8U1ZHRG9jdW1lbnRFeHRlbnNpb25zPigqdGhp
cyk7CiAgICAgcmV0dXJuICptX3N2Z0V4dGVuc2lvbnM7CiB9CiAKQEAgLTU3NzIsNyArNTc3Miw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICAvLyBUaGlz
IGNhbiBvY2N1ciB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoKS4K
ICAgICAgICAgc2V0Q29va2llVVJMKFVSTCh7IH0sIGVtcHR5U3RyaW5nKCkpKTsKICAgICAgICAg
c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsKLSAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5
UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB7IH0s
IGVtcHR5U3RyaW5nKCkgfSwgKnRoaXMpKTsKKyAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9s
aWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyB7IH0sIGVtcHR5U3Ry
aW5nKCkgfSwgKnRoaXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTc5MSw3ICs1
NzkxLDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIGlz
U2VjdXJpdHlPcmlnaW5VbmlxdWUgPSBkb2N1bWVudExvYWRlciAmJiBkb2N1bWVudExvYWRlci0+
cmVzcG9uc2UoKS50YWludGluZygpID09IFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpPcGFx
dWU7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6
Y3JlYXRlKGlzU2VjdXJpdHlPcmlnaW5VbmlxdWUgPyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5p
cXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSkpOwotICAgIHNldENvbnRlbnRT
ZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJM
IHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiAKICAg
ICBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBtX2ZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogICAgIGlmICghb3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kuaXNOdWxsKCkpCkBAIC02MDI5LDcgKzYwMjksNyBA
QCBTdHJpbmcgRG9jdW1lbnQ6Om5hbWVGb3JDU1NDYW52YXNFbGVtZW50KGNvbnN0IEhUTUxDYW52
YXNFbGVtZW50JiBjYW52YXNFbGVtZW50KQogVGV4dEF1dG9TaXppbmcmIERvY3VtZW50Ojp0ZXh0
QXV0b1NpemluZygpCiB7CiAgICAgaWYgKCFtX3RleHRBdXRvU2l6aW5nKQotICAgICAgICBtX3Rl
eHRBdXRvU2l6aW5nID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1NpemluZz4oKTsKKyAgICAg
ICAgbV90ZXh0QXV0b1NpemluZyA9IG1ha2VVbmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7CiAgICAg
cmV0dXJuICptX3RleHRBdXRvU2l6aW5nOwogfQogI2VuZGlmIC8vIEVOQUJMRShURVhUX0FVVE9T
SVpJTkcpCkBAIC02Mzk2LDcgKzYzOTYsNyBAQCB2b2lkIERvY3VtZW50Ojp3aGVlbEV2ZW50SGFu
ZGxlcnNDaGFuZ2VkKCkKIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKE5v
ZGUmIG5vZGUpCiB7CiAgICAgaWYgKCFtX3doZWVsRXZlbnRUYXJnZXRzKQotICAgICAgICBtX3do
ZWVsRXZlbnRUYXJnZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKKyAg
ICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IG1ha2VVbmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7
CiAKICAgICBtX3doZWVsRXZlbnRUYXJnZXRzLT5hZGQoJm5vZGUpOwogCkBAIC02NDU2LDcgKzY0
NTYsNyBAQCB2b2lkIERvY3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcihOb2RlJiBoYW5k
bGVyKQogewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKCFtX3RvdWNoRXZlbnRU
YXJnZXRzKQotICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxF
dmVudFRhcmdldFNldD4oKTsKKyAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cyA9IG1ha2VVbmlx
dWU8RXZlbnRUYXJnZXRTZXQ+KCk7CiAKICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzLT5hZGQoJmhh
bmRsZXIpOwogCkBAIC04MDQ0LDcgKzgwNDQsNyBAQCB2b2lkIERvY3VtZW50OjpkaWRMb2dNZXNz
YWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xldmVsIGxldmVsLCBWZQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gbWVzc2FnZUxldmVsID0gbWVzc2Fn
ZUxldmVsRnJvbVdURkxvZ0xldmVsKGxldmVsKTsKLSAgICAgICAgYXV0byBtZXNzYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlU291cmNlLCBN
ZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobG9nTWVzc2FnZXMpLCBtYWlu
V29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBl
OjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNT
dGF0ZShmcmFtZSgpKSk7CiAKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNz
YWdlKSk7CiAgICAgfSk7CkBAIC04MDc5LDcgKzgwNzksNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNv
bnN0CiAKIGJvb2wgRG9jdW1lbnQ6OnJlZ2lzdGVyQ1NTUHJvcGVydHkoQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5JiYgcHJvcCkKIHsKLSAgICByZXR1cm4gbV9DU1NSZWdpc3RlcmVkUHJvcGVy
dHlTZXQuYWRkKHByb3AubmFtZSwgc3RkOjptYWtlX3VuaXF1ZTxDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHk+KFdURk1vdmUocHJvcCkpKS5pc05ld0VudHJ5OworICAgIHJldHVybiBtX0NTU1Jl
Z2lzdGVyZWRQcm9wZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBtYWtlVW5pcXVlPENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9wKSkpLmlzTmV3RW50cnk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OmRldGFjaEZyb21GcmFtZSgpCkBAIC04MTczLDcgKzgxNzMsNyBAQCBEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXImIERvY3VtZW50OjpkZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbgogICAgICAgICByZXR1cm4gdG9wRG9jdW1lbnQoKS5kZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKTsKIAogICAgIGlmICghbV9kZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpCi0gICAgICAgIG1fZGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICAgICAg
bV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcj4oKnRoaXMpOwogICAg
IHJldHVybiAqbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI7CiB9
CiAKQEAgLTgyMDQsNyArODIwNCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFBhaW50V29ya2xldEds
b2JhbFNjb3BlRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZjxQYWludFdvCiBDb250ZW50
Q2hhbmdlT2JzZXJ2ZXImIERvY3VtZW50Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKQogewogICAg
IGlmICghbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1fY29udGVudENoYW5nZU9i
c2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsK
KyAgICAgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRDaGFu
Z2VPYnNlcnZlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXI7
IAogfQogCkBAIC04MjEyLDcgKzgyMTIsNyBAQCBET01UaW1lckhvbGRpbmdUYW5rJiBEb2N1bWVu
dDo6ZG9tVGltZXJIb2xkaW5nVGFuaygpCiB7CiAgICAgaWYgKG1fZG9tVGltZXJIb2xkaW5nVGFu
aykKICAgICAgICAgcmV0dXJuICptX2RvbVRpbWVySG9sZGluZ1Rhbms7Ci0gICAgbV9kb21UaW1l
ckhvbGRpbmdUYW5rID0gc3RkOjptYWtlX3VuaXF1ZTxET01UaW1lckhvbGRpbmdUYW5rPigpOwor
ICAgIG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IG1ha2VVbmlxdWU8RE9NVGltZXJIb2xkaW5nVGFu
az4oKTsKICAgICByZXR1cm4gKm1fZG9tVGltZXJIb2xkaW5nVGFuazsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCAwZjUzOGJmYTA1ZGJjZWYzZThhNmY4ZTY2Yzk4MGZkM2Q5N2NlZTk2Li5h
YjU4MDQyNTQ4Y2U2YTQ0ZjY1ODRjZjkyMGI3MTkwZWFkZDUyOTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtMTI4NCw3ICsxMjg0LDcgQEAgY2xhc3MgRG9jdW1lbnQKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+IGNyZWF0ZVBhcnNlcllpZWxkVG9rZW4o
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRQYXJzZXJZ
aWVsZFRva2VuPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERvY3VtZW50UGFy
c2VyWWllbGRUb2tlbj4oKnRoaXMpOwogICAgIH0KIAogICAgIGJvb2wgaGFzQWN0aXZlUGFyc2Vy
WWllbGRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyWWllbGRUb2tlbkNvdW50OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4IDAxYzdmOTZlMDJl
OWViZDU4ODUzZmI1ZGIxYzRiODgyMWUyZjk3MjguLjAzNzAzYjYyYmM2NTA1NTc4YjM4OWI5OTkz
OGE0ZGFhYjZkNzZjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2
ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIERvY3VtZW50RXZlbnRRdWV1ZTo6VGltZXIgZmlu
YWwgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7CiAKIERvY3VtZW50RXZlbnRRdWV1ZTo6RG9j
dW1lbnRFdmVudFF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9j
dW1lbnQpCi0gICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+
KCp0aGlzKSkKKyAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIobWFrZVVuaXF1ZTxUaW1lcj4oKnRo
aXMpKQogICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKIHsKICAgICBtX3BlbmRpbmdFdmVudFRpbWVy
LT5zdXNwZW5kSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAKaW5kZXggNzI5MWQ0YWRlZTlmNDE3N2ZkYmZlZmVlZmRkZjI2NzA1
NGE5YzRmMC4uZTc2NDFhZjYyMThiZjEzYWIwZTNjNjg5MjAyMGRlODg5YzRlOTA2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTM2
NCw3ICszNjQsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKE5v
ZGUmIG5vZGUsIGNvbnN0IERvY3VtZW50TWFya2VyJiBuZXdNYQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxNYXJrZXJMaXN0PiYgbGlzdCA9IG1fbWFya2Vycy5hZGQoJm5vZGUsIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKIAogICAgIGlmICghbGlzdCkgewotICAgICAgICBsaXN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxNYXJrZXJMaXN0PigpOworICAgICAgICBsaXN0ID0gbWFrZVVuaXF1ZTxNYXJrZXJM
aXN0PigpOwogICAgICAgICBsaXN0LT5hcHBlbmQoUmVuZGVyZWREb2N1bWVudE1hcmtlcihuZXdN
YXJrZXIpKTsKICAgICB9IGVsc2UgaWYgKHNob3VsZEluc2VydEFzU2VwYXJhdGVNYXJrZXIobmV3
TWFya2VyKSkgewogICAgICAgICAvLyBXZSBkb24ndCBtZXJnZSBkaWN0YXRpb24gbWFya2Vycy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKaW5kZXggODFl
ZmIxMGQ1ZTc2ZWRiNmY2ZDM4MzUzMDA1MWQyOWMzODhlYWZkYi4uODU1YTJhMDY1NmY3MWI0NWVl
OGQ0ZmZmMjg0YTUzNTM3OWEzODc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
U3RvcmFnZUFjY2Vzcy5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgRG9jdW1lbnRTdG9yYWdlQWNjZXNz
KiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAg
IGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqPihT
dXBwbGVtZW50PERvY3VtZW50Pjo6ZnJvbSgmZG9jdW1lbnQsIHN1cHBsZW1lbnROYW1lKCkpKTsK
ICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxEb2N1bWVudFN0b3JhZ2VBY2Nlc3M+KGRvY3VtZW50KTsKKyAgICAgICAg
YXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxEb2N1bWVudFN0b3JhZ2VBY2Nlc3M+KGRv
Y3VtZW50KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAg
ICAgIHByb3ZpZGVUbygmZG9jdW1lbnQsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3Vw
cGxlbWVudCkpOwogICAgIH0KQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIERvY3VtZW50U3RvcmFn
ZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogICAgICAgICBib29sIHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUgPSB3YXNHcmFudGVk
ID09IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgfHwgcHJvbXB0V2FzU2hvd24gPT0gU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsKIAogICAgICAgICBpZiAoc2hvdWxkUHJlc2Vy
dmVVc2VyR2VzdHVyZSkgewotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRR
dWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJl
ZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsKKyAgICAgICAgICAgIE1pY3Jv
dGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90
YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0
KCkpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5lbmFibGVUZW1wb3JhcnlUaW1lVXNl
ckdlc3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIERv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZl
VXNlckdlc3R1cmUpIHsKLSAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVl
dWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZl
cmVuY2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgeworICAgICAgICAgICAgTWlj
cm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNy
b3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRSZWZlcmVuY2UpXSAo
KSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVu
Y2UuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5jb25zdW1lVGVtcG9yYXJ5
VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAgICB9KSk7CkBAIC0yMDksNyArMjA5LDcgQEAg
dm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmVu
YWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCiB7Ci0gICAgbV90ZW1wb3JhcnlVc2VyR2Vz
dHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdV
c2VyR2VzdHVyZSwgJm1fZG9jdW1lbnQpOworICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBt
YWtlVW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZt
X2RvY3VtZW50KTsKIH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmNvbnN1bWVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDQ1MTYxYzlj
YTIwYmFkNjkzMzAwNTFkMDlhNTVmMGFmYTU1ODZjYzYuLmVlYjFmMzQyOWQ2NGVmYzRkYjBiMTMw
ZDEzN2YzMTZlMzUwZDBkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ3Nyw3ICs0Nzcs
NyBAQCBOYW1lZE5vZGVNYXAmIEVsZW1lbnQ6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIGlmIChO
YW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IHJhcmVEYXRhLmF0dHJpYnV0ZU1hcCgpKQogICAg
ICAgICByZXR1cm4gKmF0dHJpYnV0ZU1hcDsKIAotICAgIHJhcmVEYXRhLnNldEF0dHJpYnV0ZU1h
cChzdGQ6Om1ha2VfdW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRo
aXMpKSk7CisgICAgcmFyZURhdGEuc2V0QXR0cmlidXRlTWFwKG1ha2VVbmlxdWU8TmFtZWROb2Rl
TWFwPihjb25zdF9jYXN0PEVsZW1lbnQmPigqdGhpcykpKTsKICAgICByZXR1cm4gKnJhcmVEYXRh
LmF0dHJpYnV0ZU1hcCgpOwogfQogCkBAIC0yMzA3LDcgKzIzMDcsNyBAQCB2b2lkIEVsZW1lbnQ6
OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBlbGVt
ZW50SW50ZXJmYQogICAgIHNldEZsYWcoSXNDdXN0b21FbGVtZW50KTsKICAgICBhdXRvJiBkYXRh
ID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlKCkpCi0gICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudElu
dGVyZmFjZSkpOworICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1h
a2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsK
ICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoKnRoaXMpOwogfQpAQCAtMjM0NCw3
ICsyMzQ0LDcgQEAgdm9pZCBFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSYgZWxlbWVudEludGVyZmFjZSkKICAgICBhdXRvJiBkYXRhID0gZW5zdXJlRWxl
bWVudFJhcmVEYXRhKCk7CiAgICAgYm9vbCBhbHJlYWR5U2NoZWR1bGVkVG9VcGdyYWRlID0gZGF0
YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpOwogICAgIGlmICghYWxyZWFkeVNjaGVkdWxl
ZFRvVXBncmFkZSkKLSAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShz
dGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJm
YWNlKSk7CisgICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUobWFrZVVu
aXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOwogICAg
IGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKS0+ZW5xdWV1ZUVsZW1lbnRVcGdyYWRl
KCp0aGlzLCBhbHJlYWR5U2NoZWR1bGVkVG9VcGdyYWRlKTsKIH0KIApAQCAtMzQ4MCw3ICszNDgw
LDcgQEAgRE9NVG9rZW5MaXN0JiBFbGVtZW50OjpjbGFzc0xpc3QoKQogewogICAgIEVsZW1lbnRS
YXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5j
bGFzc0xpc3QoKSkKLSAgICAgICAgZGF0YS5zZXRDbGFzc0xpc3Qoc3RkOjptYWtlX3VuaXF1ZTxE
T01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikpOworICAgICAgICBkYXRh
LnNldENsYXNzTGlzdChtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6
Y2xhc3NBdHRyKSk7CiAgICAgcmV0dXJuICpkYXRhLmNsYXNzTGlzdCgpOwogfQogCkBAIC0zNDg4
LDcgKzM0ODgsNyBAQCBEYXRhc2V0RE9NU3RyaW5nTWFwJiBFbGVtZW50OjpkYXRhc2V0KCkKIHsK
ICAgICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAg
ICBpZiAoIWRhdGEuZGF0YXNldCgpKQotICAgICAgICBkYXRhLnNldERhdGFzZXQoc3RkOjptYWtl
X3VuaXF1ZTxEYXRhc2V0RE9NU3RyaW5nTWFwPigqdGhpcykpOworICAgICAgICBkYXRhLnNldERh
dGFzZXQobWFrZVVuaXF1ZTxEYXRhc2V0RE9NU3RyaW5nTWFwPigqdGhpcykpOwogICAgIHJldHVy
biAqZGF0YS5kYXRhc2V0KCk7CiB9CiAKQEAgLTM2MzIsNyArMzYzMiw3IEBAIEludGVyc2VjdGlv
bk9ic2VydmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCkK
IHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlm
ICghcmFyZURhdGEuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRh
LnNldEludGVyc2VjdGlvbk9ic2VydmVyRGF0YShzdGQ6Om1ha2VfdW5pcXVlPEludGVyc2VjdGlv
bk9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJhcmVEYXRhLnNldEludGVyc2VjdGlvbk9ic2Vy
dmVyRGF0YShtYWtlVW5pcXVlPEludGVyc2VjdGlvbk9ic2VydmVyRGF0YT4oKSk7CiAgICAgcmV0
dXJuICpyYXJlRGF0YS5pbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKTsKIH0KIApAQCAtMzY1OCw3
ICszNjU4LDcgQEAgUmVzaXplT2JzZXJ2ZXJEYXRhJiBFbGVtZW50OjplbnN1cmVSZXNpemVPYnNl
cnZlckRhdGEoKQogewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRh
KCk7CiAgICAgaWYgKCFyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRhdGEoKSkKLSAgICAgICAgcmFy
ZURhdGEuc2V0UmVzaXplT2JzZXJ2ZXJEYXRhKHN0ZDo6bWFrZV91bmlxdWU8UmVzaXplT2JzZXJ2
ZXJEYXRhPigpKTsKKyAgICAgICAgcmFyZURhdGEuc2V0UmVzaXplT2JzZXJ2ZXJEYXRhKG1ha2VV
bmlxdWU8UmVzaXplT2JzZXJ2ZXJEYXRhPigpKTsKICAgICByZXR1cm4gKnJhcmVEYXRhLnJlc2l6
ZU9ic2VydmVyRGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5j
cHAKaW5kZXggZDllNjYzNDljYmRiYTBiYjgxZDJhY2ZiZmRjMGQ0MzM3OGM2NThkYi4uMGIwOWQw
ODJjMzZlZGRkODRiOWNkZTk4ODI1MjcyZGI1Zjk2ZTViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyTWFwLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgRXZlbnRMaXN0ZW5l
ck1hcDo6YWRkKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+
JiYgbGlzCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGF1dG8gbGlzdGVuZXJz
ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudExpc3RlbmVyVmVjdG9yPigpOworICAgIGF1dG8gbGlz
dGVuZXJzID0gbWFrZVVuaXF1ZTxFdmVudExpc3RlbmVyVmVjdG9yPigpOwogICAgIGxpc3RlbmVy
cy0+dW5jaGVja2VkQXBwZW5kKFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOjpjcmVhdGUoV1RGTW92
ZShsaXN0ZW5lciksIG9wdGlvbnMpKTsKICAgICBtX2VudHJpZXMuYXBwZW5kKHsgZXZlbnRUeXBl
LCBXVEZNb3ZlKGxpc3RlbmVycykgfSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaAppbmRleCA5ZTkzMDhiYjVkYTE0NjFlMzU4ZTNjYzYyZmVhZmRjZmNkMGNjN2FkLi41
YjZhYjY4NzU1YjYxYmZlMmQ0YTY4YmNiZTc1MjRmZDBkZGFiYjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKQEAgLTMzOSwxMyArMzM5LDEzIEBAIHN0cnVjdCBFdmVudE5hbWVzIHsKICAgICBE
T01fRVZFTlRfTkFNRVNfRk9SX0VBQ0goRE9NX0VWRU5UX05BTUVTX0RFQ0xBUkUpCiAjdW5kZWYg
RE9NX0VWRU5UX05BTUVTX0RFQ0xBUkUKIAotICAgIC8vIEZJWE1FOiBUaGUgZnJpZW5kIGRlY2xh
cmF0aW9uIHRvIHN0ZDo6bWFrZV91bmlxdWUgYmVsb3cgZG9lcyBub3Qgd29yayBpbiB3aW5kb3dz
IHBvcnQuCisgICAgLy8gRklYTUU6IFRoZSBmcmllbmQgZGVjbGFyYXRpb24gdG8gbWFrZVVuaXF1
ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdpbmRvd3MgcG9ydC4KICAgICAvLwogICAgIC8vIHRl
bXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFyZ3M+Ci0gICAgLy8gZnJpZW5kIHR5cGVuYW1lIHN0
ZDo6X1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3Qgc3RkOjptYWtlX3VuaXF1ZShBcmdzJiYu
Li4pOworICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5nbGVf
b2JqZWN0IG1ha2VVbmlxdWUoQXJncyYmLi4uKTsKICAgICAvLwogICAgIC8vIFRoaXMgY3JlYXRl
IGZ1bmN0aW9uIHNob3VsZCBiZSBkZWxldGVkIGxhdGVyIGFuZCBpcyBvbmx5IGZvciBrZWVwaW5n
IEV2ZW50TmFtZXMgYXMgcHJpdmF0ZS4KLSAgICAvLyBzdGQ6Om1ha2VfdW5pcXVlIHNob3VsZCBi
ZSB1c2VkIGluc3RlYWQuCisgICAgLy8gbWFrZVVuaXF1ZSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFk
LgogICAgIC8vCiAgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEV2ZW50TmFtZXM+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50UGF0aC5jcHAKaW5kZXggZGIxNDI4ZDFkNDI2MDU4Y2I2NWIxZWI2ZmFjYTIzZGI5ODkyODJi
ZC4uYTBhZDBhZDdjNDgyNjkyZTYzOGU1NzI4MGYxYTI5MjQ3YWNlYzE3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50UGF0aC5jcHAKQEAgLTExNSwxNyArMTE1LDE3IEBAIHZvaWQgRXZlbnRQYXRoOjpidWls
ZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKIHsKICAgICB1c2luZyBN
YWtlRXZlbnRDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gKCopKE5vZGUm
LCBFdmVudFRhcmdldCosIEV2ZW50VGFyZ2V0KiwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKTsKICAg
ICBNYWtlRXZlbnRDb250ZXh0IG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZl
bnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRT
aGFkb3dEZXB0aCkgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRl
eHQ+KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdl
dCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgfTsKICAgICBpZiAoaXM8TW91c2VF
dmVudD4oZXZlbnQpIHx8IGV2ZW50LmlzRm9jdXNFdmVudCgpKSB7CiAgICAgICAgIG1ha2VFdmVu
dENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2
ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVf
cHRyPEV2ZW50Q29udGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNs
b3NlZFNoYWRvd0RlcHRoKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE1vdXNlT3JG
b2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFk
b3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAg
ICAgaWYgKGlzPFRvdWNoRXZlbnQ+KGV2ZW50KSkgewogICAgICAgICBtYWtlRXZlbnRDb250ZXh0
ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdl
dCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVu
dENvbnRleHQ+IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoRXZl
bnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRo
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRvdWNoRXZlbnRDb250ZXh0Pihub2Rl
LCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICAgICAgfTsK
ICAgICB9CiAjZW5kaWYKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQ
YXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2V0LCBFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCpub2RlKS5kb21XaW5kb3coKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
dGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2luZG93RXZlbnRDb250ZXh0Pigqbm9kZSwgKndp
bmRvdywgKnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlxdWU8V2luZG93RXZlbnRDb250ZXh0Pigqbm9k
ZSwgKndpbmRvdywgKnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0z
MDgsNyArMzA4LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9yPEVsZW1lbnQq
PiYgdGFyZ2V0cykKICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgIE5vZGUqIG9yaWdp
biA9ICp0YXJnZXRzLmJlZ2luKCk7CiAgICAgICAgIGlmICghdGFyZ2V0LT5pc0Nsb3NlZFNoYWRv
d0hpZGRlbigqb3JpZ2luKSkKLSAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxFdmVudENvbnRleHQ+KHRhcmdldCwgdGFyZ2V0LCBvcmlnaW4sIDApKTsKKyAgICAgICAg
ICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KHRhcmdldCwgdGFyZ2V0
LCBvcmlnaW4sIDApKTsKICAgICB9CiB9CiAKQEAgLTMxNyw3ICszMTcsNyBAQCBFdmVudFBhdGg6
OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RXZlbnRUYXJnZXQqPiYgdGFyZ2V0cykKICAgICBmb3Ig
KGF1dG8qIHRhcmdldCA6IHRhcmdldHMpIHsKICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAg
ICAgIEFTU0VSVCghaXM8Tm9kZT4odGFyZ2V0KSk7Ci0gICAgICAgIG1fcGF0aC5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KG51bGxwdHIsIHRhcmdldCwgKnRhcmdldHMuYmVn
aW4oKSwgMCkpOworICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0
PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggZWRkOWNhMjhlYTQ5M2FjN2M5
NGM4YmRlMjg1YjE2NjZjMzg4MjU1OS4uYTcwYmNhZWNjYzg3OTVhNGY0YmE0MjZlMjUxM2RmZjdh
MGY3NGIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTQyLDYg
KzQyLDcgQEAgY2xhc3MgUmVuZGVyVHJlZUJ1aWxkZXI7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAog
Y2xhc3MgRnVsbHNjcmVlbk1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEZ1bGxzY3JlZW5NYW5hZ2VyKERvY3VtZW50Jik7CiAgICAgfkZ1bGxzY3Jl
ZW5NYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVn
aXN0cnkuY3BwCmluZGV4IGIzYTA2ZTQ3YjA3MDBmN2M0N2QzZDlhZWYzM2Y0NDM3MjRlMGM1NWUu
Ljk0MGVmY2FlZDgzMDkxYzI1ODNmYTllMzM2ZWYzZDc4YzU0YWEzZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCkBAIC0zNyw3ICszNyw3
IEBAIHZvaWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcihjb25zdCBBdG9t
U3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlCiAgICAgCiAgICAgSWRUb09ic2VydmVyU2V0TWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9yZWdpc3RyeS5hZGQoaWQuaW1wbCgpLCBudWxscHRyKTsK
ICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9ic2VydmVyU2V0PigpOworICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPYnNlcnZlclNldD4oKTsKIAogICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUtPmFkZChvYnNlcnZlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRF
dmVudC5jcHAKaW5kZXggN2U3YTM0Nzk3Yjg2MjlmNjJmN2Y3ODZhYjE0YzVjNmY1YmQ5MGIxNC4u
Y2U4NTZiYjU1ZDViZDk5ZTY2ZjUwY2I1NWIwYmU0NzkwZTA5ODQ1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9LZXlib2FyZEV2ZW50LmNwcApAQCAtOTYsNyArOTYsNyBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVu
dDo6S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXli
b2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5LCBSZWZQdHI8V2luZG93
UHJveHk+JiYgdmlldykKICAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5
Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6
OlllcywgSXNDb21wb3NlZDo6WWVzLAogICAgICAgICBrZXkudGltZXN0YW1wKCkuYXBwcm94aW1h
dGVNb25vdG9uaWNUaW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBrZXkubW9kaWZpZXJzKCksIElz
VHJ1c3RlZDo6WWVzKQotICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKKyAgICAsIG1fdW5kZXJseWluZ1Bs
YXRmb3JtRXZlbnQobWFrZVVuaXF1ZTxQbGF0Zm9ybUtleWJvYXJkRXZlbnQ+KGtleSkpCiAjaWYg
RU5BQkxFKEtFWUJPQVJEX0tFWV9BVFRSSUJVVEUpCiAgICAgLCBtX2tleShrZXkua2V5KCkpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCmluZGV4IGI2MzE4NDE1MGY1YTM5MTQyNTJiODQy
ZWQ5ZDA3ZGVhYWY2YjQwMzYuLmJhNzIyYTExYzcwZmNhODA4MzJlNjRjODUyN2VlNDZiOWMzNDc2
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaApAQCAtNjksNyArNjksOCBAQCBjbGFzcyBWb2lk
TWljcm90YXNrIGZpbmFsIDogcHVibGljIE1pY3JvdGFzayB7CiAgICAgRnVuY3Rpb248dm9pZCgp
PiBtX2Z1bmN0aW9uOwogfTsKIAotY2xhc3MgTWljcm90YXNrUXVldWUgeworY2xhc3MgTWljcm90
YXNrUXVldWUgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVu
ZCBOZXZlckRlc3Ryb3llZDxNaWNyb3Rhc2tRdWV1ZT47CiAgICAgZnJpZW5kIGNsYXNzIE1pY3Jv
dGFzazsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRl
eCA2NmM1ZWEwYjlkNjM0NTQ0MzgxMmZiMTMxZmZlNWRiZTZjYTFkZGYzLi4xOTNmMjc4MDVhNWFl
ZDRiNjA2ZTljZWVhM2E5YTM1ZDhiMWU5OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIHZvaWQgcXVldWVNdXRhdGlv
bk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2soKQogICAgIGlmIChtdXRhdGlvbk9ic2VydmVyQ29t
cG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnKQogICAgICAgICByZXR1cm47CiAgICAgbXV0YXRpb25P
YnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVkRmxhZyA9IHRydWU7Ci0gICAgTWljcm90YXNr
UXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9u
T2JzZXJ2ZXJNaWNyb3Rhc2s+KCkpOworICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVl
dWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90YXNrPigpKTsKIH0K
IAogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoUmVmPE11dGF0
aW9uUmVjb3JkPiYmIG11dGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggNTJkYTYxZjc0ZjFmNTdhZjY4NTQ5
ZjM2NjU2MzA2ZDhkMTcwM2M3OS4uMDI3NmU0MmJlNWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5
Y2JkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlv
bk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNy
CiAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBv
bGRWYWx1ZUZsYWcpOwogfQogCiBib29sIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpp
c09sZFZhbHVlUmVxdWVzdGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBjOGZjMDEwNjcyNDVlNGUzNjE5
N2EyZjZkNGQxZTQ1NzU0N2JiYzhhLi5lNWM2ZGQxNmE0ZGI2MDliYTUyNzNhNDdhZjdmYTY4MjY2
MmEyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbjo6b2JzZXJ2ZWRTdWJ0cmVlTm9kZVdpbGxEZXRhY2goTm9kZSYgbm9kZSkKICAg
ICBtX29ic2VydmVyLT5zZXRIYXNUcmFuc2llbnRSZWdpc3RyYXRpb24oKTsKIAogICAgIGlmICgh
bV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcykgewotICAgICAgICBtX3RyYW5zaWVudFJlZ2lz
dHJhdGlvbk5vZGVzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5v
ZGU+Pj4oKTsKKyAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcyA9IG1ha2VVbmlx
dWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7CiAKICAgICAgICAgQVNTRVJUKCFt
X25vZGVLZXB0QWxpdmUpOwogICAgICAgICBtX25vZGVLZXB0QWxpdmUgPSAmbV9ub2RlOyAvLyBC
YWxhbmNlZCBpbiB0YWtlVHJhbnNpZW50UmVnaXN0cmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCA3NmQ0ZWE5ZDczMGE5MjM3MmE5ZjhlN2E2ZDhmNjdkMDBmZDNkYmY1Li5jYWJmMWViNThjOWMy
M2NhZDg4NWJkMDFkZjEyMmI2NTFhZTAyYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zOTgsOSAr
Mzk4LDkgQEAgdm9pZCBOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKCkKIHsKICAgICBOb2RlUmFy
ZURhdGEqIGRhdGE7CiAgICAgaWYgKGlzPEVsZW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgZGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50
PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlx
dWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5k
ZXJlcikpLnJlbGVhc2UoKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsKKyAgICAgICAg
ZGF0YSA9IG1ha2VVbmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFz
ZSgpOwogICAgIEFTU0VSVChkYXRhKTsKIAogICAgIG1fZGF0YS5tX3JhcmVEYXRhID0gZGF0YTsK
QEAgLTIyMTUsNyArMjIxNSw3IEBAIEV2ZW50VGFyZ2V0RGF0YSYgTm9kZTo6ZW5zdXJlRXZlbnRU
YXJnZXREYXRhKCkKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ldmVudFRhcmdldERh
dGFNYXBMb2NrKTsKICAgICBzZXRIYXNFdmVudFRhcmdldERhdGEodHJ1ZSk7Ci0gICAgcmV0dXJu
ICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRh
cmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKmV2ZW50VGFyZ2V0RGF0
YU1hcCgpLmFkZCh0aGlzLCBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3It
PnZhbHVlOwogfQogCiB2b2lkIE5vZGU6OmNsZWFyRXZlbnRUYXJnZXREYXRhKCkKQEAgLTIyODcs
NyArMjI4Nyw3IEBAIHZvaWQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9u
T2JzZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9ic2VydmVyCiAgICAgfQogCiAgICAgaWYgKCFy
ZWdpc3RyYXRpb24pIHsKLSAgICAgICAgcmVnaXN0cnkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4ob2JzZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBh
dHRyaWJ1dGVGaWx0ZXIpKTsKKyAgICAgICAgcmVnaXN0cnkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4ob2JzZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRy
aWJ1dGVGaWx0ZXIpKTsKICAgICAgICAgcmVnaXN0cmF0aW9uID0gcmVnaXN0cnkubGFzdCgpLmdl
dCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDc2OTBkNTk5ZmNh
N2RjOTljYjQ5ZTE2MGZiZTJhZmFkZGYwMGNkZjQuLjc2NmQ2N2YzZjZkNjI5YWYwODk0MmFkYzIz
ZTJjMjJjMjlmM2U0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTI4MSw3ICsy
ODEsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAg
ICAgTm9kZUxpc3RzTm9kZURhdGEmIGVuc3VyZU5vZGVMaXN0cygpCiAgICAgewogICAgICAgICBp
ZiAoIW1fbm9kZUxpc3RzKQotICAgICAgICAgICAgbV9ub2RlTGlzdHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOworICAgICAgICAgICAgbV9ub2RlTGlzdHMgPSBtYWtl
VW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOwogICAgICAgICByZXR1cm4gKm1fbm9kZUxpc3Rz
OwogICAgIH0KIApAQCAtMjg5LDcgKzI4OSw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1Ymxp
YyBOb2RlUmFyZURhdGFCYXNlIHsKICAgICBOb2RlTXV0YXRpb25PYnNlcnZlckRhdGEmIGVuc3Vy
ZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkKICAgICB7CiAgICAgICAgIGlmICghbV9tdXRhdGlvbk9i
c2VydmVyRGF0YSkKLSAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKKyAgICAgICAgICAgIG1fbXV0
YXRpb25PYnNlcnZlckRhdGEgPSBtYWtlVW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4o
KTsKICAgICAgICAgcmV0dXJuICptX211dGF0aW9uT2JzZXJ2ZXJEYXRhOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKaW5kZXggNTMzN2M1OGNkZmJiYWFi
MjMwMTg0NTAyNjM4ZGM2MzQ0OWY3OTZhYy4uNjFiYmM0ZWRmZjkzNGE2NDQ2ZWEyNTY3NTU2NjNm
ZDU0Njg3N2UzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3Jv
dXBzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCkBA
IC0xOTgsMTEgKzE5OCwxMSBAQCB2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjphZGRCdXR0b24oSFRN
TElucHV0RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25h
bWVUb0dyb3VwTWFwKQotICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gc3RkOjptYWtlX3VuaXF1
ZTxOYW1lVG9Hcm91cE1hcD4oKTsKKyAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IG1ha2VVbmlx
dWU8TmFtZVRvR3JvdXBNYXA+KCk7CiAKICAgICBhdXRvJiBncm91cCA9IG1fbmFtZVRvR3JvdXBN
YXAtPmFkZChlbGVtZW50Lm5hbWUoKS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIWdyb3VwKQotICAgICAgICBncm91cCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFkaW9C
dXR0b25Hcm91cD4oKTsKKyAgICAgICAgZ3JvdXAgPSBtYWtlVW5pcXVlPFJhZGlvQnV0dG9uR3Jv
dXA+KCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGM4MjVhN2VkZWU2YmIyZDVmNTE2
YzZkM2U2ZWE3NDEwZTZlY2M3NTYuLjA0YWZlOWQ3OGFkMGJkMTAyOGE2NzAzYzBmYzNkNGY2NTNi
MTNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKQEAgLTM3OSw4ICszNzksOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9y
dEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbgogewogICAgIGlm
IChtX2luRGlzcGF0Y2hFcnJvckV2ZW50KSB7CiAgICAgICAgIGlmICghbV9wZW5kaW5nRXhjZXB0
aW9ucykKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOwotICAgICAgICBt
X3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRXhjZXB0
aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBX
VEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBt
YWtlVW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOwor
ICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRXhj
ZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJM
LCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE0
LDkgKzQxNCw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVk
UHJvbWlzZVJlamVjdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhCiAgICAgU3RyaW5nIGVycm9yTWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogIiwgcmVzdWx0
TWVzc2FnZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0
YWNrLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjYWxsU3RhY2sucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7
CiAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKQEAgLTUwOSw3
ICs1MDksNyBAQCBSZWplY3RlZFByb21pc2VUcmFja2VyJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdwogICAgIC8vIFdoZW4gaW5pdGlhbGl6
aW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHZtKCkgaXMgbm90IHJlYWR5LgogCiAgICAgQVNT
RVJUKCFtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIpOwotICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJh
Y2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZt
KCkpOworICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IG1ha2VVbmlxdWU8UmVqZWN0ZWRQ
cm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOwogICAgIHJldHVybiAqbV9yZWplY3RlZFByb21p
c2VUcmFja2VyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5k
ZXggNTVkYzJjODdhNGFjMjAyZDcxYWRkYTY2ZDU5NmI1ZmVhMGJjODg1Ni4uMjEwOWNlNGEyMjhj
M2U3YmE4N2E0YmE1MmIyZGIyODIzNjA4NzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1
ZXJ5LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBT
ZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRG9jCiAgICAg
aWYgKG1fZW50cmllcy5zaXplKCkgPT0gbWF4aW11bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUpCiAg
ICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRyaWVzLnJhbmRvbSgpKTsKIAotICAgIHJldHVy
biAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIHN0ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVy
eT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAq
bV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIG1ha2VVbmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92
ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKaW5kZXggNjk2M2I2ODM3OWQ4OGYyN2E4NGUyZjFkYTY1MTUzODE4MDViMjkz
Yy4uNjc4NmMwZDIxZTFiMmMyYTU3ODUxYmQwODUxNjRjMWExZTkyYzk5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcApAQCAtNTgsNyArNTgsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290
KERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93Um9vdE1vZGUgdHlwZSkKICAgICA6IERvY3VtZW50
RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRo
aXMsIGRvY3VtZW50KQogICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX3N0eWxlU2NvcGUoc3Rk
OjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZSht
YWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBA
IFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8U2xvdEFzc2lnbm1lbnQ+JiYgc2xvCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50
LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAg
ICAsIG1fdHlwZShTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQotICAgICwgbV9zdHlsZVNjb3Bl
KHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2Nv
cGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKICAgICAsIG1fc2xvdEFzc2lnbm1l
bnQoV1RGTW92ZShzbG90QXNzaWdubWVudCkpCiB7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9p
ZCBTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG5ld0Rv
Y3VtZW50KQogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXBh
cmVudFRyZWVTY29wZSgpIHx8ICZwYXJlbnRUcmVlU2NvcGUoKS0+ZG9jdW1lbnRTY29wZSgpID09
ICZuZXdEb2N1bWVudCk7CiAKICAgICAvLyBTdHlsZSBzY29wZXMgYXJlIGRvY3VtZW50IHNwZWNp
ZmljLgotICAgIG1fc3R5bGVTY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigq
dGhpcyk7CisgICAgbV9zdHlsZVNjb3BlID0gbWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlz
KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZtX3N0eWxl
U2NvcGUtPmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50KTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgU2hhZG93Um9vdDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzCiB7CiAgICAgQVNTRVJUKCZzbG90LnJvb3ROb2Rl
KCkgPT0gdGhpcyk7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RB
c3NpZ25tZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90QXNzaWdubWVudD4oKTsKKyAgICAgICAg
bV9zbG90QXNzaWdubWVudCA9IG1ha2VVbmlxdWU8U2xvdEFzc2lnbm1lbnQ+KCk7CiAKICAgICBy
ZXR1cm4gbV9zbG90QXNzaWdubWVudC0+YWRkU2xvdEVsZW1lbnRCeU5hbWUobmFtZSwgc2xvdCwg
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggYTQxOWRk
YTUyOGFjY2JkYTZkZTlkZGYxYTU0ODY0Y2ZkZjkxNjBlZi4uNDVjMDhlYTM2YWZlMTM5N2JlMGVj
YmZiMjllMjI4ZWNkMGM5OTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RB
c3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3Bw
CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRC
eU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW4KICAgICAgICAgLy8g
dG8gYXZvaWQgYWx3YXlzIGhhdmluZyBhIHZlY3RvciBvZiBhbGwgY2hpbGQgbm9kZXMgb2YgYSBz
aGFkb3cgaG9zdC4KICAgICAgICAgaWYgKHNsb3ROYW1lID09IGRlZmF1bHRTbG90TmFtZSgpKQog
ICAgICAgICAgICAgbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYXV0byYgc2xvdCA9ICphZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlOwogICAgIGJvb2wgbmVlZHNTbG90Y2hhbmdlRXZlbnQgPSBzaGFkb3dSb290LnNob3Vs
ZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNBc3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsIHNs
b3QpOwpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xv
dChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWUpCiAgICAgfQogCiAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3Nsb3RzLmVuc3VyZShzbG90TmFtZSwgW10gewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTbG90PigpOwogICAgIH0pOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFzc2ln
bmVkTm9kZXMuYXBwZW5kKCZjaGlsZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4
IDJmMjg3MGQxNjY5ZDQ0YmM2MTg0YTcyZWM2M2ViMzIzZjUyN2QzOWYuLjUzMWFjZGY0ZGQ2NTY4
ZTBmNDYyMWViNTBkODlkZWU0NjdkNTVhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBA
IC02NCw3ICs2NCw3IEBAIFRyZWVTY29wZTo6VHJlZVNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jv
b3QsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUoc2hhZG93Um9vdCkKICAg
ICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKCZk
b2N1bWVudCkKLSAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlx
dWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAg
c2hhZG93Um9vdC5zZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtNzMsNyArNzMsNyBAQCBUcmVl
U2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKGRv
Y3VtZW50KQogICAgICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRU
cmVlU2NvcGUobnVsbHB0cikKLSAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6
bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkp
CiB7CiAgICAgZG9jdW1lbnQuc2V0VHJlZVNjb3BlKCp0aGlzKTsKIH0KQEAgLTE0MSw3ICsxNDEs
NyBAQCBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBUcmVlU2NvcGU6OmdldEFsbEVsZW1lbnRzQnlJ
ZChjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50SQogdm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRC
eUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBlbGVtZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJv
b2wgbm90aWZ5T2JzZXJ2ZXJzKQogewogICAgIGlmICghbV9lbGVtZW50c0J5SWQpCi0gICAgICAg
IG1fZWxlbWVudHNCeUlkID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigp
OworICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1h
cD4oKTsKICAgICBtX2VsZW1lbnRzQnlJZC0+YWRkKGVsZW1lbnRJZCwgZWxlbWVudCwgKnRoaXMp
OwogICAgIGlmIChub3RpZnlPYnNlcnZlcnMpCiAgICAgICAgIG1faWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVudElkKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBF
bGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSkgY29uc3QKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJp
bmdJbXBsJiBuYW1lLCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghbV9lbGVtZW50c0J5
TmFtZSkKLSAgICAgICAgbV9lbGVtZW50c0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNj
b3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9lbGVtZW50c0J5TmFtZSA9IG1ha2VVbmlxdWU8
VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlOYW1lLT5hZGQobmFtZSwg
ZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBUcmVlU2NvcGU6
OmFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50JiBpbWFnZU1hcCkKICAgICBpZiAoIW5hbWUpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAoIW1faW1hZ2VNYXBzQnlOYW1lKQotICAgICAgICBtX2lt
YWdlTWFwc0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsK
KyAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRN
YXA+KCk7CiAgICAgbV9pbWFnZU1hcHNCeU5hbWUtPmFkZCgqbmFtZSwgaW1hZ2VNYXAsICp0aGlz
KTsKIH0KIApAQCAtMjYzLDcgKzI2Myw3IEBAIEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6Omdl
dEltYWdlTWFwKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6
YWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUsIEhUTUxJ
bWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2ltYWdlc0J5VXNlbWFwKQotICAg
ICAgICBtX2ltYWdlc0J5VXNlbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVk
TWFwPigpOworICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVP
cmRlcmVkTWFwPigpOwogICAgIHJldHVybiBtX2ltYWdlc0J5VXNlbWFwLT5hZGQobmFtZSwgZWxl
bWVudCwgKnRoaXMpOwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgSFRNTExhYmVsRWxlbWVudCog
VHJlZVNjb3BlOjpsYWJlbEVsZW1lbnRGb3JJZChjb25zdCBBdG9tU3RyaW5nJiBmb3JBdHRyaWJ1
dGVWYWwKIAogICAgIGlmICghbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSkgewogICAgICAgICAvLyBQ
b3B1bGF0ZSB0aGUgbWFwIG9uIGZpcnN0IGFjY2Vzcy4KLSAgICAgICAgbV9sYWJlbHNCeUZvckF0
dHJpYnV0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAg
ICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1h
cD4oKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGxhYmVsIDogZGVzY2VuZGFudHNPZlR5cGU8SFRN
TExhYmVsRWxlbWVudD4obV9yb290Tm9kZSkpIHsKICAgICAgICAgICAgIGNvbnN0IEF0b21TdHJp
bmcmIGZvclZhbHVlID0gbGFiZWwuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JB
dHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaApp
bmRleCBkZGE0OTBiMTNjZGMyZGRiODNmYjFmYzhmZmFiMDlkZjAwODhkODJjLi40MjY4MTk2Zjg5
MmFmMzA1NTEwM2M0ODcyZmU4ZWNiZGQ1ZjExYWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFN0eWxl
ZEVsZW1lbnQ7CiBjbGFzcyBUZXh0OwogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VW5kb1JlcGxhY2Vk
VGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQWNjZXNz
aWJpbGl0eVVuZG9SZXBsYWNlZFRleHQoKSB7IH0KICAgICB2b2lkIGNvbmZpZ3VyZVJhbmdlRGVs
ZXRlZEJ5UmVhcHBseVdpdGhTdGFydGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNzkzNDJjNDk3NzUzZDlhMTUyNmUw
NTU1NDlmYzc3OTcyMTRiZjZlNC4uODkxYzEyODhjNmUzMTRhY2NhZTliNjI3MTk3ODE4ODFlNzQy
ZGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzgwLDEyICszODAsMTIgQEAg
c3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2
ZW50KERvY3VtZW50JiBkb2N1bWVudCwKICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIENs
aXBib2FyZEV2ZW50S2luZDo6Q29weToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6Q3V0
OgotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9j
dW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGUsIHN0ZDo6bWFrZV91bmlx
dWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJl
YWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKICAgICBjYXNlIENsaXBi
b2FyZEV2ZW50S2luZDo6UGFzdGVBc1BsYWluVGV4dDoKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVk
KCkpIHsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0VHlwZSA9ICJ0ZXh0L3BsYWluIl9zOwog
ICAgICAgICAgICAgYXV0byBwbGFpblRleHQgPSBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKS0+cmVhZFN0cmluZyhwbGFpblRleHRUeXBlKTsKLSAgICAgICAgICAgIGF1dG8gcGFz
dGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKKyAgICAgICAg
ICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKICAg
ICAgICAgICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKHBsYWluVGV4dFR5cGUsIHBsYWluVGV4
dCk7CiAgICAgICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShw
YXN0ZWJvYXJkKSk7CiAgICAgICAgIH0KQEAgLTM5NiwxMCArMzk2LDEwIEBAIHN0YXRpYyBSZWY8
RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVu
dCYgZG9jdW1lbnQsCiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJlZm9yZUNvcHk6CiAg
ICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJlZm9yZUN1dDoKICAgICBjYXNlIENsaXBib2Fy
ZEV2ZW50S2luZDo6QmVmb3JlUGFzdGU6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6Oklu
dmFsaWQsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAgICAgIHJl
dHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRy
YW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4o
KSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9y
ZU1vZGU6OkludmFsaWQsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7Cisg
ICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBE
YXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJv
YXJkPigpKTsKIH0KIAogLy8gUmV0dXJucyB3aGV0aGVyIGNhbGxlciBzaG91bGQgY29udGludWUg
d2l0aCAidGhlIGRlZmF1bHQgcHJvY2Vzc2luZyIsIHdoaWNoIGlzIHRoZSBzYW1lIGFzCkBAIC0x
MTgzLDkgKzExODMsOSBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhFZGl0Q29tbWFu
ZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikKIAogRWRpdG9yOjpFZGl0b3IoRnJhbWUmIGZyYW1l
KQogICAgIDogbV9mcmFtZShmcmFtZSkKLSAgICAsIG1fa2lsbFJpbmcoc3RkOjptYWtlX3VuaXF1
ZTxQQUw6OktpbGxSaW5nPigpKQotICAgICwgbV9zcGVsbENoZWNrZXIoc3RkOjptYWtlX3VuaXF1
ZTxTcGVsbENoZWNrZXI+KGZyYW1lKSkKLSAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cihzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKKyAg
ICAsIG1fa2lsbFJpbmcobWFrZVVuaXF1ZTxQQUw6OktpbGxSaW5nPigpKQorICAgICwgbV9zcGVs
bENoZWNrZXIobWFrZVVuaXF1ZTxTcGVsbENoZWNrZXI+KGZyYW1lKSkKKyAgICAsIG1fYWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI+
KGZyYW1lKSkKICAgICAsIG1fZWRpdG9yVUlVcGRhdGVUaW1lcigqdGhpcywgJkVkaXRvcjo6ZWRp
dG9yVUlVcGRhdGVUaW1lckZpcmVkKQogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVD
VElPTikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3RlbGVwaG9uZU51bWJlckRl
dGVjdGlvblVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjpzY2FuU2VsZWN0aW9uRm9yVGVsZXBo
b25lTnVtYmVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAKaW5kZXggMGRkYzE1YmRjMGQzMDRmNDU0M2EwNTk2MmJjNmNjNzY0NWY1
NDc5NC4uMmMyMDI4Y2M2M2MxYjkzOGJjNjZmZjRiZWE1ODk5MjU4ZTlhNGE0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAg
LTE2MzEsNyArMTYzMSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnVwZGF0ZU5v
ZGVzSW5zZXJ0ZWQoTm9kZSAqbm9kZSkKIFJlcGxhY2VtZW50RnJhZ21lbnQqIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNlbWVudEZyYWdtZW50KCkKIHsKICAgICBpZiAoIW1f
cmVwbGFjZW1lbnRGcmFnbWVudCkKLSAgICAgICAgbV9yZXBsYWNlbWVudEZyYWdtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXBsYWNlbWVudEZyYWdtZW50PihtX2RvY3VtZW50RnJhZ21lbnQuZ2V0
KCksIGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICAgICAgbV9yZXBsYWNlbWVudEZyYWdtZW50ID0g
bWFrZVVuaXF1ZTxSZXBsYWNlbWVudEZyYWdtZW50PihtX2RvY3VtZW50RnJhZ21lbnQuZ2V0KCks
IGVuZGluZ1NlbGVjdGlvbigpKTsKICAgICByZXR1cm4gbV9yZXBsYWNlbWVudEZyYWdtZW50Lmdl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJl
Y3RHYXRoZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRo
ZXJlci5jcHAKaW5kZXggM2I0MDY4OGNiNGRhNjU2YjM0NDU4N2MwODg4NjM2YzBhYjE1NjZjZi4u
ZjliNjRjNWM4Yzg5NmJmMzIyNjMwODcwOWYyNmFhNjY3ZTFlZDk4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcApAQCAtODEsNyArODEs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpOb3RpZmllcj4gU2Vs
ZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZAogICAgIG1fZ2FwUmVjdHMuY2xlYXIoKTsKICAg
ICBtX2lzVGV4dE9ubHkgPSB0cnVlOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Tm90
aWZpZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKaW5kZXggMTg5NmUxYTIyODFjMWE5YjA0NmU4ZWZhY2Q5MTE5YWY1ZTI3N2Q1Ni4u
ZjFkMTljMTAxMTRjMWE5ODViOGI0MjZmYTY4ZmRiODEyMmE2MGM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtNjUwLDcgKzY1MCw3IEBAIGJvb2wgVGV4dEl0
ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0g
KG1fbm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9lbmRP
ZmZzZXQpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICBpZiAoIW1fZmxvd1J1blJl
c29sdmVyQ2FjaGUgfHwgJm1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPmZsb3coKSAhPSAmYmxvY2tG
bG93KSB7CiAgICAgICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyA9
IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPyAwIDogdGV4dE5vZGVPZmZzZXRJbkZsb3codGV4dE5v
ZGUpOwotICAgICAgICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7Cisg
ICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gbWFrZVVuaXF1ZTxTaW1wbGVMaW5l
TGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKICAgICAgICAgfQogICAg
ICAgICAvLyBTa2lwIHRvIG1fb2Zmc2V0IHBvc2l0aW9uLgogICAgICAgICBhdXRvIHJhbmdlID0g
bV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+cmFuZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMGE4M2Fj
MDk1OTI3NGMwNzgwZDVkN2IzODVmMDE5YzBlODZlM2M3NC4uOWNmODZhNGExNWYxYzdjNmYwMjgx
NTU2NDdhZmEwMDU5YWUzYjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQpAQCAtMzgwLDcgKzM4MCw3IEBAIEhUTUxDb252ZXJ0ZXI6OkhUTUxD
b252ZXJ0ZXIoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogICAg
IF9mbGFncy5yZWFjaGVkU3RhcnQgPSBmYWxzZTsKICAgICBfZmxhZ3MucmVhY2hlZEVuZCA9IGZh
bHNlOwogICAgIAotICAgIF9jYWNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxDb252ZXJ0ZXJD
YWNoZXM+KCk7CisgICAgX2NhY2hlcyA9IG1ha2VVbmlxdWU8SFRNTENvbnZlcnRlckNhY2hlcz4o
KTsKIH0KIAogSFRNTENvbnZlcnRlcjo6fkhUTUxDb252ZXJ0ZXIoKQpAQCAtNTUxLDcgKzU1MSw3
IEBAIFJlZlB0cjxDU1NWYWx1ZT4gSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHlsZVBy
b3BlcnR5Rm9yRWxlbWVudChFbGVtZW50JiBlCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fY29tcHV0
ZWRTdHlsZXMuYWRkKCZlbGVtZW50LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50
cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I+KCZlbGVtZW50LCB0cnVlKTsKKyAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1l
bnQsIHRydWUpOwogICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3ImIGNvbXB1dGVkU3R5bGUgPSAq
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0
eVZhbHVlKHByb3BlcnR5SWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAppbmRleCAyNTc3ZDVhNzY5Njgx
NjIyZjVkMGE3YjYzZmY0ZDA5ZDg4Yzk1ZGMxLi4yOWM1YThkYTdlZTMyNTU2MTI2NTY5MDU0ZTMw
MjIyOGE1MzAxODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMzcsNiArMzcsNyBAQCBPQkpDX0NM
QVNTIE5TVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoKSB7IH0KICAgICAvLyBSZXR1cm5zIGEgY29u
dGV4dCBJRC4KQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyIHsKICAgICB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKIAogICAgIGNsYXNzIEFsZXJu
YXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xs
ZXIoKSB7IH0KICAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXgg
ZmI0MzcxNjMwM2FlMjViODE5MjkyZDI3MWNhMmNhZTY4NGI5YzAyZS4uYzNjOGY4YjMyNGJmZWNk
Y2U5ZTVjNGViMTliNWI3NDYwODkyOGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApA
QCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2Fu
aXRpemluZ1dlYkNvbnRlbnQoKQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdl
Q29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKTsKICAgICAKLSAgICBhdXRvIHBhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBh
dXRvIHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsK
ICAgICBwYWdlLT5zZXRJc0ZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgcGFnZS0+c2V0
dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2UpOwogICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0
U2NyaXB0RW5hYmxlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5jcHAKaW5kZXggYTA5NWVlYWU5YjJhNzk3YmRhYmFlMzQ5NDBmZGM2YTNjZTMwNDI0Yi4u
ZDU4MTEyZmY5YmRmNmNkN2QxOTg1NTJkODY2OTkxZjg1YjdhMWMzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRp
YyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAg
ICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICBxdWV1ZS5n
ZXQoKS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlv
bikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNs
aWVudCYgY2xpZW50KQotICAgIDogbV9pbnRlcm5hbHMoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5h
bHM+KGNsaWVudCkpCisgICAgOiBtX2ludGVybmFscyhtYWtlVW5pcXVlPEludGVybmFscz4oY2xp
ZW50KSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5jcHAKaW5kZXggOWFkM2RhOWVmZmYwZjNhNzA3YTA2MDFmNzg2MDFkNWQ4
NjgyNThmNS4uOTlhN2I1YzZmOTg3YTE0YmExOTA5NDU4OTg3YWU4NGVjZmM0ZjA4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gRmlsZVJlYWRlcjo6cmVhZEludGVybmFsKEJsb2ImIGJsb2IsIEZpbGVSZWFk
ZXJMb2FkZXI6OlJlYWRUeXAKICAgICBtX3N0YXRlID0gTE9BRElORzsKICAgICBtX2Vycm9yID0g
bnVsbHB0cjsKIAotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlUmVhZGVyTG9h
ZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhp
cykpOworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRU
eXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOwogICAgIG1f
bG9hZGVyLT5zZXRFbmNvZGluZyhtX2VuY29kaW5nKTsKICAgICBtX2xvYWRlci0+c2V0RGF0YVR5
cGUobV9ibG9iLT50eXBlKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRl
eCA2YWU1NTJjYmNlZmJhMzVhZjU0OTRhZDgwYTE0NzMxZDAwYWNhM2QxLi41YzhmMThlM2RhYjBl
YjI1OTdhZDVlODIyMTM5YmQ4OGZmMzI0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShG
cmFtZSYgZnJhbWUpCiAKICAgICAvLyBDcmVhdGUgdGhlIENhY2hlZEZyYW1lcyBmb3IgYWxsIEZy
YW1lcyBpbiB0aGUgRnJhbWVUcmVlLgogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUudHJl
ZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGlu
ZygpKQotICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhY2hl
ZEZyYW1lPigqY2hpbGQpKTsKKyAgICAgICAgbV9jaGlsZEZyYW1lcy5hcHBlbmQobWFrZVVuaXF1
ZTxDYWNoZWRGcmFtZT4oKmNoaWxkKSk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50
LT5kb21XaW5kb3coKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7
CkBAIC0xNzIsNyArMTcyLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFt
ZSkKICAgICAvLyBBY3RpdmUgRE9NIG9iamVjdHMgbXVzdCBiZSBzdXNwZW5kZWQgYmVmb3JlIHdl
IGNhY2hlIHRoZSBmcmFtZSBzY3JpcHQgZGF0YS4KICAgICBtX2RvY3VtZW50LT5zdXNwZW5kKFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZSk7CiAKLSAgICBtX2NhY2hlZEZyYW1lU2NyaXB0
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0Q2FjaGVkRnJhbWVEYXRhPihmcmFtZSk7Cisg
ICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEgPSBtYWtlVW5pcXVlPFNjcmlwdENhY2hlZEZyYW1l
RGF0YT4oZnJhbWUpOwogCiAgICAgbV9kb2N1bWVudC0+ZG9tV2luZG93KCktPnN1c3BlbmRGb3JQ
YWdlQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggMDY4
NmFlOGZlY2U0NGYxZWY2OTBlNWY4ZjZhYmU4NDYxNDYzZGY3ZC4uOTc0N2E0MDQwMTZhYzg2OGQy
Zjc3OTZlNTMzMDQzNmZmYTU4NzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2Uu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNv
dW50ZWRMZWFrQ291bnRlciwgY2FjaGVkUGFnZUNvdW50ZXIsICgiQ2FjaGVkCiBDYWNoZWRQYWdl
OjpDYWNoZWRQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fZXhw
aXJhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBTZWNvbmRzKHBhZ2Uuc2V0dGluZ3Mo
KS5iYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsKCkpKQotICAgICwgbV9jYWNoZWRN
YWluRnJhbWUoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkp
CisgICAgLCBtX2NhY2hlZE1haW5GcmFtZShtYWtlVW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1h
aW5GcmFtZSgpKSkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2FjaGVkUGFnZUNvdW50ZXIuaW5j
cmVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggMDAyOTY1NTg5
MmQxNTRjYjUwNDNlMWRhMjI4MjU4NzlmNjNlZGRlNS4uM2JhMjRiOWRlMmU5OTQxOTZhMGRmOTJm
YzM2NjNjZWVhNWJmNGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAt
NDc4LDcgKzQ3OCw3IEBAIGJvb2wgUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRl
bSYgaXRlbSwgUGFnZSogcGFnZSkKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUg
YW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5t
X2NhY2hlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKKyAgICAg
ICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKICAg
ICAgICAgaXRlbS5tX3BydW5pbmdSZWFzb24gPSBQcnVuaW5nUmVhc29uOjpOb25lOwogICAgICAg
ICBtX2l0ZW1zLmFkZCgmaXRlbSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKaW5kZXggN2E5OTFmMTdiMDNkODNlOTA1ZjdkM2UwNjA3YmY1MmE5OWI4MGU0NS4uYjE0
ZDMxMDE1OGI2NDVmZTg2OTlmN2Y5OWY0MTg1OGJkNTVhZTI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgIG1fZmls
ZUljb25Mb2FkZXItPmludmFsaWRhdGUoKTsKIAogICAgIEZpbGVJY29uTG9hZGVyQ2xpZW50JiBj
bGllbnQgPSAqdGhpczsKLSAgICBtX2ZpbGVJY29uTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKKyAgICBtX2ZpbGVJY29uTG9hZGVyID0gbWFrZVVuaXF1
ZTxGaWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKIAogICAgIGNocm9tZS0+bG9hZEljb25Gb3JGaWxl
cyhwYXRocywgKm1fZmlsZUljb25Mb2FkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IDgwNmU1ZjNkYWViZTI5NGUzMzAyMzBkZmE1
ZWRlOGM5MmQ1OGMzMTguLjE3YzAyN2NmZGZhMWJiNDNiNjQ1ZWU2MmQ1OGM4YWMzMjA2ZDg3Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAg
LTI3OSw3ICsyNzksNyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
ZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oYXNIVE1MRWxlbWVudCgpLmlzQ29ubmVjdGVkKCkpOwotICAgIG1f
Zm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtQXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMpOworICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9i
c2VydmVyID0gbWFrZVVuaXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVs
ZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMp
OwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZVRhcmdldENo
YW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCBlYTViMDlh
YWEwOGRiMjczOTYxYjk1MzQyMmYwM2RkN2FkNmU0NjcxLi5kMGUwM2Y1NmNiMDYzZTI3ZjExMzQw
YTI3MTNkNGY5NjFiNWFlNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNw
cApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4gU2F2
ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgc2l6ZV90
IGl0ZW1Db3VudCA9IHN0YXRlVmVjdG9yW2luZGV4KytdLnRvVUludCgpOwogICAgIGlmICghaXRl
bUNvdW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNhdmVkRm9ybVN0YXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKKyAgICBhdXRvIHNhdmVkRm9y
bVN0YXRlID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAgICB3aGlsZSAoaXRlbUNv
dW50LS0pIHsKICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSBzdGF0ZVZlY3Rvci5zaXplKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2NSwxMyArMzY1LDEzIEBAIHN0YXRpYyBT
dHJpbmcgZm9ybVN0YXRlU2lnbmF0dXJlKCkKIHN0ZDo6dW5pcXVlX3B0cjxGb3JtQ29udHJvbGxl
cjo6U2F2ZWRGb3JtU3RhdGVNYXA+IEZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0
ZU1hcChjb25zdCBGb3JtRWxlbWVudExpc3RIYXNoU2V0JiBjb250cm9sTGlzdCkKIHsKICAgICBG
b3JtS2V5R2VuZXJhdG9yIGtleUdlbmVyYXRvcjsKLSAgICBhdXRvIHN0YXRlTWFwID0gc3RkOjpt
YWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4oKTsKKyAgICBhdXRvIHN0YXRlTWFwID0gbWFr
ZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4oKTsKICAgICBmb3IgKGF1dG8mIGNvbnRyb2wgOiBj
b250cm9sTGlzdCkgewogICAgICAgICBpZiAoIWNvbnRyb2wtPnNob3VsZFNhdmVBbmRSZXN0b3Jl
Rm9ybUNvbnRyb2xTdGF0ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8m
IGZvcm1TdGF0ZSA9IHN0YXRlTWFwLT5hZGQoa2V5R2VuZXJhdG9yLmZvcm1LZXkoKmNvbnRyb2wp
LmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAoIWZvcm1TdGF0
ZSkKLSAgICAgICAgICAgIGZvcm1TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3Rh
dGU+KCk7CisgICAgICAgICAgICBmb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRl
PigpOwogICAgICAgICBmb3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1l
KCksIGNvbnRyb2wtPnR5cGUoKSwgY29udHJvbC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CiAg
ICAgfQogICAgIHJldHVybiBzdGF0ZU1hcDsKQEAgLTQwMyw3ICs0MDMsNyBAQCBGb3JtQ29udHJv
bFN0YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1M
Rm9ybUNvbnRyb2xFbAogICAgIGlmIChtX3NhdmVkRm9ybVN0YXRlTWFwLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoKTsKICAgICBpZiAoIW1fZm9ybUtleUdlbmVy
YXRvcikKLSAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGb3Jt
S2V5R2VuZXJhdG9yPigpOworICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBtYWtlVW5pcXVl
PEZvcm1LZXlHZW5lcmF0b3I+KCk7CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9zYXZlZEZvcm1TdGF0ZU1hcC5maW5kKG1fZm9ybUtleUdlbmVyYXRvci0+Zm9ybUtleShj
b250cm9sKS5pbXBsKCkpOwogICAgIGlmIChpdCA9PSBtX3NhdmVkRm9ybVN0YXRlTWFwLmVuZCgp
KQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAxMDQ3YzU4ZWVjMzUzNmUzZDM5OTNhN2I2ZTU4
NjI1YjAxNTk1MmYxLi5lYjliZDA2ODVkNTkyZWE2OTIzMTNhZDQxNmMyN2Q3ZjI4MjYxZjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzE0LDcgKzMx
NCw3IEBAIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6Omhhc1JlbChSZWxhdGlvbiByZWxhdGlvbikg
Y29uc3QKIERPTVRva2VuTGlzdCYgSFRNTEFuY2hvckVsZW1lbnQ6OnJlbExpc3QoKSBjb25zdAog
ewogICAgIGlmICghbV9yZWxMaXN0KSB7Ci0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91
bmlxdWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMp
LCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewor
ICAgICAgICBtX3JlbExpc3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oY29uc3RfY2FzdDxI
VE1MQW5jaG9yRWxlbWVudCY+KCp0aGlzKSwgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVu
dCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgICAg
ICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm5vcmVmZXJyZXIiKSB8
fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAibm9vcGVuZXIiKSB8fCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKHRva2VuLCAiYXIiKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAKaW5kZXggYWMwNzU4ZGU4M2IwNDg4MmE1ZDg5MjJmZDQwNTU0OGVmOTU2
ZGNhMi4uNDlhYmZhNWY3MGE3YWI5N2Q3M2UyYzgyYjc2N2IwNTM1MWFkZWY4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIEhU
TUxBcmVhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFJlZ2lvbigpCiBib29sIEhUTUxBcmVhRWxl
bWVudDo6bWFwTW91c2VFdmVudChMYXlvdXRQb2ludCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6
ZSYgc2l6ZSwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlmIChtX2xhc3RTaXplICE9
IHNpemUpIHsKLSAgICAgICAgbV9yZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KGdldFJl
Z2lvbihzaXplKSk7CisgICAgICAgIG1fcmVnaW9uID0gbWFrZVVuaXF1ZTxQYXRoPihnZXRSZWdp
b24oc2l6ZSkpOwogICAgICAgICBtX2xhc3RTaXplID0gc2l6ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggMDc3MTVjYmI1MDk1NGE2MjYz
NmM5MzMwNWE3NjUzMzU5ZDFlNmY2Yi4uMjAxNGVmZTc1Y2VjNDYwZTM3OTFlMzYzZjU2MjhlNTAw
MWI4ZGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAg
LTk1Miw3ICs5NTIsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlcihz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKSBjbwogICAgIG1faW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKICAgICBtX2lt
YWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShkZWZhdWx0
SW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRT
dHJva2VUaGlja25lc3MoMSk7Ci0gICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcj4obV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9jayhIVE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpKTsK
ICAgICBIVE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpLmhlYXAucmVw
b3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQobWVtb3J5Q29zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggOTc2YzhlMGE5YTA2YTliODNkNmNhOTQxYmQ1ZGQzN2I5
ZjMzODVjNS4uMzI4MTc2YjY5ZThjZDFiZjIyZDRlNzYzMjdlOWYyOTI5NjhhYjQxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lk
IEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYg
KGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2Fj
aGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAg
ICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7
CiAKICAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwCmluZGV4IGYxNTc4NzRlNmQ1MzRlM2Y2MTM0ZTRhNWRmNGY1MWJlMmY2N2EzMWEuLjYw
ZGQxZmIyNTIwMzg2MGQzZDkyYTdhNWFjYjMzMWMyYWIwNGI1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY29uc3QgQXRv
bVN0cmluZyYgRGV0YWlsc1Nsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25z
dCBOb2RlJiBjaGlsZCkKIFJlZjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICBhdXRvIGRldGFpbHMgPSBhZG9wdFJlZigqbmV3IEhUTUxEZXRhaWxzRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93
Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbHNTbG90QXNzaWdu
bWVudD4oKSkpOworICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRl
KGRvY3VtZW50LCBtYWtlVW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOwogICAgIHJl
dHVybiBkZXRhaWxzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcAppbmRleCBkODg5M2IxZjA5NDllZjEwMmUyOWQwM2M1ODk2N2M0ZGQ0ZjNm
ZDVhLi5lMTUzMTZhMTllZWZiNDc3ZTNmMzY3YzgwZjdjM2MxYTJhNjM0Yjg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4MCw3ICs0
ODAsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZSgpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpCiAgICAg
ICAgIG1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZSgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAg
IGlmICghbV92YWxpZGF0aW9uTWVzc2FnZSkKLSAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMpOworICAgICAgICBtX3Zh
bGlkYXRpb25NZXNzYWdlID0gbWFrZVVuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CiAg
ICAgbV92YWxpZGF0aW9uTWVzc2FnZS0+dXBkYXRlVmFsaWRhdGlvbk1lc3NhZ2UobWVzc2FnZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHAKaW5kZXggNmVjMjJkNzc0OWYyZjc4YmQzMWVmNzdlYTYzNjA3M2I3MWM1OWZmMi4u
YTJiMDBlOGY4MTZkYTFjMjIxYjFjMzY2ZWE2ZTY4OWMzYjFjNjhiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTExOSw3
ICsxMTksNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVs
ZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rp
b25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xs
ZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKICAgICBIYXNoU2V0PEF0b21TdHJpbmdJbXBs
Kj4gZm91bmRJbnB1dEVsZW1lbnRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKaW5kZXggYzc2ZDQ5M2E2MmNlZDgzMDg4MDFiNmIwMWQzMzIxZTBhMzMzZjUxZC4uNDM1
ZDk1MTRkZDI5ZGRkMWY2ZGZiMWQxNjllMzQ3ZTMxNWEzMDE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIHZvaWQgSFRNTEZvcm1F
bGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcChGb3JtTmFtZWRJdGVtKiBpdGVtLCBjb25zdCBBdG9t
U3RyaW5nJiBwCiAgICAgaWYgKHBhc3ROYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmICghbV9wYXN0TmFtZXNNYXApCi0gICAgICAgIG1fcGFzdE5hbWVzTWFwID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7CisgICAgICAgIG1fcGFzdE5hbWVzTWFwID0gbWFr
ZVVuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7CiAgICAgbV9wYXN0TmFtZXNNYXAtPnNldChwYXN0TmFt
ZS5pbXBsKCksIGl0ZW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwCmluZGV4IDAyZDdkNGU0ZmJlODZmNTI3MGY1ODRiNmE4ZGViOWJlNDZmOTdhYTkuLmIx
YzgyMWRkOWJhYmEyYTIwY2IyOWUxYzFjZmQ5MGQ3MWZlYzU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFJlZjxIVE1MSUZy
YW1lRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBECiBET01Ub2tlbkxpc3QmIEhUTUxJRnJhbWVFbGVtZW50OjpzYW5kYm94KCkK
IHsKICAgICBpZiAoIW1fc2FuZGJveCkgewotICAgICAgICBtX3NhbmRib3ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0
cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9zYW5kYm94ID0gbWFrZVVuaXF1ZTxET01Ub2tl
bkxpc3Q+KCp0aGlzLCBzYW5kYm94QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2Vu
KSB7CiAgICAgICAgICAgICByZXR1cm4gU2VjdXJpdHlDb250ZXh0Ojppc1N1cHBvcnRlZFNhbmRi
b3hQb2xpY3kodG9rZW4pOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAwYzI1Y2RkODBkNWY4YTc3MGExZDk3MDA1Nzg0N2E4
OWM1NjgzZGJkLi4zNzZjNTIxOTY0ZTBmNzFiNmZkOWMyMTcyZDYyMDFjMjkyNTdhMWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBA
QCBSZWY8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVt
ZW50OjplbnN1cmVJbWFnZUxvYWRlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAg
ICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0
aGlzKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVy
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCkBAIC0xNjQxLDcgKzE2
NDEsNyBAQCBSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6ZGF0
YUxpc3QoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNldExpc3RBdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlcigpCiB7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCi0gICAgICAgIG1fbGlz
dEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0QXR0cmlidXRl
VGFyZ2V0T2JzZXJ2ZXI+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGlzdEF0dHIp
LCB0aGlzKTsKKyAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihsaXN0QXR0ciksIHRoaXMpOwogICAgIGVsc2UKICAgICAgICAgbV9saXN0QXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCmluZGV4IGI4NjM0Y2FkYWZhMThhMGEyN2NjZjcyOGY5YmJmNTZjYjdmNzhk
MTYuLmY2YTdiYzgwMjRmZmE1ZTRiZDcxZjY5YTI3Yzk3YzhjOTM2YmI0ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIEhU
TUxMaW5rRWxlbWVudDo6c3R5bGVTaGVldElzTG9hZGluZygpIGNvbnN0CiBET01Ub2tlbkxpc3Qm
IEhUTUxMaW5rRWxlbWVudDo6c2l6ZXMoKQogewogICAgIGlmICghbV9zaXplcykKLSAgICAgICAg
bV9zaXplcyA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRy
KTsKKyAgICAgICAgbV9zaXplcyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6
ZXNBdHRyKTsKICAgICByZXR1cm4gKm1fc2l6ZXM7CiB9CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2
b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVy
KiBldmVudFNlbmRlcikKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpyZWxMaXN0KCkK
IHsKICAgICBpZiAoIW1fcmVsTGlzdCkgCi0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91
bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVu
dCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9yZWxMaXN0ID0gbWFr
ZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuIExp
bmtSZWxBdHRyaWJ1dGU6OmlzU3VwcG9ydGVkKGRvY3VtZW50LCB0b2tlbik7CiAgICAgICAgIH0p
OwogICAgIHJldHVybiAqbV9yZWxMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggYjU1YzQ2OTA2MWRjYzA0ZjJhMTE5YTI1NTM4ZWYwODJmZTZlNDM1NS4u
ZjY0ZmU5MmI2YjdkMDFjNDk0YjU3YTc2NWUyYTU1YjY0YjNmMDQzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgSFRNTE1lZGlh
RWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXph
dGlvbigpCiB7Ci0gICAgbV9tZWRpYVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhRWxl
bWVudFNlc3Npb24+KCp0aGlzKTsKKyAgICBtX21lZGlhU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TWVk
aWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2
aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9y
RnVsbHNjcmVlbik7CiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwpAQCAt
MzAyNyw3ICszMDI3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5j
ZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0KIAogICAgIC8vIDUgLSBJ
ZiB0aGUgc2VlayB3YXMgaW4gcmVzcG9uc2UgdG8gYSBET00gbWV0aG9kIGNhbGwgb3Igc2V0dGlu
ZyBvZiBhbiBJREwgYXR0cmlidXRlLCB0aGVuIGNvbnRpbnVlCiAgICAgLy8gdGhlIHNjcmlwdC4g
VGhlIHJlbWFpbmRlciBvZiB0aGVzZSBzdGVwcyBtdXN0IGJlIHJ1biBhc3luY2hyb25vdXNseS4K
LSAgICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0
aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOworICAgIG1fcGVuZGlu
Z1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJh
bmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CiAgICAgaWYgKGZyb21ET00pIHsKICAgICAgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUiwgImVucXVldWluZyBzZWVrIGZyb20gIiwgbm93LCAiIHRvICIs
IHRpbWUpOwogICAgICAgICBtX3NlZWtUYXNrUXVldWUuc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgm
SFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKaW5kZXggNjEyNDU0MWY3Y2Y1NGExMTBhNWU0ODZlNDJjNzFjZDJhMmVm
YTE5My4uMmM2ZWMwNThlNGM5NTIxMzFjMGVhMDhlMDhhN2VhOTQzNTgwNjUzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk5MCw2ICs5OTAsNyBAQCBjbGFzcyBI
VE1MTWVkaWFFbGVtZW50CiAgICAgUmVmUHRyPE1lZGlhRXJyb3I+IG1fZXJyb3I7CiAKICAgICBz
dHJ1Y3QgUGVuZGluZ1NlZWsgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIFBlbmRpbmdTZWVrKGNvbnN0IE1lZGlhVGltZSYgbm93LCBjb25zdCBNZWRp
YVRpbWUmIHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNv
bnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUb2xlcmFuY2UpCiAgICAgICAgICAgICA6IG5vdyhub3cp
CiAgICAgICAgICAgICAsIHRhcmdldFRpbWUodGFyZ2V0VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggZGQ0ZmEyZDcwZTRmNDNmNDJiODIyMmQzN2Q0
NDE4ZjFhMTMxZWQ4Ny4uNTZiNzIwNmFlM2JlOGYxMGE4ODE0YWU5YWZhYzYyYmZlYjU2MDlhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsx
MzIsNyBAQCB2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIERPTVRva2VuTGlzdCYgSFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IoKQog
ewogICAgIGlmICghbV90b2tlbnMpCi0gICAgICAgIG1fdG9rZW5zID0gc3RkOjptYWtlX3VuaXF1
ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBmb3JBdHRyKTsKKyAgICAgICAgbV90b2tlbnMgPSBtYWtl
VW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOwogICAgIHJldHVybiAqbV90b2tl
bnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwCmluZGV4IGRkYTk0NDlkNTdhZDQyMDg1ODYyN2RlZDNmZGQ5MTgxMzIxNWZlMmIuLjViOTlk
NTU1NTMwNDk3MDkzYzZiY2E5OTU4N2M3YTJmNzI1NTkwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZv
aWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24oKQog
ICAgIGlmIChyZW5kZXJlcigpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgewogICAgICAgICBp
ZiAoaXNJbWFnZVR5cGUoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAg
ICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxv
YWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVl
PEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgaWYgKG1fbmVlZHNJbWFnZVJl
bG9hZCkKICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudEln
bm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IDEwYmMwOWZmMDk5Yzg4OGIyMjYyNjkz
OTBiOGUxZjhiZTRjZTM5NjcuLmIwNDkzOWI5YzJkNzI3MDIxMzc5YzVhNGRkMzQwNDdkODEyYWQ5
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgU3VtbWFyeVNsb3RFbGVtZW50IGZpbmFsIDogcHVibGljIFNsb3RB
c3NpZ25tZW50IHsKIFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
IHsKICAgICBSZWY8SFRNTFN1bW1hcnlFbGVtZW50PiBzdW1tYXJ5ID0gYWRvcHRSZWYoKm5ldyBI
VE1MU3VtbWFyeUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAgICBzdW1tYXJ5LT5hZGRT
aGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxT
dW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsKKyAgICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRv
d1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVVuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkp
KTsKICAgICByZXR1cm4gc3VtbWFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKaW5kZXggYTVlNzVhYWZmNTJkZGY5ZjU3NTQ1YmEwNjdlZWM3ODk4ODhkZDlh
Yi4uNjdmZjIxMjUyZjFiOGU4MzEwYTFkN2NiYjIzMmVhOGM3MzkzOGEwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICB1cGRhdGVEaXNwbGF5U3Rh
dGUoKTsKICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgaWYg
KCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVy
ID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgbV9pbWFnZUxv
YWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5pbWFnZVJlc291cmNlKCku
c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CkBAIC0xMjcsNyArMTI3LDcg
QEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW4KIAogICAgICAgICBpZiAoc2hvdWxkRGlzcGxheVBv
c3RlckltYWdlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAg
ICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+
KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1M
SW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZy
b21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggN2JlYmM3YTEwY2NiZWQ1M2NmZThj
YWY4YTA3Yzc4ZTZjNTc5ZDY0Zi4uYjY2OGRhMWYzMjE0ZGJmOWI5MTYxZWZhODMyNTZjOTVjYTgy
MTFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFB1YmxpY1VS
TE1hbmFnZXI+IFB1YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogewotICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UHVibGljVVJMTWFuYWdlcj4oY29udGV4dCk7CisgICAgYXV0byBwdWJsaWNVUkxNYW5hZ2Vy
ID0gbWFrZVVuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKICAgICBwdWJsaWNVUkxN
YW5hZ2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcHVibGljVVJMTWFuYWdlcjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggOGFmNzNh
OGEwMDU0OTgwYWQxNzkwNjk1NmE4NDMyYTZmOWNkYjE0Yi4uZjVkYWIwZjQyZjJkMDUzZTcwM2M2
YzU3MjNjYTE2MDM3MWQxYTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxp
ZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVz
c2FnZS5jcHAKQEAgLTExNSw5ICsxMTUsOSBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0
eSgpKTsKICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOwogICAgIGlmICghbV9idWJibGUpCi0gICAg
ICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25N
ZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxU
aW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKTsKICAgICBl
bHNlCi0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZh
bGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7CisgICAgICAgIG1f
dGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRN
ZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7
CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlRE9NQW5kU3RhcnRUaW1lcigpCiAgICAgaWYgKG1hZ25pZmljYXRpb24gPD0gMCkKICAgICAg
ICAgbV90aW1lciA9IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1fdGltZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJi
bGVUcmVlKTsKKyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFs
aWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgICAgICBtX3RpbWVyLT5zdGFy
dE9uZVNob3Qoc3RkOjptYXgoNV9zLCAxX21zICogc3RhdGljX2Nhc3Q8ZG91YmxlPihtX21lc3Nh
Z2UubGVuZ3RoKCkpICogbWFnbmlmaWNhdGlvbikpOwogICAgIH0KIH0KQEAgLTIzNCw3ICsyMzQs
NyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSgpCiAgICAg
fQogCiAgICAgLy8gV2UgbXVzdCBub3QgbW9kaWZ5IHRoZSBET00gdHJlZSBpbiB0aGlzIGNvbnRl
eHQgYnkgdGhlIHNhbWUgcmVhc29uIGFzIHNldE1lc3NhZ2UoKS4KLSAgICBtX3RpbWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnVi
YmxlVHJlZSk7CisgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRh
dGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgIG1fdGltZXItPnN0YXJ0T25lU2hv
dCgwX3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGIxNjc3ODQ0MjhjM2JmZTll
NmYxNmE3Nzg0MGQzZjNiYjk3MDViOTYuLjUzYzljNTY2MDQyN2M0ODZlMzJhYmMwYzJkNjU0Y2Nj
NTZjMDI4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0cnVj
dCBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0IHsKIAogICAgIERpc3BsYXlMaXN0RHJhd2luZ0Nv
bnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3Qm
IGNsaXApCiAgICAgICAgIDogY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlz
dENvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlM
aXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNs
aXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERp
c3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3Rh
dGUsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSkKICAgICB7CiAgICAgfQpA
QCAtMjExOCw3ICsyMTE4LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKFVOTElLRUxZKG1f
dXNlc0Rpc3BsYXlMaXN0RHJhd2luZykpIHsKICAgICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRl
eHQpCi0gICAgICAgICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVj
dChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpKTsKKyAgICAgICAgICAg
IG1fcmVjb3JkaW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwg
Y2FudmFzQmFzZSgpLnNpemUoKSkpOwogICAgICAgICByZXR1cm4gJm1fcmVjb3JkaW5nQ29udGV4
dC0+Y29udGV4dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjMxMTkxNzU3MGYyZGIyODU5NGNi
YjM0OTAyNDY5OTdiNTgzZmJlMC4uY2Q0NzIxMjYxYjJlMDIyYjU1MjVkZDNkM2NhNTQ2OWY5YzBi
M2VhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEzNTksNyArMTM1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
I2RlZmluZSBFTkFCTEVfSUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwg
Y2FuRW5hYmxlKSBcCiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgbmFtZUxp
dGVyYWwpKSB7IFwKICAgICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAgICAgICAgICB2YXJp
YWJsZSA9IChjYW5FbmFibGUpID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxs
cHRyOyBcCisgICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0
eXBlPigqdGhpcykgOiBudWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVs
bHB0cikgXAogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5h
YmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGUw
NmJmOTlkNTkxNTk2Mzk4MGE2MTFjMzJhODM5ZTI5N2YxMjgwNDUuLmU1ZmRlNzAzMzc0NTZhMzFl
MTU3MWVlMTBmM2ZkMjY0MmRiMDM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIFdl
YkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUs
IG5hbWVMaXRlcmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAg
ICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+
KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkg
PyBtYWtlVW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2
YXJpYWJsZSAhPSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApA
QCAtMTMyLDcgKzEzMiw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV9leHRT
aGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9z
aGFkZXJfdGV4dHVyZV9sb2QiX3MpOwotICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVy
ZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOworICAg
ICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG1ha2VVbmlxdWU8RVhUU2hhZGVy
VGV4dHVyZUxPRD4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMTU5LDcgKzE1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAg
ICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdM
X0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwotICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOworICAgICAgICAg
ICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG1ha2VVbmlxdWU8V2ViR0xEcmF3QnVmZmVycz4o
KnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5h
YmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MTcxLDcgKzE3MSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUlu
c3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9p
bnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJy
YXlzID0gc3RkOjptYWtlX3VuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4oKnRoaXMpOworICAg
ICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBtYWtlVW5pcXVlPEFOR0xFSW5z
dGFuY2VkQXJyYXlzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDNlY2U3ZWViNzQyZmFkYjZmZTE4YjMzZWI1
YTYxMzljZWQ0MWJhNTYuLmQxNjZmYjIzOTA3NmQzNjI2NWQ5NmM2NDVmMDcxODc1YWM4MmJiMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC03OTksOCArNzk5LDggQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jb250ZXh0LT52aWV3
cG9ydCgwLCAwLCBjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogICAg
IG1fY29udGV4dC0+c2Npc3NvcigwLCAwLCBjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUu
aGVpZ2h0KCkpOwogCi0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKHN0ZDo6
bWFrZV91bmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7Ci0g
ICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7CisgICAgbV9j
b250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdD
b250ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3Nh
Z2VDYWxsYmFjayhtYWtlVW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNh
bGxiYWNrPih0aGlzKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0
dXBGbGFncygpCkBAIC0xNTc5LDcgKzE1NzksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKICAgICAgICAgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVT
Y3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpKTsKIAogICAgICAgICBm
b3IgKGF1dG8mIGVycm9yIDogZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpLnNwbGl0KCdcbicpKQot
ICAgICAgICAgICAgY2FudmFzLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVy
aW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBl
cnJvciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsKKyAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1l
bnQoKS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3IsIHN0YWNrVHJhY2UuY29weVJlZigpKSk7CiAg
ICAgfQogfQogCkBAIC01ODA4LDkgKzU4MDgsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJgog
ICAgIC8vIEVycm9yIG1lc3NhZ2VzIGNhbiBvY2N1ciBkdXJpbmcgZnVuY3Rpb24gY2FsbHMsIHNv
IHNob3cgc3RhY2sgdHJhY2VzIGZvciB0aGVtLgogICAgIGlmIChsZXZlbCA9PSBNZXNzYWdlTGV2
ZWw6OkVycm9yKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4gc3Rh
Y2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpj
dXJyZW50U3RhdGUoKSk7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1l
c3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAg
ICAgICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1l
c3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOwogICAgIH0gZWxzZQotICAgICAgICBjb25zb2xl
TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSk7
CisgICAgICAgIGNvbnNvbGVNZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVs
LCBtZXNzYWdlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKICAgICBpZiAo
Y2FudmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9h
ZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5u
ZXIuY3BwCmluZGV4IGU4NTkwY2NjNjk3MjhhZjM5MzAxZDNhZThkODk4OGY1YzE1YTRiMmEuLmFl
ZmU0NTdmNGVmZjA0MzY1NzYzY2IyNmY3MTc4NDYzZTMyZTFkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTIwMSw3ICsyMDEs
NyBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAgICAgIGlmICghdXJs
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2Nhbm5lciB2aWEg
c2NhbigpOiB3aXRob3V0IGl0IHdlIHdpbGwgZ2V0IHJlbGF0aXZlIFVSTHMgd3JvbmcuCiAgICAg
ICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGlu
IHRoZSBwcmVsb2FkIHJlcXVlc3Q/Ci0gICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkws
IENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJl
cXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwor
ICAgICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+
KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5
bGVTaGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZl
cnJlclBvbGljeTo6RW1wdHlTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAgICBtX3N0YXRlID0g
SW5pdGlhbDsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJ1
bGUsICJjaGFyc2V0IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggNTFiYWU0YzIxY2Y5NDBkY2Q4YzZkMzIwYmM0ZGJk
NjYyNmJlN2Q5Zi4uOWFjNDQ0ZWYwYTY3MWY4YTQ3Njk5NTdhZTMyMjJiZDhkMTAwN2Q5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcApAQCAtNTAzLDcgKzUwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21FbGVtZW50Q29u
c3RydWN0aW9uRGF0YT4gSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxFCiAgICAgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlKiBlbGVtZW50SW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICBS
ZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxl
bWVudEludGVyZmFjZSh0b2tlbiwgJmVsZW1lbnRJbnRlcmZhY2UpOwogICAgIGlmIChVTkxJS0VM
WShlbGVtZW50SW50ZXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3Vz
dG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJmYWNlLCB0b2tlbi5uYW1l
KCksIFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPigqZWxlbWVudEludGVyZmFjZSwgdG9r
ZW4ubmFtZSgpLCBXVEZNb3ZlKHRva2VuLmF0dHJpYnV0ZXMoKSkpOwogICAgIGF0dGFjaExhdGVy
KGN1cnJlbnROb2RlKCksICplbGVtZW50KTsKICAgICBtX29wZW5FbGVtZW50cy5wdXNoKEhUTUxT
dGFja0l0ZW06OmNyZWF0ZShlbGVtZW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUodG9rZW4p
KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA0ZmY0ZTJiODc4OGE5MTliZjQyZDE3YWQ5
ZmQ2NTFiOWIwM2FkMTliLi5kZDllYTA0YzZmNTAwYzg2NGI4Yzk0YzE5MzgzNzg3N2FmZmRlNWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAKQEAgLTUzLDExICs1MywxMSBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVu
dFBhcnNlcihIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV9vcHRpb25zKGRvY3VtZW50KQogICAgICwgbV90b2tl
bml6ZXIobV9vcHRpb25zKQotICAgICwgbV9zY3JpcHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1ZTxI
VE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhv
c3QmPigqdGhpcykpKQotICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxU
cmVlQnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0
aW9ucykpCi0gICAgLCBtX3BhcnNlclNjaGVkdWxlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQYXJz
ZXJTY2hlZHVsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVyKG1ha2VVbmlxdWU8SFRN
TFNjcmlwdFJ1bm5lcj4oZG9jdW1lbnQsIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0
Jj4oKnRoaXMpKSkKKyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxk
ZXI+KCp0aGlzLCBkb2N1bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQor
ICAgICwgbV9wYXJzZXJTY2hlZHVsZXIobWFrZVVuaXF1ZTxIVE1MUGFyc2VyU2NoZWR1bGVyPigq
dGhpcykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShkb2N1bWVudCkKLSAgICAsIG1fcHJl
bG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFJlc291cmNlUHJlbG9hZGVyPihkb2N1bWVudCkp
CisgICAgLCBtX3ByZWxvYWRlcihtYWtlVW5pcXVlPEhUTUxSZXNvdXJjZVByZWxvYWRlcj4oZG9j
dW1lbnQpKQogewogfQogCkBAIC03MCw3ICs3MCw3IEBAIGlubGluZSBIVE1MRG9jdW1lbnRQYXJz
ZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVu
CiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9jdW1lbnQoKSwgcmF3
UG9saWN5KQogICAgICwgbV9vcHRpb25zKGZyYWdtZW50LmRvY3VtZW50KCkpCiAgICAgLCBtX3Rv
a2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8
SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJD
b250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCisgICAgLCBtX3RyZWVCdWlsZGVyKG1ha2VVbmlx
dWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJz
ZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0
ZShmcmFnbWVudC5kb2N1bWVudCgpKQogewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctaHRtbC1mcmFnbWVudHMKQEAgLTMx
NSw3ICszMTUsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5j
aHJvbm91c01vZGUgbW9kZSkKICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CiAgICAg
ICAgIEFTU0VSVChtX3Rva2VuaXplci5pc0luRGF0YVN0YXRlKCkpOwogICAgICAgICBpZiAoIW1f
cHJlbG9hZFNjYW5uZXIpIHsKLSAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwo
KSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAgICBtX3ByZWxv
YWRTY2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9j
dW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAg
ICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOwog
ICAgICAgICB9CiAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAq
ZG9jdW1lbnQoKSk7CkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
Omluc2VydChTZWdtZW50ZWRTdHJpbmcmJiBzb3VyY2UpCiAgICAgICAgIC8vIENoZWNrIHRoZSBk
b2N1bWVudC53cml0ZSgpIG91dHB1dCB3aXRoIGEgc2VwYXJhdGUgcHJlbG9hZCBzY2FubmVyIGFz
CiAgICAgICAgIC8vIHRoZSBtYWluIHNjYW5uZXIgY2FuJ3QgZGVhbCB3aXRoIGluc2VydGlvbnMu
CiAgICAgICAgIGlmICghbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lcikKLSAgICAgICAgICAgIG1f
aW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nh
bm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CisgICAgICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gbWFr
ZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCks
IGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBtX2luc2VydGlvblBy
ZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChzb3VyY2UpOwogICAgICAgICBtX2luc2VydGlvblBy
ZWxvYWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKaW5kZXgg
MzBjNWI0NmRmMTAzZGJkZjZmNGI3Y2U0MDljYzNhYTE2YzU0NjAxMi4uNmVmMTcxMmI5ZDYzYjcx
YWNiN2MxNjlmNjJiNDljODJmMzEwNTgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEhUTUxF
bGVtZW50U3RhY2s6Omluc2VydEFib3ZlKFJlZjxIVE1MU3RhY2tJdGVtPiYmIGl0ZW0sIEVsZW1l
bnRSZWNvcmQmIHJlYwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgKyttX3N0YWNr
RGVwdGg7Ci0gICAgICAgIHJlY29yZEFib3ZlLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RWxl
bWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgcmVjb3JkQWJvdmUtPnJlbGVhc2VOZXh0KCkpKTsK
KyAgICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQobWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihX
VEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkpOwogICAgICAgICByZWNv
cmRBYm92ZS0+bmV4dCgpLT5lbGVtZW50KCkuYmVnaW5QYXJzaW5nQ2hpbGRyZW4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIEhUTUxFbGVtZW50U3Rh
Y2s6OnB1c2hDb21tb24oUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSkKICAgICBBU1NFUlQobV9y
b290Tm9kZSk7CiAKICAgICArK21fc3RhY2tEZXB0aDsKLSAgICBtX3RvcCA9IHN0ZDo6bWFrZV91
bmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShtX3RvcCkpOworICAg
IG1fdG9wID0gbWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3Zl
KG1fdG9wKSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wQ29tbW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4
IDUzYTE3MmQzM2FmY2RhOGZmODhkMzQ0ZDljMGVmMDkwM2NkZWNjOTIuLjMzZDdiM2JiMDhiNjUy
ZDBjZDY5YmNlZGYxZjg2MDYzMWFmYWExNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNz
IFRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lciB7CiAgICAgICAgIGlmICghTGlu
a0xvYWRlcjo6aXNTdXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgbV90eXBlQXR0cmlidXRlKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8gcmVxdWVzdCA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91
cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0
ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOworICAgICAgICBhdXRvIHJlcXVl
c3QgPSBtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JGb3IobV90YWdJZCksIG1f
dXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCB0eXBlLnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1
dGUsIG1fbW9kdWxlU2NyaXB0LCBtX3JlZmVycmVyUG9saWN5KTsKICAgICAgICAgcmVxdWVzdC0+
c2V0Q3Jvc3NPcmlnaW5Nb2RlKG1fY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICAgICAgcmVxdWVzdC0+
c2V0Tm9uY2UobV9ub25jZUF0dHJpYnV0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRva2VuLmgKaW5kZXggZjcxYjIxZDI3ODk1ZTU3OGFiNDdmNWNmNTQwMjU4M2UzNjEyMWQwMi4u
M2Y3NDZkYzZkNjY3YzQzNzExYjY4ZDA5YjQyMDJkMjNmZjBjMDg4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBpbmxpbmUgdm9pZCBI
VE1MVG9rZW46OmJlZ2luRE9DVFlQRSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRp
YWxpemVkKTsKICAgICBtX3R5cGUgPSBET0NUWVBFOwotICAgIG1fZG9jdHlwZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPERvY3R5cGVEYXRhPigpOworICAgIG1fZG9jdHlwZURhdGEgPSBtYWtlVW5p
cXVlPERvY3R5cGVEYXRhPigpOwogfQogCiBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9D
VFlQRShVQ2hhciBjaGFyYWN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0
b3IuY3BwCmluZGV4IGFjNmU3OTQ0MzAwNzAzNjQyMWViMTZkZjgzYTkwZDNkMjc3MmY4NTYuLjA2
MWQ5NTY3Yjc4NGQ5YjBiYWNmM2Y2ZGI5Y2RlNWE4MDZiMDFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFhTU0luZm8+IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNvbnN0IEZpbHRlclRva2Vu
UmVxdWVzdCYgcmVxdWUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGRpZEJs
b2NrRW50aXJlUGFnZSA9IG1feHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90ZWN0aW9uRGlzcG9zaXRp
b246OkJsb2NrRW5hYmxlZDsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxYU1NJbmZvPiht
X2RvY3VtZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVj
dGlvbkhlYWRlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8WFNTSW5mbz4obV9kb2N1bWVudFVS
TCwgZGlkQmxvY2tFbnRpcmVQYWdlLCBtX2RpZFNlbmRWYWxpZFhTU1Byb3RlY3Rpb25IZWFkZXIp
OwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclN0YXJ0VG9rZW4oY29uc3QgRmlsdGVyVG9r
ZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzEyLDcgKzcxMiw3IEBAIFN1ZmZpeFRyZWU8QVNDSUlD
b2RlYm9vaz4qIFhTU0F1ZGl0b3I6OmRlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUoKQogICAgIGNv
bnN0IHVuc2lnbmVkIHN1ZmZpeFRyZWVEZXB0aCA9IDU7CiAKICAgICBpZiAoIW1fZGVjb2RlZEhU
VFBCb2R5U3VmZml4VHJlZSAmJiBtX2RlY29kZWRIVFRQQm9keS5sZW5ndGgoKSA+PSBtaW5pbXVt
TGVuZ3RoRm9yU3VmZml4VHJlZSkKLSAgICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRI
VFRQQm9keSwgc3VmZml4VHJlZURlcHRoKTsKKyAgICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZm
aXhUcmVlID0gbWFrZVVuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRI
VFRQQm9keSwgc3VmZml4VHJlZURlcHRoKTsKICAgICByZXR1cm4gbV9kZWNvZGVkSFRUUEJvZHlT
dWZmaXhUcmVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAzYTYzN2RhZWYwMTI0ZTJl
NGVkMzM2YjY2Mzc1MmQwMDIyYjViZTAxLi5kNTY2YmNjNzk0YWE3MjRhYmU2MGEwODBhM2YyY2Y5
NTFmNDUzN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBSZW5kZXJUZXh0
Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIo
KSBjb25zdAogT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1l
bnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0
eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IGRvd25jYXN0PEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHls
ZSgqc2hhZG93SG9zdFN0eWxlKTsKLSAgICByZXR1cm4gRWxlbWVudFN0eWxlKHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CisgICAgcmV0dXJuIEVsZW1lbnRT
dHlsZShtYWtlVW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOwogfQogCiAvLyBN
QVJLOiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggZTQwMjAwYTlh
N2EyMjVkZGZkODc0NGQ4YzkzYmRlNjkwOTY0NzAwOS4uNDkzNGQ3MjljMTk4ZDA4MDU5YWM4Yzlm
MGIxNzRhOTVlNzZmNzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYg
Y3VlKQogV2ViVlRUUGFyc2VyJiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpwYXJzZXIoKQogewog
ICAgIGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+
KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNl
ciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGll
bnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2Vi
VlRUUGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggODU1YmIyMzkyN2ViMTBhMzVhNTlkMTJiZTBkMjM1
YTczY2FiYzEwZS4uMTBmYWExMmY5MGI0NjBiNTA1NmYyNTY3Y2MyZDk4MTI3ZDhmYWE4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNr
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6On5JbmJhbmRXZWJW
VFRUZXh0VHJhY2soKSA9IGRlZmF1bHQ7CiBXZWJWVFRQYXJzZXImIEluYmFuZFdlYlZUVFRleHRU
cmFjazo6cGFyc2VyKCkKIHsKICAgICBpZiAoIW1fd2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dl
YlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxX
ZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAg
ICAgICAgbV93ZWJWVFRQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nh
c3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgcmV0dXJuICptX3dlYlZUVFBhcnNlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCA4ZjI5YzdmMTY3OWEwZmEyOTE4
ZGVjZmE1MTNlMmQ4MDI3MWEzNWUyLi43YTFlMWJjNDY5MWIyMTE2ODhjM2NmNWRhNjE5YWM2MWRi
ZDZmZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4
dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGlt
ZXJGaXJlZCgpCiAgICAgLy8gNC4gRG93bmxvYWQ6IElmIFVSTCBpcyBub3QgdGhlIGVtcHR5IHN0
cmluZywgcGVyZm9ybSBhIHBvdGVudGlhbGx5IENPUlMtZW5hYmxlZCBmZXRjaCBvZiBVUkwsIHdp
dGggdGhlCiAgICAgLy8gbW9kZSBiZWluZyB0aGUgc3RhdGUgb2YgdGhlIG1lZGlhIGVsZW1lbnQn
cyBjcm9zc29yaWdpbiBjb250ZW50IGF0dHJpYnV0ZSwgdGhlIG9yaWdpbiBiZWluZyB0aGUKICAg
ICAvLyBvcmlnaW4gb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBEb2N1bWVudCwgYW5kIHRoZSBkZWZh
dWx0IG9yaWdpbiBiZWhhdmlvdXIgc2V0IHRvIGZhaWwuCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xp
ZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJh
Y2tFbGVtZW50LT5kb2N1bWVudCgpKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPFRleHRU
cmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBz
dGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1
bWVudCgpKSk7CiAgICAgaWYgKCFtX2xvYWRlci0+bG9hZChtX3VybCwgKm1fdHJhY2tFbGVtZW50
KSkKICAgICAgICAgbV90cmFja0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZChIVE1MVHJhY2tFbGVt
ZW50OjpGYWlsdXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJSG9zdC5jcHAKaW5kZXggMDMxMDgwZTFhYjY2ZDMyY2M5YzA3MTc4ZjAyZjkzNTIzYmM3
MDZiMC4uOTAyOWI5MmQ4YjgzZjJkN2JlZDZkOGU1NDU3NmMwYTE2OGNhNTI1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgUmVmPENvbW1hbmRMaW5lQVBJSG9zdD4gQ29tbWFuZExpbmVBUElIb3N0OjpjcmVh
dGUoKQogfQogCiBDb21tYW5kTGluZUFQSUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCgpCi0gICAg
OiBtX2luc3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0Pigp
KQorICAgIDogbV9pbnNwZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4o
KSkKIHsKIH0KIApAQCAtMTk2LDcgKzE5Niw3IEBAIEpTVmFsdWUgQ29tbWFuZExpbmVBUElIb3N0
Ojp3cmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2
b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycygpCiB7CiAgICAgbV93cmFw
cGVycy5jbGVhckFsbFdyYXBwZXJzKCk7Ci0gICAgbV9pbnNwZWN0ZWRPYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOworICAgIG1faW5zcGVjdGVkT2JqZWN0ID0g
bWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA2YzMxZTQ5OGU0
MzRkMzAwYjBmMWM2ZWFiODQzNDY3NzZjZjBhMmZjLi44Mzg5MDhkYzkzNmVmYTZiYTI2Yzc5MTY3
MTQ0ZGI3ZGU5ZTJhZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
RWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApA
QCAtODksNyArODksNyBAQCBjbGFzcyBET01FZGl0b3I6Okluc2VydEJlZm9yZUFjdGlvbiBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHBlcmZvcm0oKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+cGFyZW50Tm9k
ZSgpKSB7Ci0gICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW1vdmVDaGlsZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOworICAg
ICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rp
b24+KCptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlKTsKICAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gbV9yZW1vdmVDaGlsZEFjdGlvbi0+cGVyZm9ybSgpOwogICAgICAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKTsKQEAgLTM4NSwyNyArMzg1LDI3IEBAIERPTUVkaXRvcjo6fkRPTUVkaXRv
cigpID0gZGVmYXVsdDsKIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRCZWZv
cmUoTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYgbm9kZSwgTm9kZSogYW5jaG9yTm9kZSkK
IHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRC
ZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKKyAg
ICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+
KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKIH0KIAogRXhjZXB0aW9u
T3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBOb2RlJiBu
b2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJl
bW92ZUNoaWxkQWN0aW9uPihwYXJlbnROb2RlLCBub2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9y
eS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUp
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUoRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewot
ICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldEF0dHJpYnV0
ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwgdmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBl
cmZvcm0obWFrZVVuaXF1ZTxTZXRBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUsIHZhbHVl
KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0
b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1l
bnQsIG5hbWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1v
dmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1s
LCBOb2RlKiYgbmV3Tm9kZSkKIHsKLSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VV
bmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKICAgICBhdXRvJiByYXdBY3Rp
b24gPSAqYWN0aW9uOwogICAgIGF1dG8gcmVzdWx0ID0gbV9oaXN0b3J5LnBlcmZvcm0oV1RGTW92
ZShhY3Rpb24pKTsKICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTQxNSwyMiAr
NDE1LDIyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUm
IG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSomCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERP
TUVkaXRvcjo6aW5zZXJ0QWRqYWNlbnRIVE1MKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmlu
ZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBl
cmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQs
IHdoZXJlLCBodG1sKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8
SW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uPihlbGVtZW50LCB3aGVyZSwgaHRtbCkpOwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQoVGV4dCYgdGV4dE5v
ZGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0o
c3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCkp
OworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlcGxhY2VXaG9sZVRl
eHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVk
aXRvcjo6cmVwbGFjZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUsIFJlZjxOb2RlPiYmIG5ld05vZGUs
IE5vZGUmIG9sZE5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFr
ZV91bmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdO
b2RlKSwgb2xkTm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVl
PFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobmV3Tm9kZSksIG9s
ZE5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXROb2RlVmFsdWUo
Tm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5
LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXROb2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVl
KSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0Tm9kZVZhbHVl
QWN0aW9uPihub2RlLCB2YWx1ZSkpOwogfQogCiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUVycm9yU3Ry
aW5nKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0LCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDIw
ZGEzNDMwYzE1Yzg1NTE0ODVjNTczOGM1NDdmYTBjMzQzMWExYmEuLjJlOWQ3NTU2NTVjODNlZjg4
MTU5NmFhZDIwYzk2ZTEwZTY4ODI2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01QYXRjaFN1cHBvcnQuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RhdGljIHZvaWQgYWRkU3Ry
aW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8RE9NUGF0Y2hTdXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGln
ZXN0KE5vZGUmIG5vZGUsIFVudXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKIHsKLSAgICBh
dXRvIGRpZ2VzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlnZXN0PigpOworICAgIGF1dG8gZGlnZXN0
ID0gbWFrZVVuaXF1ZTxEaWdlc3Q+KCk7CiAgICAgZGlnZXN0LT5ub2RlID0gJm5vZGU7CiAgICAg
U0hBMSBzaGExOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKaW5kZXggNTIwMzcwNmI1M2IzMmIwYmE0ZjBlZDRkNGJhNDAwYjZjNzliNWUx
NS4uNjNmZjNhYjYyM2E0NDZjZDYyMGVlNDdlMzkyMDU1Y2VhNTFhODc2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtOTMsMTAg
KzkzLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNvbnRyb2xs
ZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNw
ZWN0b3JDbGllbnQpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0Fn
ZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6
bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtl
VW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0
SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6
Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQotICAgICwgbV9vdmVybGF5KHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKKyAg
ICAsIG1fb3ZlcmxheShtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3Rv
ckNsaWVudCkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgp
KQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihwYWdlKQogICAgICwgbV9wYWdlKHBhZ2UpCkBA
IC0xMDYsNyArMTA2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKIAogICAgIGF1dG8gcGFn
ZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1
dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4
dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29s
ZUFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQp
KTsKIH0KQEAgLTE1MywzNyArMTUzLDM3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3Jl
YXRlTGF6eUFnZW50cygpCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKICAgICBlbnN1cmVQ
YWdlQWdlbnQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VS
dW50aW1lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAotICAgIGF1dG8gZGVidWdnZXJB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0KTsK
KyAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50Pihw
YWdlQ29udGV4dCk7CiAgICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gZGVidWdnZXJBZ2VudC5n
ZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdl
Q29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckNTU0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1h
a2VVbmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAgICAgZW5zdXJlRE9N
QWdlbnQoKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOwotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQp
KTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4
dCwgZGVidWdnZXJBZ2VudFB0cikpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4o
cGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VV
bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNl
bmRpZgogCi0gICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBz
Y3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNw
ZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwog
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIpKTsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck1lbW9yeUFnZW50PihwYWdl
Q29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNQVVBy
b2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYKLSAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkp
OwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VBdWRpdEFnZW50Pihw
YWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckNhbnZhc0FnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDYW52YXNBZ2Vu
dD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0
b3JUaW1lbGluZUFnZW50PihwYWdlQ29udGV4dCkpOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRM
aW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3Qo
KSkKICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50
cy5jb3B5UmVmKCkpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIEluc3BlY3RvckFnZW50JiBJbnNwZWN0
b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3Bl
Y3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0
KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBt
YWtlVW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgICAgIG1faW5zcGVj
dG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5zZXRJbnNwZWN0b3JBZ2VudChtX2luc3BlY3RvckFnZW50KTsKICAgICAgICAgbV9h
Z2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKQEAgLTQzMyw3ICs0MzMsNyBA
QCBJbnNwZWN0b3JET01BZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQo
KQogewogICAgIGlmICghbV9pbnNwZWN0b3JET01BZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VD
b250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRvbUFnZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIG1fb3ZlcmxheS5n
ZXQoKSk7CisgICAgICAgIGF1dG8gZG9tQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckRPTUFn
ZW50PihwYWdlQ29udGV4dCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JE
T01BZ2VudCA9IGRvbUFnZW50LmdldCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZShkb21BZ2VudCkpOwogICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCBJbnNwZWN0b3JQYWdlQWdl
bnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCgpCiB7CiAgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2VBZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFn
ZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1fb3Zl
cmxheS5nZXQoKSk7CisgICAgICAgIGF1dG8gcGFnZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVybGF5Lmdl
dCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JQYWdlQWdlbnQgPSBwYWdlQWdlbnQuZ2V0KCk7CiAg
ICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHBhZ2VBZ2VudCkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oCmluZGV4IDI4ZWU3MjdhMzZkNjZjZTIxMDk2OTc4MzFhZTBhOGFhYzQyMzg1NzUuLjZj
MWI1MWFkZWU5YTM4NDI2MzMzOGY0NWQ4ODg0YTZkOWMzN2VhODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApA
QCAtNTAsNiArNTAsNyBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIDogcHVi
bGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTZXR0aW5ncyB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgU2V0dGluZ3Mo
KSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflNldHRpbmdzKCkgPSBkZWZhdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCmluZGV4IDAwZDVm
MTg1MmNlYmEyNzBjM2FmODFjMTMyMDkwMDVkYTdiMTE4YTguLmM4MTAzZGQ3ZGJiODMyMGVhYjJl
NmFkNWUzMmMyZDUyZDcyYjA2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGlzdG9yeS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5z
cGVjdG9ySGlzdG9yeTo6cGVyZm9ybShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24pCiAK
IHZvaWQgSW5zcGVjdG9ySGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUoKQogewotICAgIHBlcmZv
cm0oc3RkOjptYWtlX3VuaXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7CisgICAgcGVyZm9ybSht
YWtlVW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
SW5zcGVjdG9ySGlzdG9yeTo6dW5kbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggMTQ5NWYzOWUyYTQ1ZTNjNzJhOTYxNGFmZjU3
OWU2NGRkZjU1YzBiNS4uZGJlNTU1M2YwMTIxNzM0YTk2NTkxMzg0NmFhZDQ2YmYyNzc5NzNkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0
YShzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBzb3VyY2VECiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX3NvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVT
b3VyY2VEYXRhTGlzdD4oKTsKKyAgICBtX3NvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJ1bGVTb3Vy
Y2VEYXRhTGlzdD4oKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0
aW9uIHRvIHJldGFpbiB0aGUgb3JpZ2luYWwgZmxhdCBzb3VyY2VEYXRhIHN0cnVjdHVyZQogICAg
IC8vIGNvbnRhaW5pbmcgb25seSBzdHlsZSBydWxlcywgZXZlbiB0aG91Z2ggQ1NTUGFyc2VyIG5v
dyBwcm92aWRlcyB0aGUgZnVsbCBydWxlIHNvdXJjZSBkYXRhIHRyZWUuCkBAIC0xMzIwLDcgKzEz
MjAsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0
Q29udGVudHM6OmNyZWF0ZSgpOwotICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKKyAgICBhdXRvIHJ1bGVTb3VyY2VE
YXRhUmVzdWx0ID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAgICAgCiAgICAg
Q1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRGb3JEb2N1bWVudChtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHlsZVNoZWV0SGFuZGxlciBoYW5k
bGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRv
Y3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGQzYjc1OWYyOWNj
ZjFhZTE4MDI4MGQ1ZTE3MzY3MGQyOWM0ZjhjYzEuLmZkN2NhZDMwNzY3ZTc3NWIxNjc1ZWM0NTRl
ZjdhMDhiYjAzNmQ1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAKLSAg
ICBhdXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1
ZXN0SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVz
b3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNvdXJjZURhdGEtPnNldFR5
cGUodHlwZSk7CiAgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElk
LCBXVEZNb3ZlKHJlc291cmNlRGF0YSkpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJ
ZCk7CiAKLSAgICBhdXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VE
YXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9IG1ha2VV
bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNvdXJjZURh
dGEtPnNldENhY2hlZFJlc291cmNlKCZjYWNoZWRSZXNvdXJjZSk7CiAgICAgbV9yZXF1ZXN0SWRU
b1Jlc291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJlc291cmNlRGF0YSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IDQzNTFlODcyYTllNWEzNjQ3MjlmNWI0ZmIyNjIxNmM3MzMwMmM4
ZGQuLjM2NGFlYTdkNGI1ZDkxMTc5MzI3NWQ2NDZmMjk1ZTY3YmYwZWVlZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9i
YWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMo
SW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhp
cywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdl
YkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihG
cm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwg
bV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKQEAgLTY5LDcgKzY5LDcg
QEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdv
cmtlckFnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7CisgICAgYXV0byBjb25z
b2xlQWdlbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFn
ZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsK
IH0KQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNv
bm5lY3RGcm9udGVuZCgpCiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnJlc2V0KCk7CiAgICAg
bV9leGVjdXRpb25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiAKLSAgICBtX2ZvcndhcmRpbmdDaGFubmVs
ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2Vy
R2xvYmFsU2NvcGUpOworICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBtYWtlVW5pcXVlPFdvcmtl
clRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV9mcm9u
dGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKCptX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpKTsK
ICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0
ZXIuZ2V0KCksICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0KQEAgLTE2NCwxOCArMTY0
LDE4IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygp
CiAKICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENvbnRleHQoKTsKIAotICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29y
a2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlclJ1bnRp
bWVBZ2VudD4od29ya2VyQ29udGV4dCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyR2xvYmFsU2NvcGUp
KSB7Ci0gICAgICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3Jr
ZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICAgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckFnZW50Pih3b3JrZXJDb250
ZXh0KSk7CisgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlck5ldHdvcmtB
Z2VudD4od29ya2VyQ29udGV4dCkpOwogICAgIH0KICNlbmRpZgogCi0gICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4od29y
a2VyQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtl
ckF1ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxXZWJIZWFwQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkp
OwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0
LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IGE4ZDNjODk5YzMyODBhMjhlNjczMmNmODhhYjg0ZDAw
MGQ0NWVkMmQuLmZkZjA0NGM1NzliMzY4YzMyMDUxYjY1ZGM0NDBlMzg3ZjYwMThmYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkK
ICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQXBwbGljYXRpb25DYWNoZSJfcywgY29udGV4dCkK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpB
cHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpBcHBs
aWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkK
ICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQ
cm9maWxlckFnZW50LmNwcAppbmRleCBjZjk0Y2E4MDk2ZmY1NzFkNzRkNzczYjFmMDAyNzUwNTRj
MGNlMWY5Li4xMTYyNGUyNDA5NDY0ZmMxZTFlNjVhNjk5OGRiZDFiMDY4MmYwYjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1BVUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yQ1BVUHJvZmls
ZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJDUFVQcm9maWxlciJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6
OkNQVVByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNGI2OTk0NWVjNzA2N2Y5NjQzZTQ4
MDczMDM0ODQyNjg2ZDYxOWZiOC4uNDRlOWM1YWJlYjRjOTY2YWJhZWE5NDRhNDBkNWUwM2Q0NzJk
MTFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3Bl
Y3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShDU1NSdWxlJiBydWxlKQogCiBJbnNwZWN0b3JD
U1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDU1MiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVl
PENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKENTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVz
dWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0
eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CisgICAgYXV0
byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0U3R5
bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsKICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRP
TUFnZW50Ojp0b0Vycm9yU3RyaW5nKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogfQpAQCAt
NjQ2LDcgKzY0Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5w
ZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHls
ZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9t
QWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4o
aW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkpOwogICAgIGlmIChwZXJmb3Jt
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9y
RE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkp
OwogICAgICAgICByZXR1cm47CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNP
Tjo6T2IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9
IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRSdWxlU2Vs
ZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7
CisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybSht
YWtlVW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29t
cG91bmRJZCwgc2VsZWN0b3IpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3Ry
aW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNzU3LDcgKzc1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QWRkUnVsZUFj
dGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOworICAgIGF1dG8gYWN0aW9uID0g
bWFrZVVuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7
CiAgICAgYXV0byYgcmF3QWN0aW9uID0gKmFjdGlvbjsKICAgICBhdXRvIHBlcmZvcm1SZXN1bHQg
PSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgaWYg
KHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggOWJl
MDYxMTlmYjMyMTk3MDA3Mjk3MjJkODM2YTgxNmIyNWYxYzAxNS4uMGU1MGM3NWJhNDg3NTE1NTZl
NDEyZGNiOTdhZDE5NjY5NjVhOTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Oklu
c3BlY3RvckNhbnZhc0FnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoIkNhbnZhcyJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
bWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6Q2Fu
dmFzQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkK
QEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52
YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZAogICAgIGlmICghaW5z
cGVjdG9yQ2FudmFzLT5jdXJyZW50RnJhbWVIYXNEYXRhKCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNvbnRleHQoKS5jYW52
YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBx
dWV1ZSA9IE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKTsKLSAgICAgICAgICAgIHF1
ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihx
dWV1ZSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52
YXMgPSBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpXSB7CisgICAgICAgICAgICBxdWV1ZS5hcHBl
bmQobWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUsICpzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0gaW5zcGVjdG9y
Q2FudmFzLmNvcHlSZWYoKV0gewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVt
ZW50ID0gcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzLT5jYW52YXNFbGVtZW50KCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNhbnZhc0VsZW1lbnQtPmlzRGVzY2VuZGFudE9mKGNhbnZhc0Vs
ZW1lbnQtPmRvY3VtZW50KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcAppbmRleCA2YzE5NmUwY2M2ODJiNDQyNTZjN2RkYWFlMDkwYWEwYWFkNTUzMTdkLi5mMGEy
OGMxMzMxYzViYjMwODhkNTNlNzI0M2RiYWY0ZWViNjNlN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjgz
LDcgKzI4Myw3IEBAIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhFeGNl
cHRpb24mJiBleGNlcHRpb24pCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQo
UGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiRE9NIl9zLCBjb250ZXh0KQogICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6
OkRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAg
ICwgbV9vdmVybGF5KG92ZXJsYXkpCkBAIC0zMDEsOCArMzAxLDggQEAgSW5zcGVjdG9yRE9NQWdl
bnQ6On5JbnNwZWN0b3JET01BZ2VudCgpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9oaXN0b3J5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOwotICAgIG1fZG9tRWRpdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxET01FZGl0b3I+KCptX2hpc3RvcnkpOworICAgIG1faGlzdG9yeSA9IG1ha2VVbmlxdWU8
SW5zcGVjdG9ySGlzdG9yeT4oKTsKKyAgICBtX2RvbUVkaXRvciA9IG1ha2VVbmlxdWU8RE9NRWRp
dG9yPigqbV9oaXN0b3J5KTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0
b3JET01BZ2VudCh0aGlzKTsKICAgICBtX2RvY3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5G
cmFtZSgpLmRvY3VtZW50KCk7CkBAIC02NTMsNyArNjUzLDcgQEAgaW50IEluc3BlY3RvckRPTUFn
ZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgIE5v
ZGUqIHBhcmVudCA9IGlubmVyUGFyZW50Tm9kZShub2RlKTsKICAgICAgICAgaWYgKCFwYXJlbnQp
IHsKICAgICAgICAgICAgIC8vIE5vZGUgYmVpbmcgcHVzaGVkIGlzIGRldGFjaGVkIC0+IHB1c2gg
c3VidHJlZSByb290LgotICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5vZGVUb0lkTWFwPigpOworICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBtYWtlVW5pcXVlPE5v
ZGVUb0lkTWFwPigpOwogICAgICAgICAgICAgZGFuZ2xpbmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAg
ICAgICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgp
KTsKICAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdo
dENvbmZpZ0Zyb21JbnNwZWN0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZp
Zz4oKTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29u
ZmlnPigpOwogICAgIGJvb2wgc2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDogZmFsc2UgKGRv
IG5vdCBzaG93IGEgdG9vbHRpcCkuCiAgICAgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LT5nZXRC
b29sZWFuKCJzaG93SW5mbyIsIHNob3dJbmZvKTsKICAgICBoaWdobGlnaHRDb25maWctPnNob3dJ
bmZvID0gc2hvd0luZm87CkBAIC0xMTk2LDEzICsxMTk2LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJv
b2wgZW5hCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJp
bmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgSlNPTjo6T2Jq
ZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wq
IHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICBhdXRvIHF1
YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQp
KTsKICAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGTW92ZShxdWFkKSwgY29sb3IsIG91dGxpbmVD
b2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OkFycmF5
JiBxdWFkQXJyYXksIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVj
dCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAg
YXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCk7CisgICAgYXV0byBxdWFk
ID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCk7CiAgICAgaWYgKCFwYXJzZVF1YWQocXVhZEFycmF5
LCBxdWFkLmdldCgpKSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIFF1YWQgZm9y
bWF0Il9zOwogICAgICAgICByZXR1cm47CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgSlNPTjo6QXJyYQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1
YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBj
b2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBh
Z2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91
bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFr
ZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50
ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGlu
ZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPnVzZVBh
Z2VDb29yZGluYXRlcyA9IHVzZVBhZ2VDb29yZGluYXRlcyA/ICp1c2VQYWdlQ29vcmRpbmF0ZXMg
OiBmYWxzZTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omhp
Z2hsaWdodEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAg
ICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZp
Zz4oKTsKKyAgICAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdo
dENvbmZpZz4oKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHRydWU7IC8v
IEFsd2F5cyBzaG93IHRvb2x0aXBzIGZvciBmcmFtZXMuCiAgICAgICAgIGhpZ2hsaWdodENvbmZp
Zy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAgICAgICBoaWdobGlnaHRDb25maWct
PmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwpAQCAtMTM5OCw3ICsx
Mzk4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVkTm9kZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAgbV9pbnNwZWN0ZWROb2RlID0gbm9k
ZTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBzdGF0aWNfY2FzdDxXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXImPihtX2luamVjdGVkU2NyaXB0TWFuYWdlcikuY29tbWFuZExp
bmVBUElIb3N0KCkpCi0gICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2Jq
ZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CisgICAgICAgIGNv
bW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KG1ha2VVbmlxdWU8SW5zcGVjdGFi
bGVOb2RlPihub2RlKSk7CiAKICAgICBtX3N1cHByZXNzRXZlbnRMaXN0ZW5lckNoYW5nZWRFdmVu
dCA9IGZhbHNlOwogfQpAQCAtMjMxNCw3ICsyMzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoIW1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2spCi0gICAgICAgIG1fcmV2
YWxpZGF0ZVN0eWxlQXR0clRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0
dHJpYnV0ZVRhc2s+KHRoaXMpOworICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0g
bWFrZVVuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKICAgICBtX3Jl
dmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5zY2hlZHVsZUZvcigmZWxlbWVudCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAppbmRleCBlOTcxYTk5ZjcwNTI0ZDgzMTgxYWU3MTVkODI2NTg4MTFm
ZTA4ODA4Li44MWYxNGRjMTdiZmEwNDc0N2UzZDIzZTQ1M2Y1ZTRhZjhkMDlmZDgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
IkRPTVN0b3JhZ2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NU3Rv
cmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggYjM3YTU2MGNlODA3NjhjNjY0NDA4NTE1ZmIwNTUxMjYx
NjViZWQ4Mi4uMzU4YTg1NjUxMmVhNGQ3MTk2MzMyYTIwNjk5MGRlMzI1MDA0MTBiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50OjpkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGF0YWJhc2UiX3MsIGNvbnRleHQpCi0g
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RGF0
YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRl
bmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29u
dGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CmluZGV4IGUxZTA4MmU0MWFkMmQ1MjRmNTdlZjEwNjQwMjg4NzYxMTU2ODI0YjkuLmI1OTgyY2Vl
MzdlMzc0NDcwNTM5NDZiY2Y0YzQzNGI0MzFlZjlhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChXZWJBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkxheWVyVHJlZSJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJl
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAKaW5kZXggMjljNzZkMGM3ZmVhOTIyYzJhM2Q5OTQxNGM5ODZlYThkMjhkNzdiNS4uMjgzMjk1
MWY1MzgwMTIxZmE0NTJiZmE4ZDQ3MGY0ZDM1ZTc4OWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yTWVt
b3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIk1lbW9yeSJfcywgY29udGV4dCkKLSAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpNZW1vcnlGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6TWVtb3J5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCAzZTRlOTZlYjIz
MWEwNTRiMjEyMTI0N2JjMmNiMDkxNjVmMDI2NWIzLi41ZDA4MTYzODBjZGM2NmM3ZDc5NjBjMTJk
MzQ4YTBmYmYzZjdiMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNzIsMTAgKzE3MiwxMCBA
QCBjbGFzcyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgewogCiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIk5ldHdvcmsiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtl
VW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TmV0d29y
a0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0
TWFuYWdlcikKLSAgICAsIG1fcmVzb3VyY2VzRGF0YShzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtS
ZXNvdXJjZXNEYXRhPigpKQorICAgICwgbV9yZXNvdXJjZXNEYXRhKG1ha2VVbmlxdWU8TmV0d29y
a1Jlc291cmNlc0RhdGE+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzMjllMWIwYzVhZDky
ZmI0NTFkZjE3NjczM2FlMmFlMzU4ZmI0OTM3Li5jNjQxYTZhMDQ4NDE5MzI2OGUyOWU5MGZmMDEy
NmFiOTExYzkzMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgRG9jdW1lbnRM
b2FkZXIqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW4KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQo
UGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3Bl
Y3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlBhZ2UiX3Ms
IGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29u
dGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29u
dGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5jcHAKaW5kZXggM2EzNjFlOTFlNmYyZGViMDA0MmUxOGE3YzY0YzdiNTE2ZjliODBjNS4uMzBk
ODZjNzQ2M2M0N2Y1YjNhZDJiMzhjZjVkZTI0OWQ0NGViOWE1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3Ao
KQogCiBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KFBhZ2VB
Z2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRpbWVsaW5l
Il9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9p
bnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKQEAgLTE5Myw3ICsxOTMsNyBA
QCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBt
YXhDYWxsU3RhY2tEZXB0aCkKICAgICAvLyBGSVhNRTogQWJzdHJhY3QgYXdheSBwbGF0Zm9ybS1z
cGVjaWZpYyBjb2RlIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0Mjc0OCBpcyBmaXhlZC4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fZnJhbWVTdGFy
dE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0
PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVj
dG9yRnJhbWVCZWdpbiksIFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9IG1h
a2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lQmVnaW4pLCBbdGhp
c10oKSB7CiAgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERl
YnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjAyLDcg
KzIwMiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25z
dCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgICAgICBtX3J1bkxvb3BOZXN0aW5nTGV2ZWwr
KzsKICAgICB9KTsKIAotICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpX
ZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgpIHsKKyAg
ICBtX2ZyYW1lU3RvcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRp
Y19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6
SW5zcGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7CiAgICAgICAgIGlmICghbV90cmFja2luZyB8
fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
CiAgICAgICAgICAgICAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRp
b24/CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgp
ID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJpbmcoIlByb2Zp
bGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmls
ZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYgdGl0bAogICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2Vu
dCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgewogICAgICAgICAv
LyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwog
ICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBl
eGlzdCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4
aXN0Iik7Ci0gICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1h
a2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNz
YWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7Cisg
ICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmls
ZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuY3BwCmluZGV4IDkxNjFkODQzY2QzOGU0ZDk2NjEyNmFjZGQzNmU4M2RkMThmNTEwMDIu
LjFlMzk4ZWRkMWE5ZWEzZWYyNmJlMDllYzAzZDZjNmMyY2QzOThkZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQu
Y3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3Bl
Y3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJXb3JrZXIiX3MsIGNvbnRleHQpCi0g
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6V29y
a2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERp
c3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihJbnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0ZWRQ
YWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJD
b25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25z
b2xlQWdlbnQuY3BwCmluZGV4IDJlZWQxY2U2MGIzMDIyYWQ5ODI0ZmE2MjhhMzVkZGM1NDQ0OTYw
ZDkuLmMyMDk0Yjk5MmQzNTQxNjBmMTdlZTI4ZjY0MTBhNzkzZGNkZTlmMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdAogCiAgICAgaWYgKHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFr
ZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdp
dGggYSBzdGF0dXMgb2YgIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIiAoIiwgcmVzcG9u
c2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNwb25zZS51
cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICAg
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBt
ZXNzYWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElk
ZW50aWZpZXIpKTsKICAgICB9CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJDb25zb2xl
QWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFJlc28KICAgICAgICAgbWVzc2FnZS5hcHBlbmQoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKSk7CiAgICAgfQogCi0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVl
PENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9n
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdV
UkwoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICBhZGRNZXNzYWdl
VG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdv
cmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJp
bmcoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmll
cikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKaW5kZXggYmI1ZDFiZWM2YzYzMjIzOWJl
ZTY0NjM0MzdhZWZlZDEyYmE0NzFkNS4uMDljYjZmNDY2NmFiNGM5MWNiZWUyZDBmY2ZkZDRiYTZh
NjFhMTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJI
ZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVh
cEFnZW50LmNwcApAQCAtNDEsNiArNDEsNyBAQCBzdHJ1Y3QgR2FyYmFnZUNvbGxlY3Rpb25EYXRh
IHsKIH07CiAKIGNsYXNzIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2sgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNlbmRHYXJiYWdlQ29sbGVjdGlv
bkV2ZW50c1Rhc2soV2ViSGVhcEFnZW50Jik7CiAgICAgdm9pZCBhZGRHYXJiYWdlQ29sbGVjdGlv
bihHYXJiYWdlQ29sbGVjdGlvbkRhdGEmJik7CkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgU2VuZEdh
cmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6dGltZXJGaXJlZCgpCiBXZWJIZWFwQWdlbnQ6Oldl
YkhlYXBBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JIZWFw
QWdlbnQoY29udGV4dCkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3Ry
dW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX3NlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2so
c3RkOjptYWtlX3VuaXF1ZTxTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrPigqdGhpcykp
CisgICAgLCBtX3NlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2sobWFrZVVuaXF1ZTxTZW5k
R2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50
LmNwcAppbmRleCA1ZWFmYjZhMzI4NDZlNzAwMTUzYWM4MjY4MWI3YmU1MGQzYWZlNDhjLi44OTg1
YmM5NDVmZTc1ZTBlODUxYTM2ZGUzNTg0YWIwNDcxYzBmZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFBhZ2VSdW50
aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
bWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlJ1
bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5zdHJ1bWVudGlu
Z0FnZW50cykKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJE
ZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGIyMGNiYmM5NTA3MDI4MTFiNjU4OWFjMWRm
YmQ1NzMzOTE5M2QzMzcuLjgwODJlZTMxZWVjNjBhMmY2MDMyOWRiYWJkNGQ5ODQyZjZhNTVmZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFdvcmtlckRl
YnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFdv
cmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coRXhlY1N0YXRlJiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVh
dGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSkpOworICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRk
Q29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2soJnN0YXRlKSkpOwogfQogCiBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1
Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
U3RhdGUuY3BwCmluZGV4IGJkOWQ0Y2FkZWZiMmZhYTFmMmUwYjI1Nzk1NWFkNTEyNGUxNzk0ZWUu
LjFmM2ZhYmEzMTI2ZjJlOWIzNmI4NGQxM2U3M2JmMWZkYTMxNzU0MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dFN0YXRlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIExheW91dFN0YXRl
OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQm94JiBsYXlvdXRSb290KQog
RGlzcGxheTo6Qm94JiBMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBC
b3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICByZXR1cm4gKm1fbGF5b3V0VG9EaXNwbGF5Qm94
LmVuc3VyZSgmbGF5b3V0Qm94LCBbJmxheW91dEJveF0gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxEaXNwbGF5OjpCb3g+KGxheW91dEJveC5zdHlsZSgpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5bGUoKSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCkBAIC0xNDAsMTMgKzE0MCwxMyBAQCBGb3JtYXR0aW5nU3Rh
dGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElm
TmVlZGVkKGNvbgogICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUg
Y29udGVudCBpbnNpZGUuCiAgICAgICAgICAgICAvLyA8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+
PC9kaXY+PGRpdiBzdHlsZT0ib3ZlcmZsb3c6IGhpZGRlbiI+IDwtIGlzIGEgbm9uLWludHJ1c2l2
ZSBmbG9hdCwgYmVjYXVzZSBvdmVyZmxvdzogaGlkZGVuIHRyaWdnZXJzIG5ldyBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQuPC9kaXY+CiAgICAgICAgICAgICBpZiAoZm9ybWF0dGluZ1Jvb3QuZXN0
YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpj
cmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3Jl
YXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKIAogICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCB0aGUgZm9ybWF0dGluZyBjb250ZXh0IGluaGVyaXRzIHRoZSBmbG9hdHMgZnJvbSB0
aGUgcGFyZW50IGZvcm1hdHRpbmcgY29udGV4dC4KICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGZv
cm1hdHRpbmcgc3RhdGUgaW4gd2hpY2ggdGhpcyBmb3JtYXR0aW5nIHJvb3QgbGl2ZXMsIG5vdCB0
aGUgb25lIGl0IGNyZWF0ZXMgYW5kIHVzZSBpdHMgZmxvYXRpbmcgc3RhdGUuCiAgICAgICAgICAg
ICBhdXRvJiBwYXJlbnRGb3JtYXR0aW5nU3RhdGUgPSBjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JG
b3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdSb290LmZvcm1hdHRpbmdDb250ZXh0Um9v
dCgpKTsgCiAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGbG9hdGluZ1N0YXRlID0gcGFyZW50Rm9y
bWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50RmxvYXRpbmdTdGF0ZSwgKnRo
aXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRl
PihwYXJlbnRGbG9hdGluZ1N0YXRlLCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKICAgICB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0
YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgog
ICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290
LCBbJl0gewogCiAgICAgICAgICAgICAvLyBCbG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYWx3YXlz
IGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0aW5nIHN0YXRlLgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0
ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlz
LCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6
OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAg
ICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsm
XSB7CiAKICAgICAgICAgICAgIC8vIFRhYmxlIGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0
YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUgLWFuZCBpdCBzdGF5cyBlbXB0eS4KLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGbG9h
dGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3Rh
dGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAgICAgICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE3NCwxOCArMTc0LDE4IEBAIHN0ZDo6dW5pcXVl
X3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250
ZXh0KGNvbnN0IEJvCiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hl
c0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0
YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGF1dG8mIGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRl
Rm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4
dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBp
ZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4
dCgpKSB7CiAgICAgICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0T25seSgpKTsKICAgICAgICAgYXV0byYgYmxvY2tGb3JtYXR0
aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGlu
Z1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4o
Zm9ybWF0dGluZ0NvbnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgYmxvY2tGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXR0aW5n
Q29udGV4dFJvb3QuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAg
ICAgYXV0byYgdGFibGVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxUYWJsZUZvcm1hdHRpbmdT
dGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGFi
bGVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRp
bmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0K
IAogICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlSdW4uaAppbmRleCA3YWUzYjQwOWQ3NjExNmYyZTlkMTNjYzMxZWI2ZTU2MDYzYjEwNzZm
Li43OTkxNjI3NTc0MDE4M2YzNTNmNWFmZDViMTUyMmU1NjUzZmM4OTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKQEAgLTM2LDcgKzM2LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXkgewogCiBzdHJ1Y3QgUnVu
IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc3RydWN0IFRleHRD
b250ZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1
YmxpYzoKICAgICAgICAgVGV4dENvbnRleHQodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxl
bmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBhMWNkNmQ2
ZjFiN2ViOTBmY2M3OTA1ZTMxZTlmMDRmZTNiZjgyNjBiLi41MDhkNjYxMjlkMTQ4N2M0ZTg0NDA5
MzkzZGEzMzQwOTE5ZWE3Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVj
dElubGluZUNvbnRlbnQoKSBjb25zdAogICAgICAgICAgICAgaWYgKCF0cmVhdEFzSW5saW5lQ29u
dGFpbmVyKGxheW91dEJveCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAv
LyBUaGlzIGlzIHRoZSBzdGFydCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcuIDxzcGFuPiku
Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5p
cXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyU3Rh
cnQpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlx
dWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFy
dCkpOwogICAgICAgICAgICAgYXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihs
YXlvdXRCb3gpOwogICAgICAgICAgICAgaWYgKCFjb250YWluZXIuaGFzSW5GbG93T3JGbG9hdGlu
Z0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTIsMTcgKzI5MiwxNyBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0
CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVldWUudGFrZUxhc3QoKTsK
ICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChl
LmcuIDwvc3Bhbj4pLgogICAgICAgICAgICAgaWYgKHRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5
b3V0Qm94KSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShz
dGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6
Q29udGFpbmVyRW5kKSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGlu
ZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6
OkNvbnRhaW5lckVuZCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzTGluZUJy
ZWFrQm94KCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0o
c3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6
OkhhcmRMaW5lQnJlYWspKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5s
aW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlw
ZTo6SGFyZExpbmVCcmVhaykpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzRmxv
YXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElu
bGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0
ZW06OlR5cGU6OkZsb2F0KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElu
bGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5
cGU6OkZsb2F0KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3goKSk7CiAgICAgICAgICAgICAgICAgaWYgKGxheW91
dEJveC5oYXNUZXh0Q29udGVudCgpKQogICAgICAgICAgICAgICAgICAgICBJbmxpbmVUZXh0SXRl
bTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygp
LCBsYXlvdXRCb3gpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVt
PihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkJveCkpOworICAgICAgICAgICAgICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxh
eW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9IGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9h
dGluZ1NpYmxpbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
TGluZUxheW91dC5jcHAKaW5kZXggZjc0MWRlNDg5ZTk0MjQ2MWQ3NjkyZTJlNDA0MTU5MzgzYjBj
ODE2MC4uMGEyMTMwMjEzZjEyNGVlYjVmN2Y3MTEyZTg4NmQ3MTJjNTMxZGEwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCkBAIC0zOTYs
NyArMzk2LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0Ojpj
cmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgIGRpc3BsYXlC
b3guc2V0VG9wTGVmdChsb2dpY2FsUmVjdC50b3BMZWZ0KCkpOwogICAgICAgICAgICAgZGlzcGxh
eUJveC5zZXRDb250ZW50Qm94V2lkdGgobG9naWNhbFJlY3Qud2lkdGgoKSk7CiAgICAgICAgICAg
ICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQobG9naWNhbFJlY3QuaGVpZ2h0KCkpOwot
ICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVl
PERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00MDcsNyArNDA3LDcgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVu
cyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgICAgICB0b3BMZWZ0ICs9IEdlb21ldHJ5
OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZzZXQobGF5b3V0U3RhdGUoKSwgbGF5b3V0Qm94
KTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdCh0b3BMZWZ0KTsKICAgICAgICAg
ICAgIGxpbmVCb3hSZWN0LmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVjdC53aWR0aCgpKTsK
LSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1
ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1
bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAgICAgICBhdXRvIHByZXZpb3VzUnVuQ2FuQmVF
eHRlbmRlZCA9IHByZXZpb3VzTGluZVJ1biAmJiBwcmV2aW91c0xpbmVSdW4tPnRleHRDb250ZXh0
KCkgPyBwcmV2aW91c0xpbmVSdW4tPnRleHRDb250ZXh0KCktPmNhbkJlRXh0ZW5kZWQgOiBmYWxz
ZTsKICAgICAgICAgICAgIGF1dG8gcmVxdWlyZXNOZXdSdW4gPSAhaW5kZXggfHwgIXByZXZpb3Vz
UnVuQ2FuQmVFeHRlbmRlZCB8fCAmbGF5b3V0Qm94ICE9ICZwcmV2aW91c0xpbmVSdW4tPmxheW91
dEJveCgpOwogICAgICAgICAgICAgaWYgKHJlcXVpcmVzTmV3UnVuKQotICAgICAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpS
dW4+KGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQt
PnN0YXJ0LCB0ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0
aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVj
dCwgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5zdGFydCwgdGV4dENv
bnRleHQtPmxlbmd0aCB9KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBh
dXRvJiBsYXN0RGlzcGxheVJ1biA9IGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgp
OwogICAgICAgICAgICAgICAgIGxhc3REaXNwbGF5UnVuLT5leHBhbmRIb3Jpem9udGFsbHkobG9n
aWNhbFJlY3Qud2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKaW5kZXggYjAwMTNiNmVkNTYzYmNiZjgyODEzOTEzNDFm
MmRkNTYxNWVjNTNlZi4uNzkwNjE5NjgxZTY3NTJkMjg3MjQ5Mzg2MjJlM2E3NGJlMDMzZmYzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUl0ZW0uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2Ug
TGF5b3V0IHsKIAogY2xhc3MgSW5saW5lSXRlbSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbmxp
bmVJdGVtPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51
bSBjbGFzcyBUeXBlIHsgVGV4dCwgSGFyZExpbmVCcmVhaywgQm94LCBGbG9hdCwgQ29udGFpbmVy
U3RhcnQsIENvbnRhaW5lckVuZCB9OwogICAgIElubGluZUl0ZW0oY29uc3QgQm94JiBsYXlvdXRC
b3gsIFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lLmNwcAppbmRleCA0ZjIwYTZmZjFkNzBjZTM0OWJkZTBlYmVkZmU4Zjgw
YTM1ZTg1YTI4Li5lZDY1MjA1YjdkYjk5YjBmNmFiMTBmM2VlZWFhMDdjNDQ2YjdmOGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVM
aW5lLmNwcApAQCAtNTQsNyArNTQsNyBAQCBMaW5lOjpDb250ZW50OjpSdW46OlJ1bihjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBUZXh0Q29udGV4dCYgdGV4dENvbgogCiBMaW5l
OjpMaW5lKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgSW5pdGlhbENvbnN0
cmFpbnRzJiBpbml0aWFsQ29uc3RyYWludHMsIFNraXBWZXJ0aWNhbEFsaWdtZW50IHNraXBWZXJ0
aWNhbEFsaWdtZW50KQogICAgIDogbV9sYXlvdXRTdGF0ZShsYXlvdXRTdGF0ZSkKLSAgICAsIG1f
Y29udGVudChzdGQ6Om1ha2VfdW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkpCisgICAgLCBtX2NvbnRl
bnQobWFrZVVuaXF1ZTxMaW5lOjpDb250ZW50PigpKQogICAgICwgbV9sb2dpY2FsVG9wTGVmdChp
bml0aWFsQ29uc3RyYWludHMubG9naWNhbFRvcExlZnQpCiAgICAgLCBtX2Jhc2VsaW5lKHsgaW5p
dGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5lT2Zmc2V0LCBpbml0aWFs
Q29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuaGVpZ2h0IC0gaW5pdGlhbENvbnN0cmFpbnRz
LmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5lT2Zmc2V0IH0pCiAgICAgLCBtX2luaXRpYWxTdHJ1
dChpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuc3RydXQpCkBAIC0yMTMsNyAr
MjEzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwg
TGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiAKIHZvaWQgTGluZTo6YXBwZW5kTm9uQnJlYWthYmxl
U3BhY2UoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgRGlzcGxheTo6UmVjdCYg
bG9naWNhbFJlY3QpCiB7Ci0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29u
dGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwg
bG9naWNhbFJlY3QpKTsKICAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0gbG9naWNhbFJlY3Qu
d2lkdGgoKTsKIH0KIApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENv
bnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNh
CiAgICAgfQogCiAgICAgYXV0byB0ZXh0Q29udGV4dCA9IENvbnRlbnQ6OlJ1bjo6VGV4dENvbnRl
eHQgeyBpbmxpbmVJdGVtLnN0YXJ0KCksIGlubGluZUl0ZW0uaXNDb2xsYXBzZWQoKSA/IDEgOiBp
bmxpbmVJdGVtLmxlbmd0aCgpLCBpc0NvbXBsZXRlbHlDb2xsYXBzZWQsIGlubGluZUl0ZW0uaXNX
aGl0ZXNwYWNlKCksIGNhbkJlRXh0ZW5kZWQgfTsKLSAgICBhdXRvIGxpbmVJdGVtID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2Fs
UmVjdCk7CisgICAgYXV0byBsaW5lSXRlbSA9IG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxp
bmVJdGVtLCB0ZXh0Q29udGV4dCwgbG9naWNhbFJlY3QpOwogICAgIGlmIChpc1RyaW1tYWJsZSAm
JiAhaXNDb21wbGV0ZWx5Q29sbGFwc2VkKQogICAgICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuYWRk
KGxpbmVJdGVtLmdldCgpKTsKIApAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5k
Tm9uUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0
VW5pdCBsCiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChpbmxpbmVJdGVtQ29udGVudEhl
aWdodChpbmxpbmVJdGVtKSk7CiAgICAgfQogCi0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkp
OworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4o
aW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKICAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0g
KGxvZ2ljYWxXaWR0aCArIGhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBob3Jpem9udGFsTWFyZ2lu
LmVuZCk7CiAgICAgbV90cmltbWFibGVDb250ZW50LmNsZWFyKCk7CiB9CkBAIC0zMjMsNyArMzIz
LDcgQEAgdm9pZCBMaW5lOjphcHBlbmRIYXJkTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mIGlu
bGluZUl0ZW0pCiAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVt
LCB7IH0pOwogICAgICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCgpKTsK
ICAgICB9Ci0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29udGVudC0+cnVu
cygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJl
Y3QpKTsKIH0KIAogdm9pZCBMaW5lOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3Qg
SW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBydW5IZWlnaHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKaW5kZXgg
ZmFmMDU0NzUzZDM3MjJhYmMwMWQ4YTczZjQ3OTkzNDliY2IxYWExMS4uNzM3YTA3YjAzMmFmNmZm
MTE5OTA5NmY3YTM3NTc1N2U2ZGE5ZjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApAQCAtNTIsOCArNTIsMTAgQEAgY2xh
c3MgTGluZSB7CiAgICAgTGluZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEluaXRpYWxDb25z
dHJhaW50cyYsIFNraXBWZXJ0aWNhbEFsaWdtZW50KTsKIAogICAgIGNsYXNzIENvbnRlbnQgewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
cnVjdCBSdW4geworICAgICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICAgICAgc3RydWN0IFRleHRDb250ZXh0IHsKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBzdGFydCB7IDAgfTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVU
ZXh0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVUZXh0SXRlbS5jcHAKaW5kZXggZjEzMDg5YTcwOGYzZmUzZmY5Yjc3ZjcyMDk2Y2RhNDJlZjM2
ZTIyMi4uNWU2YzI1NmRiMGIzMDlhYWYxZTI1ODIxZjBlMWUxOGU1NjQ1MmYxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRl
eHRJdGVtLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVB
bmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiB7CiAg
ICAgYXV0byB0ZXh0ID0gaW5saW5lQm94LnRleHRDb250ZW50KCk7CiAgICAgaWYgKCF0ZXh0Lmxl
bmd0aCgpKQotICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwgZmFsc2UpKTsKKyAg
ICAgICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0
ZW0+KGlubGluZUJveCwgMCwgMCwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBhdXRvJiBzdHlsZSA9
IGlubGluZUJveC5zdHlsZSgpOwogICAgIGF1dG8gcHJlc2VydmVOZXdsaW5lID0gc3R5bGUucHJl
c2VydmVOZXdsaW5lKCk7CkBAIC05OSwyMCArOTksMjAgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6
Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25z
dAogICAgIHdoaWxlIChjdXJyZW50UG9zaXRpb24gPCB0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAg
IC8vIFNvZnQgbGluZWJyZWFrPwogICAgICAgICBpZiAoaXNTb2Z0TGluZUJyZWFrKHRleHRbY3Vy
cmVudFBvc2l0aW9uXSwgcHJlc2VydmVOZXdsaW5lKSkgewotICAgICAgICAgICAgaW5saW5lQ29u
dGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBj
dXJyZW50UG9zaXRpb24sIDEsIHRydWUsIGZhbHNlKSk7CisgICAgICAgICAgICBpbmxpbmVDb250
ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQ
b3NpdGlvbiwgMSwgdHJ1ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICsrY3VycmVudFBvc2l0aW9u
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzV2hpdGVz
cGFjZUNoYXJhY3Rlcih0ZXh0W2N1cnJlbnRQb3NpdGlvbl0sIHByZXNlcnZlTmV3bGluZSkpIHsK
ICAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlv
bih0ZXh0LCBjdXJyZW50UG9zaXRpb24sIHByZXNlcnZlTmV3bGluZSk7CiAgICAgICAgICAgICBh
dXRvIGlzQ29sbGFwc2VkID0gY29sbGFwc2VXaGl0ZVNwYWNlICYmIGxlbmd0aCA+IDE7Ci0gICAg
ICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJ
dGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBpc0NvbGxhcHNl
ZCkpOworICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVU
ZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgdHJ1ZSwgaXNDb2xs
YXBzZWQpKTsKICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gbGVuZ3RoID0gbW92ZVRv
TmV4dEJyZWFrYWJsZVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbiwgbGluZUJyZWFrSXRlcmF0b3Is
IHN0eWxlKTsKLSAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgZmFsc2Us
IGZhbHNlKSk7CisgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIGZhbHNlLCBmYWxz
ZSkpOwogICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gbGVuZ3RoOwogICAgIH0KIH0KQEAgLTEz
MCw3ICsxMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0ZW0+IElubGluZVRleHRJ
dGVtOjpzcGxpdCh1bnNpZ25lZCBzcGxpdFBvc2l0aW9uLCB1bgogewogICAgIFJFTEVBU0VfQVNT
RVJUKHNwbGl0UG9zaXRpb24gPj0gdGhpcy0+c3RhcnQoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
c3BsaXRQb3NpdGlvbiArIGxlbmd0aCA8PSBlbmQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGxheW91dEJveCgpLCBzcGxpdFBvc2l0aW9uLCBsZW5ndGgs
IGlzV2hpdGVzcGFjZSgpLCBpc0NvbGxhcHNlZCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJ
bmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24sIGxlbmd0aCwgaXNXaGl0
ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCA4MDg0ZTJiYjY5ZThjOTJhYWE5Yjdi
ZTZkOGExNGI3Nzk1MjkxMjAzLi4zYmFmOWVhYTFmYmE5MmM3MGY0YzZjNzMyOTViMTM4YjMxYmM1
YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQm94OjpCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+
IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBlRmwKICAgICAsIG1faGFz
UmFyZURhdGEoZmFsc2UpCiB7CiAgICAgaWYgKGlzUmVwbGFjZWQoKSkKLSAgICAgICAgZW5zdXJl
UmFyZURhdGEoKS5yZXBsYWNlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZWQ+KCp0aGlzKTsK
KyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5yZXBsYWNlZCA9IG1ha2VVbmlxdWU8UmVwbGFjZWQ+
KCp0aGlzKTsKIH0KIAogQm94OjpCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+IGF0dHJp
YnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCkBAIC00NDcsNyArNDQ3LDcgQEAgY29uc3QgQm94
OjpCb3hSYXJlRGF0YSYgQm94OjpyYXJlRGF0YSgpIGNvbnN0CiBCb3g6OkJveFJhcmVEYXRhJiBC
b3g6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAgICBy
ZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Qm94UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJh
cmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWU8Qm94UmFyZURh
dGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBCb3g6OnJlbW92ZVJhcmVEYXRh
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcAppbmRleCBhYjI4NGVhMDk5YjhmYTNmZmE3Mjc0ZTA2ZTRjZWNjYWY4NDc0
MzA3Li5mMmFmY2FiZDBhMzgxYzZkNWM4ZGEzOWQzNDZlMWFlYTMzZDQ3YjIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwCkBAIC0xMzAsMjUgKzEzMCwyNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRl
cjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgIGlm
IChpczxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAgICAvLyBGSVhNRTogQ2xl
YXJseSB0aGVyZSBtdXN0IGJlIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGlzLgogICAgICAgICBp
ZiAocGFyZW50UmVuZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGlu
ZSkKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGRv
d25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJT
dHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5k
ZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5z
dHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3Rk
OjptYWtlX3VuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9y
aWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CisgICAgICAg
ICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0
PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255
bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVuZGVyZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6
OklubGluZSkpOwogICAgICAgICByZXR1cm4gY2hpbGRMYXlvdXRCb3g7CiAgICAgfQogCiAgICAg
YXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihjaGlsZFJlbmRlcmVyKTsK
ICAgICBhdXRvIGRpc3BsYXlUeXBlID0gcmVuZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCk7CiAgICAg
aWYgKGlzPFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6
OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94
PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJl
ci5zdHlsZSgpKSk7CiAKICAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSkgewogICAg
ICAgICAvLyBDb25zdHJ1Y3QgdGhlIHByaW5jaXBhbCB0YWJsZSB3cmFwcGVyIGJveCAoYW5kIG5v
dCB0aGUgdGFibGUgYm94IGl0c2VsZikuCi0gICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1l
bnRUeXBlOjpUYWJsZVdyYXBwZXJCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0
eWxlKCkpKTsKKyAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4o
Qm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJv
eCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgIH0gZWxzZSBp
ZiAoaXM8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKSkgewogICAgICAgICBpZiAoZGlzcGxheVR5
cGUgPT0gRGlzcGxheVR5cGU6OkJsb2NrKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJT
dHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJT
dHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAg
ICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAg
ICAgIC8vIEZJWE1FOiBXZSBkb24ndCB5ZXQgc3VwcG9ydCBhbGwgcmVwbGFjZWQgZWxlbWVudHMg
YW5kIHRoaXMgaXMgdGVtcG9yYXJ5IGFueXdheS4KICAgICAgICAgaWYgKGNoaWxkTGF5b3V0Qm94
LT5yZXBsYWNlZCgpKQogICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCktPnNl
dEludHJpbnNpY1NpemUoZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKS5pbnRyaW5z
aWNTaXplKCkpOwpAQCAtMTYzLDE4ICsxNjMsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJl
ZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4K
ICAgICAgICAgICAgICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKHJlbmRl
cmVyLnN0eWxlKCkpOwogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRUb3AoeyBvZmZzZXQtPmhl
aWdodCgpLCBGaXhlZCB9KTsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0TGVmdCh7IG9mZnNl
dC0+d2lkdGgoKSwgRml4ZWQgfSk7Ci0gICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBX
VEZNb3ZlKCpzdHlsZSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZSgqc3R5
bGUpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVy
KSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OklubGluZSkKLSAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1l
bnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxl
KCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+
KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVy
LnN0eWxlKCkpKTsKICAgICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6
OklubGluZUJsb2NrKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6
Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBt
YWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJT
dHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlmIChkaXNwbGF5
VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uIHx8IGRpc3BsYXlUeXBlID09IERpc3Bs
YXlUeXBlOjpUYWJsZUNlbGwpIHsKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVy
U3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwg
UmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIGlm
IChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91cCB8fCBkaXNwbGF5VHlw
ZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNw
bGF5VHlwZTo6VGFibGVGb290ZXJHcm91cAogICAgICAgICAgICAgfHwgZGlzcGxheVR5cGUgPT0g
RGlzcGxheVR5cGU6OlRhYmxlUm93IHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJs
ZUNvbHVtbkdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNvbHVtbikg
ewotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5l
cj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENv
bnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
cmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJU
X05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yMTAs
NyArMjEwLDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUoY29uc3Qg
UmVuZGVyVGFibGUmIHRhYmxlUmVuZGVyZXIsIENvbnRhaW4KICAgICAgICAgdGFibGVDaGlsZCA9
IHRhYmxlQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogCi0gICAgYXV0byB0YWJsZUJveCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94
OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVy
ZXIuc3R5bGUoKSkpOworICAgIGF1dG8gdGFibGVCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4o
Qm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlQm94IH0sIFJl
bmRlclN0eWxlOjpjbG9uZSh0YWJsZVJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICBhcHBlbmRDaGls
ZCh0YWJsZVdyYXBwZXJCb3gsICp0YWJsZUJveCk7CiAgICAgd2hpbGUgKHRhYmxlQ2hpbGQpIHsK
ICAgICAgICAgVHJlZUJ1aWxkZXI6OmNyZWF0ZVN1YlRyZWUoZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4oKnRhYmxlQ2hpbGQpLCAqdGFibGVCb3gpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgcHJp
bnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRv
IGZpbmQgYSB3YXkgdG8gb3V0cHV0IGdlb21ldHJ5IHdpdGhvdXQgbGF5b3V0IGNvbnRleHQuCiAg
ICAgICAgIGF1dG8mIHJlbmRlclZpZXcgPSAqZG9jdW1lbnQtPnJlbmRlclZpZXcoKTsKICAgICAg
ICAgYXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrID0gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91
dFRyZWUocmVuZGVyVmlldyk7Ci0gICAgICAgIGF1dG8gbGF5b3V0U3RhdGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCppbml0aWFsQ29udGFpbmluZ0Jsb2NrKTsKKyAg
ICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IG1ha2VVbmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4o
KmluaXRpYWxDb250YWluaW5nQmxvY2spOwogICAgICAgICBsYXlvdXRTdGF0ZS0+c2V0UXVpcmtz
TW9kZShyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5MaW1pdGVkUXVpcmtzTW9kZSgpID8gTGF5b3V0
U3RhdGU6OlF1aXJrc01vZGU6OkxpbWl0ZWQgOiAocmVuZGVyVmlldy5kb2N1bWVudCgpLmluUXVp
cmtzTW9kZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6OlllcyA6IExheW91dFN0YXRlOjpR
dWlya3NNb2RlOjpObykpOwogICAgICAgICBsYXlvdXRTdGF0ZS0+dXBkYXRlTGF5b3V0KCk7CiAg
ICAgICAgIHNob3dMYXlvdXRUcmVlKCppbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBsYXlvdXRTdGF0
ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTFk
NzdlNGFmMWRiZGRmMDQ1YTkyYzFjOGFkM2I5OWVhY2ViOTdiNS4uYjQ5OGEyMjRiMTkwYzZjZTg0
NGViOWRkN2ViOWI3YTEwNWQ3NmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4g
Q29udGVudEZpbHRlcjo6Y3JlYXRlKERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYQogICAgIGlm
IChmaWx0ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1
bWVudExvYWRlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudEZpbHRlcj4oV1RGTW92
ZShmaWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOwogfQogCiBDb250ZW50RmlsdGVyOjpDb250ZW50
RmlsdGVyKENvbnRhaW5lciYmIGNvbnRlbnRGaWx0ZXJzLCBEb2N1bWVudExvYWRlciYgZG9jdW1l
bnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuY3BwCmluZGV4IGQwZDU0Yjk3ZWFlNzIwNDI2Zjk2MWM4ZGFlODk1ZTIwMzY5Y2Vk
Y2MuLmM0Y2U1ZjU1MjE3MGIzY2ZjOGI4NDFiNTlhNTEwZmQ3NWFhODNmYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBAIC0y
MDUsNyArMjA1LDcgQEAgYm9vbCB2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICBpZiAoIXBhc3Nlc0Fj
Y2Vzc0NvbnRyb2xDaGVjayhyZXNwb25zZSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlY3Vy
aXR5T3JpZ2luLCBlcnJvckRlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGVJdGVtPihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgYXV0byByZXN1bHQg
PSBtYWtlVW5pcXVlPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPihzdG9yZWRD
cmVkZW50aWFsc1BvbGljeSk7CiAgICAgaWYgKCFyZXN1bHQtPnBhcnNlKHJlc3BvbnNlKQogICAg
ICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09yaWdpbk1ldGhvZChyZXF1ZXN0Lmh0dHBNZXRo
b2QoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3JpcHRpb24pCiAgICAgICAg
IHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2luSGVhZGVycyhyZXF1ZXN0Lmh0dHBIZWFkZXJG
aWVsZHMoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3JpcHRpb24pKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBkZTA5ZTcwMzk5Y2M3
NDdlODg3MzY5NzgzNzI0ZTZkYWE5ZmM3ODhiLi4wNDU1Y2FmYzU5ZmY3YjZlYTFmOWEyY2QzOTMx
YTY5ZTlmNjk0NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTE4OSw3ICsxODksNyBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRAogICAgICwgbV9vcmln
aW5hbFN1YnN0aXR1dGVEYXRhV2FzVmFsaWQoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAg
ICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2Fk
ZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGF0YUxv
YWRUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRO
b3cpCi0gICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0KHN0ZDo6bWFrZV91bmlxdWU8QXBwbGlj
YXRpb25DYWNoZUhvc3Q+KCp0aGlzKSkKKyAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3QobWFr
ZVVuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQogewogfQogCkBAIC0xMzM2LDcg
KzEzMzYsNyBAQCB1aW50NjRfdCBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZl
c3QoKQogICAgIGlmIChtYW5pZmVzdFVSTC5pc0VtcHR5KCkgfHwgIW1hbmlmZXN0VVJMLmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RV
UkwsIHVzZUNyZWRlbnRpYWxzKTsKKyAgICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gbWFrZVVuaXF1
ZTxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRl
bnRpYWxzKTsKICAgICBhdXRvKiByYXdNYW5pZmVzdExvYWRlciA9IG1hbmlmZXN0TG9hZGVyLmdl
dCgpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG5leHRDYWxsYmFja0lEKys7CiAgICAgbV9hcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVycy5zZXQoV1RGTW92ZShtYW5pZmVzdExvYWRlciksIGNhbGxi
YWNrSUQpOwpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QXJj
aGl2ZShSZWY8QXJjaGl2ZT4mJiBhcmNoaXZlKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxs
QXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJiBhcmNoaXZlKQogewogICAgIGlmICghbV9hcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CisgICAgICAg
IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbj4oKTsKICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFkZEFsbFJl
c291cmNlcyhhcmNoaXZlKTsKIH0KIApAQCAtMTQzNiw3ICsxNDM2LDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJiBhcmNoaXZlKQogdm9pZCBE
b2N1bWVudExvYWRlcjo6YWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYg
cmVzb3VyY2UpCiB7CiAgICAgaWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAg
ICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKKyAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkUmVzb3VyY2UoV1RGTW92ZShyZXNvdXJjZSkpOwog
fQogCkBAIC0xOTYzLDcgKzE5NjMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJl
c291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIC8vIElmIHRoZSBsb2Fk
IHdhcyBhYm9ydGVkIGJ5IGNsZWFyaW5nIG1fcmVxdWVzdCwgaXQncyBwb3NzaWJsZSB0aGUgQXBw
bGljYXRpb25DYWNoZUhvc3QKICAgICAgICAgLy8gaXMgbm93IGluIGEgc3RhdGUgd2hlcmUgc3Rh
cnRpbmcgYW4gZW1wdHkgbG9hZCB3aWxsIGJlIGluY29uc2lzdGVudC4gUmVwbGFjZSBpdCB3aXRo
CiAgICAgICAgIC8vIGEgbmV3IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LgotICAgICAgICBtX2FwcGxp
Y2F0aW9uQ2FjaGVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4o
KnRoaXMpOworICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0gbWFrZVVuaXF1ZTxBcHBs
aWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpOwogICAgICAgICBtYXliZUxvYWRFbXB0eSgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMjEyMiw3ICsyMTIyLDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBs
b2FkSWRlbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gaWNvbkxvYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRlcj4oKnRoaXMsIGljb24udXJsKTsKKyAgICBhdXRv
IGljb25Mb2FkZXIgPSBtYWtlVW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAg
ICAgYXV0byogcmF3SWNvbkxvYWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7CiAgICAgbV9pY29uTG9h
ZGVycy5zZXQoV1RGTW92ZShpY29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggYzQ1MGMwODcwYzBkYjkwMDJiOTA0Yzdi
NmNiY2U0Yzk2OTAyYzZkYy4uYWNhMzQ1Mjk4NWI3MzExOWJjYjIzYzQzYmEyM2VlZmI3NWE3YTM0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTU4Miw3ICs1ODIs
NyBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMo
KQogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFbXB0eVByb2dyZXNzVHJhY2tlckNsaWVudD4g
ZHVtbXlQcm9ncmVzc1RyYWNrZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jl
c3NUcmFja2VyQ2xpZW50ID0gJmR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmdldCgpOwogCi0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPEVtcHR5RGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQ+KCk7CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoeyB9LCB7IH0pOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IEVt
cHR5RGF0YWJhc2VQcm92aWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBlMGY0NjE0OGYyZGZhYTg3ZjZiMjQyNjM3ZDUwODkxODUyMGE2MGEyLi44M2JlYjI3MTdk
MzM3YzM0MWMwMTVlY2Y0NmQ0ZjM3M2UwOGIxNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTI3MCwxMCArMjcwLDEwIEBAIGNsYXNzIEZyYW1lTG9hZGVyOjpGcmFt
ZVByb2dyZXNzVHJhY2tlciB7CiBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUmIGZyYW1l
LCBGcmFtZUxvYWRlckNsaWVudCYgY2xpZW50KQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcG9saWN5Q2hlY2tlcihzdGQ6Om1ha2VfdW5pcXVl
PFBvbGljeUNoZWNrZXI+KGZyYW1lKSkKLSAgICAsIG1faGlzdG9yeShzdGQ6Om1ha2VfdW5pcXVl
PEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCisgICAgLCBtX3BvbGljeUNoZWNrZXIobWFrZVVu
aXF1ZTxQb2xpY3lDaGVja2VyPihmcmFtZSkpCisgICAgLCBtX2hpc3RvcnkobWFrZVVuaXF1ZTxI
aXN0b3J5Q29udHJvbGxlcj4oZnJhbWUpKQogICAgICwgbV9ub3RpZmllcihmcmFtZSkKLSAgICAs
IG1fc3ViZnJhbWVMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUp
KQorICAgICwgbV9zdWJmcmFtZUxvYWRlcihtYWtlVW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFt
ZSkpCiAgICAgLCBtX21peGVkQ29udGVudENoZWNrZXIoZnJhbWUpCiAgICAgLCBtX3N0YXRlKEZy
YW1lU3RhdGVQcm92aXNpb25hbCkKICAgICAsIG1fbG9hZFR5cGUoRnJhbWVMb2FkVHlwZTo6U3Rh
bmRhcmQpCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAg
bV9zdGF0ZU1hY2hpbmUuYWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5
aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1f
Y2xpZW50LmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNrZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAgICBt
X3Byb2dyZXNzVHJhY2tlciA9IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJh
bWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChj
b25zdCBVUkwmKQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXRGb3JT
eW50aGVzaXplZERvY3VtZW50KGNvbnN0IFVSTCYpCiAgICAgbV9uZWVkc0NsZWFyID0gdHJ1ZTsK
IAogICAgIG1fbmV0d29ya2luZ0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29u
dGV4dCgpOwotICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVBy
b2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5p
cXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykKQEAgLTI2NzgsNyArMjY3OCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmRldGFjaENoaWxkcmVuKCkKICAgICAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwjbmF2aWdhdGUKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TmF2aWdhdGlvbkRpc2FibGVyPiBuYXZpZ2F0aW9uRGlzYWJsZXI7
CiAgICAgaWYgKG1fZnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgbmF2aWdhdGlvbkRpc2Fi
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsKKyAg
ICAgICAgbmF2aWdhdGlvbkRpc2FibGVyID0gbWFrZVVuaXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+
KCZtX2ZyYW1lKTsKIAogICAgIC8vIEFueSBzdWJmcmFtZSBpbnNlcnRlZCBieSB1bmxvYWQgZXZl
bnQgaGFuZGxlcnMgZXhlY3V0ZWQgaW4gdGhlIGxvb3AgYmVsb3cgd2lsbCBub3QgZ2V0IHVubG9h
ZGVkCiAgICAgLy8gYmVjYXVzZSB3ZSBjcmVhdGUgYSBjb3B5IG9mIHRoZSBzdWJmcmFtZXMgbGlz
dCBiZWZvcmUgbG9vcGluZy4gVGhlcmVmb3JlLCBpdCB3b3VsZCBiZSB1bnNhZmUgdG8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggOGUzYTQ2YjUxMGE5OTgwYzJhZmI4MGEzNDQ4
YTQ5ODllYWMxOWUxOS4uNWZmZjY3ZDk0MmViZTkxZTAzYTUyOTZlNmU5ZGEyNGRiM2I3Y2NiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTk2LDYgKzk2LDcgQEAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBpc1JlbG9hZChGcmFtZUxvYWRUeXBlKTsKIHVzaW5nIENvbnRlbnRQb2xp
Y3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBvbGljeUFjdGlvbiwgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyKT47CiAKIGNsYXNzIEZyYW1lTG9hZGVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZUxvYWRlcik7
CiBwdWJsaWM6CiAgICAgRnJhbWVMb2FkZXIoRnJhbWUmLCBGcmFtZUxvYWRlckNsaWVudCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGNkZjY0OTUyNmZlM2QxZjMzMjhk
NmUzNmMyMDEwODdjMzFmMTY1NWIuLjQwOGM1MzY0MjllM2IwODc3OThlYjk3ZTc2ODY0Y2M5NDg2
NjY3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTE0MiwyMiArMTQy
LDIyIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4g
Y3JlYXRlTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVuCiB7CiAgICAgc3dpdGNoIChyZXNvdXJjZS50
eXBlKCkpIHsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZEltYWdlUmVzb3VyY2VD
bGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNlKSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVy
LCBkb3duY2FzdDxDYWNoZWRJbWFnZT4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpUeXBlOjpTY3JpcHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQ
cmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFNjcmlw
dD4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZh
dWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJj
ZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQ6Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVu
dD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXNvdXJjZSkpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZFN0eWxlUmVzb3VyY2VDbGllbnQ+KGxv
YWRlciwgZG93bmNhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVzb3VyY2UpKTsKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpGb250UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25j
YXN0PENhY2hlZEZvbnQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExp
bmtQcmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEZvbnQ+
KHJlc291cmNlKSk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OlRleHRUcmFja1Jlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2Fz
dDxDYWNoZWRUZXh0VHJhY2s+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hl
ZFRleHRUcmFjaz4ocmVzb3VyY2UpKTsKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OlR5cGU6Ok1lZGlhUmVzb3VyY2U6CiAgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLm1lZGlhUHJlbG9hZGluZ0VuYWJsZWQoKSk7CiAgICAgICAg
IEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlJhd1Jlc291cmNl
OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNl
Q2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50Pihs
b2FkZXIsIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOwogICAgIGNhc2Ug
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZToKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpUeXBlOjpJY29uOgogI2lmIEVOQUJMRShTVkdfRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKaW5kZXggMDJjYzdkMTIwY2E0YmNmZjM1MjVjOGY3
NDljYzQxODBmZTZkNDVlMi4uOGFlNGIzMWI4YjY5Zjk4ZDAxYWRhNzg4OTlhOThiZDExZGQ0Mjcz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBOYXZpZ2F0aW9uRGlzYWJs
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdmlnYXRp
b25EaXNhYmxlcihGcmFtZSogZnJhbWUpCiAgICAgICAgIDogbV9mcmFtZShmcmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRleCA1NThjNzgw
NDk1N2VjODgyODgxOGVmNTYxOWJmOTgzZDNmOTQwYTU1Li4zYzJjMjUyYWE1MWI5NjkyOTVlY2Yx
NDgxMjU0YTMyNDBlYzQyYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1
bGVyOjpzY2hlZHVsZVJlZGlyZWN0KERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIGRvdWJs
ZQogICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVm
cmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCiAgICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5
IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpIHsKICAgICAgICAgYXV0byBsb2NrQmFja0ZvcndhcmRM
aXN0ID0gZGVsYXkgPD0gMSA/IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyA6IExvY2tCYWNrRm9y
d2FyZExpc3Q6Ok5vOwotICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxl
ZFJlZGlyZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAmbV9mcmFtZS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2Fy
ZExpc3QpKTsKKyAgICAgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4o
aW5pdGlhdGluZ0RvY3VtZW50LCBkZWxheSwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0ZvcndhcmRMaXN0KSk7CiAg
ICAgfQogfQogCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIFMKICAg
ICAvLyBUaGlzIG1heSBoYXBwZW4gd2hlbiBhIGZyYW1lIGNoYW5nZXMgdGhlIGxvY2F0aW9uIG9m
IGFub3RoZXIgZnJhbWUuCiAgICAgYm9vbCBkdXJpbmdMb2FkID0gIWxvYWRlci5zdGF0ZU1hY2hp
bmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKTsKIAotICAgIHNjaGVkdWxlKHN0
ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRpYXRpbmdEb2N1bWVu
dCwgJnNlY3VyaXR5T3JpZ2luLCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tG
b3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAg
ICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlPihpbml0aWF0aW5n
RG9jdW1lbnQsICZzZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxv
Y2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lv
bihSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvbikKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2
b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oUmVmPEZvcm1T
dWJtaXNzaW9uPiYmIHN1Ym1pc3NpbwogICAgICAgICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9j
a0JhY2tGb3J3YXJkTGlzdDo6WWVzOwogICAgIH0KICAgICAKLSAgICBzY2hlZHVsZShzdGQ6Om1h
a2VfdW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihXVEZNb3ZlKHN1Ym1pc3Npb24pLCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1
ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lvbj4oV1RGTW92ZShzdWJtaXNzaW9uKSwgbG9ja0JhY2tG
b3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6
OnNjaGVkdWxlUmVmcmVzaChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50KQpAQCAtNDc5LDcg
KzQ3OSw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3Vt
ZW50JiBpbml0aWF0aW5nRG9jdW1lbnQpCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVmcmVz
aD4oaW5pdGlhdGluZ0RvY3VtZW50LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCB1cmwsIG1fZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CisgICAgc2No
ZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZt
X2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIo
KS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKQEAgLTQ5OCwxMyArNDk4LDEzIEBA
IHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQg
c3RlcHMpCiAgICAgfQogCiAgICAgLy8gSW4gYWxsIG90aGVyIGNhc2VzLCBzY2hlZHVsZSB0aGUg
aGlzdG9yeSB0cmF2ZXJzYWwgdG8gb2NjdXIgYXN5bmNocm9ub3VzbHkuCi0gICAgc2NoZWR1bGUo
c3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbj4oc3RlcHMpKTsKKyAg
ICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uPihzdGVwcykp
OwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKERvY3Vt
ZW50JiBvcmlnaW5Eb2N1bWVudCkKIHsKICAgICBpZiAoc2hvdWxkU2NoZWR1bGVOYXZpZ2F0aW9u
KCkpCi0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUGFnZUJsb2Nr
PihvcmlnaW5Eb2N1bWVudCkpOworICAgICAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxl
ZFBhZ2VCbG9jaz4ob3JpZ2luRG9jdW1lbnQpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1
bGVyOjp0aW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5oCmluZGV4IGEyZGRhY2UyOGYwN2MzOTFmZTI0ZTE5MThkMjU0YTUwMDJmYWI0NzYuLjk3
YzIzYjE1MDkyYmYzOTNiMzFkMjBjOGYzNGQyNTc3MjYzMWNjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKIGVudW0gY2xhc3MgTmV3TG9hZEluUHJvZ3Jlc3MgOiBib29sIHsgTm8s
IFllcyB9OwogICAgIAogY2xhc3MgTmF2aWdhdGlvblNjaGVkdWxlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTmF2aWdhdGlvblNjaGVkdWxl
cihGcmFtZSYpOwogICAgIH5OYXZpZ2F0aW9uU2NoZWR1bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCmluZGV4IGUxN2E5ZGM3MmRlMDM3Yzk2MzRiYzFjYzkz
YzJjMWE3N2E4NmJmYTMuLjI4MTdhNzY2NjQ1N2IyMzk3M2E2OGZjZjdiYzAxODBjMTJiZjVjZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0yMDEsNyAr
MjAxLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2UKIAogICAgIGF1dG8mIGl0ZW0gPSBtX3By
b2dyZXNzSXRlbXMuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAg
ICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgaXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NJ
dGVtPihlc3RpbWF0ZWRMZW5ndGgpOworICAgICAgICBpdGVtID0gbWFrZVVuaXF1ZTxQcm9ncmVz
c0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCBlYTVkYmZi
YWFiMjBiZmQ0M2RlYWNmMWU3NzYxMWMzNDMzYWJhYjgzLi44MjQ2YmIwNzA2Y2QwYzA3MWY4OTk2
Mjg5ODZhNWJhNTFjNDhiNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFJlc291cmNlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNv
dXJjZURlY29kZXIuY3BwCkBAIC01MzUsNyArNTM1LDcgQEAgYm9vbCBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjaGVja0ZvckhlYWRDaGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4sIGJv
b2wKICAgICBpZiAobV9jb250ZW50VHlwZSA9PSBYTUwpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgbV9jaGFyc2V0UGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQ
YXJzZXI+KCk7CisgICAgbV9jaGFyc2V0UGFyc2VyID0gbWFrZVVuaXF1ZTxIVE1MTWV0YUNoYXJz
ZXRQYXJzZXI+KCk7CiAgICAgcmV0dXJuIGNoZWNrRm9yTWV0YUNoYXJzZXQoZGF0YSwgbGVuKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCBjYTll
NmM0MzQzZDc0MDEwNTUzYTllMTBmYTY1NjNlZTUyMzkxYmJlLi5mYTkyNmVhMDYyYWRmZjIwNTcw
YzhhMzY5MTI0NjcyYjllZjU2NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNr
TG9hZGVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vz
c05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoIW1fY3VlUGFyc2VyKQotICAgICAgICBtX2N1ZVBhcnNlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlz
KSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAgICAgbV9jdWVQYXJzZXIgPSBtYWtl
VW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhp
cyksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICB3aGlsZSAobV9wYXJzZU9mZnNl
dCA8IGJ1ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEobV9wYXJzZU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTEyNjNlMmYwNDU3NGI0ZjBlZTczYzA0ZThiNjJm
NWM4MDcyYTc1OC4uNzc1MzJmODYxMzRlMDQzYWQzN2QzZjU5OTk4YTZmNTdhNDI0MTc0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtMTE1LDExICsxMTUsMTEgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICBBU1NFUlQo
Y29udGVudFNlY3VyaXR5UG9saWN5KTsKIAogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5Db3B5ID0g
c2VjdXJpdHlPcmlnaW4tPmlzb2xhdGVkQ29weSgpOwotICAgIGF1dG8gY29udGVudFNlY3VyaXR5
UG9saWN5Q29weSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihnbG9i
YWxTY29wZS51cmwoKS5pc29sYXRlZENvcHkoKSk7CisgICAgYXV0byBjb250ZW50U2VjdXJpdHlQ
b2xpY3lDb3B5ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3Bl
LnVybCgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5j
b3B5U3RhdGVGcm9tKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAgICAgY29udGVudFNlY3VyaXR5
UG9saWN5Q29weS0+Y29weVVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RTdGF0ZUZyb20oKmNvbnRlbnRT
ZWN1cml0eVBvbGljeSk7CiAKLSAgICBhdXRvIG9wdGlvbnNDb3B5ID0gc3RkOjptYWtlX3VuaXF1
ZTxMb2FkZXJUYXNrT3B0aW9ucz4ob3B0aW9ucywgcmVxdWVzdC5odHRwUmVmZXJyZXIoKS5pc051
bGwoKSA/IG91dGdvaW5nUmVmZXJyZXIgOiByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBXVEZNb3Zl
KHNlY3VyaXR5T3JpZ2luQ29weSkpOworICAgIGF1dG8gb3B0aW9uc0NvcHkgPSBtYWtlVW5pcXVl
PExvYWRlclRhc2tPcHRpb25zPihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVs
bCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUo
c2VjdXJpdHlPcmlnaW5Db3B5KSk7CiAKICAgICAvLyBBbGwgbG9hZHMgc3RhcnQgb3V0IGFzIERv
Y3VtZW50LiBJbnNpZGUgV29ya2VyVGhyZWFkYWJsZUxvYWRlciB3ZSB1cGdyYWRlIHRoaXMgdG8g
YSBXb3JrZXIgbG9hZC4KICAgICBBU1NFUlQob3B0aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9y
Q29udGV4dCA9PSBJbml0aWF0b3JDb250ZXh0OjpEb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGY5
N2ViMDA0MjViZDI5YjNjYjZiY2IzNDVmYmZkNjUyMjQwOGY4Y2UuLmJiYTkxMDQxOTE1NGVjZjQz
YzEyMmUyZDkwY2Y4NjQ1NTk3YTk5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShOb2RlJiBu
b2RlLCBXVEY6OkZ1bmN0aW9uPGJvb2wKICAgICAvLyBidXQgd2UgY2FuIGFwcHJveGltYXRlIHRo
YXQgYnkgY2hlY2tpbmcgaWYgc2NyaXB0aW5nIGlzIGVuYWJsZWQgcmlnaHQgbm93LgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+IHRhZ05hbWVzVG9GaWx0ZXI7CiAg
ICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5pc1Njcmlw
dEVuYWJsZWQoKSkgewotICAgICAgICB0YWdOYW1lc1RvRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+KCk7CisgICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBt
YWtlVW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4oKTsKICAgICAgICAgdGFnTmFtZXNUb0Zp
bHRlci0+YXBwZW5kKEhUTUxOYW1lczo6bm9zY3JpcHRUYWcpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggODM2OGE5NTcwNWUzMTky
ZDFmODE3ZmYyZWNkNjgzN2UzZjllMTM1ZC4uZWY5M2IzNTFlNzkxZDUyN2RhZTgwZjg3YzUyNWE3
ZGMxNGU3ZTQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAgbV9pbWFnZU9ic2VydmVy
LT5jYWNoZWRJbWFnZXMoKS5hZGQodGhpcyk7CiAKICAgICBpZiAobV9pbWFnZSAmJiBpczxTVkdJ
bWFnZT4oKm1faW1hZ2UpKQotICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAg
ICAgbV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8
U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIGlubGlu
ZSB2b2lkIENhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSgpCiAKICAgICBpZiAobV9pbWFnZSkgewog
ICAgICAgICBpZiAoaXM8U1ZHSW1hZ2U+KCptX2ltYWdlKSkKLSAgICAgICAgICAgIG1fc3ZnSW1h
Z2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0lt
YWdlPigqbV9pbWFnZSkpOworICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1
ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CiAKICAgICAg
ICAgLy8gU2VuZCBxdWV1ZWQgY29udGFpbmVyIHNpemUgcmVxdWVzdHMuCiAgICAgICAgIGlmICht
X2ltYWdlLT51c2VzQ29udGFpbmVyU2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCBiZTYxODNhYmZhNTlkNWM4ZTE2
MmZlYzFkNjU1MjQ1MjNhZGUyNzhjLi5mOWE3NWYzNTQ1Mjc2OTAyYTllNGE1YzM1YjZhYzZiMWYx
NTBjMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpy
ZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cgog
ICAgICAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3Qp
LCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UgewogICAg
ICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKFJlZGlyZWN0UGFpcihyZXF1ZXN0LCByZXNwb25z
ZSkpOwotICAgICAgICBpdGVyYXRlQ2xpZW50cyhDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRSYXdSZXNvdXJjZUNsaWVudD4obV9jbGllbnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzdGQ6Om1ha2VfdW5p
cXVlPFJlc291cmNlUmVzcG9uc2U+KHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hl
ZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMp
LCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUo
cmVxdWVzdCksIG1ha2VVbmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVz
cG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgICAg
IENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3Bv
bnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGU0
MzBlNDQ3YWM0OTQ2MzZjOTg0ZTc0ZDQwYjkxZTY1Y2RlYmI1MGIuLjA1NjdkMWQ1ZGU4YzZmMTNl
MTg2ODQ0YWVkNzU1NzVjZjE3ZTE3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNTQ2LDcgKzU0Niw3IEBAIGJvb2wgQ2FjaGVkUmVz
b3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAg
ICAgIC8vIFRoZXJlZm9yZSwgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgc2VuZGluZyBjYWxsYmFj
a3Mgb24gYSBjYWNoZSBoaXQgbGlrZSBvdGhlciBDYWNoZWRSZXNvdXJjZXMsCiAgICAgICAgIC8v
IHdlIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kIGVuc3VyZSB3ZSBuZXZlciBmaW5pc2ggc3lu
Y2hyb25vdXNseS4KICAgICAgICAgQVNTRVJUKCFtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmNv
bnRhaW5zKCZjbGllbnQpKTsKLSAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQo
JmNsaWVudCwgc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsIGNsaWVudCkpOworICAg
ICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50LCBtYWtlVW5pcXVlPENh
bGxiYWNrPigqdGhpcywgY2xpZW50KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMjI5
YTE0MmQ2NDQxM2NlYmFlZmFjNTI3MTBiYjJiZjhkZGVkZjdiZS4uMmZmZTJiNDE4Nzk5N2VlZmRk
NDE1ZTBlZGJlODAyZGMxNzJjYWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKQEAgLTM4MSw5ICszODEsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJj
ZSB7CiB9OwogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2sgewotI2lmICFDT01QSUxF
UihNU1ZDKQogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotI2VuZGlmCiBwdWJsaWM6CiAg
ICAgQ2FsbGJhY2soQ2FjaGVkUmVzb3VyY2UmLCBDYWNoZWRSZXNvdXJjZUNsaWVudCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA4NDNhOWQxZjlkNmM4NWYxMDAwYTJjNDBmMTk2NGI0N2EyZWIxYzdhLi5iMzRi
OGZkMzVjMTA3N2E1NDUyYWJiMzQzMjM2MWI0Y2MzZDExYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc5MSw3
ICs3OTEsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdQogICAgIC8vIEVudHJ5IHBvaW50IHRv
IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNtYWluLWZldGNoLgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG9yaWdpbmFsUmVxdWVzdDsKICAgICBpZiAoQ2FjaGVk
UmVzb3VyY2U6OnNob3VsZFVzZVBpbmdMb2FkKHR5cGUpIHx8IHJlcXVlc3Qub3B0aW9ucygpLmRl
c3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nKSB7Ci0g
ICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0
PihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKKyAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0g
bWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpOwog
ICAgICAgICBvcmlnaW5hbFJlcXVlc3QtPmNsZWFySFRUUFJlZmVycmVyKCk7CiAgICAgICAgIG9y
aWdpbmFsUmVxdWVzdC0+Y2xlYXJIVFRQT3JpZ2luKCk7CiAgICAgfQpAQCAtMTM5MSw3ICsxMzkx
LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWwKICAgICAgICAgcmVzb3VyY2VWYWx1ZS0+aW5j
cmVhc2VQcmVsb2FkQ291bnQoKTsKIAogICAgICAgICBpZiAoIW1fcHJlbG9hZHMpCi0gICAgICAg
ICAgICBtX3ByZWxvYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNv
dXJjZSo+PigpOworICAgICAgICAgICAgbV9wcmVsb2FkcyA9IG1ha2VVbmlxdWU8TGlzdEhhc2hT
ZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKICAgICAgICAgbV9wcmVsb2Fkcy0+YWRkKHJlc291cmNl
VmFsdWUuZ2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gcmVzb3VyY2U7CkBAIC0xNDMzLDcgKzE0
MzMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRzKENsZWFyUHJl
bG9hZHNNb2RlIG1vZGUpCiAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgIGlmICht
b2RlID09IENsZWFyUHJlbG9hZHNNb2RlOjpDbGVhclNwZWN1bGF0aXZlUHJlbG9hZHMgJiYgcmVz
b3VyY2UtPmlzTGlua1ByZWxvYWQoKSkgewogICAgICAgICAgICAgaWYgKCFyZW1haW5pbmdMaW5r
UHJlbG9hZHMpCi0gICAgICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOworICAgICAgICAgICAg
ICAgIHJlbWFpbmluZ0xpbmtQcmVsb2FkcyA9IG1ha2VVbmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVk
UmVzb3VyY2UqPj4oKTsKICAgICAgICAgICAgIHJlbWFpbmluZ0xpbmtQcmVsb2Fkcy0+YWRkKHJl
c291cmNlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5o
CmluZGV4IDcwY2IxYWZhNGNmMWQzYTZlNjQyYThhZTlkYjg0NDhmODRkMTRiZDYuLjIyYWU3MmQ4
ZmY1ZWY3MjlhMTY0Yzc2YTRmZGJiMGU0OWQ3MWY0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCkBAIC0z
NSw3ICszNSw4IEBAIGNsYXNzIENhY2hlZFNWR0RvY3VtZW50OwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwogCi1jbGFzcyBDYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZSA6IHB1YmxpYyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCB7Citj
bGFzcyBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSBmaW5hbCA6IHB1YmxpYyBDYWNoZWRTVkdE
b2N1bWVudENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGQzYjgwNTE0MjNjM2Zj
NTI0YmQ4YjZmNTVmMzVhNmFjMjIzMGIyMDIuLjNkZWFkNDZjMWQ0ZDc4Y2Y3Y2RmMDNhZmZjYmVm
MzkyNzgyNjNjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcApAQCAtODYsNyArODYsNyBAQCBhdXRvIE1lbW9yeUNhY2hlOjplbnN1cmVTZXNzaW9uUmVz
b3VyY2VNYXAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiBDYWNoZWRSZQogICAgIEFTU0VS
VChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKICAgICBhdXRvJiBtYXAgPSBtX3Nlc3Npb25SZXNvdXJj
ZXMuYWRkKHNlc3Npb25JRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghbWFw
KQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlTWFwPigpOwor
ICAgICAgICBtYXAgPSBtYWtlVW5pcXVlPENhY2hlZFJlc291cmNlTWFwPigpOwogICAgIHJldHVy
biAqbWFwOwogfQogCkBAIC0yMTYsNyArMjE2LDcgQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAog
ICAgIHJlbW92ZUltYWdlRnJvbUNhY2hlKHVybCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAv
LyBSZW1vdmUgY2FjaGUgZW50cnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCiAKICAgICBhdXRvIGJp
dG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7
Ci0gICAgYXV0byBjYWNoZWRJbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVy
bCwgYml0bWFwSW1hZ2UucHRyKCksIHNlc3Npb25JRCwgY29va2llSmFyLCBkb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbik7CisgICAgYXV0byBjYWNoZWRJbWFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkSW1h
Z2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCksIHNlc3Npb25JRCwgY29va2llSmFyLCBkb21haW5G
b3JDYWNoZVBhcnRpdGlvbik7CiAKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KGR1bW15Q2Fj
aGVkSW1hZ2VDbGllbnQoKSk7CiAgICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1h
cEltYWdlLT5kZWNvZGVkU2l6ZSgpKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCBhdXRvIE1lbW9yeUNh
Y2hlOjpscnVMaXN0Rm9yKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkgLT4gTFJVTGlzdCYKIAog
ICAgIG1fYWxsUmVzb3VyY2VzLnJlc2VydmVDYXBhY2l0eShxdWV1ZUluZGV4ICsgMSk7CiAgICAg
d2hpbGUgKG1fYWxsUmVzb3VyY2VzLnNpemUoKSA8PSBxdWV1ZUluZGV4KQotICAgICAgICBtX2Fs
bFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxMUlVMaXN0PigpKTsK
KyAgICAgICAgbV9hbGxSZXNvdXJjZXMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8TFJVTGlz
dD4oKSk7CiAgICAgcmV0dXJuICptX2FsbFJlc291cmNlc1txdWV1ZUluZGV4XTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaAppbmRleCA2MThlOTQyOTUwMTdk
YzNiODMwMzY1YzExNjc2MTUzOGIxZGI2MjM4Li4xNTAzZDc4ZTNhZjU5OTQ5NTRiMzNjMmE4MDg0
ZjRmZWE2MzAwNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZp
ZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIu
aApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBQcmV2aWV3TG9hZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmV2aWV3TG9hZGVyKTsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IGNyZWF0ZShSZXNvdXJj
ZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvUHJldmlld0xvYWRlci5tbQppbmRleCBmNmI4MjIxNzkxNmNhZDk1YmZlOTYwYmIzZTM3
ODRhMjcwYTliYTY3Li5jNWNhNWMyNWYxMWI0ZDhhOWNhOTNlZmM4ODkwOTkwN2Y2Yjc2NjA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCkBAIC04Niw3ICs4
Niw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlc291cmNlTG9hZGVyOihSZXNvdXJjZUxv
YWRlciYpcmVzb3VyY2VMb2FkZXIgcmVzb3VyY2VSCiAKICAgICBfcmVzb3VyY2VMb2FkZXIgPSBt
YWtlV2Vha1B0cihyZXNvdXJjZUxvYWRlcik7CiAgICAgX3Jlc3BvbnNlID0gcmVzb3VyY2VSZXNw
b25zZTsKLSAgICBfY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVydGVy
PihzZWxmLCBfcmVzcG9uc2UpOworICAgIF9jb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdD
b252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSk7CiAgICAgX2J1ZmZlcmVkRGF0YUFycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgX3Nob3VsZERlY2lkZVBv
bGljeUJlZm9yZUxvYWRpbmcgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNo
b3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCk7CiAKQEAgLTI0
Niw3ICsyNDYsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5l
Y3Rpb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycgogICAgIH0KIAogICAgIF9jbGll
bnQtPmRpZFJlcXVlc3RQYXNzd29yZChbc2VsZiwgcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpXSAoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkgewotICAgICAgICBfY29udmVydGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UsIHBhc3N3b3Jk
KTsKKyAgICAgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2Vs
ZiwgX3Jlc3BvbnNlLCBwYXNzd29yZCk7CiAgICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNv
bnZlcnRlcigpIGFwcGVuZERhdGFBcnJheTpfYnVmZmVyZWREYXRhQXJyYXkuZ2V0KCldOwogICAg
ICAgICBbX2NvbnZlcnRlci0+cGxhdGZvcm1Db252ZXJ0ZXIoKSBmaW5pc2hlZEFwcGVuZGluZ0Rh
dGFdOwogICAgIH0pOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFByZXZpZXdMb2FkZXI6On5QcmV2aWV3
TG9hZGVyKCkKIHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBQcmV2aWV3TG9hZGVyOjpj
cmVhdGUoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAgICAgQVNTRVJUKFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUo
cmVzcG9uc2UubWltZVR5cGUoKSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFByZXZp
ZXdMb2FkZXI+KGxvYWRlciwgcmVzcG9uc2UpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFByZXZp
ZXdMb2FkZXI+KGxvYWRlciwgcmVzcG9uc2UpOwogfQogCiBib29sIFByZXZpZXdMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKaW5kZXggZTZhZGI2N2RhOTQ4Njg2MjZm
ZTIwNmZmMTZlNjRkZGFjZTI3MDFmZS4uNjEzZTc4OTJiNDEwZjNiMmE0OTRlY2ZiNjgwMDBhYWMw
ZGM2NjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgVGV4dFRyYWNrTGlzdDsKIHN0cnVjdCBNZWRpYVNl
bGVjdGlvbk9wdGlvbjsKIAogY2xhc3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cyhQYWdlR3JvdXAmKTsKICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVuY2VzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzQ3
OWNhMWY5Y2IwN2Q0YWM3YjRiOWZiMjI4NTFmMGM5OTRiMTcxNC4uNGNjZGFiMDRiN2IzZjU1MzRj
ZWNjMmExOWVjMGE0YmNiN2FiMTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZXh0TWVudT4gQ29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51
KEV2ZW50CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250
ZXh0TWVudT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudT4oKTsKIH0KIAog
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCYgZXZlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGY2M2RhYTdm
NjM0NzI1NTg4NzNkYjNiNTgzYmMyNTEyYTE3NzUyN2EuLmNkYzc0ZjZkZTA5ZTkzZGU5YWFiOTIz
NTZlZjJmYmY0NGRkMmQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5IGZp
bmFsIDogcHVibGljIFJlZ2lvbk92ZXJsYXkgewogCiBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVy
bGF5Ojp1cGRhdGVSZWdpb24oKQogewotICAgIGF1dG8gcmVnaW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxSZWdpb24+KCk7CisgICAgYXV0byByZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAg
ICAKICAgICBmb3IgKGNvbnN0IEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYg
KCFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAppbmRleCA0OGMwNzM0NzcwZWIxMTBjMWM1ZDg0NTNkZDA4Nzk5MmU1NjQ5
YTFlLi5kMjBiOThjNDE1ZWVjODI3NmY4OTAwZjI0YzY3YTk3ZjEwMWQwYTA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgRXZlbnRIYW5kbGVy
OjpFdmVudEhhbmRsZXIoRnJhbWUmIGZyYW1lKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1f
cGVuZGluZ01vbWVudHVtV2hlZWxFdmVudHNUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6Y2xl
YXJMYXRjaGVkU3RhdGUpCiAjZW5kaWYKLSAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fYXV0b3Njcm9s
bENvbnRyb2xsZXIobWFrZVVuaXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKICNpZiAhRU5B
QkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgLCBtX2Zha2VNb3VzZU1vdmVFdmVudFRpbWVyKCp0
aGlzLCAmRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMjMzNzI5NDJiMzc2M2Q5MjkzZDI2NWIz
NWFjYzE1MjVlMzRjYzAwZi4uYTVlNWVkZTBiNGI3NDdlNDc5NGRjNzk0MDZhZWZjY2JiMzg1ZGQ2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTI5MSw3ICsxMjkxLDcgQEAgUmVu
ZGVyQm94KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiB2b2lkIEZyYW1l
Vmlldzo6YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1i
ZWRkZWRPYmplY3QpCiB7CiAgICAgaWYgKCFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlKQotICAg
ICAgICBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFz
aFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+PigpOworICAgICAgICBtX2VtYmVkZGVkT2JqZWN0
c1RvVXBkYXRlID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+
PigpOwogCiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50ID0gZW1iZWRkZWRPYmpl
Y3QuZnJhbWVPd25lckVsZW1lbnQoKTsKICAgICBpZiAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVs
ZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpKSB7CkBAIC0xNDI3LDcgKzE0
MjcsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIpCiAgICAgYm9vbCBoYWRTbG93UmVwYWludE9iamVjdHMgPSBoYXNTbG93UmVw
YWludE9iamVjdHMoKTsKIAogICAgIGlmICghbV9zbG93UmVwYWludE9iamVjdHMpCi0gICAgICAg
IG1fc2xvd1JlcGFpbnRPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJl
bmRlckVsZW1lbnQqPj4oKTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBtYWtlVW5p
cXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyRWxlbWVudCo+PigpOwogCiAgICAgbV9zbG93UmVwYWlu
dE9iamVjdHMtPmFkZCgmcmVuZGVyZXIpOwogICAgIGlmIChoYWRTbG93UmVwYWludE9iamVjdHMp
CkBAIC0xNDYyLDcgKzE0NjIsNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRP
YmplY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB2b2lkIEZyYW1lVmlldzo6YWRkVmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBvYmplY3QpCiB7CiAg
ICAgaWYgKCFtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKQotICAgICAgICBtX3ZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0U2V0PigpOworICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gbWFr
ZVVuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0PigpOwogCiAgICAgaWYgKCFtX3Zp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5jb250YWlucyhvYmplY3QpKSB7CiAgICAgICAgIG1f
dmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmFkZChvYmplY3QpOwpAQCAtNDg2Niw3ICs0ODY2
LDcgQEAgU3RyaW5nIEZyYW1lVmlldzo6dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0
CiBib29sIEZyYW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9s
bGFibGVBcmVhKQogewogICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYXMpCi0gICAgICAgIG1fc2Ny
b2xsYWJsZUFyZWFzID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKKyAg
ICAgICAgbV9zY3JvbGxhYmxlQXJlYXMgPSBtYWtlVW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0Pigp
OwogICAgIAogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhcy0+YWRkKHNjcm9sbGFibGVBcmVhKS5p
c05ld0VudHJ5KSB7CiAgICAgICAgIHNjcm9sbGFibGVBcmVhU2V0Q2hhbmdlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKaW5kZXggNzMwOThm
MWZhMWYxMDcxZTYxZmNkM2FhNjUzNTMzMGQzZTg5YmY1OS4uZTg1OGM5MmNiZjhjMzFhMzIxYmYz
ODAwOTdhYmE1NWYxNTcwMDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXdMYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
d0xheW91dENvbnRleHQuY3BwCkBAIC01OTYsMTQgKzU5NiwxNCBAQCB2b2lkIEZyYW1lVmlld0xh
eW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiByb290KQogICAgIEFT
U0VSVCghbV9wYWludE9mZnNldENhY2hlRGlzYWJsZUNvdW50KTsKICAgICBBU1NFUlQoIWxheW91
dFN0YXRlKCkpOwogCi0gICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlckxheW91dFN0YXRlPihyb290KSk7CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFw
cGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihyb290KSk7CiB9CiAKIGJvb2wgRnJh
bWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlRm9yUGFnaW5hdGlvbklmTmVlZGVk
KFJlbmRlckJsb2NrRmxvdyYgbGF5b3V0Um9vdCkKIHsKICAgICBpZiAobGF5b3V0U3RhdGUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0
U3RhdGU6OklzUGFnaW5hdGVkOjpZZXMpKTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5k
KG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0
YXRlOjpJc1BhZ2luYXRlZDo6WWVzKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCkBAIC02
MTMsNyArNjEzLDcgQEAgYm9vbCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3Rh
dGUoUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2kKICAgICBhdXRvKiBsYXlvdXRT
dGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CiAgICAgaWYgKCFsYXlvdXRTdGF0ZSB8fCAhbmVl
ZHNGdWxsUmVwYWludCgpIHx8IGxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpIHx8IHJlbmRlcmVy
LmVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KCkKICAgICAgICAgfHwgbGF5b3V0U3RhdGUtPmxpbmVH
cmlkKCkgfHwgKHJlbmRlcmVyLnN0eWxlKCkubGluZUdyaWQoKSAhPSBSZW5kZXJTdHlsZTo6aW5p
dGlhbExpbmVHcmlkKCkgJiYgcmVuZGVyZXIuaXNSZW5kZXJCbG9ja0Zsb3coKSkpIHsKLSAgICAg
ICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91
dFN0YXRlPihtX2xheW91dFN0YXRlU3RhY2ssIHJlbmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQs
IHBhZ2VIZWlnaHRDaGFuZ2VkKSk7CisgICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQo
bWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJl
ciwgb2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yQmFzZS5jcHAKaW5kZXggOGMzYzUyYTA3MzUyMjc5MGNkMGM0YTYwZGMwNWU2MTQxMmMxOWFl
OS4uNTIyN2U0MmFjMDk2Y2U2OTI1ZDdlYzZhMThlNTE5MjVkMmUwMDZiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgU2VydmljZVdvcmtl
ckNvbnRhaW5lciYgTmF2aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcigpCiB7CiAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVu
YWJsZWQoKSk7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJDb250YWluZXIpCi0gICAgICAgIG1f
c2VydmljZVdvcmtlckNvbnRhaW5lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckNv
bnRhaW5lcj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CisgICAgICAgIG1fc2Vy
dmljZVdvcmtlckNvbnRhaW5lciA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5lcj4o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3NlcnZpY2VX
b3JrZXJDb250YWluZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDRkNGE0OWM3MzFhNGNh
ZjQ2ZWRlNjExNTc3Y2IzOWU2YmZmZjBhMjIuLmI4MjBlNDlkMzY2ZDcxNjkyNWE5NzNlMmIyOGM5
YjU4MmFmOTk3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjExLDI2ICsyMTEsMjYgQEAgc3Rh
dGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gcGFnZUluaXRpYWxB
Y3Rpdml0eVN0YXRlKCkKIH0KIAogUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VD
b25maWd1cmF0aW9uKQotICAgIDogbV9jaHJvbWUoc3RkOjptYWtlX3VuaXF1ZTxDaHJvbWU+KCp0
aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKLSAgICAsIG1fZHJhZ0NhcmV0
Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCisgICAg
OiBtX2Nocm9tZShtYWtlVW5pcXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5j
aHJvbWVDbGllbnQpKQorICAgICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8RHJh
Z0NhcmV0Q29udHJvbGxlcj4oKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9k
cmFnQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERyYWdDb250cm9sbGVyPigqdGhpcywgKnBh
Z2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQorICAgICwgbV9kcmFnQ29udHJvbGxlcihtYWtl
VW5pcXVlPERyYWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGll
bnQpKQogI2VuZGlmCi0gICAgLCBtX2ZvY3VzQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZv
Y3VzQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkKKyAgICAs
IG1fZm9jdXNDb250cm9sbGVyKG1ha2VVbmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFn
ZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAg
ICwgbV9jb250ZXh0TWVudUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNv
bnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQor
ICAgICwgbV9jb250ZXh0TWVudUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNvbnRy
b2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQogI2Vu
ZGlmCi0gICAgLCBtX3VzZXJJbnB1dEJyaWRnZShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJJbnB1dEJy
aWRnZT4oKnRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3Rv
ckNsaWVudCkpCisgICAgLCBtX3VzZXJJbnB1dEJyaWRnZShtYWtlVW5pcXVlPFVzZXJJbnB1dEJy
aWRnZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8SW5z
cGVjdG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVu
dCkpCiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotICAgICwgbV9wb2ludGVyQ2FwdHVyZUNv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlz
KSkKKyAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckNh
cHR1cmVDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NL
KQotICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVy
TG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKG1h
a2VVbmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1f
c2V0dGluZ3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcHJvZ3Jlc3Moc3RkOjpt
YWtlX3VuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1Ry
YWNrZXJDbGllbnQpKQotICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCisgICAgLCBtX3Byb2dyZXNzKG1ha2VVbmlxdWU8UHJv
Z3Jlc3NUcmFja2VyPigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkK
KyAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKG1ha2VVbmlxdWU8QmFja0ZvcndhcmRDb250
cm9sbGVyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVu
dCkpKQogICAgICwgbV9tYWluRnJhbWUoRnJhbWU6OmNyZWF0ZSh0aGlzLCBudWxscHRyLCBwYWdl
Q29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUpKQogICAgICwgbV9lZGl0b3JD
bGllbnQoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQpKQogICAgICwgbV9w
bHVnSW5DbGllbnQocGFnZUNvbmZpZ3VyYXRpb24ucGx1Z0luQ2xpZW50KQpAQCAtMjUwLDkgKzI1
MCw5IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikK
ICAgICAsIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQ
YWdlOjpkb21UaW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lckZpcmVkKQogICAgICwg
bV9hY3Rpdml0eVN0YXRlKHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKQogICAgICwgbV9hbHRl
cm5hdGl2ZVRleHRDbGllbnQocGFnZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KQotICAgICwgbV9jb25zb2xlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVDbGll
bnQ+KCp0aGlzKSkKKyAgICAsIG1fY29uc29sZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb25zb2xl
Q2xpZW50PigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2lu
c3BlY3RvckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMp
KQorICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8UGFnZURlYnVnZ2FibGU+
KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9zb2NrZXRQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uLnNvY2tldFByb3ZpZGVyKSkKICAgICAsIG1fY29va2llSmFyKFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24uY29va2llSmFyKSkKQEAgLTI2OCwxNiArMjY4LDE2IEBAIFBhZ2U6OlBh
Z2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fcGxheWJh
Y2tDb250cm9sc01hbmFnZXJVcGRhdGVUaW1lcigqdGhpcywgJlBhZ2U6OnBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyVXBkYXRlVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV9pc1V0aWxpdHlQYWdl
KGlzVXRpbGl0eVBhZ2VDaHJvbWVDbGllbnQoY2hyb21lKCkuY2xpZW50KCkpKQotICAgICwgbV9w
ZXJmb3JtYW5jZU1vbml0b3IoaXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IHN0ZDo6bWFrZV91
bmlxdWU8UGVyZm9ybWFuY2VNb25pdG9yPigqdGhpcykpCi0gICAgLCBtX2xvd1Bvd2VyTW9kZU5v
dGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29s
IGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeyBoYW5kbGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQ
b3dlck1vZGVFbmFibGVkKTsgfSkpCi0gICAgLCBtX3BlcmZvcm1hbmNlTG9nZ2luZyhzdGQ6Om1h
a2VfdW5pcXVlPFBlcmZvcm1hbmNlTG9nZ2luZz4oKnRoaXMpKQorICAgICwgbV9wZXJmb3JtYW5j
ZU1vbml0b3IoaXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IG1ha2VVbmlxdWU8UGVyZm9ybWFu
Y2VNb25pdG9yPigqdGhpcykpCisgICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyKG1ha2VVbmlx
dWU8TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxl
ZCkgeyBoYW5kbGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQb3dlck1vZGVFbmFibGVkKTsgfSkp
CisgICAgLCBtX3BlcmZvcm1hbmNlTG9nZ2luZyhtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTG9nZ2lu
Zz4oKnRoaXMpKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xT
KSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pKQotICAgICwgbV9zZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJv
bGxlcj4oKnRoaXMpKQorICAgICwgbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlx
dWU8U2VydmljZXNPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3Jl
Y2VudFdoZWVsRXZlbnREZWx0YUZpbHRlcihXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgp
KQotICAgICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlT3Zl
cmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKG1h
a2VVbmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKEFQUExF
X1BBWSkKLSAgICAsIG1fcGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVu
dENvb3JkaW5hdG9yPigqcGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50
KSkKKyAgICAsIG1fcGF5bWVudENvb3JkaW5hdG9yKG1ha2VVbmlxdWU8UGF5bWVudENvb3JkaW5h
dG9yPigqcGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkKICNlbmRp
ZgogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JDb29yZGluYXRv
cihtYWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpKSkKQEAgLTU2MSw3ICs1
NjEsNyBAQCB2b2lkIFBhZ2U6OmluaXRHcm91cCgpCiB7CiAgICAgQVNTRVJUKCFtX3NpbmdsZVBh
Z2VHcm91cCk7CiAgICAgQVNTRVJUKCFtX2dyb3VwKTsKLSAgICBtX3NpbmdsZVBhZ2VHcm91cCA9
IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUdyb3VwPigqdGhpcyk7CisgICAgbV9zaW5nbGVQYWdlR3Jv
dXAgPSBtYWtlVW5pcXVlPFBhZ2VHcm91cD4oKnRoaXMpOwogICAgIG1fZ3JvdXAgPSBtX3Npbmds
ZVBhZ2VHcm91cC5nZXQoKTsKIH0KIApAQCAtMjY1NCw3ICsyNjU0LDcgQEAgdm9pZCBQYWdlOjpz
ZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIH0KIAogICAg
IGlmICghbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSAmJiBtX3NldHRpbmdzLT5hY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZCgpKQotICAgICAgICBtX3Jlc291cmNlVXNhZ2VPdmVybGF5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMpOworICAgICAgICBtX3Jl
c291cmNlVXNhZ2VPdmVybGF5ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRo
aXMpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5j
cHAKaW5kZXggMTg5MWU5NTliMzc4YTM4MzJkNGNjMWY4ZjQ4YThjZmQ2OGQ5NzgyOS4uNGU0ODBj
MGMyMGU0MGMyYjk2ZDRjM2VjYTlmYTQzNWUyYjlhZWYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKQEAgLTE2MSw5ICsxNjEsOSBAQCB2b2lkIFBhZ2VDb25z
b2xlQ2xpZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIGNvbgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PiBtZXNzYWdlOwogCiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlw
ZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCBy
ZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3Nh
Z2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOwog
ICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRl
eHQsIHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVt
YmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2cs
IGxldmVsLCBtZXNzYWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBz
dWdnZXN0ZWRDb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICBh
ZGRNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQg
UGFnZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5
cGUsIE1lc3NhZ2VMZXZlbCBsCiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGJvb2wgZ290
TWVzc2FnZSA9IGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0
KTsKIAotICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2VUZXh0LCBhcmd1bWVudHMuY29weVJlZigpLCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhl
Yyk7CiAKICAgICBTdHJpbmcgdXJsID0gbWVzc2FnZS0+dXJsKCk7CiAgICAgdW5zaWduZWQgbGlu
ZU51bWJlciA9IG1lc3NhZ2UtPmxpbmUoKTsKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIFBhZ2VD
b25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlw
dEFyZ3VtZW50cz4mJgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRhdGFVUkwuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICBhZGRNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6Oklt
YWdlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUgc2NyZWVuc2hvdCJf
cywgV1RGTW92ZShhcmd1bWVudHMpKSk7CisgICAgICAgICAgICBhZGRNZXNzYWdlKG1ha2VVbmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1
cmUgc2NyZWVuc2hvdCJfcywgV1RGTW92ZShhcmd1bWVudHMpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBQYWdlQ29uc29s
ZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1
bWVudHM+JiYKICAgICBmb3IgKHNpemVfdCBpID0gKCF0YXJnZXQgPyAwIDogMSk7IGkgPCBhcmd1
bWVudHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhZGp1c3RlZEFyZ3VtZW50cy5h
cHBlbmQoeyBzdGF0ZS0+dm0oKSwgYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpIH0pOwogICAgIGFy
Z3VtZW50cyA9IFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKCpzdGF0ZSwgV1RGTW92ZShhZGp1c3Rl
ZEFyZ3VtZW50cykpOwotICAgIGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6
SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsK
KyAgICBhZGRNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6
OkxvZywgZGF0YVVSTCwgV1RGTW92ZShhcmd1bWVudHMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCA5MTkzNjA0NWMyZmFmNzZj
YWM1ZTJjNjllNjIzM2YyY2UzMGJmOWIxLi4xMjhjMThmMTRiOTA4ZTcxYmM3Y2VmYjM5NjIwN2Zl
YmJjMDBmMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0xMTYsOSArMTE2LDkg
QEAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyYgUGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMo
KQogewogICAgIGlmICghbV9jYXB0aW9uUHJlZmVyZW5jZXMpIHsKICNpZiBQTEFURk9STShNQUMp
IHx8IEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi0gICAgICAgIG1fY2FwdGlv
blByZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRj4oKnRoaXMpOworICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKICNlbHNlCi0gICAgICAgIG1f
Y2FwdGlvblByZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVu
Y2VzPigqdGhpcyk7CisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxD
YXB0aW9uVXNlclByZWZlcmVuY2VzPigqdGhpcyk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZS5jcHAKaW5kZXggNmMxNWIzZmFhODNmNWNhZTBkOTE3NmQwMGM4YWZj
MTViNzY2OTMxNi4uY2JiYWMyMWQ0MDA1YjFiMGUxMTgwMjJmN2FhMTRhOGJjZmVkODUyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFBl
cmZvcm1hbmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZpcmVkKCkKIEV4Y2VwdGlv
bk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAg
ICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91
bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5p
cXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5n
LT5tYXJrKG1hcmtOYW1lKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMjc5
LDE0ICsyNzksMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3Qg
U3RyaW5nJiBtYXJrTmFtZSkKIHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWFya3MoY29uc3QgU3Ry
aW5nJiBtYXJrTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2Vy
VGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1f
dXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRp
bWluZy0+Y2xlYXJNYXJrcyhtYXJrTmFtZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZv
cm1hbmNlOjptZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYg
c3RhcnRNYXJrLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1p
bmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4o
KnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0
aGlzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5nLT5tZWFzdXJlKG1lYXN1cmVO
YW1lLCBzdGFydE1hcmssIGVuZE1hcmspOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CkBAIC0zMDAsNyArMzAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1lYXN1
cmUoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgY29uc3QgU3RyaW5nJgogdm9pZCBQZXJmb3Jt
YW5jZTo6Y2xlYXJNZWFzdXJlcyhjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lKQogewogICAgIGlm
ICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxV
c2VyVGltaW5nPigqdGhpcyk7CiAgICAgbV91c2VyVGltaW5nLT5jbGVhck1lYXN1cmVzKG1lYXN1
cmVOYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5m
b3JtYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKaW5k
ZXggOTlhNDM3MmU1NGQ4NDAyOWJhZmJmOWI4ZjdhNTgyMDAxZmE2M2ExYi4uMTZiY2YwNDM5MGEx
NzBmM2RlNzgyNjUwYzJmYzI1MjJjZjUwNTRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdh
cm1JbmZvcm1hdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBQcmV3YXJtSW5mb3JtYXRpb24geworICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlv
biBmb250Q2FjaGU7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggMDM3
MGYyODg3ZjY1YjU3YjNjZDg5N2U0ZmM2OWU4YTJlZmI4NzVkZi4uNDQyOTFhZWZhMzdjOGE3YTg0
NDhiZWMzOWFlZWFjMjQzOWVjNDc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNw
cApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0
aW5hdGlvbnMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIERvCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghbV9saW5rZWREZXN0aW5hdGlvbnMpIHsKLSAgICAgICAgbV9saW5r
ZWREZXN0aW5hdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxl
bWVudD4+PigpOworICAgICAgICBtX2xpbmtlZERlc3RpbmF0aW9ucyA9IG1ha2VVbmlxdWU8SGFz
aE1hcDxTdHJpbmcsIFJlZjxFbGVtZW50Pj4+KCk7CiAgICAgICAgIGNvbGxlY3RMaW5rZWREZXN0
aW5hdGlvbnMoZG9jdW1lbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCmluZGV4IDU2YTAxMWM0Y2VlOTk3ODk5MDFmYWQz
NjMwMmJlMTBjMzQ1NjY1MjcuLjNiODgxZGZiYjE3MTdmNGU0MTFhNmM1MzQ0NTk1ZmJkM2FiNDMw
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
ci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6Omlz
U2NoZWR1bGVkKCkgY29uc3QKIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzdGFydFRp
bWVyKFNlY29uZHMgZGVsYXkpCiB7CiAgICAgQVNTRVJUKCFpc1NjaGVkdWxlZCgpKTsKLSAgICBt
X3JlZnJlc2hUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmUmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyOjpkaXNwbGF5UmVmcmVzaEZpcmVkKTsKKyAgICBtX3JlZnJlc2hUaW1l
ciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpk
aXNwbGF5UmVmcmVzaEZpcmVkKTsKICAgICBtX3JlZnJlc2hUaW1lci0+c3RhcnRPbmVTaG90KGRl
bGF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyLmgKaW5kZXggZmFkZTYyZmM3ODdlZTQ4OTc5YWY2ZGQ4MjY2Mjc3OTgwNGQzNzUxNy4uNmYw
NjA4MTc4MjZlYzU2YzZlZThhNWY4Y2QzOTQ0ZWMyZDQxOTBkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNs
YXNzIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcgogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPiBjcmVhdGUoUGFnZSYgcGFnZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlcj4ocGFnZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcj4ocGFnZSk7CiAgICAgfQogCiAgICAgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKFBh
Z2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaAppbmRleCA5NWIxYzhiNWJlODNk
ODliMjQ5NzllYWVkOWI5ZDRlOTBkM2Y0Zjg3Li5lZWViZjliOWU2MWJkNTg4ZmQzYmE5OWZhYjE1
MDE5MWNjOGY2NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCkBAIC00MCw2
ICs0MCw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIAogc3RydWN0IFJlc2l6
ZU9ic2VydmVyRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFZlY3RvcjxXZWFrUHRyPFJlc2l6ZU9ic2VydmVyPj4gb2JzZXJ2ZXJzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCA0MjM0MTgyODBlYTJlZTNjOWJmZGZj
OTFjZDEyN2I5NjhlYjFlMWJmLi4wZGViMDY0MTQ4Zjk3MjZjZDM4YjQxMDA1ZDUyMjk3MjYwYzFj
NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMTg5LDcgKzE4
OSw3IEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihv
cmlnaW5BY2Nlc3NNYXBMb2NrKTsKICAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4oKTsKKyAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOwog
CiAgICAgT3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKICAgICBsaXN0LT5hcHBlbmQoT3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Q
cm90b2NvbCwgZGVzdGluYXRpb25Eb21haW4sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zID8g
T3JpZ2luQWNjZXNzRW50cnk6OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpE
aXNhbGxvd1N1YmRvbWFpbnMsIE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVhdElQQWRkcmVzc0FzSVBB
ZGRyZXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggYjY4NDg5NmYz
OTg4NDYyNTRhMTc5N2FkY2RlZDY2NjYwNWU4NWQ1Yy4uMjdlZWE2YzBhYjkzOGViYzhmOTY1ZGFj
YjgyMDMxMTQ0MzE2MGI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
c0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAt
NjgsNyArNjgsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBsYXlvdXRTY2hlZHVsZVRocmVzaG9s
ZCA9IDI1MF9tczsKIAogU2V0dGluZ3NCYXNlOjpTZXR0aW5nc0Jhc2UoUGFnZSogcGFnZSkKICAg
ICA6IG1fcGFnZShudWxscHRyKQotICAgICwgbV9mb250R2VuZXJpY0ZhbWlsaWVzKHN0ZDo6bWFr
ZV91bmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKKyAgICAsIG1fZm9udEdlbmVyaWNGYW1p
bGllcyhtYWtlVW5pcXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCiAgICAgLCBtX2xheW91dElu
dGVydmFsKGxheW91dFNjaGVkdWxlVGhyZXNob2xkKQogICAgICwgbV9taW5pbXVtRE9NVGltZXJJ
bnRlcnZhbChET01UaW1lcjo6ZGVmYXVsdE1pbmltdW1JbnRlcnZhbCgpKQogICAgICwgbV9zZXRJ
bWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyKCp0aGlzLCAmU2V0dGluZ3NCYXNlOjppbWFnZUxvYWRp
bmdTZXR0aW5nc1RpbWVyRmlyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1
c3BlbmRhYmxlVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5o
CmluZGV4IDU1ODQ0MzQwNzgzNDZmYjliNTdhNmVhNTlhZmNlMjdhNjI0MGI1NWEuLjNjM2Q0OWUw
NThhYjEzMTc0N2ViNDliYjBjOTNhMGZkMjk0NTE4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3Vz
cGVuZGFibGVUaW1lci5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFN1c3BlbmRhYmxlVGltZXIgOiBwcml2YXRlIFRpbWVyQmFzZSwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgU3VzcGVuZGFibGVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAg
dmlydHVhbCB+U3VzcGVuZGFibGVUaW1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IGI5Y2U5OGNjNmNhNWMyNDU2Y2RiOTRmNWRjNDFi
NGQyYjUwZTk4ZjYuLjY1MjMxMWQ3YTU1ZjU1MDdhMDVhYTQzYjYyYzgwMjA4NzIyZGJhZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmZvckVhY2hVc2VyTWVzc2Fn
ZUhhbmRsZXIoRnVuY3Rpb248dm9pZChjb25zdCBVc2VyTWUKIAogdm9pZCBVc2VyQ29udGVudENv
bnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1bmlx
dWVfcHRyPFVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQpCiB7Ci0gICAgYXV0byYgc2NyaXB0c0luV29y
bGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFVzZXJTY3JpcHRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRv
JiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0
dXJuIG1ha2VVbmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIHNjcmlwdHNJbldvcmxkLT5hcHBlbmQoV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAg
LTEwMCw3ICsxMDAsNyBAQCB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNj
cmlwdHMoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIAogdm9pZCBVc2VyQ29udGVudENvbnRyb2xs
ZXI6OmFkZFVzZXJTdHlsZVNoZWV0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVl
X3B0cjxVc2VyU3R5bGVTaGVldD4gdXNlclN0eWxlU2hlZXQsIFVzZXJTdHlsZUluamVjdGlvblRp
bWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBhdXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3Vz
ZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxVc2VyU3R5bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8m
IHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFsm
XSB7IHJldHVybiBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigpOyB9KS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgc3R5bGVTaGVldHNJbldvcmxkLT5hcHBlbmQoV1RGTW92ZSh1c2VyU3R5
bGVTaGVldCkpOwogCiAgICAgaWYgKGluamVjdGlvblRpbWUgPT0gSW5qZWN0SW5FeGlzdGluZ0Rv
Y3VtZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRh
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNw
cAppbmRleCBmMjU5YWViMWEwYTllNWNlN2ExMzRmMGQxMjY5ZWMzMTRjOWE5YzMxLi4zMDRkOTRh
NzViZjM2MWQ4ZGQ0NmY2YWZmYWZlMzFjM2VmODJhNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCkBAIC00Myw5ICs0Myw5IEBAIFdoZWVsRXZl
bnREZWx0YUZpbHRlcjo6fldoZWVsRXZlbnREZWx0YUZpbHRlcigpID0gZGVmYXVsdDsKIHN0ZDo6
dW5pcXVlX3B0cjxXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+IFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6
Y3JlYXRlKCkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8V2hlZWxFdmVudERlbHRhRmlsdGVyTWFjPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdo
ZWVsRXZlbnREZWx0YUZpbHRlck1hYz4oKTsKICNlbHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QmFzaWNXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QmFzaWNXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+KCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVy
LmNwcAppbmRleCAxNDQ2NjNjYWU5NTk3OWNmY2M3YzRhMjI0MmUxZDE2MWQ2MTAyOTI1Li4xM2Mz
MWY1NzY0YjdiMjI0YTJiN2VhNTVhZTMzYTZiMzk4NmI5NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcApA
QCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgQ1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmFu
aW1hdGlvbldpbGxCZVJlbW92ZWQoQW5pbWF0aW9uQmFzZSYgYW5pbWF0CiB9CiAKIENTU0FuaW1h
dGlvbkNvbnRyb2xsZXI6OkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIoRnJhbWUmIGZyYW1lKQotICAg
IDogbV9kYXRhKHN0ZDo6bWFrZV91bmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+
KGZyYW1lKSkKKyAgICA6IG1fZGF0YShtYWtlVW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlPihmcmFtZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCA3NGVlZGM5OTY2ZTlmODFh
Y2I5OTZjZjM3Njk4M2RhYjY4NTU0MGM2Li5iYWViMjQ3NjU3MTY3MzdiODRhMWNjOGYxOWRlMDE3
M2YzNjdlOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xMTcsOSArMTE3LDkgQEAgc3RhdGljIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5
QmxlbmRpbmdDbGkKIHsKICAgICBBU1NFUlQoZnJvbSAmJiB0byk7CiAgICAgaWYgKGZyb20tPnN0
eWxlKCkgIT0gdG8tPnN0eWxlKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNo
YWRvd0RhdGE+KCp0byk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCp0
byk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChmcm9t
LT5sb2NhdGlvbigpLCB0by0+bG9jYXRpb24oKSwgcHJvZ3Jlc3MpLAorICAgIHJldHVybiBtYWtl
VW5pcXVlPFNoYWRvd0RhdGE+KGJsZW5kKGZyb20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlvbigp
LCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kKGZyb20tPnJhZGl1cygpLCB0by0+cmFkaXVzKCks
IHByb2dyZXNzKSwKICAgICAgICAgYmxlbmQoZnJvbS0+c3ByZWFkKCksIHRvLT5zcHJlYWQoKSwg
cHJvZ3Jlc3MpLAogICAgICAgICBibGVuZEZ1bmMoYW5pbSwgZnJvbS0+c3R5bGUoKSwgdG8tPnN0
eWxlKCksIHByb2dyZXNzKSwKQEAgLTk3NCwxNSArOTc0LDE1IEBAIGNsYXNzIFByb3BlcnR5V3Jh
cHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBl
ckJhc2UKICAgICBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0
eUlEIHByb3AsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZv
aWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpLAogICAgICAgICBjb25zdCBD
b2xvciYgKFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVy
U3R5bGU6Oip2aXNpdGVkU2V0dGVyKShjb25zdCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlv
blByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKLSAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtl
X3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAg
ICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJD
b2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCisgICAgICAgICwgbV93
cmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0
dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFw
cGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAg
ICB9CiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJ
RCBwcm9wLCBNYXliZUludmFsaWRDb2xvclRhZywgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6
KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IENvbG9y
JiksCiAgICAgICAgIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgp
IGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikp
CiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAs
IG1fd3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENv
bG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCi0gICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihz
dGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCB2
aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKKyAgICAgICAgLCBtX3dyYXBwZXIobWFrZVVu
aXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0
ZXIpKQorICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBw
ZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikp
CiAgICAgewogICAgIH0KICAgICBib29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29u
c3QgUmVuZGVyU3R5bGUqIGIpIGNvbnN0IG92ZXJyaWRlCkBAIC0xMjI5LDE5ICsxMjI5LDE5IEBA
IGNsYXNzIEZpbGxMYXllcnNQcm9wZXJ0eVdyYXBwZXIgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVy
dHlXcmFwcGVyQmFzZSB7CiAgICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb25YOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdy
YXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVy
Pihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRp
b24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRYT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3Jv
dW5kWE9yaWdpbiwgRWRnZTo6UmlnaHQpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0
eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihw
cm9wZXJ0eSwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRpb24s
ICZGaWxsTGF5ZXI6OmJhY2tncm91bmRYT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5k
WE9yaWdpbiwgRWRnZTo6UmlnaHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4o
cHJvcGVydHksICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9u
LCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWU9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3Vu
ZFlPcmlnaW4sIEVkZ2U6OkJvdHRvbSk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5
V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHBy
b3BlcnR5LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwg
JkZpbGxMYXllcjo6YmFja2dyb3VuZFlPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRZ
T3JpZ2luLCBFZGdlOjpCb3R0b20pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6
Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RmlsbExheWVyUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+Pihwcm9wZXJ0eSwgJkZpbGxM
YXllcjo6c2l6ZUxlbmd0aCwgJkZpbGxMYXllcjo6c2V0U2l6ZUxlbmd0aCk7CisgICAgICAgICAg
ICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyPExlbmd0aFNpemU+Pihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6c2l6ZUxlbmd0aCwg
JkZpbGxMYXllcjo6c2V0U2l6ZUxlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZToKLSAgICAgICAgICAgIG1fZmlsbExheWVy
UHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJTdHlsZUltYWdlUHJv
cGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNl
dEltYWdlKTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVu
aXF1ZTxGaWxsTGF5ZXJTdHlsZUltYWdlUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxM
YXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzcwLDcgKzE3NzAsNyBA
QCBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcCgpCiAgICAgICAgICAgICBsb25naGFuZFdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZCht
X3Byb3BlcnR5V3JhcHBlcnNbd3JhcHBlckluZGV4XS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3ZlKGxvbmdoYW5kV3Jh
cHBlcnMpKSk7CisgICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQobWFr
ZVVuaXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIFdURk1vdmUobG9u
Z2hhbmRXcmFwcGVycykpKTsKICAgICAgICAgaW5kZXhGcm9tUHJvcGVydHlJRChwcm9wZXJ0eUlE
KSA9IGFuaW1hdGFibGVMb25naGFuZFByb3BlcnRpZXNDb3VudCArIGk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5k
ZXggNzA0N2U4M2RlNzg1ZGI4MWI2ZDk5MGE5NDgzN2JhNzFkNzI4MjlhMC4uOGYwZjZiZjUzYjAz
ZTA4ZjcwMzMxNjZlYjhjNzRkNmJmOTcyODM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBo
ZWFkZXIsIENvbnRlbnRTZWN1cmkKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVT
b3VyY2VTZWxmKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBt
X3NlbGZTb3VyY2VQcm90b2NvbCA9IHNlY3VyaXR5T3JpZ2luLnByb3RvY29sKCk7Ci0gICAgbV9z
ZWxmU291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+
KCp0aGlzLCBtX3NlbGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1
cml0eU9yaWdpbi5wb3J0KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgbV9z
ZWxmU291cmNlID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlz
LCBtX3NlbGZTb3VyY2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9y
aWdpbi5wb3J0KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CiB9CiAKIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphcHBseVBvbGljeVRvU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZS5oCmluZGV4IGE4ZjFkNGYwYmRlMTRmMTRiODhhYTM5NDBlZGQ4Yzg5NjI2
MWUzZGUuLmJiZDkxODllMjQ4MzRkYWNjOGQ3YmFlMTVjYzU4MTZjYTMyMGNmMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QmIGRpcmVjdGl2ZUxpc3QsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdC5jcHAKaW5kZXggZGRiZDhjZGUyNzgwZTkyZGJhMjBlMGFiZDk5Y2YwNDk4NDNm
NGM0ZC4uYzAxNTZkZGYwMWM5NDdlNTA0YjU2OWQwYTQxMTY5OGM1NThmM2VmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0KENv
bnRlbnRTZQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdD4gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKENvbnRlbnRT
ZWN1cml0eVBvbGljeSYgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3Vy
aXR5UG9saWN5SGVhZGVyVHlwZSB0eXBlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlBvbGljeUZy
b20gZnJvbSkKIHsKLSAgICBhdXRvIGRpcmVjdGl2ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CisgICAgYXV0byBk
aXJlY3RpdmVzID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
Pihwb2xpY3ksIHR5cGUpOwogICAgIGRpcmVjdGl2ZXMtPnBhcnNlKGhlYWRlciwgZnJvbSk7CiAK
ICAgICBpZiAoIWNoZWNrRXZhbChkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUoZGlyZWN0
aXZlcy0+bV9zY3JpcHRTcmMuZ2V0KCkpKSkgewpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uCiAgICAgICAgIG1fcG9saWN5LnJlcG9ydER1cGxpY2F0ZURpcmVjdGl2
ZShuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBkaXJlY3RpdmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2YWx1ZSk7CisgICAgZGly
ZWN0aXZlID0gbWFrZVVuaXF1ZTxDU1BEaXJlY3RpdmVUeXBlPigqdGhpcywgbmFtZSwgdmFsdWUp
OwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFwcGx5U2Fu
ZGJveFBvbGljeShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2FuZGJveFBvbGlj
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmgK
aW5kZXggMWMyYjRkMDhlNmRiMjQzMDUyOTFhMWVhMWM4NmViNjM2ZTNmMzUyNi4uODQ5NDg0MjY0
ZTkxNzMwZjdhNjkwOThkZjNkN2RhZDE0OTJkY2ViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3Mg
RE9NVGltZXI7CiBjbGFzcyBFbGVtZW50OwogCiBjbGFzcyBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q29udGVudENoYW5nZU9ic2VydmVyPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udGVudENoYW5nZU9ic2VydmVy
KERvY3VtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRp
bWVySG9sZGluZ1RhbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGlu
Z1RhbmsuaAppbmRleCBiNjIxODRmZTE3OTQyZGE5NDg1OWE4MDJjZWZkZTc2ZTI0MmQzZTRjLi5i
YmY3OTQ1YWFhNDk5YTc2YjdlMTJhYjNjNzVkNTk0NDIxZTQ1ZWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5oCkBAIC0zNSw2ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTVRpbWVyOwogCiBjbGFzcyBET01UaW1lckhvbGRp
bmdUYW5rIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01U
aW1lckhvbGRpbmdUYW5rKCk7CiAgICAgfkRPTVRpbWVySG9sZGluZ1RhbmsoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXgu
Y3BwCmluZGV4IDRmZGY3NTZjMDIxOTg4NTMzYjJmMTI1NWM5MWE0ZWNjOTE0ODRmYTQuLmMwN2Ix
Mjc2OWNkMDRiYTdiMzFmODhjNDZhOWYwNmI2YWQ2YjQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcApAQCAt
NzAsNiArNzAsNyBAQCBzdGF0aWMgU3RyaW5nIGdjVGltZXJTdHJpbmcoTW9ub3RvbmljVGltZSB0
aW1lckZpcmVEYXRlLCBNb25vdG9uaWNUaW1lIG5vdykKIHN0YXRpYyBjb25zdCBmbG9hdCBnRm9u
dFNpemUgPSAxNDsKIAogY2xhc3MgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyIGZpbmFsIDog
cHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlcihSZXNvdXJjZVVzYWdl
T3ZlcmxheSYgb3ZlcmxheSkKICAgICAgICAgOiBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTEzMiw3
ICsxMzMsNyBAQCBjbGFzcyBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NMYXllckNsaWVudCB7CiAKIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBs
YXRmb3JtSW5pdGlhbGl6ZSgpCiB7Ci0gICAgbV9vdmVybGF5UGFpbnRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyPigqdGhpcyk7CisgICAgbV9vdmVybGF5
UGFpbnRlciA9IG1ha2VVbmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyPigqdGhpcyk7
CiAgICAgbV9wYWludExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG92ZXJsYXkoKS5wYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICptX292ZXJsYXlQ
YWludGVyKTsKICAgICBtX3BhaW50TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgp
KTsKICAgICBtX3BhaW50TGF5ZXItPnNldFNpemUoeyBub3JtYWxXaWR0aCwgbm9ybWFsSGVpZ2h0
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KaW5kZXggZDdhZGZmZDcyZjlmYThmZTk3
YWZjZGEwNzE4ZDgzYzZlMDkwODUwYy4uMDg2M2FkMjY3MjVkNjU1NDc1MmI3YWMyMTQ4ZWVkMWM2
ZGZjMjNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQ
YWlyKFJlZjxTY2hlZHVsZVBhaXI+JiYgcGFpcikKIHsKICAgICBpZiAoIW1fc2NoZWR1bGVkUnVu
TG9vcFBhaXJzKQotICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91
bmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKKyAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29w
UGFpcnMgPSBtYWtlVW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVs
ZWRSdW5Mb29wUGFpcnMtPmFkZChwYWlyLnB0cigpKTsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gJm1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5k
aWNhdG9yV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2lu
ZG93LmgKaW5kZXggZGNkZDk1MDQ4YmQ5NThhYTc0NDBhMGZjM2Q5YmNlN2RmMmY1NDgwZi4uNjQ3
NWNlNWViYzkwN2FlMTg4MGFmMTcxYzA3MzZmZjNlY2I1MDI2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVt
IGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNzYWxBbmltYXRpb24gOiB1aW50OF90IHsK
ICNpZiBQTEFURk9STShNQUMpCiAKIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3cgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRJbmRp
Y2F0b3JXaW5kb3cpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDMwNmNm
ZWQxOWNlNmQwMGI2MmE4NTI0OTcwMDI4YjgwNDVmYWQ4MjMuLjAwYWYzOTQ3OGRjNzVmNzAyOWMy
NDg0NTRlZjAxYWIwYzZjN2QxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC01OSw3ICs1
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSogcGFnZSkKICAgICA6IFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKHBhZ2UpCiAgICAgLCBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyKCp0aGlz
LCAmQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFz
eW5jU2Nyb2xsVGltZXJGaXJlZCkKLSAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkKKyAgICAsIG1fc2Nyb2xsaW5nU3Rh
dGVUcmVlKG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8uaAppbmRleCA2M2JkOTYzOGI2M2ExYTExY2E0MGYzNjcyMTI5ZjcxNDEwYzZmZjJlLi4zYWI2
NDA2ODI2NGM1MDQwOGJhYjRlZTM4ZDJjY2Q0YTY0MWM3ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtMzcs
NiArMzcsNyBAQCBzdHJ1Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2UgewogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8geworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBWZWN0b3I8VD4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwog
ICAgIFZlY3RvcjxUPiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
LmNwcAppbmRleCA3NjQwZDU1ZDk2YTNmMDk1OWI5MzFlZjA0MzNlYzE1ZmEyMDdkYmQ0Li5jODkw
ZjllYmEwMDRjYTg3ODAxNDFiODVjZWVlMDA1NTYyZTJlNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgRmxvYXRTaXplIFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvcjo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBj
b250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVs
dGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFzaWNTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxP
ZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKIH0KIAogdm9pZCBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0
aW9uRW5hYmxlZChib29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaAppbmRleCBiZTk5ZDBlZTZhM2Yw
Nzg5ZmM0ZDdkYzY5Mjg4NWI1MjQwMDQzODAyLi4yMWMzMTFjZDg5Yjc5NDA4NGE4NDkwZDVmYzli
YTU1YTkzYjlhZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaApAQCAtMzksNiArMzksNyBAQCBj
bGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwogCiBjbGFzcyBTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5p
dGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbFZlbG9jaXR5KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFs
T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBp
bml0aWFsVmVsb2NpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKaW5kZXggOTY4MmQyYzFiY2VlMzc1NzEzYzM0NmQzZTMz
Y2Q0ZGMxMzVhZmM3OC4uYmU1N2M5Yjg2OWQwY2M1MjM4NmIwMDQ2YTUwN2QzNGM4NDBjODE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZU5vZGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OmFw
cGVuZENoaWxkKFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+JiYgY2hpbGROb2RlKQogICAgIGNoaWxk
Tm9kZS0+c2V0UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICBt
X2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRl
Tm9kZT4+PigpOworICAgICAgICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRy
PFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOwogICAgIG1fY2hpbGRyZW4tPmFwcGVuZChXVEZNb3Zl
KGNoaWxkTm9kZSkpOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZChDaGlsZE5vZGVzKTsKIH0KQEAg
LTExMiw3ICsxMTIsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hpbGQoUmVm
PFNjcm9sbGluZ1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUsIHNpemVfdAogCiAgICAgaWYgKCFtX2No
aWxkcmVuKSB7CiAgICAgICAgIEFTU0VSVCghaW5kZXgpOwotICAgICAgICBtX2NoaWxkcmVuID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOwor
ICAgICAgICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0
YXRlTm9kZT4+PigpOwogICAgIH0KIAogICAgIGlmIChpbmRleCA+IG1fY2hpbGRyZW4tPnNpemUo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlVHJlZS5jcHAKaW5kZXggZjYxZTI4ZTBlYzUwMzAxMmIzNzJmYjI1NTY5YThjYjdkZDUzYWE3
MC4uNzE1N2UxNjg2MGY0OWM5MWRkYTM1YmJjNGVhZmU5ODE5ZWFjYmU2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBA
IC0yOTMsNyArMjkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gU2Ny
b2xsaW5nU3RhdGVUcmVlOjpjb21taXQoTGF5ZXJSZXByZXNlbnRhdGkKICAgICB9CiAKICAgICAv
LyBUaGlzIGZ1bmN0aW9uIGNsb25lcyBhbmQgcmVzZXRzIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUs
IGJ1dCBsZWF2ZXMgdGhlIHRyZWUgc3RydWN0dXJlIGludGFjdC4KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiB0cmVlU3RhdGVDbG9uZSA9IHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsaW5nU3RhdGVUcmVlPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0
ZVRyZWU+IHRyZWVTdGF0ZUNsb25lID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7
CiAgICAgdHJlZVN0YXRlQ2xvbmUtPnNldFByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24ocHJl
ZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbik7CiAKICAgICBpZiAobV9yb290U3RhdGVOb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUu
Y3BwCmluZGV4IGVhNzRlMmNhNDI0MjlhOGUyYmU5ZjlhMzc5ZTM2N2RhNGRkZGEzZDEuLjcyOTYx
NWE2OWYwMTIyNjMxNTE0N2VjZmRiNTUyOGIwMTk5ZjM4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1Ry
ZWVOb2RlPiYmIGNoaWxkTm9kZSkKICAgICBjaGlsZE5vZGUtPnNldFBhcmVudCh0aGlzKTsKIAog
ICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4+PigpOworICAgICAgICBtX2NoaWxk
cmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7CiAg
ICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCmluZGV4IDFjN2FiNzZhMTUxZTYzNTBkOGI2MTRj
MzZkMDViY2U2NWM2Yzk1ODQuLmI0M2VhOTk1ZmFmNmI0NzAzMzVmYmYwN2EyMDg2YTZiMzVmNzBl
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAtMzYsNyArMzYs
NyBAQCBzdGF0aWMgYm9vbCBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rp
b24gPSB0cnVlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
PiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZp
ZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2lu
dCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6
ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRT
aXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVs
b2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZv
cm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAppbmRleCA3MWU0M2QzZjNiOTQ2MTA2MDhjYmYxMWRi
NTExNWJjYmVjMDU0ODkwLi4wODhkZjU0M2UwNDc5MTE3YzgzN2FmZTIyM2JiY2M1NTE0ODhhN2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCkBAIC0zMyw2ICszMyw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENQVU1vbml0b3IgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGRvdWJsZSk+OwogICAgIFdFQkNPUkVfRVhQT1JUIENQVU1v
bml0b3IoU2Vjb25kcyBjaGVja0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCmluZGV4IGU2MGY3NzEzZjYyYmIyNTYy
YTg0Mjg4OGM3ZmM2MjlmMmM1NDdmMzMuLjZiMjg4ZTFlMTdlNDQ4YmI4NmZiOWVjZTI5Y2M5ZTVi
ZGI5ZGQ4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaApAQCAtNDIsNiAr
NDIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxlTW9uaXRvciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGaWxlQ2hh
bmdlVHlwZSB7IE1vZGlmaWNhdGlvbiwgUmVtb3ZhbCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVu
Z3RoLmNwcAppbmRleCA0ZmY5ODA0ZWFlYzEzMDZiMjY4YTI0NWYyNzcxYTExMmUyOGQyYTFlLi4z
ZmM0MzFhNDc0NjFkOGM0NDNkYjRiNjIyZDZlYTkwNjM0ZGEwZjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aC5jcHAKQEAgLTI4OCw5ICsyODgsOSBAQCBMZW5ndGggY29udmVydFRvMTAwUGVy
Y2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgIC8vIFR1cm4gdGhpcyBp
bnRvIGEgY2FsYyBleHByZXNzaW9uOiBjYWxjKDEwMCUgLSBsZW5ndGgpCiAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+PiBsZW5ndGhzOwogICAgIGxlbmd0aHMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50
KSkpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4
cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOwotICAgIGF1dG8gb3AgPSBzdGQ6Om1ha2VfdW5pcXVl
PENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6
OlN1YnRyYWN0KTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNF
eHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5j
aGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOwor
ICAgIGF1dG8gb3AgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3Zl
KGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENh
bGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQog
CkBAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIExlbmd0aCBibGVuZE1peGVkVHlwZXMoY29uc3Qg
TGVuZ3RoJiBmcm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3IKICAgICBpZiAocHJv
Z3Jlc3MgPj0gMS4wKQogICAgICAgICByZXR1cm4gdG87CiAgICAgICAgIAotICAgIGF1dG8gYmxl
bmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGg+KGZyb20sIHRv
LCBwcm9ncmVzcyk7CisgICAgYXV0byBibGVuZCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25C
bGVuZExlbmd0aD4oZnJvbSwgdG8sIHByb2dyZXNzKTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1
bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKGJsZW5kKSwgVmFsdWVSYW5nZUFsbCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNw
cAppbmRleCA1NTJiMTJmNmMxZThjZGE2ZmZlYTY0Nzg2OTIyMjllYTkzZWQxN2NhLi44ZTM1ZTMw
NGMxZTcyNTdiYzY0YzZhZDEwZWRkZTk2NDIwNGU2NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICghUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRG
T1JNKE1BQykpIHx8ICFIQVZFKE1FRElBX1BMQVlFUikKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVD
b21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1h
bmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW1vdGVDb21tYW5kTGlzdGVuZXI+KGNsaWVudCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAppbmRleCAyZTVmNjNiY2VmMmJmZGZjZmY5MjE2
ZDk4NmIwZjQzNjBjNjgwYjQxLi5iN2MxZDI0ZWI0OWU1YTU1ZjY5MWYwNmNlOWUxZDgwYjIxYmNj
YWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaApAQCAtMzQs
NiArMzQsNyBAQCBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKIGNs
YXNzIFNjcm9sbEFuaW1hdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uKCkgeyB9OwogICAgIHZpcnR1YWwgYm9v
bCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCAv
KiBzdGVwICovLCBmbG9hdCAvKiBtdWx0aXBsaWVyICovKSB7IHJldHVybiB0cnVlOyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGQ5MTU0ZDkzNTFh
MmYzMzY2ZGRkMDVmZTYwZmRlYmI5YzFhMWU3MzguLmY4ZWRjODgyZDdmMzYwMDJlMTk4NTEwZDgx
YjhlYjM0YWE1MDA3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFFTkFCTEUo
U01PT1RIX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShN
QUMpCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVh
dGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggYzYyYWQ4MzRl
NmIzODA4ZTFlY2RhOGJhMTMxMmQzZDk1NzA1ZTk2YS4uOTZkMGYzMDBiMzQxOGU2MDgyMWRhMmRh
MmE2NDE4OWM0ZGVlMGIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmNwcApAQCAtODAsNyArODAsNyBAQCBTY3JvbGxBbmltYXRvciYgU2Nyb2xsYWJsZUFyZWE6
OnNjcm9sbEFuaW1hdG9yKCkgY29uc3QKIHsKICAgICBpZiAoIW1fc2Nyb2xsQW5pbWF0b3IpIHsK
ICAgICAgICAgaWYgKHVzZXNNb2NrU2Nyb2xsQW5pbWF0b3IoKSkgewotICAgICAgICAgICAgbV9z
Y3JvbGxBbmltYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25z
dF9jYXN0PFNjcm9sbGFibGVBcmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSB7CisgICAgICAgICAgICBtX3Njcm9sbEFuaW1hdG9yID0gbWFrZVVuaXF1ZTxTY3JvbGxB
bmltYXRvck1vY2s+KGNvbnN0X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICBsb2dNb2NrU2Nyb2xsQW5p
bWF0b3JNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZQpA
QCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhhc0xheWVyRm9yU2Nyb2xs
Q29ybmVyKCkgY29uc3QKIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgU2Nyb2xs
YWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFtX3NuYXBPZmZz
ZXRzSW5mbykKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0
c0luZm8gPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsK
ICAgICByZXR1cm4gKm1fc25hcE9mZnNldHNJbmZvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3VkZGVuVGVybWluYXRpb24uaAppbmRleCA3MmIwMDQ1MTMxNDJjOGY0ZTk1ZGYyMjgx
OGMzZGRjMTgwYWFlY2VkLi4wZDc0YjE2ZTU5MjU5OGFiODNiMGM4YzBlYjU0YjQ0NmRmZDM4ZDMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKQEAgLTQy
LDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBjbGFzcyBTdWRk
ZW5UZXJtaW5hdGlvbkRpc2FibGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIp
OwogICAgIHB1YmxpYzoKICAgICAgICAgU3VkZGVuVGVybWluYXRpb25EaXNhYmxlcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IGEyODAxMGVj
ZmU1YTM2N2FkOWQwYjI5YTIwMDU2M2EwZjU2MWQ1NjAuLjI3YTczNjQxNmJhMDRjMDUzYzJlNzdk
YjJjNTU4MTQ0NDBkMmYwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
cmVhZEdsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEds
b2JhbERhdGEuY3BwCkBAIC00MCwxNCArNDAsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCi0gICAgOiBtX2NhY2hlZFJlc291
cmNlUmVxdWVzdEluaXRpYXRvcnMoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzPigpKQorICAgIDogbV9jYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3Jz
KG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKICAgICAsIG1f
ZXZlbnROYW1lcyhFdmVudE5hbWVzOjpjcmVhdGUoKSkKLSAgICAsIG1fdGhyZWFkVGltZXJzKHN0
ZDo6bWFrZV91bmlxdWU8VGhyZWFkVGltZXJzPigpKQotICAgICwgbV9xdWFsaWZpZWROYW1lQ2Fj
aGUoc3RkOjptYWtlX3VuaXF1ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCisgICAgLCBtX3RocmVh
ZFRpbWVycyhtYWtlVW5pcXVlPFRocmVhZFRpbWVycz4oKSkKKyAgICAsIG1fcXVhbGlmaWVkTmFt
ZUNhY2hlKG1ha2VVbmlxdWU8UXVhbGlmaWVkTmFtZUNhY2hlPigpKQogI2lmbmRlZiBOREVCVUcK
ICAgICAsIG1faXNNYWluVGhyZWFkKGlzTWFpblRocmVhZCgpKQogI2VuZGlmCi0gICAgLCBtX2Nh
Y2hlZENvbnZlcnRlcklDVShzdGQ6Om1ha2VfdW5pcXVlPElDVUNvbnZlcnRlcldyYXBwZXI+KCkp
CisgICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShtYWtlVW5pcXVlPElDVUNvbnZlcnRlcldyYXBw
ZXI+KCkpCiB7CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciB3aWxsIGhhdmUgYmVlbiBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBiZWluZyBjYWxsZWQgb24KICAgICAvLyBhbnkgb3Ro
ZXIgdGhyZWFkLCBhbmQgaXMgb25seSBjYWxsZWQgb25jZSBwZXIgdGhyZWFkIC0gdGhpcyBtYWtl
cyB0aGlzIGEgY29udmVuaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9CdXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuY3BwCmluZGV4IDJmODkyZDZiMTlhYmE0MjMwZTkyNGM3NjE4NzM4ZmM2Y2I0OGY3ZWMuLmU3
MGQ0NmQwYjlmMjQwN2Y5MDg1NDhmYThmMmU5OGM5ZGE0NTYzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgQXVkaW9CdXM6
OkF1ZGlvQnVzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBsZW5ndGgsIGJvb2wg
YWxsb2NhdGUpCiAgICAgbV9jaGFubmVscy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9m
Q2hhbm5lbHMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5l
bHM7ICsraSkgewotICAgICAgICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9DaGFubmVsPihsZW5ndGgpIDogc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5u
ZWw+KG51bGxwdHIsIGxlbmd0aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8g
bWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5l
bD4obnVsbHB0ciwgbGVuZ3RoKTsKICAgICAgICAgbV9jaGFubmVscy51bmNoZWNrZWRBcHBlbmQo
V1RGTW92ZShjaGFubmVsKSk7CiAgICAgfQogCkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBBdWRp
b0J1czo6Y29weVdpdGhHYWluRnJvbShjb25zdCBBdWRpb0J1cyAmc291cmNlQnVzLCBmbG9hdCog
bGFzdE1peEdhaW4sIGYKIAogICAgIGlmIChmcmFtZXNUb0RlemlwcGVyKSB7CiAgICAgICAgIGlm
ICghbV9kZXppcHBlckdhaW5WYWx1ZXMuZ2V0KCkgfHwgbV9kZXppcHBlckdhaW5WYWx1ZXMtPnNp
emUoKSA8IGZyYW1lc1RvRGV6aXBwZXIpCi0gICAgICAgICAgICBtX2RlemlwcGVyR2FpblZhbHVl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0RlemlwcGVyKTsK
KyAgICAgICAgICAgIG1fZGV6aXBwZXJHYWluVmFsdWVzID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0
QXJyYXk+KGZyYW1lc1RvRGV6aXBwZXIpOwogCiAgICAgICAgIGZsb2F0KiBnYWluVmFsdWVzID0g
bV9kZXppcHBlckdhaW5WYWx1ZXMtPmRhdGEoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGZyYW1lc1RvRGV6aXBwZXI7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQnVzLmgKaW5kZXggMjE3M2RjOTM4M2U0YTMzYzFiNTkzNDc2NWExZTViMTA3NDZm
MDNhMS4uYmJiM2QyYWNkMjJjNTcyYmM5MjNhNDhiMWY3MGFmODU0YzBjYjAwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIEFuIEF1ZGlvQnVzIHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9m
IG9uZSBvciBtb3JlIEF1ZGlvQ2hhbm5lbHMuCiAvLyBUaGUgZGF0YSBsYXlvdXQgaXMgInBsYW5h
ciIgYXMgb3Bwb3NlZCB0byAiaW50ZXJsZWF2ZWQiLgogLy8gQW4gQXVkaW9CdXMgd2l0aCBvbmUg
Y2hhbm5lbCBpcyBtb25vLCBhbiBBdWRpb0J1cyB3aXRoIHR3byBjaGFubmVscyBpcyBzdGVyZW8s
IGV0Yy4KLWNsYXNzIEF1ZGlvQnVzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlv
QnVzPiB7CitjbGFzcyBBdWRpb0J1cyBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxBdWRpb0J1cz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvQnVzKTsKIHB1Ymxp
YzoKICAgICBlbnVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFu
bmVsLmgKaW5kZXggYmJjMTM1N2EzZDUzZjA1NDhmODg3OGU1ODdkYjdkNmRkMWM0ZmFkOC4uN2I5
ODkzZDM4YWM0MTc0NTMxNzQxYjc3MjRjNmZmMmFiZDAxZGY5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAvLyBBbiBBdWRpb0NoYW5uZWwgcmVwcmVzZW50cyBhIGJ1ZmZlciBv
ZiBub24taW50ZXJsZWF2ZWQgZmxvYXRpbmctcG9pbnQgYXVkaW8gc2FtcGxlcy4KIC8vIFRoZSBQ
Q00gc2FtcGxlcyBhcmUgbm9ybWFsbHkgYXNzdW1lZCB0byBiZSBpbiBhIG5vbWluYWwgcmFuZ2Ug
LTEuMCAtPiArMS4wCi1jbGFzcyBBdWRpb0NoYW5uZWwgeworY2xhc3MgQXVkaW9DaGFubmVsIGZp
bmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBdWRpb0NoYW5uZWwpOwogcHVibGljOgogICAgIC8vIE1lbW9yeSBjYW4gYmUgZXh0ZXJu
YWxseSByZWZlcmVuY2VkLCBvciBjYW4gYmUgaW50ZXJuYWxseSBhbGxvY2F0ZWQgd2l0aCBhbiBB
dWRpb0Zsb2F0QXJyYXkuCkBAIC01Niw3ICs1Nyw3IEBAIGNsYXNzIEF1ZGlvQ2hhbm5lbCB7CiAg
ICAgICAgICwgbV9yYXdQb2ludGVyKDApCiAgICAgICAgICwgbV9zaWxlbnQodHJ1ZSkKICAgICB7
Ci0gICAgICAgIG1fbWVtQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+
KGxlbmd0aCk7CisgICAgICAgIG1fbWVtQnVmZmVyID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJy
YXk+KGxlbmd0aCk7CiAgICAgfQogCiAgICAgLy8gQSAiYmxhbmsiIGF1ZGlvIGNoYW5uZWwgLS0g
bXVzdCBjYWxsIHNldCgpIGJlZm9yZSBpdCdzIHVzZWZ1bC4uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaAppbmRleCA3NWM5YWJkNzQ5NGQzNTgyMmY4MmFjZTdjY2Qw
ZDg1Njg2MTFkN2VhLi4wZjQzOGRkN2QwZmE1OWZiNjQ0ZDRkZjU3MmY1NTlmZDY2MzA4YmQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApAQCAtMzMsNyArMzMs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvRklGTyB7CitjbGFzcyBB
dWRpb0ZJRk8gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIC8vIENyZWF0ZSBhIEZJRk8gbGFyZ2UgZW5vdWdoIHRvIGhvbGQgfGZpZm9MZW5ndGh8IGZy
YW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4KICAgICBBdWRpb0ZJ
Rk8odW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmluZGV4IGJmYmU5ODNh
NTc1YTQ1NGFhYzJiMGMzY2JlNDU3NWVmYWY2Yjc4ZDcuLmQ3NDhmYTQxMzg3Mzc5ZGIzOTViZWFl
NjVmODgyYmEyNThlOWZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUHVsbEZJRk8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1B1bGxGSUZPLmgKQEAgLTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
dGhlIEZJRk8gd2lsbCBhc2sgdGhlIHByb3ZpZGVyIGZvciBtb3JlIGRhdGEgd2hlbiBuZWNlc3Nh
cnkgdG8gZnVsZmlsbCBhIHJlcXVlc3QuIENvbnRyYXN0IHRoaXMKIC8vIHdpdGggYSAicHVzaCIg
RklGTywgd2hlcmUgdGhlIHNlbmRlciBwdXNoZXMgZGF0YSB0byB0aGUgRklGTyB3aGljaCB3aWxs
IGl0c2VsZiBwdXNoIHRoZSBkYXRhIHRvCiAvLyB0aGUgcmVjZWl2ZXIgd2hlbiB0aGUgRklGTyBp
cyBmdWxsLgotY2xhc3MgQXVkaW9QdWxsRklGTyB7CitjbGFzcyBBdWRpb1B1bGxGSUZPIGZpbmFs
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUg
YSBGSUZPIHRoYXQgZ2V0cyBkYXRhIGZyb20gfHByb3ZpZGVyfC4gVGhlIEZJRk8gd2lsbCBiZSBs
YXJnZSBlbm91Z2ggdG8gaG9sZAogICAgIC8vIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBv
ZiB8bnVtYmVyT2ZDaGFubmVsc3wgY2hhbm5lbHMuIFRoZSBBdWRpb1NvdXJjZVByb3ZpZGVyIHdp
bGwgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVz
YW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVy
LmNwcAppbmRleCA4NjkwNmJhNTEyNDc1ODY5MmM2ODNlMmJjOTAzODM1MDFlYWI4ZmQ5Li4yODRj
MDU0OTQzMjU5MzQ0ZWFjZTMyNDE4YWRhOWI4MzAzZGEyZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IGNvbnN0IGRvdWJsZSBBdWRpb1Jlc2FtcGxlcjo6TWF4UmF0ZSA9IDguMDsKIEF1ZGlvUmVzYW1w
bGVyOjpBdWRpb1Jlc2FtcGxlcigpCiAgICAgOiBtX3JhdGUoMS4wKQogewotICAgIG1fa2VybmVs
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwor
ICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhp
cykpOwogICAgIG1fc291cmNlQnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCAwLCBmYWxzZSk7CiB9
CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgQXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBtX3JhdGUoMS4wKQogewogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgIG1fa2VybmVs
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwor
ICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+
KHRoaXMpKTsKIAogICAgIG1fc291cmNlQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZkNo
YW5uZWxzLCAwLCBmYWxzZSk7CiB9CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQXVkaW9SZXNhbXBs
ZXI6OmNvbmZpZ3VyZUNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLy8g
Rmlyc3QgZGVhbCB3aXRoIGFkZGluZyBvciByZW1vdmluZyBrZXJuZWxzLgogICAgIGlmIChudW1i
ZXJPZkNoYW5uZWxzID4gY3VycmVudFNpemUpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
Y3VycmVudFNpemU7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgICAgICBtX2tl
cm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMp
KTsKKyAgICAgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxl
cktlcm5lbD4odGhpcykpOwogICAgIH0gZWxzZQogICAgICAgICBtX2tlcm5lbHMucmVzaXplKG51
bWJlck9mQ2hhbm5lbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9SZXNhbXBsZXIuaAppbmRleCBkMTFmYTkzZWJhYWNiZDhlNTZiOThkYTMzNzVmYWUxNDA2OGUz
YmM5Li4yMDE2YmFmZjdjODhkZjE4YWY1ZDM1MmMzMDFmNWZmNDM3Njg5ZjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKQEAgLTM3LDcgKzM3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIGF1ZGlvIHN0cmVhbSBtYXkgYmUgc2lu
Z2xlIG9yIG11bHRpLWNoYW5uZWwuCiAvLyBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0
cyB0byBzaW5nbGUtY2hhbm5lbCAobW9ubykuCiAKLWNsYXNzIEF1ZGlvUmVzYW1wbGVyIHsKK2Ns
YXNzIEF1ZGlvUmVzYW1wbGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBBdWRpb1Jlc2FtcGxlcigpOwogICAgIEF1ZGlvUmVzYW1wbGVyKHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKaW5kZXggOTlkODc3YmI3Y2Q2OGRiYjA1MzY3
N2EwOTdjZDRlMGVhYzgzYjc4Mi4uOGFjMmJhYTQyYzU4N2EzNDg1ZDUzNDAyM2FkZWUyNGY4ODMy
NmVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNh
bXBsZXJLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlcktlcm5lbC5oCkBAIC0zNCw3ICszNCw5IEBAIGNsYXNzIEF1ZGlvUmVzYW1wbGVyOwog
Ly8gQXVkaW9SZXNhbXBsZXJLZXJuZWwgZG9lcyByZXNhbXBsaW5nIG9uIGEgc2luZ2xlIG1vbm8g
Y2hhbm5lbC4KIC8vIEl0IHVzZXMgYSBzaW1wbGUgbGluZWFyIGludGVycG9sYXRpb24gZm9yIGdv
b2QgcGVyZm9ybWFuY2UuCiAKLWNsYXNzIEF1ZGlvUmVzYW1wbGVyS2VybmVsIHsKK2NsYXNzIEF1
ZGlvUmVzYW1wbGVyS2VybmVsIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Jlc2FtcGxlcktlcm5lbCk7CiBwdWJsaWM6
CiAgICAgQXVkaW9SZXNhbXBsZXJLZXJuZWwoQXVkaW9SZXNhbXBsZXIqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKaW5kZXggNWMxYmYyYTMx
NzM0MmVhM2U1MjkyYTc5N2U4ZTY2ZTFhOGRhMzk3Yy4uYjVmYjU4MDY0OGY5Y2Y4ZWM0ZjE4NmZh
ZmE0OGUxM2ZkY2YyZjU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Nlc3Npb24uY3BwCkBAIC01MCw2ICs1MCw3IEBAIGJvb2wgQXVkaW9TZXNzaW9uOjp0cnlU
b1NldEFjdGl2ZShib29sIGFjdGl2ZSkKIAogI2lmICFQTEFURk9STShDT0NPQSkKIGNsYXNzIEF1
ZGlvU2Vzc2lvblByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogfTsKIAog
QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCAxN2RhODFiM2I3NWQ3YTVhYWI4MjE0ODZiN2MxZTMz
ZjFhOGRmNDY5Li5lNzAwODIyZmYxZmVlYmQ3ODI5YWVjNzUwY2NlNDBhNjBiOTI1NjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNDQsNyAr
NDQsOCBAQCBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3QgewogICAgIExv
bmdGb3JtVmlkZW8KIH07CiAKLWNsYXNzIEF1ZGlvU2Vzc2lvbiB7CitjbGFzcyBBdWRpb1Nlc3Np
b24gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEF1ZGlvU2Vzc2lvbik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIEF1ZGlvU2Vzc2lvbiYgc2hhcmVkU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9CaXF1YWQuaAppbmRleCBiYjcyMWEyM2E3ZmNjNzc0YjYwOTNlNGVhOTA4YzYwZTg5MDgx
MDdjLi43MTM0OTRjOTE0ZDMzNzg2NDNlMjlhODBiYzM5ZTc3MzY2ZGYxODJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyAgICBsb3dwYXNzLCBoaWdocGFzcywgc2hlbHZpbmcsIHBhcmFtZXRlcmlj
LCBub3RjaCwgYWxscGFzcywgLi4uCiAKIGNsYXNzIEJpcXVhZCBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAgQmlxdWFkKCk7CiAgICAgfkJpcXVh
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCmluZGV4IGQ4MWMwNWRjNjhlNmUy
ZmEyMWQyNDVkZDEzN2I0ZjE3OGEyMTIwYjQuLmE3YWNhM2E0YzU0ZDI3NGIzYWEzZDQwYWQ5ZDE0
M2ViZGZjNDVmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Nv
bmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKQEAgLTM1LDcg
KzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBDb25lIGdhaW4gaXMgZGVmaW5lZCBh
Y2NvcmRpbmcgdG8gdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9uCiAKLWNsYXNzIENvbmVFZmZlY3Qg
eworY2xhc3MgQ29uZUVmZmVjdCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQ29uZUVmZmVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVyLmgKaW5kZXggNmU5ZjRlMDFkYWU2ZDQ1ZDAyMTEx
ZDVkNWIxMjhlZjM4ODZiMjI0Mi4uZTBiM2VmZDgwZjc4ZmZhYTMwNjU3MzMyMzE0NzAyZGM3M2Ey
ZjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxE
aXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlz
YWJsZXIuaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAog
I2lmZGVmIEhBVkVfREVOT1JNQUwKLWNsYXNzIERlbm9ybWFsRGlzYWJsZXIgeworY2xhc3MgRGVu
b3JtYWxEaXNhYmxlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRGVub3JtYWxEaXNhYmxlcigpCiAgICAgICAgICAgICA6IG1fc2F2ZWRDU1IoMCkK
QEAgLTEwMyw3ICsxMDQsOCBAQCBjbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKIAogI2Vsc2UKIC8v
IEZJWE1FOiBhZGQgaW1wbGVtZW50YXRpb25zIGZvciBvdGhlciBhcmNoaXRlY3R1cmVzIGFuZCBj
b21waWxlcnMKLWNsYXNzIERlbm9ybWFsRGlzYWJsZXIgeworY2xhc3MgRGVub3JtYWxEaXNhYmxl
ciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVu
b3JtYWxEaXNhYmxlcigpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0RpcmVjdENvbnZvbHZlci5oCmluZGV4IDZmMmZhZjQwZTYxYmY2ZTMyYTRmNDk5OTc2NWM5ZTFi
YjUxOTQxYTguLjVjOGQ4NjZjMTY1NWNjMzkxYTgyNWQzYjIzNzg4YmY0MGM3ODlhM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCkBAIC0z
MCwxMCArMzAsMTMgQEAKICNkZWZpbmUgRGlyZWN0Q29udm9sdmVyX2gKIAogI2luY2x1ZGUgIkF1
ZGlvQXJyYXkuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBEaXJlY3RDb252b2x2ZXIgeworY2xhc3MgRGlyZWN0Q29udm9sdmVy
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEaXJlY3RDb252b2x2ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IERpcmVjdENv
bnZvbHZlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRGlzdGFuY2UuaAppbmRleCA5MWQzNDliOTdlNjI3NzMzMmQ3NjMxYTg4NDQyNmIxNjY4
ZGNmMjgzLi5iM2ViNzc5NzNjZmE0Nzk1ZjE1MDUzNjliN2U0YjJmODlmZmI2YzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKQEAgLTQwLDcgKzQwLDggQEAgZW51
bSBjbGFzcyBEaXN0YW5jZU1vZGVsVHlwZSB7CiAgICAgRXhwb25lbnRpYWwKIH07CiAKLWNsYXNz
IERpc3RhbmNlRWZmZWN0IHsKK2NsYXNzIERpc3RhbmNlRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEaXN0YW5jZUVmZmVjdCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaAppbmRleCBmNGI0MjAx
N2VlNzYyN2NhZDY1NmJmZjQ1N2FhZTk4OTQ4MDE0YmYyLi45NTcwYjg5MWM5N2ZmYTkxMWEwMTEz
NDAwM2I0ZmRjYjVmNzZmOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9Eb3duU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rv
d25TYW1wbGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBE
b3duU2FtcGxlciBkb3duLXNhbXBsZXMgdGhlIHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2Yg
MnguCiAKLWNsYXNzIERvd25TYW1wbGVyIHsKK2NsYXNzIERvd25TYW1wbGVyIGZpbmFsIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEb3duU2Ft
cGxlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKaW5kZXggYjI1NTE4ZDg4MGE4ZDJk
OTk0YTc2OTZiOGZhZGE5ZTU1NDhjMjllYi4uNTEzNzk5YTg1MTJmNDI3YjRlNGI4ZDliMjk0NWE5
NGQzNDkxODc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuY3BwCkBAIC0yNzEsOCArMjcxLDggQEAgdm9pZCBEeW5hbWljc0Nv
bXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykK
ICAgICBtX3ByZUZpbHRlclBhY2tzLmNsZWFyKCk7CiAgICAgbV9wb3N0RmlsdGVyUGFja3MuY2xl
YXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytp
KSB7Ci0gICAgICAgIG1fcHJlRmlsdGVyUGFja3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVy
b1BvbGVGaWx0ZXJQYWNrND4oKSk7Ci0gICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBtX3ByZUZp
bHRlclBhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAg
ICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBh
Y2s0PigpKTsKICAgICB9CiAKICAgICBtX3NvdXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5
PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCmluZGV4IGVmOGMwOTNhMWI5NjUz
MjI5ZDc5OWYxYTZiMjkyYWZhZGJkYWJhZDEuLjgyMmM5MzFmMzhjZTBlYzhkYzYyODJmMGY4YzM0
M2FmNjc3Zjk4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5oCkBAIC00Myw4ICs0Myw5IEBAIGNsYXNzIEF1ZGlvQnVzOwogLy8g
b2YgdGhlIGxvdWRlc3QgcGFydHMgb2YgdGhlIHNpZ25hbCBhbmQgcmFpc2VzIHRoZSB2b2x1bWUg
b2YgdGhlIHNvZnRlc3QgcGFydHMsCiAvLyBtYWtpbmcgdGhlIHNvdW5kIHJpY2hlciwgZnVsbGVy
LCBhbmQgbW9yZSBjb250cm9sbGVkLgogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgeworY2xh
c3MgRHluYW1pY3NDb21wcmVzc29yIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEeW5hbWljc0NvbXByZXNzb3IpOwogcHVibGlj
OgogICAgIGVudW0gewogICAgICAgICBQYXJhbVRocmVzaG9sZCwKQEAgLTk1LDkgKzk2LDEwIEBA
IGNsYXNzIER5bmFtaWNzQ29tcHJlc3NvciB7CiAgICAgZmxvYXQgbV9sYXN0QW5jaG9yOwogICAg
IGZsb2F0IG1fbGFzdEZpbHRlclN0YWdlR2FpbjsKIAotICAgIHR5cGVkZWYgc3RydWN0IHsKKyAg
ICBzdHJ1Y3QgWmVyb1BvbGVGaWx0ZXJQYWNrNCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgWmVyb1BvbGUgZmlsdGVyc1s0XTsKLSAgICB9IFplcm9Q
b2xlRmlsdGVyUGFjazQ7CisgICAgfTsKIAogICAgIC8vIFBlci1jaGFubmVsIGVtcGhhc2lzIGZp
bHRlcnMuCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4g
bV9wcmVGaWx0ZXJQYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCmluZGV4IDczNGIwNjZjZGE0OGJj
MmM3YTc5ZWRmNTA3ZDA2YzA1NmM3MGEwOTAuLmFmZWRiN2I0Y2QwYTVhNjFkMWE5ZmUyNzhjMzQw
MzgzZjk4ZTIxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lk
IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzKQogCiAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuY2xlYXIoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICBt
X3ByZURlbGF5QnVmZmVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+
KE1heFByZURlbGF5RnJhbWVzKSk7CisgICAgICAgIG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZCht
YWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKIH0KIAogdm9p
ZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldFByZURlbGF5VGltZShmbG9hdCBwcmVEZWxh
eVRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5oCmluZGV4IGI3YmNlYTJmYWZkODk5NmNhNTI4YjBiNWRhYjQ5
Y2I4ODk1OGRjYzQuLmUxMWY0N2JhYWYwYmM2YzVkMGNhN2UzZDcyMDA4MjYzOWQyNzBjMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbC5oCkBAIC0zNSw3ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRHluYW1pY3NDb21wcmVzc29yS2VybmVsIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsKGZsb2F0IHNhbXBsZVJhdGUs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmgKaW5kZXggOGNmNTk5MTc5NWYzZjFmNjNlMjgx
ZDllMTZhY2FmM2Q3YTU3YTVkYS4uNGU0NjNiMTI4MWE3ZmEzYmIzOTdhNmIwNjVjZTAzM2NjYmY5
YWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dl
clBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQ
YW5uZXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbW1v
biB0eXBlIG9mIHN0ZXJlbyBwYW5uZXIgYXMgZm91bmQgaW4gbm9ybWFsIGF1ZGlvIG1peGluZyBl
cXVpcG1lbnQuCiAKLWNsYXNzIEVxdWFsUG93ZXJQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKK2Ns
YXNzIEVxdWFsUG93ZXJQYW5uZXIgZmluYWwgOiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBFcXVhbFBvd2VyUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCmluZGV4IDQ1NDJiNmZiMjU3
ODU0OTVhYjIwNmFiYzNjOTBjNzViYzJmMTZlYTAuLjM4NjIyN2YxOTcwNGFmZDc5MmUzNjYyMmJk
ZGE5YzFhY2VhNzUxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0ZGVENvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENv
bnZvbHZlci5oCkBAIC0zNCw3ICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRkZUQ29udm9sdmVyIHsKK2NsYXNzIEZGVENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRkZUQ29udm9sdmVy
KTsKIHB1YmxpYzoKICAgICAvLyBmZnRTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28KICAgICBG
RlRDb252b2x2ZXIoc2l6ZV90IGZmdFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuY3BwCmluZGV4IDRjMDJiNjk5MmIwNjM4M2I4MDM1NzM3ODc4ZGJmNjVhMjZm
YjljMzEuLjRjMTUyMDY3ZDQ0YWM0Yjg1NDE5MjFhYWVkMjk1OTgyYjk2OTM3OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAg
dm9pZCBGRlRGcmFtZTo6ZG9QYWRkZWRGRlQoY29uc3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRh
U2l6ZSkKIAogc3RkOjp1bmlxdWVfcHRyPEZGVEZyYW1lPiBGRlRGcmFtZTo6Y3JlYXRlSW50ZXJw
b2xhdGVkRnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lMSwgY29uc3QgRkZURnJhbWUmIGZyYW1l
MiwgZG91YmxlIHgpCiB7Ci0gICAgYXV0byBuZXdGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZU
RnJhbWU+KGZyYW1lMS5mZnRTaXplKCkpOworICAgIGF1dG8gbmV3RnJhbWUgPSBtYWtlVW5pcXVl
PEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKIAogICAgIG5ld0ZyYW1lLT5pbnRlcnBvbGF0
ZUZyZXF1ZW5jeUNvbXBvbmVudHMoZnJhbWUxLCBmcmFtZTIsIHgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCmluZGV4IDc1N2JjZmE0YjZhZWZkNzBl
YmFlODY1NDg3MjVmYTQwNjI5YzZlOWUuLmE1MTkzNDk4MTUwNDUyNmQ2ZmM2NGQ0NWI5NzkwYjM3
ODEwM2E0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZE
YXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFz
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJURktl
cm5lbDsKIAotY2xhc3MgSFJURkRhdGFiYXNlIHsKK2NsYXNzIEhSVEZEYXRhYmFzZSBmaW5hbCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SFJURkRhdGFiYXNlKTsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCmluZGV4IGY0NWJlODQ3Y2U3MTBkY2VkYTJl
MGVjMTA2Yjc1YmYyNjg1Nzg5Y2QuLmE0NzRhNzBjNDA4NTJhZTJlMWY5ZjU4YTQ5YTAwMDM2MTU4
MGIzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlTG9hZGVyLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIEhSVEZEYXRhYmFzZUxvYWRl
cjo6bG9hZCgpCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2hydGZE
YXRhYmFzZS5nZXQoKSkgewogICAgICAgICAvLyBMb2FkIHRoZSBkZWZhdWx0IEhSVEYgZGF0YWJh
c2UuCi0gICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRGF0YWJh
c2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKKyAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBtYWtl
VW5pcXVlPEhSVEZEYXRhYmFzZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRl
eCBjODRhYjk3NTFhMTQ1OTg5YTAzNzdmYWQxZjRhNzVlOGYxN2UyYjI0Li42MDUyMzJjZDFhOTlj
OTIzM2Q5YWQxMDQ5YmEzMDdlMjE3NzM4ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcApAQCAtMjQ0LDggKzI0NCw4IEBAIHN0ZDo6dW5p
cXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNv
bnN0IFN0cmluZyYgc3ViCiAgICAgaWYgKCFpc0VsZXZhdGlvbkdvb2QpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICAKLSAgICBhdXRvIGtlcm5lbExpc3RMID0gc3RkOjptYWtlX3Vu
aXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKLSAgICBhdXRvIGtl
cm5lbExpc3RSID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3Rh
bEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RMID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVs
TGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RSID0gbWFr
ZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKIAogICAgIC8v
IExvYWQgY29udm9sdXRpb24ga2VybmVscyBmcm9tIEhSVEYgZmlsZXMuCiAgICAgaW50IGludGVy
cG9sYXRlZEluZGV4ID0gMDsKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJU
RkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChjb25zdCBTdHJpbmcm
IHN1YgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RS
KSwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRGRWxl
dmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIGVsZXZh
dGlvbiwgc2FtcGxlUmF0ZSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBI
UlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsZXZhdGlvbiog
aHJ0ZkVsZXZhdGlvbjEsIEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24yLCBmbG9hdCB4LCBm
bG9hdCBzYW1wbGVSYXRlKQpAQCAtMjg1LDggKzI4NSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRG
RWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJU
RkVsCiAgICAgICAgIAogICAgIEFTU0VSVCh4ID49IDAuMCAmJiB4IDwgMS4wKTsKICAgICAKLSAg
ICBhdXRvIGtlcm5lbExpc3RMID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVt
YmVyT2ZUb3RhbEF6aW11dGhzKTsKLSAgICBhdXRvIGtlcm5lbExpc3RSID0gc3RkOjptYWtlX3Vu
aXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtl
cm5lbExpc3RMID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11
dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RSID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4o
TnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKIAogICAgIEhSVEZLZXJuZWxMaXN0KiBrZXJuZWxMaXN0
TDEgPSBocnRmRWxldmF0aW9uMS0+a2VybmVsTGlzdEwoKTsKICAgICBIUlRGS2VybmVsTGlzdCog
a2VybmVsTGlzdFIxID0gaHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RSKCk7CkBAIC0zMDIsNyAr
MzAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNy
ZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWwKICAgICAvLyBJbnRlcnBvbGF0ZSBlbGV2
YXRpb24gYW5nbGUuCiAgICAgZG91YmxlIGFuZ2xlID0gKDEuMCAtIHgpICogaHJ0ZkVsZXZhdGlv
bjEtPmVsZXZhdGlvbkFuZ2xlKCkgKyB4ICogaHJ0ZkVsZXZhdGlvbjItPmVsZXZhdGlvbkFuZ2xl
KCk7CiAgICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RG
TW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+
KGFuZ2xlKSwgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SFJURkVsZXZhdGlv
bj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBzdGF0aWNfY2Fz
dDxpbnQ+KGFuZ2xlKSwgc2FtcGxlUmF0ZSk7CiB9CiAKIHZvaWQgSFJURkVsZXZhdGlvbjo6Z2V0
S2VybmVsc0Zyb21BemltdXRoKGRvdWJsZSBhemltdXRoQmxlbmQsIHVuc2lnbmVkIGF6aW11dGhJ
bmRleCwgSFJURktlcm5lbCogJmtlcm5lbEwsIEhSVEZLZXJuZWwqICZrZXJuZWxSLCBkb3VibGUm
IGZyYW1lRGVsYXlMLCBkb3VibGUmIGZyYW1lRGVsYXlSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCmluZGV4IDJhOTU5MDQ1NTIxODQzYTE1MTYyZWNj
OGUzMjExNzM5ZTA3MDUzZjcuLmVmNzUyYzNjMDFiZTM5ZWNkYjdlZjY0ZGY0MzkwOTI2NmQ2ZWQ5
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgK
QEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBIUlRGRWxldmF0aW9u
IGNvbnRhaW5zIGFsbCBvZiB0aGUgSFJURktlcm5lbHMgKG9uZSBsZWZ0IGVhciBhbmQgb25lIHJp
Z2h0IGVhciBwZXIgYXppbXV0aCBhbmdsZSkgZm9yIGEgcGFydGljdWxhciBlbGV2YXRpb24uCiAK
LWNsYXNzIEhSVEZFbGV2YXRpb24geworY2xhc3MgSFJURkVsZXZhdGlvbiBmaW5hbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkVs
ZXZhdGlvbik7CiBwdWJsaWM6CiAgICAgSFJURkVsZXZhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8SFJU
Rktlcm5lbExpc3Q+IGtlcm5lbExpc3RMLCBzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+
IGtlcm5lbExpc3RSLCBpbnQgZWxldmF0aW9uLCBmbG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAppbmRleCBlZGY2YzYwZDBkYjgx
NGQ5NGMwZjcxYjYzMDZlNDM4MjY1M2FhNGM3Li4zNzU1MjE2YWUyODdhNzFjNzQyOTI5YTUzYzk1
OTA5NmRiMWRiYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2Vy
bmVsLmNwcApAQCAtOTIsNyArOTIsNyBAQCBIUlRGS2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hh
bm5lbCogY2hhbm5lbCwgc2l6ZV90IGZmdFNpemUsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBtX2ZmdEZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4o
ZmZ0U2l6ZSk7CisgICAgbV9mZnRGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZmdFNpemUp
OwogICAgIG1fZmZ0RnJhbWUtPmRvUGFkZGVkRkZUKGltcHVsc2VSZXNwb25zZSwgdHJ1bmNhdGVk
UmVzcG9uc2VMZW5ndGgpOwogfQogCkBAIC0xMDMsNyArMTAzLDcgQEAgc2l6ZV90IEhSVEZLZXJu
ZWw6OmZmdFNpemUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9DaGFubmVsPiBIUlRG
S2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UoKQogewotICAgIGF1dG8gY2hhbm5lbCA9IHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihmZnRTaXplKCkpOworICAgIGF1dG8gY2hhbm5l
bCA9IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihmZnRTaXplKCkpOwogICAgIEZGVEZyYW1lIGZm
dEZyYW1lKCptX2ZmdEZyYW1lKTsKIAogICAgIC8vIEFkZCBsZWFkaW5nIGRlbGF5IGJhY2sgaW4u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKaW5kZXggYmY1ZWVm
YWE1ZTRjNmQyYmYxN2E5OTAwMzA3NDE2NWM2ZTQzM2FkNy4uY2FhYTQ0MWYxZDE0ZWEzNmY1ZTk2
OGFkOGE3N2QwYjdhNjBkZDk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURlBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZQYW5uZXIuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEhSVEZQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKK2NsYXNzIEhSVEZQYW5uZXIgZmluYWwg
OiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIUlRGUGFubmVyKGZsb2F0
IHNhbXBsZVJhdGUsIEhSVEZEYXRhYmFzZUxvYWRlciopOwogICAgIHZpcnR1YWwgfkhSVEZQYW5u
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hh
bm5lbFJlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuY3BwCmluZGV4IGJiYmYxNjQ0NjIwNzYzOWUzNWNmNzk1NjQ4MjgyNjNk
M2U5MzczYWUuLjViZjlhYjk1ZDAxNTc1MDA4MTVkNjEzMWFiMWQ4OTc0MWJlMWZlMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRp
Q2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlcgogewog
ICAgIC8vIENyZWF0ZSBlYWNoIGNoYW5uZWwncyByZXNhbXBsZXIuCiAgICAgZm9yICh1bnNpZ25l
ZCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2No
YW5uZWxJbmRleCkKLSAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNp
bmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFr
ZVVuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOwogfQogCiB2b2lkIE11bHRpQ2hh
bm5lbFJlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92aWRlciwgQXVk
aW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAppbmRl
eCA0NDE3NTQ3NjA1ODNkMjgwMzRhNDViM2JkOGE2MTg4ZDQ2NWEyZjM2Li42MTQ2ZTkyNWMwNmEy
ZGRhNzZjYjQxMmYwY2MxZTBhMjQ2YWM4MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaApAQCAtMzcsNyArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVzOwogICAgIAotY2xhc3MgTXVs
dGlDaGFubmVsUmVzYW1wbGVyIHsKK2NsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciBmaW5hbCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAgZXhwbGljaXQg
TXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
YW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAppbmRl
eCBhYzcyODZhYzlhMDYwYjc1MzRjYjJlZGU5MjFkNmNiZDc3YTk3YTg4Li40MGI5ZDAxZGMxODRi
OTZkNWRmM2FiOWI3ZjQwOTQ2M2E5NzgzNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAKQEAgLTQzLDExICs0MywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVy
PiBQYW5uZXI6OmNyZWF0ZShQYW5uaW5nTW9kZWxUeXBlIG1vZGVsLCBmbG9hdCBzYW1wbGVSYXRl
LAogCiAgICAgc3dpdGNoIChtb2RlbCkgewogICAgIGNhc2UgUGFubmluZ01vZGVsVHlwZTo6RXF1
YWxwb3dlcjoKLSAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxFcXVhbFBvd2VyUGFu
bmVyPihzYW1wbGVSYXRlKTsKKyAgICAgICAgcGFubmVyID0gbWFrZVVuaXF1ZTxFcXVhbFBvd2Vy
UGFubmVyPihzYW1wbGVSYXRlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFBhbm5pbmdN
b2RlbFR5cGU6OkhSVEY6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURlBh
bm5lcj4oc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpOworICAgICAgICBwYW5uZXIgPSBtYWtl
VW5pcXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybUF1ZGlvRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1BdWRpb0RhdGEuaAppbmRleCBjZGE3MmU4YWIzYzRjZGMwYTg2OGZhYWM0ZjA1Y2U2MWM0
NDQwMmQwLi40NjM1YTY3MzNlY2MzZjNhMDc1MDJmYzdhNzUwMTczZTMzZTExZjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmgKQEAg
LTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1BdWRp
b0RhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgflBsYXRmb3JtQXVkaW9EYXRhKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggZTAy
Mzk0YWE1YjE0OWNkMTU5NjkxMmEyNTY4MWZmNWVhNDRhZDhkMi4uYzhiZDY0YTQxYmY2MTJlODll
M2MyMTRmYTIyZGNjNTk5NDhlNTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBA
IFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlh
U2Vzc2lvbj4gUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lv
bkNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
TWVkaWFTZXNzaW9uPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtTWVk
aWFTZXNzaW9uPihjbGllbnQpOwogfQogCiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1N
ZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCmluZGV4IDMwNDNmYzhhMDRkZjBkNzdjMTBh
YTAzNzliZDI2YTM5ZDQ2Y2U2YmEuLjhhNjc1NWM1NGFkMDBhM2E4MTAxODc0MjE2MmNjZDA3NGRl
MTBlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtMTE3
LDcgKzExNyw3IEBAIHZvaWQgUmV2ZXJiOjppbml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1bHNlUmVz
cG9uc2VCdWZmZXIsIHNpemVfdCByZW5kZXJTbGljZVNpemUsCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1SZXNwb25zZUNoYW5uZWxzOyArK2kpIHsKICAgICAgICAgQXVkaW9DaGFubmVs
KiBjaGFubmVsID0gaW1wdWxzZVJlc3BvbnNlQnVmZmVyLT5jaGFubmVsKGkpOwogCi0gICAgICAg
IG1fY29udm9sdmVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNo
YW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2Us
IHVzZUJhY2tncm91bmRUaHJlYWRzKSk7CisgICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQobWFr
ZVVuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4RkZU
U2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7CiAKICAg
ICAgICAgY29udm9sdmVyUmVuZGVyUGhhc2UgKz0gcmVuZGVyU2xpY2VTaXplOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKaW5kZXggM2UyNTc2YjM1NzU3ZGJhMjQ3
MGM4ZWI3ZGEzYzE3YmVlYmJmZGNlZC4uMjM0ZTMxZGFlYmJkNGRkYWEzNmExZTkwNTMxMWViOTky
MmZhYTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKQEAgLTM4LDcg
KzM4LDcgQEAgY2xhc3MgQXVkaW9CdXM7CiAgICAgCiAvLyBNdWx0aS1jaGFubmVsIGNvbnZvbHV0
aW9uIHJldmVyYiB3aXRoIGNoYW5uZWwgbWF0cml4aW5nIC0gb25lIG9yIG1vcmUgUmV2ZXJiQ29u
dm9sdmVyIG9iamVjdHMgYXJlIHVzZWQgaW50ZXJuYWxseS4KIAotY2xhc3MgUmV2ZXJiIHsKK2Ns
YXNzIFJldmVyYiBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZW51bSB7IE1heEZyYW1lU2l6ZSA9IDI1NiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaAppbmRleCA1
MTJiNmFkZTM0MWEyODU2OTcyZWUzZjdiY2IyMTE2NmJiNzIxYTFmLi5hNjI4MzVmOWMwZDdkNzQz
YzllOTI3Y2VkZTJkNmExZGE0NTU4NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaApAQCAtMzYsNyArMzYs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgaXMg
YSBjaXJjdWxhciBkZWxheSBidWZmZXIgd2l0aCBvbmUgY2xpZW50IHJlYWRpbmcgZnJvbSBpdCBh
bmQgbXVsdGlwbGUgY2xpZW50cwogLy8gd3JpdGluZy9hY2N1bXVsYXRpbmcgdG8gaXQgYXQgZGlm
ZmVyZW50IGRlbGF5IG9mZnNldHMgZnJvbSB0aGUgcmVhZCBwb3NpdGlvbi4gIFRoZSByZWFkIG9w
ZXJhdGlvbiB3aWxsIHplcm8gdGhlIG1lbW9yeQogLy8ganVzdCByZWFkIGZyb20gdGhlIGJ1ZmZl
ciwgc28gaXQgd2lsbCBiZSByZWFkeSBmb3IgYWNjdW11bGF0aW9uIHRoZSBuZXh0IHRpbWUgYXJv
dW5kLgotY2xhc3MgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIHsKK2NsYXNzIFJldmVyYkFjY3Vt
dWxhdGlvbkJ1ZmZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyKHNpemVfdCBsZW5ndGgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
LmNwcAppbmRleCAxNDVkZjgxZTJhNmJhMmMyZGFhOWJiNDFlNmI1Y2FiYWYzODVmOTFjLi5hOWM5
MzVjMWEyODVhYjEzNjJkOGZmMWRmOGNlYmE1YTdlNWFhNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNl
UmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGkKIAogICAgICAgICBib29sIHVzZURpcmVjdENvbnZv
bHZlciA9ICFzdGFnZU9mZnNldDsKIAotICAgICAgICBhdXRvIHN0YWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZXZlcmJDb252b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5ndGgs
IHJldmVyYlRvdGFsTGF0ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwgcmVu
ZGVyUGhhc2UsIHJlbmRlclNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1c2VEaXJl
Y3RDb252b2x2ZXIpOworICAgICAgICBhdXRvIHN0YWdlID0gbWFrZVVuaXF1ZTxSZXZlcmJDb252
b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5ndGgsIHJldmVyYlRvdGFsTGF0
ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2UsIHJlbmRl
clNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1c2VEaXJlY3RDb252b2x2ZXIpOwog
CiAgICAgICAgIGJvb2wgaXNCYWNrZ3JvdW5kU3RhZ2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaAppbmRleCA1YjgxOWUxYTNl
NmY0ZmIxZjhkYjBjNTk2OTcyNjJhYWMwOWM2YmRlLi4zMjAwYjQ1ZWE4ZGY3YzIxY2U2ZmEzN2Uw
OGJiMjc5MWY4YWU1ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXIuaApAQCAtNDMsOCArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEF1ZGlvQ2hhbm5lbDsKIAotY2xhc3MgUmV2ZXJiQ29udm9sdmVyIHsKK2NsYXNzIFJl
dmVyYkNvbnZvbHZlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmV2ZXJiQ29udm9sdmVyKTsKIHB1YmxpYzoKICAgICAvLyBt
YXhGRlRTaXplIGNhbiBiZSBhZGp1c3RlZCAoZnJvbSBzYXkgMjA0OCB0byAzMjc2OCkgZGVwZW5k
aW5nIG9uIGhvdyBtdWNoIHByZWNpc2lvbiBpcyBuZWNlc3NhcnkuCiAgICAgLy8gRm9yIGNlcnRh
aW4gdHdlYWt5IGRlLWNvbnZvbHZpbmcgYXBwbGljYXRpb25zIHRoZSBwaGFzZSBlcnJvcnMgYWRk
IHVwIHF1aWNrbHkgYW5kIGxlYWQgdG8gbm9uLXNlbnNpY2FsIHJlc3VsdHMgd2l0aApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2Uu
Y3BwCmluZGV4IDBmZGU0MjFhZjJmODJmZDQ4NzRkOTRmNmFmMWQ2MzQ3MjM5YzY1NmUuLjRmZjk1
M2IyNjA0OTE3ZDM0NTIwMzk0MDViNjVkZTJiZDVhMWVhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKQEAgLTU1
LDE2ICs1NSwxNiBAQCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2Uo
Y29uc3QgZmxvYXQqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90LAogICAgIEFTU0VSVChhY2N1bXVs
YXRpb25CdWZmZXIpOwogCiAgICAgaWYgKCFtX2RpcmVjdE1vZGUpIHsKLSAgICAgICAgbV9mZnRL
ZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKKyAgICAgICAgbV9m
ZnRLZXJuZWwgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKICAgICAgICAgbV9mZnRL
ZXJuZWwtPmRvUGFkZGVkRkZUKGltcHVsc2VSZXNwb25zZSArIHN0YWdlT2Zmc2V0LCBzdGFnZUxl
bmd0aCk7Ci0gICAgICAgIG1fZmZ0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRDb252
b2x2ZXI+KGZmdFNpemUpOworICAgICAgICBtX2ZmdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RkZU
Q29udm9sdmVyPihmZnRTaXplKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIXN0YWdl
T2Zmc2V0KTsKICAgICAgICAgQVNTRVJUKHN0YWdlTGVuZ3RoIDw9IGZmdFNpemUgLyAyKTsKIAot
ICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5
PihmZnRTaXplIC8gMik7CisgICAgICAgIG1fZGlyZWN0S2VybmVsID0gbWFrZVVuaXF1ZTxBdWRp
b0Zsb2F0QXJyYXk+KGZmdFNpemUgLyAyKTsKICAgICAgICAgbV9kaXJlY3RLZXJuZWwtPmNvcHlU
b1JhbmdlKGltcHVsc2VSZXNwb25zZSwgMCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2RpcmVj
dENvbnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGlyZWN0Q29udm9sdmVyPihyZW5kZXJTbGlj
ZVNpemUpOworICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RGlyZWN0Q29u
dm9sdmVyPihyZW5kZXJTbGljZVNpemUpOwogICAgIH0KICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5h
bGxvY2F0ZShyZW5kZXJTbGljZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAppbmRleCBhMDQ5MDk3MDM0MGFiM2Iz
MzYwMGIwODllNTk4NDc0ZmIzZDQ1NWU2Li4zYzAzYmUzNDFiM2I3ZDY0NjIxZGM4MDM4MTY2OTM2
MGY0ZGI0YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXJTdGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlclN0YWdlLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRGlyZWN0Q29udm9s
dmVyOwogICAgIAogLy8gQSBSZXZlcmJDb252b2x2ZXJTdGFnZSByZXByZXNlbnRzIHRoZSBjb252
b2x1dGlvbiBhc3NvY2lhdGVkIHdpdGggYSBzdWItc2VjdGlvbiBvZiBhIGxhcmdlIGltcHVsc2Ug
cmVzcG9uc2UuCiAvLyBJdCBpbmNvcnBvcmF0ZXMgYSBkZWxheSBsaW5lIHRvIGFjY291bnQgZm9y
IHRoZSBvZmZzZXQgb2YgdGhlIHN1Yi1zZWN0aW9uIHdpdGhpbiB0aGUgbGFyZ2VyIGltcHVsc2Ug
cmVzcG9uc2UuCi1jbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSB7CitjbGFzcyBSZXZlcmJDb252
b2x2ZXJTdGFnZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgLy8gcmVuZGVyUGhhc2UgaXMgdXNlZnVsIHRvIGtub3cgc28gdGhhdCB3ZSBjYW4gbWFu
aXB1bGF0ZSB0aGUgcHJlIHZlcnN1cyBwb3N0IGRlbGF5IHNvIHRoYXQgc3RhZ2VzIHdpbGwgcGVy
Zm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5w
dXRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVm
ZmVyLmgKaW5kZXggYmIwNmU0ZWVkNjMzZjBlN2M2ODJlMjBlNGU2YTU3MmFhMWZhYTk2Ni4uYWY5
ZWQwMGQ3MzNlODQyYjZlZDNhNjQ3NDg1NDIwZDNjNzY3NzUzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCkBAIC0zNCw3ICszNCw4
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFJldmVyYklucHV0QnVmZmVyIGlzIHVzZWQg
dG8gYnVmZmVyIGlucHV0IHNhbXBsZXMgZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcgYnkgdGhlIGJh
Y2tncm91bmQgdGhyZWFkcy4KLWNsYXNzIFJldmVyYklucHV0QnVmZmVyIHsKK2NsYXNzIFJldmVy
YklucHV0QnVmZmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBSZXZlcmJJbnB1dEJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCmluZGV4IDJmY2Q4
OWY3ZWNhMzc1ODU4NjMxYTliMjc2NWExMGQyMDFiMzQxYzcuLmMxMzJmNWQ5NzYyYzc1NjZiMjMy
NWMwNjRiMjhkZThiNmUzOTAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1NpbmNSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9TaW5jUmVzYW1wbGVyLmgKQEAgLTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBTaW5jUmVzYW1wbGVyIGlzIGEgaGlnaC1xdWFsaXR5IHNhbXBsZS1yYXRlIGNvbnZlcnRl
ci4KIAotY2xhc3MgU2luY1Jlc2FtcGxlciB7CitjbGFzcyBTaW5jUmVzYW1wbGVyIGZpbmFsIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICAvLyBzY2FsZUZh
Y3RvciA9PSBzb3VyY2VTYW1wbGVSYXRlIC8gZGVzdGluYXRpb25TYW1wbGVSYXRlCiAgICAgLy8g
a2VybmVsU2l6ZSBjYW4gYmUgYWRqdXN0ZWQgZm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBiZXR0ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCmluZGV4IDI2NmJjYWY5
ODBkNzI2ZmEyZjYzN2NmZTkzYTVkNGMzOGIyNGVlMDYuLjY3NWVlNGFkMGM0NDY3Y2QxZGQ2ZDFk
NTE2MTFlNzdiOThjNGM2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1VwU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2Ft
cGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVXBTYW1w
bGVyIHVwLXNhbXBsZXMgdGhlIHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCiAKLWNs
YXNzIFVwU2FtcGxlciB7CitjbGFzcyBVcFNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVwU2FtcGxlcihzaXplX3QgaW5w
dXRCbG9ja1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
WmVyb1BvbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKaW5k
ZXggODMxZGU5MDkzYjAwNTYxNmI0YmQ3N2VhN2IwNzc4YzM3ZGFhN2I2ZS4uMDJmZmFjZDVlYWNh
N2NlMjc1ODkyYmU4ZDY0Mzk0YzczM2RjN2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9aZXJvUG9sZS5oCkBAIC0zMyw3ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gWmVyb1BvbGUgaXMgYSBzaW1wbGUgZmlsdGVyIHdpdGggb25lIHplcm8gYW5kIG9uZSBwb2xl
LgogCi1jbGFzcyBaZXJvUG9sZSB7CitjbGFzcyBaZXJvUG9sZSBmaW5hbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgWmVyb1BvbGUoKQogICAgICAgICA6IG1f
emVybygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
V2ViQXVkaW9CdWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9XZWJBdWRpb0J1ZmZlckxpc3QuaAppbmRleCA4NmI2NWEyMjUzYWYxYWViMmExY2E5Y2FhMzY2
Nzg2Y2Q3ZDY1NTIwLi44YTdlN2EwM2FjMzNhNGU1NWM0M2MzMWFlYzYzN2IxODljYjFjN2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1
ZmZlckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJB
dWRpb0J1ZmZlckxpc3QuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIAotY2xhc3MgV2ViQXVkaW9CdWZmZXJM
aXN0IDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKK2NsYXNzIFdlYkF1ZGlvQnVmZmVyTGlz
dCBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CiBwdWJsaWM6CiAgICAgV2ViQXVk
aW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mLCB1aW50MzJfdCBzYW1wbGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lci5jcHAKaW5kZXggNWJmOGZkYTZiMjkxMmIxOGYxMTkwZGNiZTcwODJiZjY4NGJlZTk4
Zi4uMWE1NDk1ZmQ3NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlv
SU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAg
ICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAt
IHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNr
LCBzYW1wbGVSYXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1w
bGVSYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCA4YWY4NzdlYzJjNGNhMGFiZDMwNzQ4MzVm
NTRiMzRhZWJmMDQzM2EyLi40YmRlN2U0MWUyYjY0MzdjZDBmZjcyNWU0ZDA3OWQ2OGY4OWU3ZGM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0
aW5hdGlvbklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvRGVzdGluYXRpb25JT1MuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNr
JiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9H
KE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVk
IG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b0Rlc3RpbmF0aW9uSU9TPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBm
bG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXgg
ZGM2YzhiY2NlMzY5ZDA2YWVkYzhmZDMzM2M3MzhjMGJlOTU3NWRkNC4uNjM5ODI0MGJiZDhkOTY3
MzAyZGY3ZTllY2ZmNDA3NTAyZGE2ZTIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC01OSw2ICs1OSw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBjYXRlZ29yeU5hbWUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUg
Y2F0ZWdvcnkpCiAjZW5kaWYKIAogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXVkaW9TZXNzaW9uUHJpdmF0ZShB
dWRpb1Nlc3Npb24qKTsKICAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5
T3ZlcnJpZGU7CkBAIC03MSw3ICs3Miw3IEBAIEF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vz
c2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKikKIH0KIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Np
b24oKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0
ZT4odGhpcykpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRl
Pih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCmluZGV4IDc2NGEzNDdmOTgyOWUxZTg0
NzViZDJlYTEyODBhYTE3NTAyNmVjZmMuLjlmZTY0YmFhYTQ3ODRmZWNkYWIzZDZkZGI1ZTI3ODM4
MWUxZTA3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lP
Q2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAg
ICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1
bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7
CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRh
U291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxl
RGF0YVNvdXJjZS5tbQppbmRleCA3N2Q0MzE2NTY2OTkwZTkwMWI5MjBiZjc3OGQ5NjllOWYxOGYx
ODhhLi40MWFmZTM5ZjIzMmFlNTg4MDg2MGYwODRkNTU2Y2I0YTVkOGFlMjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURh
dGFTb3VyY2UubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6OnNldElucHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZgog
ewogICAgIEFTU0VSVChmb3JtYXQuc2FtcGxlUmF0ZSgpID49IDApOwogCi0gICAgbV9pbnB1dERl
c2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZv
cm1hdCk7CisgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKG1fb3V0cHV0RGVzY3JpcHRpb24pCiAgICAg
ICAgIHJldHVybiBzZXR1cENvbnZlcnRlcigpOwogCkBAIC0xMjAsOSArMTIwLDkgQEAgT1NTdGF0
dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRPdXRwdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJgogICAgIEFTU0VSVChtX2lucHV0RGVzY3JpcHRpb24pOwogICAgIEFT
U0VSVChmb3JtYXQuc2FtcGxlUmF0ZSgpID49IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlwdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOwor
ICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4oZm9ybWF0KTsKICAgICBpZiAoIW1fcmluZ0J1ZmZlcikKLSAgICAgICAgbV9yaW5nQnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1
ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwogCiAgICAgbV9yaW5nQnVmZmVyLT5h
bGxvY2F0ZShmb3JtYXQsIHN0YXRpY19jYXN0PHNpemVfdD4obV9tYXhpbXVtU2FtcGxlQ291bnQp
KTsKICAgICBtX3NjcmF0Y2hCdWZmZXIgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZSht
X291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX21heGltdW1TYW1wbGVD
b3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TZXNzaW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1Nlc3Npb25NYWMuY3BwCmluZGV4IDdmNmVmOWQzM2RiMWZiNDdlN2NmMTRjNTkwNGE0NjExMmIx
NTIyMzIuLmNjMDRmMGJlMzA5NzQ5OGI4MzY2ZTkyNDIwNzNlY2UzZTE5NzVhYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewogfTsKIAog
QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkKKyAgICA6IG1fcHJpdmF0ZSht
YWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KGlzTXV0ZWQoKSkpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAppbmRleCAx
OGEyNmFiNmRjNWM4ZGQwMTI1MmRiMDY0NmQ0ZjViOWI0N2I2ZmY1Li4wNGFjZWZjOGRhYWQ3MTMy
OGE0ZGRmYWJiZDA0YWY5ZWNkOGViOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCkBAIC0zOSw2ICszOSw3IEBAIHR5cGVkZWYgc3Ry
dWN0IEF1ZGlvQnVmZmVyTGlzdCBBdWRpb0J1ZmZlckxpc3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkNBUmluZ0J1ZmZlclN0b3JhZ2UoKSA9IGRlZmF1
bHQ7CiAgICAgdmlydHVhbCB2b2lkIGFsbG9jYXRlKHNpemVfdCkgPSAwOwpAQCAtNDYsNyArNDcs
NyBAQCBjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKICAgICB2aXJ0dWFsIHZvaWQqIGRhdGEo
KSA9IDA7CiB9OwogCi1jbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yIDogcHVibGljIENB
UmluZ0J1ZmZlclN0b3JhZ2UgeworY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvciBmaW5h
bCA6IHB1YmxpYyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKIHB1YmxpYzoKICAgICB+Q0FSaW5nQnVm
ZmVyU3RvcmFnZVZlY3RvcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCmluZGV4IGI5ODAzYmZhMDIzMjQzNTdjMGRmZTA0NzMx
M2QyYzNlYzMwNGNiOTIuLjdhNDdmNTYwOGJiYjZkZTlkMzc3M2IxN2U5OGU0NzY0YTI0MjIyYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5
ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyQ0Y+
KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckNGPihkYXRh
LCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyQ0Y6OktleWVkRGVjb2RlckNGKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDFhNjI3ZWEwMGI5MmNiYWE2Y2Y3YzM1NWQ1ZTQ0NWVjNDg2
MWE0MTIuLjQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVy
PiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEtleWVkRW5jb2RlckNGPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2RlckNG
PigpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0
ZURpY3Rpb25hcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFp
blRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFp
blRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCmluZGV4IGI2ODkyMjgwNWU1ZDM3M2RlN2YwYWVkNzg5
MDgyNWFjY2NjMTIwMzkuLjA3YTQ1Y2FkNzhiNmQ0MzdmYWE4NDI1MjY5OWMwZDQ4NmQ3OGVkNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hh
cmVkVGltZXJDRi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBQb3dlck9i
c2VydmVyKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIFBvd2VyT2JzZXJ2ZXIqIHBv
d2VyT2JzZXJ2ZXI7CiAgICAgaWYgKCFwb3dlck9ic2VydmVyKQotICAgICAgICBwb3dlck9ic2Vy
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIp
LnJlbGVhc2UoKTsKKyAgICAgICAgcG93ZXJPYnNlcnZlciA9IG1ha2VVbmlxdWU8UG93ZXJPYnNl
cnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CiAjZWxpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNh
dGlvbiA9IGZhbHNlOwogICAgIGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0
aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDEyYWIzMjFjYjQ3NzJiZTcw
MDE1MDBmMTk2Zjc4YjZlYmU1ZTJiZDUuLjA1YzU1MjRkZWZjNzc3NjExZGY3NWY0OWIxOTFkN2Zk
NjlmNDU4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC02NSw3ICs2NSw3IEBA
IGJvb2wgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IE5ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE5ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyOjppbml0aWFsaXplKGNvbnN0IFVSTCogdXJsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbQppbmRleCBhZTBiZDIwOWNjZDZmMzE3YzkxOTMyNWExNmExOGE5OWNkMTU3
MmU0Li4wZDJhNjIxODZiNWE1NGUyYjg1MWZmOTZkNTI4MTAxZjg0NjZmNDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5tbQpAQCAtNTAsNyArNTAsNyBAQCBib29sIFBhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRl
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlcj4oKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkhhbmRsZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggZTgzNjljNmU1MDE2ZTIzY2Y4
NzNiOTUzN2QyYWZiNGYwYmM2ODUyMi4uOGZlMzhhZDBjY2UyZmQ1NDJkMjk3MDE3ZmRhMmQxY2Iz
NTViNzcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xs
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1
cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3IK
ICAgICAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZT4oKTsKKyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBtYWtlVW5pcXVl
PFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwogICAgIH0KIAogICAgIGlmIChzbmFwUG9pbnRz
LmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBTdGF0ZS0+c25hcE9mZnNldHNGb3JBeGlzKG90aGVy
U2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKaW5kZXggNTAzZjk3YjkyMDE4ZGE4N2MyNDg4OTFiMjI2NzlhYmI3MDA1YjMwMC4uOTZj
ODUxMjkzNWFiOWI2OThlODk4NTUxNjNiYjZkMjJhYzliODJlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2
YXRlPiBDRE1GYWN0b3J5Q2xlYXJLZXk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
CiAjZWxzZQogICAgIEFTU0VSVChzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKTsKICNlbmRp
ZgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVDbGVhcktleT4oKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CiB9CiAKIGJvb2wgQ0RN
RmFjdG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IGQ0NzMwNGM5NWIyNmVmMjA0ZjVkYTRh
ZGNiYjhhMDg2NGRlMThiYjMuLjBiOTEwNjQ5Y2E0YTQ3YTkxNWQ1NDhjOWQ5NGFmZmYzMzUzNTky
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1GYWN0b3J5Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMg
Q0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIENETUZhY3RvcnlDbGVhcktleSYgc2luZ2xldG9uKCk7CiAKQEAgLTU0LDYgKzU1LDcg
QEAgY2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUZhY3Rvcnkgewog
fTsKIAogY2xhc3MgQ0RNUHJpdmF0ZUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETVByaXZhdGUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVByaXZhdGVD
bGVhcktleSgpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVDbGVhcktleSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2Ev
R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KaW5kZXggZjcyMGNmZDMzNDNmOWJhZDMz
YTQ5MTlhNzhmODY2ZjlkODYyYTBhZC4uNWE2ZWI0MDQzOWVmNTkwNTcyYTdjMjllZmMzMzhkOTJm
MjM5YzVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2Nv
YS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBA
IC02MSw3ICs2MSw3IEBAIHZvaWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRy
b2xsZXJEaWRDb25uZWN0KEdDQ29udHJvbGxlciAqY29udHJvbGxlCiAgICAgTE9HKEdhbWVwYWQs
ICJHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlciBjb250cm9sbGVyICVwIGFkZGVkIiwgY29u
dHJvbGxlcik7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWRE
ZXZpY2UoKTsKLSAgICBhdXRvIGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdhbWVDb250cm9s
bGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5kZXgpOworICAgIGF1dG8gZ2FtZXBhZCA9IG1ha2VV
bmlxdWU8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPihjb250cm9sbGVyLCBpbmRleCk7CiAKICAgICBp
ZiAobV9nYW1lcGFkVmVjdG9yLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgbV9nYW1lcGFkVmVj
dG9yLmdyb3coaW5kZXggKyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWQuaAppbmRleCAxNWYwNGM3MDhlOTAwN2JiNGRhZGVlNTQzNWMzNTdm
MDJmNTMxYzkzLi5hMjUyMzRmYjg3NWE3NTFjNjNjMzdiYTZhNWNlZTdkNDUzNGQ1YTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCkBA
IC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBISURHYW1lcGFk
RWxlbWVudCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEhJREdh
bWVwYWRFbGVtZW50KGRvdWJsZSB0aGVNaW4sIGRvdWJsZSB0aGVNYXgsIElPSElERWxlbWVudFJl
ZiBlbGVtZW50KQogICAgICAgICA6IG1pbih0aGVNaW4pCiAgICAgICAgICwgbWF4KHRoZU1heCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVw
YWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDU3NDM5MWI1YzExMWEzMmJlOTEyNWNhNmNlMDYwMGY1
ZDYzODIyNTcuLjZkMTRiNmIyMTYxMGI4NmNlNGMwMDEzZTUwOTExYjg4Zjk1ZTFhNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZFByb3ZpZGVyLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSElER2FtZXBhZFByb3Zp
ZGVyOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiAgICAgTE9HKEdhbWVwYWQs
ICJISURHYW1lcGFkUHJvdmlkZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKIAogICAgIHVu
c2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxISURHYW1lcGFkPiBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1ZTxISURHYW1l
cGFkPihkZXZpY2UsIGluZGV4KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gZ2Ft
ZXBhZCA9IG1ha2VVbmlxdWU8SElER2FtZXBhZD4oZGV2aWNlLCBpbmRleCk7CiAKICAgICBpZiAo
bV9nYW1lcGFkVmVjdG9yLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgbV9nYW1lcGFkVmVjdG9y
Lmdyb3coaW5kZXggKyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IGE0YTMwYjUyYWJlNDhhZjg1MGRj
N2M3NDdhM2JjZGUxZDUxZmRhNWYuLjBlNTk3MjMyMWI1ZjczZjU3MmJkNzk2NTg4MTFmMDAzYTk1
ZWQ0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRE
ZWNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZERlY29kZXJHZW5lcmljLmNwcApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBLZXllZERlY29k
ZXJHZW5lcmljOjpEaWN0aW9uYXJ5IHsKICAgICB1c2luZyBOb2RlID0gVmFyaWFudDxWZWN0b3I8
dWludDhfdD4sIGJvb2wsIHVpbnQzMl90LCB1aW50NjRfdCwgaW50MzJfdCwgaW50NjRfdCwgZmxv
YXQsIGRvdWJsZSwgU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4sIHN0ZDo6dW5p
cXVlX3B0cjxBcnJheT4+OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBh
ZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBzdGQ6Om1h
a2VfdW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQorICAgIHZvaWQgYWRk
KGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgbWFrZVVuaXF1
ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KICAgICBOb2RlJiBnZXQoY29uc3Qg
U3RyaW5nJiBrZXkpIHsgcmV0dXJuICptX21hcC5nZXQoa2V5KTsgfQogCiBwcml2YXRlOgpAQCAt
NzcsNyArNzcsNyBAQCBzdGF0aWMgYm9vbCByZWFkU2ltcGxlVmFsdWUoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciYgZGVjb2RlciwgS2V5ZWREZWNvZGVyR2VuZQogCiBzdGQ6OnVuaXF1ZV9wdHI8
S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVy
R2VuZXJpYz4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVy
R2VuZXJpYz4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCkBAIC04Niw3ICs4
Niw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZSB0
eXBlOwogICAgIFN0cmluZyBrZXk7CiAKLSAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gc3RkOjptYWtl
X3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgIG1fcm9vdERpY3Rpb25hcnkgPSBtYWtlVW5pcXVl
PERpY3Rpb25hcnk+KCk7CiAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG1fcm9vdERpY3Rp
b25hcnkuZ2V0KCkpOwogCiAgICAgYm9vbCBvayA9IHRydWU7CkBAIC0xNDQsNyArMTQ0LDcgQEAg
S2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBhdXRvKiBjdXJyZW50RGljdGluYXJ5ID0gbV9kaWN0aW9uYXJ5
U3RhY2subGFzdCgpOwotICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtl
X3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0g
bWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2su
YXBwZW5kKG5ld0RpY3Rpb25hcnkuZ2V0KCkpOwogICAgICAgICAgICAgY3VycmVudERpY3RpbmFy
eS0+YWRkKGtleSwgV1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTE1NiwxMyArMTU2LDEzIEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2Rlckdl
bmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICBvayA9
IHJlYWRTdHJpbmcoZGVjb2Rlciwga2V5KTsKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBcnJheT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBtYWtlVW5pcXVlPEFy
cmF5PigpOwogICAgICAgICAgICAgbV9hcnJheVN0YWNrLmFwcGVuZChuZXdBcnJheS5nZXQoKSk7
CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCktPmFkZChrZXksIFdURk1vdmUo
bmV3QXJyYXkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
S2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZTo6QmVnaW5BcnJheUVsZW1lbnQ6IHsKLSAgICAgICAg
ICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsK
KyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4o
KTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9uYXJ5Lmdl
dCgpKTsKICAgICAgICAgICAgIG1fYXJyYXlTdGFjay5sYXN0KCktPmFwcGVuZChXVEZNb3ZlKG5l
d0RpY3Rpb25hcnkpKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggMmY4
NDEwNDc0NjM5NTU4ZjI5NWU4MWE1MTcxOWE4NzM0YjMyZDU4YS4uMjFjYzFlYmU0YTkwMWExM2M3
NDQwM2RjMDFjZjJmYzgxODEzMDEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5
ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXll
ZEVuY29kZXJHZW5lcmljPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2Rlckdl
bmVyaWM+KCk7CiB9CiAKIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4IDdhZTY1YzVhOGQzMDllM2Rl
ZWY1M2NlOGNmMWUzMDI0MjZkMjdjMTQuLjIwOGFmN2I4NDc5ZWNhZWY1NTMwY2NjNTU3YjczNmVi
YWJjYmNiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBzdGF0aWMg
Y29uc3QgU2Vjb25kcyBzY3JvbGxDYXB0dXJlVGhyZXNob2xkIHsgMTUwX21zIH07CiAKIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAg
ICwgbV9vdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRv
ckdlbmVyaWM6Om92ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lckZpcmVkKQogewotICAgIG1f
a2luZXRpY0FuaW1hdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yz4obV9zY3JvbGxhYmxlQXJlYSwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAg
IG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4o
bV9zY3JvbGxhYmxlQXJlYSwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogI2lmIEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQogICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAg
ICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9u
KTsKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3VyZVNt
b290aFNjcm9sbGluZ0FuaW1hdGlvbigpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlv
biwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAgIG1fc21vb3RoQW5pbWF0aW9u
ID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xsYWJsZUFyZWEsIG1f
Y3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAgICAgICAg
IHVwZGF0ZVBvc2l0aW9uKFdURk1vdmUocG9zaXRpb24pKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCmluZGV4IGU3
ZGQxOTE0MDQxNzE5NjhmOTBkNmZlYTMzNTRlMTRjZWY2ZjU1NjcuLjM2MWU5ZGYzMjQ1YmU1NjVi
MGUyYTQxZGYxOGIyNmZmYmM3MTljZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6
ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29kZXJHbGliPihkYXRhLCBzaXplKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJHbGliPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWRE
ZWNvZGVyR2xpYjo6S2V5ZWREZWNvZGVyR2xpYihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCmluZGV4IDc0MDRiY2JkNDQ5YWE0OTIxYjhjZTJiN2UwMTg0NDk1MDEwNmY2ODAuLjcw
ZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+
IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
S2V5ZWRFbmNvZGVyR2xpYj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJH
bGliPigpOwogfQogCiBLZXllZEVuY29kZXJHbGliOjpLZXllZEVuY29kZXJHbGliKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBm
MWM5MGU1OTg4OTNhZGE4MzQ3OWZjN2IzODNhOTBhNTM1YmYyYTk5Li5iMmJkNDdjYjE2MTRjZGFl
NWQ4OWVlYTE3YjQyYzQ3ODZiYzJkOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6Y2xlYXJUaW1lcigpCiB2b2lkIEJpdG1hcEltYWdlOjpzdGFydFRpbWVyKFNlY29u
ZHMgZGVsYXkpCiB7CiAgICAgQVNTRVJUKCFtX2ZyYW1lVGltZXIpOwotICAgIG1fZnJhbWVUaW1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmQml0bWFwSW1hZ2U6OmFkdmFuY2VB
bmltYXRpb24pOworICAgIG1fZnJhbWVUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAm
Qml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOwogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRP
bmVTaG90KGRlbGF5KTsKIH0KIApAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OnJlc2V0QW5pbWF0aW9uKCkKIHZvaWQgQml0bWFwSW1hZ2U6OmRlY29kZShXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZGVjb2RpbmdDYWxsYmFja3MpCi0g
ICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGdW5j
dGlvbjx2b2lkKCk+LCAxPj4oKTsKKyAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IG1ha2VV
bmlxdWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOwogCiAgICAgbV9kZWNvZGluZ0Nh
bGxiYWNrcy0+YXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAK
aW5kZXggMGQzNTU2MTg5NzBmYjI3N2Y3MmU3ODk5MGUzZjRmMmEyMTZmYmM2OS4uMzUzZmNhNjYw
MTMyNjRiMDI0NjJhNTcxMjI0ZDA1YTE4MWQ5Njg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBA
IC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFRleHRMYXlvdXQgewogICAgIFRleHRMYXlvdXQoUmVuZGVy
VGV4dCYgdGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHhQb3MpCiAgICAgICAg
IDogbV9mb250KGZvbnQpCiAgICAgICAgICwgbV9ydW4oY29uc3RydWN0VGV4dFJ1bih0ZXh0LCB4
UG9zKSkKLSAgICAgICAgLCBtX2NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4VGV4
dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUpKQorICAgICAgICAsIG1fY29udHJvbGxl
cihtYWtlVW5pcXVlPENvbXBsZXhUZXh0Q29udHJvbGxlcj4obV9mb250LCBtX3J1biwgdHJ1ZSkp
CiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRQb2ludC5oCmluZGV4IDcyMDQ1M2Q5ZjA0NmQ3OWY0OGEwOWI4MWFmNzAwMGY0ZGUzYmUwMjUu
LmNlZmQ4ZDQyMjQ0ZDA2ZmNiODI0YmU1ZTNiNzM0MTljZDQ5OGE0ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKQEAgLTYzLDYgKzYzLDcgQEAg
Y2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBGbG9hdFBvaW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGbG9hdFBvaW50KCkgeyB9
CiAgICAgRmxvYXRQb2ludChmbG9hdCB4LCBmbG9hdCB5KSA6IG1feCh4KSwgbV95KHkpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAxODRiNDRiMDdh
NDEyMjE2YjllYzU5ODQyMmYwNzg3ZjBlNmM3YWViLi5lMGI0OWYyNDdjMjAwOWJkZDVmMWQwYzhl
YmE3YWQ2YzdlYjhjYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIEdseXBoRGF0YSBGb250OjpnbHlwaERhdGFGb3JDaGFy
YWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpIGNvbnN0CiBhdXRvIEZvbnQ6OmVuc3VyZURlcml2ZWRG
b250RGF0YSgpIGNvbnN0IC0+IERlcml2ZWRGb250cyYKIHsKICAgICBpZiAoIW1fZGVyaXZlZEZv
bnREYXRhKQotICAgICAgICBtX2Rlcml2ZWRGb250RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVy
aXZlZEZvbnRzPigpOworICAgICAgICBtX2Rlcml2ZWRGb250RGF0YSA9IG1ha2VVbmlxdWU8RGVy
aXZlZEZvbnRzPigpOwogICAgIHJldHVybiAqbV9kZXJpdmVkRm9udERhdGE7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCAyZTU4YmQ2OWViYjUzOTFlMDM2
ZDI4YzI3MDJjMWY0NTA1MDhiMzEyLi41NDRiMGI3MTE4YWIyZjkwODA3NDllNDQxZTUxNDlmMDUx
OGYyZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0yNjks
OSArMjY5LDcgQEAgY2xhc3MgRm9udCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnQ+IHsKICNlbmRp
ZgogCiAgICAgc3RydWN0IERlcml2ZWRGb250cyB7Ci0jaWYgIUNPTVBJTEVSKE1TVkMpCi0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotI2VuZGlmCisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAKICAgICAgICAgUmVmUHRyPEZvbnQ+
IHNtYWxsQ2Fwc0ZvbnQ7CkBAIC0zNDUsNyArMzQzLDcgQEAgQUxXQVlTX0lOTElORSBGbG9hdFJl
Y3QgRm9udDo6Ym91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAKICAgICBib3VuZHMg
PSBwbGF0Zm9ybUJvdW5kc0ZvckdseXBoKGdseXBoKTsKICAgICBpZiAoIW1fZ2x5cGhUb0JvdW5k
c01hcCkKLSAgICAgICAgbV9nbHlwaFRvQm91bmRzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxHbHlw
aE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4oKTsKKyAgICAgICAgbV9nbHlwaFRvQm91bmRzTWFwID0g
bWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4oKTsKICAgICBtX2dseXBoVG9C
b3VuZHNNYXAtPnNldE1ldHJpY3NGb3JHbHlwaChnbHlwaCwgYm91bmRzKTsKICAgICByZXR1cm4g
Ym91bmRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHAKaW5kZXggMGE2MmEyNzViYzY5MmVmMzk5MTE0MGUwMjhmNTgwMDQyMWQwYzcxMS4uMzcw
OWI0MWViMmI3YmQwYmY3YjEwMmFjNWRiZWZlMmY3NzczYWYxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAg
Rm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KICAgICAgICAgICAgICAgICBpdCA9IGZvbnRQbGF0Zm9y
bURhdGFDYWNoZSgpLmZpbmQoa2V5KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gZm9u
dFBsYXRmb3JtRGF0YUNhY2hlKCkuZW5kKCkpOwogICAgICAgICAgICAgICAgIGlmIChmb250UGxh
dGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaXQtPnZhbHVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZv
ckFsdGVybmF0ZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBpdC0+dmFsdWUgPSBtYWtlVW5p
cXVlPEZvbnRQbGF0Zm9ybURhdGE+KCpmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNzI3NGRiMGRiMzJiM2I0MWIz
ZTBlMWIxZWQwZmIyYWVhOGIzNmEzYi4uNjQ4MThmNGI1MTU1ZDQyYmZhYzgxYjYxZjRiNWY5Y2Rl
YTU0NTJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHN0YXRpYyBSZWY8Rm9udENhc2NhZGVGb250
cz4gcmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpCiAg
ICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5mb250cy5nZXQoKTsKIAog
ICAgIGF1dG8mIG5ld0VudHJ5ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICBuZXdF
bnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtl
eSksIEZvbnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKKyAg
ICBuZXdFbnRyeSA9IG1ha2VVbmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtl
eSksIEZvbnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKICAg
ICBSZWY8Rm9udENhc2NhZGVGb250cz4gZ2x5cGhzID0gbmV3RW50cnktPmZvbnRzLmdldCgpOwog
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwgPSA1
MDsKQEAgLTMyNiw5ICszMjYsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgIGlmIChn
bHlwaEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5p
cXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKICAgICBHcmFwaGljc0NvbnRleHQgcmVj
b3JkaW5nQ29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihk
aXNwbGF5TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJl
Y3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNw
bGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250
ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgfSk7CiAg
ICAgCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4
IGRiNzQzMDJlOWRhYTRlYjUyYzBjZTA4MWZkNTYwNTI3OTU3OGZiZjQuLjEyYWM4MzdmY2QyNDY1
ZjlmODFkZWIwNjg3YWE3NzZkNWVhMDY0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHZvaWQgRm9udENhc2NhZGVGb250czo6R2x5cGhQYWdlQ2FjaGVFbnRyeTo6c2V0R2x5cGhEYXRh
Rm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhCiB7CiAgICAgQVNTRVJUKCFnbHlwaERhdGFGb3JDaGFy
YWN0ZXIoY2hhcmFjdGVyKS5nbHlwaCk7CiAgICAgaWYgKCFtX21peGVkRm9udCkgewotICAgICAg
ICBtX21peGVkRm9udCA9IHN0ZDo6bWFrZV91bmlxdWU8TWl4ZWRGb250R2x5cGhQYWdlPihtX3Np
bmdsZUZvbnQuZ2V0KCkpOworICAgICAgICBtX21peGVkRm9udCA9IG1ha2VVbmlxdWU8TWl4ZWRG
b250R2x5cGhQYWdlPihtX3NpbmdsZUZvbnQuZ2V0KCkpOwogICAgICAgICBtX3NpbmdsZUZvbnQg
PSBudWxscHRyOwogICAgIH0KICAgICBtX21peGVkRm9udC0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFj
dGVyKGNoYXJhY3RlciwgZ2x5cGhEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKaW5kZXggMjU5ZTk3NTMzY2FlZGNmYzE0NWZm
N2FiNDI4ZWExNjlmNjRiMTU5NC4uNzllMmY1Mzg4YzQ2ZTU4OTIzMDE2MWM0NzQ1MjU0MTkyNDdl
ODJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhN
ZXRyaWNzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhN
ZXRyaWNzTWFwLmgKQEAgLTEzMCwxMCArMTMwLDEwIEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHR5cGVu
YW1lIEdseXBoTWV0cmljc01hcDxUPjo6R2x5cGhNZXRyaWNzUGFnZSYgR2x5cGhNZXRyaWNzTWFw
CiAgICAgfQogCiAgICAgaWYgKCFtX3BhZ2VzKQotICAgICAgICBtX3BhZ2VzID0gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoTWFwPGludCwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4o
KTsKKyAgICAgICAgbV9wYWdlcyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVl
X3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+KCk7CiAKICAgICBhdXRvJiBwYWdlID0gbV9wYWdlcy0+
ZW5zdXJlKHBhZ2VOdW1iZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
R2x5cGhNZXRyaWNzUGFnZT4odW5rbm93bk1ldHJpY3MoKSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVua25vd25NZXRyaWNzKCkpOwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKICAgICByZXR1cm4gKnBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDQwOGNmYjdkMWUyZGI5
OGY3YWRjODNiYmMzM2I4MWI5YWYxMjFiMGMuLjQ0N2Q3ZTNlMzU0NzYyZTgwYjhmMjdhOTUyNjIz
MjI3OWI1ZjkwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC01NTcsNiArNTU3LDcgQEAgY2xhc3MgR3JhcGhpY3NDb250
ZXh0IHsKICAgICBib29sIHNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MoKSBjb25zdDsKIAogICAg
IGNsYXNzIFdpbmRvd3NCaXRtYXAgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2luZG93c0JpdG1hcCk7CiAgICAgcHVibGlj
OgogICAgICAgICBXaW5kb3dzQml0bWFwKEhEQywgY29uc3QgSW50U2l6ZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaAppbmRleCAxYjQyMjg2ZGRmNDY1YzBlMmIxMjRkOGFmZGYwZjdjZDY0NzdjYmI3
Li5lMzNmOGZiZTczODkyZTM0YjhkZWY4MzZkNDZmNWM3MGM3OWM2MWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBC
aXRtYXBUZXh0dXJlR0w7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxl
KTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggMGJh
ZDRlNzA2MzQyMTk5ODY4OTQ0OTJkZmU2ZjYxZDMxNzg4MTlkMy4uYjg3MzE5NGVlMjQ2MDFmZTRl
MDcxNDdhYTcxZWEzMDU4N2E4NGE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMzAsNiArMzAsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGlj
c0NvbnRleHRJbXBsKTsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmNwcAppbmRleCA5NGFhYzFkZjgzNTZiZGIxMGRmN2QwODZmYWNlMjZjMWUzNzE4MzI2
Li42Y2QwMGMyNjU3MGQ5ZGIzYjlmYWE3ZTIwMjNhZjFhNWU3ZTYzYTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMTEy
LDcgKzExMiw3IEBAIGJvb2wgR3JhcGhpY3NMYXllcjo6c3VwcG9ydHNDb250ZW50c1RpbGluZygp
CiAjZW5kaWYKIAogLy8gU2luZ2xldG9uIGNsaWVudCB1c2VkIGZvciBsYXllcnMgb24gd2hpY2gg
Y2xlYXJDbGllbnQgaGFzIGJlZW4gY2FsbGVkLgotY2xhc3MgRW1wdHlHcmFwaGljc0xheWVyQ2xp
ZW50IDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgeworY2xhc3MgRW1wdHlHcmFwaGljc0xh
eWVyQ2xpZW50IGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBFbXB0eUdyYXBoaWNzTGF5
ZXJDbGllbnQmIHNpbmdsZXRvbigpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAg
ICAgaWYgKG1fdHJhbnNmb3JtKQogICAgICAgICAqbV90cmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAg
ZWxzZQotICAgICAgICBtX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRp
b25NYXRyaXg+KG1hdHJpeCk7CisgICAgICAgIG1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKIH0KIAogY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIEdyYXBoaWNzTGF5ZXI6OmNoaWxkcmVuVHJhbnNmb3JtKCkgY29uc3QKQEAgLTM1Niw3ICsz
NTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAgICAgaWYgKG1fY2hpbGRyZW5UcmFuc2Zvcm0p
CiAgICAgICAgICptX2NoaWxkcmVuVHJhbnNmb3JtID0gbWF0cml4OwogICAgIGVsc2UKLSAgICAg
ICAgbV9jaGlsZHJlblRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25N
YXRyaXg+KG1hdHJpeCk7CisgICAgICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXI6
OnNldE1hc2tMYXllcihSZWZQdHI8R3JhcGhpY3NMYXllcj4mJiBsYXllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAwMDlkNDg2
ODk1ZDU2ODYyNTQwMTFkZjU2MDBhNzIxMTI0MzBlNjJmLi43YTFmZWFhYzc5ZTc4YmE4OGZjYWRj
Yjg1ZTMyOTlmZDc5YTAwNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRmxvYXRBbmlt
YXRpb25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAg
IH0KIAogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQpAQCAtMTMy
LDcgKzEzMiw3IEBAIGNsYXNzIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1h
dGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUo
KSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZShjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgb3RoZXIpCkBA
IC0xNjMsNyArMTYzLDcgQEAgY2xhc3MgRmlsdGVyQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5p
bWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9u
ZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIEZpbHRlckFuaW1h
dGlvblZhbHVlKGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBvdGhlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA4ZWNmMzNmODk4Yjc0NDkxMWY3
MDVhMTQ5ZmY3ODhiNjdiNmQ5NGVmLi4zOTk5NjcyYjlmNTg5MzI4NmNmMzJkYjFjYzZiODBhMzMx
ODJhZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBA
IC0zNDksNyArMzQ5LDcgQEAgdm9pZCBJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMo
TGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWMKIHZvaWQgSW1hZ2U6OnN0
YXJ0QW5pbWF0aW9uQXN5bmNocm9ub3VzbHkoKQogewogICAgIGlmICghbV9hbmltYXRpb25TdGFy
dFRpbWVyKQotICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRpbWVyPigqdGhpcywgJkltYWdlOjpzdGFydEFuaW1hdGlvbik7CisgICAgICAgIG1fYW5pbWF0
aW9uU3RhcnRUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5p
bWF0aW9uKTsKICAgICBpZiAobV9hbmltYXRpb25TdGFydFRpbWVyLT5pc0FjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9hbmltYXRpb25TdGFydFRpbWVyLT5zdGFydE9uZVNob3QoMF9z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNE
TVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNl
c3Npb24uaAppbmRleCBiZTc2NzYwZjhlMzU2NWQ0MjY3MmIwMDVhOTZkY2RiN2ZhNGIyZDY5Li4y
NWU3OWE2ZGMwYTViMjE5M2E3MmEyMjdhYWNhMTc3M2E3ZTNjMjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0zMyw2
ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExlZ2FjeUNETVNlc3Npb25D
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgfkxlZ2FjeUNETVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lk
IHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRl
eCA3NTdmMDk1NjdkYzVkZmRmNWJlMDI2Mzk2MzlkMWVmZWM3MThjMGRiLi5hYmU4Njk0MTk0ZmY3
YzE3NTEwMGI2OTg4MDRhMTI0MGJkNjJjODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgY2xhc3Mg
TnVsbE1lZGlhUGxheWVyUHJpdmF0ZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2UgewogCiAgICAgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gMDsgfQogICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVy
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7IH0KIAogICAgIGRvdWJsZSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBAIC0zNTUsNyArMzU1LDcgQEAgUmVmPE1lZGlh
UGxheWVyPiBNZWRpYVBsYXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiBN
ZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICA6
IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5
ZXI6OnJlbG9hZFRpbWVyRmlyZWQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxO
dWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVl
PE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQogewogfQogCkBAIC01MTEsNyArNTExLDcg
QEAgdm9pZCBNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQ
bGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogI2VuZGlmCiAgICAgICAgIG1fcHJpdmF0ZS0+bG9hZCht
X3VybC5zdHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wcml2YXRlID0gc3RkOjpt
YWtlX3VuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKKyAgICAgICAgbV9wcml2
YXRlID0gbWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKICAgICAgICAg
Y2xpZW50KCkubWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKHRoaXMpOwogICAgICAgICBjbGllbnQo
KS5tZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKHRoaXMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgK
aW5kZXggMDBkODVhNDk5NjQyYjNmNTIzN2IzMGJmZjVmNGU2YjQyOTEzMGVjZC4uMWQyZmMwMDky
MDRhOGMwMjU1NDFiMmEyZDdjNWYwZDBiZTVjOTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTEyOSw3ICsx
MjksNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgIHZpcnR1YWwg
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6
ZXJvVGltZSgpID8gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwg
bWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1l
U2Vla2FibGUoKSA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkgPyBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRp
bWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZmxv
YXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgTWVk
aWFUaW1lIG1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKG1heFRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZG91Ymxl
IG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggM2U2ODgwNTVi
ZGNjMGIxMGU0MTYwY2YxNDBkNGZhY2U5MjMyMGE2NS4uNWFkOTMzNDliZmI0MGRhNGZmMzA4YWRh
OTg0OTdmYzM3NWUxMDhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRmxvYXRQb2ludEdyYXBo
OjpOb2RlKiBGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUoRmxvYXRQb2ludCBwb2lu
dCkKICAgICAgICAgICAgIHJldHVybiB0ZXN0Tm9kZS5nZXQoKTsKICAgICB9CiAKLSAgICBtX2Fs
bE5vZGVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4ocG9p
bnQpKTsKKyAgICBtX2FsbE5vZGVzLmFwcGVuZChtYWtlVW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6
Tm9kZT4ocG9pbnQpKTsKICAgICByZXR1cm4gbV9hbGxOb2Rlcy5sYXN0KCkuZ2V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCmluZGV4IDlkY2Vl
ODc2MTYyNWMwMTQ4OGI0ZDkwZDFhZjIyZTM1NDM1ZDRhNWUuLjZhNzAxYzFhMTI4OTc5ZDRjOTQ4
YjFhN2JhYjU2OGYxMDI0N2NmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVnaW9uLmNwcApAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgUmVnaW9uOjpzZXRTaGFwZShT
aGFwZSYmIHNoYXBlKQogICAgIH0KIAogICAgIGlmICghbV9zaGFwZSkKLSAgICAgICAgbV9zaGFw
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKKyAgICAgICAgbV9z
aGFwZSA9IG1ha2VVbmlxdWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKICAgICBlbHNlCiAgICAg
ICAgICptX3NoYXBlID0gV1RGTW92ZShzaGFwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlZ2lvbi5oCmluZGV4IDc5NjMzZmRiNmFkZjM0ZmZmZWU4ZjgyNjc0ODNiOGNm
ZjVjZTFmM2MuLmJjMzljMzAwMDBlYThiNmI1YTllNjBjZjJiYzVhZTE4NjY2NGI2YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCkBAIC05MSw2ICs5MSw3IEBA
IGNsYXNzIFJlZ2lvbiB7CiAgICAgfTsKIAogICAgIGNsYXNzIFNoYXBlIHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBTaGFwZSgpID0gZGVm
YXVsdDsKICAgICAgICAgU2hhcGUoY29uc3QgSW50UmVjdCYpOwpAQCAtMTQ4LDcgKzE0OSw3IEBA
IGNsYXNzIFJlZ2lvbiB7CiAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hh
cGUmLCBjb25zdCBTaGFwZSYpOwogICAgIH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBzdGQ6Om1ha2VfdW5pcXVlPFNo
YXBlPigqbV9zaGFwZSkgOiBudWxscHRyOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBj
b3B5U2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlID8gbWFrZVVuaXF1ZTxTaGFwZT4oKm1f
c2hhcGUpIDogbnVsbHB0cjsgfQogICAgIHZvaWQgc2V0U2hhcGUoU2hhcGUmJik7CiAKICAgICBJ
bnRSZWN0IG1fYm91bmRzOwpAQCAtMjg5LDcgKzI5MCw3IEBAIE9wdGlvbmFsPFJlZ2lvbj4gUmVn
aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgZGVjb2RlciA+PiBzaGFwZTsK
ICAgICAgICAgaWYgKCFzaGFwZSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgICAgIHJlZ2lvbi5tX3NoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RGTW92ZSgq
c2hhcGUpKTsKKyAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBlPihXVEZN
b3ZlKCpzaGFwZSkpOwogICAgIH0KIAogICAgIHJldHVybiB7IHJlZ2lvbiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24uY3BwCmluZGV4IDFlNGU3ZmFjMzZjN2MzMGE2NTZmMWVmZDAwYWFjZTZkNGM5NWNl
ZGEuLjY5MzlmOTE3YWU2ZmFiMTNlYzFjOTFkNGFhODE1NTY2YTkxNzBkZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbi5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTnVsbFRleHRUcmFja1JlcHJl
c2VudGF0aW9uIDogcHVibGljIFRleHRUcmFja1JlcHJlc2VudGF0aW9uIHsKIAogc3RkOjp1bmlx
dWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6
Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JikKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uPigpOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKaW5k
ZXggN2FlYjc1OWIzNGIxOGExZTg0NjgzZjI5YzYxNmE2Y2RiMDI1NzRkOC4uNmEwNmNjNmViYTM0
Yjk1OWQyZjE4NjAyMjllMWYyZjM4ZmYzMTkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKQEAgLTY1LDYgKzY1LDcgQEAgc3RydWN0IFZl
bG9jaXR5RGF0YSAgewogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgVmVsb2NpdHlEYXRhJik7CiAKIGNsYXNzIEhpc3RvcmljYWxWZWxvY2l0
eURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEhpc3Rv
cmljYWxWZWxvY2l0eURhdGEoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RB
TkdMRS5jcHAKaW5kZXggNzdhM2UxOGMxYzZjMmUyN2RkNjNhZTI5NmY2ZWM5YTFlYTJmYWUxZi4u
NjEyNjBlOWM4M2RjNGE1NTI4NTcxYzk5ZDRhMjcwNWIxNmNhNGUwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0M0RBTkdMRS5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykK
LSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RBTkdM
RT4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFr
ZVVuaXF1ZTxFeHRlbnNpb25zM0RBTkdMRT4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAg
ICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsLmgKaW5kZXggYTllY2QzMjEzNmRhODc3MDJmNDc4YWZjZDhhY2M4
ZWI5N2MyMzk0MC4uOTlkZGRkOGY4NTAyNzMwM2JiOGE3NjNlY2FjMmI4Njk4ODJmYTk4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCkBAIC00NCw2
ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU2VsZWN0aW9uT3B0aW9u
QVZGT2JqQzsKIAogY2xhc3MgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbChBVlBsYXllckl0ZW1UcmFjayopOwogICAgIGV4cGxpY2l0IEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwoQVZBc3NldFRyYWNrKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggNWNkNzc3MmFjMmVlMWNlYTkwMTBlODMz
NzFlYTZhYWVmN2YwNjk1OC4uNmIzYzkyMmU2YWViZTU5MjBhZTY1ZTU3YWYwNWVkZTRhZDAzNzQz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bQpAQCAtMzEzLDEyICszMTMsMTIgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6
cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEKIHsKICAgICBB
U1NFUlQobWF4RnJhbWVzID49IDApOwogCi0gICAgbV90YXBEZXNjcmlwdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zvcm1hdCk7
CisgICAgbV90YXBEZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOwogICAgIGlu
dCBudW1iZXJPZkNoYW5uZWxzID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bUNoYW5uZWxzUGVyRnJhbWU7
CiAgICAgZG91YmxlIHNhbXBsZVJhdGUgPSBwcm9jZXNzaW5nRm9ybWF0LT5tU2FtcGxlUmF0ZTsK
ICAgICBBU1NFUlQoc2FtcGxlUmF0ZSA+PSAwKTsKIAotICAgIG1fb3V0cHV0RGVzY3JpcHRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsKKyAgICBt
X291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8QXVk
aW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1T
YW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tRm9ybWF0
SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CiAgICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUZv
cm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZDsKQEAgLTMzOCw3
ICszMzgsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKENNSXRl
bUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogICAgIC8vIE1ha2UgdGhlIHJpbmdi
dWZmZXIgbGFyZ2UgZW5vdWdoIHRvIHN0b3JlIGF0IGxlYXN0IHR3byBjYWxsYmFja3Mgd29ydGgg
b2YgYXVkaW8sIG9yIDFzLCB3aGljaGV2ZXIgaXMgbGFyZ2VyLgogICAgIHNpemVfdCBjYXBhY2l0
eSA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHNpemVfdD4oMiAqIG1heEZyYW1lcyksIHN0YXRpY19j
YXN0PHNpemVfdD4oa1JpbmdCdWZmZXJEdXJhdGlvbiAqIHNhbXBsZVJhdGUpKTsKIAotICAgIG1f
cmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAgIG1fcmlu
Z0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwogICAgIG1fcmluZ0J1ZmZlci0+
YWxsb2NhdGUoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKCpwcm9jZXNzaW5nRm9ybWF0KSwgY2Fw
YWNpdHkpOwogCiAgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUtbGVuZ3RoIHN0
cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygpIG9wZXJhdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCAzNjFhOTky
ZjBjNDY1MGNmMmI5NjI4YTY0MmU5N2I1ZGJhMGUyYTNjLi40ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3
ZjM5YjFlZDMyZWQ2NzlhNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4g
Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJgogICAg
IGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nPigpOwogfQogCiBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCmluZGV4IDg5MThlODBlMGMzOTBkN2U4ZGFjYTE5MDM5NDc5YTBkMGY2
OTVhZDguLjUzODY5NjlmOTQ5NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBGb3VyQ0M7CiAKIGNsYXNzIENETUZhY3RvcnlGYWlyUGxh
eVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFt
aW5nJiBzaW5nbGV0b24oKTsKIApAQCAtNDksNiArNTAsNyBAQCBjbGFzcyBDRE1GYWN0b3J5RmFp
clBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CiB9OwogCiBjbGFzcyBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nKCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aAppbmRleCA0YTUwZWI0MWE1ODM2ODNmNjZhNjc2MjI5NTQ2YzU4MDFiMjBiNTg4Li5kODFiY2Ez
NTQ5MDM5MThhMWJkYTBhZGRkOTU4ZDU5NDNmNzAxYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xh
c3MgTGVnYWN5Q0RNOwogY2xhc3MgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzsKIAogY2xh
c3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyA6IHB1YmxpYyBDRE1Qcml2YXRlSW50ZXJm
YWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKExlZ2FjeUNETSogY2RtKQogICAgICAgICA6
IG1fY2RtKGNkbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KaW5kZXggMmNjMDhhOWEzYjUxY2JmN2FiMTk3NDIwMmE5OGIxNjlkYjQzYzEw
MS4uMGNkMDEyOWEzY2Q5ZWFmODYzYWQ0Nzg5ODM4NTAzMWQ4Yjc2ZWY2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTE0Nywx
MCArMTQ3LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKExlCiAjZW5kaWYKICAgICAKICAgICBp
ZiAoc2hvdWxkVXNlQVZDb250ZW50S2V5U2Vzc2lvbiAmJiBDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbjo6aXNBdmFpbGFibGUoKSkKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1
ZSgpLnByb3RvY29scyksIHBhcmFtZXRlcnMudmFsdWUoKS52ZXJzaW9uLCAqdGhpcywgY2xpZW50
KTsKKyAgICAgICAgc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNl
c3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyksIHBhcmFtZXRlcnMu
dmFsdWUoKS52ZXJzaW9uLCAqdGhpcywgY2xpZW50KTsKICAgICBlbHNlCiAjaWYgSEFWRShBVlNU
UkVBTVNFU1NJT04pCi0gICAgICAgIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Np
b25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyks
ICp0aGlzLCBjbGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9u
QVZTdHJlYW1TZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCAq
dGhpcywgY2xpZW50KTsKICNlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKaW5kZXgg
ZTQ2MDE0ODMwNWNlZWQxYjU2NDg0MTk5NmNiOWZjMzRjZGMzYWI1Mi4uMTQ3YzM3OWYxMjcwNjgy
ZTU1ZmQyMTVjZTIzYTM5ZWExMjQ5NWFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09G
YWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5m
b0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2kiOyB9CiAKQEAg
LTQyLDcgKzQyLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJ
bmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggewogICAgIEZvdXJDQyBtX3NjaGVtZTsKIH07CiAK
LWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9C
b3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewog
cHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmtyaSI7
IH0KIApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggewogICAgIEtleUlE
IG1fa2V5SUQ7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWlu
Z0tleUFzc2V0SWRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewog
cHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmthaSI7
IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0tleUFzc2V0SWRCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8dWludDhf
dD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlDb250ZXh0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrY3gi
OyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0KQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlT
dHJlYW1pbmdLZXlDb250ZXh0Qm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5VmVyc2lvbkxpc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggZmluYWwgOiBwdWJsaWMg
SVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gImZrdmwiOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IHZlcnNpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV92ZXJzaW9uczsgfQpAQCAtODgsNyArODgsNyBAQCBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IDogcHVibGljIElTT0Jv
eCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fdmVyc2lvbnM7CiB9OwogCi1jbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggOiBwdWJsaWMgSVNPQm94
IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJv
eCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94
VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzayI7IH0KIApAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCA6IHB1Ymxp
YyBJU09Cb3ggewogICAgIE9wdGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxp
c3RCb3g+IG1fdmVyc2lvbkxpc3Q7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0luaXREYXRhQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IGZpbmFsIDogcHVibGljIElT
T0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJu
ICJmcHNkIjsgfQogCkBAIC0xMjAsNyArMTIwLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rv
cjxJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3g+IG1fcmVxdWVzdHM7CiB9OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggOiBwdWJsaWMg
SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCBmaW5hbCA6IHB1YmxpYyBJU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGZhaXJQbGF5U3lzdGVtSUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA4NTdmMzFm
Mjc3MmY0MDgxZmJhNjM4ZjgxMGMxMTQ5NDI4NThiOTRiLi41OWNmOGJhMjEzMTZiMzA3YzA1MDIz
ZWQ1NmQ5YjM5ZDI1NjE3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6YnVmZmVyZWQoKSBjCiAgICAgaWYgKCFtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpCiAgICAg
ICAgIG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyA9IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2Vz
KCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCpt
X2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CiB9CiAKIE1lZGlhVGltZSBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApp
bmRleCAzOTVjZTc4MmU4YzU4MDQ1OTYxNjI0Njk4MGYzM2VhZGYwM2I3OGIyLi41ZjViNmY2OTUy
YjQ5M2E5ODg3YmFmYzdmMzBiN2JlZTczMzQxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWM6On5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjKCkgPSBkZWZhdWx0
OwogV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlck1hYzo6cGxhdGZvcm1QaWNrZXIoKQogewogICAgIGlmICghbV90YXJnZXRQaWNrZXIpCi0g
ICAgICAgIG1fdGFyZ2V0UGlja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjPigqdGhpcyk7CisgICAgICAgIG1fdGFyZ2V0UGlja2VyID0gbWFrZVVuaXF1
ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1f
dGFyZ2V0UGlja2VyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Np
b25BVkZvdW5kYXRpb25DRi5oCmluZGV4IDc2MDhhMDE3MjYzYjMwNDQ0Y2FiZTUzNWZkYTQ0Yzk5
ZmZhZjExZjIuLmQ2MTY3Yjg3Njg5OTlkYzA0OTQ3NTM4MjBkOWEyYmM3YmVkMDY0ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKQEAgLTM4
LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y7CiAKIGNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25DRiBmaW5hbCA6
IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YmIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcAppbmRleCBhZjBhN2NjNzdiZjI5MmNkZmQ2NmFiYzZlN2Y2M2E1MDkwMGFhZDY3
Li4zYjcwZTc2NjM5ZTU5NDBhZjFmMmIxZDViZjI2NzNhZTMyZGVjYTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKQEAgLTk4LDYgKzk4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIGNsYXNzIExheWVy
Q2xpZW50OwogCiBjbGFzcyBBVkZXcmFwcGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBBVkZXcmFwcGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGKik7CiAgICAgfkFWRldyYXBwZXIoKTsKQEAgLTIxMyw2ICsyMTQsNyBAQCBjbGFzcyBBVkZX
cmFwcGVyIHsKIHVpbnRwdHJfdCBBVkZXcmFwcGVyOjpzX25leHRBVkZXcmFwcGVyT2JqZWN0SUQ7
CiAKIGNsYXNzIExheWVyQ2xpZW50IDogcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGF5ZXJDbGllbnQoQVZG
V3JhcHBlciogcGFyZW50KSA6IG1fcGFyZW50KHBhcmVudCkgeyB9CiAgICAgdmlydHVhbCB+TGF5
ZXJDbGllbnQoKSB7IG1fcGFyZW50ID0gMDsgfQpAQCAtMzQzLDcgKzM0NSw3IEBAIHN0YXRpYyBk
aXNwYXRjaF9xdWV1ZV90IGdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKQogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAg
IHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAorICAgICAg
ICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKICAgICAgICAgICAg
IGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lz
dGVtKTsKIH0KIApAQCAtNjcyLDcgKzY3NCw3IEBAIHN0YXRpYyBib29sIHRpbWVSYW5nZUlzVmFs
aWRBbmROb3RFbXB0eShDTVRpbWUgc3RhcnQsIENNVGltZSBkdXJhdGlvbikKIAogc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVS
YW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRv
IHRpbWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIAogICAgIGlm
ICghYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2Vz
OwpAQCAtMTEzNyw3ICsxMTM5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW8KICAgICBpZiAo
IWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
PigqdGhpcywgY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOwogfQogCiAjZWxpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKQEAgLTE2NDEsNiArMTY0Myw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cGVyaW9k
aWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayhBVkNGUGxheWVyUmVmLCBDTVRpbWUgY21UaW1lLCB2b2lk
CiB9CiAKIHN0cnVjdCBOb3RpZmljYXRpb25DYWxsYmFja0RhdGEgeworICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1fcHJvcGVy
dHlOYW1lOwogICAgIHZvaWQqIG1fY29udGV4dDsKIApAQCAtMTcwOCw3ICsxNzExLDcgQEAgdm9p
ZCBBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJl
Ziwgdm9pZCogb2JzZXJ2ZXIsIEMKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpub3RpZmlj
YXRpb25DYWxsYmFjayhpZj0lZCkgJXMiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ob2Jz
ZXJ2ZXIpLCBub3RpZmljYXRpb25OYW1lKTsKICNlbmRpZgogCi0gICAgYXV0byBub3RpZmljYXRp
b25EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3Bl
cnR5TmFtZSwgb2JzZXJ2ZXIpOworICAgIGF1dG8gbm90aWZpY2F0aW9uRGF0YSA9IG1ha2VVbmlx
dWU8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKIAog
ICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbm90aWZpY2F0
aW9uRGF0YS5yZWxlYXNlKCksIHByb2Nlc3NOb3RpZmljYXRpb24pOwogfQpAQCAtMTc4NSw2ICsx
Nzg4LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYgdGlt
ZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRvbGUKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9O
X01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQ
VVRfU1VQUE9SVCkKIHN0cnVjdCBMZWdpYmxlT3V0cHV0RGF0YSB7CisgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2F0dHJpYnV0
ZWRTdHJpbmdzOwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX3NhbXBsZXM7CiAgICAgTWVk
aWFUaW1lIG1fdGltZTsKQEAgLTE4MzMsNyArMTgzNyw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bGVn
aWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91
dHB1CiAKICAgICBBU1NFUlQobGVnaWJsZU91dHB1dCA9PSBzZWxmLT5tX2xlZ2libGVPdXRwdXQp
OwogCi0gICAgYXV0byBsZWdpYmxlT3V0cHV0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnaWJs
ZU91dHB1dERhdGE+KGF0dHJpYnV0ZWRTdHJpbmdzLCBuYXRpdmVTYW1wbGVCdWZmZXJzLCBQQUw6
OnRvTWVkaWFUaW1lKGl0ZW1UaW1lKSwgY29udGV4dCk7CisgICAgYXV0byBsZWdpYmxlT3V0cHV0
RGF0YSA9IG1ha2VVbmlxdWU8TGVnaWJsZU91dHB1dERhdGE+KGF0dHJpYnV0ZWRTdHJpbmdzLCBu
YXRpdmVTYW1wbGVCdWZmZXJzLCBQQUw6OnRvTWVkaWFUaW1lKGl0ZW1UaW1lKSwgY29udGV4dCk7
CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGxlZ2li
bGVPdXRwdXREYXRhLnJlbGVhc2UoKSwgcHJvY2Vzc0N1ZSk7CiB9CkBAIC0xODQxLDYgKzE4NDUs
NyBAQCB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2b2lkKiBjb250ZXh0
LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9B
REVSX0RFTEVHQVRFKQogc3RydWN0IExvYWRSZXF1ZXN0RGF0YSB7CisgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFJldGFpblB0cjxBVkNGQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0UmVmPiBtX3JlcXVlc3Q7CiAgICAgdm9pZCogbV9jb250ZXh0OwogCkBAIC0xOTI2
LDcgKzE5MzEsNyBAQCBCb29sZWFuIEFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKEFWQ0ZBcwogCiAgICAgTE9HKE1lZGlhLCAi
QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVk
UmVzb3VyY2UoJXApIiwgc2VsZik7CiAKLSAgICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8TG9hZFJlcXVlc3REYXRhPihsb2FkaW5nUmVxdWVzdCwgY29udGV4dCk7Cisg
ICAgYXV0byBsb2FkUmVxdWVzdERhdGEgPSBtYWtlVW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9h
ZGluZ1JlcXVlc3QsIGNvbnRleHQpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBsb2FkUmVxdWVzdERhdGEucmVsZWFzZSgpLCBwcm9jZXNzU2hvdWxk
V2FpdEZvckxvYWRpbmdPZlJlc291cmNlKTsKIApAQCAtMTk1Myw3ICsxOTU4LDcgQEAgUGxhdGZv
cm1MYXllciogQVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgLy8gQ3JlYXRlIGEgUGxhdGZvcm1DQUxheWVyIHNvIHdlIGNhbiByZXNpemUgdGhlIHZp
ZGVvIGxheWVyIHRvIG1hdGNoIHRoZSBlbGVtZW50IHNpemUuCi0gICAgbV9sYXllckNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOworICAgIG1fbGF5ZXJDbGllbnQg
PSBtYWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKTsKICAgICBpZiAoIW1fbGF5ZXJDbGllbnQp
CiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggZTE0YWYxYTI3ZjI2YmQxYWQ2MDI4NjA0YTU3
NTJmMGRmOWE4ZGY1Mi4uN2RlMTRjMjU3MWY3ZDM4ZWVjYmIzNDhmZGEzYzc0YTQzZGViODJhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbQpAQCAtMzMsMTMgKzMzLDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRy
YWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2so
KTsKIH0KIAogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akMoTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCi0gICAgOiBtX2ltcGwoc3Rk
OjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQorICAgIDog
bV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKIHsK
ICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgdm9p
ZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAK
IHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5
ZXJJdGVtVHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zy
b21UcmFjaygpOwogfQogCkBAIC02OSwxNCArNjksMTQgQEAgQVZQbGF5ZXJJdGVtVHJhY2sqIEF1
ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRlbVRyYWNrKCkKIH0KIAogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0
cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0K
IAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRy
YWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2so
KTsKIH0KIApAQCAtODcsNyArODcsNyBAQCBBVkFzc2V0VHJhY2sqIEF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQzo6YXNzZXRUcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpz
ZXRNZWRpYVNlbGVjdGlvbk9wdGlvbihNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlv
bikKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KG9wdGlvbik7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPihvcHRpb24pOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKaW5kZXggZWMwZDBlZGRiZjczYmVlZGE2NzE3Yjdh
NTE4YzczMjEyNjA5NWFlMi4uZGY1MjI2YTRlYTAzNmU1NmZhMjUzOWE2Mjc2MmEyMzhhZTcwZTBh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2Vf
dW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbCht
YWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKICAgICAsIG1fcGFy
ZW50KHBhcmVudCkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKQEAgLTUyLDcg
KzUyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQ
cm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwor
ICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
OwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAppbmRleCAyMmFhZmVj
N2I4MzQyN2I4MTMwYTdjMDQzZjhmNjcyMDgzNGNjYTQ3Li41ZDhlMjUwNzQ3MGJjN2E0OTk5NTVj
OTgxYjE3NmZmNDQ0ZmJjNmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwogCi1j
bGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9u
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+IHsKK2Ns
YXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNl
c3Npb24sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVu
dCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjRiMmExN2Q5NzdlYmJmMDUzMzUwYzU1ZDlk
NDA5YTYxMjc5NjM4Zi4uMzllYThlNTExMzYzMmFlNzRiZjUzNjRhOGQxYjAyNjk3MjIxYWE1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakMuaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogCiBjbGFzcyBDRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24sIHB1YmxpYyBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lv
bk1lZGlhU291cmNlQVZGT2JqQz4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyYsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCA1NDgyMGQyMjUxOTdkYjdmOWJlNzNmNGZiZDJjZWM4
NzhmOWE4MDA4Li4zMjZkYWRiYjE3ZDA4OTExNzBlYjc1NDUzYjYzNDhkN2ZlODM5NzgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTQxMiw3
ICs0MTIsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01ldGFkYXRhKCkK
ICAgICAgICAgfHwgIW1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnRyYW5zZm9ybSgpCiAgICAgICAg
IHx8IG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnRyYW5zZm9ybSgpLnZhbHVlKCkgIT0gZmluYWxU
cmFuc2Zvcm0KICAgICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+c2l6ZSgpICE9IHNp
emUpCi0gICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPElt
YWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBzaXplLCBrQ1ZQ
aXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VD
b21wYXRpYmxlOjpZZXMpOworICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVu
aXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgc2l6
ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXND
R0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKIAogICAgIG1fc2l6ZSA9IGV4cGFuZGVkSW50U2l6ZSht
X2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGVkU2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCmluZGV4IDVjZDIyNDAzYWEyYzJlZjYyMmUzMDBkMDA3NDFmYzBjMzMzOWJmMzYuLjdm
YzAxOGFlNThlYWY1MjU2MGRlZTZiMzRhMWE5N2NlN2QwMWQyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhCiAgICAg
aWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICBBU1NF
UlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpA
QCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmCiAKIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbihwbGF5ZXIpCi0gICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1h
a2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlck9iakM+KCkpCiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5
ZXI6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCkKICAgICAsIG1fb2JqY09ic2VydmVyKGFkb3B0
TlMoW1tXZWJDb3JlQVZGTW92aWVPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhQbGF5ZXI6bWFrZVdl
YWtQdHIoKnRoaXMpXSkpCiAgICAgLCBtX3ZpZGVvRnJhbWVIYXNEcmF3bihmYWxzZSkKQEAgLTEz
MzcsNyArMTMzNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAogc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJhbmdl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGlt
ZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAgICAgaWYgKCFt
X2F2UGxheWVySXRlbSkKICAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CkBAIC0xODkyLDcgKzE4
OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVJv
dGF0aW9uU2Vzc2lvbigpCiAgICAgICAgICYmIG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNpemUo
KSA9PSBuYXR1cmFsU2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbWFnZVJvdGF0aW9u
U2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92
ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JB
LCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOworICAg
IG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9u
VlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4ZWxGb3JtYXRU
eXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6
WWVzKTsKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTIyMTYsNyArMjIxNiw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdl
KFVwZGF0ZVR5cGUgdHlwZSkKICNlbHNlCiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRl
cyA9IG5pbDsKICNlbmRpZgotICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKWF0dHJpYnV0ZXMpOworICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVu
aXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0
dHJpYnV0ZXMpOwogICAgIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMjI2NSw3
ICsyMjY1LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5
VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGgKICAgICBzaXplX3QgaGVpZ2h0ID0g
Q1ZQaXhlbEJ1ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBp
ZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9
IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAg
ICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNW
PigqY29udGV4dCk7CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFn
ZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0
LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9y
bWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CkBAIC0yMzMwLDcgKzIzMzAs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlU2VzcwogewogICAgIGlmICgha2V5U3lzdGVtSXNTdXBw
b3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBzZXNz
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4odGhpcywg
Y2xpZW50KTsKKyAgICBhdXRvIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25BVkZvdW5k
YXRpb25PYmpDPih0aGlzLCBjbGllbnQpOwogICAgIG1fc2Vzc2lvbiA9IG1ha2VXZWFrUHRyKCpz
ZXNzaW9uKTsKICAgICByZXR1cm4gV1RGTW92ZShzZXNzaW9uKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgKaW5kZXggNzM5NmU1YjFiNDMxMTk4ZTVlNjBkOGZjZDA2MzU5YmIyN2NmNDlmNy4u
YTFkZDBmOTA5MWZiMjg2NDY4ZGJlMGFlMTBjZThiM2MxNDJjMGJkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKQEAgLTI2OCw2ICsyNjgsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMKICAgICBmcmllbmQgY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQzsKIAogICAgIHN0cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29uc3QgTWVkaWFUaW1lJiB0
YXJnZXRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRp
YVRpbWUmIHBvc2l0aXZlVGhyZXNob2xkKQogICAgICAgICAgICAgOiB0YXJnZXRUaW1lKHRhcmdl
dFRpbWUpCiAgICAgICAgICAgICAsIG5lZ2F0aXZlVGhyZXNob2xkKG5lZ2F0aXZlVGhyZXNob2xk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGYxOTUxNTZkOGNmMjI1NmY2MGY5ZjU1
MzI0MTI5ZTg1MjNkOWQzOGIuLjljMGFlZjYxOWFkYzJhMzE4ZjBkYjdkMmUzODY3YzIxZGZjMzFk
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyhNZWRpYQogICAgICwgbV9wbGF5aW5nKDApCiAgICAgLCBtX3NlZWtpbmco
ZmFsc2UpCiAgICAgLCBtX2xvYWRpbmdQcm9ncmVzc2VkKGZhbHNlKQotICAgICwgbV92aWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFr
ZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogICAgICwgbV9lZmZl
Y3RpdmVSYXRlQ2hhbmdlZExpc3RlbmVyKEVmZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXI6OmNy
ZWF0ZSgqdGhpcywgW21fc3luY2hyb25pemVyIHRpbWViYXNlXSkpCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCkBA
IC0yMDEsNyArMjAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3QKICAgICBpZiAoIWlzQXZh
aWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXll
ciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5
ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM+KHBsYXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBw
b3J0c1R5cGUsIDAsIDAsIDAsIDApOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CiB9CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRoVG9sZXJhbmNlKGNv
bnN0IE1lZGlhVGltZSYgdGkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidGltZSA9ICIs
IHRpbWUsICIsIG5lZ2F0aXZlVGhyZXNob2xkID0gIiwgbmVnYXRpdmVUaHJlc2hvbGQsICIsIHBv
c2l0aXZlVGhyZXNob2xkID0gIiwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgbV9zZWVraW5n
ID0gdHJ1ZTsKLSAgICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vl
az4odGltZSwgbmVnYXRpdmVUaHJlc2hvbGQsIHBvc2l0aXZlVGhyZXNob2xkKTsKKyAgICBtX3Bl
bmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwgbmVnYXRpdmVUaHJlc2hv
bGQsIHBvc2l0aXZlVGhyZXNob2xkKTsKIAogICAgIGlmIChtX3NlZWtUaW1lci5pc0FjdGl2ZSgp
KQogICAgICAgICBtX3NlZWtUaW1lci5zdG9wKCk7CkBAIC01NDMsNyArNTQzLDcgQEAgTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZWFkeVN0YXRlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRp
YVRpbWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1l
ZGlhVGltZVNlZWthYmxlKCkpOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjptYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CkBAIC01NTgsNyAr
NTU4LDcgQEAgTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
bWluTWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1ZmZlcmVk
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291
cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFu
Z2VzPigpOworICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQ
cml2YXRlLT5idWZmZXJlZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5n
UHJvZ3Jlc3MoKSBjb25zdApAQCAtNjAyLDcgKzYwMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UoKQogCiAgICAgaWYgKCFtX3Jn
YkNvbmZvcm1lcikgewogICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBAeyAoX19icmlkZ2UgTlNT
dHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1h
dFR5cGVfMzJCR1JBKSB9OwotICAgICAgICBtX3JnYkNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRy
aWJ1dGVzKTsKKyAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAg
fQogCiAgICAgbV9sYXN0SW1hZ2UgPSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4
ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtNjQ5LDcgKzY0OSw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhCiAgICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJH
ZXRIZWlnaHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4
dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CisgICAgICAgIG1fdmlkZW9UZXh0
dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwog
CiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4
dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVy
ZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJl
bXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4
IGNhM2IxMTM1NTJiMzg4NWM5OTk3N2RhZTJhMjFlYTE2NTc3ZWRhODAuLjlkZWVlNDZmMmNhMjQ1
Mjk1M2RmNWNhODhiYjY5ZjgxOGU3ZTRlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0K
QEAgLTE4Myw3ICsxODMsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYQogICAgIDogbV9wbGF5
ZXIocGxheWVyKQogICAgICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZT
YW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhp
c10pKQogICAgICwgbV9jbG9jayhQQUw6OkNsb2NrOjpjcmVhdGUoKSkKLSAgICAsIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1h
a2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIo
KSkKICAgICAsIG1fbG9nSWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmll
cigpKQpAQCAtMjIwLDcgKzIyMCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygpCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0g
ICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsg
fSwgZ2V0U3VwcG9ydGVkVHlwZXMsCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCiAgICAgICAgICAgICBzdXBw
b3J0c1R5cGUsIDAsIDAsIDAsIDApOwogfQogCkBAIC0xMDU0LDEyICsxMDU0LDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC0xMDczLDcgKzEwNzMsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVu
dEZyYW1lSW1hZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1faW1hZ2VQYWludGVy
LnBpeGVsQnVmZmVyQ29uZm9ybWVyKQotICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZl
ckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9f
YnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1
ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsK
KyAgICAgICAgbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVl
PFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9f
YnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NW
UGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfSk7CiAKICAgICBBU1NFUlQobV9pbWFnZVBhaW50ZXIu
cGl4ZWxCdWZmZXJDb25mb3JtZXIpOwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZm
ZXJDb25mb3JtZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDLmNwcAppbmRleCBjODcxYzU5NDgzNTUwODU3MTgyYzdhMjRkNTUzNGI4NWE1
ZDRlZjdlLi4yOTQ4M2JhNWU5OGQ5NWZhOGU1ZWM5YTZhMTBiZjY0MWFhZTM1NTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9W
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAK
QEAgLTM0LDE5ICszNCwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayog
dHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9
CiAKIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFW
QXNzZXRUcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJv
bVRyYWNrKCk7CiB9CiAKIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAgIDogbV9p
bXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkK
KyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlv
bikpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC02Niw3ICs2Niw3
IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJh
Y2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNr
KEFWUGxheWVySXRlbVRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtl
VW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3Bl
cnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtNzcsNyArNzcsNyBAQCBBVlBsYXllckl0ZW1UcmFj
ayogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogCiB2b2lkIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNr
KQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBA
IC04OCw3ICs4OCw3IEBAIEFWQXNzZXRUcmFjayogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjph
c3NldFRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2Vs
ZWN0b25PcHRpb24oTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCiB7Ci0gICAg
bV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRp
b24pOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
b3B0aW9uKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQppbmRleCBmY2MyNDk2YTEzNWFhNGY3M2E4ZmU1NDhkMTRlMGM4MDAwNGFk
MWIwLi45NzU2Y2ZmYWZkOGMzZjZmZTNiNDdhMjMzMzcxYjc0ZGVjOThkMDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMqIHBhcmVudCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKICAgICAsIG1fcGFyZW50KHBhcmVudCkKICAg
ICAsIG1fdHJhY2tJRCgtMSkKICAgICAsIG1fc2VsZWN0ZWQoZmFsc2UpCkBAIC01Niw3ICs1Niw3
IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlc2V0UHJvcGVy
dGllc0Zyb21UcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBt
X2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAg
ICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMTcx
ZjI3NzJjOTRhNjljZGE3MzQ5M2NjOWM4Yzc4NzhiMDAxMDhkZC4uODc2NTM0NDUyMDI0ZTYxNjUx
NDE3YTA0YTBkOTQ1MDU4YTk1NDAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNjM2LDEyICsxNjM2
LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKENvbW1p
dFN0YXRlJiBjb21taXRTdGF0ZSwgY29uc3QgVHJhCiAgICAgaWYgKHVzZXNEaXNwbGF5TGlzdERy
YXdpbmcoKSAmJiBtX2RyYXdzQ29udGVudCAmJiAoIW1faGFzRXZlclBhaW50ZWQgfHwgaGFkRGly
dHlSZWN0cykpIHsKICAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRGlzcGxheUxpc3RS
ZWNvcmRTdGFydCwgRGlzcGxheUxpc3RSZWNvcmRFbmQpOwogCi0gICAgICAgIG1fZGlzcGxheUxp
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKKyAgICAg
ICAgbV9kaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Pigp
OwogICAgICAgICAKICAgICAgICAgRmxvYXRSZWN0IGluaXRpYWxDbGlwKGJvdW5kc09yaWdpbigp
LCBzaXplKCkpOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KFsmXShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNz
Q29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICpt
X2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5l
VHJhbnNmb3JtKCkpOwogICAgICAgICB9KTsKICAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29u
dGVudHMoY29udGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQpA
QCAtMjg2Nyw3ICsyODY3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmlzUnVubmluZ1RyYW5z
Zm9ybUFuaW1hdGlvbigpIGNvbnN0CiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJB
bmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9ucykKLSAgICAgICAgbV9hbmltYXRp
b25zID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CisgICAgICAgIG1fYW5p
bWF0aW9ucyA9IG1ha2VVbmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOwogfQogCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uJiBjYUFu
aW0sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KQpAQCAtMzkw
Myw3ICszOTAzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENs
b25lSUQgY2xvbmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4KICAgICBjb250ZW50c0xheWVy
ID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9sYXllckNsb25lcykKLSAgICAgICAgbV9sYXllckNs
b25lcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbG9uZXM+KCk7CisgICAgICAgIG1fbGF5ZXJD
bG9uZXMgPSBtYWtlVW5pcXVlPExheWVyQ2xvbmVzPigpOwogCiAgICAgcHJpbWFyeUxheWVyID0g
ZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fbGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMtPnBy
aW1hcnlMYXllckNsb25lcywgY2xvbmVMZXZlbCk7CiAgICAgc3RydWN0dXJhbExheWVyID0gZmlu
ZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyQ2xv
bmVzLT5zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCAz
YWM0YzFlMzJhMTU0OGQ1OGM2OTExMTdjYzY5YTI5YzRkY2YwZTFhLi5jNGIyYzljMzQ3MDgwYTZi
N2M5NmQ2NzAyZjRhNGQ4YTMwYzdmNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTU3LDYgKzE1Nyw3IEBA
IGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxh
dGZvcm1DQUxheWVyQ2xpZW50IHsKICAgICBGbG9hdFNpemUgcGl4ZWxBbGlnbm1lbnRPZmZzZXQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0OyB9CiAKICAg
ICBzdHJ1Y3QgQ29tbWl0U3RhdGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgICAgIHVuc2lnbmVkIHRyZWVEZXB0aCB7IDAgfTsKICAgICAgICAgdW5zaWdu
ZWQgdG90YWxCYWNrZHJvcEZpbHRlckFyZWEgeyAwIH07CiAgICAgICAgIGJvb2wgYW5jZXN0b3JI
YWRDaGFuZ2VzIHsgZmFsc2UgfTsKQEAgLTMwOSw2ICszMTAsNyBAQCBjbGFzcyBHcmFwaGljc0xh
eWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCB7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBDb21wdXRlVmlzaWJsZVJlY3RGbGFnczsKICAgICAK
ICAgICBzdHJ1Y3QgVmlzaWJsZUFuZENvdmVyYWdlUmVjdHMgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdDsKICAg
ICAgICAgRmxvYXRSZWN0IGNvdmVyYWdlUmVjdDsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggYW5pbWF0aW5nVHJhbnNmb3JtOwpAQCAtMzI4LDYgKzMzMCw3IEBAIGNsYXNzIEdyYXBoaWNz
TGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHsKIAogICAgIC8vIFVzZWQgdG8gdHJhY2sgdGhlIHBhdGggZG93biB0aGUgdHJlZSBmb3Ig
cmVwbGljYSBsYXllcnMuCiAgICAgc3RydWN0IFJlcGxpY2FTdGF0ZSB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhSZXBsaWNhRGVwdGggPSAxNjsKICAgICAgICAgZW51bSBSZXBsaWNhQnJhbmNoVHlwZSB7IENo
aWxkQnJhbmNoID0gMCwgUmVwbGljYUJyYW5jaCA9IDEgfTsKICAgICAgICAgUmVwbGljYVN0YXRl
KFJlcGxpY2FCcmFuY2hUeXBlIGZpcnN0QnJhbmNoKQpAQCAtNTc5LDYgKzU4Miw3IEBAIGNsYXNz
IEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1D
QUxheWVyQ2xpZW50IHsKIAogICAgIC8vIFJlZmVyZW5jZXMgdG8gY2xvbmVzIG9mIG91ciBsYXll
cnMsIGZvciByZXBsaWNhdGVkIGxheWVycy4KICAgICBzdHJ1Y3QgTGF5ZXJDbG9uZXMgeworICAg
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVyTWFwIHBy
aW1hcnlMYXllckNsb25lczsKICAgICAgICAgTGF5ZXJNYXAgc3RydWN0dXJhbExheWVyQ2xvbmVz
OwogICAgICAgICBMYXllck1hcCBjb250ZW50c0xheWVyQ2xvbmVzOwpAQCAtNjA4LDYgKzYxMiw3
IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMg
UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbj4+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+
PiBBbmltYXRpb25zTWFwOwogICAgIHN0cnVjdCBMYXllckFuaW1hdGlvbnMgeworICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFZlY3RvcjxMYXllclByb3Bl
cnR5QW5pbWF0aW9uPiB1bmNvbWl0dGVkQW5pbWF0aW9uczsKICAgICAgICAgQW5pbWF0aW9uc1Rv
UHJvY2Vzc01hcCBhbmltYXRpb25zVG9Qcm9jZXNzOwogICAgICAgICBBbmltYXRpb25zTWFwIHJ1
bm5pbmdBbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDRkNjRjMmM0YjE5YjMxYjgwNTRjMWJj
NDFhYzAyMjU3M2JlZmY1NjIuLjMwNWVmZDMzM2JkNjExYzZlZjVlNGMxYjI2MjI4ODc1MjU2ZjI0
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9U
aWxlQ29udHJvbGxlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgU3RyaW5nIFRpbGVDb250cm9sbGVy
Ojp6b29tZWRPdXRUaWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgpCiBUaWxlQ29udHJvbGxlcjo6
VGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290UGxhdGZvcm1MYXllcikKICAgICA6
IG1fdGlsZUNhY2hlTGF5ZXIocm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgLCBtX2RldmljZVNjYWxl
RmFjdG9yKG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVG
YWN0b3IoKSkKLSAgICAsIG1fdGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRo
aXMpKQorICAgICwgbV90aWxlR3JpZChtYWtlVW5pcXVlPFRpbGVHcmlkPigqdGhpcykpCiAgICAg
LCBtX3RpbGVSZXZhbGlkYXRpb25UaW1lcigqdGhpcywgJlRpbGVDb250cm9sbGVyOjp0aWxlUmV2
YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fdGlsZVNpemVDaGFuZ2VUaW1lcigqdGhpcywg
JlRpbGVDb250cm9sbGVyOjp0aWxlU2l6ZUNoYW5nZVRpbWVyRmlyZWQsIHRpbGVTaXplVXBkYXRl
RGVsYXkpCiAgICAgLCBtX21hcmdpbkVkZ2VzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQpA
QCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUo
ZmxvYXQgc2NhbGUpCiAgICAgaWYgKG1fem9vbWVkT3V0Q29udGVudHNTY2FsZSAmJiBtX3pvb21l
ZE91dENvbnRlbnRzU2NhbGUgPT0gdGlsZUdyaWQoKS5zY2FsZSgpICYmIHRpbGVHcmlkKCkuc2Nh
bGUoKSAhPSBzY2FsZSAmJiAhbV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlTY2FsZUZhY3Rvcikgewog
ICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkID0gV1RGTW92ZShtX3RpbGVHcmlkKTsKICAgICAg
ICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0SXNab29tZWRPdXRUaWxlR3JpZCh0cnVlKTsKLSAg
ICAgICAgbV90aWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKTsKKyAg
ICAgICAgbV90aWxlR3JpZCA9IG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlzKTsKICAgICAgICAg
dGlsZUdyaWRzQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtNTAwLDcgKzUwMCw3IEBAIEZsb2F0UmVj
dCBUaWxlQ29udHJvbGxlcjo6YWRqdXN0VGlsZUNvdmVyYWdlUmVjdEZvclNjcm9sbGluZyhjb25z
dCBGbG9hdFJlY3QmIGNvCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFtX2hp
c3RvcmljYWxWZWxvY2l0eURhdGEpCi0gICAgICAgICAgICBtX2hpc3RvcmljYWxWZWxvY2l0eURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcmljYWxWZWxvY2l0eURhdGE+KCk7CisgICAgICAg
ICAgICBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEgPSBtYWtlVW5pcXVlPEhpc3RvcmljYWxWZWxv
Y2l0eURhdGE+KCk7CiAKICAgICAgICAgbV92ZWxvY2l0eSA9IG1faGlzdG9yaWNhbFZlbG9jaXR5
RGF0YS0+dmVsb2NpdHlGb3JOZXdEYXRhKHNjcm9sbE9mZnNldCwgY29udGVudHNTY2FsZSwgTW9u
b3RvbmljVGltZTo6bm93KCkpOwogICAgIH07CkBAIC02ODUsNyArNjg1LDcgQEAgSW50UmVjdCBU
aWxlQ29udHJvbGxlcjo6dGlsZUNvdmVyYWdlUmVjdCgpIGNvbnN0CiBQbGF0Zm9ybUNBTGF5ZXIq
IFRpbGVDb250cm9sbGVyOjp0aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyKCkKIHsKICAgICBp
ZiAoIW1fY292ZXJhZ2VNYXApCi0gICAgICAgIG1fY292ZXJhZ2VNYXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRpbGVDb3ZlcmFnZU1hcD4oKnRoaXMpOworICAgICAgICBtX2NvdmVyYWdlTWFwID0gbWFr
ZVVuaXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKIAogICAgIHJldHVybiAmbV9jb3ZlcmFn
ZU1hcC0+bGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXgg
YTQ4NTIzY2Y1MTc2YjMxZjJhY2M0OTg0YjJlY2Q4ZTJjODc0ZjYwNy4uMzZhYzJmNzg0YjAwNmZm
OWM3MDNmNDFlN2JmZjY4N2ExYWE0YzY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW0KQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21t
b25Jbml0KCkKICAgICAgICAgV2ViVGlsZWRCYWNraW5nTGF5ZXIqIHRpbGVkQmFja2luZ0xheWVy
ID0gc3RhdGljX2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXIqPihtX2xheWVyLmdldCgpKTsKICAg
ICAgICAgVGlsZUNvbnRyb2xsZXIqIHRpbGVDb250cm9sbGVyID0gW3RpbGVkQmFja2luZ0xheWVy
IGNyZWF0ZVRpbGVDb250cm9sbGVyOnRoaXNdOwogCi0gICAgICAgIG1fY3VzdG9tU3VibGF5ZXJz
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+
Y29udGFpbmVyTGF5ZXJzKCkpOworICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IG1ha2VVbmlx
dWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygp
KTsKICAgICB9CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC05NDcsNyArOTQ3
LDcgQEAgRmxvYXRSb3VuZGVkUmVjdCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2hhcGVSb3VuZGVk
UmVjdCgpIGNvbnN0CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRTaGFwZVJvdW5kZWRS
ZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0KQogewogICAgIEFTU0VSVCht
X2xheWVyVHlwZSA9PSBMYXllclR5cGVTaGFwZUxheWVyKTsKLSAgICBtX3NoYXBlUm91bmRlZFJl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAg
ICBtX3NoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5k
ZWRSZWN0KTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIFBhdGggc2hh
cGVQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQppbmRleCBjMTkxZjM5MWM2
NDU3MmNjOTk1NWE0N2M2Y2I3YjkwMDc4NjcyNjM5Li5iM2UyMWY2NDBhZTkxYTBkMWY1OTM4NDZh
ODUwZmVjMjJmYTc4YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQpAQCAt
NjIsNyArNjIsNyBAQCAtIChpZClpbml0V2l0aExheWVyOihpZClsYXllcgogLSAoV2ViQ29yZTo6
VGlsZUNvbnRyb2xsZXIqKWNyZWF0ZVRpbGVDb250cm9sbGVyOihXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXIqKXJvb3RMYXllcgogewogICAgIEFTU0VSVCghX3RpbGVDb250cm9sbGVyKTsKLSAgICBf
dGlsZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRpbGVDb250cm9sbGVy
Pihyb290TGF5ZXIpOworICAgIF90aWxlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CiAgICAgcmV0dXJuIF90aWxlQ29udHJvbGxlci5n
ZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCAxNWQ0ZTQ2YjA2Yzc2
YzE3ZjM0MDUxMzljNmM5NzljMTAxN2IzNjk2Li5kNmE3YzE2OGYwZTQ0MWZkN2QyOTBmYzRmZTMx
MzYwYzU4NWQ1Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMTUyLDcgKzE1
Miw3IEBAIFBsYXRmb3JtQ0FMYXllcldpbjo6UGxhdGZvcm1DQUxheWVyV2luKExheWVyVHlwZSBs
YXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqIGxheWVyCiAgICAgaWYgKHVzZXNUaWxlZEJhY2tpbmdM
YXllcigpKSB7CiAgICAgICAgIGludGVybiA9IG5ldyBXZWJUaWxlZEJhY2tpbmdMYXllcldpbih0
aGlzKTsKICAgICAgICAgVGlsZUNvbnRyb2xsZXIqIHRpbGVDb250cm9sbGVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxXZWJUaWxlZEJhY2tpbmdMYXllcldpbio+KGludGVybiktPmNyZWF0ZVRpbGVDb250
cm9sbGVyKHRoaXMpOwotICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygp
KTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ0FMYXll
ckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGludGVybiA9IG5ldyBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCh0aGlzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRp
bGVkQmFja2luZ0xheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKaW5kZXggMjI0ZDhiYmVlZDM5OTJh
ZWVmYzkzMmExYmVlODBkYzYzZmNhMmY4Yi4uYzVhNzNlOGQzYWU5YmI0OWE5NmJlMjdmNTMyN2Uw
NmMwNjIxNGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCkBAIC0x
NjQsNyArMTY0LDcgQEAgdm9pZCBXZWJUaWxlZEJhY2tpbmdMYXllcldpbjo6c2V0Qm9yZGVyQ29s
b3IoY29uc3QgQ29sb3ImIHZhbHVlKQogVGlsZUNvbnRyb2xsZXIqIFdlYlRpbGVkQmFja2luZ0xh
eWVyV2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcikK
IHsKICAgICBBU1NFUlQoIW1fdGlsZUNvbnRyb2xsZXIpOwotICAgIG1fdGlsZUNvbnRyb2xsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOworICAgIG1fdGls
ZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOwogICAg
IHJldHVybiBtX3RpbGVDb250cm9sbGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKaW5kZXggYzMxY2M2ZTM4YmE1OTljOWZiODI2YWEwMzk3NmIyMDUxY2MxMTViZS4u
MThmMzQwNTBhYTllM2I3NDM0YTYyN2EwNzdjZDJjY2YyZjk5YzlmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaApAQCAtNDEsNiArNDEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50
PiBGb250RmVhdHVyZVNldHRpbmdzOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiBwdWJsaWM6CiAgICAgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShGVF9GYWNlLCBTaGFyZWRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uY3BwCmluZGV4IDUwYjdkOWMyM2MwMWFiZmMzYTA1MTc4YzEwNTI1MTA3MGYxNWQ2ZGIu
LjA0ZjJhOWZmNTQ2OWFhNWJhMjRkMTQ5NTY1NGI2MGYwYmM0M2QyYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtNDUsNyArNDUsNyBAQCBHcmFwaGljc0NvbnRl
eHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dElt
cGxGYWN0b3J5KAogICAgICAgICBbJnBsYXRmb3JtQ29udGV4dF0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRl
eHQsIHBsYXRmb3JtQ29udGV4dCk7CiAgICAgICAgIH0pOwogfQogCkBAIC01NCwxNCArNTQsMTQg
QEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpH
cmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgW2NhaXJvQ29udGV4dF0oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIGNhaXJvQ29udGV4
dCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8+KGNvbnRleHQsIGNhaXJvQ29udGV4dCk7CiAgICAgICAgIH0pOwogfQogCiBHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm86OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgOiBH
cmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9y
bSB7IH0pCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBt
X3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+
KG1fcGxhdGZvcm1Db250ZXh0KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxh
dGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsK
ICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpAQCAt
NjksOSArNjksOSBAQCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OkdyYXBoaWNzQ29udGV4dElt
cGxDYWlybyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFBsYQogCiBHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNhaXJvX3QqIGNhaXJvQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29u
dGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKLSAgICAsIG1fb3duZWRQ
bGF0Zm9ybUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY2Fp
cm9Db250ZXh0KSkKKyAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQobWFrZVVuaXF1ZTxQbGF0
Zm9ybUNvbnRleHRDYWlybz4oY2Fpcm9Db250ZXh0KSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0
KCptX293bmVkUGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlx
dWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCisg
ICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+
KG1fcGxhdGZvcm1Db250ZXh0KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGlj
c0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29u
dGV4dChtX3BsYXRmb3JtQ29udGV4dC5jcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNh
aXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCmluZGV4IDk5ZTE4M2NjNzA1NjAzZDIzNGU4ZThl
ZDlmZDY2OWQ1OTZmYmVlYTIuLjA4MzcyNWQ2ZmQzODMyNjA3YWE3NjFmZjlmNjgzNTkwNjY0Yzk4
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fp
cm8uaApAQCAtNDUsNiArNDUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShQbGF0Zm9ybUNv
bnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICA6IHBsYXRmb3JtQ29udGV4dChw
bGF0Zm9ybUNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDEzNzQxNWYzZWFiZjUz
MjFmYzM1Y2FjMjBlMWUxMjc4NGQ3NTIyMzMuLmUwMWU2MGI5ZWVlN2JhMTgzOTdhNjNlZjRhMTc2
NjdmZmRjNGE0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAg
dm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgICAgICAgICAg
W3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0g
ICAgICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXpl
LCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBHTF9SR0JBKSk7CisgICAgICAgICAgICAg
ICAgcHJveHkucHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6
OlNob3VsZEJsZW5kLCBHTF9SR0JBKSk7CiAgICAgICAgICAgICB9OwogI2lmIFVTRShOSUNPU0lB
KQogICAgICAgICBwcm94eU9wZXJhdGlvbihkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbD4obV9uaWNvc2lhTGF5ZXItPmltcGwoKSkucHJveHkoKSk7CkBAIC0z
MDgsNyArMzA4LDcgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKIAogICAgIFJlZlB0cjxjYWly
b190PiBjciA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpKSk7
CiAgICAgbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0LnNldENyKGNyLmdldCgpKTsKLSAgICBtX2Rh
dGEubV9jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQp
KTsKKyAgICBtX2RhdGEubV9jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNv
bnRleHQpKTsKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJv
LmgKaW5kZXggODBlYzcyNThiNjQyMWZiZjk4YjNlYjU1MTNkMGNlYWZiZTdhZGZkYy4uOTljODJl
MmU2ZTk5MzFjOGZlYTlkZTIxNWQwZjM2YzcxOWMzODk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRD
YWlyby5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBTaGFkb3dTdGF0ZTsKIC8vIGNvZGUgZnJv
bSB0aGUgcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0LgogCiBjbGFzcyBQbGF0
Zm9ybUNvbnRleHRDYWlybyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8pOwogcHVibGljOgogICAgIFBs
YXRmb3JtQ29udGV4dENhaXJvKGNhaXJvX3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggODBiNWQ0ZmJkMjcy
ZGVlNDM1YjVjZTdjMDg0ZWUzNTlhNTAxZWQ2NC4uZDM1ZmYwZWZmOTcxOTUwZWVkMWUzZmQwMjZi
Y2RhOWVhZmEzNGU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBJbWFnZUJ1ZmZl
cjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENHQ29sb3JTcAogICAgICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3ND
b250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VV
bmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOwogICAgIH0KIAogICAgIGNv
bnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApp
bmRleCA3MTg4ZTQzN2QyYzg4NjcyNmQzZDNmNGRlYjQxYmYyNWNiMDZiMzgwLi5mZjdmYzY2MzY4
YmQyYzY2MGM0OGMxMDY3NDVmOWJhODliM2RkZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3Bw
CkBAIC0xMzcxLDcgKzEzNzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4g
Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogCiAgICAgYXV0
byBbc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3lu
dGhlc2lzKGZvbnQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgp
LCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24u
b3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3Jp
cHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBs
YXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2Js
aXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0
aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogfQogCiB0
eXBlZGVmIEhhc2hTZXQ8UmV0YWluUHRyPENURm9udFJlZj4sIFdURjo6UmV0YWluUHRyT2JqZWN0
SGFzaDxDVEZvbnRSZWY+LCBXVEY6OlJldGFpblB0ck9iamVjdEhhc2hUcmFpdHM8Q1RGb250UmVm
Pj4gRmFsbGJhY2tEZWR1cFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHAKaW5kZXggMWNlMGM5NDdlMTdlOWE2OGVlYWQzYTRkNTdiNTlkOGZhMTZj
ZWYyOS4uMGRlOTM0YTdiMzg0MTAwZWViNzZkNzdmNDU2YTE4MmZiYmFiY2VjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNp
ZmljYXRpb25Db3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKQEAgLTExMiw3ICsx
MTIsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRS
YW5nZXMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogCiAgICAgICAgIGF1dG8gW3N5bnRoZXRp
Y0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250
Rm9yU3ludGhlc2lzQ29tcHV0YXRpb24uZ2V0KCksIGZvbnREZXNjcmlwdGlvbikuYm9sZE9ibGlx
dWVQYWlyKCk7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3Jt
RGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgZmFsc2UsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNj
cmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZv
bnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgZmFsc2UsIHN5bnRoZXRp
Y09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24u
d2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoZm9udFBsYXRmb3JtRGF0YSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHQzRENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQppbmRleCBmZWVhY2Q0ZDMyNjYwNWYwNDI5MWNl
OWMzMWVlY2JiZTljYjIyYjkyLi4yYzNjYWMwYWFhMDU2M2FmMWVkNGIzMzkzODY5ODk4MzIyMDU3
YzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHQzRENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KQEAgLTkyLDYgKzkyLDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHN0YXR1c0NoZWNrVGhyZXNob2xkID0gNTsKIC8vIEZJWE1F
OiBUaGlzIGNsYXNzIGlzIGN1cnJlbnRseSBlbXB0eSBvbiBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1
bGF0ZWQgYXMKIC8vIHRoZSByZXN0cnVjdHVyaW5nIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NjkwMyBpcyBkb25lCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCopIHsgfQogICAgIApAQCAtMTgx
LDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIHNldEdQVUJ5UmVnaXN0cnlJRChQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dDNEIGNvbnRleHRPYmosIENHTFBpeGVsRm9yCiAKIEdyYXBoaWNzQ29udGV4dDNE
OjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cnMsIEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSwgR3Jh
cGhpY3NDb250ZXh0M0QqIHNoYXJlZENvbnRleHQpCiAgICAgOiBtX2F0dHJzKGF0dHJzKQotICAg
ICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0
aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZT4odGhpcykpCiB7CiAjaWYgIVVTRShBTkdMRSkKICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmlu
ZGV4IDVjNzMzZTNiYWQxZTlkM2QyNWMxZWQ1N2Y1YWNkZmZmM2E0Y2I5OWYuLjM4NzVmY2ZkMzA2
ZGY4NmQzNDc0ZWUxODYwYmE1OTBhM2E4YmMxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTMyNiw3ICszMjYsNyBA
QCBHcmFwaGljc0NvbnRleHQmIElPU3VyZmFjZTo6ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCkKICAg
ICBpZiAobV9ncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRl
eHQ7CiAKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3ND
b250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQg
PSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOwog
ICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5zZXRJc0FjY2VsZXJhdGVkQ29udGV4dCh0cnVlKTsKIAog
ICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYS5tbQppbmRleCA2ZTYwZWJmMWZmYTY1OTBmNmYzNGU1MjhhM2UzMzU4MzE4
YjVlYmRmLi4yNzg3NDY4MTY2ZmVmMWI1ZjY0NjIxZmViNWJiNWU1MGQ5ZDZkYTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KQEAgLTEwOCw3ICsxMDgsNyBA
QCBAZW5kCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRy
YWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYg
Y2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2E+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dFRyYWNrUmVw
cmVzZW50YXRpb25Db2NvYT4oY2xpZW50KTsKIH0KIAogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYShUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCmluZGV4IGFkYzk3YWRjMWZh
MjQ1ODA5OTAwM2MzZGU5YzBhYTM4ZDg3NjE4N2QuLjYwMDFiYjcwYTEwMDQxNzQ0MTA5MjEzNmYz
ZmU1YjYxNzYyY2IwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKQEAgLTM2LDcgKzM2LDgg
QEAgdHlwZWRlZiBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25W
VCB7CitjbGFzcyBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUm90YXRpb25Qcm9wZXJ0aWVzIHsK
ICAgICAgICAgYm9vbCBmbGlwWCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKaW5k
ZXggZGQxMzU2OWUwODFhMWIzOTlkY2JhYmYzZjVlODgzN2Y4NGMyYWI0ZS4uY2Q1YjZmY2MwMGQ3
NzQ2NGU2ZTZiZTc0NjMxMWUxM2QwZDI3ZTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaApA
QCAtMzYsNiArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVy
UmVmOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWKENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzKTsKICAgICBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gY29udmVydChDVlBpeGVsQnVmZmVyUmVmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCmluZGV4
IDgxYWIyZjkyNGRhZjI2Y2RhMjJjNWUyMDA3NzZjMjE4MDIwMjNhM2IuLmM5ZmY0MTlkNDNiZTQ1
ZjQwNDQwMzA0MGFkZDhjNGQwNDQwMmJhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaApAQCAtNDQsNiArNDQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAogY2xhc3MgVGV4
dHVyZUNhY2hlQ1YgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGV4dHVyZUNhY2hlQ1Y+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVDYWNoZUNWPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hl
Q1YubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVD
Vi5tbQppbmRleCA1NzdlYzI4NDYzOTJhNzIxNWQ5OThhYTMxMGQzZDhkNjMzZjVmMWVjLi45ZjFm
NjZiM2JkNTlmNTliMWFkM2NiNzA1Yzg1NjU0NDIyN2VjMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQpAQCAtNTAs
NyArNTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IFRleHR1cmVDYWNoZUNW
OjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIFJldGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiBzdHJvbmdDYWNoZSA9IGFkb3B0
Q0YoY2FjaGUpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVDYWNoZUNWPihj
b250ZXh0LCBXVEZNb3ZlKHN0cm9uZ0NhY2hlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4
dHVyZUNhY2hlQ1Y+KGNvbnRleHQsIFdURk1vdmUoc3Ryb25nQ2FjaGUpKTsKIH0KIAogVGV4dHVy
ZUNhY2hlQ1Y6OlRleHR1cmVDYWNoZUNWKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0LCBSZXRh
aW5QdHI8VGV4dHVyZUNhY2hlVHlwZT4mJiBjYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCmluZGV4
IDQzYTk2ZGMxNDM2NTg0YWZhNzcxODc4YjE5N2YyYTk1NDdkY2NjZWUuLjlkMzkyZWEwNThiMzYw
MDhjYTU2OWNhNDRmZDcxMjg4M2IwZDZmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaApAQCAtNDAs
NiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUZXh0dXJlQ2FjaGVDVjsKIAog
Y2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyQ1YgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFZpZGVvVGV4dHVyZUNvcGllckNWKEdyYXBoaWNzQ29udGV4dDNEJik7
CiAgICAgflZpZGVvVGV4dHVyZUNvcGllckNWKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHAKaW5kZXggOGZlYWEyZjVkNzUzMjhlNDM2YmY5ZDg4YjhkYzA1YmFjMWMy
ZTFmMy4uYzU2MWY1ZjllYWI5OTYyMTFhOGIyMjIxOTc3NmQ2OGYzOWUxNjQ0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgYm9vbAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBy
ZXBsYXlMaXN0OwogICAgIGlmIChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3QpKQotICAgICAgICBy
ZXBsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKKyAgICAgICAgcmVw
bGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q+KCk7CiAKICAgICBzaXplX3QgbnVtSXRl
bXMgPSBtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtSXRlbXM7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDU1N2I4ZTAw
ODYyZDZhYmM1ODA0YjQxNDMyMTAwODBhODM1MTZkMWUuLjMwYmI0OGNjOGYwYzQ5NTQ0OGFiNjVm
NjgxMTcyY2NjNmJjYTUzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmxvYWRFeHRlcm5hbERvY3VtZW50
SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIKICAgICAgICAgcmV0dXJuOwogICAgIGlmICgh
U1ZHVVJJUmVmZXJlbmNlOjppc0V4dGVybmFsVVJJUmVmZXJlbmNlKG1fdXJsLCAqY2FjaGVkUmVz
b3VyY2VMb2FkZXIuZG9jdW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZT4obV91cmwpOworICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtl
VW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPihtX3VybCk7CiAgICAgbV9jYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZS0+bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRleCA2NTYzYzhiZmVlYjM1YmE1
MzI3ZjQ4OTYxZWQ2MjFmZTNkNTNhYTQxLi43MWE0YWIyZjQ4MjVmMWE1NDMxOTE4MDM0YjM1MzFl
Y2RhOGEwZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC00NTUsNyArNDU1
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUKICAgICAgICAgICAgIEZjUGF0dGVybkFkZFN0
cmluZyhyZXN1bHRQYXR0ZXJuLmdldCgpLCBGQ19GT05UX1ZBUklBVElPTlMsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KHZhcmlhbnRzLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAj
ZW5kaWYKLSAgICBhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRm
b3JtRGF0YT4oZm9udEZhY2UuZ2V0KCksIHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlw
dGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBmaXhlZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50
aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSk7CisgICAgYXV0byBw
bGF0Zm9ybURhdGEgPSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgp
LCByZXN1bHRQYXR0ZXJuLmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUo
KSwgZml4ZWRXaWR0aCwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2Ny
aXB0aW9uLm9yaWVudGF0aW9uKCkpOwogICAgIC8vIFZlcmlmeSB0aGF0IHRoaXMgZm9udCBoYXMg
YW4gZW5jb2RpbmcgY29tcGF0aWJsZSB3aXRoIEZvbnRjb25maWcuIEZvbnRjb25maWcgY3VycmVu
dGx5CiAgICAgLy8gc3VwcG9ydHMgdGhyZWUgZW5jb2RpbmdzIGluIEZjRnJlZVR5cGVDaGFySW5k
ZXg6IFVuaWNvZGUsIFN5bWJvbCBhbmQgQXBwbGVSb21hbi4KICAgICAvLyBJZiB0aGlzIGZvbnQg
ZG9lc24ndCBoYXZlIG9uZSBvZiB0aGVzZSB0aHJlZSBlbmNvZGluZ3MsIGRvbid0IHNlbGVjdCBp
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CmluZGV4IDEzNzY1ZjQzZGE4NjY4ZDJkZTgyZTY3MWQ4MTgwZDY4NDQyODQzYjAuLjU4OTQzZDJh
OTBkZmM1NTAxZjJkY2FhOGVjZjBlOTBlMWFjN2Y3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2U7CiAgICAgaWYg
KEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5
dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CiB9
CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3Ry
aW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
VGV4dHVyZS5jcHAKaW5kZXggODY5ODEzNjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3
Ni4uNzFmZGEwZDkyNGNkMjU1ZGIzZWYxMDc3ZjllMTA3ODE0ZTI0M2RmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtOTUsNyAr
OTUsNyBAQCBSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQgdwogICAgICAgICBudW1UaWxlcyA9IDA7CiAg
ICAgfQogCi0gICAgYXV0byB0ZXh0dXJlSWRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dW5z
aWduZWQ+PihudW1UaWxlcyk7CisgICAgYXV0byB0ZXh0dXJlSWRzID0gbWFrZVVuaXF1ZTxWZWN0
b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7CiAgICAgdGV4dHVyZUlkcy0+ZmlsbCgwLCBudW1UaWxl
cyk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzOyBpKyspIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNGE5ZmRlYzNl
YzU5MTJjZTI1YjFlNmIyNWI5MTQ0ZmE4ZjQwYzdkMC4uYWIzN2VlMDQxZWIyOGMzYzgyZjM1YWYz
NjNjY2VkYjliNDJiMTQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdp
cwogewogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmluaXRpYWxpemVEZWJ1
Z0NhdGVnb3J5KCk7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywg
c3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3Rl
bSk7CiAgICAgfQogfQpAQCAtMTE0MCw3ICsxMTQwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8
fCBpc0xpdmVTdHJlYW0oKSkKICAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CiAKQEAgLTIzNzYs
NyArMjM3Niw3IEBAIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVk
aW9TaW5rKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjplbnN1cmVB
dWRpb1NvdXJjZVByb3ZpZGVyKCkKIHsKICAgICBpZiAoIW1fYXVkaW9Tb3VyY2VQcm92aWRlcikK
LSAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nv
dXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpOworICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIg
PSBtYWtlVW5pcXVlPEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI+KCk7CiB9CiAKIEF1ZGlv
U291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9Tb3VyY2VQ
cm92aWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKaW5kZXggYzU3OGVlZTZkNTVkZDRiNDMwN2NkNDJiYjAwY2NmNDc2Mjk3YmIz
My4uYjAyZTI4ZWRjZDQwN2ZkZmY4Y2JlYTc4YWQxYTZlN2IwYzdiNThhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzEw
LDE5ICs3MTAsMTkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNo
VGV4dHVyZVRvQ29tcG9zaXRvcigpCiAgICAgICAgICAgICBpZiAoIXByb3h5LmlzQWN0aXZlKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZp
ZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1f
dXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0
VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVI
b2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxs
YmFja1ZpZGVvU2luayk7CiAKICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlSUQgPSBmcmFtZUhv
bGRlci0+dGV4dHVyZUlEKCk7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyOwogICAgICAgICAgICAgaWYgKHRl
eHR1cmVJRCkgewotICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4odGV4dHVyZUlELCBmcmFtZUhvbGRl
ci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEp
OworICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4odGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFt
ZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwogICAgICAgICAgICAg
ICAgIGxheWVyQnVmZmVyLT5zZXRVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKFdURk1vdmUoZnJh
bWVIb2xkZXIpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbGF5ZXJC
dWZmZXIgPSBwcm94eS5nZXRBdmFpbGFibGVCdWZmZXIoZnJhbWVIb2xkZXItPnNpemUoKSwgR0xf
RE9OVF9DQVJFKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWxheWVyQnVmZmVyKSkg
ewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNy
ZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZS0+cmVzZXQoZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXIt
Pmhhc0FscGhhQ2hhbm5lbCgpID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1h
cFRleHR1cmU6Ok5vRmxhZyk7Ci0gICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0
ZXh0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT51cGRhdGVUZXh0dXJl
KGxheWVyQnVmZmVyLT50ZXh0dXJlR0woKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIt
PnNldEV4dHJhRmxhZ3MobV90ZXh0dXJlTWFwcGVyRmxhZ3MgfCAoZnJhbWVIb2xkZXItPmhhc0Fs
cGhhQ2hhbm5lbCgpID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApKTsKQEAgLTkx
Miw3ICs5MTIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljcwogICAgIGlmICghR1NUX0lTX1NB
TVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBl
ckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4g
ZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdl
dCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9
IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJRCkKQEAgLTkyMyw3
ICs5MjMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljcwogICAgICAgICBzaXplID0gc2l6ZS50
cmFuc3Bvc2VkU2l6ZSgpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAg
ICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKKyAgICAg
ICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdT
dHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKIAogICAgIHJldHVy
biBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KHRleHR1cmVJRCwgc2l6ZSwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxpcFksIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlv
bik7CiB9CkBAIC05MzksNyArOTM5LDcgQEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiAgICAgaWYgKCFH
U1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3Rl
eHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJh
bWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPiht
X3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCiAgICAgYXV0byB0
ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlSUQp
CkBAIC05NTMsNyArOTUzLDcgQEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiAgICAgY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAg
ICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJl
Q29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAg
ICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAgaWYg
KCFtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KHRleHR1cmVJRCwgc2l6ZSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGZhbHNlLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24p
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMjUsNiArMTEyNSw3IEBAIHN0YXRpYyB2
b2lkIHNldFJlY3RhbmdsZVRvVmlkZW9TaW5rKEdzdEVsZW1lbnQqIHZpZGVvU2luaywgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIH0KIAogY2xhc3MgR1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50IDogcHVi
bGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpIb2xlUHVuY2hDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lckhvbGVQ
dW5jaENsaWVudChHUmVmUHRyPEdzdEVsZW1lbnQ+JiYgdmlkZW9TaW5rKSA6IG1fdmlkZW9TaW5r
KFdURk1vdmUodmlkZW9TaW5rKSkgeyB9OwogICAgIHZvaWQgc2V0VmlkZW9SZWN0YW5nbGUoY29u
c3QgSW50UmVjdCYgcmVjdCkgZmluYWwgeyBzZXRSZWN0YW5nbGVUb1ZpZGVvU2luayhtX3ZpZGVv
U2luay5nZXQoKSwgcmVjdCk7IH0KQEAgLTExNDcsOCArMTE0OCw4IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQogICAgICAg
ICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxh
eWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05U
X0NBUkUpOwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENs
aWVudD4gaG9sZVB1bmNoQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIb2xlUHVu
Y2hDbGllbnQ+KG1fdmlkZW9TaW5rLmdldCgpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVN
YXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBt
YWtlVW5pcXVlPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOwog
ICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldEhvbGVQdW5jaENsaWVudChXVEZNb3ZlKGhvbGVQ
dW5jaENsaWVudCkpOwogICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShs
YXllckJ1ZmZlcikpOwogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggN2FlN2VjZWQ2ZTlmNmJiNjU1MzNiN2Q4OTAz
MDIzN2NjY2RmZmU2Ni4uZTI2MDRjNGFlM2IwNTljZTFmYjZlMDRkNTY4ZjFhODM2YTIzMDRhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5o
CkBAIC05Nyw3ICs5Nyw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Ug
OiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsCiAjZW5kaWYKICNlbmRp
ZgogewotCisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
VGV4dHVyZUNvcGllckdTdHJlYW1lci5oCmluZGV4IDUxZmQ5YjI1YjBiODQzN2M4NDkxMjUzZTZm
MDIxZTY1N2QwM2E4MTcuLjVjNTZlYzM0MTg4ODMzNDU3ODhmYTBiNTQ5YTk4MDMyN2QzZTdiZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKQEAgLTMz
LDYgKzMzLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW07CiBjbGFzcyBJbWFn
ZU9yaWVudGF0aW9uOwogCiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgQ29sb3JD
b252ZXJzaW9uIHsKICAgICAgICAgQ29udmVydEJHUkFUb1JHQkEsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDk3M2Y0ZDRmMDAzMjM1NmYxNzdlYmQ3
ZmM0YjllOTRhNTI5MmY5NWEuLjk4MTBjMjU3YjM3NzZmZmQ4ZDQyMTJlOTY5NGJlOTJiMjU5NzM1
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC01
MCw2ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogI2RlZmluZSBMT1dfUVVFVUVf
RkFDVE9SX1RIUkVTSE9MRCAwLjIKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudCk7CiBwdWJsaWM6CiAgICAgQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQoV2ViS2l0V2ViU3JjKiwgUmVzb3VyY2VSZXF1ZXN0JiYpOwpAQCAtNjMyLDcgKzYz
Myw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChHc3RCYXNlU3Jj
KiBiYXNlU3JjLCBib29sIG5vdGlmeUFzeW5jQ29tCiAgICAgICAgICAgICBsb2FkT3B0aW9ucyB8
PSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkJ1ZmZlckRhdGE7CiAg
ICAgICAgIHByaXYtPnJlc291cmNlID0gcHJpdi0+bG9hZGVyLT5yZXF1ZXN0UmVzb3VyY2UoUmVz
b3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBsb2FkT3B0aW9ucyk7CiAgICAgICAgIGlmIChwcml2LT5y
ZXNvdXJjZSkgewotICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCks
IFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSkpOworICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2Ut
PnNldENsaWVudChtYWtlVW5pcXVlPENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Pihwcm90
ZWN0b3IuZ2V0KCksIFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSkpOwogICAgICAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChwcm90ZWN0b3IuZ2V0KCksICJTdGFydGVkIHJlcXVlc3QiKTsKICAgICAg
ICAgICAgIGlmIChub3RpZnlBc3luY0NvbXBsZXRpb24pCiAgICAgICAgICAgICAgICAgZ3N0X2Jh
c2Vfc3JjX3N0YXJ0X2NvbXBsZXRlKEdTVF9CQVNFX1NSQyhzcmMpLCBHU1RfRkxPV19PSyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKaW5kZXggNGU5ZDE5ZDg1MjdkNjk2MjBjZjVhYTk0MTA3MzYyODM4MWIzYzlmMC4uZTY4
ODBkOThlN2ZjYWQxZDA1M2Y4NGVkMzhhNmZkODE5OGRlN2I4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNzcs
NyArNzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZQogICAgIGluaXRpYWxpemVHU3RyZWFt
ZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKCk7CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lO
SVQod2Via2l0X21zZV9kZWJ1ZywgIndlYmtpdG1zZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBs
YXllciIpOwogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0
ZW0pOwogICAgIH0KIH0KQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRTo6c2V0UmF0ZShmbG9hdCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNlLT5idWZmZXJl
ZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJu
IG1fbWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpIDogbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpzb3VyY2VTZXR1cChHc3RFbGVtZW50KiBzb3VyY2VFbGVtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAppbmRleCAxMTcyNDU4NDEw
ZTlhMTQ1M2I2MzViMGY4ZDkxYjlmYjRhNjk2YzU4Li4wZjA4YzE5ZGJkYmU2OWIwNmY3Yjc1NTNm
OGFiNDk3ZDQ3ZTM3N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXpl
LCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBs
YXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJF
KTsKICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIp
KTsKICAgICAgICAgfTsKIApAQCAtMTQxLDcgKzE0MSw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVk
aWFFCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBl
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1
bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCmluZGV4IGYwZDA0ZDRjNjNkOTMxMjBi
Y2U4MDVhYjhmZWEyODdhMDFlMDQ0MmEuLjhiZjcyMTMxODgxOWM0MDI2N2I3MjFmYTliODJhYzFj
ZDkyNmY5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hv
bGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIDog
cHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSwgcHVibGljIEMKICAgICAsIHB1Ymxp
YyBQbGF0Zm9ybUxheWVyCiAjZW5kaWYKIHsKLQorICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaChNZWRpYVBsYXllciop
OwogICAgIH5NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2goKTsKQEAgLTc5LDcgKzc5LDcgQEAg
Y2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIDogcHVibGljIE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZSwgcHVibGljIEMKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5l
dHdvcmtTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsgfTsK
ICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gTWVkaWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CisgICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
YWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKIAogICAgIGJvb2wgZGlkTG9hZGlu
Z1Byb2dyZXNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAppbmRleCBlMWEzYTg2NjMxNDc1
Y2FiN2E5YjE3MWI0MDYyZDM5M2Q4OTBlNjA2Li5lY2Y4OTY5M2RhMzM4NTIwMTJlNzUwMjExMjk5
ODA5OWVjOGRhYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT0JveC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIERhdGFWaWV3OwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Cb3ggeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfklTT0JveCgpID0gZGVmYXVsdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09y
aWdpbmFsRm9ybWF0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPT3JpZ2luYWxGb3JtYXRCb3guaAppbmRleCA3MGJiODYxMTMxNmU2ODViNzZiNzg4MzhiNWVk
MDYwMzc2YjliMWE5Li4xODgzYmE0N2JkZjNhNTJhZmIyZmY3ZDBkZDVjZDlkY2Q3Y2RkODcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2lu
YWxGb3JtYXRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPT3JpZ2luYWxGb3JtYXRCb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0Qm94IDogcHVi
bGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09PcmlnaW5hbEZvcm1hdEJveCBm
aW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlw
ZU5hbWUoKSB7IHJldHVybiAiZnJtYSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5m
b0JveC5jcHAKaW5kZXggZDhkNzQwMWE3NTYwMDQ2Yzk4YWZmOGNiMTFlYjJlNzIyM2M5ODFjZS4u
YmRmZGJkYzk2Y2YwZTFiNTBhNzI4NTgyODhjOWIyZjQ3NGY3ZDBmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZv
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJv
dGVjdGlvblNjaGVtZUluZm9Cb3guY3BwCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgSVNPUHJvdGVj
dGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVl
KCkuZmlyc3QgPT0gSVNPU2NoZW1lVHlwZUJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBt
X3NjaGVtZVR5cGVCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7Cisg
ICAgICAgIG1fc2NoZW1lVHlwZUJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lVHlwZUJveD4oKTsK
ICAgICAgICAgaWYgKCFtX3NjaGVtZVR5cGVCb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgSVNPUHJv
dGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zm
c2V0KQogICAgIH0KIAogICAgIGlmIChvcHRpb25hbEJveFR5cGUudmFsdWUoKS5maXJzdCA9PSBJ
U09TY2hlbWVJbmZvcm1hdGlvbkJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVt
ZUluZm9ybWF0aW9uQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVJbmZvcm1hdGlvbkJv
eD4oKTsKKyAgICAgICAgbV9zY2hlbWVJbmZvcm1hdGlvbkJveCA9IG1ha2VVbmlxdWU8SVNPU2No
ZW1lSW5mb3JtYXRpb25Cb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVJbmZvcm1hdGlvbkJv
eC0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90
ZWN0aW9uU2NoZW1lSW5mb0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKaW5kZXggZjM3Yjc2MjQ5ZDhlMDBmYTE3
YTA1NTkyOWU3NzY2ODUxMzczMzM2Ni4uOGU1NjczZTA1MTZhNjUwMTRmNWNkNDlmNjFhYTdiNzUz
OGQyY2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSVNPU2NoZW1lVHlwZUJveDsKIGNsYXNz
IElTT1NjaGVtZUluZm9ybWF0aW9uQm94OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Qcm90
ZWN0aW9uU2NoZW1lSW5mb0JveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNpbmYiOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09T
Y2hlbWVJbmZvcm1hdGlvbkJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCmluZGV4IGI0ZjI3N2E2ODQ3Y2MyMGQ0
ZmM5ZDYyNmY5Y2FjYzc0MzBhZGFmNzAuLmM4M2M0ZmY3YjM4YWJmMWFlMjJmZmU1ZTcyYzdhMWY4
NmEwOGViMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcApAQCAtNDcsNyArNDcs
NyBAQCBib29sIElTT1NjaGVtZUluZm9ybWF0aW9uQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywg
dW5zaWduZWQmIG9mZnNldCkKICAgICAgICAgaWYgKGxvY2FsT2Zmc2V0ICsgc2NoZW1lU3BlY2lm
aWNCb3hUeXBlLnZhbHVlKCkuc2Vjb25kID4gb2Zmc2V0ICsgbV9zaXplKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxJU09UcmFja0VuY3J5cHRpb25Cb3g+KCk7CisgICAgICAgIG1fc2NoZW1lU3BlY2lm
aWNEYXRhID0gbWFrZVVuaXF1ZTxJU09UcmFja0VuY3J5cHRpb25Cb3g+KCk7CiAgICAgICAgIGlm
ICghbV9zY2hlbWVTcGVjaWZpY0RhdGEtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKaW5k
ZXggOWVkYjE4NzhhOWJhOTE5YmViMTlkN2I2MjIzZDllN2U0NjRmNjg1OC4uZThlYzBjNGM2OWI3
NGU4MzM0NDk4OTQxZjI0ZWVlNDEwZjJjZGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3ggZmluYWwgOiBwdWJsaWMg
SVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gInNjaGkiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCmluZGV4IDYxOTYxMDM5ZjQ4Y2YyYmM2ZWU3Yjg4
NDgwNzNjODM3NmU1ODMxMzAuLjRiOGYyNjMzNzUwZjhhZGY5MGJjMjdjMmQwY2YxNGVmOTgyYzE3
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09T
Y2hlbWVUeXBlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1NjaGVtZVR5cGVCb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggOiBwdWJsaWMgSVNP
RnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVUeXBlQm94IGZpbmFsIDog
cHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5h
bWUoKSB7IHJldHVybiAic2NobSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCmluZGV4IGY0
ZWZlMjgxMDUxZTNjN2IyOWRiZWY3OGU0NGRhM2IwMzg3ODAzZjMuLjQ3ZmE0OTcyNDZjNzE1YmUx
ZDJjZWY5YjBlYTg3ZGQ3Zjc5ZWY1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKQEAgLTI5
LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09UcmFja0VuY3J5cHRpb25Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09UcmFja0VuY3J5cHRpb25Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJ0
ZW5jIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09WVFRDdWUuY3BwCmluZGV4IDllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQy
ODQuLjRiNTE2ZWU4ZGQ3ZjdkMjM3ZThkNjI3Mjc5N2IwMzJkZDFmNWFjYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBAIC0z
NSw3ICszNSw3IEBAIHVzaW5nIEpTQzo6RGF0YVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSVNPU3RyaW5nQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09TdHJpbmdC
b3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGNv
bnRlbnRzKCkgeyByZXR1cm4gbV9jb250ZW50czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKaW5kZXggYTYxNjBiNjZhZTk0NjgyMDY3
N2FkMjkzNGIxODFkZWI5M2NjNGY0OS4uYWUyM2JlZmZmZWQ2NGE2ZGUyODkxNzZlNDE1MTAxMWYw
NjdjOTg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09WVFRDdWUuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOIGJ5
dGVzIDogQ3VlVGltZUJveCA6IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlU2V0dGlu
Z3NCb3ggOiBib3ggOiBvcHRpb25hbAogLy8gTiBieXRlcyA6IEN1ZVBheWxvYWRCb3ggOiBib3gg
OiByZXF1aXJlZAotY2xhc3MgSVNPV2ViVlRUQ3VlIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJ
U09XZWJWVFRDdWUgZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBJU09XZWJW
VFRDdWUoY29uc3QgTWVkaWFUaW1lJiBwcmVzZW50YXRpb25UaW1lLCBjb25zdCBNZWRpYVRpbWUm
IGR1cmF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDMyN2ViZjYw
NjI1OTA5ZmJlMmM1YjZiZDUxOThhY2ExOWE0NWQ0YTQuLjUwNzkzOGJlMTEwNWNmNDI2MDQ1NTkx
M2IwYzVlOTlkNGY1NGY5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250RGVzY3JpcHRvci5nZXQoKSk7CiB9CiAKIGJvb2wg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3Jt
YXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaAppbmRleCA4M2Y3NzY2Nzll
MTg5YzZmY2U0ZWY4NjI1N2IwMDVkMTEzNzRlMjJkLi42ZjIxNWIyN2FhZDk2YzNmYTljMjA3ZjMy
MGVmOWUzMmI0M2I3Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgK
QEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIE5pY29zaWEgewogc3RydWN0IFBhaW50aW5nT3Bl
cmF0aW9uUmVwbGF5IHsgfTsKIAogc3RydWN0IFBhaW50aW5nT3BlcmF0aW9uIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgdmlydHVhbCB+UGFpbnRpbmdPcGVyYXRp
b24oKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRp
b25SZXBsYXkmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcAppbmRleCAxMDljMmM1
Nzc2NzlhMTIxNGFhNmVhMTAxYzZmNDgwZmJhMmVjNjAxLi41YmVlNjEzZmNmNmI0NmEwN2M2Mjhl
NTgwMTZmNDliYjkwMjFiMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9u
LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFNjZW5lSW50ZWdyYXRpb246OnJlcXVlc3RVcGRh
dGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNj
ZW5lSW50ZWdyYXRpb246OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxVcGRhdGVTY29wZT4obWFrZVJlZigqdGhpcykpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CiB9CiAKIFNjZW5lSW50ZWdyYXRp
b246OkNsaWVudDo6fkNsaWVudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMmIxYWVjZjBkMWI3
ZTZhMzQxYmY5NGJmZmFlZDIyMGYxYTQ1ODYzOC4uNTBlMGMzYzdkOTc2ODI2YmE3YmI4MTg1ZDFl
ZTE0MjEyOWFkYTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYXV0byBjcmVhdGVDb21t
YW5kKEFyZ3MmJi4uLiBhcmd1bWVudHMpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNl
X29mPE9wZXIKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBhdXRvIGNyZWF0ZUNvbW1hbmQoKSAtPiBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxPcGVyYXRpb25EYXRhPD4sIFQ+Ojp2YWx1
ZSwgc3RkOjp1bmlxdWVfcHRyPFBhaW50aW5nT3BlcmF0aW9uPj4KIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFQ+KCk7CiB9CiAKIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBQYWludGluZ09wZXJhdGlvbnMmIGNvbW1hbmRMaXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
UGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDBj
OGE2NzBlM2EwYTM2MzA3ZTNmMjk5ZWNkYTAyNTUyZmQ3NzRlZDEuLmIzNTA4ZDUxN2IyNGU0NzVj
MDhhZjQ4YjMzZTQzMWZkMjc5MjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKQEAgLTcwLDggKzcwLDggQEAgUGFpbnRpbmdD
b250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpGb3JQYWludGluZyhCdWZmZXImIGJ1ZmZlcikKICAg
ICAgICAgfSk7CiAKICAgICBtX2NhaXJvLmNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUo
bV9jYWlyby5zdXJmYWNlLmdldCgpKSk7Ci0gICAgbV9wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvPihtX2NhaXJvLmNvbnRleHQu
Z2V0KCkpOwotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3Jl
YXRlRmFjdG9yeSgqbV9wbGF0Zm9ybUNvbnRleHQpKTsKKyAgICBtX3BsYXRmb3JtQ29udGV4dCA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4
dC5nZXQoKSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVG
YWN0b3J5KCptX3BsYXRmb3JtQ29udGV4dCkpOwogfQogCiBQYWludGluZ0NvbnRleHRDYWlybzo6
Rm9yUGFpbnRpbmc6On5Gb3JQYWludGluZygpCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB2b2lkIFBh
aW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6cmVwbGF5KGNvbnN0IFBhaW50aW5nT3Bl
cmF0aW9ucyYgcGFpbnRpbgogCiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpG
b3JSZWNvcmRpbmcoUGFpbnRpbmdPcGVyYXRpb25zJiBwYWludGluZ09wZXJhdGlvbnMpCiB7Ci0g
ICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dD4oCisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dD4oCiAgICAgICAgIFsmcGFpbnRpbmdPcGVyYXRpb25zXShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENhaXJvT3BlcmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5n
T3BlcmF0aW9ucyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWlyb09wZXJhdGlv
blJlY29yZGVyPihjb250ZXh0LCBwYWludGluZ09wZXJhdGlvbnMpOwogICAgICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3Rv
cmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggZDRjOWI2MDViNGNkMjhlMzQ4ZWZkODUzMzUw
MzhiNThjOWE0ZGRmYS4uOGUzNzkwZjdhYjU0ZjZiM2Q5NTZmMzA3MDRjNDI5YzJhY2RjMzE2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0
b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGF1dG8gQmFja2luZ1N0
b3JlVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAg
cmV0dXJuIEZhY3RvcnkoCiAgICAgICAgIFtdKEJhY2tpbmdTdG9yZSYpIHsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsPigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBl
ckltcGw+KCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVy
ZU1hcHBlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oCmluZGV4IGVhZDQ5
Nzc2ZTUwYTIzY2ZkNTAxNGE3ZTk2NDMwYjNkZTEyNGRiMGEuLmQ0MzZmMjBjMzE2MWMwNTU0YTVh
YTIyYTM5MzBhOTk1ZWVjMzVhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC00MSw2ICs0MSw3
IEBACiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIEJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsIGZpbmFsIDogcHVibGljIEJhY2tpbmdTdG9yZTo6SW1wbCwgcHVibGljIFdlYkNvcmU6
OlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggMzhmZGQ5M2RhNmIxMzg4MzE0MDU5MTY1M2NkZjI5
ZTA3ZGUzMjM5Ni4uNzU2OTJjN2M0YTdiZmRiMTg3MWRmMTgwMmUzODc3NTM2YjYxNTUxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0
aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgYXV0byBDb21w
b3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5
CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAgICAgIFtdKHVpbnQ2NF90LCBDb21wb3NpdGlv
bkxheWVyJikgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRp
b25MYXllclRleHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0
aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCmluZGV4IDY1NTViZmIwODAyNjFlOGEzMDk1YmRl
NDgzYTA2MWJiNTQyMTQ1NzQuLjUzMGE2NzUxMDE3MjZlYTI4NzI4YzUzZDg4OGRiZGVmN2FhZTc5
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29t
cG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3Mg
VGV4dHVyZU1hcHBlckxheWVyOwogbmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBDb21wb3Np
dGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgQ29tcG9zaXRpb25MYXll
cjo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRl
eCA1NjE3MjhiNWVmMWY0MGQ4MGM1MzU5OTI2NzEwNjZhZDg3NDgxOWE3Li4yZmIwZWM5NTkxNWFl
YjBiYTA5NmY4MGJjNjkwZDJmM2IyODQ4YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgYXV0byBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRl
RmFjdG9yeShDbGllbnQmIGNsaWVudCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5
KAogICAgICAgICBbJmNsaWVudF0oQ29udGVudExheWVyJikgewotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KGNsaWVudCk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbD4oY2xpZW50KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXgg
ZWY5NmE2MDgzMTYyZGU0MWMyN2RlNGJmMzU3YjhhNGZjYWY4ZDljZi4uYjAxMDViNzNhYzIyNjRm
NTdjYTdiN2U1MDNlY2Y3MGRhNTI3ZGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQxLDYg
KzQxLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTsKIG5hbWVzcGFj
ZSBOaWNvc2lhIHsKIAogY2xhc3MgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwgZmluYWwg
OiBwdWJsaWMgQ29udGVudExheWVyOjpJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFH
QzNETGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAKaW5kZXggNTJlYzcwYjY4MWY3YmM1NjNhNjc0NzU0
MzYyMzg3NmIwMzEzOWE5Yi4uOWE5YmQ0NjgzYjI2NzQyYWZlY2IxNDkxZjYxNDRmMmE3OGM1OTUy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAKQEAgLTg4LDcgKzg4
LDcgQEAgdm9pZCBHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgICAgICBhdXRv
JiBwcm94eSA9IGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
PihtX2NvbnRlbnRMYXllci0+aW1wbCgpKS5wcm94eSgpOwogCiAgICAgICAgIExvY2tIb2xkZXIg
aG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKHN0ZDo6
bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5t
X2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVy
bmFsQ29sb3JGb3JtYXQpKTsKKyAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIobWFrZVVuaXF1
ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRv
clRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZv
cm1hdCkpOwogICAgIH0KIAogICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhR0MzRExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmgKaW5kZXggMzJkYjlkZDM3YTZmMGQ5ZmE4
ZDRkMTg4ZWIxOGY4YWUxNDc1YTAwYi4uOWY1NDQ1YmJlMTE4M2NlNzQ4NTU5M2NiYmJmMTY1MGVk
Y2NlNDMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaApAQCAtNDEsNiAr
NDEsNyBAQCBjbGFzcyBHTENvbnRleHQ7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIEdD
M0RMYXllciA6IHB1YmxpYyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHQzNETGF5ZXIoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0QmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyU3R5bGUpOwogICAgIHZpcnR1YWwgfkdDM0RMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFj
a2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5j
cHAKaW5kZXggYTJhZTM0YTMxMzI3ZTg3MTU2NTQxNDZkMThmNzdjN2E2N2YyNDIxNi4uZDM1M2M4
YmUxYjViZmExMTZiNmNiODUyMDk3MDI3N2NjOTMyNDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2lu
Z1RleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwu
Y3BwCkBAIC0zNyw3ICszNyw3IEBAIGF1dG8gSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6
OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAg
ICAgIFtdKEltYWdlQmFja2luZyYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJh
Y2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oCmluZGV4IDFhNjIzYWZhNDA5M2IyMmFjMjBkMTNiMzI5
MzYwODNhY2IwOGVhODAuLjQ5YjFlOWIyZWMwMzU1MmEwYmQ2MTIwYWU3N2I4ZTY5NGE5NDYxNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEltYWdlOwogbmFt
ZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbCBm
aW5hbCA6IHB1YmxpYyBJbWFnZUJhY2tpbmc6OkltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnMzRE9wZW5HTENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oCmluZGV4IDdjNjE0ZmI0MDMzNThlYTQw
NDU2ZDg0NjJjZjhkYzViYzNhNGViMTkuLjE0NzIxNzkwNzcyN2NhZWVhMjdlZjY4YTA2OWNjMDUz
MTA4MjBkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKQEAgLTM1LDYg
KzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdM
Q29tbW9uIDogcHVibGljIEV4dGVuc2lvbnMzRCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IGU2ODQ4ZmNlY2E0MWU5
NzM2ZjJhMzgxN2E5ZmQwM2NlYmFlM2FjMTEuLmI5NjM2M2I1NTE5MzU2YzhjZGY0NjU0MzYzMjZl
ZDA2Y2VjZWQ4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcApAQCAt
NDc1LDcgKzQ3NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNs
YW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lv
bnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFu
dCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwCmluZGV4IGIyNGRmMDM1ZTI4OGUxZWIyZjhhZjlmN2FiOTFkNzc5ZDBhY2E0OWUuLjJhMGU1
Yjc2ZTRkNmJhYjcwZTkwYjJmM2QyOGViNDNjMDdmNDI1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
CiAgICAgQU5HTEVSZXNvdXJjZXMuSGFzaEZ1bmN0aW9uID0gbmFtZUhhc2hGb3JTaGFkZXI7CiAK
ICAgICBpZiAoIW5hbWVIYXNoTWFwRm9yU2hhZGVycykKLSAgICAgICAgbmFtZUhhc2hNYXBGb3JT
aGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgbmFt
ZUhhc2hNYXBGb3JTaGFkZXJzID0gbWFrZVVuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKICAgICBz
ZXRDdXJyZW50TmFtZUhhc2hNYXBGb3JTaGFkZXIobmFtZUhhc2hNYXBGb3JTaGFkZXJzLmdldCgp
KTsKICAgICBtX2NvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7CiAKQEAgLTEw
MjMsNyArMTAyMyw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6bWFwcGVkU3ltYm9sTmFt
ZShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEFOR0xFU2hhZGVyCiAgICAgICAgIC8vIEF0dHJp
YnV0ZXMgYXJlIGEgc3BlY2lhbCBjYXNlOiB0aGV5IG1heSBiZSByZXF1ZXN0ZWQgYmVmb3JlIGFu
eSBzaGFkZXJzIGhhdmUgYmVlbiBjb21waWxlZCwKICAgICAgICAgLy8gYW5kIGFyZW4ndCBldmVu
IHJlcXVpcmVkIHRvIGJlIHVzZWQgaW4gYW55IHNoYWRlciBwcm9ncmFtLgogICAgICAgICBpZiAo
IW5hbWVIYXNoTWFwRm9yU2hhZGVycykKLSAgICAgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CisgICAgICAgICAgICBuYW1l
SGFzaE1hcEZvclNoYWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwogICAgICAg
ICBzZXRDdXJyZW50TmFtZUhhc2hNYXBGb3JTaGFkZXIobmFtZUhhc2hNYXBGb3JTaGFkZXJzLmdl
dCgpKTsKIAogICAgICAgICBhdXRvIGdlbmVyYXRlZE5hbWUgPSBnZW5lcmF0ZUhhc2hlZE5hbWUo
bmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKaW5kZXggMjQz
MDQ2ZDk4OWFkNzM4ZjdjOWY3MTQ5NTU2N2M5NmJiMzRjNTY0MS4uNzBhMjBkNTBjMzUyMWE2MTIz
ZTZlZmFmMWY0NzY4ZjY0OTVjZGU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTEVTLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNs
ZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQotICAgICAgICBt
X2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlz
LCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVl
PEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJl
dHVybiAqbV9leHRlbnNpb25zOwogfQogI2VuZGlmCkBAIC0yNzEsNyArMjcxLDcgQEAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dDNEQXR0cmlidXRlcwogR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdy
YXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlLCBHcmFwaGljc0NvbnRleHQzRCog
c2hhcmVkQ29udGV4dCkKICAgICA6IG1fYXR0cnMoYXR0cmlidXRlcykKICAgICAsIG1fY29tcGls
ZXIoaXNHTEVTMkNvbXBsaWFudCgpID8gU0hfRVNTTF9PVVRQVVQgOiBTSF9HTFNMX0NPTVBBVElC
SUxJVFlfT1VUUFVUKQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJTdHlsZSkpCisgICAgLCBtX3ByaXZhdGUobWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggZWQ2Y2NmMTk0YmJlZTFlMDBmZDQzOWY2MWE2ZGU2MmU0MDMw
MmVhMy4uOGZkM2FkNGY3MmQ3NjRiZDk1ZDIyMGY1ODFlZDJiNzk2Mjg4M2M5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dDNEVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAKQEAgLTEwNiw5ICsx
MDYsOSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250
ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvcwogewogICAgIEFTU0VSVF9VTlVTRUQoc2hh
cmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwogI2lmIFVTRShOSUNPU0lBKQotICAgIG1fbmlj
b3NpYUxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxOaWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCBy
ZW5kZXJTdHlsZSk7CisgICAgbV9uaWNvc2lhTGF5ZXIgPSBtYWtlVW5pcXVlPE5pY29zaWE6OkdD
M0RMYXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKICNlbHNlCi0gICAgbV90ZXhtYXBMYXllciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywg
cmVuZGVyU3R5bGUpOworICAgIG1fdGV4bWFwTGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBw
ZXJHQzNEUGxhdGZvcm1MYXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKICNlbmRpZgogCiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CkBAIC0zMjUsMTAgKzMyNSwxMCBAQCBFeHRlbnNpb25zM0Qm
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKICAgICBpZiAoIW1fZXh0ZW5zaW9u
cykgewogI2lmIFVTRShPUEVOR0xfRVMpCiAgICAgICAgIC8vIGdsR2V0U3RyaW5naSBpcyBub3Qg
YXZhaWxhYmxlIG9uIEdMRVMyLgotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCAgZmFsc2UpOworICAgICAgICBtX2V4dGVu
c2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCAgZmFsc2UpOwog
I2Vsc2UKICAgICAgICAgLy8gRnJvbSBPcGVuR0wgMy4yIG9uIHdlIHVzZSB0aGUgQ29yZSBwcm9m
aWxlLCBhbmQgdGhlcmUgd2UgbXVzdCB1c2UgZ2xHZXRTdHJpbmdpLgotICAgICAgICBtX2V4dGVu
c2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgR0xDb250
ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworICAgICAgICBtX2V4dGVuc2lvbnMg
PSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50
KCktPnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAgfQogICAgIHJldHVybiAqbV9leHRl
bnNpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNw
cAppbmRleCAxNGYxZGJmMThkOTFiMzkwNzVlMmQ1MGYyMTQ5Yjc3NmJiYzE3NDkzLi42NjMyMzE1
Njk1YmEyMWMyNjdkMTU1OTMyZWJhOTE0N2ZiNjZhZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAKICAg
ICB7CiAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2Nr
KCkpOwotICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIoc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1f
Y29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJu
YWxDb2xvckZvcm1hdCkpOworICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRC
dWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250
ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1f
aW50ZXJuYWxDb2xvckZvcm1hdCkpOwogICAgIH0KIAogICAgIG1fY29udGV4dC5tYXJrTGF5ZXJD
b21wb3NpdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVy
LmgKaW5kZXggOGI2MDIxNGFiYTliODNjYTE5MzBmMTM1Yzc1MzQ4YjI2NmZlNWNhYy4uZTZmMDlj
ODc5ODU0ODYzMmVlNGIwYWE1YTU2MzA2MTVhMjRhMzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1M
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBHTENv
bnRleHQ7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OwogCiBjbGFzcyBU
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIgOiBwdWJsaWMgUGxhdGZvcm1MYXllciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlckdD
M0RQbGF0Zm9ybUxheWVyKEdyYXBoaWNzQ29udGV4dDNEJiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJl
bmRlclN0eWxlKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggOTc0Yjg1NzhiODhhYTY0MzUwOTFlOGIwYzM4
YmIyZGI3MTBlZjEwMi4uYTJmNzU4NjZlMzIzYjhmZGJhNDNhMDA3ZDQ0N2FhYTQ2NTc2YmZmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBUZXh0dXJlTWFwcGVy
R0w6OlRleHR1cmVNYXBwZXJHTCgpCiAKICAgICBtX2RhdGEgPSBuZXcgVGV4dHVyZU1hcHBlckdM
RGF0YShwbGF0Zm9ybUNvbnRleHQpOwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBt
X3RleHR1cmVQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXBUZXh0dXJlUG9vbD4obV9jb250
ZXh0QXR0cmlidXRlcyk7CisgICAgbV90ZXh0dXJlUG9vbCA9IG1ha2VVbmlxdWU8Qml0bWFwVGV4
dHVyZVBvb2w+KG1fY29udGV4dEF0dHJpYnV0ZXMpOwogI2VuZGlmCiB9CiAKQEAgLTc5MCw3ICs3
OTAsNyBAQCBSZWY8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJl
KEdMaW50IGludGVybmFsRm9ybWF0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlcj4g
VGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJHTD4oKTsKIH0KIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDdhZmRmMzBhMDViY2E1Mzk3Yjgw
MThiZmViZDg5ZTBlMWRhNTAzMzMuLmUxMWEwYmIyN2I4MTBjMmQ1Mjc2YjJhOWIwYzUwOWY4ODk1
MDY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgIGF1
dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1cmUtPnJlc2V0
KG1fc2l6ZSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZS5nZXQo
KSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQpOwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRl
eHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOwog
fQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZs
b2F0IG9wYWNpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5jcHAKaW5kZXggYzcxNGY2ZDc4YzFjZjFhNjFkNGRmZjZiNDIwNTIxYjAyZWNkN2M1MC4u
Mzc5MzY3NWFjOGQ2YjNjMzJhM2IzMTgxOTNlNDlhN2IzN2RjNDg4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtNzEsOCArNzEsOCBA
QCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3Np
dGluZ1RocmVhZChDb21wb3NpdG9yKiBjbwogICAgIGlmIChtX3RhcmdldExheWVyICYmIG1fY3Vy
cmVudEJ1ZmZlcikKICAgICAgICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNMYXllcihtX2N1
cnJlbnRCdWZmZXIuZ2V0KCkpOwogCi0gICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKTsKLSAgICBtX2NvbXBv
c2l0b3JUaHJlYWRVcGRhdGVUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhp
cywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNvbXBvc2l0b3JUaHJlYWRVcGRh
dGVUaW1lckZpcmVkKTsKKyAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIgPSBtYWtlVW5p
cXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5M
b29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpy
ZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOworICAgIG1fY29tcG9zaXRvclRocmVhZFVw
ZGF0ZVRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQpOwogCiAj
aWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1l
ci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpDb21wb3NpdGluZ1RocmVhZFVw
ZGF0ZVRpbWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggMzY3ZDhhNTNjZjM3MGQyMjAyZDZmMzQwMWNkY2IzYTAy
ZmY0MmMyYi4uZDQ3NTcxMGJhMGNkZGZiY2RiZGEwYzY4Y2UzMGI4MWVmYWFkNjljZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBk
YXRlQ29udGVudEJ1ZmZlcnMoKQogCiAgICAgLy8gRW5zdXJlIHRoZSBUaWxlZEJhY2tpbmdTdG9y
ZSBvYmplY3QsIGFuZCBlbmZvcmNlIGEgY29tcGxldGUgcmVwYWludCBpZiBpdCdzIG5vdCBiZWVu
IHByZXNlbnQgeWV0LgogICAgIGlmICghbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlKSB7Ci0g
ICAgICAgIGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8VGls
ZWRCYWNraW5nU3RvcmU+KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CisgICAgICAg
IGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8VGlsZWRCYWNraW5nU3Rv
cmU+KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CiAgICAgICAgIG1fcGVuZGluZ1Zp
c2libGVSZWN0QWRqdXN0bWVudCA9IHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaApp
bmRleCAyYzI0ZTA4NGUzMjk2YTQ3ZTA5ZTk2MTBkNzQ4ZDZhODhmZTQ5NjU2Li5mYmMyNDViZTFl
NTAzODUzYzczMmYwMWU1YTM0ZTU1ODRhNWIzYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKQEAg
LTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGlsZWRCYWNraW5nU3Rv
cmU7CiAKIGNsYXNzIFRpbGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHR5cGVkZWYgSW50UG9pbnQgQ29vcmRpbmF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggM2JlNDMxMWRlYWEwMjQ5N2M3ZWQx
Y2RjYTEzNDViYTVhNjgwMzEwOS4uNGE2OTc4MjJlNGRlMmNkYjhiNjZmODFkNDA0ZDhkYmU4MmI0
OTg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3Bw
CkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIHMKICAgICB1bnNpZ25l
ZCB0aWxlc1RvQ3JlYXRlQ291bnQgPSB0aWxlc1RvQ3JlYXRlLnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIG4gPSAwOyBuIDwgdGlsZXNUb0NyZWF0ZUNvdW50OyArK24pIHsKICAgICAgICAgVGls
ZTo6Q29vcmRpbmF0ZSBjb29yZGluYXRlID0gdGlsZXNUb0NyZWF0ZVtuXTsKLSAgICAgICAgbV90
aWxlcy5hZGQoY29vcmRpbmF0ZSwgc3RkOjptYWtlX3VuaXF1ZTxUaWxlPigqdGhpcywgY29vcmRp
bmF0ZSkpOworICAgICAgICBtX3RpbGVzLmFkZChjb29yZGluYXRlLCBtYWtlVW5pcXVlPFRpbGU+
KCp0aGlzLCBjb29yZGluYXRlKSk7CiAgICAgfQogICAgIHJlcXVpcmVkVGlsZUNvdW50IC09IHRp
bGVzVG9DcmVhdGVDb3VudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCBjODhl
OWJlZjlkNjZjYTJiNTUwMThjOTBmNGIwYTQyOGI0NjgyZWY4Li40ZWFmMDAxMTIwYzQ3ZmZjZTU1
YWI0ZGZhOTIxODNjZThiMzE5NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBUcmFuc2Zvcm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPShj
b25zdCBUcmFuc2Zvcm1TdGF0ZSYgb3RoZXIpCiAgICAgaWYgKG1fbWFwUXVhZCkgewogICAgICAg
ICBtX2xhc3RQbGFuYXJRdWFkID0gb3RoZXIubV9sYXN0UGxhbmFyUXVhZDsKICAgICAgICAgaWYg
KG90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpCi0gICAgICAgICAgICBtX2xhc3RQbGFu
YXJTZWNvbmRhcnlRdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCpvdGhlci5tX2xh
c3RQbGFuYXJTZWNvbmRhcnlRdWFkKTsKKyAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFy
eVF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKm90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFy
eVF1YWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlR
dWFkID0gbnVsbHB0cjsKICAgICB9CkBAIC01MCw3ICs1MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBU
cmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAg
ICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbnVsbHB0cjsKIAogICAgIGlmIChvdGhlci5tX2Fj
Y3VtdWxhdGVkVHJhbnNmb3JtKQotICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gc3Rk
OjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLm1fYWNjdW11bGF0ZWRU
cmFuc2Zvcm0pOworICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOwogICAg
ICAgICAKICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC0xMjksMTIgKzEyOSwxMiBAQCB2b2lkIFRy
YW5zZm9ybVN0YXRlOjphcHBseVRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtRnJvbUNvbgogICAgIC8vIElmIHdlIGhhdmUgYW4gYWNjdW11bGF0ZWQgdHJhbnNm
b3JtIGZyb20gbGFzdCB0aW1lLCBtdWx0aXBseSBpbiB0aGlzIHRyYW5zZm9ybQogICAgIGlmICht
X2FjY3VtdWxhdGVkVHJhbnNmb3JtKSB7CiAgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBs
eVRyYW5zZm9ybURpcmVjdGlvbikKLSAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyICogKm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOworICAgICAgICAgICAgbV9hY2N1bXVs
YXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9y
bUZyb21Db250YWluZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm11bHRpcGx5KHRyYW5zZm9ybUZy
b21Db250YWluZXIpOwogICAgIH0gZWxzZSBpZiAoYWNjdW11bGF0ZSA9PSBBY2N1bXVsYXRlVHJh
bnNmb3JtKSB7CiAgICAgICAgIC8vIE1ha2Ugb25lIGlmIHdlIHN0YXJ0ZWQgdG8gYWNjdW11bGF0
ZQotICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CisgICAgICAgIG1fYWNj
dW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFu
c2Zvcm1Gcm9tQ29udGFpbmVyKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGFjY3VtdWxhdGUgPT0g
RmxhdHRlblRyYW5zZm9ybSkgewpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgVHJhbnNmb3JtU3Rh
dGU6OnNldExhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKGNvbnN0IEZsb2F0UXVhZCogcXVhZCkKICAg
ICAvLyBNYXAgdGhlIHF1YWQgYmFjayB0aHJvdWdoIGFueSB0cmFuc2Zvcm0gb3Igb2Zmc2V0IGJh
Y2sgaW50byB0aGUgbGFzdCBmbGF0dGVuaW5nIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgRmxvYXRR
dWFkIGJhY2tNYXBwZWRRdWFkKCpxdWFkKTsKICAgICBtYXBRdWFkKGJhY2tNYXBwZWRRdWFkLCBp
bnZlcnNlRGlyZWN0aW9uKCkpOwotICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oYmFja01hcHBlZFF1YWQpOworICAgIG1fbGFzdFBsYW5h
clNlY29uZGFyeVF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oYmFja01hcHBlZFF1YWQpOwog
fQogCiB2b2lkIFRyYW5zZm9ybVN0YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNm
b3JtRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtU3RhdGUuaAppbmRleCAxMDg2Mzc0MDBhMjBmYTJmMDlkZjZhZDQzOTMzY2E3ZGExN2Y0
ODYxLi5iNjI1ODM2YTVjZTIyNWJmNDdmMzMwYzA4YzI5ZDhjNzU2NTJlZTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1TdGF0ZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIFRyYW5zZm9ybVN0YXRlIHsK
ICAgICAgICAgLy8gV2UgbXVzdCBiZSBpbiBhIGZsYXR0ZW5lZCBzdGF0ZSAobm8gYWNjdW11bGF0
ZWQgb2Zmc2V0KSB3aGVuIHNldHRpbmcgdGhpcyBzZWNvbmRhcnkgcXVhZC4KICAgICAgICAgQVNT
RVJUKG1fYWNjdW11bGF0ZWRPZmZzZXQgPT0gTGF5b3V0U2l6ZSgpKTsKICAgICAgICAgaWYgKHF1
YWQpCi0gICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdFF1YWQ+KCpxdWFkKTsKKyAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFy
eVF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbnVsbHB0cjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4u
Y3BwCmluZGV4IGQzMWEyNTc5ZmIxZTFjNzk0MjVkMDI5MDVlYmViYzg4ZDE0YWRkNTAuLjhmNzcw
Mjc1ZGU2OTk1NjhjODUxNWFlYTBmMmNmYTBlNTIwNTY3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC02NDIs
NyArNjQyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6
Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUKICAgICBib29sIHN5bnRoZXNpemVC
b2xkID0gaXNHRElGb250V2VpZ2h0Qm9sZCh3ZWlnaHQpICYmICFpc0dESUZvbnRXZWlnaHRCb2xk
KGxvZ0ZvbnQubGZXZWlnaHQpOwogICAgIGJvb2wgc3ludGhlc2l6ZUl0YWxpYyA9IGlzSXRhbGlj
KGZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKSkgJiYgIWxvZ0ZvbnQubGZJdGFsaWM7CiAKLSAgICBh
dXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oV1RGTW92ZSho
Zm9udCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBzeW50aGVzaXplQm9s
ZCwgc3ludGhlc2l6ZUl0YWxpYywgdXNlR0RJKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Rm9udFBsYXRmb3JtRGF0YT4oV1RGTW92ZShoZm9udCksIGZvbnREZXNjcmlwdGlvbi5jb21w
dXRlZFBpeGVsU2l6ZSgpLCBzeW50aGVzaXplQm9sZCwgc3ludGhlc2l6ZUl0YWxpYywgdXNlR0RJ
KTsKIAogI2lmIFVTRShDRykKICAgICBib29sIGZvbnRDcmVhdGlvbkZhaWxlZCA9ICFyZXN1bHQt
PmNnRm9udCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDM4N2EyMzlmODI5
YzJkNzgwOWMyYzk2ZDNmZTEyNGRlZTE0YmQzZDcuLjY0ODQ4NWFjMjZjYjIzNzVjZjY1NzRmODFm
ZjRjZDY1NjcyYzUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTExMyw3
ICsxMTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGZvbnRSZWZlcmVuY2UgPSBy
ZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CiAgICAgaWYgKCFmb250UmVm
ZXJlbmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5j
ZSwgZm9udE5hbWUpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRz
Rm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5k
ZXggMTkwNDQ5MDA0NWY0ZTdlN2Y3ZGI4MWQ5NWYwYTZhMjQyYmQ1NDgzOC4uZWFiODA2ZTQyYzA2
MmQ1NTk3ODk5NDUyZWZlNzQ3NGU1OTlmOTJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CkBAIC00MSw2ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2Vk
U2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0
dGluZ3M7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKTsKIHB1YmxpYzoKICAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEhBTkRMRSBmb250
UmVmZXJlbmNlLCBjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwCmluZGV4IGFiN2M3OTBkNjBmMmU4Zjc0YWYwM2MwNmFjZmM3MmM4ZTM5YzIy
ZDkuLmVlZWFmZWJkOTMzY2E5Yzc4ZGQwNTE0MTNkMjMzNDRjYTg1M2IwMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlCiAgICAgaWYgKCFmb250UmVmZXJlbmNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJv
b2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBm
b3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcAppbmRleCBiOTUzNTUwM2MzMDZjNTAxYWEz
OTNmMzFmZmQ5Mjg4NWVkZTliZGVmLi5jYzdhZDNlYzMxMGJhZmY5ZjJkNTMxM2VhMzdlYmI2Njdj
NzlkNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGludCBrRnVsbFNjcmVlbkFuaW1hdGlvbkR1
cmF0aW9uID0gNTAwOyAvLyBtaWxsaXNlY29uZHMgCiAKIGNsYXNzIEZ1bGxTY3JlZW5Db250cm9s
bGVyOjpQcml2YXRlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQg
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQcml2YXRlKEZ1
bGxTY3JlZW5Db250cm9sbGVyKiBjb250cm9sbGVyLCBGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVu
dCogY2xpZW50KSAKICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKQEAgLTEwMyw3
ICsxMDQsNyBAQCBMUkVTVUxUIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpQcml2YXRlOjpmdWxsc2Ny
ZWVuQ2xpZW50V25kUHJvYyhIV05EIGh3bmQsIFVJTlQgbQogfQogCiBGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIoRnVsbFNjcmVlbkNvbnRyb2xsZXJDbGllbnQqIGNs
aWVudCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFByaXZhdGU+KHRoaXMsIGNs
aWVudCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxQcml2YXRlPih0aGlzLCBjbGllbnQp
KQogewogICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwogfQpAQCAtMTMxLDEzICsxMzIs
MTMgQEAgdm9pZCBGdWxsU2NyZWVuQ29udHJvbGxlcjo6ZW50ZXJGdWxsU2NyZWVuKCkKICAgICBt
X3ByaXZhdGUtPm1fb3JpZ2luYWxGcmFtZSA9IG9yaWdpbmFsRnJhbWU7CiAKICAgICBBU1NFUlQo
IW1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fYmFja2dy
b3VuZFdpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdp
bmRvdyA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9w
cml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdy0+Y3JlYXRl
V2luZG93KDApOwogICAgIDo6QW5pbWF0ZVdpbmRvdyhtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdp
bmRvdy0+aHduZCgpLCBrRnVsbFNjcmVlbkFuaW1hdGlvbkR1cmF0aW9uLCBBV19CTEVORCB8IEFX
X0FDVElWQVRFKTsKIAogICAgIG1fcHJpdmF0ZS0+bV9jbGllbnQtPmZ1bGxTY3JlZW5DbGllbnRX
aWxsRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fZnVsbFNjcmVl
bldpbmRvdyk7Ci0gICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQo
KSk7CisgICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBtYWtlVW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgQVNT
RVJUKG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93KTsKICAgICBtX3ByaXZhdGUtPm1fZnVs
bFNjcmVlbldpbmRvdy0+Y3JlYXRlV2luZG93KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJv
V2luLmNwcAppbmRleCAxMDY3Yjk2MDkzZGIyZWQ1OTFhMjFhMzFkOWQwMjU2ZGMxMjkzZTg5Li5m
MTQ0MjU3MmNjNmQxZDU0YmJlZTU4YmRiYzM2ZWRmNzc0YWFiYjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDYWlyb1dpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnBsYXRmb3JtSW5pdChIREMgZGMsIGJvb2wgaGFzQWxwaGEpCiAKICAgICBjYWlyb190KiBjciA9
IGNyZWF0ZUNhaXJvQ29udGV4dFdpdGhIREMoZGMsIGhhc0FscGhhKTsKIAotICAgIG1fZGF0YSA9
IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybUNvbnRleHRDYWlybz4oY3IpKTsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7CiAg
ICAgbV9kYXRhLT5wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX2Rh
dGEpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBkYzsKICAgICBpZiAocGxhdGZvcm1Db250ZXh0KCkt
PmNyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IGMyYmFmYWY5NmEx
NjA3MDgwYjc2MzM5NTI2NjJlNzY3NzYxNGIwMGMuLjk2YzgyODFhZjRiMjJjNjY4NmFjYjE0YzVl
ODJjMWQ2OWI5MGRkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtNjMs
NyArNjMsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMgaGRjLCBJRDJE
MURDUmVuZGVyVGFyZ2V0KiogcmVuZGVyVGFyZ2V0LCBSRQogCiAgICAgKCpyZW5kZXJUYXJnZXQp
LT5CaW5kREMoaGRjLCAmcmVjdCk7CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7
CisgICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOwogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShvd25lZFBsYXRmb3JtQ29udGV4dCksIEJpdG1h
cFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBo
ZGM7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
SW5pdChIREMgaGRjLCBib29sIGhhc0FscGhhKQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldC5nZXQoKSk7Cisg
ICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQ+KHJlbmRlclRhcmdldC5nZXQoKSk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwgQml0
bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9
IGhkYzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBiZDc2
ZWZiYmE5ZDBlODk3ZDNkMjg4ZTg1ZThkMjQ0NGNjNGY4ZjRlLi4xZWJiNWIwOWQzODUzN2MwMTky
MjBiOTQ3ZGNhZDk0NGQ4ZTEwMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmNwcApAQCAtNDYsNyArNDYsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4
dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAg
ICBbJnBsYXRmb3JtQ29udGV4dF0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHBsYXRmb3Jt
Q29udGV4dCk7CiAgICAgICAgIH0pOwogfQogCkBAIC01NSwxNCArNTUsMTQgQEAgR3JhcGhpY3ND
b250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ6OmNyZWF0ZUYKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRl
eHRJbXBsRmFjdG9yeSgKICAgICAgICAgW3JlbmRlclRhcmdldF0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHJlbmRlclRhcmdldCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNv
bnRleHQsIHJlbmRlclRhcmdldCk7CiAgICAgICAgIH0pOwogfQogCiBHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAg
OiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5z
Zm9ybSB7IH0pCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCi0gICAg
LCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0Nv
bnRleHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250
ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3Bs
YXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7
CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CkBAIC03MCw5
ICs3MCw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4CiAKIEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKICAgICA6IEdyYXBoaWNzQ29u
dGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKLSAg
ICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKKyAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQo
bWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKICAgICAs
IG1fcGxhdGZvcm1Db250ZXh0KCptX293bmVkUGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2
YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3Bs
YXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlw
ZTo6R1BVTWVtb3J5KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0
bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCiB7CiAgICAgbV9wbGF0Zm9ybUNv
bnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1f
cHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2lu
LmNwcAppbmRleCA1YmRlNGNlZGY1MTZhOTE3OWE2ZDNkM2IzZTMzZDEzNGVkNWFiNTExLi4xZDgw
NDIwY2Y3ZWM2Y2Q3NzVhNjJiYWVhMjJmOTkwNjA3ZWI0Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2lu
LmNwcApAQCAtOTUsNyArOTUsNyBAQCBHcmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA6On5X
aW5kb3dzQml0bWFwKCkKIAogc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDo6V2luZG93
c0JpdG1hcD4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVXaW5kb3dzQml0bWFwKGNvbnN0IEludFNp
emUmIHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2luZG93c0JpdG1hcD4o
bV9kYXRhLT5tX2hkYywgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2luZG93c0JpdG1h
cD4obV9kYXRhLT5tX2hkYywgc2l6ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQu
Y3BwCmluZGV4IDA2YzE3NDU3OWE0YmMxMzA5MWYzNGI1Nzk0YWFhOTI5OTNiYmJhMjQuLjM1YTlm
ZjYxMTM1MWMzM2M3MTc0ZDkyYTFmZGNmNDQ3MGU4MWE4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHAKQEAgLTExMiw4ICsxMTIsOCBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBOb3RlOiBUaGlzIHBsYWNlcyB0aGUgYml0bWFwY29udGV4dCBp
bnRvIGEgbG9ja2VkIHN0YXRlIGJlY2F1c2Ugb2YgdGhlIEJlZ2luRHJhdyBjYWxsIGluIHRoZSBj
b25zdHJ1Y3Rvci4KLSAgICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Ci0gICAgbV9k
YXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRhLnBs
YXRmb3JtQ29udGV4dC5nZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250
ZXh0VHlwZTo6R1BVTWVtb3J5KTsKKyAgICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gbWFrZVVu
aXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CisgICAg
bV9kYXRhLmNvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRhLnBsYXRm
b3JtQ29udGV4dC5nZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0
VHlwZTo6R1BVTWVtb3J5KTsKIAogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKaW5kZXggZTA2NjMxMGEwYWNhNzFi
ZDlhYzgxZGQxNmJhMGRiMTVhN2Q1MTFkNS4uZDI4NTM4YTE1ODIyOGIyYzg5ZTE4M2M3MzkxNGUx
MmI4YTE4OTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdy5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5DbGllbnQgewogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRv
dyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyhNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xp
ZW50Kik7CiAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggNTgzOGVj
MTU3YTJjN2I3MTYzYjcxNjgyYTRlYjhjODAzNGU5NjMyMS4uNmQ2NGFlOWE2ZTNhNDE3ZmIxNGYx
MjE2NmY2OGQzYzlhNTUyNjZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKCkKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkg
ewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7
IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBt
YWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsgfSwK
ICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDAp
OwogICAgIH0KIH0KQEAgLTMwMSw3ICszMDEsNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246Om1heFRpbWVTZWVrYWJsZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
YnVmZmVyZWQoKSBjb25zdAogeyAKLSAgICBhdXRvIHJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gcmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fcHJlc2VudGVyICYmIG1fcHJlc2VudGVyLT5t
YXhUaW1lTG9hZGVkKCkgPiAwKQogICAgICAgICByYW5nZXMtPmFkZChNZWRpYVRpbWU6Onplcm9U
aW1lKCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3ByZXNlbnRlci0+bWF4VGltZUxv
YWRlZCgpKSk7CiAgICAgcmV0dXJuIHJhbmdlczsKQEAgLTg4OCw3ICs4ODgsNyBAQCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpDdXN0b21W
aWRlb1ByZXNlbnRlcihNZQogICAgIG1fc291cmNlUmVjdC5ib3R0b20gPSAxOwogICAgIG1fc291
cmNlUmVjdC5yaWdodCA9IDE7CiAKLSAgICBtX3ByZXNlbnRlckVuZ2luZSA9IHN0ZDo6bWFrZV91
bmlxdWU8RGlyZWN0M0RQcmVzZW50ZXI+KCk7CisgICAgbV9wcmVzZW50ZXJFbmdpbmUgPSBtYWtl
VW5pcXVlPERpcmVjdDNEUHJlc2VudGVyPigpOwogICAgIGlmICghbV9wcmVzZW50ZXJFbmdpbmUp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbi5oCmluZGV4IDkwZTliNzIxNTcwOGFjMmEyZWZmN2Q0YTZhZGUxNDdlZWUyODg0NjYu
LmEyMTY2MTEwYjM4MDBmMTc2NDcxNjVjMmQwMmEwZGE5ZWE5NTEwMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSwgcHVibGljIENh
bk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbihNZWRpYVBsYXllciopOwogICAgIH5NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24oKTsKQEAgLTE2OCw2ICsxNjksNyBAQCBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2
YXRlSW50ZXJmYQogICAgIH07CiAKICAgICBjbGFzcyBBc3luY0NhbGxiYWNrIDogcHVibGljIElN
RkFzeW5jQ2FsbGJhY2ssIHB1YmxpYyBNZWRpYVBsYXllckxpc3RlbmVyIHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBBc3luY0NhbGxiYWNr
KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiosIGJvb2wgZXZlbnQpOwogICAgICAg
ICB+QXN5bmNDYWxsYmFjaygpOwpAQCAtMTkxLDYgKzE5Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhCiAgICAgdHlwZWRlZiBEZXF1ZTxDT01QdHI8SU1GU2FtcGxlPj4gVmlkZW9TYW1wbGVM
aXN0OwogCiAgICAgY2xhc3MgVmlkZW9TYW1wbGVQb29sIHsKKyAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBWaWRlb1NhbXBsZVBvb2woKSA9IGRl
ZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflZpZGVvU2FtcGxlUG9vbCgpID0gZGVmYXVsdDsKQEAg
LTIxMiw2ICsyMTUsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24g
ZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYQogICAgIGNsYXNzIERpcmVj
dDNEUHJlc2VudGVyOwogCiAgICAgY2xhc3MgVmlkZW9TY2hlZHVsZXIgeworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFZpZGVvU2NoZWR1bGVy
KCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIH5WaWRlb1NjaGVkdWxlcigpID0gZGVmYXVs
dDsKQEAgLTI1Nyw2ICsyNjEsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYQogICAgIH07CiAK
ICAgICBjbGFzcyBEaXJlY3QzRFByZXNlbnRlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgRGlyZWN0M0RQcmVzZW50ZXIoKTsKICAgICAg
ICAgfkRpcmVjdDNEUHJlc2VudGVyKCk7CkBAIC0zMTksNiArMzI0LDcgQEAgY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmEKICAgICAgICAgLCBwdWJsaWMgSU1GVmlkZW9EaXNwbGF5Q29udHJvbAogICAg
ICAgICAsIHB1YmxpYyBJTUZBc3luY0NhbGxiYWNrCiAgICAgICAgICwgcHVibGljIE1lZGlhUGxh
eWVyTGlzdGVuZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CiAgICAgICAgIEN1c3RvbVZpZGVvUHJlc2VudGVyKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbiopOwogICAgICAgICB+Q3VzdG9tVmlkZW9QcmVzZW50ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3Jt
Q29udGV4dERpcmVjdDJELmgKaW5kZXggNmZiZTJiNWVkNzVhYjNiYTA0ZTMwMjU0OWNjZWI5MTYx
YWY1YzAxMy4uMTkwNTQwZTAzM2Q5YjdjYzhjNTRiOGIxYmVmNzc2OTJiZDVmOTQyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4
dERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1Bs
YXRmb3JtQ29udGV4dERpcmVjdDJELmgKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IFNoYWRvd1N0
YXRlOwogfQogCiBjbGFzcyBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQpOwogcHVibGljOgogICAgIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKElEMkQxUmVu
ZGVyVGFyZ2V0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV0tDQUltYWdlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAppbmRleCAzMzdmYWYzNzhkYTc5NTViZWE2MTBhZWM5
MDc1Nzk2NmQ2YzQ4MjAwLi45ZDdkOTJlOGVhZDk2YTFiYmRmYmQxZDkyZGM5NjYyMWM2YzQyZjc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUlt
YWdlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
S0NBSW1hZ2VRdWV1ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV0tDQUltYWdlUXVldWVQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBSZXRhaW5QdHI8Q0FJbWFnZVF1ZXVlUmVmPiBtX2ltYWdlUXVl
dWU7CiB9OwpAQCAtNTAsMTMgKzUxLDEzIEBAIHN0YXRpYyB2b2lkIFdLQ0FJbWFnZVF1ZXVlUmVs
ZWFzZShDQUltYWdlUXVldWVSZWYgaXEpCiB9CiAKIFdLQ0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VR
dWV1ZSh1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBjYXBhY2l0eSkK
LSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4o
KSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkK
IHsKICAgICBtX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IGFkb3B0Q0Yod2tDQUltYWdlUXVldWVD
cmVhdGUod2lkdGgsIGhlaWdodCwgY2FwYWNpdHkpKTsKIH0KIAogV0tDQUltYWdlUXVldWU6OldL
Q0FJbWFnZVF1ZXVlKGNvbnN0IFdLQ0FJbWFnZVF1ZXVlJiBvKQotICAgIDogbV9wcml2YXRlKHN0
ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQorICAgIDogbV9wcml2YXRl
KG1ha2VVbmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQogewogICAgIG1fcHJpdmF0ZS0+
bV9pbWFnZVF1ZXVlID0gby5tX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCA3MWEwMGEzMGMwZmFl
ZGQ5YjQwZWM0ZmZhZGYxNzg2MzhmMjViODU0Li40MjI1MmQzNGI1NGZlNmMyYzI2YjUyMmM2NjBl
ODYyZjA1NmVmMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRHdGsuY3BwCkBAIC00MywyNCArNDMsMjQgQEAgZW51bSBDbGlwYm9hcmREYXRhVHlwZSB7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQ
Qk9BUkQiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiQ0xJUEJPQVJEIik7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JH
bG9iYWxTZWxlY3Rpb24oKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9h
cmQ+KCJQUklNQVJZIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIlBSSU1B
UlkiKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhOjpjcmVhdGUo
KSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJUKGRy
YWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0
ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4
IDQ5MDM3MWFkODllZjJlNzk2ZTM0MDFhYWMxZGJiODA2ZWE5NjZlYjAuLmFmOGZmMzQyNDZiYzk3
MmYxYTVmZjczN2Y5OTI5ODA5ZmI2NjliMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKQEAgLTI2Niw2ICsyNjYsNyBAQCBWZWN0b3I8
R2RrQXRvbT4gUGFzdGVib2FyZEhlbHBlcjo6ZHJvcEF0b21zRm9yQ29udGV4dChHdGtXaWRnZXQq
IHdpZGdldCwgR2RrRHJhZwogc3RhdGljIFNlbGVjdGlvbkRhdGEqIHNldHRpbmdDbGlwYm9hcmRT
ZWxlY3Rpb247CiAKIHN0cnVjdCBDbGlwYm9hcmRTZXREYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQ2xpcGJvYXJkU2V0RGF0YShTZWxlY3Rpb25EYXRhJiBz
ZWxlY3Rpb24sIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFj
aykKICAgICAgICAgOiBzZWxlY3Rpb25EYXRhKHNlbGVjdGlvbikKICAgICAgICAgLCBzZWxlY3Rp
b25DbGVhcmVkQ2FsbGJhY2soV1RGTW92ZShzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2spKQpAQCAt
MzAwLDcgKzMwMSw3IEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgY29uc3QgU2VsCiAKICAgICBpZiAobnVtYmVy
T2ZUYXJnZXRzID4gMCAmJiB0YWJsZSkgewogICAgICAgICBTZXRGb3JTY29wZTxTZWxlY3Rpb25E
YXRhKj4gY2hhbmdlKHNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIGNvbnN0X2Nhc3Q8U2VsZWN0
aW9uRGF0YSo+KCZzZWxlY3Rpb24pKTsKLSAgICAgICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxDbGlwYm9hcmRTZXREYXRhPigqc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgV1RGTW92
ZShwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOworICAgICAgICBhdXRvIGRhdGEgPSBtYWtlVW5p
cXVlPENsaXBib2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBXVEZNb3Zl
KHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSk7CiAgICAgICAgIGlmIChndGtfY2xpcGJvYXJkX3Nl
dF93aXRoX2RhdGEoY2xpcGJvYXJkLCB0YWJsZSwgbnVtYmVyT2ZUYXJnZXRzLCBnZXRDbGlwYm9h
cmRDb250ZW50c0NhbGxiYWNrLCBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2ssIGRhdGEu
Z2V0KCkpKSB7CiAgICAgICAgICAgICBndGtfY2xpcGJvYXJkX3NldF9jYW5fc3RvcmUoY2xpcGJv
YXJkLCBudWxscHRyLCAwKTsKICAgICAgICAgICAgIC8vIFdoZW4gZ3RrX2NsaXBib2FyZF9zZXRf
d2l0aF9kYXRhKCkgc3VjY2VlZHMgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrIHRha2Vz
IHRoZSBvd25lcnNoaXAgb2YgZGF0YSwgc28gd2UgbGVhayBpdCBoZXJlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKaW5kZXggYmRjYzk5
ZTg1OWQ0OTc1MDc4ZmYzYzVlMmViYzM4NWQ5Yjk1Yjk1Mi4uNzNlMDc1OGE2ZWRkMWUxOTMyMzEw
ODNmODlhN2U3ZmRmMjBkMTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCkBAIC0zNSwyMCArMzUsMjAgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclRoZW1lR2FkZ2V0PiBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGNvbnN0IFJl
bmRlclRoZW1lR2EKIHsKICAgICBzd2l0Y2ggKGluZm8udHlwZSkgewogICAgIGNhc2UgUmVuZGVy
VGhlbWVHYWRnZXQ6OlR5cGU6OkdlbmVyaWM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lR2FkZ2V0PihpbmZvLCBwYXJl
bnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlw
ZTo6VGV4dEZpZWxkOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVt
ZVRleHRGaWVsZEdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRleHRGaWVsZEdhZGdldD4oaW5mbywg
cGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6
OlR5cGU6OlJhZGlvOgogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkNoZWNrOgot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUdhZGdldD4o
aW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9z
aXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkFycm93OgotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUFycm93R2FkZ2V0PihpbmZvLCBw
YXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lQXJyb3dHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsK
ICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpJY29uOgotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUljb25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2li
bGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVJ
Y29uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBS
ZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6U2Nyb2xsYmFyOgotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhckdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJs
aW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNj
cm9sbGJhckdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNh
c2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkJ1dHRvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0b25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGlu
Z3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0
b25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICB9CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCmluZGV4IDA1ZDEyZGQ5ZWFmYmVmMDJhNDU5Y2E1Mjc2
NDE3YTViOWIwZTg5NzYuLmNhNmVkOTE4YTUwMzNlMjk3NmRiODRkODljMjA0ODg3MDBmMDJiY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0
LmNwcApAQCAtNDIsNDkgKzQyLDQ5IEBAIFJlbmRlclRoZW1lV2lkZ2V0JiBSZW5kZXJUaGVtZVdp
ZGdldDo6Z2V0T3JDcmVhdGUoVHlwZSB3aWRnZXRUeXBlKQogICAgIGF1dG8gYWRkUmVzdWx0ID0g
d2lkZ2V0TWFwKCkuZW5zdXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPih3aWRnZXRUeXBlKSwgW3dp
ZGdldFR5cGVdKCkgLT4gc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRoZW1lV2lkZ2V0PiB7CiAgICAg
ICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkgewogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0
OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbGJhclJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNB
TCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNB
TCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbGJhckxlZnQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNB
TCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6SG9yaXpvbnRhbFNjcm9sbGJhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRB
TCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9O
VEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2UgUmVu
ZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9yUmlnaHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RL
X09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNh
dG9yKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFy
PihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJ
bmRpY2F0b3IpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNh
bFNjcm9sbEluZGljYXRvckxlZnQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJU
aGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVy
dGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNj
cm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVydGljYWxQ
b3NpdGlvbjo6TGVmdCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okhv
cml6b250YWxTY3JvbGxJbmRpY2F0b3I6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9O
VEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6Q2hlY2tCdXR0b246Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVU
b2dnbGVCdXR0b246OlR5cGU6OkNoZWNrKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6
Q2hlY2spOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpSYWRpb0J1dHRv
bjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xl
QnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6UmFkaW8pOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1l
VG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6OkJ1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6Tm8pOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0
dG9uOjpEZWZhdWx0OjpObyk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6
OkJ1dHRvbkRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Olllcyk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0
b246OkRlZmF1bHQ6Olllcyk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6
OkNvbWJvQm94OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVDb21ib0JveD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1l
Q29tYm9Cb3g+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkVudHJ5
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KCk7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNlbGVjdGVkRW50cnk6Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PihSZW5kZXJU
aGVtZUVudHJ5OjpTZWxlY3RlZDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbmRlclRoZW1lRW50cnk+KFJlbmRlclRoZW1lRW50cnk6OlNlbGVjdGVkOjpZZXMpOwogICAg
ICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTZWFyY2hFbnRyeToKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNlYXJjaEVudHJ5PigpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTcGluQnV0dG9uOgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTcGluQnV0dG9uPigpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTcGluQnV0dG9uPigpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNsaWRlcjoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtf
T1JJRU5UQVRJT05fVkVSVElDQUwpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCk7CiAgICAgICAgIGNhc2Ug
UmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTbGlkZXI6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9O
X0hPUklaT05UQUwpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVT
bGlkZXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKICAgICAgICAgY2FzZSBSZW5kZXJU
aGVtZVdpZGdldDo6VHlwZTo6UHJvZ3Jlc3NCYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFy
OjpNb2RlOjpEZXRlcm1pbmF0ZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpEZXRlcm1p
bmF0ZSk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkluZGV0ZXJtaW5h
dGVQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkluZGV0ZXJt
aW5hdGUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVz
c0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5kZXRlcm1pbmF0ZSk7CiAgICAg
ICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okxpc3RWaWV3OgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lTGlzdFZpZXc+KCk7CiAgICAgICAgIGNh
c2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okljb246Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUljb24+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZUljb24+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6OldpbmRvdzoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lV2luZG93PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVXaW5kb3c+KCk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTM5LDcgKzEzOSw3IEBAIFJlbmRlclRoZW1l
U2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcihHdGtPcmllbnRhdGlvbiBvcmllbnRhdGlv
biwgTW9kZSBtb2RlCiAgICAgaW5mby50eXBlID0gUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6Okdl
bmVyaWM7CiAgICAgaW5mby5uYW1lID0gImNvbnRlbnRzIjsKICAgICBpbmZvLmNsYXNzTGlzdC5j
bGVhcigpOwotICAgIG1fY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQm94
R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIGNoaWxkcmVuLCBtX3Njcm9s
bGJhci5nZXQoKSk7CisgICAgbV9jb250ZW50cyA9IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCb3hH
YWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1fc2Nyb2xs
YmFyLmdldCgpKTsKICAgICBpbmZvLm5hbWUgPSAic2xpZGVyIjsKICAgICBtX3NsaWRlciA9IFJl
bmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoaW5mbywgbV9jb250ZW50cy0+Y2hpbGQobV90cm91Z2hQ
b3NpdGlvbikpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIFJlbmRlclRoZW1lQ29tYm9Cb3g6OlJl
bmRlclRoZW1lQ29tYm9Cb3goKQogICAgIH07CiAgICAgaW5mby5uYW1lID0gImJveCI7CiAgICAg
aW5mby5jbGFzc0xpc3QgPSB7ICJob3Jpem9udGFsIiwgImxpbmtlZCIgfTsKLSAgICBtX2JveCA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRB
VElPTl9IT1JJWk9OVEFMLCBjaGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CisgICAgbV9ib3gg
PSBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05f
SE9SSVpPTlRBTCwgY2hpbGRyZW4sIG1fY29tYm9Cb3guZ2V0KCkpOwogICAgIFJlbmRlclRoZW1l
R2FkZ2V0KiBidXR0b24gPSBtX2JveC0+Y2hpbGQoMCk7CiAgICAgaW5mby5jbGFzc0xpc3QucmVt
b3ZlTGFzdCgpOwogICAgIG1fYnV0dG9uQm94ID0gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShp
bmZvLCBidXR0b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NDA3YzExMDFk
ZGQ2ZGI2ZTM3OGRlZmNiM2FiODI2YmY3MjY0NTRkLi43ODY5N2ViMDAwMGY3ZjdiODJhN2QwZWNm
NWY5ODVhMWU5Mjg5YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtOTgsNyAr
OTgsNyBAQCBib29sIEJNUEltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVscGVyKGJvb2wgb25seVNpemUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9yZWFkZXIpIHsKLSAgICAgICAg
bV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlzLCBtX2RlY29k
ZWRPZmZzZXQsIGltZ0RhdGFPZmZzZXQsIGZhbHNlKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtl
VW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlzLCBtX2RlY29kZWRPZmZzZXQsIGltZ0RhdGFPZmZz
ZXQsIGZhbHNlKTsKICAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggN2JhN2VkOTEwMWNlMjVhOWJm
NmUyMzEwODdiZjBiYzExNGNjMjJkNi4uNGYzNDg3ZTMzNDc2NDA1NDc0Y2Y4NmI1YzYwNmQyYzE5
ODhjN2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTMzNCw3ICszMzQsNyBA
QCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZR
dWVyeSBxdWVyeSwgYm9vbCBhbGxEYXRhUgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
cmVhZGVyKSB7Ci0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHSUZJbWFnZVJl
YWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxHSUZJbWFnZVJlYWRl
cj4odGhpcyk7CiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCAxY2NhNWU1OWVlYjM1MWIwNThhMjFk
YjEzNGY2NDM3OTFlNTA3N2NhLi5kNzcxODZlYTk3MzliZGZiMmM1NjIyOGVlNGNmNWU4ODI4ZDg4
NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCBib29s
IEdJRkZyYW1lQ29udGV4dDo6ZGVjb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIFdlYkNvcmU6OgogICAgICAgICBpZiAoIWlzRGF0YVNpemVEZWZpbmVkKCkgfHwg
IWlzSGVhZGVyRGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAg
bV9sendDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHSUZMWldDb250ZXh0PihjbGllbnQsIHRo
aXMpOworICAgICAgICBtX2x6d0NvbnRleHQgPSBtYWtlVW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNs
aWVudCwgdGhpcyk7CiAgICAgICAgIGlmICghbV9sendDb250ZXh0LT5wcmVwYXJlVG9EZWNvZGUo
KSkgewogICAgICAgICAgICAgbV9sendDb250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIEdJRkltYWdlUmVhZGVyOjpzZXRS
ZW1haW5pbmdCeXRlcyhzaXplX3QgcmVtYWluaW5nQnl0ZXMpCiB2b2lkIEdJRkltYWdlUmVhZGVy
OjphZGRGcmFtZUlmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9mcmFtZXMuaXNFbXB0eSgpIHx8
IG1fZnJhbWVzLmxhc3QoKS0+aXNDb21wbGV0ZSgpKQotICAgICAgICBtX2ZyYW1lcy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxHSUZGcmFtZUNvbnRleHQ+KG1fZnJhbWVzLnNpemUoKSkpOworICAg
ICAgICBtX2ZyYW1lcy5hcHBlbmQobWFrZVVuaXF1ZTxHSUZGcmFtZUNvbnRleHQ+KG1fZnJhbWVz
LnNpemUoKSkpOwogfQogCiAvLyBGSVhNRTogTW92ZSB0aGlzIG1ldGhvZCB0byBjbG9zZSB0byBk
b0xaVygpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAxODcwYmIxNjBiODQ5NDhm
MGI1OWRlNDUxMTYzNmJhNGMwZjM4ZjJlLi5mZjZhMWM4N2FlNmYwNWI0OWNjYzEyOGFiZTA1YzMw
M2Q2ZWViYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3
IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAg
ICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaGF2ZSBhbHJlYWR5IHNpemVkIG1fZnJhbWVCdWZmZXJD
YWNoZSBiZWZvcmUgdGhpcywgYW5kCiAgICAgICAgICAgICAvLyB3ZSBtdXN0IG5vdCByZXNpemUg
aXQgYWdhaW4gbGF0ZXIgKHNlZSBjYXV0aW9uIGluIGZyYW1lQ291bnQoKSkuCiAgICAgICAgICAg
ICBBU1NFUlQobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA9PSBtX2RpckVudHJpZXMuc2l6ZSgp
KTsKLSAgICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0gPSBzdGQ6Om1ha2VfdW5pcXVlPEJN
UEltYWdlUmVhZGVyPih0aGlzLCBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0LCAwLCB0cnVlKTsKKyAg
ICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0gPSBtYWtlVW5pcXVlPEJNUEltYWdlUmVhZGVy
Pih0aGlzLCBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0LCAwLCB0cnVlKTsKICAgICAgICAgICAgIG1f
Ym1wUmVhZGVyc1tpbmRleF0tPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICAgICAgICAgIG1f
Ym1wUmVhZGVyc1tpbmRleF0tPnNldEJ1ZmZlcigmbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGViZmU0NTMw
ZjcxODUzMDcyZTNhNTNkMmZjYzY2MGU3YTA5NmNmNDMuLjBjMDU0OWI1YTNlZTA0YWYyOWNhN2Q2
MDYwMzVmY2ZlNjE3NDg1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NjUzLDcgKzY1Myw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNp
emUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
cmVhZGVyKQotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SlBFR0ltYWdlUmVh
ZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEpQRUdJbWFnZVJlYWRl
cj4odGhpcyk7CiAKICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3
ZSd2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzE4YTM5YjU5MTMzYTMxOGYxNTEwNTgx
ZThmOTFlYmRkNzY4NzlhYi4uNjJjYjliMjJhMDFmMjZlOWYyY2Q0MWRlYTM4MWIzNjM2ODk3ZWU0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lk
IFBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIHVuc2lnbmVkIGhhbHRBdEZy
YW1lLCBib29sIGFsbERhdGFSZQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmVhZGVy
KQotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UE5HSW1hZ2VSZWFkZXI+KHRo
aXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8UE5HSW1hZ2VSZWFkZXI+KHRoaXMp
OwogCiAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVjb2RlIHRoZSBpbWFnZSBidXQgd2UndmUgcmVj
ZWl2ZWQgYWxsIHRoZSBkYXRhLCBkZWNvZGluZwogICAgIC8vIGhhcyBmYWlsZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCAyMDlmODhm
NDdhM2I3Y2RjMDE0M2RlOTJlMjRiYWRkZjk2NjRiNWY0Li5jYWUzZGNmMTY0Nzk2Y2VlY2I2OGIy
NDQ4ZjExMzNjMTBlYzljMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
TGVnYWN5VGlsZUNhY2hlOjpMZWdhY3lUaWxlQ2FjaGUoV0FLV2luZG93KiB3aW5kb3cpCiAgICAg
OiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgLCBtX3RvbWJzdG9uZShhZG9wdE5TKFtbTGVnYWN5VGls
ZUNhY2hlVG9tYnN0b25lIGFsbG9jXSBpbml0XSkpCi0gICAgLCBtX3pvb21lZE91dFRpbGVHcmlk
KHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKSkKKyAg
ICAsIG1fem9vbWVkT3V0VGlsZUdyaWQobWFrZVVuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMs
IG1fdGlsZVNpemUpKQogICAgICwgbV90aWxlQ3JlYXRpb25UaW1lcigqdGhpcywgJkxlZ2FjeVRp
bGVDYWNoZTo6dGlsZUNyZWF0aW9uVGltZXJGaXJlZCkKIHsKICAgICBbaG9zdExheWVyKCkgaW5z
ZXJ0U3VibGF5ZXI6bV96b29tZWRPdXRUaWxlR3JpZC0+dGlsZUhvc3RMYXllcigpIGF0SW5kZXg6
MF07CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxl
Q2hhbmdlKCkKIAogICAgIGlmIChtX2N1cnJlbnRTY2FsZSAhPSBtX3pvb21lZE91dFRpbGVHcmlk
LT5zY2FsZSgpKSB7CiAgICAgICAgIGlmICghbV96b29tZWRJblRpbGVHcmlkKSB7Ci0gICAgICAg
ICAgICBtX3pvb21lZEluVGlsZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVRpbGVHcmlk
PigqdGhpcywgbV90aWxlU2l6ZSk7CisgICAgICAgICAgICBtX3pvb21lZEluVGlsZUdyaWQgPSBt
YWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSk7CiAgICAgICAgICAg
ICBbaG9zdExheWVyKCkgYWRkU3VibGF5ZXI6bV96b29tZWRJblRpbGVHcmlkLT50aWxlSG9zdExh
eWVyKCldOwogICAgICAgICAgICAgaG9zdExheWVyU2l6ZUNoYW5nZWQoKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaAppbmRleCA2NjQ3
ZWMzYTM2ZDE1ODc4Njk0ZjA3ZDAyYjFmYjFlOGMzNTBkNTNmLi4zMGVmOWZjMzFjODdmMTFiZmFm
ZTRjYTZhOWVhODEyNGQ1ZmMzYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUdyaWQuaApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBMZWdhY3lUaWxlR3JpZFRpbGU7CiAKIGNsYXNzIExlZ2FjeVRpbGVHcmlkIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludFBvaW50IFRp
bGVJbmRleDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQppbmRleCAxOTFhYzc2OTYyMTUxMjE1M2RiZGNiMDc4ZGQ2NmY0NjU1M2JjMjFkLi4wMjcxYjkz
ZTcwNWNlMmM0MmQ2MzJmZTJkYjI5YWE0NmU4MzZkMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtNjYsMTIgKzY2LDEyIEBAIHZvaWQgUGFz
dGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Ao
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJkYXRhIGludGVy
YWN0aW9uIHBhc3RlYm9hcmQiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigi
ZGF0YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZHJh
Z0RhdGEucGFzdGVib2FyZE5hbWUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7CiB9CiAKICNlbmRpZgpAQCAtMTAxLDcgKzEw
MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIAogc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oY2hhbmdlQ291
bnRGb3JQYXN0ZWJvYXJkKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGNo
YW5nZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGE5ZDllNDcxMDUwMTdkNjRkODJlMzdjOGFhMzFjZTY0
NjkwMjU2ODUuLmMyYjVhMGIwOGJkZjc1ZThjMDFjZDliZDJkNTFjMzE0OTMwNWYzODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtODQsNyArODQsNyBAQCBS
ZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVk
KE5TVVJMICp1cmwsIE5TU3RyaW5nCiAgICAgaWYgKFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1F
VHlwZXNTZXQoKSBjb250YWluc09iamVjdDp1cGRhdGVkTUlNRVR5cGUuZ2V0KCldKSB7CiAgICAg
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gdXRpID0gYWRvcHROUyhQQUw6OnNvZnRMaW5rX1F1aWNr
TG9va19RTFR5cGVDb3B5VVRJRm9yVVJMQW5kTWltZVR5cGUodXJsLCB1cGRhdGVkTUlNRVR5cGUu
Z2V0KCkpKTsKIAotICAgICAgICBhdXRvIGNvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJl
dmlld0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZXIg
PSBtYWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQoKSk7CiAgICAgICAg
IFJlc291cmNlUmVxdWVzdCBwcmV2aWV3UmVxdWVzdCA9IGNvbnZlcnRlci0+cHJldmlld1JlcXVl
c3QoKTsKIAogICAgICAgICAvLyBXZSB1c2UgW3JlcXVlc3QgVVJMXSBoZXJlIGluc3RlYWQgb2Yg
dXJsIHNpbmNlIGl0IHdpbGwgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCmluZGV4IDEwN2M3N2M3NTNlYWI3ZDky
ZGEyOTQ4N2NhNmY2NWY4MDcwNDgyMTMuLjZkOWNjZTE1Yjg3NGYxNWYxNTQ4NzVlYTBlZTZiOWYx
MDM1YTgzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVD
b21tYW5kTGlzdGVuZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQpAQCAtNDUsNyArNDUsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShS
ZW1vdGVDb21tYQogICAgIGlmICghTWVkaWFQbGF5ZXJMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29tbWFuZExp
c3RlbmVySU9TPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRM
aXN0ZW5lcklPUz4oY2xpZW50KTsKIH0KIAogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1v
dGVDb21tYW5kTGlzdGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0K
aW5kZXggMDFmMGE5YmIyMGEyNDhiNjk5ODg1NjQ3MGFlZTM3NGE5OGNmYTUxYy4uZWQ2MzJlYTVl
M2Y1NTk3ZTlkNzZmZDJlNTU2OTU2MWZlNmM0YzIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQpAQCAtNDAsNyArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xs
QW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFibGVBcmVh
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJsZUFy
ZWEpOwogfQogCiBTY3JvbGxBbmltYXRvcklPUzo6U2Nyb2xsQW5pbWF0b3JJT1MoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCmluZGV4IDA1NDNlZDVlOWZjOWZjZmUzYmJhYTQw
MzU1ZTQwNzJmOWYzYzNmNDAuLmY4YTYxZWM3MGMwYzFhNGNkMzc3ZjBlN2NkNjc2ZWZiOWRlNWJj
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2Fy
ZExpYldQRS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiB9CiAKIFBhc3RlYm9hcmQ6OlBhc3RlYm9h
cmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRl
eCA1MTUyMGRjYmJlYTU5MjE4NWMzMjY3MDJjYmE2OWZlODhiNGQ0ZGRlLi44ZWIxNWNmODg1MmQ5
ODU3NDQ3ZTA1OWMzOGFjYWViYTIzNDE1ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMTAwLDcgKzEwMCw3IEBAIFBhc3RlYm9hcmQ6OlBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHByb21pCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBi
b2FyZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFsUGJvYXJk
KTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIApAQCAtMTA4LDEz
ICsxMDgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckNvcHlBbmRQYXN0ZSgpCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oTlNE
cmFnUGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9h
cmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29u
c3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJk
TmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0K
aW5kZXggMDVjYzA4OTU3ZTFkNTAxMjRkZDYzMmUyYTRjODkyMTI5ODk2OTYxMS4uMWFhMmNkODAx
MzJmMmMyMWVlMzhiOWZmYmRiODMzNzNiYmY0YzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNv
bW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWFu
ZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKIH0KIAogdm9pZCBSZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWM6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCBhODMxNzUxMjJl
YzJlNGI2YjZkZTUxYmU2ZGY1MjY0YjQxYTFmOGM0Li42ODYwZTMzYzNhM2IyMTU2MzA1ZmIzMWFm
NDI3ZGM0OTAyMzU4N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCkBAIC02OTcsNyArNjk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVh
dGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yTWFjPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Ny
b2xsQW5pbWF0b3JNYWM6OlNjcm9sbEFuaW1hdG9yTWFjKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAppbmRleCAx
YjlkYzUzNDViODgxZWIzNmQ5NmZjZTM1ODJkZjBlNTRhMTM4NWJhLi5lMjQ0NWJjODIzZjg2ZTA1
NWIwZTU3ODc3ZDZjZjUzMWE0ZmZjYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlCiAg
ICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFz
ZU5vbk51bGwoKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJZCkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4od3Jp
dGVyLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoYXVkaW9UcmFja0lkKSwgV1RGTW92ZSh2aWRl
b1RyYWNrSWQpKTsKIH0KIAogTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiYmIHdyaXRl
ciwgU3RyaW5nJiYgYXVkaW9UcmFja0lkLCBTdHJpbmcmJiB2aWRlb1RyYWNrSWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAppbmRleCBkNGFkYjE1MmJkNGJhZWY3ZWY3YmYw
NTVmNmQ5YTgzZDg2N2U2N2ViLi5hMjJmNTcxYmM1MTYxMWY2MTc0NDkxMDRjZjVmYzg2MGU1MmU5
YWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTM0LDYgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogCiBj
bGFzcyBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwgZmluYWwgOiBwdWJsaWMgTWVkaWFSZWNv
cmRlclByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBjcmVh
dGUoY29uc3QgTWVkaWFTdHJlYW1Qcml2YXRlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggZGI5NGZkYWY4M2E4YWJkNjdh
ZmNmZDZlYTM2OWZhYTg5YzQ2YzNlMi4uNTlhYjM4NDBmZDczNmNhMTQ1MDE2YzdmNjYwZWNhM2Iw
OTAzMjQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVy
ZVNvdXJjZS5jcHAKQEAgLTkxLDE0ICs5MSwxNCBAQCBBdWRpb0NhcHR1cmVGYWN0b3J5JiBHU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkoKQogCiBHU3RyZWFtZXJBdWRpb0NhcHR1
cmVTb3VyY2U6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2
aWNlIGRldmljZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNl
KFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcgeyBkZXZpY2UucGVyc2lz
dGVudElkKCkgfSwgU3RyaW5nIHsgZGV2aWNlLmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCkp
Ci0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJl
cj4oZGV2aWNlKSkKKyAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0Nh
cHR1cmVyPihkZXZpY2UpKQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQog
CiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJj
ZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAg
ICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlv
LCBXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0g
ICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4o
KSkKKyAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPigp
KQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lckF1ZGlvRGF0YS5oCmluZGV4IDk1M2YzYThhMGU0ZjZhMDYyYjliOTRhOGY0MTUxYTQ5
ZjFhNDMwMWQuLjM0MTU0OTI1MWVkNTcxYjc1ZWY1ZDBjMmRlZGYxZTc3Yjc1MjM3ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJBdWRpb0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR1N0
cmVhbWVyQXVkaW9EYXRhIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKK2NsYXNzIEdTdHJl
YW1lckF1ZGlvRGF0YSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CiBwdWJsaWM6
CiAgICAgR1N0cmVhbWVyQXVkaW9EYXRhKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwgR3N0
QXVkaW9JbmZvIGluZm8pCiAgICAgICAgIDogbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lckNhcHR1cmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaAppbmRleCBiYmU1YWU3Mzk1NGFlNTNjYzIxNjU3
OTNlYzA5NmE4ODc5MmFkNGYyLi5mOTJhNmE5YjEyNjExMDBmMTkzNDVmNGVjYTIxOTRiZmUxYjhh
M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaApAQCAtMzIsNiArMzIsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJDYXB0dXJlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyQ2FwdHVyZXIo
R1N0cmVhbWVyQ2FwdHVyZURldmljZSwgR1JlZlB0cjxHc3RDYXBzPik7CiAgICAgR1N0cmVhbWVy
Q2FwdHVyZXIoY29uc3QgY2hhciogc291cmNlRmFjdG9yeSwgR1JlZlB0cjxHc3RDYXBzPik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAppbmRl
eCBiM2FmMzVhZjgyNDg4ZGQ0Y2Y4MjFjZDNlZWFlNjNkOWNmMWFjZDg0Li5mM2U1MTg2YmY2Njg3
ODFlZmIxMzk1ZmU4NTFiMzQzMjNjNDJhM2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBHc3RTdHJl
YW0qIHdlYmtpdE1lZGlhU3RyZWFtTmV3KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB0cmFjaykK
IAogY2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyCiAgICAgOiBwdWJsaWMgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2
ZXIoKSB7IH07CiAgICAgV2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyKFdlYktpdE1lZGlh
U3RyZWFtU3JjKiBzcmMpCkBAIC0xNDMsNiArMTQ0LDcgQEAgY2xhc3MgV2ViS2l0TWVkaWFTdHJl
YW1UcmFja09ic2VydmVyCiAKIGNsYXNzIFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXIKICAgICA6
IHB1YmxpYyBNZWRpYVN0cmVhbVByaXZhdGU6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJLaXRNZWRpYVN0cmVhbU9ic2Vy
dmVyKCkgeyB9OwogICAgIFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXIoV2ViS2l0TWVkaWFTdHJl
YW1TcmMqIHNyYykKQEAgLTM1MSw4ICszNTMsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFf
c3RyZWFtX3NyY19jbGFzc19pbml0KFdlYktpdE1lZGlhU3RyZWFtU3JjQ2xhc3MqIGtsYXNzKQog
CiBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFfc3RyZWFtX3NyY19pbml0KFdlYktpdE1lZGlhU3Ry
ZWFtU3JjKiBzZWxmKQogewotICAgIHNlbGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyPihzZWxmKTsKLSAg
ICBzZWxmLT5tZWRpYVN0cmVhbU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRNZWRp
YVN0cmVhbU9ic2VydmVyPihzZWxmKTsKKyAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2
ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4oc2VsZik7Cisg
ICAgc2VsZi0+bWVkaWFTdHJlYW1PYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0TWVkaWFTdHJl
YW1PYnNlcnZlcj4oc2VsZik7CiAgICAgc2VsZi0+Zmxvd0NvbWJpbmVyID0gZ3N0X2Zsb3dfY29t
YmluZXJfbmV3KCk7CiAgICAgc2VsZi0+Zmlyc3RBdWRpb0J1ZmZlclB0cyA9IEdTVF9DTE9DS19U
SU1FX05PTkU7CiAgICAgc2VsZi0+Zmlyc3RGcmFtZVB0cyA9IEdTVF9DTE9DS19USU1FX05PTkU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3Bw
CmluZGV4IGU1ZDliMGUwMjc2ZWRkYTVkYmQ1MjBiYzEwZjM1MTgwZDAxNWQ2OWIuLjk3YmUxZjEy
ZmJiMjJkYzM1OGM5OWM4MzlmOTgxZjE2NTZhOGUxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xMjcsMTQgKzEyNywxNCBA
QCBEaXNwbGF5Q2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGlz
cGxheUZhY3RvcnkoKQogCiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5n
JiYgaGFzaFNhbHQsIGNvbnN0IGdjaGFyICpzb3VyY2VfZmFjdG9yeSkKICAgICA6IFJlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9yeSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VV
bmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQogewogICAgIGlu
aXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQogCiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3Vy
Y2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlIGRl
dmljZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJj
ZShTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgU3RyaW5nIHsgZGV2aWNlLmxhYmVs
KCkgfSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlx
dWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKKyAgICAsIG1fY2FwdHVyZXIobWFr
ZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQogewogICAgIGluaXRpYWxp
emVHU3RyZWFtZXJEZWJ1ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJW
aWRlb0RlY29kZXJGYWN0b3J5LmgKaW5kZXggZTRkNTA4ZTMxNzlhYzQ3YmYxZDEwZjRmMjg3YzU0
N2JjMjU2MDAyYS4uZWZkYTI5YmUzOTcxOGJiYTc5MTM0MThjYzczZWI5YWQzNjg0ZjhiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dT
dHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oCkBA
IC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lclZp
ZGVvRGVjb2RlckZhY3RvcnkgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRl
b0RlY29kZXJGYWN0b3J5KCk7CiAgICAgc3RhdGljIGJvb2wgbmV3U291cmNlKFN0cmluZyB0cmFj
a0lkLCBHc3RFbGVtZW50ICpzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJl
YW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCmluZGV4IDY5OTVjNjAyY2IxNzQ0N2ZhNzQxZDM5
ZDQ0OTRjMzU2MWRjMWJiODIuLjgzNTgxZTg1YTM5NjJkOTdlMDE3NDNiMTBlNTZjZWFhMTUxY2Vm
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFj
dG9yeS5jcHAKQEAgLTYwLDYgKzYwLDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtpdF93ZWJy
dGNlbmNfZGVidWcpOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJWaWRl
b0VuY29kZXIgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lclZpZGVvRW5jb2Rlcihjb25zdCB3
ZWJydGM6OlNkcFZpZGVvRm9ybWF0JikKICAgICAgICAgOiBtX2ZpcnN0RnJhbWVQdHMoR1NUX0NM
T0NLX1RJTUVfTk9ORSkKQEAgLTUxMiwxNCArNTEzLDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjx3ZWJy
dGM6OlZpZGVvRW5jb2Rlcj4gR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlk
ZW9FCiAgICAgICAgIGdfb2JqZWN0X2dldCh3ZWJydGNlbmNvZGVyLmdldCgpLCAiZW5jb2RlciIs
ICZlbmNvZGVyLm91dFB0cigpLCBOVUxMKTsKIAogICAgICAgICBpZiAoZW5jb2RlcikKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZQOEVuY29kZXI+KGZvcm1h
dCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihm
b3JtYXQpOwogCiAgICAgICAgIEdTVF9JTkZPKCJVc2luZyBWUDggRW5jb2RlciBmcm9tIExpYldl
YlJUQy4iKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8d2VicnRjOjpMaWJ2cHhW
cDhFbmNvZGVyPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8d2VicnRjOjpMaWJ2cHhWcDhFbmNvZGVyPigpOwogICAgIH0KIAogICAgIGlmIChmb3Jt
YXQubmFtZSA9PSBjcmlja2V0OjprSDI2NENvZGVjTmFtZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEdTdHJlYW1lckgyNjRFbmNvZGVyPihmb3JtYXQpOwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rl
ckZhY3RvcnkuaAppbmRleCA3OTZhMjBmOTQ1ZTNhOTUxOThlY2UxMGZlNzBkOWI1MmY3MjMzZDEx
Li4xNDgzYTJiMjBiMzUxNWM3MWI3YTBjN2E1MjI2MjZlOWZmNTM5MjA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlk
ZW9FbmNvZGVyRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyVmlkZW9FbmNvZGVy
RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3RvcnkgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRl
ckJhY2tlbmQuaAppbmRleCBkYzZmOGYzZmIwNTdmYjU0MGQ5MGMwMDIyNjhhOTk3NzQ0MTAyNzdm
Li40YTA2MWZjYzk1M2IxM2Q1ODNiYWU1NTQ1MTU1YmNlMDhkZjhmOWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRN
RlNlbmRlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaApAQCAtNDAsNiArNDAsNyBA
QCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19FTkQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDRFRNRlNlbmRl
ckJhY2tlbmQsIHByaXZhdGUgd2VicnRjOjpEdG1mU2VuZGVyT2JzZXJ2ZXJJbnRlcmZhY2UsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZD4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExpYldlYlJUQ0RU
TUZTZW5kZXJCYWNrZW5kKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkR0bWZTZW5kZXJJbnRl
cmZhY2U+JiYpOwogICAgIH5MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggMjA3YWI3OGE5YTJiYmU0MGEwZWQ0ZGE2
OTU2OWFlZGIxMjI5OWUyMC4uNzQ1MzNjNWZhNGRmMGQ0ZTVhNjRkNzVjZTYyN2IzMjQyYzQ2Yjgx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC03OSw5ICs3OSwx
MCBAQCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29ja2V0QWRkcmVzcyBwcmVwYXJlU29ja2V0QWRkcmVz
cyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmCiB9CiAKIGNsYXNzIEJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeSA6IHB1YmxpYyBydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQmFzaWNQYWNrZXRT
b2NrZXRGYWN0b3J5KHJ0Yzo6VGhyZWFkJiBuZXR3b3JrVGhyZWFkKQotICAgICAgICA6IG1fc29j
a2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5Pigm
bmV0d29ya1RocmVhZCkpCisgICAgICAgIDogbV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWZX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PigmbmV0
d29ya1RocmVhZCkpCiAgICAgewogICAgIH0KIApAQCAtMTc5LDcgKzE4MCw3IEBAIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKFBlZXJDb25uZWN0
aW9uRmFjdG9yeUFuZFRoCiAgICAgcmVzdWx0ID0gZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5n
VGhyZWFkLT5TdGFydCgpOwogICAgIEFTU0VSVChyZXN1bHQpOwogCi0gICAgZmFjdG9yeUFuZFRo
cmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0F1ZGlv
TW9kdWxlPigpOworICAgIGZhY3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlID0gbWFr
ZVVuaXF1ZTxMaWJXZWJSVENBdWRpb01vZHVsZT4oKTsKIH0KIAogc3RhdGljIGlubGluZSBQZWVy
Q29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzJiBzdGF0aWNGYWN0b3J5QW5kVGhyZWFkcygpCkBA
IC0yODgsMTAgKzI4OSwxMCBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVj
dGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogICAgIGF1dG8mIGZh
Y3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGljRmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3Jr
VGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAKICAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLm5l
dHdvcmtNYW5hZ2VyKQotICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrTWFuYWdlciA9
IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOworICAgICAgICBm
YWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrTWFuYWdlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKIAogICAgIGlmICghZmFjdG9y
eUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSkKLSAgICAgICAgZmFjdG9yeUFuZFRocmVh
ZHMucGFja2V0U29ja2V0RmFjdG9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNQYWNrZXRTb2Nr
ZXRGYWN0b3J5PigqZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZCk7CisgICAgICAgIGZh
Y3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkgPSBtYWtlVW5pcXVlPEJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeT4oKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQpOwogICAg
IGZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnktPnNldERpc2FibGVOb25Mb2Nh
bGhvc3RDb25uZWN0aW9ucyhtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyk7CiAKICAg
ICByZXR1cm4gY3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsICpmYWN0b3J5QW5kVGhyZWFk
cy5uZXR3b3JrTWFuYWdlciwgKmZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3Rvcnks
IFdURk1vdmUoY29uZmlndXJhdGlvbiksIG51bGxwdHIpOwpAQCAtMzE0LDcgKzMxNSw3IEBAIHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJS
VENQcm92aWRlcjo6Y3JlYXRlUGVlCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y3JpY2tldDo6QmFz
aWNQb3J0QWxsb2NhdG9yPiBwb3J0QWxsb2NhdG9yOwogICAgIGZhY3RvcnlBbmRUaHJlYWRzLnNp
Z25hbGluZ1RocmVhZC0+SW52b2tlPHZvaWQ+KFJUQ19GUk9NX0hFUkUsIFsmXSgpIHsKLSAgICAg
ICAgYXV0byBiYXNpY1BvcnRBbGxvY2F0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPGNyaWNrZXQ6OkJh
c2ljUG9ydEFsbG9jYXRvcj4oJm5ldHdvcmtNYW5hZ2VyLCAmcGFja2V0U29ja2V0RmFjdG9yeSk7
CisgICAgICAgIGF1dG8gYmFzaWNQb3J0QWxsb2NhdG9yID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29ya01hbmFnZXIs
ICZwYWNrZXRTb2NrZXRGYWN0b3J5KTsKICAgICAgICAgaWYgKCFtX2VuYWJsZUVudW1lcmF0aW5n
QWxsTmV0d29ya0ludGVyZmFjZXMpCiAgICAgICAgICAgICBiYXNpY1BvcnRBbGxvY2F0b3ItPnNl
dF9mbGFncyhiYXNpY1BvcnRBbGxvY2F0b3ItPmZsYWdzKCkgfCBjcmlja2V0OjpQT1JUQUxMT0NB
VE9SX0RJU0FCTEVfQURBUFRFUl9FTlVNRVJBVElPTik7CiAgICAgICAgIHBvcnRBbGxvY2F0b3Ig
PSBXVEZNb3ZlKGJhc2ljUG9ydEFsbG9jYXRvcik7CkBAIC0zMzUsNyArMzM2LDcgQEAgcnRjOjpS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvciYgTGliV2ViUlRDUHJvdmlkZXI6OmNlcnRpZmljYXRlR2Vu
ZXJhdG9yKCkKIHsKICAgICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IGdldFN0YXRpY0ZhY3Rv
cnlBbmRUaHJlYWRzKG1fdXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwogICAgIGlm
ICghZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IpCi0gICAgICAgIGZhY3Rv
cnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6
OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yPihmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJl
YWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCkpOworICAgICAg
ICBmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvciA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+KGZhY3RvcnlB
bmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMubmV0d29y
a1RocmVhZC5nZXQoKSk7CiAKICAgICByZXR1cm4gKmZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmlj
YXRlR2VuZXJhdG9yOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAppbmRleCBi
ZGYwOTAwNDBjOTA2NTdmNDlmMGNlNGFlMjgwNzczOGExZThiZTc5Li43YWE4ZGUyZWIzYTRjNTU1
ZTA5YTYwZDdkN2MzYWQ4MzE5YjExOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuaApAQCAtNjQsNiArNjQsNyBAQCBzdHJ1Y3QgUlRDUnRwQ2FwYWJpbGl0aWVzOwogZW51bSBj
bGFzcyBNRE5TUmVnaXN0ZXJFcnJvciB7IE5vdEltcGxlbWVudGVkLCBCYWRQYXJhbWV0ZXIsIERO
U1NELCBJbnRlcm5hbCwgVGltZW91dCB9OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBMaWJXZWJS
VENQcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4gY3JlYXRlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oCmluZGV4IDc3MmEzOTVmMGNiYjQzZTcz
MDc1MGNjYjk2MzYxNjFjYWEzNDFjNjMuLmQzYzM4Mzk1YzA3N2YzNDYwNGI1YmIwZjRiNDNhZTEx
MDBjZGYyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaApA
QCAtMzcsNyArMzcsNiBAQCBjbGFzcyBWaWRlb0VuY29kZXJGYWN0b3J5OwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBMaWJXZWJSVENQcm92aWRlckNvY29hIDog
cHVibGljIExpYldlYlJUQ1Byb3ZpZGVyIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBMaWJXZWJSVENQcm92aWRlckNvY29hKCkgPSBkZWZhdWx0OwogICAgIH5M
aWJXZWJSVENQcm92aWRlckNvY29hKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCAxNWUyYTg3ODljMDdmYjBkMGFlYzZmNmMyMGY3
YmIxN2ZhOGRiN2QyLi41YjgyNzNiMDg1MTk2ZmZkMzBlNGQ3YTdmNjU1MTBiZWMwODAzMTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAK
QEAgLTQ0LDEyICs0NCwxMiBAQCBib29sIExpYldlYlJUQ1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFi
bGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0RlY29kZXJGYWN0b3J5PiBMaWJX
ZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRGVjb2RlckZhY3RvcnkoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRGVjb2RlckZhY3Rvcnk+KCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4oKTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeT4gTGliV2ViUlRD
UHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5PigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW1Db2NvYS5jcHAKaW5kZXggODJjYmNiMWM2NmQzMmVhMThjZGViMTY3OTM4ZDY4
ZDNiMTJlNDE5YS4uZjdkODVkYzYwYTYxYTgxNDZkYmEwZDAzZTU1ZDc1NzYyZmU5MGY4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAK
QEAgLTE4OCw4ICsxODgsOCBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgcwogICAgICAgICBpZiAo
IXJlbW90ZUlPVW5pdCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2lucHV0RGVz
Y3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oaW5w
dXREZXNjcmlwdGlvbik7Ci0gICAgICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4ob3V0cHV0RGVzY3JpcHRpb24pOworICAg
ICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4oaW5wdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBt
YWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4ob3V0cHV0RGVzY3JpcHRpb24pOwog
CiAgICAgICAgIG1fZGF0YVNvdXJjZSA9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKGRl
c2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDIsIHN0cmVhbVRyYWNrKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KaW5kZXggZThlM2QzNDg2ZGE0M2FhYzFkZDU0
Yjc4ZTZiNGRmNGRjOTgxNjc5MC4uNjExYWMxNmI5ZWNiODY4OThhMzcyNjQ3MWM3NjIwNzEyZmI5
YjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQpAQCAtMTM0
LDcgKzEzNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmlndXJl
KCkKICAgICBjb25zdCBib29sIGlzTm9uSW50ZXJsZWF2ZWQgPSB0cnVlOwogICAgIEZpbGxPdXRB
U0JERm9yTFBDTShtX3N0cmVhbUZvcm1hdCwgc2FtcGxlUmF0ZSgpLCBjaGFubmVsQ291bnQsIGJp
dHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBp
c0Zsb2F0LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxlYXZlZCk7CiAKLSAgICBtX2F1ZGlvQnVm
ZmVyTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX3N0cmVhbUZv
cm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVDb3Vu
dCk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlz
dD4obV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lICogbV9tYXhp
bWl1bUZyYW1lQ291bnQpOwogCiAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNj
cmlwdGlvbjsKICAgICBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoTlVMTCwgJm1fc3Ry
ZWFtRm9ybWF0LCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0RGVzY3JpcHRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCmluZGV4
IGY5ZGM0YTg0N2Y0YTM1NWQ5Y2NmZjRjZGUwMzA4ZDBkNWM1YzQ0NTYuLjM4OGQ3MWUyNGIyNWVi
ZjZkNzc4ODE0ZmRkMGE5NjYzYjE3MDU0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgUmV0YWluUHRyPENW
UGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpjb252ZXJ0
VG9ZVVYoQ1ZQaXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1fcGl4ZWxC
dWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVL
ZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKSB9KTsKKyAgICAgICAgbV9waXhlbEJ1
ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJp
ZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZl
clBpeGVsRm9ybWF0VHlwZUtleTogQChwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpIH0pOwog
CiAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXItPmNvbnZlcnQocGl4ZWxCdWZmZXIp
OwogfQpAQCAtNzUsNyArNzUsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRp
bWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnJvdGF0ZVBpeGVsQnVmZmVyKAogICAgICAgICBJ
bnRTaXplIHNpemUgPSB7IChpbnQpQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSAs
IChpbnQpQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikgfTsKICAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZShyb3RhdGlv
blRvQW5nbGUocm90YXRpb24pKTsKLSAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUodHJhbnNmb3JtKSwgc2l6
ZSwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlciksIEltYWdlUm90
YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKKyAgICAgICAgbV9yb3Rh
dGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUo
dHJhbnNmb3JtKSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1
ZmZlciksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsK
ICAgICB9CiAKICAgICByZXR1cm4gbV9yb3RhdGlvblNlc3Npb24tPnJvdGF0ZShwaXhlbEJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKaW5kZXggOGUyOWQ3YjgxYTE3M2RmYTUzNzA1ZmEx
ZTYyYzllODgzYzRmOTUwMi4uZDQ3NjlkNjllNGFmMDQ3MGQ2MmNlOTBiNzU0NDBlMjgyNzY5ZTdj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayBmaW5hbCA6
IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyTW9jayk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1vY2soTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5o
CmluZGV4IDNjNmRlMWM0ZWJlNGVjNzQ3MzU0MGFlY2NiODk3NjJiMTk1NTVjZDQuLjEzODhhZDA1
MTMxMDhiMmViOTJlYzJiYmUyODkzMzY1MmU5OWEwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCkBAIC0z
Myw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2sgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyLCBwdWJsaWMg
VGltZXJFdmVudEJhc2VkTW9jayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayhjb25zdCBTdHJpbmcmLCBjb25zdCBS
VENEYXRhQ2hhbm5lbEluaXQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDTm90aWZpZXJzTW9jay5jcHAKaW5kZXggMmYxZmI1NWVlNjcxZjJmMjI4ZmM1MTUxZDBk
ZDY5Y2Y4ZWM2OTVjYi4uMmM3YzQxYmQ2OTZmZjFmOWJhYjM4MzgxYTRiNTgzODU2OGIxOGE0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2su
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OlJlbW90ZURh
dGFDaGFubmVsTm90aWZpZXIoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpCiAKIHZvaWQgUmVt
b3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSgpCiB7Ci0gICAgbV9jbGllbnQtPmRpZEFkZFJl
bW90ZURhdGFDaGFubmVsKHN0ZDo6bWFrZV91bmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9j
az4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENEYXRhQ2hhbm5lbEluaXQoKSkpOwor
ICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChtYWtlVW5pcXVlPFJUQ0RhdGFD
aGFubmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNo
YW5uZWxJbml0KCkpKTsKIH0KIAogRGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyOjpEYXRhQ2hhbm5l
bFN0YXRlTm90aWZpZXIoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50KiBjbGllbnQsIFJUQ0Rh
dGFDaGFubmVsU3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuY3BwCmluZGV4IDU1OTkzMzgyYjNhMWRjMzZkODM1NmI2MWIyNWM3MDAyZTA3MzQ3ZmUu
LjM4N2EyMWRhZjQ1NTIzOTY4YWVlNGY3OTQxOWQzZDhiODg2OTBkN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIE1lZGlhUGxheWVyIEVuaWduZSBTdXBwb3J0CiB2b2lkIE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10gKE1lZGlhUGxheWVyKiBwbGF5
ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+
KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQ
bGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCiAgICAgICAgIHN1cHBvcnRzVHlw
ZSwgMCwgMCwgMCwgMCk7CiB9CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVmZmVyZWQo
KSBjb25zdAogICAgIGlmIChtX21lZGlhU291cmNlUHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG1f
bWVkaWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKTsKIH0KIAogYm9vbCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6
ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCBjYzY3Y2U2ODhmM2Jj
YTIyMjY5MGI0M2YxMDU4NzhiYTllM2MyOGY4Li45MDUxNDMxNjIxYThjMTA4YTZlZjBmNTFlYjYw
Zjc3NGFmY2MwYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0xNTksOSArMTU5LDkgQEAgQmxvYlJlc291
cmNlSGFuZGxlOjpCbG9iUmVzb3VyY2VIYW5kbGUoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QKICAgICAsIG1fYXN5bmMgeyBhc3luYyB9CiB7CiAgICAgaWYgKG1fYXN5
bmMpCi0gICAgICAgIG1fYXN5bmNTdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jRmlsZVN0
cmVhbT4oKnRoaXMpOworICAgICAgICBtX2FzeW5jU3RyZWFtID0gbWFrZVVuaXF1ZTxBc3luY0Zp
bGVTdHJlYW0+KCp0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyZWFtID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWxlU3RyZWFtPigpOworICAgICAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWU8Rmls
ZVN0cmVhbT4oKTsKIH0KIAogQmxvYlJlc291cmNlSGFuZGxlOjp+QmxvYlJlc291cmNlSGFuZGxl
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmNwcAppbmRleCA4MTEyYjk3M2VlZjU0ZWQ3YTVjN2E1MTRjZjEwMmFjOTkx
ZTc2NTMzLi5iNTQxZjYyZWUwMDUyMDM2MmMxNTU3ZjdjYTQ5NjRhMjM3Yjg3NDlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApA
QCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWNvZGluZ1Jlc3VsdERpc3BhCiAKIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4gY3JlYXRlRGVjb2RlVGFzayhjb25zdCBVUkwmIHVybCwg
Y29uc3QgU2NoZWR1bGVDb250ZXh0JiBzY2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8RGVjb2RlVGFzaz4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2RlVGFzaz4oCiAgICAg
ICAgIHVybC5zdHJpbmcoKSwKICAgICAgICAgc2NoZWR1bGVDb250ZXh0LAogICAgICAgICBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4IGE5ODQzZjUwZTVhNDM0MDNkOGY1MmYw
YTk2N2Y5MDI3ODY1ZThkNTYuLjhkYWVjNTRhMTM0MmRhYjU5YzM1Y2M0OTI3YTAwZmU2MjI5NDk2
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VF
cnJvckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
RXJyb3JCYXNlLmgKQEAgLTM3LDYgKzM3LDcgQEAgV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIGNvbnN0
IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWw7IC8vIFVzZWQgZm9yIGUKIFdF
QkNPUkVfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldlYktpdFNl
cnZpY2VXb3JrZXI7IC8vIFVzZWQgZm9yIGVycm9ycyB0aGF0IGhhcHBlbiB3aGVuIGxvYWRpbmcg
YSByZXNvdXJjZSBmcm9tIGEgc2VydmljZSB3b3JrZXIuCiAKIGNsYXNzIFJlc291cmNlRXJyb3JC
YXNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBSZXNvdXJjZUVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDMw
YzI3ZjU3NmExNzdlNmI2YWIxOTQ3NDBhN2Q5MDI1YjY1OWZjYWQuLjZhMzFlM2U1MjdmOGVjOTJk
NmY2MmI5NmNkZDgxOTQ0MTRiNTVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlZ2lzdGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGNvbnN0IEF0b21T
dHJpbmcmIHByb3RvY29sCiB9CiAKIFJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50LCBib29sIGRlZmVyc0xvYWRpbmcsIGJvb2wgc2hv
dWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKQotICAgIDog
ZChzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlSGFuZGxlSW50ZXJuYWw+KHRoaXMsIGNvbnRleHQs
IHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmICYmIHNo
b3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwgc2hvdWxkQ29udGVudEVuY29kaW5n
U25pZmYpKQorICAgIDogZChtYWtlVW5pcXVlPFJlc291cmNlSGFuZGxlSW50ZXJuYWw+KHRoaXMs
IGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNu
aWZmICYmIHNob3VsZENvbnRlbnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwgc2hvdWxkQ29udGVu
dEVuY29kaW5nU25pZmYpKQogewogICAgIGlmICghcmVxdWVzdC51cmwoKS5pc1ZhbGlkKCkpIHsK
ICAgICAgICAgc2NoZWR1bGVGYWlsdXJlKEludmFsaWRVUkxGYWlsdXJlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IGRhZDkwMTBmOTU3MGViYzU2NzYzMzU0M2ZkMWZj
NTAyZjg0NjliOTkuLjcxM2I0ZGZiMzBiMmFmZGZiZWFmZjRlZTUzNzBhMjU0NmZhZDNhNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIENG
VVJMUmVxdWVzdFJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjp3aWxsU2VuCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkK
LSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVu
ZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNl
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhv
cmUud2FpdCgpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAg
ICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUt
PmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykp
KTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMjI2LDcgKzIy
Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAgICAgfTsKICAgICAKICAgICBpZiAobV9t
ZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmsp
KSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwog
fQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgfTsKICAg
ICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7Cisg
ICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+
PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdU
Rk1vdmUod29yaykpOwogfQpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbChDRkVycm9y
UmVmCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdl
UXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUo
d29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zMTEsNyArMzExLDcgQEAgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjoKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAg
ICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZCht
YWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUu
d2FpdCgpOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nCiAgICAg
fTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsK
KyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
V1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRTZW5kQm9keURh
dGEoQ0YKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM4MCw3ICszODAsNyBAQCBCb29sZWFu
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OmNhblJlc3BvbmRUb1BybwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQot
ICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248
dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5k
KG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UK
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9y
ZS53YWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggYzliNTNlMzEyYWQ4NTU3NmQz
NjZlZjRkYzUzNzQzOTFmZThjNjkwYy4uYmE1NWYwMDQ4YjhlNGRkYzViMDczNGQ5OTNkYzliMTNi
OGNiMmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNTIzLDcgKzUyMyw3IEBAIC0g
KHZvaWQpX3Jlc3RhcnQKIAogICAgIF9yZXNvdXJjZSA9IHNlbGYuc2Vzc2lvbi5sb2FkZXIucmVx
dWVzdFJlc291cmNlKHNlbGYub3JpZ2luYWxSZXF1ZXN0LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXI6OkxvYWRPcHRpb246OkRpc2FsbG93Q2FjaGluZyk7CiAgICAgaWYgKF9yZXNvdXJjZSkK
LSAgICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3Jlc291cmNlLT5zZXRD
bGllbnQobWFrZVVuaXF1ZTxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ+KHNlbGYp
KTsKIH0KIAogLSAodm9pZClfY2FuY2VsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBhNDVhNWY0ZTRhMDI4ZmU2ZTdm
MmRmYjc1ZWMyYzhhZWM5M2VkMmJiLi4xMDE2MjRmMjkwMGE5NGNjN2QxYTg5OTg5Njc2ZDZiNDVh
YjdmYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBPcHRpb25hbDxWZWN0b3I8Q29v
a2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdAogICAgICAgICAiQU5EICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9CID8pKSAiXAog
ICAgICAgICAiT1JERVIgQlkgbGVuZ3RoKHBhdGgpIERFU0MsIGxhc3R1cGRhdGVkIjsKIAotICAg
IGF1dG8gcHN0bXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFz
ZSwgc3FsKTsKKyAgICBhdXRvIHBzdG10ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1f
ZGF0YWJhc2UsIHNxbCk7CiAgICAgaWYgKCFwc3RtdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIApAQCAtNTY2LDcgKzU2Niw3IEBAIGJvb2wgQ29va2llSmFyREI6OmRlbGV0ZUFsbENv
b2tpZXMoKQogCiB2b2lkIENvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KGNvbnN0
IFN0cmluZyYgc3FsKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxT
UUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBt
YWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpbnQgcmV0
ID0gc3RhdGVtZW50LT5wcmVwYXJlKCk7CiAgICAgQVNTRVJUKHJldCA9PSBTUUxJVEVfT0spOwog
ICAgIG1fc3RhdGVtZW50cy5hZGQoc3FsLCBXVEZNb3ZlKHN0YXRlbWVudCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAppbmRleCAw
YzAzZTlkNjkyYzdmNmRjNjEzMDg2ZmYyNTVjMjBlNWM2YmJlOWU5Li4yNjg3YWU3NGZiOWQ5OTQy
OTcyYmVkY2FjNmFiOWIxMTU5YTdlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIGNs
YXNzIENvb2tpZUFjY2VwdFBvbGljeSB7CiB9OwogCiBjbGFzcyBDb29raWVKYXJEQiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29va2ll
SmFyREIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IDExMDI3Y2UzYjNjZjYzODhmOTk1NGFh
ZjQ5YzQ5MDNmZTkzZmRmZjUuLjhjZTExNDM4NDhmYjIzMThiYTE5OTBlYWQxOGUxNWYzN2Q4NDM0
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEN1cmxDYWNoZUVudHJ5IHsKLQorICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhh
bmRsZSogam9iLCBjb25zdCBTdHJpbmcmIGNhY2hlRGlyKTsKICAgICB+Q3VybENhY2hlRW50cnko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCBmYTVjOGQyZDIxYjYyNzM4MTVkMDIzYTRmMjA0NTUw
MTZlOTYzOGFmLi5lMmI0YjVkZmJkYTYyYTNjMGNiNmJmOTE4MWJiZDY4ZmQ3YTRhMDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZU1hbmFnZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2Vy
Ojpsb2FkSW5kZXgoKQogICAgICAgICAtLWVuZDsgLy8gTGFzdCBsaW5lIGlzIGVtcHR5CiAgICAg
d2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAgICBTdHJpbmcgdXJsID0gaXQtPnN0cmlwV2hpdGVT
cGFjZSgpOwotICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxD
YWNoZUVudHJ5Pih1cmwsIG51bGxwdHIsIG1fY2FjaGVEaXIpOworICAgICAgICBhdXRvIGNhY2hl
RW50cnkgPSBtYWtlVW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsIG51bGxwdHIsIG1fY2FjaGVE
aXIpOwogCiAgICAgICAgIGlmIChjYWNoZUVudHJ5LT5pc0NhY2hlZCgpICYmIGNhY2hlRW50cnkt
PmVudHJ5U2l6ZSgpIDwgbV9zdG9yYWdlU2l6ZUxpbWl0KSB7CiAgICAgICAgICAgICBtX2N1cnJl
bnRTdG9yYWdlU2l6ZSArPSBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKTsKQEAgLTIxMyw3ICsyMTMs
NyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSYgam9iLCBSZXNvdXJjZVJlc3BvbnNlJgogCiAgICAgICAgIGludmFsaWRhdGVDYWNoZUVu
dHJ5KHVybCk7IC8vIEludmFsaWRhdGUgZXhpc3RpbmcgZW50cnkgb24gMjAwCiAKLSAgICAgICAg
YXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCAm
am9iLCBtX2NhY2hlRGlyKTsKKyAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVVuaXF1ZTxD
dXJsQ2FjaGVFbnRyeT4odXJsLCAmam9iLCBtX2NhY2hlRGlyKTsKICAgICAgICAgYm9vbCBjYWNo
ZWFibGUgPSBjYWNoZUVudHJ5LT5wYXJzZVJlc3BvbnNlSGVhZGVycyhyZXNwb25zZSk7CiAgICAg
ICAgIGlmIChjYWNoZWFibGUpIHsKICAgICAgICAgICAgIGNhY2hlRW50cnktPnNldElzTG9hZGlu
Zyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuY3BwCmluZGV4IDdkMTcyMTdjMmU0NDJhYzZmM2RlOGM0YjYwYTk1MjZjOWY2
NTg0MmEuLjdiMDRmYTI2YTQyYWI5NzhhZTA3YmQzMWYwZTY5MTU1MWJiYzQ2MGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIEN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCgpCiAgICAgaWYg
KGF1dG8gdmFsdWUgPSBlbnZWYXIucmVhZEFzPHNpZ25lZD4oIldFQktJVF9DVVJMX01BWF9IT1NU
X0NPTk5FQ1RJT05TIikpCiAgICAgICAgIG1heEhvc3RDb25uZWN0aW9ucyA9ICp2YWx1ZTsKIAot
ICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsUmVxdWVzdFNjaGVkdWxlcj4o
bWF4Q29ubmVjdHMsIG1heFRvdGFsQ29ubmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9ucyk7Cisg
ICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPihtYXhDb25u
ZWN0cywgbWF4VG90YWxDb25uZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25zKTsKIAogI2lmbmRl
ZiBOREVCVUcKICAgICBtX3ZlcmJvc2UgPSBlbnZWYXIuZGVmaW5lZCgiREVCVUdfQ1VSTCIpOwpA
QCAtMzM2LDcgKzMzNiw3IEBAIENVUkxjb2RlIEN1cmxIYW5kbGU6OndpbGxTZXR1cFNzbEN0eCh2
b2lkKiBzc2xDdHgpCiAgICAgICAgIHJldHVybiBDVVJMRV9BQk9SVEVEX0JZX0NBTExCQUNLOwog
CiAgICAgaWYgKCFtX3NzbFZlcmlmaWVyKQotICAgICAgICBtX3NzbFZlcmlmaWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDdXJsU1NMVmVyaWZpZXI+KHNzbEN0eCk7CisgICAgICAgIG1fc3NsVmVyaWZp
ZXIgPSBtYWtlVW5pcXVlPEN1cmxTU0xWZXJpZmllcj4oc3NsQ3R4KTsKIAogICAgIHJldHVybiBD
VVJMRV9PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDb250ZXh0LmgKaW5kZXggN2QwNjA2OGNkOWQxYWViZWU0MmQzODU5NGFiZDA5NGI5MDEx
NDQ0NC4uYTRmOGMwMjgyNzY3YjBiNDg3NzBhMDQ4ZWU4NTJmMTY2ZTA3YTdmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmgKQEAg
LTE0Nyw2ICsxNDcsNyBAQCBjbGFzcyBDdXJsQ29udGV4dCA6IHB1YmxpYyBDdXJsR2xvYmFsIHsK
IC8vIEN1cmxNdWx0aUhhbmRsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBjbGFzcyBDdXJsTXVsdGlIYW5kbGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxNdWx0aUhhbmRsZSk7CiAKIHB1
YmxpYzoKQEAgLTIwMiw2ICsyMDMsNyBAQCBjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogCiBjbGFzcyBDdXJsSGFuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsSGFuZGxlKTsKIAogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxGb3JtRGF0YVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAppbmRleCA5ZmM2NmVjMDIwZTI5OTZkMzhkMDYwYWQ3
OGQzNmYxMTRhZTQ4MWM2Li43ODVkNmNiOGU2ZGM4ZmFmZThlODEwZGZiZmRmNGNlNzYyZjRiMzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZv
cm1EYXRhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcApAQCAtNzcsNyArNzcsNyBAQCBjb25zdCBWZWN0b3I8
Y2hhcj4qIEN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERhdGEoKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICghbV9wb3N0RGF0YSkKLSAgICAgICAgbV9wb3N0RGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPGNoYXI+PihtX2Zvcm1EYXRhLT5mbGF0dGVuKCkpOworICAg
ICAgICBtX3Bvc3REYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZs
YXR0ZW4oKSk7CiAKICAgICByZXR1cm4gbV9wb3N0RGF0YS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcAppbmRleCBhOGJiOGQ4MWE3YWJkNzE3NDNiZDM5NWRjYzg2NjMxNzlmZGUyZDU1
Li5jY2RiYjI4MjM5ZjIyYzM2MzZjYWMxNGIwNzg1ZDZmNTVhYjJmNWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVsdGlw
YXJ0SGFuZGxlPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChDdXJsTXVsCiAg
ICAgaWYgKCFib3VuZGFyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpib3VuZGFyeSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAqYm91
bmRhcnkpOwogfQogCiBPcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJh
Y3RCb3VuZGFyeShjb25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmgKaW5kZXggODA0Yzc0NDZjNDUzYjY3MTVmODg1ZTlhZmMyNzM4ODU4ZTI2ODcxYS4uNzIwYzY5
ODBlZGQzZGFlM2UxMmM2M2YwOGI2M2M2Zjg5NmU1MzMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5o
CkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVsdGlwYXJ0
SGFuZGxlPiBjcmVhdGVJZk5lZWRlZChDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3Qg
Q3VybFJlc3BvbnNlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDA3MDM0YmI2MmQ3YmJlNjQwZDRmODAxYzRl
MTg0MjIzZGYyNDEzZGMuLmIyYTIyZGEyMmQ2YzAxNTU1MDc1OTk1ZjZiODMwODZmZWE4MWZlMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNhbGxDbGll
bnQoRnVuY3Rpb248dm9pZChDdXJsUmVxdWVzdCYsIEN1cmxSZXF1ZXN0Q2xpZW50Jik+JiYKIHZv
aWQgQ3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykK
IHsKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7Cisg
ICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+
PihXVEZNb3ZlKHRhc2spKSk7CiAgICAgZWxzZSBpZiAoaXNNYWluVGhyZWFkKCkpCiAgICAgICAg
IHRhc2soKTsKICAgICBlbHNlCkBAIC0yMDUsNyArMjA1LDcgQEAgQ1VSTCogQ3VybFJlcXVlc3Q6
OnNldHVwVHJhbnNmZXIoKQogICAgIGF1dG8gaHR0cEhlYWRlckZpZWxkcyA9IG1fcmVxdWVzdC5o
dHRwSGVhZGVyRmllbGRzKCk7CiAgICAgYXBwZW5kQWNjZXB0TGFuZ3VhZ2VIZWFkZXIoaHR0cEhl
YWRlckZpZWxkcyk7CiAKLSAgICBtX2N1cmxIYW5kbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxI
YW5kbGU+KCk7CisgICAgbV9jdXJsSGFuZGxlID0gbWFrZVVuaXF1ZTxDdXJsSGFuZGxlPigpOwog
CiAgICAgbV9jdXJsSGFuZGxlLT5zZXRVcmwobV9yZXF1ZXN0LnVybCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dFNjaGVkdWxlci5jcHAKaW5kZXggOTE4MzdhZjlmM2U0NzczYjVjNzFjMWMyNjBkYjk2ZjU4NmIy
MTFhZi4uM2FhNWY1MmRiNjI3YWJiMGVjY2FmMjkyMTNkY2UxMmZiYzZmYmM5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RTY2hlZHVsZXIuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNj
aGVkdWxlcjo6d29ya2VyVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
IAotICAgIG1fY3VybE11bHRpSGFuZGxlID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsTXVsdGlIYW5k
bGU+KCk7CisgICAgbV9jdXJsTXVsdGlIYW5kbGUgPSBtYWtlVW5pcXVlPEN1cmxNdWx0aUhhbmRs
ZT4oKTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4Q29ubmVjdHMobV9tYXhDb25uZWN0
cyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heFRvdGFsQ29ubmVjdGlvbnMobV9tYXhU
b3RhbENvbm5lY3Rpb25zKTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4SG9zdENvbm5l
Y3Rpb25zKG1fbWF4SG9zdENvbm5lY3Rpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKaW5kZXgg
Y2EzYmJhODEzNDQwYmZmNmU4MDMxMjY0MDk3NmNjMzg4YTc0ODY0Zi4uNGI5NWMwZDE5YWQ5MDQy
ZDJhYzcwZWQ0YjEzM2Y4ZDFkMGM2MzJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmgKQEAgLTM4
LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3RTY2hlZHVs
ZXJDbGllbnQ7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0U2NoZWR1bGVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsUmVxdWVzdFNjaGVk
dWxlcik7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPjsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMVmVyaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU1NMVmVyaWZpZXIuaAppbmRleCA0NTJmNzA1ZjljYjhmZTI5MTljZjI4NTZkZWU4ZDBh
ZDFhODE0ZjFhLi4zYjU5Y2IxZjg2MzY1NDg4MWQ0NmU2NWJiZTk1NTRlOWY2NjM0MzY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlm
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xW
ZXJpZmllci5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEN1cmxTU0xWZXJpZmllciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ3VybFNTTFZlcmlmaWVyKTsKIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIFNTTENlcnRpZmljYXRlRmxhZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCA0N2Iz
NzgzZTY0NjI5YTkyZWU4ZGE0MGJkNDc5NzBjNzk2ZWE1NDg2Li43MDdkMGE2NjNhNzE4NmRiMTA1
MDRkZGMyODY2Yjc2OTc3ZDM0YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMTYzLDcg
KzE2Myw3IEBAIFJlZjxDdXJsUmVxdWVzdD4gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUN1cmxSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlCiBDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZSogUmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKCkKIHsKICAgICBpZiAoIWQtPm1fZGVsZWdh
dGUpCi0gICAgICAgIGQtPm1fZGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlPigqdGhpcyk7CisgICAgICAgIGQtPm1fZGVsZWdhdGUgPSBtYWtlVW5p
cXVlPEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlPigqdGhpcyk7CiAKICAgICByZXR1cm4gZC0+
bV9kZWxlZ2F0ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3Bw
CmluZGV4IGEzNjdmZGE2MmE2ZDIxMmE0OTU1ZTY4ODljNjU3MjBjOWVmYWYyMWIuLjEzYTgzMmMy
NjY5YjRjZThjYmViZjMxMzRiYTA4OWQ5MDJkZmE5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDdXJsLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6c3RvcFRocmVhZCgpCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNhbGxP
bldvcmtlclRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIG1fdGFza1F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1
bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKKyAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQo
bWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZXhlY3V0ZVRhc2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCA1
YTA2ZjJlZjg5ZWY1YzIxYmUxNTdjNzFkYTE0MTllYzg0ODA5ZWY3Li43NjU0M2FkMTZjMTQ5NDg1
ODgyMjk5MWYzMDVmZjdhMzNlMTdhZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCkBAIC0zNiw2ICszNiw3IEBA
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGNsYXNz
IFByZXZpZXdDb252ZXJ0ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdDb252ZXJ0ZXIpOwogcHVibGljOgogICAgIFByZXZp
ZXdDb252ZXJ0ZXIoaWQgZGVsZWdhdGUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBT
dHJpbmcmIHBhc3N3b3JkID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCBkZTBiN2UxZjE4N2I1
MDc2NWE5ZDE3YzJlYzRlYzgwMzNkODNmMzQxLi5mMTBlYjYyNWVhMDgxMzAyOTI3ODA3Y2VjMWUy
ZmY2ZTczZjI0YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQp
Y2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOihGdW5jdGlvbjx2b2lkKCk+JiYpZnVuY3Rpb24KIHsK
ICAgICAvLyBTeW5jIHhociB1c2VzIHRoZSBtZXNzYWdlIHF1ZXVlLgogICAgIGlmIChtX21lc3Nh
Z2VRdWV1ZSkKLSAgICAgICAgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgICAgICBy
ZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+
KFdURk1vdmUoZnVuY3Rpb24pKSk7CiAKICAgICAvLyBUaGlzIGlzIHRoZSBjb21tb24gY2FzZS4K
ICAgICBpZiAoIXNjaGVkdWxlZFdpdGhDdXN0b21SdW5Mb29wTW9kZShtX3NjaGVkdWxlZFBhaXJz
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNS
ZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAppbmRleCA0YmIzMGE4NzFkZTU3MDM5YjdiNzE5MzRm
ZWMzNzYzYTVhNGE4MmQ5Li5kNGJhNGU5NTA0MTViYjQwNmJhYmMwMWI2ZDIwYzY2ZDRmODRiMmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVz
b2x2ZVF1ZXVlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBETlNS
ZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIEQKIAogICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGFkZHJlc3Mu
Z2V0KCkpLCAiaWRlbnRpZmllciIsIEdVSU5UX1RPX1BPSU5URVIoaWRlbnRpZmllcikpOwogCi0g
ICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuYWRkKGlkZW50aWZpZXIsIHN0ZDo6bWFr
ZV91bmlxdWU8RE5TUmVzb2x2ZVF1ZXVlU291cDo6Q29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJz
PihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShjYW5jZWxsYWJsZSkpKTsKKyAg
ICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8RE5TUmVzb2x2ZVF1ZXVlU291cDo6Q29tcGxldGlvbkFu
ZENhbmNlbEhhbmRsZXJzPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShjYW5j
ZWxsYWJsZSkpKTsKIH0KIAogdm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpzdG9wUmVzb2x2ZSh1
aW50NjRfdCBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCmlu
ZGV4IGU0YzhiMGYxM2U2ZDA4OWE1ODkyYWE3YWUwYTliODIxNTg1YmI5YTQuLmJkMDYyZjcyOGYx
NmY3MDBjNDY4MDNiYzgzOWVjMGJjNTU3OGUzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAKQEAgLTEzNCw2ICsxMzQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogYXV0aFR5
cGVGcm9tUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUoUHJvdGVjdGlvblNwYQog
fQogCiBzdHJ1Y3QgU2VjcmV0U2VydmljZVNlYXJjaERhdGEgeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YShHQ2FuY2VsbGFi
bGUqIGNhbmNlbGxhYmxlLCBGdW5jdGlvbjx2b2lkIChDcmVkZW50aWFsJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogICAgICAgICA6IGNhbmNlbGxhYmxlKGNhbmNlbGxhYmxlKQogICAgICAgICAs
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQpAQCAtMTczLDcg
KzE3NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBl
cnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY3JldFNlcnZpY2VTZWFyY2hE
YXRhPihjYW5jZWxsYWJsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8g
ZGF0YSA9IG1ha2VVbmlxdWU8U2VjcmV0U2VydmljZVNlYXJjaERhdGE+KGNhbmNlbGxhYmxlLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgc2VjcmV0X3NlcnZpY2Vfc2VhcmNoKG51
bGxwdHIsIFNFQ1JFVF9TQ0hFTUFfQ09NUEFUX05FVFdPUkssIGF0dHJpYnV0ZXMuZ2V0KCksCiAg
ICAgICAgIHN0YXRpY19jYXN0PFNlY3JldFNlYXJjaEZsYWdzPihTRUNSRVRfU0VBUkNIX1VOTE9D
SyB8IFNFQ1JFVF9TRUFSQ0hfTE9BRF9TRUNSRVRTKSwgY2FuY2VsbGFibGUsCiAgICAgICAgIFtd
KEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRh
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAppbmRleCAx
MGZlY2JjNDE5NDc5NWYzMmQxY2E3ZTc2MDlhYzRmZjIwOTJjZDIzLi5hYWZlZDNkZTc5Yjk5YWFj
NDc2OWM3NmI1NWY2YzFjYmI2NjFiOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmgKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEJpZGlSZXNvbHZlckJh
c2U8SXRlcmF0b3IsIFJ1biwgRGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwoKQogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGVuZE9mZnNldCA+PSBzdGFydE9mZnNldCkKLSAgICAgICAg
ICAgIG1fcnVucy5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxSdW4+KHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CisgICAgICAgICAgICBtX3J1
bnMuYXBwZW5kUnVuKG1ha2VVbmlxdWU8UnVuPihzdGFydE9mZnNldCwgZW5kT2Zmc2V0ICsgMSwg
Y29udGV4dCgpLCBtX2RpcmVjdGlvbikpOwogCiAgICAgICAgIG1fZW9yLmluY3JlbWVudCgpOwog
ICAgICAgICBtX3NvciA9IG1fZW9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGVJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGVJQ1UuY3BwCmluZGV4IDU5ZTFmYzcyYTJiZjI5Njk0NWE4NmY4NTUyYjg2Mzc2YTllYTU4NmQu
LjJjOGNjZTczMDg4ZmE1YWQwY2Y1OTU5Y2NlNGY5NjkxYmYzNTdhMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIGljdTsKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExvY2FsZUlDVT4obG9jYWxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPExvY2FsZUlDVT4obG9jYWxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQog
CiBMb2NhbGVJQ1U6OkxvY2FsZUlDVShjb25zdCBjaGFyKiBsb2NhbGUpCkBAIC0xNjMsMjIgKzE2
MywyMiBAQCBzdGF0aWMgU3RyaW5nIGdldERhdGVGb3JtYXRQYXR0ZXJuKGNvbnN0IFVEYXRlRm9y
bWF0KiBkYXRlRm9ybWF0KQogc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBMb2NhbGVJ
Q1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9ybWF0KiBkYXRlRm9ybWF0LCBVRGF0
ZUZvcm1hdFN5bWJvbFR5cGUgdHlwZSwgaW50MzJfdCBzdGFydEluZGV4LCBpbnQzMl90IHNpemUp
CiB7CiAgICAgaWYgKCFkYXRlRm9ybWF0KQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0
cmluZz4+KCk7CiAgICAgaWYgKHVkYXRfY291bnRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUpICE9
IHN0YXJ0SW5kZXggKyBzaXplKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+
KCk7CiAKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+
KCk7CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAg
IGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwogICAgIGZvciAoaW50MzJfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewogICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSB1ZGF0X2dldFN5bWJvbHMoZGF0ZUZvcm1hdCwg
dHlwZSwgc3RhcnRJbmRleCArIGksIDAsIDAsICZzdGF0dXMpOwogICAgICAgICBpZiAoc3RhdHVz
ICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIobGVuZ3Ro
KTsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICB1ZGF0X2dldFN5bWJv
bHMoZGF0ZUZvcm1hdCwgdHlwZSwgc3RhcnRJbmRleCArIGksIGJ1ZmZlci5kYXRhKCksIGxlbmd0
aCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIGxhYmVscy0+YXBw
ZW5kKFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKSk7CiAgICAgfQogICAgIHJldHVybiBX
VEZNb3ZlKGxhYmVscyk7CkBAIC0xODYsNyArMTg2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdHJpbmc+PiBMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9ybWF0
KgogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFj
a01vbnRoTGFiZWxzKCkKIHsKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJp
bmc+PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KFdURl9BUlJBWV9MRU5HVEgoV1RG
Ojptb250aEZ1bGxOYW1lKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJB
WV9MRU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKTsgKytpKQogICAgICAgICBsYWJlbHMtPmFwcGVu
ZChXVEY6Om1vbnRoRnVsbE5hbWVbaV0pOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBMb2NhbGVJQ1U6Om1vbnRoTGFiZWxzKCkKIAogc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkKIHsKLSAgICBh
dXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgYXV0
byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxhYmVscy0+cmVz
ZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGxhYmVscy0+YXBwZW5kKCJBTSIpOwogICAgIGxhYmVscy0+
YXBwZW5kKCJQTSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGVOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5j
cHAKaW5kZXggYmI2YjI2YmE1OWNiMzZiOTg5YjdlNmY1ODYzMGM3YTdiM2I1NmVhNy4uNzgxNWE0
NzhlMDI5NzQ1NTk2NTc2YzJkZWQyMjExOTM2YWE5NmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIExvY2Fs
ZU5vbmUgOiBwdWJsaWMgTG9jYWxlIHsKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxl
OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TG9jYWxlTm9uZT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVOb25lPigpOwog
fQogCiBMb2NhbGVOb25lOjp+TG9jYWxlTm9uZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAppbmRleCBmOGUxNjcwODQ5YTk1ODk4
YTE0NTdiYzk4ZGE5MWU0YmRlNzg0Yzc5Li5lNWYyODE2NmM2ZGQzNGJjNTM1MDliNmEwMDIwYTg4
ODkwN2MyY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY0lDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJ
Q1UuY3BwCkBAIC0xNTYsNDMgKzE1Niw0MyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJD
b2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgLy8gaHR0cDovL2Rl
bW8uaWN1LXByb2plY3Qub3JnL2ljdS1iaW4vY29udmV4cAogICAgICAgICBpZiAoIXN0cmNtcChu
YW1lLCAid2luZG93cy04NzQiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1l
XSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNV
PihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtODc0LTIwMDAiKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFz
dHJjbXAobmFtZSwgIndpbmRvd3MtOTQ5IikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1l
LCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OS0yMDAwIik7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAg
IGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1jeXJpbGxpYyIpKSB7CiAgICAgICAgICAgICByZWdp
c3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy03XzMtMTAuMiIpOworICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTdfMy0xMC4y
Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1ncmVlayIpKSB7CiAgICAgICAgICAgICBy
ZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy02XzItMTAuNCIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTZfMi0x
MC40Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1jZW50cmFsZXVycm9tYW4iKSkgewog
ICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMjktMTAuMiIp
OworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwg
Im1hY29zLTI5LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLXR1cmtpc2giKSkg
ewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMzUtMTAu
MiIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFt
ZSwgIm1hY29zLTM1LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIkVVQy1LUiIpKSB7CiAg
ICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OSIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndp
bmRvd3MtOTQ5Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyQ29k
ZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiAgICAgICAgIGNvbnN0IGNoYXIqIGNh
bm9uaWNhbENvbnZlcnRlck5hbWUgPSB1Y252X2dldENhbm9uaWNhbE5hbWUobmFtZSwgIklBTkEi
LCAmZXJyb3IpOwogICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKGVycm9yKSk7CiAgICAgICAgIHJl
Z2lzdHJhcihuYW1lLCBbbmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZV0gewotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCBjYW5vbmljYWxD
b252ZXJ0ZXJOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lD
VT4obmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4x
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApp
bmRleCA5MzE0NTMzMjhhNmY2Njk0ODVlZTAxZjhhNGUyY2VkZTUwMjY3N2ZmLi45MmM2NjEzY2Ix
ZmNjMGUzMDhhNzNjMzUwYTllMDdlZjc3MzQ2MmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQg
VGV4dENvZGVjTGF0aW4xOjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjTGF0aW4xOjpyZWdpc3RlckNvZGVjcyhUZXh0
Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigid2luZG93cy0xMjUy
IiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNMYXRpbjE+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0xhdGluMT4oKTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNSZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y1JlcGxhY2VtZW50LmNwcAppbmRleCAxNzY1YmY3OTIxNTk3NWIxNTdjOGIzZjc0YzU1NzJjNDcx
ZTIxMTQxLi5jOGI1NThjOGNhMmQzYWZkMzAyMTRiY2ZjMzdhMTQ1Nzc1NmExM2EwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50
LmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIFRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3Rl
ckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcgogdm9pZCBUZXh0
Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKICAgICByZWdpc3RyYXIoInJlcGxhY2VtZW50IiwgW10gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjUmVwbGFjZW1lbnQ+KCk7CiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKaW5kZXgg
YmUwMDY1NjQ0NjQ4ZmNlMGMzNzlkM2M3NDNlZTIyN2VhOWVkYTZmNC4uOTBjNDQ3NWQwMjBiOWY0
NzFiNWJlNzdjM2NhYWMwZmRjOThjYmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKQEAgLTU0LDEwICs1NCwxMCBAQCB2b2lkIFRleHRD
b2RlY1VURjE2OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJl
Z2lzdHJhcikKIHZvaWQgVGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1Jl
Z2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJVVEYtMTZMRSIsIFtdIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGMTY+KHRydWUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7CiAgICAgfSk7CiAg
ICAgcmVnaXN0cmFyKCJVVEYtMTZCRSIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VGV4dENvZGVjVVRGMTY+KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VGV4dENvZGVjVVRGMTY+KGZhbHNlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKaW5kZXggYTNkYWQ0ZTlkMTYzNzY4NjMw
ODhiMTk3MTBmODM5ZGJiZmZlYThkZC4uZTFkMGE1M2M3MTdhYWU3Mzk5MzlmNTFjNGQzMjkzNDVh
Zjg5Y2FmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNVVEY4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VU
RjguY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgVGV4dENvZGVjVVRGODo6cmVnaXN0ZXJFbmNv
ZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRDb2Rl
Y1VURjg6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAg
ICAgcmVnaXN0cmFyKCJVVEYtOCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvZGVjVVRGOD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVj
VVRGOD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcAppbmRleCAyOTZjNDY5ZjE2OWZiOTExZGM4
ZGJkN2E2NDdlYTU2NDFlMmZmZTE5Li40OGFkYmE5ZDRiMWE3YTlhNjU4YWVmOWRmYWRmODVhZGRl
OWRjZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y1VzZXJEZWZpbmVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VzZXJEZWZpbmVkLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFRleHRDb2RlY1VzZXJE
ZWZpbmVkOjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lz
dHJhcgogdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVj
UmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIngtdXNlci1kZWZpbmVkIiwg
W10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVc2VyRGVmaW5l
ZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjVXNlckRlZmluZWQ+KCk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL0xvY2FsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2Fs
ZU1hYy5tbQppbmRleCBhNTE3YmUzNDFmNmFjNGJlOGU4OTNjZmFkN2MyMjg4NDVkNmE4MjgwLi4y
YjNkMDNhMzhhNWQyMDFiYjZkY2I4ZWJlNDRmNDZmZWVmYzY3ZTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCkBAIC02Nyw3ICs2Nyw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNMb2NhbGU+IGRldGVybWluZUxvY2FsZShjb25zdCBTdHJpbmcmIGxv
Y2FsZSkKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU1h
Yz4oZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0KCkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPExvY2FsZU1hYz4oZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0
KCkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gY3JlYXRlRGF0ZVRp
bWVGb3JtYXR0ZXIoTlNMb2NhbGUqIGxvY2FsZSwgTlNDYWxlbmRhciogY2FsZW5kYXIsIE5TRGF0
ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSwgTlNEYXRlRm9ybWF0dGVyU3R5bGUgdGltZVN0eWxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKaW5k
ZXggNmExNjBkZWNjZmM5MjZhZWYzN2RlMjNlOTdmNjJlOGY1YzY3OTA2YS4uYWEwMGE0YWQ2ZjVi
NTk5ODJiNmI0NzczMTcxYzhiYzdjMDMzOTAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBMQ0lE
IExDSURGcm9tTG9jYWxlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIAogc3RkOjp1bmlxdWVf
cHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZVdpbj4oTENJREZyb21Mb2NhbGUobG9j
YWxlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlV2luPihMQ0lERnJvbUxvY2FsZShs
b2NhbGUpKTsKIH0KIAogaW5saW5lIExvY2FsZVdpbjo6TG9jYWxlV2luKExDSUQgbGNpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCmlu
ZGV4IGFmNDY5MTM5MDgxZTgwYzEyMDdiODJjOTdmZGZhM2M3NzIxYTY1MTEuLjJjZWI0NzVlNWZh
ZWJiNjcwYzc0MTQ0NzVhNDcyOTI0OTUyZGNhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0
YXRpYyBVSU5UIGdldENvZGVQYWdlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZywgY29uc3Qgdm9pZCopCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4
dENvZGVjV2luPihnZXRDb2RlUGFnZShlbmNvZGluZy5uYW1lKCkpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOwogfQog
CiBUZXh0Q29kZWNXaW46OlRleHRDb2RlY1dpbihVSU5UIGNvZGVQYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZS
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlP
cGVuVlIuaAppbmRleCBkZDZhZTczNjA0Njc5ZjE4OGUwMWUxMTBlNGZlYmU1OTNkNTM3ZjFiLi5m
NzFiZDlmMGQ1ODljYzJmODM5YjA2N2MyM2VjOGNiNTE4MTA2OGQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlP
cGVuVlIuaApAQCAtMjksNiArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBW
UlBsYXRmb3JtRGlzcGxheU9wZW5WUiA6IHB1YmxpYyBWUlBsYXRmb3JtRGlzcGxheSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVlJQbGF0Zm9y
bURpc3BsYXlPcGVuVlIodnI6OklWUlN5c3RlbSosIHZyOjpJVlJDaGFwZXJvbmUqLCB2cjo6SVZS
Q29tcG9zaXRvciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9v
cGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcAppbmRleCBkMWRjNjczNjg2
ZjY1MWUzZTAzMjkxYjdjMDJjMzFiMGMxNjliYmMyLi5lN2NmNzEzN2UzM2FhNTViZjdlNTg1ZWUx
NjRlNjczZDNhYWVlYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9v
cGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPiBWUlBsYXRmb3Jt
TWFuYWdlck9wZW5WUjo6Y3JlYXRlKCkKICAgICBpZiAoIXZyOjpWUl9Jc1J1bnRpbWVJbnN0YWxs
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxW
UlBsYXRmb3JtTWFuYWdlck9wZW5WUj4oKTsKIH0KIAogVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6
On5WUlBsYXRmb3JtTWFuYWdlck9wZW5WUigpCkBAIC03OCw3ICs3OCw3IEBAIFZlY3RvcjxXZWFr
UHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmdldFZSRGlz
cGxheXMoKQogCiAgICAgVmVjdG9yPFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBkaXNwbGF5
czsKICAgICBpZiAoIW1fZGlzcGxheSkKLSAgICAgICAgbV9kaXNwbGF5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxWUlBsYXRmb3JtRGlzcGxheU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29tcG9z
aXRvcik7CisgICAgICAgIG1fZGlzcGxheSA9IG1ha2VVbmlxdWU8VlJQbGF0Zm9ybURpc3BsYXlP
cGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNvbXBvc2l0b3IpOwogICAgIGRpc3BsYXlzLmFw
cGVuZChtYWtlV2Vha1B0cigqbV9kaXNwbGF5KSk7CiAgICAgcmV0dXJuIGRpc3BsYXlzOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1N
YW5hZ2VyT3BlblZSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlIuaAppbmRleCA2YTQzODdjYzMwODE1ZTAwYzM0MTZjODk2NmFkMjlk
NGI3M2Y3MGQ5Li42YTc4MjNiYzdiOTVlZDQwZGNlY2RmMGY1NzMzZTE2ZDg0NDVhYTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFn
ZXJPcGVuVlIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlIuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBWUlBsYXRmb3JtRGlzcGxheU9wZW5WUjsKIAogY2xhc3MgVlJQbGF0Zm9ybU1hbmFn
ZXJPcGVuVlIgOiBwdWJsaWMgVlJQbGF0Zm9ybU1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VlJQbGF0Zm9y
bU1hbmFnZXJPcGVuVlI+IGNyZWF0ZSgpOwogICAgIGV4cGxpY2l0IFZSUGxhdGZvcm1NYW5hZ2Vy
T3BlblZSKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwCmluZGV4IGFiYWRkYzdmYmNhMjM1OWVmZjViOTgxMWMxOTVmNmI1YWJjMWJh
ODMuLjE2OTc4NTVmZTcyZjYzN2U2NWFkNDc3NzJhZmE2MWM3NDcxOTI0NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTkzLDcgKzkzLDcg
QEAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sgUGFzdGVib2FyZE93bmVyV25kUHJvYyhIV05EIGhX
bmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHcKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgYXV0byBwYXN0ZWJv
YXJkID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIGF1dG8gcGFzdGVib2Fy
ZCA9IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKTsKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGNs
aXBib2FyZERhdGE7CiAgICAgaWYgKCFTVUNDRUVERUQoT2xlR2V0Q2xpcGJvYXJkKCZjbGlwYm9h
cmREYXRhKSkpCiAgICAgICAgIGNsaXBib2FyZERhdGEgPSAwOwpAQCAtMTA2LDE2ICsxMDYsMTYg
QEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdB
bmREcm9wKCkKIHsKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiBkYXRhT2JqZWN0OwogICAgIFdD
RGF0YU9iamVjdDo6Y3JlYXRlSW5zdGFuY2UoJmRhdGFPYmplY3QpOwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRhdGFPYmplY3QuZ2V0KCkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRhdGFPYmplY3QuZ2V0KCkpOwogfQogCiAvLyBzdGF0aWMK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKGRyYWdEYXRhLnBsYXRm
b3JtRGF0YSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihk
cmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3Rl
Ym9hcmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICAvLyBGSVhNRTogU2hvdWxkIGFk
ZCBhIGNvbnN0IG92ZXJsb2FkIG9mIGRyYWdEYXRhTWFwIHNvIHdlIGRvbid0IG5lZWQgYSBjb25z
dF9jYXN0IGhlcmUuCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oY29u
c3RfY2FzdDxEcmFnRGF0YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjb25zdF9jYXN0PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRy
YWdEYXRhTWFwKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCmluZGV4IDE5NjQ5YzU2NmNmY2Y1ZjQyNDMwOWQx
ZDhkMTAwYjBiNGZmNzcwYTguLjZmN2Y0YmExNjYwYjRmN2E5NzcyMTJjODU2M2E0M2M2NjVlMzBi
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1l
bnVEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dURCLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIGludCBTZWFyY2hQb3B1cE1lbnVEQjo6ZXhlY3V0
ZVNpbXBsZVNxbChjb25zdCBTdHJpbmcmIHNxbCwgYm9vbCBpZ25vcmVFcnJvcikKIAogc3RkOjp1
bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4gU2VhcmNoUG9wdXBNZW51REI6OmNyZWF0ZVByZXBh
cmVkU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogewotICAgIGF1dG8gc3RhdGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAg
YXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwg
c3FsKTsKICAgICBpbnQgcmV0ID0gc3RhdGVtZW50LT5wcmVwYXJlKCk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXQsIHJldCA9PSBTUUxJVEVfT0spOwogICAgIHJldHVybiBzdGF0ZW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwCmluZGV4IGRiZjk5YTQ1
Y2U3MDNhOWQ4NTdhMGU2MDE5ZDY4MDZkZDExZmExN2IuLjI0MTAwM2ExMDAzMWEzZDdlNmQ3YWEx
ZTI0YTQ5Y2I5ODk4MjBjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9XQ0RhdGFPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0Rh
dGFPYmplY3QuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgU1RETUVUSE9ESU1QIFdDRGF0YU9iamVj
dDo6U2V0RGF0YShGT1JNQVRFVEMqIHBmb3JtYXRldGMsIFNUR01FRElVTSogcG1lZGl1bSwgQk8K
ICAgICBpZiAoIXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CiAKLSAgICBhdXRvIGZldGMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZPUk1BVEVUQz4oKTsKKyAg
ICBhdXRvIGZldGMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxGT1JNQVRFVEM+
KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNUR01FRElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0
Z01lZChuZXcgU1RHTUVESVVNKTsKIAogICAgIFplcm9NZW1vcnkoZmV0Yy5nZXQoKSwgc2l6ZW9m
KEZPUk1BVEVUQykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0Zp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCBj
MDA0ZmM5ZTcwNGE2YWQzMjM0OWZiODI0Y2RjNWRkZDAzNjAxYjVjLi40Nzk4MWFlNjk5MWRjNjQ5
MTUyMGZjODI0MzJlY2M0OTU4NjQ0M2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmls
dGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRl
cjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAKICAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Q7CiAKLSAgICBhdXRvIGJ1aWxkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0VmZmVjdCk7CisgICAgYXV0
byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlvdXNFZmZlY3Qp
OwogICAgIG1fc291cmNlQWxwaGEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKFNvdXJjZUFscGhh
OjplZmZlY3ROYW1lKCkpOwogCiAgICAgZm9yIChhdXRvJiBlZmZlY3RFbGVtZW50IDogY2hpbGRy
ZW5PZlR5cGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigqZmlsdGVyKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKaW5k
ZXggMDEzMzc4N2Q5ZDMwNjJiMWNhNzliMTYwNzk2M2YyMGMxMDcxZWQ1My4uYmQzYzliZWU4NzI5
ODZlYzYxYjFhMzBhMDQ5NWI4YzBhMjZmZDYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyB2b2lk
IGRldGVybWluZURpcmVjdGlvbmFsaXR5KFRleHREaXJlY3Rpb24mIGRpciwgSW5saW5lSXRlcmF0
b3IgaXRlcikKIAogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBjcmVhdGVSdW4oaW50
IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiBy
ZXNvbHZlcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihzdGFydCwg
ZW5kLCBvYmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEJpZGlSdW4+KHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgp
LCByZXNvbHZlci5kaXIoKSk7CiB9CiAKIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1
bnNGb3JPYmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFydCwgaW50IGVu
ZCwgUmVuZGVyT2JqZWN0JiBvYmosIElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCkBAIC0x
MzAsMTIgKzEzMCwxMiBAQCB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjphcHBlbmRSdW5zRm9yT2Jq
ZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBpbnQgc3Rhcgogc3RkOjp1bmlxdWVfcHRy
PFJvb3RJbmxpbmVCb3g+IENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KCkK
IHsKICAgICBpZiAoaXM8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSkgewotICAgICAgICBhdXRvIGJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUm9vdElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZH
VGV4dD4obV9mbG93KSk7CisgICAgICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdSb290SW5s
aW5lQm94Pihkb3duY2FzdDxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKTsKICAgICAgICAgYm94LT5z
ZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAgICAgICByZXR1cm4gYm94OwogICAgIH0K
ICAgICAgICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Um9vdElubGluZUJveD4obV9m
bG93KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSb290SW5saW5lQm94PihtX2Zsb3cpOwogfQog
CiBSb290SW5saW5lQm94KiBDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlQW5kQXBwZW5kUm9vdElu
bGluZUJveCgpCkBAIC0xMDg1LDcgKzEwODUsNyBAQCBpbmxpbmUgQmlkaVJ1biogQ29tcGxleExp
bmVMYXlvdXQ6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaQog
ICAgICAgICB3aGlsZSAoQmlkaUNvbnRleHQqIHBhcmVudCA9IGJhc2VDb250ZXh0LT5wYXJlbnQo
KSkKICAgICAgICAgICAgIGJhc2VDb250ZXh0ID0gcGFyZW50OwogCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1
bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFpbGluZ1NwYWNlUnVu
LT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFMKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJpZGlSdW4+IG5ld1RyYWlsaW5nUnVuID0gbWFrZVVuaXF1ZTxCaWRpUnVu
PihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4t
PnJlbmRlcmVyKCksIGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOwogICAgICAgICB0cmFp
bGluZ1NwYWNlUnVuLT5tX3N0b3AgPSBmaXJzdFNwYWNlOwogICAgICAgICB0cmFpbGluZ1NwYWNl
UnVuID0gbmV3VHJhaWxpbmdSdW4uZ2V0KCk7CiAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSKQpAQCAtMTYxNyw3ICsxNjE3LDcgQEAgdm9pZCBDb21wbGV4TGluZUxh
eW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVkKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUp
CiAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS5jaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZSgpKSB7
CiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvdHRvbVZpc3VhbE92ZXJmbG93ID0gbGFzdFJvb3RC
b3goKS0+bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KCk7CiAgICAgICAgICAgICBMYXlvdXRV
bml0IGJvdHRvbUxheW91dE92ZXJmbG93ID0gbGFzdFJvb3RCb3goKS0+bG9naWNhbEJvdHRvbUxh
eW91dE92ZXJmbG93KCk7Ci0gICAgICAgICAgICBhdXRvIG5ld0xpbmVCb3ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveD4obV9mbG93KTsKKyAgICAgICAgICAg
IGF1dG8gbmV3TGluZUJveCA9IG1ha2VVbmlxdWU8VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94
PihtX2Zsb3cpOwogICAgICAgICAgICAgYXV0byB0cmFpbGluZ0Zsb2F0c0xpbmVCb3ggPSBuZXdM
aW5lQm94LmdldCgpOwogICAgICAgICAgICAgbV9saW5lQm94ZXMuYXBwZW5kTGluZUJveChXVEZN
b3ZlKG5ld0xpbmVCb3gpKTsKICAgICAgICAgICAgIHRyYWlsaW5nRmxvYXRzTGluZUJveC0+c2V0
Q29uc3RydWN0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9h
dGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0
cy5jcHAKaW5kZXggNGNkZDEzOWM0ODc1MTZlYTBlN2IxMjEzYjcwM2JkMzQyN2FiMDE4Yy4uYTZj
NjQ4MThjNDk3NDU2MDkwZjY2MjNjMzA0YjVkNjI3NzA3YWU3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgRmxvYXRp
bmdPYmplY3Q6OkZsb2F0aW5nT2JqZWN0KFJlbmRlckJveCYgcmVuZGVyZXIsIFR5cGUgdHlwZSwg
Y29uc3QgTGF5b3V0UmVjdCYKIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9h
dGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVuZGVyZXIpCiB7Ci0gICAgYXV0byBvYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcik7CisgICAgYXV0
byBvYmplY3QgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcik7CiAgICAgb2Jq
ZWN0LT5zZXRTaG91bGRQYWludCghcmVuZGVyZXIuaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSk7IC8v
IElmIGEgbGF5ZXIgZXhpc3RzLCB0aGUgZmxvYXQgd2lsbCBwYWludCBpdHNlbGYuIE90aGVyd2lz
ZSBzb21lb25lIGVsc2Ugd2lsbC4KICAgICBvYmplY3QtPnNldElzRGVzY2VuZGFudCh0cnVlKTsK
ICAgICByZXR1cm4gb2JqZWN0OwpAQCAtODMsMTIgKzgzLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxG
bG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gmIHJlbmRlcmVy
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0Ojpjb3B5
VG9OZXdDb250YWluZXIoTGF5b3V0U2l6ZSBvZmZzZXQsIGJvb2wgc2hvdWxkUGFpbnQsIGJvb2wg
aXNEZXNjZW5kYW50KSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0
aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIExheW91dFJlY3QoZnJhbWVSZWN0KCkubG9j
YXRpb24oKSAtIG9mZnNldCwgZnJhbWVSZWN0KCkuc2l6ZSgpKSwgbWFyZ2luT2Zmc2V0KCksIHNo
b3VsZFBhaW50LCBpc0Rlc2NlbmRhbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZsb2F0aW5n
T2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIExheW91dFJlY3QoZnJhbWVSZWN0KCkubG9jYXRp
b24oKSAtIG9mZnNldCwgZnJhbWVSZWN0KCkuc2l6ZSgpKSwgbWFyZ2luT2Zmc2V0KCksIHNob3Vs
ZFBhaW50LCBpc0Rlc2NlbmRhbnQpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmpl
Y3Q+IEZsb2F0aW5nT2JqZWN0OjpjbG9uZUZvck5ld1BhcmVudCgpIGNvbnN0CiB7Ci0gICAgYXV0
byBjbG9uZU9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVy
KCksIHR5cGUoKSwgbV9mcmFtZVJlY3QsIG1fbWFyZ2luT2Zmc2V0LCBtX3Nob3VsZFBhaW50LCBt
X2lzRGVzY2VuZGFudCk7CisgICAgYXV0byBjbG9uZU9iamVjdCA9IG1ha2VVbmlxdWU8RmxvYXRp
bmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgbV9mcmFtZVJlY3QsIG1fbWFyZ2luT2Zmc2V0
LCBtX3Nob3VsZFBhaW50LCBtX2lzRGVzY2VuZGFudCk7CiAgICAgY2xvbmVPYmplY3QtPm1fcGFn
aW5hdGlvblN0cnV0ID0gbV9wYWdpbmF0aW9uU3RydXQ7CiAgICAgY2xvbmVPYmplY3QtPm1faXNQ
bGFjZWQgPSBtX2lzUGxhY2VkOwogICAgIHJldHVybiBjbG9uZU9iamVjdDsKQEAgLTM3Miw3ICsz
NzIsNyBAQCB2b2lkIEZsb2F0aW5nT2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZsb2F0c1RyZWUoKQog
ICAgIGlmIChtX3NldC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGxhY2Vk
RmxvYXRzVHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3RUcmVlPigpOworICAg
IG1fcGxhY2VkRmxvYXRzVHJlZSA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3RUcmVlPigpOwog
ICAgIGZvciAoYXV0byBpdCA9IG1fc2V0LmJlZ2luKCksIGVuZCA9IG1fc2V0LmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0ID0g
aXQtPmdldCgpOwogICAgICAgICBpZiAoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZC5jcHAKaW5kZXggYzcyZDAxZDgxYzdkNzE2NjE1NzllM2JhMDE4MzBl
NDI5ZDMwZjY4OC4uMWU5MTFhZTYwYTYxMjY4OWE0OTdmZjJkNWI3ZjBkNTBiODdlMjk1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBm
aXhlZFRyYWNrU3BhCiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleCA9
IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkgOiBtX2dyaWRbMF0u
c2l6ZSgpOwogICAgIGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8IGVuZE9mVmFyeWluZ1RyYWNr
SW5kZXg7ICsrdmFyeWluZ1RyYWNrSW5kZXgpIHsKICAgICAgICAgaWYgKGlzRW1wdHlBcmVhRW5v
dWdoKHJvd1NwYW4sIGNvbHVtblNwYW4pKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
R3JpZEFyZWE+IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0
cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3Bh
biksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBt
X2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEdyaWRBcmVhPiByZXN1bHQgPSBtYWtlVW5pcXVlPEdyaWRBcmVhPihHcmlkU3Bhbjo6dHJhbnNs
YXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCArIHJvd1NwYW4pLCBH
cmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1
bW5JbmRleCArIGNvbHVtblNwYW4pKTsKICAgICAgICAgICAgIC8vIEFkdmFuY2UgdGhlIGl0ZXJh
dG9yIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hlcmUgd2Ugd291bGQgcmV0dXJuIHRoZSBz
YW1lIGdyaWQgYXJlYSBvdmVyIGFuZCBvdmVyLgogICAgICAgICAgICAgKyt2YXJ5aW5nVHJhY2tJ
bmRleDsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCmluZGV4IDVmYzMyODE1M2E2ZDhi
ZmM0ODgzYmE1MTIxY2NhMGJmNmYyZTk5ZDAuLjY2MDkwOThmOWM4NzA0Njg4MTE0MThhYjE3ODI5
NDE3YmVlMmQxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFz
ZWxpbmVBbGlnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFz
ZWxpbmVBbGlnbm1lbnQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBHcmlkQmFzZWxpbmVB
bGlnbm1lbnQ6OnVwZGF0ZUJhc2VsaW5lQWxpZ25tZW50Q29udGV4dChJdGVtUG9zaXRpb24gcHJl
ZmVyZW4KIAogICAgIC8vIExvb2tpbmcgZm9yIGEgY29tcGF0aWJsZSBiYXNlbGluZS1zaGFyaW5n
IGdyb3VwLgogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZWxpbmVDb250ZXh0PihjaGls
ZCwgcHJlZmVyZW5jZSwgYXNjZW50LCBkZXNjZW50KTsKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8QmFzZWxpbmVDb250ZXh0PihjaGlsZCwgcHJlZmVyZW5j
ZSwgYXNjZW50LCBkZXNjZW50KTsKICAgICBlbHNlIHsKICAgICAgICAgYXV0byogY29udGV4dCA9
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgICAgIGNvbnRleHQtPnVwZGF0
ZVNoYXJlZEdyb3VwKGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNw
cAppbmRleCBhZGRlZGM0MjhiMWYyZmRiMzUwM2U4MTI2MjZiOTc2OTNhM2U3YjVmLi5iMmIwMTFi
ZGY3NDkxYjM1YWIxZGJiN2FjNmIyNjM5NjE3MjFjY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcApAQCAtNjgxLDcg
KzY4MSw3IEBAIGRvdWJsZSBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNvbXB1dGVGbGV4RmFj
dG9yVW5pdFNpemUoY29uc3QgVmVjdG9yPEdyaWRUcmFjCiAgICAgICAgICAgICBsZWZ0T3ZlclNw
YWNlIC09IGJhc2VTaXplOwogICAgICAgICAgICAgZmxleEZhY3RvclN1bSAtPSBmbGV4RmFjdG9y
OwogICAgICAgICAgICAgaWYgKCF0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlKQotICAgICAgICAg
ICAgICAgIHRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNr
SW5kZXhTZXQ+KCk7CisgICAgICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSA9
IG1ha2VVbmlxdWU8VHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgICAgIHRyYWNrc1RvVHJlYXRB
c0luZmxleGlibGUtPmFkZChpbmRleCk7CiAgICAgICAgICAgICB2YWxpZEZsZXhGYWN0b3JVbml0
ID0gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEyNjAsMTAgKzEyNjAsMTAgQEAgdm9pZCBHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG06OnNldHVwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24sIHVuc2lnbmUKICAgICBtX3NpemluZ09wZXJhdGlvbiA9IHNpemluZ09wZXJhdGlvbjsKICAg
ICBzd2l0Y2ggKG1fc2l6aW5nT3BlcmF0aW9uKSB7CiAgICAgY2FzZSBJbnRyaW5zaWNTaXplQ29t
cHV0YXRpb246Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGVmaW5p
dGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKKyAgICAgICAgbV9zdHJhdGVneSA9IG1ha2VVbmlxdWU8
SW5kZWZpbml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFRyYWNrU2l6aW5nOgotICAgICAgICBtX3N0cmF0ZWd5ID0gc3RkOjptYWtlX3VuaXF1ZTxEZWZp
bml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVuaXF1
ZTxEZWZpbml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA3M2IzNjU0
NzY3MTQwYTAzNzBlNGQ1Njk1NmU1NGYyNjc0YjU4YjM2Li5iM2M0MDA3OTAyZGY2MDQ4NjJhNWFj
N2MyOTk4Y2JhZDczZjExMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQo
Y29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgLCBtX2lzT3ZlcldpZGdldChvdGhlci5p
c092ZXJXaWRnZXQoKSkKIHsKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBv
ZiBsaXN0IGhpdCB0ZXN0LgotICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlz
dEJhc2VkVGVzdFJlc3VsdCA/IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlz
dEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOworICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9
IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90aGVy
Lm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOwogfQogCiBIaXRUZXN0UmVzdWx0Ojp+
SGl0VGVzdFJlc3VsdCgpID0gZGVmYXVsdDsKQEAgLTExMyw3ICsxMTMsNyBAQCBIaXRUZXN0UmVz
dWx0JiBIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIp
CiAgICAgbV9pc092ZXJXaWRnZXQgPSBvdGhlci5pc092ZXJXaWRnZXQoKTsKIAogICAgIC8vIE9u
bHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIGxpc3QgaGl0IHRlc3QuCi0gICAgbV9saXN0
QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjptYWtl
X3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7
CisgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0
ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51
bGxwdHI7CiAKICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC02OTAsMTQgKzY5MCwxNCBAQCB2b2lk
IEhpdFRlc3RSZXN1bHQ6OmFwcGVuZChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlciwgY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcQogY29uc3QgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVz
dFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2xpc3RC
YXNlZFRlc3RSZXN1bHQpCi0gICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Tm9kZVNldD4oKTsKKyAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gbWFr
ZVVuaXF1ZTxOb2RlU2V0PigpOwogICAgIHJldHVybiAqbV9saXN0QmFzZWRUZXN0UmVzdWx0Owog
fQogCiBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJh
c2VkVGVzdFJlc3VsdCgpCiB7CiAgICAgaWYgKCFtX2xpc3RCYXNlZFRlc3RSZXN1bHQpCi0gICAg
ICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKTsK
KyAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gbWFrZVVuaXF1ZTxOb2RlU2V0PigpOwog
ICAgIHJldHVybiAqbV9saXN0QmFzZWRUZXN0UmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCAzMzJmMjg1MzFkMzg4Y2ZlMmMzZDU4YTk0YzNm
MjYxN2RjYjkxNjY2Li4xMGExOTQzNmI0YmFjNjU2MjkwNmIyNDFhNzBkMWQ1ODUyMDAwMmYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTQyLDYgKzQyLDcg
QEAgY2xhc3MgU2Nyb2xsYmFyOwogZW51bSBjbGFzcyBIaXRUZXN0UHJvZ3Jlc3MgeyBTdG9wLCBD
b250aW51ZSB9OwogCiBjbGFzcyBIaXRUZXN0UmVzdWx0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPj4g
Tm9kZVNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRl
eCA0M2M2NTM4NzZjZjk4NGE2MmI2ZmM5Mjk0NWQzZGQ2OTBjYTNlZGI5Li4xNWZkZTU0ZGU1ZDM0
OTkyMDgyZDQzOWEyOTBhNTFmOTI1Y2MyZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lSXRlcmF0b3IuaApAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgbnVtYmVyT2ZJc29sYXRlQW5jZXN0b3JzKGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdGVyKQog
Ly8gb2YgQmlkaVJlc29sdmVyIHdoaWNoIGtub3dzIG5vdGhpbmcgYWJvdXQgUmVuZGVyT2JqZWN0
cy4KIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5l
KElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIsIFJlbmRlck9iamVjdCYgb2JqLCB1bnNpZ25l
ZCBwb3MsIFJlbmRlckVsZW1lbnQmIHJvb3QpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlS
dW4+IGlzb2xhdGVkUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2Jq
LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8QmlkaVJ1bj4gaXNvbGF0ZWRSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KHBvcywgcG9zLCBv
YmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogICAgIC8vIEZJWE1FOiBp
c29sYXRlZFJ1bnMoKSBjb3VsZCBiZSBhIGhhc2ggb2Ygb2JqZWN0LT5ydW4gYW5kIHRoZW4gd2Ug
Y291bGQgY2hlYXBseQogICAgIC8vIEFTU0VSVCBoZXJlIHRoYXQgd2UgZGlkbid0IGNyZWF0ZSBt
dWx0aXBsZSBvYmplY3RzIGZvciB0aGUgc2FtZSBpbmxpbmUuCiAgICAgcmVzb2x2ZXIuc2V0V2hp
dGVzcGFjZUNvbGxhcHNpbmdUcmFuc2l0aW9uRm9ySXNvbGF0ZWRSdW4oKmlzb2xhdGVkUnVuLCBy
ZXNvbHZlci53aGl0ZXNwYWNlQ29sbGFwc2luZ1N0YXRlKCkuY3VycmVudFRyYW5zaXRpb24oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwCmluZGV4IDI4
NWFhNWY5ZmU5YmFlN2RmYzg1MjhjMjRjMWQ1NTY3ZDQxMjlmZjMuLjk2YWY5NWE0NTU2OTUwZTgx
MjZiOTUzNzM1MzRkNDc2ZGFlMzU2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MYXllck92ZXJsYXBNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
YXllck92ZXJsYXBNYXAuY3BwCkBAIC03MSw2ICs3MSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZWN0TGlzdCYgcmVjdExpc3QpCiAvLyBD
aGVja2luZyBmb3Igb3ZlcmxhcCBpbnZvbHZlcyBmaW5kaW5nIHRoZSBub2RlIGZvciB0aGUgY2xp
cHBpbmcgbGF5ZXIgZW5jbG9zaW5nIHRoZSBnaXZlbiBsYXllciAob3IgdGhlIHJvb3QpLAogLy8g
YW5kIGNvbXBhcmluZyBhZ2FpbnN0IHRoZSBib3VuZHMgb2YgZWFybGllciBzaWJsaW5ncy4KIGNs
YXNzIE92ZXJsYXBNYXBDb250YWluZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIE92ZXJsYXBNYXBDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXImIHJvb3RM
YXllcikKICAgICAgICAgOiBtX3Jvb3RTY29wZShyb290TGF5ZXIpCkBAIC0yOTYsNyArMjk3LDcg
QEAgYm9vbCBMYXllck92ZXJsYXBNYXA6Om92ZXJsYXBzTGF5ZXJzKGNvbnN0IFJlbmRlckxheWVy
JiBsYXllciwgY29uc3QgTGF5b3V0UmVjdCYKIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnB1c2hD
b21wb3NpdGluZ0NvbnRhaW5lcigpCiB7Ci0gICAgbV9vdmVybGFwU3RhY2suYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9yb290TGF5ZXIpKTsKKyAgICBtX292
ZXJsYXBTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxPdmVybGFwTWFwQ29udGFpbmVyPihtX3Jvb3RM
YXllcikpOwogfQogCiB2b2lkIExheWVyT3ZlcmxhcE1hcDo6cG9wQ29tcG9zaXRpbmdDb250YWlu
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNGRiYTNm
MWM0MTA1YWZiMGU4ZTRjNzZhN2NmY2I5ZTVmZmY3MTg1NC4uMDAxOTI1ODgyZTUwMjhjOGEyMDk5
YjRiYmRlMzczMTY1YjRhMjRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIHZvaWQgaW5zZXJ0SW50b1RyYWNrZWRS
ZW5kZXJlck1hcHMoY29uc3QgUmVuZGVyQmxvY2smIGNvbnRhaW5lciwgUmVuZGVyQm8KICAgICB9
CiAgICAgCiAgICAgYXV0byYgZGVzY2VuZGFudFNldCA9IHBlcmNlbnRIZWlnaHREZXNjZW5kYW50
c01hcC0+ZW5zdXJlKCZjb250YWluZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIAogICAgIGJvb2wgYWRkZWQgPSBkZXNjZW5kYW50U2V0LT5hZGQoJmRlc2NlbmRhbnQp
LmlzTmV3RW50cnk7CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIHZvaWQgaW5zZXJ0SW50b1Ry
YWNrZWRSZW5kZXJlck1hcHMoY29uc3QgUmVuZGVyQmxvY2smIGNvbnRhaW5lciwgUmVuZGVyQm8K
ICAgICB9CiAgICAgCiAgICAgYXV0byYgY29udGFpbmVyU2V0ID0gcGVyY2VudEhlaWdodENvbnRh
aW5lck1hcC0+ZW5zdXJlKCZkZXNjZW5kYW50LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJCbG9jayo+PigpOwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVCghY29udGFpbmVyU2V0LT5jb250YWlucygmY29udGFp
bmVyKSk7CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgUG9zaXRpb25lZERlc2NlbmRhbnRzTWFw
IHsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8mIGRlc2NlbmRhbnRzID0gbV9kZXNjZW5kYW50
c01hcC5lbnN1cmUoJmNvbnRhaW5pbmdCbG9jaywgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIGJvb2wgaXNOZXdFbnRyeSA9IG1vdmVE
ZXNjZW5kYW50VG9FbmQgPT0gTW92ZURlc2NlbmRhbnRUb0VuZDo6WWVzID8gZGVzY2VuZGFudHMt
PmFwcGVuZE9yTW92ZVRvTGFzdCgmcG9zaXRpb25lZERlc2NlbmRhbnQpLmlzTmV3RW50cnkKQEAg
LTUyOCw3ICs1MjgsNyBAQCBzdGF0aWMgaW5saW5lIFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91
dFRyYW5zYWN0aW9uKiBjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdAogdm9pZCBSZW5kZXJCbG9j
azo6YmVnaW5VcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpCiB7CiAgICAg
aWYgKCF1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkpCi0gICAg
ICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IHN0ZDo6
bWFrZV91bmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKKyAgICAgICAgdXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpID0gbWFrZVVuaXF1ZTxE
ZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1N0YWNrPigpOwogICAgIGlmICh1cGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCktPmlzRW1wdHkoKSB8fCBjdXJyZW50VXBkYXRl
U2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+dmlldyAhPSAmdmlldygpKQogICAg
ICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCktPmFwcGVu
ZChVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbih2aWV3KCkpKTsKICAgICAr
K2N1cnJlbnRVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpLT5uZXN0ZWRD
b3VudDsKQEAgLTYyMCw3ICs2MjAsNyBAQCBzdGF0aWMgUmVuZGVyQmxvY2tSYXJlRGF0YSYgZW5z
dXJlQmxvY2tSYXJlRGF0YShjb25zdCBSZW5kZXJCbG9jayYgYmxvY2spCiAgICAgCiAgICAgYXV0
byYgcmFyZURhdGEgPSBnUmFyZURhdGFNYXAtPmFkZCgmYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAoIXJhcmVEYXRhKQotICAgICAgICByYXJlRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyQmxvY2tSYXJlRGF0YT4oKTsKKyAgICAgICAgcmFyZURhdGEgPSBtYWtl
VW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5nZXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApp
bmRleCA3ZjFlNjM5NzA2M2JlNGY4ZGY5YjU3ZjE3NWQ2ZTI2ZTc4ZWZiMTM0Li5iODY0MmQxNzIw
M2JkNGJmMjViZGUxNzFmOTg3MGFmN2Q1YTQzYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgUmVuZGVy
QmxvY2tGbG93OjpsYXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQmIHJlCiAgICAgbV9zaW1wbGVMaW5lTGF5b3V0ID0gbnVsbHB0cjsKIAogICAgIGlm
ICghbV9jb21wbGV4TGluZUxheW91dCkKLSAgICAgICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICAgICAgbV9jb21w
bGV4TGluZUxheW91dCA9IG1ha2VVbmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKIAog
ICAgIG1fY29tcGxleExpbmVMYXlvdXQtPmxheW91dExpbmVCb3hlcyhyZWxheW91dENoaWxkcmVu
LCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxCb3R0b20pOwogfQpAQCAtMjAxOSw3
ICsyMDE5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVHcmlkQm94KCkKICAg
ICAKICAgICBzZXRMaW5lR3JpZEJveCgwKTsKIAotICAgIGF1dG8gbGluZUdyaWRCb3ggPSBzdGQ6
Om1ha2VfdW5pcXVlPFJvb3RJbmxpbmVCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGxpbmVHcmlkQm94
ID0gbWFrZVVuaXF1ZTxSb290SW5saW5lQm94PigqdGhpcyk7CiAgICAgbGluZUdyaWRCb3gtPnNl
dEhhc1RleHRDaGlsZHJlbigpOyAvLyBOZWVkZWQgdG8gbWFrZSB0aGUgbGluZSBhc2NlbnQvZGVz
Y2VudCBhY3R1YWxseSBiZSBob25vcmVkIGluIHF1aXJrcyBtb2RlLgogICAgIGxpbmVHcmlkQm94
LT5zZXRDb25zdHJ1Y3RlZCgpOwogICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFw
IHRleHRCb3hEYXRhTWFwOwpAQCAtMjI2MCw3ICsyMjYwLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3Qg
UGFpbnQKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cygpCiB7
Ci0gICAgbV9mbG9hdGluZ09iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0
cz4oKnRoaXMpOworICAgIG1fZmxvYXRpbmdPYmplY3RzID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09i
amVjdHM+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5n
T2JqZWN0cygpCkBAIC0zNjc3LDcgKzM2NzcsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6ZW5z
dXJlTGluZUJveGVzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2NvbXBsZXhM
aW5lTGF5b3V0KTsKLSAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
b21wbGV4TGluZUxheW91dD4oKnRoaXMpOworICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBtYWtl
VW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKICAgICBpZiAoU2ltcGxlTGluZUxh
eW91dDo6Y2FuVXNlRm9yTGluZUJveFRyZWUoKnRoaXMsICptX3NpbXBsZUxpbmVMYXlvdXQpKSB7
CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OmdlbmVyYXRlTGluZUJveFRyZWUoKnRoaXMsICpt
X3NpbXBsZUxpbmVMYXlvdXQpOwpAQCAtMzczNSw3ICszNzM1LDcgQEAgUmVuZGVyQmxvY2tGbG93
OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YSYgUmVuZGVyQmxvY2tGbG93OjplbnN1cmVSYXJlQmxv
Y2tGbG93RGEKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXRlcmlhbGl6ZVJhcmVCbG9ja0Zsb3dE
YXRhKCkKIHsKICAgICBBU1NFUlQoIWhhc1JhcmVCbG9ja0Zsb3dEYXRhKCkpOwotICAgIG1fcmFy
ZUJsb2NrRmxvd0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrRmxvdzo6UmVuZGVy
QmxvY2tGbG93UmFyZURhdGE+KCp0aGlzKTsKKyAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0gbWFr
ZVVuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7
CiB9CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAppbmRleCBkYjNhNmRhOGYxYTMyMTUzNzAwZTczNDE3ZDEwZjZhNDgxMzA4
MzVmLi45Njc3ZGFlOWNmZTI4YjFkYzM5MDVjM2E4MmIwNmVjNmVjZGNkYzQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBD
b250cm9sU3RhdGVzUmVuZGVyZXJNYXAmIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpCiBzdGF0
aWMgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckJv
eCYgcmVuZGVyZXIpCiB7CiAgICAgcmV0dXJuIGNvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCgpLmVu
c3VyZSgmcmVuZGVyZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29u
dHJvbFN0YXRlcz4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udHJvbFN0YXRlcz4o
KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKQEAgLTIxMjIsNyArMjEyMiw3
IEBAIExheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1l
bnQmIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVt
ZW50Qm94PiBSZW5kZXJCb3g6OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OmRpcnR5
TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGJjYmE3YjQxNjg1YTNmNDEyMGMxZWVh
NTQ2MTAyZjgzNmQ1NmFhMjYuLjkwMWM0MTEwZTFjNTZiYTYwYTRkZDNiYTdiOTNmYWFmNjA0MWNi
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcApAQCAtMjUzOCw3ICsyNTM4LDcgQEAgYXV0byBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKCkgLT4gQ29udGludWF0aW9uQ2hhaW5Ob2QKIHsK
ICAgICBzZXRIYXNDb250aW51YXRpb25DaGFpbk5vZGUodHJ1ZSk7CiAgICAgcmV0dXJuICpjb250
aW51YXRpb25DaGFpbk5vZGVNYXAoKS5lbnN1cmUodGhpcywgWyZdIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGludWF0aW9uQ2hhaW5Ob2RlPigqdGhpcyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRoaXMpOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNv
dW50ZXIuY3BwCmluZGV4IDIyMTA0NDM0ZTQ1ZDZjOTg0NzZmZmQyOWFiNTUwYmQ2MmFjNDA4ZmUu
LmMxZTAzZjA5N2VmNTlhZDVhMTZiMTk0YzljMDVkNjQ5ZjdmZjE1Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0
aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgQXRvbVN0cmluZyYgaQogICAgIGlmIChwbGFjZS5wYXJlbnQpCiAgICAgICAgIHBsYWNl
LnBhcmVudC0+aW5zZXJ0QWZ0ZXIobmV3Tm9kZSwgcGxhY2UucHJldmlvdXNTaWJsaW5nLmdldCgp
LCBpZGVudGlmaWVyKTsKIAotICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgc3RkOjptYWtlX3VuaXF1
ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdOb2Rl
LmNvcHlSZWYoKSk7CisgICAgbWFwcy5hZGQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPENvdW50ZXJN
YXA+KCkpLml0ZXJhdG9yLT52YWx1ZS0+YWRkKGlkZW50aWZpZXIsIG5ld05vZGUuY29weVJlZigp
KTsKICAgICByZW5kZXJlci5zZXRIYXNDb3VudGVyTm9kZU1hcCh0cnVlKTsKIAogICAgIGlmIChu
ZXdOb2RlLT5wYXJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCmluZGV4IDUxYTllNDY4NDM0NGQyNjM3ZDA0YTkxZmI1
OWEzY2Q2ZWY4ZjA2ZWQuLjdmNmNhYmMwNTkxMjEwODFjNGQ3Mjg2MDIxOWJkNGI5Yzg1Yjk0Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29u
dGFpbmVyLmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIFJlbmRlckJveEZyYWdtZW50SW5mbyogUmVu
ZGVyRnJhZ21lbnRDb250YWluZXI6OnNldFJlbmRlckJveEZyYWdtZW50SW5mbyhjb25zdCBSCiB7
CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94
RnJhZ21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gs
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0
LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0
b3ItPnZhbHVlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCb3hGcmFnbWVudEluZm8+JiBi
b3hJbmZvID0gbV9yZW5kZXJCb3hGcmFnbWVudEluZm8uYWRkKGJveCwgbWFrZVVuaXF1ZTxSZW5k
ZXJCb3hGcmFnbWVudEluZm8+KGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBj
b250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJu
IGJveEluZm8uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhZ21lbnRlZEZsb3cuY3BwCmluZGV4IDQ0ZjU2MzViYTUzYWUzZjdlOTRkN2FjOGU0OTY3
MzkwZjU4YzJlNTYuLjg0NmRkM2EwMmFhODZhYWY3MTVjMDk0ZThjMzUwYzE2NmE4NjdiMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNw
cApAQCAtMTExNSw3ICsxMTE1LDcgQEAgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIFJlbmRlckZy
YWdtZW50ZWRGbG93OjpjdXJyZW50RnJhZ21lbnQoKSBjb25zdAogQ29udGFpbmluZ0ZyYWdtZW50
TWFwJiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y29udGFpbmluZ0ZyYWdtZW50TWFwKCkKIHsKICAg
ICBpZiAoIW1fbGluZVRvRnJhZ21lbnRNYXApCi0gICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKKyAgICAgICAgbV9s
aW5lVG9GcmFnbWVudE1hcCA9IG1ha2VVbmlxdWU8Q29udGFpbmluZ0ZyYWdtZW50TWFwPigpOwog
CiAgICAgcmV0dXJuICptX2xpbmVUb0ZyYWdtZW50TWFwLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKaW5kZXggYjkwNDVlNjc5MDg3
M2FiZjgxYTkwZGZhNWJiYjExMDkzYzY3N2IwMi4uNTJjNzkwZDRlNTc4OWIxNzhlMjZjOGFiZDhi
YTdiMTNjYzU5MTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdlb21ldHJ5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6
cHVzaChjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk0K
ICAgICAKICAgICBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAmIHN0ZXAgPSBtX21hcHBpbmdbbV9pbnNl
cnRpb25Qb3NpdGlvbl07CiAgICAgaWYgKCF0LmlzSW50ZWdlclRyYW5zbGF0aW9uKCkpCi0gICAg
ICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pih0KTsKKyAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KHQpOwogICAgIGVsc2UKICAgICAgICAgc3RlcC5tX29mZnNldCA9IExheW91
dFNpemUodC5lKCksIHQuZigpKTsKIApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUmVuZGVyR2Vv
bWV0cnlNYXA6OnB1c2hWaWV3KGNvbnN0IFJlbmRlclZpZXcqIHZpZXcsIGNvbnN0IExheW91dFNp
emUmIHNjcm9sCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21f
aW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIHN0ZXAubV9vZmZzZXQgPSBzY3JvbGxPZmZzZXQ7CiAg
ICAgaWYgKHQpCi0gICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4PigqdCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtl
VW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigqdCk7CiAgICAgCiAgICAgc3RlcEluc2VydGVk
KHN0ZXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IGUz
NWEyYzEzMjI1ZDQ3MjVjZDg4YzIyZjZkMDRjY2M5ZDBmMzQ5N2YuLjQ5YWQwMzU1NTM3MzQyMjVm
MWRkZDYzM2I0MmMxMzgzMmNjZWZiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAKQEAgLTU0NCw3ICs1NDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNr
SW5kZXhTZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYQogICAg
IHVuc2lnbmVkIGxhc3RBdXRvUmVwZWF0VHJhY2sgPSBmaXJzdEF1dG9SZXBlYXRUcmFjayArIGdy
aWQuYXV0b1JlcGVhdFRyYWNrcyhkaXJlY3Rpb24pOwogCiAgICAgaWYgKCFncmlkLmhhc0dyaWRJ
dGVtcygpKSB7Ci0gICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1ZTxP
cmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtl
VW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIHRy
YWNrSW5kZXggPSBmaXJzdEF1dG9SZXBlYXRUcmFjazsgdHJhY2tJbmRleCA8IGxhc3RBdXRvUmVw
ZWF0VHJhY2s7ICsrdHJhY2tJbmRleCkKICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5h
ZGQodHJhY2tJbmRleCk7CiAgICAgfSBlbHNlIHsKQEAgLTU1Miw3ICs1NTIsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRy
YWNrc0ZvckF1dG9SZXBlYQogICAgICAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKGdyaWQs
IGRpcmVjdGlvbiwgdHJhY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yLm5leHRH
cmlkSXRlbSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eVRyYWNrSW5kZXhlcykKLSAg
ICAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9y
ZGVyZWRUcmFja0luZGV4U2V0PigpOworICAgICAgICAgICAgICAgICAgICBlbXB0eVRyYWNrSW5k
ZXhlcyA9IG1ha2VVbmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAgICAg
ICAgZW1wdHlUcmFja0luZGV4ZXMtPmFkZCh0cmFja0luZGV4KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtNzMyLDcgKzczMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gUmVu
ZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0CiAgICAg
Y29uc3QgdW5zaWduZWQgZW5kT2ZDcm9zc0RpcmVjdGlvbiA9IGdyaWQubnVtVHJhY2tzKGNyb3Nz
RGlyZWN0aW9uKTsKICAgICB1bnNpZ25lZCBjcm9zc0RpcmVjdGlvblNwYW5TaXplID0gR3JpZFBv
c2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGdyaWRJdGVtLCBjcm9z
c0RpcmVjdGlvbik7CiAgICAgR3JpZFNwYW4gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgPSBHcmlk
U3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oZW5kT2ZDcm9zc0RpcmVjdGlvbiwgZW5k
T2ZDcm9zc0RpcmVjdGlvbiArIGNyb3NzRGlyZWN0aW9uU3BhblNpemUpOwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdyaWRBcmVhPihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZp
ZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGly
ZWN0aW9uUG9zaXRpb25zKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oc3BlY2lm
aWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNw
ZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVj
aWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CiB9CiAKIHZvaWQgUmVu
ZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBj
b25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRlbXMpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA4OTEzZTc2YzlkNjFjOWQyNTQxOTkw
YTkwMWI3YjAyOTRlNDhhYWRjLi5mNTFlMmZlYjM3ZTFmY2YwZmQwZTc5MWFlNjRmMDNlZTg4YTJh
N2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTEzNCw3
ICsxMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBSZW5kZXJJbWFnZTo6UmVu
ZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFn
ZSogc3R5bGVJbWFnZSwgY29uc3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogICAgIDog
UmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIEludFNpemUoKSkKLSAgICAs
IG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBt
YWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBt
YWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX2ltYWdlRGV2aWNlUGl4
ZWxSYXRpbyhpbWFnZURldmljZVBpeGVsUmF0aW8pCiB7CiAgICAgdXBkYXRlQWx0VGV4dCgpOwpA
QCAtMTQ0LDcgKzE0NCw3IEBAIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsCiAKIFJlbmRlckltYWdl
OjpSZW5kZXJJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0
eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCiAgICAgOiBSZW5kZXJSZXBsYWNlZChkb2N1bWVudCwgV1RG
TW92ZShzdHlsZSksIEludFNpemUoKSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdl
ID8gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxl
SW1hZ2UpIDogc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwg
bV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3Vy
Y2U+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAK
aW5kZXggOWQ4YTY1OTM0YmEzZmQyNTQ3NGMzOWM5MWZlZWM0M2FhMGM5ZjlmNS4uMTUzMjVjZGEx
NjkwNjdhNTY5MWI4ODVhOGRmZGM3YWE5MDM2NDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTExMDAsNyArMTEwMCw3IEBAIHZvaWQgUmVuZGVySW5s
aW5lOjpkZWxldGVMaW5lcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5k
ZXJJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPElubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxp
bmVGbG93Qm94PigqdGhpcyk7CiB9CiAKIElubGluZUZsb3dCb3gqIFJlbmRlcklubGluZTo6Y3Jl
YXRlQW5kQXBwZW5kSW5saW5lRmxvd0JveCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAppbmRleCBmOWYwZDBkNGNlZTY2YzFmNDNkZTUzMmI2MTAwNTMyYmZiNjE1MDhj
Li4xODU0Njg3MDUxNmU0ZDBmZDVlMmIwMjhkZWIzYmM0MGNlNmM4YmY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIFJl
bmRlckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCgpCiAgICAgICAgIC8vIElnbm9yZSBub24t
b3ZlcmZsb3cgbGF5ZXJzIGFuZCByZWZsZWN0aW9ucy4KICAgICAgICAgaWYgKGNoaWxkLT5pc05v
cm1hbEZsb3dPbmx5KCkgJiYgIWlzUmVmbGVjdGlvbkxheWVyKCpjaGlsZCkpIHsKICAgICAgICAg
ICAgIGlmICghbV9ub3JtYWxGbG93TGlzdCkKLSAgICAgICAgICAgICAgICBtX25vcm1hbEZsb3dM
aXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKKyAgICAgICAg
ICAgICAgICBtX25vcm1hbEZsb3dMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIq
Pj4oKTsKICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3QtPmFwcGVuZChjaGlsZCk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVj
dExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3IK
ICAgICBpZiAoaW5jbHVkZUhpZGRlbkxheWVyICYmICFpc05vcm1hbEZsb3dPbmx5KCkpIHsKICAg
ICAgICAgYXV0byYgbGF5ZXJMaXN0ID0gKHpJbmRleCgpID49IDApID8gcG9zaXRpdmVaT3JkZXJM
aXN0IDogbmVnYXRpdmVaT3JkZXJMaXN0OwogICAgICAgICBpZiAoIWxheWVyTGlzdCkKLSAgICAg
ICAgICAgIGxheWVyTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+
KCk7CisgICAgICAgICAgICBsYXllckxpc3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxSZW5kZXJMYXll
cio+PigpOwogICAgICAgICBsYXllckxpc3QtPmFwcGVuZCh0aGlzKTsKICAgICB9CiAKQEAgLTEy
MDYsNyArMTIwNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAg
Ym9vbCBoYWRUcmFuc2Zvcm0gPSAhIW1fdHJhbnNmb3JtOwogICAgIGlmIChoYXNUcmFuc2Zvcm0g
IT0gaGFkVHJhbnNmb3JtKSB7CiAgICAgICAgIGlmIChoYXNUcmFuc2Zvcm0pCi0gICAgICAgICAg
ICBtX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCk7
CisgICAgICAgICAgICBtX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRy
aXg+KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gbnVsbHB0cjsK
ICAgICAgICAgCkBAIC01NTI3LDcgKzU1MjcsNyBAQCBSZWY8Q2xpcFJlY3RzPiBSZW5kZXJMYXll
cjo6dXBkYXRlQ2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0Nvbgog
ICAgIH0KICAgICAKICAgICBpZiAoIW1fY2xpcFJlY3RzQ2FjaGUpCi0gICAgICAgIG1fY2xpcFJl
Y3RzQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBSZWN0c0NhY2hlPigpOworICAgICAgICBt
X2NsaXBSZWN0c0NhY2hlID0gbWFrZVVuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKICNpZm5kZWYg
TkRFQlVHCiAgICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9jbGlwUmVjdHNSb290W2NsaXBSZWN0c1R5
cGVdID0gY2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXI7CiAgICAgbV9jbGlwUmVjdHNDYWNoZS0+
bV9zY3JvbGxiYXJSZWxldmFuY3lbY2xpcFJlY3RzVHlwZV0gPSBjbGlwUmVjdHNDb250ZXh0Lm92
ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5OwpAQCAtNjEwNSw3ICs2MTA1LDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6Y2xlYXJDbGlwUmVjdHMoQ2xpcFJlY3RzVHlwZSB0eXBlVG9DbGVhcikKIFJl
bmRlckxheWVyQmFja2luZyogUmVuZGVyTGF5ZXI6OmVuc3VyZUJhY2tpbmcoKQogewogICAgIGlm
ICghbV9iYWNraW5nKSB7Ci0gICAgICAgIG1fYmFja2luZyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyTGF5ZXJCYWNraW5nPigqdGhpcyk7CisgICAgICAgIG1fYmFja2luZyA9IG1ha2VVbmlxdWU8
UmVuZGVyTGF5ZXJCYWNraW5nPigqdGhpcyk7CiAgICAgICAgIGNvbXBvc2l0b3IoKS5sYXllckJl
Y2FtZUNvbXBvc2l0ZWQoKnRoaXMpOwogCiAgICAgICAgIHVwZGF0ZUZpbHRlclBhaW50aW5nU3Ry
YXRlZ3koKTsKQEAgLTY1MjMsNyArNjUyMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hh
bmdlZChTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAK
ICAgICBpZiAocmVuZGVyZXIoKS5pc0hUTUxNYXJxdWVlKCkgJiYgcmVuZGVyZXIoKS5zdHlsZSgp
Lm1hcnF1ZWVCZWhhdmlvcigpICE9IE1hcnF1ZWVCZWhhdmlvcjo6Tm9uZSAmJiByZW5kZXJlcigp
LmlzQm94KCkpIHsKICAgICAgICAgaWYgKCFtX21hcnF1ZWUpCi0gICAgICAgICAgICBtX21hcnF1
ZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlck1hcnF1ZWU+KHRoaXMpOworICAgICAgICAgICAg
bV9tYXJxdWVlID0gbWFrZVVuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKICAgICAgICAgbV9t
YXJxdWVlLT51cGRhdGVNYXJxdWVlU3R5bGUoKTsKICAgICB9IGVsc2UgaWYgKG1fbWFycXVlZSkK
ICAgICAgICAgbV9tYXJxdWVlID0gbnVsbHB0cjsKQEAgLTY3MzUsNyArNjczNSw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OmVuc3VyZUxheWVyRmlsdGVycygpCiAgICAgaWYgKG1fZmlsdGVycykKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CisgICAgbV9maWx0ZXJzID0gbWFrZVVuaXF1ZTxSZW5k
ZXJMYXllckZpbHRlcnM+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJMYXll
ckZpbHRlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCAyMmVkNmRkN2MwMjUyYjE5NTNkZTNiZTE1Mzk3MWIxMjlhZTFjNzRiLi4x
MjFkMTJmMjY5ZjkwZDEzYzZjY2RkMDk3YjkyMmUzYWRhY2UyNmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTYyNyw3ICsxNjI3
LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFuY2VzdG9yQ2xpcHBpbmdTdGFj
ayhWZWN0b3I8Q29tcG9zaXRlZENsaXBEYXRhPiYKICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2Fu
Y2VzdG9yQ2xpcHBpbmdTdGFjaykgewotICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xp
cHBpbmdEYXRhKSk7CisgICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrID0gbWFrZVVuaXF1
ZTxMYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjaz4oV1RGTW92ZShjbGlwcGluZ0RhdGEpKTsKICAg
ICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0aW5nLCBzdHJlYW0gPDwgImxheWVyICIgPDwg
Jm1fb3duaW5nTGF5ZXIgPDwgIiBhbmNlc3RvckNsaXBwaW5nU3RhY2sgIiA8PCAqbV9hbmNlc3Rv
ckNsaXBwaW5nU3RhY2spOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zMTc4LDE3
ICszMTc4LDE3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbihkb3Vi
bGUgdGltZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uJiBhbmltCiAgICAgICAgIAogICAgICAgICBi
b29sIGlzRmlyc3RPckxhc3RLZXlmcmFtZSA9IGtleSA9PSAwIHx8IGtleSA9PSAxOwogICAgICAg
ICBpZiAoKGhhc1RyYW5zZm9ybSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRL
ZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKSkKLSAgICAgICAg
ICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1Bbmlt
YXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT50cmFuc2Zvcm0oKSwgdGYpKTsKKyAgICAg
ICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT50cmFuc2Zvcm0oKSwgdGYpKTsKIAogICAgICAg
ICBpZiAoKGhhc09wYWNpdHkgJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5
ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpKQotICAgICAgICAgICAg
b3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVl
PihrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKTsKKyAgICAgICAgICAgIG9wYWNp
dHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlm
cmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CiAKICAgICAgICAgaWYgKChoYXNGaWx0ZXIgJiYg
aXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0
eShDU1NQcm9wZXJ0eUZpbHRlcikpCi0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0
ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+
ZmlsdGVyKCksIHRmKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlx
dWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRm
KSk7CiAKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQogICAgICAgICBpZiAoKGhhc0JhY2tk
cm9wRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNv
bnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlcikpCi0gICAgICAg
ICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpLCB0Zikp
OworICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8Rmls
dGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwg
dGYpKTsKICNlbmRpZgogICAgIH0KIApAQCAtMzI0Myw4ICszMjQzLDggQEAgYm9vbCBSZW5kZXJM
YXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBvcGFjaXR5QW5pbSA9IHRvU3R5
bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpOwogICAgICAgICBp
ZiAob3BhY2l0eUFuaW0gJiYgIW9wYWNpdHlBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkg
ewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qgb3BhY2l0eVZlY3RvcihBbmltYXRlZFBy
b3BlcnR5T3BhY2l0eSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9t
U3R5bGUtPm9wYWNpdHkoKSkpKTsKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0
ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5
KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0
KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgY29tcG9zaXRpbmdPcGFjaXR5KGZy
b21TdHlsZS0+b3BhY2l0eSgpKSkpOworICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQo
bWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigxLCBjb21wb3NpdGluZ09wYWNpdHkodG9T
dHlsZS0+b3BhY2l0eSgpKSkpOwogICAgICAgICAgICAgLy8gVGhlIGJveFNpemUgcGFyYW0gaXMg
b25seSB1c2VkIGZvciB0cmFuc2Zvcm0gYW5pbWF0aW9ucyAod2hpY2ggY2FuIG9ubHkgcnVuIG9u
IFJlbmRlckJveGVzKSwgc28gd2UgcGFzcyBhbiBlbXB0eSBzaXplIGhlcmUuCiAgICAgICAgICAg
ICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24ob3BhY2l0eVZlY3RvciwgRmxvYXRT
aXplKCksIG9wYWNpdHlBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNp
dGlvbihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3Qgb3BhY2l0eSBpcyB2aXNpYmxlIHdo
ZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgb3BhY2l0eS4KQEAgLTMy
NTgsOCArMzI1OCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24o
ZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFu
aW1hdGlvbiogdHJhbnNmb3JtQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShD
U1NQcm9wZXJ0eVRyYW5zZm9ybSk7CiAgICAgICAgIGlmICh0cmFuc2Zvcm1BbmltICYmICF0cmFu
c2Zvcm1BbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJh
bWVWYWx1ZUxpc3QgdHJhbnNmb3JtVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pOwot
ICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7Ci0gICAgICAg
ICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFu
c2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDAs
IGZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5p
bnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+dHJh
bnNmb3JtKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlv
bih0cmFuc2Zvcm1WZWN0b3IsIHNuYXBwZWRJbnRSZWN0KHJlbmRlckJveCgpLT5ib3JkZXJCb3hS
ZWN0KCkpLnNpemUoKSwgdHJhbnNmb3JtQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFt
ZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybSksIHRpbWVPZmZzZXQpKSB7
CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgdHJhbnNmb3Jt
IGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCB0
cmFuc2Zvcm0uCiAgICAgICAgICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCp0b1N0eWxlKTsKQEAg
LTMyNzIsOCArMzI3Miw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRp
b24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0
IEFuaW1hdGlvbiogZmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZpbHRlcik7CiAgICAgICAgIGlmIChmaWx0ZXJBbmltICYmICFmaWx0ZXJBbmlt
LT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxp
c3QgZmlsdGVyVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlGaWx0ZXIpOwotICAgICAgICAgICAgZmls
dGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigw
LCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7Ci0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0
KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRl
cigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVy
QW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZp
bHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9T
dHlsZS0+ZmlsdGVyKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFu
aW1hdGlvbihmaWx0ZXJWZWN0b3IsIEZsb2F0U2l6ZSgpLCBmaWx0ZXJBbmltLCBHcmFwaGljc0xh
eWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5RmlsdGVyKSwg
dGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29y
cmVjdCBmaWx0ZXIgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQg
dGhlIGZpbmFsIGZpbHRlci4KICAgICAgICAgICAgICAgICB1cGRhdGVGaWx0ZXJzKCp0b1N0eWxl
KTsKQEAgLTMyODcsOCArMzI4Nyw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRy
YW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAg
IGNvbnN0IEFuaW1hdGlvbiogYmFja2Ryb3BGaWx0ZXJBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlv
bkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpOwogICAgICAgICBp
ZiAoYmFja2Ryb3BGaWx0ZXJBbmltICYmICFiYWNrZHJvcEZpbHRlckFuaW0tPmlzRW1wdHlPclpl
cm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBiYWNrZHJvcEZp
bHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpOwotICAgICAg
ICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVy
QW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwotICAgICAg
ICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVy
QW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKKyAgICAgICAg
ICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlv
blZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGJh
Y2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVl
PigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFw
aGljc0xheWVyLT5hZGRBbmltYXRpb24oYmFja2Ryb3BGaWx0ZXJWZWN0b3IsIEZsb2F0U2l6ZSgp
LCBiYWNrZHJvcEZpbHRlckFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFu
c2l0aW9uKEFuaW1hdGVkUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlciksIHRpbWVPZmZzZXQp
KSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgYmFja2Ry
b3AgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRo
ZSBmaW5hbCBiYWNrZHJvcCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlQmFja2Ryb3BG
aWx0ZXJzKCp0b1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggYWJlNGQ0ZDY3NWEyMjE4NmUyZWE4OWQ0MTJmZmE4
MTUzOGM1YzkyOS4uMzIxMjI5ZDZmMjNjZmFlNjZhMDVhNTI4MDhkZDBiMGNiYThjMTQ0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OlJlbmRlckxheWVy
Q29tcG9zaXRvcihSZW5kZXJWaWV3JiByZW5kZXJWaWV3KQogewogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgaWYgKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5wbGF0Zm9ybVdpZGdldCgp
KQotICAgICAgICBtX2xlZ2FjeVNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I+KHBhZ2UoKS5jaHJv
bWUoKS5jbGllbnQoKSwgaXNNYWluRnJhbWVDb21wb3NpdG9yKCkpOworICAgICAgICBtX2xlZ2Fj
eVNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPExlZ2FjeVdlYktpdFNjcm9s
bGluZ0xheWVyQ29vcmRpbmF0b3I+KHBhZ2UoKS5jaHJvbWUoKS5jbGllbnQoKSwgaXNNYWluRnJh
bWVDb21wb3NpdG9yKCkpOwogI2VuZGlmCiB9CiAKQEAgLTYxMiw3ICs2MTIsNyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5Rmx1c2hCZWZvcmVEaXNwbGF5UmVmcmVzaChjb25z
dCBHcmFwaGljc0xheWVyKgogewogICAgIGlmICghbV9sYXllclVwZGF0ZXIpIHsKICAgICAgICAg
UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEID0gcGFnZSgpLmNocm9tZSgpLmRpc3BsYXlJRCgp
OwotICAgICAgICBtX2xheWVyVXBkYXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NMYXll
clVwZGF0ZXI+KCp0aGlzLCBkaXNwbGF5SUQpOworICAgICAgICBtX2xheWVyVXBkYXRlciA9IG1h
a2VVbmlxdWU8R3JhcGhpY3NMYXllclVwZGF0ZXI+KCp0aGlzLCBkaXNwbGF5SUQpOwogICAgIH0K
ICAgICAKICAgICBtX2xheWVyVXBkYXRlci0+c2NoZWR1bGVVcGRhdGUoKTsKQEAgLTQ3OTIsNyAr
NDc5Miw3IEBAIHZvaWQgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVn
aXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzCiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFZpZXdwb3J0Q29uc3RyYWludHM+IGNvbnN0cmFpbnRzOwogICAgICAgICBpZiAobGF5ZXIt
PnJlbmRlcmVyKCkuaXNTdGlja2lseVBvc2l0aW9uZWQoKSkgewotICAgICAgICAgICAgY29uc3Ry
YWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50
cz4oY29tcG9zaXRvci5jb21wdXRlU3RpY2t5Vmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsK
KyAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gbWFrZVVuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWlu
dHMoKmxheWVyKSk7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJMYXllciogZW5jbG9zaW5nVG91
Y2hTY3JvbGxhYmxlTGF5ZXIgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGNvbXBvc2l0b3Iu
aXNBc3luY1Njcm9sbGFibGVTdGlja3lMYXllcigqbGF5ZXIsICZlbmNsb3NpbmdUb3VjaFNjcm9s
bGFibGVMYXllcikgJiYgZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXItPmlzQ29tcG9zaXRl
ZCgpKTsKQEAgLTQ4MDAsNyArNDgwMCw3IEBAIHZvaWQgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5
ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzCiAgICAg
ICAgICAgICAgICAgc3RpY2t5Q29udGFpbmVyTWFwLmFkZChsYXllci0+YmFja2luZygpLT5ncmFw
aGljc0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5
ZXItPmJhY2tpbmcoKS0+c2Nyb2xsQ29udGFpbmVyTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChsYXllci0+cmVuZGVyZXIoKS5pc0Zp
eGVkUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgY29uc3RyYWludHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVG
aXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25zdHJhaW50
cyA9IG1ha2VVbmlxdWU8Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0
b3IuY29tcHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCBiZjY0NWNkNDFiODkxMjEyZDdmNWEzMDM4
NmVmOWNhNTRiZmE0NjAyLi44ZGQwMzliYWZkYTYzNTM4Y2UzMjEzZGMzMTM1NjBmYWE4YTRiZGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5oCkBAIC0xMDcsNiArMTA3LDcgQEAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25TZXQ8U2Nyb2xs
Q29vcmRpbmF0aW9uUm9sZT4gYWxsU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZXMoKQogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGNsYXNzIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRp
bmF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExlZ2Fj
eVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3IoQ2hyb21lQ2xpZW50JiBjaHJvbWVDbGll
bnQsIGJvb2wgY29vcmRpbmF0ZVZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMpCiAgICAgICAgIDog
bV9jaHJvbWVDbGllbnQoY2hyb21lQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4IDRiODZmZTJhZDE3NWRjZTg2
YWQzODUyYmRmYzE1MmZkMTMwOGQ0NWUuLjEyOGM5NmRhZTBiMzEwMDZjYTI1ZDVhNTZjNzIwYmM4
OTBkMzRmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0OjpkZXN0cm95TGF5ZXIoKQogdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpjcmVh
dGVMYXllcigpCiB7CiAgICAgQVNTRVJUKCFtX2xheWVyKTsKLSAgICBtX2xheWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJMYXllcj4oKnRoaXMpOworICAgIG1fbGF5ZXIgPSBtYWtlVW5pcXVl
PFJlbmRlckxheWVyPigqdGhpcyk7CiAgICAgc2V0SGFzTGF5ZXIodHJ1ZSk7CiAgICAgbV9sYXll
ci0+aW5zZXJ0T25seVRoaXNMYXllcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCBiYzU1MjdiOGM0NmE0ZGUwNjZmNjllNWEzMTBjODg2
ODE5NmZjMjNhLi4xYWFlMDlkMDBiMjZlYTNjYWRlYTg2NzJlMjc3OTI5YmZkMTdhNjJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtODksNyAr
ODksNyBAQCBpbnQgUmVuZGVyTGluZUJyZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5l
RWxlbWVudEJveD4gUmVuZGVyTGluZUJyZWFrOjpjcmVhdGVJbmxpbmVCb3goKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVy
TGluZUJyZWFrOjpzZXRJbmxpbmVCb3hXcmFwcGVyKElubGluZUVsZW1lbnRCb3gqIGlubGluZUJv
eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
bkZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxv
dy5jcHAKaW5kZXggOWJiOWE1MzlkNjY0MmRmOTAwMjZhNzgyYWY4Y2Y4NGRjNDlkYTJhOS4uNDEw
M2RhZDQ4NDRkZDI0YTMwMmE3MzJhZjIyMTlhYzkwMDAxY2JiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlck11bHRpQ29sdW1uRmxvdyk7
CiAKIFJlbmRlck11bHRpQ29sdW1uRmxvdzo6UmVuZGVyTXVsdGlDb2x1bW5GbG93KERvY3VtZW50
JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckZyYWdtZW50ZWRG
bG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKLSAgICAsIG1fc3Bhbm5lck1hcChzdGQ6Om1h
a2VfdW5pcXVlPFNwYW5uZXJNYXA+KCkpCisgICAgLCBtX3NwYW5uZXJNYXAobWFrZVVuaXF1ZTxT
cGFubmVyTWFwPigpKQogICAgICwgbV9sYXN0U2V0V29ya2VkT24obnVsbHB0cikKICAgICAsIG1f
Y29sdW1uQ291bnQoMSkKICAgICAsIG1fY29sdW1uV2lkdGgoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNGRhM2JkNzM3NzFiYTE3MTkwZWFjMzVkYTYz
OGUyNDNmMTkwMjkwNy4uMGJmNTE5M2RlNDg0NDViY2M2NzdlOTE0ZThhZDNkZjgxY2ViODJkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE4OTMsNyAr
MTg5Myw3IEBAIGNvbnN0IFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGEmIFJlbmRl
ck9iamVjdDo6cmFyZURhdGEoKSBjb25zdAogUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJl
RGF0YSYgUmVuZGVyT2JqZWN0OjplbnN1cmVSYXJlRGF0YSgpCiB7CiAgICAgc2V0SGFzUmFyZURh
dGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmVuc3VyZSh0aGlzLCBbXSB7IHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlck9iamVjdFJhcmVEYXRhPigpOyB9KS5pdGVyYXRv
ci0+dmFsdWU7CisgICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmVuc3VyZSh0aGlzLCBbXSB7IHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlck9iamVjdFJhcmVEYXRhPigpOyB9KS5pdGVyYXRvci0+dmFs
dWU7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVSYXJlRGF0YSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRl
eCA2ZDU2YjVlY2EyYzZiMjc2OGFmYmIyZDRjZmYwYWMwODgyZTlmZGM2Li4wZGZlMjgyNzY0ZjQw
OGI2MjBiZWY1ZDlmNThlODhhNmNjNzZjMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlclNuYXBzaG90dGVkUGx1Z0luKTsKIAog
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJFbWJlZGRlZE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKLSAgICAsIG1fc25hcHNo
b3RSZXNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAg
LCBtX3NuYXBzaG90UmVzb3VyY2UobWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQog
ewogICAgIG1fc25hcHNob3RSZXNvdXJjZS0+aW5pdGlhbGl6ZSgqdGhpcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCAxODZjYTg3MGVkMTA5MTNkNThi
ODU0OWViOTZkZTMzNmUzNDU1MzU5Li5lOTFhMTMzNzE5OTEyZDE4ZmE1NWUzNmQ4MzU1ODg1N2My
ZDE4YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTEz
Nyw5ICsxMzcsOSBAQCB2b2lkIFJlbmRlclRhYmxlOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eQogICAgICAgICAvLyBBY2NvcmRp
bmcgdG8gdGhlIENTUzIgc3BlYywgeW91IG9ubHkgdXNlIGZpeGVkIHRhYmxlIGxheW91dCBpZiBh
bgogICAgICAgICAvLyBleHBsaWNpdCB3aWR0aCBpcyBzcGVjaWZpZWQgb24gdGhlIHRhYmxlLiAg
QXV0byB3aWR0aCBpbXBsaWVzIGF1dG8gdGFibGUgbGF5b3V0LgogICAgICAgICBpZiAoc3R5bGUo
KS50YWJsZUxheW91dCgpID09IFRhYmxlTGF5b3V0VHlwZTo6Rml4ZWQgJiYgIXN0eWxlKCkubG9n
aWNhbFdpZHRoKCkuaXNBdXRvKCkpCi0gICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxGaXhlZFRhYmxlTGF5b3V0Pih0aGlzKTsKKyAgICAgICAgICAgIG1fdGFibGVM
YXlvdXQgPSBtYWtlVW5pcXVlPEZpeGVkVGFibGVMYXlvdXQ+KHRoaXMpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gc3RkOjptYWtlX3VuaXF1ZTxBdXRvVGFibGVM
YXlvdXQ+KHRoaXMpOworICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IG1ha2VVbmlxdWU8QXV0
b1RhYmxlTGF5b3V0Pih0aGlzKTsKICAgICB9CiAKICAgICAvLyBJZiBib3JkZXIgd2FzIGNoYW5n
ZWQsIGludmFsaWRhdGUgY29sbGFwc2VkIGJvcmRlcnMgY2FjaGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggYWFkMGMxNDdmMTFkMzliM2FkMTZjYWRkYzE1M2Mz
MjJlOTJkN2EwYS4uYjYzMDVkZTVmNjMxNmM0ZGIyNjBhNzk5Y2QxMTZiYmQxYWU1NDQ1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTMxMSw3ICsxMzExLDcg
QEAgdm9pZCBSZW5kZXJUZXh0OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lVGV4dEJveD4oKnRoaXMpOwogfQogCiB2b2lkIFJl
bmRlclRleHQ6OnBvc2l0aW9uTGluZUJveChJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94KQpAQCAtMTU0
NSw3ICsxNTQ1LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBl
ZENoYXJhY3Rlcih1bnNpZ25lZCBvZmZzZXRBZnRlckxhc3RUeXAKICAgICAgICAgcmV0dXJuOwog
ICAgIGF1dG8mIHNlY3VyZVRleHRUaW1lciA9IHNlY3VyZVRleHRUaW1lcnMoKS5hZGQodGhpcywg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2VjdXJlVGV4dFRpbWVyKQotICAg
ICAgICBzZWN1cmVUZXh0VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY3VyZVRleHRUaW1lcj4o
KnRoaXMpOworICAgICAgICBzZWN1cmVUZXh0VGltZXIgPSBtYWtlVW5pcXVlPFNlY3VyZVRleHRU
aW1lcj4oKnRoaXMpOwogICAgIHNlY3VyZVRleHRUaW1lci0+cmVzdGFydChvZmZzZXRBZnRlckxh
c3RUeXBlZENoYXJhY3Rlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAppbmRleCBjMTQ0NTFhMThlZWE3YTU3MWEyNzc3ODk4YTc5Y2M4YjQzZmYzMTQyLi41ZmVj
Njc4YzZiYjVkZjBlNDkyMmIwMTJjM2YyNjhkYmFiNGE3YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBSZW5kZXJWaWV3
OjpyZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiByZXBhaW50UmVjdCkgY29u
c3QKICAgICAvLyBGSVhNRTogTWF5YmUgdGhlcmUgc2hvdWxkIGJlIGEgcmVnaW9uIHR5cGUgdGhh
dCBkb2VzIHRoaXMgYXV0b21hdGljYWxseS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4
aW11bVJlcGFpbnRSZWdpb25HcmlkU2l6ZSA9IDE2ICogMTY7CiAgICAgaWYgKG1fYWNjdW11bGF0
ZWRSZXBhaW50UmVnaW9uLT5ncmlkU2l6ZSgpID4gbWF4aW11bVJlcGFpbnRSZWdpb25HcmlkU2l6
ZSkKLSAgICAgICAgbV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlZ2lvbj4obV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24tPmJvdW5kcygpKTsKKyAgICAgICAg
bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4obV9hY2N1bXVs
YXRlZFJlcGFpbnRSZWdpb24tPmJvdW5kcygpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjpmbHVz
aEFjY3VtdWxhdGVkUmVwYWludFJlZ2lvbigpIGNvbnN0CkBAIC03MjQsNyArNzI0LDcgQEAgYm9v
bCBSZW5kZXJWaWV3Ojp1c2VzQ29tcG9zaXRpbmcoKSBjb25zdAogUmVuZGVyTGF5ZXJDb21wb3Np
dG9yJiBSZW5kZXJWaWV3Ojpjb21wb3NpdG9yKCkKIHsKICAgICBpZiAoIW1fY29tcG9zaXRvcikK
LSAgICAgICAgbV9jb21wb3NpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllckNvbXBv
c2l0b3I+KCp0aGlzKTsKKyAgICAgICAgbV9jb21wb3NpdG9yID0gbWFrZVVuaXF1ZTxSZW5kZXJM
YXllckNvbXBvc2l0b3I+KCp0aGlzKTsKIAogICAgIHJldHVybiAqbV9jb21wb3NpdG9yOwogfQpA
QCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgUmVuZGVyVmlldzo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsCiBJbWFnZVF1YWxpdHlD
b250cm9sbGVyJiBSZW5kZXJWaWV3OjppbWFnZVF1YWxpdHlDb250cm9sbGVyKCkKIHsKICAgICBp
ZiAoIW1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcikKLSAgICAgICAgbV9pbWFnZVF1YWxpdHlDb250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVF1YWxpdHlDb250cm9sbGVyPigqdGhpcyk7
CisgICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8SW1hZ2VRdWFs
aXR5Q29udHJvbGxlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pbWFnZVF1YWxpdHlDb250cm9s
bGVyOwogfQogCkBAIC04MzQsNyArODM0LDcgQEAgUmVuZGVyVmlldzo6UmVwYWludFJlZ2lvbkFj
Y3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IoUmVuZGVyVmlldyogdmlldykKIAog
ICAgIG1fd2FzQWNjdW11bGF0aW5nUmVwYWludFJlZ2lvbiA9ICEhcm9vdFJlbmRlclZpZXctPm1f
YWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uOwogICAgIGlmICghbV93YXNBY2N1bXVsYXRpbmdSZXBh
aW50UmVnaW9uKQotICAgICAgICByb290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRS
ZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lvbj4oKTsKKyAgICAgICAgcm9vdFJlbmRlclZp
ZXctPm1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KCk7CiAg
ICAgbV9yb290VmlldyA9IG1ha2VXZWFrUHRyKCpyb290UmVuZGVyVmlldyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCBmZGNkNTljNTJjNWYz
MjhmNTIwOWYwMGMxZjhkODE2YWRjNWY3NjY4Li40NDU1ODQxYWYzMmZmMTUyNTJjZmEyOGVkOGE2
OWMzZTQ5ZjFmMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwCkBAIC0xMjksNyArMTI5LDcgQEAgZmxvYXQgUm9vdElubGluZUJveDo6cGxhY2VFbGxpcHNp
cyhjb25zdCBBdG9tU3RyaW5nJiBlbGxpcHNpc1N0ciwgIGJvb2wgbHRyLCBmbG8KICAgICAgICAg
Z0VsbGlwc2lzQm94TWFwID0gbmV3IEVsbGlwc2lzQm94TWFwKCk7CiAKICAgICBBU1NFUlQoIWhh
c0VsbGlwc2lzQm94KCkpOwotICAgIGF1dG8qIGVsbGlwc2lzQm94ID0gZ0VsbGlwc2lzQm94TWFw
LT5zZXQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxFbGxpcHNpc0JveD4oYmxvY2tGbG93KCksIGVs
bGlwc2lzU3RyLCB0aGlzLCBlbGxpcHNpc1dpZHRoIC0gKG1hcmt1cEJveCA/IG1hcmt1cEJveC0+
bG9naWNhbFdpZHRoKCkgOiAwKSwgbG9naWNhbEhlaWdodCgpLCB5KCksICFwcmV2Um9vdEJveCgp
LCBpc0hvcml6b250YWwoKSwgbWFya3VwQm94KSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAg
IGF1dG8qIGVsbGlwc2lzQm94ID0gZ0VsbGlwc2lzQm94TWFwLT5zZXQodGhpcywgbWFrZVVuaXF1
ZTxFbGxpcHNpc0JveD4oYmxvY2tGbG93KCksIGVsbGlwc2lzU3RyLCB0aGlzLCBlbGxpcHNpc1dp
ZHRoIC0gKG1hcmt1cEJveCA/IG1hcmt1cEJveC0+bG9naWNhbFdpZHRoKCkgOiAwKSwgbG9naWNh
bEhlaWdodCgpLCB5KCksICFwcmV2Um9vdEJveCgpLCBpc0hvcml6b250YWwoKSwgbWFya3VwQm94
KSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIHNldEhhc0VsbGlwc2lzQm94KHRydWUpOwog
ICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGFuIFJUTCB2ZXJzaW9uIG9mIHRoaXM/CiAgICAgaWYg
KGx0ciAmJiAoeCgpICsgbG9naWNhbFdpZHRoKCkgKyBlbGxpcHNpc1dpZHRoKSA8PSBibG9ja1Jp
Z2h0RWRnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKaW5kZXgg
N2RmMjgyODhhNGQ1NWMyYzdkMjZhZDRiYzAxNzZkMGI3NjE3ODM2NC4uMjQ3ZTU1YzA2OWU5ZmU4
ODFjYWY0YmZiYzJiNGFlZjE5ZTM2MTdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgUm9vdElubGluZUJveCA6IHB1
YmxpYyBJbmxpbmVGbG93Qm94LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Um9vdElubGluZUJveD4K
ICAgICAgICAgaWYgKG1fZmxvYXRzKQogICAgICAgICAgICAgbV9mbG9hdHMtPmFwcGVuZChtYWtl
V2Vha1B0cihmbG9hdGluZ0JveCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zsb2F0
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xlYW5MaW5lRmxvYXRMaXN0PigxLCBtYWtlV2Vha1B0cihm
bG9hdGluZ0JveCkpOworICAgICAgICAgICAgbV9mbG9hdHMgPSBtYWtlVW5pcXVlPENsZWFuTGlu
ZUZsb2F0TGlzdD4oMSwgbWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKICAgICB9CiAKICAgICB2
b2lkIHJlbW92ZUZsb2F0KFJlbmRlckJveCYgZmxvYXRpbmdCb3gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCmluZGV4IGVjNWU3MzU2YTY0ZDEy
NDlkZGExMTQ3ZThiYmEzMWY0NzkwYjRiZjIuLmI5YmFkMGEwOWYyOWJmN2FkYzlkMzMzZjRlODEx
YzNlYTFiOTNmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rp
b25SYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25S
YW5nZURhdGEuY3BwCkBAIC0xMzEsMTMgKzEzMSwxMyBAQCBzdGF0aWMgU2VsZWN0aW9uRGF0YSBj
b2xsZWN0KGNvbnN0IFNlbGVjdGlvblJhbmdlRGF0YTo6Q29udGV4dCYgc2VsZWN0aW9uLCBib29s
CiAgICAgd2hpbGUgKHN0YXJ0ICYmIHN0YXJ0ICE9IHN0b3ApIHsKICAgICAgICAgaWYgKGlzVmFs
aWRSZW5kZXJlckZvclNlbGVjdGlvbigqc3RhcnQsIHNlbGVjdGlvbikpIHsKICAgICAgICAgICAg
IC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIGxpbmUgZ2FwcyBhbmQgbWFy
Z2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxsLgotICAgICAgICAgICAgb2xk
U2VsZWN0aW9uRGF0YS5yZW5kZXJlcnMuc2V0KHN0YXJ0LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clNlbGVjdGlvbkluZm8+KCpzdGFydCwgdHJ1ZSkpOworICAgICAgICAgICAgb2xkU2VsZWN0aW9u
RGF0YS5yZW5kZXJlcnMuc2V0KHN0YXJ0LCBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+
KCpzdGFydCwgdHJ1ZSkpOwogICAgICAgICAgICAgaWYgKHJlcGFpbnREaWZmZXJlbmNlKSB7CiAg
ICAgICAgICAgICAgICAgZm9yIChhdXRvKiBibG9jayA9IGNvbnRhaW5pbmdCbG9ja0JlbG93Vmll
dygqc3RhcnQpOyBibG9jazsgYmxvY2sgPSBjb250YWluaW5nQmxvY2tCZWxvd1ZpZXcoKmJsb2Nr
KSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvJiBibG9ja0luZm8gPSBvbGRTZWxlY3Rpb25E
YXRhLmJsb2Nrcy5hZGQoYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckJsb2NrU2VsZWN0aW9uSW5mbz4oKmJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgYmxvY2tJ
bmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpibG9jayk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMTMsMTMgKzIxMywx
MyBAQCBJbnRSZWN0IFNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVjdEJvdW5kcyhDbGlwVG9WaXNp
YmxlQ29udGVudCBjbGlwVG9WaXNpYmxlQ29udAogICAgICAgICBpZiAoKHN0YXJ0LT5jYW5CZVNl
bGVjdGlvbkxlYWYoKSB8fCBzdGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuc3RhcnQoKSB8fCBz
dGFydCA9PSBtX3NlbGVjdGlvbkNvbnRleHQuZW5kKCkpCiAgICAgICAgICAgICAmJiBzdGFydC0+
c2VsZWN0aW9uU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvbk5vbmUpIHsKICAgICAg
ICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIGxpbmUgZ2FwcyBh
bmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxsLgotICAgICAgICAg
ICAgcmVuZGVyZXJzLnNldChzdGFydCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25J
bmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50
OjpZZXMpKTsKKyAgICAgICAgICAgIHJlbmRlcmVycy5zZXQoc3RhcnQsIG1ha2VVbmlxdWU8UmVu
ZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9W
aXNpYmxlQ29udGVudDo6WWVzKSk7CiAgICAgICAgICAgICBhdXRvKiBibG9jayA9IHN0YXJ0LT5j
b250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIHdoaWxlIChibG9jayAmJiAhaXM8UmVuZGVy
Vmlldz4oKmJsb2NrKSkgewogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
ZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gcmVuZGVyZXJzLmFkZChibG9jaywgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2NrLCBjbGlwVG9WaXNpYmxlQ29udGVu
dCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsKKyAgICAgICAgICAgICAgICBibG9ja0lu
Zm8gPSBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpibG9jaywgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olllcyk7CiAgICAgICAgICAgICAgICAg
YmxvY2sgPSBibG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6YXBwbHkoY29u
c3QgQ29udGV4dCYgbmV3U2VsZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1JlcAogICAgIHNlbGVj
dGlvbkl0ZXJhdG9yID0gU2VsZWN0aW9uSXRlcmF0b3Ioc2VsZWN0aW9uU3RhcnQpOwogICAgIGZv
ciAoYXV0byogY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uU3RhcnQ7IGN1cnJlbnRSZW5kZXJl
ciAmJiBjdXJyZW50UmVuZGVyZXIgIT0gc2VsZWN0aW9uRW5kOyBjdXJyZW50UmVuZGVyZXIgPSBz
ZWxlY3Rpb25JdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAgaWYgKGlzVmFsaWRSZW5kZXJlckZv
clNlbGVjdGlvbigqY3VycmVudFJlbmRlcmVyLCBtX3NlbGVjdGlvbkNvbnRleHQpKSB7Ci0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4gc2VsZWN0aW9uSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmN1cnJlbnRSZW5kZXJl
ciwgdHJ1ZSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5m
bz4gc2VsZWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmN1cnJl
bnRSZW5kZXJlciwgdHJ1ZSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHJlY3QgOiBzZWxlY3Rpb25JbmZvLT5jb2xsZWN0ZWRTZWxlY3Rpb25S
ZWN0cygpKQogICAgICAgICAgICAgICAgIG1fc2VsZWN0aW9uUmVjdEdhdGhlcmVyLmFkZFJlY3Qo
c2VsZWN0aW9uSW5mby0+cmVwYWludENvbnRhaW5lcigpLCByZWN0KTsKQEAgLTI5NCw3ICsyOTQs
NyBAQCB2b2lkIFNlbGVjdGlvblJhbmdlRGF0YTo6YXBwbHkoY29uc3QgQ29udGV4dCYgbmV3U2Vs
ZWN0aW9uLCBSZXBhaW50TW9kZSBibG9ja1JlcAogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSBuZXdTZWxlY3RlZEJs
b2Nrcy5hZGQoY29udGFpbmluZ0Jsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
ICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1Nl
bGVjdGlvbkluZm8+KCpjb250YWluaW5nQmxvY2spOworICAgICAgICAgICAgICAgIGJsb2NrSW5m
byA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqY29udGFpbmluZ0Jsb2Nr
KTsKICAgICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2sgPSBjb250YWluaW5nQmxvY2stPmNv
bnRhaW5pbmdCbG9jaygpOwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgICAgICAg
ICAgICAgIG1fc2VsZWN0aW9uUmVjdEdhdGhlcmVyLmFkZEdhcFJlY3RzKGJsb2NrSW5mby0+cmVw
YWludENvbnRhaW5lcigpLCBibG9ja0luZm8tPnJlY3RzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IDhjNzY2ZTZkZTJjNzRhZDAzNzk3
MzMzMWZjN2Y1YTQ3NDkwMTViOGUuLmMzNjJmNGU1N2IwMGY5Y2UzOWE3M2VjZTgxMWMyYzgzMmQ2
NTBiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5j
cHAKQEAgLTk5Nyw3ICs5OTcsNyBAQCBMYXlvdXQ6OkxheW91dChjb25zdCBSdW5WZWN0b3ImIHJ1
blZlY3RvciwgdW5zaWduZWQgbGluZUNvdW50LCBjb25zdCBSZW5kZXJCbG9jawogY29uc3QgUnVu
UmVzb2x2ZXImIExheW91dDo6cnVuUmVzb2x2ZXIoKSBjb25zdAogewogICAgIGlmICghbV9ydW5S
ZXNvbHZlcikKLSAgICAgICAgbV9ydW5SZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuUmVz
b2x2ZXI+KG1fYmxvY2tGbG93UmVuZGVyZXIsICp0aGlzKTsKKyAgICAgICAgbV9ydW5SZXNvbHZl
ciA9IG1ha2VVbmlxdWU8UnVuUmVzb2x2ZXI+KG1fYmxvY2tGbG93UmVuZGVyZXIsICp0aGlzKTsK
ICAgICByZXR1cm4gKm1fcnVuUmVzb2x2ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCAxYmY5OGU0
ZWViNDNiYTIyY2RhNGU2ZjVkM2JjMmE1ZjlmYzRiNGI3Li4wNjI1YjE2YmQ1NDMxOTczZWQzMWRl
OTk4YWVkODg5YjAxMmJhM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9p
ZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxh
eW91dCwgUGFpbnRJbmZvJiBwYWkKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBk
ZWJ1Z1NoYWRvdyA9IG51bGxwdHI7CiAgICAgaWYgKGZsb3cuc2V0dGluZ3MoKS5zaW1wbGVMaW5l
TGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRlYnVnU2hhZG93ID0gc3Rk
OjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dT
dHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAsIDIwMCkpOworICAgICAgICBkZWJ1
Z1NoYWRvdyA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoMCwgMCksIDEwLCAyMCwg
U2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3IoMCwgMjU1LCAwLCAyMDApKTsKICAgICAg
ICAgdGV4dFBhaW50ZXIuc2V0U2hhZG93KGRlYnVnU2hhZG93LmdldCgpKTsKICAgICB9CiAKQEAg
LTM0Nyw3ICszNDcsNyBAQCB2b2lkIGdlbmVyYXRlTGluZUJveFRyZWUoUmVuZGVyQmxvY2tGbG93
JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkKICAgICAgICAgQmlkaVJ1bkxpc3Q8QmlkaVJ1
bj4gYmlkaVJ1bnM7CiAgICAgICAgIGZvciAoYXV0byBpdCA9IHJhbmdlLmJlZ2luKCk7IGl0ICE9
IHJhbmdlLmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAgICBhdXRvIHJ1biA9ICppdDsKLSAgICAg
ICAgICAgIGJpZGlSdW5zLmFwcGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHJ1bi5s
b2NhbFN0YXJ0KCksIHJ1bi5sb2NhbEVuZCgpLCBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJ1
bi5yZW5kZXJlcigpKSwgYmlkaUNvbnRleHQucHRyKCksIFVfTEVGVF9UT19SSUdIVCkpOworICAg
ICAgICAgICAgYmlkaVJ1bnMuYXBwZW5kUnVuKG1ha2VVbmlxdWU8QmlkaVJ1bj4ocnVuLmxvY2Fs
U3RhcnQoKSwgcnVuLmxvY2FsRW5kKCksIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4ocnVuLnJl
bmRlcmVyKCkpLCBiaWRpQ29udGV4dC5wdHIoKSwgVV9MRUZUX1RPX1JJR0hUKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBMaW5lSW5mbyBsaW5lSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dEF1dG9TaXppbmcuY3BwCmluZGV4IDNiYTEzMGQ0NTU5ZDcyOTJkODkxZjU1M2NmMTQ4
MGY4NjZiYjJiYWQuLjRiNDNlNmFjYmUwZWVkYWY0ZWFmNGQyZTVkNWE0NDYzOTA2MDUzZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcApAQCAtMjI1LDcg
KzIyNSw3IEBAIHZvaWQgVGV4dEF1dG9TaXppbmc6OmFkZFRleHROb2RlKFRleHQmIG5vZGUsIGZs
b2F0IGNhbmRpZGF0ZVNpemUpCiAgICAgTE9HKFRleHRBdXRvc2l6aW5nLCAiIGFkZEF1dG9TaXpl
ZE5vZGUgJXAgY2FuZGlkYXRlU2l6ZT0lZiIsICZub2RlLCBjYW5kaWRhdGVTaXplKTsKICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fdGV4dE5vZGVzLmFkZDxUZXh0QXV0b1NpemluZ0hhc2hUcmFuc2xh
dG9yPihub2RlLnJlbmRlcmVyKCktPnN0eWxlKCksIG51bGxwdHIpOwogICAgIGlmIChhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8VGV4dEF1dG9TaXppbmdWYWx1ZT4oKTsKKyAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8VGV4dEF1dG9TaXppbmdWYWx1ZT4oKTsKICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGRUZXh0Tm9kZShub2RlLCBjYW5kaWRhdGVTaXpl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJy
ZWFrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3Bw
CmluZGV4IDJiMWMxZmEwM2NhMWM1NzU2OTAyNzdhNWU4MTI4NzEwMTBkNDQ2N2UuLmQxMTY2MTVh
NzI2YzVhMGE5NDNkOWI5ZjZlMDk0MGI5NWU2OTA5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBMaW5l
QnJlYWtlcjo6c2tpcExlYWRpbmdXaGl0ZXNwYWNlKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2
ZXIsIExpbmVJbmZvJgogICAgICAgICBpZiAob2JqZWN0LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
KSB7CiAgICAgICAgICAgICBzZXRTdGF0aWNQb3NpdGlvbnMobV9ibG9jaywgZG93bmNhc3Q8UmVu
ZGVyQm94PihvYmplY3QpLCB3aWR0aC5zaG91bGRJbmRlbnRUZXh0KCkpOwogICAgICAgICAgICAg
aWYgKG9iamVjdC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPEJp
ZGlSdW4+KDAsIDEsIG9iamVjdCwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSkp
OworICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMoKS5hcHBlbmRSdW4obWFrZVVuaXF1ZTxC
aWRpUnVuPigwLCAxLCBvYmplY3QsIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkp
KTsKICAgICAgICAgICAgICAgICBsaW5lSW5mby5pbmNyZW1lbnRSdW5zRnJvbUxlYWRpbmdXaGl0
ZXNwYWNlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0LmlzRmxv
YXRpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5jcHAKaW5kZXggNGIxNTk3ZTlmMjFjOWNkNGIyZjBkODgzNDc0NDc3NWYxZDhiZGUwMS4uZDUy
MDkyYjY4ZWQ4ZTJjOGZkYTUxNWM5MGNkNTIyMzU2ZDY1NWMyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAg
SW50U2hhcGVJbnRlcnZhbCBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvcjo6aW50ZXJ2YWxBdChpbnQg
eSkgY29uc3QKIHN0ZDo6dW5pcXVlX3B0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gUmFzdGVyU2hh
cGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyhpbnQgc2hhcGVNYXJnaW4p
IGNvbnN0CiB7CiAgICAgaW50IG1hcmdpbkludGVydmFsc1NpemUgPSAob2Zmc2V0KCkgPiBzaGFw
ZU1hcmdpbikgPyBzaXplKCkgOiBzaXplKCkgLSBvZmZzZXQoKSAqIDIgKyBzaGFwZU1hcmdpbiAq
IDI7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2
YWxzPihtYXJnaW5JbnRlcnZhbHNTaXplLCBzdGQ6Om1heChzaGFwZU1hcmdpbiwgb2Zmc2V0KCkp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1h
cmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFyZ2luLCBvZmZzZXQoKSkpOwogICAg
IE1hcmdpbkludGVydmFsR2VuZXJhdG9yIG1hcmdpbkludGVydmFsR2VuZXJhdG9yKHNoYXBlTWFy
Z2luKTsKIAogICAgIGZvciAoaW50IHkgPSBib3VuZHMoKS55KCk7IHkgPCBib3VuZHMoKS5tYXhZ
KCk7ICsreSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAppbmRl
eCAzMDIzMWEwYmUxYmJjNjNlNGJlM2QyNTA1MTJiZWQzZDE5NTk0MDk5Li5mNWVmZWZkZDMyYjMw
NTQ3YWRiZDhlYjA4ZjU0ZTYzYjAyNDBmZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcApAQCAtNDYsMjQgKzQ2LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUluc2V0U2hhcGUoY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYgYm91bmRzKQogewogICAgIEFTU0VSVChib3VuZHMucmVjdCgpLndpZHRo
KCkgPj0gMCAmJiBib3VuZHMucmVjdCgpLmhlaWdodCgpID49IDApOwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJveFNoYXBlPihib3VuZHMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJv
eFNoYXBlPihib3VuZHMpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVh
dGVDaXJjbGVTaGFwZShjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGZsb2F0IHJhZGl1cykKIHsK
ICAgICBBU1NFUlQocmFkaXVzID49IDApOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
Y3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGl1cywgY2VudGVyLnkoKSAt
IHJhZGl1cywgcmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIu
eCgpIC0gcmFkaXVzLCBjZW50ZXIueSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBG
bG9hdFNpemUocmFkaXVzLCByYWRpdXMpKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
aGFwZT4gY3JlYXRlRWxsaXBzZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgY29uc3Qg
RmxvYXRTaXplJiByYWRpaSkKIHsKICAgICBBU1NFUlQocmFkaWkud2lkdGgoKSA+PSAwICYmIHJh
ZGlpLmhlaWdodCgpID49IDApOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlY3Rhbmds
ZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGlpLndpZHRoKCksIGNlbnRlci55KCkg
LSByYWRpaS5oZWlnaHQoKSwgcmFkaWkud2lkdGgoKSoyLCByYWRpaS5oZWlnaHQoKSoyKSwgcmFk
aWkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2Vu
dGVyLngoKSAtIHJhZGlpLndpZHRoKCksIGNlbnRlci55KCkgLSByYWRpaS5oZWlnaHQoKSwgcmFk
aWkud2lkdGgoKSoyLCByYWRpaS5oZWlnaHQoKSoyKSwgcmFkaWkpOwogfQogCiBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVQb2x5Z29uU2hhcGUoc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxSdWxlKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvbHlnb25TaGFwZT4oV1RGTW92ZSh2ZXJ0aWNlcyksIGZp
bGxSdWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2x5Z29uU2hhcGU+KFdURk1vdmUodmVy
dGljZXMpLCBmaWxsUnVsZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRmxvYXRSZWN0IHBoeXNpY2Fs
UmVjdFRvTG9naWNhbChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxvZ2ljYWxCb3hIZWln
aHQsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUmIGJhc2lj
U2hhcGUsIGNvbnN0IExhCiAgICAgICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB2YWx1ZXMgPSBw
b2x5Z29uLnZhbHVlcygpOwogICAgICAgICBzaXplX3QgdmFsdWVzU2l6ZSA9IHZhbHVlcy5zaXpl
KCk7CiAgICAgICAgIEFTU0VSVCghKHZhbHVlc1NpemUgJSAyKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBtYWtlVW5pcXVlPFZlY3RvcjxGbG9h
dFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdmFsdWVzU2l6ZTsgaSArPSAyKSB7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHZlcnRleCgK
ICAgICAgICAgICAgICAgICBmbG9hdFZhbHVlRm9yTGVuZ3RoKHZhbHVlcy5hdChpKSwgYm94V2lk
dGgpLApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNy
ZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjCiAKICAgICBJ
bnRSZWN0IGltYWdlUmVjdCA9IHNuYXBwZWRJbnRSZWN0KGltYWdlUik7CiAgICAgSW50UmVjdCBt
YXJnaW5SZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7Ci0gICAgYXV0byBpbnRlcnZhbHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdo
dCgpLCAtbWFyZ2luUmVjdC55KCkpOworICAgIGF1dG8gaW50ZXJ2YWxzID0gbWFrZVVuaXF1ZTxS
YXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgp
KTsKICAgICAvLyBGSVhNRSAoMTQ5NDIwKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNv
bmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBV
bmFjY2VsZXJhdGVkKTsKIApAQCAtMjE4LDcgKzIxOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFw
ZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiBpbWFnZSwgZmxvYXQgdGhyZXNob2xk
LCBjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIHJhc3RlclNoYXBlID0gc3RkOjptYWtl
X3VuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUo
KSk7CisgICAgYXV0byByYXN0ZXJTaGFwZSA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGU+KFdURk1v
dmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwogICAgIHJhc3RlclNoYXBlLT5tX3dy
aXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2luID0gbWFy
Z2luOwogICAgIHJldHVybiByYXN0ZXJTaGFwZTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVCb3hTaGFwZShjb25zdCBSb3VuZGVkUmVjdCYg
cm91bmRlZFJlY3QsIFdyaQogCiAgICAgRmxvYXRSZWN0IHJlY3QoMCwgMCwgcm91bmRlZFJlY3Qu
cmVjdCgpLndpZHRoKCksIHJvdW5kZWRSZWN0LnJlY3QoKS5oZWlnaHQoKSk7CiAgICAgRmxvYXRS
b3VuZGVkUmVjdCBib3VuZHMocmVjdCwgcm91bmRlZFJlY3QucmFkaWkoKSk7Ci0gICAgYXV0byBz
aGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CisgICAgYXV0byBzaGFw
ZSA9IG1ha2VVbmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CiAgICAgc2hhcGUtPm1fd3JpdGluZ01v
ZGUgPSB3cml0aW5nTW9kZTsKICAgICBzaGFwZS0+bV9tYXJnaW4gPSBtYXJnaW47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKaW5k
ZXggY2Q5NGY4OWMwMmIwYjhjMTM1MTk0NTdlNDRkMGRkYWY2ZDg3ZjFmYS4uOTQ4NDMxNzE5NDdj
MDIzMDlhYjdmNGZiMWI5N2MyNjM4ODJlZTM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBj
bGFzcyBTaGFwZU91dHNpZGVJbmZvIGZpbmFsIHsKICAgICAgICAgSW5mb01hcCYgaW5mb01hcCA9
IFNoYXBlT3V0c2lkZUluZm86OmluZm9NYXAoKTsKICAgICAgICAgaWYgKFNoYXBlT3V0c2lkZUlu
Zm8qIGluZm8gPSBpbmZvTWFwLmdldCgma2V5KSkKICAgICAgICAgICAgIHJldHVybiAqaW5mbzsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBpbmZvTWFwLmFkZCgma2V5LCBzdGQ6Om1ha2VfdW5pcXVl
PFNoYXBlT3V0c2lkZUluZm8+KGtleSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGluZm9NYXAu
YWRkKCZrZXksIG1ha2VVbmlxdWU8U2hhcGVPdXRzaWRlSW5mbz4oa2V5KSk7CiAgICAgICAgIHJl
dHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAgICAgc3RhdGljIHZvaWQgcmVt
b3ZlSW5mbyhjb25zdCBSZW5kZXJCb3gmIGtleSkgeyBpbmZvTWFwKCkucmVtb3ZlKCZrZXkpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAppbmRl
eCAwYzk4ZjkxNjZmN2UxNTI5NzAzYmNkYjJjOGM4M2NjODBiYjdiZjI0Li43NDRjOTBiOGZiM2Y1
Mjc2OGE1MzhkMjEzNTgzNjJjYTYzNDgyN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTM1OCw3ICszNTgsNyBAQCBSZWY8QmFzaWNT
aGFwZT4gQmFzaWNTaGFwZVBhdGg6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmIGZyb20sIGRvdWJs
ZSBwcm9ncmVzcykgYwogCiAgICAgYXV0byYgZnJvbVBhdGggPSBkb3duY2FzdDxCYXNpY1NoYXBl
UGF0aD4oZnJvbSk7CiAKLSAgICBhdXRvIHJlc3VsdGluZ1BhdGhCeXRlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CisgICAgYXV0byByZXN1bHRpbmdQYXRoQnl0ZXMg
PSBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOwogICAgIGJ1aWxkQW5pbWF0ZWRTVkdQ
YXRoQnl0ZVN0cmVhbSgqZnJvbVBhdGgubV9ieXRlU3RyZWFtLCAqbV9ieXRlU3RyZWFtLCAqcmVz
dWx0aW5nUGF0aEJ5dGVzLCBwcm9ncmVzcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IEJhc2ljU2hh
cGVQYXRoOjpjcmVhdGUoV1RGTW92ZShyZXN1bHRpbmdQYXRoQnl0ZXMpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKaW5kZXggZTdiYjA2MTY1MDJkOTlk
NmRiNDM5MmJiNDY4YTlhYjQ2OWNlNDk0YS4uMmMxMmRkOWI0MGRkNDBiM2MwYmY2NzQ5MzIyYWUy
YjBmZDFlMDcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Nv
bnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnRE
YXRhLmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgSW1hZ2VDb250ZW50RGF0YSBmaW5hbCA6IHB1
YmxpYyBDb250ZW50RGF0YSB7CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29u
dGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBm
aW5hbAogICAgIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VD
b250ZW50RGF0YT4obV9pbWFnZS5jb3B5UmVmKCkpOworICAgICAgICBhdXRvIGltYWdlID0gbWFr
ZVVuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihtX2ltYWdlLmNvcHlSZWYoKSk7CiAgICAgICAgIGlt
YWdlLT5zZXRBbHRUZXh0KGFsdFRleHQoKSk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9
CkBAIC0xMjYsNyArMTI2LDcgQEAgY2xhc3MgVGV4dENvbnRlbnREYXRhIGZpbmFsIDogcHVibGlj
IENvbnRlbnREYXRhIHsKIAogcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBj
cmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPiht
X3RleHQpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFs
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29udGVudERhdGE+KG1fdGV4
dCk7IH0KIAogICAgIFN0cmluZyBtX3RleHQ7CiB9OwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNz
IENvdW50ZXJDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAgICAgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihzdGQ6Om1ha2VfdW5pcXVlPENv
dW50ZXJDb250ZW50Pihjb3VudGVyKCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q291
bnRlckNvbnRlbnREYXRhPihtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyKCkpKTsK
ICAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckNvbnRlbnQ+IG1fY291bnRlcjsK
QEAgLTE5MCw3ICsxOTAsNyBAQCBjbGFzcyBRdW90ZUNvbnRlbnREYXRhIGZpbmFsIDogcHVibGlj
IENvbnRlbnREYXRhIHsKIAogcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBj
cmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IGZpbmFsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4o
cXVvdGUoKSk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJu
YWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1
b3RlKCkpOyB9CiAKICAgICBRdW90ZVR5cGUgbV9xdW90ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmluZGV4IGYzZDkxZGM4ZGJjOGQ5ZTQ2YzYw
MWI5NTg0M2I5YTk1MmYzYjJkMWQuLjMwMDE0ZDA0ZjcwZmI5MTgxNzQyODc2MDNmZGVhYjcyMzk1
NjE0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3Bw
CkBAIC03Niw3ICs3Niw3IEBAIEZpbGxMYXllcjo6RmlsbExheWVyKEZpbGxMYXllclR5cGUgdHlw
ZSkKIH0KIAogRmlsbExheWVyOjpGaWxsTGF5ZXIoY29uc3QgRmlsbExheWVyJiBvKQotICAgIDog
bV9uZXh0KG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkg
OiBudWxscHRyKQorICAgIDogbV9uZXh0KG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxGaWxsTGF5ZXI+
KCpvLm1fbmV4dCkgOiBudWxscHRyKQogICAgICwgbV9pbWFnZShvLm1faW1hZ2UpCiAgICAgLCBt
X3hQb3NpdGlvbihvLm1feFBvc2l0aW9uKQogICAgICwgbV95UG9zaXRpb24oby5tX3lQb3NpdGlv
bikKQEAgLTExNyw3ICsxMTcsNyBAQCBGaWxsTGF5ZXI6On5GaWxsTGF5ZXIoKQogCiBGaWxsTGF5
ZXImIEZpbGxMYXllcjo6b3BlcmF0b3I9KGNvbnN0IEZpbGxMYXllciYgbykKIHsKLSAgICBtX25l
eHQgPSBvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDog
bnVsbHB0cjsKKyAgICBtX25leHQgPSBvLm1fbmV4dCA/IG1ha2VVbmlxdWU8RmlsbExheWVyPigq
by5tX25leHQpIDogbnVsbHB0cjsKIAogICAgIG1faW1hZ2UgPSBvLm1faW1hZ2U7CiAgICAgbV94
UG9zaXRpb24gPSBvLm1feFBvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMjQ5YmE0N2U1ODQzZWNjNjJlNmZkNGYyNmFmMWNm
NTM4YTE2M2Y5Yy4uZmI0M2MyMGU1Y2U5OWVjZTE5ZjQ1MmZkOWY4Nzk2NGQ4MTRiYjdhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0x
MDksNyArMTA5LDcgQEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNsb25lKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIAogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclN0eWxlPihzdHlsZSwgQ2xvbmUpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclN0eWxlPihzdHlsZSwgQ2xvbmUpOwogfQogCiBSZW5kZXJTdHlsZSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHls
ZSYgcGFyZW50U3R5bGUsIERpc3BsYXlUeXBlIGRpc3BsYXkpCkBAIC00MDksNyArNDA5LDcgQEAg
UmVuZGVyU3R5bGUqIFJlbmRlclN0eWxlOjphZGRDYWNoZWRQc2V1ZG9TdHlsZShzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IHBzZXUKICAgICBSZW5kZXJTdHlsZSogcmVzdWx0ID0gcHNldWRv
LmdldCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZFBzZXVkb1N0eWxlcykKLSAgICAgICAgbV9jYWNo
ZWRQc2V1ZG9TdHlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBzZXVkb1N0eWxlQ2FjaGU+KCk7Cisg
ICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gbWFrZVVuaXF1ZTxQc2V1ZG9TdHlsZUNhY2hl
PigpOwogCiAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPmFwcGVuZChXVEZNb3ZlKHBzZXVkbykp
OwogCkBAIC0xMDU4LDcgKzEwNTgsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjphZGRDdXN0b21QYWlu
dFdhdGNoUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGF1dG8mIGRhdGEgPSBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpOwogICAgIGlmICghZGF0YS5jdXN0b21QYWlu
dFdhdGNoZWRQcm9wZXJ0aWVzKQotICAgICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgZGF0
YS5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmlu
Zz4+KCk7CiAgICAgZGF0YS5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzLT5hZGQobmFtZSk7
CiB9CiAKQEAgLTEzMDEsNyArMTMwMSw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQo
UmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UsIGJvb2wgYWRkKQogewogICAgIGlmICghaW1hZ2Up
CiAgICAgICAgIHJldHVybjsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VD
b250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwoKSksIGFkZCk7CisgICAgc2V0Q29udGVu
dChtYWtlVW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkpLCBh
ZGQpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBib29sIGFkZCkKQEAgLTEzMTAsMTMgKzEzMTAsMTMgQEAgdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Q29udGVudChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQpCiAgICAgaWYgKGFkZCAm
JiBkYXRhLmNvbnRlbnQpIHsKICAgICAgICAgYXV0byYgbGFzdCA9IGxhc3RDb250ZW50KCpkYXRh
LmNvbnRlbnQpOwogICAgICAgICBpZiAoIWlzPFRleHRDb250ZW50RGF0YT4obGFzdCkpCi0gICAg
ICAgICAgICBsYXN0LnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0
cmluZykpOworICAgICAgICAgICAgbGFzdC5zZXROZXh0KG1ha2VVbmlxdWU8VGV4dENvbnRlbnRE
YXRhPihzdHJpbmcpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvJiB0ZXh0Q29u
dGVudCA9IGRvd25jYXN0PFRleHRDb250ZW50RGF0YT4obGFzdCk7CiAgICAgICAgICAgICB0ZXh0
Q29udGVudC5zZXRUZXh0KHRleHRDb250ZW50LnRleHQoKSArIHN0cmluZyk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewotICAgICAgICBkYXRhLmNvbnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRDb250ZW50RGF0YT4oc3RyaW5nKTsKKyAgICAgICAgZGF0YS5jb250ZW50ID0gbWFrZVVuaXF1
ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7CiAgICAgICAgIGF1dG8mIGFsdFRleHQgPSBkYXRh
LmFsdFRleHQ7CiAgICAgICAgIGlmICghYWx0VGV4dC5pc051bGwoKSkKICAgICAgICAgICAgIGRh
dGEuY29udGVudC0+c2V0QWx0VGV4dChhbHRUZXh0KTsKQEAgLTEzMjcsMTIgKzEzMjcsMTIgQEAg
dm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChzdGQ6OnVuaXF1ZV9wdHI8Q291bnRlckNvbnRl
bnQ+IGNvdW50ZXIsIGJvb2wgYWRkKQogewogICAgIGlmICghY291bnRlcikKICAgICAgICAgcmV0
dXJuOwotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+
KFdURk1vdmUoY291bnRlcikpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxDb3Vu
dGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRlcikpLCBhZGQpOwogfQogCiB2b2lkIFJlbmRl
clN0eWxlOjpzZXRDb250ZW50KFF1b3RlVHlwZSBxdW90ZSwgYm9vbCBhZGQpCiB7Ci0gICAgc2V0
Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKSwgYWRkKTsK
KyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBhZGQp
OwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50QWx0VGV4dChjb25zdCBTdHJpbmcm
IHN0cmluZykKQEAgLTE1NTEsNyArMTU1MSw3IEBAIENvdW50ZXJEaXJlY3RpdmVNYXAmIFJlbmRl
clN0eWxlOjphY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpCiB7CiAgICAgYXV0byYgbWFwID0gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jb3VudGVyRGlyZWN0aXZlczsKICAgICBpZiAo
IW1hcCkKLSAgICAgICAgbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFw
PigpOworICAgICAgICBtYXAgPSBtYWtlVW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCk7CiAg
ICAgcmV0dXJuICptYXA7CiB9CiAKQEAgLTE2NzEsMTQgKzE2NzEsMTQgQEAgdm9pZCBSZW5kZXJT
dHlsZTo6YWRqdXN0VHJhbnNpdGlvbnMoKQogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVu
c3VyZUFuaW1hdGlvbnMoKQogewogICAgIGlmICghbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS5hbmltYXRpb25zKQotICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LmFuaW1hdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgICAg
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucyA9IG1ha2VVbmlxdWU8
QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmFu
aW1hdGlvbnM7CiB9CiAKIEFuaW1hdGlvbkxpc3QmIFJlbmRlclN0eWxlOjplbnN1cmVUcmFuc2l0
aW9ucygpCiB7CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLnRyYW5z
aXRpb25zKQotICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLnRyYW5zaXRp
b25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigpOworICAgICAgICBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLnRyYW5zaXRpb25zID0gbWFrZVVuaXF1ZTxBbmltYXRp
b25MaXN0PigpOwogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dHJhbnNpdGlv
bnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdS
ZW5kZXJTdHlsZURlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1Jl
bmRlclN0eWxlRGVmcy5jcHAKaW5kZXggMjBiMmE4MTE0YjBjOGU5ZWJkNDgyNzA3OWE5ODIwZjJl
YzBkY2RjMi4uNmUzN2NmOGZiOGFiYTU1ZWMzMzBhOTYwMzNhOGE5NTRjN2NiMDRiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVm
cy5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCBTdHlsZVNoYWRvd1NWR0RhdGE6OlN0eWxlU2hhZG93
U1ZHRGF0YSgpCiAKIGlubGluZSBTdHlsZVNoYWRvd1NWR0RhdGE6OlN0eWxlU2hhZG93U1ZHRGF0
YShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEmIG90aGVyKQogICAgIDogUmVmQ291bnRlZDxTdHls
ZVNoYWRvd1NWR0RhdGE+KCkKLSAgICAsIHNoYWRvdyhvdGhlci5zaGFkb3cgPyBzdGQ6Om1ha2Vf
dW5pcXVlPFNoYWRvd0RhdGE+KCpvdGhlci5zaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIHNoYWRv
dyhvdGhlci5zaGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvdGhlci5zaGFkb3cpIDog
bnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NoYWRvd0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRv
d0RhdGEuY3BwCmluZGV4IDNkNjFjOTRjMDE2NjE2MDg1OGRhYmQ4NDA5ZmM0MDg2NzBlNTAxY2Eu
LmMxN2VhZjg1OWIwYmZhYTdkYWJjMDA4ZDRlNzQwZmM2MzBhNGI4MzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAg
U2hhZG93RGF0YTo6U2hhZG93RGF0YShjb25zdCBTaGFkb3dEYXRhJiBvKQogICAgICwgbV9jb2xv
cihvLm1fY29sb3IpCiAgICAgLCBtX3N0eWxlKG8ubV9zdHlsZSkKICAgICAsIG1faXNXZWJraXRC
b3hTaGFkb3coby5tX2lzV2Via2l0Qm94U2hhZG93KQotICAgICwgbV9uZXh0KG8ubV9uZXh0ID8g
c3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5tX25leHQpIDogbnVsbHB0cikKKyAgICAs
IG1fbmV4dChvLm1fbmV4dCA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8ubV9uZXh0KSA6IG51
bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRleCBhZDJjYmQ5NTdlZWY4MjU2MGNm
YjM1MmU5ZjUwYjM5ZTYzM2EyNmZmLi45NmRiYmEwMDdlNmE2NGE3ZDY5N2EyOWEyMWQ2MjFhZDQ0
NzU0YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgaW5saW5lIFN0
eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVS
YXJlSW5oZXJpdGVkRGEKICAgICAsIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3Ioby52aXNp
dGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKQogICAgICwgY2FyZXRDb2xvcihvLmNhcmV0Q29sb3Ip
CiAgICAgLCB2aXNpdGVkTGlua0NhcmV0Q29sb3Ioby52aXNpdGVkTGlua0NhcmV0Q29sb3IpCi0g
ICAgLCB0ZXh0U2hhZG93KG8udGV4dFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0
YT4oKm8udGV4dFNoYWRvdykgOiBudWxscHRyKQorICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFk
b3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0cikKICAg
ICAsIGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKQogICAgICwgaW5kZW50KG8uaW5kZW50KQogICAg
ICwgZWZmZWN0aXZlWm9vbShvLmVmZmVjdGl2ZVpvb20pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAK
aW5kZXggNmZiYjJiN2IwYzNlYjAzZTg2OWExZWFhYzkxNjExMTljOWM2MWU5Yi4uYmRkMDE5MTVh
YTI3OGRkNmE2NjQ4ZmY0YzNmYmRiM2ZjY2QxNDJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNw
cApAQCAtMTM5LDEzICsxMzksMTMgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIHNj
cm9sbFNuYXBBcmVhKG8uc2Nyb2xsU25hcEFyZWEpCiAjZW5kaWYKICAgICAsIGNvbnRlbnQoby5j
b250ZW50ID8gby5jb250ZW50LT5jbG9uZSgpIDogbnVsbHB0cikKLSAgICAsIGNvdW50ZXJEaXJl
Y3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJl
Y3RpdmVNYXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCisgICAgLCBjb3VudGVy
RGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVzID8gbWFrZVVuaXF1ZTxDb3VudGVyRGlyZWN0
aXZlTWFwPigqby5jb3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRyKQogICAgICwgYWx0VGV4dChv
LmFsdFRleHQpCi0gICAgLCBib3hTaGFkb3coby5ib3hTaGFkb3cgPyBzdGQ6Om1ha2VfdW5pcXVl
PFNoYWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBudWxscHRyKQorICAgICwgYm94U2hhZG93KG8u
Ym94U2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby5ib3hTaGFkb3cpIDogbnVsbHB0
cikKICAgICAsIHdpbGxDaGFuZ2Uoby53aWxsQ2hhbmdlKQogICAgICwgYm94UmVmbGVjdChvLmJv
eFJlZmxlY3QpCi0gICAgLCBhbmltYXRpb25zKG8uYW5pbWF0aW9ucyA/IHN0ZDo6bWFrZV91bmlx
dWU8QW5pbWF0aW9uTGlzdD4oKm8uYW5pbWF0aW9ucykgOiBudWxscHRyKQotICAgICwgdHJhbnNp
dGlvbnMoby50cmFuc2l0aW9ucyA/IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8u
dHJhbnNpdGlvbnMpIDogbnVsbHB0cikKKyAgICAsIGFuaW1hdGlvbnMoby5hbmltYXRpb25zID8g
bWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5hbmltYXRpb25zKSA6IG51bGxwdHIpCisgICAg
LCB0cmFuc2l0aW9ucyhvLnRyYW5zaXRpb25zID8gbWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0Pigq
by50cmFuc2l0aW9ucykgOiBudWxscHRyKQogICAgICwgbWFzayhvLm1hc2spCiAgICAgLCBtYXNr
Qm94SW1hZ2Uoby5tYXNrQm94SW1hZ2UpCiAgICAgLCBwYWdlU2l6ZShvLnBhZ2VTaXplKQpAQCAt
MTcwLDcgKzE3MCw3IEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAgLCBqdXN0aWZ5SXRl
bXMoby5qdXN0aWZ5SXRlbXMpCiAgICAgLCBqdXN0aWZ5U2VsZihvLmp1c3RpZnlTZWxmKQogICAg
ICwgY3VzdG9tUHJvcGVydGllcyhvLmN1c3RvbVByb3BlcnRpZXMpCi0gICAgLCBjdXN0b21QYWlu
dFdhdGNoZWRQcm9wZXJ0aWVzKG8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA/IHN0ZDo6
bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+Pigqby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0
aWVzKSA6IG51bGxwdHIpCisgICAgLCBjdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzKG8uY3Vz
dG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA/IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+Pigq
by5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzKSA6IG51bGxwdHIpCiAjaWYgRU5BQkxFKFBP
SU5URVJfRVZFTlRTKQogICAgICwgdG91Y2hBY3Rpb25zKG8udG91Y2hBY3Rpb25zKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmlu
ZGV4IDJjNmYzMTc4ZWViMjZjN2IyYzBkOTVhZTEwOGI3ZWZjYzZlMjJjNGUuLjI0Y2RlNGJkNjFl
NzE0YzIzMjNiOWU1Y2QyY2YyNjllMjg0NWY5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlbmRlclNW
R0ltYWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0
eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKICAgICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCiAgICAgLCBtX25l
ZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9pbWFnZVJlc291cmNlKG1h
a2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsKICAgICBpbWFnZVJlc291cmNlKCku
aW5pdGlhbGl6ZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHAKaW5kZXggM2MzMTA1NmQxY2FiMWZlYTEwNDkwNzgwZDAwYzhk
Y2QyYzc5ODA2OC4uYmExY2QwNTJkYWRhYTFjZTE4NDFjN2MyM2NhZjMzZmFhNGUzNDdlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcApA
QCAtNDEsNyArNDEsNyBAQCBSZW5kZXJTVkdJbmxpbmU6OlJlbmRlclNWR0lubGluZShTVkdHcmFw
aGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bAogCiBzdGQ6OnVuaXF1ZV9w
dHI8SW5saW5lRmxvd0JveD4gUmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KCkK
IHsKLSAgICBhdXRvIGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW5saW5lRmxvd0JveD4oKnRo
aXMpOworICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdJbmxpbmVGbG93Qm94PigqdGhpcyk7
CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAgIHJldHVybiBib3g7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmVUZXh0LmNwcAppbmRleCA2N2U2Zjk4OTdkMjc3NDRmZDQxMzNmZjI3NjcxNGM0ZTlkYTY2NWIw
Li5kYmY0OTAzZjg5ZjRkYzkyZWRmZjMwNTM5MjU4NjlmMzJlMmQ5OWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlbmRlclNWR0lubGluZVRleHQ6OnN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZQogCiBzdGQ6OnVuaXF1ZV9w
dHI8SW5saW5lVGV4dEJveD4gUmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7
Ci0gICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0lubGluZVRleHRCb3g+KCp0aGlz
KTsKKyAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZHSW5saW5lVGV4dEJveD4oKnRoaXMpOwog
ICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICByZXR1cm4gYm94Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcAppbmRleCAxYjNlZjI0Y2M5MmQyMDUyYTM0YWFkMjA4ODIzMzBlMWEx
MjNiODRmLi4xYWQyNjQ5NjQ2NzA5YzIzZjBkYjljZmFlNGI4NjNjMjQ3YjM2OTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVp
bGRlcj4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyhTVkdGaQogICAg
IEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9IGZpbHRlci50YXJnZXRCb3VuZGluZ0JveCgp
OwogCiAgICAgLy8gQWRkIGVmZmVjdHMgdG8gdGhlIGJ1aWxkZXIKLSAgICBhdXRvIGJ1aWxkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KFNvdXJjZUdyYXBoaWM6OmNyZWF0
ZShmaWx0ZXIpKTsKKyAgICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxk
ZXI+KFNvdXJjZUdyYXBoaWM6OmNyZWF0ZShmaWx0ZXIpKTsKICAgICBidWlsZGVyLT5zZXRQcmlt
aXRpdmVVbml0cyhmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSk7CiAgICAgYnVpbGRl
ci0+c2V0VGFyZ2V0Qm91bmRpbmdCb3godGFyZ2V0Qm91bmRpbmdCb3gpOwogICAgIApAQCAtMTIy
LDcgKzEyMiw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2Uo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgIHJldHVybiBmYWxz
ZTsgLy8gQWxyZWFkeSBidWlsdCwgb3Igd2UncmUgaW4gYSBjeWNsZSwgb3Igd2UncmUgbWFya2Vk
IGZvciByZW1vdmFsLiBSZWdhcmRsZXNzLCBqdXN0IGRvIG5vdGhpbmcgbW9yZSBub3cuCiAgICAg
fQogCi0gICAgYXV0byBmaWx0ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJEYXRhPigp
OworICAgIGF1dG8gZmlsdGVyRGF0YSA9IG1ha2VVbmlxdWU8RmlsdGVyRGF0YT4oKTsKICAgICBG
bG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3ggPSByZW5kZXJlci5vYmplY3RCb3VuZGluZ0JveCgp
OwogCiAgICAgZmlsdGVyRGF0YS0+Ym91bmRhcmllcyA9IFNWR0xlbmd0aENvbnRleHQ6OnJlc29s
dmVSZWN0YW5nbGU8U1ZHRmlsdGVyRWxlbWVudD4oJmZpbHRlckVsZW1lbnQoKSwgZmlsdGVyRWxl
bWVudCgpLmZpbHRlclVuaXRzKCksIHRhcmdldEJvdW5kaW5nQm94KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCmluZGV4IGQ4YWQwODA0NjZjNWM2ZDllZWNmMDc4Y2RmZjY0MjZjNjE0YTBjZTIuLjU1MmNl
NWEzM2E4MDYyZTZiZWUwYjA0YWUzZjE2MGYwOTllYjUyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBw
bHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuCiAKICAgICBhdXRv
JiBncmFkaWVudERhdGEgPSBtX2dyYWRpZW50TWFwLmFkZCgmcmVuZGVyZXIsIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWdyYWRpZW50RGF0YSkKLSAgICAgICAgZ3JhZGllbnRE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFkaWVudERhdGE+KCk7CisgICAgICAgIGdyYWRpZW50
RGF0YSA9IG1ha2VVbmlxdWU8R3JhZGllbnREYXRhPigpOwogCiAgICAgYm9vbCBpc1BhaW50aW5n
VGV4dCA9IHJlc291cmNlTW9kZS5jb250YWlucyhSZW5kZXJTVkdSZXNvdXJjZU1vZGU6OkFwcGx5
VG9UZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCBhYTU3NjVlZDM3OWI2YWIxYjk0NDcyNmY1
YjVlZTQ1NDM4M2M0NjRlLi40YzgxOWI5YmM1NWRjMmJmYTgyZmJiYzA5N2Y2Mzc1ODViNWIxMjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcApAQCAtNjEsNyArNjEsNyBAQCBib29sIFJlbmRlclNWR1Jlc291
cmNlTWFza2VyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZQogCiAgICAgYm9vbCBtaXNzaW5nTWFza2VyRGF0YSA9ICFtX21hc2tlci5jb250YWlucygm
cmVuZGVyZXIpOwogICAgIGlmIChtaXNzaW5nTWFza2VyRGF0YSkKLSAgICAgICAgbV9tYXNrZXIu
c2V0KCZyZW5kZXJlciwgc3RkOjptYWtlX3VuaXF1ZTxNYXNrZXJEYXRhPigpKTsKKyAgICAgICAg
bV9tYXNrZXIuc2V0KCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxNYXNrZXJEYXRhPigpKTsKIAogICAg
IE1hc2tlckRhdGEqIG1hc2tlckRhdGEgPSBtX21hc2tlci5nZXQoJnJlbmRlcmVyKTsKICAgICBB
ZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
YWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShyZW5kZXJl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmgKaW5kZXggMjllOGU3YzI0NzU2NTg3OTJlZTRlZDRlZDA4MjBmYWVlYzli
ZGMwYy4uZGYwMTdiYTFiZmMwY2NmN2FlYTkzYTNiYjJmN2ZjNzg4ZjY5NmM3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiAKIHN0cnVjdCBNYXNrZXJEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggY2MyY2JmY2YwZmU5YTU5ZWNlMTVmNTJmMzU3
MmRiNTlkMTYzMjBkNi4uMzFiYzVmMTkzMWJkYWU1MGFhYzY2MTM1OWZjMGEyNmYxNzg1ODZmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIFBhdHRlcm5EYXRhKiBSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgT3B0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQnVpbGQgcGF0dGVybi4K
LSAgICBhdXRvIHBhdHRlcm5EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsK
KyAgICBhdXRvIHBhdHRlcm5EYXRhID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsKICAgICBw
YXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZS5yZWxlYXNl
Tm9uTnVsbCgpLCB0cnVlLCB0cnVlKTsKIAogICAgIC8vIENvbXB1dGUgcGF0dGVybiBzcGFjZSB0
cmFuc2Zvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5jcHAKaW5kZXggMzRiMGFlNzViZGMwMDU2NTc2ZDUxMzgwMTg1ZWZlNmJjNzJjNzA2
ZS4uNmE2NzExOGZmMWIyNThiMzAzYzk1NjM4NTkzZjQ3NGVlODliYmU3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgUmVuZGVyU1ZHU2hhcGU6On5SZW5kZXJTVkdTaGFwZSgpID0gZGVmYXVsdDsKIAogdm9p
ZCBSZW5kZXJTVkdTaGFwZTo6dXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpCiB7Ci0gICAgbV9wYXRo
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXRoPihwYXRoRnJvbUdyYXBoaWNzRWxlbWVudCgmZ3JhcGhp
Y3NFbGVtZW50KCkpKTsKKyAgICBtX3BhdGggPSBtYWtlVW5pcXVlPFBhdGg+KHBhdGhGcm9tR3Jh
cGhpY3NFbGVtZW50KCZncmFwaGljc0VsZW1lbnQoKSkpOwogICAgIHByb2Nlc3NNYXJrZXJQb3Np
dGlvbnMoKTsKIAogICAgIG1fZmlsbEJvdW5kaW5nQm94ID0gY2FsY3VsYXRlT2JqZWN0Qm91bmRp
bmdCb3goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNw
cAppbmRleCBiZjc4NjQ0M2RkZDYwZDYyMWJjZDU3OWI4NzcwZWRjZDkxZDI5ZmE5Li45YzczN2Nh
ZmY4YjkyNzZjYzQxMDYwMmY1NzlhOWYzNjRlNWEwOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCBT
VkdSZXNvdXJjZXM6OnNldENsaXBwZXIoUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVy
KQogICAgIEFTU0VSVChjbGlwcGVyLT5yZXNvdXJjZVR5cGUoKSA9PSBDbGlwcGVyUmVzb3VyY2VU
eXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1h
c2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5p
cXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YS0+Y2xpcHBlciA9IGNsaXBwZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01MjksNyAr
NTI5LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldEZpbHRlcihSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlciogZmlsdGVyKQogICAgIEFTU0VSVChmaWx0ZXItPnJlc291cmNlVHlwZSgpID09IEZpbHRl
clJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpCi0g
ICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhPigpOworICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRh
ID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKIAogICAgIG1fY2xpcHBl
ckZpbHRlck1hc2tlckRhdGEtPmZpbHRlciA9IGZpbHRlcjsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTU1MCw3ICs1NTAsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFya2VyU3RhcnQoUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlclN0YXJ0KQogICAgIEFTU0VSVChtYXJrZXJTdGFydC0+
cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9tYXJr
ZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtlckRh
dGE+KCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9IG1ha2VVbmlxdWU8TWFya2VyRGF0YT4oKTsK
IAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyU3RhcnQgPSBtYXJrZXJTdGFydDsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTU3MSw3ICs1NzEsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFya2Vy
TWlkKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJNaWQpCiAgICAgQVNTRVJUKG1hcmtl
ck1pZC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICgh
bV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE1h
cmtlckRhdGE+KCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9IG1ha2VVbmlxdWU8TWFya2VyRGF0
YT4oKTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyTWlkID0gbWFya2VyTWlkOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtNTkyLDcgKzU5Miw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJr
ZXJFbmQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlckVuZCkKICAgICBBU1NFUlQobWFy
a2VyRW5kLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYg
KCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJE
YXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJFbmQgPSBtYXJrZXJFbmQ7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC02MTMsNyArNjEzLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1h
c2tlcihSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyKQogICAgIEFTU0VSVChtYXNrZXIt
PnJlc291cmNlVHlwZSgpID09IE1hc2tlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fY2xp
cHBlckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOworICAgICAgICBt
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPm1hc2tlciA9IG1hc2tl
cjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBib29sIFNWR1Jlc291cmNl
czo6c2V0RmlsbChSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogZmlsbCkKICAgICAgICAgICAg
fHwgZmlsbC0+cmVzb3VyY2VUeXBlKCkgPT0gUmFkaWFsR3JhZGllbnRSZXNvdXJjZVR5cGUpOwog
CiAgICAgaWYgKCFtX2ZpbGxTdHJva2VEYXRhKQotICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKKyAgICAgICAgbV9maWxsU3Ryb2tl
RGF0YSA9IG1ha2VVbmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CiAKICAgICBtX2ZpbGxTdHJva2VE
YXRhLT5maWxsID0gZmlsbDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY1OSw3ICs2NTksNyBAQCBi
b29sIFNWR1Jlc291cmNlczo6c2V0U3Ryb2tlKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBz
dHJva2UpCiAgICAgICAgICAgIHx8IHN0cm9rZS0+cmVzb3VyY2VUeXBlKCkgPT0gUmFkaWFsR3Jh
ZGllbnRSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2ZpbGxTdHJva2VEYXRhKQotICAgICAg
ICBtX2ZpbGxTdHJva2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsK
KyAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IG1ha2VVbmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7
CiAKICAgICBtX2ZpbGxTdHJva2VEYXRhLT5zdHJva2UgPSBzdHJva2U7CiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
c0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2Fj
aGUuY3BwCmluZGV4IDE5MTk1YWExZGFiYzY2ZTRiMzU2NTk3MmVjOTFmODk0NzdmNDAzOWIuLjFl
ZWI3OGY1N2IzZWJiMzFiNGNkZThlNTMwMmRkZTA5ZTA0OGMwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5kZXJlcihS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QKICAgICBBU1NFUlQoIW1fY2FjaGUuY29udGFp
bnMoJnJlbmRlcmVyKSk7CiAKICAgICAvLyBCdWlsZCBhIGxpc3Qgb2YgYWxsIHJlc291cmNlcyBh
c3NvY2lhdGVkIHdpdGggdGhlIHBhc3NlZCBSZW5kZXJPYmplY3QKLSAgICBhdXRvIG5ld1Jlc291
cmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUmVzb3VyY2VzPigpOworICAgIGF1dG8gbmV3UmVz
b3VyY2VzID0gbWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7CiAgICAgaWYgKCFuZXdSZXNvdXJj
ZXMtPmJ1aWxkQ2FjaGVkUmVzb3VyY2VzKHJlbmRlcmVyLCBzdHlsZSkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0
cmljc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0
cmljc0J1aWxkZXIuY3BwCmluZGV4IDMyNDEwMjU4NGMxZjExM2QwZWVkMzMyMTRhNjdmNTUzNGFi
MGY1OWEuLjgxMGEwYjg4MGE4YWE0ZGFlMDJmYWI0NDZhOTQxZWRkOWM1YTcxZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRl
ci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6aW5p
dGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcihSZW5kZXJTVkdJbmxpbgogICAgIGlm
IChtX2lzQ29tcGxleFRleHQpCiAgICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IG51bGxw
dHI7CiAgICAgZWxzZQotICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRGb250LCBtX3J1bik7CisgICAgICAgIG1fc2lt
cGxlV2lkdGhJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2lkdGhJdGVyYXRvcj4oJnNjYWxlZEZvbnQs
IG1fcnVuKTsKIH0KIAogc3RydWN0IE1lYXN1cmVUZXh0RGF0YSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAppbmRl
eCBkMzdiZWU4Y2JjZTU1NjE1MTFiMjRlMzY0ZTFhZjY0YWFkN2FhNzVkLi5lNmIyNzMyMGQ5MmZl
ODU2ZDgzNzQxMDhlZDk1NDJlMDkxZWVhZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKQEAgLTEyMiwyMiAr
MTIyLDIyIEBAIHN0YXRpYyB2b2lkIGdldElubGluZVJ1bihSZW5kZXJPYmplY3QqIHN0YXJ0LCBS
ZW5kZXJPYmplY3QqIGJvdW5kYXJ5LCBSZW5kZXJPYmplCiAKIFJlbmRlclRyZWVCdWlsZGVyOjpS
ZW5kZXJUcmVlQnVpbGRlcihSZW5kZXJWaWV3JiB2aWV3KQogICAgIDogbV92aWV3KHZpZXcpCi0g
ICAgLCBtX2ZpcnN0TGV0dGVyQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEZpcnN0TGV0dGVyPigq
dGhpcykpCi0gICAgLCBtX2xpc3RCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8TGlzdD4oKnRoaXMp
KQotICAgICwgbV9tdWx0aUNvbHVtbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxNdWx0aUNvbHVt
bj4oKnRoaXMpKQotICAgICwgbV90YWJsZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxUYWJsZT4o
KnRoaXMpKQotICAgICwgbV9ydWJ5QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPFJ1Ynk+KCp0aGlz
KSkKLSAgICAsIG1fZm9ybUNvbnRyb2xzQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEZvcm1Db250
cm9scz4oKnRoaXMpKQotICAgICwgbV9ibG9ja0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9j
az4oKnRoaXMpKQotICAgICwgbV9ibG9ja0Zsb3dCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Qmxv
Y2tGbG93PigqdGhpcykpCi0gICAgLCBtX2lubGluZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxJ
bmxpbmU+KCp0aGlzKSkKLSAgICAsIG1fc3ZnQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPFNWRz4o
KnRoaXMpKQorICAgICwgbV9maXJzdExldHRlckJ1aWxkZXIobWFrZVVuaXF1ZTxGaXJzdExldHRl
cj4oKnRoaXMpKQorICAgICwgbV9saXN0QnVpbGRlcihtYWtlVW5pcXVlPExpc3Q+KCp0aGlzKSkK
KyAgICAsIG1fbXVsdGlDb2x1bW5CdWlsZGVyKG1ha2VVbmlxdWU8TXVsdGlDb2x1bW4+KCp0aGlz
KSkKKyAgICAsIG1fdGFibGVCdWlsZGVyKG1ha2VVbmlxdWU8VGFibGU+KCp0aGlzKSkKKyAgICAs
IG1fcnVieUJ1aWxkZXIobWFrZVVuaXF1ZTxSdWJ5PigqdGhpcykpCisgICAgLCBtX2Zvcm1Db250
cm9sc0J1aWxkZXIobWFrZVVuaXF1ZTxGb3JtQ29udHJvbHM+KCp0aGlzKSkKKyAgICAsIG1fYmxv
Y2tCdWlsZGVyKG1ha2VVbmlxdWU8QmxvY2s+KCp0aGlzKSkKKyAgICAsIG1fYmxvY2tGbG93QnVp
bGRlcihtYWtlVW5pcXVlPEJsb2NrRmxvdz4oKnRoaXMpKQorICAgICwgbV9pbmxpbmVCdWlsZGVy
KG1ha2VVbmlxdWU8SW5saW5lPigqdGhpcykpCisgICAgLCBtX3N2Z0J1aWxkZXIobWFrZVVuaXF1
ZTxTVkc+KCp0aGlzKSkKICNpZiBFTkFCTEUoTUFUSE1MKQotICAgICwgbV9tYXRoTUxCdWlsZGVy
KHN0ZDo6bWFrZV91bmlxdWU8TWF0aE1MPigqdGhpcykpCisgICAgLCBtX21hdGhNTEJ1aWxkZXIo
bWFrZVVuaXF1ZTxNYXRoTUw+KCp0aGlzKSkKICNlbmRpZgotICAgICwgbV9jb250aW51YXRpb25C
dWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29udGludWF0aW9uPigqdGhpcykpCisgICAgLCBtX2Nv
bnRpbnVhdGlvbkJ1aWxkZXIobWFrZVVuaXF1ZTxDb250aW51YXRpb24+KCp0aGlzKSkKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxTY3JlZW5CdWlsZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8RnVsbFNjcmVlbj4oKnRoaXMpKQorICAgICwgbV9mdWxsU2NyZWVuQnVpbGRlciht
YWtlVW5pcXVlPEZ1bGxTY3JlZW4+KCp0aGlzKSkKICNlbmRpZgogewogICAgIFJFTEVBU0VfQVNT
RVJUKCFzX2N1cnJlbnQgfHwgJm1fdmlldyAhPSAmc19jdXJyZW50LT5tX3ZpZXcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRl
ci5jcHAKaW5kZXggOWE5OGQyNWMzMmI5MzY0YjQ2YTZhZWNmYzNjZmZkYzZjNDY2ZjRkMi4uYjlk
MjA3ZjdkZmQzMjQ2ZmUwMzA4NmM4NGNhMjAxYmNiN2I5MTljOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBA
IC03MSw3ICs3MSw3IEBAIFJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqCiAKIFJlbmRlclRyZWVVcGRh
dGVyOjpSZW5kZXJUcmVlVXBkYXRlcihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3Vt
ZW50KGRvY3VtZW50KQotICAgICwgbV9nZW5lcmF0ZWRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8
R2VuZXJhdGVkQ29udGVudD4oKnRoaXMpKQorICAgICwgbV9nZW5lcmF0ZWRDb250ZW50KG1ha2VV
bmlxdWU8R2VuZXJhdGVkQ29udGVudD4oKnRoaXMpKQogICAgICwgbV9idWlsZGVyKHJlbmRlclZp
ZXcoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRC
cmlkZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAppbmRleCA3
ZmU3ZjY4NzMyMDQxMGVmMDQ4Mzg3ZDQ4MWY5MjdiMTJjMjM4M2FjLi5iOWM3MmViODgwZTliYjg3
NTk4ZjQxNDQwNzdkMDIzMDE2NjY1YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBs
YXkvVXNlcklucHV0QnJpZGdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1
dEJyaWRnZS5oCkBAIC00OSw2ICs0OSw3IEBAIGVudW0gY2xhc3MgSW5wdXRTb3VyY2UgewogfTsK
IAogY2xhc3MgVXNlcklucHV0QnJpZGdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVc2VySW5wdXRCcmlkZ2UpOwogcHVibGljOgogICAg
IFVzZXJJbnB1dEJyaWRnZShQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUludmFsaWRhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxp
ZGF0b3IuY3BwCmluZGV4IGRhZTExY2IyZjYyODk5MTg0NTNhMTI4MDlhZTQzYjgxMjRiNmIxMmIu
LjZkNjk1YTY2MGQwZTRlMDQ1YTI2ZGFiZTMzMzFlY2EyNmZhZDJlYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBi
b29sIHNob3VsZERpcnR5QWxsU3R5bGUoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50cyo+
JiBzaGVldHMpCiB9CiAKIEludmFsaWRhdG9yOjpJbnZhbGlkYXRvcihjb25zdCBWZWN0b3I8U3R5
bGVTaGVldENvbnRlbnRzKj4mIHNoZWV0cywgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVk
aWFRdWVyeUV2YWx1YXRvcikKLSAgICA6IG1fb3duZWRSdWxlU2V0KHN0ZDo6bWFrZV91bmlxdWU8
UnVsZVNldD4oKSkKKyAgICA6IG1fb3duZWRSdWxlU2V0KG1ha2VVbmlxdWU8UnVsZVNldD4oKSkK
ICAgICAsIG1fcnVsZVNldCgqbV9vd25lZFJ1bGVTZXQpCiAgICAgLCBtX2RpcnRpZXNBbGxTdHls
ZShzaG91bGREaXJ0eUFsbFN0eWxlKHNoZWV0cykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlbGF0aW9ucy5jcHAKaW5kZXggNGQ4MTQ4YjRlMzFkNzRkNmEwYTUxNzU0ZGVlNWVhYjgwNzU5
YWJhYS4uMDYyZDU5NjRkNzdlYzVkYjgzYjNmNDFhY2JhYTg3ZWZjZTk4ZGQ2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcApAQCAtNDAsNyArNDAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVsYXRpb25zPiBjb21taXRSZWxhdGlvbnNUb1JlbmRlclN0eWxlKFJlbmRlclN0
eWxlJiBzdHlsZSwgY29ucwogCiAgICAgYXV0byBhcHBlbmRTdHlsZVJlbGF0aW9uID0gWyZyZW1h
aW5pbmdSZWxhdGlvbnNdIChjb25zdCBSZWxhdGlvbiYgcmVsYXRpb24pIHsKICAgICAgICAgaWYg
KCFyZW1haW5pbmdSZWxhdGlvbnMpCi0gICAgICAgICAgICByZW1haW5pbmdSZWxhdGlvbnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbGF0aW9ucz4oKTsKKyAgICAgICAgICAgIHJlbWFpbmluZ1JlbGF0
aW9ucyA9IG1ha2VVbmlxdWU8UmVsYXRpb25zPigpOwogICAgICAgICByZW1haW5pbmdSZWxhdGlv
bnMtPmFwcGVuZChyZWxhdGlvbik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
LmNwcAppbmRleCA5ZjBkMWFkNzQ5MGJmZWFiMjQwN2NlN2JjODhiMDk1MTE2ZDBiMjIyLi5kY2I2
NWJjMDljMzQ3NzliNjNhMjkzMjRlMjRkMzcyYmZjNmEyM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBTdHlsZVJlc29sdmVyJiBTY29wZTo6cmVz
b2x2ZXIoKQogICAgIGlmICghbV9yZXNvbHZlcikgewogICAgICAgICBTZXRGb3JTY29wZTxib29s
PiBpc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1faXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIsIHRy
dWUgfTsKIAotICAgICAgICBtX3Jlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVJlc29s
dmVyPihtX2RvY3VtZW50KTsKKyAgICAgICAgbV9yZXNvbHZlciA9IG1ha2VVbmlxdWU8U3R5bGVS
ZXNvbHZlcj4obV9kb2N1bWVudCk7CiAKICAgICAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsKICAg
ICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7CkBAIC01
NjMsNyArNTYzLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gU2NvcGU6
OmFjdGl2ZVN0eWxlU2hlZXRzRm9ySW5zcGVjdG9yKCkKIGJvb2wgU2NvcGU6OmFjdGl2ZVN0eWxl
U2hlZXRzQ29udGFpbnMoY29uc3QgQ1NTU3R5bGVTaGVldCogc2hlZXQpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXApIHsKLSAg
ICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwID0gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IENTU1N0eWxlU2hlZXQqPj4oKTsKKyAgICAgICAg
bV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwID0gbWFrZVVuaXF1
ZTxIYXNoU2V0PGNvbnN0IENTU1N0eWxlU2hlZXQqPj4oKTsKICAgICAgICAgZm9yIChhdXRvJiBh
Y3RpdmVTdHlsZVNoZWV0IDogbV9hY3RpdmVTdHlsZVNoZWV0cykKICAgICAgICAgICAgIG1fd2Vh
a0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cC0+YWRkKGFjdGl2ZVN0eWxl
U2hlZXQuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29s
dmVyLmNwcAppbmRleCA4NDZhMjMxYWQyYjE4YjVkN2YyOTQ5MDE2ZDA5ZjIyM2RkNjllODhiLi5h
MDBmNGZlMGY0Y2NiNTJkZDgzMWE5NGUyNmE1ODY0ZTVjMWI3OTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC01NDgsNyArNTQ4LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlKCkKIAogICAgIG1fZGlkU2Vl
UGVuZGluZ1N0eWxlc2hlZXQgPSBtX2RvY3VtZW50LnN0eWxlU2NvcGUoKS5oYXNQZW5kaW5nU2hl
ZXRzQmVmb3JlQm9keSgpOwogCi0gICAgbV91cGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0
ZT4obV9kb2N1bWVudCk7CisgICAgbV91cGRhdGUgPSBtYWtlVW5pcXVlPFVwZGF0ZT4obV9kb2N1
bWVudCk7CiAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChhZG9wdFJlZigqbmV3IFNjb3BlKG1fZG9j
dW1lbnQpKSk7CiAgICAgbV9wYXJlbnRTdGFjay5hcHBlbmQoUGFyZW50KG1fZG9jdW1lbnQpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCBi
YzUxNDM0YjBiMmI4ZTBiZjc3ZTU3YTRhNzZlNGQ0YmNlZWU5OTY1Li4yNWYzODYzZDA3OTU0YWM4
ZDZhNjNlNjg2NGExZjA3NmIwZDUxYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3VtZW50
JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3Jlc291cmNl
c0NhY2hlKHN0ZDo6bWFrZV91bmlxdWU8U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCisgICAgLCBtX3Jl
c291cmNlc0NhY2hlKG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCiAgICAgLCBtX2Fy
ZUFuaW1hdGlvbnNQYXVzZWQoIWRvY3VtZW50LnBhZ2UoKSB8fCAhZG9jdW1lbnQucGFnZSgpLT5p
c1Zpc2libGUoKSkKIHsKIH0KQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBFbGVtZW50
JiBlbAogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYWRkKGlkLCBudWxs
cHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFbGVtZW50cz4oKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UGVuZGluZ0VsZW1lbnRzPigpOwog
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZCgmZWxlbWVudCk7CiAKICAgICBlbGVtZW50
LnNldEhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTI3OSw3ICsyNzksNyBAQCBIYXNoU2V0PFNW
R0VsZW1lbnQqPiogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpzZXRPZkVsZW1lbnRzUmVmZXJlbmNp
bmdUYXJnZXQoU1ZHRQogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZl
cmVuY2luZ1RhcmdldChTVkdFbGVtZW50JiByZWZlcmVuY2luZ0VsZW1lbnQsIFNWR0VsZW1lbnQm
IHJlZmVyZW5jZWRFbGVtZW50KQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9lbGVtZW50RGVwZW5k
ZW5jaWVzLmVuc3VyZSgmcmVmZXJlbmNlZEVsZW1lbnQsIFsmcmVmZXJlbmNpbmdFbGVtZW50XSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+Pihz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZHRWxlbWVudCo+IHsgJnJlZmVyZW5jaW5nRWxlbWVudCB9
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SGFzaFNldDxTVkdFbGVtZW50Kj4+KHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVmZXJlbmNpbmdFbGVtZW50IH0pOwog
ICAgIH0pOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUtPmFkZCgmcmVmZXJlbmNpbmdFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAppbmRleCBhODA5NmRkYWRhODFlYWQ2YTdhMWVhMzI0Y2Q4NTA2N2Y1YzBiMjhiLi5l
NGRlM2I3NDlmMGEwMDM5YmM1YzRjZmNkMDhlMTkzOTZjZDY1NjI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBIYXNo
TWFwPEF0b21TdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4gY3JlYXRlQXR0cmlidXRlTmFtZVQK
IFNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIDogU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Q3JlYXRlU1ZHRWxlbWVudCkKICAgICAsIFNWR0xhbmdTcGFjZSh0aGlzKQotICAgICwgbV9wcm9w
ZXJ0eUFuaW1hdG9yRmFjdG9yeShzdGQ6Om1ha2VfdW5pcXVlPFNWR1Byb3BlcnR5QW5pbWF0b3JG
YWN0b3J5PigpKQorICAgICwgbV9wcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeShtYWtlVW5pcXVlPFNW
R1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5PigpKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewpAQCAtMjAzLDcg
KzIwMyw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2Ug
Y2hhbmdlKQogU1ZHRWxlbWVudFJhcmVEYXRhJiBTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJlRGF0
YSgpCiB7CiAgICAgaWYgKCFtX3N2Z1JhcmVEYXRhKQotICAgICAgICBtX3N2Z1JhcmVEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdFbGVtZW50UmFyZURhdGE+KCk7CisgICAgICAgIG1fc3ZnUmFy
ZURhdGEgPSBtYWtlVW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0YT4oKTsKICAgICByZXR1cm4gKm1f
c3ZnUmFyZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5j
cHAKaW5kZXggYTc1ODkwZjMxODA0NjhkMTUyNGJlZTg1NDM1OWQwMzU2ZWI1MjIyZC4uODBlYzdm
Yzg2MjkyYjYzYmJiYTg1MWUxMWUxMDZmYTE1MmY5MTQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBBZmZpbmVUcmFuc2Zv
cm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIEFm
ZmluZVRyYW5zZm9ybSogU1ZHR3JhcGhpY3NFbGVtZW50OjpzdXBwbGVtZW50YWxUcmFuc2Zvcm0o
KQogewogICAgIGlmICghbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0pCi0gICAgICAgIG1fc3VwcGxl
bWVudGFsVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxBZmZpbmVUcmFuc2Zvcm0+KCk7Cisg
ICAgICAgIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxBZmZpbmVUcmFuc2Zv
cm0+KCk7CiAgICAgcmV0dXJuIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtLmdldCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCmluZGV4IDZmMGFjYWNmMTllZTg1MGRi
NGU2OTEwZDNlODNkMjY0OTRkNjdlYjAuLjQzNGQ5MWViM2RmOGFkODc5ZjgzOWE0ODk2Njg2Nzgw
YjQwOWYyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCkBAIC04Niw3
ICs4Niw3IEBAIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTVkdQYXRoQnl0ZVN0cmVhbT4gY29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKnRoaXMpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKnRoaXMpOwogICAgIH0KIAogICAgIERh
dGFJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCmlu
ZGV4IGUwNDIzY2U5ODE1ZmEwZjI1NTYzYTNiNTQzMTQwODZhYzM1NmZmNDQuLjNlYjU3YWQyZjIx
ZGZhNjRiOWIxMTgwMWY0MjcyODM2MDJiNzViN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZv
aWQgU01JTFRpbWVDb250YWluZXI6OnNjaGVkdWxlKFNWR1NNSUxFbGVtZW50KiBhbmltYXRpb24s
IFNWR0VsZW1lbnQqIHRhcmdldCwKICAgICBFbGVtZW50QXR0cmlidXRlUGFpciBrZXkodGFyZ2V0
LCBhdHRyaWJ1dGVOYW1lKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uc1ZlY3Rvcj4m
IHNjaGVkdWxlZCA9IG1fc2NoZWR1bGVkQW5pbWF0aW9ucy5hZGQoa2V5LCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgaWYgKCFzY2hlZHVsZWQpCi0gICAgICAgIHNjaGVkdWxlZCA9IHN0
ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uc1ZlY3Rvcj4oKTsKKyAgICAgICAgc2NoZWR1bGVkID0g
bWFrZVVuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigpOwogICAgIEFTU0VSVCghc2NoZWR1bGVkLT5j
b250YWlucyhhbmltYXRpb24pKTsKICAgICBzY2hlZHVsZWQtPmFwcGVuZChhbmltYXRpb24pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA4MDlhZmY1ZDg4
NTM3MTIwNzJhZDg3MTU2NzM1ZTkzMGY5YmEzNWNkLi41YzU2YjY5OTk1YmM5MmY0Y2E4ODFlMmI5
MWU5ZjM3ZmY1YzM4ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNo
YW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7
CiAgICAgICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdlQ29uZmlndXJhdGlvbldpdGhF
bXB0eUNsaWVudHMoKTsKLSAgICAgICAgbV9jaHJvbWVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKKyAgICAgICAgbV9jaHJvbWVDbGllbnQgPSBt
YWtlVW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKICAgICAgICAgcGFnZUNvbmZp
Z3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CiAKICAgICAgICAg
Ly8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGluZyBpdHNlbGYsIHdlIG1pZ2h0IGxl
YWsgdGhlIHdvcmxkLgpAQCAtNDY2LDcgKzQ2Niw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0lt
YWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8gVGhpcyB3
aWxsIGJlY29tZSBhbiBpc3N1ZSB3aGVuIFNWR0ltYWdlIHdpbGwgYmUgYWJsZSB0byBsb2FkIG90
aGVyCiAgICAgICAgIC8vIFNWR0ltYWdlIG9iamVjdHMsIGJ1dCB3ZSdyZSBzYWZlIG5vdywgYmVj
YXVzZSBTVkdJbWFnZSBjYW4gb25seSBiZQogICAgICAgICAvLyBsb2FkZWQgYnkgYSB0b3AtbGV2
ZWwgZG9jdW1lbnQuCi0gICAgICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgICAgICBtX3BhZ2UgPSBtYWtlVW5pcXVlPFBh
Z2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5n
cygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5z
ZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFBs
dWdpbnNFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAppbmRleCBkOTcwMzAyYWRmODY1ODU1MDlj
NjUwOGQ1MDQ5NTJhMjU1MzIzNjJiLi5jNzdhZTA4YmFjNjVjM2MyY2ZjODk3NGZhMzNlNzY0NjBj
ZTk3ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFJlbmRlck9iamVj
dDsKIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKIGNsYXNzIFNWR0ZpbHRlckJ1aWxkZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaFNl
dDxGaWx0ZXJFZmZlY3QqPiBGaWx0ZXJFZmZlY3RTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHku
aAppbmRleCBlNWVmYWFlYTcxMTFiYzZjOTU3ZDk3MmQ3NDU0OGRlOTJkOGExMzNlLi5jZWJhYTM2
M2JmNTI3YmJiMzhlNTY3ZDNlM2Q0MmJmODQzMTAyYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0
eS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJv
cGVydHlUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0
ZWRQcm9wZXJ0eT4KICAgICBzdGF0aWMgUmVmPEFuaW1hdGVkUHJvcGVydHk+IGNyZWF0ZShTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGVj
b3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwg
bWFrZVVuaXF1ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZSwgUHJvcGVydHlUeXBl
Pj4oKSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgdHlw
ZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKaW5kZXggMjg4NzQxYjEyOTA1Y2I4NTE0MzA1NDA5
MGM0ZTJjOTEzOWIzNWJmMy4uZDA3MzdhY2JhMzMxZmUxMjM0N2I4MzRmZjdhYTMwMTAwYWQxNTYx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFz
cyBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9yPFNWR0FuaQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFu
aW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTY4LDcgKzY4
LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0EKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRCb29sZWFu
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQm9v
bGVhbkFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTg5LDcgKzg5LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjwKIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R0FuaW1hdGVkRW51bWVyYXRpb24+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRp
dmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEVu
dW1lcmF0aW9uQW5pbWF0b3I8RW51bVR5cGU+PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I8RW51bVR5
cGU+PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTExMSw3ICsx
MTEsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEludGVn
ZXI+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRJ
bnRlZ2VyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpA
QCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiAKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2Fs
Y01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdM
ZW5ndGhNb2RlIGxlbmd0aE1vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0
aE1vZGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZExlbmd0aEFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTE1Myw3ICsxNTMsNyBAQCBjbGFzcyBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogCiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdB
bmltYXRlZExlbmd0aExpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUs
IFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUsIGxlbmd0aE1vZGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZExl
bmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC0xNzIsNyArMTcyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4K
IHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xODksNyArMTg5LDcgQEAgY2xhc3MgU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9yPFMKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4mIGFu
aW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJl
ckxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiBwcml2YXRl
OgpAQCAtMjA2LDcgKzIwNiw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRv
ciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZFBhdGhTZWdMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBp
c0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjI0LDcgKzIyNCw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9yPFNWCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFBvaW50TGlzdD4m
IGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2Rl
LCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUG9p
bnRMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogcHJpdmF0
ZToKQEAgLTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRv
ciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBp
c0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI2Miw3ICsyNjIsNyBAQCBjbGFzcyBT
VkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdB
bmltYXRlZFByb3BlcnR5QQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI4MSw3ICsyODEsNyBAQCBjbGFzcyBTVkdB
bmltYXRlZFJlY3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3I8U1ZHQW5pbQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFJlY3Q+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjk4LDcgKzI5OCw3IEBAIGNsYXNzIFNW
R0FuaW1hdGVkU3RyaW5nQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yPFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFN0cmluZz4mIGFuaW1h
dGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMzM4LDcgKzMz
OCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBs
LmgKaW5kZXggNGVkYTM0YzliMTg4OGZmZDZkM2Q2NjMyY2YwY2Y2ZDMzYTZmYTllMS4uMzk3ZmYw
OTE1OTQwMGQzM2MwNTJiMTFkODI4Y2I4ZTM3YjNjODA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
UGFpckFuaW1hdG9ySW1wbC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQW5n
bGVPcmllbnRBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFu
aW1hCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiYgYW5pbWF0ZWQxLCBSZWY8U1ZH
QW5pbWF0ZWRPcmllbnRUeXBlPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQW5n
bGVPcmllbnRBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTExMyw3
ICsxMTMsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3IgZmluYWwgOiBw
dWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQogcHVibGljOgogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5p
bWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0
ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5p
bWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1h
dGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1Niw3ICsxNTYsNyBAQCBjbGFzcyBTVkdBbmltYXRl
ZE51bWJlclBhaXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFp
ckFuaW1hdAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDEsIFJl
ZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRp
dmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51
bWJlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKaW5k
ZXggNjRhNjViMTg2MmZmYjk2OTYwM2M3MTU2MDdiNTQ0ZjU1NmUwMDgzYS4uMDIyZWRlZGE4MjFi
NTMzNTViM2ZkZDM5NThmMjQzNjgwMTlhYWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCkBAIC01Miw2ICs1Miw3IEBA
IGVudW0gY2xhc3MgQ2FsY01vZGUgOiB1aW50OF90IHsKIH07CiAKIGNsYXNzIFNWR0F0dHJpYnV0
ZUFuaW1hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
VkdBdHRyaWJ1dGVBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQog
ICAgICAgICA6IG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKaW5k
ZXggMjY0YzM2YjY5MDc0Y2NmM2UyZTI5ZDI2NzcyMWNmNTM3NDU3MDMxMS4uYTM1ZTI1MGE5YjE1
MWY5ZTg5N2Y4NWY2MzY3YzM4N2RiYjNjYTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCkBAIC0zOSw3ICsz
OSw3IEBAIGNsYXNzIFNWR0RlY29yYXRlZEVudW1lcmF0aW9uIDogcHVibGljIFNWR0RlY29yYXRl
ZFByaW1pdGl2ZTxEZWNvcmF0aW9uVHlwZSwgRW51CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IEVudW1UeXBlJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19pbnRlZ3JhbDxEZWNvcmF0aW9uVHlwZT46OnZhbHVlLCAiRGVjb3JhdGlvblR5cGUgZm9ybSBl
bnVtIHNob3VsZCBiZSBpbnRlZ3JhbC4iKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24+KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24+KHZhbHVlKTsKICAgICB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQ
cm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJv
cGVydHkuaAppbmRleCBlNGFiMDM3MGI5NDc5ZTU1NTBiYmIxMTA4NzM0MjM1MzExNjY1MDcwLi5h
YjE0ZjNjYmU1YTdmYzIwZTEzMGZkYTliZDQ4Nzk3ZGRkZDNlODQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmgKQEAgLTI5
LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNv
cmF0aW9uVHlwZT4KIGNsYXNzIFNWR0RlY29yYXRlZFByb3BlcnR5IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTVkdEZWNvcmF0ZWRQcm9wZXJ0eSgpID0gZGVm
YXVsdDsKICAgICB2aXJ0dWFsIH5TVkdEZWNvcmF0ZWRQcm9wZXJ0eSgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3Bl
cnR5QW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2
ZVByb3BlcnR5QW5pbWF0b3IuaAppbmRleCA0MTIxNzIyMGJkZmNmZWZmNjdjMTYwOTEzYWQxNGQ2
Yjk5YmExNDJjLi42OGIyZTBiMTEzN2FkZThkMzdmODBlMGUyOThiNWRlMjRkMDFhODJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0
aXZlUHJvcGVydHlBbmltYXRvci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFNWR1ByaW1pdGl2
ZVByb3BlcnR5QW5pbWF0b3IgOiBwdWJsaWMgU1ZHUHJvcGVydHlBbmltYXRvcjxBbmltYXRpb25G
dW5jdGlvCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9u
TW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVk
LCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHBy
b3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaAppbmRleCBhZDUw
ZDQyMzYyOTY5NDJkMWRjODcxOGEyZGE4ZTZhZGY4ZDFiY2NiLi41ZTMwMThmNWE0MDJhOWM3ZjEy
OWQ0MWQ0MTlhYzVlOTQ5ZmVlMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKQEAgLTM0LDYgKzM0
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUHJvcGVydHlBbmltYXRvckZh
Y3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNWR1By
b3BlcnR5QW5pbWF0b3JGYWN0b3J5KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBs
LmgKaW5kZXggMTE4ODg2YzRmOGJiNzIzNmE0NDZmZmFkMDM4NjlmZjBiMGRjZGU5NS4uZmQzZGM5
NjBmZmE3ZDMxMjkwMTM3ZDQ1MmNkZTFhMjg3OWE3ZWRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvcklt
cGwuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhBbmltYXRvciBmaW5hbCA6IHB1
YmxpYyBTVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3I8U1ZHTGVuZ3RoLCBTVkdBbgogcHVibGljOgog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9k
ZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVuZ3RoQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdU
Rk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKICAgICB9CiAKICAgICB2b2lkIHN0YXJ0KFNW
R0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRv
ckltcGwuaAppbmRleCA1ZWU4YWMzZDBmNGUxMmM2MmE1ZWZjMDBmZjUzYjU5MGU0MDBmMzY4Li5h
ZTk0ZTI5ZWQ0Yjg2MTNiOTljZDk3NDg2ZWQwYjA2MjgyNmMwMmQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlM
aXN0QW5pbWF0b3JJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHTGVuZ3RoTGlzdEFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3I8U1ZHTGVu
Z3QKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0xlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhN
b2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhMaXN0QW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKICAgICB9
CiAKICAgICB2b2lkIHN0YXJ0KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCBjMTEzMWQy
NWIzODhiYmE4MzY2NTNkMjk3MDhlNmE1YmJlNGJkZmM0Li4yNDM3ODliYjlkMjc5YTZlODUzZTA4
NjQ0YjY0YmVlODUxZTVlZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5jcHAKQEAgLTIzMSw2ICsyMzEsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJh
Y2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzJiBzZXR0aW5ncykKIH0KIAogY2xhc3MgSW50ZXJuYWxT
ZXR0aW5nc1dyYXBwZXIgOiBwdWJsaWMgU3VwcGxlbWVudDxQYWdlPiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxTZXR0aW5nc1dy
YXBwZXIoUGFnZSogcGFnZSkKICAgICAgICAgOiBtX2ludGVybmFsU2V0dGluZ3MoSW50ZXJuYWxT
ZXR0aW5nczo6Y3JlYXRlKHBhZ2UpKSB7IH0KQEAgLTI1Miw3ICsyNTMsNyBAQCBjb25zdCBjaGFy
KiBJbnRlcm5hbFNldHRpbmdzOjpzdXBwbGVtZW50TmFtZSgpCiBJbnRlcm5hbFNldHRpbmdzKiBJ
bnRlcm5hbFNldHRpbmdzOjpmcm9tKFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKCFTdXBwbGVtZW50
PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKQotICAgICAgICBTdXBwbGVtZW50
PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1
ZTxJbnRlcm5hbFNldHRpbmdzV3JhcHBlcj4ocGFnZSkpOworICAgICAgICBTdXBwbGVtZW50PFBh
Z2U+Ojpwcm92aWRlVG8ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxJbnRlcm5h
bFNldHRpbmdzV3JhcHBlcj4ocGFnZSkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnRlcm5h
bFNldHRpbmdzV3JhcHBlcio+KFN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVu
dE5hbWUoKSkpLT5pbnRlcm5hbFNldHRpbmdzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCBlMTc4YjQ5Njg1ODc1NTFiZjA3MDRkODMwMjA1NjJkZDEyZGY0ZWJi
Li42MmU3MzQ5YTFjYTE2NjJkMDYyYzYwNzkzODkyZmM3MGZmNjA1ODEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0zNDEsNyArMzQxLDcgQEAgY2xhc3MgSW5zcGVjdG9y
U3R1YkZyb250ZW5kIGZpbmFsIDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWws
IHB1YmxpYwogfTsKIAogSW5zcGVjdG9yU3R1YkZyb250ZW5kOjpJbnNwZWN0b3JTdHViRnJvbnRl
bmQoUGFnZSYgaW5zcGVjdGVkUGFnZSwgUmVmUHRyPERPTVdpbmRvdz4mJiBmcm9udGVuZFdpbmRv
dykKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmluc3BlY3RlZFBhZ2UuaW5z
cGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpLCBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPigp
KQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkUGFnZS5pbnNw
ZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCksIG1h
a2VVbmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+KCkpCiAgICAg
LCBtX2Zyb250ZW5kV2luZG93KGZyb250ZW5kV2luZG93LmNvcHlSZWYoKSkKIHsKICAgICBBU1NF
UlRfQVJHKGZyb250ZW5kV2luZG93LCBmcm9udGVuZFdpbmRvdyk7CkBAIC01NjcsNyArNTY3LDcg
QEAgSW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKTsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSAm
JiBmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBhdXRvIG1vY2tQYXltZW50Q29vcmRp
bmF0b3IgPSBuZXcgTW9ja1BheW1lbnRDb29yZGluYXRvcigqZnJhbWUtPnBhZ2UoKSk7Ci0gICAg
ICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVl
PFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50Q29vcmRpbmF0b3IpKTsKKyAgICAgICAg
ZnJhbWUtPnBhZ2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKG1ha2VVbmlxdWU8UGF5bWVudENv
b3JkaW5hdG9yPigqbW9ja1BheW1lbnRDb29yZGluYXRvcikpOwogICAgIH0KICNlbmRpZgogfQpA
QCAtMTQxNyw3ICsxNDE3LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZU1vY2tTcGVlY2hTeW50
aGVzaXplcigpCiAgICAgaWYgKCFzeW50aGVzaXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN5
bnRoZXNpcy0+c2V0UGxhdGZvcm1TeW50aGVzaXplcihzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrPihzeW50aGVzaXMpKTsKKyAgICBzeW50aGVzaXMtPnNldFBs
YXRmb3JtU3ludGhlc2l6ZXIobWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
az4oc3ludGhlc2lzKSk7CiB9CiAKICNlbmRpZgpAQCAtMjQ4OSw3ICsyNDg5LDcgQEAgUmVmUHRy
PFdpbmRvd1Byb3h5PiBJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKGNvbnN0
IFN0cmluZyYgdXJsKQogICAgIGF1dG8qIGluc3BlY3RlZFBhZ2UgPSBjb250ZXh0RG9jdW1lbnQo
KS0+ZnJhbWUoKS0+cGFnZSgpOwogICAgIGF1dG8qIHdpbmRvdyA9IGluc3BlY3RlZFBhZ2UtPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgIGF1dG8gZnJvbnRlbmRXaW5k
b3dQcm94eSA9IHdpbmRvdy0+b3Blbigqd2luZG93LCAqd2luZG93LCB1cmwsICIiLCAiIikucmVs
ZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9N
V2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3coKSkpOworICAgIG1faW5zcGVjdG9y
RnJvbnRlbmQgPSBtYWtlVW5pcXVlPEluc3BlY3RvclN0dWJGcm9udGVuZD4oKmluc3BlY3RlZFBh
Z2UsIGRvd25jYXN0PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5kb3dQcm94eS0+d2luZG93KCkpKTsK
ICAgICByZXR1cm4gZnJvbnRlbmRXaW5kb3dQcm94eTsKIH0KIApAQCAtMzAwOSw3ICszMDA5LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRWaWV3RXhwb3NlZFJlY3QoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGYKIAogdm9pZCBJbnRlcm5hbHM6OnNldFByaW50aW5n
KGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50Q29udGV4dD4oZnJhbWUoKSk7CisgICAgcHJpbnRDb250
ZXh0Rm9yVGVzdGluZygpID0gbWFrZVVuaXF1ZTxQcmludENvbnRleHQ+KGZyYW1lKCkpOwogICAg
IHByaW50Q29udGV4dEZvclRlc3RpbmcoKS0+YmVnaW4od2lkdGgsIGhlaWdodCk7CiB9CiAKQEAg
LTM0NDgsNyArMzQ0OCw3IEBAIHZvaWQgSW50ZXJuYWxzOjplbmFibGVBdXRvU2l6ZU1vZGUoYm9v
bCBlbmFibGVkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKIHZvaWQgSW50ZXJuYWxzOjppbml0
aWFsaXplTW9ja0NETSgpCiB7Ci0gICAgTGVnYWN5Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkoW10g
KExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeU1vY2tDRE0+
KGNkbSk7IH0sCisgICAgTGVnYWN5Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkoW10gKExlZ2FjeUNE
TSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeU1vY2tDRE0+KGNkbSk7IH0sCiAgICAg
ICAgIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzS2V5U3lzdGVtLCBMZWdhY3lNb2NrQ0RNOjpzdXBw
b3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKTsKIH0KIApAQCAtNDI0MSw3ICs0MjQxLDcgQEAgdm9p
ZCBJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKGludCB0ZXN0TnVtYmVyKQogICAgIGlmICghZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtl
X3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5U
aHJlYWRRdWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVudCwgdGVzdE51bWJlcl0oKSB7CisgICAg
YXV0byBtaWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihN
aWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICpkb2N1bWVudCwgW2RvY3VtZW50LCB0
ZXN0TnVtYmVyXSgpIHsKICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtYWtlU3RyaW5nKCJNaWNyb1Rhc2sg
IyIsIHRlc3ROdW1iZXIsICIgaGFzIHJ1bi4iKSk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCmluZGV4IDY0Mjg3ZDIzOWFmNTczZTkyMDNkMjU4NDMx
YjI3M2M3Yjg3NDkwMDYuLjYwMjcyZDM0OTdmNGI4NjVjZGIwMzcwZmU0MWQzZDZmYmRlOGI3ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApAQCAtMzgsNiArMzgs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2NrQ0RNU2Vzc2lvbiA6IHB1Ymxp
YyBMZWdhY3lDRE1TZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBNb2NrQ0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmly
dHVhbCB+TW9ja0NETVNlc3Npb24oKSA9IGRlZmF1bHQ7CkBAIC03Myw3ICs3NCw3IEBAIGJvb2wg
TGVnYWN5TW9ja0NETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5TW9ja0NETTo6Y3JlYXRl
U2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TW9ja0NETVNlc3Npb24+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TW9ja0NETVNlc3Npb24+KGNsaWVudCk7CiB9CiAKIHN0YXRpYyBVaW50OEFycmF5KiBp
bml0RGF0YVByZWZpeCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2Fj
eU1vY2tDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oCmluZGV4
IDI0YjliODAwOGM0ZjUxOWI0YTY2NmVjNmQxNTI1YWM2MmVjMWMzMGEuLmI5M2FlYjkzZmY2MzI5
ZTUxNTQ3YzEzZmY3NmE2OTJlZTZhNzE4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTGVnYWN5TW9ja0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5
TW9ja0NETS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExl
Z2FjeUNETTsKIAogY2xhc3MgTGVnYWN5TW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlSW50ZXJm
YWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBMZWdhY3lNb2NrQ0RNKExlZ2FjeUNETSogY2RtKQogICAgICAgICA6IG1fY2RtKGNkbSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNTY3OTZlZTkwMGJi
ZjNiNmNjMDVjZjZhMjI5NmVmZDQzYjllZjdiNi4uY2U1ZDhmN2Q2YmRmMzhiNTkyMjA5MzAyYTZl
NmQ3MWIzNjk2NjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5j
cHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0ZWRE
YXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykKIAogc3RkOjp1bmlxdWVfcHRyPENETVBy
aXZhdGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0cigqdGhpcykpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CiB9CiAKIE1v
Y2tDRE06Ok1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gZmFjdG9yeSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCAzMzk2Y2QwMmFkMDJkZDE0ZTkyZjE1
NzllMjc1MTZlNmJjM2Y0Mjk4Li4zOTkwOWI5MzAzYTk0YzkzNjhlYWEwZjYyNWY0YjY3ZTUyNTA1
OWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC0xMDAsNiAr
MTAwLDcgQEAgY2xhc3MgTW9ja0NETUZhY3RvcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2NrQ0RN
RmFjdG9yeT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjwKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBw
dWJsaWMgQ0RNUHJpdmF0ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tDRE0+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNb2NrQ0RNKFdlYWtQdHI8TW9j
a0NETUZhY3Rvcnk+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmNwcAppbmRleCA1MTE4MWRhZTcyZTEzZTJiYmQxNTNlODExYzE0MzY0ZDFjZDhhMTg3Li43
NzhhOTE4YTZiOTA3NTVjYjg2ZDNhYWE3NGY3OWIzZTYxOGQ0Yzk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCBib29s
IE1vY2tDb250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPE1vY2tDb250
ZW50RmlsdGVyPiBNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxNb2NrQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxNb2NrQ29udGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6d2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tH
YW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IGQzYWM1ZDg3ZDE5ZTJhODUzNjFjMTE1NzJjZjMxMWYw
YzgzYjI0NWIuLmQ0MGRlZDFkYTExOThjYWEzNDU5ZDY3N2UxZmU4NGY1YmZiOTQ2ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtNjMs
NyArNjMsNyBAQCB2b2lkIE1vY2tHYW1lcGFkUHJvdmlkZXI6OnNldE1vY2tHYW1lcGFkRGV0YWls
cyh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJiBnYQogICAgIGlmIChtX21vY2tHYW1lcGFk
VmVjdG9yW2luZGV4XSkKICAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0tPnVwZGF0
ZURldGFpbHMoZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKICAgICBlbHNlCi0g
ICAgICAgIG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdID0gc3RkOjptYWtlX3VuaXF1ZTxNb2Nr
R2FtZXBhZD4oaW5kZXgsIGdhbWVwYWRJRCwgYXhpc0NvdW50LCBidXR0b25Db3VudCk7CisgICAg
ICAgIG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdID0gbWFrZVVuaXF1ZTxNb2NrR2FtZXBhZD4o
aW5kZXgsIGdhbWVwYWRJRCwgYXhpc0NvdW50LCBidXR0b25Db3VudCk7CiB9CiAKIGJvb2wgTW9j
a0dhbWVwYWRQcm92aWRlcjo6Y29ubmVjdE1vY2tHYW1lcGFkKHVuc2lnbmVkIGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKaW5kZXggZGJl
OTA3M2Q2YWRlYmZjNTAxNTljYzJlZGJiMjI4M2NjZDE3YmE4NS4uOGYxNjQ3YzFmMzIyNTE4MTZj
N2NmMDg5NjE4MmFlMzQyMzVjNTE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnNvbGVDbGllbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgV29ya2VyQ29uc29s
ZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2Fn
ZUxldmVsCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50cy0+Z2V0Rmly
c3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBl
eGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4
dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFk
ZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAppbmRleCBmNDNiZDJhN2E2MDU5MzcyN2FkMGE2
YTkxZGVjZDZlYmVjNzIyNjg4Li42OTAzYmU1ZWMyNWZiOTFlZmY3Nzc2ZTQ0NzZhZDRlYTJiY2U3
MzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKQEAg
LTQ0LDYgKzQ0LDcgQEAgV29ya2VyRXZlbnRRdWV1ZTo6fldvcmtlckV2ZW50UXVldWUoKQogCiBj
bGFzcyBXb3JrZXJFdmVudFF1ZXVlOjpFdmVudERpc3BhdGNoZXIKIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBFdmVudERpc3BhdGNoZXIoUmVmUHRyPEV2ZW50
PiYmIGV2ZW50LCBXb3JrZXJFdmVudFF1ZXVlJiBldmVudFF1ZXVlKQogICAgICAgICA6IG1fZXZl
bnQoV1RGTW92ZShldmVudCkpCkBAIC04NCw3ICs4NSw3IEBAIGJvb2wgV29ya2VyRXZlbnRRdWV1
ZTo6ZW5xdWV1ZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byogZXZlbnRQdHIgPSBldmVudC5wdHIoKTsKLSAgICBhdXRvIGV2ZW50RGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnREaXNwYXRjaGVyPihXVEZNb3ZlKGV2ZW50
KSwgKnRoaXMpOworICAgIGF1dG8gZXZlbnREaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxFdmVudERp
c3BhdGNoZXI+KFdURk1vdmUoZXZlbnQpLCAqdGhpcyk7CiAgICAgbV9ldmVudERpc3BhdGNoZXJN
YXAuYWRkKGV2ZW50UHRyLCBldmVudERpc3BhdGNoZXIuZ2V0KCkpOwogICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5wb3N0VGFzayhbZXZlbnREaXNwYXRjaGVyID0gV1RGTW92ZShldmVudERp
c3BhdGNoZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgZXZlbnREaXNw
YXRjaGVyLT5kaXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVl
dWUuaAppbmRleCA2MTE1ZWY0YTEzNjUyYTZlYWQxMGFmMzdjZmI0OTQyODIwYzNjYjJiLi5kODk3
M2Q1YmNhZTE3Yjk1NTAwNDRjN2U4MDE2MDViOTlkNTQ5YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBXb3JrZXJFdmVu
dFF1ZXVlIGZpbmFsIDogcHVibGljIEV2ZW50UXVldWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdvcmtlckV2ZW50UXVldWUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfldvcmtlckV2ZW50UXVldWUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggN2JhNmVkYjUy
MDhmMjJjM2Y4ZjE2ZGUyOWQ4MjViNzcxZjZjM2U5ZS4uYjE3ZDY2MzYzYWMzNTgwZTdhMzQ0MDA4
MWEyZjdjNjNhMDczODc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKQEAgLTYyLDkgKzYyLDkgQEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2kKICAg
ICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV91c2VyQWdlbnQodXNlckFnZW50
KQogICAgICwgbV90aHJlYWQodGhyZWFkKQotICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkK
LSAgICAsIG1fbWljcm90YXNrUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxNaWNyb3Rhc2tRdWV1ZT4o
bV9zY3JpcHQtPnZtKCkpKQorICAgICwgbV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrZXJTY3JpcHRD
b250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVl
PFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fbWljcm90YXNrUXVl
dWUobWFrZVVuaXF1ZTxNaWNyb3Rhc2tRdWV1ZT4obV9zY3JpcHQtPnZtKCkpKQogICAgICwgbV9p
c09ubGluZShpc09ubGluZSkKICAgICAsIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5KHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSkK
ICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKQEAgLTg2LDcgKzg2LDcgQEAgV29ya2VyR2xvYmFs
U2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYgb3JpZ2kKICAgICAgICAgb3JpZ2luLT5ncmFudFN0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVS
THNRdWlyaygpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Q
b2xpY3k6OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbikpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJs
IH0sICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogfQogCiBXb3JrZXJH
bG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKCkKQEAgLTM2Miw5ICszNjIsOSBAQCB2b2lk
IFdvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2Fn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBN
ZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9u
TnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2
ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50
aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwg
bWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwg
cmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNz
YWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1
ZXN0SWRlbnRpZmllcik7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdl
VG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBhNzVjMDE1NmM1OWUz
OGRkOTk5ZDZjZWMxZGRlZWRlMjNiZTE4N2IzLi40ZTlmNTE5YWVmZWRkMjVmODgzZjYzYWNhMGE0
Nzg5ZmYwMjdlNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcApAQCAtNTUsNyArNTUsNyBAQCBXb3JrZXJHbG9iYWxTY29wZVByb3h5JiBX
b3JrZXJHbG9iYWxTY29wZVByb3h5OjpjcmVhdGUoV29ya2VyJiB3b3JrZXIpCiAKIFdvcmtlck1l
c3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXImIHdvcmtlck9iamVjdCkK
ICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCh3b3JrZXJPYmplY3Quc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQotICAgICwgbV9pbnNwZWN0b3JQcm94eShzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmplY3QuaWRlbnRpZmllcigpKSkKKyAgICAsIG1f
aW5zcGVjdG9yUHJveHkobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2VyT2Jq
ZWN0LmlkZW50aWZpZXIoKSkpCiAgICAgLCBtX3dvcmtlck9iamVjdCgmd29ya2VyT2JqZWN0KQog
ewogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpICYm
IGlzTWFpblRocmVhZCgpKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0CiAgICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKICAgICAgICAgbV93b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKICAgICB9IGVsc2UK
LSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFdURk1vdmUodGFzaykpKTsKKyAgICAgICAgbV9xdWV1
ZWRFYXJseVRhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9z
dFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGJjZDk0ZTZhYzA0MDNhY2Q2
YTU0YmFjNDFmYWI0MWU1YmY1NTI3ZGEuLmJmYWM5NTkyZGZhYTc5MjEwMDY1YjM0NTliZDIyMTYx
OTU3ODQ4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAt
ODYsNyArODYsNyBAQCBjbGFzcyBNb2RlUHJlZGljYXRlIHsKIH07CiAKIFdvcmtlclJ1bkxvb3A6
OldvcmtlclJ1bkxvb3AoKQotICAgIDogbV9zaGFyZWRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtlclNoYXJlZFRpbWVyPigpKQorICAgIDogbV9zaGFyZWRUaW1lcihtYWtlVW5pcXVlPFdvcmtl
clNoYXJlZFRpbWVyPigpKQogewogfQogCkBAIC0yNTAsMTIgKzI1MCwxMiBAQCB2b2lkIFdvcmtl
clJ1bkxvb3A6OnBvc3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQog
CiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtp
bGwoc3RkOjptYWtlX3VuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKSk7
CisgICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChtYWtlVW5pcXVlPFRhc2s+KFdURk1v
dmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0
VGFza0Zvck1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CisgICAgbV9tZXNzYWdlUXVldWUuYXBwZW5k
KG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtl
clJ1bkxvb3A6OnBvc3REZWJ1Z2dlclRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYm
IHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAK
aW5kZXggMTk5MTJmMDI3NWZlYTE5NDgwNTQyYTA3MDk3NWRjYjBjN2QyODAzNS4uMjI4ZjNkMTdm
ZjAwMjJlNjJlNjM2NDUzMmQ1NTZiOTUwN2EwMThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV29y
a2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0CiAKICAgICBBU1NFUlQoc2NyaXB0UmVxdWVzdC5odHRwTWV0aG9kKCkg
PT0gIkdFVCIpOwogCi0gICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJj
ZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOworICAgIGF1dG8gcmVxdWVzdCA9IG1h
a2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihXVEZNb3ZlKHNjcmlwdFJlcXVlc3QpKTsKICAgICBp
ZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNvbnN0
IFVSTCYgV29ya2VyU2NyaXB0TG9hZGVyOjpyZXNwb25zZVVSTCgpIGNvbnN0CiAKIHN0ZDo6dW5p
cXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3Vy
Y2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaW5pdGlhdG9ySWRlbnRpZmllcikKIHsKLSAgICBhdXRv
IHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4obV91cmwpOworICAg
IGF1dG8gcmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7CiAgICAg
cmVxdWVzdC0+c2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICByZXF1ZXN0LT5zZXRJbml0aWF0
b3JJZGVudGlmaWVyKGluaXRpYXRvcklkZW50aWZpZXIpOwogICAgIHJldHVybiByZXF1ZXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDFmNzU2MTg2YTIwZjAx
NjllNDc4NDM5NTFiZWUzNjg3ZTAwMjRmYmEuLjNjMzg1OGJkYTliNDRiNTdmYWRiMzllZmEyZTBh
MGYzYTMwNDExOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAg
LTExNCw3ICsxMTQsNyBAQCBXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25zdCBVUkwmIHNj
cmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbgogICAgICwgbV93b3JrZXJE
ZWJ1Z2dlclByb3h5KHdvcmtlckRlYnVnZ2VyUHJveHkpCiAgICAgLCBtX3dvcmtlclJlcG9ydGlu
Z1Byb3h5KHdvcmtlclJlcG9ydGluZ1Byb3h5KQogICAgICwgbV9ydW50aW1lRmxhZ3MocnVudGlt
ZUZsYWdzKQotICAgICwgbV9zdGFydHVwRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRocmVh
ZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNP
bmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIHRv
cE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKKyAgICAsIG1fc3RhcnR1cERhdGEobWFr
ZVVuaXF1ZTxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0VVJMLCBuYW1lLCBpZGVudGlm
aWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCBzb3VyY2VDb2RlLCBzdGFydE1vZGUsIGNvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5LCB0b3BPcmlnaW4sIHRpbWVPcmlnaW4sIHNlc3Npb25JRCkpCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgLCBtX2lkYkNvbm5lY3Rpb25Qcm94eShjb25u
ZWN0aW9uUHJveHkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBiMmQyNjE1YTEyNjNk
MTYyNjYxODIwMDQ2NDhmOTBlZGE2OTIwNmI1Li41OWM3MWM0ZDE0NzYyN2NmZDlkMzFhNDVlYWJj
Y2NkYWUxMDNlNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZGVyZWZFdmVudFRhcmdldCgpCiBhdXRvIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OnJlYWR5KCkgLT4gUmVhZHlQcm9taXNlJgogewogICAgIGlmICghbV9y
ZWFkeVByb21pc2UpIHsKLSAgICAgICAgbV9yZWFkeVByb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlYWR5UHJvbWlzZT4oKTsKKyAgICAgICAgbV9yZWFkeVByb21pc2UgPSBtYWtlVW5pcXVlPFJl
YWR5UHJvbWlzZT4oKTsKIAogICAgICAgICBpZiAobV9pc1N0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJu
ICptX3JlYWR5UHJvbWlzZTsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIHJlbGF0aXZlU2NyaXB0VVJM
LCBjbwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjsK
ICAgICBqb2JEYXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCi0gICAgc2NoZWR1
bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8
U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0
YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRp
b24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpA
QCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVn
aXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlCiAKICAgICBDT05UQUlO
RVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBVbnJlZ2lzdGVy
aW5nIHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6ICUiIFBSSXU2NCwgam9iRGF0YS5pZGVudGlmaWVy
KCkuam9iSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFr
ZV91bmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1v
dmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJK
b2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYg
c2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJUeXBlLCBSZWZQdHI8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29u
c3QgVVJMJgogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZVJl
Z2lzdHJhdGlvbjogVXBkYXRpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBq
b2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgc2No
ZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92
ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlx
dWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9i
RGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpvYihz
dGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpvYj4mJiBqb2IpCkBAIC0yNjksNyArMjY5LDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24oY29uc3QgU3Ry
aW5nJiBjbGllbnRVUkwsIFJlZjxEZWZlcnIKICAgICB9CiAKICAgICB1aW50NjRfdCBwZW5kaW5n
UHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRpbmdQcm9taXNlSWRlbnRpZmllcjsKLSAg
ICBhdXRvIHBlbmRpbmdQcm9taXNlID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nUHJvbWlzZT4o
V1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOworICAgIGF1dG8g
cGVuZGluZ1Byb21pc2UgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21p
c2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CiAgICAgbV9wZW5kaW5nUHJvbWlzZXMu
YWRkKHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgV1RGTW92ZShwZW5kaW5nUHJvbWlzZSkpOwog
CiAgICAgYXV0byBjb250ZXh0SWRlbnRpZmllciA9IHRoaXMtPmNvbnRleHRJZGVudGlmaWVyKCk7
CkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdp
c3RyYXRpb25zKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICB9CiAKICAgICB1
aW50NjRfdCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRpbmdQcm9taXNl
SWRlbnRpZmllcjsKLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gc3RkOjptYWtlX3VuaXF1ZTxQ
ZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cykpOworICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9taXNl
PihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CiAgICAgbV9w
ZW5kaW5nUHJvbWlzZXMuYWRkKHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgV1RGTW92ZShwZW5k
aW5nUHJvbWlzZSkpOwogCiAgICAgYXV0byBjb250ZXh0SWRlbnRpZmllciA9IHRoaXMtPmNvbnRl
eHRJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCA3YWM5Yzk4MzgzYjA0YjZlYjg5Yzk5
ZjIyMDg4NWU3NjczOTc2YzNmLi4zYmQ2YjliMDZlNTczNzY2NWI1OGY5NjllMjkzZDBmZWQ2MmMz
Y2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBjbGFzcyBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyIGZpbmFsIDogcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1
YmxpYyBBYwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgUGVuZGluZ1Byb21pc2UgeworICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdQcm9taXNlKFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVmPFBlbmRpbmdBY3Rpdml0eTxTZXJ2aWNl
V29ya2VyQ29udGFpbmVyPj4mJiBwZW5kaW5nQWN0aXZpdHkpCiAgICAgICAgICAgICA6IHByb21p
c2UoV1RGTW92ZShwcm9taXNlKSkKICAgICAgICAgICAgICwgcGVuZGluZ0FjdGl2aXR5KFdURk1v
dmUocGVuZGluZ0FjdGl2aXR5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggZWRiYzhmOTFl
ZTQzNDYyYTUwNDllODhjMWNlZjVlZmE3NjJjOThmZi4uY2I1YzIyMWZjOTQ4OGQ3YzAwNzI5ODNh
MTU3ODk1ZGNhOGM2Y2VjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBTZWNvbgogCiAgICAgc2VydmljZVdvcmtlci0+c2V0QXNU
ZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOwogCi0gICAgbV9wZW5kaW5nU2VydmljZVdvcmtlclRl
cm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8U2Vydmlj
ZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQpKTsK
KyAgICBtX3BlbmRpbmdTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoaWRlbnRp
ZmllciwgbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywg
aWRlbnRpZmllciwgdGltZW91dCkpOwogCiAgICAgYXV0byYgdGhyZWFkID0gc2VydmljZVdvcmtl
ci0+dGhyZWFkKCk7CiAgICAgdGhyZWFkLnN0b3AoW3RoaXMsIGlkZW50aWZpZXIsIHNlcnZpY2VX
b3JrZXIgPSBXVEZNb3ZlKHNlcnZpY2VXb3JrZXIpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHAKaW5kZXggYzYxNzM2MTNjYWNiNTVkNjkwNThiZTJjN2UyYTVmYmQ4NTI5
Yzc3Ni4uOWU3MjhjM2E3YWZhNDZjOTQ5Y2RjYmUwZDZmZWIwNGE5NTMxY2NmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3Vy
YXRpb24mJiBwYWdlQ29uZmkKICAgICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveGllcygpLmFk
ZCh0aGlzKTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIG1fcmVtb3RlRGVi
dWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlz
LCBkYXRhKTsKKyAgICBtX3JlbW90ZURlYnVnZ2FibGUgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3Jr
ZXJEZWJ1Z2dhYmxlPigqdGhpcywgZGF0YSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5zZXRS
ZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKHRydWUpOwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+aW5p
dCgpOwogI2VuZGlmCkBAIC0xNjgsNyArMTY4LDcgQEAgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rp
b24+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGkK
IAogc3RkOjp1bmlxdWVfcHRyPEZldGNoTG9hZGVyPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmNyZWF0ZUJsb2JMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVVJMJiBi
bG9iVVJMKQogewotICAgIGF1dG8gbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRl
cj4oY2xpZW50LCBudWxscHRyKTsKKyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hM
b2FkZXI+KGNsaWVudCwgbnVsbHB0cik7CiAgICAgbG9hZGVyLT5zdGFydExvYWRpbmdCbG9iVVJM
KG1fZG9jdW1lbnQsIGJsb2JVUkwpOwogICAgIGlmICghbG9hZGVyLT5pc1N0YXJ0ZWQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDFk
ZDM0MTM3NGM0NDQ1YTM0OTczMmQ0NGZkZWQxNTQ3NzQ4MWMwYjQuLjkyY2JhMDg1ZDNhY2Y2YTI5
M2YwNmI1NWRmNDVmNGRmYzc5M2ZiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBA
IC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6b3BlblNRTGl0ZURh
dGFiYXNlKGNvbnN0IFN0cmluZyYgZnVsbEZpbGVuYW1lKQogCiAgICAgU1FMaXRlRmlsZVN5c3Rl
bTo6ZW5zdXJlRGF0YWJhc2VEaXJlY3RvcnlFeGlzdHMobV9kYXRhYmFzZURpcmVjdG9yeSk7CiAK
LSAgICBtX2RhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKKyAg
ICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKICAgICBpZiAoIW1f
ZGF0YWJhc2UtPm9wZW4oZnVsbEZpbGVuYW1lKSkgewogICAgICAgICBlcnJvck1lc3NhZ2UgPSAi
RmFpbGVkIHRvIG9wZW4gcmVnaXN0cmF0aW9uIGRhdGFiYXNlIjsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cAppbmRleCBmZTVjYzg1OWU2NWE2ZTMyYTc4YjUyODk3NWExMzJlNzRiZjE3ODdlLi45MzI2YTNi
YWM2NTlhMjQ2NzA1ZTkyMGE4ODg0NmRmNGQwZTk2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3
IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiBkYXRhKQogICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFi
bGUgdG8gbWFrZSBhIG5ldyByZWdpc3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9y
dCB3YXMgc3RpbGwgdGFraW5nIHBsYWNlLgogICAgIEFTU0VSVCghbV9yZWdpc3RyYXRpb25zLmNv
bnRhaW5zKGRhdGEucmVnaXN0cmF0aW9uLmtleSkpOwogCi0gICAgYXV0byByZWdpc3RyYXRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdp
c3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdp
c3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvIHJlZ2lzdHJhdGlv
biA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJh
dGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJh
dGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOwogICAgIHJlZ2lzdHJhdGlvbi0+c2V0TGFz
dFVwZGF0ZVRpbWUoZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUpOwogICAgIGF1dG8g
cmVnaXN0cmF0aW9uUHRyID0gcmVnaXN0cmF0aW9uLmdldCgpOwogICAgIGFkZFJlZ2lzdHJhdGlv
bihXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIFNXU2VydmVyOjpT
V1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgU3RyaW5nJiYg
cmVnaXN0cmF0aW9uCiB7CiAgICAgQVNTRVJUKCFyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9y
eS5pc0VtcHR5KCkgfHwgbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKCFtX3Nl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZWdpc3RyYXRpb25TdG9yZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0
aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsKKyAgICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZSA9IG1h
a2VVbmlxdWU8UmVnaXN0cmF0aW9uU3RvcmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRh
dGFiYXNlRGlyZWN0b3J5KSk7CiAgICAgZWxzZQogICAgICAgICByZWdpc3RyYXRpb25TdG9yZUlt
cG9ydENvbXBsZXRlKCk7CiAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFNXU2VydmVyOjpzY2hl
ZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCiAgICAgLy8gSWYgaXQgaXMs
IHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBqb2IuCiAKICAgICBhdXRvJiBqb2JRdWV1ZSA9ICpt
X2pvYlF1ZXVlcy5lbnN1cmUoam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgW3RoaXMsICZqb2JE
YXRhXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVySm9iUXVldWU+
KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkp
OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGpvYlF1ZXVlLmVucXVldWVKb2Ioam9i
RGF0YSk7CkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKIAogICAg
IGlmIChjbGllbnRJZGVudGlmaWVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKCFpdGVy
YXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lcik7Ci0gICAgICAgIGl0ZXJh
dG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUaW1lcj4oW2NsaWVudE9yaWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNdIHsK
KyAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBt
YWtlVW5pcXVlPFRpbWVyPihbY2xpZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFpbiwg
dGhpc10gewogICAgICAgICAgICAgVmVjdG9yPFNXU2VydmVyV29ya2VyKj4gd29ya2Vyc1RvVGVy
bWluYXRlOwogICAgICAgICAgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1p
bmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgewogICAgICAgICAgICAgICAgIGlmICh3b3JrZXItPmlz
UnVubmluZygpICYmIHdvcmtlci0+b3JpZ2luKCkgPT0gY2xpZW50T3JpZ2luKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKaW5kZXggOGI2OGI3MGYwMWQyNTI3OGFmNTM4YWJjZTkxNGI4YzdjNjhhYjgzNy4u
ZGNhZjVhOGE3MTBmNzk0NDY0N2RlM2NkNWU5ODA2Mzk5YThmZDUwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwCkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdp
c3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgICAgICAgICAgcmVn
aXN0cmF0aW9uLT5zZXRVcGRhdGVWaWFDYWNoZShqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRh
dGVWaWFDYWNoZSk7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNX
U2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iOiBGb3VuZCByZWdpc3RyYXRpb24gJWxsdSBm
b3Igam9iICVzIGJ1dCBpdCBuZWVkcyB1cGRhdGluZyIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+aWRl
bnRpZmllcigpLnRvVUludDY0KCksIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVn
aXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwgam9i
LnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJMKTsKKyAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24g
PSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRp
b25LZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVV
UkwsIGpvYi5zY3JpcHRVUkwpOwogICAgICAgICBtX3NlcnZlci5hZGRSZWdpc3RyYXRpb24oV1RG
TW92ZShuZXdSZWdpc3RyYXRpb24pKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogTm8gZXhpc3Rpbmcg
cmVnaXN0cmF0aW9uIGZvciBqb2IgJXMsIGNvbnN0cnVjdGluZyBhIG5ldyBvbmUuIiwgdGhpcywg
am9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5k
ZXggMmI3YTJmZTNmYmI1OGQ0YzRlZTM4ZmMwNGI1MzZhM2U0ZTBjNzdlNy4uM2JlNzU3ZTAyYWUx
OWQ3NTkwZWMwN2IzZmE0Y2JlN2Q2M2NlODFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwKICAgICAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFj
az4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNr
Pj4oc3RhdGUsIHBhaW50VmFsdWUsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAK
LSAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhaW50RGVm
aW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51
bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7
CisgICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gbWFrZVVuaXF1ZTxQYWludERlZmluaXRp
b24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpOwogICAg
ICAgICBwYWludERlZmluaXRpb25NYXAoKS5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRp
b24pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oCmluZGV4IDk2Y2YxODUwYjBjYWUzYWFlOTYwN2RiMTM0MTY3MzU4YjY3
MWMxZDkuLjY0ZmM3OGVlZTc4ODBlZDliZWRjZmMyYTcwMTJjYTZlYzNjZTFjMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAt
NDksNiArNDksNyBAQCBjbGFzcyBQYWludFdvcmtsZXRHbG9iYWxTY29wZSA6IHB1YmxpYyBXb3Jr
bGV0R2xvYmFsU2NvcGUgewogCiAgICAgLy8gQWxsIHBhaW50IGRlZmluaXRpb25zIG11c3QgYmUg
ZGVzdHJveWVkIGJlZm9yZSB0aGUgdm0gaXMgZGVzdHJveWVkLCBiZWNhdXNlIG90aGVyd2lzZSB0
aGV5IHdpbGwgcG9pbnQgdG8gZnJlZWQgbWVtb3J5LgogICAgIHN0cnVjdCBQYWludERlZmluaXRp
b24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFpbnREZWZpbml0aW9uPiB7CisgICAgICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGFpbnREZWZpbml0aW9uKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWUsIEpTQzo6SlNPYmplY3QqIHBhaW50Q29uc3RydWN0b3IsIFJl
ZjxDU1NQYWludENhbGxiYWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0UHJvcGVydGllcywg
VmVjdG9yPFN0cmluZz4mJiBpbnB1dEFyZ3VtZW50cyk7CiAKICAgICAgICAgY29uc3QgQXRvbVN0
cmluZyBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENv
bnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVD
bGllbnQuY3BwCmluZGV4IDhlOGEyYTRjYTIzZTJiOTNkYTEzNGFmYjUyZDBlOTU3NmM0MDIxNTku
LjNmMDkyNTYzYmQ1MmFjNGE0YmJlZGE0MTVjMjM3YTJkMWRmZGFkYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgdm9pZCBXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwo
TWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmUKIHsKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7
CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwot
ICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
dHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwogICAg
IG1fd29ya2xldEdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNw
cAppbmRleCA0YmI3ODhlYTYzY2Q2YmJkYzUzMjU4N2UwNTEwZDUzMjUyNjA2ZmZhLi5jZWY4MmY3
YjQxMWQyMThjNzMzZDY2ZmE5ZGJhMmQ5MzEyNWFlODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdvcmtsZXRHbG9iYWxTY29wZSk7CiBXb3JrbGV0R2xvYmFs
U2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJj
ZUNvZGUmJiBjb2RlKQogICAgIDogbV9kb2N1bWVudChtYWtlV2Vha1B0cihkb2N1bWVudCkpCiAg
ICAgLCBtX3Nlc3Npb25JRChtX2RvY3VtZW50LT5zZXNzaW9uSUQoKSkKLSAgICAsIG1fc2NyaXB0
KHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAgICwg
bV9zY3JpcHQobWFrZVVuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCiAgICAg
LCBtX3RvcE9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpCiAgICAgLCBtX2V2
ZW50UXVldWUoKnRoaXMpCiAgICAgLCBtX2NvZGUoV1RGTW92ZShjb2RlKSkKQEAgLTYyLDcgKzYy
LDcgQEAgV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY28KICAgICBBU1NFUlQoZG9jdW1lbnQucGFnZSgp
KTsKIAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5Ojpj
cmVhdGUobV90b3BPcmlnaW4uY29weVJlZigpKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9s
aWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX2NvZGUu
dXJsKCkgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fY29kZS51cmwoKSB9LCAqdGhpcykpOwog
fQogCiBXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUoKQpAQCAtMTQwLDcg
KzE0MCw3IEBAIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50
IHx8IGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSB8fCAhbWVzc2FnZSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUo
KSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7CisgICAgbV9kb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgp
LCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKIH0KIAogdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6
OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCAxY2VlOWViMzQyMWNkOTlhNTZjODg2MGI4ZWNkZDQ1OTZmODBkMmRlLi43
MTMzOTAwZjE3MWVlZjQxNTY3M2Q0ZTkwZDVjZjc3Y2ZlYmMyYmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMzYs
NyArMTM2LDcgQEAgdm9pZCBXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhT
dWJjbGFzcygpCiAgICAgQVNTRVJUKG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFs
T2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNP
YmplY3QobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nZXRQcm90b3R5cGVEaXJlY3QoKm1f
dm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyKTsKIAot
ICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2xldENvbnNvbGVDbGll
bnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVu
aXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKICAgICBt
X3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVDbGllbnQobV9jb25zb2xlQ2xp
ZW50LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9y
cy5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCmluZGV4IGIwMjFjY2UxNTNjMzE5
Mjk1MGEyYmY3N2Q4MDlhMjg0N2FiMGYwYzEuLmE2MzI3YjlkZmYxYjc2YmI1ODJjNjM2MDM4MTUy
NDI4YzcxYWE4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiAKIGNsYXNzIFhNTEVycm9ycyB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgWE1MRXJy
b3JzKERvY3VtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4
IDhlNDQyNGVmMjQ2YTM2YTRkYjgxM2MzMDZjYjMyMWZhNGZlYTI1MTMuLjM2NWI1MTU2YzQzZjlh
MTAwYjI4OWEyYjdhYjM0NTQ2MTI3M2M0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9u
c2VVUkwoKSBjb25zdAogWE1MSHR0cFJlcXVlc3RVcGxvYWQmIFhNTEh0dHBSZXF1ZXN0Ojp1cGxv
YWQoKQogewogICAgIGlmICghbV91cGxvYWQpCi0gICAgICAgIG1fdXBsb2FkID0gc3RkOjptYWtl
X3VuaXF1ZTxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oKnRoaXMpOworICAgICAgICBtX3VwbG9hZCA9
IG1ha2VVbmlxdWU8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
dXBsb2FkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCBhZDdl
MTNjOGExOTRhZDU2ZDYyMzQyMDAwMTdjYmE3N2ZlODBiNzQyLi5hOTI0NDA5ZWU0NmM1M2U3M2Iy
N2E0OWExOWVmZTk2OTcyMTY3M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzV2hpdGVzcGFjZShVQ2hh
ciBjKQogICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMg
PT0gJ1x0JzsKIH0KIAotI2RlZmluZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihTdWZmaXgpIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNTdWZmaXgoKSB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZ1biMjU3VmZml4PigpOyB9CisjZGVmaW5lIERFRklO
RV9GVU5DVElPTl9DUkVBVE9SKFN1ZmZpeCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlv
bj4gY3JlYXRlRnVuY3Rpb24jI1N1ZmZpeCgpIHsgcmV0dXJuIG1ha2VVbmlxdWU8RnVuIyNTdWZm
aXg+KCk7IH0KIAogY2xhc3MgSW50ZXJ2YWwgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFByZWRpY2F0ZS5jcHAKaW5kZXggMDQ2MTVjM2Q1ZjAzMTMxMDY5MzhmYWEwNWZiMzljOTljZTEy
M2I1Yy4uYzFiYmM1NGViODMwMTY5MTE5Yzg2ODMxYTRmMmE2ZTdjMDA0NTY4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgYm9vbCBldmFs
dWF0ZVByZWRpY2F0ZShjb25zdCBFeHByZXNzaW9uJiBleHByZXNzaW9uKQogCiAgICAgLy8gZm9v
WzNdIG1lYW5zIGZvb1twb3NpdGlvbigpPTNdCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gRXFUZXN0T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlvbjo6Y3JlYXRl
KCJwb3NpdGlvbiJfcyksIHN0ZDo6bWFrZV91bmlxdWU8TnVtYmVyPihyZXN1bHQudG9OdW1iZXIo
KSkpLmV2YWx1YXRlKCkudG9Cb29sZWFuKCk7CisgICAgICAgIHJldHVybiBFcVRlc3RPcChFcVRl
c3RPcDo6T1BfRVEsIEZ1bmN0aW9uOjpjcmVhdGUoInBvc2l0aW9uIl9zKSwgbWFrZVVuaXF1ZTxO
dW1iZXI+KHJlc3VsdC50b051bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKIAogICAg
IHJldHVybiByZXN1bHQudG9Cb29sZWFuKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXRMaWJ4c2x0LmNwcAppbmRleCBlYzJjNmFlMDQ1OWEwNjkyNTZhNjYyZjcyYzg3MjY3
ZmVhMWE0NWJkLi42MzA0ZTkyODExYTkzNGY3ZGU3NGM4Yzk0YjJiNjljMDA0ZWE0OTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKQEAgLTIzMSw3ICsy
MzEsNyBAQCB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cygpCiAKIHZvaWQgWFNM
U3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmKQogewotICAgIGF1
dG8gY2hpbGRSdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxYU0xJbXBvcnRSdWxlPih0aGlzLCBocmVm
KTsKKyAgICBhdXRvIGNoaWxkUnVsZSA9IG1ha2VVbmlxdWU8WFNMSW1wb3J0UnVsZT4odGhpcywg
aHJlZik7CiAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGRSdWxlLnJlbGVhc2UoKSk7CiAgICAg
bV9jaGlsZHJlbi5sYXN0KCktPmxvYWRTaGVldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCBlMDI0ZWZiNTZiZjY1MmI5MGE5
YTFkNGY4MTMwNjQ5MTgzMGQ4ZTBmLi43MDQ4ODkyYTVhYTBlZjlhNTVmYmQyNDA4Y2QxNzkxNGQw
MmE5Yzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVu
ZChSZWZQdHI8U3RyaW5nSW1wbD4mJiBpbnB1dFNvdXJjZSkKIHZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OmhhbmRsZUVycm9yKFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG0s
IFRleHRQb3NpdGlvbiBwb3NpdGlvbikKIHsKICAgICBpZiAoIW1feG1sRXJyb3JzKQotICAgICAg
ICBtX3htbEVycm9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8WE1MRXJyb3JzPigqZG9jdW1lbnQoKSk7
CisgICAgICAgIG1feG1sRXJyb3JzID0gbWFrZVVuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVudCgp
KTsKICAgICBtX3htbEVycm9ycy0+aGFuZGxlRXJyb3IodHlwZSwgbSwgcG9zaXRpb24pOwogICAg
IGlmICh0eXBlICE9IFhNTEVycm9yczo6d2FybmluZykKICAgICAgICAgbV9zYXdFcnJvciA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKaW5kZXggYjkzMTAxYjhhYWM0ODM5YTM5YmI1NGIyYjg5ZGU4OThjNzli
NzVhYi4uYjk5YjMwODk3Mzg1NTA5ZWJhYjA0NTIxMzk3NTM5YjA3MGNlZTcxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcApAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIHB1YmxpYzoK
ICAgICB2b2lkIGFwcGVuZFN0YXJ0RWxlbWVudE5TQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogeG1s
TG9jYWxOYW1lLCBjb25zdCB4bWxDaGFyKiB4bWxQcmVmaXgsIGNvbnN0IHhtbENoYXIqIHhtbFVS
SSwgaW50IG51bU5hbWVzcGFjZXMsIGNvbnN0IHhtbENoYXIqKiBuYW1lc3BhY2VzLCBpbnQgbnVt
QXR0cmlidXRlcywgaW50IG51bURlZmF1bHRlZCwgY29uc3QgeG1sQ2hhcioqIGF0dHJpYnV0ZXMp
CiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5n
U3RhcnRFbGVtZW50TlNDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VV
bmlxdWU8UGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJh
Y2stPnhtbExvY2FsTmFtZSA9IHhtbFN0cmR1cCh4bWxMb2NhbE5hbWUpOwogICAgICAgICBjYWxs
YmFjay0+eG1sUHJlZml4ID0geG1sU3RyZHVwKHhtbFByZWZpeCk7CkBAIC0xMjIsMTIgKzEyMiwx
MiBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kRW5kRWxlbWVu
dE5TQ2FsbGJhY2soKQogICAgIHsKLSAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8UGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNrPigpKTsKKyAgICAgICAgbV9jYWxs
YmFja3MuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNrPigpKTsK
ICAgICB9CiAKICAgICB2b2lkIGFwcGVuZENoYXJhY3RlcnNDYWxsYmFjayhjb25zdCB4bWxDaGFy
KiBzLCBpbnQgbGVuKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91
bmlxdWU8UGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFj
ayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NoYXJhY3RlcnNDYWxsYmFjaz4oKTsKIAogICAgICAgICBj
YWxsYmFjay0+cyA9IHhtbFN0cm5kdXAocywgbGVuKTsKICAgICAgICAgY2FsbGJhY2stPmxlbiA9
IGxlbjsKQEAgLTEzNyw3ICsxMzcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAg
IHZvaWQgYXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2soY29uc3QgeG1sQ2hhciog
dGFyZ2V0LCBjb25zdCB4bWxDaGFyKiBkYXRhKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFj
ayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNr
PigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvY2Vzc2lu
Z0luc3RydWN0aW9uQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnRhcmdldCA9IHht
bFN0cmR1cCh0YXJnZXQpOwogICAgICAgICBjYWxsYmFjay0+ZGF0YSA9IHhtbFN0cmR1cChkYXRh
KTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZv
aWQgYXBwZW5kQ0RBVEFCbG9ja0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiAg
ICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ0RB
VEFCbG9ja0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQ
ZW5kaW5nQ0RBVEFCbG9ja0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1s
U3RybmR1cChzLCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+bGVuID0gbGVuOwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRDb21t
ZW50Q2FsbGJhY2soY29uc3QgeG1sQ2hhciogcykKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJh
Y2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDb21tZW50Q2FsbGJhY2s+KCk7CisgICAgICAg
IGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDb21tZW50Q2FsbGJhY2s+KCk7CiAK
ICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJkdXAocyk7CiAKQEAgLTE2Niw3ICsxNjYsNyBA
QCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kSW50ZXJuYWxTdWJz
ZXRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBuYW1lLCBjb25zdCB4bWxDaGFyKiBleHRlcm5hbElE
LCBjb25zdCB4bWxDaGFyKiBzeXN0ZW1JRCkKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrPigpOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxs
YmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+bmFtZSA9IHhtbFN0cmR1cChuYW1lKTsKICAg
ICAgICAgY2FsbGJhY2stPmV4dGVybmFsSUQgPSB4bWxTdHJkdXAoZXh0ZXJuYWxJRCk7CkBAIC0x
NzcsNyArMTc3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVu
ZEVycm9yQ2FsbGJhY2soWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgeG1sQ2hhciog
bWVzc2FnZSwgT3JkaW5hbE51bWJlciBsaW5lTnVtYmVyLCBPcmRpbmFsTnVtYmVyIGNvbHVtbk51
bWJlcikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdFcnJvckNhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1
ZTxQZW5kaW5nRXJyb3JDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+bWVzc2FnZSA9
IHhtbFN0cmR1cChtZXNzYWdlKTsKICAgICAgICAgY2FsbGJhY2stPnR5cGUgPSB0eXBlOwpAQCAt
MTk3LDYgKzE5Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiBwcml2YXRlOgogICAg
IHN0cnVjdCBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIHZpcnR1YWwgflBlbmRpbmdDYWxsYmFjaygpID0gZGVmYXVsdDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNhbGwoWE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlcikgPSAw
OwogICAgIH07CkBAIC01NjQsNyArNTY1LDcgQEAgYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6c3Vw
cG9ydHNYTUxWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIFhNTERvY3VtZW50UGFyc2Vy
OjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVW
aWV3KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV92
aWV3KGZyYW1lVmlldykKLSAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhzdGQ6Om1ha2VfdW5pcXVl
PFBlbmRpbmdDYWxsYmFja3M+KCkpCisgICAgLCBtX3BlbmRpbmdDYWxsYmFja3MobWFrZVVuaXF1
ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50Tm9kZSgmZG9jdW1lbnQpCiAg
ICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRp
b24oKSkKIHsKQEAgLTU3Miw3ICs1NzMsNyBAQCBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIAogWE1M
RG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBFbGVtZW50KiBwYXJlbnRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNv
bnRlbnRQb2xpY3kpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9j
dW1lbnQoKSwgcGFyc2VyQ29udGVudFBvbGljeSkKLSAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhz
dGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCisgICAgLCBtX3BlbmRpbmdDYWxs
YmFja3MobWFrZVVuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQogICAgICwgbV9jdXJyZW50Tm9k
ZSgmZnJhZ21lbnQpCiAgICAgLCBtX3NjcmlwdFN0YXJ0UG9zaXRpb24oVGV4dFBvc2l0aW9uOjpi
ZWxvd1JhbmdlUG9zaXRpb24oKSkKICAgICAsIG1fcGFyc2luZ0ZyYWdtZW50KHRydWUpCkBAIC0x
MzI4LDcgKzEzMjksNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCgpCiAgICAgICAg
IHhtbFRyZWVWaWV3ZXIudHJhbnNmb3JtRG9jdW1lbnRUb1RyZWVWaWV3KCk7CiAgICAgfSBlbHNl
IGlmIChtX3Nhd1hTTFRyYW5zZm9ybSkgewogICAgICAgICB4bWxEb2NQdHIgZG9jID0geG1sRG9j
UHRyRm9yU3RyaW5nKGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIG1fb3JpZ2lu
YWxTb3VyY2VGb3JUcmFuc2Zvcm0udG9TdHJpbmcoKSwgZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5n
KCkpOwotICAgICAgICBkb2N1bWVudCgpLT5zZXRUcmFuc2Zvcm1Tb3VyY2Uoc3RkOjptYWtlX3Vu
aXF1ZTxUcmFuc2Zvcm1Tb3VyY2U+KGRvYykpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRUcmFu
c2Zvcm1Tb3VyY2UobWFrZVVuaXF1ZTxUcmFuc2Zvcm1Tb3VyY2U+KGRvYykpOwogCiAgICAgICAg
IGRvY3VtZW50KCktPnNldFBhcnNpbmcoZmFsc2UpOyAvLyBNYWtlIHRoZSBkb2N1bWVudCB0aGlu
ayBpdCdzIGRvbmUsIHNvIGl0IHdpbGwgYXBwbHkgWFNMIHN0eWxlc2hlZXRzLgogICAgICAgICBk
b2N1bWVudCgpLT5hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zTm93SWZTY2hlZHVsZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDA1YmM5NTNmN2YwZGRjNzg3YjFl
NjMwNDg3Njk2YzIwODU5Y2FlMGYuLmQ2OWUxNDk5MmQ1ODY3NTFjYTA0MzQyNjM2MmE2ZjQxYzI2
OTlmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAK
KysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtNjU3LDcgKzY1
Nyw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3NlcihWZWN0b3I8Q2Fw
YWJpbGl0aWVzPiYmIGNhcGFiaWxpdGllc0xpc3QsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIHNlc3Npb25Ib3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXNzaW9uSG9zdD4oY2Fw
YWJpbGl0aWVzTGlzdC50YWtlTGFzdCgpKTsKKyAgICBhdXRvIHNlc3Npb25Ib3N0ID0gbWFrZVVu
aXF1ZTxTZXNzaW9uSG9zdD4oY2FwYWJpbGl0aWVzTGlzdC50YWtlTGFzdCgpKTsKICAgICBhdXRv
KiBzZXNzaW9uSG9zdFB0ciA9IHNlc3Npb25Ib3N0LmdldCgpOwogICAgIHNlc3Npb25Ib3N0UHRy
LT5jb25uZWN0VG9Ccm93c2VyKFt0aGlzLCBjYXBhYmlsaXRpZXNMaXN0ID0gV1RGTW92ZShjYXBh
YmlsaXRpZXNMaXN0KSwgc2Vzc2lvbkhvc3QgPSBXVEZNb3ZlKHNlc3Npb25Ib3N0KSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8U3RyaW5n
PiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvcikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVy
L2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAppbmRleCA3YTIwYjg5NDFhZmY3MmE4NTJiNzZmNWM1
NTEwNjI2NTQ3NzRhMWNjLi4xNzdhYTU0ZjIyMjk3YWMzMTYxNGQzNTNiZTlmM2E3OWQxYWFiMTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApAQCAtMTEzLDYg
KzExMyw3IEBAIGJvb2wgU2Vzc2lvbkhvc3Q6OmlzQ29ubmVjdGVkKCkgY29uc3QKIH0KIAogc3Ry
dWN0IENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICBDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhKFNlc3Npb25Ib3N0KiBz
ZXNzaW9uSG9zdCwgR1VuaXF1ZVB0cjxjaGFyPiYmIGRidXNBZGRyZXNzLCBHQ2FuY2VsbGFibGUq
IGNhbmNlbGxhYmxlLCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBzZXNzaW9uSG9zdChzZXNzaW9uSG9zdCkKICAg
ICAgICAgLCBkYnVzQWRkcmVzcyhXVEZNb3ZlKGRidXNBZGRyZXNzKSkKQEAgLTE3Myw3ICsxNzQs
NyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZQogICAgIH0sIHRoaXMpOwogCiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBkYnVzQWRkcmVzcyhnX3N0cmR1cF9wcmludGYoInRjcDpob3N0PSVzLHBvcnQ9
JXUiLCAiMTI3LjAuMC4xIiwgcG9ydCkpOwotICAgIGNvbm5lY3RUb0Jyb3dzZXIoc3RkOjptYWtl
X3VuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPih0aGlzLCBXVEZNb3ZlKGRidXNBZGRy
ZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsK
KyAgICBjb25uZWN0VG9Ccm93c2VyKG1ha2VVbmlxdWU8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0
YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFibGUuZ2V0KCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQgU2Vzc2lvbkhvc3Q6OmNvbm5lY3RU
b0Jyb3dzZXIoc3RkOjp1bmlxdWVfcHRyPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+JiYgZGF0
YSkKQEAgLTM3MSw2ICszNzIsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvRnJv
bnRlbmQodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRAogfQogCiBzdHJ1
Y3QgTWVzc2FnZUNvbnRleHQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICBsb25nIG1lc3NhZ2VJRDsKICAgICBTZXNzaW9uSG9zdCogaG9zdDsKIH07CkBAIC0zODEs
NyArMzgzLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQobG9uZyBt
ZXNzYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQobV9jb25uZWN0aW9u
SUQpOwogICAgIEFTU0VSVChtX3RhcmdldC5pZCk7CiAKLSAgICBhdXRvIG1lc3NhZ2VDb250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2FnZUNvbnRleHQgeyBtZXNz
YWdlSUQsIHRoaXMgfSk7CisgICAgYXV0byBtZXNzYWdlQ29udGV4dCA9IG1ha2VVbmlxdWU8TWVz
c2FnZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlELCB0aGlzIH0pOwogICAgIGdf
ZGJ1c19jb25uZWN0aW9uX2NhbGwobV9kYnVzQ29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwKICAg
ICAgICAgSU5TUEVDVE9SX0RCVVNfT0JKRUNUX1BBVEgsCiAgICAgICAgIElOU1BFQ1RPUl9EQlVT
X0lOVEVSRkFDRSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9B
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKaW5kZXggYjYyZjEyZTE4MmYyMWViOGQ1MTA3NGNi
MjU0ZDdiMjEyZTBjZWQxOS4uYjQ0NWU3YTY1YTQ4ZDA3NDhiZDdlOTIwNWEzNDQwZjdmMWE5NTZj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNr
QXR0cmlidXRpb25NYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IDJlMjk2YjI5ZjQzYTRmYzg4ZTcw
MDkzMjRhNWUyM2IwYmU5Y2Q1MWMuLjkzMDNkMmFkYzE1ZWY2ZmIzMTBiNmZiMTZkMDcwY2M4NTNm
ZGMzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2soKQogICAg
IGlmIChyZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2ZpbGVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4ocmVzb3VyY2VMb2dQ
YXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9maWxl
TW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwgbV93b3Jr
UXVldWUuY29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0
b3I+KHN0b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0
b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBtX2ZpbGVNb25pdG9yID0gbWFrZVVuaXF1
ZTxGaWxlTW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXNd
IChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKHR5cGUgPT0gRmlsZU1vbml0b3I6OkZpbGVD
aGFuZ2VUeXBlOjpSZW1vdmFsKSB7CiAgICAgICAgICAgICAvLyBEaXJlY3Rvcnkgd2FzIHJlbW92
ZWQhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmgKaW5kZXggNGMwMzNlMzUzZDRmMzA4ZjdmNzYwMDEyY2E5NjI5NjMwM2MxMDcz
MC4uNzFmMzRiZmEzZDZjMmI1Mjc2MTY4OTQ0ZWUzMzRjNzNkYWY1MDMyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaApA
QCAtNDUsNiArNDUsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU7
CiAKIC8vIENhbiBvbmx5IGJlIGNvbnN0cnVjdGVkIC8gZGVzdHJveWVkIC8gdXNlZCBmcm9tIHRo
ZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWMgcXVldWUuCiBjbGFz
cyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYs
IFdvcmtRdWV1ZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogICAgIH5S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA3MGFjYmRjZTk2ZjY1Y2Y4M2E5NDYzN2Qz
ZmI4ZDFlOWIyNjU1M2RkLi5hMGNlZjZmMzFiNDk2NjJlNWY5MjAzY2NmOGIxOTA4N2UzMGU4NGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC03Nyw2ICs3
Nyw3IEBAIGVudW0gY2xhc3MgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgOiBib29sIHsgTG9uZywgU2hv
cnQgfTsKIAogLy8gVGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVk
IG9uIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVl
LgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDhjMjExNTdjYzdmNjkxN2JhOTcwODllMzZm
MTY5ZDg2Y2Y4YjhhYjAuLmExYzA3ZjM2YTZmOGZmZmNkNzYwMzhkZDZjZWFjYmNhNjQ3ZWIxYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBA
IC0xNTksMTUgKzE1OSwxNSBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYgbgogICAgIAogICAgIHBv
c3RUYXNrKFt0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeS5pc29sYXRlZENvcHkoKSwgc2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdF0gewogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5pc0lUUERhdGFiYXNlRW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NT
dG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NT
dG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCp0
aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAKLSAgICAgICAgICAgIGF1dG8gbWVtb3J5U3RvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRo
aXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAg
ICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNzUXVl
dWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgYXV0byBt
ZW1vcnlTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
PigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAg
ICAgICAgICAgYXV0byBwZXJzaXN0ZW50U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBtX3N0YXRpc3RpY3NRdWV1
ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAKICAgICAgICAgICAgIGRvd25j
YXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqbV9zdGF0aXN0aWNzU3Rv
cmUuZ2V0KCkpLnBvcHVsYXRlRnJvbU1lbW9yeVN0b3JlKCptZW1vcnlTdG9yZSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNz
UXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAgICAgICAgICAgbV9wZXJzaXN0ZW50
U3RvcmFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCpt
X3N0YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gbWFrZVVuaXF1
ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NR
dWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CisgICAgICAgICAgICBtX3BlcnNpc3RlbnRT
dG9yYWdlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2U+KGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3RhdGlz
dGljc1N0b3JlKSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUUoMTkzMjk3KTogVGhpcyBzaG91
bGQgYmUgcmV2aXNlZCBhZnRlciB0aGUgVUlQcm9jZXNzIHZlcnNpb24gZ29lcyBhd2F5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmgKaW5kZXggNjA1YWVmM2U2ZWU5NTBmMzk0ODNmY2Q4Y2M0ZDhlNjU4ZTAyY2YwYy4u
YmJlMzk4NDc1MmJlMTQ2MDUwZDUwMzU3MTM3MTU1MGZiMmNiNjNhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5o
CkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Byb2Nl
c3M7CiAKIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBw
bGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvb2tpZU1hbmFnZXIpOwog
cHVibGljOgogICAgIFdlYkNvb2tpZU1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZGM3OWVlYmNm
MThkYmY2N2I0NjRjMzU4NjEwZmIzY2U3Y2ZlOTBjYy4uZjkwZjBmY2I0MTkwMjRiOGE5NWY1Nzcw
YzliNzk5N2I1Nzg0YjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyLmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBz
dHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKTsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoTmV0d29y
a1Byb2Nlc3MmKTsKQEAgLTc4LDYgKzc5LDcgQEAgY2xhc3MgTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzoKICNl
bmRpZgogI2lmIFVTRShTT1VQKQogICAgIHN0cnVjdCBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV2ViU291
cFJlcXVlc3RBc3luY0RhdGEoR1JlZlB0cjxHVGFzaz4mJiwgV2ViS2l0U291cFJlcXVlc3RHZW5l
cmljKik7CiAgICAgICAgIH5XZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3Vw
LmNwcAppbmRleCAyYzRkMmZmOTQ4MDljNDJhNjExNjczYjVmYjVjYWRiZmE1OTE2MDRlLi5jOWIw
YzNiMjE1N2FkOGFlYmU3NDZmNGYzOWZiNWVmY2Q3NWU3MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAK
QEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0Q2xpZW50IGZpbmFs
IDogcHVibGljIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsaWVudAogICAgICAgICBpZiAoIWN1
c3RvbVByb3RvY29sTWFuYWdlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRv
IGN1c3RvbVByb3RvY29sSUQgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXItPmFkZEN1c3RvbVByb3Rv
Y29sKHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpXZWJTb3Vw
UmVxdWVzdEFzeW5jRGF0YT4oV1RGTW92ZSh0YXNrKSwgcmVxdWVzdCkpOworICAgICAgICBhdXRv
IGN1c3RvbVByb3RvY29sSUQgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXItPmFkZEN1c3RvbVByb3Rv
Y29sKG1ha2VVbmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpXZWJTb3VwUmVxdWVz
dEFzeW5jRGF0YT4oV1RGTW92ZSh0YXNrKSwgcmVxdWVzdCkpOwogICAgICAgICBjdXN0b21Qcm90
b2NvbE1hbmFnZXItPnN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElELCB3ZWJraXRTb3VwUmVx
dWVzdEdlbmVyaWNHZXRSZXF1ZXN0KHJlcXVlc3QpKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAKaW5kZXggZjRkNzVkOWRkMzE4MjAwNDQ5YTJhYjJlNThlODg2MzEyMGM3Nzc0NC4uNTA3
ZjRmNmZmYzNkNDA2OWMxMzc4MjY1Mjc1YzY2MDY1NGI0YzgzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2Fk
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hCiAgICAgICAgIHBh
cmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKS0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CiAgICAg
cGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0VwaGVtZXJh
bCgpID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OlVzZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwg
c3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQs
ICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJs
b2JSZWdpc3RyeSgpLCBzdWdnZXN0ZWROYW1lKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBtYWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93
bmxvYWRJRCwgKm5ldHdvcmtTZXNzaW9uLCAmY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKS0+YmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKIH0KIAogdm9pZCBEb3dubG9h
ZE1hbmFnZXI6OmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPiYmIGRvd25sb2FkKQpAQCAtOTAsNyArOTAsNyBA
QCB2b2lkIERvd25sb2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0
aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0dwogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnRO
ZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0xvYWQ+JiYgbmV0d29ya0xvYWQsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlciwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+PiYmIGJsb2JGaWxlUmVmZXJlbmNlcywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQo
IW1fcGVuZGluZ0Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7Ci0gICAgbV9wZW5kaW5n
RG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9h
ZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92
ZShuZXR3b3JrTG9hZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCBy
ZXF1ZXN0LCByZXNwb25zZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJ
RCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUobmV0d29ya0xvYWQpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRp
b24oRG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3Jp
dGUpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25s
b2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICNpZiAhUExB
VEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbHNlCi0gICAgYXV0byBkb3du
bG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxs
cHRyLCBzZXNzaW9uSUQpOworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2Fk
PigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKIAogICAgIGRvd25sb2Fk
LT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KSk7CiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
cC5jcHAKaW5kZXggYTg4NGFjYjI5NWQ0MmNlOTNlMjFiYWM0MzMwODRkN2JiYzQzM2U2NS4uYWUz
Y2E3ZTBlNGVlN2VjODVkZWEyZTMwOWUxZDNjMjBiNzQ5NjUwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBEb3dubG9hZE1hcDo6RG93bmxvYWRNYXBUeXBlOjpBZGRSZXN1bHQgRG93
bmxvYWRNYXA6OmFkZChEb3dubG9hZElEIGRvd25sb2FkSUQsCiAgICAgYXV0byByZXN1bHQgPSBt
X2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGlmICht
X2Rvd25sb2Fkcy5zaXplKCkgPT0gMSkgewogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRBc3Nl
cnRpb24pOwotICAgICAgICBtX2Rvd25sb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlv
blN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZEFzc2VydGlv
biA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0cGlkKCksICJXZWJLaXQgZG93bmxv
YWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAgICAgICAgIFJF
TEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVG9vayAnV2ViS2l0IGRvd25sb2FkcycgYXNz
ZXJ0aW9uIGluIE5ldHdvcmtQcm9jZXNzIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcApp
bmRleCBhMjc4MjhkN2E4YmQ4NGE3YWUzNzcxNjg2Nzg2OTFjNzY3ZjI3OTZkLi41OTEyM2YyYzQ4
ZjFjMWU0MTc5YmIxZDViY2UxNTcwYzZiNzU0ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogUGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoSVBDOjpDb25uZWN0aW9uKiBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgRG93bmxvYWRJRCBkb3dubG9hZElELCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24s
IFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWROYW1lKQotICAgIDogbV9uZXR3b3JrTG9hZChzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtMb2FkPigqdGhpcywgYmxvYlJlZ2lzdHJ5LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBuZXR3b3Jr
U2Vzc2lvbikpCisgICAgOiBtX25ldHdvcmtMb2FkKG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0
aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNzaW9uKSkK
ICAgICAsIG1fcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24p
CiB7CiAgICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IHBhcmFtZXRlcnMu
Y2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tD
bGllbnRGb3JDcmVkZW50aWFsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMWYx
MDA0ZTFiNWJjZDM5ZDhiMTIyZGY4YzZkYTQ4ZDEzN2M0YmU2MS4uMzAxZGJlMzc4MzAxNjc5MmFj
MTM1ZDMwZTY5ODEyMGJhMDIwYjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAg
LTkwMyw3ICs5MDMsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJl
Z2lzdGVyU1dDb25uZWN0aW9ucygpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3
b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0byBjb25u
ZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29y
a1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOworICAgIGF1
dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdv
cmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKICAgICAK
ICAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyID0gY29ubmVjdGlvbi0+aWRlbnRpZmllcigpOwogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlv
biAtICVzIiwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcAppbmRleCA0NDQyMGZmNWZmMjI5
OWJlMzc1NGNlMzdjZGRjN2VlNjE2MmUxOTMxLi41NDM1MjgyOGU2ODcyMWFmMGJhZGUwYzAyNzVi
ZTJmMDk1YTE2NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcApAQCAtNjksNyArNjks
NyBAQCB2b2lkIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpjb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQoVXNlckNvbnRlbnRDb250cm9sbAogdm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRl
bnRSdWxlTGlzdERhdGE+PiYmIGNvbnRlbnRSdWxlTGlzdHMpCiB7CiAgICAgYXV0byYgYmFja2Vu
ZCA9ICptX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kcy5lbnN1cmUoaWRlbnRpZmllciwgW10gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigp
OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGZvciAoYXV0byYmIGNvbnRlbnRSdWxl
TGlzdCA6IGNvbnRlbnRSdWxlTGlzdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDg1NmNhMWYwOTVlMTAzYzU0
MmFkNGU0MzAwMGJjYjcwZmYxZmIzMDcuLjhhNmM1YTFmMjE4ZDNjOWFiMjEwNGRmMDk0NjkyY2Mz
ZjY1NTIyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
Y29uc3Qgd2ViS2l0QmxvYlJlc291cmNlRG9tYWluID0gIldlYktpdEJsb2JSZXNvdXJjZSI7CiAK
IE5ldHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIEJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSwgTmV0d29ya0RhdGFUYXNr
Q2xpZW50JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ29udGVudFNu
aWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYgZmlsZVJlZmVyZW5jZXMpCiAgICAgOiBOZXR3
b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6RG9Ob3RVc2UsIGZhbHNlLCBmYWxzZSkKLSAgICAsIG1fc3RyZWFtKHN0ZDo6bWFrZV91
bmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCisgICAgLCBtX3N0cmVhbShtYWtlVW5pcXVl
PEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpKQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhmaWxlUmVm
ZXJlbmNlcykKICAgICAsIG1fbmV0d29ya1Byb2Nlc3Moc2Vzc2lvbi5uZXR3b3JrUHJvY2Vzcygp
KQogewpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxv
YWQoKQogICAgIH0KIAogICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IG1fbmV0d29ya1Byb2Nl
c3MtPmRvd25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5p
cXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlz
LCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICBhdXRv
IGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRp
bmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmls
ZW5hbWUoKSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9hZC5nZXQoKTsKICAgICBk
b3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5nRG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0
aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAK
aW5kZXggZjY1NDI5NThiNDcxMDNkMzgxZjhjYzUzNzBkOWQ2YjU5NGRjMTE2Yy4uMTkzMjZmMmY0
N2RjOWY0ZjYyMjhhNGM5YWE4NGY2YzlmYWFiYjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIG1fZGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNl
PigpOworICAgICAgICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZT4oKTsKICAgICAgICAgYm9vbCBpc0RhdGFiYXNlT3BlbiA9IG1fZGF0YWJhc2UtPm9wZW4o
cGF0aCwgV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Ok9wZW5Nb2RlOjpSZWFkT25seSk7CiAgICAg
ICAgIGlmICghaXNEYXRhYmFzZU9wZW4pIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTgwLDcg
KzgwLDcgQEAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyKCkKICAgICAgICAgLy8gU2luY2Ugd2UgYXJlIHVzaW5nIGEgd29ya2VyUXVldWUsIHRo
ZSBzZXF1ZW50aWFsIGRpc3BhdGNoIGJsb2NrcyBtYXkgYmUgY2FsbGVkIGJ5IGRpZmZlcmVudCB0
aHJlYWRzLgogICAgICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAK
LSAgICAgICAgbV9zdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4oKm1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CisgICAgICAg
IG1fc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KCptX2Rh
dGFiYXNlLCBodHRwc1VwZ3JhZGVDaGVja2VyUXVlcnkpOwogICAgICAgICBpbnQgaXNTdGF0ZW1l
bnRQcmVwYXJlZCA9IChtX3N0YXRlbWVudC0+cHJlcGFyZSgpID09IFNRTElURV9PSyk7CiAgICAg
ICAgIEFTU0VSVChpc1N0YXRlbWVudFByZXBhcmVkKTsKICAgICAgICAgaWYgKCFpc1N0YXRlbWVu
dFByZXBhcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCmluZGV4IGRjZDQ2YTYwMWJlNjMwOTg2ZmMyYWUw
YzFjOTY1NThjOTU5MjIwOGEuLjUxZDIwMzE0ZWFhNDllOTZhNDFhNTdjZThkNDIyMjZiYmZiMDcy
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBT
VXBncmFkZUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgU2Vzc2lvbklE
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOZXR3b3JrSFRU
UFNVcGdyYWRlQ2hlY2tlcigpOwogICAgIH5OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCA5MTA3
ZmVjMWUzNGRiNDQ4ODE2MjI4Njg2MjJjOGZiZWI1YjM4ODNjLi5lZTgwYWM2ZWExYTc3OTc3M2Ew
NzEwZTE3ODg3MDYzNzY3YzUxMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29t
cGxlCiAgICAgfQogCiAgICAgaWYgKG1fbG9hZFRocm90dGxlTGF0ZW5jeSA+IDBfcykgewotICAg
ICAgICBtX3Rocm90dGxlID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJvdHRsZT4oKnRoaXMsIG1fbG9h
ZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgbV90aHJvdHRsZSA9IG1ha2VVbmlxdWU8VGhyb3R0bGU+KCp0aGlz
LCBtX2xvYWRUaHJvdHRsZUxhdGVuY3ksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCA0MDk3
MTRkNjY3MjZhODQ3NGFmZjI5YTE2MDgxN2YyNDc5NjdiMDE2Li5lMWFlMDBiZDlkOTU0Nzc3ODE3
NDM5ODVkZjA3M2E4YjFjZDI1MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBO
ZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QKICAgICAgICAgbV9mcmFtZUlELAogICAgICAgICBtX3N0b3JlZENy
ZWRlbnRpYWxzUG9saWN5CiAgICAgfTsKLSAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+KG1fbmV0d29ya1Byb2Nl
c3MuZ2V0KCksIFdURk1vdmUocGFyYW1ldGVycyksIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzLCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIg
PSBXVEZNb3ZlKGhhbmRsZXIpLCBpc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQoKV0oYXV0byYm
IGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gbWFrZVVuaXF1
ZTxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+KG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCksIFdU
Rk1vdmUocGFyYW1ldGVycyksIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
LCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpLCBpc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQoKV0oYXV0byYmIGVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tDT1JTUmVxdWVzdFdp
dGhQcmVmbGlnaHQgLSBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCBw
cmVmbGlnaHQgY29tcGxldGUsIHN1Y2Nlc3M6ICVkIGZvclJlZGlyZWN0PyAlZCIsIGVycm9yLmlz
TnVsbCgpLCBpc1JlZGlyZWN0ZWQpOwogCiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsK
QEAgLTQ0Niw3ICs0NDYsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KCkKIHsKICAgICBpZiAoIW1fY29udGVudFNlY3Vy
aXR5UG9saWN5ICYmIG1fY3NwUmVzcG9uc2VIZWFkZXJzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQ
YXNzIHRoZSBVUkwgb2YgdGhlIHByb3RlY3RlZCByZXNvdXJjZSBpbnN0ZWFkIG9mIGl0cyBvcmln
aW4uCi0gICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygp
IH0pOworICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1ha2VVbmlxdWU8Q29udGVu
dFNlY3VyaXR5UG9saWN5PihVUkwgeyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJpbmcoKSB9KTsK
ICAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJzKCptX2Nz
cFJlc3BvbnNlSGVhZGVycywgU3RyaW5nIHsgbV9yZWZlcnJlciB9LCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydFBhcnNpbmdFcnJvcnM6Ok5vKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY29u
dGVudFNlY3VyaXR5UG9saWN5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBlODIwYjI5YzIwZjUxOWZiNWUzZGQ4OGE4YmVm
NjQ2NTQwNjg2YjBiLi40ZGM4MjU2NDZiMmJmNzdmYmNhOTE3Yzk1YzI3YjRlNDZmNTViNTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtNTAzLDkgKzUwMyw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKQogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3Rv
cmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9u
LmdldCgpKSk7CiAgICAgfQogCi0gICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29v
a2llU3RvcmFnZSkpOworICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2Up
KTsKICNlbGlmIFVTRShDVVJMKSB8fCBVU0UoU09VUCkKLSAgICBtX2RlZmF1bHROZXR3b3JrU3Rv
cmFnZVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgbV9kZWZhdWx0
TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogI2VuZGlmCiB9
CiAKQEAgLTUzNSw5ICs1MzUsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVTZXNzaW9u
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZwogICAgICAgICAg
ICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2ll
U3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAg
IH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwg
V1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3Rv
cmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKICNlbGlmIFVTRShDVVJMKSB8
fCBVU0UoU09VUCkKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CisgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9u
SUQpOwogI2VuZGlmCiB9CiAKQEAgLTI0NTMsNyArMjQ1Myw3IEBAIFNXU2VydmVyJiBOZXR3b3Jr
UHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAg
ICAgICAgLy8gSWYgdGhlcmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9u
SUQgY29tZSBmcm9tPwogICAgICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwg
IXBhdGguaXNFbXB0eSgpKTsKICAgICAgICAgCi0gICAgICAgIGF1dG8gdmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIFdU
Rk1vdmUocGF0aCksIHNlc3Npb25JRCk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBtYWtlVW5pcXVl
PFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIFdURk1vdmUocGF0
aCksIHNlc3Npb25JRCk7CiAgICAgICAgIGlmIChtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkpCiAgICAgICAgICAgICB2YWx1ZS0+ZGlzYWJsZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogICAgICAgICByZXR1cm4gdmFsdWU7
CkBAIC0yNTY1LDYgKzI1NjUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFn
ZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50TwogfQogCiBjbGFz
cyBRdW90YVVzZXJJbml0aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlUXVv
dGFVc2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBRdW90YVVzZXJJbml0aWFsaXplcihTdG9yYWdlUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKQog
ICAgICAgICA6IG1fbWFuYWdlcihtYWtlV2Vha1B0cihtYW5hZ2VyKSkKQEAgLTI1OTksNyArMjYw
MCw3IEBAIGNsYXNzIFF1b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlN0b3JhZ2VRdW90YVVzZXIgewogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUXVv
dGFVc2VycyhTdG9yYWdlUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklE
LCBvcmlnaW4sIHVzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPiht
YW5hZ2VyKV0oKSBtdXRhYmxlIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgb3JpZ2luLCB1c2VyID0g
bWFrZVVuaXF1ZTxRdW90YVVzZXJJbml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMt
PmlkYlNlcnZlcihzZXNzaW9uSUQpLmluaXRpYWxpemVRdW90YVVzZXIob3JpZ2luKTsKQEAgLTI2
MTMsNyArMjYxNCw3IEBAIFN0b3JhZ2VRdW90YU1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpzdG9y
YWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiAgICAgICAgIHJldHVybiBT
dG9yYWdlUXVvdGFNYW5hZ2VycyB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJl
dHVybiAqc3RvcmFnZVF1b3RhTWFuYWdlcnMubWFuYWdlcnNQZXJPcmlnaW4oKS5lbnN1cmUob3Jp
Z2luLCBbdGhpcywgJnN0b3JhZ2VRdW90YU1hbmFnZXJzLCBzZXNzaW9uSUQsICZvcmlnaW5dIHsK
LSAgICAgICAgYXV0byBtYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlUXVvdGFNYW5h
Z2VyPihzdG9yYWdlUXVvdGFNYW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNl
c3Npb25JRCwgb3JpZ2luXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1
aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAgICAgIGF1dG8gbWFu
YWdlciA9IG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFuYWdl
cnMuZGVmYXVsdFF1b3RhKG9yaWdpbiksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0odWludDY0
X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwg
YXV0byBjYWxsYmFjaykgewogICAgICAgICAgICAgdGhpcy0+cmVxdWVzdFN0b3JhZ2VTcGFjZShz
ZXNzaW9uSUQsIG9yaWdpbiwgcXVvdGEsIGN1cnJlbnRTcGFjZSwgc3BhY2VJbmNyZWFzZSwgV1RG
TW92ZShjYWxsYmFjaykpOwogICAgICAgICB9KTsKICAgICAgICAgaW5pdGlhbGl6ZVF1b3RhVXNl
cnMoKm1hbmFnZXIsIHNlc3Npb25JRCwgb3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAxYmViN2I2NWRiNjMwYzNiMzI4YmIxNWNm
YzNiMzExNmI0Yjk5NGQ2Li5hOTVhMmRlNzllYWRkZDQ4MDk0MzQ0YmY3Y2EyNjZjZGIzZjc2ZDA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBA
IC0xNTIsNyArMTUyLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMgQXV4aWxpYXJ5
UHJvY2VzcywgcHJpdmF0ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudCwKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgbV9z
dXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPigq
dGhpcykpOworICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBt
YWtlVW5pcXVlPFQ+KCp0aGlzKSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDQ3ODJlZjE1ZjNkZWVlNWFmNGVhZWYwNWNkZjYwMzZhZTdlNmQyZmIuLjhj
MzNmYjg2MGFkN2E3ODczNmU0YjhmYmFkZjIwYzc3NTUzMjllN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTExMSw3ICsxMTEsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogCiAgICAgaWYgKHN5bmNo
cm9ub3VzUmVwbHkgfHwgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2Vz
cyB8fCBwYXJhbWV0ZXJzLm9wdGlvbnMua2VlcEFsaXZlKSB7CiAgICAgICAgIE5ldHdvcmtMb2Fk
Q2hlY2tlcjo6TG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gaXNNYWluRnJhbWVMb2FkKCkgPyBO
ZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlOjpNYWluRnJhbWUgOiBOZXR3b3JrTG9hZENoZWNr
ZXI6OkxvYWRUeXBlOjpPdGhlcjsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vz
cygpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMu
c2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgSFRUUEhlYWRlck1hcCB7IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0s
IFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VP
cmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJl
cXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxl
ZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlw
ZSk7CisgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9h
ZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsgbV9w
YXJhbWV0ZXJzLm9wdGlvbnMgfSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBtX3Bh
cmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVx
dWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJh
bWV0ZXJzLnByZWZsaWdodFBvbGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCks
IG1fcGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcygpLCByZXF1ZXN0TG9hZFR5cGUpOwogICAgICAgICBpZiAobV9wYXJh
bWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycykKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVj
a2VyLT5zZXRDU1BSZXNwb25zZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzIHsgbV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpIH0pOwogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC0xMTksNyArMTE5LDcgQEAgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBwYXIKICNlbmRpZgogICAgIH0KICAgICBpZiAoc3luY2hyb25vdXNSZXBseSkK
LSAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJv
bm91c0xvYWREYXRhPihXVEZNb3ZlKHN5bmNocm9ub3VzUmVwbHkpKTsKKyAgICAgICAgbV9zeW5j
aHJvbm91c0xvYWREYXRhID0gbWFrZVVuaXF1ZTxTeW5jaHJvbm91c0xvYWREYXRhPihXVEZNb3Zl
KHN5bmNocm9ub3VzUmVwbHkpKTsKIH0KIAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjp+TmV0d29y
a1Jlc291cmNlTG9hZGVyKCkKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJz
dExvYQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IG5ldHdvcmtTZXNz
aW9uLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSk7
CiAKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwotICAgIG1fbmV0
d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm5ldHdvcmtT
ZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNz
aW9uKTsKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMs
ICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpu
ZXR3b3JrU2Vzc2lvbik7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdv
cmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgp
LmRhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKaW5kZXggNTA2ZTdmZjA4ZmJjOWE3NjRlYTgzMDMwOTRiNmQzMDY3NGEzZjNhNC4uMzM1
YjE5YmZiMDkwNTBhN2ZiYWQzMzM4NDdiMWM0ZjUyY2NjNjA3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNjUsNiArNjUsNyBAQCBjbGFz
cyBDYWNoZTsKIH0KIAogY2xhc3MgTmV0d29ya1Nlc3Npb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8TmV0d29ya1Nlc3Npb24+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0
d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2
aXJ0dWFsIH5OZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRleCAwNGUzZDAyNTIyMGRlNGM0
M2M3MzYyZGExNDFkZjMyYmEyMDMwZmFmLi41OTE4ODU3NTdhODQ3NTFjODMxOGY3YmU1ZDI3NWE3
ZjExYzVhNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBOZXR3b3Jr
U29ja2V0Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3QgaWRlbnRpZmllcikKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1NvY2tldENoYW5uZWw+
KGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7CisgICAgYXV0byByZXN1
bHQgPSBtYWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwg
cHJvdG9jb2wsIGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0LT5tX3NvY2tldCkgewogICAg
ICAgICByZXN1bHQtPmRpZENsb3NlKDAsICJDYW5ub3QgY3JlYXRlIGEgd2ViIHNvY2tldCB0YXNr
Il9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXggNjcyYjM3ODFhNGQ0YTM0
YjljMWUxZTI0MTViZDQ5MTBlNzc5ZWQ3MS4uOWRmOWFhY2RjYjMzMmUwNDFkYjY5YmQwNjgxMDIy
OWNmOGJiNGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1NvY2tldENoYW5uZWwuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vz
czsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbCA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4
IGQ5MGNjY2E5ODBhOGVmZmMyZDRmMzhmNWUzZjZiYzBhYTJjMmU1NDYuLjJjNjQyN2U2NDgyMmNl
ZjVkMWE4MTIwMjVlZmQ2Yzg1NDU0MWNlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC01Myw3ICs1Myw3IEBAIFByZWNvbm5lY3RU
YXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdv
cmtMb2FkUGFyYW1lCiAgICAgfQogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMuc2hvdWxkUHJlY29u
bmVjdE9ubHkgPT0gUHJlY29ubmVjdE9ubHk6Olllcyk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0
ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVl
PE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdv
cmtTZXNzaW9uKTsKIAogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdCg2MDAwMF9zKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFz
ay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKaW5kZXgg
M2E1OWZmYTZhMWEwOGQ2M2RlNWJmZjU5ZTNmNjk0NmYwZTQwOGViNC4uMDQ3OTkyMDg5NmRhMjU3
ZmM1ODY0NTE2MGMwMDA5ZDE2NGNlNWZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTb2NrZXRUYXNrLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBXZWJTb2NrZXRUYXNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIHVpbnQ2NF90IFRhc2tJZGVudGlmaWVyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCBiZjUxNTc4ZmIxNDdkZGRjODdlNjZkOTBhNWVk
ZDAyYTRjZDcyNjkzLi5jYzg3ODRkNDI4M2E2MjVmYzBlMWQ5ZWZhYTUyNzA1MjNhYzcxMTgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lk
IExvY2FsU3RvcmFnZURhdGFiYXNlOjpzY2hlZHVsZURhdGFiYXNlVXBkYXRlKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGlu
Z1RvTG9jYWxTdG9yYWdlKQotICAgICAgICBtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxl
V3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdWRkZW5UZXJtaW5hdGlv
bkRpc2FibGVyPigpOworICAgICAgICBtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3Jp
dGluZ1RvTG9jYWxTdG9yYWdlID0gbWFrZVVuaXF1ZTxTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVy
PigpOwogCiAgICAgbV9kaWRTY2hlZHVsZURhdGFiYXNlVXBkYXRlID0gdHJ1ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmlu
ZGV4IDNlOWQxN2Q2MDJkMzQxNzcwMzNjOTMzOGI0YmJlNmRhMGJhYmE4YTQuLmIwODNkNWQzMmE1
MWU2MWRhNDM3NmRmOTQ0NmVmMTExNGVhNmJmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTg0LDE3ICs4NCwxNyBA
QCBDYWNoZTo6Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBSZWY8U3RvcmFn
ZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8QwogewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQ
RUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhDYWNoZU9w
dGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7Ci0gICAgICAgIG1fbG93UG93ZXJNb2Rl
Tm90aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVy
PihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKKyAgICAgICAgbV9sb3dQb3dl
ck1vZGVOb3RpZmllciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TG93UG93ZXJNb2RlTm90aWZpZXI+
KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgewogICAgICAgICAgICAgQVNTRVJU
KFdURjo6UnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKGlzTG93UG93ZXJNb2Rl
RW5hYmxlZCkKICAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBudWxs
cHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3NwZWN1
bGF0aXZlTG9hZE1hbmFnZXIpOwotICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFu
YWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1f
c3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
ID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdl
dCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIGlmICghbV9sb3dQb3dl
ck1vZGVOb3RpZmllci0+aXNMb3dQb3dlck1vZGVFbmFibGVkKCkpCi0gICAgICAgICAgICBtX3Nw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOworICAgICAgICAgICAgbV9zcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywg
bV9zdG9yYWdlLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzc1LDEyICszNzUsMTIgQEAg
dm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYg
aGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2Fj
aGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNw
b25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQ
cm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9u
c2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0
SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0
LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlUmVk
aXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNz
KCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3
b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0
YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC00
NTcsNyArNDU3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6dXBkYXRlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXEKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gZXhpc3RpbmdFbnRyeS5yZXNwb25zZSgpOwogICAgIFdl
YkNvcmU6OnVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9uKHJlc3BvbnNlLCB2
YWxpZGF0aW5nUmVzcG9uc2UpOwogCi0gICAgYXV0byB1cGRhdGVFbnRyeSA9IHN0ZDo6bWFrZV91
bmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnkua2V5KCksIHJlc3BvbnNlLCBleGlzdGluZ0VudHJ5
LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQ
cm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9u
c2UpKTsKKyAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gbWFrZVVuaXF1ZTxFbnRyeT4oZXhpc3RpbmdF
bnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNv
bGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSkpOwogICAgIGF1dG8gdXBkYXRl
UmVjb3JkID0gdXBkYXRlRW50cnktPmVuY29kZUFzU3RvcmFnZVJlY29yZCgpOwogCiAgICAgbV9z
dG9yYWdlLT5zdG9yZSh1cGRhdGVSZWNvcmQsIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IDdh
ZTFjMmZlN2RjZTYwN2I5ZjhhNTNkOTlhMWJkNzk4NTM5OWJjZjEuLjFmNDE0NGE4ZmFlODdiZjVm
YzVjODNlZDkwMmI2ZmYwOGEwNjRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25z
dAogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNv
bnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQogewotICAgIGF1dG8gZW50cnkgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihzdG9yYWdlRW50cnkpOworICAgIGF1dG8gZW50cnkgPSBt
YWtlVW5pcXVlPEVudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnku
aGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRyeS0+bV9yZXNwb25z
ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggOTRiNjA2OGEwZGZl
ZDc0MmZhZmZkZTU3Njg4NzA1YWU3YTQ2MjAxYi4uYmI5N2M3YTNmMjc2MTc2ZDA5ZmY0ODM1YjJm
M2I5N2VmMmU1OGZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAt
NTksNyArNTksNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2Fj
aGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIHBhcmFtZXRlcnMuY29u
dGVudFNuaWZmaW5nUG9saWN5ID0gQ29udGVudFNuaWZmaW5nUG9saWN5OjpEb05vdFNuaWZmQ29u
dGVudDsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID0gQ29u
dGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmOwogICAgIHBhcmFtZXRlcnMucmVxdWVz
dCA9IG1fb3JpZ2luYWxSZXF1ZXN0OwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNh
Y2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSkpOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtM
b2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQ
cm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSkpOwogfQogCiBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVjdWxhdGl2ZUxvYWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKaW5kZXggMWNkNmI0OTJmODFh
NWE4MWQyNGNhNzkxMDhkYTZiMTllMGMwMDNmMS4uNTdlOGU3NTk5YjFjY2E2NWIyNmUwNmVjMzg3
MmVlMmRkOTQ5ZGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1h
bmFnZXIuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdl
cjo6UGVuZGluZ0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZDb3VudGVkPFBlbmRpbmdGcmFtZUwKICAg
ICB2b2lkIHJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkKICAgICB7CiAgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNlS2V5KSk7
CisgICAgICAgIG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBlbmQobWFrZVVuaXF1ZTxTdWJyZXNvdXJj
ZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNlS2V5KSk7CiAgICAgICAgIG1fbG9hZEh5c3RlcmVz
aXNBY3Rpdml0eS5pbXB1bHNlKCk7CiAgICAgfQogCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZShjb25zdCBLZXkmIHN0b3JhZ2VLZXksIFJl
dHJpZXZlQ29tcGxldGlvbkgKICAgICBBU1NFUlQobV9wZW5kaW5nUHJlbG9hZHMuY29udGFpbnMo
c3RvcmFnZUtleSkpOwogICAgIC8vIEZJWE1FOiBUaGlzIGJyZWFrcyBpbmNyZW1lbnRhbCBsb2Fk
aW5nIHdoZW4gdGhlIHJldmFsaWRhdGlvbiBpcyBub3Qgc3VjY2Vzc2Z1bC4KICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fcGVuZGluZ1JldHJpZXZlUmVxdWVzdHMuZW5zdXJlKHN0b3JhZ2VLZXksIFtd
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJldHJpZXZlQ29tcGxl
dGlvbkhhbmRsZXI+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UmV0cmll
dmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CiAgICAgfSk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+YXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTQwNCw3
ICs0MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5
KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbgogICAgIEFTU0VSVChlbnRyeSk7CiAg
ICAgQVNTRVJUKCFlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogICAgIGF1dG8ga2V5ID0gZW50
cnktPmtleSgpOwotICAgIG1fcHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5p
cXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3ZlKGVudHJ5KSwgV1RGTW92ZShyZXZhbGlkYXRpb25S
ZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJRF0geworICAgIG1fcHJlbG9hZGVkRW50cmllcy5h
ZGQoa2V5LCBtYWtlVW5pcXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3ZlKGVudHJ5KSwgV1RGTW92
ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICBh
dXRvIHByZWxvYWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRFbnRyaWVzLnRha2Uoa2V5KTsKICAgICAg
ICAgQVNTRVJUKHByZWxvYWRlZEVudHJ5KTsKICAgICAgICAgaWYgKHByZWxvYWRlZEVudHJ5LT53
YXNSZXZhbGlkYXRlZCgpKQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIGJvb2wgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhjb25zdCBLZXkmIGtleSwgRW50cnkqIGVu
dHJ5CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0byYgY29tcGxldGlvbkhh
bmRsZXIgOiAqY29tcGxldGlvbkhhbmRsZXJzKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
bnRyeSA/IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KCplbnRyeSkgOiBudWxscHRyKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkgPyBtYWtlVW5pcXVlPEVudHJ5PigqZW50cnkpIDog
bnVsbHB0cik7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZShjb25zdCBTdWJy
ZXNvdXJjZUluZm8mIHN1YnJlcwogCiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJl
bG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmVseSByZXZhbGlkYXRpbmcgJyVz
JzoiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgYXV0byByZXZhbGlk
YXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlE
LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxp
ZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRl
ZEVudHJ5KSB7CisgICAgYXV0byByZXZhbGlkYXRvciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVM
b2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5
KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmV2YWxpZGF0
ZWRFbnRyeSB8fCAhcmV2YWxpZGF0ZWRFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogICAgICAg
ICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgcmV2YWxpZGF0ZWRFbnRyeS0+a2V5KCkgPT0g
a2V5KTsKIApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBmCiAgICAg
ICAgICAgICBwcmVsb2FkRW50cnkoa2V5LCBzdWJyZXNvdXJjZUluZm8sIGZyYW1lSUQpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxv
YWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5vdCBwcmVsb2FkaW5nICclcycgYmVjYXVzZSBpdCBp
cyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwga2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5p
cXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsKKyAgICAgICAgICAgIG1f
bm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0
aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRp
bmdEaWFnbm9zdGljTWVzc2FnZShtX2NhY2hlLm5ldHdvcmtQcm9jZXNzKCksIGZyYW1lSUQsIERp
YWdub3N0aWNMb2dnaW5nS2V5czo6ZW50cnlSaWdodGx5Tm90V2FybWVkVXBLZXkoKSk7CiAgICAg
ICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLnJlbW92ZShrZXkpOwogICAgICAgICAg
ICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggYmJmYzY0OTg5MGY5NWNjN2UwNGNlODJh
NGZlMzI5NDRkYzFhYjFmMC4uODA0YzQyOThjYzNlM2MyODE0ZmRiYzJiYmI2Y2JlZTU3NTg0YWU0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0yOTAsOCArMjkwLDggQEAgdm9pZCBTdG9yYWdl
OjpzeW5jaHJvbml6ZSgpCiAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1By
b2Nlc3MpIHN5bmNocm9uaXppbmcgY2FjaGUiKTsKIAogICAgIGJhY2tncm91bmRJT1F1ZXVlKCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8gcmVjb3JkRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50
c0ZpbHRlcj4oKTsKLSAgICAgICAgYXV0byBibG9iRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIgPSBtYWtlVW5pcXVl
PENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRvIGJsb2JGaWx0ZXIgPSBtYWtlVW5pcXVl
PENvbnRlbnRzRmlsdGVyPigpOwogCiAgICAgICAgIC8vIE1vc3Qgb2YgdGhlIGRpc2sgc3BhY2Ug
dXNhZ2UgaXMgaW4gYmxvYnMgaWYgd2UgYXJlIHVzaW5nIHRoZW0uIEFwcHJveGltYXRlIHJlY29y
ZHMgZmlsZSBzaXplcyB0byBhdm9pZCBleHBlbnNpdmUgc3RhdCgpIGNhbGxzLgogICAgICAgICBz
aXplX3QgcmVjb3Jkc1NpemUgPSAwOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgU3RvcmFnZTo6
cmVhZFJlY29yZChSZWFkT3BlcmF0aW9uJiByZWFkT3BlcmF0aW9uLCBjb25zdCBEYXRhJiByZWNv
cmREYXRhKQogICAgIH0KIAogICAgIHJlYWRPcGVyYXRpb24uZXhwZWN0ZWRCb2R5SGFzaCA9IG1l
dGFEYXRhLmJvZHlIYXNoOwotICAgIHJlYWRPcGVyYXRpb24ucmVzdWx0UmVjb3JkID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJlY29yZCB7CisgICAgcmVhZE9w
ZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFn
ZTo6UmVjb3JkIHsKICAgICAgICAgbWV0YURhdGEua2V5LAogICAgICAgICBtZXRhRGF0YS50aW1l
U3RhbXAsCiAgICAgICAgIGhlYWRlckRhdGEsCkBAIC03NTgsNyArNzU4LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFQ+IGJvb2wgcmV0cmlldmVGcm9tTWVtb3J5KGNvbnN0IFQmIG9wZXJhdGlvbnMsIGNv
bnN0IEtleSYga2V5LAogICAgICAgICBpZiAob3BlcmF0aW9uLT5yZWNvcmQua2V5ID09IGtleSkg
ewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3Mp
IGZvdW5kIHdyaXRlIG9wZXJhdGlvbiBpbiBwcm9ncmVzcyIpOwogICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtyZWNvcmQgPSBvcGVyYXRpb24tPnJlY29yZCwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpS
ZWNvcmQ+KHJlY29yZCksIHsgfSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29yZCksIHsgfSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC04NjIsNyArODYyLDcg
QEAgdm9pZCBTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBLZXkmIGtleSwgdW5zaWduZWQgcHJpb3Jp
dHksIFJldHJpZXZlQ29tcGxldGlvbkhhbmQKICAgICBpZiAocmV0cmlldmVGcm9tTWVtb3J5KG1f
YWN0aXZlV3JpdGVPcGVyYXRpb25zLCBrZXksIGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byByZWFkT3BlcmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFk
T3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
YXV0byByZWFkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxSZWFkT3BlcmF0aW9uPigqdGhpcywga2V5
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICByZWFkT3BlcmF0aW9uLT50aW1p
bmdzLnN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIHJlYWRPcGVyYXRpb24t
PnRpbWluZ3MuZGlzcGF0Y2hDb3VudEF0U3RhcnQgPSBtX3JlYWRPcGVyYXRpb25EaXNwYXRjaENv
dW50OwpAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgU3RvcmFnZTo6c3RvcmUoY29uc3QgUmVjb3Jk
JiByZWNvcmQsIE1hcHBlZEJvZHlIYW5kbGVyJiYgbWFwcGVkQm9keUhhbmRsZXIsCiAgICAgaWYg
KCFtX2NhcGFjaXR5KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHdyaXRlT3BlcmF0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZU9wZXJhdGlvbj4oKnRoaXMsIHJlY29yZCwgV1RGTW92
ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBh
dXRvIHdyaXRlT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxXcml0ZU9wZXJhdGlvbj4oKnRoaXMsIHJl
Y29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICBtX3BlbmRpbmdXcml0ZU9wZXJhdGlvbnMucHJlcGVuZChXVEZNb3ZlKHdyaXRl
T3BlcmF0aW9uKSk7CiAKICAgICAvLyBBZGQga2V5IHRvIHRoZSBmaWx0ZXIgYWxyZWFkeSBoZXJl
IGFzIHdlIGRvIGxvb2t1cHMgZnJvbSB0aGUgcGVuZGluZyBvcGVyYXRpb25zIHRvby4KQEAgLTg5
OCw3ICs4OTgsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwg
T3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAgIEFTU0VSVCh0cmF2ZXJz
ZUhhbmRsZXIpOwogICAgIC8vIEF2b2lkIG5vbi10aHJlYWQgc2FmZSBGdW5jdGlvbiBjb3BpZXMu
CiAKLSAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxUcmF2
ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhpcyksIHR5cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZl
cnNlSGFuZGxlcikpOworICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBtYWtlVW5pcXVl
PFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUo
dHJhdmVyc2VIYW5kbGVyKSk7CiAgICAgYXV0byYgdHJhdmVyc2VPcGVyYXRpb24gPSAqdHJhdmVy
c2VPcGVyYXRpb25QdHI7CiAgICAgbV9hY3RpdmVUcmF2ZXJzZU9wZXJhdGlvbnMuYWRkKFdURk1v
dmUodHJhdmVyc2VPcGVyYXRpb25QdHIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcAppbmRleCA3Yjg4OTIyOTk1MzlkYjM0YzViMzkxNGQzYjIxNGNlOGI4MTQzYjk4
Li42M2FkMDQwOWZkZDIzNmY2ZTNjMmNhMzBlODdlNGE3YzBhMjk1OTBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNl
c0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAtOTMsNyArOTMsNyBAQCBTdG9yYWdlOjpS
ZWNvcmQgU3VicmVzb3VyY2VzRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAK
IHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3VicmVzb3VyY2VzRW50cnk6OmRl
Y29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7
Ci0gICAgYXV0byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VicmVzb3VyY2VzRW50cnk+KHN0
b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8U3VicmVzb3VyY2VzRW50
cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29k
ZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgp
KTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3N1YnJlc291cmNlcykpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNw
cAppbmRleCBkOGEwNTk0MGQ3MTk3ZWIzMjI1YTM2YmM1MTNhMmRiNjEwZGIwY2Q4Li43MTA0ZDFm
NzRjZDcwMWNiY2VjZmFiNTdkMjRlYmZmOGRhZWJlZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKQEAgLTczLDggKzcz
LDggQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIHZv
aWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKLSAgICAgICAgbV9z
ZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigp
OwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RV
cmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1h
a2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9z
ZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmwsIG1ha2VVbmlxdWU8UHJlZmV0Y2hDYWNo
ZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICAvLyBM
aW1pdCBwcmVmZXRjaGVzIGZvciBzYW1lIHVybCB0byAxLgogICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2LDkgKzg2LDkgQEAgdm9pZCBQcmVmZXRj
aENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZXMKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBVUkwm
IHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QpCiB7CiAgICAgaWYg
KCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3Rk
OjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CisgICAgICAgIG1fc2Vzc2lvblBy
ZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKICAgICByZWRpcmVj
dFJlcXVlc3QuY2xlYXJQdXJwb3NlKCk7Ci0gICAgbV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJl
cXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUo
cmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSkpOworICAgIG1fc2Vz
c2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0VXJsLCBtYWtlVW5pcXVlPFByZWZldGNoQ2FjaGU6
OkVudHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVz
dCkpKTsKICAgICBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5hcHBlbmQoc3RkOjptYWtlX3R1cGxl
KHJlcXVlc3RVcmwsIFdhbGxUaW1lOjpub3coKSkpOwogICAgIGlmICghbV9leHBpcmF0aW9uVGlt
ZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9leHBpcmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KGV4
cGlyYXRpb25UaW1lb3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXggYTE3MTBiYWU5ZTVhODg1MjZjZWZhM2IzOWFhNzg4
ZmFhZjJjZmEwZS4uYTI1MTUyMGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIzMWExYmVkMTM4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hl
LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgUHJlZmV0Y2hDYWNoZSB7CiAgICAgdm9pZCBjbGVh
cigpOwogCiAgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vz
c0NvY29hLm1tCmluZGV4IDA3N2YxNmZhNjUwNjUyYzc4N2E2ZjAzMTYwOTA5MDI2OGViYjhhYzAu
LmNjZTI2YWNmYjA0Y2Y3MDc0ZTc2M2Y1YmJjOGU0YTVlOThhMTVjOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQwogCiBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gTmV0d29ya1Byb2Nlc3M6OnNv
dXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3JvdW5k
KCkKIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBOZXR3b3JrUHJvY2Vzczo6bmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIoKQogewogICAgIGlmICghbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlcikKLSAgICAgICAgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IHN0ZDo6bWFrZV91
bmlxdWU8TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI+KCk7CisgICAgICAgIG1fbmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
PigpOwogICAgIHJldHVybiAqbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCmluZGV4IDRhNjFkZjE0ZGNmZjJlNmMzZDBlMDkwZWQzZTUxY2I2MDMxNWU2
NDQuLjQ2ODY4OTM1YzZjNjQyYzIwNDgyODhmYmUzODc5MDNjMDEyODIwMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KQEAgLTgwMiw3ICs4MDIsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YQogICAg
ICAgICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3RlY3RlZE5ldHdvcmtEYXRhVGFzaygq
bmV0d29ya0RhdGFUYXNrKTsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29ya0RhdGFU
YXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpOwogICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIg
PSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsKLSAgICAgICAg
YXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxv
YWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQo
KSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICAgICAgYXV0byBk
b3dubG9hZCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBk
b3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0Rh
dGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT50
cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpkb3dubG9hZCk7CiAgICAgICAgIEFT
U0VSVChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24oKSkpOwogICAgICAgICBkb3dubG9hZC0+ZGlkQ3JlYXRlRGVzdGluYXRpb24o
bmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKTsKQEAgLTg5Nyw3ICs4
OTcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldENURGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vz
c2lvbj4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3Jr
UHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdv
cmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxO
ZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7
CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFyeShjb25zdCBVUkwmIGh0
dHBQcm94eSwgY29uc3QgVVJMJiBodHRwc1Byb3h5KQpAQCAtMTMyMSw3ICsxMzIxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZVdl
YlNvY2tldFRhc2soTmV0d29ya1MKIHsKICAgICAvLyBGSVhNRTogVXNlIHByb3RvY29sLgogICAg
IFJldGFpblB0cjxOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNrPiB0YXNrID0gW21fc2Vzc2lvbldp
dGhDcmVkZW50aWFsU3RvcmFnZS5nZXQoKSB3ZWJTb2NrZXRUYXNrV2l0aFJlcXVlc3Q6IHJlcXVl
c3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0
ZUhUVFBCb2R5KV07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0VGFzaz4o
Y2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0
VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Nlc3Npb25D
b2NvYTo6YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJiB0YXNrKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgK
aW5kZXggOTM3ZTI4NzMyYmU1NzQzMjYxNjlkODU0ZGY2NGMxNTEzZTJiNjhhMy4uZjZjZDdhOTI4
Yjk3Mzg4MTZjMzg5YTk1N2M4YTkxZGU4YzI1YjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCkBAIC00MSw2
ICs0MSw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0d29ya1NvY2tldENoYW5u
ZWw7CiAKIGNsYXNzIFdlYlNvY2tldFRhc2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU29j
a2V0VGFzaz4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdl
YlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBSZXRhaW5QdHI8TlNVUkxTZXNzaW9u
V2ViU29ja2V0VGFzaz4mJik7CiAgICAgfldlYlNvY2tldFRhc2soKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAK
aW5kZXggYmU2ODAxZjMwY2RmNDkwMDI1NGMyMjRiOWIxMWZiZGY3M2ZlMmUzMS4uNWJlMTcwMjY2
ZjQ1YjhiZjcyZWY1NmIxMDA4N2NiNTliYjU2ZGJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3Jl
YXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9y
SG9zdChjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5n
JiBob3N0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtTZXNzaW9uQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtTZXNzaW9uQ3VybC5oCmluZGV4IGQ0NzA5YTVlNGFjOGEyZmI2YWNlYjU2YzU3ZWJmMGI1
Yzc0MGQ0NTYuLmUxOGE0MzkwYjE4OGEyN2U5MzE4YzUyNDA0NTVmMDY0Y2Y2YmQ2NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1
cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Np
b25DdXJsLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25DdXJsIGZpbmFs
IDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+KG5l
dHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CiAgICAgfQogICAgIE5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYsIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkN1
cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0KaW5kZXggMjM3NDUy
ODhhMDZkMDExNDU5MTk2OGI1MDg2ZGViNWY0NWFhMGFjNi4uYzhiODZjNTExMTM3ZTM3NGVjMGJl
MGMwZWI1YjNmZWI0ZjA5YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJ
T1MubW0KQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29y
ZGluYXRvcigpCiB7CiAgICAgaWYgKCFtX3BheW1lbnRDb29yZGluYXRvcikKLSAgICAgICAgbV9w
YXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5PigqdGhpcyk7CisgICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbWFrZVVuaXF1
ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogICAgIHJldHVybiAqbV9wYXlt
ZW50Q29vcmRpbmF0b3I7CiB9CiAKQEAgLTgyLDcgKzgyLDcgQEAgY29uc3QgU3RyaW5nJiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGlj
YXRpb24KIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXph
dGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYgY29vcmRpbmF0b3IsIFBL
UGF5bWVudFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPihjb29yZGluYXRvciwgcmVxdWVzdCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPihjb29y
ZGluYXRvciwgcmVxdWVzdCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGQ0NmM1MDNkODFlOTgzNGU1ZDJhMjU2NjBj
ODcyM2VhZTdlMTcwZWMuLjRmYWNjODIxM2VmODUwNWNmOWQ1NDhiMjNjNTY2ZGQzZDBiZTBhYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTg5Nyw3ICs4OTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza1NvdXA6OmRvd25sb2FkKCkKICAgICBtX2Rvd25sb2FkT3V0cHV0U3RyZWFtID0gYWRvcHRH
UmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7CiAKICAgICBhdXRv
JiBkb3dubG9hZE1hbmFnZXIgPSBtX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRN
YW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+
KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+
c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIGF1dG8gZG93bmxvYWQgPSBt
YWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQs
ICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAg
ICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwogICAgIGRvd25sb2FkTWFuYWdl
ci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3Zl
KGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCA4M2MyZjI4ZWE1Yzcw
MzRkYWE3ZGI2NDYyMWI0NDRlZGQ1ZDk2YWY5Li43YTc0ODFmN2Q0MjVmMDIzMzdhMGMxMGFkZjlk
NjU0ZjcwZWM3ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5l
dHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNv
dXAuY3BwCmluZGV4IDMwZmM4YTUzNTVkMDg0NTJhYzM2MWIxZGNlYTk3Yzg0ZjM2MDdmZWQuLjQw
NzM2MWYwMzZlNzk4OTE3NjdkODA3ZmJiNjNjOTA0NGIyNjBhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOZXR3b3JrU2Vz
c2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6
IE5ldHdvcmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzKQotICAgICwgbV9uZXR3
b3JrU2Vzc2lvbihzdGQ6Om1ha2VfdW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lvbj4obV9zZXNzaW9u
SUQpKQorICAgICwgbV9uZXR3b3JrU2Vzc2lvbihtYWtlVW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lv
bj4obV9zZXNzaW9uSUQpKQogewogICAgIGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCk7CiAgICAgQVNTRVJUKHN0b3JhZ2VTZXNzaW9uKTsKQEAgLTEyNCw3ICsx
MjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Tb3Vw
OjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTbwogICAgIHJlcXVlc3QudXBkYXRlU291cE1l
c3NhZ2Uoc291cE1lc3NhZ2UuZ2V0KCksIGJsb2JSZWdpc3RyeSgpKTsKICAgICBpZiAocmVxdWVz
dC51cmwoKS5wcm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzb3Vw
TWVzc2FnZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKHdlYlNvY2tldE1lc3Nh
Z2VOZXR3b3JrRXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdl
LmdldCgpLCBwcm90b2NvbCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4o
Y2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggZjllZjRiYjU0MzBiYmY3
M2IwNGEwZTNiZWMyNDc5MjhkNTllNzE2Yi4uNDY2YjI3ODJiZjkzYzc3MDcwZjc5N2RkMzY1MjM0
Y2MxZGUzZmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtTZXNzaW9uU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBOZXR3b3Jr
U2Vzc2lvblNvdXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNz
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25Tb3VwKE5l
dHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAg
fk5ldHdvcmtTZXNzaW9uU291cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3Bw
CmluZGV4IDZkZGM4MWEzNmQ4NDljYmMyODM3OTNiNjE3MDY3YTI3ZTI5ZDkxZjAuLjg3NDUyNWUz
OGNlNzA0ZWJlMWRhYTcxMGJiNTVjMDFjYzA1OGVhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+CiAKIHN0cnVjdCBBc3luY1JlYWREYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgQXN5bmNSZWFkRGF0YShHUmVmUHRyPEdUYXNrPiYmIHRhc2ss
IHZvaWQqIGJ1ZmZlciwgZ3NpemUgY291bnQpCiAgICAgICAgIDogdGFzayhXVEZNb3ZlKHRhc2sp
KQogICAgICAgICAsIGJ1ZmZlcihidWZmZXIpCkBAIC0zOSw2ICs0MCw3IEBAIHN0cnVjdCBBc3lu
Y1JlYWREYXRhIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVBy
aXZhdGUgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICB1aW50NjRf
dCBjb250ZW50TGVuZ3RoOwogICAgIHVpbnQ2NF90IGJ5dGVzUmVjZWl2ZWQ7CiAgICAgdWludDY0
X3QgYnl0ZXNSZWFkOwpAQCAtOTksNyArMTAxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCB2b2kK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5j
UmVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVm
ZmVyLCBjb3VudCk7CisgICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkID0gbWFrZVVu
aXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIsIGNvdW50KTsKIH0KIAog
c3RhdGljIGdzc2l6ZSB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEZpbmlzaChHSW5w
dXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJy
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29j
a2V0VGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2Nr
ZXRUYXNrU291cC5oCmluZGV4IGRhODc2MTEwNjQ4MWY5NmE5ZDZhMDAwMTg0Y2NkMjQwN2IxZjI2
NTAuLjVlZjdiNDhlNDIwODM5ZWVmODAwODExYjBkOTc0MGY0NGUwMWYwYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5o
CkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1NvY2tl
dENoYW5uZWw7CiAKIGNsYXNzIFdlYlNvY2tldFRhc2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwm
LCBTb3VwU2Vzc2lvbiosIFNvdXBNZXNzYWdlKiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAg
ICAgfldlYlNvY2tldFRhc2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKaW5kZXggOGYyMDVjZTAy
OTcxM2Q4YmEyMTNmMTQzYmE3MWJiMTE0NzUyZGVmNS4uMjJhYmRlYzY5ZGIyNDVhNGNmOTgzZjI0
N2IzOGY3MmQ5MDBhNmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrUlRDUHJvdmlkZXI7CiAKIGNsYXNz
IExpYldlYlJUQ1NvY2tldENsaWVudCBmaW5hbCA6IHB1YmxpYyBzaWdzbG90OjpoYXNfc2xvdHM8
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBUeXBlIHsgVURQLCBTZXJ2ZXJUQ1AsIENsaWVudFRDUCwgU2VydmVyQ29ubmVjdGlvblRDUCB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IGU3ODY1NjhmZjUwNWE3Yjg3MTc4NzBkZjU3
ZmE1N2QxNWY1ZDc3NjMuLjkyNjY2OGMzOGZmZjcwOGFlNTAyZjU4ZmQ0MTUyODgwM2VjNTU1Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtN
RE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBAIHZvaWQgTmV0d29ya01E
TlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJDb3JlOjpEb2N1bWVudElkZW50aWZp
ZXIgZG9jdW1lCiB9CiAKIHN0cnVjdCBQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdCB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFBlbmRpbmdSZWdpc3RyYXRpb25S
ZXF1ZXN0KFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAg
ICAgIDogY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICAgICAsIHJlcXVlc3RJ
ZGVudGlmaWVyKHJlcXVlc3RJZGVudGlmaWVyKQpAQCAtMTM1LDcgKzEzNiw3IEBAIHZvaWQgTmV0
d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgUEFMOjpTZXNzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBlbmRp
bmdSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdD4o
bWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgcmVxdWVzdElkZW50aWZpZXIsIFdU
Rk1vdmUobmFtZSksIHNlc3Npb25JRCk7CisgICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IG1ha2VV
bmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VSZWYobV9jb25uZWN0aW9uLmNv
bm5lY3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBzZXNzaW9uSUQp
OwogICAgIGF1dG8qIHJlY29yZCA9ICZwZW5kaW5nUmVxdWVzdC0+cmVjb3JkOwogICAgIGF1dG8g
ZXJyb3IgPSBETlNTZXJ2aWNlUmVnaXN0ZXJSZWNvcmQoc2VydmljZSwKICAgICAgICAgcmVjb3Jk
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ01vbml0b3IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ01vbml0b3IuY3BwCmluZGV4IDM1M2VhYzhjZTExYjY5MDZlZmFkZDJmZDI3MThiOTdh
YjUyY2RhNGQuLmFiNzA2ZGMyZTkzNGE5YTdlZjk5MjY4OTc5NzRiZGM3NTRlYTNkZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25p
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDTW9uaXRvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBOZXR3b3JrUlRDTW9uaXRvcjo6
c3RhcnRVcGRhdGluZygpCiB7CiAgICAgbV9pc1N0YXJ0ZWQgPSB0cnVlOwogICAgIG1fcnRjUHJv
dmlkZXIuY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpc10oKSB7Ci0gICAgICAgIG1fbWFuYWdl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOworICAgICAg
ICBtX21hbmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2lj
TmV0d29ya01hbmFnZXI+KCk7CiAgICAgICAgIG1fbWFuYWdlci0+U2lnbmFsTmV0d29ya3NDaGFu
Z2VkLmNvbm5lY3QodGhpcywgJk5ldHdvcmtSVENNb25pdG9yOjpvbk5ldHdvcmtzQ2hhbmdlZCk7
CiAgICAgICAgIG1fbWFuYWdlci0+U3RhcnRVcGRhdGluZygpOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5jcHAKaW5kZXggYTVhYzU3MjEzNzlkYjNkMWIyNTg3NTU4NjEwMzBiYmE0ZGI5ZWI4ZS4u
MTVkNDRkMGFkOWRiMGYzYjA1OTllMWEzM2VmY2ZkYjg5NjFhNjVkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIE5ldHdvcmtSVENQcm92aWRlcjo6TmV0d29ya1JUQ1By
b3ZpZGVyKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uCiAgICAgOiBt
X2Nvbm5lY3Rpb24oJmNvbm5lY3Rpb24pCiAgICAgLCBtX3J0Y01vbml0b3IoKnRoaXMpCiAgICAg
LCBtX3J0Y05ldHdvcmtUaHJlYWQoY3JlYXRlVGhyZWFkKCkpCi0gICAgLCBtX3BhY2tldFNvY2tl
dEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4obV9y
dGNOZXR3b3JrVGhyZWFkLmdldCgpKSkKKyAgICAsIG1fcGFja2V0U29ja2V0RmFjdG9yeShtYWtl
VW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFj
dG9yeT4obV9ydGNOZXR3b3JrVGhyZWFkLmdldCgpKSkKIHsKICNpZiBkZWZpbmVkKE5ERUJVRykK
ICAgICBydGM6OkxvZ01lc3NhZ2U6OkxvZ1RvRGVidWcocnRjOjpMU19OT05FKTsKQEAgLTEwNCw3
ICsxMDQsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29ja2V0KHVpbnQ2NF90
IGlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxydGM6OgogICAgICAgICB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tl
dCksIHR5cGUpKTsKKyAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZTxMaWJXZWJS
VENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIHR5cGUp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVEUFNvY2tldCh1aW50NjRf
dCBpZGVudGlmaWVyLCBjb25zdCBSVENOZXR3b3JrOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1
aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHZv
aWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlvbih1aW50NjRfdCBpZGVu
dGlmaWVyLCB1aW50NjRfdCBuZXdDCiB7CiAgICAgY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhp
cywgaWRlbnRpZmllciwgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXJdKCkgewogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4gc29ja2V0ID0gbV9wZW5k
aW5nSW5jb21pbmdTb2NrZXRzLnRha2UobmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXIpOwot
ICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENT
b2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIExpYldlYlJU
Q1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCkpOworICAgICAgICBhZGRT
b2NrZXQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50
aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlw
ZTo6U2VydmVyQ29ubmVjdGlvblRDUCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDM4MzgyYjA5ZDRmYjNiZTI2NGY4OWI3Nzg0
MWE0MWQ3YzA4Y2FjMDUuLmM1ZWY2ZDk5YTU2MGRkMTQ4OGYxODQ5OTVhZThhN2IxNmQ5YWQyNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0zNDMsNyAr
MzQzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
ck1lc3NhZ2UoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBD
IiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3lu
Y1JlcXVlc3RJRCk7CiAKICAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBkZWNvZGVyIGFuZCBlbmNv
ZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIuCiAgICAgd29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywgZGVjb2RlciwgcmVwbHlF
bmNvZGVyKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIENvbm5lY3Rpb246Om1hcmtDdXJyZW50
bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpCiB7Ci0gICAgYXV0byBlbmNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNz
YWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxF
bmNvZGVyPihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7
CiAgICAgZW5jb2Rlci0+c2V0SXNTeW5jTWVzc2FnZSh0cnVlKTsKIAogICAgIC8vIEVuY29kZSB0
aGUgc3luYyByZXF1ZXN0IElELgpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZW5hYmxlSW5jb21pbmdNZXNzYWdlc1Rocm90dGxpbmcoKQogICAgIGlmIChtX2luY29taW5nTWVz
c2FnZXNUaHJvdHRsZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5jb21pbmdNZXNzYWdl
c1Rocm90dGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZXNUaHJvdHRsZXI+KCp0aGlzLCAm
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VzKTsKKyAgICBtX2luY29taW5nTWVz
c2FnZXNUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNv
bm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk7CiB9CiAKIHZvaWQgQ29ubmVjdGlv
bjo6cG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZSgpCkBAIC04NDMs
NyArODQzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2Rl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwg
c3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29k
ZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSAiV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmciKSB7CiAgICAgICAgIGlm
ICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCAyMGY1ZWM1YjIwMmJlYzJiZGY1OGYw
MjBlYmRlZWY4MzE0OTMxMWJmLi5hZGM0YWFkOTg4MThmYTA2YWZjNmJlODk2MTQ1ZDU2MzE1ODMy
ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC00MzMsNyAr
NDMzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4KIHsKICAgICBDT01QSUxFX0FTU0VSVCgh
VDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6
cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+
ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgIAogICAgIHJldHVybiBzZW5kTWVzc2Fn
ZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CkBAIC00NDgsNyArNDQ4LDcgQEAgdm9p
ZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0
aW9uSGFuZGxlciwgdWludDY0X3QKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBB
c3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQp
OworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1l
KCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IG5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVy
SUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggY2NhMDczOTBhZGVjNDQ2ZGU3NDY2Y2Y4
ZTEwMTIzYzI3OTM4NTM1Mi4uZmQ1MTcwMTcxMmIwNjI5ZDQ3MjUyZDA0MDg5NmM2NGZjYmNiYjJh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKQEAgLTEyMyw3ICsxMjMs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gRGVjb2Rlcjo6dW53cmFwRm9yVGVzdGluZyhE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUod3JhcHBlZE1lc3NhZ2Up
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PERlY29kZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEoKSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBu
dWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVj
b2Rlcj4od3JhcHBlZE1lc3NhZ2UuZGF0YSgpLCB3cmFwcGVkTWVzc2FnZS5zaXplKCksIG51bGxw
dHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0KIAogc3RhdGljIGlubGluZSBjb25zdCB1aW50
OF90KiByb3VuZFVwVG9BbGlnbm1lbnQoY29uc3QgdWludDhfdCogcHRyLCB1bnNpZ25lZCBhbGln
bm1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXgg
ODU0NTJjZGE3ZTA0NWU0NDU1ZTA3YjkzYmFmY2EzNWIxMDIwMDExZS4uYTc0OWFhYjg3MDA1NGNl
YjY5MGU1ZjE0ZjQwNzU2M2ZmY2QwZjliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgaGFuZGxlTWVzc2FnZUFz
eW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwg
TUYKICAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNvbXBsZXRpb25IYW5kbGVy
ID0gW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVj
dGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gZW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIkFzeW5jUmVwbHkiLCBUOjphc3luY01lc3NhZ2VS
ZXBseU5hbWUoKSwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rl
cj4oIkFzeW5jUmVwbHkiLCBUOjphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgMCk7CiAgICAgICAg
ICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CiAgICAgICAgIFQ6OnNlbmQoV1RGTW92ZShlbmNvZGVy
KSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCAzZDZmMzQyODkyYmM4ODM5MDY3OGU4
YzM2NDYzOTExMGRlNGY1NzI2Li43NzE0NDhhNDRkMDg4NmRkMDFiYjBjMmRlNjRkYzlhNDI4NjI3
YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC00
Myw3ICs0Myw3IEBAIGNsYXNzIE1lc3NhZ2VTZW5kZXIgewogICAgIHsKICAgICAgICAgc3RhdGlj
X2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5jISIpOwogCi0gICAgICAgIGF1dG8g
ZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oVTo6cmVjZWl2ZXJOYW1lKCksIFU6
Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oVTo6cmVjZWl2ZXJOYW1lKCksIFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7
CiAgICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKICAgICAgICAg
CiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9u
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9u
Q29jb2EubW0KaW5kZXggMzcwMmFjYzdkZjUxYmQ4NDZiOTNhZjY0YmYwNzBhNGMxMDAzOTE5Zi4u
ODdkZDI4ZjgwODY3ODJjZTJhM2RmNzkwZjRhYzBlNmQ3NDlkYWI0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQpAQCAtOTIs
NyArOTIsNyBAQCBwcml2YXRlOgogICAgICAgICA6IG1feHBjQ29ubmVjdGlvbih4cGNDb25uZWN0
aW9uKQogICAgICAgICAsIG1fd2F0Y2hkb2dUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZD
b25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZzo6d2F0Y2hkb2dUaW1lckZpcmVkKQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICwgbV9hc3NlcnRpb24oc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OlByb2Nlc3NBbmRVSUFzc2VydGlvbj4oeHBjX2Nvbm5lY3Rpb25fZ2V0X3BpZCht
X3hwY0Nvbm5lY3Rpb24uZ2V0KCkpLCAiQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2ciX3Ms
IFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpKQorICAgICAgICAsIG1fYXNzZXJ0
aW9uKG1ha2VVbmlxdWU8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHhwY19jb25uZWN0
aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdldCgpKSwgIkNvbm5lY3Rpb25UZXJtaW5hdGlv
bldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kKSkKICNlbmRp
ZgogICAgIHsKICAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7
CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVuKCkKICAgICAgICAgbV9p
c0Nvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICAvLyBTZW5kIHRoZSBpbml0aWFs
aXplIG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEgc2VuZCByaWdodCBmb3IgdGhlIHNlcnZlciB0
byB1c2UuCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4o
IklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIsIDApOworICAgICAgICBhdXRvIGVuY29kZXIg
PSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsK
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNH
X1RZUEVfTUFLRV9TRU5EKSk7CiAKICAgICAgICAgaW5pdGlhbGl6ZVNlbmRTb3VyY2UoKTsKQEAg
LTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1l
c3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgICAgIHVpbnQ4X3Qq
IGJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihoZWFkZXIgKyAxKTsKICAgICAgICAg
c2l6ZV90IGJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUgLSBzaXplb2YobWFjaF9tc2dfaGVh
ZGVyX3QpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KGJvZHks
IGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4oYm9keSwgYm9keVNpemUsIG51bGxwdHIsIFZlY3RvcjxB
dHRhY2htZW50PiB7IH0pOwogICAgIH0KIAogICAgIGJvb2wgbWVzc2FnZUJvZHlJc09PTCA9IGhl
YWRlci0+bXNnaF9pZCA9PSBvdXRPZkxpbmVCb2R5TWVzc2FnZUlEOwpAQCAtNDUwLDcgKzQ1MCw3
IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIo
bWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWludDhfdCogbWVzc2FnZUJvZHkg
PSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuYWRkcmVzcyk7
CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBkZXNjcmlwdG9yLT5vdXRfb2ZfbGlu
ZS5zaXplOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFtdKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGxlbmd0aCkgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9k
eSwgbWVzc2FnZUJvZHlTaXplLCBbXShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5n
dGgpIHsKICAgICAgICAgICAgIHZtX2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRl
cnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KGJ1ZmZlciksIGxlbmd0aCk7CiAgICAgICAgIH0sIFdU
Rk1vdmUoYXR0YWNobWVudHMpKTsKICAgICB9CkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFk
ZXJfdCogaGVhZGVyKQogICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gZGVzY3JpcHRvckRhdGE7
CiAgICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gKGRlc2Ny
aXB0b3JEYXRhIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyKSk7CiAKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlT
aXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgbnVsbHB0ciwgV1RGTW92
ZShhdHRhY2htZW50cykpOwogfQogCiAvLyBUaGUgcmVjZWl2ZSBidWZmZXIgc2l6ZSBzaG91bGQg
YWx3YXlzIGluY2x1ZGUgdGhlIG1heGltdW0gdHJhaWxlciBzaXplLgpAQCAtNTI2LDcgKzUyNiw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpCiAgICAgICAg
IHJldHVybjsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBkZWNvZGVyLT5zZXRJbXBvcnRhbmNl
QXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8SW1wb3J0YW5jZUFzc2VydGlvbj4oaGVhZGVyKSk7
CisgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihtYWtlVW5pcXVlPEltcG9ydGFu
Y2VBc3NlcnRpb24+KGhlYWRlcikpOwogI2VuZGlmCiAKICAgICBpZiAoZGVjb2Rlci0+bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXItPm1lc3NhZ2VOYW1lKCkgPT0gIklu
aXRpYWxpemVDb25uZWN0aW9uIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCA2M2I2YmU3MjcxZTQ0NTg4Mzk1MDVhYTkx
NWUzODczZjg1MTRkZWRkLi43N2FmOWIyODU4NDUyNmJiNzBjN2ZmYzhlMzI1NmEzYmFhMTNhMjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3Nh
Z2UoKQogICAgIGlmIChtZXNzYWdlSW5mby5pc0JvZHlPdXRPZkxpbmUoKSkKICAgICAgICAgbWVz
c2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvb2xNZXNzYWdlQm9keS0+ZGF0
YSgpKTsKIAotICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVz
c2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNo
bWVudHMpKTsKKyAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VC
b2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRz
KSk7CiAKICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOwogCkBA
IC00ODIsNyArNDgyLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4
TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBp
ZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVXT1VMREJMT0NLKSB7CiAjaWYgVVNFKEdM
SUIpCi0gICAgICAgICAgICBtX3BlbmRpbmdPdXRwdXRNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxVbml4TWVzc2FnZT4oV1RGTW92ZShvdXRwdXRNZXNzYWdlKSk7CisgICAgICAgICAgICBtX3Bl
bmRpbmdPdXRwdXRNZXNzYWdlID0gbWFrZVVuaXF1ZTxVbml4TWVzc2FnZT4oV1RGTW92ZShvdXRw
dXRNZXNzYWdlKSk7CiAgICAgICAgICAgICBtX3dyaXRlU29ja2V0TW9uaXRvci5zdGFydChtX3Nv
Y2tldC5nZXQoKSwgR19JT19PVVQsIG1fY29ubmVjdGlvblF1ZXVlLT5ydW5Mb29wKCksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChHSU9Db25kaXRpb24gY29uZGl0aW9u
KSAtPiBnYm9vbGVhbiB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmIEdfSU9fT1VU
KSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdPdXRwdXRNZXNzYWdlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApp
bmRleCA2NDBmNDUyOTllM2IyNjZlMDI2OWNjY2NjOTQ1MmIzYmE1NzllZmIxLi41YWRmZDgyYmVj
YTQ2ZGIwMjQ0N2U4YmNiNmQzODRjMmMwMTU2YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9p
ZCBDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKCkKICAgICAgICAgaWYgKCFtX3JlYWRCdWZm
ZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEgbWVzc2FnZSwgbGV0J3Mg
ZGlzcGF0Y2ggaXQuCiAgICAgICAgICAgICBWZWN0b3I8QXR0YWNobWVudD4gYXR0YWNobWVudHMo
MCk7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+
KG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIFdURk1v
dmUoYXR0YWNobWVudHMpKTsKKyAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IG1ha2VVbmlxdWU8
RGVjb2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0
ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAgICAgICAgICAgcHJvY2Vzc0luY29taW5nTWVz
c2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUu
aAppbmRleCBkZDJiNjZhN2NhMTk1OTFiNmVlNjdiOGYyODRmZDI1NGEzODI3ODVkLi41NjgzNzIx
M2RmYmVhZWI0ZDU5ZTkzYzNkNDlmNmM3YWMyZjUzNGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL01vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxl
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dNb2R1bGUgR01vZHVsZTsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBNb2R1bGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1vZHVsZSk7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgTW9kdWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQppbmRleCA4MjMyZGI0ZWI1NmVh
Y2I2ZjhjZTg1NTY2NGI4Yjc4MmFiNjUwYTk4Li43YWVlNDdlYWI5NWY1OGE2YjQxNzg1YzBmNGZm
N2YwMmIwNGNmNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXll
ckhvc3RpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVy
SG9zdGluZ0NvbnRleHQubW0KQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0
OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlcnZlclBvcnQpCiB7Ci0gICAg
YXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdD
b250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5
ZXJIb3N0aW5nQ29udGV4dD4oKTsKIAogICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7CiAg
ICAgICAgIGtDQUNvbnRleHRQb3J0TnVtYmVyIDogQChzZXJ2ZXJQb3J0LnNlbmRSaWdodCgpKSwK
QEAgLTUyLDcgKzUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExh
eWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWEKICNpZiBIQVZFKE9VVF9P
Rl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vz
cyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRv
IGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRl
eHQ+KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhv
c3RpbmdDb250ZXh0PigpOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5n
TW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKQEAgLTgyLDcgKzgyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvckV4dGVybmFsSG9zdGkKICNpZiBQTEFURk9STShNQUMpCiBzdGQ6OnVuaXF1ZV9wdHI8
TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJu
YWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpCiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5
ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKICAg
ICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdN
b2RlOjpPdXRPZlByb2Nlc3M7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9jb250ZXh0ID0g
W0NBQ29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFpbkNvbm5lY3Rpb25JRCgp
IG9wdGlvbnM6QHsga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBAImlnbm9yZSIgfV07CiAg
ICAgcmV0dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggOTdlMmRmMzUzYjM2ODIz
OTI5YTMxYWU5NTdhMWRkY2RjMjFjMzdkNi4uYjk4Y2E5NGJjOWVmYzIzYjJlZDgxOGE1Yjc4NDMz
NzIzMTdlOWM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuaApAQCAtNDksNyArNDksOCBAQCBjbGFzcyBTaGFyZWFibGVCaXRt
YXA7CiBjbGFzcyBXZWJQcm9jZXNzQ29ubmVjdGlvbjsKIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM7CiAKLWNsYXNzIFBsdWdpbkNvbnRyb2xsZXJQcm94eSA6IFBsdWdpbkNvbnRyb2xs
ZXIgeworY2xhc3MgUGx1Z2luQ29udHJvbGxlclByb3h5IDogcHVibGljIFBsdWdpbkNvbnRyb2xs
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFBsdWdpbkNvbnRyb2xsZXJQcm94eSk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDM2NmI5
ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUuLmNlODI2N2QyZWU3OGNhY2IzZGRh
MGE5YjM3NWJmYWFmYzY4NmVlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQg
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OlN0cmluCiAKIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBs
dWdpbkludGVybmFsKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJh
bWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiBy
ZW1vdGVMYXllckNsaWVudElEKQogewotICAgIGF1dG8gcGx1Z2luQ29udHJvbGxlclByb3h5ID0g
c3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJveHk+KHRoaXMsIGNyZWF0aW9uUGFy
YW1ldGVycyk7CisgICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBtYWtlVW5pcXVlPFBs
dWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJhbWV0ZXJzKTsKIAogICAgIFBs
dWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5UHRyID0gcGx1Z2luQ29u
dHJvbGxlclByb3h5LmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJVVJMLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKaW5kZXggYmJk
NDIzYmNmNTcxNWU0YWQ3MGJmNTJkZWY4YzJjMzBjNDFiZjBmNi4uM2U2MWJiZDAwMGUxZjRjZGI2
YzJhMzZjYTRmNzVlOTA0ZjgzNWNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVVSTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
OlVSTD4gewogICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2VVUkwpOwogICAgICAgICBiYXNlVVJM
LT5wYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGF1dG8gYWJzb2x1dGVVUkwgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0
aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IG1ha2VVbmlxdWU8V1RGOjpVUkw+
KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOwogICAgICAgICBjb25z
dCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNvbHV0ZVVSTC0+c3RyaW5nKCk7
CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVBJOjpVUkwoV1RGTW92ZShhYnNvbHV0
ZVVSTCksIGFic29sdXRlVVJMU3RyaW5nKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAgY2xhc3MgVVJM
IDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsKICAgICB7CiAgICAgICAg
IGlmIChtX3BhcnNlZFVSTCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9wYXJzZWRV
UkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgpLCBtX3N0cmluZyk7Cisg
ICAgICAgIG1fcGFyc2VkVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVSTD4oV1RGOjpVUkwoKSwgbV9z
dHJpbmcpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIG1fc3RyaW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5t
bQppbmRleCAyNTkyODQ3ZTM0MWEzYjZmNzI4NzU0YmQ3ODhhNjY1M2RkMjIxNWIwLi5kM2ZmNjIx
ZWMwZjRhMTBkNzU2NDg3Y2MyMTZmNDk1Y2U4NmQ3MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbQpAQCAt
ODMsNyArODMsNyBAQCBib29sIFJlbW90ZU9iamVjdEludm9jYXRpb246OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFJlbW90ZU9iamVjdEludm9jYXRpbwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGJsb2NrU2lnbmF0dXJlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICByZXN1bHQubV9yZXBseUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGx5SW5mbz4o
cmVwbHlJRCwgV1RGTW92ZShibG9ja1NpZ25hdHVyZSkpOworICAgICAgICByZXN1bHQubV9yZXBs
eUluZm8gPSBtYWtlVW5pcXVlPFJlcGx5SW5mbz4ocmVwbHlJRCwgV1RGTW92ZShibG9ja1NpZ25h
dHVyZSkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4
IDY1ZGE5ZWZmMDFiNDNlYTU3MTA4MDJmNmM0NmE2ZDAyMDI2NTY5M2UuLjQ4OTk3NjI5MzJiN2Fm
NjkyMjFkMDUwYWY2NzQ1ODM2ZmMzODdiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQYWdlOihXZWJLaXQ6OldlYlBhZ2UmKXBhZ2UK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CisgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsK
IAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTE5LDcgKzExOSw3IEBAIC0gKGlkKV9pbml0V2l0
aFdlYlBhZ2VQcm94eTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBhZ2UKICAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF9yZW1vdGVPYmpl
Y3RSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eT4oc2VsZiwgcGFnZSk7CisgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsKIAogICAgIHJldHVybiBz
ZWxmOwogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIC0gKHZvaWQpX3NlbmRJbnZvY2F0aW9uOihOU0lu
dm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVtb3RlT2JqZWN0SW50CiAgICAg
ICAgIGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6
cmVwbHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlwZSwgInYiKSkKICAgICAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJS
ZXR1cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBiZSAndm9pZCcuICglcykiLCBzZWxf
Z2V0TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAgICAgICAgcmVwbHlJbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5mbz4o
Z2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CisgICAgICAg
IHJlcGx5SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpS
ZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIHJlcGx5QmxvY2tTaWduYXR1cmUp
OwogCiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGJsb2NrIG9iamVjdCBzbyB3ZSB3b24ndCB0cnkg
dG8gZW5jb2RlIGl0LgogICAgICAgICBpZCBudWxsID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCmlu
ZGV4IDdlZDExZTZjMTcxZTIwYmUxZTllYWRiMzA3ZTcxZmM0OGJmZGU4NDkuLmZhZWZlZDJkY2M4
MzhlZTk1NzM5MDY1ZGFjNjNmMTM1NjNmMGQzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcApAQCAtOTQsNyAr
OTQsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdENvbnRleHRNZW51SXRlbUNyZWF0
ZShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJgogewogICAgIFdlYktpdENvbnRleHRNZW51
SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIE5VTEwpKTsKIAotICAgIGl0ZW0tPnByaXYtPm1lbnVJ
dGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihpdGVtRGF0YSk7
CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRl
bUdsaWI+KGl0ZW1EYXRhKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4mIHN1Yk1lbnUgPSBpdGVtRGF0YS5zdWJtZW51KCk7CiAgICAgaWYgKCFzdWJNZW51LmlzRW1w
dHkoKSkKICAgICAgICAgd2Via2l0Q29udGV4dE1lbnVJdGVtU2V0U3ViTWVudShpdGVtLCBhZG9w
dEdSZWYod2Via2l0Q29udGV4dE1lbnVDcmVhdGUoc3ViTWVudSkpKTsKQEAgLTE0MCw3ICsxNDAs
NyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXco
R3RrQWN0aW9uKiBhY3Rpb24pCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoR1RLX0lTX0FDVElP
TihhY3Rpb24pLCBudWxscHRyKTsKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9
IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVY
VF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uKTsKKyAgICBpdGVtLT5w
cml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9u
KTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIFdlYktpdENvbnRl
eHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24oR0Fj
dGlvbiogYWN0aW9uCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIXRhcmdldCB8fCBnX3Zhcmlh
bnRfaXNfb2ZfdHlwZSh0YXJnZXQsIGdfYWN0aW9uX2dldF9wYXJhbWV0ZXJfdHlwZShhY3Rpb24p
KSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRf
Q09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9J
VEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbiwgU3RyaW5nOjpmcm9tVVRGOChsYWJl
bCksIHRhcmdldCk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNv
bnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbiwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCksIHRhcmdl
dCk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTE5NCw3ICsxOTQsNyBAQCBXZWJLaXRDb250
ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rp
b24oV2ViS2l0Q29udAogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lU
X0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVf
SVRFTSwgbnVsbHB0cikpOwogICAgIENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSA9IHdlYmtpdENv
bnRleHRNZW51QWN0aW9uSXNDaGVja2FibGUoYWN0aW9uKSA/IENoZWNrYWJsZUFjdGlvblR5cGUg
OiBBY3Rpb25UeXBlOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdl
dEFjdGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldExhYmVsKGFjdGlv
bikpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVu
dUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rp
b24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldExhYmVsKGFjdGlvbikpOwogCiAgICAgcmV0
dXJuIGl0ZW07CiB9CkBAIC0yMTYsNyArMjE2LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3
ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uX3dpdGhfbGFiZWwK
IAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVf
SVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIp
KTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250ZXh0TWVudUFjdGlv
bklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZTsK
LSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0
aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0
TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7
CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTIzOSw3ICsyMzksNyBAQCBXZWJLaXRDb250ZXh0
TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KGNvbnN0
IGdjaGFyKiBsYQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFdlYktpdENvbnRleHRN
ZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5t
ZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oQWN0aW9u
VHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnLCBTdHJpbmc6OmZyb21VVEY4
KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRl
eHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlv
blRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogICAgIGl0ZW0tPnByaXYtPnN1Yk1lbnUg
PSBzdWJtZW51OwogICAgIHdlYmtpdENvbnRleHRNZW51U2V0UGFyZW50SXRlbShzdWJtZW51LCBp
dGVtKTsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2NoYXIqIGxhCiBXZWJL
aXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9y
KHZvaWQpCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRF
WFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwg
bnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBhcmF0b3JUeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdO
b0FjdGlvbiwgU3RyaW5nKCkpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1
ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBhcmF0b3JUeXBlLCBDb250ZXh0TWVudUl0ZW1U
YWdOb0FjdGlvbiwgU3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuaAppbmRleCA1ZWQxNDNhOTk4NTkwNDk2YzMzNzZhNTY5ODgxMTUzYTZhMDJiMjhjLi5m
MzNjYWIzMDVmZWUxMjc0ZmFhN2IyMTgzOGU5YmI3ZWY3NmJiZjI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkK
ICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+CiAgICAgLCBwdWJsaWMgUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IENsaWVudCB7CiAgICAgICAgIHZpcnR1YWwgfkNsaWVu
dCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCA3
YWQzMzMxNDUzOTE4ODg5ZmQzYjk4OTYzODZhOGJlZDFmNTE5YTE0Li4zOTE0YTRjMjAxNGE5YTU0
YTYzNDg4YTRlNzQzODE5YzZhOGRiM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMCiAKICAgICAg
ICAgQVNTRVJUKHZpZXdDb250cm9sbGVyKTsKIAotICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQ
cm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBh
eW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJvbGxlcik7CisgICAgICAgIHBheW1lbnRDb29y
ZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBtYWtlVW5pcXVlPFBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXltZW50Q29vcmRpbmF0b3JQcm94eSwg
cGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVyKTsKIAogICAgICAgICBBU1NFUlQo
IXBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93KTsKICAgICAgICAgcGF5bWVu
dENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cgPSBbTlNXaW5kb3cgd2luZG93V2l0aENv
bnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5o
CmluZGV4IDg2ZTc0NGMxMDhkZjRjYmNmNWQwNDc2MDlhY2Y5NmM2ODIzZDZiMTYuLjRmODM3MDI0
ZWU1ZjM0ZmZhMGU2OWJhZjdiM2JmYzg4MWE1MjgwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5o
CkBAIC01NSw2ICs1NSw3IEBAIGVudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbiA6IHVpbnQ4X3Q7CiB1c2luZyBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPjsKIAogY2xhc3MgQXV0aGVudGljYXRpb25NYW5h
Z2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRpb25NYW5hZ2VyPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QXV0aGVudGljYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBdXRoZW50aWNh
dGlvbk1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCA1NmE3ODNhMGIyM2IyNmEy
MGM1YjhmYTRhNTlmMTU3YTRjMDM3YmI3Li4yZDVkMWFmYzA4MjdhNDFhMGJkODNiYmFhODBmNzhm
NjE0ZjViZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94
RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJv
eEV4dGVuc2lvbkNvY29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lv
bkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5
cGUsIE9wdGlvbmFsPHBpZF90PiBwaWQgPSBXVEY6Om51bGxvcHQpCiAgICAgewpAQCAtMTYwLDcg
KzE2MSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxIYW5kbGU+CiAgICAgICAgIHJldHVybiB7eyB9fTsK
IAogICAgIEhhbmRsZSBoYW5kbGU7Ci0gICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8U2FuZGJveEV4dGVuc2lvbkltcGw+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwor
ICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBtYWtlVW5pcXVlPFNhbmRib3hFeHRlbnNp
b25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEo
KSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggMThkYzJm
YjhlZDEzZDE1MzQxMmVhMzBlMjkxMTE3OGVhY2VmYzVhZS4uNzA0MzBmNDQzMTJjOGE1NjJjZTE1
ZmM3MzJmNjlkMzg3NmZlOWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciYgdGV4bWFwTGF5
ZXIoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllciYgY29tcG9zaXRpb25MYXllcikKIHsKICAgICBh
dXRvJiBjb21wb3NpdGlvblN0YXRlID0gY29tcG9zaXRpb25MYXllckltcGwoY29tcG9zaXRpb25M
YXllcikuY29tcG9zaXRpb25TdGF0ZSgpOwogICAgIGlmICghY29tcG9zaXRpb25TdGF0ZS5sYXll
cikgewotICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBt
YWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICAgICAgY29tcG9zaXRpb25TdGF0
ZS5sYXllci0+c2V0SUQoY29tcG9zaXRpb25MYXllci5pZCgpKTsKICAgICB9CiAgICAgcmV0dXJu
ICpjb21wb3NpdGlvblN0YXRlLmxheWVyOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXll
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yb290TGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJMYXllcj4oKTsKKyAgICBtX3Jvb3RMYXllciA9IG1ha2VVbmlxdWU8VGV4
dHVyZU1hcHBlckxheWVyPigpOwogICAgIG1fcm9vdExheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZh
bHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBtX3Jv
b3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
CmluZGV4IGNkM2U1N2M2YmNiOWQ4ZGMxZmY5OWNhZDU5YzRlMTNmZjY2MDNhNmIuLmJjYjIzNTk3
NWIxMzNkMmUyNzY3NmQyODNmZTg5MTM4MWEwZDVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0
ZShDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbAogVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJl
YWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25p
dG9yOjpDbGllbnQmIGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCwgUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlELCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWxlRmFj
dG9yLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIHBhaW50RmxhZ3MpCiAgICAgOiBtX2NsaWVu
dChjbGllbnQpCiAgICAgLCBtX3BhaW50RmxhZ3MocGFpbnRGbGFncykKLSAgICAsIG1fY29tcG9z
aXRpbmdSdW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10g
eyByZW5kZXJMYXllclRyZWUoKTsgfSkpCisgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChtYWtl
VW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0p
KQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAg
LCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
Y3JlYXRlKGRpc3BsYXlJRCwgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KSkKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5oCmluZGV4IDFhMDU0NzUwN2VjMWMxYTgxMjQ3MmJiN2ViZDlmYTBkNGFkMTNhNDgu
LjA3ZThiYmM5YjVjOWMzYzZjOWQ4ZDZjM2I5NDVlNTM5MzI3Yjg3NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgK
QEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgTlBWYXJpYW50RGF0YTsKIGNsYXNzIFBsdWdpbjsKIAog
Y2xhc3MgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKTsK
IAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJl
bW90ZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3Rl
T2JqZWN0TWFwLmNwcAppbmRleCA2MWUxZjk0MDI1MjM4NWRiODA1ZWMxMjJkZmYxYzllNGYxYjcy
NTYzLi5kNGI1MjRjODI5ZWM2NjcyMWRmMWE3MGQyZDUxM2FlNGViM2YzZDJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAt
NzcsNyArNzcsNyBAQCB2b2lkIE5QUmVtb3RlT2JqZWN0TWFwOjpucE9iamVjdFByb3h5RGVzdHJv
eWVkKE5QT2JqZWN0KiBucE9iamVjdCkKIHVpbnQ2NF90IE5QUmVtb3RlT2JqZWN0TWFwOjpyZWdp
c3Rlck5QT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCwgUGx1Z2luKiBwbHVnaW4pCiB7CiAgICAg
dWludDY0X3QgbnBPYmplY3RJRCA9IGdlbmVyYXRlTlBPYmplY3RJRCgpOwotICAgIG1fcmVnaXN0
ZXJlZE5QT2JqZWN0cy5zZXQobnBPYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOUE9iamVjdE1l
c3NhZ2VSZWNlaXZlcj4odGhpcywgcGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCkucmVsZWFz
ZSgpKTsKKyAgICBtX3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIG1ha2VVbmlx
dWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBP
YmplY3QpLnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gbnBPYmplY3RJRDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5jcHAKaW5kZXggN2IwMmI1ZTEyZjMyYzcyZDM4ZjUyMDQ1YmI2ZDZhMjNi
NjJhZTJlMS4uMjYxZDdhODk2OTMwNmE4OTI1YzRhYjM2ZTQ3OTQ3YjM5NmMxMjUyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgYm9vbCBt
b2R1bGVNaXhlc0d0a1N5bWJvbHMoTW9kdWxlKiBtb2R1bGUpCiAKIGJvb2wgTmV0c2NhcGVQbHVn
aW5Nb2R1bGU6OnRyeUxvYWQoKQogewotICAgIG1fbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxN
b2R1bGU+KG1fcGx1Z2luUGF0aCk7CisgICAgbV9tb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4o
bV9wbHVnaW5QYXRoKTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCBlYTJiZTkz
MDhjYmJlNmRkN2ViOGNmMmM1ODhjOGZmNjE5ZWE5OTNjLi45NTUxM2Y0Nzk4MmZkNjdlZTVmOThk
ZDc5OTZjODU5OGYxZjQ2M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApA
QCAtNTEsNiArNTEsNyBAQCBjbGFzcyBFbmNvZGVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIExheWVyQ2hhbmdlIHsKICAgICAgICAgTmFtZUNoYW5n
ZWQgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMSwKQEAgLTk0LDYgKzk1LDcgQEAgY2xh
c3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5
ZXJDcmVhdGlvblByb3BlcnRpZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgICAgIExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzKCk7CiAKICAgICAgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CkBAIC0xMDksNiArMTExLDcgQEAgY2xhc3Mg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJQ
cm9wZXJ0aWVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBMYXllclByb3BlcnRpZXMoKTsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExh
eWVyUHJvcGVydGllcyYgb3RoZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0KaW5kZXggMWYyZGU0ZDAzN2VhM2U4MzAyODdhYjk4Y2IyYThmMjFjNGVjZWEyZS4uMGQyMjdm
ZmMxZDljNTU1NmFhZDkyZTdlZTE1NzY1ZTE2YjM0NDJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTUyLDEzICsxNTIsMTMgQEAgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJv
cGVydGkKICAgICAvLyBGSVhNRTogTGF5ZXJQcm9wZXJ0aWVzIHNob3VsZG4ndCBiZSBjb3B5YWJs
ZTsgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZSBzaG91bGQgY29weSB0aGUgcmVsZXZhbnQg
cHJvcGVydGllcy4KIAogICAgIGlmIChvdGhlci50cmFuc2Zvcm0pCi0gICAgICAgIHRyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhl
ci50cmFuc2Zvcm0pOworICAgICAgICB0cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKIAogICAgIGlmIChvdGhlci5z
dWJsYXllclRyYW5zZm9ybSkKLSAgICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFu
c2Zvcm0pOworICAgICAgICBzdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXllclRyYW5zZm9ybSk7CiAKICAgICBp
ZiAob3RoZXIuZmlsdGVycykKLSAgICAgICAgZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOworICAgICAgICBmaWx0ZXJz
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7
CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTM1NCw3ICszNTQsNyBAQCBi
b29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNm
b3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJlc3Vs
dC50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1bHQudHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBp
ZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgU3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKSB7
CkBAIC0zNjIsNyArMzYyLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAgcmVzdWx0LnN1
YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVz
ICYgSGlkZGVuQ2hhbmdlZCkgewpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyb3VuZGVkUmVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVk
UmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRl
ZFJlY3QpOworICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwogICAgIH0KIAogICAgIGlmIChy
ZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBTaGFwZVBhdGhDaGFuZ2VkKSB7CkBAIC00NzEsNyAr
NDcxLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc0Zyb250QnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aWYgKGhhc0Zyb250QnVmZmVyKSB7Ci0gICAgICAgICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KG51bGxwdHIpOworICAgICAg
ICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlPihudWxscHRyKTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmJhY2tpbmdT
dG9yZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCkBAIC00
ODYsNyArNDg2LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgIH0KIAogICAgIGlmIChy
ZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBGaWx0ZXJzQ2hhbmdlZCkgewotICAgICAgICBhdXRv
IGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7
CisgICAgICAgIGF1dG8gZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0
aW9ucz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqZmlsdGVycykpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlc3VsdC5maWx0ZXJzID0gV1RGTW92ZShmaWx0
ZXJzKTsKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllclRyZWVUcgogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVy
dGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJQcm9wZXJ0aWVzPigpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBtYWtlVW5pcXVl
PExheWVyUHJvcGVydGllcz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqbGF5ZXJQ
cm9wZXJ0aWVzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmluZGV4IDk3OGM0YmJl
ZDdiNWNkOTFjYWFlYzE1NGJjOGJhMTRiYWI3NTM0NjEuLmU4MjZhMzBiMTJlMjRlY2Y0MzBjNjli
NzZiMWE2ZjI4ZjViYjk4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTUyMiw3ICs1MjIsNyBAQCBib29sIFJlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNOZXdSb290Tm9kZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOworICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0g
bWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CiAKICAgICBib29sIGhhc0NoYW5nZWRQ
cm9wZXJ0aWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ2hhbmdlZFByb3BlcnRpZXMp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFw
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fp
cm8uY3BwCmluZGV4IGM3MzQ3Yzc5ZTY2OTM4Mzc4NWQwNWQyMjllNDdiNzQ3YzFmMGNhNTUuLmIy
Y2Q0ODQ2Njc3Y2U5N2RmYWMyODU4NDkwYzFlYTQzNGY5NjI5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKQEAgLTYwLDcg
KzYwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IGltYWdlID0gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CiAgICAgUmVmUHRyPGNhaXJvX3Q+IGJpdG1h
cENvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoaW1hZ2UuZ2V0KCkpKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0
ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1h
cDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9p
bnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9T
aGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggOTJmMTA2MmIyOTBmNzc1ZGI1YWU3ZWQxOTUyYTlj
YTg1OGFiMzEyMi4uMDE2YWJiZDk5M2UxOGE0NWMwMWE3ZjA0OTdkY2MzMWE1M2I0MzcwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTAw
LDcgKzEwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0o
Yml0bWFwQ29udGV4dC5nZXQoKSwgMCwgbV9zaXplLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRT
Y2FsZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAxLCAtMSk7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CiB9
CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgc291
cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1h
cERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBE
aXJlY3QyRC5jcHAKaW5kZXggNjBmOGYzY2I3MzI4OWI2YjBkMmY0YzM1MTQ2ZjFjZmVkNDAzNGE4
MC4uMTAwMWVlM2U1MjkyZWRjYjUzNmY4MjMzMDNjMmM3NGMyYjFlOTI5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCkBA
IC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBtX2JpdG1hcCA9IGNyZWF0
ZURpcmVjdDJEU3VyZmFjZSgpOwogICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gYml0bWFw
Q29udGV4dCA9IERpcmVjdDJEOjpjcmVhdGVSZW5kZXJUYXJnZXRGcm9tV0lDQml0bWFwKG1fYml0
bWFwLmdldCgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+
KEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0
LmdldCgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkp
OwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaApp
bmRleCAyOTk1ODEwOTVkZDFkMWIxNWFmZWFiYjRkYWNiZWQwNWQyYmRkMTE0Li41NDVhN2JlNGQ0
ODE5NzEzMjhkMWMzZjc5ZDI3MWVkOWEyMWY4MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xh
c3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQXV0b21hdGlvbkNs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+QXV0b21hdGlvbkNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IDI4ZmFmNjg3
MTlhOWQ3MjhkNTFiNmM3NzJkODRlMTdiNjQ5MDk3Y2EuLjJhZTJhNTAzNGMzYTQxNzFjY2Y0Nzdi
OTc4NWI3M2E2ZjI0ZGI4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGVu
dW0gQXV0b21hdGlvblNlc3Npb25Ccm93c2luZ0NvbnRleHRPcHRpb25zIDogdWludDE2X3Qgewog
fTsKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgSmF2YVNjcmlwdERpYWxvZ1R5cGUg
ewogICAgICAgICBBbGVydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggYWYxMDljMWRmNjcwMGRjMjNlMmUzMzFiMGI1MGVm
YmNmZjQyODY2Ny4uODE2ZjcxZTEyNjcwY2IzZDY1YjFlNjMyODAzYTZiNDBlZjdkYmZhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7
CiAKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVudCgpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggMGY4Y2FiOTczMjlmMDk1N2YzMmI0N2MyNzc4MWQxZTc4
NmZhMTQ3ZC4uOGI0NGEzZjQ1NmM1MzJhZDMzODA2ZWY2OWI0N2VhZDA5NDFkZjdiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAppbmRleCA5
MmIyZDY3NWRmY2EyY2FmZGEyMTFiM2Y3MWM1Nzk4YWZkNDVkNjJhLi5iNGUyYWRlNzI5ZWE2NmQ4
ZGRhOGRkNTAyMTE4YWU0YWJkYjIxODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaApAQCAtMzcsNiArMzcs
NyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIERpY3Rpb25hcnk7CiAKIGNsYXNzIERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5EaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IDAyMzc2ZTFl
MTEwZDQ3NmViMmI5MTg1ZTRlMmZjZDhkNmUxMzMyZTEuLmIyZWFjYzliODMyNTk4YjE3YTk5ZGJk
OWQ2N2VmMjRlNDczYWVkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEb3dubG9hZENsaWVudC5oCkBAIC00Niw2ICs0Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVy
d3JpdGUgeyBObywgWWVzIH07CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRG93bmxvYWRDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGaW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RmluZENsaWVudC5oCmluZGV4IGYzMTIzYWYxOTUxNjVhNjY5ZDY2NjgzMThiODEyZTkzMzY1ZTZk
YzIuLjZkMWUzYjIxMWZlMGRkOTVhOTQ4NTA1ODQxN2RiNGRlMDgyNDBkNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaApAQCAtMzksNiArMzksNyBAQCBj
bGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRmluZENsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rmlu
ZENsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRmluZE1hdGNoZXNDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
aW5kTWF0Y2hlc0NsaWVudC5oCmluZGV4IGM2ZjQ1NzM0MmQxMTE5MDFkY2E2ZDNjMzA5MDMzN2Zl
ZTdhMWZlYzIuLmZhZTFkY2QzY2Q2ODgzNTA3ZWZiZTNkOTVkNWQ2ZjcyYTAzNjlkZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5o
CkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewog
CiBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZE1hdGNoZXNDbGllbnQoKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKaW5kZXggNWIwYzZjY2EyNGVl
ZmMxYTk1ODE5MWUwZTI3OTRhNDdiNGY1NGU3Yy4uZjBjYTA2MDExMTk4MDJlZDM2OWI0ZDA3OGQ4
M2M4NjJhNTE2MTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNs
aWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0Owog
CiBjbGFzcyBGb3JtQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Gb3JtQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCmluZGV4IDEzNzU1MjljZGEyNWYy
NWNiYjE3OWJkYzg5ODkxNzFjODllZTg4NTcuLjg5NzRjZDEzMzk0Nzc1MDI3M2Y0NTBmMGU4Mzk2
YzBlNmIxMzIwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
dWxsc2NyZWVuQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1
bGxzY3JlZW5DbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBu
YW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRnVsbHNjcmVlbkNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgQVBJVHlw
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlv
blByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Q
cm92aWRlci5oCmluZGV4IDUyNjZiYzJjYTU0Y2YwOTljMjM4Y2FjYzYyMTQ0Yzk3OTlhMDk3OTcu
LjdjNmY1NjI5Y2I2MGU1M2JjN2I4NWFhODg4OWY3MmU2OGQ3YTRjMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAt
MzQsNiArMzQsNyBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTsKIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvblByb3ZpZGVyKCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29v
a2llU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5jcHAKaW5kZXggOTgxYTk4NWJiZGU1ZjFjYjY1Zjk2Y2JiMjEzOWZiY2YxOWQ3ZGNlNS4u
ZTEyMmVlM2VkYjFjNDIxOWQxZDg0MTk5MzIxYTgwMDNkNTJjODIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTE0OCw3
ICsxNDgsNyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZl
ciYgb2JzZXJ2ZXIpCiAKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHkp
OwogCi0gICAgbV9jb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsKKyAgICBtX2Nvb2tpZU1h
bmFnZXJQcm94eU9ic2VydmVyID0gbWFrZVVuaXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlP
YnNlcnZlcj4oKnRoaXMpOwogCiAgICAgYXV0byogcG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5w
cm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCmluZGV4IGZjZjQ2MDYxZjZiZmE2
ZGNiNzYwZTEyYzY2MzNiNmI0NWYxNTZkZDQuLjExODRhYTQzMmMzYjlmZmNiMTVkYTVmODI4ZWY0
YWM0ZjFhZGIxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElI
aXN0b3J5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3Rv
cnlDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IaXN0b3J5Q2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0
YWJhc2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJh
c2VDbGllbnQuaAppbmRleCBlYTllYmE1MGUxZWZlOGYwMzIxYzRkZmUzYTQ0NmYwZGNiYjVkOGM5
Li5iZTQzYWVlYzU0ZmYyZDRhYmI1YTI4ZmYzNjMxNDVjNDkwYzdlODU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCkBAIC0z
NCw2ICszNCw3IEBAIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIG5hbWVzcGFjZSBBUEkgewogCiBj
bGFzcyBJY29uRGF0YWJhc2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4
IDZmOWU3YWY5Yzk4MDkyMzNiNmE1NjVlYzNlMzgwYmUwYWFjZDU2N2UuLjJmZTM4NjI1OTQ2M2Jm
YjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNz
IERhdGFSZWZlcmVuY2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkljb25Mb2FkaW5nQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggYzM1ZTdiM2FlNDkzZDlh
YzYzY2IzYTRiNTgxZmUzMmZjYjQwYWNlOC4uOWQ0MzQ4OWEyZDYyNTdjYjBjYWY5MjJiM2ZiMDkz
Mjk1Y2U5YmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUlu
amVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgV2ViUHJvY2Vz
c1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluamVj
dGVkQnVuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCmluZGV4
IGNiYjllMGE5NzE0NWJkMTdkZGVmOGUwYmIxNGFmOGMzNzZkZmIzODguLmRiNWQ5MGMzMWY5Mjc2
OWQzMDNhMDFhZDc4YmRhN2ZiZDFhNGQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCkBAIC0z
OCw2ICszOCw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogbmFtZXNwYWNlIEFQ
SSB7CiAKIGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVy
Q2xpZW50LmgKaW5kZXggMzQ4ZDZiZjc3MjkyNzJlOGYyYWJhZWMzNzU1YzIwZGU1NDJkNjQ1ZC4u
YjJlYTQxZDllMmYyZTgxZTJjOWViM2I4Nzc5MWZjM2VmOGMzZjBkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaApAQCAtNTMsNiArNTMsNyBAQCBj
bGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBMb2FkZXJDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRl
ckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IGE2ZTAxOWNjNDUxODYzYTQx
YWNmYzhiZWE3YmYzMDI4OTZiMWJiNzMuLmNkMjJhMjY3NjQ2OGQxODIzNGE2MDg0MmZlOWQ5MTY3
MWIyMGE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaApAQCAtNzMsNiArNzMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uUmVzcG9uc2U7
CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfk5hdmlnYXRpb25DbGllbnQo
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGlj
eUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5o
CmluZGV4IDVlYmU0NDA3NDJhNzY1NDFiMWQ5Y2NmMjk5NWM5YTk1ZmU4NGQ1YWQuLjZhZThlNzUy
MDVmZmZjODY1MmY0ZjliODNiYjNkZTMwZWU2Y2ZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNl
IEFQSSB7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIFBvbGljeUNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9saWN5Q2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggZDlk
ZDBkYjQ2NjM3NzIyYjYwMmIyMGRkZGY2NzM4MTM1ZjY0NmY2Mi4uNzcyZGE2ZTVhODY5NzdlYzhh
ZTJkYzA3NTQyZDhmY2YxZTE0OTYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVVJQ2xpZW50LmgKQEAgLTcxLDYgKzcxLDcgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBVSUNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlDbGllbnQoKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggZDBlYjMx
YWUxNjkwMDU3NzJhNmJlYzE0MzdjMmI0MzBkMGNiNGU2ZC4uYjMyNGEyNDA0ZmMwMGFlNzk4NDRm
ZWY5MDdkMDcwZTFkMDMwMDVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiB3a0NsCiAK
IHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVj
dGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVu
dChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2UqIHdrQ2xpZW50KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9y
eUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNs
CiAgICAgfTsKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sID0gKldl
YktpdDo6dG9JbXBsKGNvbnRleHRSZWYpOwotICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHByb2Nl
c3NQb29sLnNldEhpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVu
dCkpOwogCiAgICAgYm9vbCBhZGRzVmlzaXRlZExpbmtzID0gcHJvY2Vzc1Bvb2wuaGlzdG9yeUNs
aWVudCgpLmFkZHNWaXNpdGVkTGlua3MoKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV0tD
b250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdL
Q29udGV4dERvd25sb2FkCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRD
bGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERv
d25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAK
IHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIu
Y3BwCmluZGV4IDExYjgzNGI0ZWUyYTlhNjg3NjI2YzczMmJmNThhNDg4MjNmNjMzNGEuLjg4OGI3
NWJjN2NlYzg5ZDE2ZTA3ZjYxN2U3YmIyY2UyOTc5ZmE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tHZW9sb2NhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQogCiB2
b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tHZW9sb2NhdGlvbk1hbmFnZXJS
ZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBjb25zdCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJCYXNl
KiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQ
cm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlk
ZXIpKTsKKyAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFr
ZVVuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAKIHZvaWQg
V0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdLR2VvbG9jYXRp
b25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tHZW9sb2NhdGlvblBvc2l0aW9u
UmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYjIyM2Q2Zjg3YmZhNWU5NmUzZTUw
ZGEyZGQ3OGZmMGQyZGQ0MTZjZS4uNzY5MjM5OTBhYjViOWVhMjEzODVmMWQzNTY5ZThiNTBhYTdm
NjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLTm90aWZp
Y2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0
UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdLTm90
aWZpY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChtYW5hZ2Vy
UmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRl
cj4od2tQcm92aWRlcikpOworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIobWFr
ZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lk
IFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihXS05vdGlm
aWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA0N2VjNzI2YjBjZTQ0
MDU3ZjAwMmI1NDBiZWE3NjhlNDNiMTBhOGQ0Li42MWE2OWIxZjNhNmRhNzQ5NmFkNDcyNjk3MGI4
NWYyYzkxMTgxM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
QEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogICAgICAgICB9CiAg
ICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+
KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVT
RURfUEFSQU0od2tDbGllbnQpOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0
TWVudUNsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJhc2UqIHdr
Q2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xp
ZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudCht
YWtlVW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4od2tDbGllbnQpKTsKIH0K
IAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtOTk1LDcgKzk5NSw3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZp
bmRDbGllbnRCYXNlKiB3a0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4od2tDbGllbnQp
KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxGaW5kQ2xp
ZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNlKiB3
a0NsaWVudCkKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRj
aGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAg
ICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hlc0Ns
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVudCkpOworICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxGaW5kTWF0
Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
SW5qZWN0ZWRCdQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRm9ybUNsaWVudD4o
d2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQobWFrZVVuaXF1
ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VMb2Fk
ZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2Uq
IHdrQ2xpZW50KQpAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVy
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgog
CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0b0ltcGwocGFnZVJlZik7CiAKLSAg
ICBhdXRvIGxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyQ2xpZW50Pih3a0Ns
aWVudCk7CisgICAgYXV0byBsb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPExvYWRlckNsaWVudD4o
d2tDbGllbnQpOwogCiAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMg
Y29kZSBhbmQgdHJhbnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVh
ZCBvZgogICAgIC8vIGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCkBA
IC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgIH0KICAg
ICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQ
b2xpY3lDbGllbnQobWFrZVVuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMjA3NSw3ICsyMDc1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tD
bGllbnQKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0yMjkzLDE2NCAr
MjI5MywxNjYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICB3ZWJQYWdlUHJveHktPnNl
dE5hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxOYXZpZ2F0aW9uQ2xpZW50Pih3a0NsaWVu
dCkpOwogfQogCi12b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwg
V0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgY2xhc3MgU3RhdGVDbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGlj
IFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0
IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7Ci0gICAgICAgIH0KLSAgICBwcml2
YXRlOgotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9h
ZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CitjbGFzcyBTdGF0ZUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBw
dWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRl
Q2xpZW50QmFzZSogY2xpZW50KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOwor
ICAgIH0KK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUlz
TG9hZGluZygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgpIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVRp
dGxlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9p
ZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVu
dC53aWxsQ2hhbmdlVGl0bGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50
LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVRpdGxlKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VB
Y3RpdmVVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZl
VVJMKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENo
YW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAg
dm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhh
c09ubHlTZWN1cmVDb250ZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNv
bnRlbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdl
SGFzT25seVNlY3VyZUNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xp
ZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFu
Z2VIYXNPbmx5U2VjdXJlQ29udGVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJl
Q29udGVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5n
ZUhhc09ubHlTZWN1cmVDb250ZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5n
ZUVzdGltYXRlZFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0K
IAotICAgICAgICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRD
aGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdp
bGxDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjaykK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFj
ayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENo
YW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9j
bGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2spCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5H
b0ZvcndhcmQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2Fy
ZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdv
Rm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IGRpZENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0Zv
cndhcmQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VD
YW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENo
YW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1Jl
cXVlc3RzSW5Qcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29ya1JlcXVl
c3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50Lndp
bGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZU5l
dHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Q
cm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdl
TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
IH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0
ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2ls
bENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5m
byhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENo
YW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0
aWZpY2F0ZUluZm8oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRD
aGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdl
V2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vz
c0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50Lndp
bGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVdlYlByb2Nl
c3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9u
c2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRD
aGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZFN3
YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0gICAgfTsKKyAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vz
c2VzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRTd2FwV2ViUHJv
Y2Vzc2VzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQorfTsKKwordm9pZCBXS1Bh
Z2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFz
ZSogY2xpZW50KQorewogICAgIGlmIChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0
UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6bWFrZV91bmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVu
dCkpOworICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtl
VW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCiAgICAgICAgIHRvSW1wbChw
YWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQppbmRl
eCBmNzYzYWY2MDAzZGE0NjY3MzYzMWU5MWVhODFiODNiNWM5N2EwODdkLi4zNWVmOTIyMTU0ZTE5
NjMwMGU0YjZlZTc1ZDRjOTgxNzg1YmMzZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtNTIsNyArNTIsNyBA
QCAtIChpZClpbml0V2l0aFBhZ2U6KFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJilwYWdl
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfcGFnZSA9IFdURk1vdmUocGFnZSk7Ci0gICAg
X29ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZl
cj4oc2VsZiwgQCJVUkwiKTsKKyAgICBfb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFn
ZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmLCBAIlVSTCIpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0
YXRlKCkuYWRkT2JzZXJ2ZXIoKl9vYnNlcnZlcik7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKaW5kZXggNzhiYmEzOTY3
YjYxOTdjMGU4YTdjMjNhYzNkYThjZDEzMmU3YzRiZS4uOTY0MDZkMGFhZmJjMzU1NTYwYjVkMzE5
N2EwMGMyNWY1NzU5YTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0Mvd3BlL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3Bl
L1dLVmlldy5jcHAKQEAgLTY4LDUgKzY4LDUgQEAgdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdL
Vmlld1JlZiB2aWV3LCBjb25zdCBXS1ZpZXdDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgICAgIH0K
ICAgICB9OwogCi0gICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxW
aWV3Q2xpZW50PihjbGllbnQpKTsKKyAgICB0b0ltcGwodmlldyktPnNldENsaWVudChtYWtlVW5p
cXVlPFZpZXdDbGllbnQ+KGNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
bW0KaW5kZXggMjY1NTU0ZjNkN2YyZDdhZDI5NmU5ZjNmOWZhMTEzODhiNzhmZDU2NC4uNDk2Nzc4
OGExMDU3ZmE4ODJhMGEwMWM4ZGJmNTAwMmU5MjI2ZWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyLm1tCkBAIC02MDIsNyArNjAyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aFBhZ2VSZWY6KFdLUGFnZVJlZilwYWdlUmVmCiAKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBs
KHBhZ2VSZWYpOwogCi0gICAgX3BhZ2VMb2FkU3RhdGVPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYpOworICAgIF9wYWdlTG9hZFN0
YXRlT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihz
ZWxmKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfcGFnZUxvYWRT
dGF0ZU9ic2VydmVyKTsKIAogICAgIEFTU0VSVCghYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1h
cCgpLmNvbnRhaW5zKF9wYWdlLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggMTM3MmNhNDEwNmM3
NmUxZDYyMzVkNjE0YWQ1YzFlNmE1NmVhMDVhMS4uODFkMzcwM2IwZWVhODJlNWU2YzYyZjMyMjJh
YzRlNjgxOWY2YjNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIC0gKHZvaWQp
YWRkT2JzZXJ2ZXI6KGlkPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KW9ic2VydmVyCiAgICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZl
cj4ob2JzZXJ2ZXIpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdL
SFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKICAgICBfY29va2llU3RvcmUtPnJl
Z2lzdGVyT2JzZXJ2ZXIoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGJh
Y2U1YWM3ZWMwMGIxODk4YWQyZGY3MmNiMWIxOTQ0NjdkY2VjOWQuLmViYWM1NjhlM2RkYjY4NzBm
ODViMDE1MDhlYzIwZmFhYjdmMjA0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zNzMsNyArMzczLDcgQEAgLSAoaWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiAtICh2b2lkKV9zZXREb3du
bG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxvYWREZWxlZ2F0ZQog
ewogICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsKLSAgICBfcHJvY2Vz
c1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9h
ZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0RG93bmxv
YWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVn
YXRlKSk7CiB9CiAKIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9hdXRvbWF0aW9uRGVs
ZWdhdGUKQEAgLTM4NCw3ICszODQsNyBAQCAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilf
YXV0b21hdGlvbkRlbGVnYXRlCiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxf
V0tBdXRvbWF0aW9uRGVsZWdhdGU+KWF1dG9tYXRpb25EZWxlZ2F0ZQogewogICAgIF9hdXRvbWF0
aW9uRGVsZWdhdGUgPSBhdXRvbWF0aW9uRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRB
dXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50
PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9t
YXRpb25DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1
dG9tYXRpb25EZWxlZ2F0ZSkpOwogfQogCiAtICh2b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJD
b250ZW50Q29udHJvbGxlci5tbQppbmRleCA4YjZkZjI0Zjg5NTJkODRmNjA3NTQ0YzZhMzFhMmRk
MWI4YWEzNTVkLi5hMDBiMjAzY2M5MDU5MzAxYmVjYzQ2MWQ2MWI0NjczMmI4NTYxMmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0xMTgsNiArMTE4LDcgQEAgLSAodm9pZClyZW1vdmVB
bGxDb250ZW50UnVsZUxpc3RzCiB9CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdh
dGUgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNz
YWdlSGFuZGxlckRlbGVnYXRlKFdLVXNlckNvbnRlbnRDb250cm9sbGVyICpjb250cm9sbGVyLCBp
ZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciwgTlNTdHJpbmcgKm5hbWUpCiAgICAg
ICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC0xNDUsNyArMTQ2LDcgQEAgcHJpdmF0
ZToKIAogLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewot
ICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0
ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNj
cmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpu
b3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRl
PihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRl
bnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKSkKICAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
IkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hl
biBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFtZV07CiB9CkBAIC0yMjksNyArMjMwLDcgQEAgLSAo
dm9pZClfcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdv
cmxkOihfV0tVc2VyQ29udGVudFcKIAogLSAodm9pZClfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihO
U1N0cmluZyAqKW5hbWUgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVz
ZXJDb250ZW50V29ybGQKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxl
ckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp1c2Vy
Q29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CisgICAgYXV0byBoYW5kbGVyID0gV2Vi
S2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVz
c2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBu
YW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOwogICAgIGlmICghX3Vz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFu
ZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVu
dEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVy
IHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDM5
MWExOTkyZTM1MzJkYmU1ZjIxZGI2OTFkZDgxMDhhYWUyYTY2Yy4uMDhmNDJlYzhiMTNiZjcwYmQy
YjZiMzdiYzdkODE1NjgyM2Q2YzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03NTcsNyArNzU3LDcgQEAgLSAodm9pZClfaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJh
dGlvbgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgX2ltcGwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdl
Q29uZmlndXJhdGlvbi5jb3B5UmVmKCkpOworICAgIF9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6
OldlYlZpZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24u
Y29weVJlZigpKTsKICAgICBfcGFnZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNl
dEF1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2V0cyh0cnVlKTsKQEAgLTc2OSwxNCArNzY5
LDE0IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIAogICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5h
bWVGb3JEZXNrdG9wVXNlckFnZW50KGNvbmZpZ3VyYXRpb24uX2FwcGxpY2F0aW9uTmFtZUZvckRl
c2t0b3BVc2VyQWdlbnQpOwogCi0gICAgX25hdmlnYXRpb25TdGF0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNlbGYpOworICAgIF9uYXZpZ2F0aW9uU3RhdGUg
PSBtYWtlVW5pcXVlPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKICAgICBfcGFnZS0+
c2V0TmF2aWdhdGlvbkNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xp
ZW50KCkpOwogCi0gICAgX3VpRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlE
ZWxlZ2F0ZT4oc2VsZik7Ci0gICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50PihzZWxmKSk7CisgICAgX3VpRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6VUlEZWxl
Z2F0ZT4oc2VsZik7CisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAK
LSAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJY29u
TG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKKyAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKIAogICAgIF91c2VQbGF0
Zm9ybUZpbmRVSSA9IFlFUzsKIApAQCAtMzQyNSw3ICszNDI1LDcgQEAgLSAodm9pZClzZXRBbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5h
dmlnYXRpb24KICAgICBfYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsKIAogICAgIGlmIChhbGxvd3NCYWNrRm9y
d2FyZE5hdmlnYXRpb25HZXN0dXJlcyAmJiAhX2dlc3R1cmVDb250cm9sbGVyKSB7Ci0gICAgICAg
IF9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CiAgICAgICAgIF9n
ZXN0dXJlQ29udHJvbGxlci0+aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxW
aWV3XSk7CiAgICAgICAgIGlmIChXS1dlYlZpZXcgKmFsdGVybmF0ZVdlYlZpZXcgPSBbX2NvbmZp
Z3VyYXRpb24gX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXNdKQogICAgICAg
ICAgICAgX2dlc3R1cmVDb250cm9sbGVyLT5zZXRBbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3Vy
Y2VQYWdlKGFsdGVybmF0ZVdlYlZpZXctPl9wYWdlLmdldCgpKTsKQEAgLTU2NzgsNyArNTY3OCw3
IEBAIC0gKHZvaWQpX3NldElucHV0RGVsZWdhdGU6KGlkIDxfV0tJbnB1dERlbGVnYXRlPilpbnB1
dERlbGVnYXRlCiAgICAgfTsKIAogICAgIGlmIChpbnB1dERlbGVnYXRlKQotICAgICAgICBfcGFn
ZS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAg
ICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7
CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChudWxscHRyKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9u
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0
aW9uU2Vzc2lvbi5tbQppbmRleCA3YWQwNzNiOGNkNmRkNDIwM2UxYTc2MDU4ZjdjN2RmMmE5Zjhh
ZDdiLi4yYWRlZWE3NjBjNjk4YjE4YWU1OTFlNTcwNTcxMzI5NWYyNGM1NmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25T
ZXNzaW9uLm1tCkBAIC03Miw3ICs3Miw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRl
bGVnYXRlPilkZWxlZ2F0ZQogLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25T
ZXNzaW9uRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0g
ICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CisgICAgX3Nl
c3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CiB9CiAKIC0gKE5TU3RyaW5nICop
c2Vzc2lvbklkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbQppbmRleCBiMzdiMDUwNTNmMTI0YWNiNzBmZDZhZGU2ZGY0MjBmZTgyNWQ1NGNmLi4w
ZGQ0MDlhNDNkZTY1MzAwYzlmMGNjODU0NDdhYzJmNzEzZWM5NDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0zOCw2ICszOCw3IEBAIEBlbmQK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgX1dLUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlDbGllbnQoX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKmNvbnRy
b2xsZXIpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC03NSw3ICs3Niw3
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBtX3Jl
bW90ZUluc3BlY3RvclByb3h5ID0gV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3Jl
YXRlKCk7Ci0gICAgbV9yZW1vdGVJbnNwZWN0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQ+KHNlbGYpOworICAgIG1fcmVt
b3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5Q2xpZW50PihzZWxmKTsKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXRD
bGllbnQobV9yZW1vdGVJbnNwZWN0b3JDbGllbnQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cAppbmRleCA4ZDJmODhhZTAwMzJhMGQ5MzQ1ZTY4MDBhOTc4NThiNDI4YTRkNmQ5Li4wNjg3MGQy
MWRlZTdjYTRmODlkYjllMzQyZjZmMGY1ZmQzZjU0YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3
IEBAIGlubGluZSB2b2lkIHJlYWR5U1FMaXRlU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxp
dGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIFNRCiAgICAgICAgIHN0YXRlbWVudCA9IG51bGxwdHI7
CiAgICAgfQogICAgIGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYiwgc3RyKTsKKyAgICAgICAgc3RhdGVtZW50
ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KGRiLCBzdHIpOwogICAgICAgICBpZiAoc3Rh
dGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQ
cmVwYXJpbmcgc3RhdGVtZW50ICVzIGZhaWxlZCIsIHN0ci5hc2NpaSgpLmRhdGEoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApp
bmRleCBiYWJkOGE5ODI5ZmI4MGQxOTg1MmVjOTc0YWVlYTcwY2VlMGI5MTU4Li44YThjYWJiZDUz
YzFlNjVmNzBhZGQwODVkNGY1NWVhMzEwMTE2MDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBT
aGFyZWRCdWZmZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSWNvbkRhdGFiYXNlQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JY29uRGF0YWJhc2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKQEAgLTU4LDYgKzU5LDcgQEAgY2xh
c3MgSWNvbkRhdGFiYXNlIHsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBJY29uU25hcHNob3Qgewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIElj
b25TbmFwc2hvdCgpID0gZGVmYXVsdDsKIApAQCAtMTE4LDYgKzEyMCw3IEBAIGNsYXNzIEljb25E
YXRhYmFzZSB7CiAgICAgfTsKIAogICAgIGNsYXNzIFBhZ2VVUkxTbmFwc2hvdCB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgUGFnZVVSTFNu
YXBzaG90KCkgPSBkZWZhdWx0OwogCkBAIC0xNzIsNiArMTc1LDcgQEAgY2xhc3MgSWNvbkRhdGFi
YXNlIHsKICAgICB9OwogCiAgICAgY2xhc3MgTWFpblRocmVhZE5vdGlmaWVyIHsKKyAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBNYWluVGhyZWFk
Tm90aWZpZXIoKQogICAgICAgICAgICAgOiBtX3RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
Jk1haW5UaHJlYWROb3RpZmllcjo6dGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcApp
bmRleCBkMmFmNjRiYWQ4NmE4YTMzZjEzMzU0NzI1ODFiNzAyZTQxYTY3ZWMyLi4yMTg2NjA0NTE5
Mjc2OWJlNmRmZjg1OWE2MzIwNDNkNTEzNTY5YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3Bw
CkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsg
MCwgfTsKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiwgd2Via2l0
X2F1dG9tYXRpb25fc2Vzc2lvbiwgR19UWVBFX09CSkVDVCkKIAogY2xhc3MgQXV0b21hdGlvblNl
c3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0
b21hdGlvblNlc3Npb25DbGllbnQoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCiAg
ICAgICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCkBAIC0yMjMsNyArMjI0LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAK
ICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uID0gYWRvcHRSZWYobmV3IFdlYkF1dG9tYXRpb25T
ZXNzaW9uKCkpOwogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldFNlc3Npb25JZGVudGlm
aWVyKFN0cmluZzo6ZnJvbVVURjgoc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpKSk7Ci0gICAgc2Vz
c2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QXV0b21hdGlv
blNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKKyAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5z
ZXRDbGllbnQobWFrZVVuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkRpc3Bvc2UoR09iamVjdCog
b2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDk3ZTkyNTYwMTc3MzdiNzY2NWFj
YzhlYjJmMzU4ZWIyZWM1OTAwYjkuLjI4NThkZjZmMzRkNGZhNjIxMjA5YmYxZWIxZTEwODg1YWQw
NWU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dENvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTU2LDYgKzU2LDYgQEAgY2xhc3Mg
Q29udGV4dE1lbnVDbGllbnQgZmluYWw6IHB1YmxpYyBBUEk6OkNvbnRleHRNZW51Q2xpZW50IHsK
IAogdm9pZCBhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldENvbnRleHRNZW51
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZpZXcpKTsKKyAg
ICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRDb250ZXh0TWVudUNsaWVudChtYWtl
VW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCmluZGV4IGQzMmI1OWM1NDc2NjdhN2VjODc3MTgx
MDUyYmQxYTc0OWMwZGJjMWMuLmEzNzNiMjk0NTcxNjc5MWEyZDRjMzA3YmQ1ZTBhOTI5YzgxNDBh
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcApAQCAtNTYs
NSArNTYsNSBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgZmluYWwgOiBwdWJs
aWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbgogCiB2b2lkIGF0dGFjaEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0
KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRXZWJDb250ZXh0
R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KG1ha2VVbmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pih3ZWJDb250ZXh0
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZWFkNGYyMzQ5OTE2NzA0ZDE3ZDFmMjMwNjQw
ODlmN2ExYTA0NTk0Zi4uZTc3MWRkNzE4N2U1ODU5YWRiZDVhMDE2ZjhjYTkzNWQyOGU4NGE4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxv
YWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dERvd25sb2FkQ2xpZW50LmNwcApAQCAtMTE4LDUgKzExOCw1IEBAIGNsYXNzIERvd25sb2FkQ2xp
ZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgewogCiB2b2lkIGF0dGFjaERv
d25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0g
ICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldERvd25sb2Fk
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAg
ICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRD
bGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25E
YXRhYmFzZS5jcHAKaW5kZXggMjE4MDgzZTc2OTdhNTEzOThmMmVlMDk0Y2RiMDY4YzIwODM3YjFm
YS4uOWI1ODE4YTk4MzZmMzc2MmQ4OTYyMmUzNjJjM2ZjOGIyZDNlYmZkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0
YWJhc2UuY3BwCkBAIC0yNjcsOCArMjY3LDggQEAgdm9pZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VP
cGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgcGEKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZSogcHJpdiA9
IGRhdGFiYXNlLT5wcml2OwotICAgIHByaXYtPmljb25EYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SWNvbkRhdGFiYXNlPigpOwotICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0SWNvbkRhdGFiYXNlQ2xpZW50PihkYXRhYmFzZSkpOworICAg
IHByaXYtPmljb25EYXRhYmFzZSA9IG1ha2VVbmlxdWU8SWNvbkRhdGFiYXNlPigpOworICAgIHBy
aXYtPmljb25EYXRhYmFzZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SWNvbkRhdGFiYXNl
Q2xpZW50PihkYXRhYmFzZSkpOwogICAgIEljb25EYXRhYmFzZTo6ZGVsYXlEYXRhYmFzZUNsZWFu
dXAoKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldEVuYWJsZWQodHJ1ZSk7CiAgICAgcHJp
di0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYlByZWZlcmVuY2Vz
OjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDRmOTgwZDRlZTI1OGFjYWM0NTU4MzIzY2E3YmQ3MWNjZGYzYmVlYjEuLjc2NzVjOWNiM2E1
ZWRhZjg4NjRkMTdhMTc5MjE3Y2I5NDIzMzY1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKQEAgLTEz
Nyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRGaW5kQ29udHJvbGxlckNvbnN0cnVjdGVk
KEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZmluZF9jb250cm9s
bGVyX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKICAgICBXZWJLaXRGaW5k
Q29udHJvbGxlciogZmluZENvbnRyb2xsZXIgPSBXRUJLSVRfRklORF9DT05UUk9MTEVSKG9iamVj
dCk7Ci0gICAgZ2V0UGFnZShmaW5kQ29udHJvbGxlcikuc2V0RmluZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRDb250cm9sbGVyKSk7CisgICAgZ2V0UGFnZShmaW5kQ29u
dHJvbGxlcikuc2V0RmluZENsaWVudChtYWtlVW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRDb250cm9s
bGVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVyR2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMq
IHBhcmFtU3BlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZvcm1DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Rm9ybUNsaWVudC5jcHAKaW5kZXggMTM0ZDFjNmNlYmU1NjdmYzU0ZDk3MGY4NzZiZTAy
OTMxZDMyODIyZC4uYmM2N2EzNTdkYzA3NDQ1YTM1MjhmODBmMGFiZDc5ZDA3YzNiYzA0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNs
aWVudC5jcHAKQEAgLTQ4LDUgKzQ4LDUgQEAgY2xhc3MgRm9ybUNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBBUEk6OkZvcm1DbGllbnQgewogCiB2b2lkIGF0dGFjaEZvcm1DbGllbnRUb1ZpZXcoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5z
ZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4od2ViVmlldykpOworICAg
IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxG
b3JtQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCAy
ZTE1OTQ1ZGZhZDI5YzMxNTUwZDFhZDNjNGRkMTQ5OGJlN2I3MjA0Li44Y2JhNDIyZWQ1ZTM4YmY4
NGM3NjA1OTRkNmNmMGY2NTg4Y2JlYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAg
LTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJTdGFy
dChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIpCiAgICAgfQogCiAgICAgaWYgKCFt
YW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIpIHsKLSAgICAgICAgbWFuYWdlci0+cHJpdi0+
Z2VvY2x1ZVByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92
aWRlcj4oKTsKKyAgICAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyID0gbWFrZVVu
aXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICAgICAgbWFuYWdlci0+cHJp
di0+Z2VvY2x1ZVByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3kobWFuYWdlci0+cHJpdi0+
aGlnaEFjY3VyYWN5RW5hYmxlZCk7CiAgICAgfQogICAgIG1hbmFnZXItPnByaXYtPmdlb2NsdWVQ
cm92aWRlci0+c3RhcnQoW21hbmFnZXJdKEdlb2xvY2F0aW9uUG9zaXRpb24mJiBjb3JlUG9zaXRp
b24sIE9wdGlvbmFsPENTdHJpbmc+IGVycm9yKSB7CkBAIC0zMTIsNyArMzEyLDcgQEAgV2ViS2l0
R2VvbG9jYXRpb25NYW5hZ2VyKiB3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUoV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHIKIHsKICAgICBhdXRvKiBtYW5hZ2VyID0gV0VCS0lUX0dFT0xPQ0FU
SU9OX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFHRVIs
IG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5wcml2LT5tYW5hZ2VyID0gcHJveHk7Ci0gICAgcHJv
eHktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlcj4obWFu
YWdlcikpOworICAgIHByb3h5LT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPEdlb2xvY2F0aW9uUHJv
dmlkZXI+KG1hbmFnZXIpKTsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdD
bGllbnQuY3BwCmluZGV4IGI4ZjAxZmIyNGZmMjc2NTRjMGFkNjA5YWRkMzI0MTk1ZWU0MWNhNTku
LjY1ZmQ3YzY5OTIzODgwMTE1NThjNjdkZWIyNWZkYWEyN2Y2NmM1MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGlu
Z0NsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IElj
b25Mb2FkaW5nQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpCkBAIC02MSw1ICs2Miw1IEBAIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDog
cHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgewogCiB2b2lkIGF0dGFjaEljb25Mb2FkaW5n
Q2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmll
d0dldFBhZ2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJ
Y29uTG9hZGluZ0NsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdl
YlZpZXcpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+
KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAppbmRleCBhOTNmZjI1
YjM5YTI5MjU2MDBkMmM0YWVjY2VjYmM3NTcwZDVkZjNkLi45MjYyYTg0ZGVjZTI1YmYwYmRmNWM1
OWI0OGQwMDI1ODUyZjM2YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC0x
NzksNSArMTc5LDUgQEAgY2xhc3MgV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBw
dWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoSW5qZWN0ZWRC
dW5kbGVDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAg
ICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudD4o
d2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250
ZXh0KS5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPFdlYktpdEluamVjdGVkQnVu
ZGxlQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAK
aW5kZXggMjM2ZTgxYzEzOTBiM2VjM2MxNTQ5MTg2ODZiYWZhNWU1Mzg2NDY4Ny4uNTUxNjM2NDQ3
NzU1NzQ3YjcwYWM1ZTc2YjFkMTA0ZDYxYzBiNWNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3Zp
ZGVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6V2Vi
S2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclBybwogICAgICwg
bV9ub3RpZmljYXRpb25NYW5hZ2VyKG5vdGlmaWNhdGlvbk1hbmFnZXIpCiB7CiAgICAgQVNTRVJU
KG1fbm90aWZpY2F0aW9uTWFuYWdlcik7Ci0gICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQ
cm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvblByb3ZpZGVyPigqdGhpcykpOwor
ICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxOb3RpZmlj
YXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKIH0KIAogV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6
On5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApp
bmRleCA5ZTU4YmNiMGIxYWIzM2ZhYWQ5N2ZjZjg1OTgxMjdlNjEwYTEyMzM2Li4zNmI3ODM0Mzg4
MGQ5NjAzMGU3MmZmYWExNTM3NDhlZTViMWUzYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9uOwogY2xhc3MgV2ViUGFn
ZVByb3h5OwogCiBjbGFzcyBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiwgV2ViS2l0V2ViQ29udGV4dCopOwogICAg
IH5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4IDViY2VmNjhmNjVkMjMx
ODk4MGNmOTFkYWU1OTNkNzY2NzE0OGE5ODkuLjg5NmUxM2RhZDk3YmU3ZmY3NzZjMDNiZjZlN2Qw
Mjc4MmUwMzIxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIyNSw2ICsyMjUsNiBAQCBjbGFzcyBVSUNsaWVudCA6
IHB1YmxpYyBBUEk6OlVJQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcp
LnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3
ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xp
ZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCmluZGV4IDQ4YjM4
ZWFjMDhkOTEyYzk2MzllZjU1MDk0YjEwZjFmZmFkMWQ5ZjkuLjI1NWU4ZTVhNjc5Mjc2NDgzM2Qz
N2RhZmY5ZjU3OTBmMDg1OTY2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMTgy
LDYgKzE4Miw3IEBAIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlbW92ZV9hbGxf
c2NyaXB0cyhXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIG1hCiB9CiAKIGNsYXNzIFNjcmlwdE1l
c3NhZ2VDbGllbnRHdGsgZmluYWwgOiBwdWJsaWMgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OkNs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyaXB0
TWVzc2FnZUNsaWVudEd0ayhXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIG1hbmFnZXIsIGNvbnN0
IGNoYXIqIGhhbmRsZXJOYW1lKQogICAgICAgICA6IG1faGFuZGxlck5hbWUoZ19xdWFya19mcm9t
X3N0cmluZyhoYW5kbGVyTmFtZSkpCkBAIC0yMzgsNyArMjM5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0
X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIoV2Vi
S2l0VXNlckMKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBGQUxTRSk7CiAKICAgICBS
ZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVu
dEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBu
YW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3Jt
YWxXb3JsZCgpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9s
bGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiB9CiAKQEAg
LTI4OCw3ICsyODksNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9pbl93b3JsZChXZQogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHdvcmxkTmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyPiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0
ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUp
LCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFt
ZSkpOworICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8
U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgo
bmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CiAgICAgcmV0dXJuIG1h
bmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IGFkODNkYjgyM2QzN2Qy
MGY1MTNiMDEyM2NlMjc0YTJiYmY0NzE3ODIuLjhjNjg5ODI5NTM5ZjQyMjM4YjMwN2Y1NTU2MDhh
NWM1MDAyZGNmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0xOTgsNiArMTk4LDcgQEAgc3RhdGljIGd1aW50
IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiBjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFsIDogSW5zcGVjdG9yOjpS
ZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgV2ViS2l0QXV0b21hdGlvbkNsaWVudChXZWJLaXRXZWJDb250
ZXh0KiBjb250ZXh0KQogICAgICAgICA6IG1fd2ViQ29udGV4dChjb250ZXh0KQpAQCAtMzY3LDkg
KzM2OCw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF0dGFjaEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKIAogICAgIHBy
aXYtPmdlb2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRHZW9sb2NhdGlvbk1hbmFn
ZXJDcmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk+KCkpKTsKLSAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYtPnByb2Nlc3NQb29sLT5z
dXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7Cisg
ICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdlYktpdE5vdGlmaWNh
dGlvblByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk+KCksIHdlYkNvbnRleHQpOwogI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+
KHdlYkNvbnRleHQpOworICAgIHByaXYtPnJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciA9
IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsK
ICNlbmRpZgogfQogCkBAIC02NzgsNyArNjc5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBnYm9vbGUK
ICAgICAgICAgICAgIGdfd2FybmluZygiTm90IGVuYWJsaW5nIGF1dG9tYXRpb24gb24gV2ViS2l0
V2ViQ29udGV4dCBiZWNhdXNlIHRoZXJlJ3MgYW5vdGhlciBjb250ZXh0IHdpdGggYXV0b21hdGlv
biBlbmFibGVkLCBvbmx5IG9uZSBpcyBhbGxvd2VkIik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0QXV0b21hdGlvbkNsaWVudD4oY29udGV4dCk7CisgICAgICAgIGNv
bnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdEF1dG9tYXRp
b25DbGllbnQ+KGNvbnRleHQpOwogICAgIH0gZWxzZQogICAgICAgICBjb250ZXh0LT5wcml2LT5h
dXRvbWF0aW9uQ2xpZW50ID0gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBiMjM5YWM0ZTE5ZTYz
ZDMzYTg2OWRlZmI2NmZjM2MwYjQ1MDBiNzg1Li43NDMwYzNmY2ZkNTRjNDZlZmE2NGUxMmZkOTdk
ZTVhOTMyOThhNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjAxLDYgKzIwMSw3IEBAIGNsYXNzIFBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcjsKICNpZiBQTEFURk9STShXUEUpCiBzdGF0aWMgdW5zaWduZWQgZnJhbWVEaXNw
bGF5Q2FsbGJhY2tJRDsKIHN0cnVjdCBGcmFtZURpc3BsYXllZENhbGxiYWNrIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRnJhbWVEaXNwbGF5ZWRDYWxsYmFjayhX
ZWJLaXRGcmFtZURpc3BsYXllZENhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSA9
IG51bGxwdHIsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lOb3RpZnlGdW5jdGlvbiA9IG51bGxwdHIp
CiAgICAgICAgIDogaWQoKytmcmFtZURpc3BsYXlDYWxsYmFja0lEKQogICAgICAgICAsIGNhbGxi
YWNrKGNhbGxiYWNrKQpAQCAtMjI3LDYgKzIyOCw3IEBAIHN0cnVjdCBGcmFtZURpc3BsYXllZENh
bGxiYWNrIHsKICNlbmRpZiAvLyBQTEFURk9STShXUEUpCiAKIHN0cnVjdCBfV2ViS2l0V2ViVmll
d1ByaXZhdGUgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICB+X1dl
YktpdFdlYlZpZXdQcml2YXRlKCkKICAgICB7CiAgICAgICAgIC8vIEZvciBtb2RhbCBkaWFsb2dz
LCBtYWtlIHN1cmUgdGhlIG1haW4gbG9vcCBpcyBzdG9wcGVkIHdoZW4gZmluYWxpemluZyB0aGUg
d2ViVmlldy4KQEAgLTMyNiw2ICszMjgsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdB
dWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KIAogY2xhc3MgUGFnZUxvYWRT
dGF0ZU9ic2VydmVyIGZpbmFsIDogcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQYWdlTG9hZFN0YXRlT2Jz
ZXJ2ZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBtX3dlYlZpZXcod2ViVmll
dykKQEAgLTM5OSw2ICs0MDIsNyBAQCBjbGFzcyBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgZmluYWwg
OiBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewogCiAjaWYgUExBVEZPUk0oV1BFKQog
Y2xhc3MgV2ViVmlld0NsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OlZpZXdDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlZpZXdD
bGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBtX3dlYlZpZXcod2ViVmll
dykKQEAgLTcyNSw3ICs3MjksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgd2Via2l0V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JX
ZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHByaXYtPnVzZXJDb250ZW50TWFu
YWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOwogCi0gICAgcHJpdi0+bG9hZE9ic2VydmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOworICAg
IHByaXYtPmxvYWRPYnNlcnZlciA9IG1ha2VVbmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3
ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdlYlZpZXcpLnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZl
cigqcHJpdi0+bG9hZE9ic2VydmVyKTsKIAogICAgIC8vIFRoZSByZWxhdGVkIHZpZXcgaXMgb25s
eSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlvbi4KQEAgLTc0MSw3ICs3NDUsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogI2VuZGlm
CiAKICNpZiBQTEFURk9STShXUEUpCi0gICAgcHJpdi0+dmlldy0+c2V0Q2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmlldykpOworICAgIHByaXYtPnZpZXctPnNldENs
aWVudChtYWtlVW5pcXVlPFdlYlZpZXdDbGllbnQ+KHdlYlZpZXcpKTsKICNlbmRpZgogCiAgICAg
Ly8gVGhpcyBuZWVkcyB0byBiZSBhZnRlciBhdHRhY2hVSUNsaWVudFRvVmlldygpIGJlY2F1c2Ug
V2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudCgpIGNhbGxzIHNldENhblJ1bk1vZGFsKCkgd2l0aCB0
cnVlLgpAQCAtMzcwMSw2ICszNzA1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9z
aG93X21pbWVfdHlwZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKgogfQogCiBz
dHJ1Y3QgVmlld1NhdmVBc3luY0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJEYXRhOwogICAgIEdSZWZQdHI8R0ZpbGU+
IGZpbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcAppbmRleCBmMDlkNmM3ZTkyMDY4M2E3NTY2NTI3Njk2N2U3NDdjYzZjZWVi
NDgxLi4wNmIzYjgzNjA2NWQ5ZjY2YTA3OThhMjA5NTUxM2NhODY4YjMxYzU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAt
NjUsNyArNjUsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoR3RrV2lkZ2V0KiB2
aWV3V2lkZ2V0KQogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBmdW5jdGlvbnMKIHN0ZDo6
dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2lu
Z0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCp3ZWJraXRX
ZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSksIHBy
b2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRl
ZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNF
KG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0
Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNw
cAppbmRleCAzMWUwOTczZmUxMDAzYzZlYTY1MjMwNjFhNjdjOTQ5ZDUzZWJkNmI3Li4yZDFjMmNi
MzY4YTk5MzMxNjk3NDI0NmEwZWQ1OTljMjhkY2FlNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwCkBAIC01MTks
NyArNTE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RW1vamlDaG9vc2VyU2V0dXBFbW9qaVNlY3Rp
b25zKFdlYktpdEVtb2ppQ2hvb3NlciogY2hvb3NlciwgR3QKICAgICAgICAgY2hvb3Nlci0+cHJp
di0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbnVsbHB0cjsKICAgICB9OwogCi0gICAgY2hvb3Nl
ci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFj
a1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsKKyAgICBjaG9vc2VyLT5wcml2LT5w
b3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBtYWtlVW5pcXVlPENhbGxiYWNrVGltZXI+KFdURk1vdmUo
cG9wdWxhdGVTZWN0aW9ucykpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNU
aW1lci0+c2V0UHJpb3JpdHkoR19QUklPUklUWV9ERUZBVUxUX0lETEUpOwogICAgIGNob29zZXIt
PnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0TmFtZSgiW1dlYktpdEVtb2ppQ2hvb3Nl
cl0gcG9wdWxhdGUgc2VjdGlvbnMgdGltZXIiKTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0
ZVNlY3Rpb25zVGltZXItPnN0YXJ0UmVwZWF0aW5nKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMGY2NzQ4NjQ1MmNkMWZhODdhODI4NjJl
N2U2MDU3MzRkZmMzNTk2OC4uNWJhNjEwZTdkOWE0NGQwNDczODM4MWUyM2QwNDBiZGE5MmMzZmM5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAt
MzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBjbGFzcyBTY3JpcHRNZXNzYWdlQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFNjcmlwdE1lc3NhZ2VDbGllbnQoUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyJiBpbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIpCiAgICAgICAgIDogbV9pbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIoaW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKQpAQCAtMTA1LDEzICsxMDYsMTMg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWUKICAgICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAg
IGF1dG8gdXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFk
ZCh1c2VyQ29udGVudE1hbmFnZXIpOwogICAgIGlmICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQu
aXNOZXdFbnRyeSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMp
LCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAg
ICAgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtl
VW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNl
ckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50
TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikt
PmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19v
YmplY3Rfd2Vha19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRf
Y2FzdDxHV2Vha05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAg
ICAgfQogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1
ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9z
dCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJM
Lmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgR1N0cmluZyogaHRtbCA9IGdf
c3RyaW5nX25ldygKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViSW5zcGVjdG9yLmNwcAppbmRleCAwZjAxNzExZTc5NjFlOGIwMGM1ZTU3NGQyODg1
MGQwNWIyNDFmNmVjLi44MGQyMGFhNzYwM2JhZGFiOTAwZmU0YmQxNTkwYWFkMzliMzBlMmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3Bl
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJ
bnNwZWN0b3IuY3BwCkBAIC0yODQsNiArMjg0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9p
bnNwZWN0b3JfY2xhc3NfaW5pdChXZWJLaXRXZWJJbnNwZWN0b3JDbGFzcyogZmluZENsYXNzKQog
fQogCiBjbGFzcyBXZWJLaXRJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViSW5zcGVj
dG9yUHJveHlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFdlYktpdEluc3BlY3RvckNsaWVudChXZWJLaXRXZWJJbnNwZWN0b3IqIGlu
c3BlY3RvcikKICAgICAgICAgOiBtX2luc3BlY3RvcihpbnNwZWN0b3IpCkBAIC0zNjAsNyArMzYx
LDcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRXZWJJbnNwZWN0b3JDcmVhdGUoV2ViSW5z
cGVjdG9yUHJveHkqIHdlYkluc3BlY3RvcikKIHsKICAgICBXZWJLaXRXZWJJbnNwZWN0b3IqIGlu
c3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfSU5TUEVDVE9SLCBOVUxMKSk7CiAgICAgaW5zcGVjdG9yLT5wcml2LT53ZWJJbnNwZWN0b3Ig
PSB3ZWJJbnNwZWN0b3I7Ci0gICAgd2ViSW5zcGVjdG9yLT5zZXRDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOworICAgIHdlYkluc3BlY3Rv
ci0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50PihpbnNwZWN0b3Ip
KTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDFiOWRkOGQxZjQ2
MDIxNGY1YTc3MjY3MmMyZmI2NTM3MGI1MjBjNWUuLjg4YjNjZjQzYmZlNjhlZTk3YzczMWI3NjRk
NDQ5OTBhN2JmYzVhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC01NjYsNyArNTY2LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgZ3Rr
X2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmlld1dpZGdldCwgUGFzdGVib2FyZEhlbHBlcjo6
c2luZ2xldG9uKCkudGFyZ2V0TGlzdCgpKTsKIAogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKG9iamVjdCktPnByaXY7Ci0gICAgcHJpdi0+
cGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXdXaWRnZXQp
OworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3
V2lkZ2V0KTsKICAgICBwcml2LT5kaWFsb2cgPSBudWxscHRyOwogfQogCkBAIC0xMjIwLDcgKzEy
MjAsNyBAQCBHZXN0dXJlQ29udHJvbGxlciYgd2Via2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJv
bGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldwogewogICAgIFdlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+Z2VzdHVy
ZUNvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSksIHN0ZDo6
bWFrZV91bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmlld0Jhc2UpKTsKKyAgICAg
ICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEdlc3R1cmVDb250cm9sbGVy
PihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgbWFrZVVuaXF1ZTxUb3VjaEdlc3R1cmVDb250cm9s
bGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVybiAqcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXI7
CiB9CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIERyYWdBbmREcm9wSGFuZGxlciYgd2Via2l0V2Vi
Vmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpCiB7CiAg
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAg
ICAgaWYgKCFwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIpCi0gICAgICAgIHByaXYtPmRyYWdBbmRE
cm9wSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0FuZERyb3BIYW5kbGVyPigqcHJpdi0+
cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyID0gbWFrZVVuaXF1
ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAgIHJldHVybiAqcHJp
di0+ZHJhZ0FuZERyb3BIYW5kbGVyOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQp
CkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hX
ZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZQogICAgIGlmIChw
cml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIpCiAgICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29u
dHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwogICAgIGVsc2UgewotICAgICAgICBwcml2LT52
aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+dmlld0dlc3R1
cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4o
KnByaXYtPnBhZ2VQcm94eSk7CiAgICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlci0+
c2V0U3dpcGVHZXN0dXJlRW5hYmxlZChwcml2LT5pc0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1
cmVFbmFibGVkKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCmluZGV4IDJjYWIyZTA1Mzg2ZDQyYjM3MWY0NDA2YWI3MWE3ZjY1OTMwZjdkNzcuLjE0
NjAzZDVhZmViYWY2ZGVlMDExOTc5NTc3MDM4ODM0OWQ0ZTdiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04OTUsNiArODk1LDcgQEAgLSAodm9pZClt
YXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJ
OjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdDbGllbnQoV0tWaWV3ICp3
a1ZpZXcpCiAgICAgICAgICAgICA6IG1fd2tWaWV3KHdrVmlldykKQEAgLTkzMiw3ICs5MzMsNyBA
QCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW3NlbGYgcmVzcG9uZHNUb1NlbGVjdG9y
Okljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNlbGVjdG9yKCldKQotICAgICAgICBfZGF0YS0+
X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEljb25M
b2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9kYXRhLT5faW1wbC0+cGFnZSgpLnNldElj
b25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHNlbGYpKTsKIH0K
IAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9v
bDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbgpAQCAtOTQ0LDcgKzk0NSw3
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bv
b2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0
MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxsb2NdIGluaXRdOwotICAgIF9kYXRh
LT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgbnVs
bHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgIF9kYXRhLT5f
aW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJv
Y2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCiAgICAgW3NlbGYgbWF5YmVJbnN0
YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvQVBJVmlld0NsaWVudC5oCmluZGV4IDIxOTkxZjhkYWYzMWI0MWIxNTY1ZmZmOTg2NWRl
OTkzOGZiOGEwZGYuLjY0Y2EyZmNiNWE4NTEyN2Y1YjQxNDcxZWNlNmVhOGY0NDZjZTA1MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oCkBA
IC0zOCw2ICszOCw3IEBAIGNsYXNzIFZpZXc7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgVmll
d0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+Vmlld0NsaWVudCgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA4NTEyOWE1NDg3YzlmZmJl
ZDU2NjQ2Y2MxMGRkMTg4M2M5ODc1NmQzLi5lMjA4YTVjNTVkNzU4ODU3M2RmZjQzNjAzMzc3ZWY4
ZDE2MzU4NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Bh
Z2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Bh
Z2VDbGllbnRJbXBsLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdLV1BFOjpWaWV3JiB2aWV3KQogICAgIDog
bV92aWV3KHZpZXcpCi0gICAgLCBtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX3Njcm9sbEdlc3R1cmVD
b250cm9sbGVyKG1ha2VVbmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI+KCkpCiB7CiB9CiAK
QEAgLTYzLDcgKzYzLDcgQEAgSVBDOjpBdHRhY2htZW50IFBhZ2VDbGllbnRJbXBsOjpob3N0Rmls
ZURlc2NyaXB0b3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNs
aWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzPihtX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4obV92aWV3LnBhZ2UoKSwg
cHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXko
Y29uc3QgV2ViQ29yZTo6UmVnaW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaAppbmRleCA5YzlmNmU5ZTNi
MThiNDJmNTNmNzJmOGViNTVhNGU2NzU1ZGI0N2EyLi4zZjYzMjUxMjFkODI4ZTM1OGFkMTViNzZj
NGQ1Y2RjNDgzNzVkYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0zMCw2ICszMCw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcm9sbEdlc3R1cmVDb250
cm9sbGVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dQRVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
UEVWaWV3LmNwcAppbmRleCBiZTUwZjEyNzRlOGMxZmE0OTEwOWFhMjg1NWI4YmI0MTU3MTcwNDRm
Li4xMmUzMmZhZDQwMDI4Yzc3ZTU3MDMwOTI4NDk4NDQwZDAzMGNlMDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKQEAgLTQyLDggKzQyLDggQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFjZSBXS1dQRSB7CiAKIFZpZXc6OlZpZXcoc3Ry
dWN0IHdwZV92aWV3X2JhY2tlbmQqIGJhY2tlbmQsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b24mIGJhc2VDb25maWd1cmF0aW9uKQotICAgIDogbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OlZpZXdDbGllbnQ+KCkpCi0gICAgLCBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlQ2xpZW50SW1wbD4oKnRoaXMpKQorICAgIDogbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OlZp
ZXdDbGllbnQ+KCkpCisgICAgLCBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1w
bD4oKnRoaXMpKQogICAgICwgbV9zaXplIHsgODAwLCA2MDAgfQogICAgICwgbV92aWV3U3RhdGVG
bGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlLCBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyB9CiAgICAgLCBtX2JhY2tlbmQo
YmFja2VuZCkKQEAgLTE4NCw3ICsxODQsNyBAQCBWaWV3Ojp+VmlldygpCiB2b2lkIFZpZXc6OnNl
dENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpWaWV3Q2xpZW50PiYmIGNsaWVudCkKIHsKICAg
ICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9jbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
Vmlld0NsaWVudD4oKTsKKyAgICAgICAgbV9jbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Vmlld0Ns
aWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3Bw
CmluZGV4IGUxZGM4NTdmZjk5NWVkMGNlNmE4NTM2NTljYzViMTM1NjFjYjM2NmMuLmI0ZjI3YjZk
MzRlMjQyYmE1NTM1YWI1YjJlNGVjZTUzMTVkMDlkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2
b2lkIFdQRVF0Vmlldzo6bm90aWZ5TG9hZENoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0TG9hZEV2ZW50IGV2ZW50LAogCiAgICAgaWYgKHN0YXR1c1NldCkgewogICAgICAgICBX
UEVRdFZpZXdMb2FkUmVxdWVzdFByaXZhdGUgbG9hZFJlcXVlc3RQcml2YXRlKHZpZXctPnVybCgp
LCBsb2FkU3RhdHVzLCAiIik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2Fk
UmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1
ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRW
aWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxXUEVRdFZpZXdMb2FkUmVx
dWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKICAgICAgICAgUV9FTUlUIHZpZXctPmxvYWRpbmdD
aGFuZ2VkKGxvYWRSZXF1ZXN0LmdldCgpKTsKICAgICB9CiB9CkBAIC0xNjYsNyArMTY2LDcgQEAg
dm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0TG9hZEV2ZW50LCBjb25zdAogICAgICAgICBsb2FkU3RhdHVzID0gV1BFUXRWaWV3OjpM
b2FkU3RhdHVzOjpMb2FkRmFpbGVkU3RhdHVzOwogCiAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQ
cml2YXRlIGxvYWRSZXF1ZXN0UHJpdmF0ZShRVXJsKFFTdHJpbmcoZmFpbGluZ1VSSSkpLCBsb2Fk
U3RhdHVzLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xv
YWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3TG9hZFJl
cXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmll
d0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVl
c3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgUV9FTUlUIHZpZXctPmxvYWRpbmdDaGFuZ2Vk
KGxvYWRSZXF1ZXN0LmdldCgpKTsKIH0KIApAQCAtNDM5LDcgKzQzOSw3IEBAIHN0YXRpYyB2b2lk
IGpzQXN5bmNSZWFkeUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIGdwb2ludGVyCiAqLwogdm9pZCBXUEVRdFZpZXc6OnJ1bkphdmFTY3JpcHQoY29uc3QgUVN0
cmluZyYgc2NyaXB0LCBjb25zdCBRSlNWYWx1ZSYgY2FsbGJhY2spCiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+IGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEph
dmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNrLCBRUG9pbnRlcjxXUEVRdFZpZXc+KHRoaXMp
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4gZGF0YSA9IG1h
a2VVbmlxdWU8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4oY2FsbGJhY2ssIFFQb2ludGVyPFdQRVF0
Vmlldz4odGhpcykpOwogICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChtX3dlYlZp
ZXcuZ2V0KCksIHNjcmlwdC50b1V0ZjgoKS5jb25zdERhdGEoKSwgbnVsbHB0ciwganNBc3luY1Jl
YWR5Q2FsbGJhY2ssIGRhdGEucmVsZWFzZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKaW5kZXggYTg1
MjZjZWQwMjBmNjM0NGU3MmZiY2MzYWE0NDljMmRkM2FiZDFmOS4uMTNmZDM3YWVmZjJiNjUzNWQ1
NGYzMTRjNDE2ZTFjYjg2OGUzZTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdCYWNrZW5kPiBXUEVRdFZpZXdCYWNrZW5kOjpjcmVh
dGUoY29uc3QgUVNpemVGJiBzaXplLCBRCiAgICAgaWYgKCFlZ2xDb250ZXh0KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmlld0Jh
Y2tlbmQ+KHNpemUsIGVnbERpc3BsYXksIGVnbENvbnRleHQsIGNvbnRleHQsIHZpZXcpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFdQRVF0Vmlld0JhY2tlbmQ+KHNpemUsIGVnbERpc3BsYXksIGVn
bENvbnRleHQsIGNvbnRleHQsIHZpZXcpOwogfQogCiBXUEVRdFZpZXdCYWNrZW5kOjpXUEVRdFZp
ZXdCYWNrZW5kKGNvbnN0IFFTaXplRiYgc2l6ZSwgRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250
ZXh0IGVnbENvbnRleHQsIFFQb2ludGVyPFFPcGVuR0xDb250ZXh0PiBjb250ZXh0LCBRUG9pbnRl
cjxXUEVRdFZpZXc+IHZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIuaAppbmRleCA0MjA4ZThmMjJlMGFhNGVkZDg1YjUyMjU5MDRjMmRj
NDk5YjA1ZTk2Li45NDkzN2IwMDE5NDYyNTM2MmY2NDRjYTc3MDUwOGQwZGFhNjc0MzFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgK
QEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBVSVZpZXc7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBBcHBsaWNhdGlvblN0YXRlVHJhY2tlcihVSVZpZXcgKiwgU0VMIGRpZEVu
dGVyQmFja2dyb3VuZFNlbGVjdG9yLCBTRUwgZGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRl
cmluZ0JhY2tncm91bmRTZWxlY3RvciwgU0VMIHdpbGxFbnRlckZvcmVncm91bmRTZWxlY3Rvcik7
CiAgICAgfkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmlu
ZGV4IGUzMzU0M2I3YmRhMWQ1OTNmMzA0NTNhZTRkNjliZjI1ZGU3NDBjYmUuLmFiOWQ0ODQzZmY3
NTAzODkyMTczNGFjZTM0NDFmMWQxNTc1ODA2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC03MywxMSArNzMsMTEgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgZGVmYXVsdFBhZ2VMb2FkVGlt
ZW91dCA9IDMwMF9zOwogc3RhdGljIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlBhZ2VMb2FkU3RyYXRlZ3kgZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWw7CiAKIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbigpCi0gICAgOiBtX2NsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KCkpCisgICAgOiBt
X2NsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KCkpCiAgICAg
LCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVy
LmNvcHlSZWYoKSkpCiAgICAgLCBtX2RvbWFpbkRpc3BhdGNoZXIoQXV0b21hdGlvbkJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUobV9iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCi0gICAgLCBtX2Rv
bWFpbk5vdGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hl
cj4obV9mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2RvbWFpbk5vdGlmaWVyKG1ha2VVbmlxdWU8
QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcj4obV9mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2xvYWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
bG9hZFRpbWVyRmlyZWQpCiB7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9BQ1RJT05TX0FQSSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXgg
NmIwOWJhZGI4ZDBjZWJhYmYyYzY5ZjYwMDliMWJkMWQyM2MwOWU1OC4uNTNiMzc3MDdlODdjNTFk
YzRhZTlkNjM5YjFkNGYzMjYzODA2OGIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIEF1eGls
aWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgT3B0aW9uU2V0PAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVz
c2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8SVBD
OjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJO
YW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1l
c3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5j
b2RlciksIHNlbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IDEwYThlNDI0MTNiMjlhZmZi
NjM3N2Q4NGEwOWJlNTExYmQyNTFkNWMuLmRlNDBmYzhmMzE3Njk3NWIxNTJjNGVmYWE0MDE1N2M5
NGYyZmE5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9t
YXRpb25TZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IGZpbmFsIDogcHVibGljIEFQ
STo6QXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50KGlkIDxfV0tB
dXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaAppbmRleCBiMDExZGQzYTcyMzk3MzIw
NWNjNmRmNGNjNjZhNjc5MDZjMDI5YjBkLi4wNzQzNzkwNGYxZTQyMzBiMzE1ODJhOWRmNDJjMjNj
MTRkNjA1YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29u
TG9hZGluZ0RlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgSWNvbkxvYWRpbmdEZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdEZWxlZ2F0ZShXS1dlYlZpZXcg
Kik7CiAgICAgfkljb25Mb2FkaW5nRGVsZWdhdGUoKTsKQEAgLTQ4LDYgKzQ5LDcgQEAgY2xhc3Mg
SWNvbkxvYWRpbmdEZWxlZ2F0ZSB7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgSWNvbkxvYWRpbmdD
bGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSWNvbkxvYWRp
bmdDbGllbnQoSWNvbkxvYWRpbmdEZWxlZ2F0ZSYpOwogICAgICAgICB+SWNvbkxvYWRpbmdDbGll
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2Fk
aW5nRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGlu
Z0RlbGVnYXRlLm1tCmluZGV4IGEzNDRkZmY5Y2UwZDUzNWNhMzBkYjJiZWI1YmNiZDdjMGQ3NGNm
YjQuLjE2M2ZiOTUyZWUwZWE5YjcxYTNkNDlkM2RkOTdjZTAwNDNjYzY4ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQpA
QCAtNDQsNyArNDQsNyBAQCBJY29uTG9hZGluZ0RlbGVnYXRlOjp+SWNvbkxvYWRpbmdEZWxlZ2F0
ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiBJY29uTG9hZGlu
Z0RlbGVnYXRlOjpjcmVhdGVJY29uTG9hZGluZ0NsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oKnRoaXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPF9XS0lj
b25Mb2FkaW5nRGVsZWdhdGU+ID4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6ZGVsZWdhdGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggYTUxYTIyMzYy
Mzg0MTUxYWIxMWQ0ODk0MzY5ZjhhMTg1ODAwNjdkYS4uZjUxMzdmOWNjNzMxNjM4OGU2MWRlMTA3
NzNmZjM0Mjg1NjI1MDU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLm1tCkBAIC03OCwxMyArNzgsMTMgQEAgVUlEZWxlZ2F0ZTo6flVJRGVsZWdhdGUoKQog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1l
bnVDbGllbnQ+IFVJRGVsZWdhdGU6OmNyZWF0ZUNvbnRleHRNZW51Q2xpZW50KCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50PigqdGhpcyk7CiB9CiAjZW5kaWYKIAog
c3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+IFVJRGVsZWdhdGU6OmNyZWF0ZVVJQ2xpZW50
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFVJQ2xpZW50PigqdGhpcyk7CiB9CiAKIFJldGFpblB0cjxpZCA8
V0tVSURlbGVnYXRlPiA+IFVJRGVsZWdhdGU6OmRlbGVnYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggNDhjMmIyYjRlMDYxMDY5MjcyYWViOGI5NGEyMzRlYWE5MjZhZjc2ZC4u
OTFjZjk0ODBjNzUxOGNkOWJiMTdlOWZjYTRlOTE2ZDBiMDczYjA4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTo6U291cmNlUHJveHkgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIsIHB1
YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTb3VyY2VQcm94eSh1aW50NjRfdCBpZCwgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBz
b3VyY2UpCiAgICAgICAgIDogbV9pZChpZCkKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmlj
ZVdpdGhDb25zdHJhaQogICAgICAgICBzb3VyY2UtPnNldElzUmVtb3RlKHRydWUpOwogICAgICAg
ICBzZXR0aW5ncyA9IHNvdXJjZS0+c2V0dGluZ3MoKTsKICAgICAgICAgQVNTRVJUKCFtX3Byb3hp
ZXMuY29udGFpbnMoaWQpKTsKLSAgICAgICAgbV9wcm94aWVzLmFkZChpZCwgc3RkOjptYWtlX3Vu
aXF1ZTxTb3VyY2VQcm94eT4oaWQsICptX3Byb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHNv
dXJjZSkpKTsKKyAgICAgICAgbV9wcm94aWVzLmFkZChpZCwgbWFrZVVuaXF1ZTxTb3VyY2VQcm94
eT4oaWQsICptX3Byb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHNvdXJjZSkpKTsKICAgICB9
IGVsc2UKICAgICAgICAgaW52YWxpZENvbnN0cmFpbnRzID0gV1RGTW92ZShzb3VyY2VPckVycm9y
LmVycm9yTWVzc2FnZSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2VlZGVkLCBpbnZhbGlk
Q29uc3RyYWludHMsIFdURk1vdmUoc2V0dGluZ3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApp
bmRleCA5Y2E2ZmEzNTM0OTYwMTgwM2RmNWQzZDFiMmFiYTMxNjU1NzQwYzM5Li45YmRkYjk5MDlk
ZjdlOGZlZjFlNTQ4MDZjYmU2YmM1YzQwY2ZjNTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5o
CkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFNoYXJlZE1lbW9yeTsKIGNsYXNzIFdlYlByb2Nlc3NQ
cm94eTsKIAogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSA6IHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1By
b3h5Jik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4
IDMwNzBkNTc0NDNmZGY3MTk2MDg2MDMwZTNlNjMxNDFlMDY3ODU4MjYuLmU1ZTMyZDJmYTJhMDg2
MDQxN2M2Y2Y4MGQ3YmNlNTliOWE3MzlhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMTM1LDcgKzEzNSw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgaWYgKCFbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0U3Vw
cHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIiXSkKICAgICAgICAgaW5zdGFsbE1lbW9yeVByZXNz
dXJlSGFuZGxlcigpOwogCi0gICAgc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsK
KyAgICBzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzdGFydERp
c3BsYXlMaW5rKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdW5zaWduZWQgb2JzZQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGF1dG8gZGlzcGxheUxpbmsg
PSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaW5rPihkaXNwbGF5SUQpOworICAgIGF1dG8gZGlz
cGxheUxpbmsgPSBtYWtlVW5pcXVlPERpc3BsYXlMaW5rPihkaXNwbGF5SUQpOwogICAgIGRpc3Bs
YXlMaW5rLT5hZGRPYnNlcnZlcihjb25uZWN0aW9uLCBvYnNlcnZlcklEKTsKICAgICBtX2Rpc3Bs
YXlMaW5rcy5hcHBlbmQoV1RGTW92ZShkaXNwbGF5TGluaykpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA1
YzIxY2E3NWExODI5YzUwZjFkODJmNTc3NzhiNGU4NmU2OWQ3MGVhLi5iMWVjODQ2YjdiNDYwNTQ4
Y2UwZjg2ZDdhNWQxMTdhNjc2NzhjNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjA1LDcgKzIwNSw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpCiAgICAgYXV0byBiYWNrZ3JvdW5kQWN0aXZpdHlUaW1l
b3V0SGFuZGxlciA9IFthY3Rpdml0eVRva2VuID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gewogICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
V2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQoKSAtIGxhbWJkYSwgYmFja2dyb3VuZCBhY3Rpdml0
eSB0aW1lZCBvdXQiLCB3ZWFrVGhpcy5nZXQoKSk7CiAgICAgfTsKLSAgICBtX3VuZXhwZWN0ZWRB
Y3Rpdml0eVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hv
dFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRBY3Rpdml0eVRpbWVvdXRIYW5kbGVyKSwgdW5leHBl
Y3RlZEFjdGl2aXR5RHVyYXRpb24pOworICAgIG1fdW5leHBlY3RlZEFjdGl2aXR5VGltZXIgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXI+KFdURk1vdmUoYmFja2dy
b3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1bmV4cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7
CiAgICAgY29tcGxldGlvbigpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGNhYjA1NTA5ZmI2ZDAyYmI0M2U4OGQ4ZDY1NDg5
ZmZiNzIyZmU4MDIuLjhkZjRkYTdiMzIwODA5NDZkZjcxYzkyODIxNjUzZjZlYTk0MDc1N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xMzE1
LDcgKzEzMTUsNyBAQCBzdGF0aWMgTlNUcmFja2luZ0FyZWFPcHRpb25zIHRyYWNraW5nQXJlYU9w
dGlvbnMoKQogCiBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoTlNWaWV3IDxXZWJWaWV3SW1wbERl
bGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldlYlZpZXcsIFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikK
ICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCisgICAgLCBtX3BhZ2VDbGllbnQo
bWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlldywgb3V0ZXJXZWJWaWV3KSkKICAgICAsIG1f
cGFnZShwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCptX3BhZ2VDbGllbnQsIFdURk1vdmUoY29u
ZmlndXJhdGlvbikpKQogICAgICwgbV9uZWVkc1ZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMo
bV9wYWdlLT5wcmVmZXJlbmNlcygpLnBsdWdpbnNFbmFibGVkKCkpCiAgICAgLCBtX2ludHJpbnNp
Y0NvbnRlbnRTaXplKENHU2l6ZU1ha2UoTlNWaWV3Tm9JbnRyaW5zaWNNZXRyaWMsIE5TVmlld05v
SW50cmluc2ljTWV0cmljKSkKQEAgLTEzNTMsNyArMTM1Myw3IEBAIFdlYlZpZXdJbXBsOjpXZWJW
aWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBsRGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91
dGVyV2ViCiAgICAgdmlldy5sYXllckNvbnRlbnRzUGxhY2VtZW50ID0gTlNWaWV3TGF5ZXJDb250
ZW50c1BsYWNlbWVudFRvcExlZnQ7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAg
bV9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGdWxs
c2NyZWVuQ2xpZW50Pih2aWV3KSk7CisgICAgbV9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KG1h
a2VVbmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pih2aWV3KSk7CiAjZW5kaWYKIAogICAg
IFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkud2tWaWV3Q291bnQrKzsKQEAgLTE3MTEsOSAr
MTcxMSw5IEBAIENHU2l6ZSBXZWJWaWV3SW1wbDo6Zml4ZWRMYXlvdXRTaXplKCkgY29uc3QKIHN0
ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+IFdlYlZpZXdJbXBsOjpjcmVh
dGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKICAgICBpZiAo
W1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpAIldl
YktpdDJVc2VSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSJdIGJvb2xWYWx1ZV0pCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+
KG1fcGFnZSwgcHJvY2Vzcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vzcyk7CiAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5PihtX3BhZ2Us
IHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vzcyk7CiB9CiAKIGJvb2wgV2ViVmlld0ltcGw6Omlz
VXNpbmdVSVNpZGVDb21wb3NpdGluZygpIGNvbnN0CkBAIC0zMzU2LDcgKzMzNTYsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRUZXh0SW5kaWNhdG9yKFdlYkNvcmU6OlRleHRJbmRpY2F0b3ImIHRleHRJbmRpY2F0b3IsIFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSBsaWZldGltZSkKIHsKICAgICBpZiAo
IW1fdGV4dEluZGljYXRvcldpbmRvdykKLSAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0
QXV0b3JlbGVhc2VkKCkpOworICAgICAgICBtX3RleHRJbmRpY2F0b3JXaW5kb3cgPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c+KG1fdmlldy5nZXRBdXRvcmVsZWFzZWQo
KSk7CiAKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMgPSBb
W21fdmlldyB3aW5kb3ddIGNvbnZlcnRSZWN0VG9TY3JlZW46W21fdmlldyBjb252ZXJ0UmVjdDp0
ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSB0b1Zp
ZXc6bmlsXV07CiAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93LT5zZXRUZXh0SW5kaWNhdG9yKHRl
eHRJbmRpY2F0b3IsIE5TUmVjdFRvQ0dSZWN0KHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3Jk
aW5hdGVzKSwgbGlmZXRpbWUpOwpAQCAtNDM1OCw3ICs0MzU4LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6c2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
IGl0ZW0pCiBWaWV3R2VzdHVyZUNvbnRyb2xsZXImIFdlYlZpZXdJbXBsOjplbnN1cmVHZXN0dXJl
Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2dlc3R1cmVDb250cm9sbGVyKQotICAgICAgICBt
X2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI+KG1fcGFnZSk7CisgICAgICAgIG1fZ2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFZp
ZXdHZXN0dXJlQ29udHJvbGxlcj4obV9wYWdlKTsKICAgICByZXR1cm4gKm1fZ2VzdHVyZUNvbnRy
b2xsZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggOGVhY2Q5MWExZTZhZTQ4NTY1YzllNThjY2Rh
MTBmM2VhNDQ0YzI3Ni4uNjI2NGRkYjdmNzkwYzJmY2NjZGY0MTBkZjZlMmM5MzM3YjY1ZDI4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBvcmF0ZVVwZGF0ZShjb25zdCBVcGRhdGVJbmZvJiB1
cAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fYmFja2luZ1N0b3JlKQotICAgICAgICBt
X2JhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZv
LnZpZXdTaXplLCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7
CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmU+KHVwZGF0
ZUluZm8udmlld1NpemUsIHVwZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IsIG1fd2ViUGFnZVBy
b3h5KTsKIAogICAgIG1fYmFja2luZ1N0b3JlLT5pbmNvcnBvcmF0ZVVwZGF0ZSh1cGRhdGVJbmZv
KTsKIApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RGOjpGdW5jCiAgICAgfQog
CiAgICAgaWYgKCFtX2RyYXdpbmdNb25pdG9yKQotICAgICAgICBtX2RyYXdpbmdNb25pdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJh
d2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsKKyAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9
IG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdN
b25pdG9yPihtX3dlYlBhZ2VQcm94eSk7CiAgICAgbV9kcmF3aW5nTW9uaXRvci0+c3RhcnQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAppbmRleCBhMmQwMzg2YWNmNWQ4YWQ1
MzVjNzkxMmE4ODZjYmQwZjAwNTQ3ODY4Li42YWEyNDdiZDg3NzAyMTU4ODI0NzE2YTY2NWVlMWI3
ODY5NmE2YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERl
dmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNoU2FsdEZvck9yaWdpbj4gRGV2aWNlSWRIYXNoU2Fs
dFN0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBoYXNoU2Fs
dEZvck9yaWdpbiA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUo
c2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKHBhcmVudFNlY3VyaXR5T3JpZ2lu
RGF0YS52YWx1ZSgpKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgYXV0byBoYXNo
U2FsdEZvck9yaWdpbiA9IG1ha2VVbmlxdWU8SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKHBhcmVudFNlY3VyaXR5T3JpZ2luRGF0
YS52YWx1ZSgpKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CiAKICAgICBoYXNoU2FsdEZv
ck9yaWdpbi0+bGFzdFRpbWVVc2VkID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGxhc3RUaW1l
VXNlZCk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIERldmljZUlkSGFzaFNhbHRTdG9yYWdl
Ojpjb21wbGV0ZURldmljZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxsKFNlY3VyaXR5T3JpZwogCiAg
ICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hTYWx0ID0gYnVpbGRlci50b1N0cmluZygpOwogCi0g
ICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JPcmlnaW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hT
YWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShwYXJlbnRPcmln
aW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKKyAgICAgICAgYXV0byBuZXdIYXNoU2Fs
dEZvck9yaWdpbiA9IG1ha2VVbmlxdWU8SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoZG9jdW1l
bnRPcmlnaW4pLCBXVEZNb3ZlKHBhcmVudE9yaWdpbiksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2Fs
dCkpOwogCiAgICAgICAgIHJldHVybiBuZXdIYXNoU2FsdEZvck9yaWdpbjsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKaW5kZXggNjNhNDliNTY3ZGI4ZGE1M2Y1Nzk5YTUwMzQ0
ZjMxMjUxZjVlOTY4NC4uZGM1YWRmMWEzZTRiOTRhYTAxNGI0MzBlZmE2NmRlMDlmOTVjYTdiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5TWFwLmNwcApAQCAtODgsMTEgKzg4LDExIEBAIERvd25sb2FkUHJveHkmIERvd25sb2Fk
UHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29s
CiAKICAgICBpZiAobV9kb3dubG9hZHMuc2l6ZSgpID09IDEgJiYgbV9zaG91bGRUYWtlQXNzZXJ0
aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9hZFVJQXNzZXJ0aW9uKTsKLSAgICAgICAg
bV9kb3dubG9hZFVJQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9u
PihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25T
dGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fZG93bmxvYWRVSUFzc2VydGlv
biA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAi
V2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcp
OwogCiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24pOwogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3MpOwotICAgICAgICBtX2Rvd25sb2FkTmV0d29y
a2luZ0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4obV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9u
U3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkTmV0d29ya2lu
Z0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4obV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVu
Ym91bmRlZE5ldHdvcmtpbmcpOwogCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiVUlQcm9jZXNzIHRvb2sgJ1dlYktpdCBkb3dubG9hZHMnIGFzc2VydGlvbnMgZm9yIFVJ
UHJvY2VzcyBhbmQgTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggM2RlZjVkNzlmMDdjYjkxNDBiODI1NjJkYjlm
NmYyYmM2ZDBmNzJmNi4uNTYwNmM1MTE2NTM0ZjQzY2ZjODA2ZDUxMWQ0MWVkOThjZmIyNTE2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtNTIsNiAr
NTIsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNs
YXNzIERyYXdpbmdBcmVhUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByb3Rl
Y3RlZCBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYXdpbmdBcmVhUHJveHkpOwogCiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlk
ZXIuY3BwCmluZGV4IGVjYWFjMzAxYjRiZGY0NmYyYzg5Y2RkZTcxZDE5MzI1NDUxNGY2NDAuLmY0
YjdiZWE2NTg1MDk5MWU5NDk0YTYyMjNkNTRiOTgyYWVjZmQxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxDb25uZWN0ZWRH
YW1lcGFkcyhjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkCiAgICAgZm9yIChhdXRvKiBnYW1l
cGFkIDogaW5pdGlhbEdhbWVwYWRzKSB7CiAgICAgICAgIGlmICghZ2FtZXBhZCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBtX2dhbWVwYWRzW2dhbWVwYWQtPmluZGV4KCldID0gc3Rk
OjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KCpnYW1lcGFkKTsKKyAgICAgICAgbV9nYW1lcGFkc1tn
YW1lcGFkLT5pbmRleCgpXSA9IG1ha2VVbmlxdWU8VUlHYW1lcGFkPigqZ2FtZXBhZCk7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiBwb29sIDogbV9wcm9jZXNzUG9vbHNVc2luZ0dhbWVwYWRzKQpA
QCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnBsYXRmb3JtR2FtZXBh
ZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQpCiAgICAgICAgIG1fZ2FtZXBhZHMu
Z3JvdyhnYW1lcGFkLmluZGV4KCkgKyAxKTsKIAogICAgIEFTU0VSVCghbV9nYW1lcGFkc1tnYW1l
cGFkLmluZGV4KCldKTsKLSAgICBtX2dhbWVwYWRzW2dhbWVwYWQuaW5kZXgoKV0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFVJR2FtZXBhZD4oZ2FtZXBhZCk7CisgICAgbV9nYW1lcGFkc1tnYW1lcGFkLmlu
ZGV4KCldID0gbWFrZVVuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVwYWQpOwogCiAgICAgc2NoZWR1bGVH
YW1lcGFkU3RhdGVTeW5jKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCmluZGV4IDdkNTZi
MGEyNDYzZGVkZjE2Njk1OGMyOGZmYjc1YWEwZTJjZTUxZjEuLmU2YmMwYTQ1MDU2NWVlMmVmYTFi
ZDA1YTJhNzU2MTExYTE1ZDk4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaApAQCAtMzIs
NiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCiBj
bGFzcyBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSGlnaFBlcmZvcm1hbmNlR3Jh
cGhpY3NVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bvb2wmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXgg
OTRmYWY2YjlkZTI2MjAxZDg0ZDI2ZmY4MzkzM2Y4MjI5YzA1ZDZiOS4uMjc3Y2EwNDRlNDA3YjA3
YmM0YWY1OGYyMjIxN2NiNmI2ODQyOGFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjQsNyArMTY0
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5k
KGJvb2wgYmFja2dyb3VuZCkKIERvd25sb2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNy
ZWF0ZURvd25sb2FkUHJveHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qp
CiB7CiAgICAgaWYgKCFtX2Rvd25sb2FkUHJveHlNYXApCi0gICAgICAgIG1fZG93bmxvYWRQcm94
eU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRQcm94eU1hcD4oKnRoaXMpOworICAgICAg
ICBtX2Rvd25sb2FkUHJveHlNYXAgPSBtYWtlVW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlz
KTsKIAogICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHko
bV9wcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKIH0KQEAgLTEyMTEsNyArMTIxMSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VV
cGxvYWRBc3NlcnRpb24oKQogewogICAgIEFTU0VSVCghbV91cGxvYWRBc3NlcnRpb24pOwotICAg
IG1fdXBsb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihw
cm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpV
bmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICBtX3VwbG9hZEFzc2VydGlvbiA9IG1ha2VVbmlxdWU8
UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9z
LCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6Y2xlYXJVcGxvYWRBc3NlcnRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA0MzM1
NDVjMGUzM2ZhYWVlZDlkZWJiMzRmNmIyMGNmY2FlNWU5NWM4Li41OTViM2VlNDE1Y2RmNzA0NjA5
YzUzNmM5MGFiYTI1OTcxN2Q0NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNzAsNiArNzAsNyBAQCBjbGFz
cyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIHN0cnVjdCBXZWJzaXRlRGF0YTsKIAog
Y2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eSBmaW5hbCA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNz
UHJveHksIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFr
UHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOwogICAgIHVzaW5nIFRvcEZyYW1lRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXgg
MmFhZmYxZWMyYTY1NDkwZDg4NTQzOTk2YmY4MTAyYzJkNDljNTA0Mi4uNDdhM2U5YjIzYmExMjY1
MTk4YjYwZWRkZjZjNGRkOTg2ZmNkMjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmNwcApAQCAtNTYsMTQgKzU2LDE0IEBAIFJlZjxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQ
CiAKIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVt
ZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJ
OjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKSkKIHsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlv
blByb3ZpZGVyPiYmIHByb3ZpZGVyKQogewogICAgIGlmICghcHJvdmlkZXIpIHsKLSAgICAgICAg
bV9wcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4o
KTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92
aWRlcj4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IGVjNjRiYzllMTYyY2I3Y2ExZTc1MzdlOTMzMWQ0ZjEzOTU4N2VjNDEu
LjZjZjVlMTRlYTU2OWYyM2RhODQ3NTQwOTZjYTUxMTQ1M2MyOThiOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTE2OCw2ICsxNjgsNyBAQCB1c2luZyBMYXllckhvc3Rp
bmdDb250ZXh0SUQgPSB1aW50MzJfdDsKICNlbmRpZgogCiBjbGFzcyBQYWdlQ2xpZW50IDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFBhZ2VDbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNh
bXBsZXIuaAppbmRleCAwMWE3ZGE3Yjg5MWE5MDA2NmM5MGU4NDI5YzY1NmJkNzAwYjE2NmJkLi5l
YTQzOTI3ZDQ4ZDc1MmJlYjY3MjgwOTQ5OWM5YWQwYmZlMDdiYzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
ci5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nl
c3NQb29sOwogCiBjbGFzcyBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CiAgICAgflBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAppbmRl
eCBmNmY0NzliMWUwMzkyZjMyMjE2MGE2NDk0YWVjNjJlMGEwNjc5NmRkLi44NDM2OWQzMzQ0MDdj
ZmJjMmU4M2FhODI3YzVjYzBlNWRiOTEyMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXgu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUlu
aXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhCiAjaWYgUExBVEZP
Uk0oR1RLKQogc3RhdGljIGJvb2wgcGx1Z2luUmVxdWlyZXNHdGsyKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlPiBtb2R1bGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0aCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVs
ZT4gbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KHBsdWdpblBhdGgpOwogICAgIGlmICghbW9k
dWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gbW9kdWxlLT5m
dW5jdGlvblBvaW50ZXI8Z3BvaW50ZXI+KCJndGtfb2JqZWN0X2dldF90eXBlIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCmluZGV4IDAwYTk5MTg4NjE0
ODczOTM4YTZjYjRhYmQ5OTE0YmM4NjI5NDVjZjcuLjRjZTI2MmU5ZGNiYjRiMWIwZmYwYWQ1ZGI5
N2ViOTdmMzYwNzM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nl
c3NUaHJvdHRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJv
dHRsZXIuY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpkaWRD
b25uZWN0VG9Qcm9jZXNzKFByb2Nlc3NJRCBwaWQpCiAKICAgICBtX3N1c3BlbmRUaW1lci5zdG9w
KCk7CiAgICAgaWYgKG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbikKLSAgICAgICAg
bV9hc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlk
LCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CisgICAgICAg
IG1fYXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldl
YiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9hc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBp
ZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAg
ICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGlkLCAiV2ViIGNv
bnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgbV9wcm9jZXNzLmRp
ZFNldEFzc2VydGlvblN0YXRlKGFzc2VydGlvblN0YXRlKCkpOwogICAgIG1fYXNzZXJ0aW9uLT5z
ZXRDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tbQppbmRleCA2MGYwMmM2MTBmY2Q5ODgzMDYzOWM1N2IzZTlkNjFmZjFmZDUy
NWZkLi4yNzRhYmQzMDI5YzAwNzczMzlkZmUzNzQ4ZmYzMDY5N2M5YjQ4YjQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTA3LDcgKzEw
Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSYg
d2ViUGFnZVByb3h5LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgOiBEcmF3aW5nQXJl
YVByb3h5KERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSwgd2ViUGFnZVByb3h5LCBwcm9j
ZXNzKQotICAgICwgbV9yZW1vdGVMYXllclRyZWVIb3N0KHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlSG9zdD4oKnRoaXMpKQorICAgICwgbV9yZW1vdGVMYXllclRyZWVIb3N0KG1ha2VV
bmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpKQogewogI2lmIEhBVkUoSU9TVVJGQUNF
KQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcG9vbCBzdXJmYWNlcyBpbiB0aGUgVUkgcHJvY2Vz
cy4KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OnVwZGF0ZURlYnVnSW5kaWNhdG9yKEludFNpemUgY29udGVudHNTaXplLAogCiB2b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmluaXRpYWxpemVEZWJ1Z0luZGljYXRvcigp
CiB7Ci0gICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKKyAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJU
cmVlSG9zdCA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpOwogICAgIG1f
ZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0LT5zZXRJc0RlYnVnTGF5ZXJUcmVlSG9zdCh0cnVl
KTsKIAogICAgIG1fdGlsZU1hcEhvc3RMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBp
bml0XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDMwMDI1ZDQyOTlmM2JjYTA0
ODVkMzA0ZDgzMzU4MTc2MTBiYTUwYmQuLjhhNGU1MDQ4MTdlYmMxMjVjZTg5OGMxYzI5MWQ5YTZl
NGQ1ZjU4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yNTIsNyArMjUyLDcg
QEAgdm9pZCBSZW1vdGVMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllcihjb25zdCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmUKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRy
ZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7CiAg
ICAgYXV0byBtYWtlV2l0aExheWVyID0gWyZdIChSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIpIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJv
cGVydGllcy5sYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZShsYXll
cikpOwogICAgIH07CiAgICAgYXV0byBtYWtlQWRvcHRpbmdMYXllciA9IFsmXSAoQ0FMYXllciog
bGF5ZXIpIHsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoYWRvcHROUyhsYXllcikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZU5vZGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQppbmRleCBlODhiYmM2MDhkNGZiMDU4Mzg0ZDI5YjI2
OTgxNTkyZWRhODE0ZWJhLi40ZmQ0ZWEyNjllOGNjMWJkZmZiMmViMjU5N2Q0Zjc1MGQ4NDI0MDY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQpAQCAtNzMsNyArNzMsNyBAQCBSZW1vdGVM
YXllclRyZWVOb2RlOjp+UmVtb3RlTGF5ZXJUcmVlTm9kZSgpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5
ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQpCiB7CiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyID0gYWRvcHROUyhbW1dLUGxhaW5SZW1vdGVMYXll
ciBhbGxvY10gaW5pdF0pOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
VHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW1vdGVMYXllclRyZWVOb2RlPihsYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CiB9CiAKIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlTm9kZTo6ZGV0YWNoRnJvbVBhcmVudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKaW5kZXgg
YzI3ODFkYzhhZGEzNDMzOWY3OWVkODVhN2UzZTlmZjc2NTIyMjUyOC4uMjlkZmVmZTZjYjcyYzEy
MGE2MWNjMjJkMGQzYmE2NGE2ZDk0NDI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaApAQCAtMzMsNiArMzMsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk7
CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhKFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkmKTsK
ICAgICB+UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaAppbmRleCA4NmQwZGVmYzY5
NjVlNGZhNmJhMTE2NDc2MWJjOWFjNzE5OGM3MmU2Li4xYTc2OTQzZjI0NWJlMWNkODIyZjE5NjEz
Y2RkMzVmNTQwYTk0Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUmVtb3RlU2Nyb2xsaW5nVHJlZTsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSk7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHJveHkmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCA2MjlhOWM2NTBkNDNj
MGQ1NjFjODE5MzNiYTBkMTRlOGQzM2VhNDQ0Li4wYzEyNmFlNmFmNzVlNDEzOGFmZDAwODY4Mzk1
NjYyOWZmNzAwMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1t
CkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlWaWV3PiBjcmVhdGVSZW1vdGVW
aWV3KHBpZF90IHBpZCwgdWludDMyX3QgY29udGV4dElEKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGll
cykKIHsKICAgICBhdXRvIG1ha2VXaXRoVmlldyA9IFsmXSAoUmV0YWluUHRyPFVJVmlldz4gdmll
dykgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2Rl
Pihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUodmlldykpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUo
dmlldykpOwogICAgIH07CiAgICAgYXV0byBtYWtlQWRvcHRpbmdWaWV3ID0gWyZdIChVSVZpZXcq
IHZpZXcpIHsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKHZpZXcpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZUlPUy5tbQppbmRleCA4MWEyZWI5YTYzNWQ1OTg0MTYwMGY3ODM1MjA0YWM4NGJk
NmQ1YzI4Li5iODkwNjgxZTllN2E1MTNiYTM0MzY3Y2VmMzk4OWJlM2IxOWQ5Y2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlUmVtb3RlSU9TLm1tCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBT
CiAKICAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkgewogICAgICAgICBpZiAoc2Nyb2xs
Q29udGFpbmVyTGF5ZXIoKSkKLSAgICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0g
c3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigq
dGhpcyk7CisgICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tCmluZGV4IGI1NmUyZWE2NGRhNTIwMzFkZmFmMTI4ZWMyNDhjZDE1Yzcx
MDA5MjYuLmQwYmRkM2M1N2RiYmNiZWYwNzBlODUxYWZlMDRlZWU2YWFiNTdkOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1MubW0KQEAgLTQzLDcgKzQzLDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M+IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MKIAogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBX
ZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9sbGlu
Z05vZGVEZWxlZ2F0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M+KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKG1ha2VV
bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5oCmluZGV4IDY0ODlhOGU3NDQyZDdiMTcwNTI5NWI2MmVlYjVjMDI1Yzdh
OWIzM2EuLmU2MzdkNjE1MzI1ZDM4MGNlOTJkMDdhMmIxMjE5MTNmZjE4MWRkMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MgOiBwdWJsaWMgV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyhXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYpOwogICAgIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1v
dGVNYWMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAppbmRleCAzMmExZTMz
YWE4NTY3YzBiNjE2MmUwNjc4M2NmMzc2Y2Y2MTkwN2UyLi4yMzNmZmQwMjFlNjM4YmYxODhmOGRj
YWJkNzc5Yzc0NTI5NDM3Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVN
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVN
YWMoU2Nyb2xsaW5nVHJlZSYgdHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9s
bGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjKHRyZWUsIG5vZGVUeXBlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9sbGVyUGFpcihzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQorICAgICwgbV9zY3JvbGxlclBhaXIo
bWFrZVVuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZVJlbW90ZU1hYy5jcHAKaW5kZXggZDg5NjBjZWMzMGU0MzMxOWFhMDI3ZDlhMjFmY2VmYzgzNzYz
NTA0My4uYjZjYTNjYmJhODA4MDdhZjdiOWY2OTliZTliMWIyYWE5Y2RjMWMzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlZjxTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMoU2Nyb2xsaW5nVHJlZSYg
dHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVNYWModHJlZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxlclBhaXIoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQ
YWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCmluZGV4IGYy
NjFmNTI2ODE1MmQwZmRkYjY4NTUxYTg2MDE1MmU0MTY3ZDBhZWMuLjJiOTBlMWI4OWMwYWE1ZWVl
YWYwNTRkZTQyOGRlZWQ0MGU2M2E4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgU3lzdGVtUHJldmlld0NvbnRy
b2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFN5c3RlbVByZXZpZXdDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCBmNTA1ZTI4MGM0NDI5MGE4MDNkYmRiNjhjOThlZWE2
MzBiMWM5YmI2Li44NjhiNTRlNzkyYWYyYWJkOTg2YmM4NjYwMDVjYjEyZjQ1NjgyNDI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkKICAgICAsIHByaXZhdGUgTG9nZ2Vy
SGVscGVyCiAjZW5kaWYKIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eShXZWJQ
YWdlUHJveHkmKTsKICAgICB+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0hpZFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCmluZGV4IDllYWUxOGVkZDVmNGQyZGM1ZGYzOGU5
NmQwNTA1MDkzYmNhOWIzOTguLmFiZDBlN2U3Mjk0NzkxMjhjYjZhZmZmN2YyMTgxMjYzZTRkYTk4
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0hpZFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQpAQCAtOTIsNyArOTIsNyBAQCBVbmlxdWVS
ZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJT0hJRERl
dmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9ISUREZXZp
Y2VSZWYgZGV2aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDdGFw
SGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOworICAgIGF1dG8gZHJpdmVy
ID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkp
OwogICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgogICAgIGRy
aXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFwUmVxdWVz
dENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNwb25zZSkg
ewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKaW5kZXggODVjZTY5MDYxMTE0NDJi
YzY3OWNjN2E3NzViODY4MmRkMTU3MjhjOS4uZjg1MmJlZDIxMzBiNDdjMmY3ZGQyOThhZDM1NmFl
YWM4N2MwMjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSA6
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eShXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA5OWQ2ZWEzMzQxNTNlY2Y0
OWQ0NTg0Yzc0M2RjNjgxNjg4NDE1NTIwLi44NDZhNWFhMjdkZmFiM2QyNzRjZmZhNDg3Mzg2MWYy
NTg3ZDE3ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQ
cm9jZXNzUG9vCiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0
U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkpCisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlx
dWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVt
ZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KQEAg
LTU0LDcgKzU0LDcgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG8KIHZvaWQgV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0
aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7CiAgICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAg
bV9wcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigp
OworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlk
ZXI+KCk7CiAgICAgZWxzZQogICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25G
b2N1c01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyLmNwcAppbmRleCAyY2RjZDE3NjUyOTlmZTc3NjQ5YmFiZjlkZTNlNzRlOGIw
ZjAwZTM3Li4zMzY0YmNiY2M5MTE4NGE2YmE3NTQxZWY5MGIwZjk2MDRjZGU0ZGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcjo6dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlhU3RhdGUoV2ViUGFnZQogCiB2
b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChX
ZWJQYWdlUHJveHkmIHByb3h5LCB1aW50NjRfdCBlbGVtZW50SUQpCiB7Ci0gICAgbV9mb2N1c2Vk
TWVkaWFFbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJv
eHksIGVsZW1lbnRJRCk7CisgICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gbWFrZVVuaXF1ZTxG
b2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CiB9CiAKIHZvaWQgV2ViTWVk
aWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpjbGVhckZvY3VzZWRNZWRpYUVsZW1lbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA5ZWI5ZDI4YWRk
ZDViNWIwMDZkNTBiMDhhM2Q3NGZiNjlkMTYyMzkyLi4xNmE3NTlhYzhhMWZmMzE0NjA1YjA5NDZm
ZmM1YWE2NTgxOGUwNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJO
YXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0
aW9uU3RhdGUuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogCiBjbGFzcyBXZWJOYXZpZ2F0aW9uU3RhdGUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5hdmln
YXRpb25TdGF0ZSgpOwogICAgIH5XZWJOYXZpZ2F0aW9uU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXgg
NjUyOTgyYTgxMmE5ZWZiZWY1MjFhNmE5ODk5ZmE0YmVlNWZhZjM0Yy4uMWIyOWY3OWRkZmFlYTA3
YjllNzI0OWJkNzcyMzg0ZWViZjUzMGZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYlBhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudEJhc2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0Kik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0
cmluZyYsIEFQSTo6T2JqZWN0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8QVBJOjpP
YmplY3Q+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYzRiOTJjODNjZmVhMjliMzFlZGJiMzRhYTg0
MDI1YmE1YzhiMDNiNy4uYmRhNTljZDgwNTE1NzY0NmIzMDhkMmZkMjM2ZjNkMTE4MjcxZTBiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
cjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgICwg
bV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5j
b3B5UmVmKCkpKQogewotICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgYXV0byB0YXJnZXRBZ2VudCA9IG1ha2VVbmlxdWU8
V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2Vu
dC5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
MzI2MzFjNDUwZWIyNmQ3NTQ1NDY4YjcyNmMxNWE0NDk4NWM5OThhOS4uZGE1ZDEyY2EyNTRjZjUx
MWJjMTIxNzZhYTBlMjcwMmVkNTg5N2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0zOTcsMTUgKzM5NywxNSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBh
ZwogICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBt
X25hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkp
CiAgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Okhpc3RvcnlDbGllbnQ+
KCkpCi0gICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29u
TG9hZGluZ0NsaWVudD4oKSkKLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OlVJQ2xpZW50PigpKQotICAgICwgbV9maW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpG
aW5kQ2xpZW50PigpKQotICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCisgICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KG1h
a2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKKyAgICAsIG1fZm9ybUNsaWVudCht
YWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1
ZTxBUEk6OlVJQ2xpZW50PigpKQorICAgICwgbV9maW5kQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpG
aW5kQ2xpZW50PigpKQorICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEFQSTo6
RmluZE1hdGNoZXNDbGllbnQ+KCkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBt
X2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVu
dD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRN
ZW51Q2xpZW50PigpKQogI2VuZGlmCi0gICAgLCBtX25hdmlnYXRpb25TdGF0ZShzdGQ6Om1ha2Vf
dW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKKyAgICAsIG1fbmF2aWdhdGlvblN0YXRlKG1h
a2VVbmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigpKQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3Mp
CiAgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKICAgICAs
IG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKQEAgLTQxNiw3
ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9vdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeSB7IG1fY29uZmlndXJhdGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJp
dHlQb2xpY3koKSB9CiAgICAgLCBtX3RyZWF0c1NIQTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1f
Y29uZmlndXJhdGlvbi0+dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCisgICAgLCBtX2Z1bGxzY3Jl
ZW5DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCiAjZW5kaWYKICAg
ICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBt
X25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKQEAgLTQzNSw5ICs0
MzUsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2Fk
U3RhdGUoKnRoaXMpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkK
KyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBt
X2luc3BlY3RvckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4o
KnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8V2ViUGFnZURl
YnVnZ2FibGU+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRU
aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jh
c2hDb3VudCkKIHsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0
PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZp
dHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0
Y2hlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihS
dW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFu
Z2UpLCBbdGhpc10gewogICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2Uo
KTsKICAgICB9KTsKICNlbmRpZgpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRQb2xpY3lDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmIHBv
bGljeUNsCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7
Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50
PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+
JiYgZm9ybUNsaWVudCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpVSUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7
Ci0gICAgICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7
CisgICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdD
bGllbnQ+JgogewogICAgIGJvb2wgaGFzQ2xpZW50ID0gaWNvbkxvYWRpbmdDbGllbnQuZ2V0KCk7
CiAgICAgaWYgKCFpY29uTG9hZGluZ0NsaWVudCkKLSAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKKyAgICAgICAg
bV9pY29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4o
KTsKICAgICBlbHNlCiAgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBXVEZNb3ZlKGljb25M
b2FkaW5nQ2xpZW50KTsKIApAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9i
c2VyCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kQ2xpZW50KSB7Ci0g
ICAgICAgIG1fZmluZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50Pigp
OworICAgICAgICBtX2ZpbmRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50
PiYmIGZpbmRDbGllbnQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+JiYgZmluZE1hdGNoZXNDbGll
bnQpCiB7CiAgICAgaWYgKCFmaW5kTWF0Y2hlc0NsaWVudCkgewotICAgICAgICBtX2ZpbmRNYXRj
aGVzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOwor
ICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVz
Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzYsNyArNjc2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkRpYWdub3N0aWNMb2cKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVu
dUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0
TWVudUNsaWVudCkKIHsKICAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1f
Y29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGll
bnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29u
dGV4dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5MSw3ICs2
OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3Qg
V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtl
VW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBtX2luamVjdGVkQnVu
ZGxlQ2xpZW50LT5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKQEAgLTc3Niw3ICs3NzYsNyBAQCBi
b29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIH0KIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVu
ZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpKTsKLSAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJh
bWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKTsKKyAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBh
Z2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxk
RGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAog
ICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRl
ZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVt
ICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdT
dHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21J
dGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOwogCkBAIC04NDksNyArODQ5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuTWFuYWdlcik7Ci0gICAg
bV9mdWxsU2NyZWVuTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGllbnQoKS5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
KCkpOworICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNs
aWVudCgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAg
ICAgQVNTRVJUKCFtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOwpAQCAtODYwLDIyICs4NjAsMjIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKICAgICBBU1NFUlQoIW1fcGF5bWVudENvb3JkaW5hdG9yKTsKLSAg
ICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlx
dWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQogICAgIEFTU0VSVCghbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcik7
Ci0gICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3lzdGVt
UHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIEFTU0VSVCghbV9jcmVkZW50aWFsc01lc3Nlbmdl
cik7Ci0gICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRpYWxzTWVz
c2VuZ2VyID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRo
aXMpOwogI2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICBBU1NFUlQoIW1fZWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIpOwotICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9lZGl0
YWJsZUltYWdlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+
KCp0aGlzKTsKICNlbmRpZgogfQogCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldERyYXdpbmdBcmVhKHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRy
YXdpbmdBcmUKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVtb3Rl
TGF5ZXJUcmVlKSB7Ci0gICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAg
ICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICAvLyBPbiBpT1MsIG1haW4gZnJhbWUgc2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBv
ZiB2aXNpYmxlIHJlY3QgdXBkYXRlcy4KICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LT5zZXRQcm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xscyhmYWxzZSk7CkBAIC0xMDA2LDE3ICsx
MDA2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgbV9sb2FkZXJDbGllbnQg
PSBudWxscHRyOwogICAgIG1fbmF2aWdhdGlvbkNsaWVudCA9IG1ha2VVbmlxdWVSZWY8QVBJOjpO
YXZpZ2F0aW9uQ2xpZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50ID0gbnVsbHB0cjsKLSAgICBt
X2ljb25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xp
ZW50PigpOwotICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+
KCk7Ci0gICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+
KCk7Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5k
TWF0Y2hlc0NsaWVudD4oKTsKKyAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8
QVBJOjpGb3JtQ2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlD
bGllbnQ+KCk7CisgICAgbV9maW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+
KCk7CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hl
c0NsaWVudD4oKTsKICAgICBtX2RpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbnVsbHB0cjsKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgbV9mdWxsc2NyZWVuQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAjZW5kaWYKIAogICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2Uo
KnRoaXMpOwpAQCAtMTIyNiw3ICsxMjI2LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9KTsK
IAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0
YU5hdmlnYXRpb24oc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZl
Y3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhKSk7CisgICAgYXV0
byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlv
bihtYWtlVW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBl
LCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0
aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBl
LCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6Tm8sIFdURjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAg
cmV0dXJuIG5hdmlnYXRpb247CiB9CkBAIC0yNDE1LDcgKzI0MTUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1
dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVs
RXZlbnQ+PigpOwogICAgIGNvYWxlc2NlZFdoZWVsRXZlbnQtPmFwcGVuZChldmVudCk7CiAgICAg
bV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShjb2FsZXNjZWRX
aGVlbEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQoZXZlbnQpOwpAQCAtMjQyMyw3ICsyNDIz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2Vi
V2hlZWxFdmVudCYgZXZlbnQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVl
ZFdoZWVsRXZlbnQoKQogewotICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CisgICAgYXV0byBuZXh0Q29h
bGVzY2VkRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsK
ICAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50ID0gY29hbGVzY2VkV2hlZWxFdmVudCht
X3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRFdmVudC5nZXQoKSk7CiAgICAgbV9jdXJy
ZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShuZXh0Q29hbGVzY2VkRXZl
bnQpKTsKICAgICBzZW5kV2hlZWxFdmVudChuZXh0V2hlZWxFdmVudCk7CkBAIC0yOTg0LDcgKzI5
ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFn
ZSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9wcm92aXNpb25hbFBhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCks
IFdURk1vdmUoc3VzcGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwg
bmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50
UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKKyAgICBtX3Byb3Zpc2lv
bmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9j
ZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5h
dmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZp
Z2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwog
CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgewogICAgICAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRh
KCkpOwpAQCAtNTcwMiw3ICs1NzAyLDcgQEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogV2Vi
UGFnZVByb3h5OjpmdWxsU2NyZWVuTWFuYWdlcigpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RnVs
bHNjcmVlbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiYmIGNs
aWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkgewotICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICAgICAgbV9m
dWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0MzYsNyArNzQzNiw3IEBAIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0CiAgICAgaWYgKG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KQogICAgICAgICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwog
Ci0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CisgICAg
bV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBtYWtlVW5pcXVlPFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIH0KIApAQCAtODE0Miw3ICs4MTQyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25F
bmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rp
b25FbmFibGVkID0gZW5hYmxlZDsKIAogICAgIGlmIChtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNv
bGxlY3Rpb25FbmFibGVkICYmICFtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSkKLSAgICAgICAg
bV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKKyAgICAgICAgbV9zY3JvbGxpbmdQZXJm
b3JtYW5jZURhdGEgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJh
d2luZ0FyZWEpKTsKICAgICBlbHNlIGlmICghbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0
aW9uRW5hYmxlZCkKICAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBudWxscHRy
OwogfQpAQCAtOTE4OSw3ICs5MTg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNo
U3ludGhlc2l6ZXIoKQogV2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVzaXNEYXRhJiBXZWJQYWdl
UHJveHk6OnNwZWVjaFN5bnRoZXNpc0RhdGEoKQogewogICAgIGlmICghbV9zcGVlY2hTeW50aGVz
aXNEYXRhKQotICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNE
YXRhIHsgc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgICAgICBt
X3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHJldHVybiAqbV9zcGVlY2hTeW50aGVzaXNEYXRh
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI0MzgzY2Fm
ODhmMzcyNzJjZjk0NzdiNjQwMzljZTllZjVjOTQ5YTEuLjE3YmY1ZmE5YmUxN2U2Mzg1YzIzYmI4
NzQ1YTFiNWQzYWM3OGNmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0zNDcsOCArMzQ3LDcgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3Q+IFRvdWNoZXNDYWwKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiY+IFNlbGVj
dGlvblJlY3RzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uJj4gRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbkNhbGxiYWNrOwog
c3RydWN0IEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24gaW5mb3JtYXRpb247CiAgICAgYm9vbCB1c2VySXNJ
bnRlcmFjdGluZzsKICAgICBib29sIGJsdXJQcmV2aW91c05vZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA4YmRmOGNmODM4OGNkYzdiZmFjZmYy
YjdlNjA1ZDBhODE4ZGFhYzY0Li45NjJmM2JlZDJkODI1NjlhMDdkZDRlOWNkYWI4ZmNjNzIxMTlm
N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAg
LTg0LDcgKzg0LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxl
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSBnZW5lcmF0ZUFkZFJlcXVlc3RJZGVu
dGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVy
LCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7Cisg
ICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5pcXVl
PENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CiAKICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2li
bGUoKTogQ2hlY2tpbmcgaWYgcHJvY2VzcyAlaSBpcyByZXNwb25zaXZlIGJlZm9yZSBjYWNoaW5n
IGl0Li4uIiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgcHJvY2Vz
cy0+aXNSZXNwb25zaXZlKFt0aGlzLCBwcm9jZXNzUG9vbCA9IG1ha2VSZWYocHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKSksIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGlzUmVzcG9uc2l2ZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDM2MzY3ZjAwNGNm
MWUyMTY1ZDI3YjZhZThlNmZjYjVkYzZmOTEzOGMuLjgxOTY1YWY3Y2E4YjAzMjMzZmY0Zjg1NjQx
NGRkYmQxNGQ5OTQwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTIzMywxNSArMjMzLDE1IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90CiBXZWJQ
cm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5jb3B5
KCkpCiAgICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3VwOjpjcmVhdGUoKSkKLSAg
ICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlQ2xpZW50PigpKQotICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQotICAgICwgbV9kb3dubG9hZENsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCi0gICAgLCBtX2hpc3RvcnlDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQot
ICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKKyAgICAsIG1faW5qZWN0ZWRCdW5kbGVD
bGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQorICAgICwgbV9h
dXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQorICAg
ICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCisg
ICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50PigpKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1
ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAgICAsIG1fdmlzaXRlZExp
bmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlx
dWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0aGlzKSkKLSAgICAsIG1f
cGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBlckFjdGl2
aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1faGlnaFBlcmZvcm1hbmNl
R3JhcGhpY3NVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyKG1ha2VVbmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQog
I2VuZGlmCiAgICAgLCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eShtX2NvbmZpZ3Vy
YXRpb24tPmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQogICAgICwgbV9zaG91bGRU
YWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkVGFrZVVJQmFj
a2dyb3VuZEFzc2VydGlvbigpKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xp
ZW50KQotICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOwogICAgIGVsc2UK
ICAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KQEAg
LTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ29ubmVjdGlv
bkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Qgogdm9pZCBXZWJQcm9jZXNz
UG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudD4mJiBoaXN0b3J5Q2xpZW50KQogewogICAgIGlmICghaGlzdG9yeUNsaWVu
dCkKLSAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOworICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7CiAgICAgZWxzZQogICAg
ICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGllbnQpOwogfQpAQCAtMzg1
LDcgKzM4NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4m
JiBkb3dubG9hZENsaWVudCkKIHsKICAgICBpZiAoIWRvd25sb2FkQ2xpZW50KQotICAgICAgICBt
X2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50Pigp
OworICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xp
ZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUoZG93
bmxvYWRDbGllbnQpOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiYm
IGRvCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+JiYgYXV0b21hdGlvbkNsaWVudCkKIHsKICAgICBp
ZiAoIWF1dG9tYXRpb25DbGllbnQpCi0gICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAgICAgICBtX2F1dG9tYXRp
b25DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1vdmUoYXV0b21hdGlvbkNsaWVudCk7
CiB9CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkMKIHsKICNpZiBF
TkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAgIGlmICghY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KQotICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7
CisgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQpOwogI2VuZGlmCkBAIC00OTIsNyArNDkyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdp
dGgKICAgICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogICAgIH0KIAotICAgIGF1dG8g
bmV0d29ya1Byb2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtQcm9jZXNzUHJveHk+KCp0
aGlzKTsKKyAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gbWFrZVVuaXF1ZTxOZXR3b3JrUHJvY2Vz
c1Byb3h5PigqdGhpcyk7CiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwogCkBAIC0yNTE1LDcgKzI1MTUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpk
aWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YQogICAgICAgICBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92
ZShtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJhbmRvbSgpKTsKIAog
ICAgIGF1dG8mIHZhbHVlID0gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFp
bi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7CiAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlOwogCiAgICAgKnZhbHVlID0gcHJld2FybUluZm9ybWF0aW9uOwpAQCAtMjU2Miwx
MiArMjU2MiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fk
cyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnRha2VVcGxvYWRBc3NlcnRpb24oKTsKICAgICAgICAgCiAgICAgICAgIEFTU0VSVCghbV91aVBy
b2Nlc3NVcGxvYWRBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJ
RCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3Jr
aW5nKTsKKyAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFBy
b2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRzIl9z
LCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAgICAgfQogICAgIAogICAg
IGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5hZGQocHJvY2Vzc0lELCBudWxs
cHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVu
Ym91bmRlZE5ldHdvcmtpbmcpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5p
cXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJL
aXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJRCkKQEAgLTI2MDQsMTIgKzI2MDQsMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUaGUg
bnVtYmVyIG9mIHByb2Nlc3NlcyBwbGF5aW5nIGF1ZGlibGUgbWVkaWEgaXMgbm93IG9uZS4gVGFr
aW5nIFVJIHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwogCiAgICAgICAgIEFTU0VSVCghbV91aVByb2Nl
c3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBsYXli
YWNrQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJy
ZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRl
OjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOworICAgICAgICBt
X3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywg
QXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFj
ayk7CiAgICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nlc1BsYXlpbmdBdWRpYmxl
TWVkaWEuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1lZGlh
IFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29u
OjpNZWRpYVBsYXliYWNrKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0
IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9u
UmVhc29uOjpNZWRpYVBsYXliYWNrKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJX
ZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGUxNjkxMzdmNTM4OWQzMGJiOGIxMWIzYThlMWY1MGNhNDNhYTA2ZWQuLjFlM2NkZGU4
ZmJlODhlODVkODAyOTg3Nzk3ZjgxMmVlYzUyNWIzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIFdlYlByb2Nlc3NQ
cm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0
ZURhdGFTdG9yZSoKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVy
RXZlbnQpIHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKICAgICAs
IG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5KHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRo
aXMpKQorICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8VXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2lzUHJl
d2FybWVkKGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q2xpZW50LmgKaW5kZXggZTlmY2YwMDE1Mzk5NWRjMWNjZTEzNWY4YzA5MmU5MmU2NmRiZmYzYS4u
ZDBiYmE1NjRjMjc1ODJkNzgyNmU5ZjJjMjA2MjIzNzAyMjcyOTUzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYnNpdGVE
YXRhU3RvcmVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Y2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDE4Mjk0ZDM3ZmU0OWVlZDZkNjlkZmZm
ZjVmMmY2NTA3MGI2NmNkOTAuLjdiZGQwM2QzYzhlYzhlMDY2MmU3N2QwMTgyNTBiNTA4OGMyNmNm
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3Rv
cmVDYWlyby5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0
b3JlQmFja2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogICAgICAgICBH
ZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbChtX3dlYlBhZ2VQcm94eS52
aWV3V2lkZ2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9IGdka192aXN1YWxfZ2V0
X3NjcmVlbih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5
WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVOX1hESVNQTEFZKHNjcmVl
bikpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5k
Q2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVl
bikpLAorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9Y
MTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAog
ICAgICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdka192aXN1YWxfZ2V0X2Rl
cHRoKHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgfQogI2VuZGlm
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9J
bXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rv
cik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGI4NzRmYjBmYjJlMmE3ZTdlYzM2Y2M0
NGUzOWQ2MjQ5MDZhNGM1ZjEuLmY4ODhjMGY0NDZjNjI3MTI3YzgzNzViZTBkODFhNmEzZjJjMDlm
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVj
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUlu
c3BlY3RvckNsaWVudC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
ckNsaWVudDo6Y29ubmVjdGlvbkNsb3NlZCgpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6
aW5zcGVjdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKQogewogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3Bh
aXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElE
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5
PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7
CiAgICAgfSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zaG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3Bw
CmluZGV4IDM4MzEwMDA1ODg5NGRlYzBmYjdiNTFjYWEwOWEyMzlkNzdkMDhhOGIuLjg5MzI3OWZi
Y2Y1OGFlYWYyYWZkNmIxYTQ3YzFjNzZjMjNkODJiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQuY3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kOjpjaGVja1JlcXVpcmVtZW50cygpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNp
ZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3Bl
bkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdM
RVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25z
M0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xF
Uz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRl
bnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9u
czNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMy
MCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5z
aW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6
OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICAgICAgaWYgKGdsRXh0
ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVuc2lvbnMtPnN1
cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAgICAgICAgICBnbEltYWdl
VGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVY
VFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJl
MkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0Fu
ZERyb3BIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJv
cEhhbmRsZXIuY3BwCmluZGV4IGU5YWU2NTUyYTdhMmQ4NjJjNGJkNGVlMTBlZDJlYzM2ZTkyZjgz
MWQuLmNhNjUzZTVlYmE3MGM5NjE1NWZmNzY0ODhjM2VkZjQyODFmODU3MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCkBAIC0y
MDIsNyArMjAyLDcgQEAgU2VsZWN0aW9uRGF0YSogRHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRGF0
YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY28KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RHJvcHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0ID0gbV9kcm9wcGluZ0NvbnRleHRz
LmFkZChjb250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFkcm9wcGlu
Z0NvbnRleHQpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBtX3BhZ2Uudmlld1dpZGdl
dCgpOwotICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERyb3BwaW5n
Q29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOworICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBt
YWtlVW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOwogICAgICAgICBW
ZWN0b3I8R2RrQXRvbT4gYWNjZXB0YWJsZVRhcmdldHMoUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xl
dG9uKCkuZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGRyb3BwaW5nQ29udGV4dC0+Z2RrQ29u
dGV4dCkpOwogICAgICAgICBkcm9wcGluZ0NvbnRleHQtPnBlbmRpbmdEYXRhUmVxdWVzdHMgPSBh
Y2NlcHRhYmxlVGFyZ2V0cy5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0byYgdGFyZ2V0IDogYWNj
ZXB0YWJsZVRhcmdldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
RHJhZ0FuZERyb3BIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0Fu
ZERyb3BIYW5kbGVyLmgKaW5kZXggNTI1NDIwMzcxZjYxYmQ0YjhmM2MxYTM5OWI3YjgyNjFiOTk0
ZWExMC4uNTkxNGI3ZTBkZjU0MzFhY2Y2NjM3MTAzZTY4ODA0MDRlZDQ0M2YzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaApAQCAtNDks
NiArNDksNyBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAK
IGNsYXNzIERyYWdBbmREcm9wSGFuZGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhZ0FuZERyb3BIYW5kbGVyKTsKIHB1YmxpYzoK
ICAgICBEcmFnQW5kRHJvcEhhbmRsZXIoV2ViUGFnZVByb3h5Jik7CkBAIC02NCw2ICs2NSw3IEBA
IGNsYXNzIERyYWdBbmREcm9wSGFuZGxlciB7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IERyb3Bw
aW5nQ29udGV4dCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgRHJvcHBpbmdDb250ZXh0KEdka0RyYWdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvc2l0aW9uKTsKIAogICAgICAgICBHZGtEcmFnQ29udGV4dCogZ2RrQ29udGV4dCB7
IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENv
bXBvc2l0b3IuY3BwCmluZGV4IGNiZTM4MGIyNDBkOTYwMTExNzI3Yjc3MGE4MjVlMDllMDU0N2M5
ZWQuLmMzZDk5NzNjNzBkYzIwODljNjgzZDY1YTkxM2RhMjk0ZDVmZmViYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcApAQCAtNDIw
LDkgKzQyMCw5IEBAIGJvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0woKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1
ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0
ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxzZQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVy
c2lvbigpID49IDMyMCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4g
Z2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdM
Q29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgIGlmIChn
bEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikgfHwgZ2xFeHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQogICAgICAgICBnbEltYWdl
VGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVY
VFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJl
MkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJs
ZUltYWdlQ29udHJvbGxlci5oCmluZGV4IGJiZjkzYzIwMjg2ZWU2YzY2MjhhNzE4MmJhZWQ0NTJm
MmJjOGY3NGMuLjUxNGVjYTY4OWI2NTFjY2RmZWQ2MTE4NTBkMmIxNGJjMmY0YzU5ODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJv
bGxlci5oCkBAIC00MSwxMSArNDEsMTMgQEAgT0JKQ19DTEFTUyBXS0RyYXdpbmdWaWV3OwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBFZGl0YWJsZUltYWdlIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPFdLRHJhd2luZ1ZpZXc+IGRyYXdp
bmdWaWV3OwogICAgIFN0cmluZyBhdHRhY2htZW50SUQ7CiB9OwogCiBjbGFzcyBFZGl0YWJsZUlt
YWdlQ29udHJvbGxlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFZGl0YWJsZUltYWdlQ29udHJv
bGxlcihXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQppbmRleCBjMjM0MTFjMWYwOWIwMTBhNjUy
NTRiMzY5ZGQzMTY5ZDMxZjBjMGUwLi42MWU4NTk0ZDViN2M0MWFhZjlmYzgyYzY1MzhkYjlhZDcx
ODU2MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRh
YmxlSW1hZ2VDb250cm9sbGVyLm1tCkBAIC01OCw3ICs1OCw3IEBAIEVkaXRhYmxlSW1hZ2VDb250
cm9sbGVyOjp+RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKQogRWRpdGFibGVJbWFnZSYgRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXI6OmVuc3VyZUVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCiB7CiAgICAgYXV0byByZXN1bHQg
PSBtX2VkaXRhYmxlSW1hZ2VzLmVuc3VyZShlbWJlZGRlZFZpZXdJRCwgWyZdIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxF
ZGl0YWJsZUltYWdlPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4g
aW1hZ2UgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2U+KCk7CiAgICAgICAgIGltYWdlLT5kcmF3
aW5nVmlldyA9IG1fd2ViUGFnZVByb3h5LT5wYWdlQ2xpZW50KCkuY3JlYXRlRHJhd2luZ1ZpZXco
ZW1iZWRkZWRWaWV3SUQpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5o
CmluZGV4IGM2ZjUwYWIxMWYzZGIyNmUzMWNjMjA0NDNhMWU4NDJiN2Q4MDJmOGQuLmVmYzMzZGU2
ZjJhODIyNWRmYzRlMWEzNDNjMTljMjJlZTFjMzQyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oCkBAIC0zMyw2ICsz
Myw3IEBAIE9CSkNfQ0xBU1MgVUlWaWV3OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIElu
cHV0Vmlld1VwZGF0ZURlZmVycmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcik7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIoVUlWaWV3ICopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyLmgKaW5kZXggNzI4MDc4ODYzODEyZTgwOWNkZTA5NmVlODliMWY2MDIwNTBiYzRk
MS4uMDIwMTE2NzliNzkxZjhlMGFkMTFmMWE4ZjUyNzMxYWZhMzA4NTcyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
UGFnZVByb3h5OwogCiBjbGFzcyBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIDogcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcik7CiBw
dWJsaWM6CiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcihXS0NvbnRlbnRWaWV3ICop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25T
dGF0ZVRyYWNraW5nVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxp
Y2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KaW5kZXggZDAzYTE3MjZhYjMzNGEwMGU2MGZiYzA1
MGI1MGU1YzMzNzVhZjcyMC4uN2YwZjk0ODRmZDc3NzRkZDExNTdhZTI4ODVjOTBhM2JmMmVlNzlh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25T
dGF0ZVRyYWNraW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tB
cHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCkBAIC02NSw3ICs2NSw3IEBAIC0gKHZvaWQp
ZGlkTW92ZVRvV2luZG93CiAgICAgaWYgKCFzZWxmLl9jb250ZW50Vmlldy53aW5kb3cgfHwgX2Fw
cGxpY2F0aW9uU3RhdGVUcmFja2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBfYXBwbGljYXRp
b25TdGF0ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0
ZVRyYWNrZXI+KHNlbGYsIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQp
LCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmlu
Z0JhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkp
OworICAgIF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpBcHBs
aWNhdGlvblN0YXRlVHJhY2tlcj4oc2VsZiwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdB
ZnRlckVudGVyaW5nQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kKSk7CiAgICAgCiAgICAgaWYgKF9sYXN0T2JzZXJ2ZWRTdGF0ZVdhc0JhY2tncm91
bmQgJiYgIVtzZWxmIGlzQmFja2dyb3VuZF0pCiAgICAgICAgIFtzZWxmIF9hcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbQppbmRleCA2ODExZTg3YTRhNDIxMDA1YmQ5NGE3YWMyMTY1NDNlY2MwMGE3N2Zj
Li40MzFmYWNkMWU2ODM5N2VjODU3MzkxYWIxY2Y4ODhkMzg0MTU3YTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBA
IC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByCiAgICAgX3BhZ2UtPnNldERlbGVnYXRlc1Njcm9sbGlu
Zyh0cnVlKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBfcGFnZS0+c2V0RnVs
bHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4o
X3dlYlZpZXcpKTsKKyAgICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdl
YktpdDo6RnVsbHNjcmVlbkNsaWVudD4oX3dlYlZpZXcpKTsKICNlbmRpZgogCiAgICAgV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0yMzksNyAr
MjM5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9j
ZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6
ZVdlYktpdDIoKTsKIAotICAgIF9wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKKyAgICBfcGFnZUNsaWVudCA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CiAgICAgX3dlYlZp
ZXcgPSB3ZWJWaWV3OwogCiAgICAgcmV0dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURk1vdmUoY29uZmlndXJh
dGlvbildOwpAQCAtNTQxLDcgKzU0MSw3IEBAIC0gKHZvaWQpX3dlYlZpZXdEZXN0cm95ZWQKIAog
LSAoc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4pX2NyZWF0ZURyYXdp
bmdBcmVhUHJveHk6KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Jilwcm9jZXNzCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5PigqX3BhZ2UsIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLCBwcm9jZXNzKTsKIH0KIAogLSAo
dm9pZClfcHJvY2Vzc0RpZEV4aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGVmM2FlNDQzZGE2NGQ5NTE4
MmIwZTI1MDAzMWI2YTE4MjBiNGY0MzQuLmVmNTA2ZGE0ZjZkYjU4MTkyZjZkN2Q2NmM5MmZmMWMx
M2RjNGE4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODA2LDcgKzgwNiw3IEBAIC0gKHZvaWQpc2V0
dXBJbnRlcmFjdGlvbgogICAgIAogICAgIF9hY3Rpb25TaGVldEFzc2lzdGFudCA9IGFkb3B0TlMo
W1tXS0FjdGlvblNoZWV0QXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwogICAg
IFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQgc2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgX3NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6U21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlcj4oc2VsZik7CisgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4o
c2VsZik7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmdsZVRhcENvbW1pdCA9IE5POwogICAgIF9w
b3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87CiAgICAgX2lzRG91YmxlVGFwUGVuZGluZyA9IE5P
OwpAQCAtODIxLDcgKzgyMSw3IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoUExBVEZPUk1fRFJJVkVOX1RFWFRfQ0hFQ0tJTkcpCi0gICAgX3RleHRDaGVj
a2luZ0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5nQ29u
dHJvbGxlcj4oKl9wYWdlKTsKKyAgICBfdGV4dENoZWNraW5nQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8V2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyPigqX3BhZ2UpOwogI2VuZGlmCiAKICAg
ICBfaGFzU2V0VXBJbnRlcmFjdGlvbnMgPSBZRVM7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCAtIChC
T09MKWJlY29tZUZpcnN0UmVzcG9uZGVyRm9yV2ViVmlldwogICAgICAgICByZXR1cm4gTk87CiAK
ICAgICBpZiAoIV9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAgICAgICAgX2lucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURl
ZmVycmVyPihzZWxmKTsKKyAgICAgICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFrZVVu
aXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKIAogICAgIEJPT0wg
ZGlkQmVjb21lRmlyc3RSZXNwb25kZXI7CiAgICAgewpAQCAtNTMxMSw3ICs1MzExLDcgQEAgLSAo
dm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24mKWluZm9ybWF0aW9uIHUKICAgICAgICAgLy8gRGVmZXIgdmlldyB1cGRhdGVzIHVudGls
IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCBhIG5vdGljZWFibGUgZmxhc2ggd2hl
biBzd2l0Y2hpbmcgZm9jdXMKICAgICAgICAgLy8gYmV0d2VlbiBlbGVtZW50cyB0aGF0IHJlcXVp
cmUgdGhlIGtleWJvYXJkLgogICAgICAgICBpZiAoIWlucHV0Vmlld1VwZGF0ZURlZmVycmVyKQot
ICAgICAgICAgICAgaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOworICAgICAgICAgICAgaW5wdXRW
aWV3VXBkYXRlRGVmZXJyZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVm
ZXJyZXI+KHNlbGYpOwogICAgICAgICBbc2VsZiBfZWxlbWVudERpZEJsdXJdOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
YjAyODI0ODkyMDAzYTA0OTg5MjllNzA2YTU5MDQ1OWE0Zjg3MWFjZC4uYzA4Zjk3ODZmMGVhYWI0
YTk3NWJiNTY0OGM3NDI3YzU2MzZkYmUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC05MTIsNyArOTEyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmVsZW1lbnREaWRGb2N1cyhjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBp
bmZvcm1hdGlvbiwKICAgICBBUEk6Ok9iamVjdCogdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzKCku
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCk7CiAgICAg
aWYgKG1fZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpIHsKICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCB0cnkgdG8gZWxpbWluYXRlIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9j
dXNBcmd1bWVudHMgYWx0b2dldGhlciwgaW4gZmF2b3Igb2Ygb25seSBkZWZlcnJpbmcgYWN0aW9u
cyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gcG9zdC1sYXlvdXQgZWRpdG9yIHN0YXRlIGluZm9ybWF0
aW9uLgotICAgICAgICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbGVtZW50RGlkRm9jdXNBcmd1bWVudHM+KEVsZW1lbnREaWRGb2N1c0FyZ3Vt
ZW50cyB7IGluZm9ybWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwg
YWN0aXZpdHlTdGF0ZUNoYW5nZXMsIHVzZXJEYXRhT2JqZWN0IH0pOworICAgICAgICBtX2RlZmVy
cmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzID0gbWFrZVVuaXF1ZTxFbGVtZW50RGlkRm9jdXNB
cmd1bWVudHM+KEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7IGluZm9ybWF0aW9uLCB1c2VySXNJ
bnRlcmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIHVzZXJE
YXRhT2JqZWN0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjU4LDcgKzEyNTgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZVNoYXJlZChSZWY8VwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI+IFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0
aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYgcGF5bWVudENv
b3JkaW5hdG9yUHJveHksIFBLUGF5bWVudFJlcXVlc3QgKnBheW1lbnRSZXF1ZXN0KQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI+KHBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENv
b3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKIH0KIAogVUlWaWV3Q29udHJvbGxlciAq
V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIo
Y29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5W
aWV3Q29udHJvbGxlci5tbQppbmRleCA4YjEyM2IwYTk3YzAzMGU5NDUwZjVlZDRmOGMxNzRiMzIx
YmI0MDdiLi44ZmY4YTBiZjQ3NWIzZjdiMjM2MjI5ZjQxMmUzZjMyNjZjZjk1OTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5W
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNj
cmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbQpAQCAtODgsNiArODgsNyBAQCBwcml2
YXRlOgogfTsKIAogY2xhc3MgV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENsaWVudCA6IFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChX
S0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bQppbmRleCA4MzQzNDg4OWNkY2YyNDljMWMyNzkxYmQwN2JmZmZhMjAxY2Y0ODdkLi5hOTEyOTUz
ZWM5MWMyNzMzNjI2NzYzZGFmOWRhMjZiMjQ5MzNjNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAg
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKE5TVmlldyogdmlldywgV0tXZWJWaWV3ICp3
ZWJWaWV3KQogICAgIDogUGFnZUNsaWVudEltcGxDb2NvYSh3ZWJWaWV3KQogICAgICwgbV92aWV3
KHZpZXcpCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgLCBtX2FsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlcj4oKSkKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKG1ha2VVbmlx
dWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tCmluZGV4IDQzZTlmOTY3YmM4OTc3ZmJmZjhjODY2OGE1Y2NhMWYzODI0YzA4
MDkuLjM0YTY5YmJlMGJiMGQxNzZiNTUxYmFmMmQ3YTM1YzFmYWFjMDM3YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tCkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZh
bCBEZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsID0gMTsKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxD
bGllbnQgOiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKQEAg
LTE1MCw3ICsxNTEsNyBAQCAtIChpZClpbml0V2l0aFdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cg
d2ViVmlldzooTlNWaWV3ICopd2ViVmlldyBwYWdlOihXZWJLaXQ6OgogICAgIF93ZWJWaWV3ID0g
d2ViVmlldzsKICAgICBfcGFnZSA9ICZwYWdlOwogCi0gICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+KCk7CisgICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVu
dCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQ+KCk7CiAgICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudC0+c2V0
UGFyZW50KHNlbGYpOwogCiAgICAgW3NlbGYgdmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2Vd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQu
bW0KaW5kZXggNjYwMzE3YzJmYmM3OWI2OGJiNWI3MzQ3NmE1OGJlZmVhMDliMDZkMy4uNjlkOWQ5
ZTJkNDQ0ODQzZDE1MjcwZjUxMTdmNzc0Y2QyMzdkNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCkBAIC01NSw2ICs1NSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFRl
eHRGaW5kZXJGaW5kQ2xpZW50IDogcHVibGljIEFQSTo6RmluZE1hdGNoZXNDbGllbnQsIHB1Ymxp
YyBBUEk6OkZpbmRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFRleHRGaW5kZXJGaW5kQ2xpZW50KFdLVGV4dEZpbmRlckNsaWVudCAq
dGV4dEZpbmRlckNsaWVudCkKICAgICAgICAgOiBtX3RleHRGaW5kZXJDbGllbnQodGV4dEZpbmRl
ckNsaWVudCkKQEAgLTE2OCw4ICsxNjksOCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYWdl
OihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZSB2aWV3OihOU1ZpZXcgKil2aWV3IHVzZQogICAg
IF92aWV3ID0gdmlldzsKICAgICBfdXNlUGxhdGZvcm1GaW5kVUkgPSB1c2VQbGF0Zm9ybUZpbmRV
STsKICAgICAKLSAgICBfcGFnZS0+c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7Ci0gICAgX3BhZ2UtPnNldEZp
bmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50Pihz
ZWxmKSk7CisgICAgX3BhZ2UtPnNldEZpbmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50
KG1ha2VVbmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGVkMGQ1ZmZlOTU4OWY5NWU0NGEw
N2YyMjE4ZWQ4MmMwMGYwMTdkN2UuLmU3NGFkYWMxZTY1ZWJlNWM5OWIzMWQ5MDY3YWU2MTE1OGYz
OTg3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3JDbGllbnQ6OmRpZENsb3NlKENvbm5lY3Rpb25JRCkKIHZvaWQgUmVtb3RlSW5zcGVj
dG9yQ2xpZW50OjppbnNwZWN0KENvbm5lY3Rpb25JRCBjb25uZWN0aW9uSUQsIFRhcmdldElEIHRh
cmdldElELCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2lu
c3BlY3RvclByb3h5TWFwLmVuc3VyZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHRhcmdl
dElEKSwgW3RoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsICZ0eXBlXSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVj
dGlvbklELCB0YXJnZXRJRCwgdHlwZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90
ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCwgdHlwZSk7CiAg
ICAgfSk7CiAKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQ
cm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IDFiNmQ5Y2M1NGZjNjBiNTNlNDQwMjcxZjIzMDhlN2Mw
ZjQ3Yzg3NGMuLmE4ODMzZjYyNDg3ZjlhNjcyMTAzOTllYzlmOGZmNWUwOTI3MTJlZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC04NCwxMSArODQsMTEgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQ
cm94eSYgcGFnZVByb3h5LAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBjbGllbnQgPSBt
X2luc3BlY3RvckNsaWVudHMuZW5zdXJlKHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgW3RoaXMs
ICZyZXF1ZXN0VVJMXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUlu
c3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVS
TC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1v
dGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVl
c3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiAKICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3NhZ2UgbGlzdGVuZXIKLSAgICBhdXRv
IGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlx
dWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29u
dGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRo
aXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsK
ICAgICBwYWdlUHJveHkucGFnZUdyb3VwKCkudXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogCiAgICAgU3RyaW5nQnVpbGRl
ciBodG1sQnVpbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9C
YWNraW5nU3RvcmVEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFj
a2luZ1N0b3JlRGlyZWN0MkQuY3BwCmluZGV4IGI2N2Q3M2E0ZGM0ODhiMzFmZGM5YTQ3MjE5Njkx
NDA0Mjc0NDg4MjUuLjVkNTBhZTU1NDY4MGE2ZTllM2RhMmNlODRiZTU2NGQ1YzMyMzdmN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3Qy
RC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVj
dDJELmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3Rk
Ojp1bmlxdWVfcHRyPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRD4gQmFja2luZ1N0b3JlOjpj
cmVhdGVCYWNrZW5kKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3Rv
cmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw+KG1fc2l6
ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChJ
RDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggY2Q2
ZjA4ZmYxOGJkNTVjMTU1NDQ2M2Q0YTQwYjUxZTQ1YjJlYWI5Zi4uMDMwN2M0ZjlmMTQzZjg2ZGM2
MjA4YjQ4NGJlOGRiNDIyZGMwZjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vUGFnZUNsaWVudEltcGwuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQ
YWdlQ2xpZW50SW1wbChXZWJWaWV3JiB2aWV3KQogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVh
bCBmdW5jdGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKm1fdmlldy5wYWdlKCksIHBy
b2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNv
bnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCmluZGV4IGNkNTM1MmRmN2FhMDRlNjlkOWIwZjk4ZWQwMDFlNWM2MzMyZjc1OTMu
LjY3ZTVlNGIyN2EzYWU4MGFiNjY4ZjZjMzQxN2MwZjBjZTZiN2YwNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCBib29sIFdlYlZp
ZXc6OnJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCkKIH0KIAogV2ViVmlldzo6V2ViVmlldyhS
RUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEhX
TkQgcGFyZW50V2luZG93KQotICAgIDogbV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VD
bGllbnRJbXBsPigqdGhpcykpCiB7CiAgICAgcmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvci5oCmluZGV4IGI2ZDRhMDQyMGQ1YTVkYmQ2NDYwODNhZjY3ODgwNTFi
ZjZjYzQ3ZTAuLmYyZDYyZWE5NzkwZjgwN2E2NWI1ZDNlNThmODBiOTdmMDZhZGJmMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNsaWVudCwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgZXhwbGljaXQgV2ViUGF5bWVudENvb3JkaW5hdG9yKFdl
YlBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dl
YkdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9X
ZWJHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDRmODEwY2NmMzhlY2ZhMmM5OWVjYmRhODlkMDQx
Y2ViOGQyMzMzYjguLmFhYjM0NTdjZWQ2NGE1YTkxMGNkYzU2MmFjYzAxMTUwMGQzYzZjYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92
aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBh
ZFByb3ZpZGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6
c2V0SW5pdGlhbEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVwYWREYQog
ICAgICAgICBpZiAoZ2FtZXBhZERhdGFzW2ldLmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgbV9nYW1lcGFkc1tpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBh
ZD4oZ2FtZXBhZERhdGFzW2ldKTsKKyAgICAgICAgbV9nYW1lcGFkc1tpXSA9IG1ha2VVbmlxdWU8
V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGFzW2ldKTsKICAgICAgICAgbV9yYXdHYW1lcGFkc1tpXSA9
IG1fZ2FtZXBhZHNbaV0uZ2V0KCk7CiAgICAgfQogfQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFdl
YkdhbWVwYWRQcm92aWRlcjo6Z2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYgZ2Ft
ZXBhZERhdGEpCiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0p
OwogCi0gICAgbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGEpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEu
aW5kZXgoKV0gPSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhKTsKICAgICBtX3Jh
d0dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5p
bmRleCgpXS5nZXQoKTsKIAogICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBmZDY1
MjNkNmZhN2Q3NTkzZDFiOGQzYjMyYmFiNDYzYTk2OGVhYTI4Li42MzNmMjJmZGZlNDI3MmIzOWRl
MjVlYTBlNGEwYTA0ZDdjZGU2Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9s
b2NhdGlvbk1hbmFnZXIuaAppbmRleCAwYmI0ZjJiNDIxYTNlYzIyODc1NGU2MzgyOWQ0MWFiYmUy
ZTA2ZjhkLi5hNmMyODcxNmFiMTY3OGFmZGQ1NzRjOWRmOWZlMjg2ODYzNDYzMDE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdl
b2xvY2F0aW9uTWFuYWdlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYlByb2Nlc3M7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2Vi
UHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViR2VvbG9j
YXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXIoV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggZjNlYzcyMDg3Y2EyODg2
N2Y1NGQ5ZGYwZjUwZDg3MTAyZTAxNmZhMi4uY2E4NWQ1ODVkY2YxYjc2ZWYwYjhkMTFkNTlhZDY2
MDRhYzNmMTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdLVHlw
ZUlEIFdLQnVuZGxlR2V0VHlwZUlEKCkKIAogdm9pZCBXS0J1bmRsZVNldENsaWVudChXS0J1bmRs
ZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlQ2xpZW50QmFzZSAqd2tDbGllbnQpCiB7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChi
dW5kbGVSZWYpLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xp
ZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlU2V0U2VydmljZVdvcmtlclByb3h5
Q3JlYXRpb25DYWxsYmFjayhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIHZvaWQgKCpjYWxsYmFjayko
dWludDY0X3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCBmMTJhNWJhNzc0ZDZj
YzY4ZDA4NGYxZjYwMjFjZWJmMzgxYWEzYTU4Li5kYzA3NThhZDc1YWYzNjFkZmJlODE2ZWIxMTNm
NDFjN2YwOWQ4MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNzcsNyArNzcs
NyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VHZXRUeXBlSUQoKQogdm9pZCBXS0J1bmRsZVBhZ2VT
ZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250
ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJl
ZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsK
QEAgLTg2LDIyICs4NiwyMiBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VDb250ZQogCiB2b2lkIFdLQnVu
ZGxlUGFnZVNldEVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFn
ZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50ID8gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudD4oKndrQ2xpZW50
KSA6IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50Pigp
KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQod2tDbGllbnQgPyBtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50Pigqd2tDbGllbnQpIDogbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpF
ZGl0b3JDbGllbnQ+KCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEZvcm1DbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUZvcm1DbGllbnRCYXNlKiB3a0NsaWVu
dCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xp
ZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3Rl
ZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZv
cm1DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRl
ckNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBs
KHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudD4od2tDbGllbnQpKTsKIH0KIAog
dm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSZWYsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQogewot
ICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9h
ZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5z
ZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lk
IFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tC
dW5kbGVQYWdlUG9saWN5Q2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMTEsNyArMTExLDcgQEAg
dm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYs
IFdLQnVuZGxlUGFnZVBvbGljeUNsaWUKIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVu
dCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ+
KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVu
ZGxlVUlDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQo
V0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRCYXNl
KiB3a0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAppbmRl
eCBlYmQzZWY1ZjI5MzA4YzE0MTkzYTE4MWI3ZTFlNGE0MjVmZDIxZGQyLi42OWY3YWYyMmI1Njc1
MDRkNGYzMWYwZDdhNzBiODc0ZTA5ZmE1NWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZU92ZXJsYXkuY3BwCkBAIC01NCw2ICs1NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENsaWVu
dFRyYWl0czxXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNsaWVudEJhc2U+IHsKIH0K
IAogY2xhc3MgUGFnZU92ZXJsYXlDbGllbnRJbXBsIDogQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdl
T3ZlcmxheUNsaWVudEJhc2U+LCBwdWJsaWMgV2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQ
YWdlT3ZlcmxheUNsaWVudEltcGwoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEJhc2UqIGNsaWVu
dCkKICAgICB7CkBAIC0yMTYsNyArMjE3LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdlT3Zlcmxh
eUdldFR5cGVJRCgpCiAKIFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgV0tCdW5kbGVQYWdlT3Zlcmxh
eUNyZWF0ZShXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAg
YXV0byBjbGllbnRJbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+
KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBtYWtlVW5pcXVlPFBhZ2VPdmVybGF5
Q2xpZW50SW1wbD4od2tDbGllbnQpOwogICAgIHJldHVybiB0b0FQSSgmV2ViS2l0OjpXZWJQYWdl
T3ZlcmxheTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50SW1wbCkpLmxlYWtSZWYoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9t
YWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KaW5kZXggYWNj
MzVhMjFiNTlmMWFhMzFlMzMwNTFhNjZiYzEzMDU5OTY2OTlkMy4uZDZmZmQxY2NjMDRhOTNhN2Ew
OWQyYjM2NTU5YThmMGMwOTUwZmYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1
bmRsZVBhZ2VCYW5uZXJNYWMubW0KQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgUGFnZUJhbm5lckNsaWVudEltcGwg
OiBBUEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VCYW5uZXJDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VC
YW5uZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgUGFnZUJhbm5lckNsaWVudEltcGwoV0tCdW5kbGVQYWdlQmFubmVyQ2xpZW50
QmFzZSogY2xpZW50KQogICAgIHsKQEAgLTEwMyw3ICsxMDQsNyBAQCBXS0J1bmRsZVBhZ2VCYW5u
ZXJSZWYgV0tCdW5kbGVQYWdlQmFubmVyQ3JlYXRlQmFubmVyV2l0aENBTGF5ZXIoQ0FMYXllciAq
bGF5ZXIsCiAgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpQYWdlQmFubmVyQ2xpZW50SW1wbD4od2tDbGllbnQpOworICAgIGF1dG8gY2xpZW50SW1wbCA9
IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlQmFubmVyQ2xpZW50SW1wbD4od2tDbGllbnQpOwogICAg
IHJldHVybiB0b0FQSSgmV2ViS2l0OjpQYWdlQmFubmVyOjpjcmVhdGUobGF5ZXIsIGhlaWdodCwg
Y2xpZW50SW1wbC5yZWxlYXNlKCkpLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAKaW5kZXggNDIxMDFmOGM4MmNiMmE1NDgzYmFlNGRj
ODQ4MDdiNDE2NWE5MmQ4Ni4uMjJiNDBlNDM5YmJiNjAxNWUxOGFhOGMyNTU4ZTBlNjkzZjVlYjFh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgRE9NT2JqZWN0Q2FjaGVE
YXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRE9NT2JqZWN0
Q2FjaGVEYXRhKEdPYmplY3QqIHdyYXBwZXIpCiAgICAgICAgIDogb2JqZWN0KHdyYXBwZXIpCiAg
ICAgICAgICwgY2FjaGVSZWZlcmVuY2VzKDEpCkBAIC03NywxNSArNzgsOCBAQCBzdGF0aWMgRE9N
T2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwJiBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJz
KCkKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyJiBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFt
ZSYgZnJhbWUpCi17Ci0gICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwOjpBZGRSZXN1
bHQgcmVzdWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpLmFkZCgmZnJhbWUsIG51
bGxwdHIpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVy
PihmcmFtZSk7Ci0gICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotfQotCiBjbGFz
cyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFt
ZURlc3RydWN0aW9uT2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJh
bWUpCiAgICAgICAgIDogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKCZmcmFtZSkKQEAgLTEwNSw3
ICs5OSw3IEBAIGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGlj
IFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlCiAgICAgICAgIGlmIChkb21XaW5kb3cg
JiYgKCFtX2RvbVdpbmRvd09ic2VydmVyIHx8IG1fZG9tV2luZG93T2JzZXJ2ZXItPndpbmRvdygp
ICE9IGRvbVdpbmRvdykpIHsKICAgICAgICAgICAgIC8vIE5ldyBET01XaW5kb3csIGNsZWFyIHRo
ZSBjYWNoZSBhbmQgY3JlYXRlIGEgbmV3IERPTVdpbmRvd09ic2VydmVyLgogICAgICAgICAgICAg
Y2xlYXIoKTsKLSAgICAgICAgICAgIG1fZG9tV2luZG93T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERPTVdpbmRvd09ic2VydmVyPigqZG9tV2luZG93LCAqdGhpcyk7CisgICAgICAgICAgICBt
X2RvbVdpbmRvd09ic2VydmVyID0gbWFrZVVuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdp
bmRvdywgKnRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgbV9vYmplY3RzLmFwcGVuZCgmZGF0
YSk7CkBAIC0xOTEsNiArMTg1LDE0IEBAIGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZl
ciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERPTVdpbmRvd09ic2VydmVyPiBtX2RvbVdpbmRvd09ic2VydmVyOwogfTsK
IAorc3RhdGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciYgZ2V0T3JDcmVhdGVET01PYmpl
Y3RDYWNoZUZyYW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQoreworICAgIERPTU9i
amVjdENhY2hlRnJhbWVPYnNlcnZlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdENh
Y2hlRnJhbWVPYnNlcnZlcnMoKS5hZGQoJmZyYW1lLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUpOworICAgIHJldHVybiAqcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBzdGQ6OnVuaXF1
ZV9wdHI8RE9NT2JqZWN0Q2FjaGVEYXRhPj4gRE9NT2JqZWN0TWFwOwogCiBzdGF0aWMgRE9NT2Jq
ZWN0TWFwJiBkb21PYmplY3RzKCkKQEAgLTIxNSw3ICsyMTcsNyBAQCB2b2lkIERPTU9iamVjdENh
Y2hlOjpwdXQodm9pZCogb2JqZWN0SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQogewogICAgIERPTU9i
amVjdE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdHMoKS5hZGQob2JqZWN0SGFuZGxl
LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19P
QkpFQ1Qod3JhcHBlcikpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKIH0KIAogdm9pZCBE
T01PYmplY3RDYWNoZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3Jh
cHBlcikKQEAgLTIyNCw3ICsyMjYsNyBAQCB2b2lkIERPTU9iamVjdENhY2hlOjpwdXQoV2ViQ29y
ZTo6Tm9kZSogb2JqZWN0SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQogICAgIGlmICghcmVzdWx0Lmlz
TmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBlcikp
OworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hl
RGF0YT4oR19PQkpFQ1Qod3JhcHBlcikpOwogICAgIGlmIChXZWJDb3JlOjpGcmFtZSogZnJhbWUg
PSBvYmplY3RIYW5kbGUtPmRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgZ2V0T3JDcmVhdGVE
T01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIoKmZyYW1lKS5hZGRPYmplY3RDYWNoZURhdGEoKnJl
c3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dEV4dGVuc2lvbk1hbmFnZXIuY3BwCmluZGV4IDRjY2VjNjJlZjBlMTEzMWZhMTNmN2ZiMDYwYzgw
ZTA3ZWU0MjUxYWYuLjRkNzQyZTQwOWJiZmM3Y2ZhYjQwOGNkNjUzOGFlZjlmMjI4ZmQ3MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUo
SW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSwgQVBJOjpPYmplY3QqIHVzZQogICAgIHNjYW5Nb2R1bGVz
KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIG1vZHVsZVBhdGhzKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byBtb2R1
bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0aHNbaV0pOworICAgICAgICBh
dXRvIG1vZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihtb2R1bGVQYXRoc1tpXSk7CiAgICAgICAg
IGlmICghbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYg
KGluaXRpYWxpemVXZWJFeHRlbnNpb24obW9kdWxlLmdldCgpLCB1c2VyRGF0YS5nZXQoKSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0V2ViRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwCmluZGV4IDA0MDcyZWI4NjRkYmUz
NWY4MGRmYzg2YWQwZTg4M2MzZTk5Y2U0NGYuLmNjYjUxZTBkOTY0MGM2NmY4NTk2ZTQ3NDE3MTQw
NThlOTEzOTc2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwCkBA
IC05NCw3ICs5NCw3IEBAIFdlYktpdFdlYkVkaXRvciogd2Via2l0V2ViRWRpdG9yQ3JlYXRlKFdl
YktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiB7CiAgICAgV2ViS2l0V2ViRWRpdG9yKiBlZGl0b3IgPSBX
RUJLSVRfV0VCX0VESVRPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VESVRPUiwgbnVs
bHB0cikpOwogICAgIGVkaXRvci0+cHJpdi0+d2ViUGFnZSA9IHdlYlBhZ2U7Ci0gICAgd2Via2l0
V2ViUGFnZUdldFBhZ2Uod2ViUGFnZSktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8UGFnZUVkaXRvckNsaWVudD4oZWRpdG9yKSk7CisgICAgd2Via2l0V2Vi
UGFnZUdldFBhZ2Uod2ViUGFnZSktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG1ha2VV
bmlxdWU8UGFnZUVkaXRvckNsaWVudD4oZWRpdG9yKSk7CiAgICAgcmV0dXJuIGVkaXRvcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAppbmRleCA0YTIz
YmY1NjAxMDdjMzFmMWE0ZGUyYzk2MTI5OWE3MDEwODE3NTAxLi5lMzA2ZTNmZWYyNjMxZDU0NjY1
NTcxMTZlNWU0ODdkMzcxYzc4NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RXh0ZW5zaW9uLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIGNsYXNzIFdlYkV4dGVuc2lvbkluamVj
dGVkQnVuZGxlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVu
CiBXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNyZWF0ZShJbmplY3RlZEJ1
bmRsZSogYnVuZGxlKQogewogICAgIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uID0gV0VC
S0lUX1dFQl9FWFRFTlNJT04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FWFRFTlNJT04s
IE5VTEwpKTsKLSAgICBidW5kbGUtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkV4dGVu
c2lvbkluamVjdGVkQnVuZGxlQ2xpZW50PihleHRlbnNpb24pKTsKKyAgICBidW5kbGUtPnNldENs
aWVudChtYWtlVW5pcXVlPFdlYkV4dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xpZW50PihleHRlbnNp
b24pKTsKICAgICByZXR1cm4gZXh0ZW5zaW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViUGFnZS5jcHAKaW5kZXggY2ZjNTAzMWVkNmU0YTI5NTRmZTAyYTAzZGE4N2ExNjFjZDJkMzA4
Mi4uYzkyMDRiMjM5ODFkN2YxN2FkMDczYjllZDQxMmE4Nzc2ODVjZTdkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtOTUsNiArOTUsNyBAQCBXRUJLSVRfREVGSU5F
X1RZUEUoV2ViS2l0V2ViUGFnZSwgd2Via2l0X3dlYl9wYWdlLCBHX1RZUEVfT0JKRUNUKQogc3Rh
dGljIHZvaWQgd2ViRnJhbWVEZXN0cm95ZWQoV2ViRnJhbWUqKTsKIAogY2xhc3MgV2ViS2l0RnJh
bWVXcmFwcGVyIGZpbmFsOiBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJLaXRGcmFtZVdyYXBwZXIo
V2ViRnJhbWUmIHdlYkZyYW1lKQogICAgICAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcih3
ZWJGcmFtZS5jb3JlRnJhbWUoKSkKQEAgLTEyOCw3ICsxMjksNyBAQCBzdGF0aWMgV2ViS2l0RnJh
bWUqIHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUoV2ViRnJhbWUqIHdlYkZyYW1lKQogICAgIGlmICh3
cmFwcGVyUHRyKQogICAgICAgICByZXR1cm4gd3JhcHBlclB0ci0+d2Via2l0RnJhbWUoKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+IHdyYXBwZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdEZyYW1lV3JhcHBlcj4oKndlYkZyYW1lKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gbWFrZVVuaXF1ZTxXZWJLaXRGcmFt
ZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CiAgICAgd3JhcHBlclB0ciA9IHdyYXBwZXIuZ2V0KCk7CiAg
ICAgd2ViRnJhbWVNYXAoKS5zZXQod2ViRnJhbWUsIFdURk1vdmUod3JhcHBlcikpOwogICAgIHJl
dHVybiB3cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgpOwpAQCAtNjc4LDExICs2NzksMTEgQEAgV2Vi
S2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJQYWdlKiB3ZWJQYWdlKQogICAgIFdl
YktpdFdlYlBhZ2UqIHBhZ2UgPSBXRUJLSVRfV0VCX1BBR0UoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9QQUdFLCBOVUxMKSk7CiAgICAgcGFnZS0+cHJpdi0+d2ViUGFnZSA9IHdlYlBhZ2U7
CiAKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdl
TG9hZGVyQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250
ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb250ZXh0TWVudUNsaWVudD4ocGFn
ZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOworICAg
IHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8
UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFBhZ2VMb2FkZXJDbGllbnQ+KHBhZ2Up
KTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VV
bmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5q
ZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFBhZ2VVSUNsaWVudD4ocGFnZSkpOworICAg
IHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPFBhZ2VGb3Jt
Q2xpZW50PihwYWdlKSk7CiAKICAgICByZXR1cm4gcGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJh
dG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01UZXh0SXRlcmF0b3IubW0KaW5kZXggODEwNTVjZTdmZGViYTMxOGRhYjA2ODI2MzRjNmJk
ODRhMzdmYWU4Yy4uMDg0ZjMwMDVkNjEwM2Q0ZTI1MDMzYzI1NmM3MGMwZTA2NDA0MWNkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01UZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KQEAgLTQ1LDcgKzQ1LDcgQEAg
LSAoaWQpaW5pdFdpdGhSYW5nZTooV0tET01SYW5nZSAqKXJhbmdlCiAgICAgaWYgKCFzZWxmKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7
CisgICAgX3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihX
ZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0ODgwMGJiMzE3OTA2NWU0ZTczMjkz
MDY5MDU0NjgwZTQzNGFmMWZmLi40MjAyMzk2YWJhZmFmMzBkNzE4OWFlYjY4NTA5ZWEyNzE3MWI5
NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC01NDQsNyArNTQ0LDcg
QEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURl
bGVnYXRlUHJpdmF0ZT4pZm9ybURlbGVnYXQKICAgICB9OwogCiAgICAgaWYgKGZvcm1EZWxlZ2F0
ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVu
ZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAg
ICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobnVsbHB0cik7CiB9CkBA
IC02NzMsNyArNjczLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQ
cm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICB9OwogCiAgICAg
aWYgKGVkaXRpbmdEZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVlPENsaWVudD4oc2VsZikp
OwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMjBjZTU1OTExZDcwNjUxYzMz
NWE3MGFjZjI0ZTViZGZjMjFiZDYzMS4uOTk3OWQ2Mzg0ZGZmNWM5ODA1OTFmMjkwODNjOTM3Mjk2
MzQ0YTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgUmVmUHRy
PEluamVjdGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlKFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmEKIEluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZShjb25zdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYXRoKHBh
cmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgICwgbV9wbGF0Zm9ybUJ1bmRsZSgwKQot
ICAgICwgbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGll
bnQ+KCkpCisgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNs
aWVudD4oKSkKIHsKIH0KIApAQCAtMTE0LDcgKzExNCw3IEBAIEluamVjdGVkQnVuZGxlOjp+SW5q
ZWN0ZWRCdW5kbGUoKQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICgh
Y2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6Q2xpZW50PigpOworICAgICAgICBtX2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQgPSBX
VEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggMGNh
NWVhNmQyYWJlNTcyMTU0ZDIxYmVkMGNjOWEwNTNlN2Q2NmMxOC4uYmZiM2QwNDUxNDM3MzZjMzFk
Zjk4OGFiMWIwMGRlNDJiODUzMDg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaApA
QCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlByb2Nlc3M7CiAK
IGNsYXNzIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBs
ZW1lbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0
IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIoV2ViUHJvY2VzcyYpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCmluZGV4IGQ3YzVjNjgzNDRiNzI3Mzhk
OTQ5N2RmMDEyY2EzNzZiYjg0MTg4ZGEuLmIwYmQ1MzRjZTE5ZDczODYxZDgxNzZhODIwNWNkY2U2
MTk1ZmQwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwog
CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPiwgcHJpdmF0ZSBXZWJD
b3JlOjpNZWRpYUNhblN0YXJ0TGlzdGVuZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cihXZWJQYWdlJik7CiAgICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpID0g
ZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzMzNTI3NjU4NzFkODI1NWEyM2RiN2I1NWU2ZDQ0ZWU3
MzM5MjJkNy4uMmU1N2FmMjQ4M2JkMzZiM2RkODVlNGVjMThkZGUxMGY0NDM2ZTg2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTEzMiwzOCArMTMyLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6c2VuZE1lc3NhZ2UoVCYmIG1lc3NhZ2UsIHNpemVfdCBieXRlCiAgICAg
c2VuZFdpdGhBc3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBhdXRvIGJ5dGVMZW5ndGgg
PSBtZXNzYWdlLnNpemVJbkJ5dGVzKCk7Ci0gICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50
KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5k
aW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0
d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOwot
ICAgIGVsc2UKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ01lc3NhZ2U+KG1lc3NhZ2UpKTsKLQotICAgIHJldHVybiBTZW5kU3VjY2VzczsK
LX0KLQotV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5k
KGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGJ5dGVMZW5ndGgpCi17Ci0gICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50
KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZhaWw7Ci0KLSAgICBpZiAobV9wZW5k
aW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0
d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGluZ01l
c3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRh
LCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19
Ci0KIGNsYXNzIEJsb2JMb2FkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RmlsZVJlYWRlckxv
YWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
QmxvYkxvYWRlcihXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6OkJsb2ImIGJs
b2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAg
ICAgOiBtX2xvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+
KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKKyAg
ICAgICAgOiBtX2xvYWRlcihtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI+KFdl
YkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKSkKICAgICAg
ICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAg
IHsKICAgICAgICAgbV9sb2FkZXItPnN0YXJ0KGRvY3VtZW50LCBibG9iKTsKQEAgLTIyNiw3ICsx
OTksNyBAQCBjbGFzcyBQZW5kaW5nTWVzc2FnZSB7CiAKICAgICBQZW5kaW5nTWVzc2FnZShXZWJD
b3JlOjpEb2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBtX3R5cGUoVHlw
ZTo6QmxvYikKLSAgICAgICAgLCBtX2Jsb2JMb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9iTG9h
ZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKQorICAgICAg
ICAsIG1fYmxvYkxvYWRlcihtYWtlVW5pcXVlPEJsb2JMb2FkZXI+KGRvY3VtZW50LCBibG9iLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpCiAgICAgewogICAgIH0KIApAQCAtMjQ0LDEzICsy
MTcsNDAgQEAgY2xhc3MgUGVuZGluZ01lc3NhZ2UgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9i
TG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiB9OwogCitXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGF1
dG8gYnl0ZUxlbmd0aCA9IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMoKTsKKyAgICBpZiAoIWluY3JlYXNl
QnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAgICAgIHJldHVybiBTZW5kRmFpbDsKKwor
ICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHNlbmRNZXNzYWdl
KE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IG1lc3NhZ2UgfSwg
Ynl0ZUxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQo
bWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2FnZSkpOworCisgICAgcmV0dXJuIFNlbmRT
dWNjZXNzOworfQorCitXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5u
ZWw6OnNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK3sKKyAgICBpZiAoIWluY3JlYXNlQnVmZmVy
ZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAgICAgIHJldHVybiBTZW5kRmFpbDsKKworICAgIGlm
IChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHNlbmRNZXNzYWdlKE1lc3Nh
Z2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9m
ZnNldCwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KGJpbmFyeURh
dGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsK
K30KKwogV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5k
KFdlYkNvcmU6OkJsb2ImIGJsb2IpCiB7CiAgICAgLy8gQXZvaWQgdGhlIEJsb2IgcXVldWUgYW5k
IGxvYWRpbmcgZm9yIGVtcHR5IGJsb2JzLgogICAgIGlmICghYmxvYi5zaXplKCkpCiAgICAgICAg
IHJldHVybiBzZW5kKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShibG9iLnNpemUoKSwgMSksIDAs
IDApOwogCi0gICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0aGlzXSB7CisgICAgbV9wZW5k
aW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQu
Z2V0KCksIGJsb2IsIFt0aGlzXSB7CiAgICAgICAgIHdoaWxlICghbV9wZW5kaW5nTWVzc2FnZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvJiBtZXNzYWdlID0gbV9wZW5kaW5nTWVzc2Fn
ZXMuZmlyc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggMDk0YWM3MWY3ZTVl
ZmZhYjc0ODVmY2VmY2FlNTQ4OTNkYjNlMDUwNi4uN2VjMzdjZGYwOWQzOTBhMzgyN2E2OWNhM2Y2
MGE2YzMwNTZkYTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zNyw2ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNz
IEFzeW5jUmVzb2x2ZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6QXN5bmNSZXNvbHZlckZhY3Rv
cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKICAgICBydGM6OkFz
eW5jUmVzb2x2ZXJJbnRlcmZhY2UqIENyZWF0ZSgpIGZpbmFsCiAgICAgewpAQCAtNDYsNyArNDcs
NyBAQCBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OkFzeW5jUmVz
b2x2ZXJGYWN0b3J5IHsKIAogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZh
Y3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJU
Q0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBXZWJDb3JlOjpM
aWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCksICpzb2NrZXRGYWN0
b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVzb2x2
ZXJGYWN0b3J5PigpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNy
ZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJX
ZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1
cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CiB9CiAKIHZvaWQg
TGliV2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENSZXNvbHZlci5oCmluZGV4IDVkNjM4M2Y2YjUwNjUzYjVjNjcwNzA3MDVjNmMxMDI4NzBm
YTAyMzEuLjM5OTA2OTlkMDc3OGZlYjE3YjBjYThlNjA3ODE0MTA4YTVjMDBhZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNv
bHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENSZXNvbHZlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTGliV2ViUlRDU29ja2V0RmFjdG9yeTsKIAogY2xhc3MgTGliV2ViUlRDUmVzb2x2ZXIgZmlu
YWwgOiBwdWJsaWMgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENSZXNvbHZlcih1aW50NjRfdCBp
ZGVudGlmaWVyKSA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1NvY2tldEZhY3RvcnkuY3BwCmluZGV4IGY4YjdlZDIyOWM0ZjZmMmRjMDM2MTMyY2M5NmU0
MTFlZWNhNTcwMmUuLjIzNTgyZGU3NTliOTg0NWViN2ZlNDA2NDQzNjVlZmJjMTliNzVkMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3Rh
dGljIGlubGluZSBydGM6OlNvY2tldEFkZHJlc3MgcHJlcGFyZVNvY2tldEFkZHJlc3MoY29uc3Qg
cnRjOjpTb2NrZXRBZGRyZXNzJgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENT
b2NrZXRGYWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRy
ZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0LCBpbnQgb3B0
aW9ucykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29j
a2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6
VHlwZTo6U2VydmVyVENQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0
byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVT
b2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwgYWRkcmVz
cywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVu
dGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlm
aWVyID0gc29ja2V0LT5pZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVz
cyhhZGRyZXNzLCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1h
eFBvcnQsIG9wdGlvbnNdKCkgewpAQCAtNjYsNyArNjYsNyBAQCBydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoY29uc3Qg
cnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5Ojpj
cmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZf
dCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRp
ZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRk
cmVzcygpKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Pigq
dGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6
VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2NrZXRzLnNldChz
b2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJl
YWQoW2lkZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9IHByZXBhcmVT
b2NrZXRBZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKSwg
bWluUG9ydCwgbWF4UG9ydF0oKSB7CkBAIC04MCw3ICs4MCw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6
OlNvY2tlCiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6
OmNyZWF0ZUNsaWVudFRjcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGxvY2FsQWRk
cmVzcywgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIHVzZXJBZ2VudCwgaW50IG9wdGlvbnMpCiB7Ci0gICAg
YXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsr
c191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OkNsaWVudFRD
UCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VV
bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIs
IExpYldlYlJUQ1NvY2tldDo6VHlwZTo6Q2xpZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFk
ZHJlc3MpOwogICAgIHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05O
RUNUSU5HKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQu
Z2V0KCkpOwogCkBAIC05Niw3ICs5Niw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldl
YlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUNsaWVudFRjcFNvY2tldChjb25zdCBydGM6CiAKIHJ0
Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZU5ld0Nv
bm5lY3Rpb25Tb2NrZXQoTGliV2ViUlRDU29ja2V0JiBzZXJ2ZXJTb2NrZXQsIHVpbnQ2NF90IG5l
d0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJl
bW90ZUFkZHJlc3MpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENT
b2NrZXQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5sb2NhbEFkZHJl
c3MoKSwgcmVtb3RlQWRkcmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldl
YlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENT
b2NrZXQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5sb2NhbEFkZHJl
c3MoKSwgcmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENTb2Nr
ZXQ6OlNUQVRFX0NPTk5FQ1RFRCk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZp
ZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTGliV2ViUlRD
U29ja2V0RmFjdG9yeTo6ZGV0YWNoKExpYldlYlJUQ1NvY2tldCYgc29ja2V0KQogCiBydGM6OkFz
eW5jUmVzb2x2ZXJJbnRlcmZhY2UqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUFzeW5j
UmVzb2x2ZXIoKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1Jlc29sdmVyPigrK3NfdW5pcXVlUmVzb2x2ZXJJZGVudGlmaWVyKTsKKyAgICBhdXRvIHJl
c29sdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytzX3VuaXF1ZVJlc29sdmVy
SWRlbnRpZmllcik7CiAgICAgYXV0byogcmVzb2x2ZXJQb2ludGVyID0gcmVzb2x2ZXIuZ2V0KCk7
CiAgICAgbV9yZXNvbHZlcnMuc2V0KHJlc29sdmVyUG9pbnRlci0+aWRlbnRpZmllcigpLCBXVEZN
b3ZlKHJlc29sdmVyKSk7CiAgICAgcmV0dXJuIHJlc29sdmVyUG9pbnRlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuaAppbmRleCAyZDFlODQyNDdiZDBhMzBjOTRkMWYyZWEzMDFkZDU1ZDAy
YTZlMDc2Li5iMjcxM2Y0NmMxZmMxM2M5ZjI3YmJlMzljYTVkYzUxODUwYjE4M2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFdlYlBhZ2U7
CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIDogcHVi
bGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3Mu
Y3BwCmluZGV4IDE2YTFhN2Y4MzQ0NjA1M2YzM2Q2NTRlODMzMzIyOTUwZWU5OTRkNzIuLmQ3M2Yx
ZjE2Zjg5MDc2OWM3MmNjOWRkNDQwZDIyOTIxZmY1ZmZhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rp
b25Qcm90ZWN0b3IgewogICAgIGV4cGxpY2l0IFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKE5l
dHNjYXBlUGx1Z2luKiBwbHVnaW4pCiAgICAgewogICAgICAgICBpZiAocGx1Z2luKQotICAgICAg
ICAgICAgbV9wcm90ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xsZXI6OlBs
dWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihwbHVnaW4pLT5j
b250cm9sbGVyKCkpOworICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBtYWtlVW5pcXVlPFBsdWdp
bkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2FzdDxQbHVn
aW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpOwogICAgIH0KICAgICAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjlhM2M5M2YxMzI2ZmE0YzZmN2ZlYmY4YWIxYjJjYTRj
Nzc2YmMwZS4uNTlmNDgyNTFmMjg4NTRjNmQxNjgwYjFkNjRkZmFhNWE0N2M2ODEwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIHVpbnQzMl90IE5ldHNjYXBl
UGx1Z2luOjpzY2hlZHVsZVRpbWVyKHVuc2lnbmVkIGludGVydmFsLCBib29sIHJlcGVhdCwgdm9p
ZCAoKnRpCiAgICAgLy8gRklYTUU6IEhhbmRsZSB3cmFwcGluZyBhcm91bmQuCiAgICAgdW5zaWdu
ZWQgdGltZXJJRCA9ICsrbV9uZXh0VGltZXJJRDsKIAotICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1
bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBp
bnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogICAgIAogICAgIC8vIEZJWE1FOiBCYXNlZCBv
biB0aGUgcGx1Zy1pbiB2aXNpYmlsaXR5LCBmaWd1cmUgb3V0IGlmIHdlIHNob3VsZCB0aHJvdHRs
ZSB0aGUgdGltZXIsIG9yIGlmIHdlIHNob3VsZCBzdGFydCBpdCBhdCBhbGwuCiAgICAgdGltZXIt
PnN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBlMGFiYzJjN2I0MTI5OTMwMDJiYmFi
OGJkZmFiN2YyNjUxYWRjNTdmLi5iNmM3NmI2ZWQ3MTRjYWFhM2E0MWRkZTQxYzFkNmExMDRmYjdh
ZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTMwOCw2ICszMDgsNyBAQCBjbGFzcyBOZXRz
Y2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4gewogICAgIFZlY3Rvcjxib29sLCA4PiBtX3BvcHVw
RW5hYmxlZFN0YXRlczsKIAogICAgIGNsYXNzIFRpbWVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbWVyKTsKIAogICAg
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAwNDk2Mjhm
NWM2MjcwMmU0ZDVkNDExMTgyMDEyM2JhNWY0Yjk2NTI0Li5iZGFhMTQ0Nzg0MjI2OTVkNTBlYTg0
OGFhZmNjYmNlMTJkMmFkOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRh
dGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAobV90cmFuc2Zlck1v
ZGUgIT0gTlBfQVNGSUxFT05MWSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAg
ICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1aW50OF90
Pj4oKTsKKyAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8dWlu
dDhfdD4+KCk7CiAKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2VydmVDYXBhY2l0eShtX2Rl
bGl2ZXJ5RGF0YS0+c2l6ZSgpICsgbGVuZ3RoKTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPmFw
cGVuZChieXRlcywgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3Bw
CmluZGV4IDQ0ZDExYjU3YzNlYTZkNTE4YzE4ZDA0YjgyMmQyODZkNTNlOTY4Y2YuLjA3ZDU1NmMz
YjdmYzYzNzE5YzJhMjU1OWUwYWFkNmMyMjZjMDdjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmNwcApAQCAtMTM2LDEwICsxMzYsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPE5l
dHNjYXBlUGx1Z2luWDExPiBOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2lu
JiBwbHUKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAocGx1Z2luLmlzV2luZG93ZWQoKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdp
biwgZGlzcGxheSwgd2luZG93SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXRzY2Fw
ZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3Bs
YXkpOwogfQogCiBOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQ
bHVnaW4mIHBsdWdpbiwgRGlzcGxheSogZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1
Z2luWDExLmgKaW5kZXggNDFlOWI2YzlkODRjYWE0OTU4ZTM4NWI5ZWQ4MGZkZDdlMTFkY2E1Yi4u
MWY5ZmQ4N2ZhM2EzMGM5MzYwNDM4ZWQ1OTdkYzMyYzg5NTg3YWYxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBOZXRzY2FwZVBsdWdpbjsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5YMTEgZmluYWwg
OiBwdWJsaWMgTmV0c2NhcGVQbHVnaW5Vbml4IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDEx
PiBjcmVhdGUoTmV0c2NhcGVQbHVnaW4mKTsKICAgICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2Fw
ZVBsdWdpbiYsIERpc3BsYXkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCBhMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEz
M2I4MWRmZjRkMTc2YjM1Li5iNTcyYWEzYTUzNmQ0ODVjYjliODE3YTE2ZTAyYzMzMmM0YmMyMTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29u
dHJvbGxlci5oCkBAIC0xNTksNiArMTU5LDcgQEAgY2xhc3MgUGx1Z2luQ29udHJvbGxlciB7CiAK
ICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRlbGF5aW5nIGRlc3RydWN0aW9uIG9mIGEgcGx1Zy1p
bi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7CisgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUGx1Z2lu
RGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoUGx1Z2luQ29udHJvbGxlciogcGx1Z2luQ29udHJvbGxlcikK
ICAgICAgICAgICAgIDogbV9wbHVnaW5Db250cm9sbGVyKHBsdWdpbkNvbnRyb2xsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXgg
ZjM3YzJjYzI0ZTNkZDk3NjNmM2ViZGQ2MzJkOGJmZGI3NzE0NDM0Ny4uOWFiNTgzNzMwYjg5ZGJk
OTYwMWQ2NTIwZWY4ZjliMGJlMDA2ZGM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtOTUsNyArOTUsNyBAQCBib29sIFBsdWdp
blByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgbV9j
b25uZWN0aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlzKTsKIAogICAgIC8vIEFzayB0aGUgcGx1Zy1p
biBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4uCi0gICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+
KCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gbWFrZVVuaXF1ZTxQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7CiAKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMtPnBsdWdpbkluc3RhbmNlSUQgPSBtX3BsdWdpbkluc3RhbmNlSUQ7CiAgICAg
bV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT53aW5kb3dOUE9iamVjdElEID0gd2lu
ZG93TlBPYmplY3RJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCA3YWI4OTY2ZGI5MDVhZGQxMjM5NDgxNjUwYjE5ZGU0YTdlN2Qy
MjNmLi4xMTlkMmI5MGMyYjQ0MjMxZjI1Njk1N2U2MmRkY2E4ZjEzMGZjNzMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtODk4LDcg
Kzg5OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3JlYXRlV2Vi
RXZlbnQoTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgaWYgKGV2ZW50Lm1ldGFLZXkoKSkK
ICAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJFdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBl
dmVudC5idXR0b25zKCksIG1fcGx1Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVu
dC5vZmZzZXRYKCksIGV2ZW50Lm9mZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlvbigpLCAw
LCAwLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5idXR0b25z
KCksIG1fcGx1Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVudC5vZmZzZXRYKCks
IGV2ZW50Lm9mZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlj
a0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7CiB9CiAKIHZvaWQgUGx1Z2luVmll
dzo6aGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDZmYzA5YzRmNjViMjQ1YjYwYmY0ZDRmNTk3YTlmOTBhZDRkMGFhZjkuLmEx
ZmYwMzNiMjA0ZWFmYWRjODg4YTgyMDhhODlmNzlkYTAwYmNmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2aWNlV29y
a2VyQ29udAogCiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBtb3ZlZCBkaXJl
Y3RseSB0byBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uCiAgICAgLy8gSWYg
aXQgd2VyZW4ndCBmb3IgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50J3MgZGVwZW5kZW5j
ZSBvbiBXZWJEb2N1bWVudExvYWRlciwgdGhpcyBjb3VsZCBhbHJlYWR5IGhhcHBlbi4KLSAgICBh
dXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRnJh
bWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNT
ZXJ2aWNlV29ya2VySUQsIGVmZmVjdGl2ZVVzZXJBZ2VudCk7CisgICAgYXV0byBmcmFtZUxvYWRl
ckNsaWVudCA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PigqdGhp
cywgc2Vzc2lvbklELCBtX3BhZ2VJRCwgKyttX3ByZXZpb3VzU2VydmljZVdvcmtlcklELCBlZmZl
Y3RpdmVVc2VyQWdlbnQpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1h
aW5GcmFtZSA9IGZyYW1lTG9hZGVyQ2xpZW50LmdldCgpOwogICAgIG1fbG9hZGVycy5hZGQoV1RG
TW92ZShmcmFtZUxvYWRlckNsaWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKaW5kZXggOTIwZGVkMDQwY2U1NjE4MzM5
OWY2YzkzYjgyZWIzNmRmNzMwNDk2YS4uOTMwZTQ2MTgxOWUxODZmNWE4MGQ4ZjY3MTZmYjExOGM0
ZGMwZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dPcmlnaW5UYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXT3JpZ2luVGFibGUuaApAQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNXT3JpZ2luVGFibGUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNXT3JpZ2luVGFibGUo
KSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA0
ZGY2ZjAxOWU1NTg1NzU1MmM4NGRmYWI5MjUwYzQwMWE4NGNiODM1Li5mNGNmMjkxYTQwMTBiMWU3
YzI0MTY3ZDQ1NGI1NGVjNGI4NjRjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UqKTsKICAg
ICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggM2M4NzJmNWFkZjM5YmVhY2QzYTcwNjY3YjI2ODlkMzhjOWIxMTEyZS4uNGQyNzQ3
Njg2MjBlNWE0NmViOTUwOGZkZTQ3YjU3MWU3OTZmMTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTc5Myw3ICs3OTMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLAogCiBzdGQ6OnVu
aXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbGllbnQmIGNsaWVudCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2Us
ICZjbGllbnQsIGluaXRpYWxDb2xvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29sb3JD
aG9vc2VyPigmbV9wYWdlLCAmY2xpZW50LCBpbml0aWFsQ29sb3IpOwogfQogCiAjZW5kaWYKQEAg
LTgwMiw3ICs4MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbAogCiBzdGQ6OnVuaXF1ZV9w
dHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBjbGllbnQpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
PigmbV9wYWdlLCAmY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAppbmRleCBjZWQzNmE2YzI1YjdlNGY4MzQ0YTU4OTk0MDA2NzkxZjdjYzkyNzZmLi5k
NDU1NmQ5ODdhMzY2ZDE4MTE0MDhhZDkwYmY3YTM0N2RkNTk4ZGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViQ2hyb21lQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21l
Q2xpZW50KFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCA2YzI5
YjRlMDgxMjZlN2NkNjY3OWNjNDcwMjM1YzU1NzRkZTUwZDJlLi5jMWM4OWNkOTllODdhZWU4NGVk
NTc0NmMyZTgxZjY0N2U4MmYxZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAt
MzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNz
IFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0
TWVudUNsaWVudChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgKaW5kZXggMWFkNGMzZGUyY2I3ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVkYTgyMS4uYjI0
ZWNmNzZjNDU1MjRmNjBkODZhZWQ2ZmIxZWNmNmYwZjM5NDIxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBA
IC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xh
c3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMjY4
MTAyZmVhMWE3NzU3ZWQ3ZTE2ZGRlY2NlM2NhZDhlZTZiZDQzNS4uZDIyZDRjYjczZjI5NzNmNTY1
NWE4NzNlYmQyMmQ2YjAwNmFlMGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMzcsNiArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkVkaXRv
ckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJD
b3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9w
YWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDMwZjVhZDZiNGJjMmE2
MzhkNjAzN2Y4ZWM5NzM4MDlkZjZlNTZiMTguLjM1YTMxZmMyYTM0NGIzMTI4NzMwNTA0YjdmZTdh
MTE1ZjAxMWI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMiw2ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViR2VvbG9j
YXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50
KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCmluZGV4IDdjZGFhY2QxZmMxZDQ2ZDY1ZWFkYzNmM2E2MTM0YWEzNTU4YTJkMTEu
LmQ2N2I2MmMwMmU2ODgzYjQ0ODY1ZmJhMTU4NTE2ZWEwY2JjYjVjNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlm
ICghbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50KQotICAgICAgICBtX3BhaW50SW5kaWNhdG9y
TGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVu
dD4oKnRoaXMpOworICAgICAgICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBtYWtlVW5p
cXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRoaXMpOwogCiAgICAgYXV0byBwYWlu
dExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3Jh
cGhpY3NMYXllckZhY3RvcnkoKSwgKm1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCk7CiAgICAg
CkBAIC0xNjIsOSArMTYyLDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHBhaW50TGF5ZXItPnNldEJhY2tncm91bmRD
b2xvcihDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAwLjJmKSk7CiAKICAgICBLZXlmcmFtZVZhbHVl
TGlzdCBmYWRlS2V5ZnJhbWVzKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICBmYWRlS2V5
ZnJhbWVzLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEp
KTsKKyAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFs
dWU+KDAsIDEpKTsKIAotICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8
RmxvYXRBbmltYXRpb25WYWx1ZT4oMC4yNSwgMCkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0
KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMC4yNSwgMCkpOwogICAgIAogICAgIGF1
dG8gb3BhY2l0eUFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CiAgICAgb3BhY2l0eUFu
aW1hdGlvbi0+c2V0RHVyYXRpb24oMC4yNSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
ZjVlY2M2NGM5MjNmMzg2YzUwZTdiNTI5NzdlZmMwOTllMGJjZmFkNi4uMjdjM2VlMTQyZTE2MTZl
NDM1ZjQ4ZDQxZjI3MjcxNWZlOGUwMzgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAt
NDIsNiArNDIsNyBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVy
Q2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50LCBwcml2YXRlIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogZnJpZW5kIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JM
YXllckNsaWVudDsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViUGFnZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCA1MzNiZTg0
MGNhZDcxNDU1NWRhZjBhYTIwNzI4YTNjOTMzNTVjOWJlLi40YmIzN2ZkZDYwNzc3NGVkODA5YTk2
N2E3NzUxNWZiYWZiNmVmNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggMTYzN2FkMTA5N2Q3NjQ5ZTUw
ZGY3NGY1ZTA2MjI3MjcxZmFiODQ1YS4uMDBjYzBhMDhkOTI2MDRmZGRmYjVjYTYyZjZiODg1OTVj
MzFhYjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dChXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKaW5kZXggNzkwMDg0Y2U0OGQyMjZiMTBlNjY1
YjgyODQ0MzQ5ZmRhYWZmZWU0Ni4uNjlmMGFlODI3OTUwN2I3Mjk2NWY2NWMyMTY4NzNjNDgxYWRm
NGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcApAQCAtNDUsNyArNDUs
NyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OmFkZE92ZXJyaWRlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cgogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vdmVy
cmlkZXNNYXAuYWRkKHBhc3RlYm9hcmROYW1lLCBudWxscHRyKTsKIAogICAgIGlmIChhZGRSZXN1
bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxTdHJpbmcs
IFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3Ry
aW5nLCBWZWN0b3I8dWludDhfdD4+PigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1h
cDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBtYWtlVW5pcXVlPEhhc2hNYXA8
U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PigpOwogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gV1RGTW92ZSh0eXBlTWFwKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAppbmRl
eCBmNmUwMTQ5NTdlZGMyNzdkYjk4MzczMTI3ZWMxMDYzZTkzNTU4Y2I4Li5jZjkwYTVkZmNmZGE2
M2VjYjk4OTdjYzY2ZDBkNDgxMjk0NDgxM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2Vi
UGx1Z0luQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlBsdWdJbkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViUGx1Z0luQ2xpZW50
KFdlYlBhZ2UmKTsKICAgICB2aXJ0dWFsIH5XZWJQbHVnSW5DbGllbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
cm9ncmVzc1RyYWNrZXJDbGllbnQuaAppbmRleCA1ZGQ2NWJmYTBkNTBjY2ZkYjE0NjFmZWIzZmU1
MjQxZmNhYTBmYmE2Li42M2Q3NzRlNWE5NDI3YzczNWI1MjQ5MGJkMDFjZDc5YWI3NGExMGU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlckNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViUHJvZ3Jl
c3NUcmFja2VyQ2xpZW50KFdlYlBhZ2UmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQuaAppbmRleCBlYWQxN2QzMGYwNTkwZDc0NDY3MjA1NWNhZDc3ZDk1YzZkMGE0Nzcw
Li43YmQ4NzU5MDVhNjVjNzdkOTZjM2Y3ODg0MDAxODU4MmNmYWY3NmM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKICAgICAKIGNsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudChX
ZWJQYWdlJiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5oCmluZGV4IDEwOTMwNDUzY2U3OTdlZGQ5MGRlNzZmMDM1NGI5YTFkNDA2ZjJlNmUuLjY5NTIx
NzRiOTEyYzk3MWUzNTc4NmUyN2M0ODIyNWQyZmNhMTQwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xp
ZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlh
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJV
c2VyTWVkaWFDbGllbnQoV2ViUGFnZSYpOwogICAgIH5XZWJVc2VyTWVkaWFDbGllbnQoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgKaW5kZXggMDBhMWUyZThlMjYz
MzU2M2MzMDY5OThkZDE1YTIxOGI5NmQxNjUxMi4uMDc0MTNjZmM5Mzk4NWZlNWQ5OWU5NDA2OGYx
NjE1ZjRiMjQ0YzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgK
QEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBj
bGFzcyBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFRleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eShXZWJQYWdlJik7CiAgICAgflRleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDljZmZjYzlhOWZkMmI2NDQ0
OTIyZjg1NGFkOTdkMWQzMzFlNzBiMGUuLmIyNDU4MWM5N2U3YTg4MTZmNDZhZjkzMTlhOTFlYTIx
YjcyYmQ2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lk
IERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShHcmFwaGljc0xheQogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRMYXll
ckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgfSBlbHNlIHsKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91
bmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQYWdlKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
ID0gbWFrZVVuaXF1ZTxMYXllclRyZWVIb3N0PihtX3dlYlBhZ2UpOwogI2Vsc2UKICAgICAgICAg
bV9sYXllclRyZWVIb3N0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmluZGV4IGMwNzM5NmYw
MmYxZmE2NWY0NWFjZWU3MmYxMzRmNGZiMmQ5ZTg5MDkuLjUzNThjZDY4NjNiMzIyNjk1OGVlMjc0
ZWZkMDMyYWQyMDA2NGRkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3Qg
V2ViUGFnZQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uOgotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2ViUGFn
ZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbmRpZgogICAgIGNhc2Ug
RHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPih3
ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykgfHwg
VVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlQ29vcmRpbmF0ZWRH
cmFwaGljczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJhbWV0
ZXJzKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKaW5kZXggMGYyNjQwM2ViYjcwYTgxMWIxOGU5ODc5NWUx
OWRlNzc0MGJlODM2MC4uMWE1MzVmMTdkOTdmNjY2ODM5NzI2OWE4NmUyODU3YjI5Yjk3MmEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsK
IAogY2xhc3MgRmluZENvbnRyb2xsZXIgOiBwcml2YXRlIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZpbmRDb250cm9sbGVyKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA0NTJmNTNiY2VkYzAwNDdmNzMzZDFj
MzRiY2Q3NjUxMTkyY2I4YmU2Li40NmU4YWEwOTk4NjQ1YThjZTVkMmQ3Yjk1N2Y5OWFmZGMzOGY0
NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbnN1cmVC
YWNraW5nU3RvcmUoKQogICAgIEFTU0VSVChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNo
ZWQpOwogCiAgICAgaWYgKCFtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlKQotICAgICAgICBtX3By
b3BlcnRpZXMuYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllckJhY2tp
bmdTdG9yZT4odGhpcyk7CisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBtYWtl
VW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPih0aGlzKTsKIAogICAgIHVwZGF0ZUJhY2tp
bmdTdG9yZSgpOwogfQpAQCAtNTIxLDcgKzUyMSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6dHJhbnNmb3JtKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFs
dWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJh
bnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMudHJhbnNmb3JtID0g
bWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOwogICAgIG1fcHJvcGVydGll
cy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlRyYW5z
Zm9ybUNoYW5nZWQpOwogfQogCkBAIC01MzIsNyArNTMyLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRy
aXggUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0CiAKIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnN1YmxheWVyVHJh
bnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOwor
ICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFu
Z2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQp
OwogfQogCkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7Ci0gICAgbV9wcm9wZXJ0
aWVzLmZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KGZpbHRlcnMp
OworICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gbWFrZVVuaXF1ZTxGaWx0ZXJPcGVyYXRpb25z
PihmaWx0ZXJzKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpGaWx0ZXJzQ2hhbmdlZCk7CiB9CiAKQEAgLTgyNiw3ICs4
MjYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUgogICAgIGlmIChtX3Byb3BlcnRpZXMuc2hh
cGVSb3VuZGVkUmVjdCAmJiAqbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPT0gcm91bmRl
ZFJlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRS
ZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7Cisg
ICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPEZsb2F0Um91bmRl
ZFJlY3Q+KHJvdW5kZWRSZWN0KTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFu
Z2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTaGFwZVJvdW5kZWRSZWN0Q2hhbmdlZCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZVRpbGVkQmFja2luZy5jcHAKaW5kZXggMWNiZDFiNGJhNzlhN2RmOWNlNTVlMDQyMWQ0
NGU2NWI0MDg4MjFjMi4uMDk5NTM2YjkzYzAxMWFjM2YyYTA3M2MzY2E0NjRmMDcyNjQ2OWNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZVRpbGVkQmFja2luZy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6UGxhdGZvcm1DQUxh
eWVyUmVtb3RlVGlsZWRCYWNraW5nKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXll
ckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBlLCBvd25lciwgY29udGV4dCkKLSAgICAsIG1f
dGlsZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhpcykpCisg
ICAgLCBtX3RpbGVDb250cm9sbGVyKG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHRoaXMpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KaW5kZXggNWU1MGUwYmExZWYxMjQ2YzZhZTA4ZjI5ZDkyYTgzMGUwZGI0ZjIzNy4u
NDQ0NmYzNGQwNGNjZmJmYmViMzY5YmE0NGMzMjA2YmYwZGQyM2VjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNTgsNyAr
NTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBEcmF3aW5nQXJl
YShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFJ
ZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCisgICAgLCBtX3Jl
bW90ZUxheWVyVHJlZUNvbnRleHQobWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVDb250ZXh0Pih3
ZWJQYWdlKSkKICAgICAsIG1fcm9vdExheWVyKEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGlj
c0xheWVyRmFjdG9yeSgpLCAqdGhpcykpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcigqdGhpcywg
JlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycykKIHsKQEAgLTQyMyw3ICs0
MjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6V2lsbENv
bW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSkpOwogCiAgICAg
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJl
ZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsKLSAgICBh
dXRvIGNvbW1pdEVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6cmVj
ZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpD
b21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1
dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5h
bWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExh
eWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgY29tbWl0RW5j
b2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgLy8gRklYTUU6IE1vdmUg
YWxsIGJhY2tpbmcgc3RvcmUgZmx1c2hpbmcgbWFuYWdlbWVudCB0byBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggYWFk
ZTNkOWYxODQ0ZDdmMDVjMDkyMThkOGUyMDQ0ZDU4YTJmMDVmOC4uYjJiZGM0MWI3MjMzNmJiNmU0
ODQ5MGY3MzFiMjQ4NWQyNzA3ODJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApA
QCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNs
YXNzIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKFdlYlBhZ2UmKTsKICAgICB+Vmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3RvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCmluZGV4IDYwY2ZkOGQyYTE3NTRhN2FjZWQ1OGQ2MWRmMTdiZTRjMTQzMTM2OTQu
LmJkZDRiMzk1MjU0YTcxNjc2MzlhZWNkNzM4NjBlMDcyZDY5YzQyZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBA
QCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdl
KiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVh
dGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7Ci0gICAgYXV0byBmcmFtZSA9IGNyZWF0
ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKKyAgICBhdXRvIGZy
YW1lID0gY3JlYXRlKG1ha2VVbmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOwogICAgIHBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2Ut
PmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCAxMzM2NTcwZDkzYWE1MTEwNjk3ODU2MTE3MDI2MDg5M2I4YTNjZGI0Li5kYjMyZGE0ODEzOWUx
OWY3MTQyMTI1NjU0MGEyMTYzMjM0Y2M5MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzgzLDIxICszODMsMjEgQEAgV2ViUGFnZTo6V2Vi
UGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogICAgICwgbV90ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkobWFrZVVuaXF1
ZVJlZjxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk+KCp0aGlzKSkKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi0gICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
PigqdGhpcykpCisgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IobWFrZVVuaXF1
ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBFTkFCTEUoQUND
RVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0
KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVkKQogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKSkK
KyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAsIG1fZWRpdG9yQ2xpZW50
IHsgc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkg
fQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fbG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKLSAgICAsIG1fcmVzb3Vy
Y2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3Vy
Y2VMb2FkQ2xpZW50PigpKQotICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkKKyAgICAsIG1fZWRpdG9yQ2xpZW50IHsg
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkgfQorICAgICwg
bV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4o
KSkKKyAgICAsIG1fbG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UGFnZUxvYWRlckNsaWVudD4oKSkKKyAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpKQorICAgICwgbV91
aUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkK
ICAgICAsIG1fZmluZENvbnRyb2xsZXIobWFrZVVuaXF1ZVJlZjxGaW5kQ29udHJvbGxlcj4odGhp
cykpCi0gICAgLCBtX2luc3BlY3RvclRhcmdldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRy
b2xsZXI+KCp0aGlzKSkKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xs
ZXJJRCkpCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgICwgbV9nZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcihtYWtlVW5pcXVlUmVmPEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyPigqdGhpcykpCkBAIC00NjQsMjEgKzQ2NCwyMSBAQCBXZWJQYWdlOjpXZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGx1Z0luQ2xpZW50ID0gbmV3IFdlYlBs
dWdJbkNsaWVudCgqdGhpcyk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9y
TWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQo
KnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMpOwotICAg
IHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFu
Y2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+
KCp0aGlzKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJH
TFN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlz
XShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkgeworICAgIHBhZ2VDb25maWd1cmF0
aW9uLndlYkdMU3RhdGVUcmFja2VyID0gbWFrZVVuaXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4oW3Ro
aXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSB7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKGlzVXNp
bmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkpOwogICAgIH0pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5zcGVlY2hTeW50aGVzaXND
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRoaXMp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRoZXNpc0NsaWVudCA9IG1ha2VVbmlx
dWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gbWFrZVVuaXF1
ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMpOwogI2VuZGlmCiAKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9ICZXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpAQCAtNDkzLDE0ICs0OTMsMTQgQEAg
V2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigqdGhpcyk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50ID0gbWFrZVVu
aXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxp
Y2F0aW9uTWFuaWZlc3QgPSBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYK
IAotICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbikpOworICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogCiAgICAgLy8gU2V0IHRoZSBzZXNzaW9uSUQgKmJlZm9yZSogdXBkYXRp
bmcgdGhlIHByZWZlcmVuY2VzIGFzIHRoZSBwcml2YXRlQnJvd3NpbmdFbmFibGVkIHByZWZlcmVu
Y2VzIG1heSBuZWVkIHRvIG92ZXJyaWRlIGl0LgogICAgIGlmIChwYXJhbWV0ZXJzLnNlc3Npb25J
RC5pc1ZhbGlkKCkpCkBAIC04NTMsNyArODUzLDcgQEAgdWludDY0X3QgV2ViUGFnZTo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1
bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGllbnQpCiB7CiAgICAgaWYg
KCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+
KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVD
b250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1CiB2b2lkIFdl
YlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50KQogewogICAgIGlm
ICghZWRpdG9yQ2xpZW50KSB7Ci0gICAgICAgIG1fZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CisgICAgICAgIG1fZWRp
dG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkluamVjdGVkQnVuZGxlOgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+JiYgZm9y
bUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGllbnQpIHsKLSAgICAgICAgbV9mb3JtQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwor
ICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZv
cm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg4NCw3ICs4ODQsNyBA
QCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50KQogewogICAgIGlmICghbG9hZGVyQ2xpZW50
KSB7Ci0gICAgICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAgICAgICBtX2xvYWRlckNsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQgV2ViUGFnZTo6
aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVBvbGljeUNs
aWVudEJhc2UqCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGll
bnQ+JiYgY2xpZW50KQogewogICAgIGlmICghbV9yZXNvdXJjZUxvYWRDbGllbnQpCi0gICAgICAg
IG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7
CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsKIH0KQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxl
UmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQgogdm9pZCBX
ZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+JiYgdWlDbGllbnQpCiB7CiAgICAgaWYgKCF1aUNs
aWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTQxMCwxNCArMTQxMCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRN
ZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICNlbmRpZgotICAgIG1f
ZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwotICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAg
IG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JD
bGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpGb3JtQ2xpZW50PigpOworICAgIG1fbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50
LmluaXRpYWxpemUoMCk7Ci0gICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKLSAgICBtX3Vp
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGll
bnQ+KCk7CisgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKKyAgICBtX3VpQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbkNsaWVudC5pbml0aWFsaXplKDApOwogI2Vu
ZGlmCkBAIC00Njk2LDcgKzQ2OTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmJlZ2luUHJpbnRpbmcodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiAjZW5kaWYKIAogICAg
IGlmICghbV9wcmludENvbnRleHQpIHsKLSAgICAgICAgbV9wcmludENvbnRleHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKKyAgICAgICAgbV9wcmludENvbnRl
eHQgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKICAgICAgICAgbV9wYWdl
LT5kaXNwYXRjaEJlZm9yZVByaW50RXZlbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwCmluZGV4IDczNTY2YTEzMzg1ZGUzYWFjNjQ2ZmI5NDk2YmRkYWZjYjVhZjQ2YjYuLjMx
ZWZmMTFmN2FlMGEzZWI4Y2ZiYjZmZjJiM2RiYTUxNjI0YzFlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0
aW9uR3RrLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBAIGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3Rr
V2luMzIgZmluYWw6IHB1YmxpYyBXZWJQcmludE9wZXJhdGlvbkd0ayB7CiAjZW5kaWYKIAogc3Ry
dWN0IFByaW50UGFnZXNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgUHJpbnRQYWdlc0RhdGEoV2ViUHJpbnRPcGVyYXRpb25HdGsqIHByaW50T3BlcmF0aW9u
KQogICAgICAgICA6IHByaW50T3BlcmF0aW9uKHByaW50T3BlcmF0aW9uKQogICAgICAgICAsIHRv
dGFsUHJpbnRlZCgtMSkKQEAgLTcyNiw3ICs3MjcsNyBAQCB2b2lkIFdlYlByaW50T3BlcmF0aW9u
R3RrOjpwcmludChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGRvdWJsZSB4RFBJLCBkb3VibGUg
eQogewogICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7CiAKLSAgICBhdXRvIGRhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtl
VW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKICAgICBpZiAoIWRhdGEtPmlzVmFsaWQpIHsK
ICAgICAgICAgY2Fpcm9fc3VyZmFjZV9maW5pc2goc3VyZmFjZSk7CiAgICAgICAgIHByaW50RG9u
ZShpbnZhbGlkUGFnZVJhbmdlVG9QcmludChmcmFtZVVSTCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0K
aW5kZXggOWFiYjJhNzkyOTlkNTk2YjkxZTZlZjYxY2E0M2VmODYxOTBhOTA0OS4uOTM0MThhYjIx
ZDc0ZmM5NDU4YTAyMjRlNGNiNDhhNzM0MTc4MDlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAt
OTgsNyArOTgsNyBAQCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZy
YW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgIGlmICghdGV4dEluZGlj
YXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9maW5kSW5kaWNhdG9yT3Zlcmxh
eUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M+
KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOworICAgIG1fZmluZEluZGljYXRv
ck92ZXJsYXlDbGllbnQgPSBtYWtlVW5pcXVlPEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9T
PihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdldCgpKTsKICAgICBtX2ZpbmRJbmRpY2F0
b3JSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0SW5kaWNhdG9yLT5zZWxlY3Rpb25SZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzKCkpOwogICAgIG1fZmluZEluZGljYXRvck92ZXJsYXkgPSBQYWdl
T3ZlcmxheTo6Y3JlYXRlKCptX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50LCBQYWdlT3Zlcmxh
eTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnBh
Z2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheSgqbV9maW5kSW5kaWNhdG9y
T3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05vdEZhZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5
Q2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZElu
ZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaAppbmRleCA1MzViODRmYjY0MjlhOTdmMGM5OGE4ZWFj
MTg1ZDlkZjJlZTk0ODU0Li4wMTVlMzJkYjE4OTNlNmEwNjJkOWUzYTdjYTBkYzUyZTk0NmRkMGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZElu
ZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaApAQCAtMzQsNiArMzQs
NyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xp
ZW50SU9TIDogcHVibGljIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xp
ZW50SU9TKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgV2ViQ29yZTo6VGV4dEluZGljYXRvciogdGV4
dEluZGljYXRvcikKICAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKaW5kZXgg
OTA2ODdjOTc0YWNmMzNkODJiOGM2NGI5NDhlNmVlOWEzMGVlMmU5Yy4uMDZmY2M0NzE1OTNlYjc4
ZWRlYmZjYzYzZjg5NDRiM2RmYWU5ZGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCkBAIC04Myw3ICs4Myw3
IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNr
KCkKICAgICBpZiAoIW1faGFzU2VudE1lc3NhZ2UpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpTdGFydERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCkpLCAw
KTsKICAgICAgICAgbV9oYXNTZW50TWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIG1fcnVuTG9vcE9i
c2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRy
eSwgW3RoaXNdKCkgeworICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVu
TG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKICAgICAgICAgICAgIHRo
aXMtPm1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3AgPSB0cnVlOwogICAgICAgICB9KTsK
ICAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxlKENGUnVuTG9vcEdldEN1cnJlbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZGY2MDAz
NjQ1OThmMTM0NjI5ZGFiNjI3MDZlYWY2ODYxZTVmZjMzZC4uNGNiM2RmOWFlYTUyOWVmZjUyNjMz
NmM4MWYxMzAyMDQ1YmEzZTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQpAQCAtODcsNyArODcsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgYwogICAgIFtt
X2hvc3RpbmdMYXllciBzZXRPcGFxdWU6WUVTXTsKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0R2Vv
bWV0cnlGbGlwcGVkOllFU107CiAKLSAgICBtX2xheWVyRmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJ
bmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNo
KSwgW3RoaXNdKCkgeworICAgIG1fbGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29w
T2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7
CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hSdW5Mb29wQ2FsbGJhY2soKTsKICAgICB9KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDdiNDhhMGY3MjQ2MmZm
ZTU3ZmU5MjA2Y2JjYzBjZjMzMWMzMjExZTEuLmM3MWNkNWYyNzRmZjYyMmM1ZDQzZjM1OWY2MTVm
ZDM3Y2YyZDY4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTE1NzMsNyArMTU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxl
KFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgQVNTRVJUKCFt
X3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIpOwogICAgIG1fY291bnRPZlBhZ2Vz
RmFpbGluZ1RvTWFya1ZvbGF0aWxlID0gMDsKIAotICAgIG1fcGFnZU1hcmtpbmdMYXllcnNBc1Zv
bGF0aWxlQ291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0
aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKKyAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNW
b2xhdGlsZUNvdW50ZXIgPSBtYWtlVW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNv
dW50ZXI+KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoUmVmQ291bnRlckV2ZW50KSB7CiAgICAgICAgIGlmIChtX3BhZ2VNYXJraW5nTGF5ZXJz
QXNWb2xhdGlsZUNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE4
MzgsNyArMTgzOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wg
aGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2CiAKIHZvaWQgV2ViUHJvY2Vz
czo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eShjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVu
dGlmaWVyKQogewotICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOworICAgIG1f
YXV0b21hdGlvblNlc3Npb25Qcm94eSA9IG1ha2VVbmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lB
dXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKQEAgLTE4NzEsNyArMTg3MSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzczo6aGFzVmlzaWJsZVdlYlBhZ2UoKSBjb25zdAogTGliV2ViUlRDTmV0d29yayYgV2ViUHJv
Y2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB7CiAgICAgaWYgKCFtX2xpYldlYlJUQ05ldHdvcmsp
Ci0gICAgICAgIG1fbGliV2ViUlRDTmV0d29yayA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
TmV0d29yaz4oKTsKKyAgICAgICAgbV9saWJXZWJSVENOZXR3b3JrID0gbWFrZVVuaXF1ZTxMaWJX
ZWJSVENOZXR3b3JrPigpOwogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQogCkBA
IC0xODgyLDcgKzE4ODIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlRwogICAgIC8vIGJ5IGNh
bGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5l
ZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAg
ICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nl
cy4KICAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNl
dENvbm5lY3Rpb24oc3RkOjptYWtlX3VuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQsIHBhZ2VJRCwgc3RvcmUpKTsKKyAgICBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCBwYWdl
SUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBkNGMwMWJh
YjFmOTNkYTkwODViMGYyMTk0Y2QzMjdkNDcxODY1MGIyLi4yZjRmYjUzMGFiY2VkN2VmYzczNzY0
MjIzMDlmZDMxODg3YTQ3YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
QEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAgICAgLCBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXI6OkNsaWVudAogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlByb2Nlc3MmIHNpbmdsZXRvbigpOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUgPSBQcm9jZXNzVHlwZTo6V2Vi
Q29udGVudDsKQEAgLTE0Niw3ICsxNDcsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAg
IG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8
VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUo
KSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJ
UHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJD
b25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAyNzIwYjg2ZmNkMmZm
ZWU2MDIyZjVhZDVlZWQ1MGJjZjM2OTJkN2Y4Li45YWYwMGVlOGFhMGYxY2Q4NDBhODE3Mzc5MGZh
MDYyMzAwNDZmZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgY2xh
c3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXZpY2VUeXBlICE9IENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OlVua25vd24pOwogICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpBdWRp
bykKLSAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVm
ZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRyKSk7Cisg
ICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVu
aXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOwogICAgIH0KIAogICAg
IH5Tb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAppbmRleCBiYWVkMGNkOWUwOWI0OWQyMjFlOTQwMThm
NjQ5ZmU2ZGJjZjkyNTE5Li5jMWQ0M2ZjYjNhZjU4NDE0NTNhZDM0MzRjN2NmOTNlYmZjOWU3ZWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBDcm9zc1Byb2Nlc3NS
ZWFsdGltZUF1ZGlvU291cmNlOwogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xhc3MgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OkF1ZGlvQ2FwdHVyZUZhY3RvcnksIHB1
YmxpYyBXZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxh
eUNhcHR1cmVGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNzJik7CiAgICAg
flVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBiNDdkMWQ4YWZhMDNmZWQzNmRlY2Fk
OTg5ZDcyZGJjNDE4NDg3ZjU5Li4zYjkwNmE4MGM1YWQ4ZjY5YmVmNzdmOWE4Yzc2NGFmODA5ZjQ5
NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NUYXNr
U3RhdGVEaWRDaGFuZ2UoUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpUYXNrU3RhdGUgdAogCiAg
ICAgLy8gV2Ugd2VyZSBhd2FrZW5lZCBmcm9tIHN1c3BlbnNpb24gdW5leHBlY3RlZGx5LiBOb3Rp
ZnkgdGhlIFdlYlByb2Nlc3NQcm94eSwgYnV0IHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBv
dXIgcGFyZW50IFBJRAogICAgIC8vIHRvIGVuc3VyZSB0aGF0IGl0IHRvbyBpcyBhd2FrZW5lZC4K
LSAgICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fz
c2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCksICJV
bmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kLCBBc3NlcnRp
b25SZWFzb246OkZpbmlzaFRhc2spOworICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0aW9uID0gbWFr
ZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1v
dGVQcm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0aW9uU3RhdGU6OkJh
Y2tncm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CiAgICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OlByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpLCBbdWlQcm9jZXNzQXNzZXJ0
aW9uID0gV1RGTW92ZSh1aVByb2Nlc3NBc3NlcnRpb24pXSB7IH0pOwogfQogI2VuZGlmCkBAIC02
MjAsNyArNjIwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BV
TW9uaXRvclVwZGF0ZVJlYXNvbiByZWFzb24pCiAgICAgfQogCiAgICAgaWYgKCFtX2NwdU1vbml0
b3IpIHsKLSAgICAgICAgbV9jcHVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDUFVNb25pdG9y
PihjcHVNb25pdG9yaW5nSW50ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2UpIHsKKyAgICAg
ICAgbV9jcHVNb25pdG9yID0gbWFrZVVuaXF1ZTxDUFVNb25pdG9yPihjcHVNb25pdG9yaW5nSW50
ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2UpIHsKICAgICAgICAgICAgIGlmIChtX3Byb2Nl
c3NUeXBlID09IFByb2Nlc3NUeXBlOjpTZXJ2aWNlV29ya2VyKQogICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gU2VydmljZSB3b3JrZXIg
cHJvY2VzcyBleGNlZWRlZCBDUFUgbGltaXQgb2YgJS4xZiUlICh3YXMgdXNpbmcgJS4xZiUlKSIs
IHRoaXMsIG1fY3B1TGltaXQudmFsdWUoKSAqIDEwMCwgY3B1VXNhZ2UgKiAxMDApOwogICAgICAg
ICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmNwcAppbmRleCAzNjkwOTVjZGFkMWQzNDcxMWEwNjc2ZDg3MzZhOTBlMTkzZTI5
MDVlLi4yMjhmNGEzNmQ0YjBmMjIyYzE3ODYwZDBiYzQ5OGMxZjllMDg5YTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBSZWY8U3RvcmFnZVN5bmNNYW5hZ2VyPiBTdG9yYWdlU3luY01hbmFnZXI6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB9CiAKIFN0b3JhZ2VTeW5jTWFuYWdlcjo6U3Rv
cmFnZVN5bmNNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCkKLSAgICA6IG1fdGhyZWFkKHN0ZDo6
bWFrZV91bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICA6IG1fdGhyZWFkKG1ha2VVbmlxdWU8
U3RvcmFnZVRocmVhZD4oKSkKICAgICAsIG1fcGF0aChwYXRoLmlzb2xhdGVkQ29weSgpKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggNDQzOTM4Mjk1ZjRlMWMyOWRkMDQ4NmI0MzFiYTdm
ZWEzNTI5ZDE2ZC4uOWM3NTE0ZTM0NjJjNGI0ZDhhODU2MDVlZDAyOWRiZDE5MjVkNmIxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNzUs
NyArNzUsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWQpOwotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAg
bV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5j
dGlvbikpKTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQpAQCAtODcsNyAr
ODcsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAgICAgaWYgKCFtX3RocmVh
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKKyAgICBtX3F1ZXVlLmFwcGVuZChtYWtlVW5p
cXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10gewogICAgICAgICBwZXJmb3JtVGVybWluYXRl
KCk7CiAgICAgfSkpOwogICAgIG1fdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggYjkzNGQx
YTNiMWJhYTgzMWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2ZhMi4uODA2Y2IwOTk1ZDBhMDdjNzE4Mjcx
ZDIxMDUwNzAzOThjNDAzYmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFN0b3JhZ2VUcmFja2VyJiBTdG9y
YWdlVHJhY2tlcjo6dHJhY2tlcigpCiBTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIoY29u
c3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKICAgICA6IG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoc3Rv
cmFnZVBhdGguaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2NsaWVudCgwKQotICAgICwgbV90aHJl
YWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQorICAgICwgbV90aHJlYWQobWFr
ZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAs
IG1fbmVlZHNJbml0aWFsaXphdGlvbihmYWxzZSkKICAgICAsIG1fU3RvcmFnZURhdGFiYXNlSWRs
ZUludGVydmFsKGRlZmF1bHRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9y
YWdlU2Vzc2lvbk1hcC5jcHAKaW5kZXggNDNlYTQ1ZGFlODkyMDZjODI5YTUxNGQ0ZGE4ZTNkMWM5
N2NjMTI4NC4uODUxY2MxMDE3ZGVkMDBjMDZkNDZkMmM4NTlkNzAwMDBiNmQ3MmQ1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3RvcmFnZVNlc3Np
b24oY29uc3QgUAogV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCiB7CiAgICAgaWYgKCFkZWZhdWx0
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICAgICAgZGVmYXVsdE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIHJldHVy
biAqZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogfQogCkBAIC03NCw3ICs3NCw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCkKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNz
aW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQoKSkp
OwogICAgIH0KIAotICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3Jh
Z2UpKTsKKyAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtlVW5pcXVlPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZW5k
aWYKIH0KIApAQCAtMTAwLDExICsxMDAsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25N
YXA6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY28KICAg
ICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29w
eUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkp
KTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShz
dG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9y
YWdlKSk7CiAKICNlbGlmIFVTRShDVVJMKQogICAgIGdsb2JhbFNlc3Npb25NYXAoKS5lbnN1cmUo
c2Vzc2lvbklELCBbc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQp
OwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDE4
NzZiOTYwYjk0NzA4MTRjMzUwYmM1OTI2YTRjODFhZWRmMzkwMjMuLjdiODY5ODFhM2Y0OGU1MGY4
YjNjY2FjMzcwNjkxN2Q0YWYxZmRiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBA
IC0xNTksNSArMTU5LDUgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0b3JDbGkKICAgICAgICAgICAgIGRl
bGV0ZVNldHRpbmcobmFtZSk7CiAgICAgICAgIH0KICAgICB9OwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1Mu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5oCmluZGV4IDNiMWE0NTA3MDc4ZmE0Y2MwNjhlNzQwMzAzMjIxMjM5YjJhZDcxMjMuLjE0
NTc3MjIyYTllMTNlNjNlNDkxZDZkM2I5MmNhMWJjODllN2NiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJXZWJDaHJvbWVDbGllbnQuaCIKIAog
Y2xhc3MgV2ViQ2hyb21lQ2xpZW50SU9TIGZpbmFsIDogcHVibGljIFdlYkNocm9tZUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xp
ZW50SU9TKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogV2ViQ2hyb21lQ2xpZW50KHdlYlZp
ZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCmluZGV4IDIxN2E0ZWQwYTg1YTZi
YjQxNGQzMTk0Y2I3YmZhZWZkZTAzNmQ0N2EuLmFmZTExYTgwYjlmMWM5Y2U3NmEzNTYyZmE2M2M0
NWJmNzFkMTFkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCkBAIC01Miw2
ICs1Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBzdGF0aWMgTG9jayB3ZWJGaXhlZFBvc2l0
aW9uQ29udGVudERhdGFMb2NrOwogCiBzdHJ1Y3QgVmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0
YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZpZXdwb3J0Q29u
c3RyYWluZWRMYXllckRhdGEoKQogICAgICAgICA6IG1fZW5jbG9zaW5nQWNjZWxlcmF0ZWRTY3Jv
bGxMYXllcihuaWwpCiAgICAgeyB9CkBAIC02Miw2ICs2Myw3IEBAIHN0cnVjdCBWaWV3cG9ydENv
bnN0cmFpbmVkTGF5ZXJEYXRhIHsKIHR5cGVkZWYgSGFzaE1hcDxSZXRhaW5QdHI8Q0FMYXllcj4s
IHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPj4gTGF5ZXJJbmZv
TWFwOwogCiBzdHJ1Y3QgV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnREYXRhKFdlYlZpZXcgKik7CiAgICAgfldlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YSgp
OwpAQCAtMTc4LDcgKzE4MCw3IEBAIC0gKHZvaWQpc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVy
czooV1RGOjpIYXNoTWFwPENBTGF5ZXIgKiwgc3RkOjp1bmlxdWVfcHRyPFdlCiAKICAgICBmb3Ig
KGF1dG8mIGxheWVyQW5kQ29uc3RyYWludHMgOiBsYXllck1hcCkgewogICAgICAgICBDQUxheWVy
KiBsYXllciA9IGxheWVyQW5kQ29uc3RyYWludHMua2V5OwotICAgICAgICBhdXRvIGxheWVyRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YT4oKTsKKyAg
ICAgICAgYXV0byBsYXllckRhdGEgPSBtYWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXll
ckRhdGE+KCk7CiAKICAgICAgICAgbGF5ZXJEYXRhLT5tX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Ny
b2xsTGF5ZXIgPSBzdGlja3lDb250YWluZXJzLmdldChsYXllcik7CiAgICAgICAgIGxheWVyRGF0
YS0+bV92aWV3cG9ydENvbnN0cmFpbnRzID0gV1RGTW92ZShsYXllckFuZENvbnN0cmFpbnRzLnZh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpp
bmRleCBhOGI2YTA0MzkzZWMwMDAxNDY1MzhkNGNmNjViZDY0MGM3NGJkOTAxLi41YWQ4MWI0YTNi
NDliNWQwNjM5MzY1NjgzYTFiY2Y1ZDU3ZWYzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgLSAoaWQpaW5p
dAogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIF9lbnRyaWVzQnlEYXRlID0gc3RkOjpt
YWtlX3VuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOworICAgIF9lbnRyaWVzQnlEYXRlID0gbWFr
ZVVuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRl
eCBiNzM5NTkzNWU1MTBiZjNiN2YwYzQ4ZWRkNDM2YzU4YmJjNDgxZDhlLi44NmY5ZDNkNDIyMzg0
NmJjOTVjYmM5NTY0NWExY2E3MzIwYWZlMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTM0OCw3ICszNDgsNyBAQCAtIChp
ZClpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAog
ICAgICAgICBjb3JlKF9wcml2YXRlKS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKICAg
ICAKICAgICBpZiAoTlNBcnJheSAqcmVkaXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZv
cktleTpyZWRpcmVjdFVSTHNLZXldKSB7Ci0gICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byByZWRp
cmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBy
ZWRpcmVjdFVSTHNWZWN0b3ItPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW3JlZGlyZWN0VVJMcyBj
b3VudF0pOwogCiAgICAgICAgIGZvciAoaWQgcmVkaXJlY3RVUkwgaW4gcmVkaXJlY3RVUkxzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4IGUxN2M3ODgxYTUxN2YwYzM1
NWY4NzU2OWI2MGRhM2YyMTVhMWViYTcuLmY1ZTdmYmNmMTJlNDdmOTBkZWVmMWVhMmNmZWI3MTc0
MjY4ODBhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC00OTMsNyAr
NDkzLDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkobWFj
aF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGwKICAgICBpZiAoIWluc3RhbmNlUHJveHkp
CiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRD
dXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHk+KG9iamVjdElEKSk7CisgICAg
aW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmpl
Y3RJRCkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBA
QCBrZXJuX3JldHVybl90IFdLUENCb29sZWFuUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwg
dWludDMyX3QgcGx1Z2luSUQsIHVpbnQzMgogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAg
ICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKICAgICAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJy
ZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRD
dXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6Qm9vbGVhblJlcGx5PihyZXN1bHQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwog
fQogCkBAIC01MjgsNyArNTI4LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhbkFuZERhdGFS
ZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW5JRCwKICAgICAgICAg
cmV0dXJuIEtFUk5fRkFJTFVSRTsKIAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VsdCA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHRE
YXRhKSwgcmVzdWx0TGVuZ3RoKSk7Ci0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5
KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJldHVyblZhbHVlLCByZXN1bHQpKTsKKyAgICBpbnN0YW5j
ZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhbkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3Vs
dCkpOwogICAgIAogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CkBAIC01NDUsNyArNTQ1LDcg
QEAga2Vybl9yZXR1cm5fdCBXS1BDSW5zdGFudGlhdGVQbHVnaW5SZXBseShtYWNoX3BvcnRfdCBj
bGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW4KICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAg
ICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50
UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0
YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4ocmVuZGVyZXJUeXBlKSkpOworICAgIGluc3RhbmNlUHJv
eHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjpJbnN0YW50aWF0ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRl
eHRJRCwgc3RhdGljX2Nhc3Q8UmVuZGVyZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CiAgICAgcmV0
dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkuaAppbmRleCAxMGEwOGU5NTBhM2RjMGM5MzY3MWYxZmMxYzc0Yzk0Nzc5M2EwN2U4Li5lNTZh
MTAzYTI4YTc2MGY5Y2UwYjk3ZTcxZGQ2YjIzYTYwYzUzZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkuaApAQCAtMTcxLDYgKzE3MSw3IEBAIGNsYXNzIE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94CiAKICAgICAvLyBSZXBseSBzdHJ1Y3RzCiAgICAgc3RydWN0IFJlcGx5IHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBlbnVtIFR5cGUg
ewogICAgICAgICAgICAgSW5zdGFudGlhdGVQbHVnaW4sCiAgICAgICAgICAgICBHZXRTY3JpcHRh
YmxlTlBPYmplY3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCAyMDJjNmRlYWYxM2QwN2M2ZTNhNTY5OGIx
Y2RiNTlhMTliNWRhMDM5Li41MmJmN2JkMTJlNGUzNzEyZDMxNDc1ZTJhNTM5YTQyOGNmZjhmYTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94
eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW0KQEAgLTM2Miw3ICszNjIsNyBAQCBNZXRob2QqIFByb3h5SW5zdGFu
Y2U6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEg
bmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3
ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBhdXRvIG1hcEFkZFJlc3VsdCA9IG1fbWV0aG9kcy5h
ZGQobmFtZS5pbXBsKCksIG51bGxwdHIpOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRy
eSAmJiByZXBseS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3h5TWV0aG9kPihtZXRob2ROYW1lKTsKKyAgICAgICAg
bWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJveHlNZXRob2Q+KG1l
dGhvZE5hbWUpOwogCiAgICAgcmV0dXJuIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiB9CkBAIC0zOTcsNyArMzk3LDcgQEAgRmllbGQqIFByb3h5SW5zdGFuY2U6OmZpZWxkTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBBZGQgYSBuZXcgZW50cnkgdG8g
dGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVkIHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZv
clJlcGx5LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0gbV9maWVsZHMuYWRkKG5hbWUuaW1wbCgp
LCBudWxscHRyKTsKICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1f
cmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlmaWVyKTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CiAgICAg
cmV0dXJuIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA5YzcxYTNjYzkyM2YzM2QyZTBh
YjM5YTFiZjZiMTRiNDQzZTk0ZDRiLi5lZTE5YzU2N2MwMWZhMThjNWU4ZGM2MWIwOGM4OTRlNTIw
MDJkYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC02
MCw2ICs2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICAKIGNsYXNzIFNvZnR3YXJlQ0FSZW5kZXJlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU29mdHdhcmVDQVJlbmRlcmVyKHVpbnQzMl90
IGNvbnRleHRJRCkKICAgICAgICAgOiBtX2NvbnRleHQgeyBbQ0FDb250ZXh0IGxvY2FsQ29udGV4
dF0gfQpAQCAtMTY4LDcgKzE2OSw3IEBAIC0gKEJPT0wpY3JlYXRlUGx1Z2luCiAgICAgICAgIHJl
dHVybiBOTzsKIAogICAgIGlmIChfcHJveHktPnJlbmRlcmVyVHlwZSgpID09IFVzZVNvZnR3YXJl
UmVuZGVyZXIpCi0gICAgICAgIF9zb2Z0d2FyZVJlbmRlcmVyID0gc3RkOjptYWtlX3VuaXF1ZTxT
b2Z0d2FyZUNBUmVuZGVyZXI+KF9wcm94eS0+cmVuZGVyQ29udGV4dElEKCkpOworICAgICAgICBf
c29mdHdhcmVSZW5kZXJlciA9IG1ha2VVbmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHkt
PnJlbmRlckNvbnRleHRJRCgpKTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIGNyZWF0ZVBsdWdp
bkxheWVyXTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCmluZGV4IGY3YWVk
YmNlZDRkN2Y1YzRiYTNlOTZlMzU2MWNhN2YwYjI2NWM4YWMuLjhlYzFiZjc5ZWUzMmEyYWMxYmJj
ZjdhMjFlNzNlN2UxZTAxZGIxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQpA
QCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXI+IFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyOjpjcgogewogICAgIHN3aXRjaCAo
W3BsdWdpblZpZXcgZXZlbnRNb2RlbF0pIHsKICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNvY29hPihwbHVnaW5WaWV3KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmlldyk7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaAppbmRleCA3MDgzNzc2ZDI4YTc1
Y2ZiNTQyNTMzZDkwZjM3NzhlODVhYmNkMWQyLi5iYmQ5YzVkNTgyMWY4NWY2NWViYzhmNzc3ZWM2
NTUyMjlkNWU4OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
LmgiCiAKIGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EgOiBwdWJsaWMg
V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EoV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Kik7IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDAyZmYyMTg2ZGY4
NGE5YTkwZDdlOWMyNmMwNzYyNzllMzIyMTEzNzguLjE2MDY2M2U4NjFmNzEwZWJmZWQxZDc2ODU2
NWRkMjJhMTE0ZThlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xNjU1LDcgKzE2NTUsNyBAQCAt
ICh1aW50MzJfdClzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCBy
ZXBlYXQ6KE5QQm9vbClyZXBlYXQgdAogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBpZiAo
IXRpbWVycykKLSAgICAgICAgdGltZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPHVpbnQz
Ml90LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+Pj4oKTsKKyAgICAgICAgdGltZXJzID0g
bWFrZVVuaXF1ZTxIYXNoTWFwPHVpbnQzMl90LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+
Pj4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4qIHNsb3Q7CiAgICAgdWlu
dDMyX3QgdGltZXJJRDsKQEAgLTE2NjMsNyArMTY2Myw3IEBAIC0gKHVpbnQzMl90KXNjaGVkdWxl
VGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVydmFsIHJlcGVhdDooTlBCb29sKXJlcGVh
dCB0CiAgICAgICAgIHRpbWVySUQgPSArK2N1cnJlbnRUaW1lcklEOwogICAgIHdoaWxlICghdGlt
ZXJzLT5pc1ZhbGlkS2V5KHRpbWVySUQpIHx8ICooc2xvdCA9ICZ0aW1lcnMtPmFkZCh0aW1lcklE
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWUpKTsKIAotICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsdWdpblRpbWVyPihwbHVnaW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQs
IHRpbWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlxdWU8UGx1Z2luVGltZXI+KHBs
dWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKIAogICAgIGlmIChf
c2hvdWxkRmlyZVRpbWVycykKICAgICAgICAgdGltZXItPnN0YXJ0KF9pc0NvbXBsZXRlbHlPYnNj
dXJlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCmluZGV4IDcwNGNkMDk1ZTg4ZmUxYTIzODExODZj
NmJmZjEzMGZjOTAyMDQxZWIuLjU3ZmJiZmFkOWU2NGI3Njc4YWQzYWNjZTgwNzc4YmFjZjAzNzgx
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCkBAIC05NCwxMCArOTQsMTEgQEAgV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIH0KIAogY2xhc3Mg
RGlkTW9kaWZ5T3JpZ2luRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogICAg
IHsKLSAgICAgICAgYXV0byBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWRNb2RpZnlPcmln
aW5EYXRhPihjbGllbnQsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY29udGV4dCA9IG1ha2VVbmlx
dWU8RGlkTW9kaWZ5T3JpZ2luRGF0YT4oY2xpZW50LCBvcmlnaW4pOwogICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KV0gewogICAgICAgICAgICAgY29u
dGV4dC0+Y2xpZW50LmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdpbik7CiAg
ICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCBhM2IxNTk4
ZWUzNTNkNjdlMjNhZjgwOTU4ZWI3Zjc1ZWIxNjdmNGQ4Li5jZDcyNjQyNjgyNWJhNzIyMTU1N2Uw
NTY2ZmE5MmVjMDgxMTE0NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApA
QCAtMzEsNiArMzEsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudChXZWJWaWV3Kik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA3
OGI1MzllMzcyYjg2NWM1OTRmYzA3NmY1YTFmYzg0YWFmZTk4YmYwLi4yNzE0MjdlMmQ0NmVlM2Ey
OTdkMDU0MDEyYTdhODVhYjhiM2UxYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
Y2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKGlkIHdlYkRvY3VtZW50VmlldykgOiBt
X3dlYkRvY3VtZW50Vmlldyh3ZWJEb2N1bWVudFZpZXcpIHsgfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCBmZGM0Y2M3ODE5NmZjYmNmMzI2MDJkMThlMjg5ZjA3YTExNTRjYzk1Li5jMGZiZGE5
YjJkYTFkZDQ1MTBmZmUwODliZjY4ZjVhNzY3ZGQ0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAt
NDEsNiArNDEsNyBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogLy8gYmFzZSBjbGFzcyBvZiB0
aGUgY29uY3JldGUgY2xhc3MsIFdlYkNocm9tZUNsaWVudElPUy4gQmVjYXVzZSBvZiB0aGF0LCB0
aGlzIGNsYXNzIGFuZAogLy8gbWFueSBvZiBpdHMgZnVuY3Rpb25zIGFyZSBub3QgbWFya2VkIGZp
bmFsLiBUaGF0IGlzIG1lc3N5IHdheSB0byBvcmdhbml6ZSB0aGluZ3MuCiBjbGFzcyBXZWJDaHJv
bWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCAxODg1ZjAzMTMxMzViODE3YjMwZjk0NTc3
N2Q4ZTI0YjE1MzliZjkwLi5hN2Y2NmVlZWYzMDZhNjg2MDU0MjBlNzk4NzYyMDI1N2JlMDZiNmJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV2Vi
Q29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQKICAg
ICAsIHB1YmxpYyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAogI2VuZGlmCiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVDbGll
bnQoV2ViVmlldyAqd2ViVmlldyk7CiAgICAgdmlydHVhbCB+V2ViQ29udGV4dE1lbnVDbGllbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaAppbmRleCA4NDdhNzNiMTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0YTYzYmRk
MTJlLi4zMGRmM2Y3M2Q4NTBlYTc2OWM3MTM1MjIxZDJlODg2NWVhNjdlMDNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5oCkBAIC0zMCw2ICszMCw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0Ns
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCBmMDU5ZTA1OWUxMTg3YTNiYzViZDI0N2NjMjQxZjU5YWRkNDUwOTUwLi5i
NTEwNzg3ZDgwOWJjZjk3Yjc2ODllNzQwOTMyODM3NWFhMGIwYjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtNDUsNiArNDUsNyBAQAogQGNsYXNzIFdlYkVkaXRvclVuZG9UYXJnZXQ7CiAKIGNsYXNz
IFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1
YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdl
YkVkaXRvckNsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFdlYkVkaXRvckNsaWVudChXZWJWaWV3ICopOwogICAgIHZpcnR1YWwgfldlYkVkaXRvckNs
aWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAzZGQ1MGU3YjNiOWNmOTkz
MzQ5YzlhYmI0Y2I0OTc4MzdlZWMzNTNlLi45NDBiMGZmOTYzYTg1Y2U5ZDg4ZDdiYzU2ZmY2YjNl
ZWIyZTNkOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTA2Nyw3ICsxMDY3
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiBz
dGF0aWMgdm9pZCBhZGRSZWRpcmVjdFVSTChXZWJIaXN0b3J5SXRlbSAqaXRlbSwgY29uc3QgU3Ry
aW5nJiB1cmwpCiB7CiAgICAgaWYgKCFpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcykKLSAg
ICAgICAgaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxTdHJpbmc+PigpOworICAgICAgICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9
IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAKICAgICAvLyBPdXIgQVBJIGFsbG93cyB1
cyB0byBzdG9yZSBhbGwgdGhlIFVSTHMgaW4gdGhlIHJlZGlyZWN0IGNoYWluLCBidXQgZm9yCiAg
ICAgLy8gbm93IHdlIG9ubHkgaGF2ZSBhIHVzZSBmb3IgdGhlIGZpbmFsIFVSTC4KQEAgLTEzODAs
NyArMTM4MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZy
YW1lKQogewotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJp
dmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOworICAgIGNhY2hlZEZyYW1lLT5zZXRD
YWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cg
dGhpcyBmcmFtZSBpcyBnb2luZyB0byBiZSBjYWNoZWQuIFN0b3AgYWxsIHBsdWdpbnMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmZmUyOTkzMTJlYjQ4MGJhZmI1ZjBlYWM0MzUyZjI0
M2Y5NmUwMGY3Li5mZmRiYWNmYzI3NDIxZThkMzU4ODhmMmNlNmIxODA3N2ExNmUzM2YwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbjsKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyAq
KTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCmluZGV4IGJkN2Y2MmZjODVkYzk5YzM4NzE2ZjA3NjY2NDYzMTgyNTExYzU0
YTUuLjBjOTQ4YjNhZWY5ODc2MDk2MzAzNTFkNTlhYzc5MGIyYWJlYWRhN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDsKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCAxYzAwODA5NzY5MmZmOWIwNzFmY2U1YWM0YTRi
NDY5MmQxMzdlZDk1Li43ZDNlNWVjOWU2MTVlMWQ0OGMzZDA1ZDcxYTU5YzQ1MWZlYjc2NmJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgRnJvbnRlbmRDaGFu
bmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3AKICAgICBbd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGll
bnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIu
Z2V0KCkgZnJvbnRlbmRXZWJWaWV3XSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywg
d2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJvbnRl
bmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQg
PSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZp
ZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zy
b250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKIAogICAgIFJldGFpblB0cjxX
ZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2Vi
SW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVu
ZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl0gc2V0
RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQuaAppbmRleCAxNWI0MTgwNDhlNGYxZDQ2MjRjMzAzZGNiYmZlZDE2OTc5NjQ0ODYxLi45
NGVkNjE4YWM3OGVlOGJjZjU3MTU1YzlhZGFiY2JkYWRmNjhjNzM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmlj
YXRpb25DbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vdGlm
aWNhdGlvbkNsaWVudChXZWJWaWV3ICopOwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVy
biBtX3dlYlZpZXc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5o
CmluZGV4IGEzZDZhZTYzNjM2NDdjNWYzMGNjNzlmYmQ2MzVmNjY0YmNhMDEyM2MuLmRjOWQxMWEz
NTg3ZWUwNGY1MDE1MWJlODhiYzVkNGIxNDhiY2RlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBJbnRQb2ludDsK
IH0KIAogY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyTW9jay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KaW5kZXggMjUzNjQ4ZDhlODQ1OTEx
ZTJhZTI4YzBiYjg2M2NiNTdmN2MzMDAzOS4uMjc2ZDlmMTVlZjhmYTVlMWZlZDQzOGVkOWMxZDI1
OWE3ODU4MzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCkBAIC0z
Niw3ICszNiw3IEBAIC0gKGlkKWluaXQKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlm
ICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2NvcmUgPSBzdGQ6Om1ha2VfdW5p
cXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKKyAgICBtX2NvcmUgPSBtYWtlVW5p
cXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKICAgICByZXR1cm4gc2VsZjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYTkw
NjIyYzIwNzRlMGNkY2VjZWYyYzZjMWM4NDk0NWQ0ZTlkZmZhYi4uM2E5NGJiOTEwZDI1OWVmYWE4
OTFkNTI5ZTgwZDJiNWIwMDIwYjRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCkBAIC0zNzgsNyArMzc4LDcgQEAgLSAodm9pZClfYXR0YWNoU2NyaXB0
RGVidWdnZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9wcml2YXRlLT5zY3JpcHRE
ZWJ1Z2dlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVj
dCk7CisgICAgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gbWFrZVVuaXF1ZTxXZWJTY3JpcHRE
ZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAogLSAodm9pZClfZGV0YWNoU2NyaXB0RGVidWdn
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKaW5kZXggZGZhN2VmZDA2MDZhZGM0OWZlMjkx
ZDA1MjFkMTMyZTZlMTljNTA3My4uYTA3MmU4MTk1MjQ5MzlhZTBmMjJiYjk4MzZkM2FjNzA1ZDg1
NzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xh
c3MgUGFnZTsKIH0KIAogY2xhc3MgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciA6IHB1Ymxp
YyBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+IGNyZWF0ZShXZWJDb3JlOjpQYWdlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5tbQppbmRleCA3MmMyMGM2OTNmZWNiYTk3MTA0NjM0MTY0MWNj
ZTExNDk0ZGU0YTY5Li42MDI0MDI5OTYyZWMzNGYwMGY0YWFkOTQzMmE3ZmM0MmJhMWQxNzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIHN0ZDo6
dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyOjpjcmVhdGUoV2ViQ29yZTo6UGFnZSYgcGFnZSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsK
IH0KIAogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6V2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlcihXZWJDb3JlOjpQYWdlJiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQppbmRleCAxYTcyNThiNDIzYTg0NTc4OTFl
NDE1ZTEwZDAwMjU2NzMwYWEyYmRlLi5lMzYzYjg1YjJiM2Q1YWUxNDczYzgzNzI3MTg1ODM0ZDUx
Nzg3YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRl
eHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRl
eHRJdGVyYXRvci5tbQpAQCAtNjksNyArNjksNyBAQCAtIChpZClpbml0V2l0aFJhbmdlOihET01S
YW5nZSAqKXJhbmdlCiAgICAgICAgIHJldHVybiBzZWxmOwogICAgIAogICAgIF9wcml2YXRlID0g
W1tXZWJUZXh0SXRlcmF0b3JQcml2YXRlIGFsbG9jXSBpbml0XTsKLSAgICBfcHJpdmF0ZS0+X3Rl
eHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihjb3Jl
KHJhbmdlKSk7CisgICAgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5nZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjhkOTcxMWU3
MGQ3NzQ1ZDdkMzliMWY5ZjU0MWExNjU0ZDY1OWM4Mi4uZmI3Y2YyZmFhZDY3YjQ5YzkzM2E2MjFl
MzI3OTEwZTEwODFhZWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9v
a1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpCiAtKHZvaWQpX2luamVjdE91dGxvb2tRdWlya3NT
Y3JpcHQKIHsKICAgICBzdGF0aWMgTlNTdHJpbmcgKm91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50
cyA9IGxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCk7Ci0gICAgX3ByaXZhdGUt
Pmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJT
Y3JpcHRXb3JsZCB3b3JsZF0pLCBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tR
dWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKSk7CisgICAgX3By
aXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3Jl
KFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tR
dWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKSk7CiAKIH0KICNl
bmRpZgpAQCAtMTQzOCw3ICsxNDM4LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICAgICBw
YWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRl
eHRNZW51Q2xpZW50KHNlbGYpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5hYmxlIHRoaXMg
b24gaU9TIGFzIHdlbGwuCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxm
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VV
bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KHNlbGYpOwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQoc2VsZik7CiAj
ZWxzZQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVD
bGllbnRJT1Moc2VsZik7CkBAIC00NjI4LDcgKzQ2MjgsNyBAQCArICh2b2lkKV9hZGRVc2VyU2Ny
aXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICop
d29ybAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdXNlclNj
cmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5n
VmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRp
bWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDog
SW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFt
ZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKKyAgICBhdXRv
IHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmlu
Z1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25U
aW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6
IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJh
bWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmll
d0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxk
KSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTQ2NTEsNyArNDY1MSw3IEBAICsgKHZv
aWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6
KFdlYlNjcmlwdFdvcmxkICopCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBzdHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291
cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5B
bGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKKyAg
ICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVy
bCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1l
cyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdH
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQoKmNvcmUod29y
bGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0K
IApAQCAtOTQwMiw3ICs5NDAyLDcgQEAgLSAoVmVjdG9yPFN0cmluZz4pX2RpY3RhdGlvbkFsdGVy
bmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dAogLSAoV2ViU2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXImKV9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcgogewogICAgIGlmICghX3By
aXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcikKLSAgICAgICAgX3ByaXZhdGUtPl9z
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOworICAgICAgICBfcHJpdmF0ZS0+X3NlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cj4oc2VsZik7CiAgICAgcmV0dXJuICpfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyOwogfQogI2VuZGlmCkBAIC05NDYxLDcgKzk0NjEsNyBAQCAtICh2b2lkKV9zZXRUZXh0SW5k
aWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yCiAtICh2b2lkKV9zZXRUZXh0SW5k
aWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTooVGV4dElu
ZGljYXRvcldpbmRvd0xpZmV0aW1lKWxpZmV0aW1lCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+dGV4
dEluZGljYXRvcldpbmRvdykKLSAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+KHNlbGYpOworICAgICAgICBf
cHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9IG1ha2VVbmlxdWU8VGV4dEluZGljYXRvcldp
bmRvdz4oc2VsZik7CiAKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRp
bmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpbc2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6
dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCldIHRv
VmlldzpuaWxdOwogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRl
cyA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOnRleHRCb3VuZGluZ1JlY3RJbldp
bmRvd0Nvb3JkaW5hdGVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdEYXRhLm1tCmluZGV4IDEwNjBjMmQ4NTRhZGEwZGNhZmIzMzU1OWM4MTFlNGVlNDk0Y2M2
ZTAuLjgyMzhhNGVjNWZlZTE2ODM2NGVkMTMwNGJjNzUxNWY1NTE3ZmU4OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQpAQCAtOTYsNyArOTYs
NyBAQCBMYXllckZsdXNoQ29udHJvbGxlcjo6TGF5ZXJGbHVzaENvbnRyb2xsZXIoV2ViVmlldyog
d2ViVmlldykKIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNj
aGVkdWxlcihMYXllckZsdXNoQ29udHJvbGxlciogZmx1c2hDb250cm9sbGVyKQogICAgIDogbV9m
bHVzaENvbnRyb2xsZXIoZmx1c2hDb250cm9sbGVyKQogewotICAgIG1fcnVuTG9vcE9ic2VydmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0
PENGSW5kZXg+KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVy
czo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihXZWJD
b3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gp
LCBbdGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hDYWxsYmFjaygpOwogICAgIH0p
OwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKGlkKWluaXQKICAgICBwbHVnaW5EYXRhYmFzZUNs
aWVudENvdW50Kys7CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBtX2Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+
KCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRleCA2NDZlNmFlZjkz
MmYxYzk5Mjk4NTM2YzgyZjJjOTU1YTcxYTE5MmNmLi5kZTUyYzg1ODY0MTQyOTJjM2M5N2VkYmU5
OTRhYmYxZDVmNzhkNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMTc2LDYgKzE3Niw3IEBAIHZvaWQgSFVE
U2xpZGVyOjpkcmFnKGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBzdGFydCkKIAogI2lmIFVT
RShDQSkKIGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50IDogcHVi
bGljIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGF5ZXJDbGllbnQoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlciogcGFyZW50KSA6IG1fcGFyZW50KHBhcmVudCkgeyB9CiAKQEAgLTI0NiwxMCArMjQ3LDEw
IEBAIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIo
KQogICAgICwgbV9tb3ZpbmdXaW5kb3coZmFsc2UpCiAgICAgLCBtX3RpbWVyKCp0aGlzLCAmRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKICNpZiBVU0UoQ0EpCi0gICAgLCBt
X2xheWVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQorICAgICwg
bV9sYXllckNsaWVudChtYWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKICAgICAsIG1fcm9v
dENoaWxkKFBsYXRmb3JtQ0FMYXllcldpbjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlTGF5ZXIsIG1fbGF5ZXJDbGllbnQuZ2V0KCkpKQogI2VuZGlmCi0gICAgLCBtX2Z1bGxzY3Jl
ZW5XaW5kb3coc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93PihzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhp
cykpKQorICAgICwgbV9mdWxsc2NyZWVuV2luZG93KG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbkNsaWVudCo+KHRoaXMpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCmluZGV4IGYxZGU4ZGQ3Y2NlNzg4N2Q2
YzgzY2IyODExNTYxM2VhODBiNTVkNzguLjEzOGMzZWM0ZTI2NGIxOGIyNzJlMjY3YzE2ODM3NTc2
YWJjODQxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVy
OwogfQogCiBjbGFzcyBIVURXaWRnZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEhVRFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSA6IG1f
cmVjdChyZWN0KSB7IH0KICAgICAKQEAgLTEwMSw2ICsxMDIsNyBAQCBjbGFzcyBIVURTbGlkZXIg
OiBwdWJsaWMgSFVEV2lkZ2V0IHsKIH07CiAKIGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIgOiBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKTsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bk1lc3NhZ2VUaHJvdHRsZXJXaW4uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oCmluZGV4IDVmZDc2ZDQxNzgyNTI2MWQ0ZWQ1Mjhh
ODU0MWY2NjJhNGY3Zjg3ZjkuLjRiNzlmZTYyYmZkODQ1OTliMjRkYzJkOTVjNjhjNTFlMjE1MDNj
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWVz
c2FnZVRocm90dGxlcldpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBQbHVnaW5WaWV3OwogCiAgICAgc3RydWN0IFBsdWdpbk1lc3Nh
Z2UgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEhX
TkQgaFduZDsKICAgICAgICAgVUlOVCBtc2c7CiAgICAgICAgIFdQQVJBTSB3UGFyYW07CkBAIC00
NCw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAgICAgY2xhc3MgUGx1
Z2luTWVzc2FnZVRocm90dGxlcldpbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHB1YmxpYzoKICAgICAgICAgUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbihQbHVnaW5W
aWV3Kik7CiAgICAgICAgIH5QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKaW5kZXggYWJhNjNk
YWI4YjMxZTQ3YWJkODA4OGIzNzgzYTgwZWM1NGMxMDIxOC4uMGY2YmVlZmZhZDFkYzAxNWM4YTQ3
N2U3ZmJlNWM5YjZhYWZhZmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgUGx1Z2luU3Ry
ZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBj
b25zdCBjaGFyCiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkgewog
ICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4oKTsKKyAgICAgICAgICAgIG1fZGVsaXZl
cnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8Y2hhcj4+KCk7CiAKICAgICAgICAgaW50IG9sZFNp
emUgPSBtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpOwogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+cmVz
aXplKG9sZFNpemUgKyBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMjEzNjMxN2YyOTk5ZDVlMTM3NDlkZjM4ZTE5YThmNGQy
ZjI1YmQ2MC4uNTQ3MTZhMGJiMmIxZmFiNzVkODFkZTQyYWVlOTZlZWEyZjZiMTNlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC01MTAs
NyArNTEwLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJiBm
cmFtZUxvYWRSZXF1ZXN0LCBib29sIHNlbmROb3RpZmljYXQKICAgICB9IGVsc2UgaWYgKCFtX3Bh
cmVudEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkodXJsKSkK
ICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAKLSAgICBzY2hlZHVsZVJlcXVl
c3Qoc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVl
c3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNBbGxvd2VkKCkpKTsK
KyAgICBzY2hlZHVsZVJlcXVlc3QobWFrZVVuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZy
YW1lTG9hZFJlcXVlc3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNB
bGxvd2VkKCkpKTsKIAogICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDA1NzI4
ZjNlZDM3MjA1MDRhZjU1Zjk4NzdmODYyMWJkYzA1Y2U2MjIuLjUyMDQ1OTRhYjZmODRkNTcwMDA0
MGRmZDI5ODFjM2Y1NjNlZGZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFBsdWdpblZpZXc6
OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiAgICAgaWYgKG1lc3NhZ2UgPT0gV01fVVNFUiArIDEgJiYKICAgICAgICAgbV9wbHVn
aW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25lTWVz
c2FnZXMpKSB7CiAgICAgICAgIGlmICghbV9tZXNzYWdlVGhyb3R0bGVyKQotICAgICAgICAgICAg
bV9tZXNzYWdlVGhyb3R0bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5NZXNzYWdlVGhyb3R0
bGVyV2luPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IG1ha2VVbmlx
dWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CiAKICAgICAgICAgbV9tZXNzYWdl
VGhyb3R0bGVyLT5hcHBlbmRNZXNzYWdlKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA1MzBiNjllZDcxOWMyN2FjYzZiMDdlMzUx
NTkyMjFmNTUyNmM1MzA1Li4zYmY0NGQ4N2QxOGQ1ZjI3M2NkMjk1MzU2NzZiMjQwOGYyYzkxNGUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIDog
cHVibGljIFdlYkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShJ
V2ViRGF0YVNvdXJjZSogd2ViRGF0YVNvdXJjZSkgOiBtX3dlYkRhdGFTb3VyY2Uod2ViRGF0YVNv
dXJjZSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCmlu
ZGV4IGUzZWMzM2ZkNDk5N2EwMWEyMjVkNWUxY2Y5YjRmNGI2MmQ3N2UyMmQuLmM0MWY4NmUwNzNk
OGRjYjllNGE4YTUyOTRmMGQ2M2NjOTRlNTYzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQuaApAQCAtNDAsNiArNDAsNyBAQAogY2xhc3MgV2ViVmlldzsKIAog
Y2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgOiBwdWJsaWMgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KFdlYlZpZXcmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDRhNDliOTRiYmE1OGQwYzU0NjMzMjljM2Y2ZWYyM2U4
NDg4YjdhZjMuLjdiMjk5Y2VlMjVlY2QxMGJiYTYyMWM4NTgxYjA2YWUwNmM1YTFkMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1h
eEZpbGVQYXRoc0xpc3RTaXplID0gVVNIUlRfTUFYOwogV2ViQ2hyb21lQ2xpZW50OjpXZWJDaHJv
bWVDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICwgbV9ub3RpZmljYXRpb25zRGVsZWdhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlPih3ZWJWaWV3KSkK
KyAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKG1ha2VVbmlxdWU8V2ViRGVza3RvcE5vdGlm
aWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
aW5kZXggNDFkNWYwNmFlYWNiN2UxNDE3ZDRiNzAyNDAwNjBiYmU1N2Y2OTMwZi4uNzg3NTQzMjUz
ZDVkZmY0ZWM2NjhlYmU4OGYwODg1ZDBiYWRiNjU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM4
LDYgKzM4LDcgQEAgY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTsKIGludGVy
ZmFjZSBJV2ViVUlEZWxlZ2F0ZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmgKaW5kZXggYzlkZTQ5YjNjZDE0NTUxNzI4ZmIyZjlkOTZlZjQ5MGU5OTE1OGJk
NC4uZjQ4ZWU3MzBlZWY3MTk3OWU0ZDhkMmMzMjdlZDFiYTE3Yjk0ZmZhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFz
cyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4
dE1lbnVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlLmgKaW5kZXggODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4Njc3MjZhNzQ2
MDc3Mi4uNGNmZDEwMjY1ZDFkMDdhNTdmMDMwYTRlNmIxNTA2OWNiYmZiOTMzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlm
aWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAtNDEsNiArNDEsNyBA
QCBjbGFzcyBEb2N1bWVudDsKIH0KIAogY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxl
Z2F0ZSA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVs
ZWdhdGUoV2ViVmlldyogdmlldyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBiNTk4OTMzMjkxMDA5ZTI4
NTFlZDc1NDE1ZWM0YWEwZmU0MDNkNjExLi40NWUzY2E3Mjc1M2FkMWFjMTE1M2JlOTYxOTNmNmVk
NjIxZmY4OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiBjbGFzcyBXZWJWaWV3
OwogCiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQo
V2ViVmlldyopOwogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCBkYjYzNTJkNjM4MTZmN2M5YWVlZTlmNzQ0ZTQ4ZTM4MWU4NTZk
MmI1Li42OWQ3ZWQzZTBhYTMxZjEzYmVhNjRjZjBjMjc2NWUyNTRmYmY4ZTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBX
ZWJFZGl0b3JVbmRvVGFyZ2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRv
ckNsaWVudChXZWJWaWV3Kik7CiAgICAgfldlYkVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDhlMzU0YjcxY2RmZDJhNWY5YjhiMDExYTAzMjlkNzQyNGJj
OTBiYmMuLmQ0YjJmN2Y2M2U4NjA4NTkzOTM0NTJiZDYyZTEyODVkMmU4YWQ0N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTkzLDYgKzkzLDcgQEAgc3RhdGljIFdlYkRhdGFT
b3VyY2UqIGdldFdlYkRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIH0KIAogY2xh
c3MgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJpdmF0ZSgpIAogICAgICAgICA6IG1fcG9saWN5RnVuY3Rpb24obnVsbHB0cikK
QEAgLTEwNyw3ICsxMDgsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByaXZhdGUgewogfTsKIAogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiB3ZWJGcmFtZSkKLSAgICA6IG1fcG9saWN5TGlzdGVu
ZXJQcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+
KCkpCisgICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShtYWtlVW5pcXVlPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcml2YXRlPigpKQogICAgICwgbV93ZWJGcmFtZSh3ZWJGcmFtZSkKICAgICAs
IG1fbWFudWFsTG9hZGVyKDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNl
KSAKQEAgLTk3Myw3ICs5NzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbQogCiAgICAgQVNT
RVJUKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBjYWNoZWRGcmFtZS0+
ZG9jdW1lbnRMb2FkZXIoKSk7CiAKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4oc3Rh
dGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVGcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CisgICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0
YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBlYjk3NThiZDQyMTA3ZDJm
OWE4NTRlNGU2ODgxNjZhNmY1MTVmYjlmLi5iYmE5YzlmNDQ1MzU4ZDdjZTNlYTAzZjg5NjY0MWJk
NmU1ZTA0MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAg
Y2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdl
b2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNs
aWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDc1Njk1OTBj
MWIzY2YzODE2ZmM0MmEzNWJmM2Y2NmJmZDc4OTAyMjQuLmY4MGFlMDQ4YjgyZGJkYjIzNDY1NDY4
ZDkzM2M2MGE3MDk3MmM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTY5LDcg
KzE2OSw3IEBAIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7Ci0gICAgbV9m
cm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVu
ZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRl
RnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3Rl
ZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdl
YlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogICAgIG1fZnJvbnRl
bmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
bV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9IGZyb250ZW5k
SHduZDsKICAgICByZXR1cm4gdGhpczsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6aGlnaGxpZ2h0KCkKICAgICBib29sIGNyZWF0aW5nSGlnaGxpZ2h0ID0gIW1f
aGlnaGxpZ2h0OwogCiAgICAgaWYgKGNyZWF0aW5nSGlnaGxpZ2h0KQotICAgICAgICBtX2hpZ2hs
aWdodCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViTm9kZUhpZ2hsaWdodD4obV9pbnNwZWN0ZWRXZWJW
aWV3KTsKKyAgICAgICAgbV9oaWdobGlnaHQgPSBtYWtlVW5pcXVlPFdlYk5vZGVIaWdobGlnaHQ+
KG1faW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBpZiAobV9oaWdobGlnaHQtPmlzU2hvd2luZygp
KQogICAgICAgICBtX2hpZ2hsaWdodC0+dXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmlu
ZGV4IDk1YzlhZmE4NTAwMmE1NDMyNzBiN2NlNmIzODhjNzBkNDg5MTg1MTguLjBhNTE0ODM5MWJh
ZTEyNjBkZjY4NjZiMjg3MDdlNjYwODRlOTIzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBA
IC01MCw2ICs1MCw3IEBAIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBjbGFzcyBXZWJWaWV3Owog
CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvckNs
aWVudChXZWJWaWV3Kik7CiAKQEAgLTk0LDYgKzk1LDcgQEAgY2xhc3MgV2ViSW5zcGVjdG9yQ2xp
ZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3Bl
Y3QKIH07CiAKIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwsIFdlYkNvcmU6OldpbmRvd01l
c3NhZ2VMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywg
SFdORCBpbnNwZWN0ZWRXZWJWaWV3SHduZCwgSFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0
cjxXZWJWaWV3PiYgZnJvdG5lbmRXZWJWaWV3LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdl
Ykluc3BlY3RvckNsaWVudCosIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4pOwogICAgIHZpcnR1
YWwgfldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCAyNDkzYzdiMGI3OWZjNGZkOGVjZWMw
ZWE5NjY3YzZlZTJhYzNhMDRhLi40NDU0MmExZGExMDNhYTQ0NzYzZTk0ZDRmYWJhODY0ZWQwMmZj
N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAKQEAgLTM1NSw2ICszNTUsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0SURC
UGVyT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogfQogCiBjbGFzcyBEaWRN
b2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEaWRNb2RpZnlPcmlnaW5EYXRhKTsKIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNl
TWFuYWdlciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCAyN2FmMWJh
ZTY1M2VmZjAyZjY3MDRmN2UzOWFkMGUxYWM1MGFkNzBiLi44YWZiYTBmNmQ1M2FmZDU1NTg0NWMx
OTUzNmMyYTljMWVjNWYzN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIC8vIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJF
bGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQotICAgIDogbV9y
ZXN1bHQoc3RkOjptYWtlX3VuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQorICAgIDogbV9y
ZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0Nv
dW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWci
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBhODFj
MDBlNTZjNWRlMmFlYmMxMmFiOGI2ZGIxMWJjOTM0ZWJiYmRhLi5mYjg4ZTM5ZTdiNTZhYzMyZGNm
NWNmNTAxMWMzNTQ4MTcxYTZjM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeUl0ZW0uY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6
aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oX0luX29wdF8gdm9pZCogZGljdGlvbmEK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IHJlZGlyZWN0VVJMc1ZlY3RvcjsK
ICAgICBpZiAoQ0ZBcnJheVJlZiByZWRpcmVjdFVSTHNSZWYgPSBzdGF0aWNfY2FzdDxDRkFycmF5
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5UmVmLCByZWRpcmVjdFVSTHNLZXkp
KSkgewogICAgICAgICBDRkluZGV4IHNpemUgPSBDRkFycmF5R2V0Q291bnQocmVkaXJlY3RVUkxz
UmVmKTsKLSAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oc2l6ZSk7CisgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlx
dWU8VmVjdG9yPFN0cmluZz4+KHNpemUpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkg
PCBzaXplOyArK2kpCiAgICAgICAgICAgICAoKnJlZGlyZWN0VVJMc1ZlY3RvcilbaV0gPSBTdHJp
bmcoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVkaXJl
Y3RVUkxzUmVmLCBpKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIu
Y3BwCmluZGV4IDJmMWYyZjQ4MDdlYjljNGZlNzA4MzVkYjc4ZTM0YTM0YmNmZjM2ZDAuLmQ2NWRl
MTllZTk5YzQ1MTQ0NWRmYmYxYjEzNTlkYzJhOGJhMzhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DQUQzRFJlbmRlcmVyLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxE
M0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+IENBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9j
ZXNzaW5nCiAgICAgbWVtY3B5KG92ZXJsYXlRdWFkQnVmZmVyLCBvdmVybGF5UXVhZFZlcnRpY2Vz
LCBzaXplb2Yob3ZlcmxheVF1YWRWZXJ0aWNlcykpOwogICAgIG92ZXJsYXlRdWFkLT5VbmxvY2so
KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4
dD4oc2NlbmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RDNE
UG9zdFByb2Nlc3NpbmdDb250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKIH0KIAog
Ly8gRklYTUU6IDxyZGFyOi8vNjUwNzg1MT4gU2hhcmUgdGhpcyBjb2RlIHdpdGggQ29yZUFuaW1h
dGlvbidzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCmluZGV4IDY3ZDQ4MzUzYjAz
ZDcyZWE4YTljMjhhYjg3MGQ3NWRhMTFkODA4ZWMuLjQ3ZWFkZGE2NTYxMmU2MDUwZDJjMjhhY2U2
ZjRjOWFjZTljYmI1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCkBAIC00
Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXS1FDQSB7CiBjbGFzcyBJbWFnZTsKIAogY2xhc3MgRDNE
UG9zdFByb2Nlc3NpbmdDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQoY29uc3QgQ0NvbVB0cjxJRGlyZWN0
M0RUZXh0dXJlOT4mLCBjb25zdCBDQ29tUHRyPElEaXJlY3QzRFZlcnRleEJ1ZmZlcjk+Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaAppbmRleCBmOTc1NWJi
OGRhZWFhYjM5ZDM0MjJlZThmZWIwZjI0YzFiMzU0ZmVkLi5iMjY5NTQ5OWI4MjZiOTliODJlYWZh
ODQ1NDE4N2QxOWY2ZTA3ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJOb2RlSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhp
Z2hsaWdodC5oCkBAIC0zNSw2ICszNSw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJO
b2RlSGlnaGxpZ2h0IDogV2ViQ29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb2RlSGlnaGxpZ2h0KFdlYlZp
ZXcqKTsKICAgICB+V2ViTm9kZUhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggN2JkOTg4OTYxMTFjM2IzZmU2
ZmU1NGYwYTI0Nzk2NjA2YjIyYTc1Zi4uOTI1MzJkYmRjYTQxYjg1MzFlOTE2OGNkZGRlMzFiNTdh
N2Y0NTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0
aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRp
b25DZW50ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgT2JqZWN0T2JzZXJ2ZXJMaXN0
OjppdGVyYXRvciBPYnNlcnZlckxpc3RJdGVyYXRvcjsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IE9iamVjdE9ic2VydmVyTGlzdD4gTWFwcGVkT2JzZXJ2ZXJzOwogCiBzdHJ1Y3QgV2ViTm90aWZp
Y2F0aW9uQ2VudGVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIE1hcHBlZE9ic2VydmVycyBtX21hcHBlZE9ic2VydmVyczsKIH07CiAKQEAgLTUzLDcg
KzU0LDcgQEAgc3RydWN0IFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGUgewogSVdlYk5vdGlm
aWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjptX2RlZmF1bHRDZW50ZXIgPSAw
OwogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCi0gICAg
OiBkKHN0ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKKyAg
ICA6IGQobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAg
IGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRp
b25DZW50ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9u
Q2VudGVyLmgKaW5kZXggMzg5ZTk4YzdkOWZkY2EzMDMxNjAxNGY5ZjFkMWY2MjBhMzQ5ZWYyZi4u
ZjE0OTgxMjJkOGRlM2MzMzczMjU0NDhiZTM5MTQ0MjRlYzc2MDA1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgKQEAgLTMxLDYgKzMxLDcg
QEAKIHN0cnVjdCBXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlOwogCiBjbGFzcyBXZWJOb3Rp
ZmljYXRpb25DZW50ZXIgZmluYWwgOiBwdWJsaWMgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk5vdGlm
aWNhdGlvbkNlbnRlciogY3JlYXRlSW5zdGFuY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAppbmRleCA5NzYxNDhlMzNmNzQ0NmQ3YzM4NDk5NTlkNmNmNzNkZWY0OGY2N2ZmLi45
YTYxMDc5ZWJlNWQzOTBhM2VjNDlmY2NkMDg2NGQ5NzMxNjRhMjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcApAQCAtMTg4MCw3ICsxODgwLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5k
bGVNb3VzZUV2ZW50KFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkK
ICAgICAgICAgbW91c2VFdmVudC5zZXRDbGlja0NvdW50KGdsb2JhbENsaWNrQ291bnQpOwogICAg
ICAgICBoYW5kbGVkID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZU1v
dmVkKG1vdXNlRXZlbnQpOwogICAgICAgICBpZiAoIW1fbW91c2VPdXRUcmFja2VyKSB7Ci0gICAg
ICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8VFJBQ0tNT1VTRUVW
RU5UPigpOworICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxUUkFDS01PVVNFRVZFTlQ+KCk7CiAgICAgICAgICAgICBtX21vdXNl
T3V0VHJhY2tlci0+Y2JTaXplID0gc2l6ZW9mKFRSQUNLTU9VU0VFVkVOVCk7CiAgICAgICAgICAg
ICBtX21vdXNlT3V0VHJhY2tlci0+ZHdGbGFncyA9IFRNRV9MRUFWRTsKICAgICAgICAgICAgIG1f
bW91c2VPdXRUcmFja2VyLT5od25kVHJhY2sgPSBtX3ZpZXdXaW5kb3c7CkBAIC02Nzk0LDcgKzY3
OTQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUoX0lu
XyBCU1RSIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYgKCFt
X2VtYmVkZGVkVmlld01JTUVUeXBlcykKLSAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgbV9lbWJlZGRl
ZFZpZXdNSU1FVHlwZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKIAogICAgIG1f
ZW1iZWRkZWRWaWV3TUlNRVR5cGVzLT5hZGQodG9TdHJpbmcobWltZVR5cGUpKTsKICAgICByZXR1
cm4gU19PSzsKQEAgLTY4OTQsNyArNjg5NCw3IEBAIHZvaWQgV2ViVmlldzo6ZW50ZXJWaWRlb0Z1
bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50CiAg
ICAgICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyKTsKICAgICB9CiAKLSAg
ICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI+KCk7CisgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyID0g
bWFrZVVuaXF1ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyPigpOwogICAgIG1fZnVsbFNjcmVl
blZpZGVvQ29udHJvbGxlci0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwogICAgIG1f
ZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYKQEAg
LTY5NDYsNyArNjk0Niw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXAo
X0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9j
YXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFr
ZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdo
aXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLAogICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QsIGJsYWNrbGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50
U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLAogICAg
ICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxs
RnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSk7CkBAIC02OTczLDcgKzY5NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJT
dHlsZVNoZWV0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0g
cmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7Ci0gICAgYXV0byBzdHls
ZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1
cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdW
ZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksCisgICAgYXV0byBzdHlsZVNoZWV0ID0g
bWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1Zl
Y3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0
LCBibGFja2xpc3RDb3VudCksCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdElu
QWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNl
clN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigp
LmFkZFVzZXJTdHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJ
bmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTcyMzcsNyAr
NzIzNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFj
Y2VsZXJhdGVkKQogICAgIH0KICNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBpZiAo
YWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAg
IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRl
ZDsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFw
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAppbmRleCBlZWNhNzM5ZDJiMzk0
ZTg2MDM1MWJhMWI0NjRkZTU0NzhiOWJiMTY3Li5kYjM2ZWI5ZGVkMmI5ZTBmNWY2ZWY0MGRiNmM2
OTkxOWE3MzA2ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAu
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaApAQCAtODIsNiArODIsNyBA
QCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
ID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0
ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwKIHR5
cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZE1hY3JvU2VtaWNvbG9uaWZpZXIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oCmluZGV4IGMwNDRkNzczYjg3OWE2NmRmYWRk
MmUyY2EzMTVlZWVhMzc2ZmZhNGEuLjNhYTFkMjA5NTFkYmYzMzY0ZTdkMTZkZDIzNjQzZDBjZDk3
ZjZmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMu
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKQEAgLTEyMyw2
ICsxMjMsNyBAQCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6
ZV90IHNpemUpID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSA9IGRlbGV0ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZh
dGU6IFwKIHR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1hY3JvU2VtaWNvbG9u
aWZpZXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGM4YmZiYTI5YzBmYThmNmMwNmNkODRkNWI4NmM2NmUxODVkYTJmYzkuLjEwMzFkMzM5N2Nl
NzhhOTEyNjFjMzg2NWUwNTRjZTJjMjg0MDM4ODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTktMDgtMTQgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFr
ZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwOgorICAgICAgICAoYWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKToKKyAgICAg
ICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCk6CisgICAgICAgIChUZXN0UnVu
bmVyOjpydW5VSVNjcmlwdCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxl
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAg
ICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgIChldmVudFByZXNzZWRNb3VzZUJ1dHRv
bnNTd2l6emxlckZvclZpZXdBbmRFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L0RSVERhdGFPYmplY3QuY3BwOgorICAgICAgICAoRFJURGF0YU9iamVjdDo6U2V0RGF0YSk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAg
ICAgKEZyYW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAgICAgICAoRFJUVW5kb01hbmFnZXI6
OkRSVFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUpOgorICAg
ICAgICAoVUlEZWxlZ2F0ZTo6cmVzZXRVbmRvTWFuYWdlcik6CisgICAgICAgICogTWluaUJyb3dz
ZXIvd3BlL21haW4uY3BwOgorICAgICAgICAoY3JlYXRlVmlld0JhY2tlbmQpOgorICAgICAgICAo
bWFpbik6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250ZXh0Lmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhv
ZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1l
dGhvZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db3VudGVycy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6cnVuSlNUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdFbnN1cmUpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdE1vdmluZ1VzaW5nQWRkKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0xvY2suY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuTG9ja1Rlc3Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VW5pcXVlUmVmLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDQVJpbmdCdWZmZXJUZXN0OjpTZXRVcCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVGVzdFZhbHVlKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3Bw
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNy
ZWF0ZVBhZ2UuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyVXNlck1lc3NhZ2VSb3VuZFRyaXBUZXN0OjpT
ZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0MldpbGxMb2FkVGVzdDo6U2V0VXApOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFy
YW5jZUluQnVuZGxlX0J1bmRsZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkZvcmNlTGln
aHRBcHBlYXJhbmNlSW5CdW5kbGVUZXN0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHA6Cisg
ICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICh0ZXN0V2ViVmlld0F1dGhlbnRpY2F0
aW9uUHJveHlIVFRQUyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1dlYlByb2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NRE9NV2luZG93VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01ET01XaW5kb3dUZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRp
ZXNDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgIChhcHBs
eVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJz
KToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246
YWRkVG9XaW5kb3c6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViS2l0VGVzdFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250
T3B0aW9ucy5tbToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIGluaXRXaXRoRm9udE9wdGlv
bnM6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpkaWRDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
U3RyaW5nRnVuY3Rpb25zLmg6CisgICAgICAgIChXVFI6OnRvU1REKToKKyAgICAgICAgKFdUUjo6
dG9XVEZTdHJpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgor
ICAgICAgICAoV1RSOjpjcmVhdGVUZXN0VVJMKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnJ1blRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVh
dGVXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnJ1blVJU2lkZVNjcmlwdCk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6Z2V0
R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0
Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
UmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHA6Cisg
ICAgICAgIChXVFI6OndwZUtleVN5bUZvcktleVJlZik6CisgICAgICAgICogd3BlL2JhY2tlbmRz
L1ZpZXdCYWNrZW5kLmg6CisKIDIwMTktMDgtMTQgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0ODUyNi4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggOTBjNjRjMzYxNGNkYzQyZGI2ZjQ5NDJi
ZGUxYWQxMzBmZDFmZDljYi4uZDJiZjJlODJhY2Q2NDVjNTc4ZDYyZmM2YjcwYzg3YmJhOWZlNmNm
MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTM2MywxMSArMzYzLDExIEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuCiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAogICAg
IHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUob3Jp
Z2luLmdldCgpKTsKLSAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hh
cltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJp
bmdHZXRVVEY4Q1N0cmluZyhvcmlnaW4uZ2V0KCksIG9yaWdpbkJ1ZmZlci5nZXQoKSwgbWF4TGVu
Z3RoICsgMSk7CiAKICAgICBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmlu
Z1NpemUoZGVzdGluYXRpb24uZ2V0KCkpOwotICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBkZXN0aW5h
dGlvbkJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4
TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhkZXN0aW5hdGlvbi5nZXQo
KSwgZGVzdGluYXRpb25CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgVGVzdFJ1
bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFBy
aXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgc3RhdGljIEpTVmFsdWVS
ZWYgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlMKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0
aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShoZWFkZXIuZ2V0KCkpOwotICAg
IGF1dG8gaGVhZGVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCAr
IDEpOworICAgIGF1dG8gaGVhZGVyQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5n
KGhlYWRlci5nZXQoKSwgaGVhZGVyQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAg
IFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIzOTQsNyArMjM5NCw3IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sIHNob3VsZFBhaW50QnJva2Vu
SW1hZ2UpCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoSlNT
dHJpbmdSZWYgY2hhbm5lbCkKIHsKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplKGNoYW5uZWwpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gYnVmZmVyID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAg
ICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGNoYW5uZWwsIGJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3Ro
ICsgMSk7CiAKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldExvZ0NoYW5uZWxUb0FjY3VtdWxh
dGUoeyBidWZmZXIuZ2V0KCkgfSk7CkBAIC0yNDY0LDcgKzI0NjQsNyBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnJ1blVJU2NyaXB0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiBzY3JpcHQs
IEpTVmFsdWVSZQogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKGNhbGxiYWNrSUQsIGNhbGxi
YWNrKTsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAgIG1fVUlTY3JpcHRD
b250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXVFI6OlVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOwor
ICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPFdUUjo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAKICAgICBTdHJpbmcgc2NyaXB0U3Ry
aW5nKEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzY3JpcHQpLCBKU1N0cmluZ0dldExlbmd0aChz
Y3JpcHQpKTsKICAgICBtX1VJU2NyaXB0Q29udGV4dC0+cnVuVUlTY3JpcHQoc2NyaXB0U3RyaW5n
LCBjYWxsYmFja0lEKTsKQEAgLTI1MjEsNyArMjUyMSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
T3BlblBhbmVsRmlsZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZmlsZXNWYWx1
ZSkKIAogICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRl
eHQsIGZpbGVWYWx1ZSwgbnVsbHB0cikpOwogICAgICAgICBzaXplX3QgZmlsZUJ1ZmZlclNpemUg
PSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoZmlsZS5nZXQoKSkgKyAxOwotICAg
ICAgICBhdXRvIGZpbGVCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oZmlsZUJ1ZmZl
clNpemUpOworICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRV
VEY4Q1N0cmluZyhmaWxlLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpLCBmaWxlQnVmZmVyU2l6ZSk7
CiAKICAgICAgICAgbV9vcGVuUGFuZWxGaWxlcy5wdXNoX2JhY2soZmlsZUJ1ZmZlci5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0g
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMmU5Mzk3
ZmY1OTQ5MjUwMGZiMDg2ODcxYzhhZjdjNmYxNjY5YWJmNC4uMTMwNjhjYWUwMzUzMmJkOGYyNWZk
NGJkYmM1MjVmNTJjNDIwMGI5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbQpAQCAtMTUzNSw3ICsxNTM1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJh
bWVzQXNUZXh0KFdlYkZyYW1lICpmcmFtZSkKICAgICAvLyB0aGUgcmVzdWx0IHdpdGhvdXQgYW55
IGNvbnZlcnNpb24uCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZiA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKWlu
bmVyVGV4dCkpOwogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRG
OENTdHJpbmdTaXplKHN0cmluZ1JlZi5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVf
dCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KHN0cmluZ1Jl
Zi5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBbcmVzdWx0IGFwcGVuZEZv
cm1hdDpAIiVAXG4iLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGJ1ZmZlci5n
ZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV07CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5k
ZXggNDYxYmQzZGYzZWJiMjYwM2FjMzIxODI4ODIxOGRkOGY2OTE2OGZmZC4uM2JlMzMyMjFkNmIz
ZWJjMzU2ZDUxZTMzNGEyNGQ5MjlhZTI1M2E5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTU2OCw3ICs1NjgsNyBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IGV2ZW50UHJlc3NlZE1v
dXNlQnV0dG9uc1N3aXp6bGVyRm9yVgogewogICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltX
ZWJIVE1MVmlldyBjbGFzc11dKQogICAgICAgICB2aWV3ID0gWyhXZWJIVE1MVmlldyAqKXZpZXcg
X2hpdFZpZXdGb3JFdmVudDpldmVudF07Ci0gICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNz
OltOU1Njcm9sbGVyIGNsYXNzXV0gPyBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenps
ZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5V
TEw7CisgICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Njcm9sbGVyIGNsYXNzXV0g
PyBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVj
dG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRF
dmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5VTEw7CiB9CiAKIHN0YXRpYyBOU1VJbnRlZ2Vy
IHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EUlREYXRhT2JqZWN0LmNwcAppbmRleCBlZjJkMmVmYjg1OWY0YjhhMjJmMzBjNDY3YWNl
MWY4YWFkMTU3YTRkLi43NmEyMWE1OGE5ZjY2ZGRlMTYwNzI5ZjhmZWUxZTE1Zjk0OWU2NjI0IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCkBAIC0yNDksNyAr
MjQ5LDcgQEAgU1RETUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEoX0luXyBGT1JNQVRF
VEMqIHBmb3JtYXRldGMsIF9Jbl8gU1RHTUVESVVNKgogICAgIGlmICghcGZvcm1hdGV0YyB8fCAh
cG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8gZm9ybWF0ZXRj
ID0gc3RkOjptYWtlX3VuaXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0byBmb3JtYXRldGMgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxGT1JNQVRFVEM+KCk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNUR01FRElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0Z01lZChuZXcgU1RHTUVE
SVVNKTsKIAogICAgIFplcm9NZW1vcnkoZm9ybWF0ZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRD
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcApp
bmRleCBjODBkZjFiZTVmMmRlNDdkM2I4MzE2MzdlZjZlOWZiY2Q5MzRjOGU2Li4xMWM5MzM5YjE2
ZDgwNGQyYzIwMWM5MzI5ZjRhOGMzNTQ0MmE4M2NiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgc3RyaW5nIGRl
c2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KElXZWJGcmFtZSogd2ViRnJhbWUpCiB9CiAK
IEZyYW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSgpCi0gICAgOiBtX2djQ29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPEdDQ29udHJvbGxlcj4oKSkKLSAgICAsIG1fYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4o
KSkKLSAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbnB1
dENvbnRyb2xsZXI+KCkpCisgICAgOiBtX2djQ29udHJvbGxlcihtYWtlVW5pcXVlPEdDQ29udHJv
bGxlcj4oKSkKKyAgICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcj4oKSkKKyAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihtYWtl
VW5pcXVlPFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9VSURlbGVnYXRlLmNwcAppbmRleCBmMGFkYmNlNDc5NmZhYmY0ZjBkNDJiMjcxMTYzMzcw
MWFjNzgxMzE0Li40N2FhMjcyYmYxOTVjZDlhMjVhZjI4NjU1ZDM3MWY0MTYwMGY0NTk4IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCkBAIC0xMDEsOCArMTAxLDggQEAg
Y2xhc3MgRFJUVW5kb01hbmFnZXIgewogfTsKIAogRFJUVW5kb01hbmFnZXI6OkRSVFVuZG9NYW5h
Z2VyKCkKLSAgICA6IG1fcmVkb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb1N0YWNrPigp
KQotICAgICwgbV91bmRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCisg
ICAgOiBtX3JlZG9TdGFjayhtYWtlVW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKKyAgICAsIG1fdW5k
b1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigpKQogewogfQogCkBAIC0xNDYsNyArMTQ2
LDcgQEAgdm9pZCBEUlRVbmRvTWFuYWdlcjo6dW5kbygpCiB9CiAKIFVJRGVsZWdhdGU6OlVJRGVs
ZWdhdGUoKQotICAgIDogbV91bmRvTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5h
Z2VyPigpKQorICAgIDogbV91bmRvTWFuYWdlcihtYWtlVW5pcXVlPERSVFVuZG9NYW5hZ2VyPigp
KQogICAgICwgbV9kZXNrdG9wTm90aWZpY2F0aW9ucyhuZXcgRFJURGVza3RvcE5vdGlmaWNhdGlv
blByZXNlbnRlcikKIHsKICAgICBtX2ZyYW1lLmJvdHRvbSA9IDA7CkBAIC0xNTcsNyArMTU3LDcg
QEAgVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCiAKIHZvaWQgVUlEZWxlZ2F0ZTo6cmVzZXRVbmRv
TWFuYWdlcigpCiB7Ci0gICAgbV91bmRvTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5k
b01hbmFnZXI+KCk7CisgICAgbV91bmRvTWFuYWdlciA9IG1ha2VVbmlxdWU8RFJUVW5kb01hbmFn
ZXI+KCk7CiB9CiAKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5j
cHAKaW5kZXggYmU2NDYwZTU2YjdiNzBjZDI0ODBmYzg3ZGUyYjliYTk3MGU1OGMzOC4uNDM5MTky
OTc5MWRkNjcxMzFjODU4YTE2Njg5YzUyYmFkYzFkZDg2MiAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNw
cApAQCAtMTI5LDggKzEyOSw4IEBAIHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQZXJtaXNzaW9uUmVx
dWVzdChXZWJLaXRXZWJWaWV3ICosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0CiBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ+IGNyZWF0ZVZpZXdC
YWNrZW5kKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiB7CiAgICAgaWYgKGhlYWRs
ZXNzTW9kZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFVG9vbGluZ0JhY2tl
bmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3aWR0
aCwgaGVpZ2h0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRz
OjpIZWFkbGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0
KTsKIH0KIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMjUxLDcgKzI1MSw3IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICAgIG51bGxwdHIpKTsKICAgICBnX29iamVjdF91
bnJlZihzZXR0aW5ncyk7CiAKLSAgICBiYWNrZW5kUHRyLT5zZXRJbnB1dENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPElucHV0Q2xpZW50Pihsb29wLCB3ZWJWaWV3KSk7CisgICAgYmFja2VuZFB0ci0+
c2V0SW5wdXRDbGllbnQobWFrZVVuaXF1ZTxJbnB1dENsaWVudD4obG9vcCwgd2ViVmlldykpOwog
I2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkKICAg
ICBhdXRvKiBhY2Nlc3NpYmxlID0gd3BlX3ZpZXdfYmFja2VuZF9kaXNwYXRjaF9nZXRfYWNjZXNz
aWJsZSh3cGVCYWNrZW5kKTsKICAgICBpZiAoQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udGV4dC5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250ZXh0LmgKaW5kZXggNGUwMjBmMTk2Y2QwMzNkNjFlZTBlNjI4ZjZhMWU1OWNhMWMzMzQ1
OC4uMGI4NGQyZDQ1NDU1ODNkZTlmYzBkZWMxMmE0YWE4OGE2NTllZDE5OCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmgK
KysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250
ZXh0LmgKQEAgLTY4LDYgKzY4LDcgQEAgdHlwZWRlZiBlbnVtICB7CiB9IENhbGxiYWNrVHlwZTsK
IAogY2xhc3MgVUlTY3JpcHRDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVSVNjcmlwdENvbnRleHQpOwogcHVibGljOgogICAg
IFVJU2NyaXB0Q29udGV4dChVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSYpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmggYi9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaAppbmRleCAyOGRi
MTBhNDc5OTYzMGM2NGM1NWQwNzg2YzAwZWUwOTQ4OTE0NWUyLi4zOWI0ZTVlYTcxODM2ODhjZGVj
OWJlZmNjOTY0Y2U4OTNhNTQzZjA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaApAQCAtMjYsOSArMjYsMTEgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogY2xhc3MgQ2xhc3NNZXRob2RT
d2l6emxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ2xhc3NNZXRob2RTd2l6emxlcik7CiBwdWJsaWM6CiAgICAgQ2xhc3NNZXRob2RT
d2l6emxlcihDbGFzcywgU0VMLCBJTVApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9jb2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL2NvY29hL0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaAppbmRleCBiOGEwYjBiMThkMTMxZWNj
OTliMjZhMzkxYzg5MGY5ZjZjNmMwNzJlLi41ZDdkODc1ZWVkZTZlYWU4ZmQ0MjllYjRhMTc1MDZj
MzhkYTYzNWViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3Rh
bmNlTWV0aG9kU3dpenpsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0lu
c3RhbmNlTWV0aG9kU3dpenpsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCiBjbGFzcyBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyKTsKIHB1YmxpYzoKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyKENsYXNz
LCBTRUwsIElNUCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgKaW5kZXggZjllYTIyNDAyNjE1MGQ4ZTFh
YzZiYjc2MTViNmRlMzg5MGFmNjcwZS4uYWI1YzUyZjc1ZDFhYzZhZjk2MGFjMTRjYTcwYjVjYjc0
ZmEzNjI4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaApAQCAtMjcsNiArMjcsOCBAQAogI2lmbmRl
ZiBDb3VudGVyc19oCiAjZGVmaW5lIENvdW50ZXJzX2gKIAorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisKIHN0cnVjdCBDb3B5TW92ZUNvdW50ZXIgewogICAgIHN0YXRpYyB1bnNpZ25lZCBj
b25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29weUNvdW50OwpAQCAtNTAs
NiArNTIsNyBAQCBzdHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsKIAogCiBzdHJ1Y3QgQ29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHN0YXRpYyB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0aWMgdW5z
aWduZWQgZGVzdHJ1Y3Rpb25Db3VudDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9KYXZhU2NyaXB0VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0
LmNwcAppbmRleCAyMTM2ZTk4ZDhlYmI4NzVkNTk3ZmM2ZTA3YzdiMDFlZDViODRhZTE2Li42YTIz
MzYzMjk0MWFjZjYwNzA1OTQ5NDI2NDAxYjMyNzMzN2M3MDgxIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L0phdmFTY3JpcHRUZXN0LmNwcApAQCAtNzUsNyArNzUsNyBAQCA6OnRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdCBydW5KU1Rlc3QoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwg
V0tQYQogICAgIFV0aWw6OnJ1bigmY29udGV4dC5kaWRGaW5pc2gpOwogCiAgICAgc2l6ZV90IGJ1
ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY29udGV4dC5hY3R1
YWxTdHJpbmcuZ2V0KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKGNvbnRleHQuYWN0dWFsU3RyaW5nLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUp
OwogICAgIAogICAgIHJldHVybiBjb21wYXJlSlNSZXN1bHQoc2NyaXB0LCBidWZmZXIuZ2V0KCks
IGV4cGVjdGVkUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1VdGlsaXRpZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5j
cHAKaW5kZXggOGY4ZDc2OGE1M2MyNzUxYTI0M2UwNTk1ZTJjMGMwZjQ0NWRkOTZjOC4uYmJiZmY3
MDllNjdkMzU5YjRlNDgxNzFlZDdjNGMyNDAwOGE1NjdmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgV0tDb250ZXh0UmVmIGNy
ZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RO
YW1lLCBXS1QKIHN0ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJp
bmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNp
emUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0
dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCBhZDJhNzMyZDUxOTQ3YmJjN2FmYzY0
ZTI3ZDQyMTVjZTMyODdkZGVlLi4wYzI3YTQ2MTY0NWZiYTEyYTVjNjk1ZDkzMjY0MzA1MjZjNGVm
MTI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDgg
QEAKICNpZm5kZWYgUGxhdGZvcm1XZWJWaWV3X2gKICNkZWZpbmUgUGxhdGZvcm1XZWJWaWV3X2gK
IAorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8
Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KICNlbmRpZgpAQCAtNjMsNiArNjUsNyBAQCB0eXBl
ZGVmIHVpbnQzMl90IFdLRXZlbnRNb2RpZmllcnM7CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIGNsYXNzIFBsYXRmb3JtV2ViVmlldyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWYpOwogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmID0gMCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9FeHBlY3RlZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5j
cHAKaW5kZXggNGIxMGM4NmEyYWI3MzJlMWVhNjI3NDg0Y2M3ODk0MGZiNmNkNmU5Ni4uMmEwNmY4
YmE1Y2E5ZmViNDkyYTM1MjJjNWM2NTUwMTM4ZDIyMzdlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcApAQCAtNDA3LDYgKzQwNyw3IEBAIFRFU1QoV1RGX0V4
cGVjdGVkLCBkZXN0cnVjdG9ycykKIHN0YXRpYyBpbnQgc25vd2ZsYWtlcyA9IDA7CiBzdGF0aWMg
aW50IG1lbHRlZCA9IDA7CiBzdHJ1Y3Qgc25vd2ZsYWtlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgc3RhdGljIHZvaWQgcmVzZXQoKSB7IHNub3dmbGFrZXMgPSBt
ZWx0ZWQgPSAwOyB9CiAgICAgc25vd2ZsYWtlKCkgeyArK3Nub3dmbGFrZXM7IH0KICAgICB+c25v
d2ZsYWtlKCkgeyArK21lbHRlZDsgfQpAQCAtNDE2LDcgKzQxNyw3IEBAIFRFU1QoV1RGX0V4cGVj
dGVkLCB1bmlxdWVfcHRyKQogewogICAgIC8vIFVuaXF1ZSBzbm93Zmxha2VzIGNhbm5vdCBiZSBj
b3BpZWQuCiAgICAgewotICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2Vf
dW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1h
a2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEp
OwogICAgICAgICBFWFBFQ1RfRVEobWVsdGVkLCAwKTsKICAgICB9CkBAIC00MjUsNyArNDI2LDcg
QEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgp
OwogCiAgICAgewotICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5p
cXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1ha2VV
bmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAgVW5leHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
c25vd2ZsYWtlPj4gYyhXVEZNb3ZlKHMpKTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMs
IDEpOwogICAgICAgICBFWFBFQ1RfRVEobWVsdGVkLCAwKTsKQEAgLTQ0Niw3ICs0NDcsNyBAQCBU
RVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICB9OwogCiAgICAgewotICAgICAgICBF
eHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPiwgaW50PiBzKHN0ZDo6bWFrZV91bmlx
dWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dm
bGFrZT4sIGludD4gcyhtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIHBsb3coV1RG
TW92ZShzKS52YWx1ZSgpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpA
QCAtNDU0LDcgKzQ1NSw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNu
b3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8aW50LCBzdGQ6OnVu
aXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNu
b3dmbGFrZT4oKSkpOworICAgICAgICBFeHBlY3RlZDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93
Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAg
ICAgIHBsb3coV1RGTW92ZShzKS5lcnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dm
bGFrZXMsIDEpOwpAQCAtNDYyLDcgKzQ2Myw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVf
cHRyKQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8
dm9pZCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQoc3RkOjpt
YWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgc3RkOjp1
bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxh
a2U+KCkpKTsKICAgICAgICAgcGxvdyhXVEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAgICBF
WFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoQ291bnRlZFNldC5jcHAKaW5kZXggODRkYTVlYzNmZmMyNDhhY2RkOWUzNjMzMDM4
YzY5ZGFlODkxMjA5OS4uN2I4ZmFmMjg4YWJjMDdjZmFmOGI1MjcxMjM4Zjc2ZDAxMzAxMmVlNiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNw
cApAQCAtMjQxLDcgKzI0MSw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJL
ZXkpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0
byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBF
Q1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50
KTsKQEAgLTI1OSw3ICsyNTksNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRy
S2V5SW5pdGlhbENvdW50KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciks
IDEyKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6
Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIFRFU1QoV1RGX0hhc2hDb3Vu
dGVkU2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291
bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRv
IHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBw
dHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5p
cXVlUHRyKSk7CiAKQEAgLTMxMiw3ICszMTIsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwg
VW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVk
U2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5p
cXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9
IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHIpKTsKIApAQCAtMzIzLDcgKzMyMyw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlx
dWVQdHJLZXlfR2V0VXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6
dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0
ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApA
QCAtMzM3LDcgKzMzNyw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlf
UmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVf
cHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAg
IGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0
ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aE1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAppbmRl
eCAxZTE2M2QzODk5OGU2YmFiZmZmNTM4NDEzY2NhMjhhYTZkMjk4OTgyLi5hODBjYTc0OTRhOGY5
YTc5NjdlMWU0OTQ2ZmU4Y2NhNjM5Y2JiNThiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoTWFwLmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVu
aXF1ZVB0cktleSkKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5p
cXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAg
IG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjMwLDcg
KzIzMCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2lu
dGVyKQogewogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0g
ICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1
bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAg
IGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHIpLCAyKTsKIApAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0
cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVl
X3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAg
ICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI1NSw3ICsyNTUsNyBAQCBU
RVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfR2V0VXNpbmdSYXdQb2ludGVyKQogewogICAg
IEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0g
dW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApA
QCAtMjY5LDcgKzI2OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9SZW1vdmVV
c2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRv
IHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsK
ICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7
CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yODksNyArMjg5LDcg
QEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAK
ICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VV
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZN
b3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC01NjMsMTIgKzU2MywxMiBAQCBURVNUKFdURl9IYXNo
TWFwLCBFbnN1cmVfVW5pcXVlUG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6
OnVuaXF1ZV9wdHI8dW5zaWduZWQ+PiBtYXA7CiAgICAgewotICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4o
MSk7IH0pOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1
cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDEpOyB9KTsKICAg
ICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
KmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUs
IGFkZFJlc3VsdC5pdGVyYXRvci0+a2V5KTsKICAgICAgICAgRVhQRUNUX1RSVUUoYWRkUmVzdWx0
LmlzTmV3RW50cnkpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtd
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDIpOyB9KTsKKyAgICAgICAgYXV0
byBhZGRSZXN1bHQyID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZD4oMik7IH0pOwogICAgICAgICBFWFBFQ1RfRVEoMXUs
ICptYXAuZ2V0KDEpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqYWRkUmVzdWx0Mi5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIGFkZFJlc3VsdDIuaXRlcmF0
b3ItPmtleSk7CkBAIC01OTAsNiArNTkwLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1Jl
ZlB0cikKIH0KIAogY2xhc3MgT2JqZWN0V2l0aFJlZkxvZ2dlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgT2JqZWN0V2l0aFJlZkxvZ2dlcihSZWY8UmVmTG9n
Z2VyPiYmIGxvZ2dlcikKICAgICAgICAgOiBtX2xvZ2dlcihXVEZNb3ZlKGxvZ2dlcikpCkBAIC02
MDQsNyArNjA1LDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdFbnN1cmUoUmVmPFJlZkxvZ2dlcj4m
JiBsb2dnZXIpCiB7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVj
dFdpdGhSZWZMb2dnZXI+PiBtYXA7CiAgICAgCi0gICAgbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikp
OyB9KTsKKyAgICBtYXAuZW5zdXJlKDEsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPE9iamVjdFdp
dGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7IH0pOwogfQogCiB2b2lkIHRlc3RNb3ZpbmdV
c2luZ0FkZChSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKQEAgLTYxMiw3ICs2MTMsNyBAQCB2b2lk
IHRlc3RNb3ZpbmdVc2luZ0FkZChSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKICAgICBIYXNoTWFw
PHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0V2l0aFJlZkxvZ2dlcj4+IG1hcDsKIAog
ICAgIGF1dG8mIHNsb3QgPSBtYXAuYWRkKDEsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAg
ICBzbG90ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxv
Z2dlcikpOworICAgIHNsb3QgPSBtYWtlVW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1v
dmUobG9nZ2VyKSk7CiB9CiAKIFRFU1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9MYW1iZGFzQ2FwdHVy
aW5nQnlSZWZlcmVuY2UpCkBAIC02ODMsNiArNjg0LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVmFs
dWVJc0Rlc3RydWN0ZWRPblJlbW92ZSkKIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFplcm9l
ZEJlZm9yZURlcmVmKQogewogICAgIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKKyAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBy
ZWYoKQogICAgICAgICB7CiAgICAgICAgICAgICArK2NvdW50OwpAQCAtNjk3LDcgKzY5OSw3IEBA
IFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogICAgICAgICBj
b25zdCBEZXJlZk9ic2VydmVyKiBvYnNlcnZlZEJ1Y2tldCB7IG51bGxwdHIgfTsKICAgICB9Owog
Ci0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsK
KyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAgICAg
SGFzaE1hcDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4sIGludD4gbWFwOwogICAgIG1hcC5hZGQoYWRv
cHRSZWYob2JzZXJ2ZXIuZ2V0KCkpLCA1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaFNldC5jcHAKaW5kZXggNzFlY2ZkZGI4NDJiNmJkNTE2NDFjYTA1YjYxMDhhZDQ4ZjYyYmI3
ZC4uODcyNjhjNzRmMGNiOGZjMTQ5ZWJmNjBjODU4OGZjZWQzNTgxYTIwNSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBURVNU
KFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0
cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7Cisg
ICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VR
KDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBA
IC0xNDQsNyArMTQ0LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2lu
Z1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0Owog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0
byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwog
ICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpKTsKIApAQCAtMTU4LDcgKzE1OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0
cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVl
X3B0cjxpbnQ+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0
LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xNzEsNyArMTcxLDcgQEAgVEVTVChXVEZf
SGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hT
ZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikp
OwogCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1Rh
a2VVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1
bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAg
ICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwog
ICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMjgzLDYgKzI4Myw3IEBAIFRF
U1QoV1RGX0hhc2hTZXQsIENvcHlDYXBhY2l0eUlzTm90T25Cb3VuZGFyeSkKIFRFU1QoV1RGX0hh
c2hTZXQsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogewogICAgIHN0cnVjdCBEZXJlZk9i
c2VydmVyIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBORVZFUl9JTkxJTkUgdm9pZCByZWYoKQogICAgICAgICB7CiAgICAgICAgICAgICArK2NvdW50
OwpAQCAtMjk3LDcgKzI5OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0ck5vdFplcm9lZEJl
Zm9yZURlcmVmKQogICAgICAgICBjb25zdCBEZXJlZk9ic2VydmVyKiBvYnNlcnZlZEJ1Y2tldCB7
IG51bGxwdHIgfTsKICAgICB9OwogCi0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxEZXJl
Zk9ic2VydmVyPigpOwogCiAgICAgSGFzaFNldDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4+IHNldDsK
ICAgICBzZXQuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAKaW5kZXggNjU3YmU0MWQ2MjA3MjQ0Njdh
NTU0OWUyYWI1YTE5NDFjNGUzNzNjMS4uYjc3MGE1YjI3YzFkMmIwOTVhNWJiNTlkNjVhYzNmNGRj
NGU0ZTY4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhh
c2hTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0
LmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJL
ZXkpCiAKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBsaXN0LmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0zOTYsNyArMzk2LDcgQEAg
VEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQog
ewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0
byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGF1dG8g
cHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7
CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5
X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVl
X3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxp
c3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTQyMSw5ICs0MjEsOSBAQCBURVNUKFdU
Rl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRlcikK
IHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1
dG8gdW5pcXVlUHRyV2l0aDIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMik7CisgICAgYXV0byB1
bmlxdWVQdHJXaXRoMiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMik7
CiAgICAgYXV0byBwdHJXaXRoMiA9IHVuaXF1ZVB0cldpdGgyLmdldCgpOwotICAgIGF1dG8gdW5p
cXVlUHRyV2l0aDQgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNCk7CisgICAgYXV0byB1bmlxdWVQ
dHJXaXRoNCA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNCk7CiAgICAg
YXV0byBwdHJXaXRoNCA9IHVuaXF1ZVB0cldpdGg0LmdldCgpOwogCiAgICAgbGlzdC5hZGQoV1RG
TW92ZSh1bmlxdWVQdHJXaXRoMikpOwpAQCAtNDM1LDcgKzQzNSw3IEBAIFRFU1QoV1RGX0xpc3RI
YXNoU2V0LCBVbmlxdWVQdHJLZXlfSW5zZXJ0QmVmb3JlVXNpbmdSYXdQb2ludGVyKQogICAgIEFT
U0VSVF9FUShwdHJXaXRoNCwgbGlzdC5sYXN0KCkuZ2V0KCkpOwogICAgIEFTU0VSVF9FUSg0LCAq
bGlzdC5sYXN0KCkuZ2V0KCkpOwogCi0gICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IHN0ZDo6bWFr
ZV91bmlxdWU8aW50PigzKTsKKyAgICBhdXRvIHVuaXF1ZVB0cldpdGgzID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50PigzKTsKICAgICBhdXRvIHB0cldpdGgzID0gdW5pcXVl
UHRyV2l0aDMuZ2V0KCk7CiAKICAgICBsaXN0Lmluc2VydEJlZm9yZShwdHJXaXRoNCwgV1RGTW92
ZSh1bmlxdWVQdHJXaXRoMykpOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIFRFU1QoV1RGX0xpc3RIYXNo
U2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgTGlzdEhhc2hT
ZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0Owog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgYXV0byogcHRyID0gdW5pcXVlUHRyLmdldCgp
OwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTG9jay5jcHAKaW5kZXggMmRjY2VkY2FkY2M2YzIyMjczZGViYzIwZjNmZjY3N2M4
NzMyOTAyNy4uNWZkMzFiZjFjOWFiZWNmYjhhYmU3MzU2MDhhNDdjNTYwNDMwNDc3MiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0
IExvY2tJbnNwZWN0b3IgewogdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiB2b2lkIHJ1bkxv
Y2tUZXN0KHVuc2lnbmVkIG51bVRocmVhZEdyb3VwcywgdW5zaWduZWQgbnVtVGhyZWFkc1Blckdy
b3VwLCB1bnNpZ25lZCB3b3JrUGVyQ3JpdGljYWxTZWN0aW9uLCB1bnNpZ25lZCBudW1JdGVyYXRp
b25zKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TG9ja1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8ZG91YmxlW10+IHdvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxkb3VibGVbXT4obnVtVGhyZWFk
R3JvdXBzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVt
VGhyZWFkc1Blckdyb3VwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9ja3Mg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxMb2NrVHlwZVtdPihudW1UaHJlYWRH
cm91cHMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51
bVRocmVhZHNQZXJHcm91cCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIHRocmVhZEdyb3VwSW5kZXgg
PSBudW1UaHJlYWRHcm91cHM7IHRocmVhZEdyb3VwSW5kZXgtLTspIHsKICAgICAgICAgd29yZHNb
dGhyZWFkR3JvdXBJbmRleF0gPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
YXJraW5nTG90LmNwcAppbmRleCA0NTJlMjI3NzFkYzA2NGFkYWFmZTYyMGViMzNlODAxMzBmNzlm
MTk3Li5lMDBhMDliMmExN2FhNzM0ODU2ZTQyYzExNDVjYmU2MDg2M2YwYTA1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcApAQCAtMTgyLDcgKzE4Miw3
IEBAIHN0cnVjdCBTaW5nbGVMYXRjaFRlc3QgewogCiB2b2lkIHJ1blBhcmtpbmdUZXN0KHVuc2ln
bmVkIG51bUxhdGNoZXMsIHVuc2lnbmVkIGRlbGF5LCB1bnNpZ25lZCBudW1UaHJlYWRzLCB1bnNp
Z25lZCBudW1TaW5nbGVVbnBhcmtzKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRj
aFRlc3RbXT4gdGVzdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbmdsZUxhdGNoVGVzdFtdPihudW1M
YXRjaGVzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8U2luZ2xlTGF0Y2hUZXN0W10+KG51bUxh
dGNoZXMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBsYXRjaEluZGV4ID0gbnVtTGF0Y2hlczsgbGF0
Y2hJbmRleC0tOykKICAgICAgICAgdGVzdHNbbGF0Y2hJbmRleF0uaW5pdGlhbGl6ZShudW1UaHJl
YWRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKaW5k
ZXggMDgxZGY5ZTRmYzFkMjUxZDgxNGIyMjY0YmQyZDBlMDUyYzBiZDQxZi4uZjRlZjk4M2IxYTlm
YmU4OTgwN2M3NWFjMjhmZGI2MjZkOWE5NmExMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBURVNUKFdURiwgUmVm
Q291bnRlcikKIFRFU1QoV1RGLCBSZWZDb3VudGVyRGVsZXRlQ291bnRlcldpdGhPdXRzdGFuZGlu
Z1Rva2VucykKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRlcj4g
Y291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZDb3VudGVyRXZl
bnQgZXZlbnQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBjb3VudGVy
ID0gbWFrZVVuaXF1ZTxUZXN0Q291bnRlcj4oWyZdKFJlZkNvdW50ZXJFdmVudCBldmVudCkgewog
ICAgICAgICAgICAgaWYgKCFjb3VudGVyLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgIGNvdW50
ZXIgPSBudWxscHRyOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9VbmlxdWVSZWYuY3BwCmluZGV4IDRkMmIyMmFhNTRmOGIwMjU0ODBmNTllNTYxYTNjY2U3MTU1
MDIzMTIuLjFhZmUzZTk3NzliYjg0ODg3ZTk0MzBkZTQxNzI2Yzc0Mzg1MzJmZGMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcApAQCAtMzAsOCArMzAsMTEg
QEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogICAgIAotY2xhc3MgQSB7IH07CitjbGFz
cyBBIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK307CiBjbGFzcyBCIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCKGludCBhLCBpbnQgYiwgaW50
IGMpCiAgICAgICAgIDogYShhKQpAQCAtNDMsNiArNDYsNyBAQCBjbGFzcyBCIHsKICAgICBpbnQg
YzsKIH07CiBjbGFzcyBDIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBDKFVuaXF1ZVJlZjxBPiYmIGEpCiAgICAgICAgIDogYShXVEZNb3ZlKGEpKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1
NGZmZmQzMzIxMzk1ZTlmMWUyZDJhN2MyLi41MWVjYTA3NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5
ZmY0ZmQ1NmJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJp
YW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcApA
QCAtMjEyLDcgKzIxMiw3IEBAIFRFU1QoV1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
cikKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7
CiAKICAgICB7Ci0gICAgICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1h
a2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICAgICAgVmFyaWFu
dDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gdiA9
IFdURk1vdmUodW5pcXVlUHRyKTsKIAogICAgICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKaW5kZXggMTUwYjliNzZjOGE1NjVlMzY1NTQ4MzZlMGJi
ZWMwNTA1Yzc4NDhmMi4uN2U2MzA2OTNlZWM2MDQxYTM3NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTUwLDYgKzUw
LDcgQEAgc3RydWN0IEludCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnQ+IHsKIH07CiAKIGNs
YXNzIEJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QmFzZT4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJhc2UoKSB7IH0KIApAQCAtNTc4LDEwICs1Nzks
MTAgQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hhc2hTZXRFeHBhbnNpb24pCiAgICAgICAgIEVY
UEVDVF9FUSh3ZWFrSGFzaFNldC5jYXBhY2l0eSgpLCAwdSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXApOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgaW5pdGlhbENhcGFjaXR5IC8gbWF4TG9hZENhcDsgKytpKSB7Ci0gICAgICAgICAg
ICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1
dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQu
YWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3Qp
KTsKLSAgICAgICAgICAgIG90aGVyT2JqZWN0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYXNl
PigpKTsKKyAgICAgICAgICAgIG90aGVyT2JqZWN0cy5hcHBlbmQobWFrZVVuaXF1ZTxCYXNlPigp
KTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAg
fQogICAgICAgICBFWFBFQ1RfRVEoc19iYXNlV2Vha1JlZmVyZW5jZXMsIG90aGVyT2JqZWN0cy5z
aXplKCkpOwpAQCAtNjE1LDcgKzYxNiw3IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0
RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUp
OwogICAgICAgICB1bnNpZ25lZCBvYmplY3RDb3VudCA9IGluaXRpYWxDYXBhY2l0eSAqIDI7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgKytpKSB7Ci0gICAg
ICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAg
ICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hh
c2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShv
YmplY3QpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKQEAg
LTY2NywxMCArNjY4LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZXNF
bXB0eSkKICAgICB7CiAgICAgICAgIFdlYWtIYXNoU2V0PEJhc2U+IHdlYWtIYXNoU2V0OwogICAg
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2U+PiBvYmplY3RzOwotICAgICAgICBhdXRv
IGZpcnN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZp
cnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQo
KmZpcnN0T2JqZWN0KTsKICAgICAgICAgZG8gewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VV
bmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAg
ICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgIH0gd2hp
bGUgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgPT0gZmlyc3RPYmplY3QuZ2V0KCkpOwpAQCAt
NzM0LDggKzczNSw4IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUp
CiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNl
dDsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsK
LSAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAg
ICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRv
IGxhc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFk
ZCgqZmlyc3RPYmplY3QpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmxhc3RPYmplY3QpOwog
ICAgICAgICBpZiAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSAhPSBmaXJzdE9iamVjdC5nZXQo
KSkKQEAgLTc1OSwxMCArNzYwLDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29t
cHV0ZVNpemUpCiAgICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsK
ICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAg
YXV0byBub25GaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAg
YXV0byBub25GaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hh
c2hTZXQuYWRkKCpub25GaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1
dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBv
YmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQo
Km9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwog
ICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IG5vbkZpcnN0T2Jq
ZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9DQVJpbmdCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NB
UmluZ0J1ZmZlci5jcHAKaW5kZXggMmFhYjY1ZGQ4ZmQ3ZWYwNzA1MWZiNmY3NTY3NThjZGU3MDJl
MDdhMS4uODFkN2JhMjkxYWU5ZjRhYjdjZjJlNWY5YWFkNjJjOTQyNDM1MzY3MiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQogICAgIHsKICAgICAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOwotICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8Q0FSaW5nQnVmZmVyPigpOwogICAgIH0KIAogICAgIC8vIENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkb3VibGUgc2FtcGxlUmF0ZSwgVUludDMyIG51bUNoYW5u
ZWxzLCBQQ01Gb3JtYXQgZm9ybWF0LCBib29sIGlzSW50ZXJsZWF2ZWQsIHNpemVfdCBjYXBhY2l0
eSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxh
dGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxh
dGlvblZhbHVlLmNwcAppbmRleCA3NzhlNjE1NWYwNmNjMTI4Mzk3OTc1ZjA0NTg3MTJhMmM3MTA0
MGZhLi5kY2E0NjM2MDJlOTZkNjBhMDQ1MTM4MTIxY2JiZGNlZmJlZTllNWMyIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUu
Y3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHN0YXRpYyB1
bnNpZ25lZCBkZWxldGlvbkNvdW50OwogCiBjbGFzcyBDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5v
ZGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25Ob2RlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWxjdWxhdGlvbkRlbGV0aW9u
VGVzdE5vZGUoKQogICAgIHsKQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25EZWxl
dGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CiAKIHN0
YXRpYyBSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsK
LSAgICBhdXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0
Tm9kZT4oKTsKKyAgICBhdXRvIG5vZGUgPSBtYWtlVW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25U
ZXN0Tm9kZT4oKTsKICAgICByZXR1cm4gV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRl
KFdURk1vdmUobm9kZSksIFdlYkNvcmU6OlZhbHVlUmFuZ2VBbGwpOwogfQogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3Qu
Y3BwCmluZGV4IGY1OGRhOGE0MjA3M2VjOTliYmVlMzRhODViZWMzNGMwODVjNTJhNjQuLjBjMWEw
NjlmMTNjMzljNDA5ZTVkNWUxYjAzYTdlOTJiZjliMzY2YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBA
IC00OCwxMCArNDgsMTAgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRTaXpl
KQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUwNjA3MDg7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CiAKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9I
aWRJbml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgVmVj
dG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0ID0g
bWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29t
bWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIEVY
UEVDVF9FUSg2NHUsIGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKIAot
ICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29u
dGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8g
Y29udGludWF0aW9uUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0
PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGNvbnRp
bnVhdGlvblBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCkpOwogfQogCkBAIC03MCw3
ICs3MCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YSkKICAgICB1
aW50MzJfdCBjaGFubmVsSWQgPSAweEY1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
IHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VD
b21tYW5kOjprV2luazsKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
ZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBk
YXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5p
dFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXpl
KCkpOwogICAgIHNpemVfdCBpbmRleCA9IDA7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFs
aXplZCA9IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CkBAIC05NCw3ICs5NCw3IEBA
IFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNt
ZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsKICAgICBzaXplX3QgbGVuZ3RoID0gZGF0
YS5zaXplKCk7Ci0gICAgYXV0byBvcmlnUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlk
SW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CisgICAg
YXV0byBvcmlnUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElk
LCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CiAKICAgICBzaXplX3QgcGF5bG9hZExlbmd0
aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ob3JpZ1BhY2tldC0+cGF5bG9hZExlbmd0aCgpKTsKICAg
ICBWZWN0b3I8dWludDhfdD4gb3JpZ0RhdGEgPSBvcmlnUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0
YSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRv
ci5jcHAKaW5kZXggMWVkMTMyOGY4MTMwOWUxMmUxMzcxY2IzYWRmZTZiMGE5NzgzZWViNi4uMjI4
MzgzYTBmMzBhOWIxMzlmNmFhZjQzZjk1Y2VkZDgwOTE2NmU2YSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xNDgsNyArMTQ4
LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiAgICAgYXV0byB0
ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBh
dXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgo
KSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0
eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZp
bGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5n
ZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VU
eXBlOjpNb2RpZmljYXRpb246CkBAIC0xOTAsNyArMTkwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9y
VGVzdCwgRGV0ZWN0TXVsdGlwbGVDaGFuZ2VzKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3Jr
UXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNv
cHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0
byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RR
dWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewog
ICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRp
b246CkBAIC0yNTAsNyArMjUwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVs
ZXRpb24pCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdv
cmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1v
bml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0
b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVl
PEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZp
bGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBGaWxl
TW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTI4OSw3ICsyODksNyBA
QCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQogCiAg
ICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7
CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1w
RmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hh
bmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRv
cj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25pdG9y
OjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMzQ2LDcgKzM0Niw3IEBAIFRFU1Rf
RihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAK
ICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUi
KTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRl
bXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVD
aGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25p
dG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9y
OjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1vbml0
b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDkyZDhhMTkyY2E3YjJh
MTA4MTU2NTk5N2IwZWE1YjFmOWFlYThmNjUuLjIxOWU5NjZkYmViYWE4NGQzNjAyNzIyZTk1OWUz
MmY2NGZiNGRiMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEN1cmxDb29raWVzOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgewogICAgICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwogCi0gICAgICAgIG1fY29v
a2llSmFyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2llZGIu
c3FsIikpOworICAgICAgICBtX2Nvb2tpZUphciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29va2ll
SmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVj
dG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKICAgICAgICAgbV9jb29raWVKYXItPm9wZW4oKTsKICAg
ICAgICAgbV9jb29raWVKYXItPnNldEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3k6OkFs
d2F5cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAppbmRleCA1YzBhZTMzMTMy
OGIzNmIwYmE3MGExOGQ5OTM2Njk0MTJhY2EyOWE5Li5iM2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5ZGRh
MTIxMmYxOTMyYTBkMjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdL
VVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5l
ZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5p
cXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xp
ZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCmlu
ZGV4IGE0ZmJhMTI3YzZlNGQwM2U2M2Q5YTgxNzJhMzliM2NiOGIxNDcyYzcuLjdiYzM1MjRmMmJk
YjlkYmQ3YTQzNWEzY2M2YWQzODMyZTk0NGVkZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVx
dWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZp
ZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50Owog
ICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRF
ZGl0aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERp
ZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKaW5kZXggMGY3ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4MDM4
ZDE5MjIxZWRiZjdkNS4uY2QxOWQ3Y2RlNTg4OTYyNWYxMjIxMmZjNzUzY2ZkNTVlMjc4ZDkyMyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlk
QmVnaW5BbmRFbmRFZGl0aW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCkBAIC05Nyw3ICs5Nyw3IEBA
IHN0cnVjdCBXZWJLaXQyVGV4dEZpZWxkQmVnaW5BbmRFZGl0RWRpdGluZ1Rlc3QgOiBwdWJsaWMg
Ojp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250
ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJU
ZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdFdmVudHNUZXN0IikpOwogICAgICAgICBzZXRJ
bmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJW
aWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwor
ICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0
KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7
CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCmluZGV4IGM3YjAyNTFiZmNmMjFhYTRh
YmQxMTRjODU1MDc5MjQxZDY2MTc0ZTkuLjlkYzNhNmRhOTk1MDljMjcxMTIxZDRjM2E0NTMwODRm
ZWU5ODliZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Vz
ZXJNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2Vy
TWVzc2FnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgV2ViS2l0MlVzZXJNZXNzYWdlUm91
bmRUcmlwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0ID0g
YWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJVc2VyTWVz
c2FnZVRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0
KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
V2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJDbGll
bnQod2ViVmlldy0+cGFnZSgpLCB0aGlzKTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9h
ZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKaW5k
ZXggZWQ5ZjBmZmM3MDI1YWIxMmNiNTM5NjdmNzIwNWZmOTZjODliZTY5OS4uNTJmMThkY2ViNDJk
NTFhYzA4Mzk1YjYyMDAxZDRhOTU0MGY3NDUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBXZWJLaXQy
V2lsbExvYWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnRleHQg
PSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIldpbGxM
b2FkVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQo
KSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1X
ZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxh
dGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKIAogICAgICAgICBkaWRSZWNlaXZlTWVzc2Fn
ZSA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVu
ZGxlX0J1bmRsZS5tbQppbmRleCBhZWJhMWMzNDhmYmM2NmExNzBlNTM5ZTBhNzI4NmFlZTkxNTNl
NjA0Li4yOTFhNDc4YTI3ODQyNDJkYWQ0NWEzYThmMTczOTA1ZDdkM2IyZjIxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFu
Y2VJbkJ1bmRsZV9CdW5kbGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCkBAIC03MCw3ICs3
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBhZG9wdChKU1ZhbHVl
VG9TdHJpbmdDb3B5KHNjcmlwdENvbnRleHQsIHJlc3VsdCwgbnVsbHB0cikpOwogCiAgICAgICAg
IGF1dG8gYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShyZXN1
bHRTdHJpbmcuZ2V0KCkpOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmlu
Z0dldFVURjhDU3RyaW5nKHJlc3VsdFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJT
aXplKTsKIAogICAgICAgICBXS0J1bmRsZVBhZ2VTZXRVc2VEYXJrQXBwZWFyYW5jZShtX3BhZ2Us
IHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAppbmRleCBkNmNjMmZiMjQ3ZTU2MjA2Njk3NzYx
MGIyNTY3OWI3ZWQxZGNjOGJhLi43YzhjOGI1MjE1NGFjNGViMDk4ZTY5NTE3OTA2OWEwNWViZGM2
NmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEF1dGhlbnRpY2F0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcApAQCAtMjU2LDYgKzI1Niw3IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25FbXB0eVJlYWxtKEF1dGhlbnRpY2F0aW9uVGVz
dCogdGVzdCwgZ2NvbnN0CiB9CiAKIGNsYXNzIFR1bm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVHVubmVsKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1l
c3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIDogbV9zZXJ2ZXIoc2VydmVyKQpAQCAtMjk5LDcgKzMw
MCw3IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291
cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhv
ZCA9PSBTT1VQX01FVEhPRF9DT05ORUNUKSB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoc291
cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSwgPT0sIGdQcm94eVNlcnZlclBvcnQpOwotICAgICAg
ICBhdXRvIHR1bm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2Up
OworICAgICAgICBhdXRvIHR1bm5lbCA9IG1ha2VVbmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3Nh
Z2UpOwogICAgICAgICBhdXRvKiB0dW5uZWxQdHIgPSB0dW5uZWwuZ2V0KCk7CiAgICAgICAgIHR1
bm5lbFB0ci0+Y29ubmVjdChbdHVubmVsID0gV1RGTW92ZSh0dW5uZWwpXShjb25zdCBjaGFyKiBl
cnJvck1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKQEAgLTM5NCw3
ICszOTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHkoUHJv
eHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyhQcm94eUF1dGhlbnRpY2F0aW9uVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBhdXRvIGh0dHBzU2VydmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXRUZXN0U2VydmVyPihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7Cisg
ICAgYXV0byBodHRwc1NlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0
VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOwogICAgIGh0dHBzU2VydmVyLT5ydW4oc2VydmVyQ2Fs
bGJhY2spOwogCiAgICAgdGVzdC0+bG9hZFVSSShodHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgi
L3Byb3h5L2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNiMDVj
ZDRiYzAyN2UxMmQxMTAzZmFmNmEwMDdhYzZmNDBmMy4uYjZiNzI4ZTQ1ZTA5YzUxYTZkNmJhOTli
ZjcxN2UxOTVlOWEwZTBjMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNlbmRpZgog
CiBjbGFzcyBXZWJQcm9jZXNzVGVzdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KICAgICB2aXJ0dWFsIGJv
b2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSopID0gMDsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRv
d1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2lu
ZG93VGVzdC5jcHAKaW5kZXggMTI1NjI0MTk2YTcxYzZkM2FkNWJjZGQyOWYxNDJiODZhYmI5ZmQx
MS4uZTQwMDA3NjMzZjIzNjI0MDUyOWRmNTRhZTg2MzIwODdiZDM2OTUyZiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVz
dC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgc3RhdGljIGdib29sZWFuIGNsaWNrZWRDYWxsYmFjayhX
ZWJLaXRET01ET01XaW5kb3cqLCBXZWJLaXRET01FdmVudCosIFdlYktpdERPTUQKIAogY2xhc3Mg
V2ViS2l0RE9NRE9NV2luZG93VGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4g
bWFrZVVuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CiAKIHByaXZhdGU6CiAgICAg
Z3VpbnQ2NCB3ZWJQYWdlRnJvbUFyZ3MoR1ZhcmlhbnQqIGFyZ3MpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggOGQyZWU4
YWQxNmNhZDY3OTU2OGVkOWI2ZDc1Y2VjZDgyMTUwZmVkYi4uMzQ5MGVmMWNlYjZmMTc4MDUwMmYw
Y2RjOTE5Yzk3MWUyOTJiZTkwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzgsNyArMzgsNyBAQCBzdGQ6OnN0cmlu
ZyB0b1NURChOU1N0cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsK
IAogICAgIHNpemVfdCBidWZmZXJTaXplID0gW3N0cmluZyBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIE5TVUludGVn
ZXIgc3RyaW5nTGVuZ3RoOwogICAgIFtzdHJpbmcgZ2V0Qnl0ZXM6YnVmZmVyLmdldCgpIG1heExl
bmd0aDpidWZmZXJTaXplIHVzZWRMZW5ndGg6JnN0cmluZ0xlbmd0aCBlbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZyBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5n
dGhdKSByZW1haW5pbmdSYW5nZTowXTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdl
dCgpLCBzdHJpbmdMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tCmluZGV4IDU0NmNhNmUyMjJkOWZlYTgxY2U3YmU0ZTJjMmQzOTg1YzViNDRmMGYuLjI0
NzU3Mjg5OGI2YTg3OWM3YTM2YjRmYzY1YjkxNTMzMDQ3MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMg
dm9pZCBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVt
UHJvdmlkZXJzKCkKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenps
ZXI+IHN3aXp6bGVyOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAg
IGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgc3dpenpsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywg
QHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0
aG91dFB1YmxpY1JURkQpKTsKKyAgICAgICAgc3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0
aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxl
VHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdy
aXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsK
ICAgICB9KTsKIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlv
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3
b3JrYXJvdW5kIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NTIwND4gaXMgZml4ZWQuCi0g
ICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRo
b2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0
QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CisgICAg
X3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxl
cj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CiAgICAgX2lucHV0U2Vz
c2lvbkNoYW5nZUNvdW50ID0gMDsKICAgICBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0
dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaAppbmRl
eCA2OTBmMGE3NzU2Y2ZlM2FmYjA3ZDkwYmVlZmYwOTU3OGIyZmM1NWRlLi4yODE0NTI3ZjE5Yjk1
NGY4MmFlYjg3YmMwZTRjOGRjMGI5YTdmNWI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBjbGFzcyBXZWJLaXRUZXN0U2Vy
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIGVudW0g
U2VydmVyT3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0
Rm9udE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMu
bW0KaW5kZXggODYyNjM1NDQzMzVhN2Y1ZDk3MWI1ZGMwZDI1OWU1NWRjMGQ3M2M2Ni4uNGJkZTZj
NTEwMGQyYmQ2ZmU0YmI5MGZhY2JlMjVkMzM5YTUwNTRiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCiAKICAg
ICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXplWmVybzsKICAgICBfc2hhZG93Qmx1clJhZGl1cyA9IDA7
Ci0gICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFz
c01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNl
bGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNoYXJlZEZv
bnRPcHRpb25zRm9yVGVzdGluZykpOworICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9
IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0Zv
bnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKICAgICBfaGFzUGVuZGluZ1No
YWRvd0NoYW5nZXMgPSBOTzsKICAgICBfaGFzTXVsdGlwbGVGb250cyA9IE5POwogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDE1MzIyMTgyNjk5ZTBlYTMw
NzU0YTAyMjZjM2E3YjYyOTU5NzZkMDAuLjExMzk5YjM5MGZlOTE3MGY2YzUyNTI3NWFjMjM0NTgy
ZGFmNzUwZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQ
cm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBA
IC01NCw2ICs1NCw3IEBAIHN0cnVjdCBXVFJFdmVudFF1ZXVlSXRlbTsKICNlbmRpZgogCiBjbGFz
cyBFdmVudFNlbmRlclByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKik7CiAgICAg
fkV2ZW50U2VuZGVyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
R2VvbG9jYXRpb25Qcm92aWRlck1vY2suaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9j
YXRpb25Qcm92aWRlck1vY2suaAppbmRleCA3ZDk0NWQ2N2VjNjc1MGJlNzA2NDM1YTJhNmIzYzc0
ZDFhZDE3NDNjLi4xZWQ0YWRmOWIzOTM5M2EzMzNhYTMyNTEwOTdiOWUzYWE0MmNjMzZiIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCkBA
IC0yNywxMCArMjcsMTIgQEAKICNkZWZpbmUgR2VvbG9jYXRpb25Qcm92aWRlck1vY2tfaAogCiAj
aW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHZW9sb2NhdGlvblBy
b3ZpZGVyTW9jayhXS0NvbnRleHRSZWYpOwogICAgIH5HZW9sb2NhdGlvblByb3ZpZGVyTW9jaygp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVu
dFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKaW5kZXggMWY5ZDNlZmM5NjRmYjEzNzdi
YzY2M2MwMTYwYzM0YTg4YjIzMjhhNi4uYzlhNTJjMTVmNzcwODMwNjgzYzhlZmY2ODk0MjliZDBi
YzFmNTY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCkBAIC02MTIsNiArNjEy
LDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb25pdG9yV2hlZWxFdmVudHMoKQog
fQogCiBzdHJ1Y3QgU2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEpTQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAgICAg
SlNPYmplY3RSZWYgbV9mdW5jdGlvbjsKIApAQCAtNjQ3LDcgKzY0OCw3IEBAIHZvaWQgRXZlbnRT
ZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYg
ZnVuY3Rpb25DYWxsCiAgICAgCiAgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgZnVuY3Rpb25D
YWxsYmFja09iamVjdCk7CiAKLSAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQs
IGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOworICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxi
YWNrRGF0YSA9IG1ha2VVbmlxdWU8U2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YT4oY29udGV4
dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2Fs
bGJhY2tEYXRhUHRyID0gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YS5yZWxlYXNlKCk7CiAg
ICAgYm9vbCBjYWxsYmFja1dpbGxCZUNhbGxlZCA9IFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xs
T3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xs
Q29tcGxldGlvbkNhbGxiYWNrRGF0YVB0cik7CiAgICAgaWYgKCFjYWxsYmFja1dpbGxCZUNhbGxl
ZCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA3MTE2Y2M5ODE1NjY5ZDk0OTRkYmY4ZGU0OGJhZWVj
ZDYzNzRjMzc2Li44M2IyYjMwYjEzMzJlYzc3YmZlZmNjMjlmZGQxYTJlNDgzY2I1ZjIzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6Omlu
aXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2Vy
CiB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdl
KQogewogICAgIGJvb2wgaXNNYWluUGFnZSA9IG1fcGFnZXMuaXNFbXB0eSgpOwotICAgIG1fcGFn
ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7Cisg
ICAgbV9wYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+KHBhZ2UpKTsK
IAogICAgIHNldFVwSW5qZWN0ZWRCdW5kbGVDbGllbnRzKHBhZ2UpOwogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuaAppbmRleCA1OWQzZTFiMGQwMmUyMmM1MmZhNzY1NDMzMjljMjNmNmI2MmEzODlhLi5iMzIz
YzI1MDQ0ZjU1MDM2MDc2ZjQ4ZWRkZDQ3YmNlYWEzZTIwZjE4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBJbmplY3RlZEJ1
bmRsZVBhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIElu
amVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYpOwogICAgIH5JbmplY3RlZEJ1bmRsZVBh
Z2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCmluZGV4IDE4NjBmMTY5ZTUyYWMxMjU5M2ZhZWUwZTQ2ZTJkMDUwNDhkYTE2
YmQuLjcyMDZiMDgyNTA2NWEwMDczMDczY2E4YjUwOGQzYjRmYTIyMzQzNjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApA
QCAtMjM5MSw3ICsyMzkxLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhK
U1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNWYWx1
ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAgc2l6
ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGZp
bGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CiAg
ICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQo
KSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGZpbGVVUkxz
LmdldCgpLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aEJhc2VVUkwobV90ZXN0VVJMLmdldCgpLCBm
aWxlQnVmZmVyLmdldCgpKSkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRrLmNwcAppbmRleCAwZTVjMDdjYTcyOWI2ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMyYzAw
MTdjLi4xOGU1N2QyZmNmNjI5NzY3YTczMjk3OWJjMmVkYzU3YWNmMTA5Y2UyIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNzMwLDcgKzczMCw3IEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRUb0pTT2JqZWN0QXJyYXkoY29uc3QgVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1
bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKIAogICAgIHNpemVfdCBl
bGVtZW50Q291bnQgPSBjaGlsZHJlbi5zaXplKCk7Ci0gICAgYXV0byB2YWx1ZUVsZW1lbnRzID0g
c3RkOjptYWtlX3VuaXF1ZTxKU1ZhbHVlUmVmW10+KGVsZW1lbnRDb3VudCk7CisgICAgYXV0byB2
YWx1ZUVsZW1lbnRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SlNWYWx1ZVJl
ZltdPihlbGVtZW50Q291bnQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENv
dW50OyBpKyspCiAgICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29udGV4
dCwgY2hpbGRyZW5baV0tPndyYXBwZXJDbGFzcygpLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGY3NGNjMmQzOTNkNTMw
NWZkMzY2NWJiMGUwYTM1NTE4NDQ3MzEwOWYuLmNhNGZkYmQ3MjIxNWFmNDhiZGE5NjdkNWJjYWI0
ODE1NmJhZGNjNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1X
ZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUZXN0T3B0aW9ucy5o
IgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
IWRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLRm91bmRhdGlvbi5o
PgpAQCAtNjQsNiArNjUsNyBAQCB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1JbWFn
ZTsKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFBs
YXRmb3JtV2ViVmlldyhXS1dlYlZpZXdDb25maWd1cmF0aW9uKiwgY29uc3QgVGVzdE9wdGlvbnMm
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCmluZGV4IGRhZjE0Y2E3
MDU0ODZiZmMyMDY0MzEyM2RlNTA5MWI3OWU1ZDAxMzEuLmJiYTE3YzJlZmZiMDk2NjVlZmMyOGVl
YjY5ZTcyMzI5YjFkNjliNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3Ry
aW5nRnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlv
bnMuaApAQCAtNzMsNyArNzMsNyBAQCBpbmxpbmUgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRv
SlMoY29uc3QgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+JiBzdHJpbmcpCiBpbmxpbmUgc3RkOjpz
dHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJTaXpl
ID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0byBi
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBi
dWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNp
emUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0
cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmco
YnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAgaW5s
aW5lIHN0ZDo6c3RyaW5nIHRvU1REKGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3Ry
aW5nKQogaW5saW5lIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZykK
IHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5n
U2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0g
V0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVm
ZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxs
YmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA4ZTczM2JlZWQ4MGQ0YTA1ZTM1ZTNjMGVm
MzEyYzM5ZWY0ZGQzMzUzLi44ODFiMzA5YTcyNWNjYTgwZmYzODE4MmYwY2E3OTM5YWZkZjJhMDA0
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDc5LDcg
KzQ3OSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0
IGNoYXIqIGFyZ3ZbXSkKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3VwSWRl
bnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdFRl
c3RSdW5uZXJQYWdlR3JvdXAiKSk7CiAgICAgbV9wYWdlR3JvdXAuYWRvcHQoV0tQYWdlR3JvdXBD
cmVhdGVXaXRoSWRlbnRpZmllcihwYWdlR3JvdXBJZGVudGlmaWVyLmdldCgpKSk7CiAKLSAgICBt
X2V2ZW50U2VuZGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRo
aXMpOworICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5kZXJQcm94
eT4odGhpcyk7CiB9CiAKIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IFRl
c3RDb250cm9sbGVyOjpnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRp
b25zOjpDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykgY29uc3QKQEAgLTUyMSw3ICs1MjEsNyBAQCBX
S1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJh
dGVQYWdlQ29uZmlndXJhdGlvbihjbwogICAgICAgICBtX2NvbnRleHQgPSBwbGF0Zm9ybUFkanVz
dENvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb250ZXh0
Q29uZmlndXJhdGlvbi5nZXQoKSkpLmdldCgpLCBjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSk7
CiAgICAgICAgIG1fY29udGV4dE9wdGlvbnMgPSBvcHRpb25zLmNvbnRleHRPcHRpb25zOwogCi0g
ICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRp
b25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZ2VvbG9jYXRpb25Q
cm92aWRlciA9IG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5n
ZXQoKSk7CiAKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxp
YnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9s
ZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwpAQCAtOTUyLDcgKzk1
Miw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMo
Y29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rp
b24gc2hvdWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgog
CiAgICAgLy8gUmVzZXQgdGhlIEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCi0gICAgbV9ldmVu
dFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsK
KyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRo
aXMpOwogCiAgICAgLy8gRklYTUU6IElzIHRoaXMgbmVlZGVkPyBOb3RoaW5nIGluIFRlc3RDb250
cm9sbGVyIGNoYW5nZXMgcHJlZmVyZW5jZXMgZHVyaW5nIHRlc3RzLCBhbmQgaWYgdGhlcmUgaXMK
ICAgICAvLyBzb21lIG90aGVyIGNvZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5IGJl
IHJlc3BvbnNpYmxlIGZvciBjbGVhbnVwIHRvby4KQEAgLTEyMzUsMTEgKzEyMzUsMTEgQEAgc3Rh
dGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOwogICAgIGlmIChpc0Fic29sdXRlUGF0aCkg
ewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3Ro
ICsgbGVuZ3RoICsgMSk7CisgICAgICAgIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CiAgICAgICAgIHN0
cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwogICAgICAgICBzdHJjcHkoYnVmZmVyLmdl
dCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCAr
IGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFyYXRvcgorICAgICAgICBidWZmZXIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0aCAr
IFBBVEhfTUFYICsgbGVuZ3RoICsgMik7IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCiAgICAg
ICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwogICAgICAgICBpZiAoIWdldGN3
ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIFBBVEhfTUFYKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cnVuVGVz
dChjb25zdCBjaGFyKiBpbnB1dExpbmUpCiAgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyA9IHRlc3RP
cHRpb25zRm9yVGVzdChjb21tYW5kKTsKIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VS
TCA9IGFkb3B0V0soY3JlYXRlVGVzdFVSTChjb21tYW5kLnBhdGhPclVSTC5jX3N0cigpKSk7Ci0g
ICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdEludm9jYXRpb24+
KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gbWFrZVVu
aXF1ZTxUZXN0SW52b2NhdGlvbj4od2tVUkwuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKGNv
bW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3Nob3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0cykK
ICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+c2V0SXNQaXhlbFRlc3QoY29tbWFuZC5leHBl
Y3RlZFBpeGVsSGFzaCk7CkBAIC0yOTYxLDcgKzI5NjEsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybVdpbGxSdW5UZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJikKIAogdm9pZCBUZXN0
Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9tYWlu
V2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9u
LCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZp
ZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVu
dFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9w
dGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CmluZGV4IDI4YWQxZWQ4OGE2M2Y3YmQ2YWYxZGQ1OTlhYmYyMDA2MzQ4NmVmZmIuLmEzODZlOWI4
MmI0NWZhNTA5MzY2MGI5NTEwNGFlN2M2ZGZiZmNkMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjg1LDcgKzE2ODUsNyBAQCB2b2lkIFRlc3RJbnZv
Y2F0aW9uOjpydW5VSVNpZGVTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0LCB1bnNpZ25lZCBzY3Jp
cHRDYWxsYmFjawogICAgIG1fcGVuZGluZ1VJU2NyaXB0SW52b2NhdGlvbkRhdGEgPSBudWxscHRy
OwogCiAgICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAgICAgICBt
X1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWU8VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAg
ICAgCiAgICAgbV9VSVNjcmlwdENvbnRleHQtPnJ1blVJU2NyaXB0KHRvV1RGU3RyaW5nKHNjcmlw
dCksIHNjcmlwdENhbGxiYWNrSUQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5oCmluZGV4IDc4ODBkZDhkZjU1MmZjOWQ4MmI5NGQxZDJmMmRkZmQ2ZGY4MmVjMmIuLjg1
YjFiMDIwNmViODkyMjZlODZjNmI0MWFiOTNlNWRiOTVlYmZkOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXVFIg
ewogCiBjbGFzcyBUZXN0SW52b2NhdGlvbiBmaW5hbCA6IHB1YmxpYyBVSVNjcmlwdENvbnRleHRE
ZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVGVzdEludm9jYXRpb24pOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRlc3RJbnZv
Y2F0aW9uKFdLVVJMUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDBmYmY4ZWE1
MjNkMzQ4ZDI1NmVjYzUyMzA0MmRlYTAyZmVjZGQxZGMuLjBlYmY3YmZkMDAzOWY0ZWY4MDkzMmMx
ZWI1MTkyZmY1NGVlM2M0YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwg
Y29uc3QgVGVzdE9wdAogICAgICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0QXBwbGljYXRp
b25NYW5pZmVzdDpbX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJv
bUpTT046dGV4dCBtYW5pZmVzdFVSTDpuaWwgZG9jdW1lbnRVUkw6bmlsXV07CiAgICAgfQogCi0g
ICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3Bp
ZWRDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvcGllZENvbmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlv
bnMpOwogICAgIGZpbmlzaENyZWF0aW5nUGxhdGZvcm1XZWJWaWV3KG1fbWFpbldlYlZpZXcuZ2V0
KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKG9wdGlvbnMucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRz
SW5EYXJrTW9kZSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRE
ZWZhdWx0Q2FsZW5kYXJUeXBlKE5TU3RyaW5nICppZGVudGlmaWVyKQogewogICAgIG1fb3ZlcnJp
ZGRlbkNhbGVuZGFySWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAgICAgaWYgKCFtX2NhbGVuZGFy
U3dpenpsZXIpCi0gICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3VycmVu
dENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsKKyAg
ICAgICAgbV9jYWxlbmRhclN3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVy
PihbTlNDYWxlbmRhciBjbGFzc10sIEBzZWxlY3RvcihjdXJyZW50Q2FsZW5kYXIpLCByZWludGVy
cHJldF9jYXN0PElNUD4oc3dpenpsZWRDYWxlbmRhcikpOwogfQogCiB2b2lkIFRlc3RDb250cm9s
bGVyOjpyZXNldENvbnRlbnRFeHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXggZGU1NzhmNzNmYzM2ZWNkMTU4
OWM5OWY4ZGJmOGZjY2MzOTg3YjQyZS4uZWY5ZTM4ZTcyM2JhYTk1ZGZmZTcwZWM1YTg3NWNmZWM4
NGUzMjg3NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5k
ZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5k
ZXJQcm94eUd0ay5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCBpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5
UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2RpZmll
cgogICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTI7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShrZXlSZWYpOwotICAgIGF1dG8gYnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVm
ZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXpl
KTsKICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtleVJlZiwgYnVmZmVyLmdldCgpLCBidWZm
ZXJTaXplKTsKICAgICBjaGFyIGNoYXJDb2RlID0gYnVmZmVyLmdldCgpWzBdOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IDZhNjFk
ZjhlMzVkNmZhMDhjOGIxNGM1MWE4MjNjNjJkMDgwNWQ0ZDIuLmYzYzQxN2M3ZmI3Y2FhNGRlNDc3
N2M3YTQ5NGY1M2FmMzJhMThiZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0xNTEsOCArMTUxLDggQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRp
b25zJiBvcHQKIAogICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuY2xlYXIoKTsKICAgICBp
ZiAoIW9wdGlvbnMuc2hvdWxkUHJlc2VudFBvcG92ZXJzKSB7Ci0gICAgICAgIG1fcHJlc2VudFBv
cG92ZXJTd2l6emxlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6
emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250
cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJy
aWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwotICAgICAgICBtX3ByZXNlbnRQ
b3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dp
enpsZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3Bv
dmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92
ZXIpKSk7CisgICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKG1ha2VVbmlx
dWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBAc2Vs
ZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkp
OworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPElu
c3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVj
dG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0aW9u
czphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0Nv
bnRyb2xsZXJPclBvcG92ZXIpKSk7CiAgICAgfQogICAgIAogICAgIEJPT0wgc2hvdWxkUmVzdG9y
ZUZpcnN0UmVzcG9uZGVyID0gTk87CkBAIC0yNjksOSArMjY5LDkgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikKIAogICAgIGF1dG8gY29udHJvbGxlckNsYXNzID0gVUlLZXlib2FyZElucHV0TW9kZUNv
bnRyb2xsZXIuY2xhc3M7CiAgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMucmVzZXJ2ZUNhcGFjaXR5
KDMpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9y
KGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJ
bnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBA
c2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVy
cy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
Pihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkpOworICAgIG1faW5wdXRNb2Rl
U3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenps
ZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVy
cHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1v
ZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6
emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVy
ZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsK
KyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1
dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkp
OwogICAgIFtVSUtleWJvYXJkSW1wbC5zaGFyZWRJbnN0YW5jZSBwcmVwYXJlS2V5Ym9hcmRJbnB1
dE1vZGVGcm9tUHJlZmVyZW5jZXM6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KaW5kZXggZDFjZmM2YTMzMjFlMDI5YzhiYTgxMTVm
NGE2ZDkyMDdmOGU3MTg0Zi4uODljZTRlZjEyNmMxNWQ5MmRjZjc2NjUwY2U2ZWVmNWI4OTIzMTcy
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94
eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1t
CkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5z
aWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWUKIAogICAgIE5TVmll
dyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9y
bVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHRhcmdl
dFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBA
c2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6
emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJlc3Nl
ZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihb
TlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgW3RhcmdldFZpZXcgbW91
c2VEb3duOmV2ZW50XTsKICAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAg
LTM1Nyw3ICszNTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQg
YnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycwogICAgICAgICB0YXJnZXRW
aWV3ID0gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAK
ICAgICBBU1NFUlQodGFyZ2V0Vmlldyk7Ci0gICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRv
bnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZl
bnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgIGF1dG8gZXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dp
enpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCBy
ZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsK
ICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgW3RhcmdldFZpZXcgbW91
c2VVcDpldmVudF07CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTU5Myw3
ICs1OTMsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBk
b3VibGUgeSkKICAgICAvLyBBbHdheXMgdGFyZ2V0IGRyYWdzIGF0IHRoZSBXS1dlYlZpZXcgdG8g
YWxsb3cgZm9yIGRyYWctc2Nyb2xsaW5nIG91dHNpZGUgdGhlIHZpZXcuCiAgICAgTlNWaWV3ICp0
YXJnZXRWaWV3ID0gaXNEcmFnID8gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxh
dGZvcm1WaWV3KCkgOiBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1W
aWV3KCkgaGl0VGVzdDp3aW5kb3dMb2NhdGlvbl07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAg
ICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJl
c3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9u
c1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFz
c10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgaWYgKGlzRHJhZykKICAgICAgICAgICAgIFt0
YXJnZXRWaWV3IG1vdXNlRHJhZ2dlZDpldmVudF07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCmluZGV4IDQ2OWJmYWYwZThjZjI5MDcz
MGJhYmZhMDc4MzZkODc3ZWM3MGU4ZjUuLjY5NmY0NTU3NTg5NmZlODI2NjQ4N2QwOThlOGZlOGVl
NjFlNTRkNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2Vu
ZGVyUHJveHlXUEUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2Vu
ZGVyUHJveHlXUEUuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIHVpbnQzMl90IHdwZUtl
eVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1aW50
MzIKICAgICAgICAgcmV0dXJuIFdQRV9LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6
ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVm
ZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2Vu
ZHMvVmlld0JhY2tlbmQuaAppbmRleCAwMDljZTQ2ODA2ODg1ODMxM2E2ZmUwN2IxYmEyYzBkNTU2
ODlkMTBkLi4zYmQwZTEwYWU4NTZhMGVlYmY0NWNmMjZhNjJhZGQwM2ZhNjJmMjM2IDEwMDY0NAot
LS0gYS9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuaAorKysgYi9Ub29scy93cGUvYmFj
a2VuZHMvVmlld0JhY2tlbmQuaApAQCAtNDIsMTAgKzQyLDEyIEBAIHN0cnVjdCB3cGVfZmRvX2Vn
bF9leHBvcnRlZF9pbWFnZTsKIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgewogCiBjbGFz
cyBWaWV3QmFja2VuZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Vmlld0JhY2tlbmQoKTsKIAogICAgIGNsYXNzIElucHV0Q2xpZW50IHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5JbnB1dENsaWVudCgpID0gZGVmYXVsdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376351</attachid>
            <date>2019-08-14 21:35:07 -0700</date>
            <delta_ts>2019-08-14 23:26:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190814213506.patch</filename>
            <type>text/plain</type>
            <size>1789696</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2U0YzNjMTA2MDY0ODRlNjNkZDVmZDExMGYyZjNkYzRmMGZhN2FlLi4yNTdiNDMzNGE2ZGVmMWY2
MWE2NzBhZDI5YjQ2MjVmZjUyY2NlM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBz
dXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY0YWRlYjM2NDhmNzMyYzNiNDM0MDM5Nzg5
MzUyYTliOTBmNjExNWIuLmE4NzYzYTJmODJkMzY1YzYwYTFmYmRlOWEyNmEwNmI1MmMxNTg2ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAg
ICAgICogYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3Vy
cmVudFZlY3Rvci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAg
ICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHA6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3Rm
L0Z1bmN0aW9uLmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3Rm
L0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAg
ICAgICAqIHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6Cisg
ICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToK
KyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAg
ICAqIHd0Zi9TdHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBl
bmQpOgorICAgICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVm
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6
SXRlcmF0b3IpOgorCiAyMDE5LTA4LTE0ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbWFjT1MgPCAxMC4xMwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGIwNWUzMjA0NzQwYmRmNjExNGQ5OTAzNmE4NjM5ZmFjYTRjYzRhOGEuLmM1ODRiMzRhYjdh
MjE5OWIwODI2N2I1YWE0MzZiNzU3MjQ0MTJiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODgw
IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZl
bG9wZXJXYXJuaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjpmcm9tKToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3dDYWNoZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVD
YWNoZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2
aWdhdG9yQ3JlZGVudGlhbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ3JlZGVu
dGlhbHM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0
UHNzaEJveGVzRnJvbUNlbmMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNyZWF0ZSk6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmtleVN5c3RlbSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNsaWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OnNldENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0
ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETVNlc3Npb25DbGVhcktleS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hSZXNwb25zZTo6ZmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9OYXZp
Z2F0b3JHYW1lcGFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdhbWVwYWQ6OmZy
b20pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVHZW9sb2NhdGlvblRvKToKKyAgICAgICAg
KiBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRvckdlb2xvY2F0aW9uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6aW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6SURCQ29ubmVjdGlvblRvU2VydmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZW5zdXJlUXVv
dGFVc2VyKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SW5kZXhWYWx1ZVN0b3JlOjph
ZGRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0
YWJsaXNoRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
SURCQmFja2luZ1N0b3JlOjpzZXREYXRhYmFzZUluZm8pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUluZGV4OjpwdXRJbmRleEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeUluZGV4OjptYXliZU9wZW5DdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6bWF5YmVPcGVuQ3Vyc29yKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVBbmRQb3B1bGF0ZUluaXRpYWxEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNhY2hlZFN0YXRlbWVudCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJl
Q3JlYXRlQmFja2luZ1N0b3JlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJUcmFuc2FjdGlvbjo6
YmVnaW4pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWREZWxldGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlJlcXVlc3REYXRhOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdERhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6SURC
UmVzdWx0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjppc29sYXRlZENv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vz
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRl
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFiYXNl
U3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpwdXRPckFkZFN1Y2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRzU3VjY2Vzcyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vzcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25JbmZvOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJv
Y2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY2Fw
YWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU291cmNlOjpzZXRMaXZlU2Vla2FibGVSYW5nZSk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlk
ZVVzZXJNZWRpYVRvKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjaGFubmVsRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFuc2Nl
aXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVU
cmFuc2NlaXZlckJhY2tlbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5k
cG9pbnQ6OnRyYW5zY2VpdmVyQmFja2VuZEZyb21TZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlRGF0YUNoYW5uZWwpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
Ojp2aWRlb1JlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRN
RkJhY2tlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVNlbmRlckJh
Y2tlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnByb3ZpZGVOb3RpZmljYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMv
cXVvdGEvRE9NV2luZG93UXVvdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UXVv
dGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6Cisg
ICAgICAgICogTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKToKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpmcm9tKToKKyAgICAgICAg
KiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzOjplbnN1cmVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNB
dWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9EYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnNhbXBsZVJhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29k
aW5nVGFzazo6c3VjY2Vzc0NhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmVycm9yQ2FsbGJhY2spOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFzazo6YXVkaW9C
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6ZGVjb2RlQXVkaW9EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25O
b2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZEZpbHRlck5vZGU6
OkJpcXVhZEZpbHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRlS2Vy
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVz
cG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheU5vZGU6OkRlbGF5Tm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlOjpzZXRGb3JtYXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFubmVyTm9kZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyaW9kaWNXYXZlOjpj
cmVhdGVCYW5kTGltaXRlZFRhYmxlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OlJl
YWx0aW1lQW5hbHlzZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6c2V0
RmZ0U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nl
c3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5l
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXp5SW5pdGlh
bGl6ZU92ZXJzYW1wbGluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcDoKKyAgICAg
ICAgKGZpZG86OkZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2FnZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwOgorICAgICAgICAoZmlkbzo6Rmlk
b0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YSk6CisgICAgICAgIChmaWRv
OjpGaWRvSGlkQ29udGludWF0aW9uUGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2NoZWR1bGVU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2Fj
dGlvblN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRhYmxlTmFtZXMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpyZWNvcmREZWxldGluZ0RhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b246OmV4ZWN1dGVTcWwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om9wZW5U
cmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkcml2ZXIvTmF2
aWdhdG9yV2ViRHJpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYkRyaXZl
cjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdQVTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6UmVuZGVyRnVuY3Rpb25EZWZp
bml0aW9uV3JpdGVyOjpjcmVhdGVFbnRyeVBvaW50U2NhZmZvbGRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjcmVh
dGVFbnRyeVBvaW50U2NhZmZvbGRpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6VHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2Vy
Ojphc3NpZ25Db25jcmV0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNrZXI6
OmFzc2lnblR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkNoZWNrZXI6OmZvcndhcmRU
eXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6UGFyc2VyOjpwYXJzZVNlbWFudGljKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRVcGRhdGVCdWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZ3JhZGVVUkwp
OgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVm
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmluZmxhdGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SW5mbGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
dnIvTmF2aWdhdG9yV2ViVlIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yV2ViVlI6
OmZyb20pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKToKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRT
dGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNFdmVudFRh
cmdldENhc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRh
c2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZmVyQXJyYXlCdWZmZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJD
b3JlSlNDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVk1DbGllbnREYXRhOjpp
bml0Tm9ybWFsV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5p
dFNjcmlwdCk6CisgICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpDQ2xhc3M6Om1ldGhvZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkNDbGFzczo6ZmllbGROYW1lZCBjb25zdCk6CisgICAgICAgICogYnJpZGdlL2pzYy9C
cmlkZ2VKU0MuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNzOjptZXRob2ROYW1lZCBjb25zdCk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZpZWxkTmFtZWQgY29uc3QpOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNh
bGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJp
bmVkVVJMRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
Q29tYmluZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybik6Cisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg6Cisg
ICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3Jt
YWxpemVDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3Nz
VGhyZWFkQ29weUltcG9ydFBhcmFtcyk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lQ2F0ZWdvcnkpOgorICAgICAgICAq
IGNzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVm
YXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6
YXBwZW5kU291cmNlcyk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWls
eVJlZ2lzdGVyZWQpOgorICAgICAgICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpjc3NSdWxlcyBjb25zdCk6CisgICAgICAgICog
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZSk6CisgICAgICAgICogY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVs
ZTo6Y3NzUnVsZXMpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKToKKyAgICAgICAgKiBjc3MvRE9NQ1NT
UGFpbnRXb3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6
ZnJvbSk6CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbSk6Cisg
ICAgICAgICogY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRSdWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50UnVsZVNldHM6OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
ZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29s
bGVjdFNsb3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KToKKyAgICAgICAgKiBjc3MvRm9u
dEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1
ZmZlcik6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OndyYXBG
b3JEZXByZWNhdGVkQ1NTT00pOgorICAgICAgICAqIGNzcy9SdWxlRmVhdHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFRvUnVsZVNldCk6CisgICAgICAgICog
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAq
IGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6CisgICAg
ICAgICogY3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFy
YXRpb24pOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKToKKyAgICAg
ICAgKiBjc3MvbWFrZXByb3AucGw6CisgICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5
SW5oZXJpdFZhbHVlU2V0dGVyKToKKyAgICAgICAgKGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlW
YWx1ZVNldHRlcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OkNTU1BhcnNlckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lU3VwcG9ydHNSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rvcik6
CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lQmFzaWNTaGFwZVBhdGgpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JQYXJzZXI6
OmNvbnN1bWVQc2V1ZG8pOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5z
dXJlQmFja3VwUXVldWUpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjppdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
VHJhbnNmZXI6OnNldERyYWdJbWFnZSk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlRGV2aWNlT3JpZW50YXRp
b25Ubyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nl
c3NLZXlDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGVtZW50YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvcm1Db250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpheE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRQYXJzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojph
Y2Nlc3NTVkdFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2Vj
dXJpdHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0QXV0b1Npemlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRMb2dNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZWdpc3RlckNTU1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZG9tVGltZXJIb2xkaW5nVGFuayk6CisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlUGFyc2Vy
WWllbGRUb2tlbik6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgICogZG9t
L0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xhc3NMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmRhdGFzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZVJl
c2l6ZU9ic2VydmVyRGF0YSk6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20v
RXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFBhdGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRQYXRoOjpidWlsZFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRo
OjpFdmVudFBhdGgpOgorICAgICAgICAqIGRvbS9GdWxsc2NyZWVuTWFuYWdlci5oOgorICAgICAg
ICAqIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcik6CisgICAgICAgICogZG9tL0tl
eWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudDo6S2V5Ym9h
cmRFdmVudCk6CisgICAgICAgICogZG9tL01pY3JvdGFza3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1pY3JvdGFza1F1ZXVlOjp2bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL011dGF0
aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVy
Q29tcG91bmRNaWNyb3Rhc2spOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cDo6Y3JlYXRlSWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb246Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9O
b2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9k
ZUxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25P
YnNlcnZlckRhdGEpOgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBk
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFBy
b21pc2VUcmFja2VyU2xvdyk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAg
ICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6
OlNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jv
b3RUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RF
bGVtZW50QnlOYW1lKToKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRv
bS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjphZGRJbWFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6
bGFiZWxFbGVtZW50Rm9ySWQpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OkVkaXRvcik6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZW5zdXJl
UmVwbGFjZW1lbnRGcmFnbWVudCk6CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0
aGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVh
ckFuZENyZWF0ZU5vdGlmaWVyKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVy
dGVyOjpIVE1MQ29udmVydGVyKToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1
dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCk6Cisg
ICAgICAgICogZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbE9uRmlsZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OkFz
eW5jRmlsZVN0cmVhbSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OnJlYWRJbnRlcm5hbCk6CisgICAgICAgICogaGlzdG9y
eS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6Q2FjaGVk
RnJhbWUpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKToKKyAg
ICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6cmVxdWVzdEljb24pOgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRG
b3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnJlbExpc3QgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVu
dDo6bWFwTW91c2VFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIgY29u
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVw
ZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6YWRkVG9QYXN0TmFtZXNNYXApOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3gpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpyZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAg
ICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50OjpzaXplcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnJlbExp
c3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXphdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcik6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZUFmdGVyU3R5bGVSZXNvbHV0aW9uKToK
KyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFj
aFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlB1YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9WYWxp
ZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6
c2V0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVz
c2FnZURPTUFuZFN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3Nh
Z2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
RHJhd2luZ0NvbnRleHQ6OkRpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRv
Q29uc29sZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVt
ZW50SW50ZXJmYWNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQ
YXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5p
emVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KToKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbGVtZW50U3RhY2s6Omluc2VydEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbGVtZW50U3RhY2s6OnB1c2hDb21tb24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVy
OjpTdGFydFRhZ1NjYW5uZXI6OmNyZWF0ZVByZWxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5E
T0NUWVBFKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OmRlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZSk6CisgICAgICAgICog
aHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9J
bmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kV2ViVlRU
VGV4dFRyYWNrOjpwYXJzZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZp
cmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0RPTUVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01F
ZGl0b3I6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlbW92
ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0QXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVk
aXRvcjo6aW5zZXJ0QWRqYWNlbnRIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6
cmVwbGFjZVdob2xlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE5vZGVWYWx1ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuc3VyZURPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIaXN0b3J5OjptYXJr
VW5kb2FibGVTdGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwOgorICAgICAgICAoUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZCk6CisgICAgICAgICogaW5z
cGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRl
TGF6eUFnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxl
ckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhU
b0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGln
aHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50Ojppbm5lckhpZ2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmhpZ2hsaWdodEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpzZXRJbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0
b3JNZW1vcnlBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViSGVhcEFnZW50OjpX
ZWJIZWFwQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGlt
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50
aW1lQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVn
Z2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6Y3JlYXRl
Rm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAg
ICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaDoKKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29u
dGVudCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMg
Y29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaDoK
KyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVUZXh0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6c3BsaXQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjplbnN1cmVSYXJlRGF0YSk6Cisg
ICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZVRhYmxlU3RydWN0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6cHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50
cyk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUHJlZmxpZ2h0UmVz
cG9uc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZp
Z3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRyZW4pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAqIGxvYWRlci9OYXZp
Z2F0aW9uRGlzYWJsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGly
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9j
YXRpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVGb3JtU3VibWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1
bGVyOjpzY2hlZHVsZVJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVBhZ2VCbG9jayk6CisgICAgICAgICogbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3Mp
OgorICAgICAgICAqIGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQpOgorICAgICAg
ICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9t
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OmFkZENsaWVudFRvU2V0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fkcyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZTo6bG9hZFJlcXVlc3RlZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZTo6ZG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZW5zdXJlU2Vzc2lvblJlc291
cmNlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmxydUxpc3RGb3IpOgorICAgICAgICAq
IGxvYWRlci9pb3MvUHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvUHJldmll
d0xvYWRlci5tbToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBpbml0V2l0aFJlc291cmNl
TG9hZGVyOnJlc291cmNlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIg
Y29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoV2ViQ29yZTo6UHJldmll
d0xvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
aDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4dE1lbnUpOgor
ICAgICAgICAqIHBhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VXaGVlbFJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhh
bmRsZXIpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
d0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3TGF5b3V0Q29u
dGV4dDo6cHVzaExheW91dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91
dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZCk6CisgICAgICAg
ICogcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJh
c2U6OnNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmluaXRHcm91cCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRSZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUp
OgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAgKiBwYWdlL1BhZ2VH
cm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNl
cyk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZTo6bWFyayk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6Y2xlYXJN
YXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6bWVhc3VyZSk6CisgICAgICAg
IChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6Y2xlYXJNZWFzdXJlcyk6CisgICAgICAgICogcGFnZS9Q
cmV3YXJtSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1ByaW50Q29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyk6
CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzdGFydFRpbWVyKToKKyAgICAgICAg
KiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvUmVzaXplT2Jz
ZXJ2ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6Cisg
ICAgICAgICogcGFnZS9TZXR0aW5nc0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3NCYXNlOjpTZXR0aW5nc0Jhc2UpOgorICAgICAgICAqIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5o
OgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAg
ICAgKiBwYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
aGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24v
Q1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NBbmltYXRp
b25Db250cm9sbGVyOjpDU1NBbmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVk
Q29sb3I6OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGxMYXllcnNQcm9wZXJ0eVdyYXBwZXI6OkZpbGxMYXllcnNQcm9wZXJ0eVdyYXBw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpD
U1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXApOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnVwZGF0ZVNvdXJjZVNlbGYpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZS5oOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZSk6CisgICAgICAg
ICogcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9pb3Mv
RE9NVGltZXJIb2xkaW5nVGFuay5oOgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3Zlcmxh
eTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdl
L21hYy9UZXh0SW5kaWNhdG9yV2luZG93Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlTm9kZTo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVRyZWU6
OmNvbW1pdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL0NQVU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9GaWxlTW9uaXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6YmxlbmRNaXhlZFR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5k
TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZv
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xv
YmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Om51bWJl
ck9mQ2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6
OmNoYW5uZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNoYW5uZWwg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6Omxlbmd0aCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2FtcGxlUmF0ZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6c2V0U2FtcGxlUmF0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6cmVzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q2hhbm5lbDo6QXVkaW9DaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q2hhbm5lbDo6c2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6
bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6
bXV0YWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpk
YXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6emVy
byk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmNsZWFyU2lsZW50
RmxhZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmlzU2lsZW50
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6ZnJhbWVzSW5GaWZvIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRklGTzo6dXBkYXRlSW5kZXgpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Jl
c2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBs
ZXI6OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OnJhdGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0JpcXVhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0NvbmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNldElubmVyQW5nbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29uZUVmZmVjdDo6aW5uZXJBbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJHYWluKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbmVFZmZlY3Q6Om91dGVyR2FpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
RGVub3JtYWxEaXNhYmxlcjo6RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjp+RGVub3JtYWxEaXNhYmxlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpmbHVzaERlbm9ybWFsRmxvYXRUb1pl
cm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Z2V0Q1NS
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OnNldENTUik6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3RhbmNlRWZmZWN0Ojptb2RlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5j
ZUVmZmVjdDo6c2V0TW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VF
ZmZlY3Q6OnNldFJlZkRpc3RhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0OjpzZXRNYXhEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
aXN0YW5jZUVmZmVjdDo6c2V0Um9sbG9mZkZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEaXN0YW5jZUVmZmVjdDo6cmVmRGlzdGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1heERpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0Ojpyb2xsb2ZmRmFjdG9yIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6
RHluYW1pY3NDb21wcmVzc29yOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bnlxdWlzdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnRhaWxUaW1lIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6bGF0ZW5jeVRpbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5oOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVz
c29yS2VybmVsOjpsYXRlbmN5RnJhbWVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6Om1ldGVyaW5nR2Fp
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBh
bm5lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RkZUQ29udm9sdmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRG
cmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0hSVEZEYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpudW1iZXJP
ZkF6aW11dGhzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6c2Ft
cGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6
bG9hZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURkVsZXZhdGlvbjo6SFJURkVsZXZhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjprZXJuZWxMaXN0Uik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGRWxldmF0aW9uOjplbGV2YXRpb25BbmdsZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpudW1iZXJPZkF6aW11dGhzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OnNhbXBsZVJhdGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3Jl
OjpIUlRGS2VybmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZQYW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OmZmdFNp
emUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11bHRpQ2hhbm5lbFJlc2FtcGxl
cjo6TXVsdGlDaGFubmVsUmVzYW1wbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0
aUNoYW5uZWxSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJldmVyYjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmltcHVsc2VSZXNwb25z
ZUxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJBY2N1bXVsYXRp
b25CdWZmZXI6OnJlYWRJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJBY2N1bXVsYXRpb25CdWZmZXI6OnJlYWRUaW1lRnJhbWUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJD
b252b2x2ZXI6OmltcHVsc2VSZXNwb25zZUxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OmlucHV0QnVmZmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6dXNlQmFja2dyb3VuZFRocmVhZHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252
b2x2ZXJTdGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3Rh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjppbnB1dFJlYWRJ
bmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5w
dXRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYklucHV0QnVmZmVyOjp3cml0ZUlu
ZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1w
bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpa
ZXJvUG9sZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6cmVzZXQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnNldFplcm8pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnNldFBvbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6WmVyb1BvbGU6Onplcm8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6WmVyb1BvbGU6OnBvbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVk
aW9CdWZmZXJMaXN0OjpsaXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkF1ZGlvQnVmZmVyTGlzdDo6b3BlcmF0b3IgQXVkaW9CdWZmZXJMaXN0JiBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6OmtpbmQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNv
dXJjZTo6c2V0SW5wdXRGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRh
U291cmNlOjpzZXRPdXRwdXRGb3JtYXQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRp
b1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcik6
CisgICAgICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0dXBQb3dlck9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRp
ZENvbm5lY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyk6CisgICAgICAgICogcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWVkRW5jb2Rlcjo6ZW5jb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxB
bmltYXRvckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvckdlbmVyaWM6
OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9LZXllZERlY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6
ZGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlcjo6ZW5jb2Rlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OnN0YXJ0VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRlY29k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRMYXlvdXQ6OlRleHRMYXlvdXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmVuc3VyZURlcml2ZWRGb250
RGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6Ym91bmRzRm9yR2x5cGggY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJldHJpZXZlT3JBZGRDYWNoZWRG
b250cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0
UnVuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRm9udHM6OkdseXBoUGFnZUNhY2hl
RW50cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR2x5cGhNZXRyaWNzTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE1ldHJpY3NN
YXA8VD46OmxvY2F0ZVBhZ2VTbG93Q2FzZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0
QW5pbWF0aW9uQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xl
Z2FjeUNETVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6TWVkaWFQbGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6c2Vla2FibGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2RlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpz
ZXRTaGFwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZWdpb246OmNvcHlTaGFwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWdpb246OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVw
cmVzZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVwcmVzZW50YXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdM
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1QaWNrZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBs
YXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0
ZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdGlvbk9w
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlUm90YXRpb25TZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdp
c3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1
ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdG9uT3B0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OmVuc3VyZUxheWVyQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
Q29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRy
b2xsZXI6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xs
ZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91bmRlZFJlY3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xh
eWVyLm1tOgorICAgICAgICAoLVtXZWJUaWxlZEJhY2tpbmdMYXllciBjcmVhdGVUaWxlQ29udHJv
bGxlcjpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllcldpbjo6UGxhdGZvcm1DQUxheWVy
V2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5n
TGF5ZXJXaW4uY3BwOgorICAgICAgICAoV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OmNyZWF0ZVRp
bGVDb250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjptX3ByaXZh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZUNhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6
OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dDo6Zm9udFJhbmdlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1
cmVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW06CisgICAgICAgIChUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJv
dGF0aW9uU2Vzc2lvblZULmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUOjpSb3RhdGlvblByb3BlcnRpZXM6OmlzSWRlbnRpdHkgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6dHJhbnNmb3JtIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJvdGF0
aW9uUHJvcGVydGllcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUOjpzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
Um90YXRpb25TZXNzaW9uVlQ6OnJvdGF0ZWRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVD
YWNoZUNWOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4
dHVyZUNvcGllckNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlcGxheWVyOjpyZXBsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5zdXJlQXVk
aW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaE5l
eHRIb2xlUHVuY2hCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVu
Y2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT0JveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09P
cmlnaW5hbEZvcm1hdEJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
U09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPU3RyaW5nQm94Ojpj
b250ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZU
VEN1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpib3hUeXBlTmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnByZXNlbnRhdGlvblRpbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpkdXJhdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnNvdXJj
ZUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6aWQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpvcmlnaW5h
bFN0YXJ0VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRD
dWU6OnNldHRpbmdzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZU
VEN1ZTo6Y3VlVGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6OlNjZW5lSW50ZWdyYXRpb246OmNyZWF0ZVVwZGF0ZVNjb3BlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OmNyZWF0ZUNvbW1hbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJv
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGlu
Zzo6Rm9yUGFpbnRpbmcpOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclJlY29yZGluZzo6Rm9yUmVjb3JkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3Bw
OgorICAgICAgICAoTmljb3NpYTo6QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1h
cHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllclRleHR1cmVN
YXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0MzRExheWVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkdDM0RMYXllcjo6c3dhcEJ1ZmZl
cnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUdDM0RMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRl
eHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Okdy
YXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpUZXh0dXJlTWFwcGVyR0wpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5n
VGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybVN0YXRlOjphcHBseVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpzZXRTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
dWxsU2NyZWVuQ29udHJvbGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVv
UHJlc2VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldLQ0FJbWFnZVF1ZXVl
OjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9S
ZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpZGdl
dDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTY3JvbGxiYXI6
OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29t
Ym9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1h
Z2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6OmRlY29kZSk6Cisg
ICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OkxlZ2Fj
eVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNj
YWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVy
dGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
bGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fY2FwdHVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJB
dWRpb0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvRGF0YTo6R1N0cmVh
bWVyQXVkaW9EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlv
RGF0YTo6Z2V0U2FtcGxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1
ZGlvRGF0YTo6Z2V0QXVkaW9JbmZvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lckF1ZGlvRGF0YTo6a2luZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291
cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6bV9j
YXB0dXJlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJl
YW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0VuY29kZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeTo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5KToK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJl
YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNh
dGVHZW5lcmF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9y
eSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRl
RW5jb2RlckZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpy
ZWNvbmZpZ3VyZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVik6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6ZmlyZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVm
ZmVyZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpjcmVhdGVEZWNvZGVUYXNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZTo6UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsQ2FjaGVSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OmRpZFNlbmRCb2R5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90
ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9y
ZXN0YXJ0XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFu
YWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6OkN1cmxD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OndpbGxTZXR1cFNzbEN0eCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2No
ZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdFNjaGVkdWxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU1NMVmVyaWZpZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkZWxl
Z2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmNhbGxPbldvcmtlclRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUHJl
dmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlIGNhbGxGdW5jdGlvbk9u
TWFpblRocmVhZDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2
ZVF1ZXVlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWVTb3VwOjpy
ZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEZXJpdmVkQ2xhc3M+Ojph
cHBlbmRSdW5JbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
YWxsYmFja01vbnRoTGFiZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrQU1Q
TUxhYmVscyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0lDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVy
Q29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4
dENvZGVjVVRGOC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVVEY4OjpyZWdpc3Rl
ckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJDb2Rl
Y3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuZXdUZXh0Q29kZWNXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtRGlzcGxheU9wZW5WUi5oOgorICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtTWFuYWdlck9wZW5WUi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdl
ck9wZW5WUjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSOjpnZXRWUkRpc3BsYXlzKToKKyAgICAgICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Ap
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRlUHJlcGFyZWRTdGF0ZW1lbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V0NEYXRhT2JqZWN0OjpTZXREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSdW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlvdXQ6
OmNyZWF0ZVJvb3RJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlv
dXQ6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5l
TGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9GbG9h
dGluZ09iamVjdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6Y29weVRvTmV3Q29udGFpbmVy
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjbG9uZUZvck5ld1Bh
cmVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQ
bGFjZWRGbG9hdHNUcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
aWRCYXNlbGluZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OnNldHVwKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6YWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllck92ZXJsYXBNYXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omluc2Vy
dEludG9UcmFja2VkUmVuZGVyZXJNYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uZWRE
ZXNjZW5kYW50c01hcDo6YWRkRGVzY2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6YmVnaW5VcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjplbnN1cmVCbG9ja1JhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93
OjpsYXlvdXRMaW5lR3JpZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OmNyZWF0ZUZsb2F0aW5nT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zs
b3c6OmVuc3VyZUxpbmVCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
Om1hdGVyaWFsaXplUmFyZUJsb2NrRmxvd0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y3JlYXRlSW5saW5lQm94KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFr
ZUNvdW50ZXJOb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRDb250YWluZXI6OnNldFJl
bmRlckJveEZyYWdtZW50SW5mbyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
ZWRGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb250
YWluaW5nRnJhZ21lbnRNYXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNv
bXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lk
ZUdyaWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpj
cmVhdGVJbmxpbmVGbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlQW5jZXN0b3JDbGlwcGluZ1N0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJl
Z2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6Y3JlYXRlSW5saW5lQm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uRmxvdzo6UmVuZGVyTXVsdGlDb2x1bW5GbG93KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6c3R5bGVE
aWRDaGFuZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OmNyZWF0ZVRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZp
ZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OmNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6aW1hZ2VR
dWFsaXR5Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZXBhaW50
UmVnaW9uQWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcik6CisgICAgICAgICog
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGlu
ZUJveDo6cGxhY2VFbGxpcHNpcyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmFwcGVuZEZsb2F0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbGxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0
Qm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6YXBw
bHkpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dDo6cnVuUmVzb2x2ZXIgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnBhaW50Rmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9T
aXppbmc6OmFkZFRleHROb2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lQnJlYWtlcjo6c2tpcExlYWRpbmdXaGl0ZXNw
YWNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRl
cnZhbHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5zZXRTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVDaXJjbGVTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFbGxpcHNlU2hhcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUG9seWdvblNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXBlOjpjcmVhdGVTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFz
dGVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZUJveFNoYXBlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNT
aGFwZVBhdGg6OmJsZW5kIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGxMYXllcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNsb25lUHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRDYWNoZWRQc2V1ZG9TdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjphY2Nlc3NDb3VudGVyRGlyZWN0aXZlcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGFkb3dT
VkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0RhdGE6OlNoYWRvd0RhdGEp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVy
aXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OlJlbmRl
clNWR0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRl
cm4pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJj
ZXM6OnNldEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtl
clN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFya2VyTWlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFza2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlczo6c2V0RmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNl
dFN0cm9rZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJl
bmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVN
ZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRl
cjo6UmVuZGVyVHJlZVVwZGF0ZXIpOgorICAgICAgICAqIHJlcGxheS9Vc2VySW5wdXRCcmlkZ2Uu
aDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IpOgorICAgICAgICAqIHN0eWxlL1N0
eWxlUmVsYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21taXRSZWxhdGlv
bnNUb1JlbmRlclN0eWxlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zIGNvbnN0KToKKyAgICAgICAg
KiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
VHJlZVJlc29sdmVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6YWRkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpTVkdFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmVuc3VyZVNWR1JhcmVEYXRhKToKKyAgICAg
ICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dy
YXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aEJ5dGVTdHJlYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtOjpj
b3B5IGNvbnN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjpzY2hlZHVsZSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyQnVpbGRlci5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3Jh
dGVkUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHk6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0
ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVjb3JhdGVkRW51bWVyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVy
dHkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1h
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yOjpj
cmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0
b3J5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9y
SW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5p
bWF0b3JJbXBsLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OmZyb20pOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0dWJGcm9udGVu
ZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
SW50ZXJuYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVj
aFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b3BlbkR1bW15SW5z
cGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRQcmludGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKToKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cXVldWVNaWNyb1Rhc2spOgorICAgICAgICAqIHRl
c3RpbmcvTGVnYWN5TW9ja0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lNb2NrQ0RN
OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaDoKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrR2FtZXBhZFBy
b3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV2ZW50UXVldWU6OmVucXVldWVF
dmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmg6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJH
bG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Oldv
cmtlck1lc3NhZ2luZ1Byb3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpXb3Jr
ZXJSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5k
VGVybWluYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9y
TW9kZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3Qp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVh
ZFByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3Jl
YXRlQmxvYkxvYWRlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdpc3RyYXRp
b25Gcm9tU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgICogd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHdvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNv
bGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6Om1l
c3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0
R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRD
b25zb2xlTWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRT
Y3JpcHRXaXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuaDoKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnVwbG9hZCk6CisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmNwcDoKKyAgICAgICAg
KiB4bWwvWFBhdGhQcmVkaWNhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmV2YWx1
YXRlUHJlZGljYXRlKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXQpOgorICAgICAg
ICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2Fs
bGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBl
bmRDREFUQUJsb2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNr
czo6YXBwZW5kQ29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxs
YmFja3M6OmFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKwogMjAxOS0wOC0xNCAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjQ4NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNjBlN2ZiNTZjOTcwNWUxOWZjODliYzhh
NmJkNGY0MjNlZjE2MjViZS4uYzdhYWE4ZDE0NjNhMWVhMjkzYWIyMzQ1MzdmMmYzMzMyM2E2NmYx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDgtMTQgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29udGV4
dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwOgor
ICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL21hYy9D
bG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6OmNyZWF0ZSk6CisKIDIwMTktMDgtMTQgIEtlaXRo
IFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZv
ciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDM1OGYyYmYwMDVhZTY0NGQ4MTIzMjhk
NWRlZGU0MTljOGJhMDFjZmIuLjNiMTkyOGU5YTMwOTMwNTBhNTE3MGI3MzcwOTI2Zjk2ZTgxNTBi
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1
ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKToK
KyAgICAgICAgKiBnbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKwogMjAxOS0wNi0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjQ1
NTY3KTogW0dUS11bV1BFXSBbMi4yNS4xXSBXZWJLaXRXZWJEcml2ZXIgZ2V0cyBpbnN0YWxsZWQg
YXMgV2ViRHJpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVmMGY3MDdmOTgzYTgwOTcxZjhkMGZjNWM0N2MyZWFl
ZDE4YTQ0ODMuLmRhMjYyZGVmOTMxZmY5NDkzYzNhMWM1MzAxYjA2Zjc3MzhiNjRlMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjM4IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVu
c3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2spOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3Vw
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hcDo6YWRkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93
bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRh
YmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtl
RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlUmVkaXJl
Y3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3Jk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdp
c3RlclN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5
UGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5
bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFk
UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2ZUZyb21NZW1v
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToK
KyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpj
cmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQ
cm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENv
b3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrU291cDo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAg
ICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRj
aFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZyk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6dW53cmFwRm9yVGVzdGluZyk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6
aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjpDb25uZWN0aW9uVGVy
bWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAg
ICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vz
c01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0v
TW9kdWxlLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW06
CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhv
c3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVS
TC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6cGFy
c2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9SZW1v
dGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZv
Y2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51SXRl
bUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAg
ICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKToKKyAgICAgICAg
KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24pOgorICAgICAg
ICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xh
YmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51
KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKToKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRleG1hcExheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIpOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0
b3I6OlRocmVhZGVkQ29tcG9zaXRvcik6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9i
amVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rl
ck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0
cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8v
U2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5k
TWF0Y2hlc0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6SFRUUENv
b2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUhpc3RvcnlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFz
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChX
S0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXRI
aXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlv
bk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNl
dFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUgaW5pdFdpdGhQYWdl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoKKyAgICAgICAg
KFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9y
ZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFs
bG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24g
c2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNRTGl0ZVN0YXRlbWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAg
ICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoYXR0
YWNoQ29udGV4dE1lbnVDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNo
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoRG93
bmxvYWRDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAod2Via2l0RmF2aWNvbkRhdGFiYXNlT3Bl
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFj
aEZvcm1DbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25NYW5hZ2Vy
Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdD
bGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoSWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6
CisgICAgICAgIChhdHRhY2hJbmplY3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNw
cDoKKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKToKKyAg
ICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2Fn
ZV9oYW5kbGVyX2luX3dvcmxkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
RHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1v
amlDaG9vc2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0
aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViSW5zcGVjdG9yQ3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VEcmFnQW5kRHJvcEhhbmRsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaWRSZWxh
dW5jaFdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToK
KyAgICAgICAgKC1bV0tWaWV3IG1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5jcHA6CisgICAgICAgIChXS1dQRTo6Vmlldzo6Vmlldyk6CisgICAgICAg
IChXS1dQRTo6Vmlldzo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9x
dC9XUEVRdFZpZXcuY3BwOgorICAgICAgICAoV1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENh
bGxiYWNrKToKKyAgICAgICAgKFdQRVF0Vmlldzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKToK
KyAgICAgICAgKFdQRVF0Vmlldzo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHA6CisgICAgICAgIChXUEVRdFZpZXdCYWNr
ZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxv
YWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpj
cmVhdGVDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNy
ZWF0ZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydERpc3BsYXlMaW5rKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFRleHRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9y
YXRlVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0
Rm9yT3JpZ2luQ2FsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMp
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29u
bmVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VV
cGxvYWRBc3NlcnRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5SZXF1
aXJlc0d0azIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNh
dG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2Rl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2
aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRD
cmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpt
YXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2li
bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9h
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxh
eWluZ0F1ZGlibGVNZWRpYSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21w
b3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25T
dGF0ZVRyYWNraW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tp
bmdWaWV3IGRpZE1vdmVUb1dpbmRvd10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoUHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246d2ViVmlldzpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlv
dXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
YXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhXaW5kb3c6d2ViVmlldzpwYWdlOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgaW5pdFdpdGhQYWdlOnZpZXc6dXNlUGxhdGZvcm1GaW5kVUk6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9y
bVN0YXJ0VGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJW
aWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6Z2FtZXBhZENvbm5lY3Rl
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVNldENsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgor
ICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV0tC
dW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV0tCdW5k
bGVQYWdlU2V0VUlDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VPdmVy
bGF5Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21h
Yy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW06CisgICAgICAgIChXS0J1bmRsZVBhZ2VCYW5uZXJD
cmVhdGVCYW5uZXJXaXRoQ0FMYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0Ojpn
ZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpwdXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdEV4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYkVkaXRvckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwOgorICAgICAgICAod2Via2l0V2Vi
RXh0ZW5zaW9uQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0RnJhbWVHZXRPckNyZWF0
ZSk6CisgICAgICAgICh3ZWJraXRXZWJQYWdlQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW06CisgICAgICAgICgt
W1dLRE9NVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyIF9zZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQZW5kaW5nTWVzc2FnZTo6UGVuZGluZ01lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KToK
KyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50
VGNwU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3Jl
YXRlTmV3Q29ubmVjdGlvblNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZUFzeW5jUmVzb2x2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVj
dG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVUaW1lcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
OjpjcmVhdGVTdWJmcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRpbWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5k
bGVSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5k
Q29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1Zv
bGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNl
c3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdv
cmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6U291cmNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnByb2Nlc3NUYXNrU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUpOgorCiAyMDE5LTA4LTE0
ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ3YmZmY2Jk
MzdiZmUyMjcxNzA4YTYzMmEzMWY5NDdiZmJjM2MxMWYuLjc4MWJlNDUzYTIwYzJmZjQwZTBiYTRk
ZWRkZTRjOTljOTg0ZTk0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2Nh
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0
b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VT
eW5jTWFuYWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3Jh
Z2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVybWluYXRlKToKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRy
YWNrZXI6OlN0b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIwMTktMDgtMTQgIFJ5YW4gSGFkZGFkICA8
cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjI0ODUyNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggYzYzZWZhYmE1ZDg4NjgzYmVm
YmYxNjk1OGZmMWZlMDAwNGVhOWM2Yi4uMTk2OTRiZDExMTE2YTYwZmMxM2IwMzFjNDg3NmRlYWVj
MmM4ZDdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
OS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtX
VEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Q2xpZW50OjpjcmVhdGVGcm9udGVuZFNldHRpbmdzKToKKwogMjAxOS0wOC0xMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVT
U0lPTihyMjQ4NDU0KTogV0sxIGluc3BlY3RvciBmcm9udGVuZCBjbGllbnQgZG9lc24ndCBxdWV1
ZSBtZXNzYWdlcyB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgbG9hZGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKaW5kZXggODViZmU3ZmU3YWE0YzNmN2ZjYmIyZDcyOGRiNWRlYTdhZGFi
YThmZi4uYmI1NDBjMWU1YWUyYTg3YzYwNzE0ZmI5YmM1MjI2YzllZTgwNDRjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTE0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlx
dWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9u
Q29udGVudC5tbToKKyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2V0Vmlld3Bv
cnRDb25zdHJhaW5lZExheWVyczpzdGlja3lDb250YWluZXJNYXA6XSk6CisKIDIwMTktMDctMjkg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5n
ZU9ic2VydmVyXSBkaWRGaW5pc2hDb250ZW50Q2hhbmdlT2JzZXJ2aW5nIHNob3VsZCBpbmNsdWRl
IHRoZSB0eXBlIG9mIGNvbnRlbnQgY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDAyYTFjZTdiYTY4ZWJkZDJlN2ZiM2FiZjg0YzNkYjY4ZDc0ODVlNmUuLjljZDM1MWM1YmVk
NzZjMzI4MDlmZTRjYmI2M2E2MWQ0MmQwOWFkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2NiBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJI
aXN0b3J5UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bToKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50
YXRpb246XSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJv
eHkubW06CisgICAgICAgIChXS1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkpOgorICAgICAg
ICAoV0tQQ0Jvb2xlYW5SZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhbkFuZERhdGFSZXBseSk6
CisgICAgICAgIChXS1BDSW5zdGFudGlhdGVQbHVnaW5SZXBseSk6CisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5j
ZTo6bWV0aG9kTmFtZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjpmaWVsZE5h
bWVkKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW06CisgICAgICAgICgtW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldyBjcmVhdGVQbHVn
aW5dKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1t
OgorICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmg6CisgICAg
ICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOnJlcGVhdDp0aW1lckZ1
bmM6XSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW06Cisg
ICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAg
ICAgICAgKGFkZFJlZGlyZWN0VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
YXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW06CisgICAg
ICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2F0dGFjaFNj
cmlwdERlYnVnZ2VyXSk6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
Lm1tOgorICAgICAgICAoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV2ViVGV4dEl0
ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6
XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3VwOndvcmxkOnNvdXJj
ZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVjdGVkRnJhbWVzOl0p
OgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6d29ybGQ6c291
cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IF9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9zZXRUZXh0SW5kaWNhdG9yOndpdGhMaWZldGltZTpdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6Oldl
YlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKToKKyAgICAgICAgKC1bV2ViVmlld1ByaXZhdGUgaW5p
dF0pOgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKaW5kZXggNDYwMzBiYjYzYjQ2ZjJmOTI4NTNmMDQ5NzM2MDk1ZjMzNDIxYWE1
YS4uNmQ4OWMwM2M3OWJiOTVjNWNlNmIxZDVlMzkzZmUxYThlMTJlZDNmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8
VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIpOgorICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBQbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaDoKKyAgICAgICAgKiBQ
bHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5TdHJlYW06
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6bG9hZCk6CisgICAgICAgICogUGx1Z2lucy9QbHVn
aW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnduZFByb2MpOgor
ICAgICAgICAqIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50
OjpXZWJDaHJvbWVDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5M
b2NhbEZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkVsZW1lbnRQcm9wZXJ0eUJh
Zy5jcHA6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0
eUJhZyk6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAgICAgICAoV2ViSGlzdG9y
eUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBXZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwOgorICAgICAgICAoV0tRQ0E6
OkNBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dCk6CisgICAgICAg
ICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmg6CisgICAgICAgICog
V2ViTm9kZUhpZ2hsaWdodC5oOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHA6
CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcik6
CisgICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmg6CisgICAgICAgICogV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYlZp
ZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUpOgorICAgICAgICAoV2ViVmlldzo6ZW50
ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAoV2ViVmlldzo6YWRk
VXNlclNjcmlwdFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRU
b0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgor
CiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggM2YwZmIy
ZTFjZWVhZWYwNjU5YzM0YzgyNzFiZWVjMTA4MjM3NTZlZC4uNmUwMWRhYmNmODAwNzA5OTM3MDFi
ODYxZDNkZDM4OGUwNmQxNjg3NCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA4
LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0g
QWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBibWFsbG9jL0lz
b0hlYXAuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg6CisKIDIwMTktMDct
MjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbYm1hbGxv
Y10gQWRkIElzb0hlYXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBub3Qg
YWxsb2NhdGluZyB0b28gbGFyZ2UgVkEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgKaW5kZXggMDdkNzA5YmExMmM4MmM4NTQ4MmQ3M2M3MjM3N2Y1MTllN2Zj
MmE1Yy4uZDBlNjI1MjgyYTg0ZjRmMzVlZWRlZDE5NWVkYjhkYzg5N2IxYTU3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAgLTU4LDcgKzU4LDcg
QEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAgICB2b2lkIHNldFByaXZhdGVQcm9w
ZXJ0eShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2YXRlUHJvcGVydGll
cykKLSAgICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpT
UHJpdmF0ZVByb3BlcnR5TWFwPigpOworICAgICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcyA9
IG1ha2VVbmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7CiAgICAgICAgIG1fcHJpdmF0ZVBy
b3BlcnRpZXMtPnNldFByaXZhdGVQcm9wZXJ0eSh2bSwgb3duZXIsIHByb3BlcnR5TmFtZSwgdmFs
dWUpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggYWUzYTZmZTNhY2Y5YzZhODAzOTRlMWQ3
MzRmYTMxN2Q5MDhmYWUyYy4uOWNhM2I0YmY0MDg1MDc1MGI4YmM0MTk0OWY3NTA0MmIzNTcyMzFl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50PiogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojphc0NhbGxiYWNrT2JqZWN0KEVuY28K
IHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2Fs
bGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDbGFz
c1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogICAgIDogUGFyZW50KGV4ZWMtPnZtKCksIHN0cnVj
dHVyZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxs
YmFja09iamVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVjdERh
dGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwganNDbGFzcykpCiB7CiB9
CiAKQEAgLTY3LDcgKzY3LDcgQEAgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNr
T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3Qo
Vk0mIHZtLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIDog
UGFyZW50KHZtLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShzdGQ6Om1h
a2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKKyAgICAs
IG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09iamVjdERhdGE+KG51
bGxwdHIsIGpzQ2xhc3MpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNz
UmVmLmNwcAppbmRleCBmMWM5ZDU3MDJhOGFhNjkwNDRkZmIyOTViNDcxZmNmY2JjODkwYjZiLi43
ZWVjMmE5MGE0NGY4NjBiYWEyMjc2Yjk2ZDQ1ZjJiZDY4NjE3MDgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTU5LDIxICs1OSwyMSBAQCBPcGFxdWVKU0Ns
YXNzOjpPcGFxdWVKU0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBkZWZpbml0aW9uLCBP
cGFxdWVKU0NsYXNzKgogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAogICAgIGlmIChjb25z
dCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZSA9IGRlZmluaXRpb24tPnN0YXRpY1ZhbHVlcykg
ewotICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFz
c1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3Rh
dGljVmFsdWUtPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5hbWUgPSBTdHJpbmc6
OmZyb21VVEY4KHN0YXRpY1ZhbHVlLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghdmFsdWVOYW1l
LmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQodmFsdWVOYW1l
LmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1ZS0+
Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0dHJp
YnV0ZXMsIHZhbHVlTmFtZSkpOworICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5zZXQo
dmFsdWVOYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihzdGF0aWNWYWx1
ZS0+Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPmF0
dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOwogICAgICAgICAgICAgKytzdGF0aWNWYWx1ZTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGlmIChjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBzdGF0aWNGdW5j
dGlvbiA9IGRlZmluaXRpb24tPnN0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBtX3N0YXRpY0Z1
bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1Rh
YmxlPigpOworICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlxdWU8T3BhcXVlSlND
bGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAoc3RhdGljRnVuY3Rp
b24tPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBTdHJpbmc6OmZy
b21VVEY4KHN0YXRpY0Z1bmN0aW9uLT5uYW1lKTsKICAgICAgICAgICAgIGlmICghZnVuY3Rpb25O
YW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGljRnVuY3Rpb25zLT5zZXQoZnVu
Y3Rpb25OYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5Pihz
dGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0aW9uLT5hdHRyaWJ1dGVz
KSk7CisgICAgICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUu
aW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5j
YWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgICAg
ICsrc3RhdGljRnVuY3Rpb247CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjgsMjEgKzEyOCwyMSBA
QCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YShKU0M6
OlZNJiwgT3BhcXVlSlNDbGFzcyoganNDbAogICAgIDogbV9jbGFzcyhqc0NsYXNzKQogewogICAg
IGlmIChqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcykgewotICAgICAgICBzdGF0aWNWYWx1ZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAgICAg
ICAgc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFi
bGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRl
cmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmVuZCgpOwogICAgICAgICBmb3Ig
KE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0Ns
YXNzLT5tX3N0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKICAgICAgICAgICAgIFN0cmluZyB2YWx1
ZU5hbWUgPSBpdC0+a2V5LT5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgICAgIHN0YXRpY1ZhbHVl
cy0+YWRkKHZhbHVlTmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljVmFsdWVFbnRy
eT4oaXQtPnZhbHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZh
bHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAgICAgICAgIHN0YXRpY1ZhbHVlcy0+
YWRkKHZhbHVlTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8U3RhdGljVmFsdWVFbnRyeT4oaXQtPnZh
bHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5hdHRy
aWJ1dGVzLCB2YWx1ZU5hbWUpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChqc0NsYXNz
LT5tX3N0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAgICAg
c3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25z
VGFibGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29u
c3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMtPmVuZCgpOwogICAg
ICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKLSAgICAgICAg
ICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgpLCBzdGQ6Om1h
a2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rpb24s
IGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOworICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5h
ZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIG1ha2VVbmlxdWU8U3RhdGljRnVuY3Rpb25FbnRy
eT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzKSk7CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgT3BhcXVlSlNDbGFzc0NvbnRl
eHREYXRhJiBPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4mIGNvbnRleHREYXRh
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vcGFxdWVKU0NsYXNzRGF0YSgpLmFkZCh0
aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFjb250ZXh0RGF0YSkKLSAg
ICAgICAgY29udGV4dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250ZXh0
RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CisgICAgICAgIGNvbnRleHREYXRhID0gbWFrZVVuaXF1
ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwogICAgIHJldHVy
biAqY29udGV4dERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKaW5kZXggZDllZTY3NDAzNDljZmVm
ZGZiY2MwZDMxMDk0ZjFmNGRlNWE1MmMxZS4uYmE0YTVhMTY2OTdhZjVmOGE5NzIyZTU3NDY5ZTM5
NGQ5NzkwNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtp
bmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU0Nv
bnRleHRHcm91cEFkZE1hcmtpbmdDb25zdHJhaW50KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwLCBK
U01hcmtpbmdDb25zdHIKICAgICAvLyBlbHNlIGdldHMgbWFya2VkLgogICAgIENvbnN0cmFpbnRW
b2xhdGlsaXR5IHZvbGF0aWxpdHkgPSBDb25zdHJhaW50Vm9sYXRpbGl0eTo6R3JleWVkQnlNYXJr
aW5nOwogICAgIAotICAgIGF1dG8gY29uc3RyYWludCA9IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxl
TWFya2luZ0NvbnN0cmFpbnQ+KAorICAgIGF1dG8gY29uc3RyYWludCA9IG1ha2VVbmlxdWU8U2lt
cGxlTWFya2luZ0NvbnN0cmFpbnQ+KAogICAgICAgICB0b0NTdHJpbmcoIkFtYyIsIGNvbnN0cmFp
bnRJbmRleCwgIigiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3RyYWludENh
bGxiYWNrKSksICIpIiksCiAgICAgICAgIHRvQ1N0cmluZygiQVBJIE1hcmtpbmcgQ29uc3RyYWlu
dCAjIiwgY29uc3RyYWludEluZGV4LCAiICgiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oY29uc3RyYWludENhbGxiYWNrKSksICIsICIsIFJhd1BvaW50ZXIodXNlckRhdGEpLCAiKSIp
LAogICAgICAgICBbY29uc3RyYWludENhbGxiYWNrLCB1c2VyRGF0YV0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KaW5kZXggZDQ2OWI3NWEzMWYwZWZjYTlkMDdhYmIw
M2IwYmU2NjE2MWIzOTU2Ny4uNGI1OTkwNzNmZTc2YjQ4NjQ0MzY5OWFiZGNiMzRjNDE2NGJjMmUz
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYwNiw3
ICs2MDYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOihKU0ds
b2JhbENvbnRleHRSZWYpY29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFs
dWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0
aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIG1fY2FjaGVkT2JqQ1dyYXBwZXJzID0gW1tOU01h
cFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6
dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBdOwogCi0gICAgbV9jYWNoZWRKU1dyYXBwZXJzID0gc3Rk
OjptYWtlX3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6
OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7CisgICAgbV9jYWNoZWRKU1dyYXBwZXJz
ID0gbWFrZVVuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFpbmVkIGlkLCBKU0M6
OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7CiAKICAgICBBU1NFUlQoIXRvSlNHbG9i
YWxPYmplY3QoY29udGV4dCktPndyYXBwZXJNYXAoKSk7CiAgICAgdG9KU0dsb2JhbE9iamVjdChj
b250ZXh0KS0+c2V0V3JhcHBlck1hcChzZWxmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IGVlOTMyODIxZWY3NGJkNjg5MWFl
OGYyOWZhZDdiYmE1YWZlYTBjYmMuLjczY2I0MjcwNDM4MTgzMWU4MTlkOWQ5NDNlYjllNTQ0MDMw
OTZmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tG
dW5jdGlvbi5tbQpAQCAtMTk1LDE4ICsxOTUsMTggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+
PigpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3Vs
dFR5cGUgdHlwZURvdWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxiYWNrQXJndW1lbnRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
YWxsYmFja0FyZ3VtZW50Qm9vbGVhbj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlw
ZSB0eXBlVm9pZCgpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJl
c3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxiYWNrQXJndW1lbnRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJh
Y2tBcmd1bWVudElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNs
YXNzKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpCkBAIC0yMjgsMTkgKzIyOCwx
OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAo
Y2xzID09IFtKU1ZhbHVlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrQXJndW1lbnRKU1ZhbHVlPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEpTVmFsdWU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05T
U3RyaW5nIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxi
YWNrQXJndW1lbnROU1N0cmluZz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENh
bGxiYWNrQXJndW1lbnROU1N0cmluZz4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNOdW1iZXIg
Y2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1
bWVudE5TTnVtYmVyPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tB
cmd1bWVudE5TTnVtYmVyPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0RhdGUgY2xhc3NdKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0
ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0Rh
dGU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TQXJyYXkgY2xhc3NdKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKICAg
ICAgICAgaWYgKGNscyA9PSBbTlNEaWN0aW9uYXJ5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEaWN0aW9uYXJ5Pigp
OwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNs
YXNzPihjbHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZD
bGFzcz4oY2xzKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2soY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKQpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChOU0lu
dm9jYXRpb24gKmludm9jYXRpb24gPSB2YWx1ZVRvVHlwZUludm9jYXRpb25Gb3IoY29weSkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3RydWN0
PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxi
YWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiB9OwpAQCAtMzM1LDQ1ICszMzUsNDUgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmlj
PFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8
VD4+KCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVz
dWx0VHlwZSB0eXBlRG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxiYWNrUmVzdWx0Qm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bGJhY2tSZXN1bHRCb29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5
cGVWb2lkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
UmVzdWx0Vm9pZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRW
b2lkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAg
IHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBj
aGFyKikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVz
dWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVN0cnVjdChjb25zdCBjaGFyKiBi
ZWdpbiwgY29uc3QgY2hhciogZW5kKQogICAgIHsKICAgICAgICAgU3RyaW5nUmFuZ2UgY29weShi
ZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IHR5cGVU
b1ZhbHVlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBj
b3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTY2Miw3ICs2NjIs
NyBAQCBzdGF0aWMgSlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25Gb3JJbnZvY2F0aW9u
KEpTQ29udGV4dCAqY29udGV4dCwgTlNJbnZvYwogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
dG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKICAgICBKU0M6OlZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKLSAgICBhdXRvIGlt
cGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihpbnZv
Y2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUo
cmVzdWx0KSk7CisgICAgYXV0byBpbXBsID0gbWFrZVVuaXF1ZTxKU0M6Ok9iakNDYWxsYmFja0Z1
bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgV1RGTW92ZShhcmd1
bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSA9IGltcGwt
Pm5hbWUoKTsKICAgICByZXR1cm4gdG9SZWYoSlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG5hbWUsIFdURk1vdmUoaW1wbCkp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250
ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcApp
bmRleCBlMDFlOTcwYzdmNTgwMzY1NjE4ZWYxZGFiODU1NDRkNzA0ZjliNDdhLi43OGQ3NjU1ZmY4
MDc3NjBkNDYwOGE2MTdlNTdjOTBmMTU0Mjc5OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHZv
aWQganNjQ29udGV4dFNldFZpcnR1YWxNYWNoaW5lKEpTQ0NvbnRleHQqIGNvbnRleHQsIEdSZWZQ
dHI8SlNDVmlydHVhbE0KICAgICAgICAgICAgIHByaXYtPmpzQ29udGV4dCA9IEpTUmV0YWluUHRy
PEpTR2xvYmFsQ29udGV4dFJlZj4oQWRvcHQsIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAo
anNjVmlydHVhbE1hY2hpbmVHZXRDb250ZXh0R3JvdXAocHJpdi0+dm0uZ2V0KCkpLCBudWxscHRy
KSk7CiAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlNHbG9iYWxPYmplY3QocHJpdi0+
anNDb250ZXh0LmdldCgpKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPndyYXBwZXJNYXAo
KSkKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0V3JhcHBlck1hcChzdGQ6Om1ha2VfdW5p
cXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgpKSk7CisgICAgICAgICAg
ICBnbG9iYWxPYmplY3QtPnNldFdyYXBwZXJNYXAobWFrZVVuaXF1ZTxKU0M6OldyYXBwZXJNYXA+
KHByaXYtPmpzQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBqc2NWaXJ0dWFsTWFjaGluZUFkZENv
bnRleHQocHJpdi0+dm0uZ2V0KCksIGNvbnRleHQpOwogICAgIH0gZWxzZSBpZiAocHJpdi0+dm0p
IHsKICAgICAgICAgQVNTRVJUKHByaXYtPmpzQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKaW5kZXggMTFiYjdjMGI4NzM3ZGI2
N2RkMTdkY2QyNGY3MDI5NDM0NDY5YTgwMy4uZjUyM2VhNDE5OWY4YWJkNzMyZjc3YjYyODE0MTIw
MTM0YmI4YmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q1dyYXBwZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NX
cmFwcGVyTWFwLmNwcApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIFdyYXBw
ZXJNYXA6OldyYXBwZXJNYXAoSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCkKLSAgICA6IG1f
Y2FjaGVkSlNXcmFwcGVycyhzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVy
LCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKKyAgICA6IG1fY2FjaGVk
SlNXcmFwcGVycyhtYWtlVW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVyLCBKU0M6OkpTT2Jq
ZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKaW5kZXggYTc1ZjU4ZGMxNDZiM2I2NDk1
Y2ViMTY3YWRmNGRhYmZmMDZiMGM4OS4uZGE0NzcwNTFmMzQ1ZTA3MTY4ZmM3ZDA2ZTBjN2Y1MjYz
MTE4NmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9i
ZVN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3Rh
Y2suY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgUGFnZSogU3RhY2s6OmVuc3VyZVBhZ2VGb3Iodm9p
ZCogYWRkcmVzcykKICAgICBpZiAoTElLRUxZKGl0ICE9IG1fcGFnZXMuZW5kKCkpKQogICAgICAg
ICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihi
YXNlQWRkcmVzcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gbWFrZVVu
aXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlcy5h
ZGQoYmFzZUFkZHJlc3MsIFdURk1vdmUocGFnZSkpOwogICAgICAgICBtX2xhc3RBY2Nlc3NlZFBh
Z2UgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggMmM5YzNiMGRlODllYjNlMzgzZjRjYmRj
ZjIxMmQyNjhjMWMxOWRiYS4uN2Y2ODU4NmMxYzAyODljMGEzMjUyMmZkZTllMDY3ZGYxZjQxZTIx
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTEyNDEs
NyArMTI0MSw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgIHZvaWQgcHJpbnQoVmFsdWUqIG9y
aWdpbiwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgYXV0byBwcmlu
dExpc3QgPSBQcmludGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0KGFyZ3VtZW50cy4uLik7Ci0gICAg
ICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwqPiht
X2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEFpcjo6UHJpbnRTcGVjaWFsPihwcmlu
dExpc3QpKSk7CisgICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQ
cmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEFpcjo6UHJpbnRTcGVj
aWFsPihwcmludExpc3QpKSk7CiAgICAgICAgIEluc3QgaW5zdChBaXI6OlBhdGNoLCBvcmlnaW4s
IEFyZzo6c3BlY2lhbChwcmludFNwZWNpYWwpKTsKICAgICAgICAgUHJpbnRlcjo6YXBwZW5kQWly
QXJncyhpbnN0LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKICAgICAg
ICAgYXBwZW5kKFdURk1vdmUoaW5zdCkpOwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgY2xhc3MgTG93
ZXJUb0FpciB7CiAgICAgewogICAgICAgICBpZiAoIWZpZWxkKSB7CiAgICAgICAgICAgICBmaWVs
ZCA9IHN0YXRpY19jYXN0PFQqPigKLSAgICAgICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lhbChz
dGQ6Om1ha2VfdW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4p
KSk7CisgICAgICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxUPihzdGQ6
OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBmaWVsZDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcAppbmRleCBmZmNiMmQ0ZTI3MTQ0Mjk3MGU1NDY0MzY2NzBmN2YyOWRlYjFhYjFjLi4yZWNj
ZGFjMDQ5ZTY4ZDExM2UyM2Y5N2YyNDM1M2E1ZDRhYWEzYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiBQcm9jZWR1cmU6OlByb2NlZHVyZSgpCiAgICAgOiBtX2NmZyhuZXcg
Q0ZHKCp0aGlzKSkKICAgICAsIG1fbGFzdFBoYXNlTmFtZSgiaW5pdGlhbCIpCi0gICAgLCBtX2J5
cHJvZHVjdHMoc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQorICAgICwgbV9i
eXByb2R1Y3RzKG1ha2VVbmlxdWU8T3BhcXVlQnlwcm9kdWN0cz4oKSkKICAgICAsIG1fY29kZShu
ZXcgQWlyOjpDb2RlKCp0aGlzKSkKIHsKICAgICBtX2NvZGUtPnNldE51bUVudHJ5cG9pbnRzKG1f
bnVtRW50cnlwb2ludHMpOwpAQCAtMzExLDI4ICszMTEsMjggQEAgdm9pZCBQcm9jZWR1cmU6OmRl
bGV0ZU9ycGhhbnMoKQogRG9taW5hdG9ycyYgUHJvY2VkdXJlOjpkb21pbmF0b3JzKCkKIHsKICAg
ICBpZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0gc3RkOjptYWtlX3Vu
aXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fZG9taW5hdG9ycyA9IG1ha2VVbmlx
dWU8RG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9kb21pbmF0b3JzOwogfQogCiBO
YXR1cmFsTG9vcHMmIFByb2NlZHVyZTo6bmF0dXJhbExvb3BzKCkKIHsKICAgICBpZiAoIW1fbmF0
dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0
dXJhbExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fbmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxO
YXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOwogfQogCiBC
YWNrd2FyZHNDRkcmIFByb2NlZHVyZTo6YmFja3dhcmRzQ0ZHKCkKIHsKICAgICBpZiAoIW1fYmFj
a3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFj
a3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1ZTxC
YWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQogCiBC
YWNrd2FyZHNEb21pbmF0b3JzJiBQcm9jZWR1cmU6OmJhY2t3YXJkc0RvbWluYXRvcnMoKQogewog
ICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWlu
YXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAg
ICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0
b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAg
LTM1OCw3ICszNTgsNyBAQCB2b2lkKiBQcm9jZWR1cmU6OmFkZERhdGFTZWN0aW9uKHNpemVfdCBz
aXplKQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0YVNlY3Rpb24+KHNpemUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4gZGF0
YVNlY3Rpb24gPSBtYWtlVW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKICAgICB2b2lkKiByZXN1
bHQgPSBkYXRhU2VjdGlvbi0+ZGF0YSgpOwogICAgIG1fYnlwcm9kdWN0cy0+YWRkKFdURk1vdmUo
ZGF0YVNlY3Rpb24pKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5jcHAKaW5kZXggMzNmOGFiZmVmYmMxZjhmOTE2NTQ1YTNiZGNhMTk2YjBj
YzY2YzM5OC4uZDVkNjljMzBhNTk5MTc1ZjI4MTQ4MzYyODYzNmZjYjc3MDY4MDE2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAg
Q0NhbGxTcGVjaWFsKiBDb2RlOjpjQ2FsbFNwZWNpYWwoKQogewogICAgIGlmICghbV9jQ2FsbFNw
ZWNpYWwpIHsKICAgICAgICAgbV9jQ2FsbFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxDQ2FsbFNwZWNp
YWwqPigKLSAgICAgICAgICAgIGFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbFNwZWNp
YWw+KCkpKTsKKyAgICAgICAgICAgIGFkZFNwZWNpYWwobWFrZVVuaXF1ZTxDQ2FsbFNwZWNpYWw+
KCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jQ2FsbFNwZWNpYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGYzNmI5YjJmZTY2ODE2MGI4
ODk5YjBjNTBiMzE5N2Q3NTg4MjRmODAuLjk1Y2FhMDA0ZDhlYjM5MjMzMGUxY2NiYjYzOWE1Y2Vl
NzljYmM3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2Vu
ZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUu
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBj
b2RlKQogICAgICAgICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICAgICAgfQogCi0gICAgICAgIGNv
ZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxHZW5l
cmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2RlKTsKKyAgICAgICAgY29kZS5tX2dlbmVyYXRl
QW5kQWxsb2NhdGVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM+KGNvZGUpOwogICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
cy0+cHJlcGFyZUZvckdlbmVyYXRpb24oKTsKIAogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAppbmRleCBlZjE1NDRjMDdiYjMyYTkwMzdmMmNi
NzFlMTVlNzRhOWJlNjFiZjk0Li4zZGNhMjk2Nzg4YjAwMTA2OGUwMWY0MjNlMTE2YzdjMmE0ZTdk
YTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gY29tcGlsZShCMzo6UHJv
Y2VkdXJlJiBwcm9jKQogICAgIGdlbmVyYXRlKHByb2MuY29kZSgpLCBqaXQpOwogICAgIExpbmtC
dWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCMzo6Q29tcGls
YXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25Q
dHJUYWcsICJ0ZXN0YWlyIGNvbXBpbGF0aW9uIiksIHByb2MucmVsZWFzZUJ5cHJvZHVjdHMoKSk7
CiB9CiAKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgdGVzdEludmFsaWRhdGVDYWNoZWRUZW1w
UmVnaXN0ZXJzKCkKICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwgQXJnOjpiaWdJbW0o
Yml0d2lzZV9jYXN0PGludHB0cl90PigmdGhpbmdzKSksIGJhc2UpOwogCiAgICAgQjM6OkJhc2lj
QmxvY2sqIHBhdGNoUG9pbnQxUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBCMzo6QWlyOjpT
cGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5p
cXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0
Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2lu
dFNwZWNpYWw+KCkpOwogCiAgICAgLy8gSW4gUGF0Y2hwb2ludCwgTG9hZCB0aGluZ3NbMF0gLT4g
dG1wLiBUaGlzIHdpbGwgbWF0ZXJpYWxpemUgdGhlIGFkZHJlc3MgaW4geDE3IChkYXRhTWVtb3J5
UmVnaXN0ZXIpLgogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQxID0gcGF0Y2hQ
b2ludDFSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQs
IEIzOjpPcmlnaW4oKSk7CkBAIC0xOTMwLDcgKzE5MzAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJl
Z1Bpbm5lZCgpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAg
ICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRj
aHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRj
aHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNp
YWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkp
OwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBC
Mzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBh
dGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0xOTYyLDcg
KzE5NjIsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDIoKQogICAgIEdQUlJlZyBwaW5u
ZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQp
OwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNw
ZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIz
OjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VV
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBi
M1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpW
b2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgdm9pZCB0ZXN0QXJndW1l
bnRSZWdQaW5uZWQzKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
OwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwq
IHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6
OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50
U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwog
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxC
Mzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCAxNTVjYTRhYjQ3MGIwMTQ0MmFkOTU0M2E4YWUxZmMx
ZmM1OWY3ZTNhLi4xYzdhZDBmOTRlMDZiOGMzMWJmZTdjYzk0ZDA1NTJjNDc3OTYwN2U3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC0xODksNyArMTg5LDcgQEAgZXh0ZXJuIExvY2sg
Y3Jhc2hMb2NrOwogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY29tcGlsZVBy
b2MoUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsID0gT3B0aW9uczo6ZGVm
YXVsdEIzT3B0TGV2ZWwoKSkKIHsKICAgICBwcm9jZWR1cmUuc2V0T3B0TGV2ZWwob3B0TGV2ZWwp
OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShw
cm9jZWR1cmUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBp
bGUocHJvY2VkdXJlKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNw
cAppbmRleCBjMTA4NTlhY2VkM2RiNzhiNjY0OTc2YTA4YjhlNWI0OGQ2NTJiMmYzLi43N2ZiNjVk
YTBiN2EwNmM3ZDY1OGJhYmRiNGU1MTA4YTc5MTdlZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC04NTMsNyArODUzLDcgQEAgdm9pZCBB
Y2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRlJiBzdGF0ZSkKICAg
ICAgICAgICAgIHN0YXRlLnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRlcihzcGlsbFN0YXRl
KTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFjY2Vzcy5jYWxsTGlua0luZm8oKSk7
Ci0gICAgICAgICAgICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxMaW5rSW5mbz4oKTsKKyAgICAgICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IG1ha2VV
bmlxdWU8Q2FsbExpbmtJbmZvPigpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2Vu
ZXJhdGVkIGEgcG9seW1vcnBoaWMgY2FsbCBzdHViIHRoYXQganVtcGVkIGJhY2sgdG8gdGhlIGdl
dHRlcgogICAgICAgICAgICAgLy8gc3R1Yiwgd2hpY2ggdGhlbiBqdW1wZWQgYmFjayB0byB0aGUg
bWFpbiBjb2RlLCB0aGVuIHdlJ2QgaGF2ZSBhIHJlYWNoYWJpbGl0eQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5j
cHAKaW5kZXggMmJkOWZlNjUxOTlkMDdmMTczZTM4MzBkYzc0ZTQ2N2ViOWQ1NDFmYy4uOTI1N2Zj
MjI2NjUyOWY4NjEzN2Q1ZGFkOGM5MjQ5NzE4MzkwNDc0MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3Vt
ZW50cyA6IHB1YmxpYyBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6U2xvd1AKICAgICB2b2lkIEFj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKENDYWxsSGVscGVyczo6
SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5cGUgb3BlcmF0aW9u
LCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4gYXJncykgXAogICAg
IHsgXAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvID0gaml0LmxhYmVsKCk7IFwKLSAg
ICAgICAgbV9nZW5lcmF0b3JzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNsb3dQYXRoQ2FsbEdl
bmVyYXRvcldpdGhBcmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlw
ZSwgUmVzdWx0VHlwZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQs
IGFyZ3MpKTsgXAorICAgICAgICBtX2dlbmVyYXRvcnMuYXBwZW5kKG1ha2VVbmlxdWU8U2xvd1Bh
dGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVy
YXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24s
IHJlc3VsdCwgYXJncykpOyBcCiAgICAgfSBcCiAKIFNOSVBQRVRfU0xPV19QQVRIX0NBTExTKEpT
Q19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCAzM2JiMGMwNjYzNTM4MWU4
OThmNjVhODc0ZjFmMzZhOGM5NDgyM2FmLi4xMGM2NWJiOWRkNzA5YTlhZjdhYmE2Y2ViOGE5Yjcz
NTk3NzE2NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNjUsMTUgKzY1LDE1IEBAIHZvaWQgQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJbnN0cnVjdGlv
blN0cmVhbSYKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4K
ICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7
CiAKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+
KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7Ci0gICAgYXV0byBmaXJzdEJsb2NrID0g
c3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6
RW50cnlCbG9jayk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZmlyc3RCbG9j
ayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVu
dHJ5QmxvY2spOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkp
OwogCiAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogY3VycmVudCA9IGZpcnN0QmxvY2suZ2V0KCk7CiAgICAgYXBwZW5kQmxvY2soV1RGTW92
ZShmaXJzdEJsb2NrKSk7CiAKLSAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOworICAgIGF1dG8g
ZXhpdCA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6
OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7
CiAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBs
KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgICAgICBib29s
IGNyZWF0ZWRCbG9jayA9IGZhbHNlOwogICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBieXRlY29k
ZSBpcyBhIGp1bXAgdGFyZ2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBpdHMgb3duIGJhc2lj
IGJsb2NrLgogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywg
Ynl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7Ci0gICAgICAgICAg
ICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGlu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBtYWtlVW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Js
b2NrLmdldCgpOwogICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwog
ICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDhkYWMxNTg1ZmFiMmI5OThjMWU1
ZDg4NzUyYmExMmRmNmRhZGJkZS4uMzkzZjE4MjRlNDFhNGJlYjUxNGM2MmE2OTZmMzNhODM3MjQ5
NWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZN
JiB2bSkKIAogdm9pZCBDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3QgQ2Fs
bEZyYW1lU2h1ZmZsZURhdGEmIHNodWZmbGVEYXRhKQogewotICAgIG1fZnJhbWVTaHVmZmxlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsK
KyAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVEYXRh
PihzaHVmZmxlRGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBlZjFjYWJmYTcxOGIwODBkN2Yz
ZTg2MzdmOWY5NGY2MDU4NmVlNGU4Li4zOWEyM2I0YzdmNDdkOGZjZTVlMzBlZWNhNTUwZTc3ZGFk
MzE1ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxp
bmVDYWNoZXMoKQogQ29kZUJsb2NrOjpKSVREYXRhJiBDb2RlQmxvY2s6OmVuc3VyZUpJVERhdGFT
bG93KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiB7CiAgICAgQVNTRVJUKCFtX2ppdERhdGEp
OwotICAgIG1faml0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGF0YT4oKTsKKyAgICBtX2pp
dERhdGEgPSBtYWtlVW5pcXVlPEpJVERhdGE+KCk7CiAgICAgcmV0dXJuICptX2ppdERhdGE7CiB9
CiAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6cmFyZUNhc2VQcm9m
aWxlQ291bnRGb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNMb2NrCiB2b2lkIENv
ZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCBjYWxsZWVTYXZlUmVn
aXN0ZXJzKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBl
bnN1cmVKSVREYXRhKGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CisgICAgZW5z
dXJlSklURGF0YShsb2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOwogfQogCiB2b2lkIENvZGVC
bG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9m
ZnNldExpc3Q+IHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQpAQCAtMTc5MCw3ICsxNzkwLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZz
ZXRTbG93KGNvbnN0IE9wQ2F0Y2gKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhcmFtZXRl
cnMoKTsgKytpKQogICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGkpKTsKIAotICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgIGF1
dG8gcHJvZmlsZXMgPSBtYWtlVW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5tX3NpemUg
PT0gbGl2ZU9wZXJhbmRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBy
b2ZpbGVzLT5tX3NpemU7ICsraSkKICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA4NzA2OGJhNjVkZDg1YzIzZmJlNGE0OTBl
OTc0YTcyODFmMjU2MDRjLi4zMTQzOGUwYWM1MDY5YjI3NDk2OTg4ODZhYjExMjAwNzZiY2I3M2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC05NDMs
NyArOTQzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0
YSkgewotICAgICAgICAgICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURh
dGE+KCk7CisgICAgICAgICAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4o
KTsKICAgICAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIG1fY2F0Y2hQcm9maWxl
cyBjYW4gYmUgdG91Y2hlZCBmcm9tIGNvbXBpbGVyIHRocmVhZHMuCiAgICAgICAgICAgICBtX3Jh
cmVEYXRhID0gV1RGTW92ZShyYXJlRGF0YSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4IDJkOTQzMWNmMGIx
NDRmYTNhMmMyMjFhNjZlOTQwNzBjNzc1MGUwZTAuLmIxYTAxZmZhNGQ5MzQ4ZmVjYjI0Yzk2ODhi
YzgwMDUyZjkzODg2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RGR0V4aXRQcm9maWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIEV4aXRQcm9maWxlOjph
ZGQoQ29kZUJsb2NrKiBvd25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAv
LyBJZiB3ZSd2ZSBuZXZlciBzZWVuIGFueSBmcmVxdWVudCBleGl0cyB0aGVuIGNyZWF0ZSB0aGUg
bGlzdCBhbmQgcHV0IHRoaXMgc2l0ZQogICAgIC8vIGludG8gaXQuCiAgICAgaWYgKCFwcm9maWxl
Lm1fZnJlcXVlbnRFeGl0U2l0ZXMpIHsKLSAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNp
dGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CisgICAg
ICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZyZXF1
ZW50RXhpdFNpdGU+PigpOwogICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMtPmFw
cGVuZChzaXRlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcAppbmRleCA0ZjQ4YTFkNmM5ODcyMmU1YWMyZWNlODdlNTA0MDIzMmY5YTVkNmIx
Li40ZmIxMTU3MzAwM2I1MmVmZDlhODY2ZmIzYmRmNzc1MDk4Y2VmYWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIERlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZShDb2RlQmxvY2sqLCBDb2RlQmxvY2sq
LAogVmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4mIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
azo6ZW5zdXJlRGVmZXJyZWRTb3VyY2VEdW1wKCkKIHsKICAgICBpZiAoIW1fZGVmZXJyZWRTb3Vy
Y2VEdW1wKQotICAgICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4+KCk7CisgICAgICAgIG1fZGVmZXJyZWRTb3VyY2VE
dW1wID0gbWFrZVVuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPj4oKTsKICAgICByZXR1
cm4gKm1fZGVmZXJyZWRTb3VyY2VEdW1wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggZGI5YWQxNjBhYzI4MTMwZjM5ODQx
ZmYzYmZlYjMyYjY4M2RkZWFkNi4uZGY0ZDc3Y2UzZjYzYjUyMDA3NTU0NGM0MWExNmNiMjMxZDdk
ZmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRT
dGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIEFj
Y2Vzc0Nhc2U6OkdldHRlcjogewotICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAgICAg
IGNhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gYWNjZXNzLmFzPEdl
dHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZvKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICpjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgKmNhbGxM
aW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAppbmRleCBmYzFmNDYwZGU5NjU0MWQ4ZmEwOTlj
YmI0NWYyMzA5YzJhMzMzODBmLi5lZDhkNDkzZjdlZTZmMWRhMmI5MDlhZDU3YzYyNzcxODEzYzJk
NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZh
cmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFy
aWFudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgR2V0QnlJZFZhcmlhbnQmIEdldEJ5SWRWYXJpYW50
OjpvcGVyYXRvcj0oY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQogICAgIG1fY3VzdG9tQWNj
ZXNzb3JHZXR0ZXIgPSBvdGhlci5tX2N1c3RvbUFjY2Vzc29yR2V0dGVyOwogICAgIG1fZG9tQXR0
cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1dGU7CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtT
dGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxM
aW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtT
dGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1
cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICBy
ZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAppbmRleCAwOTI5ZDZmYjQxMjY3NGVkN2Yy
MDQwNDVmYjQyNWViN2QzOGQzYzkzLi42ZWViMTQ1YjMzNzk2NjJhZjFjMTUwMDE5MDc2NzI3YTM5
ZWUyYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgTGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUqIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6
YWRkKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExhenlPcGVyYW5kVmFs
dWVQcm9maWxlS2V5JiBrZXkpCiB7CiAgICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7CisgICAg
ICAgIG1fZGF0YSA9IG1ha2VVbmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxpc3Q+KCk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RhdGEtPnNp
emUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobV9kYXRhLT5hdChpKS5rZXkoKSA9PSBrZXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNj
ZXNzQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nl
c3NDaGFpbi5oCmluZGV4IGI0OWU0ZTI0MmU1MmYwODEzMTVlNDhmYjFlMWJjYzI5N2U1MjhhZTAu
LmExZWNiOTRkZDBkMTg2NzA4NjM1MmY1MmI1YjU4YzMxOTNlZWNmZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY2xvbmUoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+KCp0aGlzKTsKICAg
ICB9CiAKICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkgY29uc3QgeyByZXR1
cm4gbV9jaGFpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMjJmNDU1ODE0Yjg0YWY0ZmU3NGNhZjIzNDAxZDMw
YWRhZGFlNWM2ZS4uM2IzMDIzMzlmMDM1MGRhYzQyOGYzZjA0Y2M3MzUyYTNhZTUyMWI4MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nl
c3MuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9y
cGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICBtX3N0dWJSb3V0aW5lID0gY3JlYXRlSklUU3R1
YlJvdXRpbmUoY29kZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxsc1RvTWFyaywgY29k
ZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlv
bkhhbmRsaW5nKTsKICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0ZS53YXRjaHBvaW50
cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkpCi0gICAgICAgIG1f
d2Vha1JlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxXcml0ZUJhcnJpZXI8SlND
ZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAgICAgbV93ZWFrUmVm
ZXJlbmNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92
ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhpY0FjY2Vzc0ludGVy
bmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIsIGNvZGUuY29kZSgp
LCAiXG4iKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcAppbmRleCBjMmQ5NTMyMGNlYmQ1NmRiZGM5M2VlYmQ2YzMxNDBhN2RmN2Nj
MjA5Li5kNjQyYmNjZmU3OTc2NmM1Mjc5YmJjODEwODcwMWViN2Y4NTgyNGU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCkBAIC0yMDIs
NyArMjAyLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1Yklu
Zm8oCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ29tcGxleEdl
dFN0YXR1czo6SW5saW5lYWJsZTogewogICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzID0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVy
QWNjZXNzQ2FzZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
KmNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBj
YWxsRXhpdFNpdGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFZhcmlhbnQuY3BwCmluZGV4IDVkNmIyOTA0NWNhNjc1YzU2ZmE3MWQ1NDc1YTExNWIy
ZGY2ZjNjNWUuLjcyYzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZlNjM2MmY3MmU2YzBhMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcApA
QCAtNDYsNyArNDYsNyBAQCBQdXRCeUlkVmFyaWFudCYgUHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9y
PShjb25zdCBQdXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jb25kaXRpb25TZXQgPSBvdGhl
ci5tX2NvbmRpdGlvblNldDsKICAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zmc2V0OwogICAgIGlm
IChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwor
ICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90
aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9jYWxsTGlua1N0YXR1
cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IDk2ZDIyZWNmYTBhNGM3
NTZlZGZmNjFmMDAxM2Y3MjU4ZTdkM2ZiZDUuLjUzZjIwOGJjYWRlZDNkZWEyZGVlMThhMGU4OTYw
NWM0OTBhMTk1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVjb3JkZWRTdGF0dXNlczo6
UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAKIENhbGxMaW5rU3Rh
dHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8g
c3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKKyAg
ICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CiAg
ICAgQ2FsbExpbmtTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBjYWxscy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUzLDcgKzUzLDcgQEAgQ2FsbExpbmtTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4KIAogR2V0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhj
b25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMp
CiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdldEJ5SWRTdGF0dXM+
KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEdldEJ5SWRTdGF0dXM+
KHN0YXR1cyk7CiAgICAgR2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwog
ICAgIGdldHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVz
UHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02MSw3ICs2MSw3IEBAIEdldEJ5SWRTdGF0
dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbiwKICAgICAKIFB1dEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1
dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgUHV0QnlJZFN0
YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
dXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxQ
dXRCeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIFB1dEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1
c1B0ci5nZXQoKTsKICAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBX
VEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjksNyArNjksNyBA
QCBQdXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sCiAKIEluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IElu
QnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPEluQnlJZFN0YXR1cz4oc3RhdHVzKTsKICAgICBJbkJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0
YXR1c1B0ci5nZXQoKTsKICAgICBpbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4s
IFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNs
ZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggMzBhMWYwNTUyNTllM2RlZDFhNzE2OGVlMzUyNmY3
MmMwODRiZWU1YS4uZmNjMjkxMTgwMjQ0ZTBiMzIyOWUyZmQ3NjMwMDdiZTc5YTg3NDFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KiBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1Yklu
Zm86OmVuc3VyZVJlZmVyZW5jZQogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSkKIHsKICAgICBpZiAoIWhvbGRlclJlZikK
LSAgICAgICAgaG9sZGVyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBob2xkZXJSZWYgPSBt
YWtlVW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJsb2NrLCBzdHVi
SW5mbyk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fY29kZUJsb2Nr
ID09IGNvZGVCbG9jayk7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1fc3R1YkluZm8gPT0g
c3R1YkluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNzIyMmQ0ODJhZDFlNWUyODZjZWY1OWQ0ZmYxZTFmNWVi
MDcxMDc4ZC4uNDkxOTVkMTU3MjFkMmNkYTRmNzQ4YWU4ZGJlMmFmMDA5YTI4YTdhMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
Y3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBTdHJ1Y3R1cmVT
dHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvbHltb3Jw
aGljQWNjZXNzPigpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNj
ZXNzPiBhY2Nlc3MgPSBtYWtlVW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+LCAyPiBh
Y2Nlc3NDYXNlczsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggZTAwNmQxNmI5YjhhMGZjMzBm
MDQzM2NkZTYwMmVjYzNiMTY4ZDQyZS4uMmM5YTBiMzAxZWIwOThlMTE1ZWYxZTM2YjEyN2JlMjll
M2FiZGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzJiBVbmxpbmtlZENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coQ29kZUJsb2Nr
KiBjb2QKICAgICAgICAgaWYgKCFtX2xpdmVuZXNzKSB7CiAgICAgICAgICAgICAvLyBUaGVyZSBp
cyBhIGNoYW5jZSB0d28gY29tcGlsZXIgdGhyZWFkcyByYWNlZCB0byB0aGUgc2xvdyBwYXRoLgog
ICAgICAgICAgICAgLy8gR3JhYmJpbmcgdGhlIGxvY2sgYWJvdmUgZGVmZW5kcyBhZ2FpbnN0IGNv
bXB1dGluZyBsaXZlbmVzcyB0d2ljZS4KLSAgICAgICAgICAgIG1fbGl2ZW5lc3MgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2NrKTsKKyAgICAgICAg
ICAgIG1fbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29k
ZUJsb2NrKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNDM3MDk1MTllYjYxNmUy
NjUxMDZlZjFkNTUyOTYxN2Q2NDVjOWJjOS4uNTEyNTM2YzBkNDQ4NTdhNGNhNzZlODEzZmUxNDgw
M2E5NzNmZmE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKQEAgLTQwMiw3ICs0MDIsNyBAQCBjbGFzcyBVbmxpbmtlZENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7
CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5nKCpoZWFwKCksIGNl
bGxMb2NrKCkpOwotICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFy
ZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4o
KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggZmJl
YzlmNzJjYTJmZDFhMThiYWNiMDczZTY4NzI1NGI3MGI5ZWJlMS4uNDlkOWQyZmQzZTZmZTlmYjRi
NTI3ZjY3N2FiZDViZDRhNTEyMjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVjb2RlQ2Fj
aGVkQ29kZUJsb2NrcyhWTSYgdm0pCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURh
dGEmIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQogewog
ICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7
CiAgICAgcmV0dXJuICptX3JhcmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZTk3Njg2YWEz
ZWRjZGQ4ZDNmOWI1N2M0YTZkMTIzYmFjOWNiMzk4Ny4uMTc4YTYxZGY2OTEzM2FmZGNjMTI3Mjhj
YmZkOTZlYjM5ZjQyYWViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDAxLDcgKzQwMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogCiAgICAgICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRv
cj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmly
b25tZW50KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVl
PEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5l
cmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOwogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBieXRl
Y29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IGJjZDcyZWEwOWY1ZjcxN2E2NWY2NWQ3ZDJl
ZmMxNzVlMDIzZTY5OTAuLmViYWJiNTlkNDM1OWE5ZTM2NGYyY2EzYWY2YWZkMGVmZDAzOTBiMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00NCw2ICs0
NCw3IEBAIGNsYXNzIFZNOwogdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1lOwogCiBjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgRGVidWdnZXIoVk0mKTsKICAgICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IGYyMGEzNTdlY2I3M2FhN2VmZTRjYjEwN2QxY2NiN2U5ZGM5
MDAzMzkuLjI3NjU2OTI2YThkMjlkMjdlYmVlYWE5ZmZkY2EyMDNjYzI1ZmEwZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKQEAgLTU4LDcgKzU4LDcgQEAgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OkFic3RyYWN0SW50ZXJwcmV0ZXIoR3JhcGgmIGdyYXBoLCBBYnN0cmEKICAg
ICAsIG1fc3RhdGUoc3RhdGUpCiB7CiAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAg
ICAgICAgbV9waGlDaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3Jh
cGgpOworICAgICAgICBtX3BoaUNoaWxkcmVuID0gbWFrZVVuaXF1ZTxQaGlDaGlsZHJlbj4obV9n
cmFwaCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA1YjBjODdmZmVlNTJiMmE5ZTUwMTFl
NWJmOGM3MWMwMTI5NDJlZmQwLi5lNjgzYTgyMWIyMmJjZmU1NmIzOWVmNDFhMTFmMWMyZGRiZDY2
MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9wbGFuKHBsYW4p
CiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKCkpCiAgICAgLCBtX3Byb2ZpbGVk
QmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX3NzYUNGRyhzdGQ6Om1h
a2VfdW5pcXVlPFNTQUNGRz4oKnRoaXMpKQorICAgICwgbV9zc2FDRkcobWFrZVVuaXF1ZTxTU0FD
Rkc+KCp0aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2lu
dFN0YXRlKEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0
ZShIYXZlTm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtODYsOCArODYsOCBAQCBHcmFwaDo6R3Jh
cGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgIAogICAgIG1faGFzRGVidWdnZXJFbmFibGVkID0g
bV9wcm9maWxlZEJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgT3B0
aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwogICAgIAotICAgIG1faW5k
ZXhpbmdDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7Ci0gICAg
bV9hYnN0cmFjdFZhbHVlc0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93TWFwPEFic3RyYWN0
VmFsdWU+PigqdGhpcyk7CisgICAgbV9pbmRleGluZ0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93SW5k
ZXhpbmc+KCp0aGlzKTsKKyAgICBtX2Fic3RyYWN0VmFsdWVzQ2FjaGUgPSBtYWtlVW5pcXVlPEZs
b3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0aGlzKTsKIAogICAgIHJlZ2lzdGVyU3RydWN0dXJlKHZt
LnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSk7CiAgICAgdGhpcy0+c3RyaW5nU3RydWN0dXJlID0g
cmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKQEAgLTEwOTcsNyAr
MTA5Nyw3IEBAIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBHcmFwaDo6bGl2ZW5lc3NGb3IoQ29kZUJs
b2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUxpdmVuZXNzLmVuZCgp
KQogICAgICAgICByZXR1cm4gKml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxC
eXRlY29kZUxpdmVuZXNzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZl
bmVzcz4gbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVuZXNzPigpOwogICAg
IGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVGdWxsTGl2ZW5lc3MoY29kZUJs
b2NrLCAqbGl2ZW5lc3MpOwogICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQgPSAqbGl2
ZW5lc3M7CiAgICAgbV9ieXRlY29kZUxpdmVuZXNzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUobGl2
ZW5lc3MpKTsKQEAgLTExMTUsNyArMTExNSw3IEBAIEJ5dGVjb2RlS2lsbHMmIEdyYXBoOjpraWxs
c0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlS2ls
bHMuZW5kKCkpCiAgICAgICAgIHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29k
ZUtpbGxzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBraWxscyA9IG1h
a2VVbmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlz
aXMoKS5jb21wdXRlS2lsbHMoY29kZUJsb2NrLCAqa2lsbHMpOwogICAgIEJ5dGVjb2RlS2lsbHMm
IHJlc3VsdCA9ICpraWxsczsKICAgICBtX2J5dGVjb2RlS2lsbHMuYWRkKGNvZGVCbG9jaywgV1RG
TW92ZShraWxscykpOwpAQCAtMTU1Myw3ICsxNTUzLDcgQEAgQ1BTQ0ZHJiBHcmFwaDo6ZW5zdXJl
Q1BTQ0ZHKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5T
U0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fY3BzQ0ZHKQotICAgICAgICBtX2Nwc0NGRyA9IHN0
ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fY3BzQ0ZHID0gbWFrZVVu
aXF1ZTxDUFNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzQ0ZHOwogfQogCkBAIC0xNTYx
LDcgKzE1NjEsNyBAQCBDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVy
c2lvbik7CiAgICAgaWYgKCFtX2Nwc0RvbWluYXRvcnMpCi0gICAgICAgIG1fY3BzRG9taW5hdG9y
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2Nw
c0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1
cm4gKm1fY3BzRG9taW5hdG9yczsKIH0KIApAQCAtMTU2OSw3ICsxNTY5LDcgQEAgU1NBRG9taW5h
dG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX3NzYURv
bWluYXRvcnMpCi0gICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NB
RG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBtYWtlVW5pcXVl
PFNTQURvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0K
IApAQCAtMTU3OCw3ICsxNTc4LDcgQEAgQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BT
TmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lz
SW5TU0FDb252ZXJzaW9uKTsKICAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFt
X2Nwc05hdHVyYWxMb29wcykKLSAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX2Nwc05hdHVyYWxMb29w
cyA9IG1ha2VVbmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nw
c05hdHVyYWxMb29wczsKIH0KIApAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgU1NBTmF0dXJhbExvb3Bz
JiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zv
cm0gPT0gU1NBKTsKICAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgaWYgKCFtX3NzYU5h
dHVyYWxMb29wcykKLSAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG1h
a2VVbmlxdWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3NzYU5hdHVy
YWxMb29wczsKIH0KIApAQCAtMTU5Niw3ICsxNTk2LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6
ZW5zdXJlQmFja3dhcmRzQ0ZHKCkKICAgICAvLyBXZSBjb3VsZCBlYXNpbHkgcmVsYXggdGhpcyBp
biB0aGUgZnV0dXJlIHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0b2RheSwgaXQncyBvbmx5IHVzZWQg
aW4gU1NBLgogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAKICAgICBpZiAoIW1f
YmFja3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFja3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gbWFrZVVuaXF1
ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwogfQog
CkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJl
QmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNT
QSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRz
RG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMp
OworICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0Rv
bWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0K
IApAQCAtMTYxMiw3ICsxNjEyLDcgQEAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBo
OjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lz
KQotICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOworICAgICAgICBtX2NvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzID0gbWFrZVVuaXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA2
MzkwNDNlOWUyN2ZiZTBlMGI5MmFiNDZhNjY5YmUxNDEwNTAzMzcwLi5mMmI2NjQwMmUzYWQwZTcy
ZGZjZTA1YjY1YWYzZmM5MjZkMDA5ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCBKSVRDb21waWxlcjo6SklUQ29t
cGlsZXIoR3JhcGgmIGRmZykKICAgICAsIG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKGRmZy5t
X3ZtKQogewogICAgIGlmIChVTkxJS0VMWShzaG91bGREdW1wRGlzYXNzZW1ibHkoKSB8fCBtX2dy
YXBoLm1fdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyKSkKLSAgICAgICAgbV9kaXNhc3NlbWJsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKKyAgICAgICAgbV9kaXNhc3Nl
bWJsZXIgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKICNpZiBFTkFCTEUoRlRMX0pJ
VCkKICAgICBtX2ppdENvZGUtPnRpZXJVcEluTG9vcEhpZXJhcmNoeSA9IFdURk1vdmUobV9ncmFw
aC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkpOwogICAgIGZvciAodW5zaWduZWQgdGll
clVwQnl0ZWNvZGUgOiBtX2dyYXBoLm1fcGxhbi50aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2Rlcygp
KQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIu
ZGlkQnVpbGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdp
bk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOworICAgICAgICBtX2NvZGVCbG9jay0+
c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92
ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsKIH0KIAogc3RhdGlj
IHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDb21waWxlciYgaml0LCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmIHN0YWNrT3ZlcmZsb3cpCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZSgpCiAKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBp
bGVFbnRyeSgpOwotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0
aXZlSklUPigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRp
dmVKSVQ+KCp0aGlzKTsKIAogICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBzdWZmaWNpZW50IHNw
YWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFjay4KICAgICBKdW1wTGlzdCBzdGFja092ZXJm
bG93OwpAQCAtNDAyLDkgKzQwMiw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAg
IG1fc3BlY3VsYXRpdmUtPmNyZWF0ZU9TUkVudHJpZXMoKTsKICAgICBzZXRFbmRPZkNvZGUoKTsK
IAotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oKnRo
aXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIGF1dG8gbGlua0J1
ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21w
aWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgp
KSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVl
PEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKKyAgICAgICAgbV9ncmFwaC5tX3Bs
YW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxh
bikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNDE2LDcgKzQxNiw3IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIp
OwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklU
RmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxK
SVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlcikpKTsKIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBA
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgY29tcGlsZUVudHJ5RXhl
Y3V0aW9uRmxhZygpOwogCiAgICAgLy8gPT09IEZ1bmN0aW9uIGJvZHkgY29kZSBnZW5lcmF0aW9u
ID09PQotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklU
PigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVKSVQ+
KCp0aGlzKTsKICAgICBjb21waWxlQm9keSgpOwogICAgIHNldEVuZE9mTWFpblBhdGgoKTsKIApA
QCAtNTA3LDkgKzUwNyw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAg
ICAgc2V0RW5kT2ZDb2RlKCk7CiAKICAgICAvLyA9PT0gTGluayA9PT0KLSAgICBhdXRvIGxpbmtC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywg
SklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVl
PExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsK
ICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dy
YXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+
KG1fZ3JhcGgubV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplciht
YWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBsaW5rKCpsaW5rQnVmZmVyKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogCiAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrID0gbGlua0J1ZmZlci0+bG9jYXRp
b25PZjxKU0VudHJ5UHRyVGFnPihhcml0eUNoZWNrKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNl
dEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZm
ZXIpLCB3aXRoQXJpdHlDaGVjaykpOwogfQogCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCogSklU
Q29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGUqIG5vZGUpCiAgICAgICAgIHJl
dHVybiBpdC0+c2Vjb25kOwogCiAgICAgaWYgKCFtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzKQot
ICAgICAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxCYWc8
ZG91YmxlPj4oKTsKKyAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IG1ha2VVbmlx
dWU8QmFnPGRvdWJsZT4+KCk7CiAKICAgICBkb3VibGUqIGFkZHJlc3NJbkNvbnN0YW50UG9vbCA9
IG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMtPmFkZCgpOwogICAgICphZGRyZXNzSW5Db25zdGFu
dFBvb2wgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAppbmRleCBiYjgwMDI3NGRkY2I2MzAzNDc4MzczN2Uz
OGFkMWU2MWU5YzVlYTA0Li5hOTQ0MDQ3NDU5MjUyMTg0NWJhMzE4ODM3YjEzYjlmNGEzMTdlZjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlz
aXNQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0Fu
YWx5c2lzUGhhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIExpdmVuZXNzQW5hbHlzaXNQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICwgbV9saXZlQXRUYWlsKG1fZ3JhcGgpCiAg
ICAgewogICAgICAgICBtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+cmVjb21wdXRlKCk7Ci0gICAg
ICAgIG1fd29ya3NldCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya3NldD4obV9ncmFwaC5tX2luZGV4
aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CisgICAgICAgIG1fd29ya3NldCA9IG1ha2VVbmlxdWU8
V29ya3NldD4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CiAgICAgfQog
CiAgICAgYm9vbCBydW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXgg
MzRhY2JjMWZlMjJmYjc3ZjM1ODBkYTM2Nzk5YzgyMTRiZWJjOWQ2Mi4uYjY5NDlhYTAzNWMxMmZh
NzQ5ZDU4MGNjN2MyYWVjY2E4ZDkyYzE2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNv
bXBpbGVJblRocmVhZEltcGwoKQogICAgIGlmIChtX21vZGUgPT0gRlRMRm9yT1NSRW50cnlNb2Rl
KSB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGVyZm9ybU9TUkVudHJ5cG9pbnRDcmVhdGlvbihk
ZmcpOwogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9m
aW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAg
ICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIFJVTl9QSEFTRShwZXJmb3Jt
Q1BTUmV0aHJlYWRpbmcpOwpAQCAtMzk4LDcgKzM5OCw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0
aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBjYXNlIEZUTEZvck9TUkVudHJ5TW9k
ZTogewogI2lmIEVOQUJMRShGVExfSklUKQogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxlKGRm
ZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0
ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2Zp
bmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAg
ICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00NzgsNyArNDc4LDcg
QEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAg
ICAgICBSVU5fUEhBU0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6OkNhbm5vdENvbXBpbGUpIHsK
LSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6
ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWlsZWRG
aW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHAKaW5kZXggODcxNTk1YjFmZjI1OWJlZTQ0YzcxY2UwM2Q3ZDhlOGJkNjQzNjUzNy4u
NTM0ZDY0YjUzOGZhMTgwYWY0OGU4OWQ0ZjgyNjAyZmI0NWM5MjFjZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcApAQCAtNDQ4
LDcgKzQ0OCw3IEBAIGNsYXNzIFNTQUNvbnZlcnNpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRUYWlsLmNsZWFyKCk7CiAgICAgICAgICAgICBi
bG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRI
ZWFkLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CisgICAgICAgICAgICBibG9jay0+c3NhID0gbWFr
ZVVuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KIAogICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBlbnRyeXBvaW50SW5kZXhUb0FyZ3VtZW50c0Jsb2NrKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKaW5k
ZXggN2NmNDI1MjFhNjIxMTc4ZmY4NTEyYWZmOWZmZmEzMjUyMDAyMjRkNi4uY2RjZGFhNjBkODk4
YTNiNjZkN2IyOThmNjY4MThjNzlkYzQ4Yzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTkzLDcgKzE5Myw3IEBAIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoQ2FsbCgKICAgICBT
cGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50IHJl
cXVpcmVtZW50LAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMuLi4gYXJndW1lbnRz
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNT
bG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1
bWVudHMuLi4+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRz
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJn
dW1lbnRzLi4uPj4oCiAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNwaWxsTW9kZSwgcmVx
dWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBEZXN0aW5hdGlvblR5cGUsIHR5
cGVuYW1lIFNvdXJjZVR5cGUsIHVuc2lnCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgSnVtcFR5cGUgZnJvbSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgU291cmNlVHlwZSBzb3VyY2VbbnVtYmVyT2ZBc3NpZ25tZW50c10sIERlc3RpbmF0
aW9uVHlwZSBkZXN0aW5hdGlvbltudW1iZXJPZkFzc2lnbm1lbnRzXSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVz
dGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3Rp
bmF0aW9uVHlwZSwgU291cmNlVHlwZSwgbnVtYmVyT2ZBc3NpZ25tZW50cz4+KAogICAgICAgICBm
cm9tLCBqaXQsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCkBAIC0yNDksNyArMjQ5LDcgQEAg
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAog
ewogICAgIFNvdXJjZVR5cGUgc291cmNlQXJyYXlbMV0gPSB7IHNvdXJjZSB9OwogICAgIERlc3Rp
bmF0aW9uVHlwZSBkZXN0aW5hdGlvbkFycmF5WzFdID0geyBkZXN0aW5hdGlvbiB9OwotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDE+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBT
b3VyY2VUeXBlLCAxPj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291
cmNlQXJyYXkpOwogfQogCkBAIC0yNTksNyArMjU5LDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0
cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNvdXJjZVR5cGUgc291
cmNlQXJyYXlbMl0gPSB7IHNvdXJjZTEsIHNvdXJjZTIgfTsKICAgICBEZXN0aW5hdGlvblR5cGUg
ZGVzdGluYXRpb25BcnJheVsyXSA9IHsgZGVzdGluYXRpb24xLCBkZXN0aW5hdGlvbjIgfTsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1w
VHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAyPj4oCisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlw
ZSwgU291cmNlVHlwZSwgMj4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXks
IHNvdXJjZUFycmF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCAyMDdhOWI2OWI0ODg1NWI1NmIxZjgzNzIwNjUxYzJiYzc2
ZTM4ZjllLi43MGU3MDVkNzg0OTMyZDlkM2ZjMjcyNDkxMzJlZmQzZTNlNWQ2NTI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChH
UFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiAgICAgLy8gSSB3YW50IGEgc2xv
dyBwYXRoIHRoYXQgYWxzbyBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQn
cwogICAgIC8vIHdoYXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5l
cmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBsb3QKICAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21h
bGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCisg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93
UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3UmF3
T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwgdmVjdG9y
TGVuZ3RoKSk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJh
eWlmeShOb2RlKiBub2RlLCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAg
ICAgICBzbG93UGF0aC5hcHBlbmQoanVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BS
LCBub2RlLT5hcnJheU1vZGUoKSkpOwogICAgIH0KICAgICAKLSAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzdGQ6Om1ha2VfdW5pcXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4o
CiAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdGVt
cEdQUiwgc3RydWN0dXJlR1BSKSk7CiAgICAgCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7
CkBAIC0yMjQyLDEwICsyMjQyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb3RvdHlw
ZUNoYWluSXNTYW5lKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhH
ZW5lcmF0b3I+KAorICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxT
YW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0
T2ZCb3VuZHMsIHRoaXMsIEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZykpOwogI2Vsc2UKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93
UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIEpTVmFs
dWVSZWdzKHJlc3VsdFRhZ1JlZywgc2NyYXRjaFJlZyksCiAgICAgICAgICAgICAgICAgYmFzZVJl
ZywgcHJvcGVydHlSZWcpKTsKICNlbmRpZgpAQCAtNzYxOSw3ICs3NjE5LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAg
ICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVu
dHMsIHJlc3VsdEdQUiwgc3RydWN0dXJlLAogICAgICAgICAgICAgICAgIGtub3duTGVuZ3RoLCBt
aW5DYXBhY2l0eSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I+
KAorICAgICAgICBhdXRvIGdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Q2FsbENyZWF0ZURpcmVjdEFy
Z3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBy
ZXN1bHRHUFIsIHN0cnVjdHVyZSwgbGVuZ3RoR1BSLCBtaW5DYXBhY2l0eSk7CiAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoZ2VuZXJhdG9yKSk7CiAgICAgfQpAQCAtODQzOSw3
ICs4NDM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhH
ZW5lcmF0b3I+KAorICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxB
cnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2Vu
ZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlX
aXRoU2l6ZSwgcmVzdWx0R1BSLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIp
KTsKICAgICB9CiAKQEAgLTkxMzUsNyArOTEzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRTdHJ1Y3R1cmVDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgY2VsbEdQUiwgR1BSUmVnIHRlbXBH
CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFI7CiAgICAgICAgIAogICAgICAgICBpZiAodGVt
cEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUgPSBt
YWtlVW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIg
PSBzdHJ1Y3R1cmUtPmdwcigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN0cnVjdHVy
ZUdQUiA9IHRlbXBHUFI7CkBAIC0xMzE3Niw3ICsxMzE3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjCiAKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCi0gICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRo
VmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2Vu
ZXJhdG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplLCByZXN1bHRHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwKICAgICAgICAgc2hvdWxkQ29udmVy
dExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlID8gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVjdHVyZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKaW5kZXggZmEzOTZmNGYxOTJhOGJiNGFlZjk5ZDAzNzE5MjRhMmEzOGM2NDVlOC4uYmE2
MTI4ZWZlOWJiMzY4ZmUzYjA2NjIzYjUxZWUzZWVhZDNjNGZkMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKQEAgLTk1LDggKzk1LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIFBoYXNlTW9kZTo6R2xvYmFsOiB7CiAgICAg
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNT
QSk7CiAKLSAgICAgICAgICAgIG1fc3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluUGxhY2VBYnN0
cmFjdFN0YXRlPihtX2dyYXBoKTsKLSAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFic3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dy
YXBoLCAqbV9zdGF0ZSk7CisgICAgICAgICAgICBtX3N0YXRlID0gbWFrZVVuaXF1ZTxJblBsYWNl
QWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7CisgICAgICAgICAgICBtX2ludGVycHJldGVyID0gbWFr
ZVVuaXF1ZTxBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFw
aCwgKm1fc3RhdGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2lzQ29udmVyZ2VkID0g
ZmFsc2U7CiAgICAgICAgICAgICAKQEAgLTEwNyw4ICsxMDcsOCBAQCBjbGFzcyBTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyB0b3dhcmRz
IGJlbGlldmluZyB0aGF0IGFsbCBub2RlcyBuZWVkIGJhcnJpZXJzLiAiTmVlZGluZyBhIGJhcnJp
ZXIiIGlzIGxpa2UKICAgICAgICAgICAgIC8vIHNheWluZyB0aGF0IHRoZSBub2RlIGlzIGluIGEg
cGFzdCBlcG9jaC4gIk5vdCBuZWVkaW5nIGEgYmFycmllciIgaXMgbGlrZSBzYXlpbmcKICAgICAg
ICAgICAgIC8vIHRoYXQgdGhlIG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgZXBvY2guCi0gICAgICAg
ICAgICBtX3N0YXRlQXRIZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5v
ZGUqPj4+KG1fZ3JhcGgpOwotICAgICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9IHN0ZDo6bWFrZV91
bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1f
c3RhdGVBdEhlYWQgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFw
aCk7CisgICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxIYXNo
U2V0PE5vZGUqPj4+KG1fZ3JhcGgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCbG9ja0xp
c3QgcG9zdE9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblBvc3RPcmRlcigpOwogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmluZGV4IGU2YzIyMjFl
ZTMwMTU0NGM3MmE5Y2U4MzVmOTgwZmYzNmYwMjRiN2QuLjhmOTMwMzRiMGM2ZjkwYmE2NmY0YmY1
YzUzYmUxYjRmMGZiYTc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xp
c3QuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgV29ya2xpc3Q6OlRocmVhZEJvZHkgOiBw
dWJsaWMgQXV0b21hdGljVGhyZWFkIHsKICAgICAgICAgaWYgKG1fcmVsYXRpdmVQcmlvcml0eSkK
ICAgICAgICAgICAgIFRocmVhZDo6Y3VycmVudCgpLmNoYW5nZVByaW9yaXR5KG1fcmVsYXRpdmVQ
cmlvcml0eSk7CiAgICAgICAgIAotICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7CisgICAgICAgIG1fY29tcGlsYXRpb25TY29w
ZSA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb25TY29wZT4oKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3ZlcnJpZGUKQEAgLTIx
NCw3ICsyMTQsNyBAQCB2b2lkIFdvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1bnNpZ25lZCBudW1i
ZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5KQogCiB2b2lkIFdvcmtsaXN0OjpjcmVh
dGVOZXdUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgaW50IHJlbGF0aXZlUHJp
b3JpdHkpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRocmVhZERhdGE+KHRoaXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRE
YXRhPiBkYXRhID0gbWFrZVVuaXF1ZTxUaHJlYWREYXRhPih0aGlzKTsKICAgICBkYXRhLT5tX3Ro
cmVhZCA9IGFkb3B0UmVmKG5ldyBUaHJlYWRCb2R5KGxvY2tlciwgKnRoaXMsICpkYXRhLCBtX2xv
Y2ssIG1fcGxhbkVucXVldWVkLmNvcHlSZWYoKSwgcmVsYXRpdmVQcmlvcml0eSkpOwogICAgIG1f
dGhyZWFkcy5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggMTliMTE1YzlmZGQ2
N2NiYzhhZTEwOWM2NDQ1NzQyOGJhM2FkZmE1My4uMDBiZGE2NTcyNzljZjdhOTlkYmFiMTQ5YjA5
YzcwM2Q2OGIzNWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2Vt
Ymxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIEFzeW5jaHJvbm91c0Rp
c2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHZvaWQgZGlzYXNzZW1ibGVB
c3luY2hyb25vdXNseSgKICAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVSZWYsIHNpemVfdCBzaXplLCBj
b25zdCBjaGFyKiBwcmVmaXgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFz
az4gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmx5
VGFzaz4oKTsKICAgICB0YXNrLT5oZWFkZXIgPSBzdHJkdXAoaGVhZGVyLmRhdGEoKSk7IC8vIFl1
Y2shIFdlIG5lZWQgdGhpcyBiZWNhdXNlIENTdHJpbmcgZG9lcyByYWN5IHJlZmNvdW50aW5nLgog
ICAgIHRhc2stPmNvZGVSZWYgPSBjb2RlUmVmOwogICAgIHRhc2stPnNpemUgPSBzaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCmluZGV4IDkwYWUy
ZjRmZTA2YTE1MmNhZTU3ODVlMmMwM2M5OTliNjgzMmJjMWIuLmVjODBlYTY3YjI1NmY4OTE4ZDQ4
ODNhOGM1MmI4ZjM3OTU4M2FiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcC5jcHAKQEAgLTE1NywxMSArMTU3LDExIEBAIGNvbnN0IEFic3RyYWN0SGVh
cCYgSW5kZXhlZEFic3RyYWN0SGVhcDo6YXRTbG93KHB0cmRpZmZfdCBpbmRleCkKICAgICBBU1NF
UlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPj0gbV9zbWFsbEluZGljZXMuc2l6ZSgpKTsK
ICAgICAKICAgICBpZiAoVU5MSUtFTFkoIW1fbGFyZ2VJbmRpY2VzKSkKLSAgICAgICAgbV9sYXJn
ZUluZGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcFR5cGU+KCk7CisgICAgICAgIG1fbGFyZ2VJ
bmRpY2VzID0gbWFrZVVuaXF1ZTxNYXBUeXBlPigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFi
c3RyYWN0SGVhcD4mIGZpZWxkID0gbV9sYXJnZUluZGljZXMtPmFkZChpbmRleCwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZmllbGQpIHsKLSAgICAgICAgZmllbGQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFic3RyYWN0SGVhcD4oKTsKKyAgICAgICAgZmllbGQgPSBtYWtlVW5pcXVl
PEFic3RyYWN0SGVhcD4oKTsKICAgICAgICAgaW5pdGlhbGl6ZSgqZmllbGQsIGluZGV4KTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4IDVkMDRi
NzJmMDQ4MzFkMDYzMDIzMDRkMWViN2U0OTI5ZDQ4MDQyN2YuLjQ2MzVjYzk2ZjkxMDkxZjczZjA4
ZDFmNzUyYjA0N2QxMDUzYmZiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZl
cG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFZNJiB2bSA9IGdyYXBoLm1fdm07
CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCi0gICAgICAgIHN0YXRlLnByb2Mt
PmNvZGUoKS5zZXREaXNhc3NlbWJsZXIoc3RkOjptYWtlX3VuaXF1ZTxCMzo6QWlyOjpEaXNhc3Nl
bWJsZXI+KCkpOworICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKG1h
a2VVbmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAogICAgIHsKICAgICAgICAgR3Jh
cGhTYWZlcG9pbnQgc2FmZXBvaW50KHN0YXRlLmdyYXBoLCBzYWZlcG9pbnRSZXN1bHQpOwpAQCAt
NzgsNyArNzgsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3Vs
dCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rlck9mZnNldHMgPQotICAgICAgICBz
dGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5jYWxsZWVT
YXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CisgICAgICAgIG1ha2VVbmlxdWU8UmVnaXN0ZXJB
dE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgp
KTsKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAgIGRhdGFMb2coIlVu
d2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVFR5cGU6
OkZUTEpJVCksICI6ICIsICpyZWdpc3Rlck9mZnNldHMsICJcbiIpOwogICAgIGNvZGVCbG9jay0+
c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhXVEZNb3ZlKHJlZ2lzdGVyT2Zmc2V0cykpOwpAQCAtMTQy
LDcgKzE0Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0
JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoY2FsbCwgRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsb29rdXBFeGNlcHRpb25IYW5kbGVyKSk7CiAgICAg
ICAgIH0pOwogCi0gICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5G
YWlsKTsKKyAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBtYWtlVW5pcXVl
PExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogCiAg
ICAgaWYgKHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2Nh
dGUoKSkgewogICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKQEAgLTE1MSw3
ICsxNTEsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYg
c2FmZXBvaW50UmVzdWx0KQogICAgIAogICAgIEIzOjpQQ1RvT3JpZ2luTWFwIG9yaWdpbk1hcCA9
IHN0YXRlLnByb2MtPnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7CiAgICAgaWYgKHZtLnNob3VsZEJ1
aWxkZXJQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKSkKLSAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1Rv
Q29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6
ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9y
aWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1
aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxp
bmtCdWZmZXIpKTsKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IGxhYmVs
ID0gc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50cnlQ
dHJUYWc+KHN0YXRlLnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSk7CiAgICAgc3RhdGUuZ2VuZXJh
dGVkRnVuY3Rpb24gPSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMRmFpbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCmlu
ZGV4IDE2NTMzNTA5Y2QwYjQ4MmM3NGJjYTY3MzE4NzYzZjJlMGYwOWRkZjEuLmMzZjkzMzkyZjI2
ZTZmYzk1ZjljMmNjNTkyOWVkMzRjNmJjMzBjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExGYWlsLmNwcApAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgREZHOwogCiB2b2lk
IGZhaWwoU3RhdGUmIHN0YXRlKQogewotICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6
ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikp
OworICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRG
aW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRleCAwODU0MDU2ZWM3
ZDE2MmIxMWNkYzIxY2Q3OGZlMTUxN2Y3YWNmM2ViLi45NWRiNjk2MWU4ZTkwNzcwY2Q2ZTU1Njcz
MDIyYjQ0NzYzYjU4MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKQEAg
LTE2Niw3ICsxNjYsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0
LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQo
aml0Lmp1bXAoKSk7CiAKLSAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAg
ICAgICAgICAgbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxv
Y2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICBpZiAobGlua0J1ZmZlci0+
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25G
YWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBA
QCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNz
KCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgp
OwogICAgICAgICAKLSAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1
ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgIGxp
bmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21w
aWxhdGlvbkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2Nh
dGUoKSkgewogICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKaW5kZXggYWYxYmE0YmY5MGE4ZmQwYmEyNTAyYzY0N2UyYzE3MTQxMjJkZTdkNC4u
MDliMzQyNzNjYmI3Y2FiNDRjZDg2M2U5OWIyODU5MGU4N2M5NGIxMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTUwODAsNyArMTUwODAs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5rQnVmZmVyLmxpbmsoZ2VuZXJhdG9ySnVtcCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2bS0+Z2V0Q1RJ
U3R1YihsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gc3RkOjpt
YWtlX3VuaXF1ZTxMYXp5U2xvd1BhdGg+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IG1ha2VVbmlx
dWU8TGF6eVNsb3dQYXRoPigpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gbGlua2VkUGF0Y2hhYmxlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJbnRlcm5hbFB0clRh
Zz4obGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBhdGNoYWJsZUp1bXAp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRleCA2NTNlYzZmNjk2
MDQ5Yjc1MmFjMjRhNzc5MzEwZDRhZDk3YmIwM2RiLi40YTQ4NGZhNmQ0NjQzMGQ3MWU1NzAwOGJm
MWU5OWY2YzI1Yjg0ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApA
QCAtNjAsMTAgKzYwLDEwIEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAotICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3Vu
aXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOworICAgIGdyYXBoLm1fcGxhbi5zZXRG
aW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOwogICAgIGZp
bmFsaXplciA9IHN0YXRpY19jYXN0PEpJVEZpbmFsaXplcio+KGdyYXBoLm1fcGxhbi5maW5hbGl6
ZXIoKSk7CiAKLSAgICBwcm9jID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZWR1cmU+KCk7CisgICAg
cHJvYyA9IG1ha2VVbmlxdWU8UHJvY2VkdXJlPigpOwogCiAgICAgcHJvYy0+c2V0T3JpZ2luUHJp
bnRlcigKICAgICAgICAgW10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpPcmlnaW4gb3JpZ2luKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCmlu
ZGV4IDIyZDdmZDY1ZDVhMTc1NWI1YjJkM2I3OGRkYTU1YzBkMDA3ZTFjY2IuLjAyMWIwY2RiOWRm
YWMxOGIzNjg2NDI4YTk4MjNmMjgxMTBiYjc5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEFsbG9jYXRv
ciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgICAg
ICBkYXRhTG9nKCJDcmVhdGluZyBCbG9ja0RpcmVjdG9yeS9Mb2NhbEFsbG9jYXRvciBmb3IgIiwg
bV9uYW1lLCAiLCAiLCBhdHRyaWJ1dGVzKCksICIsICIsIHNpemVDbGFzcywgIi5cbiIpOwogICAg
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVlRGlyZWN0b3J5ID0K
LSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCks
IHNpemVDbGFzcyk7CisgICAgICAgIG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2Uu
aGVhcCgpLCBzaXplQ2xhc3MpOwogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSB1bmlx
dWVEaXJlY3RvcnkuZ2V0KCk7CiAgICAgbV9kaXJlY3Rvcmllcy5hcHBlbmQoV1RGTW92ZSh1bmlx
dWVEaXJlY3RvcnkpKTsKICAgICAKQEAgLTg4LDcgKzg4LDcgQEAgQWxsb2NhdG9yIENvbXBsZXRl
U3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgbV9zcGFjZS5hZGRC
bG9ja0RpcmVjdG9yeShsb2NrZXIsIGRpcmVjdG9yeSk7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVf
cHRyPExvY2FsQWxsb2NhdG9yPiB1bmlxdWVMb2NhbEFsbG9jYXRvciA9Ci0gICAgICAgIHN0ZDo6
bWFrZV91bmlxdWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CisgICAgICAgIG1ha2VVbmlx
dWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CiAgICAgTG9jYWxBbGxvY2F0b3IqIGxvY2Fs
QWxsb2NhdG9yID0gdW5pcXVlTG9jYWxBbGxvY2F0b3IuZ2V0KCk7CiAgICAgbV9sb2NhbEFsbG9j
YXRvcnMuYXBwZW5kKFdURk1vdmUodW5pcXVlTG9jYWxBbGxvY2F0b3IpKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggYTAxYjVhMmI0YWVmZDNlNTI5Njk3N2E1Yzgz
ODQwNDJlNWEyOTU2YS4uOTcxOTllMTg2ZGU3MmQ3NzI3OTczNWM5ZDNjOTk0MGM4NWM0OGFmNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTI4OSwxNSArMjg5LDE1IEBAIEhl
YXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fbWF4RWRlblNpemUo
bV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9tYXhIZWFwU2l6ZShtX21pbkJ5dGVzUGVyQ3lj
bGUpCiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCi0gICAgLCBtX21hY2hpbmVUaHJlYWRzKHN0
ZDo6bWFrZV91bmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCi0gICAgLCBtX2NvbGxlY3RvclNsb3RW
aXNpdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiQyIpKQotICAgICwg
bV9tdXRhdG9yU2xvdFZpc2l0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMs
ICJNIikpCi0gICAgLCBtX211dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3Rh
Y2tBcnJheT4oKSkKLSAgICAsIG1fcmFjZU1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtT
dGFja0FycmF5PigpKQotICAgICwgbV9jb25zdHJhaW50U2V0KHN0ZDo6bWFrZV91bmlxdWU8TWFy
a2luZ0NvbnN0cmFpbnRTZXQ+KCp0aGlzKSkKKyAgICAsIG1fbWFjaGluZVRocmVhZHMobWFrZVVu
aXF1ZTxNYWNoaW5lVGhyZWFkcz4oKSkKKyAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3IobWFr
ZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCisgICAgLCBtX211dGF0b3JTbG90Vmlz
aXRvcihtYWtlVW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKKyAgICAsIG1fbXV0YXRv
ck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9yYWNlTWFy
a1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX2NvbnN0cmFpbnRT
ZXQobWFrZVVuaXF1ZTxNYXJraW5nQ29uc3RyYWludFNldD4oKnRoaXMpKQogICAgICwgbV9oYW5k
bGVTZXQodm0pCi0gICAgLCBtX2NvZGVCbG9ja3Moc3RkOjptYWtlX3VuaXF1ZTxDb2RlQmxvY2tT
ZXQ+KCkpCi0gICAgLCBtX2ppdFN0dWJSb3V0aW5lcyhzdGQ6Om1ha2VfdW5pcXVlPEpJVFN0dWJS
b3V0aW5lU2V0PigpKQorICAgICwgbV9jb2RlQmxvY2tzKG1ha2VVbmlxdWU8Q29kZUJsb2NrU2V0
PigpKQorICAgICwgbV9qaXRTdHViUm91dGluZXMobWFrZVVuaXF1ZTxKSVRTdHViUm91dGluZVNl
dD4oKSkKICAgICAsIG1fdm0odm0pCiAgICAgLy8gV2Ugc2VlZCB3aXRoIDEwbXMgc28gdGhhdCBH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNuJ3QgY29udGludW91c2x5IAogICAg
IC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEgY29sbGVjdGlvbi4K
QEAgLTMwNSw4ICszMDUsOCBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6dHJ5Q3Jl
YXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVmKCpuZXcgSW5jcmVt
ZW50YWxTd2VlcGVyKHRoaXMpKSkKICAgICAsIG1fc3RvcElmTmVjZXNzYXJ5VGltZXIoYWRvcHRS
ZWYoKm5ldyBTdG9wSWZOZWNlc3NhcnlUaW1lcih2bSkpKQotICAgICwgbV9zaGFyZWRDb2xsZWN0
b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1f
c2hhcmVkTXV0YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5Pigp
KQorICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tB
cnJheT4oKSkKKyAgICAsIG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtT
dGFja0FycmF5PigpKQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxwZXJQb29sKCkpCiAg
ICAgLCBtX3RocmVhZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAsIG1fdGhyZWFkQ29u
ZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCkBAIC0zMTQsNyArMzE0
LDcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG1fd29ybGRT
dGF0ZS5zdG9yZSgwKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIG51bWJlck9mUGFyYWxs
ZWxUaHJlYWRzID0gaGVhcEhlbHBlclBvb2woKS5udW1iZXJPZlRocmVhZHMoKTsgaSA8IG51bWJl
ck9mUGFyYWxsZWxUaHJlYWRzOyArK2kpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RW
aXNpdG9yPiB2aXNpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRv
Q1N0cmluZygiUCIsIGkgKyAxKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRv
cj4gdmlzaXRvciA9IG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAi
LCBpICsgMSkpOwogICAgICAgICBpZiAoT3B0aW9uczo6b3B0aW1pemVQYXJhbGxlbFNsb3RWaXNp
dG9yc0ZvclN0b3BwZWRNdXRhdG9yKCkpCiAgICAgICAgICAgICB2aXNpdG9yLT5vcHRpbWl6ZUZv
clN0b3BwZWRNdXRhdG9yKCk7CiAgICAgICAgIG1fYXZhaWxhYmxlUGFyYWxsZWxTbG90VmlzaXRv
cnMuYXBwZW5kKHZpc2l0b3IuZ2V0KCkpOwpAQCAtMzIzLDE3ICszMjMsMTcgQEAgSGVhcDo6SGVh
cChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIAogICAgIGlmIChPcHRpb25zOjp1c2VD
b25jdXJyZW50R0MoKSkgewogICAgICAgICBpZiAoT3B0aW9uczo6dXNlU3RvY2hhc3RpY011dGF0
b3JTY2hlZHVsZXIoKSkKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAg
ICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFN0b2NoYXN0aWNTcGFjZVRpbWVNdXRhdG9yU2No
ZWR1bGVyPigqdGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAg
ICAgICAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxl
cj4oKnRoaXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHNpbXVsYXRlIHR1cm5pbmcg
b2ZmIGNvbmN1cnJlbnQgR0MgYnkgbWFraW5nIHRoZSBzY2hlZHVsZXIgc2F5IHRoYXQgdGhlIHdv
cmxkCiAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgYmUgc3RvcHBlZCB3aGVuIHRoZSBjb2xsZWN0
b3IgaXMgcnVubmluZy4KLSAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5
bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKKyAgICAgICAgbV9zY2hl
ZHVsZXIgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxl
cj4oKTsKICAgICB9CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmlmeUhlYXAoKSkKLSAgICAg
ICAgbV92ZXJpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRp
b25zOjpudW1iZXJPZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24oKSk7CisgICAgICAg
IG1fdmVyaWZpZXIgPSBtYWtlVW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVt
YmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uKCkpOwogICAgIAogICAgIG1fY29s
bGVjdG9yU2xvdFZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11dGF0b3IoKTsKIApAQCAtODk5
LDcgKzg5OSw3IEBAIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmplY3RDb3VudCgpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMo
KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRT
ZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIGZvckVhY2hQcm90
ZWN0ZWRDZWxsKAogICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgewogICAgICAgICAgICAgcmVj
b3JkVHlwZSgqdm0oKSwgKnJlc3VsdCwgY2VsbCk7CkBAIC05MDksNyArOTA5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVDb3VudHMo
KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRT
ZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAgIEhlYXBJdGVyYXRp
b25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNo
TGl2ZUNlbGwoCiAgICAgICAgIGl0ZXJhdGlvblNjb3BlLApAQCAtMjg1Niw3ICsyODU2LDcgQEAg
dm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICB9LAogICAgICAgICBDb25z
dHJhaW50Vm9sYXRpbGl0eTo6U2VsZG9tR3JleWVkKTsKICAgICAKLSAgICBtX2NvbnN0cmFpbnRT
ZXQtPmFkZChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhp
cykpOworICAgIG1fY29uc3RyYWludFNldC0+YWRkKG1ha2VVbmlxdWU8TWFya1N0YWNrTWVyZ2lu
Z0NvbnN0cmFpbnQ+KCp0aGlzKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWRkTWFya2luZ0NvbnN0cmFp
bnQoc3RkOjp1bmlxdWVfcHRyPE1hcmtpbmdDb25zdHJhaW50PiBjb25zdHJhaW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5kZXggNWI2OWNkNWUzNWY2MmI1MDY2
M2E5Y2JkYzczOTRkMWJkNjdhZDFkOC4uZTFlYjZjNzgzM2Q0ODU4NzFhOWM1MzNjZmQ0NzMxYzc1
ZjliMTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCkBAIC0y
MTcsNyArMjE3LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFu
ZEdDSWZOZWVkZWQoKQogaW5saW5lIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiYgSGVh
cDo6bWFya0xpc3RTZXQoKQogewogICAgIGlmICghbV9tYXJrTGlzdFNldCkKLSAgICAgICAgbV9t
YXJrTGlzdFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZl
cio+PigpOworICAgICAgICBtX21hcmtMaXN0U2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PE1hcmtl
ZEFyZ3VtZW50QnVmZmVyKj4+KCk7CiAgICAgcmV0dXJuICptX21hcmtMaXN0U2V0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
CmluZGV4IDViOWFjODlkYWJmMDRhMDYxNGRjMTBmYmJhZjE2YzBmNGE0OTlmN2UuLjJkMmJjOGZi
OWIyN2ZlOWY5YjFiNWJlNTRjYjc1MWY4M2UwZDNkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgSGVhcFNuYXBzaG90QnVpbGRlcjo6YnVpbGRTbmFwc2hvdCgpCiAKICAgICBQcmV2ZW50
Q29sbGVjdGlvblNjb3BlIHByZXZlbnRDb2xsZWN0aW9uU2NvcGUobV9wcm9maWxlci52bSgpLmhl
YXApOwogCi0gICAgbV9zbmFwc2hvdCA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFNuYXBzaG90Piht
X3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKKyAgICBtX3NuYXBzaG90ID0gbWFrZVVu
aXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIubW9zdFJlY2VudFNuYXBzaG90KCkpOwogICAg
IHsKICAgICAgICAgbV9wcm9maWxlci5zZXRBY3RpdmVTbmFwc2hvdEJ1aWxkZXIodGhpcyk7CiAg
ICAgICAgIG1fcHJvZmlsZXIudm0oKS5oZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNj
b3BlOjpGdWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5k
ZXggYjhlNDMwMTkxZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOS4uN2MyZWQyNDAyZmQ3
MzAxZmMwOTlhOGRmYjVkM2MzMzZhZWFkMTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvQ2VsbFNldC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgTkVWRVJfSU5MSU5FIEJpdG1hcDxN
YXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNsb3coc2l6ZV90IGJs
b2MKICAgICBhdXRvJiBiaXRzUHRyUmVmID0gbV9iaXRzW2Jsb2NrSW5kZXhdOwogICAgIGF1dG8q
IGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgIGlmICghYml0cykgewotICAgICAgICBiaXRz
UHRyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxv
Y2s+PigpOworICAgICAgICBiaXRzUHRyUmVmID0gbWFrZVVuaXF1ZTxCaXRtYXA8TWFya2VkQmxv
Y2s6OmF0b21zUGVyQmxvY2s+PigpOwogICAgICAgICBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsK
ICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICAgICAgbV9ibG9ja3NXaXRoQml0
c1tibG9ja0luZGV4XSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5jcHAKaW5kZXggZDUxMDAwZWJhODdmMzFkZTQ4MWJlZDA4YTVmMmZlZDhhNjM5ZmY5OS4u
Y2QzZTdlNTYxNTQ1NjZkY2Y4YzE1MTYzYTE1YjcyZjI3NjhmMjkzMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcApAQCAtMzksNyArMzksNyBAQCBJc29TdWJz
cGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUq
IGhlYXBDZWxsVHlwZSwgcwogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2RpcmVjdG9yeSgm
aGVhcCwgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6
ZSkpCiAgICAgLCBtX2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9yeSkKLSAgICAsIG1faXNvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPElzb0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3I+KCkpCisgICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJ
c29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQogewogICAgIGluaXRpYWxpemUoaGVhcENlbGxU
eXBlLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKaW5kZXggYjNh
YmQyYzUyMjRmY2UzZTVjZTEyYzRmMTYzZWQ0ODIzZGFlNjk4ZS4uMTc4MGMwOGE0NzBmMjc2MjMx
NjM3ZWY2ODExN2M5YTRlMzJjMWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1h
cmtpbmdDb25zdHJhaW50U2V0OjpkaWRTdGFydE1hcmtpbmcoKQogCiB2b2lkIE1hcmtpbmdDb25z
dHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJpbmcgbmFtZSwgOjpG
dW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJik+IGZ1bmN0aW9uLCBDb25zdHJhaW50Vm9sYXRpbGl0
eSB2b2xhdGlsaXR5LCBDb25zdHJhaW50Q29uY3VycmVuY3kgY29uY3VycmVuY3ksIENvbnN0cmFp
bnRQYXJhbGxlbGlzbSBwYXJhbGxlbGlzbSkKIHsKLSAgICBhZGQoc3RkOjptYWtlX3VuaXF1ZTxT
aW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5hbWUpLCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSwgY29uY3VycmVuY3ksIHBhcmFs
bGVsaXNtKSk7CisgICAgYWRkKG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdU
Rk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiks
IHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOwogfQogCiB2b2lkIE1hcmtp
bmdDb25zdHJhaW50U2V0OjphZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKaW5kZXgg
ODJiZTNiYmI0NGNiNmM1Nzc2YjhlY2Y3ZmEwYzk0MGQ1ZDVhNTgyNS4uNTNhOTFhMjNjMWQ4OTI5
MThlZTQyOTQxYTY1ZjUyNzg2N2Q0MzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNw
cApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6bWVz
c2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzcwogCiAgICAgU3RyaW5n
IG1lc3NhZ2U7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2Fn
ZSk7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYykpOworICAgIG1fY29uc29sZUFn
ZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIGV4ZWMpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OmNv
dW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTkxLDcgKzkxLDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGl0bGUg
PT0gdGl0bGUpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRo
ZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgIFN0cmluZyB3YXJu
aW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJf
cyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7
Ci0gICAgICAgICAgICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwor
ICAgICAgICAgICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VV
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VU
eXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExOSw3ICsxMTks
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZUVuZChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bAogCiAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51
bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICBTdHJpbmcgd2FybmluZyA9
IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VTdHJpbmcoIlBy
b2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgbV9jb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNz
YWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnN0YXJ0
Q29uc29sZVByb2ZpbGUoKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEV4ZWNTdGF0ZSosIFJlZjxTY3JpcHRBcmd1bWVudHM+
JiYpCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6d2FyblVuaW1wbGVtZW50ZWQo
Y29uc3QgU3RyaW5nJiBtZXRob2QpCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtZXRob2QgKyAi
IGlzIGN1cnJlbnRseSBpZ25vcmVkIGluIEphdmFTY3JpcHQgY29udGV4dCBpbnNwZWN0aW9uLiI7
Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKSk7CisgICAgbV9jb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCBtZXNzYWdlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZGE1MmVmZDEzYzQ5MWNjYWU2
Mzk1ZTA3NGM0NjQ0ZTcwY2MwYTcuLmJkYmQzMWQ2MzEyYjJjMDU2ZDdjNDc4MTVkYzYxNWQxMjI2
ZDkyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qp
Ci0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVk
U2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAg
ICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFn
ZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZXhlY3V0
aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2Vy
dmVyKGdsb2JhbE9iamVjdCkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6
OmNyZWF0ZSgpKQpAQCAtNzEsMTEgKzcxLDExIEBAIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpTR2xvYmFsT2JqCiB7
CiAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29s
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQp
OworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdl
bnQ+KGNvbnRleHQpOwogICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFnZW50LmdldCgpOwog
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwogCi0gICAgbV9jb25z
b2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+
KG1fY29uc29sZUFnZW50KTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPEpTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwogCiAgICAgbV9leGVjdXRp
b25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiB9CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEV4Y2UKICAgICAgICAgICAgIENvbnNvbGVDbGllbnQ6OnByaW50Q29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIGVycm9yTWVzc2FnZSwgU3RyaW5nKCksIDAsIDApOwogICAgIH0KIAotICAgIG1fY29uc29s
ZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBlcnJvck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIG1fY29uc29sZUFn
ZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiBDb25zb2xlQ2xpZW50KiBKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbnNvbGVDbGllbnQoKSBjb25zdApAQCAt
MjgwLDcgKzI4MCw3IEBAIEluc3BlY3RvckFnZW50JiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9y
QWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAg
ICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+
KGNvbnRleHQpOworICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JBZ2VudD4oY29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0
b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9y
QWdlbnQpKTsKICAgICB9CkBAIC0yOTEsNyArMjkxLDcgQEAgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVEZWJ1Z2dlckFnZW50
KCkKIHsKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBhdXRvIGNvbnRleHQg
PSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xl
QWdlbnQpOworICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPEpTR2xvYmFs
T2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQpOwogICAgICAgICBt
X2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgICAgICBtX2NvbnNvbGVD
bGllbnQtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQobV9kZWJ1Z2dlckFnZW50KTsKICAgICAg
ICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwpAQCAtMzI3LDIwICsz
MjcsMjAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxh
enlBZ2VudHMoKQogCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKIAotICAgIG1fYWdlbnRz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250
ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSdW50
aW1lQWdlbnQ+KGNvbnRleHQpKTsKIAogICAgIGVuc3VyZURlYnVnZ2VyQWdlbnQoKTsKIAotICAg
IGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFn
ZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Pihjb250ZXh0
KTsKICAgICBtX2NvbnNvbGVDbGllbnQtPnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQo
c2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1v
dmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBoZWFwQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBoZWFw
QWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7CiAgICAgaWYg
KG1fY29uc29sZUFnZW50KQogICAgICAgICBtX2NvbnNvbGVBZ2VudC0+c2V0SW5zcGVjdG9ySGVh
cEFnZW50KGhlYXBBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaGVh
cEFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2Jh
bE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzBiNWM5YWFkMThjMDhjZWRk
YzM2OTY2YmYwNDY4NTE0MTc2MjY0My4uNDE3ZTc3NWZiODAyNDljMDQwMzEzN2E4Mjc4MjEzNzMy
N2QzMzJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkluc3BlY3RvciJfcykKICAgICAs
IG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKLSAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDdlZGJjODA2NjBmMzZkNmE4MWFhOTFmYjhmYTNmZGRk
ZWRhZTZmMjYuLjVkMjRjNjllNmJmNDVkNzJmYjBiZGE1M2I0YzQ1NzU5ODYxM2NiY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgY29u
c3QgaW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDsKIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiQ29uc29sZSJfcykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAtMTQwLDcgKzE0MCw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkg
ewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9j
YWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwi
IiwgbGFiZWwsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fybmlu
ZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBh
ZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
Zywgd2FybmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwog
ICAgIH0KIH0KIApAQCAtMTU5LDE0ICsxNTksMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OmxvZ1RpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCwK
ICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBh
biBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcg
d2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlz
dCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7Cisg
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwogICAg
IFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwogICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKLSAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVi
dWcsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7Cisg
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRl
YnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE4NCwxNCArMTg0LDE0IEBAIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVs
LCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6
Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBN
ZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1v
dmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpU
aW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2sp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGlt
ZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9uaWNUaW1lOjpub3co
KSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAz
KSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVi
dWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogCiAgICAgbV90aW1lcy5yZW1vdmUo
aXQpOwogfQpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpj
b3VudChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICAvLyBG
SVhNRTogV2ViIEluc3BlY3RvciBzaG91bGQgaGF2ZSBhIGJldHRlciBVSSBmb3IgY291bnRlcnMs
IGJ1dCBmb3Igbm93IHdlIGp1c3QgbG9nIGFuIHVwZGF0ZWQgY291bnRlciB2YWx1ZS4KIAogICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSk7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25z
b2xlKGV4ZWMsIDEpKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25z
b2xlKGV4ZWMsIDEpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJl
c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtMjM2LDcg
KzIzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fY291bnRz
LmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5k
IGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygi
Q291bnRlciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVz
c2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
IHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKKyAg
ICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCBlNWYyNDgyYTNjYWEwOGFhODE2NDVmYThjNzljNTI5YmE0MzgwZDBhLi4yNWYx
ZDNlNzI4MWM2YjBmYjgzMzBmZjEzNzg3MzY0M2ViYzYwZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdy
b3VwRm9yQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rp
bwogCiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGVidWdnZXIiX3Mp
Ci0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPERlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihEZWJ1Z2dlckJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGNvbnRleHQuZW52aXJvbm1lbnQuc2NyaXB0RGVi
dWdTZXJ2ZXIoKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5kZXggYjUzNWZmNjE5
MmFhY2VmYzc5YjRmNmNkOTNkZjEyMDFhMzcxNDhhYy4uNTgyYzM1ZDM2N2RmZTFlNGY3ZGM0ZTlh
NTY4NGRjYTJhNGUzYjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSW5zcGVjdG9ySGVhcEFnZW50OjpJbnNwZWN0
b3JIZWFwQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJIZWFwIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
SGVhcEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDU2ZmMxYjc5OGRh
MGVlZWVhMDIzMzFlZDUyNTRhOTUwMjEwMDU4NzQuLmNiYWQ4MWQ2OTk0NDBhNzMzYjBhZjA0MTY5
NGE4NmNhOWU2ZThlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KEFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiU2NyaXB0UHJvZmls
ZXIiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlw
dFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8U2NyaXB0UHJvZmlsZXJGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihTY3JpcHRQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5i
YWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52
aXJvbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKaW5kZXggM2FjYTQxMDUx
MGZlNTAwZjA1YmZiYWFjNDY3ZmZkYWNjYjIxYzUyNC4uOTM1MDY4YzdhZTExOTcxMDU0NGMxZjc2
Nzk4MjJkZmI2NmU1NmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcApAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yVGFyZ2V0QWdlbnQ6
Okluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlciwgQmFj
a2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJUYXJnZXQiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5p
cXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+KGZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVGFyZ2V0QmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dERlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlMzI5YTNiNDNjZDYwOTY1
ZDlmNzc4NWE0ODIyMDExYWIzNjZmYTUzLi45YjNmMzc5ZDVlNWE0OTBkYmUzNzVjNzJhYzk5ZmE3
MjBiOWFjY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFn
ZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGUKIAogdm9pZCBKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdl
LCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOworICAgIG1fY29uc29sZUFnZW50
LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwg
Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
MTQ1ZDA1MTZiOGUzOTY4ODc4ZDkyY2I1OTRhYTU5OWJhZmEzOWQzMi4uM2I3YzNlMjFkMzFjMWMy
ZjViNmQxYmEwYzE2ZjQ4ODgzZTZjZjMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50KEpT
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRl
eHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bnRpbWVG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoUnVudGltZUJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX2dsb2JhbE9iamVjdChjb250ZXh0Lmluc3BlY3RlZEdsb2JhbE9iamVjdCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQu
Y3BwCmluZGV4IDcxMDE2NjhhOTdjODc0NDgxMmY0NjU2ZjE2ZTBiN2RkNTk0ZjFhNjAuLmNjOTY0
MDA1Njc5ZGJmY2Q0ZmUwMjkwNmJjOTNjMjNiMmM4MmVjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAtMTQ0LDExICsx
NDQsMTEgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIAogICAgIFNvY2tldDo6c2V0dXAoc29j
a2V0KTsKIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U29ja2V0OjpD
b25uZWN0aW9uPigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8U29ja2V0OjpD
b25uZWN0aW9uPigpOwogCiAgICAgY29ubmVjdGlvbi0+cG9sbCA9IFNvY2tldDo6cHJlcGFyZVBv
bGxpbmcoc29ja2V0KTsKICAgICBjb25uZWN0aW9uLT5zb2NrZXQgPSBzb2NrZXQ7Ci0gICAgY29u
bmVjdGlvbi0+cGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29j
a2V0OjpCdWZmZXJTaXplKTsKKyAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBtYWtlVW5pcXVlPE1l
c3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwogICAgIGNvbm5lY3Rpb24tPnBh
cnNlci0+c2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNdKENvbm5lY3Rpb25JRCBpZCwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBpZiAobV9pbnNwZWN0b3JDbGllbnQp
CiAgICAgICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+ZGlkUmVjZWl2ZVdlYkluc3BlY3RvckV2
ZW50KGlkLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50LmgKaW5kZXggNzBmMmQ3YTQ4MTM0NzBmODEzNzMyYjNiOTc3
YjViNzNhNDE5NjBiNS4uMzIwNDAwZmQ1YjNjZGIyYzRiMTVkYmRjOTMwNDZiYmZkMDBjYWRjOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgUmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+IGNyZWF0ZShSZW1vdGVJbnNwZWN0b3JDb25u
ZWN0aW9uQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFtZSk7CiAg
ICAgfQogCiAgICAgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoUmVtb3RlSW5zcGVjdG9y
Q29ubmVjdGlvbkNsaWVudCosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBs
YXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRleCA2NmY5ZmQyZGM0NzBkMjFmNGRlNTdk
ZTgyOGMxNTk0NDU2NzEyM2JiLi5mYTUwNmE2MWU5OWIzOWE4NzQ2ZTBjZTViZTBkNmFiYzBiMGE0
ZTk0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVz
LnB5CkBAIC0xMzgsOCArMTM4LDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvclRlbXBsYXRlczoKICAg
ICBbXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgcmVsZWFzZV07CiAgICAgXyR7dmFyaWFi
bGVOYW1lUHJlZml4fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRl
cm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21haW5O
YW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0
Y2hlcj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRl
RGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8
T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Cisg
ICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFpbk5h
bWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywgKl9jb250cm9sbGVyLCBX
VEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0
cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdp
dGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDg4NDJjOWViNjk3NTZjZTYxNDdlYzRj
MmQ5N2JmNzJjN2YzNTIyM2EuLmUwNzJmYWIyMjEyOWNhZjY0YTIyZjY0ZWYzNGUxZTA4YWZhNzI4
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2Fs
bC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAt
NzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3Jr
SGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0
Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0
Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0lu
c3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29y
a0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+Pigi
TmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsK
ICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQKaW5kZXggYTcxNGZiMTMxODMyOTNkMTgzMmZjNTgxZTZjNTMzNzg2ODAyZDU3Mi4uYzBl
MTczMzdmZDRhNzk4ODMwZTg1ZDI5ZTg1ZDhlZDMwMjBjYTc5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTExODksOCArMTE4OSw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVs
ZWFzZV07CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4o
IkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikp
OworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRl
QWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0
YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAg
ICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0
dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggNTNiZDU1M2I3YmE3NGRk
ZDI5ZTI1NTFjYzBiODRmYTQzMDcxNGNhZS4uYWVkMDdiNzVlOGI4ODhkZDU5MzM5MGFmYTIxZDJj
ODkwZGRmYzU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxs
LXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
b3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTA2OCw4ICsx
MDY4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxl
ciByZWxlYXNlXTsKICAgICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAot
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRj
aGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIp
KTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFn
ZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CmluZGV4IDY3OGM2
YWFhODVhY2EzODQyNDhiOTkyOTAzNGNjZjA5NDExOGRlZTcuLjFhZGNiZDNmZDJhY2I5Y2ExNDYx
YzMwOGU0NWM0OTJlYzNlMDMyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxp
dHkuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3Vs
dApAQCAtNzgyLDggKzc4Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19k
b21haW5BSGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWluQUhhbmRsZXIgPSBbaGFuZGxlciBy
ZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmpDSW5zcGVjdG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudDxEb21haW5BQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5k
RGlzcGF0Y2hlcj4+KCJEb21haW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRl
RGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8
T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8
RG9tYWluQUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNo
ZXI+PigiRG9tYWluQSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNo
ZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0
ZUFnZW50KSk7CiB9CiAKQEAgLTgwMCw4ICs4MDAsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfZG9tYWluQkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkJIYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVE
b21haW5CQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIg
PSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJh
Y2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RG
TW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdp
dGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRo
LXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCBmNmM1ZWRjY2I5Mjg1YWY0
OGM2ZGViOTg0MjJhNzIzNmI4NzAyZDRlLi5hM2UyN2RmMzhjZWFmYmIzYzQ1MWUxM2I2MTE5ZTJl
NTRjM2QyYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5k
LXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTEwMzksOCArMTAzOSw4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdv
cmsxSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2Nv
bnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVl
PEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFs
dGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJv
bGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFw
cGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC0xMDU3LDgg
KzEwNTcsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazNIYW5k
bGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrM0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwog
Ci0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5z
cGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3Bh
dGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJ
bnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3
b3JrM0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
Pj4oIk5ldHdvcmszIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hl
cikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRl
QWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCBlYzBjMTBiNGRiNDZiM2JjMDgz
ODZmZmI3M2NmZmY5OTA4NmJmMDY0Li5hYmZiNmUxNTM3MzZlN2Q0NmJjZGIwY2JmMzU3OWIzZWJk
MDljNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtODE1LDggKzgxNSw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19jb21tYW5kRG9tYWluSGFuZGxlciByZWxlYXNlXTsK
ICAgICBfY29tbWFuZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0
byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yQ29t
bWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5k
RGlzcGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0
ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VV
bmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxl
cik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVDb21t
YW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250cm9s
bGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBw
ZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApp
bmRleCAzMGU4MmM1YTE3NjYyOGNlYmJkYmIwZmM0MTBlZTk2YzhhNDhkYzQ5Li42YmRlZmYxODc5
N2MxNjk1YTgxZmIxNTY0MDZkZTM5YzlmODgxN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0
ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CkBAIC03OTgsOCAr
Nzk4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmsxSGFuZGxl
ciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAot
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3Bl
Y3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRj
aGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5z
cGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIp
KTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFn
ZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0u
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0
CmluZGV4IDg4NDJjOWViNjk3NTZjZTYxNDdlYzRjMmQ5N2JmNzJjN2YzNTIyM2EuLmUwNzJmYWIy
MjEyOWNhZjY0YTIyZjY0ZWYzNGUxZTA4YWZhNzI4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlv
bnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRo
LW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0
d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNw
YXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNw
YXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0
Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5h
dGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBX
VEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0
cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAppbmRleCA4MzQyZTVmYzVlZmNhMjg0OWRmZDEyZGI3YWE0YWI0OTgyYjYxZmU4Li5l
ZjkwNjY5NDMwYmIxMjZlNjg5YmJjN2JmZmE5YmIwZjU0NDczM2RhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0
TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgfQogCiAgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IChtX3ZtLT5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXIgJiYgT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpKSkK
LSAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVERpc2Fzc2VtYmxl
cj4obV9jb2RlQmxvY2spOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8SklU
RGlzYXNzZW1ibGVyPihtX2NvZGVCbG9jayk7CiAgICAgaWYgKFVOTElLRUxZKG1fdm0tPm1fcGVy
Qnl0ZWNvZGVQcm9maWxlcikpIHsKICAgICAgICAgbV9jb21waWxhdGlvbiA9IGFkb3B0UmVmKAog
ICAgICAgICAgICAgbmV3IFByb2ZpbGVyOjpDb21waWxhdGlvbigKQEAgLTkwMSw3ICs5MDEsNyBA
QCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KIAogICAgIGlmIChtX3BjVG9D
b2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxv
Y2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5N
YXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOwor
ICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1Rv
Q29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNo
QnVmZmVyKSk7CiAgICAgCiAgICAgQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXN1bHQgPSBGSU5B
TElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwgSlNFbnRyeVB0clRhZywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCAxNmJmNzBkODAxNzQ0MjMwNTAyYTJk
OGIxOTdjZDQwMWM4MDI0ZjM4Li41YmRmODMwNDY1MDQzOTk0ZTExYmFmZmVkNTJiYjc4NWMxYmEw
YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogSklUVGh1bmtzOjpKSVRUaHVua3MoKQotICAgIDog
bV9ob3N0RnVuY3Rpb25TdHViTWFwKHN0ZDo6bWFrZV91bmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1h
cD4oKSkKKyAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChtYWtlVW5pcXVlPEhvc3RGdW5jdGlv
blN0dWJNYXA+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmlu
ZGV4IGUzODhmYjBlNjI3MDhiMzRlY2I5NzFlOTQ2YjQ2YjE5M2M0Y2FlM2IuLjhmOWE4NjRlNGZl
ODYyNmExZmVmYzBjMzA3YzllNDY1NjYyZjVhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcApAQCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRnJhbWVTaHVmZmxlcj4gZnJhbWVTaHVmZmxlcjsK
ICAgICBpZiAoY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSkgewogICAgICAgICBBU1NF
UlQoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSk7Ci0gICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZv
LmZyYW1lU2h1ZmZsZURhdGEoKSk7CisgICAgICAgIGZyYW1lU2h1ZmZsZXIgPSBtYWtlVW5pcXVl
PENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURh
dGEoKSk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgLy8gV2Ugd291bGQgaGF2ZSBh
bHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbCwgYW5kIHdlIGNhbgogICAg
ICAgICAvLyB1c2UgdGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIgdGhpcyBidXlzIHVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAppbmRleCBjNjgxN2UwNDVmNTY3ZTllZDNhMGU1OTU3ZDI1ZTYzNzk4NTY1ZmFl
Li41YWIwMGVmN2ZlNTkzMWY3NDYyNGZlN2MxZjFiMGFjNDY3MWMwMjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcApAQCAtMjk2OSw3ICsyOTY5LDcgQEAgaW50IHJ1bkpTQyhjb25zdCBDb21tYW5kTGlu
ZSYgb3B0aW9ucywgYm9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykKICAgICAgICAgSlNM
b2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKICAgICAgICAgaWYgKG9wdGlvbnMubV9wcm9maWxlICYm
ICF2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCi0gICAgICAgICAgICB2bS5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOworICAg
ICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6
RGF0YWJhc2U+KHZtKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNy
ZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgb3B0
aW9ucy5tX2FyZ3VtZW50cyk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0UmVtb3RlRGVidWdn
aW5nRW5hYmxlZChvcHRpb25zLm1fZW5hYmxlUmVtb3RlRGVidWdnaW5nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmOGRiZTcxOTZmMTExNzE2ZDBhNThmN2Y1
N2UzZjhmNjdiN2EyYWNmLi5hMTY0ZmQ5MDNmMzZlOTQyMGE3MzY0ZWY0MjdjNmMyZmZlMzIyY2Rj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNDAsNyArMTQw
LDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgICwgbV9pbW1lZGlhdGVQYXJlbnRBbGxv
d3NGdW5jdGlvbkRlY2xhcmF0aW9uSW5TdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX2RlYnVnZ2Vy
UGFyc2VEYXRhKGRlYnVnZ2VyUGFyc2VEYXRhKQogewotICAgIG1fbGV4ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKKyAgICBtX2xl
eGVyID0gbWFrZVVuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2NyaXB0TW9kZSk7
CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5hKTsKICAgICBtX3Rv
a2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpOwog
ICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNjlhYTBiYzE5MGFmNjc4
M2Q4OTI4YzM1OWFhM2IxMGJiMWZiZDg3My4uMGE1ZWRlNGI4NDI1Y2ZkMWIzMTdjNzZjNTFlYTcz
NzgxNzgwYjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yMDQs
NyArMjA0LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVu
dGlmaWVyKiBsYWJlbCwgYm9vbCBpc0xvb3ApCiAgICAgewogICAgICAgICBpZiAoIW1fbGFiZWxz
KQotICAgICAgICAgICAgbV9sYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExhYmVsU3RhY2s+KCk7
CisgICAgICAgICAgICBtX2xhYmVscyA9IG1ha2VVbmlxdWU8TGFiZWxTdGFjaz4oKTsKICAgICAg
ICAgbV9sYWJlbHMtPmFwcGVuZChTY29wZUxhYmVsSW5mbyB7IGxhYmVsLT5pbXBsKCksIGlzTG9v
cCB9KTsKICAgICB9CiAKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJz
ZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25z
dCBJCiAgICAgICAgIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAgICAgZW5kTG9jYXRpb24uc3RhcnRPZmZzZXQgPSBt
X2xleGVyLT5jdXJyZW50T2Zmc2V0KCk7CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbiA9IGVu
ZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwotICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEs
CisgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRMb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IGRmMTdiZTUzNjYzZTdjYjdiNzBjNDg3NzBm
OWEwNTI5Y2YzM2E3ZWUuLjQxMDAwNmQ5Mjc1MWNlOTZiOTJjYjk2MjU2MzVlYTdjZjc4ZWM0ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTE4MCw3
ICsxODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmllckFyZW5hJiBpZGVu
dGlmaWVyQXJlbmEoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkgKCFtX2lk
ZW50aWZpZXJBcmVuYSkpCi0gICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBzdGQ6
Om1ha2VfdW5pcXVlPElkZW50aWZpZXJBcmVuYT4oKTsKKyAgICAgICAgICAgICAgICBtX2lkZW50
aWZpZXJBcmVuYSA9IG1ha2VVbmlxdWU8SWRlbnRpZmllckFyZW5hPigpOwogICAgICAgICAgICAg
cmV0dXJuICptX2lkZW50aWZpZXJBcmVuYTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKaW5kZXgg
MDUwMzJiNWQxMzEwOGMwZWI2MjBlOWRhZTgyMGNlZjdhYzc1MzE4Yy4uMzU3MTFiNWZhNjQyNjll
Njc3NGFiNzBlMjFkZDUwMjUxNjljOGVhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcApAQCAtNzksNyArNzksNyBA
QCBFeGVjdXRpb25Db3VudGVyKiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZvcihjb25z
dCBPcmlnaW5TdGFjayYgb3JpZ2luKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGVjdXRpb25D
b3VudGVyPiYgY291bnRlciA9IG1fY291bnRlcnMuYWRkKG9yaWdpbiwgbnVsbHB0cikuaXRlcmF0
b3ItPnZhbHVlOwogICAgIGlmICghY291bnRlcikKLSAgICAgICAgY291bnRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKKyAgICAgICAgY291bnRlciA9IG1ha2VVbmlx
dWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKIAogICAgIHJldHVybiBjb3VudGVyLmdldCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDcwYzcxNDczMzI0NDQw
ODA3ODc5MzQwMTk4NjY3M2M5N2UxZWE4M2QuLmE2NGRlM2ZkZDY2MjU1MThhYzVkMTI2Y2VhYzc4
YjZmMjEyNWE0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAg
LTE3NCw3ICsxNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBnZXRT
dGFja1RyYWNlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iagogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHNpemVfdCBmcmFtZXNUb1NraXAgPSB1c2VDdXJyZW50RnJhbWUgPyAw
IDogMTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNl
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IG1ha2VVbmlxdWU8VmVjdG9y
PFN0YWNrRnJhbWU+PigpOwogICAgIHZtLmludGVycHJldGVyLT5nZXRTdGFja1RyYWNlKG9iaiwg
KnN0YWNrVHJhY2UsIGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2JqZWN0LT5zdGFja1RyYWNlTGltaXQo
KS52YWx1ZSgpKTsKICAgICBpZiAoIXN0YWNrVHJhY2UtPmlzRW1wdHkoKSkKICAgICAgICAgQVNT
RVJUX1VOVVNFRChleGVjLCBleGVjID09IHZtLnRvcENhbGxGcmFtZSB8fCBleGVjLT5pc0dsb2Jh
bEV4ZWMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcAppbmRleCA0MzllMjA5YjBhNWY4ZmI4MjliNzkxOTc1NzQ4OGM0MTU2
MzQyNzNmLi5lZjJlODMwODc0MWI4ODUyZTU2MjMyNmY5NjI1N2M5ZDAyOTM1ZDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKQEAgLTExMCw3ICsxMTAsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiBGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3Jh
cmVEYXRhKTsKLSAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4o
KTsKKyAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByYXJl
RGF0YS0+bV9saW5lQ291bnQgPSBsaW5lQ291bnQoKTsKICAgICByYXJlRGF0YS0+bV9lbmRDb2x1
bW4gPSBlbmRDb2x1bW4oKTsKICAgICByYXJlRGF0YS0+bV9wYXJhbWV0ZXJzU3RhcnRPZmZzZXQg
PSBwYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCA0NjIzNjQxYzU5OGUzZWJiNWZiYTZiYzAy
MzcyNjRlNTA1MmZkMTc5Li41MmIyOGIxM2M3ZTJlMjVkMjFiYmJhYjNhZDMxZDViNmJjMGNkZWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0
YS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YTo6QWxsb2NhdGlv
blByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0Y2gKIGlubGluZSBX
YXRjaHBvaW50KiBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFy
aW5nV2F0Y2hwb2ludCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWhhc0FsbG9jYXRpb25Qcm9m
aWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkpOwotICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmlu
Z1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdX
YXRjaHBvaW50Pih0aGlzKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBv
aW50ID0gbWFrZVVuaXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhp
cyk7CiAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQuZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCAxYTU3ZWYzZGNmZTkxOWU3MGIzN2ZhN2UzNDg1NGExM2U5MDUzZmFlLi5j
Yzg3NzY3ZjEwOGJjYzQ4M2IzMTVmMTEyZmE5YzUzNDdmNTIwMTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NzcsOCArNDc3
LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9kZWJ1Z2dlciA9
IDA7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2luc3BlY3RvckNvbnRy
b2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyPigqdGhpcyk7Ci0gICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKKyAgICBtX2luc3Bl
Y3RvckNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlID0gbWFr
ZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKICAgICBtX2luc3BlY3Rv
ckRlYnVnZ2FibGUtPmluaXQoKTsKICAgICBtX2NvbnNvbGVDbGllbnQgPSBtX2luc3BlY3RvckNv
bnRyb2xsZXItPmNvbnNvbGVDbGllbnQoKTsKICNlbmRpZgpAQCAtMTE0NSw1NyArMTE0NSw1NyBA
QCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0g
ZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0ZXJh
dG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX2FycmF5
SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX2FycmF5
SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBt
X2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX2FycmF5SXRlcmF0
b3JQcm90b3R5cGVOZXh0LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCh0
aGlzLT5hcnJheVByb3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
KTsKLSAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJh
dG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCht
YXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAg
bV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAg
ICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAg
ICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
ICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9u
LCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRp
b24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAg
ewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0
aXZlV2F0Y2hwb2ludChzZXRJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKLSAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50
LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5n
ZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fc2V0
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAg
ICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAg
ICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7
CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmdl
dCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFBy
b3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlz
LCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAg
ICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwog
ICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9
IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nUHJvdG90eXBlLmdldCgpLCBtX3ZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVT
eW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3N0
cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0
UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRo
aXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAg
ICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRp
dGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3Zt
LnByb3BlcnR5TmFtZXMtPnNldCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBv
aW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcFBy
b3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKLSAg
ICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFByb3Rv
dHlwZUFkZFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0
QWRkV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+aW5z
dGFsbCh2bSk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBjYXBpdGFsTmFtZSAjIyBD
b25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBp
dGFsTmFtZQogICAgICAgICB0aGlzLT5zeW1ib2xQcm90b3R5cGUoKTsKIAogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChu
dW1iZXJQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpOwotICAgICAgICBt
X251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
KHRoaXMsIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOworICAgICAgICBt
X251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOwogICAgICAgICBtX251bWJl
clByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIG1fbnVt
YmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rpb24q
PihudW1iZXJQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJp
bmcpKSk7CiAgICAgfQpAQCAtMTkzMiwxMCArMTkzMiwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludC5pc0JlaW5nV2F0Y2hlZCgp
KTsKICAgICBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQudG91Y2godm0sICJTZXQgdXAgYXJyYXkg
c3BlY2llcyB3YXRjaHBvaW50LiIpOwogCi0gICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9y
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0
aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlQcm90b3R5cGVDb25z
dHJ1Y3RvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRp
dGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5UHJvdG90eXBlQ29u
c3RydWN0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKIAotICAgIG1fYXJyYXlDb25zdHJ1Y3Rv
clNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0Nv
bmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2FycmF5Q29uc3RydWN0
b3JTcGVjaWVzV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRp
b24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yU3Bl
Y2llc1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAwNDdjMTY2NTNlNzFiMWE4MDZiZDlm
YzdkNTY2NDNhNWY5ODhmMTFlLi44NDUzNWNhNWM2MDBjZWNiZDhiNDc4ZjY1YjUzY2QwN2UzNmE4
MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICB7CiAgICAgICAgIGlmIChtX3JhcmVEYXRhKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVu
aXF1ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOwogICAgIH0KICAgICAgICAgCiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1l
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAK
aW5kZXggMWFmMDAzNjUzY2I4YzNkZTY0M2Y4YzQ5MTI3YWJiM2U1NTEzZDVhZC4uMzI3ZmVkMDZj
NjdhNWJmMTEyNTFmOWY0ZGVkODM5ZTcwMzNjOGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lk
IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OnNldFJ1bkxvb3AoTWFuYWdlciog
bWFuYWdlciwgQ0ZSdW5Mb29wUgogI2Vsc2UKIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJW
TURhdGE6OlBlclZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQogICAgIDogcnVuTG9vcCgmUnVuTG9v
cDo6Y3VycmVudCgpKQotICAgICwgdGltZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1l
cjxNYW5hZ2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6
OnRpbWVyRGlkRmlyZUNhbGxiYWNrKSkKKyAgICAsIHRpbWVyKG1ha2VVbmlxdWU8UnVuTG9vcDo6
VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkK
ICAgICB0aW1lci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpKYXZhc2NyaXB0
VGltZXIpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyJiBKU1J1
bkxvb3BUaW1lcjo6TWFuYWdlcjo6c2hhcmVkKCkKIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFu
YWdlcjo6cmVnaXN0ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFBlclZN
RGF0YT4oKnRoaXMpOwogI2lmIFVTRShDRikKICAgICBkYXRhLT5zZXRSdW5Mb29wKHRoaXMsIHZt
LnJ1bkxvb3AoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCmluZGV4IDVmMDc4ZDJhNTA5ZDJiNDQyMDBmN2E0
YWYzODgxMjQ2Y2IyZDU4YTcuLjUyOTAyMGRmMGYxZGMyYTI4NmY4MDBhYmFkOWQ3ZWI3ZDNmOGVl
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFw
SGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBQ
cm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKIGlubGluZSB2b2lkIFByb3BlcnR5VGFi
bGU6OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICgh
bV9kZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKKyAgICAgICAgbV9kZWxldGVkT2Zmc2V0
cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKICAgICBtX2RlbGV0ZWRP
ZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAppbmRleCA1OWVjNDFjNDlhZTgyZjQ3ZjY5ODY4MDZk
ZDYxNDM5NDRhNDJiNWQ2Li5iMWJiNjc5MTk5MjY1YWZjYmNjYzgzNjU2ZDhkNTZmYzViNGEzNTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNw
cApAQCAtODMsNyArODMsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwg
Y29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zm
c2V0cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zm
c2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRl
ZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAgICAgbV9k
ZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90aGVy
RGVsZXRlZE9mZnNldHMpOwogfQogCiBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2
bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikK
QEAgLTEwNyw3ICsxMDcsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKFZNJiB2bSwg
dW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYgogICAgIC8vIENvcHkg
dGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4q
IG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAg
IGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0
cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0
eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogdm9pZCBQcm9wZXJ0eVRhYmxl
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuY3BwCmluZGV4IDA3MWIxZjY2MzE1Y2UzYWU4ZGNmZTE3NWZmNjM2NmY1YzYzMmFmZmMuLjcw
ZTU5M2Q1M2ViZGQ4MWQ4YzA4MTNhMjk3NzBlOTQwY2UwNDExM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVnRXhw
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKICAgICBtX251bVN1YnBhdHRlcm5zID0gcGF0dGVy
bi5tX251bVN1YnBhdHRlcm5zOwogICAgIGlmICghcGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVz
LmlzRW1wdHkoKSB8fCAhcGF0dGVybi5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOwor
ICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICAgICAgbV9y
YXJlRGF0YS0+bV9jYXB0dXJlR3JvdXBOYW1lcy5zd2FwKHBhdHRlcm4ubV9jYXB0dXJlR3JvdXBO
YW1lcyk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5zd2Fw
KHBhdHRlcm4ubV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDM5Y2RkOTExNmUwMjdlM2RiNjA0MGRiZDhmZTUy
NzBkMmU5OTVkOGQuLmU4ZGE4NTI2ZTdjN2U4MWZiZWE3NWM4ODk4ODE2MWI5YWY4OTE3MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0xNjQsNyArMTY0LDcgQEAg
Y2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgWWFycjo6WWFyckNvZGVC
bG9jayYgZW5zdXJlUmVnRXhwSklUQ29kZSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcmVnRXhw
SklUQ29kZSkKLSAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IHN0ZDo6bWFrZV91bmlxdWU8
WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKKyAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IG1h
a2VVbmlxdWU8WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKICAgICAgICAgcmV0dXJuICptX3JlZ0V4
cEpJVENvZGUuZ2V0KCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDIzN2Q3ZGU2ODhkZDIwNzY1
MDIwMTIxNmNkMGQ1NDY4MGM0OTZlYWEuLmVlNmUxOGNlZmRiZTc5ZjRiYzJlYjIxOTdmZjUzOTEw
NGUxZjc5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgYXV0byBTY3JpcHRFeGVjdXRhYmxl
OjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcEltcGwoc3RkOjp1bmlxdWVfcHRyPFRlbXBsYXRlT2Jq
ZWMKIHsKICAgICBpZiAoZGVzdCkKICAgICAgICAgcmV0dXJuICpkZXN0OwotICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+KCk7CiAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKICAgICBkZXN0ID0gV1RGTW92ZShyZXN1bHQpOwogICAgIHJldHVybiAqZGVz
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDI5
M2M0NjQ3MmU3NDg5NDFjYTljYzJhZGFjMTZhM2QyZGM1ZGVlZWMuLjAxY2QyYmQ1NDdmZTAyYjUw
NDdhNmQ0NWIzYzhhZDZmZDUyYmRiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIFdhdGNocG9pbnRTZXQqIFN0cnVj
dHVyZTo6ZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQoVk0mIHZtLCBQcm9w
ZXJ0CiAgICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+cmFyZURhdGEoKTsK
ICAgICBpZiAoIXJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMpIHsKICAgICAg
ICAgcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cyA9Ci0gICAgICAgICAgICBz
dGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+
KCk7CisgICAgICAgICAgICBtYWtlVW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdh
dGNocG9pbnRNYXA+KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgfQog
ICAgIGF1dG8gcmVzdWx0ID0gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cy0+
YWRkKG9mZnNldCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKaW5kZXggOTlhOGQ5ZjdkYWFjMjE3ZTRjODFlN2U3
MTI2ZTljMDJiMzc0ZWQzZi4uZDNjZjE4M2IwZjZkN2M0ODk4ODAwYWI2OGVlNDhjZDEyOGY3ZmUy
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFy
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnNl
dE9iamVjdFRvU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIFN0cnVjdHVyCiAg
ICAgQVNTRVJUKGNvbmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJlVmFsaWRpdHkoKSk7CiAgICAg
Zm9yIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gOiBjb25kaXRpb25TZXQpIHsK
ICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgPT0gUHJvcGVydHlDb25k
aXRpb246OlByZXNlbmNlKSB7Ci0gICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVJ
bmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0VG9TdHJpbmdB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0
aGlzKTsKKyAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOwogICAgICAgICAgICAg
bV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2
ZVdhdGNocG9pbnRTZXQuYWRkKGNvbmRpdGlvbiwgdGhpcyktPmluc3RhbGwodm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDM5MmYyMTdj
MTRlZmFlYjU0NWJmMGQ0Zjc3OTBjMTEyNzkzMmJjODUuLmE0YTg3MGZjMWZjYWQzNWM0Mzk1ZjEw
OWIyMmE5OWM0MjBkNzQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBjb25zdCBTeW1ib2xUYWJsZTo6TG9j
YWxUb0VudHJ5VmVjJiBTeW1ib2xUYWJsZTo6bG9jYWxUb0VudHJ5KGNvbnN0IENvbmN1cnJlbnRK
UwogICAgICAgICAgICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBvZmZzZXQuc2NvcGVPZmZz
ZXQoKS5vZmZzZXQoKSArIDEpOwogICAgICAgICB9CiAgICAgCi0gICAgICAgIG1fbG9jYWxUb0Vu
dHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIpOwor
ICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IG1ha2VVbmlxdWU8TG9jYWxUb0VudHJ5VmVjPihzaXpl
LCBudWxscHRyKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbWFwKSB7CiAgICAgICAg
ICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFsdWUudmFyT2Zmc2V0KCk7CiAgICAgICAg
ICAgICBpZiAob2Zmc2V0LmlzU2NvcGUoKSkKQEAgLTE1OSw3ICsxNTksNyBAQCBTeW1ib2xUYWJs
ZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgcmVzdWx0LT5t
X2FyZ3VtZW50cy5zZXQodm0sIHJlc3VsdCwgYXJndW1lbnRzKTsKICAgICAKICAgICBpZiAobV9y
YXJlRGF0YSkgewotICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YSA9IG1h
a2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgICAgICB7CiAgICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLmJlZ2luKCk7CkBAIC0xOTEs
NyArMTkxLDcgQEAgdm9pZCBTeW1ib2xUYWJsZTo6cHJlcGFyZUZvclR5cGVQcm9maWxpbmcoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJikKICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJl
RGF0YT4oKTsKKyAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRh
PigpOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX21hcC5iZWdpbigpLCBlbmQgPSBtX21hcC5l
bmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBtX3JhcmVEYXRhLT5tX3VuaXF1
ZUlETWFwLnNldChpdGVyLT5rZXksIFR5cGVQcm9maWxlck5lZWRzVW5pcXVlSURHZW5lcmF0aW9u
KTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBDb2RlQmxvY2sqIFN5bWJvbFRhYmxlOjpyYXJlRGF0YUNv
ZGVCbG9jaygpCiB2b2lkIFN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayhDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgIG1fcmFyZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIG1f
cmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICBBU1NF
UlQoIW1fcmFyZURhdGEtPm1fY29kZUJsb2NrKTsKICAgICBtX3JhcmVEYXRhLT5tX2NvZGVCbG9j
ay5zZXQoKmNvZGVCbG9jay0+dm0oKSwgdGhpcywgY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNDEwZWI2ZDVhZTE2ZjM2MDIyNmRiMzgy
M2Y3ZWU4MjhlY2NhYjM4My4uNDFhY2E5ZDNkNGQ5YjhhNTZhZTY4NTIzMGU4ZDY2NzUyYWMwZDAy
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTM2Miw3
ICszNjIsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCgpCiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKG1fcHJvdG8tPnByb3BlcnR5SGFzaCgpKTsKICAgICB9CiAKLSAgICBt
X3Byb3BlcnR5SGFzaCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5n
KCkpOworICAgIG1fcHJvcGVydHlIYXNoID0gbWFrZVVuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9T
dHJpbmcoKSk7CiAgICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDRlMmQwZDMyNGEyNGUyMzJjZDE5NTM4OTJlZDhiMGEz
M2IwYjA1ZWUuLmI3MDkyYzA4ZWY3MmIwZWNhODlmZjBiNWM0YmUxYWU1OWFhMWRiYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI1MiwxOCArMjUyLDE4IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcnVuTG9vcChDRlJ1
bkxvb3BHZXRDdXJyZW50KCkpCiAjZW5kaWYgLy8gVVNFKENGKQogICAgICwgaGVhcCh0aGlzLCBo
ZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxGYXN0
TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1pdGl2ZUdpZ2FjYWdl
QWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9y
PihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihz
dGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6
OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8
SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUo
c3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVk
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVycykpKQotICAg
ICwgY2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0
dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQotICAg
ICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxs
VHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkp
KQotICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNTdHJpbmdIZWFw
Q2VsbFR5cGU+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUoc3RkOjpt
YWtlX3VuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIGZh
c3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcj4oKSkKKyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1ha2VVbmlxdWU8R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKKyAgICAs
IGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQorICAgICwgYXV4aWxpYXJ5SGVhcENlbGxU
eXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERl
c3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCisgICAgLCBpbW11dGFibGVCdXR0ZXJm
bHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERv
ZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2ludGVy
cykpKQorICAgICwgY2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2Vs
bEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQor
ICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlw
ZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpTQ2VsbCkpKQor
ICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNTdHJpbmdIZWFwQ2VsbFR5cGU+
KCkpCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVl
PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCi0gICAgLCB3ZWJBc3NlbWJs
eUZ1bmN0aW9uSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlv
bkhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBl
KG1ha2VVbmlxdWU8SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZT4oKSkKKyAgICAs
IHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxXZWJBc3NlbWJseUZ1
bmN0aW9uSGVhcENlbGxUeXBlPigpKQogI2VuZGlmCiAgICAgLCBwcmltaXRpdmVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxp
YXJ5SGVhcENlbGxUeXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkg
Ly8gSGFzaDoweDNlN2NkNzYyCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgi
SlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUu
Z2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFzaDoweDI0MWU5NDYK
QEAgLTI5Niw3ICsyOTYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5
cGUpCiAgICAgLCBtX2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IFRocmVhZDo6
Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdUYWJsZSkKICAgICAs
IHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcgQXJnTGlzdCkKLSAg
ICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChzdGQ6Om1h
a2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQorICAgICwgbWFjaGluZUNvZGVCeXRlc1BlckJ5dGVj
b2RlV29yZEZvckJhc2VsaW5lSklUKG1ha2VVbmlxdWU8U2ltcGxlU3RhdHM+KCkpCiAgICAgLCBj
dXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykKICAgICAsIHN0cmluZ0NhY2hlKCp0
aGlzKQogICAgICwgc3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0aGlzKQpAQCAtMzEyLDggKzMxMiw4
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faW5p
dGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCkKICNlbmRpZgogICAgICwgbV9zdGFja1BvaW50ZXJBdFZN
RW50cnkoMCkKLSAgICAsIG1fY29kZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUNhY2hlPigp
KQotICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoc3RkOjptYWtlX3VuaXF1ZTxCdWlsdGluRXhl
Y3V0YWJsZXM+KCp0aGlzKSkKKyAgICAsIG1fY29kZUNhY2hlKG1ha2VVbmlxdWU8Q29kZUNhY2hl
PigpKQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMobWFrZVVuaXF1ZTxCdWlsdGluRXhlY3V0
YWJsZXM+KCp0aGlzKSkKICAgICAsIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50KDApCiAgICAg
LCBtX3ByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZChJc1dhdGNoZWQpCiAgICAgLCBtX2NvbnRyb2xG
bG93UHJvZmlsZXJFbmFibGVkQ291bnQoMCkKQEAgLTQwNyw3ICs0MDcsNyBAQCBWTTo6Vk0oVk1U
eXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZvcm1B
c3NlcnRpb25zKCp0aGlzKTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlUHJv
ZmlsZXIoKSkpIHsKLSAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKKyAgICAgICAgbV9wZXJCeXRlY29kZVBy
b2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKIAogICAgICAg
ICBTdHJpbmdQcmludFN0cmVhbSBwYXRoT3V0OwogICAgICAgICBjb25zdCBjaGFyKiBwcm9maWxl
clBhdGggPSBnZXRlbnYoIkpTQ19QUk9GSUxFUl9QQVRIIik7CkBAIC00MjMsNyArNDIzLDcgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIC8vIHdvbid0IHVz
ZSB0aGlzLgogICAgIG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihuZXcgU2ltcGxl
VHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CiAKLSAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsK
KyAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsKIAogICAgIGlmIChPcHRpb25zOjp1c2VUeXBlUHJvZmls
ZXIoKSkKICAgICAgICAgZW5hYmxlVHlwZVByb2ZpbGVyKCk7CkBAIC00NDIsOSArNDQyLDkgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2VuZGlmIC8vIEVOQUJM
RShTQU1QTElOR19QUk9GSUxFUikKIAogICAgIGlmIChPcHRpb25zOjp1c2VSYW5kb21pemluZ0Z1
enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50KHN0ZDo6bWFrZV91bmlxdWU8UmFu
ZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFr
ZVVuaXF1ZTxSYW5kb21pemluZ0Z1enplckFnZW50PigqdGhpcykpOwogICAgIGVsc2UgaWYgKE9w
dGlvbnM6OnVzZURvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRGdXp6
ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRo
aXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxEb3VibGVQcmVkaWN0aW9u
RnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAKICAgICBpZiAoT3B0aW9uczo6YWx3YXlzR2VuZXJhdGVQ
Q1RvQ29kZU9yaWdpbk1hcCgpKQogICAgICAgICBzZXRTaG91bGRCdWlsZFBDVG9Db2RlT3JpZ2lu
TWFwcGluZygpOwpAQCAtNDU3LDkgKzQ1Nyw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFu
eSBzdHVicyB0aGF0IHRoZSBKSVQgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0aWFsaXplZCBpbiBu
b24tY29tcGlsYXRpb24gdGhyZWFkcy4KICAgICBpZiAoY2FuVXNlSklUKCkpIHsKLSAgICAgICAg
aml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKKyAgICAgICAgaml0U3R1
YnMgPSBtYWtlVW5pcXVlPEpJVFRodW5rcz4oKTsKICNpZiBFTkFCTEUoRlRMX0pJVCkKLSAgICAg
ICAgZnRsVGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4oKTsKKyAgICAgICAg
ZnRsVGh1bmtzID0gbWFrZVVuaXF1ZTxGVEw6OlRodW5rcz4oKTsKICNlbmRpZiAvLyBFTkFCTEUo
RlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29k
ZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihD
b2RlRm9yQ29uc3RydWN0KTsKQEAgLTYxOSw3ICs2MTksNyBAQCBXYXRjaGRvZyYgVk06OmVuc3Vy
ZVdhdGNoZG9nKCkKIEhlYXBQcm9maWxlciYgVk06OmVuc3VyZUhlYXBQcm9maWxlcigpCiB7CiAg
ICAgaWYgKCFtX2hlYXBQcm9maWxlcikKLSAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhlYXBQcm9maWxlcj4oKnRoaXMpOworICAgICAgICBtX2hlYXBQcm9maWxlciA9
IG1ha2VVbmlxdWU8SGVhcFByb2ZpbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2hlYXBQcm9m
aWxlcjsKIH0KIApAQCAtMTA0MSw4ICsxMDQxLDggQEAgc3RhdGljIGJvb2wgZGlzYWJsZVByb2Zp
bGVyV2l0aFJlc3BlY3RUb0NvdW50KHVuc2lnbmVkJiBjb3VudGVyLCBjb25zdCBGdW5jJiBkb0QK
IGJvb2wgVk06OmVuYWJsZVR5cGVQcm9maWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVUeXBlUHJv
ZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyPigpOwotICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxl
ckxvZyA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CisgICAgICAg
IHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXI+KCk7CisgICAg
ICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmlsZXJMb2c+
KCp0aGlzKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RU
b0NvdW50KG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVUeXBlUHJvZmlsZXIpOwpA
QCAtMTA2MSw3ICsxMDYxLDcgQEAgYm9vbCBWTTo6ZGlzYWJsZVR5cGVQcm9maWxlcigpCiBib29s
IFZNOjplbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZUNvbnRy
b2xGbG93UHJvZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93
UHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CisgICAg
ICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9IG1ha2VVbmlxdWU8Q29udHJvbEZsb3dQ
cm9maWxlcj4oKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVyV2l0aFJlc3Bl
Y3RUb0NvdW50KG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudCwgZW5hYmxlQ29udHJv
bEZsb3dQcm9maWxlcik7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFZNOjpkdW1wVHlwZVBy
b2ZpbGVyRGF0YSgpCiAKIHZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKIHsKLSAgICBtX21pY3JvdGFza1F1
ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0aGlzLCAmZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQobWFrZVVu
aXF1ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOwog
fQogCiB2b2lkIFZNOjpkcmFpbk1pY3JvdGFza3MoKQpAQCAtMTIzMCwxNCArMTIzMCwxNCBAQCB2
b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKIHsKICAgICBpZiAobV9zaGFkb3dDaGlja2Vu
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9zaGFkb3dDaGlja2VuID0gc3RkOjptYWtlX3VuaXF1
ZTxTaGFkb3dDaGlja2VuPigpOworICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1ha2VVbmlxdWU8U2hh
ZG93Q2hpY2tlbj4oKTsKIH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCiAgICAgSXNvU3Vic3BhY2Uq
IFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1lKTsg
XAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxJc29TdWJzcGFjZT4gSVNP
X1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBhdXRv
IHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwg
aGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOyBc
CiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJuIG1f
IyNuYW1lLmdldCgpOyBcCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TcGFjZSwgY2Vs
bEhlYQogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7IFwKICAgICAg
ICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwg
dHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3BhY2VBbmRTZXQ+IElT
T19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2Up
OyBcCiAgICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAyNGYxOGFkMDJk
ZTJmZWY5MDA5MzQ0ODY0MzBjOThmZTk0OTQyNGVmLi41MzM5M2NiMjU4Zjc0MmM2YWNmZGRlYWVj
NmM3MTc1NjQ0ZDc5NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBjbGFzcyBBaXJJUkdlbmVy
YXRvciB7CiAgICAgdm9pZCBlbWl0UGF0Y2hwb2ludChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrLCBC
Mzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCwgVG1wIHJlc3VsdCwgVmVjdG9yPENvbnN0cmFpbmVk
VG1wLCBpbmxpbmVTaXplPiYmIGFyZ3MpCiAgICAgewogICAgICAgICBpZiAoIW1fcGF0Y2hwb2lu
dFNwZWNpYWwpCi0gICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8
QjM6OlBhdGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1
ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIG1fcGF0Y2hwb2ludFNw
ZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNwZWNpYWwqPihtX2NvZGUuYWRkU3Bl
Y2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSkpOwogCiAgICAgICAgIElu
c3QgaW5zdChQYXRjaCwgcGF0Y2gsIEFyZzo6c3BlY2lhbChtX3BhdGNocG9pbnRTcGVjaWFsKSk7
CiAgICAgICAgIEluc3QgcmVzdWx0TW92OwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIGNsYXNzIEFpcklS
R2VuZXJhdG9yIHsKIAogICAgICAgICAvLyBGSVhNRTogTWFrZSBhIGhhc2htYXAgb2YgdGhlc2Uu
CiAgICAgICAgIEIzOjpDaGVja1NwZWNpYWw6OktleSBrZXkoYnJhbmNoKTsKLSAgICAgICAgQjM6
OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVja1NwZWNpYWwqPiht
X2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDaGVja1NwZWNpYWw+KGtleSkp
KTsKKyAgICAgICAgQjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpD
aGVja1NwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpDaGVja1NwZWNp
YWw+KGtleSkpKTsKIAogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBkdW1t
eSB2YWx1ZXMKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDA0MApAQCAtMjEzOSwxMCArMjEzOSwxMCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjpv
cmlnaW4oKSAtPiBCMzo6T3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5h
bEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29tcGlsYXRpb25Db250ZXh0
JiBjb21waWxhdGlvbkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVf
dCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxp
bmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVs
ZUluZm9ybWF0aW9uJiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5k
ZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21FeGNl
cHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFsRnVu
Y3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVybmFsRnVuY3Rpb24+
KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gc3Rk
OjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAgY29tcGlsYXRpb25Db250ZXh0Lndh
c21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAg
Y29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0Nh
bGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9
IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAgQjM6OlByb2NlZHVyZSBwcm9jZWR1
cmU7CiAgICAgQ29kZSYgY29kZSA9IHByb2NlZHVyZS5jb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMjA5NDE3N2VkNmYx
ODNhYjRkODYyZWMyMjY3ZDMwZjI4YjdkZTViNi4uMTU4ZGY5ZmE5ZjBjOWY3MjFhYzI5Mjc3ODE4
OGRjZjI4ZTcwN2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcApAQCAtMTU1MSwxMCArMTU1MSwxMCBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6Om9yaWdpbigpIC0+IE9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJu
YWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYg
Y29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3Qg
ZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJ
bmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCBDb21waWxhdGlvbk1vZGUgY29tcGls
YXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBU
aHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250
ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJz
PigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRl
ckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxh
dGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4o
KTsKIAogICAgIFByb2NlZHVyZSBwcm9jZWR1cmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCBmOTg1ZDUyM2MyZTkzZjNiZDIzZmI3YzU3MTJiNTg2
OGNjMTZhNjg1Li41MDZkZjRiZWZkMGQ1NjQxODQ0Y2U1Mjc5NTExNWY2MTI4NzE2MWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zMTUsNyArMzE1
LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2Vy
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVudHJ5
cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisg
ICAgICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmVu
dHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAg
ICAgICAgICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0
clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIGZ1bmN0aW9u
SW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5nKElu
ZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFtZVNl
Y3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLAogICAgICAg
ICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7
CiAgICAgICAgICAgICB9CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0
ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21J
bnRlcm5hbEZ1bmN0aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJu
YWxGdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBp
bGF0aW9uPigKICAgICAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBC
M0NvbXBpbGF0aW9uUHRyVGFnLCAiRW1iZWRkZXItPldlYkFzc2VtYmx5IGVudHJ5cG9pbnRbJWld
ICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9k
dWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFz
Y2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250ZXh0LmVtYmVk
ZGVyRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCBjNTEzZmQyZjUwZWQ2ZmIxN2MzMzg1
ZWYyOTA1Mjc4MTczOTIxMDM3Li4wZDdhMDNjMzYxMjljZDFkZTJjNTRmZmNkNTAyOTViNTZjNWI4
OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC05
NSw3ICs5NSw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisgICAgb21nRW50cnlwb2ludC5jb21waWxh
dGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVfQ09E
RShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2ViQXNzZW1ibHkgT01HIGZ1bmN0
aW9uWyVpXSAlcyBuYW1lICVzIiwgbV9mdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3Bh
Y2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNw
YWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRy
eXBvaW50Qnlwcm9kdWN0cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdv
cmtsaXN0LmNwcAppbmRleCAzNmQ3NGMxNGIxOGM3MDdiODEyYTA0ODdmOTFlMjljMzg1MzkxZGUy
Li42NjBmOTU2NTczOGIxMGEzMGYzZTdjYzgxOGEzMmM4NTg3ODIxMjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBX
b3JrbGlzdDo6V29ya2xpc3QoKQogICAgIG1fdGhyZWFkcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVy
T2ZDb21waWxhdGlvblRocmVhZHMpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNvbXBpbGF0aW9uVGhyZWFkczsg
aSsrKQotICAgICAgICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykpOworICAgICAgICBtX3RocmVhZHMudW5j
aGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykp
OwogfQogCiBXb3JrbGlzdDo6fldvcmtsaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTVG9XYXNtLmNwcAppbmRleCA1ZGQ0NTFiZWE4NGQ1OTBiYmYwZmNiMDc2ZTI2ZmZkM2Nj
N2I4MWFjLi43MzUyMjAyODkzN2M2ZGFjMWZjNDczYzdlNGNkYzY0OTU4Y2U4ZWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC00Niw3ICs0Niw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIo
Q29tcGlsYXRpb25Db250ZXh0JiBjb21wCiB7CiAgICAgQ0NhbGxIZWxwZXJzJiBqaXQgPSAqY29t
cGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVDsKIAotICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogICAgIGppdC5lbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOwogCiAgICAgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFzIGNvZGVCbG9ja3MuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4IDdmMDMzZmVjMWMz
NjlhOTQyM2IzM2NmOGViMzMzNGM1MWNlMDgwOGIuLmM0Yjc3Y2FkYmU1ZWVhNTczZWM4NTJiOTVl
ZjZhNzg5YjgyODUzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcApAQCAtMTcwNiw3ICsxNzA2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsK
ICAgICAgICAgICAgIGR1bXBEaXNqdW5jdGlvbihtX2JvZHlEaXNqdW5jdGlvbi5nZXQoKSk7CiAj
ZW5kaWYKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+
KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0
ZXJuLCBhbGxvY2F0b3IsIGxvY2spOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCeXRlY29k
ZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2VzSW5m
bywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAogICAgIHZvaWQgY2hlY2tJ
bnB1dCh1bnNpZ25lZCBjb3VudCkKQEAgLTE5MjYsNyArMTkyNiw3IEBAIGNsYXNzIEJ5dGVDb21w
aWxlciB7CiAgICAgICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCA9IHBhcmVudGhlc2VzQmVnaW4u
YXRvbS5zdWJwYXR0ZXJuSWQ7CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3VicGF0dGVybnMgPSBs
YXN0U3VicGF0dGVybklkIC0gc3VicGF0dGVybklkICsgMTsKLSAgICAgICAgYXV0byBwYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1
YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1
bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxs
RnJhbWVTaXplKTsKIAogICAgICAgICB1bnNpZ25lZCBmaXJzdFRlcm1JblBhcmVudGhlc2VzID0g
YmVnaW5UZXJtICsgMTsKICAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+dGVybXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShlbmRUZXJtIC0gZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyArIDIp
OwpAQCAtMTk5Nyw3ICsxOTk3LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKIAogICAgIHZvaWQg
cmVnZXhCZWdpbih1bnNpZ25lZCBudW1TdWJwYXR0ZXJucywgdW5zaWduZWQgY2FsbEZyYW1lU2l6
ZSwgYm9vbCBvbmNlVGhyb3VnaCkKICAgICB7Ci0gICAgICAgIG1fYm9keURpc2p1bmN0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJh
bWVTaXplKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPEJ5dGVEaXNq
dW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwogICAgICAgICBtX2JvZHlE
aXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpCb2R5QWx0ZXJuYXRpdmVCZWdpbihv
bmNlVGhyb3VnaCkpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbMF0uZnJhbWVM
b2NhdGlvbiA9IDA7CiAgICAgICAgIG1fY3VycmVudEFsdGVybmF0aXZlSW5kZXggPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCA0MTJjNmU0YTZjYmVhYzg5MzIx
YjBhZTc4MGZkZDc2YTA2MTliZTJkLi5mNjZhODJlNTc1MWFkZGEzMjllZGVlZjcwYWQ5MjY5ZDEx
ZWQyYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtMzg5OSw3
ICszODk5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6ZHVtcFJlZ0V4cERpc2Fzc2Vt
Ymx5KCkpKQotICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFlh
cnJEaXNhc3NlbWJsZXI+KHRoaXMpOworICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtl
VW5pcXVlPFlhcnJEaXNhc3NlbWJsZXI+KHRoaXMpOwogCiAgICAgICAgIGlmIChtX2Rpc2Fzc2Vt
YmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRTdGFydE9mQ29kZShsYWJlbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCA0OWY3
N2Y2OWM2ODVjNjUyMDNkZjNmMDM0YzkwZDE4NzdjOTJkYzliLi5mY2M1MWIyNzdmNTAxMTAzYjdj
NjViYmQzM2E1Y2E0MTBkODFjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgY2xhc3MgQ2hhcmFjdGVyQ2xhc3NDb25z
dHJ1Y3RvciB7CiAgICAgewogICAgICAgICBjb2FsZXNjZVRhYmxlcygpOwogCi0gICAgICAgIGF1
dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwor
ICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4o
KTsKIAogICAgICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLnN3YXAobV9tYXRjaGVzKTsK
ICAgICAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLnN3YXAobV9yYW5nZXMpOwpAQCAtNDQx
LDcgKzQ0MSw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAsIG1f
Y2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2UoKSwgcGF0dGVybi51
bmljb2RlKCkgPyBDYW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNTMikK
ICAgICAgICAgLCBtX3N0YWNrTGltaXQoc3RhY2tMaW1pdCkKICAgICB7Ci0gICAgICAgIGF1dG8g
Ym9keSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBh
dXRvIGJvZHkgPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9w
YXR0ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5
LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMu
YXBwZW5kKFdURk1vdmUoYm9keSkpOwpAQCAtNDU2LDcgKzQ1Niw3IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgICAgICBtX3BhdHRlcm4ucmVzZXRGb3JSZXBhcnNpbmcoKTsK
ICAgICAgICAgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnJlc2V0KCk7CiAKLSAgICAgICAg
YXV0byBib2R5ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAg
ICAgIGF1dG8gYm9keSA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAg
ICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9
IGJvZHktPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0
aW9ucy5hcHBlbmQoV1RGTW92ZShib2R5KSk7CkBAIC02MDgsNyArNjA4LDcgQEAgY2xhc3MgWWFy
clBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQVNTRVJU
KCFvcHRHcm91cE5hbWUpOwogCi0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKKyAg
ICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlz
anVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1z
LmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVy
biwgc3VicGF0dGVybklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBjYXB0dXJlLCBm
YWxzZSkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+
YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFw
cGVuZChXVEZNb3ZlKHBhcmVudGhlc2VzRGlzanVuY3Rpb24pKTsKQEAgLTYxNiw3ICs2MTYsNyBA
QCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKIAogICAgIHZvaWQgYXRvbVBhcmVudGhl
dGljYWxBc3NlcnRpb25CZWdpbihib29sIGludmVydCA9IGZhbHNlKQogICAgIHsKLSAgICAgICAg
YXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlz
anVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVu
Y3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CiAg
ICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJtKFBhdHRlcm5U
ZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbiwgbV9wYXR0ZXJuLm1fbnVtU3VicGF0dGVy
bnMgKyAxLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBmYWxzZSwgaW52ZXJ0KSk7CiAg
ICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRl
cm5hdGl2ZSgpOwogICAgICAgICBtX2ludmVydFBhcmVudGhldGljYWxBc3NlcnRpb24gPSBpbnZl
cnQ7CkBAIC03MDcsNyArNzA3LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAg
ICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0gZGlzanVuY3Rpb24t
Pm1fYWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWZpbHRlclN0YXJ0
c1dpdGhCT0wgfHwgIWFsdGVybmF0aXZlLT5tX3N0YXJ0c1dpdGhCT0wpIHsKICAgICAgICAgICAg
ICAgICBpZiAoIW5ld0Rpc2p1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1
bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAg
ICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rp
b24+KCk7CiAgICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uLT5tX3BhcmVudCA9IGRp
c2p1bmN0aW9uLT5tX3BhcmVudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
UGF0dGVybkFsdGVybmF0aXZlKiBuZXdBbHRlcm5hdGl2ZSA9IG5ld0Rpc2p1bmN0aW9uLT5hZGRO
ZXdBbHRlcm5hdGl2ZSgpOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBZYXJyUGF0dGVybjo6
ZHVtcFBhdHRlcm4oUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW5n
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGFueWNoYXJDcmVhdGUoKQogewot
ICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNz
PigpOworICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNz
PigpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2Uo
MHgwMCwgMHg3ZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1VuaWNvZGUuYXBwZW5k
KENoYXJhY3RlclJhbmdlKDB4MDA4MCwgMHgxMGZmZmYpKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+
bV9jaGFyYWN0ZXJXaWR0aHMgPSBDaGFyYWN0ZXJDbGFzc1dpZHRoczo6SGFzQm90aEJNUEFuZE5v
bkJNUDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4IDBiN2Ri
MmViYThhZDUyZGVkMmI1ZjdlNjdlNTQ1YjhjMTZjOTQ1YzcuLjdlODJjODU1YTg3OGU2YzE4MGVk
NTIxZjFmN2FkNDhkOGMxZmJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJQYXR0ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uaApAQCAtMzQxLDcgKzM0MSw3IEBAIHN0cnVjdCBQYXR0ZXJuRGlzanVuY3Rpb24gewog
ICAgIAogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWRkTmV3QWx0ZXJuYXRpdmUoKQogICAgIHsK
LSAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkFs
dGVybmF0aXZlPih0aGlzKSk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChtYWtlVW5p
cXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UGF0dGVybkFsdGVybmF0aXZlKj4obV9hbHRlcm5hdGl2ZXMubGFzdCgpLmdldCgpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdl
eF90YWJsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVz
CmluZGV4IGMxZjlmOTlkZTA5MWNlY2IyZTFkYjU1YzM4ZmEzNjAzMTFlZTM3ZjQuLjY5Y2Q4ODg2
NTc4NTRjZDU0NDVmODYzZTIyZDU1ZmZiOWM0MGVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwpAQCAtOTUsMTEgKzk1LDExIEBAIGZvciBu
YW1lLCBjbGFzc2VzIGluIHR5cGVzLml0ZW1zKCk6CiAgICAgZnVuY3Rpb24gKz0gKCJ7XG4iKQog
ICAgIGlmIGVtaXRUYWJsZXMgYW5kIGNsYXNzZXNbIlVzZVRhYmxlIl06CiAgICAgICAgIGlmICJJ
bnZlcnNlIiBpbiBjbGFzc2VzOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBj
aGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEs
IHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQorICAgICAgICAgICAgZnVuY3Rpb24g
Kz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+
KF8lc0RhdGEsIHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQogICAgICAgICBlbHNl
OgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFt
ZSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0g
bWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkK
ICAgICBlbHNlOgotICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNz
ID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCisgICAgICAgIGZ1bmN0
aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNs
YXNzPigpO1xuIikKICAgICBoYXNCTVBDaGFyYWN0ZXJzID0gRmFsc2UKICAgICBoYXNOb25CTVBD
aGFyYWN0ZXJzID0gRmFsc2UKICAgICBmb3IgKG1pbiwgbWF4KSBpbiByYW5nZXM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVy
dHlUYWJsZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmlj
b2RlUHJvcGVydHlUYWJsZXMucHkKaW5kZXggZjlmZWY0NjhkMmI1ZGRhNmFhZWVhYjBiM2ZjMDU4
Y2QzZWVjZWFjMS4uNTI2ZmI2ZTdhYzNhMjI3YTZkNDNjYmJlZmQyNzAyZDFhMGM1NGNlOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVBy
b3BlcnR5VGFibGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRl
WWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQpAQCAtNTI5LDcgKzUyOSw3IEBAIGRlZiBkdW1w
TWF0Y2hEYXRhKHNlbGYsIGZpbGUsIHZhbHVlc1BlckxpbmUsIGRhdGFMaXN0LCBmb3JtYXR0ZXIp
OgogICAgIGRlZiBkdW1wKHNlbGYsIGZpbGUsIGNvbW1hQWZ0ZXIpOgogICAgICAgICBmaWxlLndy
aXRlKCJzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiB7fSgpXG57e1xuIi5m
b3JtYXQoc2VsZi5nZXRDcmVhdGVGdW5jTmFtZSgpKSkKICAgICAgICAgZmlsZS53cml0ZSgiICAg
IC8vIE5hbWUgPSB7fSwgbnVtYmVyIG9mIGNvZGVQb2ludHM6IHt9XG4iLmZvcm1hdChzZWxmLm5h
bWUsIHNlbGYuY29kZVBvaW50Q291bnQpKQotICAgICAgICBmaWxlLndyaXRlKCIgICAgYXV0byBj
aGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KFxuIikKKyAg
ICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENo
YXJhY3RlckNsYXNzPihcbiIpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAgICAgc3RkOjppbml0
aWFsaXplcl9saXN0PFVDaGFyMzI+KCIpCiAgICAgICAgIHNlbGYuZHVtcE1hdGNoRGF0YShmaWxl
LCA4LCBzZWxmLm1hdGNoZXMsIGxhbWJkYSBmaWxlLCBtYXRjaDogKGZpbGUud3JpdGUoInswOjA9
IzR4fSIuZm9ybWF0KG1hdGNoKSkpKQogICAgICAgICBmaWxlLndyaXRlKCIpLFxuIikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcCBiL1NvdXJj
ZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcAppbmRleCBjYzcwN2RlM2ZmNGVj
MTM4Y2ZhNDZhYjRjOGUxM2FiYjY1OTNjYmExLi44Yzk3YzFhMjQxYjcyOWFmOGYzMWYzNTljN2Y1
MTc3YTYzNDA5ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJu
ZXNzVGVzdC5jcHAKKysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3Qu
Y3BwCkBAIC02MSw4ICs2MSw4IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHN0YXRpYyB2b2lk
IHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKICAgICAgICAgTG9ja1R5cGUgbG9jazsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IHN0ZDo6bWFrZV91bmlx
dWU8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQ
dHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltd
PihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50
cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkW10+KG51bVRocmVh
ZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRo
cmVhZHMpOwogICAgIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAg
Yi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5kZXggZjE1NjUwZDRj
OWM4ZmE2NzcwZjg5MTJmMDlkZmUzOTI5MTMwN2MzNC4uYmU3YWJhMzkwZWI1M2UzNTgxZTM2ZjRh
OGI5NTAwZDBlMjk5Zjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tT
cGVlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNw
cApAQCAtNzQsOSArNzQsOSBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBMb2NrVHlwZT4KICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAg
ICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9j
a3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRH
cm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3
b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRH
cm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFk
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICog
bnVtVGhyZWFkc1Blckdyb3VwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5n
PExvY2tUeXBlPltdPiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdp
dGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRH
cm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAgICAgIHZvbGF0aWxlIGJvb2wga2Vl
cEdvaW5nID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZl
Y3Rvci5oIGIvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCmluZGV4IDBiNTQxYjhj
NzNkMGY1OTg2NTFiZjk1ZTc2OTNiODA3Yzk5OWY3OGEuLjg4NGVkNzMyMzM3NjFhMjlmYjQ5NmYw
YWQwOTg5Njc1NDVlNzAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRW
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKQEAgLTI1NCw3
ICsyNTQsNyBAQCBjbGFzcyBDb25jdXJyZW50VmVjdG9yIGZpbmFsIHsKICAgICB2b2lkIGFsbG9j
YXRlU2VnbWVudCgpCiAgICAgewogICAgICAgICBtX3NlZ21lbnRzLmdyb3cobV9udW1TZWdtZW50
cyArIDEpOwotICAgICAgICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNlZ21lbnQ+KCk7CisgICAgICAgIG1fc2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9
IG1ha2VVbmlxdWU8U2VnbWVudD4oKTsKICAgICB9CiAKICAgICBzaXplX3QgbV9zaXplIHsgMCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAppbmRleCA4M2MyMDc1
MWY4NWY0ZTRkMjAxNTYxNDQxY2E4MzE0MWNiNWMzN2ZmLi5jNjNjMDU1YTBhMDM0MWRmNmE1YWYy
NzBhNGFjY2I4ZDU3ZDc4NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVh
ZFRhc2tIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5k
bGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnRh
c2tSdW5Mb29wKCkKIAogICAgIHdoaWxlICghbV90YXNrUXVldWUuaXNLaWxsZWQoKSkgewogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRv
ZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9y
UnVuTG9vcDo6VXNlKSA/IHN0ZDo6bWFrZV91bmlxdWU8QXV0b2RyYWluZWRQb29sPigpIDogbnVs
bHB0cjsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9k
cmFpbmVkUG9vbCA9IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JS
dW5Mb29wOjpVc2UpID8gbWFrZVVuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOwog
CiAgICAgICAgICAgICBtX3Rhc2tRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBlcmZvcm1UYXNrKCk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1Nv
dXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCBlZmVmYjNhMzEzM2U4M2Y2NDMzNmZkMmVj
MmRhNTJhNTQ4MzJlNjIxLi45NWI2NzU5NzJkMzEwZTNkZGJkNDEzZDRhOGY4ZDEyODhmMjBmYWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRmFzdE1hbGxvYy5oCkBAIC0zMDEsOSArMzAxLDExIEBAIHVzaW5nIFdURjo6ZmFzdEFs
aWduZWRGcmVlOwogI2RlZmluZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBcCiBwdWJsaWM6IFwK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYgaW50IF9fZmFzdEFs
bG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVUb0Zv
cmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCiAKICNkZWZpbmUgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEIFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVk
ZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiB0eXBlZGVmIGludCBfX3RoaXNJc0hlcmVU
b0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNw
cAppbmRleCAzZTI1M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFlZmM3Y2E3OWI2NGVhLi43MDc0YzAz
YWJhZjhmY2YzOTc3ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0
cmVhbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVh
bT4gRmlsZVByaW50U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb24KICAgICBp
ZiAoIWZpbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
aWxlUHJpbnRTdHJlYW0+KGZpbGUpOwogfQogCiB2b2lkIEZpbGVQcmludFN0cmVhbTo6dnByaW50
Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmluZGV4IDA1
ZTM2OTc4MjViYzNkMzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4M2UuLjBiNzk1ODY3NDgwZmQwMzIy
NDEyNDU0ZTdkMGFmODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtNjcsMTEgKzY3LDExIEBA
IGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENh
bGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9p
bnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVu
Y3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBw
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUs
IE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFi
bGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBl
LCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5
cGU+CiAgICAgRnVuY3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0gICAgICAgIDogbV9jYWxsYWJsZVdy
YXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5
cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdy
YXBwZXIobWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91
dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CiAKICAgICBPdXQgb3BlcmF0b3IoKShJbi4uLiBp
bikgY29uc3QKICAgICB7CkBAIC04NCwxNCArODQsMTQgQEAgY2xhc3MgRnVuY3Rpb248T3V0KElu
Li4uKT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFi
bGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFi
bGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJs
ZVR5cGUmJiBjYWxsYWJsZSkKICAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwg
SW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0g
bWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6
aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0
eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oRnVuY3Rpb25UeXBl
IGYpCiAgICAgewotICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92
ZShmKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNh
bGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAzYjFlOTUzMDNk
ZTU0MDUxNDNmYjU2M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQwNzdmODRmMDJhMWZhMWMxYmUwMzRh
ODZlYjM1MGQ2ZDdmNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNTg4LDEwICs1ODgsMTAgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKLSAgICAgICAgLCBtX211
dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlx
dWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQot
ICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyAgICAgICAgLCBt
X3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTMz
NCwxMCArMTMzNCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3Vu
dCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9y
cyhudWxscHRyKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQor
ICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlmCiAjaWYgRFVNUF9I
QVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5p
cXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVl
PFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIHVuc2lnbmVk
IG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXplKCk7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYg
b3RoZXIpCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0
b3JzKG51bGxwdHIpCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkp
CisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICAgICB7CiAg
ICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDllODcyMGY2ZDlhNzk4MGI5NWU1YjEzYzVlNjU1YzM4
OTQ5MzA0YjUuLjUzNzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUwZDZhMThjNWQ5ZmVjMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25p
dG9yKGJvb2wgdXNlKQogICAgIH0KIAogICAgIGlmICh1c2UpIHsKLSAgICAgICAgbV9tZWFzdXJl
bWVudFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG1h
a2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmly
ZWQpOwogICAgICAgICBtX21lYXN1cmVtZW50VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3MpOwog
ICAgIH0gZWxzZQogICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRM
aWJFeHRyYXMuaAppbmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlmMTljM2MxZmMxZmRjNTdhYjRkNGFi
Li5kZWY4MzQwZTNjOGFjYzg1ODZkYTRmMDBiYjhlOWRjNTZlMDEzZWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJF
eHRyYXMuaApAQCAtNTY1LDYgKzU2NSwyNCBAQCBjb25zdGV4cHIgc2l6ZV90IGNseih1aW50MzJf
dCB2YWx1ZSwgWmVyb1N0YXR1cyBtaWdodEJlWmVybyA9IFplcm9TdGF0dXM6Ok1heUJlWgogCiB9
IC8vIG5hbWVzcGFjZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNzIFQs
IGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWUo
QXJncyYmLi4uIGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5h
bWUgVDo6X19mYXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lOTElORSBkZWNsdHlwZShhdXRv
KSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKK3sKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworfQorCisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0
ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCiAKIHVzaW5nIFdURjo6S0I7
CkBAIC01ODUsMyArNjAzLDUgQEAgdXNpbmcgV1RGOjptZXJnZURlZHVwbGljYXRlZFNvcnRlZDsK
IHVzaW5nIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjsKIHVzaW5nIFdURjo6c2FmZUNhc3Q7CiB1
c2luZyBXVEY6OnRyeUJpbmFyeVNlYXJjaDsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZTsKK3VzaW5n
IFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5o
CmluZGV4IDI2YmJjOGZkNjdhNDkzNDYzMjIxZDYxOTYxOGViN2M2NDY4NjQwMzAuLmNhMzNmODY3
ZDM4YjU3NTkyMDE0MWQ1MjNjMzA3YWFlN2M4MjBiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1N0cmVhbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCkBA
IC02MCw3ICs2MCw3IEBAIGNsYXNzIFN0cmVhbUJ1ZmZlciB7CiAgICAgICAgIG1fc2l6ZSArPSBz
aXplOwogICAgICAgICB3aGlsZSAoc2l6ZSkgewogICAgICAgICAgICAgaWYgKCFtX2J1ZmZlci5z
aXplKCkgfHwgbV9idWZmZXIubGFzdCgpLT5zaXplKCkgPT0gQmxvY2tTaXplKQotICAgICAgICAg
ICAgICAgIG1fYnVmZmVyLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigpKTsKKyAgICAg
ICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQobWFrZVVuaXF1ZTxCbG9jaz4oKSk7CiAgICAgICAg
ICAgICBzaXplX3QgYXBwZW5kU2l6ZSA9IHN0ZDo6bWluKEJsb2NrU2l6ZSAtIG1fYnVmZmVyLmxh
c3QoKS0+c2l6ZSgpLCBzaXplKTsKICAgICAgICAgICAgIG1fYnVmZmVyLmxhc3QoKS0+YXBwZW5k
KGRhdGEsIGFwcGVuZFNpemUpOwogICAgICAgICAgICAgZGF0YSArPSBhcHBlbmRTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9Vbmlx
dWVSZWYuaAppbmRleCA3M2U5ZGZlYzA2ZmQ3ODdmM2IwNmIzZGM5ZGE2NWE1NTA0ZDFjMDI5Li42
NTkxMjUxYjg2MjdkZjM2Y2YyZWI5Zjc0NzkzZWY0ODljYTFlOTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaApA
QCAtMzMsMTEgKzMzLDE4IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
Y2xhc3MgVW5pcXVlUmVmOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgot
VW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCitVbmlxdWVSZWY8VD4g
bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCiB7CiAg
ICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CitVbmlxdWVSZWY8
VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0ZWRDbGFzcywgaW50Pjo6dmFsdWUp
OworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxUPihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xh
c3MgVW5pcXVlUmVmIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzcwLDcgQEAgY2xhc3MgVW5pcXVlUmVm
IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5pcXVlUHRyKCkgeyByZXR1cm4gV1RG
TW92ZShtX3JlZik7IH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4u
LiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1h
a2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAogICAgIFVuaXF1ZVJlZihUJiBv
dGhlcikKQEAgLTc5LDMgKzg2LDQgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAogdXNpbmcgV1RGOjpV
bmlxdWVSZWY7CiB1c2luZyBXVEY6Om1ha2VVbmlxdWVSZWY7Cit1c2luZyBXVEY6Om1ha2VVbmlx
dWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Z2xpYi9SdW5Mb29wR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNw
cAppbmRleCA1ZTViYThhYmViZGJkNDliYmI4MzdkZDRjNGZkNjliZDZmZmMzNjFmLi5mYjIxMWQw
YTI5NjFkZmMxNmFhNmUyMWEyMWE5NzRkZmYxNTI2OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxv
b3BHTGliLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRl
cihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgZ19z
b3VyY2Vfc2V0X25hbWUoc291cmNlLmdldCgpLCAiW1dlYktpdF0gUnVuTG9vcCBkaXNwYXRjaEFm
dGVyIik7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUoc291cmNlLmdldCgpLCBnX2dldF9t
b25vdG9uaWNfdGltZSgpICsgZHVyYXRpb24ubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8RGlzcGF0Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBtYWtlVW5p
cXVlPERpc3BhdGNoQWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgZ19zb3Vy
Y2Vfc2V0X2NhbGxiYWNrKHNvdXJjZS5nZXQoKSwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdi
b29sZWFuIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBj
b250ZXh0KHN0YXRpY19jYXN0PERpc3BhdGNoQWZ0ZXJDb250ZXh0Kj4odXNlckRhdGEpKTsKICAg
ICAgICAgY29udGV4dC0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCmlu
ZGV4IGRjYmEwNjA4MmM1ZjY2ZTMxOWExNWVlNTk3ZmM2NDk3NjZiMDVlNmMuLjViZjRlNmQwMWRl
ODQzZWQyODc4ODNlYTNhMDNlODQ5NDkzYmVjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3Rl
cnM6Okl0ZXJhdG9yOjpJbXBsIHsKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6
Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25l
ZCBpbmRleCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcs
IHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0
cmluZ1ZpZXcpKSwgaW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8SW1wbD4oc3RyaW5n
Vmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBmZGI4Y2UyOTJkNzM4ZGE0MjAzOGFhOTY1YWYz
YWNhMTc4YTgwY2ViLi44ZGM3NmZhMmU1OWVhNjdlMDIxNzM4YzMxMWEzNTc3ZjRkMzZlNjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC05MSw3
ICs5MSw3IEBAIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9w
ZXJ0eUludmFsaWRVUkwoY29uc3QgU3RyaW5nJiBwcm9wCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZl
c3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIGlmIChtX2NvbnNvbGVDb250ZXh0KQotICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5hZGRD
b25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KEpTQzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFu
aWZlc3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7Cisg
ICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNlOjpPdGhlciwgSlNDOjpN
ZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygi
UGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZlc3RVUkwuc3RyaW5nKCks
ICI6ICJfcywgbWVzc2FnZSkpKTsKIH0KIAogVVJMIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6
OnBhcnNlU3RhcnRVUkwoY29uc3QgSlNPTjo6T2JqZWN0JiBtYW5pZmVzdCwgY29uc3QgVVJMJiBk
b2N1bWVudFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05h
dmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0
b3JCZWFjb24uY3BwCmluZGV4IDliZmE1Zjk0OTk0YjA1NDUwNmI4MjZhMzE0YjgyNTgyN2VhNDFh
ZGIuLjdlNGY3OTQ3MWUyYzU5ZmU3MWMxNDgxMzJmNGI1NTFkOGZmYzc5MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBOYXZpZ2F0b3JCZWFjb24qIE5hdmlnYXRvckJlYWNvbjo6ZnJvbShOYXZpZ2F0
b3ImIG5hdmlnYXRvcikKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yQmVhY29uKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmlnYXRv
cik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yQmVh
Y29uPihuYXZpZ2F0b3IpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQo
KTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1v
dmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAppbmRleCA1ZWQxZjVjY2E2NDFlYjA0ZWMwZTBhMGNl
MDZjODM3MjQ1NjhhMmZmLi42MTUzOTQzMGRmYjk2MTZmZDI4OGZlZDkyY2I5NDRmZjQ0NmIwMTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIERPTVdpbmRvd0NhY2hlcyogRE9NV2luZG93Q2FjaGVzOjpm
cm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxET01XaW5kb3dDYWNoZXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5k
b3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd0Nh
Y2hlcz4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7
CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3
U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKaW5kZXggMDY1NmJlZjBiMTcxOGUz
M2RiYzdmYTBlZTYwYzU3ZDQ4ZTM4ZDRlOC4uNTExOGE0ODg1MGYyNDJkMDQ0ZDNiNDBmZjBlM2Iy
M2JiOTZlMjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3Jr
ZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV29ya2VyR2xv
YmFsU2NvcGVDYWNoZXMqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKFdvcmtlckdsb2Jh
bFNjb3BlJiBzY29wZSkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29y
a2VyR2xvYmFsU2NvcGVDYWNoZXMqPihTdXBwbGVtZW50PFdvcmtlckdsb2JhbFNjb3BlPjo6ZnJv
bSgmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxT
Y29wZUNhY2hlcz4oc2NvcGUpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5p
cXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7CiAgICAgICAgIHN1cHBsZW1lbnQg
PSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVt
ZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRl
bnRpYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
TmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCmluZGV4IDcxZjQzOGNmNzg2Yzc2ZDdiNTg3MjE1NTk3
NjY4YjYyMzYxYjU5OTMuLjExODFiZDk4NWEyMmJhNDkzZjgzNjMxZDdlNDFmZWU4NzliNTZiM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQv
TmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3Jl
ZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCkBAIC02Myw3ICs2Myw3
IEBAIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJvbShOYXZp
Z2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JDcmVkZW50aWFscyogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckNyZWRlbnRpYWxzKj4oU3VwcGxlbWVudDxOYXZpZ2F0
b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxl
bWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5h
dmlnYXRvckNyZWRlbnRpYWxzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPE5hdmlnYXRvckNyZWRlbnRpYWxzPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAKaW5kZXggYjZmZDY4ZDY3MmVkZTM4Nzc4YzE1YzZmZWFhZjQ2YjQ1NWU1YTFjZC4uNzVlZGI2
YTkzNjM4ODBlNTg3YzM1NzU2YjE0ZGVjOWY5YjQ1ZTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CkBAIC0xMzMsNyArMTMzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICAgICAgICAgYXV0
byBzeXN0ZW1JRCA9IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGVla1N5
c3RlbUlEKHZpZXcsIG9mZnNldCk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lO
SVREQVRBKQogICAgICAgICBpZiAoc3lzdGVtSUQgPT0gSVNPRmFpclBsYXlTdHJlYW1pbmdQc3No
Qm94OjpmYWlyUGxheVN5c3RlbUlEKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IHN0
ZDo6bWFrZV91bmlxdWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOworICAgICAgICAg
ICAgYXV0byBmcHNQc3NoID0gbWFrZVVuaXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+
KCk7CiAgICAgICAgICAgICBpZiAoIWZwc1Bzc2gtPnJlYWQodmlldywgb2Zmc2V0KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgcHNzaEJveGVzLmFw
cGVuZChXVEZNb3ZlKGZwc1Bzc2gpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBPcHRpb25hbDxWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+
PiBJbml0RGF0YQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHN5c3RlbUlEKTsKICNlbmRp
ZgotICAgICAgICBhdXRvIHBzc2hCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKKyAgICAgICAgYXV0byBwc3NoQm94ID0gbWFrZVVu
aXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7CiAgICAgICAgIGlm
ICghcHNzaEJveC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggODI2Mjg5M2ZlMGFmOTk5MTRlZDM5
ZTk2MGNmMTBhNzUzNDA3MDViNi4uODM3ZGYxMjNhZTU5NmYzNTM3YzkxNTI3MDNlM2QyNzFiMzQ2
ZWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCkBAIC02MSwxNSArNjEsMTUgQEAgc3RydWN0IENE
TUZhY3Rvcnkgewogc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGluc3RhbGxlZENETUZhY3Rv
cmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0
b3I8Q0RNRmFjdG9yeSo+IHsKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBj
ZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5Pihj
ZG0pOyB9LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1
cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCiAgICAgICAg
ICAgICBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtLCBMZWdhY3lD
RE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAgICAg
ICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMuIGh0dHA6Ly93ZWJraXQu
b3JnL2IvMTA5MzE4LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMyMAotICAgICAgICBuZXcgQ0RN
RmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Q
cml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExl
Z2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXllcj4o
Y2RtKTsgfSwKICAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlT
eXN0ZW0sIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlw
ZSksCiAKICNpZiAoSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKSB8fCBIQVZFKEFWU1RSRUFNU0VT
U0lPTikpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtd
KExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2Fj
eUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+KGNkbSk7IH0sCiAgICAgICAgICAgICBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpz
dXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNL
ZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAjZW5kaWYKICAgICB9KTsKQEAgLTEwNyw3ICsxMDcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNPiBMZWdhY3lDRE06OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVn
YWN5Q0RNPihrZXlTeXN0ZW0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeUNETT4oa2V5
U3lzdGVtKTsKIH0KIAogTGVnYWN5Q0RNOjpMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETS5oCmluZGV4IDQ1OGVjNTNiNDMzN2IxNzEwNTU2ZjhhMTdiNGVmMDFl
ZmNlMTU2NGUuLmZiNWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1ZmUwYTVlODk2NDA2YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETS5oCkBAIC01MCw3ICs1MCw4IEBAIGNsYXNzIExlZ2FjeUNETUNsaWVudCB7CiAg
ICAgdmlydHVhbCBSZWZQdHI8TWVkaWFQbGF5ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2Fj
eUNETSopIGNvbnN0ID0gMDsKIH07CiAKLWNsYXNzIExlZ2FjeUNETSB7CitjbGFzcyBMZWdhY3lD
RE0gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IExlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVByaXZhdGUuaAppbmRleCAwYThkNTRlNWM1NjVmMzQ1MDg1NjJjNWE4YzFlMDAzNWFm
MTRhNzRmLi5mMjQ5NzA3MmU3ODU3NjBjNTllMjMwMzkzNGZiN2Y5Y2M0NzcyZGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIExlZ2FjeUNE
TVNlc3Npb247CiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OwogCiBjbGFzcyBDRE1Qcml2
YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBDRE1Qcml2YXRlSW50ZXJmYWNlKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkNETVByaXZh
dGVJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5LmNwcAppbmRleCBjOTMxNmRmZDhhYmI0MDU0OTJmNTU1ZWIzZDFiM2QwOTE3
Y2VmZjUwLi4zYThjMDBmNTIzMWY1MmE2ZTg5ZDE4M2QxNTExYzNhYzg3NzNhMWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE1Qcml2YXRlQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgYm9vbCBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+
IExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9u
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lv
bkNsZWFyS2V5PihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25DbGVh
cktleT4oY2xpZW50KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuaAppbmRleCAyZjdiMDM1MzllZjhlYTQ3NGUyMzZkMDVkOWUxN2ZlYzQ4NGU2Mjdl
Li5iYzc3N2YwY2JjOGNlN2I4OWU5NDNiOGE2M2U0ZTZlODI4OWIzOGNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNz
aW9uQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaApAQCAtMzMsNyArMzMsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENETVNlc3Npb25DbGVhcktleSA6IHB1YmxpYyBM
ZWdhY3lDRE1TZXNzaW9uIHsKK2NsYXNzIENETVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1Ymxp
YyBMZWdhY3lDRE1TZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAg
IHZpcnR1YWwgfkNETVNlc3Npb25DbGVhcktleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBhZGRjNTQ4OTZiOGE0NDM4Y2ZiZmQw
NjU4MGFkYmM4NjBhODFmODY0Li5kYjYzOTBlN2Y5OTI1OTc3Yjg3Y2EwMDllZGFiZDUxY2RiNjY3
MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKGNv
bnN0IEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikKICAgICB9CiAKICAg
ICBtX2Jsb2JMb2FkZXIuZW1wbGFjZSgqdGhpcyk7Ci0gICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1lcik7
CisgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVyPigqbV9i
bG9iTG9hZGVyLCBjb25zdW1lcik7CiAKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+c3RhcnQo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CiAgICAgaWYgKCFtX2Jsb2JMb2FkZXIt
PmxvYWRlci0+aXNTdGFydGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGNkMzQ1ZWI5ZWMzNDBjMzZlMGYwYTZlZWQ4MmRkOTg4
YjRmOTdkMzkuLjk0MDEzY2Y0ZWE2NTIzOGQ4M2I5YjRjODFkYjdkMTgxNjUzMjQ3MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMjQz
LDcgKzI0Myw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0CiAKICAgICByZXNwb25zZS0+YWRk
QWJvcnRTdGVwcyhyZXF1ZXN0LnNpZ25hbCgpKTsKIAotICAgIHJlc3BvbnNlLT5tX2JvZHlMb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEJvZHlMb2FkZXI+KHJlc3BvbnNlLmdldCgpLCBXVEZNb3Zl
KHJlc3BvbnNlQ2FsbGJhY2spKTsKKyAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gbWFrZVVu
aXF1ZTxCb2R5TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNr
KSk7CiAgICAgaWYgKCFyZXNwb25zZS0+bV9ib2R5TG9hZGVyLT5zdGFydChjb250ZXh0LCByZXF1
ZXN0KSkKICAgICAgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG51bGxwdHI7CiB9CkBAIC0z
ODIsNyArMzgyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogYm9vbCBGZXRjaFJlc3BvbnNl
OjpCb2R5TG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigpKTsK
KyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlzLCAmbV9yZXNwb25z
ZS5tX2JvZHktPmNvbnN1bWVyKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChjb250ZXh0LCByZXF1
ZXN0KTsKICAgICByZXR1cm4gbV9sb2FkZXItPmlzU3RhcnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCmluZGV4IDYx
MDIwODk5Y2JjNGE3ZTQzM2IxNTFkY2NhZWJmZTkwNzY0ZDNlMmQuLjg1MGQyMmRlMjg1YmIzMzVk
MjJlOGMyZTI1M2I3YWI2ZTBjNjAzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdh
dG9yR2FtZXBhZCogTmF2aWdhdG9yR2FtZXBhZDo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JHYW1lcGFkKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdh
dG9yR2FtZXBhZCo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRl
VG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYjA5ZmMzNDMzYmJmYmI3MjhmMzE1
YzE1MzNhNmYyYzllNGZjMDA3MS4uY2Q4MDcwYjIwN2RiOGEzNDQwMjZjZmY2MTA1Yjg1ZWUxOWJj
NTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGNvbnN0
IGNoYXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogdm9pZCBwcm92
aWRlR2VvbG9jYXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVudCYgY2xpZW50KQog
ewogICAgIEFTU0VSVChwYWdlKTsKLSAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFn
ZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5p
cXVlPEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOworICAgIFN1cHBsZW1l
bnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1l
bnROYW1lKCksIG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Db250cm9sbGVyPigqcGFnZSwgY2xpZW50
KSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3Bw
CmluZGV4IGIzNGY0OWE2NzFkODVmNTE0MmI4YmFmMGY1MmJhOTkxYWM0MzU5ZGMuLjM1ZGZiZjhm
M2YyNTY5YzAxMzUzNTY2MzAwZjViNzgzN2RlMjhmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBOYXZpZ2F0b3JHZW9sb2Nh
dGlvbjo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JHZW9sb2Nh
dGlvbiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdlb2xvY2F0aW9uKj4oU3Vw
cGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsK
ICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHZW9sb2NhdGlvbj4obmF2aWdhdG9yKTsKKyAgICAgICAg
YXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHZW9sb2NhdGlvbj4obmF2
aWdhdG9yKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAg
ICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1
cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBjNzIwM2E5
YTg2NDA5NzA1MGQzZGMwMDc5MmY3YTZiNTgxZmFhMjVlLi41ZTlkOTc5NjZiZmRlNThlNjYwOTlh
NTA5ZTYxOGI4NGMxOGQwNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgRE9NV2luZG93SW5kZXhlZERhdGFiYXNlKiBET01XaW5kb3dJbmRleGVkRGF0YWJh
c2U6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93SW5kZXhlZERhdGFi
YXNlKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlKj4o
U3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93KTsKKyAgICAgICAg
YXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dJbmRleGVkRGF0YWJhc2U+
KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAg
ICAgICBwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZjQzMDkwYzRkY2MzZWRlNWUyN2QxYWE0NDM4NDQ0
N2Q4NDljNjQwYi4uOWE3ODEyNzg0NjNlZDBhNGEwYWRkZDNmN2RiMGM1NjU2OTYyYjljZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcApAQCAtNTE3LDcgKzUxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJJbmRleD4+IElEQk9i
amVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKICAgICBpZiAoIWluZm8p
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiRmFpbGVkIHRvIGV4
ZWN1dGUgJ2luZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgc3BlY2lmaWVkIGluZGV4IHdh
cyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBhdXRvIGluZGV4ID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBh
dXRvIGluZGV4ID0gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgKmluZm8sICp0aGlzKTsKIAogICAgIFJlZjxJREJJbmRleD4gcmVmZXJlbmNlZEluZGV4IHsg
KmluZGV4IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBmYTJjZDdlYWQwOWI2MDU1MjViOGNiNDQxZWY3MDAxZDgz
MzUwMTAwLi40MjI0M2ZiYTU3MzEyOTU0MTg4OTRhMzIwNDNlODllMGIyYzFhNWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CkBAIC0xNzksNyArMTc5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9iamVjdFN0b3JlPj4gSURC
VHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWMKICAgICBpZiAoIWlu
Zm8gfHwgKCFmb3VuZCAmJiAhaXNWZXJzaW9uQ2hhbmdlKCkpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdvYmplY3RTdG9yZScg
b24gJ0lEQlRyYW5zYWN0aW9uJzogVGhlIHNwZWNpZmllZCBvYmplY3Qgc3RvcmUgd2FzIG5vdCBm
b3VuZC4iX3MgfTsKIAotICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
Qk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwor
ICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJhd09iamVjdFN0
b3JlID0gb2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNl
dChvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUob2JqZWN0U3RvcmUpKTsKIApAQCAtNjY3LDcgKzY2
Nyw3IEBAIFJlZjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYKIAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
bV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsKIAotICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBpbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9yZSA9IG1ha2VVbmlxdWU8SURCT2Jq
ZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0aGlzKTsKICAgICBh
dXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwogICAgIG1fcmVmZXJlbmNl
ZE9iamVjdFN0b3Jlcy5zZXQoaW5mby5uYW1lKCksIFdURk1vdmUob2JqZWN0U3RvcmUpKTsKIApA
QCAtNzU1LDcgKzc1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4gSURCVHJhbnNhY3Rp
b246OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yCiAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmNyZWF0ZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBpbmZvKTsKICAgICB9KSk7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElE
QkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7CiB9
CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25TZXJ2ZXIoSURCQ2xpZW50OjpU
cmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJbmRleEluZm8mIGluZm8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9i
YWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYTQ4NTAzYjRk
MmQ4MDQyOTQ2ODRhNjVhNjVlYmQ2NGYyMzNjZDdiOS4uOWI3NTc3NDkyMWI0NjUwNmY1ODNkZTdm
ZWM0MjUwZTg1NGFjZTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNl
LmNwcApAQCAtNTksNyArNTksNyBAQCBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZSog
V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20oV29ya2VyRwogICAgICAgICBp
ZiAoIWNvbm5lY3Rpb25Qcm94eSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2Nv
cGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblByb3h5KTsKKyAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRh
YmFzZT4oc2NvcGUsICpjb25uZWN0aW9uUHJveHkpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZzY29wZSwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcAppbmRleCA5NDhjZjc0NjYzYWU2OWM4MmRhNDQ0ZTA5MzQ3M2RkODU2ZDRk
ZTkzLi4zNzcxMWRjMTAzZGI2YzlhOWI4MTNkYmM5ZGY3OTliN2UyNmE2ZDY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRv
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZWY8SURCQ29ubmVj
dGlvblRvU2VydmVyPiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZShJREJDb25uZWN0aW9u
VG9TZXJ2ZXJEZQogCiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
cihJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZSYgZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVn
YXRlKG1ha2VXZWFrUHRyKGRlbGVnYXRlKSkKLSAgICAsIG1fcHJveHkoc3RkOjptYWtlX3VuaXF1
ZTxJREJDb25uZWN0aW9uUHJveHk+KCp0aGlzKSkKKyAgICAsIG1fcHJveHkobWFrZVVuaXF1ZTxJ
REJDb25uZWN0aW9uUHJveHk+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJh
dGlvbi5jcHAKaW5kZXggMjc1M2ZkMGMyNDU3YjljMDlkOWQ4OWU0Zjc2MmI0NzlmOGI0NDBiMS4u
OGUxZGUwNmQ3MWU4ZjBiMjIzZDY4NmU1ZTFhOGEyMjA5Yjc0Mzg0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNh
Y3Rpb25PcGVyYXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFRyYW5zYWN0aW9uT3BlcmF0aW9u
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElEQlJl
cXVlCiAgICAgaWYgKG1faW5kZXhJZGVudGlmaWVyKQogICAgICAgICBtX2luZGV4UmVjb3JkVHlw
ZSA9IHJlcXVlc3QucmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCk7CiAgICAgaWYgKGF1dG8qIGN1
cnNvciA9IHJlcXVlc3QucGVuZGluZ0N1cnNvcigpKQotICAgICAgICBtX2N1cnNvcklkZW50aWZp
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY3Vyc29yLT5pbmZv
KCkuaWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CiAK
ICAgICBtX2lkYlJlcXVlc3QgPSAmcmVxdWVzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggODliZmU3OTNk
N2RiYjVjZTczMTE0NzllZjY5NTBiOWNmZDE3Y2UwOC4uM2JiNmRhY2E2OGQ3YzBmNTNhZDg3ZTlk
MWRmMThhM2ZmZTRhOTFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBVbmlxdWVJ
REJEYXRhYmFzZSYgSURCU2VydmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0
IElEQkRhdGFiYXNlSWRlbgogCiAgICAgYXV0byB1bmlxdWVJREJEYXRhYmFzZSA9IG1fdW5pcXVl
SURCRGF0YWJhc2VNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogICAgIGlmICh1bmlxdWVJ
REJEYXRhYmFzZS5pc05ld0VudHJ5KQotICAgICAgICB1bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXF1ZUlEQkRhdGFiYXNlPigqdGhpcywgaWRl
bnRpZmllcik7CisgICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZSA9IG1h
a2VVbmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKIAogICAgIHJl
dHVybiAqdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlOwogfQpAQCAtMTM1LDcgKzEz
NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNlcnZlcjo6Y3JlYXRl
QmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiAgICAgaWYgKG1fZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlKGlkZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRl
SURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVj
dG9yeVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIsIG1fcGVyT3JpZ2lu
UXVvdGEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9z
ZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdT
dG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyLCBtX3Blck9yaWdpblF1b3RhKTsKIH0KIAogdm9pZCBJ
REJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
CkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBJREJTZXJ2ZXI6OlF1b3RhVXNlcjo6aW5pdGlhbGl6
ZVNwYWNlVXNlZCh1aW50NjRfdCBzcGFjZVVzZWQpCiBJREJTZXJ2ZXI6OlF1b3RhVXNlciYgSURC
U2VydmVyOjplbnN1cmVRdW90YVVzZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAg
ICAgcmV0dXJuICptX3F1b3RhVXNlcnMuZW5zdXJlKG9yaWdpbiwgW3RoaXMsICZvcmlnaW5dIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VyPigqdGhpcywgbV9xdW90
YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9yaWdpbiB7IG9yaWdp
biB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGFVc2VyPigqdGhpcywgbV9xdW90
YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9yaWdpbiB7IG9yaWdp
biB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAK
aW5kZXggNjk4M2M5ZDdlYWZmNTYxNjcyMDRkOTUyZjFmMjI2N2JiNDBjYTRiYS4uOGQ5MjFkOGVm
ZTZiYTg0MGEzMGQ2MWRmZGM2YTcyMWU4MjhhNDNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgSURCRXJyb3IgSW5kZXhWYWx1ZVN0b3JlOjphZGRSZWNvcmQoY29u
c3QgSURCS2V5RGF0YSYgaW5kZXhLZXksIGNvbnN0IElEQktleURhdGEKICAgICAgICAgcmV0dXJu
IElEQkVycm9yKENvbnN0cmFpbnRFcnJvcik7CiAKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGV4
VmFsdWVFbnRyeT4obV91bmlxdWUpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
bWFrZVVuaXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKIAogICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUtPmFkZEtleSh2YWx1ZUtleSk7CiAgICAgbV9vcmRlcmVkS2V5cy5pbnNlcnQo
aW5kZXhLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5j
cHAKaW5kZXggNDdjYzQyZmQyNmQ2NDczYzY0MTkyN2U5OTJkNGVjNmU4ZDdiZjhlZS4uNWU3MTQ0
OTc4NGEwZGEwNzY3Nzg5YThkZWRjNTIyNjg5ZjRkOGRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBJREJTZXJ2ZXIgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24+IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUoTWVtb3J5SURCQmFj
a2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsKIH0KIAogTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1l
bW9yeUlEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mIGluZm8pCkBAIC01Miw3ICs1Miw3IEBAIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihNZW1vcnlJREJCYWNraW5nU3RvCiAgICAg
ICAgIElEQkRhdGFiYXNlSW5mbyBpbmZvOwogICAgICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5n
U3RvcmUuZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oaW5mbyk7CiAgICAgICAgIGlmIChlcnJv
ci5pc051bGwoKSkKLSAgICAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIH0K
IH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b246OnJlY29yZFZhbHVlQ2hhbmdlZChNZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0CiAKICAgICBh
dXRvIG9yaWdpbmFsQWRkUmVzdWx0ID0gbV9vcmlnaW5hbFZhbHVlcy5hZGQoJm9iamVjdFN0b3Jl
LCBudWxscHRyKTsKICAgICBpZiAob3JpZ2luYWxBZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAg
ICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxL
ZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKIAogICAgIGF1dG8qIG1hcCA9IG9yaWdpbmFs
QWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCA3ZDE0MmIwMDUwYWI2MDg4MWUzODdiZThjMTk4OTQ3YWM2ZThkZDgx
Li5jZmZlMzMzN2Y3OTQ0OGI4YzIxM2RiYmU1ZmEzNWI0ZDNhNzBmMmY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdWludDY0X3Qg
bWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCiBzdGQ6OnVuaXF1ZV9w
dHI8TWVtb3J5SURCQmFja2luZ1N0b3JlPiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOwogfQog
CiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCkBAIC02MSw3ICs2MSw3IEBAIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6fk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpID0gZGVmYXVsdDsKIElEQkVy
cm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURC
RGF0YWJhc2VJbmZvJiBpbmZvKQogewogICAgIGlmICghbV9kYXRhYmFzZUluZm8pCi0gICAgICAg
IG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRl
bnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gbWFr
ZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7
CiAKICAgICBpbmZvID0gKm1fZGF0YWJhc2VJbmZvOwogICAgIHJldHVybiBJREJFcnJvciB7IH07
CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpzZXREYXRhYmFz
ZUluZm8oY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogICAgIC8vIEl0IGlzIG5vdCB2YWxp
ZCB0byBkaXJlY3RseSBzZXQgZGF0YWJhc2UgaW5mbyBvbiBhIGJhY2tpbmcgc3RvcmUgdGhhdCBo
YXNuJ3QgYWxyZWFkeSBzZXQgaXRzIG93biBkYXRhYmFzZSBpbmZvLgogICAgIEFTU0VSVChtX2Rh
dGFiYXNlSW5mbyk7CiAKLSAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
RGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURC
RGF0YWJhc2VJbmZvPihpbmZvKTsKIH0KIAogSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRl
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5k
ZXguY3BwCmluZGV4IDQ5ZGRjYTZiZDQwZDI5ZDQyZTM4Yjg1MTMxYzg5ZmRmZTdkNDc5MmQuLjg1
OTVkYmI4ZjRhN2VlM2QxOTFlMzFmYjYxMGIwNDk3NWI4NzQ2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcApA
QCAtMTk0LDcgKzE5NCw3IEBAIElEQkVycm9yIE1lbW9yeUluZGV4OjpwdXRJbmRleEtleShjb25z
dCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgY29uc3QgSW5kZXhLZXkmIGluCiAgICAgTE9HKEluZGV4
ZWREQiwgIk1lbW9yeUluZGV4Ojpwcm92aXNpb25hbFB1dEluZGV4S2V5Iik7CiAKICAgICBpZiAo
IW1fcmVjb3JkcykgewotICAgICAgICBtX3JlY29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGV4
VmFsdWVTdG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKKyAgICAgICAgbV9yZWNvcmRzID0gbWFrZVVu
aXF1ZTxJbmRleFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUoKSk7CiAgICAgICAgIG5vdGlmeUN1
cnNvcnNPZkFsbFJlY29yZHNDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC0yNTksNyArMjU5LDcgQEAg
TWVtb3J5SW5kZXhDdXJzb3IqIE1lbW9yeUluZGV4OjptYXliZU9wZW5DdXJzb3IoY29uc3QgSURC
Q3Vyc29ySW5mbyYgaW5mbykKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1lbW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0aGlzLCBpbmZvKTsK
ICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAKaW5kZXggZWQ2ZWJhOTI3ZjFmNGY2YjljMzA2OGY2YjVkODhkZTI5OTcy
NjdlYi4uNWI0NGE3Mzg3OGM5ZmRkN2ExZTA1YTk1Yjc2NTdlYmU2MzYzNTE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0yNTksOCArMjU5LDggQEAgSURCRXJyb3IgTWVtb3J5T2Jq
ZWN0U3RvcmU6OmFkZFJlY29yZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24KIAogICAgIGlmICghbV9rZXlWYWx1ZVN0b3JlKSB7CiAgICAgICAgIEFTU0VSVCghbV9v
cmRlcmVkS2V5cyk7Ci0gICAgICAgIG1fa2V5VmFsdWVTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8
S2V5VmFsdWVNYXA+KCk7Ci0gICAgICAgIG1fb3JkZXJlZEtleXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQktleURhdGFTZXQ+KCk7CisgICAgICAgIG1fa2V5VmFsdWVTdG9yZSA9IG1ha2VVbmlxdWU8
S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG1fb3JkZXJlZEtleXMgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxJREJLZXlEYXRhU2V0PigpOwogICAgIH0KIAogICAgIGF1dG8gbWFw
UmVzdWx0ID0gbV9rZXlWYWx1ZVN0b3JlLT5zZXQoa2V5RGF0YSwgdmFsdWUuZGF0YSgpKTsKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvciogTWVtb3J5T2JqZWN0U3Rv
cmU6Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJDdXJzb3JJbmZvJgogICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0
aGlzLCBpbmZvKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxNZW1v
cnlPYmplY3RTdG9yZUN1cnNvcj4oKnRoaXMsIGluZm8pOwogICAgIHJldHVybiByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IGJmYmQwOWRiYjlhNzFkM2M0MWE5ZGY2YTc3OTRlZWRlNTgxYWJkNzAuLmRhYTRhMTli
ZDgzOTZmMzgxOWU2OWRjOTk1Njc2ZTMzOWVhZGQyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC02MjQsNyArNjI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFi
YXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1bGF0ZUluaXRpYWwK
ICAgICB9CiAKICAgICAvLyBUaGlzIGluaXRpYWwgZGF0YWJhc2UgaW5mbyBtYXRjaGVzIHRoZSBk
ZWZhdWx0IHZhbHVlcyB3ZSBqdXN0IHB1dCBpbnRvIHRoZSBtZXRhZGF0YSBkYXRhYmFzZS4KLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5k
YXRhYmFzZU5hbWUoKSwgMCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZv
PihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0Rh
dGFiYXNlSW5mbygpCkBAIC02NTksNyArNjU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFi
YXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VWZXJzaW9uKTsKKyAg
ICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFz
ZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7CiAKICAgICB7CiAgICAgICAgIFNRTGl0ZVN0YXRlbWVu
dCBzcWwoKm1fc3FsaXRlREIsICJTRUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMsIG1h
eEluZGV4SUQgRlJPTSBPYmplY3RTdG9yZUluZm87Il9zKTsKQEAgLTgyMSw3ICs4MjEsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZv
KElEQkRhdGFiYXNlSW5mbyYgaW5mbwogCiAgICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0
YWJhc2VQYXRoKCk7CiAKLSAgICBtX3NxbGl0ZURCID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVE
YXRhYmFzZT4oKTsKKyAgICBtX3NxbGl0ZURCID0gbWFrZVVuaXF1ZTxTUUxpdGVEYXRhYmFzZT4o
KTsKICAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4oZGJGaWxlbmFtZSkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJG
aWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVEQigpOwpAQCAtOTMx
LDExICs5MzEsMTEgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5z
YWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBlc3RhYmxpc2ggdHJhbnNhY3Rpb24g
aWRlbnRpZmllciB0aGF0IGFscmVhZHkgZXhpc3RzIl9zIH07CiAgICAgfQogCi0gICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rp
b24+KCp0aGlzLCBpbmZvKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxTUUxpdGVJREJUcmFuc2FjdGlvbj4oKnRoaXMsIGluZm8pOwogCiAgICAgYXV0byBlcnJv
ciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmJlZ2luKCptX3NxbGl0ZURCKTsKICAgICBp
ZiAoZXJyb3IuaXNOdWxsKCkgJiYgaW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpW
ZXJzaW9uY2hhbmdlKSB7Ci0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJz
aW9uQ2hhbmdlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX2RhdGFiYXNl
SW5mbyk7CisgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdl
ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX2RhdGFiYXNlSW5mbyk7CiAKICAgICAg
ICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9zcWxpdGVEQiwgIlVQREFURSBJREJEYXRhYmFzZUlu
Zm8gU0VUIHZhbHVlID0gPyB3aGVyZSBrZXkgPSAnRGF0YWJhc2VWZXJzaW9uJzsiX3MpOwogICAg
ICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKQEAgLTI2NjIsNyArMjY2Miw3IEBA
IFNRTGl0ZVN0YXRlbWVudCogU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQo
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpTCiAgICAgfQogCiAgICAgaWYgKG1fc3FsaXRlREIpIHsK
LSAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0YXRlbWVudCk7
CisgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0g
bWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQpOwogICAg
ICAgICBpZiAobV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0tPnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcAppbmRleCBmODQwNWE3OThhMzY4MTBkYzU3NmFmMWU3M2JjYWY1MzEwMjM3YmFmLi5jNmIz
ZmQ5NTNhMGQ1M2FjMTU2OGUyODQ4Y2JjNzhhMTJmMTk1NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWZldGNoTGltaXQg
PSA4OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6
Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURC
Q3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7CisgICAgYXV0byBjdXJzb3IgPSBt
YWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8pOwogCiAgICAgaWYg
KCFjdXJzb3ItPmVzdGFibGlzaFN0YXRlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTU5LDcgKzU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRl
SURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGkKIAogc3RkOjp1bmlxdWVf
cHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdT
dG9yZUN1cnNvcihTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IHVpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IHVpbnQ2NF90IGluZGV4SUQsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNR
TGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIHJhbmdl
KTsKKyAgICBhdXRvIGN1cnNvciA9IG1ha2VVbmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2Fj
dGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFuZ2UpOwogCiAgICAgaWYgKCFjdXJzb3It
PmVzdGFibGlzaFN0YXRlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5OSw3
ICsxOTksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KGNv
bnN0IFN0cmluZyYgc3FsKQogICAgIEFTU0VSVCghbV9jdXJyZW50VXBwZXJLZXkuaXNOdWxsKCkp
OwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpKTsKIAotICAg
IG1fc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fdHJhbnNh
Y3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7CisgICAgbV9zdGF0
ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV90cmFuc2FjdGlvbi0+c3FsaXRl
VHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsKIAogICAgIGlmIChtX3N0YXRlbWVudC0+
cHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBj
cmVhdGUgY3Vyc29yIHN0YXRlbWVudCAocHJlcGFyZS9pZCkgLSAnJXMnIiwgbV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CkBAIC00
NjQsNyArNDY0LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdXJz
b3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlBbmRWYWx1
ZSkKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBi
bG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVl
ID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEuZGF0YSgpLCBrZXlEYXRh
LnNpemUoKSwgcmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5KSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgdmFsdWUgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxl
IGFkdmFuY2luZyBpbmRleCBjdXJzb3IiKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBTUUxpdGVJREJD
dXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNv
cmQoU1FMaXRlQ3VycwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewogICAg
ICAgICAgICAgb2JqZWN0U3RvcmVTdGF0ZW1lbnQuZ2V0Q29sdW1uQmxvYkFzVmVjdG9yKDAsIGtl
eURhdGEpOwotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRh
KSkpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFs
dWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSkpOwogICAg
ICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgLy8g
VGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0byByZXRyaWV2ZSBo
YXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIG9iamVjdCBzdG9yZS4KICAgICAgICAgICAgIC8vIFNr
aXAgb3ZlciBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGE2YTNjNWZm
ZjMzODBjMjVlZjczNjFlNjg4YmVmMzZjMDYxNWZjODMuLmQyMTJkZTJiNmI4OGFmZmUwYTM1YjBm
ZDBmZDMzZmM4NjdjZWNiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcApAQCAt
NTgsNyArNTgsNyBAQCBJREJFcnJvciBTUUxpdGVJREJUcmFuc2FjdGlvbjo6YmVnaW4oU1FMaXRl
RGF0YWJhc2UmIGRhdGFiYXNlKQogewogICAgIEFTU0VSVCghbV9zcWxpdGVUcmFuc2FjdGlvbik7
CiAKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVUcmFu
c2FjdGlvbj4oZGF0YWJhc2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpS
ZWFkb25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRlVHJh
bnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6
UmVhZG9ubHkpOwogICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24tPmJlZ2luKCk7CiAKICAgICBpZiAo
bV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKaW5kZXggNzMwNDk3NDQyMGZmNDZmZGYyZWE5Njc5YjZkNWI1YjdlNjliZmRlYy4uNTdiNzdj
MDEyNThmZDVkNDlmNzA1OGZlYmJkNTg1Mzc0M2MyZGI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVs
ZXRlQmFja2luZ1N0b3JlKHVpbnQ2NF90IGRlbGV0ZWRWZXJzaW9uKQogICAgIC8vIHdlIHdvbid0
IGhhdmUgYSBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvLiBJbiB0aGF0IGNhc2UsIHdl
J2xsIG1hbnVmYWN0dXJlIG9uZSB1c2luZyB0aGUKICAgICAvLyBwYXNzZWQgaW4gZGVsZXRlZFZl
cnNpb24gYXJndW1lbnQuCiAgICAgaWYgKCFtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZv
KQotICAgICAgICBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgZGVsZXRl
ZFZlcnNpb24pOworICAgICAgICBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvID0gbWFr
ZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgZGVs
ZXRlZFZlcnNpb24pOwogCiAgICAgaWYgKG1fY3VycmVudE9wZW5EQlJlcXVlc3QpIHsKICAgICAg
ICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+bm90aWZ5RGlkRGVsZXRlRGF0YWJhc2UoKm1fbW9z
dFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8pOwpAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJbmZv
JiBpbmZvLCBjb25zdCBJCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5k
ZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlIik7
CiAgICAgCi0gICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CisgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CiAgICAgbV9iYWNraW5nU3RvcmVPcGVuRXJyb3IgPSBlcnJvcjsKIAogICAg
IEFTU0VSVChtX2lzT3BlbmluZ0JhY2tpbmdTdG9yZSk7CkBAIC0xNzQ5LDcgKzE3NDksNyBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlvbih1aW50NjRf
dCBjYWxsYmFja0lkZW50aWZpZXIsCiAgICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbiA9PSB0cmFuc2FjdGlvbik7CiAgICAgICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdl
RGF0YWJhc2VDb25uZWN0aW9uIHx8ICZtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+ZGF0YWJh
c2VDb25uZWN0aW9uKCkgPT0gbV92ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25uZWN0aW9uKTsKICAg
ICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNl
SW5mbygpKTsKLSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oKm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNl
SW5mbygpKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oKm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygp
KTsKICAgICB9CiAKICAgICBJREJFcnJvciByZXN1bHQgPSB0cmFuc2FjdGlvbi0+c3RhdGUoKSA9
PSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRlZCA/IHRyYW5zYWN0
aW9uLT5yZXN1bHQoKSA6IGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24uY3BwCmluZGV4IGYxN2E0ZTU1MjNmYjVmNjFiMDI2YTA5MTQ3ZjgxNDFkNWI2NDEz
OWEuLjg1NDBjYTc4NmQ1NzM1OGQ5ODJjNzNlNjQ2MGY3ZjhmMGE4ODM0NTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTUxLDcgKzUxLDcgQEAg
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bihVbmlxdWVJREJEYXRhYmFzZUNvbm4KICAgICBBU1NFUlQoZGF0YWJhc2UpOwogCiAgICAgaWYg
KG1fdHJhbnNhY3Rpb25JbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25j
aGFuZ2UpCi0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmluZm8oKSk7CisgICAgICAgIG1fb3JpZ2luYWxE
YXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmluZm8o
KSk7CiAKICAgICBpZiAoYXV0byogc2VydmVyID0gbV9kYXRhYmFzZUNvbm5lY3Rpb24tPnNlcnZl
cigpKQogICAgICAgICBzZXJ2ZXItPnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3RE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1
ZXN0RGF0YS5jcHAKaW5kZXggYjEwZDg0MDk5YjI1MjhlNmY3M2MyOGIxNTA0YThhOTMyNGQwYjIx
YS4uMjE2NDE2YWZhMTFjZjI1NWQzNmRlZmIzZWZmMzZlZmFmMTk1NzEwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVz
dERhdGEuY3BwCkBAIC00MCw3ICs0MCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0
YSgpCiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByb3h5LCBjb25zdCBJREJPcGVuREJSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIDogbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9u
UHJveHkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1fcmVxdWVzdElkZW50
aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGNvbm5lY3Rpb25Q
cm94eSwgcmVxdWVzdCkpCisgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQogICAgICwgbV9k
YXRhYmFzZUlkZW50aWZpZXIocmVxdWVzdC5kYXRhYmFzZUlkZW50aWZpZXIoKSkKICAgICAsIG1f
cmVxdWVzdGVkVmVyc2lvbihyZXF1ZXN0LnZlcnNpb24oKSkKICAgICAsIG1fcmVxdWVzdFR5cGUo
cmVxdWVzdC5yZXF1ZXN0VHlwZSgpKQpAQCAtNDksOCArNDksOCBAQCBJREJSZXF1ZXN0RGF0YTo6
SURCUmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5l
Y3Rpb25QcgogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgIDogbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcihvcGVyYXRpb24udHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLmNvbm5lY3Rpb25Qcm94
eSgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlm
aWVyKHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24uaWRl
bnRpZmllcigpKSkKLSAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkpKQorICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCisgICAgLCBtX3RyYW5zYWN0aW9uSWRl
bnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpKSkKICAgICAsIG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyKG9wZXJh
dGlvbi5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSkKICAgICAsIG1faW5kZXhJZGVudGlmaWVyKG9w
ZXJhdGlvbi5pbmRleElkZW50aWZpZXIoKSkKIHsKQEAgLTU4LDcgKzU4LDcgQEAgSURCUmVxdWVz
dERhdGE6OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXJhdGlvbikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSBvcGVyYXRpb24uaW5kZXhSZWNv
cmRUeXBlKCk7CiAKICAgICBpZiAob3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSkKLSAgICAg
ICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50
aWZpZXI+KCpvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jdXJzb3JJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvcGVyYXRpb24u
Y3Vyc29ySWRlbnRpZmllcigpKTsKIH0KIAogSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRh
KGNvbnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKQEAgLTcxLDExICs3MSwxMSBAQCBJREJSZXF1
ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEmIG90aGVyKQogICAg
ICwgbV9yZXF1ZXN0VHlwZShvdGhlci5tX3JlcXVlc3RUeXBlKQogewogICAgIGlmIChvdGhlci5t
X3JlcXVlc3RJZGVudGlmaWVyKQotICAgICAgICBtX3JlcXVlc3RJZGVudGlmaWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3JlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICAgICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgaWYgKG90aGVy
Lm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKQotICAgICAgICBtX3RyYW5zYWN0aW9uSWRlbnRpZmll
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV90cmFu
c2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBtX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV90cmFuc2FjdGlvbklkZW50
aWZpZXIpOwogICAgIGlmIChvdGhlci5tX2N1cnNvcklkZW50aWZpZXIpCi0gICAgICAgIG1fY3Vy
c29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigq
b3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0g
bWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1cnNvcklkZW50aWZp
ZXIpOwogfQogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVz
dERhdGEmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTEwMiwxMSArMTAyLDExIEBAIHZvaWQg
SURCUmVxdWVzdERhdGE6Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXF1ZXN0RGF0YSYgc291cmNl
LCBJREJSZXF1ZXN0RGF0YSYKICAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUlkZW50aWZp
ZXIgPSBzb3VyY2UubV9kYXRhYmFzZUlkZW50aWZpZXItPmlzb2xhdGVkQ29weSgpOwogCiAgICAg
aWYgKHNvdXJjZS5tX3JlcXVlc3RJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3Jl
cXVlc3RJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fcmVx
dWVzdElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJj
ZS5tX3JlcXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAoc291cmNlLm1fdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fdHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90cmFuc2FjdGlvbklkZW50aWZp
ZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0
aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKHNvdXJjZS5tX2N1cnNvcklkZW50aWZpZXIpCi0gICAg
ICAgIGRlc3RpbmF0aW9uLm1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcik7CisgICAgICAg
IGRlc3RpbmF0aW9uLm1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAKIHVpbnQ2NF90IElE
QlJlcXVlc3REYXRhOjpzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0
RGF0YS5oCmluZGV4IDQ1Y2ZmYWVhNjAzYTUzYjU5OTA0YzhiMTRiN2ExZGVmN2QyNWYzMTAuLjQw
OGI0ZTQ2Mjg3MzM3YjlhYzM0NGFmYmY0NjkxNTg2OGU4MGYzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5o
CkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3Qp
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpv
YmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fcmVx
dWVzdElkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgYm9v
bCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gV1RG
TW92ZShvYmplY3QpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50
aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3Qg
PSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
cmVxdWVzdC5tX2N1cnNvcklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0
YS5jcHAKaW5kZXggYTg5NDU0ZTZlNjNmNmViN2NiNTAzOGI5YzkzMmZhMjE4NjMzZWRjNi4uNGNi
ZDVkOWJkZjBhODUyM2JmN2Y1MmFjNWJjNWNiNGI3ZWQxMDQ3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNw
cApAQCAtNTcsMTUgKzU3LDE1IEBAIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3Qg
SURCUmVzdWx0RGF0YSYgb3RoZXIpCiAgICAgLCBtX3Jlc3VsdEludGVnZXIob3RoZXIubV9yZXN1
bHRJbnRlZ2VyKQogewogICAgIGlmIChvdGhlci5tX2RhdGFiYXNlSW5mbykKLSAgICAgICAgbV9k
YXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm90aGVyLm1f
ZGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oKm90aGVyLm1fZGF0YWJhc2VJbmZvKTsKICAgICBpZiAob3RoZXIubV90cmFu
c2FjdGlvbkluZm8pCi0gICAgICAgIG1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpvdGhlci5tX3RyYW5zYWN0aW9uSW5mbyk7CisgICAgICAg
IG1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpvdGhl
ci5tX3RyYW5zYWN0aW9uSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fcmVzdWx0S2V5KQotICAgICAg
ICBtX3Jlc3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKm90aGVyLm1fcmVz
dWx0S2V5KTsKKyAgICAgICAgbV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCpv
dGhlci5tX3Jlc3VsdEtleSk7CiAgICAgaWYgKG90aGVyLm1fZ2V0UmVzdWx0KQotICAgICAgICBt
X2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqb3RoZXIubV9nZXRS
ZXN1bHQpOworICAgICAgICBtX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigq
b3RoZXIubV9nZXRSZXN1bHQpOwogICAgIGlmIChvdGhlci5tX2dldEFsbFJlc3VsdCkKLSAgICAg
ICAgbV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKm90
aGVyLm1fZ2V0QWxsUmVzdWx0KTsKKyAgICAgICAgbV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVl
PElEQkdldEFsbFJlc3VsdD4oKm90aGVyLm1fZ2V0QWxsUmVzdWx0KTsKIH0KIAogSURCUmVzdWx0
RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiB0aGF0LCBJc29sYXRlZENv
cHlUYWcpCkBAIC04NywxNSArODcsMTUgQEAgdm9pZCBJREJSZXN1bHREYXRhOjppc29sYXRlZENv
cHkoY29uc3QgSURCUmVzdWx0RGF0YSYgc291cmNlLCBJREJSZXN1bHREYXRhJiBkZXMKICAgICBk
ZXN0aW5hdGlvbi5tX3Jlc3VsdEludGVnZXIgPSBzb3VyY2UubV9yZXN1bHRJbnRlZ2VyOwogCiAg
ICAgaWYgKHNvdXJjZS5tX2RhdGFiYXNlSW5mbykKLSAgICAgICAgZGVzdGluYXRpb24ubV9kYXRh
YmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2Rh
dGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0
aW5hdGlvbi5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291
cmNlLm1fZGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CiAgICAg
aWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSW5mbykKLSAgICAgICAgZGVzdGluYXRpb24ubV90cmFu
c2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJj
ZS5tX3RyYW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwor
ICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJh
bnNhY3Rpb25JbmZvPigqc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvLCBJREJUcmFuc2FjdGlvbklu
Zm86Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX3Jlc3VsdEtleSkKLSAgICAgICAg
ZGVzdGluYXRpb24ubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCpz
b3VyY2UubV9yZXN1bHRLZXksIElEQktleURhdGE6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1f
cmVzdWx0S2V5LCBJREJLZXlEYXRhOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV9n
ZXRSZXN1bHQpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2UubV9nZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNv
bGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVl
PElEQkdldFJlc3VsdD4oKnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0UmVzdWx0OjpJc29sYXRl
ZENvcHkpOwogICAgIGlmIChzb3VyY2UubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIGRlc3RpbmF0
aW9uLm1fZ2V0QWxsUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpz
b3VyY2UubV9nZXRBbGxSZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKKyAg
ICAgICAgZGVzdGluYXRpb24ubV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldEFsbFJl
c3VsdD4oKnNvdXJjZS5tX2dldEFsbFJlc3VsdCwgSURCR2V0QWxsUmVzdWx0OjpJc29sYXRlZENv
cHkpOwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmVycm9yKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJv
cikKQEAgLTExMSw3ICsxMTEsNyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5E
YXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZQogICAgIElEQlJl
c3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1bHQubV90eXBl
ID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlU3VjY2VzczsKICAgICByZXN1bHQubV9kYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCk7Ci0gICAg
cmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUlu
Zm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlvbi5kYXRhYmFzZSgpLT5p
bmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyMSwxNSArMTIxLDE1IEBAIElE
QlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyByZXF1ZXN0
SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRUeXBlOjpPcGVuRGF0
YWJhc2VVcGdyYWRlTmVlZGVkOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIgPSB0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5pZGVudGlmaWVyKCk7Ci0g
ICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCktPmluZm8oKSk7
Ci0gICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFu
c2FjdGlvbkluZm8+KHRyYW5zYWN0aW9uLmluZm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJ
bmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29u
bmVjdGlvbigpLmRhdGFiYXNlKCktPmluZm8oKSk7CisgICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25J
bmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KHRyYW5zYWN0aW9uLmluZm8oKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpk
ZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogewogICAgIElEQlJlc3Vs
dERhdGEgcmVzdWx0IHtJREJSZXN1bHRUeXBlOjpEZWxldGVEYXRhYmFzZVN1Y2Nlc3MsIHJlcXVl
c3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC0xNzEsMjEgKzE3MSwyMSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OnJl
bmFtZUluZGV4U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcQogSURCUmVz
dWx0RGF0YSBJREJSZXN1bHREYXRhOjpwdXRPckFkZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYgcmVzdWx0S2V5
KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6UHV0T3JBZGRT
dWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKKyAgICByZXN1bHQubV9yZXN1
bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KHJlc3VsdEtleSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRSZWNvcmRTdWNjZXNz
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElE
QkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURC
UmVzdWx0VHlwZTo6R2V0UmVjb3JkU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICBy
ZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVz
dWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4o
Z2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJl
c3VsdERhdGE6OmdldEFsbFJlY29yZHNTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlc3VsdCYgZ2V0QWxsUmVzdWx0
KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6R2V0QWxsUmVj
b3Jkc1N1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0QWxsUmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KGdldEFsbFJlc3VsdCk7Cisg
ICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KGdl
dEFsbFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjA0LDE0ICsyMDQsMTQg
QEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpkZWxldGVSZWNvcmRTdWNjZXNzKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmUKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6
b3BlbkN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0
RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2VzcywgcmVxdWVzdElk
ZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5p
cXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJ
REJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJlc3Vs
dCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlw
ZTo6SXRlcmF0ZUN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0
Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7
CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKaW5kZXggNzE3YjNl
MmRlNTNiMzUzZmViNmRkNzU1MDBhMGU1ZTY4Yzk0N2EzZi4uNjIwNjJhMWUyOTVmN2I1OTgxNTg5
NWI1N2JlYzAwOGU1YjE4NzZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCkBAIC0xODQsNyArMTg0LDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0
RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVj
dCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewot
ICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigp
OworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOwog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gV1RGTW92ZShv
YmplY3QpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAg
IHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIwMiw3ICsy
MDIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJ
REJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2Jq
ZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRh
PigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKTsKICAg
ICAgICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CiAgICAgICAgIGRlY29kZXIgPj4g
b3B0aW9uYWw7CiAgICAgICAgIGlmICghb3B0aW9uYWwpCkBAIC0yMTQsNyArMjE0LDcgQEAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0
YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAg
ICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PigpOworICAg
ICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PigpOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwpAQCAt
MjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3Vs
dERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlm
IChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkdldEFsbFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkdl
dEFsbFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2dldEFsbFJl
c3VsdCA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAKaW5kZXgg
OTgzYzFjMTFjOTliNDViNmNlNTQ0ZGZjYWMwMzdlNGM3MzcyOTVjMy4uNGZiOTk5MTlmNjdkNWY3
YzlhYmMxMDllMmUzMDAwY2NlNGM0NDA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvIElEQlRyYW5zYWN0aW9uSW5mbzo6
dmVyc2lvbkNoYW5nZShjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3QKICAgICBJREJUcmFuc2Fj
dGlvbkluZm8gcmVzdWx0KChJREJSZXNvdXJjZUlkZW50aWZpZXIoY29ubmVjdGlvbikpKTsKICAg
ICByZXN1bHQubV9tb2RlID0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlOwogICAg
IHJlc3VsdC5tX25ld1ZlcnNpb24gPSBuZXdWZXJzaW9uOwotICAgIHJlc3VsdC5tX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG9yaWdpbmFs
RGF0YWJhc2VJbmZvKTsKKyAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VV
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtNjcsNyArNjcsNyBAQCBJREJUcmFuc2FjdGlvbkluZm86OklEQlRy
YW5zYWN0aW9uSW5mbyhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgLCBtX29i
amVjdFN0b3JlcyhpbmZvLm1fb2JqZWN0U3RvcmVzKQogewogICAgIGlmIChpbmZvLm1fb3JpZ2lu
YWxEYXRhYmFzZUluZm8pCi0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKmluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyk7
CisgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oKmluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyk7CiB9CiAKIElEQlRyYW5zYWN0aW9u
SW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgdGhhdCwg
SXNvbGF0ZWRDb3B5VGFnKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uSW5m
bzo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgc291cmNlLCBJREJUcmFu
cwogICAgICAgICBkZXN0aW5hdGlvbi5tX29iamVjdFN0b3Jlcy51bmNoZWNrZWRBcHBlbmQob2Jq
ZWN0U3RvcmUuaXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgaWYgKHNvdXJjZS5tX29yaWdpbmFsRGF0
YWJhc2VJbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9vcmlnaW5hbERhdGFi
YXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5h
dGlvbi5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCpzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRl
ZENvcHkpOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCmlu
ZGV4IDkzMGQ4MDIzNjE4MjMyYWJmNmMwODFkZjIxMjk1OGZmNjJhNTU1ZWQuLjdiOTQ3N2U4ZWM1
NTRjOTEzZDJhNDhiZTU1OGUxNjMzZDkzZmNlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgK
QEAgLTExOSw3ICsxMTksNyBAQCBib29sIElEQlRyYW5zYWN0aW9uSW5mbzo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
RGF0YWJhc2VJbmZvPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0gbWFr
ZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Km9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGluZm8ubV9vcmln
aW5hbERhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHAKaW5kZXggODdiMWFkY2Q5NjY2MjA2ZWM5NzE2NjAzNjJiNDBlNWFkN2Q4MDFkMS4uYzk2
ODk0NDRmZDIyNDAyY2VkMjExM2IzYmZhMGI5YTUyNmM2NzNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPEluUHJvY2Vzc0lEQlNlcnZlcj4gSW5Q
cm9jZXNzSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb24KIFN0
b3JhZ2VRdW90YU1hbmFnZXIqIEluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFNYW5hZ2VyKGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVybiBtX3F1b3RhTWFuYWdlcnMuZW5z
dXJlKG9yaWdpbiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdl
UXVvdGFNYW5hZ2VyPihTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10odWlu
dDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFz
ZSwgYXV0byBjYWxsYmFjaykgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTdG9yYWdlUXVv
dGFNYW5hZ2VyPihTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEoKSwgW10odWludDY0
X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwg
YXV0byBjYWxsYmFjaykgewogICAgICAgICAgICAgY2FsbGJhY2socXVvdGEgKyBjdXJyZW50U3Bh
Y2UgKyBzcGFjZUluY3JlYXNlKTsKICAgICAgICAgfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxp
dGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCBmODcyNTc0ZTg1YzI0MDg3NzJiMWQxMWEyZThiY2I2ZGQ2MGRhMjk3Li5hMzFiYWRiNTRhYzk4
MWUwZTNiYWRhZmUyMDk4NzgyOWQzZjc0MDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1l
ZGlhQ2FwYWJpbGl0aWVzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBOYXZpZ2F0b3JNZWRpYUNhcGFi
aWxpdGllcyYgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM6OmZyb20oTmF2aWdhdG9yJiBuYXZp
Z2F0bwogewogICAgIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMqPihTdXBwbGVtZW50PE5hdmlnYXRv
cj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxl
bWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5h
dmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzPigpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0
b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggNTBkMGJiMGIxZWQ1M2E0MzI0NThkOWZiNzEz
NTcwYWUwZWNhMGQwNi4uYjk3NDM0YzRlNjI0NWQ3M2NjZjJkNjI1YTBhMWIwM2UxMjkwY2JkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFdl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3Rh
dGUoY29uc3QgU3RyaW5nJgogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2smIFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQogewogICAgIGlmICghbV9waWNrZXJPdmVycmlk
ZSkKLSAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKKyAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9
IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKIAogICAg
IHJldHVybiAqbV9waWNrZXJPdmVycmlkZS5nZXQoKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB1
aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNs
aWVudChXZWJNZWRpYVNlc3Npb25NYQogCiAgICAgTE9HKE1lZGlhLCAiV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoJXAgKyAlbGx1KSIsICZjbGll
bnQsIGNvbnRleHRJZCk7CiAKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOworICAgIG1fY2xpZW50U3RhdGUu
YXBwZW5kKG1ha2VVbmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CiAKICAg
ICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3BsYXliYWNrVGFyZ2V0
KQogICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1cmF0aW9uVGFzayB8
IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGQ0MTdhMTIxNjkxMTEy
MTVkNTQyMjkxZTAzYzU5ZDVkNmU3ZWIzZjQuLjdjYmM2YTEzMzUxZTBkMzJjZTI1NWE5YmFkY2I5
NzQ0ZGFmNGQ0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xNzgsOSArMTc4LDkgQEAgTWVkaWFUaW1lIE1lZGlhU291
cmNlOjpjdXJyZW50VGltZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogewogICAgIGlmIChtX2J1ZmZlcmVk
ICYmIG1fYWN0aXZlU291cmNlQnVmZmVycy0+bGVuZ3RoKCkgJiYgc3RkOjphbGxfb2YobV9hY3Rp
dmVTb3VyY2VCdWZmZXJzLT5iZWdpbigpLCBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmVuZCgpLCBb
XShhdXRvJiBidWZmZXIpIHsgcmV0dXJuICFidWZmZXItPmlzQnVmZmVyZWREaXJ0eSgpOyB9KSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9i
dWZmZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
Km1fYnVmZmVyZWQpOwogCi0gICAgbV9idWZmZXJlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpOworICAgIG1fYnVmZmVyZWQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oKTsKICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6ICptX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnMpCiAgICAgICAgIHNvdXJjZUJ1ZmZlci0+c2V0QnVmZmVyZWREaXJ0eShmYWxzZSk7
CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogCiAgICAgLy8gMS4gSWYgYWN0aXZlU291
cmNlQnVmZmVycy5sZW5ndGggZXF1YWxzIDAgdGhlbiByZXR1cm4gYW4gZW1wdHkgVGltZVJhbmdl
cyBvYmplY3QgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmIChhY3RpdmVSYW5nZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyAyLiBMZXQgYWN0aXZlIHJhbmdlcyBiZSB0
aGUgcmFuZ2VzIHJldHVybmVkIGJ5IGJ1ZmZlcmVkIGZvciBlYWNoIFNvdXJjZUJ1ZmZlciBvYmpl
Y3QgaW4gYWN0aXZlU291cmNlQnVmZmVycy4KICAgICAvLyAzLiBMZXQgaGlnaGVzdCBlbmQgdGlt
ZSBiZSB0aGUgbGFyZ2VzdCByYW5nZSBlbmQgdGltZSBpbiB0aGUgYWN0aXZlIHJhbmdlcy4KQEAg
LTIwMyw3ICsyMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRp
YVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogCiAgICAgLy8gUmV0dXJuIGFuIGVtcHR5IHJhbmdl
IGlmIGFsbCByYW5nZXMgYXJlIGVtcHR5LgogICAgIGlmICghaGlnaGVzdEVuZFRpbWUpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVy
ZWQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1
ZmZlcmVkKTsKIAogICAgIC8vIDQuIExldCBpbnRlcnNlY3Rpb24gcmFuZ2VzIGVxdWFsIGEgVGlt
ZVJhbmdlIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdlIGZyb20gMCB0byBoaWdoZXN0
IGVuZCB0aW1lLgogICAgIG1fYnVmZmVyZWQtPmFkZChNZWRpYVRpbWU6Onplcm9UaW1lKCksIGhp
Z2hlc3RFbmRUaW1lKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogICAgICAgICBtX2J1
ZmZlcmVkLT5pbnRlcnNlY3RXaXRoKHNvdXJjZVJhbmdlcyk7CiAgICAgfQogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiB9CiAK
IHZvaWQgTWVkaWFTb3VyY2U6OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQpAQCAt
MzQ0LDcgKzM0NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXRMaXZlU2Vl
a2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCiAKICAgICAvLyBTZXQgbGl2ZSBz
ZWVrYWJsZSByYW5nZSB0byBiZSBhIG5ldyBub3JtYWxpemVkIFRpbWVSYW5nZXMgb2JqZWN0IGNv
bnRhaW5pbmcgYSBzaW5nbGUgcmFuZ2UKICAgICAvLyB3aG9zZSBzdGFydCBwb3NpdGlvbiBpcyBz
dGFydCBhbmQgZW5kIHBvc2l0aW9uIGlzIGVuZC4KLSAgICBtX2xpdmVTZWVrYWJsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3Vi
bGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7CisgICAgbV9saXZl
U2Vla2FibGUgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCkpOwog
CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcAppbmRleCBlNDE4Mjc4
MzhkNjJjYTM4ZmMzYmYzYmU3OGY4ZjRhYThhZTUyNTk2Li43YjM1OGY1ZTBkZTQyZmIyMjY4ZDM2
OTAzZTU4ZGI1ZWI3OGU5MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9t
KE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogc3Vw
cGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlhRGV2aWNlcyo+KFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAo
IXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvck1lZGlhRGV2aWNlcz4o
bmF2aWdhdG9yLT53aW5kb3coKSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcAppbmRleCA4
ZDdlNjNjYzYwNmQ2ZGExOWZiZGIxMmRlNTRmYjg1NWZkZjYyYzk5Li4xNGRmMTE2MWRhZTY4Y2M0
NmNiNDllYWFlMjFmNWVmOTg5ZTJhY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgVXNlck1lZGlhQ29udHJvbGxlcjo6flVzZXJNZWRpYUNvbnRyb2xsZXIoKQogCiB2
b2lkIHByb3ZpZGVVc2VyTWVkaWFUbyhQYWdlKiBwYWdlLCBVc2VyTWVkaWFDbGllbnQqIGNsaWVu
dCkKIHsKLSAgICBVc2VyTWVkaWFDb250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgVXNlck1lZGlh
Q29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFD
b250cm9sbGVyPihjbGllbnQpKTsKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyOjpwcm92aWRlVG8o
cGFnZSwgVXNlck1lZGlhQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxV
c2VyTWVkaWFDb250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlz
U2VjdXJlKERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGFhYTQwMDAyMDczNjVm
ZmNiZTUyODEyOGUyOGNlMDJmNmM2MDdjZGQuLmM5ODViYzE5YTMxZDAxMTQ1NjVhYmFiYTVmMDYw
ZWU1MGRhNjExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCBSZWY8UlRDRGF0YUNoYW5uZWxFdmVudD4g
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjaGFubmVsRXZlbnQoU2NyaXB0RXhlY3V0aQog
ICAgIGluaXQubmVnb3RpYXRlZCA9IGRhdGFDaGFubmVsLT5uZWdvdGlhdGVkKCk7CiAgICAgaW5p
dC5pZCA9IGRhdGFDaGFubmVsLT5pZCgpOwogCi0gICAgYXV0byBoYW5kbGVyID0gIHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGRhdGFDaGFubmVs
KSk7CisgICAgYXV0byBoYW5kbGVyID0gIG1ha2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyPihXVEZNb3ZlKGRhdGFDaGFubmVsKSk7CiAgICAgYXV0byBjaGFubmVsID0gUlRDRGF0
YUNoYW5uZWw6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKGhhbmRsZXIpLCBmcm9tU3RkU3RyaW5n
KGxhYmVsKSwgV1RGTW92ZShpbml0KSk7CiAKICAgICByZXR1cm4gUlRDRGF0YUNoYW5uZWxFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhY2hhbm5lbEV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUoY2hhbm5lbCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBkZWYxZjkxZWVlOWVk
NmVjNzhkMTNjNjllYzQzNDhmMGFhNjhkMzY3Li5kMWE3NGI4NTcxYmVlN2VlNWU5YzMxNjJlY2Ey
ZjRkNmZmNDFlNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6YWRk
UmVtb3RlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVjZWl2CiAgICAgfQog
ICAgIH0KIAotICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOworICAgIHJlY2Vp
dmVyLT5zZXRCYWNrZW5kKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihX
VEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOwogICAgIGF1dG8mIHRyYWNrID0gcmVjZWl2ZXItPnRyYWNr
KCk7CiAgICAgYWRkUGVuZGluZ1RyYWNrRXZlbnQocmVjZWl2ZXIucmVsZWFzZU5vbk51bGwoKSwg
dHJhY2ssIHJ0Y1N0cmVhbXMsIG51bGxwdHIpOwogfQpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGVlckNvbm5lY3Rp
b25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
UnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVt
b3RlVHJhbnNjZWl2ZXIobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+
KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
IH0KIH0KIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
bmV3VHJhbnNjZWl2ZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjCiAgICAg
aWYgKCFzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG5ld1RyYW5zY2VpdmVy
ID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNj
ZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8mIG5ld1RyYW5zY2Vp
dmVyID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIobWFrZVVu
aXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2
ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgYWRkUGVuZGluZ1RyYWNrRXZl
bnQobWFrZVJlZihuZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpKSwgbmV3VHJhbnNjZWl2ZXIucmVj
ZWl2ZXIoKS50cmFjaygpLCBydGNSZWNlaXZlci0+c3RyZWFtcygpLCBtYWtlUmVmKG5ld1RyYW5z
Y2VpdmVyKSk7CiB9CkBAIC01MzQsNyArNTM0LDcgQEAgT3B0aW9uYWw8TGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6QmFja2VuZHM+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVRyYW5zY2UK
ICAgICBpZiAoIXJlc3VsdC5vaygpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgYXV0byB0cmFuc2NlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92ZVZhbHVlKCkpOworICAgIGF1dG8gdHJhbnNjZWl2ZXIg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1vdmVW
YWx1ZSgpKTsKICAgICByZXR1cm4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6QmFja2VuZHMgeyB0
cmFuc2NlaXZlci0+Y3JlYXRlU2VuZGVyQmFja2VuZChtX3BlZXJDb25uZWN0aW9uQmFja2VuZCwg
V1RGTW92ZShzb3VyY2UpKSwgdHJhbnNjZWl2ZXItPmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpLCBX
VEZNb3ZlKHRyYW5zY2VpdmVyKSB9OwogfQogCkBAIC01ODUsNyArNTg1LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4gTGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6dHJhbnNjZWkKIHsKICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVyIDogbV9iYWNrZW5k
LT5HZXRUcmFuc2NlaXZlcnMoKSkgewogICAgICAgICBpZiAodHJhbnNjZWl2ZXItPnNlbmRlcigp
LmdldCgpID09IGJhY2tlbmQucnRjU2VuZGVyKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2NlaXZlcikpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
PihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2NlaXZlckludGVyZmFjZT4odHJh
bnNjZWl2ZXIpKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC02NTQsNyArNjU0
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6Y3JlYXRlRGF0YUNoYW5uZWwKIHsKICAgICBhdXRvIGluaXQgPSBMaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OmZyb21SVENEYXRhQ2hhbm5lbEluaXQob3B0aW9ucyk7CiAg
ICAgYXV0byBjaGFubmVsID0gbV9iYWNrZW5kLT5DcmVhdGVEYXRhQ2hhbm5lbChsYWJlbC51dGY4
KCkuZGF0YSgpLCAmaW5pdCk7Ci0gICAgcmV0dXJuIGNoYW5uZWwgPyBzdGQ6Om1ha2VfdW5pcXVl
PExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFubmVsKSkgOiBudWxscHRy
OworICAgIHJldHVybiBjaGFubmVsID8gbWFrZVVuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBMaWJXZWJSVENN
ZWRpYUVuZHBvaW50OjpPbkRhdGFDaGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkRh
dGFDaGFubmVsSW50ZXJmYWNlPiBkYXRhQ2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIwN2YxNWU2NDU3Yjlk
ZmNhYzFjMzM5ZWEzOWZlYTFkNzc4NTlkOGIuLmZjOTFjY2QwYmJkMWZkYmJhNzY0MmU3MDRmMzdm
ZTg1Y2M3MmZkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gY3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZQogCiAgICAgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5zZXRFbmFibGVXZWJSVENFbmNy
eXB0aW9uKHBhZ2UtPnNldHRpbmdzKCkud2ViUlRDRW5jcnlwdGlvbkVuYWJsZWQoKSk7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+
KHBlZXJDb25uZWN0aW9uLCBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+KHBlZXJDb25uZWN0aW9u
LCBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpKTsKIH0KIAogQ3JlYXRlUGVlckNvbm5lY3Rpb25C
YWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOwpAQCAtMzExLDcgKzMxMSw3IEBAIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OnZpCiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNy
ZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3Jl
YXRlUmVjZWl2ZXJGb3JTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAKLSAgICBh
dXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRv
IHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBTZW5kZXI6OmNy
ZWF0ZSgqdGhpcywgInZpZGVvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpLCByZWNl
aXZlci5jb3B5UmVmKCksIG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNhYmxlU2VuZGlu
Z0RpcmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoV1RGTW92
ZSh0cmFuc2NlaXZlcikpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6QXVkaW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmF1CiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0
ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRl
UmVjZWl2ZXJGb3JTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAKLSAgICBhdXRv
IHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvIHRy
YW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBTZW5kZXI6OmNyZWF0
ZSgqdGhpcywgImF1ZGlvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpLCByZWNlaXZl
ci5jb3B5UmVmKCksIG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNhYmxlU2VuZGluZ0Rp
cmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoV1RGTW92ZSh0
cmFuc2NlaXZlcikpOwpAQCAtNDAwLDcgKzQwMCw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFJU
Q1J0cFNlbmRlcj4gZmluZEV4aXN0aW5nU2VuZGVyKGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRw
CiBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgVmVjdG9yPFN0cmluZz4m
JiBtZWRpYVN0cmVhbUlkcykKIHsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkgewotICAgICAgICBhdXRv
IHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAg
IGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soKnNlbmRlckJhY2tlbmQsIHRyYWNrLCBtZWRpYVN0
cmVhbUlkcykpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVW5h
YmxlIHRvIGFkZCB0cmFjayJfcyB9OwogCkBAIC00MzgsNyArNDM4LDcgQEAgRXhjZXB0aW9uT3I8
UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJh
Y2soTWVkaWFTdHIKICAgICAgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQgPSB0cmFjay5raW5k
KCk7CiAgICAgICAgIFN0cmluZyB0cmFja0lkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
OwogCi0gICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgICAgICBhdXRvIHNlbmRl
ckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBu
dWxscHRyKTsKICAgICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgq
dGhpcywgbWFrZVJlZih0cmFjayksIFZlY3RvcjxTdHJpbmc+IHsgbWVkaWFTdHJlYW1JZHMgfSwg
V1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVS
ZWNlaXZlcih0cmFja0tpbmQsIHRyYWNrSWQpOwogICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0g
UlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVj
ZWl2ZXIpLCBudWxscHRyKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRD
UnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5z
Y2VpdgogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRkVW5pZmllZFBsYW5U
cmFuc2NlaXZlcihTdHJpbmcgeyB0cmFja0tpbmQgfSwgaW5pdCk7CiAKLSAgICBhdXRvIHNlbmRl
ckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0
aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvIG5ld1NlbmRl
ciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBTdHJpbmcodHJhY2tLaW5kKSwgVmVjdG9y
PFN0cmluZz4oKSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgcmV0dXJuIGNvbXBsZXRl
QWRkVHJhbnNjZWl2ZXIoV1RGTW92ZShuZXdTZW5kZXIpLCBpbml0LCBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCksIHRyYWNrS2luZCk7CiB9CkBAIC00ODIsNyArNDgyLDcgQEAgRXhjZXB0aW9u
T3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
OjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGFkZFVu
aWZpZWRQbGFuVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGluaXQpOwogCi0gICAgYXV0byBz
ZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
PigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byYgYmFj
a2VuZCA9ICpzZW5kZXJCYWNrZW5kOwogICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpj
cmVhdGUoKnRoaXMsIHRyYWNrLmNvcHlSZWYoKSwgVmVjdG9yPFN0cmluZz4oKSwgV1RGTW92ZShz
ZW5kZXJCYWNrZW5kKSk7CiAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFjayhiYWNrZW5kLCB0
cmFjaywgVmVjdG9yPFN0cmluZz4geyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZC5jcHAKaW5kZXggNjg1MGU2YTg1ZTkwMjRiYjExNDViNmI5NDIyOWMw
ZjYxNDJkZjdhYS4uNmFlZWExMzM4OTJkMjA2M2YwMzUzOWI4ZWVjNGRiOWJjZTY0ZDdkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKQEAgLTE0
OCw3ICsxNDgsNyBAQCB2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OnNldFBhcmFtZXRl
cnMoY29uc3QgUlRDUnRwU2VuZFBhcmFtZXRlcnMmIHBhcmFtZQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UlRDRFRNRlNlbmRlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURU
TUZCYWNrZW5kKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIoKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2VuZGVyLT5HZXRE
dG1mU2VuZGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAppbmRleCBlYjg3
MWViN2RiMDM4ODRmNGNjN2UwYWRlZjY4NzgyZTFjMDk3MmQ3Li41YzBkN2U5NWUyZmQxMmUzZjg0
ZjE3Y2ZiZWI2ZDg2N2E1MWYyZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTM1LDEyICszNSwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQ+IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXJCYWNrZW5k
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJh
Y2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFuc2NlaXZlci0+cmVjZWl2
ZXIoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPiBM
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVNlbmRlckJhY2tlbmQoTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBiYWNrZW5kLCBMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kOjpTb3VyY2UmJiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oYmFja2VuZCwgbV9ydGNUcmFuc2NlaXZlci0+c2VuZGVy
KCksIFdURk1vdmUoc291cmNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZD4oYmFja2VuZCwgbV9ydGNUcmFuc2NlaXZlci0+c2VuZGVyKCksIFdURk1v
dmUoc291cmNlKSk7CiB9CiAKIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIExpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZDo6ZGlyZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggMGMz
MjhmYWU0NDIzNTk5MjUzMzA3MmM4NWQ2YjMyZmRjNmMxMzgzOC4uMGViYWZmODlmZmJjNTAwM2Uy
NDYxYmFkZWU1MjAzOTExNzFjYmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTm90
aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBPcHRpb24KICAgICAsIG1fYm9keShvcHRpb25zLmJvZHkpCiAgICAgLCBt
X3RhZyhvcHRpb25zLnRhZykKICAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAsIG1fdGFza1RpbWVy
KHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3coKTsgfSkpCisgICAgLCBt
X3Rhc2tUaW1lcihtYWtlVW5pcXVlPFRpbWVyPihbdGhpc10gKCkgeyBzaG93KCk7IH0pKQogewog
ICAgIGlmICghb3B0aW9ucy5pY29uLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIGljb25VUkwg
PSBkb2N1bWVudC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IGE2MjAzNTM5M2M3ZmIzZjZkZGYwMWM1Yzg5ZDc0ZjNiNWVkZDJkNDQu
LmQ0OGYyMDVhOWUyNDE0ZTA3ZDcyMmY5MDMyNWE3YzM2NGQ0ODk0MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgY2hhciogTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogCiB2b2lkIHByb3ZpZGVOb3RpZmljYXRp
b24oUGFnZSogcGFnZSwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgTm90aWZp
Y2F0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6
OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uQ29udHJvbGxl
cj4oY2xpZW50KSk7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2Us
IE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8Tm90
aWZpY2F0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVv
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAK
aW5kZXggMDNmZTllMzg2NzhmNDA1MDczMjU1MDljMjAzODY3YzljZjgyMGZmMS4uYzk4Yzk5ODZk
ZWQ2Y2QyMDU0MjYxNzIxNWY2NTM2Y2U1OGYyNzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRE9NV2lu
ZG93UXVvdGEqIERPTVdpbmRvd1F1b3RhOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAg
IERPTVdpbmRvd1F1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93UXVvdGEq
PihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93UXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93UXVvdGE+KHdpbmRvdyk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2lu
ZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VR
dW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VR
dW90YS5jcHAKaW5kZXggN2JhMWQzZDRiMzY5NDQwYzY0ZTE3ZGQyMGNhOTQ1MzhiOGFkOWI3NC4u
N2EwODA0NTk1Njk4M2EzMWY2ZDgzNGVmN2VhNzcyZmE2NjczNmE2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcApA
QCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIE5hdmlnYXRvclN0b3JhZ2VR
dW90YTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JTdG9yYWdl
UXVvdGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqPihT
dXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOworICAgICAgICBh
dXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2lu
ZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA5NWMzZTQzNjQ3MzE2
MmE1MGQ2MWI1Y2U3NTE2NWVlNjhiMjFiNzI3Li4xYTFjODQ3ZGM0OTdkYzY0ODQ1ZjU2ZWNlNTky
NjNhNDI2YWY2MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dv
cmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01MSw3ICs1MSw3IEBA
IFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSogV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
Ojpmcm9tKFdvcmtlck5hdmlnYXRvcioKIHsKICAgICBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEq
PihTdXBwbGVtZW50PFdvcmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5k
b3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlck5hdmln
YXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCmlu
ZGV4IDM3OTU2NTI2ZmJmMjg2OTBlY2YwMzk5NTJjNTJmNmUwNDQ2YmNiNGMuLjk2OWMyMzdmN2M4
MTU1MTUzZGUwNzFlYzk2YTYxYTRhNDYyZDNmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMqIERPTVdpbmRvd1NwZWVjaFN5
bnRoZXNpczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dTcGVlY2hT
eW50aGVzaXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dTcGVlY2hTeW50aGVz
aXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3aW5kb3cpOworICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd1NwZWVjaFN5bnRo
ZXNpcz4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7
CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3
U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IDcyYjU2M2U0YmJmN2RjZTAzZmEzMDg4MGQyZmE3
NzBiODk4NjkzYTQuLmU3YjYyYTFhMTdiZDk2YTlmNWExM2ZkMDllNzQ5YWI0YmNlMTk4NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNw
cApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6dm9pY2VzRGlkQ2hhbmdl
KCkKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXImIFNwZWVjaFN5bnRoZXNpczo6ZW5zdXJlUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcigpCiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIpCi0gICAgICAgIG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyk7CisgICAgICAgIG1fcGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplciA9IG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcj4odGhpcyk7CiAgICAgcmV0dXJuICptX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlv
RGVjb2Rlci5jcHAKaW5kZXggNjJmNjhlYzY2M2E4MDIxMmM2ZjNhZjdiODVlMjNjNmI0Zjc0MmEw
YS4uMmY1NDI3MmFjNWMwMWQwYTIzMGU1YzBkZjA0NTI0YWZiMmE0ZTIzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAK
QEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMoUmVm
PEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmEKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlY29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOworICAgIGF1dG8gZGVj
b2RpbmdUYXNrID0gbWFrZVVuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1vdmUoYXVkaW9EYXRhKSwg
c2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spKTsKICAgICBtX3F1ZXVlLmFwcGVuZChXVEZNb3ZlKGRlY29kaW5nVGFzaykpOyAvLyBub3Rl
IHRoYXQgb3duZXJzaGlwIG9mIHRoZSB0YXNrIGlzIGVmZmVjdGl2ZWx5IHRha2VuIGJ5IHRoZSBx
dWV1ZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3lu
Y0F1ZGlvRGVjb2Rlci5oCmluZGV4IGJjMDBlYjlmODdkMWJjZDU4Y2JmNzQ5YjdkYTdjNDkzY2Y3
ZTg4NzYuLmNmOTI2OWMzMDQ0YzQzMjJkNzQ0ZDA2MjlkZGEwZmE4OTQ5M2VjYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgK
QEAgLTQyLDcgKzQyLDggQEAgY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsKIC8vIEFzeW5jQXVk
aW9EZWNvZGVyIGFzeW5jaHJvbm91c2x5IGRlY29kZXMgYXVkaW8gZmlsZSBkYXRhIGZyb20gYW4g
QXJyYXlCdWZmZXIgaW4gYSB3b3JrZXIgdGhyZWFkLgogLy8gVXBvbiBzdWNjZXNzZnVsIGRlY29k
aW5nLCBhIGNvbXBsZXRpb24gY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIHdpdGggdGhlIGRlY29k
ZWQgUENNIGRhdGEgaW4gYW4gQXVkaW9CdWZmZXIuCiAKLWNsYXNzIEFzeW5jQXVkaW9EZWNvZGVy
IHsKK2NsYXNzIEFzeW5jQXVkaW9EZWNvZGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY0F1ZGlvRGVjb2Rlcik7CiBw
dWJsaWM6CiAgICAgQXN5bmNBdWRpb0RlY29kZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKaW5k
ZXggYmE4YzI1NWFlN2Q3ZGE3M2JjOWZmNjU1NDNmMWUzN2JjOTU0MDRiMy4uMGZiNTViMDhmMGMx
YTJiZTJkMDcwYzRlMGQ4ZDhmNDY3ZTM0NmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKQEAg
LTQwLDggKzQwLDggQEAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2EKICAgICA6IEF1ZGlvTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNw
ZWN0b3IpOwotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRo
aXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIG91dHB1dENoYW5uZWxDb3VudCkpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRw
dXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3VudCkpOwogfQogCiAvLyBXZSBvdmVycmlkZSBwdWxs
SW5wdXRzKCkgYXMgYW4gb3B0aW1pemF0aW9uIGFsbG93aW5nIHRoaXMgbm9kZSB0byB0YWtlIGFk
dmFudGFnZSBvZiBpbi1wbGFjZSBwcm9jZXNzaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCBiYzE4OWMwOGNiZWZjN2MxOTYwNjQ2NmMwNzY4YjhmYTYzNGIxNmFiLi4wYjlmMWNlZDg3NDVi
NWQ5OThkYzM4ZDYzNmU3OTBhYmZiZTZlOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcApAQCAt
NDIsOCArNDIsOCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUpOwogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlv
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1
ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICAvLyBUaGUgc3ViY2xhc3MgbXVzdCBjcmVhdGUgbV9w
cm9jZXNzb3IuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggNDBhYzMyYzVjNTVjM2QzMmQwZTE0
YjZhN2QyMmIyNDY3MzkwZjRiZi4uMjUxMGM0MGE3ZjYxMjNkNGM3ZmMyZDY0MGE5MGI0ZjBhOThl
NmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZQogICAgIG1fcGxheWJhY2tSYXRlID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRl
eHQsICJwbGF5YmFja1JhdGUiLCAxLjAsIC1NYXhSYXRlLCBNYXhSYXRlKTsKIAogICAgIC8vIERl
ZmF1bHQgdG8gbW9uby4gIEEgY2FsbCB0byBzZXRCdWZmZXIoKSB3aWxsIHNldCB0aGUgbnVtYmVy
IG9mIG91dHB1dCBjaGFubmVscyB0byB0aGF0IG9mIHRoZSBidWZmZXIuCi0gICAgYWRkT3V0cHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFs
aXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKaW5kZXggOTk1NmMxNTg2MjE4OWM3MTQyOWNiY2ZkNjAwNDJmMDBjOThiYWVmNi4u
ZDRjZGI3NjU4YzBmMzViNWZjOWEyMmNlODk4YmNiMmI5OWVlNGRkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTQwLDcgKzE0
MCw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCiAjZW5kaWYKICAgICAs
IG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQotICAg
ICwgbV9ldmVudFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlz
KSkKKyAgICAsIG1fZXZlbnRRdWV1ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhp
cykpCiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9u
bHkgYWZ0ZXIgcGFnZSBuYXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9N
T2JqZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhv
ZC4KQEAgLTE2Niw3ICsxNjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdAogI2VuZGlmCiAg
ICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKHN0ZDo6
bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiB7CiAgICAgY29uc3RydWN0
Q29tbW9uKCk7CiAKQEAgLTQzMiw3ICs0MzIsNyBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZm
ZXI+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYXJyYXlCdWZmZQog
dm9pZCBBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVk
aW9EYXRhLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCiB7CiAgICAgaWYgKCFt
X2F1ZGlvRGVjb2RlcikKLSAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFzeW5jQXVkaW9EZWNvZGVyPigpOworICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IG1ha2VVbmlx
dWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7CiAgICAgbV9hdWRpb0RlY29kZXItPmRlY29kZUFzeW5j
KFdURk1vdmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSgpLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFj
ayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDk3
NTg4NzU0NzQ3ZTE1MjQ4MTg5ZjQ5NzBjNmQzM2UzYzZhZTFlMTEuLmQ5YWJiOTc3N2E5ZDI1ZWVh
ZjI0MmZmNGZmZmM1ZWM1ZWY0ODZjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhCiAgICAgLCBtX211dGVkKGZhbHNlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlRGVzdGluYXRpb24pOwotICAgIGFkZElucHV0KHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiB9CiAKIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjp+QXVk
aW9EZXN0aW5hdGlvbk5vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5kZXggMTYzNzNjZTkzNzhkMzIyZmRkOWMyNTNm
OWM3NmQ5NjNlNjEzY2QzYi4uNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4YjYzNmFiMmQ3NTZl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0
ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZp
bHRlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIEJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZp
bHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlQmlxdWFkRmlsdGVyKTsKIAogICAgIC8vIEluaXRpYWxseSBzZXR1
cCBhcyBsb3dwYXNzIGZpbHRlci4KLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8
QmlxdWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxzZSk7CisgICAgbV9w
cm9jZXNzb3IgPSBtYWtlVW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0
ZSwgMSwgZmFsc2UpOwogfQogCiBCaXF1YWRGaWx0ZXJUeXBlIEJpcXVhZEZpbHRlck5vZGU6OnR5
cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1
YWRQcm9jZXNzb3IuY3BwCmluZGV4IDBlNGUzNjg1YjgyY2U0NzdlYzRlNTg1NDdmMTZhZDhiNzBm
Yzc5MDQuLmU4NGI5ODAzNTY3MGZiMWRjYzMyNzA5NjYzZDJiMzkwNTUyZTY1ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgQmlxdWFkUHJvY2Vzc29yOjp+QmlxdWFkUHJvY2Vzc29yKCkKIAog
c3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtl
cm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOwogfQog
CiB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6Y2hlY2tGb3JEaXJ0eUNvZWZmaWNpZW50cygpCkBAIC0x
MjUsNyArMTI1LDcgQEAgdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNl
KGludCBuRnJlcXVlbmNpZXMsIGNvbnN0IGZsb2F0KiBmcmVxdWUKICAgICAvLyB0byBhdm9pZCBp
bnRlcmZlcmluZyB3aXRoIHRoZSBwcm9jZXNzaW5nIHJ1bm5pbmcgaW4gdGhlIGF1ZGlvCiAgICAg
Ly8gdGhyZWFkIG9uIHRoZSBtYWluIGtlcm5lbHMuCiAgICAgCi0gICAgYXV0byByZXNwb25zZUtl
cm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKKyAgICBhdXRv
IHJlc3BvbnNlS2VybmVsID0gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOwogCiAg
ICAgcmVzcG9uc2VLZXJuZWwtPmdldEZyZXF1ZW5jeVJlc3BvbnNlKG5GcmVxdWVuY2llcywgZnJl
cXVlbmN5SHosIG1hZ1Jlc3BvbnNlLCBwaGFzZVJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKaW5kZXgg
MjBiOGRhMTllNWY0MzljZmU1NDU1ZjAxZGMyOTA4NzQ0NmIyM2MwOC4uZGY1MGYyNjg3MzY4YWE1
YzMyOTU0MTQ4MTUwNzc3YTAyOTE3MzJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTU5LDkgKzU5LDkgQEAg
Q2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW4KIAogICAgIC8vIENyZWF0ZSB0aGUgcmVxdWVzdGVkIG51
bWJlciBvZiBpbnB1dHMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mSW5w
dXRzOyArK2kpCi0gICAgICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5w
dXQ+KHRoaXMpKTsKKyAgICAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwogCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCAxKSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKaW5kZXgg
NDYzNTQ5OGMwMzRjNTkzMGI0ZThmMjIwODZlMTRiMmI0YmQyOTExNy4uODJmNjlhMDRmOTk5MjYx
ZDU4YzE1MmJmYzYwMmEzNjYwOTYwOTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBAIC01MCwxMSArNTAs
MTEgQEAgQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlw
ZUNoYW5uZWxTcGxpdHRlcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1
dD4odGhpcykpOwogCiAgICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVtYmVyIG9mIG91dHB1dHMgKGFi
bGUgdG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBmZWQgdG8gYW4gaW5w
dXQpLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsraSkK
LSAgICAgICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAxKSk7CisgICAgICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMSkpOwogICAgIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IDIzODJkYWJjYzljOTky
N2NhYzMxZDMyNzVmMjIwM2NjOGY1OGEwOTMuLmUzNjY3N2NmZDc0NWU4YmJlMDJkYTNkYzRkZDdi
YTFmMWE1M2RkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcApAQCAtNTIsOCArNTIsOCBAQCBDb252b2x2ZXJOb2RlOjpDb252b2x2
ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUNvbnZvbHZlcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1
ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlv
Tm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1p
eGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CkBAIC0xNDYsNyArMTQ2LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQ29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKEF1ZGlvQnVmZmVyKiBi
dWZmZXIpCiAKICAgICAvLyBDcmVhdGUgdGhlIHJldmVyYiB3aXRoIHRoZSBnaXZlbiBpbXB1bHNl
IHJlc3BvbnNlLgogICAgIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMgPSAhY29udGV4dCgpLmlz
T2ZmbGluZUNvbnRleHQoKTsKLSAgICBhdXRvIHJldmVyYiA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2
ZXJiPihidWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcywg
TWF4RkZUU2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFsaXplKTsKKyAgICBh
dXRvIHJldmVyYiA9IG1ha2VVbmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9k
ZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRo
cmVhZHMsIG1fbm9ybWFsaXplKTsKIAogICAgIHsKICAgICAgICAgLy8gU3luY2hyb25pemUgd2l0
aCBwcm9jZXNzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9k
ZS5jcHAKaW5kZXggNDI2NWEwMDc0OWVhZmZmNmE5ZTFiOWQxZGRhNjBkNGRiNzAyOGIwMy4uODFi
ZDdkMTliMjdlNzQxYjUwZjZmODRlNTFmN2NlMjU1NzgwMmI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBpbmxp
bmUgRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCBkb3VibGUgbWF4RAogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlbGF5KTsKLSAgICBt
X3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQsIHNh
bXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CisgICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVl
PERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpOwog
fQogCiBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gRGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNw
cAppbmRleCBhNzViYTZiN2M5MmU3NDQ0YzY1NjA4ZThhZTE4ZjlkNTAwMDI2YTA0Li4xMDM2NmVm
NmVhZmI2YzQ0ZGIxOTEyNzFhOTk1ZDllNmQyYWNiYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBEZWxheVByb2Nlc3Nvcjo6fkRlbGF5UHJvY2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1
ZGlvRFNQS2VybmVsPiBEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWxheURTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5h
bWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCBhYTBlNGE4MDExOWViZWQ5ZGQzNjk2YjNmYTEz
MDVkZGYzMmJkMDUyLi4xNDA5NmQ4ZjBjNTk2YTUyOTcxNjY2ZWY4MjY3YTAyM2ZkYjQ0YjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgRHluYW1pY3NDb21wcmVzc29y
Tm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNhbXAKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJlc3Nvcik7CiAK
LSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0g
ICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZh
dWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVk
aW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CiAKICAgICBtX3Ro
cmVzaG9sZCA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAidGhyZXNob2xkIiwgLTI0LCAt
MTAwLCAwKTsKICAgICBtX2tuZWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImtuZWUi
LCAzMCwgMCwgNDApOwpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGU6OmluaXRpYWxpemUoKQogICAgICAgICByZXR1cm47CiAKICAgICBBdWRpb05vZGU6OmluaXRp
YWxpemUoKTsgICAgCi0gICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PER5bmFtaWNzQ29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRD
aGFubmVscyk7CisgICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBtYWtlVW5pcXVlPER5bmFtaWNz
Q29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7
CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6dW5pbml0aWFsaXplKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKaW5kZXggNmM5NGE1MjNj
M2IyYTAyMTJiMmE1NGExYTljOGYwMjZiYmQxZGI1Zi4uMjU3ZGYyZWNlMjMzOGNiY2JhYjllZDA1
MTIzM2M2NGIxYzU3ZjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9HYWluTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9H
YWluTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIAogICAgIG1fZ2FpbiA9IEF1ZGlvUGFy
YW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiIsIDEuMCwgMC4wLCAxLjApOwogCi0gICAgYWRkSW5w
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZElu
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAzODFhZTcyNzk0ZmIwZTdmZWE2
MzMxYWJkMzNiMjBjMTU4NDVmZjliLi45MTJlNmViMjMyMTQ1NjQzZDZmZGFmYmMxMWU5Njc2NGMz
ZDJmNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBA
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZU1lZGlhRWxl
bWVudEF1ZGlvU291cmNlKTsKIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxk
IGNoYW5nZSBkZXBlbmRpbmcgb24gd2hhdCB0aGUgbWVkaWEgZWxlbWVudCAuc3JjIGlzIHNldCB0
by4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMs
IDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIp
KTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywg
ZmxvYXQgc291cmMKIAogICAgICAgICBpZiAoc291cmNlU2FtcGxlUmF0ZSAhPSBzYW1wbGVSYXRl
KCkpIHsKICAgICAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUg
LyBzYW1wbGVSYXRlKCk7Ci0gICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVy
T2ZDaGFubmVscyk7CisgICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG1ha2VV
bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVs
cyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBCeXBhc3MgcmVzYW1wbGluZy4K
ICAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggNWIyYTUwMGRkMjk0ZDEwNTU4YmM3YTA4Y2Y3NzE2ZTQy
NmI1YzJhYy4uZTQzZjU0NDhiYzI2Yjg2YWY2OTNkMDA5OTk1YzY3MzRmNjk1NWQzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgTWUKICAgICBhdWRpb1NvdXJjZVByb3ZpZGVyLT5zZXRDbGllbnQodGhpcyk7CiAgICAg
CiAgICAgLy8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdlIGRlcGVuZGluZyBv
biB0aGUgZm9ybWF0IG9mIHRoZSBNZWRpYVN0cmVhbSdzIGF1ZGlvIHRyYWNrLgotICAgIGFkZE91
dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFk
ZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgaW5p
dGlhbGl6ZSgpOwogfQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjZQog
ICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUgLyBzYW1wbGVSYXRl
OwotICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TXVs
dGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CisgICAg
ICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0aUNoYW5uZWxSZXNh
bXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICB9CiAKICAgICBtX3Nv
dXJjZU51bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCA1YjUwMjli
ZmJjZTc3YWQ1YjZjM2M4ODMyNjBkYjlkZWZkZjYxMDRiLi5hOTljZWFhZDZiNWMyMWUwOWRkMjI1
M2MyYWNmMzA0NTU0NzUzZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBPc2NpbGxhdG9yTm9k
ZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIHNldFR5cGUobV90eXBlKTsKIAogICAgIC8vIEFuIG9zY2lsbGF0b3IgaXMgYWx3YXlz
IG1vbm8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBmNjQ3NDY5ZTIzNTVlYjNhMGMwOWIzYjA4
NTJiZmJlYzZlNDhkMjhkLi41MWM2OTkxNmZmZGU3MGY1ZTY4MGFhOTI3Y2VmZWY3Y2E3MzJjM2Vi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAK
QEAgLTU4LDggKzU4LDggQEAgUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgLy8gTG9hZCB0aGUgSFJURiBkYXRhYmFzZSBh
c3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9jayB0aGUgSmF2YXNjcmlwdCB0aHJlYWQgd2hp
bGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2UuCiAgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXIg
PSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFuZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNz
YXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1
ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5n
IHJ1bGVzLgogICAgIG1fY2hhbm5lbENvdW50ID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcAppbmRleCBiYjJhMDdkMjM1NGViYWY5NGQw
MDQ2NWE0YjQxZDg2MDU1NTk5ODZiLi5lYzlhMTdjNGY1NmViOTk2NmRjMTc2MjdlOTM0MDViYTFm
ZDQ4YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Blcmlv
ZGljV2F2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2Rp
Y1dhdmUuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBQZXJpb2RpY1dhdmU6OmNyZWF0ZUJh
bmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiByZWFsRGF0YSwgY29uc3QgZmxvYXQqIGkKICAg
ICAgICAgcmVhbFBbMF0gPSAwOwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUgYmFuZC1saW1pdGVk
IHRhYmxlLgotICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CisgICAgICAgIG1fYmFu
ZExpbWl0ZWRUYWJsZXMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihtX3Blcmlv
ZGljV2F2ZVNpemUpKTsKIAogICAgICAgICAvLyBBcHBseSBhbiBpbnZlcnNlIEZGVCB0byBnZW5l
cmF0ZSB0aGUgdGltZS1kb21haW4gdGFibGUgZGF0YS4KICAgICAgICAgZmxvYXQqIGRhdGEgPSBt
X2JhbmRMaW1pdGVkVGFibGVzW3JhbmdlSW5kZXhdLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCAzYjYy
ODFkMWU4NDNlZDI5OWNmNjE1M2M3MzI3OTcwNzQxODA2Nzc4Li44MDIzNzM0MDdmNzVkNDdlMjU5
ZWI2MDU2MzgwZjYzNWYxM2FjZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgUmVhbHRp
bWVBbmFseXNlcjo6UmVhbHRpbWVBbmFseXNlcigpCiAgICAgLCBtX21pbkRlY2liZWxzKERlZmF1
bHRNaW5EZWNpYmVscykKICAgICAsIG1fbWF4RGVjaWJlbHMoRGVmYXVsdE1heERlY2liZWxzKQog
ewotICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KERlZmF1
bHRGRlRTaXplKTsKKyAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihE
ZWZhdWx0RkZUU2l6ZSk7CiB9CiAKIFJlYWx0aW1lQW5hbHlzZXI6On5SZWFsdGltZUFuYWx5c2Vy
KCkgPSBkZWZhdWx0OwpAQCAtODMsNyArODMsNyBAQCBib29sIFJlYWx0aW1lQW5hbHlzZXI6OnNl
dEZmdFNpemUoc2l6ZV90IHNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICht
X2ZmdFNpemUgIT0gc2l6ZSkgewotICAgICAgICBtX2FuYWx5c2lzRnJhbWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZGVEZyYW1lPihzaXplKTsKKyAgICAgICAgbV9hbmFseXNpc0ZyYW1lID0gbWFrZVVu
aXF1ZTxGRlRGcmFtZT4oc2l6ZSk7CiAgICAgICAgIC8vIG1fbWFnbml0dWRlQnVmZmVyIGhhcyBz
aXplID0gZmZ0U2l6ZSAvIDIgYmVjYXVzZSBpdCBjb250YWlucyBmbG9hdHMgcmVkdWNlZCBmcm9t
IGNvbXBsZXggdmFsdWVzIGluIG1fYW5hbHlzaXNGcmFtZS4KICAgICAgICAgbV9tYWduaXR1ZGVC
dWZmZXIuYWxsb2NhdGUoc2l6ZSAvIDIpOwogICAgICAgICBtX2ZmdFNpemUgPSBzaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKaW5kZXggZDU5ZGVjZjk5NTE2ZjZkMDFhZjljMWQ5ZmRiZjFkMGIxMDE5ZTQwZi4u
ZDViM2FmYmYyNzEwMTQ1MTQ5NGIxODkzNzc2OGI2MDVmNmEzYjQ3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
CkBAIC02OCw4ICs2OCw4IEBAIFNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiAgICAgQVNTRVJUKG51
bWJlck9mSW5wdXRDaGFubmVscyA8PSBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMo
KSk7CiAKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUphdmFTY3JpcHQpOwotICAgIGFkZElucHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcApp
bmRleCA0MTBkMWRhZjVjODk1NDAwOWZmMDYzNmE4MjkwMGJmOTRhZjRmOGYxLi5mM2QyMTIyZGY1
MWM0ZjFhMjkyMjRlNjkzYWI0OTViYmMyYjkzOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKQEAgLTQ5LDEy
ICs0OSwxMiBAQCB2b2lkIFdhdmVTaGFwZXJEU1BLZXJuZWw6OmxhenlJbml0aWFsaXplT3ZlcnNh
bXBsaW5nKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCFtX3RlbXBC
dWZmZXIpIHsKLSAgICAgICAgbV90ZW1wQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zs
b2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV90ZW1wQnVmZmVyMiA9
IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogNCk7
Ci0gICAgICAgIG1fdXBTYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNhbXBsZXI+KFJlbmRl
cmluZ1F1YW50dW0pOwotICAgICAgICBtX2Rvd25TYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxE
b3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAgICAgICBtX3VwU2FtcGxlcjIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAg
ICAgICBtX2Rvd25TYW1wbGVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRl
cmluZ1F1YW50dW0gKiA0KTsKKyAgICAgICAgbV90ZW1wQnVmZmVyID0gbWFrZVVuaXF1ZTxBdWRp
b0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV90ZW1wQnVmZmVy
MiA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogNCk7Cisg
ICAgICAgIG1fdXBTYW1wbGVyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50
dW0pOworICAgICAgICBtX2Rvd25TYW1wbGVyID0gbWFrZVVuaXF1ZTxEb3duU2FtcGxlcj4oUmVu
ZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX3VwU2FtcGxlcjIgPSBtYWtlVW5pcXVlPFVw
U2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX2Rvd25TYW1wbGVyMiA9
IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
ck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5jcHAKaW5kZXggODQ4Njk5M2YyMTA4NGNjYzYxY2NkODBiMmMxODdlMDhjMTU1ZmQwMS4uNmU3
ZThkZDFjOWMxOWZhM2M4NWUzZDlkODU1YWI5ZjQ1Nzg1Yjc5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgV2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxl
UmF0ZSgpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBlcik7Ci0gICAgbV9w
cm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQu
c2FtcGxlUmF0ZSgpLCAxKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8V2F2ZVNoYXBl
clByb2Nlc3Nvcj4oY29udGV4dC5zYW1wbGVSYXRlKCksIDEpOwogCiAgICAgaW5pdGlhbGl6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlclByb2Nlc3Nvci5jcHAKaW5kZXggMjg5YzM5ZjVmM2Y5ZjdhNzllOWE1YjZhNmQ4MzE1YjU5
MWY0MzJkYS4uYmZlNWUwZTQ3ZmI4NGEyOGM2M2M2ZTI4YjMyZTBmYzExZTVjNjdiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9j
ZXNzb3IuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdhdmVTaGFwZXJQcm9jZXNzb3I6On5XYXZlU2hh
cGVyUHJvY2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBXYXZlU2hh
cGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdhdmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdh
dmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB2b2lkIFdhdmVTaGFwZXJQcm9jZXNzb3I6
OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaAppbmRleCBi
MWM0OWRiNTIzYjkzNmIwYTRlYzIyMTA0MWI3N2RhN2NjMTQ3OGZkLi4yMGQ2MDY5NzI0Mjg5NzM3
Nzk4MmI4NGVlNzNkNGRhNjM0ZWQ4ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9uczsKIHVzaW5n
IENyZWRlbnRpYWxQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51bGxhYmxlPElETElu
dGVyZmFjZTxCYXNpY0NyZWRlbnRpYWw+Pj47CiAKIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1bmlxdWVfcHRyPEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAppbmRleCA4YzNk
MTM0NmM0MDMwY2ZiM2Q4Mjc3MzdhMGExNWYzZjFjYjliYWQ3Li4xYjkxMmQ5OGQ5ZjA0ZjMwNzRh
MWI4ZTFhNjI2MDFhNDJmYWYzNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKQEAgLTE1MCw5ICsxNTAsOSBA
QCBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UodWludDMyX3QgY2hhbm5lbElkLCBGaWRv
SGlkRGV2aWNlQ29tbWFuZCB0eXBlLCBjbwogICAgIHVpbnQ4X3Qgc2VxdWVuY2UgPSAwOwogCiAg
ICAgc2l6ZV90IHBvcyA9IGRhdGEuc2l6ZSgpID4ga0hpZEluaXRQYWNrZXREYXRhU2l6ZSA/IGtI
aWRJbml0UGFja2V0RGF0YVNpemUgOiBkYXRhLnNpemUoKTsKLSAgICBtX3BhY2tldHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgdHlwZSwgZ2V0
SW5pdFBhY2tldERhdGEoZGF0YSksIGRhdGEuc2l6ZSgpKSk7CisgICAgbV9wYWNrZXRzLmFwcGVu
ZChtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQ
YWNrZXREYXRhKGRhdGEpLCBkYXRhLnNpemUoKSkpOwogICAgIGZvciAoOyBwb3MgPCBkYXRhLnNp
emUoKTsgcG9zICs9IGtIaWRDb250aW51YXRpb25QYWNrZXREYXRhU2l6ZSkKLSAgICAgICAgbV9w
YWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+
KGNoYW5uZWxJZCwgc2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0RGF0YShkYXRhLCBw
b3MpKSk7CisgICAgICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkQ29udGlu
dWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRpbnVhdGlvblBhY2tl
dERhdGEoZGF0YSwgcG9zKSkpOwogfQogCiBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBpbml0UGFja2V0LCBzaXplX3QgcmVt
YWluaW5nU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkUGFja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkUGFja2V0LmNwcAppbmRleCA1NWI3YjJkNzE1MzZhMjM1NDkxM2FlMzZlOWZi
OTFlZjAwYThmMDgzLi4yNmI4MGFhOGE1ZjEzOTYzYzc2OGU3ZTkyM2JiYWFiMmI4N2I1ZWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBh
Y2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9I
aWRQYWNrZXQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5p
dFBhY2tldD4gRmlkb0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShjCiAg
ICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CiAgICAgZGF0YS5hcHBlbmQoc2VyaWFs
aXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNvbW1hbmQsIFdURk1vdmUoZGF0
YSksIHBheWxvYWRTaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tl
dD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CiB9CiAK
IC8vIFUyRiBJbml0aWFsaXphdGlvbiBwYWNrZXQgaXMgZGVmaW5lZCBhczoKQEAgLTEyMyw3ICsx
MjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4gRmlkb0hp
ZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbQogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1
aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBk
YXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0
aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVl
bmNlLCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAogLy8gVTJGIENvbnRpbnVhdGlvbiBwYWNrZXQgaXMg
ZGVmaW5lZCBhczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZS5jcHAKaW5kZXggMDIxNDVkMGNjMmU4YzllYWRiMGM4ODI5NDFiODU5ZmMwYWU4MDUyZC4u
NWI2NGEwODc0NmFmODA4MGNkMmU3MjUwM2ZhMDBkM2M5NDlmYjAwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTI1MCw3ICsyNTAs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9v
bCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXN1bHQ7Ci0gICAg
YXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9wZW5UYXNrPigqdGhpcywgc2V0
VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKKyAgICBhdXRvIHRh
c2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRWZXJzaW9uSW5OZXdE
YXRhYmFzZSwgc3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5zY2hlZHVsZUltbWVk
aWF0ZVRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29t
cGxldGlvbigpOwogCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2xvc2UoKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFz
ayhzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlQ2xvc2VUYXNrPigqdGhpcywgc3luY2hyb25pemVy
KSk7CisgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhtYWtlVW5pcXVlPERhdGFiYXNl
Q2xvc2VUYXNrPigqdGhpcywgc3luY2hyb25pemVyKSk7CiAKICAgICAvLyBGSVhNRTogaU9TIGRl
cGVuZHMgb24gdGhpcyBmdW5jdGlvbiBibG9ja2luZyB1bnRpbCB0aGUgZGF0YWJhc2UgaXMgY2xv
c2VkIGFzIHBhcnQKICAgICAvLyBvZiBjbG9zaW5nIGFsbCBvcGVuIGRhdGFiYXNlcyBmcm9tIGEg
cHJvY2VzcyBhc3NlcnRpb24gZXhwaXJhdGlvbiBoYW5kbGVyLgpAQCAtNTMyLDcgKzUzMiw3IEBA
IHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgIG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzID0gdHJ1ZTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9u
UXVldWUudGFrZUZpcnN0KCk7Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRh
YmFzZVRyYW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOworICAgIGF1dG8gdGFz
ayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1vdmUodHJhbnNhY3Rp
b24pKTsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlv
blRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0YXNrLT50cmFuc2Fj
dGlvbigpKTsKICAgICBkYXRhYmFzZVRocmVhZCgpLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2sp
KTsKIH0KQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0
aW9uU3RlcChTUUxUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgYXV0byYgdGhyZWFk
ID0gZGF0YWJhc2VUaHJlYWQoKTsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CisgICAgYXV0byB0YXNrID0g
bWFrZVVuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oJnRyYW5zYWN0aW9uKTsKICAgICBM
T0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9y
IHRoZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKICAgICB0aHJlYWQuc2NoZWR1
bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQpAQCAtNzYzLDcgKzc2Myw3IEBAIFZlY3RvcjxTdHJp
bmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKICAgICBpZiAodGhyZWFkLnRlcm1pbmF0aW9uUmVx
dWVzdGVkKCZzeW5jaHJvbml6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgYXV0
byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPigqdGhpcywg
c3luY2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJh
c2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKICAgICB0aHJl
YWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwogICAgIHN5bmNocm9uaXpl
ci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAzYmFiZDQ5NTY2ZjE0
YTFiM2MwZDNiMTdiZjRjN2YzMmM1ZTNkNWY3Li5kNjQ5N2MzOTdmYTQ3NDI4NTllMDU4NjIyMzZl
ZGVlNDNkNGVmMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBEYXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQoKQotICAgIDogbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8U1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvcj4oKSkKKyAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihtYWtlVW5pcXVlPFNRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCiB7CiAgICAgbV9zZWxmUmVmID0gdGhpczsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAppbmRleCBkOGRkY2M1OTg1NTE1NzZkMmEyYzEwZjQyZTRhZDEyYTgyNTliNTE5Li5j
MjhhOTZmNDU4MzllZjU0ZGFmMWY5OWExYWQ1OGQ3ZWNkNGE2NzU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBA
IC01NDksNyArNTQ5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZShE
YXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VNYXBMb2NrKG1f
b3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCiAgICAgaWYgKCFtX29wZW5EYXRhYmFzZU1hcCkKLSAg
ICAgICAgbV9vcGVuRGF0YWJhc2VNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlT3JpZ2lu
TWFwPigpOworICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9IG1ha2VVbmlxdWU8RGF0YWJhc2VP
cmlnaW5NYXA+KCk7CiAKICAgICBhdXRvIG9yaWdpbiA9IGRhdGFiYXNlLnNlY3VyaXR5T3JpZ2lu
KCk7CiAKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVjb3JkQ3Jl
YXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgYwogICAgIC8v
IFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9pZCBtYWtpbmcgYW4gaXNv
bGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAgYXV0byogbmFtZVNldCA9
IG1fYmVpbmdDcmVhdGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZVNldCkgewotICAgICAg
ICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoQ291bnRlZFNldDxTdHJpbmc+
PigpOworICAgICAgICBhdXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxIYXNoQ291bnRlZFNldDxT
dHJpbmc+PigpOwogICAgICAgICBuYW1lU2V0ID0gb3duZWRTZXQuZ2V0KCk7CiAgICAgICAgIG1f
YmVpbmdDcmVhdGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUob3duZWRTZXQp
KTsKICAgICB9CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVj
b3JkRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgYwog
ICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9pZCBtYWtpbmcg
YW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAgYXV0byogbmFt
ZVNldCA9IG1fYmVpbmdEZWxldGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZVNldCkgewot
ICAgICAgICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+
KCk7CisgICAgICAgIGF1dG8gb3duZWRTZXQgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4o
KTsKICAgICAgICAgbmFtZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nRGVs
ZXRlZC5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50
LmgKaW5kZXggODVmMWI2MzVjM2U0OWIzZmUxYTgxZjk0ODc4MjQ4MGUxZGU0OGZiNS4uOGE1NGEz
NjY3YTA3YWFjZTAzYTk2MGZiMjU2NGY3ZWJkZjNiZDk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCkBAIC00NCw2ICs0NCw3IEBA
IGNsYXNzIFNRTFJlc3VsdFNldDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQmFja2VuZDsKIAogY2xh
c3MgU1FMU3RhdGVtZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBTUUxTdGF0ZW1lbnQoRGF0YWJhc2UmLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8U1FMVmFs
dWU+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4mJiwgUmVmUHRyPFNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2s+JiYsIGludCBwZXJtaXNzaW9ucyk7CiAgICAgflNRTFN0YXRlbWVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcAppbmRleCAyMGQ2OTczNDc3NGRiZmJmMzBiZDhmMzljZTRjNTk1NzIxNGU5MDBj
Li40Y2IwNDFlNDUyYzgwZjVmNTliYjI3MjFlYWI4ZWMxYThmNjE4MzY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApA
QCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0
ZVNxbChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYQogICAgIGVsc2UgaWYgKG1f
cmVhZE9ubHkpCiAgICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0aG9yaXplcjo6UmVh
ZE9ubHlNYXNrOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTFN0
YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFsdWVPcihWZWN0
b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJy
b3IpLCBwZXJtaXNzaW9ucyk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTFN0
YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFsdWVPcihWZWN0
b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJy
b3IpLCBwZXJtaXNzaW9ucyk7CiAKICAgICBpZiAobV9kYXRhYmFzZS0+ZGVsZXRlZCgpKQogICAg
ICAgICBzdGF0ZW1lbnQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKCk7CkBAIC0yMzQsNyArMjM0
LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KCkK
ICAgICB9CiAKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwotICAgIG1fc3FsaXRl
VHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihtX2RhdGFi
YXNlLT5zcWxpdGVEYXRhYmFzZSgpLCBtX3JlYWRPbmx5KTsKKyAgICBtX3NxbGl0ZVRyYW5zYWN0
aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0
YWJhc2UoKSwgbV9yZWFkT25seSk7CiAKICAgICBtX2RhdGFiYXNlLT5yZXNldERlbGV0ZXMoKTsK
ICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKaW5kZXgg
NzlhYTU2MTgxZmZlZjNhYjFhOTJhYTU3ZmVjZGI2ZmJhNTllNmYwYi4uMTI5ZDg2ZmZjZmJkMTU3
YTgwYjAxOTJlM2I0OTk3MTMzYmViNzgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIE5hdmlnYXRvcldlYkRyaXZlciogTmF2aWdhdG9yV2ViRHJpdmVyOjpmcm9tKE5hdmlnYXRv
ciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvcldlYkRyaXZlciogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PE5hdmlnYXRvcldlYkRyaXZlcio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJv
bShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JX
ZWJEcml2ZXI+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2
aWdhdG9yV2ViRHJpdmVyPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5n
ZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKaW5kZXggODhhOTc4MDQ0YmMxZTcwODkzMzU2NWRjNjJk
MGEzMTQ2YjM4YjQyNi4uMzc2ZDE1NWNhOWIyZjVkMmE0YWIxODUyYzc3NmQ5YzE4ZjJlNTIyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIE5hdmlnYXRvckdQVSogTmF2aWdhdG9yR1BVOjpmcm9tKE5hdmlnYXRv
ciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PE5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3Is
IHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR1BVPigpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAppbmRleCAxYjM0MjUw
NGQ2OTU1MDhmMDgxNmNjYjU1ODJmNWJkOWFhNzYxYTZiLi41ZjU3ZWYxMTc3NTMxYTBhYzNkOTYw
ZGViMWQ0Mzg3MTFhNGYwNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRp
b24uaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24gZmluYWwg
OiBwdWJsaWMgTmFtZWRUeXBlIHsKIAogICAgIGJvb2wgYWRkKEVudW1lcmF0aW9uTWVtYmVyJiYg
bWVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJl
ci5uYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVt
YmVyKSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUo
KSwgbWFrZVVuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZm
b2xkaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCmluZGV4IDBlMzFmZmJkZTBiMTQ4NmY2YzZmNjVlMjBl
YjYzOGFlODgxYjg3ZjguLmNiY2M0ODRiNjgyNTBjMGFhMDliNTk5NDNhZGM3OWU4MTAwOTI3NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaApAQCAtNTAsNiAr
NTAsNyBAQCBuYW1lc3BhY2UgTWV0YWwgewogY2xhc3MgVHlwZU5hbWVyOwogCiBjbGFzcyBFbnRy
eVBvaW50U2NhZmZvbGRpbmcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0gZGVmYXVsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAppbmRleCA4MjU0OGI4YzZlYTBiZTViYmE4MmQ4
OTc3NzZkNzQ2MzIxMGQ5OGU2Li41MTljNzgyYmUyZmM2YWYyYWNhZDFkYmI4OGY5YWIxYTU4NDc2
NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApAQCAtNzU3LDkgKzc1Nyw5
IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IFJlbmRlckZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50CiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICB9OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9u
ID09IG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0
aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4
U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyUmVz
b3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1f
bWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0
aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4
U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyUmVz
b3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSksIG1f
bWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7CiAgICAgaWYgKCZmdW5j
dGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyKQotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGcmFnbWVudEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNo
ZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFu
dGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZENvbG9yQXR0YWNo
bWVudHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGcmFnbWVudEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBt
X21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hl
ZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShn
ZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZENvbG9y
QXR0YWNobWVudHMpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC03ODMsNyArNzgzLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gQ29tcHV0ZUZ1bmN0aW9u
RGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW4KICAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRl
TmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIH07CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24g
PT0gbV9tYXRjaGVkU2VtYW50aWNzLnNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBt
X2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0
ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdl
bmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21w
dXRlRW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2lj
cywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50SXRlbXMsIG1fbWF0
Y2hlZFNlbWFudGljcy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0
VmFyaWFibGVOYW1lKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5h
bWVyLmNwcAppbmRleCAxODViYTBiMDg4YTVjZWQ0YzViNjYzNmZhOTQ0MmMwMDM0MGRkMDJhLi40
MGI2MmMzN2RiZTI1ODBlMjNkNTkwYzA5MWViYjQxN2NhOWI4MDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBl
TmFtZXIuY3BwCkBAIC0yNzIsMTkgKzI3MiwxOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8QmFzZVR5cGVO
YW1lTm9kZT4gVHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZShBU1Q6OlVubmFtZWRUeXBlJiB1bgog
ICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRU
eXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIHR5cGVSZWZlcmVuY2Ug
PSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKTsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVy
YXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJh
dGVOZXh0VHlwZU5hbWUoKSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CiAgICAgfQog
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjogewogICAgICAgICBhdXRv
JiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKTsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGVOYW1lTm9kZT4ocGFy
ZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwg
Z2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAg
IH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5UmVmZXJlbmNlOiB7CiAg
ICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlSZWZl
cmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1l
KCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4
dFR5cGVOYW1lKCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CiAgICAgfQog
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsKICAgICAgICAgYXV0byYg
YXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2Vu
ZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRU
eXBlTmFtZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CiAgICAgfQogICAgIGRlZmF1bHQ6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAppbmRleCA3N2Rh
NDhlMmVjZjE2Mjk0NmNhYmNkZTUyMjgzNTliNjg4MjkwMjA3Li4xYTYxNjJhMmVmNzM3OWQzNzE5
MjQ1YzQzYTQ0ZWVlMWMyZWFlNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTk2NiwxNCArOTY2LDE0IEBAIHZv
aWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xh
cmF0aW9uKQogCiB2b2lkIENoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZShBU1Q6OkV4cHJlc3Np
b24mIGV4cHJlc3Npb24sIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB1bm5hbWVkVHlwZSwgQVNUOjpU
eXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewotICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3Vu
aXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOworICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdU
eXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlv
bihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CiB9CiAKIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlw
ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
ZW5jZT4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFu
bm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
dHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4o
V1RGTW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RG
TW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90
YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwogfQpAQCAtOTgxLDEwICs5ODEsMTAgQEAg
dm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVm
UHRyPFJlc29sdmFibGVUeXBlUmVmZXIKIHZvaWQgQ2hlY2tlcjo6Zm9yd2FyZFR5cGUoQVNUOjpF
eHByZXNzaW9uJiBleHByZXNzaW9uLCBSZXNvbHZpbmdUeXBlJiByZXNvbHZpbmdUeXBlLCBBU1Q6
OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7CiAg
ICAgcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShSZWY8QVNUOjpVbm5h
bWVkVHlwZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5h
ZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNv
cHlSZWYoKSkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJl
c3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAg
IH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXN1bHQpIHsKLSAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmlu
Z1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9KSk7CiAgICAgZXhwcmVzc2lvbi5zZXRU
eXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKaW5kZXggMDE2MTE0
YTYxMGUxMTAwZWZlNjk3MmNhMmEyMzUzMjdjMTUyZTdhYi4uNWU0OWYwM2EzYjM4MjZkMWZlN2Ni
M2E1NTg3OTY3NjY1NzY5ZmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApAQCAtNzQwLDE5ICs3NDAsMTkgQEAgYXV0byBQ
YXJzZXI6OnBhcnNlU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpT
ZW1hbnRpYz4sIEVycm9yPgogICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpIHsKICAgICBjYXNlIFRv
a2VuOjpUeXBlOjpBdHRyaWJ1dGU6IHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBTdGFnZUluT3V0
U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50
aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNU
OjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6
VHlwZTo6U3BlY2lhbGl6ZWQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgU3BlY2lhbGl6YXRp
b25Db25zdGFudFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIGNh
c2UgVG9rZW46OlR5cGU6OlJlZ2lzdGVyOiAgewogICAgICAgICBQQVJTRShyZXN1bHQsIFJlc291
cmNlU2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2Vt
YW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8
QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgZGVmYXVsdDog
IHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBCdWlsdEluU2VtYW50aWMpOwotICAgICAgICByZXR1
cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07
CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVz
dWx0KSkgfTsKICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAppbmRleCA1NTljZThiYTkz
YjI5ZDUxN2ZhNzczZjZhNWY1MjdkZGY0YTg1YjAxLi40NTcwMGNlZDhmZDM0NDljNGRhNDk1OWY3
MWE0MDJhYTAyZDZlNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApAQCAtNzQsNiArNzQsNyBAQCBjbGFz
cyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlPiB7CiAvLyBJdCBleGlzdHMgc28gd2UgY2FuIG1ha2Ugc3VyZSB0aGF0IHRo
ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgogLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgxNTggVGhpcyB3cmFwcGVy
IG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCiBjbGFzcyBSZXNvbHZpbmdUeXBlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvbHZpbmdUeXBlKCkKICAgICAg
ICAgOiBtX2lubmVyKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4oKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCmlu
ZGV4IGJmOTBmNmMzNjA1NDhkNTJjOGZkOGVlZWM3NTNjNzhkOGZhOWJmMWMuLmQ5NTIyMzA1YWRh
MWVlOTcxZjE2NTI4ZGUwNjYwNGJiNmE5NmIwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBXb3JrZXJOYXZpZ2F0b3JHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6ZnJvbShXb3JrZXJOYXZp
Z2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBXb3JrZXJOYXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQg
PSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PFdvcmtlck5hdmln
YXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyTmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1
cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggZWQ1YTNjYzgzNGZl
MTlkNDg4OGI4NTU1MDRiYTE1NWQ0ODNmYzQwNy4uYzFiYWM4NmQzYWIyYjBkOTEzZmNlNzQyMTQz
MWE5NDQ1OWVlZDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQoKQogCiB2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiB7Ci0gICAgbV9w
ZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2Ns
aWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7CiAgICAgfSkpOwpAQCAt
MTY0LDcgKzE2NCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRDb25uZWN0KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNz
YWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2Fn
ZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewog
ICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UobWVzc2FnZSk7CiAgICAgfSkpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQog
ewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIG11dGFibGUgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIG11dGFibGUgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5hcnlEYXRhKSk7CiAgICAg
fSkpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfCiAKIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudCh1bnNpZ25lZCBidWZmZXJlZEFtb3VudCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlx
dWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
ewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkVXBkYXRl
QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0pKTsKQEAgLTE5Nyw3ICsxOTcs
NyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBk
YXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYgogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIHsKLSAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
OwogICAgIH0pKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIAogdm9pZCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVk
IHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgdW5z
aWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgbV9wZW5kaW5n
VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFz
b24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVk
QW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29u
Lmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2xvc2UodW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFz
b24pOwogICAgICAgICB9KSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1
ZmZlcmUKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwogICAgIH0pKTsKQEAgLTIzMCw3ICsyMzAs
NyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VFcnJvcigpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
KyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNjA3
MTQ0MDkyNGZiMmNlNjdmNTM0MDYyZDc5ZThlM2IwNGVlMWM1MC4uYTA3YTg3NjNhZmI5NjliNDIw
NzBiYzQ5YTg2MjM5Yjc4M2Q2ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtOTcsNyArOTcsNyBAQCBX
ZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3Qo
Y29uc3QgVVJMJiByZXF1ZXN0ZWRVUgogICAgIG1fYWxsb3dDb29raWVzID0gdmFsaWRhdGVkVVJM
LT5hcmVDb29raWVzQWxsb3dlZDsKICAgICBTdHJpbmcgdXNlckFnZW50ID0gbV9kb2N1bWVudC0+
dXNlckFnZW50KG1fZG9jdW1lbnQtPnVybCgpKTsKICAgICBTdHJpbmcgY2xpZW50T3JpZ2luID0g
bV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotICAgIG1faGFuZHNoYWtl
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJs
LCBwcm90b2NvbCwgdXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29raWVzKTsKKyAg
ICBtX2hhbmRzaGFrZSA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRV
UkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwgY2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2ll
cyk7CiAgICAgbV9oYW5kc2hha2UtPnJlc2V0KCk7CiAgICAgaWYgKG1fZGVmbGF0ZUZyYW1lci5j
YW5EZWZsYXRlKCkpCiAgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3Io
bV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKQEAgLTcwMyw3ICs3
MDMsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiB2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewog
ICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVl
dWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4o
KTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFt
ZS0+b3BDb2RlID0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZVRleHQ7CiAgICAgZnJhbWUtPmZyYW1l
VHlwZSA9IFF1ZXVlZEZyYW1lVHlwZVN0cmluZzsKICAgICBmcmFtZS0+c3RyaW5nRGF0YSA9IHN0
cmluZzsKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVU
ZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVR
dWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0g
c3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVu
aXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZy
YW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7CiAgICAgZnJhbWUtPnZlY3Rv
ckRhdGEucmVzaXplKGRhdGFMZW5ndGgpOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2Rl
LCBjb25zdCBjaGFyCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVCbG9iRnJhbWUoV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIEJsb2ImIGJsb2IpCiB7CiAgICAgQVNTRVJUKG1f
b3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAg
IGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8g
ZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBv
cENvZGU7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlwZUJsb2I7CiAgICAg
ZnJhbWUtPmJsb2JEYXRhID0gJmJsb2I7CkBAIC03NjMsNyArNzYzLDcgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgICAgICAgICBy
ZWYoKTsgLy8gV2lsbCBiZSBkZXJlZmVkIGFmdGVyIGRpZEZpbmlzaExvYWRpbmcoKSBvciBkaWRG
YWlsKCkuCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2Jsb2JMb2FkZXIpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChmcmFtZS0+YmxvYkRhdGEpOwotICAgICAgICAgICAgICAgIG1fYmxvYkxv
YWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRl
cjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRl
ciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFz
QXJyYXlCdWZmZXIsIHRoaXMpOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9
IEJsb2JMb2FkZXJTdGFydGVkOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlci0+c3RhcnQo
bV9kb2N1bWVudC5nZXQoKSwgKmZyYW1lLT5ibG9iRGF0YSk7CiAgICAgICAgICAgICAgICAgbV9v
dXRnb2luZ0ZyYW1lUXVldWUucHJlcGVuZChXVEZNb3ZlKGZyYW1lKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5jcHAKaW5kZXggZjJmYTYyMDljMDQ4ZjUxNTE4YTI1ZWVjMTNhZWYyNTY0YzlmNGU3Yi4u
ZWUzM2VhMGZlNWNmMWQ1YmY3OWEyZGEwNjcwN2I3M2NkM2E3OGM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6Oldl
YlNvY2tldERlZmxhdGVGcmFtZXIoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9j
ZXNzb3IoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZT4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKIH0KIAogYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKQEAgLTE3MCw4ICsxNzAsOCBAQCBib29sIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUoKSBjb25zdAogI2lmIFVTRShaTElCKQogdm9pZCBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJT
b2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVyTW9kZSBtb2RlKQogewotICAgIG1fZGVmbGF0
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5kb3dCaXRzLCBtb2Rl
KTsKLSAgICBtX2luZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4o
KTsKKyAgICBtX2RlZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXREZWZsYXRlcj4od2luZG93
Qml0cywgbW9kZSk7CisgICAgbV9pbmZsYXRlciA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SW5mbGF0
ZXI+KCk7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5pbml0aWFsaXplKCkgfHwgIW1faW5mbGF0ZXIt
PmluaXRpYWxpemUoKSkgewogICAgICAgICBtX2RlZmxhdGVyID0gbnVsbHB0cjsKICAgICAgICAg
bV9pbmZsYXRlciA9IG51bGxwdHI7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZs
YXRlcjo6Q28KIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKICNpZiBVU0Uo
WkxJQikKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0ZVJlc3VsdEhv
bGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRI
b2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNO
b25Db250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgfHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFt
ZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkp
IHsKQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVmbGF0ZVJlc3VsdEhvbGRl
cj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShXZWJTb2NrZXRGcgogICAgIGZyYW1l
LnBheWxvYWRMZW5ndGggPSBtX2RlZmxhdGVyLT5zaXplKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
ICNlbHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4o
dGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7
CiAjZW5kaWYKIH0KIApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6cmVzZXREZWZsYXRlQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmZsYXRlUmVz
dWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKFdlYlNvY2tldEZyYW1l
JiBmcmFtZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5mbGF0ZVJl
c3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEluZmxhdGVS
ZXN1bHRIb2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpICYmIGZyYW1lLmNvbXByZXNz
KSB7CiAgICAgICAgIHJlc3VsdC0+ZmFpbCgiQ29tcHJlc3NlZCBiaXQgbXVzdCBiZSAwIGlmIG5v
IG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwCmluZGV4IDFkNmYxNzgyMmM4MDUyODFiNzBhNDE2MjBkY2RlZTZh
ZDJhYjg4OWMuLjRhNDg2NWY4NDk0ZDA2MTNlYWMzMjFhNTk0ZjhiYWUxOTk5NmJiMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0
RGVmbGF0ZXIoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUgY29udGV4dAogewog
ICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPj0gOCk7CiAgICAgQVNTRVJUKG1fd2luZG93Qml0cyA8
PSAxNSk7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3RyZWFtPigpOworICAg
IG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8el9zdHJlYW0+KCk7
CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKIH0KIApA
QCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0KCkKIFdlYlNv
Y2tldEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcihpbnQgd2luZG93Qml0cykKICAgICA6IG1f
d2luZG93Qml0cyh3aW5kb3dCaXRzKQogewotICAgIG1fc3RyZWFtID0gc3RkOjptYWtlX3VuaXF1
ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5nZXQoKSwgMCwgc2l6ZW9m
KHpfc3RyZWFtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDk5NDA3M2VhYTVlOGIyMzBkMWM4YjAwYzE2YzU5NjQzZTk3ODQyNjguLmRjNmY2
NjBmZDM4OGNlZmZhZjBlYmVmNmU2NjBlNmI2OTViYjYzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUo
U2NyaXB0RXhlY3V0CiAKICAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzazo6Q2xlYW51cFRhc2ssCi0gICAgICAgIFtjbGllbnRXcmFwcGVyID0gY2xpZW50V3JhcHBl
ci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGVlcj4o
Y2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwg
V1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwg
JmxvYWRlclByb3h5LCBwZWVyID0gbWFrZVVuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlS
ZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAg
ICAgICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+ZmFpbGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0
aW9uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiBCcmlkZ2U6OmluaXRpYWxpemUoKSBxdWl0
dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBtYWluVGhyZWFkRGVzdHJveSgpIHRvIGRlbGV0
ZSB0aGUgcGVlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2
aWdhdG9yV2ViVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JX
ZWJWUi5jcHAKaW5kZXggZDk3YjVjMmE4NWE5ZDIzMjhmOTg0MGY0NGQzZDFlOTYzMmM4MmQ5ZS4u
Nzc2YzQzYWVjMGI5YjViZGVhZGMzZGQ4OTEyNmFjZWQ2YmE3NTE2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgTmF2aWdhdG9yV2ViVlIqIE5hdmlnYXRvcldlYlZSOjpmcm9tKE5hdmlnYXRvciogbmF2aWdh
dG9yKQogewogICAgIE5hdmlnYXRvcldlYlZSKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yV2ViVlIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViVlI+KCk7CisgICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yV2ViVlI+KCk7CiAgICAg
ICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0RpZ2VzdE9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3Bl
bnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAppbmRleCBiYzIzZDU5Y2MzMTIzN2IxNDk3YTc2
YWNjNTlkM2VhZjVkMmI1ODQwLi42Y2E2N2YzOTFhMzFmY2QzODY5MjU1YjIxZjJmY2I3ZjNmYmY5
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0RpZ2VzdE9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RydWN0
IENyeXB0b0RpZ2VzdENvbnRleHRJbXBsIDogcHVibGljIENyeXB0b0RpZ2VzdENvbnRleHQgewog
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBjcmVhdGUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvRGlnZXN0Q29u
dGV4dEltcGw+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0RpZ2VzdENvbnRl
eHRJbXBsPigpOwogICAgIH0KIAogICAgIENyeXB0b0RpZ2VzdENvbnRleHRJbXBsKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCmluZGV4IDMxNTMx
NjgwODA3YjcyZDVlZjkzODA5MTRlN2FlMjQwYWQ5ZDAzOTcuLmU1M2UxOTViMzVmNDk4Zjc5NTI1
MTUxZWJjMmFjZWI1ZmFmY2QyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vQ2xvY2tHZW5lcmljLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAog
c3RkOjp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2xv
Y2tHZW5lcmljPigpOwogfQogCiBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCmluZGV4IGM2ODkzMjE1ZjA2
YjBjNjc0ZDU0NjA4MzNiMWE0ZDUxY2MzMmI2MTQuLjllMDcxYjc4MTRlNDRmZTAwNDQyZTY2Yzcy
MGIyYmZiMzEzMDY5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVt
L21hYy9DbG9ja0NNLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9D
bG9ja0NNLm1tCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBjb25zdCBpbnQzMl90IERlZmF1bHRU
aW1lU2NhbGUgPSAxMDAwOwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IENsb2NrOjpjcmVhdGUo
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENsb2NrQ00+KCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2xvY2tDTT4oKTsKIH0KIAogQ2xvY2tDTTo6Q2xvY2tDTSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBjYWNhYjg1
NjhjODYxMTJkOWNkZmVmYzMwOTAyNmFkOWM4MTUzM2U1Li5iMzVmYzE1NjQzN2YxY2EwOWQ2NDIy
YmQ1OWM3MTMzZmFjMmM2MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKQEAgLTE1NzUsNyArMTU3NSw3IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11
dGF0ZXMoKQogewogICAgIGlmICghbV9jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKQotICAg
ICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFY
Q29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsKKyAgICAgICAgbV9jb21wdXRlZE9iamVj
dEF0dHJpYnV0ZUNhY2hlID0gbWFrZVVuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2Fj
aGU+KCk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdDb21wdXRlZE9iamVj
dEF0dHJpYnV0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApp
bmRleCBlZGZkYmIwYTA2ZmQ2ZWRhMjUwNDhiOTcxOWI5ZWYxYmE5ZTEzNDQzLi5lNmRlYTk2MTFm
OWI0ODgwYTVhMTliOWFkMWUxYmRlNzFjMTg0Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9u
Ojp1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWsgZGlkU2VlaywgU3luY2hyb25vdXNseU5vdGlm
eSBzeW5jCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHN5bmNocm9ub3VzbHkgbm90aWZ5
IGlzIGZhbHNlLCBxdWV1ZSBhIG1pY3JvdGFzayB0byBydW4gZmluaXNoIG5vdGlmaWNhdGlvbiBz
dGVwcyBmb3IgYW5pbWF0aW9uIHVubGVzcyB0aGVyZQogICAgICAgICAgICAgLy8gaXMgYWxyZWFk
eSBhIG1pY3JvdGFzayBxdWV1ZWQgdG8gcnVuIHRob3NlIHN0ZXBzIGZvciBhbmltYXRpb24uCiAg
ICAgICAgICAgICBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IHRy
dWU7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKICAgICAgICAgICAgICAgICBpZiAobV9maW5p
c2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcpIHsKICAgICAgICAgICAgICAgICAg
ICAgbV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICAgICAgZmluaXNoTm90aWZpY2F0aW9uU3RlcHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKaW5kZXggN2RhNDZhNjE1MDRlZjI0
ODE1YTY5NGRmYmExMmMyOGIxZWY0ZmU2Ni4uNjIxYjg5MDUxYmI0OGRiMDMwMWVhODA0N2M3YWZl
ZmZiNjhjZGU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJv
bWlzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVBy
b3h5LmgKQEAgLTYwLDYgKzYwLDcgQEAgY2xhc3MgRE9NUHJvbWlzZVByb3h5IHsKIAogdGVtcGxh
dGU8PgogY2xhc3MgRE9NUHJvbWlzZVByb3h5PElETFZvaWQ+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01Qcm9taXNlUHJveHkoKSA9IGRlZmF1bHQ7CiAg
ICAgfkRPTVByb21pc2VQcm94eSgpID0gZGVmYXVsdDsKQEAgLTg0LDYgKzg1LDcgQEAgY2xhc3Mg
RE9NUHJvbWlzZVByb3h5PElETFZvaWQ+IHsKIC8vIEZvbnRGYWNlIGFuZCBGb250RmFjZVNldC4K
IHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiBjbGFzcyBET01Qcm9taXNlUHJveHlXaXRoUmVz
b2x2ZUNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB1c2luZyBSZXNvbHZlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHR5cGVuYW1lIElETFR5cGU6
OlBhcmFtZXRlclR5cGUgKCk+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9HQ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5oCmluZGV4IDBjZTQ1OTUwYzUzOTFmNjA2OTZmZDQwZDg5ZDkyN2RhMzg2YTg3ZDMuLjZj
ZWRkNzY2NDVlYzRmNWJmNDYwOTMyYjZhNmQxNzMzN2FkODE0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEdDQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0NDb250cm9sbGVyKTsKICAgICBmcmll
bmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxHQ0NvbnRyb2xsZXI+OwogcHVibGljOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZGIw
YzFkYzc2ZjhhMjg5NzA0NWVlMmNmYzkxOTIzZDU4ZGYxYjZmOS4uYzVjNDcwNjFiZmFjYTFmY2E3
MjhiZTI3YjBhMmI0YTlmMGIzMDI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBKU0RPTVdpbmRv
d0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxK
U0M6Ok1pY3IKICAgICBKU0RPTVdpbmRvd0Jhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90
YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBhdXRv
IG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+
KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNy
b3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRleCA2
Mjk1ZjU4NGNmZThhMTcyOWRkZjZiMThkNzc1NDlmZDQ0YzlhMGJlLi5kYjVlNzczNDkwYmVkZmJm
M2UwYzEwY2YyM2QwYTM2YzhhM2JkYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIEV2ZW50
VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQog
c3RkOjp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRXcmFwcGVyPiBqc0V2ZW50VGFyZ2V0Q2FzdChW
TSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBqc0R5
bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBlZCgp
LCAqdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBw
ZXI+KHRhcmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKICAgICBpZiAoYXV0byogd2luZG93ID0g
dG9KU0RPTVdpbmRvdyh2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+
d3JhcHBlZCgpLCAqd2luZG93KTsKICAgICBpZiAoYXV0byogc2NvcGUgPSB0b0pTV29ya2VyR2xv
YmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEpTRXZlbnRUYXJnZXRXcmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBwZWQo
KSwgKnNjb3BlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGQ4
MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcwYmI0MDIuLjliZDY2NDQ2MDE3MDU0OTVh
OTRlN2IzZmFkZjA0OGYzYzdiMDQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0ds
b2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SgogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90
YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBhdXRv
JiBjb250ZXh0ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3Jv
dGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11
dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFj
a01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwo
KTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMTE0ZmYzYzhhNWRmMDM5MDI4M2IxYTY3Y2U2MDhk
N2Y0MjQ2ZTdjMi4uMzVjY2Q0OTYzNWUwNjExOTRlOTcyOTNlNzEyZjdhYTM3MmM0OWJjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlx
dWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4+IHRyYW5zZmVyQXJyYXlCdWZmZQogICAg
IGlmIChhcnJheUJ1ZmZlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGF1dG8gY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNB
cnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CisgICAgYXV0byBjb250ZW50cyA9IG1ha2VVbmlx
dWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1ZmZlcnMuc2l6ZSgpKTsKIAogICAg
IEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJy
YXlCdWZmZXJJbmRleCA9IDA7IGFycmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgp
OyBhcnJheUJ1ZmZlckluZGV4KyspIHsKQEAgLTM0NTEsNyArMzQ1MSw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShFeGVjU3RhdGUmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJh
eSB3YXNtTW9kdWxlczsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+KCk7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJnN0YXRl
LCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1bGVzLCAKQEAgLTM0NjksNyArMzQ2
OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlC
dWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlh
bGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVy
cykgOiBudWxscHRyLCBXVEZNb3ZlKGltYWdlQnVmZmVycykKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCi0gICAgICAgICAgICAgICAgLCBzdGQ6Om1ha2VfdW5pcXVlPFdhc21Nb2R1bGVBcnJheT4o
d2FzbU1vZHVsZXMpCisgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21Nb2R1bGVBcnJh
eT4od2FzbU1vZHVsZXMpCiAjZW5kaWYKICAgICAgICAgICAgICAgICApKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXgg
NWM0NjYyOTRiZWU1NmMyMWJmMGY2M2QxNWIwZjhkZjBmMjdhM2EwZS4uNGY0YjBjZjNiN2VlY2Rk
ZDA3ODcwMjU1MjA4ODk1ZTQ1ZmEyYTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQoYXJy
YXlMZW5ndGgpOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBhdXRvIGFycmF5QnVm
ZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pigp
OwogICAgIHdoaWxlIChhcnJheUxlbmd0aC0tKSB7CiAgICAgICAgIHVuc2lnbmVkIGJ1ZmZlclNp
emU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCmluZGV4IDI0
NmY2NGE5ZjYzMjJiNTg3MGNiYjY4MmVkYjJkNGVkYjk1M2VjN2MuLjNiMTEyNTJhZTY0Y2FmMmU0
ZmU3MzllMzFlZTEwOTk1NGQ1NmE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgSlNW
TUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0pCiAgICAgSlNWTUNsaWVudERhdGEq
IGNsaWVudERhdGEgPSBuZXcgSlNWTUNsaWVudERhdGEoKnZtKTsKICAgICB2bS0+Y2xpZW50RGF0
YSA9IGNsaWVudERhdGE7IC8vIH5WTSBkZWxldGVzIHRoaXMgcG9pbnRlci4KICAgICAKLSAgICB2
bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChzdGQ6Om1ha2VfdW5pcXVlPERPTUdDT3V0cHV0
Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOworICAgIHZtLT5oZWFwLmFkZE1hcmtpbmdD
b25zdHJhaW50KG1ha2VVbmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGllbnRE
YXRhKSk7CiAgICAgICAgIAogICAgIGNsaWVudERhdGEtPm1fbm9ybWFsV29ybGQgPSBET01XcmFw
cGVyV29ybGQ6OmNyZWF0ZSgqdm0sIHRydWUpOwogICAgIHZtLT5tX3R5cGVkQXJyYXlDb250cm9s
bGVyID0gYWRvcHRSZWYobmV3IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKaW5kZXggMTZhNzZjNDk1MjlhNGJiODcxY2I2NmNhM2FkNzVhMmQ3NmE4MDY1NS4uZDIzOTg1
N2FhM2JkZGU5ZmViOWNiODc0MGZjZjVkNjQ5ZTM1MGRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEyMSw3
ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAg
IEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtlckds
b2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVj
dCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKIAotICAgIG1fY29uc29sZUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xvYmFs
U2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUNs
aWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKaW5kZXggMjljODE4NjgzNmVhMDU0MTFlOGYxZWQ2NDFj
MDU3MGNlODE3NjgxNS4uYWE1NmUyZmRlODU1NzdhY2Y5YzA0NzRjODk4NzdmNGUwZDVjNTEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgTWV0aG9k
KiBDQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNl
KiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2Fz
dDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3Qt
PmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzTWV0aG9kICYmIG1faXNhLT5oYXNNZXRo
b2Qob2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5pcXVl
PENNZXRob2Q+KGlkZW50KTsKKyAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPENNZXRo
b2Q+KGlkZW50KTsKICAgICAgICAgQ01ldGhvZCogcmV0ID0gbWV0aG9kLmdldCgpOwogICAgICAg
ICBtX21ldGhvZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICBy
ZXR1cm4gcmV0OwpAQCAtMTAzLDcgKzEwMyw3IEBAIEZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogICAg
IGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGlu
c3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAgaWYg
KG1faXNhLT5oYXNQcm9wZXJ0eSAmJiBtX2lzYS0+aGFzUHJvcGVydHkob2JqLCBpZGVudCkpIHsK
LSAgICAgICAgYXV0byBmaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0ZpZWxkPihpZGVudCk7Cisg
ICAgICAgIGF1dG8gZmllbGQgPSBtYWtlVW5pcXVlPENGaWVsZD4oaWRlbnQpOwogICAgICAgICBD
RmllbGQqIHJldCA9IGZpZWxkLmdldCgpOwogICAgICAgICBtX2ZpZWxkcy5zZXQobmFtZS5pbXBs
KCksIFdURk1vdmUoZmllbGQpKTsKICAgICAgICAgcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IGYyZjYyMDgyYTgwOGExOWYxMGE1ZDkzNWQ5MjJiNzcz
YzEyMjFjMjguLjA0Y2RkY2QyNGNhYTgyOWMzMmU1NmVjMjczYWZiZDM1MWYyNTRlMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBS
b290T2JqZWN0OwogY2xhc3MgUnVudGltZU9iamVjdDsKIAogY2xhc3MgRmllbGQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1
ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSopIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0ZSosIGNvbnN0IEluc3Rh
bmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
Y2xhc3MubW0KaW5kZXggYjg2Zjc1MWEwYTcxMzhiZTAwNzc2YTc4Y2JjMmE2ZDQ1ZGQzNzUwMi4u
YTNkOGQzMmYyOGRkODA1OGE0YWI0NDI3Mzk1MzQ0MDc0ZjI2Yzc1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgTWV0aG9kKiBP
YmpjQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNl
KikgY29uc3QKICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJTY3Jp
cHROYW1lRm9yU2VsZWN0b3I6b2JqY01ldGhvZFNlbGVjdG9yXTsKIAogICAgICAgICAgICAgaWYg
KChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nKilt
ZXRob2ROYW1lLmdldCgpXSkgfHwgIXN0cmNtcChvYmpjTWV0aG9kU2VsZWN0b3JOYW1lLCBidWZm
ZXIuZGF0YSgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CisgICAgICAg
ICAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPE9iamNNZXRob2Q+KHRoaXNDbGFzcywg
b2JqY01ldGhvZFNlbGVjdG9yKTsKICAgICAgICAgICAgICAgICBtZXRob2RQdHIgPSBtZXRob2Qu
Z2V0KCk7CiAgICAgICAgICAgICAgICAgbV9tZXRob2RDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdU
Rk1vdmUobWV0aG9kKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODksNyArMTg5LDcg
QEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0g
W3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5OlVURjhLZXlOYW1lXTsKIAogICAgICAgICAg
ICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3Ry
aW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgW2tleU5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNT
dHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBuZXdGaWVs
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5
TmFtZSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IG1ha2VVbmlxdWU8T2JqY0Zp
ZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5TmFtZSk7CiAgICAgICAgICAgICAgICAgZmll
bGQgPSBuZXdGaWVsZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtX2ZpZWxkQ2FjaGUuYWRkKG5h
bWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0yMjAsNyArMjIwLDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAgICAg
ICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktleTpvYmpjSXZh
ck5hbWVdOwogCiAgICAgICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1l
IGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgIXN0cmNt
cChvYmpjSXZhck5hbWUsIGpzTmFtZS5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1
dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOworICAg
ICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gbWFrZVVuaXF1ZTxPYmpjRmllbGQ+KG9i
amNJVmFyKTsKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShu
ZXdGaWVsZCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCBlMDhiMDQ4ZTNiNTY4NDI5OGNkZWZkOTNl
YjkxODgzODkxNTZmNDM4Li4zYjkzZTE4NzgzODU0YzI0NDQ2ZTFjZmE1NzU4NDY2ZjBmMGE3ZjQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yNjcs
NyArMjY3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iakNG
YWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgaWYgKFt0YXJnZXRPYmpl
Y3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9t
V2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBPYmpjQ2xhc3MqIG9iamNDbGFz
cyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0Q2xhc3MoKSk7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChzdGQ6Om1h
a2VfdW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZva2VV
bmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QobWFrZVVuaXF1ZTxPYmpj
TWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9k
RnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBu
YW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4ZWMt
PmpzQ2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKICAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNl
dEphdmFTY3JpcHROYW1lKG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
ICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmludm9rZU9iamNNZXRob2QoZXhlYywgZmFs
bGJhY2tNZXRob2QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKaW5kZXggODNkNDRlMDY3ZmJkZjU0N2Y2
Yzg4YjY3YTM2ZWI1M2Y2OTE0NjZlZS4uZjE3MWE1ODIwM2Y5OGFmMTU1NDc4MGUwNTE5ZTA0YTFl
NTNhMGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29t
YmluZWRVUkxGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBDb21iaW5l
ZFVSTEZpbHRlcnM6OnByaW50KCkgY29uc3QKICNlbmRpZgogCiBDb21iaW5lZFVSTEZpbHRlcnM6
OkNvbWJpbmVkVVJMRmlsdGVycygpCi0gICAgOiBtX3ByZWZpeFRyZWVSb290KHN0ZDo6bWFrZV91
bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKKyAgICA6IG1fcHJlZml4VHJlZVJvb3QobWFrZVVu
aXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpKQogewogfQogCkBAIC0yMDksNyArMjA5LDcgQEAgdm9p
ZCBDb21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4odWludDY0X3QgYWN0aW9uSWQsIGNvbnN0
IFZlY3RvcjxUZXJtPiYgcGF0dGUKICAgICAgICAgaWYgKG5leHRFbnRyeUluZGV4ICE9IFdURjo6
bm90Rm91bmQpCiAgICAgICAgICAgICBsYXN0UHJlZml4VHJlZSA9IGxhc3RQcmVmaXhUcmVlLT5l
ZGdlc1tuZXh0RW50cnlJbmRleF0uY2hpbGQuZ2V0KCk7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhUcmVlRWRnZSh7bV9hbHBo
YWJldC5pbnRlcm5lZCh0ZXJtKSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVydGV4Pigp
fSkpOworICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhUcmVl
RWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgbWFrZVVuaXF1ZTxQcmVmaXhUcmVlVmVy
dGV4PigpfSkpOwogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+
ZWRnZXMubGFzdCgpLmNoaWxkLmdldCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuaAppbmRleCA4YzdlM2Y3ZDdmMWUwZDU1YWFkODkzNGFiYmE1YWE3MGZiOGY4NWNmLi43
N2ZlYjYwYzUwYmM4YTRmMjRiMjc2OTZhZDExMGQxZWRhNzQyODA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQuaApAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKIC8vIDEp
IEl0IHN0b3JlcyB0aGUgcnVsZXMgZm9yIGVhY2ggY29udGVudCBleHRlbnNpb24uCiAvLyAyKSBJ
dCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZhY2VzIHRvIHVzZSB0aG9zZSBy
dWxlcyBlZmZpY2llbnRseS4KIGNsYXNzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gLSBSdWxlIG1hbmFnZW1l
bnQgaW50ZXJmYWNlLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHVwcGVyIGxheWVyLgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IDk2ZTJkNjM0Yjg5M2IzOTkzMDRhOGIy
YjI4NWU2MWY0ZTQ2OWRjMGMuLmIyYTlhNzgzNTIyNzcyODNmOTVkODQ5ZDAzYjE1NmZjZGM3MjFk
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC0xMTUsMzEgKzEx
NSwzMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6RGVj
cnlwdDoKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBj
b252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihzdGF0ZSwgdmFs
dWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzoKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9
IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4oc3RhdGUs
IHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4
Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFyYW1z
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ2Jj
Q2ZiUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOiB7CiAgICAgICAgICAg
ICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0N0clBh
cmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFt
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOiB7CiAgICAg
ICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFl
c0djbVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0dj
bVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgRXhjZXB0
aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxp
emVDcnlwdG9BbAogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4o
cGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkVDRFNBOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnRE
aWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkp
OwpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAg
ICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFy
YW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVj
ZHNhUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlw
dG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BTUzog
ewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdv
cml0aG1Sc2FQc3NQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGlj
IEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4g
bm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMjU2OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8z
ODQ6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
IH07CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OiB7CiAgICAg
ICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobVJz
YUtleUdlblBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJz
YUtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FTU0FfUEtDUzFfdjFfNToKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlw
dG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAg
ICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAg
cmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yMTMsNyArMjEzLDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25h
cnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkhNQUM6IHsKQEAgLTIyMywxNCArMjIzLDE0IEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNy
eXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsK
ICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENy
eXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRp
b25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI0OSw3ICsyNDksNyBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+PiBub3JtYWxpemVDcnlwdG9BbAogCiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHN0YXRlLCBu
ZXdWYWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5
RGVyaXZlUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOiB7CkBAIC0yNTksNyAr
MjU5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRl
bnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50
aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlm
aWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhrZGZQ
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjogewpAQCAtMjY5LDcgKzI2OSw3
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZp
ZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVy
LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9
IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBia2RmMlBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRl
ZmF1bHQ6CkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBj
YXNlIE9wZXJhdGlvbnM6OkltcG9ydEtleToKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikg
ewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3Yx
XzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOgpAQCAtMjkw
LDcgKzI5MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFz
aElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJ
ZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRl
bnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBv
cnRQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
QUVTX0NUUjoKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFt
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpITUFDOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9u
YXJ5PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CkBA
IC0zMDcsMTkgKzMwNywxOSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAg
aWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMu
aGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tl
eVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAgICAg
ICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tleVBh
cmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1z
PihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzI5LDcgKzMy
OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpVbndy
YXBLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFt
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzQ0LDcgKzM0NCw3IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0
aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0zNTQsMTIgKzM1NCwxMiBAQCBzdGF0aWMgRXhjZXB0
aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxp
emVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtNTIwLDE2ICs1MjAsMTYgQEAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcm9zc1RocmVhZENvcHlJbXBvcnRQ
YXJhbXMoY28KIHsKICAgICBzd2l0Y2ggKGltcG9ydFBhcmFtcy5wYXJhbWV0ZXJzQ2xhc3MoKSkg
ewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6Ok5vbmU6IHsKLSAg
ICAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPigpOwogICAgICAgICByZXN1bHQtPmlkZW50aWZpZXIgPSBpbXBvcnRQYXJh
bXMuaWRlbnRpZmllcjsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6RWNLZXlQYXJhbXM6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9zc1Ro
cmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBhcmFt
cykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJh
bXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4o
aW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xh
c3M6OkhtYWNLZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShk
b3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6UnNhSGFzaGVkSW1wb3J0
UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1S
c2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihjcm9z
c1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1z
PihpbXBvcnRQYXJhbXMpKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGRiY2NjOTAwZjMzNzQ4Y2QyMDY3ZjYwY2IyOTBjMGJk
NjAwNjU1MzMuLmE0MmY1NjRmODFmZTFmMGVhMDk0NDNkMWYxMDUzYzFjM2NkMGNmM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTIxNywxMiArMjE3
LDEyIEBAIGNsYXNzIENTU0NhbGNQcmltaXRpdmVWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NDYWxj
RXhwcmVzc2lvbk5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChjYXRlZ29yeSgpKSB7CiAg
ICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyOgotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZsb2F0
VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk51
bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNh
dGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxj
RXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNv
bnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxlbmd0
aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkpOwogICAgICAgICBjYXNl
IENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25D
YXRlZ29yeTo6UGVyY2VudExlbmd0aDogewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhl
ZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFs
dWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJz
aW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAgICAgICB9CiAgICAgICAgIC8vIE9ubHkgdHlwZXMg
dGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVuZ3RoIGV4cHJlc3Npb24gY2FuIGJlIGNvbnZlcnRl
ZAogICAgICAgICAvLyB0byBhIENhbGNFeHByZXNzaW9uTm9kZS4gQ2FsY3VsYXRpb25DYXRlZ29y
eTo6UGVyY2VudE51bWJlciBtYWtlcyBubyBzZW5zZSBhcyBhIExlbmd0aC4KQEAgLTUyMCw3ICs1
MjAsNyBAQCBjbGFzcyBDU1NDYWxjT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICBub2Rlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShub2RlKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1v
dmUobm9kZXMpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4
cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKICAgICB9CiAK
ICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBmaW5hbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAppbmRleCBjNDRjZWJjNTEyMGVkODMyNmQ5YTFi
MmE2NTZiOTM2N2I2ZTE5MTI4Li5lNWFlOGI3N2E1MTRmMDljM2I0OTQ0MWI1NjJmNWMyYTFlYzc1
MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcApA
QCAtMTY3LDExICsxNjcsMTEgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRGdWxs
RGVmYXVsdFN0eWxlKCkKICAgICAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBudWxscHRy
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKLSAgICAgICAg
ZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2Uo
KTsKKyAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJl
bGVhc2UoKTsKICAgICB9CiAKLSAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bGVTZXQ+KCkucmVsZWFzZSgpOwotICAgIGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVl
PFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQcmludFN0eWxlID0gbWFrZVVuaXF1
ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZTdHls
ZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSkubGVh
a1JlZigpOwogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCkBAIC0xOTAsMTAgKzE5MCwxMCBA
QCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCiAg
ICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwogICAgIEFTU0VSVCghc2ltcGxlRGVmYXVsdFN0eWxl
U2hlZXQpOwogCi0gICAgZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0Pigp
LnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVs
ZWFzZSgpOwogICAgIC8vIFRoZXJlIGFyZSBubyBtZWRpYS1zcGVjaWZpYyBydWxlcyBpbiB0aGUg
c2ltcGxlIGRlZmF1bHQgc3R5bGUuCiAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBkZWZhdWx0U3R5
bGU7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0Pigp
LnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+
KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hl
ZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwgc3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0eWxl
U2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzaW1wbGVEZWZh
dWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3Bw
CmluZGV4IDc3MDliNWRlYWZiZmU5ZjlhYjExYWMwNzdjNjE5ZDc5NGQxNjQyZjIuLjY0NmMxNGEx
MWFjNjQ1Yjk5MjYxNDlmMjllOTgwMGM0YzcyNjdiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJj
ZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAgICAg
ICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRpbmdz
ICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoKSk7CiAgICAgICAg
ICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9ybWF0KCkgJiYg
ZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoQ2FjaGVkRm9udCogY2FjaGVkRm9udCA9
IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVt
ZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAgICAgICAgICAgICAgICAgICAgc291cmNlID0g
c3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3Vy
Y2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlx
dWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZv
bnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNvdXJjZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291
cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxlbWVudCk7CisgICAgICAgICAgICBzb3VyY2UgPSBt
YWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBu
dWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwogCiAgICAgICAgIGlmIChzb3VyY2UpCiAgICAgICAg
ICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggMDVlM2EzZjZlMjFiYzkyODE3ODU1NjlhMTRhYTUw
ZmY1MmU0YTI3MC4uMThlODM0ZDY5MGE2ZWI1MTAxZGM5MGM4ZGU1ZGI1ZTdhMWIwYzVkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9p
ZCBDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVk
KGNvbnN0IFN0cmluZyYgZmFtaWwKICAgICAgICAgZmFtaWx5TGlzdC0+YXBwZW5kKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhbWlseVZhbHVlKGZhbWlseU5hbWUpKTsKICAg
ICAgICAgZmFjZS0+c2V0RmFtaWxpZXMoZmFtaWx5TGlzdC5nZXQoKSk7CiAgICAgICAgIGZhY2Ut
PnNldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMoaXRlbSk7Ci0gICAgICAgIGZhY2UtPmFkb3B0
U291cmNlKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCksIGZh
bWlseU5hbWUpKTsKKyAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2UobWFrZVVuaXF1ZTxDU1NGb250
RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOwogICAgICAgICBBU1NFUlQoIWZh
Y2UtPmNvbXB1dGVGYWlsdXJlU3RhdGUoKSk7CiAgICAgICAgIGZhY2VzLmFwcGVuZChXVEZNb3Zl
KGZhY2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBp
bmdSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCmluZGV4
IGRlNmYzOWQzZjVkODczMWQ5OWU1ZWIzYzk2OGUyOWFkMWVhY2JmZTYuLmM2YzVjMzk1NDBhNWM1
MDVjZGY0ZDU5Yzc0NmMzOTE4NWM5ZTAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcm91cGluZ1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGlu
Z1J1bGUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQ1NTUnVsZSogQ1NTR3JvdXBpbmdSdWxlOjpp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENTU0dyb3VwaW5nUnVsZTo6
Y3NzUnVsZXMoKSBjb25zdAogewogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKLSAg
ICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNTU1J1
bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4oKnRo
aXMpKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2ZUNT
U1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4o
KnRoaXMpKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCBmZmRkM2Qw
YWE2NTdmMjVlYWYzMWQ1NzBjNTg2OGVkNTMwOWUyZWZkLi41NTUxZjJjNjkxN2QwMzMwNzI2YWNk
ZjgxMDkxYTkxZmFiNGUwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgR2VuZXJhdGVkSW1hZ2UqIENTU0lt
YWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSkKIHZv
aWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNp
emUgc2l6ZSwgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKQogewogICAgIEFTU0VSVCghbV9pbWFnZXMu
Y29udGFpbnMoc2l6ZSkpOwotICAgIG1faW1hZ2VzLmFkZChzaXplLCBzdGQ6Om1ha2VfdW5pcXVl
PENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKKyAgICBtX2ltYWdl
cy5hZGQoc2l6ZSwgbWFrZVVuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNpemUs
IGltYWdlKSk7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNoZWRH
ZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFt
ZXNSdWxlLmNwcAppbmRleCBjOTA5ODMyZGEwZTUxOTAyNTM1MTNhMzk4MzE5MWE3YzJmMzkzMDA1
Li42ZjFlYjMzODZkOWZiYzcyZDQ0Mzc4NWQxZDE5YzRkZDhjNWMzN2RkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgQ1NTS2V5ZnJh
bWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NT
UnVsZUxpc3QmIENTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKCkKIHsKICAgICBpZiAoIW1fcnVs
ZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMpOwor
ICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVsZUxp
c3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NP
TVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA0ODBh
ODk4NTIzN2FkYTkwYTExNzhlMGIyNzllMGU2NjgwN2UzMzQxLi5jODhkMWVkYzkzYjdhNmM4M2Yy
MTc3YmFjNzY3ZjliNzgyZWU3NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
CkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0Ojpj
c3NSdWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxp
c3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlzdD4o
dGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPFN0eWxl
U2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CiAgICAgcmV0dXJuIG1fcnVsZUxpc3RDU1NPTVdyYXBw
ZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWlu
dFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAK
aW5kZXggNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MC4uOTE0YmRlNGEy
ZGU5YWEyMTA2YzAxMDYzYjgwOGQ5Y2E0ZmZmNmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRE9NQ1NTUGFpbnRXb3JrbGV0
KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCiB7CiAgICAg
YXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1BhaW50V29ya2xldCo+KFN1cHBs
ZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAg
ICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1BhaW50V29ya2xldD4oY3NzKTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmY3Nz
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAK
aW5kZXggN2VjZDkzZDdkYzNkNDMyZWFmODJiYzk1NmU2MWQ0ODlhNTEwNjI1Yi4uMGRmNmFhZTk2
ZjBlMWM3MGIzNzU1NjE2NDllZTM1ZDI4ZWI0YzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcApAQCAtODQsNyArODQsNyBA
QCBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5KiBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5Ojpmcm9tKERPTUNTU05hbWVzcGFjZQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0
aWNfY2FzdDxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Kj4oU3VwcGxlbWVudDxET01DU1NO
YW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBs
ZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNzcyk7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRl
VG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCmluZGV4IGQ4NTk2ZmQxYjI0
NTlkZTA3ZTFjODk5Y2MwNzlmYzE5ODUxMTY1ZTkuLjgyYjdmY2MzMGU1ODI3NDk5MjAyZTI4Yjgz
MDg2Y2YwZmE0NGFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1
bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBEb2N1bWVudFJ1bGVTZXRzOjpzX2lzSW52YWxpZGF0aW5n
U3R5bGVXaXRoUnVsZVNldHMgeyBmYWxzZSB9OwogRG9jdW1lbnRSdWxlU2V0czo6RG9jdW1lbnRS
dWxlU2V0cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAgIDogbV9zdHlsZVJlc29s
dmVyKHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgbV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0Pigp
OwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIApAQCAt
NzgsNyArNzgsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1lZGlh
UXVlcnlTdHlsZUlmTmVlZGVkKCkgY29uc3QKIAogICAgIC8vIE1lZGlhIHF1ZXJpZXMgb24gdXNl
ciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRlZCBpbiBkb2N1bWVudCBjb250ZXh0LiBUaGV5
IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4gdGhpcyByZXNwZWN0LgogICAgIGF1dG8mIG1l
ZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigp
OwotICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxl
U2V0PigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gbWFrZVVuaXF1ZTxSdWxl
U2V0PigpOwogICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRpYVF1ZXJ5U3R5bGVTaGVldCwgbWVkaWFRdWVy
eUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAKICAgICAvLyBWaWV3cG9ydCBkZXBlbmRl
bnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBpbmVmZmljaWVudCB0byBhbGxvdyBvbiBVQSBz
aGVldC4KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXpl
VXNlclN0eWxlKCkKIHsKICAgICBhdXRvJiBleHRlbnNpb25TdHlsZVNoZWV0cyA9IG1fc3R5bGVS
ZXNvbHZlci5kb2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hlZXRzKCk7CiAgICAgYXV0byYgbWVk
aWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7
Ci0gICAgYXV0byB0ZW1wVXNlclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOwor
ICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBpZiAo
Q1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBhZ2VV
c2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocGFn
ZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNv
bHZlcik7CiAgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25TdHls
ZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSwgbWVkaWFR
dWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29sdmVyKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxl
RmVhdHVyZT4mIHJ1bGVzKQogICAgIHNpemVfdCBzaXplID0gcnVsZXMuc2l6ZSgpOwogICAgIGlm
ICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBydWxlU2V0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8gcnVsZVNldCA9IG1ha2VVbmlxdWU8
UnVsZVNldD4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAg
ICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3RvckluZGV4
LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgcnVsZVNldC0+c2hyaW5rVG9GaXQo
KTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1h
a2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogdm9pZCBEb2N1bWVu
dFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2lzQXV0aG9yU3R5bGVEZWZp
bmVkID0gdHJ1ZTsKLSAgICBtX2F1dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV9h
dXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC0xOTUsMTIgKzE5
NSwxMiBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlk
YXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJgogICAgICAgICAgICAgYXV0byBhcnJheUlu
ZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpmZWF0dXJlLm1hdGNoRWxlbWVudCk7CiAgICAg
ICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50QXJyYXlbYXJyYXlJbmRleF07CiAg
ICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCi0gICAgICAgICAgICAgICAgcnVsZVNldCA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICAgICAgICAgICAgICBydWxlU2V0ID0gbWFrZVVu
aXF1ZTxSdWxlU2V0PigpOwogICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShmZWF0dXJlLnJ1
bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7CiAg
ICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICAgICAgICAg
ICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLmFwcGVuZChmZWF0dXJl
LmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGludmFsaWRh
dGlvblJ1bGVTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNl
dD4+KCk7CisgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMgPSBtYWtlVW5pcXVlPFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAo
bWF0Y2hFbGVtZW50QXJyYXlbaV0pCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uUnVsZVNl
dHMtPmFwcGVuZCh7IHN0YXRpY19jYXN0PE1hdGNoRWxlbWVudD4oaSksIFdURk1vdmUobWF0Y2hF
bGVtZW50QXJyYXlbaV0pLCBXVEZNb3ZlKGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlbaV0pIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXggMDVk
Mzg1YTU1OGM0OGM0OGVlOGRhOTBmNmExOGNiNGU3NWE2YTk1YS4uMDViNDU3ZmQ2ODIwYzY3ZjBl
MGZiZTkzMDg3YjhjZWYwODI5ZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1
bGVDb2xsZWN0b3IuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVT
ZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQ
c2UKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgYXV0byBydWxlRGF0YVZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldDo6
UnVsZURhdGFWZWN0b3I+KCk7CisgICAgYXV0byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlxdWU8
UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZURhdGFWZWN0b3ItPnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkUnVsZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIG1h
dGNoZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMpCiAgICAgICAgIHJ1bGVEYXRhVmVjdG9yLT51bmNo
ZWNrZWRBcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
CmluZGV4IDIxMjI0NWRlZGNhZmY5NTZhZDQ0MTA3YjllYjQ0Y2I0MTMyOGFhZGIuLmUxYjFhZjIw
ZmIxMWFlM2RmZWUxOTJjYWM5MmU2MmNkZWE1NTdkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIHBv
cHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBSZWY8
SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJWaWV3KQogewotICAgIGF1dG8gc291
cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0cmlu
ZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOworICAgIGF1
dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0cmlu
ZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAgIGZv
bnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcAppbmRleCAzYjIwZDQxMzMzNzUzM2Q2Y2IzYzU4Y2IzZDEwNGYwZjA0YjVlNjE5
Li5lMWUxZDcyMTIxMWU2ZGUwMWE4YTg2ZTBkNDBkODUyODk5N2IzNTcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcApA
QCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTCiAgICAgLy8gVGhlIG1h
cCBpcyBoZXJlIHRvIG1haW50YWluIHRoZSBvYmplY3QgaWRlbnRpdHkgb2YgdGhlIENTU1ZhbHVl
cyBvdmVyIG11bHRpcGxlIGludm9jYXRpb25zLgogICAgIC8vIEZJWE1FOiBJdCBpcyBsaWtlbHkg
dGhhdCB0aGUgaWRlbnRpdHkgaXMgbm90IGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkg
YW5kIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZC4KICAgICBpZiAoIW1fY3Nzb21WYWx1ZVdy
YXBwZXJzKQotICAgICAgICBtX2Nzc29tVmFsdWVXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKTsKKyAg
ICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8Q1NTVmFsdWUq
LCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CiAgICAgCiAgICAgYXV0byYgY2xv
bmVkVmFsdWUgPSBtX2Nzc29tVmFsdWVXcmFwcGVycy0+YWRkKGludGVybmFsVmFsdWUsIFdlYWtQ
dHI8RGVwcmVjYXRlZENTU09NVmFsdWU+KCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoY2xv
bmVkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRleCBkZmZkYTZmNTFkZjk1
NGQyMDZmMDNkMGM3MzU2MGRkYTM5MmQxNDMwLi40NGVlYjFkNzAyZDJmOWRjYjZiMTJiNTUyNzgx
NTY3ZmQwMGQyZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTE3NCw3ICsx
NzQsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURh
dGEmIHJ1bGVEYXRhKQogCiAgICAgZm9yIChhdXRvJiBuYW1lQW5kTWF0Y2ggOiBzZWxlY3RvckZl
YXR1cmVzLmNsYXNzZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUobmFtZUFuZE1hdGNo
LmZpcnN0LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1
bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZl
YXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRh
LnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKICAgICAgICAgaWYg
KG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAg
Y2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVBbmRNYXRjaC5maXJzdCk7CkBAIC0xODMsNyAr
MTgzLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVE
YXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0byogc2VsZWN0b3IgPSBzZWxlY3RvckFuZE1hdGNo
LmZpcnN0OwogICAgICAgICBhdXRvIG1hdGNoRWxlbWVudCA9IHNlbGVjdG9yQW5kTWF0Y2guc2Vj
b25kOwogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoc2VsZWN0b3ItPmF0dHJpYnV0ZSgp
LmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIFtdIHsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9
KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1
bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwgbWF0
Y2hFbGVtZW50LCBzZWxlY3RvcikpOwogICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1hdGNo
RWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChz
ZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29uc3Qg
UnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5k
VmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogICAgIGZvciAoYXV0byYga2V5
VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVuc3Vy
ZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5h
cHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGNsYXNzZXNBZmZl
Y3RpbmdIb3N0LmFkZChvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5j
bGFzc2VzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFp
ciA6IG90aGVyLmF0dHJpYnV0ZVJ1bGVzKSB7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVuc3Vy
ZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5h
cHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGF0dHJpYnV0ZXNB
ZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBv
dGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAK
aW5kZXggZmE2YjkxMjAyMTNlYzU0YmI2NTkwM2NmYWU2NjliZDQ2NmZiYjAyNy4uM2JiYmJmZWJj
YTAwOTk3ODJhZjM5ODFlYjg2NzM2Y2U2ODAzNmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcApA
QCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KGNvbnN0IEF0b21T
dHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhCiAgICAgICAgIHJldHVy
bjsKICAgICBhdXRvJiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgaWYgKCFydWxlcykKLSAgICAgICAgcnVsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bGVEYXRhVmVjdG9yPigpOworICAgICAgICBydWxlcyA9IG1ha2VVbmlxdWU8UnVsZURhdGFWZWN0
b3I+KCk7CiAgICAgcnVsZXMtPmFwcGVuZChydWxlRGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA2OWFmNTU4MTU2NTRiZTMyMGYxYTlm
ZDcxYTc3NjY3ZDkyOTNmYTk3Li44ODc3NWFkN2JhOGFhNTkwYWQ3YmY3MmEzN2QzYjVmNjViNWQy
ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0z
NDgsOSArMzQ4LDkgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgKICAgICAvLyBUdXJuIHRoaXMg
aW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2Vu
dCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNF
eHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9y
OjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxj
RXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVu
Y2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsK
KyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92
ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0aChD
YWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDlhMTkxZDE3ZGQ4
ZTNlZGNjMWMxMzBjMjY1OTBlMGNhNmY0ZTM2YTMuLmM1YzJiZjVkMGY1ZmM3OTEwYWZmMTYyNTk5
OTBjNDM4NjYwYzE0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgK
QEAgLTgxMyw3ICs4MTMsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICAgICAg
Y29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpzaGFkb3dWYWx1
ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0
eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxp
ZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBhdXRvIHNoYWRvd0Rh
dGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQs
IHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29s
b3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICBpZiAo
cHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0ZpcnN0
RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5
CiAgICAgICAgIGVsc2UKQEAgLTgyOSw3ICs4MjksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bAogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFk
b3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hh
ZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVu
dFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hh
ZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxl
KCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC04NDQsNyArODQ0LDcgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRC
b3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJv
eFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5w
YXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNo
YWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHls
ZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEzNTksNyArMTM1OSw3IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVy
VmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQg
IT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNf
Y2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAg
ICAgICAgICBhdXRvIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50Pihj
b3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5z
ZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50
ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291
bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRp
ZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuY3BwCmluZGV4IDRjZjZjNmY3YWI3ZGY5ZmMwNDMzNGJiZThkZDA1YTNiNTU5ZTkzNWMu
LjE5Y2IwMzNkNzBiYjVhODk2ODY1NTcyNzU1Yjk2Yjk3NzA1MWNiNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0xNTMwLDcgKzE1MzAsNyBAQCBDU1NTdHlsZURl
Y2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0
aW9uKCkKICAgICAgICAgQVNTRVJUKCFtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpKTsK
ICAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRo
aXMpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVuaXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCkBA
IC0xNTQwLDcgKzE1NDAsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eQogICAgICAgICBBU1NF
UlQobV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSA9PSAmcGFyZW50RWxlbWVudCk7CiAg
ICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFwcGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywgcGFy
ZW50RWxlbWVudCk7CisgICAgbV9jc3NvbVdyYXBwZXIgPSBtYWtlVW5pcXVlPElubGluZUNTU1N0
eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKICAgICByZXR1cm4gKm1fY3Nz
b21XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggM2E1
MmMzNjE5OWE3OWEyNWUwOWMwMWQ4ZmEwYzUwYWVmZjY4MmJiNS4uZGU0ZGE1ZjU1MTI5OTA5MzFk
YTg2YzVjN2U4M2JjYjEwMTgwOGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMTcxNSw3ICsxNzE1LDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVz
KiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAgICAg
aWYgKGF1dGhvclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIGF1dGhvclJvbGxiYWNrOwog
Ci0gICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNjYWRl
ZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBuZXdB
dXRob3JSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3
cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNjYWRl
IGNvbnRhaW5zIFVBIHJ1bGVzIGFuZCB1c2VyIHJ1bGVzIGJ1dCBubyBhdXRob3IgcnVsZXMuCiAg
ICAgICAgIG5ld0F1dGhvclJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVzKG1hdGNoUmVzdWx0LCBt
YXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFS
dWxlLCBmYWxzZSk7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNjYWRl
ZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNr
KAogICAgICAgICBpZiAodXNlclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIHVzZXJSb2xs
YmFjazsKIAotICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPENh
c2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOworICAgICAgICBhdXRv
IG5ld1VzZXJSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNj
YWRlIGNvbnRhaW5zIG9ubHkgVUEgcnVsZXMuCiAgICAgICAgIG5ld1VzZXJSb2xsYmFjay0+YWRk
Tm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxl
LCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9w
LnBsCmluZGV4IDk5N2M0YzAzNjdkZDVkMGQ2NDVkNWVkZjUxZWVjNGJmYjBjMzIxMDUuLjAyYTM2
ZWZlMDVkM2NjOWZlOTdkZDVjMGUyNTkzYWU3OWZkNmMyYzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3Au
cGwKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVy
aXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExheWVy
KiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiZm9yIChhdXRvKiBwYXJlbnQgPSAmc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT4i
IC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBwYXJlbnQgJiYgcGFyZW50LT4iIC4g
JHRlc3RGdW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50LT5uZXh0KCkpIHtcbiI7CiAgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KHN0
ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAi
KSk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlvdXND
aGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUo
JG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAg
IGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgfVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
Y2hpbGQtPiIgLiAkc2V0dGVyIC4gIihwYXJlbnQtPiIgLiAkZ2V0dGVyIC4gIigpKTtcbiI7CkBA
IC04MzcsNyArODM3LDcgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNldHRl
ciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2YWx1
ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQu
XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBmb3IgKGF1dG8mIGl0ZW0g
OiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6Om1h
a2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xu
IjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBwcmV2aW91c0No
aWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgk
bmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAg
ICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgICAgIH1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQg
LiAiICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlTWFwKCktPiIgLiBnZXRGaWxsTGF5ZXJNYXBm
dW5jdGlvbigkbmFtZSkgLiAiKCIgLiAkQ1NTUHJvcGVydHlJZCAuICIsICpjaGlsZCwgaXRlbSk7
XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5kZXgg
NjdjZmRmNTZkNjI1MDUzYTAxMTE5OTJkNzExZjhjOGZmZGI5NWRjMi4uZDc1ZTRmYzkyYzc3YjA3
YjFlNTNkYWQzMzg3ZTU1MWEzOTBjMjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckltcGwuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1BhcnNlckltcGw6OkNTU1Bh
cnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBz
dHJpCiAgICAgLCBtX3N0eWxlU2hlZXQoc3R5bGVTaGVldCkKICAgICAsIG1fb2JzZXJ2ZXJXcmFw
cGVyKHdyYXBwZXIpCiB7Ci0gICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gc3RkOjptYWtlX3Vu
aXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogc3RkOjptYWtlX3VuaXF1ZTxD
U1NUb2tlbml6ZXI+KHN0cmluZyk7CisgICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gbWFrZVVu
aXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogbWFrZVVuaXF1ZTxDU1NUb2tl
bml6ZXI+KHN0cmluZyk7CiAgICAgaWYgKGNvbnRleHQuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVk
ICYmICF3cmFwcGVyICYmIHN0eWxlU2hlZXQgJiYgcnVsZVBhcnNpbmcgPT0gQ1NTUGFyc2VyOjpS
dWxlUGFyc2luZzo6RGVmZXJyZWQpCiAgICAgICAgIG1fZGVmZXJyZWRQYXJzZXIgPSBDU1NEZWZl
cnJlZFBhcnNlcjo6Y3JlYXRlKGNvbnRleHQsIHN0cmluZywgKnN0eWxlU2hlZXQpOwogfQpAQCAt
MjgyLDkgKzI4Miw5IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VT
ZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsCiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yOwogICAgIGlmICghdHlwZVNlbGVjdG9y
LmlzTnVsbCgpICYmIHBzZXVkby5pc051bGwoKSkKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHR5
cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CisgICAgICAgIHNl
bGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFtZShudWxs
QXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkpOwog
ICAgIGVsc2UgewotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxl
Y3Rvcj4oKTsKICAgICAgICAgaWYgKCFwc2V1ZG8uaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHNl
bGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPihDU1NQYXJzZXJTZWxl
Y3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IocHNldWRvKSk7CiAgICAgICAgICAgICBpZiAo
IXNlbGVjdG9yIHx8IHNlbGVjdG9yLT5tYXRjaCgpICE9IENTU1NlbGVjdG9yOjpQYWdlUHNldWRv
Q2xhc3MpCkBAIC01MzUsNyArNTM1LDcgQEAgUmVmUHRyPFN0eWxlUnVsZU5hbWVzcGFjZT4gQ1NT
UGFyc2VySW1wbDo6Y29uc3VtZU5hbWVzcGFjZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW4KIFJlZlB0
cjxTdHlsZVJ1bGVNZWRpYT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZShDU1NQYXJz
ZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spCiB7CiAgICAg
aWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6Y3Jl
YXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRpYVF1
ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgc3RkOjptYWtl
X3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFy
c2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVlcnlQ
YXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4
dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxl
R3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBWZWN0b3I8
UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKIApAQCAtNTYzLDcgKzU2Myw3IEBAIFJlZlB0
cjxTdHlsZVJ1bGVTdXBwb3J0cz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1cHBvcnRzUnVsZShD
U1NQYXJzZXJUb2tlblJhbmdlCiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBlcnJv
ciwgaW52YWxpZCBAc3VwcG9ydHMgY29uZGl0aW9uCiAKICAgICBpZiAobV9kZWZlcnJlZFBhcnNl
cikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5zZXJp
YWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBzdGQ6Om1ha2VfdW5pcXVlPERl
ZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAg
ICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5zZXJpYWxpemUo
KS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVH
cm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIGlmIChtX29i
c2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIoKS5z
dGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpTdXBwb3J0cywgbV9vYnNlcnZlcldyYXBwZXItPnN0
YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBSZWZQdHI8U3R5bGVSdWxl
S2V5ZnJhbWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5ZnJhbWVzUnVsZShib29sIHdlYmtp
dFByZWZpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3I7IGV4cGVjdGVk
IGlkZW50IHRva2VuIGluIEBrZXlmcmFtZXMgaGVhZGVyCiAKICAgICBpZiAobV9kZWZlcnJlZFBh
cnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUsIHN0
ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZl
cnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVhdGUo
bmFtZSwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2Rl
ZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAgICAg
bV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6
S2V5ZnJhbWVzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZzZXQocmFuZ2VDb3B5KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCmluZGV4
IDRkYmVmNDA1OGM3MTYyY2Q5NjQ2ZWE3NjRkY2JiOWJiY2YzMWU0NTkuLmEwODcwZDM3NjJjZWE0
MmY1YjVlYWJkMDVlYTc0NGYyZDlkNmIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVk
b1NlbGVjdG9yKFN0CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1
dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAg
IGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNl
bGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNz
KTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UGFnZVBzZXVkb1R5cGUocHNldWRvVHlw
ZSk7CiAgICAgcmV0dXJuIHNlbGVjdG9yOwpAQCAtNjMsNyArNjMsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1l
bnRTZWxlY3RvcgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0
byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAg
YXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2Vs
ZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsK
ICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRvVHlw
ZSk7CiAgICAgQXRvbVN0cmluZyBuYW1lOwpAQCAtODQsMTMgKzg0LDEzIEBAIHN0ZDo6dW5pcXVl
X3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xh
c3NTZWxlY3RvcihTCiB7CiAgICAgYXV0byBwc2V1ZG9UeXBlID0gcGFyc2VQc2V1ZG9DbGFzc0Fu
ZENvbXBhdGliaWxpdHlFbGVtZW50U3RyaW5nKHBzZXVkb1R5cGVTdHJpbmcpOwogICAgIGlmIChw
c2V1ZG9UeXBlLnBzZXVkb0NsYXNzICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Vua25vd24p
IHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2Vs
ZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBz
ZXVkb0NsYXNzVHlwZShwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzKTsKICAgICAgICAgcmV0dXJuIHNl
bGVjdG9yOwogICAgIH0KICAgICBpZiAocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxl
bWVudCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd24pIHsKLSAgICAgICAgYXV0
byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAg
ICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAg
ICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0Vs
ZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5
cGUocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNlbGVj
dG9yLT5tX3NlbGVjdG9yLT5zZXRWYWx1ZShwc2V1ZG9UeXBlU3RyaW5nLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkpOwpAQCAtMTAwLDEyICsxMDAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1Bh
cnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9y
KFMKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKLSAgICA6IG1f
c2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKKyAgICA6IG1fc2VsZWN0
b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKIHsKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6
OkNTU1BhcnNlclNlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKQotICAgIDog
bV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCisgICAg
OiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lKSkKIHsKIH0KIApA
QCAtMTI2LDcgKzEyNiw3IEBAIENTU1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFyc2VyU2VsZWN0b3Io
KQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiYmIHNlbGVjdG9yVmVjdG9yKQogewot
ICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVj
dG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsKKyAgICBtX3NlbGVjdG9yLT5zZXRT
ZWxlY3Rvckxpc3QobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0b3JW
ZWN0b3IpKSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnNldExhbmdBcmd1bWVudExp
c3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9tU3RyaW5nPj4gYXJndW1lbnRMaXN0KQpAQCAt
MjA5LDEyICsyMDksMTIgQEAgdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YXBwZW5kVGFnSGlzdG9y
eShDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3IgcmVsYXRpb24sIHMKIAogdm9pZCBDU1NQYXJz
ZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FO
YW1lLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKIHsKLSAgICBhdXRvIHNlY29uZCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWNvbmQgPSBt
YWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlY29uZC0+bV9zZWxlY3RvciA9
IFdURk1vdmUobV9zZWxlY3Rvcik7CiAgICAgc2Vjb25kLT5tX3RhZ0hpc3RvcnkgPSBXVEZNb3Zl
KG1fdGFnSGlzdG9yeSk7CiAgICAgbV90YWdIaXN0b3J5ID0gV1RGTW92ZShzZWNvbmQpOwogCi0g
ICAgbV9zZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lLCB0
YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOworICAgIG1fc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1Nl
bGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKICAgICBtX3NlbGVjdG9y
LT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ4OGU2MDIz
ZjIwMDI0YWZmZWY4NjE3YTUxNGM0MDliZjQ5ZDFlZjMuLjcwOGVjNzc3M2MxOGQ2ZTA4ZTAwMWNh
ZmEzZDI4YzgwZDlmODcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwCkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgYXJncwogICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gYnl0ZVN0cmVhbSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CisgICAgYXV0byBieXRlU3RyZWFtID0gbWFr
ZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBpZiAoIWJ1aWxkU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU3RyaW5nKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgp
LnRvU3RyaW5nKCksICpieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5nKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2Vs
ZWN0b3JQYXJzZXIuY3BwCmluZGV4IDZiM2FjYzg1ZTZmYzVlNWNiYjk1YWI5ZmUxYTZjN2NhOWVm
ODEwNDcuLmYzMzIzYjIyNmI0YjAxMDBjOTgzYzQ4NjYzNzVmMWU2NTdiMTczOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC01NjQs
NyArNTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxlY3Rv
clBhcnNlcjo6Y29uc3VtZVBzZXVkbyhDU1NQYXJzZXJUb2sKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhbmc6IHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBDU1MgU2VsZWN0b3JzIExldmVsIDQgYWxsb3dzIDpsYW5nKCotZm9vKQotICAgICAgICAgICAg
YXV0byBhcmd1bWVudExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5nPj4o
KTsKKyAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8QXRv
bVN0cmluZz4+KCk7CiAgICAgICAgICAgICBpZiAoIWNvbnN1bWVMYW5nQXJndW1lbnRMaXN0KGFy
Z3VtZW50TGlzdCwgYmxvY2spKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICAgICAgc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RGTW92ZShhcmd1bWVudExp
c3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rp
b25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUuY3BwCmluZGV4IDllYjVkN2U0OWY1NmExZTk4ZDFmYmI5YjIzZTZlYTcyZTIyNjE1OGYuLjg4
MTE3ZjE5ZTRiMjZiYTI1YmZmMjVhODU1OTE3MzJiYjdhM2U3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcApAQCAtMzM0LDcgKzMz
NCw3IEBAIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjpFbGVtZW50UXVldWUmIEN1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVCYWNrCiB7CiAgICAgaWYgKCFzX3Byb2Nlc3NpbmdC
YWNrdXBFbGVtZW50UXVldWUpIHsKICAgICAgICAgc19wcm9jZXNzaW5nQmFja3VwRWxlbWVudFF1
ZXVlID0gdHJ1ZTsKLSAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJhY2t1cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4oKSk7Cisg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1
ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOwogICAgIH0KICAgICByZXR1cm4gYmFj
a3VwRWxlbWVudFF1ZXVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4
IGU3OTNmMjBkOTMxYmY4NGM4NWZhYjlhZDI0ZjgzZmU4YTQ4YTJmMWQuLmQzYWY3MGZiOGJhMzM2
YmZhNjE4YmY5YzEyNTZiMTA3ZDlkMjVhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OmRpZEFkZEZpbGVUb0l0
ZW1MaXN0KCkKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKCkKIHsK
ICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxpc3QgPSBt
YWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2l0
ZW1MaXN0OwogfQogCkBAIC00MTYsNyArNDE2LDcgQEAgYm9vbCBEYXRhVHJhbnNmZXI6Omhhc1N0
cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0bWxUZXh0KQogewotICAgIGF1
dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKKyAg
ICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAg
cGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CiAgICAg
cGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRtbFRleHQpOwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFk
b25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRFdmVudCkpOwpAQCAtNDcxLDcg
KzQ3MSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZyhj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewot
ICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1l
bnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9h
cmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0g
YWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRl
LCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkp
OwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2lu
SWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQpA
QCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UoRWxlbWVu
dCogZWxlbWVudCwgaW50IHgsIGludCB5KQogICAgIG1fZHJhZ0ltYWdlID0gaW1hZ2U7CiAgICAg
aWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIGlmICghbV9kcmFnSW1hZ2VMb2FkZXIpCi0gICAg
ICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0ltYWdlTG9h
ZGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxE
cmFnSW1hZ2VMb2FkZXI+KHRoaXMpOwogICAgICAgICBtX2RyYWdJbWFnZUxvYWRlci0+c3RhcnRM
b2FkaW5nKG1fZHJhZ0ltYWdlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMzM2MjIzMTA4MWIxM2Y3MmRj
MThkYWM1ZjM5MDdhNWU3YzE3YjBiZi4uZjIxMTMxZmY4Mjc4MjFkYzc0ZTg1MGE5OGYxYmIyMzA5
OWUwMjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIERldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcjo6aXNBY3RpdmVBdChQYWdlKiBwYWdlKQogCiB2b2lkIHByb3ZpZGVEZXZpY2VP
cmllbnRhdGlvblRvKFBhZ2UmIHBhZ2UsIERldmljZU9yaWVudGF0aW9uQ2xpZW50JiBjbGllbnQp
CiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8oJnBhZ2UsIERl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3Vu
aXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIERldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggZTJiMTQ0ZDU2N2Q3OTY2MmU5OGY3NGJjNTFlOTI0MTE2Y2M2
ZDU2Zi4uZWIwYjk3NDU1NWFkMjUzOTJlODA2NjVhNmNkMTE1MTkyNmZlN2YyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC01MjEsMTkgKzUyMSwxOSBAQCBEb2N1bWVudDo6RG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzLCB1
bnNpZwogICAgICwgbV9xdWlya3MobWFrZVVuaXF1ZVJlZjxRdWlya3M+KCp0aGlzKSkKICAgICAs
IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIobV9mcmFtZSA/IFJlZjxDYWNoZWRSZXNvdXJjZUxvYWRl
cj4obV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKSkgOiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG51bGxwdHIpKQogICAg
ICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNpb24pCi0gICAgLCBtX3N0eWxl
U2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKLSAgICAsIG1fZXh0
ZW5zaW9uU3R5bGVTaGVldHMoc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4o
KnRoaXMpKQotICAgICwgbV92aXNpdGVkTGlua1N0YXRlKHN0ZDo6bWFrZV91bmlxdWU8VmlzaXRl
ZExpbmtTdGF0ZT4oKnRoaXMpKQotICAgICwgbV9tYXJrZXJzKHN0ZDo6bWFrZV91bmlxdWU8RG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVu
aXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVldHMo
bWFrZVVuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4oKnRoaXMpKQorICAgICwgbV92aXNpdGVk
TGlua1N0YXRlKG1ha2VVbmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQorICAgICwgbV9t
YXJrZXJzKG1ha2VVbmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCiAgICAg
LCBtX3N0eWxlUmVjYWxjVGltZXIoW3RoaXNdIHsgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOyB9KQog
ICAgICwgbV9kb2N1bWVudENyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAs
IG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCi0g
ICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRlcj4o
KnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxTY3JpcHRSdW5uZXI+KCp0
aGlzKSkKKyAgICAsIG1fbW9kdWxlTG9hZGVyKG1ha2VVbmlxdWU8U2NyaXB0TW9kdWxlTG9hZGVy
PigqdGhpcykpCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRyYW5z
Zm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGlt
ZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV94bWxWZXJzaW9uKCIxLjAiX3MpCi0gICAgLCBtX2Nv
bnN0YW50UHJvcGVydHlNYXAoc3RkOjptYWtlX3VuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFwPigq
dGhpcykpCisgICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAobWFrZVVuaXF1ZTxDb25zdGFudFBy
b3BlcnR5TWFwPigqdGhpcykpCiAgICAgLCBtX2RvY3VtZW50Q2xhc3Nlcyhkb2N1bWVudENsYXNz
ZXMpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQpAQCAtNTQ1LDEwICs1NDUsMTAgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICNlbmRpZgog
ICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVudERl
bGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCi0gICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VNb3Rp
b25DbGllbnQpKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TPigpKQotICAgICwgbV9kZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlTW90aW9uQ2xp
ZW50KG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQorICAgICwgbV9kZXZpY2VN
b3Rpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4oKm1fZGV2
aWNlTW90aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQobWFrZVVu
aXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPigq
bV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCiAjZW5kaWYKICAgICAsIG1fcGVuZGluZ1Rhc2tz
VGltZXIoKnRoaXMsICZEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCkKICAgICAsIG1f
dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFsVXBk
YXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKQEAgLTc1OCw3ICs3NTgsNyBAQCBFbGVtZW50KiBE
b2N1bWVudDo6ZWxlbWVudEZvckFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkKIAogdm9pZCBE
b2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlDYWNoZSgpCiB7Ci0gICAgbV9hY2Nlc3NLZXlDYWNoZSA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+PihbdGhpc10geworICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBtYWtlVW5pcXVl
PEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4oW3Ro
aXNdIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVlRGVz
Y2VuZGFudHMoKnRoaXMpKSB7CiAgICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQpA
QCAtNzgzLDcgKzc4Myw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBEb2N1bWVudDo6
c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVjCiAgICAgaWYgKHNlbGVj
dG9yU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVy
cm9yIH07CiAgICAgaWYgKCFtX3NlbGVjdG9yUXVlcnlDYWNoZSkKLSAgICAgICAgbV9zZWxlY3Rv
clF1ZXJ5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsKKyAg
ICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnlDYWNo
ZT4oKTsKICAgICByZXR1cm4gbV9zZWxlY3RvclF1ZXJ5Q2FjaGUtPmFkZChzZWxlY3RvclN0cmlu
ZywgKnRoaXMpOwogfQogCkBAIC04NDgsNyArODQ4LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVzZXRB
Y3RpdmVMaW5rQ29sb3IoKQogRE9NSW1wbGVtZW50YXRpb24mIERvY3VtZW50OjppbXBsZW1lbnRh
dGlvbigpCiB7CiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uKQotICAgICAgICBtX2ltcGxlbWVu
dGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOworICAg
ICAgICBtX2ltcGxlbWVudGF0aW9uID0gbWFrZVVuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRo
aXMpOwogICAgIHJldHVybiAqbV9pbXBsZW1lbnRhdGlvbjsKIH0KIApAQCAtMTc2Myw3ICsxNzYz
LDcgQEAgTm9kZTo6Tm9kZVR5cGUgRG9jdW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKIEZvcm1Db250
cm9sbGVyJiBEb2N1bWVudDo6Zm9ybUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9mb3JtQ29u
dHJvbGxlcikKLSAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9y
bUNvbnRyb2xsZXI+KCk7CisgICAgICAgIG1fZm9ybUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEZv
cm1Db250cm9sbGVyPigpOwogICAgIHJldHVybiAqbV9mb3JtQ29udHJvbGxlcjsKIH0KIApAQCAt
MTk4OCw3ICsxOTg4LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRleHQm
IHRleHQsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWRUZXh0LCB1bnMKICAgICBBU1NFUlQoIW1f
aW5SZW5kZXJUcmVlVXBkYXRlKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBpblJlbmRlclRyZWVV
cGRhdGUobV9pblJlbmRlclRyZWVVcGRhdGUsIHRydWUpOwogCi0gICAgYXV0byB0ZXh0VXBkYXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CisgICAgYXV0byB0ZXh0
VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CiAgICAgdGV4dFVwZGF0
ZS0+YWRkVGV4dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRUZXh0LCBsZW5ndGhPZlJlcGxhY2Vk
VGV4dCwgV1RGOjpudWxsb3B0IH0pOwogCiAgICAgUmVuZGVyVHJlZVVwZGF0ZXIgcmVuZGVyVHJl
ZVVwZGF0ZXIoKnRoaXMpOwpAQCAtMjI3MCw3ICsyMjcwLDcgQEAgdm9pZCBEb2N1bWVudDo6cGFn
ZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUs
IGludCYKIFN0eWxlUmVzb2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVS
ZXNvbHZlcigpCiB7CiAgICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVy
KQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CisgICAgICAgIG1fdXNlckFnZW50U2hhZG93
VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7CiB9CiAKQEAgLTI2
NzMsNyArMjY3Myw3IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3VtZW50OjpheE9iamVjdENhY2hlKCkg
Y29uc3QKIAogICAgIEFTU0VSVCgmdG9wRG9jdW1lbnQgPT0gdGhpcyB8fCAhbV9heE9iamVjdENh
Y2hlKTsKICAgICBpZiAoIXRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSkgewotICAgICAgICB0
b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFYT2JqZWN0Q2Fj
aGU+KHRvcERvY3VtZW50KTsKKyAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlID0g
bWFrZVVuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CiAgICAgICAgIGhhc0V2ZXJD
cmVhdGVkQW5BWE9iamVjdENhY2hlID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIHRvcERvY3Vt
ZW50Lm1fYXhPYmplY3RDYWNoZS5nZXQoKTsKQEAgLTMwMzcsNyArMzAzNyw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnNldFBhcnNpbmcoYm9vbCBiKQogICAgIG1fYlBhcnNpbmcgPSBiOwogCiAgICAgaWYg
KG1fYlBhcnNpbmcgJiYgIW1fc2hhcmVkT2JqZWN0UG9vbCkKLSAgICAgICAgbV9zaGFyZWRPYmpl
Y3RQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7Cisg
ICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTaGFyZWRPYmpl
Y3RQb29sPigpOwogCiAgICAgaWYgKCFtX2JQYXJzaW5nICYmIHZpZXcoKSAmJiAhdmlldygpLT5u
ZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3KCktPmZpcmVMYXlvdXRSZWxhdGVkTWlsZXN0b25l
c0lmTmVlZGVkKCk7CkBAIC01NTY3LDcgKzU1NjcsNyBAQCBjb25zdCBTVkdEb2N1bWVudEV4dGVu
c2lvbnMqIERvY3VtZW50OjpzdmdFeHRlbnNpb25zKCkKIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyYg
RG9jdW1lbnQ6OmFjY2Vzc1NWR0V4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9zdmdFeHRlbnNp
b25zKQotICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucz4oKnRoaXMpOworICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBtYWtlVW5p
cXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zdmdFeHRl
bnNpb25zOwogfQogCkBAIC01NzcyLDcgKzU3NzIsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2Vj
dXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAgICAgIHNldENvb2tpZVVSTChVUkwo
eyB9LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNl
Y3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgp
KSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlzKSk7
CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1
cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlzKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTU3OTEsNyArNTc5MSw3IEBAIHZvaWQgRG9jdW1lbnQ6Omlu
aXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICBpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID0gZG9j
dW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkudGFpbnRpbmcoKSA9PSBS
ZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlOwogCiAgICAgc2V0U2VjdXJpdHlPcmln
aW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShpc1NlY3VyaXR5T3JpZ2luVW5p
cXVlID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShtX3VybCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CisgICAg
c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5ID0gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkub3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3koKTsKICAgICBpZiAoIW92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
LmlzTnVsbCgpKQpAQCAtNjAyOSw3ICs2MDI5LDcgQEAgU3RyaW5nIERvY3VtZW50OjpuYW1lRm9y
Q1NTQ2FudmFzRWxlbWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCkK
IFRleHRBdXRvU2l6aW5nJiBEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcoKQogewogICAgIGlmICgh
bV90ZXh0QXV0b1NpemluZykKLSAgICAgICAgbV90ZXh0QXV0b1NpemluZyA9IHN0ZDo6bWFrZV91
bmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7CisgICAgICAgIG1fdGV4dEF1dG9TaXppbmcgPSBtYWtl
VW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwogICAgIHJldHVybiAqbV90ZXh0QXV0b1NpemluZzsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAtNjM5Niw3ICs2Mzk2LDcg
QEAgdm9pZCBEb2N1bWVudDo6d2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCgpCiB2b2lkIERvY3Vt
ZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcihOb2RlJiBub2RlKQogewogICAgIGlmICghbV93
aGVlbEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAgIG1fd2hlZWxFdmVudFRhcmdldHMg
PSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAgICAgbV93aGVlbEV2ZW50VGFyZ2V0
cy0+YWRkKCZub2RlKTsKIApAQCAtNjQ1Niw3ICs2NDU2LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlk
QWRkVG91Y2hFdmVudEhhbmRsZXIoTm9kZSYgaGFuZGxlcikKIHsKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQogICAgIGlmICghbV90b3VjaEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV90b3VjaEV2
ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAg
IG1fdG91Y2hFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAg
ICAgbV90b3VjaEV2ZW50VGFyZ2V0cy0+YWRkKCZoYW5kbGVyKTsKIApAQCAtODA0NCw3ICs4MDQ0
LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dDaGFubmVsJiBj
aGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgVmUKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IG1lc3NhZ2VMZXZlbEZyb21XVEZMb2dMZXZlbChsZXZl
bCk7Ci0gICAgICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2FnZUxl
dmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKCkpKTsK
KyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdURk1v
dmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOwogCiAgICAgICAg
IGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogICAgIH0pOwpAQCAtODA3OSw3
ICs4MDc5LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdAogCiBib29sIERvY3VtZW50OjpyZWdp
c3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSYmIHByb3ApCiB7Ci0g
ICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIHN0ZDo6
bWFrZV91bmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3ApKSku
aXNOZXdFbnRyeTsKKyAgICByZXR1cm4gbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRkKHBy
b3AubmFtZSwgbWFrZVVuaXF1ZTxDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1vdmUo
cHJvcCkpKS5pc05ld0VudHJ5OwogfQogCiB2b2lkIERvY3VtZW50OjpkZXRhY2hGcm9tRnJhbWUo
KQpAQCAtODE3Myw3ICs4MTczLDcgQEAgRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb24KICAgICAgICAg
cmV0dXJuIHRvcERvY3VtZW50KCkuZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250
cm9sbGVyKCk7CiAKICAgICBpZiAoIW1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyKQotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyPigqdGhpcyk7CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fZGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOwogfQogCkBAIC04MjA0LDcgKzgyMDQsNyBAQCB2
b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBSZWY8UGFpbnRXbwogQ29udGVudENoYW5nZU9ic2VydmVyJiBEb2N1bWVudDo6
Y29udGVudENoYW5nZU9ic2VydmVyKCkKIHsKICAgICBpZiAoIW1fY29udGVudENoYW5nZU9ic2Vy
dmVyKQotICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CisgICAgICAgIG1fY29udGVudENoYW5nZU9i
c2VydmVyID0gbWFrZVVuaXF1ZTxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsKICAgICBy
ZXR1cm4gKm1fY29udGVudENoYW5nZU9ic2VydmVyOyAKIH0KIApAQCAtODIxMiw3ICs4MjEyLDcg
QEAgRE9NVGltZXJIb2xkaW5nVGFuayYgRG9jdW1lbnQ6OmRvbVRpbWVySG9sZGluZ1RhbmsoKQog
ewogICAgIGlmIChtX2RvbVRpbWVySG9sZGluZ1RhbmspCiAgICAgICAgIHJldHVybiAqbV9kb21U
aW1lckhvbGRpbmdUYW5rOwotICAgIG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IHN0ZDo6bWFrZV91
bmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4oKTsKKyAgICBtX2RvbVRpbWVySG9sZGluZ1Rhbmsg
PSBtYWtlVW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7CiAgICAgcmV0dXJuICptX2RvbVRp
bWVySG9sZGluZ1Rhbms7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMGY1MzhiZmEwNWRi
Y2VmM2U4YTZmOGU2NmM5ODBmZDNkOTdjZWU5Ni4uYWI1ODA0MjU0OGNlNmE0NGY2NTg0Y2Y5MjBi
NzE5MGVhZGQ1MjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyODQsNyArMTI4NCw3IEBA
IGNsYXNzIERvY3VtZW50CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRQYXJzZXJZaWVs
ZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKICAg
ICB9CiAKICAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSBjb25zdCB7IHJldHVy
biBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRF
dmVudFF1ZXVlLmNwcAppbmRleCAwMWM3Zjk2ZTAyZTllYmQ1ODg1M2ZiNWRiMWM0Yjg4MjFlMmY5
NzI4Li4wMzcwM2I2MmJjNjUwNTU3OGIzODliOTk5MzhhNGRhYWI2ZDc2YzdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtNTksNyArNTksNyBAQCBjbGFz
cyBEb2N1bWVudEV2ZW50UXVldWU6OlRpbWVyIGZpbmFsIDogcHVibGljIFN1c3BlbmRhYmxlVGlt
ZXIgewogCiBEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZShEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9wZW5kaW5nRXZl
bnRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcykpCisgICAgLCBtX3BlbmRpbmdF
dmVudFRpbWVyKG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzKSkKICAgICAsIG1faXNDbG9zZWQoZmFs
c2UpCiB7CiAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDcy
OTFkNGFkZWU5ZjQxNzdmZGJmZWZlZWZkZGYyNjcwNTRhOWM0ZjAuLmU3NjQxYWY2MjE4YmYxM2Fi
MGUzYzY4OTIwMjBkZTg4OWM0ZTkwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihOb2RlJiBub2RlLCBjb25zdCBEb2N1bWVudE1h
cmtlciYgbmV3TWEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFya2VyTGlzdD4mIGxpc3QgPSBtX21h
cmtlcnMuYWRkKCZub2RlLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBpZiAoIWxp
c3QpIHsKLSAgICAgICAgbGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyTGlzdD4oKTsKKyAg
ICAgICAgbGlzdCA9IG1ha2VVbmlxdWU8TWFya2VyTGlzdD4oKTsKICAgICAgICAgbGlzdC0+YXBw
ZW5kKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIobmV3TWFya2VyKSk7CiAgICAgfSBlbHNlIGlmIChz
aG91bGRJbnNlcnRBc1NlcGFyYXRlTWFya2VyKG5ld01hcmtlcikpIHsKICAgICAgICAgLy8gV2Ug
ZG9uJ3QgbWVyZ2UgZGljdGF0aW9uIG1hcmtlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4IDgxZWZiMTBkNWU3NmVkYjZmNmQzODM1MzAwNTFk
MjljMzg4ZWFmZGIuLjg1NWEyYTA2NTZmNzFiNDVlZThkNGZmZjI4NGE1MzUzNzlhMzg3OTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIERvY3VtZW50U3RvcmFnZUFjY2VzcyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpm
cm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNzKj4oU3VwcGxlbWVudDxEb2N1bWVudD46OmZyb20o
JmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRTdG9y
YWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmRvY3VtZW50LCBz
dXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgYm9vbCBzaG91bGRQ
cmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZDo6WWVzIHx8IHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6
Tm87CiAKICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAgICAg
ICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqZG9j
dW1lbnQpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVl
KCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0g
bWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBk
b2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAgICB9
KSk7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAgICAg
ICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVudFJl
ZmVyZW5jZSldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVl
dWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2Ug
PSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC0+Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOwogICAgICAg
ICAgICAgfSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNz
OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAK
IHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1
cmUoKQogewotICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50KTsK
KyAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gbWFrZVVuaXF1ZTxVc2VyR2VzdHVyZUluZGlj
YXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CiB9CiAKIHZvaWQgRG9j
dW1lbnRTdG9yYWdlQWNjZXNzOjpjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCA0NTE2MWM5Y2EyMGJhZDY5MzMwMDUxZDA5YTU1ZjBhZmE1
NTg2Y2M2Li5lZWIxZjM0MjlkNjRlZmM0ZGIwYjEzMGQxMzdmMzE2ZTM1MGQwZDkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC00NzcsNyArNDc3LDcgQEAgTmFtZWROb2RlTWFwJiBFbGVtZW50
OjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAg
PSByYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKSkKICAgICAgICAgcmV0dXJuICphdHRyaWJ1dGVNYXA7
CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAoc3RkOjptYWtlX3VuaXF1ZTxOYW1lZE5v
ZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOworICAgIHJhcmVEYXRhLnNldEF0
dHJpYnV0ZU1hcChtYWtlVW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3RfY2FzdDxFbGVtZW50Jj4o
KnRoaXMpKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKTsKIH0KIApAQCAt
MjMwNyw3ICsyMzA3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVtZW50
KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVyZmEKICAgICBzZXRGbGFnKElz
Q3VzdG9tRWxlbWVudCk7CiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgp
OwogICAgIGlmICghZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKQotICAgICAgICBk
YXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9t
RWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0YS5z
ZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3Vi
dHJlZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxl
bWVudFN0YXRlKCp0aGlzKTsKIH0KQEAgLTIzNDQsNyArMjM0NCw3IEBAIHZvaWQgRWxlbWVudDo6
ZW5xdWV1ZVRvVXBncmFkZShKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZh
Y2UpCiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGJvb2wg
YWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSA9IGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUoKTsKICAgICBpZiAoIWFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpCi0gICAgICAgIGRhdGEu
c2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAgICAgICBkYXRhLnNldEN1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKICAgICBkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlv
blF1ZXVlKCktPmVucXVldWVFbGVtZW50VXBncmFkZSgqdGhpcywgYWxyZWFkeVNjaGVkdWxlZFRv
VXBncmFkZSk7CiB9CiAKQEAgLTM0ODAsNyArMzQ4MCw3IEBAIERPTVRva2VuTGlzdCYgRWxlbWVu
dDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVFbGVt
ZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY2xhc3NMaXN0KCkpCi0gICAgICAgIGRhdGEu
c2V0Q2xhc3NMaXN0KHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5h
bWVzOjpjbGFzc0F0dHIpKTsKKyAgICAgICAgZGF0YS5zZXRDbGFzc0xpc3QobWFrZVVuaXF1ZTxE
T01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwogICAgIHJldHVybiAq
ZGF0YS5jbGFzc0xpc3QoKTsKIH0KIApAQCAtMzQ4OCw3ICszNDg4LDcgQEAgRGF0YXNldERPTVN0
cmluZ01hcCYgRWxlbWVudDo6ZGF0YXNldCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBkYXRh
ID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmRhdGFzZXQoKSkKLSAg
ICAgICAgZGF0YS5zZXREYXRhc2V0KHN0ZDo6bWFrZV91bmlxdWU8RGF0YXNldERPTVN0cmluZ01h
cD4oKnRoaXMpKTsKKyAgICAgICAgZGF0YS5zZXREYXRhc2V0KG1ha2VVbmlxdWU8RGF0YXNldERP
TVN0cmluZ01hcD4oKnRoaXMpKTsKICAgICByZXR1cm4gKmRhdGEuZGF0YXNldCgpOwogfQogCkBA
IC0zNjMyLDcgKzM2MzIsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEmIEVsZW1lbnQ6OmVu
c3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEgPSBl
bnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLmludGVyc2VjdGlvbk9i
c2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRh
dGEoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOworICAgICAg
ICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEobWFrZVVuaXF1ZTxJbnRlcnNl
Y3Rpb25PYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEuaW50ZXJzZWN0aW9u
T2JzZXJ2ZXJEYXRhKCk7CiB9CiAKQEAgLTM2NTgsNyArMzY1OCw3IEBAIFJlc2l6ZU9ic2VydmVy
RGF0YSYgRWxlbWVudDo6ZW5zdXJlUmVzaXplT2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRvJiBy
YXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEucmVz
aXplT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0
YShzdGQ6Om1ha2VfdW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJhcmVE
YXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YShtYWtlVW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0YT4o
KSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRhdGEoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IGQ5ZTY2MzQ5Y2JkYmEwYmI4
MWQyYWNmYmZkYzBkNDMzNzhjNjU4ZGIuLjBiMDlkMDgyYzM2ZWRkZDg0YjljZGU5ODgyNTI3MmRi
NWY5NmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTE0
Miw3ICsxNDIsNyBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpcwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBhdXRvIGxpc3RlbmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRM
aXN0ZW5lclZlY3Rvcj4oKTsKKyAgICBhdXRvIGxpc3RlbmVycyA9IG1ha2VVbmlxdWU8RXZlbnRM
aXN0ZW5lclZlY3Rvcj4oKTsKICAgICBsaXN0ZW5lcnMtPnVuY2hlY2tlZEFwcGVuZChSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKSk7CiAg
ICAgbV9lbnRyaWVzLmFwcGVuZCh7IGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lcnMpIH0pOwog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggOWU5MzA4YmI1ZGEx
NDYxZTM1OGUzY2M2MmZlYWZkY2ZjZDBjYzdhZC4uNWI2YWI2ODc1NWI2MWJmZTJkNGE2OGJjYmU3
NTI0ZmQwZGRhYmI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0zMzksMTMgKzMzOSwx
MyBAQCBzdHJ1Y3QgRXZlbnROYW1lcyB7CiAgICAgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKERP
TV9FVkVOVF9OQU1FU19ERUNMQVJFKQogI3VuZGVmIERPTV9FVkVOVF9OQU1FU19ERUNMQVJFCiAK
LSAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBzdGQ6Om1ha2VfdW5pcXVl
IGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgorICAgIC8vIEZJWE1FOiBUaGUg
ZnJpZW5kIGRlY2xhcmF0aW9uIHRvIG1ha2VVbmlxdWUgYmVsb3cgZG9lcyBub3Qgd29yayBpbiB3
aW5kb3dzIHBvcnQuCiAgICAgLy8KICAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBB
cmdzPgotICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5nbGVf
b2JqZWN0IHN0ZDo6bWFrZV91bmlxdWUoQXJncyYmLi4uKTsKKyAgICAvLyBmcmllbmQgdHlwZW5h
bWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBtYWtlVW5pcXVlKEFyZ3MmJi4u
Lik7CiAgICAgLy8KICAgICAvLyBUaGlzIGNyZWF0ZSBmdW5jdGlvbiBzaG91bGQgYmUgZGVsZXRl
ZCBsYXRlciBhbmQgaXMgb25seSBmb3Iga2VlcGluZyBFdmVudE5hbWVzIGFzIHByaXZhdGUuCi0g
ICAgLy8gc3RkOjptYWtlX3VuaXF1ZSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorICAgIC8vIG1h
a2VVbmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KICAgICAvLwogICAgIHRlbXBsYXRlPGNs
YXNzLi4uIEFyZ3M+CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVzPiBjcmVh
dGUoQXJncyYmLi4uIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQ
YXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCmluZGV4IGRiMTQyOGQx
ZDQyNjA1OGNiNjViMWViNmZhY2EyM2RiOTg5MjgyYmQuLmEwYWQwYWQ3YzQ4MjY5MmU2MzhlNTcy
ODBmMWEyOTI0N2FjZWMxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBh
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCkBAIC0xMTUsMTcg
KzExNSwxNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2V0
LCBFdmVudCYgZXZlbnQpCiB7CiAgICAgdXNpbmcgTWFrZUV2ZW50Q29udGV4dCA9IHN0ZDo6dW5p
cXVlX3B0cjxFdmVudENvbnRleHQ+ICgqKShOb2RlJiwgRXZlbnRUYXJnZXQqLCBFdmVudFRhcmdl
dCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgTWFrZUV2ZW50Q29udGV4dCBtYWtlRXZl
bnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBF
dmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwg
dGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEV2
ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVw
dGgpOwogICAgIH07CiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSB8fCBldmVudC5pc0Zv
Y3VzRXZlbnQoKSkgewogICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUs
IEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xv
c2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4o
bm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1
cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9OwogICAg
IH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChpczxUb3VjaEV2ZW50PihldmVu
dCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRh
cmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRv
d0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRh
cmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBj
bG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2VuZGlmCkBAIC0xNDksNyAr
MTQ5LDcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwg
RXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pigqbm9kZSkuZG9tV2luZG93KCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNsb3NlZFNoYWRv
d0RlcHRoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtl
VW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNsb3Nl
ZFNoYWRvd0RlcHRoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEV2ZW50UGF0aDo6
RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIHRhcmdldHMpCiAgICAgICAgIEFTU0VS
VCh0YXJnZXQpOwogICAgICAgICBOb2RlKiBvcmlnaW4gPSAqdGFyZ2V0cy5iZWdpbigpOwogICAg
ICAgICBpZiAoIXRhcmdldC0+aXNDbG9zZWRTaGFkb3dIaWRkZW4oKm9yaWdpbikpCi0gICAgICAg
ICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQs
IHRhcmdldCwgb3JpZ2luLCAwKSk7CisgICAgICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlx
dWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CiAgICAgfQogfQog
CkBAIC0zMTcsNyArMzE3LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9yPEV2
ZW50VGFyZ2V0Kj4mIHRhcmdldHMpCiAgICAgZm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRzKSB7
CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBBU1NFUlQoIWlzPE5vZGU+KHRhcmdl
dCkpOwotICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0
PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsKKyAgICAgICAgbV9wYXRo
LmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0
cy5iZWdpbigpLCAwKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFu
YWdlci5oCmluZGV4IGVkZDljYTI4ZWE0OTNhYzdjOTRjOGJkZTI4NWIxNjY2YzM4ODI1NTkuLmE3
MGJjYWVjY2M4Nzk1YTRmNGJhNDI2ZTI1MTNkZmY3YTBmNzRiMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFJlbmRlclRyZWVC
dWlsZGVyOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIEZ1bGxzY3JlZW5NYW5hZ2VyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVuTWFu
YWdlcihEb2N1bWVudCYpOwogICAgIH5GdWxsc2NyZWVuTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAppbmRleCBiM2EwNmU0N2Iw
NzAwZjdjNDdkM2Q5YWVmMzNmNDQzNzI0ZTBjNTVlLi45NDBlZmNhZWQ4MzA5MWMyNTgzZmE5ZTMz
NmVmM2Q3OGM1NGFhM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQCB2b2lkIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbVN0cmluZyYgaWQsIElkVGFyZ2V0T2JzZXJ2
ZQogICAgIAogICAgIElkVG9PYnNlcnZlclNldE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcmVn
aXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPYnNl
cnZlclNldD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8
T2JzZXJ2ZXJTZXQ+KCk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQob2JzZXJ2
ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCmluZGV4IDdlN2EzNDc5N2I4
NjI5ZjYyZjdmNzg2YWIxNGM1YzZmNWJkOTBiMTQuLmNlODU2YmI1NWQ1YmQ5OWU2NmY1MGNiNTVi
MGJlNDc5MGUwOTg0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoKSA9IGRlZmF1
bHQ7CiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChjb25zdCBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQmIGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZpZXcpCiAgICAgOiBVSUV2
ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRUeXBlKGtleS50eXBlKCkp
LCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMsIElzQ29tcG9zZWQ6OlllcywKICAg
ICAgICAga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpLCB2aWV3LmNv
cHlSZWYoKSwgMCwga2V5Lm1vZGlmaWVycygpLCBJc1RydXN0ZWQ6OlllcykKLSAgICAsIG1fdW5k
ZXJseWluZ1BsYXRmb3JtRXZlbnQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ+KGtleSkpCisgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KG1ha2VVbmlxdWU8UGxh
dGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJMRShLRVlCT0FSRF9LRVlfQVRUUklC
VVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWljcm90YXNrcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3Mu
aAppbmRleCBiNjMxODQxNTBmNWEzOTE0MjUyYjg0MmVkOWQwN2RlYWFmNmI0MDM2Li5iYTcyMmEx
MWM3MGZjYTgwODMyZTY0Yzg1MjdlZTQ2YjljMzQ3Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWljcm90YXNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tz
LmgKQEAgLTY5LDcgKzY5LDggQEAgY2xhc3MgVm9pZE1pY3JvdGFzayBmaW5hbCA6IHB1YmxpYyBN
aWNyb3Rhc2sgewogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlvbjsKIH07CiAKLWNsYXNz
IE1pY3JvdGFza1F1ZXVlIHsKK2NsYXNzIE1pY3JvdGFza1F1ZXVlIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8TWljcm90YXNr
UXVldWU+OwogICAgIGZyaWVuZCBjbGFzcyBNaWNyb3Rhc2s7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggNjZjNWVhMGI5ZDYzNDU0NDM4MTJmYjEz
MWZmZTVkYmU2Y2ExZGRmMy4uMTkzZjI3ODA1YTVhZWQ0YjYwNmU5Y2VlYTNhOWEzNWQ4YjFlOTkz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtMTc1LDcgKzE3
NSw3IEBAIHN0YXRpYyB2b2lkIHF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNr
KCkKICAgICBpZiAobXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVkRmxhZykK
ICAgICAgICAgcmV0dXJuOwogICAgIG11dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFza1F1
ZXVlZEZsYWcgPSB0cnVlOwotICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90YXNrPigpKTsKKyAg
ICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0
YXRpb25PYnNlcnZlck1pY3JvdGFzaz4oKSk7CiB9CiAKIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6
ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFJlZjxNdXRhdGlvblJlY29yZD4mJiBtdXRhdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAu
Y3BwCmluZGV4IDUyZGE2MWY3NGYxZjU3YWY2ODU0OWYzNjY1NjMwNmQ4ZDE3MDNjNzkuLjAyNzZl
NDJiZTViZDgzZmY0MmE3OTM1NmJkZTljZTczNjA5OWNiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+IE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcgogICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2VydmVycyksIG9s
ZFZhbHVlRmxhZyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKIH0KIAogYm9vbCBN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJlcXVlc3RlZCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bi5jcHAKaW5kZXggYzhmYzAxMDY3MjQ1ZTRlMzYxOTdhMmY2ZDRkMWU0NTc1NDdiYmM4YS4uZTVj
NmRkMTZhNGRiNjA5YmE1MjczYTQ3YWY3ZmE2ODI2NjJhMmM0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtNjgsNyAr
NjgsNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2VydmVkU3VidHJl
ZU5vZGVXaWxsRGV0YWNoKE5vZGUmIG5vZGUpCiAgICAgbV9vYnNlcnZlci0+c2V0SGFzVHJhbnNp
ZW50UmVnaXN0cmF0aW9uKCk7CiAKICAgICBpZiAoIW1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9k
ZXMpIHsKLSAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7CisgICAgICAgIG1fdHJhbnNp
ZW50UmVnaXN0cmF0aW9uTm9kZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8
Tm9kZT4+PigpOwogCiAgICAgICAgIEFTU0VSVCghbV9ub2RlS2VwdEFsaXZlKTsKICAgICAgICAg
bV9ub2RlS2VwdEFsaXZlID0gJm1fbm9kZTsgLy8gQmFsYW5jZWQgaW4gdGFrZVRyYW5zaWVudFJl
Z2lzdHJhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzZkNGVhOWQ3MzBhOTIzNzJhOWY4ZTdh
NmQ4ZjY3ZDAwZmQzZGJmNS4uY2FiZjFlYjU4YzljMjNjYWQ4ODViZDAxZGYxMjJiNjUxYWUwMmJk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzk4LDkgKzM5OCw5IEBAIHZvaWQgTm9kZTo6bWF0ZXJp
YWxpemVSYXJlRGF0YSgpCiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhOwogICAgIGlmIChpczxF
bGVtZW50PigqdGhpcykpCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRS
YXJlRGF0YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxl
YXNlKCk7CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4oZG93bmNh
c3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxlYXNlKCk7CiAgICAgZWxz
ZQotICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5t
X3JlbmRlcmVyKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPE5vZGVSYXJl
RGF0YT4obV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoZGF0YSk7CiAK
ICAgICBtX2RhdGEubV9yYXJlRGF0YSA9IGRhdGE7CkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBFdmVu
dFRhcmdldERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAKICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKHNfZXZlbnRUYXJnZXREYXRhTWFwTG9jayk7CiAgICAgc2V0SGFzRXZl
bnRUYXJnZXREYXRhKHRydWUpOwotICAgIHJldHVybiAqZXZlbnRUYXJnZXREYXRhTWFwKCkuYWRk
KHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXREYXRhPigpKS5pdGVyYXRvci0+dmFs
dWU7CisgICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhpcywgbWFrZVVuaXF1
ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBOb2RlOjpj
bGVhckV2ZW50VGFyZ2V0RGF0YSgpCkBAIC0yMjg3LDcgKzIyODcsNyBAQCB2b2lkIE5vZGU6OnJl
Z2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgTXV0YXRp
b25PYnNlcnZlcgogICAgIH0KIAogICAgIGlmICghcmVnaXN0cmF0aW9uKSB7Ci0gICAgICAgIHJl
Z2lzdHJ5LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b24+KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7CisgICAgICAg
IHJlZ2lzdHJ5LmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+
KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmlsdGVyKSk7CiAgICAgICAgIHJl
Z2lzdHJhdGlvbiA9IHJlZ2lzdHJ5Lmxhc3QoKS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmFyZURhdGEuaAppbmRleCA3NjkwZDU5OWZjYTdkYzk5Y2I0OWUxNjBmYmUyYWZhZGRmMDBj
ZGY0Li43NjZkNjdmM2Y2ZDYyOWFmMDg5NDJhZGMyM2UyYzIyYzI5ZjNlNDY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRh
IDogcHVibGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVMaXN0c05vZGVEYXRhJiBlbnN1
cmVOb2RlTGlzdHMoKQogICAgIHsKICAgICAgICAgaWYgKCFtX25vZGVMaXN0cykKLSAgICAgICAg
ICAgIG1fbm9kZUxpc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTGlzdHNOb2RlRGF0YT4oKTsK
KyAgICAgICAgICAgIG1fbm9kZUxpc3RzID0gbWFrZVVuaXF1ZTxOb2RlTGlzdHNOb2RlRGF0YT4o
KTsKICAgICAgICAgcmV0dXJuICptX25vZGVMaXN0czsKICAgICB9CiAKQEAgLTI4OSw3ICsyODks
NyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAg
Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhJiBlbnN1cmVNdXRhdGlvbk9ic2VydmVyRGF0YSgpCiAg
ICAgewogICAgICAgICBpZiAoIW1fbXV0YXRpb25PYnNlcnZlckRhdGEpCi0gICAgICAgICAgICBt
X211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTXV0YXRpb25PYnNl
cnZlckRhdGE+KCk7CisgICAgICAgICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gbWFrZVVu
aXF1ZTxOb2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9tdXRh
dGlvbk9ic2VydmVyRGF0YTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25H
cm91cHMuY3BwCmluZGV4IDUzMzdjNThjZGZiYmFhYjIzMDE4NDUwMjYzOGRjNjM0NDlmNzk2YWMu
LjYxYmJjNGVkZmY5MzRhNjQ0NmVhMjU2NzU1NjYzZmQ1NDY4NzdlM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcApAQCAtMTk4LDExICsxOTgsMTEgQEAgdm9pZCBS
YWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9uYW1lVG9Hcm91cE1hcCkKLSAgICAgICAgbV9u
YW1lVG9Hcm91cE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CisgICAg
ICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBtYWtlVW5pcXVlPE5hbWVUb0dyb3VwTWFwPigpOwogCiAg
ICAgYXV0byYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxlbWVudC5uYW1lKCkuaW1w
bCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFncm91cCkKLSAgICAgICAg
Z3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CisgICAgICAgIGdy
b3VwID0gbWFrZVVuaXF1ZTxSYWRpb0J1dHRvbkdyb3VwPigpOwogICAgIGdyb3VwLT5hZGQoZWxl
bWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcAppbmRleCBjODI1YTdlZGVlNmJiMmQ1ZjUxNmM2ZDNlNmVhNzQxMGU2ZWNjNzU2Li4wNGFm
ZTlkNzhhZDBiZDEwMjhhNjcwM2MwZmMzZDRmNjUzYjEzZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNzksOCArMzc5LDggQEAgdm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UsIGludCBsaW4KIHsKICAgICBpZiAobV9pbkRpc3BhdGNoRXJyb3JFdmVudCkg
ewogICAgICAgICBpZiAoIW1fcGVuZGluZ0V4Y2VwdGlvbnMpCi0gICAgICAgICAgICBtX3BlbmRp
bmdFeGNlcHRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBl
bmRpbmdFeGNlcHRpb24+Pj4oKTsKLSAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucy0+YXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNzYWdlLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAg
ICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zID0gbWFrZVVuaXF1ZTxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsKKyAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9u
cy0+YXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JNZXNzYWdlLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxNCw5ICs0MTQsOSBAQCB2b2lkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24oSlNDOjpFeGVj
U3RhdGUmIHN0YQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJVbmhhbmRs
ZWQgUHJvbWlzZSBSZWplY3Rpb246ICIsIHJlc3VsdE1lc3NhZ2UpOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChjYWxsU3Rh
Y2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVy
cm9yTWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVsc2UKLSAgICAg
ICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IGVycm9yTWVzc2FnZSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwogICAgIGFkZENvbnNvbGVNZXNzYWdlKFdU
Rk1vdmUobWVzc2FnZSkpOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAgUmVqZWN0ZWRQcm9taXNl
VHJhY2tlciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJh
Y2tlclNsb3cKICAgICAvLyBXaGVuIGluaXRpYWxpemluZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
LCB2bSgpIGlzIG5vdCByZWFkeS4KIAogICAgIEFTU0VSVCghbV9yZWplY3RlZFByb21pc2VUcmFj
a2VyKTsKLSAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
amVjdGVkUHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsKKyAgICBtX3JlamVjdGVkUHJvbWlz
ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFJlamVjdGVkUHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgp
KTsKICAgICByZXR1cm4gKm1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlci5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDU1ZGMyYzg3YTRhYzIwMmQ3MWFkZGE2
NmQ1OTZiNWZlYTBiYzg4NTYuLjIxMDljZTRhMjI4YzNlN2JhODdhNGJhNTJiMmRiMjgyMzYwODcx
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAgLTYzMyw3ICs2MzMsNyBA
QCBFeGNlcHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gU2VsZWN0b3JRdWVyeUNhY2hlOjphZGQoY29u
c3QgU3RyaW5nJiBzZWxlY3RvcnMsIERvYwogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1h
eGltdW1TZWxlY3RvclF1ZXJ5Q2FjaGVTaXplKQogICAgICAgICBtX2VudHJpZXMucmVtb3ZlKG1f
ZW50cmllcy5yYW5kb20oKSk7CiAKLSAgICByZXR1cm4gKm1fZW50cmllcy5hZGQoc2VsZWN0b3Jz
LCBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0b3JMaXN0KSkp
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKm1fZW50cmllcy5hZGQoc2VsZWN0b3JzLCBt
YWtlVW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0b3JMaXN0KSkpLml0ZXJhdG9y
LT52YWx1ZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDY5NjNiNjgz
NzlkODhmMjdhODRlMmYxZGE2NTE1MzgxODA1YjI5M2MuLjY3ODZjMGQyMWUxYjJjMmE1Nzg1MWJk
MDg1MTY0YzFhMWU5MmM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRv
d1Jvb3RNb2RlIHR5cGUpCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVT
aGFkb3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlw
ZSh0eXBlKQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3Bl
PigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0
aGlzKSkKIHsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERv
Y3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50PiYmIHNsbwog
ICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAs
IFRyZWVTY29wZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUoU2hhZG93Um9vdE1vZGU6
OlVzZXJBZ2VudCkKLSAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpT
Y29wZT4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3Bl
PigqdGhpcykpCiAgICAgLCBtX3Nsb3RBc3NpZ25tZW50KFdURk1vdmUoc2xvdEFzc2lnbm1lbnQp
KQogewogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jv
b3RUb05ld0RvY3VtZW50KERvY3VtZW50JiBuZXdEb2N1bWVudCkKICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFwYXJlbnRUcmVlU2NvcGUoKSB8fCAmcGFyZW50
VHJlZVNjb3BlKCktPmRvY3VtZW50U2NvcGUoKSA9PSAmbmV3RG9jdW1lbnQpOwogCiAgICAgLy8g
U3R5bGUgc2NvcGVzIGFyZSBkb2N1bWVudCBzcGVjaWZpYy4KLSAgICBtX3N0eWxlU2NvcGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpOworICAgIG1fc3R5bGVTY29wZSA9
IG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTigmbV9zdHlsZVNjb3BlLT5kb2N1bWVudCgpID09ICZuZXdE
b2N1bWVudCk7CiB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmFkZFNs
b3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVudCYg
cwogewogICAgIEFTU0VSVCgmc2xvdC5yb290Tm9kZSgpID09IHRoaXMpOwogICAgIGlmICghbV9z
bG90QXNzaWdubWVudCkKLSAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8U2xvdEFzc2lnbm1lbnQ+KCk7CisgICAgICAgIG1fc2xvdEFzc2lnbm1lbnQgPSBtYWtlVW5p
cXVlPFNsb3RBc3NpZ25tZW50PigpOwogCiAgICAgcmV0dXJuIG1fc2xvdEFzc2lnbm1lbnQtPmFk
ZFNsb3RFbGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2xvdEFzc2lnbm1lbnQuY3BwCmluZGV4IGE0MTlkZGE1MjhhY2NiZGE2ZGU5ZGRmMWE1NDg2NGNm
ZGY5MTYwZWYuLjQ1YzA4ZWEzNmFmZTEzOTdiZTBlY2JmYjI5ZTIyOGVjZDBjOTkwNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQg
U2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWUsIEhUTUxTbG90RWxlbWVuCiAgICAgICAgIC8vIHRvIGF2b2lkIGFsd2F5cyBoYXZpbmcgYSB2
ZWN0b3Igb2YgYWxsIGNoaWxkIG5vZGVzIG9mIGEgc2hhZG93IGhvc3QuCiAgICAgICAgIGlmIChz
bG90TmFtZSA9PSBkZWZhdWx0U2xvdE5hbWUoKSkKICAgICAgICAgICAgIG1fc2xvdEFzc2lnbm1l
bnRzSXNWYWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwogICAgIGF1
dG8mIHNsb3QgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBib29sIG5lZWRzU2xv
dGNoYW5nZUV2ZW50ID0gc2hhZG93Um9vdC5zaG91bGRGaXJlU2xvdGNoYW5nZUV2ZW50KCkgJiYg
aGFzQXNzaWduZWROb2RlcyhzaGFkb3dSb290LCBzbG90KTsKQEAgLTQxMCw3ICs0MTAsNyBAQCB2
b2lkIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QoTm9kZSYgY2hpbGQsIGNvbnN0IEF0b21T
dHJpbmcmIHNsb3ROYW1lKQogICAgIH0KIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zbG90cy5l
bnN1cmUoc2xvdE5hbWUsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xv
dD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2xvdD4oKTsKICAgICB9KTsKICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hc3NpZ25lZE5vZGVzLmFwcGVuZCgmY2hpbGQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAyZjI4NzBkMTY2OWQ0NGJjNjE4NGE3MmVj
NjNlYjMyM2Y1MjdkMzlmLi41MzFhY2RmNGRkNjU2OGUwZjQ2MjFlYjUwZDg5ZGVlNDY3ZDU1YTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBUcmVlU2NvcGU6
OlRyZWVTY29wZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBtX3Jvb3ROb2RlKHNoYWRvd1Jvb3QpCiAgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1l
bnQpCiAgICAgLCBtX3BhcmVudFRyZWVTY29wZSgmZG9jdW1lbnQpCi0gICAgLCBtX2lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KG1ha2VVbmlxdWU8SWRUYXJn
ZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewogICAgIHNoYWRvd1Jvb3Quc2V0VHJlZVNjb3BlKCp0
aGlzKTsKIH0KQEAgLTczLDcgKzczLDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShkb2N1bWVudCkKICAgICAsIG1fZG9jdW1lbnRT
Y29wZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKG51bGxwdHIpCi0gICAgLCBt
X2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KG1ha2VVbmlx
dWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewogICAgIGRvY3VtZW50LnNldFRyZWVT
Y29wZSgqdGhpcyk7CiB9CkBAIC0xNDEsNyArMTQxLDcgQEAgY29uc3QgVmVjdG9yPEVsZW1lbnQq
PiogVHJlZVNjb3BlOjpnZXRBbGxFbGVtZW50c0J5SWQoY29uc3QgQXRvbVN0cmluZyYgZWxlbWVu
dEkKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZChjb25zdCBBdG9tU3RyaW5nSW1wbCYg
ZWxlbWVudElkLCBFbGVtZW50JiBlbGVtZW50LCBib29sIG5vdGlmeU9ic2VydmVycykKIHsKICAg
ICBpZiAoIW1fZWxlbWVudHNCeUlkKQotICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9lbGVtZW50c0J5SWQg
PSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9lbGVtZW50c0J5SWQt
PmFkZChlbGVtZW50SWQsIGVsZW1lbnQsICp0aGlzKTsKICAgICBpZiAobm90aWZ5T2JzZXJ2ZXJz
KQogICAgICAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90aWZ5T2JzZXJ2ZXJzKGVs
ZW1lbnRJZCk7CkBAIC0xNjgsNyArMTY4LDcgQEAgRWxlbWVudCogVHJlZVNjb3BlOjpnZXRFbGVt
ZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6
YWRkRWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYgZWxl
bWVudCkKIHsKICAgICBpZiAoIW1fZWxlbWVudHNCeU5hbWUpCi0gICAgICAgIG1fZWxlbWVudHNC
eU5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAg
IG1fZWxlbWVudHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAg
ICAgbV9lbGVtZW50c0J5TmFtZS0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIApAQCAt
MjM5LDcgKzIzOSw3IEBAIHZvaWQgVHJlZVNjb3BlOjphZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVu
dCYgaW1hZ2VNYXApCiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFt
X2ltYWdlTWFwc0J5TmFtZSkKLSAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VNYXBzQnlOYW1l
ID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIG1faW1hZ2VNYXBzQnlO
YW1lLT5hZGQoKm5hbWUsIGltYWdlTWFwLCAqdGhpcyk7CiB9CiAKQEAgLTI2Myw3ICsyNjMsNyBA
QCBIVE1MTWFwRWxlbWVudCogVHJlZVNjb3BlOjpnZXRJbWFnZU1hcChjb25zdCBBdG9tU3RyaW5n
JiBuYW1lKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKGNv
bnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIGlmICghbV9pbWFnZXNCeVVzZW1hcCkKLSAgICAgICAgbV9pbWFnZXNCeVVzZW1hcCA9IHN0
ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZXNC
eVVzZW1hcCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICByZXR1cm4g
bV9pbWFnZXNCeVVzZW1hcC0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlzKTsKIH0KIApAQCAtMzAw
LDcgKzMwMCw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIFRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9y
SWQoY29uc3QgQXRvbVN0cmluZyYgZm9yQXR0cmlidXRlVmFsCiAKICAgICBpZiAoIW1fbGFiZWxz
QnlGb3JBdHRyaWJ1dGUpIHsKICAgICAgICAgLy8gUG9wdWxhdGUgdGhlIG1hcCBvbiBmaXJzdCBh
Y2Nlc3MuCi0gICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUg
PSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAKICAgICAgICAgZm9yIChhdXRv
JiBsYWJlbCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxMYWJlbEVsZW1lbnQ+KG1fcm9vdE5vZGUp
KSB7CiAgICAgICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JWYWx1ZSA9IGxhYmVsLmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9yQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKaW5kZXggZGRhNDkwYjEzY2RjMmRkYjgzZmIx
ZmM4ZmZhYjA5ZGYwMDg4ZDgyYy4uNDI2ODE5NmY4OTJhZjMwNTUxMDNjNDg3MmZlOGVjYmRkNWYx
MWFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
aApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBTdHlsZWRFbGVtZW50OwogY2xhc3MgVGV4dDsKIAog
Y2xhc3MgQWNjZXNzaWJpbGl0eVVuZG9SZXBsYWNlZFRleHQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlVbmRvUmVwbGFjZWRUZXh0KCkg
eyB9CiAgICAgdm9pZCBjb25maWd1cmVSYW5nZURlbGV0ZWRCeVJlYXBwbHlXaXRoU3RhcnRpbmdT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCmluZGV4IDc5MzQyYzQ5Nzc1M2Q5YTE1MjZlMDU1NTQ5ZmM3Nzk3MjE0YmY2ZTQuLjg5MWMx
Mjg4YzZlMzE0YWNjYWU5YjYyNzE5NzgxODgxZTc0MmRjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKQEAgLTM4MCwxMiArMzgwLDEyIEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBj
cmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAg
ICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkNvcHk6CiAg
ICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkN1dDoKLSAgICAgICAgcmV0dXJuIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3Jl
TW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwor
ICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1l
bnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGUsIG1ha2VVbmlxdWU8U3RhdGlj
UGFzdGVib2FyZD4oKSk7CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OlBhc3RlQXNQbGFp
blRleHQ6CiAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLmN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBhdXRvIHBs
YWluVGV4dFR5cGUgPSAidGV4dC9wbGFpbiJfczsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0
ID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPnJlYWRTdHJpbmcocGxhaW5U
ZXh0VHlwZSk7Ci0gICAgICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CisgICAgICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtl
VW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJkLT53cml0
ZVN0cmluZyhwbGFpblRleHRUeXBlLCBwbGFpblRleHQpOwogICAgICAgICAgICAgcmV0dXJuIERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6
OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCkpOwogICAgICAgICB9CkBA
IC0zOTYsMTAgKzM5NiwxMCBAQCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRy
YW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAgIGNhc2UgQ2xp
cGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5k
OjpCZWZvcmVDdXQ6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJlZm9yZVBhc3RlOgot
ICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1l
bnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFN0
YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlk
LCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFz
dGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6Oklu
dmFsaWQsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiB9CiAKIC8vIFJldHVybnMg
d2hldGhlciBjYWxsZXIgc2hvdWxkIGNvbnRpbnVlIHdpdGggInRoZSBkZWZhdWx0IHByb2Nlc3Np
bmciLCB3aGljaCBpcyB0aGUgc2FtZSBhcwpAQCAtMTE4Myw5ICsxMTgzLDkgQEAgdm9pZCBFZGl0
b3I6OnJlYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlvbiYgY29tcG9zaXRpb24p
CiAKIEVkaXRvcjo6RWRpdG9yKEZyYW1lJiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCi0g
ICAgLCBtX2tpbGxSaW5nKHN0ZDo6bWFrZV91bmlxdWU8UEFMOjpLaWxsUmluZz4oKSkKLSAgICAs
IG1fc3BlbGxDaGVja2VyKHN0ZDo6bWFrZV91bmlxdWU8U3BlbGxDaGVja2VyPihmcmFtZSkpCi0g
ICAgLCBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyPihmcmFtZSkpCisgICAgLCBtX2tpbGxSaW5nKG1ha2VVbmlxdWU8
UEFMOjpLaWxsUmluZz4oKSkKKyAgICAsIG1fc3BlbGxDaGVja2VyKG1ha2VVbmlxdWU8U3BlbGxD
aGVja2VyPihmcmFtZSkpCisgICAgLCBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIobWFrZVVu
aXF1ZTxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPihmcmFtZSkpCiAgICAgLCBtX2VkaXRvclVJ
VXBkYXRlVGltZXIoKnRoaXMsICZFZGl0b3I6OmVkaXRvclVJVXBkYXRlVGltZXJGaXJlZCkKICNp
ZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICwgbV90ZWxlcGhvbmVOdW1iZXJEZXRlY3Rpb25VcGRhdGVUaW1lcigqdGhpcywg
JkVkaXRvcjo6c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDBkZGMx
NWJkYzBkMzA0ZjQ1NDNhMDU5NjJiYzZjYzc2NDVmNTQ3OTQuLjJjMjAyOGNjNjNjMWI5MzhiYzY2
ZmY0YmVhNTg5OTI1OGU5YTRhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xNjMxLDcgKzE2MzEsNyBAQCB2b2lkIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjp1cGRhdGVOb2Rlc0luc2VydGVkKE5vZGUgKm5vZGUpCiBS
ZXBsYWNlbWVudEZyYWdtZW50KiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZW5zdXJlUmVwbGFj
ZW1lbnRGcmFnbWVudCgpCiB7CiAgICAgaWYgKCFtX3JlcGxhY2VtZW50RnJhZ21lbnQpCi0gICAg
ICAgIG1fcmVwbGFjZW1lbnRGcmFnbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZW1lbnRG
cmFnbWVudD4obV9kb2N1bWVudEZyYWdtZW50LmdldCgpLCBlbmRpbmdTZWxlY3Rpb24oKSk7Cisg
ICAgICAgIG1fcmVwbGFjZW1lbnRGcmFnbWVudCA9IG1ha2VVbmlxdWU8UmVwbGFjZW1lbnRGcmFn
bWVudD4obV9kb2N1bWVudEZyYWdtZW50LmdldCgpLCBlbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAg
cmV0dXJuIG1fcmVwbGFjZW1lbnRGcmFnbWVudC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCmluZGV4IDNiNDA2ODhjYjRk
YTY1NmIzNDQ1ODdjMDg4ODYzNmMwYWIxNTY2Y2YuLmY5YjY0YzVjOGM4OTZiZjMyMjYzMDg3MDlm
MjZhYTY2N2UxZWQ5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0
aW9uUmVjdEdhdGhlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
blJlY3RHYXRoZXJlci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNlbGVj
dGlvblJlY3RHYXRoZXJlcjo6Tm90aWZpZXI+IFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Y2xlYXJB
bmQKICAgICBtX2dhcFJlY3RzLmNsZWFyKCk7CiAgICAgbV9pc1RleHRPbmx5ID0gdHJ1ZTsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWVyPigqdGhpcyk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Tm90aWZpZXI+KCp0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDE4OTZlMWEyMjgx
YzFhOWIwNDZlOGVmYWNkOTExOWFmNWUyNzdkNTYuLmYxZDE5YzEwMTE0YzFhOTg1YjhiNDI2ZmE2
OGZkYjgxMjJhNjBjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAK
QEAgLTY1MCw3ICs2NTAsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQog
ICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIp
ID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6IHJlbmRlcmVyVGV4dC5sZW5n
dGgoKTsKICAgICAgICAgaWYgKCFtX2Zsb3dSdW5SZXNvbHZlckNhY2hlIHx8ICZtX2Zsb3dSdW5S
ZXNvbHZlckNhY2hlLT5mbG93KCkgIT0gJmJsb2NrRmxvdykgewogICAgICAgICAgICAgbV9hY2N1
bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID8g
MCA6IHRleHROb2RlT2Zmc2V0SW5GbG93KHRleHROb2RlKTsKLSAgICAgICAgICAgIG1fZmxvd1J1
blJlc29sdmVyQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJl
c29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQpOworICAgICAgICAgICAgbV9mbG93UnVuUmVzb2x2
ZXJDYWNoZSA9IG1ha2VVbmlxdWU8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2Nr
RmxvdywgKmxheW91dCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gU2tpcCB0byBtX29mZnNldCBw
b3NpdGlvbi4KICAgICAgICAgYXV0byByYW5nZSA9IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPnJh
bmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDBhODNhYzA5NTkyNzRjMDc4MGQ1ZDdiMzg1ZjAxOWMw
ZTg2ZTNjNzQuLjljZjg2YTRhMTVmMWM3YzZmMDI4MTU1NjQ3YWZhMDA1OWFlM2I2ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTM4MCw3
ICszODAsNyBAQCBIVE1MQ29udmVydGVyOjpIVE1MQ29udmVydGVyKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKICAgICBfZmxhZ3MucmVhY2hlZFN0YXJ0ID0gZmFs
c2U7CiAgICAgX2ZsYWdzLnJlYWNoZWRFbmQgPSBmYWxzZTsKICAgICAKLSAgICBfY2FjaGVzID0g
c3RkOjptYWtlX3VuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVzPigpOworICAgIF9jYWNoZXMgPSBt
YWtlVW5pcXVlPEhUTUxDb252ZXJ0ZXJDYWNoZXM+KCk7CiB9CiAKIEhUTUxDb252ZXJ0ZXI6On5I
VE1MQ29udmVydGVyKCkKQEAgLTU1MSw3ICs1NTEsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IEhUTUxD
b252ZXJ0ZXJDYWNoZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYg
ZQogCiAgICAgYXV0byByZXN1bHQgPSBtX2NvbXB1dGVkU3R5bGVzLmFkZCgmZWxlbWVudCwgbnVs
bHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxl
bWVudCwgdHJ1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+KCZlbGVtZW50LCB0cnVlKTsKICAgICBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yJiBjb21wdXRlZFN0eWxlID0gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgcmV0dXJuIGNvbXB1dGVkU3R5bGUucHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlkKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLmgKaW5kZXggMjU3N2Q1YTc2OTY4MTYyMmY1ZDBhN2I2M2ZmNGQwOWQ4OGM5NWRj
MS4uMjljNWE4ZGE3ZWUzMjU1NjEyNjU2OTA1NGUzMDIyMjhhNTMwMTgxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgT0JKQ19DTEFTUyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyKCkgeyB9CiAgICAgLy8gUmV0dXJucyBhIGNvbnRleHQgSUQuCkBAIC01Miw2ICs1Myw3IEBA
IGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CiAgICAgdm9pZCBkaXNtaXNzQWx0
ZXJuYXRpdmVzKCk7CiAKICAgICBjbGFzcyBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAg
ICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgeyB9CiAgICAgICAgIHVpbnQ2NF90
IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGZiNDM3MTYzMDNhZTI1YjgxOTI5MmQyNzFj
YTJjYWU2ODRiOWMwMmUuLmMzYzhmOGIzMjRiZmVjZGNlOWU1YzRlYjE5YjViNzQ2MDg5MjhjM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCkKIHsKICAg
ICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGll
bnRzKCk7CiAgICAgCi0gICAgYXV0byBwYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgYXV0byBwYWdlID0gbWFrZVVuaXF1ZTxQYWdl
PihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgcGFnZS0+c2V0SXNGb3JTYW5pdGl6
aW5nV2ViQ29udGVudCgpOwogICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFibGVkKGZh
bHNlKTsKICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IGEwOTVlZWFlOWIy
YTc5N2JkYWJhZTM0OTQwZmRjNmEzY2UzMDQyNGIuLmQ1ODExMmZmOWJkZjZjZDdkMTk4NTUyZDg2
Njk5MWY4NWI3YTFjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAKQEAgLTk0LDExICs5NCwxMSBAQCBzdGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKEZ1
bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIH0pOwogICAgIH0pOwogCi0gICAg
cXVldWUuZ2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdU
Rk1vdmUoZnVuY3Rpb24pKSk7CisgICAgcXVldWUuZ2V0KCkuYXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIEFzeW5jRmlsZVN0cmVh
bTo6QXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkKLSAgICA6IG1faW50
ZXJuYWxzKHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxzPihjbGllbnQpKQorICAgIDogbV9pbnRl
cm5hbHMobWFrZVVuaXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCmluZGV4IDlh
ZDNkYTllZmZmMGYzYTcwN2EwNjAxZjc4NjAxZDVkODY4MjU4ZjUuLjk5YTdiNWM2Zjk4N2ExNGJh
MTkwOTQ1ODk4N2FlODRlY2ZjNGYwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZpbGVSZWFkZXI6OnJl
YWRJbnRlcm5hbChCbG9iJiBibG9iLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkVHlwCiAgICAgbV9z
dGF0ZSA9IExPQURJTkc7CiAgICAgbV9lcnJvciA9IG51bGxwdHI7CiAKLSAgICBtX2xvYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4obV9yZWFkVHlwZSwgc3RhdGljX2Nh
c3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VV
bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4obV9yZWFkVHlwZSwgc3RhdGljX2Nhc3Q8RmlsZVJlYWRl
ckxvYWRlckNsaWVudCo+KHRoaXMpKTsKICAgICBtX2xvYWRlci0+c2V0RW5jb2RpbmcobV9lbmNv
ZGluZyk7CiAgICAgbV9sb2FkZXItPnNldERhdGFUeXBlKG1fYmxvYi0+dHlwZSgpKTsKICAgICBt
X2xvYWRlci0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNmFlNTUyY2JjZWZiYTM1YWY1NDk0YWQ4
MGExNDczMWQwMGFjYTNkMS4uNWM4ZjE4ZTNkYWIwZWIyNTk3YWQ1ZTgyMjEzOWJkODhmZjMyNGUw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE2Myw3ICsxNjMs
NyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUmIGZyYW1lKQogCiAgICAgLy8gQ3Jl
YXRlIHRoZSBDYWNoZWRGcmFtZXMgZm9yIGFsbCBGcmFtZXMgaW4gdGhlIEZyYW1lVHJlZS4KICAg
ICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKLSAgICAgICAgbV9jaGlsZEZyYW1l
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRGcmFtZT4oKmNoaWxkKSk7CisgICAgICAg
IG1fY2hpbGRGcmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+KCpjaGlsZCkpOwog
CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC0+ZG9tV2luZG93KCkpOwogICAgIFJFTEVB
U0VfQVNTRVJUKG1fZG9jdW1lbnQtPmZyYW1lKCkpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIENhY2hl
ZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAgICAgLy8gQWN0aXZlIERPTSBvYmpl
Y3RzIG11c3QgYmUgc3VzcGVuZGVkIGJlZm9yZSB3ZSBjYWNoZSB0aGUgZnJhbWUgc2NyaXB0IGRh
dGEuCiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlQ2Fj
aGUpOwogCi0gICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdENhY2hlZEZyYW1lRGF0YT4oZnJhbWUpOworICAgIG1fY2FjaGVkRnJhbWVTY3JpcHREYXRh
ID0gbWFrZVVuaXF1ZTxTY3JpcHRDYWNoZWRGcmFtZURhdGE+KGZyYW1lKTsKIAogICAgIG1fZG9j
dW1lbnQtPmRvbVdpbmRvdygpLT5zdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IDA2ODZhZThmZWNlNDRmMWVmNjkwZTVmOGY2YWJl
ODQ2MTQ2M2RmN2QuLjk3NDdhNDA0MDE2YWM4NjhkMmY3Nzk2ZTUzMzA0MzZmZmE1ODc0OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBERUZJ
TkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIGNhY2hlZFBh
Z2VDb3VudGVyLCAoIkNhY2hlZAogQ2FjaGVkUGFnZTo6Q2FjaGVkUGFnZShQYWdlJiBwYWdlKQog
ICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2V4cGlyYXRpb25UaW1lKE1vbm90b25pY1RpbWU6
Om5vdygpICsgU2Vjb25kcyhwYWdlLnNldHRpbmdzKCkuYmFja0ZvcndhcmRDYWNoZUV4cGlyYXRp
b25JbnRlcnZhbCgpKSkKLSAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKHN0ZDo6bWFrZV91bmlxdWU8
Q2FjaGVkRnJhbWU+KHBhZ2UubWFpbkZyYW1lKCkpKQorICAgICwgbV9jYWNoZWRNYWluRnJhbWUo
bWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkpCiB7CiAjaWZuZGVmIE5E
RUJVRwogICAgIGNhY2hlZFBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwCmluZGV4IDAwMjk2NTU4OTJkMTU0Y2I1MDQzZTFkYTIyODI1ODc5ZjYz
ZWRkZTUuLjNiYTI0YjlkZTJlOTk0MTk2YTBkZjkyZmMzNjYzY2VlYTViZjRiOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTQ3OCw3ICs0NzgsNyBAQCBib29sIFBhZ2VD
YWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVudHMgaW4gdGhpcyBzY29w
ZS4KICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlz
YWxsb3dlZFNjb3BlOwogCi0gICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7CisgICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdlID0gbWFr
ZVVuaXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7CiAgICAgICAgIGl0ZW0ubV9wcnVuaW5nUmVhc29u
ID0gUHJ1bmluZ1JlYXNvbjo6Tm9uZTsKICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0pOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDdhOTkxZjE3YjAzZDgz
ZTkwNWY3ZDNlMDYwN2JmNTJhOTliODBlNDUuLmIxNGQzMTAxNThiNjQ1ZmU4Njk5ZjdmOTlmNDE4
NThiZDU1YWUyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMzMy
LDcgKzMzMiw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVxdWVzdEljb24oY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhdGhzKQogICAgICAgICBtX2ZpbGVJY29uTG9hZGVyLT5pbnZhbGlkYXRlKCk7
CiAKICAgICBGaWxlSWNvbkxvYWRlckNsaWVudCYgY2xpZW50ID0gKnRoaXM7Ci0gICAgbV9maWxl
SWNvbkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZUljb25Mb2FkZXI+KGNsaWVudCk7Cisg
ICAgbV9maWxlSWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8RmlsZUljb25Mb2FkZXI+KGNsaWVudCk7
CiAKICAgICBjaHJvbWUtPmxvYWRJY29uRm9yRmlsZXMocGF0aHMsICptX2ZpbGVJY29uTG9hZGVy
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApp
bmRleCA4MDZlNWYzZGFlYmUyOTRlMzMwMjMwZGZhNWVkZThjOTJkNThjMzE4Li4xN2MwMjdjZmRm
YTFiYjQzYjY0NWVlNjJkNThjOGFjMzIwNmQ4NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3Ip
CiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRGb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIoKQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGFzSFRNTEVs
ZW1lbnQoKS5pc0Nvbm5lY3RlZCgpKTsKLSAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhc0hUTUxF
bGVtZW50KCkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0ciksICp0aGlz
KTsKKyAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1ha2VVbmlxdWU8Rm9ybUF0
dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhc0hUTUxFbGVtZW50KCkuYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihmb3JtQXR0ciksICp0aGlzKTsKIH0KIAogdm9pZCBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5jcHAKaW5kZXggZWE1YjA5YWFhMDhkYjI3Mzk2MWI5NTM0MjJmMDNkZDdh
ZDZlNDY3MS4uZDBlMDNmNTZjYjA2M2UyN2YxMTM0MGEyNzEzZDRmOTYxYjVhZTY1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8U2F2ZWRGb3JtU3RhdGU+IFNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6ZShj
b25zdCBWZWN0b3I8U3RyaW5nPgogICAgIHNpemVfdCBpdGVtQ291bnQgPSBzdGF0ZVZlY3Rvcltp
bmRleCsrXS50b1VJbnQoKTsKICAgICBpZiAoIWl0ZW1Db3VudCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgYXV0byBzYXZlZEZvcm1TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRG
b3JtU3RhdGU+KCk7CisgICAgYXV0byBzYXZlZEZvcm1TdGF0ZSA9IG1ha2VVbmlxdWU8U2F2ZWRG
b3JtU3RhdGU+KCk7CiAgICAgd2hpbGUgKGl0ZW1Db3VudC0tKSB7CiAgICAgICAgIGlmIChpbmRl
eCArIDEgPj0gc3RhdGVWZWN0b3Iuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0zNjUsMTMgKzM2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGZvcm1TdGF0ZVNpZ25hdHVyZSgp
CiBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI6OlNhdmVkRm9ybVN0YXRlTWFwPiBGb3Jt
Q29udHJvbGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0
SGFzaFNldCYgY29udHJvbExpc3QpCiB7CiAgICAgRm9ybUtleUdlbmVyYXRvciBrZXlHZW5lcmF0
b3I7Ci0gICAgYXV0byBzdGF0ZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGVN
YXA+KCk7CisgICAgYXV0byBzdGF0ZU1hcCA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGVNYXA+
KCk7CiAgICAgZm9yIChhdXRvJiBjb250cm9sIDogY29udHJvbExpc3QpIHsKICAgICAgICAgaWYg
KCFjb250cm9sLT5zaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvJiBmb3JtU3RhdGUgPSBzdGF0ZU1hcC0+YWRk
KGtleUdlbmVyYXRvci5mb3JtS2V5KCpjb250cm9sKS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICAgICAgaWYgKCFmb3JtU3RhdGUpCi0gICAgICAgICAgICBmb3JtU3RhdGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOworICAgICAgICAgICAgZm9ybVN0
YXRlID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAgICAgICAgZm9ybVN0YXRlLT5h
cHBlbmRDb250cm9sU3RhdGUoY29udHJvbC0+bmFtZSgpLCBjb250cm9sLT50eXBlKCksIGNvbnRy
b2wtPnNhdmVGb3JtQ29udHJvbFN0YXRlKCkpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVNYXA7
CkBAIC00MDMsNyArNDAzLDcgQEAgRm9ybUNvbnRyb2xTdGF0ZSBGb3JtQ29udHJvbGxlcjo6dGFr
ZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9sRWwKICAgICBpZiAobV9z
YXZlZEZvcm1TdGF0ZU1hcC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0
YXRlKCk7CiAgICAgaWYgKCFtX2Zvcm1LZXlHZW5lcmF0b3IpCi0gICAgICAgIG1fZm9ybUtleUdl
bmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKKyAgICAgICAg
bV9mb3JtS2V5R2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxGb3JtS2V5R2VuZXJhdG9yPigpOwogICAg
IFNhdmVkRm9ybVN0YXRlTWFwOjppdGVyYXRvciBpdCA9IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZmlu
ZChtX2Zvcm1LZXlHZW5lcmF0b3ItPmZvcm1LZXkoY29udHJvbCkuaW1wbCgpKTsKICAgICBpZiAo
aXQgPT0gbV9zYXZlZEZvcm1TdGF0ZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250
cm9sU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5k
ZXggMTA0N2M1OGVlYzM1MzZlM2QzOTkzYTdiNmU1ODYyNWIwMTU5NTJmMS4uZWI5YmQwNjg1ZDU5
MmVhNjkyMzEzYWQ0MTZjMjdkN2YyODI2MWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIEhUTUxBbmNob3JFbGVt
ZW50OjpoYXNSZWwoUmVsYXRpb24gcmVsYXRpb24pIGNvbnN0CiBET01Ub2tlbkxpc3QmIEhUTUxB
bmNob3JFbGVtZW50OjpyZWxMaXN0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVsTGlzdCkgewot
ICAgICAgICBtX3JlbExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oY29uc3Rf
Y2FzdDxIVE1MQW5jaG9yRWxlbWVudCY+KCp0aGlzKSwgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShE
b2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9yZWxMaXN0ID0gbWFrZVVu
aXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQmPigqdGhpcyks
IEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UodG9rZW4sICJub3JlZmVycmVyIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0
b2tlbiwgIm5vb3BlbmVyIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgImFyIik7
CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmluZGV4IGFjMDc1
OGRlODNiMDQ4ODJhNWQ4OTIyZmQ0MDU1NDhlZjk1NmRjYTIuLjQ5YWJmYTVmNzBhN2FiOTdkNzNl
MmM4MmI3NjdiMDUzNTFhZGVmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBIVE1MQXJlYUVsZW1lbnQ6OmludmFsaWRhdGVD
YWNoZWRSZWdpb24oKQogYm9vbCBIVE1MQXJlYUVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQoTGF5b3V0
UG9pbnQgbG9jYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNpemUsIEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCkKIHsKICAgICBpZiAobV9sYXN0U2l6ZSAhPSBzaXplKSB7Ci0gICAgICAgIG1fcmVnaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXRoPihnZXRSZWdpb24oc2l6ZSkpOworICAgICAgICBtX3Jl
Z2lvbiA9IG1ha2VVbmlxdWU8UGF0aD4oZ2V0UmVnaW9uKHNpemUpKTsKICAgICAgICAgbV9sYXN0
U2l6ZSA9IHNpemU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwCmluZGV4IDA3NzE1Y2JiNTA5NTRhNjI2MzZjOTMzMDVhNzY1MzM1OWQxZTZmNmIuLjIw
MTRlZmU3NWNlYzQ2MGUzNzkxZTM2M2Y1NjI4ZTUwMDFiOGRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC05NTIsNyArOTUyLDcgQEAgdm9pZCBIVE1M
Q2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiYmIGJ1ZmZlcikgY28KICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXModHJ1ZSk7CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoZGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAg
ICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOwotICAgIG1f
Y29udGV4dFN0YXRlU2F2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgbV9jb250ZXh0U3RhdGVTYXZl
ciA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcj4obV9pbWFnZUJ1ZmZlci0+
Y29udGV4dCgpKTsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soSFRNTEVsZW1lbnQ6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKSk7CiAgICAgSFRNTEVsZW1lbnQ6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1l
bW9yeUNvc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IDk3
NmM4ZTBhOWEwNmE5YjgzZDZjYTk0MWJkNWRkMzdiOWYzMzg1YzUuLjMyODE3NmI2OWU4Y2QxYmYy
MmQ0ZTc2MzI3ZTlmMjkyOTY4YWI0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFt
ZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xs
ZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CisgICAgYXV0byBjYWNoZSA9IG1ha2VVbmlxdWU8
Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwogCiAgICAgdW5zaWduZWQgc2l6ZSA9IGxl
bmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRleCBmMTU3ODc0ZTZkNTM0
ZTNmNjEzNGU0YTVkZjRmNTFiZTJmNjdhMzFhLi42MGRkMWZiMjUyMDM4NjBkM2Q5MmE3YTVhY2Iz
MzFjMmFiMDRiNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQu
Y3BwCkBAIC04OCw3ICs4OCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIERldGFpbHNTbG90QXNzaWdu
bWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3QgTm9kZSYgY2hpbGQpCiBSZWY8SFRNTERl
dGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgYXV0byBkZXRhaWxzID0g
YWRvcHRSZWYoKm5ldyBIVE1MRGV0YWlsc0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAg
ICBkZXRhaWxzLT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3Rk
OjptYWtlX3VuaXF1ZTxEZXRhaWxzU2xvdEFzc2lnbm1lbnQ+KCkpKTsKKyAgICBkZXRhaWxzLT5h
ZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVVuaXF1ZTxEZXRh
aWxzU2xvdEFzc2lnbm1lbnQ+KCkpKTsKICAgICByZXR1cm4gZGV0YWlsczsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggZDg4OTNi
MWYwOTQ5ZWYxMDJlMjlkMDNjNTg5NjdjNGRkNGYzZmQ1YS4uZTE1MzE2YTE5ZWVmYjQ3N2UzZjM2
N2M4MGY3YzNjMWEyYTYzNGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKQogICAgIGlmIChyZW5k
ZXJlcigpICYmIHdpbGxWYWxpZGF0ZSgpKQogICAgICAgICBtZXNzYWdlID0gdmFsaWRhdGlvbk1l
c3NhZ2UoKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBpZiAoIW1fdmFsaWRhdGlvbk1lc3NhZ2Up
Ci0gICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbGlkYXRp
b25NZXNzYWdlPih0aGlzKTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IG1ha2VVbmlx
dWU8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMpOwogICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UtPnVw
ZGF0ZVZhbGlkYXRpb25NZXNzYWdlKG1lc3NhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IDZlYzIyZDc3NDlm
MmY3OGJkMzFlZjc3ZWE2MzYwNzNiNzFjNTlmZjIuLmEyYjAwZThmODE2ZGExYzIyMWIxYzM2NmVh
NmU2ODljM2IxYzY4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAgIGlm
IChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNh
Y2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7Cisg
ICAgYXV0byBjYWNoZSA9IG1ha2VVbmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigp
OwogCiAgICAgSGFzaFNldDxBdG9tU3RyaW5nSW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50czsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGM3NmQ0OTNhNjJjZWQ4
MzA4ODAxYjZiMDFkMzMyMWUwYTMzM2Y1MWQuLjQzNWQ5NTE0ZGQyOWRkZDFmNmRmYjFkMTY5ZTM0
N2UzMTVhMzAxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAg
LTc5MSw3ICs3OTEsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6YWRkVG9QYXN0TmFtZXNNYXAo
Rm9ybU5hbWVkSXRlbSogaXRlbSwgY29uc3QgQXRvbVN0cmluZyYgcAogICAgIGlmIChwYXN0TmFt
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fcGFzdE5hbWVzTWFwKQot
ICAgICAgICBtX3Bhc3ROYW1lc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdE5hbWVzTWFwPigp
OworICAgICAgICBtX3Bhc3ROYW1lc01hcCA9IG1ha2VVbmlxdWU8UGFzdE5hbWVzTWFwPigpOwog
ICAgIG1fcGFzdE5hbWVzTWFwLT5zZXQocGFzdE5hbWUuaW1wbCgpLCBpdGVtKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCAwMmQ3ZDRlNGZiZTg2
ZjUyNzBmNTg0YjZhOGRlYjliZTQ2Zjk3YWE5Li5iMWM4MjFkZDliYWJhMmEyMGNiMjllMWMxY2Zk
OTBkNzFmZWM1OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNw
cApAQCAtNTQsNyArNTQsNyBAQCBSZWY8SFRNTElGcmFtZUVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogRE9NVG9rZW5MaXN0
JiBIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCgpCiB7CiAgICAgaWYgKCFtX3NhbmRib3gpIHsK
LSAgICAgICAgbV9zYW5kYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlz
LCBzYW5kYm94QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CisgICAgICAg
IG1fc2FuZGJveCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2FuZGJveEF0dHIs
IFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuIFNl
Y3VyaXR5Q29udGV4dDo6aXNTdXBwb3J0ZWRTYW5kYm94UG9saWN5KHRva2VuKTsKICAgICAgICAg
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXgg
MGMyNWNkZDgwZDVmOGE3NzBhMWQ5NzAwNTc4NDdhODljNTY4M2RiZC4uMzc2YzUyMTk2NGUwZjcx
YjZmZDljMjE3MmQ2MjAxYzI5MjU3YTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IEhU
TUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MK
IEhUTUxJbWFnZUxvYWRlciYgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIoKQog
ewogICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgIG1faW1hZ2VMb2Fk
ZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9p
bWFnZUxvYWRlcjsKIH0KIApAQCAtMTY0MSw3ICsxNjQxLDcgQEAgUmVmUHRyPEhUTUxEYXRhTGlz
dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmRhdGFMaXN0KCkgY29uc3QKIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKQogewogICAgIGlm
IChpc0Nvbm5lY3RlZCgpKQotICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CisgICAgICAgIG1fbGlzdEF0
dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbWFrZVVuaXF1ZTxMaXN0QXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXI+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGlzdEF0dHIpLCB0aGlzKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCBiODYzNGNh
ZGFmYTE4YTBhMjdjY2Y3MjhmOWJiZjU2Y2I3Zjc4ZDE2Li5mNmE3YmM4MDI0ZmZhNWU0YmQ3MWY2
OWEyN2M5N2M4YzkzNmJiNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnN0eWxlU2hlZXRJ
c0xvYWRpbmcoKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MTGlua0VsZW1lbnQ6OnNpemVzKCkK
IHsKICAgICBpZiAoIW1fc2l6ZXMpCi0gICAgICAgIG1fc2l6ZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PERPTVRva2VuTGlzdD4oKnRoaXMsIHNpemVzQXR0cik7CisgICAgICAgIG1fc2l6ZXMgPSBtYWtl
VW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNpemVzQXR0cik7CiAgICAgcmV0dXJuICptX3Np
emVzOwogfQogCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3Bh
dGNoUGVuZGluZ0V2ZW50KExpbmtFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCiBET01Ub2tlbkxp
c3QmIEhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCgpCiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIAot
ICAgICAgICBtX3JlbExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMs
IEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRv
a2VuKSB7CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhp
cywgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcg
dG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiBMaW5rUmVsQXR0cmlidXRlOjppc1N1cHBvcnRl
ZChkb2N1bWVudCwgdG9rZW4pOwogICAgICAgICB9KTsKICAgICByZXR1cm4gKm1fcmVsTGlzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGI1NWM0NjkwNjFk
Y2MwNGYyYTExOWEyNTUzOGVmMDgyZmU2ZTQzNTUuLmY2NGZlOTJiNmI3ZDAxYzQ5NGI1N2E3NjVl
MmE1NWI2NGIzZjA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNDgxLDcgKzQ4MSw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZmluaXNoSW5pdGlhbGl6YXRpb24oKQogewotICAgIG1fbWVkaWFTZXNz
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CisgICAg
bV9tZWRpYVNlc3Npb24gPSBtYWtlVW5pcXVlPE1lZGlhRWxlbWVudFNlc3Npb24+KCp0aGlzKTsK
IAogICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVu
dFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4pOwogICAgIG1fbWVkaWFT
ZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVp
cmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhKTsKQEAgLTMwMjcsNyArMzAyNyw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiBpblRpbWUs
IGNvbnN0IE1lZGlhVGltCiAKICAgICAvLyA1IC0gSWYgdGhlIHNlZWsgd2FzIGluIHJlc3BvbnNl
IHRvIGEgRE9NIG1ldGhvZCBjYWxsIG9yIHNldHRpbmcgb2YgYW4gSURMIGF0dHJpYnV0ZSwgdGhl
biBjb250aW51ZQogICAgIC8vIHRoZSBzY3JpcHQuIFRoZSByZW1haW5kZXIgb2YgdGhlc2Ugc3Rl
cHMgbXVzdCBiZSBydW4gYXN5bmNocm9ub3VzbHkuCi0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBv
c2l0aXZlVG9sZXJhbmNlKTsKKyAgICBtX3BlbmRpbmdTZWVrID0gbWFrZVVuaXF1ZTxQZW5kaW5n
U2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOwog
ICAgIGlmIChmcm9tRE9NKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJlbnF1
ZXVpbmcgc2VlayBmcm9tICIsIG5vdywgIiB0byAiLCB0aW1lKTsKICAgICAgICAgbV9zZWVrVGFz
a1F1ZXVlLnNjaGVkdWxlVGFzayhzdGQ6OmJpbmQoJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUYXNr
LCB0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDYxMjQ1
NDFmN2NmNTRhMTEwYTVlNDg2ZTQyYzcxY2QyYTJlZmExOTMuLjJjNmVjMDU4ZTRjOTUyMTMxYzBl
YTA4ZTA4YTdlYTk0MzU4MDY1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC05OTAsNiArOTkwLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudAogICAgIFJlZlB0
cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCiAgICAgc3RydWN0IFBlbmRpbmdTZWVrIHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nU2Vlayhj
b25zdCBNZWRpYVRpbWUmIG5vdywgY29uc3QgTWVkaWFUaW1lJiB0YXJnZXRUaW1lLCBjb25zdCBN
ZWRpYVRpbWUmIG5lZ2F0aXZlVG9sZXJhbmNlLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVG9s
ZXJhbmNlKQogICAgICAgICAgICAgOiBub3cobm93KQogICAgICAgICAgICAgLCB0YXJnZXRUaW1l
KHRhcmdldFRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCmlu
ZGV4IGRkNGZhMmQ3MGU0ZjQzZjQyYjgyMjJkMzdkNDQxOGYxYTEzMWVkODcuLjU2YjcyMDZhZTNi
ZThmMTBhODgxNGFlOWFmYWM2MmJmZWI1NjA5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE91dHB1dEVsZW1lbnQuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBIVE1MT3V0cHV0RWxl
bWVudDo6c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiBET01Ub2tlbkxpc3Qm
IEhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKCkKIHsKICAgICBpZiAoIW1fdG9rZW5zKQotICAg
ICAgICBtX3Rva2VucyA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgZm9y
QXR0cik7CisgICAgICAgIG1fdG9rZW5zID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlz
LCBmb3JBdHRyKTsKICAgICByZXR1cm4gKm1fdG9rZW5zOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBkZGE5NDQ5ZDU3YWQ0MjA4
NTg2MjdkZWQzZmRkOTE4MTMyMTVmZTJiLi41Yjk5ZDU1NTUzMDQ5NzA5M2M2YmNhOTk1ODdjN2Ey
ZjcyNTU5MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OnVwZGF0ZUFmdGVyU3R5bGVSZXNvbHV0aW9uKCkKICAgICBpZiAocmVuZGVyZXIoKSAmJiAhdXNl
RmFsbGJhY2tDb250ZW50KCkpIHsKICAgICAgICAgaWYgKGlzSW1hZ2VUeXBlKCkpIHsKICAgICAg
ICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAg
ICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsK
ICAgICAgICAgICAgIGlmIChtX25lZWRzSW1hZ2VSZWxvYWQpCiAgICAgICAgICAgICAgICAgbV9p
bWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAg
ICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1h
cnlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNw
cAppbmRleCAxMGJjMDlmZjA5OWM4ODhiMjI2MjY5MzkwYjhlMWY4YmU0Y2UzOTY3Li5iMDQ5Mzli
OWMyZDcyNzAyMTM3OWM1YTRkZDM0MDQ3ZDgxMmFkOTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFN1bW1hcnlT
bG90RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTbG90QXNzaWdubWVudCB7CiBSZWY8SFRNTFN1bW1h
cnlFbGVtZW50PiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgUmVmPEhUTUxTdW1tYXJ5RWxl
bWVudD4gc3VtbWFyeSA9IGFkb3B0UmVmKCpuZXcgSFRNTFN1bW1hcnlFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7Ci0gICAgc3VtbWFyeS0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVh
dGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8U3VtbWFyeVNsb3RFbGVtZW50PigpKSk7Cisg
ICAgc3VtbWFyeS0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIG1h
a2VVbmlxdWU8U3VtbWFyeVNsb3RFbGVtZW50PigpKSk7CiAgICAgcmV0dXJuIHN1bW1hcnk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGE1ZTc1YWFm
ZjUyZGRmOWY1NzU0NWJhMDY3ZWVjNzg5ODg4ZGQ5YWIuLjY3ZmYyMTI1MmYxYjhlODMxMGExZDdj
YmIyMzJlYThjNzM5MzhhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZEF0dGFjaFJl
bmRlcmVycygpCiAgICAgdXBkYXRlRGlzcGxheVN0YXRlKCk7CiAgICAgaWYgKHNob3VsZERpc3Bs
YXlQb3N0ZXJJbWFnZSgpKSB7CiAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAg
ICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRo
aXMpOworICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9h
ZGVyPigqdGhpcyk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7
CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICByZW5kZXJlci0+aW1hZ2VSZXNvdXJjZSgpLnNldENhY2hlZEltYWdlKG1faW1hZ2VMb2Fk
ZXItPmltYWdlKCkpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
CiAKICAgICAgICAgaWYgKHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CiAgICAgICAgICAg
ICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAgICAg
bV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAg
ICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNF
cnJvcigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVi
bGljVVJMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIu
Y3BwCmluZGV4IDdiZWJjN2ExMGNjYmVkNTNjZmU4Y2FmOGEwN2M3OGU2YzU3OWQ2NGYuLmI2Njhk
YTFmMzIxNGRiZjliOTE2MWVmYTgzMjU2Yzk1Y2E4MjExZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9QdWJsaWNVUkxNYW5hZ2VyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQdWJsaWNVUkxNYW5hZ2VyPiBQdWJsaWNVUkxNYW5hZ2Vy
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBhdXRvIHB1
YmxpY1VSTE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1YmxpY1VSTE1hbmFnZXI+KGNvbnRl
eHQpOworICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9IG1ha2VVbmlxdWU8UHVibGljVVJMTWFu
YWdlcj4oY29udGV4dCk7CiAgICAgcHVibGljVVJMTWFuYWdlci0+c3VzcGVuZElmTmVlZGVkKCk7
CiAgICAgcmV0dXJuIHB1YmxpY1VSTE1hbmFnZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFs
aWRhdGlvbk1lc3NhZ2UuY3BwCmluZGV4IDhhZjczYThhMDA1NDk4MGFkMTc5MDY5NTZhODQzMmE2
ZjljZGIxNGIuLmY1ZGFiMGY0MmYyZDA1M2U3MDNjNmM1NzIzY2ExNjAzNzFkMWEyZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCkBAIC0xMTUsOSArMTE1LDkg
QEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAgbV9tZXNzYWdlID0gbWVz
c2FnZTsKICAgICBpZiAoIW1fYnViYmxlKQotICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKTsK
KyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1l
c3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7CiAgICAgZWxzZQotICAgICAgICBtX3RpbWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2Fn
ZURPTUFuZFN0YXJ0VGltZXIpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4o
KnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIpOwog
ICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCkBAIC0xNDMsNyArMTQzLDcgQEAg
dm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIoKQogICAg
IGlmIChtYWduaWZpY2F0aW9uIDw9IDApCiAgICAgICAgIG1fdGltZXIgPSBudWxscHRyOwogICAg
IGVsc2UgewotICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CisgICAgICAgIG1fdGltZXIg
PSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJi
bGVUcmVlKTsKICAgICAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4KDVfcywgMV9t
cyAqIHN0YXRpY19jYXN0PGRvdWJsZT4obV9tZXNzYWdlLmxlbmd0aCgpKSAqIG1hZ25pZmljYXRp
b24pKTsKICAgICB9CiB9CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2Fn
ZTo6cmVxdWVzdFRvSGlkZU1lc3NhZ2UoKQogICAgIH0KIAogICAgIC8vIFdlIG11c3Qgbm90IG1v
ZGlmeSB0aGUgRE9NIHRyZWUgaW4gdGhpcyBjb250ZXh0IGJ5IHRoZSBzYW1lIHJlYXNvbiBhcyBz
ZXRNZXNzYWdlKCkuCi0gICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlz
LCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOworICAgIG1fdGltZXIgPSBt
YWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVU
cmVlKTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAppbmRleCBiMTY3Nzg0NDI4YzNiZmU5ZTZmMTZhNzc4NDBkM2YzYmI5NzA1Yjk2Li41
M2M5YzU2NjA0MjdjNDg2ZTMyYWJjMGMyZDY1NGNjYzU2YzAyOGEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcApAQCAtOTksNyArOTksNyBAQCBzdHJ1Y3QgRGlzcGxheUxpc3REcmF3aW5nQ29udGV4
dCB7CiAKICAgICBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwKQogICAgICAgICA6IGNvbnRleHQo
WyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0
Q29udGV4dCwgZGlzcGxheUxpc3QsIHN0YXRlLCBjbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3Bs
YXlMaXN0Q29udGV4dCwgZGlzcGxheUxpc3QsIHN0YXRlLCBjbGlwLCBBZmZpbmVUcmFuc2Zvcm0o
KSk7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KQEAgLTIxMTgsNyArMjExOCw3IEBAIEdyYXBo
aWNzQ29udGV4dCogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd2luZ0NvbnRleHQo
KSBjb25zdAogewogICAgIGlmIChVTkxJS0VMWShtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmcpKSB7
CiAgICAgICAgIGlmICghbV9yZWNvcmRpbmdDb250ZXh0KQotICAgICAgICAgICAgbV9yZWNvcmRp
bmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0PihH
cmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBjYW52
YXNCYXNlKCkuc2l6ZSgpKSk7CisgICAgICAgICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBtYWtl
VW5pcXVlPERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dFN0YXRlKCks
IEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpKTsKICAg
ICAgICAgcmV0dXJuICZtX3JlY29yZGluZ0NvbnRleHQtPmNvbnRleHQ7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDYzMTE5MTc1NzBmMmRiMjg1OTRjYmIzNDkwMjQ2OTk3YjU4M2ZiZTAuLmNkNDcy
MTI2MWIyZTAyMmI1NTI1ZGQzZDNjYTU0NjlmOWMwYjNlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMzU5
LDcgKzEzNTksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RF
RCh0eXBlLCB2YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAogICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAgICAgICAgIGlmICgh
dmFyaWFibGUpIHsgXAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IHN0ZDo6
bWFrZV91bmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgdmFyaWFi
bGUgPSAoY2FuRW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAog
ICAgICAgICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7
IFwKICAgICAgICAgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlMDZiZjk5ZDU5MTU5NjM5ODBhNjExYzMyYTgz
OWUyOTdmMTI4MDQ1Li5lNWZkZTcwMzM3NDU2YTMxZTE1NzFlZTEwZjNmZDI2NDJkYjAzNmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2RlZmluZSBFTkFC
TEVfSUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgY2FuRW5hYmxlKSBc
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgbmFtZUxpdGVyYWwpKSB7IFwK
ICAgICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5F
bmFibGUpID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCisgICAg
ICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0eXBlPigqdGhpcykg
OiBudWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAg
ICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9u
KCp0aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKQEAgLTEzMiw3ICsxMzIsNyBAQCBXZWJHTEV4
dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBuYW1lKQogICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG51bGxwdHI7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKLSAg
ICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBzdGQ6Om1ha2VfdW5pcXVlPEVY
VFNoYWRlclRleHR1cmVMT0Q+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRl
eHR1cmVMT0QgPSBtYWtlVW5pcXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KCp0aGlzKTsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigq
dGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE1OSw3ICsxNTksNyBA
QCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG51
bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIl9zKTsKLSAg
ICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
RHJhd0J1ZmZlcnM+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMg
PSBtYWtlVW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCBXZWJHTEV4dGVu
c2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBudWxscHRyOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7Ci0gICAg
ICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5H
TEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFu
Y2VkQXJyYXlzID0gbWFrZVVuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4oKnRoaXMpOwogICAg
ICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9u
KCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApp
bmRleCAzZWNlN2VlYjc0MmZhZGI2ZmUxOGIzM2ViNWE2MTM5Y2VkNDFiYTU2Li5kMTY2ZmIyMzkw
NzZkMzYyNjVkOTZjNjQ1ZjA3MTg3NWFjODJiYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNzk5
LDggKzc5OSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6aW5pdGlhbGl6ZU5l
d0NvbnRleHQoKQogICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgY2FudmFzU2l6ZS53aWR0
aCgpLCBjYW52YXNTaXplLmhlaWdodCgpKTsKICAgICBtX2NvbnRleHQtPnNjaXNzb3IoMCwgMCwg
Y2FudmFzU2l6ZS53aWR0aCgpLCBjYW52YXNTaXplLmhlaWdodCgpKTsKIAotICAgIG1fY29udGV4
dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMUmVuZGVyaW5n
Q29udGV4dExvc3RDYWxsYmFjaz4odGhpcykpOwotICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNz
YWdlQ2FsbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1l
c3NhZ2VDYWxsYmFjaz4odGhpcykpOworICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxs
YmFjayhtYWtlVW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dExvc3RDYWxsYmFjaz4odGhpcykp
OworICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2sobWFrZVVuaXF1ZTxXZWJH
TFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjaz4odGhpcykpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MoKQpAQCAtMTU3OSw3ICsxNTc5
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKFdlYkdM
U2hhZGVyKiBzaGFkZXIpCiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4g
c3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRl
OjpjdXJyZW50U3RhdGUoKSk7CiAKICAgICAgICAgZm9yIChhdXRvJiBlcnJvciA6IGdldFNoYWRl
ckluZm9Mb2coc2hhZGVyKS5zcGxpdCgnXG4nKSkKLSAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1l
bnQoKS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVz
c2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3IsIHN0YWNrVHJhY2UuY29weVJlZigp
KSk7CisgICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UobWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJp
bmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiArIGVy
cm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkpOwogICAgIH0KIH0KIApAQCAtNTgwOCw5ICs1ODA4
LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmludFRvQ29uc29sZShNZXNz
YWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYKICAgICAvLyBFcnJvciBtZXNzYWdlcyBjYW4g
b2NjdXIgZHVyaW5nIGZ1bmN0aW9uIGNhbGxzLCBzbyBzaG93IHN0YWNrIHRyYWNlcyBmb3IgdGhl
bS4KICAgICBpZiAobGV2ZWwgPT0gTWVzc2FnZUxldmVsOjpFcnJvcikgewogICAgICAgICBSZWY8
SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0
ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpOwotICAgICAgICBj
b25zb2xlTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVz
c2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CisgICAgICAgIGNvbnNvbGVNZXNzYWdlID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJp
bmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKHN0YWNrVHJhY2Up
KTsKICAgICB9IGVsc2UKLSAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVz
c2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UpOworICAgICAgICBjb25zb2xlTWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVu
ZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSk7CiAKICAgICBhdXRvKiBj
YW52YXMgPSBodG1sQ2FudmFzKCk7CiAgICAgaWYgKGNhbnZhcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAppbmRleCBlODU5MGNjYzY5NzI4
YWYzOTMwMWQzYWU4ZDg5ODhmNWMxNWE0YjJhLi5hZWZlNDU3ZjRlZmYwNDM2NTc2M2NiMjZmNzE3
ODQ2M2UzMmUxZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQ
cmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJl
bG9hZFNjYW5uZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5l
cjo6ZW1pdFJ1bGUoKQogICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IFVSTCBiYXNlRWxlbWVudFVSTDsgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhc3NlZCBpbiBm
cm9tIHRoZSBIVE1MUHJlbG9hZFNjYW5uZXIgdmlhIHNjYW4oKTogd2l0aG91dCBpdCB3ZSB3aWxs
IGdldCByZWxhdGl2ZSBVUkxzIHdyb25nLgogICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0
aGlzIGJlIGluY2x1ZGluZyB0aGUgY2hhcnNldCBpbiB0aGUgcHJlbG9hZCByZXF1ZXN0PwotICAg
ICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZFJlcXVl
c3Q+KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NT
U3R5bGVTaGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBS
ZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFw
cGVuZChtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVudFVS
TCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQsIFN0cmluZygpLCBQcmVsb2Fk
UmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSk7
CiAgICAgICAgIH0KICAgICAgICAgbV9zdGF0ZSA9IEluaXRpYWw7CiAgICAgfSBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShydWxlLCAiY2hhcnNldCIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4
IDUxYmFlNGMyMWNmOTQwZGNkOGM2ZDMyMGJjNGRiZDY2MjZiZTdkOWYuLjlhYzQ0NGVmMGE2NzFm
OGE0NzY5OTU3YWUzMjIyYmQ4ZDEwMDdkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTUwMyw3ICs1MDMsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+IEhUTUxDb25zdHJ1
Y3Rpb25TaXRlOjppbnNlcnRIVE1MRQogICAgIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogZWxl
bWVudEludGVyZmFjZSA9IG51bGxwdHI7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBj
cmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UodG9rZW4sICZlbGVt
ZW50SW50ZXJmYWNlKTsKICAgICBpZiAoVU5MSUtFTFkoZWxlbWVudEludGVyZmFjZSkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRh
PigqZWxlbWVudEludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBXVEZNb3ZlKHRva2VuLmF0dHJpYnV0
ZXMoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0
aW9uRGF0YT4oKmVsZW1lbnRJbnRlcmZhY2UsIHRva2VuLm5hbWUoKSwgV1RGTW92ZSh0b2tlbi5h
dHRyaWJ1dGVzKCkpKTsKICAgICBhdHRhY2hMYXRlcihjdXJyZW50Tm9kZSgpLCAqZWxlbWVudCk7
CiAgICAgbV9vcGVuRWxlbWVudHMucHVzaChIVE1MU3RhY2tJdGVtOjpjcmVhdGUoZWxlbWVudC5y
ZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHRva2VuKSkpOwogICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAK
aW5kZXggNGZmNGUyYjg3ODhhOTE5YmY0MmQxN2FkOWZkNjUxYjliMDNhZDE5Yi4uZGQ5ZWEwNGM2
ZjUwMGM4NjRiOGM5NGMxOTM4Mzc4NzdhZmZkZTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC01MywxMSArNTMsMTEgQEAg
SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50JiBkb2N1
bWVudCkKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1f
b3B0aW9ucyhkb2N1bWVudCkKICAgICAsIG1fdG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1f
c2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFNjcmlwdFJ1bm5lcj4oZG9jdW1lbnQs
IHN0YXRpY19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0Jj4oKnRoaXMpKSkKLSAgICAsIG1fdHJl
ZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBkb2N1bWVu
dCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQotICAgICwgbV9wYXJzZXJTY2hl
ZHVsZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MUGFyc2VyU2NoZWR1bGVyPigqdGhpcykpCisgICAg
LCBtX3NjcmlwdFJ1bm5lcihtYWtlVW5pcXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBz
dGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVubmVySG9zdCY+KCp0aGlzKSkpCisgICAgLCBtX3RyZWVC
dWlsZGVyKG1ha2VVbmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQsIHBhcnNl
ckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKG1h
a2VVbmlxdWU8SFRNTFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQogICAgICwgbV94c3NBdWRpdG9y
RGVsZWdhdGUoZG9jdW1lbnQpCi0gICAgLCBtX3ByZWxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPEhU
TUxSZXNvdXJjZVByZWxvYWRlcj4oZG9jdW1lbnQpKQorICAgICwgbV9wcmVsb2FkZXIobWFrZVVu
aXF1ZTxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+KGRvY3VtZW50KSkKIHsKIH0KIApAQCAtNzAsNyAr
NzAsNyBAQCBpbmxpbmUgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9j
dW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbgogICAgIDogU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCksIHJhd1BvbGljeSkKICAgICAsIG1fb3B0aW9ucyhm
cmFnbWVudC5kb2N1bWVudCgpKQogICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zKQotICAgICwg
bV90cmVlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGZy
YWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMp
KQorICAgICwgbV90cmVlQnVpbGRlcihtYWtlVW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMs
IGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlv
bnMpKQogICAgICwgbV94c3NBdWRpdG9yRGVsZWdhdGUoZnJhZ21lbnQuZG9jdW1lbnQoKSkKIHsK
ICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRt
bCNwYXJzaW5nLWh0bWwtZnJhZ21lbnRzCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgaWYg
KGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICBBU1NFUlQobV90b2tlbml6ZXIuaXNJ
bkRhdGFTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7Ci0gICAgICAg
ICAgICBtX3ByZWxvYWRTY2FubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MUHJlbG9hZFNjYW5u
ZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9IG1ha2VVbmlxdWU8SFRN
TFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgp
LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPmFw
cGVuZFRvRW5kKG1faW5wdXQuY3VycmVudCgpKTsKICAgICAgICAgfQogICAgICAgICBtX3ByZWxv
YWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkpOwpAQCAtMzc0LDcgKzM3
NCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoU2VnbWVudGVkU3RyaW5nJiYg
c291cmNlKQogICAgICAgICAvLyBDaGVjayB0aGUgZG9jdW1lbnQud3JpdGUoKSBvdXRwdXQgd2l0
aCBhIHNlcGFyYXRlIHByZWxvYWQgc2Nhbm5lciBhcwogICAgICAgICAvLyB0aGUgbWFpbiBzY2Fu
bmVyIGNhbid0IGRlYWwgd2l0aCBpbnNlcnRpb25zLgogICAgICAgICBpZiAoIW1faW5zZXJ0aW9u
UHJlbG9hZFNjYW5uZXIpCi0gICAgICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQo
KS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAg
bV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IG1ha2VVbmlxdWU8SFRNTFByZWxvYWRTY2FubmVy
PihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQo
c291cmNlKTsKICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lci0+c2NhbigqbV9wcmVs
b2FkZXIsICpkb2N1bWVudCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCmluZGV4IDMwYzViNDZkZjEwM2RiZGY2ZjRiN2NlNDA5
Y2MzYWExNmM1NDYwMTIuLjZlZjE3MTJiOWQ2M2I3MWFjYjdjMTY5ZjYyYjQ5YzgyZjMxMDU4MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3Bw
CkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBIVE1MRWxlbWVudFN0YWNrOjppbnNlcnRBYm92ZShS
ZWY8SFRNTFN0YWNrSXRlbT4mJiBpdGVtLCBFbGVtZW50UmVjb3JkJiByZWMKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgICsrbV9zdGFja0RlcHRoOwotICAgICAgICByZWNvcmRBYm92
ZS0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSks
IHJlY29yZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSk7CisgICAgICAgIHJlY29yZEFib3ZlLT5zZXRO
ZXh0KG1ha2VVbmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgcmVjb3JkQWJvdmUt
PnJlbGVhc2VOZXh0KCkpKTsKICAgICAgICAgcmVjb3JkQWJvdmUtPm5leHQoKS0+ZWxlbWVudCgp
LmJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MzMs
NyArNTMzLDcgQEAgdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwdXNoQ29tbW9uKFJlZjxIVE1MU3Rh
Y2tJdGVtPiYmIGl0ZW0pCiAgICAgQVNTRVJUKG1fcm9vdE5vZGUpOwogCiAgICAgKyttX3N0YWNr
RGVwdGg7Ci0gICAgbV90b3AgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1v
dmUoaXRlbSksIFdURk1vdmUobV90b3ApKTsKKyAgICBtX3RvcCA9IG1ha2VVbmlxdWU8RWxlbWVu
dFJlY29yZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShtX3RvcCkpOwogfQogCiB2b2lkIEhUTUxF
bGVtZW50U3RhY2s6OnBvcENvbW1vbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCA1M2ExNzJkMzNhZmNkYThmZjg4ZDM0NGQ5
YzBlZjA5MDNjZGVjYzkyLi4zM2Q3YjNiYjA4YjY1MmQwY2Q2OWJjZWRmMWY4NjA2MzFhZmFhMTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5l
ci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBUb2tlblByZWxvYWRTY2FubmVyOjpTdGFy
dFRhZ1NjYW5uZXIgewogICAgICAgICBpZiAoIUxpbmtMb2FkZXI6OmlzU3VwcG9ydGVkVHlwZSh0
eXBlLnZhbHVlKCksIG1fdHlwZUF0dHJpYnV0ZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgICAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1
ZXN0Pihpbml0aWF0b3JGb3IobV90YWdJZCksIG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJM
LCB0eXBlLnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1dGUsIG1fbW9kdWxlU2NyaXB0LCBtX3JlZmVy
cmVyUG9saWN5KTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxQcmVsb2FkUmVx
dWVzdD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVS
TCwgdHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0cmlidXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZl
cnJlclBvbGljeSk7CiAgICAgICAgIHJlcXVlc3QtPnNldENyb3NzT3JpZ2luTW9kZShtX2Nyb3Nz
T3JpZ2luTW9kZSk7CiAgICAgICAgIHJlcXVlc3QtPnNldE5vbmNlKG1fbm9uY2VBdHRyaWJ1dGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmluZGV4IGY3MWIyMWQyNzg5
NWU1NzhhYjQ3ZjVjZjU0MDI1ODNlMzYxMjFkMDIuLjNmNzQ2ZGM2ZDY2N2M0MzcxMWI2OGQwOWI0
MjAyZDIzZmYwYzA4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCkBA
IC0yMDksNyArMjA5LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUoKQog
ewogICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CiAgICAgbV90eXBlID0gRE9D
VFlQRTsKLSAgICBtX2RvY3R5cGVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N0eXBlRGF0YT4o
KTsKKyAgICBtX2RvY3R5cGVEYXRhID0gbWFrZVVuaXF1ZTxEb2N0eXBlRGF0YT4oKTsKIH0KIAog
aW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUoVUNoYXIgY2hhcmFjdGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBhYzZlNzk0NDMwMDcw
MzY0MjFlYjE2ZGY4M2E5MGQzZDI3NzJmODU2Li4wNjFkOTU2N2I3ODRkOWIwYmFjZjNmNmRiOWNk
ZTVhODA2YjAxYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNw
cApAQCAtMzc2LDcgKzM3Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxYU1NJbmZvPiBYU1NBdWRpdG9y
OjpmaWx0ZXJUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UgPSBtX3hzc1Byb3Rl
Y3Rpb24gPT0gWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uOjpCbG9ja0VuYWJsZWQ7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8WFNTSW5mbz4obV9kb2N1bWVudFVSTCwgZGlkQmxvY2tFbnRp
cmVQYWdlLCBtX2RpZFNlbmRWYWxpZFhTU1Byb3RlY3Rpb25IZWFkZXIpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFhTU0luZm8+KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSwgbV9k
aWRTZW5kVmFsaWRYU1NQcm90ZWN0aW9uSGVhZGVyKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9yOjpm
aWx0ZXJTdGFydFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTcx
Miw3ICs3MTIsNyBAQCBTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+KiBYU1NBdWRpdG9yOjpkZWNv
ZGVkSFRUUEJvZHlTdWZmaXhUcmVlKCkKICAgICBjb25zdCB1bnNpZ25lZCBzdWZmaXhUcmVlRGVw
dGggPSA1OwogCiAgICAgaWYgKCFtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUgJiYgbV9kZWNv
ZGVkSFRUUEJvZHkubGVuZ3RoKCkgPj0gbWluaW11bUxlbmd0aEZvclN1ZmZpeFRyZWUpCi0gICAg
ICAgIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VmZml4
VHJlZTxBU0NJSUNvZGVib29rPj4obV9kZWNvZGVkSFRUUEJvZHksIHN1ZmZpeFRyZWVEZXB0aCk7
CisgICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSA9IG1ha2VVbmlxdWU8U3VmZml4
VHJlZTxBU0NJSUNvZGVib29rPj4obV9kZWNvZGVkSFRUUEJvZHksIHN1ZmZpeFRyZWVEZXB0aCk7
CiAgICAgcmV0dXJuIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZS5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAKaW5kZXggM2E2MzdkYWVmMDEyNGUyZTRlZDMzNmI2NjM3NTJkMDAyMmI1YmUwMS4u
ZDU2NmJjYzc5NGFhNzI0YWJlNjBhMDgwYTNmMmNmOTUxZjQ1MzdjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
CkBAIC0xNzQsNyArMTc0LDcgQEAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiBUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlbmRlcmVyKCkgY29uc3QKIE9wdGlvbmFsPEVsZW1lbnRT
dHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKQogewog
ICAgIGF1dG8gc3R5bGUgPSBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnNo
YWRvd0hvc3QoKSkuY3JlYXRlSW5uZXJUZXh0U3R5bGUoKnNoYWRvd0hvc3RTdHlsZSk7Ci0gICAg
cmV0dXJuIEVsZW1lbnRTdHlsZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3Zl
KHN0eWxlKSkpOworICAgIHJldHVybiBFbGVtZW50U3R5bGUobWFrZVVuaXF1ZTxSZW5kZXJTdHls
ZT4oV1RGTW92ZShzdHlsZSkpKTsKIH0KIAogLy8gTUFSSzogVGV4dENvbnRyb2xQbGFjZWhvbGRl
ckVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVy
aWNUZXh0VHJhY2suY3BwCmluZGV4IGU0MDIwMGE5YTdhMjI1ZGRmZDg3NDRkOGM5M2JkZTY5MDk2
NDcwMDkuLjQ5MzRkNzI5YzE5OGQwODA1OWFjOGM5ZjBiMTc0YTk1ZTc2ZjcyZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNw
cApAQCAtMTc0LDcgKzE3NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluYmFuZEdlbmVyaWNUZXh0
VHJhY2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmIGN1ZSkKIFdlYlZUVFBhcnNlciYgSW5iYW5k
R2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKCkKIHsKICAgICBpZiAoIW1fd2ViVlRUUGFyc2VyKQot
ICAgICAgICBtX3dlYlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihz
dGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKKyAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNl
cj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICptX3dlYlZUVFBhcnNlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCmluZGV4
IDg1NWJiMjM5MjdlYjEwYTM1YTU5ZDEyYmUwZDIzNWE3M2NhYmMxMGUuLjEwZmFhMTJmOTBiNDYw
YjUwNTZmMjU2N2NjMmQ5ODEyN2Q4ZmFhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgSW5i
YW5kV2ViVlRUVGV4dFRyYWNrOjp+SW5iYW5kV2ViVlRUVGV4dFRyYWNrKCkgPSBkZWZhdWx0Owog
V2ViVlRUUGFyc2VyJiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlcigpCiB7CiAgICAgaWYg
KCFtX3dlYlZUVFBhcnNlcikKLSAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyks
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fd2ViVlRUUGFyc2VyID0gbWFr
ZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRo
aXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiAqbV93ZWJWVFRQYXJz
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVU
ZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5jcHAKaW5kZXggOGYyOWM3ZjE2NzlhMGZhMjkxOGRlY2ZhNTEzZTJkODAyNzFhMzVlMi4uN2Ex
ZTFiYzQ2OTFiMjExNjg4YzNjZjVkYTYxOWFjNjFkYmQ2ZmUwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTg0LDcgKzg0LDcgQEAg
dm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQoKQogICAgIC8vIDQuIERvd25s
b2FkOiBJZiBVUkwgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcsIHBlcmZvcm0gYSBwb3RlbnRpYWxs
eSBDT1JTLWVuYWJsZWQgZmV0Y2ggb2YgVVJMLCB3aXRoIHRoZQogICAgIC8vIG1vZGUgYmVpbmcg
dGhlIHN0YXRlIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgY3Jvc3NvcmlnaW4gY29udGVudCBhdHRy
aWJ1dGUsIHRoZSBvcmlnaW4gYmVpbmcgdGhlCiAgICAgLy8gb3JpZ2luIG9mIHRoZSBtZWRpYSBl
bGVtZW50J3MgRG9jdW1lbnQsIGFuZCB0aGUgZGVmYXVsdCBvcmlnaW4gYmVoYXZpb3VyIHNldCB0
byBmYWlsLgotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0VHJhY2tMb2FkZXI+
KHN0YXRpY19jYXN0PFRleHRUcmFja0xvYWRlckNsaWVudCY+KCp0aGlzKSwgc3RhdGljX2Nhc3Q8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KCZtX3RyYWNrRWxlbWVudC0+ZG9jdW1lbnQoKSkpOwor
ICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxUZXh0VHJhY2tMb2FkZXI+KHN0YXRpY19jYXN0PFRl
eHRUcmFja0xvYWRlckNsaWVudCY+KCp0aGlzKSwgc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCo+KCZtX3RyYWNrRWxlbWVudC0+ZG9jdW1lbnQoKSkpOwogICAgIGlmICghbV9sb2Fk
ZXItPmxvYWQobV91cmwsICptX3RyYWNrRWxlbWVudCkpCiAgICAgICAgIG1fdHJhY2tFbGVtZW50
LT5kaWRDb21wbGV0ZUxvYWQoSFRNTFRyYWNrRWxlbWVudDo6RmFpbHVyZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmluZGV4IDAzMTA4
MGUxYWI2NmQzMmNjOWMwNzE3OGYwMmY5MzUyM2JjNzA2YjAuLjkwMjliOTJkOGI4M2YyZDdiZWQ2
ZDhlNTQ1NzZjMGExNjhjYTUyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9D
b21tYW5kTGluZUFQSUhvc3QuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlZjxDb21tYW5kTGluZUFQ
SUhvc3Q+IENvbW1hbmRMaW5lQVBJSG9zdDo6Y3JlYXRlKCkKIH0KIAogQ29tbWFuZExpbmVBUElI
b3N0OjpDb21tYW5kTGluZUFQSUhvc3QoKQotICAgIDogbV9pbnNwZWN0ZWRPYmplY3Qoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKSkKKyAgICA6IG1faW5zcGVjdGVkT2JqZWN0
KG1ha2VVbmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCkpCiB7CiB9CiAKQEAgLTE5Niw3ICsxOTYs
NyBAQCBKU1ZhbHVlIENvbW1hbmRMaW5lQVBJSG9zdDo6d3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogdm9pZCBDb21tYW5kTGluZUFQSUhvc3Q6OmNs
ZWFyQWxsV3JhcHBlcnMoKQogewogICAgIG1fd3JhcHBlcnMuY2xlYXJBbGxXcmFwcGVycygpOwot
ICAgIG1faW5zcGVjdGVkT2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU9iamVj
dD4oKTsKKyAgICBtX2luc3BlY3RlZE9iamVjdCA9IG1ha2VVbmlxdWU8SW5zcGVjdGFibGVPYmpl
Y3Q+KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTUVkaXRvci5jcHAKaW5kZXggNmMzMWU0OThlNDM0ZDMwMGIwZjFjNmVhYjg0MzQ2Nzc2Y2Yw
YTJmYy4uODM4OTA4ZGM5MzZlZmE2YmEyNmM3OTE2NzE0NGRiN2RlOWUyYWUyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgY2xhc3MgRE9N
RWRpdG9yOjpJbnNlcnRCZWZvcmVBY3Rpb24gZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9y
eTo6QWN0aW9uIHsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwZXJmb3JtKCkgZmluYWwKICAgICB7
CiAgICAgICAgIGlmIChtX25vZGUtPnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgbV9yZW1v
dmVDaGlsZEFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KCptX25v
ZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlKTsKKyAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rp
b24gPSBtYWtlVW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2RlLT5wYXJlbnROb2RlKCks
IG1fbm9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVtb3ZlQ2hpbGRBY3Rpb24t
PnBlcmZvcm0oKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CkBAIC0zODUsMjcg
KzM4NSwyNyBAQCBET01FZGl0b3I6On5ET01FZGl0b3IoKSA9IGRlZmF1bHQ7CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5zZXJ0QmVmb3JlKE5vZGUmIHBhcmVudE5vZGUsIFJlZjxO
b2RlPiYmIG5vZGUsIE5vZGUqIGFuY2hvck5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5w
ZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8SW5zZXJ0QmVmb3JlQWN0aW9uPihwYXJlbnROb2RlLCBX
VEZNb3ZlKG5vZGUpLCBhbmNob3JOb2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3Jt
KG1ha2VVbmlxdWU8SW5zZXJ0QmVmb3JlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5vZGUp
LCBhbmNob3JOb2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVtb3Zl
Q2hpbGQoTm9kZSYgcGFyZW50Tm9kZSwgTm9kZSYgbm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0
b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9k
ZSwgbm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlbW92
ZUNoaWxkQWN0aW9uPihwYXJlbnROb2RlLCBub2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IERPTUVkaXRvcjo6c2V0QXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZv
cm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUsIHZh
bHVlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0QXR0cmli
dXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBET01FZGl0b3I6OnJlbW92ZUF0dHJpYnV0ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJp
bmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3ZlQXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lKSk7CisgICAgcmV0dXJuIG1f
aGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVtb3ZlQXR0cmlidXRlQWN0aW9uPihlbGVtZW50
LCBuYW1lKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1M
KE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSomIG5ld05vZGUpCiB7Ci0gICAg
YXV0byBhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNldE91dGVySFRNTEFjdGlvbj4obm9kZSwg
aHRtbCk7CisgICAgYXV0byBhY3Rpb24gPSBtYWtlVW5pcXVlPFNldE91dGVySFRNTEFjdGlvbj4o
bm9kZSwgaHRtbCk7CiAgICAgYXV0byYgcmF3QWN0aW9uID0gKmFjdGlvbjsKICAgICBhdXRvIHJl
c3VsdCA9IG1faGlzdG9yeS5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgaWYgKCFyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC00MTUsMjIgKzQxNSwyMiBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWws
IE5vZGUqJgogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRN
TChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHdoZXJlLCBjb25zdCBTdHJpbmcmIGh0
bWwpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8SW5z
ZXJ0QWRqYWNlbnRIVE1MQWN0aW9uPihlbGVtZW50LCB3aGVyZSwgaHRtbCkpOworICAgIHJldHVy
biBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlvbj4o
ZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9y
OjpyZXBsYWNlV2hvbGVUZXh0KFRleHQmIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7
Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZVdo
b2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBl
cmZvcm0obWFrZVVuaXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlcGxhY2VDaGlsZChOb2RlJiBw
YXJlbnROb2RlLCBSZWY8Tm9kZT4mJiBuZXdOb2RlLCBOb2RlJiBvbGROb2RlKQogewotICAgIHJl
dHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VDaGlsZE5vZGVB
Y3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobmV3Tm9kZSksIG9sZE5vZGUpKTsKKyAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0aW9uPihw
YXJlbnROb2RlLCBXVEZNb3ZlKG5ld05vZGUpLCBvbGROb2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IERPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8
U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSkpOworICAgIHJldHVybiBtX2hpc3Rvcnku
cGVyZm9ybShtYWtlVW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwgdmFsdWUpKTsKIH0K
IAogc3RhdGljIGJvb2wgcG9wdWxhdGVFcnJvclN0cmluZyhFeGNlcHRpb25Pcjx2b2lkPiYmIHJl
c3VsdCwgRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCAyMGRhMzQzMGMxNWM4NTUxNDg1YzU3MzhjNTQ3
ZmEwYzM0MzFhMWJhLi4yZTlkNzU1NjU1YzgzZWY4ODE1OTZhYWQyMGM5NmUxMGU2ODgyNmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtNDAy
LDcgKzQwMiw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZ1RvU0hBMShTSEExJiBzaGExLCBjb25z
dCBTdHJpbmcmIHN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRyPERPTVBhdGNoU3VwcG9ydDo6RGln
ZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChOb2RlJiBub2RlLCBVbnVzZWROb2Rl
c01hcCogdW51c2VkTm9kZXNNYXApCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPERpZ2VzdD4oKTsKKyAgICBhdXRvIGRpZ2VzdCA9IG1ha2VVbmlxdWU8RGlnZXN0PigpOwog
ICAgIGRpZ2VzdC0+bm9kZSA9ICZub2RlOwogICAgIFNIQTEgc2hhMTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDUyMDM3MDZi
NTNiMzJiMGJhNGYwZWQ0ZDRiYTQwMGI2Yzc5YjVlMTUuLjYzZmYzYWI2MjNhNDQ2Y2Q2MjBlZTQ3
ZTM5MjA1NWNlYTUxYTg3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBh
Z2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDogbV9pbnN0
cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykpCi0gICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2Ny
aXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAg
ICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1f
ZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5k
RGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29w
eVJlZigpKSkKLSAgICAsIG1fb3ZlcmxheShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck92ZXJs
YXk+KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCisgICAgLCBtX292ZXJsYXkobWFrZVVuaXF1ZTxJ
bnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQogICAgICwgbV9leGVjdXRp
b25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2
ZXIocGFnZSkKICAgICAsIG1fcGFnZShwYWdlKQpAQCAtMTA2LDcgKzEwNiw3IEBAIEluc3BlY3Rv
ckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xp
ZW50KiBpbnNwZWN0b3JDCiAKICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4
dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25z
b2xlQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlx
dWU8UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9CkBAIC0xNTMsMzcgKzE1MywzNyBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogICAgIGVuc3Vy
ZUluc3BlY3RvckFnZW50KCk7CiAgICAgZW5zdXJlUGFnZUFnZW50KCk7CiAKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7CiAKLSAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VEZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0g
bWFrZVVuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIGF1dG8gZGVi
dWdnZXJBZ2VudFB0ciA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdlQ29u
dGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNTU0FnZW50
PihwYWdlQ29udGV4dCkpOwogICAgIGVuc3VyZURPTUFnZW50KCk7Ci0gICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRl
eHQsIGRlYnVnZ2VyQWdlbnRQdHIpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+
KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yV29ya2VyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PihwYWdlQ29udGV4dCkpOwot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIGRlYnVnZ2VyQWdlbnRQdHIpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1h
a2VVbmlxdWU8SW5zcGVjdG9yV29ya2VyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PihwYWdlQ29udGV4
dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ+KHBhZ2VDb250ZXh0KSk7CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0gICAgbV9h
Z2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+KHBh
Z2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYKIAotICAgIGF1dG8gc2NyaXB0UHJv
ZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJB
Z2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpOwogICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChz
Y3JpcHRQcm9maWxlckFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZShzY3JpcHRQcm9maWxlckFnZW50UHRyKSk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0Up
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1BVUHJvZmls
ZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rvck1lbW9yeUFnZW50Pihw
YWdlQ29udGV4dCkpOwogI2VuZGlmCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8UGFnZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDYW52YXNBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1l
bGluZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VV
bmlxdWU8UGFnZUF1ZGl0QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5k
KG1ha2VVbmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRl
eHQpKTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpCiAgICAgICAgIGNvbW1hbmRMaW5lQVBJ
SG9zdC0+aW5pdChtX2luc3RydW1lbnRpbmdBZ2VudHMuY29weVJlZigpKTsKQEAgLTQyMSw3ICs0
MjEsNyBAQCBJbnNwZWN0b3JBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlSW5zcGVj
dG9yQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkgewogICAgICAgICBhdXRv
IHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGluc3BlY3Rv
ckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4ocGFnZUNvbnRleHQpOwor
ICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JBZ2VudD4o
cGFnZUNvbnRleHQpOwogICAgICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQu
Z2V0KCk7CiAgICAgICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQWdlbnQo
bV9pbnNwZWN0b3JBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3Bl
Y3RvckFnZW50KSk7CkBAIC00MzMsNyArNDMzLDcgQEAgSW5zcGVjdG9yRE9NQWdlbnQmIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuc3VyZURPTUFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVjdG9y
RE9NQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQo
KTsKLSAgICAgICAgYXV0byBkb21BZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9N
QWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXkuZ2V0KCkpOworICAgICAgICBhdXRvIGRvbUFn
ZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIG1fb3Zlcmxh
eS5nZXQoKSk7CiAgICAgICAgIG1faW5zcGVjdG9yRE9NQWdlbnQgPSBkb21BZ2VudC5nZXQoKTsK
ICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZG9tQWdlbnQpKTsKICAgICB9CkBAIC00
NDQsNyArNDQ0LDcgQEAgSW5zcGVjdG9yUGFnZUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjpl
bnN1cmVQYWdlQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlQWdlbnQpIHsKICAg
ICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0
byBwYWdlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclBhZ2VBZ2VudD4ocGFnZUNv
bnRleHQsIG1faW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOworICAgICAgICBhdXRv
IHBhZ2VBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwg
bV9pbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAgICAgIG1faW5zcGVjdG9y
UGFnZUFnZW50ID0gcGFnZUFnZW50LmdldCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RG
TW92ZShwYWdlQWdlbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCAyOGVlNzI3YTM2ZDY2
Y2UyMTA5Njk3ODMxYWUwYThhYWM0MjM4NTc1Li42YzFiNTFhZGVlOWEzODQyNjMzMzhmNDVkODg4
NGE2ZDljMzdlYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgU2V0dGluZ3MgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFNldHRpbmdzKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0
dWFsIH5TZXR0aW5ncygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JIaXN0b3J5LmNwcAppbmRleCAwMGQ1ZjE4NTJjZWJhMjcwYzNhZjgxYzEzMjA5MDA1
ZGE3YjExOGE4Li5jODEwM2RkN2RiYjgzMjBlYWIyZTZhZDVlMzJjMmQ1MmQ3MmIwNjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oc3Rk
Ojp1bmlxdWVfcHRyPEFjdGlvbj4gYWN0aW9uKQogCiB2b2lkIEluc3BlY3Rvckhpc3Rvcnk6Om1h
cmtVbmRvYWJsZVN0YXRlKCkKIHsKLSAgICBwZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8VW5kb2Fi
bGVTdGF0ZU1hcms+KCkpOworICAgIHBlcmZvcm0obWFrZVVuaXF1ZTxVbmRvYWJsZVN0YXRlTWFy
az4oKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rvckhpc3Rvcnk6OnVuZG8oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmlu
ZGV4IDE0OTVmMzllMmE0NWUzYzcyYTk2MTRhZmY1NzllNjRkZGY1NWMwYjUuLmRiZTU1NTNmMDEy
MTczNGE5NjU5MTM4NDZhYWQ0NmJmMjc3OTczZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IFBhcnNlZFN0eWxlU2hlZXQ6OnNldFNvdXJjZURhdGEoc3RkOjp1bmlxdWVfcHRyPFJ1bGVTb3Vy
Y2VEYXRhTGlzdD4gc291cmNlRAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zb3Vy
Y2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CisgICAgbV9z
b3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAKICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiB0byByZXRhaW4gdGhlIG9yaWdpbmFs
IGZsYXQgc291cmNlRGF0YSBzdHJ1Y3R1cmUKICAgICAvLyBjb250YWluaW5nIG9ubHkgc3R5bGUg
cnVsZXMsIGV2ZW4gdGhvdWdoIENTU1BhcnNlciBub3cgcHJvdmlkZXMgdGhlIGZ1bGwgcnVsZSBz
b3VyY2UgZGF0YSB0cmVlLgpAQCAtMTMyMCw3ICsxMzIwLDcgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
YXV0byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKLSAgICBh
dXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0
YUxpc3Q+KCk7CisgICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9IG1ha2VVbmlxdWU8UnVs
ZVNvdXJjZURhdGFMaXN0PigpOwogICAgIAogICAgIENTU1BhcnNlckNvbnRleHQgY29udGV4dChw
YXJzZXJDb250ZXh0Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgp
KSk7CiAgICAgU3R5bGVTaGVldEhhbmRsZXIgaGFuZGxlcihtX3BhcnNlZFN0eWxlU2hlZXQtPnRl
eHQoKSwgbV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpLCBydWxlU291cmNlRGF0YVJl
c3VsdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAppbmRleCBkM2I3NTlmMjljY2YxYWUxODAyODBkNWUxNzM2NzBkMjljNGY4
Y2MxLi5mZDdjYWQzMDc2N2U3NzViMTY3NWVjNDU0ZWY3YTA4YmIwMzZkNThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEz
Niw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZwogewogICAgIGVuc3VyZU5vRGF0
YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0byByZXNvdXJjZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAgYXV0
byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2Fk
ZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5cGUpOwogICAgIG1fcmVxdWVzdElk
VG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RGTW92ZShyZXNvdXJjZURhdGEpKTsK
IH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJj
ZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZwogewogICAgIGVu
c3VyZU5vRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0byByZXNvdXJjZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7
CisgICAgYXV0byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVz
dElkLCBsb2FkZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRDYWNoZWRSZXNvdXJjZSgmY2Fj
aGVkUmVzb3VyY2UpOwogICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVl
c3RJZCwgV1RGTW92ZShyZXNvdXJjZURhdGEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA0MzUxZTg3
MmE5ZTVhMzY0NzI5ZjViNGZiMjYyMTZjNzMzMDJjOGRkLi4zNjRhZWE3ZDRiNWQ5MTE3OTMyNzVk
NjQ2ZjI5NWU2N2JmMGVlZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3Bl
KQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0
ZSgqdGhpcykpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVl
PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6
Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0
ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQog
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJv
bnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3
YXRjaDo6Y3JlYXRlKCkpCkBAIC02OSw3ICs2OSw3IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
CiAKICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENvbnRleHQoKTsKIAotICAg
IGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+
KHdvcmtlckNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxXb3Jr
ZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMu
YXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9p
ZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fZXhl
Y3V0aW9uU3RvcHdhdGNoLT5yZXNldCgpOwogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFy
dCgpOwogCi0gICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2Vy
VG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2Zvcndh
cmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1f
d29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVu
ZCgqbV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKSk7CiB9CkBAIC0xNjQsMTggKzE2NCwxOCBAQCB2b2lkIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogCiAgICAgYXV0byB3b3JrZXJDb250ZXh0
ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPihtX3dvcmtlckdsb2JhbFNjb3BlKSkgewotICAgICAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsK
LSAgICAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmV0d29ya0Fn
ZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgICAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKICAg
ICB9CiAjZW5kaWYKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdlYkhl
YXBBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJBdWRpdEFnZW50Pih3b3JrZXJDb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJD
b250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyRGVidWdnZXJB
Z2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdv
cmtlckF1ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5k
TGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0
KCkpCiAgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+aW5pdChtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBh
OGQzYzg5OWMzMjgwYTI4ZTY3MzJjZjg4YWI4NGQwMDBkNDVlZDJkLi5mZGYwNDRjNTc5YjM2OGMz
MjA1MWI2NWRjNDQwZTM4N2Y2MDE4ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
IkFwcGxpY2F0aW9uQ2FjaGUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29u
dGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29u
dGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggY2Y5
NGNhODA5NmZmNTcxZDc0ZDc3M2IxZjAwMjc1MDU0YzBjZTFmOS4uMTE2MjRlMjQwOTQ2NGZjMWUx
ZTY1YTY5OThkYmQxYjA2ODJmMGIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNQVVBy
b2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ1BVUHJvZmlsZXIiX3MsIGNvbnRl
eHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNQVVBy
b2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpDUFVQcm9maWxlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCmluZGV4IDRiNjk5NDVlYzcwNjdmOTY0M2U0ODA3MzAzNDg0MjY4NmQ2MTlmYjguLjQ0ZTlj
NWFiZWI0Yzk2NmFiYWVhOTQ0YTQwZDVlMDNkNDcyZDExZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0yOTcs
NyArMjk3LDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1
bGUoQ1NTUnVsZSYgcnVsZSkKIAogSW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50
KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ1NT
Il9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1
ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDU1NCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ewogfQpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxl
U2hlZXRUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCkt
PnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVj
dG9yU3R5bGVTaGVldCwgdGV4dCkpOworICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdlbnQtPmhpc3Rv
cnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0
b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhyZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKIH0KQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYmplYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZXJmb3Jt
UmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNl
dFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkp
OworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0o
bWFrZVVuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBv
dW5kSWQsIHRleHQpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBl
cmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjcw
LDcgKzY3MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJm
b3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHls
ZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9
IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRSdWxlU2VsZWN0b3JB
Y3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7CiAgICAg
aWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcg
PSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBzdHlsZVNoZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhY3Rp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQs
IHNlbGVjdG9yKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VVbmlxdWU8QWRkUnVsZUFjdGlvbj4o
aW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOwogICAgIGF1dG8mIHJhd0FjdGlvbiA9ICph
Y3Rpb247CiAgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVy
Zm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDliZTA2MTE5ZmIzMjE5NzAwNzI5NzIyZDgzNmE4
MTZiMjVmMWMwMTUuLjBlNTBjNzViYTQ4NzUxNTU2ZTQxMmRjYjk3YWQxOTY2OTY1YTk5OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChQYWdlQWdl
bnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDYW52YXMiX3Ms
IGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDYW52
YXNGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNhbnZhc0JhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1faW5zcGVj
dGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmIGNhbnZhc1JlbmQKICAgICBpZiAoIWluc3BlY3RvckNhbnZhcy0+Y3VycmVudEZyYW1l
SGFzRGF0YSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
aW5zcGVjdG9yQ2FudmFzLT5jb250ZXh0KCkuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkgewogICAgICAgICAgICAgYXV0byYgcXVldWUgPSBNaWNyb3Rhc2tRdWV1ZTo6bWFp
blRocmVhZFF1ZXVlKCk7Ci0gICAgICAgICAgICBxdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUsICpzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0gaW5zcGVjdG9yQ2FudmFzLmNvcHlS
ZWYoKV0geworICAgICAgICAgICAgcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2Fs
bGJhY2tNaWNyb3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgWyYsIHByb3Rl
Y3RlZEluc3BlY3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCldIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IHByb3RlY3RlZEluc3BlY3RvckNh
bnZhcy0+Y2FudmFzRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXNF
bGVtZW50LT5pc0Rlc2NlbmRhbnRPZihjYW52YXNFbGVtZW50LT5kb2N1bWVudCgpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNmMxOTZlMGNjNjgyYjQ0
MjU2YzdkZGFhZTA5MGFhMGFhZDU1MzE3ZC4uZjBhMjhjMTMzMWM1YmIzMDg4ZDUzZTcyNDNkYmFm
NGVlYjYzZTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBTdHJpbmcgSW5zcGVj
dG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogSW5zcGVj
dG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQs
IEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRP
TSJfcywgY29udGV4dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQpAQCAt
MzAxLDggKzMwMSw4IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQog
CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQog
ewotICAgIG1faGlzdG9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsK
LSAgICBtX2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPigqbV9oaXN0b3J5
KTsKKyAgICBtX2hpc3RvcnkgPSBtYWtlVW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CisgICAg
bV9kb21FZGl0b3IgPSBtYWtlVW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7CiAKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NQWdlbnQodGhpcyk7CiAgICAgbV9k
b2N1bWVudCA9IG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwpAQCAtNjUz
LDcgKzY1Myw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVu
ZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICBOb2RlKiBwYXJlbnQgPSBpbm5lclBhcmVudE5v
ZGUobm9kZSk7CiAgICAgICAgIGlmICghcGFyZW50KSB7CiAgICAgICAgICAgICAvLyBOb2RlIGJl
aW5nIHB1c2hlZCBpcyBkZXRhY2hlZCAtPiBwdXNoIHN1YnRyZWUgcm9vdC4KLSAgICAgICAgICAg
IGF1dG8gbmV3TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKKyAgICAgICAg
ICAgIGF1dG8gbmV3TWFwID0gbWFrZVVuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKICAgICAgICAgICAg
IGRhbmdsaW5nTWFwID0gbmV3TWFwLmdldCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05vZGVU
b0lkTWFwcy5hcHBlbmQobmV3TWFwLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBhdXRvIGNoaWxk
cmVuID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVh
dGUoKTsKQEAgLTExNzcsNyArMTE3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25m
aWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0g
c3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgYXV0byBoaWdobGlnaHRD
b25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICBib29sIHNob3dJbmZv
ID0gZmFsc2U7IC8vIERlZmF1bHQ6IGZhbHNlIChkbyBub3Qgc2hvdyBhIHRvb2x0aXApLgogICAg
IGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbigic2hvd0luZm8iLCBzaG93SW5m
byk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHNob3dJbmZvOwpAQCAtMTE5Niwx
MyArMTE5NiwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJs
ZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYQogCiB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9i
amVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0g
ICAgYXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgYXV0byBxdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+
KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgaW5uZXJIaWdobGlnaHRRdWFk
KFdURk1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYgcXVhZEFycmF5LCBjb25zdCBKU09OOjpP
YmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9v
bCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlx
dWU8RmxvYXRRdWFkPigpOworICAgIGF1dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigp
OwogICAgIGlmICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVhZC5nZXQoKSkpIHsKICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBRdWFkIGZvcm1hdCJfczsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVh
ZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OkFycmEKIAogdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1
YWQ+IHF1YWQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCog
b3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0
byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsK
KyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigp
OwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAg
IGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xv
cik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT51c2VQYWdlQ29vcmRpbmF0ZXMgPSB1c2VQYWdlQ29v
cmRpbmF0ZXMgPyAqdXNlUGFnZUNvb3JkaW5hdGVzIDogZmFsc2U7CkBAIC0xMzE2LDcgKzEzMTYs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
ZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0g
c3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgICAgIGF1dG8gaGlnaGxp
Z2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgICAgIGhpZ2hs
aWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlwcyBmb3Ig
ZnJhbWVzLgogICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNv
bG9yKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29s
b3Iob3V0bGluZUNvbG9yKTsKQEAgLTEzOTgsNyArMTM5OCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkKQogICAgIG1faW5zcGVjdGVkTm9kZSA9IG5vZGU7CiAKICAgICBpZiAoYXV0byYgY29tbWFu
ZExpbmVBUElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJj4obV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIpLmNvbW1hbmRMaW5lQVBJSG9zdCgpKQotICAgICAgICBjb21t
YW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RhYmxlTm9kZT4obm9kZSkpOworICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3Bl
Y3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOwogCiAgICAgbV9z
dXBwcmVzc0V2ZW50TGlzdGVuZXJDaGFuZ2VkRXZlbnQgPSBmYWxzZTsKIH0KQEAgLTIzMTQsNyAr
MjMxNCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIo
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrKQotICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKKyAgICAg
ICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IG1ha2VVbmlxdWU8UmV2YWxpZGF0ZVN0eWxl
QXR0cmlidXRlVGFzaz4odGhpcyk7CiAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzay0+c2No
ZWR1bGVGb3IoJmVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggZTk3
MWE5OWY3MDUyNGQ4MzE4MWFlNzE1ZDgyNjU4ODExZmUwODgwOC4uODFmMTRkYzE3YmZhMDQ3NDdl
M2QyM2U0NTNmNWU0YWY4ZDA5ZmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNTYs
NyArNTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET01TdG9yYWdlIl9zLCBjb250ZXh0KQot
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRP
TVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGIz
N2E1NjBjZTgwNzY4YzY2NDQwODUxNWZiMDU1MTI2MTY1YmVkODIuLjM1OGE4NTY1MTJlYTRkNzE5
NjMzMmEyMDY5OTBkZTMyNTAwNDEwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjE3LDcg
KzIxNyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkT3BlbkRhdGFiYXNlKERh
dGFiYXNlJiBkYXRhYmFzZSkKIAogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0
YWJhc2VBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIkRhdGFiYXNlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCBlMWUwODJlNDFhZDJkNTI0ZjU3
ZWYxMDY0MDI4ODc2MTE1NjgyNGI5Li5iNTk4MmNlZTM3ZTM3NDQ3MDUzOTQ2YmNmNGM0MzRiNDMx
ZWY5YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJMYXllclRyZWUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6
OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDI5Yzc2ZDBjN2ZlYTkyMmMy
YTNkOTk0MTRjOTg2ZWE4ZDI4ZDc3YjUuLjI4MzI5NTFmNTM4MDEyMWZhNDUyYmZhOGQ0NzBmNGQz
NWU3ODliMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlB
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KCJNZW1vcnkiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok1lbW9yeUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKaW5kZXggM2U0ZTk2ZWIyMzFhMDU0YjIxMjEyNDdiYzJjYjA5MTY1ZjAy
NjViMy4uNWQwODE2MzgwY2RjNjZjN2Q3OTYwYzEyZDM0OGEwZmJmM2Y3YjExOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgY2xhc3MgSW5zcGVjdG9yVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKIAog
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQoV2ViQWdlbnRDb250
ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJOZXR3b3JrIl9zLCBjb250
ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX3Jlc291cmNl
c0RhdGEoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKKyAgICAsIG1f
cmVzb3VyY2VzRGF0YShtYWtlVW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggMzI5ZTFiMGM1YWQ5MmZiNDUxZGYxNzY3MzNhZTJhZTM1OGZiNDkz
Ny4uYzY0MWE2YTA0ODQxOTMyNjhlMjllOTBmZjAxMjZhYjkxMWM5MzBkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtMzMzLDcgKzMzMyw3IEBAIERvY3VtZW50TG9hZGVyKiBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAKIEluc3BlY3Rv
clBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQs
IEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKCJQYWdlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlBh
Z2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDNhMzYxZTkxZTZmMmRl
YjAwNDJlMThhN2M2NGM3YjUxNmY5YjgwYzUuLjMwZDg2Yzc0NjNjNDdmNWIzYWQyYjM4Y2Y1ZGUy
NDlkNDRlYjlhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0
aWMgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKIAogSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUaW1lbGluZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3Bl
Y3RlZFBhZ2UpCiB7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgLy8g
RklYTUU6IEFic3RyYWN0IGF3YXkgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBvbmNlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3NDggaXMgZml4ZWQuCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6
OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lQmVnaW4pLCBbdGhpc10oKSB7
CisgICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4o
c3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3Jk
ZXJzOjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgewogICAgICAgICBpZiAoIW1fdHJh
Y2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkK
ICAgICAgICAgbV9ydW5Mb29wTmVzdGluZ0xldmVsKys7CiAgICAgfSk7CiAKLSAgICBtX2ZyYW1l
U3RvcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19j
YXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5z
cGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7CisgICAgbV9mcmFtZVN0b3BPYnNlcnZlciA9IG1h
a2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lRW5kKSwgW3RoaXNd
KCkgewogICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1
Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI4MCw3ICsy
ODAsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAgICAgICAgICAgICAgIGlmIChXZWJD
b25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25z
b2xlQWdlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVt
IHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgICAgICBT
dHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVkIFByb2ZpbGUgYWxyZWFk
eSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBhbHJlYWR5
IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
d2FybmluZykpOworICAgICAgICAgICAgICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fybmlu
ZykpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpz
dG9wRnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICBp
ZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMu
d2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0
aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0
aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9m
aWxlIFwiIiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICBjb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
Zywgd2FybmluZykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCA5MTYxZDg0M2Nk
MzhlNGQ5NjYxMjZhY2RkMzZlODNkZDE4ZjUxMDAyLi4xZTM5OGVkZDFhOWVhM2VmMjZiZTA5ZWMw
M2Q2YzZjMmNkMzk4ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9y
V29ya2VyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiV29ya2VyIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpXb3JrZXJCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9wYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCAyZWVkMWNl
NjBiMzAyMmFkOTgyNGZhNjI4YTM1ZGRjNTQ0NDk2MGQ5Li5jMjA5NGI5OTJkMzU0MTYwZjE3ZWUy
OGY2NDEwYTc5M2RjZGU5ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgV2ViQ29u
c29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkg
ewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIHJl
c291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIsIHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksICIgKCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCksICcpJyk7
Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxw
dHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFr
ZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5
cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiAgICAgfQogfQogCkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNp
Z25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBSZXNvCiAgICAgICAgIG1lc3NhZ2Uu
YXBwZW5kKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAgIH0KIAotICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVz
c2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAsIDAsIG51bGxwdHIsIHJlcXVl
c3RJZGVudGlmaWVyKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwoKSwg
MCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJI
ZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdl
bnQuY3BwCmluZGV4IGJiNWQxYmVjNmM2MzIyMzliZWU2NDYzNDM3YWVmZWQxMmJhNDcxZDUuLjA5
Y2I2ZjQ2NjZhYjRjOTFjYmVlMmQwZmNmZGQ0YmE2YTYxYTEzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKQEAgLTQxLDYgKzQxLDcg
QEAgc3RydWN0IEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSB7CiB9OwogCiBjbGFzcyBTZW5kR2FyYmFn
ZUNvbGxlY3Rpb25FdmVudHNUYXNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKFdlYkhlYXBBZ2VudCYp
OwogICAgIHZvaWQgYWRkR2FyYmFnZUNvbGxlY3Rpb24oR2FyYmFnZUNvbGxlY3Rpb25EYXRhJiYp
OwpAQCAtOTYsNyArOTcsNyBAQCB2b2lkIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s6
OnRpbWVyRmlyZWQoKQogV2ViSGVhcEFnZW50OjpXZWJIZWFwQWdlbnQoV2ViQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9ySGVhcEFnZW50KGNvbnRleHQpCiAgICAgLCBtX2lu
c3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQotICAgICwgbV9z
ZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U2VuZEdhcmJh
Z2VDb2xsZWN0aW9uRXZlbnRzVGFzaz4oKnRoaXMpKQorICAgICwgbV9zZW5kR2FyYmFnZUNvbGxl
Y3Rpb25FdmVudHNUYXNrKG1ha2VVbmlxdWU8U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFz
az4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNWVhZmI2YTMyODQ2ZTcw
MDE1M2FjODI2ODFiN2JlNTBkM2FmZTQ4Yy4uODk4NWJjOTQ1ZmU3NWUwZTg1MWEzNmRlMzU4NGFi
MDQ3MWMwZmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50
KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQo
Y29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpSdW50
aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zdHJ1bWVu
dGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2luc3BlY3Rl
ZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCBiMjBjYmJjOTUwNzAyODExYjY1ODlhYzFkZmJkNTczMzkxOTNkMzM3Li44MDgyZWUzMWVl
YzYwYTJmNjAzMjlkYmFiZDRkOTg0MmY2YTU1ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdn
ZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3Bv
aW50QWN0aW9uTG9nKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
LSAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSkp
KTsKKyAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSkpKTsK
IH0KIAogSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRpb25Db250
ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCBiZDlkNGNhZGVm
YjJmYWExZjJlMGIyNTc5NTVhZDUxMjRlMTc5NGVlLi4xZjNmYWJhMzEyNmYyZTliMzZiODRkMTNl
NzNiZjFmZGEzMTc1NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAgdm9pZCBMYXlvdXRTdGF0ZTo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRT
dWJ0cmVlKGNvbnN0IEJveCYgbGF5b3V0Um9vdCkKIERpc3BsYXk6OkJveCYgTGF5b3V0U3RhdGU6
OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuICptX2xheW91dFRvRGlzcGxheUJveC5lbnN1cmUoJmxheW91dEJveCwgWyZsYXlv
dXRCb3hdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6Qm94Pihs
YXlvdXRCb3guc3R5bGUoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXk6OkJv
eD4obGF5b3V0Qm94LnN0eWxlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAt
MTQwLDEzICsxNDAsMTMgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9y
bWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgICAgIC8v
IHNob3VsZCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGNvbnRlbnQgaW5zaWRlLgogICAgICAgICAg
ICAgLy8gPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQiPjwvZGl2PjxkaXYgc3R5bGU9Im92ZXJmbG93
OiBoaWRkZW4iPiA8LSBpcyBhIG5vbi1pbnRydXNpdmUgZmxvYXQsIGJlY2F1c2Ugb3ZlcmZsb3c6
IGhpZGRlbiB0cmlnZ2VycyBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LjwvZGl2PgogICAg
ICAgICAgICAgaWYgKGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZv
cm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9v
dCksICp0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3Qp
LCAqdGhpcyk7CiAKICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRpbmcgY29u
dGV4dCBpbmhlcml0cyB0aGUgZmxvYXRzIGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRl
eHQuCiAgICAgICAgICAgICAvLyBGaW5kIHRoZSBmb3JtYXR0aW5nIHN0YXRlIGluIHdoaWNoIHRo
aXMgZm9ybWF0dGluZyByb290IGxpdmVzLCBub3QgdGhlIG9uZSBpdCBjcmVhdGVzIGFuZCB1c2Ug
aXRzIGZsb2F0aW5nIHN0YXRlLgogICAgICAgICAgICAgYXV0byYgcGFyZW50Rm9ybWF0dGluZ1N0
YXRlID0gY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3Jt
YXR0aW5nUm9vdC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7IAogICAgICAgICAgICAgYXV0byYg
cGFyZW50RmxvYXRpbmdTdGF0ZSA9IHBhcmVudEZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRl
KCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5n
U3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50RmxvYXRpbmdTdGF0ZSwgKnRo
aXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNTQsNyArMTU0
LDcgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRl
Rm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRp
bmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwgWyZdIHsKIAogICAgICAgICAgICAgLy8g
QmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGlu
ZyBzdGF0ZS4KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRm9ybWF0
dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwg
KnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nU3Rh
dGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7
CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE2Miw3ICsxNjIsNyBA
QCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JG
b3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0
YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0gewogCiAgICAgICAgICAgICAvLyBUYWJs
ZSBmb3JtYXR0aW5nIGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0aW5nIHN0
YXRlIC1hbmQgaXQgc3RheXMgZW1wdHkuCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBm
b3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRh
YmxlRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRp
bmdSb290KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBA
IC0xNzQsMTggKzE3NCwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRleHQ+IExh
eW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCbwogICAgIEFTU0VSVChm
b3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAg
ICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSkgewogICAgICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2Fz
dDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRp
bmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4
dFJvb3QsIGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PElubGluZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGlubGluZUZv
cm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5l
c3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBBU1NFUlQoZm9y
bWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dE9ubHko
KSk7CiAgICAgICAgIGF1dG8mIGJsb2NrRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8QmxvY2tG
b3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZO
ZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgYmxv
Y2tGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRl
KTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzVGFi
bGVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGF1dG8mIHRhYmxlRm9ybWF0dGluZ1N0
YXRlID0gZG93bmNhc3Q8VGFibGVGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0
ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3Qs
IHRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKaW5kZXggN2FlM2I0MDlk
NzYxMTZmMmU5ZDEzY2MzMWViNmU1NjA2M2IxMDc2Zi4uNzk5MTYyNzU3NDAxODNmMzUzZjVhZmQ1
YjE1MjJlNTY1M2ZjODk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVJ1bi5oCkBAIC0zNiw3ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBEaXNwbGF5IHsKIAogc3RydWN0IFJ1biB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHN0cnVjdCBUZXh0Q29udGV4dCB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHRDb250ZXh0
KHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYTFjZDZkNmYxYjdlYjkwZmNjNzkwNWUzMWU5ZjA0ZmUz
YmY4MjYwYi4uNTA4ZDY2MTI5ZDE0ODdjNGU4NDQwOTM5M2RhMzM0MDkxOWVhN2Y4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50KCkgY29uc3QKICAg
ICAgICAgICAgIGlmICghdHJlYXRBc0lubGluZUNvbnRhaW5lcihsYXlvdXRCb3gpKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYW4g
aW5saW5lIGNvbnRhaW5lciAoZS5nLiA8c3Bhbj4pLgotICAgICAgICAgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gs
IElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0YXJ0KSk7CisgICAgICAgICAgICBmb3JtYXR0
aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwg
SW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyU3RhcnQpKTsKICAgICAgICAgICAgIGF1dG8mIGNv
bnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KTsKICAgICAgICAgICAgIGlm
ICghY29udGFpbmVyLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjkyLDE3ICsyOTIsMTcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29sbGVjdElubGluZUNvbnRlbnQoKSBjb25zdAogICAgICAgICAgICAgYXV0byYgbGF5b3V0
Qm94ID0gKmxheW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBlbmQgb2YgYW4gaW5saW5lIGNvbnRhaW5lciAoZS5nLiA8L3NwYW4+KS4KICAgICAgICAgICAg
IGlmICh0cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJveCkpCi0gICAgICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVt
PihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVuZCkpOworICAgICAgICAg
ICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRl
bT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJFbmQpKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0xpbmVCcmVha0JveCgpKQotICAgICAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRl
bT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CisgICAgICAg
ICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJ
dGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWspKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAg
ICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8
SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpGbG9hdCkpOworICAgICAg
ICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5l
SXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpGbG9hdCkpOwogICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC5pc0lubGluZUxldmVsQm94
KCkpOwogICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaGFzVGV4dENvbnRlbnQoKSkKICAg
ICAgICAgICAgICAgICAgICAgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVt
cyhmb3JtYXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJ
dGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpU
eXBlOjpCb3gpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGlu
ZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6
OkJveCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogbmV4dFNpYmxp
bmcgPSBsYXlvdXRCb3gubmV4dEluRmxvd09yRmxvYXRpbmdTaWJsaW5nKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCmluZGV4IGY3NDFk
ZTQ4OWU5NDI0NjFkNzY5MmUyZTQwNDE1OTM4M2IwYzgxNjAuLjBhMjEzMDIxM2YxMjRlZWI1Zjdm
NzExMmU4ODZkNzEyYzUzMWRhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRMaW5lTGF5b3V0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGlu
ZTo6Q29udGVuCiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQobG9naWNhbFJlY3Qu
dG9wTGVmdCgpKTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveFdpZHRoKGxv
Z2ljYWxSZWN0LndpZHRoKCkpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94
SGVpZ2h0KGxvZ2ljYWxSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0
KSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8
RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KIApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAg
ICAgICAgICAgICAgdG9wTGVmdCArPSBHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9u
T2Zmc2V0KGxheW91dFN0YXRlKCksIGxheW91dEJveCk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94
LnNldFRvcExlZnQodG9wTGVmdCk7CiAgICAgICAgICAgICBsaW5lQm94UmVjdC5leHBhbmRIb3Jp
em9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgoKSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVj
dCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVl
PERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAg
ICAgICAgICAgYXV0byBwcmV2aW91c1J1bkNhbkJlRXh0ZW5kZWQgPSBwcmV2aW91c0xpbmVSdW4g
JiYgcHJldmlvdXNMaW5lUnVuLT50ZXh0Q29udGV4dCgpID8gcHJldmlvdXNMaW5lUnVuLT50ZXh0
Q29udGV4dCgpLT5jYW5CZUV4dGVuZGVkIDogZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHJlcXVp
cmVzTmV3UnVuID0gIWluZGV4IHx8ICFwcmV2aW91c1J1bkNhbkJlRXh0ZW5kZWQgfHwgJmxheW91
dEJveCAhPSAmcHJldmlvdXNMaW5lUnVuLT5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGlmIChy
ZXF1aXJlc05ld1J1bikKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5l
UnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCwgRGlzcGxheTo6
UnVuOjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5zdGFydCwgdGV4dENvbnRleHQtPmxlbmd0
aCB9KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtl
VW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRl
eHQgeyB0ZXh0Q29udGV4dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5ndGggfSkpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byYgbGFzdERpc3BsYXlSdW4gPSBmb3Jt
YXR0aW5nU3RhdGUuaW5saW5lUnVucygpLmxhc3QoKTsKICAgICAgICAgICAgICAgICBsYXN0RGlz
cGxheVJ1bi0+ZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oCmlu
ZGV4IGIwMDEzYjZlZDU2M2JjYmY4MjgxMzkxMzQxZjJkZDU2MTVlYzUzZWYuLjc5MDYxOTY4MWU2
NzUyZDI4NzI0OTM4NjIyZTNhNzRiZTAzM2ZmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKQEAgLTM0LDYgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUl0
ZW0gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW5saW5lSXRlbT4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFRleHQsIEhhcmRM
aW5lQnJlYWssIEJveCwgRmxvYXQsIENvbnRhaW5lclN0YXJ0LCBDb250YWluZXJFbmQgfTsKICAg
ICBJbmxpbmVJdGVtKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBUeXBlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKaW5kZXgg
NGYyMGE2ZmYxZDcwY2UzNDliZGUwZWJlZGZlOGY4MGEzNWU4NWEyOC4uZWQ2NTIwNWI3ZGI5OWIw
ZjZhYjEwZjNlZWVhYTA3YzQ0NmI3ZjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAg
TGluZTo6Q29udGVudDo6UnVuOjpSdW4oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29u
c3QgVGV4dENvbnRleHQmIHRleHRDb24KIAogTGluZTo6TGluZShjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50cyYgaW5pdGlhbENvbnN0cmFpbnRz
LCBTa2lwVmVydGljYWxBbGlnbWVudCBza2lwVmVydGljYWxBbGlnbWVudCkKICAgICA6IG1fbGF5
b3V0U3RhdGUobGF5b3V0U3RhdGUpCi0gICAgLCBtX2NvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxM
aW5lOjpDb250ZW50PigpKQorICAgICwgbV9jb250ZW50KG1ha2VVbmlxdWU8TGluZTo6Q29udGVu
dD4oKSkKICAgICAsIG1fbG9naWNhbFRvcExlZnQoaW5pdGlhbENvbnN0cmFpbnRzLmxvZ2ljYWxU
b3BMZWZ0KQogICAgICwgbV9iYXNlbGluZSh7IGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRC
YXNlbGluZS5iYXNlbGluZU9mZnNldCwgaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2Vs
aW5lLmhlaWdodCAtIGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5iYXNlbGlu
ZU9mZnNldCB9KQogICAgICwgbV9pbml0aWFsU3RydXQoaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdo
dEFuZEJhc2VsaW5lLnN0cnV0KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5k
KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbG9naWNhbFdpZHRoKQog
CiB2b2lkIExpbmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKGNvbnN0IElubGluZUl0ZW0mIGlu
bGluZUl0ZW0sIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0KQogewotICAgIG1fY29u
dGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5l
SXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVu
aXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiAgICAgbV9jb250
ZW50TG9naWNhbFdpZHRoICs9IGxvZ2ljYWxSZWN0LndpZHRoKCk7CiB9CiAKQEAgLTI4Miw3ICsy
ODIsNyBAQCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVt
JiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIH0KIAogICAgIGF1dG8gdGV4dENv
bnRleHQgPSBDb250ZW50OjpSdW46OlRleHRDb250ZXh0IHsgaW5saW5lSXRlbS5zdGFydCgpLCBp
bmxpbmVJdGVtLmlzQ29sbGFwc2VkKCkgPyAxIDogaW5saW5lSXRlbS5sZW5ndGgoKSwgaXNDb21w
bGV0ZWx5Q29sbGFwc2VkLCBpbmxpbmVJdGVtLmlzV2hpdGVzcGFjZSgpLCBjYW5CZUV4dGVuZGVk
IH07Ci0gICAgYXV0byBsaW5lSXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihp
bmxpbmVJdGVtLCB0ZXh0Q29udGV4dCwgbG9naWNhbFJlY3QpOworICAgIGF1dG8gbGluZUl0ZW0g
PSBtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgdGV4dENvbnRleHQsIGxvZ2lj
YWxSZWN0KTsKICAgICBpZiAoaXNUcmltbWFibGUgJiYgIWlzQ29tcGxldGVseUNvbGxhcHNlZCkK
ICAgICAgICAgbV90cmltbWFibGVDb250ZW50LmFkZChsaW5lSXRlbS5nZXQoKSk7CiAKQEAgLTMw
Myw3ICszMDMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KGNvbnN0
IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbAogICAgICAgICBsb2dpY2FsUmVj
dC5zZXRIZWlnaHQoaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSkpOwogICAgIH0K
IAotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6
OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5h
cHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7
CiAgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IChsb2dpY2FsV2lkdGggKyBob3Jpem9udGFs
TWFyZ2luLnN0YXJ0ICsgaG9yaXpvbnRhbE1hcmdpbi5lbmQpOwogICAgIG1fdHJpbW1hYmxlQ29u
dGVudC5jbGVhcigpOwogfQpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgTGluZTo6YXBwZW5kSGFy
ZExpbmVCcmVhayhjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogICAgICAgICBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSwgeyB9KTsKICAgICAgICAgbG9naWNhbFJl
Y3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgfQotICAgIG1fY29udGVudC0+cnVu
cygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9n
aWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250
ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiB9CiAKIHZvaWQgTGluZTo6YWRq
dXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExh
eW91dFVuaXQgcnVuSGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCmluZGV4IGZhZjA1NDc1M2QzNzIyYWJjMDFkOGE3M2Y0
Nzk5MzQ5YmNiMWFhMTEuLjczN2EwN2IwMzJhZjZmZjExOTkwOTZmN2EzNzU3NTdlNmRhOWYxYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lLmgKQEAgLTUyLDggKzUyLDEwIEBAIGNsYXNzIExpbmUgewogICAgIExpbmUoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMmLCBTa2lwVmVydGljYWxBbGln
bWVudCk7CiAKICAgICBjbGFzcyBDb250ZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBzdHJ1Y3QgUnVuIHsKKyAgICAgICAgICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgICAgIHN0cnVjdCBUZXh0Q29u
dGV4dCB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgeyAwIH07CiAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbGVuZ3RoIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCmluZGV4IGYxMzA4
OWE3MDhmM2ZlM2ZmOWI3N2Y3MjA5NmNkYTQyZWYzNmUyMjIuLjVlNmMyNTZkYjBiMzA5YWFmMWUy
NTgyMWYwZTFlMThlNTY0NTJmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGluZUl0
ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogewogICAgIGF1dG8gdGV4dCA9IGlubGluZUJveC50
ZXh0Q29udGVudCgpOwogICAgIGlmICghdGV4dC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGlu
bGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGlu
ZUJveCwgMCwgMCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHJldHVybiBpbmxpbmVDb250ZW50
LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIDAsIDAsIGZhbHNl
LCBmYWxzZSkpOwogCiAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVCb3guc3R5bGUoKTsKICAgICBh
dXRvIHByZXNlcnZlTmV3bGluZSA9IHN0eWxlLnByZXNlcnZlTmV3bGluZSgpOwpAQCAtOTksMjAg
Kzk5LDIwIEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJ
bmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QKICAgICB3aGlsZSAoY3VycmVudFBvc2l0
aW9uIDwgdGV4dC5sZW5ndGgoKSkgewogICAgICAgICAvLyBTb2Z0IGxpbmVicmVhaz8KICAgICAg
ICAgaWYgKGlzU29mdExpbmVCcmVhayh0ZXh0W2N1cnJlbnRQb3NpdGlvbl0sIHByZXNlcnZlTmV3
bGluZSkpIHsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCAxLCB0cnVlLCBm
YWxzZSkpOworICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxp
bmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIDEsIHRydWUsIGZhbHNlKSk7
CiAgICAgICAgICAgICArK2N1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChpc1doaXRlc3BhY2VDaGFyYWN0ZXIodGV4dFtjdXJyZW50
UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7CiAgICAgICAgICAgICBhdXRvIGxlbmd0aCA9
IG1vdmVUb05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odGV4dCwgY3VycmVudFBvc2l0aW9uLCBw
cmVzZXJ2ZU5ld2xpbmUpOwogICAgICAgICAgICAgYXV0byBpc0NvbGxhcHNlZCA9IGNvbGxhcHNl
V2hpdGVTcGFjZSAmJiBsZW5ndGggPiAxOwotICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9z
aXRpb24sIGxlbmd0aCwgdHJ1ZSwgaXNDb2xsYXBzZWQpKTsKKyAgICAgICAgICAgIGlubGluZUNv
bnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVu
dFBvc2l0aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFwc2VkKSk7CiAgICAgICAgICAgICBjdXJy
ZW50UG9zaXRpb24gKz0gbGVuZ3RoOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAogICAgICAgICBhdXRvIGxlbmd0aCA9IG1vdmVUb05leHRCcmVha2FibGVQb3NpdGlvbihjdXJy
ZW50UG9zaXRpb24sIGxpbmVCcmVha0l0ZXJhdG9yLCBzdHlsZSk7Ci0gICAgICAgIGlubGluZUNv
bnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwg
Y3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBpbmxpbmVD
b250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJl
bnRQb3NpdGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgY3VycmVudFBvc2l0
aW9uICs9IGxlbmd0aDsKICAgICB9CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPElubGluZVRleHRJdGVtPiBJbmxpbmVUZXh0SXRlbTo6c3BsaXQodW5zaWduZWQgc3BsaXRQ
b3NpdGlvbiwgdW4KIHsKICAgICBSRUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0aW9uID49IHRoaXMt
PnN0YXJ0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNwbGl0UG9zaXRpb24gKyBsZW5ndGggPD0g
ZW5kKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihsYXlv
dXRCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1doaXRlc3BhY2UoKSwgaXNDb2xsYXBz
ZWQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGxheW91dEJveCgp
LCBzcGxpdFBvc2l0aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFjZSgpLCBpc0NvbGxhcHNlZCgpKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5j
cHAKaW5kZXggODA4NGUyYmI2OWU4YzkyYWFhOWI3YmU2ZDhhMTRiNzc5NTI5MTIwMy4uM2JhZjll
YWExZmJhOTJjNzBmNGM2YzczMjk1YjEzOGIzMWJjNWI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCkBAIC00NSw3ICs0NSw3IEBAIEJveDo6
Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYm
IHN0eWxlLCBCYXNlVHlwZUZsCiAgICAgLCBtX2hhc1JhcmVEYXRhKGZhbHNlKQogewogICAgIGlm
IChpc1JlcGxhY2VkKCkpCi0gICAgICAgIGVuc3VyZVJhcmVEYXRhKCkucmVwbGFjZWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCku
cmVwbGFjZWQgPSBtYWtlVW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CiB9CiAKIEJveDo6Qm94KE9w
dGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGNvbnN0IEJveDo6Qm94UmFyZURhdGEmIEJveDo6cmFyZURh
dGEoKSBjb25zdAogQm94OjpCb3hSYXJlRGF0YSYgQm94OjplbnN1cmVSYXJlRGF0YSgpCiB7CiAg
ICAgc2V0SGFzUmFyZURhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmVuc3Vy
ZSh0aGlzLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveFJhcmVEYXRhPigpOyB9KS5p
dGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmVuc3VyZSh0aGlzLCBb
XSB7IHJldHVybiBtYWtlVW5pcXVlPEJveFJhcmVEYXRhPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7
CiB9CiAKIHZvaWQgQm94OjpyZW1vdmVSYXJlRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggYWIyODRl
YTA5OWI4ZmEzZmZhNzI3NGUwNmU0Y2VjY2FmODQ3NDMwNy4uZjJhZmNhYmQwYTM4MWM2ZDVjOGRh
MzlkMzQ2ZTFhZWEzM2Q0N2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMTMwLDI1ICsxMzAsMjUgQEAg
c3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25zdCBS
ZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICBpZiAoaXM8UmVuZGVyVGV4dD4oY2hpbGRSZW5k
ZXJlcikpIHsKICAgICAgICAgLy8gRklYTUU6IENsZWFybHkgdGhlcmUgbXVzdCBiZSBhIGhlbHBl
ciBmdW5jdGlvbiBmb3IgdGhpcy4KICAgICAgICAgaWYgKHBhcmVudFJlbmRlcmVyLnN0eWxlKCku
ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJl
bmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFJlbmRlcmVy
LnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+
KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5k
ZXJTdHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94Pihkb3duY2Fz
dDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6
OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVuZGVyZXIuc3R5bGUoKSwg
RGlzcGxheVR5cGU6OklubGluZSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtl
VW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxU
ZXh0KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVu
dFJlbmRlcmVyLnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKICAgICAgICAgcmV0dXJu
IGNoaWxkTGF5b3V0Qm94OwogICAgIH0KIAogICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8
UmVuZGVyRWxlbWVudD4oY2hpbGRSZW5kZXJlcik7CiAgICAgYXV0byBkaXNwbGF5VHlwZSA9IHJl
bmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpOwogICAgIGlmIChpczxSZW5kZXJMaW5lQnJlYWs+KHJl
bmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0
cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVy
ZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogCiAgICAgaWYgKGlz
PFJlbmRlclRhYmxlPihyZW5kZXJlcikpIHsKICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBwcmlu
Y2lwYWwgdGFibGUgd3JhcHBlciBib3ggKGFuZCBub3QgdGhlIHRhYmxlIGJveCBpdHNlbGYpLgot
ICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihCb3g6
OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0s
IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBC
b3g6OkVsZW1lbnRUeXBlOjpUYWJsZVdyYXBwZXJCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHJl
bmRlcmVyLnN0eWxlKCkpKTsKICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclJlcGxhY2VkPihyZW5k
ZXJlcikpIHsKICAgICAgICAgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpCbG9jaykK
LSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1l
bnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxl
KCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1l
bnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxl
KCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1h
a2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6
Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBt
YWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6
Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgeWV0
IHN1cHBvcnQgYWxsIHJlcGxhY2VkIGVsZW1lbnRzIGFuZCB0aGlzIGlzIHRlbXBvcmFyeSBhbnl3
YXkuCiAgICAgICAgIGlmIChjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKSkKICAgICAgICAgICAg
IGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpLT5zZXRJbnRyaW5zaWNTaXplKGRvd25jYXN0PFJl
bmRlclJlcGxhY2VkPihyZW5kZXJlcikuaW50cmluc2ljU2l6ZSgpKTsKQEAgLTE2MywxOCArMTYz
LDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3go
Y29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAgICAgICAgICAgICAgYXV0byBzdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgICAg
ICAgICBzdHlsZS0+c2V0VG9wKHsgb2Zmc2V0LT5oZWlnaHQoKSwgRml4ZWQgfSk7CiAgICAgICAg
ICAgICAgICAgc3R5bGUtPnNldExlZnQoeyBvZmZzZXQtPndpZHRoKCksIEZpeGVkIH0pOwotICAg
ICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+
KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZSgqc3R5bGUpKTsKKyAgICAgICAg
ICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0
cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFp
bmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5p
cXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6
Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlUeXBl
ID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExh
eW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJl
ciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2Ug
aWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jaykKLSAgICAgICAgICAg
IGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
KyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1l
bnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxl
KCkpKTsKICAgICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxl
Q2FwdGlvbiB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDZWxsKSB7Ci0gICAg
ICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVt
ZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHls
ZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVy
PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJl
ci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5
cGU6OlRhYmxlUm93R3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlSGVh
ZGVyR3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlRm9vdGVyR3JvdXAK
ICAgICAgICAgICAgIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZVJvdyB8fCBk
aXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCB8fCBkaXNwbGF5VHlw
ZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW4pIHsKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRl
cmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAg
IGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVz
KHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAg
ICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgVHJlZUJ1aWxk
ZXI6OmNyZWF0ZVRhYmxlU3RydWN0dXJlKGNvbnN0IFJlbmRlclRhYmxlJiB0YWJsZVJlbmRlcmVy
LCBDb250YWluCiAgICAgICAgIHRhYmxlQ2hpbGQgPSB0YWJsZUNoaWxkLT5uZXh0U2libGluZygp
OwogICAgIH0KIAotICAgIGF1dG8gdGFibGVCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5l
cj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlQm94IH0s
IFJlbmRlclN0eWxlOjpjbG9uZSh0YWJsZVJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICBhdXRvIHRh
YmxlQm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBC
b3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVSZW5k
ZXJlci5zdHlsZSgpKSk7CiAgICAgYXBwZW5kQ2hpbGQodGFibGVXcmFwcGVyQm94LCAqdGFibGVC
b3gpOwogICAgIHdoaWxlICh0YWJsZUNoaWxkKSB7CiAgICAgICAgIFRyZWVCdWlsZGVyOjpjcmVh
dGVTdWJUcmVlKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0YWJsZUNoaWxkKSwgKnRhYmxlQm94
KTsKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIHByaW50TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVu
dHMoKQogICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5kIGEgd2F5IHRvIG91dHB1dCBnZW9t
ZXRyeSB3aXRob3V0IGxheW91dCBjb250ZXh0LgogICAgICAgICBhdXRvJiByZW5kZXJWaWV3ID0g
KmRvY3VtZW50LT5yZW5kZXJWaWV3KCk7CiAgICAgICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdC
bG9jayA9IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRUcmVlKHJlbmRlclZpZXcpOwotICAgICAg
ICBhdXRvIGxheW91dFN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRl
PigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CisgICAgICAgIGF1dG8gbGF5b3V0U3RhdGUgPSBt
YWtlVW5pcXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCppbml0aWFsQ29udGFpbmluZ0Jsb2NrKTsK
ICAgICAgICAgbGF5b3V0U3RhdGUtPnNldFF1aXJrc01vZGUocmVuZGVyVmlldy5kb2N1bWVudCgp
LmluTGltaXRlZFF1aXJrc01vZGUoKSA/IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpMaW1pdGVk
IDogKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSA/IExheW91dFN0YXRlOjpR
dWlya3NNb2RlOjpZZXMgOiBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6Tm8pKTsKICAgICAgICAg
bGF5b3V0U3RhdGUtPnVwZGF0ZUxheW91dCgpOwogICAgICAgICBzaG93TGF5b3V0VHJlZSgqaW5p
dGlhbENvbnRhaW5pbmdCbG9jaywgbGF5b3V0U3RhdGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxZDc3ZTRhZjFkYmRkZjA0NWE5MmMxYzhhZDNi
OTllYWNlYjk3YjUuLmI0OThhMjI0YjE5MGM2Y2U4NDRlYjlkZDdlYjliN2ExMDVkNzZkYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZShEb2N1
bWVudExvYWRlciYgZG9jdW1lbnRMb2EKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVy
KTsKIH0KIAogQ29udGVudEZpbHRlcjo6Q29udGVudEZpbHRlcihDb250YWluZXImJiBjb250ZW50
RmlsdGVycywgRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBkMGQ1NGI5
N2VhZTcyMDQyNmY5NjFjOGRhZTg5NWUyMDM2OWNlZGNjLi5jNGNlNWY1NTIxNzBiM2NmYzhiODQx
YjU5YTUxMGZkNzVhYTgzZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgdmFsaWRh
dGVQcmVmbGlnaHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzCiAgICAgaWYgKCFwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2Us
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzZWN1cml0eU9yaWdpbiwgZXJyb3JEZXNjcmlwdGlv
bikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogICAgIGlm
ICghcmVzdWx0LT5wYXJzZShyZXNwb25zZSkKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jv
c3NPcmlnaW5NZXRob2QocmVxdWVzdC5odHRwTWV0aG9kKCksIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBlcnJvckRlc2NyaXB0aW9uKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09y
aWdpbkhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCksIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBlcnJvckRlc2NyaXB0aW9uKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKaW5kZXggZGUwOWU3MDM5OWNjNzQ3ZTg4NzM2OTc4MzcyNGU2ZGFhOWZjNzg4
Yi4uMDQ1NWNhZmM1OWZmN2I2ZWExZjlhMmNkMzkzMWE2OWU5ZjY5NDQ1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgRG9jdW1l
bnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3Vic3RpdHV0ZUQKICAgICAsIG1fb3JpZ2luYWxTdWJzdGl0dXRlRGF0YVdhc1ZhbGlk
KHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVs
aXZlcnlUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxp
dmVyeVRpbWVyRmlyZWQpCiAgICAgLCBtX2RhdGFMb2FkVGltZXIoKnRoaXMsICZEb2N1bWVudExv
YWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KQotICAgICwgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCisg
ICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0KG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhv
c3Q+KCp0aGlzKSkKIHsKIH0KIApAQCAtMTMzNiw3ICsxMzM2LDcgQEAgdWludDY0X3QgRG9jdW1l
bnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCkKICAgICBpZiAobWFuaWZlc3RVUkwu
aXNFbXB0eSgpIHx8ICFtYW5pZmVzdFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgYXV0byBtYW5pZmVzdExvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25N
YW5pZmVzdExvYWRlcj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CisgICAg
YXV0byBtYW5pZmVzdExvYWRlciA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CiAgICAgYXV0byogcmF3TWFu
aWZlc3RMb2FkZXIgPSBtYW5pZmVzdExvYWRlci5nZXQoKTsKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBuZXh0Q2FsbGJhY2tJRCsrOwogICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuc2V0
KFdURk1vdmUobWFuaWZlc3RMb2FkZXIpLCBjYWxsYmFja0lEKTsKQEAgLTE0MjcsNyArMTQyNyw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYgYXJjaGl2
ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYg
YXJjaGl2ZSkKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAg
ICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9hcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRBbGxSZXNvdXJjZXMoYXJjaGl2ZSk7CiB9CiAKQEAg
LTE0MzYsNyArMTQzNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNv
dXJjZXMoQXJjaGl2ZSYgYXJjaGl2ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVS
ZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIHJlc291cmNlKQogewogICAgIGlmICghbV9h
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7Cisg
ICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbj4oKTsKICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFk
ZFJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKIH0KIApAQCAtMTk2Myw3ICsxOTYzLDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBieSBjbGVhcmluZyBt
X3JlcXVlc3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVIb3N0CiAgICAgICAg
IC8vIGlzIG5vdyBpbiBhIHN0YXRlIHdoZXJlIHN0YXJ0aW5nIGFuIGVtcHR5IGxvYWQgd2lsbCBi
ZSBpbmNvbnNpc3RlbnQuIFJlcGxhY2UgaXQgd2l0aAogICAgICAgICAvLyBhIG5ldyBBcHBsaWNh
dGlvbkNhY2hlSG9zdC4KLSAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9hcHBsaWNh
dGlvbkNhY2hlSG9zdCA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsK
ICAgICAgICAgbWF5YmVMb2FkRW1wdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIx
MjIsNyArMjEyMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZv
ckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2Fk
ZXI+KCp0aGlzLCBpY29uLnVybCk7CisgICAgYXV0byBpY29uTG9hZGVyID0gbWFrZVVuaXF1ZTxJ
Y29uTG9hZGVyPigqdGhpcywgaWNvbi51cmwpOwogICAgIGF1dG8qIHJhd0ljb25Mb2FkZXIgPSBp
Y29uTG9hZGVyLmdldCgpOwogICAgIG1faWNvbkxvYWRlcnMuc2V0KFdURk1vdmUoaWNvbkxvYWRl
ciksIG5ld0NhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CmluZGV4IGM0NTBjMDg3MGMwZGI5MDAyYjkwNGM3YjZjYmNlNGM5NjkwMmM2ZGMuLmFjYTM0NTI5
ODViNzMxMTliY2IyM2M0M2JhMjNlZWZiNzVhN2EzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCkBAIC01ODIsNyArNTgyLDcgQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCkKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RW1wdHlQcm9ncmVzc1RyYWNrZXJDbGllbnQ+IGR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9ICZkdW1teVBy
b2dyZXNzVHJhY2tlckNsaWVudC5nZXQoKTsKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50PigpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigpOwogCiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6Y3JlYXRlKHsgfSwgeyB9KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRh
YmFzZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBFbXB0eURhdGFiYXNlUHJvdmlkZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZTBmNDYxNDhmMmRmYWE4N2Y2YjI0
MjYzN2Q1MDg5MTg1MjBhNjBhMi4uODNiZWIyNzE3ZDMzN2MzNDFjMDE1ZWNmNDZkNGYzNzNlMDhi
MTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNzAsMTAgKzI3
MCwxMCBAQCBjbGFzcyBGcmFtZUxvYWRlcjo6RnJhbWVQcm9ncmVzc1RyYWNrZXIgewogRnJhbWVM
b2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lJiBmcmFtZSwgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVu
dCkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBt
X3BvbGljeUNoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDaGVja2VyPihmcmFtZSkpCi0g
ICAgLCBtX2hpc3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q29udHJvbGxlcj4oZnJhbWUp
KQorICAgICwgbV9wb2xpY3lDaGVja2VyKG1ha2VVbmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUp
KQorICAgICwgbV9oaXN0b3J5KG1ha2VVbmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkK
ICAgICAsIG1fbm90aWZpZXIoZnJhbWUpCi0gICAgLCBtX3N1YmZyYW1lTG9hZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKKyAgICAsIG1fc3ViZnJhbWVMb2FkZXIo
bWFrZVVuaXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUpKQogICAgICwgbV9taXhlZENvbnRlbnRD
aGVja2VyKGZyYW1lKQogICAgICwgbV9zdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAg
LCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkKQpAQCAtMzIxLDcgKzMyMSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhG
cmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KTsK
IAogICAgIG1fbmV0d29ya2luZ0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29u
dGV4dCgpOwotICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVBy
b2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5p
cXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJMJikKQEAgLTM0Niw3ICszNDYs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBV
UkwmKQogICAgIG1fbmVlZHNDbGVhciA9IHRydWU7CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0
ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNzVHJh
Y2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwor
ICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4o
bV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBk
ZWZlcnMpCkBAIC0yNjc4LDcgKzI2NzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGls
ZHJlbigpCiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJv
d3NpbmctdGhlLXdlYi5odG1sI25hdmlnYXRlCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdmlnYXRp
b25EaXNhYmxlcj4gbmF2aWdhdGlvbkRpc2FibGVyOwogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZy
YW1lKCkpCi0gICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2
aWdhdGlvbkRpc2FibGVyPigmbV9mcmFtZSk7CisgICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9
IG1ha2VVbmlxdWU8TmF2aWdhdGlvbkRpc2FibGVyPigmbV9mcmFtZSk7CiAKICAgICAvLyBBbnkg
c3ViZnJhbWUgaW5zZXJ0ZWQgYnkgdW5sb2FkIGV2ZW50IGhhbmRsZXJzIGV4ZWN1dGVkIGluIHRo
ZSBsb29wIGJlbG93IHdpbGwgbm90IGdldCB1bmxvYWRlZAogICAgIC8vIGJlY2F1c2Ugd2UgY3Jl
YXRlIGEgY29weSBvZiB0aGUgc3ViZnJhbWVzIGxpc3QgYmVmb3JlIGxvb3BpbmcuIFRoZXJlZm9y
ZSwgaXQgd291bGQgYmUgdW5zYWZlIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IDhlM2E0NmI1MTBhOTk4MGMyYWZiODBhMzQ0OGE0OTg5ZWFjMTllMTkuLjVmZmY2N2Q5NDJl
YmU5MWUwM2E1Mjk2ZTZlOWRhMjRkYjNiN2NjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC05Niw2ICs5Niw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNSZWxvYWQoRnJh
bWVMb2FkVHlwZSk7CiB1c2luZyBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IFdURjo6
RnVuY3Rpb248dm9pZChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+OwogCiBj
bGFzcyBGcmFtZUxvYWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRnJhbWVMb2FkZXIpOwogcHVibGljOgogICAgIEZyYW1lTG9hZGVy
KEZyYW1lJiwgRnJhbWVMb2FkZXJDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmNwcAppbmRleCBjZGY2NDk1MjZmZTNkMWYzMzI4ZDZlMzZjMjAxMDg3YzMxZjE2NTViLi40MDhj
NTM2NDI5ZTNiMDg3Nzk4ZWI5N2U3Njg2NGNjOTQ4NjY2N2FhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtMb2FkZXIuY3BwCkBAIC0xNDIsMjIgKzE0MiwyMiBAQCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VD
bGllbgogewogICAgIHN3aXRjaCAocmVzb3VyY2UudHlwZSgpKSB7CiAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6VHlwZTo6SW1hZ2VSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENh
Y2hlZEltYWdlPihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJl
bG9hZEltYWdlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJl
c291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0OgotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVu
dD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIs
IGRvd25jYXN0PENhY2hlZFNjcmlwdD4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxMaW5rUHJlbG9hZFN0eWxlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVk
Q1NTU3R5bGVTaGVldD4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlu
a1ByZWxvYWRTdHlsZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENTU1N0
eWxlU2hlZXQ+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9u
dFJlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZEZv
bnRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRGb250PihyZXNvdXJjZSkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZEZvbnRSZXNvdXJjZUNsaWVu
dD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRGb250PihyZXNvdXJjZSkpOwogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpUZXh0VHJhY2tSZXNv
dXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0
UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJj
ZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJj
ZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRUZXh0VHJhY2s+KHJlc291cmNlKSk7CiAj
ZW5kaWYKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpNZWRpYVJlc291cmNlOgogICAg
ICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tZWRp
YVByZWxvYWRpbmdFbmFibGVkKCkpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpUeXBlOjpSYXdSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TGlua1ByZWxvYWRSYXdSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxD
YWNoZWRSYXdSZXNvdXJjZT4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TGlua1ByZWxvYWRSYXdSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRSYXdS
ZXNvdXJjZT4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWlu
UmVzb3VyY2U6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SWNvbjoKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25EaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5o
CmluZGV4IDAyY2M3ZDEyMGNhNGJjZmYzNTI1YzhmNzQ5Y2M0MTgwZmU2ZDQ1ZTIuLjhhZTRiMzFi
OGI2OWY5OGQwMWFkYTc4ODk5YTk4YmQxMWRkNDI3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTmF2aWdhdGlvbkRpc2FibGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXZpZ2F0aW9uRGlzYWJsZXIoRnJhbWUqIGZyYW1lKQog
ICAgICAgICA6IG1fZnJhbWUoZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAKaW5kZXggNTU4Yzc4MDQ5NTdlYzg4Mjg4MThlZjU2MTliZjk4M2Qz
Zjk0MGE1NS4uM2MyYzI1MmFhNTFiOTY5Mjk1ZWNmMTQ4MTI1NGEzMjQwZWM0MmE2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMzk3LDcg
KzM5Nyw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChEb2N1
bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50LCBkb3VibGUKICAgICAvLyBXZSB3YW50IGEgbmV3IGJh
Y2svZm9yd2FyZCBsaXN0IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91dCBpcyA+IDEgc2Vjb25k
LgogICAgIGlmICghbV9yZWRpcmVjdCB8fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxheSgpKSB7
CiAgICAgICAgIGF1dG8gbG9ja0JhY2tGb3J3YXJkTGlzdCA9IGRlbGF5IDw9IDEgPyBMb2NrQmFj
a0ZvcndhcmRMaXN0OjpZZXMgOiBMb2NrQmFja0ZvcndhcmRMaXN0OjpObzsKLSAgICAgICAgc2No
ZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3Vt
ZW50LCBkZWxheSwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBM
b2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0ZvcndhcmRMaXN0KSk7CisgICAgICAgIHNjaGVkdWxl
KG1ha2VVbmlxdWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVudCwgZGVsYXks
ICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9ja0hpc3Rvcnk6
OlllcywgbG9ja0JhY2tGb3J3YXJkTGlzdCkpOwogICAgIH0KIH0KIApAQCAtNDQ1LDcgKzQ0NSw3
IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShEb2N1
bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50LCBTCiAgICAgLy8gVGhpcyBtYXkgaGFwcGVuIHdoZW4g
YSBmcmFtZSBjaGFuZ2VzIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyIGZyYW1lLgogICAgIGJvb2wg
ZHVyaW5nTG9hZCA9ICFsb2FkZXIuc3RhdGVNYWNoaW5lKCkuY29tbWl0dGVkRmlyc3RSZWFsRG9j
dW1lbnRMb2FkKCk7CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZExv
Y2F0aW9uQ2hhbmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZzZWN1cml0eU9yaWdpbiwgdXJsLCBy
ZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hl
ZHVsZWRMb2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlPcmlnaW4s
IHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdM
b2FkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1
Ym1pc3Npb24pCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpz
Y2hlZHVsZUZvcm1TdWJtaXNzaW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW8KICAg
ICAgICAgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllczsKICAg
ICB9CiAgICAgCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRGb3JtU3Vi
bWlzc2lvbj4oV1RGTW92ZShzdWJtaXNzaW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5n
TG9hZCkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24+
KFdURk1vdmUoc3VibWlzc2lvbiksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpKTsK
IH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2goRG9jdW1lbnQm
IGluaXRpYXRpbmdEb2N1bWVudCkKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIE5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50KQog
ICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzY2hlZHVsZShz
dGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVudCwgJm1f
ZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxvYWRlcigp
Lm91dGdvaW5nUmVmZXJyZXIoKSkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVk
UmVmcmVzaD4oaW5pdGlhdGluZ0RvY3VtZW50LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCB1cmwsIG1fZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CiB9
CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihp
bnQgc3RlcHMpCkBAIC00OTgsMTMgKzQ5OCwxMyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6
OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQogICAgIH0KIAogICAgIC8vIElu
IGFsbCBvdGhlciBjYXNlcywgc2NoZWR1bGUgdGhlIGhpc3RvcnkgdHJhdmVyc2FsIHRvIG9jY3Vy
IGFzeW5jaHJvbm91c2x5LgotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVk
SGlzdG9yeU5hdmlnYXRpb24+KHN0ZXBzKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hl
ZHVsZWRIaXN0b3J5TmF2aWdhdGlvbj4oc3RlcHMpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2No
ZWR1bGVyOjpzY2hlZHVsZVBhZ2VCbG9jayhEb2N1bWVudCYgb3JpZ2luRG9jdW1lbnQpCiB7CiAg
ICAgaWYgKHNob3VsZFNjaGVkdWxlTmF2aWdhdGlvbigpKQotICAgICAgICBzY2hlZHVsZShzdGQ6
Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3JpZ2luRG9jdW1lbnQpKTsKKyAgICAg
ICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRQYWdlQmxvY2s+KG9yaWdpbkRvY3VtZW50
KSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6dGltZXJGaXJlZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAppbmRleCBhMmRkYWNlMjhmMDdj
MzkxZmUyNGUxOTE4ZDI1NGE1MDAyZmFiNDc2Li45N2MyM2IxNTA5MmJmMzkzYjMxZDIwYzhmMzRk
MjU3NzI2MzFjYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBlbnVtIGNsYXNz
IE5ld0xvYWRJblByb2dyZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICAKIGNsYXNzIE5hdmln
YXRpb25TY2hlZHVsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IE5hdmlnYXRpb25TY2hlZHVsZXIoRnJhbWUmKTsKICAgICB+TmF2aWdhdGlv
blNjaGVkdWxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNz
VHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcApp
bmRleCBlMTdhOWRjNzJkZTAzN2M5NjM0YmMxY2M5M2MyYzFhNzdhODZiZmEzLi4yODE3YTc2NjY0
NTdiMjM5NzNhNjhmY2Y3YmMwMTgwYzEyYmY1Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UHJvZ3Jlc3NUcmFja2VyLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJvZ3Jlc3NUcmFj
a2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlCiAKICAgICBhdXRvJiBpdGVtID0gbV9wcm9ncmVzc0l0ZW1zLmFkZChpZGVudGlmaWVy
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFpdGVtKSB7Ci0gICAgICAgIGl0
ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKKyAg
ICAgICAgaXRlbSA9IG1ha2VVbmlxdWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0ZWRMZW5ndGgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5jcHAKaW5kZXggZWE1ZGJmYmFhYjIwYmZkNDNkZWFjZjFlNzc2MTFjMzQz
M2FiYWI4My4uODI0NmJiMDcwNmNkMGMwNzFmODk5NjI4OTg2YTViYTUxYzQ4YjYzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtNTM1LDcg
KzUzNSw3IEBAIGJvb2wgVGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldChj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuLCBib29sCiAgICAgaWYgKG1fY29udGVudFR5cGUg
PT0gWE1MKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fY2hhcnNldFBhcnNlciA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTE1ldGFDaGFyc2V0UGFyc2VyPigpOworICAgIG1fY2hhcnNldFBh
cnNlciA9IG1ha2VVbmlxdWU8SFRNTE1ldGFDaGFyc2V0UGFyc2VyPigpOwogICAgIHJldHVybiBj
aGVja0Zvck1ldGFDaGFyc2V0KGRhdGEsIGxlbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggY2E5ZTZjNDM0M2Q3NDAxMDU1M2E5ZTEwZmE2NTYz
ZWU1MjM5MWJiZS4uZmE5MjZlYTA2MmFkZmYyMDU3MGM4YTM2OTEyNDY3MmI5ZWY1NjZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2N1ZVBhcnNlcikKLSAg
ICAgICAgbV9jdWVQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGlj
X2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CisgICAgICAgIG1fY3VlUGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRp
Y19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOwogCiAgICAgd2hpbGUgKG1fcGFyc2VPZmZzZXQgPCBidWZmZXItPnNpemUoKSkgewogICAg
ICAgICBhdXRvIGRhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKG1fcGFyc2VPZmZzZXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGExMjYzZTJmMDQ1NzRiNGYwZWU3M2MwNGU4YjYyZjVjODA3MmE3NTguLjc3NTMyZjg2MTM0ZTA0
M2FkMzdkM2Y1OTk5OGE2ZjU3YTQyNDE3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTExNSwxMSArMTE1LDExIEBAIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhy
ZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAK
ICAgICBhdXRvIHNlY3VyaXR5T3JpZ2luQ29weSA9IHNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENv
cHkoKTsKLSAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5
KCkpOworICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IG1ha2VVbmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5PihnbG9iYWxTY29wZS51cmwoKS5pc29sYXRlZENvcHkoKSk7CiAg
ICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVN0YXRlRnJvbShjb250ZW50U2VjdXJp
dHlQb2xpY3kpOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlVcGdyYWRlSW5z
ZWN1cmVSZXF1ZXN0U3RhdGVGcm9tKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCi0gICAgYXV0
byBvcHRpb25zQ29weSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlv
bnMsIHJlcXVlc3QuaHR0cFJlZmVycmVyKCkuaXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDog
cmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKKyAg
ICBhdXRvIG9wdGlvbnNDb3B5ID0gbWFrZVVuaXF1ZTxMb2FkZXJUYXNrT3B0aW9ucz4ob3B0aW9u
cywgcmVxdWVzdC5odHRwUmVmZXJyZXIoKS5pc051bGwoKSA/IG91dGdvaW5nUmVmZXJyZXIgOiBy
ZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luQ29weSkpOwogCiAg
ICAgLy8gQWxsIGxvYWRzIHN0YXJ0IG91dCBhcyBEb2N1bWVudC4gSW5zaWRlIFdvcmtlclRocmVh
ZGFibGVMb2FkZXIgd2UgdXBncmFkZSB0aGlzIHRvIGEgV29ya2VyIGxvYWQuCiAgICAgQVNTRVJU
KG9wdGlvbnNDb3B5LT5vcHRpb25zLmluaXRpYXRvckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4
dDo6RG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBmOTdlYjAwNDI1YmQyOWIzY2I2YmNiMzQ1ZmJm
ZDY1MjI0MDhmOGNlLi5iYmE5MTA0MTkxNTRlY2Y0M2MxMjJlMmQ5MGNmODY0NTU5N2E5OWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcApAQCAtNDIzLDcgKzQyMyw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoTm9kZSYgbm9kZSwgV1RGOjpGdW5jdGlvbjxib29sCiAg
ICAgLy8gYnV0IHdlIGNhbiBhcHByb3hpbWF0ZSB0aGF0IGJ5IGNoZWNraW5nIGlmIHNjcmlwdGlu
ZyBpcyBlbmFibGVkIHJpZ2h0IG5vdy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFF1YWxp
ZmllZE5hbWU+PiB0YWdOYW1lc1RvRmlsdGVyOwogICAgIGlmIChmcmFtZS0+cGFnZSgpICYmIGZy
YW1lLT5wYWdlKCktPnNldHRpbmdzKCkuaXNTY3JpcHRFbmFibGVkKCkpIHsKLSAgICAgICAgdGFn
TmFtZXNUb0ZpbHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFF1YWxpZmllZE5hbWU+Pigp
OworICAgICAgICB0YWdOYW1lc1RvRmlsdGVyID0gbWFrZVVuaXF1ZTxWZWN0b3I8UXVhbGlmaWVk
TmFtZT4+KCk7CiAgICAgICAgIHRhZ05hbWVzVG9GaWx0ZXItPmFwcGVuZChIVE1MTmFtZXM6Om5v
c2NyaXB0VGFnKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCmluZGV4IDgzNjhhOTU3MDVlMzE5MmQxZjgxN2ZmMmVjZDY4MzdlM2Y5ZTEzNWQu
LmVmOTNiMzUxZTc5MWQ1MjdkYWU4MGY4N2M1MjVhN2RjMTRlN2U0MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZv
aWQgQ2FjaGVkSW1hZ2U6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiAgICAgICAgIG1faW1hZ2VPYnNlcnZlci0+Y2FjaGVkSW1hZ2VzKCkuYWRkKHRoaXMp
OwogCiAgICAgaWYgKG1faW1hZ2UgJiYgaXM8U1ZHSW1hZ2U+KCptX2ltYWdlKSkKLSAgICAgICAg
bV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNh
c3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IG1ha2VV
bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOwogfQog
CiB2b2lkIENhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNs
aWVudCkKQEAgLTM1Nyw3ICszNTcsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRl
SW1hZ2UoKQogCiAgICAgaWYgKG1faW1hZ2UpIHsKICAgICAgICAgaWYgKGlzPFNWR0ltYWdlPigq
bV9pbWFnZSkpCi0gICAgICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAgICAg
ICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0
PFNWR0ltYWdlPigqbV9pbWFnZSkpOwogCiAgICAgICAgIC8vIFNlbmQgcXVldWVkIGNvbnRhaW5l
ciBzaXplIHJlcXVlc3RzLgogICAgICAgICBpZiAobV9pbWFnZS0+dXNlc0NvbnRhaW5lclNpemUo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKaW5kZXggYmU2MTgzYWJmYTU5ZDVjOGUxNjJmZWMxZDY1NTI0NTIzYWRlMjc4Yy4uZjlh
NzVmMzU0NTI3NjkwMmE5ZTRhNWMzNWI2YWM2YjFmMTUwYzMwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0yMDgsNyArMjA4
LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXIKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJl
ZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICBlbHNlIHsKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVu
ZChSZWRpcmVjdFBhaXIocmVxdWVzdCwgcmVzcG9uc2UpKTsKLSAgICAgICAgaXRlcmF0ZUNsaWVu
dHMoQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1f
Y2xpZW50cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwg
V1RGTW92ZShyZXF1ZXN0KSwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlc3BvbnNlPihyZXNw
b25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmF3UmVzb3VyY2U+KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCByZXNwb25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUg
eworICAgICAgICBpdGVyYXRlQ2xpZW50cyhDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudD4obV9jbGllbnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBXVEZNb3ZlKHJlcXVlc3QpLCBtYWtlVW5pcXVlPFJlc291
cmNlUmVzcG9uc2U+KHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RS
ZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBlNDMwZTQ0N2FjNDk0NjM2Yzk4NGU3NGQ0MGI5
MWU2NWNkZWJiNTBiLi4wNTY3ZDFkNWRlOGM2ZjEzZTE4Njg0NGFlZDc1NTc1Y2YxN2UxNzJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTU0Niw3ICs1NDYsNyBAQCBib29sIENhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldChDYWNo
ZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgICAgICAvLyBUaGVyZWZvcmUsIHJhdGhlciB0
aGFuIGltbWVkaWF0ZWx5IHNlbmRpbmcgY2FsbGJhY2tzIG9uIGEgY2FjaGUgaGl0IGxpa2Ugb3Ro
ZXIgQ2FjaGVkUmVzb3VyY2VzLAogICAgICAgICAvLyB3ZSBzY2hlZHVsZSB0aGUgY2FsbGJhY2tz
IGFuZCBlbnN1cmUgd2UgbmV2ZXIgZmluaXNoIHN5bmNocm9ub3VzbHkuCiAgICAgICAgIEFTU0VS
VCghbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5jb250YWlucygmY2xpZW50KSk7Ci0gICAgICAg
IG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKCZjbGllbnQsIHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbGJhY2s+KCp0aGlzLCBjbGllbnQpKTsKKyAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxs
YmFjay5hZGQoJmNsaWVudCwgbWFrZVVuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsIGNsaWVudCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIyOWExNDJkNjQ0MTNjZWJhZWZhYzUyNzEwYmIy
YmY4ZGRlZGY3YmUuLjJmZmUyYjQxODc5OTdlZWZkZDQxNWUwZWRiZTgwMmRjMTcyY2FlNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0zODEs
OSArMzgxLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2UgewogfTsKIAogY2xhc3MgQ2FjaGVkUmVz
b3VyY2U6OkNhbGxiYWNrIHsKLSNpZiAhQ09NUElMRVIoTVNWQykKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLSNlbmRpZgogcHVibGljOgogICAgIENhbGxiYWNrKENhY2hlZFJlc291cmNl
JiwgQ2FjaGVkUmVzb3VyY2VDbGllbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODQzYTlkMWY5ZDZjODVm
MTAwMGEyYzQwZjE5NjRiNDdhMmViMWM3YS4uYjM0YjhmZDM1YzEwNzdhNTQ1MmFiYjM0MzIzNjFi
NGNjM2QxMWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgUmVzb3VyY2VFcnJvck9y
PENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXUKICAgICAvLyBFbnRyeSBwb2ludCB0byBodHRwczovL2ZldGNoLnNwZWMud2hhdHdn
Lm9yZy8jbWFpbi1mZXRjaC4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBv
cmlnaW5hbFJlcXVlc3Q7CiAgICAgaWYgKENhY2hlZFJlc291cmNlOjpzaG91bGRVc2VQaW5nTG9h
ZCh0eXBlKSB8fCByZXF1ZXN0Lm9wdGlvbnMoKS5kZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykgewotICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSk7CisgICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0
PihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5j
bGVhckhUVFBSZWZlcnJlcigpOwogICAgICAgICBvcmlnaW5hbFJlcXVlc3QtPmNsZWFySFRUUE9y
aWdpbigpOwogICAgIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmVsCiAgICAgICAgIHJlc291cmNlVmFsdWUtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CiAKICAg
ICAgICAgaWYgKCFtX3ByZWxvYWRzKQotICAgICAgICAgICAgbV9wcmVsb2FkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgIG1f
cHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAg
ICAgICAgIG1fcHJlbG9hZHMtPmFkZChyZXNvdXJjZVZhbHVlLmdldCgpKTsKICAgICB9CiAgICAg
cmV0dXJuIHJlc291cmNlOwpAQCAtMTQzMyw3ICsxNDMzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2xlYXJQcmVsb2FkcyhDbGVhclByZWxvYWRzTW9kZSBtb2RlKQogICAgICAgICBB
U1NFUlQocmVzb3VyY2UpOwogICAgICAgICBpZiAobW9kZSA9PSBDbGVhclByZWxvYWRzTW9kZTo6
Q2xlYXJTcGVjdWxhdGl2ZVByZWxvYWRzICYmIHJlc291cmNlLT5pc0xpbmtQcmVsb2FkKCkpIHsK
ICAgICAgICAgICAgIGlmICghcmVtYWluaW5nTGlua1ByZWxvYWRzKQotICAgICAgICAgICAgICAg
IHJlbWFpbmluZ0xpbmtQcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2Fj
aGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMg
PSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgICAg
ICByZW1haW5pbmdMaW5rUHJlbG9hZHMtPmFkZChyZXNvdXJjZSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaAppbmRleCA3MGNiMWFmYTRjZjFkM2E2ZTY0
MmE4YWU5ZGI4NDQ4Zjg0ZDE0YmQ2Li4yMmFlNzJkOGZmNWVmNzI5YTE2NGM3NmE0ZmRiYjBlNDlk
NzFmNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnRSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaApAQCAtMzUsNyArMzUsOCBAQCBjbGFzcyBDYWNoZWRT
VkdEb2N1bWVudDsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogc3RydWN0IFJlc291cmNl
TG9hZGVyT3B0aW9uczsKIAotY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgOiBwdWJs
aWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgeworY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcAppbmRleCBkM2I4MDUxNDIzYzNmYzUyNGJkOGI2ZjU1ZjM1YTZhYzIyMzBiMjAy
Li4zZGVhZDQ2YzFkNGQ3OGNmN2NkZjAzYWZmY2JlZjM5Mjc4MjYzYzQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgYXV0
byBNZW1vcnlDYWNoZTo6ZW5zdXJlU2Vzc2lvblJlc291cmNlTWFwKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gQ2FjaGVkUmUKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzVmFsaWQoKSk7CiAg
ICAgYXV0byYgbWFwID0gbV9zZXNzaW9uUmVzb3VyY2VzLmFkZChzZXNzaW9uSUQsIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIW1hcCkKLSAgICAgICAgbWFwID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWNoZWRSZXNvdXJjZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFrZVVuaXF1ZTxD
YWNoZWRSZXNvdXJjZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAtMjE2LDcgKzIx
Niw3IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciYm
IGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1
cmwsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0
IGFscmVhZHkgZXhpc3RzLgogCiAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShpbWFnZSksIG51bGxwdHIpOwotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigpLCBzZXNz
aW9uSUQsIGNvb2tpZUphciwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAgIGF1dG8gY2Fj
aGVkSW1hZ2UgPSBtYWtlVW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigp
LCBzZXNzaW9uSUQsIGNvb2tpZUphciwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAg
Y2FjaGVkSW1hZ2UtPmFkZENsaWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNh
Y2hlZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBA
IC00NzMsNyArNDczLDcgQEAgYXV0byBNZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcihDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpIC0+IExSVUxpc3QmCiAKICAgICBtX2FsbFJlc291cmNlcy5yZXNlcnZl
Q2FwYWNpdHkocXVldWVJbmRleCArIDEpOwogICAgIHdoaWxlIChtX2FsbFJlc291cmNlcy5zaXpl
KCkgPD0gcXVldWVJbmRleCkKLSAgICAgICAgbV9hbGxSZXNvdXJjZXMudW5jaGVja2VkQXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8TFJVTGlzdD4oKSk7CisgICAgICAgIG1fYWxsUmVzb3VyY2VzLnVu
Y2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPExSVUxpc3Q+KCkpOwogICAgIHJldHVybiAqbV9hbGxS
ZXNvdXJjZXNbcXVldWVJbmRleF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvUHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2
aWV3TG9hZGVyLmgKaW5kZXggNjE4ZTk0Mjk1MDE3ZGMzYjgzMDM2NWMxMTY3NjE1MzhiMWRiNjIz
OC4uMTUwM2Q3OGUzYWY1OTk0OTU0YjMzYzJhODA4NGY0ZmVhNjMwMDcwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUHJldmlld0xv
YWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUHJldmlld0xvYWRlcik7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxQcmV2aWV3TG9hZGVyPiBjcmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdM
b2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KaW5k
ZXggZjZiODIyMTc5MTZjYWQ5NWJmZTk2MGJiM2UzNzg0YTI3MGE5YmE2Ny4uYzVjYTVjMjVmMTFi
NGQ4YTljYTkzZWZjODg5MDk5MDdmNmI3NjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvUHJldmlld0xvYWRlci5tbQpAQCAtODYsNyArODYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhSZXNvdXJjZUxvYWRlcjooUmVzb3VyY2VMb2FkZXImKXJlc291cmNlTG9hZGVyIHJlc291
cmNlUgogCiAgICAgX3Jlc291cmNlTG9hZGVyID0gbWFrZVdlYWtQdHIocmVzb3VyY2VMb2FkZXIp
OwogICAgIF9yZXNwb25zZSA9IHJlc291cmNlUmVzcG9uc2U7Ci0gICAgX2NvbnZlcnRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKKyAgICBf
Y29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2Up
OwogICAgIF9idWZmZXJlZERhdGFBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwogICAgIF9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3Vy
Y2VMb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldygpOwogCkBAIC0yNDYsNyArMjQ2LDcgQEAgLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5T
RXJyb3IgKillcnIKICAgICB9CiAKICAgICBfY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoW3Nl
bGYsIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKGNvbnN0IFN0cmluZyYgcGFzc3dv
cmQpIHsKLSAgICAgICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZl
cnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBwYXNzd29yZCk7CisgICAgICAgIF9jb252ZXJ0ZXIgPSBt
YWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOwog
ICAgICAgICBbX2NvbnZlcnRlci0+cGxhdGZvcm1Db252ZXJ0ZXIoKSBhcHBlbmREYXRhQXJyYXk6
X2J1ZmZlcmVkRGF0YUFycmF5LmdldCgpXTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3Jt
Q29udmVydGVyKCkgZmluaXNoZWRBcHBlbmRpbmdEYXRhXTsKICAgICB9KTsKQEAgLTI2OCw3ICsy
NjgsNyBAQCBQcmV2aWV3TG9hZGVyOjp+UHJldmlld0xvYWRlcigpCiBzdGQ6OnVuaXF1ZV9wdHI8
UHJldmlld0xvYWRlcj4gUHJldmlld0xvYWRlcjo6Y3JlYXRlKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVChQcmV2
aWV3Q29udmVydGVyOjpzdXBwb3J0c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNl
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNl
KTsKIH0KIAogYm9vbCBQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5oCmluZGV4IGU2YWRiNjdkYTk0ODY4NjI2ZmUyMDZmZjE2ZTY0ZGRhY2UyNzAxZmUuLjYx
M2U3ODkyYjQxMGYzYjJhNDk0ZWNmYjY4MDAwYWFjMGRjNjYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNz
IFRleHRUcmFja0xpc3Q7CiBzdHJ1Y3QgTWVkaWFTZWxlY3Rpb25PcHRpb247CiAKIGNsYXNzIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwJik7CiAgICAgdmlydHVh
bCB+Q2FwdGlvblVzZXJQcmVmZXJlbmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGM0NzljYTFmOWNiMDdkNGFjN2I0YjlmYjIyODUx
ZjBjOTk0YjE3MTQuLjRjY2RhYjA0YjdiM2Y1NTM0Y2VjYzJhMTllYzBhNGJjYjdhYjE3ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE4
MCw3ICsxODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29u
dHJvbGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0TWVudShFdmVudAogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnU+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29udGV4dE1lbnU+KCk7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpzaG93Q29udGV4dE1lbnUoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcAppbmRleCBmNjNkYWE3ZjYzNDcyNTU4ODczZGIzYjU4M2JjMjUxMmEx
Nzc1MjdhLi5jZGM3NGY2ZGUwOWU5M2RlOWFhYjkyMzU2ZWYyZmJmNDRkZDJkMzBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtODgsNyArODgsNyBAQCBj
bGFzcyBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5
IHsKIAogYm9vbCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIHsKLSAg
ICBhdXRvIHJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgIGF1dG8gcmVn
aW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBGcmFtZSog
ZnJhbWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUt
PmRvY3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNDhjMDcz
NDc3MGViMTEwYzFjNWQ4NDUzZGQwODc5OTJlNTY0OWExZS4uZDIwYjk4YzQxNWVlYzgyNzZmODkw
MGYyNGM2N2E5N2YxMDFkMGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMzg1LDcgKzM4NSw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFt
ZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3BlbmRpbmdNb21lbnR1bVdoZWVsRXZlbnRz
VGltZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmNsZWFyTGF0Y2hlZFN0YXRlKQogI2VuZGlmCi0g
ICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b3Njcm9sbENv
bnRyb2xsZXI+KCkpCisgICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKG1ha2VVbmlxdWU8QXV0
b3Njcm9sbENvbnRyb2xsZXI+KCkpCiAjaWYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAg
ICwgbV9mYWtlTW91c2VNb3ZlRXZlbnRUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1v
dXNlTW92ZUV2ZW50VGltZXJGaXJlZCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IDIzMzcyOTQyYjM3NjNkOTI5M2QyNjViMzVhY2MxNTI1ZTM0Y2MwMGYuLmE1ZTVlZGUw
YjRiNzQ3ZTQ3OTRkYzc5NDA2YWVmY2NiYjM4NWRkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTEyOTEsNyArMTI5MSw3IEBAIFJlbmRlckJveCogRnJhbWVWaWV3OjplbWJlZGRl
ZENvbnRlbnRCb3goKSBjb25zdAogdm9pZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9V
cGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogewogICAgIGlmICgh
bV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkKLSAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1Vw
ZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3Qq
Pj4oKTsKKyAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IG1ha2VVbmlxdWU8TGlz
dEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKIAogICAgIEhUTUxGcmFtZU93bmVy
RWxlbWVudCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZyYW1lT3duZXJFbGVtZW50KCk7CiAg
ICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVt
ZW50PihlbGVtZW50KSkgewpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFk
ZFNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIGJvb2wgaGFk
U2xvd1JlcGFpbnRPYmplY3RzID0gaGFzU2xvd1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBpZiAo
IW1fc2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CisgICAgICAg
IG1fc2xvd1JlcGFpbnRPYmplY3RzID0gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVs
ZW1lbnQqPj4oKTsKIAogICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzLT5hZGQoJnJlbmRlcmVyKTsK
ICAgICBpZiAoaGFkU2xvd1JlcGFpbnRPYmplY3RzKQpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyKQogdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogb2JqZWN0KQogewogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0cykKLSAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKKyAgICAgICAgbV92
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdFNldD4oKTsKIAogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+
Y29udGFpbnMob2JqZWN0KSkgewogICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
LT5hZGQob2JqZWN0KTsKQEAgLTQ4NjYsNyArNDg2Niw3IEBAIFN0cmluZyBGcmFtZVZpZXc6OnRy
YWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6OmFkZFNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICBpZiAoIW1f
c2Nyb2xsYWJsZUFyZWFzKQotICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0g
bWFrZVVuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKICAgICAKICAgICBpZiAobV9zY3JvbGxh
YmxlQXJlYXMtPmFkZChzY3JvbGxhYmxlQXJlYSkuaXNOZXdFbnRyeSkgewogICAgICAgICBzY3Jv
bGxhYmxlQXJlYVNldENoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
d0xheW91dENvbnRleHQuY3BwCmluZGV4IDczMDk4ZjFmYTFmMTA3MWU2MWZjZDNhYTY1MzUzMzBk
M2U4OWJmNTkuLmU4NThjOTJjYmY4YzMxYTMyMWJmMzgwMDk3YWJhNTVmMTU3MDAwYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtNTk2
LDE0ICs1OTYsMTQgQEAgdm9pZCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3Rh
dGUoUmVuZGVyRWxlbWVudCYgcm9vdCkKICAgICBBU1NFUlQoIW1fcGFpbnRPZmZzZXRDYWNoZURp
c2FibGVDb3VudCk7CiAgICAgQVNTRVJUKCFsYXlvdXRTdGF0ZSgpKTsKIAotICAgIG1fbGF5b3V0
U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9v
dCkpOworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlv
dXRTdGF0ZT4ocm9vdCkpOwogfQogCiBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hM
YXlvdXRTdGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZChSZW5kZXJCbG9ja0Zsb3cmIGxheW91dFJv
b3QpCiB7CiAgICAgaWYgKGxheW91dFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0
U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRlOjpJc1BhZ2luYXRlZDo6WWVzKSk7
CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0
YXRlPihsYXlvdXRSb290LCBSZW5kZXJMYXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOwog
ICAgIHJldHVybiB0cnVlOwogfQogICAgIApAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgRnJhbWVW
aWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKFJlbmRlckJveCYgcmVuZGVyZXIsIGNv
bnN0IExheW91dFNpCiAgICAgYXV0byogbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgp
OwogICAgIGlmICghbGF5b3V0U3RhdGUgfHwgIW5lZWRzRnVsbFJlcGFpbnQoKSB8fCBsYXlvdXRT
dGF0ZS0+aXNQYWdpbmF0ZWQoKSB8fCByZW5kZXJlci5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygp
CiAgICAgICAgIHx8IGxheW91dFN0YXRlLT5saW5lR3JpZCgpIHx8IChyZW5kZXJlci5zdHlsZSgp
LmxpbmVHcmlkKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpICYmIHJlbmRlcmVy
LmlzUmVuZGVyQmxvY2tGbG93KCkpKSB7Ci0gICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNr
LCByZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOworICAg
ICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3Rh
dGU+KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFn
ZUhlaWdodENoYW5nZWQpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCmluZGV4IDhjM2M1MmEw
NzM1MjI3OTBjZDBjNGE2MGRjMDVlNjE0MTJjMTlhZTkuLjUyMjdlNDJhYzA5NmNlNjkyNWQ3ZWM2
YTE4ZTUxOTI1ZDJlMDA2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApA
QCAtMTQ5LDcgKzE0OSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6
OnNlcnZpY2VXb3JrZXIoKQogewogICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkpOwogICAgIGlmICghbV9zZXJ2
aWNlV29ya2VyQ29udGFpbmVyKQotICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgKnRoaXMpOworICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBtYWtl
VW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
KnRoaXMpOwogICAgIHJldHVybiAqbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCA0ZDRhNDljNzMxYTRjYWY0NmVkZTYxMTU3N2NiMzllNmJmZmYwYTIy
Li5iODIwZTQ5ZDM2NmQ3MTY5MjVhOTczZTJiMjhjOWI1ODJhZjk5NzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTIxMSwyNiArMjExLDI2IEBAIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU6OkZsYWc+IHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpCiB9CiAKIFBhZ2U6
OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2hy
b21lKHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNo
cm9tZUNsaWVudCkpCi0gICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQorICAgIDogbV9jaHJvbWUobWFrZVVuaXF1ZTxDaHJv
bWU+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKKyAgICAsIG1fZHJh
Z0NhcmV0Q29udHJvbGxlcihtYWtlVW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50
KSkKKyAgICAsIG1fZHJhZ0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRo
aXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkKICNlbmRpZgotICAgICwgbV9mb2N1
c0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdl
SW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCisgICAgLCBtX2ZvY3VzQ29udHJvbGxlcihtYWtlVW5p
cXVlPEZvY3VzQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVy
KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25m
aWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKKyAgICAsIG1fY29udGV4dE1lbnVDb250cm9s
bGVyKG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1
cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKICNlbmRpZgotICAgICwgbV91c2VySW5wdXRCcmlk
Z2Uoc3RkOjptYWtlX3VuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKLSAgICAsIG1faW5z
cGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0
aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV91c2VySW5w
dXRCcmlkZ2UobWFrZVVuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKKyAgICAsIG1faW5z
cGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBw
YWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQpKQogI2lmIEVOQUJMRShQT0lOVEVSX0VW
RU5UUykKLSAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
UG9pbnRlckNhcHR1cmVDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJDYXB0dXJl
Q29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQog
I2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICAsIG1fcG9pbnRlckxvY2tDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCisg
ICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJMb2NrQ29udHJv
bGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NldHRpbmdzKFNldHRpbmdzOjpjcmVhdGUo
dGhpcykpCi0gICAgLCBtX3Byb2dyZXNzKHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NUcmFja2Vy
PigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKLSAgICAsIG1fYmFj
a0ZvcndhcmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVy
PigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQor
ICAgICwgbV9wcm9ncmVzcyhtYWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1
cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCisgICAgLCBtX2JhY2tGb3J3YXJkQ29udHJv
bGxlcihtYWtlVW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKICAgICAsIG1fbWFpbkZyYW1lKEZy
YW1lOjpjcmVhdGUodGhpcywgbnVsbHB0ciwgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50
Rm9yTWFpbkZyYW1lKSkKICAgICAsIG1fZWRpdG9yQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24uZWRpdG9yQ2xpZW50KSkKICAgICAsIG1fcGx1Z0luQ2xpZW50KHBhZ2VDb25maWd1cmF0
aW9uLnBsdWdJbkNsaWVudCkKQEAgLTI1MCw5ICsyNTAsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2RvbVRpbWVyQWxpZ25tZW50
SW50ZXJ2YWxJbmNyZWFzZVRpbWVyKCp0aGlzLCAmUGFnZTo6ZG9tVGltZXJBbGlnbm1lbnRJbnRl
cnZhbEluY3JlYXNlVGltZXJGaXJlZCkKICAgICAsIG1fYWN0aXZpdHlTdGF0ZShwYWdlSW5pdGlh
bEFjdGl2aXR5U3RhdGUoKSkKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDb25m
aWd1cmF0aW9uLmFsdGVybmF0aXZlVGV4dENsaWVudCkKLSAgICAsIG1fY29uc29sZUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50PigqdGhpcykpCisgICAgLCBtX2NvbnNv
bGVDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRGVidWdn
YWJsZShtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1f
c29ja2V0UHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlcikp
CiAgICAgLCBtX2Nvb2tpZUphcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvb2tpZUphcikp
CkBAIC0yNjgsMTYgKzI2OCwxNiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGlt
ZXIoKnRoaXMsICZQYWdlOjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyRmlyZWQp
CiAjZW5kaWYKICAgICAsIG1faXNVdGlsaXR5UGFnZShpc1V0aWxpdHlQYWdlQ2hyb21lQ2xpZW50
KGNocm9tZSgpLmNsaWVudCgpKSkKLSAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0
eVBhZ2UoKSA/IG51bGxwdHIgOiBzdGQ6Om1ha2VfdW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4o
KnRoaXMpKQotICAgICwgbV9sb3dQb3dlck1vZGVOb3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPExv
d1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsg
aGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQotICAg
ICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmcoc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dp
bmc+KCp0aGlzKSkKKyAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/
IG51bGxwdHIgOiBtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQorICAgICwg
bV9sb3dQb3dlck1vZGVOb3RpZmllcihtYWtlVW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihb
dGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hh
bmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQorICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dp
bmcobWFrZVVuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+KCp0aGlzKSkKICNpZiBQTEFURk9STShN
QUMpICYmIChFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSkKLSAgICAsIG1fc2VydmljZXNPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXIo
V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGFnZU92ZXJsYXlDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisg
ICAgLCBtX3BhZ2VPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q29udHJv
bGxlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgLCBtX3BheW1lbnRDb29y
ZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1
cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCkpCisgICAgLCBtX3BheW1lbnRDb29yZGlu
YXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBh
eW1lbnRDb29yZGluYXRvckNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQog
ICAgICwgbV9hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNv
b3JkaW5hdG9yQ2xpZW50KSkpCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBQYWdlOjppbml0R3Jv
dXAoKQogewogICAgIEFTU0VSVCghbV9zaW5nbGVQYWdlR3JvdXApOwogICAgIEFTU0VSVCghbV9n
cm91cCk7Ci0gICAgbV9zaW5nbGVQYWdlR3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VHcm91
cD4oKnRoaXMpOworICAgIG1fc2luZ2xlUGFnZUdyb3VwID0gbWFrZVVuaXF1ZTxQYWdlR3JvdXA+
KCp0aGlzKTsKICAgICBtX2dyb3VwID0gbV9zaW5nbGVQYWdlR3JvdXAuZ2V0KCk7CiB9CiAKQEAg
LTI2NTQsNyArMjY1NCw3IEBAIHZvaWQgUGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNp
YmxlKGJvb2wgdmlzaWJsZSkKICAgICB9CiAKICAgICBpZiAoIW1fcmVzb3VyY2VVc2FnZU92ZXJs
YXkgJiYgbV9zZXR0aW5ncy0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkKLSAgICAg
ICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VVc2Fn
ZU92ZXJsYXk+KCp0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IG1ha2VV
bmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+KCp0aGlzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCmluZGV4IDE4OTFlOTU5YjM3OGEzODMy
ZDRjYzFmOGY0OGE4Y2ZkNjhkOTc4MjkuLjRlNDgwYzBjMjBlNDBjMmI5NmQ0YzNlY2E5ZmE0MzVl
MmI5YWVmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBA
IC0xNjEsOSArMTYxLDkgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKIAogICAgIGlmIChjYWxs
U3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0
LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAg
ICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2Us
IE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VO
b25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVz
c2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3Rl
ZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlm
aWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dl
c3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0
ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgYWRkTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KTsKIH0KQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdl
V2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogICAgIFN0
cmluZyBtZXNzYWdlVGV4dDsKICAgICBib29sIGdvdE1lc3NhZ2UgPSBhcmd1bWVudHMtPmdldEZp
cnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7CiAKLSAgICBhdXRvIG1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYo
KSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOwogCiAgICAgU3RyaW5nIHVybCA9IG1l
c3NhZ2UtPnVybCgpOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5lKCk7
CkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChkYXRhVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkTWVzc2Fn
ZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
IkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOwor
ICAgICAgICAgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUo
YXJndW1lbnRzKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAt
Mzk5LDcgKzM5OSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgZm9yIChzaXplX3Qg
aSA9ICghdGFyZ2V0ID8gMCA6IDEpOyBpIDwgYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsr
aSkKICAgICAgICAgYWRqdXN0ZWRBcmd1bWVudHMuYXBwZW5kKHsgc3RhdGUtPnZtKCksIGFyZ3Vt
ZW50cy0+YXJndW1lbnRBdChpKSB9KTsKICAgICBhcmd1bWVudHMgPSBTY3JpcHRBcmd1bWVudHM6
OmNyZWF0ZSgqc3RhdGUsIFdURk1vdmUoYWRqdXN0ZWRBcmd1bWVudHMpKTsKLSAgICBhZGRNZXNz
YWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywg
ZGF0YVVSTCwgV1RGTW92ZShhcmd1bWVudHMpKSk7CisgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJn
dW1lbnRzKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VH
cm91cC5jcHAKaW5kZXggOTE5MzYwNDVjMmZhZjc2Y2FjNWUyYzY5ZTYyMzNmMmNlMzBiZjliMS4u
MTI4YzE4ZjE0YjkwOGU3MWJjN2NlZmIzOTYyMDdmZWJiYzAwZjJhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUdyb3VwLmNwcApAQCAtMTE2LDkgKzExNiw5IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMm
IFBhZ2VHcm91cDo6Y2FwdGlvblByZWZlcmVuY2VzKCkKIHsKICAgICBpZiAoIW1fY2FwdGlvblBy
ZWZlcmVuY2VzKSB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJ
VFlfRlJBTUVXT1JLKQotICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKKyAgICAgICAgbV9j
YXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGPigqdGhpcyk7CiAjZWxzZQotICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRoaXMpOworICAgICAgICBtX2Nh
cHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRo
aXMpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4
IDZjMTViM2ZhYTgzZjVjYWUwZDkxNzZkMDBjOGFmYzE1Yjc2NjkzMTYuLmNiYmFjMjFkNDAwNWIx
YjBlMTE4MDIyZjdhYTE0YThiY2ZlZDg1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2Uu
Y3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdC
dWZmZXJGdWxsVGltZXJGaXJlZCgpCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFy
ayhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAg
ICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsK
KyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IG1fdXNlclRpbWluZy0+bWFyayhtYXJrTmFtZSk7CiAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTI3OSwxNCArMjc5LDE0IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB2b2lkIFBl
cmZvcm1hbmNlOjpjbGVhck1hcmtzKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYg
KCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8
VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVz
ZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmctPmNsZWFyTWFya3MobWFya05hbWUp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJp
bmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcmIHN0YXJ0TWFyaywgY29uc3QgU3RyaW5nJiBl
bmRNYXJrKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGlt
aW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9
IG1fdXNlclRpbWluZy0+bWVhc3VyZShtZWFzdXJlTmFtZSwgc3RhcnRNYXJrLCBlbmRNYXJrKTsK
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMzAwLDcgKzMwMCw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5h
bWUsIGNvbnN0IFN0cmluZyYKIHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMoY29uc3Qg
U3RyaW5nJiBtZWFzdXJlTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAg
bV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAg
ICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1f
dXNlclRpbWluZy0+Y2xlYXJNZWFzdXJlcyhtZWFzdXJlTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCmluZGV4IDk5YTQzNzJlNTRkODQwMjliYWZiZjli
OGY3YTU4MjAwMWZhNjNhMWIuLjE2YmNmMDQzOTBhMTcwZjNkZTc4MjY1MGMyZmMyNTIyY2Y1MDU0
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaApAQCAtMzIsNiAr
MzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUHJl
d2FybUluZm9ybWF0aW9uIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgRm9udENhY2hlOjpQcmV3YXJtSW5mb3JtYXRpb24gZm9udENhY2hlOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDAzNzBmMjg4N2Y2NWI1N2IzY2Q4OTdlNGZjNjll
OGEyZWZiODc1ZGYuLjQ0MjkxYWVmYTM3YzhhN2E4NDQ4YmVjMzlhZWVhYzI0MzllYzQ3NWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lk
IFByaW50Q29udGV4dDo6b3V0cHV0TGlua2VkRGVzdGluYXRpb25zKEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBEbwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbGlua2Vk
RGVzdGluYXRpb25zKSB7Ci0gICAgICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4oKTsKKyAgICAgICAgbV9saW5r
ZWREZXN0aW5hdGlvbnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxlbWVudD4+
PigpOwogICAgICAgICBjb2xsZWN0TGlua2VkRGVzdGluYXRpb25zKGRvY3VtZW50KTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNw
cAppbmRleCA1NmEwMTFjNGNlZTk5Nzg5OTAxZmFkMzYzMDJiZTEwYzM0NTY2NTI3Li4zYjg4MWRm
YmIxNzE3ZjRlNDExYTZjNTM0NDU5NWZiZDNhYjQzMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGJv
b2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjppc1NjaGVkdWxlZCgpIGNvbnN0CiB2b2lkIFJl
bmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAg
IEFTU0VSVCghaXNTY2hlZHVsZWQoKSk7Ci0gICAgbV9yZWZyZXNoVGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJl
ZnJlc2hGaXJlZCk7CisgICAgbV9yZWZyZXNoVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhp
cywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CiAgICAg
bV9yZWZyZXNoVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCmluZGV4IGZhZGU2MmZjNzg3ZWU0
ODk3OWFmNmRkODI2NjI3Nzk4MDRkMzc1MTcuLjZmMDYwODE3ODI2ZWM1NmM2ZWU4YTVmOGNkMzk0
NGVjMmQ0MTkwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXIKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcj4gY3JlYXRlKFBhZ2UmIHBhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+KHBhZ2UpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+KHBhZ2UpOwogICAgIH0KIAog
ICAgIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcihQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6
ZU9ic2VydmVyLmgKaW5kZXggOTViMWM4YjViZTgzZDg5YjI0OTc5ZWFlZDliOWQ0ZTkwZDNmNGY4
Ny4uZWVlYmY5YjllNjFiZDU4OGZkM2JhOTlmYWIxNTAxOTFjYzhmNjcwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIEVsZW1lbnQ7CiAKIHN0cnVjdCBSZXNpemVPYnNlcnZlckRhdGEgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBWZWN0b3I8V2Vha1B0cjxSZXNpemVPYnNl
cnZlcj4+IG9ic2VydmVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAKaW5kZXggNDIzNDE4MjgwZWEyZWUzYzliZmRmYzkxY2QxMjdiOTY4ZWIxZTFiZi4uMGRlYjA2
NDE0OGY5NzI2Y2QzOGI0MTAwNWQ1MjI5NzI2MGMxYzY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291
cmNlTwogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CiAgICAg
T3JpZ2luQWNjZXNzTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRk
KHNvdXJjZVN0cmluZywgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5BY2Nl
c3NXaGl0ZUxpc3Q+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5p
cXVlPE9yaWdpbkFjY2Vzc1doaXRlTGlzdD4oKTsKIAogICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlz
dCogbGlzdCA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgbGlzdC0+YXBwZW5k
KE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWlu
LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1
YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5B
Y2Nlc3NFbnRyeTo6VHJlYXRJUEFkZHJlc3NBc0lQQWRkcmVzcykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5nc0Jhc2UuY3BwCmluZGV4IGI2ODQ4OTZmMzk4ODQ2MjU0YTE3OTdhZGNkZWQ2NjY2MDVl
ODVkNWMuLjI3ZWVhNmMwYWI5MzhlYmM4Zjk2NWRhY2I4MjAzMTE0NDMxNjBiOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0
IFNlY29uZHMgbGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgPSAyNTBfbXM7CiAKIFNldHRpbmdzQmFz
ZTo6U2V0dGluZ3NCYXNlKFBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UobnVsbHB0cikKLSAgICAs
IG1fZm9udEdlbmVyaWNGYW1pbGllcyhzdGQ6Om1ha2VfdW5pcXVlPEZvbnRHZW5lcmljRmFtaWxp
ZXM+KCkpCisgICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMobWFrZVVuaXF1ZTxGb250R2VuZXJp
Y0ZhbWlsaWVzPigpKQogICAgICwgbV9sYXlvdXRJbnRlcnZhbChsYXlvdXRTY2hlZHVsZVRocmVz
aG9sZCkKICAgICAsIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWwoRE9NVGltZXI6OmRlZmF1bHRN
aW5pbXVtSW50ZXJ2YWwoKSkKICAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcigq
dGhpcywgJlNldHRpbmdzQmFzZTo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRleCA1NTg0NDM0MDc4MzQ2ZmI5YjU3
YTZlYTU5YWZjZTI3YTYyNDBiNTVhLi4zYzNkNDllMDU4YWIxMzE3NDdlYjQ5YmIwYzkzYTBmZDI5
NDUxOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApAQCAtMzQsNiAr
MzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdXNwZW5kYWJsZVRpbWVyIDog
cHJpdmF0ZSBUaW1lckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFN1c3BlbmRhYmxlVGltZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgflN1c3BlbmRhYmxlVGltZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRl
eCBiOWNlOThjYzZjYTVjMjQ1NmNkYjk0ZjVkYzQxYjRkMmI1MGU5OGY2Li42NTIzMTFkN2E1NWY1
NTA3YTA1YWE0M2I2MmM4MDIwODcyMmRiYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgVXNlckNvbnRl
bnRDb250cm9sbGVyOjpmb3JFYWNoVXNlck1lc3NhZ2VIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoY29u
c3QgVXNlck1lCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0PiB1c2VyU2Ny
aXB0KQogewotICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUo
JndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigp
OyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJT
Y3JpcHRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPFVzZXJTY3JpcHRW
ZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5k
KFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBVc2Vy
Q29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3JpcHRzKERPTVdyYXBwZXJXb3JsZCYgd29y
bGQpCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChET01X
cmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJT
dHlsZVNoZWV0LCBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAg
YXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3Js
ZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7
IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3Vz
ZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2Vy
U3R5bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHN0eWxlU2hlZXRz
SW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIAogICAgIGlmIChpbmpl
Y3Rpb25UaW1lID09IEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKaW5kZXggZjI1OWFlYjFhMGE5ZTVjZTdh
MTM0ZjBkMTI2OWVjMzE0YzlhOWMzMS4uMzA0ZDk0YTc1YmYzNjFkOGRkNDZmNmFmZmFmZTMxYzNl
ZjgyYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVy
LmNwcApAQCAtNDMsOSArNDMsOSBAQCBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6On5XaGVlbEV2ZW50
RGVsdGFGaWx0ZXIoKSA9IGRlZmF1bHQ7CiBzdGQ6OnVuaXF1ZV9wdHI8V2hlZWxFdmVudERlbHRh
RmlsdGVyPiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpCiB7CiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdoZWVsRXZlbnREZWx0YUZpbHRlck1h
Yz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7
CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRh
RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmls
dGVyPigpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMTQ0NjYzY2FlOTU5Nzlj
ZmNjN2M0YTIyNDJlMWQxNjFkNjEwMjkyNS4uMTNjMzFmNTc2NGI3YjIyNGEyYjdlYTU1YWUzM2E2
YjM5ODZiOTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIENT
U0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphbmltYXRpb25XaWxsQmVSZW1vdmVkKEFuaW1h
dGlvbkJhc2UmIGFuaW1hdAogfQogCiBDU1NBbmltYXRpb25Db250cm9sbGVyOjpDU1NBbmltYXRp
b25Db250cm9sbGVyKEZyYW1lJiBmcmFtZSkKLSAgICA6IG1fZGF0YShzdGQ6Om1ha2VfdW5pcXVl
PENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPihmcmFtZSkpCisgICAgOiBtX2RhdGEobWFr
ZVVuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKaW5kZXggNzRlZWRjOTk2NmU5ZjgxYWNiOTk2Y2YzNzY5ODNkYWI2ODU1NDBjNi4u
YmFlYjI0NzY1NzE2NzM3Yjg0YTFjYzhmMTlkZTAxNzNmMzY3ZTk5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApA
QCAtMTE3LDkgKzExNyw5IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0Rh
dGE+IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpCiB7CiAgICAgQVNTRVJU
KGZyb20gJiYgdG8pOwogICAgIGlmIChmcm9tLT5zdHlsZSgpICE9IHRvLT5zdHlsZSgpKQotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqdG8pOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqdG8pOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9u
KCksIHByb2dyZXNzKSwKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChm
cm9tLT5sb2NhdGlvbigpLCB0by0+bG9jYXRpb24oKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVu
ZChmcm9tLT5yYWRpdXMoKSwgdG8tPnJhZGl1cygpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5k
KGZyb20tPnNwcmVhZCgpLCB0by0+c3ByZWFkKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmRG
dW5jKGFuaW0sIGZyb20tPnN0eWxlKCksIHRvLT5zdHlsZSgpLCBwcm9ncmVzcyksCkBAIC05NzQs
MTUgKzk3NCwxNSBAQCBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvciA6
IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlCiAgICAgUHJvcGVydHlXcmFwcGVy
VmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBDb2xvciYgKFJl
bmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlciko
Y29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0
ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29u
c3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3Ap
Ci0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29s
b3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0
ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIs
IHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5
V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVk
V3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0
dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAgICAgfQogICAgIFByb3BlcnR5V3JhcHBlclZp
c2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgTWF5YmVJbnZhbGlkQ29sb3JU
YWcsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJl
bmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpLAogICAgICAgICBjb25zdCBDb2xvciYg
KFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6
Oip2aXNpdGVkU2V0dGVyKShjb25zdCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3Bl
cnR5V3JhcHBlckJhc2UocHJvcCkKLSAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1
ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIp
KQotICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdy
YXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRl
cikpCisgICAgICAgICwgbV93cmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJ
bnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRX
cmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3As
IHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgYm9vbCBl
cXVhbHMoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKSBjb25zdCBv
dmVycmlkZQpAQCAtMTIyOSwxOSArMTIyOSwxOSBAQCBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlX
cmFwcGVyIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewogICAgICAgICBz
d2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAg
ICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5k
WE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsK
KyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxs
TGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3Np
dGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9y
aWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6Ci0gICAg
ICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
bExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp5UG9z
aXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFlP
cmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRZT3JpZ2luLCBFZGdlOjpCb3R0b20pOwor
ICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxM
YXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0
aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3Jp
Z2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQ
cm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBl
cjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5
ZXI6OnNldFNpemVMZW5ndGgpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBw
ZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJv
cGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2U6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZG
aWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSk7CisgICAgICAgICAgICBtX2Zp
bGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVBy
b3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpz
ZXRJbWFnZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTc3MCw3ICsxNzcwLDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFw
cGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAoKQogICAgICAgICAgICAgbG9u
Z2hhbmRXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQobV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJ
bmRleF0uZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4o
cHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdyYXBwZXJzKSkpOworICAgICAgICBtX3Byb3Bl
cnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8U2hvcnRoYW5kUHJvcGVydHlX
cmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3ZlKGxvbmdoYW5kV3JhcHBlcnMpKSk7CiAgICAgICAg
IGluZGV4RnJvbVByb3BlcnR5SUQocHJvcGVydHlJRCkgPSBhbmltYXRhYmxlTG9uZ2hhbmRQcm9w
ZXJ0aWVzQ291bnQgKyBpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDcwNDdlODNkZTc4NWRiODFiNmQ5OTBh
OTQ4MzdiYTcxZDcyODI5YTAuLjhmMGY2YmY1M2IwM2UwOGY3MDMzMTY2ZWI4Yzc0ZDZiZjk3Mjgz
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpk
aWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiB2b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZihjb25zdCBTZWN1cml0eU9y
aWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgbV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1
cml0eU9yaWdpbi5wcm90b2NvbCgpOwotICAgIG1fc2VsZlNvdXJjZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9j
b2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0
cmluZygpLCBmYWxzZSwgZmFsc2UpOworICAgIG1fc2VsZlNvdXJjZSA9IG1ha2VVbmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNl
Y3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygp
LCBmYWxzZSwgZmFsc2UpOwogfQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQ
b2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaAppbmRleCBhOGYx
ZDRmMGJkZTE0ZjE0Yjg4YWEzOTQwZWRkOGM4OTYyNjFlM2RlLi5iYmQ5MTg5ZTI0ODM0ZGFjYzhk
N2JhZTE1Y2M1ODE2Y2EzMjBjZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaApAQCAtMzMsNiArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiBkaXJl
Y3RpdmVMaXN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
ICAgIDogbV9uYW1lKG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCmluZGV4IGRkYmQ4
Y2RlMjc4MGU5MmRiYTIwZTBhYmQ5OWNmMDQ5ODQzZjRjNGQuLmMwMTU2ZGRmMDFjOTQ3ZTUwNGI1
NjlkMGE0MTE2OThjNTU4ZjNlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Q29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdChDb250ZW50U2UKIAogc3RkOjp1bmlxdWVfcHRy
PENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29u
c3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUgdHlwZSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tIGZyb20pCiB7Ci0gICAgYXV0byBkaXJl
Y3RpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0Pihwb2xpY3ksIHR5cGUpOworICAgIGF1dG8gZGlyZWN0aXZlcyA9IG1ha2VVbmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsKICAgICBkaXJl
Y3RpdmVzLT5wYXJzZShoZWFkZXIsIGZyb20pOwogCiAgICAgaWYgKCFjaGVja0V2YWwoZGlyZWN0
aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZlKGRpcmVjdGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKSkp
IHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgogICAgICAgICBt
X3BvbGljeS5yZXBvcnREdXBsaWNhdGVEaXJlY3RpdmUobmFtZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgZGlyZWN0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1BEaXJlY3RpdmVUeXBl
PigqdGhpcywgbmFtZSwgdmFsdWUpOworICAgIGRpcmVjdGl2ZSA9IG1ha2VVbmlxdWU8Q1NQRGly
ZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphcHBseVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCmluZGV4IDFjMmI0ZDA4ZTZkYjI0MzA1Mjkx
YTFlYTFjODZlYjYzNmUzZjM1MjYuLjg0OTQ4NDI2NGU5MTczMGY3YTY5MDk4ZGYzZDdkYWQxNDky
ZGNlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VP
YnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNl
cnZlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIERPTVRpbWVyOwogY2xhc3MgRWxlbWVudDsK
IAogY2xhc3MgQ29udGVudENoYW5nZU9ic2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENv
bnRlbnRDaGFuZ2VPYnNlcnZlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIENvbnRlbnRDaGFuZ2VPYnNlcnZlcihEb2N1bWVudCYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmgKaW5kZXggYjYyMTg0ZmUxNzk0
MmRhOTQ4NTlhODAyY2VmZGU3NmUyNDJkM2U0Yy4uYmJmNzk0NWFhYTQ5OWE3NmI3ZTEyYWIzYzc1
ZDU5NDQyMWU0NWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGlt
ZXJIb2xkaW5nVGFuay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9s
ZGluZ1RhbmsuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBE
T01UaW1lcjsKIAogY2xhc3MgRE9NVGltZXJIb2xkaW5nVGFuayB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRE9NVGltZXJIb2xkaW5nVGFuaygpOwogICAgIH5E
T01UaW1lckhvbGRpbmdUYW5rKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xp
bnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9s
aW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAppbmRleCA0ZmRmNzU2YzAyMTk4ODUz
M2IyZjEyNTVjOTFhNGVjYzkxNDg0ZmE0Li5jMDdiMTI3NjljZDA0YmE3YjMxZjg4YzQ2YTlmMDZi
NmFkNmI0OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNl
VXNhZ2VPdmVybGF5TGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVz
b3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIFN0cmlu
ZyBnY1RpbWVyU3RyaW5nKE1vbm90b25pY1RpbWUgdGltZXJGaXJlRGF0ZSwgTW9ub3RvbmljVGlt
ZSBub3cpCiBzdGF0aWMgY29uc3QgZmxvYXQgZ0ZvbnRTaXplID0gMTQ7CiAKIGNsYXNzIFJlc291
cmNlVXNhZ2VPdmVybGF5UGFpbnRlciBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVVz
YWdlT3ZlcmxheVBhaW50ZXIoUmVzb3VyY2VVc2FnZU92ZXJsYXkmIG92ZXJsYXkpCiAgICAgICAg
IDogbV9vdmVybGF5KG92ZXJsYXkpCkBAIC0xMzIsNyArMTMzLDcgQEAgY2xhc3MgUmVzb3VyY2VV
c2FnZU92ZXJsYXlQYWludGVyIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewog
CiB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotICAg
IG1fb3ZlcmxheVBhaW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5
UGFpbnRlcj4oKnRoaXMpOworICAgIG1fb3ZlcmxheVBhaW50ZXIgPSBtYWtlVW5pcXVlPFJlc291
cmNlVXNhZ2VPdmVybGF5UGFpbnRlcj4oKnRoaXMpOwogICAgIG1fcGFpbnRMYXllciA9IEdyYXBo
aWNzTGF5ZXI6OmNyZWF0ZShvdmVybGF5KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFw
aGljc0xheWVyRmFjdG9yeSgpLCAqbV9vdmVybGF5UGFpbnRlcik7CiAgICAgbV9wYWludExheWVy
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbV9wYWludExheWVyLT5zZXRT
aXplKHsgbm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdodCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdl
TWFjLm1tCmluZGV4IGQ3YWRmZmQ3MmY5ZmE4ZmU5N2FmY2RhMDcxOGQ4M2M2ZTA5MDg1MGMuLjA4
NjNhZDI2NzI1ZDY1NTQ3NTJiN2FjMjE0OGVlZDFjNmRmYzIzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvUGFnZU1hYy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCiB2b2lkIFBhZ2U6OmFkZFNjaGVkdWxlUGFpcihSZWY8U2NoZWR1bGVQYWlyPiYmIHBh
aXIpCiB7CiAgICAgaWYgKCFtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycykKLSAgICAgICAgbV9zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+
KCk7CisgICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gbWFrZVVuaXF1ZTxTY2hlZHVs
ZVBhaXJIYXNoU2V0PigpOwogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5hZGQocGFpci5w
dHIoKSk7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCmluZGV4IGRjZGQ5NTA0OGJkOTU4
YWE3NDQwYTBmYzNkOWJjZTdkZjJmNTQ4MGYuLjY0NzVjZTVlYmM5MDdhZTE4ODBhZjE3MWMwNzM2
ZmYzZWNiNTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRp
Y2F0b3JXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9y
V2luZG93LmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93
RGlzbWlzc2FsQW5pbWF0aW9uIDogdWludDhfdCB7CiAjaWYgUExBVEZPUk0oTUFDKQogCiBjbGFz
cyBUZXh0SW5kaWNhdG9yV2luZG93IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0SW5kaWNhdG9yV2luZG93KTsKIAogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCAzMDZjZmVkMTljZTZkMDBiNjJhODUyNDk3MDAyOGI4
MDQ1ZmFkODIzLi4wMGFmMzk0NzhkYzc1ZjcwMjljMjQ4NDU0ZWYwMWFiMGM2YzdkMTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKFBh
Z2UqIHBhZ2UpCiAgICAgOiBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKQogICAgICwgbV91cGRh
dGVOb2RlU2Nyb2xsUG9zaXRpb25UaW1lcigqdGhpcywgJkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmlyZWQpCi0gICAg
LCBtX3Njcm9sbGluZ1N0YXRlVHJlZShzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJl
ZT4odGhpcykpCisgICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZShtYWtlVW5pcXVlPFNjcm9sbGlu
Z1N0YXRlVHJlZT4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKaW5kZXggNjNiZDk2MzhiNjNhMWEx
MWNhNDBmMzY3MjEyOWY3MTQxMGM2ZmYyZS4uM2FiNjQwNjgyNjRjNTA0MDhiYWI0ZWUzOGQyY2Nk
NGE2NDFjNzg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKQEAgLTM3LDYgKzM3LDcgQEAgc3RydWN0IFNjcm9sbE9m
ZnNldFJhbmdlIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVmVj
dG9yPFQ+IGhvcml6b250YWxTbmFwT2Zmc2V0czsKICAgICBWZWN0b3I8VD4gdmVydGljYWxTbmFw
T2Zmc2V0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKaW5kZXggNzY0MGQ1NWQ5NmEzZjA5
NTliOTMxZWYwNDMzZWMxNWZhMjA3ZGJkNC4uYzg5MGY5ZWJhMDA0Y2E4NzgwMTQxYjg1Y2VlZTAw
NTU2MmUyZTQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCkBAIC03MSw3ICs3MSw3IEBA
IEZsb2F0U2l6ZSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0
aW9uT2Zmc2V0KCkKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2
aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9p
bnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250ZW50
U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3
cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRp
YWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQ
bGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmgKaW5kZXggYmU5OWQwZWU2YTNmMDc4OWZjNGQ3ZGM2OTI4ODViNTI0MDA0Mzgw
Mi4uMjFjMzExY2Q4OWI3OTQwODRhODQ5MGQ1ZmM5YmE1NWE5M2I5YWViZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZs
b2F0U2l6ZTsKIAogY2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29u
dGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50
U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBp
bml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCmlu
ZGV4IDk2ODJkMmMxYmNlZTM3NTcxM2MzNDZkM2UzM2NkNGRjMTM1YWZjNzguLmJlNTdjOWI4Njlk
MGNjNTIzODZiMDA0NmE1MDdkMzRjODQwYzgxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5nU3Rh
dGVOb2RlPiYmIGNoaWxkTm9kZSkKICAgICBjaGlsZE5vZGUtPnNldFBhcmVudCh0aGlzKTsKIAog
ICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKKyAgICAgICAgbV9jaGls
ZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsK
ICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RGTW92ZShjaGlsZE5vZGUpKTsKICAgICBzZXRQcm9w
ZXJ0eUNoYW5nZWQoQ2hpbGROb2Rlcyk7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTY3Jv
bGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxkKFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+JiYgY2hp
bGROb2RlLCBzaXplX3QKIAogICAgIGlmICghbV9jaGlsZHJlbikgewogICAgICAgICBBU1NFUlQo
IWluZGV4KTsKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJl
ZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKKyAgICAgICAgbV9jaGlsZHJlbiA9IG1ha2VV
bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKICAgICB9CiAKICAg
ICBpZiAoaW5kZXggPiBtX2NoaWxkcmVuLT5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCmluZGV4IGY2MWUyOGUw
ZWM1MDMwMTJiMzcyZmIyNTU2OWE4Y2I3ZGQ1M2FhNzAuLjcxNTdlMTY4NjBmNDljOTFkZGEzNWJi
YzRlYWZlOTgxOWVhY2JlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IFNjcm9sbGluZ1N0YXRlVHJlZTo6Y29tbWl0KExh
eWVyUmVwcmVzZW50YXRpCiAgICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBjbG9uZXMgYW5k
IHJlc2V0cyB0aGUgY3VycmVudCBzdGF0ZSB0cmVlLCBidXQgbGVhdmVzIHRoZSB0cmVlIHN0cnVj
dHVyZSBpbnRhY3QuCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJl
ZVN0YXRlQ2xvbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiB0cmVlU3RhdGVDbG9uZSA9IG1h
a2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOwogICAgIHRyZWVTdGF0ZUNsb25lLT5zZXRQ
cmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKHByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24p
OwogCiAgICAgaWYgKG1fcm9vdFN0YXRlTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAppbmRleCBlYTc0ZTJjYTQyNDI5YThl
MmJlOWY5YTM3OWUzNjdkYTRkZGRhM2QxLi43Mjk2MTVhNjlmMDEyMjYzMTUxNDdlY2ZkYjU1Mjhi
MDE5OWYzODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZU5vZGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5v
ZGU6OmFwcGVuZENoaWxkKFJlZjxTY3JvbGxpbmdUcmVlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAg
Y2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAg
ICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5n
VHJlZU5vZGU+Pj4oKTsKKyAgICAgICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJl
ZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4+PigpOwogICAgIG1fY2hpbGRyZW4tPmFwcGVuZChXVEZN
b3ZlKGNoaWxkTm9kZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5t
bQppbmRleCAxYzdhYjc2YTE1MWU2MzUwZDhiNjE0YzM2ZDA1YmNlNjVjNmM5NTg0Li5iNDNlYTk5
NWZhZjZiNDcwMzM1ZmJmMDdhMjA4NmE2YjM1ZjcwZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgc3RhdGljIGJvb2wgZ0VuYWJsZVBs
YXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uID0gdHJ1ZTsKIAogc3RkOjp1bmlxdWVf
cHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWM+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxE
ZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWM+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxP
ZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKIH0KIAogdm9pZCBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0
aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DUFVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgK
aW5kZXggNzFlNDNkM2YzYjk0NjEwNjA4Y2JmMTFkYjUxMTViY2JlYzA1NDg5MC4uMDg4ZGY1NDNl
MDQ3OTExN2M4MzdhZmUyMjNiYmNjNTUxNDg4YTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQ
VU1vbml0b3IuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDUFVNb25pdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB1c2luZyBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChkb3Vi
bGUpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBDUFVNb25pdG9yKFNlY29uZHMgY2hlY2tJbnRlcnZh
bCwgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1v
bml0b3IuaAppbmRleCBlNjBmNzcxM2Y2MmJiMjU2MmE4NDI4ODhjN2ZjNjI5ZjJjNTQ3ZjMzLi42
YjI4OGUxZTE3ZTQ0OGJiODZmYjllY2UyOWNjOWU1YmRiOWRkOGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVNb25pdG9yLmgKQEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRmlsZU1vbml0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGVudW0gY2xhc3MgRmlsZUNoYW5nZVR5cGUgeyBNb2RpZmljYXRpb24sIFJl
bW92YWwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKaW5kZXggNGZmOTgwNGVhZWMx
MzA2YjI2OGEyNDVmMjc3MWExMTJlMjhkMmExZS4uM2ZjNDMxYTQ3NDYxZDhjNDQzZGI0YjYyMmQ2
ZWE5MDYzNGRhMGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCkBAIC0yODgsOSAr
Mjg4LDkgQEAgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5n
dGgmIGxlbmd0aCkKICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2Fs
YygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Np
b25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7
Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVz
c2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tl
ZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsK
LSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4o
V1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51
bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEw
MCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENh
bGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpT
dWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RG
TW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApAQCAtMzAyLDcgKzMwMiw3IEBAIHN0YXRp
YyBMZW5ndGggYmxlbmRNaXhlZFR5cGVzKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3Ro
JiB0bywgZG91YmxlIHByb2dyCiAgICAgaWYgKHByb2dyZXNzID49IDEuMCkKICAgICAgICAgcmV0
dXJuIHRvOwogICAgICAgICAKLSAgICBhdXRvIGJsZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxj
RXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3MpOworICAgIGF1dG8gYmxl
bmQgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGg+KGZyb20sIHRvLCBwcm9n
cmVzcyk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92
ZShibGVuZCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKaW5kZXggNTUyYjEyZjZjMWU4Y2RhNmZm
ZWE2NDc4NjkyMjI5ZWE5M2VkMTdjYS4uOGUzNWUzMDRjMWU3MjU3YmM2NGM2YWQxMGVkZGU5NjQy
MDRlNjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFu
ZExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5k
TGlzdGVuZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAo
IVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUMpKSB8fCAhSEFWRShNRURJQV9Q
TEFZRVIpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21t
YW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXI+KGNs
aWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihjbGll
bnQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
LmgKaW5kZXggMmU1ZjYzYmNlZjJiZmRmY2ZmOTIxNmQ5ODZiMGY0MzYwYzY4MGI0MS4uYjdjMWQy
NGViNDllNWE1NWY2OTFmMDZjZTllMWQ4MGIyMWJjY2FkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgRmxvYXRQb2lu
dDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb24geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbEFu
aW1hdGlvbigpIHsgfTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0
aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgLyogc3RlcCAqLywgZmxvYXQgLyogbXVsdGlw
bGllciAqLykgeyByZXR1cm4gdHJ1ZTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcAppbmRleCBkOTE1NGQ5MzUxYTJmMzM2NmRkZDA1ZmU2MGZkZWJiOWMxYTFl
NzM4Li5mOGVkYzg4MmQ3ZjM2MDAyZTE5ODUxMGQ4MWI4ZWIzNGFhNTAwN2M4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPFNjcm9s
bEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcj4o
c2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yPihz
Y3JvbGxhYmxlQXJlYSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwCmluZGV4IGM2MmFkODM0ZTZiMzgwOGUxZWNkYThiYTEzMTJkM2Q5NTcw
NWU5NmEuLjk2ZDBmMzAwYjM0MThlNjA4MjFkYTJkYTJhNjQxODljNGRlZTBiM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAg
U2Nyb2xsQW5pbWF0b3ImIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvcigpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3Njcm9sbEFuaW1hdG9yKSB7CiAgICAgICAgIGlmICh1c2VzTW9ja1Njcm9s
bEFuaW1hdG9yKCkpIHsKLSAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0
aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworICAgICAgICAgICAgbV9zY3Jv
bGxBbmltYXRvciA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25zdF9jYXN0PFNj
cm9sbGFibGVBcmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CiAg
ICAgICAgICAgICAgICAgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShtZXNzYWdlKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIFNj
cm9sbGFibGVBcmVhOjpoYXNMYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiBTY3JvbGxTbmFw
T2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIFNjcm9sbGFibGVBcmVhOjplbnN1cmVTbmFwT2Zmc2V0
c0luZm8oKQogewogICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCi0gICAgICAgIG1fc25hcE9m
ZnNldHNJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0
VW5pdD4+KCk7CisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gbWFrZVVuaXF1ZTxTY3JvbGxT
bmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+KCk7CiAgICAgcmV0dXJuICptX3NuYXBPZmZzZXRz
SW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVy
bWluYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgK
aW5kZXggNzJiMDA0NTEzMTQyYzhmNGU5NWRmMjI4MThjM2RkYzE4MGFhZWNlZC4uMGQ3NGIxNmU1
OTI1OThhYjgzYjBjOGMwZWI1NGI0NDZkZmQzOGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNlbmRpZgogCiAgICAgY2xhc3MgU3VkZGVuVGVybWluYXRpb25EaXNhYmxlciB7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKTsKICAgICBwdWJsaWM6CiAgICAgICAgIFN1
ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmNwcAppbmRleCBhMjgwMTBlY2ZlNWEzNjdhZDlkMGIyOWEyMDA1NjNhMGY1
NjFkNTYwLi4yN2E3MzY0MTZiYTA0YzA1M2MyZTc3ZGIyYzU1ODE0NDQwZDJmMGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtNDAsMTQgKzQw
LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEds
b2JhbERhdGEoKQotICAgIDogbV9jYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKHN0ZDo6
bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKKyAgICA6IG1f
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhtYWtlVW5pcXVlPENhY2hlZFJlc291cmNl
UmVxdWVzdEluaXRpYXRvcnM+KCkpCiAgICAgLCBtX2V2ZW50TmFtZXMoRXZlbnROYW1lczo6Y3Jl
YXRlKCkpCi0gICAgLCBtX3RocmVhZFRpbWVycyhzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZFRpbWVy
cz4oKSkKLSAgICAsIG1fcXVhbGlmaWVkTmFtZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8UXVhbGlm
aWVkTmFtZUNhY2hlPigpKQorICAgICwgbV90aHJlYWRUaW1lcnMobWFrZVVuaXF1ZTxUaHJlYWRU
aW1lcnM+KCkpCisgICAgLCBtX3F1YWxpZmllZE5hbWVDYWNoZShtYWtlVW5pcXVlPFF1YWxpZmll
ZE5hbWVDYWNoZT4oKSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2lzTWFpblRocmVhZChpc01h
aW5UaHJlYWQoKSkKICNlbmRpZgotICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1Uoc3RkOjptYWtl
X3VuaXF1ZTxJQ1VDb252ZXJ0ZXJXcmFwcGVyPigpKQorICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJ
Q1UobWFrZVVuaXF1ZTxJQ1VDb252ZXJ0ZXJXcmFwcGVyPigpKQogewogICAgIC8vIFRoaXMgY29u
c3RydWN0b3Igd2lsbCBoYXZlIGJlZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUg
YmVpbmcgY2FsbGVkIG9uCiAgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2Fs
bGVkIG9uY2UgcGVyIHRocmVhZCAtIHRoaXMgbWFrZXMgdGhpcyBhIGNvbnZlbmllbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAppbmRleCAyZjg5MmQ2YjE5YWJh
NDIzMGU5MjRjNzYxODczOGZjNmNiNDhmN2VjLi5lNzBkNDZkMGI5ZjI0MDdmOTA4NTQ4ZmE4ZjJl
OThjOWRhNDU2M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMu
Y3BwCkBAIC02NCw3ICs2NCw3IEBAIEF1ZGlvQnVzOjpBdWRpb0J1cyh1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbGVuZ3RoLCBib29sIGFsbG9jYXRlKQogICAgIG1fY2hhbm5lbHMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgYXV0byBj
aGFubmVsID0gYWxsb2NhdGUgPyBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3Ro
KSA6IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihudWxscHRyLCBsZW5ndGgpOworICAg
ICAgICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihs
ZW5ndGgpIDogbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0aCk7CiAgICAg
ICAgIG1fY2hhbm5lbHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoY2hhbm5lbCkpOwogICAgIH0K
IApAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgQXVkaW9CdXM6OmNvcHlXaXRoR2FpbkZyb20oY29u
c3QgQXVkaW9CdXMgJnNvdXJjZUJ1cywgZmxvYXQqIGxhc3RNaXhHYWluLCBmCiAKICAgICBpZiAo
ZnJhbWVzVG9EZXppcHBlcikgewogICAgICAgICBpZiAoIW1fZGV6aXBwZXJHYWluVmFsdWVzLmdl
dCgpIHx8IG1fZGV6aXBwZXJHYWluVmFsdWVzLT5zaXplKCkgPCBmcmFtZXNUb0RlemlwcGVyKQot
ICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4oZnJhbWVzVG9EZXppcHBlcik7CisgICAgICAgICAgICBtX2RlemlwcGVyR2Fp
blZhbHVlcyA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0RlemlwcGVyKTsK
IAogICAgICAgICBmbG9hdCogZ2FpblZhbHVlcyA9IG1fZGV6aXBwZXJHYWluVmFsdWVzLT5kYXRh
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXNUb0RlemlwcGVyOyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCmluZGV4IDIxNzNk
YzkzODNlNGEzM2MxYjU5MzQ3NjVhMWU1YjEwNzQ2ZjAzYTEuLmJiYjNkMmFjZDIyYzU3MmJjOTIz
YTQ4YjFmNzBhZjg1NGMwY2IwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQnVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9CdXMuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBbiBBdWRp
b0J1cyByZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBvbmUgb3IgbW9yZSBBdWRpb0NoYW5uZWxz
LgogLy8gVGhlIGRhdGEgbGF5b3V0IGlzICJwbGFuYXIiIGFzIG9wcG9zZWQgdG8gImludGVybGVh
dmVkIi4KIC8vIEFuIEF1ZGlvQnVzIHdpdGggb25lIGNoYW5uZWwgaXMgbW9ubywgYW4gQXVkaW9C
dXMgd2l0aCB0d28gY2hhbm5lbHMgaXMgc3RlcmVvLCBldGMuCi1jbGFzcyBBdWRpb0J1cyA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0J1cz4geworY2xhc3MgQXVkaW9CdXMgZmlu
YWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9CdXM+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBdWRpb0J1cyk7CiBwdWJsaWM6CiAgICAgZW51bSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCmluZGV4IGJiYzEzNTdhM2Q1M2Yw
NTQ4Zjg4NzhlNTg3ZGI3ZDZkZDFjNGZhZDguLjdiOTg5M2QzOGFjNDE3NDUzMTc0MWI3NzI0YzZm
ZjJhYmQwMWRmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hh
bm5lbC5oCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQW4gQXVk
aW9DaGFubmVsIHJlcHJlc2VudHMgYSBidWZmZXIgb2Ygbm9uLWludGVybGVhdmVkIGZsb2F0aW5n
LXBvaW50IGF1ZGlvIHNhbXBsZXMuCiAvLyBUaGUgUENNIHNhbXBsZXMgYXJlIG5vcm1hbGx5IGFz
c3VtZWQgdG8gYmUgaW4gYSBub21pbmFsIHJhbmdlIC0xLjAgLT4gKzEuMAotY2xhc3MgQXVkaW9D
aGFubmVsIHsKK2NsYXNzIEF1ZGlvQ2hhbm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9DaGFubmVsKTsKIHB1Ymxp
YzoKICAgICAvLyBNZW1vcnkgY2FuIGJlIGV4dGVybmFsbHkgcmVmZXJlbmNlZCwgb3IgY2FuIGJl
IGludGVybmFsbHkgYWxsb2NhdGVkIHdpdGggYW4gQXVkaW9GbG9hdEFycmF5LgpAQCAtNTYsNyAr
NTcsNyBAQCBjbGFzcyBBdWRpb0NoYW5uZWwgewogICAgICAgICAsIG1fcmF3UG9pbnRlcigwKQog
ICAgICAgICAsIG1fc2lsZW50KHRydWUpCiAgICAgewotICAgICAgICBtX21lbUJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihsZW5ndGgpOworICAgICAgICBtX21lbUJ1
ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihsZW5ndGgpOwogICAgIH0KIAogICAg
IC8vIEEgImJsYW5rIiBhdWRpbyBjaGFubmVsIC0tIG11c3QgY2FsbCBzZXQoKSBiZWZvcmUgaXQn
cyB1c2VmdWwuLi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKaW5k
ZXggNzVjOWFiZDc0OTRkMzU4MjJmODJhY2U3Y2NkMGQ4NTY4NjExZDdlYS4uMGY0MzhkZDdkMGZh
NTlmYjY0NGQ0ZGY1NzJmNTU5ZmQ2NjMwOGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9GSUZPLmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBBdWRpb0ZJRk8geworY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBGSUZPIGxhcmdl
IGVub3VnaCB0byBob2xkIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZD
aGFubmVsc3wgY2hhbm5lbHMuCiAgICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMsIHNpemVfdCBmaWZvTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvUHVsbEZJRk8uaAppbmRleCBiZmJlOTgzYTU3NWE0NTRhYWMyYjBjM2NiZTQ1NzVlZmFm
NmI3OGQ3Li5kNzQ4ZmE0MTM4NzM3OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCkBAIC00MSw3ICs0
MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHRoZSBGSUZPIHdpbGwgYXNrIHRoZSBwcm92
aWRlciBmb3IgbW9yZSBkYXRhIHdoZW4gbmVjZXNzYXJ5IHRvIGZ1bGZpbGwgYSByZXF1ZXN0LiBD
b250cmFzdCB0aGlzCiAvLyB3aXRoIGEgInB1c2giIEZJRk8sIHdoZXJlIHRoZSBzZW5kZXIgcHVz
aGVzIGRhdGEgdG8gdGhlIEZJRk8gd2hpY2ggd2lsbCBpdHNlbGYgcHVzaCB0aGUgZGF0YSB0bwog
Ly8gdGhlIHJlY2VpdmVyIHdoZW4gdGhlIEZJRk8gaXMgZnVsbC4KLWNsYXNzIEF1ZGlvUHVsbEZJ
Rk8geworY2xhc3MgQXVkaW9QdWxsRklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgRklGTyB0aGF0IGdldHMgZGF0YSBmcm9t
IHxwcm92aWRlcnwuIFRoZSBGSUZPIHdpbGwgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQKICAgICAv
LyB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5u
ZWxzLiBUaGUgQXVkaW9Tb3VyY2VQcm92aWRlciB3aWxsIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKaW5kZXggODY5MDZiYTUxMjQ3NTg2
OTJjNjgzZTJiYzkwMzgzNTAxZWFiOGZkOS4uMjg0YzA1NDk0MzI1OTM0NGVhY2UzMjQxOGFkYTli
ODMwM2RhMmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9SZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
UmVzYW1wbGVyLmNwcApAQCAtMzksNyArMzksNyBAQCBjb25zdCBkb3VibGUgQXVkaW9SZXNhbXBs
ZXI6Ok1heFJhdGUgPSA4LjA7CiBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIoKQogICAg
IDogbV9yYXRlKDEuMCkKIHsKLSAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VV
bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKICAgICBtX3NvdXJjZUJ1cyA9IEF1
ZGlvQnVzOjpjcmVhdGUoMSwgMCwgZmFsc2UpOwogfQogCkBAIC00Nyw3ICs0Nyw3IEBAIEF1ZGlv
UmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAg
IDogbV9yYXRlKDEuMCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZD
aGFubmVsczsgKytpKQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFwcGVuZCht
YWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAKICAgICBtX3NvdXJjZUJ1
cyA9IEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgMCwgZmFsc2UpOwogfQpAQCAt
NjEsNyArNjEsNyBAQCB2b2lkIEF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVscyh1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgIC8vIEZpcnN0IGRlYWwgd2l0aCBhZGRpbmcgb3Ig
cmVtb3Zpbmcga2VybmVscy4KICAgICBpZiAobnVtYmVyT2ZDaGFubmVscyA+IGN1cnJlbnRTaXpl
KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGN1cnJlbnRTaXplOyBpIDwgbnVtYmVyT2ZD
aGFubmVsczsgKytpKQotICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgICAgICAgICBtX2tlcm5lbHMu
YXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKICAgICB9IGVs
c2UKICAgICAgICAgbV9rZXJuZWxzLnJlc2l6ZShudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKaW5kZXggZDExZmE5
M2ViYWFjYmQ4ZTU2Yjk4ZGEzMzc1ZmFlMTQwNjhlM2JjOS4uMjAxNmJhZmY3Yzg4ZGYxOGFmNWQz
NTJjMzAxZjVmZjQzNzY4OWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Jlc2FtcGxlci5oCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIFRoZSBhdWRpbyBzdHJlYW0gbWF5IGJlIHNpbmdsZSBvciBtdWx0aS1jaGFubmVsLgogLy8g
VGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdHMgdG8gc2luZ2xlLWNoYW5uZWwgKG1vbm8p
LgogCi1jbGFzcyBBdWRpb1Jlc2FtcGxlciB7CitjbGFzcyBBdWRpb1Jlc2FtcGxlciBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXVkaW9SZXNhbXBs
ZXIoKTsKICAgICBBdWRpb1Jlc2FtcGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2Vy
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5l
bC5oCmluZGV4IDk5ZDg3N2JiN2NkNjhkYmIwNTM2NzdhMDk3Y2Q0ZTBlYWM4M2I3ODIuLjhhYzJi
YWE0MmM1ODdhMzQ4NWQ1MzQwMjNhZGVlMjRmODgzMjZlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaApAQCAtMzQsNyAr
MzQsOSBAQCBjbGFzcyBBdWRpb1Jlc2FtcGxlcjsKIC8vIEF1ZGlvUmVzYW1wbGVyS2VybmVsIGRv
ZXMgcmVzYW1wbGluZyBvbiBhIHNpbmdsZSBtb25vIGNoYW5uZWwuCiAvLyBJdCB1c2VzIGEgc2lt
cGxlIGxpbmVhciBpbnRlcnBvbGF0aW9uIGZvciBnb29kIHBlcmZvcm1hbmNlLgogCi1jbGFzcyBB
dWRpb1Jlc2FtcGxlcktlcm5lbCB7CitjbGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QXVkaW9SZXNhbXBsZXJLZXJuZWwpOwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVyS2VybmVs
KEF1ZGlvUmVzYW1wbGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Nlc3Npb24uY3BwCmluZGV4IDVjMWJmMmEzMTczNDJlYTNlNTI5MmE3OTdlOGU2NmUxYThk
YTM5N2MuLmI1ZmI1ODA2NDhmOWNmOGVjNGYxODZmYWZhNDhlMTNmZGNmMmY1N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtNTAsNiAr
NTAsNyBAQCBib29sIEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAK
ICNpZiAhUExBVEZPUk0oQ09DT0EpCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5kZXgg
MTdkYTgxYjNiNzVkN2E1YWFiODIxNDg2YjdjMWUzM2YxYThkZjQ2OS4uZTcwMDgyMmZmMWZlZWJk
NzgyOWFlYzc1MGNjZTQwYTYwYjkyNTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDggQEAgZW51bSBjbGFzcyBSb3V0ZVNo
YXJpbmdQb2xpY3kgOiB1aW50OF90IHsKICAgICBMb25nRm9ybVZpZGVvCiB9OwogCi1jbGFzcyBB
dWRpb1Nlc3Npb24geworY2xhc3MgQXVkaW9TZXNzaW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Nlc3Npb24pOwog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1Nlc3Npb24mIHNoYXJlZFNl
c3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVh
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKaW5kZXggYmI3MjFh
MjNhN2ZjYzc3NGI2MDkzZTRlYTkwOGM2MGU4OTA4MTA3Yy4uNzEzNDk0YzkxNGQzMzc4NjQzZTI5
YTgwYmMzOWU3NzM2NmRmMTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQmlxdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFk
LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gICAgbG93cGFzcywg
aGlnaHBhc3MsIHNoZWx2aW5nLCBwYXJhbWV0ZXJpYywgbm90Y2gsIGFsbHBhc3MsIC4uLgogCiBj
bGFzcyBCaXF1YWQgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OiAgIAogICAgIEJpcXVhZCgpOwogICAgIH5CaXF1YWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0NvbmUuaAppbmRleCBkODFjMDVkYzY4ZTZlMmZhMjFkMjQ1ZGQxMzdiNGYxNzhhMjEyMGI0
Li5hN2FjYTNhNGM1NGQyNzRiM2FhM2Q0MGFkOWQxNDNlYmRmYzQ1ZmNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQ29uZS5oCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gQ29uZSBnYWluIGlzIGRlZmluZWQgYWNjb3JkaW5nIHRvIHRoZSBPcGVuQUwgc3Bl
Y2lmaWNhdGlvbgogCi1jbGFzcyBDb25lRWZmZWN0IHsKK2NsYXNzIENvbmVFZmZlY3QgZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbmVFZmZlY3Qo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxE
aXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxl
ci5oCmluZGV4IDZlOWY0ZTAxZGFlNmQ0NWQwMjExMWQ1ZDViMTI4ZWYzODg2YjIyNDIuLmUwYjNl
ZmQ4MGY3OGZmYWEzMDY1NzMzMjMxNDcwMmRjNzNhMmYwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVyLmgKQEAgLTQxLDcgKzQxLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0RFTk9STUFMCi1jbGFz
cyBEZW5vcm1hbERpc2FibGVyIHsKK2NsYXNzIERlbm9ybWFsRGlzYWJsZXIgZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlbm9ybWFsRGlzYWJsZXIo
KQogICAgICAgICAgICAgOiBtX3NhdmVkQ1NSKDApCkBAIC0xMDMsNyArMTA0LDggQEAgY2xhc3Mg
RGVub3JtYWxEaXNhYmxlciB7CiAKICNlbHNlCiAvLyBGSVhNRTogYWRkIGltcGxlbWVudGF0aW9u
cyBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcyBhbmQgY29tcGlsZXJzCi1jbGFzcyBEZW5vcm1hbERp
c2FibGVyIHsKK2NsYXNzIERlbm9ybWFsRGlzYWJsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlbm9ybWFsRGlzYWJsZXIoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaAppbmRleCA2
ZjJmYWY0MGU2MWJmNmUzMmE0ZjQ5OTk3NjVjOWUxYmI1MTk0MWE4Li41YzhkODY2YzE2NTVjYzM5
MWE4MjVkM2IyMzc4OGJmNDBjNzg5YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaApAQCAtMzAsMTAgKzMwLDEzIEBACiAjZGVmaW5lIERp
cmVjdENvbnZvbHZlcl9oCiAKICNpbmNsdWRlICJBdWRpb0FycmF5LmgiCisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGlyZWN0Q29u
dm9sdmVyIHsKK2NsYXNzIERpcmVjdENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlyZWN0Q29udm9sdmVyKTsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBEaXJlY3RDb252b2x2ZXIoc2l6ZV90IGlucHV0QmxvY2tT
aXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKaW5kZXggOTFk
MzQ5Yjk3ZTYyNzczMzJkNzYzMWE4ODQ0MjZiMTY2OGRjZjI4My4uYjNlYjc3OTczY2ZhNDc5NWYx
NTA1MzY5YjdlNGIyZjg5ZmZiNmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRGlzdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
aXN0YW5jZS5oCkBAIC00MCw3ICs0MCw4IEBAIGVudW0gY2xhc3MgRGlzdGFuY2VNb2RlbFR5cGUg
ewogICAgIEV4cG9uZW50aWFsCiB9OwogCi1jbGFzcyBEaXN0YW5jZUVmZmVjdCB7CitjbGFzcyBE
aXN0YW5jZUVmZmVjdCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRGlzdGFuY2VFZmZlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0Rvd25TYW1wbGVyLmgKaW5kZXggZjRiNDIwMTdlZTc2MjdjYWQ2NTZiZmY0NTdhYWU5ODk0
ODAxNGJmMi4uOTU3MGI4OTFjOTdmZmE5MTFhMDExMzQwMDNiNGZkY2I1Zjc2ZjkyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRG93blNhbXBsZXIgZG93bi1zYW1wbGVzIHRo
ZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBEb3duU2FtcGxlciB7
CitjbGFzcyBEb3duU2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRG93blNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3IuY3BwCmluZGV4IGIyNTUxOGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIu
LjUxMzc5OWE4NTEyZjQyN2I0ZTRiOGQ5YjI5NDVhOTRkMzQ5MTg3NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAt
MjcxLDggKzI3MSw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5u
ZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgbV9wcmVGaWx0ZXJQYWNrcy5jbGVh
cigpOwogICAgIG1fcG9zdEZpbHRlclBhY2tzLmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAgICBtX3ByZUZpbHRlclBh
Y2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwotICAg
ICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZp
bHRlclBhY2s0PigpKTsKKyAgICAgICAgbV9wcmVGaWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1
ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBw
ZW5kKG1ha2VVbmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7CiAgICAgfQogCiAgICAgbV9z
b3VyY2VDaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hh
bm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuaAppbmRleCBlZjhjMDkzYTFiOTY1MzIyOWQ3OTlmMWE2YjI5MmFmYWRiZGFiYWQx
Li44MjJjOTMxZjM4Y2UwZWM4ZGM2MjgyZjBmOGMzNDNhZjY3N2Y5ODRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtNDMs
OCArNDMsOSBAQCBjbGFzcyBBdWRpb0J1czsKIC8vIG9mIHRoZSBsb3VkZXN0IHBhcnRzIG9mIHRo
ZSBzaWduYWwgYW5kIHJhaXNlcyB0aGUgdm9sdW1lIG9mIHRoZSBzb2Z0ZXN0IHBhcnRzLAogLy8g
bWFraW5nIHRoZSBzb3VuZCByaWNoZXIsIGZ1bGxlciwgYW5kIG1vcmUgY29udHJvbGxlZC4KIAot
Y2xhc3MgRHluYW1pY3NDb21wcmVzc29yIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3NvciBmaW5h
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRHluYW1pY3NDb21wcmVzc29yKTsKIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgUGFy
YW1UaHJlc2hvbGQsCkBAIC05NSw5ICs5NiwxMCBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3Ig
ewogICAgIGZsb2F0IG1fbGFzdEFuY2hvcjsKICAgICBmbG9hdCBtX2xhc3RGaWx0ZXJTdGFnZUdh
aW47CiAKLSAgICB0eXBlZGVmIHN0cnVjdCB7CisgICAgc3RydWN0IFplcm9Qb2xlRmlsdGVyUGFj
azQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFpl
cm9Qb2xlIGZpbHRlcnNbNF07Ci0gICAgfSBaZXJvUG9sZUZpbHRlclBhY2s0OworICAgIH07CiAK
ICAgICAvLyBQZXItY2hhbm5lbCBlbXBoYXNpcyBmaWx0ZXJzLgogICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
S2VybmVsLmNwcAppbmRleCA3MzRiMDY2Y2RhNDhiYzJjN2E3OWVkZjUwN2QwNmMwNTZjNzBhMDkw
Li5hZmVkYjdiNGNkMGE1YTYxZDFhOWZlMjc4YzM0MDM4M2Y5OGUyMWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKIAogICAgIG1f
cHJlRGVsYXlCdWZmZXJzLmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihNYXhQcmVEZWxheUZyYW1lcykpOworICAg
ICAgICBtX3ByZURlbGF5QnVmZmVycy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+
KE1heFByZURlbGF5RnJhbWVzKSk7CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVs
OjpzZXRQcmVEZWxheVRpbWUoZmxvYXQgcHJlRGVsYXlUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAppbmRl
eCBiN2JjZWEyZmFmZDg5OTZjYTUyOGIwYjVkYWI0OWNiODg5NThkY2M0Li5lMTFmNDdiYWFmMGJj
NmM1ZDBjYTdlM2Q3MjAwODI2MzlkMjcwYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaApAQCAtMzUsNyAr
MzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbCB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwgZmluYWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IER5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbChmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dl
clBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5l
ci5oCmluZGV4IDhjZjU5OTE3OTVmM2YxZjYzZTI4MWQ5ZTE2YWNhZjNkN2E1N2E1ZGEuLjRlNDYz
YjEyODFhN2ZhM2JiMzk3YTZiMDY1Y2UwMzNjY2JmOWFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBDb21tb24gdHlwZSBvZiBzdGVyZW8gcGFubmVyIGFz
IGZvdW5kIGluIG5vcm1hbCBhdWRpbyBtaXhpbmcgZXF1aXBtZW50LgogCi1jbGFzcyBFcXVhbFBv
d2VyUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBFcXVhbFBvd2VyUGFubmVyIGZpbmFs
IDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXF1YWxQb3dlclBhbm5l
cihmbG9hdCBzYW1wbGVSYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZUQ29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRDb252b2x2ZXIuaAppbmRleCA0NTQyYjZmYjI1Nzg1NDk1YWIyMDZhYmMzYzkwYzc1YmMyZjE2
ZWEwLi4zODYyMjdmMTk3MDRhZmQ3OTJlMzY2MjJiZGRhOWMxYWNlYTc1MTA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaApAQCAtMzQsNyArMzQsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZGVENvbnZvbHZlciB7CitjbGFzcyBG
RlRDb252b2x2ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEZGVENvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gZmZ0U2l6
ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvCiAgICAgRkZUQ29udm9sdmVyKHNpemVfdCBmZnRTaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCA0YzAy
YjY5OTJiMDYzODNiODAzNTczNzg3OGRiZjY1YTI2ZmI5YzMxLi40YzE1MjA2N2Q0NGFjNGI4NTQx
OTIxYWFlZDI5NTk4MmI5NjkzNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZURnJhbWUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgRkZURnJhbWU6OmRvUGFkZGVkRkZU
KGNvbnN0IGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxG
RlRGcmFtZT4gRkZURnJhbWU6OmNyZWF0ZUludGVycG9sYXRlZEZyYW1lKGNvbnN0IEZGVEZyYW1l
JiBmcmFtZTEsIGNvbnN0IEZGVEZyYW1lJiBmcmFtZTIsIGRvdWJsZSB4KQogewotICAgIGF1dG8g
bmV3RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsK
KyAgICBhdXRvIG5ld0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUo
KSk7CiAKICAgICBuZXdGcmFtZS0+aW50ZXJwb2xhdGVGcmVxdWVuY3lDb21wb25lbnRzKGZyYW1l
MSwgZnJhbWUyLCB4KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2UuaAppbmRleCA3NTdiY2ZhNGI2YWVmZDcwZWJhZTg2NTQ4NzI1ZmE0MDYyOWM2ZTllLi5h
NTE5MzQ5ODE1MDQ1MjZkNmZjNjRkNDViOTc5MGIzNzgxMDNhNDU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhSVEZLZXJuZWw7CiAKLWNsYXNzIEhSVEZEYXRhYmFz
ZSB7CitjbGFzcyBIUlRGRGF0YWJhc2UgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhSVEZEYXRhYmFzZSk7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVy
LmNwcAppbmRleCBmNDViZTg0N2NlNzEwZGNlZGEyZTBlYzEwNmI3NWJmMjY4NTc4OWNkLi5hNDc0
YTcwYzQwODUyYWUyZTFmOWY1OGE0OWEwMDAzNjE1ODBiMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTg1LDcg
Kzg1LDcgQEAgdm9pZCBIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQoKQogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogICAgIGlmICghbV9ocnRmRGF0YWJhc2UuZ2V0KCkpIHsKICAgICAgICAg
Ly8gTG9hZCB0aGUgZGVmYXVsdCBIUlRGIGRhdGFiYXNlLgotICAgICAgICBtX2hydGZEYXRhYmFz
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7
CisgICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gbWFrZVVuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0
YWJhc2VTYW1wbGVSYXRlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKaW5kZXggYzg0YWI5NzUxYTE0NTk4OWEwMzc3ZmFk
MWY0YTc1ZThmMTdlMmIyNC4uNjA1MjMyY2QxYTk5YzkyMzNkOWFkMTA0OWJhMzA3ZTIxNzczOGZj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5j
cHAKQEAgLTI0NCw4ICsyNDQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJU
RkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1YgogICAgIGlmICgh
aXNFbGV2YXRpb25Hb29kKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAg
YXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJl
ck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlx
dWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJu
ZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRo
cyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51
bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICAvLyBMb2FkIGNvbnZvbHV0aW9uIGtlcm5lbHMg
ZnJvbSBIUlRGIGZpbGVzLgogICAgIGludCBpbnRlcnBvbGF0ZWRJbmRleCA9IDA7CkBAIC0yNzQs
NyArMjc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246
OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWIKICAgICAgICAgfQogICAgIH0KICAg
ICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtl
cm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0
TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRl
cnBvbGF0aW5nU2xpY2VzKEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24xLCBIUlRGRWxldmF0
aW9uKiBocnRmRWxldmF0aW9uMiwgZmxvYXQgeCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAgLTI4NSw4
ICsyODUsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6
Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbAogICAgICAgICAKICAgICBBU1NFUlQo
eCA+PSAwLjAgJiYgeCA8IDEuMCk7CiAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6
bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAg
YXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJl
ck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJU
Rktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0
UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CiAK
ICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdEwxID0gaHJ0ZkVsZXZhdGlvbjEtPmtlcm5l
bExpc3RMKCk7CiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5lbExpc3RSMSA9IGhydGZFbGV2YXRp
b24xLT5rZXJuZWxMaXN0UigpOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxI
UlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMo
SFJURkVsCiAgICAgLy8gSW50ZXJwb2xhdGUgZWxldmF0aW9uIGFuZ2xlLgogICAgIGRvdWJsZSBh
bmdsZSA9ICgxLjAgLSB4KSAqIGhydGZFbGV2YXRpb24xLT5lbGV2YXRpb25BbmdsZSgpICsgeCAq
IGhydGZFbGV2YXRpb24yLT5lbGV2YXRpb25BbmdsZSgpOwogICAgIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3Zl
KGtlcm5lbExpc3RSKSwgc3RhdGljX2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBX
VEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGljX2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUp
OwogfQogCiB2b2lkIEhSVEZFbGV2YXRpb246OmdldEtlcm5lbHNGcm9tQXppbXV0aChkb3VibGUg
YXppbXV0aEJsZW5kLCB1bnNpZ25lZCBhemltdXRoSW5kZXgsIEhSVEZLZXJuZWwqICZrZXJuZWxM
LCBIUlRGS2VybmVsKiAma2VybmVsUiwgZG91YmxlJiBmcmFtZURlbGF5TCwgZG91YmxlJiBmcmFt
ZURlbGF5UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZF
bGV2YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24u
aAppbmRleCAyYTk1OTA0NTUyMTg0M2ExNTE2MmVjYzhlMzIxMTczOWUwNzA1M2Y3Li5lZjc1MmMz
YzAxYmUzOWVjZGI3ZWY2NGRmNDM5MDkyNjZkNmVkOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gSFJURkVsZXZhdGlvbiBjb250YWlucyBhbGwgb2YgdGhlIEhSVEZL
ZXJuZWxzIChvbmUgbGVmdCBlYXIgYW5kIG9uZSByaWdodCBlYXIgcGVyIGF6aW11dGggYW5nbGUp
IGZvciBhIHBhcnRpY3VsYXIgZWxldmF0aW9uLgogCi1jbGFzcyBIUlRGRWxldmF0aW9uIHsKK2Ns
YXNzIEhSVEZFbGV2YXRpb24gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhSVEZFbGV2YXRpb24pOwogcHVibGljOgogICAgIEhS
VEZFbGV2YXRpb24oc3RkOjp1bmlxdWVfcHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0TCwg
c3RkOjp1bmlxdWVfcHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0UiwgaW50IGVsZXZhdGlv
biwgZmxvYXQgc2FtcGxlUmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
Rktlcm5lbC5jcHAKaW5kZXggZWRmNmM2MGQwZGI4MTRkOTRjMGY3MWI2MzA2ZTQzODI2NTNhYTRj
Ny4uMzc1NTIxNmFlMjg3YTcxYzc0MjkyOWE1M2M5NTkwOTZkYjFkYmI3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAg
SFJURktlcm5lbDo6SFJURktlcm5lbChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRT
aXplLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mZnRGcmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOworICAgIG1fZmZ0RnJhbWUg
PSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKICAgICBtX2ZmdEZyYW1lLT5kb1BhZGRl
ZEZGVChpbXB1bHNlUmVzcG9uc2UsIHRydW5jYXRlZFJlc3BvbnNlTGVuZ3RoKTsKIH0KIApAQCAt
MTAzLDcgKzEwMyw3IEBAIHNpemVfdCBIUlRGS2VybmVsOjpmZnRTaXplKCkgY29uc3QKIAogc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvQ2hhbm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3Bv
bnNlKCkKIHsKLSAgICBhdXRvIGNoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5l
bD4oZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIGNoYW5uZWwgPSBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5l
bD4oZmZ0U2l6ZSgpKTsKICAgICBGRlRGcmFtZSBmZnRGcmFtZSgqbV9mZnRGcmFtZSk7CiAKICAg
ICAvLyBBZGQgbGVhZGluZyBkZWxheSBiYWNrIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURlBhbm5lci5oCmluZGV4IGJmNWVlZmFhNWU0YzZkMmJmMTdhOTkwMDMwNzQxNjVj
NmU0MzNhZDcuLmNhYWE0NDFmMWQxNGVhMzZmNWU5NjhhZDhhNzdkMGI3YTYwZGQ5OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIUlRGUGFubmVyIDogcHVibGljIFBh
bm5lciB7CitjbGFzcyBIUlRGUGFubmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgSFJURlBhbm5lcihmbG9hdCBzYW1wbGVSYXRlLCBIUlRGRGF0YWJhc2VM
b2FkZXIqKTsKICAgICB2aXJ0dWFsIH5IUlRGUGFubmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAppbmRleCBi
YmJmMTY0NDYyMDc2MzllMzVjZjc5NTY0ODI4MjYzZDNlOTM3M2FlLi41YmY5YWI5NWQwMTU3NTAw
ODE1ZDYxMzFhYjFkODk3NDFiZTFmZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNj
YWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXIKIHsKICAgICAvLyBDcmVhdGUgZWFjaCBjaGFubmVs
J3MgcmVzYW1wbGVyLgogICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5l
bEluZGV4IDwgbnVtYmVyT2ZDaGFubmVsczsgKytjaGFubmVsSW5kZXgpCi0gICAgICAgIG1fa2Vy
bmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3Rvcikp
OworICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8U2luY1Jlc2FtcGxlcj4oc2Nh
bGVGYWN0b3IpKTsKIH0KIAogdm9pZCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVk
aW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKaW5kZXggNDQxNzU0NzYwNTgzZDI4MDM0YTQ1YjNi
ZDhhNjE4OGQ0NjVhMmYzNi4uNjE0NmU5MjVjMDZhMmRkYTc2Y2I0MTJmMGNjMWUwYTI0NmFjODBk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVs
UmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFu
bmVsUmVzYW1wbGVyLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBdWRpb0J1czsKICAgICAKLWNsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciB7CitjbGFz
cyBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOiAgIAogICAgIGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3Vi
bGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKaW5kZXggYWM3Mjg2YWM5YTA2MGI3NTM0Y2IyZWRl
OTIxZDZjYmQ3N2E5N2E4OC4uNDBiOWQwMWRjMTg0Yjk2ZDVkZjNhYjliN2Y0MDk0NjNhOTc4MzRk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCkBAIC00MywxMSAr
NDMsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4gUGFubmVyOjpjcmVhdGUoUGFubmluZ01v
ZGVsVHlwZSBtb2RlbCwgZmxvYXQgc2FtcGxlUmF0ZSwKIAogICAgIHN3aXRjaCAobW9kZWwpIHsK
ICAgICBjYXNlIFBhbm5pbmdNb2RlbFR5cGU6OkVxdWFscG93ZXI6Ci0gICAgICAgIHBhbm5lciA9
IHN0ZDo6bWFrZV91bmlxdWU8RXF1YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CisgICAgICAg
IHBhbm5lciA9IG1ha2VVbmlxdWU8RXF1YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGOgotICAgICAgICBw
YW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNl
TG9hZGVyKTsKKyAgICAgICAgcGFubmVyID0gbWFrZVVuaXF1ZTxIUlRGUGFubmVyPihzYW1wbGVS
YXRlLCBkYXRhYmFzZUxvYWRlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmgKaW5kZXggY2Rh
NzJlOGFiM2M0Y2RjMGE4NjhmYWFjNGYwNWNlNjFjNDQ0MDJkMC4uNDYzNWE2NzMzZWNjM2YzYTA3
NTAyZmM3YTc1MDE3M2UzM2UxMWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUF1ZGlvRGF0YSgpID0g
ZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb24uY3BwCmluZGV4IGUwMjM5NGFhNWIxNDljZDE1OTY5MTJhMjU2ODFm
ZjVlYTQ0YWQ4ZDIuLmM4YmQ2NGE0MWJmNjEyZTg5ZTNjMjE0ZmEyMmRjYzU5OTQ4ZTU0ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9u
VG9TdHJpbmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAog
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
LmNwcAppbmRleCAzMDQzZmM4YTA0ZGYwZDc3YzEwYWEwMzc5YmQyNmEzOWQ0NmNlNmJhLi44YTY3
NTVjNTRhZDAwYTNhODEwMTg3NDIxNjJjY2QwNzRkZTEwZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFJldmVyYjo6
aW5pdGlhbGl6ZShBdWRpb0J1cyogaW1wdWxzZVJlc3BvbnNlQnVmZmVyLCBzaXplX3QgcmVuZGVy
U2xpY2VTaXplLAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUmVzcG9uc2VDaGFubmVs
czsgKytpKSB7CiAgICAgICAgIEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCA9IGltcHVsc2VSZXNwb25z
ZUJ1ZmZlci0+Y2hhbm5lbChpKTsKIAotICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8UmV2ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNpemUsIG1h
eEZGVFNpemUsIGNvbnZvbHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcykpOwor
ICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5kKG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9sdmVyPihj
aGFubmVsLCByZW5kZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJlbmRlclBoYXNl
LCB1c2VCYWNrZ3JvdW5kVGhyZWFkcykpOwogCiAgICAgICAgIGNvbnZvbHZlclJlbmRlclBoYXNl
ICs9IHJlbmRlclNsaWNlU2l6ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYi5oCmluZGV4IDNlMjU3NmIzNTc1N2RiYTI0NzBjOGViN2RhM2MxN2JlZWJiZmRjZWQuLjIz
NGUzMWRhZWJiZDRkZGFhMzZhMWU5MDUzMTFlYjk5MjJmYWE2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYi5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQnVzOwog
ICAgIAogLy8gTXVsdGktY2hhbm5lbCBjb252b2x1dGlvbiByZXZlcmIgd2l0aCBjaGFubmVsIG1h
dHJpeGluZyAtIG9uZSBvciBtb3JlIFJldmVyYkNvbnZvbHZlciBvYmplY3RzIGFyZSB1c2VkIGlu
dGVybmFsbHkuCiAKLWNsYXNzIFJldmVyYiB7CitjbGFzcyBSZXZlcmIgZmluYWwgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0geyBNYXhGcmFtZVNpemUg
PSAyNTYgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkFjY3VtdWxhdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKaW5kZXggNTEyYjZhZGUzNDFhMjg1Njk3MmVlM2Y3YmNi
MjExNjZiYjcyMWExZi4uYTYyODM1ZjljMGQ3ZDc0M2M5ZTkyN2NlZGUyZDZhMWRhNDU1ODQxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0
aW9uQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyLmgKQEAgLTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Ly8gUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIGlzIGEgY2lyY3VsYXIgZGVsYXkgYnVmZmVyIHdp
dGggb25lIGNsaWVudCByZWFkaW5nIGZyb20gaXQgYW5kIG11bHRpcGxlIGNsaWVudHMKIC8vIHdy
aXRpbmcvYWNjdW11bGF0aW5nIHRvIGl0IGF0IGRpZmZlcmVudCBkZWxheSBvZmZzZXRzIGZyb20g
dGhlIHJlYWQgcG9zaXRpb24uICBUaGUgcmVhZCBvcGVyYXRpb24gd2lsbCB6ZXJvIHRoZSBtZW1v
cnkKIC8vIGp1c3QgcmVhZCBmcm9tIHRoZSBidWZmZXIsIHNvIGl0IHdpbGwgYmUgcmVhZHkgZm9y
IGFjY3VtdWxhdGlvbiB0aGUgbmV4dCB0aW1lIGFyb3VuZC4KLWNsYXNzIFJldmVyYkFjY3VtdWxh
dGlvbkJ1ZmZlciB7CitjbGFzcyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJldmVyYkFj
Y3VtdWxhdGlvbkJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXggMTQ1ZGY4MWUyYTZiYTJj
MmRhYTliYjQxZTZiNWNhYmFmMzg1ZjkxYy4uYTljOTM1YzFhMjg1YWIxMzYyZDhmZjFkZjhjZWJh
NWE3ZTVhYTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJi
Q29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xp
CiAKICAgICAgICAgYm9vbCB1c2VEaXJlY3RDb252b2x2ZXIgPSAhc3RhZ2VPZmZzZXQ7CiAKLSAg
ICAgICAgYXV0byBzdGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+
KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCByZXZlcmJUb3RhbExhdGVuY3ksIHN0YWdl
T2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRlclBoYXNlLCByZW5kZXJTbGljZVNpemUs
ICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVyKTsKKyAgICAgICAgYXV0
byBzdGFnZSA9IG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+KHJlc3BvbnNlLCB0b3Rh
bFJlc3BvbnNlTGVuZ3RoLCByZXZlcmJUb3RhbExhdGVuY3ksIHN0YWdlT2Zmc2V0LCBzdGFnZVNp
emUsIGZmdFNpemUsIHJlbmRlclBoYXNlLCByZW5kZXJTbGljZVNpemUsICZtX2FjY3VtdWxhdGlv
bkJ1ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVyKTsKIAogICAgICAgICBib29sIGlzQmFja2dyb3Vu
ZFN0YWdlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmgKaW5kZXggNWI4MTllMWEzZTZmNGZiMWY4ZGIwYzU5Njk3MjYyYWFjMDlj
NmJkZS4uMzIwMGI0NWVhOGRmN2MyMWNlNmZhMzdlMDhiYjI3OTFmOGFlNWY2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKQEAgLTQzLDgg
KzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0NoYW5uZWw7CiAKLWNs
YXNzIFJldmVyYkNvbnZvbHZlciB7CitjbGFzcyBSZXZlcmJDb252b2x2ZXIgZmluYWwgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJldmVy
YkNvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gbWF4RkZUU2l6ZSBjYW4gYmUgYWRqdXN0ZWQg
KGZyb20gc2F5IDIwNDggdG8gMzI3NjgpIGRlcGVuZGluZyBvbiBob3cgbXVjaCBwcmVjaXNpb24g
aXMgbmVjZXNzYXJ5LgogICAgIC8vIEZvciBjZXJ0YWluIHR3ZWFreSBkZS1jb252b2x2aW5nIGFw
cGxpY2F0aW9ucyB0aGUgcGhhc2UgZXJyb3JzIGFkZCB1cCBxdWlja2x5IGFuZCBsZWFkIHRvIG5v
bi1zZW5zaWNhbCByZXN1bHRzIHdpdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAppbmRleCAwZmRlNDIxYWYyZjgyZmQ0
ODc0ZDk0ZjZhZjFkNjM0NzIzOWM2NTZlLi40ZmY5NTNiMjYwNDkxN2QzNDUyMDM5NDA1YjY1ZGUy
YmQ1YTFlYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXJTdGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCkBAIC01NSwxNiArNTUsMTYgQEAgUmV2ZXJiQ29udm9s
dmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKGNvbnN0IGZsb2F0KiBpbXB1bHNlUmVzcG9u
c2UsIHNpemVfdCwKICAgICBBU1NFUlQoYWNjdW11bGF0aW9uQnVmZmVyKTsKIAogICAgIGlmICgh
bV9kaXJlY3RNb2RlKSB7Ci0gICAgICAgIG1fZmZ0S2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxG
RlRGcmFtZT4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0S2VybmVsID0gbWFrZVVuaXF1ZTxGRlRG
cmFtZT4oZmZ0U2l6ZSk7CiAgICAgICAgIG1fZmZ0S2VybmVsLT5kb1BhZGRlZEZGVChpbXB1bHNl
UmVzcG9uc2UgKyBzdGFnZU9mZnNldCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2ZmdENvbnZv
bHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RkZUQ29udm9sdmVyPihmZnRTaXplKTsKKyAgICAgICAg
bV9mZnRDb252b2x2ZXIgPSBtYWtlVW5pcXVlPEZGVENvbnZvbHZlcj4oZmZ0U2l6ZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFzdGFnZU9mZnNldCk7CiAgICAgICAgIEFTU0VSVChz
dGFnZUxlbmd0aCA8PSBmZnRTaXplIC8gMik7CiAKLSAgICAgICAgbV9kaXJlY3RLZXJuZWwgPSBz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIpOworICAgICAgICBt
X2RpcmVjdEtlcm5lbCA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihmZnRTaXplIC8gMik7
CiAgICAgICAgIG1fZGlyZWN0S2VybmVsLT5jb3B5VG9SYW5nZShpbXB1bHNlUmVzcG9uc2UsIDAs
IHN0YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9kaXJlY3RDb252b2x2ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERpcmVjdENvbnZvbHZlcj4ocmVuZGVyU2xpY2VTaXplKTsKKyAgICAgICAgbV9kaXJlY3RD
b252b2x2ZXIgPSBtYWtlVW5pcXVlPERpcmVjdENvbnZvbHZlcj4ocmVuZGVyU2xpY2VTaXplKTsK
ICAgICB9CiAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYWxsb2NhdGUocmVuZGVyU2xpY2VTaXplKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyU3RhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
clN0YWdlLmgKaW5kZXggYTA0OTA5NzAzNDBhYjNiMzM2MDBiMDg5ZTU5ODQ3NGZiM2Q0NTVlNi4u
M2MwM2JlMzQxYjNiN2Q2NDYyMWRjODAzODE2NjkzNjBmNGRiNGM5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCkBAIC00
Miw3ICs0Miw3IEBAIGNsYXNzIERpcmVjdENvbnZvbHZlcjsKICAgICAKIC8vIEEgUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UgcmVwcmVzZW50cyB0aGUgY29udm9sdXRpb24gYXNzb2NpYXRlZCB3aXRoIGEg
c3ViLXNlY3Rpb24gb2YgYSBsYXJnZSBpbXB1bHNlIHJlc3BvbnNlLgogLy8gSXQgaW5jb3Jwb3Jh
dGVzIGEgZGVsYXkgbGluZSB0byBhY2NvdW50IGZvciB0aGUgb2Zmc2V0IG9mIHRoZSBzdWItc2Vj
dGlvbiB3aXRoaW4gdGhlIGxhcmdlciBpbXB1bHNlIHJlc3BvbnNlLgotY2xhc3MgUmV2ZXJiQ29u
dm9sdmVyU3RhZ2UgeworY2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgZmluYWwgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIHJlbmRlclBoYXNlIGlzIHVz
ZWZ1bCB0byBrbm93IHNvIHRoYXQgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIHByZSB2ZXJzdXMgcG9z
dCBkZWxheSBzbyB0aGF0IHN0YWdlcyB3aWxsIHBlcmZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCmluZGV4IGJiMDZlNGVlZDYzM2Yw
ZTdjNjgyZTIwZTRlNmE1NzJhYTFmYWE5NjYuLmFmOWVkMDBkNzMzZTg0MmI2ZWQzYTY0NzQ4NTQy
MGQzYzc2Nzc1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiSW5wdXRCdWZmZXIuaApAQCAtMzQsNyArMzQsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBSZXZlcmJJbnB1dEJ1ZmZlciBpcyB1c2VkIHRvIGJ1ZmZlciBpbnB1dCBzYW1wbGVzIGZv
ciBkZWZlcnJlZCBwcm9jZXNzaW5nIGJ5IHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMuCi1jbGFzcyBS
ZXZlcmJJbnB1dEJ1ZmZlciB7CitjbGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciBmaW5hbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmV2ZXJiSW5w
dXRCdWZmZXIoc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1NpbmNSZXNhbXBsZXIuaAppbmRleCAyZmNkODlmN2VjYTM3NTg1ODYzMWE5YjI3NjVhMTBk
MjAxYjM0MWM3Li5jMTMyZjVkOTc2MmM3NTY2YjIzMjVjMDY0YjI4ZGU4YjZlMzkwMWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCkBAIC0zNiw3
ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gU2luY1Jlc2FtcGxlciBpcyBhIGhp
Z2gtcXVhbGl0eSBzYW1wbGUtcmF0ZSBjb252ZXJ0ZXIuCiAKLWNsYXNzIFNpbmNSZXNhbXBsZXIg
eworY2xhc3MgU2luY1Jlc2FtcGxlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6ICAgCiAgICAgLy8gc2NhbGVGYWN0b3IgPT0gc291cmNlU2FtcGxlUmF0ZSAv
IGRlc3RpbmF0aW9uU2FtcGxlUmF0ZQogICAgIC8vIGtlcm5lbFNpemUgY2FuIGJlIGFkanVzdGVk
IGZvciBxdWFsaXR5IChoaWdoZXIgaXMgYmV0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9VcFNhbXBsZXIuaAppbmRleCAyNjZiY2FmOTgwZDcyNmZhMmY2MzdjZmU5M2E1ZDRjMzhi
MjRlZTA2Li42NzVlZTRhZDBjNDQ2N2NkMWRkNmQxZDUxNjExZTc3Yjk4YzRjNjNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaApAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVwU2FtcGxlciB1cC1zYW1wbGVzIHRoZSBzb3VyY2Ug
c3RyZWFtIGJ5IGEgZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBVcFNhbXBsZXIgeworY2xhc3MgVXBT
YW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBVcFNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCmluZGV4IDgzMWRlOTA5M2IwMDU2MTZiNGJkNzdl
YTdiMDc3OGMzN2RhYTdiNmUuLjAyZmZhY2Q1ZWFjYTdjZTI3NTg5MmJlOGQ2NDM5NGM3MzNkYzdk
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaApAQCAtMzMsNyAr
MzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFplcm9Qb2xlIGlzIGEgc2ltcGxlIGZp
bHRlciB3aXRoIG9uZSB6ZXJvIGFuZCBvbmUgcG9sZS4KIAotY2xhc3MgWmVyb1BvbGUgeworY2xh
c3MgWmVyb1BvbGUgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFplcm9Qb2xlKCkKICAgICAgICAgOiBtX3plcm8oMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKaW5k
ZXggODZiNjVhMjI1M2FmMWFlYjJhMWNhOWNhYTM2Njc4NmNkN2Q2NTUyMC4uOGE3ZTdhMDNhYzMz
YTRlNTVjNDNjMzFhZWM2MzdiMTg5Y2IxYzdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb247CiAKLWNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlv
RGF0YSB7CitjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3QgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1B
dWRpb0RhdGEgewogcHVibGljOgogICAgIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24mKTsKICAgICBXRUJDT1JFX0VYUE9SVCBXZWJBdWRpb0J1ZmZlckxp
c3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgdWludDMyX3Qgc2FtcGxlQ291bnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IDViZjhmZGE2
YjI5MTJiMThmMTE5MGRjYmU3MDgyYmY2ODRiZWU5OGYuLjFhNTQ5NWZkNzY0ZDljM2NjNmVkYjU4
MWZhNDgwZWFlYWQxNDU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
ci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+
IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAo
bnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxz
IiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVS
YXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXI+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0
IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAK
aW5kZXggOGFmODc3ZWMyYzRjYTBhYmQzMDc0ODM1ZjU0YjM0YWViZjA0MzNhMi4uNGJkZTdlNDFl
MmI2NDM3Y2QwZmY3MjVlNGQwNzlkNjhmODllN2RjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAt
ODAsNyArODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0
aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91
dHB1dENoYW5uZWxzICE9IDIpCiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246
OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ss
IHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+
KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFy
ZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmluZGV4IGRjNmM4YmNjZTM2OWQwNmFlZGM4ZmQzMzNj
NzM4YzBiZTk1NzVkZDQuLjYzOTgyNDBiYmQ4ZDk2NzMwMmRmN2U5ZWNmZjQwNzUwMmRhNmUyMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Np
b25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vz
c2lvbklPUy5tbQpAQCAtNTksNiArNTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY2F0ZWdvcnlO
YW1lKEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogI2VuZGlmCiAKIGNsYXNz
IEF1ZGlvU2Vzc2lvblByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKik7CiAgICAgQXVkaW9T
ZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlOwpAQCAtNzEsNyArNzIsNyBA
QCBBdWRpb1Nlc3Npb25Qcml2YXRlOjpBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiop
CiB9CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KHRoaXMpKQorICAgIDogbV9wcml2YXRl
KG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcAppbmRleCA3NjRhMzQ3Zjk4MjllMWU4NDc1YmQyZWExMjgwYWExNzUwMjZlY2ZjLi45
ZmU2NGJhYWE0Nzg0ZmVjZGFiM2Q2ZGRiNWUyNzgzODFlMWUwNzAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0
aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0
ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihj
YWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5h
dGlvbk1hYz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0
aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggNzdkNDMx
NjU2Njk5MGU5MDFiOTIwYmY3NzhkOTY5ZTlmMThmMTg4YS4uNDFhZmUzOWYyMzJhZTU4ODA4NjBm
MDg0ZDU1NmNiNGE1ZDhhZTI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xMDgsNyArMTA4
LDcgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdChjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGYKIHsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBs
ZVJhdGUoKSA+PSAwKTsKIAotICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOworICAgIG1faW5wdXREZXNjcmlw
dGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOwogICAg
IGlmIChtX291dHB1dERlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gc2V0dXBDb252ZXJ0ZXIo
KTsKIApAQCAtMTIwLDkgKzEyMCw5IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
c2V0T3V0cHV0Rm9ybWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYKICAgICBBU1NF
UlQobV9pbnB1dERlc2NyaXB0aW9uKTsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+
PSAwKTsKIAotICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0g
bWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKCFt
X3JpbmdCdWZmZXIpCi0gICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FS
aW5nQnVmZmVyPigpOworICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1
ZmZlcj4oKTsKIAogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoZm9ybWF0LCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KG1fbWF4aW11bVNhbXBsZUNvdW50KSk7CiAgICAgbV9zY3JhdGNoQnVmZmVyID0g
QXVkaW9TYW1wbGVCdWZmZXJMaXN0OjpjcmVhdGUobV9vdXRwdXREZXNjcmlwdGlvbi0+c3RyZWFt
RGVzY3JpcHRpb24oKSwgbV9tYXhpbXVtU2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAppbmRleCA3ZjZl
ZjlkMzNkYjFmYjQ3ZTdjZjE0YzU5MDRhNDYxMTJiMTUyMjMyLi5jYzA0ZjBiZTMwOTc0OThiODM2
NmU5MjQyMDczZWNlM2UxOTc1YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcApAQCAtNjIsNyArNjIsNyBAQCBjbGFz
cyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9u
KCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+
KGlzTXV0ZWQoKSkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2
YXRlPihpc011dGVkKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKaW5kZXggMThhMjZhYjZkYzVjOGRkMDEyNTJkYjA2NDZk
NGY1YjliNDdiNmZmNS4uMDRhY2VmYzhkYWFkNzEzMjhhNGRkZmFiYmQwNGFmOWVjZDhlYjk1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIu
aApAQCAtMzksNiArMzksNyBAQCB0eXBlZGVmIHN0cnVjdCBBdWRpb0J1ZmZlckxpc3QgQXVkaW9C
dWZmZXJMaXN0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQVJpbmdCdWZmZXJTdG9y
YWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DQVJpbmdCdWZmZXJTdG9yYWdlKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBhbGxv
Y2F0ZShzaXplX3QpID0gMDsKQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVyU3Rv
cmFnZSB7CiAgICAgdmlydHVhbCB2b2lkKiBkYXRhKCkgPSAwOwogfTsKIAotY2xhc3MgQ0FSaW5n
QnVmZmVyU3RvcmFnZVZlY3RvciA6IHB1YmxpYyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKK2NsYXNz
IENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IgZmluYWwgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3Rv
cmFnZSB7CiBwdWJsaWM6CiAgICAgfkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2Rl
ckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcApp
bmRleCBiOTgwM2JmYTAyMzI0MzU3YzBkZmUwNDczMTNkMmMzZWMzMDRjYjkyLi43YTQ3ZjU2MDhi
YmI2ZGU5ZDM3NzNiMTdlOThlNDc2NGEyNDIyMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckNGPihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxLZXllZERlY29kZXJDRj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2Rl
ckNGOjpLZXllZERlY29kZXJDRihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCAxYTYy
N2VhMDBiOTJjYmFhNmNmN2MzNTVkNWU0NDVlYzQ4NjFhNDEyLi40NDczZWMyOGQwNGM1NDM2MzIz
YzA3ZDM3YmYyYzljZDdkZWQyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJDRj4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJDRj4oKTsKIH0KIAogc3RhdGljIFJldGFpblB0
cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVEaWN0aW9uYXJ5KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApp
bmRleCBiNjg5MjI4MDVlNWQzNzNkZTdmMGFlZDc4OTA4MjVhY2NjYzEyMDM5Li4wN2E0NWNhZDc4
YjZkNDM3ZmFhODQyNTI2OTljMGQ0ODZkNzhlZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC01Nyw3ICs1
Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9ic2VydmVyOwogICAgIGlmICghcG93
ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93
ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CisgICAgICAgIHBvd2Vy
T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRUaW1lciku
cmVsZWFzZSgpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCBy
ZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIXJl
Z2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5tbQppbmRleCAxMmFiMzIxY2I0NzcyYmU3MDAxNTAwZjE5NmY3OGI2ZWJlNWUyYmQ1Li4w
NWM1NTI0ZGVmYzc3NzYxMWRmNzVmNDliMTkxZDdmZDY5ZjQ1ODQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5tbQpAQCAtNjUsNyArNjUsNyBAQCBib29sIE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cj4oKTsKIH0KIAogdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6aW5pdGlhbGl6
ZShjb25zdCBVUkwqIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggYWUwYmQy
MDljY2Q2ZjMxN2M5MTkzMjVhMTZhMThhOTljZDE1NzJlNC4uMGQyYTYyMTg2YjVhNTRlMmI4NTFm
Zjk2ZDUyODEwMWY4NDY2ZjQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTUw
LDcgKzUwLDcgQEAgYm9vbCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4gUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBjYW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9s
bGVyLm1tCmluZGV4IGU4MzY5YzZlNTAxNmUyM2NmODczYjk1MzdkMmFmYjRmMGJjNjg1MjIuLjhm
ZTM4YWQwY2NlMmZkNTQyZDI5NzAxN2ZkYTJkMWNiMzU1Yjc3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtNjIwLDcgKzYy
MCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3Jv
bGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yCiAgICAgICAgIGlmIChzbmFwUG9pbnRzLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7CisgICAgICAg
IG1fc2Nyb2xsU25hcFN0YXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4o
KTsKICAgICB9CiAKICAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkgJiYgbV9zY3JvbGxTbmFw
U3RhdGUtPnNuYXBPZmZzZXRzRm9yQXhpcyhvdGhlclNjcm9sbEV2ZW50QXhpcyhheGlzKSkuaXNF
bXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDUwM2Y5N2I5MjAxOGRh
ODdjMjQ4ODkxYjIyNjc5YWJiNzAwNWIzMDAuLjk2Yzg1MTI5MzVhYjliNjk4ZTg5ODU1MTYzYmI2
ZDIyYWM5YjgyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTMwMyw3ICsz
MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9yeUNsZWFyS2V5Ojpj
cmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZQogI2Vsc2UKICAgICBBU1NFUlQoc3VwcG9y
dHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJp
dmF0ZUNsZWFyS2V5PigpOwogfQogCiBib29sIENETUZhY3RvcnlDbGVhcktleTo6c3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aAppbmRleCBkNDczMDRjOTViMjZlZjIwNGY1ZGE0YWRjYmI4YTA4NjRkZTE4YmIzLi4wYjkxMDY0
OWNhNGE0N2E5MTVkNTQ4YzlkOTRhZmZmMzM1MzU5MjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RN
RmFjdG9yeUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5Q2xlYXJLZXkm
IHNpbmdsZXRvbigpOwogCkBAIC01NCw2ICs1NSw3IEBAIGNsYXNzIENETUZhY3RvcnlDbGVhcktl
eSBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAKIGNsYXNzIENETVByaXZhdGVDbGVh
cktleSBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFsIH5D
RE1Qcml2YXRlQ2xlYXJLZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLm1tCmluZGV4IGY3MjBjZmQzMzQzZjliYWQzM2E0OTE5YTc4Zjg2NmY5ZDg2MmEwYWQuLjVh
NmViNDA0MzllZjU5MDU3MmE3YzI5ZWZjMzM4ZDkyZjIzOWM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdhbWVD
b250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xs
ZXIgKmNvbnRyb2xsZQogICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJv
dmlkZXIgY29udHJvbGxlciAlcCBhZGRlZCIsIGNvbnRyb2xsZXIpOwogCiAgICAgdW5zaWduZWQg
aW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgYXV0byBnYW1lcGFk
ID0gc3RkOjptYWtlX3VuaXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGlu
ZGV4KTsKKyAgICBhdXRvIGdhbWVwYWQgPSBtYWtlVW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBh
ZD4oY29udHJvbGxlciwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkg
PD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKaW5kZXgg
MTVmMDRjNzA4ZTkwMDdiYjRkYWRlZTU0MzVjMzU3ZjAyZjUzMWM5My4uYTI1MjM0ZmI4NzVhNzUx
YzYzYzM3YmE2YTVjZWU3ZDQ1MzRkNWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgSElER2FtZXBhZEVsZW1lbnQgeworICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBISURHYW1lcGFkRWxlbWVudChkb3VibGUgdGhlTWlu
LCBkb3VibGUgdGhlTWF4LCBJT0hJREVsZW1lbnRSZWYgZWxlbWVudCkKICAgICAgICAgOiBtaW4o
dGhlTWluKQogICAgICAgICAsIG1heCh0aGVNYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCA1
NzQzOTFiNWMxMTFhMzJiZTkxMjVjYTZjZTA2MDBmNWQ2MzgyMjU3Li42ZDE0YjZiMjE2MTBiODZj
ZTRjMDAxM2U1MDkxMWI4OGY5NWUxYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTE4Nyw3
ICsxODcsNyBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZp
Y2VSZWYgZGV2aWNlKQogICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmlj
ZSAlcCBhZGRlZCIsIGRldmljZSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3
bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gZ2Ft
ZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8SElER2FtZXBhZD4oZGV2aWNlLCBpbmRleCk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQgPSBtYWtlVW5pcXVlPEhJREdhbWVw
YWQ+KGRldmljZSwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0g
aW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmlj
LmNwcAppbmRleCBhNGEzMGI1MmFiZTQ4YWY4NTBkYzdjNzQ3YTNiY2RlMWQ1MWZkYTVmLi4wZTU5
NzIzMjFiNWY3M2Y1NzJiZDc5NjU4ODExZjAwM2E5NWVkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgY2xhc3MgS2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlvbmFyeSB7CiAg
ICAgdXNpbmcgTm9kZSA9IFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBib29sLCB1aW50MzJfdCwg
dWludDY0X3QsIGludDMyX3QsIGludDY0X3QsIGZsb2F0LCBkb3VibGUsIFN0cmluZywgc3RkOjp1
bmlxdWVfcHRyPERpY3Rpb25hcnk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+PjsKIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYga2V5LCBUJiYg
dmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxOb2RlPihzdGQ6OmZvcndh
cmQ8VD4odmFsdWUpKSk7IH0KKyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZh
bHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZh
bHVlKSkpOyB9CiAgICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiAqbV9t
YXAuZ2V0KGtleSk7IH0KIAogcHJpdmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGJvb2wg
cmVhZFNpbXBsZVZhbHVlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIsIEtleWVk
RGVjb2RlckdlbmUKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVy
OjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNpemUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNpemUpOwogfQog
CiBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQpAQCAtODYsNyArODYsNyBAQCBLZXllZERlY29kZXJHZW5lcmlj
OjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
ICAgIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGUgdHlwZTsKICAgICBTdHJpbmcga2V5OwogCi0g
ICAgbV9yb290RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAg
ICBtX3Jvb3REaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgIG1fZGlj
dGlvbmFyeVN0YWNrLmFwcGVuZChtX3Jvb3REaWN0aW9uYXJ5LmdldCgpKTsKIAogICAgIGJvb2wg
b2sgPSB0cnVlOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVk
RGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAg
ICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byog
Y3VycmVudERpY3RpbmFyeSA9IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAg
IGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAg
ICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsK
ICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9uYXJ5LmdldCgp
KTsKICAgICAgICAgICAgIGN1cnJlbnREaWN0aW5hcnktPmFkZChrZXksIFdURk1vdmUobmV3RGlj
dGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYsMTMgKzE1NiwxMyBAQCBLZXll
ZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogICAgICAgICAgICAgb2sgPSByZWFkU3RyaW5nKGRlY29kZXIsIGtleSk7
CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgYXV0byBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXk+KCk7CisgICAgICAgICAg
ICBhdXRvIG5ld0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheT4oKTsKICAgICAgICAgICAgIG1fYXJy
YXlTdGFjay5hcHBlbmQobmV3QXJyYXkuZ2V0KCkpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5
U3RhY2subGFzdCgpLT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0FycmF5KSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6
OkJlZ2luQXJyYXlFbGVtZW50OiB7Ci0gICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBz
dGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0RpY3Rp
b25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgICAgICAgICBtX2RpY3Rpb25h
cnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7CiAgICAgICAgICAgICBtX2FycmF5
U3RhY2subGFzdCgpLT5hcHBlbmQoV1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7CiAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDJmODQxMDQ3NDYzOTU1OGYyOTVlODFhNTE3MTlh
ODczNGIzMmQ1OGEuLjIxY2MxZWJlNGE5MDFhMTNjNzQ0MDNkYzAxY2YyZmM4MTgxMzAxMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJpYz4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmljPigpOwogfQogCiB2b2lkIEtleWVk
RW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcAppbmRleCA3YWU2NWM1YThkMzA5ZTNkZWVmNTNjZThjZjFlMzAyNDI2ZDI3YzE0Li4y
MDhhZjdiODQ3OWVjYWVmNTUzMGNjYzU1N2I3MzZlYmFiY2JjYjhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMu
Y3BwCkBAIC00NCwxNCArNDQsMTQgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc2Nyb2xsQ2FwdHVy
ZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+
IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Ny
b2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yR2VuZXJp
Yz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBTY3Jv
bGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1h
dGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpvdmVybGF5U2Nyb2xsYmFy
QW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFyZWEsIFt0aGlz
XShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFyZWEsIFt0aGlzXShG
bG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICAg
ICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRp
b24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQog
ICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zbW9v
dGhBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9z
Y3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBvaW50JiYgcG9z
aXRpb24pIHsKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0
aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZs
b2F0UG9pbnQmJiBwb3NpdGlvbikgewogICAgICAgICB1cGRhdGVQb3NpdGlvbihXVEZNb3ZlKHBv
c2l0aW9uKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZERlY29kZXJHbGliLmNwcAppbmRleCBlN2RkMTkxNDA0MTcxOTY4ZjkwZDZmZWEzMzU0
ZTE0Y2VmNmY1NTY3Li4zNjFlOWRmMzI0NWJlNTY1YjBlMmE0MWRmMThiMjZmZmJjNzE5Y2Q3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9w
dHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNv
ZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVy
R2xpYj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckdsaWI6OktleWVkRGVjb2Rlckds
aWIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3NDA0YmNiZDQ0OWFh
NDkyMWI4Y2UyYjdlMDE4NDQ5NTAxMDZmNjgwLi43MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUw
MDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckdsaWI+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyR2xpYj4oKTsKIH0KIAogS2V5ZWRFbmNvZGVy
R2xpYjo6S2V5ZWRFbmNvZGVyR2xpYigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZjFjOTBlNTk4ODkzYWRhODM0NzlmYzdiMzgz
YTkwYTUzNWJmMmE5OS4uYjJiZDQ3Y2IxNjE0Y2RhZTVkODllZWExN2I0MmM0Nzg2YmMyZDliMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNsZWFyVGltZXIoKQogdm9p
ZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAgIEFTU0VSVCgh
bV9mcmFtZVRpbWVyKTsKLSAgICBtX2ZyYW1lVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVy
PigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKKyAgICBtX2ZyYW1lVGlt
ZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0
aW9uKTsKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKQEAgLTUx
OSw3ICs1MTksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiB2b2lkIEJp
dG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFtX2RlY29kaW5nQ2FsbGJhY2tzKQotICAgICAgICBtX2RlY29kaW5nQ2FsbGJhY2tz
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+KCk7CisgICAg
ICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBtYWtlVW5pcXVlPFZlY3RvcjxGdW5jdGlvbjx2b2lk
KCk+LCAxPj4oKTsKIAogICAgIG1fZGVjb2RpbmdDYWxsYmFja3MtPmFwcGVuZChXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDBkMzU1NjE4OTcwZmIyNzdmNzJl
Nzg5OTBlM2Y0ZjJhMjE2ZmJjNjkuLjM1M2ZjYTY2MDEzMjY0YjAyNDYyYTU3MTIyNGQwNWExODFk
OTY4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBUZXh0
TGF5b3V0IHsKICAgICBUZXh0TGF5b3V0KFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250LCBmbG9hdCB4UG9zKQogICAgICAgICA6IG1fZm9udChmb250KQogICAgICAgICAs
IG1fcnVuKGNvbnN0cnVjdFRleHRSdW4odGV4dCwgeFBvcykpCi0gICAgICAgICwgbV9jb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleFRleHRDb250cm9sbGVyPihtX2ZvbnQsIG1fcnVu
LCB0cnVlKSkKKyAgICAgICAgLCBtX2NvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb21wbGV4VGV4dENv
bnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCA3MjA0NTNkOWYw
NDZkNzlmNDhhMDliODFhZjcwMDBmNGRlM2JlMDI1Li5jZWZkOGQ0MjI0NGQwNmZjYjgyNGJlNWUz
YjczNDE5Y2Q0OThhNGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludC5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50
U2l6ZTsKIAogY2xhc3MgRmxvYXRQb2ludCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCgpIHsgfQogICAgIEZsb2F0UG9pbnQoZmxvYXQgeCwg
ZmxvYXQgeSkgOiBtX3goeCksIG1feSh5KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKaW5kZXggMTg0YjQ0YjA3YTQxMjIxNmI5ZWM1OTg0MjJmMDc4N2YwZTZj
N2FlYi4uZTBiNDlmMjQ3YzIwMDliZGQ1ZjFkMGM4ZWJhN2FkNmM3ZWI4Y2JkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTM5NCw3ICszOTQsNyBAQCBH
bHlwaERhdGEgRm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKSBj
b25zdAogYXV0byBGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEoKSBjb25zdCAtPiBEZXJpdmVk
Rm9udHMmCiB7CiAgICAgaWYgKCFtX2Rlcml2ZWRGb250RGF0YSkKLSAgICAgICAgbV9kZXJpdmVk
Rm9udERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRGb250cz4oKTsKKyAgICAgICAgbV9k
ZXJpdmVkRm9udERhdGEgPSBtYWtlVW5pcXVlPERlcml2ZWRGb250cz4oKTsKICAgICByZXR1cm4g
Km1fZGVyaXZlZEZvbnREYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKaW5kZXggMmU1OGJkNjllYmI1MzkxZTAzNmQyOGMyNzAyYzFmNDUwNTA4YjMxMi4uNTQ0
YjBiNzExOGFiMmY5MDgwNzQ5ZTQ0MWU1MTQ5ZjA1MThmMmUxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMjY5LDkgKzI2OSw3IEBAIGNsYXNzIEZvbnQgOiBw
dWJsaWMgUmVmQ291bnRlZDxGb250PiB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBEZXJpdmVkRm9u
dHMgewotI2lmICFDT01QSUxFUihNU1ZDKQotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLSNlbmRpZgorICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgogCiAgICAgICAgIFJlZlB0cjxGb250PiBzbWFsbENhcHNGb250OwpAQCAtMzQ1LDcg
KzM0Myw3IEBAIEFMV0FZU19JTkxJTkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0ZvckdseXBoKEds
eXBoIGdseXBoKSBjb25zdAogCiAgICAgYm91bmRzID0gcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChn
bHlwaCk7CiAgICAgaWYgKCFtX2dseXBoVG9Cb3VuZHNNYXApCi0gICAgICAgIG1fZ2x5cGhUb0Jv
dW5kc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7
CisgICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzTWFw
PEZsb2F0UmVjdD4+KCk7CiAgICAgbV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRyaWNzRm9yR2x5
cGgoZ2x5cGgsIGJvdW5kcyk7CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDBhNjJhMjc1YmM2OTJl
ZjM5OTExNDBlMDI4ZjU4MDA0MjFkMGM3MTEuLjM3MDliNDFlYjJiN2JkMGJmN2IxMDJhYzVkYmVm
ZTJmNzc3M2FmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNo
ZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAg
ICAgICAgICAgICAgICAgaXQgPSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5maW5kKGtleSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKGl0ICE9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgpLmVuZCgp
KTsKICAgICAgICAgICAgICAgICBpZiAoZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUp
Ci0gICAgICAgICAgICAgICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBs
YXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKTsKKyAgICAgICAg
ICAgICAgICAgICAgaXQtPnZhbHVlID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigqZm9u
dFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCmluZGV4IDcyNzRkYjBkYjMyYjNiNDFiM2UwZTFiMWVkMGZiMmFlYThiMzZhM2IuLjY0
ODE4ZjRiNTE1NWQ0MmJmYWM4MWI2MWY0YjVmOWNkZWE1NDUyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI1NCw3ICsyNTQs
NyBAQCBzdGF0aWMgUmVmPEZvbnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250
cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aQogICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+Zm9udHMuZ2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRyeSA9IGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEZv
bnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVh
dGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CisgICAgbmV3RW50cnkgPSBtYWtlVW5pcXVlPEZv
bnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVh
dGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CiAgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGds
eXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQoKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCB1bnJlZmVyZW5jZWRQcnVuZUludGVydmFsID0gNTA7CkBAIC0zMjYsOSArMzI2LDkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3Bs
YXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q+KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0IHJlY29yZGluZ0NvbnRleHQoWyZdKEdyYXBoaWNz
Q29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxh
eUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5
TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwg
QWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIH0pOwogICAgIAogICAgIEZsb2F0UG9pbnQgc3RhcnRQ
b2ludChzdGFydFgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAppbmRleCBkYjc0MzAyZTlkYWE0ZWI1MmMwY2UwODFm
ZDU2MDUyNzk1NzhmYmY0Li4xMmFjODM3ZmNkMjQ2NWY5ZjgxZGViMDY4N2FhNzc2ZDVlYTA2NDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZUZvbnRzLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIEZvbnRDYXNjYWRlRm9udHM6Okds
eXBoUGFnZUNhY2hlRW50cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYQog
ewogICAgIEFTU0VSVCghZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlcikuZ2x5cGgpOwog
ICAgIGlmICghbV9taXhlZEZvbnQpIHsKLSAgICAgICAgbV9taXhlZEZvbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKKyAgICAgICAg
bV9taXhlZEZvbnQgPSBtYWtlVW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVGb250
LmdldCgpKTsKICAgICAgICAgbV9zaW5nbGVGb250ID0gbnVsbHB0cjsKICAgICB9CiAgICAgbV9t
aXhlZEZvbnQtPnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGdseXBoRGF0YSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJp
Y3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01h
cC5oCmluZGV4IDI1OWU5NzUzM2NhZWRjZmMxNDVmZjdhYjQyOGVhMTY5ZjY0YjE1OTQuLjc5ZTJm
NTM4OGM0NmU1ODkyMzAxNjFjNDc0NTI1NDE5MjQ3ZTgyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0xMzAsMTAgKzEz
MCwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NNYXA8VD46Okds
eXBoTWV0cmljc1BhZ2UmIEdseXBoTWV0cmljc01hcAogICAgIH0KIAogICAgIGlmICghbV9wYWdl
cykKLSAgICAgICAgbV9wYWdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6
dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+KCk7CisgICAgICAgIG1fcGFnZXMgPSBtYWtl
VW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+Pigp
OwogCiAgICAgYXV0byYgcGFnZSA9IG1fcGFnZXMtPmVuc3VyZShwYWdlTnVtYmVyLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVua25vd25N
ZXRyaWNzKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1
bmtub3duTWV0cmljcygpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuICpw
YWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAppbmRleCA0MDhjZmI3ZDFlMmRiOThmN2FkYzgzYmJjMzNiODFiOWFmMTIxYjBj
Li40NDdkN2UzZTM1NDc2MmU4MGI4ZjI3YTk1MjYyMzIyNzliNWY5MDk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTU3
LDYgKzU1Nyw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgYm9vbCBzaG91bGRJbmNs
dWRlQ2hpbGRXaW5kb3dzKCkgY29uc3Q7CiAKICAgICBjbGFzcyBXaW5kb3dzQml0bWFwIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdpbmRvd3NCaXRtYXApOwogICAgIHB1YmxpYzoKICAgICAgICAgV2luZG93c0JpdG1hcChI
REMsIGNvbnN0IEludFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggMWI0MjI4NmRk
ZjQ2NWMwZTJiMTI0ZDhhZmRmMGY3Y2Q2NDc3Y2JiNy4uZTMzZjhmYmU3Mzg5MmUzNGI4ZGVmODM2
ZDQ2ZjVjNzBjNzljNjFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwVGV4dHVyZUdMOwogCiBjbGFzcyBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCos
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDBiYWQ0ZTcwNjM0MjE5OTg2ODk0NDkyZGZlNmY2
MWQzMTc4ODE5ZDMuLmI4NzMxOTRlZTI0NjAxZmU0ZTA3MTQ3YWE3MWVhMzA1ODdhODRhNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgR3JhcGhpY3NDb250ZXh0SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3JhcGhpY3NDb250ZXh0SW1wbCk7CiBwdWJsaWM6CiAg
ICAgR3JhcGhpY3NDb250ZXh0SW1wbChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTRhYWMxZGY4
MzU2YmRiMTBkZjdkMDg2ZmFjZTI2YzFlMzcxODMyNi4uNmNkMDBjMjY1NzBkOWRiM2I5ZmFhN2Uy
MDIzYWYxYTVlN2U2M2EwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIEdyYXBoaWNz
TGF5ZXI6OnN1cHBvcnRzQ29udGVudHNUaWxpbmcoKQogI2VuZGlmCiAKIC8vIFNpbmdsZXRvbiBj
bGllbnQgdXNlZCBmb3IgbGF5ZXJzIG9uIHdoaWNoIGNsZWFyQ2xpZW50IGhhcyBiZWVuIGNhbGxl
ZC4KLWNsYXNzIEVtcHR5R3JhcGhpY3NMYXllckNsaWVudCA6IHB1YmxpYyBHcmFwaGljc0xheWVy
Q2xpZW50IHsKK2NsYXNzIEVtcHR5R3JhcGhpY3NMYXllckNsaWVudCBmaW5hbCA6IHB1YmxpYyBH
cmFwaGljc0xheWVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRW1wdHlHcmFwaGljc0xheWVyQ2xpZW50JiBzaW5nbGV0b24oKTsKQEAg
LTM0Myw3ICszNDMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogICAgIGlmIChtX3RyYW5zZm9ybSkKICAgICAg
ICAgKm1fdHJhbnNmb3JtID0gbWF0cml4OwogICAgIGVsc2UKLSAgICAgICAgbV90cmFuc2Zvcm0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAg
ICBtX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7
CiB9CiAKIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBHcmFwaGljc0xheWVyOjpjaGlsZHJl
blRyYW5zZm9ybSgpIGNvbnN0CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
OjpzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
KQogICAgIGlmIChtX2NoaWxkcmVuVHJhbnNmb3JtKQogICAgICAgICAqbV9jaGlsZHJlblRyYW5z
Zm9ybSA9IG1hdHJpeDsKICAgICBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAgICBt
X2NoaWxkcmVuVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0
cml4KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBo
aWNzTGF5ZXI+JiYgbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgKaW5kZXggMDA5ZDQ4Njg5NWQ1Njg2MjU0MDExZGY1NjAwYTcyMTEy
NDMwZTYyZi4uN2ExZmVhYWM3OWU3OGJhODhmY2FkY2I4NWUzMjk5ZmQ3OWEwMDQzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAt
MTExLDcgKzExMSw3IEBAIGNsYXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0
aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
bG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZs
b2F0QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigq
dGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVl
PigqdGhpcyk7CiAgICAgfQogCiAgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoY29uc3QgVHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWUmIG90aGVyKQpAQCAtMTYzLDcgKzE2Myw3IEBAIGNsYXNzIEZp
bHRlckFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0
aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0
aGlzKTsKICAgICB9CiAKICAgICBGaWx0ZXJBbmltYXRpb25WYWx1ZShjb25zdCBGaWx0ZXJBbmlt
YXRpb25WYWx1ZSYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAKaW5kZXggOGVjZjMzZjg5OGI3NDQ5MTFmNzA1YTE0OWZmNzg4YjY3YjZkOTRlZi4uMzk5
OTY3MmI5ZjU4OTMyODZjZjMyZGIxY2M2YjgwYTMzMTgyYWRjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgSW1h
Z2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljCiB2b2lkIEltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5
KCkKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9uU3RhcnRUaW1lcikKLSAgICAgICAgbV9hbmltYXRp
b25TdGFydFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3Rh
cnRBbmltYXRpb24pOworICAgICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXIgPSBtYWtlVW5pcXVl
PFRpbWVyPigqdGhpcywgJkltYWdlOjpzdGFydEFuaW1hdGlvbik7CiAgICAgaWYgKG1fYW5pbWF0
aW9uU3RhcnRUaW1lci0+aXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYW5pbWF0
aW9uU3RhcnRUaW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKaW5kZXggYmU3Njc2MGY4ZTM1
NjVkNDI2NzJiMDA1YTk2ZGNkYjdmYTRiMmQ2OS4uMjVlNzlhNmRjMGE1YjIxOTNhNzJhMjI3YWFj
YTE3NzNhN2UzYzI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xlZ2FjeUNETVNlc3Npb24uaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uQ2xpZW50
KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5Kiwg
U3RyaW5nIGRlc3RpbmF0aW9uVVJMKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNzU3ZjA5NTY3ZGM1ZGZkZjViZTAyNjM5
NjM5ZDFlZmVjNzE4YzBkYi4uYWJlODY5NDE5NGZmN2MxNzUxMDBiNjk4ODA0YTEyNDBiZDYyYzg0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIGNsYXNzIE51bGxNZWRpYVBsYXllclByaXZhdGUgZmlu
YWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgIGZsb2F0IG1h
eFRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbWlu
VGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH0KKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9CiAKICAgICBkb3VibGUgc2Vla2Fi
bGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0K
ICAgICBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsg
fQpAQCAtMzU1LDcgKzM1NSw3IEBAIFJlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0
ZShNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1l
ZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwg
bV9yZWxvYWRUaW1lcigqdGhpcywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQotICAg
ICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhp
cykpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0
aGlzKSkKIHsKIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRX
aXRoTmV4dE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICNl
bmRpZgogICAgICAgICBtX3ByaXZhdGUtPmxvYWQobV91cmwuc3RyaW5nKCkpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1fcHJpdmF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TnVsbE1lZGlhUGxheWVy
UHJpdmF0ZT4odGhpcyk7CisgICAgICAgIG1fcHJpdmF0ZSA9IG1ha2VVbmlxdWU8TnVsbE1lZGlh
UGxheWVyUHJpdmF0ZT4odGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5l
VXBkYXRlZCh0aGlzKTsKICAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1
cHBvcnRlZCh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDAwZDg1YTQ5OTY0MmIzZjUyMzdi
MzBiZmY1ZjRlNmI0MjkxMzBlY2QuLjFkMmZjMDA5MjA0YThjMDI1NTQxYjJhMmQ3YzVmMGQwYmU1
Yzk5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xMjksNyArMTI5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlIHsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUg
bmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhNZWRp
YVRpbWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSA/IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9
CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6
ZXJvVGltZSgpID8gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1l
U2Vla2FibGUoKSk7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIE1lZGlhVGltZSBtYXhNZWRpYVRpbWVTZWVrYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtYXhUaW1lU2Vl
a2FibGUoKSk7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhVdGlsaXRpZXMuY3BwCmluZGV4IDNlNjg4MDU1YmRjYzBiMTBlNDE2MGNmMTQwZDRmYWNlOTIz
MjBhNjUuLjVhZDkzMzQ5YmZiNDBkYTRmZjMwOGFkYTk4NDk3ZmMzNzVlMTA4YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIEZsb2F0UG9pbnRHcmFwaDo6Tm9kZSogRmxvYXRQb2ludEdyYXBoOjpm
aW5kT3JDcmVhdGVOb2RlKEZsb2F0UG9pbnQgcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gdGVz
dE5vZGUuZ2V0KCk7CiAgICAgfQogCi0gICAgbV9hbGxOb2Rlcy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdFBvaW50R3JhcGg6Ok5vZGU+KHBvaW50KSk7CisgICAgbV9hbGxOb2Rlcy5hcHBl
bmQobWFrZVVuaXF1ZTxGbG9hdFBvaW50R3JhcGg6Ok5vZGU+KHBvaW50KSk7CiAgICAgcmV0dXJu
IG1fYWxsTm9kZXMubGFzdCgpLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVnaW9uLmNwcAppbmRleCA5ZGNlZTg3NjE2MjVjMDE0ODhiNGQ5MGQxYWYyMmUz
NTQzNWQ0YTVlLi42YTcwMWMxYTEyODk3OWQ0Yzk0OGIxYTdiYWI1NjhmMTAyNDdjZjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKQEAgLTY0Niw3ICs2
NDYsNyBAQCB2b2lkIFJlZ2lvbjo6c2V0U2hhcGUoU2hhcGUmJiBzaGFwZSkKICAgICB9CiAKICAg
ICBpZiAoIW1fc2hhcGUpCi0gICAgICAgIG1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBl
PihXVEZNb3ZlKHNoYXBlKSk7CisgICAgICAgIG1fc2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBlPihX
VEZNb3ZlKHNoYXBlKSk7CiAgICAgZWxzZQogICAgICAgICAqbV9zaGFwZSA9IFdURk1vdmUoc2hh
cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCA3
OTYzM2ZkYjZhZGYzNGZmZmVlOGY4MjY3NDgzYjhjZmY1Y2UxZjNjLi5iYzM5YzMwMDAwZWE4YjZi
NWE5ZTYwY2YyYmM1YWUxODY2NjRiNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uaApAQCAtOTEsNiArOTEsNyBAQCBjbGFzcyBSZWdpb24gewogICAgIH07CiAK
ICAgICBjbGFzcyBTaGFwZSB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKICAgICAgICAgU2hhcGUoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFNoYXBlKGNvbnN0
IEludFJlY3QmKTsKQEAgLTE0OCw3ICsxNDksNyBAQCBjbGFzcyBSZWdpb24gewogICAgICAgICBm
cmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlJiwgY29uc3QgU2hhcGUmKTsKICAgICB9
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjb3B5U2hhcGUoKSBjb25zdCB7IHJldHVy
biBtX3NoYXBlID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oKm1fc2hhcGUpIDogbnVsbHB0cjsg
fQorICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4g
bV9zaGFwZSA/IG1ha2VVbmlxdWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KICAgICB2
b2lkIHNldFNoYXBlKFNoYXBlJiYpOwogCiAgICAgSW50UmVjdCBtX2JvdW5kczsKQEAgLTI4OSw3
ICsyOTAsNyBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgICAgIGRlY29kZXIgPj4gc2hhcGU7CiAgICAgICAgIGlmICghc2hhcGUpCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZWdpb24ubV9zaGFwZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U2hhcGU+KFdURk1vdmUoKnNoYXBlKSk7CisgICAgICAgIHJlZ2lvbi5t
X3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92ZSgqc2hhcGUpKTsKICAgICB9CiAKICAg
ICByZXR1cm4geyByZWdpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcAppbmRleCAxZTRlN2Zh
YzM2YzdjMzBhNjU2ZjFlZmQwMGFhY2U2ZDRjOTVjZWRhLi42OTM5ZjkxN2FlNmZhYjEzZWMxYzkx
ZDRhYTgxNTU2NmE5MTcwZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCkBAIC00Niw3ICs0
Niw3IEBAIGNsYXNzIE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiA6IHB1YmxpYyBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbiB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZShUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNsaWVudCYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TnVsbFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE51bGxUZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbj4oKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCmluZGV4IDdhZWI3NTliMzRiMThhMWU4NDY4M2Yy
OWM2MTZhNmNkYjAyNTc0ZDguLjZhMDZjYzZlYmEzNGI5NTlkMmYxODYwMjI5ZTFmMmYzOGZmMzE5
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0
YS5oCkBAIC02NSw2ICs2NSw3IEBAIHN0cnVjdCBWZWxvY2l0eURhdGEgIHsKIFdFQkNPUkVfRVhQ
T1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFZlbG9jaXR5RGF0
YSYpOwogCiBjbGFzcyBIaXN0b3JpY2FsVmVsb2NpdHlEYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIaXN0b3JpY2FsVmVsb2NpdHlEYXRhKCkgPSBkZWZh
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwCmluZGV4IDc3YTNlMThjMWM2
YzJlMjdkZDYzYWUyOTZmNmVjOWExZWEyZmFlMWYuLjYxMjYwZTljODNkYzRhNTUyODU3MWM5OWQ0
YTI3MDViMTZjYTRlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwCkBAIC0z
NjIsNyArMzYyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xh
bXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9u
cygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0
ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNEQU5HTEU+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQo
KSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNEQU5HTEU+
KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCmluZGV4
IGE5ZWNkMzIxMzZkYTg3NzAyZjQ3OGFmY2Q4YWNjOGViOTdjMjM5NDAuLjk5ZGRkZDhmODUwMjcz
MDNiYjhhNzYzZWNhYzJiODY5ODgyZmE5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGwuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakM7CiAKIGNsYXNzIEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwoQVZQbGF5ZXJJdGVtVHJh
Y2sqKTsKICAgICBleHBsaWNpdCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWQXNzZXRUcmFj
ayopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1t
CmluZGV4IDVjZDc3NzJhYzJlZTFjZWE5MDEwZTgzMzcxZWE2YWFlZjdmMDY5NTguLjZiM2M5MjJl
NmFlYmU1OTIwYWU2NWU1N2FmMDVlZGU0YWQwMzc0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTMxMywxMiArMzEzLDEyIEBAIHZv
aWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoQ01JdGVtQ291bnQgbWF4RnJh
bWVzLCBjb25zdCBBdWRpb1N0cmVhCiB7CiAgICAgQVNTRVJUKG1heEZyYW1lcyA+PSAwKTsKIAot
ICAgIG1fdGFwRGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOworICAgIG1fdGFwRGVzY3JpcHRpb24gPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24+KCpwcm9jZXNzaW5nRm9ybWF0KTsKICAgICBpbnQgbnVtYmVyT2ZDaGFubmVscyA9IHByb2Nl
c3NpbmdGb3JtYXQtPm1DaGFubmVsc1BlckZyYW1lOwogICAgIGRvdWJsZSBzYW1wbGVSYXRlID0g
cHJvY2Vzc2luZ0Zvcm1hdC0+bVNhbXBsZVJhdGU7CiAgICAgQVNTRVJUKHNhbXBsZVJhdGUgPj0g
MCk7CiAKLSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4o
KTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tU2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CiAg
ICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENN
OwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZs
YWdzTmF0aXZlRmxvYXRQYWNrZWQ7CkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1
ZGlvU3RyZWEKICAgICAvLyBNYWtlIHRoZSByaW5nYnVmZmVyIGxhcmdlIGVub3VnaCB0byBzdG9y
ZSBhdCBsZWFzdCB0d28gY2FsbGJhY2tzIHdvcnRoIG9mIGF1ZGlvLCBvciAxcywgd2hpY2hldmVy
IGlzIGxhcmdlci4KICAgICBzaXplX3QgY2FwYWNpdHkgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxz
aXplX3Q+KDIgKiBtYXhGcmFtZXMpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGtSaW5nQnVmZmVyRHVy
YXRpb24gKiBzYW1wbGVSYXRlKSk7CiAKLSAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmlu
Z0J1ZmZlcj4oKTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbigqcHJvY2Vzc2luZ0Zvcm1hdCksIGNhcGFjaXR5KTsKIAogICAgIC8vIEF1ZGlvQnVm
ZmVyTGlzdCBpcyBhIHZhcmlhYmxlLWxlbmd0aCBzdHJ1Y3QsIHNvIGNyZWF0ZSBvbiB0aGUgaGVh
cCB3aXRoIGEgZ2VuZXJpYyBuZXcoKSBvcGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHAKaW5kZXggMzYxYTk5MmYwYzQ2NTBjZjJiOTYyOGE2NDJlOTdiNWRi
YTBlMmEzYy4uNGZjNjc4N2RkOGQ5MDdjYWQ2YTI3N2YzOWIxZWQzMmVkNjc5YTZkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC0yMzQsNyArMjM0LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWlu
Zzo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtl
eVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZz4oKTsKIH0KIAogYm9vbCBDRE1GYWN0
b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCA4OTE4
ZTgwZTBjMzkwZDdlOGRhY2ExOTAzOTQ3OWEwZDBmNjk1YWQ4Li41Mzg2OTY5Zjk0OTc2ZjM4MzY4
MDE4NzQxYmFmZDEyNTUxZTI4Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRm91
ckNDOwogCiBjbGFzcyBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMg
Q0RNRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyYgc2luZ2xldG9uKCk7CiAKQEAgLTQ5
LDYgKzUwLDcgQEAgY2xhc3MgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVi
bGljIENETUZhY3RvcnkgewogfTsKIAogY2xhc3MgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
IGZpbmFsIDogcHVibGljIENETVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1
YWwgfkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggNGE1MGViNDFhNTgzNjgzZjY2
YTY3NjIyOTU0NmM1ODAxYjIwYjU4OC4uZDgxYmNhMzU0OTAzOTE4YTFiZGEwYWRkZDk1OGQ1OTQz
ZjcwMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIENETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakM7CiAKIGNsYXNzIENETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMgOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyhMZWdhY3lDRE0qIGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjYzA4YTlh
M2I1MWNiZjdhYjE5NzQyMDJhOThiMTY5ZGI0M2MxMDEuLjBjZDAxMjlhM2NkOWVhZjg2M2FkNDc4
OTgzODUwMzFkOGI3NmVmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xNDcsMTAgKzE0NywxMCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRl
U2Vzc2lvbihMZQogI2VuZGlmCiAgICAgCiAgICAgaWYgKHNob3VsZFVzZUFWQ29udGVudEtleVNl
c3Npb24gJiYgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpCi0g
ICAgICAgIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJz
LnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtl
VW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMu
dmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNs
aWVudCk7CiAgICAgZWxzZQogI2lmIEhBVkUoQVZTVFJFQU1TRVNTSU9OKQotICAgICAgICBzZXNz
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihXVEZNb3Zl
KHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCAqdGhpcywgY2xpZW50KTsKKyAgICAgICAg
c2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShw
YXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CiAjZWxzZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0Zh
aXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCmluZGV4IGU0NjAxNDgzMDVjZWVkMWI1NjQ4NDE5OTZj
YjlmYzM0Y2RjM2FiNTIuLjE0N2MzNzlmMTI3MDY4MmU1NWZkMjE1Y2UyM2EzOWVhMTI0OTVhZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggZmluYWwg
OiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBl
TmFtZSgpIHsgcmV0dXJuICJmcHNpIjsgfQogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94
IHsKICAgICBGb3VyQ0MgbV9zY2hlbWU7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09G
YWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggewor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0Jv
eCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckND
IGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrcmkiOyB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCA6
IHB1YmxpYyBJU09GdWxsQm94IHsKICAgICBLZXlJRCBtX2tleUlEOwogfTsKIAotY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IDogcHVibGljIElT
T0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0
SWRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckND
IGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrYWkiOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KQEAgLTY2LDcgKzY2LDcgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IDogcHVi
bGljIElTT0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGF0YTsKIH07CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCA6IHB1YmxpYyBJ
U09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250
ZXh0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJD
QyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma2N4IjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC03Nyw3ICs3Nyw3IEBAIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCA6IHB1
YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IDogcHVi
bGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tl
eVZlcnNpb25MaXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma3ZsIjsgfQogICAgIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiB2ZXJzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbnM7IH0KQEAg
LTg4LDcgKzg4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdL
ZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBt
X3ZlcnNpb25zOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXF1ZXN0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2si
OyB9CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBPcHRpb25hbDxJ
U09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94PiBtX3ZlcnNpb25MaXN0OwogfTsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCA6
IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdJbml0RGF0YUJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRp
YyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzZCI7IH0KIApAQCAtMTIwLDcgKzEy
MCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFC
b3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlS
ZXF1ZXN0Qm94PiBtX3JlcXVlc3RzOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFp
clBsYXlTdHJlYW1pbmdQc3NoQm94IDogcHVibGljIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ1Bz
c2hCb3ggZmluYWwgOiBwdWJsaWMgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmYWlyUGxheVN5
c3RlbUlEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggODU3ZjMxZjI3NzJmNDA4MWZiYTYzOGY4MTBjMTE0OTQy
ODU4Yjk0Yi4uNTljZjhiYTIxMzE2YjMwN2MwNTAyM2VkNTZkOWIzOWQyNTYxN2YwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAKQEAgLTM4NCw3ICszODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgYwogICAgIGlmICgh
bV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKQogICAgICAgICBtX2NhY2hlZExvYWRlZFRpbWVSYW5n
ZXMgPSBwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hlZExvYWRl
ZFRpbWVSYW5nZXMpOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjptYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXggMzk1Y2U3ODJlOGM1ODA0NTk2MTYy
NDY5ODBmMzNlYWRmMDNiNzhiMi4uNWY1YjZmNjk1MmI0OTNhOTg4N2JhZmM3ZjMwYjdiZWU3MzM0
MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp+V2ViTWVk
aWFTZXNzaW9uTWFuYWdlck1hYygpID0gZGVmYXVsdDsKIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXImIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnBsYXRmb3JtUGlja2VyKCkK
IHsKICAgICBpZiAoIW1fdGFyZ2V0UGlja2VyKQotICAgICAgICBtX3RhcmdldFBpY2tlciA9IHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRoaXMpOworICAg
ICAgICBtX3RhcmdldFBpY2tlciA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1hYz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX3RhcmdldFBpY2tlci5nZXQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaAppbmRleCA3
NjA4YTAxNzI2M2IzMDQ0NGNhYmU1MzVmZGE0NGM5OWZmYWYxMWYyLi5kNjE2N2I4NzY4OTk5ZGMw
NDk0NzUzODIwZDlhMmJjN2JlZDA2NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25DRi5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogCiBjbGFzcyBD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQsIExl
Z2FjeUNETVNlc3Npb25DbGllbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYWYwYTdjYzc3
YmYyOTJjZGZkNjZhYmM2ZTdmNjNhNTA5MDBhYWQ2Ny4uM2I3MGU3NjYzOWU1OTQwYWYxZjJiMWQ1
YmYyNjczYWUzMmRlY2ExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC05OCw2ICs5OCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBQQUw7CiBjbGFzcyBMYXllckNsaWVudDsKIAogY2xhc3MgQVZGV3JhcHBl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQVZGV3JhcHBl
cihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiopOwogICAgIH5BVkZXcmFwcGVyKCk7
CkBAIC0yMTMsNiArMjE0LDcgQEAgY2xhc3MgQVZGV3JhcHBlciB7CiB1aW50cHRyX3QgQVZGV3Jh
cHBlcjo6c19uZXh0QVZGV3JhcHBlck9iamVjdElEOwogCiBjbGFzcyBMYXllckNsaWVudCA6IHB1
YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIExheWVyQ2xpZW50KEFWRldyYXBwZXIqIHBhcmVudCkgOiBtX3BhcmVu
dChwYXJlbnQpIHsgfQogICAgIHZpcnR1YWwgfkxheWVyQ2xpZW50KCkgeyBtX3BhcmVudCA9IDA7
IH0KQEAgLTM0Myw3ICszNDUsNyBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2Fk
ZXJEZWxlZ2F0ZVF1ZXVlKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewog
ICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRj4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9y
dHNUeXBlLCAwLCAwLCAwLCBzdXBwb3J0c0tleVN5c3RlbSk7CiB9CiAKQEAgLTY3Miw3ICs2NzQs
NyBAQCBzdGF0aWMgYm9vbCB0aW1lUmFuZ2VJc1ZhbGlkQW5kTm90RW1wdHkoQ01UaW1lIHN0YXJ0
LCBDTVRpbWUgZHVyYXRpb24pCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBpZiAoIWF2UGxheWVySXRlbShtX2F2ZldyYXBw
ZXIpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAgLTExMzcsNyArMTEzOSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvCiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlT
eXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsK
IH0KIAogI2VsaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC0xNjQxLDYgKzE2
NDMsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2soQVZD
RlBsYXllclJlZiwgQ01UaW1lIGNtVGltZSwgdm9pZAogfQogCiBzdHJ1Y3QgTm90aWZpY2F0aW9u
Q2FsbGJhY2tEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBtX3Byb3BlcnR5TmFtZTsKICAgICB2b2lkKiBtX2NvbnRl
eHQ7CiAKQEAgLTE3MDgsNyArMTcxMSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9u
Q2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDCiAgICAg
TE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soaWY9JWQpICVzIiwg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9ic2VydmVyKSwgbm90aWZpY2F0aW9uTmFtZSk7
CiAjZW5kaWYKIAotICAgIGF1dG8gbm90aWZpY2F0aW9uRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKKyAgICBh
dXRvIG5vdGlmaWNhdGlvbkRhdGEgPSBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0
YT4ocHJvcGVydHlOYW1lLCBvYnNlcnZlcik7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIG5vdGlmaWNhdGlvbkRhdGEucmVsZWFzZSgpLCBwcm9jZXNz
Tm90aWZpY2F0aW9uKTsKIH0KQEAgLTE3ODUsNiArMTc4OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6
c2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRp
dmVUb2xlCiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYm
IEhBVkUoQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCiBzdHJ1Y3QgTGVnaWJs
ZU91dHB1dERhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9hdHRyaWJ1dGVkU3RyaW5nczsKICAgICBSZXRhaW5QdHI8
Q0ZBcnJheVJlZj4gbV9zYW1wbGVzOwogICAgIE1lZGlhVGltZSBtX3RpbWU7CkBAIC0xODMzLDcg
KzE4MzcsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2b2lkKiBj
b250ZXh0LCBBVkNGUGxheWVySXRlbUxlZ2libGVPdXRwdQogCiAgICAgQVNTRVJUKGxlZ2libGVP
dXRwdXQgPT0gc2VsZi0+bV9sZWdpYmxlT3V0cHV0KTsKIAotICAgIGF1dG8gbGVnaWJsZU91dHB1
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2libGVPdXRwdXREYXRhPihhdHRyaWJ1dGVkU3Ry
aW5ncywgbmF0aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIGNv
bnRleHQpOworICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEgPSBtYWtlVW5pcXVlPExlZ2libGVP
dXRwdXREYXRhPihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0
b01lZGlhVGltZShpdGVtVGltZSksIGNvbnRleHQpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBsZWdpYmxlT3V0cHV0RGF0YS5yZWxlYXNlKCksIHBy
b2Nlc3NDdWUpOwogfQpAQCAtMTg0MSw2ICsxODQ1LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0
cHUKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkKIHN0cnVjdCBMb2Fk
UmVxdWVzdERhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBS
ZXRhaW5QdHI8QVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gbV9yZXF1ZXN0Owog
ICAgIHZvaWQqIG1fY29udGV4dDsKIApAQCAtMTkyNiw3ICsxOTMxLDcgQEAgQm9vbGVhbiBBVkZX
cmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNv
dXJjZShBVkNGQXMKIAogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVy
U2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKCVwKSIsIHNlbGYpOwogCi0g
ICAgYXV0byBsb2FkUmVxdWVzdERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRSZXF1ZXN0RGF0
YT4obG9hZGluZ1JlcXVlc3QsIGNvbnRleHQpOworICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0g
bWFrZVVuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKIAog
ICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbG9hZFJlcXVl
c3REYXRhLnJlbGVhc2UoKSwgcHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk7
CiAKQEAgLTE5NTMsNyArMTk1OCw3IEBAIFBsYXRmb3JtTGF5ZXIqIEFWRldyYXBwZXI6OnBsYXRm
b3JtTGF5ZXIoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIENyZWF0ZSBhIFBsYXRmb3Jt
Q0FMYXllciBzbyB3ZSBjYW4gcmVzaXplIHRoZSB2aWRlbyBsYXllciB0byBtYXRjaCB0aGUgZWxl
bWVudCBzaXplLgotICAgIG1fbGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xp
ZW50Pih0aGlzKTsKKyAgICBtX2xheWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMYXllckNsaWVudD4o
dGhpcyk7CiAgICAgaWYgKCFtX2xheWVyQ2xpZW50KQogICAgICAgICByZXR1cm4gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCmlu
ZGV4IGUxNGFmMWEyN2YyNmJkMWFkNjAyODYwNGE1NzUyZjBkZjlhOGRmNTIuLjdkZTE0YzI1NzFm
N2QzOGVlY2JiMzQ4ZmRhM2M3NGE0M2RlYjgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KQEAgLTMzLDEzICszMywxMyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwo
c3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAg
OiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7
CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIEF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZG
T2JqQyYgb3B0aW9uKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRy
YWNrKCk7CiB9CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
OjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKEFWUGxheWVySXRlbVRyYWNrICp0cmFjaykKIHsKLSAg
ICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRy
YWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtNjksMTQg
KzY5LDE0IEBAIEFWUGxheWVySXRlbVRyYWNrKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBs
YXllckl0ZW1UcmFjaygpCiB9CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2lt
cGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAg
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBs
ID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7Cisg
ICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7
CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTg3LDcgKzg3LDcgQEAg
QVZBc3NldFRyYWNrKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmFzc2V0VHJhY2soKQogCiB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24oTWVk
aWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1faW1w
bCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAgICBy
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3Bw
CmluZGV4IGVjMGQwZWRkYmY3M2JlZWRhNjcxN2I3YTUxOGM3MzIxMjYwOTVhZTIuLmRmNTIyNmE0
ZWEwMzZlNTZmYTI1MzlhNjI3NjJhMjM4YWU3MGUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBw
YXJlbnQpCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjaykpCiAgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiAgICAgcmVzZXRQ
cm9wZXJ0aWVzRnJvbVRyYWNrKCk7CkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZv
aWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZB
c3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9t
VHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjJhYWZlYzdiODM0MjdiODEzMGE3YzA0M2Y4ZjY3MjA4
MzRjY2E0Ny4uNWQ4ZTI1MDc0NzBiYzdhNDk5OTU1Yzk4MWIxNzZmZjQ0NGZiYzZkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIAotY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPiB7CitjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQyBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCmlu
ZGV4IDI0YjJhMTdkOTc3ZWJiZjA1MzM1MGM1NWQ5ZDQwOWE2MTI3OTYzOGYuLjM5ZWE4ZTUxMTM2
MzJhZTc0YmY1MzY0YThkMWIwMjY5NzIyMWFhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQyLDYgKzQyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QzsKIAogY2xhc3MgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyA6IHB1YmxpYyBMZWdhY3lD
RE1TZXNzaW9uLCBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCwg
cHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDKENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXgg
NTQ4MjBkMjI1MTk3ZGI3ZjliZTczZjRmYmQyY2VjODc4ZjlhODAwOC4uMzI2ZGFkYmIxN2QwODkx
MTcwZWI3NTQ1M2I2MzQ4ZDdmZTgzOTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBJbWFnZURlY29k
ZXJBVkZPYmpDOjpyZWFkVHJhY2tNZXRhZGF0YSgpCiAgICAgICAgIHx8ICFtX2ltYWdlUm90YXRp
b25TZXNzaW9uLT50cmFuc2Zvcm0oKQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9u
LT50cmFuc2Zvcm0oKS52YWx1ZSgpICE9IGZpbmFsVHJhbnNmb3JtCiAgICAgICAgIHx8IG1faW1h
Z2VSb3RhdGlvblNlc3Npb24tPnNpemUoKSAhPSBzaXplKQotICAgICAgICBtX2ltYWdlUm90YXRp
b25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZN
b3ZlKGZpbmFsVHJhbnNmb3JtKSwgc2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKKyAgICAgICAg
bV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25W
VD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJH
UkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CiAK
ICAgICBtX3NpemUgPSBleHBhbmRlZEludFNpemUobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+cm90
YXRlZFNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA1Y2QyMjQwM2FhMmMy
ZWY2MjJlMzAwZDAwNzQxZmMwYzMzMzliZjM2Li43ZmMwMThhZTU4ZWFmNTI1NjBkZWU2YjM0YTFh
OTdjZTdkMDFkMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3Niw3ICsyNzYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYQogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4o
cGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIp
OyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2lu
c0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
LCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpz
aW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKIH0KQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdp
bnMoY29uc3QgU3RyaW5nJgogCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAg
ICAgOiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24ocGxheWVyKQotICAgICwgbV92aWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIo
bWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogICAgICwgbV92
aWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3Bl
Y3QpCiAgICAgLCBtX29iamNPYnNlcnZlcihhZG9wdE5TKFtbV2ViQ29yZUFWRk1vdmllT2JzZXJ2
ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVyOm1ha2VXZWFrUHRyKCp0aGlzKV0pKQogICAgICwgbV92
aWRlb0ZyYW1lSGFzRHJhd24oZmFsc2UpCkBAIC0xMzM3LDcgKzEzMzcsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJl
c2VydmVzUGl0Y2gpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2Vz
KCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKTsKIAogICAgIGlmICghbV9hdlBsYXllckl0ZW0pCiAgICAgICAgIHJl
dHVybiB0aW1lUmFuZ2VzOwpAQCAtMTg5Miw3ICsxODkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVSb3RhdGlvblNlc3Npb24oKQogICAgICAgICAm
JiBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXplKCkgPT0gbmF0dXJhbFNpemUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBuYXR1cmFs
U2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6
SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKKyAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0g
bWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3Jt
KSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25T
ZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CiB9CiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCkBAIC0yMjE2LDcgKzIyMTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAjZWxzZQog
ICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBuaWw7CiAjZW5kaWYKLSAgICAgICAg
bV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25m
b3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKKyAgICAgICAg
bV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTIyNjUsNyArMjI2NSw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoCiAgICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9s
YXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikK
LSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4
dHVyZUNvcGllckNWPigqY29udGV4dCk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0g
bWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJu
IG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQ
aXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBo
YSwgZmxpcFkpOwogfQpAQCAtMjMzMCw3ICsyMzMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNl
c3MKIHsKICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGF1dG8gc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVudCk7CisgICAgYXV0byBzZXNzaW9u
ID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsK
ICAgICBtX3Nlc3Npb24gPSBtYWtlV2Vha1B0cigqc2Vzc2lvbik7CiAgICAgcmV0dXJuIFdURk1v
dmUoc2Vzc2lvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDczOTZlNWIxYjQz
MTE5OGU1ZTYwZDhmY2QwNjM1OWJiMjdjZjQ5ZjcuLmExZGQwZjkwOTFmYjI4NjQ2OGRiZTBhZTEw
Y2U4YjNjMTQyYzBiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yNjgsNiArMjY4
LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDCiAgICAgZnJp
ZW5kIGNsYXNzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM7CiAKICAgICBzdHJ1Y3QgUGVuZGlu
Z1NlZWsgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IFBlbmRpbmdTZWVrKGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1l
JiBuZWdhdGl2ZVRocmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCkK
ICAgICAgICAgICAgIDogdGFyZ2V0VGltZSh0YXJnZXRUaW1lKQogICAgICAgICAgICAgLCBuZWdh
dGl2ZVRocmVzaG9sZChuZWdhdGl2ZVRocmVzaG9sZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCBmMTk1MTU2ZDhjZjIyNTZmNjBmOWY1NTMyNDEyOWU4NTIzZDlkMzhiLi45YzBhZWY2
MTlhZGMyYTMxOGYwZGI3ZDJlMzg2N2MyMWRmYzMxZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTWVkaWEKICAgICAs
IG1fcGxheWluZygwKQogICAgICwgbV9zZWVraW5nKGZhbHNlKQogICAgICwgbV9sb2FkaW5nUHJv
Z3Jlc3NlZChmYWxzZSkKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6
bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fZWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcihF
ZmZlY3RpdmVSYXRlQ2hhbmdlZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMsIFttX3N5bmNocm9uaXpl
ciB0aW1lYmFzZV0pKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIo
cGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7
IH0sCisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VV
bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAog
ICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAg
ICBBU1NFUlQoQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkp
OwogfQpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIHRpCiAgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUiwgInRpbWUgPSAiLCB0aW1lLCAiLCBuZWdhdGl2ZVRocmVzaG9s
ZCA9ICIsIG5lZ2F0aXZlVGhyZXNob2xkLCAiLCBwb3NpdGl2ZVRocmVzaG9sZCA9ICIsIHBvc2l0
aXZlVGhyZXNob2xkKTsKIAogICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9wZW5kaW5nU2Vl
ayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1NlZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xk
LCBwb3NpdGl2ZVRocmVzaG9sZCk7CisgICAgbV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVu
ZGluZ1NlZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAK
ICAgICBpZiAobV9zZWVrVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9zZWVrVGltZXIuc3Rv
cCgpOwpAQCAtNTQzLDcgKzU0Myw3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFU
aW1lU2Vla2FibGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKIH0KIAog
TWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bWF4TWVkaWFU
aW1lU2Vla2FibGUoKSBjb25zdApAQCAtNTU4LDcgKzU1OCw3IEBAIE1lZGlhVGltZSBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29u
c3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
bWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRp
YVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKSA6IG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKQEAgLTYwMiw3
ICs2MDIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBk
YXRlTGFzdEltYWdlKCkKIAogICAgIGlmICghbV9yZ2JDb25mb3JtZXIpIHsKICAgICAgICAgYXV0
byBhdHRyaWJ1dGVzID0gQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhl
bEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfTsKLSAgICAgICAg
bV9yZ2JDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcmdiQ29u
Zm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0KIAogICAgIG1fbGFzdEltYWdlID0gbV9y
Z2JDb25mb3JtZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVy
LmdldCgpKTsKQEAgLTY0OSw3ICs2NDksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAg
IHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVy
LmdldCgpKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlk
ZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4o
KmNvbnRleHQpOworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8Vmlk
ZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVy
ZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0
KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBjYTNiMTEzNTUyYjM4ODVjOTk5NzdkYWUy
YTIxZWExNjU3N2VkYTgwLi45ZGVlZTQ2ZjJjYTI0NTI5NTNkZjVjYTg4YmI2OWY4MThlN2U0ZTYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0xODMsNyArMTgzLDcgQEAgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMoTWVkaWEKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fc3RhdHVz
Q2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlz
dGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpD
bG9jazo6Y3JlYXRlKCkpCi0gICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6
Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlck9iakM+KCkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xv
Z2dlcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIo
cGxheWVyLT5tZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFy
KQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQ
bGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAg
ICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1
ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1
cHBvcnRlZFR5cGVzLAogICAgICAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0K
IApAQCAtMTA1NCwxMiArMTA1NCwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6dXBkYXRlVHJhY2tzKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQpAQCAtMTA3Myw3ICsxMDczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAg
ICAgICAgbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsg
KF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAo
a0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfSk7CisgICAgICAgIG1faW1hZ2VQYWludGVyLnBp
eGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0p
OwogCiAgICAgQVNTRVJUKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKTsKICAg
ICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9U
cmFja1ByaXZhdGVBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKaW5kZXggYzg3
MWM1OTQ4MzU1MDg1NzE4MmM3YTI0ZDU1MzRiODVhNWQ0ZWY3ZS4uMjk0ODNiYTVlOThkOTVmYThl
NWVjOWE2YTEwYmY2NDFhYWUzNTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6
bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9p
bXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAg
IHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQotICAgIDog
bV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
KQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJh
Y2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9w
dGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQogewogICAgIHJlc2V0UHJvcGVydGll
c0Zyb21UcmFjaygpOwogfQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2sp
CiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAg
LTc3LDcgKzc3LDcgQEAgQVZQbGF5ZXJJdGVtVHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qzo6cGxheWVySXRlbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNl
dEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwg
PSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNl
dFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtODgsNyArODgsNyBAQCBBVkFzc2V0VHJh
Y2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6YXNzZXRUcmFjaygpCiAKIHZvaWQgVmlkZW9U
cmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdG9uT3B0aW9uKE1lZGlhU2VsZWN0aW9u
T3B0aW9uQVZGT2JqQyYgb3B0aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZmNjMjQ5
NmExMzVhYTRmNzNhOGZlNTQ4ZDE0ZTBjODAwMDRhZDFiMC4uOTc1NmNmZmFmZDhjM2Y2ZmUzYjQ3
YTIzMzM3MWI3NGRlYzk4ZDA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM1LDcg
KzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRU
cmFjayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBt
X2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykp
CisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
aykpCiAgICAgLCBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCiAgICAgLCBt
X3NlbGVjdGVkKGZhbHNlKQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRU
cmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDE3MWYyNzcyYzk0YTY5Y2RhNzM0OTNjYzljOGM3
ODc4YjAwMTA4ZGQuLjg3NjUzNDQ1MjAyNGU2MTY1MTQxN2EwNGEwZDk0NTA1OGE5NTQwMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmNwcApAQCAtMTYzNiwxMiArMTYzNiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0
IFRyYQogICAgIGlmICh1c2VzRGlzcGxheUxpc3REcmF3aW5nKCkgJiYgbV9kcmF3c0NvbnRlbnQg
JiYgKCFtX2hhc0V2ZXJQYWludGVkIHx8IGhhZERpcnR5UmVjdHMpKSB7CiAgICAgICAgIFRyYWNl
U2NvcGUgdHJhY2luZ1Njb3BlKERpc3BsYXlMaXN0UmVjb3JkU3RhcnQsIERpc3BsYXlMaXN0UmVj
b3JkRW5kKTsKIAotICAgICAgICBtX2Rpc3BsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisgICAgICAgIG1fZGlzcGxheUxpc3QgPSBtYWtlVW5p
cXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKICAgICAgICAgCiAgICAgICAgIEZsb2F0
UmVjdCBpbml0aWFsQ2xpcChib3VuZHNPcmlnaW4oKSwgc2l6ZSgpKTsKIAogICAgICAgICBHcmFw
aGljc0NvbnRleHQgY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNv
bnRleHQsICptX2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xp
cCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlz
cGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250
ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUoKSkpOwogICAgIH0KQEAgLTI4NjcsNyArMjg2Nyw3IEBAIGJvb2wg
R3JhcGhpY3NMYXllckNBOjppc1J1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb24oKSBjb25zdAogdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFt
X2FuaW1hdGlvbnMpCi0gICAgICAgIG1fYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5
ZXJBbmltYXRpb25zPigpOworICAgICAgICBtX2FuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPExheWVy
QW5pbWF0aW9ucz4oKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9u
TGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYgY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJv
cGVydHksIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5k
ZXgsIFNlY29uZHMgdGltZU9mZnNldCkKQEAgLTM5MDMsNyArMzkwMyw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+CiAgICAgY29udGVudHNMYXllciA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1f
bGF5ZXJDbG9uZXMpCi0gICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExh
eWVyQ2xvbmVzPigpOworICAgICAgICBtX2xheWVyQ2xvbmVzID0gbWFrZVVuaXF1ZTxMYXllckNs
b25lcz4oKTsKIAogICAgIHByaW1hcnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBt
X2xheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLT5wcmltYXJ5TGF5ZXJDbG9uZXMsIGNsb25lTGV2
ZWwpOwogICAgIHN0cnVjdHVyYWxMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0
cnVjdHVyYWxMYXllci5nZXQoKSwgbV9sYXllckNsb25lcy0+c3RydWN0dXJhbExheWVyQ2xvbmVz
LCBjbG9uZUxldmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggM2FjNGMxZTMyYTE1NDhkNThjNjkxMTE3Y2M2
OWEyOWM0ZGNmMGUxYS4uYzRiMmM5YzM0NzA4MGE2YjdjOTZkNjcwMmY0YTRkOGEzMGM3ZjZiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmgKQEAgLTE1Nyw2ICsxNTcsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBw
dWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAg
RmxvYXRTaXplIHBpeGVsQWxpZ25tZW50T2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9waXhlbEFsaWdubWVudE9mZnNldDsgfQogCiAgICAgc3RydWN0IENvbW1pdFN0YXRlIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB1bnNpZ25lZCB0
cmVlRGVwdGggeyAwIH07CiAgICAgICAgIHVuc2lnbmVkIHRvdGFsQmFja2Ryb3BGaWx0ZXJBcmVh
IHsgMCB9OwogICAgICAgICBib29sIGFuY2VzdG9ySGFkQ2hhbmdlcyB7IGZhbHNlIH07CkBAIC0z
MDksNiArMzEwLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5
ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIHR5cGVkZWYgdW5zaWduZWQg
Q29tcHV0ZVZpc2libGVSZWN0RmxhZ3M7CiAgICAgCiAgICAgc3RydWN0IFZpc2libGVBbmRDb3Zl
cmFnZVJlY3RzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3Q7CiAgICAgICAgIEZsb2F0UmVjdCBjb3ZlcmFnZVJl
Y3Q7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFuaW1hdGluZ1RyYW5zZm9ybTsKQEAg
LTMyOCw2ICszMzAsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NM
YXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAKICAgICAvLyBVc2VkIHRvIHRy
YWNrIHRoZSBwYXRoIGRvd24gdGhlIHRyZWUgZm9yIHJlcGxpY2EgbGF5ZXJzLgogICAgIHN0cnVj
dCBSZXBsaWNhU3RhdGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4UmVwbGljYURlcHRoID0gMTY7CiAgICAg
ICAgIGVudW0gUmVwbGljYUJyYW5jaFR5cGUgeyBDaGlsZEJyYW5jaCA9IDAsIFJlcGxpY2FCcmFu
Y2ggPSAxIH07CiAgICAgICAgIFJlcGxpY2FTdGF0ZShSZXBsaWNhQnJhbmNoVHlwZSBmaXJzdEJy
YW5jaCkKQEAgLTU3OSw2ICs1ODIsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMg
R3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAKICAgICAvLyBS
ZWZlcmVuY2VzIHRvIGNsb25lcyBvZiBvdXIgbGF5ZXJzLCBmb3IgcmVwbGljYXRlZCBsYXllcnMu
CiAgICAgc3RydWN0IExheWVyQ2xvbmVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBMYXllck1hcCBwcmltYXJ5TGF5ZXJDbG9uZXM7CiAgICAgICAg
IExheWVyTWFwIHN0cnVjdHVyYWxMYXllckNsb25lczsKICAgICAgICAgTGF5ZXJNYXAgY29udGVu
dHNMYXllckNsb25lczsKQEAgLTYwOCw2ICs2MTIsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0Eg
OiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rp
b24+PiBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPj4gQW5pbWF0aW9uc01hcDsKICAgICBzdHJ1
Y3QgTGF5ZXJBbmltYXRpb25zIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gdW5jb21pdHRlZEFu
aW1hdGlvbnM7CiAgICAgICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXAgYW5pbWF0aW9uc1RvUHJv
Y2VzczsKICAgICAgICAgQW5pbWF0aW9uc01hcCBydW5uaW5nQW5pbWF0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cAppbmRleCA0ZDY0YzJjNGIxOWIzMWI4MDU0YzFiYzQxYWMwMjI1NzNiZWZmNTYyLi4zMDVlZmQz
MzNiZDYxMWM2ZWY1ZTRjMWIyNjIyODg3NTI1NmYyNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC02Niw3
ICs2Niw3IEBAIFN0cmluZyBUaWxlQ29udHJvbGxlcjo6em9vbWVkT3V0VGlsZUdyaWRDb250YWlu
ZXJMYXllck5hbWUoKQogVGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FM
YXllciogcm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgOiBtX3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0
Zm9ybUxheWVyKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcihvd25pbmdHcmFwaGljc0xheWVy
KCktPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkpCi0gICAgLCBtX3RpbGVHcmlk
KHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkKKyAgICAsIG1fdGlsZUdyaWQobWFr
ZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQogICAgICwgbV90aWxlUmV2YWxpZGF0aW9uVGltZXIo
KnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQpCiAgICAg
LCBtX3RpbGVTaXplQ2hhbmdlVGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVNpemVD
aGFuZ2VUaW1lckZpcmVkLCB0aWxlU2l6ZVVwZGF0ZURlbGF5KQogICAgICwgbV9tYXJnaW5FZGdl
cyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFRp
bGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQogICAgIGlmIChtX3pv
b21lZE91dENvbnRlbnRzU2NhbGUgJiYgbV96b29tZWRPdXRDb250ZW50c1NjYWxlID09IHRpbGVH
cmlkKCkuc2NhbGUoKSAmJiB0aWxlR3JpZCgpLnNjYWxlKCkgIT0gc2NhbGUgJiYgIW1faGFzVGls
ZXNXaXRoVGVtcG9yYXJ5U2NhbGVGYWN0b3IpIHsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3Jp
ZCA9IFdURk1vdmUobV90aWxlR3JpZCk7CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPnNl
dElzWm9vbWVkT3V0VGlsZUdyaWQodHJ1ZSk7Ci0gICAgICAgIG1fdGlsZUdyaWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7CisgICAgICAgIG1fdGlsZUdyaWQgPSBtYWtlVW5p
cXVlPFRpbGVHcmlkPigqdGhpcyk7CiAgICAgICAgIHRpbGVHcmlkc0NoYW5nZWQoKTsKICAgICB9
CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCBGbG9hdFJlY3QgVGlsZUNvbnRyb2xsZXI6OmFkanVzdFRp
bGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcoY29uc3QgRmxvYXRSZWN0JiBjbwogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhKQotICAg
ICAgICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxIaXN0
b3JpY2FsVmVsb2NpdHlEYXRhPigpOworICAgICAgICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlE
YXRhID0gbWFrZVVuaXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlEYXRhPigpOwogCiAgICAgICAgIG1f
dmVsb2NpdHkgPSBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEtPnZlbG9jaXR5Rm9yTmV3RGF0YShz
Y3JvbGxPZmZzZXQsIGNvbnRlbnRzU2NhbGUsIE1vbm90b25pY1RpbWU6Om5vdygpKTsKICAgICB9
OwpAQCAtNjg1LDcgKzY4NSw3IEBAIEludFJlY3QgVGlsZUNvbnRyb2xsZXI6OnRpbGVDb3ZlcmFn
ZVJlY3QoKSBjb25zdAogUGxhdGZvcm1DQUxheWVyKiBUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3Jv
bGxpbmdJbmRpY2F0b3JMYXllcigpCiB7CiAgICAgaWYgKCFtX2NvdmVyYWdlTWFwKQotICAgICAg
ICBtX2NvdmVyYWdlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlz
KTsKKyAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IG1ha2VVbmlxdWU8VGlsZUNvdmVyYWdlTWFwPigq
dGhpcyk7CiAKICAgICByZXR1cm4gJm1fY292ZXJhZ2VNYXAtPmxheWVyKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IGE0ODUyM2NmNTE3NmIzMWYyYWNjNDk4NGIy
ZWNkOGUyYzg3NGY2MDcuLjM2YWMyZjc4NGIwMDZmZjljNzAzZjQxZTdiZmY2ODdhMWFhNGM2Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC0zMTMsNyArMzEzLDcgQEAg
dm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29tbW9uSW5pdCgpCiAgICAgICAgIFdlYlRpbGVk
QmFja2luZ0xheWVyKiB0aWxlZEJhY2tpbmdMYXllciA9IHN0YXRpY19jYXN0PFdlYlRpbGVkQmFj
a2luZ0xheWVyKj4obV9sYXllci5nZXQoKSk7CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxl
Q29udHJvbGxlciA9IFt0aWxlZEJhY2tpbmdMYXllciBjcmVhdGVUaWxlQ29udHJvbGxlcjp0aGlz
XTsKIAotICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKKyAgICAg
ICAgbV9jdXN0b21TdWJsYXllcnMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRp
bGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CiAgICAgfQogCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwpAQCAtOTQ3LDcgKzk0Nyw3IEBAIEZsb2F0Um91bmRlZFJlY3QgUGxh
dGZvcm1DQUxheWVyQ29jb2E6OnNoYXBlUm91bmRlZFJlY3QoKSBjb25zdAogdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6c2V0U2hhcGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkUmVjdCkKIHsKICAgICBBU1NFUlQobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2hh
cGVMYXllcik7Ci0gICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9h
dFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CisgICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gbWFr
ZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKICAgICBQYXRoIHNoYXBlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRC
YWNraW5nTGF5ZXIubW0KaW5kZXggYzE5MWYzOTFjNjQ1NzJjYzk5NTVhNDdjNmNiN2I5MDA3ODY3
MjYzOS4uYjNlMjFmNjQwYWU5MWEwZDFmNTkzODQ2YTg1MGZlYzIyZmE3OGE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNr
aW5nTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgLSAoaWQpaW5pdFdp
dGhMYXllcjooaWQpbGF5ZXIKIC0gKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyKiljcmVhdGVUaWxl
Q29udHJvbGxlcjooV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKilyb290TGF5ZXIKIHsKICAgICBB
U1NFUlQoIV90aWxlQ29udHJvbGxlcik7Ci0gICAgX3RpbGVDb250cm9sbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKKyAgICBfdGlsZUNv
bnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIp
OwogICAgIHJldHVybiBfdGlsZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FM
YXllcldpbi5jcHAKaW5kZXggMTVkNGU0NmIwNmM3NmMxN2YzNDA1MTM5YzZjOTc5YzEwMTdiMzY5
Ni4uZDZhN2MxNjhmMGU0NDFmZDdkMjkwZmM0ZmUzMTM2MGM1ODVkNTY4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJXaW46
OlBsYXRmb3JtQ0FMYXllcldpbihMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiBs
YXllcgogICAgIGlmICh1c2VzVGlsZWRCYWNraW5nTGF5ZXIoKSkgewogICAgICAgICBpbnRlcm4g
PSBuZXcgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4odGhpcyk7CiAgICAgICAgIFRpbGVDb250cm9s
bGVyKiB0aWxlQ29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW4qPihpbnRlcm4pLT5jcmVhdGVUaWxlQ29udHJvbGxlcih0aGlzKTsKLSAgICAgICAgbV9j
dXN0b21TdWJsYXllcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRp
bGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5
ZXJzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29u
dGFpbmVyTGF5ZXJzKCkpOwogICAgIH0gZWxzZQogICAgICAgICBpbnRlcm4gPSBuZXcgUGxhdGZv
cm1DQUxheWVyV2luSW50ZXJuYWwodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW4uY3BwCmluZGV4IDIyNGQ4YmJlZWQzOTkyYWVlZmM5MzJhMWJlZTgwZGM2M2ZjYTJmOGIu
LmM1YTczZThkM2FlOWJiNDlhOTZiZTI3ZjUzMjdlMDZjMDYyMTRmYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXll
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dl
YlRpbGVkQmFja2luZ0xheWVyV2luLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViVGls
ZWRCYWNraW5nTGF5ZXJXaW46OnNldEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIFRp
bGVDb250cm9sbGVyKiBXZWJUaWxlZEJhY2tpbmdMYXllcldpbjo6Y3JlYXRlVGlsZUNvbnRyb2xs
ZXIoUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIpCiB7CiAgICAgQVNTRVJUKCFtX3RpbGVDb250
cm9sbGVyKTsKLSAgICBtX3RpbGVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29u
dHJvbGxlcj4ocm9vdExheWVyKTsKKyAgICBtX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxU
aWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAgICByZXR1cm4gbV90aWxlQ29udHJvbGxlci5n
ZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGMzMWNjNmUzOGJh
NTk5YzlmYjgyNmFhMDM5NzZiMjA1MWNjMTE1YmUuLjE4ZjM0MDUwYWE5ZTNiNzQzNGE2MjdhMDc3
Y2QyY2NmMmY5OWM5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTQxLDYg
KzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsK
IHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIAog
c3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwog
cHVibGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVy
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA1MGI3ZDljMjNj
MDFhYmZjM2EwNTE3OGMxMDUyNTEwNzBmMTVkNmRiLi4wNGYyYTlmZjU0NjlhYTViYTI0ZDE0OTU2
NTRiNjBmMGJjNDNkMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFj
dG9yeSBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3QKICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZwbGF0
Zm9ybUNvbnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihj
b250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAg
ICAgICB9KTsKIH0KIApAQCAtNTQsMTQgKzU0LDE0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhp
Y3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0
CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3Rvcnko
CiAgICAgICAgIFtjYWlyb0NvbnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvPihjb250ZXh0LCBjYWlyb0NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBjYWlyb0NvbnRleHQp
OwogICAgICAgICB9KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0
LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9ybUNv
bnRleHQocGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCisgICAg
LCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1f
cGxhdGZvcm1Db250ZXh0KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0Nv
bnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4
dChtX3BsYXRmb3JtQ29udGV4dC5jcigpKTsKQEAgLTY5LDkgKzY5LDkgQEAgR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBQbGEKIAogR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjYWlyb190KiBjYWlyb0NvbnRleHQp
CiAgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmlu
ZVRyYW5zZm9ybSB7IH0pCi0gICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCisgICAgLCBtX293bmVk
UGxhdGZvcm1Db250ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29u
dGV4dCkpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAg
ICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUu
Z2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3Io
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8u
aAppbmRleCA5OWUxODNjYzcwNTYwM2QyMzRlOGU4ZWQ5ZmQ2NjlkNTk2ZmJlZWEyLi4wODM3MjVk
NmZkMzgzMjYwN2FhNzYxZmY5ZjY4MzU5MDY2NGM5ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCkKICAgICAgICAgOiBwbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcAppbmRleCAxMzc0MTVmM2VhYmY1MzIxZmMzNWNhYzIwZTFlMTI3ODRkNzUyMjMz
Li5lMDFlNjBiOWVlZTdiYTE4Mzk3YTYzZWY0YTE3NjY3ZmZkYzRhNDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpzd2Fw
QnVmZmVyc0lmTmVlZGVkKCkKICAgICAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAgICAgIHByb3h5LnB1c2hO
ZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRC
bGVuZCwgR0xfUkdCQSkpOworICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRl
eHR1cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOwog
ICAgICAgICAgICAgfTsKICNpZiBVU0UoTklDT1NJQSkKICAgICAgICAgcHJveHlPcGVyYXRpb24o
ZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3Np
YUxheWVyLT5pbXBsKCkpLnByb3h5KCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEltYWdlQnVmZmVy
OjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjCiAKICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19j
cmVhdGUobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSkpOwogICAgIG1fZGF0YS5tX3BsYXRmb3JtQ29u
dGV4dC5zZXRDcihjci5nZXQoKSk7Ci0gICAgbV9kYXRhLm1fY29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZh
Y3RvcnkobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7CisgICAgbV9kYXRhLm1fY29udGV4dCA9
IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNy
ZWF0ZUZhY3RvcnkobV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0KSk7CiAgICAgc3VjY2VzcyA9IHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCmluZGV4IDgwZWM3MjU4YjY0MjFmYmY5
OGIzZWI1NTEzZDBjZWFmYmU3YWRmZGMuLjk5YzgyZTJlNmU5OTMxYzhmZWE5ZGUyMTVkMGYzNmM3
MTljMzg5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaApAQCAtNDgsNiArNDgsNyBAQCBz
dHJ1Y3QgU2hhZG93U3RhdGU7CiAvLyBjb2RlIGZyb20gdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50
IEdyYXBoaWNzQ29udGV4dC4KIAogY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm8geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3Jt
Q29udGV4dENhaXJvKTsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyhjYWlyb190
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0cuY3BwCmluZGV4IDgwYjVkNGZiZDI3MmRlZTQzNWI1Y2U3YzA4NGVlMzU5YTUwMWVk
NjQuLmQzNWZmMGVmZjk3MTk1MGVlZDFlM2ZkMDI2YmNkYTllYWZhMzRlNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
CkBAIC0xODcsNyArMTg3LDcgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3AKICAgICAgICAgaWYg
KCFjZ0NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9kYXRhLmNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsK
KyAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dD
b250ZXh0LmdldCgpKTsKICAgICB9CiAKICAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEs
IC0xKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggNzE4OGU0MzdkMmM4ODY3MjZkM2Qz
ZjRkZWI0MWJmMjVjYjA2YjM4MC4uZmY3ZmM2NjM2OGJkMmM2NjBjNDhjMTA2NzQ1ZjliYTg5YjNk
ZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtMTM3MSw3ICsxMzcxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRm
b3JtRGF0YShjb25zdCBGb250RGUKIAogICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y09ibGlxdWVdID0gY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250LmdldCgpLCBmb250RGVz
Y3JpcHRpb24pLmJvbGRPYmxpcXVlUGFpcigpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3lu
dGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlw
dGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNp
emUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmll
bnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlv
bi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKIH0KIAogdHlwZWRlZiBIYXNoU2V0PFJldGFpblB0cjxD
VEZvbnRSZWY+LCBXVEY6OlJldGFpblB0ck9iamVjdEhhc2g8Q1RGb250UmVmPiwgV1RGOjpSZXRh
aW5QdHJPYmplY3RIYXNoVHJhaXRzPENURm9udFJlZj4+IEZhbGxiYWNrRGVkdXBTZXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCmluZGV4IDFjZTBj
OTQ3ZTE3ZTlhNjhlZWFkM2E0ZDU3YjU5ZDhmYTE2Y2VmMjkuLjBkZTkzNGE3YjM4NDEwMGVlYjc2
ZDc3ZjQ1NmExODJmYmJhYmNlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uQ29yZVRleHQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgRm9udFJhbmdlcyBGb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm8KIAogICAgICAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9
IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udEZvclN5bnRoZXNpc0NvbXB1dGF0aW9uLmdl
dCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRPYmxpcXVlUGFpcigpOwogCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZh
bHNlLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9u
dERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmlu
Z01vZGUoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZv
bnQuZ2V0KCksIHNpemUsIGZhbHNlLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24u
b3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3Jp
cHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAg
ICAgQVNTRVJUKGZvbnRQbGF0Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2Eu
bW0KaW5kZXggZmVlYWNkNGQzMjY2MDVmMDQyOTFjZTljMzFlZWNiYmU5Y2IyMmI5Mi4uMmMzY2Fj
MGFhYTA1NjNhZjFlZDRiMzM5Mzg2OTg5ODMyMjA1N2M4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHQzRENvY29hLm1tCkBAIC05Miw2ICs5Miw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdGF0
dXNDaGVja1RocmVzaG9sZCA9IDU7CiAvLyBGSVhNRTogVGhpcyBjbGFzcyBpcyBjdXJyZW50bHkg
ZW1wdHkgb24gTWFjLCBidXQgd2lsbCBnZXQgcG9wdWxhdGVkIGFzCiAvLyB0aGUgcmVzdHJ1Y3R1
cmluZyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MDMgaXMg
ZG9uZQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqKSB7IH0KICAgICAKQEAgLTE4MSw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRHUFVCeVJlZ2lzdHJ5SUQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBjb250ZXh0T2JqLCBD
R0xQaXhlbEZvcgogCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhp
Y3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250
ZXh0KQogICAgIDogbV9hdHRycyhhdHRycykKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3ByaXZhdGUobWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMpKQogewogI2lmICFVU0UoQU5H
TEUpCiAjaWYgVVNFKE9QRU5HTF9FUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQppbmRleCA1YzczM2UzYmFkMWU5ZDNkMjVjMWVk
NTdmNWFjZGZmZjNhNGNiOTlmLi4zODc1ZmNmZDMwNmRmODZkMzQ3NGVlMTg2MGJhNTkwYTNhOGJj
MTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAgR3JhcGhpY3NDb250ZXh0JiBJT1N1cmZh
Y2U6OmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpCiAgICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0KQog
ICAgICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwogCi0gICAgbV9ncmFwaGljc0NvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oZW5zdXJlUGxhdGZvcm1Db250
ZXh0KCkpOworICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRl
eHQ+KGVuc3VyZVBsYXRmb3JtQ29udGV4dCgpKTsKICAgICBtX2dyYXBoaWNzQ29udGV4dC0+c2V0
SXNBY2NlbGVyYXRlZENvbnRleHQodHJ1ZSk7CiAKICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggNmU2
MGViZjFmZmE2NTkwZjZmMzRlNTI4YTNlMzM1ODMxOGI1ZWJkZi4uMjc4NzQ2ODE2NmZlZjFiNWY2
NDYyMWZlYjViYjVlNTBkOWQ2ZGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgQGVuZAogCiBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUo
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7
CiB9CiAKIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E6OlRleHRUcmFja1JlcHJlc2VudGF0
aW9uQ29jb2EoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNz
aW9uVlQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRp
b25TZXNzaW9uVlQuaAppbmRleCBhZGM5N2FkYzFmYTI0NTgwOTkwMDNjM2RlOWMwYWEzOGQ4NzYx
ODdkLi42MDAxYmI3MGExMDA0MTc0NDEwOTIxMzZmM2ZlNWI2MTc2MmNiMGNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lv
blZULmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5oCkBAIC0zNiw3ICszNiw4IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhl
bEJ1ZmZlclBvb2wqIENWUGl4ZWxCdWZmZXJQb29sUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEltYWdlUm90YXRpb25TZXNzaW9uVlQgeworY2xhc3MgSW1hZ2VSb3RhdGlvblNl
c3Npb25WVCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RydWN0IFJvdGF0aW9uUHJvcGVydGllcyB7CiAgICAgICAgIGJvb2wgZmxpcFggeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCmluZGV4IGRkMTM1NjllMDgxYTFiMzk5ZGNiYWJm
M2Y1ZTg4MzdmODRjMmFiNGUuLmNkNWI2ZmNjMDBkNzc0NjRlNmU2YmU3NDYzMTFlMTNkMGQyN2Uz
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVihDRkRpY3Rpb25hcnlS
ZWYgYXR0cmlidXRlcyk7CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnQo
Q1ZQaXhlbEJ1ZmZlclJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaAppbmRleCA4MWFiMmY5MjRkYWYyNmNkYTIyYzVlMjAw
Nzc2YzIxODAyMDIzYTNiLi5jOWZmNDE5ZDQzYmU0NWY0MDQ0MDMwNDBhZGQ4YzRkMDQ0MDJiYTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJl
Q2FjaGVDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1
cmVDYWNoZUNWLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNzIFRleHR1cmVDYWNoZUNWIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFRleHR1cmVDYWNoZUNWPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gY3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KaW5kZXggNTc3ZWMyODQ2MzkyYTcy
MTVkOTk4YWEzMTBkM2Q4ZDYzM2Y1ZjFlYy4uOWYxZjY2YjNiZDU5ZjU5YjFhZDNjYjcwNWM4NTY1
NDQyMjdlYzM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KQEAgLTUwLDcgKzUwLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVDYWNoZUNWPiBUZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
JiBjb250ZXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZXRhaW5QdHI8VGV4dHVy
ZUNhY2hlVHlwZT4gc3Ryb25nQ2FjaGUgPSBhZG9wdENGKGNhY2hlKTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNo
ZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZN
b3ZlKHN0cm9uZ0NhY2hlKSk7CiB9CiAKIFRleHR1cmVDYWNoZUNWOjpUZXh0dXJlQ2FjaGVDVihH
cmFwaGljc0NvbnRleHQzRCYgY29udGV4dCwgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+JiYg
Y2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9W
aWRlb1RleHR1cmVDb3BpZXJDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAppbmRleCA0M2E5NmRjMTQzNjU4NGFmYTc3MTg3OGIx
OTdmMmE5NTQ3ZGNjY2VlLi45ZDM5MmVhMDU4YjM2MDA4Y2E1NjljYTQ0ZmQ3MTI4ODNiMGQ2ZjU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1Rl
eHR1cmVDb3BpZXJDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgVGV4dHVyZUNhY2hlQ1Y7CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckNW
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBWaWRlb1RleHR1
cmVDb3BpZXJDVihHcmFwaGljc0NvbnRleHQzRCYpOwogICAgIH5WaWRlb1RleHR1cmVDb3BpZXJD
VigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDhmZWFh
MmY1ZDc1MzI4ZTQzNmJmOWQ4OGI4ZGMwNWJhYzFjMmUxZjMuLmM1NjFmNWY5ZWFiOTk2MjExYThi
MjIyMTk3NzZkNjhmMzllMTY0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBS
ZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gcmVwbGF5TGlzdDsKICAgICBpZiAoVU5MSUtF
TFkodHJhY2tSZXBsYXlMaXN0KSkKLSAgICAgICAgcmVwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8RGlzcGxheUxpc3Q+KCk7CisgICAgICAgIHJlcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3Bs
YXlMaXN0PigpOwogCiAgICAgc2l6ZV90IG51bUl0ZW1zID0gbV9kaXNwbGF5TGlzdC5pdGVtQ291
bnQoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUl0ZW1zOyArK2kpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3Bl
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmNwcAppbmRleCA1NTdiOGUwMDg2MmQ2YWJjNTgwNGI0MTQzMjEwMDgwYTgz
NTE2ZDFlLi4zMGJiNDhjYzhmMGM0OTU0NDhhYjY1ZjY4MTE3MmNjYzZiY2E1MzVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVmZXJlbmNlRmlsdGVy
T3BlcmF0aW9uOjpsb2FkRXh0ZXJuYWxEb2N1bWVudElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9h
ZGVyCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIVNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5h
bFVSSVJlZmVyZW5jZShtX3VybCwgKmNhY2hlZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCkpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKKyAgICBtX2Nh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVVuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJl
ZmVyZW5jZT4obV91cmwpOwogICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UtPmxvYWQo
Y2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVl
VHlwZS5jcHAKaW5kZXggNjU2M2M4YmZlZWIzNWJhNTMyN2Y0ODk2MWVkNjIxZmUzZDUzYWE0MS4u
NzFhNGFiMmY0ODI1ZjFhNTQzMTkxODAzNGIzNTMxZWNkYThhMGYyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcApAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250
UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dERlCiAgICAgICAgICAgICBGY1BhdHRlcm5BZGRTdHJpbmcocmVzdWx0UGF0dGVybi5nZXQoKSwg
RkNfRk9OVF9WQVJJQVRJT05TLCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPih2YXJp
YW50cy51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byBwbGF0Zm9ybURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCBy
ZXN1bHRQYXR0ZXJuLmdldCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwg
Zml4ZWRXaWR0aCwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0
aW9uLm9yaWVudGF0aW9uKCkpOworICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gbWFrZVVuaXF1ZTxG
b250UGxhdGZvcm1EYXRhPihmb250RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9u
dERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0Jv
bGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKICAg
ICAvLyBWZXJpZnkgdGhhdCB0aGlzIGZvbnQgaGFzIGFuIGVuY29kaW5nIGNvbXBhdGlibGUgd2l0
aCBGb250Y29uZmlnLiBGb250Y29uZmlnIGN1cnJlbnRseQogICAgIC8vIHN1cHBvcnRzIHRocmVl
IGVuY29kaW5ncyBpbiBGY0ZyZWVUeXBlQ2hhckluZGV4OiBVbmljb2RlLCBTeW1ib2wgYW5kIEFw
cGxlUm9tYW4uCiAgICAgLy8gSWYgdGhpcyBmb250IGRvZXNuJ3QgaGF2ZSBvbmUgb2YgdGhlc2Ug
dGhyZWUgZW5jb2RpbmdzLCBkb24ndCBzZWxlY3QgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCAxMzc2NWY0M2RhODY2OGQyZGU4
MmU2NzFkODE4MGQ2ODQ0Mjg0M2IwLi41ODk0M2QyYTkwZGZjNTUwMWYyZGNhYThlY2YwZTkwZTFh
YzdmNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAg
IEZUX0ZhY2UgZnJlZVR5cGVGYWNlOwogICAgIGlmIChGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFy
eSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBGVF9CeXRlKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZl
ci5zaXplKCksIDAsICZmcmVlVHlwZUZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlw
ZUZhY2UsIGJ1ZmZlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IDg2OTgxMzY0
NTEzYjhlNmYwZDdiMmRkYTViYjhkMWY4NzJlN2Y1NzYuLjcxZmRhMGQ5MjRjZDI1NWRiM2VmMTA3
N2Y5ZTEwNzgxNGUyNDNkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgUmVmUHRyPFRleHR1cmU+IFRl
eHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwg
aW50IHcKICAgICAgICAgbnVtVGlsZXMgPSAwOwogICAgIH0KIAotICAgIGF1dG8gdGV4dHVyZUlk
cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHVuc2lnbmVkPj4obnVtVGlsZXMpOworICAgIGF1
dG8gdGV4dHVyZUlkcyA9IG1ha2VVbmlxdWU8VmVjdG9yPHVuc2lnbmVkPj4obnVtVGlsZXMpOwog
ICAgIHRleHR1cmVJZHMtPmZpbGwoMCwgbnVtVGlsZXMpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1UaWxlczsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCmluZGV4IDRhOWZkZWMzZWM1OTEyY2UyNWIxZTZiMjViOTE0NGZhOGY0
MGM3ZDAuLmFiMzdlZTA0MWViMjhjM2M4MmYzNWFmMzYzY2NlZGI5YjQyYjE0OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMTYsNyAr
MTE2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXMKIHsKICAgICBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjppbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogICAgIGlmIChpc0F2
YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxh
eWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIpOyB9LAog
ICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIH0KIH0KQEAgLTExNDAsNyAr
MTE0MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQcmVzZXJ2ZXNQ
aXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1l
UmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29uc3QKIHsK
LSAgICBhdXRvIHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKTsKICAgICBpZiAobV9lcnJvck9jY3VyZWQgfHwgaXNMaXZlU3RyZWFtKCkpCiAgICAgICAg
IHJldHVybiB0aW1lUmFuZ2VzOwogCkBAIC0yMzc2LDcgKzIzNzYsNyBAQCBHc3RFbGVtZW50KiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvU2luaygpIGNvbnN0CiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5zdXJlQXVkaW9Tb3VyY2VQcm92aWRlcigpCiB7CiAg
ICAgaWYgKCFtX2F1ZGlvU291cmNlUHJvdmlkZXIpCi0gICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92
aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsK
KyAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVyID0gbWFrZVVuaXF1ZTxBdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyPigpOwogfQogCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGM1NzhlZWU2
ZDU1ZGQ0YjQzMDdjZDQyYmIwMGNjZjQ3NjI5N2JiMzMuLmIwMmUyOGVkY2Q0MDdmZGZmOGNiZWE3
OGFkMWE2ZTdiMGM3YjU4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTcxMCwxOSArNzEwLDE5IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKQogICAg
ICAgICAgICAgaWYgKCFwcm94eS5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1l
SG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5n
ZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOwor
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9s
ZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90
ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOwogCiAgICAgICAg
ICAgICBHTHVpbnQgdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBs
YXllckJ1ZmZlcjsKICAgICAgICAgICAgIGlmICh0ZXh0dXJlSUQpIHsKLSAgICAgICAgICAgICAg
ICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KHRleHR1cmVJRCwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZs
YWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAgICBsYXllckJ1
ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1
cmVJRCwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBKTsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0VW5tYW5h
Z2VkQnVmZmVyRGF0YUhvbGRlcihXVEZNb3ZlKGZyYW1lSG9sZGVyKSk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gcHJveHkuZ2V0QXZhaWxhYmxl
QnVmZmVyKGZyYW1lSG9sZGVyLT5zaXplKCksIEdMX0RPTlRfQ0FSRSk7CiAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCFsYXllckJ1ZmZlcikpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0
byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRB
dHRyaWJ1dGVzOjpnZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KGZy
YW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5oYXNBbHBoYUNoYW5uZWwoKSA/IEJpdG1h
cFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwotICAgICAg
ICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSkpOworICAgICAgICAgICAgICAg
ICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+KFdURk1vdmUodGV4dHVyZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBmcmFtZUhvbGRlci0+dXBkYXRlVGV4dHVyZShsYXllckJ1ZmZlci0+dGV4dHVyZUdMKCkp
OwogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRFeHRyYUZsYWdzKG1fdGV4dHVyZU1h
cHBlckZsYWdzIHwgKGZyYW1lSG9sZGVyLT5oYXNBbHBoYUNoYW5uZWwoKSA/IFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkQmxlbmQgOiAwKSk7CkBAIC05MTIsNyArOTEyLDcgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3MKICAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhv
bGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+
KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxH
c3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3Ms
IHRydWUpOwogCiAgICAgYXV0byB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7
CiAgICAgaWYgKCF0ZXh0dXJlSUQpCkBAIC05MjMsNyArOTIzLDcgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
R3JhcGhpY3MKICAgICAgICAgc2l6ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKIAogICAgIGlm
ICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09Q
SUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0g
bWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NP
TE9SX0NPTlZFUlRfRkxBRyk7CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIG91dHB1dFRl
eHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUs
IGZsaXBZLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pOwogfQpAQCAtOTM5LDcgKzkzOSw3IEBA
IE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUlt
YWdlRm9yQ3VycmVudFRpbWUoKQogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQo
KSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZp
ZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0Zy
YW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1h
a2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1h
cHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRl
eHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAtOTUzLDcgKzk1Myw3IEBAIE5hdGl2
ZUltYWdlUHRyIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAg
aWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9D
T1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIg
PSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJf
Q09MT1JfQ09OVkVSVF9GTEFHKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXItPmNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIDAsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBm
YWxzZSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMTI1LDYgKzExMjUsNyBAQCBzdGF0aWMgdm9pZCBzZXRSZWN0YW5nbGVUb1ZpZGVvU2lu
ayhHc3RFbGVtZW50KiB2aWRlb1NpbmssIGNvbnN0IEludFJlY3QmIHJlY3QpCiB9CiAKIGNsYXNz
IEdTdHJlYW1lckhvbGVQdW5jaENsaWVudCA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcjo6SG9sZVB1bmNoQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQoR1JlZlB0cjxHc3RFbGVt
ZW50PiYmIHZpZGVvU2luaykgOiBtX3ZpZGVvU2luayhXVEZNb3ZlKHZpZGVvU2luaykpIHsgfTsK
ICAgICB2b2lkIHNldFZpZGVvUmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmIHJlY3QpIGZpbmFsIHsg
c2V0UmVjdGFuZ2xlVG9WaWRlb1NpbmsobV92aWRlb1NpbmsuZ2V0KCksIHJlY3QpOyB9CkBAIC0x
MTQ3LDggKzExNDgsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1
c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCkKICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVy
IGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1h
cHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQo
KSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBH
TF9ET05UX0NBUkUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQ
dW5jaENsaWVudD4gaG9sZVB1bmNoQ2xpZW50ID0gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIb2xlUHVu
Y2hDbGllbnQ+KG1fdmlkZW9TaW5rLmdldCgpKTsKICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5z
ZXRIb2xlUHVuY2hDbGllbnQoV1RGTW92ZShob2xlUHVuY2hDbGllbnQpKTsKICAgICAgICAgICAg
IHByb3h5LnB1c2hOZXh0QnVmZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmlu
ZGV4IDdhZTdlY2VkNmU5ZjZiYjY1NTMzYjdkODkwMzAyMzdjY2NkZmZlNjYuLmUyNjA0YzRhZTNi
MDU5Y2UxZmI2ZTA0ZDU2OGYxYTgzNmEyMzA0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtOTcsNyArOTcsNyBAQCBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSwgcHVibAogI2VuZGlmCiAjZW5kaWYKIHsKLQorICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVEZWJ1Z0NhdGVn
b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaApp
bmRleCA1MWZkOWIyNWIwYjg0MzdjODQ5MTI1M2U2ZjAyMWU2NTdkMDNhODE3Li41YzU2ZWMzNDE4
ODgzMzQ1Nzg4ZmEwYjU0OWE5ODAzMjdkM2U3YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
VGV4dHVyZUNvcGllckdTdHJlYW1lci5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOwogY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIAogY2xhc3MgVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENvbG9yQ29udmVyc2lvbiB7CiAgICAgICAgIENvbnZl
cnRCR1JBVG9SR0JBLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cAppbmRleCA5NzNmNGQ0ZjAwMzIzNTZmMTc3ZWJkN2ZjNGI5ZTk0YTUyOTJmOTVhLi45ODEwYzI1
N2IzNzc2ZmZkOGQ0MjEyZTk2OTRiZTkyYjI1OTczNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTAsNiArNTAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKICNkZWZpbmUgTE9XX1FVRVVFX0ZBQ1RPUl9USFJFU0hPTEQgMC4yCiAKIGNs
YXNzIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOwogcHVi
bGljOgogICAgIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyosIFJl
c291cmNlUmVxdWVzdCYmKTsKQEAgLTYzMiw3ICs2MzMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
S2l0V2ViU3JjTWFrZVJlcXVlc3QoR3N0QmFzZVNyYyogYmFzZVNyYywgYm9vbCBub3RpZnlBc3lu
Y0NvbQogICAgICAgICAgICAgbG9hZE9wdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyOjpMb2FkT3B0aW9uOjpCdWZmZXJEYXRhOwogICAgICAgICBwcml2LT5yZXNvdXJjZSA9IHBy
aXYtPmxvYWRlci0+cmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbG9h
ZE9wdGlvbnMpOwogICAgICAgICBpZiAocHJpdi0+cmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHBy
aXYtPnJlc291cmNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudD4ocHJvdGVjdG9yLmdldCgpLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkp
KTsKKyAgICAgICAgICAgIHByaXYtPnJlc291cmNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4ocHJvdGVjdG9yLmdldCgpLCBSZXNvdXJjZVJlcXVl
c3QocmVxdWVzdCkpKTsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocHJvdGVjdG9yLmdl
dCgpLCAiU3RhcnRlZCByZXF1ZXN0Iik7CiAgICAgICAgICAgICBpZiAobm90aWZ5QXN5bmNDb21w
bGV0aW9uKQogICAgICAgICAgICAgICAgIGdzdF9iYXNlX3NyY19zdGFydF9jb21wbGV0ZShHU1Rf
QkFTRV9TUkMoc3JjKSwgR1NUX0ZMT1dfT0spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDRlOWQxOWQ4NTI3ZDY5
NjIwY2Y1YWE5NDEwNzM2MjgzODFiM2M5ZjAuLmU2ODgwZDk4ZTdmY2FkMWQwNTNmODRlZDM4YTZm
ZDgxOThkZTdiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmUKICAgICBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50
cygpOwogICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tc2VfZGVidWcsICJ3ZWJr
aXRtc2UiLCAwLCAiV2ViS2l0IE1TRSBtZWRpYSBwbGF5ZXIiKTsKICAgICBpZiAoaXNBdmFpbGFi
bGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXll
cik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVy
biBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsgfSwK
ICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICB9CiB9CkBAIC00NTksNyAr
NDU5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNldFJhdGUoZmxv
YXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlh
U291cmNlID8gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNv
dXJjZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c291cmNlU2V0dXAoR3N0RWxl
bWVudCogc291cmNlRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaC5jcHAKaW5kZXggMTE3MjQ1ODQxMGU5YTE0NTNiNjM1YjBmOGQ5MWI5ZmI0YTY5
NmM1OC4uMGYwOGMxOWRiZGJlNjliMDZmN2I3NTUzZjhhYjQ5N2Q0N2UzNzdhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnB1c2hOZXh0SG9sZVB1bmNo
QnVmZmVyKCkKICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkm
IHByb3h5KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5s
b2NrKCkpOwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRO
b3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CiAgICAgICAgICAgICBwcm94eS5wdXNo
TmV4dEJ1ZmZlcihXVEZNb3ZlKGxheWVyQnVmZmVyKSk7CiAgICAgICAgIH07CiAKQEAgLTE0MSw3
ICsxNDEsNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaDo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIp
OyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKICAgICAgICAg
Z2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guaAppbmRleCBmMGQwNGQ0YzYzZDkzMTIwYmNlODA1YWI4ZmVhMjg3YTAxZTA0NDJhLi44
YmY3MjEzMTg4MTljNDAyNjdiNzIxZmE5YjgyYWMxY2Q5MjZmOWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1
bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2UsIHB1YmxpYyBDCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1MYXllcgogI2VuZGlmCiB7
Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2goTWVkaWFQbGF5ZXIqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoKCk7CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDCiAg
ICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBNZWRpYVBsYXllcjo6RW1wdHk7IH07CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTWV0
YWRhdGE7IH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZm
ZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigpOyB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1
ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCk7IH07CiAKICAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPQm94LmgKaW5kZXggZTFhM2E4NjYzMTQ3NWNhYjdhOWIxNzFiNDA2MmQzOTNkODkwZTYw
Ni4uZWNmODk2OTNkYTMzODUyMDEyZTc1MDIxMTI5OTgwOTllYzhkYWMyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAtMzYsNiArMzYsNyBA
QCBjbGFzcyBEYXRhVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPQm94IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5JU09Cb3goKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKaW5k
ZXggNzBiYjg2MTEzMTZlNjg1Yjc2Yjc4ODM4YjVlZDA2MDM3NmI5YjFhOS4uMTg4M2JhNDdiZGYz
YTUyYWZiMmZmN2QwZGQ1Y2Q5ZGNkN2NkZDg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKQEAg
LTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09PcmlnaW5hbEZvcm1hdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPT3JpZ2luYWxGb3JtYXRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZybWEiOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Q
cm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwCmluZGV4IGQ4ZDc0MDFhNzU2
MDA0NmM5OGFmZjhjYjExZWIyZTcyMjNjOTgxY2UuLmJkZmRiZGM5NmNmMGUxYjUwYTcyODU4Mjg4
YzliMmY0NzRmN2QwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcApA
QCAtNTMsNyArNTMsNyBAQCBib29sIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZShE
YXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLmZpcnN0ID09IElTT1NjaGVtZVR5cGVC
b3g6OmJveFR5cGVOYW1lKCkpIHsKLSAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxJU09TY2hlbWVUeXBlQm94PigpOworICAgICAgICBtX3NjaGVtZVR5cGVCb3ggPSBt
YWtlVW5pcXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVUeXBl
Qm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtNjgsNyArNjgsNyBAQCBib29sIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJz
ZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICB9CiAKICAgICBpZiAob3B0
aW9uYWxCb3hUeXBlLnZhbHVlKCkuZmlyc3QgPT0gSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OmJv
eFR5cGVOYW1lKCkpIHsKLSAgICAgICAgbV9zY2hlbWVJbmZvcm1hdGlvbkJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g+KCk7CisgICAgICAgIG1fc2NoZW1lSW5m
b3JtYXRpb25Cb3ggPSBtYWtlVW5pcXVlPElTT1NjaGVtZUluZm9ybWF0aW9uQm94PigpOwogICAg
ICAgICBpZiAoIW1fc2NoZW1lSW5mb3JtYXRpb25Cb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5m
b0JveC5oCmluZGV4IGYzN2I3NjI0OWQ4ZTAwZmExN2EwNTU5MjllNzc2Njg1MTM3MzMzNjYuLjhl
NTY3M2UwNTE2YTY1MDE0ZjVjZDQ5ZjYxYWE3Yjc1MzhkMmNhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0Jv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveC5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIElTT1NjaGVtZVR5cGVCb3g7CiBjbGFzcyBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3ggOiBwdWJs
aWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZv
Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBi
b3hUeXBlTmFtZSgpIHsgcmV0dXJuICJzaW5mIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9u
Qm94LmNwcAppbmRleCBiNGYyNzdhNjg0N2NjMjBkNGZjOWQ2MjZmOWNhY2M3NDMwYWRhZjcwLi5j
ODNjNGZmN2IzOGFiZjFhZTIyZmZlNWU3MmM3YTFmODZhMDhlYjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJ
bmZvcm1hdGlvbkJveC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBJU09TY2hlbWVJbmZvcm1h
dGlvbkJveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAg
IGlmIChsb2NhbE9mZnNldCArIHNjaGVtZVNwZWNpZmljQm94VHlwZS52YWx1ZSgpLnNlY29uZCA+
IG9mZnNldCArIG1fc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBt
X3NjaGVtZVNwZWNpZmljRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9u
Qm94PigpOworICAgICAgICBtX3NjaGVtZVNwZWNpZmljRGF0YSA9IG1ha2VVbmlxdWU8SVNPVHJh
Y2tFbmNyeXB0aW9uQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lU3BlY2lmaWNEYXRhLT5y
ZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2No
ZW1lSW5mb3JtYXRpb25Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oCmluZGV4IDllZGIxODc4YTliYTkxOWJlYjE5ZDdi
NjIyM2Q5ZTdlNDY0ZjY4NTguLmU4ZWMwYzRjNjliNzRlODMzNDQ5ODk0MWYyNGVlZTQxMGYyY2Rk
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09T
Y2hlbWVJbmZvcm1hdGlvbkJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lSW5mb3Jt
YXRpb25Cb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVt
ZUluZm9ybWF0aW9uQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJzY2hpIjsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3gu
aAppbmRleCA2MTk2MTAzOWY0OGNmMmJjNmVlN2I4ODQ4MDczYzgzNzZlNTgzMTMwLi40YjhmMjYz
Mzc1MGY4YWRmOTBiYzI3YzJkMGNmMTRlZjk4MmMxNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKQEAgLTI5
LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09TY2hlbWVUeXBlQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPU2NoZW1lVHlwZUJveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNjaG0iOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFj
a0VuY3J5cHRpb25Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guaAppbmRleCBmNGVmZTI4MTA1MWUzYzdiMjlkYmVmNzhlNDRk
YTNiMDM4NzgwM2YzLi40N2ZhNDk3MjQ2YzcxNWJlMWQyY2VmOWIwZWE4N2RkN2Y3OWVmNTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tF
bmNyeXB0aW9uQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNyeXB0aW9uQm94IDog
cHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNyeXB0
aW9uQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBG
b3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAidGVuYyI7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcAppbmRleCA5ZWM0MDg5
NGYxZTI4YTA1YTIxNGNiMzIzNTE0ZjdiMTM5NTVkMjg0Li40YjUxNmVlOGRkN2Y3ZDIzN2U4ZDYy
NzI3OTdiMDMyZGQxZjVhY2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBKU0M6OkRh
dGFWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElTT1N0cmluZ0JveCA6IHB1
YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPU3RyaW5nQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7
CiBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZW50cygpIHsgcmV0dXJuIG1fY29udGVu
dHM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1ZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZU
VEN1ZS5oCmluZGV4IGE2MTYwYjY2YWU5NDY4MjA2NzdhZDI5MzRiMTgxZGViOTNjYzRmNDkuLmFl
MjNiZWZmZmVkNjRhNmRlMjg5MTc2ZTQxNTEwMTFmMDY3Yzk4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKQEAgLTM4LDcgKzM4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTiBieXRlcyA6IEN1ZVRpbWVCb3ggOiBib3ggOiBv
cHRpb25hbAogLy8gTiBieXRlcyA6IEN1ZVNldHRpbmdzQm94IDogYm94IDogb3B0aW9uYWwKIC8v
IE4gYnl0ZXMgOiBDdWVQYXlsb2FkQm94IDogYm94IDogcmVxdWlyZWQKLWNsYXNzIElTT1dlYlZU
VEN1ZSA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgSVNPV2ViVlRUQ3VlIGZpbmFsIDogcHVibGlj
IElTT0JveCB7CiBwdWJsaWM6CiAgICAgSVNPV2ViVlRUQ3VlKGNvbnN0IE1lZGlhVGltZSYgcHJl
c2VudGF0aW9uVGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAppbmRleCAzMjdlYmY2MDYyNTkwOWZiZTJjNWI2YmQ1MTk4YWNhMTlh
NDVkNGE0Li41MDc5MzhiZTExMDVjZjQyNjA0NTU5MTNiMGM1ZTk5ZDRmNTRmOWU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250RGVzY3JpcHRvci5n
ZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9u
dERlc2NyaXB0b3IuZ2V0KCkpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1
cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50
aW5nT3BlcmF0aW9uLmgKaW5kZXggODNmNzc2Njc5ZTE4OWM2ZmNlNGVmODYyNTdiMDA1ZDExMzc0
ZTIyZC4uNmYyMTViMjdhYWQ5NmMzZmE5YzIwN2YzMjBlZjllMzJiNDNiN2NjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRp
bmdPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFj
ZSBOaWNvc2lhIHsKIHN0cnVjdCBQYWludGluZ09wZXJhdGlvblJlcGxheSB7IH07CiAKIHN0cnVj
dCBQYWludGluZ09wZXJhdGlvbiB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHZpcnR1YWwgflBhaW50aW5nT3BlcmF0aW9uKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2Nl
bmVJbnRlZ3JhdGlvbi5jcHAKaW5kZXggMTA5YzJjNTc3Njc5YTEyMTRhYTZlYTEwMWM2ZjQ4MGZi
YTJlYzYwMS4uNWJlZTYxM2ZjZjZiNDZhMDdjNjI4ZTU4MDE2ZjQ5YmI5MDIxYjFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2Nl
bmVJbnRlZ3JhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9p
ZCBTY2VuZUludGVncmF0aW9uOjpyZXF1ZXN0VXBkYXRlKCkKIAogc3RkOjp1bmlxdWVfcHRyPFNj
ZW5lSW50ZWdyYXRpb246OlVwZGF0ZVNjb3BlPiBTY2VuZUludGVncmF0aW9uOjpjcmVhdGVVcGRh
dGVTY29wZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlU2NvcGU+KG1h
a2VSZWYoKnRoaXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxVcGRhdGVTY29wZT4obWFrZVJl
ZigqdGhpcykpOwogfQogCiBTY2VuZUludGVncmF0aW9uOjpDbGllbnQ6On5DbGllbnQoKSA9IGRl
ZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCmluZGV4IDJiMWFlY2YwZDFiN2U2YTM0MWJmOTRiZmZhZWQyMjBmMWE0NTg2
MzguLjUwZTBjM2M3ZDk3NjgyNmJhN2JiODE4NWQxZWUxNDIxMjlhZGEwMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBA
IC02OCw3ICs2OCw3IEBAIGF1dG8gY3JlYXRlQ29tbWFuZChBcmdzJiYuLi4gYXJndW1lbnRzKSAt
PiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxPcGVyCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogYXV0byBjcmVhdGVDb21tYW5kKCkgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jh
c2Vfb2Y8T3BlcmF0aW9uRGF0YTw+LCBUPjo6dmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxQYWludGlu
Z09wZXJhdGlvbj4+CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUPigpOwogfQogCiBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpDYWly
b09wZXJhdGlvblJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGFpbnRpbmdPcGVy
YXRpb25zJiBjb21tYW5kTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBh
aW50aW5nQ29udGV4dENhaXJvLmNwcAppbmRleCAwYzhhNjcwZTNhMGEzNjMwN2UzZjI5OWVjZGEw
MjU1MmZkNzc0ZWQxLi5iMzUwOGQ1MTdiMjRlNDc1YzA4YWY0OGIzM2U0MzFmZDI3OTIwNGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8u
Y3BwCkBAIC03MCw4ICs3MCw4IEBAIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6
Rm9yUGFpbnRpbmcoQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIH0pOwogCiAgICAgbV9jYWlyby5j
b250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fY2Fpcm8uc3VyZmFjZS5nZXQoKSkpOwot
ICAgIG1fcGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9y
bUNvbnRleHRDYWlybz4obV9jYWlyby5jb250ZXh0LmdldCgpKTsKLSAgICBtX2dyYXBoaWNzQ29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250
ZXh0KSk7CisgICAgbV9wbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlBsYXRm
b3JtQ29udGV4dENhaXJvPihtX2NhaXJvLmNvbnRleHQuZ2V0KCkpOworICAgIG1fZ3JhcGhpY3ND
b250ZXh0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSgqbV9wbGF0Zm9ybUNvbnRleHQp
KTsKIH0KIAogUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjp+Rm9yUGFpbnRpbmco
KQpAQCAtMTA0LDEwICsxMDQsMTAgQEAgdm9pZCBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFp
bnRpbmc6OnJlcGxheShjb25zdCBQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW4KIAogUGFpbnRp
bmdDb250ZXh0Q2Fpcm86OkZvclJlY29yZGluZzo6Rm9yUmVjb3JkaW5nKFBhaW50aW5nT3BlcmF0
aW9ucyYgcGFpbnRpbmdPcGVyYXRpb25zKQogewotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KAorICAgIG1fZ3JhcGhpY3ND
b250ZXh0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KAogICAgICAgICBb
JnBhaW50aW5nT3BlcmF0aW9uc10oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWlyb09wZXJh
dGlvblJlY29yZGVyPihjb250ZXh0LCBwYWludGluZ09wZXJhdGlvbnMpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRp
bmdPcGVyYXRpb25zKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVU
ZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCmlu
ZGV4IGQ0YzliNjA1YjRjZDI4ZTM0OGVmZDg1MzM1MDM4YjU4YzlhNGRkZmEuLjhlMzc5MGY3YWI1
NGY2YjNkOTU2ZjMwNzA0YzQyOWMyYWNkYzMxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0
dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBhdXRvIEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVh
dGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBb
XShCYWNraW5nU3RvcmUmKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxC
YWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3Jl
VGV4dHVyZU1hcHBlckltcGwuaAppbmRleCBlYWQ0OTc3NmU1MGEyM2NmZDUwMTRhN2U5NjQzMGIz
ZGUxMjRkYjBhLi5kNDM2ZjIwYzMxNjFjMDU1NGE1YWEyMmEzOTMwYTk5NWVlYzM1YTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4
dHVyZU1hcHBlckltcGwuaApAQCAtNDEsNiArNDEsNyBAQAogbmFtZXNwYWNlIE5pY29zaWEgewog
CiBjbGFzcyBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBCYWNr
aW5nU3RvcmU6OkltcGwsIHB1YmxpYyBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZhY3Rv
cnkgY3JlYXRlRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVN
YXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4
IDM4ZmRkOTNkYTZiMTM4ODMxNDA1OTE2NTNjZGYyOWUwN2RlMzIzOTYuLjc1NjkyYzdjNGE3YmZk
YjE4NzFkZjE4MDJlMzg3NzUzNmI2MTU1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4
dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIGF1dG8gQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJ
bXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAog
ICAgICAgICBbXSh1aW50NjRfdCwgQ29tcG9zaXRpb25MYXllciYpIHsKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxh
eWVyVGV4dHVyZU1hcHBlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwu
aAppbmRleCA2NTU1YmZiMDgwMjYxZThhMzA5NWJkZTQ4M2EwNjFiYjU0MjE0NTc0Li41MzBhNjc1
MTAxNzI2ZWEyODcyOGM1M2Q4ODhkYmRlZjdhYWU3OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25M
YXllclRleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbC5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKIG5hbWVz
cGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBs
IGZpbmFsIDogcHVibGljIENvbXBvc2l0aW9uTGF5ZXI6OkltcGwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3Rvcnko
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggNTYxNzI4YjVlZjFmNDBkODBjNTM1OTky
NjcxMDY2YWQ4NzQ4MTlhNy4uMmZiMGVjOTU5MTVhZWIwYmEwOTZmODBiYzY5MGQyZjNiMjg0OGM0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVu
dExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGF1dG8gQ29udGVu
dExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoQ2xpZW50JiBjbGllbnQpIC0+
IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgWyZjbGllbnRdKENvbnRl
bnRMYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KGNsaWVudCk7CiAgICAgICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCmluZGV4IGVmOTZhNjA4MzE2MmRlNDFjMjdkZTRiZjM1
N2I4YTRmY2FmOGQ5Y2YuLmIwMTA1YjczYWMyMjY0ZjU3Y2E3YjdlNTAzZWNmNzBkYTUyN2RhN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIENvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsIGZpbmFsIDogcHVibGljIENvbnRlbnRMYXllcjo6SW1w
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xp
ZW50IHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3Bw
CmluZGV4IDUyZWM3MGI2ODFmN2JjNTYzYTY3NDc1NDM2MjM4NzZiMDMxMzlhOWIuLjlhOWJkNDY4
M2IyNjc0MmFmZWNiMTQ5MWY2MTQ0ZjJhNzhjNTk1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFHQzNETGF5ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgR0MzRExheWVyOjpzd2Fw
QnVmZmVyc0lmTmVlZGVkKCkKICAgICAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9jb250ZW50TGF5ZXItPmltcGwoKSku
cHJveHkoKTsKIAogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAg
ICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVy
ZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAg
IHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxh
Z3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2Nv
bnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RM
YXllci5oCmluZGV4IDMyZGI5ZGQzN2E2ZjBkOWZhOGQ0ZDE4OGViMThmOGFlMTQ3NWEwMGIuLjlm
NTQ0NWJiZTExODNjZTc0ODU1OTNjYmJiZjE2NTBlZGNjZTQzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhR0MzRExheWVyLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgR0xDb250ZXh0Owog
bmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBHQzNETGF5ZXIgOiBwdWJsaWMgQ29udGVudExh
eWVyVGV4dHVyZU1hcHBlckltcGw6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgR0MzRExheWVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEJiwg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAgICB2aXJ0dWFsIH5H
QzNETGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGEyYWUzNGEzMTMyN2U4NzE1
NjU0MTQ2ZDE4Zjc3YzdhNjdmMjQyMTYuLmQzNTNjOGJlMWI1YmZhMTE2YjZjYjg1MjA5NzAyNzdj
YzkzMjQ1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzcsNyArMzcsNyBAQCBhdXRv
IEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9y
eQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXShJbWFnZUJhY2tpbmcmKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFw
cGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQmFja2luZ1Rl
eHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFj
a2luZ1RleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaApp
bmRleCAxYTYyM2FmYTQwOTNiMjJhYzIwZDEzYjMyOTM2MDgzYWNiMDhlYTgwLi40OWIxZTliMmVj
MDM1NTJhMGJkNjEyMGFlNzdiOGU2OTRhOTQ2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4
dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaApAQCAt
NDIsNiArNDIsNyBAQCBjbGFzcyBJbWFnZTsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3Mg
SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgSW1hZ2VCYWNraW5n
OjpJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xD
b21tb24uaAppbmRleCA3YzYxNGZiNDAzMzU4ZWE0MDQ1NmQ4NDYyY2Y4ZGM1YmMzYTRlYjE5Li4x
NDcyMTc5MDc3MjdjYWVlYTI3ZWY2OGEwNjljYzA1MzEwODIwZDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29t
bW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnMzRE9wZW5HTENvbW1vbi5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbiA6IHB1YmxpYyBFeHRlbnNpb25z
M0QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcAppbmRleCBlNjg0OGZjZWNhNDFlOTczNmYyYTM4MTdhOWZkMDNjZWJhZTNhYzEx
Li5iOTYzNjNiNTUxOTM1NmM4Y2RmNDY1NDM2MzI2ZWQwNmNlY2VkODhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0Qm
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5z
aW9ucykKLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25z
M0RPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9u
cyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50
KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMjRkZjAzNWUyODhlMWVi
MmY4YWY5ZjdhYjkxZDc3OWQwYWNhNDllLi4yYTBlNWI3NmU0ZDZiYWI3MGU5MGIyZjNkMjhlYjQz
YzA3ZjQyNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxl
U2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIEFOR0xFUmVzb3VyY2VzLkhhc2hG
dW5jdGlvbiA9IG5hbWVIYXNoRm9yU2hhZGVyOwogCiAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNo
YWRlcnMpCi0gICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8
U2hhZGVyTmFtZUhhc2g+KCk7CisgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VV
bmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hh
ZGVyKG5hbWVIYXNoTWFwRm9yU2hhZGVycy5nZXQoKSk7CiAgICAgbV9jb21waWxlci5zZXRSZXNv
dXJjZXMoQU5HTEVSZXNvdXJjZXMpOwogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBBTkdMRVNoYWRlcgogICAgICAgICAvLyBBdHRyaWJ1dGVzIGFyZSBhIHNwZWNpYWwgY2FzZTog
dGhleSBtYXkgYmUgcmVxdWVzdGVkIGJlZm9yZSBhbnkgc2hhZGVycyBoYXZlIGJlZW4gY29tcGls
ZWQsCiAgICAgICAgIC8vIGFuZCBhcmVuJ3QgZXZlbiByZXF1aXJlZCB0byBiZSB1c2VkIGluIGFu
eSBzaGFkZXIgcHJvZ3JhbS4KICAgICAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0g
ICAgICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRl
ck5hbWVIYXNoPigpOworICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gbWFrZVVu
aXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKICAgICAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9y
U2hhZGVyKG5hbWVIYXNoTWFwRm9yU2hhZGVycy5nZXQoKSk7CiAKICAgICAgICAgYXV0byBnZW5l
cmF0ZWROYW1lID0gZ2VuZXJhdGVIYXNoZWROYW1lKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
RVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMRVMuY3BwCmluZGV4IDI0MzA0NmQ5ODlhZDczOGY3YzlmNzE0OTU1Njdj
OTZiYjM0YzU2NDEuLjcwYTIwZDUwYzM1MjFhNjEyM2U2ZWZhZjFmNDc2OGY2NDk1Y2RlNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKQEAgLTI0Miw3ICsyNDIs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgp
CiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAg
ICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3Vu
aXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAg
ICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhp
cywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNl
bmRpZgpAQCAtMjcxLDcgKzI3MSw3IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMKIEdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMg
YXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSBy
ZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJlZENvbnRleHQpCiAgICAgOiBtX2F0
dHJzKGF0dHJpYnV0ZXMpCiAgICAgLCBtX2NvbXBpbGVyKGlzR0xFUzJDb21wbGlhbnQoKSA/IFNI
X0VTU0xfT1VUUFVUIDogU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCkKLSAgICAsIG1fcHJp
dmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVu
ZGVyU3R5bGUpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlPih0aGlzLCByZW5kZXJTdHlsZSkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRD
b250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGVkNmNj
ZjE5NGJiZWUxZTAwZmQ0MzlmNjFhNmRlNjJlNDAzMDJlYTMuLjhmZDNhZDRmNzJkNzY0YmQ5NWQy
MjBmNTgxZWQyYjc5NjI4ODNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQz
RFRleHR1cmVNYXBwZXIuY3BwCkBAIC0xMDYsOSArMTA2LDkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6
OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVz
LCBIb3MKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0
KTsKICNpZiBVU0UoTklDT1NJQSkKLSAgICBtX25pY29zaWFMYXllciA9IHN0ZDo6bWFrZV91bmlx
dWU8Tmljb3NpYTo6R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOworICAgIG1fbmljb3Np
YUxheWVyID0gbWFrZVVuaXF1ZTxOaWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCByZW5kZXJTdHls
ZSk7CiAjZWxzZQotICAgIG1fdGV4bWFwTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVN
YXBwZXJHQzNEUGxhdGZvcm1MYXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX3RleG1h
cExheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlz
LCByZW5kZXJTdHlsZSk7CiAjZW5kaWYKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAt
MzI1LDEwICszMjUsMTAgQEAgRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0
ZW5zaW9ucygpCiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BFTkdMX0VTKQog
ICAgICAgICAvLyBnbEdldFN0cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KLSAgICAg
ICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4o
dGhpcywgIGZhbHNlKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNp
b25zM0RPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKICNlbHNlCiAgICAgICAgIC8vIEZyb20gT3Bl
bkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNl
IGdsR2V0U3RyaW5naS4KLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxF
eHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkg
Pj0gMzIwKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RP
cGVuR0w+KHRoaXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNl
bmRpZgogICAgIH0KICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRm
b3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKaW5kZXggMTRmMWRiZjE4ZDkxYjM5MDc1
ZTJkNTBmMjE0OWI3NzZiYmMxNzQ5My4uNjYzMjMxNTY5NWJhMjFjMjY3ZDE1NTkzMmViYTkxNDdm
YjY2YWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
ci5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGhv
bGRlcihtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxh
eWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJl
U2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKKyAgICAgICAg
bV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0
ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAg
ICB9CiAKICAgICBtX2NvbnRleHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oCmluZGV4IDhiNjAyMTRhYmE5YjgzY2Ex
OTMwZjEzNWM3NTM0OGIyNjZmZTVjYWMuLmU2ZjA5Yzg3OTg1NDg2MzJlZTRiMGFhNWE1NjMwNjE1
YTI0YTM3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVy
LmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgR0xDb250ZXh0OwogY2xhc3MgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTsKIAogY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxh
eWVyIDogcHVibGljIFBsYXRmb3JtTGF5ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcihHcmFwaGljc0Nv
bnRleHQzRCYsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAgICAgdmlydHVhbCB+
VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmlu
ZGV4IDk3NGI4NTc4Yjg4YWE2NDM1MDkxZThiMGMzOGJiMmRiNzEwZWYxMDIuLmEyZjc1ODY2ZTMy
M2I4ZmRiYTQzYTAwN2Q0NDdhYWE0NjU3NmJmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBA
IC0xODYsNyArMTg2LDcgQEAgVGV4dHVyZU1hcHBlckdMOjpUZXh0dXJlTWFwcGVyR0woKQogCiAg
ICAgbV9kYXRhID0gbmV3IFRleHR1cmVNYXBwZXJHTERhdGEocGxhdGZvcm1Db250ZXh0KTsKICNp
ZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgbV90ZXh0dXJlUG9vbCA9IHN0ZDo6bWFrZV91
bmlxdWU8Qml0bWFwVGV4dHVyZVBvb2w+KG1fY29udGV4dEF0dHJpYnV0ZXMpOworICAgIG1fdGV4
dHVyZVBvb2wgPSBtYWtlVW5pcXVlPEJpdG1hcFRleHR1cmVQb29sPihtX2NvbnRleHRBdHRyaWJ1
dGVzKTsKICNlbmRpZgogfQogCkBAIC03OTAsNyArNzkwLDcgQEAgUmVmPEJpdG1hcFRleHR1cmU+
IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZShHTGludCBpbnRlcm5hbEZvcm1hdCkKIAog
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3Jl
YXRlQWNjZWxlcmF0ZWQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVN
YXBwZXJHTD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7CiB9
CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcAppbmRleCA3YWZkZjMwYTA1YmNhNTM5N2I4MDE4YmZlYmQ4OWUwZTFkYTUwMzMzLi5lMTFh
MGJiMjdiODEwYzJkNTI3NmIyYTliMGM1MDlmODg5NTA2NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmYKICAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJl
R0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVy
bmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5yZXNldChtX3NpemUpOwogICAgIHN0YXRpY19jYXN0
PEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUuZ2V0KCkpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJl
KG1fdGV4dHVyZUlEKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RG
TW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCmluZGV4IGM3MTRmNmQ3OGMx
Y2YxYTYxZDRkZmY2YjQyMDUyMWIwMmVjZDdjNTAuLjM3OTM2NzVhYzhkNmIzYzMyYTNiMzE4MTkz
ZTQ5YTdiMzdkYzQ4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eS5jcHAKQEAgLTcxLDggKzcxLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY28K
ICAgICBpZiAobV90YXJnZXRMYXllciAmJiBtX2N1cnJlbnRCdWZmZXIpCiAgICAgICAgIG1fdGFy
Z2V0TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsKIAotICAg
IG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6
VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRC
dWZmZXJzVGltZXJGaXJlZCk7Ci0gICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7CisgICAgbV9yZWxl
YXNlVW51c2VkQnVmZmVyc1RpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZp
cmVkKTsKKyAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lciA9IG1ha2VVbmlxdWU8UnVu
TG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1
cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNvbXBvc2l0
b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKTsKIAogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAg
ICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXItPnNldFByaW9yaXR5KFJ1bkxvb3BTb3Vy
Y2VQcmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVUaW1lcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDM2
N2Q4YTUzY2YzNzBkMjIwMmQ2ZjM0MDFjZGNiM2EwMmZmNDJjMmIuLmQ0NzU3MTBiYTBjZGRmYmNk
YmRhMGM2OGNlMzBiODFlZmFhZDY5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC05ODEsNyArOTgxLDcgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKIAogICAg
IC8vIEVuc3VyZSB0aGUgVGlsZWRCYWNraW5nU3RvcmUgb2JqZWN0LCBhbmQgZW5mb3JjZSBhIGNv
bXBsZXRlIHJlcGFpbnQgaWYgaXQncyBub3QgYmVlbiBwcmVzZW50IHlldC4KICAgICBpZiAoIWxh
eWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSkgewotICAgICAgICBsYXllclN0YXRlLm1haW5CYWNr
aW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQmFja2luZ1N0b3JlPihpbXBsLCBlZmZl
Y3RpdmVDb250ZW50c1NjYWxlKCkpOworICAgICAgICBsYXllclN0YXRlLm1haW5CYWNraW5nU3Rv
cmUgPSBtYWtlVW5pcXVlPFRpbGVkQmFja2luZ1N0b3JlPihpbXBsLCBlZmZlY3RpdmVDb250ZW50
c1NjYWxlKCkpOwogICAgICAgICBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQgPSB0cnVl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKaW5kZXggMmMyNGUwODRlMzI5NmE0N2UwOWU5
NjEwZDc0OGQ2YTg4ZmU0OTY1Ni4uZmJjMjQ1YmUxZTUwMzg1M2M3MzJmMDFlNWEzNGU1NTg0YTVi
M2MzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL1RpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFRpbGVkQmFja2luZ1N0b3JlOwogCiBjbGFzcyBUaWxlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludFBvaW50IENv
b3JkaW5hdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IDNiZTQzMTFkZWFhMDI0OTdjN2VkMWNkY2ExMzQ1YmE1YTY4MDMxMDkuLjRhNjk3
ODIyZTRkZTJjZGI4YjY2ZjgxZDQwNGQ4ZGJlODJiNDk4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQg
VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0
LCBjb25zdCBJbnRSZWN0JiBzCiAgICAgdW5zaWduZWQgdGlsZXNUb0NyZWF0ZUNvdW50ID0gdGls
ZXNUb0NyZWF0ZS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHRpbGVzVG9D
cmVhdGVDb3VudDsgKytuKSB7CiAgICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgY29vcmRpbmF0ZSA9
IHRpbGVzVG9DcmVhdGVbbl07Ci0gICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIHN0ZDo6
bWFrZV91bmlxdWU8VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKKyAgICAgICAgbV90aWxlcy5h
ZGQoY29vcmRpbmF0ZSwgbWFrZVVuaXF1ZTxUaWxlPigqdGhpcywgY29vcmRpbmF0ZSkpOwogICAg
IH0KICAgICByZXF1aXJlZFRpbGVDb3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggYzg4ZTliZWY5ZDY2Y2EyYjU1MDE4YzkwZjRiMGE0
MjhiNDY4MmVmOC4uNGVhZjAwMTEyMGM0N2ZmY2U1NWFiNGRmYTkyMTgzY2U4YjMxOTRmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgVHJhbnNmb3JtU3Rh
dGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVy
KQogICAgIGlmIChtX21hcFF1YWQpIHsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IG90aGVy
Lm1fbGFzdFBsYW5hclF1YWQ7CiAgICAgICAgIGlmIChvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRh
cnlRdWFkKQotICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7Cisg
ICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1
YWQ+KCpvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7CiAgICAgfQpAQCAt
NTAsNyArNTAsNyBAQCBUcmFuc2Zvcm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPShj
b25zdCBUcmFuc2Zvcm1TdGF0ZSYgb3RoZXIpCiAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9
IG51bGxwdHI7CiAKICAgICBpZiAob3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkKLSAgICAg
ICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRp
b25NYXRyaXg+KCpvdGhlci5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAgICAgICAgbV9hY2N1
bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhl
ci5tX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAgICAgICAgCiAgICAgcmV0dXJuICp0aGlzOwog
fQpAQCAtMTI5LDEyICsxMjksMTIgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybUZyb21Db24KICAgICAvLyBJ
ZiB3ZSBoYXZlIGFuIGFjY3VtdWxhdGVkIHRyYW5zZm9ybSBmcm9tIGxhc3QgdGltZSwgbXVsdGlw
bHkgaW4gdGhpcyB0cmFuc2Zvcm0KICAgICBpZiAobV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkgewog
ICAgICAgICBpZiAobV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCi0gICAg
ICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJh
bnNmb3JtKTsKKyAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyICogKm1fYWNjdW11
bGF0ZWRUcmFuc2Zvcm0pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2FjY3VtdWxhdGVk
VHJhbnNmb3JtLT5tdWx0aXBseSh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKICAgICB9IGVsc2Ug
aWYgKGFjY3VtdWxhdGUgPT0gQWNjdW11bGF0ZVRyYW5zZm9ybSkgewogICAgICAgICAvLyBNYWtl
IG9uZSBpZiB3ZSBzdGFydGVkIHRvIGFjY3VtdWxhdGUKLSAgICAgICAgbV9hY2N1bXVsYXRlZFRy
YW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9y
bUZyb21Db250YWluZXIpOworICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVu
aXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAg
fQogICAgIAogICAgIGlmIChhY2N1bXVsYXRlID09IEZsYXR0ZW5UcmFuc2Zvcm0pIHsKQEAgLTIw
OCw3ICsyMDgsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5
UXVhZChjb25zdCBGbG9hdFF1YWQqIHF1YWQpCiAgICAgLy8gTWFwIHRoZSBxdWFkIGJhY2sgdGhy
b3VnaCBhbnkgdHJhbnNmb3JtIG9yIG9mZnNldCBiYWNrIGludG8gdGhlIGxhc3QgZmxhdHRlbmlu
ZyBjb29yZGluYXRlIHNwYWNlLgogICAgIEZsb2F0UXVhZCBiYWNrTWFwcGVkUXVhZCgqcXVhZCk7
CiAgICAgbWFwUXVhZChiYWNrTWFwcGVkUXVhZCwgaW52ZXJzZURpcmVjdGlvbigpKTsKLSAgICBt
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KGJh
Y2tNYXBwZWRRdWFkKTsKKyAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1
ZTxGbG9hdFF1YWQ+KGJhY2tNYXBwZWRRdWFkKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6
bWFwUXVhZChGbG9hdFF1YWQmIHF1YWQsIFRyYW5zZm9ybURpcmVjdGlvbiBkaXJlY3Rpb24sIGJv
b2wqIHdhc0NsYW1wZWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKaW5kZXggMTA4NjM3
NDAwYTIwZmEyZjA5ZGY2YWQ0MzkzM2NhN2RhMTdmNDg2MS4uYjYyNTgzNmE1Y2UyMjViZjQ3ZjMz
MGMwOGMyOWQ4Yzc1NjUyZWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaApAQCAtODQsNyAr
ODQsNyBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZSB7CiAgICAgICAgIC8vIFdlIG11c3QgYmUgaW4g
YSBmbGF0dGVuZWQgc3RhdGUgKG5vIGFjY3VtdWxhdGVkIG9mZnNldCkgd2hlbiBzZXR0aW5nIHRo
aXMgc2Vjb25kYXJ5IHF1YWQuCiAgICAgICAgIEFTU0VSVChtX2FjY3VtdWxhdGVkT2Zmc2V0ID09
IExheW91dFNpemUoKSk7CiAgICAgICAgIGlmIChxdWFkKQotICAgICAgICAgICAgbV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7Cisg
ICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1
YWQ+KCpxdWFkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25k
YXJ5UXVhZCA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCBkMzFhMjU3OWZiMWUxYzc5
NDI1ZDAyOTA1ZWJlYmM4OGQxNGFkZDUwLi44Zjc3MDI3NWRlNjk5NTY4Yzg1MTVhZWEwZjJjZmEw
ZTUyMDU2NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udERlCiAgICAgYm9vbCBzeW50aGVzaXplQm9sZCA9IGlzR0RJRm9udFdlaWdodEJvbGQo
d2VpZ2h0KSAmJiAhaXNHRElGb250V2VpZ2h0Qm9sZChsb2dGb250LmxmV2VpZ2h0KTsKICAgICBi
b29sIHN5bnRoZXNpemVJdGFsaWMgPSBpc0l0YWxpYyhmb250RGVzY3JpcHRpb24uaXRhbGljKCkp
ICYmICFsb2dGb250LmxmSXRhbGljOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZvbnRQbGF0Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQpLCBmb250RGVzY3JpcHRpb24uY29t
cHV0ZWRQaXhlbFNpemUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJdGFsaWMsIHVzZUdE
SSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KFdURk1v
dmUoaGZvbnQpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhlc2l6
ZUJvbGQsIHN5bnRoZXNpemVJdGFsaWMsIHVzZUdESSk7CiAKICNpZiBVU0UoQ0cpCiAgICAgYm9v
bCBmb250Q3JlYXRpb25GYWlsZWQgPSAhcmVzdWx0LT5jZ0ZvbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcAppbmRleCAzODdhMjM5ZjgyOWMyZDc4MDljMmM5NmQzZmUxMjRkZWUxNGJk
M2Q3Li42NDg0ODVhYzI2Y2IyMzc1Y2Y2NTc0ZjgxZmY0Y2Q2NTY3MmM1MDgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmUKICAgICBmb250UmVmZXJlbmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZl
ciwgZm9udE5hbWUpOwogICAgIGlmICghZm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1h
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDE5MDQ0OTAwNDVmNGU3ZTdmN2RiODFk
OTVmMGE2YTI0MmJkNTQ4MzguLmVhYjgwNmU0MmMwNjJkNTU5Nzg5OTQ1MmVmZTc0NzRlNTk5Zjky
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNDEsNiArNDEsNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFn
Z2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwogCiBzdHJ1Y3QgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiBwdWJsaWM6CiAgICAgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShIQU5ETEUgZm9udFJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBu
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCBhYjdjNzkw
ZDYwZjJlOGY3NGFmMDNjMDZhY2ZjNzJjOGUzOWMyMmQ5Li5lZWVhZmViZDkzM2NhOWM3OGRkMDUx
NDEzZDIzMzQ0Y2E4NTNiMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJv
LmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGlmICgh
Zm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250
TmFtZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9u
dFJlZmVyZW5jZSwgZm9udE5hbWUpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6
OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxl
ci5jcHAKaW5kZXggYjk1MzU1MDNjMzA2YzUwMWFhMzkzZjMxZmZkOTI4ODVlZGU5YmRlZi4uY2M3
YWQzZWMzMTBiYWZmOWYyZDUzMTNlYTM3ZWJiNjY3Yzc5ZDRlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRy
b2xsZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBj
b25zdCBpbnQga0Z1bGxTY3JlZW5BbmltYXRpb25EdXJhdGlvbiA9IDUwMDsgLy8gbWlsbGlzZWNv
bmRzIAogCiBjbGFzcyBGdWxsU2NyZWVuQ29udHJvbGxlcjo6UHJpdmF0ZSA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50ICB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgUHJpdmF0ZShGdWxsU2NyZWVuQ29udHJvbGxlciogY29udHJv
bGxlciwgRnVsbFNjcmVlbkNvbnRyb2xsZXJDbGllbnQqIGNsaWVudCkgCiAgICAgICAgIDogbV9j
b250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC0xMDMsNyArMTA0LDcgQEAgTFJFU1VMVCBGdWxsU2Ny
ZWVuQ29udHJvbGxlcjo6UHJpdmF0ZTo6ZnVsbHNjcmVlbkNsaWVudFduZFByb2MoSFdORCBod25k
LCBVSU5UIG0KIH0KIAogRnVsbFNjcmVlbkNvbnRyb2xsZXI6OkZ1bGxTY3JlZW5Db250cm9sbGVy
KEZ1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3ByaXZhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxQcml2YXRlPih0aGlzLCBjbGllbnQpKQorICAgIDogbV9wcml2YXRlKG1h
a2VVbmlxdWU8UHJpdmF0ZT4odGhpcywgY2xpZW50KSkKIHsKICAgICBBU1NFUlRfQVJHKGNsaWVu
dCwgY2xpZW50KTsKIH0KQEAgLTEzMSwxMyArMTMyLDEzIEBAIHZvaWQgRnVsbFNjcmVlbkNvbnRy
b2xsZXI6OmVudGVyRnVsbFNjcmVlbigpCiAgICAgbV9wcml2YXRlLT5tX29yaWdpbmFsRnJhbWUg
PSBvcmlnaW5hbEZyYW1lOwogCiAgICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdp
bmRvdyk7Ci0gICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7
CisgICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cgPSBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2
YXRlLT5tX2JhY2tncm91bmRXaW5kb3ctPmNyZWF0ZVdpbmRvdygwKTsKICAgICA6OkFuaW1hdGVX
aW5kb3cobV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3ctPmh3bmQoKSwga0Z1bGxTY3JlZW5B
bmltYXRpb25EdXJhdGlvbiwgQVdfQkxFTkQgfCBBV19BQ1RJVkFURSk7CiAKICAgICBtX3ByaXZh
dGUtPm1fY2xpZW50LT5mdWxsU2NyZWVuQ2xpZW50V2lsbEVudGVyRnVsbFNjcmVlbigpOwogICAg
IEFTU0VSVCghbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+
bV9mdWxsU2NyZWVuV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9mdWxs
U2NyZWVuV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fZnVsbFNjcmVl
bldpbmRvdyk7CiAgICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3ctPmNyZWF0ZVdpbmRv
dygwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKaW5kZXggMTA2N2I5NjA5M2Ri
MmVkNTkxYTIxYTMxZDlkMDI1NmRjMTI5M2U4OS4uZjE0NDI1NzJjYzZkMWQ1NGJiZWU1OGJkYmMz
NmVkZjc3NGFhYmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCkBAIC03OCw3
ICs3OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGRjLCBib29s
IGhhc0FscGhhKQogCiAgICAgY2Fpcm9fdCogY3IgPSBjcmVhdGVDYWlyb0NvbnRleHRXaXRoSERD
KGRjLCBoYXNBbHBoYSk7CiAKLSAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7Cisg
ICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShtYWtlVW5pcXVl
PFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOwogICAgIG1fZGF0YS0+cGxhdGZvcm1Db250ZXh0
LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9kYXRhKTsKICAgICBtX2RhdGEtPm1faGRjID0g
ZGM7CiAgICAgaWYgKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dERpcmVjdDJELmNwcAppbmRleCBjMmJhZmFmOTZhMTYwNzA4MGI3NjMzOTUyNjYyZTc2Nzc2MTRi
MDBjLi45NmM4MjgxYWY0YjIyYzY2ODZhY2IxNGM1ZTgyYzFkNjliOTBkZDRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGly
ZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQoSERDIGhkYywgSUQyRDFEQ1JlbmRlclRhcmdldCoqIHJlbmRlclRh
cmdldCwgUkUKIAogICAgICgqcmVuZGVyVGFyZ2V0KS0+QmluZERDKGhkYywgJnJlY3QpOwogCi0g
ICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNv
bnRleHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFyZ2V0
KTsKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1v
dmUob3duZWRQbGF0Zm9ybUNvbnRleHQpLCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BV
TWVtb3J5KTsKICAgICBtX2RhdGEtPm1faGRjID0gaGRjOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGhkYywgYm9vbCBoYXNBbHBo
YSkKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
b3duZWRQbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEPihyZW5kZXJUYXJnZXQuZ2V0KCkpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRl
eHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQuZ2V0
KCkpOwogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoV1RG
TW92ZShvd25lZFBsYXRmb3JtQ29udGV4dCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpH
UFVNZW1vcnkpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYmQ3NmVmYmJhOWQwZTg5N2QzZDI4OGU4NWU4ZDI0
NDRjYzRmOGY0ZS4uMWViYjViMDlkMzg1MzdjMDE5MjIwYjk0N2RjYWQ5NDRkOGUxMDExOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUYKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFw
aGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRleHRdKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCBwbGF0Zm9y
bUNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsKIH0K
IApAQCAtNTUsMTQgKzU1LDE0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1w
bEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFty
ZW5kZXJUYXJnZXRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
Pihjb250ZXh0LCByZW5kZXJUYXJnZXQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCByZW5kZXJUYXJnZXQpOwogICAg
ICAgICB9KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250
ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9y
bUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlx
dWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKKyAg
ICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4o
bV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4
dFR5cGU6OkdQVU1lbW9yeSkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3ND
b250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRl
eHQobV9wbGF0Zm9ybUNvbnRleHQpOwpAQCAtNzAsOSArNzAsOSBAQCBHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQm
IGNvbnRleAogCiBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIElEMkQxUmVuZGVyVGFyZ2V0KiBy
ZW5kZXJUYXJnZXQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVj
dCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCi0gICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0
KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldCkp
CisgICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQ+KHJlbmRlclRhcmdldCkpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgqbV9vd25l
ZFBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29u
dGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3By
aXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZv
cm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpH
UFVNZW1vcnkpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFBy
aXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxh
dGZvcm1Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKaW5kZXggNWJkZTRjZWRmNTE2YTkx
NzlhNmQzZDNiM2UzM2QxMzRlZDVhYjUxMS4uMWQ4MDQyMGNmN2VjNmNkNzc1YTYyYmFlYTIyZjk5
MDYwN2ViNGNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgR3Jh
cGhpY3NDb250ZXh0OjpXaW5kb3dzQml0bWFwOjp+V2luZG93c0JpdG1hcCgpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA+IEdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlV2luZG93c0JpdG1hcChjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdpbmRvd3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFdpbmRvd3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAppbmRleCAwNmMxNzQ1NzlhNGJjMTMw
OTFmMzRiNTc5NGFhYTkyOTkzYmJiYTI0Li4zNWE5ZmY2MTEzNTFjMzNjNzE3NGQ5MmExZmRjZjQ0
NzBlODFhODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCkBAIC0xMTIsOCArMTEyLDggQEAg
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm90ZTog
VGhpcyBwbGFjZXMgdGhlIGJpdG1hcGNvbnRleHQgaW50byBhIGxvY2tlZCBzdGF0ZSBiZWNhdXNl
IG9mIHRoZSBCZWdpbkRyYXcgY2FsbCBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAgbV9kYXRhLnBs
YXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+
KGJpdG1hcENvbnRleHQuZ2V0KCkpOwotICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHQ+KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBo
aWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CisgICAg
bV9kYXRhLnBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOworICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1
ZTxHcmFwaGljc0NvbnRleHQ+KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBoaWNz
Q29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKICAgICBz
dWNjZXNzID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdy5oCmluZGV4IGUwNjYzMTBhMGFjYTcxYmQ5YWM4MWRkMTZiYTBkYjE1YTdkNTExZDUu
LmQyODUzOGExNTgyMjhiMmM4OWUxODNjNzM5MTRlMTJiOGExODkxNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaApAQCAtNDgsNiArNDgsNyBAQCBj
bGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50IHsKIH07CiAKIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3co
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCopOwogICAgIH5NZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuV2luZG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IDU4MzhlYzE1N2EyYzdiNzE2M2I3MTY4MmE0ZWI4Yzgw
MzRlOTYzMjEuLjZkNjRhZTlhNmUzYTQxN2ZiMTRmMTIxNjZmNjhkM2M5YTU1MjY2ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC04Miw3
ICs4Miw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6fk1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAgICB9CiB9CkBAIC0zMDEsNyArMzAx
LDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjptYXhUaW1lU2Vl
a2FibGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgY29uc3QKIHsgCi0gICAg
YXV0byByYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAg
ICBhdXRvIHJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGlm
IChtX3ByZXNlbnRlciAmJiBtX3ByZXNlbnRlci0+bWF4VGltZUxvYWRlZCgpID4gMCkKICAgICAg
ICAgcmFuZ2VzLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUobV9wcmVzZW50ZXItPm1heFRpbWVMb2FkZWQoKSkpOwogICAgIHJldHVybiByYW5n
ZXM7CkBAIC04ODgsNyArODg4LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpDdXN0b21WaWRlb1ByZXNlbnRlcjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXIoTWUKICAgICBtX3Nv
dXJjZVJlY3QuYm90dG9tID0gMTsKICAgICBtX3NvdXJjZVJlY3QucmlnaHQgPSAxOwogCi0gICAg
bV9wcmVzZW50ZXJFbmdpbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPERpcmVjdDNEUHJlc2VudGVyPigp
OworICAgIG1fcHJlc2VudGVyRW5naW5lID0gbWFrZVVuaXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4o
KTsKICAgICBpZiAoIW1fcHJlc2VudGVyRW5naW5lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaAppbmRleCA5MGU5YjcyMTU3
MDhhYzJhMmVmZjdkNGE2YWRlMTQ3ZWVlMjg4NDY2Li5hMjE2NjExMGIzODAwZjE3NjQ3MTY1YzJk
MDJhMGRhOWVhOTUxMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbi5oCkBAIC00Nyw2ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oTWVk
aWFQbGF5ZXIqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKCk7CkBA
IC0xNjgsNiArMTY5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
IGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICB9OwogCiAgICAg
Y2xhc3MgQXN5bmNDYWxsYmFjayA6IHB1YmxpYyBJTUZBc3luY0NhbGxiYWNrLCBwdWJsaWMgTWVk
aWFQbGF5ZXJMaXN0ZW5lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKICAgICAgICAgQXN5bmNDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24qLCBib29sIGV2ZW50KTsKICAgICAgICAgfkFzeW5jQ2FsbGJhY2soKTsKQEAgLTE5
MSw2ICsxOTMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmlu
YWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYQogICAgIHR5cGVkZWYgRGVxdWU8
Q09NUHRyPElNRlNhbXBsZT4+IFZpZGVvU2FtcGxlTGlzdDsKIAogICAgIGNsYXNzIFZpZGVvU2Ft
cGxlUG9vbCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoK
ICAgICAgICAgVmlkZW9TYW1wbGVQb29sKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIH5W
aWRlb1NhbXBsZVBvb2woKSA9IGRlZmF1bHQ7CkBAIC0yMTIsNiArMjE1LDcgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmEKICAgICBjbGFzcyBEaXJlY3QzRFByZXNlbnRlcjsKIAogICAgIGNsYXNz
IFZpZGVvU2NoZWR1bGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgogICAgICAgICBWaWRlb1NjaGVkdWxlcigpID0gZGVmYXVsdDsKICAgICAgICAgdmly
dHVhbCB+VmlkZW9TY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CkBAIC0yNTcsNiArMjYxLDcgQEAgY2xh
c3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmEKICAgICB9OwogCiAgICAgY2xhc3MgRGlyZWN0M0RQcmVzZW50
ZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAg
ICAgIERpcmVjdDNEUHJlc2VudGVyKCk7CiAgICAgICAgIH5EaXJlY3QzRFByZXNlbnRlcigpOwpA
QCAtMzE5LDYgKzMyNCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
biBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgICAgICwgcHVi
bGljIElNRlZpZGVvRGlzcGxheUNvbnRyb2wKICAgICAgICAgLCBwdWJsaWMgSU1GQXN5bmNDYWxs
YmFjawogICAgICAgICAsIHB1YmxpYyBNZWRpYVBsYXllckxpc3RlbmVyIHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBDdXN0b21WaWRlb1By
ZXNlbnRlcihNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24qKTsKICAgICAgICAgfkN1
c3RvbVZpZGVvUHJlc2VudGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCmluZGV4IDZm
YmUyYjVlZDc1YWIzYmEwNGUzMDI1NDljY2ViOTE2MWFmNWMwMTMuLjE5MDU0MGUwMzNkOWI3Y2M4
YzU0YjhiMWJlZjc3NjkyYmQ1Zjk0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCkBA
IC00NSw2ICs0NSw3IEBAIHN0cnVjdCBTaGFkb3dTdGF0ZTsKIH0KIAogY2xhc3MgUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKTsKIHB1YmxpYzoKICAgICBQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRChJRDJEMVJlbmRlclRhcmdldCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAK
aW5kZXggMzM3ZmFmMzc4ZGE3OTU1YmVhNjEwYWVjOTA3NTc5NjZkNmM0ODIwMC4uOWQ3ZDkyZThl
YWQ5NmExYmJkZmJkMWQ5MmRjOTY2MjFjNmM0MmY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCkBAIC0zMiw2
ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdLQ0FJbWFnZVF1ZXVlUHJp
dmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmV0YWlu
UHRyPENBSW1hZ2VRdWV1ZVJlZj4gbV9pbWFnZVF1ZXVlOwogfTsKQEAgLTUwLDEzICs1MSwxMyBA
QCBzdGF0aWMgdm9pZCBXS0NBSW1hZ2VRdWV1ZVJlbGVhc2UoQ0FJbWFnZVF1ZXVlUmVmIGlxKQog
fQogCiBXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUodWludDMyX3Qgd2lkdGgsIHVpbnQz
Ml90IGhlaWdodCwgdWludDMyX3QgY2FwYWNpdHkpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtl
X3VuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVu
aXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdl
UXVldWUgPSBhZG9wdENGKHdrQ0FJbWFnZVF1ZXVlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIGNhcGFj
aXR5KSk7CiB9CiAKIFdLQ0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZShjb25zdCBXS0NBSW1h
Z2VRdWV1ZSYgbykKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFnZVF1
ZXVlUHJpdmF0ZT4oKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1ZXVl
UHJpdmF0ZT4oKSkKIHsKICAgICBtX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IG8ubV9wcml2YXRl
LT5tX2ltYWdlUXVldWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEd0ay5jcHAKaW5kZXggNzFhMDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1
NC4uNDIyNTJkMzRiNTRmZTZjMmMyNmI1MjJjNjYwZTg2MmYwNTZlZjA5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDMsMjQgKzQzLDI0
IEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigiQ0xJUEJPQVJEIik7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oIkNMSVBCT0FSRCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigiUFJJTUFSWSIpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJQUklNQVJZIik7CiB9CiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJv
YXJkPihTZWxlY3Rpb25EYXRhOjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogewogICAgIEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3Jt
RGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEucGxh
dGZvcm1EYXRhKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCA0OTAzNzFhZDg5ZWYyZTc5NmUzNDAxYWFj
MWRiYjgwNmVhOTY2ZWIwLi5hZjhmZjM0MjQ2YmM5NzJmMWE1ZmY3MzdmOTkyOTgwOWZiNjY5YjBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIu
Y3BwCkBAIC0yNjYsNiArMjY2LDcgQEAgVmVjdG9yPEdka0F0b20+IFBhc3RlYm9hcmRIZWxwZXI6
OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWcKIHN0YXRpYyBT
ZWxlY3Rpb25EYXRhKiBzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uOwogCiBzdHJ1Y3QgQ2xpcGJv
YXJkU2V0RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIENs
aXBib2FyZFNldERhdGEoU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2spCiAgICAgICAgIDogc2VsZWN0aW9uRGF0
YShzZWxlY3Rpb24pCiAgICAgICAgICwgc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKFdURk1vdmUo
c2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKSkKQEAgLTMwMCw3ICszMDEsNyBAQCB2b2lkIFBhc3Rl
Ym9hcmRIZWxwZXI6OndyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9h
cmQsIGNvbnN0IFNlbAogCiAgICAgaWYgKG51bWJlck9mVGFyZ2V0cyA+IDAgJiYgdGFibGUpIHsK
ICAgICAgICAgU2V0Rm9yU2NvcGU8U2VsZWN0aW9uRGF0YSo+IGNoYW5nZShzZXR0aW5nQ2xpcGJv
YXJkU2VsZWN0aW9uLCBjb25zdF9jYXN0PFNlbGVjdGlvbkRhdGEqPigmc2VsZWN0aW9uKSk7Ci0g
ICAgICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNl
dHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQp
KTsKKyAgICAgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxDbGlwYm9hcmRTZXREYXRhPigqc2V0
dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgV1RGTW92ZShwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkp
OwogICAgICAgICBpZiAoZ3RrX2NsaXBib2FyZF9zZXRfd2l0aF9kYXRhKGNsaXBib2FyZCwgdGFi
bGUsIG51bWJlck9mVGFyZ2V0cywgZ2V0Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgY2xlYXJD
bGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLCBkYXRhLmdldCgpKSkgewogICAgICAgICAgICAgZ3Rr
X2NsaXBib2FyZF9zZXRfY2FuX3N0b3JlKGNsaXBib2FyZCwgbnVsbHB0ciwgMCk7CiAgICAgICAg
ICAgICAvLyBXaGVuIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YSgpIHN1Y2NlZWRzIGNsZWFy
Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayB0YWtlcyB0aGUgb3duZXJzaGlwIG9mIGRhdGEsIHNv
IHdlIGxlYWsgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVHYWRnZXQuY3BwCmluZGV4IGJkY2M5OWU4NTlkNDk3NTA3OGZmM2M1ZTJlYmMzODVk
OWI5NWI5NTIuLjczZTA3NThhNmVkZDFlMTkzMjMxMDgzZjg5YTdlN2ZkZjIwZDEzNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcApA
QCAtMzUsMjAgKzM1LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZUdhZGdldD4gUmVu
ZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShjb25zdCBSZW5kZXJUaGVtZUdhCiB7CiAgICAgc3dpdGNo
IChpbmZvLnR5cGUpIHsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmlj
OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4oaW5m
bywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwog
ICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlRleHRGaWVsZDoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBh
cmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9u
KTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpSYWRpbzoKICAgICBjYXNlIFJl
bmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpDaGVjazoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBv
c2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRn
ZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRo
ZW1lR2FkZ2V0OjpUeXBlOjpBcnJvdzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24p
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUFycm93R2FkZ2V0PihpbmZv
LCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdl
dDo6VHlwZTo6SWNvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVJY29uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBz
aWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlNj
cm9sbGJhcjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3Jv
bGxiYXJHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBhcmVu
dCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBl
OjpCdXR0b246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0
dG9uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNp
YmxpbmdzLCBwb3NpdGlvbik7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcApp
bmRleCAwNWQxMmRkOWVhZmJlZjAyYTQ1OWNhNTI3NjQxN2E1YjliMGU4OTc2Li5jYTZlZDkxOGE1
MDMzZTI5NzZkYjg0ZDg5YzIwNDg4NzAwZjAyYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKQEAgLTQyLDQ5ICs0Miw0OSBAQCBS
ZW5kZXJUaGVtZVdpZGdldCYgUmVuZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKFR5cGUgd2lk
Z2V0VHlwZSkKICAgICBhdXRvIGFkZFJlc3VsdCA9IHdpZGdldE1hcCgpLmVuc3VyZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4od2lkZ2V0VHlwZSksIFt3aWRnZXRUeXBlXSgpIC0+IHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJUaGVtZVdpZGdldD4gewogICAgICAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJS
aWdodDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Ny
b2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpN
b2RlOjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Ny
b2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpN
b2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGlj
YWxTY3JvbGxiYXJMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVT
Y3JvbGxiYXI6Ok1vZGU6OkZ1bGwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0
aW9uOjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Ny
b2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpN
b2RlOjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTY3JvbGxi
YXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9s
bGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpN
b2RlOjpGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Ny
b2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6
Ok1vZGU6OkZ1bGwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0
aWNhbFNjcm9sbEluZGljYXRvclJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVu
ZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FM
LCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKICAgICAgICAgY2FzZSBS
ZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JMZWZ0OgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdU
S19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGlj
YXRvciwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklF
TlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvciwg
UmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xsSW5kaWNhdG9yOgot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+
KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6
SW5kaWNhdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Ny
b2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6
Ok1vZGU6OkluZGljYXRvcik7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6
OkNoZWNrQnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4o
UmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OkNoZWNrKTsKICAgICAgICAgY2FzZSBSZW5k
ZXJUaGVtZVdpZGdldDo6VHlwZTo6UmFkaW9CdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVC
dXR0b246OlR5cGU6OlJhZGlvKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6UmFkaW8p
OwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhl
bWVCdXR0b246OkRlZmF1bHQ6Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6Tm8pOwogICAgICAg
ICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0b25EZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1l
QnV0dG9uOjpEZWZhdWx0OjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMpOwogICAgICAg
ICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpDb21ib0JveDoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQ29tYm9Cb3g+KCk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUNvbWJvQm94PigpOwogICAgICAgICBjYXNl
IFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpFbnRyeToKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lk
Z2V0OjpUeXBlOjpTZWxlY3RlZEVudHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PihSZW5kZXJU
aGVtZUVudHJ5OjpTZWxlY3RlZDo6WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6U2VhcmNoRW50cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJUaGVtZVNlYXJjaEVudHJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6U3BpbkJ1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU3BpbkJ1dHRvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6VmVydGljYWxTbGlkZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5U
QVRJT05fVkVSVElDQUwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpI
b3Jpem9udGFsU2xpZGVyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9S
SVpPTlRBTCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlByb2dyZXNz
QmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9n
cmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVy
VGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpJbmRldGVybWluYXRlUHJvZ3Jlc3NCYXI6Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJU
aGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NC
YXI6Ok1vZGU6OkluZGV0ZXJtaW5hdGUpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0
OjpUeXBlOjpMaXN0VmlldzoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lTGlzdFZpZXc+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZUxpc3RWaWV3PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpJY29uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJ
Y29uPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVJY29uPigp
OwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpXaW5kb3c6Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lV2luZG93PigpOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTEzOSw3ICsxMzksNyBAQCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6UmVuZGVyVGhlbWVTY3Jv
bGxiYXIoR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb24sIE1vZGUgbW9kZQogICAgIGluZm8udHlw
ZSA9IFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmljOwogICAgIGluZm8ubmFtZSA9ICJj
b250ZW50cyI7CiAgICAgaW5mby5jbGFzc0xpc3QuY2xlYXIoKTsKLSAgICBtX2NvbnRlbnRzID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIuZ2V0KCkpOworICAgIG1fY29udGVu
dHMgPSBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJ
T05fVkVSVElDQUwsIGNoaWxkcmVuLCBtX3Njcm9sbGJhci5nZXQoKSk7CiAgICAgaW5mby5uYW1l
ID0gInNsaWRlciI7CiAgICAgbV9zbGlkZXIgPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGlu
Zm8sIG1fY29udGVudHMtPmNoaWxkKG1fdHJvdWdoUG9zaXRpb24pKTsKIH0KQEAgLTE5Nyw3ICsx
OTcsNyBAQCBSZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94KCkKICAgICB9
OwogICAgIGluZm8ubmFtZSA9ICJib3giOwogICAgIGluZm8uY2xhc3NMaXN0ID0geyAiaG9yaXpv
bnRhbCIsICJsaW5rZWQiIH07Ci0gICAgbV9ib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgY2hpbGRyZW4s
IG1fY29tYm9Cb3guZ2V0KCkpOworICAgIG1fYm94ID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJv
eEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVuLCBtX2Nv
bWJvQm94LmdldCgpKTsKICAgICBSZW5kZXJUaGVtZUdhZGdldCogYnV0dG9uID0gbV9ib3gtPmNo
aWxkKDApOwogICAgIGluZm8uY2xhc3NMaXN0LnJlbW92ZUxhc3QoKTsKICAgICBtX2J1dHRvbkJv
eCA9IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoaW5mbywgYnV0dG9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5jcHAKaW5kZXggODQwN2MxMTAxZGRkNmRiNmUzNzhkZWZjYjNhYjgyNmJmNzI2
NDU0ZC4uNzg2OTdlYjAwMDBmN2Y3YjgyYTdkMGVjZjVmOTg1YTFlOTI4OWMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBCTVBJbWFnZURlY29k
ZXI6OmRlY29kZUhlbHBlcihib29sIG9ubHlTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoIW1fcmVhZGVyKSB7Ci0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBm
YWxzZSk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhp
cywgbV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBmYWxzZSk7CiAgICAgICAgIG1fcmVh
ZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuY3BwCmluZGV4IDdiYTdlZDkxMDFjZTI1YTliZjZlMjMxMDg3YmYwYmMxMTRjYzIyZDYuLjRm
MzQ4N2UzMzQ3NjQwNTQ3NGNmODZiNWM2MDZkMmMxOTg4YzdjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmRl
Y29kZSh1bnNpZ25lZCBoYWx0QXRGcmFtZSwgR0lGUXVlcnkgcXVlcnksIGJvb2wgYWxsRGF0YVIK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGSW1hZ2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3Jl
YWRlciA9IG1ha2VVbmlxdWU8R0lGSW1hZ2VSZWFkZXI+KHRoaXMpOwogICAgICAgICBtX3JlYWRl
ci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5j
cHAKaW5kZXggMWNjYTVlNTllZWIzNTFiMDU4YTIxZGIxMzRmNjQzNzkxZTUwNzdjYS4uZDc3MTg2
ZWE5NzM5YmRmYjJjNTYyMjhlZTRjZjVlODgyOGQ4ODU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFk
ZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgYm9vbCBHSUZGcmFtZUNvbnRleHQ6OmRlY29kZShj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjoKICAgICAg
ICAgaWYgKCFpc0RhdGFTaXplRGVmaW5lZCgpIHx8ICFpc0hlYWRlckRlZmluZWQoKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIG1fbHp3Q29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlzKTsKKyAgICAgICAgbV9sendDb250ZXh0
ID0gbWFrZVVuaXF1ZTxHSUZMWldDb250ZXh0PihjbGllbnQsIHRoaXMpOwogICAgICAgICBpZiAo
IW1fbHp3Q29udGV4dC0+cHJlcGFyZVRvRGVjb2RlKCkpIHsKICAgICAgICAgICAgIG1fbHp3Q29u
dGV4dCA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03ODYsNyArNzg2
LDcgQEAgdm9pZCBHSUZJbWFnZVJlYWRlcjo6c2V0UmVtYWluaW5nQnl0ZXMoc2l6ZV90IHJlbWFp
bmluZ0J5dGVzKQogdm9pZCBHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSgpCiB7
CiAgICAgaWYgKG1fZnJhbWVzLmlzRW1wdHkoKSB8fCBtX2ZyYW1lcy5sYXN0KCktPmlzQ29tcGxl
dGUoKSkKLSAgICAgICAgbV9mcmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8R0lGRnJhbWVD
b250ZXh0PihtX2ZyYW1lcy5zaXplKCkpKTsKKyAgICAgICAgbV9mcmFtZXMuYXBwZW5kKG1ha2VV
bmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5zaXplKCkpKTsKIH0KIAogLy8gRklYTUU6
IE1vdmUgdGhpcyBtZXRob2QgdG8gY2xvc2UgdG8gZG9MWlcoKS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggMTg3MGJiMTYwYjg0OTQ4ZjBiNTlkZTQ1MTE2MzZiYTRjMGYzOGYyZS4u
ZmY2YTFjODdhZTZmMDViNDljY2MxMjhhYmUwNWMzMDNkNmVlYmFkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6
ZGVjb2RlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGhh
dmUgYWxyZWFkeSBzaXplZCBtX2ZyYW1lQnVmZmVyQ2FjaGUgYmVmb3JlIHRoaXMsIGFuZAogICAg
ICAgICAgICAgLy8gd2UgbXVzdCBub3QgcmVzaXplIGl0IGFnYWluIGxhdGVyIChzZWUgY2F1dGlv
biBpbiBmcmFtZUNvdW50KCkpLgogICAgICAgICAgICAgQVNTRVJUKG1fZnJhbWVCdWZmZXJDYWNo
ZS5zaXplKCkgPT0gbV9kaXJFbnRyaWVzLnNpemUoKSk7Ci0gICAgICAgICAgICBtX2JtcFJlYWRl
cnNbaW5kZXhdID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgZGlyRW50
cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CisgICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5k
ZXhdID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9m
ZnNldCwgMCwgdHJ1ZSk7CiAgICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXREYXRh
KG1fZGF0YS5nZXQoKSk7CiAgICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXRCdWZm
ZXIoJm1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlYmZlNDUzMGY3MTg1MzA3MmUzYTUzZDJmY2M2NjBlN2Ew
OTZjZjQzLi4wYzA1NDliNWEzZWUwNGFmMjljYTdkNjA2MDM1ZmNmZTYxNzQ4NTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIEpQRUdJ
bWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEpQRUdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVh
ZGVyID0gbWFrZVVuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRoaXMpOwogCiAgICAgLy8gSWYgd2Ug
Y291bGRuJ3QgZGVjb2RlIHRoZSBpbWFnZSBidXQgd2UndmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRh
LCBkZWNvZGluZwogICAgIC8vIGhhcyBmYWlsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
CmluZGV4IGMxOGEzOWI1OTEzM2EzMThmMTUxMDU4MWU4ZjkxZWJkZDc2ODc5YWIuLjYyY2I5YjIy
YTAxZjI2ZTlmMmNkNDFkZWEzODFiMzYzNjg5N2VlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuY3BwCkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTaXplLCB1bnNpZ25lZCBoYWx0QXRGcmFtZSwgYm9vbCBhbGxEYXRhUmUKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBt
YWtlVW5pcXVlPFBOR0ltYWdlUmVhZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdlIGNvdWxkbid0
IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2Rp
bmcKICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9M
ZWdhY3lUaWxlQ2FjaGUubW0KaW5kZXggMjA5Zjg4ZjQ3YTNiN2NkYzAxNDNkZTkyZTI0YmFkZGY5
NjY0YjVmNC4uY2FlM2RjZjE2NDc5NmNlZWNiNjhiMjQ0OGYxMTMzYzEwZWM5YzIwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC02OSw3
ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIExlZ2FjeVRpbGVDYWNoZTo6TGVnYWN5VGls
ZUNhY2hlKFdBS1dpbmRvdyogd2luZG93KQogICAgIDogbV93aW5kb3cod2luZG93KQogICAgICwg
bV90b21ic3RvbmUoYWRvcHROUyhbW0xlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZSBhbGxvY10gaW5p
dF0pKQotICAgICwgbV96b29tZWRPdXRUaWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVRp
bGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSkpCisgICAgLCBtX3pvb21lZE91dFRpbGVHcmlkKG1h
a2VVbmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKSkKICAgICAsIG1fdGls
ZUNyZWF0aW9uVGltZXIoKnRoaXMsICZMZWdhY3lUaWxlQ2FjaGU6OnRpbGVDcmVhdGlvblRpbWVy
RmlyZWQpCiB7CiAgICAgW2hvc3RMYXllcigpIGluc2VydFN1YmxheWVyOm1fem9vbWVkT3V0VGls
ZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKSBhdEluZGV4OjBdOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZv
aWQgTGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSgpCiAKICAgICBpZiAobV9jdXJy
ZW50U2NhbGUgIT0gbV96b29tZWRPdXRUaWxlR3JpZC0+c2NhbGUoKSkgewogICAgICAgICBpZiAo
IW1fem9vbWVkSW5UaWxlR3JpZCkgewotICAgICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkID0g
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOworICAg
ICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkID0gbWFrZVVuaXF1ZTxMZWdhY3lUaWxlR3JpZD4o
KnRoaXMsIG1fdGlsZVNpemUpOwogICAgICAgICAgICAgW2hvc3RMYXllcigpIGFkZFN1YmxheWVy
Om1fem9vbWVkSW5UaWxlR3JpZC0+dGlsZUhvc3RMYXllcigpXTsKICAgICAgICAgICAgIGhvc3RM
YXllclNpemVDaGFuZ2VkKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVHcmlkLmgKaW5kZXggNjY0N2VjM2EzNmQxNTg3ODY5NGYwN2QwMmIxZmIx
ZThjMzUwZDUzZi4uMzBlZjlmYzMxYzg3ZjExYmZhZmU0Y2E2YTllYTgxMjRkNWZjM2EyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKQEAgLTQ2LDYg
KzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5VGlsZUdyaWRUaWxlOwog
CiBjbGFzcyBMZWdhY3lUaWxlR3JpZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBUaWxlSW5kZXg7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMTkxYWM3Njk2MjE1MTIxNTNk
YmRjYjA3OGRkNjZmNDY1NTNiYzIxZC4uMDI3MWI5M2U3MDVjZTJjNDJkNjMyZmUyZGIyOWFhNDZl
ODM2ZDIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW0KQEAgLTY2LDEyICs2NiwxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFn
SW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQYXN0ZWJvYXJkPigiZGF0YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIik7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2Fy
ZCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1l
KCkpOwogfQogCiAjZW5kaWYKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQoKSk7
CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQm
IGNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tM
b29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQppbmRleCBh
OWQ5ZTQ3MTA1MDE3ZDY0ZDgyZTM3YzhhYTMxY2U2NDY5MDI1Njg1Li5jMmI1YTBiMDhiZGY3NWU4
YzAxY2Q5YmQyZDUxYzMxNDkzMDVmMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUXVpY2tMb29rLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9R
dWlja0xvb2subW0KQEAgLTg0LDcgKzg0LDcgQEAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVn
aXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdXJsLCBOU1N0cmluZwogICAg
IGlmIChbUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6
dXBkYXRlZE1JTUVUeXBlLmdldCgpXSkgewogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHV0
aSA9IGFkb3B0TlMoUEFMOjpzb2Z0TGlua19RdWlja0xvb2tfUUxUeXBlQ29weVVUSUZvclVSTEFu
ZE1pbWVUeXBlKHVybCwgdXBkYXRlZE1JTUVUeXBlLmdldCgpKSk7CiAKLSAgICAgICAgYXV0byBj
b252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KGRhdGEsIHV0aS5n
ZXQoKSk7CisgICAgICAgIGF1dG8gY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVy
dGVyPihkYXRhLCB1dGkuZ2V0KCkpOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcHJldmlld1Jl
cXVlc3QgPSBjb252ZXJ0ZXItPnByZXZpZXdSZXF1ZXN0KCk7CiAKICAgICAgICAgLy8gV2UgdXNl
IFtyZXF1ZXN0IFVSTF0gaGVyZSBpbnN0ZWFkIG9mIHVybCBzaW5jZSBpdCB3aWxsIGJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVy
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
cklPUy5tbQppbmRleCAxMDdjNzdjNzUzZWFiN2Q5MmRhMjk0ODdjYTZmNjVmODA3MDQ4MjEzLi42
ZDljY2UxNWI4NzRmMTVmMTU0ODc1ZWEwZWU2YjlmMTAzNWE4MzYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0K
QEAgLTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4g
UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWEKICAgICBpZiAoIU1lZGlh
UGxheWVyTGlicmFyeSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUz4oY2xpZW50KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CiB9CiAK
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKFJlbW90
ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCmluZGV4IDAxZjBhOWJiMjBhMjQ4YjY5OTg4
NTY0NzBhZWUzNzRhOThjZmE1MWMuLmVkNjMyZWE1ZTNmNTU5N2U5ZDc2ZmQyZTU1Njk1NjFmZTZj
NGMyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmlt
YXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0
b3JJT1MubW0KQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNj
cm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U2Nyb2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JJ
T1M6OlNjcm9sbEFuaW1hdG9ySU9TKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNw
cAppbmRleCAwNTQzZWQ1ZTlmYzlmY2ZlM2JiYWE0MDM1NWU0MDcyZjlmM2MzZjQwLi5mOGE2MWVj
NzBjMGMxYTRjZDM3N2YwZTdjZDY3NmVmYjlkZTViYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJk
PigpOwogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNTE1MjBkY2JiZWE1OTIxODVjMzI2NzAy
Y2JhNjlmZTg4YjRkNGRkZS4uOGViMTVjZjg4NTJkOTg1NzQ0N2UwNTljMzhhY2FlYmEyMzQxNWQw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAg
LTEwMCw3ICsxMDAsNyBAQCBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm9taQogc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiB9CiAKQEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkK
IHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGFzdGVib2FyZD4oTlNEcmFnUGJvYXJkKTsKICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJv
YXJkTmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVz
KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCmluZGV4IDA1Y2MwODk1N2UxZDUwMTI0ZGQ2
MzJlMmE0Yzg5MjEyOTg5Njk2MTEuLjFhYTJjZDgwMTMyZjJjMjFlZTM4YjlmZmJkYjgzMzczYmJm
NGMxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21t
YW5kTGlzdGVuZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1h
bmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4o
Y2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+
KGNsaWVudCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjp1cGRhdGVTdXBw
b3J0ZWRDb21tYW5kcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMubW0KaW5kZXggYTgzMTc1MTIyZWMyZTRiNmI2ZGU1MWJlNmRmNTI2NGI0MWEx
ZjhjNC4uNjg2MGUzM2MzYTNiMjE1NjMwNWZiMzFhZjQyN2RjNDkwMjM1ODdhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNjk3
LDcgKzY5Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9s
bEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvck1h
Yz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9y
TWFjPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yTWFjOjpTY3JvbGxBbmlt
YXRvck1hYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKaW5kZXggMWI5ZGM1MzQ1Yjg4MWViMzZkOTZmY2UzNTgy
ZGYwZTU0YTEzODViYS4uZTI0NDViYzgyM2Y4NmUwNTViMGU1Nzg3N2Q2Y2Y1MzFhNGZmY2M5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtNzIsNyArNzIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw6OmNyZWF0ZQogICAgIGlmICghd3JpdGVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbD4od3JpdGVyLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoYXVkaW9U
cmFja0lkKSwgV1RGTW92ZSh2aWRlb1RyYWNrSWQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgpLCBXVEZN
b3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lkKSk7CiB9CiAKIE1lZGlhUmVj
b3JkZXJQcml2YXRlQVZGSW1wbDo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsKFJlZjxNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4mJiB3cml0ZXIsIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCwg
U3RyaW5nJiYgdmlkZW9UcmFja0lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
LmgKaW5kZXggZDRhZGIxNTJiZDRiYWVmN2VmN2JmMDU1ZjZkOWE4M2Q4NjdlNjdlYi4uYTIyZjU3
MWJjNTE2MTFmNjE3NDQ5MTA0Y2Y1ZmM4NjBlNTJlOWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbC5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIAogY2xhc3MgTWVkaWFSZWNvcmRlclByaXZhdGVB
VkZJbXBsIGZpbmFsIDogcHVibGljIE1lZGlhUmVjb3JkZXJQcml2YXRlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtUHJpdmF0
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UuY3BwCmluZGV4IGRiOTRmZGFmODNhOGFiZDY3YWZjZmQ2ZWEzNjlmYWE4OWM0NmMzZTIuLjU5
YWIzODQwZmQ3MzZjYTE0NTAxNmM3ZjY2MGVjYTNiMDkwMzI0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0Nh
cHR1cmVTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC05MSwxNCArOTEs
MTQgQEAgQXVkaW9DYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpm
YWN0b3J5KCkKIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0Nh
cHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hT
YWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpBdWRpbywgU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmlj
ZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1h
a2VfdW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1
cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBp
bml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmlu
ZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgV1RGTW92ZShkZXZpY2VJRCksIFdURk1v
dmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2Vf
dW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VV
bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVh
bWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaAppbmRleCA5
NTNmM2E4YTBlNGY2YTA2MmI5Yjk0YThmNDE1MWE0OWYxYTQzMDFkLi4zNDE1NDkyNTFlZDU3MWI3
NWVmNWQwYzJkZWRmMWU3N2I3NTIzNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
RGF0YS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdTdHJlYW1lckF1ZGlvRGF0YSA6IHB1YmxpYyBQ
bGF0Zm9ybUF1ZGlvRGF0YSB7CitjbGFzcyBHU3RyZWFtZXJBdWRpb0RhdGEgZmluYWwgOiBwdWJs
aWMgUGxhdGZvcm1BdWRpb0RhdGEgewogcHVibGljOgogICAgIEdTdHJlYW1lckF1ZGlvRGF0YShH
UmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIEdzdEF1ZGlvSW5mbyBpbmZvKQogICAgICAgICA6
IG1fc2FtcGxlKFdURk1vdmUoc2FtcGxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVy
LmgKaW5kZXggYmJlNWFlNzM5NTRhZTUzY2MyMTY1NzkzZWMwOTZhODg3OTJhZDRmMi4uZjkyYTZh
OWIxMjYxMTAwZjE5MzQ1ZjRlY2EyMTk0YmZlMWI4YTNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckNhcHR1cmVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgR1N0cmVhbWVyQ2FwdHVyZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEdTdHJlYW1lckNhcHR1cmVyKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UsIEdS
ZWZQdHI8R3N0Q2Fwcz4pOwogICAgIEdTdHJlYW1lckNhcHR1cmVyKGNvbnN0IGNoYXIqIHNvdXJj
ZUZhY3RvcnksIEdSZWZQdHI8R3N0Q2Fwcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggYjNhZjM1YWY4MjQ4OGRkNGNmODIxY2Qz
ZWVhZTYzZDljZjFhY2Q4NC4uZjNlNTE4NmJmNjY4NzgxZWZiMTM5NWZlODUxYjM0MzIzYzQyYTNk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCkBAIC0xMDcsNiArMTA3LDcgQEAgR3N0U3RyZWFtKiB3ZWJraXRNZWRpYVN0cmVhbU5ldyhN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdHJhY2spCiAKIGNsYXNzIFdlYktpdE1lZGlhU3RyZWFt
VHJhY2tPYnNlcnZlcgogICAgIDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNl
cnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyKCkgeyB9OwogICAgIFdlYktpdE1lZGlh
U3RyZWFtVHJhY2tPYnNlcnZlcihXZWJLaXRNZWRpYVN0cmVhbVNyYyogc3JjKQpAQCAtMTQzLDYg
KzE0NCw3IEBAIGNsYXNzIFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcgogCiBjbGFzcyBX
ZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyCiAgICAgOiBwdWJsaWMgTWVkaWFTdHJlYW1Qcml2YXRl
OjpPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+V2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcigpIHsgfTsKICAgICBXZWJLaXRNZWRp
YVN0cmVhbU9ic2VydmVyKFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzcmMpCkBAIC0zNTEsOCArMzUz
LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfY2xhc3NfaW5pdChXZWJL
aXRNZWRpYVN0cmVhbVNyY0NsYXNzKiBrbGFzcykKIAogc3RhdGljIHZvaWQgd2Via2l0X21lZGlh
X3N0cmVhbV9zcmNfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZikKIHsKLSAgICBzZWxm
LT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1lZGlh
U3RyZWFtVHJhY2tPYnNlcnZlcj4oc2VsZik7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1PYnNlcnZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcj4oc2VsZik7Cisg
ICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRp
YVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2
ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOwogICAgIHNl
bGYtPmZsb3dDb21iaW5lciA9IGdzdF9mbG93X2NvbWJpbmVyX25ldygpOwogICAgIHNlbGYtPmZp
cnN0QXVkaW9CdWZmZXJQdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICAgIHNlbGYtPmZpcnN0
RnJhbWVQdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBlNWQ5YjBlMDI3NmVkZGE1ZGJk
NTIwYmMxMGYzNTE4MGQwMTVkNjliLi45N2JlMWYxMmZiYjIyZGMzNThjOTljODM5Zjk4MWYxNjU2
YThlMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlLmNwcApAQCAtMTI3LDE0ICsxMjcsMTQgQEAgRGlzcGxheUNhcHR1cmVGYWN0b3J5JiBH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OmRpc3BsYXlGYWN0b3J5KCkKIAogR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYg
ZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciAq
c291cmNlX2ZhY3RvcnkpCiAgICAgOiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3Zl
KGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2Nh
cHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2Zh
Y3RvcnkpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZXI+KHNvdXJjZV9mYWN0b3J5KSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsK
IH0KIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQog
ICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3Rl
bnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQot
ICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+
KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0
dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9H
U3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oCmluZGV4
IGU0ZDUwOGUzMTc5YWM0N2JmMWQxMGY0ZjI4N2M1NDdiYzI1NjAwMmEuLmVmZGEyOWJlMzk3MThi
YmE3OTEzNDE4Y2M3M2ViOWFkMzY4NGY4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dT
dHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5IDogcHVibGlj
IHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeSgpOwogICAgIHN0
YXRpYyBib29sIG5ld1NvdXJjZShTdHJpbmcgdHJhY2tJZCwgR3N0RWxlbWVudCAqc291cmNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNw
cAppbmRleCA2OTk1YzYwMmNiMTc0NDdmYTc0MWQzOWQ0NDk0YzM1NjFkYzFiYjgyLi44MzU4MWU4
NWEzOTYyZDk3ZTAxNzQzYjEwZTU2Y2VhYTE1MWNlZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVy
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCkBAIC02MCw2ICs2MCw3IEBA
IEdTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfd2VicnRjZW5jX2RlYnVnKTsKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyVmlkZW9FbmNvZGVyIDogcHVibGljIHdlYnJ0Yzo6
VmlkZW9FbmNvZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBHU3RyZWFtZXJWaWRlb0VuY29kZXIoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYpCiAg
ICAgICAgIDogbV9maXJzdEZyYW1lUHRzKEdTVF9DTE9DS19USU1FX05PTkUpCkBAIC01MTIsMTQg
KzUxMywxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXI+IEdTdHJlYW1l
clZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0ZVZpZGVvRQogICAgICAgICBnX29iamVjdF9nZXQo
d2VicnRjZW5jb2Rlci5nZXQoKSwgImVuY29kZXIiLCAmZW5jb2Rlci5vdXRQdHIoKSwgTlVMTCk7
CiAKICAgICAgICAgaWYgKGVuY29kZXIpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihmb3JtYXQpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4oZm9ybWF0KTsKIAogICAgICAgICBHU1RfSU5G
TygiVXNpbmcgVlA4IEVuY29kZXIgZnJvbSBMaWJXZWJSVEMuIik7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6TGlidnB4VnA4RW5jb2Rlcj4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHdlYnJ0Yzo6TGlidnB4VnA4RW5j
b2Rlcj4oKTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0Lm5hbWUgPT0gY3JpY2tldDo6a0gyNjRD
b2RlY05hbWUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckgyNjRF
bmNvZGVyPihmb3JtYXQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIMjY0
RW5jb2Rlcj4oZm9ybWF0KTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZp
ZGVvRW5jb2RlckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmgKaW5kZXggNzk2YTIwZjk0
NWUzYTk1MTk4ZWNlMTBmZTcwZDliNTJmNzIzM2QxMS4uMTQ4M2EyYjIwYjM1MTVjNzFiN2EwYzdh
NTIyNjI2ZTlmZjUzOTIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlk
ZW9FbmNvZGVyRmFjdG9yeS5oCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkgZmluYWwgOiBwdWJsaWMgd2Vi
cnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEVE1GU2VuZGVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKaW5kZXggZGM2ZjhmM2Zi
MDU3ZmI1NDBkOTBjMDAyMjY4YTk5Nzc0NDEwMjc3Zi4uNGEwNjFmY2M5NTNiMTNkNTgzYmFlNTU0
NTE1NWJjZTA4ZGY4ZjlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZT
ZW5kZXJCYWNrZW5kLmgKQEAgLTQwLDYgKzQwLDcgQEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNf
RU5ECiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExpYldlYlJUQ0RUTUZTZW5kZXJCYWNr
ZW5kIGZpbmFsIDogcHVibGljIFJUQ0RUTUZTZW5kZXJCYWNrZW5kLCBwcml2YXRlIHdlYnJ0Yzo6
RHRtZlNlbmRlck9ic2VydmVySW50ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGliV2Vi
UlRDRFRNRlNlbmRlckJhY2tlbmQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZChydGM6OnNjb3Bl
ZF9yZWZwdHI8d2VicnRjOjpEdG1mU2VuZGVySW50ZXJmYWNlPiYmKTsKICAgICB+TGliV2ViUlRD
RFRNRlNlbmRlckJhY2tlbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
CmluZGV4IDIwN2FiNzhhOWEyYmJlNDBhMGVkNGRhNjk1NjlhZWRiMTIyOTllMjAuLjc0NTMzYzVm
YTRkZjBkNGU1YTY0ZDc1Y2U2MjdiMzI0MmM0NmI4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcApAQCAtNzksOSArNzksMTAgQEAgc3RhdGljIGlubGluZSBydGM6OlNv
Y2tldEFkZHJlc3MgcHJlcGFyZVNvY2tldEFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNz
JgogfQogCiBjbGFzcyBCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkgOiBwdWJsaWMgcnRjOjpCYXNp
Y1BhY2tldFNvY2tldEZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeShydGM6OlRocmVhZCYg
bmV0d29ya1RocmVhZCkKLSAgICAgICAgOiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxy
dGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oJm5ldHdvcmtUaHJlYWQpKQorICAgICAgICA6
IG1fc29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6
OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oJm5ldHdvcmtUaHJlYWQpKQogICAgIHsKICAgICB9
CiAKQEAgLTE3OSw3ICsxODAsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGVlckNvbm5lY3Rp
b25GYWN0b3J5QW5kVGhyZWFkcyhQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaAogICAgIHJlc3Vs
dCA9IGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC0+U3RhcnQoKTsKICAgICBBU1NF
UlQocmVzdWx0KTsKIAotICAgIGZhY3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENBdWRpb01vZHVsZT4oKTsKKyAgICBmYWN0b3J5QW5k
VGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IG1ha2VVbmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1
bGU+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFk
cyYgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKQpAQCAtMjg4LDEwICsyODksMTAgQEAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1By
b3ZpZGVyOjpjcmVhdGVQZWUKICAgICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IGdldFN0YXRp
Y0ZhY3RvcnlBbmRUaHJlYWRzKG1fdXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwog
CiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrTWFuYWdlcikKLSAgICAgICAgZmFj
dG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFz
aWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01h
bmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljTmV0d29y
a01hbmFnZXI+KCk7CiAKICAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZh
Y3RvcnkpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oKmZhY3RvcnlBbmRUaHJl
YWRzLm5ldHdvcmtUaHJlYWQpOworICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2Nr
ZXRGYWN0b3J5ID0gbWFrZVVuaXF1ZTxCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5
QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRT
b2NrZXRGYWN0b3J5LT5zZXREaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMobV9kaXNhYmxl
Tm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0
aW9uKG9ic2VydmVyLCAqZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIsICpmYWN0b3J5
QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBu
dWxscHRyKTsKQEAgLTMxNCw3ICszMTUsNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4gcG9ydEFsbG9j
YXRvcjsKICAgICBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPkludm9rZTx2b2lk
PihSVENfRlJPTV9IRVJFLCBbJl0oKSB7Ci0gICAgICAgIGF1dG8gYmFzaWNQb3J0QWxsb2NhdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3Jr
TWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOworICAgICAgICBhdXRvIGJhc2ljUG9ydEFs
bG9jYXRvciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNyaWNrZXQ6OkJhc2lj
UG9ydEFsbG9jYXRvcj4oJm5ldHdvcmtNYW5hZ2VyLCAmcGFja2V0U29ja2V0RmFjdG9yeSk7CiAg
ICAgICAgIGlmICghbV9lbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKQogICAg
ICAgICAgICAgYmFzaWNQb3J0QWxsb2NhdG9yLT5zZXRfZmxhZ3MoYmFzaWNQb3J0QWxsb2NhdG9y
LT5mbGFncygpIHwgY3JpY2tldDo6UE9SVEFMTE9DQVRPUl9ESVNBQkxFX0FEQVBURVJfRU5VTUVS
QVRJT04pOwogICAgICAgICBwb3J0QWxsb2NhdG9yID0gV1RGTW92ZShiYXNpY1BvcnRBbGxvY2F0
b3IpOwpAQCAtMzM1LDcgKzMzNiw3IEBAIHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImIExp
YldlYlJUQ1Byb3ZpZGVyOjpjZXJ0aWZpY2F0ZUdlbmVyYXRvcigpCiB7CiAgICAgYXV0byYgZmFj
dG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtU
aHJlYWRXaXRoU29ja2V0U2VydmVyKTsKICAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmNlcnRp
ZmljYXRlR2VuZXJhdG9yKQotICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdl
bmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4o
ZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFk
cy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlm
aWNhdGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OlJU
Q0NlcnRpZmljYXRlR2VuZXJhdG9yPihmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQu
Z2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCkpOwogCiAgICAgcmV0
dXJuICpmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggYmRmMDkwMDQwYzkwNjU3ZjQ5ZjBjZTRhZTI4
MDc3MzhhMWU4YmU3OS4uN2FhOGRlMmViM2E0YzU1NWUwOWE2MGQ3ZDdjM2FkODMxOWIxMThkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTY0LDYgKzY0LDcgQEAgc3Ry
dWN0IFJUQ1J0cENhcGFiaWxpdGllczsKIGVudW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBO
b3RJbXBsZW1lbnRlZCwgQmFkUGFyYW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBVbmlxdWVSZWY8TGliV2ViUlRD
UHJvdmlkZXI+IGNyZWF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
Q29jb2EuaAppbmRleCA3NzJhMzk1ZjBjYmI0M2U3MzA3NTBjY2I5NjM2MTYxY2FhMzQxYzYzLi5k
M2MzODM5NWMwNzdmMzQ2MDRiNWJiMGY0YjQzYWUxMTAwY2RmMjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3MgVmlk
ZW9FbmNvZGVyRmFjdG9yeTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgTGliV2ViUlRDUHJvdmlkZXJDb2NvYSA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlciB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGliV2ViUlRDUHJv
dmlkZXJDb2NvYSgpID0gZGVmYXVsdDsKICAgICB+TGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKaW5k
ZXggMTVlMmE4Nzg5YzA3ZmIwZDBhZWM2ZjZjMjBmN2JiMTdmYThkYjdkMi4uNWI4MjczYjA4NTE5
NmZmZDMwZTRkN2E3ZjY1NTEwYmVjMDgwMzE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCkBAIC00NCwxMiArNDQsMTIgQEAgYm9vbCBM
aWJXZWJSVENQcm92aWRlcjo6d2ViUlRDQXZhaWxhYmxlKCkKIAogc3RkOjp1bmlxdWVfcHRyPHdl
YnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNy
ZWF0ZURlY29kZXJGYWN0b3J5KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3Ry
ZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJl
YW1lclZpZGVvRGVjb2RlckZhY3Rvcnk+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6
OlZpZGVvRW5jb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVF
bmNvZGVyRmFjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJW
aWRlb0VuY29kZXJGYWN0b3J5PigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCmluZGV4
IDgyY2JjYjFjNjZkMzJlYTE4Y2RlYjE2NzkzOGQ2OGQzYjEyZTQxOWEuLmY3ZDg1ZGM2MGE2MWE4
MTQ2ZGJhMGQwM2U1NWQ3NTc2MmZlOTBmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCkBAIC0xODgsOCArMTg4LDggQEAgdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShj
b25zdCBNZWRpYVRpbWUmIHMKICAgICAgICAgaWYgKCFyZW1vdGVJT1VuaXQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOwotICAgICAgICBt
X291dHB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0g
bWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOwor
ICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsKIAogICAgICAgICBtX2RhdGFTb3VyY2UgPSBB
dWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAy
LCBzdHJlYW1UcmFjaygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
Lm1tCmluZGV4IGU4ZTNkMzQ4NmRhNDNhYWMxZGQ1NGI3OGU2YjRkZjRkYzk4MTY3OTAuLjYxMWFj
MTZiOWVjYjg2ODk4YTM3MjY0NzFjNzYyMDcxMmZiOWIzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjOjpyZWNvbmZpZ3VyZSgpCiAgICAgY29uc3QgYm9vbCBpc05vbklu
dGVybGVhdmVkID0gdHJ1ZTsKICAgICBGaWxsT3V0QVNCREZvckxQQ00obV9zdHJlYW1Gb3JtYXQs
IHNhbXBsZVJhdGUoKSwgY2hhbm5lbENvdW50LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQs
IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdCwgaXNGbG9hdCwgaXNCaWdFbmRpYW4sIGlzTm9u
SW50ZXJsZWF2ZWQpOwogCi0gICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkF1ZGlvQnVmZmVyTGlzdD4obV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRl
c1BlckZyYW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0
ID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVh
bUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKIAogICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247CiAgICAgQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uQ3JlYXRlKE5VTEwsICZtX3N0cmVhbUZvcm1hdCwgMCwgTlVMTCwgMCwgTlVM
TCwgTlVMTCwgJmZvcm1hdERlc2NyaXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCBmOWRjNGE4NDdmNGEzNTVkOWNjZmY0Y2Rl
MDMwOGQwZDVjNWM0NDU2Li4zODhkNzFlMjRiMjVlYmY2ZDc3ODgxNGZkZDBhOTY2M2IxNzA1NDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1t
CkBAIC00Niw3ICs0Niw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRvWVVWKENWUGl4CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKQotICAgICAgICBt
X3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAq
KWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJG
b3JtYXQoKSkgfSk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVl
PFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9f
YnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAocHJl
ZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKSB9KTsKIAogICAgIHJldHVybiBtX3BpeGVsQnVmZmVy
Q29uZm9ybWVyLT5jb252ZXJ0KHBpeGVsQnVmZmVyKTsKIH0KQEAgLTc1LDcgKzc1LDcgQEAgUmV0
YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
Ojpyb3RhdGVQaXhlbEJ1ZmZlcigKICAgICAgICAgSW50U2l6ZSBzaXplID0geyAoaW50KUNWUGl4
ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikgLCAoaW50KUNWUGl4ZWxCdWZmZXJHZXRIZWln
aHQocGl4ZWxCdWZmZXIpIH07CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAg
ICAgICAgIHRyYW5zZm9ybS5yb3RhdGUocm90YXRpb25Ub0FuZ2xlKHJvdGF0aW9uKSk7Ci0gICAg
ICAgIG1fcm90YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUPihXVEZNb3ZlKHRyYW5zZm9ybSksIHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZv
cm1hdFR5cGUocGl4ZWxCdWZmZXIpLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VD
b21wYXRpYmxlOjpObyk7CisgICAgICAgIG1fcm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJ
bWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKHRyYW5zZm9ybSksIHNpemUsIENWUGl4ZWxC
dWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpLCBJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fcm90
YXRpb25TZXNzaW9uLT5yb3RhdGUocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5o
CmluZGV4IDhlMjlkN2I4MWExNzNkZmE1MzcwNWZhMWU2MmM5ZTg4M2M0Zjk1MDIuLmQ0NzY5ZDY5
ZTRhZjA0NzBkNjJjZTkwYjc1NDQwZTI4Mjc2OWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2Nr
LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2sgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2spOwogcHVibGljOgogICAgIGV4
cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrKE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXI6OkNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAppbmRleCAzYzZkZTFjNGViZTRlYzc0NzM1
NDBhZWNjYjg5NzYyYjE5NTU1Y2Q0Li4xMzg4YWQwNTEzMTA4YjJlYjkyZWMyYmJlMjg5MzM2NTJl
OTlhMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFD
aGFubmVsSGFuZGxlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JU
Q0RhdGFDaGFubmVsSGFuZGxlck1vY2suaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIGZpbmFsIDogcHVibGlj
IFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIFRpbWVyRXZlbnRCYXNlZE1vY2sgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlck1vY2soY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCmlu
ZGV4IDJmMWZiNTVlZTY3MWYyZjIyOGZjNTE1MWQwZGQ2OWNmOGVjNjk1Y2IuLjJjN2M0MWJkNjk2
ZmYxZjliYWIzODM4MWE0YjU4Mzg1NjhiMThhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcApAQCAtOTgsNyArOTgsNyBAQCBSZW1v
dGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyKFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNsaQogCiB2b2lkIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OmZp
cmUoKQogewotICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChzdGQ6Om1ha2Vf
dW5pcXVlPFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrIiwgUlRDRGF0YUNoYW5uZWxJbml0KCkpKTsKKyAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3Rl
RGF0YUNoYW5uZWwobWFrZVVuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERhdGFD
aGFubmVsU3RhdGVOb3RpZmllcjo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCogY2xpZW50LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA1NTk5MzM4MmIz
YTFkYzM2ZDgzNTZiNjFiMjVjNzAwMmUwNzM0N2ZlLi4zODdhMjFkYWY0NTUyMzk2OGFlZTRmNzk0
MTlkM2Q4Yjg4NjkwZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBNZWRpYVBs
YXllciBFbmlnbmUgU3VwcG9ydAogdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAg
cmVnaXN0cmFyKFtdIChNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRU
eXBlcywKKyAgICByZWdpc3RyYXIoW10gKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1h
a2VVbmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBv
cnRlZFR5cGVzLAogICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogfQogCkBAIC0x
NjYsNyArMTY2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICBpZiAobV9tZWRpYVNv
dXJjZVByaXZhdGUpCiAgICAgICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVy
ZWQoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJv
b2wgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJj
ZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJj
ZUhhbmRsZS5jcHAKaW5kZXggY2M2N2NlNjg4ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5ZTNjMjhm
OC4uOTA1MTQzMTYyMWE4YzEwOGE2ZWYwZjUxZWI2MGY3NzRhZmNjMGExMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNw
cApAQCAtMTU5LDkgKzE1OSw5IEBAIEJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291cmNlSGFu
ZGxlKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLCBtX2Fz
eW5jIHsgYXN5bmMgfQogewogICAgIGlmIChtX2FzeW5jKQotICAgICAgICBtX2FzeW5jU3RyZWFt
ID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgbV9h
c3luY1N0cmVhbSA9IG1ha2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7CiAgICAgZWxz
ZQotICAgICAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVN0cmVhbT4oKTsKKyAg
ICAgICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVlPEZpbGVTdHJlYW0+KCk7CiB9CiAKIEJsb2JSZXNv
dXJjZUhhbmRsZTo6fkJsb2JSZXNvdXJjZUhhbmRsZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggODEx
MmI5NzNlZWY1NGVkN2E1YzdhNTE0Y2YxMDJhYzk5MWU3NjUzMy4uYjU0MWY2MmVlMDA1MjAzNjJj
MTU1N2Y3Y2E0OTY0YTIzN2I4NzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBE
ZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVj
b2RpbmdSZXN1bHREaXNwYQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGNy
ZWF0ZURlY29kZVRhc2soY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYgc2No
ZWR1bGVDb250ZXh0LCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZVRhc2s+KAorICAgIHJldHVy
biBtYWtlVW5pcXVlPERlY29kZVRhc2s+KAogICAgICAgICB1cmwuc3RyaW5nKCksCiAgICAgICAg
IHNjaGVkdWxlQ29udGV4dCwKICAgICAgICAgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2Uu
aAppbmRleCBhOTg0M2Y1MGU1YTQzNDAzZDhmNTJmMGE5NjdmOTAyNzg2NWU4ZDU2Li44ZGFlYzU0
YTEzNDJkYWI1OWMzNWNjNDkyN2EwMGZlNjIyOTQ5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCkBAIC0zNyw2ICszNyw3
IEBAIFdFQkNPUkVfRVhQT1JUIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldl
YktpdEludGVybmFsOyAvLyBVc2VkIGZvciBlCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3Qg
Y2hhciogY29uc3QgZXJyb3JEb21haW5XZWJLaXRTZXJ2aWNlV29ya2VyOyAvLyBVc2VkIGZvciBl
cnJvcnMgdGhhdCBoYXBwZW4gd2hlbiBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBhIHNlcnZpY2Ug
d29ya2VyLgogCiBjbGFzcyBSZXNvdXJjZUVycm9yQmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBpc29s
YXRlZENvcHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCAzMGMyN2Y1NzZhMTc3ZTZiNmFiMTk0NzQwYTdk
OTAyNWI2NTlmY2FkLi42YTMxZTNlNTI3ZjhlYzkyZDZmNjJiOTZjZGQ4MTk0NDE0YjU1YzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0
aW5TeW5jaHJvbm91c0xvYWRlcihjb25zdCBBdG9tU3RyaW5nJiBwcm90b2NvbAogfQogCiBSZXNv
dXJjZUhhbmRsZTo6UmVzb3VyY2VIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVu
dCwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZikKLSAgICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJj
ZUhhbmRsZUludGVybmFsPih0aGlzLCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xv
YWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVz
dC51cmwoKSksIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKSkKKyAgICA6IGQobWFrZVVuaXF1
ZTxSZXNvdXJjZUhhbmRsZUludGVybmFsPih0aGlzLCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQs
IGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZV
UkwocmVxdWVzdC51cmwoKSksIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKSkKIHsKICAgICBp
ZiAoIXJlcXVlc3QudXJsKCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJ
bnZhbGlkVVJMRmFpbHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRl
eCBkYWQ5MDEwZjk1NzBlYmM1Njc2MzM1NDNmZDFmYzUwMmY4NDY5Yjk5Li43MTNiNGRmYjMwYjJh
ZmRmYmVhZmY0ZWU1MzcwYTI1NDZmYWQzYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbgogICAg
IH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7
CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsKQEAgLTIwNyw3ICsyMDcs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZQogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdl
UXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVl
LT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAg
ICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1f
c2VtYXBob3JlLndhaXQoKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRh
KENGRAogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVl
KQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVs
c2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTI3Niw3
ICsyNzYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU6OmRpZEZhaWwoQ0ZFcnJvclJlZgogICAgIH07CiAKICAgICBpZiAobV9t
ZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmsp
KSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwog
fQpAQCAtMzExLDcgKzMxMSw3IEBAIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6CiAgICAgfTsKICAg
ICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7Cisg
ICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+
PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdU
Rk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsKQEAgLTMzMSw3ICszMzEsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZwogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVl
dWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5h
cHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAg
ZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKENGCiAgICAgfTsKIAogICAgIGlmICht
X21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNz
YWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7
CiB9CkBAIC0zODAsNyArMzgwLDcgQEAgQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm8KICAgICB9Owog
ICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsK
KyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
V1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tCmluZGV4IGM5YjUzZTMxMmFkODU1NzZkMzY2ZWY0ZGM1Mzc0MzkxZmU4YzY5MGMuLmJh
NTVmMDA0OGI4ZTRkZGM1YjA3MzRkOTkzZGM5YjEzYjhjYjJiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KQEAgLTUyMyw3ICs1MjMsNyBAQCAtICh2b2lkKV9yZXN0YXJ0CiAKICAgICBfcmVz
b3VyY2UgPSBzZWxmLnNlc3Npb24ubG9hZGVyLnJlcXVlc3RSZXNvdXJjZShzZWxmLm9yaWdpbmFs
UmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxv
d0NhY2hpbmcpOwogICAgIGlmIChfcmVzb3VyY2UpCi0gICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Pihz
ZWxmKSk7CisgICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50PihzZWxmKSk7CiB9CiAKIC0gKHZvaWQpX2NhbmNlbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5jcHAKaW5kZXggYTQ1YTVmNGU0YTAyOGZlNmU3ZjJkZmI3NWVjMmM4YWVjOTNlZDJiYi4uMTAx
NjI0ZjI5MDBhOTRjYzdkMWE4OTk4OTY3NmQ2YjQ1YWI3ZmEzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODQs
NyArMzg0LDcgQEAgT3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hD
b29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QKICAgICAgICAgIkFORCAoKGRvbWFp
biA9ID8pIE9SIChkb21haW4gR0xPQiA/KSkgIlwKICAgICAgICAgIk9SREVSIEJZIGxlbmd0aChw
YXRoKSBERVNDLCBsYXN0dXBkYXRlZCI7CiAKLSAgICBhdXRvIHBzdG10ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0byBwc3RtdCA9
IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGlmICgh
cHN0bXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKQEAgLTU2Niw3ICs1NjYsNyBA
QCBib29sIENvb2tpZUphckRCOjpkZWxldGVBbGxDb29raWVzKCkKIAogdm9pZCBDb29raWVKYXJE
Qjo6Y3JlYXRlUHJlcGFyZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRv
IHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNl
LCBzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+
KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwog
ICAgIEFTU0VSVChyZXQgPT0gU1FMSVRFX09LKTsKICAgICBtX3N0YXRlbWVudHMuYWRkKHNxbCwg
V1RGTW92ZShzdGF0ZW1lbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckRCLmgKaW5kZXggMGMwM2U5ZDY5MmM3ZjZkYzYxMzA4NmZmMjU1
YzIwZTVjNmJiZTllOS4uMjY4N2FlNzRmYjlkOTk0Mjk3MmJlZGNhYzZhYjliMTE1OWE3ZTUwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckRCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckRCLmgKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBjbGFzcyBDb29raWVBY2NlcHRQb2xpY3kgewog
fTsKIAogY2xhc3MgQ29va2llSmFyREIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvb2tpZUphckRCKTsKIAogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
aAppbmRleCAxMTAyN2NlM2IzY2Y2Mzg4Zjk5NTRhYWY0OWM0OTAzZmU5M2ZkZmY1Li44Y2UxMTQz
ODQ4ZmIyMzE4YmExOTkwZWFkMThlMTVmMzdkODQzNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAtNDAsNyAr
NDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsQ2FjaGVFbnRyeSB7Ci0K
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDdXJsQ2FjaGVFbnRy
eShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyaW5nJiBj
YWNoZURpcik7CiAgICAgfkN1cmxDYWNoZUVudHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXgg
ZmE1YzhkMmQyMWI2MjczODE1ZDAyM2E0ZjIwNDU1MDE2ZTk2MzhhZi4uZTJiNGI1ZGZiZGE2MmEz
YzBjYjZiZjkxODFiYmQ2OGZkN2E0YTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTQxLDcg
KzE0MSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgLS1l
bmQ7IC8vIExhc3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAg
ICAgU3RyaW5nIHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgYXV0byBjYWNo
ZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBt
X2NhY2hlRGlyKTsKKyAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVVuaXF1ZTxDdXJsQ2Fj
aGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKIAogICAgICAgICBpZiAoY2FjaGVF
bnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1fc3RvcmFnZVNp
emVMaW1pdCkgewogICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gY2FjaGVFbnRy
eS0+ZW50cnlTaXplKCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2Vy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmIGpvYiwgUmVzb3VyY2VSZXNwb25z
ZSYKIAogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwpOyAvLyBJbnZhbGlkYXRlIGV4
aXN0aW5nIGVudHJ5IG9uIDIwMAogCi0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CisgICAgICAg
IGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwg
bV9jYWNoZURpcik7CiAgICAgICAgIGJvb2wgY2FjaGVhYmxlID0gY2FjaGVFbnRyeS0+cGFyc2VS
ZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOwogICAgICAgICBpZiAoY2FjaGVhYmxlKSB7CiAgICAg
ICAgICAgICBjYWNoZUVudHJ5LT5zZXRJc0xvYWRpbmcodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3ZDE3
MjE3YzJlNDQyYWM2ZjNkZThjNGI2MGE5NTI2YzlmNjU4NDJhLi43YjA0ZmEyNmE0MmFiOTc4YWUw
N2JkMzFmMGU2OTE1NTFiYmM0NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBDdXJs
Q29udGV4dDo6Q3VybENvbnRleHQoKQogICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRB
czxzaWduZWQ+KCJXRUJLSVRfQ1VSTF9NQVhfSE9TVF9DT05ORUNUSU9OUyIpKQogICAgICAgICBt
YXhIb3N0Q29ubmVjdGlvbnMgPSAqdmFsdWU7CiAKLSAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5l
Y3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOworICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1
ZTxDdXJsUmVxdWVzdFNjaGVkdWxlcj4obWF4Q29ubmVjdHMsIG1heFRvdGFsQ29ubmVjdGlvbnMs
IG1heEhvc3RDb25uZWN0aW9ucyk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0g
ZW52VmFyLmRlZmluZWQoIkRFQlVHX0NVUkwiKTsKQEAgLTMzNiw3ICszMzYsNyBAQCBDVVJMY29k
ZSBDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xDdHgodm9pZCogc3NsQ3R4KQogICAgICAgICByZXR1
cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKIAogICAgIGlmICghbV9zc2xWZXJpZmllcikK
LSAgICAgICAgbV9zc2xWZXJpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFNTTFZlcmlmaWVy
Pihzc2xDdHgpOworICAgICAgICBtX3NzbFZlcmlmaWVyID0gbWFrZVVuaXF1ZTxDdXJsU1NMVmVy
aWZpZXI+KHNzbEN0eCk7CiAKICAgICByZXR1cm4gQ1VSTEVfT0s7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCmluZGV4IDdkMDYw
NjhjZDlkMWFlYmVlNDJkMzg1OTRhYmQwOTRiOTAxMTQ0NDQuLmE0ZjhjMDI4Mjc2N2IwYjQ4Nzcw
YTA0OGVlODUyZjE2NmUwN2E3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCkBAIC0xNDcsNiArMTQ3LDcgQEAgY2xhc3MgQ3Vy
bENvbnRleHQgOiBwdWJsaWMgQ3VybEdsb2JhbCB7CiAvLyBDdXJsTXVsdGlIYW5kbGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgQ3VybE11bHRp
SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDdXJsTXVsdGlIYW5kbGUpOwogCiBwdWJsaWM6CkBAIC0yMDIsNiArMjAzLDcgQEAg
Y2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIAogY2xhc3Mg
Q3VybEhhbmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ3VybEhhbmRsZSk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAK
aW5kZXggOWZjNjZlYzAyMGUyOTk2ZDM4ZDA2MGFkNzhkMzZmMTE0YWU0ODFjNi4uNzg1ZDZjYjhl
NmRjOGZhZmU4ZTgxMGRmYmZkZjRjZTc2MmY0YjM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgY29uc3QgVmVjdG9yPGNoYXI+KiBDdXJsRm9ybURhdGFTdHJlYW06
OmdldFBvc3REYXRhKCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1fcG9z
dERhdGEpCi0gICAgICAgIG1fcG9zdERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFy
Pj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsKKyAgICAgICAgbV9wb3N0RGF0YSA9IG1ha2VVbmlx
dWU8VmVjdG9yPGNoYXI+PihtX2Zvcm1EYXRhLT5mbGF0dGVuKCkpOwogCiAgICAgcmV0dXJuIG1f
cG9zdERhdGEuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYThiYjhkODFh
N2FiZDcxNzQzYmQzOTVkY2M4NjYzMTc5ZmRlMmQ1NS4uY2NkYmIyODIzOWYyMmMzNjM2Y2FjMTRi
MDc4NWQ2ZjU1YWIyZjViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtNDYsNyArNDYs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybE11bHRpcGFydEhhbmRsZT4gQ3VybE11bHRpcGFydEhh
bmRsZTo6Y3JlYXRlSWZOZWVkZWQoQ3VybE11bAogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRp
cGFydEhhbmRsZT4oY2xpZW50LCAqYm91bmRhcnkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEN1
cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5KTsKIH0KIAogT3B0aW9uYWw8U3Ry
aW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0Qm91bmRhcnkoY29uc3QgQ3VybFJlc3Bv
bnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDgwNGM3NDQ2YzQ1M2I2NzE1
Zjg4NWU5YWZjMjczODg1OGUyNjg3MWEuLjcyMGM2OTgwZWRkM2RhZTNlMTJjNjNmMDhiNjNjNmY4
OTZlNTMzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBD
dXJsUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRI
YW5kbGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Q3VybE11bHRpcGFydEhhbmRsZT4gY3JlYXRlSWZOZWVkZWQoQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IEN1cmxSZXNwb25zZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApp
bmRleCAwNzAzNGJiNjJkN2JiZTY0MGQ0ZjgwMWM0ZTE4NDIyM2RmMjQxM2RjLi5iMmEyMmRhMjJk
NmMwMTU1NTA3NTk5NWY2YjgzMDg2ZmVhODFmZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTE4NSw3ICsxODUs
NyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjYWxsQ2xpZW50KEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVl
c3QmLCBDdXJsUmVxdWVzdENsaWVudCYpPiYmCiB2b2lkIEN1cmxSZXF1ZXN0OjpydW5Pbk1haW5U
aHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVl
KQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogICAgIGVs
c2UgaWYgKGlzTWFpblRocmVhZCgpKQogICAgICAgICB0YXNrKCk7CiAgICAgZWxzZQpAQCAtMjA1
LDcgKzIwNSw3IEBAIENVUkwqIEN1cmxSZXF1ZXN0OjpzZXR1cFRyYW5zZmVyKCkKICAgICBhdXRv
IGh0dHBIZWFkZXJGaWVsZHMgPSBtX3JlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwogICAgIGFw
cGVuZEFjY2VwdExhbmd1YWdlSGVhZGVyKGh0dHBIZWFkZXJGaWVsZHMpOwogCi0gICAgbV9jdXJs
SGFuZGxlID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsSGFuZGxlPigpOworICAgIG1fY3VybEhhbmRs
ZSA9IG1ha2VVbmlxdWU8Q3VybEhhbmRsZT4oKTsKIAogICAgIG1fY3VybEhhbmRsZS0+c2V0VXJs
KG1fcmVxdWVzdC51cmwoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDkxODM3
YWY5ZjNlNDc3M2I1YzcxYzFjMjYwZGI5NmY1ODZiMjExYWYuLjNhYTVmNTJkYjYyN2FiYjBlY2Nh
ZjI5MjEzZGNlMTJmYmM2ZmJjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtMTQz
LDcgKzE0Myw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiB7
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2N1cmxNdWx0aUhhbmRsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRpSGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFu
ZGxlID0gbWFrZVVuaXF1ZTxDdXJsTXVsdGlIYW5kbGU+KCk7CiAgICAgbV9jdXJsTXVsdGlIYW5k
bGUtPnNldE1heENvbm5lY3RzKG1fbWF4Q29ubmVjdHMpOwogICAgIG1fY3VybE11bHRpSGFuZGxl
LT5zZXRNYXhUb3RhbENvbm5lY3Rpb25zKG1fbWF4VG90YWxDb25uZWN0aW9ucyk7CiAgICAgbV9j
dXJsTXVsdGlIYW5kbGUtPnNldE1heEhvc3RDb25uZWN0aW9ucyhtX21heEhvc3RDb25uZWN0aW9u
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCmluZGV4IGNhM2JiYTgxMzQ0MGJmZjZlODAzMTI2NDA5
NzZjYzM4OGE3NDg2NGYuLjRiOTVjMGQxOWFkOTA0MmQyYWM3MGVkNGIxMzNmOGQxZDBjNjMyYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50OwogCiBjbGFzcyBDdXJsUmVx
dWVzdFNjaGVkdWxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ3VybFJlcXVlc3RTY2hlZHVsZXIpOwogICAgIGZyaWVuZCBOZXZlckRl
c3Ryb3llZDxDdXJsUmVxdWVzdFNjaGVkdWxlcj47CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmgKaW5kZXgg
NDUyZjcwNWY5Y2I4ZmUyOTE5Y2YyODU2ZGVlOGQwYWQxYTgxNGYxYS4uM2I1OWNiMWY4NjM2NTQ4
ODFkNDZlNjViYmU5NTU0ZTlmNjYzNDM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVyaWZpZXIuaApAQCAtMzQsNiArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsU1NMVmVyaWZpZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxTU0xW
ZXJpZmllcik7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBTU0xDZXJ0aWZpY2F0ZUZsYWdzIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggNDdiMzc4M2U2NDYyOWE5MmVlOGRhNDBiZDQ3OTcw
Yzc5NmVhNTQ4Ni4uNzA3ZDBhNjYzYTcxODZkYjEwNTA0ZGRjMjg2NmI3Njk3N2QzNGI3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBSZWY8Q3VybFJlcXVlc3Q+
IFJlc291cmNlSGFuZGxlOjpjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBSZQogQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUqIFJlc291cmNlSGFuZGxlOjpkZWxl
Z2F0ZSgpCiB7CiAgICAgaWYgKCFkLT5tX2RlbGVnYXRlKQotICAgICAgICBkLT5tX2RlbGVnYXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOwor
ICAgICAgICBkLT5tX2RlbGVnYXRlID0gbWFrZVVuaXF1ZTxDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZT4oKnRoaXMpOwogCiAgICAgcmV0dXJuIGQtPm1fZGVsZWdhdGUuZ2V0KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBhMzY3ZmRhNjJhNmQyMTJhNDk1
NWU2ODg5YzY1NzIwYzllZmFmMjFiLi4xM2E4MzJjMjY2OWI0Y2U4Y2JlYmYzMTM0YmEwODlkOTAy
ZGZhOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTIwMiw3
ICsyMDIsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnN0b3BUaHJlYWQoKQogdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjYWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9p
ZCgpPiYmIHRhc2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3Rhc2tR
dWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRh
c2spKSk7CisgICAgbV90YXNrUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgp
Pj4oV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmV4
ZWN1dGVUYXNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggNWEwNmYyZWY4OWVmNWMyMWJlMTU3YzcxZGEx
NDE5ZWM4NDgwOWVmNy4uNzY1NDNhZDE2YzE0OTQ4NTg4MjI5OTFmMzA1ZmY3YTMzZTE3YWU0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0Nv
bnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZp
ZXdDb252ZXJ0ZXIuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBjbGFzcyBQcmV2aWV3Q29udmVydGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmV2aWV3
Q29udmVydGVyKTsKIHB1YmxpYzoKICAgICBQcmV2aWV3Q29udmVydGVyKGlkIGRlbGVnYXRlLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCA9IHsgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVz
b3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW0KaW5kZXggZGUwYjdlMWYxODdiNTA3NjVhOWQxN2MyZWM0ZWM4MDMzZDgzZjM0
MS4uZjEwZWI2MjVlYTA4MTMwMjkyNzgwN2NlYzFlMmZmNmU3M2YyNGMxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDoo
RnVuY3Rpb248dm9pZCgpPiYmKWZ1bmN0aW9uCiB7CiAgICAgLy8gU3luYyB4aHIgdXNlcyB0aGUg
bWVzc2FnZSBxdWV1ZS4KICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIHJldHVybiBt
X21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4o
V1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLT5hcHBl
bmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogCiAg
ICAgLy8gVGhpcyBpcyB0aGUgY29tbW9uIGNhc2UuCiAgICAgaWYgKCFzY2hlZHVsZWRXaXRoQ3Vz
dG9tUnVuTG9vcE1vZGUobV9zY2hlZHVsZWRQYWlycykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAK
aW5kZXggNGJiMzBhODcxZGU1NzAzOWI3YjcxOTM0ZmVjMzc2M2E1YTRhODJkOS4uZDRiYTRlOTUw
NDE1YmI0MDZiYWJjMDFiNmQyMGM2NmQ0Zjg0YjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNw
cApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZShj
b25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBECiAKICAgICBnX29i
amVjdF9zZXRfZGF0YShHX09CSkVDVChhZGRyZXNzLmdldCgpKSwgImlkZW50aWZpZXIiLCBHVUlO
VF9UT19QT0lOVEVSKGlkZW50aWZpZXIpKTsKIAotICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhh
bmRsZXJzLmFkZChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPEROU1Jlc29sdmVRdWV1ZVNv
dXA6OkNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIFdURk1vdmUoY2FuY2VsbGFibGUpKSk7CisgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlcnMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPERO
U1Jlc29sdmVRdWV1ZVNvdXA6OkNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4oV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoY2FuY2VsbGFibGUpKSk7CiB9CiAKIHZvaWQgRE5T
UmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBlNGM4YjBmMTNlNmQwODlhNTg5MmFh
N2FlMGE5YjgyMTU4NWJiOWE0Li5iZDA2MmY3MjhmMTZmNzAwYzQ2ODAzYmM4MzllYzBiYzU1Nzhl
MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0xMzQsNiArMTM0
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGF1dGhUeXBlRnJvbVByb3RlY3Rpb25TcGFjZUF1dGhl
bnRpY2F0aW9uU2NoZW1lKFByb3RlY3Rpb25TcGEKIH0KIAogc3RydWN0IFNlY3JldFNlcnZpY2VT
ZWFyY2hEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgU2Vj
cmV0U2VydmljZVNlYXJjaERhdGEoR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248
dm9pZCAoQ3JlZGVudGlhbCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBjYW5j
ZWxsYWJsZShjYW5jZWxsYWJsZSkKICAgICAgICAgLCBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKQEAgLTE3Myw3ICsxNzQsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90
ZWN0aW9uUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBkYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFNlY3JldFNl
cnZpY2VTZWFyY2hEYXRhPihjYW5jZWxsYWJsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIHNlY3JldF9zZXJ2aWNlX3NlYXJjaChudWxscHRyLCBTRUNSRVRfU0NIRU1BX0NPTVBB
VF9ORVRXT1JLLCBhdHRyaWJ1dGVzLmdldCgpLAogICAgICAgICBzdGF0aWNfY2FzdDxTZWNyZXRT
ZWFyY2hGbGFncz4oU0VDUkVUX1NFQVJDSF9VTkxPQ0sgfCBTRUNSRVRfU0VBUkNIX0xPQURfU0VD
UkVUUyksIGNhbmNlbGxhYmxlLAogICAgICAgICBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQmlkaVJlc29sdmVyLmgKaW5kZXggMTBmZWNiYzQxOTQ3OTVmMzJkMWNhN2U3NjA5
YWM0ZmYyMDkyY2QyMy4uYWFmZWQzZGU3OWI5OWFhYzQ3NjljNzZiNTVmNmMxY2JiNjYxYjhmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0zMjEs
NyArMzIxLDcgQEAgdm9pZCBCaWRpUmVzb2x2ZXJCYXNlPEl0ZXJhdG9yLCBSdW4sIERlcml2ZWRD
bGFzcz46OmFwcGVuZFJ1bkludGVybmFsKCkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmRP
ZmZzZXQgPj0gc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICBtX3J1bnMuYXBwZW5kUnVuKHN0ZDo6
bWFrZV91bmlxdWU8UnVuPihzdGFydE9mZnNldCwgZW5kT2Zmc2V0ICsgMSwgY29udGV4dCgpLCBt
X2RpcmVjdGlvbikpOworICAgICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVlPFJ1
bj4oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsK
IAogICAgICAgICBtX2Vvci5pbmNyZW1lbnQoKTsKICAgICAgICAgbV9zb3IgPSBtX2VvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAppbmRleCA1OWUxZmM3MmEy
YmYyOTY5NDVhODZmODU1MmI4NjM3NmE5ZWE1ODZkLi4yYzhjY2U3MzA4OGZhNWFkMGNmNTk1OWNj
ZTRmOTY5MWJmMzU3YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZUlDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJ
Q1UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBpY3U7CiAKIHN0ZDo6dW5p
cXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVJQ1U+KGxvY2Fs
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogTG9jYWxlSUNVOjpMb2NhbGVJQ1UoY29u
c3QgY2hhciogbG9jYWxlKQpAQCAtMTYzLDIyICsxNjMsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRE
YXRlRm9ybWF0UGF0dGVybihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkKIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25z
dCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGlu
dDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQogewogICAgIGlmICghZGF0ZUZvcm1hdCkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGlmICh1ZGF0X2Nv
dW50U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlKSAhPSBzdGFydEluZGV4ICsgc2l6ZSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogCi0gICAgYXV0byBsYWJlbHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShz
aXplKTsKICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIGludDMyX3QgbGVuZ3Ro
ID0gdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCAwLCAw
LCAmc3RhdHVzKTsKICAgICAgICAgaWYgKHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJP
UikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAg
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0
SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsICZzdGF0dXMpOwogICAgICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxT
dHJpbmc+PigpOwogICAgICAgICBsYWJlbHMtPmFwcGVuZChTdHJpbmc6OmFkb3B0KFdURk1vdmUo
YnVmZmVyKSkpOwogICAgIH0KICAgICByZXR1cm4gV1RGTW92ZShsYWJlbHMpOwpAQCAtMTg2LDcg
KzE4Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVh
dGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCoKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tNb250aExhYmVscygpCiB7Ci0gICAgYXV0
byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8g
bGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2Vy
dmVDYXBhY2l0eShXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFt
ZSk7ICsraSkKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ldKTsK
QEAgLTIwOCw3ICsyMDgsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjptb250
aExhYmVscygpCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0
ZUZhbGxiYWNrQU1QTUxhYmVscygpCiB7Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBsYWJl
bHMtPmFwcGVuZCgiQU0iKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiUE0iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCmluZGV4IGJiNmIyNmJhNTljYjM2Yjk4
OWI3ZTZmNTg2MzBjN2E3YjNiNTZlYTcuLjc4MTVhNDc4ZTAyOTc0NTU5NjU3NmMyZGVkMjIxMTkz
NmFhOTZhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
Tm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBMb2NhbGVOb25lIDogcHVibGljIExvY2FsZSB7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcm
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU5vbmU+KCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TG9jYWxlTm9uZT4oKTsKIH0KIAogTG9jYWxlTm9uZTo6fkxvY2FsZU5v
bmUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY0lDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y0lDVS5jcHAKaW5kZXggZjhlMTY3MDg0OWE5NTg5OGExNDU3YmM5OGRhOTFlNGJkZTc4NGM3OS4u
ZTVmMjgxNjZjNmRkMzRiYzUzNTA5YjZhMDAyMGE4ODg5MDdjMmNlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcApAQCAtMTU2LDQzICsxNTYsNDMg
QEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciBy
ZWdpc3RyYXIpCiAgICAgICAgIC8vIGh0dHA6Ly9kZW1vLmljdS1wcm9qZWN0Lm9yZy9pY3UtYmlu
L2NvbnZleHAKICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIndpbmRvd3MtODc0IikpIHsKICAg
ICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtODc0LTIwMDAi
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUs
ICJ3aW5kb3dzLTg3NC0yMDAwIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ3aW5kb3dzLTk0OSIp
KSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0
OS0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNV
PihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMt
Y3lyaWxsaWMiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAi
bWFjb3MtN18zLTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0
Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy03XzMtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAi
eC1tYWMtZ3JlZWsiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1l
LCAibWFjb3MtNl8yLTEwLjQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
ZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy02XzItMTAuNCIpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1l
LCAieC1tYWMtY2VudHJhbGV1cnJvbWFuIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1l
LCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY0lDVT4obmFtZSwgIm1hY29zLTI5LTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICgh
c3RyY21wKG5hbWUsICJ4LW1hYy10dXJraXNoIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihu
YW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTM1LTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4yIik7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlm
ICghc3RyY21wKG5hbWUsICJFVUMtS1IiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUs
IFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
ZGVjSUNVPihuYW1lLCAid2luZG93cy05NDkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OSIpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBA
IHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVn
aXN0cmFyKQogICAgICAgICBjb25zdCBjaGFyKiBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lID0gdWNu
dl9nZXRDYW5vbmljYWxOYW1lKG5hbWUsICJJQU5BIiwgJmVycm9yKTsKICAgICAgICAgQVNTRVJU
KFVfU1VDQ0VTUyhlcnJvcikpOwogICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWUsIGNhbm9u
aWNhbENvbnZlcnRlck5hbWVdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRleHRDb2RlY0lDVT4obmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZSk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENvbnZlcnRl
ck5hbWUpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKaW5kZXggOTMxNDUzMzI4YTZmNjY5NDg1ZWUw
MWY4YTRlMmNlZGU1MDI2NzdmZi4uOTJjNjYxM2NiMWZjYzBlMzA4YTczYzM1MGE5ZTA3ZWY3NzM0
NjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNM
YXRpbjEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0
aW4xLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJF
bmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRD
b2RlY0xhdGluMTo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikK
IHsKICAgICByZWdpc3RyYXIoIndpbmRvd3MtMTI1MiIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUZXh0Q29kZWNMYXRpbjE+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKaW5kZXggMTc2
NWJmNzkyMTU5NzViMTU3YzhiM2Y3NGM1NTcyYzQ3MWUyMTE0MS4uYzhiNTU4YzhjYTJkM2FmZDMw
MjE0YmNmYzM3YTE0NTc3NTZhMTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9p
ZCBUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFt
ZVJlZ2lzdHJhciByZWdpc3RyYXIKIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVy
Q29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJy
ZXBsYWNlbWVudCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
ZGVjUmVwbGFjZW1lbnQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1Jl
cGxhY2VtZW50PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCmluZGV4IGJlMDA2NTY0NDY0OGZjZTBjMzc5ZDNjNzQz
ZWUyMjdlYTllZGE2ZjQuLjkwYzQ0NzVkMDIwYjlmNDcxYjViZTc3YzNjYWFjMGZkYzk4Y2JhMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3Bw
CkBAIC01NCwxMCArNTQsMTAgQEAgdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJFbmNvZGlu
Z05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRDb2RlY1VU
RjE2OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAg
IHJlZ2lzdHJhcigiVVRGLTE2TEUiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4
dENvZGVjVVRGMTY+KHRydWUpOwogICAgIH0pOwogICAgIHJlZ2lzdHJhcigiVVRGLTE2QkUiLCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjE2PihmYWxz
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2PihmYWxzZSk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjVVRGOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VU
RjguY3BwCmluZGV4IGEzZGFkNGU5ZDE2Mzc2ODYzMDg4YjE5NzEwZjgzOWRiYmZmZWE4ZGQuLmUx
ZDBhNTNjNzE3YWFlNzM5OTM5ZjUxYzRkMzI5MzQ1YWY4OWNhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2
b2lkIFRleHRDb2RlY1VURjg6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdp
c3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckNvZGVjcyhUZXh0
Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigiVVRGLTgiLCBbXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjg+KCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjg+KCk7CiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmlu
ZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5l
ZC5jcHAKaW5kZXggMjk2YzQ2OWYxNjlmYjkxMWRjOGRiZDdhNjQ3ZWE1NjQxZTJmZmUxOS4uNDhh
ZGJhOWQ0YjFhN2E5YTY1OGFlZjlkZmFkZjg1YWRkZTlkY2Y1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJFbmNvZGluZ05h
bWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIKIHZvaWQgVGV4dENvZGVjVXNlckRl
ZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAg
ICAgcmVnaXN0cmFyKCJ4LXVzZXItZGVmaW5lZCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VGV4dENvZGVjVXNlckRlZmluZWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVkPigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5kZXggYTUxN2JlMzQxZjZh
YzRiZThlODkzY2ZhZDdjMjI4ODQ1ZDZhODI4MC4uMmIzZDAzYTM4YTVkMjAxYmI2ZGNiOGViZTQ0
ZjQ2ZmVlZmM2N2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvTG9jYWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xv
Y2FsZU1hYy5tbQpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTG9jYWxlPiBk
ZXRlcm1pbmVMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxM
b2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUu
c3RyaW5nKCkpLmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVNYWM+KGRldGVy
bWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0
cjxOU0RhdGVGb3JtYXR0ZXI+IGNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKE5TTG9jYWxlKiBsb2Nh
bGUsIE5TQ2FsZW5kYXIqIGNhbGVuZGFyLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSBkYXRlU3R5bGUs
IE5TRGF0ZUZvcm1hdHRlclN0eWxlIHRpbWVTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IDZhMTYwZGVjY2ZjOTI2YWVmMzdkZTIz
ZTk3ZjYyZThmNWM2NzkwNmEuLmFhMDBhNGFkNmY1YjU5OTgyYjZiNDc3MzE3MWM4YmM3YzAzMzkw
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNw
cApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9t
U3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPExvY2FsZVdpbj4oTENJREZyb21Mb2NhbGUobG9jYWxlKSk7CiB9CiAKIGlubGluZSBMb2Nh
bGVXaW46OkxvY2FsZVdpbihMQ0lEIGxjaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAppbmRleCBhZjQ2OTEzOTA4MWU4MGMxMjA3Yjgy
Yzk3ZmRmYTNjNzcyMWE2NTExLi4yY2ViNDc1ZTVmYWViYjY3MGM3NDE0NDc1YTQ3MjkyNDk1MmRj
YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2Rl
Y1dpbi5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgVUlOVCBnZXRDb2RlUGFnZShjb25z
dCBjaGFyKiBuYW1lKQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbmV3VGV4
dENvZGVjV2luKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZvaWQqKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5j
b2RpbmcubmFtZSgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjV2luPihnZXRD
b2RlUGFnZShlbmNvZGluZy5uYW1lKCkpKTsKIH0KIAogVGV4dENvZGVjV2luOjpUZXh0Q29kZWNX
aW4oVUlOVCBjb2RlUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Zy
L29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmgKaW5kZXggZGQ2YWU3MzYwNDY3
OWYxODhlMDFlMTEwZTRmZWJlNTkzZDUzN2YxYi4uZjcxYmQ5ZjBkNTg5Y2MyZjgzOWIwNjdjMjNl
YzhjYjUxODEwNjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3Bl
bnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmgKQEAgLTI5LDYgKzI5LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIgOiBw
dWJsaWMgVlJQbGF0Zm9ybURpc3BsYXkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSKHZyOjpJVlJTeXN0
ZW0qLCB2cjo6SVZSQ2hhcGVyb25lKiwgdnI6OklWUkNvbXBvc2l0b3IqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFu
YWdlck9wZW5WUi5jcHAKaW5kZXggZDFkYzY3MzY4NmY2NTFlM2UwMzI5MWI3YzAyYzMxYjBjMTY5
YmJjMi4uZTdjZjcxMzdlMzNhYTU1YmY3ZTU4NWVlMTY0ZTY3M2QzYWFlZWM2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9y
bU1hbmFnZXJPcGVuVlIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWUlBs
YXRmb3JtTWFuYWdlck9wZW5WUj4gVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSgpCiAg
ICAgaWYgKCF2cjo6VlJfSXNSdW50aW1lSW5zdGFsbGVkKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVu
VlI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+KCk7
CiB9CiAKIFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjp+VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIo
KQpAQCAtNzgsNyArNzgsNyBAQCBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IFZS
UGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpnZXRWUkRpc3BsYXlzKCkKIAogICAgIFZlY3RvcjxXZWFr
UHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gZGlzcGxheXM7CiAgICAgaWYgKCFtX2Rpc3BsYXkpCi0g
ICAgICAgIG1fZGlzcGxheSA9IHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybURpc3BsYXlPcGVu
VlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNvbXBvc2l0b3IpOworICAgICAgICBtX2Rpc3BsYXkg
PSBtYWtlVW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVyb25l
LCBjb21wb3NpdG9yKTsKICAgICBkaXNwbGF5cy5hcHBlbmQobWFrZVdlYWtQdHIoKm1fZGlzcGxh
eSkpOwogICAgIHJldHVybiBkaXNwbGF5czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKaW5kZXgg
NmE0Mzg3Y2MzMDgxNWUwMGMzNDE2Yzg5NjZhZDI5ZDRiNzNmNzBkOS4uNmE3ODIzYmM3Yjk1ZWQ0
MGRjZWNkZjBmNTczM2UxNmQ4NDQ1YWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKQEAgLTMx
LDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVlJQbGF0Zm9ybURpc3BsYXlP
cGVuVlI7CiAKIGNsYXNzIFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSIDogcHVibGljIFZSUGxhdGZv
cm1NYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPiBjcmVhdGUoKTsK
ICAgICBleHBsaWNpdCBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUigpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBhYmFkZGM3
ZmJjYTIzNTllZmY1Yjk4MTFjMTk1ZjZiNWFiYzFiYTgzLi4xNjk3ODU1ZmU3MmY2MzdlNjVhZDQ3
NzcyYWZhNjFjNzQ3MTkyNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBMUkVTVUxUIENBTExCQUNL
IFBhc3RlYm9hcmRPd25lclduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoKQogewotICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFz
dGVib2FyZD4oKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+
KCk7CiAgICAgQ09NUHRyPElEYXRhT2JqZWN0PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VD
Q0VFREVEKE9sZUdldENsaXBib2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9h
cmREYXRhID0gMDsKQEAgLTEwNiwxNiArMTA2LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQ09NUHRyPFdD
RGF0YU9iamVjdD4gZGF0YU9iamVjdDsKICAgICBXQ0RhdGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNl
KCZkYXRhT2JqZWN0KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihk
YXRhT2JqZWN0LmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkYXRh
T2JqZWN0LmdldCgpKTsKIH0KIAogLy8gc3RhdGljCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdE
YXRhKQogewogICAgIGlmIChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURh
dGEoKSk7CiAgICAgLy8gRklYTUU6IFNob3VsZCBhZGQgYSBjb25zdCBvdmVybG9hZCBvZiBkcmFn
RGF0YU1hcCBzbyB3ZSBkb24ndCBuZWVkIGEgY29uc3RfY2FzdCBoZXJlLgotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0
YSkuZHJhZ0RhdGFNYXAoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY29u
c3RfY2FzdDxEcmFnRGF0YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51
REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNw
cAppbmRleCAxOTY0OWM1NjZjZmNmNWY0MjQzMDlkMWQ4ZDEwMGIwYjRmZjc3MGE4Li42ZjdmNGJh
MTY2MGI0ZjdhOTc3MjEyYzg1NjNhNDNjNjY1ZTMwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKQEAgLTI4NCw3ICsyODQsNyBA
QCBpbnQgU2VhcmNoUG9wdXBNZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBz
cWwsIGJvb2wgaWdub3JlRXJyb3IpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+
IFNlYXJjaFBvcHVwTWVudURCOjpjcmVhdGVQcmVwYXJlZFN0YXRlbWVudChjb25zdCBTdHJpbmcm
IHNxbCkKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3Rh
dGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1
ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaW50IHJldCA9IHN0YXRl
bWVudC0+cHJlcGFyZSgpOwogICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gU1FMSVRFX09L
KTsKICAgICByZXR1cm4gc3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
V0NEYXRhT2JqZWN0LmNwcAppbmRleCBkYmY5OWE0NWNlNzAzYTlkODU3YTBlNjAxOWQ2ODA2ZGQx
MWZhMTdiLi4yNDEwMDNhMTAwMzFhM2Q3ZTZkN2FhMWUyNGE0OWNiOTg5ODIwY2Y0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1
Niw3IEBAIFNURE1FVEhPRElNUCBXQ0RhdGFPYmplY3Q6OlNldERhdGEoRk9STUFURVRDKiBwZm9y
bWF0ZXRjLCBTVEdNRURJVU0qIHBtZWRpdW0sIEJPCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFw
bWVkaXVtKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0byBmZXRjID0gc3Rk
OjptYWtlX3VuaXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0byBmZXRjID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
VEdNRURJVU0sIFN0Z01lZGl1bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAg
ICBaZXJvTWVtb3J5KGZldGMuZ2V0KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggYzAwNGZjOWU3MDRhNmFkMzIzNDlmYjgyNGNk
YzVkZGQwMzYwMWI1Yy4uNDc5ODFhZTY5OTFkYzY0OTE1MjBmYzgyNDMyZWNjNDk1ODY0NDNmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBA
QCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBGaQogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0OwogCi0gICAgYXV0byBidWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWls
ZGVyPigmcHJldmlvdXNFZmZlY3QpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZH
RmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKICAgICBtX3NvdXJjZUFscGhhID0gYnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpKTsKIAogICAgIGZv
ciAoYXV0byYgZWZmZWN0RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcz4oKmZpbHRlcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCmluZGV4IDAxMzM3ODdkOWQzMDYyYjFjYTc5YjE2
MDc5NjNmMjBjMTA3MWVkNTMuLmJkM2M5YmVlODcyOTg2ZWM2MWIxYTMwYTA0OTViOGMwYTI2ZmQ2
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNw
cApAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShU
ZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0ZXJhdG9yIGl0ZXIpCiAKIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8QmlkaVJ1bj4gY3JlYXRlUnVuKGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2Jq
ZWN0JiBvYmosIElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0
KCksIHJlc29sdmVyLmRpcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaWRpUnVuPihzdGFy
dCwgZW5kLCBvYmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogfQogCiB2
b2lkIENvbXBsZXhMaW5lTGF5b3V0OjphcHBlbmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJp
ZGlSdW4+KiBydW5zLCBpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxp
bmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQpAQCAtMTMwLDEyICsxMzAsMTIgQEAgdm9pZCBDb21w
bGV4TGluZUxheW91dDo6YXBwZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiog
cnVucywgaW50IHN0YXIKIHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBDb21wbGV4TGlu
ZUxheW91dDo6Y3JlYXRlUm9vdElubGluZUJveCgpCiB7CiAgICAgaWYgKGlzPFJlbmRlclNWR1Rl
eHQ+KG1fZmxvdykpIHsKLSAgICAgICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jv
b3RJbmxpbmVCb3g+KGRvd25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOworICAgICAgICBh
dXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZHUm9vdElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZH
VGV4dD4obV9mbG93KSk7CiAgICAgICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQo
KTsKICAgICAgICAgcmV0dXJuIGJveDsKICAgICB9CiAgICAgICAgIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Um9vdElubGluZUJveD4obV9mbG93KTsKIH0KIAogUm9vdElubGluZUJveCogQ29tcGxleExp
bmVMYXlvdXQ6OmNyZWF0ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKQpAQCAtMTA4NSw3ICsxMDg1
LDcgQEAgaW5saW5lIEJpZGlSdW4qIENvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1Nw
YWNlcyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmkKICAgICAgICAgd2hpbGUgKEJpZGlDb250ZXh0
KiBwYXJlbnQgPSBiYXNlQ29udGV4dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBiYXNlQ29udGV4
dCA9IHBhcmVudDsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxp
bmdSdW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3Bh
Y2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQs
IFVfT1RIRVJfTkVVVFJBTCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBuZXdU
cmFpbGluZ1J1biA9IG1ha2VVbmlxdWU8QmlkaVJ1bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFj
ZVJ1bi0+bV9zdG9wLCB0cmFpbGluZ1NwYWNlUnVuLT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwg
VV9PVEhFUl9ORVVUUkFMKTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmly
c3RTcGFjZTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuLmdldCgp
OwogICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKQEAgLTE2MTcs
NyArMTYxNyw3IEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRl
ZChMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQogICAgICAgICBpZiAobGF5b3V0U3RhdGUu
Y2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBi
b3R0b21WaXN1YWxPdmVyZmxvdyA9IGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b21WaXN1YWxP
dmVyZmxvdygpOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21MYXlvdXRPdmVyZmxvdyA9
IGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdygpOwotICAgICAgICAg
ICAgYXV0byBuZXdMaW5lQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJ
bmxpbmVCb3g+KG1fZmxvdyk7CisgICAgICAgICAgICBhdXRvIG5ld0xpbmVCb3ggPSBtYWtlVW5p
cXVlPFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveD4obV9mbG93KTsKICAgICAgICAgICAgIGF1
dG8gdHJhaWxpbmdGbG9hdHNMaW5lQm94ID0gbmV3TGluZUJveC5nZXQoKTsKICAgICAgICAgICAg
IG1fbGluZUJveGVzLmFwcGVuZExpbmVCb3goV1RGTW92ZShuZXdMaW5lQm94KSk7CiAgICAgICAg
ICAgICB0cmFpbGluZ0Zsb2F0c0xpbmVCb3gtPnNldENvbnN0cnVjdGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCmluZGV4IDRjZGQxMzljNDg3NTE2
ZWEwZTdiMTIxM2I3MDNiZDM0MjdhYjAxOGMuLmE2YzY0ODE4YzQ5NzQ1NjA5MGY2NjIzYzMwNGI1
ZDYyNzcwN2FlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGlu
Z09iamVjdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVj
dHMuY3BwCkBAIC03NSw3ICs3NSw3IEBAIEZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChS
ZW5kZXJCb3gmIHJlbmRlcmVyLCBUeXBlIHR5cGUsIGNvbnN0IExheW91dFJlY3QmCiAKIHN0ZDo6
dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJC
b3gmIHJlbmRlcmVyKQogewotICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9h
dGluZ09iamVjdD4ocmVuZGVyZXIpOworICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9h
dGluZ09iamVjdD4ocmVuZGVyZXIpOwogICAgIG9iamVjdC0+c2V0U2hvdWxkUGFpbnQoIXJlbmRl
cmVyLmhhc1NlbGZQYWludGluZ0xheWVyKCkpOyAvLyBJZiBhIGxheWVyIGV4aXN0cywgdGhlIGZs
b2F0IHdpbGwgcGFpbnQgaXRzZWxmLiBPdGhlcndpc2Ugc29tZW9uZSBlbHNlIHdpbGwuCiAgICAg
b2JqZWN0LT5zZXRJc0Rlc2NlbmRhbnQodHJ1ZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTgz
LDEyICs4MywxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2Jq
ZWN0OjpjcmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikKIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0
aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y29weVRvTmV3Q29udGFpbmVyKExheW91dFNpemUg
b2Zmc2V0LCBib29sIHNob3VsZFBhaW50LCBib29sIGlzRGVzY2VuZGFudCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlw
ZSgpLCBMYXlvdXRSZWN0KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVj
dCgpLnNpemUoKSksIG1hcmdpbk9mZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgp
LCBMYXlvdXRSZWN0KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgp
LnNpemUoKSksIG1hcmdpbk9mZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y2xvbmVG
b3JOZXdQYXJlbnQoKSBjb25zdAogewotICAgIGF1dG8gY2xvbmVPYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBt
X21hcmdpbk9mZnNldCwgbV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOworICAgIGF1dG8g
Y2xvbmVPYmplY3QgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0eXBl
KCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9mZnNldCwgbV9zaG91bGRQYWludCwgbV9pc0Rlc2Nl
bmRhbnQpOwogICAgIGNsb25lT2JqZWN0LT5tX3BhZ2luYXRpb25TdHJ1dCA9IG1fcGFnaW5hdGlv
blN0cnV0OwogICAgIGNsb25lT2JqZWN0LT5tX2lzUGxhY2VkID0gbV9pc1BsYWNlZDsKICAgICBy
ZXR1cm4gY2xvbmVPYmplY3Q7CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBGbG9hdGluZ09iamVj
dHM6OmNvbXB1dGVQbGFjZWRGbG9hdHNUcmVlKCkKICAgICBpZiAobV9zZXQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZsb2F0aW5nT2JqZWN0VHJlZT4oKTsKKyAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBtYWtl
VW5pcXVlPEZsb2F0aW5nT2JqZWN0VHJlZT4oKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NldC5i
ZWdpbigpLCBlbmQgPSBtX3NldC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEZs
b2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCA9IGl0LT5nZXQoKTsKICAgICAgICAgaWYgKGZs
b2F0aW5nT2JqZWN0LT5pc1BsYWNlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4
IGM3MmQwMWQ4MWM3ZDcxNjYxNTc5ZTNiYTAxODMwZTQyOWQzMGY2ODguLjFlOTExYWU2MGE2MTI2
ODlhNDk3ZmYyZDViN2YwZDUwYjg3ZTI5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAK
QEAgLTIzMyw3ICsyMzMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRv
cjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYQogICAgIGNvbnN0IHVu
c2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKICAgICBmb3IgKDsgdmFyeWlu
Z1RyYWNrSW5kZXggPCBlbmRPZlZhcnlpbmdUcmFja0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4
KSB7CiAgICAgICAgIGlmIChpc0VtcHR5QXJlYUVub3VnaChyb3dTcGFuLCBjb2x1bW5TcGFuKSkg
ewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdyaWRBcmVhPihHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4o
bV9yb3dJbmRleCwgbV9yb3dJbmRleCArIHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERl
ZmluaXRlR3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4p
KTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVu
aXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93
SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0
ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CiAg
ICAgICAgICAgICAvLyBBZHZhbmNlIHRoZSBpdGVyYXRvciB0byBhdm9pZCBhbiBpbmZpbml0ZSBs
b29wIHdoZXJlIHdlIHdvdWxkIHJldHVybiB0aGUgc2FtZSBncmlkIGFyZWEgb3ZlciBhbmQgb3Zl
ci4KICAgICAgICAgICAgICsrdmFyeWluZ1RyYWNrSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGlu
ZUFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxp
Z25tZW50LmNwcAppbmRleCA1ZmMzMjgxNTNhNmQ4YmZjNDg4M2JhNTEyMWNjYTBiZjZmMmU5OWQw
Li42NjA5MDk4ZjljODcwNDY4ODExNDE4YWIxNzgyOTQxN2JlZTJkMTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApAQCAtMTM0
LDcgKzEzNCw3IEBAIHZvaWQgR3JpZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGluZUFs
aWdubWVudENvbnRleHQoSXRlbVBvc2l0aW9uIHByZWZlcmVuCiAKICAgICAvLyBMb29raW5nIGZv
ciBhIGNvbXBhdGlibGUgYmFzZWxpbmUtc2hhcmluZyBncm91cC4KICAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJhc2VsaW5lQ29udGV4dD4oY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVz
Y2VudCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEJh
c2VsaW5lQ29udGV4dD4oY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGF1dG8qIGNvbnRleHQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOwogICAgICAgICBjb250ZXh0LT51cGRhdGVTaGFyZWRHcm91cChjaGlsZCwgcHJlZmVy
ZW5jZSwgYXNjZW50LCBkZXNjZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKaW5kZXggYWRkZWRjNDI4YjFmMmZkYjM1
MDNlODEyNjI2Yjk3NjkzYTNlN2I1Zi4uYjJiMDExYmRmNzQ5MWIzNWFiMWRiYjdhYzZiMjYzOTYx
NzIxY2NhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5jcHAKQEAgLTY4MSw3ICs2ODEsNyBAQCBkb3VibGUgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxleEZhY3RvclVuaXRTaXplKGNvbnN0IFZlY3RvcjxH
cmlkVHJhYwogICAgICAgICAgICAgbGVmdE92ZXJTcGFjZSAtPSBiYXNlU2l6ZTsKICAgICAgICAg
ICAgIGZsZXhGYWN0b3JTdW0gLT0gZmxleEZhY3RvcjsKICAgICAgICAgICAgIGlmICghdHJhY2tz
VG9UcmVhdEFzSW5mbGV4aWJsZSkKLSAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZs
ZXhpYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFja0luZGV4U2V0PigpOworICAgICAgICAgICAg
ICAgIHRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUgPSBtYWtlVW5pcXVlPFRyYWNrSW5kZXhTZXQ+
KCk7CiAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlLT5hZGQoaW5kZXgpOwog
ICAgICAgICAgICAgdmFsaWRGbGV4RmFjdG9yVW5pdCA9IGZhbHNlOwogICAgICAgICB9CkBAIC0x
MjYwLDEwICsxMjYwLDEwIEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cChH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lCiAgICAgbV9zaXppbmdP
cGVyYXRpb24gPSBzaXppbmdPcGVyYXRpb247CiAgICAgc3dpdGNoIChtX3NpemluZ09wZXJhdGlv
bikgewogICAgIGNhc2UgSW50cmluc2ljU2l6ZUNvbXB1dGF0aW9uOgotICAgICAgICBtX3N0cmF0
ZWd5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7Cisg
ICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5pcXVlPEluZGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0
aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUcmFja1NpemluZzoKLSAgICAgICAgbV9z
dHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsK
KyAgICAgICAgbV9zdHJhdGVneSA9IG1ha2VVbmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0
aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNzNiMzY1NDc2NzE0MGEwMzcwZTRkNTY5NTZlNTRmMjY3
NGI1OGIzNi4uYjNjNDAwNzkwMmRmNjA0ODYyYTVhYzdjMjk5OGNiYWQ3M2YxMTJlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtOTYsNyArOTYsNyBA
QCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVy
KQogICAgICwgbV9pc092ZXJXaWRnZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCiB7CiAgICAgLy8g
T25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xp
c3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1h
a2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0
cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDog
bnVsbHB0cjsKIH0KIAogSGl0VGVzdFJlc3VsdDo6fkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7
CkBAIC0xMTMsNyArMTEzLDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0
b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIG1faXNPdmVyV2lkZ2V0ID0gb3Ro
ZXIuaXNPdmVyV2lkZ2V0KCk7CiAKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2Fz
ZSBvZiBsaXN0IGhpdCB0ZXN0LgotICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1f
bGlzdEJhc2VkVGVzdFJlc3VsdCA/IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1f
bGlzdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOworICAgIG1fbGlzdEJhc2VkVGVzdFJlc3Vs
dCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90
aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxscHRyOwogCiAgICAgcmV0dXJuICp0aGlz
OwogfQpAQCAtNjkwLDE0ICs2OTAsMTQgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29u
c3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXEKIGNvbnN0
IEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1
bHQoKSBjb25zdAogewogICAgIGlmICghbV9saXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBt
X2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CisgICAg
ICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG1ha2VVbmlxdWU8Tm9kZVNldD4oKTsKICAgICBy
ZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3VsdDsKIH0KIAogSGl0VGVzdFJlc3VsdDo6Tm9kZVNl
dCYgSGl0VGVzdFJlc3VsdDo6bXV0YWJsZUxpc3RCYXNlZFRlc3RSZXN1bHQoKQogewogICAgIGlm
ICghbV9saXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJl
c3VsdCA9IG1ha2VVbmlxdWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVz
dFJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5k
ZXggMzMyZjI4NTMxZDM4OGNmZTJjM2Q1OGE5NGMzZjI2MTdkY2I5MTY2Ni4uMTBhMTk0MzZiNGJh
YzY1NjI5MDZiMjQxYTcwZDFkNTg1MjAwMDJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFNjcm9sbGJhcjsKIGVudW0g
Y2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3RvcCwgQ29udGludWUgfTsKIAogY2xhc3MgSGl0VGVz
dFJlc3VsdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4+IE5vZGVTZXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggNDNjNjUzODc2Y2Y5ODRhNjJiNmZjOTI5
NDVkM2RkNjkwY2EzZWRiOS4uMTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3
ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9y
cyhjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRlcikKIC8vIG9mIEJpZGlSZXNvbHZlciB3aGljaCBr
bm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9iamVjdHMuCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRk
UGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
dmVyLCBSZW5kZXJPYmplY3QmIG9iaiwgdW5zaWduZWQgcG9zLCBSZW5kZXJFbGVtZW50JiByb290
KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmlkaVJ1bj4ocG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNv
bHZlci5kaXIoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0g
bWFrZVVuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJl
c29sdmVyLmRpcigpKTsKICAgICAvLyBGSVhNRTogaXNvbGF0ZWRSdW5zKCkgY291bGQgYmUgYSBo
YXNoIG9mIG9iamVjdC0+cnVuIGFuZCB0aGVuIHdlIGNvdWxkIGNoZWFwbHkKICAgICAvLyBBU1NF
UlQgaGVyZSB0aGF0IHdlIGRpZG4ndCBjcmVhdGUgbXVsdGlwbGUgb2JqZWN0cyBmb3IgdGhlIHNh
bWUgaW5saW5lLgogICAgIHJlc29sdmVyLnNldFdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlv
bkZvcklzb2xhdGVkUnVuKCppc29sYXRlZFJ1biwgcmVzb2x2ZXIud2hpdGVzcGFjZUNvbGxhcHNp
bmdTdGF0ZSgpLmN1cnJlbnRUcmFuc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5ZXJPdmVybGFwTWFwLmNwcAppbmRleCAyODVhYTVmOWZlOWJhZTdkZmM4NTI4YzI0YzFk
NTU2N2Q0MTI5ZmYzLi45NmFmOTVhNDU1Njk1MGU4MTI2Yjk1MzczNTM0ZDQ3NmRhZTM1NjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtNzEs
NiArNzEsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
Y29uc3QgUmVjdExpc3QmIHJlY3RMaXN0KQogLy8gQ2hlY2tpbmcgZm9yIG92ZXJsYXAgaW52b2x2
ZXMgZmluZGluZyB0aGUgbm9kZSBmb3IgdGhlIGNsaXBwaW5nIGxheWVyIGVuY2xvc2luZyB0aGUg
Z2l2ZW4gbGF5ZXIgKG9yIHRoZSByb290KSwKIC8vIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUg
Ym91bmRzIG9mIGVhcmxpZXIgc2libGluZ3MuCiBjbGFzcyBPdmVybGFwTWFwQ29udGFpbmVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPdmVybGFwTWFwQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckxheWVyJiByb290TGF5ZXIpCiAgICAgICAgIDogbV9yb290U2Nv
cGUocm9vdExheWVyKQpAQCAtMjk2LDcgKzI5Nyw3IEBAIGJvb2wgTGF5ZXJPdmVybGFwTWFwOjpv
dmVybGFwc0xheWVycyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IExheW91dFJlY3Qm
CiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKQogewot
ICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE92ZXJsYXBNYXBDb250
YWluZXI+KG1fcm9vdExheWVyKSk7CisgICAgbV9vdmVybGFwU3RhY2suYXBwZW5kKG1ha2VVbmlx
dWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9yb290TGF5ZXIpKTsKIH0KIAogdm9pZCBMYXllck92
ZXJsYXBNYXA6OnBvcENvbXBvc2l0aW5nQ29udGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRkYmEzZjFjNDEwNWFmYjBlOGU0Yzc2YTdjZmNiOWU1
ZmZmNzE4NTQuLjAwMTkyNTg4MmU1MDI4YzhhMjA5OWI0YmJkZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJs
b2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGRlc2NlbmRh
bnRTZXQgPSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAtPmVuc3VyZSgmY29udGFpbmVyLCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RI
YXNoU2V0PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0
SGFzaFNldD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBib29sIGFkZGVkID0g
ZGVzY2VuZGFudFNldC0+YWRkKCZkZXNjZW5kYW50KS5pc05ld0VudHJ5OwpAQCAtMTE1LDcgKzEx
NSw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJl
bmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGNv
bnRhaW5lclNldCA9IHBlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmVuc3VyZSgmZGVzY2VuZGFu
dCwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJl
bmRlckJsb2NrKj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3Qg
UmVuZGVyQmxvY2sqPj4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQo
IWNvbnRhaW5lclNldC0+Y29udGFpbnMoJmNvbnRhaW5lcikpOwpAQCAtMTYxLDcgKzE2MSw3IEBA
IGNsYXNzIFBvc2l0aW9uZWREZXNjZW5kYW50c01hcCB7CiAgICAgICAgIH0KIAogICAgICAgICBh
dXRvJiBkZXNjZW5kYW50cyA9IG1fZGVzY2VuZGFudHNNYXAuZW5zdXJlKCZjb250YWluaW5nQmxv
Y2ssIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5k
ZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tl
ZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAog
ICAgICAgICBib29sIGlzTmV3RW50cnkgPSBtb3ZlRGVzY2VuZGFudFRvRW5kID09IE1vdmVEZXNj
ZW5kYW50VG9FbmQ6OlllcyA/IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0
aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGlu
bGluZSBVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbiogY3VycmVudFVwZGF0
ZVNjcm9sbEluZm9BZnQKIHZvaWQgUmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0Fm
dGVyTGF5b3V0VHJhbnNhY3Rpb24oKQogewogICAgIGlmICghdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpKQotICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJM
YXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5ZWRVcGRhdGVT
Y3JvbGxJbmZvU3RhY2s+KCk7CisgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRy
YW5zYWN0aW9uU3RhY2soKSA9IG1ha2VVbmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFj
az4oKTsKICAgICBpZiAodXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFj
aygpLT5pc0VtcHR5KCkgfHwgY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5z
YWN0aW9uKCktPnZpZXcgIT0gJnZpZXcoKSkKICAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5hcHBlbmQoVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5
b3V0VHJhbnNhY3Rpb24odmlldygpKSk7CiAgICAgKytjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0Fm
dGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+bmVzdGVkQ291bnQ7CkBAIC02MjAsNyArNjIwLDcgQEAg
c3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEmIGVuc3VyZUJsb2NrUmFyZURhdGEoY29uc3QgUmVu
ZGVyQmxvY2smIGJsb2NrKQogICAgIAogICAgIGF1dG8mIHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFw
LT5hZGQoJmJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0
YSkKLSAgICAgICAgcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrUmFyZURh
dGE+KCk7CisgICAgICAgIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRh
PigpOwogICAgIHJldHVybiAqcmFyZURhdGEuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggN2YxZTYzOTcwNjNiZTRmOGRmOWI1
N2YxNzVkNmUyNmU3OGVmYjEzNC4uYjg2NDJkMTcyMDNiZDRiZjI1YmRlMTcxZjk4NzBhZjdkNWE0
M2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
QEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hp
bGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZQogICAgIG1fc2ltcGxl
TGluZUxheW91dCA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fY29tcGxleExpbmVMYXlvdXQpCi0g
ICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5l
TGF5b3V0PigqdGhpcyk7CisgICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVl
PENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0LT5s
YXlvdXRMaW5lQm94ZXMocmVsYXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFp
bnRMb2dpY2FsQm90dG9tKTsKIH0KQEAgLTIwMTksNyArMjAxOSw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgpCiAgICAgCiAgICAgc2V0TGluZUdyaWRCb3goMCk7
CiAKLSAgICBhdXRvIGxpbmVHcmlkQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94
PigqdGhpcyk7CisgICAgYXV0byBsaW5lR3JpZEJveCA9IG1ha2VVbmlxdWU8Um9vdElubGluZUJv
eD4oKnRoaXMpOwogICAgIGxpbmVHcmlkQm94LT5zZXRIYXNUZXh0Q2hpbGRyZW4oKTsgLy8gTmVl
ZGVkIHRvIG1ha2UgdGhlIGxpbmUgYXNjZW50L2Rlc2NlbnQgYWN0dWFsbHkgYmUgaG9ub3JlZCBp
biBxdWlya3MgbW9kZS4KICAgICBsaW5lR3JpZEJveC0+c2V0Q29uc3RydWN0ZWQoKTsKICAgICBH
bHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0ZXh0Qm94RGF0YU1hcDsKQEAgLTIyNjAs
NyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3Rz
KFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBhaW50CiAKIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMoKQogewotICAgIG1fZmxvYXRpbmdPYmplY3RzID0g
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsKKyAgICBtX2Zsb2F0aW5n
T2JqZWN0cyA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3RzPigqdGhpcyk7CiB9CiAKIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVjdHMoKQpAQCAtMzY3Nyw3ICszNjc3
LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcygpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVCghbV9jb21wbGV4TGluZUxheW91dCk7Ci0gICAgbV9jb21wbGV4
TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsK
KyAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4o
KnRoaXMpOwogCiAgICAgaWYgKFNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckxpbmVCb3hUcmVl
KCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KSkgewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0
OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KTsKQEAgLTM3
MzUsNyArMzczNSw3IEBAIFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEm
IFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFyZUJsb2NrRmxvd0RhCiB2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0YSgpCiB7CiAgICAgQVNTRVJUKCFoYXNS
YXJlQmxvY2tGbG93RGF0YSgpKTsKLSAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7
CisgICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tGbG93OjpS
ZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZGIzYTZk
YThmMWEzMjE1MzcwMGU3MzQxN2QxMGY2YTQ4MTMwODM1Zi4uOTY3N2RhZTljZmUyOGIxZGMzOTA1
YzNhODJiMDZlYzZlY2RjZGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgQ29udHJvbFN0YXRlc1JlbmRlcmVyTWFwJiBj
b250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQogc3RhdGljIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xT
dGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogewogICAgIHJldHVy
biBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5lbnN1cmUoJnJlbmRlcmVyLCBbXSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOwogfQogCkBAIC0yMTIyLDcgKzIxMjIsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6
b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91
dAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gUmVuZGVyQm94OjpjcmVhdGVJ
bmxpbmVCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRC
b3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhp
cyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAppbmRleCBiY2JhN2I0MTY4NWEzZjQxMjBjMWVlYTU0NjEwMmY4MzZkNTZhYTI2Li45MDFjNDEx
MGUxYzU2YmE2MGE0ZGQzYmE3YjkzZmFhZjYwNDFjYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI1MzgsNyArMjUzOCw3
IEBAIGF1dG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9k
ZSgpIC0+IENvbnRpbnVhdGlvbkNoYWluTm9kCiB7CiAgICAgc2V0SGFzQ29udGludWF0aW9uQ2hh
aW5Ob2RlKHRydWUpOwogICAgIHJldHVybiAqY29udGludWF0aW9uQ2hhaW5Ob2RlTWFwKCkuZW5z
dXJlKHRoaXMsIFsmXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVh
dGlvbkNoYWluTm9kZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250aW51
YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAyMjEwNDQzNGU0
NWQ2Yzk4NDc2ZmZkMjlhYjU1MGJkNjJhYzQwOGZlLi5jMWUwM2YwOTdlZjU5YWQ1YTE2YjE5NGM5
YzA1ZDY0OWY3ZmYxNWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRl
ck5vZGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICBp
ZiAocGxhY2UucGFyZW50KQogICAgICAgICBwbGFjZS5wYXJlbnQtPmluc2VydEFmdGVyKG5ld05v
ZGUsIHBsYWNlLnByZXZpb3VzU2libGluZy5nZXQoKSwgaWRlbnRpZmllcik7CiAKLSAgICBtYXBz
LmFkZCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3It
PnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkpOworICAgIG1hcHMuYWRk
KCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFk
ZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7CiAgICAgcmVuZGVyZXIuc2V0SGFzQ291
bnRlck5vZGVNYXAodHJ1ZSk7CiAKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcApp
bmRleCA1MWE5ZTQ2ODQzNDRkMjYzN2QwNGE5MWZiNTlhM2NkNmVmOGYwNmVkLi43ZjZjYWJjMDU5
MTIxMDgxYzRkNzI4NjAyMTliZDRiOWM4NWI5NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKQEAgLTMwMyw3ICszMDMs
NyBAQCBSZW5kZXJCb3hGcmFnbWVudEluZm8qIFJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRS
ZW5kZXJCb3hGcmFnbWVudEluZm8oY29uc3QgUgogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBt
X3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQoYm94LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJv
eEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRh
aW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21l
bnRJbmZvLmFkZChib3gsIG1ha2VVbmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2Fs
TGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0
KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBib3hJbmZvLmdldCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAppbmRl
eCA0NGY1NjM1YmE1M2FlM2Y3ZTk0ZDdhYzhlNDk2NzM5MGY1OGMyZTU2Li44NDZkZDNhMDJhYTg2
YWFmNzE1YzA5NGU4YzM1MGMxNjZhODY3YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIFJl
bmRlckZyYWdtZW50Q29udGFpbmVyKiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y3VycmVudEZyYWdt
ZW50KCkgY29uc3QKIENvbnRhaW5pbmdGcmFnbWVudE1hcCYgUmVuZGVyRnJhZ21lbnRlZEZsb3c6
OmNvbnRhaW5pbmdGcmFnbWVudE1hcCgpCiB7CiAgICAgaWYgKCFtX2xpbmVUb0ZyYWdtZW50TWFw
KQotICAgICAgICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWlu
aW5nRnJhZ21lbnRNYXA+KCk7CisgICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAgPSBtYWtlVW5p
cXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKIAogICAgIHJldHVybiAqbV9saW5lVG9GcmFn
bWVudE1hcC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwCmluZGV4IGI5MDQ1ZTY3OTA4NzNhYmY4MWE5MGRmYTViYmIxMTA5M2M2Nzdi
MDIuLjUyYzc5MGQ0ZTU3ODliMTc4ZTI2YzhhYmQ4YmE3YjEzY2M1OTE1MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMjE4LDcgKzIx
OCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NCiAgICAgCiAgICAgUmVuZGVyR2VvbWV0cnlN
YXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIGlmICgh
dC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3Rk
OjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odCk7CisgICAgICAgIHN0ZXAubV90
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKICAgICBlbHNl
CiAgICAgICAgIHN0ZXAubV9vZmZzZXQgPSBMYXlvdXRTaXplKHQuZSgpLCB0LmYoKSk7CiAKQEAg
LTIzNSw3ICsyMzUsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBS
ZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIFJlbmRlckdlb21l
dHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBz
dGVwLm1fb2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OwogICAgIGlmICh0KQotICAgICAgICBzdGVwLm1f
dHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwor
ICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4oKnQpOwogICAgIAogICAgIHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBlMzVhMmMxMzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0
Y2NjOWQwZjM0OTdmLi40OWFkMDM1NTUzNzM0MjI1ZjFkZGQ2MzNiNDJjMTM4MzJjY2VmYmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC01NDQsNyArNTQ0LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21w
dXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICB1bnNpZ25lZCBsYXN0QXV0b1JlcGVhdFRy
YWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBlYXRUcmFja3MoZGlyZWN0
aW9uKTsKIAogICAgIGlmICghZ3JpZC5oYXNHcmlkSXRlbXMoKSkgewotICAgICAgICBlbXB0eVRy
YWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7Cisg
ICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNl
dD4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFja0luZGV4ID0gZmlyc3RBdXRvUmVwZWF0
VHJhY2s7IHRyYWNrSW5kZXggPCBsYXN0QXV0b1JlcGVhdFRyYWNrOyArK3RyYWNrSW5kZXgpCiAg
ICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5kZXgpOwogICAgIH0gZWxz
ZSB7CkBAIC01NTIsNyArNTUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4
U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICAgICAg
ICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBkaXJlY3Rpb24sIHRyYWNrSW5kZXgpOwog
ICAgICAgICAgICAgaWYgKCFpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgewogICAgICAgICAgICAg
ICAgIGlmICghZW1wdHlUcmFja0luZGV4ZXMpCi0gICAgICAgICAgICAgICAgICAgIGVtcHR5VHJh
Y2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAg
ICAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRU
cmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQo
dHJhY2tJbmRleCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTczMiw3ICs3MzIsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFy
ZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dAogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NE
aXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQg
Y3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVG
b3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFu
IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdy
aWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0Rp
cmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4o
c3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9u
cyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMg
PyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8R3JpZEFyZWE+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5z
ID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmll
ZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJl
Y3Rpb25Qb3NpdGlvbnMpOwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFq
b3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBh
dXRvR3JpZEl0ZW1zKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKaW5kZXggODkxM2U3NmM5ZDYxYzlkMjU0MTk5MGE5MDFiN2IwMjk0ZTQ4YWFkYy4uZjUxZTJm
ZWIzN2UxZmNmMGZkMGU3OTFhZTY0ZjAzZWU4OGEyYTdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0
IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFn
ZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHls
ZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAs
IG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291
cmNlPigpKQogICAgICwgbV9pbWFnZURldmljZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJh
dGlvKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwg
U3R5bGVJbWFnZSogc3R5bAogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQogICAg
IDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0g
ICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdl
ID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2Up
IDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDlkOGE2NTkzNGJhM2ZkMjU0NzRj
MzljOTFmZWVjNDNhYTBjOWY5ZjUuLjE1MzI1Y2RhMTY5MDY3YTU2OTFiODg1YThkZmRjN2FhOTAz
NjQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0x
MTAwLDcgKzExMDAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6ZGVsZXRlTGluZXMoKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gUmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93
Qm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhp
cyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMpOwogfQogCiBJ
bmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3go
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZjlmMGQwZDRj
ZWU2NmMxZjQzZGU1MzJiNjEwMDUzMmJmYjYxNTA4Yy4uMTg1NDY4NzA1MTZlNGQwZmQ1ZTJiMDI4
ZGViM2JjNDBjZTZjOGJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxv
d0xpc3QoKQogICAgICAgICAvLyBJZ25vcmUgbm9uLW92ZXJmbG93IGxheWVycyBhbmQgcmVmbGVj
dGlvbnMuCiAgICAgICAgIGlmIChjaGlsZC0+aXNOb3JtYWxGbG93T25seSgpICYmICFpc1JlZmxl
Y3Rpb25MYXllcigqY2hpbGQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fbm9ybWFsRmxvd0xpc3Qp
Ci0gICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9
IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CiAgICAgICAgICAgICBtX25vcm1h
bEZsb3dMaXN0LT5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzU2LDcgKzc1
Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVu
TGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yCiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXll
ciAmJiAhaXNOb3JtYWxGbG93T25seSgpKSB7CiAgICAgICAgIGF1dG8mIGxheWVyTGlzdCA9ICh6
SW5kZXgoKSA+PSAwKSA/IHBvc2l0aXZlWk9yZGVyTGlzdCA6IG5lZ2F0aXZlWk9yZGVyTGlzdDsK
ICAgICAgICAgaWYgKCFsYXllckxpc3QpCi0gICAgICAgICAgICBsYXllckxpc3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOworICAgICAgICAgICAgbGF5ZXJMaXN0
ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAgbGF5ZXJMaXN0
LT5hcHBlbmQodGhpcyk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3Ry
YW5zZm9ybTsKICAgICBpZiAoaGFzVHJhbnNmb3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAg
ICBpZiAoaGFzVHJhbnNmb3JtKQotICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0g
PSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX3RyYW5zZm9ybSA9IG51bGxwdHI7CiAgICAgICAgIApAQCAtNTUyNyw3ICs1NTI3
LDcgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBD
bGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb24KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2Ns
aXBSZWN0c0NhY2hlKQotICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0gc3RkOjptYWtlX3VuaXF1
ZTxDbGlwUmVjdHNDYWNoZT4oKTsKKyAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlx
dWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fY2xpcFJlY3RzQ2Fj
aGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQucm9v
dExheWVyOwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fc2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBS
ZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5j
eTsKQEAgLTYxMDUsNyArNjEwNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3Rz
KENsaXBSZWN0c1R5cGUgdHlwZVRvQ2xlYXIpCiBSZW5kZXJMYXllckJhY2tpbmcqIFJlbmRlckxh
eWVyOjplbnN1cmVCYWNraW5nKCkKIHsKICAgICBpZiAoIW1fYmFja2luZykgewotICAgICAgICBt
X2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOwor
ICAgICAgICBtX2JhY2tpbmcgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMp
OwogICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVDb21wb3NpdGVkKCp0aGlzKTsKIAog
ICAgICAgICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0ZWd5KCk7CkBAIC02NTIzLDcgKzY1MjMs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYs
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNIVE1M
TWFycXVlZSgpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5tYXJxdWVlQmVoYXZpb3IoKSAhPSBNYXJx
dWVlQmVoYXZpb3I6Ok5vbmUgJiYgcmVuZGVyZXIoKS5pc0JveCgpKSB7CiAgICAgICAgIGlmICgh
bV9tYXJxdWVlKQotICAgICAgICAgICAgbV9tYXJxdWVlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJNYXJxdWVlPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWFycXVlZSA9IG1ha2VVbmlxdWU8UmVu
ZGVyTWFycXVlZT4odGhpcyk7CiAgICAgICAgIG1fbWFycXVlZS0+dXBkYXRlTWFycXVlZVN0eWxl
KCk7CiAgICAgfSBlbHNlIGlmIChtX21hcnF1ZWUpCiAgICAgICAgIG1fbWFycXVlZSA9IG51bGxw
dHI7CkBAIC02NzM1LDcgKzY3MzUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjplbnN1cmVMYXllckZp
bHRlcnMoKQogICAgIGlmIChtX2ZpbHRlcnMpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBt
X2ZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOwor
ICAgIG1fZmlsdGVycyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyTGF5ZXJGaWx0ZXJzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMjJlZDZkZDdjMDI1
MmIxOTUzZGUzYmUxNTM5NzFiMTI5YWUxYzc0Yi4uMTIxZDEyZjI2OWY5MGQxM2M2Y2NkZDA5N2I5
MjJlM2FkYWNlMjZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKQEAgLTE2MjcsNyArMTYyNyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5nU3RhY2soVmVjdG9yPENvbXBvc2l0ZWRDbGlwRGF0
YT4mCiAgICAgfQogICAgIAogICAgIGlmICghbV9hbmNlc3RvckNsaXBwaW5nU3RhY2spIHsKLSAg
ICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3RhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5j
ZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkpOworICAgICAgICBtX2Fu
Y2VzdG9yQ2xpcHBpbmdTdGFjayA9IG1ha2VVbmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3Rh
Y2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb21w
b3NpdGluZywgc3RyZWFtIDw8ICJsYXllciAiIDw8ICZtX293bmluZ0xheWVyIDw8ICIgYW5jZXN0
b3JDbGlwcGluZ1N0YWNrICIgPDwgKm1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3OCwxNyArMzE3OCwxNyBAQCBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1h
dGlvbiYgYW5pbQogICAgICAgICAKICAgICAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUg
PSBrZXkgPT0gMCB8fCBrZXkgPT0gMTsKICAgICAgICAgaWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNG
aXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShD
U1NQcm9wZXJ0eVRyYW5zZm9ybSkpCi0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0
KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVT
dHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5z
ZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHls
ZS0+dHJhbnNmb3JtKCksIHRmKSk7CiAKICAgICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmly
c3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NT
UHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6
bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFj
aXR5KCksIHRmKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVl
PEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0Zikp
OwogCiAgICAgICAgIGlmICgoaGFzRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwg
Y3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpKQotICAg
ICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1h
dGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOworICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihr
ZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOwogCiAjaWYgRU5BQkxFKEZJTFRFUlNf
TEVWRUxfMikKICAgICAgICAgaWYgKChoYXNCYWNrZHJvcEZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0
S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5
V2Via2l0QmFja2Ryb3BGaWx0ZXIpKQotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3Iu
aW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJh
bWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmls
dGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtl
eWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCksIHRmKSk7CiAjZW5kaWYKICAgICB9CiAKQEAg
LTMyNDMsOCArMzI0Myw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRp
b24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0
IEFuaW1hdGlvbiogb3BhY2l0eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHko
Q1NTUHJvcGVydHlPcGFjaXR5KTsKICAgICAgICAgaWYgKG9wYWNpdHlBbmltICYmICFvcGFjaXR5
QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFs
dWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgICAgICAg
ICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZh
bHVlPigwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7Ci0gICAg
ICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0
aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7Cisg
ICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAg
ICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25W
YWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAg
ICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFu
aW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3Mg
YW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRk
QW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEZsb2F0U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhp
Y3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNp
dHkpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRo
ZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxz
byBzZXQgdGhlIGZpbmFsIG9wYWNpdHkuCkBAIC0zMjU4LDggKzMyNTgsOCBAQCBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0
b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAg
ICAgICBpZiAodHJhbnNmb3JtQW5pbSAmJiAhdHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1
cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3Rv
cihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rv
ci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJv
bVN0eWxlLT50cmFuc2Zvcm0oKSkpOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT50
cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5p
cXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7
CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBp
ZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCBzbmFwcGVk
SW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKS5zaXplKCksIHRyYW5zZm9ybUFu
aW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJv
cGVydHlUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVu
c3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1h
dGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAg
IHVwZGF0ZVRyYW5zZm9ybSgqdG9TdHlsZSk7CkBAIC0zMjcyLDggKzMyNzIsOCBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0gPSB0
b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpOwogICAgICAg
ICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkp
IHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihBbmltYXRlZFBy
b3BlcnR5RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtl
X3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOwot
ICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFu
aW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVy
VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5
bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlx
dWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAg
ICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBGbG9h
dFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5z
aXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hl
biB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAg
ICAgICAgICAgdXBkYXRlRmlsdGVycygqdG9TdHlsZSk7CkBAIC0zMjg3LDggKzMyODcsOCBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGJhY2tkcm9w
RmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdEJhY2tkcm9wRmlsdGVyKTsKICAgICAgICAgaWYgKGJhY2tkcm9wRmlsdGVyQW5pbSAmJiAh
YmFja2Ryb3BGaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAg
ICAgS2V5ZnJhbWVWYWx1ZUxpc3QgYmFja2Ryb3BGaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0
eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9y
Lmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5
bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9y
Lmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxl
LT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5p
bnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNr
ZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQo
bWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0
ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGJh
Y2tkcm9wRmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgYmFja2Ryb3BGaWx0ZXJBbmltLCBHcmFw
aGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Vi
a2l0QmFja2Ryb3BGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRv
IGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGJhY2tkcm9wIGZpbHRlciBpcyB2aXNpYmxlIHdoZW4g
dGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgYmFja2Ryb3AgZmlsdGVyLgog
ICAgICAgICAgICAgICAgIHVwZGF0ZUJhY2tkcm9wRmlsdGVycygqdG9TdHlsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4
IGFiZTRkNGQ2NzVhMjIxODZlMmVhODlkNDEyZmZhODE1MzhjNWM5MjkuLjMyMTIyOWQ2ZjIzY2Zh
ZTY2YTA1YTUyODA4ZGQwYjBjYmE4YzE0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYgcmVu
ZGVyVmlldykKIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3JlbmRlclZp
ZXcuZnJhbWVWaWV3KCkucGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgbV9sZWdhY3lTY3JvbGxp
bmdMYXllckNvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxp
bmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1l
Q29tcG9zaXRvcigpKTsKKyAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9y
ID0gbWFrZVVuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdl
KCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKICNlbmRpZgog
fQogCkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlm
eUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllcioKIHsKICAgICBp
ZiAoIW1fbGF5ZXJVcGRhdGVyKSB7CiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCA9IHBhZ2UoKS5jaHJvbWUoKS5kaXNwbGF5SUQoKTsKLSAgICAgICAgbV9sYXllclVwZGF0ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlE
KTsKKyAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRh
dGVyPigqdGhpcywgZGlzcGxheUlEKTsKICAgICB9CiAgICAgCiAgICAgbV9sYXllclVwZGF0ZXIt
PnNjaGVkdWxlVXBkYXRlKCk7CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2b2lkIExlZ2FjeVdlYktp
dFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5l
ZExheWVycwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBj
b25zdHJhaW50czsKICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmlzU3RpY2tpbHlQb3Np
dGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxT
dGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNr
eVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9
IG1ha2VVbmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9y
LmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAgICAgICAgICAg
Y29uc3QgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0
cjsKICAgICAgICAgICAgIGlmIChjb21wb3NpdG9yLmlzQXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5
ZXIoKmxheWVyLCAmZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpICYmIGVuY2xvc2luZ1Rv
dWNoU2Nyb2xsYWJsZUxheWVyKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVuY2xvc2luZ1Rv
dWNoU2Nyb2xsYWJsZUxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CkBAIC00ODAwLDcgKzQ4MDAsNyBA
QCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxs
Vmlld3BvcnRDb25zdHJhaW5lZExheWVycwogICAgICAgICAgICAgICAgIHN0aWNreUNvbnRhaW5l
ck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVy
KCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5iYWNraW5nKCktPnNjcm9sbENvbnRh
aW5lckxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNGaXhlZFBvc2l0aW9uZWQoKSkKLSAgICAgICAg
ICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRD
b25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCps
YXllcikpOworICAgICAgICAgICAgY29uc3RyYWludHMgPSBtYWtlVW5pcXVlPEZpeGVkUG9zaXRp
b25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29u
c3RyYWludHMoKmxheWVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
aW5kZXggYmY2NDVjZDQxYjg5MTIxMmQ3ZjVhMzAzODZlZjljYTU0YmZhNDYwMi4uOGRkMDM5YmFm
ZGE2MzUzOGNlMzIxM2RjMzEzNTYwZmFhOGE0YmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHN0
YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFNjcm9sbENvb3JkaW5hdGlvblJvbGU+IGFsbFNjcm9s
bENvb3JkaW5hdGlvblJvbGVzKCkKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBM
ZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3Jk
aW5hdG9yKENocm9tZUNsaWVudCYgY2hyb21lQ2xpZW50LCBib29sIGNvb3JkaW5hdGVWaWV3cG9y
dENvbnN0cmFpbmVkTGF5ZXJzKQogICAgICAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcAppbmRleCA0Yjg2ZmUyYWQxNzVkY2U4NmFkMzg1MmJkZmMxNTJmZDEzMDhkNDVlLi4x
MjhjOTZkYWUwYjMxMDA2Y2EyNWQ1YTU2YzcyMGJjODkwZDM0ZjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC05NSw3
ICs5NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKCkKIHZv
aWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRlTGF5ZXIoKQogewogICAgIEFTU0VSVCgh
bV9sYXllcik7Ci0gICAgbV9sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXI+KCp0
aGlzKTsKKyAgICBtX2xheWVyID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllcj4oKnRoaXMpOwogICAg
IHNldEhhc0xheWVyKHRydWUpOwogICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXgg
YmM1NTI3YjhjNDZhNGRlMDY2ZjY5ZTVhMzEwYzg4NjgxOTZmYzIzYS4uMWFhZTA5ZDAwYjI2ZWEz
Y2FkZWE4NjcyZTI3NzkyOWJmZDE3YTYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgaW50IFJlbmRlckxpbmVCcmVh
azo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0
TGluZSwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJlbmRlckxpbmVCcmVh
azo6Y3JlYXRlSW5saW5lQm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxp
bmVFbGVtZW50Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRWxlbWVu
dEJveD4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0SW5saW5lQm94V3Jh
cHBlcihJbmxpbmVFbGVtZW50Qm94KiBpbmxpbmVCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDliYjlhNTM5ZDY2NDJk
ZjkwMDI2YTc4MmFmOGNmODRkYzQ5ZGEyYTkuLjQxMDNkYWQ0ODQ0ZGQyNGEzMDJhNzMyYWYyMjE5
YWM5MDAwMWNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtbkZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtbkZsb3cuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChSZW5kZXJNdWx0aUNvbHVtbkZsb3cpOwogCiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6
OlJlbmRlck11bHRpQ29sdW1uRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYg
c3R5bGUpCiAgICAgOiBSZW5kZXJGcmFnbWVudGVkRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHls
ZSkpCi0gICAgLCBtX3NwYW5uZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxTcGFubmVyTWFwPigpKQor
ICAgICwgbV9zcGFubmVyTWFwKG1ha2VVbmlxdWU8U3Bhbm5lck1hcD4oKSkKICAgICAsIG1fbGFz
dFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCiAgICAgLCBtX2Nv
bHVtbldpZHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDRkYTNiZDczNzcxYmExNzE5MGVhYzM1ZGE2MzhlMjQzZjE5MDI5MDcuLjBiZjUxOTNkZTQ4
NDQ1YmNjNjc3ZTkxNGU4YWQzZGY4MWNlYjgyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODkzLDcgKzE4OTMsNyBAQCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OnJhcmVEYXRhKCkgY29uc3QK
IFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGEmIFJlbmRlck9iamVjdDo6ZW5zdXJl
UmFyZURhdGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFy
ZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFy
ZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJPYmpl
Y3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIFJlbmRlck9iamVj
dDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggNmQ1NmI1ZWNhMmM2YjI3NjhhZmJiMmQ0
Y2ZmMGFjMDg4MmU5ZmRjNi4uMGRmZTI4Mjc2NGY0MDhiNjIwYmVmNWQ5ZjU4ZTg4YTZjYzc2YzA4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik7CiAKIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3QoZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9zbmFwc2hvdFJlc291cmNlKG1ha2VV
bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsKICAgICBtX3NuYXBzaG90UmVzb3VyY2Ut
PmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKaW5kZXggMTg2Y2E4NzBlZDEwOTEzZDU4Yjg1NDllYjk2ZGUzMzZlMzQ1NTM1OS4uZTkx
YTEzMzcxOTkxMmQxOGZhNTVlMzZkODM1NTg4NTdjMmQxOGIzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBSZW5kZXJU
YWJsZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHkKICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1MyIHNwZWMsIHlvdSBv
bmx5IHVzZSBmaXhlZCB0YWJsZSBsYXlvdXQgaWYgYW4KICAgICAgICAgLy8gZXhwbGljaXQgd2lk
dGggaXMgc3BlY2lmaWVkIG9uIHRoZSB0YWJsZS4gIEF1dG8gd2lkdGggaW1wbGllcyBhdXRvIHRh
YmxlIGxheW91dC4KICAgICAgICAgaWYgKHN0eWxlKCkudGFibGVMYXlvdXQoKSA9PSBUYWJsZUxh
eW91dFR5cGU6OkZpeGVkICYmICFzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpKQotICAg
ICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRUYWJsZUxheW91
dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxGaXhlZFRh
YmxlTGF5b3V0Pih0aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90YWJsZUxheW91
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QXV0b1RhYmxlTGF5b3V0Pih0aGlzKTsKKyAgICAgICAgICAg
IG1fdGFibGVMYXlvdXQgPSBtYWtlVW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CiAgICAg
fQogCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBpbnZhbGlkYXRlIGNvbGxhcHNlZCBi
b3JkZXJzIGNhY2hlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4
IGFhZDBjMTQ3ZjExZDM5YjNhZDE2Y2FkZGMxNTNjMzIyZTkyZDdhMGEuLmI2MzA1ZGU1ZjYzMTZj
NGRiMjYwYTc5OWNkMTE2YmJkMWFlNTQ0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6ZGlydHlM
aW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJv
eD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SW5saW5lVGV4dEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGlu
ZVRleHRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3go
SW5saW5lVGV4dEJveCYgdGV4dEJveCkKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgUmVuZGVy
VGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0
QWZ0ZXJMYXN0VHlwCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBzZWN1cmVUZXh0VGltZXIg
PSBzZWN1cmVUZXh0VGltZXJzKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIXNlY3VyZVRleHRUaW1lcikKLSAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKKyAgICAgICAgc2VjdXJlVGV4
dFRpbWVyID0gbWFrZVVuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKICAgICBzZWN1cmVU
ZXh0VGltZXItPnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYzE0NDUxYTE4ZWVhN2E1
NzFhMjc3Nzg5OGE3OWNjOGI0M2ZmMzE0Mi4uNWZlYzY3OGM2YmI1ZGYwZTQ5MjJiMDEyYzNmMjY4
ZGJhYjRhN2I2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAt
NDkyLDcgKzQ5Miw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUoY29u
c3QgTGF5b3V0UmVjdCYgcmVwYWludFJlY3QpIGNvbnN0CiAgICAgLy8gRklYTUU6IE1heWJlIHRo
ZXJlIHNob3VsZCBiZSBhIHJlZ2lvbiB0eXBlIHRoYXQgZG9lcyB0aGlzIGF1dG9tYXRpY2FsbHku
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUg
PSAxNiAqIDE2OwogICAgIGlmIChtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Z3JpZFNpemUo
KSA+IG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUpCi0gICAgICAgIG1fYWNjdW11bGF0ZWRS
ZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBh
aW50UmVnaW9uLT5ib3VuZHMoKSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9u
ID0gbWFrZVVuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMo
KSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6Zmx1c2hBY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24o
KSBjb25zdApAQCAtNzI0LDcgKzcyNCw3IEBAIGJvb2wgUmVuZGVyVmlldzo6dXNlc0NvbXBvc2l0
aW5nKCkgY29uc3QKIFJlbmRlckxheWVyQ29tcG9zaXRvciYgUmVuZGVyVmlldzo6Y29tcG9zaXRv
cigpCiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29tcG9zaXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CisgICAgICAgIG1f
Y29tcG9zaXRvciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CiAK
ICAgICByZXR1cm4gKm1fY29tcG9zaXRvcjsKIH0KQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFJl
bmRlclZpZXc6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bAogSW1hZ2VRdWFsaXR5Q29udHJvbGxlciYgUmVuZGVyVmlldzo6aW1h
Z2VRdWFsaXR5Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIpCi0gICAgICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlUXVhbGl0eUNv
bnRyb2xsZXIgPSBtYWtlVW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKIH0KIApAQCAtODM0LDcgKzgzNCw3
IEBAIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFj
Y3VtdWxhdG9yKFJlbmRlclZpZXcqIHZpZXcpCiAKICAgICBtX3dhc0FjY3VtdWxhdGluZ1JlcGFp
bnRSZWdpb24gPSAhIXJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbjsK
ICAgICBpZiAoIW1fd2FzQWNjdW11bGF0aW5nUmVwYWludFJlZ2lvbikKLSAgICAgICAgcm9vdFJl
bmRlclZpZXctPm1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZWdpb24+KCk7CisgICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJl
Z2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigpOwogICAgIG1fcm9vdFZpZXcgPSBtYWtlV2Vha1B0
cigqcm9vdFJlbmRlclZpZXcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5jcHAKaW5kZXggZmRjZDU5YzUyYzVmMzI4ZjUyMDlmMDBjMWY4ZDgxNmFkYzVmNzY2
OC4uNDQ1NTg0MWFmMzJmZjE1MjUyY2ZhMjhlZDhhNjljM2U0OWYxZjMwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIGZs
b2F0IFJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBz
aXNTdHIsICBib29sIGx0ciwgZmxvCiAgICAgICAgIGdFbGxpcHNpc0JveE1hcCA9IG5ldyBFbGxp
cHNpc0JveE1hcCgpOwogCiAgICAgQVNTRVJUKCFoYXNFbGxpcHNpc0JveCgpKTsKLSAgICBhdXRv
KiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIHN0ZDo6bWFrZV91bmlx
dWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNX
aWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2lj
YWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJv
eCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKKyAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxp
cHNpc0JveE1hcC0+c2V0KHRoaXMsIG1ha2VVbmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygp
LCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBC
b3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RC
b3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
ICAgICBzZXRIYXNFbGxpcHNpc0JveCh0cnVlKTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBh
biBSVEwgdmVyc2lvbiBvZiB0aGlzPwogICAgIGlmIChsdHIgJiYgKHgoKSArIGxvZ2ljYWxXaWR0
aCgpICsgZWxsaXBzaXNXaWR0aCkgPD0gYmxvY2tSaWdodEVkZ2UpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IDdkZjI4Mjg4YTRkNTVjMmM3ZDI2YWQ0YmMw
MTc2ZDBiNzYxNzgzNjQuLjI0N2U1NWMwNjllOWZlODgxY2FmNGJmYmMyYjRhZWYxOWUzNjE3YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApAQCAtMTQ1LDcgKzE0
NSw3IEBAIGNsYXNzIFJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxvd0JveCwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFJvb3RJbmxpbmVCb3g+CiAgICAgICAgIGlmIChtX2Zsb2F0cykKICAg
ICAgICAgICAgIG1fZmxvYXRzLT5hcHBlbmQobWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9mbG9hdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENsZWFu
TGluZUZsb2F0TGlzdD4oMSwgbWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKKyAgICAgICAgICAg
IG1fZmxvYXRzID0gbWFrZVVuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRy
KGZsb2F0aW5nQm94KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVGbG9hdChSZW5kZXJCb3gm
IGZsb2F0aW5nQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFu
Z2VEYXRhLmNwcAppbmRleCBlYzVlNzM1NmE2NGQxMjQ5ZGRhMTE0N2U4YmJhMzFmNDc5MGI0YmYy
Li5iOWJhZDBhMDlmMjliZjdhZGM5ZDMzM2Y0ZTgxMWMzZWExYjkzZmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApAQCAtMTMxLDEzICsx
MzEsMTMgQEAgc3RhdGljIFNlbGVjdGlvbkRhdGEgY29sbGVjdChjb25zdCBTZWxlY3Rpb25SYW5n
ZURhdGE6OkNvbnRleHQmIHNlbGVjdGlvbiwgYm9vbAogICAgIHdoaWxlIChzdGFydCAmJiBzdGFy
dCAhPSBzdG9wKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKnN0
YXJ0LCBzZWxlY3Rpb24pKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxl
IGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhh
bWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNl
dChzdGFydCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRy
dWUpKTsKKyAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwg
bWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKICAgICAgICAg
ICAgIGlmIChyZXBhaW50RGlmZmVyZW5jZSkgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byog
YmxvY2sgPSBjb250YWluaW5nQmxvY2tCZWxvd1ZpZXcoKnN0YXJ0KTsgYmxvY2s7IGJsb2NrID0g
Y29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAg
YXV0byYgYmxvY2tJbmZvID0gb2xkU2VsZWN0aW9uRGF0YS5ibG9ja3MuYWRkKGJsb2NrLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8p
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgYmxv
Y2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpibG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyQmxv
Y2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMjEzLDEzICsyMTMsMTMgQEAgSW50UmVjdCBTZWxlY3Rpb25SYW5n
ZURhdGE6OmNvbGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQgY2xpcFRvVmlzaWJsZUNv
bnQKICAgICAgICAgaWYgKChzdGFydC0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgc3RhcnQgPT0g
bV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0
LmVuZCgpKQogICAgICAgICAgICAgJiYgc3RhcnQtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVy
T2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3Bv
bnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3Qg
YmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIHJlbmRlcmVycy5zZXQoc3RhcnQsIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBjbGlwVG9WaXNpYmxl
Q29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKSk7CisgICAgICAgICAgICByZW5k
ZXJlcnMuc2V0KHN0YXJ0LCBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwg
Y2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOwogICAg
ICAgICAgICAgYXV0byogYmxvY2sgPSBzdGFydC0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAg
ICAgICB3aGlsZSAoYmxvY2sgJiYgIWlzPFJlbmRlclZpZXc+KCpibG9jaykpIHsKICAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9
IHJlbmRlcmVycy5hZGQoYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAg
ICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbklu
Zm8+KCpibG9jaywgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6
Olllcyk7CisgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxl
Y3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVD
b250ZW50OjpZZXMpOwogICAgICAgICAgICAgICAgIGJsb2NrID0gYmxvY2stPmNvbnRhaW5pbmdC
bG9jaygpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9p
ZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwg
UmVwYWludE1vZGUgYmxvY2tSZXAKICAgICBzZWxlY3Rpb25JdGVyYXRvciA9IFNlbGVjdGlvbkl0
ZXJhdG9yKHNlbGVjdGlvblN0YXJ0KTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5kZXJlciA9
IHNlbGVjdGlvblN0YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmVyICE9IHNl
bGVjdGlvbkVuZDsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7
CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKmN1cnJlbnRSZW5kZXJl
ciwgbV9zZWxlY3Rpb25Db250ZXh0KSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOworICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBtYWtlVW5p
cXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOwogI2lmIEVO
QUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAgICAgICAgICAgZm9yIChhdXRvJiByZWN0IDogc2Vs
ZWN0aW9uSW5mby0+Y29sbGVjdGVkU2VsZWN0aW9uUmVjdHMoKSkKICAgICAgICAgICAgICAgICBt
X3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRSZWN0KHNlbGVjdGlvbkluZm8tPnJlcGFpbnRDb250
YWluZXIoKSwgcmVjdCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURh
dGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tS
ZXAKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25J
bmZvPiYgYmxvY2tJbmZvID0gbmV3U2VsZWN0ZWRCbG9ja3MuYWRkKGNvbnRhaW5pbmdCbG9jaywg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8p
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqY29udGFpbmluZ0Js
b2NrKTsKKyAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2Nr
U2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgICAgICAgICAgY29udGFp
bmluZ0Jsb2NrID0gY29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICNpZiBFTkFC
TEUoU0VSVklDRV9DT05UUk9MUykKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRo
ZXJlci5hZGRHYXBSZWN0cyhibG9ja0luZm8tPnJlcGFpbnRDb250YWluZXIoKSwgYmxvY2tJbmZv
LT5yZWN0cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcAppbmRleCA4Yzc2NmU2ZGUyYzc0YWQwMzc5NzMzMzFmYzdmNWE0NzQ5MDE1YjhlLi5jMzYy
ZjRlNTdiMDBmOWNlMzlhNzNlY2U4MTFjMmM4MzJkNjUwYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC05OTcsNyArOTk3LDcgQEAgTGF5
b3V0OjpMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3Vu
dCwgY29uc3QgUmVuZGVyQmxvY2sKIGNvbnN0IFJ1blJlc29sdmVyJiBMYXlvdXQ6OnJ1blJlc29s
dmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcnVuUmVzb2x2ZXIpCi0gICAgICAgIG1fcnVuUmVz
b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVy
LCAqdGhpcyk7CisgICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFJ1blJlc29sdmVy
PihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3J1blJlc29sdmVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggMWJmOThlNGVlYjQzYmEyMmNkYTRlNmY1ZDNiYzJhNWY5
ZmM0YjRiNy4uMDYyNWIxNmJkNTQzMTk3M2VkMzFkZTk5OGFlZDg4OWIwMTJiYTNiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rp
b25zLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJs
b2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gZGVidWdTaGFkb3cgPSBudWxscHRyOwogICAg
IGlmIChmbG93LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQo
KSkgewotICAgICAgICBkZWJ1Z1NoYWRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4o
SW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3Io
MCwgMjU1LCAwLCAyMDApKTsKKyAgICAgICAgZGVidWdTaGFkb3cgPSBtYWtlVW5pcXVlPFNoYWRv
d0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUs
IENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CiAgICAgICAgIHRleHRQYWludGVyLnNldFNoYWRvdyhk
ZWJ1Z1NoYWRvdy5nZXQoKSk7CiAgICAgfQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBnZW5l
cmF0ZUxpbmVCb3hUcmVlKFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlv
dXQpCiAgICAgICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+IGJpZGlSdW5zOwogICAgICAgICBmb3Ig
KGF1dG8gaXQgPSByYW5nZS5iZWdpbigpOyBpdCAhPSByYW5nZS5lbmQoKTsgKytpdCkgewogICAg
ICAgICAgICAgYXV0byBydW4gPSAqaXQ7Ci0gICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4o
c3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQo
KSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0
LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKKyAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVuZFJ1
bihtYWtlVW5pcXVlPEJpZGlSdW4+KHJ1bi5sb2NhbFN0YXJ0KCksIHJ1bi5sb2NhbEVuZCgpLCBj
b25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJ1bi5yZW5kZXJlcigpKSwgYmlkaUNvbnRleHQucHRy
KCksIFVfTEVGVF9UT19SSUdIVCkpOwogICAgICAgICB9CiAKICAgICAgICAgTGluZUluZm8gbGlu
ZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXpp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAppbmRl
eCAzYmExMzBkNDU1OWQ3MjkyZDg5MWY1NTNjZjE0ODBmODY2YmIyYmFkLi40YjQzZTZhY2JlMGVl
ZGFmNGVhZjRkMmU1ZDVhNDQ2MzkwNjA1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0QXV0b1NpemluZy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFRleHRBdXRvU2l6
aW5nOjphZGRUZXh0Tm9kZShUZXh0JiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXplKQogICAgIExP
RyhUZXh0QXV0b3NpemluZywgIiBhZGRBdXRvU2l6ZWROb2RlICVwIGNhbmRpZGF0ZVNpemU9JWYi
LCAmbm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RleHROb2Rl
cy5hZGQ8VGV4dEF1dG9TaXppbmdIYXNoVHJhbnNsYXRvcj4obm9kZS5yZW5kZXJlcigpLT5zdHls
ZSgpLCBudWxscHRyKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5n
VmFsdWU+KCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YWRkVGV4dE5vZGUobm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcAppbmRleCAyYjFjMWZhMDNjYTFjNTc1Njkw
Mjc3YTVlODEyODcxMDEwZDQ0NjdlLi5kMTE2NjE1YTcyNmM1YTBhOTQzZDliOWY2ZTA5NDBiOTVl
NjkwOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJl
YWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgTGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVz
cGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYKICAgICAgICAgaWYg
KG9iamVjdC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgc2V0U3RhdGlj
UG9zaXRpb25zKG1fYmxvY2ssIGRvd25jYXN0PFJlbmRlckJveD4ob2JqZWN0KSwgd2lkdGguc2hv
dWxkSW5kZW50VGV4dCgpKTsKICAgICAgICAgICAgIGlmIChvYmplY3Quc3R5bGUoKS5pc09yaWdp
bmFsRGlzcGxheUlubGluZVR5cGUoKSkgewotICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMo
KS5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPigwLCAxLCBvYmplY3QsIHJlc29s
dmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZl
ci5ydW5zKCkuYXBwZW5kUnVuKG1ha2VVbmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNv
bHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CiAgICAgICAgICAgICAgICAgbGluZUlu
Zm8uaW5jcmVtZW50UnVuc0Zyb21MZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKG9iamVjdC5pc0Zsb2F0aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCmluZGV4IDRiMTU5N2U5ZjIxYzlj
ZDRiMmYwZDg4MzQ3NDQ3NzVmMWQ4YmRlMDEuLmQ1MjA5MmI2OGVkOGUyYzhmZGE1MTVjOTBjZDUy
MjM1NmQ2NTVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIEludFNoYXBlSW50ZXJ2YWwgTWFyZ2luSW50
ZXJ2YWxHZW5lcmF0b3I6OmludGVydmFsQXQoaW50IHkpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8
UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVN
YXJnaW5JbnRlcnZhbHMoaW50IHNoYXBlTWFyZ2luKSBjb25zdAogewogICAgIGludCBtYXJnaW5J
bnRlcnZhbHNTaXplID0gKG9mZnNldCgpID4gc2hhcGVNYXJnaW4pID8gc2l6ZSgpIDogc2l6ZSgp
IC0gb2Zmc2V0KCkgKiAyICsgc2hhcGVNYXJnaW4gKiAyOwotICAgIGF1dG8gcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwg
c3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtl
VW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5JbnRlcnZhbHNTaXplLCBzdGQ6Om1h
eChzaGFwZU1hcmdpbiwgb2Zmc2V0KCkpKTsKICAgICBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvciBt
YXJnaW5JbnRlcnZhbEdlbmVyYXRvcihzaGFwZU1hcmdpbik7CiAKICAgICBmb3IgKGludCB5ID0g
Ym91bmRzKCkueSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggMzAyMzFhMGJlMWJiYzYzZTRiZTNkMjUw
NTEyYmVkM2QxOTU5NDA5OS4uZjVlZmVmZGQzMmIzMDU0N2FkYmQ4ZWIwOGY1NGU2M2IwMjQwZmQ5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTQ2LDI0
ICs0NiwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNo
YXBlPiBjcmVhdGVJbnNldFNoYXBlKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGJvdW5kcykKIHsK
ICAgICBBU1NFUlQoYm91bmRzLnJlY3QoKS53aWR0aCgpID49IDAgJiYgYm91bmRzLnJlY3QoKS5o
ZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91
bmRzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKIH0KIAogc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUoY29uc3QgRmxvYXRQ
b2ludCYgY2VudGVyLCBmbG9hdCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNl
bnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMq
MiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
Y3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGl1cywgY2VudGVyLnkoKSAt
IHJhZGl1cywgcmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSk7
CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShj
b25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiB7CiAgICAg
QVNTRVJUKHJhZGlpLndpZHRoKCkgPj0gMCAmJiByYWRpaS5oZWlnaHQoKSA+PSAwKTsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54
KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndp
ZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBj
ZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0
KCkqMiksIHJhZGlpKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRl
UG9seWdvblNoYXBlKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2Vz
LCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2x5
Z29uU2hhcGU+KFdURk1vdmUodmVydGljZXMpLCBmaWxsUnVsZSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOwogfQogCiBz
dGF0aWMgaW5saW5lIEZsb2F0UmVjdCBwaHlzaWNhbFJlY3RUb0xvZ2ljYWwoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVh
dGVTaGFwZShjb25zdCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBlLCBjb25zdCBMYQogICAgICAgICBj
b25zdCBWZWN0b3I8TGVuZ3RoPiYgdmFsdWVzID0gcG9seWdvbi52YWx1ZXMoKTsKICAgICAgICAg
c2l6ZV90IHZhbHVlc1NpemUgPSB2YWx1ZXMuc2l6ZSgpOwogICAgICAgICBBU1NFUlQoISh2YWx1
ZXNTaXplICUgMikpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+
PiB2ZXJ0aWNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNT
aXplIC8gMik7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZl
cnRpY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7IGkgKz0gMikgewog
ICAgICAgICAgICAgRmxvYXRQb2ludCB2ZXJ0ZXgoCiAgICAgICAgICAgICAgICAgZmxvYXRWYWx1
ZUZvckxlbmd0aCh2YWx1ZXMuYXQoaSksIGJveFdpZHRoKSwKQEAgLTE3OSw3ICsxNzksNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1h
Z2UsIGZsb2F0IHRocmVzaG9sZCwgYwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVk
SW50UmVjdChpbWFnZVIpOwogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0
KG1hcmdpblIpOwotICAgIGF1dG8gaW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJT
aGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKKyAg
ICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdp
blJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6
IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQu
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAKQEAgLTIxOCw3
ICsyMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFw
ZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgYXV0byByYXN0ZXJTaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGU+KFdURk1v
dmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOworICAgIGF1dG8gcmFzdGVyU2hhcGUg
PSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Qu
c2l6ZSgpKTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwog
ICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKICAgICByZXR1cm4gcmFzdGVyU2hh
cGU7CkBAIC0yMzAsNyArMjMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3Jl
YXRlQm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBXcmkKIAogICAgIEZs
b2F0UmVjdCByZWN0KDAsIDAsIHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgpLCByb3VuZGVkUmVj
dC5yZWN0KCkuaGVpZ2h0KCkpOwogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmRzKHJlY3QsIHJv
dW5kZWRSZWN0LnJhZGlpKCkpOwotICAgIGF1dG8gc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJv
eFNoYXBlPihib3VuZHMpOworICAgIGF1dG8gc2hhcGUgPSBtYWtlVW5pcXVlPEJveFNoYXBlPihi
b3VuZHMpOwogICAgIHNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgc2hh
cGUtPm1fbWFyZ2luID0gbWFyZ2luOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IGNkOTRmODljMDJiMGI4YzEzNTE5NDU3
ZTQ0ZDBkZGFmNmQ4N2YxZmEuLjk0ODQzMTcxOTQ3YzAyMzA5YWI3ZjRmYjFiOTdjMjYzODgyZWUz
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oCkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU2hhcGVPdXRzaWRlSW5mbyBmaW5h
bCB7CiAgICAgICAgIEluZm9NYXAmIGluZm9NYXAgPSBTaGFwZU91dHNpZGVJbmZvOjppbmZvTWFw
KCk7CiAgICAgICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBpbmZvID0gaW5mb01hcC5nZXQoJmtl
eSkpCiAgICAgICAgICAgICByZXR1cm4gKmluZm87Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gaW5m
b01hcC5hZGQoJmtleSwgc3RkOjptYWtlX3VuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBpbmZvTWFwLmFkZCgma2V5LCBtYWtlVW5pcXVlPFNoYXBl
T3V0c2lkZUluZm8+KGtleSkpOwogICAgICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CiAgICAgfQogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUluZm8oY29uc3QgUmVuZGVyQm94JiBr
ZXkpIHsgaW5mb01hcCgpLnJlbW92ZSgma2V5KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMGM5OGY5MTY2ZjdlMTUyOTcwM2JjZGIy
YzhjODNjYzgwYmI3YmYyNC4uNzQ0YzkwYjhmYjNmNTI3NjhhNTM4ZDIxMzU4MzYyY2E2MzQ4Mjdl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3Bw
CkBAIC0zNTgsNyArMzU4LDcgQEAgUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVQYXRoOjpibGVu
ZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGMKIAogICAgIGF1dG8m
IGZyb21QYXRoID0gZG93bmNhc3Q8QmFzaWNTaGFwZVBhdGg+KGZyb20pOwogCi0gICAgYXV0byBy
ZXN1bHRpbmdQYXRoQnl0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigp
OworICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0
cmVhbT4oKTsKICAgICBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oKmZyb21QYXRoLm1f
Ynl0ZVN0cmVhbSwgKm1fYnl0ZVN0cmVhbSwgKnJlc3VsdGluZ1BhdGhCeXRlcywgcHJvZ3Jlc3Mp
OwogCiAgICAgYXV0byByZXN1bHQgPSBCYXNpY1NoYXBlUGF0aDo6Y3JlYXRlKFdURk1vdmUocmVz
dWx0aW5nUGF0aEJ5dGVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ29udGVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250
ZW50RGF0YS5oCmluZGV4IGU3YmIwNjE2NTAyZDk5ZDZkYjQzOTJiYjQ2OGE5YWI0NjljZTQ5NGEu
LjJjMTJkZDliNDBkZDQwYjNjMGJmNjc0OTMyMmFlMmIwZmQxZTA3MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCkBAIC05NSw3ICs5NSw3IEBAIGNs
YXNzIEltYWdlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJl
bmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGF1dG8g
aW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJl
ZigpKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4o
bV9pbWFnZS5jb3B5UmVmKCkpOwogICAgICAgICBpbWFnZS0+c2V0QWx0VGV4dChhbHRUZXh0KCkp
OwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAgICAgfQpAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNz
IFRleHRDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6
CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3Vt
ZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihtX3RleHQpOyB9CiAKICAgICBTdHJpbmcgbV90ZXh0
OwogfTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBDb3VudGVyQ29udGVudERhdGEgZmluYWwg
OiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0
ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmlu
YWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29u
c3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJD
b250ZW50RGF0YT4oc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4obWFrZVVuaXF1
ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPENvdW50ZXJDb250ZW50PiBtX2NvdW50ZXI7CkBAIC0xOTAsNyArMTkwLDcgQEAgY2xhc3Mg
UXVvdGVDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6
CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3Vt
ZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKCkpOyB9CisgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQogCiAgICAgUXVvdGVUeXBl
IG1fcXVvdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVy
LmNwcAppbmRleCBmM2Q5MWRjOGRiYzhkOWU0NmM2MDFiOTU4NDNiOWE5NTJmM2IyZDFkLi4zMDAx
NGQwNGY3MGZiOTE4MTc0Mjg3NjAzZmRlYWI3MjM5NTYxNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCBGaWxsTGF5
ZXI6OkZpbGxMYXllcihGaWxsTGF5ZXJUeXBlIHR5cGUpCiB9CiAKIEZpbGxMYXllcjo6RmlsbExh
eWVyKGNvbnN0IEZpbGxMYXllciYgbykKLSAgICA6IG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKKyAgICA6IG1fbmV4dChv
Lm1fbmV4dCA/IG1ha2VVbmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKICAg
ICAsIG1faW1hZ2Uoby5tX2ltYWdlKQogICAgICwgbV94UG9zaXRpb24oby5tX3hQb3NpdGlvbikK
ICAgICAsIG1feVBvc2l0aW9uKG8ubV95UG9zaXRpb24pCkBAIC0xMTcsNyArMTE3LDcgQEAgRmls
bExheWVyOjp+RmlsbExheWVyKCkKIAogRmlsbExheWVyJiBGaWxsTGF5ZXI6Om9wZXJhdG9yPShj
b25zdCBGaWxsTGF5ZXImIG8pCiB7Ci0gICAgbV9uZXh0ID0gby5tX25leHQgPyBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CisgICAgbV9uZXh0ID0gby5t
X25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CiAKICAg
ICBtX2ltYWdlID0gby5tX2ltYWdlOwogICAgIG1feFBvc2l0aW9uID0gby5tX3hQb3NpdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4
IDI0OWJhNDdlNTg0M2VjYzYyZTZmZDRmMjZhZjFjZjUzOGExNjNmOWMuLmZiNDNjMjBlNWNlOTll
Y2UxOWY0NTJmZDlmODc5NjRkODE0YmI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFJlbmRlclN0eWxl
IFJlbmRlclN0eWxlOjpjbG9uZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4o
c3R5bGUsIENsb25lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUs
IENsb25lKTsKIH0KIAogUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0
eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBEaXNwbGF5VHlw
ZSBkaXNwbGF5KQpAQCAtNDA5LDcgKzQwOSw3IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6
YWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwc2V1CiAg
ICAgUmVuZGVyU3R5bGUqIHJlc3VsdCA9IHBzZXVkby5nZXQoKTsKIAogICAgIGlmICghbV9jYWNo
ZWRQc2V1ZG9TdHlsZXMpCi0gICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gc3RkOjptYWtl
X3VuaXF1ZTxQc2V1ZG9TdHlsZUNhY2hlPigpOworICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxl
cyA9IG1ha2VVbmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKIAogICAgIG1fY2FjaGVkUHNldWRv
U3R5bGVzLT5hcHBlbmQoV1RGTW92ZShwc2V1ZG8pKTsKIApAQCAtMTA1OCw3ICsxMDU4LDcgQEAg
dm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKICAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykKLSAgICAg
ICAgZGF0YS5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxI
YXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dGllcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgIGRhdGEuY3VzdG9tUGFp
bnRXYXRjaGVkUHJvcGVydGllcy0+YWRkKG5hbWUpOwogfQogCkBAIC0xMzAxLDcgKzEzMDEsNyBA
QCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdl
LCBib29sIGFkZCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0
Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VO
b25OdWxsKCkpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxJbWFnZUNvbnRlbnRE
YXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQpCkBAIC0xMzEwLDEz
ICsxMzEwLDEzIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGJvb2wgYWRkKQogICAgIGlmIChhZGQgJiYgZGF0YS5jb250ZW50KSB7CiAgICAgICAg
IGF1dG8mIGxhc3QgPSBsYXN0Q29udGVudCgqZGF0YS5jb250ZW50KTsKICAgICAgICAgaWYgKCFp
czxUZXh0Q29udGVudERhdGE+KGxhc3QpKQotICAgICAgICAgICAgbGFzdC5zZXROZXh0KHN0ZDo6
bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpKTsKKyAgICAgICAgICAgIGxhc3Qu
c2V0TmV4dChtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgYXV0byYgdGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29udGVu
dERhdGE+KGxhc3QpOwogICAgICAgICAgICAgdGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVu
dC50ZXh0KCkgKyBzdHJpbmcpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0
YS5jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7Cisg
ICAgICAgIGRhdGEuY29udGVudCA9IG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcp
OwogICAgICAgICBhdXRvJiBhbHRUZXh0ID0gZGF0YS5hbHRUZXh0OwogICAgICAgICBpZiAoIWFs
dFRleHQuaXNOdWxsKCkpCiAgICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0
VGV4dCk7CkBAIC0xMzI3LDEyICsxMzI3LDEyIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRl
bnQoc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKIHsK
ICAgICBpZiAoIWNvdW50ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRDb250ZW50KHN0ZDo6
bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsK
KyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNv
dW50ZXIpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChRdW90ZVR5
cGUgcXVvdGUsIGJvb2wgYWRkKQogewotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxR
dW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVl
PFF1b3RlQ29udGVudERhdGE+KHF1b3RlKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6
c2V0Q29udGVudEFsdFRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0xNTUxLDcgKzE1NTEs
NyBAQCBDb3VudGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVj
dGl2ZXMoKQogewogICAgIGF1dG8mIG1hcCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCkuY291bnRlckRpcmVjdGl2ZXM7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFrZVVu
aXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0x
NjcxLDE0ICsxNjcxLDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkK
IEFuaW1hdGlvbkxpc3QmIFJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25zKCkKIHsKICAgICBp
ZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucykKLSAgICAgICAg
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbmltYXRpb25MaXN0PigpOworICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLmFuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0
dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zOwogfQogCiBBbmltYXRpb25M
aXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMoKQogewogICAgIGlmICghbV9yYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucykKLSAgICAgICAgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5p
bWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50
cmFuc2l0aW9ucyA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gKm1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5zaXRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCmluZGV4IDIw
YjJhODExNGIwYzhlOWViZDQ4MjcwNzlhOTgyMGYyZWMwZGNkYzIuLjZlMzdjZjhmYjhhYmE1NWVj
MzMwYTk2MDMzYThhOTU0YzdjYjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAg
U3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoKQogCiBpbmxpbmUgU3R5bGVT
aGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRh
JiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPigpCi0gICAgLCBz
aGFkb3cob3RoZXIuc2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIu
c2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gbWFrZVVuaXF1
ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAppbmRleCAzZDYxYzk0YzAx
NjYxNjA4NThkYWJkODQwOWZjNDA4NjcwZTUwMWNhLi5jMTdlYWY4NTliMGJmYWE3ZGFiYzAwOGQ0
ZTc0MGZjNjMwYTRiODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1No
YWRvd0RhdGEuY3BwCkBAIC0zMyw3ICszMyw3IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEoY29u
c3QgU2hhZG93RGF0YSYgbykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQogICAgICwgbV9zdHls
ZShvLm1fc3R5bGUpCiAgICAgLCBtX2lzV2Via2l0Qm94U2hhZG93KG8ubV9pc1dlYmtpdEJveFNo
YWRvdykKLSAgICAsIG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0
YT4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgLCBtX25leHQoby5tX25leHQgPyBtYWtlVW5p
cXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHAKaW5kZXggYWQyY2JkOTU3ZWVmODI1NjBjZmIzNTJlOWY1MGIzOWU2MzNhMjZmZi4uOTZk
YmJhMDA3ZTZhNjRhN2Q2OTdhMjlhMjFkNjIxYWQ0NDc1NGI2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNw
cApAQCAtMTcyLDcgKzE3Miw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCB2aXNp
dGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKG8udmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcikK
ICAgICAsIGNhcmV0Q29sb3Ioby5jYXJldENvbG9yKQogICAgICwgdmlzaXRlZExpbmtDYXJldENv
bG9yKG8udmlzaXRlZExpbmtDYXJldENvbG9yKQotICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFk
b3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0
cikKKyAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRh
Pigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCBjdXJzb3JEYXRhKG8uY3Vyc29yRGF0
YSkKICAgICAsIGluZGVudChvLmluZGVudCkKICAgICAsIGVmZmVjdGl2ZVpvb20oby5lZmZlY3Rp
dmVab29tKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDZmYmIyYjdiMGMzZWIwM2U4Njlh
MWVhYWM5MTYxMTE5YzljNjFlOWIuLmJkZDAxOTE1YWEyNzhkZDZhNjY0OGZmNGMzZmJkYjNmY2Nk
MTQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTEzOSwxMyArMTM5LDEzIEBAIGlu
bGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
KGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAgLCBzY3JvbGxTbmFwQXJlYShvLnNjcm9sbFNuYXBB
cmVhKQogI2VuZGlmCiAgICAgLCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xvbmUo
KSA6IG51bGxwdHIpCi0gICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVz
ID8gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigqby5jb3VudGVyRGlyZWN0
aXZlcykgOiBudWxscHRyKQorICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0
aXZlcyA/IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2
ZXMpIDogbnVsbHB0cikKICAgICAsIGFsdFRleHQoby5hbHRUZXh0KQotICAgICwgYm94U2hhZG93
KG8uYm94U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5ib3hTaGFkb3cp
IDogbnVsbHB0cikKKyAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hh
ZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCB3aWxsQ2hhbmdlKG8ud2ls
bENoYW5nZSkKICAgICAsIGJveFJlZmxlY3Qoby5ib3hSZWZsZWN0KQotICAgICwgYW5pbWF0aW9u
cyhvLmFuaW1hdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1h
dGlvbnMpIDogbnVsbHB0cikKLSAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBzdGQ6
Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCisg
ICAgLCBhbmltYXRpb25zKG8uYW5pbWF0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4o
Km8uYW5pbWF0aW9ucykgOiBudWxscHRyKQorICAgICwgdHJhbnNpdGlvbnMoby50cmFuc2l0aW9u
cyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMpIDogbnVsbHB0cikK
ICAgICAsIG1hc2soby5tYXNrKQogICAgICwgbWFza0JveEltYWdlKG8ubWFza0JveEltYWdlKQog
ICAgICwgcGFnZVNpemUoby5wYWdlU2l6ZSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBpbmxpbmUgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZVJhcmVOb25JbgogICAgICwganVzdGlmeUl0ZW1zKG8uanVzdGlmeUl0ZW1zKQogICAgICwg
anVzdGlmeVNlbGYoby5qdXN0aWZ5U2VsZikKICAgICAsIGN1c3RvbVByb3BlcnRpZXMoby5jdXN0
b21Qcm9wZXJ0aWVzKQotICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5n
Pj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQorICAgICwgY3Vz
dG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMg
PyBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dGllcykgOiBudWxscHRyKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICAsIHRvdWNo
QWN0aW9ucyhvLnRvdWNoQWN0aW9ucykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCAyYzZmMzE3OGVlYjI2YzdiMmMwZDk1
YWUxMDhiN2VmY2M2ZTIyYzRlLi4yNGNkZTRiZDYxZTcxNGMyMzIzYjllNWNkMmNmMjY5ZTI4NDVm
OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZH
SW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVy
U1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91
bmRhcmllc1VwZGF0ZSh0cnVlKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQot
ICAgICwgbV9pbWFnZVJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJj
ZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3Vy
Y2U+KCkpCiB7CiAgICAgaW1hZ2VSZXNvdXJjZSgpLmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4
IDNjMzEwNTZkMWNhYjFmZWExMDQ5MDc4MGQwMGM4ZGNkMmM3OTgwNjguLmJhMWNkMDUyZGFkYWEx
Y2UxODQxYzdjMjNjYWYzM2ZhYTRlMzQ3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVuZGVyU1ZH
SW5saW5lOjpSZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5k
ZXJTdHlsZSYmIHN0eWwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+IFJlbmRlclNW
R0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCgpCiB7Ci0gICAgYXV0byBib3ggPSBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGJveCA9IG1ha2VV
bmlxdWU8U1ZHSW5saW5lRmxvd0JveD4oKnRoaXMpOwogICAgIGJveC0+c2V0SGFzVmlydHVhbExv
Z2ljYWxIZWlnaHQoKTsKICAgICByZXR1cm4gYm94OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggNjdlNmY5ODk3
ZDI3NzQ0ZmQ0MTMzZmYyNzY3MTRjNGU5ZGE2NjViMC4uZGJmNDkwM2Y4OWY0ZGM5MmVkZmYzMDUz
OTI1ODY5ZjMyZTJkOTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZW5k
ZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclNW
R0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5p
cXVlPFNWR0lubGluZVRleHRCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMWIz
ZWYyNGNjOTJkMjA1MmEzNGFhZDIwODgyMzMwZTFhMTIzYjg0Zi4uMWFkMjY0OTY0NjcwOWMyM2Yw
ZGI5Y2ZhZTRiODYzYzI0N2IzNjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmkKICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdC
b3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKIAogICAgIC8vIEFkZCBlZmZlY3RzIHRv
IHRoZSBidWlsZGVyCi0gICAgYXV0byBidWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0
ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgYXV0byBidWls
ZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUo
ZmlsdGVyKSk7CiAgICAgYnVpbGRlci0+c2V0UHJpbWl0aXZlVW5pdHMoZmlsdGVyRWxlbWVudCgp
LnByaW1pdGl2ZVVuaXRzKCkpOwogICAgIGJ1aWxkZXItPnNldFRhcmdldEJvdW5kaW5nQm94KHRh
cmdldEJvdW5kaW5nQm94KTsKICAgICAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFscmVhZHkgYnVpbHQsIG9yIHdl
J3JlIGluIGEgY3ljbGUsIG9yIHdlJ3JlIG1hcmtlZCBmb3IgcmVtb3ZhbC4gUmVnYXJkbGVzcywg
anVzdCBkbyBub3RoaW5nIG1vcmUgbm93LgogICAgIH0KIAotICAgIGF1dG8gZmlsdGVyRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyRGF0YT4oKTsKKyAgICBhdXRvIGZpbHRlckRhdGEgPSBt
YWtlVW5pcXVlPEZpbHRlckRhdGE+KCk7CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94
ID0gcmVuZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKTsKIAogICAgIGZpbHRlckRhdGEtPmJvdW5k
YXJpZXMgPSBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlckVsZW1l
bnQ+KCZmaWx0ZXJFbGVtZW50KCksIGZpbHRlckVsZW1lbnQoKS5maWx0ZXJVbml0cygpLCB0YXJn
ZXRCb3VuZGluZ0JveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCBkOGFkMDgwNDY2YzVjNmQ5
ZWVjZjA3OGNkZmY2NDI2YzYxNGEwY2UyLi41NTJjZTVhMzNhODA2MmU2YmVlMGIwNGFlM2YxNjBm
MDk5ZWI1MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbgogCiAgICAgYXV0byYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVu
dE1hcC5hZGQoJnJlbmRlcmVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFn
cmFkaWVudERhdGEpCi0gICAgICAgIGdyYWRpZW50RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8R3Jh
ZGllbnREYXRhPigpOworICAgICAgICBncmFkaWVudERhdGEgPSBtYWtlVW5pcXVlPEdyYWRpZW50
RGF0YT4oKTsKIAogICAgIGJvb2wgaXNQYWludGluZ1RleHQgPSByZXNvdXJjZU1vZGUuY29udGFp
bnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAK
aW5kZXggYWE1NzY1ZWQzNzliNmFiMWI5NDQ3MjZmNWI1ZWU0NTQzODNjNDY0ZS4uNGM4MTliOWJj
NTVkYzJiZmE4MmZiYmMwOTdmNjM3NTg1YjViMTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKIAogICAgIGJvb2wgbWlzc2luZ01h
c2tlckRhdGEgPSAhbV9tYXNrZXIuY29udGFpbnMoJnJlbmRlcmVyKTsKICAgICBpZiAobWlzc2lu
Z01hc2tlckRhdGEpCi0gICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91
bmlxdWU8TWFza2VyRGF0YT4oKSk7CisgICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIG1h
a2VVbmlxdWU8TWFza2VyRGF0YT4oKSk7CiAKICAgICBNYXNrZXJEYXRhKiBtYXNrZXJEYXRhID0g
bV9tYXNrZXIuZ2V0KCZyZW5kZXJlcik7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJh
bnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091
dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCmluZGV4IDI5ZThl
N2MyNDc1NjU4NzkyZWU0ZWQ0ZWQwODIwZmFlZWM5YmRjMGMuLmRmMDE3YmExYmZjMGNjZjdhZWE5
M2EzYmIyZjdmYzc4OGY2OTZjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBzdHJ1Y3QgTWFza2Vy
RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmlu
ZGV4IGNjMmNiZmNmMGZlOWE1OWVjZTE1ZjUyZjM1NzJkYjU5ZDE2MzIwZDYuLjMxYmM1ZjE5MzFi
ZGFlNTBhYWM2NjEzNTlmYzBhMjZmMTc4NTg2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWls
ZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIC8vIEJ1aWxkIHBhdHRlcm4uCi0gICAgYXV0byBwYXR0ZXJuRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRhdGE+KCk7CisgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1h
a2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0
ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAK
ICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDM0YjBhZTc1
YmRjMDA1NjU3NmQ1MTM4MDE4NWVmZTZiYzcyYzcwNmUuLjZhNjcxMThmZjFiMjU4YjMwM2M5NTYz
ODU5M2Y0NzRlZTg5YmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlbmRlclNWR1NoYXBlOjp+UmVu
ZGVyU1ZHU2hhcGUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNo
YXBlRnJvbUVsZW1lbnQoKQogewotICAgIG1fcGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4o
cGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CisgICAgbV9wYXRo
ID0gbWFrZVVuaXF1ZTxQYXRoPihwYXRoRnJvbUdyYXBoaWNzRWxlbWVudCgmZ3JhcGhpY3NFbGVt
ZW50KCkpKTsKICAgICBwcm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKICAgICBtX2ZpbGxCb3Vu
ZGluZ0JveCA9IGNhbGN1bGF0ZU9iamVjdEJvdW5kaW5nQm94KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5kZXggYmY3ODY0NDNkZGQ2MGQ2MjFi
Y2Q1NzliODc3MGVkY2Q5MWQyOWZhOS4uOWM3MzdjYWZmOGI5Mjc2Y2M0MTA2MDJmNTc5YTlmMzY0
ZTVhMDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2Vz
LmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcikKICAgICBBU1NFUlQoY2xpcHBlci0+cmVz
b3VyY2VUeXBlKCkgPT0gQ2xpcHBlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fY2xpcHBl
ckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOworICAgICAgICBtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0
YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIgPSBjbGlwcGVy
OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2Vz
OjpzZXRGaWx0ZXIoUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKICAgICBBU1NFUlQo
ZmlsdGVyLT5yZXNvdXJjZVR5cGUoKSA9PSBGaWx0ZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYg
KCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNr
ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAg
ICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRl
ck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIg
PSBmaWx0ZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NTAsNyArNTUwLDcgQEAgYm9vbCBTVkdS
ZXNvdXJjZXM6OnNldE1hcmtlclN0YXJ0KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJT
dGFydCkKICAgICBBU1NFUlQobWFya2VyU3RhcnQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJl
c291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRh
dGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtl
clN0YXJ0ID0gbWFya2VyU3RhcnQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NzEsNyArNTcxLDcg
QEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtl
ciogbWFya2VyTWlkKQogICAgIEFTU0VSVChtYXJrZXJNaWQtPnJlc291cmNlVHlwZSgpID09IE1h
cmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9t
YXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21h
cmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEt
Pm1hcmtlck1pZCA9IG1hcmtlck1pZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU5Miw3ICs1OTIs
NyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNWR1Jlc291cmNlTWFy
a2VyKiBtYXJrZXJFbmQpCiAgICAgQVNTRVJUKG1hcmtlckVuZC0+cmVzb3VyY2VUeXBlKCkgPT0g
TWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBt
X21hcmtlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtlckRhdGE+KCk7CisgICAgICAgIG1f
bWFya2VyRGF0YSA9IG1ha2VVbmlxdWU8TWFya2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0
YS0+bWFya2VyRW5kID0gbWFya2VyRW5kOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjEzLDcgKzYx
Myw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIoUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIqIG1hc2tlcikKICAgICBBU1NFUlQobWFza2VyLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXNrZXJS
ZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAg
ICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVy
RmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9
IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhLT5tYXNrZXIgPSBtYXNrZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02
MzYsNyArNjM2LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldEZpbGwoUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIqIGZpbGwpCiAgICAgICAgICAgIHx8IGZpbGwtPnJlc291cmNlVHlwZSgpID09
IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0
YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9r
ZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJv
a2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+ZmlsbCA9IGZpbGw7CiAgICAgcmV0
dXJuIHRydWU7CkBAIC02NTksNyArNjU5LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldFN0cm9r
ZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogc3Ryb2tlKQogICAgICAgICAgICB8fCBzdHJv
a2UtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAg
IGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEg
PSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+
c3Ryb2tlID0gc3Ryb2tlOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCAxOTE5NWFhMWRhYmM2
NmU0YjM1NjU5NzJlYzkxZjg5NDc3ZjQwMzliLi4xZWViNzhmNTdiM2ViYjMxYjRjZGU4ZTUzMDJk
ZGUwOWUwNDhjMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlc0NhY2hlLmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIFNWR1Jlc291cmNlc0Nh
Y2hlOjphZGRSZXNvdXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0CiAgICAgQVNTRVJUKCFtX2NhY2hlLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogCiAgICAgLy8g
QnVpbGQgYSBsaXN0IG9mIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXNzZWQg
UmVuZGVyT2JqZWN0Ci0gICAgYXV0byBuZXdSZXNvdXJjZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNW
R1Jlc291cmNlcz4oKTsKKyAgICBhdXRvIG5ld1Jlc291cmNlcyA9IG1ha2VVbmlxdWU8U1ZHUmVz
b3VyY2VzPigpOwogICAgIGlmICghbmV3UmVzb3VyY2VzLT5idWlsZENhY2hlZFJlc291cmNlcyhy
ZW5kZXJlciwgc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCAzMjQx
MDI1ODRjMWYxMTNkMGVlZDMzMjE0YTY3ZjU1MzRhYjBmNTlhLi44MTBhMGI4ODBhOGFhNGRhZTAy
ZmFiNDQ2YTk0MWVkZDljNWE3MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAg
dm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0
UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW4KICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQogICAgICAg
ICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBudWxscHRyOwogICAgIGVsc2UKLSAgICAgICAgbV9z
aW1wbGVXaWR0aEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2Nh
bGVkRm9udCwgbV9ydW4pOworICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBtYWtlVW5p
cXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRGb250LCBtX3J1bik7CiB9CiAKIHN0cnVjdCBNZWFz
dXJlVGV4dERhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggZDM3YmVlOGNiY2U1NTYxNTExYjI0ZTM2
NGUxYWY2NGFhZDdhYTc1ZC4uZTZiMjczMjBkOTJmZTg1NmQ4Mzc0MTA4ZWQ5NTQyZTA5MWVlYWY0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjIsMjIgKzEyMiwyMiBAQCBzdGF0aWMgdm9pZCBnZXRJ
bmxpbmVSdW4oUmVuZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBib3VuZGFyeSwgUmVu
ZGVyT2JqZQogCiBSZW5kZXJUcmVlQnVpbGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIoUmVuZGVyVmll
dyYgdmlldykKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9maXJzdExldHRlckJ1aWxkZXIo
c3RkOjptYWtlX3VuaXF1ZTxGaXJzdExldHRlcj4oKnRoaXMpKQotICAgICwgbV9saXN0QnVpbGRl
cihzdGQ6Om1ha2VfdW5pcXVlPExpc3Q+KCp0aGlzKSkKLSAgICAsIG1fbXVsdGlDb2x1bW5CdWls
ZGVyKHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlDb2x1bW4+KCp0aGlzKSkKLSAgICAsIG1fdGFibGVC
dWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFibGU+KCp0aGlzKSkKLSAgICAsIG1fcnVieUJ1aWxk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxSdWJ5PigqdGhpcykpCi0gICAgLCBtX2Zvcm1Db250cm9sc0J1
aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ29udHJvbHM+KCp0aGlzKSkKLSAgICAsIG1fYmxv
Y2tCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tG
bG93QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRmxvdz4oKnRoaXMpKQotICAgICwgbV9p
bmxpbmVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lPigqdGhpcykpCi0gICAgLCBtX3N2
Z0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxTVkc+KCp0aGlzKSkKKyAgICAsIG1fZmlyc3RMZXR0
ZXJCdWlsZGVyKG1ha2VVbmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKKyAgICAsIG1fbGlzdEJ1
aWxkZXIobWFrZVVuaXF1ZTxMaXN0PigqdGhpcykpCisgICAgLCBtX211bHRpQ29sdW1uQnVpbGRl
cihtYWtlVW5pcXVlPE11bHRpQ29sdW1uPigqdGhpcykpCisgICAgLCBtX3RhYmxlQnVpbGRlciht
YWtlVW5pcXVlPFRhYmxlPigqdGhpcykpCisgICAgLCBtX3J1YnlCdWlsZGVyKG1ha2VVbmlxdWU8
UnVieT4oKnRoaXMpKQorICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKG1ha2VVbmlxdWU8Rm9y
bUNvbnRyb2xzPigqdGhpcykpCisgICAgLCBtX2Jsb2NrQnVpbGRlcihtYWtlVW5pcXVlPEJsb2Nr
PigqdGhpcykpCisgICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9ja0Zsb3c+
KCp0aGlzKSkKKyAgICAsIG1faW5saW5lQnVpbGRlcihtYWtlVW5pcXVlPElubGluZT4oKnRoaXMp
KQorICAgICwgbV9zdmdCdWlsZGVyKG1ha2VVbmlxdWU8U1ZHPigqdGhpcykpCiAjaWYgRU5BQkxF
KE1BVEhNTCkKLSAgICAsIG1fbWF0aE1MQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE1hdGhNTD4o
KnRoaXMpKQorICAgICwgbV9tYXRoTUxCdWlsZGVyKG1ha2VVbmlxdWU8TWF0aE1MPigqdGhpcykp
CiAjZW5kaWYKLSAgICAsIG1fY29udGludWF0aW9uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPENv
bnRpbnVhdGlvbj4oKnRoaXMpKQorICAgICwgbV9jb250aW51YXRpb25CdWlsZGVyKG1ha2VVbmlx
dWU8Q29udGludWF0aW9uPigqdGhpcykpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAg
ICwgbV9mdWxsU2NyZWVuQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxTY3JlZW4+KCp0aGlz
KSkKKyAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIobWFrZVVuaXF1ZTxGdWxsU2NyZWVuPigqdGhp
cykpCiAjZW5kaWYKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghc19jdXJyZW50IHx8ICZtX3ZpZXcg
IT0gJnNfY3VycmVudC0+bV92aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDlhOThkMjVjMzJiOTM2
NGI0NmE2YWVjZmMzY2ZmZGM2YzQ2NmY0ZDIuLmI5ZDIwN2Y3ZGZkMzI0NmZlMDMwODZjODRjYTIw
MWJjYjdiOTE5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBSZW5kZXJUcmVl
VXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVs
ZW1lbnRVcGRhdGVzKgogCiBSZW5kZXJUcmVlVXBkYXRlcjo6UmVuZGVyVHJlZVVwZGF0ZXIoRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fZ2Vu
ZXJhdGVkQ29udGVudChzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkK
KyAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChtYWtlVW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0
aGlzKSkKICAgICAsIG1fYnVpbGRlcihyZW5kZXJWaWV3KCkpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKaW5kZXggN2ZlN2Y2ODczMjA0MTBlZjA0ODM4N2Q0ODFm
OTI3YjEyYzIzODNhYy4uYjljNzJlYjg4MGU5YmI4NzU5OGY0MTQ0MDc3ZDAyMzAxNjY2NWI4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaApAQCAtNDksNiArNDksNyBA
QCBlbnVtIGNsYXNzIElucHV0U291cmNlIHsKIH07CiAKIGNsYXNzIFVzZXJJbnB1dEJyaWRnZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
VXNlcklucHV0QnJpZGdlKTsKIHB1YmxpYzoKICAgICBVc2VySW5wdXRCcmlkZ2UoUGFnZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAppbmRleCBkYWUxMWNiMmY2
Mjg5OTE4NDUzYTEyODA5YWU0M2I4MTI0YjZiMTJiLi42ZDY5NWE2NjBkMGU0ZTA0NWEyNmRhYmUz
MzMxZWNhMjZmYWQyZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUlu
dmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9y
LmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGREaXJ0eUFsbFN0eWxlKGNv
bnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzKQogfQogCiBJbnZhbGlkYXRv
cjo6SW52YWxpZGF0b3IoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50cyo+JiBzaGVldHMs
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGlhUXVlcnlFdmFsdWF0b3IpCi0gICAgOiBt
X293bmVkUnVsZVNldChzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkpCisgICAgOiBtX293bmVk
UnVsZVNldChtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkpCiAgICAgLCBtX3J1bGVTZXQoKm1fb3duZWRS
dWxlU2V0KQogICAgICwgbV9kaXJ0aWVzQWxsU3R5bGUoc2hvdWxkRGlydHlBbGxTdHlsZShzaGVl
dHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCmluZGV4IDRkODE0
OGI0ZTMxZDc0ZDZhMGE1MTc1NGRlZTVlYWI4MDc1OWFiYWEuLjA2MmQ1OTY0ZDc3ZWM1ZGI4M2Iz
ZjQxYWNiYWE4N2VmY2U5OGRkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVsYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9u
cy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4gY29tbWl0
UmVsYXRpb25zVG9SZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnMKIAogICAgIGF1
dG8gYXBwZW5kU3R5bGVSZWxhdGlvbiA9IFsmcmVtYWluaW5nUmVsYXRpb25zXSAoY29uc3QgUmVs
YXRpb24mIHJlbGF0aW9uKSB7CiAgICAgICAgIGlmICghcmVtYWluaW5nUmVsYXRpb25zKQotICAg
ICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxSZWxhdGlvbnM+
KCk7CisgICAgICAgICAgICByZW1haW5pbmdSZWxhdGlvbnMgPSBtYWtlVW5pcXVlPFJlbGF0aW9u
cz4oKTsKICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zLT5hcHBlbmQocmVsYXRpb24pOwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggOWYwZDFhZDc0OTBiZmVh
YjI0MDdjZTdiYzg4YjA5NTExNmQwYjIyMi4uZGNiNjViYzA5YzM0Nzc5YjYzYTI5MzI0ZTI0ZDM3
MmJmYzZhMjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTk2LDcgKzk2
LDcgQEAgU3R5bGVSZXNvbHZlciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICBpZiAoIW1fcmVzb2x2
ZXIpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIg
eyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9yZXNvbHZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7CisgICAgICAg
IG1fcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOwogCiAg
ICAgICAgIGlmICghbV9zaGFkb3dSb290KSB7CiAgICAgICAgICAgICBtX2RvY3VtZW50LmZvbnRT
ZWxlY3RvcigpLmJ1aWxkU3RhcnRlZCgpOwpAQCAtNTYzLDcgKzU2Myw3IEBAIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0Zvckluc3Bl
Y3RvcigpCiBib29sIFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKGNvbnN0IENTU1N0
eWxlU2hlZXQqIHNoZWV0KSBjb25zdAogewogICAgIGlmICghbV93ZWFrQ29weU9mQWN0aXZlU3R5
bGVTaGVldExpc3RGb3JGYXN0TG9va3VwKSB7Ci0gICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0
eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25z
dCBDU1NTdHlsZVNoZWV0Kj4+KCk7CisgICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hl
ZXRMaXN0Rm9yRmFzdExvb2t1cCA9IG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBDU1NTdHlsZVNo
ZWV0Kj4+KCk7CiAgICAgICAgIGZvciAoYXV0byYgYWN0aXZlU3R5bGVTaGVldCA6IG1fYWN0aXZl
U3R5bGVTaGVldHMpCiAgICAgICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlz
dEZvckZhc3RMb29rdXAtPmFkZChhY3RpdmVTdHlsZVNoZWV0LmdldCgpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggODQ2YTIzMWFkMmIx
OGI1ZDdmMjk0OTAxNmQwOWYyMjNkZDY5ZTg4Yi4uYTAwZjRmZTBmNGNjYjUyZGQ4MzFhOTRlMjZh
NTg2NGU1YzFiNzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGU+IFRyZWVSZXNv
bHZlcjo6cmVzb2x2ZSgpCiAKICAgICBtX2RpZFNlZVBlbmRpbmdTdHlsZXNoZWV0ID0gbV9kb2N1
bWVudC5zdHlsZVNjb3BlKCkuaGFzUGVuZGluZ1NoZWV0c0JlZm9yZUJvZHkoKTsKIAotICAgIG1f
dXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOworICAgIG1fdXBk
YXRlID0gbWFrZVVuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOwogICAgIG1fc2NvcGVTdGFjay5h
cHBlbmQoYWRvcHRSZWYoKm5ldyBTY29wZShtX2RvY3VtZW50KSkpOwogICAgIG1fcGFyZW50U3Rh
Y2suYXBwZW5kKFBhcmVudChtX2RvY3VtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggYmM1MTQzNGIwYjJiOGUwYmY3N2U1N2E0YTc2
ZTRkNGJjZWVlOTk2NS4uMjVmMzg2M2QwNzk1NGFjOGQ2YTYzZTY4NjRhMWYwNzZiMGQ1MWFlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3Vt
ZW50KGRvY3VtZW50KQotICAgICwgbV9yZXNvdXJjZXNDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFNW
R1Jlc291cmNlc0NhY2hlPigpKQorICAgICwgbV9yZXNvdXJjZXNDYWNoZShtYWtlVW5pcXVlPFNW
R1Jlc291cmNlc0NhY2hlPigpKQogICAgICwgbV9hcmVBbmltYXRpb25zUGF1c2VkKCFkb2N1bWVu
dC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkpCiB7CiB9CkBAIC0xNDYs
NyArMTQ2LDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJj
ZShjb25zdCBBdG9tU3RyaW5nJiBpZCwgRWxlbWVudCYgZWwKIAogICAgIGF1dG8gcmVzdWx0ID0g
bV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nRWxlbWVudHM+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPFBlbmRpbmdFbGVtZW50cz4oKTsKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LT5hZGQoJmVsZW1lbnQpOwogCiAgICAgZWxlbWVudC5zZXRIYXNQZW5kaW5nUmVzb3VyY2VzKCk7
CkBAIC0yNzksNyArMjc5LDcgQEAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIFNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFyZ2V0KFNWR0UKIHZvaWQgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxlbWVudCYg
cmVmZXJlbmNpbmdFbGVtZW50LCBTVkdFbGVtZW50JiByZWZlcmVuY2VkRWxlbWVudCkKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5lbnN1cmUoJnJlZmVyZW5jZWRF
bGVtZW50LCBbJnJlZmVyZW5jaW5nRWxlbWVudF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0PFNWR0Vs
ZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+PihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZHRWxlbWVu
dCo+IHsgJnJlZmVyZW5jaW5nRWxlbWVudCB9KTsKICAgICB9KTsKICAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQoJnJlZmVyZW5j
aW5nRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYTgwOTZkZGFkYTgx
ZWFkNmE3YTFlYTMyNGNkODUwNjdmNWMwYjI4Yi4uZTRkZTNiNzQ5ZjBhMDAzOWJjNWM0Y2ZjZDA4
ZTE5Mzk2Y2Q2NTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTYxLDcgKzE2
MSw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgSGFzaE1hcDxBdG9tU3RyaW5nSW1wbCosIENTU1By
b3BlcnR5SUQ+IGNyZWF0ZUF0dHJpYnV0ZU5hbWVUCiBTVkdFbGVtZW50OjpTVkdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFN0
eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZVNWR0VsZW1lbnQpCiAgICAgLCBT
VkdMYW5nU3BhY2UodGhpcykKLSAgICAsIG1fcHJvcGVydHlBbmltYXRvckZhY3Rvcnkoc3RkOjpt
YWtlX3VuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKKyAgICAsIG1fcHJvcGVy
dHlBbmltYXRvckZhY3RvcnkobWFrZVVuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4o
KSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6
OndpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIGNoYW5nZSkKIFNWR0VsZW1lbnRSYXJlRGF0
YSYgU1ZHRWxlbWVudDo6ZW5zdXJlU1ZHUmFyZURhdGEoKQogewogICAgIGlmICghbV9zdmdSYXJl
RGF0YSkKLSAgICAgICAgbV9zdmdSYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRWxlbWVu
dFJhcmVEYXRhPigpOworICAgICAgICBtX3N2Z1JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTVkdFbGVt
ZW50UmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICptX3N2Z1JhcmVEYXRhOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IGE3NTg5MGYzMTgwNDY4ZDE1
MjRiZWU4NTQzNTlkMDM1NmViNTIyMmQuLjgwZWM3ZmM4NjI5MmI2M2JiYmE4NTFlMTFlMTA2ZmEx
NTJmOTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBA
IC0xMTksNyArMTE5LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVudDo6YW5p
bWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiBBZmZpbmVUcmFuc2Zvcm0qIFNWR0dyYXBoaWNz
RWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkKIHsKICAgICBpZiAoIW1fc3VwcGxlbWVu
dGFsVHJhbnNmb3JtKQotICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOworICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5z
Zm9ybSA9IG1ha2VVbmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOwogICAgIHJldHVybiBtX3N1cHBs
ZW1lbnRhbFRyYW5zZm9ybS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVT
dHJlYW0uaAppbmRleCA2ZjBhY2FjZjE5ZWU4NTBkYjRlNjkxMGQzZTgzZDI2NDk0ZDY3ZWIwLi40
MzRkOTFlYjNkZjhhZDg3OWY4MzlhNDg5NjY4Njc4MGI0MDlmMjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBTVkdQYXRoQnl0
ZVN0cmVhbSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGNvcHko
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5
dGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVT
dHJlYW0+KCp0aGlzKTsKICAgICB9CiAKICAgICBEYXRhSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAppbmRleCBlMDQyM2NlOTgxNWZhMGYyNTU2M2Ez
YjU0MzE0MDg2YWMzNTZmZjQ0Li4zZWI1N2FkMmYyMWRmYTY0YjliMTE4MDFmNDI3MjgzNjAyYjc1
YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29u
dGFpbmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzY2hl
ZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0YXJnZXQsCiAgICAg
RWxlbWVudEF0dHJpYnV0ZVBhaXIga2V5KHRhcmdldCwgYXR0cmlidXRlTmFtZSk7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFuaW1hdGlvbnNWZWN0b3I+JiBzY2hlZHVsZWQgPSBtX3NjaGVkdWxlZEFu
aW1hdGlvbnMuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2No
ZWR1bGVkKQotICAgICAgICBzY2hlZHVsZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbnNW
ZWN0b3I+KCk7CisgICAgICAgIHNjaGVkdWxlZCA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uc1ZlY3Rv
cj4oKTsKICAgICBBU1NFUlQoIXNjaGVkdWxlZC0+Y29udGFpbnMoYW5pbWF0aW9uKSk7CiAgICAg
c2NoZWR1bGVkLT5hcHBlbmQoYW5pbWF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAKaW5kZXggODA5YWZmNWQ4ODUzNzEyMDcyYWQ4NzE1NjczNWU5MzBmOWJh
MzVjZC4uNWM1NmI2OTk5NWJjOTJmNGNhODgxZTJiOTFlOWYzN2ZmNWMzOGY1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAgRW5j
b2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBhdXRvIHBhZ2VDb25maWd1
cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCk7Ci0gICAgICAgIG1f
Y2hyb21lQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhp
cyk7CisgICAgICAgIG1fY2hyb21lQ2xpZW50ID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNocm9tZUNs
aWVudD4odGhpcyk7CiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG1f
Y2hyb21lQ2xpZW50LmdldCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIFNWRyBlbmRz
IHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBtaWdodCBsZWFrIHRoZSB3b3JsZC4KQEAgLTQ2Niw3ICs0
NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgYW4gaXNzdWUgd2hlbiBT
VkdJbWFnZSB3aWxsIGJlIGFibGUgdG8gbG9hZCBvdGhlcgogICAgICAgICAvLyBTVkdJbWFnZSBv
YmplY3RzLCBidXQgd2UncmUgc2FmZSBub3csIGJlY2F1c2UgU1ZHSW1hZ2UgY2FuIG9ubHkgYmUK
ICAgICAgICAgLy8gbG9hZGVkIGJ5IGEgdG9wLWxldmVsIGRvY3VtZW50LgotICAgICAgICBtX3Bh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsK
KyAgICAgICAgbV9wYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uKSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2Up
OwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CiAg
ICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWls
ZGVyLmgKaW5kZXggZDk3MDMwMmFkZjg2NTg1NTA5YzY1MDhkNTA0OTUyYTI1NTMyMzYyYi4uYzc3
YWUwOGJhYzY1YzNjMmNmYzg5NzRmYTMzZTc2NDYwY2U5N2ZhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAt
MzMsNiArMzMsNyBAQCBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50
OwogCiBjbGFzcyBTVkdGaWx0ZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj4gRmlsdGVyRWZm
ZWN0U2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZERlY29yYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTVlZmFhZWE3MTExYmM2Yzk1
N2Q5NzJkNzQ1NDhkZTkyZDhhMTMzZS4uY2ViYWEzNjNiZjUyN2JiYjM4ZTU2N2QzZTNkNDJiZjg0
MzEwMmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHkgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgdHlwZW5hbWUgQW5pbWF0
ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk+CiAgICAgc3RhdGljIFJl
ZjxBbmltYXRlZFByb3BlcnR5PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRl
eHRFbGVtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25U
eXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFu
aW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIG1ha2VVbmlxdWU8RGVjb3JhdGVkUHJvcGVy
dHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkpKTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBT
VkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5o
CmluZGV4IDI4ODc0MWIxMjkwNWNiODUxNDMwNTQwOTBjNGUyYzkxMzliMzViZjMuLmQwNzM3YWNi
YTMzMWZlMTIzNDdiODM0ZmY3YWEzMDEwMGFkMTU2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3JJbXBsLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmkKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmlt
YXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQm9v
bGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxT
VkdBCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiYgYW5p
bWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBl
Pj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJ
bnRlZ2VyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
PFNWR0EKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBT
VkdBbmltYXRlZExlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjxTVkdBbgogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZExlbmd0aD4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBs
ZW5ndGhNb2RlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3Mg
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9yPFMKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiYgYW5pbWF0
ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wg
aXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUp
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZExlbmd0
aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTcyLDcgKzE3
Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMTg5LDcgKzE4OSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9y
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJsaWM6CiAg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IFJlZjxTVkdBbmltYXRlZE51bWJlckxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmlt
YXRlZE51bWJlckxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTIwNiw3ICsyMDYsNyBAQCBjbGFz
cyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlz
dD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRQYXRoU2VnTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTIyNCw3ICsyMjQsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVgogcHVibGlj
OgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBSZWY8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBh
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29s
IGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdB
bmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yNDMsNyArMjQzLDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlw
ZT4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRl
ZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0yNjIsNyArMjYyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUEKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgUmVmPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4mIGFuaW1hdGVkLCBBbmltYXRp
b25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0
ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW0KIAogICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
QW5pbWF0ZWRSZWN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2Fs
Y01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0Fu
aW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTI5OCw3ICsyOTgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogcHVibGljOgog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTMzOCw3ICszMzgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0bwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiYgYW5pbWF0ZWQs
IEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNB
Y2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlQYWlyQW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCmluZGV4IDRlZGEzNGM5YjE4ODhmZmQ2
ZDNkNjYzMmNmMGNmNmQzM2E2ZmE5ZTEuLjM5N2ZmMDkxNTk0MDBkMzNjMDUyYjExZDgyOGNiOGUz
N2IzYzgwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaApAQCAtNDAs
NyArNDAsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3IgZmluYWwgOiBw
dWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQogcHVibGljOgogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5p
bWF0ZWRBbmdsZT4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1h
dGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9v
bCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0Fu
aW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmlt
YXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0
ZWRJbnRlZ2VyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQ
YWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMSwg
UmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQy
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0x
NTYsNyArMTU2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXQKIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmlt
YXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0Fu
aW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1h
dGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCmluZGV4IDY0YTY1YjE4NjJmZmI5Njk2MDNjNzE1
NjA3YjU0NGY1NTZlMDA4M2EuLjAyMmVkZWRhODIxYjUzMzU1YjNmZGQzOTU4ZjI0MzY4MDE5YWFk
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0
ZUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmli
dXRlQW5pbWF0b3IuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIENhbGNNb2RlIDogdWlu
dDhfdCB7CiB9OwogCiBjbGFzcyBTVkdBdHRyaWJ1dGVBbmltYXRvciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHQXR0cmlidXRlQW5pbWF0b3IoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUo
YXR0cmlidXRlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCmluZGV4IDI2NGMzNmI2OTA3NGNjZjNlMmUyOWQy
Njc3MjFjZjUzNzQ1NzAzMTEuLmEzNWUyNTBhOWIxNTFmOWU4OTdmODVmNjM2N2MzODdkYmIzY2E1
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRl
ZEVudW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVj
b3JhdGVkRW51bWVyYXRpb24uaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdEZWNvcmF0ZWRF
bnVtZXJhdGlvbiA6IHB1YmxpYyBTVkdEZWNvcmF0ZWRQcmltaXRpdmU8RGVjb3JhdGlvblR5cGUs
IEVudQogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBFbnVtVHlwZSYgdmFsdWUpCiAgICAg
ewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8RGVjb3JhdGlvblR5cGU+
Ojp2YWx1ZSwgIkRlY29yYXRpb25UeXBlIGZvcm0gZW51bSBzaG91bGQgYmUgaW50ZWdyYWwuIik7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0aW9u
Pih2YWx1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0
aW9uPih2YWx1ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTRhYjAzNzBiOTQ3
OWU1NTUwYmJiMTEwODczNDIzNTMxMTY2NTA3MC4uYWIxNGYzY2JlNWE3ZmMyMGUxMzBmZGE5YmQ0
ODc5N2RkZGQzZTg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHRGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb3JhdGlvblR5cGU+CiBjbGFzcyBTVkdEZWNv
cmF0ZWRQcm9wZXJ0eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgU1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+U1ZHRGVj
b3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXgg
NDEyMTcyMjBiZGZjZmVmZjY3YzE2MDkxM2FkMTRkNmI5OWJhMTQyYy4uNjhiMmUwYjExMzdhZGU4
ZDM3ZjgwZTBlMjk4YjVkZTI0ZDAxYTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaApAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yIDogcHVibGlj
IFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5pbWF0aW9uRnVuY3RpbwogcHVibGljOgogICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
UHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01v
ZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlB
bmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5LmgKaW5kZXggYWQ1MGQ0MjM2Mjk2OTQyZDFkYzg3MThhMmRhOGU2
YWRmOGQxYmNjYi4uNWUzMDE4ZjVhNDAyYTljN2YxMjlkNDFkNDE5YWM1ZTk0OWZlZTA0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRv
ckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eUFuaW1hdG9yRmFjdG9yeS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSgpID0g
ZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
VmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDExODg4NmM0ZjhiYjcyMzZh
NDQ2ZmZhZDAzODY5ZmYwYjBkY2RlOTUuLmZkM2RjOTYwZmZhN2QzMTI5MDEzN2Q0NTJjZGUxYTI4
NzlhN2VkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUFuaW1h
dG9yPFNWR0xlbmd0aCwgU1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3Bl
cnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3Zl
KHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xl
bmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhl
cik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBv
dmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFs
dWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKaW5kZXggNWVlOGFjM2QwZjRl
MTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2OC4uYWU5NGUyOWVkNGI4NjEzYjk5Y2Q5NzQ4NmVk
MGIwNjI4MjZjMDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9w
ZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3Zl
KHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVt
ZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggYzExMzFkMjViMzg4YmJhODM2NjUzZDI5NzA4ZTZhNWJi
ZTRiZGZjNC4uMjQzNzg5YmI5ZDI3OWE2ZTg1M2UwODY0NGI2NGJlZTg1MWU1ZWUyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0yMzEsNiArMjMx
LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyYg
c2V0dGluZ3MpCiB9CiAKIGNsYXNzIEludGVybmFsU2V0dGluZ3NXcmFwcGVyIDogcHVibGljIFN1
cHBsZW1lbnQ8UGFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3NXcmFwcGVyKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IDogbV9pbnRlcm5hbFNldHRpbmdzKEludGVybmFsU2V0dGluZ3M6OmNyZWF0ZShwYWdlKSkgeyB9
CkBAIC0yNTIsNyArMjUzLDcgQEAgY29uc3QgY2hhciogSW50ZXJuYWxTZXR0aW5nczo6c3VwcGxl
bWVudE5hbWUoKQogSW50ZXJuYWxTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShQYWdl
KiBwYWdlKQogewogICAgIGlmICghU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVt
ZW50TmFtZSgpKSkKLSAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1
cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+
KHBhZ2UpKTsKKyAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1cHBs
ZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2UpKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIqPihTdXBwbGVt
ZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKS0+aW50ZXJuYWxTZXR0aW5n
cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTE3OGI0OTY4
NTg3NTUxYmYwNzA0ZDgzMDIwNTYyZGQxMmRmNGViYi4uNjJlNzM0OWExY2ExNjYyZDA2MmM2MDc5
Mzg5MmZjNzBmZjYwNTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MzQxLDcgKzM0MSw3IEBAIGNsYXNzIEluc3BlY3RvclN0dWJGcm9udGVuZCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBwdWJsaWMKIH07CiAKIEluc3BlY3RvclN0
dWJGcm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKFBhZ2UmIGluc3BlY3RlZFBhZ2UsIFJl
ZlB0cjxET01XaW5kb3c+JiYgZnJvbnRlbmRXaW5kb3cpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRl
bmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwoJmluc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVu
ZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpLCBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OlNldHRpbmdzPigpKQogICAgICwgbV9mcm9udGVuZFdpbmRvdyhmcm9udGVu
ZFdpbmRvdy5jb3B5UmVmKCkpCiB7CiAgICAgQVNTRVJUX0FSRyhmcm9udGVuZFdpbmRvdywgZnJv
bnRlbmRXaW5kb3cpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIEludGVybmFsczo6SW50ZXJuYWxzKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAg
ICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsK
ICAgICAgICAgYXV0byBtb2NrUGF5bWVudENvb3JkaW5hdG9yID0gbmV3IE1vY2tQYXltZW50Q29v
cmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwotICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXlt
ZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2Nr
UGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1lbnRD
b29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50Q29v
cmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTE0MTcsNyArMTQxNyw3IEBAIHZvaWQg
SW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKQogICAgIGlmICghc3ludGhl
c2lzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzeW50aGVzaXMtPnNldFBsYXRmb3JtU3ludGhl
c2l6ZXIoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4oc3lu
dGhlc2lzKSk7CisgICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKG1ha2VVbmlx
dWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOwogfQogCiAjZW5k
aWYKQEAgLTI0ODksNyArMjQ4OSw3IEBAIFJlZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJuYWxzOjpv
cGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBhdXRvKiBp
bnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBh
dXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5kb21X
aW5kb3coKTsKICAgICBhdXRvIGZyb250ZW5kV2luZG93UHJveHkgPSB3aW5kb3ctPm9wZW4oKndp
bmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclN0dWJGcm9udGVu
ZD4oKmluc3BlY3RlZFBhZ2UsIGRvd25jYXN0PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5kb3dQcm94
eS0+d2luZG93KCkpKTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZy
b250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CiAgICAgcmV0dXJuIGZyb250ZW5kV2luZG93
UHJveHk7CiB9CiAKQEAgLTMwMDksNyArMzAwOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVy
bmFsczo6c2V0Vmlld0V4cG9zZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQcmludGluZyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
Ci0gICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENv
bnRleHQ+KGZyYW1lKCkpOworICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IG1ha2VVbmlx
dWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKICAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkt
PmJlZ2luKHdpZHRoLCBoZWlnaHQpOwogfQogCkBAIC0zNDQ4LDcgKzM0NDgsNyBAQCB2b2lkIElu
dGVybmFsczo6ZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogCiB2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0oKQogewotICAgIExl
Z2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAorICAgIExlZ2FjeUNETTo6
cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1
ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAogICAgICAgICBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0
c0tleVN5c3RlbSwgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk7
CiB9CiAKQEAgLTQyNDEsNyArNDI0MSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1pY3JvVGFz
ayhpbnQgdGVzdE51bWJlcikKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBb
ZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1
ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRR
dWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVudCwgdGVzdE51bWJlcl0oKSB7CiAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCB0ZXN0TnVtYmVyLCAiIGhhcyBydW4u
IikpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2Fj
eU1vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApp
bmRleCA2NDI4N2QyMzlhZjU3M2U5MjAzZDI1ODQzMWIyNzNjN2I4NzQ5MDA2Li42MDI3MmQzNDk3
ZjRiODY1Y2RiMDM3MGZlNDFkM2Q2ZmJkZThiN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TGVnYWN5TW9ja0NETS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTW9ja0NETVNlc3Npb24gOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETVNlc3Npb24oTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfk1vY2tDRE1TZXNzaW9uKCkgPSBk
ZWZhdWx0OwpAQCAtNzMsNyArNzQsNyBAQCBib29sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE1TZXNz
aW9uPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE1TZXNzaW9uPihjbGll
bnQpOwogfQogCiBzdGF0aWMgVWludDhBcnJheSogaW5pdERhdGFQcmVmaXgoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAppbmRleCAyNGI5YjgwMDhjNGY1MTliNGE2NjZlYzZk
MTUyNWFjNjJlYzFjMzBhLi5iOTNhZWI5M2ZmNjMyOWU1MTU0N2MxM2ZmNzZhNjkyZWU2YTcxODZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lDRE07CiAKIGNsYXNzIExlZ2FjeU1v
Y2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5TW9ja0NETShMZWdhY3lDRE0q
IGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCmluZGV4IDU2Nzk2ZWU5MDBiYmYzYjZjYzA1Y2Y2YTIyOTZlZmQ0M2I5ZWY3
YjYuLmNlNWQ4ZjdkNmJkZjM4YjU5MjIwOTMwMmE2ZTZkNzFiMzY5NjYzMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9p
ZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYg
dHlwZXMpCiAKIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9yeTo6Y3Jl
YXRlQ0RNKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9j
a0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RN
PihtYWtlV2Vha1B0cigqdGhpcykpOwogfQogCiBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9j
a0NETUZhY3Rvcnk+IGZhY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmgKaW5kZXggMzM5NmNkMDJhZDAyZGQxNGU5MmYxNTc5ZTI3NTE2ZTZiYzNmNDI5OC4uMzk5MDli
OTMwM2E5NGM5MzY4ZWFhMGY2MjVmNGI2N2U1MjUwNTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIE1vY2tDRE1GYWN0
b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NETUZhY3Rvcnk+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxNb2NrQ0RNPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5Pik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTExODFkYWU3MmUx
M2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4Ny4uNzc4YTkxOGE2YjkwNzU1Y2I4NmQzYWFhNzRm
NzliM2U2MThkNGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBNb2NrQ29udGVudEZpbHRlcjo6ZW5hYmxl
ZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0
ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NvbnRlbnRG
aWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CiB9
CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBk
M2FjNWQ4N2QxOWUyYTg1MzYxYzExNTcyY2YzMTFmMGM4M2IyNDViLi5kNDBkZWQxZGExMTk4Y2Fh
MzQ1OWQ2NzdlMWZlODRmNWJmYjk0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0dhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBNb2NrR2FtZXBh
ZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHModW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgZ2EKICAgICBpZiAobV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0pCiAgICAgICAgIG1f
bW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdLT51cGRhdGVEZXRhaWxzKGdhbWVwYWRJRCwgYXhpc0Nv
dW50LCBidXR0b25Db3VudCk7CiAgICAgZWxzZQotICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9y
W2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQs
IGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOworICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2lu
ZGV4XSA9IG1ha2VVbmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4aXNDb3Vu
dCwgYnV0dG9uQ291bnQpOwogfQogCiBib29sIE1vY2tHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3RN
b2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IGRiZTkwNzNkNmFkZWJmYzUwMTU5Y2MyZWRiYjIy
ODNjY2QxN2JhODUuLjhmMTY0N2MxZjMyMjUxODE2YzdjZjA4OTYxODJhZTM0MjM1YzUxODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApAQCAt
NDYsNyArNDYsNyBAQCB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFu
ZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbAogewogICAgIFN0cmluZyBtZXNz
YWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdl
VGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhl
Yyk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1l
c3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJF
dmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5j
cHAKaW5kZXggZjQzYmQyYTdhNjA1OTM3MjdhZDBhNmE5MWRlY2Q2ZWJlYzcyMjY4OC4uNjkwM2Jl
NWVjMjVmYjkxZWZmNzc3NmU0NDc2YWQ0ZWEyYmNlNzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFdvcmtlckV2ZW50
UXVldWU6On5Xb3JrZXJFdmVudFF1ZXVlKCkKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6RXZl
bnREaXNwYXRjaGVyCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRXZlbnREaXNwYXRjaGVyKFJlZlB0cjxFdmVudD4mJiBldmVudCwgV29ya2VyRXZlbnRRdWV1
ZSYgZXZlbnRRdWV1ZSkKICAgICAgICAgOiBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQpAQCAtODQs
NyArODUsNyBAQCBib29sIFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+
JiYgZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8qIGV2ZW50UHRyID0g
ZXZlbnQucHRyKCk7Ci0gICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsKKyAgICBhdXRvIGV2ZW50
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8RXZlbnREaXNwYXRjaGVyPihXVEZNb3ZlKGV2ZW50KSwg
KnRoaXMpOwogICAgIG1fZXZlbnREaXNwYXRjaGVyTWFwLmFkZChldmVudFB0ciwgZXZlbnREaXNw
YXRjaGVyLmdldCgpKTsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9zdFRhc2soW2V2
ZW50RGlzcGF0Y2hlciA9IFdURk1vdmUoZXZlbnREaXNwYXRjaGVyKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKSB7CiAgICAgICAgIGV2ZW50RGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKaW5kZXggNjExNWVmNGExMzY1MmE2
ZWFkMTBhZjM3Y2ZiNDk0MjgyMGMzY2IyYi4uZDg5NzNkNWJjYWUxN2I5NTUwMDQ0YzdlODAxNjA1
Yjk5ZDU0OWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgK
QEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZSBmaW5hbCA6IHB1YmxpYyBFdmVu
dFF1ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXb3JrZXJFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0
dWFsIH5Xb3JrZXJFdmVudFF1ZXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCmluZGV4IDdiYTZlZGI1MjA4ZjIyYzNmOGYxNmRlMjlkODI1Yjc3MWY2
YzNlOWUuLmIxN2Q2NjM2M2FjMzU4MGU3YTM0NDAwODFhMmY3YzYzYTA3Mzg3NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02Miw5ICs2Miw5
IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKICAgICAsIG1fdXNlckFnZW50KHVzZXJBZ2VudCkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkK
LSAgICAsIG1fc2NyaXB0KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4o
dGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCi0gICAgLCBtX21pY3JvdGFza1F1ZXVlKHN0
ZDo6bWFrZV91bmlxdWU8TWljcm90YXNrUXVldWU+KG1fc2NyaXB0LT52bSgpKSkKKyAgICAsIG1f
c2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBt
X2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVy
PigqdGhpcykpCisgICAgLCBtX21pY3JvdGFza1F1ZXVlKG1ha2VVbmlxdWU8TWljcm90YXNrUXVl
dWU+KG1fc2NyaXB0LT52bSgpKSkKICAgICAsIG1faXNPbmxpbmUoaXNPbmxpbmUpCiAgICAgLCBt
X3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMp
CkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShj
b25zdCBVUkwmIHVybCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgICAgIG9yaWdp
bi0+Z3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKIAogICAgIHNldFNlY3Vy
aXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShvcmln
aW4pKSk7Ci0gICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAgIHNldENvbnRl
bnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsg
bV91cmwgfSwgKnRoaXMpKTsKIH0KIAogV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxT
Y29wZSgpCkBAIC0zNjIsOSArMzYyLDkgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVz
c2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogICAg
IGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1l
c3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIp
OworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
Pihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNr
LnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAg
IG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNv
dXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNl
LCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZSht
ZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAKaW5kZXggYTc1YzAxNTZjNTllMzhkZDk5OWQ2Y2VjMWRkZWVkZTIzYmUxODdi
My4uNGU5ZjUxOWFlZmVkZDI1Zjg4M2Y2M2FjYTBhNDc4OWZmMDI3ZTRiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVQcm94eSYgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6Y3Jl
YXRlKFdvcmtlciYgd29ya2VyKQogCiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2Fn
aW5nUHJveHkoV29ya2VyJiB3b3JrZXJPYmplY3QpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQod29ya2VyT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faW5z
cGVjdG9yUHJveHkoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2Vy
T2JqZWN0LmlkZW50aWZpZXIoKSkpCisgICAgLCBtX2luc3BlY3RvclByb3h5KG1ha2VVbmlxdWU8
V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQogICAgICwg
bV93b3JrZXJPYmplY3QoJndvcmtlck9iamVjdCkKIHsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50
PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2Vy
R2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydAogICAgICAgICArK21fdW5jb25maXJt
ZWRNZXNzYWdlQ291bnQ7CiAgICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soV1RGTW92ZSh0YXNrKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcXVldWVkRWFybHlUYXNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihX
VEZNb3ZlKHRhc2spKSk7CisgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7CiB9CiAK
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5M
b29wLmNwcAppbmRleCBiY2Q5NGU2YWMwNDAzYWNkNmE1NGJhYzQxZmFiNDFlNWJmNTUyN2RhLi5i
ZmFjOTU5MmRmYWE3OTIxMDA2NWIzNDU5YmQyMjE2MTk1Nzg0ODc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgTW9kZVBy
ZWRpY2F0ZSB7CiB9OwogCiBXb3JrZXJSdW5Mb29wOjpXb3JrZXJSdW5Mb29wKCkKLSAgICA6IG1f
c2hhcmVkVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKKyAgICA6
IG1fc2hhcmVkVGltZXIobWFrZVVuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKIHsKIH0KIApA
QCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0
VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIHsK
LSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4o
V1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVu
ZEFuZEtpbGwobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKSk7
CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbV9tZXNz
YWdlUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgbW9k
ZSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFRhc2s+KFdURk1vdmUo
dGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0RGVidWdnZXJUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDE5OTEyZjAyNzVmZWExOTQ4MDU0
MmEwNzA5NzVkY2IwYzdkMjgwMzUuLjIyOGYzZDE3ZmYwMDIyZTYyZTYzNjQ1MzJkNTU2Yjk1MDdh
MDE4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5j
aHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dAogCiAgICAgQVNT
RVJUKHNjcmlwdFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJHRVQiKTsKIAotICAgIGF1dG8gcmVx
dWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihXVEZNb3ZlKHNjcmlwdFJl
cXVlc3QpKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4o
V1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1
cm47CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBjb25zdCBVUkwmIFdvcmtlclNjcmlwdExvYWRlcjo6
cmVzcG9uc2VVUkwoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBX
b3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIGlu
aXRpYXRvcklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVl
PFJlc291cmNlUmVxdWVzdD4obV91cmwpOwogICAgIHJlcXVlc3QtPnNldEhUVFBNZXRob2QoIkdF
VCJfcyk7CiAgICAgcmVxdWVzdC0+c2V0SW5pdGlhdG9ySWRlbnRpZmllcihpbml0aWF0b3JJZGVu
dGlmaWVyKTsKICAgICByZXR1cm4gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmNwcAppbmRleCAxZjc1NjE4NmEyMGYwMTY5ZTQ3ODQzOTUxYmVlMzY4N2UwMDI0ZmJh
Li4zYzM4NThiZGE5YjQ0YjU3ZmFkYjM5ZWZhMmUwYTBmM2EzMDQxMThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgV29ya2VyVGhy
ZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW4KICAgICAsIG1fd29ya2VyRGVidWdnZXJQcm94eSh3b3JrZXJEZWJ1Z2dl
clByb3h5KQogICAgICwgbV93b3JrZXJSZXBvcnRpbmdQcm94eSh3b3JrZXJSZXBvcnRpbmdQcm94
eSkKICAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFncykKLSAgICAsIG1fc3RhcnR1cERh
dGEoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0VVJMLCBu
YW1lLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCBzb3VyY2VDb2RlLCBzdGFydE1v
ZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCB0b3BPcmlnaW4sIHRpbWVPcmlnaW4sIHNlc3Np
b25JRCkpCisgICAgLCBtX3N0YXJ0dXBEYXRhKG1ha2VVbmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1
cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwg
c291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2lu
LCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
ICAgICwgbV9pZGJDb25uZWN0aW9uUHJveHkoY29ubmVjdGlvblByb3h5KQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKaW5kZXggYjJkMjYxNWExMjYzZDE2MjY2MTgyMDA0NjQ4ZjkwZWRhNjkyMDZi
NS4uNTljNzFjNGQxNDc2MjdjZmQ5ZDMxYTQ1ZWFiY2NjZGFlMTAzZTc4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRl
cmVmRXZlbnRUYXJnZXQoKQogYXV0byBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSgpIC0+
IFJlYWR5UHJvbWlzZSYKIHsKICAgICBpZiAoIW1fcmVhZHlQcm9taXNlKSB7Ci0gICAgICAgIG1f
cmVhZHlQcm9taXNlID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkeVByb21pc2U+KCk7CisgICAgICAg
IG1fcmVhZHlQcm9taXNlID0gbWFrZVVuaXF1ZTxSZWFkeVByb21pc2U+KCk7CiAKICAgICAgICAg
aWYgKG1faXNTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgp
LmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7CkBAIC0xODAs
NyArMTgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24o
Y29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlwdFVSTCwgY28KICAgICBqb2JEYXRhLnR5cGUgPSBT
ZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25P
cHRpb25zID0gb3B0aW9uczsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8U2Vy
dmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkp
KTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBX
VEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3Bl
VVJMLCBSZWY8RGVmZXJyZQogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJlbW92ZVJlZ2lzdHJhdGlvbjogVW5yZWdpc3RlcmluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElE
OiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQo
KSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+
KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1
bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNl
KSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlw
dFVSTCwgV29ya2VyVHlwZSwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAt
MjMyLDcgKzIzMiw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0
cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYKIAogICAgIENPTlRBSU5FUl9S
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVwZGF0aW5nIHNlcnZp
Y2Ugd29ya2VyLiBKb2IgSUQ6ICUiIFBSSXU2NCwgam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8
U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0
YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlz
LCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2Ioc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3Jr
ZXJKb2I+JiYgam9iKQpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgY2xpZW50VVJMLCBSZWY8RGVmZXJy
CiAgICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyID0gKyttX2xh
c3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5k
aW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1
ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZp
ZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAgIGF1dG8gY29udGV4dElkZW50aWZp
ZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyhSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVu
dGlmaWVyID0gKyttX2xhc3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0byBwZW5k
aW5nUHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJv
bWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRpbmdQcm9t
aXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBl
bmRpbmdBY3Rpdml0eSgqdGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5n
UHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAgIGF1dG8g
Y29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmgKaW5kZXggN2FjOWM5ODM4M2IwNGI2ZWI4OWM5OWYyMjA4ODVlNzY3Mzk3NmMzZi4uM2JkNmI5
YjA2ZTU3Mzc2NjViNThmOTY5ZTI5M2QwZmVkNjJjM2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0x
MzksNiArMTM5LDcgQEAgY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lciBmaW5hbCA6IHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWMKICNlbmRpZgogCiAgICAgc3Ry
dWN0IFBlbmRpbmdQcm9taXNlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBQZW5kaW5nUHJvbWlzZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIFJlZjxQZW5kaW5nQWN0aXZpdHk8U2VydmljZVdvcmtlckNvbnRhaW5lcj4+JiYgcGVuZGlu
Z0FjdGl2aXR5KQogICAgICAgICAgICAgOiBwcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCiAgICAg
ICAgICAgICAsIHBlbmRpbmdBY3Rpdml0eShXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCmluZGV4IGVkYmM4ZjkxZWU0MzQ2MmE1MDQ5ZTg4YzFjZWY1ZWZhNzYy
Yzk4ZmYuLmNiNWMyMjFmYzk0ODhkN2MwMDcyOTgzYTE1Nzg5NWRjYThjNmNlYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2Vy
Ojp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vj
b24KIAogICAgIHNlcnZpY2VXb3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsK
IAotICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVu
dGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+
KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CisgICAgbV9wZW5kaW5nU2VydmljZVdvcmtl
clRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8U2VydmljZVdv
cmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQpKTsKIAog
ICAgIGF1dG8mIHRocmVhZCA9IHNlcnZpY2VXb3JrZXItPnRocmVhZCgpOwogICAgIHRocmVhZC5z
dG9wKFt0aGlzLCBpZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyID0gV1RGTW92ZShzZXJ2aWNlV29y
a2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGM2MTcz
NjEzY2FjYjU1ZDY5MDU4YmUyYzdlMmE1ZmJkODUyOWM3NzYuLjllNzI4YzNhN2FmYTQ2Yzk0OWNk
Y2JlMGQ2ZmViMDRhOTUzMWNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgYWxs
U2VydmljZVdvcmtlclRocmVhZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBtX3JlbW90ZURlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigqdGhpcywgZGF0YSk7CisgICAgbV9yZW1vdGVEZWJ1
Z2dhYmxlID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEp
OwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCh0cnVl
KTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPmluaXQoKTsKICNlbmRpZgpAQCAtMTY4LDcgKzE2
OCw3IEBAIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5lY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGZXRjaExv
YWRlcj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVyKEZldGNoTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsKLSAgICBhdXRvIGxvYWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KGNsaWVudCwgbnVsbHB0cik7CisgICAg
YXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOwog
ICAgIGxvYWRlci0+c3RhcnRMb2FkaW5nQmxvYlVSTChtX2RvY3VtZW50LCBibG9iVVJMKTsKICAg
ICBpZiAoIWxvYWRlci0+aXNTdGFydGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1Jl
Z2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCAxZGQzNDEzNzRjNDQ0NWEzNDk3MzJkNDRmZGVk
MTU0Nzc0ODFjMGI0Li45MmNiYTA4NWQzYWNmNmEyOTNmMDZiNTVkZjQ1ZjRkZmM3OTNmYmQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUmVn
aXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxG
aWxlbmFtZSkKIAogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRGlyZWN0b3J5
RXhpc3RzKG1fZGF0YWJhc2VEaXJlY3RvcnkpOwogCi0gICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuKGZ1bGxGaWxlbmFt
ZSkpIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0gIkZhaWxlZCB0byBvcGVuIHJlZ2lzdHJhdGlv
biBkYXRhYmFzZSI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZmU1Y2M4NTllNjVhNmUzMmE3
OGI1Mjg5NzVhMTMyZTc0YmYxNzg3ZS4uOTMyNmEzYmFjNjU5YTI0NjcwNWU5MjBhODg4NDZkZjRk
MGU5NjliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdp
c3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICAv
LyBQYWdlcyBzaG91bGQgbm90IGhhdmUgYmVlbiBhYmxlIHRvIG1ha2UgYSBuZXcgcmVnaXN0cmF0
aW9uIHRvIHRoaXMga2V5IHdoaWxlIHRoZSBpbXBvcnQgd2FzIHN0aWxsIHRha2luZyBwbGFjZS4K
ICAgICBBU1NFUlQoIW1fcmVnaXN0cmF0aW9ucy5jb250YWlucyhkYXRhLnJlZ2lzdHJhdGlvbi5r
ZXkpKTsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3Ry
YXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNj
cmlwdFVSTCk7CisgICAgYXV0byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVn
aXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlv
bi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0
VVJMKTsKICAgICByZWdpc3RyYXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0
aW9uLmxhc3RVcGRhdGVUaW1lKTsKICAgICBhdXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJh
dGlvbi5nZXQoKTsKICAgICBhZGRSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsK
QEAgLTMwNCw3ICszMDQsNyBAQCBTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2lu
U3RvcmU+JiYgb3JpZ2luU3RvcmUsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbgogewogICAgIEFTU0VS
VCghcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAg
ICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0cmF0aW9u
U3RvcmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5KSk7Cisg
ICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBtYWtlVW5pcXVlPFJlZ2lzdHJhdGlvblN0b3Jl
PigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOwogICAgIGVs
c2UKICAgICAgICAgcmVnaXN0cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwogCkBAIC0zMjEs
NyArMzIxLDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYkRh
dGEmJiBqb2JEYXRhKQogICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQg
am9iLgogCiAgICAgYXV0byYgam9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEu
cmVnaXN0cmF0aW9uS2V5KCksIFt0aGlzLCAmam9iRGF0YV0gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRp
b25LZXkoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0
aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKICAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKGpvYkRhdGEpOwpAQCAtODIwLDcgKzgyMCw3IEBA
IHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVu
dE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAKICAgICBpZiAoY2xpZW50SWRlbnRpZmllcnMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVCghaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzVGltZXIpOwotICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2Vydmlj
ZVdvcmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNs
aWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlzXSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50
ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oW2NsaWVudE9y
aWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNdIHsKICAgICAgICAgICAgIFZlY3Rv
cjxTV1NlcnZlcldvcmtlcio+IHdvcmtlcnNUb1Rlcm1pbmF0ZTsKICAgICAgICAgICAgIGZvciAo
YXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPm9yaWdp
bigpID09IGNsaWVudE9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDhiNjhiNzBmMDFk
MjUyNzhhZjUzOGFiY2U5MTRiOGM3YzY4YWI4MzcuLmRjYWY1YThhNzEwZjc5NDQ2NDdkZTNjZDVl
OTgwNjM5OWE4ZmQ1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmIGpvYikKICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0VXBkYXRlVmlhQ2Fj
aGUoam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUpOwogICAgICAgICBSRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3Rl
ckpvYjogRm91bmQgcmVnaXN0cmF0aW9uICVsbHUgZm9yIGpvYiAlcyBidXQgaXQgbmVlZHMgdXBk
YXRpbmciLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBqb2Iu
aWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJh
dGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7
CisgICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0
aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJMKTsKICAgICAg
ICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUobmV3UmVnaXN0cmF0aW9uKSk7CiAK
ICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1
ZTo6cnVuUmVnaXN0ZXJKb2I6IE5vIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiBmb3Igam9iICVzLCBj
b25zdHJ1Y3RpbmcgYSBuZXcgb25lLiIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDJiN2EyZmUzZmJiNThkNGM0ZWUzOGZj
MDRiNTM2YTNlNGUwYzc3ZTcuLjNiZTc1N2UwMmFlMTlkNzU5MGVjMDdiM2ZhNGNiZTdkNjNjZTgx
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiAg
ICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxs
YmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9i
YWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwogCi0gICAgICAgIGF1dG8gcGFpbnREZWZpbml0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3Ry
dWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0
aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpOworICAgICAgICBhdXRvIHBhaW50RGVmaW5p
dGlvbiA9IG1ha2VVbmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9y
LmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyks
IFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKICAgICAgICAgcGFpbnREZWZpbml0aW9uTWFwKCku
YWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZpbml0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA5NmNm
MTg1MGIwY2FlM2FhZTk2MDdkYjEzNDE2NzM1OGI2NzFjMWQ5Li42NGZjNzhlZWU3ODgwZWQ5YmVk
Y2ZjMmE3MDEyY2E2ZWMzY2UxYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlIHsKIAogICAgIC8v
IEFsbCBwYWludCBkZWZpbml0aW9ucyBtdXN0IGJlIGRlc3Ryb3llZCBiZWZvcmUgdGhlIHZtIGlz
IGRlc3Ryb3llZCwgYmVjYXVzZSBvdGhlcndpc2UgdGhleSB3aWxsIHBvaW50IHRvIGZyZWVkIG1l
bW9yeS4KICAgICBzdHJ1Y3QgUGFpbnREZWZpbml0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFBhaW50RGVmaW5pdGlvbj4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIFBhaW50RGVmaW5pdGlvbihjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBKU0M6
OkpTT2JqZWN0KiBwYWludENvbnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiwgVmVj
dG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1
bWVudHMpOwogCiAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcgbmFtZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4ZThhMmE0Y2Ey
M2UyYjkzZGExMzRhZmI1MmQwZTk1NzZjNDAyMTU5Li4zZjA5MjU2M2JkNTJhYzRhNGJiZWRhNDE1
YzIzN2EyZDFkZmRhZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dENvbnNvbGVDbGllbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgV29ya2xldENvbnNvbGVD
bGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VM
ZXZlCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RB
cmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVj
KTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwg
V1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRD
b25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggNGJiNzg4ZWE2M2NkNmJiZGM1
MzI1ODdlMDUxMGQ1MzI1MjYwNmZmYS4uY2VmODJmN2I0MTFkMjE4YzczM2Q2NmZhOWRiYTJkOTMx
MjVhZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2Jh
bFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3Jr
bGV0R2xvYmFsU2NvcGUpOwogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKICAgICA6IG1fZG9j
dW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9zZXNzaW9uSUQobV9kb2N1bWVu
dC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2xl
dFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmln
aW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogICAgICwgbV9j
b2RlKFdURk1vdmUoY29kZSkpCkBAIC02Miw3ICs2Miw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6
V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYm
IGNvCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdp
blBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlSZWYo
KSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRl
bnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7CisgICAgc2V0
Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihV
UkwgeyBtX2NvZGUudXJsKCkgfSwgKnRoaXMpKTsKIH0KIAogV29ya2xldEdsb2JhbFNjb3BlOjp+
V29ya2xldEdsb2JhbFNjb3BlKCkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdvcmtsZXRHbG9i
YWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lcwogewogICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVu
KCkgfHwgIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25z
b2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1l
c3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3Nh
Z2UtPm1lc3NhZ2UoKSwgMCkpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1l
c3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7
CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMWNlZTllYjM0MjFj
ZDk5YTU2Yzg4NjBiOGVjZGQ0NTk2ZjgwZDJkZS4uNzEzMzkwMGYxNzFlZWY0MTU2NzNkNGU5MGQ1
Y2Y3N2NmZWJjMmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQogICAgIEFTU0VSVChtX3dv
cmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1f
d29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUp
OworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+
KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVy
LT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxFcnJvcnMuaAppbmRleCBiMDIxY2NlMTUzYzMxOTI5NTBhMmJmNzdkODA5YTI4NDdhYjBmMGMx
Li5hNjMyN2I5ZGZmMWI3NmJiNTgyYzYzNjAzODE1MjQyOGM3MWFhODI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEVycm9ycy5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERv
Y3VtZW50OwogCiBjbGFzcyBYTUxFcnJvcnMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFhNTEVycm9ycyhEb2N1bWVudCYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA4ZTQ0MjRlZjI0NmEzNmE0ZGI4MTNjMzA2
Y2IzMjFmYTRmZWEyNTEzLi4zNjViNTE1NmM0M2Y5YTEwMGIyODlhMmI3YWIzNDU0NjEyNzNjNDhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBA
QCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVVJMKCkgY29uc3QKIFhNTEh0dHBSZXF1
ZXN0VXBsb2FkJiBYTUxIdHRwUmVxdWVzdDo6dXBsb2FkKCkKIHsKICAgICBpZiAoIW1fdXBsb2Fk
KQotICAgICAgICBtX3VwbG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8WE1MSHR0cFJlcXVlc3RVcGxv
YWQ+KCp0aGlzKTsKKyAgICAgICAgbV91cGxvYWQgPSBtYWtlVW5pcXVlPFhNTEh0dHBSZXF1ZXN0
VXBsb2FkPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VwbG9hZDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggYWQ3ZTEzYzhhMTk0YWQ1NmQ2MjM0MjAwMDE3Y2Jh
NzdmZTgwYjc0Mi4uYTkyNDQwOWVlNDZjNTNlNzNiMjdhNDlhMTllZmU5Njk3MjE2NzNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2UoVUNoYXIgYykKICAgICByZXR1cm4gYyA9PSAnICcg
fHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcdCc7CiB9CiAKLSNkZWZpbmUgREVG
SU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0
aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
dW4jI1N1ZmZpeD4oKTsgfQorI2RlZmluZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihTdWZmaXgp
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNTdWZmaXgo
KSB7IHJldHVybiBtYWtlVW5pcXVlPEZ1biMjU3VmZml4PigpOyB9CiAKIGNsYXNzIEludGVydmFs
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4IDA0NjE1
YzNkNWYwMzEzMTA2OTM4ZmFhMDVmYjM5Yzk5Y2UxMjNiNWMuLmMxYmJjNTRlYjgzMDE2OTExOWM4
NjgzMWE0ZjJhNmU3YzAwNDU2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFByZWRpY2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNw
cApAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgZXZhbHVhdGVQcmVkaWNhdGUoY29uc3QgRXhwcmVz
c2lvbiYgZXhwcmVzc2lvbikKIAogICAgIC8vIGZvb1szXSBtZWFucyBmb29bcG9zaXRpb24oKT0z
XQogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVx
VGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBzdGQ6Om1ha2Vf
dW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigp
OworICAgICAgICByZXR1cm4gRXFUZXN0T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlvbjo6Y3Jl
YXRlKCJwb3NpdGlvbiJfcyksIG1ha2VVbmlxdWU8TnVtYmVyPihyZXN1bHQudG9OdW1iZXIoKSkp
LmV2YWx1YXRlKCkudG9Cb29sZWFuKCk7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXgg
ZWMyYzZhZTA0NTlhMDY5MjU2YTY2MmY3MmM4NzI2N2ZlYTFhNDViZC4uNjMwNGU5MjgxMWE5MzRm
N2RlNzRjOGM5NGIyYjY5YzAwNGVhNDk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5
bGVTaGVldExpYnhzbHQuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBYU0xTdHlsZVNoZWV0
Ojpsb2FkQ2hpbGRTaGVldHMoKQogCiB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZikKIHsKLSAgICBhdXRvIGNoaWxkUnVsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8WFNMSW1wb3J0UnVsZT4odGhpcywgaHJlZik7CisgICAgYXV0byBjaGlsZFJ1bGUgPSBt
YWtlVW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYpOwogICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKGNoaWxkUnVsZS5yZWxlYXNlKCkpOwogICAgIG1fY2hpbGRyZW4ubGFzdCgpLT5sb2FkU2hl
ZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggZTAyNGVmYjU2YmY2NTJiOTBhOWExZDRmODEzMDY0OTE4MzBkOGUwZi4uNzA0
ODg5MmE1YWEwZWY5YTU1ZmJkMjQwOGNkMTc5MTRkMDJhOWM4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTEyOCw3ICsxMjgsNyBA
QCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5w
dXRTb3VyY2UpCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihYTUxFcnJvcnM6
OkVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24gcG9zaXRpb24pCiB7
CiAgICAgaWYgKCFtX3htbEVycm9ycykKLSAgICAgICAgbV94bWxFcnJvcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkpOworICAgICAgICBtX3htbEVycm9ycyA9IG1h
a2VVbmlxdWU8WE1MRXJyb3JzPigqZG9jdW1lbnQoKSk7CiAgICAgbV94bWxFcnJvcnMtPmhhbmRs
ZUVycm9yKHR5cGUsIG0sIHBvc2l0aW9uKTsKICAgICBpZiAodHlwZSAhPSBYTUxFcnJvcnM6Ondh
cm5pbmcpCiAgICAgICAgIG1fc2F3RXJyb3IgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGI5MzEw
MWI4YWFjNDgzOWEzOWJiNTRiMmI4OWRlODk4Yzc5Yjc1YWIuLmI5OWIzMDg5NzM4NTUwOWViYWIw
NDUyMTM5NzUzOWIwNzBjZWU3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRTdGFydEVsZW1l
bnROU0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciog
eG1sUHJlZml4LCBjb25zdCB4bWxDaGFyKiB4bWxVUkksIGludCBudW1OYW1lc3BhY2VzLCBjb25z
dCB4bWxDaGFyKiogbmFtZXNwYWNlcywgaW50IG51bUF0dHJpYnV0ZXMsIGludCBudW1EZWZhdWx0
ZWQsIGNvbnN0IHhtbENoYXIqKiBhdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxs
YmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2s+KCk7
CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnRO
U0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT54bWxMb2NhbE5hbWUgPSB4bWxTdHJk
dXAoeG1sTG9jYWxOYW1lKTsKICAgICAgICAgY2FsbGJhY2stPnhtbFByZWZpeCA9IHhtbFN0cmR1
cCh4bWxQcmVmaXgpOwpAQCAtMTIyLDEyICsxMjIsMTIgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNr
cyB7CiAKICAgICB2b2lkIGFwcGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKCkKICAgICB7Ci0gICAg
ICAgIG1fY2FsbGJhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50
TlNDYWxsYmFjaz4oKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFBl
bmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4oKSk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRD
aGFyYWN0ZXJzQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2Fs
bGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDaGFy
YWN0ZXJzQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMs
IGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xMzcsNyArMTM3LDcgQEAg
Y2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZFByb2Nlc3NpbmdJbnN0
cnVjdGlvbkNhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHRhcmdldCwgY29uc3QgeG1sQ2hhciogZGF0
YSkKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFj
ayA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrPigpOwog
CiAgICAgICAgIGNhbGxiYWNrLT50YXJnZXQgPSB4bWxTdHJkdXAodGFyZ2V0KTsKICAgICAgICAg
Y2FsbGJhY2stPmRhdGEgPSB4bWxTdHJkdXAoZGF0YSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZENEQVRBQmxvY2tDYWxsYmFj
ayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFj
ayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKKyAgICAg
ICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4o
KTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cm5kdXAocywgbGVuKTsKICAgICAgICAg
Y2FsbGJhY2stPmxlbiA9IGxlbjsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2Fs
bGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kQ29tbWVudENhbGxiYWNrKGNvbnN0IHhtbENoYXIq
IHMpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nQ29tbWVudENhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1
ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1s
U3RyZHVwKHMpOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7
CiAKICAgICB2b2lkIGFwcGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2soY29uc3QgeG1sQ2hhciog
bmFtZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciogc3lzdGVtSUQp
CiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5n
SW50ZXJuYWxTdWJzZXRDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VV
bmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJh
Y2stPm5hbWUgPSB4bWxTdHJkdXAobmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbElE
ID0geG1sU3RyZHVwKGV4dGVybmFsSUQpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGNsYXNzIFBlbmRp
bmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFcnJvckNhbGxiYWNrKFhNTEVycm9yczo6
RXJyb3JUeXBlIHR5cGUsIGNvbnN0IHhtbENoYXIqIG1lc3NhZ2UsIE9yZGluYWxOdW1iZXIgbGlu
ZU51bWJlciwgT3JkaW5hbE51bWJlciBjb2x1bW5OdW1iZXIpCiAgICAgewotICAgICAgICBhdXRv
IGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRXJyb3JDYWxsYmFjaz4oKTsKKyAg
ICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7
CiAKICAgICAgICAgY2FsbGJhY2stPm1lc3NhZ2UgPSB4bWxTdHJkdXAobWVzc2FnZSk7CiAgICAg
ICAgIGNhbGxiYWNrLT50eXBlID0gdHlwZTsKQEAgLTE5Nyw2ICsxOTcsNyBAQCBjbGFzcyBQZW5k
aW5nQ2FsbGJhY2tzIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGVuZGluZ0NhbGxiYWNrIHsK
KyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFs
IH5QZW5kaW5nQ2FsbGJhY2soKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxs
KFhNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIpID0gMDsKICAgICB9OwpAQCAtNTY0LDcgKzU2NSw3
IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbihjb25zdCBTdHJp
bmcmIHZlcnNpb24pCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1l
bnQmIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICA6IFNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fdmlldyhmcmFtZVZpZXcpCi0gICAgLCBtX3Bl
bmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAg
ICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAg
ICAsIG1fY3VycmVudE5vZGUoJmRvY3VtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9u
KFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiB7CkBAIC01NzIsNyArNTczLDcg
QEAgWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVu
dCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVu
dFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVu
dCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIDogU2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCksIHBhcnNlckNvbnRlbnRQb2xp
Y3kpCi0gICAgLCBtX3BlbmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2Fs
bGJhY2tzPigpKQorICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0Nh
bGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUoJmZyYWdtZW50KQogICAgICwgbV9zY3Jp
cHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAg
LCBtX3BhcnNpbmdGcmFnbWVudCh0cnVlKQpAQCAtMTMyOCw3ICsxMzI5LDcgQEAgdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6ZG9FbmQoKQogICAgICAgICB4bWxUcmVlVmlld2VyLnRyYW5zZm9ybURv
Y3VtZW50VG9UcmVlVmlldygpOwogICAgIH0gZWxzZSBpZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsK
ICAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHhtbERvY1B0ckZvclN0cmluZyhkb2N1bWVudCgpLT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLnRvU3Ry
aW5nKCksIGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+
c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2Mp
KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKG1ha2VVbmlxdWU8VHJh
bnNmb3JtU291cmNlPihkb2MpKTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZh
bHNlKTsgLy8gTWFrZSB0aGUgZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFw
cGx5IFhTTCBzdHlsZXNoZWV0cy4KICAgICAgICAgZG9jdW1lbnQoKS0+YXBwbHlQZW5kaW5nWFNM
VHJhbnNmb3Jtc05vd0lmU2NoZWR1bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVy
L1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmNwcAppbmRleCAwNWJjOTUzZjdmMGRkYzc4N2IxZTYzMDQ4NzY5NmMyMDg1OWNhZTBmLi5kNjll
MTQ5OTJkNTg2NzUxY2EwNDM0MjYzNjJhNmY0MWMyNjk5ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2Vi
RHJpdmVyU2VydmljZS5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZp
Y2U6OmNvbm5lY3RUb0Jyb3dzZXIoVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNM
aXN0LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSG9zdCA9IHN0
ZDo6bWFrZV91bmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7
CisgICAgYXV0byBzZXNzaW9uSG9zdCA9IG1ha2VVbmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxp
dGllc0xpc3QudGFrZUxhc3QoKSk7CiAgICAgYXV0byogc2Vzc2lvbkhvc3RQdHIgPSBzZXNzaW9u
SG9zdC5nZXQoKTsKICAgICBzZXNzaW9uSG9zdFB0ci0+Y29ubmVjdFRvQnJvd3NlcihbdGhpcywg
Y2FwYWJpbGl0aWVzTGlzdCA9IFdURk1vdmUoY2FwYWJpbGl0aWVzTGlzdCksIHNlc3Npb25Ib3N0
ID0gV1RGTW92ZShzZXNzaW9uSG9zdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpIG11dGFibGUgewogICAgICAg
ICBpZiAoZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAK
aW5kZXggN2EyMGI4OTQxYWZmNzJhODUyYjc2ZjVjNTUxMDYyNjU0Nzc0YTFjYy4uMTc3YWE1NGYy
MjI5N2FjMzE2MTRkMzUzYmU5ZjNhNzlkMWFhYjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGli
L1Nlc3Npb25Ib3N0R2xpYi5jcHAKQEAgLTExMyw2ICsxMTMsNyBAQCBib29sIFNlc3Npb25Ib3N0
Ojppc0Nvbm5lY3RlZCgpIGNvbnN0CiB9CiAKIHN0cnVjdCBDb25uZWN0VG9Ccm93c2VyQXN5bmNE
YXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQ29ubmVjdFRv
QnJvd3NlckFzeW5jRGF0YShTZXNzaW9uSG9zdCogc2Vzc2lvbkhvc3QsIEdVbmlxdWVQdHI8Y2hh
cj4mJiBkYnVzQWRkcmVzcywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9p
ZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAg
IDogc2Vzc2lvbkhvc3Qoc2Vzc2lvbkhvc3QpCiAgICAgICAgICwgZGJ1c0FkZHJlc3MoV1RGTW92
ZShkYnVzQWRkcmVzcykpCkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6bGF1
bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21w
bGUKICAgICB9LCB0aGlzKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGJ1c0FkZHJlc3MoZ19z
dHJkdXBfcHJpbnRmKCJ0Y3A6aG9zdD0lcyxwb3J0PSV1IiwgIjEyNy4wLjAuMSIsIHBvcnQpKTsK
LSAgICBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6bWFrZV91bmlxdWU8Q29ubmVjdFRvQnJvd3NlckFz
eW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFibGUuZ2V0KCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgY29ubmVjdFRvQnJvd3NlcihtYWtl
VW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1c0FkZHJl
c3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwog
fQogCiB2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVlX3B0cjxD
b25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPiYmIGRhdGEpCkBAIC0zNzEsNiArMzcyLDcgQEAgdm9p
ZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25J
RCwgdWludDY0X3QgdGFyZ2V0SUQKIH0KIAogc3RydWN0IE1lc3NhZ2VDb250ZXh0IHsKKyAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgbG9uZyBtZXNzYWdlSUQ7CiAgICAg
U2Vzc2lvbkhvc3QqIGhvc3Q7CiB9OwpAQCAtMzgxLDcgKzM4Myw3IEBAIHZvaWQgU2Vzc2lvbkhv
c3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGxvbmcgbWVzc2FnZUlELCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiAgICAgQVNTRVJUKG1fY29ubmVjdGlvbklEKTsKICAgICBBU1NFUlQobV90YXJnZXQu
aWQpOwogCi0gICAgYXV0byBtZXNzYWdlQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2Fn
ZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlELCB0aGlzIH0pOworICAgIGF1dG8g
bWVzc2FnZUNvbnRleHQgPSBtYWtlVW5pcXVlPE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4
dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fZGJ1
c0Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsCiAgICAgICAgIElOU1BFQ1RPUl9EQlVTX09CSkVD
VF9QQVRILAogICAgICAgICBJTlNQRUNUT1JfREJVU19JTlRFUkZBQ0UsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5o
CmluZGV4IGI2MmYxMmUxODJmMjFlYjhkNTEwNzRjYjI1NGQ3YjIxMmUwY2VkMTkuLmI0NDVlN2E2
NWE0OGQwNzQ4YmQ3ZTkyMDVhMzQ0MGY3ZjFhOTU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCkBAIC0z
OSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQWRDbGlja0F0dHJpYnV0
aW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKICAgICB1c2lu
ZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcAppbmRleCAyZTI5NmIyOWY0M2E0ZmM4OGU3MDA5MzI0YTVlMjNiMGJlOWNkNTFjLi45MzAz
ZDJhZGMxNWVmNmZiMzEwYjZmYjE2ZDA3MGNjODUzZmRjM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKCkKICAgICBpZiAocmVzb3VyY2VMb2dQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigp
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChGaWxlTW9uaXRvcjo6Rmls
ZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVN
b25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBl
IHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3Rv
cnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsZU1vbml0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVl
dWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7
CisgICAgbV9maWxlTW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHN0b3JhZ2VQYXRo
LCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VU
eXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAg
IGlmICh0eXBlID09IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbCkgewogICAg
ICAgICAgICAgLy8gRGlyZWN0b3J5IHdhcyByZW1vdmVkIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCmluZGV4IDRjMDMzZTM1
M2Q0ZjMwOGY3Zjc2MDAxMmNhOTYyOTYzMDNjMTA3MzAuLjcxZjM0YmZhM2Q2YzJiNTI3NjE2ODk0
NGVlMzM0YzczZGFmNTAzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogCiAvLyBDYW4gb25seSBiZSBjb25zdHJ1
Y3RlZCAvIGRlc3Ryb3llZCAvIHVzZWQgZnJvbSB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJ3Mgc3RhdGlzdGljIHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmLCBXb3JrUXVldWUmLCBjb25zdCBTdHJpbmcm
IHN0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
aW5kZXggNzBhY2JkY2U5NmY2NWNmODNhOTQ2MzdkM2ZiOGQxZTliMjY1NTNkZC4uYTBjZWY2ZjMx
YjQ5NjYyZTVmOTIwM2NjZjhiMTkwODdlMzBlODRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNzcsNiArNzcsNyBAQCBlbnVtIGNsYXNzIE9wZXJhdGlu
Z0RhdGVzV2luZG93IDogYm9vbCB7IExvbmcsIFNob3J0IH07CiAKIC8vIFRoaXMgaXMgYWx3YXlz
IGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2lu
ZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czsKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApp
bmRleCA4YzIxMTU3Y2M3ZjY5MTdiYTk3MDg5ZTM2ZjE2OWQ4NmNmOGI4YWIwLi5hMWMwN2YzNmE2
ZjhmZmZjZDc2MDM4ZGQ2Y2VhY2JjYTY0N2ViMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTU5LDE1ICsxNTksMTUgQEAgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
TmV0d29ya1Nlc3Npb24mIG4KICAgICAKICAgICBwb3N0VGFzayhbdGhpcywgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNv
bGF0ZWRDb3B5KCksIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RdIHsKICAgICAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNJVFBEYXRhYmFzZUVuYWJsZWQo
KSkgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVl
dWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwog
Ci0gICAgICAgICAgICBhdXRvIG1lbW9yeVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hv
dWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
PigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KTsKKyAgICAgICAgICAgIGF1dG8gbWVtb3J5U3RvcmUgPSBtYWtlVW5pcXVlPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVl
LCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKKyAgICAgICAgICAgIGF1dG8gcGVyc2lzdGVudFN0
b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+
KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOwogCiAgICAgICAgICAgICBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlLmdldCgpKS5wb3B1bGF0ZUZyb21NZW1v
cnlTdG9yZSgqbWVtb3J5U3RvcmUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9z
dGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0KTsKLSAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRp
c3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAg
ICBtX3N0YXRpc3RpY3NTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QpOworICAgICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFnZSA9IG1ha2VVbmlxdWU8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1
ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIEZJWE1FKDE5MzI5Nyk6IFRoaXMgc2hvdWxkIGJlIHJldmlzZWQgYWZ0ZXIgdGhlIFVJ
UHJvY2VzcyB2ZXJzaW9uIGdvZXMgYXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDYwNWFlZjNlNmVl
OTUwZjM5NDgzZmNkOGNjNGQ4ZTY1OGUwMmNmMGMuLmJiZTM5ODQ3NTJiZTE0NjA1MGQ1MDM1NzEz
NzE1NTBmYjJjYjYzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBXZWJDb29raWVNYW5h
Z2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXZWJDb29raWVNYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBXZWJDb29raWVNYW5h
Z2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlci5oCmluZGV4IGRjNzllZWJjZjE4ZGJmNjdiNDY0YzM1ODYxMGZiM2NlN2Nm
ZTkwY2MuLmY5MGYwZmNiNDE5MDI0YjhhOTVmNTc3MGM5Yjc5OTdiNTc4NGIzMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCkBAIC02Myw2ICs2
Myw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOwogCiBjbGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJs
aWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CkBAIC03OCw2ICs3OSw3
IEBAIGNsYXNzIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJv
Y2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICBz
dHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0RhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdSZWZQdHI8
R1Rhc2s+JiYsIFdlYktpdFNvdXBSZXF1ZXN0R2VuZXJpYyopOwogICAgICAgICB+V2ViU291cFJl
cXVlc3RBc3luY0RhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKaW5kZXggMmM0ZDJmZjk0ODA5YzQy
YTYxMTY3M2I1ZmI1Y2FkYmZhNTkxNjA0ZS4uYzliMGMzYjIxNTdhZDhhZWJlNzQ2ZjRmMzlmYjVl
ZmNkNzVlNzE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0
b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIEN1
c3RvbVByb3RvY29sUmVxdWVzdENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWNDbGllbnQKICAgICAgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjdXN0b21Qcm90b2NvbElEID0gY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChzdGQ6Om1ha2VfdW5pcXVlPExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KFdURk1vdmUo
dGFzayksIHJlcXVlc3QpKTsKKyAgICAgICAgYXV0byBjdXN0b21Qcm90b2NvbElEID0gY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Qcm90b2NvbChtYWtlVW5pcXVlPExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KFdURk1vdmUodGFzayks
IHJlcXVlc3QpKTsKICAgICAgICAgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zdGFydExvYWRpbmco
Y3VzdG9tUHJvdG9jb2xJRCwgd2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0UmVxdWVzdChyZXF1
ZXN0KSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGY0ZDc1ZDlkZDMxODIw
MDQ0OWEyYWIyZTU4ZTg4NjMxMjBjNzc3NDQuLjUwN2Y0ZjZmZmMzZDQwNjljMTM3ODI2NTI3NWM2
NjA2NTRiNGM4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lk
IERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IERvd25sb2FkSUQgZG93bmxvYQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNl
cyA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLmZp
bGVzSW5CbG9iKHJlcXVlc3QudXJsKCkpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAKLSAgICBtX3Bl
bmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rv
d25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFt
ZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgbWFrZVVuaXF1ZTxQ
ZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxv
YWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwg
JmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLCBzdWdn
ZXN0ZWROYW1lKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURv
d25sb2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9h
ZD4mJiBkb3dubG9hZCkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6Ondp
bGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHcK
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25s
b2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmIG5ldHdvcmtM
b2FkLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiBibG9iRmlsZVJlZmVy
ZW5jZXMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdEb3dubG9hZHMuY29udGFp
bnMoZG93bmxvYWRJRCkpOwotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwg
c3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUobmV0d29ya0xvYWQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICBt
X3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25s
b2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZN
b3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25sb2FkSUQs
IHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51
ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwg
U3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIERvd25sb2FkSUQgZG93bmxvCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAjZWxzZQotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERv
d25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKKyAgICBhdXRv
IGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxw
dHIsIHNlc3Npb25JRCk7CiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgs
IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIEFTU0VSVCghbV9kb3dubG9h
ZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCmluZGV4IGE4ODRhY2IyOTVkNDJj
ZTkzZTIxYmFjNDMzMDg0ZDdiYmM0MzNlNjUuLmFlM2NhN2UwZTRlZTdlYzg1ZGVhMmUzMDllMWQz
YzIwYjc0OTY1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRG93bmxvYWRNYXA6
OkRvd25sb2FkTWFwVHlwZTo6QWRkUmVzdWx0IERvd25sb2FkTWFwOjphZGQoRG93bmxvYWRJRCBk
b3dubG9hZElELAogICAgIGF1dG8gcmVzdWx0ID0gbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQs
IFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBpZiAobV9kb3dubG9hZHMuc2l6ZSgpID09IDEpIHsK
ICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkQXNzZXJ0aW9uKTsKLSAgICAgICAgbV9kb3dubG9h
ZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0cGlkKCks
ICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2lu
Zyk7CisgICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVu
Ym91bmRlZE5ldHdvcmtpbmcpOwogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lv
biwgIlRvb2sgJ1dlYktpdCBkb3dubG9hZHMnIGFzc2VydGlvbiBpbiBOZXR3b3JrUHJvY2VzcyIp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKaW5kZXggYTI3ODI4ZDdhOGJkODRhN2FlMzc3
MTY4Njc4NjkxYzc2N2YyNzk2ZC4uNTkxMjNmMmM0OGYxYzFlNDE3OWJiMWQ1YmNlMTU3MGM2Yjc1
NGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFBlbmRpbmdEb3dubG9hZDo6UGVu
ZGluZ0Rvd25sb2FkKElQQzo6Q29ubmVjdGlvbiogcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24sIE5l
dHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
TmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBs
KiBibG9iUmVnaXN0cnksIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKLSAgICA6IG1fbmV0
d29ya0xvYWQoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdpc3Ry
eSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQorICAgIDogbV9uZXR3b3Jr
TG9hZChtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgYmxvYlJlZ2lzdHJ5LCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBuZXR3b3JrU2Vzc2lvbikpCiAgICAgLCBtX3BhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKQogewogICAgIG1faXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMgPSBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0g
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDFmMTAwNGUxYjViY2QzOWQ4YjEyMmRmOGM2ZGE0
OGQxMzdjNGJlNjEuLjMwMWRiZTM3ODMwMTY3OTJhYzEzNWQzMGU2OTgxMjBiYTAyMGIwZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC05MDMsNyArOTAzLDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQogdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vz
c2lvbihzZXNzaW9uSUQpOwotICAgIGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVj
dGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVl
PFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5l
Y3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CiAgICAgCiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmlkZW50aWZp
ZXIoKTsKICAgICBMT0coU2VydmljZVdvcmtlciwgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24gLSAlcyIsIHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0
TWFuYWdlci5jcHAKaW5kZXggNDQ0MjBmZjVmZjIyOTliZTM3NTRjZTM3Y2RkYzdlZTYxNjJlMTkz
MS4uNTQzNTI4MjhlNjg3MjFhZjBiYWRlMGMwMjc1YmUyZjA5NWExNjYwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBOZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlcjo6Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kKFVzZXJDb250ZW50Q29udHJv
bGwKIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRlbnRSdWxlTGlz
dHMoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4mJiBjb250ZW50
UnVsZUxpc3RzKQogewogICAgIGF1dG8mIGJhY2tlbmQgPSAqbV9jb250ZW50RXh0ZW5zaW9uQmFj
a2VuZHMuZW5zdXJlKGlkZW50aWZpZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lv
bnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKICAgICBmb3IgKGF1dG8mJiBjb250ZW50UnVsZUxpc3QgOiBjb250ZW50UnVsZUxpc3RzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tC
bG9iLmNwcAppbmRleCA4NTZjYTFmMDk1ZTEwM2M1NDJhZDRlNDMwMDBiY2I3MGZmMWZiMzA3Li44
YTZjNWExZjIxOGQzYzlhYjIxMDRkZjA5NDY5MmNjM2Y2NTUyMjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHdlYktpdEJsb2JSZXNvdXJjZURv
bWFpbiA9ICJXZWJLaXRCbG9iUmVzb3VyY2UiOwogCiBOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3
b3JrRGF0YVRhc2tCbG9iKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBCbG9iUmVnaXN0cnlJbXBs
JiBibG9iUmVnaXN0cnksIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50
U25pZmYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNl
Pj4mIGZpbGVSZWZlcmVuY2VzKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVu
dCwgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBmYWxzZSwgZmFs
c2UpCi0gICAgLCBtX3N0cmVhbShzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRo
aXMpKQorICAgICwgbV9zdHJlYW0obWFrZVVuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkK
ICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoZmlsZVJlZmVyZW5jZXMpCiAgICAgLCBtX25ldHdvcmtQ
cm9jZXNzKHNlc3Npb24ubmV0d29ya1Byb2Nlc3MoKSkKIHsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKICAgICB9CiAKICAgICBhdXRvJiBk
b3dubG9hZE1hbmFnZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKTsKLSAg
ICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5h
Z2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwg
c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93
bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vz
c2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgIGF1dG8qIGRvd25s
b2FkUHRyID0gZG93bmxvYWQuZ2V0KCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVj
YW1lRG93bmxvYWRUYXNrKG1fcGVuZGluZ0Rvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsK
ICAgICBkb3dubG9hZFB0ci0+ZGlkQ3JlYXRlRGVzdGluYXRpb24obV9wZW5kaW5nRG93bmxvYWRM
b2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCmluZGV4IGY2NTQyOTU4YjQ3MTAzZDM4MWY4
Y2M1MzcwZDlkNmI1OTRkYzExNmMuLjE5MzI2ZjJmNDdkYzlmNGY2MjI4YTRjOWFhODRmNmM5ZmFh
YmI3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIE5ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX2RhdGFiYXNlID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4oKTsKKyAgICAgICAgbV9kYXRhYmFzZSA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgICAgIGJvb2wgaXNE
YXRhYmFzZU9wZW4gPSBtX2RhdGFiYXNlLT5vcGVuKHBhdGgsIFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlOjpPcGVuTW9kZTo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIWlzRGF0YWJhc2VPcGVuKSB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04MCw3ICs4MCw3IEBAIE5ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiAgICAgICAgIC8vIFNpbmNl
IHdlIGFyZSB1c2luZyBhIHdvcmtlclF1ZXVlLCB0aGUgc2VxdWVudGlhbCBkaXNwYXRjaCBibG9j
a3MgbWF5IGJlIGNhbGxlZCBieSBkaWZmZXJlbnQgdGhyZWFkcy4KICAgICAgICAgbV9kYXRhYmFz
ZS0+ZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwogCi0gICAgICAgIG1fc3RhdGVtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KCptX2RhdGFiYXNlLCBodHRw
c1VwZ3JhZGVDaGVja2VyUXVlcnkpOworICAgICAgICBtX3N0YXRlbWVudCA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tl
clF1ZXJ5KTsKICAgICAgICAgaW50IGlzU3RhdGVtZW50UHJlcGFyZWQgPSAobV9zdGF0ZW1lbnQt
PnByZXBhcmUoKSA9PSBTUUxJVEVfT0spOwogICAgICAgICBBU1NFUlQoaXNTdGF0ZW1lbnRQcmVw
YXJlZCk7CiAgICAgICAgIGlmICghaXNTdGF0ZW1lbnRQcmVwYXJlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
aAppbmRleCBkY2Q0NmE2MDFiZTYzMDk4NmZjMmFlMGMxYzk2NTU4Yzk1OTIyMDhhLi41MWQyMDMx
NGVhYTQ5ZTk2YTQxYTU3Y2U4ZDQyMjI2YmJmYjA3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCkBA
IC00Miw2ICs0Miw3IEBAIGNsYXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKICAgICB+
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggOTEwN2ZlYzFlMzRkYjQ0ODgxNjIyODY4NjIyYzhm
YmViNWIzODgzYy4uZWU4MGFjNmVhMWE3Nzk3NzNhMDcxMGUxNzg4NzA2Mzc2N2M1MTJiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTIxNSw3
ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZQogICAgIH0KIAogICAgIGlmIChtX2xv
YWRUaHJvdHRsZUxhdGVuY3kgPiAwX3MpIHsKLSAgICAgICAgbV90aHJvdHRsZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGhyb3R0bGU+KCp0aGlzLCBtX2xvYWRUaHJvdHRsZUxhdGVuY3ksIFdURk1vdmUo
cmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fdGhyb3R0
bGUgPSBtYWtlVW5pcXVlPFRocm90dGxlPigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBX
VEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggNDA5NzE0ZDY2NzI2YTg0NzRhZmYyOWExNjA4MTdm
MjQ3OTY3YjAxNi4uZTFhZTAwYmQ5ZDk1NDc3NzgxNzQzOTg1ZGYwNzNhOGIxY2QyNTM3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NP
UlNSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0CiAgICAgICAg
IG1fZnJhbWVJRCwKICAgICAgICAgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeQogICAgIH07Ci0g
ICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgW3RoaXMsIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgaXNSZWRp
cmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgbV9j
b3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX3Nob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3Zl
KHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgaXNSZWRpcmVjdGVkID0gaXNS
ZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0IC0gbWFrZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQgcHJlZmxpZ2h0IGNvbXBsZXRlLCBzdWNjZXNz
OiAlZCBmb3JSZWRpcmVjdD8gJWQiLCBlcnJvci5pc051bGwoKSwgaXNSZWRpcmVjdGVkKTsKIAog
ICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CkBAIC00NDYsNyArNDQ2LDcgQEAgQ29udGVu
dFNlY3VyaXR5UG9saWN5KiBOZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRTZWN1cml0eVBvbGljeSAmJiBtX2NzcFJlc3BvbnNl
SGVhZGVycykgewogICAgICAgICAvLyBGSVhNRTogUGFzcyB0aGUgVVJMIG9mIHRoZSBwcm90ZWN0
ZWQgcmVzb3VyY2UgaW5zdGVhZCBvZiBpdHMgb3JpZ2luLgotICAgICAgICBtX2NvbnRlbnRTZWN1
cml0eVBvbGljeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwg
eyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJpbmcoKSB9KTsKKyAgICAgICAgbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJM
IHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7CiAgICAgICAgIG1fY29udGVudFNlY3VyaXR5
UG9saWN5LT5kaWRSZWNlaXZlSGVhZGVycygqbV9jc3BSZXNwb25zZUhlYWRlcnMsIFN0cmluZyB7
IG1fcmVmZXJyZXIgfSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRQYXJzaW5nRXJyb3Jz
OjpObyk7CiAgICAgfQogICAgIHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggZTgyMGIyOWMyMGY1MTlmYjVlM2RkODhhOGJlZjY0NjU0MDY4NmIwYi4uNGRjODI1NjQ2YjJi
Zjc3ZmJjYTkxN2M5NWMyN2I0ZTQ2ZjU1YjU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTUwMyw5ICs1MDMsOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAgICAgICAgIGNv
b2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3Jh
Z2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIG1f
ZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
LCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBtX2RlZmF1
bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShz
ZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkgfHwgVVNF
KFNPVVApCi0gICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpOworICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKTsKICNlbmRpZgogfQogCkBAIC01MzUsOSArNTM1LDkgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENG
KF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Np
b25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwor
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29r
aWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCi0gICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihzZXNzaW9uSUQpOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCkBAIC0yNDUz
LDcgKzI0NTMsNyBAQCBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm90LCB0
aGVuIHdoZXJlIGRpZCB0aGlzIFBBTDo6U2Vzc2lvbklEIGNvbWUgZnJvbT8KICAgICAgICAgQVNT
RVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpIHx8ICFwYXRoLmlzRW1wdHkoKSk7CiAgICAgICAg
IAotICAgICAgICBhdXRvIHZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlcj4obWFrZVVu
aXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQpOwor
ICAgICAgICBhdXRvIHZhbHVlID0gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxX
ZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQpOwogICAgICAgICBp
ZiAobV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KQog
ICAgICAgICAgICAgdmFsdWUtPmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXkoKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwpAQCAtMjU2NSw2ICsyNTY1LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IENsaWVudE8KIH0KIAogY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVF1b3RhVXNlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUXVvdGFVc2VySW5pdGlhbGl6ZXIo
U3RvcmFnZVF1b3RhTWFuYWdlciYgbWFuYWdlcikKICAgICAgICAgOiBtX21hbmFnZXIobWFrZVdl
YWtQdHIobWFuYWdlcikpCkBAIC0yNTk5LDcgKzI2MDAsNyBAQCBjbGFzcyBRdW90YVVzZXJJbml0
aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFVc2VyIHsKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMoU3RvcmFnZVF1b3RhTWFuYWdl
ciYgbWFuYWdlciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbikKIHsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgb3JpZ2luLCB1c2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxRdW90YVVzZXJJbml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJsZSB7CisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBzZXNzaW9uSUQsIG9yaWdpbiwgdXNlciA9IG1ha2VVbmlxdWU8UXVvdGFVc2VySW5pdGlh
bGl6ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLT5pZGJTZXJ2ZXIoc2Vzc2lvbklEKS5pbml0
aWFsaXplUXVvdGFVc2VyKG9yaWdpbik7CkBAIC0yNjEzLDcgKzI2MTQsNyBAQCBTdG9yYWdlUXVv
dGFNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSQogICAgICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcnMgeyB9Owog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4gKnN0b3JhZ2VRdW90YU1hbmFnZXJz
Lm1hbmFnZXJzUGVyT3JpZ2luKCkuZW5zdXJlKG9yaWdpbiwgW3RoaXMsICZzdG9yYWdlUXVvdGFN
YW5hZ2Vycywgc2Vzc2lvbklELCAmb3JpZ2luXSB7Ci0gICAgICAgIGF1dG8gbWFuYWdlciA9IHN0
ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFuYWdlcnMu
ZGVmYXVsdFF1b3RhKG9yaWdpbiksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0odWludDY0X3Qg
cXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0
byBjYWxsYmFjaykgeworICAgICAgICBhdXRvIG1hbmFnZXIgPSBtYWtlVW5pcXVlPFN0b3JhZ2VR
dW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBb
dGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50
U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAg
ICAgIHRoaXMtPnJlcXVlc3RTdG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIHF1b3RhLCBj
dXJyZW50U3BhY2UsIHNwYWNlSW5jcmVhc2UsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAg
fSk7CiAgICAgICAgIGluaXRpYWxpemVRdW90YVVzZXJzKCptYW5hZ2VyLCBzZXNzaW9uSUQsIG9y
aWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
aW5kZXggMWJlYjdiNjVkYjYzMGMzYjMyOGJiMTVjZmMzYjMxMTZiNGI5OTRkNi4uYTk1YTJkZTc5
ZWFkZGQ0ODA5NDM0NGJmN2NhMjY2Y2RiM2Y3NmQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIE5l
dHdvcmtQcm9jZXNzIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRN
YW5hZ2VyOjpDbGllbnQsCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRT
dXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1l
bnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVt
ZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAg
IH0KIAogICAgIHZvaWQgcmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NzgyZWYxNWYzZGVl
ZTVhZjRlYWVmMDVjZGY2MDM2YWU3ZTZkMmZiLi44YzMzZmI4NjBhZDdhNzg3MzZlNGI4ZmJhZGYy
MGM3NzU1MzI5ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBwYXIKIAogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5IHx8IHBhcmFtZXRlcnMu
c2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgfHwgcGFyYW1ldGVycy5vcHRpb25zLmtl
ZXBBbGl2ZSkgewogICAgICAgICBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlIHJlcXVlc3RM
b2FkVHlwZSA9IGlzTWFpbkZyYW1lTG9hZCgpID8gTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlw
ZTo6TWFpbkZyYW1lIDogTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZTo6T3RoZXI7Ci0gICAg
ICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZENo
ZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJh
bWV0ZXJzLm9wdGlvbnMgfSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFt
ZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVz
dC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0
ZXJzLnByZWZsaWdodFBvbGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1f
cGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpLCByZXF1ZXN0TG9hZFR5cGUpOworICAgICAgICBtX25ldHdvcmtMb2Fk
Q2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdv
cmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFy
YW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJz
LnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9y
aWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVz
dExvYWRUeXBlKTsKICAgICAgICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMp
CiAgICAgICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJz
KENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IG1fcGFyYW1ldGVycy5jc3BS
ZXNwb25zZUhlYWRlcnMudmFsdWUoKSB9KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQpAQCAtMTE5LDcgKzExOSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291
cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAjZW5kaWYKICAg
ICB9CiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkpCi0gICAgICAgIG1fc3luY2hyb25vdXNMb2Fk
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5j
aHJvbm91c1JlcGx5KSk7CisgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IG1ha2VVbmlx
dWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7CiB9CiAK
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6fk5ldHdvcmtSZXNvdXJjZUxvYWRlcigpCkBAIC0zMTgs
NyArMzE4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgcGFyYW1ldGVycy5i
bG9iRmlsZVJlZmVyZW5jZXMgPSBuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJ
bkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkpOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1
ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdU
Rk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9
IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdp
c3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVz
Y3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25l
dHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDUwNmU3ZmYwOGZiYzlh
NzY0ZWE4MzAzMDk0YjZkMzA2NzRhM2YzYTQuLjMzNWIxOWJmYjA5MDUwYTdmYmFkMzMzODQ3YjFj
NGY1MmNjYzYwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKQEAgLTY1LDYgKzY1LDcgQEAgY2xhc3MgQ2FjaGU7CiB9CiAKIGNsYXNzIE5ldHdv
cmtTZXNzaW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdmlydHVhbCB+TmV0d29ya1Nlc3Npb24oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hh
bm5lbC5jcHAKaW5kZXggMDRlM2QwMjUyMjBkZTRjNDNjNzM2MmRhMTQxZGYzMmJhMjAzMGZhZi4u
NTkxODg1NzU3YTg0NzUxYzgzMThmN2JlNWQyNzVhN2YxMWM1YTRhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gTmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZShOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0aW9uLm5l
dHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwgcHJvdG9j
b2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3b3JrU29j
a2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKTsKICAg
ICBpZiAoIXJlc3VsdC0+bV9zb2NrZXQpIHsKICAgICAgICAgcmVzdWx0LT5kaWRDbG9zZSgwLCAi
Q2Fubm90IGNyZWF0ZSBhIHdlYiBzb2NrZXQgdGFzayJfcyk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0
Q2hhbm5lbC5oCmluZGV4IDY3MmIzNzgxYTRkNGEzNGI5YzFlMWUyNDE1YmQ0OTEwZTc3OWVkNzEu
LjlkZjlhYWNkY2IzMzJlMDQxZGI2OWJkMDY4MTAyMjljZjhiYjRlOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsK
IAogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVy
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENo
YW5uZWw+IGNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFBBTDo6U2Vzc2lv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCB1aW50NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCBkOTBjY2NhOTgwYThlZmZjMmQ0ZjM4ZjVl
M2Y2YmMwYWEyYzJlNTQ2Li4yYzY0MjdlNjQ4MjJjZWY1ZDFhODEyMDI1ZWZkNmM4NTQ1NDFjZTg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNw
cApAQCAtNTMsNyArNTMsNyBAQCBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrTG9hZFBhcmFtZQogICAgIH0KIAogICAg
IEFTU0VSVChwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RPbmx5
OjpZZXMpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2Fk
PigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsK
KyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxw
dHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBtX3RpbWVv
dXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IDNhNTlmZmE2YTFhMDhkNjNkZTViZmY1OWUz
ZjY5NDZmMGU0MDhlYjQuLjA0Nzk5MjA4OTZkYTI1N2ZjNTg2NDUxNjBjMDAwOWQxNjRjZTVmZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0z
NCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0VGFzayB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB1aW50
NjRfdCBUYXNrSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5k
ZXggYmY1MTU3OGZiMTQ3ZGRkYzg3ZTY2ZDkwYTVlZGQwMmE0Y2Q3MjY5My4uY2M4Nzg0ZDQyODNh
NjI1ZmMwZTFkOWVmYWE1MjcwNTIzYWM3MTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2No
ZWR1bGVEYXRhYmFzZVVwZGF0ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9kaXNh
YmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSkKLSAgICAgICAg
bV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsKKyAgICAgICAgbV9k
aXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSA9IG1ha2VV
bmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsKIAogICAgIG1fZGlkU2NoZWR1bGVE
YXRhYmFzZVVwZGF0ZSA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAzZTlkMTdkNjAyZDM0MTc3MDMzYzkz
MzhiNGJiZTZkYTBiYWJhOGE0Li5iMDgzZDVkMzJhNTFlNjFkYTQzNzZkZjk0NDZlZjExMTRlYTZi
ZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCkBAIC04NCwxNyArODQsMTcgQEAgQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVmPFN0b3JhZ2U+JiYgc3RvcmFnZSwgT3B0aW9uU2V0PEMK
IHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAg
ICAgaWYgKG9wdGlvbnMuY29udGFpbnMoQ2FjaGVPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKSkgewotICAgICAgICBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1v
ZGVFbmFibGVkKSB7CisgICAgICAgIG1fbG93UG93ZXJNb2RlTm90aWZpZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9k
ZUVuYWJsZWQpIHsKICAgICAgICAgICAgIEFTU0VSVChXVEY6OlJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICAgICAgICAgIGlmIChpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpCiAgICAgICAgICAgICAgICAg
bV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgIEFTU0VSVCghbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKTsKLSAgICAg
ICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOworICAgICAgICAg
ICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0pOwogICAgICAgICBpZiAoIW1fbG93UG93ZXJNb2RlTm90aWZpZXItPmlzTG93UG93ZXJN
b2RlRW5hYmxlZCgpKQotICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdl
dCgpKTsKKyAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IG1ha2VVbmlxdWU8
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CiAgICAgfQog
I2VuZGlmCiAKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmll
dmUoUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAg
ICAgCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURh
dGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShy
ZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVj
dFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5
PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSks
IFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5k
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVl
c3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShy
ZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlp
bmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
LCByZXF1ZXN0LCByZXNwb25zZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtl
Q2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNv
bGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9k
eSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6OnVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IGV4
aXN0aW5nRW50cnkucmVzcG9uc2UoKTsKICAgICBXZWJDb3JlOjp1cGRhdGVSZXNwb25zZUhlYWRl
cnNBZnRlclJldmFsaWRhdGlvbihyZXNwb25zZSwgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIAotICAg
IGF1dG8gdXBkYXRlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihleGlzdGluZ0VudHJ5
LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRyeS5idWZmZXIoKSwgV2ViQ29yZTo6Y29sbGVj
dFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgYXV0byB1cGRhdGVFbnRy
eSA9IG1ha2VVbmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnkua2V5KCksIHJlc3BvbnNlLCBleGlz
dGluZ0VudHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIG9yaWdpbmFsUmVxdWVz
dCwgcmVzcG9uc2UpKTsKICAgICBhdXRvIHVwZGF0ZVJlY29yZCA9IHVwZGF0ZUVudHJ5LT5lbmNv
ZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAogICAgIG1fc3RvcmFnZS0+c3RvcmUodXBkYXRlUmVjb3Jk
LCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCA3YWUxYzJmZTdkY2U2MDdiOWY4YTUzZDk5YTFi
ZDc5ODUzOTliY2YxLi4xZjQxNDRhOGZhZTg3YmY1ZmM1YzgzZWQ5MDJiNmZmMDhhMDY0YWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRy
eTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3Jh
Z2VFbnRyeSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oc3Rv
cmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxFbnRyeT4oc3RvcmFnZUVu
dHJ5KTsKIAogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50
cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRlci5zaXplKCkpOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fcmVzcG9uc2UpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCmluZGV4IDk0YjYwNjhhMGRmZWQ3NDJmYWZmZGU1NzY4ODcwNWFlN2E0NjIw
MWIuLmJiOTdjN2EzZjI3NjE3NmQwOWZmNDgzNWIyZjNiOTdlZjJlNThmYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU3BlY3VsYXRpdmVM
b2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBn
bG9iYWxGcmFtZUkKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRl
bnRTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7CiAgICAgcGFyYW1ldGVycy5jb250
ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
OjpTbmlmZjsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKLSAg
ICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51
bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpjYWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdv
cmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKKyAgICBtX25l
dHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1v
dmUocGFyYW1ldGVycyksICpjYWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKIH0KIAogU3BlY3VsYXRpdmVMb2Fk
Ojp+U3BlY3VsYXRpdmVMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIuY3BwCmluZGV4IDFjZDZiNDkyZjgxYTVhODFkMjRjYTc5MTA4ZGE2YjE5ZTBjMDAz
ZjEuLjU3ZThlNzU5OWIxY2NhNjViMjZlMDZlYzM4NzJlZTJkZDk0OWRmNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApAQCAtMTc0LDcgKzE3NCw3
IEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxvYWQgOiBwdWJs
aWMgUmVmQ291bnRlZDxQZW5kaW5nRnJhbWVMCiAgICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNl
TG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgc3VicmVzb3Vy
Y2VLZXkpCiAgICAgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAg
ICBtX3N1YnJlc291cmNlTG9hZHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U3VicmVzb3VyY2VM
b2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkpOworICAgICAgICBtX3N1YnJlc291cmNlTG9h
ZHMuYXBwZW5kKG1ha2VVbmlxdWU8U3VicmVzb3VyY2VMb2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJj
ZUtleSkpOwogICAgICAgICBtX2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkuaW1wdWxzZSgpOwogICAg
IH0KIApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0
cmlldmUoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBSZXRyaWV2ZUNvbXBsZXRpb25ICiAgICAgQVNT
RVJUKG1fcGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5zKHN0b3JhZ2VLZXkpKTsKICAgICAvLyBGSVhN
RTogVGhpcyBicmVha3MgaW5jcmVtZW50YWwgbG9hZGluZyB3aGVuIHRoZSByZXZhbGlkYXRpb24g
aXMgbm90IHN1Y2Nlc3NmdWwuCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXRyaWV2
ZVJlcXVlc3RzLmVuc3VyZShzdG9yYWdlS2V5LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+PigpOwog
ICAgIH0pOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVu
dHJ5LCBjb24KICAgICBBU1NFUlQoZW50cnkpOwogICAgIEFTU0VSVCghZW50cnktPm5lZWRzVmFs
aWRhdGlvbigpKTsKICAgICBhdXRvIGtleSA9IGVudHJ5LT5rZXkoKTsKLSAgICBtX3ByZWxvYWRl
ZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkZWRFbnRyeT4oV1RGTW92
ZShlbnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlzLCBrZXksIGZyYW1l
SURdIHsKKyAgICBtX3ByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgbWFrZVVuaXF1ZTxQcmVsb2Fk
ZWRFbnRyeT4oV1RGTW92ZShlbnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0
aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgYXV0byBwcmVsb2FkZWRFbnRyeSA9IG1fcHJl
bG9hZGVkRW50cmllcy50YWtlKGtleSk7CiAgICAgICAgIEFTU0VSVChwcmVsb2FkZWRFbnRyeSk7
CiAgICAgICAgIGlmIChwcmVsb2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSkKQEAgLTQ0OSw3
ICs0NDksNyBAQCBib29sIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVx
dWVzdHMoY29uc3QgS2V5JiBrZXksIEVudHJ5KiBlbnRyeQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBmb3IgKGF1dG8mIGNvbXBsZXRpb25IYW5kbGVyIDogKmNvbXBsZXRpb25IYW5kbGVy
cykKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkgPyBzdGQ6Om1ha2VfdW5pcXVlPEVu
dHJ5PigqZW50cnkpIDogbnVsbHB0cik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVudHJ5
ID8gbWFrZVVuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6IG51bGxwdHIpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXMKIAogICAg
IExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3Mp
IFNwZWN1bGF0aXZlbHkgcmV2YWxpZGF0aW5nICclcyc6Iiwga2V5LmlkZW50aWZpZXIoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gcmV2YWxpZGF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
ZWN1bGF0aXZlTG9hZD4obV9jYWNoZSwgZnJhbWVJRCwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgV1RG
TW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlvblJlcXVlc3QsIGZyYW1lSURdKHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgeworICAgIGF1dG8gcmV2YWxp
ZGF0b3IgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4obV9jYWNoZSwgZnJhbWVJRCwgcmV2
YWxpZGF0aW9uUmVxdWVzdCwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlv
blJlcXVlc3QsIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRy
eSkgewogICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgIXJldmFsaWRhdGVkRW50
cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5
IHx8IHJldmFsaWRhdGVkRW50cnktPmtleSgpID09IGtleSk7CiAKQEAgLTU1OSw3ICs1NTksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24oY29uc3QgR2xvYmFsRnJhbWVJRCYgZgogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwg
c3VicmVzb3VyY2VJbmZvLCBmcmFtZUlEKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBM
T0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBO
b3QgcHJlbG9hZGluZyAnJXMnIGJlY2F1c2UgaXQgaXMgbWFya2VkIGFzIHRyYW5zaWVudCIsIGtl
eS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX25vdFByZWxvYWRl
ZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywg
a2V5LCBmcmFtZUlEXSB7CisgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMuYWRkKGtl
eSwgbWFrZVVuaXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAg
ICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UobV9jYWNo
ZS5uZXR3b3JrUHJvY2VzcygpLCBmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5
UmlnaHRseU5vdFdhcm1lZFVwS2V5KCkpOwogICAgICAgICAgICAgICAgIG1fbm90UHJlbG9hZGVk
RW50cmllcy5yZW1vdmUoa2V5KTsKICAgICAgICAgICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
CmluZGV4IGJiZmM2NDk4OTBmOTVjYzdlMDRjZTgyYTRmZTMyOTQ0ZGMxYWIxZjAuLjgwNGM0Mjk4
Y2MzZTNjMjgxNGZkYmMyYmJiNmNiZWU1NzU4NGFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApA
QCAtMjkwLDggKzI5MCw4IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgIExPRyhO
ZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBzeW5jaHJvbml6aW5nIGNhY2hl
Iik7CiAKICAgICBiYWNrZ3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFibGUgewotICAgICAgICBhdXRvIHJlY29yZEZp
bHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7Ci0gICAgICAgIGF1dG8g
YmxvYkZpbHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAg
IGF1dG8gcmVjb3JkRmlsdGVyID0gbWFrZVVuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAg
ICAgYXV0byBibG9iRmlsdGVyID0gbWFrZVVuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKIAogICAg
ICAgICAvLyBNb3N0IG9mIHRoZSBkaXNrIHNwYWNlIHVzYWdlIGlzIGluIGJsb2JzIGlmIHdlIGFy
ZSB1c2luZyB0aGVtLiBBcHByb3hpbWF0ZSByZWNvcmRzIGZpbGUgc2l6ZXMgdG8gYXZvaWQgZXhw
ZW5zaXZlIHN0YXQoKSBjYWxscy4KICAgICAgICAgc2l6ZV90IHJlY29yZHNTaXplID0gMDsKQEAg
LTQ4OSw3ICs0ODksNyBAQCB2b2lkIFN0b3JhZ2U6OnJlYWRSZWNvcmQoUmVhZE9wZXJhdGlvbiYg
cmVhZE9wZXJhdGlvbiwgY29uc3QgRGF0YSYgcmVjb3JkRGF0YSkKICAgICB9CiAKICAgICByZWFk
T3BlcmF0aW9uLmV4cGVjdGVkQm9keUhhc2ggPSBtZXRhRGF0YS5ib2R5SGFzaDsKLSAgICByZWFk
T3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3Jk
PihTdG9yYWdlOjpSZWNvcmQgeworICAgIHJlYWRPcGVyYXRpb24ucmVzdWx0UmVjb3JkID0gbWFr
ZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJlY29yZCB7CiAgICAgICAgIG1ldGFE
YXRhLmtleSwKICAgICAgICAgbWV0YURhdGEudGltZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRh
LApAQCAtNzU4LDcgKzc1OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIHJldHJpZXZlRnJv
bU1lbW9yeShjb25zdCBUJiBvcGVyYXRpb25zLCBjb25zdCBLZXkmIGtleSwKICAgICAgICAgaWYg
KG9wZXJhdGlvbi0+cmVjb3JkLmtleSA9PSBrZXkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3Jr
Q2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBmb3VuZCB3cml0ZSBvcGVyYXRpb24gaW4g
cHJvZ3Jlc3MiKTsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVjb3Jk
ID0gb3BlcmF0aW9uLT5yZWNvcmQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihyZWNvcmQpLCB7IH0pOworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmlxdWU8U3RvcmFnZTo6UmVjb3Jk
PihyZWNvcmQpLCB7IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQpAQCAtODYyLDcgKzg2Miw3IEBAIHZvaWQgU3RvcmFnZTo6cmV0cmlldmUo
Y29uc3QgS2V5JiBrZXksIHVuc2lnbmVkIHByaW9yaXR5LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5k
CiAgICAgaWYgKHJldHJpZXZlRnJvbU1lbW9yeShtX2FjdGl2ZVdyaXRlT3BlcmF0aW9ucywga2V5
LCBjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVhZE9w
ZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZE9wZXJhdGlvbj4oKnRoaXMsIGtleSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gcmVhZE9wZXJhdGlvbiA9IG1ha2VV
bmlxdWU8UmVhZE9wZXJhdGlvbj4oKnRoaXMsIGtleSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogCiAgICAgcmVhZE9wZXJhdGlvbi0+dGltaW5ncy5zdGFydFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKICAgICByZWFkT3BlcmF0aW9uLT50aW1pbmdzLmRpc3BhdGNoQ291bnRBdFN0
YXJ0ID0gbV9yZWFkT3BlcmF0aW9uRGlzcGF0Y2hDb3VudDsKQEAgLTg3OSw3ICs4NzksNyBAQCB2
b2lkIFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBNYXBwZWRCb2R5SGFuZGxl
ciYmIG1hcHBlZEJvZHlIYW5kbGVyLAogICAgIGlmICghbV9jYXBhY2l0eSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVP
cGVyYXRpb24+KCp0aGlzLCByZWNvcmQsIFdURk1vdmUobWFwcGVkQm9keUhhbmRsZXIpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9IG1ha2VV
bmlxdWU8V3JpdGVPcGVyYXRpb24+KCp0aGlzLCByZWNvcmQsIFdURk1vdmUobWFwcGVkQm9keUhh
bmRsZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgbV9wZW5kaW5nV3JpdGVP
cGVyYXRpb25zLnByZXBlbmQoV1RGTW92ZSh3cml0ZU9wZXJhdGlvbikpOwogCiAgICAgLy8gQWRk
IGtleSB0byB0aGUgZmlsdGVyIGFscmVhZHkgaGVyZSBhcyB3ZSBkbyBsb29rdXBzIGZyb20gdGhl
IHBlbmRpbmcgb3BlcmF0aW9ucyB0b28uCkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBTdG9yYWdl
Ojp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZs
YWdzLCBUcmF2ZXIKICAgICBBU1NFUlQodHJhdmVyc2VIYW5kbGVyKTsKICAgICAvLyBBdm9pZCBu
b24tdGhyZWFkIHNhZmUgRnVuY3Rpb24gY29waWVzLgogCi0gICAgYXV0byB0cmF2ZXJzZU9wZXJh
dGlvblB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRo
aXMpLCB0eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKKyAgICBhdXRvIHRy
YXZlcnNlT3BlcmF0aW9uUHRyID0gbWFrZVVuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJl
ZigqdGhpcyksIHR5cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikpOwogICAgIGF1
dG8mIHRyYXZlcnNlT3BlcmF0aW9uID0gKnRyYXZlcnNlT3BlcmF0aW9uUHRyOwogICAgIG1fYWN0
aXZlVHJhdmVyc2VPcGVyYXRpb25zLmFkZChXVEZNb3ZlKHRyYXZlcnNlT3BlcmF0aW9uUHRyKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXggN2I4ODkyMjk5
NTM5ZGIzNGM1YjM5MTRkM2IyMTRjZThiODE0M2I5OC4uNjNhZDA0MDlmZGQyMzZmNmUzYzJjYTMw
ZTg3ZTRhN2MwYTI5NTkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5j
cHAKQEAgLTkzLDcgKzkzLDcgQEAgU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5Ojpl
bmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3Vy
Y2VzRW50cnk+IFN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0
b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQogewotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOworICAgIGF1dG8gZW50
cnkgPSBtYWtlVW5pcXVlPFN1YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0
YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShlbnRyeS0+bV9zdWJyZXNvdXJjZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5kZXggZDhhMDU5NDBkNzE5N2ViMzIy
NWEzNmJjNTEzYTJkYjYxMGRiMGNkOC4uNzEwNGQxZjc0Y2Q3MDFjYmNlY2ZhYjU3ZDI0ZWJmZjhk
YWViZWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Q
cmVmZXRjaENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuY3BwCkBAIC03Myw4ICs3Myw4IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRz
IGV4cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07CiB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNv
bnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1f
c2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
c2Vzc2lvblByZWZldGNoZXMtPmFkZChyZXF1ZXN0VXJsLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZl
dGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShidWZmZXIpKSk7Cisg
ICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01h
cD4oKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvblByZWZldGNoZXMtPmFkZChyZXF1
ZXN0VXJsLCBtYWtlVW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlc3BvbnNl
KSwgV1RGTW92ZShidWZmZXIpKSk7CiAgICAgLy8gTGltaXQgcHJlZmV0Y2hlcyBmb3Igc2FtZSB1
cmwgdG8gMS4KICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47
CkBAIC04Niw5ICs4Niw5IEBAIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiBy
ZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFByZWZldGNo
Q2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVkaXJlY3RSZXF1ZXN0KQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKLSAg
ICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hFbnRy
aWVzTWFwPigpOworICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVm
ZXRjaEVudHJpZXNNYXA+KCk7CiAgICAgcmVkaXJlY3RSZXF1ZXN0LmNsZWFyUHVycG9zZSgpOwot
ICAgIG1fc2Vzc2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0VXJsLCBzdGQ6Om1ha2VfdW5pcXVl
PFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3Zl
KHJlZGlyZWN0UmVxdWVzdCkpKTsKKyAgICBtX3Nlc3Npb25QcmVmZXRjaGVzLT5zZXQocmVxdWVz
dFVybCwgbWFrZVVuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZWRpcmVjdFJl
c3BvbnNlKSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpKSk7CiAgICAgbV9zZXNzaW9uRXhwaXJh
dGlvbkxpc3QuYXBwZW5kKHN0ZDo6bWFrZV90dXBsZShyZXF1ZXN0VXJsLCBXYWxsVGltZTo6bm93
KCkpKTsKICAgICBpZiAoIW1fZXhwaXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
ZXhwaXJhdGlvblRpbWVyLnN0YXJ0T25lU2hvdChleHBpcmF0aW9uVGltZW91dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4
IGExNzEwYmFlOWU1YTg4NTI2Y2VmYTNiMzlhYTc4OGZhYWYyY2ZhMGUuLmEyNTE1MjBiMzFlYWM5
MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNz
IFByZWZldGNoQ2FjaGUgewogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIHN0cnVjdCBFbnRyeSB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgRW50cnko
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCAwNzdmMTZmYTY1
MDY1MmM3ODdhNmYwMzE2MDkwOTAyNjhlYmI4YWMwLi5jY2UyNmFjZmIwNGNmNzA3NGU3NjNmNWJi
YzhlNGE1ZTk4YTE1YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIFJldGFpblB0
cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgp
IGNvbnN0CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Q
cm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpCiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlciYgTmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKIHsKICAg
ICBpZiAoIW1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpCi0gICAgICAgIG1fbmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyPigpOworICAgICAgICBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyID0gbWFrZVVu
aXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsKICAgICByZXR1cm4gKm1fbmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA0YTYxZGYx
NGRjZmYyZTZjM2QwZTA5MGVkM2U1MWNiNjAzMTVlNjQ0Li40Njg2ODkzNWM2YzY0MmMyMDQ4Mjg4
ZmJlMzg3OTAzYzAxMjgyMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC04MDIsNyArODAyLDcg
QEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihO
U1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEKICAgICAgICAgUmVmPE5ldHdvcmtEYXRhVGFza0Nv
Y29hPiBwcm90ZWN0ZWROZXR3b3JrRGF0YVRhc2soKm5ldHdvcmtEYXRhVGFzayk7CiAgICAgICAg
IGF1dG8gZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsK
ICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNz
KCkuZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93
bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2Vz
dGVkRmlsZW5hbWUoKSk7CisgICAgICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPFdlYktp
dDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBf
c2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9E
b3dubG9hZCgqZG93bmxvYWQpOwogICAgICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAg
ZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rv
d25sb2FkTG9jYXRpb24oKSk7CkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lv
bkNvY29hOjpzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6
OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4obmV0d29y
a1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5
ICpwcm94eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQ
cm94eSkKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNr
PiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTCiB7CiAg
ICAgLy8gRklYTUU6IFVzZSBwcm90b2NvbC4KICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uV2Vi
U29ja2V0VGFzaz4gdGFzayA9IFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuZ2V0KCkg
d2ViU29ja2V0VGFza1dpdGhSZXF1ZXN0OiByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpI
VFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIFdURk1vdmUodGFzaykpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIFdURk1vdmUodGFz
aykpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFkZFdlYlNvY2tldFRhc2soV2Vi
U29ja2V0VGFzayYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCmluZGV4IDkzN2UyODczMmJlNTc0MzI2MTY5
ZDg1NGRmNjRjMTUxM2UyYjY4YTMuLmY2Y2Q3YTkyOGI5NzM4ODE2YzM4OWE5NTdjOGE5MWRlOGMy
NWIyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2Vi
U29ja2V0VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9XZWJTb2NrZXRUYXNrQ29jb2EuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBOZXR3b3JrU2Vz
c2lvbjsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogCiBjbGFzcyBXZWJTb2NrZXRUYXNr
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNvY2tldFRhc2s+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRD
aGFubmVsJiwgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+JiYpOwogICAgIH5X
ZWJTb2NrZXRUYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCmluZGV4IGJlNjgwMWYzMGNkZjQ5MDAyNTRj
MjI0YjliMTFmYmRmNzNmZTJlMzEuLjViZTE3MDI2NmY0NWI4YmY3MmVmNTZiMTAwODdjYjU5YmI1
NmRiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrUHJvY2Vzc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
bGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAppbmRleCBk
NDcwOWE1ZTRhYzhhMmZiNmFjZWI1NmM1N2ViZjBiNWM3NDBkNDU2Li5lMThhNDM5MGIxODhhMjdl
OTMxOGM1MjQwNDU1ZjA2NGNmNmJkNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCkBAIC0zNSw3ICszNSw3IEBA
IGNsYXNzIE5ldHdvcmtTZXNzaW9uQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3Jl
YXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4o
bmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3Jr
U2Vzc2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25DdXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzSU9TLm1tCmluZGV4IDIzNzQ1Mjg4YTA2ZDAxMTQ1OTE5NjhiNTA4NmRlYjVm
NDVhYTBhYzYuLmM4Yjg2YzUxMTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9z
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IoKQogewogICAgIGlmICghbV9w
YXltZW50Q29vcmRpbmF0b3IpCi0gICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBt
X3BheW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcGF5bWVudENvb3JkaW5hdG9yOwogfQogCkBAIC04
Miw3ICs4Miw3IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uCiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmIGNvb3JkaW5hdG9yLCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJv
bGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1l
bnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRN
ZXNzYWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApp
bmRleCBkNDZjNTAzZDgxZTk4MzRlNWQyYTI1NjYwYzg3MjNlYWU3ZTE3MGVjLi40ZmFjYzgyMTNl
Zjg1MDVjZjlkNTQ4YjIzYzU2NmRkM2QwYmUwYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC04
OTcsNyArODk3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAg
bV9kb3dubG9hZE91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihHX09VVFBVVF9TVFJFQU0ob3V0cHV0
U3RyZWFtLmxlYWtSZWYoKSkpOwogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9zZXNz
aW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxv
YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGlu
Z0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxl
bmFtZSgpKTsKKyAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxv
YWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9u
SUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3du
bG9hZC5nZXQoKTsKICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRh
c2sobV9wZW5kaW5nRG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2Fk
UHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vz
c1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAKaW5kZXggODNjMmYyOGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFm
OS4uN2E3NDgxZjdkNDI1ZjAyMzM3YTBjMTBhZGY5ZDY1NGY3MGVjN2RkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3Jz
KGJvb2wgaWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCAzMGZjOGE1MzU1ZDA4
NDUyYWMzNjFiMWRjZWE5N2M4NGYzNjA3ZmVkLi40MDczNjFmMDM2ZTc5ODkxNzY3ZDgwN2ZiYjYz
YzkwNDRiMjYwYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNv
dXAoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJv
Y2VzcywgcGFyYW1ldGVycykKLSAgICAsIG1fbmV0d29ya1Nlc3Npb24oc3RkOjptYWtlX3VuaXF1
ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKKyAgICAsIG1fbmV0d29ya1Nlc3Np
b24obWFrZVVuaXF1ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKIHsKICAgICBh
dXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIEFTU0VS
VChzdG9yYWdlU2Vzc2lvbik7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3
b3JrU28KICAgICByZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpLCBi
bG9iUmVnaXN0cnkoKSk7CiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygid3NzIikp
CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cE1lc3NhZ2UuZ2V0KCksICJuZXR3b3JrLWV2
ZW50IiwgR19DQUxMQkFDSyh3ZWJTb2NrZXRNZXNzYWdlTmV0d29ya0V2ZW50Q2FsbGJhY2spLCBu
dWxscHRyKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFu
bmVsLCBzb3VwU2Vzc2lvbigpLCBzb3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNv
dXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5oCmluZGV4IGY5ZWY0YmI1NDMwYmJmNzNiMDRhMGUzYmVjMjQ3OTI4ZDU5ZTcxNmIu
LjQ2NmIyNzgyYmY5M2M3NzA3MGY3OTdkZDM2NTIzNGNjMWRlM2ZiMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25Tb3VwIGZpbmFsIDogcHVibGlj
IE5ldHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9j
ZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0
d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAg
ICAgfQogICAgIE5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvblNvdXAoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAppbmRleCA2ZGRjODFhMzZkODQ5Y2JjMjgz
NzkzYjYxNzA2N2EyN2UyOWQ5MWYwLi44NzQ1MjVlMzhjZTcwNGViZTFkYWE3MTBiYjU1YzAxY2Mw
NThlYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiBzdHJ1Y3QgQXN5bmNS
ZWFkRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEFzeW5j
UmVhZERhdGEoR1JlZlB0cjxHVGFzaz4mJiB0YXNrLCB2b2lkKiBidWZmZXIsIGdzaXplIGNvdW50
KQogICAgICAgICA6IHRhc2soV1RGTW92ZSh0YXNrKSkKICAgICAgICAgLCBidWZmZXIoYnVmZmVy
KQpAQCAtMzksNiArNDAsNyBAQCBzdHJ1Y3QgQXN5bmNSZWFkRGF0YSB7CiB9OwogCiBzdHJ1Y3Qg
X1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgdWludDY0X3QgY29udGVudExlbmd0aDsKICAgICB1aW50
NjRfdCBieXRlc1JlY2VpdmVkOwogICAgIHVpbnQ2NF90IGJ5dGVzUmVhZDsKQEAgLTk5LDcgKzEw
MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMo
R0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgdm9pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFz
eW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291bnQpOworICAgIHN0cmVhbS0+
cHJpdi0+cGVuZGluZ0FzeW5jUmVhZCA9IG1ha2VVbmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92
ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7CiB9CiAKIHN0YXRpYyBnc3NpemUgd2Via2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbVJlYWRGaW5pc2goR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIEdFcnJvcioqIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBkYTg3NjEx
MDY0ODFmOTZhOWQ2YTAwMDE4NGNjZDI0MDdiMWYyNjUwLi41ZWY3YjQ4ZTQyMDgzOWVlZjgwMDgx
MWIwZDk3NDBmNDRlMDFmMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogCiBjbGFzcyBXZWJTb2Nr
ZXRUYXNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJT
b2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgU291cFNlc3Npb24qLCBTb3VwTWVzc2Fn
ZSosIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIH5XZWJTb2NrZXRUYXNrKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oCmluZGV4IDhmMjA1Y2UwMjk3MTNkOGJhMjEzZjE0M2JhNzFiYjExNDc1
MmRlZjUuLjIyYWJkZWM2OWRiMjQ1YTRjZjk4M2YyNDdiMzhmNzJkOTAwYTZmNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJU
Q1NvY2tldENsaWVudC5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTmV0d29ya1JUQ1Byb3ZpZGVyOwogCiBjbGFzcyBMaWJXZWJSVENTb2NrZXRDbGllbnQgZmlu
YWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFVEUCwgU2VydmVyVENQLCBD
bGllbnRUQ1AsIFNlcnZlckNvbm5lY3Rpb25UQ1AgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApp
bmRleCBlNzg2NTY4ZmY1MDVhN2I4NzE3ODcwZGY1N2ZhNTdkMTVmNWQ3NzYzLi45MjY2NjhjMzhm
ZmY3MDhhZTUwMmY1OGZkNDE1Mjg4MDNlYzU1NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApA
QCAtNjQsNiArNjQsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5T
TmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZQogfQogCiBzdHJ1Y3QgUGVu
ZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdChSZWY8SVBDOjpDb25uZWN0aW9u
PiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICA6IGNvbm5lY3Rpb24oV1RGTW92ZShj
b25uZWN0aW9uKSkKICAgICAgICAgLCByZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0SWRlbnRpZmll
cikKQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVy
TUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2VzcwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBzZXNzaW9uSUQpOwor
ICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdSZWdpc3RyYXRpb25S
ZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRp
ZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKICAgICBhdXRvKiByZWNvcmQgPSAmcGVu
ZGluZ1JlcXVlc3QtPnJlY29yZDsKICAgICBhdXRvIGVycm9yID0gRE5TU2VydmljZVJlZ2lzdGVy
UmVjb3JkKHNlcnZpY2UsCiAgICAgICAgIHJlY29yZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAppbmRleCAz
NTNlYWM4Y2UxMWI2OTA2ZWZhZGQyZmQyNzE4Yjk3YWI1MmNkYTRkLi5hYjcwNmRjMmU5MzRhOWE3
ZWY5OTI2ODk3OTc0YmRjNzU0ZWEzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIHZvaWQgTmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQogewogICAgIG1f
aXNTdGFydGVkID0gdHJ1ZTsKICAgICBtX3J0Y1Byb3ZpZGVyLmNhbGxPblJUQ05ldHdvcmtUaHJl
YWQoW3RoaXNdKCkgewotICAgICAgICBtX21hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6
QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgbV9tYW5hZ2VyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogICAgICAg
ICBtX21hbmFnZXItPlNpZ25hbE5ldHdvcmtzQ2hhbmdlZC5jb25uZWN0KHRoaXMsICZOZXR3b3Jr
UlRDTW9uaXRvcjo6b25OZXR3b3Jrc0NoYW5nZWQpOwogICAgICAgICBtX21hbmFnZXItPlN0YXJ0
VXBkYXRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1YWM1NzIxMzc5
ZGIzZDFiMjU4NzU1ODYxMDMwYmJhNGRiOWViOGUuLjE1ZDQ0ZDBhZDlkYjBmM2IwNTk5ZTFhMzNl
ZmNmZGI4OTYxYTY1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCBO
ZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcihOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgY29ubmVjdGlvbgogICAgIDogbV9jb25uZWN0aW9uKCZjb25uZWN0aW9uKQog
ICAgICwgbV9ydGNNb25pdG9yKCp0aGlzKQogICAgICwgbV9ydGNOZXR3b3JrVGhyZWFkKGNyZWF0
ZVRocmVhZCgpKQotICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRj
OjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCisg
ICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5n
ZXQoKSkpCiB7CiAjaWYgZGVmaW5lZChOREVCVUcpCiAgICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dU
b0RlYnVnKHJ0Yzo6TFNfTk9ORSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBOZXR3b3JrUlRD
UHJvdmlkZXI6OmNyZWF0ZVNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8cnRjOjoKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYWRkU29j
a2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50Pihp
ZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CisgICAgYWRkU29ja2V0
KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVy
LCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1By
b3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgUlRDTmV0
d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3Qg
bWF4UG9ydCkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6d3Jh
cE5ld1RDUENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgbmV3Qwogewog
ICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIG5ld0Nvbm5lY3Rp
b25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5
bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCA9IG1fcGVuZGluZ0luY29taW5nU29ja2V0cy50YWtlKG5l
d0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKTsKLSAgICAgICAgYWRkU29ja2V0KGlkZW50aWZp
ZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAq
dGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZl
ckNvbm5lY3Rpb25UQ1ApKTsKKyAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlx
dWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2Nr
ZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApp
bmRleCAzODM4MmIwOWQ0ZmIzYmUyNjRmODliNzc4NDFhNDFkN2MwOGNhYzA1Li5jNWVmNmQ5OWE1
NjBkZDE0ODhmMTg0OTk1YWU4YTdiMTZkOWFkMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3lu
Y1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgLy8gSGFu
ZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBxdWV1ZSBtZXNz
YWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CkBAIC0zODgsNyArMzg4LDcg
QEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFs
aWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3luY01l
c3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBz
eW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5j
b2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwor
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFt
ZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPnNldElzU3luY01l
c3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KQEAgLTc1
Niw3ICs3NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNUaHJv
dHRsaW5nKCkKICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21p
bmdNZXNzYWdlcyk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyID0gbWFrZVVuaXF1
ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5n
TWVzc2FnZXMpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBvc3RDb25uZWN0aW9uRGlkQ2xvc2VP
bkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29k
ZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8g
cmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVw
bHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gIldyYXBwZWRBc3luY01l
c3NhZ2VGb3JUZXN0aW5nIikgewogICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJvbm91c01vZGVJ
c0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmgKaW5kZXggMjBmNWVjNWIyMDJiZWMyYmRmNThmMDIwZWJkZWVmODMxNDkzMTFiZi4uYWRjNGFh
ZDk4ODE4ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDMzLDcgKzQzMyw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRP
cHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhw
ZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihU
OjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVu
Y29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCks
IGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygp
KTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9w
dGlvbnMpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90CiB7CiAg
ICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0g
ICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5h
bWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgp
OwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CmluZGV4IGNjYTA3MzkwYWRlYzQ0NmRlNzQ2NmNmOGUxMDEyM2MyNzkzODUzNTIuLmZkNTE3MDE3
MTJiMDYyOWQ0NzI1MmQwNDA4OTZjNjRmY2JjYmIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+IERlY29kZXI6OnVud3JhcEZvclRlc3RpbmcoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHdyYXBwZWRNZXNzYWdlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5k
YXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50
cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEo
KSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhfdCogcm91bmRVcFRvQWxpZ25tZW50KGNv
bnN0IHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDg1NDUyY2RhN2UwNDVlNDQ1NWUwN2I5M2Jh
ZmNhMzViMTAyMDAxMWUuLmE3NDlhYWI4NzAwNTRjZWI2OTBlNWYxNGY0MDc1NjNmZmNkMGY5Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE4Miw3
ICsxODIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAgICAgfQogCiAgICAgdHlwZW5hbWUg
VDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVy
SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11
dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+
KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOworICAgICAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNN
ZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwog
ICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFy
Z3MuLi4pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9N
ZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVy
LmgKaW5kZXggM2Q2ZjM0Mjg5MmJjODgzOTA2NzhlOGMzNjQ2MzkxMTBkZTRmNTcyNi4uNzcxNDQ4
YTQ0ZDA4ODZkZDAxYmIwYzJkZTY0ZGM5YTQyODYyN2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZXNzYWdl
U2VuZGVyIHsKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoIVU6OmlzU3luYywgIk1lc3Nh
Z2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwor
ICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFt
ZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
bWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3Nh
Z2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDM3MDJhY2M3ZGY1
MWJkODQ2YjkzYWY2NGJmMDcwYTRjMTAwMzkxOWYuLjg3ZGQyOGY4MDg2NzgyY2UyYTNkZjc5MGY0
YWMwZTZkNzQ5ZGFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikKICAgICAgICAgLCBtX3dhdGNoZG9n
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hk
b2c6OndhdGNoZG9nVGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAg
ICAsIG1fYXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3Nl
cnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdldCgpKSwgIkNv
bm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlvblN0YXRlOjpC
YWNrZ3JvdW5kKSkKKyAgICAgICAgLCBtX2Fzc2VydGlvbihtYWtlVW5pcXVlPFdlYktpdDo6UHJv
Y2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29ubmVjdGlv
bi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0OjpBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG1fd2F0Y2hk
b2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wg
Q29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogICAgICAg
ICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlu
cyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICBhdXRvIGVuY29k
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNvbm5lY3Rp
b24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBD
IiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShN
YWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpOwogCiAgICAg
ICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFk
ZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBib2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhlYWRlci0+
bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsKIAotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9y
PEF0dGFjaG1lbnQ+IHsgfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KGJv
ZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsKICAgICB9CiAK
ICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgPT0gb3V0T2ZMaW5l
Qm9keU1lc3NhZ2VJRDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIp
CiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRl
c2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MpOwogICAgICAgICBzaXplX3QgbWVzc2FnZUJv
ZHlTaXplID0gZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuc2l6ZTsKIAotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBb
XShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpIHsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7CiAgICAgICAgICAgICB2bV9kZWFs
bG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190Pihi
dWZmZXIpLCBsZW5ndGgpOwogICAgICAgICB9LCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAg
fQpAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3Jl
YXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICB1aW50OF90
KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAgIHNpemVfdCBtZXNzYWdlQm9keVNp
emUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9yRGF0YSAtIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVj
b2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgbnVsbHB0ciwgV1RGTW92ZShhdHRh
Y2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBt
ZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0KIAogLy8g
VGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVt
IHRyYWlsZXIgc2l6ZS4KQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2Vp
dmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1cm47CiAKICNpZiBQTEFURk9STShN
QUMpCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVl
PEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOworICAgIGRlY29kZXItPnNldEltcG9ydGFu
Y2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKICNl
bmRpZgogCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAm
JiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXplQ29ubmVjdGlvbiIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXgu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
aW5kZXggNjNiNmJlNzI3MWU0NDU4ODM5NTA1YWE5MTVlMzg3M2Y4NTE0ZGVkZC4uNzdhZjliMjg1
ODQ1MjZiYjcwYzdmZmM4ZTMyNTZhM2JhYTEzYTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBA
QCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKCkKICAgICBpZiAobWVzc2FnZUluZm8u
aXNCb2R5T3V0T2ZMaW5lKCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBhdXRvIGRlY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5
U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgYXV0byBkZWNvZGVy
ID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUo
KSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogCiAgICAgcHJvY2Vzc0luY29taW5n
TWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIApAQCAtNDgyLDcgKzQ4Miw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJu
byA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgbV9wZW5kaW5n
T3V0cHV0TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0
cHV0TWVzc2FnZSkpOworICAgICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IG1ha2VV
bmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOwogICAgICAgICAgICAg
bV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9zb2NrZXQuZ2V0KCksIEdfSU9fT1VULCBtX2Nv
bm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4gZ2Jvb2xlYW4gewogICAgICAgICAg
ICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkgewogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQobV9wZW5kaW5nT3V0cHV0TWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggNjQwZjQ1Mjk5ZTNiMjY2ZTAyNjlj
Y2NjYzk0NTJiM2JhNTc5ZWZiMS4uNWFkZmQ4MmJlY2E0NmRiMDI0NDdlOGJjYjZkMzg0YzJjMDE1
NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9u
V2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFu
ZGxlcigpCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3BhdGNoIGl0LgogICAgICAgICAgICAg
VmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKDApOwotICAgICAgICAgICAgYXV0byBkZWNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3Jl
YWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgICAg
ICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29kZXI+KG1fcmVhZEJ1ZmZlci5kYXRh
KCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsK
ICAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKaW5kZXggZGQyYjY2YTdjYTE5NTkxYjZl
ZTY3YjhmMjg0ZmQyNTRhMzgyNzg1ZC4uNTY4MzcyMTNkZmJlYWViNGQ1OWU5M2MzZDQ5ZjZjN2Fj
MmY1MzRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCkBAIC00NCw2ICs0NCw3IEBAIHR5cGVk
ZWYgc3RydWN0IF9HTW9kdWxlIEdNb2R1bGU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TW9kdWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNb2R1bGUpOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1vZHVsZShjb25zdCBTdHJp
bmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGlu
Z0NvbnRleHQubW0KaW5kZXggODIzMmRiNGViNTZlYWNiNmY4Y2U4NTU2NjRiOGI3ODJhYjY1MGE5
OC4uN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdmMDJiMDRjZjQ0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0
aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYWNo
U2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVy
SG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAKICAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewogICAgICAgICBrQ0FDb250ZXh0UG9ydE51bWJl
ciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVG
b3JQb3J0KGNvbnN0IE1hCiAjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQog
c3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6
OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4
dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0
aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKICAgICBsYXll
ckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpP
dXRPZlByb2Nlc3M7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCkBAIC04Miw3ICs4Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdD
b250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpCiAjaWYg
UExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVy
SG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MoKQog
ewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJI
b3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5p
cXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9s
YXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogICAgIGxh
eWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1ND
b25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZp
bHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwogICAgIHJldHVybiBsYXllckhvc3RpbmdDb250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oCmluZGV4IDk3ZTJkZjM1M2IzNjgyMzkyOWEzMWFlOTU3YTFkZGNkYzIxYzM3ZDYu
LmI5OGNhOTRiYzllZmMyM2IyZWQ4MThhNWI3ODQzMzcyMzE3ZTljNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTQ5
LDcgKzQ5LDggQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb247CiBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOwogCi1jbGFzcyBQbHVnaW5D
b250cm9sbGVyUHJveHkgOiBQbHVnaW5Db250cm9sbGVyIHsKK2NsYXNzIFBsdWdpbkNvbnRyb2xs
ZXJQcm94eSA6IHB1YmxpYyBQbHVnaW5Db250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5Db250cm9sbGVyUHJveHkp
OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAzNjZiOTgzY2MwYmVhNTgzODYzYTdjZDYzMzNmOTQ4
ZGY3NDg0NDM1Li5jZTgyNjdkMmVlNzhjYWNiM2RkYTBhOWIzNzViZmFhZmM2ODZlZTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbgogCiB2b2lk
IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgYm9vbCYgcmVzdWx0LCBib29s
JiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCkKIHsKLSAg
ICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29u
dHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOworICAgIGF1dG8gcGx1Z2lu
Q29udHJvbGxlclByb3h5ID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJveHk+KHRoaXMs
IGNyZWF0aW9uUGFyYW1ldGVycyk7CiAKICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBsdWdp
bkNvbnRyb2xsZXJQcm94eVB0ciA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS5nZXQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVVSTC5oCmluZGV4IGJiZDQyM2JjZjU3MTVlNGFkNzBiZjUyZGVmOGMy
YzMwYzQxYmYwZjYuLjNlNjFiYmQwMDBlMWY0Y2RiNmMyYTM2Y2E0Zjc1ZTkwNGY4MzVjZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgVVJMIDog
cHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsKICAgICB7CiAgICAgICAgIEFT
U0VSVChiYXNlVVJMKTsKICAgICAgICAgYmFzZVVSTC0+cGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwot
ICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oKmJh
c2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CisgICAgICAgIGF1dG8gYWJz
b2x1dGVVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0
KCksIHJlbGF0aXZlVVJMKTsKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGFic29sdXRlVVJM
U3RyaW5nID0gYWJzb2x1dGVVUkwtPnN0cmluZygpOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFQSTo6VVJMKFdURk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykp
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBpZiAobV9wYXJzZWRVUkwpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6
OlVSTD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IG1ha2VV
bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6
OlN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KaW5kZXggMjU5Mjg0N2UzNDFhM2I2Zjcy
ODc1NGJkNzg4YTY2NTNkZDIyMTViMC4uZDNmZjYyMWVjMGY0YTEwZDc1NjQ4N2NjMjE2ZjQ5NWNl
ODZkNzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90
ZU9iamVjdEludm9jYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZW1vdGVP
YmplY3RJbnZvY2F0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVPYmpl
Y3RJbnZvY2F0aW8KICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShibG9ja1NpZ25hdHVyZSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWdu
YXR1cmUpKTsKKyAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxSZXBseUlu
Zm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUpKTsKICAgICB9CiAKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCA2NWRhOWVmZjAxYjQzZWE1NzEwODAyZjZj
NDZhNmQwMjAyNjU2OTNlLi40ODk5NzYyOTMyYjdhZjY5MjIxZDA1MGFmNjc0NTgzNmZjMzg3YjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgLSAoaWQpX2luaXRXaXRo
V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlJilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBh
Z2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAg
LTExOSw3ICsxMTksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQYWdlUHJveHk6KFdlYktpdDo6V2Vi
UGFnZVByb3h5JilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOworICAgIF9yZW1v
dGVPYmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eT4oc2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTE2MCw3ICsxNjAsNyBA
QCAtICh2b2lkKV9zZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiBpbnRl
cmZhY2U6KF9XS1JlbW90ZU9iamVjdEludAogICAgICAgICBpZiAoc3RyY21wKFtOU01ldGhvZFNp
Z25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5QmxvY2tTaWduYXR1cmVdLm1ldGhv
ZFJldHVyblR5cGUsICJ2IikpCiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiUmV0dXJuIHZhbHVlIG9mIGJsb2NrIGFyZ3Vt
ZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMpIiwgc2VsX2dldE5hbWUoaW52b2NhdGlvbi5zZWxlY3Rv
cildOwogCi0gICAgICAgIHJlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCks
IHJlcGx5QmxvY2tTaWduYXR1cmUpOworICAgICAgICByZXBseUluZm8gPSBtYWtlVW5pcXVlPFdl
YktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRl
bnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKIAogICAgICAgICAvLyBSZXBsYWNlIHRo
ZSBibG9jayBvYmplY3Qgc28gd2Ugd29uJ3QgdHJ5IHRvIGVuY29kZSBpdC4KICAgICAgICAgaWQg
bnVsbCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xp
Yi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAppbmRleCA3ZWQxMWU2YzE3MWUyMGJlMWU5ZWFk
YjMwN2U3MWZjNDhiZmRlODQ5Li5mYWVmZWQyZGNjODM4ZWU5NTczOTA2NWRhYzYzZjEzNTYzZjBk
M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktp
dENvbnRleHRNZW51SXRlbS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiB3ZWJraXRDb250ZXh0TWVudUl0ZW1DcmVhdGUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSYKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVY
VF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBO
VUxMKSk7CiAKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihpdGVtRGF0YSk7CiAgICAgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBzdWJNZW51ID0gaXRlbURhdGEuc3Vi
bWVudSgpOwogICAgIGlmICghc3ViTWVudS5pc0VtcHR5KCkpCiAgICAgICAgIHdlYmtpdENvbnRl
eHRNZW51SXRlbVNldFN1Yk1lbnUoaXRlbSwgYWRvcHRHUmVmKHdlYmtpdENvbnRleHRNZW51Q3Jl
YXRlKHN1Yk1lbnUpKSk7CkBAIC0xNDAsNyArMTQwLDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KEd0a0FjdGlvbiogYWN0aW9uKQogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19BQ1RJT04oYWN0aW9uKSwgbnVsbHB0cik7CiAKICAg
ICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0o
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0g
ICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51
SXRlbUdsaWI+KGFjdGlvbik7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7CiAKICAgICByZXR1cm4gaXRlbTsKIH0K
QEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKEdBY3Rpb24qIGFjdGlvbgogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKCF0YXJnZXQgfHwgZ192YXJpYW50X2lzX29mX3R5cGUodGFyZ2V0LCBnX2Fj
dGlvbl9nZXRfcGFyYW1ldGVyX3R5cGUoYWN0aW9uKSksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGli
PihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOworICAgIGl0ZW0tPnBy
aXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24s
IFN0cmluZzo6ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9
CkBAIC0xOTQsNyArMTk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uKFdlYktpdENvbnQKIAogICAgIFdlYktp
dENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKICAgICBDb250
ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxl
KGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZTsKLSAgICBpdGVtLT5w
cml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
dHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0
Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24pKTsKKyAgICBpdGVtLT5wcml2LT5tZW51
SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29u
dGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0Q29udGV4dE1lbnVBY3Rp
b25HZXRMYWJlbChhY3Rpb24pKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMjE2LDcgKzIx
Niw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsCiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlw
ZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hl
Y2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENv
bnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0
aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBA
IC0yMzksNyArMjM5LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09O
VEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVN
LCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbUJhc2VB
cHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0ZW0tPnByaXYt
Pm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBl
LCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKICAgICBpdGVtLT5wcml2LT5zdWJNZW51ID0gc3VibWVudTsKICAgICB3ZWJraXRDb250
ZXh0TWVudVNldFBhcmVudEl0ZW0oc3VibWVudSwgaXRlbSk7CiAKQEAgLTI1Niw3ICsyNTYsNyBA
QCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0
aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcih2b2lkKQogewogICAgIFdlYktpdENvbnRl
eHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2
LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oU2Vw
YXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKKyAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
U2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKIAog
ICAgIHJldHVybiBpdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggNWVkMTQzYTk5ODU5
MDQ5NmMzMzc2YTU2OTg4MTE1M2E2YTAyYjI4Yy4uZjMzY2FiMzA1ZmVlMTI3NGZhYTdiMjE4Mzhl
OWJiN2VmNzZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC03Miw2ICs3Miw3IEBAIGNs
YXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVNlbmRlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5PgogICAgICwgcHVibGljIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBD
bGllbnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggN2FkMzMzMTQ1MzkxODg4OWZkM2I5ODk2Mzg2
YThiZWQxZjUxOWExNC4uMzkxNGE0YzIwMTRhOWE1NGE2MzQ4OGE0ZTc0MzgxOWM2YThkYjNhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtNzksNyArNzksNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFTU0VSVCh2aWV3Q29udHJvbGxlcik7
CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNl
bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmlld0Nv
bnRyb2xsZXIpOworICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0
aW9uUHJlc2VudGVyID0gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3
Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNTRVJUKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+
bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0
V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6dmlld0Nv
bnRyb2xsZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRleCA4NmU3NDRjMTA4ZGY0Y2JjZjVk
MDQ3NjA5YWNmOTZjNjgyM2Q2YjE2Li40ZjgzNzAyNGVlNWYzNGZmYTBlNjliYWY3YjNiZmM4ODFh
NTI4MDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtNTUsNiArNTUsNyBAQCBlbnVtIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gOiB1aW50OF90OwogdXNpbmcg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KT47CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPEF1dGhlbnRpY2F0aW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0aW9uTWFuYWdlcik7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKE5ldHdvcmtQcm9jZXNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0KaW5kZXggNTZhNzgzYTBiMjNiMjZhMjBjNWI4ZmE0YTU5ZjE1N2E0YzAzN2JiNy4u
MmQ1ZDFhZmMwODI3YTQxYTBiZDgzYmJhYTgwZjc4ZjYxNGY1YmQ3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMzgs
NiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25J
bXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29uc3QgY2hhciog
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBPcHRpb25hbDxwaWRfdD4gcGlkID0g
V1RGOjpudWxsb3B0KQogICAgIHsKQEAgLTE2MCw3ICsxNjEsNyBAQCBhdXRvIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8
SGFuZGxlPgogICAgICAgICByZXR1cm4ge3sgfX07CiAKICAgICBIYW5kbGUgaGFuZGxlOwotICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRl
bnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRh
dGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uID0gbWFrZVVuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7
CiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDE4ZGMyZmI4ZWQxM2QxNTM0MTJlYTMwZTI5MTExNzhl
YWNlZmM1YWUuLjcwNDMwZjQ0MzEyYzhhNTYyY2UxNWZjNzMyZjY5ZDM4NzZmZTljMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBA
QCBUZXh0dXJlTWFwcGVyTGF5ZXImIHRleG1hcExheWVyKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5
ZXImIGNvbXBvc2l0aW9uTGF5ZXIpCiB7CiAgICAgYXV0byYgY29tcG9zaXRpb25TdGF0ZSA9IGNv
bXBvc2l0aW9uTGF5ZXJJbXBsKGNvbXBvc2l0aW9uTGF5ZXIpLmNvbXBvc2l0aW9uU3RhdGUoKTsK
ICAgICBpZiAoIWNvbXBvc2l0aW9uU3RhdGUubGF5ZXIpIHsKLSAgICAgICAgY29tcG9zaXRpb25T
dGF0ZS5sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOworICAg
ICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5
ZXI+KCk7CiAgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXItPnNldElEKGNvbXBvc2l0aW9u
TGF5ZXIuaWQoKSk7CiAgICAgfQogICAgIHJldHVybiAqY29tcG9zaXRpb25TdGF0ZS5sYXllcjsK
QEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZW5zdXJl
Um9vdExheWVyKCkKICAgICBpZiAobV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcm9vdExheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7Cisg
ICAgbV9yb290TGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICBt
X3Jvb3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNl
dERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQzRCgwLCAwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNv
bXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRleCBjZDNlNTdjNmJjYjlkOGRjMWZm
OTljYWQ1OWM0ZTEzZmY2NjAzYTZiLi5iY2IyMzU5NzViMTMzZDJlMjc2NzZkMjgzZmU4OTEzODFh
MGQ1ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmPFRocmVhZGVkQ29tcG9z
aXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVk
RGlzcGwKIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCYgY2xp
ZW50LCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Q2xpZW50JiBkaXNwbGF5UmVmcmVz
aE1vbml0b3JDbGllbnQsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZUZhY3RvciwgVGV4dHVyZU1hcHBlcjo6UGFpbnRG
bGFncyBwYWludEZsYWdzKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wYWludEZs
YWdzKHBhaW50RmxhZ3MpCi0gICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChzdGQ6Om1ha2VfdW5p
cXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQor
ICAgICwgbV9jb21wb3NpdGluZ1J1bkxvb3AobWFrZVVuaXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+
KFt0aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgICwgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3Io
VGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShkaXNwbGF5SUQsIGRpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudCkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAppbmRleCAxYTA1NDc1MDdl
YzFjMWE4MTI0NzJiYjdlYmQ5ZmEwZDRhZDEzYTQ4Li4wN2U4YmJjOWI1YzljM2M2YzlkOGQ2YzNi
OTQ1ZTUzOTMyN2I4NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIE5Q
VmFyaWFudERhdGE7CiBjbGFzcyBQbHVnaW47CiAKIGNsYXNzIE5QT2JqZWN0TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5kZXggNjFlMWY5
NDAyNTIzODVkYjgwNWVjMTIyZGZmMWM5ZTRmMWI3MjU2My4uZDRiNTI0YzgyOWVjNjY3MjFkZjFh
NzBkMmQ1MTNhZTRlYjNmM2QyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBOUFJlbW90
ZU9iamVjdE1hcDo6bnBPYmplY3RQcm94eURlc3Ryb3llZChOUE9iamVjdCogbnBPYmplY3QpCiB1
aW50NjRfdCBOUFJlbW90ZU9iamVjdE1hcDo6cmVnaXN0ZXJOUE9iamVjdChOUE9iamVjdCogbnBP
YmplY3QsIFBsdWdpbiogcGx1Z2luKQogewogICAgIHVpbnQ2NF90IG5wT2JqZWN0SUQgPSBnZW5l
cmF0ZU5QT2JqZWN0SUQoKTsKLSAgICBtX3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0
SUQsIHN0ZDo6bWFrZV91bmlxdWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdp
biwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7CisgICAgbV9yZWdpc3RlcmVkTlBP
YmplY3RzLnNldChucE9iamVjdElELCBtYWtlVW5pcXVlPE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVy
Pih0aGlzLCBwbHVnaW4sIG5wT2JqZWN0SUQsIG5wT2JqZWN0KS5yZWxlYXNlKCkpOwogCiAgICAg
cmV0dXJuIG5wT2JqZWN0SUQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCmluZGV4IDdi
MDJiNWUxMmYzMmM3MmQzOGY1MjA0NWJiNmQ2YTIzYjYyYWUyZTEuLjI2MWQ3YTg5NjkzMDZhODky
NWM0YWIzNmU0Nzk0N2IzOTZjMTI1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBA
IC0yMDYsNyArMjA2LDcgQEAgc3RhdGljIGJvb2wgbW9kdWxlTWl4ZXNHdGtTeW1ib2xzKE1vZHVs
ZSogbW9kdWxlKQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKIHsKLSAg
ICBtX21vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtX3BsdWdpblBhdGgpOworICAg
IG1fbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7CiAgICAgaWYgKCFt
X21vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggZWEyYmU5MzA4Y2JiZTZkZDdlYjhjZjJjNTg4YzhmZjYx
OWVhOTkzYy4uOTU1MTNmNDc5ODJmZDY3ZWU1Zjk4ZGQ3OTk2Yzg1OThmMWY0NjNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgRW5j
b2RlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBM
YXllckNoYW5nZSB7CiAgICAgICAgIE5hbWVDaGFuZ2VkICAgICAgICAgICAgICAgICAgICAgPSAx
TExVIDw8IDEsCkBAIC05NCw2ICs5NSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uIHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllckNyZWF0
aW9uUHJvcGVydGllcygpOwogCiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwpAQCAtMTA5LDYgKzExMSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
IHsKICAgICB9OwogCiAgICAgc3RydWN0IExheWVyUHJvcGVydGllcyB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVzKCk7CiAg
ICAgICAgIExheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRpZXMmIG90aGVyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDFmMmRlNGQwMzdlYTNlODMw
Mjg3YWI5OGNiMmE4ZjIxYzRlY2VhMmUuLjBkMjI3ZmZjMWQ5YzU1NTZhYWQ5MmU3ZWUxNTc2NWUx
NmIzNDQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTE1Miwx
MyArMTUyLDEzIEBAIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6
OkxheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRpCiAgICAgLy8gRklYTUU6IExheWVy
UHJvcGVydGllcyBzaG91bGRuJ3QgYmUgY29weWFibGU7IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
Y2xvbmUgc2hvdWxkIGNvcHkgdGhlIHJlbGV2YW50IHByb3BlcnRpZXMuCiAKICAgICBpZiAob3Ro
ZXIudHJhbnNmb3JtKQotICAgICAgICB0cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKKyAgICAgICAgdHJh
bnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVy
LnRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pCi0gICAgICAg
IHN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKKyAgICAgICAgc3VibGF5ZXJU
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3Ro
ZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOwogCiAgICAgaWYgKG90aGVyLmZpbHRlcnMpCi0gICAgICAg
IGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCpv
dGhlci5maWx0ZXJzKTsKKyAgICAgICAgZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQudHJhbnNmb3JtID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAg
cmVzdWx0LnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGll
cyAmIFN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCkgewpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFuc2Zvcm0p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5zdWJsYXllclRy
YW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+
KHRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAg
ICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEhpZGRlbkNoYW5nZWQpIHsKQEAgLTQy
NSw3ICs0MjUsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocm91bmRlZFJlY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKLSAgICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICAgICAgcmVzdWx0LnNo
YXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJv
dW5kZWRSZWN0KTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYg
U2hhcGVQYXRoQ2hhbmdlZCkgewpAQCAtNDcxLDcgKzQ3MSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNGcm9udEJ1ZmZlcikpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChoYXNGcm9udEJ1ZmZlcikgewotICAg
ICAgICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlPihudWxscHRyKTsKKyAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3JlID0g
bWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7CiAgICAgICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKCpiYWNraW5nU3RvcmUpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIApAQCAtNDg2LDcgKzQ4Niw3IEBAIGJvb2wgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYg
RmlsdGVyc0NoYW5nZWQpIHsKLSAgICAgICAgYXV0byBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigpOworICAgICAgICBhdXRvIGZpbHRlcnMgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoKmZpbHRlcnMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICByZXN1bHQuZmlsdGVycyA9IFdURk1vdmUoZmlsdGVycyk7CkBAIC02MDIsNyArNjAyLDcgQEAg
Ym9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgUmVtb3RlTGF5ZXJUcmVlVHIKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXll
cklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExh
eWVyUHJvcGVydGllcz4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGll
cz4gbGF5ZXJQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmxheWVyUHJvcGVydGllcykpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcAppbmRleCA5NzhjNGJiZWQ3YjVjZDkxY2FhZWMxNTRiYzhiYTE0YmFi
NzUzNDYxLi5lODI2YTMwYjEyZTI0ZWNmNDMwYzY5Yjc2YjFhNmYyOGY1YmI5OGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBA
IC01MjIsNyArNTIyLDcgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzTmV3Um9vdE5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgbV9z
Y3JvbGxpbmdTdGF0ZVRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4o
KTsKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVU
cmVlPigpOwogCiAgICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydGllczsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc0NoYW5nZWRQcm9wZXJ0aWVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCBjNzM0N2M3OWU2Njkz
ODM3ODVkMDVkMjI5ZTQ3Yjc0N2MxZjBjYTU1Li5iMmNkNDg0NjY3N2NlOTdkZmFjMjg1ODQ5MGMx
ZWE0MzRmOTYyOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFy
ZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkK
IHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZSA9IGNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOwogICAgIFJlZlB0cjxjYWlyb190PiBiaXRtYXBDb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9f
Y3JlYXRlKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFw
Q29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4o
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0
KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4
IDkyZjEwNjJiMjkwZjc3NWRiNWFlN2VkMTk1MmE5Y2E4NThhYjMxMjIuLjAxNmFiYmQ5OTNlMThh
NDVjMDFhN2YwNDk3ZGNjMzFhNTNiNDM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDAsIG1f
c2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oYml0bWFwQ29udGV4dC5nZXQo
KSwgMSwgLTEpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
PihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0Nv
bnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCmluZGV4IDYwZjhmM2Ni
NzMyODliNmIwZDJmNGMzNTE0NmYxY2ZlZDQwMzRhODAuLjEwMDFlZTNlNTI5MmVkY2I1MzZmODIz
MzAzYzJjNzRjMmIxZTkyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9T
aGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpCiB7CiAgICAgbV9iaXRtYXAgPSBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKTsKICAgICBD
T01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IGJpdG1hcENvbnRleHQgPSBEaXJlY3QyRDo6Y3JlYXRl
UmVuZGVyVGFyZ2V0RnJvbVdJQ0JpdG1hcChtX2JpdG1hcC5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVh
dGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRt
YXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBv
aW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKaW5kZXggMjk5NTgxMDk1ZGQxZDFiMTVhZmVh
YmI0ZGFjYmVkMDVkMmJkZDExNC4uNTQ1YTdiZTRkNDgxOTcxMzI4ZDFjM2Y3OWQyNzFlZDlhMjFm
ODM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRp
b25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlv
bkNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkF1dG9tYXRpb25DbGllbnQoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlv
blNlc3Npb25DbGllbnQuaAppbmRleCAyOGZhZjY4NzE5YTlkNzI4ZDUxYjZjNzcyZDg0ZTE3YjY0
OTA5N2NhLi4yYWUyYTUwMzRjM2E0MTcxY2NmNDc3Yjk3ODViNzNhNmYyNGRiODE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Np
b25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBlbnVtIEF1dG9tYXRpb25TZXNzaW9uQnJvd3Np
bmdDb250ZXh0T3B0aW9ucyA6IHVpbnQxNl90IHsKIH07CiAKIGNsYXNzIEF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIEphdmFTY3JpcHREaWFsb2dUeXBlIHsKICAgICAgICAgQWxlcnQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCmluZGV4
IGFmMTA5YzFkZjY3MDBkYzIzZTJlMzMxYjBiNTBlZmJjZmY0Mjg2NjcuLjgxNmY3MWUxMjY3MGNi
M2Q2NWIxZTYzMjgwM2E2YjQwZWY3ZGJmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBDb250ZXh0TWVudUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
Q29udGV4dE1lbnVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmluZGV4IDBm
OGNhYjk3MzI5ZjA5NTdmMzJiNDdjMjc3ODFkMWU3ODZmYTE0N2QuLjhiNDRhM2Y0NTZjNTMyYWQz
MzgwNmVmNjliNDdlYWQwOTQxZGY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTM4
LDYgKzM4LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNs
YXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURp
YWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKaW5kZXggOTJiMmQ2NzVkZmNhMmNhZmRhMjExYjNmNzFj
NTc5OGFmZDQ1ZDYyYS4uYjRlMmFkZTcyOWVhNjZkOGRkYThkZDUwMjExOGFlNGFiZGIyMTg2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0
aWNMb2dnaW5nQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFz
cyBEaWN0aW9uYXJ5OwogCiBjbGFzcyBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RG93bmxvYWRDbGllbnQuaAppbmRleCAwMjM3NmUxZTExMGQ0NzZlYjJiOTE4NWU0ZTJmY2Q4ZDZl
MTMzMmUxLi5iMmVhY2M5YjgzMjU5OGIxN2E5OWRiZDlkNjdlZjI0ZTQ3M2FlZDE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApAQCAtNDYs
NiArNDYsNyBAQCBlbnVtIGNsYXNzIEFsbG93T3ZlcndyaXRlIHsgTm8sIFllcyB9OwogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIERvd25sb2FkQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVudCgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAppbmRleCBmMzEyM2Fm
MTk1MTY1YTY2OWQ2NjY4MzE4YjgxMmU5MzM2NWU2ZGMyLi42ZDFlM2IyMTFmZTBkZDk1YTk0ODUw
NTg0MTdkYjRkZTA4MjQwZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRmluZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
aW5kQ2xpZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIEZpbmRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbmRDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaAppbmRleCBj
NmY0NTczNDJkMTExOTAxZGNhNmQzYzMwOTAzMzdmZWU3YTFmZWMyLi5mYWUxZGNkM2NkNjg4MzUw
N2VmYmUzZDk1ZDVkNmY3MmEwMzY5ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRmluZE1hdGNoZXNDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkZp
bmRNYXRjaGVzQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGb3JtQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Rm9ybUNsaWVudC5oCmluZGV4IDViMGM2Y2NhMjRlZWZjMWE5NTgxOTFlMGUyNzk0YTQ3YjRmNTRl
N2MuLmYwY2EwNjAxMTE5ODAyZWQzNjliNGQwNzhkODNjODYyYTUxNjEyZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBu
YW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgRm9ybUNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9ybUNsaWVu
dCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVs
bHNjcmVlbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3Jl
ZW5DbGllbnQuaAppbmRleCAxMzc1NTI5Y2RhMjVmMjVjYmIxNzliZGM4OTg5MTcxYzg5ZWU4ODU3
Li44OTc0Y2QxMzM5NDc3NTAyNzNmNDUwZjBlODM5NmMwZTZiMTMyMDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKQEAgLTMyLDYg
KzMyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEZ1
bGxzY3JlZW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGVudW0gVHlwZSB7CiAgICAgICAgIEFQSVR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaAppbmRleCA1MjY2YmMyY2E1
NGNmMDk5YzIzOGNhY2M2MjE0NGM5Nzk5YTA5Nzk3Li43YzZmNTYyOWNiNjBlNTNiYzdiODVhYTg4
ODlmNzJlNjhkN2E0YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgR2VvbG9jYXRp
b25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+R2VvbG9jYXRpb25Qcm92aWRlcigpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCmluZGV4IDk4MWE5ODViYmRl
NWYxY2I2NWY5NmNiYjIxMzlmYmNmMTlkN2RjZTUuLmUxMjJlZTNlZGIxYzQyMTlkMWQ4NDE5OTMy
MWE4MDAzZDUyYzgyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBIVFRQQ29va2ll
U3RvcmU6OnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQogCiAgICAgQVNTRVJU
KCFtX29ic2VydmVkQ29va2llTWFuYWdlclByb3h5KTsKIAotICAgIG1fY29va2llTWFuYWdlclBy
b3h5T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9i
c2VydmVyPigqdGhpcyk7CisgICAgbV9jb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9IG1ha2VV
bmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsKIAogICAgIGF1
dG8qIHBvb2wgPSBtX293bmluZ0RhdGFTdG9yZS0+cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdl
T3BlcmF0aW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSGlzdG9yeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3Rv
cnlDbGllbnQuaAppbmRleCBmY2Y0NjA2MWY2YmZhNmRjYjc2MGUxMmM2NjMzYjZiNDVmMTU2ZGQ0
Li4xMTg0YWE0MzJjM2I5ZmZjYjE1ZGE1ZjgyOGVmNGFjNGYxYWRiMWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKQEAgLTM1LDYgKzM1LDcg
QEAgc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgSGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SGlzdG9yeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKaW5kZXggZWE5ZWJhNTBl
MWVmZThmMDMyMWM0ZGZlM2E0NDZmMGRjYmI1ZDhjOS4uYmU0M2FlZWM1NGZmMmQ0YWJiNWEyOGZm
MzYzMTQ1YzQ5MGM3ZTg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUljb25EYXRhYmFzZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJY29uRGF0YWJhc2VDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBXZWJJY29u
RGF0YWJhc2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkRhdGFiYXNlQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JY29u
RGF0YWJhc2VDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAppbmRleCA2ZjllN2FmOWM5ODA5MjMzYjZhNTY1ZWMz
ZTM4MGJlMGFhY2Q1NjdlLi4yZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdD
bGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JY29uTG9hZGluZ0NsaWVudCgpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCmluZGV4IGMzNWU3YjNhZTQ5M2Q5YWM2M2NiM2E0YjU4MWZlMzJmY2I0MGFjZTgu
LjlkNDM0ODlhMmQ2MjU3Y2IwY2FmOTIyYjNmYjA5MzI5NWNlOWJiOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBA
IC0zNyw2ICszNyw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogbmFtZXNwYWNlIEFQSSB7CiAK
IGNsYXNzIEluamVjdGVkQnVuZGxlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZUNsaWVudCgpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAppbmRleCBjYmI5ZTBhOTcxNDViZDE3ZGRlZjhlMGJi
MTRhZjhjMzc2ZGZiMzg4Li5kYjVkOTBjMzFmOTI3NjlkMzAzYTAxYWQ3OGJkYTdmYmQxYTRkMDE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBzdHJ1Y3QgV2ViTmF2
aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCmluZGV4IDM0OGQ2YmY3NzI5
MjcyZThmMmFiYWVjMzc1NWMyMGRlNTQyZDY0NWQuLmIyZWE0MWQ5ZTJmMmU4MWUyYzllYjNiODc3
OTFmYzNlZjhjM2YwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9h
ZGVyQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgTmF2aWdhdGlvbjsKIGNsYXNzIE9i
amVjdDsKIAogY2xhc3MgTG9hZGVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0
KikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAppbmRleCBhNmUwMTljYzQ1MTg2M2E0MWFjZmM4YmVhN2JmMzAyODk2YjFiYjczLi5j
ZDIyYTI2NzY0NjhkMTgyMzRhNjA4NDJmZTlkOTE2NzFiMjBhODdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTczLDYgKzcz
LDcgQEAgY2xhc3MgTmF2aWdhdGlvblJlc3BvbnNlOwogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBO
YXZpZ2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5OYXZpZ2F0aW9uQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAppbmRleCA1ZWJlNDQwNzQyYTc2NTQxYjFk
OWNjZjI5OTVjOWE5NWZlODRkNWFkLi42YWU4ZTc1MjA1ZmZmYzg2NTJmNGY5YjgzYmIzZGUzMGVl
NmNmYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiBj
bGFzcyBQb2xpY3lDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgflBvbGljeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IGQ5ZGQwZGI0NjYzNzcyMmI2MDJiMjBkZGRmNjcz
ODEzNWY2NDZmNjIuLjc3MmRhNmU1YTg2OTc3ZWM4YWUyZGMwNzU0MmQ4ZmNmMWUxNDk2MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC03MSw2ICs3MSw3
IEBAIGNsYXNzIE9wZW5QYW5lbFBhcmFtZXRlcnM7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAog
Y2xhc3MgVUlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgflVJQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IGQwZWIzMWFlMTY5MDA1NzcyYTZiZWMxNDM3YzJiNDMw
ZDBjYjRlNmQuLmIzMjRhMjQwNGZjMDBhZTc5ODQ0ZmVmOTA3ZDA3MGUxZDAzMDA1ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29u
c3QgV0tDb250ZXh0Q2xpZW50QmFzZSogd2tDbAogCiB2b2lkIFdLQ29udGV4dFNldEluamVjdGVk
QnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKGNv
bnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktp
dDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVl
PFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTE1Niw3ICsx
NTYsNyBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogICAgIH07CiAKICAgICBXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCA9ICpXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKTsK
LSAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9y
eUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xpZW50KG1h
a2VVbmlxdWU8SGlzdG9yeUNsaWVudD4od2tDbGllbnQpKTsKIAogICAgIGJvb2wgYWRkc1Zpc2l0
ZWRMaW5rcyA9IHByb2Nlc3NQb29sLmhpc3RvcnlDbGllbnQoKS5hZGRzVmlzaXRlZExpbmtzKCk7
CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHREb3dubG9hZAogICAgICAgICB9
CiAgICAgfTsKIAotICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3dubG9hZENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdl
YktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPERv
d25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rp
b25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rp
b25DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCAxMWI4MzRiNGVlMmE5YTY4
NzYyNmM3MzJiZjU4YTQ4ODIzZjYzMzRhLi44ODhiNzViYzdjZWM4OWQxNmUwN2Y2MTdlN2JiMmNl
Mjk3OWZhNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dl
b2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdLVHlwZUlEIFdLR2Vv
bG9jYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdlclNl
dFByb3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwg
Y29uc3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKLSAgICB0b0lt
cGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CisgICAgdG9JbXBsKGdlb2xvY2F0
aW9uTWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92
aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyUHJvdmlk
ZXJEaWRDaGFuZ2VQb3NpdGlvbihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1h
bmFnZXJSZWYsIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBwb3NpdGlvblJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCmluZGV4IGIyMjNkNmY4N2JmYTVlOTZlM2U1MGRhMmRkNzhmZjBkMmRkNDE2Y2UuLjc2OTIz
OTkwYWI1YjllYTIxMzg1ZjFkMzU2OWU4YjUwYWE3ZjY1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBXS1R5cGVJRCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQog
CiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZiBtYW5hZ2VyUmVmLCBjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyQmFzZSogd2tQ
cm92aWRlcikKIHsKLSAgICB0b0ltcGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAgICB0b0lt
cGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJS
ZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKaW5kZXggNDdlYzcyNmIwY2U0NDA1N2YwMDJiNTQwYmVhNzY4ZTQzYjEwYThk
NC4uNjFhNjliMWYzYTZkYTc0OTZhZDQ3MjY5NzBiODVmMmM5MTE4MTNmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZUNvbnRleHRNZW51Q2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJl
ZiktPnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGll
bnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250ZXh0TWVudUNsaWVu
dChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKQEAgLTk1
Nyw3ICs5NTcsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogCiB2b2lkIFdLUGFnZVNldFBh
Z2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFn
ZVJlZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFn
ZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJQYWdlRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0Ns
aWVudCkKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbAogICAgICAg
ICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEZpbmRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9p
ZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0
IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDM4LDcgKzEwMzgs
NyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRv
SW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5k
TWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRN
YXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8RmluZE1hdGNoZXNDbGllbnQ+KHdrQ2xpZW50KSk7CiB9
CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAt
MTA0OCw3ICsxMDQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnUKIAogdm9pZCBXS1BhZ2VT
ZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2ViRm9ybUNsaWVudD4od2tDbGllbnQp
KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTExOTksNyArMTE5
OSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKIAogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFn
ZVByb3h5ID0gdG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgYXV0byBsb2FkZXJDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPExvYWRlckNsaWVudD4od2tDbGllbnQpOworICAgIGF1dG8gbG9hZGVyQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KTsKIAogICAgIC8vIEl0IHdv
dWxkIGJlIG5pY2UgdG8gZ2V0IHJpZCBvZiB0aGlzIGNvZGUgYW5kIHRyYW5zaXRpb24gYWxsIGNs
aWVudHMgdG8gdXNpbmcgZGlkTGF5b3V0IGluc3RlYWQgb2YKICAgICAvLyBkaWRGaXJzdExheW91
dEluRnJhbWUgYW5kIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUuIEluIHRo
ZSBtZWFudGltZSwgdGhpcyBpcyByZXF1aXJlZApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQ
b2xpY3lDbGllbnRCYXNlKgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVm
KS0+c2V0UG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2xpZW50Pih3a0NsaWVu
dCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50KG1ha2VVbmlxdWU8UG9s
aWN5Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIwNzUs
NyArMjA3NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgIH0KICAgICB9Owog
Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xp
ZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQobWFrZVVu
aXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdh
dGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWVu
dEJhc2UqIHdrQ2xpZW50KQpAQCAtMjI5MywxNjQgKzIyOTMsMTY2IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmln
YXRpb25DbGllCiAgICAgd2ViUGFnZVByb3h5LT5zZXROYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlx
dWVSZWY8TmF2aWdhdGlvbkNsaWVudD4od2tDbGllbnQpKTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQ
YWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xp
ZW50KQotewotICAgIGNsYXNzIFN0YXRlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50
PFdLUGFnZVN0YXRlQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7
Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBTdGF0ZUNsaWVudChjb25zdCBXS1BhZ2VT
dGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgaW5pdGlhbGl6
ZShjbGllbnQpOwotICAgICAgICB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB3aWxsQ2hh
bmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorY2xhc3MgU3RhdGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpD
bGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2Vy
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBTdGF0ZUNsaWVudChjb25zdCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKKyAgICB7
CisgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICB9Citwcml2YXRlOgorICAgIHZvaWQg
d2lsbENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZykKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRp
bmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hh
bmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlk
Q2hhbmdlSXNMb2FkaW5nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5k
aWRDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAg
ICAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
VGl0bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlk
Q2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZv
aWQgZGlkQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRDaGFuZ2VUaXRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAg
ICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUFjdGl2
ZVVSTCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VB
Y3RpdmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFu
Z2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAg
dm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJM
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVV
UkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxs
Q2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25s
eVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAg
IHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3Vy
ZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9p
ZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSGFz
T25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3Vy
ZUNvbnRlbnQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9p
ZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZv
aWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VF
c3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlRXN0
aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJp
ZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29C
YWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAg
IHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjaykK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VD
YW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQg
ZGlkQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9
CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VD
YW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZv
aWQgd2lsbENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAo
IW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNh
bkdvRm9yd2FyZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtS
ZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgd2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Q
cm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5n
ZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VO
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlTmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3Mo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hh
bmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUNl
cnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50Lndp
bGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNlcnRp
ZmljYXRlSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAg
ICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUlu
Zm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxs
Q2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZVdl
YlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAg
fQorICAgIHZvaWQgd2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9u
c2l2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZVdl
YlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAK
LSAgICAgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNz
SXNSZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50
LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRTd2FwV2ViUHJvY2Vzc2VzKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2Vz
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN3YXBX
ZWJQcm9jZXNzZXMobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgIH07
CisgICAgdm9pZCBkaWRTd2FwV2ViUHJvY2Vzc2VzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcykKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KK307CisKK3ZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKK3sKICAgICBpZiAoY2xp
ZW50KQotICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6
Om1ha2VfdW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKKyAgICAgICAgdG9JbXBsKHBhZ2Up
LT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobWFrZVVuaXF1ZTxTdGF0ZUNsaWVudD4oY2xpZW50
KSk7CiAgICAgZWxzZQogICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNl
cnZlcihudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KaW5kZXggZjc2M2FmNjAwM2RhNDY2NzM2MzFlOTFl
YTgxYjgzYjVjOTdhMDg3ZC4uMzVlZjkyMjE1NGUxOTYzMDBlNGI2ZWU3NWQ0Yzk4MTc4NWJjM2Uy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVBy
aXZhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFn
ZVByaXZhdGVNYWMubW0KQEAgLTUyLDcgKzUyLDcgQEAgLSAoaWQpaW5pdFdpdGhQYWdlOihSZWZQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+JiYpcGFnZQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgX3BhZ2UgPSBXVEZNb3ZlKHBhZ2UpOwotICAgIF9vYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYsIEAiVVJMIik7CisgICAgX29i
c2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwg
QCJVUkwiKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfb2JzZXJ2
ZXIpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L3dwZS9XS1ZpZXcuY3BwCmluZGV4IDc4YmJhMzk2N2I2MTk3YzBlOGE3YzIzYWMzZGE4Y2QxMzJl
N2M0YmUuLjk2NDA2ZDBhYWZiYzM1NTU2MGI1ZDMxOTdhMDBjMjVmNTc1OWEzZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCkBAIC02OCw1ICs2OCw1
IEBAIHZvaWQgV0tWaWV3U2V0Vmlld0NsaWVudChXS1ZpZXdSZWYgdmlldywgY29uc3QgV0tWaWV3
Q2xpZW50QmFzZSogY2xpZW50KQogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbCh2aWV3
KS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Vmlld0NsaWVudD4oY2xpZW50KSk7CisgICAg
dG9JbXBsKHZpZXcpLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDI2NTU1NGYzZDdmMmQ3YWQy
OTZlOWYzZjlmYTExMzg4Yjc4ZmQ1NjQuLjQ5Njc3ODhhMTA1N2ZhODgyYTBhMDFjOGRiZjUwMDJl
OTIyNmVjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjAyLDcgKzYw
Miw3IEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhQYWdlUmVmOihXS1BhZ2VSZWYpcGFnZVJl
ZgogCiAgICAgX3BhZ2UgPSBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKTsKIAotICAgIF9wYWdlTG9h
ZFN0YXRlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9i
c2VydmVyPihzZWxmKTsKKyAgICBfcGFnZUxvYWRTdGF0ZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZik7CiAgICAgX3BhZ2UtPnBhZ2VMb2Fk
U3RhdGUoKS5hZGRPYnNlcnZlcigqX3BhZ2VMb2FkU3RhdGVPYnNlcnZlcik7CiAKICAgICBBU1NF
UlQoIWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJNYXAoKS5jb250YWlucyhfcGFnZS5nZXQoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JlLm1tCmluZGV4IDEzNzJjYTQxMDZjNzZlMWQ2MjM1ZDYxNGFkNWMxZTZhNTZlYTA1
YTEuLjgxZDM3MDNiMGVlYTgyZTVlNmM2MmYzMjIyYWM0ZTY4MTlmNmIzYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUu
bW0KQEAgLTEwOCw3ICsxMDgsNyBAQCAtICh2b2lkKWFkZE9ic2VydmVyOihpZDxXS0hUVFBDb29r
aWVTdG9yZU9ic2VydmVyPilvYnNlcnZlcgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKKyAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPihv
YnNlcnZlcik7CiAgICAgX2Nvb2tpZVN0b3JlLT5yZWdpc3Rlck9ic2VydmVyKCpyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBiYWNlNWFjN2VjMDBiMTg5OGFkMmRmNzJjYjFi
MTk0NDY3ZGNlYzlkLi5lYmFjNTY4ZTNkZGI2ODcwZjg1YjAxNTA4ZWMyMGZhYWI3ZjIwNGQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQpAQCAtMzczLDcgKzM3Myw3IEBAIC0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93
bmxvYWREZWxlZ2F0ZQogLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25s
b2FkRGVsZWdhdGU+KWRvd25sb2FkRGVsZWdhdGUKIHsKICAgICBfZG93bmxvYWREZWxlZ2F0ZSA9
IGRvd25sb2FkRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUp
KTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0
b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC0zODQsNyArMzg0LDcgQEAg
LSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQogLSAodm9p
ZClfc2V0QXV0b21hdGlvbkRlbGVnYXRlOihpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilhdXRv
bWF0aW9uRGVsZWdhdGUKIHsKICAgICBfYXV0b21hdGlvbkRlbGVnYXRlID0gYXV0b21hdGlvbkRl
bGVnYXRlOwotICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0b21hdGlvbkRlbGVnYXRl
KSk7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8V2Vi
S2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKIH0KIAog
LSAodm9pZClfd2FybUluaXRpYWxQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXgg
OGI2ZGYyNGY4OTUyZDg0ZjYwNzU0NGM2YTMxYTJkZDFiOGFhMzU1ZC4uYTAwYjIwM2NjOTA1OTMw
MWJlY2M0NjFkNjFiNDY3MzJiODU2MTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAt
MTE4LDYgKzExOCw3IEBAIC0gKHZvaWQpcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cwogfQogCiBj
bGFzcyBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYktpdDo6
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZShXS1VzZXJD
b250ZW50Q29udHJvbGxlciAqY29udHJvbGxlciwgaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+
IGhhbmRsZXIsIE5TU3RyaW5nICpuYW1lKQogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9s
bGVyKQpAQCAtMTQ1LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAKIC0gKHZvaWQpYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFu
ZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6
OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRN
ZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSks
IG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBo
YW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlx
dWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRs
ZXIsIG5hbWUpLCBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwog
ICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVz
c2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5h
bWVdOwogfQpAQCAtMjI5LDcgKzIzMCw3IEBAIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTdHlsZVNo
ZWV0c0Fzc29jaWF0ZWRXaXRoVXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXCiAKIC0g
KHZvaWQpX2FkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxl
cj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNTdHJpbmcgKiluYW1lIHVzZXJDb250ZW50
V29ybGQ6KF9XS1VzZXJDb250ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgYXV0
byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVz
c2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50
V29ybGQpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYs
IHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVzZXJDb250ZW50V29ybGQtPl91
c2VyQ29udGVudFdvcmxkKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+
YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1w
dCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBh
bHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDAzOTFhMTk5MmUzNTMyZGJlNWYyMWRiNjkxZGQ4
MTA4YWFlMmE2NmMuLjA4ZjQyZWM4YjEzYmY3MGJkMmI2YjM3YmM3ZDgxNTY4MjNkNmM2ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
NzU3LDcgKzc1Nyw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIF9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBs
PihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsK
KyAgICBfaW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwg
cHJvY2Vzc1Bvb2wsIHBhZ2VDb25maWd1cmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgX3BhZ2UgPSAm
X2ltcGwtPnBhZ2UoKTsKIAogICAgIF9pbXBsLT5zZXRBdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRl
bnRJbnNldHModHJ1ZSk7CkBAIC03NjksMTQgKzc2OSwxNCBAQCAtICh2b2lkKV9pbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9u
CiAKICAgICBfcGFnZS0+c2V0QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudChjb25m
aWd1cmF0aW9uLl9hcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KTsKIAotICAgIF9u
YXZpZ2F0aW9uU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
PihzZWxmKTsKKyAgICBfbmF2aWdhdGlvblN0YXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZT4oc2VsZik7CiAgICAgX3BhZ2UtPnNldE5hdmlnYXRpb25DbGllbnQoX25hdmln
YXRpb25TdGF0ZS0+Y3JlYXRlTmF2aWdhdGlvbkNsaWVudCgpKTsKIAotICAgIF91aURlbGVnYXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOwotICAgIF9wYWdl
LT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxm
KSk7Ci0gICAgX3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOworICAgIF91aURlbGVn
YXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOworICAgIF9wYWdlLT5z
ZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7CisgICAg
X3BhZ2UtPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOwogCi0gICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7Cisg
ICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdE
ZWxlZ2F0ZT4oc2VsZik7CiAKICAgICBfdXNlUGxhdGZvcm1GaW5kVUkgPSBZRVM7CiAKQEAgLTM0
MjUsNyArMzQyNSw3IEBAIC0gKHZvaWQpc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXM6KEJPT0wpYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uCiAgICAgX2FsbG93c0JhY2tG
b3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXM7CiAKICAgICBpZiAoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgJiYg
IV9nZXN0dXJlQ29udHJvbGxlcikgewotICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2UpOworICAg
ICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyPigqX3BhZ2UpOwogICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmluc3RhbGxT
d2lwZUhhbmRsZXIoc2VsZiwgW3NlbGYgc2Nyb2xsVmlld10pOwogICAgICAgICBpZiAoV0tXZWJW
aWV3ICphbHRlcm5hdGVXZWJWaWV3ID0gW19jb25maWd1cmF0aW9uIF9hbHRlcm5hdGVXZWJWaWV3
Rm9yTmF2aWdhdGlvbkdlc3R1cmVzXSkKICAgICAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+
c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShhbHRlcm5hdGVXZWJWaWV3LT5f
cGFnZS5nZXQoKSk7CkBAIC01Njc4LDcgKzU2NzgsNyBAQCAtICh2b2lkKV9zZXRJbnB1dERlbGVn
YXRlOihpZCA8X1dLSW5wdXREZWxlZ2F0ZT4paW5wdXREZWxlZ2F0ZQogICAgIH07CiAKICAgICBp
ZiAoaW5wdXREZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50
KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2Ut
PnNldEZvcm1DbGllbnQobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KaW5kZXggN2FkMDcz
YjhjZDZkZDQyMDNlMWE3NjA1OGY3YzdkZjJhOWY4YWQ3Yi4uMmFkZWVhNzYwYzY5OGIxOGFlNTkx
ZTU3MDU3MTMyOTVmMjRjNTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpAQCAtNzIsNyArNzIsNyBA
QCAtIChpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4pZGVsZWdhdGUKIC0gKHZvaWQp
c2V0RGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQog
ewogICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIF9zZXNzaW9uLT5zZXRDbGllbnQoZGVs
ZWdhdGUgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+
KGRlbGVnYXRlKSA6IG51bGxwdHIpOworICAgIF9zZXNzaW9uLT5zZXRDbGllbnQoZGVsZWdhdGUg
PyBtYWtlVW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KGRlbGVnYXRlKSA6
IG51bGxwdHIpOwogfQogCiAtIChOU1N0cmluZyAqKXNlc3Npb25JZGVudGlmaWVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggYjM3YjA1MDUzZjEy
NGFjYjcwZmQ2YWRlNmRmNDIwZmU4MjVkNTRjZi4uMGRkNDA5YTQzZGU2NTMwMGM5ZjBjYzg1NDQ3
YWMyZjcxM2VjOTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbQpAQCAtMzgsNiArMzgsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgZmluYWwgOiBwdWJsaWMgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIF9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50KF9XS1JlbW90ZVdl
Ykluc3BlY3RvclZpZXdDb250cm9sbGVyICpjb250cm9sbGVyKQogICAgICAgICA6IG1fY29udHJv
bGxlcihjb250cm9sbGVyKQpAQCAtNzUsNyArNzYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eSA9IFdlYktp
dDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSgpOwotICAgIG1fcmVtb3RlSW5zcGVj
dG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5Q2xpZW50PihzZWxmKTsKKyAgICBtX3JlbW90ZUluc3BlY3RvckNsaWVudCA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudD4oc2VsZik7CiAg
ICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+c2V0Q2xpZW50KG1fcmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmdldCgpKTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggOGQyZjg4YWUwMDMyYTBkOTM0
NWU2ODAwYTk3ODU4YjQyOGE0ZDZkOS4uMDY4NzBkMjFkZWU3Y2E0Zjg5ZGI5ZTM0MmY2ZjBmNWZk
M2Y1NGE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwCkBAIC0xNjkxLDcgKzE2OTEsNyBAQCBpbmxpbmUgdm9pZCByZWFkeVNRTGl0
ZVN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBT
UQogICAgICAgICBzdGF0ZW1lbnQgPSBudWxscHRyOwogICAgIH0KICAgICBpZiAoIXN0YXRlbWVu
dCkgewotICAgICAgICBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVu
dD4oZGIsIHN0cik7CisgICAgICAgIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVt
ZW50PihkYiwgc3RyKTsKICAgICAgICAgaWYgKHN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElU
RV9PSykKICAgICAgICAgICAgIExPR19FUlJPUigiUHJlcGFyaW5nIHN0YXRlbWVudCAlcyBmYWls
ZWQiLCBzdHIuYXNjaWkoKS5kYXRhKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKaW5kZXggYmFiZDhhOTgyOWZiODBkMTk4NTJl
Yzk3NGFlZWE3MGNlZTBiOTE1OC4uOGE4Y2FiYmQ1M2MxZTY1ZjcwYWRkMDg1ZDRmNTVlYTMxMDEx
NjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEljb25EYXRhYmFzZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkRhdGFiYXNlQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCkBAIC01OCw2ICs1OSw3IEBAIGNsYXNzIEljb25EYXRhYmFzZSB7CiAKIHByaXZh
dGU6CiAgICAgY2xhc3MgSWNvblNuYXBzaG90IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBJY29uU25hcHNob3QoKSA9IGRlZmF1bHQ7CiAK
QEAgLTExOCw2ICsxMjAsNyBAQCBjbGFzcyBJY29uRGF0YWJhc2UgewogICAgIH07CiAKICAgICBj
bGFzcyBQYWdlVVJMU25hcHNob3QgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFBhZ2VVUkxTbmFwc2hvdCgpID0gZGVmYXVsdDsKIApAQCAt
MTcyLDYgKzE3NSw3IEBAIGNsYXNzIEljb25EYXRhYmFzZSB7CiAgICAgfTsKIAogICAgIGNsYXNz
IE1haW5UaHJlYWROb3RpZmllciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgTWFpblRocmVhZE5vdGlmaWVyKCkKICAgICAgICAgICAgIDog
bV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNYWluVGhyZWFkTm90aWZpZXI6OnRpbWVy
RmlyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggZDJhZjY0YmFkODZhOGEzM2YxMzM1
NDcyNTgxYjcwMmU0MWE2N2VjMi4uMjE4NjYwNDUxOTI3NjliZTZkZmY4NTlhNjMyMDQzZDUxMzU2
OWMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzAsNiArNzAsNyBAQCBzdGF0aWMg
Z3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiBXRUJLSVRfREVGSU5FX1RZUEUo
V2ViS2l0QXV0b21hdGlvblNlc3Npb24sIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb24sIEdfVFlQ
RV9PQkpFQ1QpCiAKIGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IGZpbmFsIDogcHVibGlj
IEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50KFdlYktp
dEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQogICAgICAgICA6IG1fc2Vzc2lvbihzZXNzaW9u
KQpAQCAtMjIzLDcgKzIyNCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9u
Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lv
biA9IGFkb3B0UmVmKG5ldyBXZWJBdXRvbWF0aW9uU2Vzc2lvbigpKTsKICAgICBzZXNzaW9uLT5w
cml2LT5zZXNzaW9uLT5zZXRTZXNzaW9uSWRlbnRpZmllcihTdHJpbmc6OmZyb21VVEY4KHNlc3Np
b24tPnByaXYtPmlkLmRhdGEoKSkpOwotICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7
CisgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8QXV0b21h
dGlvblNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0QXV0
b21hdGlvblNlc3Npb25EaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50
LmNwcAppbmRleCA5N2U5MjU2MDE3NzM3Yjc2NjVhY2M4ZWIyZjM1OGViMmVjNTkwMGI5Li4yODU4
ZGY2ZjM0ZDRmYTYyMTIwOWJmMWViMWUxMDg4NWFkMDVlNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGll
bnQuY3BwCkBAIC01Niw2ICs1Niw2IEBAIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IGZpbmFsOiBw
dWJsaWMgQVBJOjpDb250ZXh0TWVudUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoQ29udGV4dE1lbnVD
bGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3
R2V0UGFnZSh3ZWJWaWV3KS5zZXRDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENv
bnRleHRNZW51Q2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2Vi
Vmlldykuc2V0Q29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4o
d2ViVmlldykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNw
cAppbmRleCBkMzJiNTljNTQ3NjY3YTdlYzg3NzE4MTA1MmJkMWE3NDljMGRiYzFjLi5hMzczYjI5
NDU3MTY3OTFhMmQ0YzMwN2JkNWUwYTkyOWM4MTQwYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAKQEAgLTU2LDUgKzU2LDUgQEAgY2xhc3MgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW4KIAogdm9pZCBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRl
eHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0
R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pih3ZWJD
b250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQp
LnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVlPEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCmlu
ZGV4IGVhZDRmMjM0OTkxNjcwNGQxN2QxZjIzMDY0MDg5ZjdhMWEwNDU5NGYuLmU3NzFkZDcxODdl
NTg1OWFkYmQ1YTAxNmY4Y2E5MzVkMjhlODRhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKQEAgLTEx
OCw1ICsxMTgsNSBAQCBjbGFzcyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRv
d25sb2FkQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERv
d25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nl
c3NQb29sKHdlYkNvbnRleHQpLnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRD
bGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDIxODA4M2U3
Njk3YTUxMzk4ZjJlZTA5NGNkYjA2OGMyMDgzN2IxZmEuLjliNTgxOGE5ODM2ZjM3NjJkODk2MjJl
MzYyYzNmYzhiMmQzZWJmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjY3LDggKzI2Nyw4
IEBAIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3BlbihXZWJLaXRGYXZpY29uRGF0YWJhc2Uq
IGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYktp
dEZhdmljb25EYXRhYmFzZVByaXZhdGUqIHByaXYgPSBkYXRhYmFzZS0+cHJpdjsKLSAgICBwcml2
LT5pY29uRGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25EYXRhYmFzZT4oKTsKLSAgICBw
cml2LT5pY29uRGF0YWJhc2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEljb25E
YXRhYmFzZUNsaWVudD4oZGF0YWJhc2UpKTsKKyAgICBwcml2LT5pY29uRGF0YWJhc2UgPSBtYWtl
VW5pcXVlPEljb25EYXRhYmFzZT4oKTsKKyAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldENsaWVu
dChtYWtlVW5pcXVlPFdlYktpdEljb25EYXRhYmFzZUNsaWVudD4oZGF0YWJhc2UpKTsKICAgICBJ
Y29uRGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgcHJpdi0+aWNvbkRhdGFi
YXNlLT5zZXRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVC
cm93c2luZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcAppbmRleCA0Zjk4MGQ0ZWUyNThhY2FjNDU1ODMy
M2NhN2JkNzFjY2RmM2JlZWIxLi43Njc1YzljYjNhNWVkYWY4ODY0ZDE3YTE3OTIxN2NiOTQyMzM2
NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
aW5kQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0RmluZENvbnRyb2xsZXJDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X2ZpbmRfY29udHJvbGxlcl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1
Y3RlZChvYmplY3QpOwogCiAgICAgV2ViS2l0RmluZENvbnRyb2xsZXIqIGZpbmRDb250cm9sbGVy
ID0gV0VCS0lUX0ZJTkRfQ09OVFJPTExFUihvYmplY3QpOwotICAgIGdldFBhZ2UoZmluZENvbnRy
b2xsZXIpLnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5kQ2xpZW50PihmaW5kQ29u
dHJvbGxlcikpOworICAgIGdldFBhZ2UoZmluZENvbnRyb2xsZXIpLnNldEZpbmRDbGllbnQobWFr
ZVVuaXF1ZTxGaW5kQ2xpZW50PihmaW5kQ29udHJvbGxlcikpOwogfQogCiBzdGF0aWMgdm9pZCB3
ZWJraXRGaW5kQ29udHJvbGxlckdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwCmluZGV4
IDEzNGQxYzZjZWJlNTY3ZmM1NGQ5NzBmODc2YmUwMjkzMWQzMjgyMmQuLmJjNjdhMzU3ZGMwNzQ0
NWEzNTI4ZjgwZjBhYmQ3OWQwN2MzYmMwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwCkBAIC00OCw1ICs0OCw1IEBA
IGNsYXNzIEZvcm1DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpGb3JtQ2xpZW50IHsKIAogdm9p
ZCBhdHRhY2hGb3JtQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAg
d2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJW
aWV3KS5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4od2ViVmlldykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMmUxNTk0NWRmYWQyOWMzMTU1MGQxYWQzYzRk
ZDE0OThiZTdiNzIwNC4uOGNiYTQyMmVkNWUzOGJmODRjNzYwNTk0ZDZjZjBmNjU4OGNiZWE1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9j
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyU3RhcnQoV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2Vy
KiBtYW5hZ2VyKQogICAgIH0KIAogICAgIGlmICghbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3Zp
ZGVyKSB7Ci0gICAgICAgIG1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8R2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1hbmFnZXIt
PnByaXYtPmdlb2NsdWVQcm92aWRlciA9IG1ha2VVbmlxdWU8R2VvY2x1ZUdlb2xvY2F0aW9uUHJv
dmlkZXI+KCk7CiAgICAgICAgIG1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlci0+c2V0RW5h
YmxlSGlnaEFjY3VyYWN5KG1hbmFnZXItPnByaXYtPmhpZ2hBY2N1cmFjeUVuYWJsZWQpOwogICAg
IH0KICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnN0YXJ0KFttYW5hZ2VyXShH
ZW9sb2NhdGlvblBvc2l0aW9uJiYgY29yZVBvc2l0aW9uLCBPcHRpb25hbDxDU3RyaW5nPiBlcnJv
cikgewpAQCAtMzEyLDcgKzMxMiw3IEBAIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogd2Via2l0
R2VvbG9jYXRpb25NYW5hZ2VyQ3JlYXRlKFdlYkdlb2xvY2F0aW9uTWFuYWdlclByCiB7CiAgICAg
YXV0byogbWFuYWdlciA9IFdFQktJVF9HRU9MT0NBVElPTl9NQU5BR0VSKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9HRU9MT0NBVElPTl9NQU5BR0VSLCBudWxscHRyKSk7CiAgICAgbWFuYWdlci0+
cHJpdi0+bWFuYWdlciA9IHByb3h5OwotICAgIHByb3h5LT5zZXRQcm92aWRlcihzdGQ6Om1ha2Vf
dW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXI+KG1hbmFnZXIpKTsKKyAgICBwcm94eS0+c2V0UHJv
dmlkZXIobWFrZVVuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyPihtYW5hZ2VyKSk7CiAgICAgcmV0
dXJuIG1hbmFnZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcAppbmRleCBiOGYwMWZiMjRm
ZjI3NjU0YzBhZDYwOWFkZDMyNDE5NWVlNDFjYTU5Li42NWZkN2M2OTkyMzg4MDExNTU4YzY3ZGVi
MjVmZGFhMjdmNjZjNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6
IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQpAQCAtNjEsNSArNjIs
NSBAQCBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50IHsKIAogdm9pZCBhdHRhY2hJY29uTG9hZGluZ0NsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEljb25M
b2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHdlYlZpZXcp
KTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVu
dChtYWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggYTkzZmYyNWIzOWEyOTI1NjAwZDJjNGFlY2NlY2JjNzU3
MGQ1ZGYzZC4uOTI2MmE4NGRlY2UyNWJmMGJkZjVjNTliNDhkMDAyNTg1MmYzNmJhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMTc5LDUgKzE3OSw1IEBAIGNsYXNzIFdlYktp
dEluamVjdGVkQnVuZGxlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGVD
bGllbnQgewogCiB2b2lkIGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KFdlYktp
dFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nl
c3NQb29sKHdlYkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRX
ZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2ViQ29udGV4dCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDIzNmU4MWMxMzkwYjNlYzNjMTU0
OTE4Njg2YmFmYTVlNTM4NjQ2ODcuLjU1MTYzNjQ0Nzc1NTc0N2I3MGFjNWU3NmIxZDEwNGQ2MWMw
YjVjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm8KICAgICAsIG1fbm90aWZpY2F0aW9uTWFuYWdlcihub3Rp
ZmljYXRpb25NYW5hZ2VyKQogewogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbk1hbmFnZXIpOwot
ICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxO
b3RpZmljYXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKKyAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXIt
PnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlzKSk7CiB9
CiAKIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKaW5kZXggOWU1OGJjYjBiMWFiMzNmYWFkOTdm
Y2Y4NTk4MTI3ZTYxMGExMjMzNi4uMzZiNzgzNDM4ODBkOTYwMzBlNzJmZmFhMTUzNzQ4ZWU1YjFl
M2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eSosIFdlYktpdFdlYkNvbnRleHQqKTsKICAgICB+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJ
Q2xpZW50LmNwcAppbmRleCA1YmNlZjY4ZjY1ZDIzMTg5ODBjZjkxZGFlNTkzZDc2NjcxNDhhOTg5
Li44OTZlMTNkYWQ5N2JlN2ZmNzc2YzAzYmY2ZTdkMDI3ODJlMDMyMWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0y
MjUsNiArMjI1LDYgQEAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAK
IHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAg
ICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmll
dykuc2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2ViVmlldykpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA0OGIzOGVhYzA4ZDkxMmM5NjM5ZWY1NTA5NGIxMGYx
ZmZhZDFkOWY5Li4yNTVlOGU1YTY3OTI3NjQ4MzNkMzdkYWZmOWY1NzkwZjA4NTk2NjU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFVzZXJDb250ZW50TWFuYWdlci5jcHAKQEAgLTE4Miw2ICsxODIsNyBAQCB2b2lkIHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3NjcmlwdHMoV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyKiBtYQogfQogCiBjbGFzcyBTY3JpcHRNZXNzYWdlQ2xpZW50R3RrIGZpbmFsIDogcHVi
bGljIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3NhZ2VDbGllbnRHdGsoV2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBjaGFyKiBoYW5kbGVyTmFtZSkKICAgICAg
ICAgOiBtX2hhbmRsZXJOYW1lKGdfcXVhcmtfZnJvbV9zdHJpbmcoaGFuZGxlck5hbWUpKQpAQCAt
MjM4LDcgKzIzOSw3IEBAIGdib29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdp
c3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKFdlYktpdFVzZXJDCiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwobmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJp
bmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkp
OworICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2Ny
aXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFt
ZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcmV0dXJuIG1h
bmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCkBAIC0yODgsNyArMjg5LDcgQEAgZ2Jvb2xlYW4g
d2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRs
ZXJfaW5fd29ybGQoV2UKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3b3JsZE5hbWUsIEZBTFNF
KTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9Ci0gICAgICAg
IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRN
ZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwg
d2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKKyAgICAgICAgV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1h
bmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdv
cmxkKHdvcmxkTmFtZSkpOwogICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcAppbmRleCBhZDgzZGI4MjNkMzdkMjBmNTEzYjAxMjNjZTI3NGEyYmJmNDcxNzgy
Li44YzY4OTgyOTUzOWY0MjIzOGIzMDdmNTU1NjA4YTVjNTAwMmRjZjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApA
QCAtMTk4LDYgKzE5OCw3IEBAIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsg
MCwgfTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogY2xhc3MgV2ViS2l0QXV0b21h
dGlvbkNsaWVudCBmaW5hbCA6IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYktp
dEF1dG9tYXRpb25DbGllbnQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKICAgICAgICAgOiBt
X3dlYkNvbnRleHQoY29udGV4dCkKQEAgLTM2Nyw5ICszNjgsOSBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRU
b0NvbnRleHQod2ViQ29udGV4dCk7CiAKICAgICBwcml2LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBh
ZG9wdEdSZWYod2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyQ3JlYXRlKHByaXYtPnByb2Nlc3NQb29s
LT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PigpKSk7Ci0gICAgcHJpdi0+
bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk+KCksIHdlYkNvbnRleHQpOworICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3Zp
ZGVyID0gbWFrZVVuaXF1ZTxXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vz
c1Bvb2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250
ZXh0KTsKICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAg
IHByaXYtPnJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5y
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcj4od2ViQ29udGV4dCk7CiAjZW5kaWYKIH0KIApAQCAtNjc4LDcgKzY3
OSw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgZ2Jvb2xlCiAgICAgICAgICAgICBnX3dhcm5pbmcoIk5v
dCBlbmFibGluZyBhdXRvbWF0aW9uIG9uIFdlYktpdFdlYkNvbnRleHQgYmVjYXVzZSB0aGVyZSdz
IGFub3RoZXIgY29udGV4dCB3aXRoIGF1dG9tYXRpb24gZW5hYmxlZCwgb25seSBvbmUgaXMgYWxs
b3dlZCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQt
PnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEF1dG9tYXRp
b25DbGllbnQ+KGNvbnRleHQpOworICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKICAgICB9
IGVsc2UKICAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG51bGxwdHI7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlldy5jcHAKaW5kZXggYjIzOWFjNGUxOWU2M2QzM2E4NjlkZWZiNjZmYzNjMGI0NTAwYjc4
NS4uNzQzMGMzZmNmZDU0YzQ2ZWZhNjRlMTJmZDk3ZGU1YTkzMjk4YTQ4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIw
MSw2ICsyMDEsNyBAQCBjbGFzcyBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI7CiAjaWYgUExBVEZPUk0o
V1BFKQogc3RhdGljIHVuc2lnbmVkIGZyYW1lRGlzcGxheUNhbGxiYWNrSUQ7CiBzdHJ1Y3QgRnJh
bWVEaXNwbGF5ZWRDYWxsYmFjayB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIEZyYW1lRGlzcGxheWVkQ2FsbGJhY2soV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFj
ayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEgPSBudWxscHRyLCBHRGVzdHJveU5vdGlmeSBk
ZXN0cm95Tm90aWZ5RnVuY3Rpb24gPSBudWxscHRyKQogICAgICAgICA6IGlkKCsrZnJhbWVEaXNw
bGF5Q2FsbGJhY2tJRCkKICAgICAgICAgLCBjYWxsYmFjayhjYWxsYmFjaykKQEAgLTIyNyw2ICsy
MjgsNyBAQCBzdHJ1Y3QgRnJhbWVEaXNwbGF5ZWRDYWxsYmFjayB7CiAjZW5kaWYgLy8gUExBVEZP
Uk0oV1BFKQogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgfl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSgpCiAgICAg
ewogICAgICAgICAvLyBGb3IgbW9kYWwgZGlhbG9ncywgbWFrZSBzdXJlIHRoZSBtYWluIGxvb3Ag
aXMgc3RvcHBlZCB3aGVuIGZpbmFsaXppbmcgdGhlIHdlYlZpZXcuCkBAIC0zMjYsNiArMzI4LDcg
QEAgdm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB9CiAKIGNsYXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlciBmaW5hbCA6IHB1Ymxp
YyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgUGFnZUxvYWRTdGF0ZU9ic2VydmVyKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBAIC0zOTksNiArNDAyLDcgQEAgY2xh
c3MgUGFnZUxvYWRTdGF0ZU9ic2VydmVyIGZpbmFsIDogcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9i
c2VydmVyIHsKIAogI2lmIFBMQVRGT1JNKFdQRSkKIGNsYXNzIFdlYlZpZXdDbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpWaWV3Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJWaWV3Q2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBAIC03MjUsNyArNzI5LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAg
IHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhwcml2LT5jb250ZXh0LmdldCgp
LCB3ZWJWaWV3LCBwcml2LT51c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRW
aWV3KTsKIAotICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxv
YWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKKyAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBtYWtl
VW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CiAgICAgZ2V0UGFnZSh3ZWJW
aWV3KS5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKnByaXYtPmxvYWRPYnNlcnZlcik7CiAK
ICAgICAvLyBUaGUgcmVsYXRlZCB2aWV3IGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoZSBjb25zdHJ1
Y3Rpb24uCkBAIC03NDEsNyArNzQ1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1BFKQotICAg
IHByaXYtPnZpZXctPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYlZpZXdDbGllbnQ+KHdl
YlZpZXcpKTsKKyAgICBwcml2LT52aWV3LT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJWaWV3Q2xp
ZW50Pih3ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgYWZ0ZXIg
YXR0YWNoVUlDbGllbnRUb1ZpZXcoKSBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQo
KSBjYWxscyBzZXRDYW5SdW5Nb2RhbCgpIHdpdGggdHJ1ZS4KQEAgLTM3MDEsNiArMzcwNSw3IEBA
IGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgY29uc3QgY2hhcioKIH0KIAogc3RydWN0IFZpZXdTYXZlQXN5bmNEYXRhIHsK
KyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmVmUHRyPEFQSTo6RGF0
YT4gd2ViRGF0YTsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggZjA5ZDZj
N2U5MjA2ODNhNzU2NjUyNzY5NjdlNzQ3Y2M2Y2VlYjQ4MS4uMDZiM2I4MzYwNjVkOWY2NmEwNzk4
YTIwOTU1MTNjYTg2OGIzMWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUGFnZUNsaWVudElt
cGw6OlBhZ2VDbGllbnRJbXBsKEd0a1dpZGdldCogdmlld1dpZGdldCkKIC8vIFBhZ2VDbGllbnQn
cyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94
eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9X
RUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndlYmtpdFdlYlZpZXdC
YXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSwgcHJvY2Vzcyk7
CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2Vi
Q29yZTo6UmVnaW9uJiByZWdpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKaW5kZXggMzFlMDk3M2ZlMTAwM2M2ZWE2
NTIzMDYxYTY3Yzk0OWQ1M2ViZDZiNy4uMmQxYzJjYjM2OGE5OTMzMTY5NzQyNDZhMGVkNTk5YzI4
ZGNhZTZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRFbW9qaUNob29zZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RW1vamlDaG9vc2VyLmNwcApAQCAtNTE5LDcgKzUxOSw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0aW9ucyhXZWJLaXRFbW9qaUNob29zZXIqIGNo
b29zZXIsIEd0CiAgICAgICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9
IG51bGxwdHI7CiAgICAgfTsKIAotICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNU
aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RGTW92ZShwb3B1bGF0ZVNl
Y3Rpb25zKSk7CisgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbWFr
ZVVuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsKICAgICBj
aG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnNldFByaW9yaXR5KEdfUFJJT1JJ
VFlfREVGQVVMVF9JRExFKTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGlt
ZXItPnNldE5hbWUoIltXZWJLaXRFbW9qaUNob29zZXJdIHBvcHVsYXRlIHNlY3Rpb25zIHRpbWVy
Iik7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zdGFydFJlcGVh
dGluZyh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CmluZGV4IDBmNjc0ODY0NTJjZDFmYTg3YTgyODYyZTdlNjA1NzM0ZGZjMzU5NjguLjViYTYxMGU3
ZDlhNDRkMDQ3MzgzODFlMjNkMDQwYmRhOTJjM2ZjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgU2NyaXB0TWVzc2FnZUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNzYWdlQ2xp
ZW50KFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciYgaW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyKQogICAgICAgICA6IG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKGluc3BlY3RvclByb3Rv
Y29sSGFuZGxlcikKQEAgLTEwNSwxMyArMTA2LDEzIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVl
CiAgICAgYXV0byogdXNlckNvbnRlbnRNYW5hZ2VyID0gd2Via2l0X3dlYl92aWV3X2dldF91c2Vy
X2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KTsKICAgICBhdXRvIHVzZXJDb250ZW50TWFuYWdlclJl
c3VsdCA9IG1fdXNlckNvbnRlbnRNYW5hZ2Vycy5hZGQodXNlckNvbnRlbnRNYW5hZ2VyKTsKICAg
ICBpZiAodXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgYXV0
byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5p
cXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50
PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOwogICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoaGFuZGxlci5nZXQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfcmVmKEdfT0JKRUNUKHVz
ZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KHVzZXJDb250
ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0KIAogICAgIGF1dG8qIGNsaWVudCA9
IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBbdGhp
cywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
SW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVx
dWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKTsKIAogICAgIEdTdHJpbmcqIGh0bWwgPSBnX3N0cmluZ19uZXcoCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKaW5k
ZXggMGYwMTcxMWU3OTYxZThiMDBjNWU1NzRkMjg4NTBkMDViMjQxZjZlYy4uODBkMjBhYTc2MDNi
YWRhYjkwMGZlNGJkMTU5MGFhZDM5YjMwZTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcApAQCAtMjg0LDYgKzI4
NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQoV2ViS2l0
V2ViSW5zcGVjdG9yQ2xhc3MqIGZpbmRDbGFzcykKIH0KIAogY2xhc3MgV2ViS2l0SW5zcGVjdG9y
Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkluc3BlY3RvclByb3h5Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJLaXRJbnNwZWN0
b3JDbGllbnQoV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IpCiAgICAgICAgIDogbV9pbnNw
ZWN0b3IoaW5zcGVjdG9yKQpAQCAtMzYwLDcgKzM2MSw3IEBAIFdlYktpdFdlYkluc3BlY3Rvciog
d2Via2l0V2ViSW5zcGVjdG9yQ3JlYXRlKFdlYkluc3BlY3RvclByb3h5KiB3ZWJJbnNwZWN0b3Ip
CiB7CiAgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBXRUJLSVRfV0VCX0lOU1BF
Q1RPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiwgTlVMTCkpOwogICAg
IGluc3BlY3Rvci0+cHJpdi0+d2ViSW5zcGVjdG9yID0gd2ViSW5zcGVjdG9yOwotICAgIHdlYklu
c3BlY3Rvci0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50
PihpbnNwZWN0b3IpKTsKKyAgICB3ZWJJbnNwZWN0b3ItPnNldENsaWVudChtYWtlVW5pcXVlPFdl
YktpdEluc3BlY3RvckNsaWVudD4oaW5zcGVjdG9yKSk7CiAgICAgcmV0dXJuIGluc3BlY3RvcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcAppbmRleCAxYjlkZDhkMWY0NjAyMTRmNWE3NzI2NzJjMmZiNjUzNzBiNTIw
YzVlLi44OGIzY2Y0M2JmZTY4ZWU5N2M3MzFiNzY0ZDQ0OTkwYTdiZmM1YThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cApAQCAtNTY2LDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIGd0a19kcmFnX2Rlc3Rfc2V0X3RhcmdldF9saXN0
KHZpZXdXaWRnZXQsIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLnRhcmdldExpc3QoKSk7
CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdf
QkFTRShvYmplY3QpLT5wcml2OwotICAgIHByaXYtPnBhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3V2lkZ2V0KTsKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlld1dpZGdldCk7CiAgICAgcHJpdi0+ZGlhbG9n
ID0gbnVsbHB0cjsKIH0KIApAQCAtMTIyMCw3ICsxMjIwLDcgQEAgR2VzdHVyZUNvbnRyb2xsZXIm
IHdlYmtpdFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXcKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFz
ZS0+cHJpdjsKICAgICBpZiAoIXByaXYtPmdlc3R1cmVDb250cm9sbGVyKQotICAgICAgICBwcml2
LT5nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VzdHVyZUNvbnRyb2xsZXI+
KEdUS19XSURHRVQod2ViVmlld0Jhc2UpLCBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoR2VzdHVyZUNv
bnRyb2xsZXI+KHdlYlZpZXdCYXNlKSk7CisgICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSks
IG1ha2VVbmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmlld0Jhc2UpKTsKICAgICBy
ZXR1cm4gKnByaXYtPmdlc3R1cmVDb250cm9sbGVyOwogfQogCkBAIC0xNTAxLDcgKzE1MDEsNyBA
QCBEcmFnQW5kRHJvcEhhbmRsZXImIHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5kbGVy
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+ZHJhZ0FuZERyb3BI
YW5kbGVyKQotICAgICAgICBwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERyYWdBbmREcm9wSGFuZGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CisgICAgICAgIHByaXYt
PmRyYWdBbmREcm9wSGFuZGxlciA9IG1ha2VVbmlxdWU8RHJhZ0FuZERyb3BIYW5kbGVyPigqcHJp
di0+cGFnZVByb3h5KTsKICAgICByZXR1cm4gKnByaXYtPmRyYWdBbmREcm9wSGFuZGxlcjsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJWaWV3QmFz
ZSogd2Via2l0V2ViVmlld0Jhc2UKICAgICBpZiAocHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVy
KQogICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXItPmNvbm5lY3RUb1Byb2Nlc3Mo
KTsKICAgICBlbHNlIHsKLSAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQ
cm94eSk7CisgICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8
V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAgICAg
ICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXItPnNldFN3aXBlR2VzdHVyZUVuYWJsZWQocHJp
di0+aXNCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlRW5hYmxlZCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAyY2FiMmUwNTM4NmQ0
MmIzNzFmNDQwNmFiNzFhN2Y2NTkzMGY3ZDc3Li4xNDYwM2Q1YWZlYmFmNmRlZTAxMTk3OTU3NzAz
ODgzNDlkNGU3YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQpAQCAtODk1LDYgKzg5NSw3IEBAIC0gKHZvaWQpbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGll
bnQKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGNsYXNz
IEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxp
Y2l0IEljb25Mb2FkaW5nQ2xpZW50KFdLVmlldyAqd2tWaWV3KQogICAgICAgICAgICAgOiBtX3dr
Vmlldyh3a1ZpZXcpCkBAIC05MzIsNyArOTMzLDcgQEAgLSAodm9pZCltYXliZUluc3RhbGxJY29u
TG9hZGluZ0NsaWVudAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAg
ICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpJY29uTG9hZGluZ0NsaWVudDo6ZGVsZWdh
dGVTZWxlY3RvcigpXSkKLSAgICAgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCkuc2V0SWNvbkxvYWRp
bmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oc2VsZikpOworICAg
ICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVl
PEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wm
KXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYm
KWNvbmZpZ3VyYXRpb24KQEAgLTk0NCw3ICs5NDUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29s
JgogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAogICAgIF9kYXRhID0gW1tXS1Zp
ZXdEYXRhIGFsbG9jXSBpbml0XTsKLSAgICBfZGF0YS0+X2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIG51bGxwdHIsIHByb2Nlc3NQb29sLCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKTsKKyAgICBfZGF0YS0+X2ltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6
V2ViVmlld0ltcGw+KHNlbGYsIG51bGxwdHIsIHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKTsKIAogICAgIFtzZWxmIG1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAppbmRl
eCAyMTk5MWY4ZGFmMzFiNDFiMTU2NWZmZjk4NjVkZTk5MzhmYjhhMGRmLi42NGNhMmZjYjVhODUx
MjdmNWI0MTQ3MWVjZTZlYThmNDQ2Y2UwNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBWaWV3
OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFZpZXdDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflZpZXdDbGllbnQoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNs
aWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5jcHAKaW5kZXggODUxMjlhNTQ4N2M5ZmZiZWQ1NjY0NmNjMTBkZDE4ODNjOTg3NTZkMy4u
ZTIwOGE1YzU1ZDc1ODg1NzNkZmY0MzYwMzM3N2VmOGQxNjM1ODVhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbChXS1dQRTo6VmlldyYgdmlldykKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9zY3Jv
bGxHZXN0dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEdlc3R1cmVDb250cm9s
bGVyPigpKQorICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcihtYWtlVW5pcXVlPFNjcm9s
bEdlc3R1cmVDb250cm9sbGVyPigpKQogewogfQogCkBAIC02Myw3ICs2Myw3IEBAIElQQzo6QXR0
YWNobWVudCBQYWdlQ2xpZW50SW1wbDo6aG9zdEZpbGVEZXNjcmlwdG9yKCkKIAogc3RkOjp1bmlx
dWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJl
YVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4obV92aWV3LnBhZ2Uo
KSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1
cmVDb250cm9sbGVyLmgKaW5kZXggOWM5ZjZlOWUzYjE4YjQyZjUzZjcyZjhlYjU1YTRlNjc1NWRi
NDdhMi4uM2Y2MzI1MTIxZDgyOGUzNThhZDE1Yjc2YzRkNWNkYzQ4Mzc1ZGMxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFNjcm9sbEdlc3R1cmVDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcigpID0gZGVmYXVsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0
ZThjMWZhNDkxMDlhYTI4NTViOGJiNDE1NzE3MDQ0Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDky
ODQ5ODQ0MGQwMzBjZTA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQ
RVZpZXcuY3BwCkBAIC00Miw4ICs0Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1l
c3BhY2UgV0tXUEUgewogCiBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNr
ZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAg
ICA6IG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwg
bV9wYWdlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAg
ICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdl
Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7
IDgwMCwgNjAwIH0KICAgICAsIG1fdmlld1N0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpXaW5kb3dJc0FjdGl2ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzSW5XaW5kb3cgfQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcg
QEAgVmlldzo6flZpZXcoKQogdm9pZCBWaWV3OjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6Vmlld0NsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1f
Y2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1f
Y2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAg
ICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZh
ODUzNjU5Y2M1YjEzNTYxY2IzNjZjLi5iNGYyN2I2ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1
ZDA5ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQ
RVF0Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVR
dFZpZXcuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRD
aGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCBldmVudCwKIAog
ICAgIGlmIChzdGF0dXNTZXQpIHsKICAgICAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRl
IGxvYWRSZXF1ZXN0UHJpdmF0ZSh2aWV3LT51cmwoKSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVz
dCA9IG1ha2VVbmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7
CiAgICAgICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7
CiAgICAgfQogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2Fk
RmFpbGVkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QKICAg
ICAgICAgbG9hZFN0YXR1cyA9IFdQRVF0Vmlldzo6TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1
czsKIAogICAgIFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUo
UVVybChRU3RyaW5nKGZhaWxpbmdVUkkpKSwgbG9hZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3Qg
PSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwog
ICAgIFFfRU1JVCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAK
QEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2Jq
ZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BF
UXRWaWV3OjpydW5KYXZhU2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFs
dWUmIGNhbGxiYWNrKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tE
YXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxs
YmFjaywgUVBvaW50ZXI8V1BFUXRWaWV3Pih0aGlzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEph
dmFzY3JpcHRDYWxsYmFja0RhdGE+IGRhdGEgPSBtYWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFj
a0RhdGE+KGNhbGxiYWNrLCBRUG9pbnRlcjxXUEVRdFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRf
d2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQobV93ZWJWaWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCku
Y29uc3REYXRhKCksIG51bGxwdHIsIGpzQXN5bmNSZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2Uo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQv
V1BFUXRWaWV3QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0
L1dQRVF0Vmlld0JhY2tlbmQuY3BwCmluZGV4IGE4NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5
YzJkZDNhYmQxZjkuLjEzZmQzN2FlZmYyYjY1MzVkNTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFj
a2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZp
ZXdCYWNrZW5kLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3
QmFja2VuZD4gV1BFUXRWaWV3QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQog
ICAgIGlmICghZWdsQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBl
Z2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZp
ZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsK
IH0KIAogV1BFUXRWaWV3QmFja2VuZDo6V1BFUXRWaWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNp
emUsIEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29udGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxR
T3BlbkdMQ29udGV4dD4gY29udGV4dCwgUVBvaW50ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgKaW5kZXgg
NDIwOGU4ZjIyZTBhYTRlZGQ4NWI1MjI1OTA0YzJkYzQ5OWIwNWU5Ni4uOTQ5MzdiMDAxOTQ2MjUz
NjJmNjQ0Y2E3NzA1MDhkMGRhYTY3NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xB
U1MgVUlWaWV3OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uU3RhdGVU
cmFja2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIoVUlWaWV3ICosIFNFTCBkaWRFbnRlckJhY2tncm91bmRTZWxlY3RvciwgU0VM
IGRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kU2VsZWN0b3IsIFNF
TCB3aWxsRW50ZXJGb3JlZ3JvdW5kU2VsZWN0b3IpOwogICAgIH5BcHBsaWNhdGlvblN0YXRlVHJh
Y2tlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBlMzM1NDNiN2JkYTFkNTkzZjMwNDUz
YWU0ZDY5YmYyNWRlNzQwY2JlLi5hYjlkNDg0M2ZmNzUwMzg5MjE3MzRhY2UzNDQxZjFkMTU3NTgw
NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzMsMTEgKzczLDExIEBAIHN0YXRpYyBj
b25zdCBTZWNvbmRzIGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQgPSAzMDBfczsKIHN0YXRpYyBjb25z
dCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5IGRlZmF1
bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwogCiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21h
dGlvblNlc3Npb24oKQotICAgIDogbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50PigpKQorICAgIDogbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVu
ZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9kb21h
aW5EaXNwYXRjaGVyKEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9kb21haW5Ob3RpZmllcihzdGQ6Om1ha2VfdW5p
cXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9kb21haW5Ob3RpZmllcihtYWtlVW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNo
ZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmV2ViQXV0b21hdGlvblNlc3Npb246OmxvYWRUaW1lckZpcmVkKQogewogI2lmIEVO
QUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5
YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3ZTg3YzUxZGM0YWU5ZDYzOWIxZDRmMzI2MzgwNjhiMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
CkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYm
IG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDwKIHsKICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRv
IGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1l
KCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAg
IHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25D
bGllbnQuaAppbmRleCAxMGE4ZTQyNDEzYjI5YWZmYjYzNzdkODRhMDliZTUxMWJkMjUxZDVjLi5k
ZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFhNDAxNTdjOTRmMmZhOWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgK
QEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudChpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGlu
Z0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0Rl
bGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3MjM5NzMyMDVjYzZkZjRjYzY2YTY3OTA2YzAyOWIwZC4u
MDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlkZjQyYzIzYzE0ZDYwNWFkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaApAQCAtMzcs
NiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3ICopOwogICAgIH5JY29uTG9hZGluZ0RlbGVn
YXRlKCk7CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgewogCiBw
cml2YXRlOgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxv
YWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KEljb25Mb2FkaW5nRGVsZWdh
dGUmKTsKICAgICAgICAgfkljb25Mb2FkaW5nQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQppbmRleCBhMzQ0ZGZm
OWNlMGQ1MzVjYTMwZGIyYmViNWJjYmQ3YzBkNzRjZmI0Li4xNjNmYjk1MmVlMGVhOWI3MWEzZDQ5
ZDNkZDk3Y2UwMDQzY2M2OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgSWNvbkxvYWRp
bmdEZWxlZ2F0ZTo6fkljb25Mb2FkaW5nRGVsZWdhdGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJY29uTG9hZGluZ0NsaWVudD4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRp
bmdDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xp
ZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KCp0
aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxfV0tJY29uTG9hZGluZ0RlbGVnYXRlPiA+IEljb25M
b2FkaW5nRGVsZWdhdGU6OmRlbGVnYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCmluZGV4IGE1MWEyMjM2MjM4NDE1MWFiMTFkNDg5NDM2OWY4YTE4NTgw
MDY3ZGEuLmY1MTM3ZjljYzczMTYzODhlNjFkZTEwNzczZmYzNDI4NTYyNTA1OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtNzgsMTMgKzc4LDEz
IEBAIFVJRGVsZWdhdGU6On5VSURlbGVnYXRlKCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
IHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiBVSURlbGVnYXRlOjpjcmVh
dGVDb250ZXh0TWVudUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVu
dUNsaWVudD4oKnRoaXMpOwogfQogI2VuZGlmCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xp
ZW50PiBVSURlbGVnYXRlOjpjcmVhdGVVSUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxVSUNsaWVu
dD4oKnRoaXMpOwogfQogCiBSZXRhaW5QdHI8aWQgPFdLVUlEZWxlZ2F0ZT4gPiBVSURlbGVnYXRl
OjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDQ4YzJiMmI0ZTA2
MTA2OTI3MmFlYjhiOTRhMjM0ZWFhOTI2YWY3NmQuLjkxY2Y5NDgwYzc1MThjZDliYjE3ZTlmY2E0
ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC00NSw2ICs0
NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNs
YXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5IDogcHVibGljIFJl
YWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyLCBwdWJsaWMgU2hhcmVkUmluZ0J1ZmZlclN0b3Jh
Z2U6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
U291cmNlUHJveHkodWludDY0X3QgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
biwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogICAgICAgICA6IG1faWQoaWQp
CkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5Ojpj
cmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICAgICAgc291
cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsKICAgICAgICAgc2V0dGluZ3MgPSBzb3VyY2UtPnNldHRp
bmdzKCk7CiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAg
IG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6bWFrZV91bmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9w
cm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CisgICAgICAgIG1fcHJveGll
cy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rp
b24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGludmFsaWRDb25z
dHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5lcnJvck1lc3NhZ2UpOwogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwgaW52YWxpZENvbnN0cmFpbnRzLCBXVEZNb3ZlKHNldHRp
bmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKaW5kZXggOWNhNmZhMzUzNDk2MDE4MDNkZjVk
M2QxYjJhYmEzMTY1NTc0MGMzOS4uOWJkZGI5OTA5ZGY3ZThmZWYxZTU0ODA2Y2JlNmJjNWM0MGNm
YzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBT
aGFyZWRNZW1vcnk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFVzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQcm94eSYpOwogICAgIH5Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzMDcwZDU3NDQzZmRmNzE5NjA4NjAzMGUz
ZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQyZmEyYTA4NjA0MTdjNmNmODBkN2JjZTU5YjlhNzM5YWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemUoKQogICAgIGlmICghW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Il0pCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKTsKIAotICAgIHNldExl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisgICAgc2V0TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50PigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01MTQsNyArNTE0LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayhJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9ic2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlMaW5rID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5
TGluaz4oZGlzcGxheUlEKTsKKyAgICBhdXRvIGRpc3BsYXlMaW5rID0gbWFrZVVuaXF1ZTxEaXNw
bGF5TGluaz4oZGlzcGxheUlEKTsKICAgICBkaXNwbGF5TGluay0+YWRkT2JzZXJ2ZXIoY29ubmVj
dGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAgbV9kaXNwbGF5TGlua3MuYXBwZW5kKFdURk1vdmUoZGlz
cGxheUxpbmspKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggNWMyMWNhNzVhMTgyOWM1MGYxZDgyZjU3Nzc4
YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3YjQ2MDU0OGNlMGY4NmQ3YTVkMTE3YTY3Njc4YzRmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKQog
ICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIgPSBbYWN0aXZpdHlUb2tl
biA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVk
KCkgLSBsYW1iZGEsIGJhY2tncm91bmQgYWN0aXZpdHkgdGltZWQgb3V0Iiwgd2Vha1RoaXMuZ2V0
KCkpOwogICAgIH07Ci0gICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92ZShiYWNrZ3JvdW5k
QWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0aW9uKTsKKyAg
ICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpEZWZlcnJh
YmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRBY3Rpdml0eVRpbWVvdXRIYW5kbGVy
KSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOwogICAgIGNvbXBsZXRpb24oKTsKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRl
eCBjYWIwNTUwOWZiNmQwMmJiNDNlODhkOGQ2NTQ4OWZmYjcyMmZlODAyLi44ZGY0ZGE3YjMyMDgw
OTQ2ZGY3MWM5MjgyMTY1M2Y2ZWE5NDA3NTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTMxNSw3ICsxMzE1LDcgQEAgc3RhdGljIE5TVHJh
Y2tpbmdBcmVhT3B0aW9ucyB0cmFja2luZ0FyZWFPcHRpb25zKCkKIAogV2ViVmlld0ltcGw6Oldl
YlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmlldyAq
b3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAs
IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRl
cldlYlZpZXcpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+
KHZpZXcsIG91dGVyV2ViVmlldykpCiAgICAgLCBtX3BhZ2UocHJvY2Vzc1Bvb2wuY3JlYXRlV2Vi
UGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSkKICAgICAsIG1fbmVl
ZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKG1fcGFnZS0+cHJlZmVyZW5jZXMoKS5wbHVn
aW5zRW5hYmxlZCgpKQogICAgICwgbV9pbnRyaW5zaWNDb250ZW50U2l6ZShDR1NpemVNYWtlKE5T
Vmlld05vSW50cmluc2ljTWV0cmljLCBOU1ZpZXdOb0ludHJpbnNpY01ldHJpYykpCkBAIC0xMzUz
LDcgKzEzNTMsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoTlNWaWV3IDxXZWJWaWV3SW1w
bERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldlYgogICAgIHZpZXcubGF5ZXJDb250
ZW50c1BsYWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQbGFjZW1lbnRUb3BMZWZ0OwogCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOworICAg
IG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVl
bkNsaWVudD4odmlldykpOwogI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGlj
cygpLndrVmlld0NvdW50Kys7CkBAIC0xNzExLDkgKzE3MTEsOSBAQCBDR1NpemUgV2ViVmlld0lt
cGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3
aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgaWYgKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXQyVXNlUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEiXSBib29sVmFsdWVdKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3Bh
Z2UsIHByb2Nlc3MpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nl
c3MpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcoKSBj
b25zdApAQCAtMzM1Niw3ICszMzU2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJlZmVyZW5jZXNE
aWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGV4dEluZGljYXRvcihXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93
TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAgICAgaWYgKCFtX3RleHRJbmRpY2F0b3JXaW5kb3cpCi0g
ICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxlYXNlZCgpKTsKKyAgICAgICAg
bV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
V2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOwogCiAgICAgTlNSZWN0IHRleHRCb3Vu
ZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW1ttX3ZpZXcgd2luZG93XSBjb252ZXJ0UmVj
dFRvU2NyZWVuOlttX3ZpZXcgY29udmVydFJlY3Q6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdS
ZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5pbF1dOwogICAgIG1fdGV4dEluZGlj
YXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVj
dCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyksIGxpZmV0aW1lKTsKQEAgLTQz
NTgsNyArNDM1OCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNhdmVCYWNrRm9yd2FyZFNuYXBzaG90
Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogVmlld0dlc3R1cmVDb250cm9s
bGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIoKQogewogICAgIGlmICgh
bV9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOworICAgICAgICBtX2dl
c3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KG1fcGFn
ZSk7CiAgICAgcmV0dXJuICptX2dlc3R1cmVDb250cm9sbGVyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmlu
ZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5ZTU4Y2NkYTEwZjNlYTQ0NGMyNzYuLjYyNjRkZGI3Zjc5
MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2NWQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0yNDAsNyAr
MjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6aW5jb3Jw
b3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXAKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5mby5kZXZp
Y2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2JhY2tpbmdTdG9yZSA9
IG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZvLnZpZXdTaXplLCB1cGRhdGVJbmZv
LmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7CiAKICAgICBtX2JhY2tpbmdTdG9y
ZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2
b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRjaEFmdGVyRW5z
dXJpbmdEcmF3aW5nKFdURjo6RnVuYwogICAgIH0KIAogICAgIGlmICghbV9kcmF3aW5nTW9uaXRv
cikKLSAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdNb25pdG9yPihtX3dlYlBhZ2VQcm94
eSk7CisgICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOwog
ICAgIG1fZHJhd2luZ01vbml0b3ItPnN0YXJ0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5jcHAKaW5kZXggYTJkMDM4NmFjZjVkOGFkNTM1Yzc5MTJhODg2Y2JkMGYwMDU0Nzg2OC4u
NmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2NjVlZTFiNzg2OTZhNmE0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMTc4
LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6SGFz
aFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9yCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgp
KSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2
aWNlSWRIYXNoU2FsdCkpOworICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVl
PEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwg
V1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2aWNl
SWRIYXNoU2FsdCkpOwogCiAgICAgaGFzaFNhbHRGb3JPcmlnaW4tPmxhc3RUaW1lVXNlZCA9IFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0VGltZVVzZWQpOwogCkBAIC0yMTksNyArMjE5LDcg
QEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0
Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKIAogICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNo
U2FsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgICAgICBhdXRvIG5ld0hhc2hTYWx0Rm9y
T3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShkb2N1
bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hT
YWx0KSk7CisgICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhh
c2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShwYXJlbnRP
cmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAogICAgICAgICByZXR1cm4gbmV3
SGFzaFNhbHRGb3JPcmlnaW47CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCmlu
ZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5OWE1MDM0NGYzMTI1MWY1ZTk2ODQuLmRjNWFkZjFhM2U0
Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1Y2E3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKQEAgLTg4LDExICs4
OCwxMSBAQCBEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFBy
b3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbAogCiAgICAgaWYgKG1fZG93bmxvYWRzLnNp
emUoKSA9PSAxICYmIG1fc2hvdWxkVGFrZUFzc2VydGlvbikgewogICAgICAgICBBU1NFUlQoIW1f
ZG93bmxvYWRVSUFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRVSUFzc2VydGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAi
V2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcp
OworICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAgICAgICBBU1NFUlQoIW1fZG93
bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9j
ZXNzKTsKLSAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
IldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5n
KTsKKyAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFBy
b2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBk
b3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAg
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyB0b29rICdXZWJL
aXQgZG93bmxvYWRzJyBhc3NlcnRpb25zIGZvciBVSVByb2Nlc3MgYW5kIE5ldHdvcmtQcm9jZXNz
Iik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmlu
ZGV4IDNkZWY1ZDc5ZjA3Y2I5MTQwYjgyNTYyZGI5ZjZmMmJjNmQwZjcyZjYuLjU2MDZjNTExNjUz
NGY0M2NmYzgwNmQ1MTFkNDFlZDk4Y2ZiMjUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5IDogcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcm90ZWN0ZWQgSVBDOjpNZXNzYWdlU2VuZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
cmF3aW5nQXJlYVByb3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBlY2FhYzMwMWI0YmRm
NDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRmNjQwLi5mNGI3YmVhNjU4NTA5OTFlOTQ5NGE2MjIzZDU0
Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1l
cGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFVJR2FtZXBh
ZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMoY29uc3QgVmVjdG9yPFBsYXRm
b3JtR2FtZXBhZAogICAgIGZvciAoYXV0byogZ2FtZXBhZCA6IGluaXRpYWxHYW1lcGFkcykgewog
ICAgICAgICBpZiAoIWdhbWVwYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9n
YW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPigq
Z2FtZXBhZCk7CisgICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBtYWtlVW5p
cXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcG9vbCA6
IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcykKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFk
JiBnYW1lcGFkKQogICAgICAgICBtX2dhbWVwYWRzLmdyb3coZ2FtZXBhZC5pbmRleCgpICsgMSk7
CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7Ci0gICAgbV9nYW1l
cGFkc1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVw
YWQpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IG1ha2VVbmlxdWU8VUlHYW1l
cGFkPihnYW1lcGFkKTsKIAogICAgIHNjaGVkdWxlR2FtZXBhZFN0YXRlU3luYygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3Jh
cGhpY3NVc2FnZVNhbXBsZXIuaAppbmRleCA3ZDU2YjBhMjQ2M2RlZGYxNjY5NThjMjhmZmI3NWFh
MGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVlZTJlZmExYmQwNWEyYTc1NjExMWExNWQ5OGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1Vz
YWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgSGlnaFBlcmZvcm1hbmNlR3JhcGhp
Y3NVc2FnZVNhbXBsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKFdlYlByb2Nl
c3NQb29sJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk0ZmFmNmI5ZGUyNjIwMWQ4NGQyNmZmODM5
MzNmODIyOWMwNWQ2YjkuLjI3N2NhMDQ0ZTQwN2IwN2JjNGFmNThmMjIyMTdjYjZiNjg0MjhhYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpCiBEb3dubG9h
ZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFBy
b3h5TWFwKQotICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERv
d25sb2FkUHJveHlNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0gbWFr
ZVVuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7CiAKICAgICByZXR1cm4gbV9kb3dubG9h
ZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVx
dWVzdCk7CiB9CkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKCkKIHsKICAgICBB
U1NFUlQoIW1fdXBsb2FkQXNzZXJ0aW9uKTsKLSAgICBtX3VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktp
dCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAg
bV91cGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3NJ
ZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRl
ZE5ldHdvcmtpbmcpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyVXBsb2Fk
QXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNDMzNTQ1YzBlMzNmYWFlZWQ5ZGViYjM0ZjZiMjBj
ZmNhZTVlOTVjOC4uNTk1YjNlZTQxNWNkZjcwNDYwOWM1MzZjOTBhYmEyNTk3MTdkNDY3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkg
ZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJv
dHRsZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVnaXN0
cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBUb3BG
cmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDJhYWZmMWVjMmE2NTQ5MGQ4ODU0Mzk5NmJm
ODEwMmMyZDQ5YzUwNDIuLjQ3YTNlOWIyM2JhMTI2NTE5OGI2MGVkZGY2YzRkZDk4NmZjZDIwMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTU2LDE0ICs1
NiwxNCBAQCBSZWY8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUAogCiBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vz
c1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1f
cHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQor
ICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkp
CiB7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsK
ICAgICBpZiAoIXByb3ZpZGVyKSB7Ci0gICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBt
YWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlYzY0YmM5ZTE2
MmNiN2NhMWU3NTM3ZTkzMzFkNGYxMzk1ODdlYzQxLi42Y2Y1ZTE0ZWE1NjlmMjNkYTg0NzU0MDk2
Y2E1MTE0NTNjMjk4YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0x
NjgsNiArMTY4LDcgQEAgdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7CiAj
ZW5kaWYKIAogY2xhc3MgUGFnZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWdlQ2xp
ZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UGFnZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKaW5kZXggMDFhN2RhN2I4OTFh
OTAwNjZjOTBlODQyOWM2NTZiZDcwMGIxNjZiZC4uZWE0MzkyN2Q0OGQ3NTJiZWI2NzI4MDk0OTlj
OWFkMGJmZTA3YmM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFz
cyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihXZWJQ
cm9jZXNzUG9vbCYpOwogICAgIH5QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJv
Y2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggZjZmNDc5YjFlMDM5MmYzMjIxNjBhNjQ5
NGFlYzYyZTBhMDY3OTZkZC4uODQzNjlkMzM0NDA3Y2ZiYzJlODNhYTgyN2M1Y2MwZTVkYjkxMjJl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
blByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYQogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyBib29sIHBsdWdp
blJlcXVpcmVzR3RrMihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KHBsdWdpblBh
dGgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IG1ha2VVbmlxdWU8TW9k
dWxlPihwbHVnaW5QYXRoKTsKICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPGdwb2ludGVyPigi
Z3RrX29iamVjdF9nZXRfdHlwZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmNwcAppbmRleCAwMGE5OTE4ODYxNDg3MzkzOGE2Y2I0YWJkOTkxNGJjODYyOTQ1
Y2Y3Li40Y2UyNjJlOWRjYmI0YjFiMGZmMGFkNWRiOTdlYjk3ZjM2MDczNzVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtMTAzLDkgKzEwMyw5
IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2VzcyhQcm9jZXNzSUQg
cGlkKQogCiAgICAgbV9zdXNwZW5kVGltZXIuc3RvcCgpOwogICAgIGlmIChtX3Nob3VsZFRha2VV
SUJhY2tncm91bmRBc3NlcnRpb24pCi0gICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHki
X3MsIGFzc2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8
UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBh
c3NlcnRpb25TdGF0ZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5
Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2Vy
dGlvblN0YXRlKCkpOwogICAgIG1fcHJvY2Vzcy5kaWRTZXRBc3NlcnRpb25TdGF0ZShhc3NlcnRp
b25TdGF0ZSgpKTsKICAgICBtX2Fzc2VydGlvbi0+c2V0Q2xpZW50KCp0aGlzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggNjBmMDJj
NjEwZmNkOTg4MzA2MzljNTdiM2U5ZDYxZmYxZmQ1MjVmZC4uMjc0YWJkMzAyOWMwMDc3MzM5ZGZl
Mzc0OGZmMzA2OTdjOWI0OGI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkubW0KQEAgLTEwNyw3ICsxMDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKQogICAgIDogRHJhd2luZ0FyZWFQcm94eShEcmF3aW5nQXJlYVR5cGVSZW1v
dGVMYXllclRyZWUsIHdlYlBhZ2VQcm94eSwgcHJvY2VzcykKLSAgICAsIG1fcmVtb3RlTGF5ZXJU
cmVlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKKyAg
ICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+
KCp0aGlzKSkKIHsKICNpZiBIQVZFKElPU1VSRkFDRSkKICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IHBvb2wgc3VyZmFjZXMgaW4gdGhlIFVJIHByb2Nlc3MuCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp1cGRhdGVEZWJ1Z0luZGljYXRvcihJ
bnRTaXplIGNvbnRlbnRzU2l6ZSwKIAogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKQogewotICAgIG1fZGVidWdJbmRpY2F0b3JM
YXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhp
cyk7CisgICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3QgPSBtYWtlVW5pcXVlPFJlbW90
ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKICAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9z
dC0+c2V0SXNEZWJ1Z0xheWVyVHJlZUhvc3QodHJ1ZSk7CiAKICAgICBtX3RpbGVNYXBIb3N0TGF5
ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5tbQppbmRleCAzMDAyNWQ0Mjk5ZjNiY2EwNDg1ZDMwNGQ4MzM1ODE3NjEwYmE1MGJkLi44
YTRlNTA0ODE3ZWJjMTI1Y2U4OThjMWMyOTFkOWE2ZTRkNWY1ODJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlTGF5ZXIoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3Jl
CiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9z
dDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRp
b25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIGF1dG8gbWFrZVdpdGhMYXllciA9IFsm
XSAoUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZShs
YXllcikpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihw
cm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKICAgICB9OwogICAgIGF1dG8gbWFr
ZUFkb3B0aW5nTGF5ZXIgPSBbJl0gKENBTGF5ZXIqIGxheWVyKSB7CiAgICAgICAgIHJldHVybiBt
YWtlV2l0aExheWVyKGFkb3B0TlMobGF5ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0K
aW5kZXggZTg4YmJjNjA4ZDRmYjA1ODM4NGQyOWIyNjk4MTU5MmVkYTgxNGViYS4uNGZkNGVhMjY5
ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBkODQyNDA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW0KQEAgLTczLDcgKzczLDcgQEAgUmVtb3RlTGF5ZXJUcmVlTm9kZTo6flJlbW90ZUxheWVy
VHJlZU5vZGUoKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxh
eWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKQogewogICAgIFJldGFpblB0cjxDQUxheWVyPiBsYXll
ciA9IGFkb3B0TlMoW1tXS1BsYWluUmVtb3RlTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihsYXllcklELCBXVEZNb3Zl
KGxheWVyKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4obGF5
ZXJJRCwgV1RGTW92ZShsYXllcikpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZU5vZGU6OmRl
dGFjaEZyb21QYXJlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCmluZGV4IGMyNzgxZGM4YWRhMzQzMzlmNzllZDg1YTdl
M2U5ZmY3NjUyMjI1MjguLjI5ZGZlZmU2Y2I3MmMxMjBhNjFjYzIyZDBkM2JhNjRhNmQ5NDQyNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OwogCiBjbGFzcyBSZW1vdGVMYXllclRyZWVT
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YShSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Jik7CiAgICAgflJlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5LmgKaW5kZXggODZkMGRlZmM2OTY1ZTRmYTZiYTExNjQ3NjFiYzlhYzcxOThj
NzJlNi4uMWE3Njk0M2YyNDViZTFjZDgyMmYxOTYxM2NkZDM1ZjU0MGE5NGNkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCkBAIC00OSw2ICs0OSw3
IEBAIGNsYXNzIFJlbW90ZVNjcm9sbGluZ1RyZWU7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNs
YXNzIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJl
ZUhvc3RJT1MubW0KaW5kZXggNjI5YTljNjUwZDQzYzBkNTYxYzgxOTMzYmEwZDE0ZThkMzNlYTQ0
NC4uMGMxMjZhZTZhZjc1ZTQxMzhhZmQwMDg2ODM5NTY2MjlmZjcwMDIzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVIb3N0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPFVJVmlldz4gY3JlYXRlUmVtb3RlVmlldyhwaWRfdCBwaWQsIHVpbnQzMl90IGNv
bnRleHRJRCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXll
clRyZWVIb3N0OjptYWtlTm9kZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJDcmVhdGlvblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCiB7CiAgICAgYXV0byBtYWtlV2l0aFZp
ZXcgPSBbJl0gKFJldGFpblB0cjxVSVZpZXc+IHZpZXcpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZN
b3ZlKHZpZXcpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9k
ZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKICAgICB9OwogICAgIGF1dG8g
bWFrZUFkb3B0aW5nVmlldyA9IFsmXSAoVUlWaWV3KiB2aWV3KSB7CiAgICAgICAgIHJldHVybiBt
YWtlV2l0aFZpZXcoYWRvcHROUyh2aWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KaW5kZXggODFh
MmViOWE2MzVkNTk4NDE2MDBmNzgzNTIwNGFjODRiZDZkNWMyOC4uYjg5MDY4MWU5ZTdhNTEzYmEz
NDM2N2NlZjM5ODliZTNiMTlkOWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQpAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgUwogCiAgICAgaWYgKHN0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWlu
ZXJMYXllcikpIHsKICAgICAgICAgaWYgKHNjcm9sbENvbnRhaW5lckxheWVyKCkpCi0gICAgICAg
ICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOworICAgICAgICAgICAgbV9zY3Jv
bGxpbmdOb2RlRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M+KCp0aGlzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9zY3JvbGxp
bmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQppbmRleCBiNTZl
MmVhNjRkYTUyMDMxZGZhZjEyOGVjMjQ4Y2QxNWM3MTAwOTI2Li5kMGJkZDNjNTdkYmJjYmVmMDcw
ZTg1MWFmZTA0ZWVlNmFhYjU3ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCkBAIC00Myw3ICs0Myw3IEBA
IFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEIG5v
ZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoc2Nyb2xsaW5n
VHJlZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCisgICAg
LCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCA2NDg5
YThlNzQ0MmQ3YjE3MDUyOTViNjJlZWI1YzAyNWM3YTliMzNhLi5lNjM3ZDYxNTMyNWQzODBjZTky
ZDA3YTJiMTIxOTEzZmYxODFkZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtNDgsNiArNDgsNyBAQCBj
bGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIDogcHVibGljIFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmKTsK
ICAgICB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUygpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2N2MwYjYxNjJlMDY3ODNjZjM3NmNm
NjE5MDdlMi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3OWM3NDUyOTQzNzI5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNj
cm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDog
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlVHlwZSwgbm9kZUlE
KQotICAgICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+
KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFj
PigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90
ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IGQ4OTYw
Y2VjMzBlNDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMuLmI2Y2EzY2JiYTgwODA3YWY3Yjlm
Njk5YmU5YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90
ZU1hYz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTgogCiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVJRCBub2Rl
SUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5v
ZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWly
TWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFp
ck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXIuaAppbmRleCBmMjYxZjUyNjgxNTJkMGZkZGI2ODU1MWE4NjAx
NTJlNDE2N2QwYWVjLi4yYjkwZTFiODljMGFhNWVlZWFmMDU0ZGU0MjhkZWVkNDBlNjNhOGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
LmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJv
eHk7CiAKIGNsYXNzIFN5c3RlbVByZXZpZXdDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxl
cihXZWJQYWdlUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKaW5kZXgg
ZjUwNWUyODBjNDQyOTBhODAzZGJkYjY4Yzk4ZWVhNjMwYjFjOWJiNi4uODY4YjU0ZTc5MmFmMmFi
ZDk4NmJjODY2MDA1Y2IxMmY0NTY4MjQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlclByb3h5CiAgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgogI2VuZGlmCiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5Jik7CiAgICAgflVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5t
bQppbmRleCA5ZWFlMThlZGQ1ZjRkMmRjNWRmMzhlOTZkMDUwNTA5M2JjYTliMzk4Li5hYmQwZTdl
NzI5NDc5MTI4Y2I2YWZmZjdmMjE4MTI2M2U0ZGE5ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZp
Y2UubW0KQEAgLTkyLDcgKzkyLDcgQEAgVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+IEhpZFNlcnZp
Y2U6OmNyZWF0ZUhpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogCiB2b2lkIEhp
ZFNlcnZpY2U6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKLSAgICBhdXRv
IGRyaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVj
dGlvbihkZXZpY2UpKTsKKyAgICBhdXRvIGRyaXZlciA9IG1ha2VVbmlxdWU8Q3RhcEhpZERyaXZl
cj4oY3JlYXRlSGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKICAgICAvLyBHZXQgYXV0aGVudGljYXRv
ciBpbmZvIGZyb20gdGhlIGRldmljZS4KICAgICBkcml2ZXItPnRyYW5zYWN0KGVuY29kZUVtcHR5
QXV0aGVudGljYXRvclJlcXVlc3QoQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdl
dEluZm8pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHB0ciA9IGRyaXZlci5nZXQo
KV0oVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eS5oCmluZGV4IDg1Y2U2OTA2MTExNDQyYmM2NzljYzdhNzc1Yjg2ODJkZDE1NzI4Yzku
LmY4NTJiZWQyMTMwYjQ3YzJmN2RkMjk4YWQzNTZhZWFjODdjMDI2ODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApAQCAtNDQsNiArNDQs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eSk7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggOTlkNmVhMzM0MTUzZWNmNDlkNDU4NGM3NDNkYzY4MTY4ODQxNTUyMC4u
ODQ2YTVhYTI3ZGZhYjNkMjc0Y2ZmYTQ4NzM4NjFmMjU4N2QxN2ZkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApA
QCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1BvbwogCiBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wq
IHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0g
ICAgLCBtX3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVy
PigpKQorICAgICwgbV9wcm92aWRlcihtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRl
cj4oKSkKIHsKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CkBAIC01NCw3ICs1NCw3IEBAIFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9v
bCogcHJvY2Vzc1BvCiB2b2lkIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRl
cihzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQog
ewogICAgIGlmICghcHJvdmlkZXIpCi0gICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1h
a2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgIGVsc2UKICAgICAgICAg
bV9wcm92aWRlciA9IFdURk1vdmUocHJvdmlkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKaW5kZXggMmNk
Y2QxNzY1Mjk5ZmU3NzY0OWJhYmY5ZGUzZTc0ZThiMGYwMGUzNy4uMzM2NGJjYmNjOTExODRhNmJh
NzU0MWVmOTBiMGY5NjA0Y2RlNGRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcg
QEAgdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnVwZGF0ZVBsYXliYWNrQXR0cmli
dXRlc0Zyb21NZWRpYVN0YXRlKFdlYlBhZ2UKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01h
bmFnZXI6OnNldEZvY3VzZWRNZWRpYUVsZW1lbnQoV2ViUGFnZVByb3h5JiBwcm94eSwgdWludDY0
X3QgZWxlbWVudElEKQogewotICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOworICAgIG1fZm9j
dXNlZE1lZGlhRWxlbWVudCA9IG1ha2VVbmlxdWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5
LCBlbGVtZW50SUQpOwogfQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y2xl
YXJGb2N1c2VkTWVkaWFFbGVtZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2
aWdhdGlvblN0YXRlLmgKaW5kZXggOWViOWQyOGFkZGQ1YjViMDA2ZDUwYjA4YTNkNzRmYjY5ZDE2
MjM5Mi4uMTZhNzU5YWM4YTFmZjMxNDYwNWIwOTQ2ZmZjNWFhNjU4MThlMDc0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKQEAgLTQ1LDYgKzQ1LDcg
QEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIAog
Y2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICB+V2ViTmF2
aWdhdGlvblN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IDY1Mjk4MmE4MTJhOWVmYmVmNTIxYTZhOTg5
OWZhNGJlZTVmYWYzNGMuLjFiMjlmNzlkZGZhZWEwN2I5ZTcyNDliZDc3MjM4NGVlYmY1MzBmZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1
bmRsZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQgOiBwdWJs
aWMgQVBJOjpDbGllbnQ8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9i
amVjdCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCosIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGM0YjkyYzgzY2ZlYTI5YjMxZWRiYjM0YWE4NDAyNWJhNWM4YjAzYjcuLmJkYTU5Y2Q4MDUx
NTc2NDZiMzA4ZDJmZDIzNmYzZDExODI3MWUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRS
b3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKIHsKLSAgICBhdXRvIHRh
cmdldEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQ+
KG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAg
IGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2Vu
dD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAK
ICAgICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDMyNjMxYzQ1MGViMjZkNzU0NTQ2OGI3MjZj
MTVhNDQ5ODVjOTk4YTkuLmRhNWQxMmNhMjU0Y2Y1MTFiYzEyMTc2YWEwZTI3MDJlZDU4OTdkMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzk3LDE1ICsz
OTcsMTUgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICAgICAsIG1fY29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlx
dWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KG1h
a2VVbmlxdWVSZWY8QVBJOjpIaXN0b3J5Q2xpZW50PigpKQotICAgICwgbV9pY29uTG9hZGluZ0Ns
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCkpCi0gICAgLCBt
X2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBt
X3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKLSAgICAsIG1fZmlu
ZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKLSAgICAsIG1fZmlu
ZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50Pigp
KQorICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdD
bGllbnQ+KCkpCisgICAgLCBtX2Zvcm1DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+
KCkpCisgICAgLCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKKyAgICAs
IG1fZmluZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKKyAgICAsIG1fZmlu
ZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpKQogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51
Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKICNlbmRpZgotICAg
ICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+
KCkpCisgICAgLCBtX25hdmlnYXRpb25TdGF0ZShtYWtlVW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0
ZT4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAoKm1fY29u
ZmlndXJhdGlvbi0+cGFnZUdyb3VwKCkpCiAgICAgLCBtX3ByZWZlcmVuY2VzKCptX2NvbmZpZ3Vy
YXRpb24tPnByZWZlcmVuY2VzKCkpCkBAIC00MTYsNyArNDE2LDcgQEAgV2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCBQYWcKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgeyBtX2NvbmZp
Z3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgfQogICAgICwgbV90cmVh
dHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZpZ3VyYXRpb24tPnRyZWF0c1NIQTFT
aWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2Ny
ZWVuQ2xpZW50PigpKQorICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpG
dWxsc2NyZWVuQ2xpZW50PigpKQogI2VuZGlmCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoKnRoaXMpCkBAIC00MzUsOSArNDM1LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCBQYWcKICNlbmRpZgogICAgICwgbV9wYWdlTG9hZFN0YXRlKCp0aGlzKQogICAgICwgbV9jb25m
aWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhtX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1
ZXMoKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6
bWFrZV91bmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9y
RGVidWdnYWJsZShtYWtlVW5pcXVlPFdlYlBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYK
ICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7CkBAIC00NzcsNyArNDc3
LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6
OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10gewor
ICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BP
YnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25S
dW5Mb29wT3JkZXJzOjpBY3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNdIHsKICAgICAgICAgdGhp
cy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTYw
MSw3ICs2MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4mJiBwb2xpY3lDbAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNsaWVudD4mJiBmb3JtQ2xp
ZW50KQogewogICAgIGlmICghZm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1DbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYgdWlD
bGllbnQpCiB7CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgICAgICBtX3VpQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02
MjgsNyArNjI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYKIHsKICAgICBib29sIGhhc0Ns
aWVudCA9IGljb25Mb2FkaW5nQ2xpZW50LmdldCgpOwogICAgIGlmICghaWNvbkxvYWRpbmdDbGll
bnQpCi0gICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SWNvbkxvYWRpbmdDbGllbnQ+KCk7CisgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2lj
b25Mb2FkaW5nQ2xpZW50ID0gV1RGTW92ZShpY29uTG9hZGluZ0NsaWVudCk7CiAKQEAgLTY1MCw3
ICs2NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0
ZDo6dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcgogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50
KQogewogICAgIGlmICghZmluZENsaWVudCkgewotICAgICAgICBtX2ZpbmRDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKKyAgICAgICAgbV9maW5kQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50KQogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRN
YXRjaGVzQ2xpZW50PiYmIGZpbmRNYXRjaGVzQ2xpZW50KQogewogICAgIGlmICghZmluZE1hdGNo
ZXNDbGllbnQpIHsKLSAgICAgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICAgICAgbV9maW5kTWF0Y2hlc0NsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREaWFn
bm9zdGljTG9nZ2luZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEaWFnbm9zdGljTG9nCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6Q29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGllbnQpCiB7CiAgICAgaWYgKCFj
b250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRleHRN
ZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
QmFzZSoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5qZWN0ZWRCdW5kbGVDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKKyAg
ICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KCk7CiAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+aW5pdGlhbGl6ZShjbGll
bnQpOwogfQogCkBAIC03NzYsNyArNzc2LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRD
dXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAg
ICB9CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9j
ZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgYXV0byBz
dXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlz
LCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1Vu
dGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CisgICAgYXV0byBzdXNwZW5k
ZWRQYWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3Mu
Y29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAi
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHBy
b2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKS50b1VJ
bnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkg
OiAwKTsKIApAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hU
b1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBBU1NF
UlQoIW1fZnVsbFNjcmVlbk1hbmFnZXIpOwotICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50
KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKKyAgICBtX2Z1bGxTY3JlZW5NYW5h
Z2VyID0gbWFrZVVuaXF1ZTxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PigqdGhpcywgcGFnZUNs
aWVudCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSk7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIEFTU0VSVCghbV9wbGF5YmFja1Nlc3Np
b25NYW5hZ2VyKTsKQEAgLTg2MCwyMiArODYwLDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRB
dHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAgICAgQVNT
RVJUKCFtX3BheW1lbnRDb29yZGluYXRvcik7Ci0gICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAg
bV9wYXltZW50Q29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBBU1NF
UlQoIW1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIpOwotICAgIG1fc3lzdGVtUHJldmlld0NvbnRy
b2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhpcyk7
CisgICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8U3lzdGVtUHJldmll
d0NvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAg
ICBBU1NFUlQoIW1fY3JlZGVudGlhbHNNZXNzZW5nZXIpOwotICAgIG1fY3JlZGVudGlhbHNNZXNz
ZW5nZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
PigqdGhpcyk7CisgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG1ha2VVbmlxdWU8V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgSEFWRShQ
RU5DSUxLSVQpCiAgICAgQVNTRVJUKCFtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyKTsKLSAgICBt
X2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFZGl0YWJsZUltYWdl
Q29udHJvbGxlcj4oKnRoaXMpOworICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBtYWtl
VW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAt
OTQzLDcgKzk0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmF3aW5nQXJlYShzdGQ6OnVu
aXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlCiAKICNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9kcmF3aW5nQXJlYS0+
dHlwZSgpID09IERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSkgewotICAgICAgICBtX3Nj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRv
clByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5PigqdGhp
cyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gT24gaU9TLCBtYWluIGZy
YW1lIHNjcm9sbHMgYXJlIHNlbnQgaW4gdGVybXMgb2YgdmlzaWJsZSByZWN0IHVwZGF0ZXMuCiAg
ICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS0+c2V0UHJvcGFnYXRlc01haW5GcmFt
ZVNjcm9sbHMoZmFsc2UpOwpAQCAtMTAwNiwxNyArMTAwNiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xvc2UoKQogICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX25hdmlnYXRp
b25DbGllbnQgPSBtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKTsKICAgICBt
X3BvbGljeUNsaWVudCA9IG51bGxwdHI7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKLSAgICBtX2Zvcm1DbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKLSAgICBtX3VpQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwotICAgIG1fZmluZENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwotICAgIG1fZmluZE1hdGNoZXNDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CisgICAgbV9p
Y29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsK
KyAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAgICBt
X3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgIG1fZmluZENsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgIG1fZmluZE1hdGNoZXNDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CiAgICAgbV9kaWFnbm9z
dGljTG9nZ2luZ0NsaWVudCA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0g
ICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVu
dUNsaWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNv
bnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQot
ICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVu
Q2xpZW50PigpOworICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGdWxs
c2NyZWVuQ2xpZW50PigpOwogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
cmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlzKTsKQEAgLTEyMjYsNyArMTIyNiw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBt
X25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVuY29kaW5n
LCBiYXNlVVJMLCB1c2VyRGF0YSkpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlv
blN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24obWFrZVVuaXF1ZTxBUEk6OlN1YnN0aXR1
dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJE
YXRhKSk7CiAgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJE
YXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQsIHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQpAQCAt
MjQxNSw3ICsyNDE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxO
YXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKKyAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBt
YWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBjb2FsZXNjZWRX
aGVlbEV2ZW50LT5hcHBlbmQoZXZlbnQpOwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxF
dmVudHMuYXBwZW5kKFdURk1vdmUoY29hbGVzY2VkV2hlZWxFdmVudCkpOwogICAgIHNlbmRXaGVl
bEV2ZW50KGV2ZW50KTsKQEAgLTI0MjMsNyArMjQyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50KCkKIHsKLSAgICBhdXRv
IG5leHRDb2FsZXNjZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldo
ZWVsRXZlbnQ+PigpOworICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CiAgICAgV2ViV2hlZWxFdmVudCBuZXh0V2hl
ZWxFdmVudCA9IGNvYWxlc2NlZFdoZWVsRXZlbnQobV93aGVlbEV2ZW50UXVldWUsICpuZXh0Q29h
bGVzY2VkRXZlbnQuZ2V0KCkpOwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMu
YXBwZW5kKFdURk1vdmUobmV4dENvYWxlc2NlZEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQo
bmV4dFdoZWVsRXZlbnQpOwpAQCAtMjk4NCw3ICsyOTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIHMKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwogICAgIH0KIAotICAg
IG1fcHJvdmlzaW9uYWxQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94
eT4oKnRoaXMsIG5ld1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2VQcm94
eSksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJ
c1JlZGlyZWN0KCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCk7CisgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zp
c2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3Vz
cGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5j
dXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKIAogICAgIGlmIChhdXRvKiBpdGVtID0gbmF2
aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJv
eHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMi
LCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTU3MDIsNyArNTcwMiw3IEBA
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6ZnVsbFNjcmVlbk1hbmFn
ZXIoKQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQp
IHsKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1
bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03NDM2LDcgKzc0MzYsNyBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eSYgV2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogICAgIGlmIChtX3Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKICAgICAgICAgcmV0dXJuICptX3VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAotICAgIG1fdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eT4oKnRoaXMpOworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyID0gbWFrZVVuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eT4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI7CiB9CiAKQEAgLTgxNDIsNyArODE0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRT
Y3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAg
bV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CiAKICAg
ICBpZiAobV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCAmJiAhbV9zY3Jv
bGxpbmdQZXJmb3JtYW5jZURhdGEpCi0gICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGE+KGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdB
cmVhKSk7CisgICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbWFrZVVuaXF1ZTxS
ZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+KGRvd25jYXN0PFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdBcmVhKSk7CiAgICAgZWxzZSBpZiAo
IW1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQpCiAgICAgICAgIG1fc2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbnVsbHB0cjsKIH0KQEAgLTkxODksNyArOTE4OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFNwZWVjaFN5bnRoZXNpemVyKCkKIFdlYlBhZ2VQcm94
eTo6U3BlZWNoU3ludGhlc2lzRGF0YSYgV2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVzaXNEYXRh
KCkKIHsKICAgICBpZiAoIW1fc3BlZWNoU3ludGhlc2lzRGF0YSkKLSAgICAgICAgbV9zcGVlY2hT
eW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3Bl
ZWNoU3ludGhlc2lzRGF0YSB7IG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4o
dGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKICAg
ICByZXR1cm4gKm1fc3BlZWNoU3ludGhlc2lzRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBiNDM4M2NhZjg4ZjM3MjcyY2Y5NDc3YjY0MDM5Y2U5ZWY1
Yzk0OWExLi4xN2JmNWZhOWJlMTdlNjM4NWMyM2JiODc0NWExYjVkM2FjNzhjZjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzQ3LDggKzM0Nyw3IEBAIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVp
bnQzMl90PiBUb3VjaGVzQ2FsCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mPiBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrOwogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiY+IEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb25DYWxsYmFjazsKIHN0cnVjdCBFbGVtZW50RGlkRm9jdXNBcmd1
bWVudHMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgorICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
IGluZm9ybWF0aW9uOwogICAgIGJvb2wgdXNlcklzSW50ZXJhY3Rpbmc7CiAgICAgYm9vbCBibHVy
UHJldmlvdXNOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5j
cHAKaW5kZXggOGJkZjhjZjgzODhjZGM3YmZhY2ZmMmI3ZTYwNWQwYTgxOGRhYWM2NC4uOTYyZjNi
ZWQyZDgyNTY5YTA3ZGQ0ZTljZGFiOGZjYzcyMTE5ZjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgV2ViUHJv
Y2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyID0gZ2VuZXJhdGVBZGRSZXF1ZXN0SWRlbnRpZmllcigpOwotICAgIG1fcGVuZGluZ0Fk
ZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRQ
cm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOworICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFk
ZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuaXF1ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNv
cHlSZWYoKSkpOwogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQ
cm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxlKCk6IENoZWNraW5nIGlmIHByb2Nlc3Mg
JWkgaXMgcmVzcG9uc2l2ZSBiZWZvcmUgY2FjaGluZyBpdC4uLiIsIHRoaXMsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIHByb2Nlc3MtPmlzUmVzcG9uc2l2ZShbdGhpcywgcHJv
Y2Vzc1Bvb2wgPSBtYWtlUmVmKHByb2Nlc3MtPnByb2Nlc3NQb29sKCkpLCByZXF1ZXN0SWRlbnRp
Zmllcl0oYm9vbCBpc1Jlc3BvbnNpdmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAppbmRleCAzNjM2N2YwMDRjZjFlMjE2NWQyN2I2YWU4ZTZmY2I1ZGM2Zjkx
MzhjLi44MTk2NWFmN2NhOGIwMzIzM2ZmNGY4NTY0MTRkZGJkMTRkOTk0MDEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yMzMsMTUgKzIzMywxNSBA
QCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2Jh
bFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdAogV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29s
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9j
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24uY29weSgpKQogICAgICwgbV9kZWZhdWx0UGFnZUdy
b3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCi0gICAgLCBtX2luamVjdGVkQnVuZGxlQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKLSAgICAsIG1f
YXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4o
KSkKLSAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2Fk
Q2xpZW50PigpKQotICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpM
ZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKLSAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCkpCisgICAgLCBtX2luamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZUNsaWVudD4oKSkKKyAgICAsIG1fYXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVl
PEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKKyAgICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQorICAgICwgbV9oaXN0b3J5Q2xpZW50KG1ha2VV
bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyAgICAsIG1fY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQ+KCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6
Y3JlYXRlKCkpCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFw
aGljc1VzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNz
VXNhZ2VTYW1wbGVyPigqdGhpcykpCi0gICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNh
bXBsZXIoc3RkOjptYWtlX3VuaXF1ZTxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigq
dGhpcykpCisgICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKG1ha2VV
bmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAs
IG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihtYWtlVW5pcXVlPFBlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9hbHdheXNSdW5z
QXRCYWNrZ3JvdW5kUHJpb3JpdHkobV9jb25maWd1cmF0aW9uLT5hbHdheXNSdW5zQXRCYWNrZ3Jv
dW5kUHJpb3JpdHkoKSkKICAgICAsIG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbiht
X2NvbmZpZ3VyYXRpb24tPnNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24oKSkKQEAgLTM2
NCw3ICszNjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLQ29udGV4dENsaWVudEJhc2UqIGNsaWVudCkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldElu
amVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlQ2xp
ZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9pbmplY3RlZEJ1
bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4o
KTsKKyAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1faW5qZWN0ZWRCdW5kbGVD
bGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29u
bmVjdGlvbkNsaWVudEIKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+JiYgaGlzdG9yeUNs
aWVudCkKIHsKICAgICBpZiAoIWhpc3RvcnlDbGllbnQpCi0gICAgICAgIG1faGlzdG9yeUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKTsK
KyAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gV1RG
TW92ZShoaXN0b3J5Q2xpZW50KTsKIH0KQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRl
eHRIaXN0b3J5Qwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgZG93bmxvYWRDbGllbnQpCiB7CiAgICAg
aWYgKCFkb3dubG9hZENsaWVudCkKLSAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKTsKKyAgICAgICAgbV9kb3dubG9hZENsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAg
IG1fZG93bmxvYWRDbGllbnQgPSBXVEZNb3ZlKGRvd25sb2FkQ2xpZW50KTsKIH0KQEAgLTM5Myw3
ICszOTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4mJiBkbwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50
PiYmIGF1dG9tYXRpb25DbGllbnQpCiB7CiAgICAgaWYgKCFhdXRvbWF0aW9uQ2xpZW50KQotICAg
ICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlv
bkNsaWVudD4oKTsKKyAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkF1dG9tYXRpb25DbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2F1dG9tYXRpb25DbGll
bnQgPSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQpAQCAtNDAyLDcgKzQwMiw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpDCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9D
T0xfTUFOQUdFUikKICAgICBpZiAoIWN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCkKLSAgICAg
ICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpOworICAgICAgICBtX2N1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9
IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KTsKICNlbmRpZgpAQCAtNDkyLDcg
KzQ5Miw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3
b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgIHJldHVybiAqbV9uZXR3
b3JrUHJvY2VzczsKICAgICB9CiAKLSAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5PigqdGhpcyk7CisgICAgYXV0byBuZXR3b3JrUHJv
Y2VzcyA9IG1ha2VVbmlxdWU8TmV0d29ya1Byb2Nlc3NQcm94eT4oKnRoaXMpOwogCiAgICAgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIApAQCAtMjUxNSw3ICsy
NTE1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlv
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWEKICAgICAgICAgbV9wcmV3YXJtSW5mb3Jt
YXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5yZW1vdmUobV9wcmV3YXJtSW5mb3JtYXRpb25QZXJS
ZWdpc3RyYWJsZURvbWFpbi5yYW5kb20oKSk7CiAKICAgICBhdXRvJiB2YWx1ZSA9IG1fcHJld2Fy
bUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4uZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWlu
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlByZXdhcm1J
bmZvcm1hdGlvbj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6UHJld2Fy
bUluZm9ybWF0aW9uPigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICp2YWx1ZSA9
IHByZXdhcm1JbmZvcm1hdGlvbjsKQEAgLTI1NjIsMTIgKzI1NjIsMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lEKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT50YWtlVXBsb2FkQXNzZXJ0aW9uKCk7CiAg
ICAgICAgIAogICAgICAgICBBU1NFUlQoIW1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uKTsKLSAg
ICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBB
c3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fdWlQcm9jZXNz
VXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50
UHJvY2Vzc0lEKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRl
ZE5ldHdvcmtpbmcpOwogICAgIH0KICAgICAKICAgICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc2Vz
V2l0aFVwbG9hZHMuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5p
c05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0
IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0
YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xl
YXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCkBAIC0y
NjA0LDEyICsyNjA0LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NJc1Bs
YXlpbmdBdWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpCiAgICAgICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVGhlIG51bWJlciBvZiBwcm9jZXNzZXMgcGxheWlu
ZyBhdWRpYmxlIG1lZGlhIGlzIG5vdyBvbmUuIFRha2luZyBVSSBwcm9jZXNzIGFzc2VydGlvbi4i
KTsKIAogICAgICAgICBBU1NFUlQoIW1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbik7
Ci0gICAgICAgIG1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IE1l
ZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVh
c29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNz
ZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lE
KCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5k
LCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOwogICAgIH0KIAogICAgIGF1dG8gcmVz
dWx0ID0gbV9wcm9jZXNzZXNQbGF5aW5nQXVkaWJsZU1lZGlhLmFkZChwcm9jZXNzSUQsIG51bGxw
dHIpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3Rh
dGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CisgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0
aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVN
ZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlMTY5MTM3ZjUzODlkMzBiYjhi
MTFiM2E4ZTFmNTBjYTQzYWEwNmVkLi4xZTNjZGRlOGZiZTg4ZTg1ZDgwMjk4Nzc5N2Y4MTJlZWM1
MjViMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTE1MSw3ICsxNTEsNyBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQ
cm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAgICAgLCBtX3Zpc2li
bGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRS
ZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUod2Vic2l0
ZURhdGFTdG9yZSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LSAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0aGlzKSkKKyAgICAsIG1fdXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+
KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9pc1ByZXdhcm1lZChpc1ByZXdhcm1lZCA9PSBJc1By
ZXdhcm1lZDo6WWVzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IGU5ZmNmMDAxNTM5
OTVkYzFjY2UxMzVmOGMwOTJlOTJlNjZkYmZmM2EuLmQwYmJhNTY0YzI3NTgyZDc4MjZlOWYyYzIw
NjIyMzcwMjI3Mjk1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcg
QEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlQ2xpZW50KCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNw
cAppbmRleCAxODI5NGQzN2ZlNDllZWQ2ZDY5ZGZmZmY1ZjJmNjUwNzBiNjZjZDkwLi43YmRkMDNk
M2M4ZWM4ZTA2NjJlNzdkMDE4MjUwYjUwODhjMjZjZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC01NCwxMiArNTQs
MTIgQEAgc3RkOjp1bmlxdWVfcHRyPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybz4gQmFja2luZ1N0
b3JlOjpjcmVhdGVCYWNrZW5kKCkKICAgICAgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBndGtfd2lk
Z2V0X2dldF92aXN1YWwobV93ZWJQYWdlUHJveHkudmlld1dpZGdldCgpKTsKICAgICAgICAgR2Rr
U2NyZWVuKiBzY3JlZW4gPSBnZGtfdmlzdWFsX2dldF9zY3JlZW4odmlzdWFsKTsKICAgICAgICAg
QVNTRVJUKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZl
KCkgPT0gR0RLX1NDUkVFTl9YRElTUExBWShzY3JlZW4pKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExPihHREtfV0lORE9XX1hJRChn
ZGtfc2NyZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExPihHREtfV0lORE9XX1hJRChnZGtfc2Ny
ZWVuX2dldF9yb290X3dpbmRvdyhzY3JlZW4pKSwKICAgICAgICAgICAgIEdES19WSVNVQUxfWFZJ
U1VBTCh2aXN1YWwpLCBnZGtfdmlzdWFsX2dldF9kZXB0aCh2aXN1YWwpLCBtX3NpemUsIG1fZGV2
aWNlU2NhbGVGYWN0b3IpOwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxl
RmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9J
bXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9y
ZTo6cGFpbnQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNw
cAppbmRleCBiODc0ZmIwZmIyZTJhN2U3ZWMzNmNjNDRlMzlkNjI0OTA2YTRjNWYxLi5mODg4YzBm
NDQ2YzYyNzEyN2M4Mzc1YmUwZDgxYTZhM2YyYzA5ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0yNDks
NyArMjQ5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OmNvbm5lY3Rpb25DbG9zZWQo
KQogdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QodWludDY0X3QgY29ubmVjdGlv
bklELCB1aW50NjRfdCB0YXJnZXRJRCkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW5zcGVj
dG9yUHJveHlNYXAuZW5zdXJlKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQp
LCBbdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRF0gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFy
Z2V0SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4o
KnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpOwogICAgIH0pOwogICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2hv
dygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVk
QmFja2luZ1N0b3JlV2F5bGFuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAppbmRleCAzODMxMDAwNTg4OTRkZWMwZmI3
YjUxY2FhMDlhMjM5ZDc3ZDA4YThiLi44OTMyNzlmYmNmNThhZWFmMmFmZDZiMWE0N2MxYzc2YzIz
ZDgyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcApAQCAtNzksOSArNzksOSBAQCBi
b29sIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMoKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxz
ZQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lv
bnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250
ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lv
bnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAz
MjApOwogI2VuZGlmCiAgICAgICAgIGlmIChnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNf
RUdMX2ltYWdlIikgfHwgZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbCIpKQogICAgICAgICAgICAgZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NB
ZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAppbmRleCBlOWFlNjU1
MmE3YTJkODYyYzRiZDRlZTEwZWQyZWMzNmU5MmY4MzFkLi5jYTY1M2U1ZWJhNzBjOTYxNTVmZjc2
NDg4YzNlZGY0MjgxZjg1NzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFNlbGVjdGlvbkRh
dGEqIERyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24oR2RrRHJhZ0NvbnRleHQq
IGNvbnRleHQsIGNvCiAgICAgc3RkOjp1bmlxdWVfcHRyPERyb3BwaW5nQ29udGV4dD4mIGRyb3Bw
aW5nQ29udGV4dCA9IG1fZHJvcHBpbmdDb250ZXh0cy5hZGQoY29udGV4dCwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwogICAgIGlmICghZHJvcHBpbmdDb250ZXh0KSB7CiAgICAgICAgIEd0a1dp
ZGdldCogd2lkZ2V0ID0gbV9wYWdlLnZpZXdXaWRnZXQoKTsKLSAgICAgICAgZHJvcHBpbmdDb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEcm9wcGluZ0NvbnRleHQ+KGNvbnRleHQsIHBvc2l0aW9u
KTsKKyAgICAgICAgZHJvcHBpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEcm9wcGluZ0NvbnRleHQ+
KGNvbnRleHQsIHBvc2l0aW9uKTsKICAgICAgICAgVmVjdG9yPEdka0F0b20+IGFjY2VwdGFibGVU
YXJnZXRzKFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLmRyb3BBdG9tc0ZvckNvbnRleHQo
d2lkZ2V0LCBkcm9wcGluZ0NvbnRleHQtPmdka0NvbnRleHQpKTsKICAgICAgICAgZHJvcHBpbmdD
b250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3RzID0gYWNjZXB0YWJsZVRhcmdldHMuc2l6ZSgpOwog
ICAgICAgICBmb3IgKGF1dG8mIHRhcmdldCA6IGFjY2VwdGFibGVUYXJnZXRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCmluZGV4IDUyNTQy
MDM3MWY2MWJkNGI4ZjNjMWEzOTliN2I4MjYxYjk5NGVhMTAuLjU5MTRiN2UwZGY1NDMxYWNmNjYz
NzEwM2U2ODgwNDA0ZWQ0NDNmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgU2hhcmVhYmxl
Qml0bWFwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBEcmFnQW5kRHJvcEhhbmRsZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERyYWdBbmREcm9wSGFuZGxlcik7CiBwdWJsaWM6CiAgICAgRHJhZ0FuZERyb3BIYW5kbGVyKFdl
YlBhZ2VQcm94eSYpOwpAQCAtNjQsNiArNjUsNyBAQCBjbGFzcyBEcmFnQW5kRHJvcEhhbmRsZXIg
ewogCiBwcml2YXRlOgogICAgIHN0cnVjdCBEcm9wcGluZ0NvbnRleHQgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIERyb3BwaW5nQ29udGV4dChHZGtE
cmFnQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7CiAKICAgICAg
ICAgR2RrRHJhZ0NvbnRleHQqIGdka0NvbnRleHQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCBjYmUzODBi
MjQwZDk2MDExMTcyN2I3NzBhODI1ZTA5ZTA1NDdjOWVkLi5jM2Q5OTczYzcwZGMyMDg5YzY4M2Q2
NWE5MTNkYTI5NGQ1ZmZlYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTQyMCw5ICs0MjAsOSBAQCBib29sIFdheWxhbmRD
b21wb3NpdG9yOjppbml0aWFsaXplRUdMKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYg
VVNFKE9QRU5HTF9FUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+
IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51
bGxwdHIsICBmYWxzZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVT
PiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRy
LCAgZmFsc2UpOwogI2Vsc2UKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdM
PiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVs
bHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lv
bigpID49IDMyMCk7CiAjZW5kaWYKICAgICBpZiAoZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
T0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwiKSkKICAgICAgICAgZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NB
ZGRyZXNzKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAppbmRleCBi
YmY5M2MyMDI4NmVlNmM2NjI4YTcxODJiYWVkNDUyZjJiYzhmNzRjLi41MTRlY2E2ODliNjUxY2Nk
ZmVkNjExODUwZDJiMTRiYzJmNGM1OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaApAQCAtNDEsMTEgKzQxLDEzIEBA
IE9CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3Qg
RWRpdGFibGVJbWFnZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBkcmF3aW5nVmlldzsKICAgICBTdHJpbmcgYXR0YWNo
bWVudElEOwogfTsKIAogY2xhc3MgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShFZGl0YWJsZUltYWdlQ29udHJvbGxlcik7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xs
ZXIubW0KaW5kZXggYzIzNDExYzFmMDliMDEwYTY1MjU0YjM2OWRkMzE2OWQzMWYwYzBlMC4uNjFl
ODU5NGQ1YjdjNDFhYWY5ZmM4MmM2NTM4ZGI5YWQ3MTg1NjM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQpAQCAt
NTgsNyArNTgsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6fkVkaXRhYmxlSW1hZ2VDb250
cm9sbGVyKCkKIEVkaXRhYmxlSW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjplbnN1cmVF
ZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVk
ZGVkVmlld0lEKQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9lZGl0YWJsZUltYWdlcy5lbnN1cmUo
ZW1iZWRkZWRWaWV3SUQsIFsmXSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUlt
YWdlPiBpbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gbWFrZVVuaXF1ZTxFZGl0YWJs
ZUltYWdlPigpOwogICAgICAgICBpbWFnZS0+ZHJhd2luZ1ZpZXcgPSBtX3dlYlBhZ2VQcm94eS0+
cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdWaWV3KGVtYmVkZGVkVmlld0lEKTsKICAgICAgICAg
cmV0dXJuIGltYWdlOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaAppbmRleCBjNmY1MGFiMTFmM2RiMjZlMzFj
YzIwNDQzYTFlODQyYjdkODAyZjhkLi5lZmMzM2RlNmYyYTgyMjVkZmM0ZTFhMzQzYzE5YzIyZWUx
YzM0MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRW
aWV3VXBkYXRlRGVmZXJyZXIuaApAQCAtMzMsNiArMzMsNyBAQCBPQkpDX0NMQVNTIFVJVmlldzsK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IElucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyKFVJVmlldyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDcyODA3ODg2
MzgxMmU4MDljZGUwOTZlZTg5YjFmNjAyMDUwYmM0ZDEuLjAyMDExNjc5Yjc5MWY4ZTBhZDExZjFh
OGY1MjczMWFmYTMwODU3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIpOwogcHVibGljOgogICAgIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIoV0tDb250ZW50VmlldyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1t
CmluZGV4IGQwM2ExNzI2YWIzMzRhMDBlNjBmYmMwNTBiNTBlNWMzMzc1YWY3MjAuLjdmMGY5NDg0
ZmQ3Nzc0ZGQxMTU3YWUyODg1YzkwYTNiZjJlZTc5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmll
dy5tbQpAQCAtNjUsNyArNjUsNyBAQCAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogICAgIGlmICgh
c2VsZi5fY29udGVudFZpZXcud2luZG93IHx8IF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0b3Io
X2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRp
ZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9h
cHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsKKyAgICBfYXBwbGljYXRpb25TdGF0ZVRy
YWNrZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNlbGYs
IEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3IoX2Fw
cGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpLCBA
c2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOwogICAgIAogICAgIGlm
IChfbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNrZ3JvdW5kICYmICFbc2VsZiBpc0JhY2tncm91bmRd
KQogICAgICAgICBbc2VsZiBfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggNjgxMWU4N2E0
YTQyMTAwNWJkOTRhN2FjMjE2NTQzZWNjMDBhNzdmYy4uNDMxZmFjZDFlNjgzOTdlYzg1NzM5MWFi
MWNmODg4ZDM4NDE1N2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2NvbW1vbklu
aXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcgog
ICAgIF9wYWdlLT5zZXREZWxlZ2F0ZXNTY3JvbGxpbmcodHJ1ZSk7CiAKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi0gICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7CisgICAgX3BhZ2UtPnNl
dEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93
ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3Rp
Y3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMjM5LDcgKzIzOSw3IEBAIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2wmCiAKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFnZUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2Vi
Vmlldyk7CisgICAgX3BhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUNsaWVudElt
cGw+KHNlbGYsIHdlYlZpZXcpOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIHJldHVy
biBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wg
Y29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pXTsKQEAgLTU0MSw3ICs1NDEsNyBA
QCAtICh2b2lkKV93ZWJWaWV3RGVzdHJveWVkCiAKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5OihXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eSYpcHJvY2VzcwogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLCBwcm9jZXNzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk+KCpfcGFnZSwgcHJvY2Vzcyk7CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCBlZjNhZTQ0M2RhNjRkOTUxODJiMGUyNTAwMzFiNmExODIwYjRmNDM0Li5l
ZjUwNmRhNGY2ZGI1ODE5MmY2ZDdkNjZjOTJmZjFjMTNkYzRhOGE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTgwNiw3ICs4MDYsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICAgICAKICAgICBf
YWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tBY3Rpb25TaGVldEFzc2lzdGFudCBh
bGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50IHNl
dERlbGVnYXRlOnNlbGZdOwotICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYp
OworICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6
OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOwogICAgIF9pc0V4cGVjdGluZ0Zh
c3RTaW5nbGVUYXBDb21taXQgPSBOTzsKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5P
OwogICAgIF9pc0RvdWJsZVRhcFBlbmRpbmcgPSBOTzsKQEAgLTgyMSw3ICs4MjEsNyBAQCAtICh2
b2lkKXNldHVwSW50ZXJhY3Rpb24KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RSSVZF
Tl9URVhUX0NIRUNLSU5HKQotICAgIF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAgX3Rl
eHRDaGVja2luZ0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5nQ29u
dHJvbGxlcj4oKl9wYWdlKTsKICNlbmRpZgogCiAgICAgX2hhc1NldFVwSW50ZXJhY3Rpb25zID0g
WUVTOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgLSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRlckZv
cldlYlZpZXcKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYgKCFfaW5wdXRWaWV3VXBkYXRl
RGVmZXJyZXIpCi0gICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CisgICAgICAgIF9p
bnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlcj4oc2VsZik7CiAKICAgICBCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVyOwog
ICAgIHsKQEAgLTUzMTEsNyArNTMxMSw3IEBAIC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czooY29u
c3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1CiAgICAg
ICAgIC8vIERlZmVyIHZpZXcgdXBkYXRlcyB1bnRpbCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24g
dG8gYXZvaWQgYSBub3RpY2VhYmxlIGZsYXNoIHdoZW4gc3dpdGNoaW5nIGZvY3VzCiAgICAgICAg
IC8vIGJldHdlZW4gZWxlbWVudHMgdGhhdCByZXF1aXJlIHRoZSBrZXlib2FyZC4KICAgICAgICAg
aWYgKCFpbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAgICAgICAgICAgIGlucHV0Vmlld1VwZGF0
ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVy
cmVyPihzZWxmKTsKKyAgICAgICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFrZVVu
aXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKICAgICAgICAgW3Nl
bGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGIwMjgyNDg5MjAwM2EwNDk4OTI5ZTcwNmE1
OTA0NTlhNGY4NzFhY2QuLmMwOGY5Nzg2ZjBlYWFiNGE5NzViYjU2NDhjNzQyN2M1NjM2ZGJlMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtOTEyLDcgKzkxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMoY29u
c3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24sCiAgICAgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwogICAgIGlmIChtX2VkaXRvclN0YXRlLmlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIGVs
aW1pbmF0ZSBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIGFsdG9nZXRoZXIsIGlu
IGZhdm9yIG9mIG9ubHkgZGVmZXJyaW5nIGFjdGlvbnMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIHBv
c3QtbGF5b3V0IGVkaXRvciBzdGF0ZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgbV9kZWZlcnJlZEVs
ZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudERpZEZvY3Vz
QXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklz
SW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2Vy
RGF0YU9iamVjdCB9KTsKKyAgICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50
cyA9IG1ha2VVbmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNB
cmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05v
ZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTI1OCw3ICsxMjU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVm
PFcKIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBXZWJQ
YWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29yZGluYXRvclByb3h5LCBQS1BheW1lbnRS
ZXF1ZXN0ICpwYXltZW50UmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXltZW50Q29vcmRpbmF0b3JQcm94
eSwgcGF5bWVudFJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVx
dWVzdCk7CiB9CiAKIFVJVmlld0NvbnRyb2xsZXIgKldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2Ny
ZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KaW5kZXggOGIx
MjNiMGE5N2MwMzBlOTQ1MGY1ZWQ0ZjhjMTc0YjMyMWJiNDA3Yi4uOGZmOGEwYmY0NzViM2Y3YjIz
NjIyOWY0MTJlM2YzMjY2Y2Y5NTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRy
b2xsZXIubW0KQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIFdLRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIg
KnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggODM0MzQ4ODljZGNmMjQ5YzFj
Mjc5MWJkMDdiZmZmYTIwMWNmNDg3ZC4uYTkxMjk1M2VjOTFjMjczMzYyNjc2M2RhZjlkYTI2YjI0
OTMzYzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbChOU1ZpZXcqIHZpZXcsIFdLV2ViVmlldyAqd2ViVmlldykKICAgICA6IFBhZ2VDbGllbnRJ
bXBsQ29jb2Eod2ViVmlldykKICAgICAsIG1fdmlldyh2aWV3KQogI2lmIFVTRShESUNUQVRJT05f
QUxURVJOQVRJVkVTKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX2FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcj4oKSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCA0M2U5Zjk2
N2JjODk3N2ZiZmY4Yzg2NjhhNWNjYTFmMzgyNGMwODA5Li4zNGE2OWJiZTBiYjBkMTc2YjU1MWJh
ZjJkN2EzNWMxZmFhYzAzN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtNTQsNiArNTQs
NyBAQCBzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgRGVmYXVsdFdhdGNoZG9nVGltZXJJbnRl
cnZhbCA9IDE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29yZTo6VmlkZW9GdWxs
c2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgKnBhcmVu
dCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCkBAIC0xNTAsNyArMTUxLDcgQEAgLSAoaWQpaW5p
dFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luZG93IHdlYlZpZXc6KE5TVmlldyAqKXdlYlZpZXcg
cGFnZTooV2ViS2l0OjoKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgX3BhZ2UgPSAmcGFn
ZTsKIAotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50
PigpOworICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6V0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PigpOwog
ICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldFBhcmVudChzZWxmKTsKIAogICAgIFtzZWxm
IHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IDY2MDMxN2MyZmJjNzliNjhi
YjViNzM0NzZhNThiZWZlYTA5YjA2ZDMuLjY5ZDlkOWUyZDQ0NDg0M2QxNTI3MGY1MTE3Zjc3NGNk
MjM3ZDVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRG
aW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZp
bmRlckNsaWVudC5tbQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBUZXh0RmluZGVyRmluZENsaWVudCA6IHB1Ymxp
YyBBUEk6OkZpbmRNYXRjaGVzQ2xpZW50LCBwdWJsaWMgQVBJOjpGaW5kQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0RmluZGVy
RmluZENsaWVudChXS1RleHRGaW5kZXJDbGllbnQgKnRleHRGaW5kZXJDbGllbnQpCiAgICAgICAg
IDogbV90ZXh0RmluZGVyQ2xpZW50KHRleHRGaW5kZXJDbGllbnQpCkBAIC0xNjgsOCArMTY5LDgg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBh
Z2UgdmlldzooTlNWaWV3ICopdmlldyB1c2UKICAgICBfdmlldyA9IHZpZXc7CiAgICAgX3VzZVBs
YXRmb3JtRmluZFVJID0gdXNlUGxhdGZvcm1GaW5kVUk7CiAgICAgCi0gICAgX3BhZ2UtPnNldEZp
bmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENs
aWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXRGaW5k
TWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNl
bGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4dEZp
bmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcAppbmRleCBlZDBkNWZmZTk1ODlmOTVlNDRhMDdmMjIxOGVkODJjMDBmMDE3ZDdlLi5lNzRh
ZGFjMWU2NWViZTVjOTliMzFkOTA2N2FlNjExNThmMzk4N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApA
QCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpkaWRDbG9zZShD
b25uZWN0aW9uSUQpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdChDb25uZWN0
aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiB0eXBl
KQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUoc3Rk
OjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9uSUQs
IHRhcmdldElELCAmdHlwZV0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNv
bm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwogICAgIH0pOwogCiAgICAgaWYgKCFhZGRSZXN1
bHQuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCAx
YjZkOWNjNTRmYzYwYjUzZTQ0MDI3MWYyMzA4ZTdjMGY0N2M4NzRjLi5hODgzM2Y2MjQ4N2Y5YTY3
MjEwMzk5ZWM5ZjhmZjVlMDkyNzEyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94eSwKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3VyZShy
ZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwu
aG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0
VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhp
cyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgLy8gU2V0dXAgdGFyZ2V0
IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0
aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7
CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtl
VW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNl
ckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgp
LnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5k
bGVyLmdldCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbEJ1aWxkZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcAppbmRl
eCBiNjdkNzNhNGRjNDg4YjMxZmRjOWE0NzIxOTY5MTQwNDI3NDQ4ODI1Li41ZDUwYWU1NTQ2ODBh
NmU5ZTNkYTJjZTg0YmU1NjRkNWMzMjM3ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVC
YWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4obV9z
aXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5n
U3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwog
fQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRh
cmdldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGNkNmYwOGZmMThiZDU1YzE1NTQ0NjNkNGE0MGI1
MWU0NWIyZWFiOWYuLjAzMDdjNGY5ZjE0M2Y4NmRjNjIwOGI0ODRiZThkYjQyMmRjMGY0MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAt
NDYsNyArNDYsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV2ViVmlldyYgdmll
dykKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1ZV9w
dHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJv
eHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2UoKSwg
cHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJlZ2lv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCBjZDUzNTJkZjdh
YTA0ZTY5ZDliMGY5OGVkMDAxZTVjNjMzMmY3NTkzLi42N2U1ZTRiMjdhM2FlODBhYjY2OGY2YzM0
MTdjMGYwY2U2YjdmMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3Bw
CkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBXZWJWaWV3OjpyZWdpc3RlcldlYlZpZXdXaW5kb3dD
bGFzcygpCiB9CiAKIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBjb25zdCBBUEk6OlBhZ2VD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBhcmVudFdpbmRvdykKLSAgICA6IG1f
cGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisgICAg
OiBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQogewogICAg
IHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAppbmRleCBi
NmQ0YTA0MjBkNWE1ZGJkNjQ2MDgzYWY2Nzg4MDUxYmY2Y2M0N2UwLi5mMmQ2MmVhOTc5MGY4MDdh
NjViNWQzZTU4ZjgwYjk3ZjA2YWRiZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBAIC01MSw2ICs1
MSw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlBhZ2U7CiAK
IGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZh
dGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwogICAgIGV4
cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvcihXZWJQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRl
eCA0ZjgxMGNjZjM4ZWNmYTJjOTllY2JkYTg5ZDA0MWNlYjhkMjMzM2I4Li5hYWIzNDU3Y2VkNjRh
NWE5MTBjZGM1NjJhY2MwMTE1MDBkM2M2Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFkcyhjb25zdCBW
ZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGEKICAgICAgICAgaWYgKGdhbWVwYWREYXRhc1tp
XS5pc051bGwoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fZ2FtZXBhZHNb
aV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7CisgICAg
ICAgIG1fZ2FtZXBhZHNbaV0gPSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tp
XSk7CiAgICAgICAgIG1fcmF3R2FtZXBhZHNbaV0gPSBtX2dhbWVwYWRzW2ldLmdldCgpOwogICAg
IH0KIH0KQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRD
b25uZWN0ZWQoY29uc3QgR2FtZXBhZERhdGEmIGdhbWVwYWREYXRhKQogCiAgICAgQVNTRVJUKCFt
X2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldKTsKIAotICAgIG1fZ2FtZXBhZHNbZ2FtZXBh
ZERhdGEuaW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRh
KTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gbWFrZVVuaXF1ZTxXZWJH
YW1lcGFkPihnYW1lcGFkRGF0YSk7CiAgICAgbV9yYXdHYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRl
eCgpXSA9IG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0uZ2V0KCk7CiAKICAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZmQ2NTIzZDZmYTdkNzU5M2QxYjhkM2IzMmJhYjQ2
M2E5NjhlYWEyOC4uNjMzZjIyZmRmZTQyNzJiMzlkZTI1ZWEwZTRhMGEwNGQ3Y2RlNmNjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM3
LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXggMGJi
NGYyYjQyMWEzZWMyMjg3NTRlNjM4MjlkNDFhYmJlMmUwNmY4ZC4uYTZjMjg3MTZhYjE2NzhhZmRk
NTc0YzlkZjlmZTI4Njg2MzQ2MzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtNDQs
NiArNDQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkdlb2xvY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGUuY3BwCmluZGV4IGYzZWM3MjA4N2NhMjg4NjdmNTRkOWRmMGY1MGQ4NzEwMmUwMTZmYTIu
LmNhODVkNTg1ZGNmMWI3NmVmMGI4ZDExZDU5YWQ2NjA0YWMzZjE4NmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZUdldFR5cGVJRCgpCiAK
IHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZUNs
aWVudEJhc2UgKndrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnNl
dENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdr
Q2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9p
ZCBXS0J1bmRsZVNldFNlcnZpY2VXb3JrZXJQcm94eUNyZWF0aW9uQ2FsbGJhY2soV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmLCB2b2lkICgqY2FsbGJhY2spKHVpbnQ2NF90KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKaW5kZXggZjEyYTViYTc3NGQ2Y2M2OGQwODRmMWY2MDIxY2ViZjM4MWFhM2E1
OC4uZGMwNzU4YWQ3NWFmMzYxZGZiZTgxNmViMTEzZjQxYzdmMDlkODFjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdl
R2V0VHlwZUlEKCkKIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSogd2tD
bGllbnQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVu
dCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRl
eHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYp
OwogICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBAIC04NiwyMiArODYsMjIgQEAgdm9pZCBX
S0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwg
V0tCdW5kbGVQYWdlQ29udGUKIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudEJhc2UqIHdrQ2xp
ZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudCh3a0NsaWVudCA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFn
ZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50ID8gbWFrZVVuaXF1
ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudD4oKndrQ2xpZW50KSA6IG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpKTsKIH0KIAogdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1
bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJL
aXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlx
dWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQog
CiB2b2lkIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSZWYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdl
YktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudD4o
d2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UmVzb3Vy
Y2VMb2FkQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVm
KS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQpKTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxv
YWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9h
ZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGll
bnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJhc2Uq
IHdrQ2xpZW50KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5
Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllCiAK
IHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdL
QnVuZGxlUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
cGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6
dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1ha2VVbmlxdWU8V2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBX
S0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXggZWJkM2VmNWYyOTMwOGMxNDE5M2ExODFi
N2UxZTRhNDI1ZmQyMWRkMi4uNjlmN2FmMjJiNTY3NTA0ZDRmMzFmMGQ3YTcwYjg3NGUwOWZhNTVh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcApAQCAtNTQsNiAr
NTQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlT3Zlcmxh
eUFjY2Vzc2liaWxpdHlDbGllbnRCYXNlPiB7CiB9CiAKIGNsYXNzIFBhZ2VPdmVybGF5Q2xpZW50
SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlPiwgcHVibGlj
IFdlYktpdDo6V2ViUGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGFnZU92ZXJsYXlDbGllbnRJbXBsKFdLQnVu
ZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAtMjE2LDcgKzIxNyw3
IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZU92ZXJsYXlHZXRUeXBlSUQoKQogCiBXS0J1bmRsZVBh
Z2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQYWdlT3Zlcmxh
eUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAgYXV0byBjbGll
bnRJbXBsID0gbWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAg
ICByZXR1cm4gdG9BUEkoJldlYktpdDo6V2ViUGFnZU92ZXJsYXk6OmNyZWF0ZShXVEZNb3ZlKGNs
aWVudEltcGwpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tC
dW5kbGVQYWdlQmFubmVyTWFjLm1tCmluZGV4IGFjYzM1YTIxYjU5ZjFhYTMxZTMzMDUxYTY2YmMx
MzA1OTk2Njk5ZDMuLmQ2ZmZkMWNjYzA0YTkzYTdhMDlkMmIzNjU1OWE4ZjBjMDk1MGZmMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9t
YWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCkBAIC00
Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIGNsYXNzIFBhZ2VCYW5uZXJDbGllbnRJbXBsIDogQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdl
QmFubmVyQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlQmFubmVyOjpDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VCYW5uZXJDbGll
bnRJbXBsKFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJhc2UqIGNsaWVudCkKICAgICB7CkBAIC0x
MDMsNyArMTA0LDcgQEAgV0tCdW5kbGVQYWdlQmFubmVyUmVmIFdLQnVuZGxlUGFnZUJhbm5lckNy
ZWF0ZUJhbm5lcldpdGhDQUxheWVyKENBTGF5ZXIgKmxheWVyLAogICAgIGlmICh3a0NsaWVudCAm
JiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIGNsaWVu
dEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+KHdr
Q2xpZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUJh
bm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6UGFn
ZUJhbm5lcjo6Y3JlYXRlKGxheWVyLCBoZWlnaHQsIGNsaWVudEltcGwucmVsZWFzZSgpKS5sZWFr
UmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3Bw
CmluZGV4IDQyMTAxZjhjODJjYjJhNTQ4M2JhZTRkYzg0ODA3YjQxNjVhOTJkODYuLjIyYjQwZTQz
OWJiYjYwMTVlMThhYThjMjU1OGUwZTY5M2Y1ZWIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogc3RydWN0IERPTU9iamVjdENhY2hlRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgIERPTU9iamVjdENhY2hlRGF0YShHT2JqZWN0KiB3cmFwcGVy
KQogICAgICAgICA6IG9iamVjdCh3cmFwcGVyKQogICAgICAgICAsIGNhY2hlUmVmZXJlbmNlcygx
KQpAQCAtNzcsMTUgKzc4LDggQEAgc3RhdGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlck1h
cCYgZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAot
c3RhdGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciYgZ2V0T3JDcmVhdGVET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQotewotICAgIERPTU9iamVj
dENhY2hlRnJhbWVPYnNlcnZlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdENhY2hl
RnJhbWVPYnNlcnZlcnMoKS5hZGQoJmZyYW1lLCBudWxscHRyKTsKLSAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUpOwotICAgIHJldHVybiAqcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKLX0KLQogY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01PYmplY3RDYWNoZUZy
YW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQogICAgICAgICA6IEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlcigmZnJhbWUpCkBAIC0xMDUsNyArOTksNyBAQCBjbGFzcyBET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZQogICAgICAgICBpZiAoZG9tV2luZG93ICYmICghbV9kb21XaW5kb3dPYnNlcnZlciB8
fCBtX2RvbVdpbmRvd09ic2VydmVyLT53aW5kb3coKSAhPSBkb21XaW5kb3cpKSB7CiAgICAgICAg
ICAgICAvLyBOZXcgRE9NV2luZG93LCBjbGVhciB0aGUgY2FjaGUgYW5kIGNyZWF0ZSBhIG5ldyBE
T01XaW5kb3dPYnNlcnZlci4KICAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgICAgICBtX2Rv
bVdpbmRvd09ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRv
bVdpbmRvdywgKnRoaXMpOworICAgICAgICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IG1ha2VV
bmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlzKTsKICAgICAgICAgfQog
CiAgICAgICAgIG1fb2JqZWN0cy5hcHBlbmQoJmRhdGEpOwpAQCAtMTkxLDYgKzE4NSwxNCBAQCBj
bGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpG
cmFtZURlc3RydWN0aW9uT2JzZXJ2ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01XaW5kb3dPYnNl
cnZlcj4gbV9kb21XaW5kb3dPYnNlcnZlcjsKIH07CiAKK3N0YXRpYyBET01PYmplY3RDYWNoZUZy
YW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNv
cmU6OkZyYW1lJiBmcmFtZSkKK3sKKyAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZm
cmFtZSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2
ZXI+KGZyYW1lKTsKKyAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKIHR5
cGVkZWYgSGFzaE1hcDx2b2lkKiwgc3RkOjp1bmlxdWVfcHRyPERPTU9iamVjdENhY2hlRGF0YT4+
IERPTU9iamVjdE1hcDsKIAogc3RhdGljIERPTU9iamVjdE1hcCYgZG9tT2JqZWN0cygpCkBAIC0y
MTUsNyArMjE3LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6cHV0KHZvaWQqIG9iamVjdEhhbmRs
ZSwgdm9pZCogd3JhcHBlcikKIHsKICAgICBET01PYmplY3RNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBkb21PYmplY3RzKCkuYWRkKG9iamVjdEhhbmRsZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihH
X09CSkVDVCh3cmFwcGVyKSk7CiB9CiAKIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3Jl
OjpOb2RlKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCkBAIC0yMjQsNyArMjI2LDcgQEAg
dm9pZCBET01PYmplY3RDYWNoZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9p
ZCogd3JhcHBlcikKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47
CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmpl
Y3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsK
ICAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gb2JqZWN0SGFuZGxlLT5kb2N1bWVudCgp
LmZyYW1lKCkpCiAgICAgICAgIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVy
KCpmcmFtZSkuYWRkT2JqZWN0Q2FjaGVEYXRhKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRl
eCA0Y2NlYzYyZWYwZTExMzFmYTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmLi40ZDc0MmU0MDliYmZj
N2NmYWI0MDhjZDY1MzhhZWY5ZjIyOGZkNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJL
aXRFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIEFQ
STo6T2JqZWN0KiB1c2UKICAgICBzY2FuTW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBt
b2R1bGVQYXRocyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1
bGU+KG1vZHVsZVBhdGhzW2ldKTsKKyAgICAgICAgYXV0byBtb2R1bGUgPSBtYWtlVW5pcXVlPE1v
ZHVsZT4obW9kdWxlUGF0aHNbaV0pOwogICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChpbml0aWFsaXplV2ViRXh0ZW5zaW9uKG1v
ZHVsZS5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RWRpdG9yLmNwcAppbmRleCAwNDA3MmViODY0ZGJlMzVmODBkZmM4NmFkMGU4ODNjM2U5OWNlNDRm
Li5jY2I1MWUwZDk2NDBjNjZmODU5NmU0NzQxNzE0MDU4ZTkxMzk3Njg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRXZWJF
ZGl0b3IqIHdlYmtpdFdlYkVkaXRvckNyZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewog
ICAgIFdlYktpdFdlYkVkaXRvciogZWRpdG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9FRElUT1IsIG51bGxwdHIpKTsKICAgICBlZGl0b3ItPnByaXYt
PndlYlBhZ2UgPSB3ZWJQYWdlOwotICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5z
ZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VFZGl0b3JD
bGllbnQ+KGVkaXRvcikpOworICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVk
aXRvcikpOwogICAgIHJldHVybiBlZGl0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYkV4dGVuc2lvbi5jcHAKaW5kZXggNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5NjEyOTlh
NzAxMDgxNzUwMS4uZTMwNmUzZmVmMjYzMWQ1NDY2NTU3MTE2ZTVlNDg3ZDM3MWM3ODU3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTE5Niw3ICsx
OTYsNyBAQCBjbGFzcyBXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1
YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJr
aXRXZWJFeHRlbnNpb25DcmVhdGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJL
aXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhURU5TSU9OLCBOVUxMKSk7Ci0gICAgYnVuZGxlLT5zZXRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4o
ZXh0ZW5zaW9uKSk7CisgICAgYnVuZGxlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJFeHRlbnNp
b25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lv
bjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGNmYzUwMzFl
ZDZlNGEyOTU0ZmUwMmEwM2RhODdhMTYxY2QyZDMwODIuLmM5MjA0YjIzOTgxZDdmMTdhZDA3M2I5
ZWQ0MTJhODc3Njg1Y2U3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAK
QEAgLTk1LDYgKzk1LDcgQEAgV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYlBhZ2UsIHdlYmtp
dF93ZWJfcGFnZSwgR19UWVBFX09CSkVDVCkKIHN0YXRpYyB2b2lkIHdlYkZyYW1lRGVzdHJveWVk
KFdlYkZyYW1lKik7CiAKIGNsYXNzIFdlYktpdEZyYW1lV3JhcHBlciBmaW5hbDogcHVibGljIEZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViS2l0RnJhbWVXcmFwcGVyKFdlYkZyYW1lJiB3ZWJGcmFtZSkKICAgICAg
ICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIod2ViRnJhbWUuY29yZUZyYW1lKCkpCkBAIC0x
MjgsNyArMTI5LDcgQEAgc3RhdGljIFdlYktpdEZyYW1lKiB3ZWJraXRGcmFtZUdldE9yQ3JlYXRl
KFdlYkZyYW1lKiB3ZWJGcmFtZSkKICAgICBpZiAod3JhcHBlclB0cikKICAgICAgICAgcmV0dXJu
IHdyYXBwZXJQdHItPndlYmtpdEZyYW1lKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0
RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRGcmFtZVdyYXBw
ZXI+KCp3ZWJGcmFtZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEZyYW1lV3JhcHBlcj4g
d3JhcHBlciA9IG1ha2VVbmlxdWU8V2ViS2l0RnJhbWVXcmFwcGVyPigqd2ViRnJhbWUpOwogICAg
IHdyYXBwZXJQdHIgPSB3cmFwcGVyLmdldCgpOwogICAgIHdlYkZyYW1lTWFwKCkuc2V0KHdlYkZy
YW1lLCBXVEZNb3ZlKHdyYXBwZXIpKTsKICAgICByZXR1cm4gd3JhcHBlclB0ci0+d2Via2l0RnJh
bWUoKTsKQEAgLTY3OCwxMSArNjc5LDExIEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VD
cmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKICAgICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gV0VCS0lU
X1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfUEFHRSwgTlVMTCkpOwogICAg
IHBhZ2UtPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwogCi0gICAgd2ViUGFnZS0+c2V0SW5qZWN0
ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlUmVzb3VyY2VM
b2FkQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxvYWRlckNsaWVudD4ocGFnZSkpOwotICAg
IHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVVJQ2xpZW50PihwYWdlKSk7
Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8UGFnZUZvcm1DbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZVJlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBh
Z2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQobWFr
ZVVuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0
ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb250ZXh0TWVudUNsaWVu
dD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQobWFrZVVu
aXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOwogCiAgICAgcmV0
dXJuIHBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCmluZGV4
IDgxMDU1Y2U3ZmRlYmEzMThkYWIwNjgyNjM0YzZiZDg0YTM3ZmFlOGMuLjA4NGYzMDA1ZDYxMDNk
NGUyNTAzM2MyNTZjNzBjMGUwNjQwNDFjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4
dEl0ZXJhdG9yLm1tCkBAIC00NSw3ICs0NSw3IEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KFdLRE9N
UmFuZ2UgKilyYW5nZQogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IF90ZXh0SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4o
V2ViS2l0Ojp0b1dlYkNvcmVSYW5nZShyYW5nZSkpOworICAgIF90ZXh0SXRlcmF0b3IgPSBtYWtl
VW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oV2ViS2l0Ojp0b1dlYkNvcmVSYW5nZShyYW5n
ZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KaW5kZXggNDg4MDBiYjMxNzkwNjVlNGU3MzI5MzA2OTA1NDY4MGU0MzRhZjFmZi4uNDIwMjM5
NmFiYWZhZjMwZDcxODlhZWI2ODUwOWVhMjcxNzFiOTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbQpAQCAtNTQ0LDcgKzU0NCw3IEBAIC0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0
ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGU+KWZvcm1EZWxlZ2F0
CiAgICAgfTsKIAogICAgIGlmIChmb3JtRGVsZWdhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRJbmpl
Y3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7
CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxG
b3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRC
dW5kbGVGb3JtQ2xpZW50KG51bGxwdHIpOwogfQpAQCAtNjczLDcgKzY3Myw3IEBAIC0gKHZvaWQp
X3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0
ZT4pZWRpdGluZ0RlbGVnCiAgICAgfTsKIAogICAgIGlmIChlZGl0aW5nRGVsZWdhdGUpCi0gICAg
ICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PENsaWVudD4oc2VsZikpOworICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQobWFrZVVuaXF1ZTxDbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCmluZGV4IDIwY2U1NTkxMWQ3MDY1MWMzMzVhNzBhY2YyNGU1YmRmYzIxYmQ2MzEuLjk5
NzlkNjM4NGRmZjVjOTgwNTkxZjI5MDgzYzkzNzI5NjM0NGE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRC
dW5kbGU6OmNyZWF0ZShXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiBJbmplY3Rl
ZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKICAgICA6IG1fcGF0aChwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0
aCkKICAgICAsIG1fcGxhdGZvcm1CdW5kbGUoMCkKLSAgICAsIG1fY2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpKQorICAgICwgbV9jbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCiB7CiB9CiAKQEAgLTExNCw3
ICsxMTQsNyBAQCBJbmplY3RlZEJ1bmRsZTo6fkluamVjdGVkQnVuZGxlKCkKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
Q2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9jbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKTsKKyAgICAg
ICAgbV9jbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5oCmluZGV4IDBjYTVlYTZkMmFiZTU3MjE1NGQyMWJlZDBjYzlh
MDUzZTdkNjZjMTguLmJmYjNkMDQ1MTQzNzM2YzMxZGY5ODhhYjFiMDBkZTQyYjg1MzA4OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNo
ZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
KFdlYlByb2Nlc3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuaAppbmRleCBkN2M1YzY4MzQ0YjcyNzM4ZDk0OTdkZjAxMmNhMzc2YmI4NDE4OGRhLi5i
MGJkNTM0Y2UxOWQ3Mzg2MWQ4MTc2YTgyMDVjZGNlNjE5NWZkMDY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcj4sIHByaXZhdGUgV2ViQ29yZTo6TWVkaWFDYW5TdGFydExpc3RlbmVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogICAgIH5Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDcz
MzUyNzY1ODcxZDgyNTVhMjNkYjdiNTVlNmQ0NGVlNzMzOTIyZDcuLjJlNTdhZjI0ODNiZDM2YjNk
ZDg1ZTRlYzE4ZGRlMTBmNDQzNmU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMzIsMzggKzEzMiwxMSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRNZXNzYWdl
KFQmJiBtZXNzYWdlLCBzaXplX3QgYnl0ZQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLVdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCi17Ci0gICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOwot
ICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0
dXJuIFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAg
ICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3Ry
aW5nIHsgbWVzc2FnZSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGlu
Z01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdl
KSk7Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KLVdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBi
aW5hcnlEYXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQotewot
ICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0
dXJuIFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAg
ICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0
YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5h
cnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7
Ci0gICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxQZW5kaW5nTWVzc2FnZT4oYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkp
OwotCi0gICAgcmV0dXJuIFNlbmRTdWNjZXNzOwotfQotCiBjbGFzcyBCbG9iTG9hZGVyIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJsb2JMb2FkZXIoV2ViQ29yZTo6RG9jdW1l
bnQqIGRvY3VtZW50LCBXZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9sb2FkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVy
OjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhpcykpCisgICAgICAgIDogbV9sb2FkZXIobWFrZVVuaXF1
ZTxXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpS
ZWFkQXNBcnJheUJ1ZmZlciwgdGhpcykpCiAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CiAgICAgICAgIG1fbG9hZGVyLT5zdGFy
dChkb2N1bWVudCwgYmxvYik7CkBAIC0yMjYsNyArMTk5LDcgQEAgY2xhc3MgUGVuZGluZ01lc3Nh
Z2UgewogCiAgICAgUGVuZGluZ01lc3NhZ2UoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3VtZW50LCBX
ZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgICAgIDogbV90eXBlKFR5cGU6OkJsb2IpCi0gICAgICAgICwgbV9ibG9i
TG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJsb2IsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKSkKKyAgICAgICAgLCBtX2Jsb2JMb2FkZXIobWFrZVVuaXF1
ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
KQogICAgIHsKICAgICB9CiAKQEAgLTI0NCwxMyArMjE3LDQwIEBAIGNsYXNzIFBlbmRpbmdNZXNz
YWdlIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogfTsK
IAorV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNp
emVJbkJ5dGVzKCk7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgp
KQorICAgICAgICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMu
aXNFbXB0eSgpKQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENo
YW5uZWw6OlNlbmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAg
ICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+
KG1lc3NhZ2UpKTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKworV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlC
dWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgpCit7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAg
ICAgICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0
eSgpKQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6
OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRl
TGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtl
VW5pcXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3Ro
KSk7CisKKyAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Cit9CisKIFdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChXZWJDb3JlOjpCbG9iJiBibG9iKQogewog
ICAgIC8vIEF2b2lkIHRoZSBCbG9iIHF1ZXVlIGFuZCBsb2FkaW5nIGZvciBlbXB0eSBibG9icy4K
ICAgICBpZiAoIWJsb2Iuc2l6ZSgpKQogICAgICAgICByZXR1cm4gc2VuZChKU0M6OkFycmF5QnVm
ZmVyOjpjcmVhdGUoYmxvYi5zaXplKCksIDEpLCAwLCAwKTsKIAotICAgIG1fcGVuZGluZ01lc3Nh
Z2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50Lmdl
dCgpLCBibG9iLCBbdGhpc10geworICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5p
cXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9iLCBbdGhpc10gewogICAg
ICAgICB3aGlsZSAoIW1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
YXV0byYgbWVzc2FnZSA9IG1fcGVuZGluZ01lc3NhZ2VzLmZpcnN0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCmluZGV4IDA5NGFjNzFmN2U1ZWZmYWI3NDg1ZmNlZmNhZTU0ODkzZGIzZTA1
MDYuLjdlYzM3Y2RmMDlkMzkwYTM4MjdhNjljYTNmNjBhNmMzMDU2ZGE3MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1
YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHByaXZhdGU6CiAgICAgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlKiBDcmVh
dGUoKSBmaW5hbAogICAgIHsKQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQXN5bmNSZXNvbHZlckZh
Y3RvcnkgOiBwdWJsaWMgd2VicnRjOjpBc3luY1Jlc29sdmVyRmFjdG9yeSB7CiAKIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92
aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVy
JiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJh
dGlvbikKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENO
ZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9u
KSwgc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZl
ciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKSwg
KnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNS
ZXNvbHZlckZhY3Rvcnk+KCkpOwogfQogCiB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxl
Tm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaAppbmRleCA1ZDYz
ODNmNmI1MDY1M2I1YzY3MDcwNzA1YzZjMTAyODcwZmEwMjMxLi4zOTkwNjk5ZDA3NzhmZWIxN2Iw
Y2E4ZTYwNzgxNDEwOGE1YzAwYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaApAQCAtNDAsNiAr
NDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk7
CiAKIGNsYXNzIExpYldlYlJUQ1Jlc29sdmVyIGZpbmFsIDogcHVibGljIHJ0Yzo6QXN5bmNSZXNv
bHZlckludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgTGliV2ViUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllcikgOiBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcAppbmRl
eCBmOGI3ZWQyMjljNGY2ZjJkYzAzNjEzMmNjOTZlNDExZWVjYTU3MDJlLi4yMzU4MmRlNzU5Yjk4
NDVlYjdmZTQwNjQ0MzY1ZWZiYzE5Yjc1ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZh
Y3RvcnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRy
ZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIAogcnRj
OjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVy
VGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWlu
UG9ydCwgdWludDE2X3QgbWF4UG9ydCwgaW50IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBzb2NrZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2Nr
ZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwgYWRkcmVzcywg
cnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJX
ZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRD
U29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsK
ICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwog
CiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigp
LCBhZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9uTG9j
YWxob3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0LCBvcHRpb25zXSgpIHsKQEAgLTY2
LDcgKzY2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9y
eTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3luY1BhY2tldFNv
Y2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9y
dCkKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0
PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlw
ZTo6VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0byBzb2NrZXQg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVu
dGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRjOjpTb2NrZXRB
ZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tl
dC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0gc29ja2V0LT5p
ZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVzcyhhZGRyZXNzLCBtX2Rp
c2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1heFBvcnRdKCkgewpAQCAt
ODAsNyArODAsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0
b3J5OjpjcmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZQogCiBydGM6OkFzeW5jUGFja2V0
U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQoY29u
c3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBsb2NhbEFkZHJlc3MsIGNvbnN0IHJ0Yzo6U29ja2V0QWRk
cmVzcyYgcmVtb3RlQWRkcmVzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcmJiB1
c2VyQWdlbnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwg
TGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywgcmVtb3RlQWRk
cmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRo
aXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OkNs
aWVudFRDUCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNldFN0
YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVElORyk7CiAgICAgbV9zb2NrZXRzLnNl
dChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtOTYsNyArOTYsNyBA
QCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVD
bGllbnRUY3BTb2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KExpYldlYlJUQ1Nv
Y2tldCYgc2VydmVyU29ja2V0LCB1aW50NjRfdCBuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmll
ciwgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzKQogewotICAgIGF1dG8g
c29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5p
cXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJDb25uZWN0
aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJlc3MpOworICAg
IGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5p
cXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJDb25uZWN0
aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJlc3MpOwogICAg
IHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05ORUNURUQpOwogICAg
IG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmRldGFjaChMaWJX
ZWJSVENTb2NrZXQmIHNvY2tldCkKIAogcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlKiBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVBc3luY1Jlc29sdmVyKCkKIHsKLSAgICBhdXRvIHJl
c29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytzX3VuaXF1ZVJl
c29sdmVySWRlbnRpZmllcik7CisgICAgYXV0byByZXNvbHZlciA9IG1ha2VVbmlxdWU8TGliV2Vi
UlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOwogICAgIGF1dG8qIHJl
c29sdmVyUG9pbnRlciA9IHJlc29sdmVyLmdldCgpOwogICAgIG1fcmVzb2x2ZXJzLnNldChyZXNv
bHZlclBvaW50ZXItPmlkZW50aWZpZXIoKSwgV1RGTW92ZShyZXNvbHZlcikpOwogICAgIHJldHVy
biByZXNvbHZlclBvaW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggMmQx
ZTg0MjQ3YmQwYTMwYzk0ZDFmMmVhMzAxZGQ1NWQwMmE2ZTA3Ni4uYjI3MTNmNDZjMWZjMTNjOWYy
N2JiZTM5Y2E1ZGM1MTg1MGIxODNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaApA
QCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xh
c3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJOb3RpZmljYXRpb25NYW5hZ2VyKTsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCAxNmExYTdmODM0NDYwNTNm
MzNkNjU0ZTgzMzMyMjk1MGVlOTk0ZDcyLi5kNzNmMWYxNmY4OTA3NjljNzJjYzlkZDQ0MGQyMjky
MWZmNWZmYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHsKICAgICBleHBsaWNp
dCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihOZXRzY2FwZVBsdWdpbiogcGx1Z2luKQogICAg
IHsKICAgICAgICAgaWYgKHBsdWdpbikKLSAgICAgICAgICAgIG1fcHJvdGVjdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcj4o
c3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29udHJvbGxlcigpKTsKKyAgICAgICAgICAg
IG1fcHJvdGVjdG9yID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVnaW5EZXN0cnVj
dGlvblByb3RlY3Rvcj4oc3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29udHJvbGxlcigp
KTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDY5
YTNjOTNmMTMyNmZhNGM2ZjdmZWJmOGFiMWIyY2E0Yzc3NmJjMGUuLjU5ZjQ4MjUxZjI4ODU0YzZk
MTY4MGIxZDY0ZGZhYTVhNDdjNjgxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM1
MCw3ICszNTAsNyBAQCB1aW50MzJfdCBOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVUaW1lcih1bnNp
Z25lZCBpbnRlcnZhbCwgYm9vbCByZXBlYXQsIHZvaWQgKCp0aQogICAgIC8vIEZJWE1FOiBIYW5k
bGUgd3JhcHBpbmcgYXJvdW5kLgogICAgIHVuc2lnbmVkIHRpbWVySUQgPSArK21fbmV4dFRpbWVy
SUQ7CiAKLSAgICBhdXRvIHRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4odGhpcywgdGlt
ZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKKyAgICBhdXRvIHRpbWVyID0gbWFr
ZVVuaXF1ZTxUaW1lcj4odGhpcywgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5j
KTsKICAgICAKICAgICAvLyBGSVhNRTogQmFzZWQgb24gdGhlIHBsdWctaW4gdmlzaWJpbGl0eSwg
ZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgdGhyb3R0bGUgdGhlIHRpbWVyLCBvciBpZiB3ZSBzaG91
bGQgc3RhcnQgaXQgYXQgYWxsLgogICAgIHRpbWVyLT5zdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKaW5kZXggZTBhYmMyYzdiNDEyOTkzMDAyYmJhYjhiZGZhYjdmMjY1MWFkYzU3Zi4uYjZjNzZi
NmVkNzE0Y2FhYTNhNDFkZGU0MWMxZDZhMTA0ZmI3YWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CkBAIC0zMDgsNiArMzA4LDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2lu
IHsKICAgICBWZWN0b3I8Ym9vbCwgOD4gbV9wb3B1cEVuYWJsZWRTdGF0ZXM7CiAKICAgICBjbGFz
cyBUaW1lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUaW1lcik7CiAKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMDQ5NjI4ZjVjNjI3MDJlNGQ1ZDQxMTE4MjAxMjNiYTVm
NGI5NjUyNC4uYmRhYTE0NDc4NDIyNjk1ZDUwZWE4NDhhYWZjY2JjZTEyZDJhZDkyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAg
ICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7CisgICAgICAgICAgICBtX2RlbGl2
ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPHVpbnQ4X3Q+PigpOwogCiAgICAgICAgIG1fZGVs
aXZlcnlEYXRhLT5yZXNlcnZlQ2FwYWNpdHkobV9kZWxpdmVyeURhdGEtPnNpemUoKSArIGxlbmd0
aCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAppbmRleCA0NGQxMWI1N2MzZWE2ZDUxOGMx
OGQwNGI4MjJkMjg2ZDUzZTk2OGNmLi4wN2Q1NTZjM2I3ZmM2MzcxOWMyYTI1NTllMGFhZDZjMjI2
YzA3Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAgLTEzNiwx
MCArMTM2LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gTmV0c2NhcGVQ
bHVnaW5YMTE6OmNyZWF0ZShOZXRzY2FwZVBsdWdpbiYgcGx1CiAKICNpZiBQTEFURk9STShHVEsp
CiAgICAgaWYgKHBsdWdpbi5pc1dpbmRvd2VkKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRvd0lEKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxh
eSwgd2luZG93SUQpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRz
Y2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxO
ZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKIH0KIAogTmV0c2NhcGVQbHVnaW5Y
MTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4sIERpc3BsYXkqIGRp
c3BsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCmluZGV4IDQxZTliNmM5ZDg0
Y2FhNDk1OGUzODViOWVkODBmZGQ3ZTExZGNhNWIuLjFmOWZkODdmYTNhMzBjOTM2MDQzOGVkNTk3
ZGMzMmM4OTU4N2FmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCkBAIC0z
Nyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0c2NhcGVQbHVnaW47CiAK
IGNsYXNzIE5ldHNjYXBlUGx1Z2luWDExIGZpbmFsIDogcHVibGljIE5ldHNjYXBlUGx1Z2luVW5p
eCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gY3JlYXRlKE5ldHNjYXBlUGx1Z2luJik7
CiAgICAgTmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVnaW4mLCBEaXNwbGF5Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgK
aW5kZXggYTFmODA3ZTFlNTUwNzIzZWZlZWExNzcxMzNiODFkZmY0ZDE3NmIzNS4uYjU3MmFhM2E1
MzZkNDg1Y2I5YjgxN2ExNmUwMmMzMzJjNGJjMjExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtMTU5LDYgKzE1OSw3
IEBAIGNsYXNzIFBsdWdpbkNvbnRyb2xsZXIgewogCiAgICAgLy8gSGVscGVyIGNsYXNzIGZvciBk
ZWxheWluZyBkZXN0cnVjdGlvbiBvZiBhIHBsdWctaW4uCiAgICAgY2xhc3MgUGx1Z2luRGVzdHJ1
Y3Rpb25Qcm90ZWN0b3IgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKFBsdWdp
bkNvbnRyb2xsZXIqIHBsdWdpbkNvbnRyb2xsZXIpCiAgICAgICAgICAgICA6IG1fcGx1Z2luQ29u
dHJvbGxlcihwbHVnaW5Db250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGYzN2MyY2MyNGUzZGQ5NzYzZjNlYmRkNjMy
ZDhiZmRiNzcxNDQzNDcuLjlhYjU4MzczMGI4OWRiZDk2MDFkNjUyMGVmOGY5YjBiZTAwNmRjNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIG1fY29ubmVjdGlvbi0+YWRkUGx1Z2luUHJveHko
dGhpcyk7CiAKICAgICAvLyBBc2sgdGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVhdGUgYSBwbHVn
LWluLgotICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyA9IHN0ZDo6bWFrZV91
bmlxdWU8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPigpOworICAgIG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycyA9IG1ha2VVbmlxdWU8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPigp
OwogCiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5wbHVnaW5JbnN0YW5j
ZUlEID0gbV9wbHVnaW5JbnN0YW5jZUlEOwogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycy0+d2luZG93TlBPYmplY3RJRCA9IHdpbmRvd05QT2JqZWN0SUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggN2FiODk2
NmRiOTA1YWRkMTIzOTQ4MTY1MGIxOWRlNGE3ZTdkMjIzZi4uMTE5ZDJiOTBjMmI0NDIzMWYyNTY5
NTdlNjJkZGNhOGYxMzBmYzczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTg5OCw3ICs4OTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNlRXZlbnQmIGV2ZW50KSBj
b25zdAogICAgIGlmIChldmVudC5tZXRhS2V5KCkpCiAgICAgICAgIG1vZGlmaWVycy5hZGQoV2Vi
RXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdlYk1vdXNlRXZlbnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQuYnV0dG9ucygpLCBtX3BsdWdpbi0+
Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQub2Zmc2V0WCgpLCBldmVudC5vZmZzZXRZ
KCkpKSwgZXZlbnQuc2NyZWVuTG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3VudCwgbW9kaWZp
ZXJzLCBXYWxsVGltZSB7IH0sIDApOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYk1vdXNlRXZl
bnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQuYnV0dG9ucygpLCBtX3BsdWdpbi0+Y29udmVydFRvUm9v
dFZpZXcoSW50UG9pbnQoZXZlbnQub2Zmc2V0WCgpLCBldmVudC5vZmZzZXRZKCkpKSwgZXZlbnQu
c2NyZWVuTG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3VudCwgbW9kaWZpZXJzLCBXYWxsVGlt
ZSB7IH0sIDApOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2ZW50JiBldmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA2ZmMwOWM0ZjY1YjI0
NWI2MGJmNGQ0ZjU5N2E5ZjkwYWQ0ZDBhYWY5Li5hMWZmMDMzYjIwNGVhZmFkYzg4OGE4MjA4YTg5
Zjc5ZGEwMGJjZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFs
bFNlcnZpY2VXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckNvbnQKIAogICAgIC8vIEZJWE1FOiBU
aGlzIG1ldGhvZCBzaG91bGQgYmUgbW92ZWQgZGlyZWN0bHkgdG8gV2ViQ29yZTo6U1dDb250ZXh0
TWFuYWdlcjo6Q29ubmVjdGlvbgogICAgIC8vIElmIGl0IHdlcmVuJ3QgZm9yIFNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudCdzIGRlcGVuZGVuY2Ugb24gV2ViRG9jdW1lbnRMb2FkZXIsIHRo
aXMgY291bGQgYWxyZWFkeSBoYXBwZW4uCi0gICAgYXV0byBmcmFtZUxvYWRlckNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PigqdGhpcywgc2Vz
c2lvbklELCBtX3BhZ2VJRCwgKyttX3ByZXZpb3VzU2VydmljZVdvcmtlcklELCBlZmZlY3RpdmVV
c2VyQWdlbnQpOworICAgIGF1dG8gZnJhbWVMb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPFNlcnZp
Y2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsICsr
bV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZmZWN0aXZlVXNlckFnZW50KTsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBmcmFtZUxvYWRlckNsaWVu
dC5nZXQoKTsKICAgICBtX2xvYWRlcnMuYWRkKFdURk1vdmUoZnJhbWVMb2FkZXJDbGllbnQpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmln
aW5UYWJsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5U
YWJsZS5oCmluZGV4IDkyMGRlZDA0MGNlNTYxODMzOTlmNmM5M2I4MmViMzZkZjczMDQ5NmEuLjkz
MGU0NjE4MTllMTg2ZjVhODBkOGY2NzE2ZmIxMThjNGRjMGVhODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKQEAgLTM3LDYg
KzM3LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJTV09yaWdpblRhYmxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBXZWJTV09yaWdpblRhYmxlKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggNGRmNmYwMTllNTU4NTc1NTJjODRkZmFiOTI1
MGM0MDFhODRjYjgzNS4uZjRjZjI5MWE0MDEwYjFlN2MyNDE2N2Q0NTRiNTRlYzRiODY0YzRmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudChXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDNjODcyZjVhZGYzOWJlYWNk
M2E3MDY2N2IyNjg5ZDM4YzliMTExMmUuLjRkMjc0NzY4NjIwZTVhNDZlYjk1MDhmZGU0N2I1NzFl
Nzk2ZjE3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03OTMsNyArNzkzLDcgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbiwKIAogc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50JiBjbGll
bnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29sb3JDaG9vc2VyPigmbV9wYWdlLCAmY2xpZW50LCBpbml0aWFsQ29sb3IpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwg
aW5pdGlhbENvbG9yKTsKIH0KIAogI2VuZGlmCkBAIC04MDIsNyArODAyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIo
Q29sb3JDaG9vc2VyQ2wKIAogc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoRGF0YUxp
c3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPigmbV9wYWdlLCAm
Y2xpZW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggY2VkMzZhNmMyNWI3
ZTRmODM0NGE1ODk5NDAwNjc5MWY3Y2M5Mjc2Zi4uZDQ1NTZkOTg3YTM2NmQxODExNDA4YWQ5MGJm
N2EzNDdkZDU5OGRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFz
cyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJQYWdlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggNmMyOWI0ZTA4MTI2ZTdjZDY2NzljYzQ3MDIzNWM1
NTc0ZGU1MGQyZS4uYzFjODljZDk5ZTg3YWVlODRlZDU3NDZjMmU4MWY2NDdlODJmMWZjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVDbGllbnQoV2ViUGFnZSogcGFnZSkK
ICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDFhZDRjM2RlMmNiN2Qz
OGU2MjYyYzE5N2FhYjI0Y2NhNmZlZGE4MjEuLmIyNGVjZjc2YzQ1NTI0ZjYwZDg2YWVkNmZiMWVj
ZjZmMGYzOTQyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShw
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDI2ODEwMmZlYTFhNzc1N2VkN2UxNmRkZWNjZTNj
YWQ4ZWU2YmQ0MzUuLmQyMmQ0Y2I3M2YyOTczZjU2NTVhODczZWJkMjJkNmIwMDZhZTBmM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRvckNsaWVu
dChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRp
b25DbGllbnQuaAppbmRleCAzMGY1YWQ2YjRiYzJhNjM4ZDYwMzdmOGVjOTczODA5ZGY2ZTU2YjE4
Li4zNWEzMWZjMmEzNDRiMzEyODczMDUwNGI3ZmU3YTExNWYwMTFiODgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJQYWdlJiBwYWdlKQogICAgICAgICA6
IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA3Y2RhYWNkMWZj
MWQ0NmQ2NWVhZGMzZjNhNjEzNGFhMzU1OGEyZDExLi5kNjdiNjJjMDJlNjg4M2I0NDg2NWZiYTE1
ODUxNmVhMGNiY2I1YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKICAgICB9CiAKICAgICBpZiAoIW1fcGFpbnRJbmRpY2F0b3JMYXllckNs
aWVudCkKLSAgICAgICAgbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ+KCp0aGlzKTsKKyAgICAgICAgbV9wYWlu
dEluZGljYXRvckxheWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxSZXBhaW50SW5kaWNhdG9yTGF5ZXJD
bGllbnQ+KCp0aGlzKTsKIAogICAgIGF1dG8gcGFpbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZShtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICptX3Bh
aW50SW5kaWNhdG9yTGF5ZXJDbGllbnQpOwogICAgIApAQCAtMTYyLDkgKzE2Miw5IEBAIHZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
ICAgICBwYWludExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IoMS4wZiwgMC4wZiwgMC4w
ZiwgMC4yZikpOwogCiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmFkZUtleWZyYW1lcyhBbmltYXRl
ZFByb3BlcnR5T3BhY2l0eSk7Ci0gICAgZmFkZUtleWZyYW1lcy5pbnNlcnQoc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCAxKSk7CisgICAgZmFkZUtleWZyYW1lcy5pbnNl
cnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCAxKSk7CiAKLSAgICBmYWRlS2V5
ZnJhbWVzLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAuMjUs
IDApKTsKKyAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KDAuMjUsIDApKTsKICAgICAKICAgICBhdXRvIG9wYWNpdHlBbmltYXRpb24gPSBBbmlt
YXRpb246OmNyZWF0ZSgpOwogICAgIG9wYWNpdHlBbmltYXRpb24tPnNldER1cmF0aW9uKDAuMjUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGY1ZWNjNjRjOTIzZjM4NmM1MGU3YjUyOTc3
ZWZjMDk5ZTBiY2ZhZDYuLjI3YzNlZTE0MmUxNjE2ZTQzNWY0OGQ0MWYyNzI3MTVmZThlMDM4MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgV2ViUGFn
ZTsKIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudDsKIAogY2xhc3MgV2ViSW5zcGVj
dG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHJpdmF0ZSBXZWJD
b3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IGZyaWVuZCBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiBwdWJsaWM6CiAgICAg
V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggNTMzYmU4NDBjYWQ3MTQ1NTVkYWYwYWEyMDcyOGEzYzkz
MzU1YzliZS4uNGJiMzdmZGQ2MDc3NzRlZDgwOWE5NjdhNzc1MTVmYmFmYjZlZjZhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKQEAgLTMyLDYgKzMyLDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oCmluZGV4IDE2MzdhZDEwOTdkNzY0OWU1MGRmNzRmNWUwNjIyNzI3MWZhYjg0NWEuLjAw
Y2MwYTA4ZDkyNjA0ZmRkZmI1Y2E2MmY2Yjg4NTk1YzMxYWIwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlOwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJOb3RpZmljYXRpb25DbGllbnQoV2ViUGFnZSopOwogICAgIHZpcnR1YWwg
fldlYk5vdGlmaWNhdGlvbkNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMu
Y3BwCmluZGV4IDc5MDA4NGNlNDhkMjI2YjEwZTY2NWI4Mjg0NDM0OWZkYWFmZmVlNDYuLjY5ZjBh
ZTgyNzk1MDdiNzI5NjVmNjVjMjE2ODczYzQ4MWFkZjRkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkT3Zl
cnJpZGVzOjphZGRPdmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
dHIKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3ZlcnJpZGVzTWFwLmFkZChwYXN0ZWJvYXJkTmFt
ZSwgbnVsbHB0cik7CiAKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PiB0eXBlTWFw
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4oKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+
PiB0eXBlTWFwID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4o
KTsKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUodHlwZU1hcCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKaW5kZXggZjZlMDE0OTU3ZWRjMjc3ZGI5ODM3MzEy
N2VjMTA2M2U5MzU1OGNiOC4uY2Y5MGE1ZGZjZmRhNjNlY2I5ODk3Y2M2NmQwZDQ4MTI5NDQ4MTNj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsdWdJbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnSW5DbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBsdWdJbkNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpQbHVnSW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFdlYlBsdWdJbkNsaWVudChXZWJQYWdlJik7CiAgICAgdmlydHVhbCB+
V2ViUGx1Z0luQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgKaW5k
ZXggNWRkNjViZmEwZDUwY2NmZGIxNDYxZmViM2ZlNTI0MWZjYWEwZmJhNi4uNjNkNzc0ZTVhOTQy
N2M3MzViNTI0OTBiZDAxY2Q3OWFiNzRhMTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YlBhZ2U7CiAKIGNsYXNzIFdlYlByb2dyZXNzVHJhY2tlckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpQcm9ncmVzc1RyYWNrZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudChXZWJQYWdlJik7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKaW5kZXggZWFkMTdkMzBm
MDU5MGQ3NDQ2NzIwNTVjYWQ3N2Q5NWM2ZDBhNDc3MC4uN2JkODc1OTA1YTY1Yzc3ZDk2YzNmNzg4
NDAwMTg1ODJjZmFmNzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaApA
QCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAgICAg
CiBjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNo
U3ludGhlc2lzQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgOiBt
X3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAppbmRleCAxMDkzMDQ1M2NlNzk3ZWRk
OTBkZTc2ZjAzNTRiOWExZDQwNmYyZTZlLi42OTUyMTc0YjkxMmM5NzFlMzU3ODZlMjdjNDgyMjVk
MmZjYTE0MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCkBAIC0yOSw2ICsyOSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViVXNlck1lZGlhQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViVXNlck1lZGlhQ2xpZW50KFdlYlBhZ2UmKTsK
ICAgICB+V2ViVXNlck1lZGlhQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eS5oCmluZGV4IDAwYTFlMmU4ZTI2MzM1NjNjMzA2OTk4ZGQxNWEyMThiOTZkMTY1
MTIuLjA3NDEzY2ZjOTM5ODVmZTVkOTllOTQwNjhmMTYxNWY0YjI0NGM2MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkoV2Vi
UGFnZSYpOwogICAgIH5UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzLmNwcAppbmRleCA5Y2ZmY2M5YTlmZDJiNjQ0NDkyMmY4NTRhZDk3ZDFkMzMxZTcwYjBlLi5i
MjQ1ODFjOTdlN2E4ODE2ZjQ2YWY5MzE5YTkxZWEyMWI3MmJkNjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkKICAgICAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRy
dWUpOwogICAgIH0gZWxzZSB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyVHJlZUhvc3Q+KG1fd2Vi
UGFnZSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8TGF5ZXJUcmVlSG9z
dD4obV93ZWJQYWdlKTsKICNlbHNlCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG51bGxwdHI7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmNwcAppbmRleCBjMDczOTZmMDJmMWZhNjVmNDVhY2VlNzJmMTM0ZjRmYjJk
OWU4OTA5Li41MzU4Y2Q2ODYzYjMyMjY5NThlZTI3NGVmZDAzMmFkMjAwNjRkZDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC01
MCwxMyArNTAsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5nQXJlYTo6
Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2UKICNpZiBQTEFURk9STShDT0NP
QSkKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVRp
bGVkQ29yZUFuaW1hdGlvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2ViUGFnZSwg
cGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVy
VHJlZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZWxp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKICAgICBj
YXNlIERyYXdpbmdBcmVhVHlwZUNvb3JkaW5hdGVkR3JhcGhpY3M6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwg
cGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCmlu
ZGV4IDBmMjY0MDNlYmI3MGE4MTFiMThlOTg3OTVlMTlkZTc3NDBiZTgzNjAuLjFhNTM1ZjE3ZDk3
ZjY2NjgzOTcyNjlhODZlMjg1N2IyOWI5NzJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEZpbmRDb250cm9sbGVyIDog
cHJpdmF0ZSBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGaW5kQ29udHJvbGxlcik7CiAK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5j
cHAKaW5kZXggNDUyZjUzYmNlZGMwMDQ3ZjczM2QxYzM0YmNkNzY1MTE5MmNiOGJlNi4uNDZlOGFh
MDk5ODY0NWE4Y2U1ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQo
bV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsKIAogICAgIGlmICghbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOworICAgICAgICBt
X3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdT
dG9yZT4odGhpcyk7CiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKIH0KQEAgLTUyMSw3ICs1
MjEsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnRyYW5z
Zm9ybSgpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy50
cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7
CisgICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25N
YXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNTMy
LDcgKzUzMiw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQog
ewotICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJU
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAg
bV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6U3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNzM4LDcgKzczOCw3IEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQogCiB2
b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKQogewotICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWx0ZXJPcGVyYXRpb25zPihmaWx0ZXJzKTsKKyAgICBtX3Byb3BlcnRpZXMuZmlsdGVy
cyA9IG1ha2VVbmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CiAgICAgbV9wcm9wZXJ0
aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Rmls
dGVyc0NoYW5nZWQpOwogfQogCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91
bmRlZFIKICAgICBpZiAobV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgJiYgKm1fcHJvcGVy
dGllcy5zaGFwZVJvdW5kZWRSZWN0ID09IHJvdW5kZWRSZWN0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5k
ZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAg
bV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6U2hhcGVSb3VuZGVkUmVjdENoYW5nZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlVGlsZWRCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCmlu
ZGV4IDFjYmQxYjRiYTc5YTdkZjljZTU1ZTA0MjFkNDRlNjViNDA4ODIxYzIuLjA5OTUzNmI5M2Mw
MTFhYzNmMmEwNzNjM2NhNDY0ZjA3MjY0NjljZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVU
aWxlZEJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyhMYXll
clR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXll
clRyZWVDb250ZXh0JiBjb250ZXh0KQogICAgIDogUGxhdGZvcm1DQUxheWVyUmVtb3RlKGxheWVy
VHlwZSwgb3duZXIsIGNvbnRleHQpCi0gICAgLCBtX3RpbGVDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV90aWxlQ29udHJvbGxlcihtYWtl
VW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDVlNTBlMGJhMWVm
MTI0NmM2YWUwOGYyOWQ5MmE4MzBlMGRiNGYyMzcuLjQ0NDZmMzRkMDRjY2ZiZmJlYjM2OWJhNDRj
MzIwNmJmMGRkMjNlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5
ZXJUcmVlLCBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciwgd2ViUGFnZSkKLSAgICAs
IG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJl
ZUNvbnRleHQ+KHdlYlBhZ2UpKQorICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KG1ha2VV
bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCiAgICAgLCBtX3Jvb3RMYXll
cihHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQog
ICAgICwgbV9sYXllckZsdXNoVGltZXIoKnRoaXMsICZSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6Zmx1c2hMYXllcnMpCiB7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2Fj
dGlvbi50cmFuc2FjdGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9u
LCBzY3JvbGxpbmdUcmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1f
aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5p
cXVlPElQQzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OkNvbW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlm
aWVyLnRvVUludDY0KCkpOwogICAgIGNvbW1pdEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3Vt
ZW50cygpKTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5n
IG1hbmFnZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGFhZGUzZDlmMTg0NGQ3ZjA1YzA5MjE4ZDhlMjA0
NGQ1OGEyZjA1ZjguLmIyYmRjNDFiNzIzMzZiYjZlNDg0OTBmNzMxYjI0ODVkMjcwNzgyZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihX
ZWJQYWdlJik7CiAgICAgflZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA2MGNmZDhkMmEx
NzU0YTdhY2VkNThkNjFkZjE3YmU0YzE0MzEzNjk0Li5iZGQ0YjM5NTI1NGE3MTY3NjM5YWVjZDcz
ODYwZTA3MmQ2OWM0MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6
Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMK
IAogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50KQogewotICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFt
ZUxvYWRlckNsaWVudD4oKSk7CisgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShtYWtlVW5pcXVlPFdl
YkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKICAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGF1dG8g
Y29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25lckVsZW1lbnQs
IGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTMzNjU3MGQ5M2FhNTExMDY5Nzg1NjEx
NzAyNjA4OTNiOGEzY2RiNC4uZGIzMmRhNDgxMzllMTlmNzE0MjEyNTY1NDBhMjE2MzIzNGNjOTEw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTM4MywyMSArMzgzLDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAsIG1fdGV4dENo
ZWNraW5nQ29udHJvbGxlclByb3h5KG1ha2VVbmlxdWVSZWY8VGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5PigqdGhpcykpCiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0o
R1RLKQotICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKHN0ZDo6bWFrZV91bmlx
dWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQorICAgICwgbV92aWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yKG1ha2VVbmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcj4oKnRoaXMpKQogI2VsaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKEdU
SykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChudWxscHRyKQogI2VuZGlmCiAgICAgLCBt
X3NldENhblN0YXJ0TWVkaWFUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlOjpz
ZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50
KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50Pigp
KQogI2VuZGlmCi0gICAgLCBtX2VkaXRvckNsaWVudCB7IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBt
X2xvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VM
b2FkZXJDbGllbnQ+KCkpCi0gICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKSkKLSAgICAsIG1f
dWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGll
bnQ+KCkpCisgICAgLCBtX2VkaXRvckNsaWVudCB7IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KKyAgICAsIG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkpCisgICAgLCBtX2xvYWRlckNsaWVudCht
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCkpCisgICAg
LCBtX3Jlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJl
c291cmNlTG9hZENsaWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCiAgICAgLCBtX2ZpbmRDb250cm9sbGVyKG1h
a2VVbmlxdWVSZWY8RmluZENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JUYXJn
ZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRy
b2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihtYWtlVW5p
cXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRl
KHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQpKQogI2lmIEVOQUJMRShHRU9MT0NB
VElPTikKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIobWFrZVVu
aXF1ZVJlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4oKnRoaXMpKQpAQCAt
NDY0LDIxICs0NjQsMjEgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VDb25maWd1
cmF0aW9uLnBsdWdJbkNsaWVudCA9IG5ldyBXZWJQbHVnSW5DbGllbnQoKnRoaXMpOwogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxv
YWRlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQg
PSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJmb3Jt
YW5jZUxvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2lu
Z0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5n
Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlx
dWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7CiAKICNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViR0xTdGF0ZVRyYWNrZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMU3RhdGVUcmFja2VyPihbdGhpc10oYm9vbCBpc1VzaW5nSGlnaFBlcmZvcm1h
bmNlV2ViR0wpIHsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlciA9IG1h
a2VVbmlxdWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9y
bWFuY2VXZWJHTCkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldElz
VXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTChpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpKTsK
ICAgICB9KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5z
cGVlY2hTeW50aGVzaXNDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dD4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBwYWdlQ29uZmln
dXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFs
aWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxp
ZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGll
bnQ+KCp0aGlzKTsKICNlbmRpZgogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UgPSAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UoKTsKQEAgLTQ5MywxNCArNDkzLDE0IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5hdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yPigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gcGFyYW1ldGVy
cy5hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCiAKLSAgICBtX3BhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBtX3BhZ2UgPSBt
YWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIC8vIFNl
dCB0aGUgc2Vzc2lvbklEICpiZWZvcmUqIHVwZGF0aW5nIHRoZSBwcmVmZXJlbmNlcyBhcyB0aGUg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBwcmVmZXJlbmNlcyBtYXkgbmVlZCB0byBvdmVycmlkZSBp
dC4KICAgICBpZiAocGFyYW1ldGVycy5zZXNzaW9uSUQuaXNWYWxpZCgpKQpAQCAtODUzLDcgKzg1
Myw3IEBAIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PiYm
IGNvbnRleHRNZW51Q2xpZW50KQogewogICAgIGlmICghY29udGV4dE1lbnVDbGllbnQpIHsKLSAg
ICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRleHRNZW51
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVD
bGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg2NCw3ICs4NjQsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6SW5qZWN0ZWRCdQogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xp
ZW50PiYmIGVkaXRvckNsaWVudCkKIHsKICAgICBpZiAoIWVkaXRvckNsaWVudCkgewotICAgICAg
ICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
RWRpdG9yQ2xpZW50PigpOworICAgICAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZToKIHZvaWQgV2Vi
UGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklu
amVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3Jt
Q2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3Rl
ZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkYK
IHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PiYmIGxvYWRlckNs
aWVudCkKIHsKICAgICBpZiAoIWxvYWRlckNsaWVudCkgewotICAgICAgICBtX2xvYWRlckNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVu
dD4oKTsKKyAgICAgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTkwNSw3ICs5MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZVBv
bGljeUNsaWVudChXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNlKgogdm9pZCBXZWJQYWdlOjpz
ZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAo
IW1fcmVzb3VyY2VMb2FkQ2xpZW50KQotICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50Pigp
OworICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNv
dXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBAIC05MTMsNyArOTEzLDcgQEAg
dm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpJbmplY3RlZEIKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVV
SUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50
PiYmIHVpQ2xpZW50KQogewogICAgIGlmICghdWlDbGllbnQpIHsKLSAgICAgICAgbV91aUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50Pigp
OworICAgICAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQ
YWdlVUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0MTAsMTQgKzE0
MTAsMTQgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICBtX2NvbnRl
eHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4
dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKLSAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOwotICAgIG1fZm9ybUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4o
KTsKLSAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAgICBtX2VkaXRvckNsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAgICBt
X2xvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRl
ckNsaWVudD4oKTsKICAgICBtX3BvbGljeUNsaWVudC5pbml0aWFsaXplKDApOwotICAgIG1fcmVz
b3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ+KCk7Ci0gICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgIG1fcmVzb3VyY2VMb2Fk
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGll
bnQ+KCk7CisgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UGFnZVVJQ2xpZW50PigpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBtX2Z1bGxT
Y3JlZW5DbGllbnQuaW5pdGlhbGl6ZSgwKTsKICNlbmRpZgpAQCAtNDY5Niw3ICs0Njk2LDcgQEAg
dm9pZCBXZWJQYWdlOjpiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYgcHJpbnRJbmZvKQogI2VuZGlmCiAKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KSB7Ci0g
ICAgICAgIG1fcHJpbnRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+KGNv
cmVGcmFtZSk7CisgICAgICAgIG1fcHJpbnRDb250ZXh0ID0gbWFrZVVuaXF1ZTxQcmludENvbnRl
eHQ+KGNvcmVGcmFtZSk7CiAgICAgICAgIG1fcGFnZS0+ZGlzcGF0Y2hCZWZvcmVQcmludEV2ZW50
KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCA3MzU2NmExMzM4NWRl
M2FhYzY0NmZiOTQ5NmJkZGFmY2I1YWY0NmI2Li4zMWVmZjExZjdhZTBhM2ViOGNmYmI2ZmYyYjNk
YmE1MTYyNGMxZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTIxMyw2ICsyMTMs
NyBAQCBjbGFzcyBXZWJQcmludE9wZXJhdGlvbkd0a1dpbjMyIGZpbmFsOiBwdWJsaWMgV2ViUHJp
bnRPcGVyYXRpb25HdGsgewogI2VuZGlmCiAKIHN0cnVjdCBQcmludFBhZ2VzRGF0YSB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFByaW50UGFnZXNEYXRhKFdlYlBy
aW50T3BlcmF0aW9uR3RrKiBwcmludE9wZXJhdGlvbikKICAgICAgICAgOiBwcmludE9wZXJhdGlv
bihwcmludE9wZXJhdGlvbikKICAgICAgICAgLCB0b3RhbFByaW50ZWQoLTEpCkBAIC03MjYsNyAr
NzI3LDcgQEAgdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQoY2Fpcm9fc3VyZmFjZV90
KiBzdXJmYWNlLCBkb3VibGUgeERQSSwgZG91YmxlIHkKIHsKICAgICBBU1NFUlQobV9wcmludENv
bnRleHQpOwogCi0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludFBhZ2VzRGF0
YT4odGhpcyk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQcmludFBhZ2VzRGF0YT4odGhp
cyk7CiAgICAgaWYgKCFkYXRhLT5pc1ZhbGlkKSB7CiAgICAgICAgIGNhaXJvX3N1cmZhY2VfZmlu
aXNoKHN1cmZhY2UpOwogICAgICAgICBwcmludERvbmUoaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQo
ZnJhbWVVUkwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCmluZGV4IDlhYmIyYTc5Mjk5ZDU5NmI5MWU2
ZWY2MWNhNDNlZjg2MTkwYTkwNDkuLjkzNDE4YWIyMWQ3NGZjOTQ1OGEwMjI0ZTRjYjQ4YTczNDE3
ODA5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGaW5kQ29u
dHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBp
c1Nob3dpbmdPdmUKICAgICBpZiAoIXRleHRJbmRpY2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIG1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNh
dG9yLmdldCgpKTsKKyAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50ID0gbWFrZVVuaXF1
ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4dEluZGlj
YXRvci5nZXQoKSk7CiAgICAgbV9maW5kSW5kaWNhdG9yUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
dGV4dEluZGljYXRvci0+c2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpKTsKICAg
ICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSgqbV9maW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudCwgUGFnZU92ZXJsYXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7
CiAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5pbnN0
YWxsUGFnZU92ZXJsYXkoKm1fZmluZEluZGljYXRvck92ZXJsYXksIFBhZ2VPdmVybGF5OjpGYWRl
TW9kZTo6RG9Ob3RGYWRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TLmgK
aW5kZXggNTM1Yjg0ZmI2NDI5YTk3ZjBjOThhOGVhYzE4NWQ5ZGYyZWU5NDg1NC4uMDE1ZTMyZGIx
ODkzZTZhMDYyZDllM2E3Y2EwZGM1MmU5NDZkZDBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JP
dmVybGF5Q2xpZW50SU9TLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUyA6IHB1YmxpYyBXZWJDb3JlOjpQ
YWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUyhXZWJDb3JlOjpGcmFtZSYgZnJh
bWUsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3IqIHRleHRJbmRpY2F0b3IpCiAgICAgICAgIDogbV9m
cmFtZShmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9EcmF3aW5nQXJlYU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCmluZGV4IDkwNjg3Yzk3NGFjZjMzZDgyYjhjNjRiOTQ4
ZTZlZTlhMzBlZTJlOWMuLjA2ZmNjNDcxNTkzZWI3OGVkZWJmY2M2M2Y4OTQ0YjNkZmFlOWRhYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5n
QXJlYU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Ry
YXdpbmdBcmVhTWFjLmNwcApAQCAtODMsNyArODMsNyBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpCiAgICAgaWYgKCFtX2hhc1NlbnRNZXNz
YWdlKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGlu
ayhtX29ic2VydmVySUQsIGRpc3BsYXlJRCgpKSwgMCk7CiAgICAgICAgIG1faGFzU2VudE1lc3Nh
Z2UgPSB0cnVlOwotICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKKyAgICAgICAgbV9y
dW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9vcEVu
dHJ5LCBbdGhpc10oKSB7CiAgICAgICAgICAgICB0aGlzLT5tX2ZpcnN0Q2FsbGJhY2tJbkN1cnJl
bnRSdW5sb29wID0gdHJ1ZTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fcnVuTG9vcE9ic2VydmVy
LT5zY2hlZHVsZShDRlJ1bkxvb3BHZXRDdXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGRmNjAwMzY0NTk4ZjEzNDYyOWRhYjYyNzA2ZWFmNjg2
MWU1ZmYzM2QuLjRjYjNkZjlhZWE1MjllZmY1MjYzMzZjODFmMTMwMjA0NWJhM2UwYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTg3LDcgKzg3LDcgQEAg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0T3BhcXVlOllF
U107CiAgICAgW21faG9zdGluZ0xheWVyIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwogCi0gICAg
bV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpS
dW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2Vs
bEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBtX2xheWVy
Rmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZl
cj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgewogICAgICAgICB0aGlzLT5sYXllckZsdXNo
UnVuTG9vcENhbGxiYWNrKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCA3YjQ4YTBmNzI0NjJmZmU1N2ZlOTIwNmNiY2MwY2YzMzFjMzIxMWUx
Li5jNzFjZDVmMjc0ZmY2MjJjNWQ0M2YzNTlmNjE1ZmQzN2NmMmQ2ODZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTczLDcgKzE1NzMsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbgogICAgIEFTU0VSVCghbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRp
bGVDb3VudGVyKTsKICAgICBtX2NvdW50T2ZQYWdlc0ZhaWxpbmdUb01hcmtWb2xhdGlsZSA9IDA7
CiAKLSAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXI+KFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmQ291bnRlckV2ZW50
KSB7CisgICAgbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyID0gbWFrZVVuaXF1
ZTxQYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyPihbdGhpcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50ZXJFdmVudCkgewog
ICAgICAgICBpZiAobV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyLT52YWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xODM4LDcgKzE4MzgsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnNldEVuYWJsZWRTZXJ2aWNlcyhib29sIGhhc0ltYWdlU2VydmljZXMsIGJvb2wgaGFz
U2VsZWN0aW9uU2VydgogCiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25TZXNzaW9u
UHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikKIHsKLSAgICBtX2F1dG9tYXRp
b25TZXNzaW9uUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk+KHNlc3Npb25JZGVudGlmaWVyKTsKKyAgICBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBt
YWtlVW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+KHNlc3Npb25JZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzOjpkZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpCkBA
IC0xODcxLDcgKzE4NzEsNyBAQCBib29sIFdlYlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKCkg
Y29uc3QKIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQog
ewogICAgIGlmICghbV9saWJXZWJSVENOZXR3b3JrKQotICAgICAgICBtX2xpYldlYlJUQ05ldHdv
cmsgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ05ldHdvcms+KCk7CisgICAgICAgIG1fbGli
V2ViUlRDTmV0d29yayA9IG1ha2VVbmlxdWU8TGliV2ViUlRDTmV0d29yaz4oKTsKICAgICByZXR1
cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0KIApAQCAtMTg4Miw3ICsxODgyLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUcKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJs
eWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMuCiAgICAgYXV0byYgaXBjQ29ubmVjdGlv
biA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKHN0ZDo6bWFrZV91bmlx
dWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91
cElELCBwYWdlSUQsIHN0b3JlKSk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
c2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihp
cGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBzdG9yZSkpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggZDRjMDFiYWIxZjkzZGE5MDg1YjBmMjE5NGNkMzI3ZDQ3
MTg2NTBiMi4uMmY0ZmI1MzBhYmNlZDdlZmM3Mzc2NDIyMzA5ZmQzMTg4N2E0N2IwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMzMsNiArMTMzLDcgQEAgY2xhc3Mg
V2ViUHJvY2VzcwogICAgICwgUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpDbGllbnQKICNlbmRp
ZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBX
ZWJQcm9jZXNzJiBzaW5nbGV0b24oKTsKICAgICBzdGF0aWMgY29uc3RleHByIFByb2Nlc3NUeXBl
IHByb2Nlc3NUeXBlID0gUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ7CkBAIC0xNDYsNyArMTQ3LDcg
QEAgY2xhc3MgV2ViUHJvY2VzcwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQg
YWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBw
bGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7CisgICAgICAgIG1fc3Vw
cGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsK
ICAgICB9CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJ
UHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlci5jcHAKaW5kZXggMjcyMGI4NmZjZDJmZmVlNjAyMmY1YWQ1ZWVkNTBiY2YzNjkyZDdm
OC4uOWFmMDBlZThhYTBmMWNkODQwYTgxNzM3OTBmYTA2MjMwMDQ2ZmRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
OjpTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiAgICAgewogICAgICAgICBB
U1NFUlQoZGV2aWNlVHlwZSAhPSBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpVbmtub3duKTsK
ICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6QXVkaW8pCi0gICAgICAgICAgICBtX3JpbmdCdWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRS
aW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOworICAgICAgICAgICAgbV9yaW5nQnVmZmVyID0g
bWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0
b3JhZ2U+KG51bGxwdHIpKTsKICAgICB9CiAKICAgICB+U291cmNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgK
aW5kZXggYmFlZDBjZDllMDliNDlkMjIxZTk0MDE4ZjY0OWZlNmRiY2Y5MjUxOS4uYzFkNDNmY2Iz
YWY1ODQxNDUzYWQzNDM0YzdjZjkzZWJmYzllN2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKQEAgLTQ2
LDYgKzQ2LDcgQEAgY2xhc3MgQ3Jvc3NQcm9jZXNzUmVhbHRpbWVBdWRpb1NvdXJjZTsKIGNsYXNz
IFdlYlByb2Nlc3M7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIDogcHVibGljIFdl
YlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBX
ZWJDb3JlOjpBdWRpb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6VmlkZW9DYXB0dXJl
RmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIoV2ViUHJvY2VzcyYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KaW5kZXggYjQ3ZDFkOGFmYTAzZmVkMzZkZWNhZDk4OWQ3MmRiYzQxODQ4N2Y1OS4uM2I5MDZh
ODBjNWFkOGY2OWJlZjc3ZjlhOGM3NjRhZjgwOWY0OTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zMTAsNyArMzEwLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKFByb2Nlc3NUYXNr
U3RhdGVPYnNlcnZlcjo6VGFza1N0YXRlIHQKIAogICAgIC8vIFdlIHdlcmUgYXdha2VuZWQgZnJv
bSBzdXNwZW5zaW9uIHVuZXhwZWN0ZWRseS4gTm90aWZ5IHRoZSBXZWJQcm9jZXNzUHJveHksIGJ1
dCB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gb24gb3VyIHBhcmVudCBQSUQKICAgICAvLyB0byBl
bnN1cmUgdGhhdCBpdCB0b28gaXMgYXdha2VuZWQuCi0gICAgYXV0byB1aVByb2Nlc3NBc3NlcnRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5IHJlc3VtZWQiLCBBc3Nl
cnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5pc2hUYXNrKTsKKyAg
ICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4o
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCksICJVbmV4cGVjdGVk
bHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246
OkZpbmlzaFRhc2spOwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQcm9jZXNzV2FzVW5leHBlY3RlZGx5
VW5zdXNwZW5kZWQoKSwgW3VpUHJvY2Vzc0Fzc2VydGlvbiA9IFdURk1vdmUodWlQcm9jZXNzQXNz
ZXJ0aW9uKV0geyB9KTsKIH0KICNlbmRpZgpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24gcmVhc29u
KQogICAgIH0KIAogICAgIGlmICghbV9jcHVNb25pdG9yKSB7Ci0gICAgICAgIG1fY3B1TW9uaXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBb
dGhpc10oZG91YmxlIGNwdVVzYWdlKSB7CisgICAgICAgIG1fY3B1TW9uaXRvciA9IG1ha2VVbmlx
dWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVz
YWdlKSB7CiAgICAgICAgICAgICBpZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6U2Vy
dmljZVdvcmtlcikKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5j
ZUxvZ2dpbmcsICIlcCAtIFNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgZXhjZWVkZWQgQ1BVIGxpbWl0
IG9mICUuMWYlJSAod2FzIHVzaW5nICUuMWYlJSkiLCB0aGlzLCBtX2NwdUxpbWl0LnZhbHVlKCkg
KiAxMDAsIGNwdVVzYWdlICogMTAwKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggMzY5MDk1
Y2RhZDFkMzQ3MTFhMDY3NmQ4NzM2YTkwZTE5M2UyOTA1ZS4uMjI4ZjRhMzZkNGIwZjIyMmMxNzg2
MGQwYmM0OThjMWY5ZTA4OWEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVmPFN0b3JhZ2VT
eW5jTWFuYWdlcj4gU3RvcmFnZVN5bmNNYW5hZ2VyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRo
KQogfQogCiBTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcihjb25zdCBTdHJp
bmcmIHBhdGgpCi0gICAgOiBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VUaHJlYWQ+
KCkpCisgICAgOiBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAgICAgLCBt
X3BhdGgocGF0aC5pc29sYXRlZENvcHkoKSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4
IDQ0MzkzODI5NWY0ZTFjMjlkZDA0ODZiNDMxYmE3ZmVhMzUyOWQxNmQuLjljNzUxNGUzNDYyYzRi
NGQ4YTg1NjA1ZWQwMjlkYmQxOTI1ZDZiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTdG9yYWdlVGhy
ZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxlZCgpICYmIG1fdGhy
ZWFkKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQg
KCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIG1fcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8
RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIHZvaWQgU3RvcmFn
ZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFk
Ojp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90aHJlYWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlz
XSB7CisgICAgbV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3Ro
aXNdIHsKICAgICAgICAgcGVyZm9ybVRlcm1pbmF0ZSgpOwogICAgIH0pKTsKICAgICBtX3RocmVh
ZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGI5MzRkMWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFi
MWNmNzdmYTIuLjgwNmNiMDk5NWQwYTA3YzcxODI3MWQyMTA1MDcwMzk4YzQwM2JjODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtOTgs
NyArOTgsNyBAQCBTdG9yYWdlVHJhY2tlciYgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKQogU3Rv
cmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgpCiAg
ICAgOiBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0b3JhZ2VQYXRoLmlzb2xhdGVkQ29weSgpKQog
ICAgICwgbV9jbGllbnQoMCkKLSAgICAsIG1fdGhyZWFkKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFn
ZVRocmVhZD4oKSkKKyAgICAsIG1fdGhyZWFkKG1ha2VVbmlxdWU8U3RvcmFnZVRocmVhZD4oKSkK
ICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiAgICAgLCBtX25lZWRzSW5pdGlhbGl6YXRpb24oZmFs
c2UpCiAgICAgLCBtX1N0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkZWZhdWx0U3RvcmFnZURh
dGFiYXNlSWRsZUludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCmluZGV4IDQz
ZWE0NWRhZTg5MjA2YzgyOWE1MTRkNGRhOGUzZDFjOTdjYzEyODQuLjg1MWNjMTAxN2RlZDAwYzA2
ZDQ2ZDJjODU5ZDcwMDAwYjZkNzJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OnN0b3JhZ2VTZXNzaW9uKGNvbnN0IFAKIFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKQogewogICAgIGlmICghZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQot
ICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSk7CisgICAgICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICByZXR1cm4gKmRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9y
YWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBkZWZhdWx0TmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92
ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgZGVmYXVsdE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiks
IFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMCwxMSArMTAwLDEx
IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKGNvbnN0IFBB
TDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0g
YWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNv
b2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9y
YWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogCiAjZWxpZiBVU0UoQ1VSTCkK
ICAgICBnbG9iYWxTZXNzaW9uTWFwKCkuZW5zdXJlKHNlc3Npb25JRCwgW3Nlc3Npb25JRF0gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KHNlc3Npb25JRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKICAgICB9KTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAxODc2Yjk2MGI5NDcwODE0YzM1MGJjNTkyNmE0
YzgxYWVkZjM5MDIzLi43Yjg2OTgxYTNmNDhlNTBmOGIzY2NhYzM3MDY5MTdkNGFmMWZkYmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtMTU5LDUgKzE1OSw1IEBAIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4g
V2ViSW5zcGVjdG9yQ2xpCiAgICAgICAgICAgICBkZWxldGVTZXR0aW5nKG5hbWUpOwogICAgICAg
ICB9CiAgICAgfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVu
ZFNldHRpbmdzQ0Y+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRT
ZXR0aW5nc0NGPigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAppbmRleCAzYjFhNDUwNzA3OGZh
NGNjMDY4ZTc0MDMwMzIyMTIzOWIyYWQ3MTIzLi4xNDU3NzIyMmE5ZTEzZTYzZTQ5MWQ2ZDNiOTJj
YTFiYzg5ZTdjYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaApAQCAtMjgsNiArMjgsNyBAQAog
I2ltcG9ydCAiV2ViQ2hyb21lQ2xpZW50LmgiCiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudElPUyBm
aW5hbCA6IHB1YmxpYyBXZWJDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudElPUyhXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgICAgICA6IFdlYkNocm9tZUNsaWVudCh3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9u
Q29udGVudC5tbQppbmRleCAyMTdhNGVkMGE4NWE2YmI0MTRkMzE5NGNiN2JmYWVmZGUwMzZkNDdh
Li5hZmUxMWE4MGI5ZjFjOWNlNzZhMzU2MmZhNjNjNDViZjcxZDExZDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29u
dGVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aXhlZFBvc2l0aW9uQ29udGVudC5tbQpAQCAtNTIsNiArNTIsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogc3RhdGljIExvY2sgd2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jazsKIAogc3Ry
dWN0IFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICBWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhKCkKICAgICAg
ICAgOiBtX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Nyb2xsTGF5ZXIobmlsKQogICAgIHsgfQpAQCAt
NjIsNiArNjMsNyBAQCBzdHJ1Y3QgVmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YSB7CiB0eXBl
ZGVmIEhhc2hNYXA8UmV0YWluUHRyPENBTGF5ZXI+LCBzdGQ6OnVuaXF1ZV9wdHI8Vmlld3BvcnRD
b25zdHJhaW5lZExheWVyRGF0YT4+IExheWVySW5mb01hcDsKIAogc3RydWN0IFdlYkZpeGVkUG9z
aXRpb25Db250ZW50RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YShXZWJWaWV3ICopOwogICAg
IH5XZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGEoKTsKQEAgLTE3OCw3ICsxODAsNyBAQCAtICh2
b2lkKXNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6KFdURjo6SGFzaE1hcDxDQUxheWVyICos
IHN0ZDo6dW5pcXVlX3B0cjxXZQogCiAgICAgZm9yIChhdXRvJiBsYXllckFuZENvbnN0cmFpbnRz
IDogbGF5ZXJNYXApIHsKICAgICAgICAgQ0FMYXllciogbGF5ZXIgPSBsYXllckFuZENvbnN0cmFp
bnRzLmtleTsKLSAgICAgICAgYXV0byBsYXllckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdw
b3J0Q29uc3RyYWluZWRMYXllckRhdGE+KCk7CisgICAgICAgIGF1dG8gbGF5ZXJEYXRhID0gbWFr
ZVVuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPigpOwogCiAgICAgICAgIGxheWVy
RGF0YS0+bV9lbmNsb3NpbmdBY2NlbGVyYXRlZFNjcm9sbExheWVyID0gc3RpY2t5Q29udGFpbmVy
cy5nZXQobGF5ZXIpOwogICAgICAgICBsYXllckRhdGEtPm1fdmlld3BvcnRDb25zdHJhaW50cyA9
IFdURk1vdmUobGF5ZXJBbmRDb25zdHJhaW50cy52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggYThiNmEwNDM5M2VjMDAwMTQ2NTM4
ZDRjZjY1YmQ2NDBjNzRiZDkwMS4uNWFkODFiNGEzYjQ5YjVkMDYzOTM2NTY4M2ExYmNmNWQ1N2Vm
Mzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5t
bQpAQCAtMTMzLDcgKzEzMyw3IEBAIC0gKGlkKWluaXQKICAgICAgICAgcmV0dXJuIG5pbDsKICAg
ICAKICAgICBfZW50cmllc0J5VVJMID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XTsKLSAgICBfZW50cmllc0J5RGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0ZVRvRW50cmllc01h
cD4oKTsKKyAgICBfZW50cmllc0J5RGF0ZSA9IG1ha2VVbmlxdWU8RGF0ZVRvRW50cmllc01hcD4o
KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXggYjczOTU5MzVlNTEwYmYzYjdmMGM0OGVk
ZDQzNmM1OGJiYzQ4MWQ4ZS4uODZmOWQzZDQyMjM4NDZiYzk1Y2JjOTU2NDVhMWNhNzMyMGFmZTE5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5
SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJ
dGVtLm1tCkBAIC0zNDgsNyArMzQ4LDcgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVz
ZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICAgICAgY29yZShfcHJpdmF0ZSktPnNl
dExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAgICAgCiAgICAgaWYgKE5TQXJyYXkgKnJlZGly
ZWN0VVJMcyA9IFtkaWN0IF93ZWJraXRfYXJyYXlGb3JLZXk6cmVkaXJlY3RVUkxzS2V5XSkgewot
ICAgICAgICBhdXRvIHJlZGlyZWN0VVJMc1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yLT5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KFtyZWRpcmVjdFVSTHMgY291bnRdKTsKIAogICAgICAgICBmb3IgKGlk
IHJlZGlyZWN0VVJMIGluIHJlZGlyZWN0VVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQ
cm94eS5tbQppbmRleCBlMTdjNzg4MWE1MTdmMGMzNTVmODc1NjliNjBkYTNmMjE1YTFlYmE3Li5m
NWU3ZmJjZjEyZTQ3ZjkwZGVlZjFlYTJjZmViNzE3NDI2ODgwYWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RQcm94eS5tbQpAQCAtNDkzLDcgKzQ5Myw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQ
Q0dldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQz
Ml90IHBsCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlM
VVJFOwogCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3Rk
OjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkdldFNjcmlwdGFibGVO
UE9iamVjdFJlcGx5PihvYmplY3RJRCkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRS
ZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpH
ZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0SUQpKTsKICAgICByZXR1cm4gS0VSTl9T
VUNDRVNTOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVh
blJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELCB1aW50MzIK
ICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAg
ICAgCi0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjpt
YWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVz
dWx0KSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFr
ZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0
KSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApAQCAtNTI4LDcgKzUyOCw3IEBAIGtl
cm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5BbmREYXRhUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9y
dCwgdWludDMyX3QgcGx1Z2luSUQsCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiByZXN1bHQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCBy
ZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocmVzdWx0RGF0YSksIHJlc3VsdExlbmd0aCkpOwotICAg
IGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlx
dWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1
cm5WYWx1ZSwgcmVzdWx0KSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJl
cXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5B
bmREYXRhUmVwbHk+KHJldHVyblZhbHVlLCByZXN1bHQpKTsKICAgICAKICAgICByZXR1cm4gS0VS
Tl9TVUNDRVNTOwogfQpAQCAtNTQ1LDcgKzU0NSw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0luc3Rh
bnRpYXRlUGx1Z2luUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2lu
CiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwog
Ci0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtl
X3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVw
bHk+KHJlc3VsdCwgcmVuZGVyQ29udGV4dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJl
bmRlcmVyVHlwZSkpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVz
dElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQ
bHVnaW5SZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVy
VHlwZT4ocmVuZGVyZXJUeXBlKSkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKaW5kZXggMTBhMDhlOTUwYTNkYzBj
OTM2NzFmMWZjMWM3NGM5NDc3OTNhMDdlOC4uZTU2YTEwM2EyOGE3NjBmOWNlMGI5N2U3MWRkNmIy
M2E2MGM1M2U4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKQEAg
LTE3MSw2ICsxNzEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkgOiBwdWJs
aWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveAogCiAgICAgLy8gUmVwbHkg
c3RydWN0cwogICAgIHN0cnVjdCBSZXBseSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAgICAgIEluc3RhbnRpYXRl
UGx1Z2luLAogICAgICAgICAgICAgR2V0U2NyaXB0YWJsZU5QT2JqZWN0LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0K
aW5kZXggMjAyYzZkZWFmMTNkMDdjNmUzYTU2OThiMWNkYjU5YTE5YjVkYTAzOS4uNTJiZjdiZDEy
ZTRlMzcxMmQzMTQ3NWUyYTUzOWE0MjhjZmY4ZmE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCkBAIC0zNjIs
NyArMzYyLDcgQEAgTWV0aG9kKiBQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZChQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVz
cyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAg
YXV0byBtYXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKG5hbWUuaW1wbCgpLCBudWxscHRyKTsK
ICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1fcmVzdWx0KQotICAg
ICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm94
eU1ldGhvZD4obWV0aG9kTmFtZSk7CisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPFByb3h5TWV0aG9kPihtZXRob2ROYW1lKTsKIAogICAgIHJldHVybiBt
YXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQpAQCAtMzk3LDcgKzM5Nyw3IEBA
IEZpZWxkKiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdh
cyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBhdXRvIG1hcEFkZFJl
c3VsdCA9IG1fZmllbGRzLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1hcEFk
ZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlGaWVsZD4oaWRlbnRp
Zmllcik7CisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOwogICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW0KaW5kZXggOWM3MWEzY2M5MjNmMzNkMmUwYWIzOWExYmY2YjE0YjQ0M2U5NGQ0Yi4uZWUx
OWM1NjdjMDFmYTE4YzVlOGRjNjFiMDhjODk0ZTUyMDAyZGFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtNjAsNiArNjAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCiBjbGFzcyBTb2Z0d2FyZUNBUmVu
ZGVyZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFNvZnR3YXJlQ0FSZW5kZXJlcih1aW50MzJfdCBjb250ZXh0SUQpCiAgICAgICAgIDogbV9j
b250ZXh0IHsgW0NBQ29udGV4dCBsb2NhbENvbnRleHRdIH0KQEAgLTE2OCw3ICsxNjksNyBAQCAt
IChCT09MKWNyZWF0ZVBsdWdpbgogICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoX3Byb3h5
LT5yZW5kZXJlclR5cGUoKSA9PSBVc2VTb2Z0d2FyZVJlbmRlcmVyKQotICAgICAgICBfc29mdHdh
cmVSZW5kZXJlciA9IHN0ZDo6bWFrZV91bmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHkt
PnJlbmRlckNvbnRleHRJRCgpKTsKKyAgICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBtYWtlVW5p
cXVlPFNvZnR3YXJlQ0FSZW5kZXJlcj4oX3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CiAgICAg
ZWxzZQogICAgICAgICBbc2VsZiBjcmVhdGVQbHVnaW5MYXllcl07CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlci5tbQppbmRleCBmN2FlZGJjZWQ0ZDdmNWM0YmEzZTk2ZTM1NjFjYTdm
MGIyNjVjOGFjLi44ZWMxYmY3OWVlMzJhMmFjMWJiY2Y3YTIxZTczZTdlMWUwMWRiMWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KQEAgLTM1LDcgKzM1LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlcjo6Y3IKIHsKICAgICBzd2l0Y2ggKFtwbHVnaW5WaWV3IGV2ZW50TW9kZWxdKSB7
CiAgICAgY2FzZSBOUEV2ZW50TW9kZWxDb2NvYToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmlldyk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29j
b2E+KHBsdWdpblZpZXcpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNvY29hLmgKaW5kZXggNzA4Mzc3NmQyOGE3NWNmYjU0MjUzM2Q5MGYzNzc4ZTg1YWJjZDFk
Mi4uYmJkOWM1ZDU4MjFmODVmNjVlYmM4Zjc3N2VjNjU1MjI5ZDVlODlmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5oIgogCiBjbGFzcyBXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlckNvY29hIDogcHVibGljIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5k
bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOZXRz
Y2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hKFdlYk5ldHNjYXBlUGx1Z2luVmlldyopOyAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbQppbmRleCAwMmZmMjE4NmRmODRhOWE5MGQ3ZTljMjZjMDc2Mjc5ZTMyMjEx
Mzc4Li4xNjA2NjNlODYxZjcxMGViZmVkMWQ3Njg1NjVkZDIyYTExNGU4ZTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQpAQCAtMTY1NSw3ICsxNjU1LDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVUaW1lcldp
dGhJbnRlcnZhbDoodWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0IHQKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKCF0aW1lcnMpCi0gICAgICAgIHRpbWVycyA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdp
blRpbWVyPj4+KCk7CisgICAgICAgIHRpbWVycyA9IG1ha2VVbmlxdWU8SGFzaE1hcDx1aW50MzJf
dCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGx1Z2luVGltZXI+KiBzbG90OwogICAgIHVpbnQzMl90IHRpbWVySUQ7CkBAIC0xNjYzLDcg
KzE2NjMsNyBAQCAtICh1aW50MzJfdClzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJf
dClpbnRlcnZhbCByZXBlYXQ6KE5QQm9vbClyZXBlYXQgdAogICAgICAgICB0aW1lcklEID0gKytj
dXJyZW50VGltZXJJRDsKICAgICB3aGlsZSAoIXRpbWVycy0+aXNWYWxpZEtleSh0aW1lcklEKSB8
fCAqKHNsb3QgPSAmdGltZXJzLT5hZGQodGltZXJJRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
KSk7CiAKLSAgICBhdXRvIHRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1
Z2luLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGlt
ZXIgPSBtYWtlVW5pcXVlPFBsdWdpblRpbWVyPihwbHVnaW4sIHRpbWVySUQsIGludGVydmFsLCBy
ZXBlYXQsIHRpbWVyRnVuYyk7CiAKICAgICBpZiAoX3Nob3VsZEZpcmVUaW1lcnMpCiAgICAgICAg
IHRpbWVyLT5zdGFydChfaXNDb21wbGV0ZWx5T2JzY3VyZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5t
bQppbmRleCA3MDRjZDA5NWU4OGZlMWEyMzgxMTg2YzZiZmYxMzBmYzkwMjA0MWViLi41N2ZiYmZh
ZDllNjRiNzY3OGFkM2FjY2U4MDc3OGJhY2YwMzc4MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5t
bQpAQCAtOTQsMTAgKzk0LDExIEBAIFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudDo6fldlYkRhdGFi
YXNlTWFuYWdlckNsaWVudCgpCiB9CiAKIGNsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlckNsaWVudCYgY2xpZW50LCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKICAgICB7Ci0gICAgICAgIGF1dG8gY29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8RGlkTW9kaWZ5T3JpZ2luRGF0YT4oY2xpZW50LCBvcmlnaW4pOwor
ICAgICAgICBhdXRvIGNvbnRleHQgPSBtYWtlVW5pcXVlPERpZE1vZGlmeU9yaWdpbkRhdGE+KGNs
aWVudCwgb3JpZ2luKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dCA9IFdURk1v
dmUoY29udGV4dCldIHsKICAgICAgICAgICAgIGNvbnRleHQtPmNsaWVudC5kaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbihjb250ZXh0LT5vcmlnaW4pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmgKaW5kZXggYTNiMTU5OGVlMzUzZDY3ZTIzYWY4MDk1OGViN2Y3NWVi
MTY3ZjRkOC4uY2Q3MjY0MjY4MjViYTcyMjE1NTdlMDU2NmZhOTJlYzA4MTExNDVjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIEBjbGFzcyBX
ZWJWaWV3OwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmlldyop
OwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNh
Y2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKaW5kZXggNzhiNTM5ZTM3MmI4NjVjNTk0ZmMwNzZmNWEx
ZmM4NGFhZmU5OGJmMC4uMjcxNDI3ZTJkNDZlZTNhMjk3ZDA1NDAxMmE3YTg1YWI4YjNlMWIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhIDogcHVibGljIFdlYkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YShpZCB3ZWJEb2N1bWVudFZpZXcpIDogbV93ZWJEb2N1bWVudFZpZXcod2ViRG9jdW1l
bnRWaWV3KSB7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZmRjNGNjNzgxOTZmY2JjZjMy
NjAyZDE4ZTI4OWYwN2ExMTU0Y2M5NS4uYzBmYmRhOWIyZGExZGQ0NTEwZmZlMDg5YmY2OGY1YTc2
N2RkNDE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSFRNTElt
YWdlRWxlbWVudDsKIC8vIGJhc2UgY2xhc3Mgb2YgdGhlIGNvbmNyZXRlIGNsYXNzLCBXZWJDaHJv
bWVDbGllbnRJT1MuIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBjbGFzcyBhbmQKIC8vIG1hbnkgb2Yg
aXRzIGZ1bmN0aW9ucyBhcmUgbm90IG1hcmtlZCBmaW5hbC4gVGhhdCBpcyBtZXNzeSB3YXkgdG8g
b3JnYW5pemUgdGhpbmdzLgogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgK
aW5kZXggMTg4NWYwMzEzMTM1YjgxN2IzMGY5NDU3NzdkOGUyNGIxNTM5YmY5MC4uYTdmNjZlZWVm
MzA2YTY4NjA1NDIwZTc5ODc2MjAyNTdiZTA2YjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50CiAgICAgLCBwdWJsaWMgV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDbGllbnQKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpOwogICAg
IHZpcnR1YWwgfldlYkNvbnRleHRNZW51Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggODQ3YTcz
YjE3YTQ2MTdiZDU0YThkMjhhOTIzYzFkNGE2M2JkZDEyZS4uMzBkZjNmNzNkODUwZWE3NjljNzEz
NTIyMWQyZTg4NjVlYTY3ZTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogQGNs
YXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJh
Z0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
RHJhZ0NsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZjA1OWUwNTllMTE4
N2EzYmM1YmQyNDdjYzI0MWY1OWFkZDQ1MDk1MC4uYjUxMDc4N2Q4MDliY2Y5N2I3Njg5ZTc0MDkz
MjgzNzVhYTBiMGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIEBjbGFz
cyBXZWJFZGl0b3JVbmRvVGFyZ2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJD
bGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJFZGl0b3JDbGllbnQ+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViVmll
dyAqKTsKICAgICB2aXJ0dWFsIH5XZWJFZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KaW5kZXggM2RkNTBlN2IzYjljZjk5MzM0OWM5YWJiNGNiNDk3ODM3ZWVjMzUzZS4u
OTQwYjBmZjk2M2E4NWNlOWQ4OGQ3YmM1NmZmNmIzZWViMmUzZDkxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KQEAgLTEwNjcsNyArMTA2Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogc3RhdGljIHZvaWQgYWRkUmVkaXJlY3RVUkwo
V2ViSGlzdG9yeUl0ZW0gKml0ZW0sIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICghaXRl
bS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMpCi0gICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVk
aXJlY3RVUkxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAg
aXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+
PigpOwogCiAgICAgLy8gT3VyIEFQSSBhbGxvd3MgdXMgdG8gc3RvcmUgYWxsIHRoZSBVUkxzIGlu
IHRoZSByZWRpcmVjdCBjaGFpbiwgYnV0IGZvcgogICAgIC8vIG5vdyB3ZSBvbmx5IGhhdmUgYSB1
c2UgZm9yIHRoZSBmaW5hbCBVUkwuCkBAIC0xMzgwLDcgKzEzODAsNyBAQCBJR05PUkVfV0FSTklO
R1NfRU5ECiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0Nh
Y2hlZEZyYW1lKENhY2hlZEZyYW1lKiBjYWNoZWRGcmFtZSkKIHsKLSAgICBjYWNoZWRGcmFtZS0+
c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUtPndlYkZyYW1lVmlldy5kb2N1bWVu
dFZpZXcpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFr
ZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4obV93ZWJGcmFtZS0+X3ByaXZhdGUt
PndlYkZyYW1lVmlldy5kb2N1bWVudFZpZXcpKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoaXMgZnJhbWUgaXMgZ29pbmcgdG8gYmUg
Y2FjaGVkLiBTdG9wIGFsbCBwbHVnaW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXgg
ZmZlMjk5MzEyZWI0ODBiYWZiNWYwZWFjNDM1MmYyNDNmOTZlMDBmNy4uZmZkYmFjZmMyNzQyMWU4
ZDM1ODg4ZjJjZTZiMTgwNzdhMTZlMzNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBA
IC0zMyw2ICszMyw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247CiBAY2xhc3MgV2ViVmll
dzsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9j
YXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmlldygp
IHsgcmV0dXJuIG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBiZDdmNjJm
Yzg1ZGM5OWMzODcxNmYwNzY2NjQ2MzE4MjUxMWM1NGE1Li4wYzk0OGIzYWVmOTg3NjA5NjMwMzUx
ZDU5YWM3OTBiMmFiZWFkYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTEsNiArNTEs
NyBAQCBjbGFzcyBQYWdlOwogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAKIGNs
YXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50
KFdlYlZpZXcgKmluc3BlY3RlZFdlYlZpZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5k
ZXggMWMwMDgwOTc2OTJmZjliMDcxZmNlNWFjNGE0YjQ2OTJkMTM3ZWQ5NS4uN2QzZTVlYzllNjE1
ZTFkNDhjM2QwNWQ3MWE1OWM0NTFmZWI3NjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpA
QCAtMTA5LDcgKzEwOSw3IEBAIEZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50Ojpv
cGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwCiAgICAgW3dpbmRvd0Nv
bnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9yQ2xpZW50OnRoaXNdOwogCiAgICAgbV9mcm9udGVu
ZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgpIGZyb250ZW5kV2ViVmlld10pOwot
ICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGlu
c3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0
aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgp
LCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5k
U2V0dGluZ3MoKSk7CiAKICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYklu
c3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhbW1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBp
bml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJvbnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21f
aW5zcGVjdGVkV2ViVmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250
ZW5kLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggMTViNDE4MDQ4ZTRm
MWQ0NjI0YzMwM2RjYmJmZWQxNjk3OTY0NDg2MS4uOTRlZDYxOGFjNzhlZThiY2Y1NzE1NWM5YWRh
YmNiZGFkZjY4YzczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2
LDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb3RpZmljYXRpb25DbGllbnQoV2ViVmlldyAqKTsK
ICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaAppbmRleCBhM2Q2YWU2MzYzNjQ3YzVmMzBj
Yzc5ZmJkNjM1ZjY2NGJjYTAxMjNjLi5kYzlkMTFhMzU4N2VlMDRmNTAxNTFiZTg4YmM1ZDRiMTQ4
YmNkZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKQEAg
LTQzLDYgKzQzLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiB9CiAKIGNsYXNzIFdlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyIDogcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlcihXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJNb2NrLm1tCmluZGV4IDI1MzY0OGQ4ZTg0NTkxMWUyYWUyOGMwYmI4NjNjYjU3ZjdjMzAwMzku
LjI3NmQ5ZjE1ZWY4ZmE1ZTFmZWQ0MzhlZDljMWQyNTlhNzg1ODM1MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2subW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQpAQCAtMzYsNyArMzYsNyBAQCAtIChpZClpbml0CiAg
ICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgbV9jb3JlID0gc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2s+KCk7CisgICAgbV9jb3JlID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2s+KCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGE5MDYyMmMyMDc0ZTBjZGNlY2VmMmM2YzFjODQ5
NDVkNGU5ZGZmYWIuLjNhOTRiYjkxMGQyNTllZmFhODkxZDUyOWU4MGQyYjViMDAyMGI0ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMzc4LDcg
KzM3OCw3IEBAIC0gKHZvaWQpX2F0dGFjaFNjcmlwdERlYnVnZ2VyCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYlNjcmlwdERlYnVnZ2VyPihnbG9iYWxPYmplY3QpOworICAgIF9wcml2YXRlLT5zY3JpcHRE
ZWJ1Z2dlciA9IG1ha2VVbmlxdWU8V2ViU2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVjdCk7CiB9
CiAKIC0gKHZvaWQpX2RldGFjaFNjcmlwdERlYnVnZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ci5oCmluZGV4IGRmYTdlZmQwNjA2YWRjNDlmZTI5MWQwNTIxZDEzMmU2ZTE5YzUwNzMuLmEwNzJl
ODE5NTI0OTM5YWUwZjIyYmI5ODM2ZDNhYzcwNWQ4NTc5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlci5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIFBhZ2U7CiB9CiAKIGNsYXNzIFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIgOiBwdWJsaWMgV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9u
TWFuYWdlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBj
cmVhdGUoV2ViQ29yZTo6UGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KaW5k
ZXggNzJjMjBjNjkzZmVjYmE5NzEwNDYzNDE2NDFjY2UxMTQ5NGRlNGE2OS4uNjAyNDAyOTk2MmVj
MzRmMDBmNGFhZDk0MzJhN2ZjNDJiYTFkMTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ci5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlcj4gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Y3JlYXRlKFdlYkNv
cmU6OlBhZ2UmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CiB9CiAKIFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXI6OldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIoV2ViQ29yZTo6UGFnZSYgcGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0
ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0
b3IubW0KaW5kZXggMWE3MjU4YjQyM2E4NDU3ODkxZTQxNWUxMGQwMDI1NjczMGFhMmJkZS4uZTM2
M2I4NWIyYjNkNWFlMTQ3M2M4MzcyNzE4NTgzNGQ1MTc4N2IxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KQEAgLTY5LDcgKzY5
LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooRE9NUmFuZ2UgKilyYW5nZQogICAgICAgICByZXR1
cm4gc2VsZjsKICAgICAKICAgICBfcHJpdmF0ZSA9IFtbV2ViVGV4dEl0ZXJhdG9yUHJpdmF0ZSBh
bGxvY10gaW5pdF07Ci0gICAgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5nZSkpOworICAgIF9wcml2YXRlLT5f
dGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUocmFu
Z2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IGI4ZDk3MTFlNzBkNzc0NWQ3ZDM5YjFmOWY1NDFhMTY1NGQ2
NTljODIuLmZiN2NmMmZhYWQ2N2I0OWM5MzNhNjIxZTMyNzkxMGUxMDgxYWVmOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTEyMjQsNyArMTIyNCw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMo
KQogLSh2b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0CiB7CiAgICAgc3RhdGljIE5TU3Ry
aW5nICpvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMgPSBsZWFrT3V0bG9va1F1aXJrc1VzZXJT
Y3JpcHRDb250ZW50cygpOwotICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwgc3RkOjpt
YWtlX3VuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgp
LCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5k
LCBJbmplY3RJbkFsbEZyYW1lcykpOworICAgIF9wcml2YXRlLT5ncm91cC0+dXNlckNvbnRlbnRD
b250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwg
bWFrZVVuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMsIFVSTCgp
LCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5k
LCBJbmplY3RJbkFsbEZyYW1lcykpOwogCiB9CiAjZW5kaWYKQEAgLTE0MzgsNyArMTQzOCw3IEBA
IC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTooTlNTdHJpbmcgKilm
cmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xp
ZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5j
b250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKTsKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGVuYWJsZSB0aGlzIG9uIGlPUyBhcyB3ZWxsLgotICAgIHBhZ2VD
b25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24u
dmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdl
Q2xpZW50PihzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwogI2Vsc2UKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNlbGYpOwpAQCAtNDYyOCw3
ICs0NjI4LDcgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3Jv
dXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICBpZiAoIXdvcmxkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmlu
Z1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRT
dGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVj
dGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJ
bmplY3RJblRvcEZyYW1lT25seSk7CisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVuaXF1ZTxV
c2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJp
bmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50
U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLCBpbmpl
Y3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDog
SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZSh3b3JsZCksIFdURk1vdmUodXNlclNjcmlwdCkpOwog
fQogCkBAIC00NjUxLDcgKzQ2NTEsNyBAQCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgIGlm
ICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gc3R5bGVTaGVldCA9IHN0ZDo6
bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3
aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBX
ZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFt
ZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAgYXV0byBzdHlsZVNoZWV0ID0gbWFrZVVu
aXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlz
dCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVj
dEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwg
VXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxl
cigpLmFkZFVzZXJTdHlsZVNoZWV0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwg
SW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKQEAgLTk0MDIsNyArOTQwMiw3IEBAIC0g
KFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2ZXM6KHVpbnQ2NF90KWRpY3RhdGlv
bkNvbnRleHQKIC0gKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyJilfc2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXIKIHsKICAgICBpZiAoIV9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXIpCi0gICAgICAgIF9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyPihzZWxmKTsK
KyAgICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOwogICAgIHJldHVybiAqX3By
aXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIH0KICNlbmRpZgpAQCAtOTQ2MSw3
ICs5NDYxLDcgQEAgLSAodm9pZClfc2V0VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciYpdGV4
dEluZGljYXRvcgogLSAodm9pZClfc2V0VGV4dEluZGljYXRvcjooVGV4dEluZGljYXRvciYpdGV4
dEluZGljYXRvciB3aXRoTGlmZXRpbWU6KFRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSlsaWZl
dGltZQogewogICAgIGlmICghX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAg
IF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5k
aWNhdG9yV2luZG93PihzZWxmKTsKKyAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5k
b3cgPSBtYWtlVW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+KHNlbGYpOwogCiAgICAgTlNSZWN0
IHRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzID0gW3NlbGYgY29udmVydFJlY3Q6
W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5n
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpXSB0b1ZpZXc6bmlsXTsKICAgICBOU1JlY3QgdGV4
dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMgPSBbc2VsZi53aW5kb3cgY29udmVydFJl
Y3RUb1NjcmVlbjp0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlc107CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCAxMDYwYzJk
ODU0YWRhMGRjYWZiMzM1NTljODExZTRlZTQ5NGNjNmUwLi44MjM4YTRlYzVmZWUxNjgzNjRlZDEz
MDRiYzc1MTVmNTUxN2ZlODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEubW0KQEAgLTk2LDcgKzk2LDcgQEAgTGF5ZXJGbHVzaENvbnRyb2xsZXI6
OkxheWVyRmx1c2hDb250cm9sbGVyKFdlYlZpZXcqIHdlYlZpZXcpCiBXZWJWaWV3TGF5ZXJGbHVz
aFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIoTGF5ZXJGbHVzaENvbnRyb2xs
ZXIqIGZsdXNoQ29udHJvbGxlcikKICAgICA6IG1fZmx1c2hDb250cm9sbGVyKGZsdXNoQ29udHJv
bGxlcikKIHsKLSAgICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihXZWJDb3JlOjpSdW5Mb29w
T2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7
CisgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNl
cnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxs
S25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgewogICAgICAgICB0aGlz
LT5sYXllckZsdXNoQ2FsbGJhY2soKTsKICAgICB9KTsKIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCAt
IChpZClpbml0CiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRDb3VudCsrOwogCiAjaWYgVVNFKERJ
Q1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4o
KTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOwogI2VuZGlmCiAKICAgICByZXR1cm4g
c2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5jcHAKaW5kZXggNjQ2ZTZhZWY5MzJmMWM5OTI5ODUzNmM4MmYyYzk1NWE3MWEx
OTJjZi4uZGU1MmM4NTg2NDE0MjkyYzNjOTdlZGJlOTk0YWJmMWQ1Zjc4ZDViZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAKQEAgLTE3Niw2ICsxNzYsNyBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhZyhjb25zdCBJbnRQb2lu
dCYgcG9pbnQsIGJvb2wgc3RhcnQpCiAKICNpZiBVU0UoQ0EpCiBjbGFzcyBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyOjpMYXllckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExh
eWVyQ2xpZW50KEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIHBhcmVudCkgOiBtX3BhcmVudChw
YXJlbnQpIHsgfQogCkBAIC0yNDYsMTAgKzI0NywxMCBAQCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKICAgICAsIG1fbW92aW5nV2luZG93KGZh
bHNlKQogICAgICwgbV90aW1lcigqdGhpcywgJkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnRp
bWVyRmlyZWQpCiAjaWYgVVNFKENBKQotICAgICwgbV9sYXllckNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPExheWVyQ2xpZW50Pih0aGlzKSkKKyAgICAsIG1fbGF5ZXJDbGllbnQobWFrZVVuaXF1ZTxM
YXllckNsaWVudD4odGhpcykpCiAgICAgLCBtX3Jvb3RDaGlsZChQbGF0Zm9ybUNBTGF5ZXJXaW46
OmNyZWF0ZShQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyLCBtX2xheWVyQ2xpZW50Lmdl
dCgpKSkKICNlbmRpZgotICAgICwgbV9mdWxsc2NyZWVuV2luZG93KHN0ZDo6bWFrZV91bmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5
ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRoaXMpKSkKKyAgICAsIG1fZnVsbHNjcmVlbldp
bmRvdyhtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KHN0YXRp
Y19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqPih0aGlzKSkpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuaAppbmRleCBmMWRlOGRkN2NjZTc4ODdkNmM4M2NiMjgxMTU2MTNlYTgwYjU1ZDc4Li4x
MzhjM2VjNGUyNjRiMThiMjcyZTI2N2MxNjgzNzU3NmFiYzg0MTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCkBAIC00Miw2
ICs0Miw3IEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIH0KIAogY2xhc3MgSFVEV2lkZ2V0IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIVURXaWRnZXQoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkgOiBtX3JlY3QocmVjdCkgeyB9CiAgICAgCkBAIC0x
MDEsNiArMTAyLDcgQEAgY2xhc3MgSFVEU2xpZGVyIDogcHVibGljIEhVRFdpZGdldCB7CiB9Owog
CiBjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDogV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik7CiBwdWJs
aWM6CiAgICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4u
aAppbmRleCA1ZmQ3NmQ0MTc4MjUyNjFkNGVkNTI4YTg1NDFmNjYyYTRmN2Y4N2Y5Li40Yjc5ZmU2
MmJmZDg0NTk5YjI0ZGMyZDk1YzY4YzUxZTIxNTAzYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4u
aApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGx1Z2lu
VmlldzsKIAogICAgIHN0cnVjdCBQbHVnaW5NZXNzYWdlIHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBIV05EIGhXbmQ7CiAgICAgICAgIFVJTlQgbXNn
OwogICAgICAgICBXUEFSQU0gd1BhcmFtOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgfTsKIAogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4gewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFBs
dWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4oUGx1Z2luVmlldyopOwogICAgICAgICB+UGx1Z2luTWVz
c2FnZVRocm90dGxlcldpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IGFiYTYzZGFiOGIzMWU0N2FiZDgwODhiMzc4M2E4MGVj
NTRjMTAyMTguLjBmNmJlZWZmYWQxZGMwMTVjOGE0NzdlN2ZiZTVjOWI2YWFmYWZmMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKQEAg
LTQzMyw3ICs0MzMsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogCiAgICAgaWYgKG1fdHJh
bnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAgICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0
YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
Y2hhcj4+KCk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9y
PGNoYXI+PigpOwogCiAgICAgICAgIGludCBvbGRTaXplID0gbV9kZWxpdmVyeURhdGEtPnNpemUo
KTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2l6ZShvbGRTaXplICsgbGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDIx
MzYzMTdmMjk5OWQ1ZTEzNzQ5ZGYzOGUxOWE4ZjRkMmYyNWJkNjAuLjU0NzE2YTBiYjJiMWZhYjc1
ZDgxZGU0MmFlZTk2ZWVhMmY2YjEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNTEwLDcgKzUxMCw3IEBAIE5QRXJyb3IgUGx1Z2lu
Vmlldzo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgYm9vbCBzZW5k
Tm90aWZpY2F0CiAgICAgfSBlbHNlIGlmICghbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpCiAgICAgICAgIHJldHVybiBOUEVSUl9HRU5F
UklDX0VSUk9SOwogCi0gICAgc2NoZWR1bGVSZXF1ZXN0KHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2lu
UmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlmaWNhdGlvbiwgbm90
aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CisgICAgc2NoZWR1bGVSZXF1ZXN0KG1ha2VV
bmlxdWU8UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlm
aWNhdGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CiAKICAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAwNTcyOGYzZWQzNzIwNTA0YWY1NWY5ODc3Zjg2MjFi
ZGMwNWNlNjIyLi41MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQyOTgxYzNmNTYzZWRmZjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAK
QEAgLTMxMCw3ICszMTAsNyBAQCBQbHVnaW5WaWV3Ojp3bmRQcm9jKEhXTkQgaFduZCwgVUlOVCBt
ZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGlmIChtZXNzYWdlID09
IFdNX1VTRVIgKyAxICYmCiAgICAgICAgIG1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVn
aW5RdWlya1Rocm90dGxlV01Vc2VyUGx1c09uZU1lc3NhZ2VzKSkgewogICAgICAgICBpZiAoIW1f
bWVzc2FnZVRocm90dGxlcikKLSAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CisgICAgICAgICAg
ICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJX
aW4+KHRoaXMpOwogCiAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlci0+YXBwZW5kTWVzc2FnZSho
V25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgK
aW5kZXggNTMwYjY5ZWQ3MTljMjdhY2M2YjA3ZTM1MTU5MjIxZjU1MjZjNTMwNS4uM2JmNDRkODdk
MThkNWYyNzNjZDI5NTM1Njc2YjI0MDhmMmM5MTRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oPgogCiBjbGFz
cyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoSVdlYkRhdGFTb3VyY2UqIHdlYkRhdGFTb3Vy
Y2UpIDogbV93ZWJEYXRhU291cmNlKHdlYkRhdGFTb3VyY2UpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCBlM2VjMzNmZDQ5OTdhMDFhMjI1ZDVl
MWNmOWI0ZjRiNjJkNzdlMjJkLi5jNDFmODZlMDczZDhkY2I5ZTRhOGE1Mjk0ZjBkNjNjYzk0ZTU2
M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKQEAgLTQw
LDYgKzQwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0IDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dChXZWJWaWV3Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0
YTQ5Yjk0YmJhNThkMGM1NDYzMzI5YzNmNmVmMjNlODQ4OGI3YWYzLi43YjI5OWNlZTI1ZWNkMTBi
YmE2MjFjODU4MWIwNmFlMDZjNWExZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhGaWxlUGF0aHNMaXN0U2l6ZSA9IFVTSFJU
X01BWDsKIFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAg
ICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRGVza3RvcE5v
dGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCisgICAgLCBtX25vdGlmaWNhdGlvbnNEZWxl
Z2F0ZShtYWtlVW5pcXVlPFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZpZXcp
KQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDQxZDVmMDZhZWFjYjdlMTQxN2Q0
YjcwMjQwMDYwYmJlNTdmNjkzMGYuLjc4NzU0MzI1M2Q1ZGZmNGVjNjY4ZWJlODhmMDg4NWQwYmFk
YjY1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYkRlc2t0
b3BOb3RpZmljYXRpb25zRGVsZWdhdGU7CiBpbnRlcmZhY2UgSVdlYlVJRGVsZWdhdGU7CiAKIGNs
YXNzIFdlYkNocm9tZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNs
aWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGM5ZGU0OWIz
Y2QxNDU1MTcyOGZiMmY5ZDk2ZWY0OTBlOTkxNThiZDQuLmY0OGVlNzMwZWVmNzE5NzllNGQ4ZDJj
MzI3ZWQxYmExN2I5NGZmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzAsNiAr
MzAsNyBAQAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVz
a3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCmluZGV4IDgyOTZj
OGNjYjY4ODdkMzQ1NDhkNWE2NGM2ODY3NzI2YTc0NjA3NzIuLjRjZmQxMDI2NWQxZDA3YTU3ZjAz
MGE0ZTZiMTUwNjljYmJmYjkzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiB9CiAKIGNs
YXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUgOiBwdWJsaWMgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlKFdlYlZpZXcqIHZpZXcpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmgKaW5kZXggYjU5ODkzMzI5MTAwOWUyODUxZWQ3NTQxNWVjNGFhMGZlNDAzZDYxMS4u
NDVlM2NhNzI3NTNhZDFhYzExNTNiZTk2MTkzZjZlZDYyMWZmODlkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApA
QCAtMzEsNiArMzEsNyBAQAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZGI2MzUy
ZDYzODE2ZjdjOWFlZWU5Zjc0NGU0OGUzODFlODU2ZDJiNS4uNjlkN2VkM2UwYWEzMWYxM2JlYTY0
Y2YwYzI3NjVlMjU0ZmJmOGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAg
Y2xhc3MgV2ViTm90aWZpY2F0aW9uOwogY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAogY2xh
c3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwg
cHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViVmlldyopOwogICAgIH5X
ZWJFZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZTM1
NGI3MWNkZmQyYTVmOWI4YjAxMWEwMzI5ZDc0MjRiYzkwYmJjLi5kNGIyZjdmNjNlODYwODU5Mzkz
NDUyYmQ2MmUxMjg1ZDJlOGFkNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC05Myw2ICs5Myw3IEBAIHN0YXRpYyBXZWJEYXRhU291cmNlKiBnZXRXZWJEYXRhU291cmNlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiB9CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUoKSAKICAgICAg
ICAgOiBtX3BvbGljeUZ1bmN0aW9uKG51bGxwdHIpCkBAIC0xMDcsNyArMTA4LDcgQEAgY2xhc3Mg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlIHsKIH07
CiAKIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSog
d2ViRnJhbWUpCi0gICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQorICAgIDogbV9wb2xpY3lMaXN0ZW5l
clByaXZhdGUobWFrZVVuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZT4oKSkKICAg
ICAsIG1fd2ViRnJhbWUod2ViRnJhbWUpCiAgICAgLCBtX21hbnVhbExvYWRlcigwKQogICAgICwg
bV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkgCkBAIC05NzMsNyArOTc0LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2Fj
aGVkRnJhbWUqIGNhY2hlZEZyYW0KIAogICAgIEFTU0VSVChjb3JlRnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkgPT0gY2FjaGVkRnJhbWUtPmRvY3VtZW50TG9hZGVyKCkpOwogCi0gICAg
Y2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4o
Z2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkp
OworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVl
PFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihzdGF0aWNfY2FzdDxJV2ViRGF0YVNvdXJjZSo+
KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkp
KTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKaW5kZXggZWI5NzU4YmQ0MjEwN2QyZjlhODU0ZTRlNjg4MTY2YTZmNTE1ZmI5Zi4u
YmJhOWM5ZjQ0NTM1OGQ3Y2UzZWEwM2Y4OTY2NDFiZDZlNWUwNDBkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEdlb2xvY2F0aW9uUG9zaXRpb247
CiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcAppbmRleCA3NTY5NTkwYzFiM2NmMzgxNmZjNDJhMzViZjNmNjZiZmQ3
ODkwMjI0Li5mODBhZTA0OGI4MmRiZGIyMzQ2NTQ2OGQ5MzNjNjBhNzA5NzJjN2Y2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0
b3JDb250cgogICAgICAgICByZXR1cm4gMDsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShm
cm9udGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1f
aW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZy
b250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAg
bV9mcm9udGVuZENsaWVudCA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+
KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3
bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJv
bnRlbmRTZXR0aW5ncygpKTsKICAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwog
ICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBmcm9udGVuZEh3bmQ7CiAgICAgcmV0dXJuIHRoaXM7CkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCgpCiAg
ICAgYm9vbCBjcmVhdGluZ0hpZ2hsaWdodCA9ICFtX2hpZ2hsaWdodDsKIAogICAgIGlmIChjcmVh
dGluZ0hpZ2hsaWdodCkKLSAgICAgICAgbV9oaWdobGlnaHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
Yk5vZGVIaWdobGlnaHQ+KG1faW5zcGVjdGVkV2ViVmlldyk7CisgICAgICAgIG1faGlnaGxpZ2h0
ID0gbWFrZVVuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3BlY3RlZFdlYlZpZXcpOwogCiAg
ICAgaWYgKG1faGlnaGxpZ2h0LT5pc1Nob3dpbmcoKSkKICAgICAgICAgbV9oaWdobGlnaHQtPnVw
ZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCA5NWM5YWZhODUwMDJhNTQzMjcwYjdj
ZTZiMzg4YzcwZDQ4OTE4NTE4Li4wYTUxNDgzOTFiYWUxMjYwZGY2ODY2YjI4NzA3ZTY2MDg0ZTky
MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBXZWJO
b2RlSGlnaGxpZ2h0OwogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyopOwogCkBAIC05NCw2
ICs5NSw3IEBAIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0CiB9OwogCiBjbGFzcyBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLCBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5zcGVjdGVkV2ViVmlld0h3bmQs
IEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01QdHI8V2ViVmlldz4mIGZyb3RuZW5kV2ViVmll
dywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0b3JDbGllbnQqLCBzdGQ6OnVu
aXF1ZV9wdHI8U2V0dGluZ3M+KTsKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAKaW5kZXggMjQ5M2M3YjBiNzlmYzRmZDhlY2VjMGVhOTY2N2M2ZWUyYWMzYTA0YS4uNDQ1NDJh
MWRhMTAzYWE0NDc2M2U5NGQ0ZmFiYTg2NGVkMDJmYzdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0zNTUsNiArMzU1LDcgQEAgSFJF
U1VMVCBXZWJEYXRhYmFzZU1hbmFnZXI6OnNldElEQlBlck9yaWdpblF1b3RhKHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YSkKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlkTW9kaWZ5
T3JpZ2luRGF0YSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJl
YWQoV2ViRGF0YWJhc2VNYW5hZ2VyKiBkYXRhYmFzZU1hbmFnZXIsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggMjdhZjFiYWU2NTNlZmYwMmY2NzA0ZjdlMzlhZDBlMWFj
NTBhZDcwYi4uOGFmYmEwZjZkNTNhZmQ1NTU4NDVjMTk1MzZjMmE5YzFlYzVmMzdkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBA
IC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZWJFbGVtZW50
UHJvcGVydHlCYWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKGNvbnN0IEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCkKLSAgICA6IG1fcmVzdWx0KHN0ZDo6bWFrZV91bmlxdWU8SGl0
VGVzdFJlc3VsdD4ocmVzdWx0KSkKKyAgICA6IG1fcmVzdWx0KG1ha2VVbmlxdWU8SGl0VGVzdFJl
c3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggYTgxYzAwZTU2YzVkZTJhZWJjMTJhYjhiNmRiMTFi
YzkzNGViYmJkYS4uZmI4OGUzOWU3YjU2YWMzMmRjZjVjZjUwMTFjMzU0ODE3MWE2YzNiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMTE1LDcgKzEx
NSw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2Vu
dGF0aW9uKF9Jbl9vcHRfIHZvaWQqIGRpY3Rpb25hCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdHJpbmc+PiByZWRpcmVjdFVSTHNWZWN0b3I7CiAgICAgaWYgKENGQXJyYXlSZWYgcmVkaXJl
Y3RVUkxzUmVmID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZGljdGlvbmFyeVJlZiwgcmVkaXJlY3RVUkxzS2V5KSkpIHsKICAgICAgICAgQ0ZJbmRleCBzaXpl
ID0gQ0ZBcnJheUdldENvdW50KHJlZGlyZWN0VVJMc1JlZik7Ci0gICAgICAgIHJlZGlyZWN0VVJM
c1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KHNpemUpOworICAgICAg
ICByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PihzaXplKTsK
ICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAg
KCpyZWRpcmVjdFVSTHNWZWN0b3IpW2ldID0gU3RyaW5nKHN0YXRpY19jYXN0PENGU3RyaW5nUmVm
PihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlZGlyZWN0VVJMc1JlZiwgaSkpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRp
b25zL0NBRDNEUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAppbmRleCAyZjFmMmY0ODA3ZWI5YzRm
ZTcwODM1ZGI3OGUzNGEzNGJjZmYzNmQwLi5kNjVkZTE5ZWU5OWM0NTE0NDVkZmJmMWIxMzU5ZGMy
YThiYTM4Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFy
dHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKQEAgLTIy
NCw3ICsyMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0PiBD
QUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2luZwogICAgIG1lbWNweShvdmVybGF5
UXVhZEJ1ZmZlciwgb3ZlcmxheVF1YWRWZXJ0aWNlcywgc2l6ZW9mKG92ZXJsYXlRdWFkVmVydGlj
ZXMpKTsKICAgICBvdmVybGF5UXVhZC0+VW5sb2NrKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1
YWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4oc2Nl
bmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CiB9CiAKIC8vIEZJWE1FOiA8cmRhcjovLzY1MDc4NTE+
IFNoYXJlIHRoaXMgY29kZSB3aXRoIENvcmVBbmltYXRpb24ncwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVy
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NB
RDNEUmVuZGVyZXIuaAppbmRleCA2N2Q0ODM1M2IwM2Q3MmVhOGE5YzI4YWI4NzBkNzVkYTExZDgw
OGVjLi40N2VhZGRhNjU2MTJlNjA1MGQyYzI4YWNlNmY0YzlhY2U5Y2JiNTM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNE
UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV0tR
Q0EgewogY2xhc3MgSW1hZ2U7CiAKIGNsYXNzIEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRDNEUG9zdFByb2Nlc3Np
bmdDb250ZXh0KGNvbnN0IENDb21QdHI8SURpcmVjdDNEVGV4dHVyZTk+JiwgY29uc3QgQ0NvbVB0
cjxJRGlyZWN0M0RWZXJ0ZXhCdWZmZXI5PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJOb2RlSGlnaGxpZ2h0LmgKaW5kZXggZjk3NTViYjhkYWVhYWIzOWQzNDIyZWU4ZmViMGYyNGMx
YjM1NGZlZC4uYjI2OTU0OTliODI2Yjk5YjgyZWFmYTg0NTQxODdkMTlmNmUwN2YxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhpZ2hsaWdodC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaApAQCAtMzUsNiArMzUsNyBA
QAogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViTm9kZUhpZ2hsaWdodCA6IFdlYkNvcmU6Oldp
bmRvd01lc3NhZ2VMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViTm9kZUhpZ2hsaWdodChXZWJWaWV3Kik7CiAgICAgfldlYk5vZGVIaWdobGln
aHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlv
bkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50
ZXIuY3BwCmluZGV4IDdiZDk4ODk2MTExYzNiM2ZlNmZlNTRmMGEyNDc5NjYwNmIyMmE3NWYuLjky
NTMyZGJkY2E0MWI4NTMxZTkxNjhjZGRkZTMxYjU3YTdmNDU2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNDUsNiArNDUs
NyBAQCB0eXBlZGVmIE9iamVjdE9ic2VydmVyTGlzdDo6aXRlcmF0b3IgT2JzZXJ2ZXJMaXN0SXRl
cmF0b3I7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBPYmplY3RPYnNlcnZlckxpc3Q+IE1hcHBl
ZE9ic2VydmVyczsKIAogc3RydWN0IFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGUgeworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBNYXBwZWRPYnNlcnZlcnMgbV9t
YXBwZWRPYnNlcnZlcnM7CiB9OwogCkBAIC01Myw3ICs1NCw3IEBAIHN0cnVjdCBXZWJOb3RpZmlj
YXRpb25DZW50ZXJQcml2YXRlIHsKIElXZWJOb3RpZmljYXRpb25DZW50ZXIqIFdlYk5vdGlmaWNh
dGlvbkNlbnRlcjo6bV9kZWZhdWx0Q2VudGVyID0gMDsKIAogV2ViTm90aWZpY2F0aW9uQ2VudGVy
OjpXZWJOb3RpZmljYXRpb25DZW50ZXIoKQotICAgIDogZChzdGQ6Om1ha2VfdW5pcXVlPFdlYk5v
dGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCisgICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZp
Y2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IDM4OWU5OGM3ZDlm
ZGNhMzAzMTYwMTRmOWYxZDFmNjIwYTM0OWVmMmYuLmYxNDk4MTIyZDhkZTNjMzM3MzI1NDQ4YmUz
OTE0NDI0ZWM3NjAwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5v
dGlmaWNhdGlvbkNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbkNlbnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiBzdHJ1Y3QgV2ViTm90aWZpY2F0aW9u
Q2VudGVyUHJpdmF0ZTsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2VudGVyIGZpbmFsIDogcHVi
bGljIElXZWJOb3RpZmljYXRpb25DZW50ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBXZWJOb3RpZmljYXRpb25DZW50ZXIqIGNyZWF0ZUluc3Rh
bmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggOTc2MTQ4ZTMzZjc0
NDZkN2MzODQ5OTU5ZDZjZjczZGVmNDhmNjdmZi4uOWE2MTA3OWViZTVkMzkwYTNlYzQ5ZmNjZDA4
NjRkOTczMTY0YTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE4ODAs
NyArMTg4MCw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlTW91c2VFdmVudChVSU5UIG1lc3NhZ2Us
IFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgICAgIG1vdXNlRXZlbnQuc2V0Q2xp
Y2tDb3VudChnbG9iYWxDbGlja0NvdW50KTsKICAgICAgICAgaGFuZGxlZCA9IG1fcGFnZS0+bWFp
bkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkubW91c2VNb3ZlZChtb3VzZUV2ZW50KTsKICAgICAgICAg
aWYgKCFtX21vdXNlT3V0VHJhY2tlcikgewotICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRSQUNLTU9VU0VFVkVOVD4oKTsKKyAgICAgICAgICAgIG1fbW91
c2VPdXRUcmFja2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VFJBQ0tNT1VT
RUVWRU5UPigpOwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXItPmNiU2l6ZSA9IHNpemVv
ZihUUkFDS01PVVNFRVZFTlQpOwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXItPmR3Rmxh
Z3MgPSBUTUVfTEVBVkU7CiAgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlci0+aHduZFRyYWNr
ID0gbV92aWV3V2luZG93OwpAQCAtNjc5NCw3ICs2Nzk0LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpy
ZWdpc3RlckVtYmVkZGVkVmlld01JTUVUeXBlKF9Jbl8gQlNUUiBtaW1lVHlwZSkKICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIGlmICghbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMpCi0g
ICAgICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0
PFN0cmluZz4+KCk7CisgICAgICAgIG1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzID0gbWFrZVVuaXF1
ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAKICAgICBtX2VtYmVkZGVkVmlld01JTUVUeXBlcy0+YWRk
KHRvU3RyaW5nKG1pbWVUeXBlKSk7CiAgICAgcmV0dXJuIFNfT0s7CkBAIC02ODk0LDcgKzY4OTQs
NyBAQCB2b2lkIFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhU
TUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudAogICAgICAgICBBU1NFUlQoIW1fZnVsbFNjcmVl
blZpZGVvQ29udHJvbGxlcik7CiAgICAgfQogCi0gICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9s
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyPigpOworICAg
IG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcj4oKTsKICAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXItPnNldFZpZGVv
RWxlbWVudCgmdmlkZW9FbGVtZW50KTsKICAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIt
PmVudGVyRnVsbHNjcmVlbigpOwogI2VuZGlmCkBAIC02OTQ2LDcgKzY5NDYsNyBAQCBIUkVTVUxU
IFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9v
cHRfIElXZWJTY3JpcHRXbwogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgV2ViU2Ny
aXB0V29ybGQqIHdvcmxkID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3JsZCo+KGlXb3Js
ZCk7Ci0gICAgYXV0byB1c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihz
b3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291
bnQpLAorICAgIGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlwdD4oc291cmNl
LCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwK
ICAgICAgICAgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksIGluamVj
dGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0
YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwKICAgICAgICAgaW5qZWN0ZWRGcmFtZXMgPT0gV2Vi
SW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVP
bmx5KTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3Jp
cHQod29ybGQtPndvcmxkKCksIFdURk1vdmUodXNlclNjcmlwdCkpOwpAQCAtNjk3Myw3ICs2OTcz
LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU3R5bGVTaGVldFRvR3JvdXAoX0luXyBCU1RS
IGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
IAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0
V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8gc3R5bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8
VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVs
aXN0LCB3aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0
Q291bnQpLAorICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXQ+
KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RD
b3VudCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLAogICAgICAg
ICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJh
bWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CiAgICAgdmll
d0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCh3b3JsZC0+
d29ybGQoKSwgV1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7
CiAgICAgcmV0dXJuIFNfT0s7CkBAIC03MjM3LDcgKzcyMzcsNyBAQCB2b2lkIFdlYlZpZXc6OnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoYm9vbCBhY2NlbGVyYXRlZCkKICAgICB9CiAjZWxpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgaWYgKGFjY2VsZXJhdGVkICYmICFtX2FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0KQotICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4o
KnRoaXMpOworICAgICAgICBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4oKnRoaXMpOwogICAgIG1faXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nID0gYWNjZWxlcmF0ZWQ7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29IZWFwLmgKaW5kZXggZWVjYTczOWQyYjM5NGU4NjAzNTFiYTFiNDY0ZGU1NDc4YjliYjE2
Ny4uZGIzNmViOWRlZDJiOWUwZjVmNmVmNDBkYjZjNjk5MTlhNzMwNmQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29IZWFwLmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOiBcCiAgICAgXAogICAgIHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0ZTsgXAogICAgIHZvaWQgb3Bl
cmF0b3IgZGVsZXRlW10odm9pZCogcCkgPSBkZWxldGU7IFwKK3R5cGVkZWYgaW50IF9fZmFzdEFs
bG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX21ha2VCaXNvTWFsbG9j
ZWRNYWNyb1NlbWljb2xvbmlmaWVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvSGVhcElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGlu
ZXMuaAppbmRleCBjMDQ0ZDc3M2I4NzlhNjZkZmFkZDJlMmNhMzE1ZWVlYTM3NmZmYTRhLi4zYWEx
ZDIwOTUxZGJmMzM2NGU3ZDE2ZGQyMzY0M2QwY2Q5N2Y2ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29IZWFwSW5saW5lcy5oCkBAIC0xMjMsNiArMTIzLDcgQEAgcHVibGljOiBcCiAgICAg
XAogICAgIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzaXplKSA9IGRlbGV0ZTsgXAogICAg
IHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogcCkgPSBkZWxldGU7IFwKK3R5cGVkZWYgaW50
IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX21ha2VC
aXNvTWFsbG9jZWRJbmxpbmVNYWNyb1NlbWljb2xvbmlmaWVyCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjOGJmYmEyOWMwZmE4ZjZjMDZjZDg0
ZDViODZjNjZlMTg1ZGEyZmM5Li4xMDMxZDMzOTdjZTc4YTkxMjYxYzM4NjVlMDU0Y2UyYzI4NDAz
ODg4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTM2IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMg
VCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKGFk
ZFVSTFRvUmVkaXJlY3RDYWxsYmFjayk6CisgICAgICAgIChzZXRXaWxsU2VuZFJlcXVlc3RDbGVh
ckhlYWRlckNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9n
c0ZvckNoYW5uZWwpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHQpOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGR1bXBGcmFtZXNBc1RleHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgor
ICAgICAgICAoZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcDoKKyAgICAg
ICAgKERSVERhdGFPYmplY3Q6OlNldERhdGEpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6RnJh
bWVMb2FkRGVsZWdhdGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRl
LmNwcDoKKyAgICAgICAgKERSVFVuZG9NYW5hZ2VyOjpEUlRVbmRvTWFuYWdlcik6CisgICAgICAg
IChVSURlbGVnYXRlOjpVSURlbGVnYXRlKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OnJlc2V0VW5k
b01hbmFnZXIpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoKKyAgICAgICAg
KGNyZWF0ZVZpZXdCYWNrZW5kKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oOgorICAgICAgICAqIFRl
c3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oOgorICAgICAgICAqIFRl
c3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6emxlci5oOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvQ291bnRlcnMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0phdmFT
Y3JpcHRUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkpTVGVzdCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVdlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dGVzdE1vdmluZ1VzaW5nRW5zdXJlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RNb3Zp
bmdVc2luZ0FkZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkxvY2tUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SZWZDb3VudGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Q0FSaW5nQnVmZmVyVGVzdDo6U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmNyZWF0ZVRlc3RWYWx1ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNy
ZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRG
aWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2Vi
S2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdDo6U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OldlYktpdDJXaWxsTG9hZFRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlVGVzdDo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwOgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgor
ICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRUUFMpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwOgor
ICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdB
dHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycyk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZp
ZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOmFkZFRvV2luZG93Ol0pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW06CisgICAgICAgICgtW1Rl
c3RGb250T3B0aW9ucyBpbml0V2l0aEZvbnRPcHRpb25zOl0pOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
R2VvbG9jYXRpb25Qcm92aWRlck1vY2suaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpF
dmVudFNlbmRpbmdDb250cm9sbGVyOjpjYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oOgorICAgICAg
ICAoV1RSOjp0b1NURCk6CisgICAgICAgIChXVFI6OnRvV1RGU3RyaW5nKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2Vu
ZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpy
ZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6Y3JlYXRlVGVzdFVS
TCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpydW5UZXN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpydW5VSVNpZGVTY3JpcHQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNy
ZWF0ZVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0RGVmYXVsdENh
bGVuZGFyVHlwZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQ
cm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5bUZvcktleVJlZik6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW06CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclBy
b3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24pOgorICAg
ICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
d3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwOgorICAgICAgICAoV1RSOjp3cGVLZXlTeW1Gb3JL
ZXlSZWYpOgorICAgICAgICAqIHdwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oOgorCiAyMDE5LTA4
LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCBlNzNhMmMyN2QxNzcyMmQxMjRkMTQyNTFiOTBi
NjU1MjEwODVhMzFjLi4xYmRmMWM0MzBiYzUwYmUzODRmYWNjZTUwZGZmYTUyOGRhNDg1NmE1IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAg
LTQxLDYgKzQxLDcgQEAKICNlbmRpZgogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIoKTsKICAgICB+QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggOTBjNjRjMzYxNGNkYzQyZGI2ZjQ5NDJiZGUxYWQx
MzBmZDFmZDljYi4uZDJiZjJlODJhY2Q2NDVjNTc4ZDYyZmM2YjcwYzg3YmJhOWZlNmNmMyAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTM2MywxMSArMzYzLDExIEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuCiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAogICAgIHNpemVf
dCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUob3JpZ2luLmdl
dCgpKTsKLSAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPiht
YXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRV
VEY4Q1N0cmluZyhvcmlnaW4uZ2V0KCksIG9yaWdpbkJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsg
MSk7CiAKICAgICBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUo
ZGVzdGluYXRpb24uZ2V0KCkpOwotICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBkZXN0aW5hdGlvbkJ1
ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3Ro
ICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSwgZGVz
dGluYXRpb25CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgVGVzdFJ1bm5lciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUo
dGhpc09iamVjdCkpOwpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0
V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlMKICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpT
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShoZWFkZXIuZ2V0KCkpOwotICAgIGF1dG8g
aGVhZGVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOwor
ICAgIGF1dG8gaGVhZGVyQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGhlYWRl
ci5nZXQoKSwgaGVhZGVyQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFRlc3RS
dW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIzOTQsNyArMjM5NCw3IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2Up
CiB2b2lkIFRlc3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoSlNTdHJpbmdS
ZWYgY2hhbm5lbCkKIHsKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKGNoYW5uZWwpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0
cmluZ0dldFVURjhDU3RyaW5nKGNoYW5uZWwsIGJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7
CiAKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoeyBi
dWZmZXIuZ2V0KCkgfSk7CkBAIC0yNDY0LDcgKzI0NjQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJ1
blVJU2NyaXB0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTVmFs
dWVSZQogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKGNhbGxiYWNrSUQsIGNhbGxiYWNrKTsK
IAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAgIG1fVUlTY3JpcHRDb250ZXh0
ID0gc3RkOjptYWtlX3VuaXF1ZTxXVFI6OlVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAgICAg
ICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdU
Ujo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAKICAgICBTdHJpbmcgc2NyaXB0U3RyaW5nKEpT
U3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzY3JpcHQpLCBKU1N0cmluZ0dldExlbmd0aChzY3JpcHQp
KTsKICAgICBtX1VJU2NyaXB0Q29udGV4dC0+cnVuVUlTY3JpcHQoc2NyaXB0U3RyaW5nLCBjYWxs
YmFja0lEKTsKQEAgLTI1MjEsNyArMjUyMSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0T3BlblBh
bmVsRmlsZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZmlsZXNWYWx1ZSkKIAog
ICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGZp
bGVWYWx1ZSwgbnVsbHB0cikpOwogICAgICAgICBzaXplX3QgZmlsZUJ1ZmZlclNpemUgPSBKU1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoZmlsZS5nZXQoKSkgKyAxOwotICAgICAgICBh
dXRvIGZpbGVCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUp
OworICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0
cmluZyhmaWxlLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpLCBmaWxlQnVmZmVyU2l6ZSk7CiAKICAg
ICAgICAgbV9vcGVuUGFuZWxGaWxlcy5wdXNoX2JhY2soZmlsZUJ1ZmZlci5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMmU5Mzk3ZmY1OTQ5
MjUwMGZiMDg2ODcxYzhhZjdjNmYxNjY5YWJmNC4uMTMwNjhjYWUwMzUzMmJkOGYyNWZkNGJkYmM1
MjVmNTJjNDIwMGI5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQpAQCAtMTUzNSw3ICsxNTM1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVzQXNU
ZXh0KFdlYkZyYW1lICpmcmFtZSkKICAgICAvLyB0aGUgcmVzdWx0IHdpdGhvdXQgYW55IGNvbnZl
cnNpb24uCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZiA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKWlubmVyVGV4
dCkpOwogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJp
bmdTaXplKHN0cmluZ1JlZi5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJp
bmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KHN0cmluZ1JlZi5nZXQo
KSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpA
IiVAXG4iLCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGJ1ZmZlci5nZXQoKSwg
c3RyaW5nTGVuZ3RoIC0gMSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV07CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggNDYx
YmQzZGYzZWJiMjYwM2FjMzIxODI4ODIxOGRkOGY2OTE2OGZmZC4uM2JlMzMyMjFkNmIzZWJjMzU2
ZDUxZTMzNGEyNGQ5MjlhZTI1M2E5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTU2OCw3ICs1NjgsNyBAQCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IGV2ZW50UHJlc3NlZE1vdXNlQnV0
dG9uc1N3aXp6bGVyRm9yVgogewogICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1M
VmlldyBjbGFzc11dKQogICAgICAgICB2aWV3ID0gWyhXZWJIVE1MVmlldyAqKXZpZXcgX2hpdFZp
ZXdGb3JFdmVudDpldmVudF07Ci0gICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Nj
cm9sbGVyIGNsYXNzXV0gPyBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtO
U0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJl
dF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5VTEw7Cisg
ICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Njcm9sbGVyIGNsYXNzXV0gPyBtYWtl
VW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHBy
ZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFBy
ZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5VTEw7CiB9CiAKIHN0YXRpYyBOU1VJbnRlZ2VyIHN3aXp6
bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
UlREYXRhT2JqZWN0LmNwcAppbmRleCBlZjJkMmVmYjg1OWY0YjhhMjJmMzBjNDY3YWNlMWY4YWFk
MTU3YTRkLi43NmEyMWE1OGE5ZjY2ZGRlMTYwNzI5ZjhmZWUxZTE1Zjk0OWU2NjI0IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCkBAIC0yNDksNyArMjQ5LDcg
QEAgU1RETUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEoX0luXyBGT1JNQVRFVEMqIHBm
b3JtYXRldGMsIF9Jbl8gU1RHTUVESVVNKgogICAgIGlmICghcGZvcm1hdGV0YyB8fCAhcG1lZGl1
bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8gZm9ybWF0ZXRjID0gc3Rk
OjptYWtlX3VuaXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0byBmb3JtYXRldGMgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxGT1JNQVRFVEM+KCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFNUR01FRElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0Z01lZChuZXcgU1RHTUVESVVNKTsK
IAogICAgIFplcm9NZW1vcnkoZm9ybWF0ZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAppbmRleCBj
ODBkZjFiZTVmMmRlNDdkM2I4MzE2MzdlZjZlOWZiY2Q5MzRjOGU2Li4xMWM5MzM5YjE2ZDgwNGQy
YzIwMWM5MzI5ZjRhOGMzNTQ0MmE4M2NiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgc3RyaW5nIGRlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KElXZWJGcmFtZSogd2ViRnJhbWUpCiB9CiAKIEZyYW1l
TG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSgpCi0gICAgOiBtX2djQ29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPEdDQ29udHJvbGxlcj4oKSkKLSAgICAsIG1fYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4oKSkKLSAg
ICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbnB1dENvbnRy
b2xsZXI+KCkpCisgICAgOiBtX2djQ29udHJvbGxlcihtYWtlVW5pcXVlPEdDQ29udHJvbGxlcj4o
KSkKKyAgICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcj4oKSkKKyAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihtYWtlVW5pcXVl
PFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9V
SURlbGVnYXRlLmNwcAppbmRleCBmMGFkYmNlNDc5NmZhYmY0ZjBkNDJiMjcxMTYzMzcwMWFjNzgx
MzE0Li40N2FhMjcyYmYxOTVjZDlhMjVhZjI4NjU1ZDM3MWY0MTYwMGY0NTk4IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCkBAIC0xMDEsOCArMTAxLDggQEAgY2xhc3Mg
RFJUVW5kb01hbmFnZXIgewogfTsKIAogRFJUVW5kb01hbmFnZXI6OkRSVFVuZG9NYW5hZ2VyKCkK
LSAgICA6IG1fcmVkb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb1N0YWNrPigpKQotICAg
ICwgbV91bmRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCisgICAgOiBt
X3JlZG9TdGFjayhtYWtlVW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKKyAgICAsIG1fdW5kb1N0YWNr
KG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigpKQogewogfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAg
dm9pZCBEUlRVbmRvTWFuYWdlcjo6dW5kbygpCiB9CiAKIFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUo
KQotICAgIDogbV91bmRvTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigp
KQorICAgIDogbV91bmRvTWFuYWdlcihtYWtlVW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpKQogICAg
ICwgbV9kZXNrdG9wTm90aWZpY2F0aW9ucyhuZXcgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNl
bnRlcikKIHsKICAgICBtX2ZyYW1lLmJvdHRvbSA9IDA7CkBAIC0xNTcsNyArMTU3LDcgQEAgVUlE
ZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCiAKIHZvaWQgVUlEZWxlZ2F0ZTo6cmVzZXRVbmRvTWFuYWdl
cigpCiB7Ci0gICAgbV91bmRvTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb01hbmFn
ZXI+KCk7CisgICAgbV91bmRvTWFuYWdlciA9IG1ha2VVbmlxdWU8RFJUVW5kb01hbmFnZXI+KCk7
CiB9CiAKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlp
ZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5k
ZXggYmU2NDYwZTU2YjdiNzBjZDI0ODBmYzg3ZGUyYjliYTk3MGU1OGMzOC4uNDM5MTkyOTc5MWRk
NjcxMzFjODU4YTE2Njg5YzUyYmFkYzFkZDg2MiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvd3BlL21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9tYWluLmNwcApAQCAt
MTI5LDggKzEyOSw4IEBAIHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChX
ZWJLaXRXZWJWaWV3ICosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0CiBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ+IGNyZWF0ZVZpZXdCYWNrZW5k
KHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiB7CiAgICAgaWYgKGhlYWRsZXNzTW9k
ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpI
ZWFkbGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXUEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVp
Z2h0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFk
bGVzc1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxX
UEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKIH0K
IAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMjUxLDcgKzI1MSw3IEBAIGludCBtYWluKGludCBhcmdj
LCBjaGFyICphcmd2W10pCiAgICAgICAgIG51bGxwdHIpKTsKICAgICBnX29iamVjdF91bnJlZihz
ZXR0aW5ncyk7CiAKLSAgICBiYWNrZW5kUHRyLT5zZXRJbnB1dENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPElucHV0Q2xpZW50Pihsb29wLCB3ZWJWaWV3KSk7CisgICAgYmFja2VuZFB0ci0+c2V0SW5w
dXRDbGllbnQobWFrZVVuaXF1ZTxJbnB1dENsaWVudD4obG9vcCwgd2ViVmlldykpOwogI2lmIGRl
ZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkKICAgICBhdXRv
KiBhY2Nlc3NpYmxlID0gd3BlX3ZpZXdfYmFja2VuZF9kaXNwYXRjaF9nZXRfYWNjZXNzaWJsZSh3
cGVCYWNrZW5kKTsKICAgICBpZiAoQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4
dC5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250
ZXh0LmgKaW5kZXggNGUwMjBmMTk2Y2QwMzNkNjFlZTBlNjI4ZjZhMWU1OWNhMWMzMzQ1OC4uMGI4
NGQyZDQ1NDU1ODNkZTlmYzBkZWMxMmE0YWE4OGE2NTllZDE5OCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmgKKysrIGIv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmgK
QEAgLTY4LDYgKzY4LDcgQEAgdHlwZWRlZiBlbnVtICB7CiB9IENhbGxiYWNrVHlwZTsKIAogY2xh
c3MgVUlTY3JpcHRDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShVSVNjcmlwdENvbnRleHQpOwogcHVibGljOgogICAgIFVJU2Ny
aXB0Q29udGV4dChVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmggYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaAppbmRleCAyOGRiMTBhNDc5
OTYzMGM2NGM1NWQwNzg2YzAwZWUwOTQ4OTE0NWUyLi4zOWI0ZTVlYTcxODM2ODhjZGVjOWJlZmNj
OTY0Y2U4OTNhNTQzZjA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29h
L0NsYXNzTWV0aG9kU3dpenpsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29h
L0NsYXNzTWV0aG9kU3dpenpsZXIuaApAQCAtMjYsOSArMjYsMTEgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogY2xhc3MgQ2xhc3NNZXRob2RTd2l6emxl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ2xhc3NNZXRob2RTd2l6emxlcik7CiBwdWJsaWM6CiAgICAgQ2xhc3NNZXRob2RTd2l6emxl
cihDbGFzcywgU0VMLCBJTVApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9j
b2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2Nv
Y29hL0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaAppbmRleCBiOGEwYjBiMThkMTMxZWNjOTliMjZh
MzkxYzg5MGY5ZjZjNmMwNzJlLi42MjQ3NGQ3Y2Q5Nzc3OThjNWJiZWNhZjY1NmE2MjY0ODU1YWNm
ODliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3RhbmNlTWV0
aG9kU3dpenpsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3RhbmNl
TWV0aG9kU3dpenpsZXIuaApAQCAtMjYsOSArMjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8b2JqYy9ydW50aW1lLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogY2xhc3MgSW5zdGFuY2VNZXRob2RTd2l6emxlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW5zdGFuY2VNZXRob2RTd2l6emxlcik7CiBwdWJsaWM6CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlcihDbGFzcywgU0VMLCBJTVApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b3VudGVycy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCmluZGV4IGY5ZWEyMjQw
MjYxNTBkOGUxYWM2YmI3NjE1YjZkZTM4OTBhZjY3MGUuLmFiNWM1MmY3NWQxYWM2YWY5NjBhYzE0
Y2E3MGI1Y2I3NGZhMzYyODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRl
cnMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgKQEAgLTI3LDYgKzI3LDgg
QEAKICNpZm5kZWYgQ291bnRlcnNfaAogI2RlZmluZSBDb3VudGVyc19oCiAKKyNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorCiBzdHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsKICAgICBzdGF0aWMg
dW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvcHlDb3Vu
dDsKQEAgLTUwLDYgKzUyLDcgQEAgc3RydWN0IENvcHlNb3ZlQ291bnRlciB7CiAKIAogc3RydWN0
IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CiAgICAg
c3RhdGljIHVuc2lnbmVkIGRlc3RydWN0aW9uQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZh
U2NyaXB0VGVzdC5jcHAKaW5kZXggMjEzNmU5OGQ4ZWJiODc1ZDU5N2ZjNmUwN2M3YjAxZWQ1Yjg0
YWUxNi4uNmEyMzM2MzI5NDFhY2Y2MDcwNTk0OTQyNjQwMWIzMjczMzdjNzA4MSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgOjp0ZXN0aW5n
OjpBc3NlcnRpb25SZXN1bHQgcnVuSlNUZXN0KGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29u
c3QgY2hhciosIFdLUGEKICAgICBVdGlsOjpydW4oJmNvbnRleHQuZGlkRmluaXNoKTsKIAogICAg
IHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGNv
bnRleHQuYWN0dWFsU3RyaW5nLmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgSlNTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhjb250ZXh0LmFjdHVhbFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBi
dWZmZXJTaXplKTsKICAgICAKICAgICByZXR1cm4gY29tcGFyZUpTUmVzdWx0KHNjcmlwdCwgYnVm
ZmVyLmdldCgpLCBleHBlY3RlZFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1V
dGlsaXRpZXMuY3BwCmluZGV4IDhmOGQ3NjhhNTNjMjc1MWEyNDNlMDU5NWUyYzBjMGY0NDVkZDk2
YzguLmJiYmZmNzA5ZTY3ZDM1OWI0ZTQ4MTcxZWQ3YzRjMjQwMDhhNTY3ZjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFdLQ29u
dGV4dFJlZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0ZXN0TmFtZSwgV0tUCiBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcp
CiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmlu
Z1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltd
PihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9
IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUp
OwogICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEp
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggYWQyYTczMmQ1MTk0
N2JiYzdhZmM2NGUyN2Q0MjE1Y2UzMjg3ZGRlZS4uMGMyN2E0NjE2NDVmYmExMmE1YzY5NWQ5MzI2
NDMwNTI2YzRlZjEyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdl
YlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCkBAIC0y
Niw2ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtV2ViVmlld19oCiAjZGVmaW5lIFBsYXRmb3Jt
V2ViVmlld19oCiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCiAjaWYgVVNFKENHKQog
I2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAjZW5kaWYKQEAgLTYzLDYgKzY1
LDcgQEAgdHlwZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZpZXJzOwogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2ViVmlldyhXS1BhZ2VD
b25maWd1cmF0aW9uUmVmKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RXhwZWN0ZWQuY3BwCmluZGV4IDRiMTBjODZhMmFiNzMyZTFlYTYyNzQ4NGNjNzg5NDBmYjZjZDZl
OTYuLjJhMDZmOGJhNWNhOWZlYjQ5MmEzNTIyYzVjNjU1MDEzOGQyMjM3ZTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKQEAgLTQwNyw2ICs0MDcsNyBAQCBU
RVNUKFdURl9FeHBlY3RlZCwgZGVzdHJ1Y3RvcnMpCiBzdGF0aWMgaW50IHNub3dmbGFrZXMgPSAw
Owogc3RhdGljIGludCBtZWx0ZWQgPSAwOwogc3RydWN0IHNub3dmbGFrZSB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0KCkgeyBzbm93
Zmxha2VzID0gbWVsdGVkID0gMDsgfQogICAgIHNub3dmbGFrZSgpIHsgKytzbm93Zmxha2VzOyB9
CiAgICAgfnNub3dmbGFrZSgpIHsgKyttZWx0ZWQ7IH0KQEAgLTQxNiw3ICs0MTcsNyBAQCBURVNU
KFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKIHsKICAgICAvLyBVbmlxdWUgc25vd2ZsYWtlcyBj
YW5ub3QgYmUgY29waWVkLgogICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQo
c3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBhdXRvIHMgPSBtYWtlVW5l
eHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIEVYUEVDVF9FUShzbm93
Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7CiAgICAgfQpAQCAtNDI1
LDcgKzQyNiw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFr
ZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQoc3Rk
OjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBl
Y3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIFVuZXhwZWN0ZWQ8c3RkOjp1
bmlxdWVfcHRyPHNub3dmbGFrZT4+IGMoV1RGTW92ZShzKSk7CiAgICAgICAgIEVYUEVDVF9FUShz
bm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7CkBAIC00NDYsNyAr
NDQ3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgfTsKIAogICAgIHsK
LSAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4sIGludD4gcyhzdGQ6
Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVl
X3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAg
ICBwbG93KFdURk1vdmUocykudmFsdWUoKSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxh
a2VzLCAxKTsKQEAgLTQ1NCw3ICs0NTUsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0
cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPGlu
dCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtl
X3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8aW50LCBzdGQ6OnVuaXF1
ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4o
KSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAgICAgfQogICAgIEVYUEVD
VF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ2Miw3ICs0NjMsNyBAQCBURVNUKFdURl9FeHBlY3Rl
ZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAg
IEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVj
dGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKSk7CisgICAgICAgIEV4cGVjdGVkPHZv
aWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlx
dWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS5lcnJvcigpKTsKICAg
ICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCmluZGV4IDg0ZGE1ZWMzZmZjMjQ4YWNk
ZDllMzYzMzAzOGM2OWRhZTg5MTIwOTkuLjdiOGZhZjI4OGFiYzA3Y2ZhZjhiNTI3MTIzOGY3NmQw
MTMwMTJlZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hD
b3VudGVkU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291
bnRlZFNldC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwg
VW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5p
cXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwog
CiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1
Y3Rpb25Db3VudCk7CkBAIC0yNTksNyArMjU5LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQs
IFVuaXF1ZVB0cktleUluaXRpYWxDb3VudCkKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5p
cXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1
bmlxdWVQdHIpLCAxMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBURVNUKFdU
Rl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAg
ICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0Owog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0
byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwog
ICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChX
VEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgVEVTVChXVEZfSGFzaENv
dW50ZWRTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBI
YXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAg
aW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSk7CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBURVNUKFdURl9IYXNoQ291bnRl
ZFNldCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRl
ZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIg
PSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVl
UHRyKSk7CiAKQEAgLTMzNyw3ICszMzcsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5p
cXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0
ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRT
ZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1h
cC5jcHAKaW5kZXggMWUxNjNkMzg5OThlNmJhYmZmZjUzODQxM2NjYTI4YWE2ZDI5ODk4Mi4uYTgw
Y2E3NDk0YThmOWE3OTY3ZTFlNDk0NmZlOGNjYTYzOWNiYjU4YiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBURVNUKFdURl9I
YXNoTWFwLCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4oKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKICAgICBFWFBFQ1Rf
RVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsK
QEAgLTIzMCw3ICsyMzAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfRmluZFVz
aW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+
IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50
Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKFdURl9IYXNoTWFw
LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDxz
dGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIu
Z2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yNTUsNyAr
MjU1LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRl
cikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAg
IGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5p
cXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBp
bnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRy
KSwgMik7CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJL
ZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVl
UHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjg5
LDcgKzI4OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9UYWtlVXNpbmdSYXdQ
b2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1h
cC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtNTYzLDEyICs1NjMsMTIgQEAgVEVT
VChXVEZfSGFzaE1hcCwgRW5zdXJlX1VuaXF1ZVBvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDx1bnNp
Z25lZCwgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkPj4gbWFwOwogICAgIHsKLSAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
dW5zaWduZWQ+KDEpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEs
IFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkPigx
KTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1hcC5nZXQoMSkpOwogICAgICAgICBFWFBF
Q1RfRVEoMXUsICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKDF1LCBhZGRSZXN1bHQuaXRlcmF0b3ItPmtleSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQyID0gbWFwLmVu
c3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkPigyKTsgfSk7Cisg
ICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDIpOyB9KTsKICAgICAgICAgRVhQ
RUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKmFkZFJlc3Vs
dDIuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1
bHQyLml0ZXJhdG9yLT5rZXkpOwpAQCAtNTkwLDYgKzU5MCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAs
IEVuc3VyZV9SZWZQdHIpCiB9CiAKIGNsYXNzIE9iamVjdFdpdGhSZWZMb2dnZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE9iamVjdFdpdGhSZWZMb2dnZXIo
UmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgICAgIDogbV9sb2dnZXIoV1RGTW92ZShsb2dn
ZXIpKQpAQCAtNjA0LDcgKzYwNSw3IEBAIHZvaWQgdGVzdE1vdmluZ1VzaW5nRW5zdXJlKFJlZjxS
ZWZMb2dnZXI+JiYgbG9nZ2VyKQogewogICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVl
X3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogICAgIAotICAgIG1hcC5lbnN1cmUoMSwg
WyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92
ZShsb2dnZXIpKTsgfSk7CisgICAgbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1
ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9KTsKIH0KIAogdm9pZCB0
ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCkBAIC02MTIsNyArNjEz
LDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFdpdGhSZWZMb2dnZXI+
PiBtYXA7CiAKICAgICBhdXRvJiBzbG90ID0gbWFwLmFkZCgxLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7Ci0gICAgc2xvdCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4o
V1RGTW92ZShsb2dnZXIpKTsKKyAgICBzbG90ID0gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9n
Z2VyPihXVEZNb3ZlKGxvZ2dlcikpOwogfQogCiBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfTGFt
YmRhc0NhcHR1cmluZ0J5UmVmZXJlbmNlKQpAQCAtNjgzLDYgKzY4NCw3IEBAIFRFU1QoV1RGX0hh
c2hNYXAsIFZhbHVlSXNEZXN0cnVjdGVkT25SZW1vdmUpCiBURVNUKFdURl9IYXNoTWFwLCBSZWZQ
dHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKIHsKICAgICBzdHJ1Y3QgRGVyZWZPYnNlcnZlciB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTkVWRVJfSU5M
SU5FIHZvaWQgcmVmKCkKICAgICAgICAgewogICAgICAgICAgICAgKytjb3VudDsKQEAgLTY5Nyw3
ICs2OTksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikK
ICAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2ZWRCdWNrZXQgeyBudWxscHRyIH07
CiAgICAgfTsKIAotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVmT2Jz
ZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8RGVyZWZPYnNlcnZlcj4o
KTsKIAogICAgIEhhc2hNYXA8UmVmUHRyPERlcmVmT2JzZXJ2ZXI+LCBpbnQ+IG1hcDsKICAgICBt
YXAuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSwgNSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hTZXQuY3BwCmluZGV4IDcxZWNmZGRiODQyYjZiZDUxNjQxY2EwNWI2MTA4
YWQ0OGY2MmJiN2QuLjg3MjY4Yzc0ZjBjYjhmYzE0OWViZjYwYzg1ODhmY2VkMzU4MWEyMDUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCkBAIC0xMjgsNyArMTI4
LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaFNldDxzdGQ6
OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1
dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAg
IEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9u
Q291bnQpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktl
eV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGlu
dD4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBURVNUKFdURl9IYXNoU2V0
LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaFNldDxz
dGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgp
OwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTcxLDcgKzE3MSw3IEBA
IFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAK
ICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVl
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1
bmlxdWVQdHIpKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1
ZVB0cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9w
dHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVl
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0
ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTI4Myw2ICsy
ODMsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBDb3B5Q2FwYWNpdHlJc05vdE9uQm91bmRhcnkpCiBU
RVNUKFdURl9IYXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKIHsKICAgICBzdHJ1
Y3QgRGVyZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAgICAgICAgewogICAgICAgICAg
ICAgKytjb3VudDsKQEAgLTI5Nyw3ICsyOTgsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBSZWZQdHJO
b3RaZXJvZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2
ZWRCdWNrZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VV
bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPERlcmVmT2JzZXJ2
ZXI+PiBzZXQ7CiAgICAgc2V0LmFkZChhZG9wdFJlZihvYnNlcnZlci5nZXQoKSkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCmluZGV4IDY1N2JlNDFk
NjIwNzI0NDY3YTU1NDllMmFiNWExOTQxYzRlMzczYzEuLmI3NzBhNWIyN2MxZDJiMDk1YTViYjU5
ZDY1YWMzZjRkYzRlNGU2OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0xpc3RIYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9M
aXN0SGFzaFNldC5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwg
VW5pcXVlUHRyS2V5KQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1
bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAg
ICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMzk2LDcg
KzM5Niw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3
UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsK
IAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1
dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsK
ICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVu
aXF1ZVB0cikpOwogCkBAIC00MTAsNyArNDEwLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVu
aXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxz
dGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQo
KTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00MjEsOSArNDIxLDkg
QEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9JbnNlcnRCZWZvcmVVc2luZ1Jh
d1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDIpOwor
ICAgIGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxpbnQ+KDIpOwogICAgIGF1dG8gcHRyV2l0aDIgPSB1bmlxdWVQdHJXaXRoMi5nZXQoKTsKLSAg
ICBhdXRvIHVuaXF1ZVB0cldpdGg0ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDQpOworICAgIGF1
dG8gdW5pcXVlUHRyV2l0aDQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+
KDQpOwogICAgIGF1dG8gcHRyV2l0aDQgPSB1bmlxdWVQdHJXaXRoNC5nZXQoKTsKIAogICAgIGxp
c3QuYWRkKFdURk1vdmUodW5pcXVlUHRyV2l0aDIpKTsKQEAgLTQzNSw3ICs0MzUsNyBAQCBURVNU
KFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRl
cikKICAgICBBU1NFUlRfRVEocHRyV2l0aDQsIGxpc3QubGFzdCgpLmdldCgpKTsKICAgICBBU1NF
UlRfRVEoNCwgKmxpc3QubGFzdCgpLmdldCgpKTsKIAotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDMg
PSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMyk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMyk7CiAgICAgYXV0byBwdHJXaXRo
MyA9IHVuaXF1ZVB0cldpdGgzLmdldCgpOwogCiAgICAgbGlzdC5pbnNlcnRCZWZvcmUocHRyV2l0
aDQsIFdURk1vdmUodW5pcXVlUHRyV2l0aDMpKTsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBURVNUKFdU
Rl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAg
IExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGF1dG8qIHB0ciA9IHVuaXF1
ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCmluZGV4IDJkY2NlZGNhZGNjNmMyMjI3M2RlYmMy
MGYzZmY2NzdjODczMjkwMjcuLjVmZDMxYmYxYzlhYmVjZmI4YWJlNzM1NjA4YTQ3YzU2MDQzMDQ3
NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCkBAIC00Miw5ICs0Miw5
IEBAIHN0cnVjdCBMb2NrSW5zcGVjdG9yIHsKIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPgog
dm9pZCBydW5Mb2NrVGVzdCh1bnNpZ25lZCBudW1UaHJlYWRHcm91cHMsIHVuc2lnbmVkIG51bVRo
cmVhZHNQZXJHcm91cCwgdW5zaWduZWQgd29ya1BlckNyaXRpY2FsU2VjdGlvbiwgdW5zaWduZWQg
bnVtSXRlcmF0aW9ucykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9ja3Mg
PSBzdGQ6Om1ha2VfdW5pcXVlPExvY2tUeXBlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8ZG91YmxlW10+
KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+
IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdy
b3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPExvY2tUeXBl
W10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8TG9ja1R5cGVbXT4o
bnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlW10+IHdvcmRzID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8ZG91YmxlW10+KG51bVRocmVhZEdyb3Vw
cyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRH
cm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAgZm9yICh1bnNpZ25lZCB0aHJlYWRH
cm91cEluZGV4ID0gbnVtVGhyZWFkR3JvdXBzOyB0aHJlYWRHcm91cEluZGV4LS07KSB7CiAgICAg
ICAgIHdvcmRzW3RocmVhZEdyb3VwSW5kZXhdID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKaW5kZXggNDUyZTIyNzcxZGMwNjRhZGFhZmU2MjBlYjMz
ZTgwMTMwZjc5ZjE5Ny4uZTAwYTA5YjJhMTdhYTczNDg1NmU0MmMxMTQ1Y2JlNjA4NjNmMGEwNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKQEAgLTE4
Miw3ICsxODIsNyBAQCBzdHJ1Y3QgU2luZ2xlTGF0Y2hUZXN0IHsKIAogdm9pZCBydW5QYXJraW5n
VGVzdCh1bnNpZ25lZCBudW1MYXRjaGVzLCB1bnNpZ25lZCBkZWxheSwgdW5zaWduZWQgbnVtVGhy
ZWFkcywgdW5zaWduZWQgbnVtU2luZ2xlVW5wYXJrcykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxTaW5nbGVMYXRjaFRl
c3RbXT4obnVtTGF0Y2hlcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNpbmdsZUxhdGNoVGVzdFtd
PiB0ZXN0cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFNpbmdsZUxhdGNoVGVz
dFtdPihudW1MYXRjaGVzKTsKIAogICAgIGZvciAodW5zaWduZWQgbGF0Y2hJbmRleCA9IG51bUxh
dGNoZXM7IGxhdGNoSW5kZXgtLTspCiAgICAgICAgIHRlc3RzW2xhdGNoSW5kZXhdLmluaXRpYWxp
emUobnVtVGhyZWFkcyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWZDb3VudGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50
ZXIuY3BwCmluZGV4IDA4MWRmOWU0ZmMxZDI1MWQ4MTRiMjI2NGJkMmQwZTA1MmMwYmQ0MWYuLmY0
ZWY5ODNiMWE5ZmJlODk4MDdjNzVhYzI4ZmRiNjI2ZDlhOTZhMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgVEVT
VChXVEYsIFJlZkNvdW50ZXIpCiBURVNUKFdURiwgUmVmQ291bnRlckRlbGV0ZUNvdW50ZXJXaXRo
T3V0c3RhbmRpbmdUb2tlbnMpCiB7CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVz
dENvdW50ZXI+IGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RDb3VudGVyPihbJl0oUmVm
Q291bnRlckV2ZW50IGV2ZW50KSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRl
cj4gY291bnRlciA9IG1ha2VVbmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZDb3VudGVyRXZlbnQg
ZXZlbnQpIHsKICAgICAgICAgICAgIGlmICghY291bnRlci0+dmFsdWUoKSkKICAgICAgICAgICAg
ICAgICBjb3VudGVyID0gbnVsbHB0cjsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAppbmRleCA0ZDJiMjJhYTU0ZjhiMDI1NDgwZjU5ZTU2
MWEzY2NlNzE1NTAyMzEyLi4xYWZlM2U5Nzc5YmI4NDg4N2U5NDMwZGU0MTcyNmM3NDM4NTMyZmRj
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKQEAgLTMw
LDggKzMwLDExIEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKICAgICAKLWNsYXNzIEEg
eyB9OworY2xhc3MgQSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cit9OwogY2xhc3Mg
QiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQihpbnQgYSwg
aW50IGIsIGludCBjKQogICAgICAgICA6IGEoYSkKQEAgLTQzLDYgKzQ2LDcgQEAgY2xhc3MgQiB7
CiAgICAgaW50IGM7CiB9OwogY2xhc3MgQyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQyhVbmlxdWVSZWY8QT4mJiBhKQogICAgICAgICA6IGEoV1RGTW92ZShh
KSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKaW5kZXggMGVmMWYx
ZGE0NGJhYzUxNTRmZmZkMzMyMTM5NWU5ZjFlMmQyYTdjMi4uNTFlY2EwNzY4ZDJjY2UxYzlhMzI5
NTU1MmQzNTAwOWZmNGZkNTZiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVmFyaWFudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFy
aWFudC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBURVNUKFdURl9WYXJpYW50LCBDb25zdHJ1Y3Rv
ckRlc3RydWN0b3IpCiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6VGVzdGluZ1Nj
b3BlIHNjb3BlOwogCiAgICAgewotICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICAgICAgYXV0byB1bmlx
dWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAg
ICAgIFZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
LCBpbnQ+IHYgPSBXVEZNb3ZlKHVuaXF1ZVB0cik7CiAKICAgICAgICAgRVhQRUNUX0VRKDF1LCBD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCmluZGV4IDE1MGI5Yjc2YzhhNTY1ZTM2
NTU0ODM2ZTBiYmVjMDUwNWM3ODQ4ZjIuLjdlNjMwNjkzZWVjNjA0MWEzNzUwNDRhZjk0OWQ4NzQ2
YjY5NWNhNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQ
dHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCkBA
IC01MCw2ICs1MCw3IEBAIHN0cnVjdCBJbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW50PiB7
CiB9OwogCiBjbGFzcyBCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEJhc2U+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCYXNlKCkgeyB9CiAKQEAgLTU3
OCwxMCArNTc5LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQog
ICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICBF
WFBFQ1RfVFJVRShpbml0aWFsQ2FwYWNpdHkgLyBtYXhMb2FkQ2FwKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXA7ICsraSkgewot
ICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAg
ICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdl
YWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1v
dmUob2JqZWN0KSk7Ci0gICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8QmFzZT4oKSk7CisgICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKG1ha2VVbmlx
dWU8QmFzZT4oKSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7
CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKHNfYmFzZVdlYWtSZWZlcmVuY2VzLCBvdGhl
ck9iamVjdHMuc2l6ZSgpKTsKQEAgLTYxNSw3ICs2MTYsNyBAQCBURVNUKFdURl9XZWFrUHRyLCBX
ZWFrSGFzaFNldEV4cGFuc2lvbikKICAgICAgICAgRVhQRUNUX0VRKHdlYWtIYXNoU2V0LmNhcGFj
aXR5KCksIDB1KTsKICAgICAgICAgdW5zaWduZWQgb2JqZWN0Q291bnQgPSBpbml0aWFsQ2FwYWNp
dHkgKiAyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7ICsr
aSkgewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7
CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAg
ICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5k
KFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3Rl
bmN5KCk7CkBAIC02NjcsMTAgKzY2OCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNl
dENvbXB1dGVzRW1wdHkpCiAgICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFz
aFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAg
ICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAg
ICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hh
c2hTZXQuYWRkKCpmaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8g
b2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBvYmpl
Y3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9i
amVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAg
ICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IGZpcnN0T2JqZWN0Lmdl
dCgpKTsKQEAgLTczNCw4ICs3MzUsOCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENv
bXB1dGVTaXplKQogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4g
d2Vha0hhc2hTZXQ7Ci0gICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJhc2U+KCk7Ci0gICAgICAgIGF1dG8gbGFzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFz
ZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKKyAg
ICAgICAgYXV0byBsYXN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFr
SGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpsYXN0
T2JqZWN0KTsKICAgICAgICAgaWYgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgIT0gZmlyc3RP
YmplY3QuZ2V0KCkpCkBAIC03NTksMTAgKzc2MCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFr
SGFzaFNldENvbXB1dGVTaXplKQogICAgIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vh
a0hhc2hTZXQ7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzZT4+IG9iamVjdHM7
Ci0gICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7
CisgICAgICAgIGF1dG8gbm9uRmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAg
ICAgIHdlYWtIYXNoU2V0LmFkZCgqbm9uRmlyc3RPYmplY3QpOwogICAgICAgICBkbyB7Ci0gICAg
ICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAg
ICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hh
c2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShv
YmplY3QpKTsKICAgICAgICAgfSB3aGlsZSAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSA9PSBu
b25GaXJzdE9iamVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCmluZGV4IDJhYWI2NWRkOGZkN2VmMDcwNTFmYjZmNzU2
NzU4Y2RlNzAyZTA3YTEuLjgxZDdiYTI5MWFlOWY0YWI3Y2YyZTVmOWFhZDYyYzk0MjQzNTM2NzIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZm
ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZm
ZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAg
IFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPENBUmluZ0J1ZmZlcj4oKTsKICAgICB9CiAK
ICAgICAvLyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oZG91YmxlIHNhbXBsZVJhdGUsIFVJbnQz
MiBudW1DaGFubmVscywgUENNRm9ybWF0IGZvcm1hdCwgYm9vbCBpc0ludGVybGVhdmVkLCBzaXpl
X3QgY2FwYWNpdHkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNzc4ZTYxNTVmMDZjYzEyODM5Nzk3NWYwNDU4
NzEyYTJjNzEwNDBmYS4uZGNhNDYzNjAyZTk2ZDYwYTA0NTEzODEyMWNiYmRjZWZiZWU5ZTVjMiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9u
VmFsdWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxh
dGlvblZhbHVlLmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiBzdGF0aWMgdW5zaWduZWQgZGVsZXRpb25Db3VudDsKIAogY2xhc3MgQ2FsY3VsYXRpb25EZWxl
dGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FsY3VsYXRp
b25EZWxldGlvblRlc3ROb2RlKCkKICAgICB7CkBAIC01Miw3ICs1Myw3IEBAIGNsYXNzIENhbGN1
bGF0aW9uRGVsZXRpb25UZXN0Tm9kZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbk5v
ZGUgewogCiBzdGF0aWMgUmVmPFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZVRlc3RW
YWx1ZSgpCiB7Ci0gICAgYXV0byBub2RlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjdWxhdGlvbkRl
bGV0aW9uVGVzdE5vZGU+KCk7CisgICAgYXV0byBub2RlID0gbWFrZVVuaXF1ZTxDYWxjdWxhdGlv
bkRlbGV0aW9uVGVzdE5vZGU+KCk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFs
dWU6OmNyZWF0ZShXVEZNb3ZlKG5vZGUpLCBXZWJDb3JlOjpWYWx1ZVJhbmdlQWxsKTsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNz
YWdlVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1l
c3NhZ2VUZXN0LmNwcAppbmRleCBmNThkYThhNDIwNzNlYzk5YmJlZTM0YTg1YmVjMzRjMDg1YzUy
YTY0Li4wYzFhMDY5ZjEzYzM5YzQwOWU1ZDVlMWIwM2E3ZTkyYmY5YjM2NmMyIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VU
ZXN0LmNwcApAQCAtNDgsMTAgKzQ4LDEwIEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0
UGFja2V0U2l6ZSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweDA1MDYwNzA4OwogICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhOwogCi0gICAgYXV0byBpbml0UGFja2V0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6
a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5p
dFBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgRmlkb0hp
ZERldmljZUNvbW1hbmQ6OmtJbml0LCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgp
KTsKICAgICBFWFBFQ1RfRVEoNjR1LCBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpLnNp
emUoKSk7CiAKLSAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8
Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsK
KyAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVh
dGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsKICAgICBFWFBFQ1RfRVEo
NjR1LCBjb250aW51YXRpb25QYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKIH0K
IApAQCAtNzAsNyArNzAsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldERh
dGEpCiAgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHhGNTA2MDcwODsKICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBjbWQgPSBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7Ci0gICAgYXV0byBpbml0UGFja2V0ID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90
PihkYXRhKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5pdFBhY2tldCA9IG1ha2VVbmlxdWU8
Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBWZWN0b3I8dWludDhfdD4oZGF0YSks
IGRhdGEuc2l6ZSgpKTsKICAgICBzaXplX3QgaW5kZXggPSAwOwogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHNlcmlhbGl6ZWQgPSBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpAQCAtOTQs
NyArOTQsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldENvbnN0cnVjdG9y
cykKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2aWNl
Q29tbWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7CiAgICAgc2l6ZV90IGxl
bmd0aCA9IGRhdGEuc2l6ZSgpOwotICAgIGF1dG8gb3JpZ1BhY2tldCA9IHN0ZDo6bWFrZV91bmlx
dWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5n
dGgpOworICAgIGF1dG8gb3JpZ1BhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+
KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5ndGgpOwogCiAgICAgc2l6ZV90IHBh
eWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG9yaWdQYWNrZXQtPnBheWxvYWRMZW5n
dGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9yaWdEYXRhID0gb3JpZ1BhY2tldC0+Z2V0U2Vy
aWFsaXplZERhdGEoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RmlsZU1vbml0b3IuY3BwCmluZGV4IDFlZDEzMjhmODEzMDllMTJlMTM3MWNiM2FkZmU2YjBhOTc4
M2VlYjYuLjIyODM4M2EwZjMwYTliMTM5ZjZhYWY0M2Y5NWNlZGQ4MDkxNjZlNmEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZSkKIAog
ICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIp
OwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVt
cEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0
b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6
OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpG
aWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMTkwLDcgKzE5MCw3IEBAIFRFU1RfRihG
aWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdlcykKIAogICAgIGF1dG8gdGVzdFF1
ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBt
b25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRl
c3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
eworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0
aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBl
IHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3
aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6
TW9kaWZpY2F0aW9uOgpAQCAtMjUwLDcgKzI1MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3Qs
IERldGVjdERlbGV0aW9uKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0
ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10g
KEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0g
bWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVm
KCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAg
IGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yODks
NyArMjg5LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlQW5kVGhlbkRl
bGV0ZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29y
ayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9u
aXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8
RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmls
ZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgY2FzZSBG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTM0Niw3ICszNDYs
NyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50
Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBX
b3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVN
b25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1
ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNl
IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRleCA5MmQ4
YTE5MmNhN2IyYTEwODE1NjU5OTdiMGVhNWIxZjlhZWE4ZjY1Li4yMTllOTY2ZGJlYmFhODRkMzYw
MjcyMmU5NTllMzJmNjRmYjRkYjJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBDdXJs
Q29va2llczogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHsKICAgICAgICAgbV9jb29raWVE
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKIAotICAg
ICAgICBtX2Nvb2tpZUphciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwg
ImNvb2tpZWRiLnNxbCIpKTsKKyAgICAgICAgbV9jb29raWVKYXIgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OkNvb2tpZUphckRCPihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9j
b29raWVEaXJlY3RvcnksICJjb29raWVkYi5zcWwiKSk7CiAgICAgICAgIG1fY29va2llSmFyLT5v
cGVuKCk7CiAgICAgICAgIG1fY29va2llSmFyLT5zZXRBY2NlcHRQb2xpY3koQ29va2llQWNjZXB0
UG9saWN5OjpBbHdheXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKaW5kZXgg
NWMwYWUzMzEzMjhiMzZiMGJhNzBhMThkOTkzNjY5NDEyYWNhMjlhOS4uYjNiM2JjM2NmNDlkNzg1
NDMwNTg0OWRkYTEyMTJmMTkzMmEwZDIwZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJl
ZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsKICAgICBFWFBFQ1Rf
VFJVRShvcGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVkV2ViVmlldyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBvcGVuZWRXZWJWaWV3
ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQYWdlVUlDbGll
bnRWNSB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxl
cnRzU1BJLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRz
U1BJLmNwcAppbmRleCBhNGZiYTEyN2M2ZTRkMDNlNjNkOWE4MTcyYTM5YjNjYjhiMTQ3MmM3Li43
YmMzNTI0ZjJiZGI5ZGJkN2E0MzVhM2NjNmFkMzgzMmU5NDRlZGQ1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdl
LCBXS1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsKICAgICBFWFBFQ1RfVFJVRShv
cGVuZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVkV2ViVmlldyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBvcGVuZWRXZWJWaWV3ID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQYWdlVUlDbGllbnRWNSB1
aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJl
Z2luQW5kRW5kRWRpdGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9U
ZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCmluZGV4IDBmN2ZkNDBhNjNlNWVjZjc4
Yzk2OGRmODAzOGQxOTIyMWVkYmY3ZDUuLmNkMTlkN2NkZTU4ODk2MjVmMTIyMTJmYzc1M2NmZDU1
ZTI3OGQ5MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Rl
eHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcApAQCAtOTcs
NyArOTcsNyBAQCBzdHJ1Y3QgV2ViS2l0MlRleHRGaWVsZEJlZ2luQW5kRWRpdEVkaXRpbmdUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLQ29udGV4
dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVu
ZGxlVGVzdCgiVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nRXZlbnRzVGVzdCIpKTsKICAg
ICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAg
ICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0
LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihj
b250ZXh0LmdldCgpKTsKICAgICAgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LT5wYWdl
KCksIHRoaXMpOwogCiAgICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcAppbmRleCBjN2IwMjUx
YmZjZjIxYWE0YWJkMTE0Yzg1NTA3OTI0MWQ2NjE3NGU5Li45ZGMzYTZkYTk5NTA5YzI3MTEyMWQ0
YzNhNDUzMDg0ZmVlOTg5YmQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvVXNlck1lc3NhZ2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFdlYktpdDJVc2Vy
TWVzc2FnZVJvdW5kVHJpcFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAg
Y29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVz
dCgiVXNlck1lc3NhZ2VUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChj
b250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBzZXRQYWdl
TG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAgZGlkRmluaXNo
TG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvV2lsbExvYWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExv
YWQuY3BwCmluZGV4IGVkOWYwZmZjNzAyNWFiMTJjYjUzOTY3ZjcyMDVmZjk2Yzg5YmU2OTkuLjUy
ZjE4ZGNlYjQyZDUxYWMwODM5NWI2MjAwMWQ0YTk1NDBmNzQ1MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgY2xh
c3MgV2ViS2l0MldpbGxMb2FkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAg
ICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVU
ZXN0KCJXaWxsTG9hZFRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNv
bnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtl
VW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgZGlkUmVj
ZWl2ZU1lc3NhZ2UgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVh
cmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KaW5kZXggYWViYTFjMzQ4ZmJjNjZhMTcwZTUzOWUwYTcy
ODZhZWU5MTUzZTYwNC4uMjkxYTQ3OGEyNzg0MjQyZGFkNDVhM2E4ZjE3MzkwNWQ3ZDNiMmYyMSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGln
aHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQpA
QCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gYWRv
cHQoSlNWYWx1ZVRvU3RyaW5nQ29weShzY3JpcHRDb250ZXh0LCByZXN1bHQsIG51bGxwdHIpKTsK
IAogICAgICAgICBhdXRvIGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmlu
Z1NpemUocmVzdWx0U3RyaW5nLmdldCgpKTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICAg
ICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhyZXN1bHRTdHJpbmcuZ2V0KCksIGJ1ZmZlci5nZXQo
KSwgYnVmZmVyU2l6ZSk7CiAKICAgICAgICAgV0tCdW5kbGVQYWdlU2V0VXNlRGFya0FwcGVhcmFu
Y2UobV9wYWdlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKaW5kZXggZDZjYzJmYjI0N2U1
NjIwNjY5Nzc2MTBiMjU2NzliN2VkMWRjYzhiYS4uN2M4YzhiNTIxNTRhYzRlYjA5OGU2OTUxNzkw
NjlhMDVlYmRjNjZhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKQEAgLTI1Niw2ICsyNTYsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uRW1wdHlSZWFsbShBdXRoZW50
aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogfQogCiBjbGFzcyBUdW5uZWwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFR1bm5lbChTb3VwU2VydmVyKiBzZXJ2
ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICA6IG1fc2VydmVyKHNlcnZlcikKQEAg
LTI5OSw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBz
ZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogewogICAgIGlmIChtZXNz
YWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfQ09OTkVDVCkgewogICAgICAgICBnX2Fzc2VydF9j
bXB1aW50KHNvdXBfc2VydmVyX2dldF9wb3J0KHNlcnZlciksID09LCBnUHJveHlTZXJ2ZXJQb3J0
KTsKLSAgICAgICAgYXV0byB0dW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFR1bm5lbD4oc2VydmVy
LCBtZXNzYWdlKTsKKyAgICAgICAgYXV0byB0dW5uZWwgPSBtYWtlVW5pcXVlPFR1bm5lbD4oc2Vy
dmVyLCBtZXNzYWdlKTsKICAgICAgICAgYXV0byogdHVubmVsUHRyID0gdHVubmVsLmdldCgpOwog
ICAgICAgICB0dW5uZWxQdHItPmNvbm5lY3QoW3R1bm5lbCA9IFdURk1vdmUodHVubmVsKV0oY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7
CkBAIC0zOTQsNyArMzk1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlv
blByb3h5KFByb3h5QXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3QKIAogc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRUUFMoUHJveHlBdXRoZW50aWNhdGlv
blRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgYXV0byBodHRwc1NlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVy
SFRUUFMpOworICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdFRlc3RTZXJ2
ZXI+KFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFBTKTsKICAgICBodHRwc1NlcnZlci0+cnVu
KHNlcnZlckNhbGxiYWNrKTsKIAogICAgIHRlc3QtPmxvYWRVUkkoaHR0cHNTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9wcm94eS9hdXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCmluZGV4
IDdhNDRjYjA1Y2Q0YmMwMjdlMTJkMTEwM2ZhZjZhMDA3YWM2ZjQwZjMuLmI2YjcyOGU0NWUwOWM1
MWE2ZDZiYTk5YmY3MTdlMTk1ZTlhMGUwYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjZW5kaWYKIAogY2xhc3MgV2ViUHJvY2Vzc1Rlc3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYlByb2Nlc3NUZXN0KCkgeyB9CiAgICAg
dmlydHVhbCBib29sIHJ1blRlc3QoY29uc3QgY2hhciogdGVzdE5hbWUsIFdlYktpdFdlYlBhZ2Uq
KSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9E
T01ET01XaW5kb3dUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L0RPTURPTVdpbmRvd1Rlc3QuY3BwCmluZGV4IDEyNTYyNDE5NmE3MWM2ZDNhZDViY2RkMjlmMTQy
Yjg2YWJiOWZkMTEuLmU0MDAwNzYzM2YyMzYyNDA1MjlkZjU0YWU4NjMyMDg3YmQzNjk1MmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRv
d1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURP
TVdpbmRvd1Rlc3QuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBjbGlja2Vk
Q2FsbGJhY2soV2ViS2l0RE9NRE9NV2luZG93KiwgV2ViS2l0RE9NRXZlbnQqLCBXZWJLaXRET01E
CiAKIGNsYXNzIFdlYktpdERPTURPTVdpbmRvd1Rlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3Qg
ewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNy
ZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4o
KTsgfQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgp
IHsgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQogCiBwcml2
YXRlOgogICAgIGd1aW50NjQgd2ViUGFnZUZyb21BcmdzKEdWYXJpYW50KiBhcmdzKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCmlu
ZGV4IDhkMmVlOGFkMTZjYWQ2Nzk1NjhlZDliNmQ3NWNlY2Q4MjE1MGZlZGIuLjM0OTBlZjFjZWI2
ZjE3ODA1MDJmMGNkYzkxOWM5NzFlMjkyYmU5MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KQEAgLTM4LDcgKzM4LDcgQEAg
c3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJpbmcgKnN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKCk7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFtzdHJpbmcgbGVuZ3RoT2ZCeXRl
c1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgIGF1dG8gYnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAg
ICBOU1VJbnRlZ2VyIHN0cmluZ0xlbmd0aDsKICAgICBbc3RyaW5nIGdldEJ5dGVzOmJ1ZmZlci5n
ZXQoKSBtYXhMZW5ndGg6YnVmZmVyU2l6ZSB1c2VkTGVuZ3RoOiZzdHJpbmdMZW5ndGggZW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmcgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtz
dHJpbmcgbGVuZ3RoXSkgcmVtYWluaW5nUmFuZ2U6MF07CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5n
KGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbQppbmRleCA1NDZjYTZlMjIyZDlmZWE4MWNlN2JlNGUyYzJkMzk4NWM1
YjQ0ZjBmLi4yNDc1NzI4OThiNmE4NzljN2EzNmI0ZmM2NWI5MTUzMzA0NzBmZmQwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yOTQsNyArMjk0LDcg
QEAgc3RhdGljIHZvaWQgYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3Ry
aW5nc1RvSXRlbVByb3ZpZGVycygpCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc01l
dGhvZFN3aXp6bGVyPiBzd2l6emxlcjsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHN3aXp6bGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJp
bmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRl
ciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Q
cm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CisgICAgICAgIHN3aXp6bGVyID0gbWFrZVVuaXF1
ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rv
cih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJs
aWNSVEZEKSk7CiAgICAgfSk7CiB9CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0Nv
bmZpZ3VyYXRpbwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzUyMDQ+IGlz
IGZpeGVkLgotICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hh
cmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJh
cikpOworICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0
aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91
dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOwogICAg
IF9pbnB1dFNlc3Npb25DaGFuZ2VDb3VudCA9IDA7CiAgICAgYXBwbHlXb3JrYXJvdW5kVG9BbGxv
d1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmgKaW5kZXggNjkwZjBhNzc1NmNmZTNhZmIwN2Q5MGJlZWZmMDk1NzhiMmZjNTVkZS4uMjgx
NDUyN2YxOWI5NTRmODJhZWI4N2JjMGU0YzhkYzBiOWE3ZjViNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaApAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogY2xhc3MgV2Vi
S2l0VGVzdFNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAK
ICAgICBlbnVtIFNlcnZlck9wdGlvbnMgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZv
bnRPcHRpb25zLm1tCmluZGV4IDg2MjYzNTQ0MzM1YTdmNWQ5NzFiNWRjMGQyNTllNTVkYzBkNzNj
NjYuLjRiZGU2YzUxMDBkMmJkNmZlNGJiOTBmYWNiZTI1ZDMzOWE1MDU0YmIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KQEAgLTg0LDcgKzg0LDcgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRm9udE9wdGlvbnM6KE5TRm9udE9wdGlvbnMgKilmb250T3B0
aW9ucwogCiAgICAgX3NoYWRvd09mZnNldCA9IENHU2l6ZVplcm87CiAgICAgX3NoYWRvd0JsdXJS
YWRpdXMgPSAwOwotICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRp
b25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKKyAgICBfcmVwbGFjZUZvbnRPcHRpb25z
U3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQ2xhc3NGcm9tU3Ry
aW5nKEAiTlNGb250T3B0aW9ucyIpLCBAc2VsZWN0b3Ioc2hhcmVkRm9udE9wdGlvbnMpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc2hhcmVkRm9udE9wdGlvbnNGb3JUZXN0aW5nKSk7CiAgICAgX2hh
c1BlbmRpbmdTaGFkb3dDaGFuZ2VzID0gTk87CiAgICAgX2hhc011bHRpcGxlRm9udHMgPSBOTzsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAppbmRleCAxNTMyMjE4
MjY5OWUwZWEzMDc1NGEwMjI2YzNhN2I2Mjk1OTc2ZDAwLi4xMTM5OWIzOTBmZTkxNzBmNmM1MjUy
NzVhYzIzNDU4MmRhZjc1MGY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2
ZW50U2VuZGVyUHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaApAQCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgV1RSRXZlbnRRdWV1ZUl0ZW07CiAjZW5k
aWYKIAogY2xhc3MgRXZlbnRTZW5kZXJQcm94eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxl
ciopOwogICAgIH5FdmVudFNlbmRlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKaW5kZXggN2Q5NDVkNjdlYzY3NTBiZTcwNjQz
NWEyYTZiM2M3NGQxYWQxNzQzYy4uMWVkNGFkZjliMzkzOTNhMzMzYWEzMjUxMDk3YjllM2FhNDJj
YzM2YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3Zp
ZGVyTW9jay5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRl
ck1vY2suaApAQCAtMjcsMTAgKzI3LDEyIEBACiAjZGVmaW5lIEdlb2xvY2F0aW9uUHJvdmlkZXJN
b2NrX2gKIAogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBHZW9sb2NhdGlvblByb3Zp
ZGVyTW9jayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR2Vv
bG9jYXRpb25Qcm92aWRlck1vY2soV0tDb250ZXh0UmVmKTsKICAgICB+R2VvbG9jYXRpb25Qcm92
aWRlck1vY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCBlMTIwN2ZjZWZi
ZDY5NjI2ZDg4YWQ4ZjZjZWRiMGI1MjZiYjJkZTUzLi4yMmFjOTQ3NzM5NWIxOWU4ZGZjOGRmMTc5
NGFkNDJlZDhmNTc2ZDkwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgogI2luY2x1ZGUg
IkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4K
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgog
I2lmIFVTRShBVEspCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJB
dGsuaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
RXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDFmOWQzZWZjOTY0ZmIx
Mzc3YmM2NjNjMDE2MGMzNGE4OGIyMzI4YTYuLmM5YTUyYzE1Zjc3MDgzMDY4M2M4ZWZmNjg5NDI5
YmQwYmMxZjU2NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcApAQCAtNjEyLDYg
KzYxMiw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW9uaXRvcldoZWVsRXZlbnRz
KCkKIH0KIAogc3RydWN0IFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBKU0NvbnRleHRSZWYgbV9jb250ZXh0Owog
ICAgIEpTT2JqZWN0UmVmIG1fZnVuY3Rpb247CiAKQEAgLTY0Nyw3ICs2NDgsNyBAQCB2b2lkIEV2
ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhKU1ZhbHVl
UmVmIGZ1bmN0aW9uQ2FsbAogICAgIAogICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRleHQsIGZ1bmN0
aW9uQ2FsbGJhY2tPYmplY3QpOwogCi0gICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhPihjb250
ZXh0LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsKKyAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25D
YWxsYmFja0RhdGEgPSBtYWtlVW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNv
bnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlv
bkNhbGxiYWNrRGF0YVB0ciA9IHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEucmVsZWFzZSgp
OwogICAgIGJvb2wgY2FsbGJhY2tXaWxsQmVDYWxsZWQgPSBXS0J1bmRsZVBhZ2VSZWdpc3RlclNj
cm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhwYWdlLCBleGVjdXRlQ2FsbGJhY2ssIHNj
cm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGFQdHIpOwogICAgIGlmICghY2FsbGJhY2tXaWxsQmVD
YWxsZWQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNzExNmNjOTgxNTY2OWQ5NDk0ZGJmOGRlNDhi
YWVlY2Q2Mzc0YzM3Ni4uODNiMmIzMGIxMzMyZWM3N2JmZWZjYzI5ZmRkMWEyZTQ4M2NiNWYyMyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxl
Ojppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9u
VXNlcgogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSkKIHsKICAgICBib29sIGlzTWFpblBhZ2UgPSBtX3BhZ2VzLmlzRW1wdHkoKTsKLSAgICBt
X3BhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkQnVuZGxlUGFnZT4ocGFnZSkp
OworICAgIG1fcGFnZXMuYXBwZW5kKG1ha2VVbmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdl
KSk7CiAKICAgICBzZXRVcEluamVjdGVkQnVuZGxlQ2xpZW50cyhwYWdlKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmgKaW5kZXggNTlkM2UxYjBkMDJlMjJjNTJmYTc2NTQzMzI5YzIzZjZiNjJhMzg5YS4u
YjMyM2MyNTA0NGY1NTAzNjA3NmY0OGVkZGQ0N2JjZWFhM2UyMGYxOCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgSW5qZWN0
ZWRCdW5kbGVQYWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmKTsKICAgICB+SW5qZWN0ZWRCdW5k
bGVQYWdlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAppbmRleCAxODYwZjE2OWU1MmFjMTI1OTNmYWVlMGU0NmUyZDA1MDQ4
ZGExNmJkLi43MjA2YjA4MjUwNjVhMDA3MzA3M2NhOGI1MDhkM2I0ZmEyMjM0MzY4IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKQEAgLTIzOTEsNyArMjM5MSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmls
ZXMoSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0KEpT
VmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBudWxscHRyKSk7CiAgICAgICAg
IHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUp
OwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZpbGVCdWZmZXIu
Z2V0KCksIGZpbGVCdWZmZXJTaXplKTsKIAogICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShmaWxl
VVJMcy5nZXQoKSwgYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhCYXNlVVJMKG1fdGVzdFVSTC5nZXQo
KSwgZmlsZUJ1ZmZlci5nZXQoKSkpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggMGU1YzA3Y2E3MjliNmRmY2IzOGM4MDQyNmQzOTI0NGUz
MmMwMDE3Yy4uMThlNTdkMmZjZjYyOTc2N2E3MzI5NzliYzJlZGM1N2FjZjEwOWNlMiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTczMCw3ICs3MzAs
NyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0VG9KU09iamVjdEFycmF5KGNvbnN0IFZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbQogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0g
V0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CiAKICAgICBzaXpl
X3QgZWxlbWVudENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgIGF1dG8gdmFsdWVFbGVtZW50
cyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOworICAgIGF1
dG8gdmFsdWVFbGVtZW50cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEpTVmFs
dWVSZWZbXT4oZWxlbWVudENvdW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1l
bnRDb3VudDsgaSsrKQogICAgICAgICB2YWx1ZUVsZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNv
bnRleHQsIGNoaWxkcmVuW2ldLT53cmFwcGVyQ2xhc3MoKSwgY2hpbGRyZW5baV0uZ2V0KCkpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCBmNzRjYzJkMzkz
ZDUzMDVmZDM2NjViYjBlMGEzNTUxODQ0NzMxMDlmLi5jYTRmZGJkNzIyMTVhZjQ4YmRhOTY3ZDVi
Y2FiNDgxNTZiYWRjYzcxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGVzdE9wdGlv
bnMuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmICFkZWZpbmVkKEJVSUxESU5HX0dUS19fKQogI2luY2x1ZGUgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KQEAgLTY0LDYgKzY1LDcgQEAgdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIFBsYXRmb3Jt
SW1hZ2U7CiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBQbGF0Zm9ybVdlYlZpZXcoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiosIGNvbnN0IFRlc3RPcHRp
b25zJik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9u
cy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaAppbmRleCBkYWYx
NGNhNzA1NDg2YmZjMjA2NDMxMjNkZTUwOTFiNzllNWQwMTMxLi5iYmExN2MyZWZmYjA5NjY1ZWZj
MjhlZWI2OWU3MjMyOWIxZDY5Yjc0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1N0cmluZ0Z1bmN0aW9ucy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVu
Y3Rpb25zLmgKQEAgLTczLDcgKzczLDcgQEAgaW5saW5lIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiB0b0pTKGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIHN0
ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1
dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1
dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZm
ZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmlu
ZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CkBAIC04Niw3ICs4Niw3IEBA
IGlubGluZSBzdGQ6OnN0cmluZyB0b1NURChjb25zdCBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4m
IHN0cmluZykKIGlubGluZSBXVEY6OlN0cmluZyB0b1dURlN0cmluZyhXS1N0cmluZ1JlZiBzdHJp
bmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0
cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hh
cltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0
aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25TdHJpY3Qoc3RyaW5nLCBidWZmZXIuZ2V0KCks
IGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBXVEY6OlN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4x
RmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOGU3MzNiZWVkODBkNGEwNWUzNWUz
YzBlZjMxMmMzOWVmNGRkMzM1My4uODgxYjMwOWE3MjVjY2E4MGZmMzgxODJmMGNhNzkzOWFmZGYy
YTAwNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ3
OSw3ICs0NzksNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBj
b25zdCBjaGFyKiBhcmd2W10pCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBhZ2VHcm91
cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJL
aXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAgIG1fcGFnZUdyb3VwLmFkb3B0KFdLUGFnZUdy
b3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdyb3VwSWRlbnRpZmllci5nZXQoKSkpOwogCi0g
ICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5
Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVy
UHJveHk+KHRoaXMpOwogfQogCiBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
PiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0
T3B0aW9uczo6Q29udGV4dE9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CkBAIC01MjEsNyArNTIxLDcg
QEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6Omdl
bmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY28KICAgICAgICAgbV9jb250ZXh0ID0gcGxhdGZvcm1B
ZGp1c3RDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oY29u
dGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpKS5nZXQoKSwgY29udGV4dENvbmZpZ3VyYXRpb24uZ2V0
KCkpOwogICAgICAgICBtX2NvbnRleHRPcHRpb25zID0gb3B0aW9ucy5jb250ZXh0T3B0aW9uczsK
IAotICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xv
Y2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX2dlb2xvY2F0
aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRl
eHQuZ2V0KCkpOwogCiAgICAgICAgIGlmIChjb25zdCBjaGFyKiBkdW1wUmVuZGVyVHJlZVRlbXAg
PSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKSkgewogICAgICAgICAgICAgU3RyaW5nIHRlbXBvcmFy
eUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKQEAgLTk1Miw3
ICs5NTIsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFs
dWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIC8vIEZJWE1FOiBUaGlzIGZ1
bmN0aW9uIHNob3VsZCBhbHNvIGVuc3VyZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHBhZ2Ugb3Bl
bi4KIAogICAgIC8vIFJlc2V0IHRoZSBFdmVudFNlbmRlciBmb3IgZWFjaCB0ZXN0LgotICAgIG1f
ZXZlbnRTZW5kZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhp
cyk7CisgICAgbV9ldmVudFNlbmRlclByb3h5ID0gbWFrZVVuaXF1ZTxFdmVudFNlbmRlclByb3h5
Pih0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBJcyB0aGlzIG5lZWRlZD8gTm90aGluZyBpbiBUZXN0
Q29udHJvbGxlciBjaGFuZ2VzIHByZWZlcmVuY2VzIGR1cmluZyB0ZXN0cywgYW5kIGlmIHRoZXJl
IGlzCiAgICAgLy8gc29tZSBvdGhlciBjb2RlIGRvaW5nIHRoaXMsIGl0IHNob3VsZCBwcm9iYWJs
eSBiZSByZXNwb25zaWJsZSBmb3IgY2xlYW51cCB0b28uCkBAIC0xMjM1LDExICsxMjM1LDExIEBA
IHN0YXRpYyBXS1VSTFJlZiBjcmVhdGVUZXN0VVJMKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGJ1ZmZlcjsKICAgICBpZiAoaXNBYnNvbHV0ZVBh
dGgpIHsKLSAgICAgICAgYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExl
bmd0aCArIGxlbmd0aCArIDEpOworICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOwogICAgICAg
ICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKICAgICAgICAgc3RyY3B5KGJ1ZmZl
ci5nZXQoKSArIHByZWZpeExlbmd0aCwgcGF0aE9yVVJMKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgUEFUSF9N
QVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHBhdGhTZXBhcmF0b3IKKyAgICAgICAgYnVm
ZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihwcmVmaXhMZW5n
dGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFyYXRvcgog
ICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKICAgICAgICAgaWYgKCFn
ZXRjd2QoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBQQVRIX01BWCkpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKQEAgLTE2NDksNyArMTY0OSw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJ1
blRlc3QoY29uc3QgY2hhciogaW5wdXRMaW5lKQogICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgPSB0
ZXN0T3B0aW9uc0ZvclRlc3QoY29tbWFuZCk7CiAKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4g
d2tVUkwgPSBhZG9wdFdLKGNyZWF0ZVRlc3RVUkwoY29tbWFuZC5wYXRoT3JVUkwuY19zdHIoKSkp
OwotICAgIG1fY3VycmVudEludm9jYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0
aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IG1h
a2VVbmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlm
IChjb21tYW5kLnNob3VsZER1bXBQaXhlbHMgfHwgbV9zaG91bGREdW1wUGl4ZWxzRm9yQWxsVGVz
dHMpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPnNldElzUGl4ZWxUZXN0KGNvbW1hbmQu
ZXhwZWN0ZWRQaXhlbEhhc2gpOwpAQCAtMjk2MSw3ICsyOTYxLDcgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpCiAKIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9u
UmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIG1f
bWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29uZmlndXJh
dGlvbiwgb3B0aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1X
ZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAogUGxhdGZvcm1XZWJWaWV3KiBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBw
YXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRl
c3RPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAppbmRleCAyOGFkMWVkODhhNjNmN2JkNmFmMWRkNTk5YWJmMjAwNjM0ODZlZmZiLi5hMzg2
ZTliODJiNDVmYTUwOTM2NjBiOTUxMDRhZTdjNmRmYmZjZDE0IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTY4NSw3ICsxNjg1LDcgQEAgdm9pZCBUZXN0
SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCwgdW5zaWduZWQg
c2NyaXB0Q2FsbGJhY2sKICAgICBtX3BlbmRpbmdVSVNjcmlwdEludm9jYXRpb25EYXRhID0gbnVs
bHB0cjsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAgIG1fVUlTY3JpcHRD
b250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAg
ICAgbV9VSVNjcmlwdENvbnRleHQgPSBtYWtlVW5pcXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMp
OwogICAgIAogICAgIG1fVUlTY3JpcHRDb250ZXh0LT5ydW5VSVNjcmlwdCh0b1dURlN0cmluZyhz
Y3JpcHQpLCBzY3JpcHRDYWxsYmFja0lEKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uaAppbmRleCA3ODgwZGQ4ZGY1NTJmYzlkODJiOTRkMWQyZjJkZGZkNmRmODJlYzJi
Li44NWIxYjAyMDZlYjg5MjI2ZTg2YzZiNDFhYjkzZTVkYjk1ZWJmZDkyIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2Ug
V1RSIHsKIAogY2xhc3MgVGVzdEludm9jYXRpb24gZmluYWwgOiBwdWJsaWMgVUlTY3JpcHRDb250
ZXh0RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFRlc3RJbnZvY2F0aW9uKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXN0
SW52b2NhdGlvbihXS1VSTFJlZiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCAwZmJm
OGVhNTIzZDM0OGQyNTZlY2M1MjMwNDJkZWEwMmZlY2RkMWRjLi4wZWJmN2JmZDAwMzlmNGVmODA5
MzJjMWViNTE5MmZmNTRlZTNjNGEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWYsIGNvbnN0IFRlc3RPcHQKICAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gX3NldEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6W19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVz
dEZyb21KU09OOnRleHQgbWFuaWZlc3RVUkw6bmlsIGRvY3VtZW50VVJMOm5pbF1dOwogICAgIH0K
IAotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4o
Y29waWVkQ29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9
IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBv
cHRpb25zKTsKICAgICBmaW5pc2hDcmVhdGluZ1BsYXRmb3JtV2ViVmlldyhtX21haW5XZWJWaWV3
LmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChvcHRpb25zLnB1bmNoT3V0V2hpdGVCYWNrZ3Jv
dW5kc0luRGFya01vZGUpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
c2V0RGVmYXVsdENhbGVuZGFyVHlwZShOU1N0cmluZyAqaWRlbnRpZmllcikKIHsKICAgICBtX292
ZXJyaWRkZW5DYWxlbmRhcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGlmICghbV9jYWxl
bmRhclN3aXp6bGVyKQotICAgICAgICBtX2NhbGVuZGFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0NhbGVuZGFyIGNsYXNzXSwgQHNlbGVjdG9yKGN1
cnJlbnRDYWxlbmRhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZENhbGVuZGFyKSk7
CisgICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6
emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsKIH0KIAogdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cmVzZXRDb250ZW50RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCmluZGV4IGRlNTc4ZjczZmMzNmVj
ZDE1ODljOTlmOGRiZjhmY2NjMzk4N2I0MmUuLmVmOWUzOGU3MjNiYWE5NWRmZmU3MGVjNWE4NzVj
ZmVjODRlMzI4NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50
U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50
U2VuZGVyUHJveHlHdGsuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgaW50IGdldEdES0tleVN5bUZv
cktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCBndWludCogbW9k
aWZpZXIKICAgICAgICAgcmV0dXJuIEdES19LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVy
U2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwg
YnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCA2
YTYxZGY4ZTM1ZDZmYTA4YzhiMTRjNTFhODIzYzYyZDA4MDVkNGQyLi5mM2M0MTdjN2ZiN2NhYTRk
ZTQ3NzdjN2E0OTRmNTNhZjMyYTE4YmZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0
T3B0aW9ucyYgb3B0CiAKICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmNsZWFyKCk7CiAg
ICAgaWYgKCFvcHRpb25zLnNob3VsZFByZXNlbnRQb3BvdmVycykgewotICAgICAgICBtX3ByZXNl
bnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9k
U3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3
Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKLSAgICAgICAgbV9wcmVz
ZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50
UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQ
b3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtl
VW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwg
QHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3Zl
cikpKTsKKyAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQobWFrZVVuaXF1
ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFzc10sIEBz
ZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJvd0RpcmVj
dGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZp
ZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwogICAgIH0KICAgICAKICAgICBCT09MIHNob3VsZFJl
c3RvcmVGaXJzdFJlc3BvbmRlciA9IE5POwpAQCAtMjY5LDkgKzI2OSw5IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCiAKICAgICBhdXRvIGNvbnRyb2xsZXJDbGFzcyA9IFVJS2V5Ym9hcmRJbnB1dE1v
ZGVDb250cm9sbGVyLmNsYXNzOwogICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnJlc2VydmVDYXBh
Y2l0eSgzKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxl
Y3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJy
ZW50SW5wdXRNb2RlKSkpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFz
cywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9j
YXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6
emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6
emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKKyAgICBtX2lucHV0
TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOworICAgIG1faW5w
dXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9k
U3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblBy
ZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUp
KSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8
SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZl
SW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2Rl
cykpKTsKICAgICBbVUlLZXlib2FyZEltcGwuc2hhcmVkSW5zdGFuY2UgcHJlcGFyZUtleWJvYXJk
SW5wdXRNb2RlRnJvbVByZWZlcmVuY2VzOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCmluZGV4IGQxY2ZjNmEzMzIxZTAyOWM4YmE4
MTE1ZjRhNmQ5MjA3ZjhlNzE4NGYuLjg5Y2U0ZWYxMjZjMTVkOTJkY2Y3NjY1MGNlNmVlZjViODky
MzE3MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94
eS5tbQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3du
KHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllCiAKICAgICBO
U1ZpZXcgKnRhcmdldFZpZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxh
dGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOwogICAgIGlmICh0
YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenps
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNz
XSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4o
c3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0byBldmVudFBy
ZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxl
cj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwogICAg
ICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgICAgIFt0YXJnZXRWaWV3
IG1vdXNlRG93bjpldmVudF07CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07
CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2ln
bmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMKICAgICAgICAgdGFy
Z2V0VmlldyA9IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygp
OwogCiAgICAgQVNTRVJUKHRhcmdldFZpZXcpOwotICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VC
dXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtO
U0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJl
dF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICBhdXRv
IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhv
ZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25z
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
KSk7CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgIFt0YXJnZXRWaWV3
IG1vdXNlVXA6ZXZlbnRdOwogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC01
OTMsNyArNTkzLDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUg
eCwgZG91YmxlIHkpCiAgICAgLy8gQWx3YXlzIHRhcmdldCBkcmFncyBhdCB0aGUgV0tXZWJWaWV3
IHRvIGFsbG93IGZvciBkcmFnLXNjcm9sbGluZyBvdXRzaWRlIHRoZSB2aWV3LgogICAgIE5TVmll
dyAqdGFyZ2V0VmlldyA9IGlzRHJhZyA/IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCkt
PnBsYXRmb3JtVmlldygpIDogW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRm
b3JtVmlldygpIGhpdFRlc3Q6d2luZG93TG9jYXRpb25dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7
Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9y
KHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVu
dFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1
dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQg
Y2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAg
X3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgICAgIGlmIChpc0RyYWcpCiAgICAgICAgICAg
ICBbdGFyZ2V0VmlldyBtb3VzZURyYWdnZWQ6ZXZlbnRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAppbmRleCA0NjliZmFmMGU4Y2Yy
OTA3MzBiYWJmYTA3ODM2ZDg3N2VjNzBlOGY1Li42OTZmNDU1NzU4OTZmZTgyNjY0ODdkMDk4ZThm
ZThlZTYxZTU0ZDU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVu
dFNlbmRlclByb3h5V1BFLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVu
dFNlbmRlclByb3h5V1BFLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB1aW50MzJfdCB3
cGVLZXlTeW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwg
dWludDMyCiAgICAgICAgIHJldHVybiBXUEVfS0VZX0YxMjsKIAogICAgIHNpemVfdCBidWZmZXJT
aXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGtleVJlZik7Ci0gICAgYXV0
byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0
byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZl
clNpemUpOwogICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIuZ2V0KCks
IGJ1ZmZlclNpemUpOwogICAgIGNoYXIgY2hhckNvZGUgPSBidWZmZXIuZ2V0KClbMF07CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggMDA5Y2U0NjgwNjg4NTgzMTNhNmZlMDdiMWJhMmMw
ZDU1Njg5ZDEwZC4uODkxNWVkZWY4N2FmZTNhYjdhYTgyMTdlODljY2IwOTg0ZmFhYTVmYSAxMDA2
NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKKysrIGIvVG9vbHMvd3Bl
L2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3cGUvZmRvLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
IAogdHlwZWRlZiB2b2lkKiBFR0xDb25maWc7CiB0eXBlZGVmIHZvaWQqIEVHTENvbnRleHQ7CkBA
IC00MiwxMCArNDMsMTIgQEAgc3RydWN0IHdwZV9mZG9fZWdsX2V4cG9ydGVkX2ltYWdlOwogbmFt
ZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKIGNsYXNzIFZpZXdCYWNrZW5kIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5WaWV3QmFja2Vu
ZCgpOwogCiAgICAgY2xhc3MgSW5wdXRDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfklucHV0Q2xpZW50KCkgPSBk
ZWZhdWx0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376360</attachid>
            <date>2019-08-14 23:26:39 -0700</date>
            <delta_ts>2019-08-14 23:31:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190814232638.patch</filename>
            <type>text/plain</type>
            <size>1797569</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2U0YzNjMTA2MDY0ODRlNjNkZDVmZDExMGYyZjNkYzRmMGZhN2FlLi4yNTdiNDMzNGE2ZGVmMWY2
MWE2NzBhZDI5YjQ2MjVmZjUyY2NlM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBz
dXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQyOGY1ZjNlODc4YTIyZWY5MmYzZTAyMzM4
YjVmYjRkYzVjYWM0YTkuLjMzNGU4NWU4MjY4MTI0OGViYjY2YjJiZWMwODM3M2RlZWMzNDA4ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAg
ICAgICogYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3Vy
cmVudFZlY3Rvci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAg
ICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHA6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3Rm
L0Z1bmN0aW9uLmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3Rm
L0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAg
ICAgICAqIHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6Cisg
ICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToK
KyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAg
ICAqIHd0Zi9TdHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBl
bmQpOgorICAgICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVm
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6
SXRlcmF0b3IpOgorCiAyMDE5LTA4LTE0ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUgc2hvdWxkIGxvZyBl
cnJvciBzdGF0dXMgKDE3ODM0NykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNWJjOGYwYmQ4MjIxOWZhNzBiYmJl
OTQwN2JlNmUzNjQwNjc2ZDIxLi43NGU0Y2IxODZjMmU4OTgyOGU3NmQ5NDg5YTNhOTIxMzMyMWVl
YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg4MCBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVl
PFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nRGV2ZWxvcGVyV2FybmluZyk6CisgICAgICAgICog
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvckJlYWNvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dD
YWNoZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Q2FjaGVzOjpmcm9tKToKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKToKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RN
OjprZXlTeXN0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RN
OjpjbGllbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpz
ZXRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETVByaXZhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZldGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KToK
KyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
cm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZp
Z2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9sb2Nh
dGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhl
ZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRhYmFz
ZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcik6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246
OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVy
OjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJlY29y
ZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJh
c2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5kZXhL
ZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVPcGVu
Q3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9y
ZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0
U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJh
c2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpi
ZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FM
aXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5C
YWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
OjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVz
dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0
RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2Fj
dGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJz
aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJh
bnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNh
Y3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRlY29k
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdl
cik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFiaWxp
dGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2ZVNl
ZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVk
aWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNlczo6
ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hh
bm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tlbmRG
cm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNy
ZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpj
cmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlTm90
aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1
bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvV29y
a2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5h
dmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Nw
ZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJlUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3lu
Y0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6
ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6
OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFjayk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdU
YXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVk
aW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxT
cGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2Rl
OjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1
ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5v
ZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3ND
b21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9H
YWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBhbm5l
ck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNo
YXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2FnZTo6
Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlk
UGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9t
U2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tl
dDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVy
aWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpE
YXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGlu
Z0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVs
ZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1l
bnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JH
UFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQ
b2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29tcHV0
ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBh
cnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdh
dG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJvbSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVN
ZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5x
dWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVl
dWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vz
c091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldElu
ZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0
aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcyk6
CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1Rv
RXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29k
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJyaWRn
ZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRob2RO
YW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFtZWQg
Y29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICogYnJp
ZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFz
czo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNz
OjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29tYmlu
ZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21i
aW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVDcnlw
dG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMpOgor
ICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxE
ZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjps
b2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNl
dDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAgKiBj
c3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVs
ZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNo
ZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojpj
c3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9ET01D
U1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNTU1Jl
Z2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVT
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50UnVs
ZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNlckFn
ZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpt
YWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1
dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRz
KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAgICAg
ICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVT
ZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6
YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxl
U2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAw
UGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hh
ZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NT
U3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNjYWRl
ZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgorICAg
ICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6CisgICAg
ICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJ
bXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OnBh
cnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1
bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1
cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5
ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRv
RWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpw
YXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2Vs
ZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hhcGVQ
YXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAgICAg
KiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAgICAg
KiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6
aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UpOgor
ICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRTaGFk
b3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhPYmpl
Y3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJD
U1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRv
bVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVu
dFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3Jh
cnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNs
YXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBk
b20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAgKiBk
b20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6
YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRvbS9N
aWNyb3Rhc2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb3Rhc2tRdWV1ZTo6dm0gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKToKKyAgICAg
ICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKToKKyAg
ICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVOb2Rl
V2lsbERldGFjaCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1
cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJNdXRh
dGlvbk9ic2VydmVyKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmFyZURhdGE6OmVuc3VyZU5vZGVMaXN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmFyZURhdGE6OmVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKiBk
b20vUmFkaW9CdXR0b25Hcm91cHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25H
cm91cHM6OmFkZEJ1dHRvbik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0RXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9y
dFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3cpOgorICAgICAg
ICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAgICog
ZG9tL1Nsb3RBc3NpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50
OjphZGRTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVu
dDo6YXNzaWduVG9TbG90KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVT
Y29wZTo6YWRkRWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRF
bGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRkSW1hZ2VNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKToKKyAgICAg
ICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJv
YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Y2xlYXJBbmRDcmVhdGVOb3RpZmllcik6CisgICAg
ICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcik6CisgICAg
ICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQ
YWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQpOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxPbkZpbGVUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0pOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpy
ZWFkSW50ZXJuYWwpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5
L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUGFnZTo6Q2FjaGVkUGFn
ZSk6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZSk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKToKKyAg
ICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVy
KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29u
dHJvbGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bUNvbnRyb2xsZXI6OnRha2VTdGF0ZUZvckZvcm1FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50
OjpyZWxMaXN0IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxD
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1cGRhdGVO
YW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxl
bWVudENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKToKKyAg
ICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJRnJhbWVFbGVtZW50OjpzYW5kYm94KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2l6ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpyZWxMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Zmlu
aXNoSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp1cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbik6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFy
eUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN1bW1hcnlFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
UHVibGljVVJMTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2Vy
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0OjpEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByZWxv
YWRTY2FubmVyOjplbWl0UnVsZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omlu
c2VydEhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVs
ZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjppbnNl
cnRBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpwdXNoQ29tbW9u
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpjcmVhdGVQ
cmVsb2FkUmVxdWVzdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVkSFRUUEJvZHlT
dWZmaXhUcmVlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpw
YXJzZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQ
SUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGlu
ZUFQSUhvc3Q6OmNsZWFyQWxsV3JhcHBlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjppbnNlcnRCZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01FZGl0b3I6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6
OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE91dGVy
SFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXROb2RlVmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdl
c3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01B
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVQYWdl
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFBhcnNlZFN0eWxl
U2hlZXQ6OnNldFNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVT
aGVldDo6ZW5zdXJlU291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpy
ZXNvdXJjZUNyZWF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6
Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1BVUHJv
ZmlsZXJBZ2VudDo6SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6YWRkUnVsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVkTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0
cik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6SW5zcGVjdG9yTmV0d29ya0FnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZy
b21Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0
b3BGcm9tQ29uc29sZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5z
cGVjdG9yV29ya2VyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29s
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6ZGlkRmFpbExv
YWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkhlYXBBZ2VudDo6V2ViSGVhcEFnZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAg
ICAqIGxheW91dC9MYXlvdXRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxh
eW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRp
bmdSb290SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6
Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UnVuLmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25CcmVha2Fi
bGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZFRleHRDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJ
bmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRIYXJkTGlu
ZUJyZWFrKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmg6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5k
VGV4dEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OnNw
bGl0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OkJveCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJveDo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1
aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVC
dWlsZGVyOjpjcmVhdGVUYWJsZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OnByaW50TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVudHMpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6
CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OkRv
Y3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsb2FkQXBw
bGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YWRk
QWxsQXJjaGl2ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjps
b2FkTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpGcmFtZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVk
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRldGFjaENoaWxkcmVu
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTGlu
a0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNl
Q2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmg6CisgICAgICAg
ICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmln
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVQ
YWdlQmxvY2spOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmg6CisgICAg
ICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjaGVja0ZvckhlYWRDaGFyc2V0KToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1h
aW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OnNldEJvZHlEYXRhRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJl
Y3RSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnByZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2U6OmxvYWRSZXF1ZXN0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmRvY3VtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW06CisgICAgICAgICgtW1dl
YlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjpyZXNvdXJjZVJlc3BvbnNlOl0p
OgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJv
cjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92
ZXJsYXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1
cGRhdGVSZWdpb24pOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2Jq
ZWN0VG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWlu
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxl
QXJlYSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVG
b3JQYWdpbmF0aW9uSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjppbml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0
aFR5cGVBbmRMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2Ny
ZWVuc2hvdCk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9y
bWFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
UGVyZm9ybWFuY2U6Om1lYXN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNs
ZWFyTWVhc3VyZXMpOgorICAgICAgICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAg
ICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250
ZXh0OjpvdXRwdXRMaW5rZWREZXN0aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcjo6c3RhcnRUaW1lcik6CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYWdlL1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAg
ICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250
ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xs
ZXI6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFG
aWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVh
dGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9u
Q29udHJvbGxlcik6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNp
dGVkQWZmZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlX
cmFwcGVyOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAg
ICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpzZXRDU1BEaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VP
YnNlcnZlci5oOgorICAgICAgICAqIHBhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaDoKKyAg
ICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFk
ZFNjaGVkdWxlUGFpcik6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5o
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9m
ZnNldHNJbmZvLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxkKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjpjb21taXQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9D
UFVNb25pdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZU1vbml0b3IuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9MZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvMTAwUGVy
Y2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kTWl4ZWRUeXBlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxh
YmxlQXJlYTo6c2Nyb2xsQW5pbWF0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vU3Vk
ZGVuVGVybWluYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQnVzOjpBdWRpb0J1cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6Y29w
eVdpdGhHYWluRnJvbSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpudW1iZXJPZkNoYW5uZWxzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFubmVsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFubmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpsZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdXM6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdXM6OnNldFNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9CdXM6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
OjpBdWRpb0J1cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFu
bmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OkF1ZGlvQ2hhbm5lbCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnNldCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Om11dGFibGVEYXRhKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6ZGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Onplcm8pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9DaGFubmVsOjpjbGVhclNpbGVudEZsYWcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9DaGFubmVsOjppc1NpbGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZJ
Rk86OmZyYW1lc0luRmlmbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZJRk86OnVwZGF0ZUluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb1B1bGxGSUZPLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVscyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvUmVzYW1wbGVyOjpyYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzQWN0aXZlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9CaXF1YWQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9Db25lLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRJ
bm5lckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmlubmVy
QW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0
T3V0ZXJBbmdsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRl
ckFuZ2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNl
dE91dGVyR2Fpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRl
ckdhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFs
RGlzYWJsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OkRlbm9ybWFs
RGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6
fkRlbm9ybWFsRGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxE
aXNhYmxlcjo6Zmx1c2hEZW5vcm1hbEZsb2F0VG9aZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OmdldENTUik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjpzZXRDU1IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rp
c3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bW9kZWwpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldE1vZGVsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjpzZXRSZWZEaXN0YW5jZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6c2V0TWF4RGlzdGFuY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldFJvbGxvZmZG
YWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnJlZkRp
c3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0
OjptYXhEaXN0YW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5j
ZUVmZmVjdDo6cm9sbG9mZkZhY3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vRG93blNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpz
ZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNz
b3I6Om55cXVpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3ND
b21wcmVzc29yOjp0YWlsVGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
eW5hbWljc0NvbXByZXNzb3I6OmxhdGVuY3lUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6bGF0ZW5jeUZyYW1lcyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yS2VybmVsOjptZXRlcmluZ0dhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVENvbnZvbHZlcjo6
ZmZ0U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmNyZWF0ZUludGVycG9sYXRlZEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6bnVtYmVyT2ZBemltdXRocyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlv
bjo6Y3JlYXRlRm9yU3ViamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpj
cmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZFbGV2YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OkhSVEZFbGV2
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVs
TGlzdEwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVs
TGlzdFIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6ZWxldmF0
aW9uQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlv
bjo6bnVtYmVyT2ZBemltdXRocyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpI
UlRGRWxldmF0aW9uOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6
OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxz
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGUGFubmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcik6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5l
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAo
V2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpy
ZWFkVGltZUZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpS
ZXZlcmJDb252b2x2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VM
ZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVy
OjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2
ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5wdXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1VwU2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6
CisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xl
OjpzZXRQb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxp
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6bGlzdCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6Om9wZXJhdG9y
IEF1ZGlvQnVmZmVyTGlzdCYgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
QXVkaW9CdWZmZXJMaXN0OjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
Ojpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9pbnRHcmFwaDo6
ZmluZE9yQ3JlYXRlTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6c2V0U2hhcGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpjb3B5U2hh
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpkZWNvZGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnBy
ZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5RmFpclBsYXlT
dHJlYW1pbmc6OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6YnVmZmVyZWQg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWM6OnBsYXRmb3JtUGlja2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpub3RpZmlj
YXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0
cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2Fk
ZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpz
ZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRU
cmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01l
dGFkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFu
Z2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRo
VG9sZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVw
ZGF0ZUN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJ
dGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpz
ZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qzo6c2V0TWVkaWFTZWxlY3Rvbk9wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0
Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp0aWxlZFNj
cm9sbGluZ0luZGljYXRvckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNvY29hOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGls
ZWRCYWNraW5nTGF5ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQbGF0
Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcDoKKyAgICAgICAgKFdl
YlRpbGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6bV9wcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhpY3NDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9wZXJ0aWVzOjpp
c0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRp
b25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3BlcnRpZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6c2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGVk
U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVD
YWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1Yu
bW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmxvYWRFeHRlcm5hbERvY3Vt
ZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9u
dFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmU6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNy
Y01ha2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2g6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9C
b3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRp
b25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBh
cnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRp
b25Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJv
eC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25C
b3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OklTT1dlYlZUVEN1ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3Bl
cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2Nl
bmVJbnRlZ3JhdGlvbi5jcHA6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpj
cmVhdGVVcGRhdGVTY29wZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpjcmVhdGVDb21tYW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQ
YWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKToKKyAgICAgICAg
KE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OkZvclJlY29yZGlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBv
c2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3Jl
YXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5n
VGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4
dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xD
b21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3
YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNv
bnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvVGlsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3Rh
dGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6OnNldExhc3RQbGFu
YXJTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6c2V0
U2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXI6OkZ1bGxT
Y3JlZW5Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5Db250cm9sbGVy
OjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjptX3ByaXZh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVXaW5kb3dzQml0
bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1
c3RvbVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6
OndyaXRlQ2xpcGJvYXJkQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUdhZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUdhZGdldDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVscGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAg
ICAoR0lGRnJhbWVDb250ZXh0OjpkZWNvZGUpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OmFk
ZEZyYW1lSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVy
OjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rl
cjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpMZWdhY3lUaWxlQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFn
QW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChX
ZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9TY3JvbGxBbmltYXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjptX2NhcHR1cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OkdTdHJlYW1lckF1ZGlvRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmdldFNhbXBsZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmdldEF1ZGlvSW5mbyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmtpbmQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDYXB0dXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJr
aXRfbWVkaWFfc3RyZWFtX3NyY19pbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Om1fY2FwdHVyZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVv
RW5jb2RlckZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNv
ZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFj
a2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rv
cnk6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2Nv
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRl
ckdTdHJlYW1lcjo6Y3JlYXRlRGVjb2RlckZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpj
b252ZXJ0VG9ZVVYpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlQ29jb2E6OnJvdGF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENO
b3RpZmllcnNNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFubmVsTm90
aWZpZXI6OmZpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJM
RGVjb2Rlcjo6Y3JlYXRlRGVjb2RlVGFzayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZhaWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6d2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRTZW5kQm9keURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgt
W1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBfcmVzdGFydF0pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29r
aWVKYXJEQjo6c2VhcmNoQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6
Y3JlYXRlUHJlcGFyZVN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xDdHgpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEZvcm1EYXRhU3Ry
ZWFtOjpnZXRQb3N0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRs
ZTo6Y3JlYXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3Rl
bnRTdG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2Fs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
TGF0aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNSZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVu
dDo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRG
MTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0
Q29kZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAg
ICAgICogcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmg6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
REI6OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NE
YXRhT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6
CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29t
cGxleExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVl
ZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGbG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpu
ZXh0RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdu
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0
ZUJhc2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3Vs
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJh
c2VkVGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZFBsYWNlaG9sZGVyUnVuRm9ySXNvbGF0ZWRJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9M
YXllck92ZXJsYXBNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPdmVybGFwTWFwOjpw
dXNoQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVyTWFwcyk6
CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXA6OmFkZERlc2NlbmRh
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5m
b0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlQmxvY2tS
YXJlRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0TGluZUdyaWRCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjplbnN1cmVMaW5lQm94ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjptYXRlcmlhbGl6ZVJhcmVCbG9ja0Zsb3dE
YXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjplbnN1
cmVDb250aW51YXRpb25DaGFpbk5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VDb3VudGVyTm9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y29udGFpbmluZ0ZyYWdtZW50TWFwKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0
cnlNYXA6OnB1c2hWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVw
ZWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3Jp
ZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
OlJlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y29sbGVjdExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBk
YXRlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVDbGlw
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0
cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFuY2VzdG9yQ2xpcHBp
bmdTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFu
c2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5
Rmx1c2hCZWZvcmVEaXNwbGF5UmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJL
aXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWlu
ZWRMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVt
bkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVE
YXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90
dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVh
dGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2
ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50
UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290
SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJh
bmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVjdEJvdW5kcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2Vu
ZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUlu
dGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBv
bHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVQYXRoOjpibGVuZCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZp
bGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFk
ZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291
bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFu
aW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRp
b25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJh
cmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5s
aW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBl
Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNl
dE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVz
b3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5kZXJlcik6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAg
ICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6Oklu
dmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6
OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVT
aGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6Cisg
ICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVu
Y2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRh
bFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6Y29weSBjb25zdCk6CisgICAgICAgICogc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlM
VGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5o
OgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmg6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0RlY29yYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5Lmg6CisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNl
dHRpbmdzOjpmcm9tKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OmVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0UHJpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjppbml0aWFsaXplTW9ja0NETSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnF1ZXVlTWljcm9UYXNrKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAg
ICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRh
aWxzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNj
b3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckds
b2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExv
YWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVh
ZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVS
ZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjp0
ZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6
c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
UmVnaXN0ZXJKb2IpOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3Rl
clBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6Cisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAq
IHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKToKKyAgICAg
ICAgKiB4bWwvWE1MRXJyb3JzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp1cGxvYWQpOgorICAgICAgICAqIHht
bC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpldmFsdWF0ZVByZWRpY2F0ZSk6CisgICAgICAgICog
eG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxl
U2hlZXQ6OmxvYWRDaGlsZFNoZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVF
cnJvcik6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kU3RhcnRFbGVtZW50
TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRF
bmRFbGVtZW50TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kQ0RBVEFCbG9ja0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENvbW1lbnRDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRJbnRlcm5hbFN1YnNl
dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVy
cm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERv
Y3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkb0Vu
ZCk6CisKIDIwMTktMDgtMTQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV0hMU0xdIFZhcmlhYmxlcyBzaG91bGRuJ3QgYmUgYWJsZSB0byBoYXZl
IHZvaWQgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNjBlN2ZiNTZjOTcwNWUxOWZjODliYzhh
NmJkNGY0MjNlZjE2MjViZS4uYzdhYWE4ZDE0NjNhMWVhMjkzYWIyMzQ1MzdmMmYzMzMyM2E2NmYx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDgtMTQgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29udGV4
dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwOgor
ICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL21hYy9D
bG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6OmNyZWF0ZSk6CisKIDIwMTktMDgtMTQgIEtlaXRo
IFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZv
ciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDM1OGYyYmYwMDVhZTY0NGQ4MTIzMjhk
NWRlZGU0MTljOGJhMDFjZmIuLjNiMTkyOGU5YTMwOTMwNTBhNTE3MGI3MzcwOTI2Zjk2ZTgxNTBi
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1
ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKToK
KyAgICAgICAgKiBnbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKwogMjAxOS0wNi0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjQ1
NTY3KTogW0dUS11bV1BFXSBbMi4yNS4xXSBXZWJLaXRXZWJEcml2ZXIgZ2V0cyBpbnN0YWxsZWQg
YXMgV2ViRHJpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwOWY1YzM2MjUxNDI4Njg5NDczYzk5OGIzOGZkYWFi
YjU0YTYwY2QuLjYyYmY5OTVlYTdiNTM4YjU4ZmZlYjQ3YThjMjQwY2M2NzM4NzhkZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjM4IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVu
c3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2spOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3Vw
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hcDo6YWRkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93
bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRh
YmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtl
RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlUmVkaXJl
Y3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3Jk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdp
c3RlclN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5
UGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5
bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFk
UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2ZUZyb21NZW1v
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToK
KyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpj
cmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQ
cm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENv
b3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrU291cDo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAg
ICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRj
aFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZyk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6dW53cmFwRm9yVGVzdGluZyk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6
aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjpDb25uZWN0aW9uVGVy
bWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAg
ICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vz
c01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0v
TW9kdWxlLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW06
CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhv
c3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVS
TC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6cGFy
c2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9SZW1v
dGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZv
Y2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51SXRl
bUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAg
ICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKToKKyAgICAgICAg
KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24pOgorICAgICAg
ICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xh
YmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51
KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKToKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRleG1hcExheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIpOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0
b3I6OlRocmVhZGVkQ29tcG9zaXRvcik6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9i
amVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rl
ck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0
cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8v
U2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5k
TWF0Y2hlc0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6SFRUUENv
b2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUhpc3RvcnlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFz
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChX
S0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXRI
aXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlv
bk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNl
dFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUgaW5pdFdpdGhQYWdl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoKKyAgICAgICAg
KFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9y
ZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFs
bG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24g
c2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNRTGl0ZVN0YXRlbWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAg
ICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoYXR0
YWNoQ29udGV4dE1lbnVDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNo
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoRG93
bmxvYWRDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAod2Via2l0RmF2aWNvbkRhdGFiYXNlT3Bl
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFj
aEZvcm1DbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25NYW5hZ2Vy
Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdD
bGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoSWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6
CisgICAgICAgIChhdHRhY2hJbmplY3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNw
cDoKKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKToKKyAg
ICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2Fn
ZV9oYW5kbGVyX2luX3dvcmxkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
RHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1v
amlDaG9vc2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0
aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViSW5zcGVjdG9yQ3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VEcmFnQW5kRHJvcEhhbmRsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaWRSZWxh
dW5jaFdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToK
KyAgICAgICAgKC1bV0tWaWV3IG1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5jcHA6CisgICAgICAgIChXS1dQRTo6Vmlldzo6Vmlldyk6CisgICAgICAg
IChXS1dQRTo6Vmlldzo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9x
dC9XUEVRdFZpZXcuY3BwOgorICAgICAgICAoV1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENh
bGxiYWNrKToKKyAgICAgICAgKFdQRVF0Vmlldzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKToK
KyAgICAgICAgKFdQRVF0Vmlldzo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHA6CisgICAgICAgIChXUEVRdFZpZXdCYWNr
ZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxv
YWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpj
cmVhdGVDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNy
ZWF0ZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydERpc3BsYXlMaW5rKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFRleHRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9y
YXRlVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0
Rm9yT3JpZ2luQ2FsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMp
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29u
bmVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VV
cGxvYWRBc3NlcnRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5SZXF1
aXJlc0d0azIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNh
dG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2Rl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2
aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRD
cmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpt
YXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2li
bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9h
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxh
eWluZ0F1ZGlibGVNZWRpYSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21w
b3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25T
dGF0ZVRyYWNraW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tp
bmdWaWV3IGRpZE1vdmVUb1dpbmRvd10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoUHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246d2ViVmlldzpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlv
dXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
YXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhXaW5kb3c6d2ViVmlldzpwYWdlOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgaW5pdFdpdGhQYWdlOnZpZXc6dXNlUGxhdGZvcm1GaW5kVUk6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9y
bVN0YXJ0VGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJW
aWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6Z2FtZXBhZENvbm5lY3Rl
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVNldENsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgor
ICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV0tC
dW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV0tCdW5k
bGVQYWdlU2V0VUlDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VPdmVy
bGF5Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21h
Yy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW06CisgICAgICAgIChXS0J1bmRsZVBhZ2VCYW5uZXJD
cmVhdGVCYW5uZXJXaXRoQ0FMYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0Ojpn
ZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpwdXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdEV4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYkVkaXRvckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwOgorICAgICAgICAod2Via2l0V2Vi
RXh0ZW5zaW9uQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0RnJhbWVHZXRPckNyZWF0
ZSk6CisgICAgICAgICh3ZWJraXRXZWJQYWdlQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW06CisgICAgICAgICgt
W1dLRE9NVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyIF9zZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQZW5kaW5nTWVzc2FnZTo6UGVuZGluZ01lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KToK
KyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50
VGNwU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3Jl
YXRlTmV3Q29ubmVjdGlvblNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZUFzeW5jUmVzb2x2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVj
dG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVUaW1lcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
OjpjcmVhdGVTdWJmcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRpbWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5k
bGVSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5k
Q29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1Zv
bGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNl
c3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdv
cmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6U291cmNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnByb2Nlc3NUYXNrU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUpOgorCiAyMDE5LTA4LTE0
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSBtX2Jsb2NrUmVjdEZvclRleHRTZWxlY3Rpb24gKGFsb25nIHdpdGggcmVsYXRlZCBjb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkN2JmZmNiZDM3YmZlMjI3MTcwOGE2MzJhMzFmOTQ3YmZi
YzNjMTFmLi43ODFiZTQ1M2EyMGMyZmY0MGUwYmE0ZGVkZGU0Yzk5Yzk4NGU5NDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4s
IHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFu
YWdlcik6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJhY2tlcik6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcDoKKyAg
ICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbik6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24p
OgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hh
bmdlTG9nCmluZGV4IGM2M2VmYWJhNWQ4ODY4M2JlZmJmMTY5NThmZjFmZTAwMDRlYTljNmIuLjE5
Njk0YmQxMTExNmE2MGZjMTNiMDMxYzQ4NzZkZWFlYzJjOGQ3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2Yv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJvbnRlbmRTZXR0
aW5ncyk6CisKIDIwMTktMDgtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI0ODQ1NCk6IFdLMSBpbnNwZWN0
b3IgZnJvbnRlbmQgY2xpZW50IGRvZXNuJ3QgcXVldWUgbWVzc2FnZXMgdG8gdGhlIGZyb250ZW5k
IGJlZm9yZSBpdCdzIGxvYWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDg1YmZl
N2ZlN2FhNGMzZjdmY2JiMmQ3MjhkYjVkZWE3YWRhYmE4ZmYuLmJiNTQwYzFlNWFlMmE4N2M2MDcx
NGZiOWJjNTIyNmM5ZWU4MDQ0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMg
ZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW06CisgICAgICAgICgtW1dl
YkZpeGVkUG9zaXRpb25Db250ZW50IHNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6c3RpY2t5
Q29udGFpbmVyTWFwOl0pOgorCiAyMDE5LTA3LTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gZGlkRmluaXNoQ29udGVu
dENoYW5nZU9ic2VydmluZyBzaG91bGQgaW5jbHVkZSB0aGUgdHlwZSBvZiBjb250ZW50IGNoYW5n
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwMmExY2U3YmE2OGViZGQyZTdmYjNh
YmY4NGMzZGI2OGQ3NDg1ZTZlLi45Y2QzNTFjNWJlZDc2YzMyODA5ZmU0Y2JiNjNhNjFkNDJkMDlh
ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTkt
MDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RG
XSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEhpc3Rvcnkv
V2ViSGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgaW5pdF0pOgorICAg
ICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlJ
dGVtIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgorICAgICAgICAoV0tQQ0dldFNj
cmlwdGFibGVOUE9iamVjdFJlcGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuUmVwbHkpOgorICAg
ICAgICAoV0tQQ0Jvb2xlYW5BbmREYXRhUmVwbHkpOgorICAgICAgICAoV0tQQ0luc3RhbnRpYXRl
UGx1Z2luUmVwbHkpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5oOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06
CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Om1ldGhvZE5hbWVkKToKKyAgICAgICAg
KFdlYktpdDo6UHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZCk6CisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1Z2luXSk6CisgICAgICAgICogUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2NoZWR1bGVU
aW1lcldpdGhJbnRlcnZhbDpyZXBlYXQ6dGltZXJGdW5jOl0pOgorICAgICAgICAqIFN0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0
YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNhY2hl
ZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChhZGRSZWRpcmVjdFVSTCk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJh
bWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06
CisgICAgICAgICgtW1dlYkZyYW1lIF9hdHRhY2hTY3JpcHREZWJ1Z2dlcl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbToKKyAgICAgICAgKFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0SXRl
cmF0b3IubW06CisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBpbml0V2l0aFJhbmdlOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfaW5qZWN0
T3V0bG9va1F1aXJrc1NjcmlwdF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9h
ZGRVc2VyU2NyaXB0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6
aW5qZWN0aW9uVGltZTppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRk
VXNlclN0eWxlU2hlZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlz
dDppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0VGV4dEluZGljYXRvcjp3aXRo
TGlmZXRpbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAg
KFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcik6
CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKwogMjAxOS0wOC0xNCAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjQ4NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQ2MDMwYmI2
M2I0NmYyZjkyODUzZjA0OTczNjA5NWYzMzQyMWFhNWEuLjZkODljMDNjNzliYjk1YzVjZTZiMWQ1
ZTM5M2ZlMWE4ZTEyZWQzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NyBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFz
dC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKiBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5NZXNz
YWdlVGhyb3R0bGVyV2luLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OmxvYWQpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3Ojp3bmRQcm9jKToKKyAgICAgICAgKiBXZWJDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNo
ZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoV2ViRWxlbWVu
dFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcpOgorICAgICAgICAqIFdlYkhpc3Rv
cnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQ
b3N0UHJvY2Vzc2luZ0NvbnRleHQpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ0FEM0RSZW5kZXJlci5oOgorICAgICAgICAqIFdlYk5vZGVIaWdobGlnaHQuaDoKKyAgICAg
ICAgKiBXZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlv
bkNlbnRlci5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFu
ZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmlld01J
TUVUeXBlKToKKyAgICAgICAgKFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAg
ICAgKFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3
OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKwogMjAxOS0wOC0xNCAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjQ4NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nIGIvU291cmNl
L2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDNmMGZiMmUxY2VlYWVmMDY1OWMzNGM4MjcxYmVlYzEw
ODIzNzU2ZWQuLjZlMDFkYWJjZjgwMDcwOTkzNzAxYjg2MWQzZGQzODhlMDZkMTY4NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBl
bnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwLmg6CisgICAgICAgICogYm1hbGxv
Yy9Jc29IZWFwSW5saW5lcy5oOgorCiAyMDE5LTA3LTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIEFkZCBJc29IZWFwIHRlc3QgdG8gZW5z
dXJlIHRoYXQgSXNvSGVhcCBwYWdlcyBhcmUgbm90IGFsbG9jYXRpbmcgdG9vIGxhcmdlIFZBCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDA3ZDcw
OWJhMTJjODJjODU0ODJkNzNjNzIzNzdmNTE5ZTdmYzJhNWMuLmQwZTYyNTI4MmE4NGY0ZjM1ZWVk
ZWQxOTVlZGI4ZGM4OTdiMWE1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBKU0NhbGxiYWNrT2JqZWN0
RGF0YSB7CiAgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVydHkoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgewog
ICAgICAgICBpZiAoIW1fcHJpdmF0ZVByb3BlcnRpZXMpCi0gICAgICAgICAgICBtX3ByaXZhdGVQ
cm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ByaXZhdGVQcm9wZXJ0eU1hcD4oKTsKKyAg
ICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEpTUHJpdmF0ZVByb3Bl
cnR5TWFwPigpOwogICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVy
dHkodm0sIG93bmVyLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CmluZGV4IGFlM2E2ZmUzYWNmOWM2YTgwMzk0ZTFkNzM0ZmEzMTdkOTA4ZmFlMmMuLjljYTNiNGJm
NDA4NTA3NTBiOGJjNDE5NDlmNzUwNDJiMzU3MjMxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC01OCw3ICs1
OCw3IEBAIGlubGluZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6YXNDYWxsYmFja09iamVjdChFbmNvCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgog
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgdm9pZCogZGF0YSkK
ICAgICA6IFBhcmVudChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2Jq
ZWN0RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0Ns
YXNzKSkKKyAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09i
amVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KFZNJiB2bSwgSlNDbGFzc1JlZiBqc0NsYXNz
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IFBhcmVudCh2bSwgc3RydWN0dXJlKQotICAg
ICwgbV9jYWxsYmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0
RGF0YT4obnVsbHB0ciwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtl
VW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5kZXggZjFjOWQ1NzAyYThh
YTY5MDQ0ZGZiMjk1YjQ3MWZjZmNiYzg5MGI2Yi4uN2VlYzJhOTBhNDRmODYwYmFhMjI3NmI5NmQ0
NWYyYmQ2ODYxNzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Ns
YXNzUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3Bw
CkBAIC01OSwyMSArNTksMjEgQEAgT3BhcXVlSlNDbGFzczo6T3BhcXVlSlNDbGFzcyhjb25zdCBK
U0NsYXNzRGVmaW5pdGlvbiogZGVmaW5pdGlvbiwgT3BhcXVlSlNDbGFzcyoKICAgICBpbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAKICAgICBpZiAoY29uc3QgSlNTdGF0aWNWYWx1ZSogc3RhdGljVmFs
dWUgPSBkZWZpbml0aW9uLT5zdGF0aWNWYWx1ZXMpIHsKLSAgICAgICAgbV9zdGF0aWNWYWx1ZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAg
ICAgICAgbV9zdGF0aWNWYWx1ZXMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1
ZXNUYWJsZT4oKTsKICAgICAgICAgd2hpbGUgKHN0YXRpY1ZhbHVlLT5uYW1lKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgdmFsdWVOYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdGF0aWNWYWx1ZS0+bmFt
ZSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgICAg
ICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8
U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+
c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAg
ICAgICAgICAgICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCksIG1ha2VVbmlx
dWU8U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3BlcnR5LCBzdGF0aWNWYWx1
ZS0+c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKICAg
ICAgICAgICAgICsrc3RhdGljVmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoY29u
c3QgSlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rpb24gPSBkZWZpbml0aW9uLT5zdGF0aWNG
dW5jdGlvbnMpIHsKLSAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAgICAgbV9zdGF0aWNG
dW5jdGlvbnMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4o
KTsKICAgICAgICAgd2hpbGUgKHN0YXRpY0Z1bmN0aW9uLT5uYW1lKSB7CiAgICAgICAgICAgICBT
dHJpbmcgZnVuY3Rpb25OYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdGF0aWNGdW5jdGlvbi0+bmFt
ZSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAg
ICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0
aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOworICAgICAgICAgICAgICAgIG1fc3Rh
dGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNG
dW5jdGlvbkVudHJ5PihzdGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0
aW9uLT5hdHRyaWJ1dGVzKSk7CiAgICAgICAgICAgICArK3N0YXRpY0Z1bmN0aW9uOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTI4LDIxICsxMjgsMjEgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
OjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpWTSYsIE9wYXF1ZUpTQ2xhc3MqIGpzQ2wK
ICAgICA6IG1fY2xhc3MoanNDbGFzcykKIHsKICAgICBpZiAoanNDbGFzcy0+bV9zdGF0aWNWYWx1
ZXMpIHsKLSAgICAgICAgc3RhdGljVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0Ns
YXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CisgICAgICAgIHN0YXRpY1ZhbHVlcyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICBPcGFxdWVKU0Ns
YXNzU3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGpzQ2xhc3MtPm1fc3Rh
dGljVmFsdWVzLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVz
VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJUKCFpdC0+a2V5LT5pc0F0
b20oKSk7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWVOYW1lID0gaXQtPmtleS0+aXNvbGF0ZWRD
b3B5KCk7Ci0gICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1ZU5hbWUuaW1wbCgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1ZS0+Z2V0UHJvcGVydHks
IGl0LT52YWx1ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1l
KSk7CisgICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1ZU5hbWUuaW1wbCgpLCBtYWtl
VW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1ZS0+Z2V0UHJvcGVydHksIGl0LT52YWx1
ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoanNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMpIHsKLSAg
ICAgICAgc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU+KCk7CisgICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwogICAgICAgICBPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGpzQ2xhc3Mt
Pm1fc3RhdGljRnVuY3Rpb25zLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganNDbGFzcy0+bV9zdGF0aWNG
dW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJU
KCFpdC0+a2V5LT5pc0F0b20oKSk7Ci0gICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChp
dC0+a2V5LT5pc29sYXRlZENvcHkoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVu
dHJ5PihpdC0+dmFsdWUtPmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsK
KyAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgp
LCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rp
b24sIGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTUx
LDcgKzE1MSw3IEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgT3BhcXVlSlNDbGFzczo6Y29u
dGV4dERhdGEoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVK
U0NsYXNzQ29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+b3BhcXVlSlNDbGFzc0RhdGEoKS5hZGQodGhpcywgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghY29udGV4dERhdGEpCi0gICAgICAgIGNvbnRleHREYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwor
ICAgICAgICBjb250ZXh0RGF0YSA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
PihleGVjLT52bSgpLCB0aGlzKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRhOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFBy
aXZhdGUuY3BwCmluZGV4IGQ5ZWU2NzQwMzQ5Y2ZlZmRmYmNjMGQzMTA5NGYxZjRkZTVhNTJjMWUu
LmJhNGE1YTE2Njk3YWY1ZjhhOTcyMmU1NzQ2OWUzOTRkOTc5MDQyYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNDb250ZXh0R3JvdXBBZGRNYXJraW5nQ29uc3Ry
YWludChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNNYXJraW5nQ29uc3RyCiAgICAgLy8gZWxz
ZSBnZXRzIG1hcmtlZC4KICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5ID0gQ29u
c3RyYWludFZvbGF0aWxpdHk6OkdyZXllZEJ5TWFya2luZzsKICAgICAKLSAgICBhdXRvIGNvbnN0
cmFpbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PigKKyAgICBh
dXRvIGNvbnN0cmFpbnQgPSBtYWtlVW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PigKICAg
ICAgICAgdG9DU3RyaW5nKCJBbWMiLCBjb25zdHJhaW50SW5kZXgsICIoIiwgUmF3UG9pbnRlcihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFpbnRDYWxsYmFjaykpLCAiKSIpLAogICAgICAgICB0
b0NTdHJpbmcoIkFQSSBNYXJraW5nIENvbnN0cmFpbnQgIyIsIGNvbnN0cmFpbnRJbmRleCwgIiAo
IiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFpbnRDYWxsYmFjaykpLCAi
LCAiLCBSYXdQb2ludGVyKHVzZXJEYXRhKSwgIikiKSwKICAgICAgICAgW2NvbnN0cmFpbnRDYWxs
YmFjaywgdXNlckRhdGFdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
V3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1t
CmluZGV4IGQ0NjliNzVhMzFmMGVmY2E5ZDA3YWJiMDNiMGJlNjYxNjFiMzk1NjcuLjRiNTk5MDcz
ZmU3NmI0ODY0NDM2OTlhYmRjYjM0YzQxNjRiYzJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC02MDYsNyArNjA2LDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKICAg
ICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKICAg
ICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlP
cHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBjYXBhY2l0eTowXTsK
IAotICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NN
YXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoY29udGV4dCkt
PnZtKCkpOworICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IG1ha2VVbmlxdWU8SlNDOjpXZWFrR0NN
YXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoY29udGV4dCkt
PnZtKCkpOwogCiAgICAgQVNTRVJUKCF0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT53cmFwcGVy
TWFwKCkpOwogICAgIHRvSlNHbG9iYWxPYmplY3QoY29udGV4dCktPnNldFdyYXBwZXJNYXAoc2Vs
Zik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1
bmN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlv
bi5tbQppbmRleCBlZTkzMjgyMWVmNzRiZDY4OTFhZThmMjlmYWQ3YmJhNWFmZWEwY2JjLi43M2Ni
NDI3MDQzODE4MzFlODE5ZDlkOTQzZWI5ZTU0NDAzMDk2ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KQEAgLTE5NSwxOCArMTk1
LDE4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudERvdWJsZTxU
Pj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudERvdWJsZTxU
Pj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQm9vbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50Qm9vbGVhbj4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJvb2xlYW4+KCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQpAQCAtMjE3LDcgKzIx
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SWQ+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJZD4oKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlT2ZDbGFzcyhjb25zdCBjaGFyKiBiZWdpbiwgY29u
c3QgY2hhciogZW5kKQpAQCAtMjI4LDE5ICsyMjgsMTkgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKGNscyA9PSBbSlNWYWx1ZSBjbGFzc10pCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SlNWYWx1
ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRKU1Zh
bHVlPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU1N0cmluZyBjbGFzc10pCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmc+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmc+KCk7
CiAgICAgICAgIGlmIChjbHMgPT0gW05TTnVtYmVyIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051bWJlcj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051bWJlcj4oKTsKICAgICAg
ICAgaWYgKGNscyA9PSBbTlNEYXRlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RhdGU+KCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOwogICAgICAgICBpZiAoY2xzID09
IFtOU0FycmF5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrQXJndW1lbnROU0FycmF5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGljdGlv
bmFyeSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFj
a0FyZ3VtZW50TlNEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKQEAg
LTI1Miw3ICsyNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5
KGJlZ2luLCBlbmQpOwogICAgICAgICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdmFs
dWVUb1R5cGVJbnZvY2F0aW9uRm9yKGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3RydWN0PihpbnZvY2F0
aW9uLCBjb3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTMzNSw0
NSArMzM1LDQ1IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRp
YyBSZXN1bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZURvdWJsZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8
VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxU
Pj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQm9vbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdEJvb2xlYW4+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0Qm9vbGVhbj4oKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4oKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlT2ZD
bGFzcyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBl
IHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVTdHJ1Y3QoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkKICAg
ICB7CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChO
U0ludm9jYXRpb24gKmludm9jYXRpb24gPSB0eXBlVG9WYWx1ZUludm9jYXRpb25Gb3IoY29weSkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFN0cnVj
dD4oaW52b2NhdGlvbiwgY29weSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxs
YmFja1Jlc3VsdFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIH07CkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIEpTT2JqZWN0UmVmIG9i
akNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbihKU0NvbnRleHQgKmNvbnRleHQsIE5TSW52
b2MKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSk7CiAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgYXV0byBpbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFz
cywgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOworICAgIGF1dG8gaW1wbCA9
IG1ha2VVbmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5
cGUsIGluc3RhbmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsK
ICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBpbXBsLT5uYW1lKCk7CiAgICAgcmV0dXJuIHRvUmVm
KEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBuYW1lLCBXVEZNb3ZlKGltcGwpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKaW5kZXggZTAxZTk3MGM3ZjU4MDM2NTYxOGVm
MWRhYjg1NTQ0ZDcwNGY5YjQ3YS4uNzhkNzY1NWZmODA3NzYwZDQ2MDhhNjE3ZTU3YzkwZjE1NDI3
OTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIGpzY0NvbnRleHRTZXRWaXJ0dWFsTWFj
aGluZShKU0NDb250ZXh0KiBjb250ZXh0LCBHUmVmUHRyPEpTQ1ZpcnR1YWxNCiAgICAgICAgICAg
ICBwcml2LT5qc0NvbnRleHQgPSBKU1JldGFpblB0cjxKU0dsb2JhbENvbnRleHRSZWY+KEFkb3B0
LCBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGpzY1ZpcnR1YWxNYWNoaW5lR2V0Q29udGV4
dEdyb3VwKHByaXYtPnZtLmdldCgpKSwgbnVsbHB0cikpOwogICAgICAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSB0b0pTR2xvYmFsT2JqZWN0KHByaXYtPmpzQ29udGV4dC5nZXQoKSk7CiAgICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0LT53cmFwcGVyTWFwKCkpCi0gICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldFdyYXBwZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxKU0M6OldyYXBwZXJNYXA+KHByaXYt
PmpzQ29udGV4dC5nZXQoKSkpOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRXcmFwcGVy
TWFwKG1ha2VVbmlxdWU8SlNDOjpXcmFwcGVyTWFwPihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsK
ICAgICAgICAganNjVmlydHVhbE1hY2hpbmVBZGRDb250ZXh0KHByaXYtPnZtLmdldCgpLCBjb250
ZXh0KTsKICAgICB9IGVsc2UgaWYgKHByaXYtPnZtKSB7CiAgICAgICAgIEFTU0VSVChwcml2LT5q
c0NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q1dyYXBwZXJNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBw
ZXJNYXAuY3BwCmluZGV4IDExYmI3YzBiODczN2RiNjdkZDE3ZGNkMjRmNzAyOTQzNDQ2OWE4MDMu
LmY1MjNlYTQxOTlmOGFiZDczMmY3N2I2MjgxNDEyMDEzNGJiOGJlYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKEpTR2xvYmFs
Q29udGV4dFJlZiBqc0NvbnRleHQpCi0gICAgOiBtX2NhY2hlZEpTV3JhcHBlcnMoc3RkOjptYWtl
X3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09iamVjdD4+KHRvSlMoanND
b250ZXh0KS0+dm0oKSkpCisgICAgOiBtX2NhY2hlZEpTV3JhcHBlcnMobWFrZVVuaXF1ZTxKU0M6
OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09iamVjdD4+KHRvSlMoanNDb250ZXh0KS0+dm0o
KSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3Rh
Y2suY3BwCmluZGV4IGE3NWY1OGRjMTQ2YjNiNjQ5NWNlYjE2N2FkZjRkYWJmZjA2YjBjODkuLmRh
NDc3MDUxZjM0NWUwNzE2OGZjN2QwNmUwYzdmNTI2MzExODZlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBA
IFBhZ2UqIFN0YWNrOjplbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpCiAgICAgaWYgKExJS0VM
WShpdCAhPSBtX3BhZ2VzLmVuZCgpKSkKICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gaXQt
PnZhbHVlLmdldCgpOwogICAgIGVsc2UgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4g
cGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oYmFzZUFkZHJlc3MpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZT4gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oYmFzZUFkZHJlc3MpOwog
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZXMuYWRkKGJhc2VBZGRyZXNzLCBXVEZNb3ZlKHBh
Z2UpKTsKICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CmluZGV4IDJjOWMzYjBkZTg5ZWIzZTM4M2Y0Y2JkY2YyMTJkMjY4YzFjMTlkYmEuLjdmNjg1ODZj
MWMwMjg5YzBhMzI1MjJmZGU5ZTA2N2RmMWY0MWUyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBjbGFzcyBMb3dlclRv
QWlyIHsKICAgICB2b2lkIHByaW50KFZhbHVlKiBvcmlnaW4sIEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gcHJpbnRMaXN0ID0gUHJpbnRlcjo6bWFrZVByaW50
UmVjb3JkTGlzdChhcmd1bWVudHMuLi4pOwotICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0
YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtl
X3VuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOworICAgICAgICBhdXRvIHBy
aW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwobWFrZVVuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOwogICAgICAg
ICBJbnN0IGluc3QoQWlyOjpQYXRjaCwgb3JpZ2luLCBBcmc6OnNwZWNpYWwocHJpbnRTcGVjaWFs
KSk7CiAgICAgICAgIFByaW50ZXI6OmFwcGVuZEFpckFyZ3MoaW5zdCwgc3RkOjpmb3J3YXJkPEFy
Z3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAgICAgICAgIGFwcGVuZChXVEZNb3ZlKGluc3QpKTsK
QEAgLTEzMDgsNyArMTMwOCw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgIHsKICAgICAgICAg
aWYgKCFmaWVsZCkgewogICAgICAgICAgICAgZmllbGQgPSBzdGF0aWNfY2FzdDxUKj4oCi0gICAg
ICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOworICAgICAgICAgICAgICAgIG1fY29k
ZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLikpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggZmZjYjJkNGUyNzE0NDI5
NzBlNTQ2NDM2NjcwZjdmMjlkZWIxYWIxYy4uMmVjY2RhYzA0OWU2OGQxMTNlMjNmOTdmMjQzNTNh
NWQ0YWFhM2I5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogUHJvY2VkdXJl
OjpQcm9jZWR1cmUoKQogICAgIDogbV9jZmcobmV3IENGRygqdGhpcykpCiAgICAgLCBtX2xhc3RQ
aGFzZU5hbWUoImluaXRpYWwiKQotICAgICwgbV9ieXByb2R1Y3RzKHN0ZDo6bWFrZV91bmlxdWU8
T3BhcXVlQnlwcm9kdWN0cz4oKSkKKyAgICAsIG1fYnlwcm9kdWN0cyhtYWtlVW5pcXVlPE9wYXF1
ZUJ5cHJvZHVjdHM+KCkpCiAgICAgLCBtX2NvZGUobmV3IEFpcjo6Q29kZSgqdGhpcykpCiB7CiAg
ICAgbV9jb2RlLT5zZXROdW1FbnRyeXBvaW50cyhtX251bUVudHJ5cG9pbnRzKTsKQEAgLTMxMSwy
OCArMzExLDI4IEBAIHZvaWQgUHJvY2VkdXJlOjpkZWxldGVPcnBoYW5zKCkKIERvbWluYXRvcnMm
IFByb2NlZHVyZTo6ZG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFtX2RvbWluYXRvcnMpCi0gICAg
ICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwor
ICAgICAgICBtX2RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPERvbWluYXRvcnM+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fZG9taW5hdG9yczsKIH0KIAogTmF0dXJhbExvb3BzJiBQcm9jZWR1cmU6Om5h
dHVyYWxMb29wcygpCiB7CiAgICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAg
ICBtX25hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX25hdHVyYWxMb29wczsKIH0KIAogQmFja3dhcmRzQ0ZHJiBQcm9jZWR1cmU6OmJh
Y2t3YXJkc0NGRygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9iYWNr
d2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAgICAg
ICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIAogQmFja3dhcmRzRG9taW5hdG9ycyYgUHJvY2Vk
dXJlOjpiYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKICAgICBpZiAoIW1fYmFja3dhcmRzRG9taW5h
dG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxC
YWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9y
cyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAq
bV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCogUHJv
Y2VkdXJlOjphZGREYXRhU2VjdGlvbihzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4g
ZGF0YVNlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0gbWFrZVVuaXF1ZTxEYXRh
U2VjdGlvbj4oc2l6ZSk7CiAgICAgdm9pZCogcmVzdWx0ID0gZGF0YVNlY3Rpb24tPmRhdGEoKTsK
ICAgICBtX2J5cHJvZHVjdHMtPmFkZChXVEZNb3ZlKGRhdGFTZWN0aW9uKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IDMz
ZjhhYmZlZmJjMWY4ZjkxNjU0NWEzYmRjYTE5NmIwY2M2NmMzOTguLmQ1ZDY5YzMwYTU5OTE3NWYy
ODE0ODM2Mjg2MzZmY2I3NzA2ODAxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIENDYWxsU3BlY2lhbCogQ29kZTo6Y0NhbGxT
cGVjaWFsKCkKIHsKICAgICBpZiAoIW1fY0NhbGxTcGVjaWFsKSB7CiAgICAgICAgIG1fY0NhbGxT
cGVjaWFsID0gc3RhdGljX2Nhc3Q8Q0NhbGxTcGVjaWFsKj4oCi0gICAgICAgICAgICBhZGRTcGVj
aWFsKHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7CisgICAgICAgICAgICBhZGRT
cGVjaWFsKG1ha2VVbmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IG1fY0NhbGxTcGVjaWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcAppbmRleCBmMzZiOWIyZmU2NjgxNjBiODg5OWIwYzUwYjMxOTdkNzU4ODI0ZjgwLi45
NWNhYTAwNGQ4ZWIzOTIzMzBlMWNjYmI2MzlhNWNlZTc5Y2JjNzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAgICAgICAgIGRhdGFMb2co
Y29kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJl
Z2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4o
Y29kZSk7CisgICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gbWFr
ZVVuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2RlKTsKICAgICAgICAgY29k
ZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMtPnByZXBhcmVGb3JHZW5lcmF0aW9uKCk7
CiAKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci90ZXN0YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5j
cHAKaW5kZXggZWYxNTQ0YzA3YmIzMmE5MDM3ZjJjYjcxZTE1ZTc0YTliZTYxYmY5NC4uM2RjYTI5
Njc4OGIwMDEwNjhlMDFmNDIzZTExNmM3YzJhNGU3ZGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxC
Mzo6Q29tcGlsYXRpb24+IGNvbXBpbGUoQjM6OlByb2NlZHVyZSYgcHJvYykKICAgICBnZW5lcmF0
ZShwcm9jLmNvZGUoKSwgaml0KTsKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxs
cHRyKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVf
Q09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAidGVzdGFpciBjb21waWxhdGlv
biIpLCBwcm9jLnJlbGVhc2VCeXByb2R1Y3RzKCkpOwogfQogCkBAIC0xODU1LDcgKzE4NTUsNyBA
QCB2b2lkIHRlc3RJbnZhbGlkYXRlQ2FjaGVkVGVtcFJlZ2lzdGVycygpCiAgICAgcm9vdC0+YXBw
ZW5kKE1vdmUsIG51bGxwdHIsIEFyZzo6YmlnSW1tKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnRo
aW5ncykpLCBiYXNlKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBwYXRjaFBvaW50MVJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwg
PSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRT
cGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIC8vIElu
IFBhdGNocG9pbnQsIExvYWQgdGhpbmdzWzBdIC0+IHRtcC4gVGhpcyB3aWxsIG1hdGVyaWFsaXpl
IHRoZSBhZGRyZXNzIGluIHgxNyAoZGF0YU1lbW9yeVJlZ2lzdGVyKS4KICAgICBCMzo6UGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50MSA9IHBhdGNoUG9pbnQxUm9vdC0+YXBwZW5kTmV3PEIzOjpQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTkzMCw3
ICsxOTMwLDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQoKQogICAgIEdQUlJlZyBwaW5u
ZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQp
OwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNw
ZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIz
OjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VV
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBi
M1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpW
b2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgdm9pZCB0ZXN0QXJndW1l
bnRSZWdQaW5uZWQyKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
OwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwq
IHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6
OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50
U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwog
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxC
Mzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTIw
MDAsNyArMjAwMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkMygpCiAgICAgR1BSUmVn
IHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBp
bm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUu
YWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7Cisg
ICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwo
bWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxv
Y2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywg
QjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXgg
MTU1Y2E0YWI0NzBiMDE0NDJhZDk1NDNhOGFlMWZjMWZjNTlmN2UzYS4uMWM3YWQwZjk0ZTA2Yjhj
MzFiZmU3Y2M5NGQwNTUyYzQ3Nzk2MDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApA
QCAtMTg5LDcgKzE4OSw3IEBAIGV4dGVybiBMb2NrIGNyYXNoTG9jazsKIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNvbXBpbGVQcm9jKFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1
bnNpZ25lZCBvcHRMZXZlbCA9IE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkpCiB7CiAgICAg
cHJvY2VkdXJlLnNldE9wdExldmVsKG9wdExldmVsKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJlKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzEwODU5YWNlZDNkYjc4YjY2
NDk3NmEwOGI4ZTViNDhkNjUyYjJmMy4uNzdmYjY1ZGEwYjdhMDZjN2Q2NThiYWJkYjRlNTEwOGE3
OTE3ZWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBzdGF0ZS5zZXRTcGlsbFN0
YXRlRm9ySlNHZXR0ZXJTZXR0ZXIoc3BpbGxTdGF0ZSk7CiAKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFhY2Nlc3MuY2FsbExpbmtJbmZvKCkpOwotICAgICAgICAgICAgYWNjZXNzLm1fY2Fs
bExpbmtJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua0luZm8+KCk7CisgICAgICAgICAg
ICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBtYWtlVW5pcXVlPENhbGxMaW5rSW5mbz4oKTsKIAog
ICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGdlbmVyYXRlZCBhIHBvbHltb3JwaGljIGNhbGwg
c3R1YiB0aGF0IGp1bXBlZCBiYWNrIHRvIHRoZSBnZXR0ZXIKICAgICAgICAgICAgIC8vIHN0dWIs
IHdoaWNoIHRoZW4ganVtcGVkIGJhY2sgdG8gdGhlIG1haW4gY29kZSwgdGhlbiB3ZSdkIGhhdmUg
YSByZWFjaGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCmluZGV4IDJiZDlmZTY1MTk5ZDA3ZjE3
M2UzODMwZGM3NGU0NjdlYjlkNTQxZmMuLjkyNTdmYzIyNjY1MjlmODYxMzdkNWRhZDhjOTI0OTcx
ODM5MDQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlU25pcHBldFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNz
IFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMgOiBwdWJsaWMgQWNjZXNzQ2FzZVNu
aXBwZXRQYXJhbXM6OlNsb3dQCiAgICAgdm9pZCBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6YWRk
U2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVy
cyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIHN0ZDo6
dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKICAgICB7IFwKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCB0byA9IGppdC5sYWJlbCgpOyBcCi0gICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzPENDYWxs
SGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIF9fVkFfQVJHU19f
Pj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKKyAgICAgICAgbV9nZW5l
cmF0b3JzLmFwcGVuZChtYWtlVW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVu
dHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgX19W
QV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAogICAgIH0g
XAogCiBTTklQUEVUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKaW5kZXggMzNiYjBjMDY2MzUzODFlODk4ZjY1YTg3NGYxZjM2YThjOTQ4MjNhZi4u
MTBjNjViYjlkZDcwOWE5YWY3YWJhNmNlYjhhOWI3MzU5NzcxNjQxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAg
LTY1LDE1ICs2NSwxNSBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgLy8gQ3JlYXRlIHRo
ZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNh
cGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwogCi0gICAgYXV0byBlbnRyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5
QmxvY2spOwotICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZW50
cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpF
bnRyeUJsb2NrKTsKKyAgICBhdXRvIGZpcnN0QmxvY2sgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFz
aWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKICAgICBsaW5rQmxvY2tz
KGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAogICAgIGFwcGVuZEJsb2NrKFdURk1v
dmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJsb2Nr
LmdldCgpOwogICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCi0gICAgYXV0
byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFz
aWNCbG9jazo6RXhpdEJsb2NrKTsKKyAgICBhdXRvIGV4aXQgPSBtYWtlVW5pcXVlPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBu
ZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKICAg
ICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBqdW1wIHRhcmdldCwgdGhlbiBp
dCdzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBiYXNpYyBibG9jay4KICAgICAgICAgaWYgKGlzSnVt
cFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5z
dHJ1Y3Rpb25Jc0xlYWRlcikgewotICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0cnVjdGlvbik7CisgICAgICAgICAgICBh
dXRvIG5ld0Jsb2NrID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGluc3RydWN0aW9u
KTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKICAgICAgICAgICAgIGFw
cGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCmluZGV4IGQ4ZGFjMTU4NWZhYjJiOTk4YzFlNWQ4ODc1MmJhMTJkZjZkYWRiZGUuLjM5M2Yx
ODI0ZTQxYTRiZWI1MTRjNjJhNjk2ZjMzYTgzNzI0OTVjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAg
dm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiAKIHZvaWQgQ2FsbExpbmtJbmZv
OjpzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRhJiBzaHVmZmxl
RGF0YSkKIHsKLSAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxG
cmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0YSk7CisgICAgbV9mcmFtZVNodWZmbGVEYXRhID0g
bWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggZWYxY2FiZmE3MThiMDgwZDdmM2U4NjM3ZjlmOTRmNjA1ODZlZTRlOC4uMzlh
MjNiNGM3ZjQ3ZDhmY2U1ZTMwZWVjYTU1MGU3N2RhZDMxNTg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKIENvZGVCbG9jazo6SklU
RGF0YSYgQ29kZUJsb2NrOjplbnN1cmVKSVREYXRhU2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImKQogewogICAgIEFTU0VSVCghbV9qaXREYXRhKTsKLSAgICBtX2ppdERhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVERhdGE+KCk7CisgICAgbV9qaXREYXRhID0gbWFrZVVuaXF1ZTxKSVREYXRh
PigpOwogICAgIHJldHVybiAqbV9qaXREYXRhOwogfQogCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCB1
bnNpZ25lZCBDb2RlQmxvY2s6OnJhcmVDYXNlUHJvZmlsZUNvdW50Rm9yQnl0ZWNvZGVPZmZzZXQo
Y29uc3QgQ29uY3VycmVudEpTTG9jawogdm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdp
c3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycykKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1fY2Fs
bGVlU2F2ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
KGNhbGxlZVNhdmVSZWdpc3RlcnMpOworICAgIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX2NhbGxl
ZVNhdmVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihjYWxsZWVT
YXZlUmVnaXN0ZXJzKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3Rl
cnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3RlckF0T2Zmc2V0
TGlzdCkKQEAgLTE3OTAsNyArMTc5MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjplbnN1cmVDYXRjaExp
dmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0U2xvdyhjb25zdCBPcENhdGNoCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKICAgICAgICAgbGl2ZU9w
ZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CiAKLSAgICBhdXRv
IHByb2ZpbGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
PihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICBhdXRvIHByb2ZpbGVzID0gbWFrZVVuaXF1ZTxW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKICAgICBS
RUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCiAgICAg
ICAgIHByb2ZpbGVzLT5tX2J1ZmZlci5nZXQoKVtpXS5tX29wZXJhbmQgPSBsaXZlT3BlcmFuZHNb
aV0ub2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggODcwNjhiYTY1ZGQ4NWMyM2ZiZTRhNDkwZTk3NGE3MjgxZjI1NjA0Yy4uMzE0MzhlMGFj
NTA2OWIyNzQ5Njk4ODg2YWIxMTIwMDc2YmNiNzNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTQzLDcgKzk0Myw3IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gcmFy
ZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICAgICAgYXV0byBy
YXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOyAvLyBtX2NhdGNoUHJvZmlsZXMgY2FuIGJlIHRvdWNoZWQgZnJvbSBjb21w
aWxlciB0aHJlYWRzLgogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdURk1vdmUocmFyZURhdGEp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmNwcAppbmRleCAyZDk0MzFjZjBiMTQ0ZmEzYTJjMjIxYTY2ZTk0MDcwYzc3NTBl
MGUwLi5iMWEwMWZmYTRkOTM0OGZlY2IyNGM5Njg4YmM4MDA1MmY5Mzg4NmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgYm9vbCBFeGl0UHJvZmlsZTo6YWRkKENvZGVCbG9jayogb3duZXIsIGNvbnN0
IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgc2VlbiBhbnkg
ZnJlcXVlbnQgZXhpdHMgdGhlbiBjcmVhdGUgdGhlIGxpc3QgYW5kIHB1dCB0aGlzIHNpdGUKICAg
ICAvLyBpbnRvIGl0LgogICAgIGlmICghcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzKSB7Ci0g
ICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPEZyZXF1ZW50RXhpdFNpdGU+PigpOworICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0
U2l0ZXMgPSBtYWtlVW5pcXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKICAgICAgICAg
cHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzLT5hcHBlbmQoc2l0ZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKaW5kZXggNGY0OGExZDZj
OTg3MjJlNWFjMmVjZTg3ZTUwNDAyMzJmOWE1ZDZiMS4uNGZiMTE1NzMwMDNiNTJlZmQ5YTg2NmZi
M2JkZjc3NTA5OGNlZmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgdm9pZCBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlk
Q29tcGxldGUoQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiwKIFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1
bXA+JiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmVuc3VyZURlZmVycmVkU291cmNlRHVt
cCgpCiB7CiAgICAgaWYgKCFtX2RlZmVycmVkU291cmNlRHVtcCkKLSAgICAgICAgbV9kZWZlcnJl
ZFNvdXJjZUR1bXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+
PigpOworICAgICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IG1ha2VVbmlxdWU8VmVjdG9yPERl
ZmVycmVkU291cmNlRHVtcD4+KCk7CiAgICAgcmV0dXJuICptX2RlZmVycmVkU291cmNlRHVtcDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCmluZGV4IGRiOWFkMTYwYWMyODEzMGYzOTg0MWZmM2JmZWIzMmI2ODNkZGVhZDYuLmRmNGQ3
N2NlM2Y2M2I1MjAwNzU1NDRjNDFhMTZjYjIzMWQ3ZGZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKQEAgLTI0Myw3ICsyNDMsNyBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRF
eGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpHZXR0ZXI6IHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5r
U3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9IG1ha2VVbmlx
dWU8Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLmNh
bGxMaW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtTdGF0dXMg
PSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5j
cHAKaW5kZXggZmMxZjQ2MGRlOTY1NDFkOGZhMDk5Y2JiNDVmMjMwOWMyYTMzMzgwZi4uZWQ4ZDQ5
M2Y3ZWU2ZjFkYTJiOTA5YWQ1N2M2Mjc3MTgxM2MyZDZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBA
IEdldEJ5SWRWYXJpYW50JiBHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBvdGhlcikKICAgICBtX2N1c3RvbUFjY2Vzc29yR2V0dGVyID0gb3RoZXIubV9jdXN0
b21BY2Nlc3NvckdldHRlcjsKICAgICBtX2RvbUF0dHJpYnV0ZSA9IG90aGVyLm1fZG9tQXR0cmli
dXRlOwogICAgIGlmIChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5r
U3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExp
bmtTdGF0dXMpOworICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9j
YWxsTGlua1N0YXR1cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5jcHAKaW5kZXggMDkyOWQ2ZmI0MTI2NzRlZDdmMjA0MDQ1ZmI0MjVlYjdkMzhkM2M5My4uNmVl
YjE0NWIzMzc5NjYyYWYxYzE1MDAxOTA3NjcyN2EzOWVlMmJkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBDb21wcmVzc2Vk
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCgKICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KQogewogICAg
IGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExhenlPcGVy
YW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOworICAgICAgICBtX2RhdGEgPSBtYWtlVW5pcXVlPExh
enlPcGVyYW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOwogICAgIGVsc2UgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRhLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
aWYgKG1fZGF0YS0+YXQoaSkua2V5KCkgPT0ga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAppbmRleCBiNDllNGUyNDJl
NTJmMDgxMzE1ZTQ4ZmIxZTFiY2MyOTdlNTI4YWUwLi5hMWVjYjk0ZGQwZDE4NjcwODYzNTJmNTJi
NWI1OGMzMTkzZWVjZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBQb2x5
UHJvdG9BY2Nlc3NDaGFpbiB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IGNsb25lKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBv
bHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBv
bHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPFN0
cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4
IDIyZjQ1NTgxNGI4NGFmNGZlNzRjYWYyMzQwMWQzMGFkYWRhZTVjNmUuLjNiMzAyMzM5ZjAzNTBk
YWM0MjhmM2YwNGNjNzM1MmEzYWU1MjFiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNjE2LDcgKzYxNiw3IEBA
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiAg
ICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxv
Y2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFu
ZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CiAgICAgbV93YXRjaHBv
aW50cyA9IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwogICAgIGlmICghc3RhdGUud2Vha1Jl
ZmVyZW5jZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtS
ZWZlcmVuY2VzKSk7CisgICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsK
ICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKaW5kZXggYzJkOTUz
MjBjZWJkNTZkYmRjOTNlZWJkNmMzMTQwYTdkZjdjYzIwOS4uZDY0MmJjY2ZlNzk3NjZjNTI3OWJi
YzgxMDg3MDFlYjdmODU4MjRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OklubGluZWFibGU6IHsKICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiBjYWxsTGlu
a1N0YXR1cyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPENhbGxM
aW5rU3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICAgICAgbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gYWNjZXNzLmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZv
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwg
cHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAppbmRleCA1
ZDZiMjkwNDVjYTY3NWM1NmZhNzFkNTQ3NWExMTViMmRmNmYzYzVlLi43MmM2Y2FjODRmYjI3YmNm
NWU0MTdjNDk2ZTYzNjJmNzJlNmMwYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUHV0QnlJZFZh
cmlhbnQmIFB1dEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgUHV0QnlJZFZhcmlhbnQmIG90
aGVyKQogICAgIG1fY29uZGl0aW9uU2V0ID0gb3RoZXIubV9jb25kaXRpb25TZXQ7CiAgICAgbV9v
ZmZzZXQgPSBvdGhlci5tX29mZnNldDsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykK
LSAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0
dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9
IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAq
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmNwcAppbmRleCA5NmQyMmVjZmEwYTRjNzU2ZWRmZjYxZjAwMTNmNzI1OGU3ZDNmYmQ1
Li41M2YyMDhiY2FkZWQzZGVhMmRlZTE4YTBlODk2MDVjNDkwYTE5NWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFJlY29yZGVkU3RhdHVzZXM6OlJlY29yZGVkU3RhdHVzZXMoUmVjb3JkZWRT
dGF0dXNlcyYmIG90aGVyKQogCiBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRk
Q2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgQ2FsbExp
bmtTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOwogICAgIENhbGxMaW5rU3RhdHVzKiByZXN1bHQg
PSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVP
cmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01Myw3
ICs1Myw3IEBAIENhbGxMaW5rU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luCiAKIEdldEJ5SWRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVz
UHRyID0gbWFrZVVuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIEdldEJ5SWRTdGF0
dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNjEsNyArNjEsNyBAQCBHZXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRH
ZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sCiAgICAgCiBQdXRCeUlk
U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4sIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRv
IHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAg
ICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKICAg
ICBQdXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgcHV0cy5hcHBl
bmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTY5LDcgKzY5LDcgQEAgUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRT
dGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAog
CiBJbkJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEluQnlJZFN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBJbkJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAg
ICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5CeUlkU3RhdHVzPihzdGF0dXMp
OworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7
CiAgICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgaW5zLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4
IDMwYTFmMDU1MjU5ZTNkZWQxYTcxNjhlZTM1MjZmNzJjMDg0YmVlNWEuLmZjYzI5MTE4MDI0NGUw
YjMyMjllMmZkNzYzMDA3YmU3OWE4NzQxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2lu
dCogV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2UKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBrZXkpCiB7CiAgICAgaWYgKCFob2xkZXJSZWYpCi0gICAgICAgIGhvbGRlclJlZiA9IHN0ZDo6
bWFrZV91bmlxdWU8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0
dWJJbmZvKTsKKyAgICAgICAgaG9sZGVyUmVmID0gbWFrZVVuaXF1ZTxXYXRjaHBvaW50c09uU3Ry
dWN0dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOwogICAgIGVsc2UgewogICAgICAg
ICBBU1NFUlQoaG9sZGVyUmVmLT5tX2NvZGVCbG9jayA9PSBjb2RlQmxvY2spOwogICAgICAgICBB
U1NFUlQoaG9sZGVyUmVmLT5tX3N0dWJJbmZvID09IHN0dWJJbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDcy
MjJkNDgyYWQxZTVlMjg2Y2VmNTlkNGZmMWUxZjVlYjA3MTA3OGQuLjQ5MTk1ZDE1NzIxZDJjZGE0
Zjc0OGFlOGRiZTJhZjAwOWEyOGE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNj
ZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4oKTsKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQ
b2x5bW9ycGhpY0FjY2Vzcz4oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CiAgICAgICAgICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IGUwMDZkMTZiOWI4YTBmYzMwZjA0MzNjZGU2MDJlY2MzYjE2OGQ0MmUuLjJj
OWEwYjMwMWViMDk4ZTExNWVmMWUzNmIxMjdiZTI5ZTNhYmRhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDE0
LDcgKzQxNCw3IEBAIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgVW5saW5rZWRDb2RlQmxvY2s6
OmxpdmVuZXNzQW5hbHlzaXNTbG93KENvZGVCbG9jayogY29kCiAgICAgICAgIGlmICghbV9saXZl
bmVzcykgewogICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBjaGFuY2UgdHdvIGNvbXBpbGVyIHRo
cmVhZHMgcmFjZWQgdG8gdGhlIHNsb3cgcGF0aC4KICAgICAgICAgICAgIC8vIEdyYWJiaW5nIHRo
ZSBsb2NrIGFib3ZlIGRlZmVuZHMgYWdhaW5zdCBjb21wdXRpbmcgbGl2ZW5lc3MgdHdpY2UuCi0g
ICAgICAgICAgICBtX2xpdmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM+KGNvZGVCbG9jayk7CisgICAgICAgICAgICBtX2xpdmVuZXNzID0gbWFrZVVuaXF1
ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KGNvZGVCbG9jayk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCmluZGV4IDQzNzA5NTE5ZWI2MTZlMjY1MTA2ZWYxZDU1Mjk2MTdkNjQ1YzliYzku
LjUxMjUzNmMwZDQ0ODU3YTRjYTc2ZTgxM2ZlMTQ4MDNhOTczZmZhNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00MDIs
NyArNDAyLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkgewogICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBsb2NrRHVyaW5nTWFya2luZygqaGVhcCgpLCBjZWxsTG9jaygpKTsKLSAgICAgICAgICAgIG1f
cmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9y
YXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGZiZWM5ZjcyY2EyZmQxYTE4YmFjYjA3M2U2ODcy
NTRiNzBiOWViZTEuLjQ5ZDlkMmZkM2U2ZmU5ZmI0YjUyN2Y2NzdhYmQ1YmQ0YTUxMjI2Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoVk0mIHZtKQogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOwot
ICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgIG1fcmFy
ZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJldHVybiAqbV9yYXJlRGF0YTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IGU5NzY4NmFhM2VkY2RkOGQzZjliNTdjNGE2ZDEyM2JhYzlj
YjM5ODcuLjE3OGE2MWRmNjkxMzNhZmRjYzEyNzI4Y2JmZDk2ZWIzOWY0MmFlYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKQEAgLTQwMSw3ICs0MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVC
bG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCk7CisgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5v
ZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsK
ICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0b3ItPmdlbmVyYXRlKCk7
CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBp
bGVUaW1lcygpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApp
bmRleCBiY2Q3MmVhMDlmNWY3MTdhNjVmNjVkN2QyZWZjMTc1ZTAyM2U2OTkwLi5lYmFiYjU5ZDQz
NTlhOWUzNjRmMmNhM2FmNmFmZDBlZmQwMzkwYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBWTTsKIHR5cGVkZWYg
RXhlY1N0YXRlIENhbGxGcmFtZTsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlYnVnZ2VyKFZN
Jik7CiAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBmMjBh
MzU3ZWNiNzNhYTdlZmU0Y2IxMDdkMWNjYjdlOWRjOTAwMzM5Li4yNzY1NjkyNmE4ZDI5ZDI3ZWJl
ZWFhOWZmZGNhMjAzY2MyNWZhMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC01OCw3ICs1OCw3
IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpBYnN0cmFjdEludGVy
cHJldGVyKEdyYXBoJiBncmFwaCwgQWJzdHJhCiAgICAgLCBtX3N0YXRlKHN0YXRlKQogewogICAg
IGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgIG1fcGhpQ2hpbGRyZW4gPSBzdGQ6
Om1ha2VfdW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKKyAgICAgICAgbV9waGlDaGlsZHJl
biA9IG1ha2VVbmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggNWIwYzg3ZmZlZTUyYjJhOWU1MDExZTViZjhjNzFjMDEyOTQyZWZkMC4uZTY4M2E4
MjFiMjJiY2ZlNTZiMzllZjQxYTExZjFjMmRkYmQ2NjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwg
UGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFu
LmNvZGVCbG9jaygpKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5h
dGl2ZSgpKQotICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkK
KyAgICAsIG1fc3NhQ0ZHKG1ha2VVbmlxdWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRN
YWNoaW5lTG9jYWwoMCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAg
ICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3Rlcmlu
ZykKQEAgLTg2LDggKzg2LDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAg
ICAKICAgICBtX2hhc0RlYnVnZ2VyRW5hYmxlZCA9IG1fcHJvZmlsZWRCbG9jay0+d2FzQ29tcGls
ZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29k
ZUdlbmVyYXRpb24oKTsKICAgICAKLSAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZsb3dJbmRleGluZz4oKnRoaXMpOwotICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworICAgIG1faW5k
ZXhpbmdDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7CisgICAgbV9hYnN0
cmFjdFZhbHVlc0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhp
cyk7CiAKICAgICByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkp
OwogICAgIHRoaXMtPnN0cmluZ1N0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBGdWxsQnl0ZWNvZGVMaXZl
bmVzcyYgR3JhcGg6OmxpdmVuZXNzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGlmIChp
dGVyICE9IG1fYnl0ZWNvZGVMaXZlbmVzcy5lbmQoKSkKICAgICAgICAgcmV0dXJuICppdGVyLT52
YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxp
dmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gbWFrZVVuaXF1
ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlz
aXMoKS5jb21wdXRlRnVsbExpdmVuZXNzKGNvZGVCbG9jaywgKmxpdmVuZXNzKTsKICAgICBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0ID0gKmxpdmVuZXNzOwogICAgIG1fYnl0ZWNvZGVMaXZl
bmVzcy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGxpdmVuZXNzKSk7CkBAIC0xMTE1LDcgKzExMTUs
NyBAQCBCeXRlY29kZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUtpbGxzLmVuZCgpKQogICAgICAgICByZXR1cm4g
Kml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBr
aWxscyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVLaWxscz4ga2lsbHMgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7
CiAgICAgY29kZUJsb2NrLT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0ZUtpbGxzKGNvZGVCbG9j
aywgKmtpbGxzKTsKICAgICBCeXRlY29kZUtpbGxzJiByZXN1bHQgPSAqa2lsbHM7CiAgICAgbV9i
eXRlY29kZUtpbGxzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUoa2lsbHMpKTsKQEAgLTE1NTMsNyAr
MTU1Myw3IEBAIENQU0NGRyYgR3JhcGg6OmVuc3VyZUNQU0NGRygpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFt
X2Nwc0NGRykKLSAgICAgICAgbV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4oKnRo
aXMpOworICAgICAgICBtX2Nwc0NGRyA9IG1ha2VVbmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2Nwc0NGRzsKIH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgQ1BTRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwogICAgIGlmICghbV9jcHNEb21p
bmF0b3JzKQotICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxD
UFNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc0RvbWluYXRvcnM7CiB9CiAK
QEAgLTE1NjksNyArMTU2OSw3IEBAIFNTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FEb21p
bmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNT
QUNvbnZlcnNpb24pOwogICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQotICAgICAgICBtX3NzYURv
bWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAg
ICAgbV9zc2FEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIENQ
U05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29wcygpCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgZW5z
dXJlQ1BTRG9taW5hdG9ycygpOwogICAgIGlmICghbV9jcHNOYXR1cmFsTG9vcHMpCi0gICAgICAg
IG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0
aGlzKTsKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPENQU05hdHVyYWxM
b29wcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1
ODcsNyArMTU4Nyw3IEBAIFNTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZVNTQU5hdHVyYWxM
b29wcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgZW5zdXJlU1NB
RG9taW5hdG9ycygpOwogICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fc3Nh
TmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsK
KyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPFNTQU5hdHVyYWxMb29wcz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1OTYsNyAr
MTU5Niw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiAgICAg
Ly8gV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSB0byB3b3JrIG92ZXIg
Q1BTLCBidXQgdG9kYXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4KICAgICBSRUxFQVNFX0FTU0VS
VChtX2Zvcm0gPT0gU1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9i
YWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAg
ICAgICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIApAQCAtMTYwNCw3ICsxNjA0LDcgQEAgQmFj
a3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNE
b21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNEb21p
bmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0
dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE2MTIsNyArMTYxMiw3IEBAIENv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlm
ICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKLSAgICAgICAgbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXM+KCp0aGlzKTsKKyAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG1ha2VV
bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
Y29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNjM5MDQzZTllMjdmYmUwZTBiOTJhYjQ2YTY2
OWJlMTQxMDUwMzM3MC4uZjJiNjY0MDJlM2FkMGU3MmRmY2UwNWI2NWFmM2ZjOTI2ZDAwOWRhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgSklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBoJiBkZmcpCiAgICAgLCBt
X3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcihkZmcubV92bSkKIHsKICAgICBpZiAoVU5MSUtFTFko
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgbV9ncmFwaC5tX3ZtLm1fcGVyQnl0ZWNvZGVQcm9m
aWxlcikpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNhc3Nl
bWJsZXI+KGRmZyk7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxEaXNhc3Nl
bWJsZXI+KGRmZyk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgbV9qaXRDb2RlLT50aWVyVXBJ
bkxvb3BIaWVyYXJjaHkgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnRpZXJVcEluTG9vcEhpZXJh
cmNoeSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIHRpZXJVcEJ5dGVjb2RlIDogbV9ncmFwaC5tX3Bs
YW4udGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMoKSkKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lk
IEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgfQogCiAgICAg
aWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAg
ICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1Rv
Q29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtC
dWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VV
bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIpLCBsaW5rQnVmZmVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hl
Y2soSklUQ29tcGlsZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzdGFja092ZXJm
bG93KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAg
ICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKLSAgICBtX3NwZWN1bGF0
aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3Bl
Y3VsYXRpdmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAKICAgICAvLyBQ
bGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpT
U3RhY2suCiAgICAgSnVtcExpc3Qgc3RhY2tPdmVyZmxvdzsKQEAgLTQwMiw5ICs0MDIsOSBAQCB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBtX3NwZWN1bGF0aXZlLT5jcmVhdGVPU1JF
bnRyaWVzKCk7CiAgICAgc2V0RW5kT2ZDb2RlKCk7CiAKLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGls
YXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZm
ZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAo
bGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxh
bi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgu
bV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVl
PEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkK
IAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNl
dEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZm
ZXIpKSk7CiB9CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
RnVuY3Rpb24oKQogICAgIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKTsKIAogICAgIC8vID09
PSBGdW5jdGlvbiBib2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KLSAgICBtX3NwZWN1bGF0aXZlID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3BlY3VsYXRp
dmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAgICAgY29tcGlsZUJvZHko
KTsKICAgICBzZXRFbmRPZk1haW5QYXRoKCk7CiAKQEAgLTUwNyw5ICs1MDcsOSBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIHNldEVuZE9mQ29kZSgpOwogCiAgICAg
Ly8gPT09IExpbmsgPT09Ci0gICAgYXV0byBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxM
aW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Cisg
ICAgYXV0byBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZh
aWxUb0FsbG9jYXRlKCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0
ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOworICAgICAg
ICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+
KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbGluaygqbGlu
a0J1ZmZlcik7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1
bmN0aW9uKCkKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRo
QXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oYXJpdHlD
aGVjayk7CiAKLSAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1
ZTxKSVRGaW5hbGl6ZXI+KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5p
cXVlPEpJVEZpbmFsaXplcj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2spKTsKIH0K
IApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVD
b25zdGFudChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIGlm
ICghbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cykKLSAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNv
bnN0YW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFnPGRvdWJsZT4+KCk7CisgICAgICAgIG1fZ3Jh
cGgubV9kb3VibGVDb25zdGFudHMgPSBtYWtlVW5pcXVlPEJhZzxkb3VibGU+PigpOwogCiAgICAg
ZG91YmxlKiBhZGRyZXNzSW5Db25zdGFudFBvb2wgPSBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRz
LT5hZGQoKTsKICAgICAqYWRkcmVzc0luQ29uc3RhbnRQb29sID0gdmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAK
aW5kZXggYmI4MDAyNzRkZGNiNjMwMzQ3ODM3MzdlMzhhZDFlNjFlOWM1ZWEwNC4uYTk0NDA0NzQ1
OTI1MjE4NDViYTMxODgzN2IxM2I5ZjRhMzE3ZWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBjbGFzcyBMaXZlbmVzc0FuYWx5c2lzUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAsIG1fbGl2ZUF0VGFpbChtX2dyYXBoKQogICAgIHsKICAgICAgICAgbV9ncmFwaC5tX2lu
ZGV4aW5nQ2FjaGUtPnJlY29tcHV0ZSgpOwotICAgICAgICBtX3dvcmtzZXQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1JbmRpY2VzKCkpOwor
ICAgICAgICBtX3dvcmtzZXQgPSBtYWtlVW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGlu
Z0NhY2hlLT5udW1JbmRpY2VzKCkpOwogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IDM0YWNiYzFmZTIyZmI3N2YzNTgwZGEzNjc5
OWM4MjE0YmViYzlkNjIuLmI2OTQ5YWEwMzVjMTJmYTc0OWQ1ODBjYzdjMmFlY2NhOGQ5MmMxNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBA
IFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBp
ZiAobV9tb2RlID09IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAgICAgICBib29sIHJlc3VsdCA9
IHBlcmZvcm1PU1JFbnRyeXBvaW50Q3JlYXRpb24oZGZnKTsKICAgICAgICAgaWYgKCFyZXN1bHQp
IHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5h
bGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAg
ICAgfQogICAgICAgICBSVU5fUEhBU0UocGVyZm9ybUNQU1JldGhyZWFkaW5nKTsKQEAgLTM5OCw3
ICszOTgsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCgpCiAgICAgY2FzZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICNpZiBFTkFCTEUoRlRMX0pJVCkK
ICAgICAgICAgaWYgKEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkg
ewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFs
aXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxl
ZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtNDc4LDcgKzQ3OCw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQ
bGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1XYXRj
aHBvaW50Q29sbGVjdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxl
KGRmZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBt
X2ZpbmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAg
ICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCmluZGV4IDg3MTU5NWIxZmYy
NTliZWU0NGM3MWNlMDNkN2Q4ZThiZDY0MzY1MzcuLjUzNGQ2NGI1MzhmYTE4MGFmNDhlODlkNGY4
MjYwMmZiNDVjOTIxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBTU0FDb252
ZXJzaW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigp
OwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwotICAgICAgICAgICAg
YmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2sp
OworICAgICAgICAgICAgYmxvY2stPnNzYSA9IG1ha2VVbmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0
YT4oYmxvY2spOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZW50cnlw
b2ludEluZGV4VG9Bcmd1bWVudHNCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDdjZjQyNTIxYTYyMTE3OGZmODUxMmFm
ZjlmZmZhMzI1MjAwMjI0ZDYuLmNkY2RhYTYwZDg5OGEzYjY2ZDdiMjk4ZjY2ODE4Yzc5ZGM0OGM4
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwKICAgICBSZXN1bHRUeXBl
IHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oCisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KAogICAgICAgICBmcm9t
LCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50
cy4uLik7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlw
ZSwgdHlwZW5hbWUgRGVzdGluYXRpb25UeXBlLCB0eXBlbmFtZSBTb3VyY2VUeXBlLCB1bnNpZwog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAog
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFNvdXJjZVR5cGUgc291cmNl
W251bWJlck9mQXNzaWdubWVudHNdLCBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25bbnVtYmVy
T2ZBc3NpZ25tZW50c10pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5n
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwg
bnVtYmVyT2ZBc3NpZ25tZW50cz4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Ns
b3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIG51
bWJlck9mQXNzaWdubWVudHM+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbiwgc291
cmNlKTsKIH0KIApAQCAtMjQ5LDcgKzI0OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFy
cmF5WzFdID0geyBzb3VyY2UgfTsKICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25BcnJh
eVsxXSA9IHsgZGVzdGluYXRpb24gfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3Np
Z25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VU
eXBlLCAxPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0
b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMT4+KAogICAgICAgICBm
cm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIApAQCAtMjU5LDcg
KzI1OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5WzJdID0geyBzb3VyY2UxLCBz
b3VyY2UyIH07CiAgICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0aW9uQXJyYXlbMl0gPSB7IGRl
c3RpbmF0aW9uMSwgZGVzdGluYXRpb24yIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291
cmNlVHlwZSwgMj4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2Vu
ZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDI+PigKICAgICAg
ICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjA3
YTliNjliNDg4NTViNTZiMWY4MzcyMDY1MWMyYmM3NmUzOGY5ZS4uNzBlNzA1ZDc4NDkzMmQ5ZDNm
YzI3MjQ5MTMyZWZkM2UzZTVkNjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZQogICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0
IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0J3MKICAgICAvLyB3aGF0IHRoaXMgY3VzdG9t
IENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90
CiAgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHku
IDotLwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1h
a2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0R1BSLCBzdG9yYWdl
R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOwogCkBAIC04OTksNyArODk5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZSwgR1BSUmVnIGJh
c2VSZWcsIEdQUlJlZyBwcm9wZXJ0eVJlZykKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBT
bG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAg
ICB9CiAgICAgCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxBcnJh
eWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5p
cXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93UGF0aCwgdGhpcywg
bm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHRlbXBHUFIsIHN0cnVjdHVyZUdQUikpOwogICAg
IAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwpAQCAtMjI0MiwxMCArMjI0MiwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlKiBub2RlKQog
ICAgICAgICB9CiAgICAgICAgIGlmIChwcm90b3R5cGVDaGFpbklzU2FuZSkgewogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhH
ZW5lcmF0b3I+KAogICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVn
cyhzY3JhdGNoUmVnKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbHNlCi0gICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1h
a2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAg
ICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdSZWcsIHNjcmF0
Y2hSZWcpLAogICAgICAgICAgICAgICAgIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAjZW5kaWYK
QEAgLTc2MTksNyArNzYxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVE
aXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwK
ICAgICAgICAgICAgICAgICBrbm93bkxlbmd0aCwgbWluQ2FwYWNpdHkpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBhdXRvIGdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbENyZWF0ZURp
cmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYXV0byBnZW5lcmF0b3Ig
PSBtYWtlVW5pcXVlPENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4o
CiAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGxlbmd0
aEdQUiwgbWluQ2FwYWNpdHkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KGdlbmVyYXRvcikpOwogICAgIH0KQEAgLTg0MzksNyArODQzOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJs
ZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVT
dHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgdGVtcFZh
bHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSKSk7CiAgICAgfQogCkBAIC05MTM1LDcgKzkx
MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJlQ2hlY2soTm9kZSogbm9k
ZSwgR1BSUmVnIGNlbGxHUFIsIEdQUlJlZyB0ZW1wRwogICAgICAgICBHUFJSZWcgc3RydWN0dXJl
R1BSOwogICAgICAgICAKICAgICAgICAgaWYgKHRlbXBHUFIgPT0gSW52YWxpZEdQUlJlZykgewot
ICAgICAgICAgICAgc3RydWN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRo
aXMpOworICAgICAgICAgICAgc3RydWN0dXJlID0gbWFrZVVuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRo
aXMpOwogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLT5ncHIoKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSB0ZW1wR1BSOwpAQCAtMTMxNzYs
NyArMTMxNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJh
eVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgbV9qaXQubXV0YXRv
ckZlbmNlKCptX2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9j
YXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAogICAgICAgICBz
dHJ1Y3R1cmUsCiAgICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSkgOiBzdHJ1Y3R1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGZhMzk2ZjRmMTkyYThi
YjRhZWY5OWQwMzcxOTI0YTJhMzhjNjQ1ZTguLmJhNjEyOGVmZTliYjM2OGZlM2IwNjYyM2I1MWVl
M2VlYWQzYzRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC05NSw4ICs5NSw4IEBAIGNs
YXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
Y2FzZSBQaGFzZU1vZGU6Okdsb2JhbDogewogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogCi0gICAgICAgICAgICBtX3N0YXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7Ci0gICAg
ICAgICAgICBtX2ludGVycHJldGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEludGVycHJl
dGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUpOworICAgICAgICAg
ICAgbV9zdGF0ZSA9IG1ha2VVbmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+KG1fZ3JhcGgpOwor
ICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IG1ha2VVbmlxdWU8QWJzdHJhY3RJbnRlcnByZXRl
cjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0YXRlKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9pc0NvbnZlcmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCkBAIC0x
MDcsOCArMTA3LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgLy8gdG93YXJkcyBiZWxpZXZpbmcgdGhhdCBhbGwgbm9kZXMg
bmVlZCBiYXJyaWVycy4gIk5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlCiAgICAgICAgICAgICAv
LyBzYXlpbmcgdGhhdCB0aGUgbm9kZSBpcyBpbiBhIHBhc3QgZXBvY2guICJOb3QgbmVlZGluZyBh
IGJhcnJpZXIiIGlzIGxpa2Ugc2F5aW5nCiAgICAgICAgICAgICAvLyB0aGF0IHRoZSBub2RlIGlz
IGluIHRoZSBjdXJyZW50IGVwb2NoLgotICAgICAgICAgICAgbV9zdGF0ZUF0SGVhZCA9IHN0ZDo6
bWFrZV91bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKLSAgICAgICAg
ICAgIG1fc3RhdGVBdFRhaWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9k
ZSo+Pj4obV9ncmFwaCk7CisgICAgICAgICAgICBtX3N0YXRlQXRIZWFkID0gbWFrZVVuaXF1ZTxC
bG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0
VGFpbCA9IG1ha2VVbmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgQmxvY2tMaXN0IHBvc3RPcmRlciA9IG1fZ3JhcGguYmxv
Y2tzSW5Qb3N0T3JkZXIoKTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dvcmtsaXN0LmNwcAppbmRleCBlNmMyMjIxZWUzMDE1NDRjNzJhOWNlODM1Zjk4MGZmMzZm
MDI0YjdkLi44ZjkzMDM0YjBjNmY5MGJhNjZmNGJmNWM1M2JlMWI0ZjBmYmE3NGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IGNsYXNzIFdvcmtsaXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1dG9tYXRpY1RocmVhZCB7CiAg
ICAgICAgIGlmIChtX3JlbGF0aXZlUHJpb3JpdHkpCiAgICAgICAgICAgICBUaHJlYWQ6OmN1cnJl
bnQoKS5jaGFuZ2VQcmlvcml0eShtX3JlbGF0aXZlUHJpb3JpdHkpOwogICAgICAgICAKLSAgICAg
ICAgbV9jb21waWxhdGlvblNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvblNjb3Bl
PigpOworICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBtYWtlVW5pcXVlPENvbXBpbGF0aW9u
U2NvcGU+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBB
YnN0cmFjdExvY2tlciYpIG92ZXJyaWRlCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXb3JrbGlz
dDo6ZmluaXNoQ3JlYXRpb24odW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQ
cmlvcml0eSkKIAogdm9pZCBXb3JrbGlzdDo6Y3JlYXRlTmV3VGhyZWFkKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaHJlYWREYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWREYXRhPih0aGlz
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IG1ha2VVbmlxdWU8VGhy
ZWFkRGF0YT4odGhpcyk7CiAgICAgZGF0YS0+bV90aHJlYWQgPSBhZG9wdFJlZihuZXcgVGhyZWFk
Qm9keShsb2NrZXIsICp0aGlzLCAqZGF0YSwgbV9sb2NrLCBtX3BsYW5FbnF1ZXVlZC5jb3B5UmVm
KCksIHJlbGF0aXZlUHJpb3JpdHkpKTsKICAgICBtX3RocmVhZHMuYXBwZW5kKFdURk1vdmUoZGF0
YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9E
aXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuY3BwCmluZGV4IDE5YjExNWM5ZmRkNjdjYmM4YWUxMDljNjQ0NTc0MjhiYTNhZGZh
NTMuLjAwYmRhNjU3Mjc5Y2Y3YTk5ZGJhYjE0OWIwOWM3MDNkNjhiMzViZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKQEAg
LTEzMCw3ICsxMzAsNyBAQCBBc3luY2hyb25vdXNEaXNhc3NlbWJsZXImIGFzeW5jaHJvbm91c0Rp
c2Fzc2VtYmxlcigpCiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCiAgICAgY29uc3Qg
Q1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQ
dHJUYWc+JiBjb2RlUmVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4KQogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PERpc2Fzc2VtYmx5VGFzaz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNr
PiB0YXNrID0gbWFrZVVuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CiAgICAgdGFzay0+aGVhZGVy
ID0gc3RyZHVwKGhlYWRlci5kYXRhKCkpOyAvLyBZdWNrISBXZSBuZWVkIHRoaXMgYmVjYXVzZSBD
U3RyaW5nIGRvZXMgcmFjeSByZWZjb3VudGluZy4KICAgICB0YXNrLT5jb2RlUmVmID0gY29kZVJl
ZjsKICAgICB0YXNrLT5zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwLmNwcAppbmRleCA5MGFlMmY0ZmUwNmExNTJjYWU1Nzg1ZTJjMDNjOTk5
YjY4MzJiYzFiLi5lYzgwZWE2N2IyNTZmODkxOGQ0ODgzYThjNTJiOGYzNzk1ODNhYmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCkBAIC0xNTcs
MTEgKzE1NywxMSBAQCBjb25zdCBBYnN0cmFjdEhlYXAmIEluZGV4ZWRBYnN0cmFjdEhlYXA6OmF0
U2xvdyhwdHJkaWZmX3QgaW5kZXgpCiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5k
ZXgpID49IG1fc21hbGxJbmRpY2VzLnNpemUoKSk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKCFt
X2xhcmdlSW5kaWNlcykpCi0gICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gc3RkOjptYWtlX3VuaXF1
ZTxNYXBUeXBlPigpOworICAgICAgICBtX2xhcmdlSW5kaWNlcyA9IG1ha2VVbmlxdWU8TWFwVHlw
ZT4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBYnN0cmFjdEhlYXA+JiBmaWVsZCA9IG1fbGFy
Z2VJbmRpY2VzLT5hZGQoaW5kZXgsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
IWZpZWxkKSB7Ci0gICAgICAgIGZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEhlYXA+
KCk7CisgICAgICAgIGZpZWxkID0gbWFrZVVuaXF1ZTxBYnN0cmFjdEhlYXA+KCk7CiAgICAgICAg
IGluaXRpYWxpemUoKmZpZWxkLCBpbmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA1ZDA0YjcyZjA0ODMxZDA2MzAyMzA0ZDFlYjdlNDky
OWQ0ODA0MjdmLi40NjM1Y2M5NmY5MTA5MWY3M2YwOGQxZjc1MmIwNDdkMTA1M2JmYjQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
dm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJl
c3VsdCkKICAgICBWTSYgdm0gPSBncmFwaC5tX3ZtOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNh
c3NlbWJseSgpKQotICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKHN0
ZDo6bWFrZV91bmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKKyAgICAgICAgc3RhdGUu
cHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2Vt
Ymxlcj4oKSk7CiAKICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0
ZS5ncmFwaCwgc2FmZXBvaW50UmVzdWx0KTsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBjb21waWxl
KFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4gcmVnaXN0ZXJPZmZzZXRzID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0
T2Zmc2V0TGlzdD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkp
OworICAgICAgICBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5j
YWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CiAgICAgaWYgKHNob3VsZER1bXBEaXNh
c3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBmb3IgIiwgQ29kZUJsb2Nr
V2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiOiAiLCAqcmVnaXN0ZXJP
ZmZzZXRzLCAiXG4iKTsKICAgICBjb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoV1RG
TW92ZShyZWdpc3Rlck9mZnNldHMpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIGNvbXBpbGUo
U3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
bG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKIAotICAgIHN0YXRlLmZpbmFs
aXplci0+YjNDb2RlTGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0
LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgc3RhdGUuZmluYWxpemVy
LT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIAogICAgIGlmIChzdGF0ZS5maW5hbGl6ZXItPmIz
Q29kZUxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgc3RhdGUuYWxs
b2NhdGlvbkZhaWxlZCA9IHRydWU7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBjb21waWxlKFN0
YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAKICAg
ICBCMzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9jLT5yZWxlYXNlUENUb09y
aWdpbk1hcCgpOwogICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5n
KCkpCi0gICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3Vu
aXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZN
b3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7Cisg
ICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29k
ZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1h
cCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7CiAKICAgICBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihzdGF0ZS5wcm9jLT5lbnRyeXBv
aW50TGFiZWwoMCkpOwogICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcAppbmRleCAxNjUzMzUwOWNkMGI0ODJjNzRiY2E2
NzMxODc2M2YyZTBmMDlkZGYxLi5jM2Y5MzM5MmYyNmU2ZmM5NWY5YzJjYzU5MjllZDM0YzZiYzMw
YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIERGRzsKIAogdm9pZCBmYWlsKFN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBzdGF0ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVk
RmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3BsYW4pKTsKKyAgICBzdGF0ZS5ncmFwaC5tX3BsYW4u
c2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3Bs
YW4pKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKaW5kZXggMDg1NDA1NmVjN2QxNjJiMTFjZGMyMWNkNzhmZTE1MTdmN2Fj
ZjNlYi4uOTVkYjY5NjFlOGU5MDc3MGNkNmU1NTY3MzAyMmI0NDc2M2I1ODA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAg
ICAgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOwogCi0gICAgICAgICAg
ICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBtYWtl
VW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwp
OwogICAgICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAg
ICAgICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbWFpblBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCi0gICAgICAgIGxpbmtC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOworICAgICAgICBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5r
QnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAg
aWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgIHN0YXRl
LmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFmMWJhNGJmOTBh
OGZkMGJhMjUwMmM2NDdlMmMxNzE0MTIyZGU3ZDQuLjA5YjM0MjczY2JiN2NhYjQ0Y2Q4NjNlOTli
Mjg1OTBlODdjOTRiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTE1MDgwLDcgKzE1MDgwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGdlbmVyYXRv
ckp1bXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbDxKSVRUaHVua1B0clRhZz4odm0tPmdldENUSVN0dWIobGF6eVNsb3dQYXRoR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5
U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF6eVNsb3dQYXRoPigp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF6eVNs
b3dQYXRoPiBsYXp5U2xvd1BhdGggPSBtYWtlVW5pcXVlPExhenlTbG93UGF0aD4oKTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmtlZFBhdGNoYWJsZUp1bXAgPSBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KGxpbmtCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVKdW1wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTdGF0ZS5jcHAKaW5kZXggNjUzZWM2ZjY5NjA0OWI3NTJhYzI0YTc3OTMxMGQ0YWQ5N2Ji
MDNkYi4uNGE0ODRmYTZkNDY0MzBkNzFlNTcwMDhiZjFlOTlmNmMyNWI4NDg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTYwLDEwICs2MCwxMCBAQCBTdGF0ZTo6
U3RhdGUoR3JhcGgmIGdyYXBoKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPihncmFwaC5t
X3BsYW4pKTsKKyAgICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmlu
YWxpemVyPihncmFwaC5tX3BsYW4pKTsKICAgICBmaW5hbGl6ZXIgPSBzdGF0aWNfY2FzdDxKSVRG
aW5hbGl6ZXIqPihncmFwaC5tX3BsYW4uZmluYWxpemVyKCkpOwogCi0gICAgcHJvYyA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2VkdXJlPigpOworICAgIHByb2MgPSBtYWtlVW5pcXVlPFByb2NlZHVy
ZT4oKTsKIAogICAgIHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAgICAgICAgIFtdIChQcmludFN0
cmVhbSYgb3V0LCBCMzo6T3JpZ2luIG9yaWdpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRleCAyMmQ3ZmQ2NWQ1YTE3NTViNWIyZDNi
NzhkZGE1NWMwZDAwN2UxY2NiLi4wMjFiMGNkYjlkZmFjMThiMzY4NjQyOGE5ODIzZjI4MTEwYmI3
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNw
YWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcApAQCAtODAsNyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2Nh
dG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgQmxvY2tE
aXJlY3RvcnkvTG9jYWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwgIiwgYXR0cmlidXRlcygp
LCAiLCAiLCBzaXplQ2xhc3MsICIuXG4iKTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qmxv
Y2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9yeSA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8
QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3MpOworICAgICAgICBtYWtl
VW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKICAgICBC
bG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0b3J5LmdldCgpOwogICAgIG1f
ZGlyZWN0b3JpZXMuYXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0b3J5KSk7CiAgICAgCkBAIC04
OCw3ICs4OCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93
KHNpemVfdCBzaXplKQogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3RvcnkobG9ja2VyLCBkaXJl
Y3RvcnkpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbEFsbG9jYXRvcj4gdW5pcXVl
TG9jYWxBbGxvY2F0b3IgPQotICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsQWxsb2NhdG9y
PihkaXJlY3RvcnkpOworICAgICAgICBtYWtlVW5pcXVlPExvY2FsQWxsb2NhdG9yPihkaXJlY3Rv
cnkpOwogICAgIExvY2FsQWxsb2NhdG9yKiBsb2NhbEFsbG9jYXRvciA9IHVuaXF1ZUxvY2FsQWxs
b2NhdG9yLmdldCgpOwogICAgIG1fbG9jYWxBbGxvY2F0b3JzLmFwcGVuZChXVEZNb3ZlKHVuaXF1
ZUxvY2FsQWxsb2NhdG9yKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmlu
ZGV4IGEwMWI1YTJiNGFlZmQzZTUyOTY5NzdhNWM4Mzg0MDQyZTVhMjk1NmEuLjk3MTk5ZTE4NmRl
NzJkNzcyNzk3MzVjOWQzYzk5NDBjODVjNDhhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCkBAIC0yODksMTUgKzI4OSwxNSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAs
IG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9vYmplY3RTcGFjZSh0
aGlzKQotICAgICwgbV9tYWNoaW5lVGhyZWFkcyhzdGQ6Om1ha2VfdW5pcXVlPE1hY2hpbmVUaHJl
YWRzPigpKQotICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgIkMiKSkKLSAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKHN0ZDo6
bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQotICAgICwgbV9tdXRhdG9yTWFy
a1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3JhY2VN
YXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fY29u
c3RyYWludFNldChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykp
CisgICAgLCBtX21hY2hpbmVUaHJlYWRzKG1ha2VVbmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCisg
ICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlz
LCAiQyIpKQorICAgICwgbV9tdXRhdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90VmlzaXRv
cj4oKnRoaXMsICJNIikpCisgICAgLCBtX211dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJr
U3RhY2tBcnJheT4oKSkKKyAgICAsIG1fcmFjZU1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFj
a0FycmF5PigpKQorICAgICwgbV9jb25zdHJhaW50U2V0KG1ha2VVbmlxdWU8TWFya2luZ0NvbnN0
cmFpbnRTZXQ+KCp0aGlzKSkKICAgICAsIG1faGFuZGxlU2V0KHZtKQotICAgICwgbV9jb2RlQmxv
Y2tzKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQotICAgICwgbV9qaXRTdHViUm91
dGluZXMoc3RkOjptYWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKKyAgICAsIG1fY29k
ZUJsb2NrcyhtYWtlVW5pcXVlPENvZGVCbG9ja1NldD4oKSkKKyAgICAsIG1faml0U3R1YlJvdXRp
bmVzKG1ha2VVbmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCiAgICAgLCBtX3ZtKHZtKQogICAg
IC8vIFdlIHNlZWQgd2l0aCAxMG1zIHNvIHRoYXQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxv
Y2F0ZSBkb2Vzbid0IGNvbnRpbnVvdXNseSAKICAgICAvLyBzY2hlZHVsZSB0aGUgdGltZXIgaWYg
d2UndmUgbmV2ZXIgZG9uZSBhIGNvbGxlY3Rpb24uCkBAIC0zMDUsOCArMzA1LDggQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxs
YmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKICAgICAs
IG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCiAgICAg
LCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGlt
ZXIodm0pKSkKLSAgICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlx
dWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3RhY2soc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fc2hhcmVkQ29sbGVjdG9y
TWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3NoYXJlZE11
dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKICAgICAsIG1faGVs
cGVyQ2xpZW50KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2Nr
Pjo6Y3JlYXRlKCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25k
aXRpb246OmNyZWF0ZSgpKQpAQCAtMzE0LDcgKzMxNCw3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkcyA9IGhlYXBIZWxwZXJQb29s
KCkubnVtYmVyT2ZUaHJlYWRzKCk7IGkgPCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkczsgKytpKSB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0b3IgPSBtYWtlVW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEpKTsKICAgICAgICAgaWYgKE9w
dGlvbnM6Om9wdGltaXplUGFyYWxsZWxTbG90VmlzaXRvcnNGb3JTdG9wcGVkTXV0YXRvcigpKQog
ICAgICAgICAgICAgdmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogICAgICAg
ICBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVuZCh2aXNpdG9yLmdldCgpKTsK
QEAgLTMyMywxNyArMzIzLDE3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAKICAgICBpZiAoT3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkpIHsKICAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1bGVyKCkpCi0gICAgICAgICAg
ICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0
b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1
ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VUaW1l
TXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtl
VW5pcXVlPFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBXZSBzaW11bGF0ZSB0dXJuaW5nIG9mZiBjb25jdXJyZW50IEdDIGJ5IG1ha2lu
ZyB0aGUgc2NoZWR1bGVyIHNheSB0aGF0IHRoZSB3b3JsZAogICAgICAgICAvLyBzaG91bGQgYWx3
YXlzIGJlIHN0b3BwZWQgd2hlbiB0aGUgY29sbGVjdG9yIGlzIHJ1bm5pbmcuCi0gICAgICAgIG1f
c2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0
b3JTY2hlZHVsZXI+KCk7CisgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTeW5jaHJv
bm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CiAgICAgfQogICAgIAogICAgIGlm
IChPcHRpb25zOjp2ZXJpZnlIZWFwKCkpCi0gICAgICAgIG1fdmVyaWZpZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xlc1RvUmVj
b3JkRm9yVmVyaWZpY2F0aW9uKCkpOworICAgICAgICBtX3ZlcmlmaWVyID0gbWFrZVVuaXF1ZTxI
ZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0NDeWNsZXNUb1JlY29yZEZvclZl
cmlmaWNhdGlvbigpKTsKICAgICAKICAgICBtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5vcHRpbWl6
ZUZvclN0b3BwZWRNdXRhdG9yKCk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCBzaXplX3QgSGVhcDo6
cHJvdGVjdGVkT2JqZWN0Q291bnQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBI
ZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKICAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgKICAgICAgICAgWyZdIChK
U0NlbGwqIGNlbGwpIHsKICAgICAgICAgICAgIHJlY29yZFR5cGUoKnZtKCksICpyZXN1bHQsIGNl
bGwpOwpAQCAtOTA5LDcgKzkwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhl
YXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNv
dW50U2V0PiBIZWFwOjpvYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBpdGVyYXRp
b25TY29wZSwKQEAgLTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFp
bnRzKCkKICAgICAgICAgfSwKICAgICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6OlNlbGRvbUdy
ZXllZCk7CiAgICAgCi0gICAgbV9jb25zdHJhaW50U2V0LT5hZGQoc3RkOjptYWtlX3VuaXF1ZTxN
YXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludD4oKnRoaXMpKTsKKyAgICBtX2NvbnN0cmFpbnRTZXQt
PmFkZChtYWtlVW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhpcykpOwogfQog
CiB2b2lkIEhlYXA6OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6dW5pcXVlX3B0cjxNYXJraW5n
Q29uc3RyYWludD4gY29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCmluZGV4IDViNjljZDVlMzVmNjJiNTA2NjNhOWNiZGM3Mzk0ZDFiZDY3YWQxZDguLmUx
ZWI2Yzc4MzNkNDg1ODcxYTljNTMzY2ZkNDczMWM3NWY5YjExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtMjE3LDcgKzIxNyw3IEBAIGlubGluZSB2b2lk
IEhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKIGlubGluZSBIYXNo
U2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4mIEhlYXA6Om1hcmtMaXN0U2V0KCkKIHsKICAgICBp
ZiAoIW1fbWFya0xpc3RTZXQpCi0gICAgICAgIG1fbWFya0xpc3RTZXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsKKyAgICAgICAgbV9tYXJrTGlz
dFNldCA9IG1ha2VVbmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOwogICAg
IHJldHVybiAqbV9tYXJrTGlzdFNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA1YjlhYzg5ZGFiZjA0YTA2MTRk
YzEwZmJiYWYxNmMwZjRhNDk5ZjdlLi4yZDJiYzhmYjliMjdmZTlmOWIxYjViZTU0Y2I3NTFmODNl
MGQzZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNo
b3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNo
b3RCdWlsZGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxkZXI6
OmJ1aWxkU25hcHNob3QoKQogCiAgICAgUHJldmVudENvbGxlY3Rpb25TY29wZSBwcmV2ZW50Q29s
bGVjdGlvblNjb3BlKG1fcHJvZmlsZXIudm0oKS5oZWFwKTsKIAotICAgIG1fc25hcHNob3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhlYXBTbmFwc2hvdD4obV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNo
b3QoKSk7CisgICAgbV9zbmFwc2hvdCA9IG1ha2VVbmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2Zp
bGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKICAgICB7CiAgICAgICAgIG1fcHJvZmlsZXIuc2V0
QWN0aXZlU25hcHNob3RCdWlsZGVyKHRoaXMpOwogICAgICAgICBtX3Byb2ZpbGVyLnZtKCkuaGVh
cC5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IGI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBm
MTBjZGQ2ZTliYjE5OGZkYTkuLjdjMmVkMjQwMmZkNzMwMWZjMDk5YThkZmI1ZDNjMzM2YWVhZDEx
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+
KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9jCiAgICAgYXV0byYgYml0c1B0clJlZiA9
IG1fYml0c1tibG9ja0luZGV4XTsKICAgICBhdXRvKiBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsK
ICAgICBpZiAoIWJpdHMpIHsKLSAgICAgICAgYml0c1B0clJlZiA9IHN0ZDo6bWFrZV91bmlxdWU8
Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKKyAgICAgICAgYml0c1B0clJl
ZiA9IG1ha2VVbmlxdWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKICAg
ICAgICAgYml0cyA9IGJpdHNQdHJSZWYuZ2V0KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZl
bmNlKCk7CiAgICAgICAgIG1fYmxvY2tzV2l0aEJpdHNbYmxvY2tJbmRleF0gPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IGQ1MTAwMGViYTg3
ZjMxZGU0ODFiZWQwOGE1ZjJmZWQ4YTYzOWZmOTkuLmNkM2U3ZTU2MTU0NTY2ZGNmOGMxNTE2M2Ex
NWI3MmYyNzY4ZjI5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHMKICAgICAsIG1f
c2l6ZShzaXplKQogICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRv
cigmbV9kaXJlY3RvcnkpCi0gICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgbV9pc29BbGln
bmVkTWVtb3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4o
KSkKIHsKICAgICBpbml0aWFsaXplKGhlYXBDZWxsVHlwZSwgbV9pc29BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTZXQuY3BwCmluZGV4IGIzYWJkMmM1MjI0ZmNlM2U1Y2UxMmM0ZjE2M2Vk
NDgyM2RhZTY5OGUuLjE3ODBjMDhhNDcwZjI3NjIzMTYzN2VmNjgxMTdjOWE0ZTMyYzFkMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNl
dC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6ZGlkU3Rh
cnRNYXJraW5nKCkKIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKENTdHJpbmcgYWJi
cmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYp
PiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSwgQ29uc3RyYWludENv
bmN1cnJlbmN5IGNvbmN1cnJlbmN5LCBDb25zdHJhaW50UGFyYWxsZWxpc20gcGFyYWxsZWxpc20p
CiB7Ci0gICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdU
Rk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiks
IHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOworICAgIGFkZChtYWtlVW5p
cXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdU
Rk1vdmUobmFtZSksIFdURk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwg
cGFyYWxsZWxpc20pKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQuY3BwCmluZGV4IDgyYmUzYmJiNDRjYjZjNTc3NmI4ZWNmN2Zh
MGM5NDBkNWQ1YTU4MjUuLjUzYTkxYTIzYzFkODkyOTE4ZWU0Mjk0MWE2NWY1Mjc4NjdkNDMzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3MKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGFyZ3VtZW50cy0+
Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwotICAgIG1fY29uc29sZUFnZW50LT5h
ZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIGV4ZWMpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CiB9CiAKIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpjb3VudChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbGFiZWwpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25z
b2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
ICAgICAgICAgICAgIGlmIChleGlzdGluZ1RpdGxlID09IHRpdGxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KICAgICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJV
bm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwi
IiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgIG1fY29uc29s
ZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAgICAgICBtX2NvbnNvbGVB
Z2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRp
dGwKIAogICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2Nh
bGl6YXRpb24/CiAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJv
ZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBkb2Vz
IG5vdCBleGlzdCIpOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0
ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJv
ZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzdGFydENvbnNvbGVQcm9maWxlKCkKQEAgLTE4NSw3
ICsxODUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChF
eGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKQogdm9pZCBKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ6Ondhcm5VbmltcGxlbWVudGVkKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogewog
ICAgIFN0cmluZyBtZXNzYWdlID0gbWV0aG9kICsgIiBpcyBjdXJyZW50bHkgaWdub3JlZCBpbiBK
YXZhU2NyaXB0IGNvbnRleHQgaW5zcGVjdGlvbi4iOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgbWVzc2FnZSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCBjOGRhNTJlZmQxM2M0OTFjY2FlNjM5NWUwNzRjNDY0NGU3MGNjMGE3Li5iZGJk
MzFkNjMxMmIyYzA1NmQ3YzQ3ODE1ZGM2MTVkMTIyNmQ5MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAg
IDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KG1ha2VVbmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNy
ZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihnbG9iYWxPYmplY3QpCiAgICAgLCBt
X2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKQEAgLTcxLDExICs3MSwx
MSBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iagogewogICAgIGF1dG8gY29udGV4dCA9IGpzQWdl
bnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKICAgICBtX2NvbnNv
bGVBZ2VudCA9IGNvbnNvbGVBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZShjb25zb2xlQWdlbnQpKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50PihtX2NvbnNvbGVBZ2VudCk7CisgICAgbV9j
b25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1f
Y29uc29sZUFnZW50KTsKIAogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogfQpA
QCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpyZXBvcnRBUElFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlCiAgICAgICAgICAgICBD
b25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFN0cmluZygp
LCAwLCAwKTsKICAgICB9CiAKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29s
ZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3Zl
KGNhbGxTdGFjaykpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFj
aykpKTsKIH0KIAogQ29uc29sZUNsaWVudCogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25zb2xlQ2xpZW50KCkgY29uc3QKQEAgLTI4MCw3ICsyODAsNyBAQCBJbnNwZWN0b3JB
Z2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JB
Z2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29u
dGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0KTsKKyAgICAgICAgYXV0byBp
bnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOwogICAg
ICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1f
YWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CiAgICAgfQpAQCAtMjkxLDcg
KzI5MSw3IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlRGVidWdnZXJBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2RlYnVnZ2Vy
QWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAg
ICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKKyAgICAgICAgYXV0byBkZWJ1
Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KGNvbnRl
eHQsIG1fY29uc29sZUFnZW50KTsKICAgICAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJB
Z2VudC5nZXQoKTsKICAgICAgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KG1fZGVidWdnZXJBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3Zl
KGRlYnVnZ2VyQWdlbnQpKTsKQEAgLTMyNywyMCArMzI3LDIwIEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGVuc3VyZUlu
c3BlY3RvckFnZW50KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxK
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4oY29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CiAKICAg
ICBlbnN1cmVEZWJ1Z2dlckFnZW50KCk7CiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRl
eHQpOworICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CiAgICAgbV9jb25zb2xlQ2xpZW50LT5z
ZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0
KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIp
KTsKIAotICAgIGF1dG8gaGVhcEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIZWFw
QWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8gaGVhcEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3JIZWFwQWdlbnQ+KGNvbnRleHQpOwogICAgIGlmIChtX2NvbnNvbGVBZ2VudCkKICAgICAgICAg
bV9jb25zb2xlQWdlbnQtPnNldEluc3BlY3RvckhlYXBBZ2VudChoZWFwQWdlbnQuZ2V0KCkpOwog
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGhlYXBBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFn
ZW50Pihjb250ZXh0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwCmluZGV4IGMwYjVjOWFhZDE4YzA4Y2VkZGMzNjk2NmJmMDQ2ODUxNDE3NjI2NDMuLjQx
N2U3NzVmYjgwMjQ5YzA0MDMxMzdhODI3ODIxMzczMjdkMzMyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBJbnNwZWN0b3JBZ2Vu
dDo6SW5zcGVjdG9yQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJJbnNwZWN0b3IiX3MpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52
aXJvbm1lbnQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA3
ZWRiYzgwNjYwZjM2ZDZhODFhYTkxZmI4ZmEzZmRkZGVkYWU2ZjI2Li41ZDI0YzY5ZTZiZjQ1ZDcy
ZmIwYmRhNTNiNGM0NTc1OTg2MTNjYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2Fn
ZXNTdGVwID0gMTA7CiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNvbnNv
bGUiX3MpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2Ny
aXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8
Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihD
b25zb2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKSkKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6c3RhcnRUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQg
YW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5n
IHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgYWxyZWFkeSBleGlz
dHMiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zv
ckNvbnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENh
bGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICB9CiB9CiAKQEAgLTE1OSwxNCArMTU5
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpsb2dUaW1pbmcoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5k
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9y
IGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1l
ciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdh
cm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92
ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNU
aW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9u
aWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobGFiZWwsICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxp
c2Vjb25kcygpLCAzKSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFr
ZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2Fn
ZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShhcmd1
bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZWwpCkBAIC0xODQsMTQgKzE4NCwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3Rv
cFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAgIGlm
IChpdCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0g
dG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5n
ID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0g
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25k
cyBlbGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
V2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVz
c2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxT
dGFjaykpKTsKIAogICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIH0KQEAgLTIyNCw3ICsyMjQsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgbGFiZWwpCiAgICAgLy8gRklYTUU6IFdlYiBJbnNwZWN0b3Igc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgVUkgZm9yIGNvdW50ZXJzLCBidXQgZm9yIG5vdyB3ZSBqdXN0IGxvZyBh
biB1cGRhdGVkIGNvdW50ZXIgdmFsdWUuCiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobGFiZWwsICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbAogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkgewogICAgICAgICAvLyBGSVhN
RTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAg
ICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIkNvdW50ZXIgXCIiLCBsYWJlbCwgIlwiIGRv
ZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
bWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZTVmMjQ4MmEzY2FhMDhh
YTgxNjQ1ZmE4Yzc5YzUyOWJhNDM4MGQwYS4uMjVmMWQzZTcyODFjNmIwZmI4MzMwZmYxMzc4NzM2
NDNlYmM2MGVkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oY29u
c3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW8KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIkRlYnVnZ2VyIl9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZl
cihjb250ZXh0LmVudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwCmluZGV4IGI1MzVmZjYxOTJhYWNlZmM3OWI0ZjZjZDkzZGYxMjAxYTM3
MTQ4YWMuLjU4MmMzNWQzNjdkZmUxZTRmN2RjNGU5YTU2ODRkY2EyYTRlM2I0YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIEluc3BlY3RvckhlYXBBZ2VudDo6SW5zcGVjdG9ySGVhcEFnZW50KEFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSGVhcCJfcykKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEhlYXBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZpcm9ubWVu
dChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAppbmRleCA1NmZjMWI3OThkYTBlZWVlYTAyMzMxZWQ1MjU0YTk1MDIxMDA1
ODc0Li5jYmFkODFkNjk5NDQwYTczM2IwYWYwNDE2OTRhODZjYTllNmU4ZWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6SW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIlNjcmlwdFByb2ZpbGVyIl9zKQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoU2NyaXB0UHJvZmlsZXJCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwCmluZGV4IDNhY2E0MTA1MTBmZTUwMGYwNWJmYmFhYzQ2N2ZmZGFjY2Iy
MWM1MjQuLjkzNTA2OGM3YWUxMTk3MTA1NDRjMWY3Njc5ODIyZGZiNjZlNTZiODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdl
dEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIEluc3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9u
dGVuZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlz
cGF0Y2hlcikKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGFyZ2V0Il9zKQotICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5jcHAKaW5kZXggZTMyOWEzYjQzY2Q2MDk2NWQ5Zjc3ODVhNDgyMjAxMWFiMzY2ZmE1My4u
OWIzZjM3OWQ1ZTVhNDkwZGJlMzc1YzcyYWM5OWZhNzIwYjlhY2NlZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVk
U2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KEVycm9yU3RyaW5nJiBlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpicmVh
a3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZz
dGF0ZSksIDApKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3Rh
dGUpLCAwKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IDE0NWQwNTE2YjhlMzk2ODg3OGQ5MmNiNTk0
YWE1OTliYWZhMzlkMzIuLjNiN2MzZTIxZDMxYzFjMmY1YjZkMWJhMGMxNmY0ODg4M2U2Y2YzMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChKU0FnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9nbG9iYWxPYmplY3QoY29u
dGV4dC5pbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCA3MTAxNjY4YTk3Yzg3NDQ4
MTJmNDY1NmYxNmUwYjdkZDU5NGYxYTYwLi5jYzk2NDAwNTY3OWRiZmNkNGZlMDI5MDZiYzkzYzIz
YjJjODJlY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludC5jcHAKQEAgLTE0NCwxMSArMTQ0LDExIEBAIE9wdGlvbmFsPENvbm5lY3Rp
b25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9y
bVNvY2tlCiAKICAgICBTb2NrZXQ6OnNldHVwKHNvY2tldCk7CiAKLSAgICBhdXRvIGNvbm5lY3Rp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKKyAgICBhdXRvIGNv
bm5lY3Rpb24gPSBtYWtlVW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKIAogICAgIGNvbm5l
Y3Rpb24tPnBvbGwgPSBTb2NrZXQ6OnByZXBhcmVQb2xsaW5nKHNvY2tldCk7CiAgICAgY29ubmVj
dGlvbi0+c29ja2V0ID0gc29ja2V0OwotICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVzc2FnZVBhcnNlcj4oaWQsIFNvY2tldDo6QnVmZmVyU2l6ZSk7CisgICAgY29u
bmVjdGlvbi0+cGFyc2VyID0gbWFrZVVuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpC
dWZmZXJTaXplKTsKICAgICBjb25uZWN0aW9uLT5wYXJzZXItPnNldERpZFBhcnNlTWVzc2FnZUxp
c3RlbmVyKFt0aGlzXShDb25uZWN0aW9uSUQgaWQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsK
ICAgICAgICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KQogICAgICAgICAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JFdmVudChpZCwgV1RGTW92ZShkYXRhKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCmlu
ZGV4IDcwZjJkN2E0ODEzNDcwZjgxMzczMmIzYjk3N2I1YjczYTQxOTYwYjUuLjMyMDQwMGZkNWIz
Y2RiMmM0YjE1ZGJkYzkzMDQ2YmJmZDAwY2FkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50PiBjcmVhdGUoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCogaW5zcGVjdG9yQ2xp
ZW50LCBjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFt
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50PihpbnNwZWN0b3JDbGllbnQsIG5hbWUpOwogICAgIH0KIAogICAgIFJlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50KFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQqLCBjb25zdCBj
aGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMu
cHkKaW5kZXggNjZmOWZkMmRjNDcwZDIxZjRkZTU3ZGU4MjhjMTU5NDQ1NjcxMjNiYi4uZmE1MDZh
NjFlOTliMzlhODc0NmUwY2U1YmUwZDZhYmMwYjBhNGU5NCAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVt
cGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM4LDggKzEzOCw4IEBAIGNs
YXNzIE9iakNHZW5lcmF0b3JUZW1wbGF0ZXM6CiAgICAgW18ke3ZhcmlhYmxlTmFtZVByZWZpeH1I
YW5kbGVyIHJlbGVhc2VdOwogICAgIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyID0gW2hh
bmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRl
cm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBt
YWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7
ZG9tYWluTmFtZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVB
Z2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3Jt
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dAppbmRleCA4ODQyYzllYjY5NzU2Y2U2MTQ3ZWM0YzJkOTdiZjcyYzdmMzUyMjNhLi5lMDcyZmFi
MjIxMjljYWY2NGEyMmY2NGVmMzRlMWUwOGFmYTcyODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRp
b25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTc3MSw4ICs3NzEsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25l
dHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250
cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwg
V1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4
dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGE3MTRmYjEzMTgzMjkz
ZDE4MzJmYzU4MWU2YzUzMzc4NjgwMmQ1NzIuLmMwZTE3MzM3ZmQ0YTc5ODgzMGU4NWQyOWU4NWQ4
ZWQzMDIwY2E3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb24tcmVzdWx0CkBAIC0xMTg5LDggKzExODksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9kYXRhYmFzZUhhbmRs
ZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
PihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdU
Rk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRy
YUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CmluZGV4IDUzYmQ1NTNiN2JhNzRkZGQyOWUyNTUxY2MwYjg0ZmE0MzA3MTRjYWUu
LmFlZDA3Yjc1ZThiODg4ZGQ1OTMzOTBhZmEyMWQyYzg5MGRkZmM1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEwNjgsOCArMTA2OCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RhdGFiYXNl
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBB
bHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVy
bmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxl
ciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWls
YWJpbGl0eS5qc29uLXJlc3VsdAppbmRleCA2NzhjNmFhYTg1YWNhMzg0MjQ4Yjk5MjkwMzRjY2Yw
OTQxMThkZWU3Li4xYWRjYmQzZmQyYWNiOWNhMTQ2MWMzMDhlNDVjNDkyZWMzZTAzMjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKQEAgLTc4Miw4ICs3ODIsOCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZG9tYWluQUhhbmRsZXIgcmVsZWFzZV07CiAg
ICAgX2RvbWFpbkFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5BQmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkEiX3MsICpfY29udHJv
bGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFw
cGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC04MDAsOCAr
ODAwLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkJIYW5kbGVy
IHJlbGVhc2VdOwogICAgIF9kb21haW5CSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0
b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRl
QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFp
bkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPj4o
IkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9y
RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5CQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5C
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKaW5kZXggZjZjNWVkY2NiOTI4NWFmNDhjNmRlYjk4NDIyYTcyMzZiODcwMmQ0ZS4u
YTNlMjdkZjM4Y2VhZmJiM2M0NTFlMTNiNjExOWUyZTU0YzNkMmE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0x
MDM5LDggKzEwMzksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29y
azFIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRh
aW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVl
PE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0
ZXJuYXRlQWdlbnQpKTsKIH0KIApAQCAtMTA1Nyw4ICsxMDU3LDggQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBbX25ldHdvcmszSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29y
azNIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazMiX3MsICpfY29u
dHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0
ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9s
bGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBw
ZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1y
ZXN1bHQKaW5kZXggZWMwYzEwYjRkYjQ2YjNiYzA4Mzg2ZmZiNzNjZmZmOTkwODZiZjA2NC4uYWJm
YjZlMTUzNzM2ZTdkNDZiY2RiMGNiZjM1NzliM2ViZDA5YzVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1
bHQKQEAgLTgxNSw4ICs4MTUsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
Y29tbWFuZERvbWFpbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2NvbW1hbmREb21haW5IYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hl
cj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFp
biJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
Pj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRl
cm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggMzBlODJjNWExNzY2MjhjZWJiZGJi
MGZjNDEwZWU5NmM4YTQ4ZGM0OS4uNmJkZWZmMTg3OTdjMTY5NWE4MWZiMTU2NDA2ZGUzOWM5Zjg4
MTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3Vh
cmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdApAQCAtNzk4LDggKzc5OCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmsx
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBB
bHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVy
bmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxl
ciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9u
cy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCA4ODQyYzllYjY5NzU2Y2U2MTQ3
ZWM0YzJkOTdiZjcyYzdmMzUyMjNhLi5lMDcyZmFiMjIxMjljYWY2NGEyMmY2NGVmMzRlMWUwOGFm
YTcyODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQK
QEAgLTc3MSw4ICs3NzEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0
d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0
YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERp
c3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURp
c3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9i
akNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8g
YWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVy
Pj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVB
Z2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggODM0MmU1ZmM1ZWZj
YTI4NDlkZmQxMmRiN2FhNGFiNDk4MmI2MWZlOC4uZWY5MDY2OTQzMGJiMTI2ZTY4OWJiYzdiZmZh
OWJiMGY1NDQ3MzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNjU0LDcgKzY1
NCw3IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0KQogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wRGlzYXNz
ZW1ibHkoKSB8fCAobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIE9wdGlvbnM6OmRpc2Fz
c2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKSkpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29kZUJsb2NrKTsKKyAgICAgICAg
bV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2sp
OwogICAgIGlmIChVTkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7CiAgICAg
ICAgIG1fY29tcGlsYXRpb24gPSBhZG9wdFJlZigKICAgICAgICAgICAgIG5ldyBQcm9maWxlcjo6
Q29tcGlsYXRpb24oCkBAIC05MDEsNyArOTAxLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjps
aW5rKCkKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVp
bGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChz
dGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmln
aW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBD
VG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9w
Y1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOwogICAgIAogICAgIENvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hC
dWZmZXIsIEpTRW50cnlQdHJUYWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAKaW5kZXggMTZiZjcwZDgwMTc0NDIzMDUwMmEyZDhiMTk3Y2Q0MDFjODAyNGYzOC4uNWJkZjgz
MDQ2NTA0Mzk5NGUxMWJhZmZlZDUyYmI3ODVjMWJhMGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IEpJVFRodW5rczo6SklUVGh1bmtzKCkKLSAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChzdGQ6
Om1ha2VfdW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCisgICAgOiBtX2hvc3RGdW5jdGlv
blN0dWJNYXAobWFrZVVuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMzg4ZmIwZTYyNzA4YjM0ZWNiOTcx
ZTk0NmI0NmIxOTNjNGNhZTNiLi44ZjlhODY0ZTRmZTg2MjZhMWZlZmMwYzMwN2M5ZTQ2NTY2MmY1
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwOTIsNyArMTA5
Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
bEZyYW1lU2h1ZmZsZXI+IGZyYW1lU2h1ZmZsZXI7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5mcmFt
ZVNodWZmbGVEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxs
KCkpOwotICAgICAgICBmcmFtZVNodWZmbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRnJhbWVT
aHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOworICAg
ICAgICBmcmFtZVNodWZmbGVyID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1Ykpp
dCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgICAgIC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGNh
bGxlZSBpcyBhIGNlbGwsIGFuZCB3ZSBjYW4KICAgICAgICAgLy8gdXNlIHRoZSBhZGRpdGlvbmFs
IHJlZ2lzdGVyIHRoaXMgYnV5cyB1cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzY4MTdlMDQ1
ZjU2N2U5ZWQzYTBlNTk1N2QyNWU2Mzc5ODU2NWZhZS4uNWFiMDBlZjdmZTU5MzFmNzQ2MjRmZTdj
MWYxYjBhYzQ2NzFjMDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI5NjksNyArMjk2OSw3
IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIs
IGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAg
ICAgICAgIGlmIChvcHRpb25zLm1fcHJvZmlsZSAmJiAhdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVy
KQotICAgICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZtKTsKKyAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQ
cm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CiAKICAgICAgICAg
Z2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1bWVudHMpOwogICAgICAg
ICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQob3B0aW9ucy5tX2VuYWJs
ZVJlbW90ZURlYnVnZ2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggZjhkYmU3MTk2ZjExMTcxNmQwYTU4ZjdmNTdlM2Y4ZjY3YjdhMmFjZi4uYTE2NGZkOTAz
ZjM2ZTk0MjBhNzM2NGVmNDI3YzZjMmZmZTMyMmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUKICAgICAsIG1faW1tZWRpYXRlUGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkluU3Rh
dGVtZW50KGZhbHNlKQogICAgICwgbV9kZWJ1Z2dlclBhcnNlRGF0YShkZWJ1Z2dlclBhcnNlRGF0
YSkKIHsKLSAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWls
dGluTW9kZSwgc2NyaXB0TW9kZSk7CisgICAgbV9sZXhlciA9IG1ha2VVbmlxdWU8TGV4ZXJUeXBl
Pih2bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291
cmNlLCAmbV9wYXJzZXJBcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24uc3Rh
cnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IDY5YWEwYmMxOTBhZjY3ODNkODkyOGMzNTlhYTNiMTBiYjFmYmQ4NzMu
LjBhNWVkZTRiODQyNWNmZDFiMzE3Yzc2YzUxZWE3Mzc4MTc4MGI1MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBTY29wZSB7
CiAgICAgdm9pZCBwdXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFiZWwsIGJvb2wgaXNMb29w
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2xhYmVscykKLSAgICAgICAgICAgIG1fbGFiZWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxMYWJlbFN0YWNrPigpOworICAgICAgICAgICAgbV9sYWJlbHMgPSBt
YWtlVW5pcXVlPExhYmVsU3RhY2s+KCk7CiAgICAgICAgIG1fbGFiZWxzLT5hcHBlbmQoU2NvcGVM
YWJlbEluZm8geyBsYWJlbC0+aW1wbCgpLCBpc0xvb3AgfSk7CiAgICAgfQogCkBAIC0xOTQxLDcg
KzE5NDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgICAgICBlbmRMb2NhdGlvbi5s
aW5lU3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAg
ICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNldCgpOwog
ICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVu
ZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAorICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydENvbHVtbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApp
bmRleCBkZjE3YmU1MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNmMzNhN2VlLi40MTAwMDZkOTI3
NTFjZTk2YjkyY2I5NjI1NjM1ZWE3Y2Y3OGVjNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xODAsNyArMTgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIElkZW50aWZpZXJBcmVuYSYgaWRlbnRpZmllckFyZW5hKCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZICghbV9pZGVudGlmaWVyQXJlbmEpKQotICAgICAgICAg
ICAgICAgIG1faWRlbnRpZmllckFyZW5hID0gc3RkOjptYWtlX3VuaXF1ZTxJZGVudGlmaWVyQXJl
bmE+KCk7CisgICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBtYWtlVW5pcXVlPElk
ZW50aWZpZXJBcmVuYT4oKTsKICAgICAgICAgICAgIHJldHVybiAqbV9pZGVudGlmaWVyQXJlbmE7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCmluZGV4IDA1MDMyYjVkMTMxMDhjMGViNjIwZTlkYWU4
MjBjZWY3YWM3NTMxOGMuLjM1NzExYjVmYTY0MjY5ZTY3NzRhYjcwZTIxZGQ1MDI1MTY5YzhlYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBp
bGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJD
b21waWxhdGlvbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0aW9uQ291bnRlciogQ29tcGls
YXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IoY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpbikKIHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhlY3V0aW9uQ291bnRlcj4mIGNvdW50ZXIgPSBtX2NvdW50
ZXJzLmFkZChvcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvdW50
ZXIpCi0gICAgICAgIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+
KCk7CisgICAgICAgIGNvdW50ZXIgPSBtYWtlVW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+KCk7CiAK
ICAgICByZXR1cm4gY291bnRlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAppbmRleCA3MGM3MTQ3MzMyNDQ0MDgwNzg3OTM0MDE5ODY2NzNjOTdlMWVhODNk
Li5hNjRkZTNmZGQ2NjI1NTE4YWM1ZDEyNmNlYWM3OGI2ZjIxMjVhNGZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gZ2V0U3RhY2tUcmFjZShFeGVjU3RhdGUqIGV4ZWMs
IFZNJiB2bSwgSlNPYmoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzaXplX3QgZnJh
bWVzVG9Ta2lwID0gdXNlQ3VycmVudEZyYW1lID8gMCA6IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0YWNrRnJhbWU+PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+
IHN0YWNrVHJhY2UgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKICAgICB2bS5p
bnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShvYmosICpzdGFja1RyYWNlLCBmcmFtZXNUb1NraXAs
IGdsb2JhbE9iamVjdC0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWUoKSk7CiAgICAgaWYgKCFzdGFj
a1RyYWNlLT5pc0VtcHR5KCkpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYyA9PSB2
bS50b3BDYWxsRnJhbWUgfHwgZXhlYy0+aXNHbG9iYWxFeGVjKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNDM5
ZTIwOWIwYTVmOGZiODI5Yjc5MTk3NTc0ODhjNDE1NjM0MjczZi4uZWYyZTgzMDg3NDFiODg1MmU1
NjIzMjZmOTYyNTdjOWQwMjkzNWQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJl
RGF0YVNsb3coKQogewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgYXV0byByYXJlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgYXV0byByYXJlRGF0YSA9IG1h
a2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmFyZURhdGEtPm1fbGluZUNvdW50ID0gbGluZUNv
dW50KCk7CiAgICAgcmFyZURhdGEtPm1fZW5kQ29sdW1uID0gZW5kQ29sdW1uKCk7CiAgICAgcmFy
ZURhdGEtPm1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgK
aW5kZXggNDYyMzY0MWM1OThlM2ViYjVmYmE2YmMwMjM3MjY0ZTUwNTJmZDE3OS4uNTJiMjhiMTNj
N2UyZTI1ZDIxYmJiYWIzYWQzMWQ1YjZiYzBjZGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGNs
YXNzIEZ1bmN0aW9uUmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50
IGZpbmFsIDogcHVibGljIFdhdGNoCiBpbmxpbmUgV2F0Y2hwb2ludCogRnVuY3Rpb25SYXJlRGF0
YTo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKCFoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKTsK
LSAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CisgICAgbV9h
bGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8QWxsb2NhdGlv
blByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+KHRoaXMpOwogICAgIHJldHVybiBtX2FsbG9jYXRp
b25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMWE1N2VmM2RjZmU5
MTllNzBiMzdmYTdlMzQ4NTRhMTNlOTA1M2ZhZS4uY2M4Nzc2N2YxMDhiY2M0ODNiMzE1ZjExMmZh
OWM1MzQ3ZjUyMDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmluaXQoVk0mIHZtKQogICAgIG1fZGVidWdnZXIgPSAwOwogCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwotICAg
IG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlPigqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CiAgICAg
bV9jb25zb2xlQ2xpZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xlQ2xpZW50KCk7
CiAjZW5kaWYKQEAgLTExNDUsNTcgKzExNDUsNTcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IG1h
a2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2
bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fYXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1f
YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAg
ICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0p
OwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0b3JQcm90b3R5cGUsIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQo
bV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wp
OwotICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQ
cm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc2V0SXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAg
IHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFw
dGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQobV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKLSAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlw
ZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCht
X3N0cmluZ1Byb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCk7Ci0gICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJv
bEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hw
b2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwotICAg
ICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90
eXBlU2V0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBT
ZXRXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0
YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgp
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRX
YXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOwogICAgICAgICBt
X3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIApAQCAtMTIw
Niw3ICsxMjA2LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgdGhpcy0+c3lt
Ym9sUHJvdG90eXBlKCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCBtX3ZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVy
VG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwogICAgIH0KQEAgLTE5MzIsMTAg
KzE5MzIsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dh
dGNocG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3Bl
Y2llc1dhdGNocG9pbnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAgbV9hcnJheVNwZWNpZXNXYXRj
aHBvaW50LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKTsKIAot
ICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBv
aW50KTsKKyAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hw
b2ludCk7CiAgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0
Y2hwb2ludCk7CisgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQgPSBtYWtl
VW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9p
bnQpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggMDQ3YzE2NjUzZTcxYjFhODA2YmQ5ZmM3ZDU2NjQzYTVmOTg4ZjExZS4uODQ1MzVj
YTVjNjAwY2VjYmQ4YjQ3OGY2NWI1M2NkMDdlMzZhODM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01MjEsNyArNTIxLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgewogICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4o
KTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0
YT4oKTsKICAgICB9CiAgICAgICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDFhZjAwMzY1M2NiOGMzZGU2NDNm
OGM0OTEyN2FiYjNlNTUxM2Q1YWQuLjMyN2ZlZDA2YzY3YTViZjExMjUxZjlmNGRlZDgzOWU3MDMz
YzhhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9v
cFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BU
aW1lci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6
UGVyVk1EYXRhOjpzZXRSdW5Mb29wKE1hbmFnZXIqIG1hbmFnZXIsIENGUnVuTG9vcFIKICNlbHNl
CiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdlciYg
bWFuYWdlcikKICAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKLSAgICAsIHRpbWVy
KHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFu
YWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCisg
ICAgLCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PigqcnVuTG9vcCwg
Jm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2sp
KQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGltZXItPnNldFByaW9yaXR5KFJ1
bkxvb3BTb3VyY2VQcmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsKQEAgLTE3Miw3ICsxNzIsNyBA
QCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlciYgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNoYXJl
ZCgpCiAKIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVyVk0oVk0mIHZtKQog
ewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVyVk1EYXRhPigqdGhpcyk7Cisg
ICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKICNpZiBVU0UoQ0Yp
CiAgICAgZGF0YS0+c2V0UnVuTG9vcCh0aGlzLCB2bS5ydW5Mb29wKCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAppbmRleCA1ZjA3OGQyYTUwOWQyYjQ0MjAwZjdhNGFmMzg4MTI0NmNiMmQ1OGE3Li41MjkwMjBk
ZjBmMWRjMmEyODZmODAwYWJhZDlkN2ViN2QzZjhlZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTQ0OCw3ICs0
NDgsNyBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9m
ZnNldCgpCiBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAg
IG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNl
dD4+KCk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4+KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAK
aW5kZXggNTllYzQxYzQ5YWU4MmY0N2Y2OTg2ODA2ZGQ2MTQzOTQ0YTQyYjVkNi4uYjFiYjY3OTE5
OTI2NWFmY2JjY2M4MzY1NmQ4ZDU2ZmM1YjRhMzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUHJvcGVy
dHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVy
KQogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQ
cm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZz
ZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0
ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3Ro
ZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVl
PFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogUHJv
cGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0
eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCkBAIC0xMDcsNyArMTA3LDcgQEAgUHJvcGVy
dHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwg
Y29uc3QgUHJvcGVydHlUYWIKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rv
ci4KICAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3Ro
ZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykK
LSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CiB9CiAKIHZvaWQgUHJvcGVydHlUYWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCAwNzFiMWY2NjMxNWNl
M2FlOGRjZmUxNzVmZjYzNjZmNWM2MzJhZmZjLi43MGU1OTNkNTNlYmRkODFkOGMwODEzYTI5Nzcw
ZTk0MGNlMDQxMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAK
QEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
CiAgICAgbV9udW1TdWJwYXR0ZXJucyA9IHBhdHRlcm4ubV9udW1TdWJwYXR0ZXJuczsKICAgICBp
ZiAoIXBhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcy5pc0VtcHR5KCkgfHwgIXBhdHRlcm4ubV9u
YW1lZEdyb3VwVG9QYXJlbkluZGV4LmlzRW1wdHkoKSkgewotICAgICAgICBtX3JhcmVEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VV
bmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fY2FwdHVyZUdyb3VwTmFt
ZXMuc3dhcChwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMpOwogICAgICAgICBtX3JhcmVEYXRh
LT5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguc3dhcChwYXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFy
ZW5JbmRleCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRl
eCAzOWNkZDkxMTZlMDI3ZTNkYjYwNDBkYmQ4ZmU1MjcwZDJlOTk1ZDhkLi5lOGRhODUyNmU3Yzdl
ODFmYmVhNzVjODg5ODgxNjFiOWFmODkxNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaApAQCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGVuc3VyZVJlZ0V4cEpJVENvZGUo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUpCi0gICAgICAgICAgICBtX3Jl
Z0V4cEpJVENvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7Cisg
ICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUgPSBtYWtlVW5pcXVlPFlhcnI6OllhcnJDb2RlQmxv
Y2s+KCk7CiAgICAgICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2RlLmdldCgpOwogICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmNwcAppbmRleCAyMzdkN2RlNjg4ZGQyMDc2NTAyMDEyMTZjZDBkNTQ2ODBjNDk2ZWFhLi5l
ZTZlMThjZWZkYmU3OWY0YmMyZWIyMTk3ZmY1MzkxMDRlMWY3OTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtNDY5LDcg
KzQ2OSw3IEBAIGF1dG8gU2NyaXB0RXhlY3V0YWJsZTo6ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXBJ
bXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjCiB7CiAgICAgaWYgKGRlc3QpCiAgICAg
ICAgIHJldHVybiAqZGVzdDsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVt
cGxhdGVPYmplY3RNYXA+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFRlbXBsYXRl
T2JqZWN0TWFwPigpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgZGVzdCA9IFdU
Rk1vdmUocmVzdWx0KTsKICAgICByZXR1cm4gKmRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAyOTNjNDY0NzJlNzQ4OTQxY2E5Y2MyYWRhYzE2
YTNkMmRjNWRlZWVjLi4wMWNkMmJkNTQ3ZmUwMmI1MDQ3YTZkNDViM2M4YWQ2ZmQ1MmJkYjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTg1Niw3
ICs4NTYsNyBAQCBXYXRjaHBvaW50U2V0KiBTdHJ1Y3R1cmU6OmVuc3VyZVByb3BlcnR5UmVwbGFj
ZW1lbnRXYXRjaHBvaW50U2V0KFZNJiB2bSwgUHJvcGVydAogICAgIFN0cnVjdHVyZVJhcmVEYXRh
KiByYXJlRGF0YSA9IHRoaXMtPnJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS0+bV9yZXBs
YWNlbWVudFdhdGNocG9pbnRTZXRzKSB7CiAgICAgICAgIHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50
V2F0Y2hwb2ludFNldHMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxTdHJ1Y3R1cmVS
YXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOworICAgICAgICAgICAgbWFrZVVuaXF1
ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOwogICAgICAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IHJhcmVEYXRh
LT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMtPmFkZChvZmZzZXQsIG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
CmluZGV4IDk5YThkOWY3ZGFhYzIxN2U0YzgxZTdlNzEyNmU5YzAyYjM3NGVkM2YuLmQzY2YxODNi
MGY2ZDdjNDg5ODgwMGFiNjhlZTQ4Y2QxMjhmN2ZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAgLTE0MCw3ICsxNDAs
NyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cgogICAgIEFTU0VSVChjb25kaXRpb25TZXQuc3Ry
dWN0dXJlc0Vuc3VyZVZhbGlkaXR5KCkpOwogICAgIGZvciAoT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uIDogY29uZGl0aW9uU2V0KSB7CiAgICAgICAgIGlmIChjb25kaXRpb24uY29u
ZGl0aW9uKCkua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZSkgewotICAgICAg
ICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CisgICAgICAgICAgICBtX29iamVj
dFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2Jq
ZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2
Q29uZGl0aW9uLCB0aGlzKTsKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUlu
ZmVycmVkVmFsdWVXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0LmFkZChjb25kaXRp
b24sIHRoaXMpLT5pbnN0YWxsKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcAppbmRleCAzOTJmMjE3YzE0ZWZhZWI1NDViZjBkNGY3NzkwYzExMjc5
MzJiYzg1Li5hNGE4NzBmYzFmY2FkMzVjNDM5NWYxMDliMjJhOTljNDIwZDc0MTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xMTgsNyAr
MTE4LDcgQEAgY29uc3QgU3ltYm9sVGFibGU6OkxvY2FsVG9FbnRyeVZlYyYgU3ltYm9sVGFibGU6
OmxvY2FsVG9FbnRyeShjb25zdCBDb25jdXJyZW50SlMKICAgICAgICAgICAgICAgICBzaXplID0g
c3RkOjptYXgoc2l6ZSwgb2Zmc2V0LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgKyAxKTsKICAgICAg
ICAgfQogICAgIAotICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9j
YWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsKKyAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBt
YWtlVW5pcXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CiAgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX21hcCkgewogICAgICAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVu
dHJ5LnZhbHVlLnZhck9mZnNldCgpOwogICAgICAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkp
CkBAIC0xNTksNyArMTU5LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3Bl
UGFydChWTSYgdm0pCiAgICAgICAgIHJlc3VsdC0+bV9hcmd1bWVudHMuc2V0KHZtLCByZXN1bHQs
IGFyZ3VtZW50cyk7CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEpIHsKLSAgICAgICAgcmVzdWx0
LT5tX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwor
ICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURh
dGE+KCk7CiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpdGVyID0gbV9yYXJlRGF0YS0+
bV91bmlxdWVJRE1hcC5iZWdpbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgU3ltYm9sVGFi
bGU6OnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiAg
ICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmFyZURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIGZvciAoYXV0byBpdGVy
ID0gbV9tYXAuYmVnaW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKICAgICAgICAgbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoaXRlci0+a2V5LCBUeXBl
UHJvZmlsZXJOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7CkBAIC0yMTAsNyArMjEwLDcgQEAgQ29k
ZUJsb2NrKiBTeW1ib2xUYWJsZTo6cmFyZURhdGFDb2RlQmxvY2soKQogdm9pZCBTeW1ib2xUYWJs
ZTo6c2V0UmFyZURhdGFDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgaWYg
KCFtX3JhcmVEYXRhKQotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1i
b2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1i
b2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX2NvZGVCbG9j
ayk7CiAgICAgbV9yYXJlRGF0YS0+bV9jb2RlQmxvY2suc2V0KCpjb2RlQmxvY2stPnZtKCksIHRo
aXMsIGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
CmluZGV4IDQxMGViNmQ1YWUxNmYzNjAyMjZkYjM4MjNmN2VlODI4ZWNjYWIzODMuLjQxYWNhOWQz
ZDRkOWI4YTU2YWU2ODUyMzBlOGQ2Njc1MmFjMGQwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIFN0cnVjdHVy
ZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb3RvLT5w
cm9wZXJ0eUhhc2goKSk7CiAgICAgfQogCi0gICAgbV9wcm9wZXJ0eUhhc2ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsKKyAgICBtX3Byb3BlcnR5SGFzaCA9
IG1ha2VVbmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiAqbV9w
cm9wZXJ0eUhhc2g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0
ZTJkMGQzMjRhMjRlMjMyY2QxOTUzODkyZWQ4YjBhMzNiMGIwNWVlLi5iNzA5MmMwOGVmNzJiMGVj
YTg5ZmYwYjVjNGJlMWFlNTlhYTFkYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC0yNTIsMTggKzI1MiwxOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQogI2VuZGlm
IC8vIFVTRShDRikKICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCi0gICAgLCBmYXN0TWFsbG9j
QWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3I+KCkpCi0gICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVl
PEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCi0g
ICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFy
eUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0
ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQotICAgICwg
aW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxU
eXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlND
ZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUoc3RkOjpt
YWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1
Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlw
ZShzdGQ6Om1ha2VfdW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQotICAgICwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlx
dWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVH
aWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Io
bWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1Zh
bHVlKSkKKyAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlw
ZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGls
aWFyeSkpKQorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKKyAgICAsIGNlbGxIZWFwQ2VsbFR5
cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZSht
YWtlVW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQorICAgICwgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGU+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxv
Y2tIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVh
cENlbGxUeXBlPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShzdGQ6
Om1ha2VfdW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3
ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlKG1ha2VVbmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkKICNl
bmRpZgogICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJp
bWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgogICAgICwg
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5
IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxv
Y2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2CkBAIC0yOTYsNyArMjk2LDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9hdG9tU3RyaW5nVGFi
bGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUo
KSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAg
ICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCi0gICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0
ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVTdGF0cz4oKSkK
KyAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChtYWtl
VW5pcXVlPFNpbXBsZVN0YXRzPigpKQogICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25N
YXAoKnRoaXMpCiAgICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKICAgICAsIHN5bWJvbEltcGxUb1N5
bWJvbE1hcCgqdGhpcykKQEAgLTMxMiw4ICszMTIsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luaXRpYWxpemluZ09iamVjdENsYXNzKDApCiAj
ZW5kaWYKICAgICAsIG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KDApCi0gICAgLCBtX2NvZGVDYWNo
ZShzdGQ6Om1ha2VfdW5pcXVlPENvZGVDYWNoZT4oKSkKLSAgICAsIG1fYnVpbHRpbkV4ZWN1dGFi
bGVzKHN0ZDo6bWFrZV91bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCisgICAgLCBt
X2NvZGVDYWNoZShtYWtlVW5pcXVlPENvZGVDYWNoZT4oKSkKKyAgICAsIG1fYnVpbHRpbkV4ZWN1
dGFibGVzKG1ha2VVbmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCiAgICAgLCBtX3R5
cGVQcm9maWxlckVuYWJsZWRDb3VudCgwKQogICAgICwgbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJs
ZWQoSXNXYXRjaGVkKQogICAgICwgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50KDAp
CkBAIC00MDcsNyArNDA3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgIExMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7CiAgICAgCiAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZVByb2ZpbGVyKCkpKSB7Ci0gICAgICAgIG1fcGVy
Qnl0ZWNvZGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPigq
dGhpcyk7CisgICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmls
ZXI6OkRhdGFiYXNlPigqdGhpcyk7CiAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gcGF0aE91
dDsKICAgICAgICAgY29uc3QgY2hhciogcHJvZmlsZXJQYXRoID0gZ2V0ZW52KCJKU0NfUFJPRklM
RVJfUEFUSCIpOwpAQCAtNDIzLDcgKzQyMyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlD
b250cm9sbGVyID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOwog
Ci0gICAgbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CisgICAgbV9ieXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CiAK
ICAgICBpZiAoT3B0aW9uczo6dXNlVHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIGVuYWJsZVR5cGVQ
cm9maWxlcigpOwpAQCAtNDQyLDkgKzQ0Miw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKICAg
ICBpZiAoT3B0aW9uczo6dXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRG
dXp6ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPFJhbmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlz
KSk7CisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8UmFuZG9taXppbmdGdXp6ZXJB
Z2VudD4oKnRoaXMpKTsKICAgICBlbHNlIGlmIChPcHRpb25zOjp1c2VEb3VibGVQcmVkaWN0aW9u
RnV6emVyQWdlbnQoKSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxE
b3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAgIHNldEZ1enplckFn
ZW50KG1ha2VVbmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOwogCiAg
ICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAoKSkKICAgICAg
ICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsKQEAgLTQ1Nyw5ICs0NTcs
OSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUgSklUIGlzIGdv
aW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvbXBpbGF0aW9uIHRocmVhZHMuCiAg
ICAgaWYgKGNhblVzZUpJVCgpKSB7Ci0gICAgICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1
ZTxKSVRUaHVua3M+KCk7CisgICAgICAgIGppdFN0dWJzID0gbWFrZVVuaXF1ZTxKSVRUaHVua3M+
KCk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgICAgIGZ0bFRodW5rcyA9IHN0ZDo6bWFrZV91
bmlxdWU8RlRMOjpUaHVua3M+KCk7CisgICAgICAgIGZ0bFRodW5rcyA9IG1ha2VVbmlxdWU8RlRM
OjpUaHVua3M+KCk7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUlu
dGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJ
SW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CkBAIC02MTks
NyArNjE5LDcgQEAgV2F0Y2hkb2cmIFZNOjplbnN1cmVXYXRjaGRvZygpCiBIZWFwUHJvZmlsZXIm
IFZNOjplbnN1cmVIZWFwUHJvZmlsZXIoKQogewogICAgIGlmICghbV9oZWFwUHJvZmlsZXIpCi0g
ICAgICAgIG1faGVhcFByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwUHJvZmlsZXI+KCp0
aGlzKTsKKyAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBtYWtlVW5pcXVlPEhlYXBQcm9maWxlcj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9oZWFwUHJvZmlsZXI7CiB9CiAKQEAgLTEwNDEsOCArMTA0
MSw4IEBAIHN0YXRpYyBib29sIGRpc2FibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCh1bnNp
Z25lZCYgY291bnRlciwgY29uc3QgRnVuYyYgZG9ECiBib29sIFZNOjplbmFibGVUeXBlUHJvZmls
ZXIoKQogewogICAgIGF1dG8gZW5hYmxlVHlwZVByb2ZpbGVyID0gW3RoaXNdICgpIHsKLSAgICAg
ICAgdGhpcy0+bV90eXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlcj4o
KTsKLSAgICAgICAgdGhpcy0+bV90eXBlUHJvZmlsZXJMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5
cGVQcm9maWxlckxvZz4oKnRoaXMpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IG1h
a2VVbmlxdWU8VHlwZVByb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlckxv
ZyA9IG1ha2VVbmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CiAgICAgfTsKIAogICAgIHJl
dHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX3R5cGVQcm9maWxlckVuYWJs
ZWRDb3VudCwgZW5hYmxlVHlwZVByb2ZpbGVyKTsKQEAgLTEwNjEsNyArMTA2MSw3IEBAIGJvb2wg
Vk06OmRpc2FibGVUeXBlUHJvZmlsZXIoKQogYm9vbCBWTTo6ZW5hYmxlQ29udHJvbEZsb3dQcm9m
aWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyID0gW3RoaXNdICgp
IHsKLSAgICAgICAgdGhpcy0+bV9jb250cm9sRmxvd1Byb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93UHJv
ZmlsZXIgPSBtYWtlVW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CiAgICAgfTsKIAogICAg
IHJldHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX2NvbnRyb2xGbG93UHJv
ZmlsZXJFbmFibGVkQ291bnQsIGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpOwpAQCAtMTA4Nyw3
ICsxMDg3LDcgQEAgdm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEoKQogCiB2b2lkIFZNOjpx
dWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNr
PiYmIHRhc2spCiB7Ci0gICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOworICAg
IG1fbWljcm90YXNrUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZn
bG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBWTTo6ZHJhaW5NaWNyb3Rh
c2tzKCkKQEAgLTEyMzAsMTQgKzEyMzAsMTQgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tl
bigpCiB7CiAgICAgaWYgKG1fc2hhZG93Q2hpY2tlbikKICAgICAgICAgcmV0dXJuOwotICAgIG1f
c2hhZG93Q2hpY2tlbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKKyAgICBt
X3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAKICNkZWZp
bmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxs
VHlwZSwgdHlwZSkgXAogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7
IFwKICAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBD
ZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1v
dmUoc3BhY2UpOyBcCiAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXApAQCAtMTI2OCw3
ICsxMjY4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWEKICAgICBJc29TdWJzcGFjZSogVk06
Om5hbWUjI1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0g
ICAgICAgIGF1dG8gc3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3Bh
Y2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFw
Q2VsbFR5cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAg
ICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gJm1fIyNu
YW1lLT5zcGFjZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKaW5kZXggMjRmMThhZDAyZGUyZmVmOTAwOTM0NDg2NDMwYzk4ZmU5NDk0
MjRlZi4uNTMzOTNjYjI1OGY3NDJjNmFjZmRkZWFlYzZjNzE3NTY0NGQ3OTQxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC00
MTcsNyArNDE3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3IgewogICAgIHZvaWQgZW1pdFBhdGNo
cG9pbnQoQmFzaWNCbG9jayogYmFzaWNCbG9jaywgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2gs
IFRtcCByZXN1bHQsIFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgaW5saW5lU2l6ZT4mJiBhcmdzKQog
ICAgIHsKICAgICAgICAgaWYgKCFtX3BhdGNocG9pbnRTcGVjaWFsKQotICAgICAgICAgICAgbV9w
YXRjaHBvaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1f
Y29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigp
KSk7CisgICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBh
dGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hw
b2ludFNwZWNpYWw+KCkpKTsKIAogICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIHBhdGNoLCBBcmc6
OnNwZWNpYWwobV9wYXRjaHBvaW50U3BlY2lhbCkpOwogICAgICAgICBJbnN0IHJlc3VsdE1vdjsK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAKICAgICAgICAgLy8g
RklYTUU6IE1ha2UgYSBoYXNobWFwIG9mIHRoZXNlLgogICAgICAgICBCMzo6Q2hlY2tTcGVjaWFs
OjpLZXkga2V5KGJyYW5jaCk7Ci0gICAgICAgIEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBz
dGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtl
X3VuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CisgICAgICAgIEIzOjpDaGVja1NwZWNp
YWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwobWFrZVVuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CiAKICAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGUgbmVlZCBmb3IgZHVtbXkgdmFsdWVzCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAKQEAgLTIxMzksMTAgKzIx
MzksMTAgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4gQjM6Ok9yaWdpbgogCiBF
eHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VB
bmRDb21waWxlQWlyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25z
dCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlu
a2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5
TW9kZSBtb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBU
aHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250
ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJz
PigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRl
ckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxh
dGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4o
KTsKIAogICAgIEIzOjpQcm9jZWR1cmUgcHJvY2VkdXJlOwogICAgIENvZGUmIGNvZGUgPSBwcm9j
ZWR1cmUuY29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCmluZGV4IDIwOTQxNzdlZDZmMTgzYWI0ZDg2MmVjMjI2N2QzMGYyOGI3ZGU1
YjYuLjE1OGRmOWZhOWYwYzlmNzIxYWMyOTI3NzgxODhkY2YyOGU3MDdmZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE1NTEs
MTAgKzE1NTEsMTAgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBPcmlnaW4KIAog
RXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNl
QW5kQ29tcGlsZShDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29uc3Qg
dWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtl
ZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9yeU1v
ZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rp
b25JbmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2Fz
bUV4Y2VwdGlvbikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJu
YWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5j
dGlvbj4oKTsKIAotICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRl
eHQud2FzbUVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsK
KyAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50
SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBQcm9jZWR1cmUgcHJvY2Vk
dXJlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXgg
Zjk4NWQ1MjNjMmU5M2YzYmQyM2ZiN2M1NzEyYjU4NjhjYzE2YTY4NS4uNTA2ZGY0YmVmZDBkNTY0
MTg0NGNlNTI3OTUxMTVmNjEyODcxNjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxl
dGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1fd2FzbUludGVybmFs
RnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIG1fd2FzbUludGVy
bmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFr
ZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICAgICAgICAgICAgICBGSU5BTElaRV9D
T0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBCQlEgZnVu
Y3Rpb25bJWldICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3Bh
Y2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNw
YWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250
ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwogICAgICAgICAgICAgfQpAQCAtMzI3LDcg
KzMyNyw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+ZW50cnlwb2lu
dC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAg
ICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24tPmVudHJ5cG9pbnQuY29t
cGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAg
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIkVtYmVk
ZGVyLT5XZWJBc3NlbWJseSBlbnRyeXBvaW50WyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRl
eCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhP
ck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlv
bi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAg
ICAgICAgICAgIFdURk1vdmUoY29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5j
cHAKaW5kZXggYzUxM2ZkMmY1MGVkNmZiMTdjMzM4NWVmMjkwNTI3ODE3MzkyMTAzNy4uMGQ3YTAz
YzM2MTI5Y2QxZGUyYzU0ZmZjZDUwMjk1YjU2YzViODk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIE9NR1BsYW46
OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBv
bWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRp
b24+KAorICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21w
aWxhdGlvbj4oCiAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlv
blB0clRhZywgIldlYkFzc2VtYmx5IE9NRyBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIG1fZnVu
Y3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJp
bmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5u
YW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAg
ICAgICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKaW5kZXggMzZkNzRjMTRi
MThjNzA3YjgxMmEwNDg3ZjkxZTI5YzM4NTM5MWRlMi4uNjYwZjk1NjU3MzhiMTBhMzBmM2U3Y2M4
MThhMzJjODU4NzgyMTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVdvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29y
a2xpc3QuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgV29ya2xpc3Q6OldvcmtsaXN0KCkKICAgICBt
X3RocmVhZHMucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzKTsKICAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKLSAgICAgICAgbV90aHJlYWRzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwg
KnRoaXMpKTsKKyAgICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFdv
cmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKIH0KIAogV29ya2xpc3Q6On5Xb3JrbGlz
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggNWRk
NDUxYmVhODRkNTkwYmJmMGZjYjA3NmUyNmZmZDNjYzdiODFhYy4uNzM1MjIwMjg5MzdjNmRhYzFm
YzQ3M2M3ZTRjZGM2NDk1OGNlOGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTVG9XYXNtLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxG
dW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAog
ewogICAgIENDYWxsSGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVu
dHJ5cG9pbnRKSVQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJu
YWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5j
dGlvbj4oKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgIC8vIEZJWE1F
IFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcAppbmRleCA3ZjAzM2ZlYzFjMzY5YTk0MjNiMzNjZjhlYjMzMzRjNTFjZTA4
MDhiLi5jNGI3N2NhZGJlNWVlYTU3M2VjODUyYjk1ZWY2YTc4OWI4Mjg1MzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTE3MDYsNyAr
MTcwNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgICAgICBkdW1wRGlzanVuY3Rp
b24obV9ib2R5RGlzanVuY3Rpb24uZ2V0KCkpOwogI2VuZGlmCiAKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9u
KSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURp
c2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBs
b2NrKTsKICAgICB9CiAKICAgICB2b2lkIGNoZWNrSW5wdXQodW5zaWduZWQgY291bnQpCkBAIC0x
OTI2LDcgKzE5MjYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICB1bnNpZ25lZCBz
dWJwYXR0ZXJuSWQgPSBwYXJlbnRoZXNlc0JlZ2luLmF0b20uc3VicGF0dGVybklkOwogCiAgICAg
ICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gbGFzdFN1YnBhdHRlcm5JZCAtIHN1YnBhdHRl
cm5JZCArIDE7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7
CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURp
c2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAKICAgICAgICAgdW5z
aWduZWQgZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyA9IGJlZ2luVGVybSArIDE7CiAgICAgICAgIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24tPnRlcm1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW5kVGVy
bSAtIGZpcnN0VGVybUluUGFyZW50aGVzZXMgKyAyKTsKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAKICAgICB2b2lkIHJlZ2V4QmVnaW4odW5zaWduZWQgbnVtU3Vi
cGF0dGVybnMsIHVuc2lnbmVkIGNhbGxGcmFtZVNpemUsIGJvb2wgb25jZVRocm91Z2gpCiAgICAg
ewotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZURpc2p1
bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIG1fYm9keURp
c2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBj
YWxsRnJhbWVTaXplKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChC
eXRlVGVybTo6Qm9keUFsdGVybmF0aXZlQmVnaW4ob25jZVRocm91Z2gpKTsKICAgICAgICAgbV9i
b2R5RGlzanVuY3Rpb24tPnRlcm1zWzBdLmZyYW1lTG9jYXRpb24gPSAwOwogICAgICAgICBtX2N1
cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAKaW5kZXggNDEyYzZlNGE2Y2JlYWM4OTMyMWIwYWU3ODBmZGQ3NmEwNjE5YmUyZC4uZjY2
YTgyZTU3NTFhZGRhMzI5ZWRlZWY3MGFkOTI2OWQxMWVkMmI5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTM4OTksNyArMzg5OSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgp
IHx8IE9wdGlvbnM6OmR1bXBSZWdFeHBEaXNhc3NlbWJseSgpKSkKLSAgICAgICAgICAgIG1fZGlz
YXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0aGlzKTsKKyAg
ICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0
aGlzKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBtX2Rpc2Fz
c2VtYmxlci0+c2V0U3RhcnRPZkNvZGUobGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAKaW5kZXggNDlmNzdmNjljNjg1YzY1MjAzZGYzZjAzNGM5MGQx
ODc3YzkyZGM5Yi4uZmNjNTFiMjc3ZjUwMTEwM2I3YzY1YmJkMzNhNWNhNDEwZDgxYzBlZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMjQwLDcgKzI0
MCw3IEBAIGNsYXNzIENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAg
Y29hbGVzY2VUYWJsZXMoKTsKIAotICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICAgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAKICAgICAgICAgY2hhcmFjdGVyQ2xh
c3MtPm1fbWF0Y2hlcy5zd2FwKG1fbWF0Y2hlcyk7CiAgICAgICAgIGNoYXJhY3RlckNsYXNzLT5t
X3Jhbmdlcy5zd2FwKG1fcmFuZ2VzKTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBjbGFzcyBZYXJyUGF0
dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgLCBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3Io
cGF0dGVybi5pZ25vcmVDYXNlKCksIHBhdHRlcm4udW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6
VW5pY29kZSA6IENhbm9uaWNhbE1vZGU6OlVDUzIpCiAgICAgICAgICwgbV9zdGFja0xpbWl0KHN0
YWNrTGltaXQpCiAgICAgewotICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
dHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5ID0gbWFrZVVuaXF1ZTxQYXR0
ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBib2R5LmdldCgp
OwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAg
ICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGJvZHkpKTsKQEAg
LTQ1Niw3ICs0NTYsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAg
bV9wYXR0ZXJuLnJlc2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAgIG1fY2hhcmFjdGVyQ2xhc3ND
b25zdHJ1Y3Rvci5yZXNldCgpOwogCi0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlx
dWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBtYWtlVW5pcXVl
PFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9keSA9IGJvZHku
Z2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRlcm5hdGl2ZSgp
OwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoYm9keSkp
OwpAQCAtNjA4LDcgKzYwOCw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVCghb3B0R3JvdXBOYW1lKTsKIAotICAgICAg
ICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5E
aXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNq
dW5jdGlvbiA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsK
ICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVy
blRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRlcm5JZCwgcGFyZW50aGVz
ZXNEaXNqdW5jdGlvbi5nZXQoKSwgY2FwdHVyZSwgZmFsc2UpKTsKICAgICAgICAgbV9hbHRlcm5h
dGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAg
ICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShwYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uKSk7CkBAIC02MTYsNyArNjE2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciB7CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBp
bnZlcnQgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsK
KyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJu
RGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rl
cm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3Nl
cnRpb24sIG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFyZW50aGVzZXNEaXNqdW5j
dGlvbi5nZXQoKSwgZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9pbnZl
cnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwpAQCAtNzA3LDcgKzcwNyw3IEBAIGNs
YXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0
aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLmdldCgp
OwogICAgICAgICAgICAgaWYgKCFmaWx0ZXJTdGFydHNXaXRoQk9MIHx8ICFhbHRlcm5hdGl2ZS0+
bV9zdGFydHNXaXRoQk9MKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXdEaXNqdW5jdGlvbikg
ewotICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlv
biA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICAgICAgICAgICAg
ICBuZXdEaXNqdW5jdGlvbi0+bV9wYXJlbnQgPSBkaXNqdW5jdGlvbi0+bV9wYXJlbnQ7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbmV3QWx0
ZXJuYXRpdmUgPSBuZXdEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKQEAgLTE0NzMs
NyArMTQ3Myw3IEBAIHZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0ZXJuKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRyPENoYXJh
Y3RlckNsYXNzPiBhbnljaGFyQ3JlYXRlKCkKIHsKLSAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0g
c3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+
bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MDAsIDB4N2YpKTsKICAgICBjaGFyYWN0
ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwODAsIDB4
MTBmZmZmKSk7CiAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fY2hhcmFjdGVyV2lkdGhzID0gQ2hhcmFj
dGVyQ2xhc3NXaWR0aHM6Okhhc0JvdGhCTVBBbmROb25CTVA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCAwYjdkYjJlYmE4YWQ1MmRlZDJiNWY3ZTY3ZTU0NWI4
YzE2Yzk0NWM3Li43ZTgyYzg1NWE4NzhlNmMxODBlZDUyMWYxZjdhZDQ4ZDhjMWZiYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTM0MSw3ICszNDEsNyBA
QCBzdHJ1Y3QgUGF0dGVybkRpc2p1bmN0aW9uIHsKICAgICAKICAgICBQYXR0ZXJuQWx0ZXJuYXRp
dmUqIGFkZE5ld0FsdGVybmF0aXZlKCkKICAgICB7Ci0gICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOworICAgICAg
ICBtX2FsdGVybmF0aXZlcy5hcHBlbmQobWFrZVVuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+KHRo
aXMpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhdHRlcm5BbHRlcm5hdGl2ZSo+KG1f
YWx0ZXJuYXRpdmVzLmxhc3QoKS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwppbmRleCBjMWY5Zjk5ZGUwOTFjZWNiMmUx
ZGI1NWMzOGZhMzYwMzExZWUzN2Y0Li42OWNkODg4NjU3ODU0Y2Q1NDQ1Zjg2M2UyMmQ1NWZmYjlj
NDBlZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVn
ZXhfdGFibGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90
YWJsZXMKQEAgLTk1LDExICs5NSwxMSBAQCBmb3IgbmFtZSwgY2xhc3NlcyBpbiB0eXBlcy5pdGVt
cygpOgogICAgIGZ1bmN0aW9uICs9ICgie1xuIikKICAgICBpZiBlbWl0VGFibGVzIGFuZCBjbGFz
c2VzWyJVc2VUYWJsZSJdOgogICAgICAgICBpZiAiSW52ZXJzZSIgaW4gY2xhc3NlczoKLSAgICAg
ICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52
ZXJzZSJdKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xh
c3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xh
c3Nlc1siSW52ZXJzZSJdKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmN0aW9uICs9
ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNs
YXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQorICAgICAgICAgICAgZnVuY3Rpb24g
Kz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+
KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCiAgICAgZWxzZToKLSAgICAgICAgZnVuY3Rp
b24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFj
dGVyQ2xhc3M+KCk7XG4iKQorICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3Rl
ckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCiAgICAgaGFzQk1QQ2hh
cmFjdGVycyA9IEZhbHNlCiAgICAgaGFzTm9uQk1QQ2hhcmFjdGVycyA9IEZhbHNlCiAgICAgZm9y
IChtaW4sIG1heCkgaW4gcmFuZ2VzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5CmluZGV4
IGY5ZmVmNDY4ZDJiNWRkYTZhYWVlYWIwYjNmYzA1OGNkM2VlY2VhYzEuLjUyNmZiNmU3YWMzYTIy
N2E2ZDQzY2JiZWZkMjcwMmQxYTBjNTRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMu
cHkKQEAgLTUyOSw3ICs1MjksNyBAQCBkZWYgZHVtcE1hdGNoRGF0YShzZWxmLCBmaWxlLCB2YWx1
ZXNQZXJMaW5lLCBkYXRhTGlzdCwgZm9ybWF0dGVyKToKICAgICBkZWYgZHVtcChzZWxmLCBmaWxl
LCBjb21tYUFmdGVyKToKICAgICAgICAgZmlsZS53cml0ZSgic3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDaGFyYWN0ZXJDbGFzcz4ge30oKVxue3tcbiIuZm9ybWF0KHNlbGYuZ2V0Q3JlYXRlRnVuY05h
bWUoKSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAvLyBOYW1lID0ge30sIG51bWJlciBvZiBj
b2RlUG9pbnRzOiB7fVxuIi5mb3JtYXQoc2VsZi5uYW1lLCBzZWxmLmNvZGVQb2ludENvdW50KSkK
LSAgICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPihcbiIpCisgICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRv
IGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQogICAgICAg
ICBmaWxlLndyaXRlKCIgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcjMyPigiKQog
ICAgICAgICBzZWxmLmR1bXBNYXRjaERhdGEoZmlsZSwgOCwgc2VsZi5tYXRjaGVzLCBsYW1iZGEg
ZmlsZSwgbWF0Y2g6IChmaWxlLndyaXRlKCJ7MDowPSM0eH0iLmZvcm1hdChtYXRjaCkpKSkKICAg
ICAgICAgZmlsZS53cml0ZSgiKSxcbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFy
a3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJu
ZXNzVGVzdC5jcHAKaW5kZXggY2M3MDdkZTNmZjRlYzEzOGNmYTQ2YWI0YzhlMTNhYmI2NTkzY2Jh
MS4uOGM5N2MxYTI0MWI3MjlhZjhmMzFmMzU5YzdmNTE3N2E2MzQwOWRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9X
VEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcApAQCAtNjEsOCArNjEsOCBAQCBzdHJ1
Y3QgQmVuY2htYXJrIHsKICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAg
ICB7CiAgICAgICAgIExvY2tUeXBlIGxvY2s7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNp
Z25lZFtdPiBjb3VudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkW10+KG51bVRocmVhZHMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazx1bnNpZ25lZFtdPihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsKICAgICAKICAgICAgICAgdm9s
YXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0cnVlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xv
Y2tTcGVlZFRlc3QuY3BwCmluZGV4IGYxNTY1MGQ0YzljOGZhNjc3MGY4OTEyZjA5ZGZlMzkyOTEz
MDdjMzQuLmJlN2FiYTM5MGViNTNlMzU4MWUzNmY0YThiOTUwMGQwZTI5OWY5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgc3RydWN0
IEJlbmNobWFyayB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiAgICAgc3RhdGlj
IHZvaWQgcnVuKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+IGxvY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxXaXRo
UGFkZGluZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdp
dGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0
cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4obnVt
VGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJs
ZT5bXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGlu
Zzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3Vw
KTsKIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Nv
bmN1cnJlbnRWZWN0b3IuaAppbmRleCAwYjU0MWI4YzczZDBmNTk4NjUxYmY5NWU3NjkzYjgwN2M5
OTlmNzhhLi44ODRlZDczMjMzNzYxYTI5ZmI0OTZmMGFkMDk4OTY3NTQ1ZTcwMzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93
dGYvQ29uY3VycmVudFZlY3Rvci5oCkBAIC0yNTQsNyArMjU0LDcgQEAgY2xhc3MgQ29uY3VycmVu
dFZlY3RvciBmaW5hbCB7CiAgICAgdm9pZCBhbGxvY2F0ZVNlZ21lbnQoKQogICAgIHsKICAgICAg
ICAgbV9zZWdtZW50cy5ncm93KG1fbnVtU2VnbWVudHMgKyAxKTsKLSAgICAgICAgbV9zZWdtZW50
c1ttX251bVNlZ21lbnRzKytdID0gc3RkOjptYWtlX3VuaXF1ZTxTZWdtZW50PigpOworICAgICAg
ICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBtYWtlVW5pcXVlPFNlZ21lbnQ+KCk7CiAg
ICAgfQogCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5jcHAKaW5kZXggODNjMjA3NTFmODVmNGU0ZDIwMTU2MTQ0MWNhODMxNDFj
YjVjMzdmZi4uYzYzYzA1NWEwYTAzNDFkZjZhNWFmMjcwYTRhY2NiOGQ1N2Q3ODQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKQEAgLTczLDcgKzczLDcgQEAg
dm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgpCiAKICAgICB3aGlsZSAo
IW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29sID0gKG1fdXNlQXV0b2Ry
YWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVzZSkgPyBzdGQ6Om1ha2Vf
dW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJh
aW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNlKSA/IG1ha2VVbmlxdWU8
QXV0b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKIAogICAgICAgICAgICAgbV90YXNrUXVldWUu
d2FpdEZvck1lc3NhZ2UoKS5wZXJmb3JtVGFzaygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgK
aW5kZXggZWZlZmIzYTMxMzNlODNmNjQzMzZmZDJlYzJkYTUyYTU0ODMyZTYyMS4uOTViNjc1OTcy
ZDMxMGUzZGRiZDQxM2Q0YThmOGQxMjg4ZjIwZmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMzAx
LDkgKzMwMSwxMSBAQCB1c2luZyBXVEY6OmZhc3RBbGlnbmVkRnJlZTsKICNkZWZpbmUgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQgXAogcHVibGljOiBcCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJpdmF0ZTog
XAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
bwogCiAjZGVmaW5lIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRCBcCiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFz
czsgXAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNN
YWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKaW5kZXggM2UyNTNjZjJhYzIxOWNjODU1
ODRkNDJjNDUxZWZjN2NhNzliNjRlYS4uNzA3NGMwM2FiYWY4ZmNmMzk3N2YyYjExYWI5YzNkNmUz
ODE2MTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGaWxlUHJpbnRTdHJlYW0+IEZpbGVQcmludFN0cmVhbTo6b3Blbihj
b25zdCBjaGFyKiBmaWxlbmFtZSwgY29uCiAgICAgaWYgKCFmaWxlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVQcmludFN0cmVhbT4o
ZmlsZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKIH0K
IAogdm9pZCBGaWxlUHJpbnRTdHJlYW06OnZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9s
aXN0IGFyZ0xpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oIGIvU291
cmNlL1dURi93dGYvRnVuY3Rpb24uaAppbmRleCAwNWUzNjk3ODI1YmMzZDM0OWY0OGQ2OGMzMmE2
ODYyMjU1ZmI1ODNlLi4wYjc5NTg2NzQ4MGZkMDMyMjQxMjQ1NGU3ZDBhZjgzMzhkNmUzYTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0Z1bmN0aW9uLmgKQEAgLTY3LDExICs2NywxMSBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4p
PiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8IShzdGQ6OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUg
JiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxl
VHlwZT46OnR5cGU+Ojp2YWx1ZSkgJiYgc3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxl
VHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxh
YmxlKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV0YWls
OjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxs
YWJsZSkpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtlVW5pcXVlPERldGFp
bDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoY2Fs
bGFibGUpKSkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNz
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46
OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxG
dW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKEZ1bmN0aW9u
VHlwZSBmKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV0
YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShm
KSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpD
YWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSkpIHsg
fQogCiAgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0CiAgICAgewpAQCAtODQsMTQg
Kzg0LDE0IEBAIGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IShzdGQ6
OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxlVHlwZT46OnR5cGU+Ojp2YWx1ZSkgJiYg
c3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgog
ICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCiAgICAgewot
ICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxs
YWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkp
OworICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJs
ZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpOwog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxGdW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBG
dW5jdGlvbiYgb3BlcmF0b3I9KEZ1bmN0aW9uVHlwZSBmKQogICAgIHsKLSAgICAgICAgbV9jYWxs
YWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1
bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOworICAgICAgICBtX2NhbGxhYmxl
V3JhcHBlciA9IG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBl
LCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93
dGYvSGFzaFRhYmxlLmgKaW5kZXggM2IxZTk1MzAzZGU1NDA1MTQzZmI1NjNjY2I4MDQ3ZTVhY2Vh
ZDBiMy4uYTRkMDc3Zjg0ZjAyYTFmYTFjMWJlMDM0YTg2ZWIzNTBkNmQ3ZjQ5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRh
YmxlLmgKQEAgLTU4OCwxMCArNTg4LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAsIG1f
ZGVsZXRlZENvdW50KDApCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICAs
IG1faXRlcmF0b3JzKDApCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+
KCkpCisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICNpZiBE
VU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKLSAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdHM+KCkpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigp
KQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTEzMzQsMTAgKzEzMzQsMTAgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVf
SVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMobnVsbHB0cikKLSAgICAgICAgLCBtX211
dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlx
dWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQot
ICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKm90aGVyLm1fc3RhdHMp
KQorICAgICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxTdGF0cz4oKm90aGVyLm1fc3RhdHMpKQog
I2VuZGlmCiAgICAgewogICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNvdW50ID0gb3RoZXIuc2l6
ZSgpOwpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgaW5saW5lIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6SGFzaFRhYmxlKEhhc2hUYWJsZSYmIG90aGVyKQogI2lmIENIRUNLX0hBU0hUQUJM
RV9JVEVSQVRPUlMKICAgICAgICAgOiBtX2l0ZXJhdG9ycyhudWxscHRyKQotICAgICAgICAsIG1f
bXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVu
aXF1ZTxMb2NrPigpKQogI2VuZGlmCiAgICAgewogICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRl
cmF0b3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCA5
ZTg3MjBmNmQ5YTc5ODBiOTVlNWIxM2M1ZTY1NWMzODk0OTMwNGI1Li41Mzc5YzBhNGQ1YzhjNmYz
NjdkOTE2OTZlMGQ2YTE4YzVkOWZlYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sIHVzZSkKICAgICB9CiAKICAg
ICBpZiAodXNlKSB7Ci0gICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwor
ICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1l
bW9yeVByZXNzdXJlSGFuZGxlcj4+KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKTsKICAgICAgICAgbV9tZWFzdXJlbWVu
dFRpbWVyLT5zdGFydFJlcGVhdGluZygzMF9zKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9tZWFz
dXJlbWVudFRpbWVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggYWY2NWUwOGNh
ODgwMjQwZWE5ZjE5YzNjMWZjMWZkYzU3YWI0ZDRhYi4uZGVmODM0MGUzYzhhY2M4NTg2ZGE0ZjAw
YmI4ZTlkYzU2ZTAxM2VmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFz
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTU2NSw2ICs1NjUsMjQg
QEAgY29uc3RleHByIHNpemVfdCBjbHoodWludDMyX3QgdmFsdWUsIFplcm9TdGF0dXMgbWlnaHRC
ZVplcm8gPSBaZXJvU3RhdHVzOjpNYXlCZVoKIAogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lO
TElORSBkZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVlKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVuYW1lIFQ6Ol9fZmFzdEFsbG9jYXRlZENsYXNz
LCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJn
cz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwogI2RlZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KHZhbHVlKQogCiB1c2luZyBXVEY6OktCOwpAQCAtNTg1LDMgKzYwMyw1IEBAIHVzaW5n
IFdURjo6bWVyZ2VEZWR1cGxpY2F0ZWRTb3J0ZWQ7CiB1c2luZyBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Y7CiB1c2luZyBXVEY6OnNhZmVDYXN0OwogdXNpbmcgV1RGOjp0cnlCaW5hcnlTZWFyY2g7
Cit1c2luZyBXVEY6Om1ha2VVbmlxdWU7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAppbmRleCAyNmJiYzhmZDY3YTQ5MzQ2MzIy
MWQ2MTk2MThlYjdjNjQ2ODY0MDMwLi5jYTMzZjg2N2QzOGI1NzU5MjAxNDFkNTIzYzMwN2FhZTdj
ODIwYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBTdHJl
YW1CdWZmZXIgewogICAgICAgICBtX3NpemUgKz0gc2l6ZTsKICAgICAgICAgd2hpbGUgKHNpemUp
IHsKICAgICAgICAgICAgIGlmICghbV9idWZmZXIuc2l6ZSgpIHx8IG1fYnVmZmVyLmxhc3QoKS0+
c2l6ZSgpID09IEJsb2NrU2l6ZSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxCbG9jaz4oKSk7CisgICAgICAgICAgICAgICAgbV9idWZmZXIuYXBwZW5k
KG1ha2VVbmlxdWU8QmxvY2s+KCkpOwogICAgICAgICAgICAgc2l6ZV90IGFwcGVuZFNpemUgPSBz
dGQ6Om1pbihCbG9ja1NpemUgLSBtX2J1ZmZlci5sYXN0KCktPnNpemUoKSwgc2l6ZSk7CiAgICAg
ICAgICAgICBtX2J1ZmZlci5sYXN0KCktPmFwcGVuZChkYXRhLCBhcHBlbmRTaXplKTsKICAgICAg
ICAgICAgIGRhdGEgKz0gYXBwZW5kU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Vu
aXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggNzNlOWRmZWMwNmZk
Nzg3ZjNiMDZiM2RjOWRhNjVhNTUwNGQxYzAyOS4uNjU5MTI1MWI4NjI3ZGYzNmNmMmViOWY3NDc5
M2VmNDg5Y2ExZTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysr
IGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTMzLDExICszMywxOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFVuaXF1ZVJlZjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVm
KEFyZ3MmJi4uLiBhcmdzKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1h
bGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQogewogICAgIHJldHVybiBVbmlxdWVSZWY8VD4oKm5l
dyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4u
IGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6X19m
YXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFVuaXF1ZVJlZiB7CiBwdWJsaWM6CkBA
IC02Myw3ICs3MCw3IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFQ+
IG1vdmVUb1VuaXF1ZVB0cigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWYpOyB9CiAKIHByaXZhdGU6
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxV
PiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3Mu
Li4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxs
b2NDaGVjayhBcmdzJiYuLi4pOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBjbGFzcyBV
bmlxdWVSZWY7CiAKICAgICBVbmlxdWVSZWYoVCYgb3RoZXIpCkBAIC03OSwzICs4Niw0IEBAIGNs
YXNzIFVuaXF1ZVJlZiB7CiAKIHVzaW5nIFdURjo6VW5pcXVlUmVmOwogdXNpbmcgV1RGOjptYWtl
VW5pcXVlUmVmOwordXNpbmcgV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVj
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291
cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXggNWU1YmE4YWJlYmRiZDQ5YmJi
ODM3ZGQ0YzRmZDY5YmQ2ZmZjMzYxZi4uZmIyMTFkMGEyOTYxZGZjMTZhYTZlMjFhMjFhOTc0ZGZm
MTUyNjk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTE0Nyw3ICsxNDcs
NyBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQo
KSwgIltXZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hBZnRlciIpOwogICAgIGdfc291cmNlX3NldF9y
ZWFkeV90aW1lKHNvdXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIGR1cmF0aW9u
Lm1pY3Jvc2Vjb25kc0FzPGdpbnQ2ND4oKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0
Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BhdGNoQWZ0ZXJD
b250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNo
QWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4o
V1RGTW92ZShmdW5jdGlvbikpOwogICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhzb3VyY2UuZ2V0
KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChzdGF0aWNfY2FzdDxEaXNwYXRj
aEFmdGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7CiAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBkY2JhMDYwODJjNWY2NmUzMTlhMTVl
ZTU5N2ZjNjQ5NzY2YjA1ZTZjLi41YmY0ZTZkMDFkZTg0M2VkMjg3ODgzZWEzYTAzZTg0OTQ5M2Jl
Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBj
bGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbCB7CiB9Owog
CiBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpCi0gICAgOiBtX2ltcGwoc3Rk
OjptYWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3LmlzTnVsbCgpID8gV1RG
OjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKKyAgICA6
IG1faW1wbChtYWtlVW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkg
PyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
PihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFu
aWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKaW5k
ZXggZmRiOGNlMjkyZDczOGRhNDIwMzhhYTk2NWFmM2FjYTE3OGE4MGNlYi4uOGRjNzZmYTJlNTll
YTY3ZTAyMTczOGMzMTFhMzU3N2Y0ZDM2ZTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlJbnZhbGlkVVJMKGNvbnN0IFN0cmlu
ZyYgcHJvcAogdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZlbG9wZXJXYXJu
aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9jb25zb2xlQ29udGV4dCkK
LSAgICAgICAgbV9jb25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVy
LCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2csIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtl
U3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5z
dHJpbmcoKSwgIjogIl9zLCBtZXNzYWdlKSkpOworICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KEpT
Qzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFuaWZl
c3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7CiB9CiAK
IFVSTCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZVN0YXJ0VVJMKGNvbnN0IEpTT046
Ok9iamVjdCYgbWFuaWZlc3QsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCA5YmZhNWY5
NDk5NGIwNTQ1MDZiODI2YTMxNGI4MjU4MjdlYTQxYWRiLi43ZTRmNzk0NzFlMmM1OWZlNzFjMTQ4
MTMyZjRiNTUxZDhmZmM3OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVh
Y29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgTmF2aWdhdG9yQmVhY29u
KiBOYXZpZ2F0b3JCZWFjb246OmZyb20oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CiAgICAgYXV0
byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckJlYWNvbio+KFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYg
KCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2
aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAK
aW5kZXggNWVkMWY1Y2NhNjQxZWIwNGVjMGUwYTBjZTA2YzgzNzI0NTY4YTJmZi4uNjE1Mzk0MzBk
ZmI5NjE2ZmQyODhmZWQ5MmNiOTQ0ZmY0NDZiMDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcApAQCAtNDksNyArNDksNyBAQCBET01X
aW5kb3dDYWNoZXMqIERPTVdpbmRvd0NhY2hlczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsK
ICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93Q2FjaGVzKj4oU3Vw
cGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2Fj
aGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVD
YWNoZXMuY3BwCmluZGV4IDA2NTZiZWYwYjE3MThlMzNkYmM3ZmEwZWU2MGM1N2Q0OGUzOGQ0ZTgu
LjUxMThhNDg4NTBmMjQyZDA0NGQzYjQwZmYwZTNiMjNiYjk2ZTI4ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKiBXb3JrZXJHbG9i
YWxTY29wZUNhY2hlczo6ZnJvbShXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCiB7CiAgICAgYXV0
byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKj4oU3Vw
cGxlbWVudDxXb3JrZXJHbG9iYWxTY29wZT46OmZyb20oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM+KHNjb3BlKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUNhY2hl
cz4oc2NvcGUpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAg
ICAgICAgcHJvdmlkZVRvKCZzY29wZSwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVk
ZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcApp
bmRleCA3MWY0MzhjZjc4NmM3NmQ3YjU4NzIxNTU5NzY2OGI2MjM2MWI1OTkzLi4xMTgxYmQ5ODVh
MjJiYTQ5M2Y4MzYzMWQ3ZTQxZmVlODc5YjU2YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRv
ckNyZWRlbnRpYWxzLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOYXZpZ2F0b3JDcmVkZW50aWFscyog
TmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAg
TmF2aWdhdG9yQ3JlZGVudGlhbHMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JD
cmVkZW50aWFscyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50aWFscz4oKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50aWFs
cz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IGI2ZmQ2OGQ2NzJlZGUzODc3
OGMxNWM2ZmVhYWY0NmI0NTVlNWExY2QuLjc1ZWRiNmE5MzYzODgwZTU4N2MzNTc1NmIxNGRlYzlm
OWI0NWU2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIE9wdGlv
bmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94Pj4+IEluaXREYXRhCiAgICAgICAgIGF1dG8gc3lzdGVtSUQgPSBJU09Qcm90ZWN0aW9u
U3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRCh2aWV3LCBvZmZzZXQpOwogI2lm
IEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICAgICAgaWYgKHN5c3Rl
bUlEID09IElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveDo6ZmFpclBsYXlTeXN0ZW1JRCgpKSB7
Ci0gICAgICAgICAgICBhdXRvIGZwc1Bzc2ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveD4oKTsKKyAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IG1ha2VVbmlx
dWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOwogICAgICAgICAgICAgaWYgKCFmcHNQ
c3NoLT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgICAgIHBzc2hCb3hlcy5hcHBlbmQoV1RGTW92ZShmcHNQc3NoKSk7CkBA
IC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICNlbHNlCiAgICAgICAg
IFVOVVNFRF9QQVJBTShzeXN0ZW1JRCk7CiAjZW5kaWYKLSAgICAgICAgYXV0byBwc3NoQm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7
CisgICAgICAgIGF1dG8gcHNzaEJveCA9IG1ha2VVbmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNw
ZWNpZmljSGVhZGVyQm94PigpOwogICAgICAgICBpZiAoIXBzc2hCb3gtPnJlYWQodmlldywgb2Zm
c2V0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0u
Y3BwCmluZGV4IDgyNjI4OTNmZTBhZjk5OTE0ZWQzOWU5NjBjZjEwYTc1MzQwNzA1YjYuLjgzN2Rm
MTIzYWU1OTZmMzUzN2M5MTUyNzAzZTNkMjcxYjM0NmViNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNw
cApAQCAtNjEsMTUgKzYxLDE1IEBAIHN0cnVjdCBDRE1GYWN0b3J5IHsKIHN0YXRpYyBWZWN0b3I8
Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQogewogICAgIHN0YXRpYyBhdXRv
IGNkbXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPENETUZhY3RvcnkqPiB7Ci0gICAgICAg
IG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZh
Y3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5PihjZG0pOyB9LAogICAgICAgICAgICAgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogICAgICAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBz
cGVjaWZpYyBVQSBDRE1zLiBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMxOCwgaHR0cDovL3dlYmtp
dC5vcmcvYi8xMDkzMjAKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9
LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCiAgICAgICAgICAgICBDRE1Q
cml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAjaWYgKEhBVkUoQVZDT05URU5U
S0VZU0VTU0lPTikgfHwgSEFWRShBVlNUUkVBTVNFU1NJT04pKSAmJiBFTkFCTEUoTUVESUFfU09V
UkNFKQotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAor
ICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVu
aXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAogICAgICAgICAgICAg
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogI2Vu
ZGlmCiAgICAgfSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TT4gTGVnYWN5Q0RNOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgaWYgKCFz
dXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUNETT4oa2V5U3lzdGVtKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3RlbSk7CiB9CiAKIExlZ2FjeUNETTo6
TGVnYWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAppbmRleCA0
NThlYzUzYjQzMzdiMTcxMDU1NmY4YTE3YjRlZjAxZWZjZTE1NjRlLi5mYjVkYTFmMTZkYTAyZWM4
NGMzNDc3ZDM1NWZlMGE1ZTg5NjQwNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaApAQCAtNTAsNyArNTAs
OCBAQCBjbGFzcyBMZWdhY3lDRE1DbGllbnQgewogICAgIHZpcnR1YWwgUmVmUHRyPE1lZGlhUGxh
eWVyPiBjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25zdCA9IDA7CiB9OwogCi1j
bGFzcyBMZWdhY3lDRE0geworY2xhc3MgTGVnYWN5Q0RNIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDRE0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKaW5kZXggMGE4
ZDU0ZTVjNTY1ZjM0NTA4NTYyYzVhOGMxZTAwMzVhZjE0YTc0Zi4uZjI0OTcwNzJlNzg1NzYwYzU5
ZTIzMDM5MzRmYjdmOWNjNDc3MmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaApA
QCAtMzUsNiArMzUsNyBAQCBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwogY2xhc3MgTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudDsKIAogY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUludGVyZmFjZSgpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgPSBkZWZhdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggYzkz
MTZkZmQ4YWJiNDA1NDkyZjU1NWViM2QxYjNkMDkxN2NlZmY1MC4uM2E4YzAwZjUyMzFmNTJhNmU4
OWQxODNkMTUxMWMzYWM4NzczYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlQ2xlYXJLZXkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6
OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMmY3YjAzNTM5
ZWY4ZWE0NzRlMjM2ZDA1ZDllMTdmZWM0ODRlNjI3ZS4uYmM3NzdmMGNiYzhjZTdiODllOTQzYjhh
NjNlNGU2ZTgyODliMzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNs
ZWFyS2V5LmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDRE1TZXNzaW9uQ2xlYXJLZXkgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CitjbGFzcyBD
RE1TZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkNsZWFyS2V5
KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQ2xlYXJL
ZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHAKaW5kZXggYWRkYzU0ODk2YjhhNDQzOGNmYmZkMDY1ODBhZGJjODYwYTgxZjg2NC4uZGI2Mzkw
ZTdmOTkyNTk3N2I4N2NhMDA5ZWRhYmQ1MWNkYjY2NzMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRjaEJvZHlD
b25zdW1lciogY29uc3VtZXIpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyLmVtcGxhY2UoKnRo
aXMpOwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExv
YWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOworICAgIG1fYmxvYkxvYWRlci0+bG9hZGVy
ID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOwogCiAg
ICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGJsb2IpOwogICAgIGlmICghbV9ibG9iTG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCBj
ZDM0NWViOWVjMzQwYzM2ZTBmMGE2ZWVkODJkZDk4OGI0Zjk3ZDM5Li45NDAxM2NmNGVhNjUyMzhk
ODNiOWI0YzgxZGI3ZDE4MTY1MzI0NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVz
dCYgcmVxdWVzdAogCiAgICAgcmVzcG9uc2UtPmFkZEFib3J0U3RlcHMocmVxdWVzdC5zaWduYWwo
KSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxCb2R5
TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNrKSk7CisgICAg
cmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG1ha2VVbmlxdWU8Qm9keUxvYWRlcj4ocmVzcG9uc2Uu
Z2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwogICAgIGlmICghcmVzcG9uc2UtPm1f
Ym9keUxvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3BvbnNlLT5t
X2JvZHlMb2FkZXIgPSBudWxscHRyOwogfQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCiAKIGJvb2wgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZt
X3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVl
PEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigpKTsKICAg
ICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIG1fbG9hZGVy
LT5pc1N0YXJ0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAppbmRleCA2MTAyMDg5OWNiYzRhN2U0MzNiMTUxZGNjYWVi
ZmU5MDc2NGQzZTJkLi44NTBkMjJkZTI4NWJiMzM1ZDIyZThjMmUyNTNiN2FiNmUwYzYwMzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVw
YWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvckdhbWVwYWQqIE5hdmlnYXRvckdhbWVw
YWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2FtZXBhZCog
c3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdhbWVwYWQqPihTdXBwbGVtZW50PE5h
dmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwCmluZGV4IGIwOWZjMzQzM2JiZmJiNzI4ZjMxNWMxNTMzYTZmMmM5ZTRmYzAwNzEuLmNkODA3
MGIyMDdkYjhhMzQ0MDI2Y2ZmNjEwNWI4NWVlMTliYzUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCkKIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFnZSogcGFn
ZSwgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQocGFnZSk7Ci0gICAg
U3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+
KCpwYWdlLCBjbGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEdlb2xv
Y2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCBiMzRmNDlhNjcxZDg1ZjUxNDJi
OGJhZjBmNTJiYTk5MWFjNDM1OWRjLi4zNWRmYmY4ZjNmMjU2OWMwMTM1MzU2NjMwMGY1Yjc4Mzdk
ZTI4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05h
dmlnYXRvckdlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCBOYXZpZ2F0
b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20oTmF2aWdhdG9yJiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxOYXZpZ2F0b3JHZW9sb2NhdGlvbio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgm
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR2Vv
bG9jYXRpb24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYzcyMDNhOWE4NjQwOTcwNTBkM2RjMDA3OTJmN2E2YjU4
MWZhYTI1ZS4uNWU5ZDk3OTY2YmZkZTU4ZTY2MDk5YTUwOWU2MThiODRjMThkMDVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5k
b3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERPTVdpbmRvd0luZGV4ZWRE
YXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKERPTVdpbmRvdyogd2luZG93
KQogewogICAgIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJv
bSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2U+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVt
ZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3Vw
cGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4
IGY0MzA5MGM0ZGNjM2VkZTVlMjdkMWFhNDQzODQ0NDdkODQ5YzY0MGIuLjlhNzgxMjc4NDYzZWQw
YTRhMGFkZGQzZjdkYjBjNTY1Njk2MmI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmRleCcgb24gJ0lEQk9iamVj
dFN0b3JlJzogVGhlIHNwZWNpZmllZCBpbmRleCB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAg
YXV0byBpbmRleCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBpbmRleCA9IG1ha2VVbmlxdWU8SURC
SW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CiAKICAgICBS
ZWY8SURCSW5kZXg+IHJlZmVyZW5jZWRJbmRleCB7ICppbmRleCB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZmEy
Y2Q3ZWFkMDliNjA1NTI1YjhjYjQ0MWVmNzAwMWQ4MzM1MDEwMC4uNDIyNDNmYmE1NzMxMjk1NDE4
ODk0YTMyMDQzZTg5ZTBiMmMxYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYgKCFpbmZvIHx8ICghZm91bmQgJiYgIWlzVmVyc2lv
bkNoYW5nZSgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJG
YWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3RvcmUnIG9uICdJREJUcmFuc2FjdGlvbic6IFRoZSBz
cGVjaWZpZWQgb2JqZWN0IHN0b3JlIHdhcyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBhdXRvIG9i
amVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gbWFr
ZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8s
ICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwog
ICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmVOYW1lLCBXVEZNb3Zl
KG9iamVjdFN0b3JlKSk7CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+
IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mCiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9j
ayk7CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RT
dG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOworICAgIGF1dG8g
b2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmpl
Y3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KGluZm8ubmFt
ZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RT
dG9yZSYgb2JqZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jcmVhdGVJbmRleE9uU2Vy
dmVyKG9wZXJhdGlvbiwgaW5mbyk7CiAgICAgfSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0
b3JlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpj
cmVhdGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRl
eGVkRGF0YWJhc2UuY3BwCmluZGV4IGE0ODUwM2I0ZDJkODA0Mjk0Njg0YTY1YTY1ZWJkNjRmMjMz
Y2Q3YjkuLjliNzU3NzQ5MjFiNDY1MDZmNTgzZGU3ZmVjNDI1MGU4NTRhY2U1MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9X
b3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV29y
a2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERh
dGFiYXNlOjpmcm9tKFdvcmtlckcKICAgICAgICAgaWYgKCFjb25uZWN0aW9uUHJveHkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwg
KmNvbm5lY3Rpb25Qcm94eSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlx
dWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblBy
b3h5KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVu
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggOTQ4Y2Y3
NDY2M2FlNjljODJkYTQ0NGUwOTM0NzNkZDg1NmQ0ZGU5My4uMzc3MTFkYzEwM2RiNmM5YTliODEz
ZGJjOWRmNzk5YjdlMjZhNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gSURCQ29ubmVjdGlv
blRvU2VydmVyOjpjcmVhdGUoSURCQ29ubmVjdGlvblRvU2VydmVyRGUKIAogSURCQ29ubmVjdGlv
blRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIoSURCQ29ubmVjdGlvblRvU2VydmVyRGVs
ZWdhdGUmIGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShtYWtlV2Vha1B0cihkZWxlZ2F0ZSkp
Ci0gICAgLCBtX3Byb3h5KHN0ZDo6bWFrZV91bmlxdWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhp
cykpCisgICAgLCBtX3Byb3h5KG1ha2VVbmlxdWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhpcykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDI3NTNmZDBjMjQ1
N2I5YzA5ZDlkODllNGY3NjJiNDc5ZjhiNDQwYjEuLjhlMWRlMDZkNzFlOGYwYjIyM2Q2ODZlNWUx
YThhMjIwOWI3NDM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApAQCAtNDIs
NyArNDIsNyBAQCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChtX2luZGV4SWRlbnRp
ZmllcikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1ZXN0LnJlcXVlc3RlZEluZGV4
UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0LnBlbmRpbmdDdXJz
b3IoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CisgICAgICAg
IG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihj
dXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCiAgICAgbV9pZGJSZXF1ZXN0ID0gJnJlcXVl
c3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuY3BwCmluZGV4IDg5YmZlNzkzZDdkYmI1Y2U3MzExNDc5ZWY2OTUwYjljZmQx
N2NlMDguLjNiYjZkYWNhNjhkN2MwZjUzYWQ4N2U5ZDFkZjE4YTNmZmU0YTkxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVW5pcXVlSURCRGF0YWJhc2UmIElEQlNlcnZlcjo6Z2V0
T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW4KIAogICAgIGF1
dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLmFkZChpZGVudGlm
aWVyLCBudWxscHRyKTsKICAgICBpZiAodW5pcXVlSURCRGF0YWJhc2UuaXNOZXdFbnRyeSkKLSAg
ICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworICAgICAgICB1bmlxdWVJ
REJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFVuaXF1ZUlEQkRhdGFiYXNl
PigqdGhpcywgaWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gKnVuaXF1ZUlEQkRhdGFiYXNlLml0
ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURC
QmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRh
YmFzZQogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9u
SUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdTdG9yZVRl
bXBvcmFyeUZpbGVIYW5kbGVyLCBtX3Blck9yaWdpblF1b3RhKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2Rh
dGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciwg
bV9wZXJPcmlnaW5RdW90YSk7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpAQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQg
SURCU2VydmVyOjpRdW90YVVzZXI6OmluaXRpYWxpemVTcGFjZVVzZWQodWludDY0X3Qgc3BhY2VV
c2VkKQogSURCU2VydmVyOjpRdW90YVVzZXImIElEQlNlcnZlcjo6ZW5zdXJlUXVvdGFVc2VyKGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVybiAqbV9xdW90YVVzZXJzLmVu
c3VyZShvcmlnaW4sIFt0aGlzLCAmb3JpZ2luXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVvdGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklE
LCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmlnaW4gfSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVvdGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklE
LCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmlnaW4gfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCmluZGV4IDY5ODNjOWQ3ZWFmZjU2MTY3MjA0
ZDk1MmYxZjIyNjdiYjQwY2E0YmEuLjhkOTIxZDhlZmU2YmE4NDBhMzBkNjFkZmRjNmE3MjFlODI4
YTQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JbmRleFZhbHVlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIElEQkVycm9y
IEluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQktleURhdGEmIGluZGV4S2V5LCBj
b25zdCBJREJLZXlEYXRhCiAgICAgICAgIHJldHVybiBJREJFcnJvcihDb25zdHJhaW50RXJyb3Ip
OwogCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZUVudHJ5
PihtX3VuaXF1ZSk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGRLZXkodmFsdWVL
ZXkpOwogICAgIG1fb3JkZXJlZEtleXMuaW5zZXJ0KGluZGV4S2V5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDQ3Y2M0MmZkMjZkNjQ3M2M2
NDE5MjdlOTkyZDRlYzZlOGQ3YmY4ZWUuLjVlNzE0NDk3ODRhMGRhMDc2Nzc4OWE4ZGVkYzUyMjY4
OWY0ZDhkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogc3RkOjp1bmlx
dWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPiBNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbjo6Y3JlYXRlKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBj
b25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJh
Y2tpbmdTdG9yZSwgaW5mbyk7CiB9CiAKIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihNZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tp
bmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQpAQCAtNTIsNyArNTIsNyBA
QCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oTWVtb3J5SURCQmFja2luZ1N0bwogICAgICAgICBJREJEYXRhYmFzZUluZm8gaW5mbzsK
ICAgICAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLmdldE9yRXN0YWJsaXNoRGF0YWJh
c2VJbmZvKGluZm8pOwogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGluZm8pOworICAgICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8
SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICB9CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2
b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVt
b3J5T2JqZWN0U3RvcmUmIG9iamVjdAogCiAgICAgYXV0byBvcmlnaW5hbEFkZFJlc3VsdCA9IG1f
b3JpZ2luYWxWYWx1ZXMuYWRkKCZvYmplY3RTdG9yZSwgbnVsbHB0cik7CiAgICAgaWYgKG9yaWdp
bmFsQWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG9y
aWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+
KCk7CiAKICAgICBhdXRvKiBtYXAgPSBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2QxNDJiMDA1
MGFiNjA4ODFlMzg3YmU4YzE5ODk0N2FjNmU4ZGQ4MS4uY2ZmZTMzMzdmNzk0NDhiOGMyMTNkYmJl
NWZhMzViNGQzYTcwZjJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHVpbnQ2NF90IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgy
MDAwMDAwMDAwMDAwMDsKIAogc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4g
TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURC
QmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIH0KIAogTWVtb3J5SURCQmFja2luZ1N0b3JlOjpN
ZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQpAQCAtNjEsNyArNjEsNyBAQCBNZW1vcnlJREJCYWNraW5nU3RvcmU6On5NZW1vcnlJREJC
YWNraW5nU3RvcmUoKSA9IGRlZmF1bHQ7CiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAg
ICBpZiAoIW1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDAp
OworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPiht
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOwogCiAgICAgaW5mbyA9ICptX2RhdGFiYXNl
SW5mbzsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJhc2VJbmZvKGNvbnN0IElEQkRhdGFiYXNlSW5m
byYgaW5mbykKICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8gZGlyZWN0bHkgc2V0IGRhdGFiYXNl
IGluZm8gb24gYSBiYWNraW5nIHN0b3JlIHRoYXQgaGFzbid0IGFscmVhZHkgc2V0IGl0cyBvd24g
ZGF0YWJhc2UgaW5mby4KICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwogCi0gICAgbV9kYXRh
YmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAg
bV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiB9CiAK
IElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAppbmRleCA0OWRkY2E2YmQ0MGQy
OWQ0MmUzOGI4NTEzMWM4OWZkZmU3ZDQ3OTJkLi44NTk1ZGJiOGY0YTdlZTNkMTkxZTMxZmI2MTBi
MDQ5NzViODc0NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBJREJFcnJv
ciBNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkoY29uc3QgSURCS2V5RGF0YSYgdmFsdWVLZXksIGNv
bnN0IEluZGV4S2V5JiBpbgogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6cHJvdmlz
aW9uYWxQdXRJbmRleEtleSIpOwogCiAgICAgaWYgKCFtX3JlY29yZHMpIHsKLSAgICAgICAgbV9y
ZWNvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRleFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUo
KSk7CisgICAgICAgIG1fcmVjb3JkcyA9IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2lu
Zm8udW5pcXVlKCkpOwogICAgICAgICBub3RpZnlDdXJzb3JzT2ZBbGxSZWNvcmRzQ2hhbmdlZCgp
OwogICAgIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIE1lbW9yeUluZGV4Q3Vyc29yKiBNZW1vcnlJ
bmRleDo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4o
KnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1l
bW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IGVkNmVi
YTkyN2YxZjRmNmI5YzMwNjhmNmI1ZDg4ZGUyOTk3MjY3ZWIuLjViNDRhNzM4NzhjOWZkZDdhMWUw
NWE5NWI3NjU3ZWJlNjM2MzUxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMjU5
LDggKzI1OSw4IEBAIElEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uCiAKICAgICBpZiAoIW1fa2V5VmFs
dWVTdG9yZSkgewogICAgICAgICBBU1NFUlQoIW1fb3JkZXJlZEtleXMpOwotICAgICAgICBtX2tl
eVZhbHVlU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtleVZhbHVlTWFwPigpOwotICAgICAgICBt
X29yZGVyZWRLZXlzID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhU2V0PigpOworICAgICAg
ICBtX2tleVZhbHVlU3RvcmUgPSBtYWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOworICAgICAgICBt
X29yZGVyZWRLZXlzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SURCS2V5RGF0
YVNldD4oKTsKICAgICB9CiAKICAgICBhdXRvIG1hcFJlc3VsdCA9IG1fa2V5VmFsdWVTdG9yZS0+
c2V0KGtleURhdGEsIHZhbHVlLmRhdGEoKSk7CkBAIC00OTcsNyArNDk3LDcgQEAgTWVtb3J5T2Jq
ZWN0U3RvcmVDdXJzb3IqIE1lbW9yeU9iamVjdFN0b3JlOjptYXliZU9wZW5DdXJzb3IoY29uc3Qg
SURCQ3Vyc29ySW5mbyYKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0aGlz
LCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBiZmJkMDlkYmI5YTcxZDNjNDFh
OWRmNmE3Nzk0ZWVkZTU4MWFiZDcwLi5kYWE0YTE5YmQ4Mzk2ZjM4MTllNjlkYzk5NTY3NmUzMzll
YWRkMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjI0LDcgKzYy
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsCiAgICAgfQogCiAgICAgLy8gVGhpcyBpbml0
aWFsIGRhdGFiYXNlIGluZm8gbWF0Y2hlcyB0aGUgZGVmYXVsdCB2YWx1ZXMgd2UganVzdCBwdXQg
aW50byB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFt
ZSgpLCAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8oKQpAQCAtNjU5LDcgKzY1
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBh
dXRvIGRhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRh
YmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7CisgICAgYXV0byBkYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOwog
CiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiU0VMRUNU
IGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jLCBtYXhJbmRleElEIEZST00gT2JqZWN0U3RvcmVJ
bmZvOyJfcyk7CkBAIC04MjEsNyArODIxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KIAog
ICAgIFN0cmluZyBkYkZpbGVuYW1lID0gZnVsbERhdGFiYXNlUGF0aCgpOwogCi0gICAgbV9zcWxp
dGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9zcWxpdGVE
QiA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX3NxbGl0ZURCLT5v
cGVuKGRiRmlsZW5hbWUpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FM
aXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIGNsb3NlU1FMaXRlREIoKTsKQEAgLTkzMSwxMSArOTMxLDExIEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gZXN0YWJsaXNoIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgdGhhdCBhbHJlYWR5IGV4
aXN0cyJfcyB9OwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CisgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rpb24+
KCp0aGlzLCBpbmZvKTsKIAogICAgIGF1dG8gZXJyb3IgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5iZWdpbigqbV9zcWxpdGVEQik7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGluZm8u
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewotICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPigqbV9kYXRhYmFzZUluZm8pOwogCiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1f
c3FsaXRlREIsICJVUERBVEUgSURCRGF0YWJhc2VJbmZvIFNFVCB2YWx1ZSA9ID8gd2hlcmUga2V5
ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKICAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCkBAIC0yNjYyLDcgKzI2NjIsNyBAQCBTUUxpdGVTdGF0ZW1lbnQqIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50KFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Uwog
ICAgIH0KIAogICAgIGlmIChtX3NxbGl0ZURCKSB7Ci0gICAgICAgIG1fY2FjaGVkU3RhdGVtZW50
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0
ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQpOworICAgICAgICBtX2NhY2hlZFN0YXRlbWVu
dHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50
PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKICAgICAgICAgaWYgKG1fY2FjaGVkU3RhdGVtZW50
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldLT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAg
ICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBu
dWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggZjg0MDVhNzk4YTM2ODEw
ZGM1NzZhZjFlNzNiY2FmNTMxMDIzN2JhZi4uYzZiM2ZkOTUzYTBkNTNhYzE1NjhlMjg0OGNiYzc4
YTEyZjE5NTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3Rh
dGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0ID0gODsKIAogc3RkOjp1bmlxdWVfcHRyPFNR
TGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAg
YXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rp
b24sIGluZm8pOworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+
KHRyYW5zYWN0aW9uLCBpbmZvKTsKIAogICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01OSw3ICs1OSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FM
aXRlSURCVHJhbnNhY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0
ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVDdXJzb3IoU1FMaXRlSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCB1
aW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIGF1
dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9u
LCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7CisgICAgYXV0byBjdXJzb3IgPSBtYWtl
VW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4
SUQsIHJhbmdlKTsKIAogICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTksNyArMTk5LDcgQEAgYm9vbCBTUUxpdGVJREJD
dXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKICAgICBBU1NF
UlQoIW1fY3VycmVudFVwcGVyS2V5LmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKSk7CiAKLSAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigp
LT5kYXRhYmFzZSgpLCBzcWwpOworICAgIG1fc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVT
dGF0ZW1lbnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCks
IHNxbCk7CiAKICAgICBpZiAobV9zdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKHBy
ZXBhcmUvaWQpIC0gJyVzJyIsIG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRh
dGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIFNRTGl0ZUlEQkN1
cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29y
ZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09IElu
ZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpCi0gICAgICAgICAgICByZWNvcmQucmVj
b3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwor
ICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRo
cmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBi
bG9iRmlsZVBhdGhzKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJp
bWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXpl
IHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7
CkBAIC00ODYsNyArNDg2LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJ
REJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBp
ZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIG9iamVjdFN0b3JlU3RhdGVt
ZW50LmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29y
ZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5y
ZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJl
Y29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBv
YmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBTa2lwIG92ZXIgaXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBhNmEzYzVmZmYzMzgwYzI1ZWY3MzYxZTY4OGJlZjM2YzA2
MTVmYzgzLi5kMjEyZGUyYjZiODhhZmZlMGEzNWIwZmQwZmQzM2ZjODY3Y2VjYmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJh
bnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAg
ICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwogCi0gICAgbV9zcWxpdGVUcmFuc2FjdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8u
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOworICAgIG1fc3FsaXRlVHJh
bnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZv
Lm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBtX3NxbGl0ZVRy
YW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJv
Z3Jlc3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDczMDQ5NzQ0MjBmZjQ2ZmRm
MmVhOTY3OWI2ZDViNWI3ZTY5YmZkZWMuLjU3Yjc3YzAxMjU4ZmQ1ZDQ5ZjcwNThmZWJiZDU4NTM3
NDNjMmRiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBk
ZWxldGVkVmVyc2lvbikKICAgICAvLyB3ZSB3b24ndCBoYXZlIGEgbV9tb3N0UmVjZW50RGVsZXRl
ZERhdGFiYXNlSW5mby4gSW4gdGhhdCBjYXNlLCB3ZSdsbCBtYW51ZmFjdHVyZSBvbmUgdXNpbmcg
dGhlCiAgICAgLy8gcGFzc2VkIGluIGRlbGV0ZWRWZXJzaW9uIGFyZ3VtZW50LgogICAgIGlmICgh
bV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbykKLSAgICAgICAgbV9tb3N0UmVjZW50RGVs
ZXRlZERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lk
ZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRWZXJzaW9uKTsKKyAgICAgICAgbV9tb3N0
UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPiht
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRWZXJzaW9uKTsKIAogICAgIGlmICht
X2N1cnJlbnRPcGVuREJSZXF1ZXN0KSB7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3Qt
Pm5vdGlmeURpZERlbGV0ZURhdGFiYXNlKCptX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZv
KTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFj
a2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbywgY29uc3QgSQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIpOwogICAgIAotICAgIG1fZGF0YWJhc2VJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIG1fYmFja2lu
Z1N0b3JlT3BlbkVycm9yID0gZXJyb3I7CiAKICAgICBBU1NFUlQobV9pc09wZW5pbmdCYWNraW5n
U3RvcmUpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
UGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAg
ICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwog
ICAgICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbiB8fCAmbV92
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmRhdGFiYXNlQ29ubmVjdGlvbigpID09IG1fdmVyc2lv
bkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CiAgICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7Ci0gICAgICAgIG1fZGF0YWJh
c2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CisgICAgICAgIG1fZGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CiAgICAgfQogCiAgICAgSURCRXJyb3Ig
cmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkgPT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2FjdGlvbi0+cmVzdWx0KCkgOiBlcnJvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAppbmRleCBmMTdhNGU1
NTIzZmI1ZjYxYjAyNmEwOTE0N2Y4MTQxZDViNjQxMzlhLi44NTQwY2E3ODZkNTczNThkOTgyYzcz
ZTY0NjBmN2Y4ZjBhODgzNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24uY3BwCkBAIC01MSw3ICs1MSw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiAg
ICAgQVNTRVJUKGRhdGFiYXNlKTsKIAogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkg
PT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKQotICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNl
LT5pbmZvKCkpOworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlcnZl
ciA9IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5zZXJ2ZXIoKSkKICAgICAgICAgc2VydmVyLT5yZWdp
c3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCmluZGV4IGIxMGQ4NDA5
OWIyNTI4ZTZmNzNjMjhiMTUwNGE4YTkzMjRkMGIyMWEuLjIxNjQxNmFmYTExY2YyNTVkMzZkZWZi
M2VmZjM2ZWZhZjE5NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoKQogCiBJREJSZXF1ZXN0RGF0YTo6SURC
UmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5lY3Rp
b25Qcm94eSwgY29uc3QgSURCT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvblByb3h5LnNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQorICAgICwgbV9y
ZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVj
dGlvblByb3h5LCByZXF1ZXN0KSkKICAgICAsIG1fZGF0YWJhc2VJZGVudGlmaWVyKHJlcXVlc3Qu
ZGF0YWJhc2VJZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3RlZFZlcnNpb24ocmVxdWVzdC52
ZXJzaW9uKCkpCiAgICAgLCBtX3JlcXVlc3RUeXBlKHJlcXVlc3QucmVxdWVzdFR5cGUoKSkKQEAg
LTQ5LDggKzQ5LDggQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHIKIAogSURCUmVxdWVzdERhdGE6
OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlv
bikKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIob3BlcmF0aW9uLnRyYW5zYWN0
aW9uKCkuZGF0YWJhc2UoKS5jb25uZWN0aW9uUHJveHkoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCi0gICAgLCBtX3RyYW5z
YWN0aW9uSWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
b3BlcmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAsIG1fcmVxdWVzdElkZW50
aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVudGlm
aWVyKCkpKQorICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCiAgICAg
LCBtX29iamVjdFN0b3JlSWRlbnRpZmllcihvcGVyYXRpb24ub2JqZWN0U3RvcmVJZGVudGlmaWVy
KCkpCiAgICAgLCBtX2luZGV4SWRlbnRpZmllcihvcGVyYXRpb24uaW5kZXhJZGVudGlmaWVyKCkp
CiB7CkBAIC01OCw3ICs1OCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIG1faW5kZXhS
ZWNvcmRUeXBlID0gb3BlcmF0aW9uLmluZGV4UmVjb3JkVHlwZSgpOwogCiAgICAgaWYgKG9wZXJh
dGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklk
ZW50aWZpZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CiB9CiAK
IElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgb3Ro
ZXIpCkBAIC03MSwxMSArNzEsMTEgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNv
bnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKICAgICAsIG1fcmVxdWVzdFR5cGUob3RoZXIubV9y
ZXF1ZXN0VHlwZSkKIHsKICAgICBpZiAob3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAgICAg
ICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVxdWVzdElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fcmVx
dWVzdElkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikK
LSAgICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICAg
ICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRp
Zmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIubV9j
dXJzb3JJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmllcik7
CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogSURCUmVxdWVzdERhdGE6
OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiB0aGF0LCBJc29sYXRlZENvcHlU
YWcpCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCB2b2lkIElEQlJlcXVlc3REYXRhOjppc29sYXRlZENv
cHkoY29uc3QgSURCUmVxdWVzdERhdGEmIHNvdXJjZSwgSURCUmVxdWVzdERhdGEmCiAgICAgICAg
IGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJZGVudGlmaWVyID0gc291cmNlLm1fZGF0YWJhc2VJZGVu
dGlmaWVyLT5pc29sYXRlZENvcHkoKTsKIAogICAgIGlmIChzb3VyY2UubV9yZXF1ZXN0SWRlbnRp
ZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50aWZp
ZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7CiAg
ICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgZGVzdGluYXRp
b24ubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNl
SWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmIChz
b3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklk
ZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJj
ZS5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1cnNv
cklkZW50aWZpZXIpOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0RGF0YTo6c2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA0NWNmZmFlYTYwM2E1
M2I1OTkwNGM4YjE0YjdhMWRlZjdkMjVmMzEwLi40MDhiNGU0NjI4NzMzN2I5YWMzNDRhZmJmNDY5
MTU4NjhlODBmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wg
SURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVz
b3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3JlcXVlc3RJZGVudGlmaWVyID0gV1RGTW92ZShv
YmplY3QpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFz
T2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+
IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVz
dC5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE3NCw3ICsx
NzQsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlk
ZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9jdXJzb3JJZGVudGlmaWVy
ID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCmluZGV4IGE4OTQ1NGU2ZTYzZjZl
YjdjYjUwMzhiOWM5MzJmYTIxODYzM2VkYzYuLjRjYmQ1ZDliZGYwYTg1MjNiZjdmNTJhYzViYzVj
YjRiN2VkMTA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBJREJS
ZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIG90aGVyKQogICAg
ICwgbV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKIHsKICAgICBpZiAob3Ro
ZXIubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CisgICAgICAgIG1f
ZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFi
YXNlSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBtX3Ry
YW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3Ro
ZXIubV90cmFuc2FjdGlvbkluZm8pOworICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VV
bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOwogICAg
IGlmIChvdGhlci5tX3Jlc3VsdEtleSkKLSAgICAgICAgbV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtleSk7CisgICAgICAgIG1fcmVzdWx0
S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOwogICAgIGlm
IChvdGhlci5tX2dldFJlc3VsdCkKLSAgICAgICAgbV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKKyAgICAgICAgbV9nZXRSZXN1
bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKICAgICBp
ZiAob3RoZXIubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7CisgICAg
ICAgIG1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5t
X2dldEFsbFJlc3VsdCk7CiB9CiAKIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3Qg
SURCUmVzdWx0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtODcsMTUgKzg3LDE1IEBA
IHZvaWQgSURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlc3VsdERhdGEmIHNv
dXJjZSwgSURCUmVzdWx0RGF0YSYgZGVzCiAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRJbnRlZ2Vy
ID0gc291cmNlLm1fcmVzdWx0SW50ZWdlcjsKIAogICAgIGlmIChzb3VyY2UubV9kYXRhYmFzZUlu
Zm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5m
bzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUluZm8gPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURCRGF0
YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbklu
Zm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElEQlRy
YW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90cmFu
c2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJjZS5tX3Ry
YW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlm
IChzb3VyY2UubV9yZXN1bHRLZXkpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJLZXlE
YXRhOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9IG1h
a2VVbmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6SXNv
bGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fZ2V0UmVzdWx0KQotICAgICAgICBkZXN0aW5h
dGlvbi5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqc291cmNl
Lm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3Rp
bmF0aW9uLm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2UubV9n
ZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1f
Z2V0QWxsUmVzdWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJREJH
ZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0QWxs
UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxSZXN1
bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogSURCUmVzdWx0RGF0YSBJ
REJSZXN1bHREYXRhOjplcnJvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCkBAIC0xMTEsNyArMTExLDcgQEAgSURC
UmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmUKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVlc3RJ
ZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5EYXRh
YmFzZVN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCktPmlu
Zm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6
Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAg
IElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1bHQu
bV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZDsKICAgICBy
ZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uZGF0YWJh
c2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNv
bm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOwotICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9u
SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlvbi5p
bmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZv
KCkpOworICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJhbnNh
Y3Rpb25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkRhdGFi
YXNlSW5mbyYgaW5mbykKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7SURCUmVzdWx0VHlw
ZTo6RGVsZXRlRGF0YWJhc2VTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3Vs
dC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZv
KTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTcxLDIxICsxNzEsMjEgQEAg
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpyZW5hbWVJbmRleFN1Y2Nlc3MoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXEKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cHV0
T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsKICAgICBJREJSZXN1bHREYXRhIHJl
c3VsdCB7IElEQlJlc3VsdFR5cGU6OlB1dE9yQWRkU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIg
fTsKLSAgICByZXN1bHQubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+
KHJlc3VsdEtleSk7CisgICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlE
YXRhPihyZXN1bHRLZXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEg
SURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsK
ICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1Y2Nl
c3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0UmVz
dWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRzU3Vj
Y2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBJREJHZXRBbGxSZXN1bHQmIGdldEFsbFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJl
c3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzLCByZXF1ZXN0SWRlbnRp
ZmllciB9OwotICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
R2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9
IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTIwNCwxNCArMjA0LDE0IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0
RGF0YTo6ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
CiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJlc3Vs
dCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlw
ZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1f
Z2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7Cisg
ICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3Vs
dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRh
OjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJS
ZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNzLCBy
ZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9
IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDcxN2IzZTJkZTUzYjM1M2ZlYjZkZDc1NTAwYTBlNWU2
OGM5NDdhM2YuLjYyMDYyYTFlMjk1ZjdiNTk4MTU4OTViNTdiZWMwMDhlNWIxODc2YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
c3VsdERhdGEuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJl
c3VsdC5tX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE5Myw3ICsxOTMsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1
bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7
Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbklu
Zm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbklu
Zm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8g
PSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29k
ZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKTsKKyAgICAgICAgYXV0byBvYmplY3Qg
PSBtYWtlVW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElEQktleURhdGE+
IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAoIW9w
dGlvbmFsKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5p
cXVlPElEQkdldFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0
KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2dl
dFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1
dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CisgICAgICAg
IGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCmluZGV4IDk4M2MxYzExYzk5YjQ1YjZjZTU0NGRmY2Fj
MDM3ZTRjNzM3Mjk1YzMuLjRmYjk5OTE5ZjY3ZDVmN2M5YWJjMTA5ZTJlMzAwMGNjZTRjNDQwOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJU
cmFuc2FjdGlvbkluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCkBAIC01NSw3ICs1NSw3IEBAIElEQlRyYW5z
YWN0aW9uSW5mbyBJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UoY29uc3QgSURCU2Vy
dmVyOjpJREJDb25uZWN0CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIHJlc3VsdCgoSURCUmVzb3Vy
Y2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pKSk7CiAgICAgcmVzdWx0Lm1fbW9kZSA9IElEQlRyYW5z
YWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZTsKICAgICByZXN1bHQubV9uZXdWZXJzaW9uID0gbmV3
VmVyc2lvbjsKLSAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CisgICAgcmVzdWx0
Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3Jp
Z2luYWxEYXRhYmFzZUluZm8pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3LDcgKzY3
LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICwgbV9vYmplY3RTdG9yZXMoaW5mby5tX29iamVjdFN0
b3JlcykKIHsKICAgICBpZiAoaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8pOwogfQogCiBJREJUcmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0aW9uSW5mbyhj
b25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTkxLDcg
KzkxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkluZm86Omlzb2xhdGVkQ29weShjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mIHNvdXJjZSwgSURCVHJhbnMKICAgICAgICAgZGVzdGluYXRpb24ubV9v
YmplY3RTdG9yZXMudW5jaGVja2VkQXBwZW5kKG9iamVjdFN0b3JlLmlzb2xhdGVkQ29weSgpKTsK
IAogICAgIGlmIChzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6
SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5m
byA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFz
ZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogI2lmICFMT0dfRElT
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJUcmFuc2FjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAppbmRleCA5MzBkODAyMzYxODIzMmFiZjZjMDgx
ZGYyMTI5NThmZjYyYTU1NWVkLi43Yjk0NzdlOGVjNTU0YzkxM2QyYTQ4YmU1NThlMTYzM2Q5M2Zj
ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCVHJhbnNhY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJ
REJUcmFuc2FjdGlvbkluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJUcmFuc2FjdGlv
bkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNPYmplY3Qp
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBXVEZNb3Zl
KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDg3YjFhZGNkOTY2NjIw
NmVjOTcxNjYwMzYyYjQwZTVhZDdkODAxZDEuLmM5Njg5NDQ0ZmQyMjQwMmNlZDIxMTNiM2JmYTBi
OWE1MjZjNjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblByb2Nl
c3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsK
ICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50
U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CiAgICAg
ICAgIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZp
Z2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5kZXggZjg3MjU3NGU4NWMyNDA4NzcyYjFkMTFh
MmU4YmNiNmRkNjBkYTI5Ny4uYTMxYmFkYjU0YWM5ODFlMGUzYmFkYWZlMjA5ODc4MjlkM2Y3NDAz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9O
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMmIE5hdmlnYXRvck1lZGlhQ2Fw
YWJpbGl0aWVzOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG8KIHsKICAgICBOYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlhQ2Fw
YWJpbGl0aWVzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcz4o
KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZN
b3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmlu
ZGV4IDUwZDBiYjBiMWVkNTNhNDMyNDU4ZDlmYjcxMzU3MGFlMGVjYTBkMDYuLmI5NzQzNGM0ZTYy
NDVkNzNjY2YyZDYyNWEwYTFiMDNlMTI5MGNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKIE1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlja2Vy
KCkKIHsKICAgICBpZiAoIW1fcGlja2VyT3ZlcnJpZGUpCi0gICAgICAgIG1fcGlja2VyT3ZlcnJp
ZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigqdGhp
cyk7CisgICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fcGlja2VyT3ZlcnJpZGUu
Z2V0KCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdWludDY0X3QgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWEKIAog
ICAgIExPRyhNZWRpYSwgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50KCVwICsgJWxsdSkiLCAmY2xpZW50LCBjb250ZXh0SWQpOwogCi0gICAgbV9j
bGllbnRTdGF0ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBj
b250ZXh0SWQpKTsKKyAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVudFN0
YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgc2NoZWR1bGVEZWxheWVk
VGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlv
blRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmNwcAppbmRleCBkNDE3YTEyMTY5MTExMjE1ZDU0MjI5MWUwM2M1OWQ1ZDZlN2ViM2Y0
Li43Y2JjNmExMzM1MWUwZDMyY2UyNTVhOWJhZGNiOTc0NGRhZjRkNDQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtMTc4
LDkgKzE3OCw5IEBAIE1lZGlhVGltZSBNZWRpYVNvdXJjZTo6Y3VycmVudFRpbWUoKSBjb25zdAog
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVk
KCkgY29uc3QKIHsKICAgICBpZiAobV9idWZmZXJlZCAmJiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMt
Pmxlbmd0aCgpICYmIHN0ZDo6YWxsX29mKG1fYWN0aXZlU291cmNlQnVmZmVycy0+YmVnaW4oKSwg
bV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5lbmQoKSwgW10oYXV0byYgYnVmZmVyKSB7IHJldHVybiAh
YnVmZmVyLT5pc0J1ZmZlcmVkRGlydHkoKTsgfSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAotICAgIG1fYnVm
ZmVyZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBtX2J1
ZmZlcmVkID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgZm9yIChhdXRv
JiBzb3VyY2VCdWZmZXIgOiAqbV9hY3RpdmVTb3VyY2VCdWZmZXJzKQogICAgICAgICBzb3VyY2VC
dWZmZXItPnNldEJ1ZmZlcmVkRGlydHkoZmFsc2UpOwogCkBAIC0xOTAsNyArMTkwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkg
Y29uc3QKIAogICAgIC8vIDEuIElmIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMubGVuZ3RoIGVxdWFscyAw
IHRoZW4gcmV0dXJuIGFuIGVtcHR5IFRpbWVSYW5nZXMgb2JqZWN0IGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KICAgICBpZiAoYWN0aXZlUmFuZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCiAg
ICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5lZCBieSBidWZm
ZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMu
CiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3QgcmFuZ2UgZW5k
IHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QK
IAogICAgIC8vIFJldHVybiBhbiBlbXB0eSByYW5nZSBpZiBhbGwgcmFuZ2VzIGFyZSBlbXB0eS4K
ICAgICBpZiAoIWhpZ2hlc3RFbmRUaW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyA0LiBMZXQg
aW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmluZyBh
IHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBtX2J1ZmZlcmVk
LT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBoaWdoZXN0RW5kVGltZSk7CkBAIC0yMjEsNyAr
MjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6
OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChzb3Vy
Y2VSYW5nZXMpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzZWVrVG9U
aW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kKQogCiAgICAgLy8gU2V0IGxpdmUgc2Vla2FibGUgcmFuZ2UgdG8gYmUgYSBuZXcg
bm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdlCiAg
ICAgLy8gd2hvc2Ugc3RhcnQgcG9zaXRpb24gaXMgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBpcyBl
bmQuCi0gICAgbV9saXZlU2Vla2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKGVuZCkpOworICAgIG1fbGl2ZVNlZWthYmxlID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlh
RGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhRGV2aWNlcy5jcHAKaW5kZXggZTQxODI3ODM4ZDYyY2EzOGZjM2JmM2JlNzhmOGY0YWE4
YWU1MjU5Ni4uN2IzNThmNWUwZGU0MmZiMjI2OGQzNjkwM2U1OGRiNWViNzhlOTBkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURl
dmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmNwcApAQCAtNTEsNyArNTEsNyBAQCBOYXZpZ2F0b3JNZWRpYURldmlj
ZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsK
ICAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZp
Z2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2Vz
PihuYXZpZ2F0b3ItPndpbmRvdygpKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ29udHJvbGxlci5jcHAKaW5kZXggOGQ3ZTYzY2M2MDZkNmRhMTlmYmRiMTJkZTU0
ZmI4NTVmZGY2MmM5OS4uMTRkZjExNjFkYWU2OGNjNDZjYjQ5ZWFhZTIxZjVlZjk4OWUyYWNhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFVzZXJNZWRpYUNvbnRyb2xs
ZXI6On5Vc2VyTWVkaWFDb250cm9sbGVyKCkKIAogdm9pZCBwcm92aWRlVXNlck1lZGlhVG8oUGFn
ZSogcGFnZSwgVXNlck1lZGlhQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgVXNlck1lZGlhQ29udHJv
bGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1l
KCksIHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7CisgICAg
VXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6
OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlY3VyZShEb2N1bWVudExvYWRlciYgZG9j
dW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBhYWE0MDAwMjA3MzY1ZmZjYmU1MjgxMjhlMjhjZTAyZjZjNjA3Y2Rk
Li5jOTg1YmMxOWEzMWQwMTE0NTY1YWJhYmE1ZjA2MGVlNTBkYTYxMTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cjo6Y2hhbm5lbEV2ZW50KFNjcmlwdEV4ZWN1dGkKICAgICBpbml0Lm5lZ290aWF0ZWQgPSBkYXRh
Q2hhbm5lbC0+bmVnb3RpYXRlZCgpOwogICAgIGluaXQuaWQgPSBkYXRhQ2hhbm5lbC0+aWQoKTsK
IAotICAgIGF1dG8gaGFuZGxlciA9ICBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOworICAgIGF1dG8gaGFuZGxlciA9ICBt
YWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5l
bCkpOwogICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoY29udGV4dCwg
V1RGTW92ZShoYW5kbGVyKSwgZnJvbVN0ZFN0cmluZyhsYWJlbCksIFdURk1vdmUoaW5pdCkpOwog
CiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWNoYW5uZWxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vLCBXVEZNb3ZlKGNoYW5uZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAKaW5kZXggZGVmMWY5MWVlZTllZDZlYzc4ZDEzYzY5ZWM0MzQ4ZjBhYTY4ZDM2
Ny4uZDFhNzRiODU3MWJlZTdlZTVlOWMzMTYyZWNhMmY0ZDZmZjQxZTQ1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2
b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+c2V0
QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RG
TW92ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+c2V0QmFja2VuZChtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsKICAg
ICBhdXRvJiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwogICAgIGFkZFBlbmRpbmdUcmFja0V2
ZW50KHJlY2VpdmVyLnJlbGVhc2VOb25OdWxsKCksIHRyYWNrLCBydGNTdHJlYW1zLCBudWxscHRy
KTsKIH0KQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNv
bGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2Nl
aXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RG
TW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSks
IHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiB9CiAKQEAgLTQ5OSw3ICs0OTksNyBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zYwogICAgIGlmICghc291cmNlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
Lm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpKTsKIAogICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KG1ha2VSZWYobmV3VHJhbnNjZWl2ZXIu
cmVjZWl2ZXIoKSksIG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkudHJhY2soKSwgcnRjUmVjZWl2
ZXItPnN0cmVhbXMoKSwgbWFrZVJlZihuZXdUcmFuc2NlaXZlcikpOwogfQpAQCAtNTM0LDcgKzUz
NCw3IEBAIE9wdGlvbmFsPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzPiBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpjcmVhdGVUcmFuc2NlCiAgICAgaWYgKCFyZXN1bHQub2soKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1vdmVW
YWx1ZSgpKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CiAgICAgcmV0dXJuIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzIHsgdHJhbnNjZWl2ZXItPmNyZWF0ZVNlbmRlckJh
Y2tlbmQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQsIFdURk1vdmUoc291cmNlKSksIHRyYW5zY2Vp
dmVyLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikgfTsKIH0K
IApAQCAtNTg1LDcgKzU4NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnRyYW5zY2VpCiB7CiAgICAgZm9y
IChhdXRvJiB0cmFuc2NlaXZlciA6IG1fYmFja2VuZC0+R2V0VHJhbnNjZWl2ZXJzKCkpIHsKICAg
ICAgICAgaWYgKHRyYW5zY2VpdmVyLT5zZW5kZXIoKS5nZXQoKSA9PSBiYWNrZW5kLnJ0Y1NlbmRl
cigpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2NlaXZl
ckludGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CiAgICAgfQogICAgIHJl
dHVybiBudWxscHRyOwogfQpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFu
bmVsCiB7CiAgICAgYXV0byBpbml0ID0gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpmcm9t
UlRDRGF0YUNoYW5uZWxJbml0KG9wdGlvbnMpOwogICAgIGF1dG8gY2hhbm5lbCA9IG1fYmFja2Vu
ZC0+Q3JlYXRlRGF0YUNoYW5uZWwobGFiZWwudXRmOCgpLmRhdGEoKSwgJmluaXQpOwotICAgIHJl
dHVybiBjaGFubmVsID8gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gY2hhbm5lbCA/IG1h
a2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6
IG51bGxwdHI7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hhbm5l
bChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0YUNo
YW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcAppbmRleCAyMDdmMTVlNjQ1N2I5ZGZjYWMxYzMzOWVhMzlmZWExZDc3ODU5ZDhi
Li5mYzkxY2NkMGJiZDFmZGJiYTc2NDJlNzA0ZjM3ZmU4NWNjNzJmZDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+
IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2UKIAogICAgIHBhZ2UtPmxpYldlYlJU
Q1Byb3ZpZGVyKCkuc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihwYWdlLT5zZXR0aW5ncygpLndl
YlJUQ0VuY3J5cHRpb25FbmFibGVkKCkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGli
V2ViUlRDUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIo
KSk7CiB9CiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKQEAgLTMx
MSw3ICszMTEsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlZpZGVvUmVjZWl2
ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aQogICAgIGF1dG8gc291cmNlID0g
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFj
a0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJj
ZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywgeyB9
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsK
ICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJD
b25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTMzNCw3
ICszMzQsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2ZXIg
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdQogICAgIGF1dG8gc291cmNlID0gUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lk
KSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJjZS5j
b3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
YXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
PigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2Vp
dmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJhdWRpbyJfcywgeyB9LCBX
VEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsKICAg
ICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTQwMCw3ICs0
MDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRFeGlzdGluZ1Nl
bmRlcihjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNl
bmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHJl
YW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmll
ZFBsYW5FbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
ICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNr
KCpzZW5kZXJCYWNrZW5kLCB0cmFjaywgbWVkaWFTdHJlYW1JZHMpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKIApA
QCAtNDM4LDcgKzQzOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyCiAgICAgICAgIGNvbnN0
IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgpOwogICAgICAgICBTdHJpbmcgdHJhY2tJ
ZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIHNlbmRlckJh
Y2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlz
LCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGF1dG8gbmV3
U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIG1ha2VSZWYodHJhY2spLCBWZWN0
b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwog
ICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXIodHJhY2tLaW5kLCB0cmFja0lk
KTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUo
V1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSwgbnVsbHB0cik7CkBAIC00NzIs
NyArNDcyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoU3RyaW5nIHsgdHJhY2tL
aW5kIH0sIGluaXQpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBz
ZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhp
cywgbnVsbHB0cik7CiAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgq
dGhpcywgU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVy
QmFja2VuZCkpOwogICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3
U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOwog
fQpAQCAtNDgyLDcgKzQ4Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5F
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFdURk1v
dmUodHJhY2spLCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1
dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4o
KnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8mIGJhY2tlbmQgPSAqc2VuZGVyQmFja2VuZDsKICAg
ICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCB0cmFjay5jb3B5UmVm
KCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIGlmICgh
bV9lbmRwb2ludC0+YWRkVHJhY2soYmFja2VuZCwgdHJhY2ssIFZlY3RvcjxTdHJpbmc+IHsgfSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmluZGV4
IDY4NTBlNmE4NWU5MDI0YmIxMTQ1YjZiOTQyMjljMGY2MTQyZGY3YWEuLjZhZWVhMTMzODkyZDIw
NjNmMDM1MzliOGVlYzRkYjliY2U2NGQ3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0
ZXJzJiBwYXJhbWUKIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2VuZGVy
LT5HZXREdG1mU2VuZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ0RUTUZT
ZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZC5jcHAKaW5kZXggZWI4NzFlYjdkYjAzODg0ZjRjYzdlMGFkZWY2ODc4
MmUxYzA5NzJkNy4uNWMwZDdlOTVlMmZkMTJlM2Y4NGYxN2NmYmViNmQ4NjdhNTFmMmU0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQu
Y3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2NlaXZl
ckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5y
ZWNlaXZlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJh
Y2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNr
ZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYg
YmFja2VuZCwgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6U291cmNlJiYgc291cmNlKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJh
Y2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQsIG1f
cnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiBSVENSdHBU
cmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRpcmVj
dGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDBjMzI4ZmFlNDQyMzU5OTI1MzMwNzJjODVkNmIz
MmZkYzZjMTM4MzguLjBlYmFmZjg5ZmZiYzUwMDNlMjQ2MWJhZGVlNTIwMzkxMTcxY2JkM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9uCiAgICAg
LCBtX2JvZHkob3B0aW9ucy5ib2R5KQogICAgICwgbV90YWcob3B0aW9ucy50YWcpCiAgICAgLCBt
X3N0YXRlKElkbGUpCi0gICAgLCBtX3Rhc2tUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihb
dGhpc10gKCkgeyBzaG93KCk7IH0pKQorICAgICwgbV90YXNrVGltZXIobWFrZVVuaXF1ZTxUaW1l
cj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKIHsKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5pc0Vt
cHR5KCkpIHsKICAgICAgICAgYXV0byBpY29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwob3B0
aW9ucy5pY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBhNjIwMzUzOTNj
N2ZiM2Y2ZGRmMDFjNWM4OWQ3NGYzYjVlZGQyZDQ0Li5kNDhmMjA1YTllMjQxNGUwN2Q3MjJmOTAz
MjVhN2MzNjRkNDg5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIGNvbnN0IGNoYXIqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCkKIAogdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNhdGlv
bkNsaWVudCogY2xpZW50KQogewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVU
byhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1h
a2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpz
dXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVu
dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCmluZGV4IDAzZmU5ZTM4Njc4ZjQwNTA3MzI1
NTA5YzIwMzg2N2M5Y2Y4MjBmZjEuLmM5OGM5OTg2ZGVkNmNkMjA1NDI2MTcyMTVmNjUzNmNlNThm
Mjc5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVv
dGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIERPTVdpbmRvd1F1b3RhKiBET01XaW5kb3dRdW90YTo6
ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dRdW90YSogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1F1b3RhKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpm
cm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd1F1
b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERP
TVdpbmRvd1F1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVu
dC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDdiYTFkM2Q0YjM2
OTQ0MGM2NGUxN2RkMjBjYTk0NTM4YjhhZDliNzQuLjdhMDgwNDU5NTY5ODNhMzFmNmQ4MzRlZjdl
YTc3MmZhNjY3MzZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
TmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1
b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdhdG9y
U3RvcmFnZVF1b3RhKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oTmF2aWdhdG9yKiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8TmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9t
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvclN0
b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVu
aXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQg
PSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3Jh
Z2VRdW90YS5jcHAKaW5kZXggOTVjM2U0MzY0NzMxNjJhNTBkNjFiNWNlNzUxNjVlZTY4YjIxYjcy
Ny4uMWExYzg0N2RjNDk3ZGM2NDg0NWY1NmVjZTU5MjYzYTQyNmFmNjMwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3Rv
cmFnZVF1b3RhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEqIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3IqCiB7
CiAgICAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nh
c3Q8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0
b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxl
bWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01X
aW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCAzNzk1NjUyNmZiZjI4NjkwZWNmMDM5
OTUyYzUyZjZlMDQ0NmJjYjRjLi45NjljMjM3ZjdjODE1NTE1M2RlMDcxZWM5NmE2MWE0YTQ2MmQz
ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dT
cGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgRE9NV2luZG93U3Bl
ZWNoU3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20oRE9NV2luZG93KiB3
aW5kb3cpCiB7CiAgICAgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzKj4oU3VwcGxlbWVudDxET01XaW5kb3c+
Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
bWFrZVVuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAppbmRl
eCA3MmI1NjNlNGJiZjdkY2UwM2ZhMzA4ODBkMmZhNzcwYjg5ODY5M2E0Li5lN2I2MmExYTE3YmQ5
NmE5ZjVhMTNmZDA5ZTc0OWFiNGJjZTE5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBT
cGVlY2hTeW50aGVzaXM6OnZvaWNlc0RpZENoYW5nZSgpCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyJiBTcGVlY2hTeW50aGVzaXM6OmVuc3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKQog
ewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQotICAgICAgICBtX3BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI+KHRoaXMpOworICAgICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpOwogICAgIHJldHVybiAq
bV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDYyZjY4ZWM2
NjNhODAyMTJjNmYzYWY3Yjg1ZTIzYzZiNGY3NDJhMGEuLjJmNTQyNzJhYzVjMDFkMGEyMzBlNWMw
ZGYwNDUyNGFmYjJhNGUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQXN5
bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEs
IGZsb2F0IHNhbXBsZVJhCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1
dG8gZGVjb2RpbmdUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1vdmUo
YXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spKTsKKyAgICBhdXRvIGRlY29kaW5nVGFzayA9IG1ha2VVbmlxdWU8RGVj
b2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3VjY2Vz
c0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CiAgICAgbV9xdWV1ZS5hcHBlbmQo
V1RGTW92ZShkZWNvZGluZ1Rhc2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUgdGFz
ayBpcyBlZmZlY3RpdmVseSB0YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAppbmRleCBiYzAw
ZWI5Zjg3ZDFiY2Q1OGNiZjc0OWI3ZGE3YzQ5M2NmN2U4ODc2Li5jZjkyNjljMzA0NGM0MzIyZDc0
NGQwNjI5ZGRhMGZhODk0OTNlY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw4IEBAIGNsYXNzIEF1
ZGlvQnVmZmVyQ2FsbGJhY2s7CiAvLyBBc3luY0F1ZGlvRGVjb2RlciBhc3luY2hyb25vdXNseSBk
ZWNvZGVzIGF1ZGlvIGZpbGUgZGF0YSBmcm9tIGFuIEFycmF5QnVmZmVyIGluIGEgd29ya2VyIHRo
cmVhZC4KIC8vIFVwb24gc3VjY2Vzc2Z1bCBkZWNvZGluZywgYSBjb21wbGV0aW9uIGNhbGxiYWNr
IHdpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBkZWNvZGVkIFBDTSBkYXRhIGluIGFuIEF1ZGlvQnVm
ZmVyLgogCi1jbGFzcyBBc3luY0F1ZGlvRGVjb2RlciB7CitjbGFzcyBBc3luY0F1ZGlvRGVjb2Rl
ciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQXN5bmNBdWRpb0RlY29kZXIpOwogcHVibGljOgogICAgIEFzeW5jQXVkaW9EZWNv
ZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IGJhOGMyNTVhZTdkN2RhNzNiYzlmZjY1
NTQzZjFlMzdiYzk1NDA0YjMuLjBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZh
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIEF1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKLSAgICBhZGRJbnB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQpKTsK
KyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRk
T3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291
bnQpKTsKIH0KIAogLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpIGFzIGFuIG9wdGltaXphdGlv
biBhbGxvd2luZyB0aGlzIG5vZGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW4tcGxhY2UgcHJvY2Vz
c2luZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYmMxODljMDhjYmVmYzdjMTk2MDY0NjZj
MDc2OGI4ZmE2MzRiMTZhYi4uMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZlNzkwYWJmYmU2ZTk4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2lj
UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQyLDggKzQyLDggQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIEF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkK
IHsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAx
KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAg
Ly8gVGhlIHN1YmNsYXNzIG11c3QgY3JlYXRlIG1fcHJvY2Vzc29yLgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwCmluZGV4IDQwYWMzMmM1YzU1YzNkMzJkMGUxNGI2YTdkMjJiMjQ2NzM5MGY0YmYuLjI1MTBj
NDBhN2Y2MTIzZDRjN2ZjMmQ2NDBhOTBiNGYwYTk4ZTZmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAK
QEAgLTczLDcgKzczLDcgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGUKICAgICBtX3BsYXliYWNr
UmF0ZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicGxheWJhY2tSYXRlIiwgMS4wLCAt
TWF4UmF0ZSwgTWF4UmF0ZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIG1vbm8uICBBIGNhbGwgdG8g
c2V0QnVmZmVyKCkgd2lsbCBzZXQgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMgdG8gdGhh
dCBvZiB0aGUgYnVmZmVyLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91
dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5NTZjMTU4NjIx
ODljNzE0MjljYmNmZDYwMDQyZjAwYzk4YmFlZjYuLmQ0Y2RiNzY1OGMwZjM1YjVmYzlhMjJjZTg5
OGJjYjJiOTllZTRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVl
TG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2Vf
dW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFr
ZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAgIC8vIEFjY29yZGluZyB0
byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVyIHBhZ2UgbmF2aWdhdGUuCiAg
ICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0aXZp
dHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCkBAIC0xNjYsNyArMTY2LDcgQEAgQXVk
aW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QKICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRy
dWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0
aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1
ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRR
dWV1ZT4oKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC00MzIsNyArNDMy
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gQXVkaW9Db250ZXh0OjpjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmUKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWNvZGVB
dWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4m
JiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICghbV9hdWRpb0RlY29kZXIpCi0gICAgICAgIG1f
YXVkaW9EZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAg
ICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigpOwog
ICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBs
ZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2sp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA5NzU4ODc1NDc0N2UxNTI0ODE4OWY0OTcwYzZk
MzNlM2M2YWUxZTExLi5kOWFiYjk3NzdhOWQyNWVlYWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YQogICAgICwgbV9tdXRlZChmYWxzZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlc3Rp
bmF0aW9uKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0
aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwog
fQogCiBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3Bw
CmluZGV4IDE2MzczY2U5Mzc4ZDMyMmZkZDljMjUzZjljNzZkOTYzZTYxM2NkM2IuLjRhODI1NWU2
ZjBhZjA3NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzksNyArMzks
NyBAQCBCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZp
bHRlcik7CiAKICAgICAvLyBJbml0aWFsbHkgc2V0dXAgYXMgbG93cGFzcyBmaWx0ZXIuCi0gICAg
bV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgZmFsc2UpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxCaXF1
YWRQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKIH0KIAogQmlxdWFk
RmlsdGVyVHlwZSBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCAwZTRl
MzY4NWI4MmNlNDc3ZWM0ZTU4NTQ3ZjE2YWQ4YjcwZmM3OTA0Li5lODRiOTgwMzU2NzBmYjFkY2Mz
MjcwOTY2M2QyYjM5MDU1MmU2NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEJpcXVhZFBy
b2Nlc3Nvcjo6fkJpcXVhZFByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtl
cm5lbD4gQmlxdWFkUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmNo
ZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlxdWFk
UHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lSZXNwb25zZShpbnQgbkZyZXF1ZW5jaWVzLCBjb25zdCBm
bG9hdCogZnJlcXVlCiAgICAgLy8gdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgcHJvY2Vz
c2luZyBydW5uaW5nIGluIHRoZSBhdWRpbwogICAgIC8vIHRocmVhZCBvbiB0aGUgbWFpbiBrZXJu
ZWxzLgogICAgIAotICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJp
cXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgYXV0byByZXNwb25zZUtlcm5lbCA9IG1ha2VVbmlx
dWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIAogICAgIHJlc3BvbnNlS2VybmVsLT5nZXRGcmVx
dWVuY3lSZXNwb25zZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5jeUh6LCBtYWdSZXNwb25zZSwgcGhh
c2VSZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IDIwYjhkYTE5ZTVmNDM5Y2ZlNTQ1NWYwMWRj
MjkwODc0NDZiMjNjMDguLmRmNTBmMjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMyZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdl
ck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1l
cmdlck5vZGUuY3BwCkBAIC01OSw5ICs1OSw5IEBAIENoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVs
TWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuCiAK
ICAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5wdXRzLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQotICAgICAgICBhZGRJbnB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgICAgIGFkZElu
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAotICAgIGFkZE91dHB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGluaXRp
YWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDQ2MzU0OThjMDM0YzU5MzBiNGU4ZjIyMDg2
ZTE0YjJiNGJkMjkxMTcuLjgyZjY5YTA0Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkxYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
U3BsaXR0ZXJOb2RlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIENoYW5uZWxTcGxpdHRlck5vZGU6
OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwogCi0gICAg
YWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFk
ZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAogICAgIC8vIENyZWF0
ZSBhIGZpeGVkIG51bWJlciBvZiBvdXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11bSBu
dW1iZXIgb2YgY2hhbm5lbHMgZmVkIHRvIGFuIGlucHV0KS4KICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCi0gICAgICAgIGFkZE91dHB1dChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgICAgICBhZGRPdXRwdXQo
bWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0aWFs
aXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Nv
bnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2
ZXJOb2RlLmNwcAppbmRleCAyMzgyZGFiY2M5Yzk5MjdjYWMzMWQzMjc1ZjIyMDNjYzhmNThhMDkz
Li5lMzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTUyLDgg
KzUyLDggQEAgQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDb252b2x2
ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhp
cykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsK
KyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAog
ICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFubmVs
Q291bnQgPSAyOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZl
ck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgLy8gQ3JlYXRlIHRo
ZSByZXZlcmIgd2l0aCB0aGUgZ2l2ZW4gaW1wdWxzZSByZXNwb25zZS4KICAgICBib29sIHVzZUJh
Y2tncm91bmRUaHJlYWRzID0gIWNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCk7Ci0gICAgYXV0
byByZXZlcmIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRp
b05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91
bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CisgICAgYXV0byByZXZlcmIgPSBtYWtlVW5pcXVlPFJl
dmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMs
IE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CiAKICAg
ICB7CiAgICAgICAgIC8vIFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDQyNjVhMDA3NDllYWZm
ZjZhOWUxYjlkMWRkYTYwZDRkYjcwMjhiMDMuLjgxYmQ3ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdj
ZTI1NTc4MDJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5
Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heEQKICAgICA6
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0
Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUp
OworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPERlbGF5
Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggYTc1YmE2YjdjOTJlNzQ0NGM2
NTYwOGU4YWUxOGY5ZDUwMDAyNmEwNC4uMTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5ZTZk
MmFjYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGVsYXlQcm9jZXNzb3I6On5EZWxheVBy
b2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gRGVsYXlQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlE
U1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlbGF5RFNQS2VybmVsPih0
aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKaW5k
ZXggYWEwZTRhODAxMTllYmVkOWRkMzY5NmIzZmExMzA1ZGRmMzJiZDA1Mi4uMTQwOTZkOGYwYzU5
NmE1Mjk3MTY2NmVmODI2N2EwMjNmZGI0NGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00
Niw4ICs0Niw4IEBAIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wCiB7CiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMp
KTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAg
YWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZhdWx0TnVtYmVy
T2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgbV90aHJlc2hvbGQgPSBBdWRpb1BhcmFtOjpjcmVh
dGUoY29udGV4dCwgInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CiAgICAgbV9rbmVlID0gQXVk
aW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJrbmVlIiwgMzAsIDAsIDQwKTsKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7ICAgIAotICAgIG1fZHluYW1p
Y3NDb21wcmVzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBs
ZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIG1fZHluYW1pY3ND
b21wcmVzc29yID0gbWFrZVVuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUoKSwg
ZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogfQogCiB2b2lkIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vR2Fpbk5vZGUuY3BwCmluZGV4IDZjOTRhNTIzYzNiMmEwMjEyYjJhNTRhMWE5YzhmMDI2YmJk
MWRiNWYuLjI1N2RmMmVjZTIzMzhjYmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC00Niw4ICs0Niw4
IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAKICAgICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImdhaW4i
LCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlu
cHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAKaW5kZXggMzgxYWU3Mjc5NGZiMGU3ZmVhNjMzMWFiZDMzYjIwYzE1ODQ1ZmY5Yi4uOTEy
ZTZlYjIzMjE0NTY0M2Q2ZmRhZmJjMTFlOTY3NjRjM2QyZjVkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZSk7CiAKICAgICAv
LyBEZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdoYXQg
dGhlIG1lZGlhIGVsZW1lbnQgLnNyYyBpcyBzZXQgdG8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1ha2VV
bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9
CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRG
b3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAKICAgICAgICAgaWYg
KHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUg
c2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgpOwotICAgICAgICAg
ICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5l
bFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICAgICAg
bV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxl
cj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gQnlwYXNzIHJlc2FtcGxpbmcuCiAgICAgICAgICAgICBtX211bHRpQ2hhbm5l
bFJlc2FtcGxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDVi
MmE1MDBkZDI5NGQxMDU1OGJjN2EwOGNmNzcxNmU0MjZiNWMyYWMuLmU0M2Y1NDQ4YmMyNmI4NmFm
NjkzZDAwOTk5NWM2NzM0ZjY5NTVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lCiAgICAgYXVkaW9Tb3VyY2VQ
cm92aWRlci0+c2V0Q2xpZW50KHRoaXMpOwogICAgIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVv
LiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIGZvcm1hdCBvZiB0aGUgTWVkaWFT
dHJlYW0ncyBhdWRpbyB0cmFjay4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UKICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNh
bXBsZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3Ig
PSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZTsKLSAgICAgICAgbV9tdWx0aUNoYW5uZWxS
ZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVG
YWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxl
ciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVy
T2ZDaGFubmVscyk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0gbnVt
YmVyT2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggNWI1MDI5YmZiY2U3N2FkNWI2YzNjODgzMjYwZGI5ZGVm
ZGY2MTA0Yi4uYTk5Y2VhYWQ2YjVjMjFlMDlkZDIyNTNjMmFjZjMwNDU1NDc1M2U3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXRUeXBlKG1fdHlwZSk7CiAK
ICAgICAvLyBBbiBvc2NpbGxhdG9yIGlzIGFsd2F5cyBtb25vLgotICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAK
aW5kZXggZjY0NzQ2OWUyMzU1ZWIzYTBjMDliM2IwODUyYmZiZWM2ZTQ4ZDI4ZC4uNTFjNjk5MTZm
ZmRlNzBmNWU2ODBhYTkyN2NlZmVmN2NhNzMyYzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFBhbm5lck5v
ZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3Qg
YmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFi
YXNlLgogICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVh
dGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7
CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAy
KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAg
Ly8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3Vu
dCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Blcmlv
ZGljV2F2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5jcHAKaW5kZXggYmIyYTA3ZDIzNTRlYmFmOTRkMDA0NjVhNGI0MWQ4NjA1NTU5OTg2Yi4uZWM5
YTE3YzRmNTZlYjk5NjZkYzE3NjI3ZTkzNDA1YmExZmQ0OGM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgUGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyhjb25zdCBmbG9h
dCogcmVhbERhdGEsIGNvbnN0IGZsb2F0KiBpCiAgICAgICAgIHJlYWxQWzBdID0gMDsKIAogICAg
ICAgICAvLyBDcmVhdGUgdGhlIGJhbmQtbGltaXRlZCB0YWJsZS4KLSAgICAgICAgbV9iYW5kTGlt
aXRlZFRhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVy
aW9kaWNXYXZlU2l6ZSkpOworICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChtYWtl
VW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CiAKICAgICAgICAg
Ly8gQXBwbHkgYW4gaW52ZXJzZSBGRlQgdG8gZ2VuZXJhdGUgdGhlIHRpbWUtZG9tYWluIHRhYmxl
IGRhdGEuCiAgICAgICAgIGZsb2F0KiBkYXRhID0gbV9iYW5kTGltaXRlZFRhYmxlc1tyYW5nZUlu
ZGV4XS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggM2I2MjgxZDFlODQzZWQyOTljZjYxNTNjNzMyNzk3
MDc0MTgwNjc3OC4uODAyMzczNDA3Zjc1ZDQ3ZTI1OWViNjA1NjM4MGY2MzVmMTNhY2VmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlz
ZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5hbHlz
ZXIoKQogICAgICwgbV9taW5EZWNpYmVscyhEZWZhdWx0TWluRGVjaWJlbHMpCiAgICAgLCBtX21h
eERlY2liZWxzKERlZmF1bHRNYXhEZWNpYmVscykKIHsKLSAgICBtX2FuYWx5c2lzRnJhbWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CisgICAgbV9hbmFseXNp
c0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOwogfQogCiBSZWFs
dGltZUFuYWx5c2VyOjp+UmVhbHRpbWVBbmFseXNlcigpID0gZGVmYXVsdDsKQEAgLTgzLDcgKzgz
LDcgQEAgYm9vbCBSZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mZnRTaXplICE9IHNpemUpIHsKLSAgICAg
ICAgbV9hbmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7Cisg
ICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KHNpemUpOwogICAg
ICAgICAvLyBtX21hZ25pdHVkZUJ1ZmZlciBoYXMgc2l6ZSA9IGZmdFNpemUgLyAyIGJlY2F1c2Ug
aXQgY29udGFpbnMgZmxvYXRzIHJlZHVjZWQgZnJvbSBjb21wbGV4IHZhbHVlcyBpbiBtX2FuYWx5
c2lzRnJhbWUuCiAgICAgICAgIG1fbWFnbml0dWRlQnVmZmVyLmFsbG9jYXRlKHNpemUgLyAyKTsK
ICAgICAgICAgbV9mZnRTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGQ1OWRlY2Y5OTUx
NmY2ZDAxYWY5YzFkOWZkYmYxZDBiMTAxOWU0MGYuLmQ1YjNhZmJmMjcxMDE0NTE0OTRiMTg5Mzc3
NjhiNjA1ZjZhM2I0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNjgsOCArNjgsOCBAQCBTY3JpcHRQ
cm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZQogICAgIEFTU0VSVChudW1iZXJPZklucHV0Q2hhbm5lbHMgPD0gQXVk
aW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwogCiAgICAgc2V0Tm9kZVR5cGUoTm9k
ZVR5cGVKYXZhU2NyaXB0KTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAg
aW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNDEwZDFkYWY1Yzg5NTQwMDlmZjA2
MzZhODI5MDBiZjk0YWY0ZjhmMS4uZjNkMjEyMmRmNTFjNGYxYTI5MjI0ZTY5M2FiNDk1YmJjMmI5
MzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJEU1BLZXJuZWwuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBXYXZlU2hhcGVy
RFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAogICAgIGlmICghbV90ZW1wQnVmZmVyKSB7Ci0gICAgICAgIG1fdGVtcEJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVt
ICogMik7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwotICAgICAgICBtX3VwU2FtcGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKLSAgICAgICAgbV9k
b3duU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50
dW0gKiAyKTsKLSAgICAgICAgbV91cFNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNhbXBs
ZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBzdGQ6
Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CisgICAgICAg
IG1fdGVtcEJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFu
dHVtICogMik7CisgICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAgICBtX3VwU2FtcGxlciA9IG1ha2VV
bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKKyAgICAgICAgbV9kb3duU2FtcGxl
ciA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAg
ICAgbV91cFNhbXBsZXIyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0g
KiAyKTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihS
ZW5kZXJpbmdRdWFudHVtICogNCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDg0ODY5OTNmMjEwODRj
Y2M2MWNjZDgwYjJjMTg3ZTA4YzE1NWZkMDEuLjZlN2U4ZGQxYzljMTlmYTNjODVlM2Q5ZDg1NWFi
OWY0NTc4NWI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFdhdmVTaGFwZXJOb2RlOjpXYXZl
U2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsKICAgICBzZXROb2RlVHlw
ZShOb2RlVHlwZVdhdmVTaGFwZXIpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1
ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CisgICAgbV9w
cm9jZXNzb3IgPSBtYWtlVW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2FtcGxl
UmF0ZSgpLCAxKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4IDI4
OWMzOWY1ZjNmOWY3YTc5ZTlhNWI2YTZkODMxNWI1OTFmNDMyZGEuLmJmZTVlMGU0N2ZiODRhMjhj
NjNjNmUyOGIzMmUwZmMxMWU1YzY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtNDYsNyArNDYsNyBA
QCBXYXZlU2hhcGVyUHJvY2Vzc29yOjp+V2F2ZVNoYXBlclByb2Nlc3NvcigpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVs
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlzKTsK
IH0KIAogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1
cnZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggYjFjNDlkYjUyM2I5MzZiMGE0ZWMyMjEwNDFi
NzdkYTdjYzE0NzhmZC4uMjBkNjA2OTcyNDI4OTczNzc5ODJiODRlZTczZDRkYTYzNGVkOGZjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiB1c2luZyBDcmVkZW50aWFsUHJvbWlzZSA9IERPTVBy
b21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8QmFzaWNDcmVkZW50aWFsPj4+
OwogCiBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvSGlkTWVzc2FnZS5jcHAKaW5kZXggOGMzZDEzNDZjNDAzMGNmYjNkODI3NzM3YTBhMTVm
M2YxY2I5YmFkNy4uMWI5MTJkOThkOWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQyZmFmMzU3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNz
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hp
ZE1lc3NhZ2UuY3BwCkBAIC0xNTAsOSArMTUwLDkgQEAgRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRN
ZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwgY28K
ICAgICB1aW50OF90IHNlcXVlbmNlID0gMDsKIAogICAgIHNpemVfdCBwb3MgPSBkYXRhLnNpemUo
KSA+IGtIaWRJbml0UGFja2V0RGF0YVNpemUgPyBrSGlkSW5pdFBhY2tldERhdGFTaXplIDogZGF0
YS5zaXplKCk7Ci0gICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJ
bml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBkYXRh
LnNpemUoKSkpOworICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBh
Y2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5zaXpl
KCkpKTsKICAgICBmb3IgKDsgcG9zIDwgZGF0YS5zaXplKCk7IHBvcyArPSBrSGlkQ29udGludWF0
aW9uUGFja2V0RGF0YVNpemUpCi0gICAgICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdl
dENvbnRpbnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOworICAgICAgICBtX3BhY2tldHMu
YXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBz
ZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKIH0KIAog
Rmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5p
dFBhY2tldD4gaW5pdFBhY2tldCwgc2l6ZV90IHJlbWFpbmluZ1NpemUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKaW5k
ZXggNTViN2IyZDcxNTM2YTIzNTQ5MTNhZTM2ZTlmYjkxZWYwMGE4ZjA4My4uMjZiODBhYThhNWYx
Mzk2M2M3NjhlN2U5MjNiYmFhYjJiODdiNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNzAsNyArNzAs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFja2V0
OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoYwogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1aW50
OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBkYXRh
U2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4o
Y2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RG
TW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCiAvLyBVMkYgSW5pdGlhbGl6YXRpb24gcGFj
a2V0IGlzIGRlZmluZWQgYXM6CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZp
ZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0
ZUZyb20KICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFwcGVu
ZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1
ZW5jZSwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRp
bnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9CiAK
IC8vIFUyRiBDb250aW51YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDAyMTQ1ZDBjYzJl
OGM5ZWFkYjBjODgyOTQxYjg1OWZjMGFlODA1MmQuLjViNjRhMDg3NDZhZjgwODBjZDJlNzI1MDNm
YTAwZDNjOTQ5ZmIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0
YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Up
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gcmVzdWx0OwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5j
aHJvbml6ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9w
ZW5UYXNrPigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVz
dWx0KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwog
ICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApAQCAtMjczLDcgKzI3
Myw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFz
ZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOworICAgIHRocmVhZC5zY2hlZHVsZUlt
bWVkaWF0ZVRhc2sobWFrZVVuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9u
aXplcikpOwogCiAgICAgLy8gRklYTUU6IGlPUyBkZXBlbmRzIG9uIHRoaXMgZnVuY3Rpb24gYmxv
Y2tpbmcgdW50aWwgdGhlIGRhdGFiYXNlIGlzIGNsb3NlZCBhcyBwYXJ0CiAgICAgLy8gb2YgY2xv
c2luZyBhbGwgb3BlbiBkYXRhYmFzZXMgZnJvbSBhIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGlyYXRp
b24gaGFuZGxlci4KQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRy
YW5zYWN0aW9uKCkKICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7CiAKICAgICBh
dXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwotICAgIGF1
dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1v
dmUodHJhbnNhY3Rpb24pKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVHJh
bnNhY3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0cmFuc2FjdGlvbiAl
cFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAgICAgZGF0YWJhc2VUaHJl
YWQoKS5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC01NDEsNyArNTQxLDcgQEAg
dm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewogICAgIGF1dG8mIHRocmVhZCA9IGRhdGFiYXNlVGhyZWFkKCk7CiAKLSAg
ICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPigm
dHJhbnNhY3Rpb24pOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2Fj
dGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5n
IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwg
dGFzay5nZXQoKSk7CiAgICAgdGhyZWFkLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsKIH0K
QEAgLTc2Myw3ICs3NjMsNyBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygp
CiAgICAgaWYgKHRocmVhZC50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKKyAg
ICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBz
eW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhX
VEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAKaW5kZXggM2JhYmQ0OTU2NmYxNGExYjNjMGQzYjE3YmY0YzdmMzJjNWUzZDVm
Ny4uZDY0OTdjMzk3ZmE0NzQyODU5ZTA1ODYyMjM2ZWRlZTQzZDRlZjM5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VUaHJlYWQ6
OkRhdGFiYXNlVGhyZWFkKCkKLSAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihzdGQ6Om1h
a2VfdW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCisgICAgOiBtX3RyYW5zYWN0
aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQog
ewogICAgIG1fc2VsZlJlZiA9IHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDhkZGNjNTk4NTUx
NTc2ZDJhMmMxMGY0MmU0YWQxMmE4MjU5YjUxOS4uYzI4YTk2ZjQ1ODM5ZWY1NGRhZjFmOTlhMWFk
NThkN2VjZDRhNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIExv
Y2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKIAog
ICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCi0gICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKKyAgICAgICAgbV9vcGVuRGF0
YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0byBv
cmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCkBAIC05NTYsNyArOTU2LDcgQEAg
dm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6ZW5z
dXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdpbiBl
dmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nQ3JlYXRlZC5nZXQob3JpZ2lu
KTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25lZFNl
dCA9IG1ha2VVbmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFtZVNl
dCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nQ3JlYXRlZC5hZGQob3JpZ2luLmlz
b2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAgfQpAQCAtMTAwMiw3ICsxMDAy
LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1h
cDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9y
aWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5nZXQo
b3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVkU2V0
ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVTZXQgPSBvd25l
ZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi5pc29sYXRlZENv
cHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCmluZGV4IDg1ZjFiNjM1YzNlNDliM2Zl
MWE4MWY5NDg3ODI0ODBlMWRlNDhmYjUuLjhhNTRhMzY2N2EwN2FhY2UwM2E5NjBmYjI1NjRmN2Vi
ZGYzYmQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxTdGF0ZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQ7CiBjbGFz
cyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ7CiAKIGNsYXNzIFNRTFN0YXRlbWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1FMU3RhdGVtZW50KERhdGFiYXNl
JiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNRTFZhbHVlPiYmLCBSZWZQdHI8U1FMU3RhdGVtZW50
Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmLCBpbnQgcGVy
bWlzc2lvbnMpOwogICAgIH5TUUxTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjBkNjk3MzQ3
NzRkYmZiZjMwYmQ4ZjM5Y2U0YzU5NTcyMTRlOTAwYy4uNGNiMDQxZTQ1MmM4MGY1ZjU5YmIyNzIx
ZWFiOGVjMWE4ZjYxODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0
ZW1lbnQsIE9wdGlvbmEKICAgICBlbHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJtaXNz
aW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8gc3Rh
dGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0
YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAgIGF1
dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0
YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOwogCiAgICAg
aWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50LT5zZXREYXRhYmFz
ZURlbGV0ZWRFcnJvcigpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246
Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAgICAgfQogCiAgICAgQVNTRVJUKCFtX3Nx
bGl0ZVRyYW5zYWN0aW9uKTsKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9y
ZWFkT25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRlVHJh
bnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOwogCiAg
ICAgbV9kYXRhYmFzZS0+cmVzZXREZWxldGVzKCk7CiAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZUF1
dGhvcml6ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVy
L05hdmlnYXRvcldlYkRyaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZl
ci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCmluZGV4IDc5YWE1NjE4MWZmZWYzYWIxYTkyYWE1N2Zl
Y2RiNmZiYTU5ZTZmMGIuLjEyOWQ4NmZmY2ZiZDE1N2E4MGIwMTkyZTNiNDk5NzEzM2JlYjc4MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldl
YkRyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdh
dG9yV2ViRHJpdmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBOYXZpZ2F0b3JXZWJEcml2ZXIqIE5h
dmlnYXRvcldlYkRyaXZlcjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZp
Z2F0b3JXZWJEcml2ZXIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJEcml2
ZXIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFt
ZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOworICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhu
YXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQ
VS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCmlu
ZGV4IDg4YTk3ODA0NGJjMWU3MDg5MzM1NjVkYzYyZDBhMzE0NmIzOGI0MjYuLjM3NmQxNTVjYTli
MmY1ZDJhNGFiMTg1MmM3NzZkOWMxOGYyZTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBOYXZpZ2F0b3JH
UFUqIE5hdmlnYXRvckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZp
Z2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHUFUqPihTdXBwbGVt
ZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgKaW5kZXggMWIzNDI1MDRkNjk1NTA4ZjA4MTZjY2I1NTgyZjViZDlh
YTc2MWE2Yi4uNWY1N2VmMTE3NzUzMWEwYWMzZDk2MGRlYjFkNDM4NzExYTRmMDViZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xh
c3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAKICAg
ICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKICAgICB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVl
PEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51bWVyYXRpb25N
ZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50
cnk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaApp
bmRleCAwZTMxZmZiZGUwYjE0ODZmNmM2ZjY1ZTIwZWI2MzhhZTg4MWI4N2Y4Li5jYmNjNDg0YjY4
MjUwYzBhYTA5YjU5OTQzYWRjNzllODEwMDkyNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50
cnlQb2ludFNjYWZmb2xkaW5nLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIE1ldGFsIHsK
IGNsYXNzIFR5cGVOYW1lcjsKIAogY2xhc3MgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbnRyeVBvaW50
U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5j
cHAKaW5kZXggODI1NDhiOGM2ZWEwYmU1YmJhODJkODk3Nzc2ZDc0NjMyMTBkOThlNi4uNTE5Yzc4
MmJlMmZjNmFmMmFjYWQxZGJiODhmOWFiMWE1ODQ3NjZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5j
dGlvbldyaXRlci5jcHAKQEAgLTc1Nyw5ICs3NTcsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQ
b2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVu
dAogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAg
fTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3MudmVy
dGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZXJ0ZXhFbnRyeVBv
aW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVO
YW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9t
YXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92
ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZl
cnRleEF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRyeVBv
aW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVO
YW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9t
YXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92
ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZl
cnRleEF0dHJpYnV0ZXMpOwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hl
ZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9p
bnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVy
RW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJj
ZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRj
aGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlv
biwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50
U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJS
ZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwg
bV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApAQCAtNzgzLDcgKzc4Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBv
aW50U2NhZmZvbGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVu
CiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICB9
OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5zaGFk
ZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwg
bV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnJl
c291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4o
ZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRT
ZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAs
IG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggMTg1YmEwYjA4OGE1
Y2VkNGM1YjY2MzZmYTk0NDJjMDAzNDBkZDAyYS4uNDBiNjJjMzdkYmUyNTgwZTIzZDU5MGMwOTFl
YmI0MTdjYTliODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjcyLDE5ICsyNzIs
MTkgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3JlYXRl
TmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICBzd2l0Y2ggKHVubmFtZWRUeXBlLmtp
bmQoKSkgewogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5jZTog
ewogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJl
bmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVy
ZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVm
ZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVmZXJl
bmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZl
cmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6
OktpbmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxB
U1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUo
KSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHBv
aW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRU
eXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5j
ZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9k
ZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRk
cmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVJlZmVyZW5jZVR5
cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5j
ZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6
OktpbmQ6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6
QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5
VHlwZS5udW1FbGVtZW50cygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlUeXBl
TmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVs
ZW1lbnRzKCkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggOTAxYzYxMDIwM2VlZmY0NjkwNWE4ZDZhZjM0NDgw
Yjk0NDUwNWMwMi4uM2RlYzA2MzAzY2E3OTU2NDljZjg3YTRmNTMwMDc2ZDc3YjhkODkwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
ZXIuY3BwCkBAIC05NzAsMTQgKzk3MCwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKIAogdm9pZCBDaGVja2VyOjph
c3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNUOjpV
bm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRp
b24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1h
cC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92
ZSh1bm5hbWVkVHlwZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4
cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkp
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
ICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikp
OwogfQogCiB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNz
aW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVl
KCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBz
dGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9u
LCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRp
b24pKTsKIH0KQEAgLTk4NSwxMCArOTg1LDEwIEBAIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlwZShB
U1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyCiB2
b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVz
b2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3Rh
dGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewogICAgIHJlc29sdmluZ1R5cGUudmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmlu
Z1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBl
TWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1
bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgm
ZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CiAgICAgfSkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBl
QW5ub3RhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IDAxNjExNGE2MTBlMTEwMGVmZTY5NzJjYTJhMjM1MzI3
YzE1MmU3YWIuLjVlNDlmMDNhM2IzODI2ZDFmZTdjYjNhNTU4Nzk2NzY2NTc2OWZiY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5j
cHAKQEAgLTc0MCwxOSArNzQwLDE5IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGljKCkgLT4g
RXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KICAgICBzd2l0
Y2ggKHRva2VuLT50eXBlKSB7CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7CiAg
ICAgICAgIFBBUlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJu
IHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9Owor
ICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3Vs
dCkpIH07CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlNwZWNpYWxpemVkOiAgewogICAg
ICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAg
ICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVz
dWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZN
b3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpSZWdpc3Rlcjog
IHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFudGljKTsKLSAgICAgICAgcmV0
dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9
OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJl
c3VsdCkpIH07CiAgICAgfQogICAgIGRlZmF1bHQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwg
QnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6
OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5p
cXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVz
b2x2aW5nVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xS
ZXNvbHZpbmdUeXBlLmgKaW5kZXggNTU5Y2U4YmE5M2IyOWQ1MTdmYTc3M2Y2YTVmNTI3ZGRmNGE4
NWIwMS4uNDU3MDBjZWQ4ZmQzNDQ5YzRkYTQ5NTlmNzFhNDAyYWEwMmQ2ZTQzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZp
bmdUeXBlLmgKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewogLy8gSXQgZXhp
c3RzIHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBkb2Vz
IHRoZSByaWdodCB0aGluZy4KIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5Lgog
Y2xhc3MgUmVzb2x2aW5nVHlwZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgUmVzb2x2aW5nVHlwZSgpCiAgICAgICAgIDogbV9pbm5lcihSZWZQdHI8UmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2U+KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAppbmRleCBiZjkwZjZjMzYwNTQ4ZDUyYzhmZDhl
ZWVjNzUzYzc4ZDhmYTliZjFjLi5kOTUyMjMwNWFkYTFlZTk3MWYxNjUyOGRlMDY2MDRiYjZhOTZi
MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZp
Z2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5h
dmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgV29ya2VyTmF2aWdhdG9yR1BVKiBXb3Jr
ZXJOYXZpZ2F0b3JHUFU6OmZyb20oV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAg
V29ya2VyTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2aWdh
dG9yR1BVKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3Vw
cGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JHUFU+
KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1l
bnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXIuY3BwCmluZGV4IGVkNWEzY2M4MzRmZTE5ZDQ4ODhiODU1NTA0YmExNTVkNDgzZmM0
MDcuLmMxYmFjODZkM2FiMmIwZDkxM2ZjZTc0MjE0MzFhOTQ0NTllZWQyZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0xNTMs
NyArMTUzLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OmNsZWFyQ2xpZW50KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZENvbm5lY3QoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1f
cGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkQ29ubmVjdCgpOwogICAgIH0pKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5
KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0pKTsK
QEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogCiB2b2lkIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEo
VmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShiaW5h
cnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX3BlbmRp
bmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92
ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlE
YXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0pKTsKQEAgLTE4Niw3ICsxODYsNyBAQCB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnVmZmVyZWRB
bW91bnQpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVkQW1v
dW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1v
dW50KTsKICAgICB9KSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVk
IGIKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAg
bV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAgICB9KSk7CkBAIC0yMDgsNyArMjA4
LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwg
V2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMg
Y2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtl
Q29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNv
bXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKICAgICAgICAgfSkpOwpAQCAtMjE5
LDcgKzIxOSw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlCiAKIHZvaWQgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIHsK
LSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFr
ZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlRXJy
b3IoKTsKICAgICB9KSk7CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogCiB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBncmFkZVVSTCgp
CiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGdyYWRlVVJMKCk7
CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDYwNzE0NDA5MjRmYjJjZTY3ZjUzNDA2MmQ3OWU4
ZTNiMDRlZTFjNTAuLmEwN2E4NzYzYWZiOTY5YjQyMDcwYmM0OWE4NjIzOWI3ODNkNmViYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVjdFN0
YXR1cyBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgcmVxdWVzdGVkVVIKICAg
ICBtX2FsbG93Q29va2llcyA9IHZhbGlkYXRlZFVSTC0+YXJlQ29va2llc0FsbG93ZWQ7CiAgICAg
U3RyaW5nIHVzZXJBZ2VudCA9IG1fZG9jdW1lbnQtPnVzZXJBZ2VudChtX2RvY3VtZW50LT51cmwo
KSk7CiAgICAgU3RyaW5nIGNsaWVudE9yaWdpbiA9IG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkudG9TdHJpbmcoKTsKLSAgICBtX2hhbmRzaGFrZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU29j
a2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwgY2xp
ZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CisgICAgbV9oYW5kc2hha2UgPSBtYWtlVW5pcXVl
PFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2VyQWdl
bnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwogICAgIG1faGFuZHNoYWtlLT5yZXNl
dCgpOwogICAgIGlmIChtX2RlZmxhdGVGcmFtZXIuY2FuRGVmbGF0ZSgpKQogICAgICAgICBtX2hh
bmRzaGFrZS0+YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKG1fZGVmbGF0ZUZyYW1lci5jcmVhdGVFeHRl
bnNpb25Qcm9jZXNzb3IoKSk7CkBAIC03MDMsNyArNzAzLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzRnJhbWUoKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZy
YW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1l
UXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VV
bmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IFdlYlNvY2tldEZyYW1l
OjpPcENvZGVUZXh0OwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVTdHJp
bmc7CiAgICAgZnJhbWUtPnN0cmluZ0RhdGEgPSBzdHJpbmc7CkBAIC03MTMsNyArNzEzLDcgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0
cmluZykKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkK
IHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFt
ZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJh
bWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAg
ZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJh
bWVUeXBlVmVjdG9yOwogICAgIGZyYW1lLT52ZWN0b3JEYXRhLnJlc2l6ZShkYXRhTGVuZ3RoKTsK
QEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhcgogdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2Rl
LCBCbG9iJiBibG9iKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9
PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3Vu
aXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRG
cmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5mcmFtZVR5
cGUgPSBRdWV1ZWRGcmFtZVR5cGVCbG9iOwogICAgIGZyYW1lLT5ibG9iRGF0YSA9ICZibG9iOwpA
QCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5n
RnJhbWVRdWV1ZSgpCiAgICAgICAgICAgICAgICAgcmVmKCk7IC8vIFdpbGwgYmUgZGVyZWZlZCBh
ZnRlciBkaWRGaW5pc2hMb2FkaW5nKCkgb3IgZGlkRmFpbCgpLgogICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9ibG9iTG9hZGVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmJsb2JE
YXRhKTsKLSAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlz
KTsKKyAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJM
b2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKICAgICAg
ICAgICAgICAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKICAgICAg
ICAgICAgICAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KG1fZG9jdW1lbnQuZ2V0KCksICpmcmFtZS0+
YmxvYkRhdGEpOwogICAgICAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBlbmQo
V1RGTW92ZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCmluZGV4IGYyZmE2MjA5YzA0
OGY1MTUxOGEyNWVlYzEzYWVmMjU2NGM5ZjRlN2IuLmVlMzNlYTBmZTVjZjFkNWJmNzlhMmRhMDY3
MDdiNzNjZDNhNzhjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTE1NSw3ICsxNTUs
NyBAQCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkKIAog
c3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhpcyk7
CiB9CiAKIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0CkBA
IC0xNzAsOCArMTcwLDggQEAgYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRl
KCkgY29uc3QKICNpZiBVU0UoWkxJQikKIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5h
YmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtl
T3Zlck1vZGUgbW9kZSkKIHsKLSAgICBtX2RlZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJT
b2NrZXREZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7Ci0gICAgbV9pbmZsYXRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViU29ja2V0SW5mbGF0ZXI+KCk7CisgICAgbV9kZWZsYXRlciA9IG1ha2VV
bmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOworICAgIG1faW5mbGF0
ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOwogICAgIGlmICghbV9kZWZsYXRl
ci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2luZmxhdGVyLT5pbml0aWFsaXplKCkpIHsKICAgICAgICAg
bV9kZWZsYXRlciA9IG51bGxwdHI7CiAgICAgICAgIG1faW5mbGF0ZXIgPSBudWxscHRyOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0
ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvCiBzdGQ6OnVuaXF1ZV9wdHI8
RGVmbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShXZWJT
b2NrZXRGcmFtZSYgZnJhbWUpCiB7CiAjaWYgVVNFKFpMSUIpCi0gICAgYXV0byByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8gcmVz
dWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBpZiAoIWVu
YWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENv
ZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExl
bmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBAIC0xOTYsNyArMTk2LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6
OmRlZmxhdGUoV2ViU29ja2V0RnIKICAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9kZWZsYXRl
ci0+c2l6ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTIxMCw3ICsy
MTAsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQo
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1
dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBp
ZiAoIWVuYWJsZWQoKSAmJiBmcmFtZS5jb21wcmVzcykgewogICAgICAgICByZXN1bHQtPmZhaWwo
IkNvbXByZXNzZWQgYml0IG11c3QgYmUgMCBpZiBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJhbWUg
ZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAppbmRleCAx
ZDZmMTc4MjJjODA1MjgxYjcwYTQxNjIwZGNkZWU2YWQyYWI4ODljLi40YTQ4NjVmODQ5NGQwNjEz
ZWFjMzIxYTU5NGY4YmFlMTk5OTZiYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgV2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKGludCB3aW5kb3dCaXRzLCBD
b250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHQKIHsKICAgICBBU1NFUlQobV93aW5kb3dCaXRzID49
IDgpOwogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPD0gMTUpOwotICAgIG1fc3RyZWFtID0gc3Rk
OjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5nZXQo
KSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFdl
YlNvY2tldERlZmxhdGVyOjpyZXNldCgpCiBXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0SW5m
bGF0ZXIoaW50IHdpbmRvd0JpdHMpCiAgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykKIHsK
LSAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9zdHJl
YW0gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAgICBt
ZW1zZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5OTQwNzNlYWE1ZThiMjMw
ZDFjOGIwMGMxNmM1OTY0M2U5Nzg0MjY4Li5kYzZmNjYwZmQzODhjZWZmYWYwZWJlZjZlNjYwZTZi
Njk1YmI2MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAogCiAgICAgYm9vbCBz
ZW50ID0gbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh7CiAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLAotICAgICAg
ICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJveHks
IHBlZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigpLCBs
b2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFtjbGllbnRXcmFw
cGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IG1ha2VV
bmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250ZXh0
LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKGNsaWVudFdyYXBw
ZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJsaWVyLCB3ZSBuZWVkIHRvIGtp
Y2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBlZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCmluZGV4IGQ5N2I1YzJhODVh
OWQyMzI4Zjk4NDBmNDRkM2QxZTk2MzJjODJkOWUuLjc3NmM0M2FlYzBiOWI1YmRlYWRjM2RkODkx
MjZhY2VkNmJhNzUxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
TmF2aWdhdG9yV2ViVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2
aWdhdG9yV2ViVlIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIE5hdmlnYXRvcldlYlZSKiBOYXZpZ2F0
b3JXZWJWUjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JXZWJW
Uiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYlZSKj4oU3VwcGxlbWVudDxO
YXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICgh
c3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5hdmlnYXRvcldlYlZSPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUo
KSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5j
cHAKaW5kZXggYmMyM2Q1OWNjMzEyMzdiMTQ5N2E3NmFjYzU5ZDNlYWY1ZDJiNTg0MC4uNmNhNjdm
MzkxYTMxZmNkMzg2OTI1NWIyMWYyZmNiN2YzZmJmOWJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5T
U0wuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbCA6
IHB1YmxpYyBDcnlwdG9EaWdlc3RDb250ZXh0IHsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHRJbXBsPigpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4oKTsKICAgICB9CiAKICAgICBD
cnlwdG9EaWdlc3RDb250ZXh0SW1wbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCAzMTUzMTY4MDgwN2I3MmQ1ZWY5MzgwOTE0ZTdhZTI0
MGFkOWQwMzk3Li5lNTNlMTk1YjM1ZjQ5OGY3OTUyNTE1MWViYzJhY2ViNWZhZmNkMjkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKQEAgLTMy
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIFBBTCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4gQ2xv
Y2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tHZW5lcmlj
PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrR2VuZXJpYz4oKTsKIH0KIAogQ2xvY2tH
ZW5lcmljOjpDbG9ja0dlbmVyaWMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9t
YWMvQ2xvY2tDTS5tbQppbmRleCBjNjg5MzIxNWYwNmIwYzY3NGQ1NDYwODMzYjFhNGQ1MWNjMzJi
NjE0Li45ZTA3MWI3ODE0ZTQ0ZmUwMDQ0MmU2NmM3MjBiMmJmYjMxMzA2OWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQpAQCAtMzksNyArMzksNyBA
QCBzdGF0aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDsKIAogc3RkOjp1
bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDbG9ja0NNPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrQ00+KCk7CiB9
CiAKIENsb2NrQ006OkNsb2NrQ00oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKaW5kZXggY2FjYWI4NTY4Yzg2MTEyZDljZGZlZmMzMDkwMjZhZDlj
ODE1MzNlNS4uYjM1ZmMxNTY0MzdmMWNhMDlkNjQyMmJkNTljNzEzM2ZhYzJjNjBhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNTc1
LDcgKzE1NzUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogdm9pZCBBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdDb21w
dXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKCkKIHsKICAgICBpZiAoIW1fY29t
cHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSkKLSAgICAgICAgbV9jb21wdXRlZE9iamVjdEF0dHJp
YnV0ZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2Fj
aGU+KCk7CisgICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IG1ha2VVbmlx
dWU8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlPigpOwogfQogCiB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggZWRmZGJiMGEwNmZkNmVkYTI1MDQ4
Yjk3MTliOWVmMWJhOWUxMzQ0My4uZTZkZWE5NjExZjliNDg4MGE1YTE5YjlhZDFlMWJkZTcxYzE4
NDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAgLTc3
Nyw3ICs3NzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShEaWRT
ZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlOb3RpZnkgc3luYwogICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCBpZiBzeW5jaHJvbm91c2x5IG5vdGlmeSBpcyBmYWxzZSwgcXVldWUgYSBtaWNyb3Rh
c2sgdG8gcnVuIGZpbmlzaCBub3RpZmljYXRpb24gc3RlcHMgZm9yIGFuaW1hdGlvbiB1bmxlc3Mg
dGhlcmUKICAgICAgICAgICAgIC8vIGlzIGFscmVhZHkgYSBtaWNyb3Rhc2sgcXVldWVkIHRvIHJ1
biB0aG9zZSBzdGVwcyBmb3IgYW5pbWF0aW9uLgogICAgICAgICAgICAgbV9maW5pc2hOb3RpZmlj
YXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSB0cnVlOwotICAgICAgICAgICAgTWljcm90YXNr
UXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNy
b3Rhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKKyAgICAg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1
ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rh
c2tQZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZmluaXNoTm90aWZpY2F0aW9uU3Rl
cHNNaWNyb3Rhc2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaE5v
dGlmaWNhdGlvblN0ZXBzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01Qcm9taXNlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21p
c2VQcm94eS5oCmluZGV4IDdkYTQ2YTYxNTA0ZWYyNDgxNWE2OTRkZmJhMTJjMjhiMWVmNGZlNjYu
LjYyMWI4OTA1MWJiNDhkYjAzMDFlYTgwNDdjN2FmZWZmYjY4Y2RlNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCkBAIC02MCw2ICs2MCw3IEBAIGNs
YXNzIERPTVByb21pc2VQcm94eSB7CiAKIHRlbXBsYXRlPD4KIGNsYXNzIERPTVByb21pc2VQcm94
eTxJRExWb2lkPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
RE9NUHJvbWlzZVByb3h5KCkgPSBkZWZhdWx0OwogICAgIH5ET01Qcm9taXNlUHJveHkoKSA9IGRl
ZmF1bHQ7CkBAIC04NCw2ICs4NSw3IEBAIGNsYXNzIERPTVByb21pc2VQcm94eTxJRExWb2lkPiB7
CiAvLyBGb250RmFjZSBhbmQgRm9udEZhY2VTZXQuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBl
PgogY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjayB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlICgpPjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAppbmRleCAwY2U0NTk1MGM1Mzkx
ZjYwNjk2ZmQ0MGQ4OWQ5MjdkYTM4NmE4N2QzLi42Y2VkZDc2NjQ1ZWM0ZjViZjQ2MDkzMmI2YTZk
MTczMzdhZDgxNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIu
aApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHQ0NvbnRy
b2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEdDQ29udHJvbGxlcik7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95
ZWQ8R0NDb250cm9sbGVyPjsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGRiMGMxZGM3NmY4YTI4OTcwNDVlZTJjZmM5MTky
M2Q1OGRmMWI2ZjkuLmM1YzQ3MDYxYmZhY2ExZmNhNzI4YmUyN2IwYTJiNGE5ZjBiMzAyNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAt
MjEwLDcgKzIxMCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9v
cChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyCiAgICAgSlNET01XaW5kb3dC
YXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsK
IAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09i
amVjdCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVh
ZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBt
YWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFp
blRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNr
LT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXggNjI5NWY1ODRjZmU4YTE3MjlkZGY2YjE4ZDc3
NTQ5ZmQ0NGM5YTBiZS4uZGI1ZTc3MzQ5MGJlZGZiZjNlMGMxMGNmMjNkMGEzNmM4YTNiZGE4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCBFdmVudFRhcmdldCogSlNFdmVudFRhcmdldDo6dG9X
cmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFy
Z2V0V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3QoVk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSkK
IHsKICAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0V2ZW50VGFyZ2V0Kj4o
dm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRU
YXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRh
cmdldCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5kb3codm0sIHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVy
Pih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CiAgICAg
aWYgKGF1dG8qIHNjb3BlID0gdG9KU1dvcmtlckdsb2JhbFNjb3BlKHZtLCB0aGlzVmFsdWUpKQot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2Nv
cGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVu
dFRhcmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBkODMxNjA0Y2JhZWI4N2YwN2QxMmVhZGRhNGJm
MDUzMWE3MGJiNDAyLi45YmQ2NjQ0NjAxNzA1NDk1YTk0ZTdiM2ZhZGYwNDhmM2M3YjA0M2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoK
IAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09i
amVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01D
YWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFz
ayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90
YXNrUXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDExNGZmM2M4YTVkZjAzOTAyODNiMWE2N2NlNjA4ZDdmNDI0NmU3YzIuLjM1Y2NkNDk2MzVlMDYx
MTk0ZTk3MjkzZTcxMmY3YWEzNzJjNDliYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzMwMCw3ICszMzAwLDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmUKICAgICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGNvbnRlbnRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXplKCkp
OworICAgIGF1dG8gY29udGVudHMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CiAKICAgICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZmZXIq
PiB2aXNpdGVkOwogICAgIGZvciAoc2l6ZV90IGFycmF5QnVmZmVySW5kZXggPSAwOyBhcnJheUJ1
ZmZlckluZGV4IDwgYXJyYXlCdWZmZXJzLnNpemUoKTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7CkBA
IC0zNDUxLDcgKzM0NTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
Pj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAjZW5kaWYKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJz
ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IG1h
a2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIGF1dG8gY29kZSA9IENs
b25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZzdGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJy
YXlCdWZmZXJzLCBpbWFnZUJpdG1hcHMsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAg
ICB3YXNtTW9kdWxlcywgCkBAIC0zNDY5LDcgKzM0NjksNyBAQCBFeGNlcHRpb25PcjxSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0
YXRlJgogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdU
Rk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9z
dE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwgV1RGTW92ZShpbWFn
ZUJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICAgICAgICAgICwgc3Rk
OjptYWtlX3VuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAgICAgICAg
ICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQogI2VuZGlmCiAg
ICAgICAgICAgICAgICAgKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDVjNDY2Mjk0YmVlNTZjMjFiZjBmNjNkMTVi
MGY4ZGYwZjI3YTNhMGUuLjRmNGIwY2YzYjdlZWNkZGQwNzg3MDI1NTIwODg5NWU0NWZhMmEwN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKGFycmF5TGVuZ3RoKTsKIAotICAgIGF1dG8gYXJy
YXlCdWZmZXJDb250ZW50c0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+KCk7CisgICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5p
cXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICB3aGlsZSAoYXJyYXlMZW5ndGgt
LSkgewogICAgICAgICB1bnNpZ25lZCBidWZmZXJTaXplOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcAppbmRleCAyNDZmNjRhOWY2MzIyYjU4NzBjYmI2ODJlZGIy
ZDRlZGI5NTNlYzdjLi4zYjExMjUyYWU2NGNhZjJlNGZlNzM5ZTMxZWUxMDk5NTRkNTZhNTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRh
LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29y
bGQoVk0qIHZtKQogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gbmV3IEpTVk1DbGll
bnREYXRhKCp2bSk7CiAgICAgdm0tPmNsaWVudERhdGEgPSBjbGllbnREYXRhOyAvLyB+Vk0gZGVs
ZXRlcyB0aGlzIHBvaW50ZXIuCiAgICAgCi0gICAgdm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFp
bnQoc3RkOjptYWtlX3VuaXF1ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERh
dGEpKTsKKyAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChtYWtlVW5pcXVlPERPTUdD
T3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOwogICAgICAgICAKICAgICBjbGll
bnREYXRhLT5tX25vcm1hbFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoKnZtLCB0cnVl
KTsKICAgICB2bS0+bV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3Jl
VHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDE2YTc2YzQ5NTI5YTRiYjg3
MWNiNjZjYTNhZDc1YTJkNzZhODA2NTUuLmQyMzk4NTdhYTNiZGRlOWZlYjljYjg3NDBmY2Y1ZDY0
OWUzNTBkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsK
ICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3Rv
dHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtl
ckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGll
bnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3Bl
KTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2Nv
bnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmlu
ZGV4IDI5YzgxODY4MzZlYTA1NDExZThmMWVkNjQxYzA1NzBjZTgxNzY4MTUuLmFhNTZlMmZkZTg1
NTc3YWNmOWMwNDc0Yzg5ODc3ZjRlMGQ1YzUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xh
c3MuY3BwCkBAIC04MSw3ICs4MSw3IEBAIE1ldGhvZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29u
c3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFu
Y2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9p
c2EtPmhhc01ldGhvZCAmJiBtX2lzYS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKSB7Ci0gICAgICAg
IGF1dG8gbWV0aG9kID0gc3RkOjptYWtlX3VuaXF1ZTxDTWV0aG9kPihpZGVudCk7CisgICAgICAg
IGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxDTWV0aG9kPihpZGVudCk7CiAgICAgICAgIENNZXRo
b2QqIHJldCA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgbV9tZXRob2RzLnNldChuYW1lLmltcGwo
KSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTEwMyw3ICsxMDMs
NyBAQCBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBz
dGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9i
aiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzUHJvcGVydHkgJiYgbV9p
c2EtPmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gZmllbGQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENGaWVsZD4oaWRlbnQpOworICAgICAgICBhdXRvIGZpZWxkID0gbWFrZVVu
aXF1ZTxDRmllbGQ+KGlkZW50KTsKICAgICAgICAgQ0ZpZWxkKiByZXQgPSBmaWVsZC5nZXQoKTsK
ICAgICAgICAgbV9maWVsZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKGZpZWxkKSk7CiAgICAg
ICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0Jy
aWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBm
MmY2MjA4MmE4MDhhMTlmMTBhNWQ5MzVkOTIyYjc3M2MxMjIxYzI4Li4wNGNkZGNkMjRjYWE4Mjlj
MzJlNTZlYzI3M2FmYmQzNTFmMjU0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdl
SlNDLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUm9vdE9iamVjdDsKIGNsYXNzIFJ1bnRpbWVP
YmplY3Q7CiAKIGNsYXNzIEZpZWxkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwg
Y29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9J
bnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IGI4NmY3NTFhMGE3
MTM4YmUwMDc3NmE3OGNiYzJhNmQ0NWRkMzc1MDIuLmEzZDhkMzJmMjhkZDgwNThhNGFiNDQyNzM5
NTM0NDA3NGYyNmM3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5t
bQpAQCAtMTM0LDcgKzEzNCw3IEBAIE1ldGhvZCogT2JqY0NsYXNzOjptZXRob2ROYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiAgICAgICAgICAgICAgICAg
bWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOm9iamNNZXRo
b2RTZWxlY3Rvcl07CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFt
ZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyopbWV0aG9kTmFtZS5nZXQoKV0pIHx8ICFzdHJj
bXAob2JqY01ldGhvZFNlbGVjdG9yTmFtZSwgYnVmZmVyLmRhdGEoKSkpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNz
LCBvYmpjTWV0aG9kU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gbWFr
ZVVuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CiAgICAg
ICAgICAgICAgICAgbWV0aG9kUHRyID0gbWV0aG9kLmdldCgpOwogICAgICAgICAgICAgICAgIG1f
bWV0aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxk
TmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25z
CiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZv
cktleTpVVEY4S2V5TmFtZV07CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFw
cGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8
IFtrZXlOYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkg
ewotICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNG
aWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleU5hbWUpOworICAgICAgICAgICAgICAgIGF1
dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNGaWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVm
KWtleU5hbWUpOwogICAgICAgICAgICAgICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAg
ICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVs
ZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIwLDcgKzIyMCw3IEBAIEZpZWxkKiBP
YmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2Uq
IGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0Ns
YXNzIHdlYlNjcmlwdE5hbWVGb3JLZXk6b2JqY0l2YXJOYW1lXTsKIAogICAgICAgICAgICAgICAg
IGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8ICFzdHJjbXAob2JqY0l2YXJOYW1lLCBqc05hbWUuZGF0
YSgpKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdG
aWVsZCA9IG1ha2VVbmlxdWU8T2JqY0ZpZWxkPihvYmpjSVZhcik7CiAgICAgICAgICAgICAgICAg
ICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fZmllbGRD
YWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobmV3RmllbGQpKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0K
aW5kZXggZTA4YjA0OGUzYjU2ODQyOThjZGVmZDkzZWI5MTg4Mzg5MTU2ZjQzOC4uM2I5M2UxODc4
Mzg1NGMyNDQ0NmUxY2ZhNTc1ODQ2NmYwZjBhN2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBl
eGVjKQogICAgIAogICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOild
KXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3Mq
PihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2Jq
Y01ldGhvZD4gZmFsbGJhY2tNZXRob2Qoc3RkOjptYWtlX3VuaXF1ZTxPYmpjTWV0aG9kPihvYmpj
Q2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlw
dDp3aXRoQXJndW1lbnRzOikpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+
IGZhbGxiYWNrTWV0aG9kKG1ha2VVbmlxdWU8T2JqY01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwg
QHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50
czopKSk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2Fz
dDxPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVjLT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1l
KCk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRp
Zmllci5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3Rh
bmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVy
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRl
cnMuY3BwCmluZGV4IDgzZDQ0ZTA2N2ZiZGY1NDdmNmM4OGI2N2EzNmViNTNmNjkxNDY2ZWUuLmYx
NzFhNTgyMDNmOThhZjE1NTQ3ODBlMDUxOWUwNGExZTUzYTBiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcApA
QCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjpwcmludCgpIGNvbnN0
CiAjZW5kaWYKIAogQ29tYmluZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMoKQotICAg
IDogbV9wcmVmaXhUcmVlUm9vdChzdGQ6Om1ha2VfdW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkp
CisgICAgOiBtX3ByZWZpeFRyZWVSb290KG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkK
IHsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjphZGRQ
YXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25zdCBWZWN0b3I8VGVybT4mIHBhdHRlCiAgICAg
ICAgIGlmIChuZXh0RW50cnlJbmRleCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAgICAgbGFz
dFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+ZWRnZXNbbmV4dEVudHJ5SW5kZXhdLmNoaWxk
LmdldCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdl
cy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIHN0ZDo6
bWFrZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKKyAgICAgICAgICAgIGxhc3RQcmVm
aXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQo
dGVybSksIG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKICAgICAgICAgICAgIGxh
c3RQcmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmxhc3QoKS5jaGlsZC5nZXQoKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggOGM3ZTNmN2Q3ZjFl
MGQ1NWFhZDg5MzRhYmJhNWFhNzBmYjhmODVjZi4uNzdmZWI2MGM1MGJjOGE0ZjI0YjI3Njk2YWQx
MTBkMWVkYTc0MjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKQEAgLTQ5LDYgKzQ5LDcgQEAg
c3RydWN0IFJlc291cmNlTG9hZEluZm87CiAvLyAxKSBJdCBzdG9yZXMgdGhlIHJ1bGVzIGZvciBl
YWNoIGNvbnRlbnQgZXh0ZW5zaW9uLgogLy8gMikgSXQgcHJvdmlkZXMgQVBJcyBmb3IgdGhlIFdl
YkNvcmUgaW50ZXJmYWNlcyB0byB1c2UgdGhvc2UgcnVsZXMgZWZmaWNpZW50bHkuCiBjbGFzcyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIC8vIC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFjZS4gVGhpcyBjYW4gYmUg
dXNlZCBieSB1cHBlciBsYXllci4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cAppbmRleCA5NmUyZDYzNGI4OTNiMzk5MzA0YThiMmIyODVlNjFmNGU0NjlkYzBjLi5iMmE5YTc4
MzUyMjc3MjgzZjk1ZDg0OWQwM2IxNTZmY2RjNzIxZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcApAQCAtMTE1LDMxICsxMTUsMzEgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5
cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkRlY3J5cHQ6CiAgICAgICAgIHN3aXRjaCAoKmlk
ZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FF
U19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6
IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxn
b3JpdGhtUnNhT2FlcFBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DQkM6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NG
QjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9B
bGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFyYW1zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6QUVTX0NUUjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGlj
dGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6QUVTX0dDTTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252
ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHN0YXRlLCB2YWx1ZS5n
ZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHBhcmFtcyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFy
YW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBA
IC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgc3dpdGNo
ICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlJTQVNTQV9QS0NTMV92MV81OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkhNQUM6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQTogewogICAg
ICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1F
Y2RzYVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKQEAgLTE2MCwxMyArMTYwLDEzIEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVh
c2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJ
ZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1z
ID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZh
dWx0OgpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UlNBRVNfUEtDUzFfdjFfNTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252
ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHN0YXRlLCB2YWx1
ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CkBAIC0yMDMs
NyArMjAzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNo
SWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElk
ZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVu
dGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdl
blBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfQ1RSOgpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAg
ICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBh
cmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFt
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0yMjMs
MTQgKzIyMywxNCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhh
c2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNo
SWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElk
ZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFt
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAgICAgICAgYXV0
byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4o
c3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tl
eVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGRlZmF1bHQ6CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKIAog
ICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0
aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihzdGF0ZSwgbmV3VmFsdWUpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6SEtERjogewpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNy
eXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsK
ICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpQQktERjI6IHsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9B
bAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAg
ICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMjc5LDcgKzI3OSw3IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpJbXBvcnRLZXk6
CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAg
ICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihw
YXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UlNBX1BTUzoKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgRXhjZXB0
aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxp
emVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQ
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yOTgsNyArMjk4LDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfR0NNOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DRkI6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVT
X0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewogICAgICAgICAg
ICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5
UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwpAQCAtMzA3LDE5ICszMDcsMTkgQEAgc3RhdGlj
IEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4g
bm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNl
cHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4
Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50
aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkVDREg6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERp
Y3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkhLREY6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6UEJLREYyOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVu
aXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTMyOSw3ICszMjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlw
dG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6VW53cmFwS2V5OgogICAgICAgICBzd2l0Y2ggKCpp
ZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVT
X0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IgfTsKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzogewogICAgICAg
ICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNL
ZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQ
YXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewpAQCAt
MzU0LDEyICszNTQsMTIgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlm
IChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
aGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhh
c2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQ
YXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAgICAgICAgICAg
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTUy
MCwxNiArNTIwLDE2IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4gY3Jvc3NUaHJlYWRDb3B5SW1wb3J0UGFyYW1zKGNvCiB7CiAgICAgc3dpdGNoIChp
bXBvcnRQYXJhbXMucGFyYW1ldGVyc0NsYXNzKCkpIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM6OkNsYXNzOjpOb25lOiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICAgICAg
cmVzdWx0LT5pZGVudGlmaWVyID0gaW1wb3J0UGFyYW1zLmlkZW50aWZpZXI7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6
Q2xhc3M6OkVjS2V5UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1FY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobUVjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpIbWFjS2V5UGFyYW1zOgotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihj
cm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oaW1w
b3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1I
bWFjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1h
Y0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyczo6Q2xhc3M6OlJzYUhhc2hlZEltcG9ydFBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihjcm9z
c1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1z
PihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBk
YmNjYzkwMGYzMzc0OGNkMjA2N2Y2MGNiMjkwYzBiZDYwMDY1NTMzLi5hNDJmNTY0ZjgxZmUxZjBl
YTA5NDQzZDFmMTA1M2MxYzNjZDBjZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwCkBAIC0yMTcsMTIgKzIxNywxMiBAQCBjbGFzcyBDU1NDYWxjUHJpbWl0
aXZlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoY2F0ZWdvcnkoKSkgewogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0
ZWdvcnk6Ok51bWJlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNF
eHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9hdFZhbHVlKCkpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUo
KSk7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoOgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCht
X3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNvcmU6OkZp
eGVkKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0
aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwg
V2ViQ29yZTo6Rml4ZWQpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJj
ZW50OgogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnRMZW5ndGg6IHsK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3Ro
PihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50
Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRG
bG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKICAg
ICAgICAgfQogICAgICAgICAvLyBPbmx5IHR5cGVzIHRoYXQgY291bGQgYmUgcGFydCBvZiBhIExl
bmd0aCBleHByZXNzaW9uIGNhbiBiZSBjb252ZXJ0ZWQKICAgICAgICAgLy8gdG8gYSBDYWxjRXhw
cmVzc2lvbk5vZGUuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnROdW1iZXIgbWFrZXMgbm8g
c2Vuc2UgYXMgYSBMZW5ndGguCkBAIC01MjAsNyArNTIwLDcgQEAgY2xhc3MgQ1NTQ2FsY09wZXJh
dGlvbiBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgbm9kZXMudW5jaGVja2VkQXBwZW5kKFdU
Rk1vdmUobm9kZSkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3Zl
KG5vZGVzKSwgbV9vcGVyYXRvcik7CiAgICAgfQogCiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkg
Y29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5
bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5j
cHAKaW5kZXggYzQ0Y2ViYzUxMjBlZDgzMjZkOWExYjJhNjU2YjkzNjdiNmUxOTEyOC4uZTVhZThi
NzdhNTE0ZjA5YzNiNDk0NDFiNTYyZjVjMmExZWM3NTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKQEAgLTE2NywxMSArMTY3LDExIEBAIHZvaWQg
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgICAgIHNp
bXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICBB
U1NFUlQoIWRlZmF1bHRTdHlsZSk7Ci0gICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgICAgIGRlZmF1bHRRdWlya3NT
dHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgZGVm
YXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKLSAgICBk
ZWZhdWx0UHJpbnRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7
CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAg
ICBkZWZhdWx0UHJpbnRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAg
ICAgbWVkaWFRdWVyeVN0eWxlU2hlZXQgPSAmU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoQ1NT
UGFyc2VyQ29udGV4dChVQVNoZWV0TW9kZSkpLmxlYWtSZWYoKTsKIAogICAgIC8vIFN0cmljdC1t
b2RlIHJ1bGVzLgpAQCAtMTkwLDEwICsxOTAsMTAgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVl
dHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsK
ICAgICBBU1NFUlQoIXNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKIAotICAgIGRlZmF1bHRTdHls
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0
eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICAvLyBUaGVyZSBhcmUg
bm8gbWVkaWEtc3BlY2lmaWMgcnVsZXMgaW4gdGhlIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgogICAg
IGRlZmF1bHRQcmludFN0eWxlID0gZGVmYXVsdFN0eWxlOwotICAgIGRlZmF1bHRRdWlya3NTdHls
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFF1
aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKIAogICAgIHNpbXBs
ZURlZmF1bHRTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hl
ZXQsIHN0cmxlbihzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiAgICAgZGVmYXVsdFN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldCgqc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA3NzA5YjVkZWFmYmZlOWY5YWIx
MWFjMDc3YzYxOWQ3OTRkMTY0MmYyLi42NDZjMTRhMTFhYzY0NWI5OTI2MTQ5ZjI5ZTk4MDBjNGM3
MjY3YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTc3LDEwICs3NywxMCBA
QCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwg
Q1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBEbwogICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2Fk
aW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxl
QmluYXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcg
JiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQs
IGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkp
Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZh
Y2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZvbnQpOworICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250
RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRG
YWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVs
ZW1lbnQpOworICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJj
ZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwgZm9udEZhY2VFbGVtZW50KTsK
IAogICAgICAgICBpZiAoc291cmNlKQogICAgICAgICAgICAgZm9udEZhY2UuYWRvcHRTb3VyY2Uo
V1RGTW92ZShzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCmluZGV4
IDA1ZTNhM2Y2ZTIxYmM5MjgxNzg1NTY5YTE0YWE1MGZmNTJlNGEyNzAuLjE4ZTgzNGQ2OTBhNmVi
NTEwMWRjOTBjOGRlNWRiNWU3YTFiMGM1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U2V0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxv
Y2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmIGZhbWlsCiAgICAg
ICAgIGZhbWlseUxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZv
bnRGYW1pbHlWYWx1ZShmYW1pbHlOYW1lKSk7CiAgICAgICAgIGZhY2UtPnNldEZhbWlsaWVzKGZh
bWlseUxpc3QuZ2V0KCkpOwogICAgICAgICBmYWNlLT5zZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0
aWVzKGl0ZW0pOwotICAgICAgICBmYWNlLT5hZG9wdFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPENT
U0ZvbnRGYWNlU291cmNlPihmYWNlLmdldCgpLCBmYW1pbHlOYW1lKSk7CisgICAgICAgIGZhY2Ut
PmFkb3B0U291cmNlKG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCksIGZh
bWlseU5hbWUpKTsKICAgICAgICAgQVNTRVJUKCFmYWNlLT5jb21wdXRlRmFpbHVyZVN0YXRlKCkp
OwogICAgICAgICBmYWNlcy5hcHBlbmQoV1RGTW92ZShmYWNlKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAppbmRleCBkZTZmMzlkM2Y1ZDg3MzFkOTllNWViM2M5
NjhlMjlhZDFlYWNiZmU2Li5jNmM1YzM5NTQwYTVjNTA1Y2RmNGQ1OWM3NDZjMzkxODVjOWUwM2Iy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcApAQCAtMTQwLDcgKzE0MCw3
IEBAIENTU1J1bGUqIENTU0dyb3VwaW5nUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QK
IENTU1J1bGVMaXN0JiBDU1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihj
b25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0aGlzKSk7CisgICAgICAgIG1fcnVsZUxpc3RD
U1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+
Pihjb25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0aGlzKSk7CiAgICAgcmV0dXJuICptX3J1
bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggZmZkZDNkMGFhNjU3ZjI1ZWFmMzFkNTcwYzU4NjhlZDUz
MDllMmVmZC4uNTU1MWYyYzY5MTdkMDMzMDcyNmFjZGY4MTA5MWE5MWZhYjRlMGI1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMTEwLDcg
KzExMCw3IEBAIEdlbmVyYXRlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJ
bWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUpCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6
OnNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUsIEdlbmVyYXRlZEltYWdlJiBp
bWFnZSkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2VzLmNvbnRhaW5zKHNpemUpKTsKLSAgICBtX2lt
YWdlcy5hZGQoc2l6ZSwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRo
aXMsIHNpemUsIGltYWdlKSk7CisgICAgbV9pbWFnZXMuYWRkKHNpemUsIG1ha2VVbmlxdWU8Q2Fj
aGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOwogfQogCiB2b2lkIENTU0lt
YWdlR2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoRmxvYXRTaXplIHNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggYzkwOTgzMmRh
MGU1MTkwMjUzNTEzYTM5ODMxOTFhN2MyZjM5MzAwNS4uNmYxZWIzMzg2ZDlmYmM3MmQ0NDM3ODVk
MWQxOWM0ZGQ4YzVjMzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZy
YW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNw
cApAQCAtMjIwLDcgKzIyMCw3IEBAIENTU0tleWZyYW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVsZTo6
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENTU1J1bGVMaXN0JiBDU1NLZXlmcmFtZXNSdWxl
Ojpjc3NSdWxlcygpCiB7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAg
ICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxp
c3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3Jh
cHBlciA9IG1ha2VVbmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0tleWZyYW1lc1J1bGU+PigqdGhp
cyk7CiAgICAgcmV0dXJuICptX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNDgwYTg5ODUyMzdhZGE5MGExMTc4ZTBiMjc5ZTBl
NjY4MDdlMzM0MS4uYzg4ZDFlZGM5M2I3YTZjODNmMjE3N2JhYzc2N2Y5Yjc4MmVlNzU4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0
cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMoKQogICAgIGlmICghY2FuQWNj
ZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3J1bGVMaXN0
Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOworICAgICAgICBtX3J1bGVMaXN0
Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOwog
ICAgIHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmluZGV4IDY1YTJmZGY4ZGZhY2I0ZDdmNzFk
NzYxY2IyMTY2YjFhOTI4NGMwNzAuLjkxNGJkZTRhMmRlOWFhMjEwNmMwMTA2M2I4MDhkOWNhNGZm
ZjZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIERPTUNTU1BhaW50V29ya2xldCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpmcm9t
KERPTUNTU05hbWVzcGFjZSYgY3NzKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxET01DU1NQYWludFdvcmtsZXQqPihTdXBwbGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZy
b20oJmNzcywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUNTU1BhaW50V29y
a2xldD4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01D
U1NQYWludFdvcmtsZXQ+KGNzcyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92
ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IDdlY2Q5M2Q3ZGMzZDQzMmVhZjgy
YmM5NTZlNjFkNDg5YTUxMDYyNWIuLjBkZjZhYWU5NmYwZTFjNzBiMzc1NTYxNjQ5ZWUzNWQyOGVi
NGMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0
b21Qcm9wZXJ0eS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eSogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbShET01DU1NOYW1lc3BhY2UK
IHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NQ1NTUmVnaXN0ZXJDdXN0
b21Qcm9wZXJ0eSo+KFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0
eT4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NS
ZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcAppbmRleCBkODU5NmZkMWIyNDU5ZGUwN2UxYzg5OWNjMDc5ZmMxOTg1MTE2
NWU5Li44MmI3ZmNjMzBlNTgyNzQ5OTIwMmUyOGI4MzA4NmNmMGZhNDRhYzU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRG9j
dW1lbnRSdWxlU2V0czo6c19pc0ludmFsaWRhdGluZ1N0eWxlV2l0aFJ1bGVTZXRzIHsgZmFsc2Ug
fTsKIERvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50UnVsZVNldHMoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlcikKICAgICA6IG1fc3R5bGVSZXNvbHZlcihzdHlsZVJlc29sdmVyKQogewotICAg
IG1fYXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRo
b3JTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNh
YmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBEb2N1bWVu
dFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNvbnN0
CiAKICAgICAvLyBNZWRpYSBxdWVyaWVzIG9uIHVzZXIgYWdlbnQgc2hlZXQgbmVlZCB0byBldmFs
dWF0ZWQgaW4gZG9jdW1lbnQgY29udGV4dC4gVGhleSBiZWhhdmUgbGlrZSBhdXRob3Igc2hlZXRz
IGluIHRoaXMgcmVzcGVjdC4KICAgICBhdXRvJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yID0gbV9zdHls
ZVJlc29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3IoKTsKLSAgICBtX3VzZXJBZ2VudE1lZGlhUXVl
cnlTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX3VzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX3VzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6
bWVkaWFRdWVyeVN0eWxlU2hlZXQsIG1lZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2
ZXIpOwogCiAgICAgLy8gVmlld3BvcnQgZGVwZW5kZW50IHF1ZXJpZXMgYXJlIGN1cnJlbnRseSB0
b28gaW5lZmZpY2llbnQgdG8gYWxsb3cgb24gVUEgc2hlZXQuCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgRG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSgpCiB7CiAgICAgYXV0byYg
ZXh0ZW5zaW9uU3R5bGVTaGVldHMgPSBtX3N0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5leHRlbnNp
b25TdHlsZVNoZWV0cygpOwogICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxl
UmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpOwotICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBhdXRvIHRlbXBVc2VyU3R5bGUgPSBt
YWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hl
ZXQgPSBleHRlbnNpb25TdHlsZVNoZWV0cy5wYWdlVXNlclNoZWV0KCkpCiAgICAgICAgIHRlbXBV
c2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHBhZ2VVc2VyU2hlZXQtPmNvbnRlbnRzKCksIG1l
ZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2ZXIpOwogICAgIGNvbGxlY3RSdWxlc0Zy
b21Vc2VyU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVT
aGVldHMoKSwgKnRlbXBVc2VyU3R5bGUsIG1lZGlhUXVlcnlFdmFsdWF0b3IsIG1fc3R5bGVSZXNv
bHZlcik7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0
PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxlcykKICAgICBzaXpl
X3Qgc2l6ZSA9IHJ1bGVzLnNpemUoKTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGF1dG8gcnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsK
KyAgICBhdXRvIHJ1bGVTZXQgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZXNb
aV0ucnVsZSwgcnVsZXNbaV0uc2VsZWN0b3JJbmRleCwgcnVsZXNbaV0uc2VsZWN0b3JMaXN0SW5k
ZXgpOwogICAgIHJ1bGVTZXQtPnNocmlua1RvRml0KCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVs
ZUZlYXR1cmU+JiBydWxlcykKIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6cmVzZXRBdXRob3JTdHls
ZSgpCiB7CiAgICAgbV9pc0F1dGhvclN0eWxlRGVmaW5lZCA9IHRydWU7Ci0gICAgbV9hdXRob3JT
dHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0g
bWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hy
aW5rVG9GaXQoKTsKIH0KIApAQCAtMTk1LDEyICsxOTUsMTIgQEAgc3RhdGljIFZlY3RvcjxJbnZh
bGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0
cmluZyYKICAgICAgICAgICAgIGF1dG8gYXJyYXlJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PigqZmVhdHVyZS5tYXRjaEVsZW1lbnQpOwogICAgICAgICAgICAgYXV0byYgcnVsZVNldCA9IG1h
dGNoRWxlbWVudEFycmF5W2FycmF5SW5kZXhdOwogICAgICAgICAgICAgaWYgKCFydWxlU2V0KQot
ICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7Cisg
ICAgICAgICAgICAgICAgcnVsZVNldCA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICAgICAg
ICAgIHJ1bGVTZXQtPmFkZFJ1bGUoZmVhdHVyZS5ydWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgs
IGZlYXR1cmUuc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgICAgICAgICAgaWYgKGZlYXR1cmUuaW52
YWxpZGF0aW9uU2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uU2VsZWN0b3JB
cnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7CiAg
ICAgICAgIH0KLSAgICAgICAgYXV0byBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PigpOworICAgICAgICBhdXRvIGludmFs
aWRhdGlvblJ1bGVTZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaEVsZW1lbnRBcnJheS5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1hdGNoRWxlbWVudEFycmF5W2ldKQogICAg
ICAgICAgICAgICAgIGludmFsaWRhdGlvblJ1bGVTZXRzLT5hcHBlbmQoeyBzdGF0aWNfY2FzdDxN
YXRjaEVsZW1lbnQ+KGkpLCBXVEZNb3ZlKG1hdGNoRWxlbWVudEFycmF5W2ldKSwgV1RGTW92ZShp
bnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2ldKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxl
bWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDA1ZDM4NWE1NThjNDhjNDhlZThkYTkwZjZhMThj
YjRlNzVhNmE5NWEuLjA1YjQ1N2ZkNjgyMGM2N2YwZTBmYmU5MzA4N2I4Y2VmMDgyOWViYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMjkxLDcg
KzI5MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNlCiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gcnVsZURhdGFWZWN0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOworICAgIGF1
dG8gcnVsZURhdGFWZWN0b3IgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigp
OwogICAgIHJ1bGVEYXRhVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hlZFJ1
bGVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVz
KQogICAgICAgICBydWxlRGF0YVZlY3Rvci0+dW5jaGVja2VkQXBwZW5kKCptYXRjaGVkUnVsZS5y
dWxlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCAyMTIyNDVkZWRjYWZmOTU2YWQ0
NDEwN2I5ZWI0NGNiNDEzMjhhYWRiLi5lMWIxYWYyMGZiMTFhZTNkZmVlMTkyY2FjOTJlNjJjZGVh
NTU3ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVm
ZmVyKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgUmVmPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYmIGFy
cmF5QnVmZmVyVmlldykKIHsKLSAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NT
Rm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RG
TW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKKyAgICBhdXRvIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NT
Rm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RG
TW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3Zl
KHNvdXJjZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggM2IyMGQ0MTMz
Mzc1MzNkNmNiM2M1OGNiM2QxMDRmMGYwNGI1ZTYxOS4uZTFlMWQ3MjEyMTFlNmRlMDFhOGE4NmUw
ZDQwZDg1Mjg5OTdiMzU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8
RGVwcmVjYXRlZENTU09NVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3Jh
cEZvckRlcHJlY2F0ZWRDUwogICAgIC8vIFRoZSBtYXAgaXMgaGVyZSB0byBtYWludGFpbiB0aGUg
b2JqZWN0IGlkZW50aXR5IG9mIHRoZSBDU1NWYWx1ZXMgb3ZlciBtdWx0aXBsZSBpbnZvY2F0aW9u
cy4KICAgICAvLyBGSVhNRTogSXQgaXMgbGlrZWx5IHRoYXQgdGhlIGlkZW50aXR5IGlzIG5vdCBp
bXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5IGFuZCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJl
bW92ZWQuCiAgICAgaWYgKCFtX2Nzc29tVmFsdWVXcmFwcGVycykKLSAgICAgICAgbV9jc3NvbVZh
bHVlV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRy
PERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CisgICAgICAgIG1fY3Nzb21WYWx1ZVdyYXBwZXJz
ID0gbWFrZVVuaXF1ZTxIYXNoTWFwPENTU1ZhbHVlKiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01W
YWx1ZT4+PigpOwogICAgIAogICAgIGF1dG8mIGNsb25lZFZhbHVlID0gbV9jc3NvbVZhbHVlV3Jh
cHBlcnMtPmFkZChpbnRlcm5hbFZhbHVlLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPigp
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNsb25lZFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
RmVhdHVyZS5jcHAKaW5kZXggZGZmZGE2ZjUxZGY5NTRkMjA2ZjAzZDBjNzM1NjBkZGEzOTJkMTQz
MC4uNDRlZWIxZDcwMmQyZjlkY2I2YjEyYjU1Mjc4MTU2N2ZkMDBkMmU1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZUZlYXR1cmUuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNl
dDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIAogICAgIGZvciAo
YXV0byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAgICAg
IGNsYXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVs
ZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBuYW1l
QW5kTWF0Y2guc2Vjb25kKSk7CiAgICAgICAgIGlmIChuYW1lQW5kTWF0Y2guc2Vjb25kID09IE1h
dGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChu
YW1lQW5kTWF0Y2guZmlyc3QpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUnVsZUZlYXR1cmVT
ZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgICAgIGF1
dG8qIHNlbGVjdG9yID0gc2VsZWN0b3JBbmRNYXRjaC5maXJzdDsKICAgICAgICAgYXV0byBtYXRj
aEVsZW1lbnQgPSBzZWxlY3RvckFuZE1hdGNoLnNlY29uZDsKICAgICAgICAgYXR0cmlidXRlUnVs
ZXMuZW5zdXJlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpLCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVj
dG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQo
UnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1
bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG1hdGNoRWxlbWVudCwgc2VsZWN0b3IpKTsKICAg
ICAgICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAg
ICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2Fs
TmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwpAQCAtMjAxLDE0ICsyMDEsMTQgQEAg
dm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAg
ICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFZlY3RvcihvdGhlci51bmNvbW1vbkF0dHJp
YnV0ZVJ1bGVzKTsKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLmNsYXNzUnVs
ZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7
CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIu
dmFsdWUpOwogICAgIH0KICAgICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuY2xhc3Nl
c0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkp
OwogCiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5hdHRyaWJ1dGVSdWxlcykg
ewogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7
CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIu
dmFsdWUpOwogICAgIH0KICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuYXR0
cmlidXRlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hv
c3QuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGZhNmI5MTIwMjEzZWM1NGJiNjU5
MDNjZmFlNjY5YmQ0NjZmYmIwMjcuLjNiYmJiZmViY2EwMDk5NzgyYWYzOTgxZWI4NjczNmNlNjgw
MzZlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFJ1
bGVTZXQ6OmFkZFRvUnVsZVNldChjb25zdCBBdG9tU3RyaW5nJiBrZXksIEF0b21SdWxlTWFwJiBt
YXAsIGNvbnN0IFJ1bGVEYQogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgcnVsZXMgPSBtYXAu
YWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghcnVsZXMpCi0gICAg
ICAgIHJ1bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlRGF0YVZlY3Rvcj4oKTsKKyAgICAgICAg
cnVsZXMgPSBtYWtlVW5pcXVlPFJ1bGVEYXRhVmVjdG9yPigpOwogICAgIHJ1bGVzLT5hcHBlbmQo
cnVsZURhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgKaW5kZXggNjlhZjU1ODE1NjU0YmUzMjBmMWE5ZmQ3MWE3NzY2N2Q5MjkzZmE5Ny4uODg3NzVh
ZDdiYThhYTU5MGFkN2JmNzJhMzdkM2I1ZjY1YjVkMmQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMzQ4LDkgKzM0OCw5IEBAIGlubGluZSBMZW5n
dGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgo
Y29uc3QgTGVuZ3RoCiAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNh
bGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNz
aW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIp
OwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJl
c3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNr
ZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7
Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+
KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMu
dW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgx
MDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8
Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6
U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdU
Rk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaAppbmRleCA5YTE5MWQxN2RkOGUzZWRjYzFjMTMwYzI2NTkwZTBjYTZmNGUz
NmEzLi5jNWMyYmY1ZDBmNWZjNzkxMGFmZjE2MjU5OTkwYzQzODY2MGMxNDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC04MTMsNyArODEzLDcgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmUKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5jb2xv
ckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y29sb3IoKTsKLSAgICAg
ICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2lu
dCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5z
cGFyZW50KTsKKyAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRh
PihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29s
b3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4
dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRv
dyhXVEZNb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0
IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCkBAIC04MjksNyAr
ODI5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0
U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2wKIAogaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxl
UmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxT
aGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDog
bnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxl
UmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dE
YXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDogbnVsbHB0
cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRT
aGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAt
ODQ0LDcgKzg0NCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2CiAKIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3co
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IHN0ZDo6bWFrZV91bmlx
dWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkp
IDogbnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5
bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IG1ha2VVbmlxdWU8U2hhZG93
RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpIDogbnVsbHB0
cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJveFNo
YWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0x
MzU5LDcgKzEzNTksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAgICAgICBDU1NW
YWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwog
ICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKICAgICAgICAg
ICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0
eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAgICAgICAgICAgYXV0byBjb3VudGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCks
IGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOworICAgICAgICAgICAg
YXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5p
ZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOwog
ICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50KFdURk1vdmUoY291
bnRlciksIGRpZFNldCk7CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICB9IGVs
c2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA0Y2Y2YzZmN2Fi
N2RmOWZjMDQzMzRiYmU4ZGQwNWEzYjU1OWU5MzVjLi4xOWNiMDMzZDcwYmI1YTg5Njg2NTU3Mjc1
NWI5NmI5NzcwNTFjYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApA
QCAtMTUzMCw3ICsxNTMwLDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCiAgICAgICAgIEFTU0VSVCghbV9j
c3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSk7CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdy
YXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKKyAgICBtX2Nzc29tV3JhcHBlciA9
IG1ha2VVbmlxdWU8UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApAQCAtMTU0MCw3ICsxNTQwLDcgQEAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5
bGVEZWNsYXJhdGlvbihTdHkKICAgICAgICAgQVNTRVJUKG1fY3Nzb21XcmFwcGVyLT5wYXJlbnRF
bGVtZW50KCkgPT0gJnBhcmVudEVsZW1lbnQpOwogICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFw
cGVyOwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
Q1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMsIHBhcmVudEVsZW1lbnQpOworICAgIG1fY3Nzb21X
cmFwcGVyID0gbWFrZVVuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywgcGFy
ZW50RWxlbWVudCk7CiAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDNhNTJjMzYxOTlhNzlhMjVlMDljMDFkOGZhMGM1
MGFlZmY2ODJiYjUuLmRlNGRhNWY1NTEyOTkwOTMxZGE4NmM1YzdlODNiY2IxMDE4MDhiYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE3MTUsNyArMTcxNSw3IEBAIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQ
cm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgICAgIGlmIChhdXRob3JSb2xsYmFjaykKICAgICAg
ICAgICAgIHJldHVybiBhdXRob3JSb2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld0F1dGhvclJv
bGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdy
aXRpbmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2sobWFrZVVuaXF1ZTxD
YXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAgICAgICAv
LyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBVQSBydWxlcyBhbmQgdXNl
ciBydWxlcyBidXQgbm8gYXV0aG9yIHJ1bGVzLgogICAgICAgICBuZXdBdXRob3JSb2xsYmFjay0+
YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFS
dWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpAQCAtMTczMiw3ICsx
NzMyLDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVy
OjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAgICAgaWYgKHVzZXJSb2xsYmFj
aykKICAgICAgICAgICAgIHJldHVybiB1c2VyUm9sbGJhY2s7CiAKLSAgICAgICAgYXV0byBuZXdV
c2VyUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlv
biwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBuZXdVc2VyUm9sbGJhY2sobWFrZVVuaXF1
ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAgICAg
ICAvLyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBvbmx5IFVBIHJ1bGVz
LgogICAgICAgICBuZXdVc2VyUm9sbGJhY2stPmFkZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQs
IG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RV
QVJ1bGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5w
bCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCA5OTdjNGMwMzY3ZGQ1ZDBk
NjQ1ZDVlZGY1MWVlYzRiZmIwYzMyMTA1Li4wMmEzNmVmZTA1ZDNjYzlmZTk3ZGQ1YzBlMjU5M2Fl
NzlmZDZjMmM2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC04MTEsNyArODExLDcgQEAgc3Vi
IGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogcHJldmlvdXNDaGlsZCA9IG51bGxwdHI7
XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoYXV0byogcGFyZW50ID0g
JnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1l
KSAuICIoKTsgcGFyZW50ICYmIHBhcmVudC0+IiAuICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBhcmVu
dCA9IHBhcmVudC0+bmV4dCgpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
IiAgICBpZiAoIWNoaWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAg
ICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4o
IiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQobWFrZVVuaXF1ZTxG
aWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5l
eHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIH1cbiI7CiAgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGNoaWxkLT4iIC4gJHNldHRlciAuICIocGFy
ZW50LT4iIC4gJGdldHRlciAuICIoKSk7XG4iOwpAQCAtODM3LDcgKzgzNyw3IEBAIHN1YiBnZW5l
cmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gIiAgICAvLyBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIs
IGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVkLlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBpZiAo
IWNoaWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAg
IHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBn
ZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZp
bGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQt
Pm5leHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICB9XG4i
OwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZU1hcCgpLT4iIC4gZ2V0RmlsbExheWVyTWFwZnVuY3Rpb24oJG5hbWUpIC4gIigiIC4gJENT
U1Byb3BlcnR5SWQgLiAiLCAqY2hpbGQsIGl0ZW0pO1xuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCmluZGV4IDY3Y2ZkZjU2ZDYyNTA1M2EwMTExOTkyZDcx
MWY4YzhmZmRiOTVkYzIuLmQ3NWU0ZmM5MmM3N2IwN2IxZTUzZGFkMzM4N2U1NTFhMzkwYzI1Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNzcs
NyArNzcsNyBAQCBDU1NQYXJzZXJJbXBsOjpDU1NQYXJzZXJJbXBsKGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc3RyaQogICAgICwgbV9zdHlsZVNoZWV0KHN0
eWxlU2hlZXQpCiAgICAgLCBtX29ic2VydmVyV3JhcHBlcih3cmFwcGVyKQogewotICAgIG1fdG9r
ZW5pemVyID0gd3JhcHBlciA/IHN0ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcs
ICp3cmFwcGVyKSA6IHN0ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOworICAg
IG1fdG9rZW5pemVyID0gd3JhcHBlciA/IG1ha2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcs
ICp3cmFwcGVyKSA6IG1ha2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOwogICAgIGlmIChj
b250ZXh0LmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCAmJiAhd3JhcHBlciAmJiBzdHlsZVNoZWV0
ICYmIHJ1bGVQYXJzaW5nID09IENTU1BhcnNlcjo6UnVsZVBhcnNpbmc6OkRlZmVycmVkKQogICAg
ICAgICBtX2RlZmVycmVkUGFyc2VyID0gQ1NTRGVmZXJyZWRQYXJzZXI6OmNyZWF0ZShjb250ZXh0
LCBzdHJpbmcsICpzdHlsZVNoZWV0KTsKIH0KQEAgLTI4Miw5ICsyODIsOSBAQCBDU1NTZWxlY3Rv
ckxpc3QgQ1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSByYW5nZSwgU3R5bAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBz
ZWxlY3RvcjsKICAgICBpZiAoIXR5cGVTZWxlY3Rvci5pc051bGwoKSAmJiBwc2V1ZG8uaXNOdWxs
KCkpCi0gICAgICAgIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rv
cj4oUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRl
ZmF1bHROYW1lc3BhY2UoKSkpOworICAgICAgICBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHls
ZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBzZWxl
Y3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIGlmICghcHNl
dWRvLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBzZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4oQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVj
dG9yKHBzZXVkbykpOwogICAgICAgICAgICAgaWYgKCFzZWxlY3RvciB8fCBzZWxlY3Rvci0+bWF0
Y2goKSAhPSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKQpAQCAtNTM1LDcgKzUzNSw3IEBA
IFJlZlB0cjxTdHlsZVJ1bGVOYW1lc3BhY2U+IENTU1BhcnNlckltcGw6OmNvbnN1bWVOYW1lc3Bh
Y2VSdWxlKENTU1BhcnNlclRva2VuUmFuCiBSZWZQdHI8U3R5bGVSdWxlTWVkaWE+IENTU1BhcnNl
ckltcGw6OmNvbnN1bWVNZWRpYVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQ
YXJzZXJUb2tlblJhbmdlIGJsb2NrKQogewogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAg
ICAgICByZXR1cm4gU3R5bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJz
ZU1lZGlhUXVlcnlTZXQocHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0
KSkucmVsZWFzZU5vbk51bGwoKSwgIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3Vw
UnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5
bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQo
cHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0KSkucmVsZWFzZU5vbk51
bGwoKSwgIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9k
ZWZlcnJlZFBhcnNlcikpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gcnVs
ZXM7CiAKQEAgLTU2Myw3ICs1NjMsNyBAQCBSZWZQdHI8U3R5bGVSdWxlU3VwcG9ydHM+IENTU1Bh
cnNlckltcGw6OmNvbnN1bWVTdXBwb3J0c1J1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3IsIGludmFsaWQgQHN1cHBvcnRzIGNvbmRp
dGlvbgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1
bGVTdXBwb3J0czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCks
IHN1cHBvcnRlZCwgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4o
YmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVTdXBw
b3J0czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1cHBv
cnRlZCwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2Rl
ZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAgICAg
bV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6
U3VwcG9ydHMsIG1fb2JzZXJ2ZXJXcmFwcGVyLT5zdGFydE9mZnNldChwcmVsdWRlKSk7CkBAIC02
MzUsNyArNjM1LDcgQEAgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gQ1NTUGFyc2VySW1wbDo6
Y29uc3VtZUtleWZyYW1lc1J1bGUoYm9vbCB3ZWJraXRQcmVmaXgKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7IC8vIFBhcnNlIGVycm9yOyBleHBlY3RlZCBpZGVudCB0b2tlbiBpbiBAa2V5ZnJhbWVz
IGhlYWRlcgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHls
ZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5
bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0
dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUsIG1ha2VVbmlxdWU8RGVmZXJyZWRT
dHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgaWYg
KG1fb2JzZXJ2ZXJXcmFwcGVyKSB7CiAgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZl
cigpLnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OktleWZyYW1lcywgbV9vYnNlcnZlcldyYXBw
ZXItPnN0YXJ0T2Zmc2V0KHJhbmdlQ29weSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcAppbmRleCA0ZGJlZjQwNThjNzE2MmNkOTY0NmVhNzY0
ZGNiYjliYmNmMzFlNDU5Li5hMDg3MGQzNzYyY2VhNDJmNWI1ZWFiZDA1ZWE3NDRmMmQ5ZDZiMzVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENT
U1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3RvcihTdAogICAgIGVsc2UKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1
ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0
Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcyk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0
b3ItPnNldFBhZ2VQc2V1ZG9UeXBlKHBzZXVkb1R5cGUpOwogICAgIHJldHVybiBzZWxlY3RvcjsK
QEAgLTYzLDcgKzYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQ
YXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVl
PENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRj
aChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUpOwogICAgIEF0b21TdHJpbmcgbmFtZTsK
QEAgLTg0LDEzICs4NCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENT
U1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IoUwogewogICAgIGF1dG8g
cHNldWRvVHlwZSA9IHBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFN0cmlu
Zyhwc2V1ZG9UeXBlU3RyaW5nKTsKICAgICBpZiAocHNldWRvVHlwZS5wc2V1ZG9DbGFzcyAhPSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBhdXRvIHNl
bGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0
b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CiAgICAg
ICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9DbGFzc1R5cGUocHNldWRvVHlwZS5w
c2V1ZG9DbGFzcyk7CiAgICAgICAgIHJldHVybiBzZWxlY3RvcjsKICAgICB9CiAgICAgaWYgKHBz
ZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBzZXVkb0VsZW1lbnQgIT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnRVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVu
aXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKICAgICAgICAgc2VsZWN0b3It
Pm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0
eVBzZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0VmFsdWUo
cHNldWRvVHlwZVN0cmluZy5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKQEAgLTEwMCwxMiAr
MTAwLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2Vs
ZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3RvcihTCiB9CiAKIENTU1BhcnNlclNlbGVjdG9y
OjpDU1NQYXJzZXJTZWxlY3RvcigpCi0gICAgOiBtX3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8
Q1NTU2VsZWN0b3I+KCkpCisgICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+
KCkpCiB7CiB9CiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcihjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdRTmFtZSkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1
ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUpKQorICAgIDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENT
U1NlbGVjdG9yPih0YWdRTmFtZSkpCiB7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBDU1NQYXJz
ZXJTZWxlY3Rvcjo6fkNTU1BhcnNlclNlbGVjdG9yKCkKIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rv
cjo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNl
bGVjdG9yPj4mJiBzZWxlY3RvclZlY3RvcikKIHsKLSAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rv
ckxpc3Qoc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0b3JW
ZWN0b3IpKSk7CisgICAgbV9zZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0KG1ha2VVbmlxdWU8Q1NT
U2VsZWN0b3JMaXN0PihXVEZNb3ZlKHNlbGVjdG9yVmVjdG9yKSkpOwogfQogCiB2b2lkIENTU1Bh
cnNlclNlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
QXRvbVN0cmluZz4+IGFyZ3VtZW50TGlzdCkKQEAgLTIwOSwxMiArMjA5LDEyIEBAIHZvaWQgQ1NT
UGFyc2VyU2VsZWN0b3I6OmFwcGVuZFRhZ0hpc3RvcnkoQ1NTUGFyc2VyU2VsZWN0b3JDb21iaW5h
dG9yIHJlbGF0aW9uLCBzCiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxl
Y3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVzcGFj
ZVJ1bGUpCiB7Ci0gICAgYXV0byBzZWNvbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOworICAgIGF1dG8gc2Vjb25kID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rv
cj4oKTsKICAgICBzZWNvbmQtPm1fc2VsZWN0b3IgPSBXVEZNb3ZlKG1fc2VsZWN0b3IpOwogICAg
IHNlY29uZC0+bV90YWdIaXN0b3J5ID0gV1RGTW92ZShtX3RhZ0hpc3RvcnkpOwogICAgIG1fdGFn
SGlzdG9yeSA9IFdURk1vdmUoc2Vjb25kKTsKIAotICAgIG1fc2VsZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKKyAg
ICBtX3NlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lzRm9y
TmFtZXNwYWNlUnVsZSk7CiAgICAgbV9zZWxlY3Rvci0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6
OlN1YnNlbGVjdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcAppbmRleCA0ODhlNjAyM2YyMDAyNGFmZmVmODYxN2E1MTRjNDA5YmY0
OWQxZWYzLi43MDhlYzc3NzNjMThkNmUwOGUwMDFjYWZhM2QyOGM4MGQ5Zjg3MmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMjQz
NSw3ICsyNDM1LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlUGF0aD4gY29uc3VtZUJh
c2ljU2hhcGVQYXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MKICAgICBpZiAoYXJncy5wZWVr
KCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
LSAgICBhdXRvIGJ5dGVTdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFt
PigpOworICAgIGF1dG8gYnl0ZVN0cmVhbSA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+
KCk7CiAgICAgaWYgKCFidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhhcmdzLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCAqYnl0ZVN0cmVhbSwg
VW5hbHRlcmVkUGFyc2luZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAppbmRleCA2YjNh
Y2M4NWU2ZmM1ZTVjYmI5NWFiOWZlMWE2YzdjYTllZjgxMDQ3Li5mMzMyM2IyMjZiNGIwMTAwYzk4
M2M0ODY2Mzc1ZjFlNjU3YjE3Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVQc2V1ZG8oQ1NT
UGFyc2VyVG9rCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NMYW5nOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQ1NTIFNlbGVjdG9ycyBMZXZlbCA0IGFs
bG93cyA6bGFuZygqLWZvbykKLSAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+KCk7CisgICAgICAgICAgICBhdXRvIGFyZ3Vt
ZW50TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPEF0b21TdHJpbmc+PigpOwogICAgICAgICAgICAg
aWYgKCFjb25zdW1lTGFuZ0FyZ3VtZW50TGlzdChhcmd1bWVudExpc3QsIGJsb2NrKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRMYW5n
QXJndW1lbnRMaXN0KFdURk1vdmUoYXJndW1lbnRMaXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCA5ZWI1ZDdlNDlmNTZh
MWU5OGQxZmJiOWIyM2U2ZWE3MmUyMjYxNThmLi44ODExN2YxOWU0YjI2YmEyNWJmZjI1YTg1NTkx
NzMyYmI3YTNlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBDdXN0b21FbGVtZW50UmVhY3Rp
b25RdWV1ZTo6RWxlbWVudFF1ZXVlJiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5zdXJl
QmFjawogewogICAgIGlmICghc19wcm9jZXNzaW5nQmFja3VwRWxlbWVudFF1ZXVlKSB7CiAgICAg
ICAgIHNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRRdWV1ZSA9IHRydWU7Ci0gICAgICAgIE1pY3Jv
dGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYWNr
dXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOworICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFp
blRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8QmFja3VwRWxlbWVudFF1ZXVlTWljcm90
YXNrPigpKTsKICAgICB9CiAgICAgcmV0dXJuIGJhY2t1cEVsZW1lbnRRdWV1ZSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBlNzkzZjIwZDkzMWJmODRjODVmYWI5YWQy
NGY4M2ZlOGE0OGEyZjFkLi5kM2FmNzBmYjhiYTMzNmJmYTYxOGJmOWMxMjU2YjEwN2Q5ZDI1YWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIHZv
aWQgRGF0YVRyYW5zZmVyOjpkaWRBZGRGaWxlVG9JdGVtTGlzdCgpCiBEYXRhVHJhbnNmZXJJdGVt
TGlzdCYgRGF0YVRyYW5zZmVyOjppdGVtcygpCiB7CiAgICAgaWYgKCFtX2l0ZW1MaXN0KQotICAg
ICAgICBtX2l0ZW1MaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlzdD4o
KnRoaXMpOworICAgICAgICBtX2l0ZW1MaXN0ID0gbWFrZVVuaXF1ZTxEYXRhVHJhbnNmZXJJdGVt
TGlzdD4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtNDE2LDcgKzQx
Niw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZl
bnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29u
c3QgU3RyaW5nJiBodG1sVGV4dCkKIHsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0
ZXh0L3BsYWluIl9zLCBwbGFpblRleHQpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0
ZXh0L2h0bWwiX3MsIGh0bWxUZXh0KTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJh
bnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCks
IFR5cGU6OklucHV0RXZlbnQpKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBSZWY8RGF0YVRyYW5zZmVy
PiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQog
CiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFk
b3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwg
c3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERh
dGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJv
YXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3Jp
Z2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7
CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIERh
dGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkK
ICAgICBtX2RyYWdJbWFnZSA9IGltYWdlOwogICAgIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAg
ICBpZiAoIW1fZHJhZ0ltYWdlTG9hZGVyKQotICAgICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERyYWdJbWFnZUxvYWRlcj4odGhpcyk7CisgICAgICAgICAgICBt
X2RyYWdJbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKICAg
ICAgICAgbV9kcmFnSW1hZ2VMb2FkZXItPnN0YXJ0TG9hZGluZyhtX2RyYWdJbWFnZSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IDMzNjIyMzEwODFiMTNmNzJkYzE4ZGFjNWYzOTA3YTVlN2MxN2IwYmYuLmYy
MTEzMWZmODI3ODIxZGM3NGU4NTBhOThmMWJiMjMwOTllMDI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDAsNyAr
MTAwLDcgQEAgYm9vbCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQoUGFn
ZSogcGFnZSkKIAogdm9pZCBwcm92aWRlRGV2aWNlT3JpZW50YXRpb25UbyhQYWdlJiBwYWdlLCBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewotICAgIERldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6
OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyPihjbGllbnQpKTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnByb3Zp
ZGVUbygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgp
LCBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGUyYjE0
NGQ1NjdkNzk2NjJlOThmNzRiYzUxZTkyNDExNmNjNmQ1NmYuLmViMGI5NzQ1NTVhZDI1MzkyZTgw
NjY1YTZjZDExNTE5MjZmZTdmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTIxLDE5
ICs1MjEsMTkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fcXVpcmtzKG1ha2VV
bmlxdWVSZWY8UXVpcmtzPigqdGhpcykpCiAgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKG1f
ZnJhbWUgPyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+KG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpIDogQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShudWxscHRyKSkKICAgICAsIG1fZG9tVHJlZVZlcnNpb24oKytzX2ds
b2JhbFRyZWVWZXJzaW9uKQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5
bGU6OlNjb3BlPigqdGhpcykpCi0gICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRzKHN0ZDo6bWFr
ZV91bmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVldHM+KCp0aGlzKSkKLSAgICAsIG1fdmlzaXRlZExp
bmtTdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFZpc2l0ZWRMaW5rU3RhdGU+KCp0aGlzKSkKLSAgICAs
IG1fbWFya2VycyhzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50TWFya2VyQ29udHJvbGxlcj4oKnRo
aXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykp
CisgICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRzKG1ha2VVbmlxdWU8RXh0ZW5zaW9uU3R5bGVT
aGVldHM+KCp0aGlzKSkKKyAgICAsIG1fdmlzaXRlZExpbmtTdGF0ZShtYWtlVW5pcXVlPFZpc2l0
ZWRMaW5rU3RhdGU+KCp0aGlzKSkKKyAgICAsIG1fbWFya2VycyhtYWtlVW5pcXVlPERvY3VtZW50
TWFya2VyQ29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV9zdHlsZVJlY2FsY1RpbWVyKFt0aGlz
XSB7IHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsgfSkKICAgICAsIG1fZG9jdW1lbnRDcmVhdGlvblRp
bWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQotICAgICwgbV9tb2R1bGVMb2FkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVu
bmVyKG1ha2VVbmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCisgICAgLCBtX21vZHVsZUxvYWRl
cihtYWtlVW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShYU0xU
KQogICAgICwgbV9hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXIoKnRoaXMsICZEb2N1bWVu
dDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1f
eG1sVmVyc2lvbigiMS4wIl9zKQotICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQorICAgICwgbV9jb25zdGFudFBy
b3BlcnR5TWFwKG1ha2VVbmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwg
bV9kb2N1bWVudENsYXNzZXMoZG9jdW1lbnRDbGFzc2VzKQogICAgICwgbV9ldmVudFF1ZXVlKCp0
aGlzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTU0NSwxMCArNTQ1LDEwIEBAIERv
Y3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBk
b2N1bWVudENsYXNzZXMsIHVuc2lnCiAjZW5kaWYKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1l
cigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAsIG1fZGV2
aWNlTW90aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigp
KQotICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNl
TW90aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlTW90aW9uQ2xpZW50KSkKLSAgICAsIG1fZGV2aWNl
T3JpZW50YXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dElPUz4oKSkKLSAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNs
aWVudCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNsaWVudChtYWtlVW5pcXVlPERldmljZU1vdGlv
bkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihtYWtlVW5pcXVl
PERldmljZU1vdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU1vdGlvbkNsaWVudCkpCisgICAgLCBt
X2RldmljZU9yaWVudGF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGll
bnRJT1M+KCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihtYWtlVW5pcXVl
PERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQp
KQogI2VuZGlmCiAgICAgLCBtX3BlbmRpbmdUYXNrc1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnBl
bmRpbmdUYXNrc1RpbWVyRmlyZWQpCiAgICAgLCBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRp
bWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnZpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQp
CkBAIC03NTgsNyArNzU4LDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRGb3JBY2Nlc3NL
ZXkoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHZvaWQgRG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2Fj
aGUoKQogewotICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8
U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsKKyAg
ICBtX2FjY2Vzc0tleUNhY2hlID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVudCos
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0aGlzXSB7CiAgICAgICAgIEhhc2hNYXA8U3Ry
aW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7CiAgICAgICAgIGZv
ciAoYXV0byYgbm9kZSA6IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCp0aGlzKSkgewogICAgICAg
ICAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKQEAgLTc4Myw3ICs3ODMsNyBAQCBFeGNlcHRp
b25PcjxTZWxlY3RvclF1ZXJ5Jj4gRG9jdW1lbnQ6OnNlbGVjdG9yUXVlcnlGb3JTdHJpbmcoY29u
c3QgU3RyaW5nJiBzZWxlYwogICAgIGlmIChzZWxlY3RvclN0cmluZy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogICAgIGlmICghbV9zZWxlY3Rv
clF1ZXJ5Q2FjaGUpCi0gICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7CisgICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hl
ID0gbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7CiAgICAgcmV0dXJuIG1fc2VsZWN0
b3JRdWVyeUNhY2hlLT5hZGQoc2VsZWN0b3JTdHJpbmcsICp0aGlzKTsKIH0KIApAQCAtODQ4LDcg
Kzg0OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKCkKIERPTUltcGxl
bWVudGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQogewogICAgIGlmICghbV9pbXBs
ZW1lbnRhdGlvbikKLSAgICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
RE9NSW1wbGVtZW50YXRpb24+KCp0aGlzKTsKKyAgICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IG1h
a2VVbmlxdWU8RE9NSW1wbGVtZW50YXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1wbGVt
ZW50YXRpb247CiB9CiAKQEAgLTE3NjMsNyArMTc2Myw3IEBAIE5vZGU6Ok5vZGVUeXBlIERvY3Vt
ZW50Ojpub2RlVHlwZSgpIGNvbnN0CiBGb3JtQ29udHJvbGxlciYgRG9jdW1lbnQ6OmZvcm1Db250
cm9sbGVyKCkKIHsKICAgICBpZiAoIW1fZm9ybUNvbnRyb2xsZXIpCi0gICAgICAgIG1fZm9ybUNv
bnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1Db250cm9sbGVyPigpOworICAgICAgICBt
X2Zvcm1Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxGb3JtQ29udHJvbGxlcj4oKTsKICAgICByZXR1
cm4gKm1fZm9ybUNvbnRyb2xsZXI7CiB9CiAKQEAgLTE5ODgsNyArMTk4OCw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXRPZlJl
cGxhY2VkVGV4dCwgdW5zCiAgICAgQVNTRVJUKCFtX2luUmVuZGVyVHJlZVVwZGF0ZSk7CiAgICAg
U2V0Rm9yU2NvcGU8Ym9vbD4gaW5SZW5kZXJUcmVlVXBkYXRlKG1faW5SZW5kZXJUcmVlVXBkYXRl
LCB0cnVlKTsKIAotICAgIGF1dG8gdGV4dFVwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6
OlVwZGF0ZT4oKnRoaXMpOworICAgIGF1dG8gdGV4dFVwZGF0ZSA9IG1ha2VVbmlxdWU8U3R5bGU6
OlVwZGF0ZT4oKnRoaXMpOwogICAgIHRleHRVcGRhdGUtPmFkZFRleHQodGV4dCwgeyBvZmZzZXRP
ZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQsIFdURjo6bnVsbG9wdCB9KTsKIAog
ICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRyZWVVcGRhdGVyKCp0aGlzKTsKQEAgLTIyNzAs
NyArMjI3MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGlu
dCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiBTdHlsZVJlc29sdmVyJiBEb2N1
bWVudDo6dXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKQogewogICAgIGlmICghbV91
c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcikKLSAgICAgICAgbV91c2VyQWdlbnRTaGFk
b3dUcmVlU3R5bGVSZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRo
aXMpOworICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gbWFrZVVu
aXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJBZ2VudFNoYWRv
d1RyZWVTdHlsZVJlc29sdmVyOwogfQogCkBAIC0yNjczLDcgKzI2NzMsNyBAQCBBWE9iamVjdENh
Y2hlKiBEb2N1bWVudDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAKICAgICBBU1NFUlQoJnRvcERv
Y3VtZW50ID09IHRoaXMgfHwgIW1fYXhPYmplY3RDYWNoZSk7CiAgICAgaWYgKCF0b3BEb2N1bWVu
dC5tX2F4T2JqZWN0Q2FjaGUpIHsKLSAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hl
ID0gc3RkOjptYWtlX3VuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CisgICAgICAg
IHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSA9IG1ha2VVbmlxdWU8QVhPYmplY3RDYWNoZT4o
dG9wRG9jdW1lbnQpOwogICAgICAgICBoYXNFdmVyQ3JlYXRlZEFuQVhPYmplY3RDYWNoZSA9IHRy
dWU7CiAgICAgfQogICAgIHJldHVybiB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUuZ2V0KCk7
CkBAIC0zMDM3LDcgKzMwMzcsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRQYXJzaW5nKGJvb2wgYikK
ICAgICBtX2JQYXJzaW5nID0gYjsKIAogICAgIGlmIChtX2JQYXJzaW5nICYmICFtX3NoYXJlZE9i
amVjdFBvb2wpCi0gICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IHN0ZDo6bWFrZV91bmlxdWU8
RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sPigpOworICAgICAgICBtX3NoYXJlZE9iamVjdFBvb2wg
PSBtYWtlVW5pcXVlPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4oKTsKIAogICAgIGlmICghbV9i
UGFyc2luZyAmJiB2aWV3KCkgJiYgIXZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmll
dygpLT5maXJlTGF5b3V0UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwpAQCAtNTU2Nyw3ICs1
NTY3LDcgQEAgY29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBEb2N1bWVudDo6c3ZnRXh0ZW5z
aW9ucygpCiBTVkdEb2N1bWVudEV4dGVuc2lvbnMmIERvY3VtZW50OjphY2Nlc3NTVkdFeHRlbnNp
b25zKCkKIHsKICAgICBpZiAoIW1fc3ZnRXh0ZW5zaW9ucykKLSAgICAgICAgbV9zdmdFeHRlbnNp
b25zID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsKKyAg
ICAgICAgbV9zdmdFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3ZnRXh0ZW5zaW9uczsKIH0KIApAQCAtNTc3Miw3ICs1
NzcyLDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8v
IFRoaXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVu
dCgpLgogICAgICAgICBzZXRDb29raWVVUkwoVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSkpOwogICAg
ICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRl
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkpOwotICAgICAgICBzZXRDb250ZW50U2Vj
dXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7
IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOworICAgICAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwgZW1w
dHlTdHJpbmcoKSB9LCAqdGhpcykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01Nzkx
LDcgKzU3OTEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAg
ICAgaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA9IGRvY3VtZW50TG9hZGVyICYmIGRvY3VtZW50TG9h
ZGVyLT5yZXNwb25zZSgpLnRhaW50aW5nKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6
Ok9wYXF1ZTsKIAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9s
aWN5OjpjcmVhdGUoaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVVbmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKSk7Ci0gICAgc2V0Q29u
dGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeSht
YWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsK
IAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1fZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAgICAgaWYg
KCFvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5pc051bGwoKSkKQEAgLTYwMjksNyArNjAy
OSw3IEBAIFN0cmluZyBEb2N1bWVudDo6bmFtZUZvckNTU0NhbnZhc0VsZW1lbnQoY29uc3QgSFRN
TENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQpCiBUZXh0QXV0b1NpemluZyYgRG9jdW1lbnQ6
OnRleHRBdXRvU2l6aW5nKCkKIHsKICAgICBpZiAoIW1fdGV4dEF1dG9TaXppbmcpCi0gICAgICAg
IG1fdGV4dEF1dG9TaXppbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwor
ICAgICAgICBtX3RleHRBdXRvU2l6aW5nID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZz4oKTsK
ICAgICByZXR1cm4gKm1fdGV4dEF1dG9TaXppbmc7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKQEAgLTYzOTYsNyArNjM5Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OndoZWVsRXZl
bnRIYW5kbGVyc0NoYW5nZWQoKQogdm9pZCBEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRs
ZXIoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIW1fd2hlZWxFdmVudFRhcmdldHMpCi0gICAgICAg
IG1fd2hlZWxFdmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50VGFyZ2V0U2V0Pigp
OworICAgICAgICBtX3doZWVsRXZlbnRUYXJnZXRzID0gbWFrZVVuaXF1ZTxFdmVudFRhcmdldFNl
dD4oKTsKIAogICAgIG1fd2hlZWxFdmVudFRhcmdldHMtPmFkZCgmbm9kZSk7CiAKQEAgLTY0NTYs
NyArNjQ1Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKE5vZGUm
IGhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoIW1fdG91Y2hF
dmVudFRhcmdldHMpCi0gICAgICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEV2ZW50VGFyZ2V0U2V0PigpOworICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gbWFr
ZVVuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKIAogICAgIG1fdG91Y2hFdmVudFRhcmdldHMtPmFk
ZCgmaGFuZGxlcik7CiAKQEAgLTgwNDQsNyArODA0NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExv
Z01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWws
IFZlCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBt
ZXNzYWdlTGV2ZWxGcm9tV1RGTG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyks
IG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgpKSk7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxk
RXhlY1N0YXRlKGZyYW1lKCkpKTsKIAogICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3Zl
KG1lc3NhZ2UpKTsKICAgICB9KTsKQEAgLTgwNzksNyArODA3OSw3IEBAIFN0cmluZyBEb2N1bWVu
dDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRl
eCwgY29uc3QKIAogYm9vbCBEb2N1bWVudDo6cmVnaXN0ZXJDU1NQcm9wZXJ0eShDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkmJiBwcm9wKQogewotICAgIHJldHVybiBtX0NTU1JlZ2lzdGVyZWRQ
cm9wZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9wKSkpLmlzTmV3RW50cnk7CisgICAgcmV0dXJuIG1f
Q1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIG1ha2VVbmlxdWU8Q1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3ApKSkuaXNOZXdFbnRyeTsKIH0KIAog
dm9pZCBEb2N1bWVudDo6ZGV0YWNoRnJvbUZyYW1lKCkKQEAgLTgxNzMsNyArODE3Myw3IEBAIERl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciYgRG9jdW1lbnQ6OmRldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uCiAgICAgICAgIHJldHVybiB0b3BEb2N1bWVudCgpLmRldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcigpOwogCiAgICAgaWYgKCFtX2Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcikKLSAgICAgICAgbV9kZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcj4oKnRoaXMpOworICAg
ICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciA9IG1ha2VV
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxl
cjsKIH0KIApAQCAtODIwNCw3ICs4MjA0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPFBhaW50V28KIENv
bnRlbnRDaGFuZ2VPYnNlcnZlciYgRG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpCiB7
CiAgICAgaWYgKCFtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9jb250ZW50Q2hh
bmdlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRo
aXMpOworICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IG1ha2VVbmlxdWU8Q29udGVu
dENoYW5nZU9ic2VydmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRlbnRDaGFuZ2VPYnNl
cnZlcjsgCiB9CiAKQEAgLTgyMTIsNyArODIxMiw3IEBAIERPTVRpbWVySG9sZGluZ1RhbmsmIERv
Y3VtZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKCkKIHsKICAgICBpZiAobV9kb21UaW1lckhvbGRp
bmdUYW5rKQogICAgICAgICByZXR1cm4gKm1fZG9tVGltZXJIb2xkaW5nVGFuazsKLSAgICBtX2Rv
bVRpbWVySG9sZGluZ1RhbmsgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+
KCk7CisgICAgbV9kb21UaW1lckhvbGRpbmdUYW5rID0gbWFrZVVuaXF1ZTxET01UaW1lckhvbGRp
bmdUYW5rPigpOwogICAgIHJldHVybiAqbV9kb21UaW1lckhvbGRpbmdUYW5rOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDBmNTM4YmZhMDVkYmNlZjNlOGE2ZjhlNjZjOTgwZmQzZDk3Y2Vl
OTYuLmFiNTgwNDI1NDhjZTZhNDRmNjU4NGNmOTIwYjcxOTBlYWRkNTI5MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMjg0LDcgKzEyODQsNyBAQCBjbGFzcyBEb2N1bWVudAogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4gY3JlYXRlUGFyc2VyWWllbGRU
b2tlbigpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFBh
cnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RG9jdW1l
bnRQYXJzZXJZaWVsZFRva2VuPigqdGhpcyk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNBY3RpdmVQ
YXJzZXJZaWVsZFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXJZaWVsZFRva2VuQ291bnQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggMDFjN2Y5
NmUwMmU5ZWJkNTg4NTNmYjVkYjFjNGI4ODIxZTJmOTcyOC4uMDM3MDNiNjJiYzY1MDU1NzhiMzg5
Yjk5OTM4YTRkYWFiNmQ3NmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRR
dWV1ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgRG9jdW1lbnRFdmVudFF1ZXVlOjpUaW1l
ciBmaW5hbCA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKIAogRG9jdW1lbnRFdmVudFF1ZXVl
OjpEb2N1bWVudEV2ZW50UXVldWUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVu
dChkb2N1bWVudCkKLSAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIoc3RkOjptYWtlX3VuaXF1ZTxU
aW1lcj4oKnRoaXMpKQorICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcihtYWtlVW5pcXVlPFRpbWVy
PigqdGhpcykpCiAgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQogewogICAgIG1fcGVuZGluZ0V2ZW50
VGltZXItPnN1c3BlbmRJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCA3MjkxZDRhZGVlOWY0MTc3ZmRiZmVmZWVmZGRm
MjY3MDU0YTljNGYwLi5lNzY0MWFmNjIxOGJmMTNhYjBlM2M2ODkyMDIwZGU4ODljNGU5MDZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApA
QCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJr
ZXIoTm9kZSYgbm9kZSwgY29uc3QgRG9jdW1lbnRNYXJrZXImIG5ld01hCiAgICAgc3RkOjp1bmlx
dWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZCgmbm9kZSwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogCiAgICAgaWYgKCFsaXN0KSB7Ci0gICAgICAgIGxpc3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPE1hcmtlckxpc3Q+KCk7CisgICAgICAgIGxpc3QgPSBtYWtlVW5pcXVlPE1h
cmtlckxpc3Q+KCk7CiAgICAgICAgIGxpc3QtPmFwcGVuZChSZW5kZXJlZERvY3VtZW50TWFya2Vy
KG5ld01hcmtlcikpOwogICAgIH0gZWxzZSBpZiAoc2hvdWxkSW5zZXJ0QXNTZXBhcmF0ZU1hcmtl
cihuZXdNYXJrZXIpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG1lcmdlIGRpY3RhdGlvbiBtYXJr
ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRl
eCA4MWVmYjEwZDVlNzZlZGI2ZjZkMzgzNTMwMDUxZDI5YzM4OGVhZmRiLi44NTVhMmEwNjU2Zjcx
YjQ1ZWU4ZDRmZmYyODRhNTM1Mzc5YTM4Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtNDgsNyArNDgsNyBAQCBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MqIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50U3RvcmFnZUFjY2Vz
cyo+KFN1cHBsZW1lbnQ8RG9jdW1lbnQ+Ojpmcm9tKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUo
KSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vzcz4oZG9jdW1lbnQpOworICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vz
cz4oZG9jdW1lbnQpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsK
ICAgICAgICAgcHJvdmlkZVRvKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShu
ZXdTdXBwbGVtZW50KSk7CiAgICAgfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgRG9jdW1lbnRT
dG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiAgICAgICAgIGJvb2wgc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSA9IHdhc0dy
YW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyB8fCBwcm9tcHRXYXNTaG93biA9
PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOwogCiAgICAgICAgIGlmIChzaG91bGRQ
cmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRo
cmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3Vt
ZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgeworICAgICAgICAgICAg
TWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRN
aWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgp
IHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5j
ZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmVuYWJsZVRlbXBvcmFyeVRp
bWVVc2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgfSkpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHZv
aWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hvdWxkUHJl
c2VydmVVc2VyR2VzdHVyZSkgewotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVu
dFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRSZWZlcmVuY2UpXSAoKSB7CisgICAgICAgICAg
ICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9p
ZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5j
ZSldICgpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJl
ZmVyZW5jZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmNvbnN1bWVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsKQEAgLTIwOSw3ICsyMDks
NyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vz
czo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKIHsKLSAgICBtX3RlbXBvcmFyeVVz
ZXJHZXN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CisgICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVy
ZSA9IG1ha2VVbmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgJm1fZG9jdW1lbnQpOwogfQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6Y29uc3Vt
ZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNDUx
NjFjOWNhMjBiYWQ2OTMzMDA1MWQwOWE1NWYwYWZhNTU4NmNjNi4uZWViMWYzNDI5ZDY0ZWZjNGRi
MGIxMzBkMTM3ZjMxNmUzNTBkMGQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDc3LDcg
KzQ3Nyw3IEBAIE5hbWVkTm9kZU1hcCYgRWxlbWVudDo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAg
aWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gcmFyZURhdGEuYXR0cmlidXRlTWFwKCkp
CiAgICAgICAgIHJldHVybiAqYXR0cmlidXRlTWFwOwogCi0gICAgcmFyZURhdGEuc2V0QXR0cmli
dXRlTWFwKHN0ZDo6bWFrZV91bmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVsZW1lbnQm
PigqdGhpcykpKTsKKyAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAobWFrZVVuaXF1ZTxOYW1l
ZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOwogICAgIHJldHVybiAqcmFy
ZURhdGEuYXR0cmlidXRlTWFwKCk7CiB9CiAKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgRWxl
bWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudChKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Um
IGVsZW1lbnRJbnRlcmZhCiAgICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwogICAgIGF1dG8m
IGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUoKSkKLSAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rp
b25RdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVt
ZW50SW50ZXJmYWNlKSk7CisgICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUobWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFj
ZSkpOwogICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CkBAIC0y
MzQ0LDcgKzIzNDQsNyBAQCB2b2lkIEVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUoSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYWNlKQogICAgIGF1dG8mIGRhdGEgPSBlbnN1
cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBib29sIGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUg
PSBkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCk7CiAgICAgaWYgKCFhbHJlYWR5U2No
ZWR1bGVkVG9VcGdyYWRlKQotICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJ
bnRlcmZhY2UpKTsKKyAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSht
YWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7
CiAgICAgZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpLT5lbnF1ZXVlRWxlbWVudFVw
Z3JhZGUoKnRoaXMsIGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpOwogfQogCkBAIC0zNDgwLDcg
KzM0ODAsNyBAQCBET01Ub2tlbkxpc3QmIEVsZW1lbnQ6OmNsYXNzTGlzdCgpCiB7CiAgICAgRWxl
bWVudFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFk
YXRhLmNsYXNzTGlzdCgpKQotICAgICAgICBkYXRhLnNldENsYXNzTGlzdChzdGQ6Om1ha2VfdW5p
cXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CisgICAgICAg
IGRhdGEuc2V0Q2xhc3NMaXN0KG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5h
bWVzOjpjbGFzc0F0dHIpKTsKICAgICByZXR1cm4gKmRhdGEuY2xhc3NMaXN0KCk7CiB9CiAKQEAg
LTM0ODgsNyArMzQ4OCw3IEBAIERhdGFzZXRET01TdHJpbmdNYXAmIEVsZW1lbnQ6OmRhdGFzZXQo
KQogewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgp
OwogICAgIGlmICghZGF0YS5kYXRhc2V0KCkpCi0gICAgICAgIGRhdGEuc2V0RGF0YXNldChzdGQ6
Om1ha2VfdW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CisgICAgICAgIGRhdGEu
c2V0RGF0YXNldChtYWtlVW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CiAgICAg
cmV0dXJuICpkYXRhLmRhdGFzZXQoKTsKIH0KIApAQCAtMzYzMiw3ICszNjMyLDcgQEAgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhJiBFbGVtZW50OjplbnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRh
dGEoKQogewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAg
ICAgaWYgKCFyYXJlRGF0YS5pbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKSkKLSAgICAgICAgcmFy
ZURhdGEuc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKKyAgICAgICAgcmFyZURhdGEuc2V0SW50ZXJzZWN0aW9u
T2JzZXJ2ZXJEYXRhKG1ha2VVbmlxdWU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKICAg
ICByZXR1cm4gKnJhcmVEYXRhLmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpOwogfQogCkBAIC0z
NjU4LDcgKzM2NTgsNyBAQCBSZXNpemVPYnNlcnZlckRhdGEmIEVsZW1lbnQ6OmVuc3VyZVJlc2l6
ZU9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLnJlc2l6ZU9ic2VydmVyRGF0YSgpKQotICAgICAg
ICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxSZXNpemVP
YnNlcnZlckRhdGE+KCkpOworICAgICAgICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEo
bWFrZVVuaXF1ZTxSZXNpemVPYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEu
cmVzaXplT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmNwcAppbmRleCBkOWU2NjM0OWNiZGJhMGJiODFkMmFjZmJmZGMwZDQzMzc4YzY1OGRiLi4w
YjA5ZDA4MmMzNmVkZGQ4NGI5Y2RlOTg4MjUyNzJkYjVmOTZlNWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBFdmVudExp
c3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0
ZW5lcj4mJiBsaXMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYXV0byBsaXN0
ZW5lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CisgICAgYXV0
byBsaXN0ZW5lcnMgPSBtYWtlVW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CiAgICAgbGlz
dGVuZXJzLT51bmNoZWNrZWRBcHBlbmQoUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6OmNyZWF0ZShX
VEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucykpOwogICAgIG1fZW50cmllcy5hcHBlbmQoeyBldmVu
dFR5cGUsIFdURk1vdmUobGlzdGVuZXJzKSB9KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCmluZGV4IDllOTMwOGJiNWRhMTQ2MWUzNThlM2NjNjJmZWFmZGNmY2QwY2M3
YWQuLjViNmFiNjg3NTViNjFiZmUyZDRhNjhiY2JlNzUyNGZkMGRkYWJiOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaApAQCAtMzM5LDEzICszMzksMTMgQEAgc3RydWN0IEV2ZW50TmFtZXMgewog
ICAgIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChET01fRVZFTlRfTkFNRVNfREVDTEFSRSkKICN1
bmRlZiBET01fRVZFTlRfTkFNRVNfREVDTEFSRQogCi0gICAgLy8gRklYTUU6IFRoZSBmcmllbmQg
ZGVjbGFyYXRpb24gdG8gc3RkOjptYWtlX3VuaXF1ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdp
bmRvd3MgcG9ydC4KKyAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBtYWtl
VW5pcXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgogICAgIC8vCiAgICAg
Ly8gdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4KLSAgICAvLyBmcmllbmQgdHlwZW5h
bWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBzdGQ6Om1ha2VfdW5pcXVlKEFy
Z3MmJi4uLik7CisgICAgLy8gZnJpZW5kIHR5cGVuYW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6X1Np
bmdsZV9vYmplY3QgbWFrZVVuaXF1ZShBcmdzJiYuLi4pOwogICAgIC8vCiAgICAgLy8gVGhpcyBj
cmVhdGUgZnVuY3Rpb24gc2hvdWxkIGJlIGRlbGV0ZWQgbGF0ZXIgYW5kIGlzIG9ubHkgZm9yIGtl
ZXBpbmcgRXZlbnROYW1lcyBhcyBwcml2YXRlLgotICAgIC8vIHN0ZDo6bWFrZV91bmlxdWUgc2hv
dWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAvLyBtYWtlVW5pcXVlIHNob3VsZCBiZSB1c2VkIGlu
c3RlYWQuCiAgICAgLy8KICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRQYXRoLmNwcAppbmRleCBkYjE0MjhkMWQ0MjYwNThjYjY1YjFlYjZmYWNhMjNkYjk4
OTI4MmJkLi5hMGFkMGFkN2M0ODI2OTJlNjM4ZTU3MjgwZjFhMjkyNDdhY2VjMTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRQYXRoLmNwcApAQCAtMTE1LDE3ICsxMTUsMTcgQEAgdm9pZCBFdmVudFBhdGg6
OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogewogICAgIHVz
aW5nIE1ha2VFdmVudENvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiAoKiko
Tm9kZSYsIEV2ZW50VGFyZ2V0KiwgRXZlbnRUYXJnZXQqLCBpbnQgY2xvc2VkU2hhZG93RGVwdGgp
OwogICAgIE1ha2VFdmVudENvbnRleHQgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2Rl
LCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNs
b3NlZFNoYWRvd0RlcHRoKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KCZub2RlLCBjdXJyZW50
VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICB9OwogICAgIGlmIChpczxN
b3VzZUV2ZW50PihldmVudCkgfHwgZXZlbnQuaXNGb2N1c0V2ZW50KCkpIHsKICAgICAgICAgbWFr
ZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdl
dCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVu
aXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdl
dCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW91
c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3Nl
ZFNoYWRvd0RlcHRoKTsKICAgICAgICAgfTsKICAgICB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKICAgICBpZiAoaXM8VG91Y2hFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgIG1ha2VFdmVudENv
bnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50
VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVfcHRy
PEV2ZW50Q29udGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VG91
Y2hFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93
RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VG91Y2hFdmVudENvbnRleHQ+
KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAg
ICB9OwogICAgIH0KICNlbmRpZgpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgRXZlbnRQYXRoOjpi
dWlsZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxE
b2N1bWVudD4oKm5vZGUpLmRvbVdpbmRvdygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2Rl
LCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+
KCpub2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTMwOCw3ICszMDgsNyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiB0YXJnZXRzKQogICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgTm9kZSog
b3JpZ2luID0gKnRhcmdldHMuYmVnaW4oKTsKICAgICAgICAgaWYgKCF0YXJnZXQtPmlzQ2xvc2Vk
U2hhZG93SGlkZGVuKCpvcmlnaW4pKQotICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwgMCkpOworICAg
ICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0
YXJnZXQsIG9yaWdpbiwgMCkpOwogICAgIH0KIH0KIApAQCAtMzE3LDcgKzMxNyw3IEBAIEV2ZW50
UGF0aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFdmVudFRhcmdldCo+JiB0YXJnZXRzKQogICAg
IGZvciAoYXV0byogdGFyZ2V0IDogdGFyZ2V0cykgewogICAgICAgICBBU1NFUlQodGFyZ2V0KTsK
ICAgICAgICAgQVNTRVJUKCFpczxOb2RlPih0YXJnZXQpKTsKLSAgICAgICAgbV9wYXRoLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0
cy5iZWdpbigpLCAwKSk7CisgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVudENv
bnRleHQ+KG51bGxwdHIsIHRhcmdldCwgKnRhcmdldHMuYmVnaW4oKSwgMCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlZGQ5Y2EyOGVhNDkz
YWM3Yzk0YzhiZGUyODViMTY2NmMzODgyNTU5Li5hNzBiY2FlY2NjODc5NWE0ZjRiYTQyNmUyNTEz
ZGZmN2EwZjc0YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAt
NDIsNiArNDIsNyBAQCBjbGFzcyBSZW5kZXJUcmVlQnVpbGRlcjsKIGNsYXNzIFJlbmRlclN0eWxl
OwogCiBjbGFzcyBGdWxsc2NyZWVuTWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgRnVsbHNjcmVlbk1hbmFnZXIoRG9jdW1lbnQmKTsKICAgICB+RnVs
bHNjcmVlbk1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5jcHAKaW5kZXggYjNhMDZlNDdiMDcwMGY3YzQ3ZDNkOWFlZjMzZjQ0MzcyNGUw
YzU1ZS4uOTQwZWZjYWVkODMwOTFjMjU4M2ZhOWUzMzZlZjNkNzhjNTRhYTNkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKGNvbnN0
IEF0b21TdHJpbmcmIGlkLCBJZFRhcmdldE9ic2VydmUKICAgICAKICAgICBJZFRvT2JzZXJ2ZXJT
ZXRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3JlZ2lzdHJ5LmFkZChpZC5pbXBsKCksIG51bGxw
dHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T2JzZXJ2ZXJTZXQ+KCk7CisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9ic2VydmVyU2V0PigpOwogCiAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKG9ic2VydmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmNwcAppbmRleCA3ZTdhMzQ3OTdiODYyOWY2MmY3Zjc4NmFiMTRjNWM2ZjViZDkw
YjE0Li5jZTg1NmJiNTVkNWJkOTllNjZmNTBjYjU1YjBiZTQ3OTBlMDk4NDUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBLZXlib2Fy
ZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogaW5saW5lIEtleWJvYXJkRXZlbnQ6
OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3KQogICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVG
b3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2Vs
YWJsZTo6WWVzLCBJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIGtleS50aW1lc3RhbXAoKS5hcHBy
b3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldy5jb3B5UmVmKCksIDAsIGtleS5tb2RpZmllcnMo
KSwgSXNUcnVzdGVkOjpZZXMpCi0gICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQorICAgICwgbV91bmRlcmx5
aW5nUGxhdGZvcm1FdmVudChtYWtlVW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkK
ICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAgICAsIG1fa2V5KGtleS5rZXko
KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKaW5kZXggYjYzMTg0MTUwZjVhMzkxNDI1
MmI4NDJlZDlkMDdkZWFhZjZiNDAzNi4uYmE3MjJhMTFjNzBmY2E4MDgzMmU2NGM4NTI3ZWU0NmI5
YzM0NzY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCkBAIC02OSw3ICs2OSw4IEBAIGNsYXNz
IFZvaWRNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMgTWljcm90YXNrIHsKICAgICBGdW5jdGlvbjx2
b2lkKCk+IG1fZnVuY3Rpb247CiB9OwogCi1jbGFzcyBNaWNyb3Rhc2tRdWV1ZSB7CitjbGFzcyBN
aWNyb3Rhc2tRdWV1ZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1pY3JvdGFza1F1ZXVlPjsKICAgICBmcmllbmQgY2xhc3Mg
TWljcm90YXNrOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CmluZGV4IDY2YzVlYTBiOWQ2MzQ1NDQzODEyZmIxMzFmZmU1ZGJlNmNhMWRkZjMuLjE5M2YyNzgw
NWE1YWVkNGI2MDZlOWNlZWEzYTlhMzVkOGIxZTk5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlci5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgdm9pZCBxdWV1ZU11
dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFzaygpCiAgICAgaWYgKG11dGF0aW9uT2JzZXJ2
ZXJDb21wb3VuZE1pY3JvdGFza1F1ZXVlZEZsYWcpCiAgICAgICAgIHJldHVybjsKICAgICBtdXRh
dGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnID0gdHJ1ZTsKLSAgICBNaWNy
b3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0
YXRpb25PYnNlcnZlck1pY3JvdGFzaz4oKSk7CisgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkp
OwogfQogCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmVucXVldWVNdXRhdGlvblJlY29yZChSZWY8
TXV0YXRpb25SZWNvcmQ+JiYgbXV0YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAppbmRleCA1MmRhNjFmNzRmMWY1N2Fm
Njg1NDlmMzY2NTYzMDZkOGQxNzAzYzc5Li4wMjc2ZTQyYmU1YmQ4M2ZmNDJhNzkzNTZiZGU5Y2U3
MzYwOTljYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cDo6Y3IKICAgICBpZiAob2JzZXJ2ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2VydmVy
cyksIG9sZFZhbHVlRmxhZyk7CiB9CiAKIGJvb2wgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA6OmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGM4ZmMwMTA2NzI0NWU0
ZTM2MTk3YTJmNmQ0ZDFlNDU3NTQ3YmJjOGEuLmU1YzZkZDE2YTRkYjYwOWJhNTI3M2E0N2FmN2Zh
NjgyNjYyYTJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaChOb2RlJiBub2Rl
KQogICAgIG1fb2JzZXJ2ZXItPnNldEhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbigpOwogCiAgICAg
aWYgKCFtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzKSB7Ci0gICAgICAgIG1fdHJhbnNpZW50
UmVnaXN0cmF0aW9uTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8R0NSZWFjaGFibGVS
ZWY8Tm9kZT4+PigpOworICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gbWFr
ZVVuaXF1ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKIAogICAgICAgICBBU1NF
UlQoIW1fbm9kZUtlcHRBbGl2ZSk7CiAgICAgICAgIG1fbm9kZUtlcHRBbGl2ZSA9ICZtX25vZGU7
IC8vIEJhbGFuY2VkIGluIHRha2VUcmFuc2llbnRSZWdpc3RyYXRpb25zLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IDc2ZDRlYTlkNzMwYTkyMzcyYTlmOGU3YTZkOGY2N2QwMGZkM2RiZjUuLmNhYmYxZWI1
OGM5YzIzY2FkODg1YmQwMWRmMTIyYjY1MWFlMDJiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTM5
OCw5ICszOTgsOSBAQCB2b2lkIE5vZGU6Om1hdGVyaWFsaXplUmFyZURhdGEoKQogewogICAgIE5v
ZGVSYXJlRGF0YSogZGF0YTsKICAgICBpZiAoaXM8RWxlbWVudD4oKnRoaXMpKQotICAgICAgICBk
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOworICAgICAgICBkYXRhID0gbWFr
ZVVuaXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG1fZGF0YS5t
X3JlbmRlcmVyKSkucmVsZWFzZSgpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOworICAg
ICAgICBkYXRhID0gbWFrZVVuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5tX3JlbmRlcmVyKS5y
ZWxlYXNlKCk7CiAgICAgQVNTRVJUKGRhdGEpOwogCiAgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBk
YXRhOwpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgRXZlbnRUYXJnZXREYXRhJiBOb2RlOjplbnN1cmVF
dmVudFRhcmdldERhdGEoKQogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX2V2ZW50VGFy
Z2V0RGF0YU1hcExvY2spOwogICAgIHNldEhhc0V2ZW50VGFyZ2V0RGF0YSh0cnVlKTsKLSAgICBy
ZXR1cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEV2
ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqZXZlbnRUYXJn
ZXREYXRhTWFwKCkuYWRkKHRoaXMsIG1ha2VVbmlxdWU8RXZlbnRUYXJnZXREYXRhPigpKS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgTm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEoKQpAQCAt
MjI4Nyw3ICsyMjg3LDcgQEAgdm9pZCBOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0
YXRpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIKICAgICB9CiAKICAgICBp
ZiAoIXJlZ2lzdHJhdGlvbikgewotICAgICAgICByZWdpc3RyeS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9wdGlv
bnMsIGF0dHJpYnV0ZUZpbHRlcikpOworICAgICAgICByZWdpc3RyeS5hcHBlbmQobWFrZVVuaXF1
ZTxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9wdGlvbnMs
IGF0dHJpYnV0ZUZpbHRlcikpOwogICAgICAgICByZWdpc3RyYXRpb24gPSByZWdpc3RyeS5sYXN0
KCkuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNzY5MGQ1
OTlmY2E3ZGM5OWNiNDllMTYwZmJlMmFmYWRkZjAwY2RmNC4uNzY2ZDY3ZjNmNmQ2MjlhZjA4OTQy
YWRjMjNlMmMyMmMyOWYzZTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMjgx
LDcgKzI4MSw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNl
IHsKICAgICBOb2RlTGlzdHNOb2RlRGF0YSYgZW5zdXJlTm9kZUxpc3RzKCkKICAgICB7CiAgICAg
ICAgIGlmICghbV9ub2RlTGlzdHMpCi0gICAgICAgICAgICBtX25vZGVMaXN0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CisgICAgICAgICAgICBtX25vZGVMaXN0cyA9
IG1ha2VVbmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9ub2Rl
TGlzdHM7CiAgICAgfQogCkBAIC0yODksNyArMjg5LDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIDog
cHVibGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YSYg
ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKQogICAgIHsKICAgICAgICAgaWYgKCFtX211dGF0
aW9uT2JzZXJ2ZXJEYXRhKQotICAgICAgICAgICAgbV9tdXRhdGlvbk9ic2VydmVyRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhPigpOworICAgICAgICAgICAg
bV9tdXRhdGlvbk9ic2VydmVyRGF0YSA9IG1ha2VVbmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJE
YXRhPigpOwogICAgICAgICByZXR1cm4gKm1fbXV0YXRpb25PYnNlcnZlckRhdGE7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAppbmRleCA1MzM3YzU4Y2Rm
YmJhYWIyMzAxODQ1MDI2MzhkYzYzNDQ5Zjc5NmFjLi42MWJiYzRlZGZmOTM0YTY0NDZlYTI1Njc1
NTY2M2ZkNTQ2ODc3ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0
b25Hcm91cHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5j
cHAKQEAgLTE5OCwxMSArMTk4LDExIEBAIHZvaWQgUmFkaW9CdXR0b25Hcm91cHM6OmFkZEJ1dHRv
bihIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IW1fbmFtZVRvR3JvdXBNYXApCi0gICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hbWVUb0dyb3VwTWFwPigpOworICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gbWFr
ZVVuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKIAogICAgIGF1dG8mIGdyb3VwID0gbV9uYW1lVG9H
cm91cE1hcC0+YWRkKGVsZW1lbnQubmFtZSgpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghZ3JvdXApCi0gICAgICAgIGdyb3VwID0gc3RkOjptYWtlX3VuaXF1ZTxS
YWRpb0J1dHRvbkdyb3VwPigpOworICAgICAgICBncm91cCA9IG1ha2VVbmlxdWU8UmFkaW9CdXR0
b25Hcm91cD4oKTsKICAgICBncm91cC0+YWRkKGVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYzgyNWE3ZWRlZTZiYjJk
NWY1MTZjNmQzZTZlYTc0MTBlNmVjYzc1Ni4uMDRhZmU5ZDc4YWQwYmQxMDI4YTY3MDNjMGZjM2Q0
ZjY1M2IxM2RlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcApAQCAtMzc5LDggKzM3OSw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluCiB7CiAg
ICAgaWYgKG1faW5EaXNwYXRjaEVycm9yRXZlbnQpIHsKICAgICAgICAgaWYgKCFtX3BlbmRpbmdF
eGNlcHRpb25zKQotICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+KCk7Ci0gICAg
ICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdF
eGNlcHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VV
UkwsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9u
cyA9IG1ha2VVbmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+
KCk7CisgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChtYWtlVW5pcXVlPFBlbmRp
bmdFeGNlcHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3Vy
Y2VVUkwsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC00MTQsOSArNDE0LDkgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRVbmhh
bmRsZWRQcm9taXNlUmVqZWN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGEKICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlID0gbWFrZVN0cmluZygiVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiAiLCBy
ZXN1bHRNZXNzYWdlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBj
YWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlw
ZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOworICAgICAgICBt
ZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNz
YWdlKTsKICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApAQCAt
NTA5LDcgKzUwOSw3IEBAIFJlamVjdGVkUHJvbWlzZVRyYWNrZXImIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRyYWNrZXJTbG93CiAgICAgLy8gV2hlbiBpbml0
aWFsaXppbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdm0oKSBpcyBub3QgcmVhZHkuCiAKICAg
ICBBU1NFUlQoIW1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlcik7Ci0gICAgbV9yZWplY3RlZFByb21p
c2VUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWplY3RlZFByb21pc2VUcmFja2VyPigqdGhp
cywgdm0oKSk7CisgICAgbV9yZWplY3RlZFByb21pc2VUcmFja2VyID0gbWFrZVVuaXF1ZTxSZWpl
Y3RlZFByb21pc2VUcmFja2VyPigqdGhpcywgdm0oKSk7CiAgICAgcmV0dXJuICptX3JlamVjdGVk
UHJvbWlzZVRyYWNrZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNw
cAppbmRleCA1NWRjMmM4N2E0YWMyMDJkNzFhZGRhNjZkNTk2YjVmZWEwYmM4ODU2Li4yMTA5Y2U0
YTIyOGMzZTdiYTg3YTRiYTUyYjJkYjI4MjM2MDg3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dG9yUXVlcnkuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgRXhjZXB0aW9uT3I8U2VsZWN0b3JRdWVy
eSY+IFNlbGVjdG9yUXVlcnlDYWNoZTo6YWRkKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBEb2MK
ICAgICBpZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtYXhpbXVtU2VsZWN0b3JRdWVyeUNhY2hlU2l6
ZSkKICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShtX2VudHJpZXMucmFuZG9tKCkpOwogCi0gICAg
cmV0dXJuICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3Rv
clF1ZXJ5PihXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0
dXJuICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5PihX
VEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAppbmRleCA2OTYzYjY4Mzc5ZDg4ZjI3YTg0ZTJmMWRhNjUxNTM4MTgw
NWIyOTNjLi42Nzg2YzBkMjFlMWIyYzJhNTc4NTFiZDA4NTE2NGMxYTFlOTJjOTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRv
d1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBTaGFkb3dSb290TW9kZSB0eXBlKQogICAgIDogRG9j
dW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAsIFRyZWVTY29w
ZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fc3R5bGVTY29w
ZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNj
b3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCiB7CiB9CiAKQEAgLTY3LDcgKzY3
LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxTbG90QXNzaWdubWVudD4mJiBzbG8KICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9j
dW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50
KQogICAgICwgbV90eXBlKFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCi0gICAgLCBtX3N0eWxl
U2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fc3R5
bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogICAgICwgbV9zbG90QXNz
aWdubWVudChXVEZNb3ZlKHNsb3RBc3NpZ25tZW50KSkKIHsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBA
QCB2b2lkIFNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudChEb2N1bWVudCYg
bmV3RG9jdW1lbnQpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TighcGFyZW50VHJlZVNjb3BlKCkgfHwgJnBhcmVudFRyZWVTY29wZSgpLT5kb2N1bWVudFNjb3Bl
KCkgPT0gJm5ld0RvY3VtZW50KTsKIAogICAgIC8vIFN0eWxlIHNjb3BlcyBhcmUgZG9jdW1lbnQg
c3BlY2lmaWMuCi0gICAgbV9zdHlsZVNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2Nv
cGU+KCp0aGlzKTsKKyAgICBtX3N0eWxlU2NvcGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4o
KnRoaXMpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJm1f
c3R5bGVTY29wZS0+ZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOwogfQogCkBAIC0yMjgsNyAr
MjI4LDcgQEAgdm9pZCBTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9t
U3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHMKIHsKICAgICBBU1NFUlQoJnNsb3Qucm9v
dE5vZGUoKSA9PSB0aGlzKTsKICAgICBpZiAoIW1fc2xvdEFzc2lnbm1lbnQpCi0gICAgICAgIG1f
c2xvdEFzc2lnbm1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOworICAg
ICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gbWFrZVVuaXF1ZTxTbG90QXNzaWdubWVudD4oKTsKIAog
ICAgIHJldHVybiBtX3Nsb3RBc3NpZ25tZW50LT5hZGRTbG90RWxlbWVudEJ5TmFtZShuYW1lLCBz
bG90LCAqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2ln
bm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCBh
NDE5ZGRhNTI4YWNjYmRhNmRlOWRkZjFhNTQ4NjRjZmRmOTE2MGVmLi40NWMwOGVhMzZhZmUxMzk3
YmUwZWNiZmIyOWUyMjhlY2QwYzk5MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2xvdEFzc2lnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVu
dC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjphZGRTbG90RWxl
bWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbgogICAgICAg
ICAvLyB0byBhdm9pZCBhbHdheXMgaGF2aW5nIGEgdmVjdG9yIG9mIGFsbCBjaGlsZCBub2RlcyBv
ZiBhIHNoYWRvdyBob3N0LgogICAgICAgICBpZiAoc2xvdE5hbWUgPT0gZGVmYXVsdFNsb3ROYW1l
KCkpCiAgICAgICAgICAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U2xvdD4oKTsKICAgICB9KTsKICAgICBhdXRvJiBzbG90ID0gKmFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiAgICAgYm9vbCBuZWVkc1Nsb3RjaGFuZ2VFdmVudCA9IHNoYWRvd1Jvb3Qu
c2hvdWxkRmlyZVNsb3RjaGFuZ2VFdmVudCgpICYmIGhhc0Fzc2lnbmVkTm9kZXMoc2hhZG93Um9v
dCwgc2xvdCk7CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6YXNzaWdu
VG9TbG90KE5vZGUmIGNoaWxkLCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZSkKICAgICB9CiAK
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2xvdHMuZW5zdXJlKHNsb3ROYW1lLCBbXSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YXNzaWduZWROb2Rlcy5hcHBlbmQoJmNoaWxkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAK
aW5kZXggMmYyODcwZDE2NjlkNDRiYzYxODRhNzJlYzYzZWIzMjNmNTI3ZDM5Zi4uNTMxYWNkZjRk
ZDY1NjhlMGY0NjIxZWI1MGQ4OWRlZTQ2N2Q1NWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUoU2hhZG93Um9vdCYgc2hh
ZG93Um9vdCwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShzaGFkb3dSb290
KQogICAgICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2Nv
cGUoJmRvY3VtZW50KQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoc3RkOjptYWtl
X3VuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBtX2lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKIHsK
ICAgICBzaGFkb3dSb290LnNldFRyZWVTY29wZSgqdGhpcyk7CiB9CkBAIC03Myw3ICs3Myw3IEBA
IFRyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5v
ZGUoZG9jdW1lbnQpCiAgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3Bh
cmVudFRyZWVTY29wZShudWxscHRyKQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnko
c3RkOjptYWtlX3VuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBtX2lk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eT4oKSkKIHsKICAgICBkb2N1bWVudC5zZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtMTQxLDcg
KzE0MSw3IEBAIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIFRyZWVTY29wZTo6Z2V0QWxsRWxlbWVu
dHNCeUlkKGNvbnN0IEF0b21TdHJpbmcmIGVsZW1lbnRJCiB2b2lkIFRyZWVTY29wZTo6YWRkRWxl
bWVudEJ5SWQoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGVsZW1lbnRJZCwgRWxlbWVudCYgZWxlbWVu
dCwgYm9vbCBub3RpZnlPYnNlcnZlcnMpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnRzQnlJZCkKLSAg
ICAgICAgbV9lbGVtZW50c0J5SWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRN
YXA+KCk7CisgICAgICAgIG1fZWxlbWVudHNCeUlkID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRl
cmVkTWFwPigpOwogICAgIG1fZWxlbWVudHNCeUlkLT5hZGQoZWxlbWVudElkLCBlbGVtZW50LCAq
dGhpcyk7CiAgICAgaWYgKG5vdGlmeU9ic2VydmVycykKICAgICAgICAgbV9pZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnktPm5vdGlmeU9ic2VydmVycyhlbGVtZW50SWQpOwpAQCAtMTY4LDcgKzE2OCw3
IEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5n
JiBuYW1lKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUoY29uc3QgQXRv
bVN0cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2VsZW1l
bnRzQnlOYW1lKQotICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxU
cmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gbWFrZVVu
aXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIG1fZWxlbWVudHNCeU5hbWUtPmFkZChu
YW1lLCBlbGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFRyZWVT
Y29wZTo6YWRkSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQmIGltYWdlTWFwKQogICAgIGlmICghbmFt
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9pbWFnZU1hcHNCeU5hbWUpCi0gICAgICAg
IG1faW1hZ2VNYXBzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFw
PigpOworICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3Jk
ZXJlZE1hcD4oKTsKICAgICBtX2ltYWdlTWFwc0J5TmFtZS0+YWRkKCpuYW1lLCBpbWFnZU1hcCwg
KnRoaXMpOwogfQogCkBAIC0yNjMsNyArMjYzLDcgQEAgSFRNTE1hcEVsZW1lbnQqIFRyZWVTY29w
ZTo6Z2V0SW1hZ2VNYXAoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNj
b3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwg
SFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1faW1hZ2VzQnlVc2VtYXAp
Ci0gICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9y
ZGVyZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBtYWtlVW5pcXVlPFRyZWVT
Y29wZU9yZGVyZWRNYXA+KCk7CiAgICAgcmV0dXJuIG1faW1hZ2VzQnlVc2VtYXAtPmFkZChuYW1l
LCBlbGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBIVE1MTGFiZWxFbGVt
ZW50KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKGNvbnN0IEF0b21TdHJpbmcmIGZvckF0
dHJpYnV0ZVZhbAogCiAgICAgaWYgKCFtX2xhYmVsc0J5Rm9yQXR0cmlidXRlKSB7CiAgICAgICAg
IC8vIFBvcHVsYXRlIHRoZSBtYXAgb24gZmlyc3QgYWNjZXNzLgotICAgICAgICBtX2xhYmVsc0J5
Rm9yQXR0cmlidXRlID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwor
ICAgICAgICBtX2xhYmVsc0J5Rm9yQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRl
cmVkTWFwPigpOwogCiAgICAgICAgIGZvciAoYXV0byYgbGFiZWwgOiBkZXNjZW5kYW50c09mVHlw
ZTxIVE1MTGFiZWxFbGVtZW50PihtX3Jvb3ROb2RlKSkgewogICAgICAgICAgICAgY29uc3QgQXRv
bVN0cmluZyYgZm9yVmFsdWUgPSBsYWJlbC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGZvckF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5oCmluZGV4IGRkYTQ5MGIxM2NkYzJkZGI4M2ZiMWZjOGZmYWIwOWRmMDA4OGQ4MmMuLjQyNjgx
OTZmODkyYWYzMDU1MTAzYzQ4NzJmZThlY2JkZDVmMTFhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3Mg
U3R5bGVkRWxlbWVudDsKIGNsYXNzIFRleHQ7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlVbmRvUmVw
bGFjZWRUZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBB
Y2Nlc3NpYmlsaXR5VW5kb1JlcGxhY2VkVGV4dCgpIHsgfQogICAgIHZvaWQgY29uZmlndXJlUmFu
Z2VEZWxldGVkQnlSZWFwcGx5V2l0aFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3OTM0MmM0OTc3NTNkOWEx
NTI2ZTA1NTU0OWZjNzc5NzIxNGJmNmU0Li44OTFjMTI4OGM2ZTMxNGFjY2FlOWI2MjcxOTc4MTg4
MWU3NDJkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODAsMTIgKzM4MCwx
MiBAQCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJv
YXJkRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNh
c2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5k
OjpDdXQ6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtl
X3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9k
ZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogICAgIGNhc2Ug
Q2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUGxhaW5UZXh0OgogICAgICAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVu
YWJsZWQoKSkgewogICAgICAgICAgICAgYXV0byBwbGFpblRleHRUeXBlID0gInRleHQvcGxhaW4i
X3M7CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSgpLT5yZWFkU3RyaW5nKHBsYWluVGV4dFR5cGUpOwotICAgICAgICAgICAgYXV0
byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOworICAg
ICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigp
OwogICAgICAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcocGxhaW5UZXh0VHlwZSwgcGxh
aW5UZXh0KTsKICAgICAgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZN
b3ZlKHBhc3RlYm9hcmQpKTsKICAgICAgICAgfQpAQCAtMzk2LDEwICszOTYsMTAgQEAgc3RhdGlj
IFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERv
Y3VtZW50JiBkb2N1bWVudCwKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29w
eToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xp
cGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVQYXN0ZToKLSAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9k
ZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAg
ICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBE
YXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJv
YXJkPigpKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6
OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigp
KTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1l
bnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCkpOwogfQogCiAvLyBSZXR1cm5zIHdoZXRoZXIgY2FsbGVyIHNob3VsZCBjb250
aW51ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5nIiwgd2hpY2ggaXMgdGhlIHNhbWUgYXMK
QEAgLTExODMsOSArMTE4Myw5IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRD
b21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiBFZGl0b3I6OkVkaXRvcihGcmFtZSYg
ZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9raWxsUmluZyhzdGQ6Om1ha2Vf
dW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCi0gICAgLCBtX3NwZWxsQ2hlY2tlcihzdGQ6Om1ha2Vf
dW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJhbWUp
KQorICAgICwgbV9raWxsUmluZyhtYWtlVW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCisgICAgLCBt
X3NwZWxsQ2hlY2tlcihtYWtlVW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQorICAgICwgbV9h
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcj4oZnJhbWUpKQogICAgICwgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9y
OjplZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJf
REVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fdGVsZXBob25lTnVt
YmVyRGV0ZWN0aW9uVXBkYXRlVGltZXIoKnRoaXMsICZFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JU
ZWxlcGhvbmVOdW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAwZGRjMTViZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3
NjQ1ZjU0Nzk0Li4yYzIwMjhjYzYzYzFiOTM4YmM2NmZmNGJlYTU4OTkyNThlOWE0YTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cApAQCAtMTYzMSw3ICsxNjMxLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6dXBk
YXRlTm9kZXNJbnNlcnRlZChOb2RlICpub2RlKQogUmVwbGFjZW1lbnRGcmFnbWVudCogUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQoKQogewogICAgIGlm
ICghbV9yZXBsYWNlbWVudEZyYWdtZW50KQotICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVu
dC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOworICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21l
bnQgPSBtYWtlVW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5n
ZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIHJldHVybiBtX3JlcGxhY2VtZW50RnJhZ21l
bnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0
aW9uUmVjdEdhdGhlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVj
dEdhdGhlcmVyLmNwcAppbmRleCAzYjQwNjg4Y2I0ZGE2NTZiMzQ0NTg3YzA4ODg2MzZjMGFiMTU2
NmNmLi5mOWI2NGM1YzhjODk2YmYzMjI2MzA4NzA5ZjI2YWE2NjdlMWVkOTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVy
PiBTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kCiAgICAgbV9nYXBSZWN0cy5jbGVhcigp
OwogICAgIG1faXNUZXh0T25seSA9IHRydWU7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxOb3RpZmllcj4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5vdGlmaWVyPigqdGhp
cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcAppbmRleCAxODk2ZTFhMjI4MWMxYTliMDQ2ZThlZmFjZDkxMTlhZjVlMjc3
ZDU2Li5mMWQxOWMxMDExNGMxYTk4NWI4YjQyNmZhNjhmZGI4MTIyYTYwYzc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC02NTAsNyArNjUwLDcgQEAgYm9vbCBU
ZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRp
b24gPSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2VuZE9mZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3RoKCk7CiAgICAgICAgIGlmICghbV9mbG93
UnVuUmVzb2x2ZXJDYWNoZSB8fCAmbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZi
bG9ja0Zsb3cpIHsKICAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5G
bG93ID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA/IDAgOiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0
ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gc3RkOjptYWtl
X3VuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0
KTsKKyAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBtYWtlVW5pcXVlPFNpbXBs
ZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQpOwogICAgICAgICB9
CiAgICAgICAgIC8vIFNraXAgdG8gbV9vZmZzZXQgcG9zaXRpb24uCiAgICAgICAgIGF1dG8gcmFu
Z2UgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAw
YTgzYWMwOTU5Mjc0YzA3ODBkNWQ3YjM4NWYwMTljMGU4NmUzYzc0Li45Y2Y4NmE0YTE1ZjFjN2M2
ZjAyODE1NTY0N2FmYTAwNTlhZTNiNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0zODAsNyArMzgwLDcgQEAgSFRNTENvbnZlcnRlcjo6
SFRNTENvbnZlcnRlcihjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQp
CiAgICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9IGZhbHNlOwogICAgIF9mbGFncy5yZWFjaGVkRW5k
ID0gZmFsc2U7CiAgICAgCi0gICAgX2NhY2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTENvbnZl
cnRlckNhY2hlcz4oKTsKKyAgICBfY2FjaGVzID0gbWFrZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2Fj
aGVzPigpOwogfQogCiBIVE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigpCkBAIC01NTEsNyAr
NTUxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0
eWxlUHJvcGVydHlGb3JFbGVtZW50KEVsZW1lbnQmIGUKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9j
b21wdXRlZFN0eWxlcy5hZGQoJmVsZW1lbnQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1lbnQsIHRydWUpOworICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPigm
ZWxlbWVudCwgdHJ1ZSk7CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciYgY29tcHV0ZWRTdHls
ZSA9ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBjb21wdXRlZFN0eWxlLnBy
b3BlcnR5VmFsdWUocHJvcGVydHlJZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4IDI1NzdkNWE3
Njk2ODE2MjJmNWQwYTdiNjNmZjRkMDlkODhjOTVkYzEuLjI5YzVhOGRhN2VlMzI1NTYxMjY1Njkw
NTRlMzAyMjI4YTUzMDE4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCkBAIC0zNyw2ICszNyw3IEBAIE9C
SkNfQ0xBU1MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcigpIHsgfQogICAgIC8vIFJldHVybnMg
YSBjb250ZXh0IElELgpAQCAtNTIsNiArNTMsNyBAQCBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIgewogICAgIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlcygpOwogCiAgICAgY2xhc3Mg
QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlcigpIHsgfQogICAgICAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApp
bmRleCBmYjQzNzE2MzAzYWUyNWI4MTkyOTJkMjcxY2EyY2FlNjg0YjljMDJlLi5jM2M4ZjhiMzI0
YmZlY2RjZTllNWM0ZWIxOWI1Yjc0NjA4OTI4YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VG
b3JTYW5pdGl6aW5nV2ViQ29udGVudCgpCiB7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9
IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwogICAgIAotICAgIGF1dG8gcGFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwor
ICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlv
bikpOwogICAgIHBhZ2UtPnNldElzRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKICAgICBwYWdl
LT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgcGFnZS0+c2V0dGluZ3Mo
KS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmNwcAppbmRleCBhMDk1ZWVhZTliMmE3OTdiZGFiYWUzNDk0MGZkYzZhM2NlMzA0
MjRiLi5kNTgxMTJmZjliZGY2Y2Q3ZDE5ODU1MmQ4NjY5OTFmODViN2ExYzNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC05NCwxMSArOTQsMTEgQEAg
c3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1
ZXVlLmdldCgpLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1
bmN0aW9uKSkpOwogfQogCiBBc3luY0ZpbGVTdHJlYW06OkFzeW5jRmlsZVN0cmVhbShGaWxlU3Ry
ZWFtQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2ludGVybmFscyhzdGQ6Om1ha2VfdW5pcXVlPElu
dGVybmFscz4oY2xpZW50KSkKKyAgICA6IG1faW50ZXJuYWxzKG1ha2VVbmlxdWU8SW50ZXJuYWxz
PihjbGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCA5YWQzZGE5ZWZmZjBmM2E3MDdhMDYwMWY3ODYw
MWQ1ZDg2ODI1OGY1Li45OWE3YjVjNmY5ODdhMTRiYTE5MDk0NTg5ODdhZTg0ZWNmYzRmMDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiYgYmxvYiwgRmls
ZVJlYWRlckxvYWRlcjo6UmVhZFR5cAogICAgIG1fc3RhdGUgPSBMT0FESU5HOwogICAgIG1fZXJy
b3IgPSBudWxscHRyOwogCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFk
ZXJMb2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQq
Pih0aGlzKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1f
cmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0aGlzKSk7CiAg
ICAgbV9sb2FkZXItPnNldEVuY29kaW5nKG1fZW5jb2RpbmcpOwogICAgIG1fbG9hZGVyLT5zZXRE
YXRhVHlwZShtX2Jsb2ItPnR5cGUoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
CmluZGV4IDZhZTU1MmNiY2VmYmEzNWFmNTQ5NGFkODBhMTQ3MzFkMDBhY2EzZDEuLjVjOGYxOGUz
ZGFiMGViMjU5N2FkNWU4MjIxMzliZDg4ZmYzMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
Q2FjaGVkRnJhbWUuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZy
YW1lKEZyYW1lJiBmcmFtZSkKIAogICAgIC8vIENyZWF0ZSB0aGUgQ2FjaGVkRnJhbWVzIGZvciBh
bGwgRnJhbWVzIGluIHRoZSBGcmFtZVRyZWUuCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFt
ZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRT
aWJsaW5nKCkpCi0gICAgICAgIG1fY2hpbGRGcmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
Q2FjaGVkRnJhbWU+KCpjaGlsZCkpOworICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZChtYWtl
VW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9j
dW1lbnQtPmRvbVdpbmRvdygpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5mcmFt
ZSgpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUm
IGZyYW1lKQogICAgIC8vIEFjdGl2ZSBET00gb2JqZWN0cyBtdXN0IGJlIHN1c3BlbmRlZCBiZWZv
cmUgd2UgY2FjaGUgdGhlIGZyYW1lIHNjcmlwdCBkYXRhLgogICAgIG1fZG9jdW1lbnQtPnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hlKTsKIAotICAgIG1fY2FjaGVkRnJhbWVT
Y3JpcHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRDYWNoZWRGcmFtZURhdGE+KGZyYW1l
KTsKKyAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IG1ha2VVbmlxdWU8U2NyaXB0Q2FjaGVk
RnJhbWVEYXRhPihmcmFtZSk7CiAKICAgICBtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+c3VzcGVu
ZEZvclBhZ2VDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Nh
Y2hlZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAppbmRl
eCAwNjg2YWU4ZmVjZTQ0ZjFlZjY5MGU1ZjhmNmFiZTg0NjE0NjNkZjdkLi45NzQ3YTQwNDAxNmFj
ODY4ZDJmNzc5NmU1MzMwNDM2ZmZhNTg3NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVk
UGFnZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6
UmVmQ291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRQYWdlQ291bnRlciwgKCJDYWNoZWQKIENhY2hl
ZFBhZ2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwg
bV9leHBpcmF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSArIFNlY29uZHMocGFnZS5zZXR0
aW5ncygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWwoKSkpCi0gICAgLCBtX2Nh
Y2hlZE1haW5GcmFtZShzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5GcmFt
ZSgpKSkKKyAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+KHBh
Z2UubWFpbkZyYW1lKCkpKQogewogI2lmbmRlZiBOREVCVUcKICAgICBjYWNoZWRQYWdlQ291bnRl
ci5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAwMDI5
NjU1ODkyZDE1NGNiNTA0M2UxZGEyMjgyNTg3OWY2M2VkZGU1Li4zYmEyNGI5ZGUyZTk5NDE5NmEw
ZGY5MmZjMzY2M2NlZWE1YmY0Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CkBAIC00NzgsNyArNDc4LDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3Rv
cnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qg
ZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUuCiAgICAgICAgIFNjcmlwdERpc2FsbG93
ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAotICAgICAgICBp
dGVtLm1fY2FjaGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOwor
ICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2Up
OwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdSZWFzb246Ok5vbmU7CiAg
ICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcAppbmRleCA3YTk5MWYxN2IwM2Q4M2U5MDVmN2QzZTA2MDdiZjUyYTk5YjgwZTQ1
Li5iMTRkMzEwMTU4YjY0NWZlODY5OWY3Zjk5ZjQxODU4YmQ1NWFlMjhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIEZpbGVJbnB1
dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAg
bV9maWxlSWNvbkxvYWRlci0+aW52YWxpZGF0ZSgpOwogCiAgICAgRmlsZUljb25Mb2FkZXJDbGll
bnQmIGNsaWVudCA9ICp0aGlzOwotICAgIG1fZmlsZUljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOworICAgIG1fZmlsZUljb25Mb2FkZXIgPSBtYWtl
VW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOwogCiAgICAgY2hyb21lLT5sb2FkSWNvbkZv
ckZpbGVzKHBhdGhzLCAqbV9maWxlSWNvbkxvYWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggODA2ZTVmM2RhZWJlMjk0ZTMzMDIz
MGRmYTVlZGU4YzkyZDU4YzMxOC4uMTdjMDI3Y2ZkZmExYmI0M2I2NDVlZTYyZDU4YzhhYzMyMDZk
ODc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0
b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihhc0hUTUxFbGVtZW50KCkuaXNDb25uZWN0ZWQoKSk7Ci0g
ICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1B
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7CisgICAgbV9mb3JtQXR0cmlidXRlVGFy
Z2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNI
VE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAq
dGhpcyk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlVGFy
Z2V0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IGVh
NWIwOWFhYTA4ZGIyNzM5NjFiOTUzNDIyZjAzZGQ3YWQ2ZTQ2NzEuLmQwZTAzZjU2Y2IwNjNlMjdm
MTEzNDBhMjcxM2Q0Zjk2MWI1YWU2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNhdmVkRm9ybVN0YXRl
PiBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmluZz4KICAgICBz
aXplX3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5kZXgrK10udG9VSW50KCk7CiAgICAgaWYg
KCFpdGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gc2F2ZWRGb3Jt
U3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOworICAgIGF1dG8gc2F2
ZWRGb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwogICAgIHdoaWxlIChp
dGVtQ291bnQtLSkgewogICAgICAgICBpZiAoaW5kZXggKyAxID49IHN0YXRlVmVjdG9yLnNpemUo
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY1LDEzICszNjUsMTMgQEAgc3Rh
dGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogc3RkOjp1bmlxdWVfcHRyPEZvcm1Db250
cm9sbGVyOjpTYXZlZEZvcm1TdGF0ZU1hcD4gRm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9y
bVN0YXRlTWFwKGNvbnN0IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQmIGNvbnRyb2xMaXN0KQogewog
ICAgIEZvcm1LZXlHZW5lcmF0b3Iga2V5R2VuZXJhdG9yOwotICAgIGF1dG8gc3RhdGVNYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOworICAgIGF1dG8gc3RhdGVNYXAg
PSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOwogICAgIGZvciAoYXV0byYgY29udHJv
bCA6IGNvbnRyb2xMaXN0KSB7CiAgICAgICAgIGlmICghY29udHJvbC0+c2hvdWxkU2F2ZUFuZFJl
c3RvcmVGb3JtQ29udHJvbFN0YXRlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
YXV0byYgZm9ybVN0YXRlID0gc3RhdGVNYXAtPmFkZChrZXlHZW5lcmF0b3IuZm9ybUtleSgqY29u
dHJvbCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGlmICghZm9y
bVN0YXRlKQotICAgICAgICAgICAgZm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZv
cm1TdGF0ZT4oKTsKKyAgICAgICAgICAgIGZvcm1TdGF0ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3Jt
U3RhdGU+KCk7CiAgICAgICAgIGZvcm1TdGF0ZS0+YXBwZW5kQ29udHJvbFN0YXRlKGNvbnRyb2wt
Pm5hbWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9sLT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFwOwpAQCAtNDAzLDcgKzQwMyw3IEBAIEZvcm1D
b250cm9sU3RhdGUgRm9ybUNvbnRyb2xsZXI6OnRha2VTdGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0
IEhUTUxGb3JtQ29udHJvbEVsCiAgICAgaWYgKG1fc2F2ZWRGb3JtU3RhdGVNYXAuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwogICAgIGlmICghbV9mb3JtS2V5
R2VuZXJhdG9yKQotICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZvcm1LZXlHZW5lcmF0b3I+KCk7CisgICAgICAgIG1fZm9ybUtleUdlbmVyYXRvciA9IG1ha2VV
bmlxdWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKICAgICBTYXZlZEZvcm1TdGF0ZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQobV9mb3JtS2V5R2VuZXJhdG9yLT5mb3Jt
S2V5KGNvbnRyb2wpLmltcGwoKSk7CiAgICAgaWYgKGl0ID09IG1fc2F2ZWRGb3JtU3RhdGVNYXAu
ZW5kKCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDEwNDdjNThlZWMzNTM2ZTNkMzk5M2E3
YjZlNTg2MjViMDE1OTUyZjEuLmViOWJkMDY4NWQ1OTJlYTY5MjMxM2FkNDE2YzI3ZDdmMjgyNjFm
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0zMTQs
NyArMzE0LDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6aGFzUmVsKFJlbGF0aW9uIHJlbGF0
aW9uKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIHsKLSAgICAgICAgbV9yZWxMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQmPigq
dGhpcyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2Vu
KSB7CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0Pihjb25zdF9j
YXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERv
Y3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAg
ICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAibm9yZWZlcnJl
ciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJub29wZW5lciIpIHx8IGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJhciIpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCBhYzA3NThkZTgzYjA0ODgyYTVkODkyMmZkNDA1NTQ4
ZWY5NTZkY2EyLi40OWFiZmE1ZjcwYTdhYjk3ZDczZTJjODJiNzY3YjA1MzUxYWRlZjg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZv
aWQgSFRNTEFyZWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkUmVnaW9uKCkKIGJvb2wgSFRNTEFy
ZWFFbGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlv
dXRTaXplJiBzaXplLCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiB7CiAgICAgaWYgKG1fbGFzdFNp
emUgIT0gc2l6ZSkgewotICAgICAgICBtX3JlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4o
Z2V0UmVnaW9uKHNpemUpKTsKKyAgICAgICAgbV9yZWdpb24gPSBtYWtlVW5pcXVlPFBhdGg+KGdl
dFJlZ2lvbihzaXplKSk7CiAgICAgICAgIG1fbGFzdFNpemUgPSBzaXplOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAwNzcxNWNiYjUwOTU0
YTYyNjM2YzkzMzA1YTc2NTMzNTlkMWU2ZjZiLi4yMDE0ZWZlNzVjZWM0NjBlMzc5MWUzNjNmNTYy
OGU1MDAxYjhkY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cApAQCAtOTUyLDcgKzk1Miw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldEltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpIGNvCiAgICAgbV9pbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHRydWUpOwogICAg
IG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGRl
ZmF1bHRJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
LnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250
ZXh0KCkpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAKICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZt
KCkpOwogICAgIEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkuaGVh
cC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtZW1vcnlDb3N0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA5NzZjOGUwYTlhMDZhOWI4M2Q2Y2E5NDFiZDVk
ZDM3YjlmMzM4NWM1Li4zMjgxNzZiNjllOGNkMWJmMjJkNGU3NjMyN2U5ZjI5Mjk2OGFiNDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBA
IHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAg
ICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigp
OworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNo
ZT4oKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHAKaW5kZXggZjE1Nzg3NGU2ZDUzNGUzZjYxMzRlNGE1ZGY0ZjUxYmUyZjY3YTMx
YS4uNjBkZDFmYjI1MjAzODYwZDNkOTJhN2E1YWNiMzMxYzJhYjA0YjU5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtODgsNyArODgsNyBAQCBjb25z
dCBBdG9tU3RyaW5nJiBEZXRhaWxzU2xvdEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxk
KGNvbnN0IE5vZGUmIGNoaWxkKQogUmVmPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIGF1dG8gZGV0YWlscyA9IGFkb3B0UmVmKCpuZXcgSFRNTERldGFpbHNF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChT
aGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsc1Nsb3RB
c3NpZ25tZW50PigpKSk7CisgICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290Ojpj
cmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7CiAg
ICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ4ODkzYjFmMDk0OWVmMTAyZTI5ZDAzYzU4OTY3YzRk
ZDRmM2ZkNWEuLmUxNTMxNmExOWVlZmI0NzdlM2YzNjdjODBmN2MzYzFhMmE2MzRiODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDgw
LDcgKzQ4MCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlKCkKICAgICBpZiAocmVuZGVyZXIoKSAmJiB3aWxsVmFsaWRhdGUoKSkK
ICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7
CiAgICAgaWYgKCFtX3ZhbGlkYXRpb25NZXNzYWdlKQotICAgICAgICBtX3ZhbGlkYXRpb25NZXNz
YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CisgICAgICAg
IG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBtYWtlVW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0aGlz
KTsKICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT51cGRhdGVWYWxpZGF0aW9uTWVzc2FnZShtZXNz
YWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcAppbmRleCA2ZWMyMmQ3NzQ5ZjJmNzhiZDMxZWY3N2VhNjM2MDczYjcxYzU5
ZmYyLi5hMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZlNjg5YzNiMWM2OGI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5h
bWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29s
bGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVl
PENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmlu
Z0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAppbmRleCBjNzZkNDkzYTYyY2VkODMwODgwMWI2YjAxZDMzMjFlMGEzMzNmNTFk
Li40MzVkOTUxNGRkMjlkZGQxZjZkZmIxZDE2OWUzNDdlMzE1YTMwMTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgdm9pZCBIVE1M
Rm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0ZW0qIGl0ZW0sIGNvbnN0
IEF0b21TdHJpbmcmIHAKICAgICBpZiAocGFzdE5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKCFtX3Bhc3ROYW1lc01hcCkKLSAgICAgICAgbV9wYXN0TmFtZXNNYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKKyAgICAgICAgbV9wYXN0TmFtZXNNYXAg
PSBtYWtlVW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKICAgICBtX3Bhc3ROYW1lc01hcC0+c2V0KHBh
c3ROYW1lLmltcGwoKSwgaXRlbSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5jcHAKaW5kZXggMDJkN2Q0ZTRmYmU4NmY1MjcwZjU4NGI2YThkZWI5YmU0NmY5N2Fh
OS4uYjFjODIxZGQ5YmFiYTJhMjBjYjI5ZTFjMWNmZDkwZDcxZmVjNThiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhU
TUxJRnJhbWVFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIEQKIERPTVRva2VuTGlzdCYgSFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRi
b3goKQogewogICAgIGlmICghbV9zYW5kYm94KSB7Ci0gICAgICAgIG1fc2FuZGJveCA9IHN0ZDo6
bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2FuZGJveEF0dHIsIFtdKERvY3VtZW50
JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3NhbmRib3ggPSBtYWtlVW5pcXVlPERP
TVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcg
dG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiBTZWN1cml0eUNvbnRleHQ6OmlzU3VwcG9ydGVk
U2FuZGJveFBvbGljeSh0b2tlbik7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBjMjVjZGQ4MGQ1ZjhhNzcwYTFkOTcwMDU3
ODQ3YTg5YzU2ODNkYmQuLjM3NmM1MjE5NjRlMGY3MWI2ZmQ5YzIxNzJkNjIwMWMyOTI1N2ExYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1
dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKIHsKICAgICBpZiAoIW1faW1hZ2VMb2FkZXIp
Ci0gICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRl
cj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VM
b2FkZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKQEAgLTE2NDEs
NyArMTY0MSw3IEBAIFJlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50
OjpkYXRhTGlzdCgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJp
YnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkKLSAgICAgICAg
bV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0
QXR0ciksIHRoaXMpOworICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1h
a2VVbmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CiAgICAgZWxzZQogICAgICAgICBtX2xpc3RB
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjg2MzRjYWRhZmExOGEwYTI3Y2NmNzI4ZjliYmY1NmNi
N2Y3OGQxNi4uZjZhN2JjODAyNGZmYTVlNGJkNzFmNjlhMjdjOTdjOGM5MzZiYjRlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIGJv
b2wgSFRNTExpbmtFbGVtZW50OjpzdHlsZVNoZWV0SXNMb2FkaW5nKCkgY29uc3QKIERPTVRva2Vu
TGlzdCYgSFRNTExpbmtFbGVtZW50OjpzaXplcygpCiB7CiAgICAgaWYgKCFtX3NpemVzKQotICAg
ICAgICBtX3NpemVzID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXpl
c0F0dHIpOworICAgICAgICBtX3NpemVzID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlz
LCBzaXplc0F0dHIpOwogICAgIHJldHVybiAqbV9zaXplczsKIH0KIApAQCAtNTIyLDcgKzUyMiw3
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRT
ZW5kZXIqIGV2ZW50U2VuZGVyKQogRE9NVG9rZW5MaXN0JiBIVE1MTGlua0VsZW1lbnQ6OnJlbExp
c3QoKQogewogICAgIGlmICghbV9yZWxMaXN0KSAKLSAgICAgICAgbV9yZWxMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERv
Y3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3JlbExpc3Qg
PSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6cmVsQXR0ciwgW10o
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAgICByZXR1
cm4gTGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQoZG9jdW1lbnQsIHRva2VuKTsKICAgICAg
ICAgfSk7CiAgICAgcmV0dXJuICptX3JlbExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBiNTVjNDY5MDYxZGNjMDRmMmExMTlhMjU1MzhlZjA4MmZlNmU0
MzU1Li5mNjRmZTkyYjZiN2QwMWM0OTRiNTdhNzY1ZTJhNTViNjRiM2YwNDNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBIVE1M
TWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRp
YWxpemF0aW9uKCkKIHsKLSAgICBtX21lZGlhU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8TWVk
aWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOworICAgIG1fbWVkaWFTZXNzaW9uID0gbWFrZVVuaXF1
ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CiAKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRk
QmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1
cmVGb3JGdWxsc2NyZWVuKTsKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmlj
dGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYSk7
CkBAIC0zMDI3LDcgKzMwMjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9s
ZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRpbQogCiAgICAgLy8g
NSAtIElmIHRoZSBzZWVrIHdhcyBpbiByZXNwb25zZSB0byBhIERPTSBtZXRob2QgY2FsbCBvciBz
ZXR0aW5nIG9mIGFuIElETCBhdHRyaWJ1dGUsIHRoZW4gY29udGludWUKICAgICAvLyB0aGUgc2Ny
aXB0LiBUaGUgcmVtYWluZGVyIG9mIHRoZXNlIHN0ZXBzIG11c3QgYmUgcnVuIGFzeW5jaHJvbm91
c2x5LgotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTZWVrPihu
b3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CisgICAgbV9w
ZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRpdmVU
b2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICBpZiAoZnJvbURPTSkgewogICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1aW5nIHNlZWsgZnJvbSAiLCBub3csICIg
dG8gIiwgdGltZSk7CiAgICAgICAgIG1fc2Vla1Rhc2tRdWV1ZS5zY2hlZHVsZVRhc2soc3RkOjpi
aW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2MTI0NTQxZjdjZjU0YTExMGE1ZTQ4NmU0MmM3MWNk
MmEyZWZhMTkzLi4yYzZlYzA1OGU0Yzk1MjEzMWMwZWEwOGUwOGE3ZWE5NDM1ODA2NTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTkwLDYgKzk5MCw3IEBAIGNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAog
ICAgIHN0cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29uc3QgTWVkaWFUaW1lJiBub3csIGNvbnN0
IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRvbGVyYW5j
ZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVyYW5jZSkKICAgICAgICAgICAgIDogbm93
KG5vdykKICAgICAgICAgICAgICwgdGFyZ2V0VGltZSh0YXJnZXRUaW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCBkZDRmYTJkNzBlNGY0M2Y0MmI4MjIy
ZDM3ZDQ0MThmMWExMzFlZDg3Li41NmI3MjA2YWUzYmU4ZjEwYTg4MTRhZTlhZmFjNjJiZmViNTYw
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtMTMy
LDcgKzEzMiw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25z
dCBTdHJpbmcmIHZhbHVlKQogRE9NVG9rZW5MaXN0JiBIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZv
cigpCiB7CiAgICAgaWYgKCFtX3Rva2VucykKLSAgICAgICAgbV90b2tlbnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOworICAgICAgICBtX3Rva2VucyA9
IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgZm9yQXR0cik7CiAgICAgcmV0dXJuICpt
X3Rva2VuczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKaW5kZXggZGRhOTQ0OWQ1N2FkNDIwODU4NjI3ZGVkM2ZkZDkxODEzMjE1ZmUyYi4u
NWI5OWQ1NTU1MzA0OTcwOTNjNmJjYTk5NTg3YzdhMmY3MjU1OTA5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yODcsNyArMjg3LDcg
QEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlv
bigpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgIXVzZUZhbGxiYWNrQ29udGVudCgpKSB7CiAgICAg
ICAgIGlmIChpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIp
Ci0gICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTElt
YWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VV
bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgICAgICBpZiAobV9uZWVkc0lt
YWdlUmVsb2FkKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVt
ZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggMTBiYzA5ZmYwOTljODg4YjIy
NjI2OTM5MGI4ZTFmOGJlNGNlMzk2Ny4uYjA0OTM5YjljMmQ3MjcwMjEzNzljNWE0ZGQzNDA0N2Q4
MTJhZDk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBTdW1tYXJ5U2xvdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
U2xvdEFzc2lnbm1lbnQgewogUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4gSFRNTFN1bW1hcnlFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IHN1bW1hcnkgPSBhZG9wdFJlZigq
bmV3IEhUTUxTdW1tYXJ5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIHN1bW1hcnkt
PmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5p
cXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOworICAgIHN1bW1hcnktPmFkZFNoYWRvd1Jvb3Qo
U2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlVW5pcXVlPFN1bW1hcnlTbG90RWxlbWVu
dD4oKSkpOwogICAgIHJldHVybiBzdW1tYXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAppbmRleCBhNWU3NWFhZmY1MmRkZjlmNTc1NDViYTA2N2VlYzc4OTg4
OGRkOWFiLi42N2ZmMjEyNTJmMWI4ZTgzMTBhMWQ3Y2JiMjMyZWE4YzczOTM4YTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9p
ZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgIHVwZGF0ZURpc3Bs
YXlTdGF0ZSgpOwogICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAg
ICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1faW1hZ2VM
b2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICBtX2lt
YWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAgICBpZiAoYXV0byogcmVuZGVy
ZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXItPmltYWdlUmVzb3Vy
Y2UoKS5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKQEAgLTEyNyw3ICsx
MjcsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogCiAgICAgICAgIGlmIChzaG91bGREaXNw
bGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAg
ICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxv
YWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVl
PEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBk
YXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCA3YmViYzdhMTBjY2JlZDUz
Y2ZlOGNhZjhhMDdjNzhlNmM1NzlkNjRmLi5iNjY4ZGExZjMyMTRkYmY5YjkxNjFlZmE4MzI1NmM5
NWNhODIxMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UHVi
bGljVVJMTWFuYWdlcj4gUHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKKyAgICBhdXRvIHB1YmxpY1VSTE1h
bmFnZXIgPSBtYWtlVW5pcXVlPFB1YmxpY1VSTE1hbmFnZXI+KGNvbnRleHQpOwogICAgIHB1Ymxp
Y1VSTE1hbmFnZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBwdWJsaWNVUkxNYW5h
Z2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCA4
YWY3M2E4YTAwNTQ5ODBhZDE3OTA2OTU2YTg0MzJhNmY5Y2RiMTRiLi5mNWRhYjBmNDJmMmQwNTNl
NzAzYzZjNTcyM2NhMTYwMzcxZDFhMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRp
b25NZXNzYWdlLmNwcApAQCAtMTE1LDkgKzExNSw5IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6
OnNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVCghbWVzc2FnZS5p
c0VtcHR5KCkpOwogICAgIG1fbWVzc2FnZSA9IG1lc3NhZ2U7CiAgICAgaWYgKCFtX2J1YmJsZSkK
LSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRh
dGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5p
cXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOwog
ICAgIGVsc2UKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlz
LCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKKyAgICAg
ICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6
OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3Qo
MF9zKTsKIH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNl
dE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKCkKICAgICBpZiAobWFnbmlmaWNhdGlvbiA8PSAwKQog
ICAgICAgICBtX3RpbWVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKLSAgICAgICAgbV90aW1lciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0
ZUJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgICAgIG1fdGltZXIt
PnN0YXJ0T25lU2hvdChzdGQ6Om1heCg1X3MsIDFfbXMgKiBzdGF0aWNfY2FzdDxkb3VibGU+KG1f
bWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uKSk7CiAgICAgfQogfQpAQCAtMjM0LDcg
KzIzNCw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdlKCkK
ICAgICB9CiAKICAgICAvLyBXZSBtdXN0IG5vdCBtb2RpZnkgdGhlIERPTSB0cmVlIGluIHRoaXMg
Y29udGV4dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0TWVzc2FnZSgpLgotICAgIG1fdGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxl
dGVCdWJibGVUcmVlKTsKKyAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZW
YWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgbV90aW1lci0+c3RhcnRP
bmVTaG90KDBfcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggYjE2Nzc4NDQyOGMz
YmZlOWU2ZjE2YTc3ODQwZDNmM2JiOTcwNWI5Ni4uNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2
NTRjY2M1NmMwMjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAg
c3RydWN0IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQgewogCiAgICAgRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0
UmVjdCYgY2xpcCkKICAgICAgICAgOiBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3Bs
YXlMaXN0Q29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlz
cGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0
ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0
LCBzdGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgICAgICB9KQogICAgIHsKICAg
ICB9CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OmRyYXdpbmdDb250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAoVU5MSUtF
TFkobV91c2VzRGlzcGxheUxpc3REcmF3aW5nKSkgewogICAgICAgICBpZiAoIW1fcmVjb3JkaW5n
Q29udGV4dCkKLSAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOworICAgICAg
ICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVy
bygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAgICAgIHJldHVybiAmbV9yZWNvcmRpbmdD
b250ZXh0LT5jb250ZXh0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2MzExOTE3NTcwZjJkYjI4
NTk0Y2JiMzQ5MDI0Njk5N2I1ODNmYmUwLi5jZDQ3MjEyNjFiMmUwMjJiNTUyNWRkM2QzY2E1NDY5
ZjljMGIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTM1OSw3ICsxMzU5LDcgQEAgV2ViR0xFeHRlbnNp
b24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVMaXRl
cmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBu
YW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAgICAg
IHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6
IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5p
cXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAh
PSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggZTA2YmY5OWQ1OTE1OTYzOTgwYTYxMWMzMmE4MzllMjk3ZjEyODA0NS4uZTVmZGU3MDMzNzQ1
NmEzMWUxNTcxZWUxMGYzZmQyNjQyZGIwMzZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMTYsNyArMTE2LDcg
QEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJp
YWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAogICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAgICAgICAgIGlmICghdmFyaWFibGUpIHsg
XAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8
dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5h
YmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAogICAgICAgICAgICAg
aWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7IFwKICAgICAgICAg
fSBcCkBAIC0xMzIsNyArMTMyLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBt
X2V4dFNoYWRlclRleHR1cmVMT0QgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgICAgICAgICAgICAgbV9leHRTaGFkZXJU
ZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7
CisgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbWFrZVVuaXF1ZTxFWFRT
aGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xNTksNyArMTU5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
ICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgICAgICAgICAgICAgbV93ZWJnbERyYXdC
dWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7CisgICAg
ICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbWFrZVVuaXF1ZTxXZWJHTERyYXdCdWZm
ZXJzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC0xNzEsNyArMTcxLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX2Fu
Z2xlSW5zdGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FO
R0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwotICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5j
ZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7
CisgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG1ha2VVbmlxdWU8QU5H
TEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggM2VjZTdlZWI3NDJmYWRiNmZlMThi
MzNlYjVhNjEzOWNlZDQxYmE1Ni4uZDE2NmZiMjM5MDc2ZDM2MjY1ZDk2YzY0NWYwNzE4NzVhYzgy
YmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc5OSw4ICs3OTksOCBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX2NvbnRleHQt
PnZpZXdwb3J0KDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7
CiAgICAgbV9jb250ZXh0LT5zY2lzc29yKDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFz
U2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2so
c3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMp
KTsKLSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKHN0ZDo6bWFrZV91bmlx
dWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KHRoaXMpKTsKKyAg
ICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRl
cmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnNldEVycm9y
TWVzc2FnZUNhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNz
YWdlQ2FsbGJhY2s+KHRoaXMpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpzZXR1cEZsYWdzKCkKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQogICAgICAgICBS
ZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNy
ZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpOwogCiAgICAg
ICAgIGZvciAoYXV0byYgZXJyb3IgOiBnZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikuc3BsaXQoJ1xu
JykpCi0gICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpS
ZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDog
IiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkpOworICAgICAgICAgICAgY2FudmFzLT5k
b2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkp
KTsKICAgICB9CiB9CiAKQEAgLTU4MDgsOSArNTgwOCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmCiAgICAgLy8gRXJyb3IgbWVzc2FnZXMgY2FuIG9jY3VyIGR1cmluZyBmdW5jdGlvbiBjYWxs
cywgc28gc2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZW0uCiAgICAgaWYgKGxldmVsID09IE1lc3Nh
Z2VMZXZlbDo6RXJyb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNr
PiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3Rh
dGU6OmN1cnJlbnRTdGF0ZSgpKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmlu
ZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFjZSkp
OworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZl
bCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNv
bnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNz
YWdlKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywg
bGV2ZWwsIG1lc3NhZ2UpOwogCiAgICAgYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpOwogICAg
IGlmIChjYW52YXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQ
cmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2Fk
U2Nhbm5lci5jcHAKaW5kZXggZTg1OTBjY2M2OTcyOGFmMzkzMDFkM2FlOGQ4OTg4ZjVjMTVhNGIy
YS4uYWVmZTQ1N2Y0ZWZmMDQzNjU3NjNjYjI2ZjcxNzg0NjNlMzJlMWQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjAxLDcg
KzIwMSw3IEBAIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAgICAgICAgaWYg
KCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBVUkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJvbSB0aGUgSFRNTFByZWxvYWRTY2FubmVy
IHZpYSBzY2FuKCk6IHdpdGhvdXQgaXQgd2Ugd2lsbCBnZXQgcmVsYXRpdmUgVVJMcyB3cm9uZy4K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJz
ZXQgaW4gdGhlIHByZWxvYWQgcmVxdWVzdD8KLSAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVu
dFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQsIFN0cmluZygpLCBQcmVs
b2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5n
KSk7CisgICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQobWFrZVVuaXF1ZTxQcmVsb2FkUmVx
dWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpD
U1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8s
IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwogICAgICAgICB9CiAgICAgICAgIG1fc3Rh
dGUgPSBJbml0aWFsOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocnVsZSwgImNoYXJzZXQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA1MWJhZTRjMjFjZjk0MGRjZDhjNmQzMjBi
YzRkYmQ2NjI2YmU3ZDlmLi45YWM0NDRlZjBhNjcxZjhhNDc2OTk1N2FlMzIyMmJkOGQxMDA3ZDk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rpb25EYXRhPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEUKICAg
ICBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGVsZW1lbnRJbnRlcmZhY2UgPSBudWxscHRyOwog
ICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0
b21FbGVtZW50SW50ZXJmYWNlKHRva2VuLCAmZWxlbWVudEludGVyZmFjZSk7CiAgICAgaWYgKFVO
TElLRUxZKGVsZW1lbnRJbnRlcmZhY2UpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4oKmVsZW1lbnRJbnRlcmZhY2UsIHRva2Vu
Lm5hbWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJmYWNl
LCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygpKSk7CiAgICAgYXR0YWNo
TGF0ZXIoY3VycmVudE5vZGUoKSwgKmVsZW1lbnQpOwogICAgIG1fb3BlbkVsZW1lbnRzLnB1c2go
SFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSh0
b2tlbikpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDRmZjRlMmI4Nzg4YTkxOWJmNDJk
MTdhZDlmZDY1MWI5YjAzYWQxOWIuLmRkOWVhMDRjNmY1MDBjODY0YjhjOTRjMTkzODM3ODc3YWZm
ZGU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERv
Y3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX29wdGlvbnMoZG9jdW1lbnQpCiAgICAgLCBt
X3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5p
cXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVu
bmVySG9zdCY+KCp0aGlzKSkpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8
SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwg
bV9vcHRpb25zKSkKLSAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRN
TFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1
ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5l
ckhvc3QmPigqdGhpcykpKQorICAgICwgbV90cmVlQnVpbGRlcihtYWtlVW5pcXVlPEhUTUxUcmVl
QnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9u
cykpCisgICAgLCBtX3BhcnNlclNjaGVkdWxlcihtYWtlVW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVs
ZXI+KCp0aGlzKSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGRvY3VtZW50KQotICAgICwg
bV9wcmVsb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+KGRvY3Vt
ZW50KSkKKyAgICAsIG1fcHJlbG9hZGVyKG1ha2VVbmlxdWU8SFRNTFJlc291cmNlUHJlbG9hZGVy
Pihkb2N1bWVudCkpCiB7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIEhUTUxEb2N1bWVu
dFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBF
bGVtZW4KICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1bWVudCgp
LCByYXdQb2xpY3kpCiAgICAgLCBtX29wdGlvbnMoZnJhZ21lbnQuZG9jdW1lbnQoKSkKICAgICAs
IG1fdG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1fdHJlZUJ1aWxkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBh
cnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAsIG1fdHJlZUJ1aWxkZXIobWFr
ZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQs
IHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKICAgICAsIG1feHNzQXVkaXRvckRl
bGVnYXRlKGZyYWdtZW50LmRvY3VtZW50KCkpCiB7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1odG1sLWZyYWdtZW50cwpA
QCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVy
KFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsK
ICAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLmlzSW5EYXRhU3RhdGUoKSk7CiAgICAgICAgIGlm
ICghbV9wcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCkt
PnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1f
cHJlbG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25z
LCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAg
ICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChtX2lucHV0LmN1cnJlbnQo
KSk7CiAgICAgICAgIH0KICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2NhbigqbV9wcmVsb2Fk
ZXIsICpkb2N1bWVudCgpKTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6aW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmIHNvdXJjZSkKICAgICAgICAgLy8gQ2hlY2sg
dGhlIGRvY3VtZW50LndyaXRlKCkgb3V0cHV0IHdpdGggYSBzZXBhcmF0ZSBwcmVsb2FkIHNjYW5u
ZXIgYXMKICAgICAgICAgLy8gdGhlIG1haW4gc2Nhbm5lciBjYW4ndCBkZWFsIHdpdGggaW5zZXJ0
aW9ucy4KICAgICAgICAgaWYgKCFtX2luc2VydGlvblByZWxvYWRTY2FubmVyKQotICAgICAgICAg
ICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxv
YWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIg
PSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51
cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIG1faW5zZXJ0
aW9uUHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKHNvdXJjZSk7CiAgICAgICAgIG1faW5zZXJ0
aW9uUHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApp
bmRleCAzMGM1YjQ2ZGYxMDNkYmRmNmY0YjdjZTQwOWNjM2FhMTZjNTQ2MDEyLi42ZWYxNzEyYjlk
NjNiNzFhY2I3YzE2OWY2MmI0OWM4MmYzMTA1ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQg
SFRNTEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUoUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSwg
RWxlbWVudFJlY29yZCYgcmVjCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICArK21f
c3RhY2tEZXB0aDsKLSAgICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1
ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQo
KSkpOworICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4dChtYWtlVW5pcXVlPEVsZW1lbnRSZWNv
cmQ+KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSk7CiAgICAgICAg
IHJlY29yZEFib3ZlLT5uZXh0KCktPmVsZW1lbnQoKS5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgSFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbihSZWY8SFRNTFN0YWNrSXRlbT4mJiBpdGVtKQogICAgIEFTU0VS
VChtX3Jvb3ROb2RlKTsKIAogICAgICsrbV9zdGFja0RlcHRoOwotICAgIG1fdG9wID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7
CisgICAgbV90b3AgPSBtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdU
Rk1vdmUobV90b3ApKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwb3BDb21tb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAK
aW5kZXggNTNhMTcyZDMzYWZjZGE4ZmY4OGQzNDRkOWMwZWYwOTAzY2RlY2M5Mi4uMzNkN2IzYmIw
OGI2NTJkMGNkNjliY2VkZjFmODYwNjMxYWZhYTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAg
Y2xhc3MgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyIHsKICAgICAgICAgaWYg
KCFMaW5rTG9hZGVyOjppc1N1cHBvcnRlZFR5cGUodHlwZS52YWx1ZSgpLCBtX3R5cGVBdHRyaWJ1
dGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byByZXF1ZXN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQp
LCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwgdHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0
cmlidXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJlclBvbGljeSk7CisgICAgICAgIGF1dG8g
cmVxdWVzdCA9IG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvcihtX3RhZ0lk
KSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0
dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOwogICAgICAgICByZXF1
ZXN0LT5zZXRDcm9zc09yaWdpbk1vZGUobV9jcm9zc09yaWdpbk1vZGUpOwogICAgICAgICByZXF1
ZXN0LT5zZXROb25jZShtX25vbmNlQXR0cmlidXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVG9rZW4uaAppbmRleCBmNzFiMjFkMjc4OTVlNTc4YWI0N2Y1Y2Y1NDAyNTgzZTM2MTIx
ZDAyLi4zZjc0NmRjNmQ2NjdjNDM3MTFiNjhkMDliNDIwMmQyM2ZmMGMwODhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjA5LDcgKzIwOSw3IEBAIGlubGluZSB2
b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IFVu
aW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IERPQ1RZUEU7Ci0gICAgbV9kb2N0eXBlRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8RG9jdHlwZURhdGE+KCk7CisgICAgbV9kb2N0eXBlRGF0YSA9IG1h
a2VVbmlxdWU8RG9jdHlwZURhdGE+KCk7CiB9CiAKIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVn
aW5ET0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvci5jcHAKaW5kZXggYWM2ZTc5NDQzMDA3MDM2NDIxZWIxNmRmODNhOTBkM2QyNzcyZjg1
Ni4uMDYxZDk1NjdiNzg0ZDliMGJhY2YzZjZkYjljZGU1YTgwNmIwMWMxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8WFNTSW5mbz4gWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVy
VG9rZW5SZXF1ZXN0JiByZXF1ZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJvb2wg
ZGlkQmxvY2tFbnRpcmVQYWdlID0gbV94c3NQcm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25EaXNw
b3NpdGlvbjo6QmxvY2tFbmFibGVkOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFhTU0lu
Zm8+KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQ
cm90ZWN0aW9uSGVhZGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxYU1NJbmZvPihtX2RvY3Vt
ZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhl
YWRlcik7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU3RhcnRUb2tlbihjb25zdCBGaWx0
ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC03MTIsNyArNzEyLDcgQEAgU3VmZml4VHJlZTxB
U0NJSUNvZGVib29rPiogWFNTQXVkaXRvcjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSgpCiAg
ICAgY29uc3QgdW5zaWduZWQgc3VmZml4VHJlZURlcHRoID0gNTsKIAogICAgIGlmICghbV9kZWNv
ZGVkSFRUUEJvZHlTdWZmaXhUcmVlICYmIG1fZGVjb2RlZEhUVFBCb2R5Lmxlbmd0aCgpID49IG1p
bmltdW1MZW5ndGhGb3JTdWZmaXhUcmVlKQotICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1ZmZp
eFRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVj
b2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOworICAgICAgICBtX2RlY29kZWRIVFRQQm9k
eVN1ZmZpeFRyZWUgPSBtYWtlVW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVj
b2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwogICAgIHJldHVybiBtX2RlY29kZWRIVFRQ
Qm9keVN1ZmZpeFRyZWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDNhNjM3ZGFlZjAx
MjRlMmU0ZWQzMzZiNjYzNzUyZDAwMjJiNWJlMDEuLmQ1NjZiY2M3OTRhYTcyNGFiZTYwYTA4MGEz
ZjJjZjk1MWY0NTM3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIFJlbmRl
clRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZW5k
ZXJlcigpIGNvbnN0CiBPcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVu
ZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIHN0eWxlID0gZG93bmNhc3Q8
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KCkpLmNyZWF0ZUlubmVyVGV4
dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOwotICAgIHJldHVybiBFbGVtZW50U3R5bGUoc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHlsZSkpKTsKKyAgICByZXR1cm4gRWxl
bWVudFN0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CiB9CiAK
IC8vIE1BUks6IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCBlNDAy
MDBhOWE3YTIyNWRkZmQ4NzQ0ZDhjOTNiZGU2OTA5NjQ3MDA5Li40OTM0ZDcyOWMxOThkMDgwNTlh
YzhjOWYwYjE3NGE5NWU3NmY3MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNr
Q3VlJiBjdWUpCiBXZWJWVFRQYXJzZXImIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNlcigp
CiB7CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xp
ZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fd2ViVlRU
UGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNl
ckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiAq
bV93ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCA4NTViYjIzOTI3ZWIxMGEzNWE1OWQxMmJl
MGQyMzVhNzNjYWJjMTBlLi4xMGZhYTEyZjkwYjQ2MGI1MDU2ZjI1NjdjYzJkOTgxMjdkOGZhYTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRU
cmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0
VHJhY2suY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluYmFuZFdlYlZUVFRleHRUcmFjazo6fkluYmFu
ZFdlYlZUVFRleHRUcmFjaygpID0gZGVmYXVsdDsKIFdlYlZUVFBhcnNlciYgSW5iYW5kV2ViVlRU
VGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAgICAg
IG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19j
YXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0
aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDhmMjljN2YxNjc5YTBm
YTI5MThkZWNmYTUxM2UyZDgwMjcxYTM1ZTIuLjdhMWUxYmM0NjkxYjIxMTY4OGMzY2Y1ZGE2MTlh
YzYxZGJkNmZlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFi
bGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVU
ZXh0VHJhY2suY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Omxv
YWRUaW1lckZpcmVkKCkKICAgICAvLyA0LiBEb3dubG9hZDogSWYgVVJMIGlzIG5vdCB0aGUgZW1w
dHkgc3RyaW5nLCBwZXJmb3JtIGEgcG90ZW50aWFsbHkgQ09SUy1lbmFibGVkIGZldGNoIG9mIFVS
TCwgd2l0aCB0aGUKICAgICAvLyBtb2RlIGJlaW5nIHRoZSBzdGF0ZSBvZiB0aGUgbWVkaWEgZWxl
bWVudCdzIGNyb3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmlidXRlLCB0aGUgb3JpZ2luIGJlaW5nIHRo
ZQogICAgIC8vIG9yaWdpbiBvZiB0aGUgbWVkaWEgZWxlbWVudCdzIERvY3VtZW50LCBhbmQgdGhl
IGRlZmF1bHQgb3JpZ2luIGJlaGF2aW91ciBzZXQgdG8gZmFpbC4KLSAgICBtX2xvYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tMb2Fk
ZXJDbGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPigm
bV90cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8
VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJDbGllbnQmPigqdGhp
cyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90cmFja0VsZW1lbnQt
PmRvY3VtZW50KCkpKTsKICAgICBpZiAoIW1fbG9hZGVyLT5sb2FkKG1fdXJsLCAqbV90cmFja0Vs
ZW1lbnQpKQogICAgICAgICBtX3RyYWNrRWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKEhUTUxUcmFj
a0VsZW1lbnQ6OkZhaWx1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElIb3N0LmNwcAppbmRleCAwMzEwODBlMWFiNjZkMzJjYzljMDcxNzhmMDJmOTM1
MjNiYzcwNmIwLi45MDI5YjkyZDhiODNmMmQ3YmVkNmQ4ZTU0NTc2YzBhMTY4Y2E1MjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAt
NjEsNyArNjEsNyBAQCBSZWY8Q29tbWFuZExpbmVBUElIb3N0PiBDb21tYW5kTGluZUFQSUhvc3Q6
OmNyZWF0ZSgpCiB9CiAKIENvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KCkK
LSAgICA6IG1faW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmpl
Y3Q+KCkpCisgICAgOiBtX2luc3BlY3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2Jq
ZWN0PigpKQogewogfQogCkBAIC0xOTYsNyArMTk2LDcgQEAgSlNWYWx1ZSBDb21tYW5kTGluZUFQ
SUhvc3Q6OndyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2IKIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKCkKIHsKICAgICBt
X3dyYXBwZXJzLmNsZWFyQWxsV3JhcHBlcnMoKTsKLSAgICBtX2luc3BlY3RlZE9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCk7CisgICAgbV9pbnNwZWN0ZWRPYmpl
Y3QgPSBtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCmluZGV4IDZjMzFl
NDk4ZTQzNGQzMDBiMGYxYzZlYWI4NDM0Njc3NmNmMGEyZmMuLjgzODkwOGRjOTM2ZWZhNmJhMjZj
NzkxNjcxNDRkYjdkZTllMmFlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3Iu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIERPTUVkaXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9u
IGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gcGVyZm9ybSgpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5wYXJl
bnROb2RlKCkpIHsKLSAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZSk7
CisgICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gbWFrZVVuaXF1ZTxSZW1vdmVDaGls
ZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOwogICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBtX3JlbW92ZUNoaWxkQWN0aW9uLT5wZXJmb3JtKCk7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOwpAQCAtMzg1LDI3ICszODUsMjcgQEAgRE9NRWRpdG9yOjp+RE9N
RWRpdG9yKCkgPSBkZWZhdWx0OwogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6Omluc2Vy
dEJlZm9yZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiBub2RlLCBOb2RlKiBhbmNob3JO
b2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPElu
c2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSkp
OworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPEluc2VydEJlZm9yZUFj
dGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOwogfQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUsIE5v
ZGUmIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsKKyAgICByZXR1cm4gbV9o
aXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwg
bm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldEF0dHJpYnV0ZShF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0QXR0
cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpOworICAgIHJldHVybiBtX2hpc3Rv
cnkucGVyZm9ybShtYWtlVW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwg
dmFsdWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1
dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBt
X2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4o
ZWxlbWVudCwgbmFtZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVl
PFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSkpOwogfQogCiBFeGNlcHRpb25P
cjx2b2lkPiBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcm
IGh0bWwsIE5vZGUqJiBuZXdOb2RlKQogewotICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOworICAgIGF1dG8gYWN0aW9uID0g
bWFrZVVuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOwogICAgIGF1dG8mIHJh
d0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byByZXN1bHQgPSBtX2hpc3RvcnkucGVyZm9ybShX
VEZNb3ZlKGFjdGlvbikpOwogICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNDE1
LDIyICs0MTUsMjIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwo
Tm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYKIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
U3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKQogewotICAgIHJldHVybiBtX2hpc3Rv
cnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlvbj4oZWxl
bWVudCwgd2hlcmUsIGh0bWwpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVu
aXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7CiB9
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChUZXh0JiB0
ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2RlLCB0
ZXh0KSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVwbGFjZVdo
b2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYgbmV3
Tm9kZSwgTm9kZSYgb2xkTm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3Rk
OjptYWtlX3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3Zl
KG5ld05vZGUpLCBvbGROb2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VV
bmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdOb2Rl
KSwgb2xkTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE5vZGVW
YWx1ZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwg
dmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxTZXROb2Rl
VmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CiB9CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRXJy
b3JTdHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQsIEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5k
ZXggMjBkYTM0MzBjMTVjODU1MTQ4NWM1NzM4YzU0N2ZhMGMzNDMxYTFiYS4uMmU5ZDc1NTY1NWM4
M2VmODgxNTk2YWFkMjBjOTZlMTBlNjg4MjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBh
ZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVh
dGVEaWdlc3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNNYXAqIHVudXNlZE5vZGVzTWFwKQogewot
ICAgIGF1dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWdlc3Q+KCk7CisgICAgYXV0byBk
aWdlc3QgPSBtYWtlVW5pcXVlPERpZ2VzdD4oKTsKICAgICBkaWdlc3QtPm5vZGUgPSAmbm9kZTsK
ICAgICBTSEExIHNoYTE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCA1MjAzNzA2YjUzYjMyYjBiYTRmMGVkNGQ0YmE0MDBiNmM3
OWI1ZTE1Li42M2ZmM2FiNjIzYTQ0NmNkNjIwZWU0N2UzOTIwNTVjZWE1MWE4NzZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC05
MywxMCArOTMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ29u
dHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQq
IGluc3BlY3RvckNsaWVudCkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50
aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIo
c3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91
dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCi0gICAgLCBtX292ZXJsYXko
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQp
KQorICAgICwgbV9vdmVybGF5KG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5z
cGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3Jl
YXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKHBhZ2UpCiAgICAgLCBtX3BhZ2UocGFn
ZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250
cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAgYXV0
byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7Cisg
ICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VD
b250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChj
b25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVB
Z2VudCkpOwogfQpAQCAtMTUzLDM3ICsxNTMsMzcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBlbnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogICAgIGVu
c3VyZVBhZ2VBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCkpOwogCi0gICAgYXV0byBkZWJ1
Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRl
eHQpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8UGFnZURlYnVnZ2VyQWdl
bnQ+KHBhZ2VDb250ZXh0KTsKICAgICBhdXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBkZWJ1Z2dlckFn
ZW50LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsK
IAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+
KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VV
bmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsKICAgICBlbnN1
cmVET01BZ2VudCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7Ci0g
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdlQ29u
dGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1f
YWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VD
b250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1f
YWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29u
dGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvcldvcmtlckFn
ZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOwogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCkp
OwogI2VuZGlmCiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBh
dXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtlVW5pcXVlPEluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQo
KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikp
OwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0g
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+
KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9y
Q1BVUHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgotICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250
ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUF1ZGl0QWdl
bnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29udGV4
dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VBdWRpdEFnZW50PihwYWdl
Q29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNhbnZh
c0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29t
bWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJ
SG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmNvcHlSZWYoKSk7CkBAIC00MjEsNyArNDIxLDcgQEAgSW5zcGVjdG9yQWdlbnQmIElu
c3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1f
aW5zcGVjdG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENv
bnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2Vu
dCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICAgICAgbV9p
bnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAgICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdlbnQpOwogICAgICAg
ICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwpAQCAtNDMzLDcgKzQz
Myw3IEBAIEluc3BlY3RvckRPTUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01B
Z2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckRPTUFnZW50KSB7CiAgICAgICAgIGF1dG8g
cGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gZG9tQWdlbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgbV9vdmVy
bGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBkb21BZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9y
RE9NQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgICAgICBtX2luc3Bl
Y3RvckRPTUFnZW50ID0gZG9tQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChX
VEZNb3ZlKGRvbUFnZW50KSk7CiAgICAgfQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIEluc3BlY3RvclBh
Z2VBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KCkKIHsKICAgICBp
ZiAoIW1faW5zcGVjdG9yUGFnZUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBw
YWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gcGFnZUFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVudCwg
bV9vdmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBwYWdlQWdlbnQgPSBtYWtlVW5pcXVlPElu
c3BlY3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1faW5zcGVjdG9yQ2xpZW50LCBtX292ZXJs
YXkuZ2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvclBhZ2VBZ2VudCA9IHBhZ2VBZ2VudC5nZXQo
KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUocGFnZUFnZW50KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmgKaW5kZXggMjhlZTcyN2EzNmQ2NmNlMjEwOTY5NzgzMWFlMGE4YWFjNDIzODU3
NS4uNmMxYjUxYWRlZTlhMzg0MjYzMzM4ZjQ1ZDg4ODRhNmQ5YzM3ZWE4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwg
OiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNldHRpbmdzIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBTZXR0
aW5ncygpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+U2V0dGluZ3MoKSA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKaW5kZXgg
MDBkNWYxODUyY2ViYTI3MGMzYWY4MWMxMzIwOTAwNWRhN2IxMThhOC4uYzgxMDNkZDdkYmI4MzIw
ZWFiMmU2YWQ1ZTMyYzJkNTJkNzJiMDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlv
bikKIAogdm9pZCBJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVTdGF0ZSgpCiB7Ci0gICAg
cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigpKTsKKyAgICBwZXJm
b3JtKG1ha2VVbmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBJbnNwZWN0b3JIaXN0b3J5Ojp1bmRvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAxNDk1ZjM5ZTJhNDVlM2M3MmE5NjE0
YWZmNTc5ZTY0ZGRmNTVjMGI1Li5kYmU1NTUzZjAxMjE3MzRhOTY1OTEzODQ2YWFkNDZiZjI3Nzk3
M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3Vy
Y2VEYXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291cmNlRGF0YUxpc3Q+IHNvdXJjZUQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIG1fc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UnVs
ZVNvdXJjZURhdGFMaXN0PigpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkg
c29sdXRpb24gdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBmbGF0IHNvdXJjZURhdGEgc3RydWN0dXJl
CiAgICAgLy8gY29udGFpbmluZyBvbmx5IHN0eWxlIHJ1bGVzLCBldmVuIHRob3VnaCBDU1NQYXJz
ZXIgbm93IHByb3ZpZGVzIHRoZSBmdWxsIHJ1bGUgc291cmNlIGRhdGEgdHJlZS4KQEAgLTEzMjAs
NyArMTMyMCw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0YSgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxl
U2hlZXRDb250ZW50czo6Y3JlYXRlKCk7Ci0gICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIGF1dG8gcnVsZVNv
dXJjZURhdGFSZXN1bHQgPSBtYWtlVW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKICAgICAK
ICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQocGFyc2VyQ29udGV4dEZvckRvY3VtZW50KG1f
cGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSkpOwogICAgIFN0eWxlU2hlZXRIYW5kbGVy
IGhhbmRsZXIobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIG1fcGFnZVN0eWxlU2hlZXQtPm93
bmVyRG9jdW1lbnQoKSwgcnVsZVNvdXJjZURhdGFSZXN1bHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggZDNiNzU5
ZjI5Y2NmMWFlMTgwMjgwZDVlMTczNjcwZDI5YzRmOGNjMS4uZmQ3Y2FkMzA3NjdlNzc1YjE2NzVl
YzQ1NGVmN2EwOGJiMDM2ZDU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsK
IAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZURhdGE+
KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gbWFrZVVuaXF1
ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwogICAgIHJlc291cmNlRGF0YS0+
c2V0VHlwZSh0eXBlKTsKICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1
ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVx
dWVzdElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNv
dXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8gcmVzb3VyY2VEYXRhID0g
bWFrZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwogICAgIHJlc291
cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoJmNhY2hlZFJlc291cmNlKTsKICAgICBtX3JlcXVl
c3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VEYXRh
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggNDM1MWU4NzJhOWU1YTM2NDcyOWY1YjRmYjI2MjE2Yzcz
MzAyYzhkZC4uMzY0YWVhN2Q0YjVkOTExNzkzMjc1ZDY0NmYyOTVlNjdiZjBlZWVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICA6IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+
KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhp
cywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5kUm91
dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAg
ICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQpAQCAtNjksNyAr
NjksNyBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAogCiAgICAgYXV0byB3b3JrZXJDb250ZXh0
ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3b3JrZXJDb250ZXh0KTsKKyAgICBhdXRv
IGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3b3JrZXJDb250
ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25z
b2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2Vu
dCkpOwogfQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+cmVzZXQoKTsK
ICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQoKTsKIAotICAgIG1fZm9yd2FyZGluZ0No
YW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93
b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8
V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBt
X2Zyb250ZW5kUm91dGVyLT5jb25uZWN0RnJvbnRlbmQoKm1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0
KCkpOwogICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVu
ZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQpAQCAtMTY0LDE4
ICsxNjQsMTggQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKCkKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgpOwog
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyUnVudGltZUFnZW50
Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2Vy
UnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV93b3JrZXJHbG9iYWxT
Y29wZSkpIHsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2Vydmlj
ZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAg
ICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtl
ckNvbnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyTmV0
d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXZWJIZWFwQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsK
LSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50
Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZCht
YWtlVW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJBdWRpdEFnZW50Pih3b3JrZXJDb250
ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQ
SUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYThkM2M4OTljMzI4MGEyOGU2NzMyY2Y4OGFi
ODRkMDAwZDQ1ZWQyZC4uZmRmMDQ0YzU3OWIzNjhjMzIwNTFiNjVkYzQ0MGUzODdmNjAxOGZiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDQsNyArNDQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJBcHBsaWNhdGlvbkNhY2hlIl9zLCBjb250
ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2Fj
aGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJv
ZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGNmOTRjYTgwOTZmZjU3MWQ3NGQ3NzNiMWYwMDI3
NTA1NGMwY2UxZjkuLjExNjI0ZTI0MDk0NjRmYzFlMWU2NWE2OTk4ZGJkMWIwNjgyZjBiMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJv
ZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50OjpJbnNwZWN0b3JDUFVQ
cm9maWxlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIkNQVVByb2ZpbGVyIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6Q1BVUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0YjY5OTQ1ZWM3MDY3Zjk2
NDNlNDgwNzMwMzQ4NDI2ODZkNjE5ZmI4Li40NGU5YzVhYmViNGM5NjZhYmFlYTk0NGE0MGQ1ZTAz
ZDQ3MmQxMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIENTU1N0eWxlUnVsZSog
SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUmIHJ1bGUpCiAKIEluc3Bl
Y3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNTUyJfcywgY29udGV4dCkKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250
ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KQEAgLTYyNiw3ICs2MjYsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8
U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxT
ZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkpOwogICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVj
dG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiB9
CkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5
KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3Rv
clN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQg
PSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0U3R5bGVUZXh0QWN0
aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CiAgICAgaWYgKHBl
cmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNw
ZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZXJmb3JtUmVz
dWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFJ1
bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0
b3IpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJm
b3JtKG1ha2VVbmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0
LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJy
b3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1
cm47CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBZGRS
dWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CisgICAgYXV0byBhY3Rp
b24gPSBtYWtlVW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVj
dG9yKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwogICAgIGF1dG8gcGVyZm9ybVJl
c3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oV1RGTW92ZShhY3Rpb24pKTsKICAg
ICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRl
eCA5YmUwNjExOWZiMzIxOTcwMDcyOTcyMmQ4MzZhODE2YjI1ZjFjMDE1Li4wZTUwYzc1YmE0ODc1
MTU1NmU0MTJkY2I5N2FkMTk2Njk2NWE5OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNzEsNyAr
NzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiQ2FudmFzIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQ
YWdlKQpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29y
ZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kCiAgICAgaWYg
KCFpbnNwZWN0b3JDYW52YXMtPmN1cnJlbnRGcmFtZUhhc0RhdGEoKSkgewogICAgICAgICBpZiAo
YXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y29udGV4dCgp
LmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgICAgIGF1
dG8mIHF1ZXVlID0gTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpOwotICAgICAgICAg
ICAgcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgWyYsIHByb3RlY3RlZEluc3BlY3Rv
ckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCldIHsKKyAgICAgICAgICAgIHF1ZXVl
LmFwcGVuZChtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihxdWV1ZSwgKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNw
ZWN0b3JDYW52YXMuY29weVJlZigpXSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZh
c0VsZW1lbnQgPSBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMtPmNhbnZhc0VsZW1lbnQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzRWxlbWVudC0+aXNEZXNjZW5kYW50T2YoY2Fu
dmFzRWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCmluZGV4IDZjMTk2ZTBjYzY4MmI0NDI1NmM3ZGRhYWUwOTBhYTBhYWQ1NTMxN2Qu
LmYwYTI4YzEzMzFjNWJiMzA4OGQ1M2U3MjQzZGJhZjRlZWI2M2U3YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBA
IC0yODMsNyArMjgzLDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5n
KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01B
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5
KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET00iX3MsIGNvbnRleHQpCiAgICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2Up
CiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTMwMSw4ICszMDEsOCBAQCBJbnNwZWN0b3JE
T01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2hpc3RvcnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7Ci0gICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7CisgICAgbV9oaXN0b3J5ID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOworICAgIG1fZG9tRWRpdG9yID0gbWFrZVVuaXF1ZTxE
T01FZGl0b3I+KCptX2hpc3RvcnkpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldElu
c3BlY3RvckRPTUFnZW50KHRoaXMpOwogICAgIG1fZG9jdW1lbnQgPSBtX2luc3BlY3RlZFBhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBpbnQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICAg
ICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUpOwogICAgICAgICBpZiAoIXBh
cmVudCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWluZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4g
cHVzaCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBhdXRvIG5ld01hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CisgICAgICAgICAgICBhdXRvIG5ld01hcCA9IG1ha2VVbmlx
dWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5nZXQo
KTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxl
YXNlKCkpOwogICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CkBAIC0xMTc3LDcgKzExNzcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0Q29uZmlnRnJvbUluc3BlY3RvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0
Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGln
aHRDb25maWc+KCk7CiAgICAgYm9vbCBzaG93SW5mbyA9IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxz
ZSAoZG8gbm90IHNob3cgYSB0b29sdGlwKS4KICAgICBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qt
PmdldEJvb2xlYW4oInNob3dJbmZvIiwgc2hvd0luZm8pOwogICAgIGhpZ2hsaWdodENvbmZpZy0+
c2hvd0luZm8gPSBzaG93SW5mbzsKQEAgLTExOTYsMTMgKzExOTYsMTMgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgYm9vbCBlbmEKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChFcnJv
clN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBKU09O
OjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3Qg
Ym9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91
bmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIGF1
dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCkpOwogICAgIGlubmVySGlnaGxpZ2h0UXVhZChXVEZNb3ZlKHF1YWQpLCBjb2xvciwgb3V0
bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6
QXJyYXkmIHF1YWRBcnJheSwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6
T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsK
LSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKTsKKyAgICBhdXRv
IHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNlUXVhZChxdWFk
QXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgUXVh
ZCBmb3JtYXQiX3M7CiAgICAgICAgIHJldHVybjsKQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBKU09OOjpBcnJhCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxp
Z2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBKU09OOjpPYmpl
Y3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCog
dXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjpt
YWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgYXV0byBoaWdobGlnaHRDb25maWcg
PSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRP
dXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+
dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VDb29yZGlu
YXRlcyA6IGZhbHNlOwpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewot
ICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0
Q29uZmlnPigpOworICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGln
aGxpZ2h0Q29uZmlnPigpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gdHJ1
ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KICAgICAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgICAgIGhpZ2hsaWdodENv
bmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CkBAIC0xMzk4
LDcgKzEzOTgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0ZWROb2RlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAgICBtX2luc3BlY3RlZE5vZGUg
PSBub2RlOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0
PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciY+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKS5jb21t
YW5kTGluZUFQSUhvc3QoKSkKLSAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0
ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKKyAgICAg
ICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNw
ZWN0YWJsZU5vZGU+KG5vZGUpKTsKIAogICAgIG1fc3VwcHJlc3NFdmVudExpc3RlbmVyQ2hhbmdl
ZEV2ZW50ID0gZmFsc2U7CiB9CkBAIC0yMzE0LDcgKzIzMTQsNyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzaykKLSAgICAgICAg
bV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2YWxpZGF0ZVN0
eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7CisgICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRh
c2sgPSBtYWtlVW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KHRoaXMpOwogICAg
IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnNjaGVkdWxlRm9yKCZlbGVtZW50KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGU5NzFhOTlmNzA1MjRkODMxODFhZTcxNWQ4MjY1
ODgxMWZlMDg4MDguLjgxZjE0ZGMxN2JmYTA0NzQ3ZTNkMjNlNDUzZjVlNGFmOGQwOWZkODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50
QmFzZSgiRE9NU3RvcmFnZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpE
T01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2Up
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiMzdhNTYwY2U4MDc2OGM2NjQ0MDg1MTVmYjA1
NTEyNjE2NWJlZDgyLi4zNThhODU2NTEyZWE0ZDcxOTYzMzJhMjA2OTkwZGUzMjUwMDQxMGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAKIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQoV2ViQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEYXRhYmFzZSJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5jcHAKaW5kZXggZTFlMDgyZTQxYWQyZDUyNGY1N2VmMTA2NDAyODg3NjExNTY4MjRiOS4uYjU5
ODJjZWUzN2UzNzQ0NzA1Mzk0NmJjZjRjNDM0YjQzMWVmOWE5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KFdlYkFnZW50Q29u
dGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTGF5ZXJUcmVlIl9zLCBj
b250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TGF5
ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcAppbmRleCAyOWM3NmQwYzdmZWE5MjJjMmEzZDk5NDE0Yzk4NmVhOGQyOGQ3N2I1Li4y
ODMyOTUxZjUzODAxMjFmYTQ1MmJmYThkNDcwZjRkMzVlNzg5YjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cApAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0
b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTWVtb3J5Il9zLCBjb250ZXh0KQotICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9y
eUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoSW5zcGVjdG9yOjpNZW1vcnlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDNlNGU5
NmViMjMxYTA1NGIyMTIxMjQ3YmMyY2IwOTE2NWYwMjY1YjMuLjVkMDgxNjM4MGNkYzY2YzdkNzk2
MGMxMmQzNDhhMGZiZjNmN2IxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE3MiwxMCArMTcy
LDEwIEBAIGNsYXNzIEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJs
aWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAKIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6SW5z
cGVjdG9yTmV0d29ya0FnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZSgiTmV0d29yayJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQotICAgICwgbV9yZXNvdXJjZXNEYXRhKHN0ZDo6bWFrZV91bmlxdWU8TmV0
d29ya1Jlc291cmNlc0RhdGE+KCkpCisgICAgLCBtX3Jlc291cmNlc0RhdGEobWFrZVVuaXF1ZTxO
ZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDMyOWUxYjBj
NWFkOTJmYjQ1MWRmMTc2NzMzYWUyYWUzNThmYjQ5MzcuLmM2NDFhNmEwNDg0MTkzMjY4ZTI5ZTkw
ZmYwMTI2YWI5MTFjOTMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBEb2N1
bWVudExvYWRlciogSW5zcGVjdG9yUGFnZUFnZW50Ojphc3NlcnREb2N1bWVudExvYWRlcihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbgogCiBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VB
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwg
SW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiUGFn
ZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpQ
YWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAppbmRleCAzYTM2MWU5MWU2ZjJkZWIwMDQyZTE4YTdjNjRjN2I1MTZmOWI4MGM1
Li4zMGQ4NmM3NDYzYzQ3ZjViM2FkMmIzOGNmNWRlMjQ5ZDQ0ZWI5YTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIENGUnVuTG9vcFJlZiBjdXJyZW50UnVu
TG9vcCgpCiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQo
UGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGlt
ZWxpbmUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJv
bnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpAQCAtMTkzLDcgKzE5
Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBp
bnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIC8vIEZJWE1FOiBBYnN0cmFjdCBhd2F5IHBsYXRm
b3JtLXNwZWNpZmljIGNvZGUgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQyNzQ4IGlzIGZpeGVkLgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9mcmFt
ZVN0YXJ0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJ
bnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgeworICAgIG1fZnJhbWVTdGFydE9ic2VydmVy
ID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxv
b3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdpbiks
IFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2Ny
aXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0
KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgICAgIG1fcnVuTG9vcE5lc3RpbmdM
ZXZlbCsrOwogICAgIH0pOwogCi0gICAgbV9mcmFtZVN0b3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2
ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lRW5kKSwgW3RoaXNdKCkg
eworICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4o
c3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3Jk
ZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNr
aW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcKICAgICAgICAgICAgICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2Fs
aXphdGlvbj8KICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0Vt
cHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0cmluZygi
UHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQ
cm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxl
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzE2LDcgKzMxNiw3IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29s
ZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRp
b24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIk5vIHByb2Zp
bGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgZG9lcyBu
b3QgZXhpc3QiKTsKLSAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0
ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKKyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQ
cm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAKaW5kZXggOTE2MWQ4NDNjZDM4ZTRkOTY2MTI2YWNkZDM2ZTgzZGQxOGY1
MTAwMi4uMWUzOThlZGQxYTllYTNlZjI2YmUwOWVjMDNkNmM2YzJjZDM5OGRlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
SW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KFBhZ2VBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIldvcmtlciJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250
ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZShjb250ZXh0Lmluc3Bl
Y3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dl
YkNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMmVlZDFjZTYwYjMwMjJhZDk4MjRmYTYyOGEzNWRkYzU0
NDQ5NjBkOS4uYzIwOTRiOTkyZDM1NDE2MGYxN2VlMjhmNjQxMGE3OTNkY2RlOWYzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNw
cApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0CiAKICAgICBpZiAocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2Ug
PSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25k
ZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAiICgiLCBy
ZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdv
cmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3Bv
bnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwor
ICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCByZXF1
ZXN0SWRlbnRpZmllcikpOwogICAgIH0KIH0KIApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYkNv
bnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgUmVzbwogICAgICAgICBtZXNzYWdlLmFwcGVuZChlcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbigpKTsKICAgICB9CiAKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBl
OjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFp
bGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50
b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVu
dGlmaWVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAppbmRleCBiYjVkMWJlYzZjNjMy
MjM5YmVlNjQ2MzQzN2FlZmVkMTJiYTQ3MWQ1Li4wOWNiNmY0NjY2YWI0YzkxY2JlZTJkMGZjZmRk
NGJhNmE2MWExMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L1dlYkhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9X
ZWJIZWFwQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBHYXJiYWdlQ29sbGVjdGlv
bkRhdGEgewogfTsKIAogY2xhc3MgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2VuZEdhcmJhZ2VDb2xs
ZWN0aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmKTsKICAgICB2b2lkIGFkZEdhcmJhZ2VDb2xs
ZWN0aW9uKEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSYmKTsKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBT
ZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrOjp0aW1lckZpcmVkKCkKIFdlYkhlYXBBZ2Vu
dDo6V2ViSGVhcEFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rv
ckhlYXBBZ2VudChjb250ZXh0KQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQu
aW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRz
VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0
aGlzKSkKKyAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhtYWtlVW5pcXVl
PFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1l
QWdlbnQuY3BwCmluZGV4IDVlYWZiNmEzMjg0NmU3MDAxNTNhYzgyNjgxYjdiZTUwZDNhZmU0OGMu
Ljg5ODViYzk0NWZlNzVlMGU4NTFhMzZkZTM1ODRhYjA0NzFjMGZkZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogUGFn
ZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0
KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
cjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVt
ZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYjIwY2JiYzk1MDcwMjgxMWI2NTg5
YWMxZGZiZDU3MzM5MTkzZDMzNy4uODA4MmVlMzFlZWM2MGEyZjYwMzI5ZGJhYmQ0ZDk4NDJmNmE1
NWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgV29y
a2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZv
aWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhFeGVjU3RhdGUmIHN0
YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5h
ZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2Us
IGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CisgICAgbV93b3JrZXJHbG9iYWxTY29w
ZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNy
ZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CiB9CiAKIEluamVjdGVkU2NyaXB0IFdvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRTdGF0ZS5jcHAKaW5kZXggYmQ5ZDRjYWRlZmIyZmFhMWYyZTBiMjU3OTU1YWQ1MTI0ZTE3
OTRlZS4uMWYzZmFiYTMxMjZmMmU5YjM2Yjg0ZDEzZTczYmYxZmRhMzE3NTQyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgTGF5b3V0
U3RhdGU6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBCb3gmIGxheW91dFJv
b3QpCiBEaXNwbGF5OjpCb3gmIExheW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNv
bnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIHJldHVybiAqbV9sYXlvdXRUb0Rpc3Bs
YXlCb3guZW5zdXJlKCZsYXlvdXRCb3gsIFsmbGF5b3V0Qm94XSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OkJveD4obGF5b3V0Qm94LnN0eWxlKCkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+KGxheW91dEJveC5zdHlsZSgpKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTE0MCwxMyArMTQwLDEzIEBAIEZvcm1hdHRp
bmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdS
b290SWZOZWVkZWQoY29uCiAgICAgICAgICAgICAvLyBzaG91bGQgbm90IGludGVyZmVyZSB3aXRo
IHRoZSBjb250ZW50IGluc2lkZS4KICAgICAgICAgICAgIC8vIDxkaXYgc3R5bGU9ImZsb2F0OiBs
ZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzogaGlkZGVuIj4gPC0gaXMgYSBub24taW50
cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gdHJpZ2dlcnMgbmV3IGJsb2Nr
IGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4KICAgICAgICAgICAgIGlmIChmb3JtYXR0aW5nUm9v
dC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3Rh
dGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRl
OjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogCiAgICAgICAgICAgICAv
LyBPdGhlcndpc2UsIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgaW5oZXJpdHMgdGhlIGZsb2F0cyBm
cm9tIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0LgogICAgICAgICAgICAgLy8gRmluZCB0
aGUgZm9ybWF0dGluZyBzdGF0ZSBpbiB3aGljaCB0aGlzIGZvcm1hdHRpbmcgcm9vdCBsaXZlcywg
bm90IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQgdXNlIGl0cyBmbG9hdGluZyBzdGF0ZS4KICAgICAg
ICAgICAgIGF1dG8mIHBhcmVudEZvcm1hdHRpbmdTdGF0ZSA9IGNyZWF0ZUZvcm1hdHRpbmdTdGF0
ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ1Jvb3QuZm9ybWF0dGluZ0NvbnRl
eHRSb290KCkpOyAKICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZsb2F0aW5nU3RhdGUgPSBwYXJl
bnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRl
LCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5n
U3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5
b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQo
Y29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGlu
Z1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIEJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBh
bHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUuCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6
Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUo
KnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRT
dGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24K
ICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9v
dCwgWyZdIHsKIAogICAgICAgICAgICAgLy8gVGFibGUgZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5
cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZSAtYW5kIGl0IHN0YXlzIGVtcHR5Lgot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+
KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRp
bmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKICAgICAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTc0LDE4ICsxNzQsMTggQEAgc3RkOjp1
bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGlu
Z0NvbnRleHQoY29uc3QgQm8KICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9v
dC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0byYg
aW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihj
cmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdD
b250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3Rh
dGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4o
Zm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAog
ICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpOwogICAgICAgICBhdXRvJiBibG9ja0Zv
cm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3Jt
YXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9v
dCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSkgewog
ICAgICAgICBhdXRvJiB0YWJsZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PFRhYmxlRm9ybWF0
dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVk
KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9y
bWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5n
Q29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CiAg
ICAgfQogCiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVJ1bi5oCmluZGV4IDdhZTNiNDA5ZDc2MTE2ZjJlOWQxM2NjMzFlYjZlNTYwNjNi
MTA3NmYuLjc5OTE2Mjc1NzQwMTgzZjM1M2Y1YWZkNWIxNTIyZTU2NTNmYzg5NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaApAQCAtMzYsNyAr
MzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheSB7CiAKIHN0cnVj
dCBSdW4geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdHJ1Y3Qg
VGV4dENvbnRleHQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgogICAgICAgICBUZXh0Q29udGV4dCh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGEx
Y2Q2ZDZmMWI3ZWI5MGZjYzc5MDVlMzFlOWYwNGZlM2JmODI2MGIuLjUwOGQ2NjEyOWQxNDg3YzRl
ODQ0MDkzOTNkYTMzNDA5MTllYTdmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIXRyZWF0QXNJbmxp
bmVDb250YWluZXIobGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4gPHNw
YW4+KS4KLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFr
ZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWlu
ZXJTdGFydCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFr
ZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5l
clN0YXJ0KSk7CiAgICAgICAgICAgICBhdXRvJiBjb250YWluZXIgPSBkb3duY2FzdDxDb250YWlu
ZXI+KGxheW91dEJveCk7CiAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5oYXNJbkZsb3dPckZs
b2F0aW5nQ2hpbGQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5MiwxNyArMjkyLDE3
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50KCkg
Y29uc3QKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFz
dCgpOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZW5kIG9mIGFuIGlubGluZSBjb250YWlu
ZXIgKGUuZy4gPC9zcGFuPikuCiAgICAgICAgICAgICBpZiAodHJlYXRBc0lubGluZUNvbnRhaW5l
cihsYXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJ
dGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpU
eXBlOjpDb250YWluZXJFbmQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
SW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6
VHlwZTo6Q29udGFpbmVyRW5kKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNM
aW5lQnJlYWtCb3goKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5l
SXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6
VHlwZTo6SGFyZExpbmVCcmVhaykpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5h
ZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVt
OjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3gu
aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5s
aW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRl
bTo6VHlwZTo6RmxvYXQpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFT
U0VSVChsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
bGF5b3V0Qm94Lmhhc1RleHRDb250ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIElubGluZVRl
eHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0
ZW1zKCksIGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGlu
ZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CisgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRl
bT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpCb3gpKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5nID0gbGF5b3V0Qm94Lm5leHRJbkZsb3dP
ckZsb2F0aW5nU2libGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRMaW5lTGF5b3V0LmNwcAppbmRleCBmNzQxZGU0ODllOTQyNDYxZDc2OTJlMmU0MDQxNTkz
ODNiMGM4MTYwLi4wYTIxMzAyMTNmMTI0ZWViNWY3ZjcxMTJlODg2ZDcxMmM1MzFkYTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKQEAg
LTM5Niw3ICszOTYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlv
dXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgZGlz
cGxheUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7CiAgICAgICAgICAgICBk
aXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChsb2dpY2FsUmVjdC53aWR0aCgpKTsKICAgICAg
ICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChsb2dpY2FsUmVjdC5oZWlnaHQo
KSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91
bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOworICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3Qp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQwNyw3ICs0MDcsNyBA
QCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3Bs
YXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgICAgIHRvcExlZnQgKz0gR2Vv
bWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRTdGF0ZSgpLCBsYXlv
dXRCb3gpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KHRvcExlZnQpOwogICAg
ICAgICAgICAgbGluZUJveFJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRo
KCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2Vf
dW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZvcm1hdHRp
bmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0
KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDIsNyArNDQyLDcg
QEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNw
bGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNSdW5D
YW5CZUV4dGVuZGVkID0gcHJldmlvdXNMaW5lUnVuICYmIHByZXZpb3VzTGluZVJ1bi0+dGV4dENv
bnRleHQoKSA/IHByZXZpb3VzTGluZVJ1bi0+dGV4dENvbnRleHQoKS0+Y2FuQmVFeHRlbmRlZCA6
IGZhbHNlOwogICAgICAgICAgICAgYXV0byByZXF1aXJlc05ld1J1biA9ICFpbmRleCB8fCAhcHJl
dmlvdXNSdW5DYW5CZUV4dGVuZGVkIHx8ICZsYXlvdXRCb3ggIT0gJnByZXZpb3VzTGluZVJ1bi0+
bGF5b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAocmVxdWlyZXNOZXdSdW4pCi0gICAgICAgICAg
ICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3Bs
YXk6OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29u
dGV4dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5ndGggfSkpOworICAgICAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2lj
YWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0
ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgIGF1dG8mIGxhc3REaXNwbGF5UnVuID0gZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5s
YXN0KCk7CiAgICAgICAgICAgICAgICAgbGFzdERpc3BsYXlSdW4tPmV4cGFuZEhvcml6b250YWxs
eShsb2dpY2FsUmVjdC53aWR0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRleCBiMDAxM2I2ZWQ1NjNiY2JmODI4MTM5
MTM0MWYyZGQ1NjE1ZWM1M2VmLi43OTA2MTk2ODFlNjc1MmQyODcyNDkzODYyMmUzYTc0YmUwMzNm
ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lSXRlbS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVtIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PElubGluZUl0ZW0+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBIYXJkTGluZUJyZWFrLCBCb3gsIEZsb2F0LCBDb250
YWluZXJTdGFydCwgQ29udGFpbmVyRW5kIH07CiAgICAgSW5saW5lSXRlbShjb25zdCBCb3gmIGxh
eW91dEJveCwgVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDRmMjBhNmZmMWQ3MGNlMzQ5YmRlMGViZWRm
ZThmODBhMzVlODVhMjguLmVkNjUyMDViN2RiOTliMGY2YWIxMGYzZWVlYWEwN2M0NDZiN2Y4ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIExpbmU6OkNvbnRlbnQ6OlJ1bjo6UnVuKGNv
bnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFRleHRDb250ZXh0JiB0ZXh0Q29uCiAK
IExpbmU6OkxpbmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBJbml0aWFs
Q29uc3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywgU2tpcFZlcnRpY2FsQWxpZ21lbnQgc2tp
cFZlcnRpY2FsQWxpZ21lbnQpCiAgICAgOiBtX2xheW91dFN0YXRlKGxheW91dFN0YXRlKQotICAg
ICwgbV9jb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8TGluZTo6Q29udGVudD4oKSkKKyAgICAsIG1f
Y29udGVudChtYWtlVW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkpCiAgICAgLCBtX2xvZ2ljYWxUb3BM
ZWZ0KGluaXRpYWxDb25zdHJhaW50cy5sb2dpY2FsVG9wTGVmdCkKICAgICAsIG1fYmFzZWxpbmUo
eyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQsIGlu
aXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5oZWlnaHQgLSBpbml0aWFsQ29uc3Ry
YWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQgfSkKICAgICAsIG1faW5pdGlh
bFN0cnV0KGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5zdHJ1dCkKQEAgLTIx
Myw3ICsyMTMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJ
dGVtLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIAogdm9pZCBMaW5lOjphcHBlbmROb25CcmVh
a2FibGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBEaXNwbGF5OjpS
ZWN0JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAg
bV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJ
dGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSBsb2dpY2Fs
UmVjdC53aWR0aCgpOwogfQogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBMaW5lOjphcHBlbmRU
ZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBs
b2dpY2EKICAgICB9CiAKICAgICBhdXRvIHRleHRDb250ZXh0ID0gQ29udGVudDo6UnVuOjpUZXh0
Q29udGV4dCB7IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5saW5lSXRlbS5pc0NvbGxhcHNlZCgpID8g
MSA6IGlubGluZUl0ZW0ubGVuZ3RoKCksIGlzQ29tcGxldGVseUNvbGxhcHNlZCwgaW5saW5lSXRl
bS5pc1doaXRlc3BhY2UoKSwgY2FuQmVFeHRlbmRlZCB9OwotICAgIGF1dG8gbGluZUl0ZW0gPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgdGV4dENvbnRleHQsIGxv
Z2ljYWxSZWN0KTsKKyAgICBhdXRvIGxpbmVJdGVtID0gbWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+
KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2FsUmVjdCk7CiAgICAgaWYgKGlzVHJpbW1h
YmxlICYmICFpc0NvbXBsZXRlbHlDb2xsYXBzZWQpCiAgICAgICAgIG1fdHJpbW1hYmxlQ29udGVu
dC5hZGQobGluZUl0ZW0uZ2V0KCkpOwogCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBMaW5lOjph
cHBlbmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBM
YXlvdXRVbml0IGwKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGlubGluZUl0ZW1Db250
ZW50SGVpZ2h0KGlubGluZUl0ZW0pKTsKICAgICB9CiAKLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxS
ZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6
UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0
aCArPSAobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250YWxN
YXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuY2xlYXIoKTsKIH0KQEAgLTMyMyw3
ICszMjMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWsoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSkKICAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGlu
ZUl0ZW0sIHsgfSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0
KCkpOwogICAgIH0KLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50
LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dp
Y2FsUmVjdCkpOwogfQogCiB2b2lkIExpbmU6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IHJ1bkhlaWdodCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApp
bmRleCBmYWYwNTQ3NTNkMzcyMmFiYzAxZDhhNzNmNDc5OTM0OWJjYjFhYTExLi43MzdhMDdiMDMy
YWY2ZmYxMTk5MDk2ZjdhMzc1NzU3ZTZkYTlmMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCkBAIC01Miw4ICs1MiwxMCBA
QCBjbGFzcyBMaW5lIHsKICAgICBMaW5lKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgSW5pdGlh
bENvbnN0cmFpbnRzJiwgU2tpcFZlcnRpY2FsQWxpZ21lbnQpOwogCiAgICAgY2xhc3MgQ29udGVu
dCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RydWN0IFJ1biB7CisgICAgICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgICAgICBzdHJ1Y3QgVGV4dENvbnRleHQgewogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZVRleHRJdGVtLmNwcAppbmRleCBmMTMwODlhNzA4ZjNmZTNmZjliNzdmNzIwOTZjZGE0
MmVmMzZlMjIyLi41ZTZjMjU2ZGIwYjMwOWFhZjFlMjU4MjFmMGUxZTE4ZTU2NDUyZjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0
SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lVGV4dEl0ZW0uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06OmNy
ZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QK
IHsKICAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRlbnQoKTsKICAgICBpZiAoIXRl
eHQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkp
OworICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVU
ZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIGF1dG8mIHN0
eWxlID0gaW5saW5lQm94LnN0eWxlKCk7CiAgICAgYXV0byBwcmVzZXJ2ZU5ld2xpbmUgPSBzdHls
ZS5wcmVzZXJ2ZU5ld2xpbmUoKTsKQEAgLTk5LDIwICs5OSwyMCBAQCB2b2lkIElubGluZVRleHRJ
dGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQs
IGNvbnN0CiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlvbiA8IHRleHQubGVuZ3RoKCkpIHsKICAg
ICAgICAgLy8gU29mdCBsaW5lYnJlYWs/CiAgICAgICAgIGlmIChpc1NvZnRMaW5lQnJlYWsodGV4
dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7Ci0gICAgICAgICAgICBpbmxp
bmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVC
b3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgICAgIGlubGlu
ZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3Vy
cmVudFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOwogICAgICAgICAgICAgKytjdXJyZW50UG9z
aXRpb247CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNX
aGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRbY3VycmVudFBvc2l0aW9uXSwgcHJlc2VydmVOZXdsaW5l
KSkgewogICAgICAgICAgICAgYXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBv
c2l0aW9uKHRleHQsIGN1cnJlbnRQb3NpdGlvbiwgcHJlc2VydmVOZXdsaW5lKTsKICAgICAgICAg
ICAgIGF1dG8gaXNDb2xsYXBzZWQgPSBjb2xsYXBzZVdoaXRlU3BhY2UgJiYgbGVuZ3RoID4gMTsK
LSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29s
bGFwc2VkKSk7CisgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElu
bGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBp
c0NvbGxhcHNlZCkpOwogICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IGxlbmd0aDsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBsZW5ndGggPSBt
b3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24oY3VycmVudFBvc2l0aW9uLCBsaW5lQnJlYWtJdGVy
YXRvciwgc3R5bGUpOwotICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBm
YWxzZSwgZmFsc2UpKTsKKyAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJ
bmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgZmFsc2Us
IGZhbHNlKSk7CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQogfQpA
QCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gSW5saW5l
VGV4dEl0ZW06OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9zaXRpb24sIHVuCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoc3BsaXRQb3NpdGlvbiA+PSB0aGlzLT5zdGFydCgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVChzcGxpdFBvc2l0aW9uICsgbGVuZ3RoIDw9IGVuZCgpKTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24sIGxl
bmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBp
c1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDgwODRlMmJiNjllOGM5MmFh
YTliN2JlNmQ4YTE0Yjc3OTUyOTEyMDMuLjNiYWY5ZWFhMWZiYTkyYzcwZjRjNmM3MzI5NWIxMzhi
MzFiYzViOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
Qm94LmNwcApAQCAtNDUsNyArNDUsNyBAQCBCb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmli
dXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbAogICAgICwg
bV9oYXNSYXJlRGF0YShmYWxzZSkKIHsKICAgICBpZiAoaXNSZXBsYWNlZCgpKQotICAgICAgICBl
bnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlZD4oKnRo
aXMpOworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gbWFrZVVuaXF1ZTxSZXBs
YWNlZD4oKnRoaXMpOwogfQogCiBCb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4g
YXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBjb25z
dCBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OnJhcmVEYXRhKCkgY29uc3QKIEJveDo6Qm94UmFyZURh
dGEmIEJveDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwot
ICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVy
biAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxCb3hS
YXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIEJveDo6cmVtb3ZlUmFy
ZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGFiMjg0ZWEwOTliOGZhM2ZmYTcyNzRlMDZlNGNlY2Nh
Zjg0NzQzMDcuLmYyYWZjYWJkMGEzODFjNmQ1YzhkYTM5ZDM0NmUxYWVhMzNkNDdiMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAKQEAgLTEzMCwyNSArMTMwLDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVC
dWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAg
ICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBDbGVhcmx5IHRoZXJlIG11c3QgYmUgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoaXMuCiAgICAg
ICAgIGlmIChwYXJlbnRSZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJv
eD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJl
bmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGls
ZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFJlbmRl
cmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJl
cikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKKyAg
ICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRl
clRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5
VHlwZTo6SW5saW5lKSk7CiAgICAgICAgIHJldHVybiBjaGlsZExheW91dEJveDsKICAgICB9CiAK
ICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVy
ZXIpOwogICAgIGF1dG8gZGlzcGxheVR5cGUgPSByZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKTsK
ICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJT
dHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJl
bmRlcmVyLnN0eWxlKCkpKTsKIAogICAgIGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpKSB7
CiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgcHJpbmNpcGFsIHRhYmxlIHdyYXBwZXIgYm94IChh
bmQgbm90IHRoZSB0YWJsZSBib3ggaXRzZWxmKS4KLSAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6
RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOworICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFp
bmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFw
cGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgfSBl
bHNlIGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpKSB7CiAgICAgICAgIGlmIChkaXNw
bGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExh
eW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
KyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
ICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHlldCBzdXBwb3J0IGFsbCByZXBsYWNlZCBlbGVt
ZW50cyBhbmQgdGhpcyBpcyB0ZW1wb3JhcnkgYW55d2F5LgogICAgICAgICBpZiAoY2hpbGRMYXlv
dXRCb3gtPnJlcGxhY2VkKCkpCiAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+cmVwbGFjZWQo
KS0+c2V0SW50cmluc2ljU2l6ZShkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpLmlu
dHJpbnNpY1NpemUoKSk7CkBAIC0xNjMsMTggKzE2MywxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94
PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVu
dFJlbgogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
cmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldFRvcCh7IG9mZnNl
dC0+aGVpZ2h0KCksIEZpeGVkIH0pOwogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRMZWZ0KHsg
b2Zmc2V0LT53aWR0aCgpLCBGaXhlZCB9KTsKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJl
ciksIFdURk1vdmUoKnN0eWxlKSk7CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBt
YWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3Zl
KCpzdHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
ICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQot
ICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4o
ZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIu
c3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRh
aW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVu
ZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5
VHlwZTo6SW5saW5lQmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0
eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKGRp
c3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24gfHwgZGlzcGxheVR5cGUgPT0g
RGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkgewotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVy
ZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVs
c2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwIHx8IGRpc3Bs
YXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IGRpc3BsYXlUeXBlID09
IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCiAgICAgICAgICAgICB8fCBkaXNwbGF5VHlw
ZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6
OlRhYmxlQ29sdW1uR3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29s
dW1uKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShy
ZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlx
dWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpj
bG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAg
LTIxMCw3ICsyMTAsNyBAQCB2b2lkIFRyZWVCdWlsZGVyOjpjcmVhdGVUYWJsZVN0cnVjdHVyZShj
b25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29udGFpbgogICAgICAgICB0YWJsZUNo
aWxkID0gdGFibGVDaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiAKLSAgICBhdXRvIHRhYmxl
Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMg
eyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVS
ZW5kZXJlci5zdHlsZSgpKSk7CisgICAgYXV0byB0YWJsZUJveCA9IG1ha2VVbmlxdWU8Q29udGFp
bmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3gg
fSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOwogICAgIGFwcGVu
ZENoaWxkKHRhYmxlV3JhcHBlckJveCwgKnRhYmxlQm94KTsKICAgICB3aGlsZSAodGFibGVDaGls
ZCkgewogICAgICAgICBUcmVlQnVpbGRlcjo6Y3JlYXRlU3ViVHJlZShkb3duY2FzdDxSZW5kZXJF
bGVtZW50PigqdGFibGVDaGlsZCksICp0YWJsZUJveCk7CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9p
ZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKICAgICAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gZmluZCBhIHdheSB0byBvdXRwdXQgZ2VvbWV0cnkgd2l0aG91dCBsYXlvdXQgY29udGV4
dC4KICAgICAgICAgYXV0byYgcmVuZGVyVmlldyA9ICpkb2N1bWVudC0+cmVuZGVyVmlldygpOwog
ICAgICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2sgPSBUcmVlQnVpbGRlcjo6Y3JlYXRl
TGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oKmluaXRpYWxDb250YWluaW5nQmxvY2sp
OworICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gbWFrZVVuaXF1ZTxMYXlvdXQ6OkxheW91dFN0
YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgIGxheW91dFN0YXRlLT5zZXRR
dWlya3NNb2RlKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5pbkxpbWl0ZWRRdWlya3NNb2RlKCkgPyBM
YXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6TGltaXRlZCA6IChyZW5kZXJWaWV3LmRvY3VtZW50KCku
aW5RdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6WWVzIDogTGF5b3V0U3Rh
dGU6OlF1aXJrc01vZGU6Ok5vKSk7CiAgICAgICAgIGxheW91dFN0YXRlLT51cGRhdGVMYXlvdXQo
KTsKICAgICAgICAgc2hvd0xheW91dFRyZWUoKmluaXRpYWxDb250YWluaW5nQmxvY2ssIGxheW91
dFN0YXRlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRl
eCA1MWQ3N2U0YWYxZGJkZGYwNDVhOTJjMWM4YWQzYjk5ZWFjZWI5N2I1Li5iNDk4YTIyNGIxOTBj
NmNlODQ0ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50Rmls
dGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGUoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hCiAg
ICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVycyks
IGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZW50RmlsdGVyPihX
VEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7CiB9CiAKIENvbnRlbnRGaWx0ZXI6OkNv
bnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVudEZpbHRlcnMsIERvY3VtZW50TG9hZGVyJiBk
b2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbC5jcHAKaW5kZXggZDBkNTRiOTdlYWU3MjA0MjZmOTYxYzhkYWU4OTVlMjAz
NjljZWRjYy4uYzRjZTVmNTUyMTcwYjNjZmM4Yjg0MWI1OWE1MTBmZDc1YWE4M2ZiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAK
QEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIHZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAgIGlmICghcGFz
c2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
c2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICBpZiAoIXJlc3VsdC0+cGFyc2UocmVzcG9uc2Up
CiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKHJlcXVlc3QuaHR0
cE1ldGhvZCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZXJyb3JEZXNjcmlwdGlvbikKICAg
ICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmlnaW5IZWFkZXJzKHJlcXVlc3QuaHR0cEhl
YWRlckZpZWxkcygpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZXJyb3JEZXNjcmlwdGlvbikp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGRlMDllNzAz
OTljYzc0N2U4ODczNjk3ODM3MjRlNmRhYTlmYzc4OGIuLjA0NTVjYWZjNTlmZjdiNmVhMWY5YTJj
ZDM5MzFhNjllOWY2OTQ0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVECiAgICAgLCBt
X29yaWdpbmFsU3Vic3RpdHV0ZURhdGFXYXNWYWxpZChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkp
CiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIoKnRoaXMsICZEb2N1bWVu
dExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKQogICAgICwgbV9k
YXRhTG9hZFRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRh
TG9hZE5vdykKLSAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxB
cHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQorICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9z
dChtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCiB7CiB9CiAKQEAgLTEz
MzYsNyArMTMzNiw3IEBAIHVpbnQ2NF90IERvY3VtZW50TG9hZGVyOjpsb2FkQXBwbGljYXRpb25N
YW5pZmVzdCgpCiAgICAgaWYgKG1hbmlmZXN0VVJMLmlzRW1wdHkoKSB8fCAhbWFuaWZlc3RVUkwu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5p
ZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOworICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBtYWtl
VW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNl
Q3JlZGVudGlhbHMpOwogICAgIGF1dG8qIHJhd01hbmlmZXN0TG9hZGVyID0gbWFuaWZlc3RMb2Fk
ZXIuZ2V0KCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbmV4dENhbGxiYWNrSUQrKzsKICAgICBt
X2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChXVEZNb3ZlKG1hbmlmZXN0TG9hZGVyKSwg
Y2FsbGJhY2tJRCk7CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpz
ZXRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmIGFyY2hpdmUpCiB2b2lkIERvY3VtZW50TG9hZGVyOjph
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB7CiAgICAgaWYgKCFtX2Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKKyAg
ICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVz
b3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRk
QWxsUmVzb3VyY2VzKGFyY2hpdmUpOwogfQogCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB2
b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJj
ZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikK
LSAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAg
bV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNl
KSk7CiB9CiAKQEAgLTE5NjMsNyArMTk2Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRN
YWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICAgICAgLy8gSWYgdGhl
IGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRo
ZSBBcHBsaWNhdGlvbkNhY2hlSG9zdAogICAgICAgICAvLyBpcyBub3cgaW4gYSBzdGF0ZSB3aGVy
ZSBzdGFydGluZyBhbiBlbXB0eSBsb2FkIHdpbGwgYmUgaW5jb25zaXN0ZW50LiBSZXBsYWNlIGl0
IHdpdGgKICAgICAgICAgLy8gYSBuZXcgQXBwbGljYXRpb25DYWNoZUhvc3QuCi0gICAgICAgIG1f
YXBwbGljYXRpb25DYWNoZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVI
b3N0PigqdGhpcyk7CisgICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QgPSBtYWtlVW5pcXVl
PEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CiAgICAgICAgIG1heWJlTG9hZEVtcHR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTIyLDcgKzIxMjIsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2
NF90IGxvYWRJZGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpY29uTG9h
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGVyPigqdGhpcywgaWNvbi51cmwpOworICAg
IGF1dG8gaWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8SWNvbkxvYWRlcj4oKnRoaXMsIGljb24udXJs
KTsKICAgICBhdXRvKiByYXdJY29uTG9hZGVyID0gaWNvbkxvYWRlci5nZXQoKTsKICAgICBtX2lj
b25Mb2FkZXJzLnNldChXVEZNb3ZlKGljb25Mb2FkZXIpLCBuZXdDYWxsYmFja0lEKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBjNDUwYzA4NzBjMGRiOTAwMmI5
MDRjN2I2Y2JjZTRjOTY5MDJjNmRjLi5hY2EzNDUyOTg1YjczMTE5YmNiMjNjNDNiYTIzZWVmYjc1
YTdhMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTgyLDcg
KzU4Miw3IEBAIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xp
ZW50cygpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5UHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50PiBkdW1teVByb2dyZXNzVHJhY2tlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5w
cm9ncmVzc1RyYWNrZXJDbGllbnQgPSAmZHVtbXlQcm9ncmVzc1RyYWNrZXJDbGllbnQuZ2V0KCk7
CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8RW1wdHlEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZSh7IH0sIHsg
fSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IGFkb3B0UmVmKCpu
ZXcgRW1wdHlEYXRhYmFzZVByb3ZpZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IGUwZjQ2MTQ4ZjJkZmFhODdmNmIyNDI2MzdkNTA4OTE4NTIwYTYwYTIuLjgzYmVi
MjcxN2QzMzdjMzQxYzAxNWVjZjQ2ZDRmMzczZTA4YjE1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtMjcwLDEwICsyNzAsMTAgQEAgY2xhc3MgRnJhbWVMb2FkZXI6
OkZyYW1lUHJvZ3Jlc3NUcmFja2VyIHsKIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSYg
ZnJhbWUsIEZyYW1lTG9hZGVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQog
ICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9wb2xpY3lDaGVja2VyKHN0ZDo6bWFrZV91
bmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQotICAgICwgbV9oaXN0b3J5KHN0ZDo6bWFrZV91
bmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkKKyAgICAsIG1fcG9saWN5Q2hlY2tlciht
YWtlVW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1lKSkKKyAgICAsIG1faGlzdG9yeShtYWtlVW5p
cXVlPEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCiAgICAgLCBtX25vdGlmaWVyKGZyYW1lKQot
ICAgICwgbV9zdWJmcmFtZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFN1YmZyYW1lTG9hZGVyPihm
cmFtZSkpCisgICAgLCBtX3N1YmZyYW1lTG9hZGVyKG1ha2VVbmlxdWU8U3ViZnJhbWVMb2FkZXI+
KGZyYW1lKSkKICAgICAsIG1fbWl4ZWRDb250ZW50Q2hlY2tlcihmcmFtZSkKICAgICAsIG1fc3Rh
dGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBl
OjpTdGFuZGFyZCkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkK
ICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkRp
c3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0
ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNzVHJh
Y2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwor
ICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4o
bV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXRGb3JTeW50aGVzaXplZERvY3Vt
ZW50KGNvbnN0IFVSTCYpCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5p
dEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJMJikKICAgICBtX25lZWRzQ2xlYXIgPSB0
cnVlOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtp
bmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZy
YW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAgICBtX3Byb2dyZXNzVHJhY2tlciA9IG1h
a2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwogfQogCiB2b2lkIEZyYW1l
TG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQpAQCAtMjY3OCw3ICsyNjc4LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRyZW4oKQogICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRtbCNuYXZpZ2F0
ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXZpZ2F0aW9uRGlzYWJsZXI+IG5hdmlnYXRpb25EaXNh
YmxlcjsKICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICBuYXZpZ2F0aW9u
RGlzYWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRpb25EaXNhYmxlcj4oJm1fZnJhbWUp
OworICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBtYWtlVW5pcXVlPE5hdmlnYXRpb25EaXNh
Ymxlcj4oJm1fZnJhbWUpOwogCiAgICAgLy8gQW55IHN1YmZyYW1lIGluc2VydGVkIGJ5IHVubG9h
ZCBldmVudCBoYW5kbGVycyBleGVjdXRlZCBpbiB0aGUgbG9vcCBiZWxvdyB3aWxsIG5vdCBnZXQg
dW5sb2FkZWQKICAgICAvLyBiZWNhdXNlIHdlIGNyZWF0ZSBhIGNvcHkgb2YgdGhlIHN1YmZyYW1l
cyBsaXN0IGJlZm9yZSBsb29waW5nLiBUaGVyZWZvcmUsIGl0IHdvdWxkIGJlIHVuc2FmZSB0bwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCA4ZTNhNDZiNTEwYTk5ODBjMmFmYjgw
YTM0NDhhNDk4OWVhYzE5ZTE5Li41ZmZmNjdkOTQyZWJlOTFlMDNhNTI5NmU2ZTlkYTI0ZGIzYjdj
Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtOTYsNiArOTYsNyBAQCBX
RUJDT1JFX0VYUE9SVCBib29sIGlzUmVsb2FkKEZyYW1lTG9hZFR5cGUpOwogdXNpbmcgQ29udGVu
dFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9u
LCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPjsKIAogY2xhc3MgRnJhbWVMb2FkZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lTG9h
ZGVyKTsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWRlcihGcmFtZSYsIEZyYW1lTG9hZGVyQ2xpZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggY2RmNjQ5NTI2ZmUzZDFm
MzMyOGQ2ZTM2YzIwMTA4N2MzMWYxNjU1Yi4uNDA4YzUzNjQyOWUzYjA4Nzc5OGViOTdlNzY4NjRj
Yzk0ODY2NjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMTQyLDIy
ICsxNDIsMjIgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xp
ZW50PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW4KIHsKICAgICBzd2l0Y2ggKHJlc291
cmNlLnR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNv
dXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRJbWFnZT4ocmVzb3VyY2UpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50Pihs
b2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OlNjcmlwdDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVk
U2NyaXB0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9h
ZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJl
c291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldDoK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRTdHlsZVJlc291cmNl
Q2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVu
dD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXNvdXJjZSkpOwogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwg
ZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVk
Rm9udD4ocmVzb3VyY2UpKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRv
d25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8
Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwogI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6VHlwZTo6TWVkaWFSZXNvdXJjZToKICAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWVkaWFQcmVsb2FkaW5nRW5hYmxlZCgpKTsKICAg
ICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6UmF3UmVz
b3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkUmF3UmVz
b3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNl
KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGll
bnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNlKSk7CiAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlOgogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6Okljb246CiAjaWYgRU5BQkxFKFNWR19GT05UUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaAppbmRleCAwMmNjN2QxMjBjYTRiY2ZmMzUy
NWM4Zjc0OWNjNDE4MGZlNmQ0NWUyLi44YWU0YjMxYjhiNjlmOThkMDFhZGE3ODg5OWE5OGJkMTFk
ZDQyNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2Fi
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCkBA
IC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5hdmlnYXRpb25E
aXNhYmxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmF2
aWdhdGlvbkRpc2FibGVyKEZyYW1lKiBmcmFtZSkKICAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDU1
OGM3ODA0OTU3ZWM4ODI4ODE4ZWY1NjE5YmY5ODNkM2Y5NDBhNTUuLjNjMmMyNTJhYTUxYjk2OTI5
NWVjZjE0ODEyNTRhMzI0MGVjNDJhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIE5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCwg
ZG91YmxlCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBiYWNrL2ZvcndhcmQgbGlzdCBpdGVtIGlmIHRo
ZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4KICAgICBpZiAoIW1fcmVkaXJlY3QgfHwg
ZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkgewogICAgICAgICBhdXRvIGxvY2tCYWNrRm9y
d2FyZExpc3QgPSBkZWxheSA8PSAxID8gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIDogTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm87Ci0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2No
ZWR1bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVudCwgZGVsYXksICZtX2ZyYW1lLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tG
b3J3YXJkTGlzdCkpOworICAgICAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJlZGly
ZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3Qp
KTsKICAgICB9CiB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVs
ZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCwg
UwogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVuIGEgZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRp
b24gb2YgYW5vdGhlciBmcmFtZS4KICAgICBib29sIGR1cmluZ0xvYWQgPSAhbG9hZGVyLnN0YXRl
TWFjaGluZSgpLmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpOwogCi0gICAgc2NoZWR1
bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0Rv
Y3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkp
OworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRp
YXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9y
eSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJt
aXNzaW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW9uKQpAQCAtNDY4LDcgKzQ2OCw3
IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8
Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvCiAgICAgICAgIGxvY2tCYWNrRm9yd2FyZExpc3Qg
PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXM7CiAgICAgfQogICAgIAotICAgIHNjaGVkdWxlKHN0
ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24+KFdURk1vdmUoc3VibWlzc2lv
biksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpKTsKKyAgICBzY2hlZHVsZShtYWtl
VW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihXVEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQpCkBAIC00
NzksNyArNDc5LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2go
RG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRS
ZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKKyAg
ICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJlZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVu
dCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxv
YWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVs
ZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQpAQCAtNDk4LDEzICs0OTgs
MTMgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9u
KGludCBzdGVwcykKICAgICB9CiAKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMsIHNjaGVkdWxl
IHRoZSBoaXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1ciBhc3luY2hyb25vdXNseS4KLSAgICBzY2hl
ZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uPihzdGVwcykp
OworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0
ZXBzKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVQYWdlQmxvY2so
RG9jdW1lbnQmIG9yaWdpbkRvY3VtZW50KQogewogICAgIGlmIChzaG91bGRTY2hlZHVsZU5hdmln
YXRpb24oKSkKLSAgICAgICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRQYWdl
QmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CisgICAgICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2No
ZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25T
Y2hlZHVsZXI6OnRpbWVyRmlyZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25TY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
U2NoZWR1bGVyLmgKaW5kZXggYTJkZGFjZTI4ZjA3YzM5MWZlMjRlMTkxOGQyNTRhNTAwMmZhYjQ3
Ni4uOTdjMjNiMTUwOTJiZjM5M2IzMWQyMGM4ZjM0ZDI1NzcyNjMxY2M5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCkBAIC00Niw2ICs0Niw3IEBAIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogZW51bSBjbGFzcyBOZXdMb2FkSW5Qcm9ncmVzcyA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgCiBjbGFzcyBOYXZpZ2F0aW9uU2NoZWR1bGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uU2No
ZWR1bGVyKEZyYW1lJik7CiAgICAgfk5hdmlnYXRpb25TY2hlZHVsZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZTE3YTlkYzcyZGUwMzdjOTYzNGJj
MWNjOTNjMmMxYTc3YTg2YmZhMy4uMjgxN2E3NjY2NDU3YjIzOTczYTY4ZmNmN2JjMDE4MGMxMmJm
NWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTIw
MSw3ICsyMDEsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3ModW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZQogCiAgICAgYXV0byYgaXRlbSA9
IG1fcHJvZ3Jlc3NJdGVtcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwogICAgIGlmICghaXRlbSkgewotICAgICAgICBpdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9n
cmVzc0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CisgICAgICAgIGl0ZW0gPSBtYWtlVW5pcXVlPFBy
b2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IGVh
NWRiZmJhYWIyMGJmZDQzZGVhY2YxZTc3NjExYzM0MzNhYmFiODMuLjgyNDZiYjA3MDZjZDBjMDcx
Zjg5OTYyODk4NmE1YmE1MWM0OGI2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCBib29sIFRleHRSZXNvdXJj
ZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
biwgYm9vbAogICAgIGlmIChtX2NvbnRlbnRUeXBlID09IFhNTCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBtX2NoYXJzZXRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxNZXRhQ2hh
cnNldFBhcnNlcj4oKTsKKyAgICBtX2NoYXJzZXRQYXJzZXIgPSBtYWtlVW5pcXVlPEhUTUxNZXRh
Q2hhcnNldFBhcnNlcj4oKTsKICAgICByZXR1cm4gY2hlY2tGb3JNZXRhQ2hhcnNldChkYXRhLCBs
ZW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4
IGNhOWU2YzQzNDNkNzQwMTA1NTNhOWUxMGZhNjU2M2VlNTIzOTFiYmUuLmZhOTI2ZWEwNjJhZGZm
MjA1NzBjOGEzNjkxMjQ2NzJiOWVmNTY2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpw
cm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghbV9jdWVQYXJzZXIpCi0gICAgICAgIG1fY3VlUGFyc2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+
KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBtX2N1ZVBhcnNlciA9
IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQq
Pih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAogICAgIHdoaWxlIChtX3BhcnNl
T2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVyLT5n
ZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBhMTI2M2UyZjA0NTc0YjRmMGVlNzNjMDRl
OGI2MmY1YzgwNzJhNzU4Li43NzUzMmY4NjEzNGUwNDNhZDM3ZDNmNTk5OThhNmY1N2E0MjQxNzQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFT
U0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCiAgICAgYXV0byBzZWN1cml0eU9yaWdpbkNv
cHkgPSBzZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgYXV0byBjb250ZW50U2Vj
dXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1
cml0eVBvbGljeUNvcHkgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFs
U2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeUNv
cHktPmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5UG9saWN5KTsKICAgICBjb250ZW50U2Vj
dXJpdHlQb2xpY3lDb3B5LT5jb3B5VXBncmFkZUluc2VjdXJlUmVxdWVzdFN0YXRlRnJvbSgqY29u
dGVudFNlY3VyaXR5UG9saWN5KTsKIAotICAgIGF1dG8gb3B0aW9uc0NvcHkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigp
LmlzTnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdU
Rk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7CisgICAgYXV0byBvcHRpb25zQ29weSA9IG1ha2VV
bmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMsIHJlcXVlc3QuaHR0cFJlZmVycmVyKCku
aXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDogcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgV1RG
TW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKIAogICAgIC8vIEFsbCBsb2FkcyBzdGFydCBvdXQg
YXMgRG9jdW1lbnQuIEluc2lkZSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIHdlIHVwZ3JhZGUgdGhp
cyB0byBhIFdvcmtlciBsb2FkLgogICAgIEFTU0VSVChvcHRpb25zQ29weS0+b3B0aW9ucy5pbml0
aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5k
ZXggZjk3ZWIwMDQyNWJkMjliM2NiNmJjYjM0NWZiZmQ2NTIyNDA4ZjhjZS4uYmJhOTEwNDE5MTU0
ZWNmNDNjMTIyZTJkOTBjZjg2NDU1OTdhOTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQyMyw3ICs0MjMs
NyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5v
ZGUmIG5vZGUsIFdURjo6RnVuY3Rpb248Ym9vbAogICAgIC8vIGJ1dCB3ZSBjYW4gYXBwcm94aW1h
dGUgdGhhdCBieSBjaGVja2luZyBpZiBzY3JpcHRpbmcgaXMgZW5hYmxlZCByaWdodCBub3cuCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4gdGFnTmFtZXNUb0ZpbHRl
cjsKICAgICBpZiAoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLmlz
U2NyaXB0RW5hYmxlZCgpKSB7Ci0gICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4oKTsKKyAgICAgICAgdGFnTmFtZXNUb0ZpbHRl
ciA9IG1ha2VVbmlxdWU8VmVjdG9yPFF1YWxpZmllZE5hbWU+PigpOwogICAgICAgICB0YWdOYW1l
c1RvRmlsdGVyLT5hcHBlbmQoSFRNTE5hbWVzOjpub3NjcmlwdFRhZyk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA4MzY4YTk1NzA1
ZTMxOTJkMWY4MTdmZjJlY2Q2ODM3ZTNmOWUxMzVkLi5lZjkzYjM1MWU3OTFkNTI3ZGFlODBmODdj
NTI1YTdkYzE0ZTdlNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpzZXRCb2R5RGF0
YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBtX2ltYWdlT2Jz
ZXJ2ZXItPmNhY2hlZEltYWdlcygpLmFkZCh0aGlzKTsKIAogICAgIGlmIChtX2ltYWdlICYmIGlz
PFNWR0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOwor
ICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3du
Y2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRk
Q2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkBAIC0zNTcsNyArMzU3LDcgQEAg
aW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKCkKIAogICAgIGlmIChtX2ltYWdl
KSB7CiAgICAgICAgIGlmIChpczxTVkdJbWFnZT4oKm1faW1hZ2UpKQotICAgICAgICAgICAgbV9z
dmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8
U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtl
VW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIAog
ICAgICAgICAvLyBTZW5kIHF1ZXVlZCBjb250YWluZXIgc2l6ZSByZXF1ZXN0cy4KICAgICAgICAg
aWYgKG1faW1hZ2UtPnVzZXNDb250YWluZXJTaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGJlNjE4M2FiZmE1OWQ1
YzhlMTYyZmVjMWQ2NTUyNDUyM2FkZTI3OGMuLmY5YTc1ZjM1NDUyNzY5MDJhOWU0YTVjMzViNmFj
NmIxZjE1MGMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVx
dWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQoUmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJl
c3BvbnNlKSk7Ci0gICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIHN0ZDo6bWFr
ZV91bmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgaXRlcmF0ZUNsaWVudHMo
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xp
ZW50cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgV1RG
TW92ZShyZXF1ZXN0KSwgbWFrZVVuaXF1ZTxSZXNvdXJjZVJlc3BvbnNlPihyZXNwb25zZSksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCByZXNwb25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggZTQzMGU0NDdhYzQ5NDYzNmM5ODRlNzRkNDBiOTFlNjVjZGViYjUwYi4uMDU2N2QxZDVkZThj
NmYxM2UxODY4NDRhZWQ3NTU3NWNmMTdlMTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01NDYsNyArNTQ2LDcgQEAgYm9vbCBDYWNo
ZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
ICAgICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBzZW5kaW5nIGNh
bGxiYWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90aGVyIENhY2hlZFJlc291cmNlcywKICAgICAg
ICAgLy8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlz
aCBzeW5jaHJvbm91c2x5LgogICAgICAgICBBU1NFUlQoIW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJh
Y2suY29udGFpbnMoJmNsaWVudCkpOwotICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNr
LmFkZCgmY2xpZW50LCBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrPigqdGhpcywgY2xpZW50KSk7
CisgICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKCZjbGllbnQsIG1ha2VVbmlx
dWU8Q2FsbGJhY2s+KCp0aGlzLCBjbGllbnQpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRl
eCAyMjlhMTQyZDY0NDEzY2ViYWVmYWM1MjcxMGJiMmJmOGRkZWRmN2JlLi4yZmZlMmI0MTg3OTk3
ZWVmZGQ0MTVlMGVkYmU4MDJkYzE3MmNhZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMzgxLDkgKzM4MSw3IEBAIGNsYXNzIENhY2hlZFJl
c291cmNlIHsKIH07CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOjpDYWxsYmFjayB7Ci0jaWYgIUNP
TVBJTEVSKE1TVkMpCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0jZW5kaWYKIHB1Ymxp
YzoKICAgICBDYWxsYmFjayhDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJlc291cmNlQ2xpZW50Jik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDg0M2E5ZDFmOWQ2Yzg1ZjEwMDBhMmM0MGYxOTY0YjQ3YTJlYjFjN2Eu
LmIzNGI4ZmQzNWMxMDc3YTU0NTJhYmIzNDMyMzYxYjRjYzNkMTFjOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAt
NzkxLDcgKzc5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgLy8gRW50cnkgcG9p
bnQgdG8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI21haW4tZmV0Y2guCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gb3JpZ2luYWxSZXF1ZXN0OwogICAgIGlmIChD
YWNoZWRSZXNvdXJjZTo6c2hvdWxkVXNlUGluZ0xvYWQodHlwZSkgfHwgcmVxdWVzdC5vcHRpb25z
KCkuZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcp
IHsKLSAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJl
cXVlc3Q+KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpOworICAgICAgICBvcmlnaW5hbFJlcXVl
c3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSk7CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdC0+Y2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAg
ICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBPcmlnaW4oKTsKICAgICB9CkBAIC0xMzkxLDcg
KzEzOTEsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbAogICAgICAgICByZXNvdXJjZVZhbHVl
LT5pbmNyZWFzZVByZWxvYWRDb3VudCgpOwogCiAgICAgICAgIGlmICghbV9wcmVsb2FkcykKLSAg
ICAgICAgICAgIG1fcHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hl
ZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICBtX3ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0
SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICBtX3ByZWxvYWRzLT5hZGQocmVz
b3VyY2VWYWx1ZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZTsKQEAgLTE0MzMs
NyArMTQzMyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMoQ2xl
YXJQcmVsb2Fkc01vZGUgbW9kZSkKICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICAgICAg
aWYgKG1vZGUgPT0gQ2xlYXJQcmVsb2Fkc01vZGU6OkNsZWFyU3BlY3VsYXRpdmVQcmVsb2FkcyAm
JiByZXNvdXJjZS0+aXNMaW5rUHJlbG9hZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXJlbWFpbmlu
Z0xpbmtQcmVsb2FkcykKLSAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CisgICAgICAg
ICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxD
YWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzLT5h
ZGQocmVzb3VyY2UpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlLmgKaW5kZXggNzBjYjFhZmE0Y2YxZDNhNmU2NDJhOGFlOWRiODQ0OGY4NGQxNGJkNi4uMjJh
ZTcyZDhmZjVlZjcyOWExNjRjNzZhNGZkYmIwZTQ5ZDcxZjRiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgK
QEAgLTM1LDcgKzM1LDggQEAgY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKLWNsYXNzIENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50
IHsKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIGZpbmFsIDogcHVibGljIENhY2hl
ZFNWR0RvY3VtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQy
M2MzZmM1MjRiZDhiNmY1NWYzNWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2Fm
ZmNiZWYzOTI3ODI2M2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Np
b25SZXNvdXJjZU1hcChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAg
QVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJl
c291cmNlcy5hZGQoc2Vzc2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+
KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAg
cmV0dXJuICptYXA7CiB9CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjph
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlv
bik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1
dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxs
cHRyKTsKLSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFn
ZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNo
ZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVt
bXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUo
Yml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVt
b3J5Q2FjaGU6OmxydUxpc3RGb3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0
JgogCiAgICAgbV9hbGxSZXNvdXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsK
ICAgICB3aGlsZSAobV9hbGxSZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAg
IG1fYWxsUmVzb3VyY2VzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+
KCkpOworICAgICAgICBtX2FsbFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxM
UlVMaXN0PigpKTsKICAgICByZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCmluZGV4IDYxOGU5NDI5
NTAxN2RjM2I4MzAzNjVjMTE2NzYxNTM4YjFkYjYyMzguLjE1MDNkNzhlM2FmNTk5NDk1NGIzM2My
YTgwODRmNGZlYTYzMDA3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xv
YWRlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFByZXZpZXdMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdMb2FkZXIpOwogcHVi
bGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gY3JlYXRlKFJl
c291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCmluZGV4IGY2YjgyMjE3OTE2Y2FkOTViZmU5NjBi
YjNlMzc4NGEyNzBhOWJhNjcuLmM1Y2E1YzI1ZjExYjRkOGE5Y2E5M2VmYzg4OTA5OTA3ZjZiNzY2
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTg2
LDcgKzg2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFJlc291
cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJjZVIKIAogICAgIF9yZXNvdXJjZUxvYWRl
ciA9IG1ha2VXZWFrUHRyKHJlc291cmNlTG9hZGVyKTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJj
ZVJlc3BvbnNlOwotICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252
ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSk7CisgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJl
dmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKICAgICBfYnVmZmVyZWREYXRhQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfc2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZyA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdz
KCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKTsKIApA
QCAtMjQ2LDcgKzI0Niw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgfQogCiAgICAg
X2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFtzZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5Q
dHIoc2VsZildIChjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSB7Ci0gICAgICAgIF9jb252ZXJ0ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFz
c3dvcmQpOworICAgICAgICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVy
PihzZWxmLCBfcmVzcG9uc2UsIHBhc3N3b3JkKTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRm
b3JtQ29udmVydGVyKCkgYXBwZW5kRGF0YUFycmF5Ol9idWZmZXJlZERhdGFBcnJheS5nZXQoKV07
CiAgICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZpbmlzaGVkQXBwZW5k
aW5nRGF0YV07CiAgICAgfSk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUHJldmlld0xvYWRlcjo6flBy
ZXZpZXdMb2FkZXIoKQogc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1F
VHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CiB9CiAKIGJvb2wgUHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAppbmRleCBlNmFkYjY3ZGE5NDg2
ODYyNmZlMjA2ZmYxNmU2NGRkYWNlMjcwMWZlLi42MTNlNzg5MmI0MTBmM2IyYTQ5NGVjZmI2ODAw
MGFhYzBkYzY2MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBUZXh0VHJhY2tMaXN0Owogc3RydWN0IE1l
ZGlhU2VsZWN0aW9uT3B0aW9uOwogCiBjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYXB0aW9uVXNlclByZWZl
cmVuY2VzKFBhZ2VHcm91cCYpOwogICAgIHZpcnR1YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRl
eCBjNDc5Y2ExZjljYjA3ZDRhYzdiNGI5ZmIyMjg1MWYwYzk5NGIxNzE0Li40Y2NkYWIwNGI3YjNm
NTUzNGNlY2MyYTE5ZWMwYTRiY2I3YWIxN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4
dE1lbnUoRXZlbnQKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRleHRNZW51PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRleHRNZW51PigpOwog
fQogCiB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51KEV2ZW50JiBl
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggZjYz
ZGFhN2Y2MzQ3MjU1ODg3M2RiM2I1ODNiYzI1MTJhMTc3NTI3YS4uY2RjNzRmNmRlMDllOTNkZTlh
YWI5MjM1NmVmMmZiZjQ0ZGQyZDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgTW91c2VXaGVlbFJlZ2lvbk92ZXJs
YXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7CiAKIGJvb2wgTW91c2VXaGVlbFJlZ2lv
bk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCiB7Ci0gICAgYXV0byByZWdpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlZ2lvbj4oKTsKKyAgICBhdXRvIHJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigp
OwogICAgIAogICAgIGZvciAoY29uc3QgRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAg
ICBpZiAoIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDQ4YzA3MzQ3NzBlYjExMGMxYzVkODQ1M2RkMDg3OTky
ZTU2NDlhMWUuLmQyMGI5OGM0MTVlZWM4Mjc2Zjg5MDBmMjRjNjdhOTdmMTAxZDBhMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCBFdmVudEhh
bmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSYgZnJhbWUpCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
ICwgbV9wZW5kaW5nTW9tZW50dW1XaGVlbEV2ZW50c1RpbWVyKCp0aGlzLCAmRXZlbnRIYW5kbGVy
OjpjbGVhckxhdGNoZWRTdGF0ZSkKICNlbmRpZgotICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxl
cihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQorICAgICwgbV9hdXRv
c2Nyb2xsQ29udHJvbGxlcihtYWtlVW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQogI2lm
ICFFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGlt
ZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRpbWVyRmlyZWQpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAyMzM3Mjk0MmIzNzYzZDkyOTNk
MjY1YjM1YWNjMTUyNWUzNGNjMDBmLi5hNWU1ZWRlMGI0Yjc0N2U0Nzk0ZGM3OTQwNmFlZmNjYmIz
ODVkZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBA
QCBSZW5kZXJCb3gqIEZyYW1lVmlldzo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKIHZvaWQg
RnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0
JiBlbWJlZGRlZE9iamVjdCkKIHsKICAgICBpZiAoIW1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUp
Ci0gICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExp
c3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CisgICAgICAgIG1fZW1iZWRkZWRP
YmplY3RzVG9VcGRhdGUgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2Jq
ZWN0Kj4+KCk7CiAKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRl
ZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwogICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVu
dD4oZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkpIHsKQEAgLTE0Mjcs
NyArMTQyNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdChSZW5kZXJF
bGVtZW50JiByZW5kZXJlcikKICAgICBib29sIGhhZFNsb3dSZXBhaW50T2JqZWN0cyA9IGhhc1Ns
b3dSZXBhaW50T2JqZWN0cygpOwogCiAgICAgaWYgKCFtX3Nsb3dSZXBhaW50T2JqZWN0cykKLSAg
ICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29u
c3QgUmVuZGVyRWxlbWVudCo+PigpOworICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IG1h
a2VVbmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CiAKICAgICBtX3Nsb3dS
ZXBhaW50T2JqZWN0cy0+YWRkKCZyZW5kZXJlcik7CiAgICAgaWYgKGhhZFNsb3dSZXBhaW50T2Jq
ZWN0cykKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVw
YWludE9iamVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHZvaWQgRnJhbWVWaWV3OjphZGRW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIG9iamVjdCkK
IHsKICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCi0gICAgICAgIG1fdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3RTZXQ+KCk7CisgICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMg
PSBtYWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+KCk7CiAKICAgICBpZiAo
IW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAg
ICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YWRkKG9iamVjdCk7CkBAIC00ODY2LDcg
KzQ4NjYsNyBAQCBTdHJpbmcgRnJhbWVWaWV3Ojp0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkg
Y29uc3QKIGJvb2wgRnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSog
c2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKLSAgICAgICAg
bV9zY3JvbGxhYmxlQXJlYXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0Pigp
OworICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IG1ha2VVbmlxdWU8U2Nyb2xsYWJsZUFyZWFT
ZXQ+KCk7CiAgICAgCiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWFzLT5hZGQoc2Nyb2xsYWJsZUFy
ZWEpLmlzTmV3RW50cnkpIHsKICAgICAgICAgc2Nyb2xsYWJsZUFyZWFTZXRDaGFuZ2VkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAppbmRleCA3
MzA5OGYxZmExZjEwNzFlNjFmY2QzYWE2NTM1MzMwZDNlODliZjU5Li5lODU4YzkyY2JmOGMzMWEz
MjFiZjM4MDA5N2FiYTU1ZjE1NzAwMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKQEAgLTU5NiwxNCArNTk2LDE0IEBAIHZvaWQgRnJhbWVW
aWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKFJlbmRlckVsZW1lbnQmIHJvb3QpCiAg
ICAgQVNTRVJUKCFtX3BhaW50T2Zmc2V0Q2FjaGVEaXNhYmxlQ291bnQpOwogICAgIEFTU0VSVCgh
bGF5b3V0U3RhdGUoKSk7CiAKLSAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsKKyAgICBtX2xheW91dFN0YXRlU3Rh
Y2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsKIH0KIAogYm9v
bCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZO
ZWVkZWQoUmVuZGVyQmxvY2tGbG93JiBsYXlvdXRSb290KQogewogICAgIGlmIChsYXlvdXRTdGF0
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihsYXlvdXRSb290LCBSZW5kZXJM
YXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5h
cHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5
b3V0U3RhdGU6OklzUGFnaW5hdGVkOjpZZXMpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAK
QEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlv
dXRTdGF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaQogICAgIGF1dG8qIGxh
eW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKICAgICBpZiAoIWxheW91dFN0YXRlIHx8
ICFuZWVkc0Z1bGxSZXBhaW50KCkgfHwgbGF5b3V0U3RhdGUtPmlzUGFnaW5hdGVkKCkgfHwgcmVu
ZGVyZXIuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKQogICAgICAgICB8fCBsYXlvdXRTdGF0ZS0+
bGluZUdyaWQoKSB8fCAocmVuZGVyZXIuc3R5bGUoKS5saW5lR3JpZCgpICE9IFJlbmRlclN0eWxl
Ojppbml0aWFsTGluZUdyaWQoKSAmJiByZW5kZXJlci5pc1JlbmRlckJsb2NrRmxvdygpKSkgewot
ICAgICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
TGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhl
aWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsKKyAgICAgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFw
cGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihtX2xheW91dFN0YXRlU3RhY2ssIHJl
bmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VIZWlnaHRDaGFuZ2VkKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3JCYXNlLmNwcAppbmRleCA4YzNjNTJhMDczNTIyNzkwY2QwYzRhNjBkYzA1ZTYxNDEy
YzE5YWU5Li41MjI3ZTQyYWMwOTZjZTY5MjVkN2VjNmExOGU1MTkyNWQyZTAwNmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyJiBOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKCkKIHsKICAgICBB
U1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29y
a2VyRW5hYmxlZCgpKTsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbnRhaW5lcikKLSAgICAg
ICAgbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29y
a2VyQ29udGFpbmVyPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsKKyAgICAgICAg
bV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyQ29udGFp
bmVyPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsKICAgICByZXR1cm4gKm1fc2Vy
dmljZVdvcmtlckNvbnRhaW5lcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNGQ0YTQ5Yzcz
MWE0Y2FmNDZlZGU2MTE1NzdjYjM5ZTZiZmZmMGEyMi4uYjgyMGU0OWQzNjZkNzE2OTI1YTk3M2Uy
YjI4YzliNTgyYWY5OTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMTEsMjYgKzIxMSwyNiBA
QCBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBwYWdlSW5p
dGlhbEFjdGl2aXR5U3RhdGUoKQogfQogCiBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5pcXVlPENocm9t
ZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQotICAgICwgbV9kcmFn
Q2FyZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NhcmV0Q29udHJvbGxlcj4oKSkK
KyAgICA6IG1fY2hyb21lKG1ha2VVbmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0
aW9uLmNocm9tZUNsaWVudCkpCisgICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIobWFrZVVuaXF1
ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAg
LCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlz
LCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCisgICAgLCBtX2RyYWdDb250cm9sbGVy
KG1ha2VVbmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJh
Z0NsaWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpKQor
ICAgICwgbV9mb2N1c0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlz
LCBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRN
ZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVu
dCkpCisgICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihtYWtlVW5pcXVlPENvbnRleHRNZW51
Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkp
CiAjZW5kaWYKLSAgICAsIG1fdXNlcklucHV0QnJpZGdlKHN0ZDo6bWFrZV91bmlxdWU8VXNlcklu
cHV0QnJpZGdlPigqdGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24uaW5z
cGVjdG9yQ2xpZW50KSkKKyAgICAsIG1fdXNlcklucHV0QnJpZGdlKG1ha2VVbmlxdWU8VXNlcklu
cHV0QnJpZGdlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1
ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9y
Q2xpZW50KSkKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgLCBtX3BvaW50ZXJDYXB0
dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4o
KnRoaXMpKQorICAgICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2lu
dGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCi0gICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBv
aW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogICAg
ICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9wcm9ncmVzcyhz
dGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dy
ZXNzVHJhY2tlckNsaWVudCkpCi0gICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKKyAgICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1
ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGll
bnQpKQorICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIobWFrZVVuaXF1ZTxCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJk
Q2xpZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShGcmFtZTo6Y3JlYXRlKHRoaXMsIG51bGxwdHIs
IHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSkpCiAgICAgLCBtX2Vk
aXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCkpCiAgICAg
LCBtX3BsdWdJbkNsaWVudChwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQpCkBAIC0yNTAs
OSArMjUwLDkgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0
aW9uKQogICAgICwgbV9kb21UaW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lcigqdGhp
cywgJlBhZ2U6OmRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQpCiAg
ICAgLCBtX2FjdGl2aXR5U3RhdGUocGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpCiAgICAgLCBt
X2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRD
bGllbnQpCi0gICAgLCBtX2NvbnNvbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29s
ZUNsaWVudD4oKnRoaXMpKQorICAgICwgbV9jb25zb2xlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNv
bnNvbGVDbGllbnQ+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAs
IG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigq
dGhpcykpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUobWFrZVVuaXF1ZTxQYWdlRGVidWdn
YWJsZT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIpKQogICAgICwgbV9jb29raWVKYXIoV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbi5jb29raWVKYXIpKQpAQCAtMjY4LDE2ICsyNjgsMTYgQEAgUGFn
ZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9w
bGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyKCp0aGlzLCAmUGFnZTo6cGxheWJhY2tD
b250cm9sc01hbmFnZXJVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCiAgICAgLCBtX2lzVXRpbGl0
eVBhZ2UoaXNVdGlsaXR5UGFnZUNocm9tZUNsaWVudChjaHJvbWUoKS5jbGllbnQoKSkpCi0gICAg
LCBtX3BlcmZvcm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogc3RkOjpt
YWtlX3VuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKLSAgICAsIG1fbG93UG93ZXJN
b2RlTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNd
KGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShp
c0xvd1Bvd2VyTW9kZUVuYWJsZWQpOyB9KSkKLSAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nKHN0
ZDo6bWFrZV91bmlxdWU8UGVyZm9ybWFuY2VMb2dnaW5nPigqdGhpcykpCisgICAgLCBtX3BlcmZv
cm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogbWFrZVVuaXF1ZTxQZXJm
b3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKKyAgICAsIG1fbG93UG93ZXJNb2RlTm90aWZpZXIobWFr
ZVVuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVF
bmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShpc0xvd1Bvd2VyTW9kZUVuYWJsZWQp
OyB9KSkKKyAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nKG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VM
b2dnaW5nPigqdGhpcykpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAoRU5BQkxFKFNFUlZJQ0VfQ09O
VFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikpCi0gICAgLCBtX3Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAs
IG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyKFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3Jl
YXRlKCkpCi0gICAgLCBtX3BhZ2VPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQotICAgICwgbV9wYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQ
YXltZW50Q29vcmRpbmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JD
bGllbnQpKQorICAgICwgbV9wYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29v
cmRpbmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQpKQog
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAsIG1fYXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yPihXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCkpKQpAQCAtNTYx
LDcgKzU2MSw3IEBAIHZvaWQgUGFnZTo6aW5pdEdyb3VwKCkKIHsKICAgICBBU1NFUlQoIW1fc2lu
Z2xlUGFnZUdyb3VwKTsKICAgICBBU1NFUlQoIW1fZ3JvdXApOwotICAgIG1fc2luZ2xlUGFnZUdy
b3VwID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlR3JvdXA+KCp0aGlzKTsKKyAgICBtX3NpbmdsZVBh
Z2VHcm91cCA9IG1ha2VVbmlxdWU8UGFnZUdyb3VwPigqdGhpcyk7CiAgICAgbV9ncm91cCA9IG1f
c2luZ2xlUGFnZUdyb3VwLmdldCgpOwogfQogCkBAIC0yNjU0LDcgKzI2NTQsNyBAQCB2b2lkIFBh
Z2U6OnNldFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgfQog
CiAgICAgaWYgKCFtX3Jlc291cmNlVXNhZ2VPdmVybGF5ICYmIG1fc2V0dGluZ3MtPmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkKCkpCi0gICAgICAgIG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5PigqdGhpcyk7CisgICAgICAg
IG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBtYWtlVW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5
PigqdGhpcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAppbmRleCAxODkxZTk1OWIzNzhhMzgzMmQ0Y2MxZjhmNDhhOGNmZDY4ZDk3ODI5Li40
ZTQ4MGMwYzIwZTQwYzJiOTZkNGMzZWNhOWZhNDM1ZTJiOWFlZjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMTYxLDkgKzE2MSw5IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+IG1lc3NhZ2U7CiAKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3Nh
Z2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxs
KCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwg
bWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNz
YWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdnZXN0ZWRDb2x1
bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6
OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1i
ZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKIAog
ICAgIGFkZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAg
dm9pZCBQYWdlQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGwKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYm9v
bCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2Fn
ZVRleHQpOwogCi0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwg
bWVzc2FnZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOworICAgIGF1dG8gbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBhcmd1bWVudHMuY29weVJlZigp
LCBleGVjKTsKIAogICAgIFN0cmluZyB1cmwgPSBtZXNzYWdlLT51cmwoKTsKICAgICB1bnNpZ25l
ZCBsaW5lTnVtYmVyID0gbWVzc2FnZS0+bGluZSgpOwpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQg
UGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWY8
U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0YVVSTC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3QgY2FwdHVyZSBzY3JlZW5z
aG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICAgICAgICAgIGFkZE1lc3NhZ2UobWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3Qg
Y2FwdHVyZSBzY3JlZW5zaG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFBhZ2VD
b25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlw
dEFyZ3VtZW50cz4mJgogICAgIGZvciAoc2l6ZV90IGkgPSAoIXRhcmdldCA/IDAgOiAxKTsgaSA8
IGFyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFkanVzdGVkQXJndW1l
bnRzLmFwcGVuZCh7IHN0YXRlLT52bSgpLCBhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkgfSk7CiAg
ICAgYXJndW1lbnRzID0gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoKnN0YXRlLCBXVEZNb3ZlKGFk
anVzdGVkQXJndW1lbnRzKSk7Ci0gICAgYWRkTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VU
eXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJndW1lbnRz
KSkpOworICAgIGFkZE1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VM
ZXZlbDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDkxOTM2MDQ1YzJm
YWY3NmNhYzVlMmM2OWU2MjMzZjJjZTMwYmY5YjEuLjEyOGMxOGYxNGI5MDhlNzFiYzdjZWZiMzk2
MjA3ZmViYmMwMGYyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTExNiw5ICsx
MTYsOSBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJl
bmNlcygpCiB7CiAgICAgaWYgKCFtX2NhcHRpb25QcmVmZXJlbmNlcykgewogI2lmIFBMQVRGT1JN
KE1BQykgfHwgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKLSAgICAgICAgbV9j
YXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGPigqdGhpcyk7CisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVu
aXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRj4oKnRoaXMpOwogI2Vsc2UKLSAgICAg
ICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5p
cXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlzKTsKICNlbmRpZgogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCA2YzE1YjNmYWE4M2Y1Y2FlMGQ5MTc2ZDAw
YzhhZmMxNWI3NjY5MzE2Li5jYmJhYzIxZDQwMDViMWIwZTExODAyMmY3YWExNGE4YmNmZWQ4NTI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZv
aWQgUGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVyRmlyZWQoKQogRXhj
ZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkK
IHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjpt
YWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1h
a2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3VzZXJU
aW1pbmctPm1hcmsobWFya05hbWUpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBA
IC0yNzksMTQgKzI3OSwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhj
b25zdCBTdHJpbmcmIG1hcmtOYW1lKQogdm9pZCBQZXJmb3JtYW5jZTo6Y2xlYXJNYXJrcyhjb25z
dCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBt
X3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAg
ICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAgICAgbV91
c2VyVGltaW5nLT5jbGVhck1hcmtzKG1hcmtOYW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
UGVyZm9ybWFuY2U6Om1lYXN1cmUoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgY29uc3QgU3Ry
aW5nJiBzdGFydE1hcmssIGNvbnN0IFN0cmluZyYgZW5kTWFyaykKIHsKICAgICBpZiAoIW1fdXNl
clRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGlt
aW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWlu
Zz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3VzZXJUaW1pbmctPm1lYXN1cmUobWVh
c3VyZU5hbWUsIHN0YXJ0TWFyaywgZW5kTWFyayk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKQEAgLTMwMCw3ICszMDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6
bWVhc3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcmCiB2b2lkIFBl
cmZvcm1hbmNlOjpjbGVhck1lYXN1cmVzKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUpCiB7CiAg
ICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91
bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5p
cXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmctPmNsZWFyTWVhc3VyZXMo
bWVhc3VyZU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdh
cm1JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24u
aAppbmRleCA5OWE0MzcyZTU0ZDg0MDI5YmFmYmY5YjhmN2E1ODIwMDFmYTYzYTFiLi4xNmJjZjA0
MzkwYTE3MGYzZGU3ODI2NTBjMmZjMjUyMmNmNTA1NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJld2FybUluZm9ybWF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IFdFQkNPUkVfRVhQT1JUIFByZXdhcm1JbmZvcm1hdGlvbiB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEZvbnRDYWNoZTo6UHJld2FybUluZm9y
bWF0aW9uIGZvbnRDYWNoZTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJp
bnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRl
eCAwMzcwZjI4ODdmNjViNTdiM2NkODk3ZTRmYzY5ZThhMmVmYjg3NWRmLi40NDI5MWFlZmEzN2M4
YTdhODQ0OGJlYzM5YWVlYWMyNDM5ZWM0NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRl
eHQuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcmludENvbnRleHQ6Om91dHB1dExpbmtl
ZERlc3RpbmF0aW9ucyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgRG8KICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2xpbmtlZERlc3RpbmF0aW9ucykgewotICAgICAgICBt
X2xpbmtlZERlc3RpbmF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFJl
ZjxFbGVtZW50Pj4+KCk7CisgICAgICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0gbWFrZVVuaXF1
ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4oKTsKICAgICAgICAgY29sbGVjdExpbmtl
ZERlc3RpbmF0aW9ucyhkb2N1bWVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKaW5kZXggNTZhMDExYzRjZWU5OTc4OTkw
MWZhZDM2MzAyYmUxMGMzNDU2NjUyNy4uM2I4ODFkZmJiMTcxN2Y0ZTQxMWE2YzUzNDQ1OTVmYmQz
YWI0MzA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6aXNTY2hlZHVsZWQoKSBjb25zdAogdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnN0
YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAgICBBU1NFUlQoIWlzU2NoZWR1bGVkKCkpOwot
ICAgIG1fcmVmcmVzaFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOworICAgIG1fcmVmcmVz
aFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOwogICAgIG1fcmVmcmVzaFRpbWVyLT5zdGFydE9uZVNo
b3QoZGVsYXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuaAppbmRleCBmYWRlNjJmYzc4N2VlNDg5NzlhZjZkZDgyNjYyNzc5ODA0ZDM3NTE3
Li42ZjA2MDgxNzgyNmVjNTZjNmVlOGE1ZjhjZDM5NDRlYzJkNDE5MGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKQEAgLTQyLDcgKzQyLDcg
QEAgY2xhc3MgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+IGNyZWF0ZShQYWdlJiBwYWdl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyPihwYWdlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyPihwYWdlKTsKICAgICB9CiAKICAgICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXIoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCmluZGV4IDk1YjFjOGI1
YmU4M2Q4OWIyNDk3OWVhZWQ5YjlkNGU5MGQzZjRmODcuLmVlZWJmOWI5ZTYxYmQ1ODhmZDNiYTk5
ZmFiMTUwMTkxY2M4ZjY3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXpl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKQEAg
LTQwLDYgKzQwLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogCiBzdHJ1Y3Qg
UmVzaXplT2JzZXJ2ZXJEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgVmVjdG9yPFdlYWtQdHI8UmVzaXplT2JzZXJ2ZXI+PiBvYnNlcnZlcnM7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDQyMzQxODI4MGVhMmVlM2M5
YmZkZmM5MWNkMTI3Yjk2OGViMWUxYmYuLjBkZWIwNjQxNDhmOTcyNmNkMzhiNDEwMDVkNTIyOTcy
NjBjMWM2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xODks
NyArMTg5LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KICAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwog
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOworICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+
KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5h
dGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50
cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNz
QXNJUEFkZHJlc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBiNjg0
ODk2ZjM5ODg0NjI1NGExNzk3YWRjZGVkNjY2NjA1ZTg1ZDVjLi4yN2VlYTZjMGFiOTM4ZWJjOGY5
NjVkYWNiODIwMzExNDQzMTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGxheW91dFNjaGVkdWxlVGhy
ZXNob2xkID0gMjUwX21zOwogCiBTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZShQYWdlKiBwYWdl
KQogICAgIDogbV9wYWdlKG51bGxwdHIpCi0gICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMoc3Rk
OjptYWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQorICAgICwgbV9mb250R2VuZXJp
Y0ZhbWlsaWVzKG1ha2VVbmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKICAgICAsIG1fbGF5
b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAgICAgLCBtX21pbmltdW1ET01U
aW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAgLCBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3VzcGVuZGFibGVUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRp
bWVyLmgKaW5kZXggNTU4NDQzNDA3ODM0NmZiOWI1N2E2ZWE1OWFmY2UyN2E2MjQwYjU1YS4uM2Mz
ZDQ5ZTA1OGFiMTMxNzQ3ZWI0OWJiMGM5M2EwZmQyOTQ1MThmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TdXNwZW5kYWJsZVRpbWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU3VzcGVuZGFibGVUaW1lciA6IHByaXZhdGUgVGltZXJCYXNlLCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsK
ICAgICB2aXJ0dWFsIH5TdXNwZW5kYWJsZVRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggYjljZTk4Y2M2Y2E1YzI0NTZjZGI5NGY1
ZGM0MWI0ZDJiNTBlOThmNi4uNjUyMzExZDdhNTVmNTUwN2EwNWFhNDNiNjJjODAyMDg3MjJkYmFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApA
QCAtNzMsNyArNzMsNyBAQCB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6Zm9yRWFjaFVzZXJN
ZXNzYWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFVzZXJNZQogCiB2b2lkIFVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6
OnVuaXF1ZV9wdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCkKIHsKLSAgICBhdXRvJiBzY3JpcHRz
SW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0g
eyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0K
IApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVV
c2VyU2NyaXB0cyhET01XcmFwcGVyV29ybGQmIHdvcmxkKQogCiB2b2lkIFVzZXJDb250ZW50Q29u
dHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1
bmlxdWVfcHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCwgVXNlclN0eWxlSW5qZWN0
aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewotICAgIGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9
IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAg
YXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3Js
ZCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0
ZXJhdG9yLT52YWx1ZTsKICAgICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVz
ZXJTdHlsZVNoZWV0KSk7CiAKICAgICBpZiAoaW5qZWN0aW9uVGltZSA9PSBJbmplY3RJbkV4aXN0
aW5nRG9jdW1lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50
RGVsdGFGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0
ZXIuY3BwCmluZGV4IGYyNTlhZWIxYTBhOWU1Y2U3YTEzNGYwZDEyNjllYzMxNGM5YTljMzEuLjMw
NGQ5NGE3NWJmMzYxZDhkZDQ2ZjZhZmZhZmUzMWMzZWY4MmE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKQEAgLTQzLDkgKzQzLDkgQEAgV2hl
ZWxFdmVudERlbHRhRmlsdGVyOjp+V2hlZWxFdmVudERlbHRhRmlsdGVyKCkgPSBkZWZhdWx0Owog
c3RkOjp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0YUZpbHRlcj4gV2hlZWxFdmVudERlbHRhRmls
dGVyOjpjcmVhdGUoKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8V2hlZWxFdmVudERlbHRhRmlsdGVyTWFjPigpOwogI2Vsc2UKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IDE0NDY2M2NhZTk1OTc5Y2ZjYzdjNGEyMjQyZTFkMTYxZDYxMDI5MjUu
LjEzYzMxZjU3NjRiN2IyMjRhMmI3ZWE1NWFlMzNhNmIzOTg2Yjk2ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwCkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZTo6YW5pbWF0aW9uV2lsbEJlUmVtb3ZlZChBbmltYXRpb25CYXNlJiBhbmltYXQKIH0KIAogQ1NT
QW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcihGcmFtZSYgZnJhbWUp
Ci0gICAgOiBtX2RhdGEoc3RkOjptYWtlX3VuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZT4oZnJhbWUpKQorICAgIDogbV9kYXRhKG1ha2VVbmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJv
bGxlclByaXZhdGU+KGZyYW1lKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDc0ZWVkYzk5NjZl
OWY4MWFjYjk5NmNmMzc2OTgzZGFiNjg1NTQwYzYuLmJhZWIyNDc2NTcxNjczN2I4NGExY2M4ZjE5
ZGUwMTczZjM2N2U5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTExNyw5ICsxMTcsOSBAQCBzdGF0aWMg
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJv
cGVydHlCbGVuZGluZ0NsaQogewogICAgIEFTU0VSVChmcm9tICYmIHRvKTsKICAgICBpZiAoZnJv
bS0+c3R5bGUoKSAhPSB0by0+c3R5bGUoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U2hhZG93RGF0YT4oKnRvKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0
YT4oKnRvKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KGJsZW5k
KGZyb20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlvbigpLCBwcm9ncmVzcyksCisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0
aW9uKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmQoZnJvbS0+cmFkaXVzKCksIHRvLT5yYWRp
dXMoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5zcHJlYWQoKSwgdG8tPnNwcmVh
ZCgpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLT5zdHlsZSgpLCB0
by0+c3R5bGUoKSwgcHJvZ3Jlc3MpLApAQCAtOTc0LDE1ICs5NzQsMTUgQEAgY2xhc3MgUHJvcGVy
dHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlX
cmFwcGVyQmFzZQogICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1By
b3BlcnR5SUQgcHJvcCwgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25z
dCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IENvbG9yJiksCiAgICAgICAgIGNv
bnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChS
ZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5p
bWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihzdGQ6
Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikp
Ci0gICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3Jh
cHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKKyAgICAgICAg
LCBtX3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVy
LCBzZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0
eVdyYXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAg
ewogICAgIH0KICAgICBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9w
ZXJ0eUlEIHByb3AsIE1heWJlSW52YWxpZENvbG9yVGFnLCBjb25zdCBDb2xvciYgKFJlbmRlclN0
eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3Qg
Q29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0
ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29s
b3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAg
ICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZh
bGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFw
cGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHBy
b3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1fd3JhcHBlciht
YWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCBnZXR0ZXIs
IHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5
V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0
dGVyKSkKICAgICB7CiAgICAgfQogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBh
LCBjb25zdCBSZW5kZXJTdHlsZSogYikgY29uc3Qgb3ZlcnJpZGUKQEAgLTEyMjksMTkgKzEyMjks
MTkgQEAgY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBBbmltYXRpb25Q
cm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdy
YXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJh
Y2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclBy
b3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBw
ZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3Np
dGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tn
cm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0
eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFw
cGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9z
aXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNr
Z3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJv
cGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBl
cj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0
aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWU9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dy
b3VuZFlPcmlnaW4sIEVkZ2U6OkJvdHRvbSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
U2l6ZToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAm
RmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQ
cm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVu
Z3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgotICAgICAgICAgICAgbV9maWxs
TGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclN0eWxlSW1h
Z2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXll
cjo6c2V0SW1hZ2UpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBt
YWtlVW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAm
RmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3NzAsNyArMTc3
MCw3IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRp
b25XcmFwcGVyTWFwKCkKICAgICAgICAgICAgIGxvbmdoYW5kV3JhcHBlcnMudW5jaGVja2VkQXBw
ZW5kKG1fcHJvcGVydHlXcmFwcGVyc1t3cmFwcGVySW5kZXhdLmdldCgpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIFdURk1vdmUobG9uZ2hh
bmRXcmFwcGVycykpKTsKKyAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVu
ZChtYWtlVW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92
ZShsb25naGFuZFdyYXBwZXJzKSkpOwogICAgICAgICBpbmRleEZyb21Qcm9wZXJ0eUlEKHByb3Bl
cnR5SUQpID0gYW5pbWF0YWJsZUxvbmdoYW5kUHJvcGVydGllc0NvdW50ICsgaTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cAppbmRleCA3MDQ3ZTgzZGU3ODVkYjgxYjZkOTkwYTk0ODM3YmE3MWQ3MjgyOWEwLi44ZjBmNmJm
NTNiMDNlMDhmNzAzMzE2NmViOGM3NGQ2YmY5NzI4MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTIzOCw3ICsyMzgsNyBA
QCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJp
bmcmIGhlYWRlciwgQ29udGVudFNlY3VyaQogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVw
ZGF0ZVNvdXJjZVNlbGYoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewog
ICAgIG1fc2VsZlNvdXJjZVByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKTsKLSAg
ICBtX3NlbGZTb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCks
IHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKKyAg
ICBtX3NlbGZTb3VyY2UgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4o
KnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3Vy
aXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKIH0KIAogdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFwcGx5UG9saWN5VG9TY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlLmgKaW5kZXggYThmMWQ0ZjBiZGUxNGYxNGI4OGFhMzk0MGVkZDhj
ODk2MjYxZTNkZS4uYmJkOTE4OWUyNDgzNGRhY2M4ZDdiYWUxNWNjNTgxNmNhMzIwY2YxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDsKIAogY2xhc3MgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGlyZWN0aXZlTGlzdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICA6IG1fbmFtZShuYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCBkZGJkOGNkZTI3ODBlOTJkYmEyMGUwYWJkOTljZjA0
OTg0M2Y0YzRkLi5jMDE1NmRkZjAxYzk0N2U1MDRiNTY5ZDBhNDExNjk4YzU1OGYzZWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3QoQ29udGVudFNlCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVhdGUoQ29u
dGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHR5cGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UG9s
aWN5RnJvbSBmcm9tKQogewotICAgIGF1dG8gZGlyZWN0aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsKKyAgICBh
dXRvIGRpcmVjdGl2ZXMgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CiAgICAgZGlyZWN0aXZlcy0+cGFyc2UoaGVhZGVyLCBmcm9t
KTsKIAogICAgIGlmICghY2hlY2tFdmFsKGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShk
aXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkpKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAgbV9wb2xpY3kucmVwb3J0RHVwbGljYXRlRGly
ZWN0aXZlKG5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRpcmVjdGl2ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKKyAg
ICBkaXJlY3RpdmUgPSBtYWtlVW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YXBw
bHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzYW5kYm94
UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5n
ZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2
ZXIuaAppbmRleCAxYzJiNGQwOGU2ZGIyNDMwNTI5MWExZWExYzg2ZWI2MzZlM2YzNTI2Li44NDk0
ODQyNjRlOTE3MzBmN2E2OTA5OGRmM2Q3ZGFkMTQ5MmRjZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBj
bGFzcyBET01UaW1lcjsKIGNsYXNzIEVsZW1lbnQ7CiAKIGNsYXNzIENvbnRlbnRDaGFuZ2VPYnNl
cnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RE9NVGltZXJIb2xkaW5nVGFuay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJI
b2xkaW5nVGFuay5oCmluZGV4IGI2MjE4NGZlMTc5NDJkYTk0ODU5YTgwMmNlZmRlNzZlMjQyZDNl
NGMuLmJiZjc5NDVhYWE0OTlhNzZiN2UxMmFiM2M3NWQ1OTQ0MjFlNDVlZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmgKQEAgLTM1LDYgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NVGltZXI7CiAKIGNsYXNzIERPTVRpbWVy
SG9sZGluZ1RhbmsgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IERPTVRpbWVySG9sZGluZ1RhbmsoKTsKICAgICB+RE9NVGltZXJIb2xkaW5nVGFuaygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxp
bnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHAKaW5kZXggNGZkZjc1NmMwMjE5ODg1MzNiMmYxMjU1YzkxYTRlY2M5MTQ4NGZhNC4u
YzA3YjEyNzY5Y2QwNGJhN2IzMWY4OGM0NmE5ZjA2YjZhZDZiNDlkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3Bw
CkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2NUaW1lclN0cmluZyhNb25vdG9uaWNU
aW1lIHRpbWVyRmlyZURhdGUsIE1vbm90b25pY1RpbWUgbm93KQogc3RhdGljIGNvbnN0IGZsb2F0
IGdGb250U2l6ZSA9IDE0OwogCiBjbGFzcyBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmlu
YWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyKFJlc291cmNl
VXNhZ2VPdmVybGF5JiBvdmVybGF5KQogICAgICAgICA6IG1fb3ZlcmxheShvdmVybGF5KQpAQCAt
MTMyLDcgKzEzMyw3IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlciBmaW5hbCA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIAogdm9pZCBSZXNvdXJjZVVzYWdlT3Zlcmxh
eTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAgICBtX292ZXJsYXlQYWludGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsKKyAgICBtX292
ZXJsYXlQYWludGVyID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0
aGlzKTsKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUob3ZlcmxheSgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1fb3Zl
cmxheVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDNEKCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3JtYWxI
ZWlnaHQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQppbmRleCBkN2FkZmZkNzJmOWZh
OGZlOTdhZmNkYTA3MThkODNjNmUwOTA4NTBjLi4wODYzYWQyNjcyNWQ2NTU0NzUyYjdhYzIxNDhl
ZWQxYzZkZmMyM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KQEAgLTkwLDcgKzkw
LDcgQEAgdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogdm9pZCBQYWdlOjphZGRTY2hl
ZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogewogICAgIGlmICghbV9zY2hlZHVs
ZWRSdW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gc3RkOjpt
YWtlX3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOworICAgICAgICBtX3NjaGVkdWxlZFJ1
bkxvb3BQYWlycyA9IG1ha2VVbmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3Nj
aGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1Rl
eHRJbmRpY2F0b3JXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0
b3JXaW5kb3cuaAppbmRleCBkY2RkOTUwNDhiZDk1OGFhNzQ0MGEwZmMzZDliY2U3ZGYyZjU0ODBm
Li42NDc1Y2U1ZWJjOTA3YWUxODgwYWYxNzFjMDczNmZmM2VjYjUwMjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCkBAIC01Miw2ICs1Miw3IEBA
IGVudW0gY2xhc3MgVGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlvbiA6IHVpbnQ4
X3QgewogI2lmIFBMQVRGT1JNKE1BQykKIAogY2xhc3MgVGV4dEluZGljYXRvcldpbmRvdyB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4
dEluZGljYXRvcldpbmRvdyk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXgg
MzA2Y2ZlZDE5Y2U2ZDAwYjYyYTg1MjQ5NzAwMjhiODA0NWZhZDgyMy4uMDBhZjM5NDc4ZGM3NWY3
MDI5YzI0ODQ1NGVmMDFhYjBjNmM3ZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTU5
LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKiBwYWdlKQogICAgIDogU2Nyb2xsaW5n
Q29vcmRpbmF0b3IocGFnZSkKICAgICAsIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXIo
KnRoaXMsICZBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFm
dGVyQXN5bmNTY3JvbGxUaW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQorICAgICwgbV9zY3JvbGxp
bmdTdGF0ZVRyZWUobWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5oCmluZGV4IDYzYmQ5NjM4YjYzYTFhMTFjYTQwZjM2NzIxMjlmNzE0MTBjNmZmMmUu
LjNhYjY0MDY4MjY0YzUwNDA4YmFiNGVlMzhkMmNjZDRhNjQxYzc4NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBA
IC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTY3JvbGxPZmZzZXRSYW5nZSB7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZlY3RvcjxUPiBob3Jpem9udGFsU25hcE9mZnNl
dHM7CiAgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25hcE9mZnNldHM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuY3BwCmluZGV4IDc2NDBkNTVkOTZhM2YwOTU5YjkzMWVmMDQzM2VjMTVmYTIwN2RiZDQu
LmM4OTBmOWViYTAwNGNhODc4MDE0MWI4NWNlZWUwMDU1NjJlMmU0NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmNwcApAQCAtNzEsNyArNzEsNyBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNp
emUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRp
YWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5p
dGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1By
ZWRpY3Rpb25FbmFibGVkKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCmluZGV4IGJlOTlkMGVl
NmEzZjA3ODlmYzRkN2RjNjkyODg1YjUyNDAwNDM4MDIuLjIxYzMxMWNkODliNzk0MDg0YTg0OTBk
NWZjOWJhNTVhOTNiOWFlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCkBAIC0zOSw2ICszOSw3
IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiAKIGNsYXNzIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50
JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxv
YXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9y
dFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWZWxvY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAppbmRleCA5NjgyZDJjMWJjZWUzNzU3MTNjMzQ2
ZDNlMzNjZDRkYzEzNWFmYzc4Li5iZTU3YzliODY5ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0MGM4
MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9k
ZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAg
Y2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAg
ICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5n
U3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxS
ZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdU
Rk1vdmUoY2hpbGROb2RlKSk7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKENoaWxkTm9kZXMpOwog
fQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGls
ZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90CiAKICAgICBpZiAo
IW1fY2hpbGRyZW4pIHsKICAgICAgICAgQVNTRVJUKCFpbmRleCk7Ci0gICAgICAgIG1fY2hpbGRy
ZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+
KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xs
aW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgfQogCiAgICAgaWYgKGluZGV4ID4gbV9jaGlsZHJlbi0+
c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVUcmVlLmNwcAppbmRleCBmNjFlMjhlMGVjNTAzMDEyYjM3MmZiMjU1NjlhOGNiN2Rk
NTNhYTcwLi43MTU3ZTE2ODYwZjQ5YzkxZGRhMzViYmM0ZWFmZTk4MTllYWNiZTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5j
cHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVl
PiBTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdChMYXllclJlcHJlc2VudGF0aQogICAgIH0KIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVzIGFuZCByZXNldHMgdGhlIGN1cnJlbnQgc3RhdGUg
dHJlZSwgYnV0IGxlYXZlcyB0aGUgdHJlZSBzdHJ1Y3R1cmUgaW50YWN0LgotICAgIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRyZWVTdGF0ZUNsb25lID0gc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGlu
Z1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJl
ZT4oKTsKICAgICB0cmVlU3RhdGVDbG9uZS0+c2V0UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlv
bihwcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKTsKIAogICAgIGlmIChtX3Jvb3RTdGF0ZU5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5jcHAKaW5kZXggZWE3NGUyY2E0MjQyOWE4ZTJiZTlmOWEzNzllMzY3ZGE0ZGRkYTNkMS4u
NzI5NjE1YTY5ZjAxMjI2MzE1MTQ3ZWNmZGI1NTI4YjAxOTlmMzg2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtNTAs
NyArNTAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xs
aW5nVHJlZU5vZGU+JiYgY2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMp
OwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7CisgICAgICAgIG1f
Y2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4o
KTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RGTW92ZShjaGlsZE5vZGUpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KaW5kZXggMWM3YWI3NmExNTFlNjM1MGQ4
YjYxNGMzNmQwNWJjZTY1YzZjOTU4NC4uYjQzZWE5OTVmYWY2YjQ3MDMzNWZiZjA3YTIwODZhNmIz
NWY3MGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0zNiw3
ICszNiw3IEBAIHN0YXRpYyBib29sIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJl
ZGljdGlvbiA9IHRydWU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRl
bnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3
cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRp
YWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQ
bGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCmluZGV4IDcxZTQzZDNmM2I5NDYxMDYwOGNi
ZjExZGI1MTE1YmNiZWMwNTQ4OTAuLjA4OGRmNTQzZTA0NzkxMTdjODM3YWZlMjIzYmJjYzU1MTQ4
OGE3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKQEAgLTMzLDYgKzMzLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1BVTW9uaXRvciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgRXhjZWVkZWRDUFVMaW1pdEhh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoZG91YmxlKT47CiAgICAgV0VCQ09SRV9FWFBPUlQg
Q1BVTW9uaXRvcihTZWNvbmRzIGNoZWNrSW50ZXJ2YWwsIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVy
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKaW5kZXggZTYwZjc3MTNmNjJi
YjI1NjJhODQyODg4YzdmYzYyOWYyYzU0N2YzMy4uNmIyODhlMWUxN2U0NDhiYjg2ZmI5ZWNlMjlj
YzllNWJkYjlkZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1v
bml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCkBAIC00
Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVNb25pdG9yIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEZp
bGVDaGFuZ2VUeXBlIHsgTW9kaWZpY2F0aW9uLCBSZW1vdmFsIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguY3BwCmluZGV4IDRmZjk4MDRlYWVjMTMwNmIyNjhhMjQ1ZjI3NzFhMTEyZTI4ZDJh
MWUuLjNmYzQzMWE0NzQ2MWQ4YzQ0M2RiNGI2MjJkNmVhOTA2MzRkYTBmMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMjg4LDkgKzI4OCw5IEBAIExlbmd0aCBjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgLy8gVHVybiB0
aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVu
Z3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBl
cmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVy
YXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8
Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Ro
cy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3Ro
KSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdU
Rk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5n
dGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7
CiB9CiAKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgTGVuZ3RoIGJsZW5kTWl4ZWRUeXBlcyhj
b25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncgogICAgIGlm
IChwcm9ncmVzcyA+PSAxLjApCiAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgCi0gICAgYXV0
byBibGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aD4oZnJv
bSwgdG8sIHByb2dyZXNzKTsKKyAgICBhdXRvIGJsZW5kID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVz
c2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3MpOwogICAgIHJldHVybiBMZW5ndGgo
Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBWYWx1ZVJhbmdlQWxsKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVu
ZXIuY3BwCmluZGV4IDU1MmIxMmY2YzFlOGNkYTZmZmVhNjQ3ODY5MjIyOWVhOTNlZDE3Y2EuLjhl
MzVlMzA0YzFlNzI1N2JjNjRjNmFkMTBlZGRlOTY0MjA0ZTY1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcApAQCAtMzEsNyArMzEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgKCFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oTUFDKSkgfHwgIUhBVkUoTUVESUFfUExBWUVSKQogc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCmluZGV4IDJlNWY2M2JjZWYyYmZkZmNm
ZjkyMTZkOTg2YjBmNDM2MGM2ODBiNDEuLmI3YzFkMjRlYjQ5ZTVhNTVmNjkxZjA2Y2U5ZTFkODBi
MjFiY2NhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBA
IC0zNCw2ICszNCw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsK
IAogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb24oKSB7IH07CiAgICAgdmlydHVh
bCBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZs
b2F0IC8qIHN0ZXAgKi8sIGZsb2F0IC8qIG11bHRpcGxpZXIgKi8pIHsgcmV0dXJuIHRydWU7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggZDkxNTRk
OTM1MWEyZjMzNjZkZGQwNWZlNjBmZGViYjljMWExZTczOC4uZjhlZGM4ODJkN2YzNjAwMmUxOTg1
MTBkODFiOGViMzRhYTUwMDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIUVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRG
T1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6
OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCBjNjJh
ZDgzNGU2YjM4MDhlMWVjZGE4YmExMzEyZDNkOTU3MDVlOTZhLi45NmQwZjMwMGIzNDE4ZTYwODIx
ZGEyZGEyYTY0MTg5YzRkZWUwYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFNjcm9sbEFuaW1hdG9yJiBTY3JvbGxhYmxl
QXJlYTo6c2Nyb2xsQW5pbWF0b3IoKSBjb25zdAogewogICAgIGlmICghbV9zY3JvbGxBbmltYXRv
cikgewogICAgICAgICBpZiAodXNlc01vY2tTY3JvbGxBbmltYXRvcigpKSB7Ci0gICAgICAgICAg
ICBtX3Njcm9sbEFuaW1hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+
KGNvbnN0X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBtYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0aGlzKSwgW3Ro
aXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIGxvZ01vY2tTY3Jv
bGxBbmltYXRvck1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBl
bHNlCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFzTGF5ZXJGb3JT
Y3JvbGxDb3JuZXIoKSBjb25zdAogU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBT
Y3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKIHsKICAgICBpZiAoIW1fc25h
cE9mZnNldHNJbmZvKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PigpOworICAgICAgICBtX3NuYXBP
ZmZzZXRzSW5mbyA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
PigpOwogICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0c0luZm87CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCmluZGV4IDcyYjAwNDUxMzE0MmM4ZjRlOTVk
ZjIyODE4YzNkZGMxODBhYWVjZWQuLjBkNzRiMTZlNTkyNTk4YWI4M2IwYzhjMGViNTRiNDQ2ZGZk
MzhkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaApA
QCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIGNsYXNz
IFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3VkZGVuVGVybWluYXRpb25EaXNh
Ymxlcik7CiAgICAgcHVibGljOgogICAgICAgICBTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYTI4
MDEwZWNmZTVhMzY3YWQ5ZDBiMjlhMjAwNTYzYTBmNTYxZDU2MC4uMjdhNzM2NDE2YmEwNGMwNTNj
MmU3N2RiMmM1NTgxNDQ0MGQyZjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKLSAgICA6IG1fY2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNl
UmVxdWVzdEluaXRpYXRvcnM+KCkpCisgICAgOiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRp
YXRvcnMobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQogICAg
ICwgbV9ldmVudE5hbWVzKEV2ZW50TmFtZXM6OmNyZWF0ZSgpKQotICAgICwgbV90aHJlYWRUaW1l
cnMoc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCi0gICAgLCBtX3F1YWxpZmllZE5h
bWVDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkKKyAgICAsIG1f
dGhyZWFkVGltZXJzKG1ha2VVbmlxdWU8VGhyZWFkVGltZXJzPigpKQorICAgICwgbV9xdWFsaWZp
ZWROYW1lQ2FjaGUobWFrZVVuaXF1ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCiAjaWZuZGVmIE5E
RUJVRwogICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKLSAgICAs
IG1fY2FjaGVkQ29udmVydGVySUNVKHN0ZDo6bWFrZV91bmlxdWU8SUNVQ29udmVydGVyV3JhcHBl
cj4oKSkKKyAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKG1ha2VVbmlxdWU8SUNVQ29udmVydGVy
V3JhcHBlcj4oKSkKIHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNh
bGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBvbgogICAgIC8vIGFu
eSBvdGhlciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0aGlz
IG1ha2VzIHRoaXMgYSBjb252ZW5pZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5jcHAKaW5kZXggMmY4OTJkNmIxOWFiYTQyMzBlOTI0Yzc2MTg3MzhmYzZjYjQ4Zjdl
Yy4uZTcwZDQ2ZDBiOWYyNDA3ZjkwODU0OGZhOGYyZTk4YzlkYTQ1NjNiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBBdWRp
b0J1czo6QXVkaW9CdXModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGxlbmd0aCwg
Ym9vbCBhbGxvY2F0ZSkKICAgICBtX2NoYW5uZWxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVt
YmVyT2ZDaGFubmVscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZD
aGFubmVsczsgKytpKSB7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8gc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Q2hhbm5lbD4obnVsbHB0ciwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byBjaGFubmVsID0gYWxsb2Nh
dGUgPyBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IG1ha2VVbmlxdWU8QXVkaW9D
aGFubmVsPihudWxscHRyLCBsZW5ndGgpOwogICAgICAgICBtX2NoYW5uZWxzLnVuY2hlY2tlZEFw
cGVuZChXVEZNb3ZlKGNoYW5uZWwpKTsKICAgICB9CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lk
IEF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZs
b2F0KiBsYXN0TWl4R2FpbiwgZgogCiAgICAgaWYgKGZyYW1lc1RvRGV6aXBwZXIpIHsKICAgICAg
ICAgaWYgKCFtX2RlemlwcGVyR2FpblZhbHVlcy5nZXQoKSB8fCBtX2RlemlwcGVyR2FpblZhbHVl
cy0+c2l6ZSgpIDwgZnJhbWVzVG9EZXppcHBlcikKLSAgICAgICAgICAgIG1fZGV6aXBwZXJHYWlu
VmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6aXBw
ZXIpOworICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBtYWtlVW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4oZnJhbWVzVG9EZXppcHBlcik7CiAKICAgICAgICAgZmxvYXQqIGdhaW5WYWx1
ZXMgPSBtX2RlemlwcGVyR2FpblZhbHVlcy0+ZGF0YSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZnJhbWVzVG9EZXppcHBlcjsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCAyMTczZGM5MzgzZTRhMzNjMWI1OTM0NzY1YTFlNWIx
MDc0NmYwM2ExLi5iYmIzZDJhY2QyMmM1NzJiYzkyM2E0OGIxZjcwYWY4NTRjMGNiMDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQW4gQXVkaW9CdXMgcmVwcmVzZW50cyBhIGNvbGxlY3Rp
b24gb2Ygb25lIG9yIG1vcmUgQXVkaW9DaGFubmVscy4KIC8vIFRoZSBkYXRhIGxheW91dCBpcyAi
cGxhbmFyIiBhcyBvcHBvc2VkIHRvICJpbnRlcmxlYXZlZCIuCiAvLyBBbiBBdWRpb0J1cyB3aXRo
IG9uZSBjaGFubmVsIGlzIG1vbm8sIGFuIEF1ZGlvQnVzIHdpdGggdHdvIGNoYW5uZWxzIGlzIHN0
ZXJlbywgZXRjLgotY2xhc3MgQXVkaW9CdXMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
QXVkaW9CdXM+IHsKK2NsYXNzIEF1ZGlvQnVzIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEF1ZGlvQnVzPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9CdXMpOwog
cHVibGljOgogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9DaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0NoYW5uZWwuaAppbmRleCBiYmMxMzU3YTNkNTNmMDU0OGY4ODc4ZTU4N2RiN2Q2ZGQxYzRmYWQ4
Li43Yjk4OTNkMzhhYzQxNzQ1MzE3NDFiNzcyNGM2ZmYyYWJkMDFkZjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaApAQCAtMzcsNyArMzcsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvQ2hhbm5lbCByZXByZXNlbnRzIGEgYnVm
ZmVyIG9mIG5vbi1pbnRlcmxlYXZlZCBmbG9hdGluZy1wb2ludCBhdWRpbyBzYW1wbGVzLgogLy8g
VGhlIFBDTSBzYW1wbGVzIGFyZSBub3JtYWxseSBhc3N1bWVkIHRvIGJlIGluIGEgbm9taW5hbCBy
YW5nZSAtMS4wIC0+ICsxLjAKLWNsYXNzIEF1ZGlvQ2hhbm5lbCB7CitjbGFzcyBBdWRpb0NoYW5u
ZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEF1ZGlvQ2hhbm5lbCk7CiBwdWJsaWM6CiAgICAgLy8gTWVtb3J5IGNhbiBiZSBl
eHRlcm5hbGx5IHJlZmVyZW5jZWQsIG9yIGNhbiBiZSBpbnRlcm5hbGx5IGFsbG9jYXRlZCB3aXRo
IGFuIEF1ZGlvRmxvYXRBcnJheS4KQEAgLTU2LDcgKzU3LDcgQEAgY2xhc3MgQXVkaW9DaGFubmVs
IHsKICAgICAgICAgLCBtX3Jhd1BvaW50ZXIoMCkKICAgICAgICAgLCBtX3NpbGVudCh0cnVlKQog
ICAgIHsKLSAgICAgICAgbV9tZW1CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4obGVuZ3RoKTsKKyAgICAgICAgbV9tZW1CdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4obGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBBICJibGFuayIgYXVkaW8gY2hhbm5l
bCAtLSBtdXN0IGNhbGwgc2V0KCkgYmVmb3JlIGl0J3MgdXNlZnVsLi4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCmluZGV4IDc1YzlhYmQ3NDk0ZDM1ODIyZjgyYWNl
N2NjZDBkODU2ODYxMWQ3ZWEuLjBmNDM4ZGQ3ZDBmYTU5ZmI2NDRkNGRmNTcyZjU1OWZkNjYzMDhi
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCkBAIC0zMyw3
ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9GSUZPIHsKK2Ns
YXNzIEF1ZGlvRklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgLy8gQ3JlYXRlIGEgRklGTyBsYXJnZSBlbm91Z2ggdG8gaG9sZCB8Zmlmb0xlbmd0
aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLgogICAgIEF1
ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKaW5kZXggYmZi
ZTk4M2E1NzVhNDU0YWFjMmIwYzNjYmU0NTc1ZWZhZjZiNzhkNy4uZDc0OGZhNDEzODczNzlkYjM5
NWJlYWU2NWY4ODJiYTI1OGU5ZmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUHVsbEZJRk8uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAvLyB0aGUgRklGTyB3aWxsIGFzayB0aGUgcHJvdmlkZXIgZm9yIG1vcmUgZGF0YSB3aGVuIG5l
Y2Vzc2FyeSB0byBmdWxmaWxsIGEgcmVxdWVzdC4gQ29udHJhc3QgdGhpcwogLy8gd2l0aCBhICJw
dXNoIiBGSUZPLCB3aGVyZSB0aGUgc2VuZGVyIHB1c2hlcyBkYXRhIHRvIHRoZSBGSUZPIHdoaWNo
IHdpbGwgaXRzZWxmIHB1c2ggdGhlIGRhdGEgdG8KIC8vIHRoZSByZWNlaXZlciB3aGVuIHRoZSBG
SUZPIGlzIGZ1bGwuCi1jbGFzcyBBdWRpb1B1bGxGSUZPIHsKK2NsYXNzIEF1ZGlvUHVsbEZJRk8g
ZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIENy
ZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJvdmlkZXJ8LiBUaGUgRklGTyB3aWxs
IGJlIGxhcmdlIGVub3VnaCB0byBob2xkCiAgICAgLy8gfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBk
YXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4gVGhlIEF1ZGlvU291cmNlUHJvdmlk
ZXIgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9SZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNh
bXBsZXIuY3BwCmluZGV4IDg2OTA2YmE1MTI0NzU4NjkyYzY4M2UyYmM5MDM4MzUwMWVhYjhmZDku
LjI4NGMwNTQ5NDMyNTkzNDRlYWNlMzI0MThhZGE5YjgzMDNkYTJlNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgY29uc3QgZG91YmxlIEF1ZGlvUmVzYW1wbGVyOjpNYXhSYXRlID0gOC4wOwogQXVkaW9S
ZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKCkKICAgICA6IG1fcmF0ZSgxLjApCiB7Ci0gICAgbV9r
ZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlz
KSk7CisgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVs
Pih0aGlzKSk7CiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIDAsIGZhbHNl
KTsKIH0KIApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IG1fcmF0ZSgxLjApCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9r
ZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlz
KSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktl
cm5lbD4odGhpcykpOwogCiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG51bWJl
ck9mQ2hhbm5lbHMsIDAsIGZhbHNlKTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBdWRpb1Jl
c2FtcGxlcjo6Y29uZmlndXJlQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAg
ICAvLyBGaXJzdCBkZWFsIHdpdGggYWRkaW5nIG9yIHJlbW92aW5nIGtlcm5lbHMuCiAgICAgaWYg
KG51bWJlck9mQ2hhbm5lbHMgPiBjdXJyZW50U2l6ZSkgewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBjdXJyZW50U2l6ZTsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgICAg
IG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4o
dGhpcykpOworICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVz
YW1wbGVyS2VybmVsPih0aGlzKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fa2VybmVscy5yZXNp
emUobnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Jlc2FtcGxlci5oCmluZGV4IGQxMWZhOTNlYmFhY2JkOGU1NmI5OGRhMzM3NWZhZTE0
MDY4ZTNiYzkuLjIwMTZiYWZmN2M4OGRmMThhZjVkMzUyYzMwMWY1ZmY0Mzc2ODlmN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaApAQCAtMzcs
NyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgYXVkaW8gc3RyZWFtIG1heSBi
ZSBzaW5nbGUgb3IgbXVsdGktY2hhbm5lbC4KIC8vIFRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRl
ZmF1bHRzIHRvIHNpbmdsZS1jaGFubmVsIChtb25vKS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXIg
eworY2xhc3MgQXVkaW9SZXNhbXBsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVyKCk7CiAgICAgQXVkaW9SZXNhbXBsZXIo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAppbmRleCA5OWQ4NzdiYjdjZDY4ZGJi
MDUzNjc3YTA5N2NkNGUwZWFjODNiNzgyLi44YWMyYmFhNDJjNTg3YTM0ODVkNTM0MDIzYWRlZTI0
Zjg4MzI2ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyS2VybmVsLmgKQEAgLTM0LDcgKzM0LDkgQEAgY2xhc3MgQXVkaW9SZXNhbXBs
ZXI7CiAvLyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBkb2VzIHJlc2FtcGxpbmcgb24gYSBzaW5nbGUg
bW9ubyBjaGFubmVsLgogLy8gSXQgdXNlcyBhIHNpbXBsZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBm
b3IgZ29vZCBwZXJmb3JtYW5jZS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgeworY2xh
c3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvUmVzYW1wbGVyS2VybmVsKTsKIHB1
YmxpYzoKICAgICBBdWRpb1Jlc2FtcGxlcktlcm5lbChBdWRpb1Jlc2FtcGxlciopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAppbmRleCA1YzFi
ZjJhMzE3MzQyZWEzZTUyOTJhNzk3ZThlNjZlMWE4ZGEzOTdjLi5iNWZiNTgwNjQ4ZjljZjhlYzRm
MTg2ZmFmYTQ4ZTEzZmRjZjJmNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgYm9vbCBBdWRpb1Nlc3Npb246
OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogY2xh
c3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiB9
OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IDE3ZGE4MWIzYjc1ZDdhNWFhYjgyMTQ4NmI3
YzFlMzNmMWE4ZGY0NjkuLmU3MDA4MjJmZjFmZWViZDc4MjlhZWM3NTBjY2U0MGE2MGI5MjU2NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC00
NCw3ICs0NCw4IEBAIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdCB7CiAg
ICAgTG9uZ0Zvcm1WaWRlbwogfTsKIAotY2xhc3MgQXVkaW9TZXNzaW9uIHsKK2NsYXNzIEF1ZGlv
U2Vzc2lvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgQXVkaW9TZXNzaW9uJiBzaGFyZWRTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0JpcXVhZC5oCmluZGV4IGJiNzIxYTIzYTdmY2M3NzRiNjA5M2U0ZWE5MDhjNjBl
ODkwODEwN2MuLjcxMzQ5NGM5MTRkMzM3ODY0M2UyOWE4MGJjMzllNzczNjZkZjE4MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vICAgIGxvd3Bhc3MsIGhpZ2hwYXNzLCBzaGVsdmluZywgcGFyYW1l
dGVyaWMsIG5vdGNoLCBhbGxwYXNzLCAuLi4KIAogY2xhc3MgQmlxdWFkIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBCaXF1YWQoKTsKICAgICB+
QmlxdWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKaW5kZXggZDgxYzA1ZGM2
OGU2ZTJmYTIxZDI0NWRkMTM3YjRmMTc4YTIxMjBiNC4uYTdhY2EzYTRjNTRkMjc0YjNhYTNkNDBh
ZDlkMTQzZWJkZmM0NWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQ29uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaApAQCAt
MzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbmUgZ2FpbiBpcyBkZWZp
bmVkIGFjY29yZGluZyB0byB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24KIAotY2xhc3MgQ29uZUVm
ZmVjdCB7CitjbGFzcyBDb25lRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBDb25lRWZmZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAppbmRleCA2ZTlmNGUwMWRhZTZkNDVk
MDIxMTFkNWQ1YjEyOGVmMzg4NmIyMjQyLi5lMGIzZWZkODBmNzhmZmFhMzA2NTczMzIzMTQ3MDJk
YzczYTJmMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5v
cm1hbERpc2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3Jt
YWxEaXNhYmxlci5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRp
ZgogCiAjaWZkZWYgSEFWRV9ERU5PUk1BTAotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFz
cyBEZW5vcm1hbERpc2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBEZW5vcm1hbERpc2FibGVyKCkKICAgICAgICAgICAgIDogbV9zYXZlZENT
UigwKQpAQCAtMTAzLDcgKzEwNCw4IEBAIGNsYXNzIERlbm9ybWFsRGlzYWJsZXIgewogCiAjZWxz
ZQogLy8gRklYTUU6IGFkZCBpbXBsZW1lbnRhdGlvbnMgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMg
YW5kIGNvbXBpbGVycwotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBEZW5vcm1hbERp
c2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBEZW5vcm1hbERpc2FibGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKaW5kZXggNmYyZmFmNDBlNjFiZjZlMzJhNGY0OTk5NzY1
YzllMWJiNTE5NDFhOC4uNWM4ZDg2NmMxNjU1Y2MzOTFhODI1ZDNiMjM3ODhiZjQwYzc4OWEzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgK
QEAgLTMwLDEwICszMCwxMyBAQAogI2RlZmluZSBEaXJlY3RDb252b2x2ZXJfaAogCiAjaW5jbHVk
ZSAiQXVkaW9BcnJheS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIERpcmVjdENvbnZvbHZlciB7CitjbGFzcyBEaXJlY3RDb252
b2x2ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKERpcmVjdENvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRGly
ZWN0Q29udm9sdmVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EaXN0YW5jZS5oCmluZGV4IDkxZDM0OWI5N2U2Mjc3MzMyZDc2MzFhODg0NDI2
YjE2NjhkY2YyODMuLmIzZWI3Nzk3M2NmYTQ3OTVmMTUwNTM2OWI3ZTRiMmY4OWZmYjZjNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaApAQCAtNDAsNyArNDAsOCBA
QCBlbnVtIGNsYXNzIERpc3RhbmNlTW9kZWxUeXBlIHsKICAgICBFeHBvbmVudGlhbAogfTsKIAot
Y2xhc3MgRGlzdGFuY2VFZmZlY3QgeworY2xhc3MgRGlzdGFuY2VFZmZlY3QgZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERpc3RhbmNlRWZmZWN0KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oCmluZGV4IGY0
YjQyMDE3ZWU3NjI3Y2FkNjU2YmZmNDU3YWFlOTg5NDgwMTRiZjIuLjk1NzBiODkxYzk3ZmZhOTEx
YTAxMTM0MDAzYjRmZGNiNWY3NmY5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRG93blNhbXBsZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIERvd25TYW1wbGVyIGRvd24tc2FtcGxlcyB0aGUgc291cmNlIHN0cmVhbSBieSBhIGZhY3Rv
ciBvZiAyeC4KIAotY2xhc3MgRG93blNhbXBsZXIgeworY2xhc3MgRG93blNhbXBsZXIgZmluYWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IERv
d25TYW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAppbmRleCBiMjU1MThkODgw
YThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViLi41MTM3OTlhODUxMmY0MjdiNGU0YjhkOWIy
OTQ1YTk0ZDM0OTE4Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAgLTI3MSw4ICsyNzEsOCBAQCB2b2lkIER5bmFt
aWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzKQogICAgIG1fcHJlRmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBtX3Bvc3RGaWx0ZXJQYWNr
cy5jbGVhcigpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxz
OyArK2kpIHsKLSAgICAgICAgbV9wcmVGaWx0ZXJQYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKLSAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7CisgICAgICAgIG1f
cHJlRmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7
CisgICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFplcm9Qb2xlRmls
dGVyUGFjazQ+KCkpOwogICAgIH0KIAogICAgIG1fc291cmNlQ2hhbm5lbHMgPSBtYWtlVW5pcXVl
QXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKaW5kZXggZWY4YzA5M2Ex
Yjk2NTMyMjlkNzk5ZjFhNmIyOTJhZmFkYmRhYmFkMS4uODIyYzkzMWYzOGNlMGVjOGRjNjI4MmYw
ZjhjMzQzYWY2NzdmOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTQzLDggKzQzLDkgQEAgY2xhc3MgQXVkaW9CdXM7
CiAvLyBvZiB0aGUgbG91ZGVzdCBwYXJ0cyBvZiB0aGUgc2lnbmFsIGFuZCByYWlzZXMgdGhlIHZv
bHVtZSBvZiB0aGUgc29mdGVzdCBwYXJ0cywKIC8vIG1ha2luZyB0aGUgc291bmQgcmljaGVyLCBm
dWxsZXIsIGFuZCBtb3JlIGNvbnRyb2xsZWQuCiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3NvciB7
CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKER5bmFtaWNzQ29tcHJlc3Nvcik7CiBw
dWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIFBhcmFtVGhyZXNob2xkLApAQCAtOTUsOSArOTYs
MTAgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yIHsKICAgICBmbG9hdCBtX2xhc3RBbmNob3I7
CiAgICAgZmxvYXQgbV9sYXN0RmlsdGVyU3RhZ2VHYWluOwogCi0gICAgdHlwZWRlZiBzdHJ1Y3Qg
eworICAgIHN0cnVjdCBaZXJvUG9sZUZpbHRlclBhY2s0IHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBaZXJvUG9sZSBmaWx0ZXJzWzRdOwotICAgIH0g
WmVyb1BvbGVGaWx0ZXJQYWNrNDsKKyAgICB9OwogCiAgICAgLy8gUGVyLWNoYW5uZWwgZW1waGFz
aXMgZmlsdGVycy4KICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Qb2xlRmlsdGVyUGFj
azQ+PiBtX3ByZUZpbHRlclBhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKaW5kZXggNzM0YjA2NmNk
YTQ4YmMyYzdhNzllZGY1MDdkMDZjMDU2YzcwYTA5MC4uYWZlZGI3YjRjZDBhNWE2MWQxYTlmZTI3
OGMzNDAzODNmOThlMjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCkBAIC03Niw3ICs3Niw3IEBA
IHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMpCiAKICAgICBtX3ByZURlbGF5QnVmZmVycy5jbGVhcigpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAg
ICAgIG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKKyAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBw
ZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihNYXhQcmVEZWxheUZyYW1lcykpOwogfQog
CiB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0UHJlRGVsYXlUaW1lKGZsb2F0IHBy
ZURlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKaW5kZXggYjdiY2VhMmZhZmQ4OTk2Y2E1MjhiMGI1
ZGFiNDljYjg4OTU4ZGNjNC4uZTExZjQ3YmFhZjBiYzZjNWQwY2E3ZTNkNzIwMDgyNjM5ZDI3MGMw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsLmgKQEAgLTM1LDcgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwgeworY2xhc3MgRHluYW1pY3ND
b21wcmVzc29yS2VybmVsIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwoZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAppbmRleCA4Y2Y1OTkxNzk1ZjNmMWY2
M2UyODFkOWUxNmFjYWYzZDdhNTdhNWRhLi40ZTQ2M2IxMjgxYTdmYTNiYjM5N2E2YjA2NWNlMDMz
Y2NiZjlhZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQ
b3dlclBhbm5lci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
Q29tbW9uIHR5cGUgb2Ygc3RlcmVvIHBhbm5lciBhcyBmb3VuZCBpbiBub3JtYWwgYXVkaW8gbWl4
aW5nIGVxdWlwbWVudC4KIAotY2xhc3MgRXF1YWxQb3dlclBhbm5lciA6IHB1YmxpYyBQYW5uZXIg
eworY2xhc3MgRXF1YWxQb3dlclBhbm5lciBmaW5hbCA6IHB1YmxpYyBQYW5uZXIgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IEVxdWFsUG93ZXJQYW5uZXIoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKaW5kZXggNDU0MmI2
ZmIyNTc4NTQ5NWFiMjA2YWJjM2M5MGM3NWJjMmYxNmVhMC4uMzg2MjI3ZjE5NzA0YWZkNzkyZTM2
NjIyYmRkYTljMWFjZWE3NTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZUQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZUQ29udm9sdmVyLmgKQEAgLTM0LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBGRlRDb252b2x2ZXIgeworY2xhc3MgRkZUQ29udm9sdmVyIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGRlRDb252
b2x2ZXIpOwogcHVibGljOgogICAgIC8vIGZmdFNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3bwog
ICAgIEZGVENvbnZvbHZlcihzaXplX3QgZmZ0U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHAKaW5kZXggNGMwMmI2OTkyYjA2MzgzYjgwMzU3Mzc4NzhkYmY2
NWEyNmZiOWMzMS4uNGMxNTIwNjdkNDRhYzRiODU0MTkyMWFhZWQyOTU5ODJiOTY5Mzc4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcApAQCAtNTQsNyArNTQs
NyBAQCB2b2lkIEZGVEZyYW1lOjpkb1BhZGRlZEZGVChjb25zdCBmbG9hdCogZGF0YSwgc2l6ZV90
IGRhdGFTaXplKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RkZURnJhbWU+IEZGVEZyYW1lOjpjcmVhdGVJ
bnRlcnBvbGF0ZWRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUxLCBjb25zdCBGRlRGcmFtZSYg
ZnJhbWUyLCBkb3VibGUgeCkKIHsKLSAgICBhdXRvIG5ld0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1
ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CisgICAgYXV0byBuZXdGcmFtZSA9IG1ha2VV
bmlxdWU8RkZURnJhbWU+KGZyYW1lMS5mZnRTaXplKCkpOwogCiAgICAgbmV3RnJhbWUtPmludGVy
cG9sYXRlRnJlcXVlbmN5Q29tcG9uZW50cyhmcmFtZTEsIGZyYW1lMiwgeCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgKaW5kZXggNzU3YmNmYTRiNmFl
ZmQ3MGViYWU4NjU0ODcyNWZhNDA2MjljNmU5ZS4uYTUxOTM0OTgxNTA0NTI2ZDZmYzY0ZDQ1Yjk3
OTBiMzc4MTAzYTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBI
UlRGS2VybmVsOwogCi1jbGFzcyBIUlRGRGF0YWJhc2UgeworY2xhc3MgSFJURkRhdGFiYXNlIGZp
bmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShIUlRGRGF0YWJhc2UpOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKaW5kZXggZjQ1YmU4NDdjZTcxMGRj
ZWRhMmUwZWMxMDZiNzViZjI2ODU3ODljZC4uYTQ3NGE3MGM0MDg1MmFlMmUxZjlmNThhNDlhMDAw
MzYxNTgwYjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2VMb2FkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSFJURkRhdGFiYXNl
TG9hZGVyOjpsb2FkKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1f
aHJ0ZkRhdGFiYXNlLmdldCgpKSB7CiAgICAgICAgIC8vIExvYWQgdGhlIGRlZmF1bHQgSFJURiBk
YXRhYmFzZS4KLSAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZE
YXRhYmFzZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUpOworICAgICAgICBtX2hydGZEYXRhYmFzZSA9
IG1ha2VVbmlxdWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3Bw
CmluZGV4IGM4NGFiOTc1MWExNDU5ODlhMDM3N2ZhZDFmNGE3NWU4ZjE3ZTJiMjQuLjYwNTIzMmNk
MWE5OWM5MjMzZDlhZDEwNDliYTMwN2UyMTc3MzhmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0yNDQsOCArMjQ0LDggQEAgc3Rk
Ojp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1Ympl
Y3QoY29uc3QgU3RyaW5nJiBzdWIKICAgICBpZiAoIWlzRWxldmF0aW9uR29vZCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAgIGF1
dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJP
ZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhSVEZL
ZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIg
PSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAg
ICAgLy8gTG9hZCBjb252b2x1dGlvbiBrZXJuZWxzIGZyb20gSFJURiBmaWxlcy4KICAgICBpbnQg
aW50ZXJwb2xhdGVkSW5kZXggPSAwOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0
cmluZyYgc3ViCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVs
TGlzdFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhS
VEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwg
ZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRp
b24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxldmF0
aW9uKiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjIsIGZsb2F0
IHgsIGZsb2F0IHNhbXBsZVJhdGUpCkBAIC0yODUsOCArMjg1LDggQEAgc3RkOjp1bmlxdWVfcHRy
PEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNl
cyhIUlRGRWwKICAgICAgICAgCiAgICAgQVNTRVJUKHggPj0gMC4wICYmIHggPCAxLjApOwogICAg
IAotICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0
PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAgIGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1
dG8ga2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFs
QXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxM
aXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5l
bExpc3RMMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0TCgpOwogICAgIEhSVEZLZXJuZWxM
aXN0KiBrZXJuZWxMaXN0UjEgPSBocnRmRWxldmF0aW9uMS0+a2VybmVsTGlzdFIoKTsKQEAgLTMw
Miw3ICszMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlv
bjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbAogICAgIC8vIEludGVycG9sYXRl
IGVsZXZhdGlvbiBhbmdsZS4KICAgICBkb3VibGUgYW5nbGUgPSAoMS4wIC0geCkgKiBocnRmRWxl
dmF0aW9uMS0+ZWxldmF0aW9uQW5nbGUoKSArIHggKiBocnRmRWxldmF0aW9uMi0+ZWxldmF0aW9u
QW5nbGUoKTsKICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9u
PihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIHN0YXRpY19jYXN0
PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRGRWxl
dmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIHN0YXRp
Y19jYXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBIUlRGRWxldmF0aW9u
OjpnZXRLZXJuZWxzRnJvbUF6aW11dGgoZG91YmxlIGF6aW11dGhCbGVuZCwgdW5zaWduZWQgYXpp
bXV0aEluZGV4LCBIUlRGS2VybmVsKiAma2VybmVsTCwgSFJURktlcm5lbCogJmtlcm5lbFIsIGRv
dWJsZSYgZnJhbWVEZWxheUwsIGRvdWJsZSYgZnJhbWVEZWxheVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKaW5kZXggMmE5NTkwNDU1MjE4NDNhMTUx
NjJlY2M4ZTMyMTE3MzllMDcwNTNmNy4uZWY3NTJjM2MwMWJlMzllY2RiN2VmNjRkZjQzOTA5MjY2
ZDZlZDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVs
ZXZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uaApAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEhSVEZFbGV2
YXRpb24gY29udGFpbnMgYWxsIG9mIHRoZSBIUlRGS2VybmVscyAob25lIGxlZnQgZWFyIGFuZCBv
bmUgcmlnaHQgZWFyIHBlciBhemltdXRoIGFuZ2xlKSBmb3IgYSBwYXJ0aWN1bGFyIGVsZXZhdGlv
bi4KIAotY2xhc3MgSFJURkVsZXZhdGlvbiB7CitjbGFzcyBIUlRGRWxldmF0aW9uIGZpbmFsIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShI
UlRGRWxldmF0aW9uKTsKIHB1YmxpYzoKICAgICBIUlRGRWxldmF0aW9uKHN0ZDo6dW5pcXVlX3B0
cjxIUlRGS2VybmVsTGlzdD4ga2VybmVsTGlzdEwsIHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2VybmVs
TGlzdD4ga2VybmVsTGlzdFIsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCmluZGV4IGVkZjZjNjBk
MGRiODE0ZDk0YzBmNzFiNjMwNmU0MzgyNjUzYWE0YzcuLjM3NTUyMTZhZTI4N2E3MWM3NDI5Mjlh
NTNjOTU5MDk2ZGIxZGJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZLZXJuZWwuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEhSVEZLZXJuZWw6OkhSVEZLZXJuZWwoQXVk
aW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICAgICAgfQogICAgIH0KIAotICAgIG1fZmZ0RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZy
YW1lPihmZnRTaXplKTsKKyAgICBtX2ZmdEZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0
U2l6ZSk7CiAgICAgbV9mZnRGcmFtZS0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNlLCB0cnVu
Y2F0ZWRSZXNwb25zZUxlbmd0aCk7CiB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzaXplX3QgSFJU
Rktlcm5lbDo6ZmZ0U2l6ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0NoYW5uZWw+
IEhSVEZLZXJuZWw6OmNyZWF0ZUltcHVsc2VSZXNwb25zZSgpCiB7Ci0gICAgYXV0byBjaGFubmVs
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CisgICAgYXV0byBj
aGFubmVsID0gbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CiAgICAgRkZURnJh
bWUgZmZ0RnJhbWUoKm1fZmZ0RnJhbWUpOwogCiAgICAgLy8gQWRkIGxlYWRpbmcgZGVsYXkgYmFj
ayBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5u
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAppbmRleCBi
ZjVlZWZhYTVlNGM2ZDJiZjE3YTk5MDAzMDc0MTY1YzZlNDMzYWQ3Li5jYWFhNDQxZjFkMTRlYTM2
ZjVlOTY4YWQ4YTc3ZDBiN2E2MGRkOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURlBhbm5lci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSFJURlBhbm5lciA6IHB1YmxpYyBQYW5uZXIgeworY2xhc3MgSFJURlBhbm5lciBm
aW5hbCA6IHB1YmxpYyBQYW5uZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEhSVEZQYW5uZXIo
ZmxvYXQgc2FtcGxlUmF0ZSwgSFJURkRhdGFiYXNlTG9hZGVyKik7CiAgICAgdmlydHVhbCB+SFJU
RlBhbm5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXggYmJiZjE2NDQ2MjA3NjM5ZTM1Y2Y3OTU2NDgy
ODI2M2QzZTkzNzNhZS4uNWJmOWFiOTVkMDE1NzUwMDgxNWQ2MTMxYWIxZDg5NzQxYmUxZmUyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5u
ZWxSZXNhbXBsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
TXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVy
CiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAgICBmb3IgKHVu
c2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7
ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFwcGVu
ZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yKSk7CiB9CiAKIHZvaWQgTXVs
dGlDaGFubmVsUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHByb3ZpZGVy
LCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5o
CmluZGV4IDQ0MTc1NDc2MDU4M2QyODAzNGE0NWIzYmQ4YTYxODhkNDY1YTJmMzYuLjYxNDZlOTI1
YzA2YTJkZGE3NmNiNDEyZjBjYzFlMGEyNDZhYzgwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CiAgICAgCi1jbGFz
cyBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgeworY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGZp
bmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBleHBs
aWNpdCBNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3Bw
CmluZGV4IGFjNzI4NmFjOWEwNjBiNzUzNGNiMmVkZTkyMWQ2Y2JkNzdhOTdhODguLjQwYjlkMDFk
YzE4NGI5NmQ1ZGYzYWI5YjdmNDA5NDYzYTk3ODM0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGFubmVyLmNwcApAQCAtNDMsMTEgKzQzLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
YW5uZXI+IFBhbm5lcjo6Y3JlYXRlKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwsIGZsb2F0IHNhbXBs
ZVJhdGUsCiAKICAgICBzd2l0Y2ggKG1vZGVsKSB7CiAgICAgY2FzZSBQYW5uaW5nTW9kZWxUeXBl
OjpFcXVhbHBvd2VyOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVxdWFsUG93
ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOworICAgICAgICBwYW5uZXIgPSBtYWtlVW5pcXVlPEVxdWFs
UG93ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgUGFu
bmluZ01vZGVsVHlwZTo6SFJURjoKLSAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxI
UlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRlcik7CisgICAgICAgIHBhbm5lciA9
IG1ha2VVbmlxdWU8SFJURlBhbm5lcj4oc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybUF1ZGlvRGF0YS5oCmluZGV4IGNkYTcyZThhYjNjNGNkYzBhODY4ZmFhYzRmMDVj
ZTYxYzQ0NDAyZDAuLjQ2MzVhNjczM2VjYzNmM2EwNzUwMmZjN2E3NTAxNzNlMzNlMTFmMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEu
aApAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9y
bUF1ZGlvRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+UGxhdGZvcm1BdWRpb0RhdGEoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRl
eCBlMDIzOTRhYTViMTQ5Y2QxNTk2OTEyYTI1NjgxZmY1ZWE0NGFkOGQyLi5jOGJkNjRhNDFiZjYx
MmU4OWUzYzIxNGZhMjJkY2M1OTk0OGU1NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
TWVkaWFTZXNzaW9uPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1NZWRpYVNlc3Npb24+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZv
cm1NZWRpYVNlc3Npb24+KGNsaWVudCk7CiB9CiAKIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKaW5kZXggMzA0M2ZjOGEwNGRmMGQ3
N2MxMGFhMDM3OWJkMjZhMzlkNDZjZTZiYS4uOGE2NzU1YzU0YWQwMGEzYTgxMDE4NzQyMTYyY2Nk
MDc0ZGUxMGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCkBA
IC0xMTcsNyArMTE3LDcgQEAgdm9pZCBSZXZlcmI6OmluaXRpYWxpemUoQXVkaW9CdXMqIGltcHVs
c2VSZXNwb25zZUJ1ZmZlciwgc2l6ZV90IHJlbmRlclNsaWNlU2l6ZSwKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bVJlc3BvbnNlQ2hhbm5lbHM7ICsraSkgewogICAgICAgICBBdWRpb0No
YW5uZWwqIGNoYW5uZWwgPSBpbXB1bHNlUmVzcG9uc2VCdWZmZXItPmNoYW5uZWwoaSk7CiAKLSAg
ICAgICAgbV9jb252b2x2ZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYkNvbnZvbHZl
cj4oY2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBtYXhGRlRTaXplLCBjb252b2x2ZXJSZW5kZXJQ
aGFzZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsKKyAgICAgICAgbV9jb252b2x2ZXJzLmFwcGVu
ZChtYWtlVW5pcXVlPFJldmVyYkNvbnZvbHZlcj4oY2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBt
YXhGRlRTaXplLCBjb252b2x2ZXJSZW5kZXJQaGFzZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsK
IAogICAgICAgICBjb252b2x2ZXJSZW5kZXJQaGFzZSArPSByZW5kZXJTbGljZVNpemU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaAppbmRleCAzZTI1NzZiMzU3NTdk
YmEyNDcwYzhlYjdkYTNjMTdiZWViYmZkY2VkLi4yMzRlMzFkYWViYmQ0ZGRhYTM2YTFlOTA1MzEx
ZWI5OTIyZmFhNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaApAQCAt
MzgsNyArMzgsNyBAQCBjbGFzcyBBdWRpb0J1czsKICAgICAKIC8vIE11bHRpLWNoYW5uZWwgY29u
dm9sdXRpb24gcmV2ZXJiIHdpdGggY2hhbm5lbCBtYXRyaXhpbmcgLSBvbmUgb3IgbW9yZSBSZXZl
cmJDb252b2x2ZXIgb2JqZWN0cyBhcmUgdXNlZCBpbnRlcm5hbGx5LgogCi1jbGFzcyBSZXZlcmIg
eworY2xhc3MgUmV2ZXJiIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBlbnVtIHsgTWF4RnJhbWVTaXplID0gMjU2IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCmlu
ZGV4IDUxMmI2YWRlMzQxYTI4NTY5NzJlZTNmN2JjYjIxMTY2YmI3MjFhMWYuLmE2MjgzNWY5YzBk
N2Q3NDNjOWU5MjdjZWRlMmQ2YTFkYTQ1NTg0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCkBAIC0zNiw3
ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZl
ciBpcyBhIGNpcmN1bGFyIGRlbGF5IGJ1ZmZlciB3aXRoIG9uZSBjbGllbnQgcmVhZGluZyBmcm9t
IGl0IGFuZCBtdWx0aXBsZSBjbGllbnRzCiAvLyB3cml0aW5nL2FjY3VtdWxhdGluZyB0byBpdCBh
dCBkaWZmZXJlbnQgZGVsYXkgb2Zmc2V0cyBmcm9tIHRoZSByZWFkIHBvc2l0aW9uLiAgVGhlIHJl
YWQgb3BlcmF0aW9uIHdpbGwgemVybyB0aGUgbWVtb3J5CiAvLyBqdXN0IHJlYWQgZnJvbSB0aGUg
YnVmZmVyLCBzbyBpdCB3aWxsIGJlIHJlYWR5IGZvciBhY2N1bXVsYXRpb24gdGhlIG5leHQgdGlt
ZSBhcm91bmQuCi1jbGFzcyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgeworY2xhc3MgUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIoc2l6ZV90IGxl
bmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252
b2x2ZXIuY3BwCmluZGV4IDE0NWRmODFlMmE2YmEyYzJkYWE5YmI0MWU2YjVjYWJhZjM4NWY5MWMu
LmE5YzkzNWMxYTI4NWFiMTM2MmQ4ZmYxZGY4Y2ViYTVhN2U1YWE3N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApAQCAtOTQsNyAr
OTQsNyBAQCBSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcihBdWRpb0NoYW5uZWwqIGlt
cHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlbmRlclNsaQogCiAgICAgICAgIGJvb2wgdXNlRGlyZWN0
Q29udm9sdmVyID0gIXN0YWdlT2Zmc2V0OwogCi0gICAgICAgIGF1dG8gc3RhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90YWxSZXNwb25zZUxl
bmd0aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VTaXplLCBmZnRTaXpl
LCByZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRpb25CdWZmZXIsIHVz
ZURpcmVjdENvbnZvbHZlcik7CisgICAgICAgIGF1dG8gc3RhZ2UgPSBtYWtlVW5pcXVlPFJldmVy
YkNvbnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90YWxSZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90
YWxMYXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VTaXplLCBmZnRTaXplLCByZW5kZXJQaGFzZSwg
cmVuZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRpb25CdWZmZXIsIHVzZURpcmVjdENvbnZvbHZl
cik7CiAKICAgICAgICAgYm9vbCBpc0JhY2tncm91bmRTdGFnZSA9IGZhbHNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCmluZGV4IDViODE5
ZTFhM2U2ZjRmYjFmOGRiMGM1OTY5NzI2MmFhYzA5YzZiZGUuLjMyMDBiNDVlYThkZjdjMjFjZTZm
YTM3ZTA4YmIyNzkxZjhhZTVmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlci5oCkBAIC00Myw4ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQXVkaW9DaGFubmVsOwogCi1jbGFzcyBSZXZlcmJDb252b2x2ZXIgeworY2xh
c3MgUmV2ZXJiQ29udm9sdmVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXZlcmJDb252b2x2ZXIpOwogcHVibGljOgogICAg
IC8vIG1heEZGVFNpemUgY2FuIGJlIGFkanVzdGVkIChmcm9tIHNheSAyMDQ4IHRvIDMyNzY4KSBk
ZXBlbmRpbmcgb24gaG93IG11Y2ggcHJlY2lzaW9uIGlzIG5lY2Vzc2FyeS4KICAgICAvLyBGb3Ig
Y2VydGFpbiB0d2Vha3kgZGUtY29udm9sdmluZyBhcHBsaWNhdGlvbnMgdGhlIHBoYXNlIGVycm9y
cyBhZGQgdXAgcXVpY2tseSBhbmQgbGVhZCB0byBub24tc2Vuc2ljYWwgcmVzdWx0cyB3aXRoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJT
dGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJT
dGFnZS5jcHAKaW5kZXggMGZkZTQyMWFmMmY4MmZkNDg3NGQ5NGY2YWYxZDYzNDcyMzljNjU2ZS4u
NGZmOTUzYjI2MDQ5MTdkMzQ1MjAzOTQwNWI2NWRlMmJkNWExZWFiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcApA
QCAtNTUsMTYgKzU1LDE2IEBAIFJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJT
dGFnZShjb25zdCBmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QsCiAgICAgQVNTRVJUKGFj
Y3VtdWxhdGlvbkJ1ZmZlcik7CiAKICAgICBpZiAoIW1fZGlyZWN0TW9kZSkgewotICAgICAgICBt
X2ZmdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOworICAgICAg
ICBtX2ZmdEtlcm5lbCA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOwogICAgICAgICBt
X2ZmdEtlcm5lbC0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNlICsgc3RhZ2VPZmZzZXQsIHN0
YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZG
VENvbnZvbHZlcj4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0Q29udm9sdmVyID0gbWFrZVVuaXF1
ZTxGRlRDb252b2x2ZXI+KGZmdFNpemUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCgh
c3RhZ2VPZmZzZXQpOwogICAgICAgICBBU1NFUlQoc3RhZ2VMZW5ndGggPD0gZmZ0U2l6ZSAvIDIp
OwogCi0gICAgICAgIG1fZGlyZWN0S2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0
QXJyYXk+KGZmdFNpemUgLyAyKTsKKyAgICAgICAgbV9kaXJlY3RLZXJuZWwgPSBtYWtlVW5pcXVl
PEF1ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIpOwogICAgICAgICBtX2RpcmVjdEtlcm5lbC0+
Y29weVRvUmFuZ2UoaW1wdWxzZVJlc3BvbnNlLCAwLCBzdGFnZUxlbmd0aCk7Ci0gICAgICAgIG1f
ZGlyZWN0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXJlY3RDb252b2x2ZXI+KHJlbmRl
clNsaWNlU2l6ZSk7CisgICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0gbWFrZVVuaXF1ZTxEaXJl
Y3RDb252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CiAgICAgfQogICAgIG1fdGVtcG9yYXJ5QnVm
ZmVyLmFsbG9jYXRlKHJlbmRlclNsaWNlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCmluZGV4IGEwNDkwOTcwMzQw
YWIzYjMzNjAwYjA4OWU1OTg0NzRmYjNkNDU1ZTYuLjNjMDNiZTM0MWIzYjdkNjQ2MjFkYzgwMzgx
NjY5MzYwZjRkYjRjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlclN0YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBEaXJlY3RD
b252b2x2ZXI7CiAgICAgCiAvLyBBIFJldmVyYkNvbnZvbHZlclN0YWdlIHJlcHJlc2VudHMgdGhl
IGNvbnZvbHV0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIHN1Yi1zZWN0aW9uIG9mIGEgbGFyZ2UgaW1w
dWxzZSByZXNwb25zZS4KIC8vIEl0IGluY29ycG9yYXRlcyBhIGRlbGF5IGxpbmUgdG8gYWNjb3Vu
dCBmb3IgdGhlIG9mZnNldCBvZiB0aGUgc3ViLXNlY3Rpb24gd2l0aGluIHRoZSBsYXJnZXIgaW1w
dWxzZSByZXNwb25zZS4KLWNsYXNzIFJldmVyYkNvbnZvbHZlclN0YWdlIHsKK2NsYXNzIFJldmVy
YkNvbnZvbHZlclN0YWdlIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICAvLyByZW5kZXJQaGFzZSBpcyB1c2VmdWwgdG8ga25vdyBzbyB0aGF0IHdlIGNh
biBtYW5pcHVsYXRlIHRoZSBwcmUgdmVyc3VzIHBvc3QgZGVsYXkgc28gdGhhdCBzdGFnZXMgd2ls
bCBwZXJmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJJbnB1dEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5w
dXRCdWZmZXIuaAppbmRleCBiYjA2ZTRlZWQ2MzNmMGU3YzY4MmUyMGU0ZTZhNTcyYWExZmFhOTY2
Li5hZjllZDAwZDczM2U4NDJiNmVkM2E2NDc0ODU0MjBkM2M3Njc3NTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKQEAgLTM0LDcg
KzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gUmV2ZXJiSW5wdXRCdWZmZXIgaXMg
dXNlZCB0byBidWZmZXIgaW5wdXQgc2FtcGxlcyBmb3IgZGVmZXJyZWQgcHJvY2Vzc2luZyBieSB0
aGUgYmFja2dyb3VuZCB0aHJlYWRzLgotY2xhc3MgUmV2ZXJiSW5wdXRCdWZmZXIgeworY2xhc3Mg
UmV2ZXJiSW5wdXRCdWZmZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFJldmVyYklucHV0QnVmZmVyKHNpemVfdCBsZW5ndGgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKaW5kZXgg
MmZjZDg5ZjdlY2EzNzU4NTg2MzFhOWIyNzY1YTEwZDIwMWIzNDFjNy4uYzEzMmY1ZDk3NjJjNzU2
NmIyMzI1YzA2NGIyOGRlOGI2ZTM5MDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1NpbmNSZXNhbXBsZXIuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIFNpbmNSZXNhbXBsZXIgaXMgYSBoaWdoLXF1YWxpdHkgc2FtcGxlLXJhdGUgY29u
dmVydGVyLgogCi1jbGFzcyBTaW5jUmVzYW1wbGVyIHsKK2NsYXNzIFNpbmNSZXNhbXBsZXIgZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAgIC8vIHNj
YWxlRmFjdG9yID09IHNvdXJjZVNhbXBsZVJhdGUgLyBkZXN0aW5hdGlvblNhbXBsZVJhdGUKICAg
ICAvLyBrZXJuZWxTaXplIGNhbiBiZSBhZGp1c3RlZCBmb3IgcXVhbGl0eSAoaGlnaGVyIGlzIGJl
dHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgKaW5kZXggMjY2
YmNhZjk4MGQ3MjZmYTJmNjM3Y2ZlOTNhNWQ0YzM4YjI0ZWUwNi4uNjc1ZWU0YWQwYzQ0NjdjZDFk
ZDZkMWQ1MTYxMWU3N2I5OGM0YzYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vVXBTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
VXBTYW1wbGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBV
cFNhbXBsZXIgdXAtc2FtcGxlcyB0aGUgc291cmNlIHN0cmVhbSBieSBhIGZhY3RvciBvZiAyeC4K
IAotY2xhc3MgVXBTYW1wbGVyIHsKK2NsYXNzIFVwU2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXBTYW1wbGVyKHNpemVf
dCBpbnB1dEJsb2NrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9aZXJvUG9sZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUu
aAppbmRleCA4MzFkZTkwOTNiMDA1NjE2YjRiZDc3ZWE3YjA3NzhjMzdkYWE3YjZlLi4wMmZmYWNk
NWVhY2E3Y2UyNzU4OTJiZThkNjQzOTRjNzMzZGM3ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1plcm9Qb2xlLmgKQEAgLTMzLDcgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAvLyBaZXJvUG9sZSBpcyBhIHNpbXBsZSBmaWx0ZXIgd2l0aCBvbmUgemVybyBhbmQgb25l
IHBvbGUuCiAKLWNsYXNzIFplcm9Qb2xlIHsKK2NsYXNzIFplcm9Qb2xlIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBaZXJvUG9sZSgpCiAgICAgICAg
IDogbV96ZXJvKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oCmluZGV4IDg2YjY1YTIyNTNhZjFhZWIyYTFjYTlj
YWEzNjY3ODZjZDdkNjU1MjAuLjhhN2U3YTAzYWMzM2E0ZTU1YzQzYzMxYWVjNjM3YjE4OWNiMWM3
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1
ZGlvQnVmZmVyTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L1dlYkF1ZGlvQnVmZmVyTGlzdC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogCi1jbGFzcyBXZWJBdWRpb0J1
ZmZlckxpc3QgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgeworY2xhc3MgV2ViQXVkaW9CdWZm
ZXJMaXN0IGZpbmFsIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKIHB1YmxpYzoKICAgICBX
ZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcAppbmRleCA1YmY4ZmRhNmIyOTEyYjE4ZjExOTBkY2JlNzA4MmJmNjg0
YmVlOThmLi4xYTU0OTVmZDc2NGQ5YzNjYzZlZGI1ODFmYTQ4MGVhZWFkMTQ1OWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0g
MikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwg
JWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyPihjYWxsYmFjaywgc2FtcGxlUmF0
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcj4oY2Fs
bGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2Fy
ZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4IDhhZjg3N2VjMmM0Y2EwYWJkMzA3
NDgzNWY1NGIzNGFlYmYwNDMzYTIuLjRiZGU3ZTQxZTJiNjQzN2NkMGZmNzI1ZTRkMDc5ZDY4Zjg5
ZTdkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2Fs
bGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAg
ICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhh
bmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9TPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9
CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpp
bmRleCBkYzZjOGJjY2UzNjlkMDZhZWRjOGZkMzMzYzczOGMwYmU5NTc1ZGQ0Li42Mzk4MjQwYmJk
OGQ5NjczMDJkZjdlOWVjZmY0MDc1MDJkYTZlMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTU5LDYgKzU5LDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZShBdWRpb1Nlc3Npb246OkNhdGVnb3J5
VHlwZSBjYXRlZ29yeSkKICNlbmRpZgogCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBdWRpb1Nlc3Npb25Qcml2
YXRlKEF1ZGlvU2Vzc2lvbiopOwogICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0
ZWdvcnlPdmVycmlkZTsKQEAgLTcxLDcgKzcyLDcgQEAgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6QXVk
aW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKQogfQogCiBBdWRpb1Nlc3Npb246OkF1ZGlv
U2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Q
cml2YXRlPih0aGlzKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblBy
aXZhdGU+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggNzY0YTM0N2Y5ODI5
ZTFlODQ3NWJkMmVhMTI4MGFhMTc1MDI2ZWNmYy4uOWZlNjRiYWFhNDc4NGZlY2RhYjNkNmRkYjVl
Mjc4MzgxZTFlMDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1
ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIp
CiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVm
KSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNrLCBzYW1wbGVS
YXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBs
ZURhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVEYXRhU291cmNlLm1tCmluZGV4IDc3ZDQzMTY1NjY5OTBlOTAxYjkyMGJmNzc4ZDk2OWU5
ZjE4ZjE4OGEuLjQxYWZlMzlmMjMyYWU1ODgwODYwZjA4NGQ1NTZjYjRhNWQ4YWUyNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFT
b3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZTo6c2V0SW5wdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBmCiB7CiAgICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX2lu
cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4oZm9ybWF0KTsKKyAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKICAgICBpZiAobV9vdXRwdXREZXNjcmlwdGlvbikK
ICAgICAgICAgcmV0dXJuIHNldHVwQ29udmVydGVyKCk7CiAKQEAgLTEyMCw5ICsxMjAsOSBAQCBP
U1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mCiAgICAgQVNTRVJUKG1faW5wdXREZXNjcmlwdGlvbik7CiAg
ICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX291dHB1dERlc2Ny
aXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1h
dCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihmb3JtYXQpOwogICAgIGlmICghbV9yaW5nQnVmZmVyKQotICAgICAgICBtX3Jp
bmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9y
aW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAKICAgICBtX3JpbmdCdWZm
ZXItPmFsbG9jYXRlKGZvcm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVD
b3VudCkpOwogICAgIG1fc2NyYXRjaEJ1ZmZlciA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y3Jl
YXRlKG1fb3V0cHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbWF4aW11bVNh
bXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1Nlc3Npb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5jcHAKaW5kZXggN2Y2ZWY5ZDMzZGIxZmI0N2U3Y2YxNGM1OTA0YTQ2
MTEyYjE1MjIzMi4uY2MwNGYwYmUzMDk3NDk4YjgzNjZlOTI0MjA3M2VjZTNlMTk3NWFiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiB9
OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQorICAgIDogbV9wcml2
YXRlKG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCmlu
ZGV4IDE4YTI2YWI2ZGM1YzhkZDAxMjUyZGIwNjQ2ZDRmNWI5YjQ3YjZmZjUuLjA0YWNlZmM4ZGFh
ZDcxMzI4YTRkZGZhYmJkMDRhZjllY2Q4ZWI5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgQXVkaW9CdWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0FSaW5nQnVmZmVyU3RvcmFnZSgpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgYWxsb2NhdGUoc2l6ZV90KSA9IDA7CkBAIC00Niw3
ICs0Nyw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2UgewogICAgIHZpcnR1YWwgdm9pZCog
ZGF0YSgpID0gMDsKIH07CiAKLWNsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IgOiBwdWJs
aWMgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CitjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9y
IGZpbmFsIDogcHVibGljIENBUmluZ0J1ZmZlclN0b3JhZ2UgewogcHVibGljOgogICAgIH5DQVJp
bmdCdWZmZXJTdG9yYWdlVmVjdG9yKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKaW5kZXggYjk4MDNiZmEwMjMyNDM1N2MwZGZl
MDQ3MzEzZDJjM2VjMzA0Y2I5Mi4uN2E0N2Y1NjA4YmJiNmRlOWQzNzczYjE3ZTk4ZTQ3NjRhMjQy
MjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNw
cApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29k
ZXJDRj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyQ0Y+
KGRhdGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJDRjo6S2V5ZWREZWNvZGVyQ0YoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggMWE2MjdlYTAwYjkyY2JhYTZjZjdjMzU1ZDVlNDQ1
ZWM0ODYxYTQxMi4uNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVu
Y29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8S2V5ZWRFbmNvZGVyQ0Y+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNv
ZGVyQ0Y+KCk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4g
Y3JlYXRlRGljdGlvbmFyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggYjY4OTIyODA1ZTVkMzczZGU3ZjBh
ZWQ3ODkwODI1YWNjY2MxMjAzOS4uMDdhNDVjYWQ3OGI2ZDQzN2ZhYTg0MjUyNjk5YzBkNDg2ZDc4
ZWQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNo
YXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cFBv
d2VyT2JzZXJ2ZXIoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgUG93ZXJPYnNlcnZl
ciogcG93ZXJPYnNlcnZlcjsKICAgICBpZiAoIXBvd2VyT2JzZXJ2ZXIpCi0gICAgICAgIHBvd2Vy
T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRU
aW1lcikucmVsZWFzZSgpOworICAgICAgICBwb3dlck9ic2VydmVyID0gbWFrZVVuaXF1ZTxQb3dl
ck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKICNlbGlmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90
aWZpY2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3Rp
ZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggMTJhYjMyMWNiNDc3
MmJlNzAwMTUwMGYxOTZmNzhiNmViZTVlMmJkNS4uMDVjNTUyNGRlZmM3Nzc2MTFkZjc1ZjQ5YjE5
MWQ3ZmQ2OWY0NTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTY1LDcgKzY1
LDcgQEAgYm9vbCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQgTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmluaXRpYWxpemUoY29uc3QgVVJMKiB1cmwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGFlMGJkMjA5Y2NkNmYzMTdjOTE5MzI1YTE2YTE4YTk5
Y2QxNTcyZTQuLjBkMmE2MjE4NmI1YTU0ZTJiODUxZmY5NmQ1MjgxMDFmODQ2NmY0MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpj
cmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyPigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgY2FuSGFuZGxlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQppbmRleCBlODM2OWM2ZTUwMTZl
MjNjZjg3M2I5NTM3ZDJhZmI0ZjBiYzY4NTIyLi44ZmUzOGFkMGNjZTJmZDU0MmQyOTcwMTdmZGEy
ZDFjYjM1NWI3NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbENvbnRyb2xsZXIubW0KQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xs
ZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZl
Y3RvcgogICAgICAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bFNuYXBBbmltYXRvclN0YXRlPigpOworICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG1ha2VV
bmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7CiAgICAgfQogCiAgICAgaWYgKHNuYXBQ
b2ludHMuaXNFbXB0eSgpICYmIG1fc2Nyb2xsU25hcFN0YXRlLT5zbmFwT2Zmc2V0c0ZvckF4aXMo
b3RoZXJTY3JvbGxFdmVudEF4aXMoYXhpcykpLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcAppbmRleCA1MDNmOTdiOTIwMThkYTg3YzI0ODg5MWIyMjY3OWFiYjcwMDViMzAw
Li45NmM4NTEyOTM1YWI5YjY5OGU4OTg1NTE2M2JiNmQyMmFjOWI4MmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENE
TVByaXZhdGU+IENETUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5
U3lzdGUKICNlbHNlCiAgICAgQVNTRVJUKHN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpOwog
I2VuZGlmCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5Pigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVDbGVhcktleT4oKTsKIH0KIAogYm9v
bCBDRE1GYWN0b3J5Q2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggZDQ3MzA0Yzk1YjI2ZWYyMDRm
NWRhNGFkY2JiOGEwODY0ZGUxOGJiMy4uMGI5MTA2NDljYTRhNDdhOTE1ZDU0OGM5ZDk0YWZmZjMz
NTM1OTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC00MCw2ICs0MCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUZhY3RvcnlDbGVhcktleSBmaW5hbCA6IHB1
YmxpYyBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgQ0RNRmFjdG9yeUNsZWFyS2V5JiBzaW5nbGV0b24oKTsKIApAQCAtNTQsNiAr
NTUsNyBAQCBjbGFzcyBDRE1GYWN0b3J5Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9y
eSB7CiB9OwogCiBjbGFzcyBDRE1Qcml2YXRlQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNUHJp
dmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJp
dmF0ZUNsZWFyS2V5KCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUNsZWFyS2V5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQppbmRleCBmNzIwY2ZkMzM0M2Y5
YmFkMzNhNDkxOWE3OGY4NjZmOWQ4NjJhMGFkLi41YTZlYjQwNDM5ZWY1OTA1NzJhN2MyOWVmYzMz
OGQ5MmYyMzljNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIu
bW0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6
Y29udHJvbGxlckRpZENvbm5lY3QoR0NDb250cm9sbGVyICpjb250cm9sbGUKICAgICBMT0coR2Ft
ZXBhZCwgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyIGNvbnRyb2xsZXIgJXAgYWRkZWQi
LCBjb250cm9sbGVyKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5l
Y3RlZERldmljZSgpOwotICAgIGF1dG8gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8R2FtZUNv
bnRyb2xsZXJHYW1lcGFkPihjb250cm9sbGVyLCBpbmRleCk7CisgICAgYXV0byBnYW1lcGFkID0g
bWFrZVVuaXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKIAog
ICAgIGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICBtX2dhbWVw
YWRWZWN0b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCmluZGV4IDE1ZjA0YzcwOGU5MDA3YmI0ZGFkZWU1NDM1
YzM1N2YwMmY1MzFjOTMuLmEyNTIzNGZiODc1YTc1MWM2M2MzN2JhNmE1Y2VlN2Q0NTM0ZDVhOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVw
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEhJREdh
bWVwYWRFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
SElER2FtZXBhZEVsZW1lbnQoZG91YmxlIHRoZU1pbiwgZG91YmxlIHRoZU1heCwgSU9ISURFbGVt
ZW50UmVmIGVsZW1lbnQpCiAgICAgICAgIDogbWluKHRoZU1pbikKICAgICAgICAgLCBtYXgodGhl
TWF4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElE
R2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggNTc0MzkxYjVjMTExYTMyYmU5MTI1Y2E2Y2Uw
NjAwZjVkNjM4MjI1Ny4uNmQxNGI2YjIxNjEwYjg2Y2U0YzAwMTNlNTA5MTFiODhmOTVlMWE2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBh
ZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBISURHYW1lcGFk
UHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKICAgICBMT0coR2Ft
ZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRkZWQiLCBkZXZpY2UpOwogCiAg
ICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhJ
REdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFk
PiBnYW1lcGFkID0gbWFrZVVuaXF1ZTxISURHYW1lcGFkPihkZXZpY2UsIGluZGV4KTsKIAogICAg
IGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICBtX2dhbWVwYWRW
ZWN0b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKaW5kZXggYTRhMzBiNTJhYmU0OGFm
ODUwZGM3Yzc0N2EzYmNkZTFkNTFmZGE1Zi4uMGU1OTcyMzIxYjVmNzNmNTcyYmQ3OTY1ODgxMWYw
MDNhOTVlZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZERlY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEtleWVk
RGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnkgewogICAgIHVzaW5nIE5vZGUgPSBWYXJpYW50PFZl
Y3Rvcjx1aW50OF90PiwgYm9vbCwgdWludDMyX3QsIHVpbnQ2NF90LCBpbnQzMl90LCBpbnQ2NF90
LCBmbG9hdCwgZG91YmxlLCBTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Piwgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5Pj47CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2
b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIHN0
ZDo6bWFrZV91bmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CisgICAgdm9p
ZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBtYWtl
VW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQogICAgIE5vZGUmIGdldChj
b25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4gKm1fbWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6
CkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBib29sIHJlYWRTaW1wbGVWYWx1ZShXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyLCBLZXllZERlY29kZXJHZW5lCiAKIHN0ZDo6dW5pcXVl
X3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERl
Y29kZXJHZW5lcmljPihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERl
Y29kZXJHZW5lcmljPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5
ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTg2
LDcgKzg2LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICBLZXllZEVuY29kZXJHZW5lcmljOjpU
eXBlIHR5cGU7CiAgICAgU3RyaW5nIGtleTsKIAotICAgIG1fcm9vdERpY3Rpb25hcnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgbV9yb290RGljdGlvbmFyeSA9IG1ha2VV
bmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobV9yb290
RGljdGlvbmFyeS5nZXQoKSk7CiAKICAgICBib29sIG9rID0gdHJ1ZTsKQEAgLTE0NCw3ICsxNDQs
NyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8qIGN1cnJlbnREaWN0aW5hcnkgPSBtX2RpY3Rp
b25hcnlTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25h
cnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlT
dGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50RGlj
dGluYXJ5LT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0RpY3Rpb25hcnkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTU2LDEzICsxNTYsMTMgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNv
ZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAg
IG9rID0gcmVhZFN0cmluZyhkZWNvZGVyLCBrZXkpOwogICAgICAgICAgICAgaWYgKCFvaykKICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFycmF5PigpOworICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlx
dWU8QXJyYXk+KCk7CiAgICAgICAgICAgICBtX2FycmF5U3RhY2suYXBwZW5kKG5ld0FycmF5Lmdl
dCgpKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+YWRkKGtleSwgV1RG
TW92ZShuZXdBcnJheSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCZWdpbkFycmF5RWxlbWVudDogewotICAg
ICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5
PigpOworICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9u
YXJ5PigpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25h
cnkuZ2V0KCkpOwogICAgICAgICAgICAgbV9hcnJheVN0YWNrLmxhc3QoKS0+YXBwZW5kKFdURk1v
dmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRl
eCAyZjg0MTA0NzQ2Mzk1NThmMjk1ZTgxYTUxNzE5YTg3MzRiMzJkNThhLi4yMWNjMWViZTRhOTAx
YTEzYzc0NDAzZGMwMWNmMmZjODE4MTMwMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVy
PiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEtleWVkRW5jb2RlckdlbmVyaWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNv
ZGVyR2VuZXJpYz4oKTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJp
bmcoY29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKaW5kZXggN2FlNjVjNWE4ZDMw
OWUzZGVlZjUzY2U4Y2YxZTMwMjQyNmQyN2MxNC4uMjA4YWY3Yjg0NzllY2FlZjU1MzBjY2M1NTdi
NzM2ZWJhYmNiY2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcApAQCAtNDQsMTQgKzQ0LDE0IEBAIHN0
YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbENhcHR1cmVUaHJlc2hvbGQgeyAxNTBfbXMgfTsKIAog
c3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAog
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQogICAgIDogU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsYWJsZUFyZWEp
CiAgICAgLCBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lcigqdGhpcywgJlNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyRmlyZWQpCiB7Ci0g
ICAgbV9raW5ldGljQW5pbWF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRpb25L
aW5ldGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7
CisgICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5l
dGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAj
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKICAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9z
aXRpb24pOwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5z
dXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc21vb3RoQW5pbWF0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBv
c2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgbV9zbW9vdGhBbmlt
YXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJl
YSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICAg
ICAgICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKaW5k
ZXggZTdkZDE5MTQwNDE3MTk2OGY5MGQ2ZmVhMzM1NGUxNGNlZjZmNTU2Ny4uMzYxZTlkZjMyNDVi
ZTU2NWIwZTJhNDFkZjE4YjI2ZmZiYzcxOWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNv
ZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdsaWI+KGRhdGEsIHNpemUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdsaWI+KGRhdGEsIHNpemUpOwogfQogCiBL
ZXllZERlY29kZXJHbGliOjpLZXllZERlY29kZXJHbGliKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAKaW5kZXggNzQwNGJjYmQ0NDlhYTQ5MjFiOGNlMmI3ZTAxODQ0OTUwMTA2ZjY4
MC4uNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5j
b2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxLZXllZEVuY29kZXJHbGliPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5j
b2RlckdsaWI+KCk7CiB9CiAKIEtleWVkRW5jb2RlckdsaWI6OktleWVkRW5jb2RlckdsaWIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmlu
ZGV4IGYxYzkwZTU5ODg5M2FkYTgzNDc5ZmM3YjM4M2E5MGE1MzViZjJhOTkuLmIyYmQ0N2NiMTYx
NGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpjbGVhclRpbWVyKCkKIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIo
U2Vjb25kcyBkZWxheSkKIHsKICAgICBBU1NFUlQoIW1fZnJhbWVUaW1lcik7Ci0gICAgbV9mcmFt
ZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2
YW5jZUFuaW1hdGlvbik7CisgICAgbV9mcmFtZVRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRo
aXMsICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CiAgICAgbV9mcmFtZVRpbWVyLT5z
dGFydE9uZVNob3QoZGVsYXkpOwogfQogCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6cmVzZXRBbmltYXRpb24oKQogdm9pZCBCaXRtYXBJbWFnZTo6ZGVjb2RlKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9kZWNvZGluZ0NhbGxiYWNr
cykKLSAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOworICAgICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzID0g
bWFrZVVuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+KCk7CiAKICAgICBtX2RlY29k
aW5nQ2FsbGJhY2tzLT5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAppbmRleCAwZDM1NTYxODk3MGZiMjc3ZjcyZTc4OTkwZTNmNGYyYTIxNmZiYzY5Li4zNTNm
Y2E2NjAxMzI2NGIwMjQ2MmE1NzEyMjRkMDVhMTgxZDk2ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgVGV4dExheW91dCB7CiAgICAgVGV4dExheW91dChS
ZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgeFBvcykKICAg
ICAgICAgOiBtX2ZvbnQoZm9udCkKICAgICAgICAgLCBtX3J1bihjb25zdHJ1Y3RUZXh0UnVuKHRl
eHQsIHhQb3MpKQotICAgICAgICAsIG1fY29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbXBs
ZXhUZXh0Q29udHJvbGxlcj4obV9mb250LCBtX3J1biwgdHJ1ZSkpCisgICAgICAgICwgbV9jb250
cm9sbGVyKG1ha2VVbmlxdWU8Q29tcGxleFRleHRDb250cm9sbGVyPihtX2ZvbnQsIG1fcnVuLCB0
cnVlKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFBvaW50LmgKaW5kZXggNzIwNDUzZDlmMDQ2ZDc5ZjQ4YTA5YjgxYWY3MDAwZjRkZTNi
ZTAyNS4uY2VmZDhkNDIyNDRkMDZmY2I4MjRiZTVlM2I3MzQxOWNkNDk4YTRlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaApAQCAtNjMsNiArNjMs
NyBAQCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CiAKIGNsYXNzIEZsb2F0UG9pbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZsb2F0UG9pbnQo
KSB7IH0KICAgICBGbG9hdFBvaW50KGZsb2F0IHgsIGZsb2F0IHkpIDogbV94KHgpLCBtX3koeSkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE4NGI0
NGIwN2E0MTIyMTZiOWVjNTk4NDIyZjA3ODdmMGU2YzdhZWIuLmUwYjQ5ZjI0N2MyMDA5YmRkNWYx
ZDBjOGViYTdhZDZjN2ViOGNiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZv
ckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikgY29uc3QKIGF1dG8gRm9udDo6ZW5zdXJlRGVy
aXZlZEZvbnREYXRhKCkgY29uc3QgLT4gRGVyaXZlZEZvbnRzJgogewogICAgIGlmICghbV9kZXJp
dmVkRm9udERhdGEpCi0gICAgICAgIG1fZGVyaXZlZEZvbnREYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxEZXJpdmVkRm9udHM+KCk7CisgICAgICAgIG1fZGVyaXZlZEZvbnREYXRhID0gbWFrZVVuaXF1
ZTxEZXJpdmVkRm9udHM+KCk7CiAgICAgcmV0dXJuICptX2Rlcml2ZWRGb250RGF0YTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDJlNThiZDY5ZWJiNTM5
MWUwMzZkMjhjMjcwMmMxZjQ1MDUwOGIzMTIuLjU0NGIwYjcxMThhYjJmOTA4MDc0OWU0NDFlNTE0
OWYwNTE4ZjJlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAg
LTI2OSw5ICsyNjksNyBAQCBjbGFzcyBGb250IDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udD4gewog
I2VuZGlmCiAKICAgICBzdHJ1Y3QgRGVyaXZlZEZvbnRzIHsKLSNpZiAhQ09NUElMRVIoTVNWQykK
LSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0jZW5kaWYKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKIAogICAgICAgICBSZWZQdHI8
Rm9udD4gc21hbGxDYXBzRm9udDsKQEAgLTM0NSw3ICszNDMsNyBAQCBBTFdBWVNfSU5MSU5FIEZs
b2F0UmVjdCBGb250Ojpib3VuZHNGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIAogICAgIGJv
dW5kcyA9IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoZ2x5cGgpOwogICAgIGlmICghbV9nbHlwaFRv
Qm91bmRzTWFwKQotICAgICAgICBtX2dseXBoVG9Cb3VuZHNNYXAgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOworICAgICAgICBtX2dseXBoVG9Cb3VuZHNN
YXAgPSBtYWtlVW5pcXVlPEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOwogICAgIG1fZ2x5
cGhUb0JvdW5kc01hcC0+c2V0TWV0cmljc0ZvckdseXBoKGdseXBoLCBib3VuZHMpOwogICAgIHJl
dHVybiBib3VuZHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcAppbmRleCAwYTYyYTI3NWJjNjkyZWYzOTkxMTQwZTAyOGY1ODAwNDIxZDBjNzEx
Li4zNzA5YjQxZWIyYjdiZDBiZjdiMTAyYWM1ZGJlZmUyZjc3NzNhZjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTI0NCw3ICsyNDQs
NyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAgICAgICAgICAgIGl0ID0gZm9udFBs
YXRmb3JtRGF0YUNhY2hlKCkuZmluZChrZXkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChpdCAh
PSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5lbmQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGZv
bnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKQotICAgICAgICAgICAgICAgICAgICBpdC0+
dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KCpmb250UGxhdGZvcm1E
YXRhRm9yQWx0ZXJuYXRlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGl0LT52YWx1ZSA9IG1h
a2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVO
YW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA3Mjc0ZGIwZGIzMmIz
YjQxYjNlMGUxYjFlZDBmYjJhZWE4YjM2YTNiLi42NDgxOGY0YjUxNTVkNDJiZmFjODFiNjFmNGI1
ZjljZGVhNTQ1MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIFJlZjxGb250Q2FzY2Fk
ZUZvbnRzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlw
dGkKICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZvbnRzLmdldCgp
OwogCiAgICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAg
IG5ld0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KFdURk1v
dmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkp
OworICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KFdURk1v
dmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkp
OwogICAgIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBnbHlwaHMgPSBuZXdFbnRyeS0+Zm9udHMuZ2V0
KCk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5yZWZlcmVuY2VkUHJ1bmVJbnRlcnZh
bCA9IDUwOwpAQCAtMzI2LDkgKzMyNiw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAg
aWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gZGlzcGxheUxp
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1h
a2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwogICAgIEdyYXBoaWNzQ29udGV4
dCByZWNvcmRpbmdDb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4
dCkgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZs
b2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3Qs
IGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICB9
KTsKICAgICAKICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAK
aW5kZXggZGI3NDMwMmU5ZGFhNGViNTJjMGNlMDgxZmQ1NjA1Mjc5NTc4ZmJmNC4uMTJhYzgzN2Zj
ZDI0NjVmOWY4MWRlYjA2ODdhYTc3NmQ1ZWEwNjQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBGb250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlw
aERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGEKIHsKICAgICBBU1NFUlQoIWdseXBoRGF0YUZv
ckNoYXJhY3RlcihjaGFyYWN0ZXIpLmdseXBoKTsKICAgICBpZiAoIW1fbWl4ZWRGb250KSB7Ci0g
ICAgICAgIG1fbWl4ZWRGb250ID0gc3RkOjptYWtlX3VuaXF1ZTxNaXhlZEZvbnRHbHlwaFBhZ2U+
KG1fc2luZ2xlRm9udC5nZXQoKSk7CisgICAgICAgIG1fbWl4ZWRGb250ID0gbWFrZVVuaXF1ZTxN
aXhlZEZvbnRHbHlwaFBhZ2U+KG1fc2luZ2xlRm9udC5nZXQoKSk7CiAgICAgICAgIG1fc2luZ2xl
Rm9udCA9IG51bGxwdHI7CiAgICAgfQogICAgIG1fbWl4ZWRGb250LT5zZXRHbHlwaERhdGFGb3JD
aGFyYWN0ZXIoY2hhcmFjdGVyLCBnbHlwaERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAppbmRleCAyNTllOTc1MzNjYWVkY2Zj
MTQ1ZmY3YWI0MjhlYTE2OWY2NGIxNTk0Li43OWUyZjUzODhjNDZlNTg5MjMwMTYxYzQ3NDUyNTQx
OTI0N2U4MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaE1ldHJpY3NNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaE1ldHJpY3NNYXAuaApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdGVtcGxhdGU8Y2xhc3MgVD4g
dHlwZW5hbWUgR2x5cGhNZXRyaWNzTWFwPFQ+OjpHbHlwaE1ldHJpY3NQYWdlJiBHbHlwaE1ldHJp
Y3NNYXAKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZXMpCi0gICAgICAgIG1fcGFnZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFn
ZT4+PigpOworICAgICAgICBtX3BhZ2VzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPGludCwgc3RkOjp1
bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4oKTsKIAogICAgIGF1dG8mIHBhZ2UgPSBtX3Bh
Z2VzLT5lbnN1cmUocGFnZU51bWJlciwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4odW5rbm93bk1ldHJpY3MoKSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAqcGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDA4Y2ZiN2Qx
ZTJkYjk4ZjdhZGM4M2JiYzMzYjgxYjlhZjEyMWIwYy4uNDQ3ZDdlM2UzNTQ3NjJlODBiOGYyN2E5
NTI2MjMyMjc5YjVmOTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU1Nyw2ICs1NTcsNyBAQCBjbGFzcyBHcmFwaGlj
c0NvbnRleHQgewogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cygpIGNvbnN0Owog
CiAgICAgY2xhc3MgV2luZG93c0JpdG1hcCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaW5kb3dzQml0bWFwKTsKICAgICBw
dWJsaWM6CiAgICAgICAgIFdpbmRvd3NCaXRtYXAoSERDLCBjb25zdCBJbnRTaXplJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oCmluZGV4IDFiNDIyODZkZGY0NjVjMGUyYjEyNGQ4YWZkZjBmN2NkNjQ3
N2NiYjcuLmUzM2Y4ZmJlNzM4OTJlMzRiOGRlZjgzNmQ0NmY1YzcwYzc5YzYxZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEJpdG1hcFRleHR1cmVHTDsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
U3R5bGUpOwogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRl
eCAwYmFkNGU3MDYzNDIxOTk4Njg5NDQ5MmRmZTZmNjFkMzE3ODgxOWQzLi5iODczMTk0ZWUyNDYw
MWZlNGUwNzE0N2FhNzFlYTMwNTg3YTg0YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC0zMCw2ICszMCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdy
YXBoaWNzQ29udGV4dEltcGwpOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEltcGwoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuY3BwCmluZGV4IDk0YWFjMWRmODM1NmJkYjEwZGY3ZDA4NmZhY2UyNmMxZTM3
MTgzMjYuLjZjZDAwYzI2NTcwZDlkYjNiOWZhYTdlMjAyM2FmMWE1ZTdlNjNhMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyOjpzdXBwb3J0c0NvbnRlbnRzVGls
aW5nKCkKICNlbmRpZgogCiAvLyBTaW5nbGV0b24gY2xpZW50IHVzZWQgZm9yIGxheWVycyBvbiB3
aGljaCBjbGVhckNsaWVudCBoYXMgYmVlbiBjYWxsZWQuCi1jbGFzcyBFbXB0eUdyYXBoaWNzTGF5
ZXJDbGllbnQgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CitjbGFzcyBFbXB0eUdyYXBo
aWNzTGF5ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEVtcHR5R3JhcGhp
Y3NMYXllckNsaWVudCYgc2luZ2xldG9uKCk7CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJp
eCkKICAgICBpZiAobV90cmFuc2Zvcm0pCiAgICAgICAgICptX3RyYW5zZm9ybSA9IG1hdHJpeDsK
ICAgICBlbHNlCi0gICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgR3JhcGhpY3NMYXllcjo6Y2hpbGRyZW5UcmFuc2Zvcm0oKSBjb25zdApAQCAtMzU2
LDcgKzM1Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKICAgICBpZiAobV9jaGlsZHJlblRyYW5z
Zm9ybSkKICAgICAgICAgKm1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQot
ICAgICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NM
YXllcjo6c2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmIGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDAw
OWQ0ODY4OTVkNTY4NjI1NDAxMWRmNTYwMGE3MjExMjQzMGU2MmYuLjdhMWZlYWFjNzllNzhiYTg4
ZmNhZGNiODVlMzI5OWZkNzlhMDA0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBGbG9h
dEFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7
CiAgICAgfQogCiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CkBA
IC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMg
QW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhl
cikKQEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBGaWx0ZXJBbmltYXRpb25WYWx1ZSA6IHB1Ymxp
YyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+
IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAgICAgRmlsdGVy
QW5pbWF0aW9uVmFsdWUoY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIG90aGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDhlY2YzM2Y4OThiNzQ0
OTExZjcwNWExNDlmZjc4OGI2N2I2ZDk0ZWYuLjM5OTk2NzJiOWY1ODkzMjg2Y2YzMmRiMWNjNmI4
MGEzMzE4MmFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpYwogdm9pZCBJbWFn
ZTo6c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSgpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlv
blN0YXJ0VGltZXIpCi0gICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKTsKKyAgICAgICAgbV9h
bmltYXRpb25TdGFydFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3Rh
cnRBbmltYXRpb24pOwogICAgIGlmIChtX2FuaW1hdGlvblN0YXJ0VGltZXItPmlzQWN0aXZlKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXItPnN0YXJ0T25lU2hv
dCgwX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVn
YWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5
Q0RNU2Vzc2lvbi5oCmluZGV4IGJlNzY3NjBmOGUzNTY1ZDQyNjcyYjAwNWE5NmRjZGI3ZmE0YjJk
NjkuLjI1ZTc5YTZkYzBhNWIyMTkzYTcyYTIyN2FhY2ExNzczYTdlM2MyOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKQEAg
LTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGVnYWN5Q0RNU2Vz
c2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFs
IHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlvblVSTCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CmluZGV4IDc1N2YwOTU2N2RjNWRmZGY1YmUwMjYzOTYzOWQxZWZlYzcxOGMwZGIuLmFiZTg2OTQx
OTRmZjdjMTc1MTAwYjY5ODgwNGExMjQwYmQ2MmM4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBj
bGFzcyBOdWxsTWVkaWFQbGF5ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZSB7CiAKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIDA7IH0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBi
dWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
YnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsgfQogCiAgICAgZG91YmxlIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRp
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxpdmVVcGRhdGVJbnRl
cnZhbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBSZWY8
TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVu
dCkKIE1lZGlhUGxheWVyOjpNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQog
ICAgIDogbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcmVsb2FkVGltZXIoKnRoaXMsICZNZWRp
YVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5p
cXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1ha2VV
bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKQEAgLTUxMSw3ICs1
MTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAjZW5kaWYKICAgICAgICAgbV9wcml2YXRlLT5s
b2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX3ByaXZhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOworICAgICAgICBt
X3ByaXZhdGUgPSBtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOwogICAg
ICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQodGhpcyk7CiAgICAgICAgIGNs
aWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQodGhpcyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaAppbmRleCAwMGQ4NWE0OTk2NDJiM2Y1MjM3YjMwYmZmNWY0ZTZiNDI5MTMwZWNkLi4xZDJm
YzAwOTIwNGE4YzAyNTU0MWIyYTJkN2M1ZjBkMGJlNWM5OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTI5
LDcgKzEyOSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgdmly
dHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHNl
ZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2FibGUoKSA9PSBNZWRpYVRp
bWU6Onplcm9UaW1lKCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKSA6
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJs
ZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhNZWRp
YVRpbWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSA/IG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1l
ZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmlydHVh
bCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVh
bCBNZWRpYVRpbWUgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUobWF4VGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmlydHVhbCBk
b3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAppbmRleCAzZTY4
ODA1NWJkY2MwYjEwZTQxNjBjZjE0MGQ0ZmFjZTkyMzIwYTY1Li41YWQ5MzM0OWJmYjQwZGE0ZmYz
MDhhZGE5ODQ5N2ZjMzc1ZTEwOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtODksNyArODksNyBAQCBGbG9hdFBvaW50
R3JhcGg6Ok5vZGUqIEZsb2F0UG9pbnRHcmFwaDo6ZmluZE9yQ3JlYXRlTm9kZShGbG9hdFBvaW50
IHBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHRlc3ROb2RlLmdldCgpOwogICAgIH0KIAotICAg
IG1fYWxsTm9kZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRQb2ludEdyYXBoOjpOb2Rl
Pihwb2ludCkpOworICAgIG1fYWxsTm9kZXMuYXBwZW5kKG1ha2VVbmlxdWU8RmxvYXRQb2ludEdy
YXBoOjpOb2RlPihwb2ludCkpOwogICAgIHJldHVybiBtX2FsbE5vZGVzLmxhc3QoKS5nZXQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKaW5kZXgg
OWRjZWU4NzYxNjI1YzAxNDg4YjRkOTBkMWFmMjJlMzU0MzVkNGE1ZS4uNmE3MDFjMWExMjg5Nzlk
NGM5NDhiMWE3YmFiNTY4ZjEwMjQ3Y2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uY3BwCkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBSZWdpb246OnNldFNo
YXBlKFNoYXBlJiYgc2hhcGUpCiAgICAgfQogCiAgICAgaWYgKCFtX3NoYXBlKQotICAgICAgICBt
X3NoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOworICAgICAg
ICBtX3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOwogICAgIGVsc2UK
ICAgICAgICAgKm1fc2hhcGUgPSBXVEZNb3ZlKHNoYXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggNzk2MzNmZGI2YWRmMzRmZmZlZThmODI2NzQ4
M2I4Y2ZmNWNlMWYzYy4uYmMzOWMzMDAwMGVhOGI2YjVhOWU2MGNmMmJjNWFlMTg2NjY0YjZjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKQEAgLTkxLDYgKzkx
LDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICB9OwogCiAgICAgY2xhc3MgU2hhcGUgeworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFNoYXBlKCkg
PSBkZWZhdWx0OwogICAgICAgICBTaGFwZShjb25zdCBJbnRSZWN0Jik7CkBAIC0xNDgsNyArMTQ5
LDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTaGFwZSYsIGNvbnN0IFNoYXBlJik7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IHN0ZDo6bWFrZV91bmlx
dWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hh
cGU+IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBtYWtlVW5pcXVlPFNoYXBl
PigqbV9zaGFwZSkgOiBudWxscHRyOyB9CiAgICAgdm9pZCBzZXRTaGFwZShTaGFwZSYmKTsKIAog
ICAgIEludFJlY3QgbV9ib3VuZHM7CkBAIC0yODksNyArMjkwLDcgQEAgT3B0aW9uYWw8UmVnaW9u
PiBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBkZWNvZGVyID4+IHNo
YXBlOwogICAgICAgICBpZiAoIXNoYXBlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZN
b3ZlKCpzaGFwZSkpOworICAgICAgICByZWdpb24ubV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hhcGU+
KFdURk1vdmUoKnNoYXBlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgcmVnaW9uIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggMWU0ZTdmYWMzNmM3YzMwYTY1NmYxZWZkMDBhYWNlNmQ0
Yzk1Y2VkYS4uNjkzOWY5MTdhZTZmYWIxM2VjMWM5MWQ0YWE4MTU1NjZhOTE3MGRkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFj
a1JlcHJlc2VudGF0aW9uLmNwcApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBOdWxsVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24gOiBwdWJsaWMgVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gewogCiBzdGQ6
OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IFRleHRUcmFja1JlcHJlc2VudGF0
aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQmKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2Np
dHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEu
aAppbmRleCA3YWViNzU5YjM0YjE4YTFlODQ2ODNmMjljNjE2YTZjZGIwMjU3NGQ4Li42YTA2Y2M2
ZWJhMzRiOTU5ZDJmMTg2MDIyOWUxZjJmMzhmZjMxOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaApAQCAtNjUsNiArNjUsNyBAQCBzdHJ1
Y3QgVmVsb2NpdHlEYXRhICB7CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBWZWxvY2l0eURhdGEmKTsKIAogY2xhc3MgSGlzdG9yaWNhbFZl
bG9jaXR5RGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
SGlzdG9yaWNhbFZlbG9jaXR5RGF0YSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHQzREFOR0xFLmNwcAppbmRleCA3N2EzZTE4YzFjNmMyZTI3ZGQ2M2FlMjk2ZjZlYzlhMWVhMmZh
ZTFmLi42MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1YjE2Y2E0ZTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQz
REFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHQzREFOR0xFLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMzRCYg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNp
b25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMz
REFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMg
PSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkp
OwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAppbmRleCBhOWVjZDMyMTM2ZGE4NzcwMmY0NzhhZmNk
OGFjYzhlYjk3YzIzOTQwLi45OWRkZGQ4Zjg1MDI3MzAzYmI4YTc2M2VjYWMyYjg2OTg4MmZhOThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTZWxlY3Rpb25P
cHRpb25BVkZPYmpDOwogCiBjbGFzcyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRyYWNrKik7CiAgICAgZXhwbGljaXQgQVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbChBVkFzc2V0VHJhY2sqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCA1Y2Q3NzcyYWMyZWUxY2VhOTAx
MGU4MzM3MWVhNmFhZWY3ZjA2OTU4Li42YjNjOTIyZTZhZWJlNTkyMGFlNjVlNTdhZjA1ZWRlNGFk
MDM3NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCkBAIC0zMTMsMTIgKzMxMywxMiBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcmVwYXJlKENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogewog
ICAgIEFTU0VSVChtYXhGcmFtZXMgPj0gMCk7CiAKLSAgICBtX3RhcERlc2NyaXB0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpwcm9jZXNzaW5nRm9y
bWF0KTsKKyAgICBtX3RhcERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zvcm1hdCk7CiAg
ICAgaW50IG51bWJlck9mQ2hhbm5lbHMgPSBwcm9jZXNzaW5nRm9ybWF0LT5tQ2hhbm5lbHNQZXJG
cmFtZTsKICAgICBkb3VibGUgc2FtcGxlUmF0ZSA9IHByb2Nlc3NpbmdGb3JtYXQtPm1TYW1wbGVS
YXRlOwogICAgIEFTU0VSVChzYW1wbGVSYXRlID49IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlw
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOwor
ICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CiAgICAgbV9vdXRwdXREZXNjcmlwdGlv
bi0+bVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1G
b3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKICAgICBtX291dHB1dERlc2NyaXB0aW9u
LT5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkOwpAQCAt
MzM4LDcgKzMzOCw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUo
Q01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0cmVhCiAgICAgLy8gTWFrZSB0aGUg
cmluZ2J1ZmZlciBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgYXQgbGVhc3QgdHdvIGNhbGxiYWNrcyB3
b3J0aCBvZiBhdWRpbywgb3IgMXMsIHdoaWNoZXZlciBpcyBsYXJnZXIuCiAgICAgc2l6ZV90IGNh
cGFjaXR5ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigyICogbWF4RnJhbWVzKSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihrUmluZ0J1ZmZlckR1cmF0aW9uICogc2FtcGxlUmF0ZSkpOwogCi0g
ICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAg
bV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAgICAgbV9yaW5nQnVm
ZmVyLT5hbGxvY2F0ZShDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnByb2Nlc3NpbmdGb3JtYXQp
LCBjYXBhY2l0eSk7CiAKICAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJpYWJsZS1sZW5n
dGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMgbmV3KCkgb3Bl
cmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDM2
MWE5OTJmMGM0NjUwY2YyYjk2MjhhNjQyZTk3YjVkYmEwZTJhM2MuLjRmYzY3ODdkZDhkOTA3Y2Fk
NmEyNzdmMzliMWVkMzJlZDY3OWE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2
YXRlPiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcm
CiAgICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc+KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggODkxOGU4MGUwYzM5MGQ3ZThkYWNhMTkwMzk0Nzlh
MGQwZjY5NWFkOC4uNTM4Njk2OWY5NDk3NmYzODM2ODAxODc0MWJhZmQxMjU1MWUyOGI4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTM1LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEZvdXJDQzsKIAogY2xhc3MgQ0RNRmFjdG9yeUZh
aXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5RmFpclBsYXlT
dHJlYW1pbmcmIHNpbmdsZXRvbigpOwogCkBAIC00OSw2ICs1MCw3IEBAIGNsYXNzIENETUZhY3Rv
cnlGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAKIGNs
YXNzIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmcoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCmluZGV4IDRhNTBlYjQxYTU4MzY4M2Y2NmE2NzYyMjk1NDZjNTgwMWIyMGI1ODguLmQ4
MWJjYTM1NDkwMzkxOGExYmRhMGFkZGQ5NThkNTk0M2Y3MDFiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMzcsNiArMzcsNyBA
QCBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOwog
CiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIDogcHVibGljIENETVByaXZhdGVJ
bnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTGVnYWN5Q0RNKiBjZG0pCiAgICAg
ICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQppbmRleCAyY2MwOGE5YTNiNTFjYmY3YWIxOTc0MjAyYTk4YjE2OWRi
NDNjMTAxLi4wY2QwMTI5YTNjZDllYWY4NjNhZDQ3ODk4Mzg1MDMxZDhiNzZlZjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAt
MTQ3LDEwICsxNDcsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24oTGUKICNlbmRpZgogICAgIAog
ICAgIGlmIChzaG91bGRVc2VBVkNvbnRlbnRLZXlTZXNzaW9uICYmIENETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKQotICAgICAgICBzZXNzaW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJz
LnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBj
bGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1l
dGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBjbGllbnQpOwogICAgIGVsc2UKICNpZiBIQVZF
KEFWU1RSRUFNU0VTU0lPTikKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9j
b2xzKSwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29s
cyksICp0aGlzLCBjbGllbnQpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaApp
bmRleCBlNDYwMTQ4MzA1Y2VlZDFiNTY0ODQxOTk2Y2I5ZmMzNGNkYzNhYjUyLi4xNDdjMzc5ZjEy
NzA2ODJlNTVmZDIxNWNlMjNhMzllYTEyNDk1YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3No
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVi
bGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzaSI7IH0K
IApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVh
bWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAgICAgRm91ckNDIG1fc2NoZW1lOwog
fTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0
SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJm
a3JpIjsgfQogCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAgICAg
S2V5SUQgbV9rZXlJRDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IGZpbmFsIDogcHVibGljIElTT0Jv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJm
a2FpIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1
aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCBmaW5hbCA6IHB1YmxpYyBJU09C
b3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAi
ZmtjeCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQpAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8
dWludDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlT
dHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCBmaW5hbCA6IHB1
YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7
IHJldHVybiAiZmt2bCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gdmVyc2lvbnMoKSBj
b25zdCB7IHJldHVybiBtX3ZlcnNpb25zOyB9CkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggOiBwdWJsaWMg
SVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV92ZXJzaW9uczsKIH07CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCA6IHB1YmxpYyBJ
U09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1
ZXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJD
QyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNrIjsgfQogCkBAIC0xMDYsNyArMTA2LDcgQEAg
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IDog
cHVibGljIElTT0JveCB7CiAgICAgT3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJz
aW9uTGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggZmluYWwgOiBwdWJs
aWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyBy
ZXR1cm4gImZwc2QiOyB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IDogcHVibGljIElTT0JveCB7CiAgICAg
VmVjdG9yPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveD4gbV9yZXF1ZXN0czsKIH07
CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCA6IHB1
YmxpYyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggeworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94IGZpbmFsIDogcHVibGljIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZmFpclBsYXlTeXN0ZW1JRCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDg1
N2YzMWYyNzcyZjQwODFmYmE2MzhmODEwYzExNDk0Mjg1OGI5NGIuLjU5Y2Y4YmEyMTMxNmIzMDdj
MDUwMjNlZDU2ZDliMzlkMjU2MTdmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpidWZmZXJlZCgpIGMKICAgICBpZiAoIW1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcykK
ICAgICAgICAgbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzID0gcGxhdGZvcm1CdWZmZXJlZFRpbWVS
YW5nZXMoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsKIH0KIAogTWVkaWFU
aW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bWF4TWVkaWFUaW1lU2Vla2FibGUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwCmluZGV4IDM5NWNlNzgyZThjNTgwNDU5NjE2MjQ2OTgwZjMzZWFkZjAzYjc4YjIuLjVmNWI2
ZjY5NTJiNDkzYTk4ODdiYWZjN2YzMGI3YmVlNzMzNDE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMoKSA9IGRl
ZmF1bHQ7CiBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcigpCiB7CiAgICAgaWYgKCFtX3RhcmdldFBpY2tl
cikKLSAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKKyAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBtYWtl
VW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKIAogICAgIHJldHVy
biAqbV90YXJnZXRQaWNrZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKaW5kZXggNzYwOGEwMTcyNjNiMzA0NDRjYWJlNTM1ZmRh
NDRjOTlmZmFmMTFmMi4uZDYxNjdiODc2ODk5OWRjMDQ5NDc1MzgyMGQ5YTJiYzdiZWQwNjRkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaApA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGIGZp
bmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRiYgcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCmluZGV4IGFmMGE3Y2M3N2JmMjkyY2RmZDY2YWJjNmU3ZjYzYTUwOTAw
YWFkNjcuLjNiNzBlNzY2MzllNTk0MGFmMWYyYjFkNWJmMjY3M2FlMzJkZWNhMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcApAQCAtOTgsNiArOTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogY2xhc3Mg
TGF5ZXJDbGllbnQ7CiAKIGNsYXNzIEFWRldyYXBwZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YqKTsKICAgICB+QVZGV3JhcHBlcigpOwpAQCAtMjEzLDYgKzIxNCw3IEBAIGNsYXNz
IEFWRldyYXBwZXIgewogdWludHB0cl90IEFWRldyYXBwZXI6OnNfbmV4dEFWRldyYXBwZXJPYmpl
Y3RJRDsKIAogY2xhc3MgTGF5ZXJDbGllbnQgOiBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMYXllckNsaWVu
dChBVkZXcmFwcGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KICAgICB2aXJ0dWFs
IH5MYXllckNsaWVudCgpIHsgbV9wYXJlbnQgPSAwOyB9CkBAIC0zNDMsNyArMzQ1LDcgQEAgc3Rh
dGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlh
RW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAg
ICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0sCisg
ICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAogICAgICAg
ICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNL
ZXlTeXN0ZW0pOwogfQogCkBAIC02NzIsNyArNjc0LDcgQEAgc3RhdGljIGJvb2wgdGltZVJhbmdl
SXNWYWxpZEFuZE5vdEVtcHR5KENNVGltZSBzdGFydCwgQ01UaW1lIGR1cmF0aW9uKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8g
dGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAg
IGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAg
ICAgaWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuIHRpbWVS
YW5nZXM7CkBAIC0xMTM3LDcgKzExMzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vz
c2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3NpbwogICAg
IGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25B
VkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CiAKICNlbGlmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQpAQCAtMTY0MSw2ICsxNjQzLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpw
ZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUs
IHZvaWQKIH0KIAogc3RydWN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9w
cm9wZXJ0eU5hbWU7CiAgICAgdm9pZCogbV9jb250ZXh0OwogCkBAIC0xNzA4LDcgKzE3MTEsNyBA
QCB2b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6Om5v
dGlmaWNhdGlvbkNhbGxiYWNrKGlmPSVkKSAlcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihvYnNlcnZlciksIG5vdGlmaWNhdGlvbk5hbWUpOwogI2VuZGlmCiAKLSAgICBhdXRvIG5vdGlm
aWNhdGlvbkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4o
cHJvcGVydHlOYW1lLCBvYnNlcnZlcik7CisgICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gbWFr
ZVVuaXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIp
OwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBub3Rp
ZmljYXRpb25EYXRhLnJlbGVhc2UoKSwgcHJvY2Vzc05vdGlmaWNhdGlvbik7CiB9CkBAIC0xNzg1
LDYgKzE3ODgsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1l
JiB0aW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVG9sZQogCiAjaWYgSEFWRShBVkZPVU5E
QVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxF
X09VVFBVVF9TVVBQT1JUKQogc3RydWN0IExlZ2libGVPdXRwdXREYXRhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fYXR0
cmlidXRlZFN0cmluZ3M7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fc2FtcGxlczsKICAg
ICBNZWRpYVRpbWUgbV90aW1lOwpAQCAtMTgzMyw3ICsxODM3LDcgQEAgdm9pZCBBVkZXcmFwcGVy
OjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdp
YmxlT3V0cHUKIAogICAgIEFTU0VSVChsZWdpYmxlT3V0cHV0ID09IHNlbGYtPm1fbGVnaWJsZU91
dHB1dCk7CiAKLSAgICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxM
ZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMs
IFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0KTsKKyAgICBhdXRvIGxlZ2libGVP
dXRwdXREYXRhID0gbWFrZVVuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmlu
Z3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250
ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
bGVnaWJsZU91dHB1dERhdGEucmVsZWFzZSgpLCBwcm9jZXNzQ3VlKTsKIH0KQEAgLTE4NDEsNiAr
MTg0NSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNv
bnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1CiAKICNpZiBIQVZFKEFWRk9VTkRBVElP
Tl9MT0FERVJfREVMRUdBVEUpCiBzdHJ1Y3QgTG9hZFJlcXVlc3REYXRhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3RSZWY+IG1fcmVxdWVzdDsKICAgICB2b2lkKiBtX2NvbnRleHQ7CiAKQEAg
LTE5MjYsNyArMTkzMSw3IEBAIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91
bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzCiAKICAgICBMT0coTWVk
aWEsICJBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1
ZXN0ZWRSZXNvdXJjZSglcCkiLCBzZWxmKTsKIAotICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0
KTsKKyAgICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IG1ha2VVbmlxdWU8TG9hZFJlcXVlc3REYXRh
Pihsb2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIGxvYWRSZXF1ZXN0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NT
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOwogCkBAIC0xOTUzLDcgKzE5NTgsNyBAQCBQ
bGF0Zm9ybUxheWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAvLyBDcmVhdGUgYSBQbGF0Zm9ybUNBTGF5ZXIgc28gd2UgY2FuIHJlc2l6ZSB0
aGUgdmlkZW8gbGF5ZXIgdG8gbWF0Y2ggdGhlIGVsZW1lbnQgc2l6ZS4KLSAgICBtX2xheWVyQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CisgICAgbV9sYXllckNs
aWVudCA9IG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOwogICAgIGlmICghbV9sYXllckNs
aWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMTRhZjFhMjdmMjZiZDFhZDYwMjg2
MDRhNTc1MmYwZGY5YThkZjUyLi43ZGUxNGMyNTcxZjdkMzhlZWNiYjM0OGZkYTNjNzRhNDNkZWI4
MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tCkBAIC0zMywxMyArMzMsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJ
dGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpOwogfQogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1faW1w
bChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCisg
ICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24p
KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNTksNyArNTksNyBA
QCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhB
VlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCBBVlBsYXllckl0ZW1UcmFj
ayogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogfQogCiBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJh
Y2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwogfQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFz
c2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpOwogfQogCkBAIC04Nyw3ICs4Nyw3IEBAIEFWQXNzZXRUcmFjayogQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjphc3NldFRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYg
b3B0aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBlYzBkMGVkZGJmNzNiZWVkYTY3
MTdiN2E1MThjNzMyMTI2MDk1YWUyLi5kZjUyMjZhNGVhMDM2ZTU2ZmEyNTM5YTYyNzYyYTIzOGFl
NzBlMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNr
LCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6
bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9p
bXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwg
bV9wYXJlbnQocGFyZW50KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwpAQCAt
NTIsNyArNTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAg
bV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
ayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0
cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIy
YWFmZWM3YjgzNDI3YjgxMzBhN2MwNDNmOGY2NzIwODM0Y2NhNDcuLjVkOGUyNTA3NDcwYmM3YTQ5
OTk1NWM5ODFiMTc2ZmY0NDRmYmM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaApAQCAtMzksNyArMzksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7
CiAKLWNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIDogcHVibGljIExlZ2FjeUNETVNl
c3Npb24sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4g
eworY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgZmluYWwgOiBwdWJsaWMgTGVnYWN5
Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyog
cGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAyNGIyYTE3ZDk3N2ViYmYwNTMzNTBj
NTVkOWQ0MDlhNjEyNzk2MzhmLi4zOWVhOGU1MTEzNjMyYWU3NGJmNTM2NGE4ZDFiMDI2OTcyMjFh
YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQy5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiAKIGNsYXNzIENETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwg
fkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU0ODIwZDIyNTE5N2RiN2Y5YmU3M2Y0ZmJk
MmNlYzg3OGY5YTgwMDguLjMyNmRhZGJiMTdkMDg5MTE3MGViNzU0NTNiNjM0OGQ3ZmU4Mzk3ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAt
NDEyLDcgKzQxMiw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRh
dGEoKQogICAgICAgICB8fCAhbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkKICAg
ICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkudmFsdWUoKSAhPSBm
aW5hbFRyYW5zZm9ybQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXplKCkg
IT0gc2l6ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNpemUs
IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJ
bWFnZUNvbXBhdGlibGU6Olllcyk7CisgICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBt
YWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0p
LCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
OjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwogCiAgICAgbV9zaXplID0gZXhwYW5kZWRJbnRT
aXplKG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJvdGF0ZWRTaXplKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KaW5kZXggNWNkMjI0MDNhYTJjMmVmNjIyZTMwMGQwMDc0MWZjMGMzMzM5YmYz
Ni4uN2ZjMDE4YWU1OGVhZjUyNTYwZGVlNmIzNGExYTk3Y2U3ZDAxZDIxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEK
ICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFD
YWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAg
IEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7
CiB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIAogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uKHBsYXllcikKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0
ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAs
IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQogICAgICwgbV9vYmpjT2JzZXJ2ZXIo
YWRvcHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBsYXllcjpt
YWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQpA
QCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1l
UmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0
byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBp
ZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAgLTE4OTIs
NyArMTg5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBk
YXRlUm90YXRpb25TZXNzaW9uKCkKICAgICAgICAgJiYgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+
c2l6ZSgpID09IG5hdHVyYWxTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ltYWdlUm90
YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihX
VEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8z
MkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7
CisgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNl
c3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZv
cm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRp
YmxlOjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMjIxNiw3ICsyMjE2
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0
SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogI2Vsc2UKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRy
aWJ1dGVzID0gbmlsOwogI2VuZGlmCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBt
YWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0y
MjY1LDcgKzIyNjUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHNpemVfdCBoZWln
aHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAog
ICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29w
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwor
ICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29w
aWVyQ1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29w
eUltYWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBo
ZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KQEAgLTIzMzAsNyAr
MjMzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzCiB7CiAgICAgaWYgKCFrZXlTeXN0ZW1J
c1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0
aGlzLCBjbGllbnQpOworICAgIGF1dG8gc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVudCk7CiAgICAgbV9zZXNzaW9uID0gbWFrZVdlYWtQ
dHIoKnNlc3Npb24pOwogICAgIHJldHVybiBXVEZNb3ZlKHNlc3Npb24pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAppbmRleCA3Mzk2ZTViMWI0MzExOThlNWU2MGQ4ZmNkMDYzNTliYjI3Y2Y0
OWY3Li5hMWRkMGY5MDkxZmIyODY0NjhkYmUwYWUxMGNlOGIzYzE0MmMwYmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaApAQCAtMjY4LDYgKzI2OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQwogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDOwogCiAgICAgc3RydWN0IFBlbmRpbmdTZWVrIHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nU2Vlayhjb25zdCBNZWRpYVRp
bWUmIHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0
IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpCiAgICAgICAgICAgICA6IHRhcmdldFRpbWUo
dGFyZ2V0VGltZSkKICAgICAgICAgICAgICwgbmVnYXRpdmVUaHJlc2hvbGQobmVnYXRpdmVUaHJl
c2hvbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZjE5NTE1NmQ4Y2YyMjU2ZjYw
ZjlmNTUzMjQxMjllODUyM2Q5ZDM4Yi4uOWMwYWVmNjE5YWRjMmEzMThmMGRiN2QyZTM4NjdjMjFk
ZmMzMWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTM3LDcgKzEzNyw3IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKE1lZGlhCiAgICAgLCBtX3BsYXlpbmcoMCkKICAgICAsIG1fc2Vl
a2luZyhmYWxzZSkKICAgICAsIG1fbG9hZGluZ1Byb2dyZXNzZWQoZmFsc2UpCi0gICAgLCBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
cihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAgICAgLCBt
X2VmZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXIoRWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5l
cjo6Y3JlYXRlKCp0aGlzLCBbbV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIo
KSkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdAogICAgIGlmICgh
aXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRp
YVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNh
Y2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFu
Y2UoY29uc3QgTWVkaWFUaW1lJiB0aQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ0aW1l
ID0gIiwgdGltZSwgIiwgbmVnYXRpdmVUaHJlc2hvbGQgPSAiLCBuZWdhdGl2ZVRocmVzaG9sZCwg
IiwgcG9zaXRpdmVUaHJlc2hvbGQgPSAiLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBtX3Nl
ZWtpbmcgPSB0cnVlOwotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRocmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOworICAg
IG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRo
cmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgaWYgKG1fc2Vla1RpbWVyLmlzQWN0
aXZlKCkpCiAgICAgICAgIG1fc2Vla1RpbWVyLnN0b3AoKTsKQEAgLTU0Myw3ICs1NDMsNyBAQCBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnJlYWR5U3RhdGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWthYmxlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1p
bk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwg
bWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKQEAgLTU1
OCw3ICs1NTgsNyBAQCBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjptaW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6YnVm
ZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVk
aWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNv
dXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRpZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAKICAgICBpZiAo
IW1fcmdiQ29uZm9ybWVyKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IEB7IChfX2JyaWRn
ZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVs
Rm9ybWF0VHlwZV8zMkJHUkEpIH07Ci0gICAgICAgIG1fcmdiQ29uZm9ybWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KWF0dHJpYnV0ZXMpOworICAgICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxC
dWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsK
ICAgICB9CiAKICAgICBtX2xhc3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZy
b21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CkBAIC02NDksNyArNjQ5LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmEKICAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1
ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlk
ZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRl
b1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4
dCk7CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZv
cm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRU
ZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBl
LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0K
aW5kZXggY2EzYjExMzU1MmIzODg1Yzk5OTc3ZGFlMmEyMWVhMTY1NzdlZGE4MC4uOWRlZWU0NmYy
Y2EyNDUyOTUzZGY1Y2E4OGJiNjlmODE4ZTdlNGU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQpAQCAtMTgzLDcgKzE4Myw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKE1lZGlhCiAgICAgOiBt
X3BsYXllcihwbGF5ZXIpCiAgICAgLCBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyKGFkb3B0TlMoW1tX
ZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCiAgICAgLCBtX2Nsb2NrKFBBTDo6Q2xvY2s6OmNyZWF0ZSgpKQotICAgICwgbV92
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxv
Z2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVu
dGlmaWVyKCkpCkBAIC0yMjAsNyArMjIwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUo
KSkKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5
ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgICAg
IHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiB9CiAKQEAgLTEwNTQsMTIgKzEwNTQsMTIgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YnVmZmVyZWQo
KSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNzMsNyArMTA3
Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVD
dXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9pbWFnZVBh
aW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVs
QnVmZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
PigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBp
eGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEp
IH0pOworICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VV
bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilA
eyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTog
QChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIAogICAgIEFTU0VSVChtX2ltYWdlUGFp
bnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcik7CiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhl
bEJ1ZmZlckNvbmZvcm1lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuY3BwCmluZGV4IGM4NzFjNTk0ODM1NTA4NTcxODJjN2EyNGQ1NTM0
Yjg1YTVkNGVmN2UuLjI5NDgzYmE1ZTk4ZDk1ZmE4ZTVlYzlhNmExMGJmNjQxYWFlMzU1OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpD
LmNwcApAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRy
YWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2so
KTsKIH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akMoQVZBc3NldFRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVl
PEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRp
ZXNGcm9tVHJhY2soKTsKIH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakMoTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCi0gICAg
OiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRp
b24pKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
b3B0aW9uKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zy
b21UcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVt
VHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9
IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0
UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIEFWUGxheWVySXRl
bVRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiAKIHZv
aWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAq
dHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9
CiAKQEAgLTg4LDcgKzg4LDcgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OmFzc2V0VHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVk
aWFTZWxlY3Rvbk9wdGlvbihNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKIHsK
LSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KG9wdGlvbik7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPihvcHRpb24pOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGZjYzI0OTZhMTM1YWE0ZjczYThmZTU0OGQxNGUwYzgw
MDA0YWQxYjAuLjk3NTZjZmZhZmQ4YzNmNmZlM2I0N2EyMzMzNzFiNzRkZWM5OGQwNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJlbnQocGFyZW50
KQogICAgICwgbV90cmFja0lEKC0xKQogICAgICwgbV9zZWxlY3RlZChmYWxzZSkKQEAgLTU2LDcg
KzU2LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQ
cm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwor
ICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
OwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCAxNzFmMjc3MmM5NGE2OWNkYTczNDkzY2M5YzhjNzg3OGIwMDEwOGRkLi44NzY1MzQ0NTIwMjRl
NjE2NTE0MTdhMDRhMGQ5NDUwNThhOTU0MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE2MzYsMTIg
KzE2MzYsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMo
Q29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25zdCBUcmEKICAgICBpZiAodXNlc0Rpc3BsYXlM
aXN0RHJhd2luZygpICYmIG1fZHJhd3NDb250ZW50ICYmICghbV9oYXNFdmVyUGFpbnRlZCB8fCBo
YWREaXJ0eVJlY3RzKSkgewogICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShEaXNwbGF5
TGlzdFJlY29yZFN0YXJ0LCBEaXNwbGF5TGlzdFJlY29yZEVuZCk7CiAKLSAgICAgICAgbV9kaXNw
bGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwor
ICAgICAgICBtX2Rpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q+KCk7CiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRzT3Jp
Z2luKCksIHNpemUoKSk7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoWyZdKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3Jh
cGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4
dCwgKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBB
ZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pOwogICAgICAgICBwYWludEdyYXBoaWNzTGF5
ZXJDb250ZW50cyhjb250ZXh0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpKTsKICAg
ICB9CkBAIC0yODY3LDcgKzI4NjcsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5n
VHJhbnNmb3JtQW5pbWF0aW9uKCkgY29uc3QKIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVM
YXllckFuaW1hdGlvbnMoKQogewogICAgIGlmICghbV9hbmltYXRpb25zKQotICAgICAgICBtX2Fu
aW1hdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKKyAgICAgICAg
bV9hbmltYXRpb25zID0gbWFrZVVuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24m
IGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1YkluZGV4LCBTZWNvbmRzIHRpbWVPZmZzZXQpCkBA
IC0zOTAzLDcgKzM5MDMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXll
cnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPgogICAgIGNvbnRlbnRz
TGF5ZXIgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQotICAgICAgICBtX2xh
eWVyQ2xvbmVzID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsb25lcz4oKTsKKyAgICAgICAgbV9s
YXllckNsb25lcyA9IG1ha2VVbmlxdWU8TGF5ZXJDbG9uZXM+KCk7CiAKICAgICBwcmltYXJ5TGF5
ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9sYXllci5nZXQoKSwgbV9sYXllckNsb25l
cy0+cHJpbWFyeUxheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKICAgICBzdHJ1Y3R1cmFsTGF5ZXIg
PSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5
ZXJDbG9uZXMtPnN0cnVjdHVyYWxMYXllckNsb25lcywgY2xvbmVMZXZlbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmlu
ZGV4IDNhYzRjMWUzMmExNTQ4ZDU4YzY5MTExN2NjNjlhMjljNGRjZjBlMWEuLmM0YjJjOWMzNDcw
ODBhNmI3Yzk2ZDY3MDJmNGE0ZDhhMzBjN2Y2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTcsNiArMTU3
LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1Ymxp
YyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIEZsb2F0U2l6ZSBwaXhlbEFsaWdubWVudE9m
ZnNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7IH0K
IAogICAgIHN0cnVjdCBDb21taXRTdGF0ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgdW5zaWduZWQgdHJlZURlcHRoIHsgMCB9OwogICAgICAgICB1
bnNpZ25lZCB0b3RhbEJhY2tkcm9wRmlsdGVyQXJlYSB7IDAgfTsKICAgICAgICAgYm9vbCBhbmNl
c3RvckhhZENoYW5nZXMgeyBmYWxzZSB9OwpAQCAtMzA5LDYgKzMxMCw3IEBAIGNsYXNzIEdyYXBo
aWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVy
Q2xpZW50IHsKICAgICB0eXBlZGVmIHVuc2lnbmVkIENvbXB1dGVWaXNpYmxlUmVjdEZsYWdzOwog
ICAgIAogICAgIHN0cnVjdCBWaXNpYmxlQW5kQ292ZXJhZ2VSZWN0cyB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0
OwogICAgICAgICBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0OwogICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBhbmltYXRpbmdUcmFuc2Zvcm07CkBAIC0zMjgsNiArMzMwLDcgQEAgY2xhc3MgR3Jh
cGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQgewogCiAgICAgLy8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVl
IGZvciByZXBsaWNhIGxheWVycy4KICAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heFJlcGxpY2FEZXB0aCA9IDE2OwogICAgICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBl
IHsgQ2hpbGRCcmFuY2ggPSAwLCBSZXBsaWNhQnJhbmNoID0gMSB9OwogICAgICAgICBSZXBsaWNh
U3RhdGUoUmVwbGljYUJyYW5jaFR5cGUgZmlyc3RCcmFuY2gpCkBAIC01NzksNiArNTgyLDcgQEAg
Y2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQgewogCiAgICAgLy8gUmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3Vy
IGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJzLgogICAgIHN0cnVjdCBMYXllckNsb25lcyB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJN
YXAgcHJpbWFyeUxheWVyQ2xvbmVzOwogICAgICAgICBMYXllck1hcCBzdHJ1Y3R1cmFsTGF5ZXJD
bG9uZXM7CiAgICAgICAgIExheWVyTWFwIGNvbnRlbnRzTGF5ZXJDbG9uZXM7CkBAIC02MDgsNiAr
NjEyLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1
YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPj4gQW5pbWF0aW9uc1RvUHJvY2Vzc01h
cDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4+IEFuaW1hdGlvbnNNYXA7CiAgICAgc3RydWN0IExheWVyQW5pbWF0aW9ucyB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgVmVjdG9yPExheWVy
UHJvcGVydHlBbmltYXRpb24+IHVuY29taXR0ZWRBbmltYXRpb25zOwogICAgICAgICBBbmltYXRp
b25zVG9Qcm9jZXNzTWFwIGFuaW1hdGlvbnNUb1Byb2Nlc3M7CiAgICAgICAgIEFuaW1hdGlvbnNN
YXAgcnVubmluZ0FuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggNGQ2NGMyYzRiMTliMzFiODA1
NGMxYmM0MWFjMDIyNTczYmVmZjU2Mi4uMzA1ZWZkMzMzYmQ2MTFjNmVmNWU0YzFiMjYyMjg4NzUy
NTZmMjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcgVGlsZUNvbnRy
b2xsZXI6Onpvb21lZE91dFRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCkKIFRpbGVDb250cm9s
bGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RQbGF0Zm9ybUxheWVyKQog
ICAgIDogbV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1MYXllcikKICAgICAsIG1fZGV2aWNl
U2NhbGVGYWN0b3Iob3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZXZpY2VT
Y2FsZUZhY3RvcigpKQotICAgICwgbV90aWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlk
PigqdGhpcykpCisgICAgLCBtX3RpbGVHcmlkKG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkK
ICAgICAsIG1fdGlsZVJldmFsaWRhdGlvblRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRp
bGVSZXZhbGlkYXRpb25UaW1lckZpcmVkKQogICAgICwgbV90aWxlU2l6ZUNoYW5nZVRpbWVyKCp0
aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVTaXplQ2hhbmdlVGltZXJGaXJlZCwgdGlsZVNpemVV
cGRhdGVEZWxheSkKICAgICAsIG1fbWFyZ2luRWRnZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNT
Y2FsZShmbG9hdCBzY2FsZSkKICAgICBpZiAobV96b29tZWRPdXRDb250ZW50c1NjYWxlICYmIG1f
em9vbWVkT3V0Q29udGVudHNTY2FsZSA9PSB0aWxlR3JpZCgpLnNjYWxlKCkgJiYgdGlsZUdyaWQo
KS5zY2FsZSgpICE9IHNjYWxlICYmICFtX2hhc1RpbGVzV2l0aFRlbXBvcmFyeVNjYWxlRmFjdG9y
KSB7CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQgPSBXVEZNb3ZlKG1fdGlsZUdyaWQpOwog
ICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT5zZXRJc1pvb21lZE91dFRpbGVHcmlkKHRydWUp
OwotICAgICAgICBtX3RpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMp
OworICAgICAgICBtX3RpbGVHcmlkID0gbWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOwogICAg
ICAgICB0aWxlR3JpZHNDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC01MDAsNyArNTAwLDcgQEAgRmxv
YXRSZWN0IFRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9yU2Nyb2xsaW5n
KGNvbnN0IEZsb2F0UmVjdCYgY28KICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
IW1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSkKLSAgICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9j
aXR5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yaWNhbFZlbG9jaXR5RGF0YT4oKTsKKyAg
ICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSA9IG1ha2VVbmlxdWU8SGlzdG9yaWNh
bFZlbG9jaXR5RGF0YT4oKTsKIAogICAgICAgICBtX3ZlbG9jaXR5ID0gbV9oaXN0b3JpY2FsVmVs
b2NpdHlEYXRhLT52ZWxvY2l0eUZvck5ld0RhdGEoc2Nyb2xsT2Zmc2V0LCBjb250ZW50c1NjYWxl
LCBNb25vdG9uaWNUaW1lOjpub3coKSk7CiAgICAgfTsKQEAgLTY4NSw3ICs2ODUsNyBAQCBJbnRS
ZWN0IFRpbGVDb250cm9sbGVyOjp0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3QKIFBsYXRmb3JtQ0FM
YXllciogVGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIoKQogewog
ICAgIGlmICghbV9jb3ZlcmFnZU1hcCkKLSAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CisgICAgICAgIG1fY292ZXJhZ2VNYXAg
PSBtYWtlVW5pcXVlPFRpbGVDb3ZlcmFnZU1hcD4oKnRoaXMpOwogCiAgICAgcmV0dXJuICZtX2Nv
dmVyYWdlTWFwLT5sYXllcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpp
bmRleCBhNDg1MjNjZjUxNzZiMzFmMmFjYzQ5ODRiMmVjZDhlMmM4NzRmNjA3Li4zNmFjMmY3ODRi
MDA2ZmY5YzcwM2Y0MWU3YmZmNjg3YTFhYTRjNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6
OmNvbW1vbkluaXQoKQogICAgICAgICBXZWJUaWxlZEJhY2tpbmdMYXllciogdGlsZWRCYWNraW5n
TGF5ZXIgPSBzdGF0aWNfY2FzdDxXZWJUaWxlZEJhY2tpbmdMYXllcio+KG1fbGF5ZXIuZ2V0KCkp
OwogICAgICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSBbdGlsZWRCYWNraW5n
TGF5ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6dGhpc107CiAKLSAgICAgICAgbV9jdXN0b21TdWJs
YXllcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9s
bGVyLT5jb250YWluZXJMYXllcnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5
ZXJzKCkpOwogICAgIH0KIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTk0Nyw3
ICs5NDcsNyBAQCBGbG9hdFJvdW5kZWRSZWN0IFBsYXRmb3JtQ0FMYXllckNvY29hOjpzaGFwZVJv
dW5kZWRSZWN0KCkgY29uc3QKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCiB7CiAgICAgQVNT
RVJUKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNoYXBlTGF5ZXIpOwotICAgIG1fc2hhcGVSb3Vu
ZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3Qp
OworICAgIG1fc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4o
cm91bmRlZFJlY3QpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgUGF0
aCBzaGFwZVBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCmluZGV4IGMxOTFm
MzkxYzY0NTcyY2M5OTU1YTQ3YzZjYjdiOTAwNzg2NzI2MzkuLmIzZTIxZjY0MGFlOTFhMGQxZjU5
Mzg0NmE4NTBmZWMyMmZhNzhhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1t
CkBAIC02Miw3ICs2Miw3IEBAIC0gKGlkKWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCiAtIChXZWJD
b3JlOjpUaWxlQ29udHJvbGxlciopY3JlYXRlVGlsZUNvbnRyb2xsZXI6KFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllciopcm9vdExheWVyCiB7CiAgICAgQVNTRVJUKCFfdGlsZUNvbnRyb2xsZXIpOwot
ICAgIF90aWxlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRy
b2xsZXI+KHJvb3RMYXllcik7CisgICAgX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAgICByZXR1cm4gX3RpbGVDb250cm9s
bGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDE1ZDRlNDZi
MDZjNzZjMTdmMzQwNTEzOWM2Yzk3OWMxMDE3YjM2OTYuLmQ2YTdjMTY4ZjBlNDQxZmQ3ZDI5MGZj
NGZlMzEzNjBjNTg1ZDU2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNTIs
NyArMTUyLDcgQEAgUGxhdGZvcm1DQUxheWVyV2luOjpQbGF0Zm9ybUNBTGF5ZXJXaW4oTGF5ZXJU
eXBlIGxheWVyVHlwZSwgUGxhdGZvcm1MYXllciogbGF5ZXIKICAgICBpZiAodXNlc1RpbGVkQmFj
a2luZ0xheWVyKCkpIHsKICAgICAgICAgaW50ZXJuID0gbmV3IFdlYlRpbGVkQmFja2luZ0xheWVy
V2luKHRoaXMpOwogICAgICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSByZWlu
dGVycHJldF9jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyV2luKj4oaW50ZXJuKS0+Y3JlYXRlVGls
ZUNvbnRyb2xsZXIodGhpcyk7Ci0gICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5
ZXJzKCkpOworICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1D
QUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKICAgICB9IGVs
c2UKICAgICAgICAgaW50ZXJuID0gbmV3IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKHRoaXMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAppbmRleCAyMjRkOGJiZWVk
Mzk5MmFlZWZjOTMyYTFiZWU4MGRjNjNmY2EyZjhiLi5jNWE3M2U4ZDNhZTliYjQ5YTk2YmUyN2Y1
MzI3ZTA2YzA2MjE0ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAK
QEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpzZXRCb3Jk
ZXJDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCiBUaWxlQ29udHJvbGxlciogV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdExh
eWVyKQogewogICAgIEFTU0VSVCghbV90aWxlQ29udHJvbGxlcik7Ci0gICAgbV90aWxlQ29udHJv
bGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CisgICAg
bV90aWxlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7
CiAgICAgcmV0dXJuIG1fdGlsZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAppbmRleCBjMzFjYzZlMzhiYTU5OWM5ZmI4MjZhYTAzOTc2YjIwNTFjYzEx
NWJlLi4xOGYzNDA1MGFhOWUzYjc0MzRhNjI3YTA3N2NkMmNjZjJmOTljOWZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC00MSw2ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5n
czxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoKICAgICBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5jcHAKaW5kZXggNTBiN2Q5YzIzYzAxYWJmYzNhMDUxNzhjMTA1MjUxMDcwZjE1
ZDZkYi4uMDRmMmE5ZmY1NDY5YWE1YmEyNGQxNDk1NjU0YjYwZjBiYzQzZDJhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250
ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4o
Y29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU0LDE0ICs1
NCwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbY2Fpcm9Db250ZXh0XShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9D
b250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKICAg
ICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJh
bnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAg
ICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAg
bV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0
KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7
CkBAIC02OSw5ICs2OSw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhCiAKIEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY2Fpcm9fdCogY2Fpcm9Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1w
bChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9v
d25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJv
PihjYWlyb0NvbnRleHQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVl
PFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQogICAgICwgbV9wbGF0Zm9ybUNv
bnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtl
X3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0
KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdy
YXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5
bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKaW5kZXggOTllMTgzY2M3MDU2MDNkMjM0
ZThlOGVkOWZkNjY5ZDU5NmZiZWVhMi4uMDgzNzI1ZDZmZDM4MzI2MDdhYTc2MWZmOWY2ODM1OTA2
NjRjOTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVDYWlyby5oCkBAIC00NSw2ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgIDogcGxhdGZvcm1Db250
ZXh0KHBsYXRmb3JtQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggMTM3NDE1ZjNl
YWJmNTMyMWZjMzVjYWMyMGUxZTEyNzg0ZDc1MjIzMy4uZTAxZTYwYjllZWU3YmExODM5N2E2M2Vm
NGExNzY2N2ZmZGM0YTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE2NSw3ICsxNjUs
NyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAg
ICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygp
KTsKLSAgICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBt
X3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKKyAgICAgICAg
ICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKICAgICAgICAgICAgIH07CiAjaWYgVVNFKE5J
Q09TSUEpCiAgICAgICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsK
QEAgLTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogCiAgICAgUmVmUHRy
PGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0
KCkpKTsKICAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwotICAg
IG1fZGF0YS5tX2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29u
dGV4dCkpOworICAgIG1fZGF0YS5tX2NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRm
b3JtQ29udGV4dCkpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaAppbmRleCA4MGVjNzI1OGI2NDIxZmJmOThiM2ViNTUxM2QwY2VhZmJlN2FkZmRjLi45
OWM4MmUyZTZlOTkzMWM4ZmVhOWRlMjE1ZDBmMzZjNzE5YzM4OTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29u
dGV4dENhaXJvLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IFNoYWRvd1N0YXRlOwogLy8gY29k
ZSBmcm9tIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQuCiAKIGNsYXNz
IFBsYXRmb3JtQ29udGV4dENhaXJvIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNvbnRleHRDYWlybyk7CiBwdWJsaWM6CiAg
ICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8oY2Fpcm9fdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4MGI1ZDRm
YmQyNzJkZWU0MzViNWNlN2MwODRlZTM1OWE1MDFlZDY0Li5kMzVmZjBlZmY5NzE5NTBlZWQxZTNm
ZDAyNmJjZGE5ZWFmYTM0ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ0dDb2xvclNwCiAgICAgICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZGF0YS5jb250ZXh0ID0g
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAg
ICAgY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCmluZGV4IDcxODhlNDM3ZDJjODg2NzI2ZDNkM2Y0ZGViNDFiZjI1Y2IwNmIzODAuLmZmN2Zj
NjYzNjhiZDJjNjYwYzQ4YzEwNjc0NWY5YmE4OWIzZGRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKQEAgLTEzNzEsNyArMTM3MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1E
YXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAKICAg
ICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3Nh
cnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIo
KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQu
Z2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlw
dGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnRE
ZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
b250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9u
LndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiB9
CiAKIHR5cGVkZWYgSGFzaFNldDxSZXRhaW5QdHI8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJP
YmplY3RIYXNoPENURm9udFJlZj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaFRyYWl0czxDVEZv
bnRSZWY+PiBGYWxsYmFja0RlZHVwU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcAppbmRleCAxY2UwYzk0N2UxN2U5YTY4ZWVhZDNhNGQ1N2I1OWQ4
ZmExNmNlZjI5Li4wZGU5MzRhN2IzODQxMDBlZWI3NmQ3N2Y0NTZhMTgyZmJiYWJjZWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMTEy
LDcgKzExMiw3IEBAIEZvbnRSYW5nZXMgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6
Zm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAKICAgICAgICAgYXV0byBbc3lu
dGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lz
KGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xk
T2JsaXF1ZVBhaXIoKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxh
dGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9u
dERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQo
KSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3lu
dGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlw
dGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkp
OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dDNEQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCmluZGV4IGZlZWFjZDRkMzI2NjA1ZjA0
MjkxY2U5YzMxZWVjYmJlOWNiMjJiOTIuLjJjM2NhYzBhYWEwNTYzYWYxZWQ0YjMzOTM4Njk4OTgz
MjIwNTdjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtOTIsNiArOTIs
NyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQgPSA1OwogLy8g
RklYTUU6IFRoaXMgY2xhc3MgaXMgY3VycmVudGx5IGVtcHR5IG9uIE1hYywgYnV0IHdpbGwgZ2V0
IHBvcHVsYXRlZCBhcwogLy8gdGhlIHJlc3RydWN0dXJpbmcgaW4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTAzIGlzIGRvbmUKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKikgeyB9CiAgICAgCkBA
IC0xODEsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QgY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3IKIAogR3JhcGhpY3NDb250
ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRy
cywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxl
LCBHcmFwaGljc0NvbnRleHQzRCogc2hhcmVkQ29udGV4dCkKICAgICA6IG1fYXR0cnMoYXR0cnMp
Ci0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU+KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlPih0aGlzKSkKIHsKICNpZiAhVVNFKEFOR0xFKQogI2lmIFVTRShPUEVOR0xfRVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0KaW5kZXggNWM3MzNlM2JhZDFlOWQzZDI1YzFlZDU3ZjVhY2RmZmYzYTRjYjk5Zi4uMzg3NWZj
ZmQzMDZkZjg2ZDM0NzRlZTE4NjBiYTU5MGEzYThiYzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzI2LDcgKzMy
Niw3IEBAIEdyYXBoaWNzQ29udGV4dCYgSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0NvbnRleHQo
KQogICAgIGlmIChtX2dyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuICptX2dyYXBoaWNz
Q29udGV4dDsKIAotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHQ+KGVuc3VyZVBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBtX2dyYXBoaWNzQ29u
dGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQo
KSk7CiAgICAgbV9ncmFwaGljc0NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KHRydWUp
OwogCiAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hLm1tCmluZGV4IDZlNjBlYmYxZmZhNjU5MGY2ZjM0ZTUyOGEzZTMz
NTgzMThiNWViZGYuLjI3ODc0NjgxNjZmZWYxYjVmNjQ2MjFmZWI1YmI1ZTUwZDlkNmRhMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFj
a1JlcHJlc2VudGF0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQpAQCAtMTA4LDcgKzEw
OCw3IEBAIEBlbmQKIAogc3RkOjp1bmlxdWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xp
ZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrUmVw
cmVzZW50YXRpb25Db2NvYT4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOwogfQogCiBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hKFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKaW5kZXggYWRjOTdh
ZGMxZmEyNDU4MDk5MDAzYzNkZTljMGFhMzhkODc2MTg3ZC4uNjAwMWJiNzBhMTAwNDE3NDQxMDky
MTM2ZjNmZTViNjE3NjJjYjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaApAQCAtMzYsNyAr
MzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKiBDVlBpeGVsQnVmZmVy
UG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUIHsKK2NsYXNzIEltYWdlUm90YXRpb25TZXNzaW9uVlQgZmluYWwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBSb3RhdGlvblByb3BlcnRp
ZXMgewogICAgICAgICBib29sIGZsaXBYIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yu
aAppbmRleCBkZDEzNTY5ZTA4MWExYjM5OWRjYmFiZjNmNWU4ODM3Zjg0YzJhYjRlLi5jZDViNmZj
YzAwZDc3NDY0ZTZlNmJlNzQ2MzExZTEzZDBkMjdlMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vi5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxC
dWZmZXJSZWY7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9y
bWVyQ1YgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YoQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOwogICAgIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1Yu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgK
aW5kZXggODFhYjJmOTI0ZGFmMjZjZGEyMmM1ZTIwMDc3NmMyMTgwMjAyM2EzYi4uYzlmZjQxOWQ0
M2JlNDVmNDA0NDAzMDQwYWRkOGM0ZDA0NDAyYmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCkBAIC00NCw2ICs0NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFz
cyBUZXh0dXJlQ2FjaGVDViA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0dXJlQ2FjaGVDVj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJl
Q2FjaGVDVi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVD
YWNoZUNWLm1tCmluZGV4IDU3N2VjMjg0NjM5MmE3MjE1ZDk5OGFhMzEwZDNkOGQ2MzNmNWYxZWMu
LjlmMWY2NmIzYmQ1OWY1OWIxYWQzY2I3MDVjODU2NTQ0MjI3ZWMzOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCkBA
IC01MCw3ICs1MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gVGV4dHVyZUNh
Y2hlQ1Y6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCYgY29udGV4CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+IHN0cm9uZ0NhY2hlID0g
YWRvcHRDRihjYWNoZSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZUNhY2hl
Q1Y+KGNvbnRleHQsIFdURk1vdmUoc3Ryb25nQ2FjaGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUZXh0dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOwogfQogCiBU
ZXh0dXJlQ2FjaGVDVjo6VGV4dHVyZUNhY2hlQ1YoR3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleHQs
IFJldGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiYmIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgK
aW5kZXggNDNhOTZkYzE0MzY1ODRhZmE3NzE4NzhiMTk3ZjJhOTU0N2RjY2NlZS4uOWQzOTJlYTA1
OGIzNjAwOGNhNTY5Y2E0NGZkNzEyODgzYjBkNmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCkBA
IC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVDYWNoZUNW
OwogCiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgVmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0
M0QmKTsKICAgICB+VmlkZW9UZXh0dXJlQ29waWVyQ1YoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA4ZmVhYTJmNWQ3NTMyOGU0MzZiZjlkODhiOGRjMDVi
YWMxYzJlMWYzLi5jNTYxZjVmOWVhYjk5NjIxMWE4YjIyMjE5Nzc2ZDY4ZjM5ZTE2NDQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBib29sCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxp
c3Q+IHJlcGxheUxpc3Q7CiAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpCi0gICAg
ICAgIHJlcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0PigpOworICAgICAg
ICByZXBsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKIAogICAgIHNpemVfdCBu
dW1JdGVtcyA9IG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1JdGVtczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNTU3
YjhlMDA4NjJkNmFiYzU4MDRiNDE0MzIxMDA4MGE4MzUxNmQxZS4uMzBiYjQ4Y2M4ZjBjNDk1NDQ4
YWI2NWY2ODExNzJjY2M2YmNhNTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9j
dW1lbnRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlcgogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCFTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UobV91cmwsICpjYWNo
ZWRSZXNvdXJjZUxvYWRlci5kb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlPihtX3VybCk7CisgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9
IG1ha2VVbmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKICAgICBtX2Nh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRp
b25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDY1NjNjOGJmZWVi
MzViYTUzMjdmNDg5NjFlZDYyMWZlM2Q1M2FhNDEuLjcxYTRhYjJmNDgyNWYxYTU0MzE5MTgwMzRi
MzUzMWVjZGE4YTBmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTQ1NSw3
ICs0NTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpj
cmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgICAgICAgICAgRmNQYXR0ZXJu
QWRkU3RyaW5nKHJlc3VsdFBhdHRlcm4uZ2V0KCksIEZDX0ZPTlRfVkFSSUFUSU9OUywgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBGY0NoYXI4Kj4odmFyaWFudHMudXRmOCgpLmRhdGEoKSkpOwogICAg
IH0KICNlbmRpZgotICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGb250
UGxhdGZvcm1EYXRhPihmb250RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERl
c2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQs
IHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKKyAgICBh
dXRvIHBsYXRmb3JtRGF0YSA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2Uu
Z2V0KCksIHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVs
U2l6ZSgpLCBmaXhlZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250
RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSk7CiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBmb250
IGhhcyBhbiBlbmNvZGluZyBjb21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNvbmZpZyBj
dXJyZW50bHkKICAgICAvLyBzdXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlwZUNo
YXJJbmRleDogVW5pY29kZSwgU3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElmIHRoaXMg
Zm9udCBkb2Vzbid0IGhhdmUgb25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9uJ3Qgc2Vs
ZWN0IGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKaW5kZXggMTM3NjVmNDNkYTg2NjhkMmRlODJlNjcxZDgxODBkNjg0NDI4NDNiMC4uNTg5
NDNkMmE5MGRmYzU1MDFmMmRjYWE4ZWNmMGU5MGUxYWM3ZjcwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAg
ICBpZiAoRlRfTmV3X01lbW9yeV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
RlRfQnl0ZSo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNl
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVy
KTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25z
dCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmNwcAppbmRleCA4Njk4MTM2NDUxM2I4ZTZmMGQ3YjJkZGE1YmI4ZDFmODcy
ZTdmNTc2Li43MWZkYTBkOTI0Y2QyNTVkYjNlZjEwNzdmOWUxMDc4MTRlMjQzZGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC05
NSw3ICs5NSw3IEBAIFJlZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIEZvcm1hdCBmb3JtYXQsIGludCB3CiAgICAgICAgIG51bVRpbGVzID0g
MDsKICAgICB9CiAKLSAgICBhdXRvIHRleHR1cmVJZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjx1bnNpZ25lZD4+KG51bVRpbGVzKTsKKyAgICBhdXRvIHRleHR1cmVJZHMgPSBtYWtlVW5pcXVl
PFZlY3Rvcjx1bnNpZ25lZD4+KG51bVRpbGVzKTsKICAgICB0ZXh0dXJlSWRzLT5maWxsKDAsIG51
bVRpbGVzKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0YTlm
ZGVjM2VjNTkxMmNlMjViMWU2YjI1YjkxNDRmYThmNDBjN2QwLi5hYjM3ZWUwNDFlYjI4YzNjODJm
MzVhZjM2M2NjZWRiOWI0MmIxNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFy
IHJlZ2lzCiB7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6
ZURlYnVnQ2F0ZWdvcnkoKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5
U3lzdGVtKTsKICAgICB9CiB9CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkK
IAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2Vz
ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fZXJyb3JPY2N1
cmVkIHx8IGlzTGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIApAQCAt
MjM3Niw3ICsyMzc2LDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjphdWRpb1NpbmsoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVu
c3VyZUF1ZGlvU291cmNlUHJvdmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyKQotICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI+KCk7CisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92
aWRlciA9IG1ha2VVbmlxdWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKIH0KIAog
QXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1Nv
dXJjZVByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAppbmRleCBjNTc4ZWVlNmQ1NWRkNGI0MzA3Y2Q0MmJiMDBjY2Y0NzYy
OTdiYjMzLi5iMDJlMjhlZGNkNDA3ZmRmZjhjYmVhNzhhZDFhNmU3YjBjN2I1OGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBA
IC03MTAsMTkgKzcxMCwxOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKICAgICAgICAgICAgIGlmICghcHJveHkuaXNBY3Rp
dmUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdz
LCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9G
cmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2lu
Z0ZhbGxiYWNrVmlkZW9TaW5rKTsKIAogICAgICAgICAgICAgR0x1aW50IHRleHR1cmVJRCA9IGZy
YW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgICAgICBp
ZiAodGV4dHVyZUlEKSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1l
SG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCks
IGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAg
ICAgICAgICAgbGF5ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGTW92
ZShmcmFtZUhvbGRlcikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlciA9IHByb3h5LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6ZSgp
LCBHTF9ET05UX0NBUkUpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbGF5ZXJCdWZm
ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVH
TDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkpOwogICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhv
bGRlci0+aGFzQWxwaGFDaGFubmVsKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDog
Qml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZN
b3ZlKHRleHR1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnVwZGF0ZVRl
eHR1cmUobGF5ZXJCdWZmZXItPnRleHR1cmVHTCgpKTsKICAgICAgICAgICAgICAgICBsYXllckJ1
ZmZlci0+c2V0RXh0cmFGbGFncyhtX3RleHR1cmVNYXBwZXJGbGFncyB8IChmcmFtZUhvbGRlci0+
aGFzQWxwaGFDaGFubmVsKCkgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCkpOwpA
QCAtOTEyLDcgKzkxMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgaWYgKCFHU1Rf
SVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJl
TWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9s
ZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1w
bGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVy
ZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAt
OTIzLDcgKzkyMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgICAgIHNpemUgPSBz
aXplLnRyYW5zcG9zZWRTaXplKCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQot
ICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwor
ICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAg
cmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUodGV4dHVyZUlELCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVs
LCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVu
dGF0aW9uKTsKIH0KQEAgLTkzOSw3ICs5MzksNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBp
ZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCks
IG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0Vmlk
ZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xk
ZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBh
dXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1
cmVJRCkKQEAgLTk1Myw3ICs5NTMsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBjb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIp
Ci0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7
CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAg
ICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUodGV4dHVyZUlELCBzaXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3VyY2VPcmllbnRh
dGlvbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEyNSw2ICsxMTI1LDcgQEAgc3Rh
dGljIHZvaWQgc2V0UmVjdGFuZ2xlVG9WaWRlb1NpbmsoR3N0RWxlbWVudCogdmlkZW9TaW5rLCBj
b25zdCBJbnRSZWN0JiByZWN0KQogfQogCiBjbGFzcyBHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQg
OiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OkhvbGVQdW5jaENsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVy
SG9sZVB1bmNoQ2xpZW50KEdSZWZQdHI8R3N0RWxlbWVudD4mJiB2aWRlb1NpbmspIDogbV92aWRl
b1NpbmsoV1RGTW92ZSh2aWRlb1NpbmspKSB7IH07CiAgICAgdm9pZCBzZXRWaWRlb1JlY3Rhbmds
ZShjb25zdCBJbnRSZWN0JiByZWN0KSBmaW5hbCB7IHNldFJlY3RhbmdsZVRvVmlkZW9TaW5rKG1f
dmlkZW9TaW5rLmdldCgpLCByZWN0KTsgfQpAQCAtMTE0Nyw4ICsxMTQ4LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAg
ICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAg
ICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdM
X0RPTlRfQ0FSRSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9sZVB1
bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckhv
bGVQdW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOworICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4
dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVu
dCA9IG1ha2VVbmlxdWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQo
KSk7CiAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0SG9sZVB1bmNoQ2xpZW50KFdURk1vdmUo
aG9sZVB1bmNoQ2xpZW50KSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZN
b3ZlKGxheWVyQnVmZmVyKSk7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA3YWU3ZWNlZDZlOWY2YmI2NTUzM2I3
ZDg5MDMwMjM3Y2NjZGZmZTY2Li5lMjYwNGM0YWUzYjA1OWNlMWZiNmUwNGQ1NjhmMWE4MzZhMjMw
NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmgKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmwKICNlbmRpZgog
I2VuZGlmCiB7Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKaW5kZXggNTFmZDliMjViMGI4NDM3Yzg0OTEy
NTNlNmYwMjFlNjU3ZDAzYTgxNy4uNWM1NmVjMzQxODg4MzM0NTc4OGZhMGI1NDlhOTgwMzI3ZDNl
N2JmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaApA
QCAtMzMsNiArMzMsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTsKIGNsYXNz
IEltYWdlT3JpZW50YXRpb247CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBD
b2xvckNvbnZlcnNpb24gewogICAgICAgICBDb252ZXJ0QkdSQVRvUkdCQSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTczZjRkNGYwMDMyMzU2ZjE3
N2ViZDdmYzRiOWU5NGE1MjkyZjk1YS4uOTgxMGMyNTdiMzc3NmZmZDhkNDIxMmU5Njk0YmU5MmIy
NTk3MzUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTUwLDYgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIExPV19R
VUVVRV9GQUNUT1JfVEhSRVNIT0xEIDAuMgogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudCBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KTsKIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudChXZWJLaXRXZWJTcmMqLCBSZXNvdXJjZVJlcXVlc3QmJik7CkBAIC02MzIs
NyArNjMzLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KEdzdEJh
c2VTcmMqIGJhc2VTcmMsIGJvb2wgbm90aWZ5QXN5bmNDb20KICAgICAgICAgICAgIGxvYWRPcHRp
b25zIHw9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0
YTsKICAgICAgICAgcHJpdi0+cmVzb3VyY2UgPSBwcml2LT5sb2FkZXItPnJlcXVlc3RSZXNvdXJj
ZShSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGxvYWRPcHRpb25zKTsKICAgICAgICAgaWYgKHBy
aXYtPnJlc291cmNlKSB7Ci0gICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5n
ZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CisgICAgICAgICAgICBwcml2LT5yZXNv
dXJjZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+
KHByb3RlY3Rvci5nZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CiAgICAgICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHByb3RlY3Rvci5nZXQoKSwgIlN0YXJ0ZWQgcmVxdWVzdCIpOwog
ICAgICAgICAgICAgaWYgKG5vdGlmeUFzeW5jQ29tcGxldGlvbikKICAgICAgICAgICAgICAgICBn
c3RfYmFzZV9zcmNfc3RhcnRfY29tcGxldGUoR1NUX0JBU0VfU1JDKHNyYyksIEdTVF9GTE9XX09L
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcAppbmRleCA0ZTlkMTlkODUyN2Q2OTYyMGNmNWFhOTQxMDczNjI4MzgxYjNjOWYw
Li5lNjg4MGQ5OGU3ZmNhZDFkMDUzZjg0ZWQzOGE2ZmQ4MTk4ZGU3Yjg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBA
IC03Nyw3ICs3Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlCiAgICAgaW5pdGlhbGl6ZUdT
dHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMoKTsKICAgICBHU1RfREVCVUdfQ0FURUdP
UllfSU5JVCh3ZWJraXRfbXNlX2RlYnVnLCAid2Via2l0bXNlIiwgMCwgIldlYktpdCBNU0UgbWVk
aWEgcGxheWVyIik7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIo
W10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tl
eVN5c3RlbSk7CiAgICAgfQogfQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFOjpzZXRSYXRlKGZsb2F0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVk
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1
ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBy
ZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0U6OnNvdXJjZVNldHVwKEdzdEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmluZGV4IDExNzI0
NTg0MTBlOWExNDUzYjYzNWIwZjhkOTFiOWZiNGE2OTZjNTguLjBmMDhjMTlkYmRiZTY5YjA2Zjdi
NzU1M2Y4YWI0OTdkNDdlMzc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclBy
aXZhdGVIb2xlUHVuY2guY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAgICAg
ICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBt
X3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7Cisg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05U
X0NBUkUpOwogICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1
ZmZlcikpOwogICAgICAgICB9OwogCkBAIC0xNDEsNyArMTQxLDcgQEAgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25z
dCBNZWRpYUUKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVk
aWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2g+KHBsYXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggZjBkMDRkNGM2M2Q5
MzEyMGJjZTgwNWFiOGZlYTI4N2EwMWUwNDQyYS4uOGJmNzIxMzE4ODE5YzQwMjY3YjcyMWZhOWI4
MmFjMWNkOTI2ZjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgICwg
cHVibGljIFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogewotCisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKE1lZGlhUGxh
eWVyKik7CiAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCgpOwpAQCAtNzksNyArNzks
NyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkVtcHR5
OyB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9OwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OwogCiAgICAgYm9vbCBkaWRM
b2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IGUxYTNhODY2
MzE0NzVjYWI3YTliMTcxYjQwNjJkMzkzZDg5MGU2MDYuLmVjZjg5NjkzZGEzMzg1MjAxMmU3NTAy
MTEyOTk4MDk5ZWM4ZGFjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgRGF0YVZpZXc7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SVNPQm94KCkgPSBkZWZh
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPT3JpZ2luYWxGb3JtYXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCmluZGV4IDcwYmI4NjExMzE2ZTY4NWI3NmI3ODgz
OGI1ZWQwNjAzNzZiOWIxYTkuLjE4ODNiYTQ3YmRmM2E1MmFmYjJmZjdkMGRkNWNkOWRjZDdjZGQ4
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09P
cmlnaW5hbEZvcm1hdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2luYWxGb3JtYXRCb3gg
OiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0
Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBi
b3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcm1hIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hl
bWVJbmZvQm94LmNwcAppbmRleCBkOGQ3NDAxYTc1NjAwNDZjOThhZmY4Y2IxMWViMmU3MjIzYzk4
MWNlLi5iZGZkYmRjOTZjZjBlMWI1MGE3Mjg1ODI4OGM5YjJmNDc0ZjdkMGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVt
ZUluZm9Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBJU09Q
cm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBv
ZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChvcHRpb25hbEJveFR5cGUu
dmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVUeXBlQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAg
ICAgIG1fc2NoZW1lVHlwZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lVHlwZUJveD4o
KTsKKyAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0gbWFrZVVuaXF1ZTxJU09TY2hlbWVUeXBlQm94
PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lVHlwZUJveC0+cmVhZCh2aWV3LCBsb2NhbE9mZnNl
dCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBJ
U09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVk
JiBvZmZzZXQpCiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLmZpcnN0
ID09IElTT1NjaGVtZUluZm9ybWF0aW9uQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAgICAgIG1f
c2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZUluZm9ybWF0
aW9uQm94PigpOworICAgICAgICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0gbWFrZVVuaXF1ZTxJ
U09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZUluZm9ybWF0
aW9uQm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAppbmRleCBmMzdiNzYyNDlkOGUw
MGZhMTdhMDU1OTI5ZTc3NjY4NTEzNzMzMzY2Li44ZTU2NzNlMDUxNmE2NTAxNGY1Y2Q0OWY2MWFh
N2I3NTM4ZDJjYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaApAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJU09TY2hlbWVUeXBlQm94Owog
Y2xhc3MgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3gg
ewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAic2lu
ZiI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKaW5kZXggYjRmMjc3YTY4NDdj
YzIwZDRmYzlkNjI2ZjljYWNjNzQzMGFkYWY3MC4uYzgzYzRmZjdiMzhhYmYxYWUyMmZmZTVlNzJj
N2ExZjg2YTA4ZWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIGJvb2wgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2
aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICBpZiAobG9jYWxPZmZzZXQgKyBzY2hlbWVT
cGVjaWZpY0JveFR5cGUudmFsdWUoKS5zZWNvbmQgPiBvZmZzZXQgKyBtX3NpemUpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9zY2hlbWVTcGVjaWZpY0RhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVT
cGVjaWZpY0RhdGEgPSBtYWtlVW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKICAgICAg
ICAgaWYgKCFtX3NjaGVtZVNwZWNpZmljRGF0YS0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3gu
aAppbmRleCA5ZWRiMTg3OGE5YmE5MTliZWIxOWQ3YjYyMjNkOWU3ZTQ2NGY2ODU4Li5lOGVjMGM0
YzY5Yjc0ZTgzMzQ0OTg5NDFmMjRlZWU0MTBmMmNkZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRp
b25Cb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9ybWF0aW9uQm94IDogcHVibGljIElTT0JveCB7
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCBmaW5hbCA6IHB1
YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7
IHJldHVybiAic2NoaSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKaW5kZXggNjE5NjEwMzlmNDhjZjJiYzZl
ZTdiODg0ODA3M2M4Mzc2ZTU4MzEzMC4uNGI4ZjI2MzM3NTBmOGFkZjkwYmMyN2MyZDBjZjE0ZWY5
ODJjMTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1NjaGVtZVR5cGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlwZUJveCA6IHB1Ymxp
YyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggZmlu
YWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hU
eXBlTmFtZSgpIHsgcmV0dXJuICJzY2htIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKaW5k
ZXggZjRlZmUyODEwNTFlM2M3YjI5ZGJlZjc4ZTQ0ZGEzYjAzODc4MDNmMy4uNDdmYTQ5NzI0NmM3
MTViZTFkMmNlZjliMGVhODdkZDdmNzllZjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaApA
QCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCBmaW5hbCA6IHB1YmxpYyBJU09G
dWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gInRlbmMiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1ZUVEN1ZS5jcHAKaW5kZXggOWVjNDA4OTRmMWUyOGEwNWEyMTRjYjMyMzUxNGY3YjEz
OTU1ZDI4NC4uNGI1MTZlZThkZDdmN2QyMzdlOGQ2MjcyNzk3YjAzMmRkMWY1YWNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgSlNDOjpEYXRhVmlldzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBJU09TdHJpbmdCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT1N0
cmluZ0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgY29udGVudHMoKSB7IHJldHVybiBtX2NvbnRlbnRzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAppbmRleCBhNjE2MGI2NmFlOTQ2
ODIwNjc3YWQyOTM0YjE4MWRlYjkzY2M0ZjQ5Li5hZTIzYmVmZmZlZDY0YTZkZTI4OTE3NmU0MTUx
MDExZjA2N2M5ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1ZUVEN1ZS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IE4gYnl0ZXMgOiBDdWVUaW1lQm94IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVT
ZXR0aW5nc0JveCA6IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlUGF5bG9hZEJveCA6
IGJveCA6IHJlcXVpcmVkCi1jbGFzcyBJU09XZWJWVFRDdWUgOiBwdWJsaWMgSVNPQm94IHsKK2Ns
YXNzIElTT1dlYlZUVEN1ZSBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIElT
T1dlYlZUVEN1ZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGNvbnN0IE1lZGlh
VGltZSYgZHVyYXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMzI3
ZWJmNjA2MjU5MDlmYmUyYzViNmJkNTE5OGFjYTE5YTQ1ZDRhNC4uNTA3OTM4YmUxMTA1Y2Y0MjYw
NDU1OTEzYjBjNWU5OWQ0ZjU0ZjllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApA
QCAtODQsNyArODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpKTsKIH0KIAog
Ym9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcm
IGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oCmluZGV4IDgzZjc3
NjY3OWUxODljNmZjZTRlZjg2MjU3YjAwNWQxMTM3NGUyMmQuLjZmMjE1YjI3YWFkOTZjM2ZhOWMy
MDdmMzIwZWY5ZTMyYjQzYjdjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRp
b24uaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgTmljb3NpYSB7CiBzdHJ1Y3QgUGFpbnRp
bmdPcGVyYXRpb25SZXBsYXkgeyB9OwogCiBzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb24geworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICB2aXJ0dWFsIH5QYWludGluZ09w
ZXJhdGlvbigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYWludGluZ09w
ZXJhdGlvblJlcGxheSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChXVEY6OlRleHRTdHJl
YW0mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDEw
OWMyYzU3NzY3OWExMjE0YWE2ZWExMDFjNmY0ODBmYmEyZWM2MDEuLjViZWU2MTNmY2Y2YjQ2YTA3
YzYyOGU1ODAxNmY0OWJiOTAyMWIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdy
YXRpb24uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVxdWVz
dFVwZGF0ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29w
ZT4gU2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKIH0KIAogU2NlbmVJbnRl
Z3JhdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAyYjFhZWNm
MGQxYjdlNmEzNDFiZjk0YmZmYWVkMjIwZjFhNDU4NjM4Li41MGUwYzNjN2Q5NzY4MjZiYTdiYjgx
ODVkMWVlMTQyMTI5YWRhMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBhdXRvIGNyZWF0
ZUNvbW1hbmQoQXJncyYmLi4uIGFyZ3VtZW50cykgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X2Jhc2Vfb2Y8T3BlcgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGF1dG8gY3JlYXRlQ29tbWFuZCgp
IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXJhdGlvbkRhdGE8PiwgVD46
OnZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+PgogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VD4oKTsKIH0K
IAogQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKaW5k
ZXggMGM4YTY3MGUzYTBhMzYzMDdlM2YyOTllY2RhMDI1NTJmZDc3NGVkMS4uYjM1MDhkNTE3YjI0
ZTQ3NWMwOGFmNDhiMzNlNDMxZmQyNzkyMDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcApAQCAtNzAsOCArNzAsOCBAQCBQYWlu
dGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYgYnVmZmVy
KQogICAgICAgICB9KTsKIAogICAgIG1fY2Fpcm8uY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2Ny
ZWF0ZShtX2NhaXJvLnN1cmZhY2UuZ2V0KCkpKTsKLSAgICBtX3BsYXRmb3JtQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29u
dGV4dC5nZXQoKSk7Ci0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpjcmVhdGVGYWN0b3J5KCptX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fcGxhdGZvcm1Db250
ZXh0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWlyby5j
b250ZXh0LmdldCgpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNy
ZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CiB9CiAKIFBhaW50aW5nQ29udGV4dENh
aXJvOjpGb3JQYWludGluZzo6fkZvclBhaW50aW5nKCkKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHZv
aWQgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkoY29uc3QgUGFpbnRp
bmdPcGVyYXRpb25zJiBwYWludGluCiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRp
bmc6OkZvclJlY29yZGluZyhQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0aW9ucykK
IHsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0PigKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0PigKICAgICAgICAgWyZwYWludGluZ09wZXJhdGlvbnNdKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFp
bnRpbmdPcGVyYXRpb25zKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CiAgICAgICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBkNGM5YjYwNWI0Y2QyOGUzNDhlZmQ4
NTMzNTAzOGI1OGM5YTRkZGZhLi44ZTM3OTBmN2FiNTRmNmIzZDk1NmYzMDcwNGM0MjljMmFjZGMz
MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNr
aW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBCYWNr
aW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsK
ICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10oQmFja2luZ1N0b3JlJikgewotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlcklt
cGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJl
TWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVU
ZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXgg
ZWFkNDk3NzZlNTBhMjNjZmQ1MDE0YTdlOTY0MzBiM2RlMTI0ZGIwYS4uZDQzNmYyMGMzMTYxYzA1
NTRhNWFhMjJhMzkzMGE5OTVlZWMzNWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVN
YXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQxLDYg
KzQxLDcgQEAKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlVGV4dHVy
ZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgQmFja2luZ1N0b3JlOjpJbXBsLCBwdWJsaWMgV2Vi
Q29yZTo6VGlsZWRCYWNraW5nU3RvcmVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25M
YXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCAzOGZkZDkzZGE2YjEzODgzMTQwNTkxNjUz
Y2RmMjllMDdkZTMyMzk2Li43NTY5MmM3YzRhN2JmZGIxODcxZGYxODAyZTM4Nzc1MzZiNjE1NTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29t
cG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRv
IENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZh
Y3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10odWludDY0X3QsIENvbXBv
c2l0aW9uTGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21w
b3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29t
cG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggNjU1NWJmYjA4MDI2MWU4YTMw
OTViZGU0ODNhMDYxYmI1NDIxNDU3NC4uNTMwYTY3NTEwMTcyNmVhMjg3MjhjNTNkODg4ZGJkZWY3
YWFlNzk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDAsNiArNDAsNyBAQCBj
bGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIENv
bXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb21wb3NpdGlv
bkxheWVyOjpJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3Bw
CmluZGV4IDU2MTcyOGI1ZWYxZjQwZDgwYzUzNTk5MjY3MTA2NmFkODc0ODE5YTcuLjJmYjBlYzk1
OTE1YWViMGJhMDk2ZjgwYmM2OTBkMmYzYjI4NDhjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNw
cApAQCAtMzksNyArMzksNyBAQCBhdXRvIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpj
cmVhdGVGYWN0b3J5KENsaWVudCYgY2xpZW50KSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZh
Y3RvcnkoCiAgICAgICAgIFsmY2xpZW50XShDb250ZW50TGF5ZXImKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xp
ZW50KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsPihjbGllbnQpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaApp
bmRleCBlZjk2YTYwODMxNjJkZTQxYzI3ZGU0YmYzNTdiOGE0ZmNhZjhkOWNmLi5iMDEwNWI3M2Fj
MjI2NGY1N2NhN2I3ZTUwM2VjZjcwZGE1MjdkYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaApAQCAt
NDEsNiArNDEsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OwogbmFt
ZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCBm
aW5hbCA6IHB1YmxpYyBDb250ZW50TGF5ZXI6OkltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUdDM0RMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAppbmRleCA1MmVjNzBiNjgxZjdiYzU2M2E2
NzQ3NTQzNjIzODc2YjAzMTM5YTliLi45YTliZDQ2ODNiMjY3NDJhZmVjYjE0OTFmNjE0NGYyYTc4
YzU5NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcApAQCAtODgs
NyArODgsNyBAQCB2b2lkIEdDM0RMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAg
IGF1dG8mIHByb3h5ID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGw+KG1fY29udGVudExheWVyLT5pbXBsKCkpLnByb3h5KCk7CiAKICAgICAgICAgTG9ja0hv
bGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIo
c3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250
ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1f
aW50ZXJuYWxDb2xvckZvcm1hdCkpOworICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtl
VW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21w
b3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENv
bG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaAppbmRleCAzMmRiOWRkMzdhNmYw
ZDlmYThkNGQxODhlYjE4ZjhhZTE0NzVhMDBiLi45ZjU0NDViYmUxMTgzY2U3NDg1NTkzY2JiYmYx
NjUwZWRjY2U0MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oCkBAIC00
MSw2ICs0MSw3IEBAIGNsYXNzIEdMQ29udGV4dDsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xh
c3MgR0MzRExheWVyIDogcHVibGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdDM0RMYXll
cihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSk7CiAgICAgdmlydHVhbCB+R0MzRExheWVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1h
Z2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJ
bXBsLmNwcAppbmRleCBhMmFlMzRhMzEzMjdlODcxNTY1NDE0NmQxOGY3N2M3YTY3ZjI0MjE2Li5k
MzUzYzhiZTFiNWJmYTExNmI2Y2I4NTIwOTcwMjc3Y2M5MzI0NWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VC
YWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVy
SW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgK
ICAgICAgICAgW10oSW1hZ2VCYWNraW5nJikgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUlt
YWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggMWE2MjNhZmE0MDkzYjIyYWMyMGQx
M2IzMjkzNjA4M2FjYjA4ZWE4MC4uNDliMWU5YjJlYzAzNTUyYTBiZDYxMjBhZTc3YjhlNjk0YTk0
NjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgSW1hZ2U7
CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJ
bXBsIGZpbmFsIDogcHVibGljIEltYWdlQmFja2luZzo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKaW5kZXggN2M2MTRmYjQwMzM1
OGVhNDA0NTZkODQ2MmNmOGRjNWJjM2E0ZWIxOS4uMTQ3MjE3OTA3NzI3Y2FlZWEyN2VmNjhhMDY5
Y2MwNTMxMDgyMGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaApAQCAt
MzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlbnNpb25zM0RP
cGVuR0xDb21tb24gOiBwdWJsaWMgRXh0ZW5zaW9uczNEIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zM0RPcGVuR0xDb21tb24o
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTY4NDhmY2Vj
YTQxZTk3MzZmMmEzODE3YTlmZDAzY2ViYWUzYWMxMS4uYjk2MzYzYjU1MTkzNTZjOGNkZjQ2NTQz
NjMyNmVkMDZjZWNlZDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3Bw
CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChH
QzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0
ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9u
cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29t
cGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMz
RE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5z
aW9uczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggYjI0ZGYwMzVlMjg4ZTFlYjJmOGFmOWY3YWI5MWQ3NzlkMGFjYTQ5ZS4u
MmEwZTViNzZlNGQ2YmFiNzBlOTBiMmYzZDI4ZWI0M2MwN2Y0MjUxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC02NTYsNyArNjU2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKICAgICBBTkdMRVJlc291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZvclNoYWRl
cjsKIAogICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1lSGFzaE1h
cEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAg
ICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwog
ICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMu
Z2V0KCkpOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIApA
QCAtMTAyMyw3ICsxMDIzLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1i
b2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAgICAgICAgLy8g
QXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZv
cmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBhbmQgYXJlbid0
IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0uCiAgICAgICAg
IGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JT
aGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgICAg
IG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAg
ICAgICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRl
cnMuZ2V0KCkpOwogCiAgICAgICAgIGF1dG8gZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFzaGVk
TmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRl
eCAyNDMwNDZkOTg5YWQ3MzhmN2M5ZjcxNDk1NTY3Yzk2YmIzNGM1NjQxLi43MGEyMGQ1MGMzNTIx
YTYxMjNlNmVmYWYxZjQ3NjhmNjQ5NWNkZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAg
ICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+
KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VV
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAg
ICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBAQCBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0M0RBdHRyaWJ1dGVzCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4
dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV9j
b21waWxlcihpc0dMRVMyQ29tcGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dMU0xfQ09N
UEFUSUJJTElUWV9PVVRQVVQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKKyAgICAsIG1fcHJpdmF0
ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUp
KQogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
M0RUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlZDZjY2YxOTRiYmVlMWUwMGZkNDM5ZjYxYTZkZTYy
ZTQwMzAyZWEzLi44ZmQzYWQ0ZjcyZDc2NGJkOTVkMjIwZjU4MWVkMmI3OTYyODgzYzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTA2
LDkgKzEwNiw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGlj
c0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAjaWYgVVNFKE5JQ09TSUEpCi0gICAg
bV9uaWNvc2lhTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRo
aXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3Np
YTo6R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2Vsc2UKLSAgICBtX3RleG1hcExh
eWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0
aGlzLCByZW5kZXJTdHlsZSk7CisgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2VuZGlmCiAK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTMyNSwxMCArMzI1LDEwIEBAIEV4dGVuc2lv
bnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgIGlmICghbV9leHRl
bnNpb25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlz
IG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CisgICAgICAgIG1f
ZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxz
ZSk7CiAjZWxzZQogICAgICAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3Jl
IHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCi0gICAgICAgIG1f
ZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBH
TENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIG1fZXh0ZW5z
aW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1
cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuICpt
X2V4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXIuY3BwCmluZGV4IDE0ZjFkYmYxOGQ5MWIzOTA3NWUyZDUwZjIxNDliNzc2YmJjMTc0OTMuLjY2
MzIzMTU2OTViYTIxYzI2N2QxNTU5MzJlYmE5MTQ3ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRm
b3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkK
IAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHkt
PmxvY2soKSk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRl
eHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9p
bnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNo
TmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiht
X2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRl
eHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtM
YXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXIuaAppbmRleCA4YjYwMjE0YWJhOWI4M2NhMTkzMGYxMzVjNzUzNDhiMjY2ZmU1Y2FjLi5l
NmYwOWM4Nzk4NTQ4NjMyZWU0YjBhYTVhNTYzMDYxNWEyNGEzNzg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0
Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNz
IEdMQ29udGV4dDsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7CiAKIGNs
YXNzIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllciA6IHB1YmxpYyBQbGF0Zm9ybUxheWVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXIoR3JhcGhpY3NDb250ZXh0M0QmLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyU3R5bGUpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1M
YXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA5NzRiODU3OGI4OGFhNjQzNTA5MWU4
YjBjMzhiYjJkYjcxMGVmMTAyLi5hMmY3NTg2NmUzMjNiOGZkYmE0M2EwMDdkNDQ3YWFhNDY1NzZi
ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIFRleHR1cmVN
YXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKCkKIAogICAgIG1fZGF0YSA9IG5ldyBUZXh0dXJlTWFw
cGVyR0xEYXRhKHBsYXRmb3JtQ29udGV4dCk7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQot
ICAgIG1fdGV4dHVyZVBvb2wgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFRleHR1cmVQb29sPiht
X2NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBtX3RleHR1cmVQb29sID0gbWFrZVVuaXF1ZTxCaXRt
YXBUZXh0dXJlUG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7CiAjZW5kaWYKIH0KIApAQCAtNzkw
LDcgKzc5MCw3IEBAIFJlZjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRl
eHR1cmUoR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyPiBUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOwogfQogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggN2FmZGYzMGEwNWJjYTUz
OTdiODAxOGJmZWJkODllMGUxZGE1MDMzMy4uZTExYTBiYjI3YjgxMGMyZDUyNzZiMmE5YjBjNTA5
Zjg4OTUwNjZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAg
ICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNv
bnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7CiAgICAgdGV4dHVyZS0+
cmVzZXQobV9zaXplKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJl
LmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1v
dmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFn
cyk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5LmNwcAppbmRleCBjNzE0ZjZkNzhjMWNmMWE2MWQ0ZGZmNmI0MjA1MjFiMDJlY2Q3
YzUwLi4zNzkzNjc1YWM4ZDZiM2MzMmEzYjMxODE5M2U0OWE3YjM3ZGM0ODgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC03MSw4ICs3
MSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNv
bXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvCiAgICAgaWYgKG1fdGFyZ2V0TGF5ZXIgJiYg
bV9jdXJyZW50QnVmZmVyKQogICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xheWVy
KG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKLSAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGlt
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOwotICAgIG1f
Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpU
aW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgp
LCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVh
ZFVwZGF0ZVRpbWVyRmlyZWQpOworICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IG1h
a2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+
KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7CisgICAgbV9jb21wb3NpdG9yVGhy
ZWFkVXBkYXRlVGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7
CiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0
ZVRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkNvbXBvc2l0aW5nVGhy
ZWFkVXBkYXRlVGltZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAzNjdkOGE1M2NmMzcwZDIyMDJkNmYzNDAxY2Rj
YjNhMDJmZjQyYzJiLi5kNDc1NzEwYmEwY2RkZmJjZGJkYTBjNjhjZTMwYjgxZWZhYWQ2OWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcApAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKICAgICAvLyBFbnN1cmUgdGhlIFRpbGVkQmFja2lu
Z1N0b3JlIG9iamVjdCwgYW5kIGVuZm9yY2UgYSBjb21wbGV0ZSByZXBhaW50IGlmIGl0J3Mgbm90
IGJlZW4gcHJlc2VudCB5ZXQuCiAgICAgaWYgKCFsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUp
IHsKLSAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1
ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKKyAg
ICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxUaWxlZEJhY2tp
bmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKICAgICAgICAgbV9wZW5k
aW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50ID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGls
ZS5oCmluZGV4IDJjMjRlMDg0ZTMyOTZhNDdlMDllOTYxMGQ3NDhkNmE4OGZlNDk2NTYuLmZiYzI0
NWJlMWU1MDM4NTNjNzMyZjAxZTVhMzRlNTU4NGE1YjNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUu
aApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUaWxlZEJhY2tp
bmdTdG9yZTsKIAogY2xhc3MgVGlsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBDb29yZGluYXRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzYmU0MzExZGVhYTAyNDk3
YzdlZDFjZGNhMTM0NWJhNWE2ODAzMTA5Li40YTY5NzgyMmU0ZGUyY2RiOGI2NmY4MWQ0MDRkOGRi
ZTgyYjQ5ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVU
aWxlcyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgcwogICAgIHVu
c2lnbmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgpOwogICAgIGZv
ciAodW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikgewogICAgICAg
ICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25dOwotICAgICAg
ICBtX3RpbGVzLmFkZChjb29yZGluYXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFRpbGU+KCp0aGlzLCBj
b29yZGluYXRlKSk7CisgICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIG1ha2VVbmlxdWU8
VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKICAgICB9CiAgICAgcmVxdWlyZWRUaWxlQ291bnQg
LT0gdGlsZXNUb0NyZWF0ZUNvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4
IGM4OGU5YmVmOWQ2NmNhMmI1NTAxOGM5MGY0YjBhNDI4YjQ2ODJlZjguLjRlYWYwMDExMjBjNDdm
ZmNlNTVhYjRkZmE5MjE4M2NlOGIzMTk0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0
b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBpZiAobV9tYXBRdWFkKSB7CiAg
ICAgICAgIG1fbGFzdFBsYW5hclF1YWQgPSBvdGhlci5tX2xhc3RQbGFuYXJRdWFkOwogICAgICAg
ICBpZiAob3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAgICAgIG1fbGFz
dFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKm90aGVy
Lm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29u
ZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgVHJhbnNmb3JtU3Rh
dGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVy
KQogICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBudWxscHRyOwogCiAgICAgaWYgKG90aGVy
Lm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVs
YXRlZFRyYW5zZm9ybSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5p
cXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7
CiAgICAgICAgIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTEyOSwxMiArMTI5LDEyIEBAIHZv
aWQgVHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm1Gcm9tQ29uCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBhY2N1bXVsYXRlZCB0
cmFuc2Zvcm0gZnJvbSBsYXN0IHRpbWUsIG11bHRpcGx5IGluIHRoaXMgdHJhbnNmb3JtCiAgICAg
aWYgKG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09
IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQotICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZy
b21Db250YWluZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgICAgICBtX2Fj
Y3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJh
bnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdGlwbHkodHJhbnNm
b3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRlID09IEFjY3VtdWxh
dGVUcmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3RhcnRlZCB0byBhY2N1
bXVsYXRlCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKKyAgICAgICAg
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+
KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAgIH0KICAgICAKICAgICBpZiAoYWNjdW11bGF0
ZSA9PSBGbGF0dGVuVHJhbnNmb3JtKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBUcmFuc2Zv
cm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRRdWFkKiBxdWFk
KQogICAgIC8vIE1hcCB0aGUgcXVhZCBiYWNrIHRocm91Z2ggYW55IHRyYW5zZm9ybSBvciBvZmZz
ZXQgYmFjayBpbnRvIHRoZSBsYXN0IGZsYXR0ZW5pbmcgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBG
bG9hdFF1YWQgYmFja01hcHBlZFF1YWQoKnF1YWQpOwogICAgIG1hcFF1YWQoYmFja01hcHBlZFF1
YWQsIGludmVyc2VEaXJlY3Rpb24oKSk7Ci0gICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9
IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CisgICAgbV9sYXN0
UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVh
ZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBU
cmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sKiB3YXNDbGFtcGVkKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5oCmluZGV4IDEwODYzNzQwMGEyMGZhMmYwOWRmNmFkNDM5MzNjYTdk
YTE3ZjQ4NjEuLmI2MjU4MzZhNWNlMjI1YmY0N2YzMzBjMDhjMjlkOGM3NTY1MmVlNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybVN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgVHJhbnNmb3JtU3Rh
dGUgewogICAgICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0YXRlIChubyBhY2N1
bXVsYXRlZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBxdWFkLgogICAgICAg
ICBBU1NFUlQobV9hY2N1bXVsYXRlZE9mZnNldCA9PSBMYXlvdXRTaXplKCkpOwogICAgICAgICBp
ZiAocXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2Fj
aGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHAKaW5kZXggZDMxYTI1NzlmYjFlMWM3OTQyNWQwMjkwNWViZWJjODhkMTRhZGQ1MC4u
OGY3NzAyNzVkZTY5OTU2OGM4NTE1YWVhMGYyY2ZhMGU1MjA1NjcyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAg
LTY0Miw3ICs2NDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENh
Y2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgIGJvb2wgc3ludGhl
c2l6ZUJvbGQgPSBpc0dESUZvbnRXZWlnaHRCb2xkKHdlaWdodCkgJiYgIWlzR0RJRm9udFdlaWdo
dEJvbGQobG9nRm9udC5sZldlaWdodCk7CiAgICAgYm9vbCBzeW50aGVzaXplSXRhbGljID0gaXNJ
dGFsaWMoZm9udERlc2NyaXB0aW9uLml0YWxpYygpKSAmJiAhbG9nRm9udC5sZkl0YWxpYzsKIAot
ICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZN
b3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNp
emVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9u
LmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1
c2VHREkpOwogCiAjaWYgVVNFKENHKQogICAgIGJvb2wgZm9udENyZWF0aW9uRmFpbGVkID0gIXJl
c3VsdC0+Y2dGb250KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMzg3YTIz
OWY4MjljMmQ3ODA5YzJjOTZkM2ZlMTI0ZGVlMTRiZDNkNy4uNjQ4NDg1YWMyNmNiMjM3NWNmNjU3
NGY4MWZmNGNkNjU2NzJjNTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAt
MTEzLDcgKzExMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgZm9udFJlZmVyZW5j
ZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAgICBpZiAoIWZv
bnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1l
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVm
ZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3Vw
cG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCAxOTA0NDkwMDQ1ZjRlN2U3ZjdkYjgxZDk1ZjBhNmEyNDJiZDU0ODM4Li5lYWI4MDZl
NDJjMDYyZDU1OTc4OTk0NTJlZmU3NDc0ZTU5OWY5MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKQEAgLTQxLDYgKzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRU
YWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1
cmVTZXR0aW5nczsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOwogcHVibGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoSEFORExF
IGZvbnRSZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggYWI3Yzc5MGQ2MGYyZThmNzRhZjAzYzA2YWNmYzcyYzhl
MzljMjJkOS4uZWVlYWZlYmQ5MzNjYTljNzhkZDA1MTQxM2QyMzM0NGNhODUzYjAxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0K
IAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJp
bmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI5NTM1NTAzYzMwNmM1
MDFhYTM5M2YzMWZmZDkyODg1ZWRlOWJkZWYuLmNjN2FkM2VjMzEwYmFmZjlmMmQ1MzEzZWEzN2Vi
YjY2N2M3OWQ0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcApAQCAtNDMsNiArNDMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgaW50IGtGdWxsU2NyZWVuQW5pbWF0
aW9uRHVyYXRpb24gPSA1MDA7IC8vIG1pbGxpc2Vjb25kcyAKIAogY2xhc3MgRnVsbFNjcmVlbkNv
bnRyb2xsZXI6OlByaXZhdGUgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNs
aWVudCAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByaXZh
dGUoRnVsbFNjcmVlbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIEZ1bGxTY3JlZW5Db250cm9sbGVy
Q2xpZW50KiBjbGllbnQpIAogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpAQCAt
MTAzLDcgKzEwNCw3IEBAIExSRVNVTFQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZhdGU6OmZ1
bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQgaHduZCwgVUlOVCBtCiB9CiAKIEZ1bGxTY3JlZW5D
b250cm9sbGVyOjpGdWxsU2NyZWVuQ29udHJvbGxlcihGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVu
dCogY2xpZW50KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UHJpdmF0ZT4odGhp
cywgY2xpZW50KSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFByaXZhdGU+KHRoaXMsIGNs
aWVudCkpCiB7CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CiB9CkBAIC0xMzEsMTMg
KzEzMiwxMyBAQCB2b2lkIEZ1bGxTY3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4oKQog
ICAgIG1fcHJpdmF0ZS0+bV9vcmlnaW5hbEZyYW1lID0gb3JpZ2luYWxGcmFtZTsKIAogICAgIEFT
U0VSVCghbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9i
YWNrZ3JvdW5kV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3Jv
dW5kV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5j
cmVhdGVXaW5kb3coMCk7CiAgICAgOjpBbmltYXRlV2luZG93KG1fcHJpdmF0ZS0+bV9iYWNrZ3Jv
dW5kV2luZG93LT5od25kKCksIGtGdWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24sIEFXX0JMRU5E
IHwgQVdfQUNUSVZBVEUpOwogCiAgICAgbV9wcml2YXRlLT5tX2NsaWVudC0+ZnVsbFNjcmVlbkNs
aWVudFdpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS0+bV9mdWxs
U2NyZWVuV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRl
LmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKICAg
ICBBU1NFUlQobV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwogICAgIG1fcHJpdmF0ZS0+
bV9mdWxsU2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
Q2Fpcm9XaW4uY3BwCmluZGV4IDEwNjdiOTYwOTNkYjJlZDU5MWEyMWEzMWQ5ZDAyNTZkYzEyOTNl
ODkuLmYxNDQyNTcyY2M2ZDFkNTRiYmVlNThiZGJjMzZlZGY3NzRhYWJiNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWly
b1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dENhaXJvV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9vbCBoYXNBbHBoYSkKIAogICAgIGNhaXJvX3Qq
IGNyID0gY3JlYXRlQ2Fpcm9Db250ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOwogCi0gICAgbV9k
YXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY3Ip
KTsKICAgICBtX2RhdGEtPnBsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRl
KG1fZGF0YSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNvbnRl
eHQoKS0+Y3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggYzJiYWZh
Zjk2YTE2MDcwODBiNzYzMzk1MjY2MmU3Njc3NjE0YjAwYy4uOTZjODI4MWFmNGIyMmM2Njg2YWNi
MTRjNWU4MmMxZDY5YjkwZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMs
IElEMkQxRENSZW5kZXJUYXJnZXQqKiByZW5kZXJUYXJnZXQsIFJFCiAKICAgICAoKnJlbmRlclRh
cmdldCktPkJpbmREQyhoZGMsICZyZWN0KTsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFy
Z2V0KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwg
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hk
YyA9IGhkYzsKIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1Jbml0KEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgaWYgKCFTVUNDRUVERUQoaHIp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgp
KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKICAgICBtX2RhdGEgPSBuZXcgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNvbnRleHQp
LCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1f
aGRjID0gaGRjOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4
IGJkNzZlZmJiYTlkMGU4OTdkM2QyODhlODVlOGQyNDQ0Y2M0ZjhmNGUuLjFlYmI1YjA5ZDM4NTM3
YzAxOTIyMGI5NDdkY2FkOTQ0ZDhlMTAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAg
ICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxh
dGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU1LDE0ICs1NSwxNCBAQCBHcmFw
aGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbcmVuZGVyVGFyZ2V0XShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkK
ICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5l
VHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVy
aW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGlj
c0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAg
IG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdl
dCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKQEAg
LTcwLDkgKzcwLDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXgKIAogR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIDogR3JhcGhp
Y3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9
KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29u
dGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQog
ICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBt
X3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+
KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0
OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRm
b3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAg
ICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRXaW4uY3BwCmluZGV4IDViZGU0Y2VkZjUxNmE5MTc5YTZkM2QzYjNlMzNkMTM0ZWQ1YWI1MTEu
LjFkODA0MjBjZjdlYzZjZDc3NWE2MmJhZWEyMmY5OTA2MDdlYjRjYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6V2luZG93c0JpdG1h
cDo6fldpbmRvd3NCaXRtYXAoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0OjpX
aW5kb3dzQml0bWFwPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXAoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dzQml0
bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaW5kb3dz
Qml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyRC5jcHAKaW5kZXggMDZjMTc0NTc5YTRiYzEzMDkxZjM0YjU3OTRhYWE5Mjk5M2JiYmEyNC4u
MzVhOWZmNjExMzUxYzMzYzcxNzRkOTJhMWZkY2Y0NDcwZTgxYTg4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJELmNwcApAQCAtMTEyLDggKzExMiw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vdGU6IFRoaXMgcGxhY2VzIHRoZSBiaXRtYXBjb250
ZXh0IGludG8gYSBsb2NrZWQgc3RhdGUgYmVjYXVzZSBvZiB0aGUgQmVnaW5EcmF3IGNhbGwgaW4g
dGhlIGNvbnN0cnVjdG9yLgotICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKLSAg
ICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2Rh
dGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmlu
Z0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOworICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsK
KyAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEu
cGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0Nv
bnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAppbmRleCBlMDY2MzEwYTBh
Y2E3MWJkOWFjODFkZDE2YmEwZGIxNWE3ZDUxMWQ1Li5kMjg1MzhhMTU4MjI4YjJjODllMTgzYzcz
OTE0ZTEyYjhhMTg5MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbkNsaWVudCB7CiB9OwogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5DbGllbnQqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA1
ODM4ZWMxNTdhMmM3YjcxNjNiNzE2ODJhNGViOGM4MDM0ZTk2MzIxLi42ZDY0YWU5YTZlM2E0MTdm
YjE0ZjEyMTY2ZjY4ZDNjOWE1NTI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtODIsNyArODIsNyBAQCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJs
ZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxh
eWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIp
OyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwg
MCwgMCk7CiAgICAgfQogfQpAQCAtMzAxLDcgKzMwMSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpidWZmZXJlZCgpIGNvbnN0CiB7IAotICAgIGF1dG8gcmFuZ2VzID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byByYW5nZXMgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBpZiAobV9wcmVzZW50ZXIgJiYgbV9wcmVzZW50
ZXItPm1heFRpbWVMb2FkZWQoKSA+IDApCiAgICAgICAgIHJhbmdlcy0+YWRkKE1lZGlhVGltZTo6
emVyb1RpbWUoKSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fcHJlc2VudGVyLT5tYXhU
aW1lTG9hZGVkKCkpKTsKICAgICByZXR1cm4gcmFuZ2VzOwpAQCAtODg4LDcgKzg4OCw3IEBAIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1
c3RvbVZpZGVvUHJlc2VudGVyKE1lCiAgICAgbV9zb3VyY2VSZWN0LmJvdHRvbSA9IDE7CiAgICAg
bV9zb3VyY2VSZWN0LnJpZ2h0ID0gMTsKIAotICAgIG1fcHJlc2VudGVyRW5naW5lID0gc3RkOjpt
YWtlX3VuaXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKKyAgICBtX3ByZXNlbnRlckVuZ2luZSA9
IG1ha2VVbmlxdWU8RGlyZWN0M0RQcmVzZW50ZXI+KCk7CiAgICAgaWYgKCFtX3ByZXNlbnRlckVu
Z2luZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uLmgKaW5kZXggOTBlOWI3MjE1NzA4YWMyYTJlZmY3ZDRhNmFkZTE0N2VlZTI4
ODQ2Ni4uYTIxNjYxMTBiMzgwMGYxNzY0NzE2NWMyZDAyYTBkYTllYTk1MTAyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaApAQCAtNDcsNiArNDcsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKE1lZGlhUGxheWVyKik7CiAgICAgfk1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpOwpAQCAtMTY4LDYgKzE2OSw3IEBAIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhCiAgICAgfTsKIAogICAgIGNsYXNzIEFzeW5jQ2FsbGJhY2sgOiBwdWJs
aWMgSU1GQXN5bmNDYWxsYmFjaywgcHVibGljIE1lZGlhUGxheWVyTGlzdGVuZXIgeworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFzeW5jQ2Fs
bGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKiwgYm9vbCBldmVudCk7CiAg
ICAgICAgIH5Bc3luY0NhbGxiYWNrKCk7CkBAIC0xOTEsNiArMTkzLDcgQEAgY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmEKICAgICB0eXBlZGVmIERlcXVlPENPTVB0cjxJTUZTYW1wbGU+PiBWaWRlb1Nh
bXBsZUxpc3Q7CiAKICAgICBjbGFzcyBWaWRlb1NhbXBsZVBvb2wgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFZpZGVvU2FtcGxlUG9vbCgp
ID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+VmlkZW9TYW1wbGVQb29sKCkgPSBkZWZhdWx0
OwpAQCAtMjEyLDYgKzIxNSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgY2xhc3Mg
RGlyZWN0M0RQcmVzZW50ZXI7CiAKICAgICBjbGFzcyBWaWRlb1NjaGVkdWxlciB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVmlkZW9TY2hl
ZHVsZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflZpZGVvU2NoZWR1bGVyKCkgPSBk
ZWZhdWx0OwpAQCAtMjU3LDYgKzI2MSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAg
fTsKIAogICAgIGNsYXNzIERpcmVjdDNEUHJlc2VudGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBEaXJlY3QzRFByZXNlbnRlcigpOwog
ICAgICAgICB+RGlyZWN0M0RQcmVzZW50ZXIoKTsKQEAgLTMxOSw2ICszMjQsNyBAQCBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYQogICAgICAgICAsIHB1YmxpYyBJTUZWaWRlb0Rpc3BsYXlDb250cm9s
CiAgICAgICAgICwgcHVibGljIElNRkFzeW5jQ2FsbGJhY2sKICAgICAgICAgLCBwdWJsaWMgTWVk
aWFQbGF5ZXJMaXN0ZW5lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKICAgICAgICAgQ3VzdG9tVmlkZW9QcmVzZW50ZXIoTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uKik7CiAgICAgICAgIH5DdXN0b21WaWRlb1ByZXNlbnRlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29u
dGV4dERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQuaAppbmRleCA2ZmJlMmI1ZWQ3NWFiM2JhMDRlMzAyNTQ5Y2Nl
YjkxNjFhZjVjMDEzLi4xOTA1NDBlMDMzZDliN2NjOGM1NGI4YjFiZWY3NzY5MmJkNWY5NDI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaApAQCAtNDUsNiArNDUsNyBAQCBzdHJ1Y3QgU2hh
ZG93U3RhdGU7CiB9CiAKIGNsYXNzIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCk7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQoSUQy
RDFSZW5kZXJUYXJnZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCmluZGV4IDMzN2ZhZjM3OGRhNzk1NWJlYTYx
MGFlYzkwNzU3OTY2ZDZjNDgyMDAuLjlkN2Q5MmU4ZWFkOTZhMWJiZGZiZDFkOTJkYzk2NjIxYzZj
NDJmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
S0NBSW1hZ2VRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FJbWFnZVF1ZXVlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXS0NBSW1hZ2VRdWV1ZVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFJldGFpblB0cjxDQUltYWdlUXVldWVSZWY+IG1faW1h
Z2VRdWV1ZTsKIH07CkBAIC01MCwxMyArNTEsMTMgQEAgc3RhdGljIHZvaWQgV0tDQUltYWdlUXVl
dWVSZWxlYXNlKENBSW1hZ2VRdWV1ZVJlZiBpcSkKIH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJ
bWFnZVF1ZXVlKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGNhcGFj
aXR5KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2
YXRlPigpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRl
PigpKQogewogICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlID0gYWRvcHRDRih3a0NBSW1hZ2VR
dWV1ZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBjYXBhY2l0eSkpOwogfQogCiBXS0NBSW1hZ2VRdWV1
ZTo6V0tDQUltYWdlUXVldWUoY29uc3QgV0tDQUltYWdlUXVldWUmIG8pCi0gICAgOiBtX3ByaXZh
dGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3By
aXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2
YXRlLT5tX2ltYWdlUXVldWUgPSBvLm1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDcxYTAwYTMw
YzBmYWVkZDliNDBlYzRmZmFkZjE3ODYzOGYyNWI4NTQuLjQyMjUyZDM0YjU0ZmU2YzJjMjZiNTIy
YzY2MGU4NjJmMDU2ZWYwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKQEAgLTQzLDI0ICs0MywyNCBAQCBlbnVtIENsaXBib2FyZERhdGFUeXBl
IHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4o
IkNMSVBCT0FSRCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9B
UkQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckdsb2JhbFNlbGVjdGlvbigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFz
dGVib2FyZD4oIlBSSU1BUlkiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigi
UFJJTUFSWSIpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0YTo6Y3JlYXRl
KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNy
ZWF0ZSgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NF
UlQoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAK
aW5kZXggNDkwMzcxYWQ4OWVmMmU3OTZlMzQwMWFhYzFkYmI4MDZlYTk2NmViMC4uYWY4ZmYzNDI0
NmJjOTcyZjFhNWZmNzM3Zjk5Mjk4MDlmYjY2OWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApAQCAtMjY2LDYgKzI2Niw3IEBAIFZl
Y3RvcjxHZGtBdG9tPiBQYXN0ZWJvYXJkSGVscGVyOjpkcm9wQXRvbXNGb3JDb250ZXh0KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtEcmFnCiBzdGF0aWMgU2VsZWN0aW9uRGF0YSogc2V0dGluZ0NsaXBi
b2FyZFNlbGVjdGlvbjsKIAogc3RydWN0IENsaXBib2FyZFNldERhdGEgeworICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRh
dGEmIHNlbGVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENh
bGxiYWNrKQogICAgICAgICA6IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAgICAsIHNl
bGVjdGlvbkNsZWFyZWRDYWxsYmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykp
CkBAIC0zMDAsNyArMzAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2Fy
ZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWwKIAogICAgIGlmIChu
dW1iZXJPZlRhcmdldHMgPiAwICYmIHRhYmxlKSB7CiAgICAgICAgIFNldEZvclNjb3BlPFNlbGVj
dGlvbkRhdGEqPiBjaGFuZ2Uoc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgY29uc3RfY2FzdDxT
ZWxlY3Rpb25EYXRhKj4oJnNlbGVjdGlvbikpOwotICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPENsaXBib2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBX
VEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IG1h
a2VVbmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdU
Rk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9h
cmRfc2V0X3dpdGhfZGF0YShjbGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENs
aXBib2FyZENvbnRlbnRzQ2FsbGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywg
ZGF0YS5nZXQoKSkpIHsKICAgICAgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShj
bGlwYm9hcmQsIG51bGxwdHIsIDApOwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJk
X3NldF93aXRoX2RhdGEoKSBzdWNjZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sg
dGFrZXMgdGhlIG93bmVyc2hpcCBvZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAppbmRleCBi
ZGNjOTllODU5ZDQ5NzUwNzhmZjNjNWUyZWJjMzg1ZDliOTViOTUyLi43M2UwNzU4YTZlZGQxZTE5
MzIzMTA4M2Y4OWE3ZTdmZGYyMGQxMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKQEAgLTM1LDIwICszNSwyMCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyVGhlbWVHYWRnZXQ+IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoY29u
c3QgUmVuZGVyVGhlbWVHYQogewogICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CiAgICAgY2FzZSBS
ZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJpYzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0
aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8s
IHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0
OjpUeXBlOjpUZXh0RmllbGQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0Pihp
bmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdh
ZGdldDo6VHlwZTo6UmFkaW86CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6Q2hl
Y2s6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2Fk
Z2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdz
LCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QXJyb3c6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGlu
Zm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRp
b24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6Okljb246Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50
LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZUljb25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBj
YXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpTY3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQs
IHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRo
ZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAg
ICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBz
aWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKaW5kZXggMDVkMTJkZDllYWZiZWYwMmE0NTlj
YTUyNzY0MTdhNWI5YjBlODk3Ni4uY2E2ZWQ5MThhNTAzM2UyOTc2ZGI4NGQ4OWMyMDQ4ODcwMGYw
MmJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1l
V2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVX
aWRnZXQuY3BwCkBAIC00Miw0OSArNDIsNDkgQEAgUmVuZGVyVGhlbWVXaWRnZXQmIFJlbmRlclRo
ZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZShUeXBlIHdpZGdldFR5cGUpCiAgICAgYXV0byBhZGRSZXN1
bHQgPSB3aWRnZXRNYXAoKS5lbnN1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdpZGdldFR5cGUp
LCBbd2lkZ2V0VHlwZV0oKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVXaWRnZXQ+IHsK
ICAgICAgICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVX
aWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZF
UlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZF
UlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2Ug
UmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdDoKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJ
RU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5k
ZXJUaGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZF
UlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xsYmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJ
Wk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hP
UklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFy
PihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJ
bmRpY2F0b3IpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3Jv
bGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1v
ZGU6OkluZGljYXRvcik7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZl
cnRpY2FsU2Nyb2xsSW5kaWNhdG9yTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRo
ZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0
aWNhbFBvc2l0aW9uOjpMZWZ0KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlw
ZTo6SG9yaXpvbnRhbFNjcm9sbEluZGljYXRvcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRB
TCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hP
UklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAg
ICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpDaGVja0J1dHRvbjoKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJU
aGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpU
eXBlOjpDaGVjayk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlJhZGlv
QnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVU
b2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVy
VGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlvKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVt
ZVdpZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhl
bWVCdXR0b246OkRlZmF1bHQ6Ok5vKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6
VHlwZTo6QnV0dG9uRGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVt
ZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6
VHlwZTo6Q29tYm9Cb3g6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZUNvbWJvQm94PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVDb21ib0JveD4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
RW50cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVu
dHJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4o
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VsZWN0ZWRFbnRyeToK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJl
bmRlclRoZW1lRW50cnk6OlNlbGVjdGVkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNlYXJjaEVudHJ5OgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+
KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNwaW5CdXR0b246Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+
KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+
KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2xpZGVy
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+
KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNsaWRlcjoKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5U
QVRJT05fSE9SSVpPTlRBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpOwogICAgICAgICBjYXNlIFJl
bmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jl
c3NCYXI6Ok1vZGU6OkRldGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRl
dGVybWluYXRlKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SW5kZXRl
cm1pbmF0ZVByb2dyZXNzQmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5k
ZXRlcm1pbmF0ZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVBy
b2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6TGlzdFZpZXc6Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lSWNvbj4oKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVt
ZVdpZGdldDo6VHlwZTo6V2luZG93OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVXaW5kb3c+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVdpbmRvdz4oKTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVy
VGhlbWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKEd0a09yaWVudGF0aW9uIG9yaWVu
dGF0aW9uLCBNb2RlIG1vZGUKICAgICBpbmZvLnR5cGUgPSBSZW5kZXJUaGVtZUdhZGdldDo6VHlw
ZTo6R2VuZXJpYzsKICAgICBpbmZvLm5hbWUgPSAiY29udGVudHMiOwogICAgIGluZm8uY2xhc3NM
aXN0LmNsZWFyKCk7Ci0gICAgbV9jb250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1f
c2Nyb2xsYmFyLmdldCgpKTsKKyAgICBtX2NvbnRlbnRzID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9z
Y3JvbGxiYXIuZ2V0KCkpOwogICAgIGluZm8ubmFtZSA9ICJzbGlkZXIiOwogICAgIG1fc2xpZGVy
ID0gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShpbmZvLCBtX2NvbnRlbnRzLT5jaGlsZChtX3Ry
b3VnaFBvc2l0aW9uKSk7CiB9CkBAIC0xOTcsNyArMTk3LDcgQEAgUmVuZGVyVGhlbWVDb21ib0Jv
eDo6UmVuZGVyVGhlbWVDb21ib0JveCgpCiAgICAgfTsKICAgICBpbmZvLm5hbWUgPSAiYm94IjsK
ICAgICBpbmZvLmNsYXNzTGlzdCA9IHsgImhvcml6b250YWwiLCAibGlua2VkIiB9OwotICAgIG1f
Ym94ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09S
SUVOVEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKKyAgICBt
X2JveCA9IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRB
VElPTl9IT1JJWk9OVEFMLCBjaGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CiAgICAgUmVuZGVy
VGhlbWVHYWRnZXQqIGJ1dHRvbiA9IG1fYm94LT5jaGlsZCgwKTsKICAgICBpbmZvLmNsYXNzTGlz
dC5yZW1vdmVMYXN0KCk7CiAgICAgbV9idXR0b25Cb3ggPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3Jl
YXRlKGluZm8sIGJ1dHRvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDg0MDdj
MTEwMWRkZDZkYjZlMzc4ZGVmY2IzYWI4MjZiZjcyNjQ1NGQuLjc4Njk3ZWIwMDAwZjdmN2I4MmE3
ZDBlY2Y1Zjk4NWExZTkyODljMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC05
OCw3ICs5OCw3IEBAIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIoYm9vbCBvbmx5
U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3JlYWRlcikgewotICAg
ICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1f
ZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwgZmFsc2UpOworICAgICAgICBtX3JlYWRlciA9
IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0
YU9mZnNldCwgZmFsc2UpOwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3YmE3ZWQ5MTAxY2Uy
NWE5YmY2ZTIzMTA4N2JmMGJjMTE0Y2MyMmQ2Li40ZjM0ODdlMzM0NzY0MDU0NzRjZjg2YjVjNjA2
ZDJjMTk4OGM3Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzM0LDcgKzMz
NCw3IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUs
IEdJRlF1ZXJ5IHF1ZXJ5LCBib29sIGFsbERhdGFSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9yZWFkZXIpIHsKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRklt
YWdlUmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEdJRkltYWdl
UmVhZGVyPih0aGlzKTsKICAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDFjY2E1ZTU5ZWViMzUxYjA1
OGEyMWRiMTM0ZjY0Mzc5MWU1MDc3Y2EuLmQ3NzE4NmVhOTczOWJkZmIyYzU2MjI4ZWU0Y2Y1ZTg4
MjhkODg1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBA
IGJvb2wgR0lGRnJhbWVDb250ZXh0OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6CiAgICAgICAgIGlmICghaXNEYXRhU2l6ZURlZmluZWQo
KSB8fCAhaXNIZWFkZXJEZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
ICAgICBtX2x6d0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNsaWVu
dCwgdGhpcyk7CisgICAgICAgIG1fbHp3Q29udGV4dCA9IG1ha2VVbmlxdWU8R0lGTFpXQ29udGV4
dD4oY2xpZW50LCB0aGlzKTsKICAgICAgICAgaWYgKCFtX2x6d0NvbnRleHQtPnByZXBhcmVUb0Rl
Y29kZSgpKSB7CiAgICAgICAgICAgICBtX2x6d0NvbnRleHQgPSBudWxscHRyOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgR0lGSW1hZ2VSZWFkZXI6
OnNldFJlbWFpbmluZ0J5dGVzKHNpemVfdCByZW1haW5pbmdCeXRlcykKIHZvaWQgR0lGSW1hZ2VS
ZWFkZXI6OmFkZEZyYW1lSWZOZWNlc3NhcnkoKQogewogICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5
KCkgfHwgbV9mcmFtZXMubGFzdCgpLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIG1fZnJhbWVzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7
CisgICAgICAgIG1fZnJhbWVzLmFwcGVuZChtYWtlVW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9m
cmFtZXMuc2l6ZSgpKSk7CiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIHRvIGNsb3Nl
IHRvIGRvTFpXKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDE4NzBiYjE2MGI4
NDk0OGYwYjU5ZGU0NTExNjM2YmE0YzBmMzhmMmUuLmZmNmExYzg3YWU2ZjA1YjQ5Y2NjMTI4YWJl
MDVjMzAzZDZlZWJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBoYXZlIGFscmVhZHkgc2l6ZWQgbV9mcmFtZUJ1
ZmZlckNhY2hlIGJlZm9yZSB0aGlzLCBhbmQKICAgICAgICAgICAgIC8vIHdlIG11c3Qgbm90IHJl
c2l6ZSBpdCBhZ2FpbiBsYXRlciAoc2VlIGNhdXRpb24gaW4gZnJhbWVDb3VudCgpKS4KICAgICAg
ICAgICAgIEFTU0VSVChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpID09IG1fZGlyRW50cmllcy5z
aXplKCkpOwotICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlx
dWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUp
OworICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VS
ZWFkZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOwogICAgICAgICAg
ICAgbV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgICAgICAg
ICAgbV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0QnVmZmVyKCZtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5k
ZXhdKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZWJm
ZTQ1MzBmNzE4NTMwNzJlM2E1M2QyZmNjNjYwZTdhMDk2Y2Y0My4uMGMwNTQ5YjVhM2VlMDRhZjI5
Y2E3ZDYwNjAzNWZjZmU2MTc0ODUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBv
bmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxKUEVHSW1h
Z2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8SlBFR0ltYWdl
UmVhZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2Ug
YnV0IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFp
bGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjMThhMzliNTkxMzNhMzE4ZjE1
MTA1ODFlOGY5MWViZGQ3Njg3OWFiLi42MmNiOWIyMmEwMWYyNmU5ZjJjZDQxZGVhMzgxYjM2MzY4
OTdlZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5zaWduZWQgaGFs
dEF0RnJhbWUsIGJvb2wgYWxsRGF0YVJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9y
ZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFnZVJlYWRl
cj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxQTkdJbWFnZVJlYWRlcj4o
dGhpcyk7CiAKICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2
ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IDIw
OWY4OGY0N2EzYjdjZGMwMTQzZGU5MmUyNGJhZGRmOTY2NGI1ZjQuLmNhZTNkY2YxNjQ3OTZjZWVj
YjY4YjI0NDhmMTEzM2MxMGVjOWMyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZShXQUtXaW5kb3cqIHdpbmRvdykK
ICAgICA6IG1fd2luZG93KHdpbmRvdykKICAgICAsIG1fdG9tYnN0b25lKGFkb3B0TlMoW1tMZWdh
Y3lUaWxlQ2FjaGVUb21ic3RvbmUgYWxsb2NdIGluaXRdKSkKLSAgICAsIG1fem9vbWVkT3V0VGls
ZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUp
KQorICAgICwgbV96b29tZWRPdXRUaWxlR3JpZChtYWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigq
dGhpcywgbV90aWxlU2l6ZSkpCiAgICAgLCBtX3RpbGVDcmVhdGlvblRpbWVyKCp0aGlzLCAmTGVn
YWN5VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1lckZpcmVkKQogewogICAgIFtob3N0TGF5ZXIo
KSBpbnNlcnRTdWJsYXllcjptX3pvb21lZE91dFRpbGVHcmlkLT50aWxlSG9zdExheWVyKCkgYXRJ
bmRleDowXTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0
U2NhbGVDaGFuZ2UoKQogCiAgICAgaWYgKG1fY3VycmVudFNjYWxlICE9IG1fem9vbWVkT3V0VGls
ZUdyaWQtPnNjYWxlKCkpIHsKICAgICAgICAgaWYgKCFtX3pvb21lZEluVGlsZUdyaWQpIHsKLSAg
ICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGls
ZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKKyAgICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3Jp
ZCA9IG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKICAgICAg
ICAgICAgIFtob3N0TGF5ZXIoKSBhZGRTdWJsYXllcjptX3pvb21lZEluVGlsZUdyaWQtPnRpbGVI
b3N0TGF5ZXIoKV07CiAgICAgICAgICAgICBob3N0TGF5ZXJTaXplQ2hhbmdlZCgpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdy
aWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCmluZGV4
IDY2NDdlYzNhMzZkMTU4Nzg2OTRmMDdkMDJiMWZiMWU4YzM1MGQ1M2YuLjMwZWY5ZmMzMWM4N2Yx
MWJmYWZlNGNhNmE5ZWE4MTI0ZDVmYzNhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlR3JpZC5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIExlZ2FjeVRpbGVHcmlkVGlsZTsKIAogY2xhc3MgTGVnYWN5VGlsZUdyaWQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgSW50UG9p
bnQgVGlsZUluZGV4OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IDE5MWFjNzY5NjIxNTEyMTUzZGJkY2IwNzhkZDY2ZjQ2NTUzYmMyMWQuLjAy
NzFiOTNlNzA1Y2UyYzQyZDYzMmZlMmRiMjlhYTQ2ZTgzNmQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02NiwxMiArNjYsMTIgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oImRhdGEg
aW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9h
cmQ+KCJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9hcmQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0
ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsKIH0KIAogI2VuZGlmCkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFu
Z2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggYTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEz
MWNlNjQ2OTAyNTY4NS4uYzJiNWEwYjA4YmRmNzVlOGMwMWNkOWJkMmQ1MWMzMTQ5MzA1ZjM4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC04NCw3ICs4NCw3
IEBAIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZO
ZWVkZWQoTlNVUkwgKnVybCwgTlNTdHJpbmcKICAgICBpZiAoW1FMUHJldmlld0dldFN1cHBvcnRl
ZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OnVwZGF0ZWRNSU1FVHlwZS5nZXQoKV0pIHsK
ICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB1dGkgPSBhZG9wdE5TKFBBTDo6c29mdExpbmtf
UXVpY2tMb29rX1FMVHlwZUNvcHlVVElGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIHVwZGF0ZWRNSU1F
VHlwZS5nZXQoKSkpOwogCi0gICAgICAgIGF1dG8gY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0KCkpOworICAgICAgICBhdXRvIGNvbnZl
cnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKICAg
ICAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZXZpZXdSZXF1ZXN0ID0gY29udmVydGVyLT5wcmV2aWV3
UmVxdWVzdCgpOwogCiAgICAgICAgIC8vIFdlIHVzZSBbcmVxdWVzdCBVUkxdIGhlcmUgaW5zdGVh
ZCBvZiB1cmwgc2luY2UgaXQgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KaW5kZXggMTA3Yzc3Yzc1M2Vh
YjdkOTJkYTI5NDg3Y2E2ZjY1ZjgwNzA0ODIxMy4uNmQ5Y2NlMTViODc0ZjE1ZjE1NDg3NWVhMGVl
NmI5ZjEwMzVhODM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3Jl
YXRlKFJlbW90ZUNvbW1hCiAgICAgaWYgKCFNZWRpYVBsYXllckxpYnJhcnkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21t
YW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29t
bWFuZExpc3RlbmVySU9TPihjbGllbnQpOwogfQogCiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6
OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNs
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmlt
YXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklP
Uy5tbQppbmRleCAwMWYwYTliYjIwYTI0OGI2OTk4ODU2NDcwYWVlMzc0YTk4Y2ZhNTFjLi5lZDYz
MmVhNWUzZjU1OTdlOWQ3NmZkMmU1NTY5NTYxZmU2YzRjMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBT
Y3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJs
ZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxh
YmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9ySU9TOjpTY3JvbGxBbmltYXRvcklPUyhTY3Jv
bGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggMDU0M2VkNWU5ZmM5ZmNmZTNi
YmFhNDAzNTVlNDA3MmY5ZjNjM2Y0MC4uZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3Y2Q2NzZlZmI5
ZGU1YmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0
ZWJvYXJkTGliV1BFLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKTsKIH0KIAogUGFzdGVib2FyZDo6UGFz
dGVib2FyZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IDUxNTIwZGNiYmVhNTkyMTg1YzMyNjcwMmNiYTY5ZmU4OGI0ZDRkZGUuLjhlYjE1Y2Y4
ODUyZDk4NTc0NDdlMDU5YzM4YWNhZWJhMjM0MTVkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgUGFzdGVib2Fy
ZDo6UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcHJvbWkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oTlNHZW5l
cmFsUGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQ
Ym9hcmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCkBAIC0x
MDgsMTMgKzEwOCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PihOU0RyYWdQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJh
Z1Bib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5h
bWVzKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3Rl
Ym9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yy5tbQppbmRleCAwNWNjMDg5NTdlMWQ1MDEyNGRkNjMyZTJhNGM4OTIxMjk4OTY5NjExLi4xYWEy
Y2Q4MDEzMmYyYzIxZWUzOGI5ZmZiZGI4MzM3M2JiZjRjMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGllbnQpOwogfQogCiB2b2lkIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IGE4MzE3
NTEyMmVjMmU0YjZiNmRlNTFiZTZkZjUyNjRiNDFhMWY4YzQuLjY4NjBlMzNjM2EzYjIxNTYzMDVm
YjMxYWY0MjdkYzQ5MDIzNTg3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6
OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQog
CiBTY3JvbGxBbmltYXRvck1hYzo6U2Nyb2xsQW5pbWF0b3JNYWMoU2Nyb2xsYWJsZUFyZWEmIHNj
cm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmlu
ZGV4IDFiOWRjNTM0NWI4ODFlYjM2ZDk2ZmNlMzU4MmRmMGU1NGExMzg1YmEuLmUyNDQ1YmM4MjNm
ODZlMDU1YjBlNTc4NzdkNmNmNTMxYTRmZmNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVh
dGUKICAgICBpZiAoIXdyaXRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5y
ZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFj
a0lkKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
Pih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3Zl
KHZpZGVvVHJhY2tJZCkpOwogfQogCiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYg
d3JpdGVyLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQsIFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCmluZGV4IGQ0YWRiMTUyYmQ0YmFlZjdl
ZjdiZjA1NWY2ZDlhODNkODY3ZTY3ZWIuLmEyMmY1NzFiYzUxNjExZjYxNzQ0OTEwNGNmNWZjODYw
ZTUyZTlhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApAQCAtMzQs
NiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7
CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbCBmaW5hbCA6IHB1YmxpYyBNZWRp
YVJlY29yZGVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+
IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2Fw
dHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBkYjk0ZmRhZjgzYThh
YmQ2N2FmY2ZkNmVhMzY5ZmFhODljNDZjM2UyLi41OWFiMzg0MGZkNzM2Y2ExNDUwMTZjN2Y2NjBl
Y2EzYjA5MDMyNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlLmNwcApAQCAtOTEsMTQgKzkxLDE0IEBAIEF1ZGlvQ2FwdHVyZUZhY3Rvcnkm
IEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpCiAKIEdTdHJlYW1lckF1ZGlv
Q2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1
cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lTWVkaWFT
b3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0cmluZyB7IGRldmljZS5w
ZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hT
YWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0Nh
cHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1
ZGlvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7
CiB9CiAKIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJl
U291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2Fs
dCkKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
QXVkaW8sIFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0
KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1
cmVyPigpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVy
ZXI+KCkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKaW5kZXggOTUzZjNhOGEwZTRmNmEwNjJiOWI5NGE4ZjQx
NTFhNDlmMWE0MzAxZC4uMzQxNTQ5MjUxZWQ1NzFiNzVlZjVkMGMyZGVkZjFlNzdiNzUyMzc4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckF1ZGlvRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBHU3RyZWFtZXJBdWRpb0RhdGEgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgeworY2xhc3Mg
R1N0cmVhbWVyQXVkaW9EYXRhIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKIHB1
YmxpYzoKICAgICBHU3RyZWFtZXJBdWRpb0RhdGEoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxl
LCBHc3RBdWRpb0luZm8gaW5mbykKICAgICAgICAgOiBtX3NhbXBsZShXVEZNb3ZlKHNhbXBsZSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCmluZGV4IGJiZTVhZTczOTU0YWU1M2Nj
MjE2NTc5M2VjMDk2YTg4NzkyYWQ0ZjIuLmY5MmE2YTliMTI2MTEwMGYxOTM0NWY0ZWNhMjE5NGJm
ZTFiOGEzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCkBAIC0zMiw2ICsz
Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lckNhcHR1cmVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJDYXB0
dXJlcihHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLCBHUmVmUHRyPEdzdENhcHM+KTsKICAgICBHU3Ry
ZWFtZXJDYXB0dXJlcihjb25zdCBjaGFyKiBzb3VyY2VGYWN0b3J5LCBHUmVmUHRyPEdzdENhcHM+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3Bw
CmluZGV4IGIzYWYzNWFmODI0ODhkZDRjZjgyMWNkM2VlYWU2M2Q5Y2YxYWNkODQuLmYzZTUxODZi
ZjY2ODc4MWVmYjEzOTVmZTg1MWIzNDMyM2M0MmEzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIEdz
dFN0cmVhbSogd2Via2l0TWVkaWFTdHJlYW1OZXcoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHRy
YWNrKQogCiBjbGFzcyBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIKICAgICA6IHB1Ymxp
YyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFtVHJhY2tP
YnNlcnZlcigpIHsgfTsKICAgICBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIoV2ViS2l0
TWVkaWFTdHJlYW1TcmMqIHNyYykKQEAgLTE0Myw2ICsxNDQsNyBAQCBjbGFzcyBXZWJLaXRNZWRp
YVN0cmVhbVRyYWNrT2JzZXJ2ZXIKIAogY2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcgog
ICAgIDogcHVibGljIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFt
T2JzZXJ2ZXIoKSB7IH07CiAgICAgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcihXZWJLaXRNZWRp
YVN0cmVhbVNyYyogc3JjKQpAQCAtMzUxLDggKzM1Myw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9t
ZWRpYV9zdHJlYW1fc3JjX2NsYXNzX2luaXQoV2ViS2l0TWVkaWFTdHJlYW1TcmNDbGFzcyoga2xh
c3MpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQoV2ViS2l0TWVk
aWFTdHJlYW1TcmMqIHNlbGYpCiB7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYp
OwotICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFtVHJhY2tP
YnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyPihzZWxm
KTsKKyAgICBzZWxmLT5tZWRpYVN0cmVhbU9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRp
YVN0cmVhbU9ic2VydmVyPihzZWxmKTsKICAgICBzZWxmLT5mbG93Q29tYmluZXIgPSBnc3RfZmxv
d19jb21iaW5lcl9uZXcoKTsKICAgICBzZWxmLT5maXJzdEF1ZGlvQnVmZmVyUHRzID0gR1NUX0NM
T0NLX1RJTUVfTk9ORTsKICAgICBzZWxmLT5maXJzdEZyYW1lUHRzID0gR1NUX0NMT0NLX1RJTUVf
Tk9ORTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZS5jcHAKaW5kZXggZTVkOWIwZTAyNzZlZGRhNWRiZDUyMGJjMTBmMzUxODBkMDE1ZDY5Yi4uOTdi
ZTFmMTJmYmIyMmRjMzU4Yzk5YzgzOWY5ODFmMTY1NmE4ZTEyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEyNywxNCArMTI3
LDE0IEBAIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
OjpkaXNwbGF5RmFjdG9yeSgpCiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBT
dHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIgKnNvdXJjZV9mYWN0b3J5KQogICAgIDogUmVh
bHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSks
IFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdT
dHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKKyAgICAsIG1fY2FwdHVyZXIo
bWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9yeSkpCiB7CiAg
ICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZp
Y2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lVmlkZW9DYXB0dXJl
U291cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2Uu
bGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtl
X3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJl
cihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5p
dGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9y
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJl
YW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaAppbmRleCBlNGQ1MDhlMzE3OWFjNDdiZjFkMTBmNGYy
ODdjNTQ3YmMyNTYwMDJhLi5lZmRhMjliZTM5NzE4YmJhNzkxMzQxOGNjNzNlYjlhZDM2ODRmOGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVh
bWVyVmlkZW9EZWNvZGVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rv
cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1l
clZpZGVvRGVjb2RlckZhY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBuZXdTb3VyY2UoU3RyaW5n
IHRyYWNrSWQsIEdzdEVsZW1lbnQgKnNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKaW5kZXggNjk5NWM2MDJjYjE3NDQ3ZmE3
NDFkMzlkNDQ5NGMzNTYxZGMxYmI4Mi4uODM1ODFlODVhMzk2MmQ5N2UwMTc0M2IxMGU1NmNlYWEx
NTFjZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29k
ZXJGYWN0b3J5LmNwcApAQCAtNjAsNiArNjAsNyBAQCBHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0
X3dlYnJ0Y2VuY19kZWJ1Zyk7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1l
clZpZGVvRW5jb2RlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9FbmNvZGVyKGNv
bnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmKQogICAgICAgICA6IG1fZmlyc3RGcmFtZVB0cyhH
U1RfQ0xPQ0tfVElNRV9OT05FKQpAQCAtNTEyLDE0ICs1MTMsMTQgQEAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9FbmNvZGVyPiBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVh
dGVWaWRlb0UKICAgICAgICAgZ19vYmplY3RfZ2V0KHdlYnJ0Y2VuY29kZXIuZ2V0KCksICJlbmNv
ZGVyIiwgJmVuY29kZXIub3V0UHRyKCksIE5VTEwpOwogCiAgICAgICAgIGlmIChlbmNvZGVyKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4o
Zm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZQOEVuY29k
ZXI+KGZvcm1hdCk7CiAKICAgICAgICAgR1NUX0lORk8oIlVzaW5nIFZQOCBFbmNvZGVyIGZyb20g
TGliV2ViUlRDLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx3ZWJydGM6Okxp
YnZweFZwOEVuY29kZXI+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazx3ZWJydGM6OkxpYnZweFZwOEVuY29kZXI+KCk7CiAgICAgfQogCiAgICAgaWYg
KGZvcm1hdC5uYW1lID09IGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9F
bmNvZGVyRmFjdG9yeS5oCmluZGV4IDc5NmEyMGY5NDVlM2E5NTE5OGVjZTEwZmU3MGQ5YjUyZjcy
MzNkMTEuLjE0ODNhMmIyMGIzNTE1YzcxYjdhMGM3YTUyMjYyNmU5ZmY1MzkyMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFt
ZXJWaWRlb0VuY29kZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaApAQCAtMjgs
NiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJWaWRlb0Vu
Y29kZXJGYWN0b3J5IGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlk
ZW9FbmNvZGVyRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZC5oCmluZGV4IGRjNmY4ZjNmYjA1N2ZiNTQwZDkwYzAwMjI2OGE5OTc3NDQx
MDI3N2YuLjRhMDYxZmNjOTUzYjEzZDU4M2JhZTU1NDUxNTViY2UwOGRmOGY5ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEVE1GU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCkBAIC00MCw2ICs0
MCw3IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENEVE1G
U2VuZGVyQmFja2VuZCwgcHJpdmF0ZSB3ZWJydGM6OkR0bWZTZW5kZXJPYnNlcnZlckludGVyZmFj
ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGliV2Vi
UlRDRFRNRlNlbmRlckJhY2tlbmQocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RHRtZlNlbmRl
ckludGVyZmFjZT4mJik7CiAgICAgfkxpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCAyMDdhYjc4YTlhMmJiZTQwYTBl
ZDRkYTY5NTY5YWVkYjEyMjk5ZTIwLi43NDUzM2M1ZmE0ZGYwZDRlNWE2NGQ3NWNlNjI3YjMyNDJj
NDZiODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTc5LDkg
Kzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRB
ZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIH0KIAogY2xhc3MgQmFzaWNQYWNrZXRT
b2NrZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCYXNpY1Bh
Y2tldFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQmIG5ldHdvcmtUaHJlYWQpCi0gICAgICAgIDog
bV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rv
cnk+KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAgOiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+
KCZuZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAgfQogCkBAIC0xNzksNyArMTgwLDcgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMoUGVlckNv
bm5lY3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWdu
YWxpbmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAKLSAgICBmYWN0b3J5
QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
QXVkaW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpOwogfQogCiBzdGF0aWMgaW5saW5l
IFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRz
KCkKQEAgLTI4OCwxMCArMjg5LDEwIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAgICAgYXV0
byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5l
dHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKIAogICAgIGlmICghZmFjdG9yeUFuZFRocmVh
ZHMubmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5h
Z2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAg
ICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogCiAgICAgaWYgKCFm
YWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5KQotICAgICAgICBmYWN0b3J5QW5k
VGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1BhY2tl
dFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKKyAgICAg
ICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSA9IG1ha2VVbmlxdWU8QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZCk7
CiAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeS0+c2V0RGlzYWJsZU5v
bkxvY2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKTsK
IAogICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKmZhY3RvcnlBbmRU
aHJlYWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFj
dG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbnVsbHB0cik7CkBAIC0zMTQsNyArMzE1LDcg
QEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExp
YldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0
OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7CiAgICAgZmFjdG9yeUFuZFRocmVh
ZHMuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgewot
ICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Y3JpY2tl
dDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0
b3J5KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRBbGxvY2F0b3IgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFu
YWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwogICAgICAgICBpZiAoIW1fZW5hYmxlRW51bWVy
YXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAgICAgICAgICAgIGJhc2ljUG9ydEFsbG9jYXRv
ci0+c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRvci0+ZmxhZ3MoKSB8IGNyaWNrZXQ6OlBPUlRB
TExPQ0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1FUkFUSU9OKTsKICAgICAgICAgcG9ydEFsbG9j
YXRvciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2NhdG9yKTsKQEAgLTMzNSw3ICszMzYsNyBAQCBy
dGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNh
dGVHZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGlj
RmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAg
ICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcikKLSAgICAgICAg
ZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+KGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGlu
Z1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5nZXQoKSk7Cisg
ICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFj
dG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5u
ZXR3b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJldHVybiAqZmFjdG9yeUFuZFRocmVhZHMuY2Vy
dGlmaWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmlu
ZGV4IGJkZjA5MDA0MGM5MDY1N2Y0OWYwY2U0YWUyODA3NzM4YTFlOGJlNzkuLjdhYThkZTJlYjNh
NGM1NTVlMDlhNjBkN2Q3YzNhZDgzMTliMTE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5oCkBAIC02NCw2ICs2NCw3IEBAIHN0cnVjdCBSVENSdHBDYXBhYmlsaXRpZXM7CiBl
bnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1wbGVtZW50ZWQsIEJhZFBhcmFtZXRl
ciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExp
YldlYlJUQ1Byb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiBjcmVhdGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmgKaW5kZXggNzcyYTM5NWYwY2Ji
NDNlNzMwNzUwY2NiOTYzNjE2MWNhYTM0MWM2My4uZDNjMzgzOTVjMDc3ZjM0NjA0YjViYjBmNGI0
M2FlMTEwMGNkZjIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2Nv
YS5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyQ29j
b2EgOiBwdWJsaWMgTGliV2ViUlRDUHJvdmlkZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKSA9IGRlZmF1bHQ7CiAg
ICAgfkxpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDE1ZTJhODc4OWMwN2ZiMGQwYWVjNmY2
YzIwZjdiYjE3ZmE4ZGI3ZDIuLjViODI3M2IwODUxOTZmZmQzMGU0ZDdhN2Y2NTUxMGJlYzA4MDMx
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVy
LmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIGJvb2wgTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2
YWlsYWJsZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+
IExpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5Pigp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBMaWJX
ZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAppbmRleCA4MmNiY2IxYzY2ZDMyZWExOGNkZWIxNjc5
MzhkNjhkM2IxMmU0MTlhLi5mN2Q4NWRjNjBhNjFhODE0NmRiYTBkMDNlNTVkNzU3NjJmZTkwZjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
LmNwcApAQCAtMTg4LDggKzE4OCw4IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzCiAgICAgICAg
IGlmICghcmVtb3RlSU9Vbml0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1faW5w
dXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
PihpbnB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7
CisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlv
biA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlv
bik7CiAKICAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVh
dGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMiwgc3RyZWFtVHJhY2soKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBlOGUzZDM0ODZkYTQzYWFj
MWRkNTRiNzhlNmI0ZGY0ZGM5ODE2NzkwLi42MTFhYzE2YjllY2I4Njg5OGEzNzI2NDcxYzc2MjA3
MTJmYjliMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBA
IC0xMzQsNyArMTM0LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25m
aWd1cmUoKQogICAgIGNvbnN0IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CiAgICAgRmls
bE91dEFTQkRGb3JMUENNKG1fc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCksIGNoYW5uZWxDb3Vu
dCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxv
YXQsIGlzRmxvYXQsIGlzQmlnRW5kaWFuLCBpc05vbkludGVybGVhdmVkKTsKIAotICAgIG1fYXVk
aW9CdWZmZXJMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3Ry
ZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFt
ZUNvdW50KTsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZm
ZXJMaXN0PihtX3N0cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBt
X21heGltaXVtRnJhbWVDb3VudCk7CiAKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1h
dERlc2NyaXB0aW9uOwogICAgIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShOVUxMLCAm
bV9zdHJlYW1Gb3JtYXQsIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXREZXNjcmlwdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0K
aW5kZXggZjlkYzRhODQ3ZjRhMzU1ZDljY2ZmNGNkZTAzMDhkMGQ1YzVjNDQ1Ni4uMzg4ZDcxZTI0
YjI1ZWJmNmQ3Nzg4MTRmZGQwYTk2NjNiMTcwNTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNv
bnZlcnRUb1lVVihDVlBpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9w
aXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0
VHlwZUtleTogQChwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpIH0pOworICAgICAgICBtX3Bp
eGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkg
fSk7CiAKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y29udmVydChwaXhlbEJ1
ZmZlcik7CiB9CkBAIC03NSw3ICs3NSw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIoCiAgICAg
ICAgIEludFNpemUgc2l6ZSA9IHsgKGludClDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZm
ZXIpICwgKGludClDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSB9OwogICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJv
dGF0aW9uVG9BbmdsZShyb3RhdGlvbikpOwotICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0p
LCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOworICAgICAgICBt
X3JvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RG
TW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBp
eGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6
Tm8pOwogICAgIH0KIAogICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHBpeGVs
QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAppbmRleCA4ZTI5ZDdiODFhMTczZGZhNTM3
MDVmYTFlNjJjOWU4ODNjNGY5NTAyLi5kNDc2OWQ2OWU0YWYwNDcwZDYyY2U5MGI3NTQ0MGUyODI3
NjllN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrIGZp
bmFsIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9j
ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrLmgKaW5kZXggM2M2ZGUxYzRlYmU0ZWM3NDczNTQwYWVjY2I4OTc2MmIxOTU1NWNkNC4uMTM4
OGFkMDUxMzEwOGIyZWI5MmVjMmJiZTI4OTMzNjUyZTk5YTA4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgK
QEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jayBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1
YmxpYyBUaW1lckV2ZW50QmFzZWRNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAppbmRleCAyZjFmYjU1ZWU2NzFmMmYyMjhmYzUx
NTFkMGRkNjljZjhlYzY5NWNiLi4yYzdjNDFiZDY5NmZmMWY5YmFiMzgzODFhNGI1ODM4NTY4YjE4
YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVy
c01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJz
TW9jay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6UmVt
b3RlRGF0YUNoYW5uZWxOb3RpZmllcihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGkKIAogdm9p
ZCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKCkKIHsKLSAgICBtX2NsaWVudC0+ZGlk
QWRkUmVtb3RlRGF0YUNoYW5uZWwoc3RkOjptYWtlX3VuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgp
KSk7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKG1ha2VVbmlxdWU8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENE
YXRhQ2hhbm5lbEluaXQoKSkpOwogfQogCiBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI6OkRhdGFD
aGFubmVsU3RhdGVOb3RpZmllcihSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCwg
UlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggNTU5OTMzODJiM2ExZGMzNmQ4MzU2YjYxYjI1YzcwMDJlMDcz
NDdmZS4uMzg3YTIxZGFmNDU1MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4ODY5MGQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQg
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCisgICAgcmVnaXN0cmFyKFtdIChN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgc3VwcG9y
dHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpidWZm
ZXJlZCgpIGNvbnN0CiAgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2YXRlKQogICAgICAgICByZXR1
cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCk7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBib29sIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGNjNjdjZTY4
OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjguLjkwNTE0MzE2MjFhOGMxMDhhNmVmMGY1
MWViNjBmNzc0YWZjYzBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE1OSw5ICsxNTksOSBAQCBCbG9i
UmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNv
bnN0IFJlc291cmNlUmVxdWVzdAogICAgICwgbV9hc3luYyB7IGFzeW5jIH0KIHsKICAgICBpZiAo
bV9hc3luYykKLSAgICAgICAgbV9hc3luY1N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNG
aWxlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIG1fYXN5bmNTdHJlYW0gPSBtYWtlVW5pcXVlPEFz
eW5jRmlsZVN0cmVhbT4oKnRoaXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJlYW0gPSBzdGQ6
Om1ha2VfdW5pcXVlPEZpbGVTdHJlYW0+KCk7CisgICAgICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1
ZTxGaWxlU3RyZWFtPigpOwogfQogCiBCbG9iUmVzb3VyY2VIYW5kbGU6On5CbG9iUmVzb3VyY2VI
YW5kbGUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuY3BwCmluZGV4IDgxMTJiOTczZWVmNTRlZDdhNWM3YTUxNGNmMTAy
YWM5OTFlNzY1MzMuLmI1NDFmNjJlZTAwNTIwMzYyYzE1NTdmN2NhNDk2NGEyMzdiODc0OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlY29kaW5nUmVzdWx0RGlzcGEKIAogc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNrKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEZWNvZGVUYXNrPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVUYXNrPigK
ICAgICAgICAgdXJsLnN0cmluZygpLAogICAgICAgICBzY2hlZHVsZUNvbnRleHQsCiAgICAgICAg
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggYTk4NDNmNTBlNWE0MzQwM2Q4
ZjUyZjBhOTY3ZjkwMjc4NjVlOGQ1Ni4uOGRhZWM1NGExMzQyZGFiNTljMzVjYzQ5MjdhMDBmZTYy
Mjk0OTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuaApAQCAtMzcsNiArMzcsNyBAQCBXRUJDT1JFX0VYUE9SVCBleHRlcm4g
Y29uc3QgY2hhciogY29uc3QgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbDsgLy8gVXNlZCBmb3Ig
ZQogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2Vi
S2l0U2VydmljZVdvcmtlcjsgLy8gVXNlZCBmb3IgZXJyb3JzIHRoYXQgaGFwcGVuIHdoZW4gbG9h
ZGluZyBhIHJlc291cmNlIGZyb20gYSBzZXJ2aWNlIHdvcmtlci4KIAogY2xhc3MgUmVzb3VyY2VF
cnJvckJhc2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5k
ZXggMzBjMjdmNTc2YTE3N2U2YjZhYjE5NDc0MGE3ZDkwMjViNjU5ZmNhZC4uNmEzMWUzZTUyN2Y4
ZWM5MmQ2ZjYyYjk2Y2RkODE5NDQxNGI1NWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29uc3Qg
QXRvbVN0cmluZyYgcHJvdG9jb2wKIH0KIAogUmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxl
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9v
bCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpCi0g
ICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhpcywgY29u
dGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYg
JiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZikpCisgICAgOiBkKG1ha2VVbmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4o
dGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250
ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZikpCiB7CiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLmlzVmFsaWQo
KSkgewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUoSW52YWxpZFVSTEZhaWx1cmUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZGFkOTAxMGY5NTcwZWJjNTY3NjMzNTQz
ZmQxZmM1MDJmODQ2OWI5OS4uNzEzYjRkZmIzMGIyYWZkZmJlYWZmNGVlNTM3MGEyNTQ2ZmFkM2E0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xNjksNyArMTY5LDcg
QEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAg
IGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3Nl
bWFwaG9yZS53YWl0KCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9u
c2UKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMjYs
NyArMjI2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICB9OwogICAgIAogICAgIGlm
IChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9t
ZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUo
d29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3Jr
KSk7CiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICB9
OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUt
PmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykp
KTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWlsKENG
RXJyb3JSZWYKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTMxMSw3ICszMTEsNyBAQCBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OgogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVl
KQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVs
c2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFw
aG9yZS53YWl0KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmcK
ICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3Jr
KSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248
dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRC
b2R5RGF0YShDRgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1f
bWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihX
VEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIEJv
b2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6Y2FuUmVzcG9uZFRvUHJvCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVl
dWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5h
cHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAg
ZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2Vt
YXBob3JlLndhaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBjOWI1M2UzMTJhZDg1
NTc2ZDM2NmVmNGRjNTM3NDM5MWZlOGM2OTBjLi5iYTU1ZjAwNDhiOGU0ZGRjNWIwNzM0ZDk5M2Rj
OWIxM2I4Y2IyYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01MjMsNyArNTIzLDcg
QEAgLSAodm9pZClfcmVzdGFydAogCiAgICAgX3Jlc291cmNlID0gc2VsZi5zZXNzaW9uLmxvYWRl
ci5yZXF1ZXN0UmVzb3VyY2Uoc2VsZi5vcmlnaW5hbFJlcXVlc3QsIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoX3Jlc291
cmNlKQotICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2VsZikpOworICAgICAgICBfcmVzb3VyY2Ut
PnNldENsaWVudChtYWtlVW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4o
c2VsZikpOwogfQogCiAtICh2b2lkKV9jYW5jZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGE0NWE1ZjRlNGEwMjhm
ZTZlN2YyZGZiNzVlYzJjOGFlYzkzZWQyYmIuLjEwMTYyNGYyOTAwYTk0Y2M3ZDFhODk5ODk2NzZk
NmI0NWFiN2ZhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIE9wdGlvbmFsPFZlY3Rv
cjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0CiAgICAgICAgICJBTkQgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdMT0IgPykp
ICJcCiAgICAgICAgICJPUkRFUiBCWSBsZW5ndGgocGF0aCkgREVTQywgbGFzdHVwZGF0ZWQiOwog
Ci0gICAgYXV0byBwc3RtdCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2Rh
dGFiYXNlLCBzcWwpOworICAgIGF1dG8gcHN0bXQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVu
dD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpZiAoIXBzdG10KQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCkBAIC01NjYsNyArNTY2LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRl
QWxsQ29va2llcygpCiAKIHZvaWQgQ29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQo
Y29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVu
dCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGlu
dCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlQocmV0ID09IFNRTElURV9P
Syk7CiAgICAgbV9zdGF0ZW1lbnRzLmFkZChzcWwsIFdURk1vdmUoc3RhdGVtZW50KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCmlu
ZGV4IDBjMDNlOWQ2OTJjN2Y2ZGM2MTMwODZmZjI1NWMyMGU1YzZiYmU5ZTkuLjI2ODdhZTc0ZmI5
ZDk5NDI5NzJiZWRjYWM2YWI5YjExNTlhN2U1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCkBAIC00MSw2ICs0MSw3IEBAIGVu
dW0gY2xhc3MgQ29va2llQWNjZXB0UG9saWN5IHsKIH07CiAKIGNsYXNzIENvb2tpZUphckRCIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
b29raWVKYXJEQik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggMTEwMjdjZTNiM2NmNjM4OGY5
OTU0YWFmNDljNDkwM2ZlOTNmZGZmNS4uOGNlMTE0Mzg0OGZiMjMxOGJhMTk5MGVhZDE4ZTE1ZjM3
ZDg0MzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ3VybENhY2hlRW50cnkgewotCisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQ3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291
cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpOwogICAgIH5DdXJsQ2FjaGVF
bnRyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGZhNWM4ZDJkMjFiNjI3MzgxNWQwMjNhNGYy
MDQ1NTAxNmU5NjM4YWYuLmUyYjRiNWRmYmRhNjJhM2MwY2I2YmY5MTgxYmJkNjhmZDdhNGEwODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEN1cmxDYWNoZU1h
bmFnZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIC0tZW5kOyAvLyBMYXN0IGxpbmUgaXMgZW1wdHkK
ICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBpdC0+c3RyaXBX
aGl0ZVNwYWNlKCk7Ci0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CisgICAgICAgIGF1dG8g
Y2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9j
YWNoZURpcik7CiAKICAgICAgICAgaWYgKGNhY2hlRW50cnktPmlzQ2FjaGVkKCkgJiYgY2FjaGVF
bnRyeS0+ZW50cnlTaXplKCkgPCBtX3N0b3JhZ2VTaXplTGltaXQpIHsKICAgICAgICAgICAgIG1f
Y3VycmVudFN0b3JhZ2VTaXplICs9IGNhY2hlRW50cnktPmVudHJ5U2l6ZSgpOwpAQCAtMjEzLDcg
KzIxMyw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlJiBqb2IsIFJlc291cmNlUmVzcG9uc2UmCiAKICAgICAgICAgaW52YWxpZGF0ZUNh
Y2hlRW50cnkodXJsKTsgLy8gSW52YWxpZGF0ZSBleGlzdGluZyBlbnRyeSBvbiAyMDAKIAotICAg
ICAgICBhdXRvIGNhY2hlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1
cmwsICZqb2IsIG1fY2FjaGVEaXIpOworICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlVW5p
cXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2IsIG1fY2FjaGVEaXIpOwogICAgICAgICBib29s
IGNhY2hlYWJsZSA9IGNhY2hlRW50cnktPnBhcnNlUmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsK
ICAgICAgICAgaWYgKGNhY2hlYWJsZSkgewogICAgICAgICAgICAgY2FjaGVFbnRyeS0+c2V0SXNM
b2FkaW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggN2QxNzIxN2MyZTQ0MmFjNmYzZGU4YzRiNjBhOTUy
NmM5ZjY1ODQyYS4uN2IwNGZhMjZhNDJhYjk3OGFlMDdiZDMxZjBlNjkxNTUxYmJjNDYwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgQ3VybENvbnRleHQ6OkN1cmxDb250ZXh0KCkKICAg
ICBpZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFkQXM8c2lnbmVkPigiV0VCS0lUX0NVUkxfTUFY
X0hPU1RfQ09OTkVDVElPTlMiKSkKICAgICAgICAgbWF4SG9zdENvbm5lY3Rpb25zID0gKnZhbHVl
OwogCi0gICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1
bGVyPihtYXhDb25uZWN0cywgbWF4VG90YWxDb25uZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25z
KTsKKyAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1h
eENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOwogCiAj
aWZuZGVmIE5ERUJVRwogICAgIG1fdmVyYm9zZSA9IGVudlZhci5kZWZpbmVkKCJERUJVR19DVVJM
Iik7CkBAIC0zMzYsNyArMzM2LDcgQEAgQ1VSTGNvZGUgQ3VybEhhbmRsZTo6d2lsbFNldHVwU3Ns
Q3R4KHZvaWQqIHNzbEN0eCkKICAgICAgICAgcmV0dXJuIENVUkxFX0FCT1JURURfQllfQ0FMTEJB
Q0s7CiAKICAgICBpZiAoIW1fc3NsVmVyaWZpZXIpCi0gICAgICAgIG1fc3NsVmVyaWZpZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEN1cmxTU0xWZXJpZmllcj4oc3NsQ3R4KTsKKyAgICAgICAgbV9zc2xW
ZXJpZmllciA9IG1ha2VVbmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOwogCiAgICAgcmV0
dXJuIENVUkxFX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENvbnRleHQuaAppbmRleCA3ZDA2MDY4Y2Q5ZDFhZWJlZTQyZDM4NTk0YWJkMDk0
YjkwMTE0NDQ0Li5hNGY4YzAyODI3NjdiMGI0ODc3MGEwNDhlZTg1MmYxNjZlMDdhN2Y1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
aApAQCAtMTQ3LDYgKzE0Nyw3IEBAIGNsYXNzIEN1cmxDb250ZXh0IDogcHVibGljIEN1cmxHbG9i
YWwgewogLy8gQ3VybE11bHRpSGFuZGxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIGNsYXNzIEN1cmxNdWx0aUhhbmRsZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybE11bHRpSGFuZGxlKTsK
IAogcHVibGljOgpAQCAtMjAyLDYgKzIwMyw3IEBAIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7CiAKIGNsYXNzIEN1cmxIYW5kbGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxIYW5kbGUpOwog
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IDlmYzY2ZWMwMjBlMjk5NmQzOGQw
NjBhZDc4ZDM2ZjExNGFlNDgxYzYuLjc4NWQ2Y2I4ZTZkYzhmYWZlOGU4MTBkZmJmZGY0Y2U3NjJm
NGIzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGNvbnN0IFZl
Y3RvcjxjaGFyPiogQ3VybEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKCFtX3Bvc3REYXRhKQotICAgICAgICBtX3Bvc3REYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7
CisgICAgICAgIG1fcG9zdERhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0
YS0+ZmxhdHRlbigpKTsKIAogICAgIHJldHVybiBtX3Bvc3REYXRhLmdldCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCmluZGV4IGE4YmI4ZDgxYTdhYmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZk
ZTJkNTUuLmNjZGJiMjgyMzlmMjJjMzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxN
dWx0aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxN
dWwKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5k
YXJ5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQs
ICpib3VuZGFyeSk7CiB9CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6
ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuaAppbmRleCA4MDRjNzQ0NmM0NTNiNjcxNWY4ODVlOWFmYzI3Mzg4NThlMjY4NzFhLi43
MjBjNjk4MGVkZDNkYWUzZTEyYzYzZjA4YjYzYzZmODk2ZTUzMzAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0
aXBhcnRIYW5kbGU+IGNyZWF0ZUlmTmVlZGVkKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBj
b25zdCBDdXJsUmVzcG9uc2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMDcwMzRiYjYyZDdiYmU2NDBkNGY4
MDFjNGUxODQyMjNkZjI0MTNkYy4uYjJhMjJkYTIyZDZjMDE1NTUwNzU5OTVmNmI4MzA4NmZlYTgx
ZmUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2Fs
bENsaWVudChGdW5jdGlvbjx2b2lkKEN1cmxSZXF1ZXN0JiwgQ3VybFJlcXVlc3RDbGllbnQmKT4m
Jgogdm9pZCBDdXJsUmVxdWVzdDo6cnVuT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0
YXNrKQogewogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUt
PmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykp
KTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUodGFzaykpKTsKICAgICBlbHNlIGlmIChpc01haW5UaHJlYWQoKSkKICAg
ICAgICAgdGFzaygpOwogICAgIGVsc2UKQEAgLTIwNSw3ICsyMDUsNyBAQCBDVVJMKiBDdXJsUmVx
dWVzdDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgYXV0byBodHRwSGVhZGVyRmllbGRzID0gbV9yZXF1
ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICBhcHBlbmRBY2NlcHRMYW5ndWFnZUhlYWRlciho
dHRwSGVhZGVyRmllbGRzKTsKIAotICAgIG1fY3VybEhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUgPSBtYWtlVW5pcXVlPEN1cmxIYW5kbGU+
KCk7CiAKICAgICBtX2N1cmxIYW5kbGUtPnNldFVybChtX3JlcXVlc3QudXJsKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmNwcAppbmRleCA5MTgzN2FmOWYzZTQ3NzNiNWM3MWMxYzI2MGRiOTZm
NTg2YjIxMWFmLi4zYWE1ZjUyZGI2MjdhYmIwZWNjYWYyOTIxM2RjZTEyZmJjNmZiYzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgbV9jdXJsTXVsdGlIYW5kbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0
aUhhbmRsZT4oKTsKKyAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybE11bHRp
SGFuZGxlPigpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhDb25uZWN0cyhtX21heENv
bm5lY3RzKTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4VG90YWxDb25uZWN0aW9ucyht
X21heFRvdGFsQ29ubmVjdGlvbnMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhIb3N0
Q29ubmVjdGlvbnMobV9tYXhIb3N0Q29ubmVjdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaApp
bmRleCBjYTNiYmE4MTM0NDBiZmY2ZTgwMzEyNjQwOTc2Y2MzODhhNzQ4NjRmLi40Yjk1YzBkMTlh
ZDkwNDJkMmFjNzBlZDRiMTMzZjhkMWQwYzYzMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaApA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdFNj
aGVkdWxlckNsaWVudDsKIAogY2xhc3MgQ3VybFJlcXVlc3RTY2hlZHVsZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXF1ZXN0
U2NoZWR1bGVyKTsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8Q3VybFJlcXVlc3RTY2hlZHVs
ZXI+OwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTU0xWZXJpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTU0xWZXJpZmllci5oCmluZGV4IDQ1MmY3MDVmOWNiOGZlMjkxOWNmMjg1NmRl
ZThkMGFkMWE4MTRmMWEuLjNiNTljYjFmODYzNjU0ODgxZDQ2ZTY1YmJlOTU1NGU5ZjY2MzQzNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NM
VmVyaWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTFZlcmlmaWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ3VybFNTTFZlcmlmaWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsU1NMVmVyaWZpZXIpOwogcHVibGljOgogICAgIGVu
dW0gY2xhc3MgU1NMQ2VydGlmaWNhdGVGbGFncyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4
IDQ3YjM3ODNlNjQ2MjlhOTJlZThkYTQwYmQ0Nzk3MGM3OTZlYTU0ODYuLjcwN2QwYTY2M2E3MTg2
ZGIxMDUwNGRkYzI4NjZiNzY5NzdkMzRiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0x
NjMsNyArMTYzLDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ3Vy
bFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmUKIEN1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICghZC0+bV9k
ZWxlZ2F0ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKKyAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IG1h
a2VVbmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKIAogICAgIHJldHVy
biBkLT5tX2RlbGVnYXRlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3Vy
bC5jcHAKaW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5NTVlNjg4OWM2NTcyMGM5ZWZhZjIxYi4uMTNh
ODMyYzI2NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkwMmRmYTk0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
Y2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgIG1fdGFza1F1ZXVlLmFw
cGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKIH0KIAog
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpleGVjdXRlVGFza3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCmlu
ZGV4IDVhMDZmMmVmODllZjVjMjFiZTE1N2M3MWRhMTQxOWVjODQ4MDllZjcuLjc2NTQzYWQxNmMx
NDk0ODU4ODIyOTkxZjMwNWZmN2EzM2UxN2FlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTM2LDYgKzM2
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAog
Y2xhc3MgUHJldmlld0NvbnZlcnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6CiAgICAg
UHJldmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFm
MTg3YjUwNzY1YTlkMTdjMmVjNGVjODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdj
ZWMxZTJmZjZlNzNmMjRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAo
dm9pZCljYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlv
bgogewogICAgIC8vIFN5bmMgeGhyIHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1f
bWVzc2FnZVF1ZXVlKQotICAgICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAg
ICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBj
YXNlLgogICAgIGlmICghc2NoZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVk
UGFpcnMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3
MTkzNGZlYzM3NjNhNWE0YTgyZDkuLmQ0YmE0ZTk1MDQxNWJiNDA2YmFiYzAxYjZkMjBjNjZkNGY4
NGIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNSZXNvbHZlUXVldWVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWlu
dDY0X3QgaWRlbnRpZmllciwgRAogCiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRk
cmVzcy5nZXQoKSksICJpZGVudGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7
CiAKLSAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3Rk
OjptYWtlX3VuaXF1ZTxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkp
OworICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0
aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSkpOwogfQogCiB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNv
bHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5j
cHAKaW5kZXggZTRjOGIwZjEzZTZkMDg5YTU4OTJhYTdhZTBhOWI4MjE1ODViYjlhNC4uYmQwNjJm
NzI4ZjE2ZjcwMGM0NjgwM2JjODM5ZWMwYmM1NTc4ZTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcApAQCAtMTM0LDYgKzEzNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBh
dXRoVHlwZUZyb21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9u
U3BhCiB9CiAKIHN0cnVjdCBTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YSB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhKEdDYW5j
ZWxsYWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZvaWQgKENyZWRlbnRpYWwmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogY2FuY2VsbGFibGUoY2FuY2VsbGFibGUpCiAgICAg
ICAgICwgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCkBAIC0x
NzMsNyArMTc0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENyZWRlbnRpYWxG
cm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjcmV0U2VydmljZVNl
YXJjaERhdGE+KGNhbmNlbGxhYmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
YXV0byBkYXRhID0gbWFrZVVuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFi
bGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBzZWNyZXRfc2VydmljZV9zZWFy
Y2gobnVsbHB0ciwgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQo
KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hf
VU5MT0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NFQ1JFVFMpLCBjYW5jZWxsYWJsZSwKICAgICAg
ICAgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNl
ckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCmlu
ZGV4IDEwZmVjYmM0MTk0Nzk1ZjMyZDFjYTdlNzYwOWFjNGZmMjA5MmNkMjMuLmFhZmVkM2RlNzli
OTlhYWM0NzY5Yzc2YjU1ZjZjMWNiYjY2MWI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmlkaVJlc29s
dmVyQmFzZTxJdGVyYXRvciwgUnVuLCBEZXJpdmVkQ2xhc3M+OjphcHBlbmRSdW5JbnRlcm5hbCgp
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZW5kT2Zmc2V0ID49IHN0YXJ0T2Zmc2V0KQotICAg
ICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPFJ1bj4oc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKKyAgICAgICAgICAg
IG1fcnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxSdW4+KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQg
KyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5jcmVtZW50
KCk7CiAgICAgICAgIG1fc29yID0gbV9lb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZUlDVS5jcHAKaW5kZXggNTllMWZjNzJhMmJmMjk2OTQ1YTg2Zjg1NTJiODYzNzZhOWVh
NTg2ZC4uMmM4Y2NlNzMwODhmYTVhZDBjZjU5NTljY2U0Zjk2OTFiZjM1N2EwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtNDQsNyArNDQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgaWN1OwogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNy
ZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiB9CiAKIExvY2FsZUlDVTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAgLTE2Mywy
MiArMTYzLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29uc3QgVURh
dGVGb3JtYXQqIGRhdGVGb3JtYXQpCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExv
Y2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQs
IFVEYXRlRm9ybWF0U3ltYm9sVHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qg
c2l6ZSkKIHsKICAgICBpZiAoIWRhdGVGb3JtYXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlw
ZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oKTsKIAotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7
CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOwogICAgICAgICBpbnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9y
bWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChz
dGF0dXMgIT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihs
ZW5ndGgpOwogICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIHVkYXRfZ2V0
U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgYnVmZmVyLmRhdGEoKSwg
bGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxz
LT5hcHBlbmQoU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICB9CiAgICAgcmV0
dXJuIFdURk1vdmUobGFiZWxzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVG
b3JtYXQqCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZh
bGxiYWNrTW9udGhMYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9y
PFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdU
SChXVEY6Om1vbnRoRnVsbE5hbWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RG
X0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+
YXBwZW5kKFdURjo6bW9udGhGdWxsTmFtZVtpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQogCiBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMoKQogewot
ICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAg
ICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxz
LT5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIkFNIik7CiAgICAgbGFi
ZWxzLT5hcHBlbmQoIlBNIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0xvY2FsZU5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVO
b25lLmNwcAppbmRleCBiYjZiMjZiYTU5Y2IzNmI5ODliN2U2ZjU4NjMwYzdhN2IzYjU2ZWE3Li43
ODE1YTQ3OGUwMjk3NDU1OTY1NzZjMmRlZDIyMTE5MzZhYTk2YTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3Mg
TG9jYWxlTm9uZSA6IHB1YmxpYyBMb2NhbGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBM
b2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxMb2NhbGVOb25lPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZU5vbmU+
KCk7CiB9CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVOb25lKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmluZGV4IGY4ZTE2NzA4NDlh
OTU4OThhMTQ1N2JjOThkYTkxZTRiZGU3ODRjNzkuLmU1ZjI4MTY2YzZkZDM0YmM1MzUwOWI2YTAw
MjBhODg4OTA3YzJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjSUNVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY0lDVS5jcHAKQEAgLTE1Niw0MyArMTU2LDQzIEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdp
c3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICAvLyBodHRw
Oi8vZGVtby5pY3UtcHJvamVjdC5vcmcvaWN1LWJpbi9jb252ZXhwCiAgICAgICAgIGlmICghc3Ry
Y21wKG5hbWUsICJ3aW5kb3dzLTg3NCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwg
W25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29k
ZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIXN0cmNtcChuYW1lLCAid2luZG93cy05NDkiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFy
KG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOworICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAi
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWN5cmlsbGljIikpIHsKICAgICAgICAgICAg
IHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTdfMy0xMC4yIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18z
LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWdyZWVrIikpIHsKICAgICAgICAg
ICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTZfMi0xMC40Iik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3Mt
Nl8yLTEwLjQiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWNlbnRyYWxldXJyb21hbiIp
KSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0x
MC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihu
YW1lLCAibWFjb3MtMjktMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtdHVya2lz
aCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0z
NS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNV
PihuYW1lLCAibWFjb3MtMzUtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiRVVDLUtSIikp
IHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1l
LCAid2luZG93cy05NDkiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0
ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgY29uc3QgY2hh
ciogY2Fub25pY2FsQ29udmVydGVyTmFtZSA9IHVjbnZfZ2V0Q2Fub25pY2FsTmFtZShuYW1lLCAi
SUFOQSIsICZlcnJvcik7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1MoZXJyb3IpKTsKICAgICAg
ICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lXSB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9u
aWNhbENvbnZlcnRlck5hbWUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENv
ZGVjSUNVPihuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lKTsKICAgICAgICAgfSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNM
YXRpbjEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEu
Y3BwCmluZGV4IDkzMTQ1MzMyOGE2ZjY2OTQ4NWVlMDFmOGE0ZTJjZWRlNTAyNjc3ZmYuLjkyYzY2
MTNjYjFmY2MwZTMwOGE3M2MzNTBhOWUwN2VmNzczNDYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVS
ZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNz
KFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ3aW5kb3dz
LTEyNTIiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0xh
dGluMT4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1JlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjUmVwbGFjZW1lbnQuY3BwCmluZGV4IDE3NjViZjc5MjE1OTc1YjE1N2M4YjNmNzRjNTU3
MmM0NzFlMjExNDEuLmM4YjU1OGM4Y2EyZDNhZmQzMDIxNGJjZmMzN2ExNDU3NzU2YTEzYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFj
ZW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJl
Z2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lk
IFRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIg
cmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigicmVwbGFjZW1lbnQiLCBbXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYx
Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApp
bmRleCBiZTAwNjU2NDQ2NDhmY2UwYzM3OWQzYzc0M2VlMjI3ZWE5ZWRhNmY0Li45MGM0NDc1ZDAy
MGI5ZjQ3MWI1YmU3N2MzY2FhYzBmZGM5OGNiYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBAIHZvaWQg
VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3Ry
YXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3MoVGV4dENv
ZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi0xNkxFIiwgW10g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKICAgICB9
KTsKICAgICByZWdpc3RyYXIoIlVURi0xNkJFIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCBhM2RhZDRlOWQxNjM3
Njg2MzA4OGIxOTcxMGY4MzlkYmJmZmVhOGRkLi5lMWQwYTUzYzcxN2FhZTczOTkzOWY1MWM0ZDMy
OTM0NWFmODljYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjVVRGOC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3Rl
ckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4
dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikK
IHsKICAgICByZWdpc3RyYXIoIlVURi04IiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0
Q29kZWNVVEY4PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCmluZGV4IDI5NmM0NjlmMTY5ZmI5
MTFkYzhkYmQ3YTY0N2VhNTY0MWUyZmZlMTkuLjQ4YWRiYTlkNGIxYTdhOWE2NThhZWY5ZGZhZGY4
NWFkZGU5ZGNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjVXNlckRlZmluZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjVXNlckRlZmluZWQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgVGV4dENvZGVj
VXNlckRlZmluZWQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIg
cmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhUZXh0
Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigieC11c2VyLWRlZmlu
ZWQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VzZXJE
ZWZpbmVkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVc2VyRGVmaW5l
ZD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLm1tCmluZGV4IGE1MTdiZTM0MWY2YWM0YmU4ZTg5M2NmYWQ3YzIyODg0NWQ2YTgy
ODAuLjJiM2QwM2EzOGE1ZDIwMWJiNmRjYjhlYmU0NGY0NmZlZWZjNjdlMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTY3LDcgKzY3LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9jYWxlKGNvbnN0IFN0cmlu
ZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25z
dCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9j
YWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygp
KS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVE
YXRlVGltZUZvcm1hdHRlcihOU0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFyKiBjYWxlbmRhciwg
TlNEYXRlRm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSB0aW1l
U3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNw
cAppbmRleCA2YTE2MGRlY2NmYzkyNmFlZjM3ZGUyM2U5N2Y2MmU4ZjVjNjc5MDZhLi5hYTAwYTRh
ZDZmNWI1OTk4MmI2YjQ3NzMxNzFjOGJjN2MwMzM5MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGlj
IExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlV2luPihMQ0lERnJvbUxvY2Fs
ZShsb2NhbGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9j
YWxlKGxvY2FsZSkpOwogfQogCiBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVj
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5j
cHAKaW5kZXggYWY0NjkxMzkwODFlODBjMTIwN2I4MmM5N2ZkZmEzYzc3MjFhNjUxMS4uMmNlYjQ3
NWU1ZmFlYmI2NzBjNzQxNDQ3NWE0NzI5MjQ5NTJkY2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcg
QEAgc3RhdGljIFVJTlQgZ2V0Q29kZVBhZ2UoY29uc3QgY2hhciogbmFtZSkKIAogc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7
CiB9CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlP
cGVuVlIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlz
cGxheU9wZW5WUi5oCmluZGV4IGRkNmFlNzM2MDQ2NzlmMTg4ZTAxZTExMGU0ZmViZTU5M2Q1Mzdm
MWIuLmY3MWJkOWYwZDU4OWNjMmY4MzliMDY3YzIzZWM4Y2I1MTgxMDY4ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5W
Ui5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlz
cGxheU9wZW5WUi5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSIDogcHVibGljIFZSUGxhdGZvcm1EaXNwbGF5IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBWUlBs
YXRmb3JtRGlzcGxheU9wZW5WUih2cjo6SVZSU3lzdGVtKiwgdnI6OklWUkNoYXBlcm9uZSosIHZy
OjpJVlJDb21wb3NpdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCmluZGV4IGQxZGM2
NzM2ODZmNjUxZTNlMDMyOTFiN2MwMmMzMWIwYzE2OWJiYzIuLmU3Y2Y3MTM3ZTMzYWE1NWJmN2U1
ODVlZTE2NGU2NzNkM2FhZWVjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcApAQCAtMzUs
NyArMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+IFZSUGxh
dGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUoKQogICAgIGlmICghdnI6OlZSX0lzUnVudGltZUlu
c3RhbGxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOwogfQogCiBWUlBsYXRmb3JtTWFuYWdlck9w
ZW5WUjo6flZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSKCkKQEAgLTc4LDcgKzc4LDcgQEAgVmVjdG9y
PFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0
VlJEaXNwbGF5cygpCiAKICAgICBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IGRp
c3BsYXlzOwogICAgIGlmICghbV9kaXNwbGF5KQotICAgICAgICBtX2Rpc3BsYXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVyb25lLCBj
b21wb3NpdG9yKTsKKyAgICAgICAgbV9kaXNwbGF5ID0gbWFrZVVuaXF1ZTxWUlBsYXRmb3JtRGlz
cGxheU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CiAgICAgZGlzcGxh
eXMuYXBwZW5kKG1ha2VXZWFrUHRyKCptX2Rpc3BsYXkpKTsKICAgICByZXR1cm4gZGlzcGxheXM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9W
UlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCmluZGV4IDZhNDM4N2NjMzA4MTVlMDBjMzQxNmM4OTY2
YWQyOWQ0YjczZjcwZDkuLjZhNzgyM2JjN2I5NWVkNDBkY2VjZGYwZjU3MzNlMTZkODQ0NWFhNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3Jt
TWFuYWdlck9wZW5WUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9W
UlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSOwogCiBjbGFzcyBWUlBsYXRmb3Jt
TWFuYWdlck9wZW5WUiA6IHB1YmxpYyBWUlBsYXRmb3JtTWFuYWdlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWUlBs
YXRmb3JtTWFuYWdlck9wZW5WUj4gY3JlYXRlKCk7CiAgICAgZXhwbGljaXQgVlJQbGF0Zm9ybU1h
bmFnZXJPcGVuVlIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYWJhZGRjN2ZiY2EyMzU5ZWZmNWI5ODExYzE5NWY2YjVh
YmMxYmE4My4uMTY5Nzg1NWZlNzJmNjM3ZTY1YWQ0Nzc3MmFmYTYxYzc0NzE5MjQ0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTMsNyAr
OTMsNyBAQCBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jKEhX
TkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gdwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICBhdXRvIHBh
c3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0
ZWJvYXJkID0gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOwogICAgIENPTVB0cjxJRGF0YU9iamVj
dD4gY2xpcGJvYXJkRGF0YTsKICAgICBpZiAoIVNVQ0NFRURFRChPbGVHZXRDbGlwYm9hcmQoJmNs
aXBib2FyZERhdGEpKSkKICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IDA7CkBAIC0xMDYsMTYgKzEw
NiwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9y
RHJhZ0FuZERyb3AoKQogewogICAgIENPTVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAg
ICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CiB9CiAKIC8vIHN0
YXRpYwogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRy
YWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBpZiAoZHJhZ0RhdGEu
cGxhdGZvcm1EYXRhKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9h
cmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogICAgIC8vIEZJWE1FOiBTaG91
bGQgYWRkIGEgY29uc3Qgb3ZlcmxvYWQgb2YgZHJhZ0RhdGFNYXAgc28gd2UgZG9uJ3QgbmVlZCBh
IGNvbnN0X2Nhc3QgaGVyZS4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
Pihjb25zdF9jYXN0PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0
YSkuZHJhZ0RhdGFNYXAoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKaW5kZXggMTk2NDljNTY2Y2ZjZjVmNDI0
MzA5ZDFkOGQxMDBiMGI0ZmY3NzBhOC4uNmY3ZjRiYTE2NjBiNGY3YTk3NzIxMmM4NTYzYTQzYzY2
NWUzMGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudURCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51REIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgaW50IFNlYXJjaFBvcHVwTWVudURCOjpl
eGVjdXRlU2ltcGxlU3FsKGNvbnN0IFN0cmluZyYgc3FsLCBib29sIGlnbm9yZUVycm9yKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRl
UHJlcGFyZWRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsK
KyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBzcWwpOwogICAgIGludCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NF
UlRfVU5VU0VEKHJldCwgcmV0ID09IFNRTElURV9PSyk7CiAgICAgcmV0dXJuIHN0YXRlbWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKaW5kZXggZGJm
OTlhNDVjZTcwM2E5ZDg1N2EwZTYwMTlkNjgwNmRkMTFmYTE3Yi4uMjQxMDAzYTEwMDMxYTNkN2U2
ZDdhYTFlMjRhNDljYjk4OTgyMGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dDRGF0YU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1dDRGF0YU9iamVjdC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBTVERNRVRIT0RJTVAgV0NEYXRh
T2JqZWN0OjpTZXREYXRhKEZPUk1BVEVUQyogcGZvcm1hdGV0YywgU1RHTUVESVVNKiBwbWVkaXVt
LCBCTwogICAgIGlmICghcGZvcm1hdGV0YyB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAotICAgIGF1dG8gZmV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFURVRDPigp
OworICAgIGF1dG8gZmV0YyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1B
VEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVy
PiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmZXRjLmdldCgpLCBz
aXplb2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmlu
ZGV4IGMwMDRmYzllNzA0YTZhZDMyMzQ5ZmI4MjRjZGM1ZGRkMDM2MDFiNWMuLjQ3OTgxYWU2OTkx
ZGM2NDkxNTIwZmM4MjQzMmVjYzQ5NTg2NDQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NT
RmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkK
IAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKIAotICAgIGF1dG8gYnVpbGRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKKyAg
ICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0Vm
ZmVjdCk7CiAgICAgbV9zb3VyY2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNl
QWxwaGE6OmVmZmVjdE5hbWUoKSk7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBj
aGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0
ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVM
YXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNw
cAppbmRleCAwMTMzNzg3ZDlkMzA2MmIxY2E3OWIxNjA3OTYzZjIwYzEwNzFlZDUzLi5iZDNjOWJl
ZTg3Mjk4NmVjNjFiMWEzMGEwNDk1YjhjMGEyNmZkNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGlj
IHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJ
dGVyYXRvciBpdGVyKQogCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGNyZWF0ZVJ1
bihpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2
ZXImIHJlc29sdmVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHN0
YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250
ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKIH0KIAogdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBw
ZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXJ0LCBp
bnQgZW5kLCBSZW5kZXJPYmplY3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikK
QEAgLTEzMCwxMiArMTMwLDEyIEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNG
b3JPYmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFyCiBzdGQ6OnVuaXF1
ZV9wdHI8Um9vdElubGluZUJveD4gQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVC
b3goKQogewogICAgIGlmIChpczxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7Ci0gICAgICAgIGF1
dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSb290SW5saW5lQm94Pihkb3duY2FzdDxSZW5k
ZXJTVkdUZXh0PihtX2Zsb3cpKTsKKyAgICAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR1Jv
b3RJbmxpbmVCb3g+KGRvd25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOwogICAgICAgICBi
b3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBib3g7CiAg
ICAgfQogICAgICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94
PihtX2Zsb3cpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7
CiB9CiAKIFJvb3RJbmxpbmVCb3gqIENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRS
b290SW5saW5lQm94KCkKQEAgLTEwODUsNyArMTA4NSw3IEBAIGlubGluZSBCaWRpUnVuKiBDb21w
bGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4m
IGJpCiAgICAgICAgIHdoaWxlIChCaWRpQ29udGV4dCogcGFyZW50ID0gYmFzZUNvbnRleHQtPnBh
cmVudCgpKQogICAgICAgICAgICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7CiAKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJpZGlSdW4+IG5ld1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxC
aWRpUnVuPihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3Bh
Y2VSdW4tPnJlbmRlcmVyKCksIGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBtYWtlVW5pcXVlPEJp
ZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFj
ZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAg
IHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIHRyYWlsaW5n
U3BhY2VSdW4gPSBuZXdUcmFpbGluZ1J1bi5nZXQoKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2b2lkIENvbXBsZXhM
aW5lTGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSkKICAgICAgICAgaWYgKGxheW91dFN0YXRlLmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5l
KCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0
Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAgICAgIExh
eW91dFVuaXQgYm90dG9tTGF5b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90
dG9tTGF5b3V0T3ZlcmZsb3coKTsKLSAgICAgICAgICAgIGF1dG8gbmV3TGluZUJveCA9IHN0ZDo6
bWFrZV91bmlxdWU8VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgICAg
ICAgICAgYXV0byBuZXdMaW5lQm94ID0gbWFrZVVuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxp
bmVCb3g+KG1fZmxvdyk7CiAgICAgICAgICAgICBhdXRvIHRyYWlsaW5nRmxvYXRzTGluZUJveCA9
IG5ld0xpbmVCb3guZ2V0KCk7CiAgICAgICAgICAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94
KFdURk1vdmUobmV3TGluZUJveCkpOwogICAgICAgICAgICAgdHJhaWxpbmdGbG9hdHNMaW5lQm94
LT5zZXRDb25zdHJ1Y3RlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmNwcAppbmRleCA0Y2RkMTM5YzQ4NzUxNmVhMGU3YjEyMTNiNzAzYmQzNDI3YWIwMThj
Li5hNmM2NDgxOGM0OTc0NTYwOTBmNjYyM2MzMDRiNWQ2Mjc3MDdhZTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBG
bG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94JiByZW5kZXJlciwgVHlwZSB0
eXBlLCBjb25zdCBMYXlvdXRSZWN0JgogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+
IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikKIHsKLSAgICBhdXRv
IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKKyAg
ICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKICAg
ICBvYmplY3QtPnNldFNob3VsZFBhaW50KCFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigp
KTsgLy8gSWYgYSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3Ro
ZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgogICAgIG9iamVjdC0+c2V0SXNEZXNjZW5kYW50KHRy
dWUpOwogICAgIHJldHVybiBvYmplY3Q7CkBAIC04MywxMiArODMsMTIgQEAgc3RkOjp1bmlxdWVf
cHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVu
ZGVyZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6
OmNvcHlUb05ld0NvbnRhaW5lcihMYXlvdXRTaXplIG9mZnNldCwgYm9vbCBzaG91bGRQYWludCwg
Ym9vbCBpc0Rlc2NlbmRhbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3Qo
KS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQo
KSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmxv
YXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5s
b2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwg
c2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGlu
Z09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50KCkgY29uc3QKIHsKLSAg
ICBhdXRvIGNsb25lT2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVu
ZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFp
bnQsIG1faXNEZXNjZW5kYW50KTsKKyAgICBhdXRvIGNsb25lT2JqZWN0ID0gbWFrZVVuaXF1ZTxG
bG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5P
ZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKICAgICBjbG9uZU9iamVjdC0+
bV9wYWdpbmF0aW9uU3RydXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBjbG9uZU9iamVjdC0+
bV9pc1BsYWNlZCA9IG1faXNQbGFjZWQ7CiAgICAgcmV0dXJuIGNsb25lT2JqZWN0OwpAQCAtMzcy
LDcgKzM3Miw3IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJl
ZSgpCiAgICAgaWYgKG1fc2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
bGFjZWRGbG9hdHNUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7
CisgICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+
KCk7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zZXQuYmVnaW4oKSwgZW5kID0gbV9zZXQuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmpl
Y3QgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCBjNzJkMDFkODFjN2Q3MTY2MTU3OWUzYmEw
MTgzMGU0MjlkMzBmNjg4Li4xZTkxMWFlNjBhNjEyNjg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4N2UyOTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2ln
bmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0lu
ZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3Jp
ZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5n
VHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFy
ZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNw
YW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyBy
b3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5k
ZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0
cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3Bh
biksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBt
X2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUg
aXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4g
dGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdU
cmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggNWZjMzI4MTUz
YTZkOGJmYzQ4ODNiYTUxMjFjY2EwYmY2ZjJlOTlkMC4uNjYwOTA5OGY5Yzg3MDQ2ODgxMTQxOGFi
MTc4Mjk0MTdiZWUyZDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRCYXNlbGluZUFsaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRCYXNlbGluZUFsaWdubWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdyaWRCYXNl
bGluZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KEl0ZW1Qb3NpdGlv
biBwcmVmZXJlbgogCiAgICAgLy8gTG9va2luZyBmb3IgYSBjb21wYXRpYmxlIGJhc2VsaW5lLXNo
YXJpbmcgZ3JvdXAuCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlbGluZUNvbnRleHQ+
KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOworICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVm
ZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvKiBjb250
ZXh0ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICAgICAgY29udGV4dC0+
dXBkYXRlU2hhcmVkR3JvdXAoY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uY3BwCmluZGV4IGFkZGVkYzQyOGIxZjJmZGIzNTAzZTgxMjYyNmI5NzY5M2EzZTdiNWYuLmIy
YjAxMWJkZjc0OTFiMzVhYjFkYmI3YWM2YjI2Mzk2MTcyMWNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC02
ODEsNyArNjgxLDcgQEAgZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZs
ZXhGYWN0b3JVbml0U2l6ZShjb25zdCBWZWN0b3I8R3JpZFRyYWMKICAgICAgICAgICAgIGxlZnRP
dmVyU3BhY2UgLT0gYmFzZVNpemU7CiAgICAgICAgICAgICBmbGV4RmFjdG9yU3VtIC09IGZsZXhG
YWN0b3I7CiAgICAgICAgICAgICBpZiAoIXRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUpCi0gICAg
ICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
VHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhp
YmxlID0gbWFrZVVuaXF1ZTxUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgdHJhY2tzVG9U
cmVhdEFzSW5mbGV4aWJsZS0+YWRkKGluZGV4KTsKICAgICAgICAgICAgIHZhbGlkRmxleEZhY3Rv
clVuaXQgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMTI2MCwxMCArMTI2MCwxMCBAQCB2b2lkIEdy
aWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbiwgdW5zaWduZQogICAgIG1fc2l6aW5nT3BlcmF0aW9uID0gc2l6aW5nT3BlcmF0aW9u
OwogICAgIHN3aXRjaCAobV9zaXppbmdPcGVyYXRpb24pIHsKICAgICBjYXNlIEludHJpbnNpY1Np
emVDb21wdXRhdGlvbjoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5k
ZWZpbml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVu
aXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVHJhY2tTaXppbmc6Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVl
PERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtl
VW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDcz
YjM2NTQ3NjcxNDBhMDM3MGU0ZDU2OTU2ZTU0ZjI2NzRiNThiMzYuLmIzYzQwMDc5MDJkZjYwNDg2
MmE1YWM3YzI5OThjYmFkNzNmMTEyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJl
c3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90
aGVyLmlzT3ZlcldpZGdldCgpKQogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBj
YXNlIG9mIGxpc3QgaGl0IHRlc3QuCi0gICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIu
bV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIu
bV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CisgICAgbV9saXN0QmFzZWRUZXN0UmVz
dWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigq
b3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CiB9CiAKIEhpdFRlc3RSZXN1
bHQ6On5IaXRUZXN0UmVzdWx0KCkgPSBkZWZhdWx0OwpAQCAtMTEzLDcgKzExMyw3IEBAIEhpdFRl
c3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBv
dGhlcikKICAgICBtX2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAg
Ly8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBt
X2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6
Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVs
bHB0cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RS
ZXN1bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQp
IDogbnVsbHB0cjsKIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTY5MCwxNCArNjkwLDE0IEBA
IHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxCiBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBI
aXRUZXN0UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1f
bGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQg
PSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1
bHQ7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVM
aXN0QmFzZWRUZXN0UmVzdWx0KCkKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkK
LSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0
PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+
KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IDMzMmYyODUzMWQzODhjZmUyYzNkNThh
OTRjM2YyNjE3ZGNiOTE2NjYuLjEwYTE5NDM2YjRiYWM2NTYyOTA2YjI0MWE3MGQxZDU4NTIwMDAy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDIsNiAr
NDIsNyBAQCBjbGFzcyBTY3JvbGxiYXI7CiBlbnVtIGNsYXNzIEhpdFRlc3RQcm9ncmVzcyB7IFN0
b3AsIENvbnRpbnVlIH07CiAKIGNsYXNzIEhpdFRlc3RSZXN1bHQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPE5v
ZGU+PiBOb2RlU2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5o
CmluZGV4IDQzYzY1Mzg3NmNmOTg0YTYyYjZmYzkyOTQ1ZDNkZDY5MGNhM2VkYjkuLjE1ZmRlNTRk
ZTVkMzQ5OTIwODJkNDM5YTI5MGE1MWY5MjVjYzJkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC00OTMsNyArNDkzLDcgQEAgc3RhdGljIGlubGluZSB1
bnNpZ25lZCBudW1iZXJPZklzb2xhdGVBbmNlc3RvcnMoY29uc3QgSW5saW5lSXRlcmF0b3ImIGl0
ZXIpCiAvLyBvZiBCaWRpUmVzb2x2ZXIgd2hpY2gga25vd3Mgbm90aGluZyBhYm91dCBSZW5kZXJP
YmplY3RzLgogc3RhdGljIGlubGluZSB2b2lkIGFkZFBsYWNlaG9sZGVyUnVuRm9ySXNvbGF0ZWRJ
bmxpbmUoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgUmVuZGVyT2JqZWN0JiBvYmosIHVu
c2lnbmVkIHBvcywgUmVuZGVyRWxlbWVudCYgcm9vdCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
QmlkaVJ1bj4gaXNvbGF0ZWRSdW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHBvcywgcG9z
LCBvYmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IG1ha2VVbmlxdWU8QmlkaVJ1bj4ocG9zLCBw
b3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CiAgICAgLy8gRklY
TUU6IGlzb2xhdGVkUnVucygpIGNvdWxkIGJlIGEgaGFzaCBvZiBvYmplY3QtPnJ1biBhbmQgdGhl
biB3ZSBjb3VsZCBjaGVhcGx5CiAgICAgLy8gQVNTRVJUIGhlcmUgdGhhdCB3ZSBkaWRuJ3QgY3Jl
YXRlIG11bHRpcGxlIG9iamVjdHMgZm9yIHRoZSBzYW1lIGlubGluZS4KICAgICByZXNvbHZlci5z
ZXRXaGl0ZXNwYWNlQ29sbGFwc2luZ1RyYW5zaXRpb25Gb3JJc29sYXRlZFJ1bigqaXNvbGF0ZWRS
dW4sIHJlc29sdmVyLndoaXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUoKS5jdXJyZW50VHJhbnNpdGlv
bigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBN
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKaW5k
ZXggMjg1YWE1ZjlmZTliYWU3ZGZjODUyOGMyNGMxZDU1NjdkNDEyOWZmMy4uOTZhZjk1YTQ1NTY5
NTBlODEyNmI5NTM3MzUzNGQ0NzZkYWUzNTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKQEAgLTcxLDYgKzcxLDcgQEAgc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlY3RMaXN0JiByZWN0TGlzdCkK
IC8vIENoZWNraW5nIGZvciBvdmVybGFwIGludm9sdmVzIGZpbmRpbmcgdGhlIG5vZGUgZm9yIHRo
ZSBjbGlwcGluZyBsYXllciBlbmNsb3NpbmcgdGhlIGdpdmVuIGxheWVyIChvciB0aGUgcm9vdCks
CiAvLyBhbmQgY29tcGFyaW5nIGFnYWluc3QgdGhlIGJvdW5kcyBvZiBlYXJsaWVyIHNpYmxpbmdz
LgogY2xhc3MgT3ZlcmxhcE1hcENvbnRhaW5lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgT3ZlcmxhcE1hcENvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllciYg
cm9vdExheWVyKQogICAgICAgICA6IG1fcm9vdFNjb3BlKHJvb3RMYXllcikKQEAgLTI5Niw3ICsy
OTcsNyBAQCBib29sIExheWVyT3ZlcmxhcE1hcDo6b3ZlcmxhcHNMYXllcnMoY29uc3QgUmVuZGVy
TGF5ZXImIGxheWVyLCBjb25zdCBMYXlvdXRSZWN0JgogCiB2b2lkIExheWVyT3ZlcmxhcE1hcDo6
cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCkKIHsKLSAgICBtX292ZXJsYXBTdGFjay5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxPdmVybGFwTWFwQ29udGFpbmVyPihtX3Jvb3RMYXllcikpOworICAg
IG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1f
cm9vdExheWVyKSk7CiB9CiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpwb3BDb21wb3NpdGluZ0Nv
bnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA0
ZGJhM2YxYzQxMDVhZmIwZThlNGM3NmE3Y2ZjYjllNWZmZjcxODU0Li4wMDE5MjU4ODJlNTAyOGM4
YTIwOTliNGJiZGUzNzMxNjViNGEyNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgdm9pZCBpbnNlcnRJbnRvVHJh
Y2tlZFJlbmRlcmVyTWFwcyhjb25zdCBSZW5kZXJCbG9jayYgY29udGFpbmVyLCBSZW5kZXJCbwog
ICAgIH0KICAgICAKICAgICBhdXRvJiBkZXNjZW5kYW50U2V0ID0gcGVyY2VudEhlaWdodERlc2Nl
bmRhbnRzTWFwLT5lbnN1cmUoJmNvbnRhaW5lciwgW10gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlOwogCiAgICAgYm9vbCBhZGRlZCA9IGRlc2NlbmRhbnRTZXQtPmFkZCgmZGVzY2Vu
ZGFudCkuaXNOZXdFbnRyeTsKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgdm9pZCBpbnNlcnRJ
bnRvVHJhY2tlZFJlbmRlcmVyTWFwcyhjb25zdCBSZW5kZXJCbG9jayYgY29udGFpbmVyLCBSZW5k
ZXJCbwogICAgIH0KICAgICAKICAgICBhdXRvJiBjb250YWluZXJTZXQgPSBwZXJjZW50SGVpZ2h0
Q29udGFpbmVyTWFwLT5lbnN1cmUoJmRlc2NlbmRhbnQsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJCbG9jayo+PigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKCFjb250YWluZXJTZXQtPmNvbnRhaW5zKCZj
b250YWluZXIpKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBQb3NpdGlvbmVkRGVzY2VuZGFu
dHNNYXAgewogICAgICAgICB9CiAKICAgICAgICAgYXV0byYgZGVzY2VuZGFudHMgPSBtX2Rlc2Nl
bmRhbnRzTWFwLmVuc3VyZSgmY29udGFpbmluZ0Jsb2NrLCBbXSB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOwog
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgYm9vbCBpc05ld0VudHJ5ID0g
bW92ZURlc2NlbmRhbnRUb0VuZCA9PSBNb3ZlRGVzY2VuZGFudFRvRW5kOjpZZXMgPyBkZXNjZW5k
YW50cy0+YXBwZW5kT3JNb3ZlVG9MYXN0KCZwb3NpdGlvbmVkRGVzY2VuZGFudCkuaXNOZXdFbnRy
eQpAQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBpbmxpbmUgVXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb24qIGN1cnJlbnRVcGRhdGVTY3JvbGxJbmZvQWZ0CiB2b2lkIFJlbmRl
ckJsb2NrOjpiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCkKIHsK
ICAgICBpZiAoIXVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSkK
LSAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpID0g
c3RkOjptYWtlX3VuaXF1ZTxEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1N0YWNrPigpOworICAgICAg
ICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBtYWtlVW5p
cXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7CiAgICAgaWYgKHVwZGF0ZVNjcm9s
bEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKS0+aXNFbXB0eSgpIHx8IGN1cnJlbnRV
cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpLT52aWV3ICE9ICZ2aWV3KCkp
CiAgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKS0+
YXBwZW5kKFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKHZpZXcoKSkpOwog
ICAgICsrY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCktPm5l
c3RlZENvdW50OwpAQCAtNjIwLDcgKzYyMCw3IEBAIHN0YXRpYyBSZW5kZXJCbG9ja1JhcmVEYXRh
JiBlbnN1cmVCbG9ja1JhcmVEYXRhKGNvbnN0IFJlbmRlckJsb2NrJiBibG9jaykKICAgICAKICAg
ICBhdXRvJiByYXJlRGF0YSA9IGdSYXJlRGF0YU1hcC0+YWRkKCZibG9jaywgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwogICAgIGlmICghcmFyZURhdGEpCi0gICAgICAgIHJhcmVEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOworICAgICAgICByYXJlRGF0YSA9
IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tSYXJlRGF0YT4oKTsKICAgICByZXR1cm4gKnJhcmVEYXRh
LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwCmluZGV4IDdmMWU2Mzk3MDYzYmU0ZjhkZjliNTdmMTc1ZDZlMjZlNzhlZmIxMzQuLmI4NjQy
ZDE3MjAzYmQ0YmYyNWJkZTE3MWY5ODcwYWY3ZDVhNDNhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCYgcmUKICAgICBtX3NpbXBsZUxpbmVMYXlvdXQgPSBudWxscHRyOwogCiAg
ICAgaWYgKCFtX2NvbXBsZXhMaW5lTGF5b3V0KQotICAgICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOworICAgICAgICBt
X2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMp
OwogCiAgICAgbV9jb21wbGV4TGluZUxheW91dC0+bGF5b3V0TGluZUJveGVzKHJlbGF5b3V0Q2hp
bGRyZW4sIHJlcGFpbnRMb2dpY2FsVG9wLCByZXBhaW50TG9naWNhbEJvdHRvbSk7CiB9CkBAIC0y
MDE5LDcgKzIwMTksNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0TGluZUdyaWRCb3go
KQogICAgIAogICAgIHNldExpbmVHcmlkQm94KDApOwogCi0gICAgYXV0byBsaW5lR3JpZEJveCA9
IHN0ZDo6bWFrZV91bmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMpOworICAgIGF1dG8gbGluZUdy
aWRCb3ggPSBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KCp0aGlzKTsKICAgICBsaW5lR3JpZEJv
eC0+c2V0SGFzVGV4dENoaWxkcmVuKCk7IC8vIE5lZWRlZCB0byBtYWtlIHRoZSBsaW5lIGFzY2Vu
dC9kZXNjZW50IGFjdHVhbGx5IGJlIGhvbm9yZWQgaW4gcXVpcmtzIG1vZGUuCiAgICAgbGluZUdy
aWRCb3gtPnNldENvbnN0cnVjdGVkKCk7CiAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9u
dHNNYXAgdGV4dEJveERhdGFNYXA7CkBAIC0yMjYwLDcgKzIyNjAsNyBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6Y2xpcE91dEZsb2F0aW5nT2JqZWN0cyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBj
b25zdCBQYWludAogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxvYXRpbmdPYmplY3Rz
KCkKIHsKLSAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdP
YmplY3RzPigqdGhpcyk7CisgICAgbV9mbG9hdGluZ09iamVjdHMgPSBtYWtlVW5pcXVlPEZsb2F0
aW5nT2JqZWN0cz4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVtb3ZlRmxv
YXRpbmdPYmplY3RzKCkKQEAgLTM2NzcsNyArMzY3Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjplbnN1cmVMaW5lQm94ZXMoKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1fY29t
cGxleExpbmVMYXlvdXQpOwotICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CisgICAgbV9jb21wbGV4TGluZUxheW91dCA9
IG1ha2VVbmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKIAogICAgIGlmIChTaW1wbGVM
aW5lTGF5b3V0OjpjYW5Vc2VGb3JMaW5lQm94VHJlZSgqdGhpcywgKm1fc2ltcGxlTGluZUxheW91
dCkpIHsKICAgICAgICAgU2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSgqdGhp
cywgKm1fc2ltcGxlTGluZUxheW91dCk7CkBAIC0zNzM1LDcgKzM3MzUsNyBAQCBSZW5kZXJCbG9j
a0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhJiBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZVJh
cmVCbG9ja0Zsb3dEYQogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1hdGVyaWFsaXplUmFyZUJsb2Nr
Rmxvd0RhdGEoKQogewogICAgIEFTU0VSVCghaGFzUmFyZUJsb2NrRmxvd0RhdGEoKSk7Ci0gICAg
bV9yYXJlQmxvY2tGbG93RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tGbG93OjpS
ZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOworICAgIG1fcmFyZUJsb2NrRmxvd0RhdGEg
PSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGE+KCp0
aGlzKTsKIH0KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGRiM2E2ZGE4ZjFhMzIxNTM3MDBlNzM0MTdkMTBmNmE0
ODEzMDgzNWYuLjk2NzdkYWU5Y2ZlMjhiMWRjMzkwNWMzYTgyYjA2ZWM2ZWNkY2RjNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3Rh
dGljIENvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCYgY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkK
IHN0YXRpYyBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJlcikKIHsKICAgICByZXR1cm4gY29udHJvbFN0YXRlc1JlbmRlcmVyTWFw
KCkuZW5zdXJlKCZyZW5kZXJlciwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDb250cm9sU3RhdGVzPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250cm9sU3Rh
dGVzPigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApAQCAtMjEyMiw3ICsy
MTIyLDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVy
RWxlbWVudCYgY29udGFpbmVyLCBjb25zdCBMYXlvdXQKIAogc3RkOjp1bmlxdWVfcHRyPElubGlu
ZUVsZW1lbnRCb3g+IFJlbmRlckJveDo6Y3JlYXRlSW5saW5lQm94KCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckJveDo6
ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggYmNiYTdiNDE2ODVhM2Y0MTIw
YzFlZWE1NDYxMDJmODM2ZDU2YWEyNi4uOTAxYzQxMTBlMWM1NmJhNjBhNGRkM2JhN2I5M2ZhYWY2
MDQxY2IzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCkBAIC0yNTM4LDcgKzI1MzgsNyBAQCBhdXRvIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjplbnN1cmVDb250aW51YXRpb25DaGFpbk5vZGUoKSAtPiBDb250aW51YXRpb25DaGFpbk5v
ZAogewogICAgIHNldEhhc0NvbnRpbnVhdGlvbkNoYWluTm9kZSh0cnVlKTsKICAgICByZXR1cm4g
KmNvbnRpbnVhdGlvbkNoYWluTm9kZU1hcCgpLmVuc3VyZSh0aGlzLCBbJl0gewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGludWF0aW9uQ2hhaW5Ob2RlPigqdGhpcyk7CiAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKaW5kZXggMjIxMDQ0MzRlNDVkNmM5ODQ3NmZmZDI5YWI1NTBiZDYyYWM0
MDhmZS4uYzFlMDNmMDk3ZWY1OWFkNWExNmIxOTRjOWMwNWQ2NDlmN2ZmMTVjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBA
IHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgaWYgKHBsYWNlLnBhcmVudCkKICAgICAgICAg
cGxhY2UucGFyZW50LT5pbnNlcnRBZnRlcihuZXdOb2RlLCBwbGFjZS5wcmV2aW91c1NpYmxpbmcu
Z2V0KCksIGlkZW50aWZpZXIpOwogCi0gICAgbWFwcy5hZGQoJnJlbmRlcmVyLCBzdGQ6Om1ha2Vf
dW5pcXVlPENvdW50ZXJNYXA+KCkpLml0ZXJhdG9yLT52YWx1ZS0+YWRkKGlkZW50aWZpZXIsIG5l
d05vZGUuY29weVJlZigpKTsKKyAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIG1ha2VVbmlxdWU8Q291
bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5jb3B5
UmVmKCkpOwogICAgIHJlbmRlcmVyLnNldEhhc0NvdW50ZXJOb2RlTWFwKHRydWUpOwogCiAgICAg
aWYgKG5ld05vZGUtPnBhcmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKaW5kZXggNTFhOWU0Njg0MzQ0ZDI2MzdkMDRh
OTFmYjU5YTNjZDZlZjhmMDZlZC4uN2Y2Y2FiYzA1OTEyMTA4MWM0ZDcyODYwMjE5YmQ0YjljODVi
OTRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21l
bnRDb250YWluZXIuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgUmVuZGVyQm94RnJhZ21lbnRJbmZv
KiBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJhZ21lbnRJbmZvKGNvbnN0
IFIKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJCb3hGcmFnbWVudEluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hGcmFnbWVudEluZm8uYWRk
KGJveCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCb3hGcmFnbWVudEluZm8+KGxvZ2ljYWxMZWZ0
SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveEZyYWdtZW50SW5m
bz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQoYm94LCBtYWtlVW5pcXVl
PFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5z
ZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBy
ZXR1cm4gYm94SW5mby5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKaW5kZXggNDRmNTYzNWJhNTNhZTNmN2U5NGQ3YWM4
ZTQ5NjczOTBmNThjMmU1Ni4uODQ2ZGQzYTAyYWE4NmFhZjcxNWMwOTRlOGMzNTBjMTY2YTg2N2Ix
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRG
bG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZs
b3cuY3BwCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogUmVu
ZGVyRnJhZ21lbnRlZEZsb3c6OmN1cnJlbnRGcmFnbWVudCgpIGNvbnN0CiBDb250YWluaW5nRnJh
Z21lbnRNYXAmIFJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb250YWluaW5nRnJhZ21lbnRNYXAoKQog
ewogICAgIGlmICghbV9saW5lVG9GcmFnbWVudE1hcCkKLSAgICAgICAgbV9saW5lVG9GcmFnbWVu
dE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmluZ0ZyYWdtZW50TWFwPigpOworICAgICAg
ICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gbWFrZVVuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+
KCk7CiAKICAgICByZXR1cm4gKm1fbGluZVRvRnJhZ21lbnRNYXAuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAppbmRleCBiOTA0NWU2
NzkwODczYWJmODFhOTBkZmE1YmJiMTEwOTNjNjc3YjAyLi41MmM3OTBkNGU1Nzg5YjE3OGUyNmM4
YWJkOGJhN2IxM2NjNTkxNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHZW9tZXRyeU1hcC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5
TWFwOjpwdXNoKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTQogICAgIAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1tt
X2luc2VydGlvblBvc2l0aW9uXTsKICAgICBpZiAoIXQuaXNJbnRlZ2VyVHJhbnNsYXRpb24oKSkK
LSAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRp
b25NYXRyaXg+KHQpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odCk7CiAgICAgZWxzZQogICAgICAgICBzdGVwLm1fb2Zmc2V0ID0g
TGF5b3V0U2l6ZSh0LmUoKSwgdC5mKCkpOwogCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZW5k
ZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcoY29uc3QgUmVuZGVyVmlldyogdmlldywgY29uc3QgTGF5
b3V0U2l6ZSYgc2Nyb2wKICAgICBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAmIHN0ZXAgPSBtX21hcHBp
bmdbbV9pbnNlcnRpb25Qb3NpdGlvbl07CiAgICAgc3RlcC5tX29mZnNldCA9IHNjcm9sbE9mZnNl
dDsKICAgICBpZiAodCkKLSAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCp0KTsKKyAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9
IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCp0KTsKICAgICAKICAgICBzdGVwSW5z
ZXJ0ZWQoc3RlcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5k
ZXggZTM1YTJjMTMyMjVkNDcyNWNkODhjMjJmNmQwNGNjYzlkMGYzNDk3Zi4uNDlhZDAzNTU1Mzcz
NDIyNWYxZGRkNjMzYjQyYzEzODMyY2NlZmJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVk
VHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0b1JlcGVh
CiAgICAgdW5zaWduZWQgbGFzdEF1dG9SZXBlYXRUcmFjayA9IGZpcnN0QXV0b1JlcGVhdFRyYWNr
ICsgZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKGRpcmVjdGlvbik7CiAKICAgICBpZiAoIWdyaWQuaGFz
R3JpZEl0ZW1zKCkpIHsKLSAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOworICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9
IG1ha2VVbmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgdHJhY2tJbmRleCA9IGZpcnN0QXV0b1JlcGVhdFRyYWNrOyB0cmFja0luZGV4IDwgbGFzdEF1
dG9SZXBlYXRUcmFjazsgKyt0cmFja0luZGV4KQogICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4
ZXMtPmFkZCh0cmFja0luZGV4KTsKICAgICB9IGVsc2UgewpAQCAtNTUyLDcgKzU1Miw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVt
cHR5VHJhY2tzRm9yQXV0b1JlcGVhCiAgICAgICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3Io
Z3JpZCwgZGlyZWN0aW9uLCB0cmFja0luZGV4KTsKICAgICAgICAgICAgIGlmICghaXRlcmF0b3Iu
bmV4dEdyaWRJdGVtKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5VHJhY2tJbmRleGVz
KQotICAgICAgICAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgICAgICAgICAgICAgIGVtcHR5VHJh
Y2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAg
ICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5kZXgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC03MzIsNyArNzMyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVh
PiBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXQK
ICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZkNyb3NzRGlyZWN0aW9uID0gZ3JpZC5udW1UcmFja3Mo
Y3Jvc3NEaXJlY3Rpb24pOwogICAgIHVuc2lnbmVkIGNyb3NzRGlyZWN0aW9uU3BhblNpemUgPSBH
cmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oZ3JpZEl0ZW0s
IGNyb3NzRGlyZWN0aW9uKTsKICAgICBHcmlkU3BhbiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA9
IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihlbmRPZkNyb3NzRGlyZWN0aW9u
LCBlbmRPZkNyb3NzRGlyZWN0aW9uICsgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JpZEFyZWE+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNw
ZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jv
c3NEaXJlY3Rpb25Qb3NpdGlvbnMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRBcmVhPihz
cGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25z
IDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/
IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKIH0KIAogdm9p
ZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdy
aWQsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYgYXV0b0dyaWRJdGVtcykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDg5MTNlNzZjOWQ2MWM5ZDI1
NDE5OTBhOTAxYjdiMDI5NGU0OGFhZGMuLmY1MWUyZmViMzdlMWZjZjBmZDBlNzkxYWU2NGYwM2Vl
ODhhMmE3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAt
MTM0LDcgKzEzNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFJlbmRlckltYWdl
OjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHls
ZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCiAg
ICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQot
ICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFn
ZSA/IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdl
KSA6IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKICAgICAsIG1faW1hZ2VEZXZp
Y2VQaXhlbFJhdGlvKGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKIHsKICAgICB1cGRhdGVBbHRUZXh0
KCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWwKIAogUmVuZGVy
SW1hZ2U6OlJlbmRlckltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGRvY3VtZW50
LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQotICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxl
SW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigq
c3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisg
ICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZT4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcAppbmRleCA5ZDhhNjU5MzRiYTNmZDI1NDc0YzM5YzkxZmVlYzQzYWEwYzlmOWY1Li4xNTMy
NWNkYTE2OTA2N2E1NjkxYjg4NWE4ZGZkYzdhYTkwMzY0MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBSZW5k
ZXJJbmxpbmU6OmRlbGV0ZUxpbmVzKCkKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+
IFJlbmRlcklubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PElubGluZUZsb3dCb3g+KCp0aGlzKTsKIH0KIAogSW5saW5lRmxvd0JveCogUmVuZGVySW5saW5l
OjpjcmVhdGVBbmRBcHBlbmRJbmxpbmVGbG93Qm94KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IGY5ZjBkMGQ0Y2VlNjZjMWY0M2RlNTMyYjYxMDA1MzJiZmI2
MTUwOGMuLjE4NTQ2ODcwNTE2ZTRkMGZkNWUyYjAyOGRlYjNiYzQwY2U2YzhiZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNzAwLDcgKzcwMCw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkKICAgICAgICAgLy8gSWdub3Jl
IG5vbi1vdmVyZmxvdyBsYXllcnMgYW5kIHJlZmxlY3Rpb25zLgogICAgICAgICBpZiAoY2hpbGQt
PmlzTm9ybWFsRmxvd09ubHkoKSAmJiAhaXNSZWZsZWN0aW9uTGF5ZXIoKmNoaWxkKSkgewogICAg
ICAgICAgICAgaWYgKCFtX25vcm1hbEZsb3dMaXN0KQotICAgICAgICAgICAgICAgIG1fbm9ybWFs
Rmxvd0xpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOworICAg
ICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxSZW5kZXJM
YXllcio+PigpOwogICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdC0+YXBwZW5kKGNoaWxkKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpj
b2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcgogICAgIGlmIChpbmNsdWRlSGlkZGVuTGF5ZXIgJiYgIWlzTm9ybWFsRmxvd09ubHkoKSkg
ewogICAgICAgICBhdXRvJiBsYXllckxpc3QgPSAoekluZGV4KCkgPj0gMCkgPyBwb3NpdGl2ZVpP
cmRlckxpc3QgOiBuZWdhdGl2ZVpPcmRlckxpc3Q7CiAgICAgICAgIGlmICghbGF5ZXJMaXN0KQot
ICAgICAgICAgICAgbGF5ZXJMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5
ZXIqPj4oKTsKKyAgICAgICAgICAgIGxheWVyTGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRl
ckxheWVyKj4+KCk7CiAgICAgICAgIGxheWVyTGlzdC0+YXBwZW5kKHRoaXMpOwogICAgIH0KIApA
QCAtMTIwNiw3ICsxMjA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkK
ICAgICBib29sIGhhZFRyYW5zZm9ybSA9ICEhbV90cmFuc2Zvcm07CiAgICAgaWYgKGhhc1RyYW5z
Zm9ybSAhPSBoYWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKGhhc1RyYW5zZm9ybSkKLSAgICAg
ICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4oKTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4oKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBudWxs
cHRyOwogICAgICAgICAKQEAgLTU1MjcsNyArNTUyNyw3IEBAIFJlZjxDbGlwUmVjdHM+IFJlbmRl
ckxheWVyOjp1cGRhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3Rz
Q29uCiAgICAgfQogICAgIAogICAgIGlmICghbV9jbGlwUmVjdHNDYWNoZSkKLSAgICAgICAgbV9j
bGlwUmVjdHNDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CisgICAg
ICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBtYWtlVW5pcXVlPENsaXBSZWN0c0NhY2hlPigpOwogI2lm
bmRlZiBOREVCVUcKICAgICBtX2NsaXBSZWN0c0NhY2hlLT5tX2NsaXBSZWN0c1Jvb3RbY2xpcFJl
Y3RzVHlwZV0gPSBjbGlwUmVjdHNDb250ZXh0LnJvb3RMYXllcjsKICAgICBtX2NsaXBSZWN0c0Nh
Y2hlLT5tX3Njcm9sbGJhclJlbGV2YW5jeVtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRl
eHQub3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3k7CkBAIC02MTA1LDcgKzYxMDUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpjbGVhckNsaXBSZWN0cyhDbGlwUmVjdHNUeXBlIHR5cGVUb0NsZWFy
KQogUmVuZGVyTGF5ZXJCYWNraW5nKiBSZW5kZXJMYXllcjo6ZW5zdXJlQmFja2luZygpCiB7CiAg
ICAgaWYgKCFtX2JhY2tpbmcpIHsKLSAgICAgICAgbV9iYWNraW5nID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNraW5nID0gbWFrZVVu
aXF1ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0aGlzKTsKICAgICAgICAgY29tcG9zaXRvcigpLmxh
eWVyQmVjYW1lQ29tcG9zaXRlZCgqdGhpcyk7CiAKICAgICAgICAgdXBkYXRlRmlsdGVyUGFpbnRp
bmdTdHJhdGVneSgpOwpAQCAtNjUyMyw3ICs2NTIzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c3R5
bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUKIAogICAgIGlmIChyZW5kZXJlcigpLmlzSFRNTE1hcnF1ZWUoKSAmJiByZW5kZXJlcigpLnN0
eWxlKCkubWFycXVlZUJlaGF2aW9yKCkgIT0gTWFycXVlZUJlaGF2aW9yOjpOb25lICYmIHJlbmRl
cmVyKCkuaXNCb3goKSkgewogICAgICAgICBpZiAoIW1fbWFycXVlZSkKLSAgICAgICAgICAgIG1f
bWFycXVlZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7CisgICAgICAg
ICAgICBtX21hcnF1ZWUgPSBtYWtlVW5pcXVlPFJlbmRlck1hcnF1ZWU+KHRoaXMpOwogICAgICAg
ICBtX21hcnF1ZWUtPnVwZGF0ZU1hcnF1ZWVTdHlsZSgpOwogICAgIH0gZWxzZSBpZiAobV9tYXJx
dWVlKQogICAgICAgICBtX21hcnF1ZWUgPSBudWxscHRyOwpAQCAtNjczNSw3ICs2NzM1LDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6ZW5zdXJlTGF5ZXJGaWx0ZXJzKCkKICAgICBpZiAobV9maWx0ZXJz
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9maWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJMYXllckZpbHRlcnM+KCp0aGlzKTsKKyAgICBtX2ZpbHRlcnMgPSBtYWtlVW5pcXVl
PFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpjbGVh
ckxheWVyRmlsdGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IDIyZWQ2ZGQ3YzAyNTJiMTk1M2RlM2JlMTUzOTcxYjEyOWFlMWM3
NGIuLjEyMWQxMmYyNjlmOTBkMTNjNmNjZGQwOTdiOTIyZTNhZGFjZTI2ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNjI3LDcg
KzE2MjcsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQW5jZXN0b3JDbGlwcGlu
Z1N0YWNrKFZlY3RvcjxDb21wb3NpdGVkQ2xpcERhdGE+JgogICAgIH0KICAgICAKICAgICBpZiAo
IW1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKSB7Ci0gICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ1N0
YWNrID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjaz4oV1RGTW92
ZShjbGlwcGluZ0RhdGEpKTsKKyAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3RhY2sgPSBtYWtl
VW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkp
OwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcsIHN0cmVhbSA8PCAibGF5ZXIg
IiA8PCAmbV9vd25pbmdMYXllciA8PCAiIGFuY2VzdG9yQ2xpcHBpbmdTdGFjayAiIDw8ICptX2Fu
Y2VzdG9yQ2xpcHBpbmdTdGFjayk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMx
NzgsMTcgKzMxNzgsMTcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9u
KGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24mIGFuaW0KICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNGaXJzdE9yTGFzdEtleWZyYW1lID0ga2V5ID09IDAgfHwga2V5ID09IDE7CiAg
ICAgICAgIGlmICgoaGFzVHJhbnNmb3JtICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3Vy
cmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pKQotICAg
ICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPnRyYW5zZm9ybSgpLCB0ZikpOwor
ICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPnRyYW5zZm9ybSgpLCB0ZikpOwogCiAg
ICAgICAgIGlmICgoaGFzT3BhY2l0eSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJl
bnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSkpCi0gICAgICAg
ICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOworICAgICAgICAgICAg
b3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPihrZXks
IGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKTsKIAogICAgICAgICBpZiAoKGhhc0ZpbHRl
ciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1By
b3BlcnR5KENTU1Byb3BlcnR5RmlsdGVyKSkKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNl
cnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0
eWxlLT5maWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQobWFr
ZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5maWx0ZXIo
KSwgdGYpKTsKIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCiAgICAgICAgIGlmICgoaGFz
QmFja2Ryb3BGaWx0ZXIgJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJh
bWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKSkKLSAg
ICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCks
IHRmKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1
ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5iYWNrZHJvcEZpbHRl
cigpLCB0ZikpOwogI2VuZGlmCiAgICAgfQogCkBAIC0zMjQzLDggKzMyNDMsOCBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIG9wYWNpdHlBbmltID0g
dG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSk7CiAgICAg
ICAgIGlmIChvcGFjaXR5QW5pbSAmJiAhb3BhY2l0eUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlv
bigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBvcGFjaXR5VmVjdG9yKEFuaW1h
dGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0
ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgY29tcG9zaXRpbmdPcGFjaXR5
KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNl
cnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigxLCBjb21wb3NpdGluZ09w
YWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpOworICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5p
bnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGluZ09wYWNp
dHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmlu
c2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0
eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAgICAgICAgICAvLyBUaGUgYm94U2l6ZSBwYXJh
bSBpcyBvbmx5IHVzZWQgZm9yIHRyYW5zZm9ybSBhbmltYXRpb25zICh3aGljaCBjYW4gb25seSBy
dW4gb24gUmVuZGVyQm94ZXMpLCBzbyB3ZSBwYXNzIGFuIGVtcHR5IHNpemUgaGVyZS4KICAgICAg
ICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihvcGFjaXR5VmVjdG9yLCBG
bG9hdFNpemUoKSwgb3BhY2l0eUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JU
cmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSwgdGltZU9mZnNldCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBvcGFjaXR5IGlzIHZpc2li
bGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBvcGFjaXR5LgpA
QCAtMzI1OCw4ICszMjU4LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNp
dGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29u
c3QgQW5pbWF0aW9uKiB0cmFuc2Zvcm1BbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3Bl
cnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKTsKICAgICAgICAgaWYgKHRyYW5zZm9ybUFuaW0gJiYg
IXRyYW5zZm9ybUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBL
ZXlmcmFtZVZhbHVlTGlzdCB0cmFuc2Zvcm1WZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9y
bSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKTsKLSAg
ICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAg
IHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVj
dG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxl
LT50cmFuc2Zvcm0oKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5p
bWF0aW9uKHRyYW5zZm9ybVZlY3Rvciwgc25hcHBlZEludFJlY3QocmVuZGVyQm94KCktPmJvcmRl
ckJveFJlY3QoKSkuc2l6ZSgpLCB0cmFuc2Zvcm1BbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRp
b25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKSwgdGltZU9mZnNl
dCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCB0cmFu
c2Zvcm0gaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZp
bmFsIHRyYW5zZm9ybS4KICAgICAgICAgICAgICAgICB1cGRhdGVUcmFuc2Zvcm0oKnRvU3R5bGUp
OwpAQCAtMzI3Miw4ICszMjcyLDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJh
bnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAg
Y29uc3QgQW5pbWF0aW9uKiBmaWx0ZXJBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3Bl
cnR5KENTU1Byb3BlcnR5RmlsdGVyKTsKICAgICAgICAgaWYgKGZpbHRlckFuaW0gJiYgIWZpbHRl
ckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZh
bHVlTGlzdCBmaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlcik7Ci0gICAgICAgICAg
ICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFs
dWU+KDAsIGZyb21TdHlsZS0+ZmlsdGVyKCkpKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5p
bnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+
ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxG
aWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigx
LCB0b1N0eWxlLT5maWx0ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+
YWRkQW5pbWF0aW9uKGZpbHRlclZlY3RvciwgRmxvYXRTaXplKCksIGZpbHRlckFuaW0sIEdyYXBo
aWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlGaWx0
ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRo
ZSBjb3JyZWN0IGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNv
IHNldCB0aGUgZmluYWwgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVwZGF0ZUZpbHRlcnMoKnRv
U3R5bGUpOwpAQCAtMzI4Nyw4ICszMjg3LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0
YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAg
ICAgICAgY29uc3QgQW5pbWF0aW9uKiBiYWNrZHJvcEZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFu
c2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlcik7CiAgICAg
ICAgIGlmIChiYWNrZHJvcEZpbHRlckFuaW0gJiYgIWJhY2tkcm9wRmlsdGVyQW5pbS0+aXNFbXB0
eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGJhY2tk
cm9wRmlsdGVyVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlcik7Ci0g
ICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxG
aWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7Ci0g
ICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxG
aWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOworICAg
ICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5p
bWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOworICAgICAgICAg
ICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9u
VmFsdWU+KDEsIHRvU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKICAgICAgICAgICAgIGlmICht
X2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihiYWNrZHJvcEZpbHRlclZlY3RvciwgRmxvYXRT
aXplKCksIGJhY2tkcm9wRmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZv
clRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKSwgdGltZU9m
ZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBi
YWNrZHJvcCBmaWx0ZXIgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBz
ZXQgdGhlIGZpbmFsIGJhY2tkcm9wIGZpbHRlci4KICAgICAgICAgICAgICAgICB1cGRhdGVCYWNr
ZHJvcEZpbHRlcnMoKnRvU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhYmU0ZDRkNjc1YTIyMTg2ZTJlYTg5ZDQx
MmZmYTgxNTM4YzVjOTI5Li4zMjEyMjlkNmYyM2NmYWU2NmEwNWE1MjgwOGRkMGIwY2JhOGMxNDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yKFJlbmRlclZpZXcmIHJlbmRlclZpZXcpCiB7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnBsYXRmb3JtV2lk
Z2V0KCkpCi0gICAgICAgIG1fbGVnYWN5U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcj4ocGFnZSgp
LmNocm9tZSgpLmNsaWVudCgpLCBpc01haW5GcmFtZUNvbXBvc2l0b3IoKSk7CisgICAgICAgIG1f
bGVnYWN5U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8TGVnYWN5V2ViS2l0
U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcj4ocGFnZSgpLmNocm9tZSgpLmNsaWVudCgpLCBpc01h
aW5GcmFtZUNvbXBvc2l0b3IoKSk7CiAjZW5kaWYKIH0KIApAQCAtNjEyLDcgKzYxMiw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNo
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqCiB7CiAgICAgaWYgKCFtX2xheWVyVXBkYXRlcikgewogICAg
ICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQgPSBwYWdlKCkuY2hyb21lKCkuZGlzcGxh
eUlEKCk7Ci0gICAgICAgIG1fbGF5ZXJVcGRhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGlj
c0xheWVyVXBkYXRlcj4oKnRoaXMsIGRpc3BsYXlJRCk7CisgICAgICAgIG1fbGF5ZXJVcGRhdGVy
ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0xheWVyVXBkYXRlcj4oKnRoaXMsIGRpc3BsYXlJRCk7CiAg
ICAgfQogICAgIAogICAgIG1fbGF5ZXJVcGRhdGVyLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtNDc5
Miw3ICs0NzkyLDcgQEAgdm9pZCBMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9y
OjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMKIAogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Vmlld3BvcnRDb25zdHJhaW50cz4gY29uc3RyYWludHM7CiAgICAgICAgIGlmIChs
YXllci0+cmVuZGVyZXIoKS5pc1N0aWNraWx5UG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBj
b25zdHJhaW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXll
cikpOworICAgICAgICAgICAgY29uc3RyYWludHMgPSBtYWtlVW5pcXVlPFN0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlU3RpY2t5Vmlld3BvcnRDb25z
dHJhaW50cygqbGF5ZXIpKTsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlckxheWVyKiBlbmNsb3Np
bmdUb3VjaFNjcm9sbGFibGVMYXllciA9IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoY29tcG9z
aXRvci5pc0FzeW5jU2Nyb2xsYWJsZVN0aWNreUxheWVyKCpsYXllciwgJmVuY2xvc2luZ1RvdWNo
U2Nyb2xsYWJsZUxheWVyKSAmJiBlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllcikgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllci0+aXNDb21w
b3NpdGVkKCkpOwpAQCAtNDgwMCw3ICs0ODAwLDcgQEAgdm9pZCBMZWdhY3lXZWJLaXRTY3JvbGxp
bmdMYXllckNvb3JkaW5hdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMK
ICAgICAgICAgICAgICAgICBzdGlja3lDb250YWluZXJNYXAuYWRkKGxheWVyLT5iYWNraW5nKCkt
PmdyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpLCBlbmNsb3NpbmdUb3VjaFNjcm9sbGFi
bGVMYXllci0+YmFja2luZygpLT5zY3JvbGxDb250YWluZXJMYXllcigpLT5wbGF0Zm9ybUxheWVy
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGxheWVyLT5yZW5kZXJlcigp
LmlzRml4ZWRQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb25zdHJhaW50cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29t
cHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKKyAgICAgICAgICAgIGNvbnN0
cmFpbnRzID0gbWFrZVVuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29t
cG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGJmNjQ1Y2Q0MWI4OTEyMTJkN2Y1
YTMwMzg2ZWY5Y2E1NGJmYTQ2MDIuLjhkZDAzOWJhZmRhNjM1MzhjZTMyMTNkYzMxMzU2MGZhYThh
NGJkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxT
Y3JvbGxDb29yZGluYXRpb25Sb2xlPiBhbGxTY3JvbGxDb29yZGluYXRpb25Sb2xlcygpCiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogY2xhc3MgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJD
b29yZGluYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcihDaHJvbWVDbGllbnQmIGNocm9t
ZUNsaWVudCwgYm9vbCBjb29yZGluYXRlVmlld3BvcnRDb25zdHJhaW5lZExheWVycykKICAgICAg
ICAgOiBtX2Nocm9tZUNsaWVudChjaHJvbWVDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggNGI4NmZlMmFkMTc1
ZGNlODZhZDM4NTJiZGZjMTUyZmQxMzA4ZDQ1ZS4uMTI4Yzk2ZGFlMGIzMTAwNmNhMjVkNWE1NmM3
MjBiYzg5MGQzNGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbmRlckxheWVy
TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCiB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6
OmNyZWF0ZUxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXIpOwotICAgIG1fbGF5ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyPigqdGhpcyk7CisgICAgbV9sYXllciA9IG1ha2VV
bmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKICAgICBzZXRIYXNMYXllcih0cnVlKTsKICAgICBt
X2xheWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGJjNTUyN2I4YzQ2YTRkZTA2NmY2OWU1YTMx
MGM4ODY4MTk2ZmMyM2EuLjFhYWUwOWQwMGIyNmVhM2NhZGVhODY3MmUyNzc5MjliZmQxN2E2MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC04
OSw3ICs4OSw3IEBAIGludCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
bmxpbmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBS
ZW5kZXJMaW5lQnJlYWs6OnNldElubGluZUJveFdyYXBwZXIoSW5saW5lRWxlbWVudEJveCogaW5s
aW5lQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5GbG93LmNwcAppbmRleCA5YmI5YTUzOWQ2NjQyZGY5MDAyNmE3ODJhZjhjZjg0ZGM0OWRhMmE5
Li40MTAzZGFkNDg0NGRkMjRhMzAyYTczMmFmMjIxOWFjOTAwMDFjYmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcApAQCAtNDIs
NyArNDIsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVsdGlDb2x1bW5G
bG93KTsKIAogUmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3coRG9j
dW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhZ21l
bnRlZEZsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zcGFubmVyTWFwKHN0
ZDo6bWFrZV91bmlxdWU8U3Bhbm5lck1hcD4oKSkKKyAgICAsIG1fc3Bhbm5lck1hcChtYWtlVW5p
cXVlPFNwYW5uZXJNYXA+KCkpCiAgICAgLCBtX2xhc3RTZXRXb3JrZWRPbihudWxscHRyKQogICAg
ICwgbV9jb2x1bW5Db3VudCgxKQogICAgICwgbV9jb2x1bW5XaWR0aCgwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ZGEzYmQ3Mzc3MWJhMTcxOTBlYWMz
NWRhNjM4ZTI0M2YxOTAyOTA3Li4wYmY1MTkzZGU0ODQ0NWJjYzY3N2U5MTRlOGFkM2RmODFjZWI4
MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg5
Myw3ICsxODkzLDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YSYg
UmVuZGVyT2JqZWN0OjpyYXJlRGF0YSgpIGNvbnN0CiBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVj
dFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNS
YXJlRGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtd
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtd
IHsgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9y
LT52YWx1ZTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
CmluZGV4IDZkNTZiNWVjYTJjNmIyNzY4YWZiYjJkNGNmZjBhYzA4ODJlOWZkYzYuLjBkZmUyODI3
NjRmNDA4YjYyMGJlZjVkOWY1OGU4OGE2Y2M3NmMwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNTMsNyArNTMs
NyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4p
OwogCiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRN
TFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9z
bmFwc2hvdFJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkK
KyAgICAsIG1fc25hcHNob3RSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+
KCkpCiB7CiAgICAgbV9zbmFwc2hvdFJlc291cmNlLT5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDE4NmNhODcwZWQxMDkx
M2Q1OGI4NTQ5ZWI5NmRlMzM2ZTM0NTUzNTkuLmU5MWExMzM3MTk5MTJkMThmYTU1ZTM2ZDgzNTU4
ODU3YzJkMThiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApA
QCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQgUmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5CiAgICAgICAgIC8vIEFj
Y29yZGluZyB0byB0aGUgQ1NTMiBzcGVjLCB5b3Ugb25seSB1c2UgZml4ZWQgdGFibGUgbGF5b3V0
IGlmIGFuCiAgICAgICAgIC8vIGV4cGxpY2l0IHdpZHRoIGlzIHNwZWNpZmllZCBvbiB0aGUgdGFi
bGUuICBBdXRvIHdpZHRoIGltcGxpZXMgYXV0byB0YWJsZSBsYXlvdXQuCiAgICAgICAgIGlmIChz
dHlsZSgpLnRhYmxlTGF5b3V0KCkgPT0gVGFibGVMYXlvdXRUeXBlOjpGaXhlZCAmJiAhc3R5bGUo
KS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpeGVkVGFibGVMYXlvdXQ+KHRoaXMpOworICAgICAgICAgICAgbV90
YWJsZUxheW91dCA9IG1ha2VVbmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9U
YWJsZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1
ZTxBdXRvVGFibGVMYXlvdXQ+KHRoaXMpOwogICAgIH0KIAogICAgIC8vIElmIGJvcmRlciB3YXMg
Y2hhbmdlZCwgaW52YWxpZGF0ZSBjb2xsYXBzZWQgYm9yZGVycyBjYWNoZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBhYWQwYzE0N2YxMWQzOWIzYWQxNmNhZGRj
MTUzYzMyMmU5MmQ3YTBhLi5iNjMwNWRlNWY2MzE2YzRkYjI2MGE3OTljZDExNmJiZDFhZTU0NDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMzExLDcgKzEz
MTEsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkK
IAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclRleHQ6OmNyZWF0ZVRleHRC
b3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiB9CiAKIHZv
aWQgUmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gmIHRleHRCb3gpCkBA
IC0xNTQ1LDcgKzE1NDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFz
dFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogICAgICAgICByZXR1
cm47CiAgICAgYXV0byYgc2VjdXJlVGV4dFRpbWVyID0gc2VjdXJlVGV4dFRpbWVycygpLmFkZCh0
aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzZWN1cmVUZXh0VGltZXIp
Ci0gICAgICAgIHNlY3VyZVRleHRUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjdXJlVGV4dFRp
bWVyPigqdGhpcyk7CisgICAgICAgIHNlY3VyZVRleHRUaW1lciA9IG1ha2VVbmlxdWU8U2VjdXJl
VGV4dFRpbWVyPigqdGhpcyk7CiAgICAgc2VjdXJlVGV4dFRpbWVyLT5yZXN0YXJ0KG9mZnNldEFm
dGVyTGFzdFR5cGVkQ2hhcmFjdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCmluZGV4IGMxNDQ1MWExOGVlYTdhNTcxYTI3Nzc4OThhNzljYzhiNDNmZjMxNDIu
LjVmZWM2NzhjNmJiNWRmMGU0OTIyYjAxMmMzZjI2OGRiYWI0YTdiNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIFJlbmRl
clZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0
KSBjb25zdAogICAgIC8vIEZJWE1FOiBNYXliZSB0aGVyZSBzaG91bGQgYmUgYSByZWdpb24gdHlw
ZSB0aGF0IGRvZXMgdGhpcyBhdXRvbWF0aWNhbGx5LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplID0gMTYgKiAxNjsKICAgICBpZiAobV9hY2N1
bXVsYXRlZFJlcGFpbnRSZWdpb24tPmdyaWRTaXplKCkgPiBtYXhpbXVtUmVwYWludFJlZ2lvbkdy
aWRTaXplKQotICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOworICAg
ICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPihtX2Fj
Y3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6
OmZsdXNoQWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uKCkgY29uc3QKQEAgLTcyNCw3ICs3MjQsNyBA
QCBib29sIFJlbmRlclZpZXc6OnVzZXNDb21wb3NpdGluZygpIGNvbnN0CiBSZW5kZXJMYXllckNv
bXBvc2l0b3ImIFJlbmRlclZpZXc6OmNvbXBvc2l0b3IoKQogewogICAgIGlmICghbV9jb21wb3Np
dG9yKQotICAgICAgICBtX2NvbXBvc2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVy
Q29tcG9zaXRvcj4oKnRoaXMpOworICAgICAgICBtX2NvbXBvc2l0b3IgPSBtYWtlVW5pcXVlPFJl
bmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX2NvbXBvc2l0b3I7
CiB9CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIEltYWdlUXVh
bGl0eUNvbnRyb2xsZXImIFJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKQogewog
ICAgIGlmICghbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyKQotICAgICAgICBtX2ltYWdlUXVhbGl0
eUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0
aGlzKTsKKyAgICAgICAgbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbWFn
ZVF1YWxpdHlDb250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlUXVhbGl0eUNv
bnRyb2xsZXI7CiB9CiAKQEAgLTgzNCw3ICs4MzQsNyBAQCBSZW5kZXJWaWV3OjpSZXBhaW50UmVn
aW9uQWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcihSZW5kZXJWaWV3KiB2aWV3
KQogCiAgICAgbV93YXNBY2N1bXVsYXRpbmdSZXBhaW50UmVnaW9uID0gISFyb290UmVuZGVyVmll
dy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb247CiAgICAgaWYgKCFtX3dhc0FjY3VtdWxhdGlu
Z1JlcGFpbnRSZWdpb24pCi0gICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVw
YWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgICAgICByb290UmVu
ZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4o
KTsKICAgICBtX3Jvb3RWaWV3ID0gbWFrZVdlYWtQdHIoKnJvb3RSZW5kZXJWaWV3KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGZkY2Q1OWM1
MmM1ZjMyOGY1MjA5ZjAwYzFmOGQ4MTZhZGM1Zjc2NjguLjQ0NTU4NDFhZjMyZmYxNTI1MmNmYTI4
ZWQ4YTY5YzNlNDlmMWYzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVs
bGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGZsbwogICAg
ICAgICBnRWxsaXBzaXNCb3hNYXAgPSBuZXcgRWxsaXBzaXNCb3hNYXAoKTsKIAogICAgIEFTU0VS
VCghaGFzRWxsaXBzaXNCb3goKSk7Ci0gICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNC
b3hNYXAtPnNldCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3co
KSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3Vw
Qm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290
Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7
CisgICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBtYWtl
VW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlw
c2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBs
b2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJr
dXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgc2V0SGFzRWxsaXBzaXNCb3godHJ1
ZSk7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYW4gUlRMIHZlcnNpb24gb2YgdGhpcz8KICAg
ICBpZiAobHRyICYmICh4KCkgKyBsb2dpY2FsV2lkdGgoKSArIGVsbGlwc2lzV2lkdGgpIDw9IGJs
b2NrUmlnaHRFZGdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApp
bmRleCA3ZGYyODI4OGE0ZDU1YzJjN2QyNmFkNGJjMDE3NmQwYjc2MTc4MzY0Li4yNDdlNTVjMDY5
ZTlmZTg4MWNhZjRiZmJjMmI0YWVmMTllMzYxN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBSb290SW5saW5lQm94
IDogcHVibGljIElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSb290SW5saW5l
Qm94PgogICAgICAgICBpZiAobV9mbG9hdHMpCiAgICAgICAgICAgICBtX2Zsb2F0cy0+YXBwZW5k
KG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
ZmxvYXRzID0gc3RkOjptYWtlX3VuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFr
UHRyKGZsb2F0aW5nQm94KSk7CisgICAgICAgICAgICBtX2Zsb2F0cyA9IG1ha2VVbmlxdWU8Q2xl
YW5MaW5lRmxvYXRMaXN0PigxLCBtYWtlV2Vha1B0cihmbG9hdGluZ0JveCkpOwogICAgIH0KIAog
ICAgIHZvaWQgcmVtb3ZlRmxvYXQoUmVuZGVyQm94JiBmbG9hdGluZ0JveCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5kZXggZWM1ZTczNTZh
NjRkMTI0OWRkYTExNDdlOGJiYTMxZjQ3OTBiNGJmMi4uYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNm
NGU4MTFjM2VhMWI5M2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Nl
bGVjdGlvblJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5jcHAKQEAgLTEzMSwxMyArMTMxLDEzIEBAIHN0YXRpYyBTZWxlY3Rpb25E
YXRhIGNvbGxlY3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24s
IGJvb2wKICAgICB3aGlsZSAoc3RhcnQgJiYgc3RhcnQgIT0gc3RvcCkgewogICAgICAgICBpZiAo
aXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpzdGFydCwgc2VsZWN0aW9uKSkgewogICAgICAg
ICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFu
ZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAg
ICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CisgICAgICAgICAgICBvbGRTZWxl
Y3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9u
SW5mbz4oKnN0YXJ0LCB0cnVlKSk7CiAgICAgICAgICAgICBpZiAocmVwYWludERpZmZlcmVuY2Up
IHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVs
b3dWaWV3KCpzdGFydCk7IGJsb2NrOyBibG9jayA9IGNvbnRhaW5pbmdCbG9ja0JlbG93Vmlldygq
YmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGJsb2NrSW5mbyA9IG9sZFNlbGVj
dGlvbkRhdGEuYmxvY2tzLmFkZChibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOworICAgICAgICAgICAgICAgICAgICBi
bG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmJsb2NrKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMywxMyAr
MjEzLDEzIEBAIEludFJlY3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBU
b1Zpc2libGVDb250ZW50IGNsaXBUb1Zpc2libGVDb250CiAgICAgICAgIGlmICgoc3RhcnQtPmNh
bkJlU2VsZWN0aW9uTGVhZigpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgp
IHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKICAgICAgICAgICAgICYmIHN0
YXJ0LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgewog
ICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBn
YXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAg
ICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVj
dGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNv
bnRlbnQ6OlllcykpOworICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1
ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENs
aXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKICAgICAgICAgICAgIGF1dG8qIGJsb2NrID0gc3Rh
cnQtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgd2hpbGUgKGJsb2NrICYmICFpczxS
ZW5kZXJWaWV3PigqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclNlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSByZW5kZXJlcnMuYWRkKGJsb2NrLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVD
b250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOworICAgICAgICAgICAgICAgIGJs
b2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2NrLCBjbGlwVG9W
aXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsKICAgICAgICAgICAg
ICAgICBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBs
eShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAg
c2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAg
ICAgZm9yIChhdXRvKiBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsgY3VycmVudFJl
bmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJlbnRSZW5kZXJl
ciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRl
cmVyRm9yU2VsZWN0aW9uKCpjdXJyZW50UmVuZGVyZXIsIG1fc2VsZWN0aW9uQ29udGV4dCkpIHsK
LSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rp
b25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJl
bmRlcmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rp
b25JbmZvPiBzZWxlY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigq
Y3VycmVudFJlbmRlcmVyLCB0cnVlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAg
ICAgICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHNlbGVjdGlvbkluZm8tPmNvbGxlY3RlZFNlbGVj
dGlvblJlY3RzKCkpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRk
UmVjdChzZWxlY3Rpb25JbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIHJlY3QpOwpAQCAtMjk0LDcg
KzI5NCw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBu
ZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVj
dGVkQmxvY2tzLmFkZChjb250YWluaW5nQmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJs
b2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgICAgICAgICAgYmxv
Y2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpjb250YWluaW5n
QmxvY2spOwogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9j
ay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAg
ICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkR2FwUmVjdHMoYmxvY2tJbmZv
LT5yZXBhaW50Q29udGFpbmVyKCksIGJsb2NrSW5mby0+cmVjdHMoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggOGM3NjZlNmRlMmM3NGFk
MDM3OTczMzMxZmM3ZjVhNDc0OTAxNWI4ZS4uYzM2MmY0ZTU3YjAwZjljZTM5YTczZWNlODExYzJj
ODMyZDY1MGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0LmNwcApAQCAtOTk3LDcgKzk5Nyw3IEBAIExheW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3Rv
ciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQsIGNvbnN0IFJlbmRlckJsb2NrCiBjb25z
dCBSdW5SZXNvbHZlciYgTGF5b3V0OjpydW5SZXNvbHZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3J1blJlc29sdmVyKQotICAgICAgICBtX3J1blJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxS
dW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOworICAgICAgICBtX3J1blJl
c29sdmVyID0gbWFrZVVuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRo
aXMpOwogICAgIHJldHVybiAqbV9ydW5SZXNvbHZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDFi
Zjk4ZTRlZWI0M2JhMjJjZGE0ZTZmNWQzYmMyYTVmOWZjNGI0YjcuLjA2MjViMTZiZDU0MzE5NzNl
ZDMxZGU5OThhZWQ4ODliMDEyYmEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBA
QCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91
dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0Rh
dGE+IGRlYnVnU2hhZG93ID0gbnVsbHB0cjsKICAgICBpZiAoZmxvdy5zZXR0aW5ncygpLnNpbXBs
ZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpIHsKLSAgICAgICAgZGVidWdTaGFkb3cg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNo
YWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CisgICAgICAg
IGRlYnVnU2hhZG93ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAs
IDIwLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAsIDIwMCkpOwog
ICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVidWdTaGFkb3cuZ2V0KCkpOwogICAgIH0K
IApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgZ2VuZXJhdGVMaW5lQm94VHJlZShSZW5kZXJCbG9j
a0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQogICAgICAgICBCaWRpUnVuTGlzdDxC
aWRpUnVuPiBiaWRpUnVuczsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsg
aXQgIT0gcmFuZ2UuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgIGF1dG8gcnVuID0gKml0Owot
ICAgICAgICAgICAgYmlkaVJ1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4o
cnVuLmxvY2FsU3RhcnQoKSwgcnVuLmxvY2FsRW5kKCksIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0
Jj4ocnVuLnJlbmRlcmVyKCkpLCBiaWRpQ29udGV4dC5wdHIoKSwgVV9MRUZUX1RPX1JJR0hUKSk7
CisgICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxCaWRpUnVuPihydW4u
bG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihy
dW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIExpbmVJbmZvIGxpbmVJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKaW5kZXggM2JhMTMwZDQ1NTlkNzI5MmQ4OTFmNTUz
Y2YxNDgwZjg2NmJiMmJhZC4uNGI0M2U2YWNiZTBlZWRhZjRlYWY0ZDJlNWQ1YTQ0NjM5MDYwNTNl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0y
MjUsNyArMjI1LDcgQEAgdm9pZCBUZXh0QXV0b1NpemluZzo6YWRkVGV4dE5vZGUoVGV4dCYgbm9k
ZSwgZmxvYXQgY2FuZGlkYXRlU2l6ZSkKICAgICBMT0coVGV4dEF1dG9zaXppbmcsICIgYWRkQXV0
b1NpemVkTm9kZSAlcCBjYW5kaWRhdGVTaXplPSVmIiwgJm5vZGUsIGNhbmRpZGF0ZVNpemUpOwog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0Tm9kZXMuYWRkPFRleHRBdXRvU2l6aW5nSGFzaFRy
YW5zbGF0b3I+KG5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKSwgbnVsbHB0cik7CiAgICAgaWYgKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOworICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOwog
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZFRleHROb2RlKG5vZGUsIGNhbmRpZGF0
ZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5jcHAKaW5kZXggMmIxYzFmYTAzY2ExYzU3NTY5MDI3N2E1ZTgxMjg3MTAxMGQ0NDY3ZS4uZDEx
NjYxNWE3MjZjNWEwYTk0M2Q5YjlmNmUwOTQwYjk1ZTY5MDkxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lk
IExpbmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiBy
ZXNvbHZlciwgTGluZUluZm8mCiAgICAgICAgIGlmIChvYmplY3QuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpIHsKICAgICAgICAgICAgIHNldFN0YXRpY1Bvc2l0aW9ucyhtX2Jsb2NrLCBkb3duY2Fz
dDxSZW5kZXJCb3g+KG9iamVjdCksIHdpZHRoLnNob3VsZEluZGVudFRleHQoKSk7CiAgICAgICAg
ICAgICBpZiAob2JqZWN0LnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpIHsK
LSAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlx
dWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRp
cigpKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1bihtYWtlVW5p
cXVlPEJpZGlSdW4+KDAsIDEsIG9iamVjdCwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5k
aXIoKSkpOwogICAgICAgICAgICAgICAgIGxpbmVJbmZvLmluY3JlbWVudFJ1bnNGcm9tTGVhZGlu
Z1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChvYmplY3Qu
aXNGbG9hdGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3Rl
clNoYXBlLmNwcAppbmRleCA0YjE1OTdlOWYyMWM5Y2Q0YjJmMGQ4ODM0NzQ0Nzc1ZjFkOGJkZTAx
Li5kNTIwOTJiNjhlZDhlMmM4ZmRhNTE1YzkwY2Q1MjIzNTZkNjU1YzI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtNzYsNyArNzYs
NyBAQCBJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0
KGludCB5KSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0
ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1h
cmdpbikgY29uc3QKIHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChvZmZzZXQoKSA+
IHNoYXBlTWFyZ2luKSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiArIHNoYXBlTWFy
Z2luICogMjsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJ
bnRlcnZhbHM+KG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFyZ2luLCBvZmZz
ZXQoKSkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFs
cz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7
CiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ioc2hh
cGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygp
Lm1heFkoKTsgKyt5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CmluZGV4IDMwMjMxYTBiZTFiYmM2M2U0YmUzZDI1MDUxMmJlZDNkMTk1OTQwOTkuLmY1ZWZlZmRk
MzJiMzA1NDdhZGJkOGViMDhmNTRlNjNiMDI0MGZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC00NiwyNCArNDYsMjQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlSW5zZXRTaGFwZShjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiB7CiAgICAgQVNTRVJUKGJvdW5kcy5yZWN0KCku
d2lkdGgoKSA+PSAwICYmIGJvdW5kcy5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Qm94U2hhcGU+KGJvdW5kcyk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IGNyZWF0ZUNpcmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQgcmFkaXVz
KQogewogICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIu
eSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRp
dXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNl
bnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMq
MiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBj
b25zdCBGbG9hdFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChyYWRpaS53aWR0aCgpID49IDAg
JiYgcmFkaWkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVj
dGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVy
LnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIp
LCByYWRpaSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVj
dChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgp
LCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CiB9CiAKIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2Vz
KSwgZmlsbFJ1bGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBvbHlnb25TaGFwZT4oV1RGTW92
ZSh2ZXJ0aWNlcyksIGZpbGxSdWxlKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9hdFJlY3QgcGh5
c2ljYWxSZWN0VG9Mb2dpY2FsKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbG9naWNhbEJv
eEhlaWdodCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCkBAIC0xMjgsNyArMTI4LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSYg
YmFzaWNTaGFwZSwgY29uc3QgTGEKICAgICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVl
cyA9IHBvbHlnb24udmFsdWVzKCk7CiAgICAgICAgIHNpemVfdCB2YWx1ZXNTaXplID0gdmFsdWVz
LnNpemUoKTsKICAgICAgICAgQVNTRVJUKCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IG1ha2VVbmlxdWU8VmVjdG9y
PEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2YWx1ZXNTaXplOyBpICs9IDIpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgdmVy
dGV4KAogICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWVzLmF0KGkpLCBi
b3hXaWR0aCksCkBAIC0xNzksNyArMTc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFw
ZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKIAog
ICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gc25hcHBlZEludFJlY3QoaW1hZ2VSKTsKICAgICBJbnRS
ZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKLSAgICBhdXRvIGludGVy
dmFscyA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3Qu
aGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CisgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5p
cXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVj
dC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJl
IHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXpl
KCksIFVuYWNjZWxlcmF0ZWQpOwogCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJl
c2hvbGQsIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Qu
c2l6ZSgpKTsKKyAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4o
V1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CiAgICAgcmFzdGVyU2hhcGUt
Pm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4g
PSBtYXJnaW47CiAgICAgcmV0dXJuIHJhc3RlclNoYXBlOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRS
ZWN0JiByb3VuZGVkUmVjdCwgV3JpCiAKICAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCByb3VuZGVk
UmVjdC5yZWN0KCkud2lkdGgoKSwgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpKTsKICAgICBG
bG9hdFJvdW5kZWRSZWN0IGJvdW5kcyhyZWN0LCByb3VuZGVkUmVjdC5yYWRpaSgpKTsKLSAgICBh
dXRvIHNoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICBhdXRv
IHNoYXBlID0gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKICAgICBzaGFwZS0+bV93cml0
aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
aAppbmRleCBjZDk0Zjg5YzAyYjBiOGMxMzUxOTQ1N2U0NGQwZGRhZjZkODdmMWZhLi45NDg0MzE3
MTk0N2MwMjMwOWFiN2Y0ZmIxYjk3YzI2Mzg4MmVlMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaApAQCAtMTEzLDcgKzExMyw3
IEBAIGNsYXNzIFNoYXBlT3V0c2lkZUluZm8gZmluYWwgewogICAgICAgICBJbmZvTWFwJiBpbmZv
TWFwID0gU2hhcGVPdXRzaWRlSW5mbzo6aW5mb01hcCgpOwogICAgICAgICBpZiAoU2hhcGVPdXRz
aWRlSW5mbyogaW5mbyA9IGluZm9NYXAuZ2V0KCZrZXkpKQogICAgICAgICAgICAgcmV0dXJuICpp
bmZvOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGluZm9NYXAuYWRkKCZrZXksIHN0ZDo6bWFrZV91
bmlxdWU8U2hhcGVPdXRzaWRlSW5mbz4oa2V5KSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5m
b01hcC5hZGQoJmtleSwgbWFrZVVuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKICAgICAg
ICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KICAgICBzdGF0aWMgdm9p
ZCByZW1vdmVJbmZvKGNvbnN0IFJlbmRlckJveCYga2V5KSB7IGluZm9NYXAoKS5yZW1vdmUoJmtl
eSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3Bw
CmluZGV4IDBjOThmOTE2NmY3ZTE1Mjk3MDNiY2RiMmM4YzgzY2M4MGJiN2JmMjQuLjc0NGM5MGI4
ZmIzZjUyNzY4YTUzOGQyMTM1ODM2MmNhNjM0ODI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzU4LDcgKzM1OCw3IEBAIFJlZjxC
YXNpY1NoYXBlPiBCYXNpY1NoYXBlUGF0aDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwg
ZG91YmxlIHByb2dyZXNzKSBjCiAKICAgICBhdXRvJiBmcm9tUGF0aCA9IGRvd25jYXN0PEJhc2lj
U2hhcGVQYXRoPihmcm9tKTsKIAotICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIHJlc3VsdGluZ1BhdGhC
eXRlcyA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVpbGRBbmltYXRl
ZFNWR1BhdGhCeXRlU3RyZWFtKCpmcm9tUGF0aC5tX2J5dGVTdHJlYW0sICptX2J5dGVTdHJlYW0s
ICpyZXN1bHRpbmdQYXRoQnl0ZXMsIHByb2dyZXNzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gQmFz
aWNTaGFwZVBhdGg6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdGluZ1BhdGhCeXRlcykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCBlN2JiMDYxNjUw
MmQ5OWQ2ZGI0MzkyYmI0NjhhOWFiNDY5Y2U0OTRhLi4yYzEyZGQ5YjQwZGQ0MGIzYzBiZjY3NDkz
MjJhZTJiMGZkMWUwNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29u
dGVudERhdGEuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBJbWFnZUNvbnRlbnREYXRhIGZpbmFs
IDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVh
dGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZp
bmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNv
bnN0IGZpbmFsCiAgICAgewotICAgICAgICBhdXRvIGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bWFnZUNvbnRlbnREYXRhPihtX2ltYWdlLmNvcHlSZWYoKSk7CisgICAgICAgIGF1dG8gaW1hZ2Ug
PSBtYWtlVW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKICAgICAg
ICAgaW1hZ2UtPnNldEFsdFRleHQoYWx0VGV4dCgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwog
ICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBUZXh0Q29udGVudERhdGEgZmluYWwgOiBw
dWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmpl
Y3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVy
bmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERh
dGE+KG1fdGV4dCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50
ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4o
bV90ZXh0KTsgfQogCiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CkBAIC0xNjEsNyArMTYxLDcgQEAg
Y2xhc3MgQ291bnRlckNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAg
ICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQm
LCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KHN0ZDo6bWFrZV91bmlx
dWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDb3VudGVyQ29udGVudERhdGE+KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIo
KSkpOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gbV9jb3Vu
dGVyOwpAQCAtMTkwLDcgKzE5MCw3IEBAIGNsYXNzIFF1b3RlQ29udGVudERhdGEgZmluYWwgOiBw
dWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmpl
Y3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVy
bmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnRE
YXRhPihxdW90ZSgpKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJ
bnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGVDb250ZW50RGF0
YT4ocXVvdGUoKSk7IH0KIAogICAgIFF1b3RlVHlwZSBtX3F1b3RlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggZjNkOTFkYzhkYmM4ZDll
NDZjNjAxYjk1ODQzYjlhOTUyZjNiMmQxZC4uMzAwMTRkMDRmNzBmYjkxODE3NDI4NzYwM2ZkZWFi
NzIzOTU2MTRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXll
ci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgRmlsbExheWVyOjpGaWxsTGF5ZXIoRmlsbExheWVyVHlw
ZSB0eXBlKQogfQogCiBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25zdCBGaWxsTGF5ZXImIG8pCi0g
ICAgOiBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9u
ZXh0KSA6IG51bGxwdHIpCisgICAgOiBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxM
YXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAg
ICAsIG1feFBvc2l0aW9uKG8ubV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBv
c2l0aW9uKQpAQCAtMTE3LDcgKzExNyw3IEBAIEZpbGxMYXllcjo6fkZpbGxMYXllcigpCiAKIEZp
bGxMYXllciYgRmlsbExheWVyOjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQogewotICAg
IG1fbmV4dCA9IG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4
dCkgOiBudWxscHRyOworICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxGaWxsTGF5
ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOwogCiAgICAgbV9pbWFnZSA9IG8ubV9pbWFnZTsKICAg
ICBtX3hQb3NpdGlvbiA9IG8ubV94UG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAyNDliYTQ3ZTU4NDNlY2M2MmU2ZmQ0ZjI2
YWYxY2Y1MzhhMTYzZjljLi5mYjQzYzIwZTVjZTk5ZWNlMTlmNDUyZmQ5Zjg3OTY0ZDgxNGJiN2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRl
clN0eWxlOjpjbG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CiB9CiAKIFJlbmRlclN0eWxl
IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKQEAgLTQwOSw3ICs0MDks
NyBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldQogICAgIFJlbmRlclN0eWxlKiByZXN1bHQgPSBw
c2V1ZG8uZ2V0KCk7CiAKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzKQotICAgICAgICBt
X2NhY2hlZFBzZXVkb1N0eWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHNldWRvU3R5bGVDYWNoZT4o
KTsKKyAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMgPSBtYWtlVW5pcXVlPFBzZXVkb1N0eWxl
Q2FjaGU+KCk7CiAKICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+YXBwZW5kKFdURk1vdmUocHNl
dWRvKSk7CiAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1c3Rv
bVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byYgZGF0
YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFkYXRhLmN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpCi0gICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVk
UHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAg
ICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8
U3RyaW5nPj4oKTsKICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMtPmFkZChu
YW1lKTsKIH0KIApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29u
dGVudChSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxJ
bWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKKyAgICBzZXRD
b250ZW50KG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwo
KSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGJvb2wgYWRkKQpAQCAtMTMxMCwxMyArMTMxMCwxMyBAQCB2b2lkIFJlbmRlclN0
eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkKICAgICBpZiAo
YWRkICYmIGRhdGEuY29udGVudCkgewogICAgICAgICBhdXRvJiBsYXN0ID0gbGFzdENvbnRlbnQo
KmRhdGEuY29udGVudCk7CiAgICAgICAgIGlmICghaXM8VGV4dENvbnRlbnREYXRhPihsYXN0KSkK
LSAgICAgICAgICAgIGxhc3Quc2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0
YT4oc3RyaW5nKSk7CisgICAgICAgICAgICBsYXN0LnNldE5leHQobWFrZVVuaXF1ZTxUZXh0Q29u
dGVudERhdGE+KHN0cmluZykpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8mIHRl
eHRDb250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPihsYXN0KTsKICAgICAgICAgICAg
IHRleHRDb250ZW50LnNldFRleHQodGV4dENvbnRlbnQudGV4dCgpICsgc3RyaW5nKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGEuY29udGVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOworICAgICAgICBkYXRhLmNvbnRlbnQgPSBtYWtl
VW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKTsKICAgICAgICAgYXV0byYgYWx0VGV4dCA9
IGRhdGEuYWx0VGV4dDsKICAgICAgICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQogICAgICAgICAg
ICAgZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFsdFRleHQpOwpAQCAtMTMyNywxMiArMTMyNywx
MiBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVy
Q29udGVudD4gY291bnRlciwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFjb3VudGVyKQogICAgICAg
ICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50
RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVl
PENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CiB9CiAKIHZvaWQg
UmVuZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkKIHsKLSAg
ICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBh
ZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSks
IGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnRBbHRUZXh0KGNvbnN0IFN0
cmluZyYgc3RyaW5nKQpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYg
UmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCkKIHsKICAgICBhdXRvJiBtYXAg
PSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvdW50ZXJEaXJlY3RpdmVzOwogICAg
IGlmICghbWFwKQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3Rp
dmVNYXA+KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4o
KTsKICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAtMTY3MSwxNCArMTY3MSwxNCBAQCB2b2lkIFJl
bmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygpCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHls
ZTo6ZW5zdXJlQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLmFuaW1hdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAg
ICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gbWFrZVVu
aXF1ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YW5pbWF0aW9uczsKIH0KIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZVRy
YW5zaXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
dHJhbnNpdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJh
bnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgICAgIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBtYWtlVW5pcXVlPEFu
aW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFu
c2l0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAppbmRleCAyMGIyYTgxMTRiMGM4ZTllYmQ0ODI3MDc5YTk4
MjBmMmVjMGRjZGMyLi42ZTM3Y2Y4ZmI4YWJhNTVlYzMzMGE5NjAzM2E4YTk1NGM3Y2IwNGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVE
ZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5
bGVEZWZzLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVT
aGFkb3dTVkdEYXRhKCkKIAogaW5saW5lIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dT
VkdEYXRhKGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVk
PFN0eWxlU2hhZG93U1ZHRGF0YT4oKQotICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IHN0ZDo6
bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQorICAgICwg
c2hhZG93KG90aGVyLnNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRv
dykgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHAKaW5kZXggM2Q2MWM5NGMwMTY2MTYwODU4ZGFiZDg0MDlmYzQwODY3MGU1
MDFjYS4uYzE3ZWFmODU5YjBiZmFhN2RhYmMwMDhkNGU3NDBmYzYzMGE0YjgzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMzMsNyArMzMs
NyBAQCBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCiAgICAgLCBt
X2NvbG9yKG8ubV9jb2xvcikKICAgICAsIG1fc3R5bGUoby5tX3N0eWxlKQogICAgICwgbV9pc1dl
YmtpdEJveFNoYWRvdyhvLm1faXNXZWJraXRCb3hTaGFkb3cpCi0gICAgLCBtX25leHQoby5tX25l
eHQgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQor
ICAgICwgbV9uZXh0KG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby5tX25leHQp
IDogbnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGFkMmNiZDk1N2VlZjgy
NTYwY2ZiMzUyZTlmNTBiMzllNjMzYTI2ZmYuLjk2ZGJiYTAwN2U2YTY0YTdkNjk3YTI5YTIxZDYy
MWFkNDQ3NTRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBpbmxp
bmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihv
LnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IpCiAgICAgLCBjYXJldENvbG9yKG8uY2FyZXRD
b2xvcikKICAgICAsIHZpc2l0ZWRMaW5rQ2FyZXRDb2xvcihvLnZpc2l0ZWRMaW5rQ2FyZXRDb2xv
cikKLSAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFk
b3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCB0ZXh0U2hhZG93KG8udGV4
dFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8udGV4dFNoYWRvdykgOiBudWxscHRy
KQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQp
CiAgICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmNwcAppbmRleCA2ZmJiMmI3YjBjM2ViMDNlODY5YTFlYWFjOTE2MTExOWM5YzYxZTliLi5iZGQw
MTkxNWFhMjc4ZGQ2YTY2NDhmZjRjM2ZiZGIzZmNjZDE0MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAg
ICwgc2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgogICAgICwgY29udGVu
dChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAgICwgY291bnRl
ckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRl
ckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKKyAgICAsIGNv
dW50ZXJEaXJlY3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBtYWtlVW5pcXVlPENvdW50ZXJE
aXJlY3RpdmVNYXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCiAgICAgLCBhbHRU
ZXh0KG8uYWx0VGV4dCkKLSAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91
bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBib3hTaGFk
b3coby5ib3hTaGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBu
dWxscHRyKQogICAgICwgd2lsbENoYW5nZShvLndpbGxDaGFuZ2UpCiAgICAgLCBib3hSZWZsZWN0
KG8uYm94UmVmbGVjdCkKLSAgICAsIGFuaW1hdGlvbnMoby5hbmltYXRpb25zID8gc3RkOjptYWtl
X3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5hbmltYXRpb25zKSA6IG51bGxwdHIpCi0gICAgLCB0
cmFuc2l0aW9ucyhvLnRyYW5zaXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0
Pigqby50cmFuc2l0aW9ucykgOiBudWxscHRyKQorICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlv
bnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikK
KyAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxp
c3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCiAgICAgLCBtYXNrKG8ubWFzaykKICAgICAs
IG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJbWFnZSkKICAgICAsIHBhZ2VTaXplKG8ucGFnZVNpemUp
CkBAIC0xNzAsNyArMTcwLDcgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIGp1c3Rp
ZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKICAgICAsIGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYp
CiAgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykKLSAgICAsIGN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8g
c3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFBy
b3BlcnRpZXMpIDogbnVsbHB0cikKKyAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMo
by5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmlu
Zz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKICNpZiBFTkFC
TEUoUE9JTlRFUl9FVkVOVFMpCiAgICAgLCB0b3VjaEFjdGlvbnMoby50b3VjaEFjdGlvbnMpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5j
cHAKaW5kZXggMmM2ZjMxNzhlZWIyNmM3YjJjMGQ5NWFlMTA4YjdlZmNjNmUyMmM0ZS4uMjRjZGU0
YmQ2MWU3MTRjMjMyM2I5ZTVjZDJjZjI2OWUyODQ1ZjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVu
ZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKICAgICAs
IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3Vy
Y2UobWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogICAgIGltYWdlUmVzb3Vy
Y2UoKS5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAzYzMxMDU2ZDFjYWIxZmVhMTA0OTA3ODBk
MDBjOGRjZDJjNzk4MDY4Li5iYTFjZDA1MmRhZGFhMWNlMTg0MWM3YzIzY2FmMzNmYWE0ZTM0N2Vi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNW
R0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsCiAKIHN0ZDo6dW5p
cXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dC
b3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVGbG93Qm94
PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0
aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJu
IGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZVRleHQuY3BwCmluZGV4IDY3ZTZmOTg5N2QyNzc0NGZkNDEzM2ZmMjc2NzE0YzRlOWRh
NjY1YjAuLmRiZjQ5MDNmODlmNGRjOTJlZGZmMzA1MzkyNTg2OWYzMmUyZDk5YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNw
cApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAKIHN0ZDo6dW5p
cXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94
KCkKIHsKLSAgICBhdXRvIGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW5saW5lVGV4dEJveD4o
KnRoaXMpOworICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhp
cyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAgIHJldHVybiBi
b3g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDFiM2VmMjRjYzkyZDIwNTJhMzRhYWQyMDg4MjMz
MGUxYTEyM2I4NGYuLjFhZDI2NDk2NDY3MDljMjNmMGRiOWNmYWU0Yjg2M2MyNDdiMzY5MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0
ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0Zp
CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gZmlsdGVyLnRhcmdldEJvdW5kaW5n
Qm94KCk7CiAKICAgICAvLyBBZGQgZWZmZWN0cyB0byB0aGUgYnVpbGRlcgotICAgIGF1dG8gYnVp
bGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6
Y3JlYXRlKGZpbHRlcikpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVy
QnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOwogICAgIGJ1aWxkZXItPnNl
dFByaW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpKTsKICAgICBi
dWlsZGVyLT5zZXRUYXJnZXRCb3VuZGluZ0JveCh0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgCkBA
IC0xMjIsNyArMTIyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJu
IGZhbHNlOyAvLyBBbHJlYWR5IGJ1aWx0LCBvciB3ZSdyZSBpbiBhIGN5Y2xlLCBvciB3ZSdyZSBt
YXJrZWQgZm9yIHJlbW92YWwuIFJlZ2FyZGxlc3MsIGp1c3QgZG8gbm90aGluZyBtb3JlIG5vdy4K
ICAgICB9CiAKLSAgICBhdXRvIGZpbHRlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckRh
dGE+KCk7CisgICAgYXV0byBmaWx0ZXJEYXRhID0gbWFrZVVuaXF1ZTxGaWx0ZXJEYXRhPigpOwog
ICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5n
Qm94KCk7CiAKICAgICBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzID0gU1ZHTGVuZ3RoQ29udGV4dDo6
cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJFbGVtZW50PigmZmlsdGVyRWxlbWVudCgpLCBmaWx0
ZXJFbGVtZW50KCkuZmlsdGVyVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5jcHAKaW5kZXggZDhhZDA4MDQ2NmM1YzZkOWVlY2YwNzhjZGZmNjQyNmM2MTRhMGNlMi4u
NTUyY2U1YTMzYTgwNjJlNmJlZTBiMDRhZTNmMTYwZjA5OWViNTJmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KIAogICAg
IGF1dG8mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKCZyZW5kZXJlciwgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZ3JhZGllbnREYXRhKQotICAgICAgICBncmFk
aWVudERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKKyAgICAgICAgZ3Jh
ZGllbnREYXRhID0gbWFrZVVuaXF1ZTxHcmFkaWVudERhdGE+KCk7CiAKICAgICBib29sIGlzUGFp
bnRpbmdUZXh0ID0gcmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6
QXBwbHlUb1RleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IGFhNTc2NWVkMzc5YjZhYjFiOTQ0
NzI2ZjViNWVlNDU0MzgzYzQ2NGUuLjRjODE5YjliYzU1ZGMyYmZhODJmYmJjMDk3ZjYzNzU4NWI1
YjEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IFJlbmRlCiAKICAgICBib29sIG1pc3NpbmdNYXNrZXJEYXRhID0gIW1fbWFza2VyLmNvbnRh
aW5zKCZyZW5kZXJlcik7CiAgICAgaWYgKG1pc3NpbmdNYXNrZXJEYXRhKQotICAgICAgICBtX21h
c2tlci5zZXQoJnJlbmRlcmVyLCBzdGQ6Om1ha2VfdW5pcXVlPE1hc2tlckRhdGE+KCkpOworICAg
ICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPE1hc2tlckRhdGE+KCkpOwog
CiAgICAgTWFza2VyRGF0YSogbWFza2VyRGF0YSA9IG1fbWFza2VyLmdldCgmcmVuZGVyZXIpOwog
ICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJl
bmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCAyOWU4ZTdjMjQ3NTY1ODc5MmVlNGVkNGVkMDgyMGZh
ZWVjOWJkYzBjLi5kZjAxN2JhMWJmYzBjY2Y3YWVhOTNhM2JiMmY3ZmM3ODhmNjk2Yzc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIAogc3RydWN0IE1hc2tlckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJ
bWFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBjYzJjYmZjZjBmZTlhNTllY2UxNWY1
MmYzNTcyZGI1OWQxNjMyMGQ2Li4zMWJjNWYxOTMxYmRhZTUwYWFjNjYxMzU5ZmMwYTI2ZjE3ODU4
NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgUGF0dGVybkRhdGEq
IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBPcHQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBCdWlsZCBwYXR0
ZXJuLgotICAgIGF1dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EYXRh
PigpOworICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwog
ICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJl
bGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNw
YWNlIHRyYW5zZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYXBlLmNwcAppbmRleCAzNGIwYWU3NWJkYzAwNTY1NzZkNTEzODAxODVlZmU2YmM3
MmM3MDZlLi42YTY3MTE4ZmYxYjI1OGIzMDNjOTU2Mzg1OTNmNDc0ZWU4OWJiZTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtNzks
NyArNzksNyBAQCBSZW5kZXJTVkdTaGFwZTo6flJlbmRlclNWR1NoYXBlKCkgPSBkZWZhdWx0Owog
CiB2b2lkIFJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKIHsKLSAgICBt
X3BhdGggPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KCZn
cmFwaGljc0VsZW1lbnQoKSkpOworICAgIG1fcGF0aCA9IG1ha2VVbmlxdWU8UGF0aD4ocGF0aEZy
b21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CiAgICAgcHJvY2Vzc01hcmtl
clBvc2l0aW9ucygpOwogCiAgICAgbV9maWxsQm91bmRpbmdCb3ggPSBjYWxjdWxhdGVPYmplY3RC
b3VuZGluZ0JveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJj
ZXMuY3BwCmluZGV4IGJmNzg2NDQzZGRkNjBkNjIxYmNkNTc5Yjg3NzBlZGNkOTFkMjlmYTkuLjlj
NzM3Y2FmZjhiOTI3NmNjNDEwNjAyZjU3OWE5ZjM2NGU1YTA4YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBi
b29sIFNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcihSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNs
aXBwZXIpCiAgICAgQVNTRVJUKGNsaXBwZXItPnJlc291cmNlVHlwZSgpID09IENsaXBwZXJSZXNv
dXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAg
ICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmls
dGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1h
a2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhLT5jbGlwcGVyID0gY2xpcHBlcjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUy
OSw3ICs1MjksNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0RmlsdGVyKFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXIpCiAgICAgQVNTRVJUKGZpbHRlci0+cmVzb3VyY2VUeXBlKCkgPT0g
RmlsdGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0
YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tl
ckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyID0gZmlsdGVyOwogICAgIHJldHVybiB0cnVl
OwpAQCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydChS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQpCiAgICAgQVNTRVJUKG1hcmtlclN0
YXJ0LT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFt
X21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFy
a2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRh
PigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1hcmtlclN0YXJ0OwogICAg
IHJldHVybiB0cnVlOwpAQCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRN
YXJrZXJNaWQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlck1pZCkKICAgICBBU1NFUlQo
bWFya2VyTWlkLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAg
aWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJr
ZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSBtYXJrZXJNaWQ7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC01OTIsNyArNTkyLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNl
dE1hcmtlckVuZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyRW5kKQogICAgIEFTU0VS
VChtYXJrZXJFbmQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAg
ICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1h
cmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlckVuZCA9IG1hcmtlckVuZDsK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFNWR1Jlc291cmNlczo6
c2V0TWFza2VyKFJlbmRlclNWR1Jlc291cmNlTWFza2VyKiBtYXNrZXIpCiAgICAgQVNTRVJUKG1h
c2tlci0+cmVzb3VyY2VUeXBlKCkgPT0gTWFza2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICgh
bV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAg
ICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJN
YXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyID0g
bWFza2VyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgU1ZHUmVz
b3VyY2VzOjpzZXRGaWxsKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKQogICAgICAg
ICAgICB8fCBmaWxsLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlw
ZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxT
dHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0
cm9rZURhdGEtPmZpbGwgPSBmaWxsOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjU5LDcgKzY1OSw3
IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIqIHN0cm9rZSkKICAgICAgICAgICAgfHwgc3Ryb2tlLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRp
YWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0g
ICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRh
PigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0
YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSA9IHN0cm9rZTsKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJj
ZXNDYWNoZS5jcHAKaW5kZXggMTkxOTVhYTFkYWJjNjZlNGIzNTY1OTcyZWM5MWY4OTQ3N2Y0MDM5
Yi4uMWVlYjc4ZjU3YjNlYmIzMWI0Y2RlOGU1MzAyZGRlMDllMDQ4YzBiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJlbmRl
cmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdAogICAgIEFTU0VSVCghbV9jYWNoZS5j
b250YWlucygmcmVuZGVyZXIpKTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBhbGwgcmVzb3Vy
Y2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFzc2VkIFJlbmRlck9iamVjdAotICAgIGF1dG8gbmV3
UmVzb3VyY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7CisgICAgYXV0byBu
ZXdSZXNvdXJjZXMgPSBtYWtlVW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKICAgICBpZiAoIW5ld1Jl
c291cmNlcy0+YnVpbGRDYWNoZWRSZXNvdXJjZXMocmVuZGVyZXIsIHN0eWxlKSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggMzI0MTAyNTg0YzFmMTEzZDBlZWQzMzIxNGE2N2Y1
NTM0YWIwZjU5YS4uODEwYTBiODgwYThhYTRkYWUwMmZhYjQ0NmE5NDFlZGQ5YzVhNzFkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
Ojppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAg
ICAgaWYgKG1faXNDb21wbGV4VGV4dCkKICAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0g
bnVsbHB0cjsKICAgICBlbHNlCi0gICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2lkdGhJdGVyYXRvcj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsKKyAgICAgICAg
bV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVk
Rm9udCwgbV9ydW4pOwogfQogCiBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IGQzN2JlZThjYmNlNTU2MTUxMWIyNGUzNjRlMWFmNjRhYWQ3YWE3NWQuLmU2YjI3MzIw
ZDkyZmU4NTZkODM3NDEwOGVkOTU0MmUwOTFlZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMTIy
LDIyICsxMjIsMjIgQEAgc3RhdGljIHZvaWQgZ2V0SW5saW5lUnVuKFJlbmRlck9iamVjdCogc3Rh
cnQsIFJlbmRlck9iamVjdCogYm91bmRhcnksIFJlbmRlck9iamUKIAogUmVuZGVyVHJlZUJ1aWxk
ZXI6OlJlbmRlclRyZWVCdWlsZGVyKFJlbmRlclZpZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmll
dykKLSAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rmlyc3RMZXR0
ZXI+KCp0aGlzKSkKLSAgICAsIG1fbGlzdEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxMaXN0Pigq
dGhpcykpCi0gICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE11bHRp
Q29sdW1uPigqdGhpcykpCi0gICAgLCBtX3RhYmxlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPFRh
YmxlPigqdGhpcykpCi0gICAgLCBtX3J1YnlCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVieT4o
KnRoaXMpKQotICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9y
bUNvbnRyb2xzPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVl
PEJsb2NrPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1
ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKLSAgICAsIG1faW5saW5lQnVpbGRlcihzdGQ6Om1ha2VfdW5p
cXVlPElubGluZT4oKnRoaXMpKQotICAgICwgbV9zdmdCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8
U1ZHPigqdGhpcykpCisgICAgLCBtX2ZpcnN0TGV0dGVyQnVpbGRlcihtYWtlVW5pcXVlPEZpcnN0
TGV0dGVyPigqdGhpcykpCisgICAgLCBtX2xpc3RCdWlsZGVyKG1ha2VVbmlxdWU8TGlzdD4oKnRo
aXMpKQorICAgICwgbV9tdWx0aUNvbHVtbkJ1aWxkZXIobWFrZVVuaXF1ZTxNdWx0aUNvbHVtbj4o
KnRoaXMpKQorICAgICwgbV90YWJsZUJ1aWxkZXIobWFrZVVuaXF1ZTxUYWJsZT4oKnRoaXMpKQor
ICAgICwgbV9ydWJ5QnVpbGRlcihtYWtlVW5pcXVlPFJ1Ynk+KCp0aGlzKSkKKyAgICAsIG1fZm9y
bUNvbnRyb2xzQnVpbGRlcihtYWtlVW5pcXVlPEZvcm1Db250cm9scz4oKnRoaXMpKQorICAgICwg
bV9ibG9ja0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9jaz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0Zs
b3dCdWlsZGVyKG1ha2VVbmlxdWU8QmxvY2tGbG93PigqdGhpcykpCisgICAgLCBtX2lubGluZUJ1
aWxkZXIobWFrZVVuaXF1ZTxJbmxpbmU+KCp0aGlzKSkKKyAgICAsIG1fc3ZnQnVpbGRlcihtYWtl
VW5pcXVlPFNWRz4oKnRoaXMpKQogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgLCBtX21hdGhNTEJ1
aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxNYXRoTUw+KCp0aGlzKSkKKyAgICAsIG1fbWF0aE1MQnVp
bGRlcihtYWtlVW5pcXVlPE1hdGhNTD4oKnRoaXMpKQogI2VuZGlmCi0gICAgLCBtX2NvbnRpbnVh
dGlvbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRpb24+KCp0aGlzKSkKKyAgICAs
IG1fY29udGludWF0aW9uQnVpbGRlcihtYWtlVW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCisgICAgLCBtX2Z1bGxTY3JlZW5CdWls
ZGVyKG1ha2VVbmlxdWU8RnVsbFNjcmVlbj4oKnRoaXMpKQogI2VuZGlmCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIXNfY3VycmVudCB8fCAmbV92aWV3ICE9ICZzX2N1cnJlbnQtPm1fdmlldyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcAppbmRleCA5YTk4ZDI1YzMyYjkzNjRiNDZhNmFlY2ZjM2NmZmRjNmM0NjZmNGQy
Li5iOWQyMDdmN2RmZDMyNDZmZTAzMDg2Yzg0Y2EyMDFiY2I3YjkxOWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5j
cHAKQEAgLTcxLDcgKzcxLDcgQEAgUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyoKIAogUmVuZGVyVHJl
ZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1f
ZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2dlbmVyYXRlZENvbnRlbnQoc3RkOjptYWtlX3Vu
aXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCisgICAgLCBtX2dlbmVyYXRlZENvbnRlbnQo
bWFrZVVuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCiAgICAgLCBtX2J1aWxkZXIocmVu
ZGVyVmlldygpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJ
bnB1dEJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCmlu
ZGV4IDdmZTdmNjg3MzIwNDEwZWYwNDgzODdkNDgxZjkyN2IxMmMyMzgzYWMuLmI5YzcyZWI4ODBl
OWJiODc1OThmNDE0NDA3N2QwMjMwMTY2NjViODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNl
cklucHV0QnJpZGdlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBjbGFzcyBJbnB1dFNvdXJjZSB7
CiB9OwogCiBjbGFzcyBVc2VySW5wdXRCcmlkZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJJbnB1dEJyaWRnZSk7CiBwdWJsaWM6
CiAgICAgVXNlcklucHV0QnJpZGdlKFBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5jcHAKaW5kZXggZGFlMTFjYjJmNjI4OTkxODQ1M2ExMjgwOWFlNDNiODEyNGI2
YjEyYi4uNmQ2OTVhNjYwZDBlNGUwNDVhMjZkYWJlMzMzMWVjYTI2ZmFkMmViZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkRGlydHlBbGxTdHlsZShjb25zdCBWZWN0b3I8U3R5bGVTaGVldENvbnRl
bnRzKj4mIHNoZWV0cykKIH0KIAogSW52YWxpZGF0b3I6OkludmFsaWRhdG9yKGNvbnN0IFZlY3Rv
cjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9y
JiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKQotICAgIDogbV9vd25lZFJ1bGVTZXQoc3RkOjptYWtlX3Vu
aXF1ZTxSdWxlU2V0PigpKQorICAgIDogbV9vd25lZFJ1bGVTZXQobWFrZVVuaXF1ZTxSdWxlU2V0
PigpKQogICAgICwgbV9ydWxlU2V0KCptX293bmVkUnVsZVNldCkKICAgICAsIG1fZGlydGllc0Fs
bFN0eWxlKHNob3VsZERpcnR5QWxsU3R5bGUoc2hlZXRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVsYXRpb25zLmNwcAppbmRleCA0ZDgxNDhiNGUzMWQ3NGQ2YTBhNTE3NTRkZWU1ZWFi
ODA3NTlhYmFhLi4wNjJkNTk2NGQ3N2VjNWRiODNiM2Y0MWFjYmFhODdlZmNlOThkZDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZWxhdGlvbnM+IGNvbW1pdFJlbGF0aW9uc1RvUmVuZGVyU3R5bGUoUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zCiAKICAgICBhdXRvIGFwcGVuZFN0eWxlUmVsYXRpb24gPSBb
JnJlbWFpbmluZ1JlbGF0aW9uc10gKGNvbnN0IFJlbGF0aW9uJiByZWxhdGlvbikgewogICAgICAg
ICBpZiAoIXJlbWFpbmluZ1JlbGF0aW9ucykKLSAgICAgICAgICAgIHJlbWFpbmluZ1JlbGF0aW9u
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVsYXRpb25zPigpOworICAgICAgICAgICAgcmVtYWluaW5n
UmVsYXRpb25zID0gbWFrZVVuaXF1ZTxSZWxhdGlvbnM+KCk7CiAgICAgICAgIHJlbWFpbmluZ1Jl
bGF0aW9ucy0+YXBwZW5kKHJlbGF0aW9uKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGUuY3BwCmluZGV4IDlmMGQxYWQ3NDkwYmZlYWIyNDA3Y2U3YmM4OGIwOTUxMTZkMGIyMjIu
LmRjYjY1YmMwOWMzNDc3OWI2M2EyOTMyNGUyNGQzNzJiZmM2YTIzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFN0eWxlUmVzb2x2ZXImIFNjb3Bl
OjpyZXNvbHZlcigpCiAgICAgaWYgKCFtX3Jlc29sdmVyKSB7CiAgICAgICAgIFNldEZvclNjb3Bl
PGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZl
ciwgdHJ1ZSB9OwogCi0gICAgICAgIG1fcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxl
UmVzb2x2ZXI+KG1fZG9jdW1lbnQpOworICAgICAgICBtX3Jlc29sdmVyID0gbWFrZVVuaXF1ZTxT
dHlsZVJlc29sdmVyPihtX2RvY3VtZW50KTsKIAogICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkg
ewogICAgICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsK
QEAgLTU2Myw3ICs1NjMsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBT
Y29wZTo6YWN0aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3IoKQogYm9vbCBTY29wZTo6YWN0aXZl
U3R5bGVTaGVldHNDb250YWlucyhjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCkg
ewotICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOworICAg
ICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBtYWtl
VW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOwogICAgICAgICBmb3IgKGF1
dG8mIGFjdGl2ZVN0eWxlU2hlZXQgOiBtX2FjdGl2ZVN0eWxlU2hlZXRzKQogICAgICAgICAgICAg
bV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwLT5hZGQoYWN0aXZl
U3R5bGVTaGVldC5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwCmluZGV4IDg0NmEyMzFhZDJiMThiNWQ3ZjI5NDkwMTZkMDlmMjIzZGQ2OWU4
OGIuLmEwMGY0ZmUwZjRjY2I1MmRkODMxYTk0ZTI2YTU4NjRlNWMxYjc5MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmUoKQogCiAgICAgbV9k
aWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9IG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLmhhc1BlbmRp
bmdTaGVldHNCZWZvcmVCb2R5KCk7CiAKLSAgICBtX3VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
VXBkYXRlPihtX2RvY3VtZW50KTsKKyAgICBtX3VwZGF0ZSA9IG1ha2VVbmlxdWU8VXBkYXRlPiht
X2RvY3VtZW50KTsKICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKGFkb3B0UmVmKCpuZXcgU2NvcGUo
bV9kb2N1bWVudCkpKTsKICAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnQobV9kb2N1bWVu
dCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmlu
ZGV4IGJjNTE0MzRiMGIyYjhlMGJmNzdlNTdhNGE3NmU0ZDRiY2VlZTk5NjUuLjI1ZjM4NjNkMDc5
NTRhYzhkNmE2M2U2ODY0YTFmMDc2YjBkNTFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMoRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcmVz
b3VyY2VzQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKKyAgICAs
IG1fcmVzb3VyY2VzQ2FjaGUobWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKICAgICAs
IG1fYXJlQW5pbWF0aW9uc1BhdXNlZCghZG9jdW1lbnQucGFnZSgpIHx8ICFkb2N1bWVudC5wYWdl
KCktPmlzVmlzaWJsZSgpKQogewogfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIEVs
ZW1lbnQmIGVsCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQs
IG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0VsZW1lbnRzPigpOworICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQZW5kaW5nRWxlbWVudHM+
KCk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZlbGVtZW50KTsKIAogICAgIGVs
ZW1lbnQuc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEhhc2hT
ZXQ8U1ZHRWxlbWVudCo+KiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNldE9mRWxlbWVudHNSZWZl
cmVuY2luZ1RhcmdldChTVkdFCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVu
dFJlZmVyZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQmIHJlZmVyZW5jaW5nRWxlbWVudCwgU1ZHRWxl
bWVudCYgcmVmZXJlbmNlZEVsZW1lbnQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2VsZW1lbnRE
ZXBlbmRlbmNpZXMuZW5zdXJlKCZyZWZlcmVuY2VkRWxlbWVudCwgWyZyZWZlcmVuY2luZ0VsZW1l
bnRdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTVkdFbGVtZW50
Kj4+KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVmZXJlbmNpbmdFbGVt
ZW50IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4o
c3RkOjppbml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQg
fSk7CiAgICAgfSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZyZWZlcmVuY2luZ0VsZW1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCmluZGV4IGE4MDk2ZGRhZGE4MWVhZDZhN2ExZWEzMjRjZDg1MDY3ZjVjMGIy
OGIuLmU0ZGUzYjc0OWYwYTAwMzliYzVjNGNmY2QwOGUxOTM5NmNkNjU2MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5F
IEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiBjcmVhdGVBdHRyaWJ1dGVO
YW1lVAogU1ZHRWxlbWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBDcmVhdGVTVkdFbGVtZW50KQogICAgICwgU1ZHTGFuZ1NwYWNlKHRoaXMpCi0gICAgLCBt
X3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJvcGVydHlBbmlt
YXRvckZhY3Rvcnk+KCkpCisgICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KG1ha2VVbmlx
dWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CkBAIC0y
MDMsNyArMjAzLDcgQEAgdm9pZCBTVkdFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNo
YW5nZSBjaGFuZ2UpCiBTVkdFbGVtZW50UmFyZURhdGEmIFNWR0VsZW1lbnQ6OmVuc3VyZVNWR1Jh
cmVEYXRhKCkKIHsKICAgICBpZiAoIW1fc3ZnUmFyZURhdGEpCi0gICAgICAgIG1fc3ZnUmFyZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9z
dmdSYXJlRGF0YSA9IG1ha2VVbmlxdWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOwogICAgIHJldHVy
biAqbV9zdmdSYXJlRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmNwcAppbmRleCBhNzU4OTBmMzE4MDQ2OGQxNTI0YmVlODU0MzU5ZDAzNTZlYjUyMjJkLi44
MGVjN2ZjODYyOTJiNjNiYmJhODUxZTExZTEwNmZhMTUyZjkxNDcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEFmZmluZVRy
YW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25z
dAogQWZmaW5lVHJhbnNmb3JtKiBTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5z
Zm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKLSAgICAgICAgbV9z
dXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFmZmluZVRyYW5zZm9ybT4o
KTsKKyAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPEFmZmluZVRy
YW5zZm9ybT4oKTsKICAgICByZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKaW5kZXggNmYwYWNhY2YxOWVl
ODUwZGI0ZTY5MTBkM2U4M2QyNjQ5NGQ2N2ViMC4uNDM0ZDkxZWIzZGY4YWQ4NzlmODM5YTQ4OTY2
ODY3ODBiNDA5ZjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRl
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKQEAg
LTg2LDcgKzg2LDcgQEAgY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW0gewogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CiAgICAgfQogCiAg
ICAgRGF0YUl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWlu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHAKaW5kZXggZTA0MjNjZTk4MTVmYTBmMjU1NjNhM2I1NDMxNDA4NmFjMzU2ZmY0NC4uM2ViNTdh
ZDJmMjFkZmE2NGI5YjExODAxZjQyNzI4MzYwMmI3NWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUoU1ZHU01JTEVsZW1lbnQqIGFuaW1h
dGlvbiwgU1ZHRWxlbWVudCogdGFyZ2V0LAogICAgIEVsZW1lbnRBdHRyaWJ1dGVQYWlyIGtleSh0
YXJnZXQsIGF0dHJpYnV0ZU5hbWUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25zVmVj
dG9yPiYgc2NoZWR1bGVkID0gbV9zY2hlZHVsZWRBbmltYXRpb25zLmFkZChrZXksIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNjaGVkdWxlZCkKLSAgICAgICAgc2NoZWR1bGVk
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigpOworICAgICAgICBzY2hlZHVs
ZWQgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbnNWZWN0b3I+KCk7CiAgICAgQVNTRVJUKCFzY2hlZHVs
ZWQtPmNvbnRhaW5zKGFuaW1hdGlvbikpOwogICAgIHNjaGVkdWxlZC0+YXBwZW5kKGFuaW1hdGlv
bik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDgwOWFm
ZjVkODg1MzcxMjA3MmFkODcxNTY3MzVlOTMwZjliYTM1Y2QuLjVjNTZiNjk5OTViYzkyZjRjYTg4
MWUyYjkxZTlmMzdmZjVjMzhmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpk
YXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2
ZWQpIHsKICAgICAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9u
V2l0aEVtcHR5Q2xpZW50cygpOwotICAgICAgICBtX2Nocm9tZUNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOworICAgICAgICBtX2Nocm9tZUNsaWVu
dCA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOwogICAgICAgICBwYWdl
Q29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKIAogICAg
ICAgICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UgbWln
aHQgbGVhayB0aGUgd29ybGQuCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMg
U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBU
aGlzIHdpbGwgYmVjb21lIGFuIGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxv
YWQgb3RoZXIKICAgICAgICAgLy8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93
LCBiZWNhdXNlIFNWR0ltYWdlIGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRv
cC1sZXZlbCBkb2N1bWVudC4KLSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
PihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgICAgIG1fcGFnZSA9IG1ha2VVbmlx
dWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgICAgICBtX3BhZ2UtPnNl
dHRpbmdzKCkuc2V0TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5n
cygpLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCku
c2V0UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IGQ5NzAzMDJhZGY4NjU4
NTUwOWM2NTA4ZDUwNDk1MmEyNTUzMjM2MmIuLmM3N2FlMDhiYWM2NWMzYzJjZmM4OTc0ZmEzM2U3
NjQ2MGNlOTdmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgUmVuZGVy
T2JqZWN0OwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVyQnVpbGRl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBI
YXNoU2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9w
ZXJ0eS5oCmluZGV4IGU1ZWZhYWVhNzExMWJjNmM5NTdkOTcyZDc0NTQ4ZGU5MmQ4YTEzM2UuLmNl
YmFhMzYzYmY1MjdiYmIzOGU1NjdkM2UzZDQyYmY4NDMxMDJhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9w
ZXJ0eSA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERl
Y29yYXRlZFByb3BlcnR5PgogICAgIHN0YXRpYyBSZWY8QW5pbWF0ZWRQcm9wZXJ0eT4gY3JlYXRl
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgc3RkOjptYWtlX3VuaXF1
ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZSwgUHJvcGVydHlUeXBlPj4oKSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVt
ZW50LCBtYWtlVW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0
eVR5cGU+PigpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBl
LCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0
eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAyODg3NDFiMTI5MDVjYjg1MTQz
MDU0MDkwYzRlMmM5MTM5YjM1YmYzLi5kMDczN2FjYmEzMzFmZTEyMzQ3YjgzNGZmN2FhMzAxMDBh
ZDE1NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC01MCw3ICs1MCw3IEBA
IGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xl
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xl
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjgs
NyArNjgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQQogCiAgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJv
b2xlYW4+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtODksNyArODksNyBAQCBjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3Ig
ZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAg
IHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1h
dGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxF
bnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTEx
LDcgKzExMSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
SW50ZWdlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmlt
YXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIAogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUs
IFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwg
bGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3Ro
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiAKICAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTE3Miw3ICsxNzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51
bWJlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxT
VkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE4OSw3ICsxODksNyBAQCBjbGFz
cyBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVk
TnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKIHBy
aXZhdGU6CkBAIC0yMDYsNyArMjA2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjwKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMjQsNyArMjI0LDcgQEAg
Y2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3I8U1YKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUG9pbnRM
aXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiBw
cml2YXRlOgpAQCAtMjQzLDcgKzI0Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjYyLDcgKzI2Miw3IEBAIGNs
YXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlBCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjgxLDcgKzI4MSw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjxTVkdBbmltCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUmVjdD4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTgsNyArMjk4LDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiYg
YW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zMzgs
NyArMzM4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG8KIHB1YmxpYzoKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRv
ckltcGwuaAppbmRleCA0ZWRhMzRjOWIxODg4ZmZkNmQzZDY2MzJjZjBjZjZkMzNhNmZhOWUxLi4z
OTdmZjA5MTU5NDAwZDMzYzA1MmIxMWQ4MjhjYjhlMzdiM2M4MDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9y
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0
ZWRBbmdsZU9yaWVudEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQ
YWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZDEsIFJl
ZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVk
MiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
MTEzLDcgKzExMyw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hCiBwdWJsaWM6CiAgICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBh
bmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
VkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwg
YW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIFNWR0Fu
aW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlQYWlyQW5pbWF0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVk
MSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1h
dGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVk
MiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlclBhaXJBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3Iu
aAppbmRleCA2NGE2NWIxODYyZmZiOTY5NjAzYzcxNTYwN2I1NDRmNTU2ZTAwODNhLi4wMjJlZGVk
YTgyMWI1MzM1NWIzZmRkMzk1OGYyNDM2ODAxOWFhZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKQEAgLTUyLDYgKzUy
LDcgQEAgZW51bSBjbGFzcyBDYWxjTW9kZSA6IHVpbnQ4X3QgewogfTsKIAogY2xhc3MgU1ZHQXR0
cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpCiAgICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24u
aAppbmRleCAyNjRjMzZiNjkwNzRjY2YzZTJlMjlkMjY3NzIxY2Y1Mzc0NTcwMzExLi5hMzVlMjUw
YTliMTUxZjllODk3Zjg1ZjYzNjdjMzg3ZGJiM2NhNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKQEAgLTM5
LDcgKzM5LDcgQEAgY2xhc3MgU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24gOiBwdWJsaWMgU1ZHRGVj
b3JhdGVkUHJpbWl0aXZlPERlY29yYXRpb25UeXBlLCBFbnUKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgRW51bVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2ludGVncmFsPERlY29yYXRpb25UeXBlPjo6dmFsdWUsICJEZWNvcmF0aW9uVHlwZSBm
b3JtIGVudW0gc2hvdWxkIGJlIGludGVncmFsLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29y
YXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0
ZWRQcm9wZXJ0eS5oCmluZGV4IGU0YWIwMzcwYjk0NzllNTU1MGJiYjExMDg3MzQyMzUzMTE2NjUw
NzAuLmFiMTRmM2NiZTVhN2ZjMjBlMTMwZmRhOWJkNDg3OTdkZGRkM2U4NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaApA
QCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IERlY29yYXRpb25UeXBlPgogY2xhc3MgU1ZHRGVjb3JhdGVkUHJvcGVydHkgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNWR0RlY29yYXRlZFByb3BlcnR5KCkg
PSBkZWZhdWx0OwogICAgIHZpcnR1YWwgflNWR0RlY29yYXRlZFByb3BlcnR5KCkgPSBkZWZhdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZl
UHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvci5oCmluZGV4IDQxMjE3MjIwYmRmY2ZlZmY2N2MxNjA5MTNh
ZDE0ZDZiOTliYTE0MmMuLjY4YjJlMGIxMTM3YWRlOGQzN2Y4MGUwZTI5OGI1ZGUyNGQwMWE4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVBy
b3BlcnR5QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvciA6IHB1YmxpYyBTVkdQcm9wZXJ0eUFuaW1hdG9yPEFuaW1h
dGlvbkZ1bmN0aW8KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1v
dmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCmluZGV4
IGFkNTBkNDIzNjI5Njk0MmQxZGM4NzE4YTJkYThlNmFkZjhkMWJjY2IuLjVlMzAxOGY1YTQwMmE5
YzdmMTI5ZDQxZDQxOWFjNWU5NDlmZWUwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaApAQCAtMzQs
NiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQcm9wZXJ0eUFuaW1h
dG9yRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
U1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRv
ckltcGwuaAppbmRleCAxMTg4ODZjNGY4YmI3MjM2YTQ0NmZmYWQwMzg2OWZmMGIwZGNkZTk1Li5m
ZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEyODc5YTdlZGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1h
dG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3Rh
cnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFu
aW1hdG9ySW1wbC5oCmluZGV4IDVlZThhYzNkMGY0ZTEyYzYyYTVlZmMwMGZmNTNiNTkwZTQwMGYz
NjguLmFlOTRlMjllZDRiODYxM2I5OWNkOTc0ODZlZDBiMDYyODI2YzAyZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0
b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9w
ZXJ0eUxpc3RBbmltYXRvckltcGwuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhM
aXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcjxT
VkdMZW5ndAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlv
bk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRl
ZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5
KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExl
bmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aExpc3RB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwog
ICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJp
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGMx
MTMxZDI1YjM4OGJiYTgzNjY1M2QyOTcwOGU2YTViYmU0YmRmYzQuLjI0Mzc4OWJiOWQyNzlhNmU4
NTNlMDg2NDRiNjRiZWU4NTFlNWVlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcApAQCAtMjMxLDYgKzIzMSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5n
czo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogfQogCiBjbGFzcyBJbnRl
cm5hbFNldHRpbmdzV3JhcHBlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRp
bmdzV3JhcHBlcihQYWdlKiBwYWdlKQogICAgICAgICA6IG1faW50ZXJuYWxTZXR0aW5ncyhJbnRl
cm5hbFNldHRpbmdzOjpjcmVhdGUocGFnZSkpIHsgfQpAQCAtMjUyLDcgKzI1Myw3IEBAIGNvbnN0
IGNoYXIqIEludGVybmFsU2V0dGluZ3M6OnN1cHBsZW1lbnROYW1lKCkKIEludGVybmFsU2V0dGlu
Z3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFnZSogcGFnZSkKIHsKICAgICBpZiAoIVN1cHBs
ZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpCi0gICAgICAgIFN1cHBs
ZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2Vf
dW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CisgICAgICAgIFN1cHBsZW1l
bnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPElu
dGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PElu
dGVybmFsU2V0dGluZ3NXcmFwcGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBw
bGVtZW50TmFtZSgpKSktPmludGVybmFsU2V0dGluZ3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGUxNzhiNDk2ODU4NzU1MWJmMDcwNGQ4MzAyMDU2MmRkMTJk
ZjRlYmIuLjYyZTczNDlhMWNhMTY2MmQwNjJjNjA3OTM4OTJmYzcwZmY2MDU4MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCBjbGFzcyBJbnNw
ZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbCwgcHVibGljCiB9OwogCiBJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJG
cm9udGVuZChQYWdlJiBpbnNwZWN0ZWRQYWdlLCBSZWZQdHI8RE9NV2luZG93PiYmIGZyb250ZW5k
V2luZG93KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkUGFn
ZS5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdl
KCksIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGlu
Z3M+KCkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdl
Lmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2Uo
KSwgbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkK
ICAgICAsIG1fZnJvbnRlbmRXaW5kb3coZnJvbnRlbmRXaW5kb3cuY29weVJlZigpKQogewogICAg
IEFTU0VSVF9BUkcoZnJvbnRlbmRXaW5kb3csIGZyb250ZW5kV2luZG93KTsKQEAgLTU2Nyw3ICs1
NjcsNyBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgYXV0
byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFn
ZSgpICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGF1dG8gbW9ja1BheW1lbnRD
b29yZGluYXRvciA9IG5ldyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKCpmcmFtZS0+cGFnZSgpKTsK
LSAgICAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91
bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqbW9ja1BheW1lbnRDb29yZGluYXRvcikpOworICAg
ICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXlt
ZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CiAgICAgfQogI2VuZGlm
CiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVj
aFN5bnRoZXNpemVyKCkKICAgICBpZiAoIXN5bnRoZXNpcykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOworICAgIHN5bnRoZXNpcy0+
c2V0UGxhdGZvcm1TeW50aGVzaXplcihtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrPihzeW50aGVzaXMpKTsKIH0KIAogI2VuZGlmCkBAIC0yNDg5LDcgKzI0ODksNyBAQCBS
ZWZQdHI8V2luZG93UHJveHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiB1cmwpCiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9IGNvbnRleHREb2N1
bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0gaW5zcGVjdGVkUGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgYXV0byBmcm9udGVu
ZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3csIHVybCwgIiIsICIi
KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2Fz
dDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CisgICAgbV9pbnNw
ZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVj
dGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3co
KSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQogCkBAIC0zMDA5LDcgKzMw
MDksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldFZpZXdFeHBvc2VkUmVjdChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZgogCiB2b2lkIEludGVybmFsczo6c2V0UHJp
bnRpbmcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIHByaW50Q29udGV4dEZvclRlc3Rp
bmcoKSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKKyAgICBwcmlu
dENvbnRleHRGb3JUZXN0aW5nKCkgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oZnJhbWUoKSk7
CiAgICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpLT5iZWdpbih3aWR0aCwgaGVpZ2h0KTsKIH0K
IApAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZUF1dG9TaXplTW9k
ZShib29sIGVuYWJsZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogdm9pZCBJbnRlcm5hbHM6
OmluaXRpYWxpemVNb2NrQ0RNKCkKIHsKLSAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9y
eShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5TW9j
a0NETT4oY2RtKTsgfSwKKyAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVn
YWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwK
ICAgICAgICAgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeU1vY2tDRE06
OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpOwogfQogCkBAIC00MjQxLDcgKzQyNDEsNyBA
QCB2b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCiAgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6
bWFpblRocmVhZFF1ZXVlKCksICpkb2N1bWVudCwgW2RvY3VtZW50LCB0ZXN0TnVtYmVyXSgpIHsK
KyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1l
bnQsIHRlc3ROdW1iZXJdKCkgewogICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1pY3Jv
VGFzayAjIiwgdGVzdE51bWJlciwgIiBoYXMgcnVuLiIpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKaW5kZXggNjQyODdkMjM5YWY1NzNlOTIwM2Qy
NTg0MzFiMjczYzdiODc0OTAwNi4uNjAyNzJkMzQ5N2Y0Yjg2NWNkYjAzNzBmZTQxZDNkNmZiZGU4
YjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC0zOCw2
ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDRE1TZXNzaW9uIDog
cHVibGljIExlZ2FjeUNETVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIE1vY2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAg
ICB2aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lvbigpID0gZGVmYXVsdDsKQEAgLTczLDcgKzc0LDcgQEAg
Ym9vbCBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpj
cmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogc3RhdGljIFVpbnQ4QXJy
YXkqIGluaXREYXRhUHJlZml4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TGVnYWN5TW9ja0NETS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgK
aW5kZXggMjRiOWI4MDA4YzRmNTE5YjRhNjY2ZWM2ZDE1MjVhYzYyZWMxYzMwYS4uYjkzYWViOTNm
ZjYzMjllNTE1NDdjMTNmZjc2YTY5MmVlNmE3MTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9M
ZWdhY3lNb2NrQ0RNLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTGVnYWN5Q0RNOwogCiBjbGFzcyBMZWdhY3lNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGVJ
bnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IExlZ2FjeU1vY2tDRE0oTGVnYWN5Q0RNKiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2Rt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA1Njc5NmVl
OTAwYmJmM2I2Y2MwNWNmNmEyMjk2ZWZkNDNiOWVmN2I2Li5jZTVkOGY3ZDZiZGYzOGI1OTIyMDkz
MDJhNmU2ZDcxYjM2OTY2MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBv
cnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKIH0K
IAogTW9ja0NETTo6TW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDMzOTZjZDAyYWQwMmRkMTRl
OTJmMTU3OWUyNzUxNmU2YmMzZjQyOTguLjM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdl
NTI1MDU5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTEw
MCw2ICsxMDAsNyBAQCBjbGFzcyBNb2NrQ0RNRmFjdG9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1v
Y2tDRE1GYWN0b3J5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPAogfTsKIAogY2xhc3MgTW9ja0NE
TSA6IHB1YmxpYyBDRE1Qcml2YXRlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9ja0NETT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1vY2tDRE0oV2Vha1B0
cjxNb2NrQ0RNRmFjdG9yeT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwCmluZGV4IDUxMTgxZGFlNzJlMTNlMmJiZDE1M2U4MTFjMTQzNjRkMWNkOGEx
ODcuLjc3OGE5MThhNmI5MDc1NWNiODZkM2FhYTc0Zjc5YjNlNjE4ZDRjOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TW9j
a0NvbnRlbnRGaWx0ZXI+IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVy
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0dhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZDNhYzVkODdkMTllMmE4NTM2MWMxMTU3MmNm
MzExZjBjODNiMjQ1Yi4uZDQwZGVkMWRhMTE5OGNhYTM0NTlkNjc3ZTFmZTg0ZjViZmI5NDZlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIHZvaWQgTW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWRE
ZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGdhCiAgICAgaWYgKG1fbW9ja0dh
bWVwYWRWZWN0b3JbaW5kZXhdKQogICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XS0+
dXBkYXRlRGV0YWlscyhnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwogICAgIGVs
c2UKLSAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBzdGQ6Om1ha2VfdW5pcXVl
PE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsK
KyAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBtYWtlVW5pcXVlPE1vY2tHYW1l
cGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKIH0KIAogYm9v
bCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQgaW5kZXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAppbmRl
eCBkYmU5MDczZDZhZGViZmM1MDE1OWNjMmVkYmIyMjgzY2NkMTdiYTg1Li44ZjE2NDdjMWYzMjI1
MTgxNmM3Y2YwODk2MTgyYWUzNDIzNWM1MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBXb3JrZXJD
b25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwKIHsKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5n
ZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwotICAgIGF1dG8gbWVzc2FnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50
cyksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwogICAgIG1fd29ya2VyR2xvYmFsU2Nv
cGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCmluZGV4IGY0M2JkMmE3YTYwNTkzNzI3
YWQwYTZhOTFkZWNkNmViZWM3MjI2ODguLjY5MDNiZTVlYzI1ZmI5MWVmZjc3NzZlNDQ3NmFkNGVh
MmJjZTczMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNw
cApAQCAtNDQsNiArNDQsNyBAQCBXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgp
CiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlcgogeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEV2ZW50RGlzcGF0Y2hlcihSZWZQdHI8
RXZlbnQ+JiYgZXZlbnQsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUpCiAgICAgICAgIDog
bV9ldmVudChXVEZNb3ZlKGV2ZW50KSkKQEAgLTg0LDcgKzg1LDcgQEAgYm9vbCBXb3JrZXJFdmVu
dFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBhdXRvKiBldmVudFB0ciA9IGV2ZW50LnB0cigpOwotICAgIGF1dG8gZXZl
bnREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUo
ZXZlbnQpLCAqdGhpcyk7CisgICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPEV2
ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsKICAgICBtX2V2ZW50RGlzcGF0
Y2hlck1hcC5hZGQoZXZlbnRQdHIsIGV2ZW50RGlzcGF0Y2hlci5nZXQoKSk7CiAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LnBvc3RUYXNrKFtldmVudERpc3BhdGNoZXIgPSBXVEZNb3ZlKGV2
ZW50RGlzcGF0Y2hlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBldmVu
dERpc3BhdGNoZXItPmRpc3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZl
bnRRdWV1ZS5oCmluZGV4IDYxMTVlZjRhMTM2NTJhNmVhZDEwYWYzN2NmYjQ5NDI4MjBjM2NiMmIu
LmQ4OTczZDViY2FlMTdiOTU1MDA0NGM3ZTgwMTYwNWI5OWQ1NDlhZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFdvcmtl
ckV2ZW50UXVldWUgZmluYWwgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV29ya2VyRXZlbnRRdWV1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+V29ya2VyRXZlbnRRdWV1ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3YmE2
ZWRiNTIwOGYyMmMzZjhmMTZkZTI5ZDgyNWI3NzFmNmMzZTllLi5iMTdkNjYzNjNhYzM1ODBlN2Ez
NDQwMDgxYTJmN2M2M2EwNzM4NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcApAQCAtNjIsOSArNjIsOSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29y
a2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmln
aQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2Vy
QWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JD
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRo
aXMpKQotICAgICwgbV9taWNyb3Rhc2tRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPE1pY3JvdGFza1F1
ZXVlPihtX3NjcmlwdC0+dm0oKSkpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlclNj
cmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VV
bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9taWNyb3Rh
c2tRdWV1ZShtYWtlVW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCiAgICAg
LCBtX2lzT25saW5lKGlzT25saW5lKQogICAgICwgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3koc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5KQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQpAQCAtODYsNyArODYsNyBAQCBXb3JrZXJH
bG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiBvcmlnaQogICAgICAgICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21G
aWxlVVJMc1F1aXJrKCk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9y
aWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSkpOwotICAgIHNldENvbnRlbnRTZWN1
cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsg
bV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiB9CiAKIFdv
cmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQpAQCAtMzYyLDkgKzM2Miw5IEBA
IHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBt
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3Vy
Y2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVh
c2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9n
LCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0
SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0
YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWws
IG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUs
IHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGE3NWMwMTU2
YzU5ZTM4ZGQ5OTlkNmNlYzFkZGVlZGUyM2JlMTg3YjMuLjRlOWY1MTlhZWZlZGQyNWY4ODNmNjNh
Y2EwYTQ3ODlmZjAyN2U0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkmIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OmNyZWF0ZShXb3JrZXImIHdvcmtlcikKIAogV29y
a2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciYgd29ya2VyT2Jq
ZWN0KQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2luc3BlY3RvclByb3h5KHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQorICAg
ICwgbV9pbnNwZWN0b3JQcm94eShtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3Jr
ZXJPYmplY3QuaWRlbnRpZmllcigpKSkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmpl
Y3QpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgJiYgaXNNYWluVGhyZWFkKCkpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnQKICAgICAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwogICAgICAgICBt
X3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogICAgIH0g
ZWxzZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBt
X3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggYmNkOTRlNmFjMDQw
M2FjZDZhNTRiYWM0MWZhYjQxZTViZjU1MjdkYS4uYmZhYzk1OTJkZmFhNzkyMTAwNjViMzQ1OWJk
MjIxNjE5NTc4NDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIE1vZGVQcmVkaWNhdGUgewogfTsKIAogV29ya2VyUnVu
TG9vcDo6V29ya2VyUnVuTG9vcCgpCi0gICAgOiBtX3NoYXJlZFRpbWVyKHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCisgICAgOiBtX3NoYXJlZFRpbWVyKG1ha2VVbmlxdWU8
V29ya2VyU2hhcmVkVGltZXI+KCkpCiB7CiB9CiAKQEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQg
V29ya2VyUnVuTG9vcDo6cG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRh
c2spCiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5k
QW5kS2lsbChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2Rl
KCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4o
V1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6
OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29u
c3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5h
cHBlbmQobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9CiAKIHZvaWQg
V29ya2VyUnVuTG9vcDo6cG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcAppbmRleCAxOTkxMmYwMjc1ZmVhMTk0ODA1NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1Li4yMjhm
M2QxN2ZmMDAyMmU2MmU2MzY0NTMyZDU1NmI5NTA3YTAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9p
ZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXQKIAogICAgIEFTU0VSVChzY3JpcHRSZXF1ZXN0Lmh0dHBNZXRo
b2QoKSA9PSAiR0VUIik7CiAKLSAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
c291cmNlUmVxdWVzdD4oV1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CisgICAgYXV0byByZXF1ZXN0
ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOwog
ICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAg
Y29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKIAogc3Rk
Ojp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVS
ZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQogewotICAg
IGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7
CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsK
ICAgICByZXF1ZXN0LT5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgIHJlcXVlc3QtPnNldElu
aXRpYXRvcklkZW50aWZpZXIoaW5pdGlhdG9ySWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggMWY3NTYxODZh
MjBmMDE2OWU0Nzg0Mzk1MWJlZTM2ODdlMDAyNGZiYS4uM2MzODU4YmRhOWI0NGI1N2ZhZGIzOWVm
YTJlMGEwZjNhMzA0MTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cApAQCAtMTE0LDcgKzExNCw3IEBAIFdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVS
TCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAgLCBtX3dv
cmtlckRlYnVnZ2VyUHJveHkod29ya2VyRGVidWdnZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVw
b3J0aW5nUHJveHkod29ya2VyUmVwb3J0aW5nUHJveHkpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhy
dW50aW1lRmxhZ3MpCi0gICAgLCBtX3N0YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2Vy
VGhyZWFkU3RhcnR1cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50
LCBpc09ubGluZSwgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQorICAgICwgbV9zdGFydHVwRGF0
YShtYWtlVW5pcXVlPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlk
ZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3ksIHRvcE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAsIG1faWRiQ29ubmVjdGlvblByb3h5
KGNvbm5lY3Rpb25Qcm94eSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGIyZDI2MTVh
MTI2M2QxNjI2NjE4MjAwNDY0OGY5MGVkYTY5MjA2YjUuLjU5YzcxYzRkMTQ3NjI3Y2ZkOWQzMWE0
NWVhYmNjY2RhZTEwM2U3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXJlZkV2ZW50VGFyZ2V0KCkKIGF1dG8gU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkoKSAtPiBSZWFkeVByb21pc2UmCiB7CiAgICAgaWYg
KCFtX3JlYWR5UHJvbWlzZSkgewotICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVhZHlQcm9taXNlPigpOworICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlx
dWU8UmVhZHlQcm9taXNlPigpOwogCiAgICAgICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gKm1fcmVhZHlQcm9taXNlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3Jp
cHRVUkwsIGNvCiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lz
dGVyOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBz
Y2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVu
aXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShq
b2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lz
dHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1v
dmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENP
TlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVn
aXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50
aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3Rk
OjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdv
cmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0K
IAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3Qg
VVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJM
LCBjb25zdCBVUkwmCiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVt
b3ZlUmVnaXN0cmF0aW9uOiBVcGRhdGluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1
NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAg
ICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBX
VEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFr
ZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxl
Sm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYikKQEAgLTI2OSw3ICsy
NjksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25z
dCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycgogICAgIH0KIAogICAgIHVpbnQ2NF90IHBl
bmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVy
OwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9t
aXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAg
YXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUo
cHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9t
aXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNl
KSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZp
ZXIoKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Omdl
dFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAog
ICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1By
b21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1By
b21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAg
ICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3Zl
KHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+
Y29udGV4dElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdhYzljOTgzODNiMDRiNmVi
ODljOTlmMjIwODg1ZTc2NzM5NzZjM2YuLjNiZDZiOWIwNmU1NzM3NjY1YjU4Zjk2OWUyOTNkMGZl
ZDYyYzNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGNsYXNzIFNlcnZp
Y2VXb3JrZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIEFjCiAjZW5kaWYKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1Byb21p
c2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8UGVuZGluZ0FjdGl2aXR5PFNl
cnZpY2VXb3JrZXJDb250YWluZXI+PiYmIHBlbmRpbmdBY3Rpdml0eSkKICAgICAgICAgICAgIDog
cHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogICAgICAgICAgICAgLCBwZW5kaW5nQWN0aXZpdHko
V1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGJj
OGY5MWVlNDM0NjJhNTA0OWU4OGMxY2VmNWVmYTc2MmM5OGZmLi5jYjVjMjIxZmM5NDg4ZDdjMDA3
Mjk4M2ExNTc4OTVkY2E4YzZjZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uCiAKICAgICBzZXJ2aWNlV29ya2VyLT5z
ZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CiAKLSAgICBtX3BlbmRpbmdTZXJ2aWNlV29y
a2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxT
ZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91
dCkpOworICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChp
ZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0
aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CiAKICAgICBhdXRvJiB0aHJlYWQgPSBzZXJ2aWNl
V29ya2VyLT50aHJlYWQoKTsKICAgICB0aHJlYWQuc3RvcChbdGhpcywgaWRlbnRpZmllciwgc2Vy
dmljZVdvcmtlciA9IFdURk1vdmUoc2VydmljZVdvcmtlciksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcAppbmRleCBjNjE3MzYxM2NhY2I1NWQ2OTA1OGJlMmM3ZTJhNWZi
ZDg1MjljNzc2Li45ZTcyOGMzYTdhZmE0NmM5NDljZGNiZTBkNmZlYjA0YTk1MzFjY2Y5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29u
ZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVz
KCkuYWRkKHRoaXMpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9yZW1v
dGVEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4o
KnRoaXMsIGRhdGEpOworICAgIG1fcmVtb3RlRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8U2Vydmlj
ZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBkYXRhKTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUt
PnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxl
LT5pbml0KCk7CiAjZW5kaWYKQEAgLTE2OCw3ICsxNjgsNyBAQCBSZWY8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25u
ZWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eTo6Y3JlYXRlQmxvYkxvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBV
UkwmIGJsb2JVUkwpCiB7Ci0gICAgYXV0byBsb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNo
TG9hZGVyPihjbGllbnQsIG51bGxwdHIpOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZTxG
ZXRjaExvYWRlcj4oY2xpZW50LCBudWxscHRyKTsKICAgICBsb2FkZXItPnN0YXJ0TG9hZGluZ0Js
b2JVUkwobV9kb2N1bWVudCwgYmxvYlVSTCk7CiAgICAgaWYgKCFsb2FkZXItPmlzU3RhcnRlZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5k
ZXggMWRkMzQxMzc0YzQ0NDVhMzQ5NzMyZDQ0ZmRlZDE1NDc3NDgxYzBiNC4uOTJjYmEwODVkM2Fj
ZjZhMjkzZjA2YjU1ZGY0NWY0ZGZjNzkzZmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FM
aXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUpCiAKICAgICBTUUxpdGVGaWxl
U3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhtX2RhdGFiYXNlRGlyZWN0b3J5
KTsKIAotICAgIG1fZGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigp
OworICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlm
ICghbV9kYXRhYmFzZS0+b3BlbihmdWxsRmlsZW5hbWUpKSB7CiAgICAgICAgIGVycm9yTWVzc2Fn
ZSA9ICJGYWlsZWQgdG8gb3BlbiByZWdpc3RyYXRpb24gZGF0YWJhc2UiOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCmluZGV4IGZlNWNjODU5ZTY1YTZlMzJhNzhiNTI4OTc1YTEzMmU3NGJmMTc4N2UuLjkz
MjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0ZDBlOTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBoYXZlIGJl
ZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGlsZSB0aGUg
aW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCiAgICAgQVNTRVJUKCFtX3JlZ2lzdHJhdGlv
bnMuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAKLSAgICBhdXRvIHJlZ2lzdHJh
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRh
LnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRh
LnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8gcmVnaXN0
cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVn
aXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVn
aXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CiAgICAgcmVnaXN0cmF0aW9uLT5z
ZXRMYXN0VXBkYXRlVGltZShkYXRhLnJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZSk7CiAgICAg
YXV0byByZWdpc3RyYXRpb25QdHIgPSByZWdpc3RyYXRpb24uZ2V0KCk7CiAgICAgYWRkUmVnaXN0
cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgU1dTZXJ2
ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBTdHJp
bmcmJiByZWdpc3RyYXRpb24KIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGly
ZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAo
IW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdp
c3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOworICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3Jl
ID0gbWFrZVVuaXF1ZTxSZWdpc3RyYXRpb25TdG9yZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0
aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsKICAgICBlbHNlCiAgICAgICAgIHJlZ2lzdHJhdGlvblN0
b3JlSW1wb3J0Q29tcGxldGUoKTsKIApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgU1dTZXJ2ZXI6
OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKICAgICAvLyBJZiBp
dCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4KIAogICAgIGF1dG8mIGpvYlF1ZXVl
ID0gKm1fam9iUXVldWVzLmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBbdGhpcywg
JmpvYkRhdGFdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJKb2JR
dWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25L
ZXkoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgam9iUXVldWUuZW5xdWV1ZUpv
Yihqb2JEYXRhKTsKQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwog
CiAgICAgaWYgKGNsaWVudElkZW50aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQo
IWl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyKTsKLSAgICAgICAg
aXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbWVyPihbY2xpZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhp
c10geworICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1l
ciA9IG1ha2VVbmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9t
YWluLCB0aGlzXSB7CiAgICAgICAgICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJz
VG9UZXJtaW5hdGU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09y
VGVybWluYXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtl
ci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcAppbmRleCA4YjY4YjcwZjAxZDI1Mjc4YWY1MzhhYmNlOTE0YjhjN2M2OGFi
ODM3Li5kY2FmNWE4YTcxMGY3OTQ0NjQ3ZGUzY2Q1ZTk4MDYzOTlhOGZkNTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJK
b2JRdWV1ZS5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1
blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAgICAgICAgICAg
ICByZWdpc3RyYXRpb24tPnNldFVwZGF0ZVZpYUNhY2hlKGpvYi5yZWdpc3RyYXRpb25PcHRpb25z
LnVwZGF0ZVZpYUNhY2hlKTsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVw
IC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IEZvdW5kIHJlZ2lzdHJhdGlvbiAl
bGx1IGZvciBqb2IgJXMgYnV0IGl0IG5lZWRzIHVwZGF0aW5nIiwgdGhpcywgcmVnaXN0cmF0aW9u
LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdSZWdpc3Ry
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwg
bV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hl
LCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOworICAgICAgICBhdXRvIG5ld1JlZ2lzdHJh
dGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lz
dHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5z
Y29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CiAgICAgICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlv
bihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlvbikpOwogCiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iOiBObyBleGlz
dGluZyByZWdpc3RyYXRpb24gZm9yIGpvYiAlcywgY29uc3RydWN0aW5nIGEgbmV3IG9uZS4iLCB0
aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNw
cAppbmRleCAyYjdhMmZlM2ZiYjU4ZDRjNGVlMzhmYzA0YjUzNmEzZTRlMGM3N2U3Li4zYmU3NTdl
MDJhZTE5ZDc1OTBlYzA3YjNmYTRjYmU3ZDYzY2U4MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVy
UGFpbnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogICAgICAgICBSZWZQdHI8SlNDU1NQYWludENh
bGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2Fs
bGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKIAotICAgICAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGFp
bnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVu
dHMpKTsKKyAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBtYWtlVW5pcXVlPFBhaW50RGVm
aW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51
bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7
CiAgICAgICAgIHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVm
aW5pdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggOTZjZjE4NTBiMGNhZTNhYWU5NjA3ZGIxMzQxNjcz
NThiNjcxYzFkOS4uNjRmYzc4ZWVlNzg4MGVkOWJlZGNmYzJhNzAxMmNhNmVjM2NlMWMwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
CkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGlj
IFdvcmtsZXRHbG9iYWxTY29wZSB7CiAKICAgICAvLyBBbGwgcGFpbnQgZGVmaW5pdGlvbnMgbXVz
dCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQsIGJlY2F1c2Ugb3RoZXJ3
aXNlIHRoZXkgd2lsbCBwb2ludCB0byBmcmVlZCBtZW1vcnkuCiAgICAgc3RydWN0IFBhaW50RGVm
aW5pdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWludERlZmluaXRpb24+IHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQYWludERlZmluaXRp
b24oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3Rv
ciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRQcm9wZXJ0
aWVzLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0QXJndW1lbnRzKTsKIAogICAgICAgICBjb25zdCBB
dG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29u
c29sZUNsaWVudC5jcHAKaW5kZXggOGU4YTJhNGNhMjNlMmI5M2RhMTM0YWZiNTJkMGU5NTc2YzQw
MjE1OS4uM2YwOTI1NjNiZDUyYWM0YTRiYmVkYTQxNWMyMzdhMmQxZGZkYWRiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApAQCAtNDgs
NyArNDgsNyBAQCB2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRM
ZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZQogewogICAgIFN0cmluZyBtZXNzYWdl
VGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4
dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7
CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNz
YWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCmluZGV4IDRiYjc4OGVhNjNjZDZiYmRjNTMyNTg3ZTA1MTBkNTMyNTI2MDZmZmEuLmNl
ZjgyZjdiNDExZDIxOGM3MzNkNjZmYTlkYmEyZDkzMTI1YWU4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNDksNyArNDksNyBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2xldEdsb2JhbFNjb3BlKTsKIFdvcmtsZXRH
bG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0
U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50
KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAgICwgbV9z
Y3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisg
ICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkK
ICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAs
IG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQpAQCAtNjIs
NyArNjIsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjbwogICAgIEFTU0VSVChkb2N1bWVudC5w
YWdlKCkpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xp
Y3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVmKCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1f
Y29kZS51cmwoKSB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtl
VW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlz
KSk7CiB9CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCkBAIC0x
NDAsNyArMTQwLDcgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXMKIHsKICAgICBpZiAoIW1fZG9j
dW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+
dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKKyAgICBt
X2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxl
dmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDFjZWU5ZWIzNDIxY2Q5OWE1NmM4ODYwYjhlY2RkNDU5NmY4MGQy
ZGUuLjcxMzM5MDBmMTcxZWVmNDE1NjczZDRlOTBkNWNmNzdjZmViYzJiYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAg
LTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0
V2l0aFN1YmNsYXNzKCkKICAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5n
bG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VS
VChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVj
dCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIp
OwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0Q29uc29s
ZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBt
YWtlVW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOwog
ICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNv
bGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYjAyMWNjZTE1
M2MzMTkyOTUwYTJiZjc3ZDgwOWEyODQ3YWIwZjBjMS4uYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYw
MzgxNTI0MjhjNzFhYTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9y
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApAQCAtMzcsNiArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgWE1MRXJyb3Jz
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBY
TUxFcnJvcnMoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggOGU0NDI0ZWYyNDZhMzZhNGRiODEzYzMwNmNiMzIxZmE0ZmVhMjUxMy4uMzY1YjUxNTZj
NDNmOWExMDBiMjg5YTJiN2FiMzQ1NDYxMjczYzQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0Ojpy
ZXNwb25zZVVSTCgpIGNvbnN0CiBYTUxIdHRwUmVxdWVzdFVwbG9hZCYgWE1MSHR0cFJlcXVlc3Q6
OnVwbG9hZCgpCiB7CiAgICAgaWYgKCFtX3VwbG9hZCkKLSAgICAgICAgbV91cGxvYWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CisgICAgICAgIG1fdXBs
b2FkID0gbWFrZVVuaXF1ZTxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oKnRoaXMpOwogICAgIHJldHVy
biAqbV91cGxvYWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1
bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4
IGFkN2UxM2M4YTE5NGFkNTZkNjIzNDIwMDAxN2NiYTc3ZmU4MGI3NDIuLmE5MjQ0MDllZTQ2YzUz
ZTczYjI3YTQ5YTE5ZWZlOTY5NzIxNjczYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rp
b25zLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNl
KFVDaGFyIGMpCiAgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicg
fHwgYyA9PSAnXHQnOwogfQogCi0jZGVmaW5lIERFRklORV9GVU5DVElPTl9DUkVBVE9SKFN1ZmZp
eCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rpb24jI1N1ZmZp
eCgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RnVuIyNTdWZmaXg+KCk7IH0KKyNkZWZpbmUg
REVGSU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1
bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxGdW4j
I1N1ZmZpeD4oKTsgfQogCiBjbGFzcyBJbnRlcnZhbCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoUHJlZGljYXRlLmNwcAppbmRleCAwNDYxNWMzZDVmMDMxMzEwNjkzOGZhYTA1ZmIzOWM5
OWNlMTIzYjVjLi5jMWJiYzU0ZWI4MzAxNjkxMTljODY4MzFhNGYyYTZlN2MwMDQ1NjhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29s
IGV2YWx1YXRlUHJlZGljYXRlKGNvbnN0IEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCiAKICAgICAv
LyBmb29bM10gbWVhbnMgZm9vW3Bvc2l0aW9uKCk9M10KICAgICBpZiAocmVzdWx0LmlzTnVtYmVy
KCkpCi0gICAgICAgIHJldHVybiBFcVRlc3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1bmN0aW9uOjpj
cmVhdGUoInBvc2l0aW9uIl9zKSwgc3RkOjptYWtlX3VuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051
bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKKyAgICAgICAgcmV0dXJuIEVxVGVzdE9w
KEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBtYWtlVW5p
cXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOwog
CiAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCmluZGV4IGVjMmM2YWUwNDU5YTA2OTI1NmE2NjJmNzJj
ODcyNjdmZWExYTQ1YmQuLjYzMDRlOTI4MTFhOTM0ZjdkZTc0YzhjOTRiMmI2OWMwMDRlYTQ5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtMjMx
LDcgKzIzMSw3IEBAIHZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXRzKCkKIAogdm9p
ZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldChjb25zdCBTdHJpbmcmIGhyZWYpCiB7Ci0g
ICAgYXV0byBjaGlsZFJ1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMs
IGhyZWYpOworICAgIGF1dG8gY2hpbGRSdWxlID0gbWFrZVVuaXF1ZTxYU0xJbXBvcnRSdWxlPih0
aGlzLCBocmVmKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZFJ1bGUucmVsZWFzZSgpKTsK
ICAgICBtX2NoaWxkcmVuLmxhc3QoKS0+bG9hZFNoZWV0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGUwMjRlZmI1NmJmNjUy
YjkwYTlhMWQ0ZjgxMzA2NDkxODMwZDhlMGYuLjcwNDg4OTJhNWFhMGVmOWE1NWZiZDI0MDhjZDE3
OTE0ZDAyYTljODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6
YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogdm9pZCBYTUxEb2N1bWVu
dFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hh
ciogbSwgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKQogewogICAgIGlmICghbV94bWxFcnJvcnMpCi0g
ICAgICAgIG1feG1sRXJyb3JzID0gc3RkOjptYWtlX3VuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVu
dCgpKTsKKyAgICAgICAgbV94bWxFcnJvcnMgPSBtYWtlVW5pcXVlPFhNTEVycm9ycz4oKmRvY3Vt
ZW50KCkpOwogICAgIG1feG1sRXJyb3JzLT5oYW5kbGVFcnJvcih0eXBlLCBtLCBwb3NpdGlvbik7
CiAgICAgaWYgKHR5cGUgIT0gWE1MRXJyb3JzOjp3YXJuaW5nKQogICAgICAgICBtX3Nhd0Vycm9y
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBiOTMxMDFiOGFhYzQ4MzlhMzliYjU0YjJiODlkZTg5
OGM3OWI3NWFiLi5iOTliMzA4OTczODU1MDllYmFiMDQ1MjEzOTc1MzliMDcwY2VlNzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogcHVi
bGljOgogICAgIHZvaWQgYXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayhjb25zdCB4bWxDaGFy
KiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIqIHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciog
eG1sVVJJLCBpbnQgbnVtTmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhcioqIG5hbWVzcGFjZXMsIGlu
dCBudW1BdHRyaWJ1dGVzLCBpbnQgbnVtRGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyKiogYXR0cmli
dXRlcykKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0g
bWFrZVVuaXF1ZTxQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjaz4oKTsKIAogICAgICAgICBj
YWxsYmFjay0+eG1sTG9jYWxOYW1lID0geG1sU3RyZHVwKHhtbExvY2FsTmFtZSk7CiAgICAgICAg
IGNhbGxiYWNrLT54bWxQcmVmaXggPSB4bWxTdHJkdXAoeG1sUHJlZml4KTsKQEAgLTEyMiwxMiAr
MTIyLDEyIEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFbmRF
bGVtZW50TlNDYWxsYmFjaygpCiAgICAgewotICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOworICAgICAgICBt
X2NhbGxiYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+
KCkpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyc0NhbGxiYWNrKGNvbnN0IHht
bENoYXIqIHMsIGludCBsZW4pCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjpt
YWtlX3VuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNh
bGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOwogCiAgICAg
ICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1cChzLCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+
bGVuID0gbGVuOwpAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3Mgewog
CiAgICAgdm9pZCBhcHBlbmRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjayhjb25zdCB4bWxD
aGFyKiB0YXJnZXQsIGNvbnN0IHhtbENoYXIqIGRhdGEpCiAgICAgewotICAgICAgICBhdXRvIGNh
bGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2Fs
bGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+dGFyZ2V0
ID0geG1sU3RyZHVwKHRhcmdldCk7CiAgICAgICAgIGNhbGxiYWNrLT5kYXRhID0geG1sU3RyZHVw
KGRhdGEpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAg
ICAgdm9pZCBhcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxl
bikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5p
cXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMg
PSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0x
NTcsNyArMTU3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVu
ZENvbW1lbnRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzKQogICAgIHsKLSAgICAgICAgYXV0byBj
YWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKKyAg
ICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4o
KTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cmR1cChzKTsKIApAQCAtMTY2LDcgKzE2
Niw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRJbnRlcm5h
bFN1YnNldENhbGxiYWNrKGNvbnN0IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVy
bmFsSUQsIGNvbnN0IHhtbENoYXIqIHN5c3RlbUlEKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxs
YmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7
CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcm5hbFN1YnNl
dENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5uYW1lID0geG1sU3RyZHVwKG5hbWUp
OwogICAgICAgICBjYWxsYmFjay0+ZXh0ZXJuYWxJRCA9IHhtbFN0cmR1cChleHRlcm5hbElEKTsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQg
YXBwZW5kRXJyb3JDYWxsYmFjayhYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCB4bWxD
aGFyKiBtZXNzYWdlLCBPcmRpbmFsTnVtYmVyIGxpbmVOdW1iZXIsIE9yZGluYWxOdW1iZXIgY29s
dW1uTnVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtl
VW5pcXVlPFBlbmRpbmdFcnJvckNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5tZXNz
YWdlID0geG1sU3RyZHVwKG1lc3NhZ2UpOwogICAgICAgICBjYWxsYmFjay0+dHlwZSA9IHR5cGU7
CkBAIC0xOTcsNiArMTk3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKIHByaXZhdGU6
CiAgICAgc3RydWN0IFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NhbGxiYWNrKCkgPSBkZWZh
dWx0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxEb2N1bWVudFBhcnNlciogcGFyc2Vy
KSA9IDA7CiAgICAgfTsKQEAgLTU2NCw3ICs1NjUsNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2Vy
OjpzdXBwb3J0c1hNTFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogWE1MRG9jdW1lbnRQ
YXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBm
cmFtZVZpZXcpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAg
LCBtX3ZpZXcoZnJhbWVWaWV3KQotICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91
bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtl
VW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJlbnROb2RlKCZkb2N1bWVu
dCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQ
b3NpdGlvbigpKQogewpAQCAtNTcyLDcgKzU3Myw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxE
b2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQog
CiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYg
ZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFy
c2VyQ29udGVudFBvbGljeSkKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVu
dC5kb2N1bWVudCgpLCBwYXJzZXJDb250ZW50UG9saWN5KQotICAgICwgbV9wZW5kaW5nQ2FsbGJh
Y2tzKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGlu
Z0NhbGxiYWNrcyhtYWtlVW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJl
bnROb2RlKCZmcmFnbWVudCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRp
b246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwgbV9wYXJzaW5nRnJhZ21lbnQodHJ1ZSkK
QEAgLTEzMjgsNyArMTMyOSw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAg
ICAgICAgeG1sVHJlZVZpZXdlci50cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKTsKICAgICB9
IGVsc2UgaWYgKG1fc2F3WFNMVHJhbnNmb3JtKSB7CiAgICAgICAgIHhtbERvY1B0ciBkb2MgPSB4
bWxEb2NQdHJGb3JTdHJpbmcoZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgbV9v
cmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybS50b1N0cmluZygpLCBkb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKSk7Ci0gICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6Om1h
a2VfdW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNl
dFRyYW5zZm9ybVNvdXJjZShtYWtlVW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CiAKICAg
ICAgICAgZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhmYWxzZSk7IC8vIE1ha2UgdGhlIGRvY3VtZW50
IHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSBYU0wgc3R5bGVzaGVldHMuCiAgICAg
ICAgIGRvY3VtZW50KCktPmFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNOb3dJZlNjaGVkdWxlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1Nv
dXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggMDViYzk1M2Y3ZjBkZGM3
ODdiMWU2MzA0ODc2OTZjMjA4NTljYWUwZi4uZDY5ZTE0OTkyZDU4Njc1MWNhMDQzNDI2MzYyYTZm
NDFjMjY5OWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02NTcs
NyArNjU3LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKFZlY3Rv
cjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlc3Npb25Ib3N0
PihjYXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0KCkpOworICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBt
YWtlVW5pcXVlPFNlc3Npb25Ib3N0PihjYXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0KCkpOwogICAg
IGF1dG8qIHNlc3Npb25Ib3N0UHRyID0gc2Vzc2lvbkhvc3QuZ2V0KCk7CiAgICAgc2Vzc2lvbkhv
c3RQdHItPmNvbm5lY3RUb0Jyb3dzZXIoW3RoaXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3Zl
KGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxT
dHJpbmc+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcCBiL1NvdXJjZS9XZWJE
cml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCmluZGV4IDdhMjBiODk0MWFmZjcyYTg1MmI3
NmY1YzU1MTA2MjY1NDc3NGExY2MuLjE3N2FhNTRmMjIyOTdhYzMxNjE0ZDM1M2JlOWYzYTc5ZDFh
YWIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0x
MTMsNiArMTEzLDcgQEAgYm9vbCBTZXNzaW9uSG9zdDo6aXNDb25uZWN0ZWQoKSBjb25zdAogfQog
CiBzdHJ1Y3QgQ29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgIENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEoU2Vzc2lvbkhv
c3QqIHNlc3Npb25Ib3N0LCBHVW5pcXVlUHRyPGNoYXI+JiYgZGJ1c0FkZHJlc3MsIEdDYW5jZWxs
YWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3Ip
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IHNlc3Npb25Ib3N0KHNlc3Npb25Ib3N0
KQogICAgICAgICAsIGRidXNBZGRyZXNzKFdURk1vdmUoZGJ1c0FkZHJlc3MpKQpAQCAtMTczLDcg
KzE3NCw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OmxhdW5jaEJyb3dzZXIoRnVuY3Rpb248dm9pZCAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxlCiAgICAgfSwgdGhpcyk7CiAKICAgICBH
VW5pcXVlUHRyPGNoYXI+IGRidXNBZGRyZXNzKGdfc3RyZHVwX3ByaW50ZigidGNwOmhvc3Q9JXMs
cG9ydD0ldSIsICIxMjcuMC4wLjEiLCBwb3J0KSk7Ci0gICAgY29ubmVjdFRvQnJvd3NlcihzdGQ6
Om1ha2VfdW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1
c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkpOworICAgIGNvbm5lY3RUb0Jyb3dzZXIobWFrZVVuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5
bmNEYXRhPih0aGlzLCBXVEZNb3ZlKGRidXNBZGRyZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6Y29u
bmVjdFRvQnJvd3NlcihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4m
JiBkYXRhKQpAQCAtMzcxLDYgKzM3Miw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElECiB9CiAK
IHN0cnVjdCBNZXNzYWdlQ29udGV4dCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIGxvbmcgbWVzc2FnZUlEOwogICAgIFNlc3Npb25Ib3N0KiBob3N0OwogfTsKQEAg
LTM4MSw3ICszODMsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChs
b25nIG1lc3NhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVChtX2Nvbm5l
Y3Rpb25JRCk7CiAgICAgQVNTRVJUKG1fdGFyZ2V0LmlkKTsKIAotICAgIGF1dG8gbWVzc2FnZUNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4dCB7
IG1lc3NhZ2VJRCwgdGhpcyB9KTsKKyAgICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0gbWFrZVVuaXF1
ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2FnZUNvbnRleHQgeyBtZXNzYWdlSUQsIHRoaXMgfSk7CiAg
ICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbChtX2RidXNDb25uZWN0aW9uLmdldCgpLCBudWxscHRy
LAogICAgICAgICBJTlNQRUNUT1JfREJVU19PQkpFQ1RfUEFUSCwKICAgICAgICAgSU5TUEVDVE9S
X0RCVVNfSU5URVJGQUNFLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaAppbmRleCBiNjJmMTJlMTgyZjIxZWI4ZDUx
MDc0Y2IyNTRkN2IyMTJlMGNlZDE5Li5iNDQ1ZTdhNjVhNDhkMDc0OGJkN2U5MjA1YTM0NDBmN2Yx
YTk1NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tB
dHRyaWJ1dGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Fk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogCiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggMmUyOTZiMjlmNDNhNGZj
ODhlNzAwOTMyNGE1ZTIzYjBiZTljZDUxYy4uOTMwM2QyYWRjMTVlZjZmYjMxMGI2ZmIxNmQwNzBj
Yzg1M2ZkYzNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzaygp
CiAgICAgaWYgKHJlc291cmNlTG9nUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJj
ZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBt
X2ZpbGVNb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4ocmVzb3VyY2VMb2dQYXRoLCBt
X3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBtX2ZpbGVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxl
TW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxl
TW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtl
VW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBb
dGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAodHlwZSA9PSBGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGU6OlJlbW92YWwpIHsKICAgICAgICAgICAgIC8vIERpcmVjdG9yeSB3YXMg
cmVtb3ZlZCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UuaAppbmRleCA0YzAzM2UzNTNkNGYzMDhmN2Y3NjAwMTJjYTk2Mjk2MzAz
YzEwNzMwLi43MWYzNGJmYTNkNmMyYjUyNzYxNjg5NDRlZTMzNGM3M2RhZjUwMzI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZTsKIAogLy8gQ2FuIG9ubHkgYmUgY29uc3RydWN0ZWQgLyBkZXN0cm95ZWQgLyB1c2VkIGZy
b20gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpYyBxdWV1ZS4K
IGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlJiwgV29ya1F1ZXVlJiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAg
ICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDcwYWNiZGNlOTZmNjVjZjgzYTk0
NjM3ZDNmYjhkMWU5YjI2NTUzZGQuLmEwY2VmNmYzMWI0OTY2MmU1ZjkyMDNjY2Y4YjE5MDg3ZTMw
ZTg0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTc3
LDYgKzc3LDcgQEAgZW51bSBjbGFzcyBPcGVyYXRpbmdEYXRlc1dpbmRvdyA6IGJvb2wgeyBMb25n
LCBTaG9ydCB9OwogCiAvLyBUaGlzIGlzIGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0
cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3Mg
cXVldWUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgdXNpbmcgUmVnaXN0cmFibGVE
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggOGMyMTE1N2NjN2Y2OTE3YmE5NzA4
OWUzNmYxNjlkODZjZjhiOGFiMC4uYTFjMDdmMzZhNmY4ZmZmY2Q3NjAzOGRkNmNlYWNiY2E2NDdl
YjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKQEAgLTE1OSwxNSArMTU5LDE1IEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBuCiAgICAgCiAg
ICAgcG9zdFRhc2soW3RoaXMsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0XSB7CiAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmlzSVRQRGF0YWJhc2VFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIG1fc3RhdGlz
dGljc1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0
LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlz
dGljc1N0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKIAotICAgICAgICAgICAgYXV0byBtZW1vcnlT
dG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
PigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAg
ICAgICAgICAgYXV0byBwZXJzaXN0ZW50U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBtX3N0YXRpc3Rp
Y3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBh
dXRvIG1lbW9yeVN0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7
CisgICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGlj
c1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKIAogICAgICAgICAgICAg
ZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCptX3N0YXRpc3Rp
Y3NTdG9yZS5nZXQoKSkucG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUoKm1lbW9yeVN0b3JlKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRp
c3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAgICAgICAgICBtX3BlcnNp
c3RlbnRTdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U+KGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZT4oKm1fc3RhdGlzdGljc1N0b3JlKSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtl
VW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlz
dGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKKyAgICAgICAgICAgIG1fcGVyc2lz
dGVudFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9z
dGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRSgxOTMyOTcpOiBUaGlz
IHNob3VsZCBiZSByZXZpc2VkIGFmdGVyIHRoZSBVSVByb2Nlc3MgdmVyc2lvbiBnb2VzIGF3YXku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuaAppbmRleCA2MDVhZWYzZTZlZTk1MGYzOTQ4M2ZjZDhjYzRkOGU2NThlMDJj
ZjBjLi5iYmUzOTg0NzUyYmUxNDYwNTBkNTAzNTcxMzcxNTUwZmIyY2I2M2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3Jr
UHJvY2VzczsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29va2llTWFuYWdl
cik7CiBwdWJsaWM6CiAgICAgV2ViQ29va2llTWFuYWdlcihOZXR3b3JrUHJvY2VzcyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBkYzc5
ZWViY2YxOGRiZjY3YjQ2NGMzNTg2MTBmYjNjZTdjZmU5MGNjLi5mOTBmMGZjYjQxOTAyNGI4YTk1
ZjU3NzBjOWI3OTk3YjU3ODRiMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vz
czsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcihO
ZXR3b3JrUHJvY2VzcyYpOwpAQCAtNzgsNiArNzksNyBAQCBjbGFzcyBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBD
OgogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgc3RydWN0IFdlYlNvdXBSZXF1ZXN0QXN5bmNE
YXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBX
ZWJTb3VwUmVxdWVzdEFzeW5jRGF0YShHUmVmUHRyPEdUYXNrPiYmLCBXZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWMqKTsKICAgICAgICAgfldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
clNvdXAuY3BwCmluZGV4IDJjNGQyZmY5NDgwOWM0MmE2MTE2NzNiNWZiNWNhZGJmYTU5MTYwNGUu
LmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0ZjM5ZmI1ZWZjZDc1ZTcxNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3Vw
LmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbFJlcXVlc3RDbGllbnQg
ZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xpZW50CiAgICAgICAgIGlm
ICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9t
UHJvdG9jb2woc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldl
YlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CisgICAgICAg
IGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9t
UHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CiAgICAgICAgIGN1c3Rv
bVByb3RvY29sTWFuYWdlci0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHdlYmtpdFNv
dXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVlc3QocmVxdWVzdCkpOwogICAgIH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAppbmRleCBmNGQ3NWQ5ZGQzMTgyMDA0NDlhMmFiMmU1OGU4ODYzMTIwYzc3NzQ0
Li41MDdmNGY2ZmZjM2Q0MDY5YzEzNzgyNjUyNzVjNjYwNjU0YjRjODM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93
bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2EKICAgICAg
ICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihyZXF1ZXN0LnVybCgpKTsK
ICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6VXNlOwogCi0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9h
ZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxv
YWRJRCwgKm5ldHdvcmtTZXNzaW9uLCAmY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KS0+YmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKKyAgICBtX3BlbmRpbmdEb3dubG9h
ZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCiB2b2lkIERv
d25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3du
bG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBAIC05MCw3ICs5
MCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29u
dmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFT
U0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX3Bl
bmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rv
d25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBX
VEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25sb2Fk
SUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3du
bG9hZElELCBtYWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQog
CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0
aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1l
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogI2lm
ICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKLSAgICBhdXRv
IGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQs
IG51bGxwdHIsIHNlc3Npb25JRCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93
bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwogCiAgICAgZG93
bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFwLmNwcAppbmRleCBhODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3YmJjNDMzZTY1
Li5hZTNjYTdlMGU0ZWU3ZWM4NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6OkFkZFJlc3Vs
dCBEb3dubG9hZE1hcDo6YWRkKERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBhdXRvIHJlc3Vs
dCA9IG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAg
aWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9h
ZEFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkQXNz
ZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldlYktpdCBk
b3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKICAgICAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQgZG93bmxvYWRz
JyBhc3NlcnRpb24gaW4gTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
Y3BwCmluZGV4IGEyNzgyOGQ3YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5NmQuLjU5MTIz
ZjJjNDhmMWMxZTQxNzliYjFkNWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6OkNvbm5lY3Rp
b24qIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vz
c2lvbiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZE5hbWUpCi0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5l
dHdvcmtTZXNzaW9uKSkKKyAgICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3JrTG9h
ZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Np
b24pKQogICAgICwgbV9wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbikKIHsKICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gcGFyYW1l
dGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1h
eUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCAxZjEwMDRlMWI1YmNkMzlkOGIxMjJkZjhjNmRhNDhkMTM3YzRiZTYxLi4zMDFkYmUzNzgzMDE2
NzkyYWMxMzVkMzBlNjk4MTIwYmEwMjBiMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtOTAzLDcgKzkwMyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBzZXJ2ZXIgPSBt
X25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBhdXRv
IGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9u
ZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7Cisg
ICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1f
bmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOwog
ICAgIAogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25u
ZWN0aW9uIC0gJXMiLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4IDQ0NDIwZmY1
ZmYyMjk5YmUzNzU0Y2UzN2NkZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIxYWYwYmFkZTBj
MDI3NWJlMmYwOTVhMTY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCkBAIC02OSw3
ICs2OSw3IEBAIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0RGF0YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAgICBhdXRvJiBi
YWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVudGlmaWVyLCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQ+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRvJiYgY29udGVu
dFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2Y2ExZjA5NWUx
MDNjNTQyYWQ0ZTQzMDAwYmNiNzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIyMTA0ZGYwOTQ2
OTJjYzNmNjU1MjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNl
IjsKIAogTmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3JrU2Vz
c2lvbiYgc2Vzc2lvbiwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3JrRGF0
YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDb250
ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykKICAgICA6
IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJlYW0oc3RkOjpt
YWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3RyZWFtKG1ha2VV
bmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGZp
bGVSZWZlcmVuY2VzKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5ldHdvcmtQcm9j
ZXNzKCkpCiB7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpk
b3dubG9hZCgpCiAgICAgfQogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9uZXR3b3Jr
UHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwg
KnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAg
IGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1f
cGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0
ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwog
ICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdE
b3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0
ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
LmNwcAppbmRleCBmNjU0Mjk1OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMxMTZjLi4xOTMy
NmYyZjQ3ZGM5ZjRmNjIyOGE0YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
LmNwcApAQCAtNjcsNyArNjcsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U+KCk7CisgICAgICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlPigpOwogICAgICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9kYXRhYmFzZS0+
b3BlbihwYXRoLCBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJlYWRPbmx5KTsK
ICAgICAgICAgaWYgKCFpc0RhdGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAt
ODAsNyArODAsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXIoKQogICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1
ZSwgdGhlIHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVy
ZW50IHRocmVhZHMuCiAgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVja3Mo
KTsKIAotICAgICAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsKKyAg
ICAgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4o
Km1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAgIGludCBpc1N0
YXRlbWVudFByZXBhcmVkID0gKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FMSVRFX09LKTsK
ICAgICAgICAgQVNTRVJUKGlzU3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBpZiAoIWlzU3Rh
dGVtZW50UHJlcGFyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKaW5kZXggZGNkNDZhNjAxYmU2MzA5ODZm
YzJhZTBjMWM5NjU1OGM5NTkyMjA4YS4uNTFkMjAzMTRlYWE0OWU5NmE0MWE1N2NlOGQ0MjIyNmJi
ZmIwNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBTZXNz
aW9uSUQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CiAgICAgfk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4
IDkxMDdmZWMxZTM0ZGI0NDg4MTYyMjg2ODYyMmM4ZmJlYjViMzg4M2MuLmVlODBhYzZlYTFhNzc5
NzczYTA3MTBlMTc4ODcwNjM3NjdjNTEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9u
c2VDb21wbGUKICAgICB9CiAKICAgICBpZiAobV9sb2FkVGhyb3R0bGVMYXRlbmN5ID4gMF9zKSB7
Ci0gICAgICAgIG1fdGhyb3R0bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocm90dGxlPigqdGhpcywg
bV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBtX3Rocm90dGxlID0gbWFrZVVuaXF1ZTxUaHJvdHRsZT4o
KnRoaXMsIG1fbG9hZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4
IDQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlhMTYwODE3ZjI0Nzk2N2IwMTYuLmUxYWUwMGJkOWQ5NTQ3
Nzc4MTc0Mzk4NWRmMDczYThiMWNkMjUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogICAgICAgICBtX2ZyYW1lSUQsCiAgICAgICAgIG1fc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3Jr
UHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFu
ZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShh
dXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBtYWtl
VW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQo
KSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1v
dmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3Ip
IG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja0NPUlNSZXF1
ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxp
Z2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwgZXJy
b3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwo
KSkgewpAQCAtNDQ2LDcgKzQ0Niw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xv
YWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3koKQogewogICAgIGlmICghbV9jb250ZW50
U2VjdXJpdHlQb2xpY3kgJiYgbV9jc3BSZXNwb25zZUhlYWRlcnMpIHsKICAgICAgICAgLy8gRklY
TUU6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGluc3RlYWQgb2YgaXRz
IG9yaWdpbi4KLSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3Ry
aW5nKCkgfSk7CisgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygp
IH0pOwogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2ZUhlYWRlcnMo
Km1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0KICAgICByZXR1cm4g
bV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGU4MjBiMjljMjBmNTE5ZmI1ZTNkZDg4
YThiZWY2NDY1NDA2ODZiMGIuLjRkYzgyNTY0NmIyYmY3N2ZiY2E5MTdjOTVjMjdiNGU0NmY1NWI1
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC01MDMsOSArNTAzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZV
UkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNl
c3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92
ZShjb29raWVTdG9yYWdlKSk7CisgICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3Rv
cmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIG1fZGVmYXVsdE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBtX2Rl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAjZW5k
aWYKIH0KIApAQCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNl
c3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAgICAg
ICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlD
b29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7
CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Np
b24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92
ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENV
UkwpIHx8IFVTRShTT1VQKQotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNl
c3Npb25JRCk7CiAjZW5kaWYKIH0KIApAQCAtMjQ1Myw3ICsyNDUzLDcgQEAgU1dTZXJ2ZXImIE5l
dHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6OlNl
c3Npb25JRCBjb21lIGZyb20/CiAgICAgICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSB8fCAhcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICAKLSAgICAgICAgYXV0byB2YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4o
KSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IG1ha2VV
bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92
ZShwYXRoKSwgc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKICAgICAgICAgICAgIHZhbHVlLT5kaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgICAgIHJldHVybiB2
YWx1ZTsKQEAgLTI1NjUsNiArMjU2NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPCiB9CiAK
IGNsYXNzIFF1b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VRdW90YVVzZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFF1b3RhVXNlckluaXRpYWxpemVyKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFn
ZXIpCiAgICAgICAgIDogbV9tYW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQpAQCAtMjU5OSw3
ICsyNjAwLDcgQEAgY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6U3RvcmFnZVF1b3RhVXNlciB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVRdW90YVVzZXJzKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNz
aW9uSUQsIG9yaWdpbiwgdXNlciA9IHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6
ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVz
ZXIgPSBtYWtlVW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
dGhpcy0+aWRiU2VydmVyKHNlc3Npb25JRCkuaW5pdGlhbGl6ZVF1b3RhVXNlcihvcmlnaW4pOwpA
QCAtMjYxMyw3ICsyNjE0LDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6
OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAgcmV0
dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXJzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgcmV0dXJuICpzdG9yYWdlUXVvdGFNYW5hZ2Vycy5tYW5hZ2Vyc1Blck9yaWdpbigpLmVuc3Vy
ZShvcmlnaW4sIFt0aGlzLCAmc3RvcmFnZVF1b3RhTWFuYWdlcnMsIHNlc3Npb25JRCwgJm9yaWdp
bl0gewotICAgICAgICBhdXRvIG1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90
YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBbdGhp
cywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3Bh
Y2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAgYXV0
byBtYW5hZ2VyID0gbWFrZVVuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVvdGFN
YW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3JpZ2luXSh1
aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3Jl
YXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAgICB0aGlzLT5yZXF1ZXN0U3RvcmFnZVNw
YWNlKHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwgY3VycmVudFNwYWNlLCBzcGFjZUluY3JlYXNl
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIH0pOwogICAgICAgICBpbml0aWFsaXplUXVv
dGFVc2VycygqbWFuYWdlciwgc2Vzc2lvbklELCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDFiZWI3YjY1ZGI2MzBjM2IzMjhi
YjE1Y2ZjM2IzMTE2YjRiOTk0ZDYuLmE5NWEyZGU3OWVhZGRkNDgwOTQzNDRiZjdjYTI2NmNkYjNm
NzZkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBBdXhp
bGlhcnlQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAg
ICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVl
PFQ+KCp0aGlzKSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1l
KCksIG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNDc4MmVmMTVmM2RlZWU1YWY0ZWFlZjA1Y2RmNjAzNmFlN2U2ZDJm
Yi4uOGMzM2ZiODYwYWQ3YTc4NzM2ZTRiOGZiYWRmMjBjNzc1NTMyOWU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtMTExLDcgKzExMSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291
cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAKICAgICBpZiAo
c3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNl
QWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUpIHsKICAgICAgICAgTmV0d29y
a0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBpc01haW5GcmFtZUxvYWQo
KSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok1haW5GcmFtZSA6IE5ldHdvcmtMb2Fk
Q2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQ
cm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1l
dGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNv
dXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdp
bmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVF
bmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExv
YWRUeXBlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdv
cmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlvbnMg
eyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRlck1hcCB7
IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVy
cy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBt
X3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJy
ZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAgIGlmICht
X3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9h
ZENoZWNrZXItPnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTExOSw3ICsxMTksNyBAQCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmIHBhcgogI2VuZGlmCiAgICAgfQogICAgIGlmIChzeW5jaHJvbm91c1Jl
cGx5KQotICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5
bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOworICAgICAgICBt
X3N5bmNocm9ub3VzTG9hZERhdGEgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdU
Rk1vdmUoc3luY2hyb25vdXNSZXBseSkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoKQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZpcnN0TG9hCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gbmV0d29y
a1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9yaWdpbmFsUmVxdWVzdCgpLnVy
bCgpKTsKIAogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7Ci0gICAg
bV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0
d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29y
a1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigq
dGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0gJXtwdWJsaWN9cykiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51
dGY4KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAppbmRleCA1MDZlN2ZmMDhmYmM5YTc2NGVhODMwMzA5NGI2ZDMwNjc0YTNmM2E0
Li4zMzViMTliZmIwOTA1MGE3ZmJhZDMzMzg0N2IxYzRmNTJjY2M2MDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC02NSw2ICs2NSw3IEBA
IGNsYXNzIENhY2hlOwogfQogCiBjbGFzcyBOZXR3b3JrU2Vzc2lvbiA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwog
ICAgIHZpcnR1YWwgfk5ldHdvcmtTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCmluZGV4IDA0ZTNkMDI1MjIw
ZGU0YzQzYzczNjJkYTE0MWRmMzJiYTIwMzBmYWYuLjU5MTg4NTc1N2E4NDc1MWM4MzE4ZjdiZTVk
Mjc1YTdmMTFjNWE0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5l
dHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVy
KQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU29ja2V0Q2hh
bm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8TmV0d29ya1NvY2tldENoYW5uZWw+KGNvbm5lY3Rpb24sIGNv
bm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCByZXF1
ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXN1bHQtPm1fc29ja2V0KSB7
CiAgICAgICAgIHJlc3VsdC0+ZGlkQ2xvc2UoMCwgIkNhbm5vdCBjcmVhdGUgYSB3ZWIgc29ja2V0
IHRhc2siX3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAppbmRleCA2NzJiMzc4MWE0
ZDRhMzRiOWMxZTFlMjQxNWJkNDkxMGU3NzllZDcxLi45ZGY5YWFjZGNiMzMyZTA0MWRiNjliZDA2
ODEwMjI5Y2Y4YmI0ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzOwogY2xhc3MgTmV0d29ya1Nlc3Npb247CiAKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFu
bmVsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBjcmVhdGUoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3QgaWRlbnRpZmllcik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAK
aW5kZXggZDkwY2NjYTk4MGE4ZWZmYzJkNGYzOGY1ZTNmNmJjMGFhMmMyZTU0Ni4uMmM2NDI3ZTY0
ODIyY2VmNWQxYTgxMjAyNWVmZDZjODU0NTQxY2U4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUHJlY29u
bmVjdFRhc2s6OlByZWNvbm5lY3RUYXNrKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
TmV0d29ya0xvYWRQYXJhbWUKICAgICB9CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy5zaG91bGRQ
cmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKTsKLSAgICBtX25ldHdvcmtMb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUo
cGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VV
bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAq
bmV0d29ya1Nlc3Npb24pOwogCiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KDYwMDAw
X3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2Nr
ZXRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApp
bmRleCAzYTU5ZmZhNmExYTA4ZDYzZGU1YmZmNTllM2Y2OTQ2ZjBlNDA4ZWI0Li4wNDc5OTIwODk2
ZGEyNTdmYzU4NjQ1MTYwYzAwMDlkMTY0Y2U1ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYlNvY2tldFRhc2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgdWludDY0X3QgVGFza0lkZW50aWZpZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IGJmNTE1NzhmYjE0N2RkZGM4N2U2NmQ5
MGE1ZWRkMDJhNGNkNzI2OTMuLmNjODc4NGQ0MjgzYTYyNWZjMGUxZDllZmFhNTI3MDUyM2FjNzEx
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBA
IHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRhdGUoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVX
cml0aW5nVG9Mb2NhbFN0b3JhZ2UpCi0gICAgICAgIG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9u
V2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZGRlblRlcm1p
bmF0aW9uRGlzYWJsZXI+KCk7CisgICAgICAgIG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hp
bGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFN1ZGRlblRlcm1pbmF0aW9uRGlz
YWJsZXI+KCk7CiAKICAgICBtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUgPSB0cnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAKaW5kZXggM2U5ZDE3ZDYwMmQzNDE3NzAzM2M5MzM4YjRiYmU2ZGEwYmFiYThhNC4uYjA4M2Q1
ZDMyYTUxZTYxZGE0Mzc2ZGY5NDQ2ZWYxMTE0ZWE2YmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtODQsMTcgKzg0
LDE3IEBAIENhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFJlZjxT
dG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKENh
Y2hlT3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpIHsKLSAgICAgICAgbV9sb3dQb3dl
ck1vZGVOb3RpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TG93UG93ZXJNb2RlTm90
aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeworICAgICAgICBtX2xv
d1Bvd2VyTW9kZU5vdGlmaWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3Rp
Zmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7CiAgICAgICAgICAgICBB
U1NFUlQoV1RGOjpSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoaXNMb3dQb3dl
ck1vZGVFbmFibGVkKQogICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9
IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1f
c3BlY3VsYXRpdmVMb2FkTWFuYWdlcik7Ci0gICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhp
cywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1h
bmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3Jh
Z2UuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgaWYgKCFtX2xv
d1Bvd2VyTW9kZU5vdGlmaWVyLT5pc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSkKLSAgICAgICAgICAg
IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAgICBtX3NwZWN1
bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0
aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgIH0KICNlbmRpZgogCkBAIC0zNzUsMTIgKzM3NSwx
MiBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3Zl
KHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2Up
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCBy
ZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJl
cXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1h
a2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1By
b2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25z
ZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3Bv
bnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjp1cGRhdGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcQogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBleGlzdGluZ0VudHJ5LnJlc3BvbnNlKCk7CiAg
ICAgV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24ocmVzcG9u
c2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKLSAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5n
RW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCBy
ZXNwb25zZSkpOworICAgIGF1dG8gdXBkYXRlRW50cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihleGlz
dGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRyeS5idWZmZXIoKSwgV2ViQ29y
ZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKSk7CiAgICAgYXV0byB1
cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAKICAg
ICBtX3N0b3JhZ2UtPnN0b3JlKHVwZGF0ZVJlY29yZCwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5k
ZXggN2FlMWMyZmU3ZGNlNjA3YjlmOGE1M2Q5OWExYmQ3OTg1Mzk5YmNmMS4uMWY0MTQ0YThmYWU4
N2JmNWZjNWM4M2VkOTAyYjZmZjA4YTA2NGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgp
IGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNv
cmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7Ci0gICAgYXV0byBlbnRy
eSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRy
eSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VF
bnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3Jl
c3BvbnNlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCA5NGI2MDY4
YTBkZmVkNzQyZmFmZmRlNTc2ODg3MDVhZTdhNDYyMDFiLi5iYjk3YzdhM2YyNzYxNzZkMDlmZjQ4
MzViMmYzYjk3ZWYyZTU4ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hl
JiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgcGFyYW1ldGVy
cy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBDb250ZW50U25pZmZpbmdQb2xpY3k6OkRvTm90U25p
ZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
PSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmY7CiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0
d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKSk7CiB9CiAKIFNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCAxY2Q2YjQ5
MmY4MWE1YTgxZDI0Y2E3OTEwOGRhNmIxOWUwYzAwM2YxLi41N2U4ZTc1OTliMWNjYTY1YjI2ZTA2
ZWMzODcyZWUyZGQ5NDlkZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ0ZyYW1l
TAogICAgIHZvaWQgcmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBLZXkmIHN1YnJlc291cmNlS2V5KQogICAgIHsKICAgICAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VL
ZXkpKTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVuZChtYWtlVW5pcXVlPFN1YnJl
c291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VLZXkpKTsKICAgICAgICAgbV9sb2FkSHlz
dGVyZXNpc0FjdGl2aXR5LmltcHVsc2UoKTsKICAgICB9CiAKQEAgLTM1NSw3ICszNTUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEtleSYgc3RvcmFnZUtl
eSwgUmV0cmlldmVDb21wbGV0aW9uSAogICAgIEFTU0VSVChtX3BlbmRpbmdQcmVsb2Fkcy5jb250
YWlucyhzdG9yYWdlS2V5KSk7CiAgICAgLy8gRklYTUU6IFRoaXMgYnJlYWtzIGluY3JlbWVudGFs
IGxvYWRpbmcgd2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5vdCBzdWNjZXNzZnVsLgogICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmlldmVSZXF1ZXN0cy5lbnN1cmUoc3RvcmFnZUtl
eSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmV0cmlldmVD
b21wbGV0aW9uSGFuZGxlcj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKICAgICB9KTsKICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5hcHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpAQCAt
NDA0LDcgKzQwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVk
RW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgY29uCiAgICAgQVNTRVJUKGVudHJ5
KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAgYXV0byBrZXkg
PSBlbnRyeS0+a2V5KCk7Ci0gICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFr
ZV91bmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBXVEZNb3ZlKHJldmFsaWRh
dGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7CisgICAgbV9wcmVsb2FkZWRFbnRy
aWVzLmFkZChrZXksIG1ha2VVbmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBX
VEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAg
ICAgIGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRlZEVudHJpZXMudGFrZShrZXkpOwog
ICAgICAgICBBU1NFUlQocHJlbG9hZGVkRW50cnkpOwogICAgICAgICBpZiAocHJlbG9hZGVkRW50
cnktPndhc1JldmFsaWRhdGVkKCkpCkBAIC00NDksNyArNDQ5LDcgQEAgYm9vbCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0IEtleSYga2V5LCBFbnRy
eSogZW50cnkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBjb21wbGV0
aW9uSGFuZGxlciA6ICpjb21wbGV0aW9uSGFuZGxlcnMpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVudHJ5ID8gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6IG51bGxwdHIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IG1ha2VVbmlxdWU8RW50cnk+KCplbnRy
eSkgOiBudWxscHRyKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDY4LDcgKzQ2OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0
IFN1YnJlc291cmNlSW5mbyYgc3VicmVzCiAKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGlu
ZyAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIHJl
dmFsaWRhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZy
YW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCBy
ZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFs
aWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFsaWRhdG9yID0gbWFrZVVuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUo
ZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXZh
bGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAg
ICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCByZXZhbGlkYXRlZEVudHJ5LT5rZXko
KSA9PSBrZXkpOwogCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGYK
ICAgICAgICAgICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJlc291cmNlSW5mbywgZnJhbWVJRCk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
UHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgTm90IHByZWxvYWRpbmcgJyVzJyBiZWNhdXNl
IGl0IGlzIG1hcmtlZCBhcyB0cmFuc2llbnQiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFr
ZV91bmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwgZnJhbWVJRF0geworICAgICAgICAg
ICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1ha2VVbmlxdWU8RXhwaXJpbmdFbnRy
eT4oW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZl
TG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKG1fY2FjaGUubmV0d29ya1Byb2Nlc3MoKSwgZnJhbWVJ
RCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVJpZ2h0bHlOb3RXYXJtZWRVcEtleSgpKTsK
ICAgICAgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMucmVtb3ZlKGtleSk7CiAgICAg
ICAgICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiYmZjNjQ5ODkwZjk1Y2M3ZTA0
Y2U4MmE0ZmUzMjk0NGRjMWFiMWYwLi44MDRjNDI5OGNjM2UzYzI4MTRmZGJjMmJiYjZjYmVlNTc1
ODRhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTI5MCw4ICsyOTAsOCBAQCB2b2lkIFN0
b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3
b3JrUHJvY2Vzcykgc3luY2hyb25pemluZyBjYWNoZSIpOwogCiAgICAgYmFja2dyb3VuZElPUXVl
dWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bnRlbnRzRmlsdGVyPigpOwotICAgICAgICBhdXRvIGJsb2JGaWx0ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRvIHJlY29yZEZpbHRlciA9IG1ha2VV
bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1dG8gYmxvYkZpbHRlciA9IG1ha2VV
bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CiAKICAgICAgICAgLy8gTW9zdCBvZiB0aGUgZGlzayBz
cGFjZSB1c2FnZSBpcyBpbiBibG9icyBpZiB3ZSBhcmUgdXNpbmcgdGhlbS4gQXBwcm94aW1hdGUg
cmVjb3JkcyBmaWxlIHNpemVzIHRvIGF2b2lkIGV4cGVuc2l2ZSBzdGF0KCkgY2FsbHMuCiAgICAg
ICAgIHNpemVfdCByZWNvcmRzU2l6ZSA9IDA7CkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBTdG9y
YWdlOjpyZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mIHJlYWRPcGVyYXRpb24sIGNvbnN0IERhdGEm
IHJlY29yZERhdGEpCiAgICAgfQogCiAgICAgcmVhZE9wZXJhdGlvbi5leHBlY3RlZEJvZHlIYXNo
ID0gbWV0YURhdGEuYm9keUhhc2g7Ci0gICAgcmVhZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3JkIHsKKyAgICBy
ZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IG1ha2VVbmlxdWU8U3RvcmFnZTo6UmVjb3JkPihT
dG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0YS5rZXksCiAgICAgICAgIG1ldGFEYXRh
LnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKQEAgLTc1OCw3ICs3NTgsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZyb21NZW1vcnkoY29uc3QgVCYgb3BlcmF0aW9u
cywgY29uc3QgS2V5JiBrZXksCiAgICAgICAgIGlmIChvcGVyYXRpb24tPnJlY29yZC5rZXkgPT0g
a2V5KSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJv
Y2VzcykgZm91bmQgd3JpdGUgb3BlcmF0aW9uIGluIHByb2dyZXNzIik7CiAgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlY29yZCA9IG9wZXJhdGlvbi0+cmVjb3JkLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om1ha2VfdW5pcXVlPFN0b3Jh
Z2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTg2Miw3ICs4
NjIsNyBAQCB2b2lkIFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IEtleSYga2V5LCB1bnNpZ25lZCBw
cmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZAogICAgIGlmIChyZXRyaWV2ZUZyb21NZW1v
cnkobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMsIGtleSwgY29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFJlYWRPcGVyYXRpb24+KCp0aGlz
LCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIHJlYWRPcGVyYXRpb24t
PnRpbWluZ3Muc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgcmVhZE9wZXJh
dGlvbi0+dGltaW5ncy5kaXNwYXRjaENvdW50QXRTdGFydCA9IG1fcmVhZE9wZXJhdGlvbkRpc3Bh
dGNoQ291bnQ7CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBTdG9yYWdlOjpzdG9yZShjb25zdCBS
ZWNvcmQmIHJlY29yZCwgTWFwcGVkQm9keUhhbmRsZXImJiBtYXBwZWRCb2R5SGFuZGxlciwKICAg
ICBpZiAoIW1fY2FwYWNpdHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd3JpdGVPcGVy
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhpcywgcmVjb3JkLCBX
VEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhp
cywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5wcmVwZW5kKFdURk1vdmUo
d3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFkZCBrZXkgdG8gdGhlIGZpbHRlciBhbHJlYWR5
IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRoZSBwZW5kaW5nIG9wZXJhdGlvbnMgdG9vLgpA
QCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0
eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAgQVNTRVJUKHRy
YXZlcnNlSGFuZGxlcik7CiAgICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIEZ1bmN0aW9uIGNv
cGllcy4KIAotICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUo
dHJhdmVyc2VIYW5kbGVyKSk7CisgICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IG1ha2VV
bmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRoaXMpLCB0eXBlLCBmbGFncywgV1RG
TW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKICAgICBhdXRvJiB0cmF2ZXJzZU9wZXJhdGlvbiA9ICp0
cmF2ZXJzZU9wZXJhdGlvblB0cjsKICAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQo
V1RGTW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCmluZGV4IDdiODg5MjI5OTUzOWRiMzRjNWIzOTE0ZDNiMjE0Y2U4Yjgx
NDNiOTguLjYzYWQwNDA5ZmRkMjM2ZjZlM2MyY2EzMGU4N2U0YTdjMGEyOTU5MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0b3Jh
Z2U6OlJlY29yZCBTdWJyZXNvdXJjZXNFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29u
c3QKIAogc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBTdWJyZXNvdXJjZXNFbnRy
eTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRy
eSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZXNFbnRy
eT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxTdWJyZXNvdXJj
ZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRlci5z
aXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fc3VicmVzb3VyY2VzKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuY3BwCmluZGV4IGQ4YTA1OTQwZDcxOTdlYjMyMjVhMzZiYzUxM2EyZGI2MTBkYjBjZDguLjcx
MDRkMWY3NGNkNzAxY2JjZWNmYWI1N2QyNGViZmY4ZGFlYmVkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtNzMs
OCArNzMsOCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9
Owogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAg
ICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNN
YXA+KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVx
dWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShy
ZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVz
ID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVybCwgbWFrZVVuaXF1ZTxQcmVmZXRj
aENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOwogICAg
IC8vIExpbWl0IHByZWZldGNoZXMgZm9yIHNhbWUgdXJsIHRvIDEuCiAgICAgaWYgKCFhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwpAQCAtODYsOSArODYsOSBAQCB2b2lkIFBy
ZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlcwogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0
IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCkKIHsKICAg
ICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKKyAgICAgICAgbV9zZXNz
aW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwogICAgIHJl
ZGlyZWN0UmVxdWVzdC5jbGVhclB1cnBvc2UoKTsKLSAgICBtX3Nlc3Npb25QcmVmZXRjaGVzLT5z
ZXQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RG
TW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpKSk7CisgICAg
bV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmwsIG1ha2VVbmlxdWU8UHJlZmV0Y2hD
YWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVkaXJlY3RS
ZXF1ZXN0KSkpOwogICAgIG1fc2Vzc2lvbkV4cGlyYXRpb25MaXN0LmFwcGVuZChzdGQ6Om1ha2Vf
dHVwbGUocmVxdWVzdFVybCwgV2FsbFRpbWU6Om5vdygpKSk7CiAgICAgaWYgKCFtX2V4cGlyYXRp
b25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNo
b3QoZXhwaXJhdGlvblRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMTcxMGJhZTllNWE4ODUyNmNlZmEzYjM5
YWE3ODhmYWFmMmNmYTBlLi5hMjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBQcmVmZXRjaENhY2hlIHsKICAgICB2b2lk
IGNsZWFyKCk7CiAKICAgICBzdHJ1Y3QgRW50cnkgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0KaW5kZXggMDc3ZjE2ZmE2NTA2NTJjNzg3YTZmMDMxNjA5MDkwMjY4ZWJi
OGFjMC4uY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjViYmM4ZTRhNWU5OGExNWM5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDCiAK
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBOZXR3b3JrUHJvY2Vz
czo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdApAQCAtMjc2LDcgKzI3Niw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVn
cm91bmQoKQogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXImIE5ldHdvcmtQcm9jZXNzOjpuZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyKQotICAgICAgICBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsKKyAgICAgICAgbV9uZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXI+KCk7CiAgICAgcmV0dXJuICptX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggNGE2MWRmMTRkY2ZmMmU2YzNkMGUwOTBlZDNlNTFjYjYw
MzE1ZTY0NC4uNDY4Njg5MzVjNmM2NDJjMjA0ODI4OGZiZTM4NzkwM2MwMTI4MjAyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtODAyLDcgKzgwMiw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRh
CiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4gcHJvdGVjdGVkTmV0d29ya0RhdGFU
YXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3Jr
RGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CiAgICAgICAgIGF1dG8mIGRvd25sb2FkTWFu
YWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAg
ICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihk
b3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Np
b25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgICAgICBh
dXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFn
ZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3
b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoKmRvd25sb2FkKTsKICAgICAg
ICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5h
dGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOwpAQCAtODk3
LDcgKzg5Nyw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0Q1REYXRhQ29ubmVjdGlv
blNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4o
bmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFyeSAqcHJveHlEaWN0aW9uYXJ5KGNvbnN0IFVS
TCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkpCkBAIC0xMzIxLDcgKzEzMjEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrUwogewogICAgIC8vIEZJWE1FOiBVc2UgcHJvdG9jb2wu
CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+IHRhc2sgPSBbbV9zZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpIHdlYlNvY2tldFRhc2tXaXRoUmVxdWVzdDog
cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpXTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRU
YXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJT
b2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vz
c2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smIHRhc2spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2Nv
YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EuaAppbmRleCA5MzdlMjg3MzJiZTU3NDMyNjE2OWQ4NTRkZjY0YzE1MTNlMmI2OGEzLi5mNmNk
N2E5MjhiOTczODgxNmMzODlhOTU3YzhhOTFkZThjMjViMjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKQEAg
LTQxLDYgKzQxLDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb247CiBjbGFzcyBOZXR3b3JrU29ja2V0
Q2hhbm5lbDsKIAogY2xhc3MgV2ViU29ja2V0VGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
ZWJTb2NrZXRUYXNrPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIFJldGFpblB0cjxOU1VSTFNl
c3Npb25XZWJTb2NrZXRUYXNrPiYmKTsKICAgICB+V2ViU29ja2V0VGFzaygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJs
LmNwcAppbmRleCBiZTY4MDFmMzBjZGY0OTAwMjU0YzIyNGI5YjExZmJkZjczZmUyZTMxLi41YmUx
NzAyNjZmNDViOGJmNzJlZjU2YjEwMDg3Y2I1OWJiNTZkYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApA
QCAtNDEsNyArNDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNh
dGVGb3JIb3N0KGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBT
dHJpbmcmIGhvc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Nlc3Npb25DdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKaW5kZXggZDQ3MDlhNWU0YWM4YTJmYjZhY2ViNTZjNTdl
YmYwYjVjNzQwZDQ1Ni4uZTE4YTQzOTBiMTg4YTI3ZTkzMThjNTI0MDQ1NWYwNjRjZjZiZDY2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNz
aW9uQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
U2Vzc2lvbkN1cmwuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkN1cmwg
ZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3Vy
bD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25DdXJsKE5ldHdvcmtQcm9jZXNz
JiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgfk5ldHdvcmtTZXNz
aW9uQ3VybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQppbmRleCAy
Mzc0NTI4OGEwNmQwMTE0NTkxOTY4YjUwODZkZWI1ZjQ1YWEwYWM2Li5jOGI4NmM1MTExMzdlMzc0
ZWMwYmUwYzBlYjViM2ZlYjRmMDliZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc0lPUy5tbQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVu
dENvb3JkaW5hdG9yKCkKIHsKICAgICBpZiAoIW1fcGF5bWVudENvb3JkaW5hdG9yKQotICAgICAg
ICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBtYWtl
VW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X3BheW1lbnRDb29yZGluYXRvcjsKIH0KIApAQCAtODIsNyArODIsNyBAQCBjb25zdCBTdHJpbmcm
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VB
cHBsaWNhdGlvbgogCiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBdXRo
b3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBjb29yZGluYXRv
ciwgUEtQYXltZW50UmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI+KGNvb3JkaW5hdG9yLCByZXF1ZXN0
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI+
KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggZDQ2YzUwM2Q4MWU5ODM0ZTVkMmEy
NTY2MGM4NzIzZWFlN2UxNzBlYy4uNGZhY2M4MjEzZWY4NTA1Y2Y5ZDU0OGIyM2M1NjZkZDNkMGJl
MGFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRPdXRwdXRTdHJlYW0gPSBh
ZG9wdEdSZWYoR19PVVRQVVRfU1RSRUFNKG91dHB1dFN0cmVhbS5sZWFrUmVmKCkpKTsKIAogICAg
IGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IG1fc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3du
bG9hZE1hbmFnZXIoKTsKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3du
bG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNz
aW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgYXV0byBkb3dubG9h
ZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxv
YWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkp
OwogICAgIGF1dG8qIGRvd25sb2FkUHRyID0gZG93bmxvYWQuZ2V0KCk7CiAgICAgZG93bmxvYWRN
YW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKG1fcGVuZGluZ0Rvd25sb2FkSUQsIFdU
Rk1vdmUoZG93bmxvYWQpKTsKICAgICBkb3dubG9hZFB0ci0+ZGlkQ3JlYXRlRGVzdGluYXRpb24o
bV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDgzYzJmMjhl
YTVjNzAzNGRhYTdkYjY0NjIxYjQ0NGVkZDVkOTZhZjkuLjdhNzQ4MWY3ZDQyNWYwMjMzN2EwYzEw
YWRmOWQ2NTRmNzBlYzdkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5jcHAKaW5kZXggMzBmYzhhNTM1NWQwODQ1MmFjMzYxYjFkY2VhOTdjODRmMzYwN2Zl
ZC4uNDA3MzYxZjAzNmU3OTg5MTc2N2Q4MDdmYmI2M2M5MDQ0YjI2MGE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291
cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIE5ldHdv
cmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3Jr
UHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQog
ICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCi0gICAgLCBt
X25ldHdvcmtTZXNzaW9uKHN0ZDo6bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nl
c3Npb25JRCkpCisgICAgLCBtX25ldHdvcmtTZXNzaW9uKG1ha2VVbmlxdWU8U291cE5ldHdvcmtT
ZXNzaW9uPihtX3Nlc3Npb25JRCkpCiB7CiAgICAgYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3
b3JrU3RvcmFnZVNlc3Npb24oKTsKICAgICBBU1NFUlQoc3RvcmFnZVNlc3Npb24pOwpAQCAtMTI0
LDcgKzEyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lv
blNvdXA6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvCiAgICAgcmVxdWVzdC51cGRhdGVT
b3VwTWVzc2FnZShzb3VwTWVzc2FnZS5nZXQoKSwgYmxvYlJlZ2lzdHJ5KCkpOwogICAgIGlmIChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndzcyIpKQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KHNvdXBNZXNzYWdlLmdldCgpLCAibmV0d29yay1ldmVudCIsIEdfQ0FMTEJBQ0sod2ViU29ja2V0
TWVzc2FnZU5ldHdvcmtFdmVudENhbGxiYWNrKSwgbnVsbHB0cik7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1l
c3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRU
YXNrPihjaGFubmVsLCBzb3VwU2Vzc2lvbigpLCBzb3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAppbmRleCBmOWVmNGJiNTQz
MGJiZjczYjA0YTBlM2JlYzI0NzkyOGQ1OWU3MTZiLi40NjZiMjc4MmJmOTNjNzcwNzBmNzk3ZGQz
NjUyMzRjYzFkZTNmYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE5l
dHdvcmtTZXNzaW9uU291cCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uU291cD4obmV0d29ya1By
b2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vzc2lvblNv
dXAoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
ICAgICB+TmV0d29ya1Nlc3Npb25Tb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bS5jcHAKaW5kZXggNmRkYzgxYTM2ZDg0OWNiYzI4Mzc5M2I2MTcwNjdhMjdlMjlkOTFmMC4uODc0
NTI1ZTM4Y2U3MDRlYmUxZGFhNzEwYmI1NWMwMWNjMDU4ZWFlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9nbGli
L0dVbmlxdWVQdHIuaD4KIAogc3RydWN0IEFzeW5jUmVhZERhdGEgeworICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBBc3luY1JlYWREYXRhKEdSZWZQdHI8R1Rhc2s+JiYg
dGFzaywgdm9pZCogYnVmZmVyLCBnc2l6ZSBjb3VudCkKICAgICAgICAgOiB0YXNrKFdURk1vdmUo
dGFzaykpCiAgICAgICAgICwgYnVmZmVyKGJ1ZmZlcikKQEAgLTM5LDYgKzQwLDcgQEAgc3RydWN0
IEFzeW5jUmVhZERhdGEgewogfTsKIAogc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3Ry
ZWFtUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHVp
bnQ2NF90IGNvbnRlbnRMZW5ndGg7CiAgICAgdWludDY0X3QgYnl0ZXNSZWNlaXZlZDsKICAgICB1
aW50NjRfdCBieXRlc1JlYWQ7CkBAIC05OSw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0s
IHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RyZWFtLT5wcml2LT5wZW5kaW5n
QXN5bmNSZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2sp
LCBidWZmZXIsIGNvdW50KTsKKyAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBt
YWtlVW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291bnQpOwog
fQogCiBzdGF0aWMgZ3NzaXplIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkRmluaXNo
KEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3Iq
KiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJTb2NrZXRUYXNrU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmgKaW5kZXggZGE4NzYxMTA2NDgxZjk2YTlkNmEwMDAxODRjY2QyNDA3
YjFmMjY1MC4uNWVmN2I0OGU0MjA4MzllZWY4MDA4MTFiMGQ5NzQwZjQ0ZTAxZjBhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3Jr
U29ja2V0Q2hhbm5lbDsKIAogY2xhc3MgV2ViU29ja2V0VGFzayB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hh
bm5lbCYsIFNvdXBTZXNzaW9uKiwgU291cE1lc3NhZ2UqLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KTsKICAgICB+V2ViU29ja2V0VGFzaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaAppbmRleCA4ZjIw
NWNlMDI5NzEzZDhiYTIxM2YxNDNiYTcxYmIxMTQ3NTJkZWY1Li4yMmFiZGVjNjlkYjI0NWE0Y2Y5
ODNmMjQ3YjM4ZjcyZDkwMGE2ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaApAQCAtNDgsNiAr
NDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtSVENQcm92aWRlcjsKIAog
Y2xhc3MgTGliV2ViUlRDU29ja2V0Q2xpZW50IGZpbmFsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19z
bG90czw+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFR5cGUgeyBVRFAsIFNlcnZlclRDUCwgQ2xpZW50VENQLCBTZXJ2ZXJDb25uZWN0aW9u
VENQIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZTc4NjU2OGZmNTA1YTdiODcxNzg3
MGRmNTdmYTU3ZDE1ZjVkNzc2My4uOTI2NjY4YzM4ZmZmNzA4YWU1MDJmNThmZDQxNTI4ODAzZWM1
NTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgdm9pZCBOZXR3
b3JrTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRl
bnRpZmllciBkb2N1bWUKIH0KIAogc3RydWN0IFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0IHsK
KyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUGVuZGluZ1JlZ2lzdHJh
dGlvblJlcXVlc3QoUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
ICAgICAgICAgOiBjb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgICAgICwgcmVx
dWVzdElkZW50aWZpZXIocmVxdWVzdElkZW50aWZpZXIpCkBAIC0xMzUsNyArMTM2LDcgQEAgdm9p
ZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBQQUw6OlNlc3MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
cGVuZGluZ1JlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1
ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0g
bWFrZVVuaXF1ZTxQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdD4obWFrZVJlZihtX2Nvbm5lY3Rp
b24uY29ubmVjdGlvbigpKSwgcmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHNlc3Np
b25JRCk7CiAgICAgYXV0byogcmVjb3JkID0gJnBlbmRpbmdSZXF1ZXN0LT5yZWNvcmQ7CiAgICAg
YXV0byBlcnJvciA9IEROU1NlcnZpY2VSZWdpc3RlclJlY29yZChzZXJ2aWNlLAogICAgICAgICBy
ZWNvcmQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKaW5kZXggMzUzZWFjOGNlMTFiNjkwNmVmYWRkMmZkMjcx
OGI5N2FiNTJjZGE0ZC4uYWI3MDZkYzJlOTM0YTlhN2VmOTkyNjg5Nzk3NGJkYzc1NGVhM2RmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q01vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENNb25pdG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIE5ldHdvcmtSVENNb25p
dG9yOjpzdGFydFVwZGF0aW5nKCkKIHsKICAgICBtX2lzU3RhcnRlZCA9IHRydWU7CiAgICAgbV9y
dGNQcm92aWRlci5jYWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzXSgpIHsKLSAgICAgICAgbV9t
YW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7Cisg
ICAgICAgIG1fbWFuYWdlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6
QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKICAgICAgICAgbV9tYW5hZ2VyLT5TaWduYWxOZXR3b3Jr
c0NoYW5nZWQuY29ubmVjdCh0aGlzLCAmTmV0d29ya1JUQ01vbml0b3I6Om9uTmV0d29ya3NDaGFu
Z2VkKTsKICAgICAgICAgbV9tYW5hZ2VyLT5TdGFydFVwZGF0aW5nKCk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcAppbmRleCBhNWFjNTcyMTM3OWRiM2QxYjI1ODc1NTg2MTAzMGJiYTRkYjll
YjhlLi4xNWQ0NGQwYWQ5ZGIwZjNiMDU5OWUxYTMzZWZjZmRiODk2MWE2NWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgTmV0d29ya1JUQ1Byb3ZpZGVyOjpOZXR3b3Jr
UlRDUHJvdmlkZXIoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24KICAg
ICA6IG1fY29ubmVjdGlvbigmY29ubmVjdGlvbikKICAgICAsIG1fcnRjTW9uaXRvcigqdGhpcykK
ICAgICAsIG1fcnRjTmV0d29ya1RocmVhZChjcmVhdGVUaHJlYWQoKSkKLSAgICAsIG1fcGFja2V0
U29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5
PihtX3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkpKQorICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5
KG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNQYWNrZXRTb2Nr
ZXRGYWN0b3J5PihtX3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkpKQogewogI2lmIGRlZmluZWQoTkRF
QlVHKQogICAgIHJ0Yzo6TG9nTWVzc2FnZTo6TG9nVG9EZWJ1ZyhydGM6OkxTX05PTkUpOwpAQCAt
MTA0LDcgKzEwNCw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQodWlu
dDY0X3QgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6CiAgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2Vf
dW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUo
c29ja2V0KSwgdHlwZSkpOworICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPExp
YldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwg
dHlwZSkpOwogfQogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlVURQU29ja2V0KHVp
bnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFJUQ05ldHdvcms6OlNvY2tldEFkZHJlc3MmIGFkZHJl
c3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCkBAIC0xNTMsNyArMTUzLDcg
QEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0MKIHsKICAgICBjYWxsT25SVENOZXR3b3JrVGhyZWFk
KFt0aGlzLCBpZGVudGlmaWVyLCBuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllcl0oKSB7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQgPSBt
X3BlbmRpbmdJbmNvbWluZ1NvY2tldHMudGFrZShuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmll
cik7Ci0gICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGli
V2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQKSk7CisgICAgICAg
IGFkZFNvY2tldChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4o
aWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50
OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMzgzODJiMDlkNGZiM2JlMjY0Zjg5
Yjc3ODQxYTQxZDdjMDhjYWMwNS4uYzVlZjZkOTlhNTYwZGQxNDg4ZjE4NDk5NWFlOGE3YjE2ZDlh
ZDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTM0
Myw3ICszNDMsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyTWVzc2FnZShXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+
KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVw
bHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHki
LCBzeW5jUmVxdWVzdElEKTsKIAogICAgIC8vIEhhbmQgb2ZmIGJvdGggdGhlIGRlY29kZXIgYW5k
IGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVzc2FnZSByZWNlaXZlci4KICAgICB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKCp0aGlzLCBkZWNvZGVyLCBy
ZXBseUVuY29kZXIpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFya0N1
cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkKIAogc3RkOjp1bmlxdWVfcHRyPEVu
Y29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRv
IGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUs
IG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5p
cXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlv
bklEKTsKICAgICBlbmNvZGVyLT5zZXRJc1N5bmNNZXNzYWdlKHRydWUpOwogCiAgICAgLy8gRW5j
b2RlIHRoZSBzeW5jIHJlcXVlc3QgSUQuCkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBDb25uZWN0
aW9uOjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZygpCiAgICAgaWYgKG1faW5jb21p
bmdNZXNzYWdlc1Rocm90dGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbmNvbWluZ01l
c3NhZ2VzVGhyb3R0bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRo
aXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMpOworICAgIG1faW5jb21p
bmdNZXNzYWdlc1Rocm90dGxlciA9IG1ha2VVbmlxdWU8TWVzc2FnZXNUaHJvdHRsZXI+KCp0aGlz
LCAmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VzKTsKIH0KIAogdm9pZCBDb25u
ZWN0aW9uOjpwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAg
LTg0Myw3ICs4NDMsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVj
b2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlF
bmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVw
bHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8
RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09ICJXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyIpIHsKICAgICAg
ICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDIwZjVlYzViMjAyYmVjMmJk
ZjU4ZjAyMGViZGVlZjgzMTQ5MzExYmYuLmFkYzRhYWQ5ODgxOGZhMDZhZmM2YmU4OTYxNDVkNTYz
MTU4MzJkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTQz
Myw3ICs0MzMsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPgogewogICAgIENPTVBJTEVfQVNT
RVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2Rl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNv
ZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbmRN
ZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTQ0OCw3ICs0NDgsNyBA
QCB2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNv
bXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5
bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRp
b25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZl
ck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5l
cklEID0gbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlz
dGVuZXJJRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCBjY2EwNzM5MGFkZWM0NDZkZTc0
NjZjZjhlMTAxMjNjMjc5Mzg1MzUyLi5mZDUxNzAxNzEyYjA2MjlkNDcyNTJkMDQwODk2YzY0ZmNi
Y2JiMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtMTIzLDcg
KzEyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjp1bndyYXBGb3JUZXN0
aW5nKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3cmFwcGVkTWVz
c2FnZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RGVjb2Rlcj4od3JhcHBlZE1lc3NhZ2UuZGF0YSgpLCB3cmFwcGVkTWVzc2FnZS5zaXpl
KCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwg
bnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogfQogCiBzdGF0aWMgaW5saW5lIGNvbnN0
IHVpbnQ4X3QqIHJvdW5kVXBUb0FsaWdubWVudChjb25zdCB1aW50OF90KiBwdHIsIHVuc2lnbmVk
IGFsaWdubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApp
bmRleCA4NTQ1MmNkYTdlMDQ1ZTQ0NTVlMDdiOTNiYWZjYTM1YjEwMjAwMTFlLi5hNzQ5YWFiODcw
MDU0Y2ViNjkwZTVmMTRmNDA3NTYzZmZjZDBmOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBoYW5kbGVNZXNz
YWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2Jq
ZWN0LCBNRgogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhh
bmRsZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihj
b25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVz
c2FnZVJlcGx5TmFtZSgpLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxF
bmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKICAg
ICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVu
Y29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IDNkNmYzNDI4OTJiYzg4Mzkw
Njc4ZThjMzY0NjM5MTEwZGU0ZjU3MjYuLjc3MTQ0OGE0NGQwODg2ZGQwMWJiMGMyZGU2NGRjOWE0
Mjg2MjdhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgK
QEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVzc2FnZVNlbmRlciB7CiAgICAgewogICAgICAgICBz
dGF0aWNfYXNzZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAg
YXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUo
KSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlv
bklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nv
bm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5l
Y3Rpb25Db2NvYS5tbQppbmRleCAzNzAyYWNjN2RmNTFiZDg0NmI5M2FmNjRiZjA3MGE0YzEwMDM5
MTlmLi44N2RkMjhmODA4Njc4MmNlMmEzZGY3OTBmNGFjMGU2ZDc0OWRhYjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBA
IC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV94cGNDb25uZWN0aW9uKHhwY0Nv
bm5lY3Rpb24pCiAgICAgICAgICwgbV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjp3YXRjaGRvZ1RpbWVyRmlyZWQpCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgLCBtX2Fzc2VydGlvbihzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRf
cGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRv
ZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCisgICAgICAgICwgbV9h
c3NlcnRpb24obWFrZVVuaXF1ZTxXZWJLaXQ6OlByb2Nlc3NBbmRVSUFzc2VydGlvbj4oeHBjX2Nv
bm5lY3Rpb25fZ2V0X3BpZChtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpLCAiQ29ubmVjdGlvblRlcm1p
bmF0aW9uV2F0Y2hkb2ciX3MsIFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpKQog
I2VuZGlmCiAgICAgewogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVy
dmFsKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgICAg
ICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGlu
aXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2Vy
dmVyIHRvIHVzZS4KLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNv
ZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CisgICAgICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIs
IDApOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUoTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFD
SF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKIAogICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgp
OwpAQCAtNDEyLDcgKzQxMiw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3Jl
YXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWlu
dDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlciArIDEpOwogICAg
ICAgICBzaXplX3QgYm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIHNpemVvZihtYWNoX21z
Z19oZWFkZXJfdCk7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4o
Ym9keSwgYm9keVNpemUsIG51bGxwdHIsIFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVj
dG9yPEF0dGFjaG1lbnQ+IHsgfSk7CiAgICAgfQogCiAgICAgYm9vbCBtZXNzYWdlQm9keUlzT09M
ID0gaGVhZGVyLT5tc2doX2lkID09IG91dE9mTGluZUJvZHlNZXNzYWdlSUQ7CkBAIC00NTAsNyAr
NDUwLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVj
b2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBtZXNzYWdl
Qm9keSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkZXNjcmlwdG9yLT5vdXRfb2ZfbGluZS5hZGRy
ZXNzKTsKICAgICAgICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6ZSA9IGRlc2NyaXB0b3ItPm91dF9v
Zl9saW5lLnNpemU7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4o
bWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgbGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFtdKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGxlbmd0aCkgewogICAgICAgICAgICAgdm1fZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBy
ZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oYnVmZmVyKSwgbGVuZ3RoKTsKICAgICAgICAg
fSwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAgIH0KQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNn
X2hlYWRlcl90KiBoZWFkZXIpCiAgICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBkZXNjcmlwdG9y
RGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUgLSAo
ZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihoZWFkZXIpKTsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdl
Qm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBX
VEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIC8vIFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNo
b3VsZCBhbHdheXMgaW5jbHVkZSB0aGUgbWF4aW11bSB0cmFpbGVyIHNpemUuCkBAIC01MjYsNyAr
NTI2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAg
ICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGRlY29kZXItPnNldEltcG9y
dGFuY2VBc3NlcnRpb24oc3RkOjptYWtlX3VuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFk
ZXIpKTsKKyAgICBkZWNvZGVyLT5zZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKG1ha2VVbmlxdWU8SW1w
b3J0YW5jZUFzc2VydGlvbj4oaGVhZGVyKSk7CiAjZW5kaWYKIAogICAgIGlmIChkZWNvZGVyLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9
PSAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDYzYjZiZTcyNzFlNDQ1ODgzOTUw
NWFhOTE1ZTM4NzNmODUxNGRlZGQuLjc3YWY5YjI4NTg0NTI2YmI3MGM3ZmZjOGUzMjU2YTNiYWEx
M2EyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNz
TWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzQm9keU91dE9mTGluZSgpKQogICAgICAg
ICBtZXNzYWdlQm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VCb2R5
LT5kYXRhKCkpOwogCi0gICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVy
PihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShh
dHRhY2htZW50cykpOworICAgIGF1dG8gZGVjb2RlciA9IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVz
c2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNo
bWVudHMpKTsKIAogICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7
CiAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdl
KFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxPQ0spIHsKICNpZiBV
U0UoR0xJQikKLSAgICAgICAgICAgIG1fcGVuZGluZ091dHB1dE1lc3NhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1lc3NhZ2UpKTsKKyAgICAgICAgICAg
IG1fcGVuZGluZ091dHB1dE1lc3NhZ2UgPSBtYWtlVW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3Zl
KG91dHB1dE1lc3NhZ2UpKTsKICAgICAgICAgICAgIG1fd3JpdGVTb2NrZXRNb25pdG9yLnN0YXJ0
KG1fc29ja2V0LmdldCgpLCBHX0lPX09VVCwgbV9jb25uZWN0aW9uUXVldWUtPnJ1bkxvb3AoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKEdJT0NvbmRpdGlvbiBjb25k
aXRpb24pIC0+IGdib29sZWFuIHsKICAgICAgICAgICAgICAgICBpZiAoY29uZGl0aW9uICYgR19J
T19PVVQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ091dHB1dE1lc3Nh
Z2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4u
Y3BwCmluZGV4IDY0MGY0NTI5OWUzYjI2NmUwMjY5Y2NjY2M5NDUyYjNiYTU3OWVmYjEuLjVhZGZk
ODJiZWNhNDZkYjAyNDQ3ZThiY2I2ZDM4NGMyYzAxNTZhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhhbmRsZXIoKQogICAgICAgICBpZiAoIW1fcmVh
ZEJ1ZmZlci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtZXNzYWdlLCBs
ZXQncyBkaXNwYXRjaCBpdC4KICAgICAgICAgICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2ht
ZW50cygwKTsKLSAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVj
b2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwg
V1RGTW92ZShhdHRhY2htZW50cykpOworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gbWFrZVVu
aXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBu
dWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAgICAgICAgICBwcm9jZXNzSW5jb21p
bmdNZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01v
ZHVsZS5oCmluZGV4IGRkMmI2NmE3Y2ExOTU5MWI2ZWU2N2I4ZjI4NGZkMjU0YTM4Mjc4NWQuLjU2
ODM3MjEzZGZiZWFlYjRkNTllOTNjM2Q0OWY2YzdhYzJmNTM0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9N
b2R1bGUuaApAQCAtNDQsNiArNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR01vZHVsZSBHTW9kdWxl
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTW9kdWxlKTsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBNb2R1bGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCmluZGV4IDgyMzJkYjRl
YjU2ZWFjYjZmOGNlODU1NjY0YjhiNzgyYWI2NTBhOTguLjdhZWU0N2VhYjk1ZjU4YTZiNDE3ODVj
MGY0ZmY3ZjAyYjA0Y2Y0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFj
L0xheWVySG9zdGluZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
TGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0Nv
bnRleHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCkKIHsK
LSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9z
dGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1
ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0g
QHsKICAgICAgICAga0NBQ29udGV4dFBvcnROdW1iZXIgOiBAKHNlcnZlclBvcnQuc2VuZFJpZ2h0
KCkpLApAQCAtNTIsNyArNTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYQogI2lmIEhBVkUo
T1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3Rp
bmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQ
cm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zJiBvcHRpb25zKQogewotICAg
IGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5n
Q29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExh
eWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhv
c3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQpAQCAtODIsNyArODIsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4
dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aQogI2lmIFBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVl
X3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JF
eHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKCkKIHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0Nv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0
byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0Pigp
OwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9z
dGluZ01vZGU6Ok91dE9mUHJvY2VzczsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRl
eHQgPSBbQ0FDb250ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlv
bklEKCkgb3B0aW9uczpAeyBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9
XTsKICAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCA5N2UyZGYzNTNi
MzY4MjM5MjlhMzFhZTk1N2ExZGRjZGMyMWMzN2Q2Li5iOThjYTk0YmM5ZWZjMjNiMmVkODE4YTVi
Nzg0MzM3MjMxN2U5YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC00OSw3ICs0OSw4IEBAIGNsYXNzIFNoYXJlYWJs
ZUJpdG1hcDsKIGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uOwogc3RydWN0IFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczsKIAotY2xhc3MgUGx1Z2luQ29udHJvbGxlclByb3h5IDogUGx1Z2luQ29u
dHJvbGxlciB7CitjbGFzcyBQbHVnaW5Db250cm9sbGVyUHJveHkgOiBwdWJsaWMgUGx1Z2luQ29u
dHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUGx1Z2luQ29udHJvbGxlclByb3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
MzY2Yjk4M2NjMGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNS4uY2U4MjY3ZDJlZTc4Y2Fj
YjNkZGEwYTliMzc1YmZhYWZjNjg2ZWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAg
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW4KIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlv
blBhcmFtZXRlcnMsIGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMy
X3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpCiB7Ci0gICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJv
eHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRp
b25QYXJhbWV0ZXJzKTsKKyAgICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1ha2VVbmlx
dWU8UGx1Z2luQ29udHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOwogCiAg
ICAgUGx1Z2luQ29udHJvbGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVyUHJveHlQdHIgPSBwbHVn
aW5Db250cm9sbGVyUHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElVUkwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRl
eCBiYmQ0MjNiY2Y1NzE1ZTRhZDcwYmY1MmRlZjhjMmMzMGM0MWJmMGY2Li4zZTYxYmJkMDAwZTFm
NGNkYjZjMmEzNmNhNGY3NWU5MDRmODM1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJVVJMLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6
VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJh
c2VVUkwtPnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9
IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwg
cmVsYXRpdmVVUkwpOworICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gbWFrZVVuaXF1ZTxXVEY6
OlVSTD4oKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CiAgICAgICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBhYnNvbHV0ZVVSTFN0cmluZyA9IGFic29sdXRlVVJMLT5zdHJp
bmcoKTsKIAogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFi
c29sdXRlVVJMKSwgYWJzb2x1dGVVUkxTdHJpbmcpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFz
cyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAg
ICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3Bh
cnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5n
KTsKKyAgICAgICAgbV9wYXJzZWRVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgp
LCBtX3N0cmluZyk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgbV9zdHJpbmc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0
aW9uLm1tCmluZGV4IDI1OTI4NDdlMzQxYTNiNmY3Mjg3NTRiZDc4OGE2NjUzZGQyMjE1YjAuLmQz
ZmY2MjFlYzBmNGExMGQ3NTY0ODdjYzIxNmY0OTVjZTg2ZDcyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1t
CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgUmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlT2JqZWN0SW52b2NhdGlvCiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYmxvY2tTaWduYXR1cmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIHJlc3VsdC5tX3JlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbHlJ
bmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CisgICAgICAgIHJlc3VsdC5t
X3JlcGx5SW5mbyA9IG1ha2VVbmlxdWU8UmVwbHlJbmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2Nr
U2lnbmF0dXJlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
aW5kZXggNjVkYTllZmYwMWI0M2VhNTcxMDgwMmY2YzQ2YTZkMDIwMjY1NjkzZS4uNDg5OTc2Mjkz
MmI3YWY2OTIyMWQwNTBhZjY3NDU4MzZmYzM4N2IwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAt
MTA5LDcgKzEwOSw3IEBAIC0gKGlkKV9pbml0V2l0aFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSYp
cGFnZQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVn
aXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBh
Z2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMTksNyArMTE5LDcgQEAgLSAoaWQpX2lu
aXRXaXRoV2ViUGFnZVByb3h5OihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZQogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90
ZU9iamVjdFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJl
Z2lzdHJ5PihzZWxmLCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5p
cXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9CkBAIC0xNjAsNyArMTYwLDcgQEAgLSAodm9pZClfc2VuZEludm9jYXRpb246
KE5TSW52b2NhdGlvbiAqKWludm9jYXRpb24gaW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnQK
ICAgICAgICAgaWYgKHN0cmNtcChbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNU
eXBlczpyZXBseUJsb2NrU2lnbmF0dXJlXS5tZXRob2RSZXR1cm5UeXBlLCAidiIpKQogICAgICAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIlJldHVybiB2YWx1ZSBvZiBibG9jayBhcmd1bWVudCBtdXN0IGJlICd2b2lkJy4gKCVzKSIs
IHNlbF9nZXROYW1lKGludm9jYXRpb24uc2VsZWN0b3IpXTsKIAotICAgICAgICByZXBseUluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJ
bmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKKyAg
ICAgICAgcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b246OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25h
dHVyZSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0
IHRyeSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5j
cHAKaW5kZXggN2VkMTFlNmMxNzFlMjBiZTFlOWVhZGIzMDdlNzFmYzQ4YmZkZTg0OS4uZmFlZmVk
MmRjYzgzOGVlOTU3MzkwNjVkYWM2M2YxMzU2M2YwZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC05
NCw3ICs5NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVt
Q3JlYXRlKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmCiB7CiAgICAgV2ViS2l0Q29udGV4
dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgTlVMTCkpOwogCi0gICAgaXRlbS0+cHJpdi0+
bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1E
YXRhKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4oaXRlbURhdGEpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW1EYXRhPiYgc3ViTWVudSA9IGl0ZW1EYXRhLnN1Ym1lbnUoKTsKICAgICBpZiAoIXN1Yk1lbnUu
aXNFbXB0eSgpKQogICAgICAgICB3ZWJraXRDb250ZXh0TWVudUl0ZW1TZXRTdWJNZW51KGl0ZW0s
IGFkb3B0R1JlZih3ZWJraXRDb250ZXh0TWVudUNyZWF0ZShzdWJNZW51KSkpOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X25ldyhHdGtBY3Rpb24qIGFjdGlvbikKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChHVEtfSVNf
QUNUSU9OKGFjdGlvbiksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBp
dGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9D
T05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOworICAgIGl0
ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihh
Y3Rpb24pOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlv
bihHQWN0aW9uKiBhY3Rpb24KICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghdGFyZ2V0IHx8IGdf
dmFyaWFudF9pc19vZl90eXBlKHRhcmdldCwgZ19hY3Rpb25fZ2V0X3BhcmFtZXRlcl90eXBlKGFj
dGlvbikpLCBudWxscHRyKTsKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdF
QktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9N
RU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4
KGxhYmVsKSwgdGFyZ2V0KTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8
V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwg
dGFyZ2V0KTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMTk0LDcgKzE5NCw3IEBAIFdlYktp
dENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2Nr
X2FjdGlvbihXZWJLaXRDb250CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBX
RUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRf
TUVOVV9JVEVNLCBudWxscHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Vi
a2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9u
VHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0
aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwo
YWN0aW9uKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRl
eHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFn
KGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CiAKICAg
ICByZXR1cm4gaXRlbTsKIH0KQEAgLTIxNiw3ICsyMTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0
ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9s
YWJlbAogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRf
TUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVs
bHB0cikpOwogICAgIENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51
QWN0aW9uSXNDaGVja2FibGUoYWN0aW9uKSA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25U
eXBlOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250
ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRh
ZyhhY3Rpb24pLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVu
dUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENv
bnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMjM5LDcgKzIzOSw3IEBAIFdlYktpdENv
bnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUo
Y29uc3QgZ2NoYXIqIGxhCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgV2ViS2l0Q29u
dGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnBy
aXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihB
Y3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJv
bVVURjgobGFiZWwpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxp
Y2F0aW9uVGFnLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CiAgICAgaXRlbS0+cHJpdi0+c3Vi
TWVudSA9IHN1Ym1lbnU7CiAgICAgd2Via2l0Q29udGV4dE1lbnVTZXRQYXJlbnRJdGVtKHN1Ym1l
bnUsIGl0ZW0pOwogCkBAIC0yNTYsNyArMjU2LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3
ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEK
IFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBh
cmF0b3Iodm9pZCkKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRf
Q09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9J
VEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRl
bVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtl
VW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCmluZGV4IDVlZDE0M2E5OTg1OTA0OTZjMzM3NmE1Njk4ODExNTNhNmEwMmIy
OGMuLmYzM2NhYjMwNWZlZTEyNzRmYWE3YjIxODM4ZTliYjdlZjc2YmJmMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eQogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4KICAgICAsIHB1YmxpYyBQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCB+
Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmlu
ZGV4IDdhZDMzMzE0NTM5MTg4ODlmZDNiOTg5NjM4NmE4YmVkMWY1MTlhMTQuLjM5MTRhNGMyMDE0
YTlhNTRhNjM0ODhhNGU3NDM4MTljNmE4ZGIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0KQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAog
ICAgICAgICBBU1NFUlQodmlld0NvbnRyb2xsZXIpOwogCi0gICAgICAgIHBheW1lbnRDb29yZGlu
YXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXltZW50Q29vcmRpbmF0b3JQcm94
eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVyKTsKKyAgICAgICAgcGF5bWVu
dENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IG1ha2VVbmlxdWU8
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29yZGluYXRvclBy
b3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmlld0NvbnRyb2xsZXIpOwogCiAgICAgICAgIEFT
U0VSVCghcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cpOwogICAgICAgICBw
YXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyA9IFtOU1dpbmRvdyB3aW5kb3dX
aXRoQ29udGVudFZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgKaW5kZXggODZlNzQ0YzEwOGRmNGNiY2Y1ZDA0NzYwOWFjZjk2YzY4MjNkNmIxNi4uNGY4
MzcwMjRlZTVmMzRmZmEwZTY5YmFmN2IzYmZjODgxYTUyODAyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgKQEAgLTU1LDYgKzU1LDcgQEAgZW51bSBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uIDogdWludDhfdDsKIHVzaW5nIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+OwogCiBjbGFzcyBBdXRoZW50aWNhdGlv
bk1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdGlvbk1hbmFn
ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBdXRoZW50aWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dGhl
bnRpY2F0aW9uTWFuYWdlcihOZXR3b3JrUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IDU2YTc4M2EwYjIz
YjI2YTIwYzViOGZhNGE1OWYxNTdhNGMwMzdiYjcuLjJkNWQxYWZjMDgyN2E0MWEwYmQ4M2JiYWE4
MGY3OGY2MTRmNWJkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1Nh
bmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94RXh0
ZW5zaW9uSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGUgdHlwZSwgT3B0aW9uYWw8cGlkX3Q+IHBpZCA9IFdURjo6bnVsbG9wdCkKICAgICB7CkBAIC0x
NjAsNyArMTYxLDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPEhhbmRsZT4KICAgICAgICAgcmV0dXJuIHt7
IH19OwogCiAgICAgSGFuZGxlIGhhbmRsZTsKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUo
KSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IG1ha2VVbmlxdWU8U2FuZGJveEV4
dGVuc2lvbkltcGw+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2Uu
ZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRs
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCAx
OGRjMmZiOGVkMTNkMTUzNDEyZWEzMGUyOTExMTc4ZWFjZWZjNWFlLi43MDQzMGY0NDMxMmM4YTU2
MmNlMTVmYzczMmY2OWQzODc2ZmU5YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgVGV4dHVyZU1hcHBlckxheWVyJiB0ZXht
YXBMYXllcihOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyJiBjb21wb3NpdGlvbkxheWVyKQogewog
ICAgIGF1dG8mIGNvbXBvc2l0aW9uU3RhdGUgPSBjb21wb3NpdGlvbkxheWVySW1wbChjb21wb3Np
dGlvbkxheWVyKS5jb21wb3NpdGlvblN0YXRlKCk7CiAgICAgaWYgKCFjb21wb3NpdGlvblN0YXRl
LmxheWVyKSB7Ci0gICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKKyAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXll
ciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOwogICAgICAgICBjb21wb3NpdGlv
blN0YXRlLmxheWVyLT5zZXRJRChjb21wb3NpdGlvbkxheWVyLmlkKCkpOwogICAgIH0KICAgICBy
ZXR1cm4gKmNvbXBvc2l0aW9uU3RhdGUubGF5ZXI7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RMYXllcigpCiAgICAgaWYgKG1fcm9v
dExheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Jvb3RMYXllciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOworICAgIG1fcm9vdExheWVyID0gbWFrZVVuaXF1
ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CiAgICAgbV9yb290TGF5ZXItPnNldE1hc2tzVG9Cb3Vu
ZHMoZmFsc2UpOwogICAgIG1fcm9vdExheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwogICAg
IG1fcm9vdExheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoMCwgMCwgMCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRv
ci5jcHAKaW5kZXggY2QzZTU3YzZiY2I5ZDhkYzFmZjk5Y2FkNTljNGUxM2ZmNjYwM2E2Yi4uYmNi
MjM1OTc1YjEzM2QyZTI3Njc2ZDI4M2ZlODkxMzgxYTBkNWQxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIFJlZjxUaHJlYWRlZENvbXBvc2l0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6
Y3JlYXRlKENsaWVudCYgY2xpZW50LCBUaHJlYWRlZERpc3BsCiBUaHJlYWRlZENvbXBvc2l0b3I6
OlRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3I6OkNsaWVudCYgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LCBQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2Nh
bGVGYWN0b3IsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgcGFpbnRGbGFncykKICAgICA6IG1f
Y2xpZW50KGNsaWVudCkKICAgICAsIG1fcGFpbnRGbGFncyhwYWludEZsYWdzKQotICAgICwgbV9j
b21wb3NpdGluZ1J1bkxvb3Aoc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+KFt0
aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkKKyAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29w
KG1ha2VVbmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUo
KTsgfSkpCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikK
ICAgICAsIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yKFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25p
dG9yOjpjcmVhdGUoZGlzcGxheUlELCBkaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQpKQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyLmgKaW5kZXggMWEwNTQ3NTA3ZWMxYzFhODEyNDcyYmI3ZWJkOWZhMGQ0YWQx
M2E0OC4uMDdlOGJiYzliNWM5YzNjNmM5ZDhkNmMzYjk0NWU1MzkzMjdiODc1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2
ZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBOUFZhcmlhbnREYXRhOwogY2xhc3MgUGx1Z2lu
OwogCiBjbGFzcyBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTlBPYmplY3RNZXNzYWdlUmVjZWl2
ZXIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05QUmVtb3RlT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBS
ZW1vdGVPYmplY3RNYXAuY3BwCmluZGV4IDYxZTFmOTQwMjUyMzg1ZGI4MDVlYzEyMmRmZjFjOWU0
ZjFiNzI1NjMuLmQ0YjUyNGM4MjllYzY2NzIxZGYxYTcwZDJkNTEzYWU0ZWIzZjNkMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3Bw
CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTlBSZW1vdGVPYmplY3RNYXA6Om5wT2JqZWN0UHJveHlE
ZXN0cm95ZWQoTlBPYmplY3QqIG5wT2JqZWN0KQogdWludDY0X3QgTlBSZW1vdGVPYmplY3RNYXA6
OnJlZ2lzdGVyTlBPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0LCBQbHVnaW4qIHBsdWdpbikKIHsK
ICAgICB1aW50NjRfdCBucE9iamVjdElEID0gZ2VuZXJhdGVOUE9iamVjdElEKCk7Ci0gICAgbV9y
ZWdpc3RlcmVkTlBPYmplY3RzLnNldChucE9iamVjdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyPih0aGlzLCBwbHVnaW4sIG5wT2JqZWN0SUQsIG5wT2JqZWN0KS5y
ZWxlYXNlKCkpOworICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQobnBPYmplY3RJRCwgbWFr
ZVVuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcj4odGhpcywgcGx1Z2luLCBucE9iamVjdElE
LCBucE9iamVjdCkucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiBucE9iamVjdElEOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbk1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCA3YjAyYjVlMTJmMzJjNzJkMzhmNTIwNDViYjZk
NmEyM2I2MmFlMmUxLi4yNjFkN2E4OTY5MzA2YTg5MjVjNGFiMzZlNDc5NDdiMzk2YzEyNTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyBi
b29sIG1vZHVsZU1peGVzR3RrU3ltYm9scyhNb2R1bGUqIG1vZHVsZSkKIAogYm9vbCBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiB7Ci0gICAgbV9tb2R1bGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1vZHVsZT4obV9wbHVnaW5QYXRoKTsKKyAgICBtX21vZHVsZSA9IG1ha2VVbmlxdWU8TW9k
dWxlPihtX3BsdWdpblBhdGgpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IGVh
MmJlOTMwOGNiYmU2ZGQ3ZWI4Y2YyYzU4OGM4ZmY2MTllYTk5M2MuLjk1NTEzZjQ3OTgyZmQ2N2Vl
NWY5OGRkNzk5NmM4NTk4ZjFmNDYzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIEVuY29kZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gTGF5ZXJDaGFuZ2UgewogICAgICAgICBOYW1l
Q2hhbmdlZCAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxLApAQCAtOTQsNiArOTUsNyBA
QCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiB7CiAgICAgfTsKIAogICAgIHN0cnVj
dCBMYXllckNyZWF0aW9uUHJvcGVydGllcyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMoKTsKIAogICAgICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKQEAgLTEwOSw2ICsxMTEsNyBAQCBj
bGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBM
YXllclByb3BlcnRpZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIExheWVyUHJvcGVydGllcygpOwogICAgICAgICBMYXllclByb3BlcnRpZXMoY29u
c3QgTGF5ZXJQcm9wZXJ0aWVzJiBvdGhlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5tbQppbmRleCAxZjJkZTRkMDM3ZWEzZTgzMDI4N2FiOThjYjJhOGYyMWM0ZWNlYTJlLi4w
ZDIyN2ZmYzFkOWM1NTU2YWFkOTJlN2VlMTU3NjVlMTZiMzQ0MmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMoY29uc3QgTGF5
ZXJQcm9wZXJ0aQogICAgIC8vIEZJWE1FOiBMYXllclByb3BlcnRpZXMgc2hvdWxkbid0IGJlIGNv
cHlhYmxlOyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lIHNob3VsZCBjb3B5IHRoZSByZWxl
dmFudCBwcm9wZXJ0aWVzLgogCiAgICAgaWYgKG90aGVyLnRyYW5zZm9ybSkKLSAgICAgICAgdHJh
bnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
Km90aGVyLnRyYW5zZm9ybSk7CisgICAgICAgIHRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOwogCiAgICAgaWYgKG90
aGVyLnN1YmxheWVyVHJhbnNmb3JtKQotICAgICAgICBzdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXll
clRyYW5zZm9ybSk7CisgICAgICAgIHN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKIAog
ICAgIGlmIChvdGhlci5maWx0ZXJzKQotICAgICAgICBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7CisgICAgICAgIGZp
bHRlcnMgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0
ZXJzKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0
aWVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtMzU0LDcgKzM1NCw3
IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
cmFuc2Zvcm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAg
cmVzdWx0LnRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg+KHRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC50cmFuc2Zvcm0gPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOwogICAgIH0KIAog
ICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBTdWJsYXllclRyYW5zZm9ybUNoYW5n
ZWQpIHsKQEAgLTM2Miw3ICszNjIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICByZXN1bHQuc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1
bHQuc3VibGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4Pih0cmFuc2Zvcm0pOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3Bl
cnRpZXMgJiBIaWRkZW5DaGFuZ2VkKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJvdW5kZWRSZWN0KSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJlc3VsdC5zaGFwZVJv
dW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Pihy
b3VuZGVkUmVjdCk7CisgICAgICAgIHJlc3VsdC5zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAgfQogCiAgICAg
aWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIFNoYXBlUGF0aENoYW5nZWQpIHsKQEAgLTQ3
MSw3ICs0NzEsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaGFzRnJvbnRCdWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAoaGFzRnJvbnRCdWZmZXIpIHsKLSAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3Jl
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7Cisg
ICAgICAgICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU+KG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqYmFj
a2luZ1N0b3JlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAK
QEAgLTQ4Niw3ICs0ODYsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXll
clByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgfQogCiAgICAg
aWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEZpbHRlcnNDaGFuZ2VkKSB7Ci0gICAgICAg
IGF1dG8gZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
cz4oKTsKKyAgICAgICAgYXV0byBmaWx0ZXJzID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpmaWx0ZXJzKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0LmZpbHRlcnMgPSBXVEZNb3Zl
KGZpbHRlcnMpOwpAQCAtNjAyLDcgKzYwMiw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVyVHJlZVRyCiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGllcz4gbGF5ZXJQ
cm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVydGllcyA9IG1ha2VV
bmlxdWU8TGF5ZXJQcm9wZXJ0aWVzPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCps
YXllclByb3BlcnRpZXMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggOTc4
YzRiYmVkN2I1Y2Q5MWNhYWVjMTU0YmM4YmExNGJhYjc1MzQ2MS4uZTgyNmEzMGIxMmUyNGVjZjQz
MGM2OWI3NmIxYTZmMjhmNWJiOThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtNTIyLDcgKzUyMiw3IEBAIGJvb2wgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc05ld1Jvb3ROb2RlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRy
ZWUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKIAogICAgIGJvb2wgaGFzQ2hh
bmdlZFByb3BlcnRpZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDaGFuZ2VkUHJvcGVy
dGllcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVC
aXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRt
YXBDYWlyby5jcHAKaW5kZXggYzczNDdjNzllNjY5MzgzNzg1ZDA1ZDIyOWU0N2I3NDdjMWYwY2E1
NS4uYjJjZDQ4NDY2NzdjZTk3ZGZhYzI4NTg0OTBjMWVhNDM0Zjk2MjkzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAt
NjAsNyArNjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gaW1hZ2UgPSBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKICAgICBSZWZQdHI8Y2Fpcm9fdD4g
Yml0bWFwQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShpbWFnZS5nZXQoKSkpOwotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxl
Qml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBk
c3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA5MmYxMDYyYjI5MGY3NzVkYjVhZTdlZDE5
NTJhOWNhODU4YWIzMTIyLi4wMTZhYmJkOTkzZTE4YTQ1YzAxYTdmMDQ5N2RjYzMxYTUzYjQzNzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogICAgIENHQ29udGV4dFRyYW5zbGF0
ZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAwLCBtX3NpemUuaGVpZ2h0KCkpOwogICAgIENHQ29u
dGV4dFNjYWxlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDEsIC0xKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihiaXRtYXBDb250ZXh0LmdldCgp
KTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxl
Qml0bWFwRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJp
dG1hcERpcmVjdDJELmNwcAppbmRleCA2MGY4ZjNjYjczMjg5YjZiMGQyZjRjMzUxNDZmMWNmZWQ0
MDM0YTgwLi4xMDAxZWUzZTUyOTJlZGNiNTM2ZjgyMzMwM2MyYzc0YzJiMWU5Mjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIG1fYml0bWFwID0g
Y3JlYXRlRGlyZWN0MkRTdXJmYWNlKCk7CiAgICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBi
aXRtYXBDb250ZXh0ID0gRGlyZWN0MkQ6OmNyZWF0ZVJlbmRlclRhcmdldEZyb21XSUNCaXRtYXAo
bV9iaXRtYXAuZ2V0KCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29u
dGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENv
bnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0Lmdl
dCgpKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVu
dC5oCmluZGV4IDI5OTU4MTA5NWRkMWQxYjE1YWZlYWJiNGRhY2JlZDA1ZDJiZGQxMTQuLjU0NWE3
YmU0ZDQ4MTk3MTMyOGQxYzNmNzlkMjcxZWQ5YTIxZjgzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaApAQCAtMzUsNiArMzUsNyBA
QCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBBdXRvbWF0
aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5BdXRvbWF0aW9uQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKaW5kZXggMjhm
YWY2ODcxOWE5ZDcyOGQ1MWI2Yzc3MmQ4NGUxN2I2NDkwOTdjYS4uMmFlMmE1MDM0YzNhNDE3MWNj
ZjQ3N2I5Nzg1YjczYTZmMjRkYjgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcg
QEAgZW51bSBBdXRvbWF0aW9uU2Vzc2lvbkJyb3dzaW5nQ29udGV4dE9wdGlvbnMgOiB1aW50MTZf
dCB7CiB9OwogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBKYXZhU2NyaXB0RGlhbG9n
VHlwZSB7CiAgICAgICAgIEFsZXJ0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBhZjEwOWMxZGY2NzAwZGMyM2UyZTMzMWIw
YjUwZWZiY2ZmNDI4NjY3Li44MTZmNzFlMTI2NzBjYjNkNjViMWU2MzI4MDNhNmI0MGVmN2RiZmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVD
bGllbnQuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2Ug
QVBJIHsKIAogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQuaAppbmRleCAwZjhjYWI5NzMyOWYwOTU3ZjMyYjQ3YzI3Nzgx
ZDFlNzg2ZmExNDdkLi44YjQ0YTNmNDU2YzUzMmFkMzM4MDZlZjY5YjQ3ZWFkMDk0MWRmN2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgfkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCmlu
ZGV4IDkyYjJkNjc1ZGZjYTJjYWZkYTIxMWIzZjcxYzU3OThhZmQ0NWQ2MmEuLmI0ZTJhZGU3Mjll
YTY2ZDhkZGE4ZGQ1MDIxMThhZTRhYmRiMjE4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRGljdGlvbmFyeTsKIAogY2xhc3MgRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKaW5kZXggMDIz
NzZlMWUxMTBkNDc2ZWIyYjkxODVlNGUyZmNkOGQ2ZTEzMzJlMS4uYjJlYWNjOWI4MzI1OThiMTdh
OTlkYmQ5ZDY3ZWYyNGU0NzNhZWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgZW51bSBjbGFzcyBBbGxv
d092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBEb3dubG9h
ZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RG93bmxvYWRDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElGaW5kQ2xpZW50LmgKaW5kZXggZjMxMjNhZjE5NTE2NWE2NjlkNjY2ODMxOGI4MTJlOTMz
NjVlNmRjMi4uNmQxZTNiMjExZmUwZGQ5NWE5NDg1MDU4NDE3ZGI0ZGUwODI0MGQ2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCkBAIC0zOSw2ICszOSw3
IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5kQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5GaW5kQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZpbmRNYXRjaGVzQ2xpZW50LmgKaW5kZXggYzZmNDU3MzQyZDExMTkwMWRjYTZkM2MzMDkw
MzM3ZmVlN2ExZmVjMi4uZmFlMWRjZDNjZDY4ODM1MDdlZmJlM2Q5NWQ1ZDZmNzJhMDM2OWRlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xp
ZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQ
SSB7CiAKIGNsYXNzIEZpbmRNYXRjaGVzQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaW5kTWF0Y2hlc0NsaWVudCgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaAppbmRleCA1YjBjNmNj
YTI0ZWVmYzFhOTU4MTkxZTBlMjc5NGE0N2I0ZjU0ZTdjLi5mMGNhMDYwMTExOTgwMmVkMzY5YjRk
MDc4ZDgzYzg2MmE1MTYxMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRm9ybUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
b3JtQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmpl
Y3Q7CiAKIGNsYXNzIEZvcm1DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkZvcm1DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKaW5kZXggMTM3NTUyOWNk
YTI1ZjI1Y2JiMTc5YmRjODk4OTE3MWM4OWVlODg1Ny4uODk3NGNkMTMzOTQ3NzUwMjczZjQ1MGYw
ZTgzOTZjMGU2YjEzMjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZ1bGxzY3JlZW5DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRnVsbHNjcmVlbkNsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGdWxsc2NyZWVuQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBB
UElUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xv
Y2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2Nh
dGlvblByb3ZpZGVyLmgKaW5kZXggNTI2NmJjMmNhNTRjZjA5OWMyMzhjYWNjNjIxNDRjOTc5OWEw
OTc5Ny4uN2M2ZjU2MjljYjYwZTUzYmM3Yjg1YWE4ODg5ZjcyZTY4ZDdhNGMyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5o
CkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OwogbmFt
ZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uUHJvdmlk
ZXIoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmNwcAppbmRleCA5ODFhOTg1YmJkZTVmMWNiNjVmOTZjYmIyMTM5ZmJjZjE5ZDdk
Y2U1Li5lMTIyZWUzZWRiMWM0MjE5ZDFkODQxOTkzMjFhODAwM2Q1MmM4MjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKE9i
c2VydmVyJiBvYnNlcnZlcikKIAogICAgIEFTU0VSVCghbV9vYnNlcnZlZENvb2tpZU1hbmFnZXJQ
cm94eSk7CiAKLSAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRoaXMpOworICAgIG1fY29v
a2llTWFuYWdlclByb3h5T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEFQSVdlYkNvb2tpZU1hbmFnZXJQ
cm94eU9ic2VydmVyPigqdGhpcyk7CiAKICAgICBhdXRvKiBwb29sID0gbV9vd25pbmdEYXRhU3Rv
cmUtPnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKaW5kZXggZmNmNDYwNjFm
NmJmYTZkY2I3NjBlMTJjNjYzM2I2YjQ1ZjE1NmRkNC4uMTE4NGFhNDMyYzNiOWZmY2IxNWRhNWY4
MjhlZjRhYzRmMWFkYjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhpc3RvcnlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SGlzdG9yeUNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0
YVN0b3JlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEhpc3RvcnlDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkhpc3RvcnlDbGll
bnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUlj
b25EYXRhYmFzZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25E
YXRhYmFzZUNsaWVudC5oCmluZGV4IGVhOWViYTUwZTFlZmU4ZjAzMjFjNGRmZTNhNDQ2ZjBkY2Ji
NWQ4YzkuLmJlNDNhZWVjNTRmZjJkNGFiYjVhMjhmZjM2MzE0NWM0OTBjN2U4NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgK
QEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogbmFtZXNwYWNlIEFQSSB7
CiAKIGNsYXNzIEljb25EYXRhYmFzZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkRhdGFiYXNlQ2xpZW50KCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgK
aW5kZXggNmY5ZTdhZjljOTgwOTIzM2I2YTU2NWVjM2UzODBiZTBhYWNkNTY3ZS4uMmZlMzg2MjU5
NDYzYmZiMzYyM2ViYmRiNGZlZjVmODM5MzZiMGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAg
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJY29uTG9hZGlu
Z0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SWNvbkxvYWRpbmdDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCBjMzVlN2IzYWU0
OTNkOWFjNjNjYjNhNGI1ODFmZTMyZmNiNDBhY2U4Li45ZDQzNDg5YTJkNjI1N2NiMGNhZjkyMmIz
ZmIwOTMyOTVjZTliYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBXZWJQ
cm9jZXNzUG9vbDsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
SW5qZWN0ZWRCdW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgK
aW5kZXggY2JiOWUwYTk3MTQ1YmQxN2RkZWY4ZTBiYjE0YWY4YzM3NmRmYjM4OC4uZGI1ZDkwYzMx
ZjkyNzY5ZDMwM2EwMWFkNzhiZGE3ZmJkMWE0ZDAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgK
QEAgLTM4LDYgKzM4LDcgQEAgc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiBuYW1lc3Bh
Y2UgQVBJIHsKIAogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElM
b2FkZXJDbGllbnQuaAppbmRleCAzNDhkNmJmNzcyOTI3MmU4ZjJhYmFlYzM3NTVjMjBkZTU0MmQ2
NDVkLi5iMmVhNDFkOWUyZjJlODFlMmM5ZWIzYjg3NzkxZmMzZWY4YzNmMGRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCkBAIC01Myw2ICs1Myw3
IEBAIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIExvYWRlckNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
TG9hZGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkm
LCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggYTZlMDE5Y2M0NTE4
NjNhNDFhY2ZjOGJlYTdiZjMwMjg5NmIxYmI3My4uY2QyMmEyNjc2NDY4ZDE4MjM0YTYwODQyZmU5
ZDkxNjcxYjIwYTg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oCkBAIC03Myw2ICs3Myw3IEBAIGNsYXNzIE5hdmlnYXRpb25SZXNw
b25zZTsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TmF2aWdhdGlvbkNs
aWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xp
ZW50LmgKaW5kZXggNWViZTQ0MDc0MmE3NjU0MWIxZDljY2YyOTk1YzlhOTVmZTg0ZDVhZC4uNmFl
OGU3NTIwNWZmZmM4NjUyZjRmOWI4M2JiM2RlMzBlZTZjZmFmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaApAQCAtNDcsNiArNDcsNyBAQCBuYW1l
c3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgUG9saWN5Q2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Qb2xpY3lDbGll
bnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJ
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRl
eCBkOWRkMGRiNDY2Mzc3MjJiNjAyYjIwZGRkZjY3MzgxMzVmNjQ2ZjYyLi43NzJkYTZlNWE4Njk3
N2VjOGFlMmRjMDc1NDJkOGZjZjFlMTQ5NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaApAQCAtNzEsNiArNzEsNyBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0
ZXJzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFVJQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5VSUNsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBk
MGViMzFhZTE2OTAwNTc3MmE2YmVjMTQzN2MyYjQzMGQwY2I0ZTZkLi5iMzI0YTI0MDRmYzAwYWU3
OTg0NGZlZjkwN2QwNzBlMWQwMzAwNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBXS0NvbnRleHRTZXRDbGll
bnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIHdr
Q2wKIAogdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiB3a0Ns
aWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYkNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OldlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5
Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2xp
ZW50QmFzZSogd2tDbGllbnQpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXS0NvbnRleHRTZXRI
aXN0b3J5Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRIaXN0
b3J5Q2wKICAgICB9OwogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wg
PSAqV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZik7Ci0gICAgcHJvY2Vzc1Bvb2wuc2V0SGlzdG9y
eUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcnlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
cHJvY2Vzc1Bvb2wuc2V0SGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEhpc3RvcnlDbGllbnQ+KHdr
Q2xpZW50KSk7CiAKICAgICBib29sIGFkZHNWaXNpdGVkTGlua3MgPSBwcm9jZXNzUG9vbC5oaXN0
b3J5Q2xpZW50KCkuYWRkc1Zpc2l0ZWRMaW5rcygpOwogCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9p
ZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29u
c3QgV0tDb250ZXh0RG93bmxvYWQKICAgICAgICAgfQogICAgIH07CiAKLSAgICBXZWJLaXQ6OnRv
SW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3du
bG9hZENsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+
c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVudD4od2tDbGllbnQpKTsK
IH0KIAogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFu
YWdlci5jcHAKaW5kZXggMTFiODM0YjRlZTJhOWE2ODc2MjZjNzMyYmY1OGE0ODgyM2Y2MzM0YS4u
ODg4Yjc1YmM3Y2VjODlkMTZlMDdmNjE3ZTdiYjJjZTI5NzlmYTYyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApA
QCAtNDAsNyArNDAsNyBAQCBXS1R5cGVJRCBXS0dlb2xvY2F0aW9uTWFuYWdlckdldFR5cGVJRCgp
CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihXS0dlb2xvY2F0aW9uTWFu
YWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYsIGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRl
ckJhc2UqIHdrUHJvdmlkZXIpCiB7Ci0gICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZikt
PnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQ
cm92aWRlcikpOworICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQcm92aWRl
cihtYWtlVW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAog
dm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV0tHZW9s
b2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBXS0dlb2xvY2F0aW9uUG9z
aXRpb25SZWYgcG9zaXRpb25SZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCBiMjIzZDZmODdiZmE1ZTk2
ZTNlNTBkYTJkZDc4ZmYwZDJkZDQxNmNlLi43NjkyMzk5MGFiNWI5ZWEyMTM4NWYxZDM1NjllOGI1
MGFhN2Y2NWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tO
b3RpZmljYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJTZXRQcm92aWRlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgY29uc3Qg
V0tOb3RpZmljYXRpb25Qcm92aWRlckJhc2UqIHdrUHJvdmlkZXIpCiB7Ci0gICAgdG9JbXBsKG1h
bmFnZXJSZWYpLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyPih3a1Byb3ZpZGVyKSk7CisgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5zZXRQcm92aWRl
cihtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAK
IHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25J
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDQ3ZWM3MjZi
MGNlNDQwNTdmMDAyYjU0MGJlYTc2OGU0M2IxMGE4ZDQuLjYxYTY5YjFmM2E2ZGE3NDk2YWQ0NzI2
OTcwYjg1ZjJjOTExODEzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcApAQCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsCiAgICAgICAg
IH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250ZXh0TWVudUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNs
aWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAg
IFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBAIC05NTcsNyArOTU3LDcgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNv
bnRleHRNZW51Q2wKIAogdm9pZCBXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50QmFz
ZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4o
d2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50KG1ha2VVbmlxdWU8V2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVudCkp
OwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC05OTUsNyArOTk1LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlRmluZENsaWVudEJhc2UqIHdrQ2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwo
cGFnZVJlZiktPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5kQ2xpZW50Pih3a0Ns
aWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPEZp
bmRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVz
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJh
c2UqIHdrQ2xpZW50KQpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmlu
ZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVz
Q2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRNYXRj
aGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZE1hdGNoZXNDbGllbnQ+KHdrQ2xpZW50KSk7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEZp
bmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VJbmplY3RlZEJ1CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZvcm1DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0
b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJGb3JtQ2xp
ZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNsaWVudChtYWtl
VW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFn
ZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50
QmFzZSogd2tDbGllbnQpCkBAIC0xMTk5LDcgKzExOTksNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJh
c2UqCiAKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSA9IHRvSW1wbChwYWdlUmVmKTsK
IAotICAgIGF1dG8gbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJDbGllbnQ+
KHdrQ2xpZW50KTsKKyAgICBhdXRvIGxvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8TG9hZGVyQ2xp
ZW50Pih3a0NsaWVudCk7CiAKICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGdldCByaWQgb2Yg
dGhpcyBjb2RlIGFuZCB0cmFuc2l0aW9uIGFsbCBjbGllbnRzIHRvIHVzaW5nIGRpZExheW91dCBp
bnN0ZWFkIG9mCiAgICAgLy8gZGlkRmlyc3RMYXlvdXRJbkZyYW1lIGFuZCBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lLiBJbiB0aGUgbWVhbnRpbWUsIHRoaXMgaXMgcmVxdWly
ZWQKQEAgLTEyODEsNyArMTI4MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAg
fQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvbGljeUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFBvbGljeUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZikt
PnNldFBvbGljeUNsaWVudChtYWtlVW5pcXVlPFBvbGljeUNsaWVudD4od2tDbGllbnQpKTsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMDc1LDcgKzIwNzUsNyBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNl
KiB3a0NsaWVudAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7
CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTIyOTMs
MTY0ICsyMjkzLDE2NiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgIHdlYlBhZ2VQcm94
eS0+c2V0TmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPE5hdmlnYXRpb25DbGllbnQ+KHdr
Q2xpZW50KSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBw
YWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKLXsKLSAgICBjbGFzcyBTdGF0ZUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBw
dWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgU3RhdGVDbGllbnQoY29uc3QgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKLSAgICAgICAgfQotICAg
IHByaXZhdGU6Ci0gICAgICAgIHZvaWQgd2lsbENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZykK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
SXNMb2FkaW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KK2NsYXNzIFN0
YXRlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZVN0YXRlQ2xpZW50QmFz
ZT4sIHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3RhdGVDbGllbnQoY29uc3QgV0tQYWdl
U3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCisgICAgeworICAgICAgICBpbml0aWFsaXplKGNsaWVu
dCk7CisgICAgfQorcHJpdmF0ZToKKyAgICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5n
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hh
bmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZykKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZVRpdGxl
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlVGl0bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAg
ICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1f
Y2xpZW50LndpbGxDaGFuZ2VUaXRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9j
bGllbnQud2lsbENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQog
Ci0gICAgICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVRpdGxlKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVRpdGxlKG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUFjdGl2ZVVS
TCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZUFjdGl2ZVVSTCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2Ns
aWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAg
ICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VB
Y3RpdmVVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0K
KyAgICB2b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2Vj
dXJlQ29udGVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxD
aGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNv
bnRlbnQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlT
ZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlk
Q2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dy
ZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxs
Q2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VF
c3RpbWF0ZWRQcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRl
ZFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50
LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRl
ZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZv
aWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjaykKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2so
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29C
YWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2Fu
R29CYWNrKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQg
ZGlkQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2spCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUNhbkdvQmFjaygpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjaykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5n
ZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9j
bGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29G
b3J3YXJkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
Q2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAg
IHZvaWQgZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUNh
bkdvRm9yd2FyZCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZUNhbkdvRm9yd2FyZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQog
Ci0gICAgICAgIHZvaWQgd2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3
b3JrUmVxdWVzdHNJblByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3Jr
UmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hh
bmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VO
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAg
ICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVz
dHNJblByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRD
aGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRp
ZmljYXRlSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNh
dGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQg
ZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZv
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5n
ZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNp
dmUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxD
aGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlV2Vi
UHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNS
ZXNwb25zaXZlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lk
IGRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNw
b25zaXZlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQg
ZGlkU3dhcFdlYlByb2Nlc3NlcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcykKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICB9OworICAgIHZvaWQgZGlkU3dhcFdlYlByb2Nl
c3NlcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN3YXBXZWJQ
cm9jZXNzZXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZFN3YXBX
ZWJQcm9jZXNzZXMobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9Cit9OworCit2b2lk
IFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGll
bnRCYXNlKiBjbGllbnQpCit7CiAgICAgaWYgKGNsaWVudCkKLSAgICAgICAgdG9JbXBsKHBhZ2Up
LT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjptYWtlX3VuaXF1ZTxTdGF0ZUNsaWVudD4o
Y2xpZW50KSk7CisgICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVy
KG1ha2VVbmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOwogICAgIGVsc2UKICAgICAgICAgdG9J
bXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobnVsbHB0cik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1t
CmluZGV4IGY3NjNhZjYwMDNkYTQ2NjczNjMxZTkxZWE4MWI4M2I1Yzk3YTA4N2QuLjM1ZWY5MjIx
NTRlMTk2MzAwZTRiNmVlNzVkNGM5ODE3ODViYzNlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCkBAIC01Miw3ICs1
Miw3IEBAIC0gKGlkKWluaXRXaXRoUGFnZTooUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiYm
KXBhZ2UKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIF9wYWdlID0gV1RGTW92ZShwYWdlKTsK
LSAgICBfb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9i
c2VydmVyPihzZWxmLCBAIlVSTCIpOworICAgIF9vYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYsIEAiVVJMIik7CiAgICAgX3BhZ2UtPnBhZ2VM
b2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqX29ic2VydmVyKTsKIAogICAgIHJldHVybiBzZWxmOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcAppbmRleCA3OGJi
YTM5NjdiNjE5N2MwZThhN2MyM2FjM2RhOGNkMTMyZTdjNGJlLi45NjQwNmQwYWFmYmMzNTU1NjBi
NWQzMTk3YTAwYzI1ZjU3NTlhM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy93cGUvV0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy93cGUvV0tWaWV3LmNwcApAQCAtNjgsNSArNjgsNSBAQCB2b2lkIFdLVmlld1NldFZpZXdDbGll
bnQoV0tWaWV3UmVmIHZpZXcsIGNvbnN0IFdLVmlld0NsaWVudEJhc2UqIGNsaWVudCkKICAgICAg
ICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwodmlldyktPnNldENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFZpZXdDbGllbnQ+KGNsaWVudCkpOworICAgIHRvSW1wbCh2aWV3KS0+c2V0Q2xpZW50KG1h
a2VVbmlxdWU8Vmlld0NsaWVudD4oY2xpZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlci5tbQppbmRleCAyNjU1NTRmM2Q3ZjJkN2FkMjk2ZTlmM2Y5ZmExMTM4OGI3OGZkNTY0Li40
OTY3Nzg4YTEwNTdmYTg4MmEwYTAxYzhkYmY1MDAyZTkyMjZlYzAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIubW0KQEAgLTYwMiw3ICs2MDIsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2lu
aXRXaXRoUGFnZVJlZjooV0tQYWdlUmVmKXBhZ2VSZWYKIAogICAgIF9wYWdlID0gV2ViS2l0Ojp0
b0ltcGwocGFnZVJlZik7CiAKLSAgICBfcGFnZUxvYWRTdGF0ZU9ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZik7CisgICAgX3BhZ2VM
b2FkU3RhdGVPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2
ZXI+KHNlbGYpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKl9wYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIpOwogCiAgICAgQVNTRVJUKCFicm93c2luZ0NvbnRleHRDb250cm9s
bGVyTWFwKCkuY29udGFpbnMoX3BhZ2UuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCAxMzcyY2E0
MTA2Yzc2ZTFkNjIzNWQ2MTRhZDVjMWU2YTU2ZWEwNWExLi44MWQzNzAzYjBlZWE4MmU1ZTZjNjJm
MzIyMmFjNGU2ODE5ZjZiM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgLSAo
dm9pZClhZGRPYnNlcnZlcjooaWQ8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4pb2JzZXJ2ZXIK
ICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxXS0hUVFBDb29raWVTdG9yZU9i
c2VydmVyPihvYnNlcnZlcik7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIpOwogICAgIF9jb29raWVTdG9y
ZS0+cmVnaXN0ZXJPYnNlcnZlcigqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5k
ZXggYmFjZTVhYzdlYzAwYjE4OThhZDJkZjcyY2IxYjE5NDQ2N2RjZWM5ZC4uZWJhYzU2OGUzZGRi
Njg3MGY4NWIwMTUwOGVjMjBmYWFiN2YyMDRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTM3Myw3ICszNzMsNyBAQCAt
IChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pX2Rvd25sb2FkRGVsZWdhdGUKIC0gKHZvaWQpX3Nl
dERvd25sb2FkRGVsZWdhdGU6KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilkb3dubG9hZERlbGVn
YXRlCiB7CiAgICAgX2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlOwotICAgIF9w
cm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRv
d25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRE
b3dubG9hZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2Fk
RGVsZWdhdGUpKTsKIH0KIAogLSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRp
b25EZWxlZ2F0ZQpAQCAtMzg0LDcgKzM4NCw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdh
dGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKIC0gKHZvaWQpX3NldEF1dG9tYXRpb25EZWxlZ2F0ZToo
aWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pYXV0b21hdGlvbkRlbGVnYXRlCiB7CiAgICAgX2F1
dG9tYXRpb25EZWxlZ2F0ZSA9IGF1dG9tYXRpb25EZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wt
PnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25D
bGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0
QXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2Vs
ZiwgYXV0b21hdGlvbkRlbGVnYXRlKSk7CiB9CiAKIC0gKHZvaWQpX3dhcm1Jbml0aWFsUHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDhiNmRmMjRmODk1MmQ4NGY2MDc1NDRjNmEz
MWEyZGQxYjhhYTM1NWQuLmEwMGIyMDNjYzkwNTkzMDFiZWNjNDYxZDYxYjQ2NzMyYjg1NjEyZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTExOCw2ICsxMTgsNyBAQCAtICh2b2lkKXJl
bW92ZUFsbENvbnRlbnRSdWxlTGlzdHMKIH0KIAogY2xhc3MgU2NyaXB0TWVzc2FnZUhhbmRsZXJE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlw
dE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGUoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xs
ZXIsIGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyLCBOU1N0cmluZyAqbmFtZSkK
ICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKQEAgLTE0NSw3ICsxNDYsNyBAQCBw
cml2YXRlOgogCiAtICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNTdHJpbmcgKiluYW1l
CiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2Vs
Ziwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29y
bGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVs
ZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2Vy
Q29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQog
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiQXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVA
JyB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KQEAgLTIyOSw3ICsyMzAsNyBA
QCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHNBc3NvY2lhdGVkV2l0aFVzZXJDb250
ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50VwogCiAtICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5h
bWU6KE5TU3RyaW5nICopbmFtZSB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxk
ICopdXNlckNvbnRlbnRXb3JsZAogewotICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VI
YW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwg
KnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBhdXRvIGhhbmRsZXIg
PSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3Jp
cHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFt
ZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiAgICAgaWYg
KCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxl
cihoYW5kbGVyLmdldCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNzYWdlIGhh
bmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFtZV07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCAwMzkxYTE5OTJlMzUzMmRiZTVmMjFkYjY5MWRkODEwOGFhZTJhNjZjLi4wOGY0MmVjOGIxM2Jm
NzBiZDJiNmIzN2JjN2Q4MTU2ODIzZDZjNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTc1Nyw3ICs3NTcsNyBAQCAtICh2b2lkKV9p
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfaW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2ws
IHBhZ2VDb25maWd1cmF0aW9uLmNvcHlSZWYoKSk7CisgICAgX2ltcGwgPSBtYWtlVW5pcXVlPFdl
YktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJh
dGlvbi5jb3B5UmVmKCkpOwogICAgIF9wYWdlID0gJl9pbXBsLT5wYWdlKCk7CiAKICAgICBfaW1w
bC0+c2V0QXV0b21hdGljYWxseUFkanVzdHNDb250ZW50SW5zZXRzKHRydWUpOwpAQCAtNzY5LDE0
ICs3NjksMTQgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogCiAgICAgX3BhZ2UtPnNldEFwcGxpY2F0
aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQoY29uZmlndXJhdGlvbi5fYXBwbGljYXRpb25OYW1l
Rm9yRGVza3RvcFVzZXJBZ2VudCk7CiAKLSAgICBfbmF2aWdhdGlvblN0YXRlID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7CisgICAgX25hdmlnYXRpb25T
dGF0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNlbGYpOwogICAgIF9w
YWdlLT5zZXROYXZpZ2F0aW9uQ2xpZW50KF9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZU5hdmlnYXRp
b25DbGllbnQoKSk7CiAKLSAgICBfdWlEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpVSURlbGVnYXRlPihzZWxmKTsKLSAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6RmluZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXREaWFnbm9z
dGljTG9nZ2luZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ+KHNlbGYpKTsKKyAgICBfdWlEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpV
SURlbGVnYXRlPihzZWxmKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdl
YktpdDo6RmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXREaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHNlbGYp
KTsKIAotICAgIF9pY29uTG9hZGluZ0RlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
Okljb25Mb2FkaW5nRGVsZWdhdGU+KHNlbGYpOworICAgIF9pY29uTG9hZGluZ0RlbGVnYXRlID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+KHNlbGYpOwogCiAgICAgX3Vz
ZVBsYXRmb3JtRmluZFVJID0gWUVTOwogCkBAIC0zNDI1LDcgKzM0MjUsNyBAQCAtICh2b2lkKXNl
dEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3
YXJkTmF2aWdhdGlvbgogICAgIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9
IGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOwogCiAgICAgaWYgKGFsbG93c0Jh
Y2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzICYmICFfZ2VzdHVyZUNvbnRyb2xsZXIpIHsKLSAg
ICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcj4oKl9wYWdlKTsKKyAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKl9wYWdlKTsKICAgICAg
ICAgX2dlc3R1cmVDb250cm9sbGVyLT5pbnN0YWxsU3dpcGVIYW5kbGVyKHNlbGYsIFtzZWxmIHNj
cm9sbFZpZXddKTsKICAgICAgICAgaWYgKFdLV2ViVmlldyAqYWx0ZXJuYXRlV2ViVmlldyA9IFtf
Y29uZmlndXJhdGlvbiBfYWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0dXJlc10pCiAg
ICAgICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPnNldEFsdGVybmF0ZUJhY2tGb3J3YXJkTGlz
dFNvdXJjZVBhZ2UoYWx0ZXJuYXRlV2ViVmlldy0+X3BhZ2UuZ2V0KCkpOwpAQCAtNTY3OCw3ICs1
Njc4LDcgQEAgLSAodm9pZClfc2V0SW5wdXREZWxlZ2F0ZTooaWQgPF9XS0lucHV0RGVsZWdhdGU+
KWlucHV0RGVsZWdhdGUKICAgICB9OwogCiAgICAgaWYgKGlucHV0RGVsZWdhdGUpCi0gICAgICAg
IF9wYWdlLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikp
OworICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNl
bGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50KG51bGxwdHIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9t
YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1
dG9tYXRpb25TZXNzaW9uLm1tCmluZGV4IDdhZDA3M2I4Y2Q2ZGQ0MjAzZTFhNzYwNThmN2M3ZGYy
YTlmOGFkN2IuLjJhZGVlYTc2MGM2OThiMThhZTU5MWU1NzA1NzEzMjk1ZjI0YzU2ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21h
dGlvblNlc3Npb24ubW0KQEAgLTcyLDcgKzcyLDcgQEAgLSAoaWQgPF9XS0F1dG9tYXRpb25TZXNz
aW9uRGVsZWdhdGU+KWRlbGVnYXRlCiAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8X1dLQXV0b21h
dGlvblNlc3Npb25EZWxlZ2F0ZT4pZGVsZWdhdGUKIHsKICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKLSAgICBfc2Vzc2lvbi0+c2V0Q2xpZW50KGRlbGVnYXRlID8gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihkZWxlZ2F0ZSkgOiBudWxscHRyKTsKKyAg
ICBfc2Vzc2lvbi0+c2V0Q2xpZW50KGRlbGVnYXRlID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50PihkZWxlZ2F0ZSkgOiBudWxscHRyKTsKIH0KIAogLSAoTlNTdHJp
bmcgKilzZXNzaW9uSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCmluZGV4IGIzN2IwNTA1M2YxMjRhY2I3MGZkNmFkZTZkZjQyMGZlODI1ZDU0
Y2YuLjBkZDQwOWE0M2RlNjUzMDBjOWYwY2M4NTQ0N2FjMmY3MTNlYzk0OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTM4LDYgKzM4LDcgQEAg
QGVuZAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIF9XS1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5Q2xpZW50IGZpbmFsIDogcHVibGljIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBfV0tSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudChfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAq
Y29udHJvbGxlcikKICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKQEAgLTc1LDcg
Kzc2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IG1fcmVtb3RlSW5zcGVjdG9yUHJveHkgPSBXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5
OjpjcmVhdGUoKTsKLSAgICBtX3JlbW90ZUluc3BlY3RvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudD4oc2VsZik7CisgICAg
bV9yZW1vdGVJbnNwZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlDbGllbnQ+KHNlbGYpOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHkt
PnNldENsaWVudChtX3JlbW90ZUluc3BlY3RvckNsaWVudC5nZXQoKSk7CiAKICAgICByZXR1cm4g
c2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwCmluZGV4IDhkMmY4OGFlMDAzMmEwZDkzNDVlNjgwMGE5Nzg1OGI0MjhhNGQ2ZDkuLjA2
ODcwZDIxZGVlN2NhNGY4OWRiOWUzNDJmNmYwZjVmZDNmNTRhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMTY5MSw3ICsx
NjkxLDcgQEAgaW5saW5lIHZvaWQgcmVhZHlTUUxpdGVTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRy
PFNRTGl0ZVN0YXRlbWVudD4mIHN0YXRlbWVudCwgU1EKICAgICAgICAgc3RhdGVtZW50ID0gbnVs
bHB0cjsKICAgICB9CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKLSAgICAgICAgc3RhdGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KGRiLCBzdHIpOworICAgICAgICBzdGF0
ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oZGIsIHN0cik7CiAgICAgICAgIGlm
IChzdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBMT0dfRVJS
T1IoIlByZXBhcmluZyBzdGF0ZW1lbnQgJXMgZmFpbGVkIiwgc3RyLmFzY2lpKCkuZGF0YSgpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5oCmluZGV4IGJhYmQ4YTk4MjlmYjgwZDE5ODUyZWM5NzRhZWVhNzBjZWUwYjkxNTguLjhhOGNh
YmJkNTNjMWU2NWY3MGFkZDA4NWQ0ZjU1ZWEzMTAxMTYwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw2ICs0NCw3IEBAIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJY29uRGF0YWJh
c2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgpID0gZGVmYXVsdDsKIApAQCAtNTgsNiArNTksNyBA
QCBjbGFzcyBJY29uRGF0YWJhc2UgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25TbmFwc2hv
dCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAg
ICAgSWNvblNuYXBzaG90KCkgPSBkZWZhdWx0OwogCkBAIC0xMTgsNiArMTIwLDcgQEAgY2xhc3Mg
SWNvbkRhdGFiYXNlIHsKICAgICB9OwogCiAgICAgY2xhc3MgUGFnZVVSTFNuYXBzaG90IHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBQYWdl
VVJMU25hcHNob3QoKSA9IGRlZmF1bHQ7CiAKQEAgLTE3Miw2ICsxNzUsNyBAQCBjbGFzcyBJY29u
RGF0YWJhc2UgewogICAgIH07CiAKICAgICBjbGFzcyBNYWluVGhyZWFkTm90aWZpZXIgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIE1haW5U
aHJlYWROb3RpZmllcigpCiAgICAgICAgICAgICA6IG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmTWFpblRocmVhZE5vdGlmaWVyOjp0aW1lckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
Y3BwCmluZGV4IGQyYWY2NGJhZDg2YThhMzNmMTMzNTQ3MjU4MWI3MDJlNDFhNjdlYzIuLjIxODY2
MDQ1MTkyNzY5YmU2ZGZmODU5YTYzMjA0M2Q1MTM1NjljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxd
ID0geyAwLCB9OwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQogCiBjbGFzcyBBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lv
bikKICAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKQEAgLTIyMyw3ICsyMjQsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVj
dCkKIAogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21h
dGlvblNlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklk
ZW50aWZpZXIoU3RyaW5nOjpmcm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKLSAg
ICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikpOworICAgIHNlc3Npb24tPnByaXYtPnNlc3Np
b24tPnNldENsaWVudChtYWtlVW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9u
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZShHT2Jq
ZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggOTdlOTI1NjAxNzczN2I3
NjY1YWNjOGViMmYzNThlYjJlYzU5MDBiOS4uMjg1OGRmNmYzNGQ0ZmE2MjEyMDliZjFlYjFlMTA4
ODVhZDA1ZTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNTYsNiArNTYsNiBAQCBj
bGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbDogcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGll
bnQgewogCiB2b2lkIGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Q29udGV4
dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2ViVmlldykp
OworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldENvbnRleHRNZW51Q2xpZW50
KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKaW5kZXggZDMyYjU5YzU0NzY2N2E3ZWM4
NzcxODEwNTJiZDFhNzQ5YzBkYmMxYy4uYTM3M2IyOTQ1NzE2NzkxYTJkNGMzMDdiZDVlMGE5Mjlj
ODE0MGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCkBA
IC01Niw1ICs1Niw1IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVuCiAKIHZvaWQgYXR0YWNoQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNv
bnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQp
LnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNv
bnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQobWFrZVVuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNv
bnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlYWQ0ZjIzNDk5MTY3MDRkMTdkMWYy
MzA2NDA4OWY3YTFhMDQ1OTRmLi5lNzcxZGQ3MTg3ZTU4NTlhZGJkNWEwMTZmOGNhOTM1ZDI4ZTg0
YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRE
b3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC0xMTgsNSArMTE4LDUgQEAgY2xhc3MgRG93bmxv
YWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7CiAKIHZvaWQgYXR0
YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkK
IHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93
bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkp
OworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMTgwODNlNzY5N2E1MTM5OGYyZWUwOTRjZGIwNjhjMjA4
MzdiMWZhLi45YjU4MThhOTgzNmYzNzYyZDg5NjIyZTM2MmMzZmM4YjJkM2ViZmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRh
YmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBw
YQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKiBw
cml2ID0gZGF0YWJhc2UtPnByaXY7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gc3RkOjptYWtl
X3VuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7
CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbWFrZVVuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Cisg
ICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJY29uRGF0
YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CiAgICAgSWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNl
Q2xlYW51cCgpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAg
ICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVy
ZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5j
cHAKaW5kZXggNGY5ODBkNGVlMjU4YWNhYzQ1NTgzMjNjYTdiZDcxY2NkZjNiZWViMS4uNzY3NWM5
Y2IzYTVlZGFmODg2NGQxN2ExNzkyMTdjYjk0MjMzNjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcApA
QCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9maW5kX2Nv
bnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAogICAgIFdlYktp
dEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxlciA9IFdFQktJVF9GSU5EX0NPTlRST0xMRVIo
b2JqZWN0KTsKLSAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKKyAgICBnZXRQYWdlKGZp
bmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4oZmluZENv
bnRyb2xsZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0RmluZENvbnRyb2xsZXJHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcGFyYW1TcGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAppbmRleCAxMzRkMWM2Y2ViZTU2N2ZjNTRkOTcwZjg3
NmJlMDI5MzFkMzI4MjJkLi5iYzY3YTM1N2RjMDc0NDVhMzUyOGY4MGYwYWJkNzlkMDdjM2JjMDRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3Jt
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
b3JtQ2xpZW50LmNwcApAQCAtNDgsNSArNDgsNSBAQCBjbGFzcyBGb3JtQ2xpZW50IGZpbmFsIDog
cHVibGljIEFQSTo6Rm9ybUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoRm9ybUNsaWVudFRvVmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZp
ZXcpLnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7
CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Rm9ybUNsaWVudChtYWtlVW5p
cXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDJlMTU5NDVkZmFkMjljMzE1NTBkMWFkM2M0ZGQxNDk4YmU3YjcyMDQuLjhjYmE0MjJlZDVl
MzhiZjg0Yzc2MDU5NGQ2Y2YwZjY1ODhjYmVhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNw
cApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdl
clN0YXJ0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlcikKICAgICB9CiAKICAgICBp
ZiAoIW1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlcikgewotICAgICAgICBtYW5hZ2VyLT5w
cml2LT5nZW9jbHVlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlv
blByb3ZpZGVyPigpOworICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBt
YWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgICAgICBtYW5hZ2Vy
LT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShtYW5hZ2VyLT5w
cml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAgICB9CiAgICAgbWFuYWdlci0+cHJpdi0+Z2Vv
Y2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9jYXRpb25Qb3NpdGlvbiYmIGNvcmVQ
b3NpdGlvbiwgT3B0aW9uYWw8Q1N0cmluZz4gZXJyb3IpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCBX
ZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZShX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcgogewogICAgIGF1dG8qIG1hbmFnZXIgPSBXRUJLSVRfR0VP
TE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFO
QUdFUiwgbnVsbHB0cikpOwogICAgIG1hbmFnZXItPnByaXYtPm1hbmFnZXIgPSBwcm94eTsKLSAg
ICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVy
PihtYW5hZ2VyKSk7CisgICAgcHJveHktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8R2VvbG9jYXRp
b25Qcm92aWRlcj4obWFuYWdlcikpOwogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9h
ZGluZ0NsaWVudC5jcHAKaW5kZXggYjhmMDFmYjI0ZmYyNzY1NGMwYWQ2MDlhZGQzMjQxOTVlZTQx
Y2E1OS4uNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2RlYjI1ZmRhYTI3ZjY2YzUyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25M
b2FkaW5nQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0Ns
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgSWNvbkxvYWRpbmdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykKQEAgLTYxLDUgKzYyLDUgQEAgY2xhc3MgSWNvbkxvYWRpbmdDbGll
bnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CiAKIHZvaWQgYXR0YWNoSWNvbkxv
YWRpbmdDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRX
ZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBh
Z2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0Ns
aWVudD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGE5
M2ZmMjViMzlhMjkyNTYwMGQyYzRhZWNjZWNiYzc1NzBkNWRmM2QuLjkyNjJhODRkZWNlMjViZjBi
ZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAK
QEAgLTE3OSw1ICsxNzksNSBAQCBjbGFzcyBXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5h
bCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hJbmpl
Y3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQog
ewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluamVjdGVkQnVuZGxlQ2xp
ZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdl
YkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5qZWN0
ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcAppbmRleCAyMzZlODFjMTM5MGIzZWMzYzE1NDkxODY4NmJhZmE1ZTUzODY0Njg3Li41NTE2
MzY0NDc3NTU3NDdiNzBhYzVlNzZiMWQxMDRkNjFjMGI1Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
OjpXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJvCiAg
ICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobm90aWZpY2F0aW9uTWFuYWdlcikKIHsKICAgICBB
U1NFUlQobV9ub3RpZmljYXRpb25NYW5hZ2VyKTsKLSAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXIt
PnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlz
KSk7CisgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPE5v
dGlmaWNhdGlvblByb3ZpZGVyPigqdGhpcykpOwogfQogCiBXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcjo6fldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5oCmluZGV4IDllNThiY2IwYjFhYjMzZmFhZDk3ZmNmODU5ODEyN2U2MTBhMTIzMzYuLjM2Yjc4
MzQzODgwZDk2MDMwZTcyZmZhYTE1Mzc0OGVlNWIxZTNhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXIuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkqLCBXZWJLaXRXZWJDb250ZXh0Kik7
CiAgICAgfldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggNWJjZWY2OGY2
NWQyMzE4OTgwY2Y5MWRhZTU5M2Q3NjY3MTQ4YTk4OS4uODk2ZTEzZGFkOTdiZTdmZjc3NmMwM2Jm
NmU3ZDAyNzgyZTAzMjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMjI1LDYgKzIyNSw2IEBAIGNsYXNzIFVJQ2xp
ZW50IDogcHVibGljIEFQSTo6VUlDbGllbnQgewogCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2Vi
Vmlldykuc2V0VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxVSUNsaWVudD4od2ViVmlldykpOwor
ICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8
VUlDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKaW5kZXgg
NDhiMzhlYWMwOGQ5MTJjOTYzOWVmNTUwOTRiMTBmMWZmYWQxZDlmOS4uMjU1ZThlNWE2NzkyNzY0
ODMzZDM3ZGFmZjlmNTc5MGYwODU5NjY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBA
IC0xODIsNiArMTgyLDcgQEAgdm9pZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3Zl
X2FsbF9zY3JpcHRzKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWEKIH0KIAogY2xhc3MgU2Ny
aXB0TWVzc2FnZUNsaWVudEd0ayBmaW5hbCA6IHB1YmxpYyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
cjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
Y3JpcHRNZXNzYWdlQ2xpZW50R3RrKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdlciwg
Y29uc3QgY2hhciogaGFuZGxlck5hbWUpCiAgICAgICAgIDogbV9oYW5kbGVyTmFtZShnX3F1YXJr
X2Zyb21fc3RyaW5nKGhhbmRsZXJOYW1lKSkKQEAgLTIzOCw3ICsyMzksNyBAQCBnYm9vbGVhbiB3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxl
cihXZWJLaXRVc2VyQwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIEZBTFNFKTsKIAog
ICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdl
Q2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpV
c2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFn
ZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6
Om5vcm1hbFdvcmxkKCkpOwogICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0K
IApAQCAtMjg4LDcgKzI4OSw3IEBAIGdib29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyX2luX3dvcmxkKFdlCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwod29ybGROYW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwg
bmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29y
bGROYW1lKSk7CisgICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVu
aXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9t
VVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1
cm4gbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggYWQ4M2RiODIz
ZDM3ZDIwZjUxM2IwMTIzY2UyNzRhMmJiZjQ3MTc4Mi4uOGM2ODk4Mjk1MzlmNDIyMzhiMzA3ZjU1
NTYwOGE1YzUwMDJkY2Y0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBzdGF0aWMg
Z3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKIGNsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQgZmluYWwgOiBJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50KFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIDogbV93ZWJDb250ZXh0KGNvbnRleHQpCkBAIC0z
NjcsOSArMzY4LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXR0
YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogCiAg
ICAgcHJpdi0+Z2VvbG9jYXRpb25NYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9u
TWFuYWdlckNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eT4oKSkpOwotICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bv
b2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250ZXh0
KTsKKyAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8V2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7CiAjaWYgUExBVEZPUk0oR1RLKSAm
JiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcj4od2ViQ29udGV4dCk7CisgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyID0gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+KHdlYkNvbnRl
eHQpOwogI2VuZGlmCiB9CiAKQEAgLTY3OCw3ICs2NzksNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGdi
b29sZQogICAgICAgICAgICAgZ193YXJuaW5nKCJOb3QgZW5hYmxpbmcgYXV0b21hdGlvbiBvbiBX
ZWJLaXRXZWJDb250ZXh0IGJlY2F1c2UgdGhlcmUncyBhbm90aGVyIGNvbnRleHQgd2l0aCBhdXRv
bWF0aW9uIGVuYWJsZWQsIG9ubHkgb25lIGlzIGFsbG93ZWQiKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKKyAgICAg
ICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0QXV0
b21hdGlvbkNsaWVudD4oY29udGV4dCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbnRleHQtPnBy
aXYtPmF1dG9tYXRpb25DbGllbnQgPSBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGIyMzlhYzRl
MTllNjNkMzNhODY5ZGVmYjY2ZmMzYzBiNDUwMGI3ODUuLjc0MzBjM2ZjZmQ1NGM0NmVmYTY0ZTEy
ZmQ5N2RlNWE5MzI5OGE0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMDEsNiArMjAxLDcgQEAgY2xhc3MgUGFnZUxv
YWRTdGF0ZU9ic2VydmVyOwogI2lmIFBMQVRGT1JNKFdQRSkKIHN0YXRpYyB1bnNpZ25lZCBmcmFt
ZURpc3BsYXlDYWxsYmFja0lEOwogc3RydWN0IEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sgeworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBGcmFtZURpc3BsYXllZENhbGxi
YWNrKFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJE
YXRhID0gbnVsbHB0ciwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveU5vdGlmeUZ1bmN0aW9uID0gbnVs
bHB0cikKICAgICAgICAgOiBpZCgrK2ZyYW1lRGlzcGxheUNhbGxiYWNrSUQpCiAgICAgICAgICwg
Y2FsbGJhY2soY2FsbGJhY2spCkBAIC0yMjcsNiArMjI4LDcgQEAgc3RydWN0IEZyYW1lRGlzcGxh
eWVkQ2FsbGJhY2sgewogI2VuZGlmIC8vIFBMQVRGT1JNKFdQRSkKIAogc3RydWN0IF9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IH5fV2ViS2l0V2ViVmlld1ByaXZhdGUoKQogICAgIHsKICAgICAgICAgLy8gRm9yIG1vZGFsIGRp
YWxvZ3MsIG1ha2Ugc3VyZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5n
IHRoZSB3ZWJWaWV3LgpAQCAtMzI2LDYgKzMyOCw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0lzUGxh
eWluZ0F1ZGlvQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogfQogCiBjbGFzcyBQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQpAQCAtMzk5LDYgKzQwMiw3IEBAIGNsYXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlciBm
aW5hbCA6IHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAKICNpZiBQTEFURk9STShX
UEUpCiBjbGFzcyBXZWJWaWV3Q2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Vmlld0NsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
Vmlld0NsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQpAQCAtNzI1LDcgKzcyOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25z
dHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFn
ZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmlldywgcHJpdi0+dXNlckNvbnRl
bnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7CiAKLSAgICBwcml2LT5sb2FkT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7
CisgICAgcHJpdi0+bG9hZE9ic2VydmVyID0gbWFrZVVuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2
ZXI+KHdlYlZpZXcpOwogICAgIGdldFBhZ2Uod2ViVmlldykucGFnZUxvYWRTdGF0ZSgpLmFkZE9i
c2VydmVyKCpwcml2LT5sb2FkT2JzZXJ2ZXIpOwogCiAgICAgLy8gVGhlIHJlbGF0ZWQgdmlldyBp
cyBvbmx5IHZhbGlkIGR1cmluZyB0aGUgY29uc3RydWN0aW9uLgpAQCAtNzQxLDcgKzc0NSw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBwcml2LT52aWV3LT5zZXRDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJWaWV3Q2xpZW50Pih3ZWJWaWV3KSk7CisgICAgcHJpdi0+dmlldy0+
c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmlldykpOwogI2VuZGlmCiAK
ICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGFmdGVyIGF0dGFjaFVJQ2xpZW50VG9WaWV3KCkgYmVj
YXVzZSBXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KCkgY2FsbHMgc2V0Q2FuUnVuTW9kYWwoKSB3
aXRoIHRydWUuCkBAIC0zNzAxLDYgKzM3MDUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
Y2FuX3Nob3dfbWltZV90eXBlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqCiB9
CiAKIHN0cnVjdCBWaWV3U2F2ZUFzeW5jRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkRhdGE7CiAgICAgR1JlZlB0cjxH
RmlsZT4gZmlsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGYwOWQ2YzdlOTIwNjgzYTc1NjY1Mjc2OTY3ZTc0N2Nj
NmNlZWI0ODEuLjA2YjNiODM2MDY1ZDlmNjZhMDc5OGEyMDk1NTEzY2E4NjhiMzFjNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CkBAIC02NSw3ICs2NSw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChHdGtXaWRn
ZXQqIHZpZXdXaWRnZXQpCiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwog
c3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVE
cmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQp
KSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVX
X0JBU0UobV92aWV3V2lkZ2V0KSksIHByb2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29z
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29z
ZXIuY3BwCmluZGV4IDMxZTA5NzNmZTEwMDNjNmVhNjUyMzA2MWE2N2M5NDlkNTNlYmQ2YjcuLjJk
MWMyY2IzNjhhOTkzMzE2OTc0MjQ2YTBlZDU5OWMyOGRjYWU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKQEAg
LTUxOSw3ICs1MTksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2pp
U2VjdGlvbnMoV2ViS2l0RW1vamlDaG9vc2VyKiBjaG9vc2VyLCBHdAogICAgICAgICBjaG9vc2Vy
LT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBudWxscHRyOwogICAgIH07CiAKLSAgICBj
aG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrVGltZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOworICAgIGNob29zZXItPnBy
aXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9IG1ha2VVbmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RG
TW92ZShwb3B1bGF0ZVNlY3Rpb25zKSk7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0
aW9uc1RpbWVyLT5zZXRQcmlvcml0eShHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAgICAgY2hv
b3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zZXROYW1lKCJbV2ViS2l0RW1vamlD
aG9vc2VyXSBwb3B1bGF0ZSBzZWN0aW9ucyB0aW1lciIpOwogICAgIGNob29zZXItPnByaXYtPnBv
cHVsYXRlU2VjdGlvbnNUaW1lci0+c3RhcnRSZXBlYXRpbmcoeyB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCAwZjY3NDg2NDUyY2QxZmE4N2E4
Mjg2MmU3ZTYwNTczNGRmYzM1OTY4Li41YmE2MTBlN2Q5YTQ0ZDA0NzM4MzgxZTIzZDA0MGJkYTky
YzNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgU2NyaXB0TWVzc2FnZUNsaWVudChSZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXImIGluc3BlY3RvclByb3RvY29sSGFuZGxlcikKICAgICAgICAgOiBtX2luc3BlY3Rv
clByb3RvY29sSGFuZGxlcihpbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIpCkBAIC0xMDUsMTMgKzEw
NiwxMyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVz
dChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFu
YWdlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7
CiAgICAgYXV0byB1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdl
cnMuYWRkKHVzZXJDb250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJl
c3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50Pigq
dGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkp
OworICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICAgICAgd2Via2l0VXNlckNv
bnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5h
Z2VyKS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogICAgICAg
ICBnX29iamVjdF93ZWFrX3JlZihHX09CSkVDVCh1c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVy
cHJldF9jYXN0PEdXZWFrTm90aWZ5Pih1c2VyQ29udGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlz
KTsKICAgICB9CiAKICAgICBhdXRvKiBjbGllbnQgPSBtX2luc3BlY3RvckNsaWVudHMuZW5zdXJl
KHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgW3RoaXMsICZyZXF1ZXN0VVJMXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVS
TC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVl
c3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0
aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKICAgICBHU3RyaW5nKiBodG1s
ID0gZ19zdHJpbmdfbmV3KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCmluZGV4IDBmMDE3MTFlNzk2MWU4YjAwYzVlNTc0
ZDI4ODUwZDA1YjI0MWY2ZWMuLjgwZDIwYWE3NjAzYmFkYWI5MDBmZTRiZDE1OTBhYWQzOWIzMGUy
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
SW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkluc3BlY3Rvci5jcHAKQEAgLTI4NCw2ICsyODQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX2luc3BlY3Rvcl9jbGFzc19pbml0KFdlYktpdFdlYkluc3BlY3RvckNsYXNzKiBmaW5kQ2xh
c3MpCiB9CiAKIGNsYXNzIFdlYktpdEluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViS2l0SW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYkluc3BlY3Rv
ciogaW5zcGVjdG9yKQogICAgICAgICA6IG1faW5zcGVjdG9yKGluc3BlY3RvcikKQEAgLTM2MCw3
ICszNjEsNyBAQCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYmtpdFdlYkluc3BlY3RvckNyZWF0ZShX
ZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yKQogewogICAgIFdlYktpdFdlYkluc3BlY3Rv
ciogaW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQRUNUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9JTlNQRUNUT1IsIE5VTEwpKTsKICAgICBpbnNwZWN0b3ItPnByaXYtPndlYkluc3Bl
Y3RvciA9IHdlYkluc3BlY3RvcjsKLSAgICB3ZWJJbnNwZWN0b3ItPnNldENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdEluc3BlY3RvckNsaWVudD4oaW5zcGVjdG9yKSk7CisgICAgd2ViSW5z
cGVjdG9yLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3Bl
Y3RvcikpOwogICAgIHJldHVybiBpbnNwZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggMWI5ZGQ4
ZDFmNDYwMjE0ZjVhNzcyNjcyYzJmYjY1MzcwYjUyMGM1ZS4uODhiM2NmNDNiZmU2OGVlOTdjNzMx
Yjc2NGQ0NDk5MGE3YmZjNWE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTU2Niw3ICs1NjYsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVs
cGVyOjpzaW5nbGV0b24oKS50YXJnZXRMaXN0KCkpOwogCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uob2JqZWN0KS0+cHJpdjsKLSAgICBw
cml2LT5wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlld1dp
ZGdldCk7CisgICAgcHJpdi0+cGFnZUNsaWVudCA9IG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+
KHZpZXdXaWRnZXQpOwogICAgIHByaXYtPmRpYWxvZyA9IG51bGxwdHI7CiB9CiAKQEAgLTEyMjAs
NyArMTIyMCw3IEBAIEdlc3R1cmVDb250cm9sbGVyJiB3ZWJraXRXZWJWaWV3QmFzZUdlc3R1cmVD
b250cm9sbGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3CiB7CiAgICAgV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5n
ZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdlc3R1cmVDb250cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwg
c3RkOjptYWtlX3VuaXF1ZTxUb3VjaEdlc3R1cmVDb250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwor
ICAgICAgICBwcml2LT5nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8R2VzdHVyZUNvbnRy
b2xsZXI+KEdUS19XSURHRVQod2ViVmlld0Jhc2UpLCBtYWtlVW5pcXVlPFRvdWNoR2VzdHVyZUNv
bnRyb2xsZXI+KHdlYlZpZXdCYXNlKSk7CiAgICAgcmV0dXJuICpwcml2LT5nZXN0dXJlQ29udHJv
bGxlcjsKIH0KIApAQCAtMTUwMSw3ICsxNTAxLDcgQEAgRHJhZ0FuZERyb3BIYW5kbGVyJiB3ZWJr
aXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmkK
IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJp
djsKICAgICBpZiAoIXByaXYtPmRyYWdBbmREcm9wSGFuZGxlcikKLSAgICAgICAgcHJpdi0+ZHJh
Z0FuZERyb3BIYW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpw
cml2LT5wYWdlUHJveHkpOworICAgICAgICBwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIgPSBtYWtl
VW5pcXVlPERyYWdBbmREcm9wSGFuZGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgcmV0dXJu
ICpwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXI7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQ
UE9SVCkKQEAgLTE3MTMsNyArMTcxMyw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxh
dW5jaFdlYlByb2Nlc3MoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlCiAgICAg
aWYgKHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlcikKICAgICAgICAgcHJpdi0+dmlld0dlc3R1
cmVDb250cm9sbGVyLT5jb25uZWN0VG9Qcm9jZXNzKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBy
aXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3
R2VzdHVyZUNvbnRyb2xsZXI+KCpwcml2LT5wYWdlUHJveHkpOworICAgICAgICBwcml2LT52aWV3
R2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9s
bGVyPigqcHJpdi0+cGFnZVByb3h5KTsKICAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9s
bGVyLT5zZXRTd2lwZUdlc3R1cmVFbmFibGVkKHByaXYtPmlzQmFja0ZvcndhcmROYXZpZ2F0aW9u
R2VzdHVyZUVuYWJsZWQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0KaW5kZXggMmNhYjJlMDUzODZkNDJiMzcxZjQ0MDZhYjcxYTdmNjU5MzBmN2Q3
Ny4uMTQ2MDNkNWFmZWJhZjZkZWUwMTE5Nzk1NzcwMzg4MzQ5ZDRlN2IzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTg5NSw2ICs4OTUsNyBAQCAtICh2
b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiB7CiAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1Ymxp
YyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChXS1Zp
ZXcgKndrVmlldykKICAgICAgICAgICAgIDogbV93a1ZpZXcod2tWaWV3KQpAQCAtOTMyLDcgKzkz
Myw3IEBAIC0gKHZvaWQpbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnQKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIGlmIChbc2VsZiByZXNwb25kc1RvU2Vs
ZWN0b3I6SWNvbkxvYWRpbmdDbGllbnQ6OmRlbGVnYXRlU2VsZWN0b3IoKV0pCi0gICAgICAgIF9k
YXRhLT5faW1wbC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
SWNvbkxvYWRpbmdDbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCku
c2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oc2VsZikp
OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nl
c3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9u
OihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uCkBAIC05NDQsNyAr
OTQ1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9j
ZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYKICAgICBXZWJLaXQ6OkluaXRpYWxpemVX
ZWJLaXQyKCk7CiAKICAgICBfZGF0YSA9IFtbV0tWaWV3RGF0YSBhbGxvY10gaW5pdF07Ci0gICAg
X2RhdGEtPl9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxm
LCBudWxscHRyLCBwcm9jZXNzUG9vbCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgX2Rh
dGEtPl9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBudWxscHRy
LCBwcm9jZXNzUG9vbCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAKICAgICBbc2VsZiBtYXli
ZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmgKaW5kZXggMjE5OTFmOGRhZjMxYjQxYjE1NjVmZmY5
ODY1ZGU5OTM4ZmI4YTBkZi4uNjRjYTJmY2I1YTg1MTI3ZjViNDE0NzFlY2U2ZWE4ZjQ0NmNlMDUx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50
LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgVmlldzsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFz
cyBWaWV3Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5WaWV3Q2xpZW50KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDg1MTI5YTU0ODdj
OWZmYmVkNTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3NTg4NTczZGZmNDM2MDMz
NzdlZjhkMTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6OlZpZXcmIHZpZXcpCiAg
ICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fc2Nyb2xsR2Vz
dHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKIHsK
IH0KIApAQCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6Omhv
c3RGaWxlRGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcucGFn
ZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlz
cGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDljOWY2
ZTllM2IxOGI0MmY1M2Y3MmY4ZWI1NWE0ZTY3NTVkYjQ3YTIuLjNmNjMyNTEyMWQ4MjhlMzU4YWQx
NWI3NmM0ZDVjZGM0ODM3NWRjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgKQEAgLTMwLDYgKzMwLDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTY3JvbGxHZXN0dXJlQ29udHJvbGxlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2Nyb2xsR2VzdHVy
ZUNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dQRVZpZXcuY3BwCmluZGV4IGJlNTBmMTI3NGU4YzFmYTQ5MTA5YWEyODU1YjhiYjQxNTcx
NzA0NGYuLjEyZTMyZmFkNDAwMjhjNzdlNTcwMzA5Mjg0OTg0NDBkMDMwY2UwNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAtNDIsOCArNDIsOCBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogbmFtZXNwYWNlIFdLV1BFIHsKIAogVmlldzo6Vmll
dyhzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZCwgY29uc3QgQVBJOjpQYWdlQ29uZmln
dXJhdGlvbiYgYmFzZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2NsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6Vmlld0NsaWVudD4oKSkKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisgICAgOiBtX2NsaWVudChtYWtlVW5pcXVlPEFQ
STo6Vmlld0NsaWVudD4oKSkKKyAgICAsIG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDbGll
bnRJbXBsPigqdGhpcykpCiAgICAgLCBtX3NpemUgeyA4MDAsIDYwMCB9CiAgICAgLCBtX3ZpZXdT
dGF0ZUZsYWdzIHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUsIFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNW
aXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93IH0KICAgICAsIG1fYmFj
a2VuZChiYWNrZW5kKQpAQCAtMTg0LDcgKzE4NCw3IEBAIFZpZXc6On5WaWV3KCkKIHZvaWQgVmll
dzo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlZpZXdDbGllbnQ+JiYgY2xpZW50KQog
ewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpWaWV3Q2xpZW50PigpOworICAgICAgICBtX2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpW
aWV3Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVu
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQ
RVF0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmll
dy5jcHAKaW5kZXggZTFkYzg1N2ZmOTk1ZWQwY2U2YTg1MzY1OWNjNWIxMzU2MWNiMzY2Yy4uYjRm
MjdiNmQzNGUyNDJiYTU1MzVhYjViMmU0ZWNlNTMxNWQwOWQzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcApAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRMb2FkRXZlbnQgZXZlbnQsCiAKICAgICBpZiAoc3RhdHVzU2V0KSB7CiAgICAg
ICAgIFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUodmlldy0+
dXJsKCksIGxvYWRTdGF0dXMsICIiKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmll
d0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3TG9h
ZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxX
UEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xv
YWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgICAgICBRX0VNSVQgdmlldy0+bG9h
ZGluZ0NoYW5nZWQobG9hZFJlcXVlc3QuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTE2Niw3ICsxNjYs
NyBAQCB2b2lkIFdQRVF0Vmlldzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0CiAgICAgICAgIGxvYWRTdGF0dXMgPSBXUEVRdFZp
ZXc6OkxvYWRTdGF0dXM6OkxvYWRGYWlsZWRTdGF0dXM7CiAKICAgICBXUEVRdFZpZXdMb2FkUmVx
dWVzdFByaXZhdGUgbG9hZFJlcXVlc3RQcml2YXRlKFFVcmwoUVN0cmluZyhmYWlsaW5nVVJJKSks
IGxvYWRTdGF0dXMsIGVycm9yLT5tZXNzYWdlKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRW
aWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdM
b2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BF
UXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxXUEVRdFZpZXdMb2Fk
UmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKICAgICBRX0VNSVQgdmlldy0+bG9hZGluZ0No
YW5nZWQobG9hZFJlcXVlc3QuZ2V0KCkpOwogfQogCkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGlj
IHZvaWQganNBc3luY1JlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIKICovCiB2b2lkIFdQRVF0Vmlldzo6cnVuSmF2YVNjcmlwdChjb25z
dCBRU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFFKU1ZhbHVlJiBjYWxsYmFjaykKIHsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4oY2FsbGJhY2ssIFFQb2ludGVyPFdQRVF0Vmlldz4o
dGhpcykpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRh
ID0gbWFrZVVuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8
V1BFUXRWaWV3Pih0aGlzKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KG1f
d2ViVmlldy5nZXQoKSwgc2NyaXB0LnRvVXRmOCgpLmNvbnN0RGF0YSgpLCBudWxscHRyLCBqc0Fz
eW5jUmVhZHlDYWxsYmFjaywgZGF0YS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcAppbmRl
eCBhODUyNmNlZDAyMGY2MzQ0ZTcyZmJjYzNhYTQ0OWMyZGQzYWJkMWY5Li4xM2ZkMzdhZWZmMmI2
NTM1ZDU0ZjMxNGM0MTZlMWNiODY4ZTNlODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0JhY2tlbmQ+IFdQRVF0Vmlld0JhY2tlbmQ6
OmNyZWF0ZShjb25zdCBRU2l6ZUYmIHNpemUsIFEKICAgICBpZiAoIWVnbENvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRW
aWV3QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxheSwgZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFUXRWaWV3QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxh
eSwgZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7CiB9CiAKIFdQRVF0Vmlld0JhY2tlbmQ6OldQ
RVF0Vmlld0JhY2tlbmQoY29uc3QgUVNpemVGJiBzaXplLCBFR0xEaXNwbGF5IGRpc3BsYXksIEVH
TENvbnRleHQgZWdsQ29udGV4dCwgUVBvaW50ZXI8UU9wZW5HTENvbnRleHQ+IGNvbnRleHQsIFFQ
b2ludGVyPFdQRVF0Vmlldz4gdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCmluZGV4IDQyMDhlOGYyMmUwYWE0ZWRkODViNTIyNTkw
NGMyZGM0OTliMDVlOTYuLjk0OTM3YjAwMTk0NjI1MzYyZjY0NGNhNzcwNTA4ZDBkYWE2NzQzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFj
a2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXIuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIFVJVmlldzsKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBBcHBsaWNhdGlvblN0YXRlVHJhY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyKFVJVmlldyAqLCBTRUwg
ZGlkRW50ZXJCYWNrZ3JvdW5kU2VsZWN0b3IsIFNFTCBkaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRl
ckVudGVyaW5nQmFja2dyb3VuZFNlbGVjdG9yLCBTRUwgd2lsbEVudGVyRm9yZWdyb3VuZFNlbGVj
dG9yKTsKICAgICB+QXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKaW5kZXggZTMzNTQzYjdiZGExZDU5M2YzMDQ1M2FlNGQ2OWJmMjVkZTc0MGNiZS4uYWI5ZDQ4
NDNmZjc1MDM4OTIxNzM0YWNlMzQ0MWYxZDE1NzU4MDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKQEAgLTczLDExICs3MywxMSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0UGFnZUxv
YWRUaW1lb3V0ID0gMzAwX3M7CiBzdGF0aWMgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSBkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDsKIAog
V2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRpb25TZXNzaW9uKCkKLSAgICA6IG1fY2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkKKyAg
ICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkK
ICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRS
b3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZG9tYWluRGlzcGF0Y2hlcihBdXRvbWF0aW9uQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2JhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAs
IG1fZG9tYWluTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNw
YXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZG9tYWluTm90aWZpZXIobWFrZVVu
aXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fbG9hZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYkF1dG9tYXRpb25TZXNz
aW9uOjpsb2FkVGltZXJGaXJlZCkKIHsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApp
bmRleCA2YjA5YmFkYjhkMGNlYmFiZjJjNjlmNjAwOWIxYmQxZDIzYzA5ZTU4Li41M2IzNzcwN2U4
N2M1MWRjNGFlOWQ2MzliMWQ0ZjMyNjM4MDY4YjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNl
aXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNv
ZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92
ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKaW5kZXggMTBhOGU0MjQxM2Iy
OWFmZmI2Mzc3ZDg0YTA5YmU1MTFiZDI1MWQ1Yy4uZGU0MGZjOGYzMTc2OTc1YjE1MmM0ZWZhYTQw
MTU3Yzk0ZjJmYTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJs
aWMgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoaWQg
PF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCmluZGV4IGIwMTFkZDNhNzIz
OTczMjA1Y2M2ZGY0Y2M2NmE2NzkwNmMwMjliMGQuLjA3NDM3OTA0ZjFlNDIzMGIzMTU4MmE5ZGY0
MmMyM2MxNGQ2MDVhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0ljb25Mb2FkaW5nRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0RlbGVnYXRlKFdLV2Vi
VmlldyAqKTsKICAgICB+SWNvbkxvYWRpbmdEZWxlZ2F0ZSgpOwpAQCAtNDgsNiArNDksNyBAQCBj
bGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlIHsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBJY29uTG9h
ZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJY29u
TG9hZGluZ0NsaWVudChJY29uTG9hZGluZ0RlbGVnYXRlJik7CiAgICAgICAgIH5JY29uTG9hZGlu
Z0NsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25M
b2FkaW5nRGVsZWdhdGUubW0KaW5kZXggYTM0NGRmZjljZTBkNTM1Y2EzMGRiMmJlYjViY2JkN2Mw
ZDc0Y2ZiNC4uMTYzZmI5NTJlZTBlYTliNzFhM2Q0OWQzZGQ5N2NlMDA0M2NjNjhmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRl
Lm1tCkBAIC00NCw3ICs0NCw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6On5JY29uTG9hZGluZ0Rl
bGVnYXRlKCkKIAogc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+IEljb25M
b2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oKnRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CiB9CiAKIFJldGFpblB0cjxpZCA8
X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4gPiBJY29uTG9hZGluZ0RlbGVnYXRlOjpkZWxlZ2F0ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBhNTFh
MjIzNjIzODQxNTFhYjExZDQ4OTQzNjlmOGExODU4MDA2N2RhLi5mNTEzN2Y5Y2M3MzE2Mzg4ZTYx
ZGUxMDc3M2ZmMzQyODU2MjUwNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW0KQEAgLTc4LDEzICs3OCwxMyBAQCBVSURlbGVnYXRlOjp+VUlEZWxlZ2F0
ZSgpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250
ZXh0TWVudUNsaWVudD4gVUlEZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVDbGllbnQoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50PigqdGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKIH0KICNlbmRp
ZgogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4gVUlEZWxlZ2F0ZTo6Y3JlYXRlVUlD
bGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50PigqdGhpcyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRy
PGlkIDxXS1VJRGVsZWdhdGU+ID4gVUlEZWxlZ2F0ZTo6ZGVsZWdhdGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmNwcAppbmRleCA0OGMyYjJiNGUwNjEwNjkyNzJhZWI4Yjk0YTIzNGVhYTkyNmFm
NzZkLi45MWNmOTQ4MGM3NTE4Y2Q5YmIxN2U5ZmNhNGU5MTZkMGIwNzNiMDhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmNwcApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpTb3VyY2VQcm94eSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZl
ciwgcHVibGljIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNvdXJjZVByb3h5KHVpbnQ2NF90IGlkLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmIHNvdXJjZSkKICAgICAgICAgOiBtX2lkKGlkKQpAQCAtMTY4LDcgKzE2OSw3IEBAIHZvaWQg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJl
RGV2aWNlV2l0aENvbnN0cmFpCiAgICAgICAgIHNvdXJjZS0+c2V0SXNSZW1vdGUodHJ1ZSk7CiAg
ICAgICAgIHNldHRpbmdzID0gc291cmNlLT5zZXR0aW5ncygpOwogICAgICAgICBBU1NFUlQoIW1f
cHJveGllcy5jb250YWlucyhpZCkpOwotICAgICAgICBtX3Byb3hpZXMuYWRkKGlkLCBzdGQ6Om1h
a2VfdW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1v
dmUoc291cmNlKSkpOworICAgICAgICBtX3Byb3hpZXMuYWRkKGlkLCBtYWtlVW5pcXVlPFNvdXJj
ZVByb3h5PihpZCwgKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc291cmNlKSkpOwog
ICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29uc3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9y
RXJyb3IuZXJyb3JNZXNzYWdlKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZWVkZWQsIGlu
dmFsaWRDb25zdHJhaW50cywgV1RGTW92ZShzZXR0aW5ncykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5oCmluZGV4IDljYTZmYTM1MzQ5NjAxODAzZGY1ZDNkMWIyYWJhMzE2NTU3NDBjMzkuLjliZGRi
OTkwOWRmN2U4ZmVmMWU1NDgwNmNiZTZiYzVjNDBjZmM1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgU2hhcmVkTWVtb3J5OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OwogCiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IDogcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShXZWJQcm9j
ZXNzUHJveHkmKTsKICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
aW5kZXggMzA3MGQ1NzQ0M2ZkZjcxOTYwODYwMzBlM2U2MzE0MWUwNjc4NTgyNi4uZTVlMzJkMmZh
MmEwODYwNDE3YzZjZjgwZDdiY2U1OWI5YTczOWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0xMzUsNyArMTM1
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBpZiAo
IVtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJL
aXRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciJdKQogICAgICAgICBpbnN0YWxsTWVtb3J5
UHJlc3N1cmVIYW5kbGVyKCk7CiAKLSAgICBzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+
KCkpOworICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVl
PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CiB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0
YXJ0RGlzcGxheUxpbmsoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1bnNpZ25lZCBvYnNl
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgYXV0byBkaXNwbGF5
TGluayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpbms+KGRpc3BsYXlJRCk7CisgICAgYXV0
byBkaXNwbGF5TGluayA9IG1ha2VVbmlxdWU8RGlzcGxheUxpbms+KGRpc3BsYXlJRCk7CiAgICAg
ZGlzcGxheUxpbmstPmFkZE9ic2VydmVyKGNvbm5lY3Rpb24sIG9ic2VydmVySUQpOwogICAgIG1f
ZGlzcGxheUxpbmtzLmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlMaW5rKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmlu
ZGV4IDVjMjFjYTc1YTE4MjljNTBmMWQ4MmY1Nzc3OGI0ZTg2ZTY5ZDcwZWEuLmIxZWM4NDZiN2I0
NjA1NDhjZTBmODZkN2E1ZDExN2E2NzY3OGM0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0yMDUsNyArMjA1
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3Bl
bmRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCkKICAgICBhdXRvIGJhY2tncm91bmRBY3Rpdml0
eVRpbWVvdXRIYW5kbGVyID0gW2FjdGl2aXR5VG9rZW4gPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHk6OnBy
b2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5kIGFj
dGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdldCgpKTsKICAgICB9OwotICAgIG1fdW5leHBl
Y3RlZEFjdGl2aXR5VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVP
bmVTaG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1
bmV4cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CisgICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1l
ciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92ZShi
YWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0
aW9uKTsKICAgICBjb21wbGV0aW9uKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggY2FiMDU1MDlmYjZkMDJiYjQzZTg4ZDhk
NjU0ODlmZmI3MjJmZTgwMi4uOGRmNGRhN2IzMjA4MDk0NmRmNzFjOTI4MjE2NTNmNmVhOTQwNzU3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTEzMTUsNyArMTMxNSw3IEBAIHN0YXRpYyBOU1RyYWNraW5nQXJlYU9wdGlvbnMgdHJhY2tpbmdB
cmVhT3B0aW9ucygpCiAKIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJ
bXBsRGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViVmlldywgV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQogICAgIDogbV92aWV3KHZpZXcpCi0gICAgLCBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlldywgb3V0ZXJXZWJWaWV3KSkKKyAgICAsIG1fcGFnZUNs
aWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQogICAg
ICwgbV9wYWdlKHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSkpCiAgICAgLCBtX25lZWRzVmlld0ZyYW1lSW5XaW5kb3dDb29yZGlu
YXRlcyhtX3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1Z2luc0VuYWJsZWQoKSkKICAgICAsIG1faW50
cmluc2ljQ29udGVudFNpemUoQ0dTaXplTWFrZShOU1ZpZXdOb0ludHJpbnNpY01ldHJpYywgTlNW
aWV3Tm9JbnRyaW5zaWNNZXRyaWMpKQpAQCAtMTM1Myw3ICsxMzUzLDcgQEAgV2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmll
dyAqb3V0ZXJXZWIKICAgICB2aWV3LmxheWVyQ29udGVudHNQbGFjZW1lbnQgPSBOU1ZpZXdMYXll
ckNvbnRlbnRzUGxhY2VtZW50VG9wTGVmdDsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OkZ1bGxzY3JlZW5DbGllbnQ+KHZpZXcpKTsKKyAgICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KHZpZXcpKTsKICNlbmRpZgog
CiAgICAgV2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMTcx
MSw5ICsxNzExLDkgQEAgQ0dTaXplIFdlYlZpZXdJbXBsOjpmaXhlZExheW91dFNpemUoKSBjb25z
dAogc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4gV2ViVmlld0ltcGw6
OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewogICAg
IGlmIChbW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5
OkAiV2ViS2l0MlVzZVJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIl0gYm9vbFZhbHVlXSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk+KG1f
cGFnZSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKIH0KIAogYm9vbCBXZWJWaWV3SW1w
bDo6aXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nKCkgY29uc3QKQEAgLTMzNTYsNyArMzM1Niw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKIHZvaWQgV2ViVmlld0lt
cGw6OnNldFRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvciYgdGV4dEluZGljYXRv
ciwgV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lIGxpZmV0aW1lKQogewogICAg
IGlmICghbV90ZXh0SW5kaWNhdG9yV2luZG93KQotICAgICAgICBtX3RleHRJbmRpY2F0b3JXaW5k
b3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c+KG1fdmll
dy5nZXRBdXRvcmVsZWFzZWQoKSk7CisgICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxl
YXNlZCgpKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRl
cyA9IFtbbV92aWV3IHdpbmRvd10gY29udmVydFJlY3RUb1NjcmVlbjpbbV92aWV3IGNvbnZlcnRS
ZWN0OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygp
IHRvVmlldzpuaWxdXTsKICAgICBtX3RleHRJbmRpY2F0b3JXaW5kb3ctPnNldFRleHRJbmRpY2F0
b3IodGV4dEluZGljYXRvciwgTlNSZWN0VG9DR1JlY3QodGV4dEJvdW5kaW5nUmVjdEluU2NyZWVu
Q29vcmRpbmF0ZXMpLCBsaWZldGltZSk7CkBAIC00MzU4LDcgKzQzNTgsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSkKIFZpZXdHZXN0dXJlQ29udHJvbGxlciYgV2ViVmlld0ltcGw6OmVuc3VyZUdl
c3R1cmVDb250cm9sbGVyKCkKIHsKICAgICBpZiAoIW1fZ2VzdHVyZUNvbnRyb2xsZXIpCi0gICAg
ICAgIG1fZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlQ29u
dHJvbGxlcj4obV9wYWdlKTsKKyAgICAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOwogICAgIHJldHVybiAqbV9nZXN0dXJl
Q29udHJvbGxlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCA4ZWFjZDkxYTFlNmFlNDg1NjVjOWU1
OGNjZGExMGYzZWE0NDRjMjc2Li42MjY0ZGRiN2Y3OTBjMmZjY2NkZjQxMGRmNmUyYzkzMzdiNjVk
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUlu
Zm8mIHVwCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9iYWNraW5nU3RvcmUpCi0gICAg
ICAgIG1fYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmU+KHVwZGF0
ZUluZm8udmlld1NpemUsIHVwZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IsIG1fd2ViUGFnZVBy
b3h5KTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZT4o
dXBkYXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQ
YWdlUHJveHkpOwogCiAgICAgbV9iYWNraW5nU3RvcmUtPmluY29ycG9yYXRlVXBkYXRlKHVwZGF0
ZUluZm8pOwogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljczo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmMKICAg
ICB9CiAKICAgICBpZiAoIW1fZHJhd2luZ01vbml0b3IpCi0gICAgICAgIG1fZHJhd2luZ01vbml0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNz
OjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2RyYXdpbmdNb25p
dG9yID0gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJh
d2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsKICAgICBtX2RyYXdpbmdNb25pdG9yLT5zdGFy
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IGEyZDAzODZhY2Y1
ZDhhZDUzNWM3OTEyYTg4NmNiZDBmMDA1NDc4NjguLjZhYTI0N2JkODc3MDIxNTg4MjQ3MTZhNjY1
ZWUxYjc4Njk2YTZhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3JpZ2luPiBEZXZpY2VJZEhh
c2hTYWx0U3RvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGhh
c2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RG
TW92ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUocGFyZW50U2VjdXJpdHlP
cmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKKyAgICBhdXRv
IGhhc2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92
ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUocGFyZW50U2VjdXJpdHlPcmln
aW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAogICAgIGhhc2hT
YWx0Rm9yT3JpZ2luLT5sYXN0VGltZVVzZWQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFz
dFRpbWVVc2VkKTsKIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwoU2VjdXJpdHlPcmln
CiAKICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7
CiAKLSAgICAgICAgYXV0byBuZXdIYXNoU2FsdEZvck9yaWdpbiA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoZG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHBhcmVu
dE9yaWdpbiksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgICAgICBhdXRvIG5ld0hh
c2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShk
b2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhh
c2hTYWx0KSk7CiAKICAgICAgICAgcmV0dXJuIG5ld0hhc2hTYWx0Rm9yT3JpZ2luOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAppbmRleCA2M2E0OWI1NjdkYjhkYTUzZjU3OTlh
NTAzNDRmMzEyNTFmNWU5Njg0Li5kYzVhZGYxYTNlNGI5NGFhMDE0YjQzMGVmYTY2ZGUwOWY5NWNh
N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwCkBAIC04OCwxMSArODgsMTEgQEAgRG93bmxvYWRQcm94eSYgRG93
bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wKIAogICAgIGlmIChtX2Rvd25sb2Fkcy5zaXplKCkgPT0gMSAmJiBtX3Nob3VsZFRha2VB
c3NlcnRpb24pIHsKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkVUlBc3NlcnRpb24pOwotICAg
ICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZFVJQXNz
ZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lE
KCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29y
a2luZyk7CiAKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkTmV0d29ya2luZ0Fzc2VydGlvbik7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzcyk7Ci0gICAgICAgIG1fZG93bmxvYWRO
ZXR3b3JraW5nQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPiht
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fZG93bmxvYWROZXR3
b3JraW5nQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0
ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJVSVByb2Nlc3MgdG9vayAnV2ViS2l0IGRvd25sb2FkcycgYXNzZXJ0aW9ucyBm
b3IgVUlQcm9jZXNzIGFuZCBOZXR3b3JrUHJvY2VzcyIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCAzZGVmNWQ3OWYwN2NiOTE0MGI4MjU2
MmRiOWY2ZjJiYzZkMGY3MmY2Li41NjA2YzUxMTY1MzRmNDNjZmM4MDZkNTExZDQxZWQ5OGNmYjI1
MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC01
Miw2ICs1Miw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHJvdGVjdGVkIElQQzo6TWVzc2FnZVNlbmRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhd2luZ0FyZWFQcm94eSk7CiAKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFk
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQ
cm92aWRlci5jcHAKaW5kZXggZWNhYWMzMDFiNGJkZjQ2ZjJjODljZGRlNzFkMTkzMjU0NTE0ZjY0
MC4uZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIyM2Q1NGI5ODJhZWNmZDEwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5l
Y3RlZEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQKICAgICBmb3IgKGF1dG8q
IGdhbWVwYWQgOiBpbml0aWFsR2FtZXBhZHMpIHsKICAgICAgICAgaWYgKCFnYW1lcGFkKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOworICAgICAgICBtX2dhbWVw
YWRzW2dhbWVwYWQtPmluZGV4KCldID0gbWFrZVVuaXF1ZTxVSUdhbWVwYWQ+KCpnYW1lcGFkKTsK
ICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHBvb2wgOiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBh
ZHMpCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1H
YW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCkKICAgICAgICAgbV9nYW1l
cGFkcy5ncm93KGdhbWVwYWQuaW5kZXgoKSArIDEpOwogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRz
W2dhbWVwYWQuaW5kZXgoKV0pOwotICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IHN0
ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVw
YWQuaW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oZ2FtZXBhZCk7CiAKICAgICBzY2hl
ZHVsZUdhbWVwYWRTdGF0ZVN5bmMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKaW5kZXgg
N2Q1NmIwYTI0NjNkZWRmMTY2OTU4YzI4ZmZiNzVhYTBlMmNlNTFmMS4uZTZiYzBhNDUwNTY1ZWUy
ZWZhMWJkMDVhMmE3NTYxMTFhMTVkOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCkBA
IC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7
CiAKIGNsYXNzIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIaWdoUGVyZm9ybWFu
Y2VHcmFwaGljc1VzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCA5NGZhZjZiOWRlMjYyMDFkODRkMjZmZjgzOTMzZjgyMjljMDVkNmI5Li4yNzdjYTA0NGU0
MDdiMDdiYzRhZjU4ZjIyMjE3Y2I2YjY4NDI4YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2NCw3
ICsxNjQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVBcHBJc0JhY2tn
cm91bmQoYm9vbCBiYWNrZ3JvdW5kKQogRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKIHsKICAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKLSAgICAgICAgbV9kb3dubG9h
ZFByb3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7Cisg
ICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IG1ha2VVbmlxdWU8RG93bmxvYWRQcm94eU1hcD4o
KnRoaXMpOwogCiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQ
cm94eShtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOwogfQpAQCAtMTIxMSw3ICsxMjEx
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
dGFrZVVwbG9hZEFzc2VydGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX3VwbG9hZEFzc2VydGlvbik7
Ci0gICAgbV91cGxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3Rh
dGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIG1fdXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVu
aXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9h
ZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhclVwbG9hZEFzc2VydGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IDQzMzU0NWMwZTMzZmFhZWVkOWRlYmIzNGY2YjIwY2ZjYWU1ZTk1YzguLjU5NWIzZWU0MTVjZGY3
MDQ2MDljNTM2YzkwYWJhMjU5NzE3ZDQ2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC03MCw2ICs3MCw3IEBA
IGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Owogc3RydWN0IFdlYnNpdGVEYXRh
OwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVBy
b2Nlc3NQcm94eSwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApp
bmRleCAyYWFmZjFlYzJhNjU0OTBkODg1NDM5OTZiZjgxMDJjMmQ0OWM1MDQyLi40N2EzZTliMjNi
YTEyNjUxOThiNjBlZGRmNmM0ZGQ5ODZmY2QyMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuY3BwCkBAIC01NiwxNCArNTYsMTQgQEAgUmVmPFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJv
Y2Vzc1AKIAogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1
cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKSkKKyAgICAsIG1fcHJvdmlkZXIobWFrZVVuaXF1
ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQogewogfQogCiB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZp
Y2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7CiAgICAgaWYgKCFwcm92aWRlcikgewotICAg
ICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3Zp
ZGVyPigpOworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlv
blByb3ZpZGVyPigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKaW5kZXggZWM2NGJjOWUxNjJjYjdjYTFlNzUzN2U5MzMxZDRmMTM5NTg3
ZWM0MS4uNmNmNWUxNGVhNTY5ZjIzZGE4NDc1NDA5NmNhNTExNDUzYzI5OGI5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHVzaW5nIExheWVy
SG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwogI2VuZGlmCiAKIGNsYXNzIFBhZ2VDbGllbnQg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZUNsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VDbGllbnQoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVz
YWdlU2FtcGxlci5oCmluZGV4IDAxYTdkYTdiODkxYTkwMDY2YzkwZTg0MjljNjU2YmQ3MDBiMTY2
YmQuLmVhNDM5MjdkNDhkNzUyYmViNjcyODA5NDk5YzlhZDBiZmUwN2JjNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2w7CiAKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB+UGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3Bw
CmluZGV4IGY2ZjQ3OWIxZTAzOTJmMzIyMTYwYTY0OTRhZWM2MmUwYTA2Nzk2ZGQuLjg0MzY5ZDMz
NDQwN2NmYmMyZTgzYWE4MjdjNWNjMGU1ZGI5MTIyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRm
b3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGEKICNpZiBQ
TEFURk9STShHVEspCiBzdGF0aWMgYm9vbCBwbHVnaW5SZXF1aXJlc0d0azIoY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IHN0
ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TW9kdWxlPiBtb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0aCk7CiAgICAgaWYg
KCFtb2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtb2R1
bGUtPmZ1bmN0aW9uUG9pbnRlcjxncG9pbnRlcj4oImd0a19vYmplY3RfZ2V0X3R5cGUiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKaW5kZXggMDBhOTkx
ODg2MTQ4NzM5MzhhNmNiNGFiZDk5MTRiYzg2Mjk0NWNmNy4uNGNlMjYyZTlkY2JiNGIxYjBmZjBh
ZDVkYjk3ZWI5N2YzNjA3Mzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvY2Vzc1Rocm90dGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6
OmRpZENvbm5lY3RUb1Byb2Nlc3MoUHJvY2Vzc0lEIHBpZCkKIAogICAgIG1fc3VzcGVuZFRpbWVy
LnN0b3AoKTsKICAgICBpZiAobV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKQotICAg
ICAgICBtX2Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9u
PihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAg
ICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlk
LCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgZWxz
ZQotICAgICAgICBtX2Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlv
bj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7Cisg
ICAgICAgIG1fYXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJX
ZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX3Byb2Nl
c3MuZGlkU2V0QXNzZXJ0aW9uU3RhdGUoYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgbV9hc3NlcnRp
b24tPnNldENsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDYwZjAyYzYxMGZjZDk4ODMwNjM5YzU3YjNlOWQ2MWZm
MWZkNTI1ZmQuLjI3NGFiZDMwMjljMDA3NzMzOWRmZTM3NDhmZjMwNjk3YzliNDhiNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMDcs
NyArMTA3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHksIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICA6IERyYXdp
bmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCB3ZWJQYWdlUHJveHks
IHByb2Nlc3MpCi0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcykpCisgICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3Qo
bWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcykpCiB7CiAjaWYgSEFWRShJT1NV
UkZBQ0UpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwb29sIHN1cmZhY2VzIGluIHRoZSBVSSBw
cm9jZXNzLgpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6dXBkYXRlRGVidWdJbmRpY2F0b3IoSW50U2l6ZSBjb250ZW50c1NpemUsCiAKIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNh
dG9yKCkKIHsKLSAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpOworICAgIG1fZGVidWdJbmRpY2F0b3JM
YXllclRyZWVIb3N0ID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcyk7CiAg
ICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3QtPnNldElzRGVidWdMYXllclRyZWVIb3N0
KHRydWUpOwogCiAgICAgbV90aWxlTWFwSG9zdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxs
b2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggMzAwMjVkNDI5OWYz
YmNhMDQ4NWQzMDRkODMzNTgxNzYxMGJhNTBiZC4uOGE0ZTUwNDgxN2ViYzEyNWNlODk4YzFjMjkx
ZDlhNmU0ZDVmNTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI1Miw3ICsy
NTIsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxh
eWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykK
IHsKICAgICBhdXRvIG1ha2VXaXRoTGF5ZXIgPSBbJl0gKFJldGFpblB0cjxDQUxheWVyPiBsYXll
cikgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2Rl
Pihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3Zl
KGxheWVyKSk7CiAgICAgfTsKICAgICBhdXRvIG1ha2VBZG9wdGluZ0xheWVyID0gWyZdIChDQUxh
eWVyKiBsYXllcikgewogICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihhZG9wdE5TKGxheWVy
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlTm9kZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCmluZGV4IGU4OGJiYzYwOGQ0ZmIwNTgzODRk
MjliMjY5ODE1OTJlZGE4MTRlYmEuLjRmZDRlYTI2OWU4Y2MxYmRmZmIyZWIyNTk3ZDRmNzUwZDg0
MjQwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCkBAIC03Myw3ICs3Myw3IEBAIFJl
bW90ZUxheWVyVHJlZU5vZGU6On5SZW1vdGVMYXllclRyZWVOb2RlKCkKIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxh
aW5MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCkK
IHsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIgPSBhZG9wdE5TKFtbV0tQbGFpblJlbW90
ZUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKIH0K
IAogdm9pZCBSZW1vdGVMYXllclRyZWVOb2RlOjpkZXRhY2hGcm9tUGFyZW50KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaApp
bmRleCBjMjc4MWRjOGFkYTM0MzM5Zjc5ZWQ4NWE3ZTNlOWZmNzY1MjIyNTI4Li4yOWRmZWZlNmNi
NzJjMTIwYTYxY2MyMmQwZDNiYTY0YTZkOTQ0MjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCkBAIC0zMyw2ICszMyw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTsKIAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eSYpOwogICAgIH5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDg2ZDBk
ZWZjNjk2NWU0ZmE2YmExMTY0NzYxYmM5YWM3MTk4YzcyZTYuLjFhNzY5NDNmMjQ1YmUxY2Q4MjJm
MTk2MTNjZGQzNWY1NDBhOTRjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBSZW1vdGVTY3JvbGxpbmdU
cmVlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDYyOWE5YzY1
MGQ0M2MwZDU2MWM4MTkzM2JhMGQxNGU4ZDMzZWE0NDQuLjBjMTI2YWU2YWY3NWU0MTM4YWZkMDA4
NjgzOTU2NjI5ZmY3MDAyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJ
T1MubW0KQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIFJldGFpblB0cjxVSVZpZXc+IGNyZWF0ZVJl
bW90ZVZpZXcocGlkX3QgcGlkLCB1aW50MzJfdCBjb250ZXh0SUQpCiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9w
ZXJ0aWVzKQogewogICAgIGF1dG8gbWFrZVdpdGhWaWV3ID0gWyZdIChSZXRhaW5QdHI8VUlWaWV3
PiB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJl
ZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZSh2aWV3KSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RG
TW92ZSh2aWV3KSk7CiAgICAgfTsKICAgICBhdXRvIG1ha2VBZG9wdGluZ1ZpZXcgPSBbJl0gKFVJ
VmlldyogdmlldykgewogICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlModmlldykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLm1tCmluZGV4IDgxYTJlYjlhNjM1ZDU5ODQxNjAwZjc4MzUyMDRh
Yzg0YmQ2ZDVjMjguLmI4OTA2ODFlOWU3YTUxM2JhMzQzNjdjZWYzOTg5YmUzYjE5ZDljYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVJT1MubW0KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNv
bnN0IFMKIAogICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAgICAgIGlmIChz
Y3JvbGxDb250YWluZXJMYXllcigpKQotICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdh
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbWFrZVVu
aXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcyk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbnVsbHB0cjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW0KaW5kZXggYjU2ZTJlYTY0ZGE1MjAzMWRmYWYxMjhlYzI0OGNk
MTVjNzEwMDkyNi4uZDBiZGQzYzU3ZGJiY2JlZjA3MGU4NTFhZmUwNGVlZTZhYWI1N2Q5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5tbQpAQCAtNDMsNyArNDMsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUwog
CiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1Ry
ZWUsIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Ny
b2xsaW5nTm9kZURlbGVnYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpKQorICAgICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUo
bWFrZVVuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLmgKaW5kZXggNjQ4OWE4ZTc0NDJkN2IxNzA1Mjk1YjYyZWViNWMw
MjVjN2E5YjMzYS4uZTYzN2Q2MTUzMjVkMzgwY2U5MmQwN2EyYjEyMTkxM2ZmMTgxZGQyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUyA6IHB1YmxpYyBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJik7CiAgICAgflNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
bWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IDMy
YTFlMzNhYTg1NjdjMGI2MTYyZTA2NzgzY2YzNzZjZjYxOTA3ZTIuLjIzM2ZmZDAyMWU2MzhiZjE4
OGY4ZGNhYmQ3NzljNzQ1Mjk0MzcyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApAQCAtMzYs
NyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYyhTY3JvbGxpbmdUcmVlJiB0cmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwg
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWModHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVy
UGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjLmNwcAppbmRleCBkODk2MGNlYzMwZTQzMzE5YWEwMjdkOWEyMWZjZWZj
ODM3NjM1MDQzLi5iNmNhM2NiYmE4MDgwN2FmN2I5ZjY5OWJlOWIxYjJhYTljZGMxYzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWM+IFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ04KIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyhTY3JvbGxpbmdU
cmVlJiB0cmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9sbGVyUGFp
cihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQorICAgICwgbV9zY3Jv
bGxlclBhaXIobWFrZVVuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKaW5k
ZXggZjI2MWY1MjY4MTUyZDBmZGRiNjg1NTFhODYwMTUyZTQxNjdkMGFlYy4uMmI5MGUxYjg5YzBh
YTVlZWVhZjA1NGRlNDI4ZGVlZDQwZTYzYThiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IGY1MDVlMjgwYzQ0MjkwYTgwM2RiZGI2OGM5
OGVlYTYzMGIxYzliYjYuLjg2OGI1NGU3OTJhZjJhYmQ5ODZiYzg2NjAwNWNiMTJmNDU2ODI0Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFz
cyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eQogICAgICwgcHJpdmF0ZSBM
b2dnZXJIZWxwZXIKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
KFdlYlBhZ2VQcm94eSYpOwogICAgIH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KaW5kZXggOWVhZTE4ZWRkNWY0ZDJkYzVk
ZjM4ZTk2ZDA1MDUwOTNiY2E5YjM5OC4uYWJkMGU3ZTcyOTQ3OTEyOGNiNmFmZmY3ZjIxODEyNjNl
NGRhOTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCkBAIC05Miw3ICs5Miw3IEBAIFVu
aXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBIaWRTZXJ2aWNlOjpjcmVhdGVIaWRDb25uZWN0aW9uKElP
SElERGV2aWNlUmVmIGRldmljZSkKIAogdm9pZCBIaWRTZXJ2aWNlOjpkZXZpY2VBZGRlZChJT0hJ
RERldmljZVJlZiBkZXZpY2UpCiB7Ci0gICAgYXV0byBkcml2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEN0YXBIaWREcml2ZXI+KGNyZWF0ZUhpZENvbm5lY3Rpb24oZGV2aWNlKSk7CisgICAgYXV0byBk
cml2ZXIgPSBtYWtlVW5pcXVlPEN0YXBIaWREcml2ZXI+KGNyZWF0ZUhpZENvbm5lY3Rpb24oZGV2
aWNlKSk7CiAgICAgLy8gR2V0IGF1dGhlbnRpY2F0b3IgaW5mbyBmcm9tIHRoZSBkZXZpY2UuCiAg
ICAgZHJpdmVyLT50cmFuc2FjdChlbmNvZGVFbXB0eUF1dGhlbnRpY2F0b3JSZXF1ZXN0KEN0YXBS
ZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXRJbmZvKSwgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCBwdHIgPSBkcml2ZXIuZ2V0KCldKFZlY3Rvcjx1aW50OF90PiYmIHJlc3Bv
bnNlKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAppbmRleCA4NWNlNjkwNjEx
MTQ0MmJjNjc5Y2M3YTc3NWI4NjgyZGQxNTcyOGM5Li5mODUyYmVkMjEzMGI0N2MyZjdkZDI5OGFk
MzU2YWVhYzg3YzAyNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDk5ZDZlYTMzNDE1
M2VjZjQ5ZDQ1ODRjNzQzZGM2ODE2ODg0MTU1MjAuLjg0NmE1YWEyN2RmYWIzZDI3NGNmZmE0ODcz
ODYxZjI1ODdkMTdmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNv
bnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKKyAgICAsIG1fcHJvdmlkZXIobWFr
ZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiAgICAgV2ViQ29udGV4dFN1
cHBsZW1lbnQ6OnByb2Nlc3NQb29sKCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwog
fQpAQCAtNTQsNyArNTQsNyBAQCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQbwogdm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2Vv
bG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVyKQotICAg
ICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlk
ZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Q
cm92aWRlcj4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fcHJvdmlkZXIgPSBXVEZNb3ZlKHByb3Zp
ZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXIuY3BwCmluZGV4IDJjZGNkMTc2NTI5OWZlNzc2NDliYWJmOWRlM2U3
NGU4YjBmMDBlMzcuLjMzNjRiY2JjYzkxMTg0YTZiYTc1NDFlZjkwYjBmOTYwNGNkZTRkZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyOjp1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVkaWFTdGF0ZShXZWJQYWdl
CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpzZXRGb2N1c2VkTWVkaWFFbGVt
ZW50KFdlYlBhZ2VQcm94eSYgcHJveHksIHVpbnQ2NF90IGVsZW1lbnRJRCkKIHsKLSAgICBtX2Zv
Y3VzZWRNZWRpYUVsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+
KCZwcm94eSwgZWxlbWVudElEKTsKKyAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBtYWtlVW5p
cXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElEKTsKIH0KIAogdm9pZCBX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNsZWFyRm9jdXNlZE1lZGlhRWxlbWVudCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDllYjlk
MjhhZGRkNWI1YjAwNmQ1MGIwOGEzZDc0ZmI2OWQxNjIzOTIuLjE2YTc1OWFjOGExZmYzMTQ2MDVi
MDk0NmZmYzVhYTY1ODE4ZTA3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYk5hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5h
dmlnYXRpb25TdGF0ZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNs
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiAKIGNsYXNzIFdlYk5hdmlnYXRpb25TdGF0ZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
TmF2aWdhdGlvblN0YXRlKCk7CiAgICAgfldlYk5hdmlnYXRpb25TdGF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApp
bmRleCA2NTI5ODJhODEyYTllZmJlZjUyMWE2YTk4OTlmYTRiZWU1ZmFmMzRjLi4xYjI5Zjc5ZGRm
YWVhMDdiOWU3MjQ5YmQ3NzIzODRlZWJmNTMwZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtNDIsNiArNDIs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFn
ZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29u
c3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxB
UEk6Ok9iamVjdD4pPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjNGI5MmM4M2NmZWEyOWIzMWVkYmIz
NGFhODQwMjViYTVjOGIwM2I3Li5iZGE1OWNkODA1MTU3NjQ2YjMwOGQyZmQyMzZmM2QxMTgyNzFl
MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFdlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcihXZWJQYWdlUHJveHkmIHBhZ2UpCiAg
ICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91
dGVyLmNvcHlSZWYoKSkpCiB7Ci0gICAgYXV0byB0YXJnZXRBZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBhdXRvIHRhcmdldEFnZW50ID0gbWFrZVVu
aXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQ+KG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCks
IG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAgICAgbV90YXJnZXRBZ2VudCA9IHRhcmdl
dEFnZW50LmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCAzMjYzMWM0NTBlYjI2ZDc1NDU0NjhiNzI2YzE1YTQ0OTg1Yzk5OGE5Li5kYTVkMTJjYTI1
NGNmNTExYmMxMjE3NmFhMGUyNzAyZWQ1ODk3ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM5NywxNSArMzk3LDE1IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgUGFnCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKICAg
ICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVu
dD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6SGlzdG9yeUNs
aWVudD4oKSkKLSAgICAsIG1faWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
Okljb25Mb2FkaW5nQ2xpZW50PigpKQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpGb3JtQ2xpZW50PigpKQotICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6VUlDbGllbnQ+KCkpCi0gICAgLCBtX2ZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkZpbmRDbGllbnQ+KCkpCi0gICAgLCBtX2ZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKSkKKyAgICAsIG1faWNvbkxvYWRpbmdDbGll
bnQobWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpKQorICAgICwgbV9mb3JtQ2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpKQorICAgICwgbV91aUNsaWVudChtYWtl
VW5pcXVlPEFQSTo6VUlDbGllbnQ+KCkpCisgICAgLCBtX2ZpbmRDbGllbnQobWFrZVVuaXF1ZTxB
UEk6OkZpbmRDbGllbnQ+KCkpCisgICAgLCBtX2ZpbmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51
Q2xpZW50PigpKQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Q29u
dGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAsIG1fbmF2aWdhdGlvblN0YXRlKHN0ZDo6
bWFrZV91bmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigpKQorICAgICwgbV9uYXZpZ2F0aW9uU3Rh
dGUobWFrZVVuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJv
Y2VzcykKICAgICAsIG1fcGFnZUdyb3VwKCptX2NvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQog
ICAgICwgbV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQpAQCAt
NDE2LDcgKzQxNiw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnCiAgICAgLCBtX292ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5IHsgbV9jb25maWd1cmF0aW9uLT5vdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpIH0KICAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1
cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZSgpKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVsbHNjcmVlbkNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKSkKKyAgICAsIG1fZnVs
bHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKSkKICNlbmRp
ZgogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKICAg
ICAsIG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQpAQCAtNDM1
LDkgKzQzNSw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnCiAjZW5kaWYKICAgICAsIG1fcGFn
ZUxvYWRTdGF0ZSgqdGhpcykKICAgICAsIG1fY29uZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXMo
bV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkpCi0gICAgLCBtX2luc3BlY3RvckNv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcj4oKnRo
aXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAg
ICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VEZWJ1Z2dh
YmxlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUobWFrZVVuaXF1ZTxXZWJQ
YWdlRGVidWdnYWJsZT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hD
b3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6cmVzZXRSZWNl
bnRDcmFzaENvdW50KQogewpAQCAtNDc3LDcgKzQ3Nyw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcywg
UGFnCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fYWN0aXZpdHlTdGF0ZUNo
YW5nZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpB
Y3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNdIHsKKyAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VE
aXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5k
ZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0
ZUNoYW5nZSksIFt0aGlzXSB7CiAgICAgICAgIHRoaXMtPmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNo
YW5nZSgpOwogICAgIH0pOwogI2VuZGlmCkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+
JiYgcG9saWN5Q2wKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGll
bnQpIHsKLSAgICAgICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1D
bGllbnQ+KCk7CisgICAgICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xp
ZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MTEsNyArNjExLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNs
aWVudD4mJiBmb3JtQ2xpZW50KQogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiYmIHVpQ2xpZW50KQogewogICAgIGlmICghdWlDbGll
bnQpIHsKLSAgICAgICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVu
dD4oKTsKKyAgICAgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpVSUNsaWVudD4oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9h
ZGluZ0NsaWVudD4mCiB7CiAgICAgYm9vbCBoYXNDbGllbnQgPSBpY29uTG9hZGluZ0NsaWVudC5n
ZXQoKTsKICAgICBpZiAoIWljb25Mb2FkaW5nQ2xpZW50KQotICAgICAgICBtX2ljb25Mb2FkaW5n
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOworICAg
ICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IFdURk1vdmUo
aWNvbkxvYWRpbmdDbGllbnQpOwogCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6OnVuaXF1ZV9wdHI8UGFnZUxvYWRTdGF0
ZTo6T2JzZXIKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKIHsKICAgICBpZiAoIWZpbmRDbGllbnQp
IHsKLSAgICAgICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGll
bnQ+KCk7CisgICAgICAgIG1fZmluZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50
PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNjYwLDcgKzY2MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRD
bGllbnQ+JiYgZmluZENsaWVudCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kTWF0Y2hlc0Ns
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4mJiBmaW5kTWF0Y2hl
c0NsaWVudCkKIHsKICAgICBpZiAoIWZpbmRNYXRjaGVzQ2xpZW50KSB7Ci0gICAgICAgIG1fZmlu
ZE1hdGNoZXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+
KCk7CisgICAgICAgIG1fZmluZE1hdGNoZXNDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZE1h
dGNoZXNDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY3Niw3ICs2NzYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6RGlhZ25vc3RpY0xvZwogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbnRl
eHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiYmIGNv
bnRleHRNZW51Q2xpZW50KQogewogICAgIGlmICghY29udGV4dE1lbnVDbGllbnQpIHsKLSAgICAg
ICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVu
dUNsaWVudD4oKTsKKyAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpDb250ZXh0TWVudUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjkx
LDcgKzY5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChj
b25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9
IG1ha2VVbmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PigpOwogICAgIG1faW5qZWN0
ZWRCdW5kbGVDbGllbnQtPmluaXRpYWxpemUoY2xpZW50KTsKIH0KIApAQCAtNzc2LDcgKzc3Niw3
IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgfQogCiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBT
dXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1h
aW5GcmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VVbmlxdWU8U3VzcGVu
ZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBz
aG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUp
OwogCiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBj
cmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJk
IGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9n
Z2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8g
ZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CiAKQEAgLTg0OSw3ICs4NDksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5NYW5hZ2VyKTsK
LSAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5PigqdGhpcywgcGFnZUNsaWVudCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlD
bGllbnQoKSk7CisgICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IG1ha2VVbmlxdWU8V2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGllbnQoKS5mdWxsU2NyZWVuTWFuYWdlclBy
b3h5Q2xpZW50KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShB
VktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKICAgICBBU1NFUlQoIW1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcik7CkBAIC04NjAsMjIgKzg2
MCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgIEFTU0VSVCghbV9wYXltZW50Q29vcmRpbmF0b3Ip
OwotICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbWFr
ZVVuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgQVNTRVJUKCFtX3N5c3RlbVByZXZpZXdDb250cm9s
bGVyKTsKLSAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOworICAgIG1fc3lzdGVtUHJldmlld0NvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPFN5c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhpcyk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgQVNTRVJUKCFtX2NyZWRlbnRpYWxzTWVz
c2VuZ2VyKTsKLSAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgIG1fY3JlZGVudGlh
bHNNZXNzZW5nZXIgPSBtYWtlVW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEhBVkUoUEVOQ0lMS0lUKQogICAgIEFTU0VSVCghbV9l
ZGl0YWJsZUltYWdlQ29udHJvbGxlcik7Ci0gICAgbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICBt
X2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxFZGl0YWJsZUltYWdlQ29udHJv
bGxlcj4oKnRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RHJhd2luZ0FyZWEoc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+
JiYgZHJhd2luZ0FyZQogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0o
Q09DT0EpCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVS
ZW1vdGVMYXllclRyZWUpIHsKLSAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5ID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5PigqdGhpcyk7
CisgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIC8vIE9uIGlPUywgbWFpbiBmcmFtZSBzY3JvbGxzIGFyZSBzZW50IGluIHRl
cm1zIG9mIHZpc2libGUgcmVjdCB1cGRhdGVzLgogICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHktPnNldFByb3BhZ2F0ZXNNYWluRnJhbWVTY3JvbGxzKGZhbHNlKTsKQEAgLTEwMDYs
MTcgKzEwMDYsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2xvYWRlckNs
aWVudCA9IG51bGxwdHI7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZVJlZjxB
UEk6Ok5hdmlnYXRpb25DbGllbnQ+KCk7CiAgICAgbV9wb2xpY3lDbGllbnQgPSBudWxscHRyOwot
ICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRp
bmdDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZv
cm1DbGllbnQ+KCk7Ci0gICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNs
aWVudD4oKTsKLSAgICBtX2ZpbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENs
aWVudD4oKTsKLSAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CisgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpVSUNsaWVudD4oKTsKKyAgICBtX2ZpbmRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZENs
aWVudD4oKTsKKyAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRN
YXRjaGVzQ2xpZW50PigpOwogICAgIG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBudWxscHRy
OwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgbV9jb250ZXh0
TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICBtX2Z1bGxzY3Jl
ZW5DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKICNlbmRpZgog
CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9y
UGFnZSgqdGhpcyk7CkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
YwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7
IH0pOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxv
YWREYXRhTmF2aWdhdGlvbihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRh
dGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKKyAg
ICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZp
Z2F0aW9uKG1ha2VVbmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlN
RVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkpOwogICAgIGxvYWREYXRhV2l0aE5h
dmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbmF2aWdhdGlvbiwgZGF0YSwgTUlN
RVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpObywgV1RGOjpudWxsb3B0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsK
ICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KQEAgLTI0MTUsNyArMjQxNSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2
ZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb2FsZXNjZWRXaGVlbEV2
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7Cisg
ICAgYXV0byBjb2FsZXNjZWRXaGVlbEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2Vi
V2hlZWxFdmVudD4+KCk7CiAgICAgY29hbGVzY2VkV2hlZWxFdmVudC0+YXBwZW5kKGV2ZW50KTsK
ICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChXVEZNb3ZlKGNvYWxl
c2NlZFdoZWVsRXZlbnQpKTsKICAgICBzZW5kV2hlZWxFdmVudChldmVudCk7CkBAIC0yNDIzLDcg
KzI0MjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRp
dmVXZWJXaGVlbEV2ZW50JiBldmVudCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0
UXVldWVkV2hlZWxFdmVudCgpCiB7Ci0gICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKKyAgICBhdXRvIG5l
eHRDb2FsZXNjZWRFdmVudCA9IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+
PigpOwogICAgIFdlYldoZWVsRXZlbnQgbmV4dFdoZWVsRXZlbnQgPSBjb2FsZXNjZWRXaGVlbEV2
ZW50KG1fd2hlZWxFdmVudFF1ZXVlLCAqbmV4dENvYWxlc2NlZEV2ZW50LmdldCgpKTsKICAgICBt
X2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChXVEZNb3ZlKG5leHRDb2FsZXNj
ZWRFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KG5leHRXaGVlbEV2ZW50KTsKQEAgLTI5ODQs
NyArMjk4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgICAgIG1fcHJvdmlzaW9u
YWxQYWdlID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlS
ZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1
cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOworICAgIG1fcHJv
dmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIG5l
d1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2VQcm94eSksIG5hdmlnYXRp
b24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCks
IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCk7CiAKICAgICBpZiAoYXV0byogaXRlbSA9IG5hdmlnYXRpb24udGFyZ2V0SXRlbSgpKSB7CiAg
ICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS0+dXJsKCkudXRmOCgp
LmRhdGEoKSk7CkBAIC01NzAyLDcgKzU3MDIsNyBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+
JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KSB7Ci0gICAgICAgIG1fZnVsbHNjcmVlbkNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOworICAgICAg
ICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQzNiw3ICs3NDM2LDcgQEAgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIFdlYlBhZ2VQcm94eTo6dXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QKICAgICBpZiAobV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIpCiAgICAgICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI7CiAKLSAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+KCp0aGlzKTsK
KyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IG1ha2VVbmlxdWU8VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogfQogCkBAIC04MTQyLDcgKzgx
NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVj
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29s
bGVjdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCiAgICAgaWYgKG1fc2Nyb2xsUGVyZm9ybWFuY2VE
YXRhQ29sbGVjdGlvbkVuYWJsZWQgJiYgIW1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKQotICAg
ICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhPihkb3duY2FzdDxSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5PigqbV9kcmF3aW5nQXJlYSkpOworICAgICAgICBtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhPihkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Pigq
bV9kcmF3aW5nQXJlYSkpOwogICAgIGVsc2UgaWYgKCFtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNv
bGxlY3Rpb25FbmFibGVkKQogICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IG51
bGxwdHI7CiB9CkBAIC05MTg5LDcgKzkxODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRT
cGVlY2hTeW50aGVzaXplcigpCiBXZWJQYWdlUHJveHk6OlNwZWVjaFN5bnRoZXNpc0RhdGEmIFdl
YlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzRGF0YSgpCiB7CiAgICAgaWYgKCFtX3NwZWVjaFN5
bnRoZXNpc0RhdGEpCi0gICAgICAgIG1fc3BlZWNoU3ludGhlc2lzRGF0YSA9IFNwZWVjaFN5bnRo
ZXNpc0RhdGEgeyBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRo
aXMpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAg
ICAgIG1fc3BlZWNoU3ludGhlc2lzRGF0YSA9IFNwZWVjaFN5bnRoZXNpc0RhdGEgeyBtYWtlVW5p
cXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAgICAgcmV0dXJuICptX3NwZWVjaFN5bnRoZXNp
c0RhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjQz
ODNjYWY4OGYzNzI3MmNmOTQ3N2I2NDAzOWNlOWVmNWM5NDlhMS4uMTdiZjVmYTliZTE3ZTYzODVj
MjNiYjg3NDVhMWI1ZDNhYzc4Y2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTM0Nyw4ICszNDcsNyBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdD4gVG91Y2hlc0NhbAogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jj4g
U2VsZWN0aW9uUmVjdHNDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24mPiBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uQ2FsbGJh
Y2s7CiBzdHJ1Y3QgRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiBpbmZvcm1hdGlvbjsKICAgICBib29sIHVz
ZXJJc0ludGVyYWN0aW5nOwogICAgIGJvb2wgYmx1clByZXZpb3VzTm9kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCmluZGV4IDhiZGY4Y2Y4Mzg4Y2RjN2Jm
YWNmZjJiN2U2MDVkMGE4MThkYWFjNjQuLjk2MmYzYmVkMmQ4MjU2OWEwN2RkNGU5Y2RhYjhmY2M3
MjExOWY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNw
cApAQCAtODQsNyArODQsNyBAQCBib29sIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9z
c2libGUoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9IGdlbmVyYXRlQWRkUmVxdWVz
dElkZW50aWZpZXIoKTsKLSAgICBtX3BlbmRpbmdBZGRSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50
aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUHJvY2Vzcz4ocHJvY2Vzcy5jb3B5UmVmKCkp
KTsKKyAgICBtX3BlbmRpbmdBZGRSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VV
bmlxdWU8Q2FjaGVkUHJvY2Vzcz4ocHJvY2Vzcy5jb3B5UmVmKCkpKTsKIAogICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQ
b3NzaWJsZSgpOiBDaGVja2luZyBpZiBwcm9jZXNzICVpIGlzIHJlc3BvbnNpdmUgYmVmb3JlIGNh
Y2hpbmcgaXQuLi4iLCB0aGlzLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBw
cm9jZXNzLT5pc1Jlc3BvbnNpdmUoW3RoaXMsIHByb2Nlc3NQb29sID0gbWFrZVJlZihwcm9jZXNz
LT5wcm9jZXNzUG9vbCgpKSwgcmVxdWVzdElkZW50aWZpZXJdKGJvb2wgaXNSZXNwb25zaXZlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMzYzNjdm
MDA0Y2YxZTIxNjVkMjdiNmFlOGU2ZmNiNWRjNmY5MTM4Yy4uODE5NjVhZjdjYThiMDMyMzNmZjRm
ODU2NDE0ZGRiZDE0ZDk5NDAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtMjMzLDE1ICsyMzMsMTUgQEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3QK
IFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
LmNvcHkoKSkKICAgICAsIG1fZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgp
KQotICAgICwgbV9pbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCi0gICAgLCBtX2F1dG9tYXRpb25DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKSkKLSAgICAsIG1faGlzdG9y
eUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+
KCkpCi0gICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQorICAgICwgbV9pbmplY3RlZEJ1
bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCisgICAg
LCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkp
CisgICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4o
KSkKKyAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhp
c3RvcnlDbGllbnQ+KCkpCisgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChtYWtl
VW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwgbV92aXNp
dGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAsIG1faGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIoc3RkOjptYWtl
X3VuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQotICAg
ICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9oaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihtYWtlVW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBo
aWNzVXNhZ2VTYW1wbGVyPigqdGhpcykpCisgICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2Fn
ZVNhbXBsZXIobWFrZVVuaXF1ZTxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhp
cykpCiAjZW5kaWYKICAgICAsIG1fYWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KG1fY29u
ZmlndXJhdGlvbi0+YWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KCkpCiAgICAgLCBtX3No
b3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24obV9jb25maWd1cmF0aW9uLT5zaG91bGRUYWtl
VUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKCkpCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGll
bnQpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYg
KCFjbGllbnQpCi0gICAgICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CisgICAgICAgIG1faW5qZWN0ZWRCdW5k
bGVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CiAgICAg
ZWxzZQogICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwog
fQpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDb25u
ZWN0aW9uQ2xpZW50KGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50PiYmIGhpc3RvcnlDbGllbnQpCiB7CiAgICAgaWYgKCFoaXN0b3J5
Q2xpZW50KQotICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7CisgICAgICAgIG1faGlzdG9yeUNsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CkBA
IC0zODUsNyArMzg1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUMKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xp
ZW50PiYmIGRvd25sb2FkQ2xpZW50KQogewogICAgIGlmICghZG93bmxvYWRDbGllbnQpCi0gICAg
ICAgIG1fZG93bmxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGll
bnQ+KCk7CisgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxv
YWRDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92
ZShkb3dubG9hZENsaWVudCk7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGll
bnQ+JiYgZG8KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4mJiBhdXRvbWF0aW9uQ2xpZW50KQogewog
ICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKLSAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCk7CisgICAgICAgIG1fYXV0
b21hdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOwogICAg
IGVsc2UKICAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gV1RGTW92ZShhdXRvbWF0aW9uQ2xp
ZW50KTsKIH0KQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Qwogewog
I2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAgICAgaWYgKCFjdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCi0gICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dD4oKTsKKyAgICAgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBtYWtlVW5pcXVl
PEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAg
bV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBXVEZNb3ZlKGN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudCk7CiAjZW5kaWYKQEAgLTQ5Miw3ICs0OTIsNyBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2l0aAogICAgICAgICByZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3M7CiAgICAgfQogCi0gICAg
YXV0byBuZXR3b3JrUHJvY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Byb2Nlc3NQcm94
eT4oKnRoaXMpOworICAgIGF1dG8gbmV0d29ya1Byb2Nlc3MgPSBtYWtlVW5pcXVlPE5ldHdvcmtQ
cm9jZXNzUHJveHk+KCp0aGlzKTsKIAogICAgIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAKQEAgLTI1MTUsNyArMjUxNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21hCiAgICAgICAgIG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4u
cmVtb3ZlKG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4ucmFuZG9tKCkp
OwogCiAgICAgYXV0byYgdmFsdWUgPSBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxl
RG9tYWluLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbj4oKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CiAKICAgICAqdmFsdWUgPSBwcmV3YXJtSW5mb3JtYXRpb247CkBAIC0y
NTYyLDEyICsyNTYyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NIYXNV
cGxvYWRzKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKICAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+dGFrZVVwbG9hZEFzc2VydGlvbigpOwogICAgICAgICAKICAgICAgICAgQVNTRVJUKCFt
X3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbik7Ci0gICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNz
ZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJv
Y2Vzc0lEKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5l
dHdvcmtpbmcpOworICAgICAgICBtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbiA9IG1ha2VVbmlx
dWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9h
ZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKICAgICB9CiAgICAg
CiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nlc1dpdGhVcGxvYWRzLmFkZChwcm9jZXNzSUQs
IG51bGxwdHIpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0
ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1h
a2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
IldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMoUHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQpAQCAtMjYwNCwxMiArMjYwNCwxMiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaQogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IlRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIHBsYXlpbmcgYXVkaWJsZSBtZWRpYSBpcyBub3cgb25l
LiBUYWtpbmcgVUkgcHJvY2VzcyBhc3NlcnRpb24uIik7CiAKICAgICAgICAgQVNTRVJUKCFtX3Vp
UHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vzc01lZGlh
UGxheWJhY2tBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdl
dEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9u
U3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CisgICAg
ICAgIG1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vz
c0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNr
Il9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBs
YXliYWNrKTsKICAgICB9CiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc2VzUGxheWluZ0F1
ZGlibGVNZWRpYS5hZGQocHJvY2Vzc0lELCBudWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQg
TWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25S
ZWFzb246Ok1lZGlhUGxheWJhY2spOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtl
VW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJX
ZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3Nl
cnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpj
bGVhcldlYlByb2Nlc3NJc1BsYXlpbmdBdWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgcHJvY2Vzc0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKaW5kZXggZTE2OTEzN2Y1Mzg5ZDMwYmI4YjExYjNhOGUxZjUwY2E0M2FhMDZlZC4uMWUz
Y2RkZThmYmU4OGU4NWQ4MDI5ODc3OTdmODEyZWVjNTI1YjMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgV2ViUHJv
Y2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBX
ZWJzaXRlRGF0YVN0b3JlKgogICAgICwgbV92aXNpYmxlUGFnZUNvdW50ZXIoW3RoaXNdKFJlZkNv
dW50ZXJFdmVudCkgeyB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOyB9KQog
ICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUpCiAjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgLCBtX3VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkoc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
PigqdGhpcykpCisgICAgLCBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkobWFrZVVuaXF1
ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1f
aXNQcmV3YXJtZWQoaXNQcmV3YXJtZWQgPT0gSXNQcmV3YXJtZWQ6OlllcykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDbGllbnQuaAppbmRleCBlOWZjZjAwMTUzOTk1ZGMxY2NlMTM1ZjhjMDkyZTkyZTY2ZGJm
ZjNhLi5kMGJiYTU2NGMyNzU4MmQ3ODI2ZTlmMmMyMDYyMjM3MDIyNzI5NTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
c2l0ZURhdGFTdG9yZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggMTgyOTRkMzdmZTQ5ZWVkNmQ2
OWRmZmZmNWYyZjY1MDcwYjY2Y2Q5MC4uN2JkZDAzZDNjOGVjOGUwNjYyZTc3ZDAxODI1MGI1MDg4
YzI2Y2ZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcApAQCAtNTQsMTIgKzU0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm8+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiAgICAg
ICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ3RrX3dpZGdldF9nZXRfdmlzdWFsKG1fd2ViUGFnZVBy
b3h5LnZpZXdXaWRnZXQoKSk7CiAgICAgICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ2RrX3Zpc3Vh
bF9nZXRfc2NyZWVuKHZpc3VhbCk7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURp
c3BsYXlYMTE+KHNoYXJlZERpc3BsYXkpLm5hdGl2ZSgpID09IEdES19TQ1JFRU5fWERJU1BMQVko
c2NyZWVuKSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJh
Y2tlbmRDYWlyb1gxMT4oR0RLX1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3co
c2NyZWVuKSksCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMT4oR0RLX1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVu
KSksCiAgICAgICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgZ2RrX3Zpc3VhbF9n
ZXRfZGVwdGgodmlzdWFsKSwgbV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICB9CiAj
ZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb0ltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxl
RmFjdG9yKTsKIH0KIAogdm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KGNhaXJvX3QqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggYjg3NGZiMGZiMmUyYTdlN2Vj
MzZjYzQ0ZTM5ZDYyNDkwNmE0YzVmMS4uZjg4OGMwZjQ0NmM2MjcxMjdjODM3NWJlMGQ4MWE2YTNm
MmMwOWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yQ2xpZW50Ojpjb25uZWN0aW9uQ2xvc2VkKCkKIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50OjppbnNwZWN0KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpCiB7
CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2luc3BlY3RvclByb3h5TWFwLmVuc3VyZShzdGQ6Om1h
a2VfcGFpcihjb25uZWN0aW9uSUQsIHRhcmdldElEKSwgW3RoaXMsIGNvbm5lY3Rpb25JRCwgdGFy
Z2V0SURdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9y
UHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdl
dElEKTsKICAgICB9KTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNob3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFu
ZC5jcHAKaW5kZXggMzgzMTAwMDU4ODk0ZGVjMGZiN2I1MWNhYTA5YTIzOWQ3N2QwOGE4Yi4uODkz
Mjc5ZmJjZjU4YWVhZjJhZmQ2YjFhNDdjMWM3NmMyM2Q4MmJlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5jcHAKQEAgLTc5LDkgKzc5LDkgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25z
M0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RP
cGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVu
c2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9w
ZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOwogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRl
bnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkg
Pj0gMzIwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xF
eHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29u
dGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgICAgICBpZiAo
Z2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKICAgICAgICAgICAgIGds
SW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJH
RVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRl
eHR1cmUyRE9FUyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9E
cmFnQW5kRHJvcEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdB
bmREcm9wSGFuZGxlci5jcHAKaW5kZXggZTlhZTY1NTJhN2EyZDg2MmM0YmQ0ZWUxMGVkMmVjMzZl
OTJmODMxZC4uY2E2NTNlNWViYTcwYzk2MTU1ZmY3NjQ4OGMzZWRmNDI4MWY4NTcxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAK
QEAgLTIwMiw3ICsyMDIsNyBAQCBTZWxlY3Rpb25EYXRhKiBEcmFnQW5kRHJvcEhhbmRsZXI6OmRy
YWdEYXRhU2VsZWN0aW9uKEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEcm9wcGluZ0NvbnRleHQ+JiBkcm9wcGluZ0NvbnRleHQgPSBtX2Ryb3BwaW5nQ29u
dGV4dHMuYWRkKGNvbnRleHQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWRy
b3BwaW5nQ29udGV4dCkgewogICAgICAgICBHdGtXaWRnZXQqIHdpZGdldCA9IG1fcGFnZS52aWV3
V2lkZ2V0KCk7Ci0gICAgICAgIGRyb3BwaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RHJv
cHBpbmdDb250ZXh0Pihjb250ZXh0LCBwb3NpdGlvbik7CisgICAgICAgIGRyb3BwaW5nQ29udGV4
dCA9IG1ha2VVbmlxdWU8RHJvcHBpbmdDb250ZXh0Pihjb250ZXh0LCBwb3NpdGlvbik7CiAgICAg
ICAgIFZlY3RvcjxHZGtBdG9tPiBhY2NlcHRhYmxlVGFyZ2V0cyhQYXN0ZWJvYXJkSGVscGVyOjpz
aW5nbGV0b24oKS5kcm9wQXRvbXNGb3JDb250ZXh0KHdpZGdldCwgZHJvcHBpbmdDb250ZXh0LT5n
ZGtDb250ZXh0KSk7CiAgICAgICAgIGRyb3BwaW5nQ29udGV4dC0+cGVuZGluZ0RhdGFSZXF1ZXN0
cyA9IGFjY2VwdGFibGVUYXJnZXRzLnNpemUoKTsKICAgICAgICAgZm9yIChhdXRvJiB0YXJnZXQg
OiBhY2NlcHRhYmxlVGFyZ2V0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9E
cmFnQW5kRHJvcEhhbmRsZXIuaAppbmRleCA1MjU0MjAzNzFmNjFiZDRiOGYzYzFhMzk5YjdiODI2
MWI5OTRlYTEwLi41OTE0YjdlMGRmNTQzMWFjZjY2MzcxMDNlNjg4MDQwNGVkNDQzZjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCkBA
IC00OSw2ICs0OSw3IEBAIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIAogY2xhc3MgRHJhZ0FuZERyb3BIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmFnQW5kRHJvcEhhbmRsZXIpOwogcHVi
bGljOgogICAgIERyYWdBbmREcm9wSGFuZGxlcihXZWJQYWdlUHJveHkmKTsKQEAgLTY0LDYgKzY1
LDcgQEAgY2xhc3MgRHJhZ0FuZERyb3BIYW5kbGVyIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
RHJvcHBpbmdDb250ZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICBEcm9wcGluZ0NvbnRleHQoR2RrRHJhZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9zaXRpb24pOwogCiAgICAgICAgIEdka0RyYWdDb250ZXh0KiBnZGtDb250
ZXh0IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dheWxhbmRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5jcHAKaW5kZXggY2JlMzgwYjI0MGQ5NjAxMTE3MjdiNzcwYTgyNWUwOWUw
NTQ3YzllZC4uYzNkOTk3M2M3MGRjMjA4OWM2ODNkNjVhOTEzZGEyOTRkNWZmZWJjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBA
IC00MjAsOSArNDIwLDkgQEAgYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1
ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgp
LT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3Bl
bkdMPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0
ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAg
aWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAgICAgIGds
SW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJH
RVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRl
eHR1cmUyRE9FUyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9F
ZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Vk
aXRhYmxlSW1hZ2VDb250cm9sbGVyLmgKaW5kZXggYmJmOTNjMjAyODZlZTZjNjYyOGE3MTgyYmFl
ZDQ1MmYyYmM4Zjc0Yy4uNTE0ZWNhNjg5YjY1MWNjZGZlZDYxMTg1MGQyYjE0YmMyZjRjNTk4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VD
b250cm9sbGVyLmgKQEAgLTQxLDExICs0MSwxMyBAQCBPQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IEVkaXRhYmxlSW1hZ2UgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4g
ZHJhd2luZ1ZpZXc7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRJRDsKIH07CiAKIGNsYXNzIEVkaXRh
YmxlSW1hZ2VDb250cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IEVkaXRhYmxlSW1hZ2VD
b250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCmluZGV4IGMyMzQxMWMxZjA5YjAx
MGE2NTI1NGIzNjlkZDMxNjlkMzFmMGMwZTAuLjYxZTg1OTRkNWI3YzQxYWFmOWZjODJjNjUzOGRi
OWFkNzE4NTYzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0
YWJsZUltYWdlQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KQEAgLTU4LDcgKzU4LDcgQEAgRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXI6On5FZGl0YWJsZUltYWdlQ29udHJvbGxlcigpCiBFZGl0YWJsZUltYWdlJiBF
ZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKIHsKICAgICBhdXRvIHJl
c3VsdCA9IG1fZWRpdGFibGVJbWFnZXMuZW5zdXJlKGVtYmVkZGVkVmlld0lELCBbJl0gewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVkaXRhYmxlSW1hZ2U+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUlt
YWdlPiBpbWFnZSA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKICAgICAgICAgaW1hZ2Ut
PmRyYXdpbmdWaWV3ID0gbV93ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5n
VmlldyhlbWJlZGRlZFZpZXdJRCk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZl
cnJlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVy
cmVyLmgKaW5kZXggYzZmNTBhYjExZjNkYjI2ZTMxY2MyMDQ0M2ExZTg0MmI3ZDgwMmY4ZC4uZWZj
MzNkZTZmMmE4MjI1ZGZjNGUxYTM0M2MxOWMyMmVlMWMzNDI2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgKQEAgLTMz
LDYgKzMzLDcgQEAgT0JKQ19DTEFTUyBVSVZpZXc7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElucHV0Vmlld1VwZGF0ZURlZmVycmVyKTsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcihVSVZpZXcgKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaAppbmRleCA3MjgwNzg4NjM4MTJlODA5Y2RlMDk2ZWU4OWIxZjYwMjA1
MGJjNGQxLi4wMjAxMTY3OWI3OTFmOGUwYWQxMWYxYThmNTI3MzFhZmEzMDg1NzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgOiBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
KTsKIHB1YmxpYzoKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKFdLQ29udGVudFZp
ZXcgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
QXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQppbmRleCBkMDNhMTcyNmFiMzM0YTAwZTYw
ZmJjMDUwYjUwZTVjMzM3NWFmNzIwLi43ZjBmOTQ4NGZkNzc3NGRkMTE1N2FlMjg4NWM5MGEzYmYy
ZWU3OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KQEAgLTY1LDcgKzY1LDcgQEAgLSAo
dm9pZClkaWRNb3ZlVG9XaW5kb3cKICAgICBpZiAoIXNlbGYuX2NvbnRlbnRWaWV3LndpbmRvdyB8
fCBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9hcHBs
aWNhdGlvblN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBcHBsaWNhdGlv
blN0YXRlVHJhY2tlcj4oc2VsZiwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVu
dGVyaW5nQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKSk7CisgICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6
OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90
dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQpKTsKICAgICAKICAgICBpZiAoX2xhc3RPYnNlcnZlZFN0YXRlV2FzQmFj
a2dyb3VuZCAmJiAhW3NlbGYgaXNCYWNrZ3JvdW5kXSkKICAgICAgICAgW3NlbGYgX2FwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCmluZGV4IDY4MTFlODdhNGE0MjEwMDViZDk0YTdhYzIxNjU0M2VjYzAw
YTc3ZmMuLjQzMWZhY2QxZTY4Mzk3ZWM4NTczOTFhYjFjZjg4OGQzODQxNTdhNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0xNjcsNyArMTY3
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9v
bDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHIKICAgICBfcGFnZS0+c2V0RGVsZWdhdGVzU2Ny
b2xsaW5nKHRydWUpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIF9wYWdlLT5z
ZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xp
ZW50Pihfd2ViVmlldykpOworICAgIF9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlx
dWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pihfd2ViVmlldykpOwogI2VuZGlmCiAKICAgICBX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkud2tWaWV3Q291bnQrKzsKQEAgLTIz
OSw3ICsyMzksNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1l
IHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJgogCiAgICAgV2ViS2l0OjpJbml0
aWFsaXplV2ViS2l0MigpOwogCi0gICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOworICAgIF9wYWdlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKICAgICBf
d2ViVmlldyA9IHdlYlZpZXc7CiAKICAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0
aW9uV2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGTW92ZShjb25m
aWd1cmF0aW9uKV07CkBAIC01NDEsNyArNTQxLDcgQEAgLSAodm9pZClfd2ViVmlld0Rlc3Ryb3ll
ZAogCiAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3JlYXRl
RHJhd2luZ0FyZWFQcm94eTooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHkmKXByb2Nlc3MKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UsIHByb2Nlc3MpOwogfQog
CiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZWYzYWU0NDNkYTY0
ZDk1MTgyYjBlMjUwMDMxYjZhMTgyMGI0ZjQzNC4uZWY1MDZkYTRmNmRiNTgxOTJmNmQ3ZDY2Yzky
ZmYxYzEzZGM0YThhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04MDYsNyArODA2LDcgQEAgLSAodm9p
ZClzZXR1cEludGVyYWN0aW9uCiAgICAgCiAgICAgX2FjdGlvblNoZWV0QXNzaXN0YW50ID0gYWRv
cHROUyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7
CiAgICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBfc21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyPihzZWxmKTsKKyAgICBfc21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyPihzZWxmKTsKICAgICBfaXNFeHBlY3RpbmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0gTk87CiAg
ICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBOTzsKICAgICBfaXNEb3VibGVUYXBQZW5kaW5n
ID0gTk87CkBAIC04MjEsNyArODIxLDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVYVF9DSEVDS0lORykKLSAgICBfdGV4
dENoZWNraW5nQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0Q2hlY2tp
bmdDb250cm9sbGVyPigqX3BhZ2UpOworICAgIF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFnZSk7CiAjZW5kaWYK
IAogICAgIF9oYXNTZXRVcEludGVyYWN0aW9ucyA9IFlFUzsKQEAgLTExOTYsNyArMTE5Niw3IEBA
IC0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3CiAgICAgICAgIHJldHVybiBO
TzsKIAogICAgIGlmICghX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyKQotICAgICAgICBfaW5wdXRW
aWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXI+KHNlbGYpOworICAgICAgICBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBt
YWtlVW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOwogCiAgICAg
Qk9PTCBkaWRCZWNvbWVGaXJzdFJlc3BvbmRlcjsKICAgICB7CkBAIC01MzExLDcgKzUzMTEsNyBA
QCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQogICAgICAgICAvLyBEZWZlciB2aWV3IHVwZGF0ZXMg
dW50aWwgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIGEgbm90aWNlYWJsZSBmbGFz
aCB3aGVuIHN3aXRjaGluZyBmb2N1cwogICAgICAgICAvLyBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQg
cmVxdWlyZSB0aGUga2V5Ym9hcmQuCiAgICAgICAgIGlmICghaW5wdXRWaWV3VXBkYXRlRGVmZXJy
ZXIpCi0gICAgICAgICAgICBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CisgICAgICAgICAgICBp
bnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlcj4oc2VsZik7CiAgICAgICAgIFtzZWxmIF9lbGVtZW50RGlkQmx1cl07CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpp
bmRleCBiMDI4MjQ4OTIwMDNhMDQ5ODkyOWU3MDZhNTkwNDU5YTRmODcxYWNkLi5jMDhmOTc4NmYw
ZWFhYjRhOTc1YmI1NjQ4Yzc0MjdjNTYzNmRiZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24mIGluZm9ybWF0aW9uLAogICAgIEFQSTo6T2JqZWN0KiB1c2VyRGF0YU9iamVjdCA9IHByb2Nl
c3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKTsK
ICAgICBpZiAobV9lZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkgewogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBlbGltaW5hdGUgbV9kZWZlcnJlZEVsZW1lbnRE
aWRGb2N1c0FyZ3VtZW50cyBhbHRvZ2V0aGVyLCBpbiBmYXZvciBvZiBvbmx5IGRlZmVycmluZyBh
Y3Rpb25zIHRoYXQgYXJlIGRlcGVuZGVudCBvbiBwb3N0LWxheW91dCBlZGl0b3Igc3RhdGUgaW5m
b3JtYXRpb24uCi0gICAgICAgIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cz4oRWxlbWVudERpZEZvY3Vz
QXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNO
b2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgdXNlckRhdGFPYmplY3QgfSk7CisgICAgICAgIG1f
ZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgPSBtYWtlVW5pcXVlPEVsZW1lbnREaWRG
b2N1c0FyZ3VtZW50cz4oRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVz
ZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywg
dXNlckRhdGFPYmplY3QgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNTgsNyAr
MTI1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSwgUEtQYXltZW50UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QpOwogfQogCiBVSVZpZXdDb250cm9s
bGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyLm1tCmluZGV4IDhiMTIzYjBhOTdjMDMwZTk0NTBmNWVkNGY4YzE3
NGIzMjFiYjQwN2IuLjhmZjhhMGJmNDc1YjNmN2IyMzYyMjlmNDEyZTNmMzI2NmNmOTU5NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
dWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCkBAIC04OCw2ICs4OCw3IEBA
IHByaXZhdGU6CiB9OwogCiBjbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgc2V0UGFy
ZW50KFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJl
bnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tCmluZGV4IDgzNDM0ODg5Y2RjZjI0OWMxYzI3OTFiZDA3YmZmZmEyMDFjZjQ4N2QuLmE5
MTI5NTNlYzkxYzI3MzM2MjY3NjNkYWY5ZGEyNmIyNDkzM2M2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTEwOCw3ICsxMDgs
NyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoTlNWaWV3KiB2aWV3LCBXS1dlYlZp
ZXcgKndlYlZpZXcpCiAgICAgOiBQYWdlQ2xpZW50SW1wbENvY29hKHdlYlZpZXcpCiAgICAgLCBt
X3ZpZXcodmlldykKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICAsIG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyPigpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCiAjZW5kaWYKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIubW0KaW5kZXggNDNlOWY5NjdiYzg5NzdmYmZmOGM4NjY4YTVjY2ExZjM4
MjRjMDgwOS4uMzRhNjliYmUwYmIwZDE3NmI1NTFiYWYyZDdhMzVjMWZhYWMwMzdhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIubW0KQEAgLTU0LDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUlu
dGVydmFsIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENsaWVudCA6IFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0K
IApAQCAtMTUwLDcgKzE1MSw3IEBAIC0gKGlkKWluaXRXaXRoV2luZG93OihOU1dpbmRvdyAqKXdp
bmRvdyB3ZWJWaWV3OihOU1ZpZXcgKil3ZWJWaWV3IHBhZ2U6KFdlYktpdDo6CiAgICAgX3dlYlZp
ZXcgPSB3ZWJWaWV3OwogICAgIF9wYWdlID0gJnBhZ2U7CiAKLSAgICBfdmlkZW9GdWxsc2NyZWVu
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4oKTsKKyAgICBfdmlkZW9GdWxsc2NyZWVu
Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4oKTsKICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50
LT5zZXRQYXJlbnQoc2VsZik7CiAKICAgICBbc2VsZiB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENo
YW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0Rmlu
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbQppbmRleCA2NjAzMTdjMmZiYzc5YjY4YmI1YjczNDc2YTU4YmVmZWEwOWIwNmQzLi42
OWQ5ZDllMmQ0NDQ4NDNkMTUyNzBmNTExN2Y3NzRjZDIzN2Q1ZGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KQEAgLTU1LDYgKzU1
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xh
c3MgVGV4dEZpbmRlckZpbmRDbGllbnQgOiBwdWJsaWMgQVBJOjpGaW5kTWF0Y2hlc0NsaWVudCwg
cHVibGljIEFQSTo6RmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dEZpbmRlckZpbmRDbGllbnQoV0tUZXh0RmluZGVyQ2xp
ZW50ICp0ZXh0RmluZGVyQ2xpZW50KQogICAgICAgICA6IG1fdGV4dEZpbmRlckNsaWVudCh0ZXh0
RmluZGVyQ2xpZW50KQpAQCAtMTY4LDggKzE2OSw4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFBhZ2U6KFdlYktpdDo6V2ViUGFnZVByb3h5JilwYWdlIHZpZXc6KE5TVmlldyAqKXZpZXcgdXNl
CiAgICAgX3ZpZXcgPSB2aWV3OwogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IHVzZVBsYXRmb3Jt
RmluZFVJOwogICAgIAotICAgIF9wYWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+
c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGll
bnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CisgICAgX3BhZ2UtPnNldEZpbmRD
bGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggZWQwZDVmZmU5NTg5Zjk1
ZTQ0YTA3ZjIyMThlZDgyYzAwZjAxN2Q3ZS4uZTc0YWRhYzFlNjVlYmU1Yzk5YjMxZDkwNjdhZTYx
MTU4ZjM5ODdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1Jl
bW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29j
a2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvckNsaWVudDo6ZGlkQ2xvc2UoQ29ubmVjdGlvbklEKQogdm9pZCBSZW1vdGVJ
bnNwZWN0b3JDbGllbnQ6Omluc3BlY3QoQ29ubmVjdGlvbklEIGNvbm5lY3Rpb25JRCwgVGFyZ2V0
SUQgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJlKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwg
dGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCwgJnR5cGVdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBj
b25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBl
KTsKICAgICB9KTsKIAogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMWI2ZDljYzU0ZmM2MGI1M2U0NDAyNzFmMjMw
OGU3YzBmNDdjODc0Yy4uYTg4MzNmNjI0ODdmOWE2NzIxMDM5OWVjOWY4ZmY1ZTA5MjcxMmVkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTg0LDExICs4NCwxMSBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2Vi
UGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIGNsaWVu
dCA9IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBb
dGhpcywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVt
b3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1
ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwg
cmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKIAogICAgIC8vIFNldHVwIHRhcmdldCBwb3N0TWVzc2FnZSBsaXN0ZW5lcgotICAg
IGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVz
ZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50
PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOwogICAgIHBhZ2VQcm94eS5wYWdlR3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5h
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICBTdHJpbmdC
dWlsZGVyIGh0bWxCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKaW5kZXggYjY3ZDczYTRkYzQ4OGIzMWZkYzlhNDcy
MTk2OTE0MDQyNzQ0ODgyNS4uNWQ1MGFlNTU0NjgwYTZlOWUzZGEyY2U4NGJlNTY0ZDVjMzIzN2Y3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURp
cmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3Jl
RGlyZWN0MkQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEPiBCYWNraW5nU3Rv
cmU6OmNyZWF0ZUJhY2tlbmQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tp
bmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4o
bV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBCYWNraW5nU3RvcmU6OnBh
aW50KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRl
eCBjZDZmMDhmZjE4YmQ1NWMxNTU0NDYzZDRhNDBiNTFlNDViMmVhYjlmLi4wMzA3YzRmOWYxNDNm
ODZkYzYyMDhiNDg0YmU4ZGI0MjJkYzBmNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUGFnZUNsaWVudElt
cGw6OlBhZ2VDbGllbnRJbXBsKFdlYlZpZXcmIHZpZXcpCiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2
aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljcz4oKm1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2Uo
KSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3Bs
YXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKaW5kZXggY2Q1MzUyZGY3YWEwNGU2OWQ5YjBmOThlZDAwMWU1YzYzMzJm
NzU5My4uNjdlNWU0YjI3YTNhZTgwYWI2NjhmNmMzNDE3YzBmMGNlNmI3ZjA1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wg
V2ViVmlldzo6cmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MoKQogfQogCiBXZWJWaWV3OjpXZWJW
aWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgSFdORCBwYXJlbnRXaW5kb3cpCi0gICAgOiBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQorICAgIDogbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8
UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKIHsKICAgICByZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFz
cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggYjZkNGEwNDIwZDVhNWRiZDY0NjA4M2FmNjc4
ODA1MWJmNmNjNDdlMC4uZjJkNjJlYTk3OTBmODA3YTY1YjVkM2U1OGY4MGI5N2YwNmFkYmYzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb247CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0
b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBleHBsaWNpdCBXZWJQYXltZW50Q29vcmRpbmF0
b3IoV2ViUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVw
YWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1l
cGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggNGY4MTBjY2YzOGVjZmEyYzk5ZWNiZGE4
OWQwNDFjZWI4ZDIzMzNiOC4uYWFiMzQ1N2NlZDY0YTVhOTEwY2RjNTYyYWNjMDExNTAwZDNjNmNj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBh
ZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJH
YW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViR2FtZXBhZFByb3Zp
ZGVyOjpzZXRJbml0aWFsR2FtZXBhZHMoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYgZ2FtZXBh
ZERhCiAgICAgICAgIGlmIChnYW1lcGFkRGF0YXNbaV0uaXNOdWxsKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBtX2dhbWVwYWRzW2ldID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJH
YW1lcGFkPihnYW1lcGFkRGF0YXNbaV0pOworICAgICAgICBtX2dhbWVwYWRzW2ldID0gbWFrZVVu
aXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YXNbaV0pOwogICAgICAgICBtX3Jhd0dhbWVwYWRz
W2ldID0gbV9nYW1lcGFkc1tpXS5nZXQoKTsKICAgICB9CiB9CkBAIC03Niw3ICs3Niw3IEBAIHZv
aWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVkKGNvbnN0IEdhbWVwYWREYXRh
JiBnYW1lcGFkRGF0YSkKIAogICAgIEFTU0VSVCghbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRl
eCgpXSk7CiAKLSAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YSk7CisgICAgbV9nYW1lcGFkc1tnYW1lcGFk
RGF0YS5pbmRleCgpXSA9IG1ha2VVbmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGEpOwogICAg
IG1fcmF3R2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBtX2dhbWVwYWRzW2dhbWVwYWRE
YXRhLmluZGV4KCldLmdldCgpOwogCiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCmluZGV4
IGZkNjUyM2Q2ZmE3ZDc1OTNkMWI4ZDNiMzJiYWI0NjNhOTY4ZWFhMjguLjYzM2YyMmZkZmU0Mjcy
YjM5ZGUyNWVhMGU0YTBhMDRkN2NkZTZjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IDBiYjRmMmI0MjFhM2VjMjI4NzU0ZTYzODI5ZDQx
YWJiZTJlMDZmOGQuLmE2YzI4NzE2YWIxNjc4YWZkZDU3NGM5ZGY5ZmUyODY4NjM0NjMwMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV2ViUHJvY2Vz
czsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1Ymxp
YyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJH
ZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9u
TWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCBmM2VjNzIwODdj
YTI4ODY3ZjU0ZDlkZjBmNTBkODcxMDJlMDE2ZmEyLi5jYTg1ZDU4NWRjZjFiNzZlZjBiOGQxMWQ1
OWFkNjYwNGFjM2YxODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
V0tUeXBlSUQgV0tCdW5kbGVHZXRUeXBlSUQoKQogCiB2b2lkIFdLQnVuZGxlU2V0Q2xpZW50KFdL
QnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVDbGllbnRCYXNlICp3a0NsaWVudCkKIHsKLSAg
ICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9J
bXBsKGJ1bmRsZVJlZiktPnNldENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRTZXJ2aWNlV29ya2Vy
UHJveHlDcmVhdGlvbkNhbGxiYWNrKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgdm9pZCAoKmNhbGxi
YWNrKSh1aW50NjRfdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGYxMmE1YmE3
NzRkNmNjNjhkMDg0ZjFmNjAyMWNlYmYzODFhYTNhNTguLmRjMDc1OGFkNzVhZjM2MWRmYmU4MTZl
YjExM2Y0MWM3ZjA5ZDgxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpCiB2b2lkIFdLQnVuZGxl
UGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChw
YWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0od2tDbGll
bnQpOwpAQCAtODYsMjIgKzg2LDIyIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRlCiAKIHZvaWQg
V0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1
bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1w
bChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQod2tDbGllbnQgPyBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pigqd2tD
bGllbnQpIDogc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGll
bnQ+KCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudCh3a0NsaWVudCA/IG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkVkaXRvckNsaWVudD4oKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVu
dChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRm9ybUNsaWVudEJhc2UqIHdr
Q2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZv
cm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldElu
amVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5p
cXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Pih3a0NsaWVudCkpOwog
fQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3Vy
Y2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJl
ZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAK
IHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTExMSw3ICsxMTEs
NyBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZiwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xp
ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VVSUNsaWVudEJhc2UqIHdr
Q2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0
ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlD
bGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0RnVsbFNjcmVlbkNs
aWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVu
dEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3Bw
CmluZGV4IGViZDNlZjVmMjkzMDhjMTQxOTNhMTgxYjdlMWU0YTQyNWZkMjFkZDIuLjY5ZjdhZjIy
YjU2NzUwNGQ0ZjMxZjBkN2E3MGI4NzRlMDlmYTU1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlT3ZlcmxheS5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50QmFzZT4g
ewogfQogCiBjbGFzcyBQYWdlT3ZlcmxheUNsaWVudEltcGwgOiBBUEk6OkNsaWVudDxXS0J1bmRs
ZVBhZ2VPdmVybGF5Q2xpZW50QmFzZT4sIHB1YmxpYyBXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFBhZ2VPdmVybGF5Q2xpZW50SW1wbChXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZSog
Y2xpZW50KQogICAgIHsKQEAgLTIxNiw3ICsyMTcsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VP
dmVybGF5R2V0VHlwZUlEKCkKIAogV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VP
dmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsK
LSAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VPdmVybGF5Q2xpZW50
SW1wbD4od2tDbGllbnQpOworICAgIGF1dG8gY2xpZW50SW1wbCA9IG1ha2VVbmlxdWU8UGFnZU92
ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7CiAgICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6Oldl
YlBhZ2VPdmVybGF5OjpjcmVhdGUoV1RGTW92ZShjbGllbnRJbXBsKSkubGVha1JlZigpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQppbmRl
eCBhY2MzNWEyMWI1OWYxYWEzMWUzMzA1MWE2NmJjMTMwNTk5NjY5OWQzLi5kNmZmZDFjY2MwNGE5
M2E3YTA5ZDJiMzY1NTlhOGYwYzA5NTBmZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFj
L1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQpAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBQYWdlQmFubmVyQ2xpZW50
SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJhc2U+LCBwdWJsaWMg
UGFnZUJhbm5lcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBQYWdlQmFubmVyQ2xpZW50SW1wbChXS0J1bmRsZVBhZ2VCYW5uZXJD
bGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAtMTAzLDcgKzEwNCw3IEBAIFdLQnVuZGxlUGFn
ZUJhbm5lclJlZiBXS0J1bmRsZVBhZ2VCYW5uZXJDcmVhdGVCYW5uZXJXaXRoQ0FMYXllcihDQUxh
eWVyICpsYXllciwKICAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgYXV0byBjbGllbnRJbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OlBhZ2VCYW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAgYXV0byBjbGllbnRJ
bXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VCYW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7
CiAgICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6OlBhZ2VCYW5uZXI6OmNyZWF0ZShsYXllciwgaGVp
Z2h0LCBjbGllbnRJbXBsLnJlbGVhc2UoKSkubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01P
YmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcAppbmRleCA0MjEwMWY4YzgyY2IyYTU0ODNi
YWU0ZGM4NDgwN2I0MTY1YTkyZDg2Li4yMmI0MGU0MzliYmI2MDE1ZTE4YWE4YzI1NThlMGU2OTNm
NWViMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBET01PYmplY3RD
YWNoZURhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBET01P
YmplY3RDYWNoZURhdGEoR09iamVjdCogd3JhcHBlcikKICAgICAgICAgOiBvYmplY3Qod3JhcHBl
cikKICAgICAgICAgLCBjYWNoZVJlZmVyZW5jZXMoMSkKQEAgLTc3LDE1ICs3OCw4IEBAIHN0YXRp
YyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXAmIGRvbU9iamVjdENhY2hlRnJhbWVPYnNl
cnZlcnMoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBET01PYmplY3RDYWNoZUZyYW1l
T2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6
OkZyYW1lJiBmcmFtZSkKLXsKLSAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZmcmFt
ZSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2Jz
ZXJ2ZXI+KGZyYW1lKTsKLSAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci19Ci0K
IGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6
OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1l
JiBmcmFtZSkKICAgICAgICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoJmZyYW1lKQpAQCAt
MTA1LDcgKzk5LDcgQEAgY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyIGZpbmFsOiBw
dWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmUKICAgICAgICAgaWYgKGRvbVdp
bmRvdyAmJiAoIW1fZG9tV2luZG93T2JzZXJ2ZXIgfHwgbV9kb21XaW5kb3dPYnNlcnZlci0+d2lu
ZG93KCkgIT0gZG9tV2luZG93KSkgewogICAgICAgICAgICAgLy8gTmV3IERPTVdpbmRvdywgY2xl
YXIgdGhlIGNhY2hlIGFuZCBjcmVhdGUgYSBuZXcgRE9NV2luZG93T2JzZXJ2ZXIuCiAgICAgICAg
ICAgICBjbGVhcigpOwotICAgICAgICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlzKTsKKyAgICAgICAg
ICAgIG1fZG9tV2luZG93T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERPTVdpbmRvd09ic2VydmVyPigq
ZG9tV2luZG93LCAqdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBtX29iamVjdHMuYXBwZW5k
KCZkYXRhKTsKQEAgLTE5MSw2ICsxODUsMTQgQEAgY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9i
c2VydmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmUKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RE9NV2luZG93T2JzZXJ2ZXI+IG1fZG9tV2luZG93T2JzZXJ2ZXI7
CiB9OwogCitzdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyJiBnZXRPckNyZWF0ZURP
TU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCit7CisgICAg
RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2Jq
ZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpLmFkZCgmZnJhbWUsIG51bGxwdHIpOworICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyPihmcmFtZSk7CisgICAgcmV0dXJuICpy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIHN0ZDo6
dW5pcXVlX3B0cjxET01PYmplY3RDYWNoZURhdGE+PiBET01PYmplY3RNYXA7CiAKIHN0YXRpYyBE
T01PYmplY3RNYXAmIGRvbU9iamVjdHMoKQpAQCAtMjE1LDcgKzIxNyw3IEBAIHZvaWQgRE9NT2Jq
ZWN0Q2FjaGU6OnB1dCh2b2lkKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCiB7CiAgICAg
RE9NT2JqZWN0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0cygpLmFkZChvYmplY3RI
YW5kbGUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRh
PihHX09CSkVDVCh3cmFwcGVyKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBlcikpOwogfQogCiB2
b2lkIERPTU9iamVjdENhY2hlOjpwdXQoV2ViQ29yZTo6Tm9kZSogb2JqZWN0SGFuZGxlLCB2b2lk
KiB3cmFwcGVyKQpAQCAtMjI0LDcgKzIyNiw3IEBAIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChX
ZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCiAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFw
cGVyKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0
Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CiAgICAgaWYgKFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IG9iamVjdEhhbmRsZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBnZXRPckNy
ZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcigqZnJhbWUpLmFkZE9iamVjdENhY2hlRGF0
YSgqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggNGNjZWM2MmVmMGUxMTMxZmExM2Y3ZmIw
NjBjODBlMDdlZTQyNTFhZi4uNGQ3NDJlNDA5YmJmYzdjZmFiNDA4Y2Q2NTM4YWVmOWYyMjhmZDcy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNw
cApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlh
bGl6ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBBUEk6Ok9iamVjdCogdXNlCiAgICAgc2Nhbk1v
ZHVsZXMod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgbW9kdWxlUGF0aHMpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRv
IG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtb2R1bGVQYXRoc1tpXSk7CisgICAg
ICAgIGF1dG8gbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKICAg
ICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBpZiAoaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbihtb2R1bGUuZ2V0KCksIHVzZXJEYXRhLmdldCgp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKaW5kZXggMDQwNzJlYjg2
NGRiZTM1ZjgwZGZjODZhZDBlODgzYzNlOTljZTQ0Zi4uY2NiNTFlMGQ5NjQwYzY2Zjg1OTZlNDc0
MTcxNDA1OGU5MTM5NzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVh
dGUoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIHsKICAgICBXZWJLaXRXZWJFZGl0b3IqIGVkaXRv
ciA9IFdFQktJVF9XRUJfRURJVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRURJVE9S
LCBudWxscHRyKSk7CiAgICAgZWRpdG9yLT5wcml2LT53ZWJQYWdlID0gd2ViUGFnZTsKLSAgICB3
ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50PihlZGl0b3IpKTsKKyAgICB3ZWJr
aXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQo
bWFrZVVuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50PihlZGl0b3IpKTsKICAgICByZXR1cm4gZWRpdG9y
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4
IDRhMjNiZjU2MDEwN2MzMWYxYTRkZTJjOTYxMjk5YTcwMTA4MTc1MDEuLmUzMDZlM2ZlZjI2MzFk
NTQ2NjU1NzExNmU1ZTQ4N2QzNzFjNzg1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRXZWJFeHRlbnNpb24uY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgY2xhc3MgV2ViRXh0ZW5zaW9u
SW5qZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6
Q2xpZW4KIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVj
dGVkQnVuZGxlKiBidW5kbGUpCiB7CiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24g
PSBXRUJLSVRfV0VCX0VYVEVOU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VYVEVO
U0lPTiwgTlVMTCkpOwotICAgIGJ1bmRsZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2Vi
RXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4dGVuc2lvbikpOworICAgIGJ1bmRsZS0+
c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4
dGVuc2lvbikpOwogICAgIHJldHVybiBleHRlbnNpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcAppbmRleCBjZmM1MDMxZWQ2ZTRhMjk1NGZlMDJhMDNkYTg3YTE2MWNk
MmQzMDgyLi5jOTIwNGIyMzk4MWQ3ZjE3YWQwNzNiOWVkNDEyYTg3NzY4NWNlN2QzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC05NSw2ICs5NSw3IEBAIFdFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRXZWJQYWdlLCB3ZWJraXRfd2ViX3BhZ2UsIEdfVFlQRV9PQkpFQ1Qp
CiBzdGF0aWMgdm9pZCB3ZWJGcmFtZURlc3Ryb3llZChXZWJGcmFtZSopOwogCiBjbGFzcyBXZWJL
aXRGcmFtZVdyYXBwZXIgZmluYWw6IHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYktpdEZyYW1lV3Jh
cHBlcihXZWJGcmFtZSYgd2ViRnJhbWUpCiAgICAgICAgIDogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyKHdlYkZyYW1lLmNvcmVGcmFtZSgpKQpAQCAtMTI4LDcgKzEyOSw3IEBAIHN0YXRpYyBXZWJL
aXRGcmFtZSogd2Via2l0RnJhbWVHZXRPckNyZWF0ZShXZWJGcmFtZSogd2ViRnJhbWUpCiAgICAg
aWYgKHdyYXBwZXJQdHIpCiAgICAgICAgIHJldHVybiB3cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgp
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEZyYW1lV3JhcHBlcj4gd3JhcHBlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0RnJhbWVXcmFwcGVyPigqd2ViRnJhbWUpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+IHdyYXBwZXIgPSBtYWtlVW5pcXVlPFdlYktp
dEZyYW1lV3JhcHBlcj4oKndlYkZyYW1lKTsKICAgICB3cmFwcGVyUHRyID0gd3JhcHBlci5nZXQo
KTsKICAgICB3ZWJGcmFtZU1hcCgpLnNldCh3ZWJGcmFtZSwgV1RGTW92ZSh3cmFwcGVyKSk7CiAg
ICAgcmV0dXJuIHdyYXBwZXJQdHItPndlYmtpdEZyYW1lKCk7CkBAIC02NzgsMTEgKzY3OSwxMSBA
QCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCiAg
ICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IFdFQktJVF9XRUJfUEFHRShnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCX1BBR0UsIE5VTEwpKTsKICAgICBwYWdlLT5wcml2LT53ZWJQYWdlID0gd2Vi
UGFnZTsKIAotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFnZSkpOwotICAgIHdl
YlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50
PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VVSUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVk
QnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7
CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQobWFrZVVu
aXF1ZTxQYWdlUmVzb3VyY2VMb2FkQ2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUxvYWRlckNsaWVudD4o
cGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQo
bWFrZVVuaXF1ZTxQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5z
ZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1ha2VVbmlxdWU8UGFnZVVJQ2xpZW50PihwYWdlKSk7
CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8UGFn
ZUZvcm1DbGllbnQ+KHBhZ2UpKTsKIAogICAgIHJldHVybiBwYWdlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0
SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQppbmRleCA4MTA1NWNlN2ZkZWJhMzE4ZGFiMDY4MjYz
NGM2YmQ4NGEzN2ZhZThjLi4wODRmMzAwNWQ2MTAzZDRlMjUwMzNjMjU2YzcwYzBlMDY0MDQxY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQpAQCAtNDUsNyArNDUs
NyBAQCAtIChpZClpbml0V2l0aFJhbmdlOihXS0RPTVJhbmdlICopcmFuZ2UKICAgICBpZiAoIXNl
bGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfdGV4dEl0ZXJhdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KFdlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFu
Z2UpKTsKKyAgICBfdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0
b3I+KFdlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFuZ2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDQ4ODAwYmIzMTc5MDY1ZTRl
NzMyOTMwNjkwNTQ2ODBlNDM0YWYxZmYuLjQyMDIzOTZhYmFmYWYzMGQ3MTg5YWViNjg1MDllYTI3
MTcxYjk3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTU0NCw3ICs1
NDQsNyBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5G
b3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVsZWdhdAogICAgIH07CiAKICAgICBpZiAoZm9ybURl
bGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOworICAgICAgICBfcGFnZS0+c2V0SW5qZWN0
ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOwogICAgIGVs
c2UKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChudWxscHRyKTsK
IH0KQEAgLTY3Myw3ICs2NzMsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxX
S1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgIH07CiAK
ICAgICBpZiAoZWRpdGluZ0RlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnQ+KHNlbGYpKTsKKyAgICAgICAg
X3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG1ha2VVbmlxdWU8Q2xpZW50Pihz
ZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAyMGNlNTU5MTFkNzA2
NTFjMzM1YTcwYWNmMjRlNWJkZmMyMWJkNjMxLi45OTc5ZDYzODRkZmY1Yzk4MDU5MWYyOTA4M2M5
MzcyOTYzNDRhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVkQnVuZGxlOjpjcmVhdGUoV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogSW5qZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKGNv
bnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3Bh
dGgocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgLCBtX3BsYXRmb3JtQnVuZGxl
KDApCi0gICAgLCBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OkNsaWVudD4oKSkKKyAgICAsIG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Q2xpZW50PigpKQogewogfQogCkBAIC0xMTQsNyArMTE0LDcgQEAgSW5qZWN0ZWRCdW5kbGU6
On5JbmplY3RlZEJ1bmRsZSgpCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAg
aWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVu
dCA9IFdURk1vdmUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAppbmRl
eCAwY2E1ZWE2ZDJhYmU1NzIxNTRkMjFiZWQwY2M5YTA1M2U3ZDY2YzE4Li5iZmIzZDA0NTE0Mzcz
NmMzMWRmOTg4YWIxYjAwZGU0MmI4NTMwODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vz
czsKIAogY2xhc3MgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNz
U3VwcGxlbWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcihXZWJQcm9jZXNzJikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZDdjNWM2ODM0NGI3
MjczOGQ5NDk3ZGYwMTJjYTM3NmJiODQxODhkYS4uYjBiZDUzNGNlMTlkNzM4NjFkODE3NmE4MjA1
Y2RjZTYxOTVmZDA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBh
Z2U7CiAKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+LCBwcml2YXRl
IFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKFdlYlBhZ2UmKTsKICAgICB+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA3MzM1Mjc2NTg3MWQ4MjU1YTIzZGI3YjU1ZTZk
NDRlZTczMzkyMmQ3Li4yZTU3YWYyNDgzYmQzNmIzZGQ4NWU0ZWMxOGRkZTEwZjQ0MzZlODZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtMTMyLDM4ICsxMzIsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kTWVzc2FnZShUJiYgbWVzc2FnZSwgc2l6ZV90IGJ5dGUK
ICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi1XZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tl
dENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGF1dG8gYnl0ZUxl
bmd0aCA9IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRB
bW91bnQoYnl0ZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBTZW5kRmFpbDsKLQotICAgIGlmICht
X3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2Vz
OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0
aCk7Ci0gICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2FnZSkpOwotCi0gICAgcmV0dXJuIFNlbmRTdWNj
ZXNzOwotfQotCi1XZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6
OnNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKLXsKLSAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRB
bW91bnQoYnl0ZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBTZW5kRmFpbDsKLQotICAgIGlmICht
X3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2Vz
OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9wZW5k
aW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KGJpbmFy
eURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKLQotICAgIHJldHVybiBTZW5kU3VjY2Vz
czsKLX0KLQogY2xhc3MgQmxvYkxvYWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpGaWxlUmVh
ZGVyTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBCbG9iTG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6Qmxv
YiYgYmxvYiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ICAgICAgICA6IG1fbG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsZVJlYWRlckxv
YWRlcj4oV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMp
KQorICAgICAgICA6IG1fbG9hZGVyKG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cj4oV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpKQog
ICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgewogICAgICAgICBtX2xvYWRlci0+c3RhcnQoZG9jdW1lbnQsIGJsb2IpOwpAQCAtMjI2
LDcgKzE5OSw3IEBAIGNsYXNzIFBlbmRpbmdNZXNzYWdlIHsKIAogICAgIFBlbmRpbmdNZXNzYWdl
KFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6QmxvYiYgYmxvYiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IG1fdHlw
ZShUeXBlOjpCbG9iKQotICAgICAgICAsIG1fYmxvYkxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPEJs
b2JMb2FkZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpCisg
ICAgICAgICwgbV9ibG9iTG9hZGVyKG1ha2VVbmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJs
b2IsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSkKICAgICB7CiAgICAgfQogCkBAIC0yNDQs
MTMgKzIxNyw0MCBAQCBjbGFzcyBQZW5kaW5nTWVzc2FnZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKIH07CiAKK1dlYlNvY2tldENoYW5uZWw6OlNlbmRS
ZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOworICAgIGlmICghaW5j
cmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIFNlbmRGYWls
OworCisgICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgc2VuZE1l
c3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgbWVzc2Fn
ZSB9LCBieXRlTGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFw
cGVuZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdlKSk7CisKKyAgICByZXR1cm4g
U2VuZFN1Y2Nlc3M7Cit9CisKK1dlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQoreworICAgIGlmICghaW5jcmVhc2VC
dWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIFNlbmRGYWlsOworCisg
ICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgc2VuZE1lc3NhZ2Uo
TWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVy
ZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBi
eXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CisgICAgZWxzZQorICAgICAg
ICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4oYmlu
YXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOworCisgICAgcmV0dXJuIFNlbmRTdWNj
ZXNzOworfQorCiBXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6
OnNlbmQoV2ViQ29yZTo6QmxvYiYgYmxvYikKIHsKICAgICAvLyBBdm9pZCB0aGUgQmxvYiBxdWV1
ZSBhbmQgbG9hZGluZyBmb3IgZW1wdHkgYmxvYnMuCiAgICAgaWYgKCFibG9iLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIHNlbmQoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJsb2Iuc2l6ZSgpLCAx
KSwgMCwgMCk7CiAKLSAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nTWVzc2FnZT4obV9kb2N1bWVudC5nZXQoKSwgYmxvYiwgW3RoaXNdIHsKKyAgICBt
X3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obV9kb2N1
bWVudC5nZXQoKSwgYmxvYiwgW3RoaXNdIHsKICAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdNZXNz
YWdlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1lc3NhZ2UgPSBtX3BlbmRpbmdN
ZXNzYWdlcy5maXJzdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCAwOTRhYzcx
ZjdlNWVmZmFiNzQ4NWZjZWZjYWU1NDg5M2RiM2UwNTA2Li43ZWMzN2NkZjA5ZDM5MGEzODI3YTY5
Y2EzZjYwYTZjMzA1NmRhNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
Y2xhc3MgQXN5bmNSZXNvbHZlckZhY3RvcnkgOiBwdWJsaWMgd2VicnRjOjpBc3luY1Jlc29sdmVy
RmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2YXRlOgogICAgIHJ0
Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogQ3JlYXRlKCkgZmluYWwKICAgICB7CkBAIC00Niw3
ICs0Nyw3IEBAIGNsYXNzIEFzeW5jUmVzb2x2ZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6QXN5
bmNSZXNvbHZlckZhY3RvcnkgewogCiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9u
KHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0Yzo6UGFja2V0U29j
a2V0RmFjdG9yeSogc29ja2V0RmFjdG9yeSwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKSwgKnNvY2tl
dEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNS
ZXNvbHZlckZhY3Rvcnk+KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRl
cjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCksICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKIH0KIAog
dm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Jlc29sdmVyLmgKaW5kZXggNWQ2MzgzZjZiNTA2NTNiNWM2NzA3MDcwNWM2YzEw
Mjg3MGZhMDIzMS4uMzk5MDY5OWQwNzc4ZmViMTdiMGNhOGU2MDc4MTQxMDhhNWMwMGFmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Jlc29sdmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OwogCiBjbGFzcyBMaWJXZWJSVENSZXNvbHZl
ciBmaW5hbCA6IHB1YmxpYyBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ1Jlc29sdmVyKHVpbnQ2
NF90IGlkZW50aWZpZXIpIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29j
a2V0RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKaW5kZXggZjhiN2VkMjI5YzRmNmYyZGMwMzYxMzJj
Yzk2ZTQxMWVlY2E1NzAyZS4uMjM1ODJkZTc1OWI5ODQ1ZWI3ZmU0MDY0NDM2NWVmYmMxOWI3NWQx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcApAQCAtNTAsNyArNTAsNyBA
QCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29ja2V0QWRkcmVzcyBwcmVwYXJlU29ja2V0QWRkcmVzcyhj
b25zdCBydGM6OlNvY2tldEFkZHJlc3MmCiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldl
YlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldChjb25zdCBydGM6OlNvY2tl
dEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQsIGlu
dCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29j
a2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKKyAg
ICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3Vu
aXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyVENQLCBh
ZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQt
PmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2lk
ZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9IHByZXBhcmVTb2NrZXRB
ZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKSwgbWluUG9y
dCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7CkBAIC02Niw3ICs2Niw3IEBAIHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldChj
b25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rv
cnk6OmNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVp
bnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJ
ZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRjOjpTb2Nr
ZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2Nr
ZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpU
eXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKICAgICBtX3NvY2tldHMu
c2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCiAgICAgY2FsbE9uTWFp
blRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigpLCBhZGRyZXNzID0gcHJl
cGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlv
bnMpLCBtaW5Qb3J0LCBtYXhQb3J0XSgpIHsKQEAgLTgwLDcgKzgwLDcgQEAgcnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNvbnN0
IHJ0Yzo6U29ja2UKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFj
dG9yeTo6Y3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgbG9j
YWxBZGRyZXNzLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZUFkZHJlc3MsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nJiYgdXNlckFnZW50LCBpbnQgb3B0aW9ucykKIHsK
LSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhp
cywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6Q2xp
ZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MpOworICAgIGF1dG8gc29ja2V0ID0g
bWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRp
ZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywgcmVt
b3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENTb2NrZXQ6OlNUQVRF
X0NPTk5FQ1RJTkcpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNv
Y2tldC5nZXQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCog
TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0YzoK
IAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRl
TmV3Q29ubmVjdGlvblNvY2tldChMaWJXZWJSVENTb2NrZXQmIHNlcnZlclNvY2tldCwgdWludDY0
X3QgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXIsIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYgcmVtb3RlQWRkcmVzcykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldl
YlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0LmxvY2Fs
QWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8
TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldl
YlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0LmxvY2Fs
QWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNldFN0YXRlKExpYldlYlJU
Q1NvY2tldDo6U1RBVEVfQ09OTkVDVEVEKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRl
bnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpkZXRhY2goTGliV2ViUlRDU29ja2V0JiBzb2NrZXQpCiAKIHJ0
Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRl
QXN5bmNSZXNvbHZlcigpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOworICAgIGF1
dG8gcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1Jlc29sdmVyPigrK3NfdW5pcXVlUmVz
b2x2ZXJJZGVudGlmaWVyKTsKICAgICBhdXRvKiByZXNvbHZlclBvaW50ZXIgPSByZXNvbHZlci5n
ZXQoKTsKICAgICBtX3Jlc29sdmVycy5zZXQocmVzb2x2ZXJQb2ludGVyLT5pZGVudGlmaWVyKCks
IFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4gcmVzb2x2ZXJQb2ludGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDJkMWU4NDI0N2JkMGEzMGM5NGQxZjJlYTMwMWRk
NTVkMDJhNmUwNzYuLmIyNzEzZjQ2YzFmYzEzYzlmMjdiYmUzOWNhNWRjNTE4NTBiMTgzZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2Vi
UGFnZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIg
OiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV2ViTm90aWZpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJG
dW5jcy5jcHAKaW5kZXggMTZhMWE3ZjgzNDQ2MDUzZjMzZDY1NGU4MzMzMjI5NTBlZTk5NGQ3Mi4u
ZDczZjFmMTZmODkwNzY5YzcyY2M5ZGQ0NDBkMjI5MjFmZjVmZmE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVu
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBQbHVnaW5EZXN0
cnVjdGlvblByb3RlY3RvciB7CiAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0
b3IoTmV0c2NhcGVQbHVnaW4qIHBsdWdpbikKICAgICB7CiAgICAgICAgIGlmIChwbHVnaW4pCi0g
ICAgICAgICAgICBtX3Byb3RlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29udHJvbGxl
cjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdp
biktPmNvbnRyb2xsZXIoKSk7CisgICAgICAgICAgICBtX3Byb3RlY3RvciA9IG1ha2VVbmlxdWU8
UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0
PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA2OWEzYzkzZjEzMjZmYTRjNmY3ZmViZjhhYjFi
MmNhNGM3NzZiYzBlLi41OWY0ODI1MWYyODg1NGM2ZDE2ODBiMWQ2NGRmYWE1YTQ3YzY4MTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgdWludDMyX3QgTmV0
c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIodW5zaWduZWQgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0
LCB2b2lkICgqdGkKICAgICAvLyBGSVhNRTogSGFuZGxlIHdyYXBwaW5nIGFyb3VuZC4KICAgICB1
bnNpZ25lZCB0aW1lcklEID0gKyttX25leHRUaW1lcklEOwogCi0gICAgYXV0byB0aW1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRp
bWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KHRoaXMsIHRpbWVy
SUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAgICAgCiAgICAgLy8gRklYTUU6IEJh
c2VkIG9uIHRoZSBwbHVnLWluIHZpc2liaWxpdHksIGZpZ3VyZSBvdXQgaWYgd2Ugc2hvdWxkIHRo
cm90dGxlIHRoZSB0aW1lciwgb3IgaWYgd2Ugc2hvdWxkIHN0YXJ0IGl0IGF0IGFsbC4KICAgICB0
aW1lci0+c3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGUwYWJjMmM3YjQxMjk5MzAw
MmJiYWI4YmRmYWI3ZjI2NTFhZGM1N2YuLmI2Yzc2YjZlZDcxNGNhYWEzYTQxZGRlNDFjMWQ2YTEw
NGZiN2FlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMzA4LDYgKzMwOCw3IEBAIGNsYXNz
IE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiAgICAgVmVjdG9yPGJvb2wsIDg+IG1f
cG9wdXBFbmFibGVkU3RhdGVzOwogCiAgICAgY2xhc3MgVGltZXIgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGltZXIpOwog
CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IDA0
OTYyOGY1YzYyNzAyZTRkNWQ0MTExODIwMTIzYmE1ZjRiOTY1MjQuLmJkYWExNDQ3ODQyMjY5NWQ1
MGVhODQ4YWFmY2NiY2UxMmQyYWQ5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxp
dmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmIChtX3RyYW5z
ZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9kZWxpdmVyeURhdGEp
Ci0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHVp
bnQ4X3Q+PigpOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBtYWtlVW5pcXVlPFZlY3Rv
cjx1aW50OF90Pj4oKTsKIAogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+cmVzZXJ2ZUNhcGFjaXR5
KG1fZGVsaXZlcnlEYXRhLT5zaXplKCkgKyBsZW5ndGgpOwogICAgICAgICBtX2RlbGl2ZXJ5RGF0
YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgx
MS5jcHAKaW5kZXggNDRkMTFiNTdjM2VhNmQ1MThjMThkMDRiODIyZDI4NmQ1M2U5NjhjZi4uMDdk
NTU2YzNiN2ZjNjM3MTljMmEyNTU5ZTBhYWQ2YzIyNmMwN2NhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TmV0c2NhcGVQbHVnaW5YMTE+IE5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUoTmV0c2NhcGVQ
bHVnaW4mIHBsdQogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChwbHVnaW4uaXNXaW5kb3dl
ZCgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4o
cGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5l
dHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRvd0lEKTsKICNlbmRpZgogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlz
cGxheSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwg
ZGlzcGxheSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luWDExOjpOZXRzY2FwZVBsdWdpblgxMShOZXRz
Y2FwZVBsdWdpbiYgcGx1Z2luLCBEaXNwbGF5KiBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuaAppbmRleCA0MWU5YjZjOWQ4NGNhYTQ5NThlMzg1YjllZDgwZmRkN2UxMWRj
YTViLi4xZjlmZDg3ZmEzYTMwYzkzNjA0MzhlZDU5N2RjMzJjODk1ODdhZjE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQ
bHVnaW5YMTEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIE5ldHNjYXBlUGx1Z2luOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdpblgxMSBm
aW5hbCA6IHB1YmxpYyBOZXRzY2FwZVBsdWdpblVuaXggeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQbHVn
aW5YMTE+IGNyZWF0ZShOZXRzY2FwZVBsdWdpbiYpOwogICAgIE5ldHNjYXBlUGx1Z2luWDExKE5l
dHNjYXBlUGx1Z2luJiwgRGlzcGxheSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmluZGV4IGExZjgwN2UxZTU1MDcyM2VmZWVh
MTc3MTMzYjgxZGZmNGQxNzZiMzUuLmI1NzJhYTNhNTM2ZDQ4NWNiOWI4MTdhMTZlMDJjMzMyYzRi
YzIxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Db250cm9sbGVyLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBjbGFzcyBQbHVnaW5Db250cm9sbGVy
IHsKIAogICAgIC8vIEhlbHBlciBjbGFzcyBmb3IgZGVsYXlpbmcgZGVzdHJ1Y3Rpb24gb2YgYSBw
bHVnLWluLgogICAgIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHsKKyAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBQ
bHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihQbHVnaW5Db250cm9sbGVyKiBwbHVnaW5Db250cm9s
bGVyKQogICAgICAgICAgICAgOiBtX3BsdWdpbkNvbnRyb2xsZXIocGx1Z2luQ29udHJvbGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApp
bmRleCBmMzdjMmNjMjRlM2RkOTc2M2YzZWJkZDYzMmQ4YmZkYjc3MTQ0MzQ3Li45YWI1ODM3MzBi
ODlkYmQ5NjAxZDY1MjBlZjhmOWIwYmUwMDZkYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wg
UGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAg
ICBtX2Nvbm5lY3Rpb24tPmFkZFBsdWdpblByb3h5KHRoaXMpOwogCiAgICAgLy8gQXNrIHRoZSBw
bHVnLWluIHByb2Nlc3MgdG8gY3JlYXRlIGEgcGx1Zy1pbi4KLSAgICBtX3BlbmRpbmdQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1l
dGVycz4oKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBtYWtlVW5p
cXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKIAogICAgIG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy0+cGx1Z2luSW5zdGFuY2VJRCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsK
ICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPndpbmRvd05QT2JqZWN0SUQg
PSB3aW5kb3dOUE9iamVjdElEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDdhYjg5NjZkYjkwNWFkZDEyMzk0ODE2NTBiMTlkZTRh
N2U3ZDIyM2YuLjExOWQyYjkwYzJiNDQyMzFmMjU2OTU3ZTYyZGRjYThmMTMwZmM3MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC04
OTgsNyArODk4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVh
dGVXZWJFdmVudChNb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBpZiAoZXZlbnQubWV0YUtl
eSgpKQogICAgICAgICBtb2RpZmllcnMuYWRkKFdlYkV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0
b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50
KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50LnNjcmVlbkxvY2F0aW9u
KCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWUgeyB9LCAwKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1
dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNl
dFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAs
IGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWUgeyB9LCAwKTsKIH0KIAogdm9pZCBQbHVn
aW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKaW5kZXggNmZjMDljNGY2NWIyNDViNjBiZjRkNGY1OTdhOWY5MGFkNGQwYWFm
OS4uYTFmZjAzM2IyMDRlYWZhZGM4ODhhODIwOGE4OWY3OWRhMDBiY2Y5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250CiAKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIG1vdmVk
IGRpcmVjdGx5IHRvIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24KICAgICAv
LyBJZiBpdCB3ZXJlbid0IGZvciBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQncyBkZXBl
bmRlbmNlIG9uIFdlYkRvY3VtZW50TG9hZGVyLCB0aGlzIGNvdWxkIGFscmVhZHkgaGFwcGVuLgot
ICAgIGF1dG8gZnJhbWVMb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2
aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZmZWN0aXZlVXNlckFnZW50KTsKKyAgICBhdXRvIGZyYW1l
TG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+
KCp0aGlzLCBzZXNzaW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQs
IGVmZmVjdGl2ZVVzZXJBZ2VudCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50
Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCk7CiAgICAgbV9sb2FkZXJzLmFk
ZChXVEZNb3ZlKGZyYW1lTG9hZGVyQ2xpZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaAppbmRleCA5MjBkZWQwNDBjZTU2
MTgzMzk5ZjZjOTNiODJlYjM2ZGY3MzA0OTZhLi45MzBlNDYxODE5ZTE4NmY1YTgwZDhmNjcxNmZi
MTE4YzRkYzBlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV09yaWdpblRhYmxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dPcmlnaW5UYWJsZS5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTZWN1cml0eU9y
aWdpbkRhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU1dPcmlnaW5UYWJsZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU1dPcmlnaW5U
YWJsZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmlu
ZGV4IDRkZjZmMDE5ZTU1ODU3NTUyYzg0ZGZhYjkyNTBjNDAxYTg0Y2I4MzUuLmY0Y2YyOTFhNDAx
MGIxZTdjMjQxNjdkNDU0YjU0ZWM0Yjg2NGM0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJQYWdlOwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSop
OwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAppbmRleCAzYzg3MmY1YWRmMzliZWFjZDNhNzA2NjdiMjY4OWQzOGM5YjExMTJlLi40
ZDI3NDc2ODYyMGU1YTQ2ZWI5NTA4ZmRlNDdiNTcxZTc5NmYxNzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sCiAKIHN0
ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JD
aG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCYgY2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENv
bG9yKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1f
cGFnZSwgJmNsaWVudCwgaW5pdGlhbENvbG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJD
b2xvckNob29zZXI+KCZtX3BhZ2UsICZjbGllbnQsIGluaXRpYWxDb2xvcik7CiB9CiAKICNlbmRp
ZgpAQCAtODAyLDcgKzgwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsCiAKIHN0ZDo6dW5p
cXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVu
dCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCmluZGV4IGNlZDM2YTZjMjViN2U0ZjgzNDRhNTg5OTQwMDY3OTFmN2NjOTI3
NmYuLmQ0NTU2ZDk4N2EzNjZkMTgxMTQwOGFkOTBiZjdhMzQ3ZGQ1OThkYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJD
aHJvbWVDbGllbnQoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4
IDZjMjliNGUwODEyNmU3Y2Q2Njc5Y2M0NzAyMzVjNTU3NGRlNTBkMmUuLmMxYzg5Y2Q5OWU4N2Fl
ZTg0ZWQ1NzQ2YzJlODFmNjQ3ZTgyZjFmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNv
bnRleHRNZW51Q2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaAppbmRleCAxYWQ0YzNkZTJjYjdkMzhlNjI2MmMxOTdhYWIyNGNjYTZmZWRhODIx
Li5iMjRlY2Y3NmM0NTUyNGY2MGQ4NmFlZDZmYjFlY2Y2ZjBmMzk0MjFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwog
CiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2Vi
UGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRl
eCAyNjgxMDJmZWExYTc3NTdlZDdlMTZkZGVjY2UzY2FkOGVlNmJkNDM1Li5kMjJkNGNiNzNmMjk3
M2Y1NjU1YTg3M2ViZDIyZDZiMDA2YWUwZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2Vi
RWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGlj
IFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAg
OiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMzBmNWFkNmI0
YmMyYTYzOGQ2MDM3ZjhlYzk3MzgwOWRmNmU1NmIxOC4uMzVhMzFmYzJhMzQ0YjMxMjg3MzA1MDRi
N2ZlN2ExMTVmMDExYjg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMyLDYg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJH
ZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25D
bGllbnQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKaW5kZXggN2NkYWFjZDFmYzFkNDZkNjVlYWRjM2YzYTYxMzRhYTM1NThh
MmQxMS4uZDY3YjYyYzAyZTY4ODNiNDQ4NjVmYmExNTg1MTZlYTBjYmNiNWM1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfQogCiAg
ICAgaWYgKCFtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQpCi0gICAgICAgIG1fcGFpbnRJbmRp
Y2F0b3JMYXllckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwYWludEluZGljYXRvckxheWVy
Q2xpZW50PigqdGhpcyk7CisgICAgICAgIG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IG1h
a2VVbmlxdWU8UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7CiAKICAgICBhdXRv
IHBhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUobV9wYWdlLT5kcmF3aW5nQXJlYSgp
LT5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50KTsK
ICAgICAKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1Bh
aW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcGFpbnRMYXllci0+c2V0QmFja2dy
b3VuZENvbG9yKENvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDAuMmYpKTsKIAogICAgIEtleWZyYW1l
VmFsdWVMaXN0IGZhZGVLZXlmcmFtZXMoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgIGZh
ZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4o
MCwgMSkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRp
b25WYWx1ZT4oMCwgMSkpOwogCi0gICAgZmFkZUtleWZyYW1lcy5pbnNlcnQoc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1LCAwKSk7CisgICAgZmFkZUtleWZyYW1lcy5p
bnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1LCAwKSk7CiAgICAgCiAg
ICAgYXV0byBvcGFjaXR5QW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKICAgICBvcGFj
aXR5QW5pbWF0aW9uLT5zZXREdXJhdGlvbigwLjI1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApp
bmRleCBmNWVjYzY0YzkyM2YzODZjNTBlN2I1Mjk3N2VmYzA5OWUwYmNmYWQ2Li4yN2MzZWUxNDJl
MTYxNmU0MzVmNDhkNDFmMjcyNzE1ZmU4ZTAzODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBSZXBhaW50SW5kaWNhdG9y
TGF5ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQsIHByaXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBmcmllbmQgY2xhc3MgUmVwYWludEluZGlj
YXRvckxheWVyQ2xpZW50OwogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQYWdl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IDUz
M2JlODQwY2FkNzE0NTU1ZGFmMGFhMjA3MjhhM2M5MzM1NWM5YmUuLjRiYjM3ZmRkNjA3Nzc0ZWQ4
MDlhOTY3YTc3NTE1ZmJhZmI2ZWY2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6TWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgc2luZ2xl
dG9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAxNjM3YWQxMDk3ZDc2
NDllNTBkZjc0ZjVlMDYyMjcyNzFmYWI4NDVhLi4wMGNjMGEwOGQ5MjYwNGZkZGZiNWNhNjJmNmI4
ODU5NWMzMWFiMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00MSw2ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViTm90
aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTm90aWZpY2F0aW9u
Q2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJOb3RpZmljYXRpb25DbGllbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAppbmRleCA3OTAwODRjZTQ4ZDIyNmIx
MGU2NjViODI4NDQzNDlmZGFhZmZlZTQ2Li42OWYwYWU4Mjc5NTA3YjcyOTY1ZjY1YzIxNjg3M2M0
ODFhZGY0ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyCiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X292ZXJyaWRlc01hcC5hZGQocGFzdGVib2FyZE5hbWUsIG51bGxwdHIpOwogCiAgICAgaWYgKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0
cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1h
cDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxI
YXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9IG1ha2VVbmlxdWU8SGFz
aE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBXVEZNb3ZlKHR5cGVNYXApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5o
CmluZGV4IGY2ZTAxNDk1N2VkYzI3N2RiOTgzNzMxMjdlYzEwNjNlOTM1NThjYjguLmNmOTBhNWRm
Y2ZkYTYzZWNiOTg5N2NjNjZkMGQ0ODEyOTQ0ODEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKQEAg
LTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFz
cyBXZWJQbHVnSW5DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z0luQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQbHVnSW5D
bGllbnQoV2ViUGFnZSYpOwogICAgIHZpcnR1YWwgfldlYlBsdWdJbkNsaWVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNz
VHJhY2tlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCmluZGV4IDVkZDY1YmZhMGQ1MGNjZmRiMTQ2MWZl
YjNmZTUyNDFmY2FhMGZiYTYuLjYzZDc3NGU1YTk0MjdjNzM1YjUyNDkwYmQwMWNkNzlhYjc0YTEw
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQcm9ncmVz
c1RyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQ
cm9ncmVzc1RyYWNrZXJDbGllbnQoV2ViUGFnZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5
bnRoZXNpc0NsaWVudC5oCmluZGV4IGVhZDE3ZDMwZjA1OTBkNzQ0NjcyMDU1Y2FkNzdkOTVjNmQw
YTQ3NzAuLjdiZDg3NTkwNWE2NWM3N2Q5NmMzZjc4ODQwMDE4NTgyY2ZhZjc2YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50
aGVzaXNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogICAgIAogY2xhc3MgV2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU3BlZWNoU3ludGhlc2lzQ2xp
ZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlh
Q2xpZW50LmgKaW5kZXggMTA5MzA0NTNjZTc5N2VkZDkwZGU3NmYwMzU0YjlhMWQ0MDZmMmU2ZS4u
Njk1MjE3NGI5MTJjOTcxZTM1Nzg2ZTI3YzQ4MjI1ZDJmY2ExNDAyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVk
aWFDbGllbnQuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YlBhZ2U7CiAKIGNsYXNzIFdlYlVzZXJNZWRpYUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpVc2Vy
TWVkaWFDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlJik7CiAgICAgfldlYlVzZXJNZWRpYUNsaWVudCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaAppbmRleCAwMGExZTJl
OGUyNjMzNTYzYzMwNjk5OGRkMTVhMjE4Yjk2ZDE2NTEyLi4wNzQxM2NmYzkzOTg1ZmU1ZDk5ZTk0
MDY4ZjE2MTVmNGIyNDRjNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJv
eHkuaApAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5KFdlYlBhZ2UmKTsKICAgICB+VGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggOWNmZmNjOWE5ZmQy
YjY0NDQ5MjJmODU0YWQ5N2QxZDMzMWU3MGIwZS4uYjI0NTgxYzk3ZTdhODgxNmY0NmFmOTMxOWE5
MWVhMjFiNzJiZDY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtNTUwLDcgKzU1MCw3IEBA
IHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKEdyYXBoaWNzTGF5CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKTsKICAgICB9IGVsc2UgewogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxMYXllclRyZWVIb3N0PihtX3dlYlBhZ2UpOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QgPSBtYWtlVW5pcXVlPExheWVyVHJlZUhvc3Q+KG1fd2ViUGFnZSk7CiAjZWxzZQogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggYzA3
Mzk2ZjAyZjFmYTY1ZjQ1YWNlZTcyZjEzNGY0ZmIyZDllODkwOS4uNTM1OGNkNjg2M2IzMjI2OTU4
ZWUyNzRlZmQwMzJhZDIwMDY0ZGQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIHN0ZDo6dW5pcXVl
X3B0cjxEcmF3aW5nQXJlYT4gRHJhd2luZ0FyZWE6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBj
b25zdCBXZWJQYWdlCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb246Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3
ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlmCiAgICAg
Y2FzZSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWU6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0
ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVDb29yZGlu
YXRlZEdyYXBoaWNzOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdlYlBhZ2UsIHBh
cmFtZXRlcnMpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAppbmRleCAwZjI2NDAzZWJiNzBhODExYjE4ZTk4
Nzk1ZTE5ZGU3NzQwYmU4MzYwLi4xYTUzNWYxN2Q5N2Y2NjY4Mzk3MjY5YTg2ZTI4NTdiMjliOTcy
YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQ
YWdlOwogCiBjbGFzcyBGaW5kQ29udHJvbGxlciA6IHByaXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJs
YXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRmluZENvbnRyb2xsZXIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDQ1MmY1M2JjZWRjMDA0N2Y3
MzNkMWMzNGJjZDc2NTExOTJjYjhiZTYuLjQ2ZThhYTA5OTg2NDVhOGNlNWQyZDdiOTU3Zjk5YWZk
YzM4ZjQ2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVu
c3VyZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVB
dHRhY2hlZCk7CiAKICAgICBpZiAoIW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUpCi0gICAgICAg
IG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlPih0aGlzKTsKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9
IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOwogCiAgICAgdXBkYXRl
QmFja2luZ1N0b3JlKCk7CiB9CkBAIC01MjEsNyArNTIxLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRy
aXggUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp0cmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB2YWx1ZSkKIHsKLSAgICBtX3Byb3BlcnRpZXMudHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOworICAgIG1fcHJvcGVydGllcy50cmFuc2Zv
cm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9w
ZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
VHJhbnNmb3JtQ2hhbmdlZCk7CiB9CiAKQEAgLTUzMiw3ICs1MzIsNyBAQCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QK
IAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKLSAgICBtX3Byb3BlcnRpZXMuc3VibGF5
ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1
ZSk7CisgICAgbV9wcm9wZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGll
c0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlN1YmxheWVyVHJhbnNmb3JtQ2hh
bmdlZCk7CiB9CiAKQEAgLTczOCw3ICs3MzgsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0T3BhY2l0eShmbG9hdCB2YWx1ZSkKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBtX3By
b3BlcnRpZXMuZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmls
dGVycyk7CisgICAgbV9wcm9wZXJ0aWVzLmZpbHRlcnMgPSBtYWtlVW5pcXVlPEZpbHRlck9wZXJh
dGlvbnM+KGZpbHRlcnMpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQo
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKTsKIH0KIApAQCAtODI2
LDcgKzgyNiw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRS
ZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSCiAgICAgaWYgKG1fcHJvcGVydGll
cy5zaGFwZVJvdW5kZWRSZWN0ICYmICptX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9PSBy
b3VuZGVkUmVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91
bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0
KTsKKyAgICBtX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRS
b3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGll
c0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlNoYXBlUm91bmRlZFJlY3RDaGFu
Z2VkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcAppbmRleCAxY2JkMWI0YmE3OWE3ZGY5Y2U1NWUw
NDIxZDQ0ZTY1YjQwODgyMWMyLi4wOTk1MzZiOTNjMDExYWMzZjJhMDczYzNjYTQ2NGYwNzI2NDY5
Y2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nOjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKICAg
ICA6IFBsYXRmb3JtQ0FMYXllclJlbW90ZShsYXllclR5cGUsIG93bmVyLCBjb250ZXh0KQotICAg
ICwgbV90aWxlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlz
KSkKKyAgICAsIG1fdGlsZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhp
cykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQppbmRleCA1ZTUwZTBiYTFlZjEyNDZjNmFlMDhmMjlkOTJhODMwZTBkYjRm
MjM3Li40NDQ2ZjM0ZDA0Y2NmYmZiZWIzNjliYTQ0YzMyMDZiZjBkZDIzZWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC01
OCw3ICs1OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwg
Y29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdp
bmdBcmVhKERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSwgcGFyYW1ldGVycy5kcmF3aW5n
QXJlYUlkZW50aWZpZXIsIHdlYlBhZ2UpCi0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQo
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVDb250ZXh0Pih3ZWJQYWdlKSkKKyAgICAs
IG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQ+KHdlYlBhZ2UpKQogICAgICwgbV9yb290TGF5ZXIoR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdy
YXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKSkKICAgICAsIG1fbGF5ZXJGbHVzaFRpbWVyKCp0
aGlzLCAmUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKQogewpAQCAtNDIz
LDcgKzQyMyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJz
KCkKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpX
aWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpKSk7CiAK
ICAgICBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5
ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwot
ICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8SVBDOjpFbmNvZGVyPihN
ZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVl
OjpyZWNlaXZlck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgYXV0byBjb21taXRFbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2Vz
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2Vp
dmVyTmFtZSgpLCBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29t
bWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBjb21t
aXRFbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICAvLyBGSVhNRTog
TW92ZSBhbGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlQ29sbGVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRl
eCBhYWRlM2Q5ZjE4NDRkN2YwNWMwOTIxOGQ4ZTIwNDRkNThhMmYwNWY4Li5iMmJkYzQxYjcyMzM2
YmI2ZTQ4NDkwZjczMWIyNDg1ZDI3MDc4MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsK
IAogY2xhc3MgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYpOwogICAgIH5WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKaW5kZXggNjBjZmQ4ZDJhMTc1NGE3YWNlZDU4ZDYxZGYxN2JlNGMxNDMx
MzY5NC4uYmRkNGIzOTUyNTRhNzE2NzYzOWFlY2Q3Mzg2MGUwNzJkNjljNDJmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTIwLDcgKzEy
MCw3IEBAIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdl
YlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjCiAKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6
OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKLSAgICBhdXRvIGZyYW1lID0g
Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOworICAgIGF1
dG8gZnJhbWUgPSBjcmVhdGUobWFrZVVuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CiAg
ICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShm
cmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBhdXRvIGNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUo
cGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJFbGVtZW50LCBmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVu
dC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDEzMzY1NzBkOTNhYTUxMTA2OTc4NTYxMTcwMjYwODkzYjhhM2NkYjQuLmRiMzJkYTQ4
MTM5ZTE5ZjcxNDIxMjU2NTQwYTIxNjMyMzRjYzkxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODMsMjEgKzM4MywyMSBAQCBXZWJQYWdl
OjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eShtYWtl
VW5pcXVlUmVmPFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKLSAgICAsIG1fdmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I+KCp0aGlzKSkKKyAgICAsIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihtYWtl
VW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I+KCp0aGlzKSkKICNlbGlmIEVOQUJM
RShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShHVEspCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlP
YmplY3QobnVsbHB0cikKICNlbmRpZgogICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQp
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50
PigpKQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKSkKICNlbmRpZgotICAgICwgbV9lZGl0b3JD
bGllbnQgeyBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dD4oKSB9Ci0gICAgLCBtX2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpGb3JtQ2xpZW50PigpKQotICAgICwgbV9sb2FkZXJDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpKQotICAgICwgbV9y
ZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ+KCkpCi0gICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpKQorICAgICwgbV9lZGl0b3JDbGll
bnQgeyBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSB9Cisg
ICAgLCBtX2Zvcm1DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xp
ZW50PigpKQorICAgICwgbV9sb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpKQorICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCkpCisgICAg
LCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50
PigpKQogICAgICwgbV9maW5kQ29udHJvbGxlcihtYWtlVW5pcXVlUmVmPEZpbmRDb250cm9sbGVy
Pih0aGlzKSkKLSAgICAsIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5p
cXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2lu
c3BlY3RvclRhcmdldENvbnRyb2xsZXIobWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
Q29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29u
dHJvbGxlcklEKSkKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgLCBtX2dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI+KCp0aGlzKSkKQEAgLTQ2NCwyMSArNDY0LDIxIEBAIFdlYlBhZ2U6
OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQgPSBuZXcg
V2ViUGx1Z0luQ2xpZW50KCp0aGlzKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGll
bnRGb3JNYWluRnJhbWUgPSBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0gbmV3IFdlYlByb2dyZXNzVHJhY2tlckNs
aWVudCgqdGhpcyk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0Ns
aWVudD4oKnRoaXMpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHBhZ2VDb25maWd1cmF0aW9u
LndlYkdMU3RhdGVUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4o
W3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSB7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24ud2ViR0xTdGF0ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFdlYkdMU3RhdGVUcmFja2Vy
PihbdGhpc10oYm9vbCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpIHsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRJc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wo
aXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSk7CiAgICAgfSk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRo
ZXNpc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Pigq
dGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PigqdGhp
cyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtl
VW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PigqdGhpcyk7CiAjZW5kaWYKIAogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gJldlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CkBAIC00OTMsMTQgKzQ5Mywx
NCBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBt
YWtlVW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
YXBwbGljYXRpb25NYW5pZmVzdCA9IHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdDsKICNl
bmRpZgogCi0gICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uKSk7CisgICAgbV9wYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSk7CiAKICAgICAvLyBTZXQgdGhlIHNlc3Npb25JRCAqYmVmb3JlKiB1
cGRhdGluZyB0aGUgcHJlZmVyZW5jZXMgYXMgdGhlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgcHJl
ZmVyZW5jZXMgbWF5IG5lZWQgdG8gb3ZlcnJpZGUgaXQuCiAgICAgaWYgKHBhcmFtZXRlcnMuc2Vz
c2lvbklELmlzVmFsaWQoKSkKQEAgLTg1Myw3ICs4NTMsNyBAQCB1aW50NjRfdCBXZWJQYWdlOjpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB2b2lkIFdlYlBhZ2U6OnNldEluamVj
dGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAg
ICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNs
aWVudD4oKTsKKyAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC04NjQsNyArODY0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1
bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnUKIHZv
aWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQpCiB7CiAg
ICAgaWYgKCFlZGl0b3JDbGllbnQpIHsKLSAgICAgICAgbV9lZGl0b3JDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKKyAgICAgICAg
bV9lZGl0b3JDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNs
aWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODc0LDcgKzg3NCw3IEBAIHZv
aWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9y
bUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4m
JiBmb3JtQ2xpZW50KQogewogICAgIGlmICghZm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1D
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+
KCk7CisgICAgICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Rm9ybUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODg0LDcgKzg4
NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpGCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUxvYWRlckNsaWVudD4mJiBsb2FkZXJDbGllbnQpCiB7CiAgICAgaWYgKCFsb2FkZXJD
bGllbnQpIHsKLSAgICAgICAgbV9sb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CisgICAgICAgIG1fbG9hZGVyQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50Pigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBXZWJQ
YWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUG9s
aWN5Q2xpZW50QmFzZSoKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxv
YWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9h
ZENsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFtX3Jlc291cmNlTG9hZENsaWVudCkKLSAg
ICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVu
dD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZShj
bGllbnQpOwogfQpAQCAtOTEzLDcgKzkxMyw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRC
dW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCCiB2
b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAo
IXVpQ2xpZW50KSB7Ci0gICAgICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKKyAgICAgICAgbV91aUNsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xNDEwLDE0ICsxNDEwLDE0IEBAIHZvaWQgV2ViUGFnZTo6Y2xv
c2UoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRN
ZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29u
dGV4dE1lbnVDbGllbnQ+KCk7CisgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCi0g
ICAgbV9lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OkVkaXRvckNsaWVudD4oKTsKLSAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7Ci0gICAgbV9sb2FkZXJDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7
CisgICAgbV9lZGl0b3JDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVk
aXRvckNsaWVudD4oKTsKKyAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7CisgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgbV9wb2xpY3lD
bGllbnQuaW5pdGlhbGl6ZSgwKTsKLSAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwotICAg
IG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VV
SUNsaWVudD4oKTsKKyAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9mdWxsU2NyZWVuQ2xpZW50LmluaXRpYWxpemUoMCk7
CiAjZW5kaWYKQEAgLTQ2OTYsNyArNDY5Niw3IEBAIHZvaWQgV2ViUGFnZTo6YmVnaW5QcmludGlu
Zyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbykKICNlbmRpZgog
CiAgICAgaWYgKCFtX3ByaW50Q29udGV4dCkgewotICAgICAgICBtX3ByaW50Q29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250ZXh0Pihjb3JlRnJhbWUpOworICAgICAgICBtX3ByaW50
Q29udGV4dCA9IG1ha2VVbmlxdWU8UHJpbnRDb250ZXh0Pihjb3JlRnJhbWUpOwogICAgICAgICBt
X3BhZ2UtPmRpc3BhdGNoQmVmb3JlUHJpbnRFdmVudCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHAKaW5kZXggNzM1NjZhMTMzODVkZTNhYWM2NDZmYjk0OTZiZGRhZmNiNWFmNDZi
Ni4uMzFlZmYxMWY3YWUwYTNlYjhjZmJiNmZmMmIzZGJhNTE2MjRjMWVjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRP
cGVyYXRpb25HdGsuY3BwCkBAIC0yMTMsNiArMjEzLDcgQEAgY2xhc3MgV2ViUHJpbnRPcGVyYXRp
b25HdGtXaW4zMiBmaW5hbDogcHVibGljIFdlYlByaW50T3BlcmF0aW9uR3RrIHsKICNlbmRpZgog
CiBzdHJ1Y3QgUHJpbnRQYWdlc0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBQcmludFBhZ2VzRGF0YShXZWJQcmludE9wZXJhdGlvbkd0ayogcHJpbnRPcGVy
YXRpb24pCiAgICAgICAgIDogcHJpbnRPcGVyYXRpb24ocHJpbnRPcGVyYXRpb24pCiAgICAgICAg
ICwgdG90YWxQcmludGVkKC0xKQpAQCAtNzI2LDcgKzcyNyw3IEBAIHZvaWQgV2ViUHJpbnRPcGVy
YXRpb25HdGs6OnByaW50KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgZG91YmxlIHhEUEksIGRv
dWJsZSB5CiB7CiAgICAgQVNTRVJUKG1fcHJpbnRDb250ZXh0KTsKIAotICAgIGF1dG8gZGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOworICAgIGF1dG8gZGF0YSA9
IG1ha2VVbmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOwogICAgIGlmICghZGF0YS0+aXNWYWxp
ZCkgewogICAgICAgICBjYWlyb19zdXJmYWNlX2ZpbmlzaChzdXJmYWNlKTsKICAgICAgICAgcHJp
bnREb25lKGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGZyYW1lVVJMKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklP
Uy5tbQppbmRleCA5YWJiMmE3OTI5OWQ1OTZiOTFlNmVmNjFjYTQzZWY4NjE5MGE5MDQ5Li45MzQx
OGFiMjFkNzRmYzk0NThhMDIyNGU0Y2I0OGE3MzQxNzgwOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1t
CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0
b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlCiAgICAgaWYgKCF0ZXh0
SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ZpbmRJbmRpY2F0b3JP
dmVybGF5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVu
dElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4dEluZGljYXRvci5nZXQoKSk7CisgICAgbV9maW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudCA9IG1ha2VVbmlxdWU8RmluZEluZGljYXRvck92ZXJsYXlDbGll
bnRJT1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOwogICAgIG1fZmluZElu
ZGljYXRvclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRJbmRpY2F0b3ItPnNlbGVjdGlvblJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSk7CiAgICAgbV9maW5kSW5kaWNhdG9yT3ZlcmxheSA9
IFBhZ2VPdmVybGF5OjpjcmVhdGUoKm1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQsIFBhZ2VP
dmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpOwogICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2Uo
KS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KCptX2ZpbmRJbmRp
Y2F0b3JPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGljYXRvck92
ZXJsYXlDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCmluZGV4IDUzNWI4NGZiNjQyOWE5N2YwYzk4
YThlYWMxODVkOWRmMmVlOTQ4NTQuLjAxNWUzMmRiMTg5M2U2YTA2MmQ5ZTNhN2NhMGRjNTJlOTQ2
ZGQwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCkBAIC0zNCw2
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmluZEluZGljYXRvck92ZXJs
YXlDbGllbnRJT1MgOiBwdWJsaWMgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmluZEluZGljYXRvck92ZXJs
YXlDbGllbnRJT1MoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
KiB0ZXh0SW5kaWNhdG9yKQogICAgICAgICA6IG1fZnJhbWUoZnJhbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcApp
bmRleCA5MDY4N2M5NzRhY2YzM2Q4MmI4YzY0Yjk0OGU2ZWU5YTMwZWUyZTljLi4wNmZjYzQ3MTU5
M2ViNzhlZGViZmNjNjNmODk0NGIzZGZhZTlkYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKQEAgLTgzLDcg
KzgzLDcgQEAgYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2Fs
bGJhY2soKQogICAgIGlmICghbV9oYXNTZW50TWVzc2FnZSkgewogICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQo
KSksIDApOwogICAgICAgICBtX2hhc1NlbnRNZXNzYWdlID0gdHJ1ZTsKLSAgICAgICAgbV9ydW5M
b29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9v
cEVudHJ5LCBbdGhpc10oKSB7CisgICAgICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbWFrZVVuaXF1
ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3RoaXNdKCkgewogICAgICAgICAg
ICAgdGhpcy0+bV9maXJzdENhbGxiYWNrSW5DdXJyZW50UnVubG9vcCA9IHRydWU7CiAgICAgICAg
IH0pOwogICAgICAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBk
ZjYwMDM2NDU5OGYxMzQ2MjlkYWI2MjcwNmVhZjY4NjFlNWZmMzNkLi40Y2IzZGY5YWVhNTI5ZWZm
NTI2MzM2YzgxZjEzMDIwNDViYTNlMGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjCiAg
ICAgW21faG9zdGluZ0xheWVyIHNldE9wYXF1ZTpZRVNdOwogICAgIFttX2hvc3RpbmdMYXllciBz
ZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKIAotICAgIG1fbGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2Fz
dDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVy
Rmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1
bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlz
XSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaFJ1bkxvb3BDYWxsYmFjaygpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggN2I0OGEwZjcy
NDYyZmZlNTdmZTkyMDZjYmNjMGNmMzMxYzMyMTFlMS4uYzcxY2Q1ZjI3NGZmNjIyYzVkNDNmMzU5
ZjYxNWZkMzdjZjJkNjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtMTU3Myw3ICsxNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9s
YXRpbGUoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW4KICAgICBBU1NF
UlQoIW1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlcik7CiAgICAgbV9jb3VudE9m
UGFnZXNGYWlsaW5nVG9NYXJrVm9sYXRpbGUgPSAwOwogCi0gICAgbV9wYWdlTWFya2luZ0xheWVy
c0FzVm9sYXRpbGVDb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTWFya2luZ0xheWVyc0Fz
Vm9sYXRpbGVDb3VudGVyPihbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50ZXJFdmVudCkgeworICAgIG1fcGFnZU1hcmtpbmdMYXll
cnNBc1ZvbGF0aWxlQ291bnRlciA9IG1ha2VVbmlxdWU8UGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0
aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKICAgICAgICAgaWYgKG1fcGFnZU1hcmtpbmdM
YXllcnNBc1ZvbGF0aWxlQ291bnRlci0+dmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMTgzOCw3ICsxODM4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmFibGVkU2VydmljZXMo
Ym9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnYKIAogdm9pZCBXZWJQ
cm9jZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkZW50aWZpZXIpCiB7Ci0gICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PihzZXNzaW9uSWRlbnRpZmllcik7Cisg
ICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gbWFrZVVuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5PihzZXNzaW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVz
dHJveUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQpAQCAtMTg3MSw3ICsxODcxLDcgQEAgYm9vbCBX
ZWJQcm9jZXNzOjpoYXNWaXNpYmxlV2ViUGFnZSgpIGNvbnN0CiBMaWJXZWJSVENOZXR3b3JrJiBX
ZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIHsKICAgICBpZiAoIW1fbGliV2ViUlRDTmV0
d29yaykKLSAgICAgICAgbV9saWJXZWJSVENOZXR3b3JrID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENOZXR3b3JrPigpOworICAgICAgICBtX2xpYldlYlJUQ05ldHdvcmsgPSBtYWtlVW5pcXVl
PExpYldlYlJUQ05ldHdvcms+KCk7CiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9
CiAKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAgICAgLy8g
YnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1hbmFn
ZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRo
ZQogICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1
cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2V0Q29ubmVjdGlvbihzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBzdG9yZSkpOworICAg
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQs
IHBhZ2VJRCwgc3RvcmUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGQ0
YzAxYmFiMWY5M2RhOTA4NWIwZjIxOTRjZDMyN2Q0NzE4NjUwYjIuLjJmNGZiNTMwYWJjZWQ3ZWZj
NzM3NjQyMjMwOWZkMzE4ODdhNDdiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMTMzLDYgKzEzMyw3IEBAIGNsYXNzIFdlYlByb2Nlc3MKICAgICAsIFByb2Nlc3NU
YXNrU3RhdGVPYnNlcnZlcjo6Q2xpZW50CiAjZW5kaWYKIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUHJvY2VzcyYgc2luZ2xldG9uKCk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSA9IFByb2Nlc3NUeXBl
OjpXZWJDb250ZW50OwpAQCAtMTQ2LDcgKzE0Nyw3IEBAIGNsYXNzIFdlYlByb2Nlc3MKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAg
ICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3Vu
aXF1ZTxUPigqdGhpcykpOworICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50
TmFtZSgpLCBtYWtlVW5pcXVlPFQ+KCp0aGlzKSk7CiAgICAgfQogCiAgICAgV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzKiB3ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBt
X3dlYkNvbm5lY3Rpb24uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDI3MjBiODZm
Y2QyZmZlZTYwMjJmNWFkNWVlZDUwYmNmMzY5MmQ3ZjguLjlhZjAwZWU4YWEwZjFjZDg0MGE4MTcz
NzkwZmEwNjIzMDA0NmZkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtNjQsNyArNjQsNyBA
QCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlIDogcHVibGljIFJlYWx0aW1l
TWVkaWFTb3VyY2UgewogICAgIHsKICAgICAgICAgQVNTRVJUKGRldmljZVR5cGUgIT0gQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bik7CiAgICAgICAgIGlmICh0eXBlID09IFR5cGU6
OkF1ZGlvKQotICAgICAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJp
bmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIp
KTsKKyAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPiht
YWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRyKSk7CiAgICAgfQog
CiAgICAgflNvdXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmluZGV4IGJhZWQwY2Q5ZTA5YjQ5ZDIyMWU5
NDAxOGY2NDlmZTZkYmNmOTI1MTkuLmMxZDQzZmNiM2FmNTg0MTQ1M2FkMzQzNGM3Y2Y5M2ViZmM5
ZTdlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIENyb3NzUHJv
Y2Vzc1JlYWx0aW1lQXVkaW9Tb3VyY2U7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9DYXB0dXJlRmFjdG9y
eSwgcHVibGljIFdlYkNvcmU6OlZpZGVvQ2FwdHVyZUZhY3RvcnksIHB1YmxpYyBXZWJDb3JlOjpE
aXNwbGF5Q2FwdHVyZUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlByb2Nlc3MmKTsK
ICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGI0N2QxZDhhZmEwM2ZlZDM2
ZGVjYWQ5ODlkNzJkYmM0MTg0ODdmNTkuLjNiOTA2YTgwYzVhZDhmNjliZWY3N2Y5YThjNzY0YWY4
MDlmNDk1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vz
c1Rhc2tTdGF0ZURpZENoYW5nZShQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OlRhc2tTdGF0ZSB0
CiAKICAgICAvLyBXZSB3ZXJlIGF3YWtlbmVkIGZyb20gc3VzcGVuc2lvbiB1bmV4cGVjdGVkbHku
IE5vdGlmeSB0aGUgV2ViUHJvY2Vzc1Byb3h5LCBidXQgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9u
IG9uIG91ciBwYXJlbnQgUElECiAgICAgLy8gdG8gZW5zdXJlIHRoYXQgaXQgdG9vIGlzIGF3YWtl
bmVkLgotICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQo
KSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQsIEFz
c2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CisgICAgYXV0byB1aVByb2Nlc3NBc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5IHJlc3VtZWQiLCBBc3NlcnRpb25TdGF0
ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5pc2hUYXNrKTsKICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6UHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKCksIFt1aVByb2Nlc3NB
c3NlcnRpb24gPSBXVEZNb3ZlKHVpUHJvY2Vzc0Fzc2VydGlvbildIHsgfSk7CiB9CiAjZW5kaWYK
QEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0
ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uIHJlYXNvbikKICAgICB9CiAKICAgICBpZiAoIW1fY3B1
TW9uaXRvcikgewotICAgICAgICBtX2NwdU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENQVU1v
bml0b3I+KGNwdU1vbml0b3JpbmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2FnZSkgewor
ICAgICAgICBtX2NwdU1vbml0b3IgPSBtYWtlVW5pcXVlPENQVU1vbml0b3I+KGNwdU1vbml0b3Jp
bmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2FnZSkgewogICAgICAgICAgICAgaWYgKG1f
cHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlNlcnZpY2VXb3JrZXIpCiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBTZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIGV4Y2VlZGVkIENQVSBsaW1pdCBvZiAlLjFmJSUgKHdhcyB1c2luZyAlLjFm
JSUpIiwgdGhpcywgbV9jcHVMaW1pdC52YWx1ZSgpICogMTAwLCBjcHVVc2FnZSAqIDEwMCk7CiAg
ICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDM2OTA5NWNkYWQxZDM0NzExYTA2NzZkODczNmE5MGUx
OTNlMjkwNWUuLjIyOGY0YTM2ZDRiMGYyMjJjMTc4NjBkMGJjNDk4YzFmOWUwODlhMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIFJlZjxTdG9yYWdlU3luY01hbmFnZXI+IFN0b3JhZ2VTeW5jTWFu
YWdlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKIH0KIAogU3RvcmFnZVN5bmNNYW5hZ2Vy
OjpTdG9yYWdlU3luY01hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogbV90aHJlYWQo
c3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQorICAgIDogbV90aHJlYWQobWFrZVVu
aXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRDb3B5KCkp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAppbmRleCA0NDM5MzgyOTVmNGUxYzI5ZGQwNDg2YjQz
MWJhN2ZlYTM1MjlkMTZkLi45Yzc1MTRlMzQ2MmM0YjRkOGE4NTYwNWVkMDI5ZGJkMTkyNWQ2YjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFT
U0VSVCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVhZCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsK
KyAgICBtX3F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3Zl
KGZ1bmN0aW9uKSkpOwogfQogCiB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCkBAIC04
Nyw3ICs4Nyw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKICAgICBpZiAoIW1f
dGhyZWFkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10geworICAgIG1fcXVldWUuYXBwZW5kKG1h
a2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CiAgICAgICAgIHBlcmZvcm1UZXJt
aW5hdGUoKTsKICAgICB9KSk7CiAgICAgbV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCBi
OTM0ZDFhM2IxYmFhODMxYWRkZjNhYmU1ZTA3NzBhYjFjZjc3ZmEyLi44MDZjYjA5OTVkMGEwN2M3
MTgyNzFkMjEwNTA3MDM5OGM0MDNiYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgU3RvcmFnZVRyYWNrZXIm
IFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkKIFN0b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJhY2tl
cihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKQogICAgIDogbV9zdG9yYWdlRGlyZWN0b3J5UGF0
aChzdG9yYWdlUGF0aC5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fY2xpZW50KDApCi0gICAgLCBt
X3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCisgICAgLCBtX3RocmVh
ZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQog
ICAgICwgbV9uZWVkc0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwgbV9TdG9yYWdlRGF0YWJh
c2VJZGxlSW50ZXJ2YWwoZGVmYXVsdFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAppbmRleCA0M2VhNDVkYWU4OTIwNmM4MjlhNTE0ZDRkYThl
M2QxYzk3Y2MxMjg0Li44NTFjYzEwMTdkZWQwMGMwNmQ0NmQyYzg1OWQ3MDAwMGI2ZDcyZDUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9y
YWdlU2Vzc2lvbk1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzdG9yYWdl
U2Vzc2lvbihjb25zdCBQCiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKIHsKICAgICBpZiAoIWRl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICBkZWZh
dWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAg
cmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKQEAgLTc0LDcgKzc0
LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nl
c3Npb24oKQogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFn
ZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uLmdl
dCgpKSk7CiAgICAgfQogCi0gICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2ll
U3RvcmFnZSkpOworICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsK
ICNlbmRpZgogfQogCkBAIC0xMDAsMTEgKzEwMCwxMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBj
bwogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Np
b25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5n
ZXQoKSkpOwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZN
b3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tp
ZVN0b3JhZ2UpKTsKIAogI2VsaWYgVVNFKENVUkwpCiAgICAgZ2xvYmFsU2Vzc2lvbk1hcCgpLmVu
c3VyZShzZXNzaW9uSUQsIFtzZXNzaW9uSURdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Np
b25JRCk7CiAgICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKaW5k
ZXggMTg3NmI5NjBiOTQ3MDgxNGMzNTBiYzU5MjZhNGM4MWFlZGYzOTAyMy4uN2I4Njk4MWEzZjQ4
ZTUwZjhiM2NjYWMzNzA2OTE3ZDRhZjFmZGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5j
cHAKQEAgLTE1OSw1ICsxNTksNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IFdlYkluc3BlY3RvckNsaQogICAgICAgICAg
ICAgZGVsZXRlU2V0dGluZyhuYW1lKTsKICAgICAgICAgfQogICAgIH07Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGPigpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLmgKaW5kZXggM2IxYTQ1MDcwNzhmYTRjYzA2OGU3NDAzMDMyMjEyMzliMmFkNzEy
My4uMTQ1NzcyMjJhOWUxM2U2M2U0OTFkNmQzYjkyY2ExYmM4OWU3Y2IwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIldlYkNocm9tZUNsaWVudC5o
IgogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnRJT1MgZmluYWwgOiBwdWJsaWMgV2ViQ2hyb21lQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJv
bWVDbGllbnRJT1MoV2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBXZWJDaHJvbWVDbGllbnQo
d2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KaW5kZXggMjE3YTRlZDBh
ODVhNmJiNDE0ZDMxOTRjYjdiZmFlZmRlMDM2ZDQ3YS4uYWZlMTFhODBiOWYxYzljZTc2YTM1NjJm
YTYzYzQ1YmY3MWQxMWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KQEAg
LTUyLDYgKzUyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHN0YXRpYyBMb2NrIHdlYkZpeGVk
UG9zaXRpb25Db250ZW50RGF0YUxvY2s7CiAKIHN0cnVjdCBWaWV3cG9ydENvbnN0cmFpbmVkTGF5
ZXJEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVmlld3Bv
cnRDb25zdHJhaW5lZExheWVyRGF0YSgpCiAgICAgICAgIDogbV9lbmNsb3NpbmdBY2NlbGVyYXRl
ZFNjcm9sbExheWVyKG5pbCkKICAgICB7IH0KQEAgLTYyLDYgKzYzLDcgQEAgc3RydWN0IFZpZXdw
b3J0Q29uc3RyYWluZWRMYXllckRhdGEgewogdHlwZWRlZiBIYXNoTWFwPFJldGFpblB0cjxDQUxh
eWVyPiwgc3RkOjp1bmlxdWVfcHRyPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+PiBMYXll
ckluZm9NYXA7CiAKIHN0cnVjdCBXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGEgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJGaXhlZFBvc2l0
aW9uQ29udGVudERhdGEoV2ViVmlldyAqKTsKICAgICB+V2ViRml4ZWRQb3NpdGlvbkNvbnRlbnRE
YXRhKCk7CkBAIC0xNzgsNyArMTgwLDcgQEAgLSAodm9pZClzZXRWaWV3cG9ydENvbnN0cmFpbmVk
TGF5ZXJzOihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBzdGQ6OnVuaXF1ZV9wdHI8V2UKIAogICAg
IGZvciAoYXV0byYgbGF5ZXJBbmRDb25zdHJhaW50cyA6IGxheWVyTWFwKSB7CiAgICAgICAgIENB
TGF5ZXIqIGxheWVyID0gbGF5ZXJBbmRDb25zdHJhaW50cy5rZXk7Ci0gICAgICAgIGF1dG8gbGF5
ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPigp
OworICAgICAgICBhdXRvIGxheWVyRGF0YSA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5l
ZExheWVyRGF0YT4oKTsKIAogICAgICAgICBsYXllckRhdGEtPm1fZW5jbG9zaW5nQWNjZWxlcmF0
ZWRTY3JvbGxMYXllciA9IHN0aWNreUNvbnRhaW5lcnMuZ2V0KGxheWVyKTsKICAgICAgICAgbGF5
ZXJEYXRhLT5tX3ZpZXdwb3J0Q29uc3RyYWludHMgPSBXVEZNb3ZlKGxheWVyQW5kQ29uc3RyYWlu
dHMudmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJIaXN0b3J5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5
Lm1tCmluZGV4IGE4YjZhMDQzOTNlYzAwMDE0NjUzOGQ0Y2Y2NWJkNjQwYzc0YmQ5MDEuLjVhZDgx
YjRhM2I0OWI1ZDA2MzkzNjU2ODNhMWJjZjVkNTdlZjM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KQEAgLTEzMyw3ICsxMzMsNyBAQCAtIChp
ZClpbml0CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgX2VudHJpZXNCeVVSTCA9IFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgX2VudHJpZXNCeURhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CisgICAgX2VudHJpZXNCeURhdGUg
PSBtYWtlVW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
CmluZGV4IGI3Mzk1OTM1ZTUxMGJmM2I3ZjBjNDhlZGQ0MzZjNThiYmM0ODFkOGUuLjg2ZjlkM2Q0
MjIzODQ2YmM5NWNiYzk1NjQ1YTFjYTczMjBhZmUxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMzQ4LDcgKzM0OCw3IEBA
IC0gKGlkKWluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOihOU0RpY3Rpb25hcnkgKilk
aWN0CiAgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUp
OwogICAgIAogICAgIGlmIChOU0FycmF5ICpyZWRpcmVjdFVSTHMgPSBbZGljdCBfd2Via2l0X2Fy
cmF5Rm9yS2V5OnJlZGlyZWN0VVJMc0tleV0pIHsKLSAgICAgICAgYXV0byByZWRpcmVjdFVSTHNW
ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBhdXRv
IHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAg
ICAgIHJlZGlyZWN0VVJMc1ZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbcmVkaXJlY3RV
UkxzIGNvdW50XSk7CiAKICAgICAgICAgZm9yIChpZCByZWRpcmVjdFVSTCBpbiByZWRpcmVjdFVS
THMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggZTE3Yzc4ODFhNTE3
ZjBjMzU1Zjg3NTY5YjYwZGEzZjIxNWExZWJhNy4uZjVlN2ZiY2YxMmU0N2Y5MGRlZWYxZWEyY2Zl
YjcxNzQyNjg4MGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTQ5
Myw3ICs0OTMsNyBAQCBrZXJuX3JldHVybl90IFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBs
eShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbAogICAgIGlmICghaW5zdGFuY2VQ
cm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHkt
PnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0SUQpKTsK
KyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVl
PE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHk+
KG9iamVjdElEKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApAQCAtNTA5LDcgKzUw
OSw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5SZXBseShtYWNoX3BvcnRfdCBjbGllbnRQ
b3J0LCB1aW50MzJfdCBwbHVnaW5JRCwgdWludDMyCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQog
ICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogICAgIAotICAgIGluc3RhbmNlUHJveHktPnNl
dEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOworICAgIGluc3RhbmNlUHJveHkt
PnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NF
U1M7CiB9CiAKQEAgLTUyOCw3ICs1MjgsNyBAQCBrZXJuX3JldHVybl90IFdLUENCb29sZWFuQW5k
RGF0YVJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELAogICAg
ICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVz
dWx0ID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KHJl
c3VsdERhdGEpLCByZXN1bHRMZW5ndGgpKTsKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50
UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6Qm9vbGVhbkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOworICAgIGlu
c3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwg
cmVzdWx0KSk7CiAgICAgCiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KQEAgLTU0NSw3ICs1
NDUsNyBAQCBrZXJuX3JldHVybl90IFdLUENJbnN0YW50aWF0ZVBsdWdpblJlcGx5KG1hY2hfcG9y
dF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbgogICAgIGlmICghaW5zdGFuY2VQcm94eSkK
ICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1
cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpJbnN0YW50aWF0ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJ
RCwgc3RhdGljX2Nhc3Q8UmVuZGVyZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CisgICAgaW5zdGFu
Y2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwgcmVuZGVy
Q29udGV4dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkpKTsKICAg
ICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oCmluZGV4IDEwYTA4ZTk1MGEzZGMwYzkzNjcxZjFmYzFjNzRjOTQ3NzkzYTA3ZTgu
LmU1NmExMDNhMjhhNzYwZjljZTBiOTdlNzFkZDZiMjNhNjBjNTNlODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCkBAIC0xNzEsNiArMTcxLDcgQEAgY2xhc3MgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3gKIAogICAgIC8vIFJlcGx5IHN0cnVjdHMKICAgICBzdHJ1Y3QgUmVwbHkg
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGVudW0g
VHlwZSB7CiAgICAgICAgICAgICBJbnN0YW50aWF0ZVBsdWdpbiwKICAgICAgICAgICAgIEdldFNj
cmlwdGFibGVOUE9iamVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDIwMmM2ZGVhZjEzZDA3YzZlM2E1
Njk4YjFjZGI1OWExOWI1ZGEwMzkuLjUyYmY3YmQxMmU0ZTM3MTJkMzE0NzVlMmE1MzlhNDI4Y2Zm
OGZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMzYyLDcgKzM2Miw3IEBAIE1ldGhvZCogUHJveHlJ
bnN0YW5jZTo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBB
ZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVkIHdoaWxl
IHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0gbV9tZXRo
b2RzLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05l
d0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlNZXRob2Q+KG1ldGhvZE5hbWUpOworICAg
ICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eU1ldGhv
ZD4obWV0aG9kTmFtZSk7CiAKICAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6Zmll
bGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRy
eSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3
YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX2ZpZWxkcy5hZGQobmFtZS5p
bXBsKCksIG51bGxwdHIpOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiByZXBs
eS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOworICAgICAgICBtYXBBZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVk
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDljNzFhM2NjOTIzZjMz
ZDJlMGFiMzlhMWJmNmIxNGI0NDNlOTRkNGIuLmVlMTljNTY3YzAxZmExOGM1ZThkYzYxYjA4Yzg5
NGU1MjAwMmRhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0K
QEAgLTYwLDYgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFjZSBXZWJL
aXQgewogICAgIAogY2xhc3MgU29mdHdhcmVDQVJlbmRlcmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTb2Z0d2FyZUNBUmVuZGVyZXIodWlu
dDMyX3QgY29udGV4dElEKQogICAgICAgICA6IG1fY29udGV4dCB7IFtDQUNvbnRleHQgbG9jYWxD
b250ZXh0XSB9CkBAIC0xNjgsNyArMTY5LDcgQEAgLSAoQk9PTCljcmVhdGVQbHVnaW4KICAgICAg
ICAgcmV0dXJuIE5POwogCiAgICAgaWYgKF9wcm94eS0+cmVuZGVyZXJUeXBlKCkgPT0gVXNlU29m
dHdhcmVSZW5kZXJlcikKLSAgICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNvZnR3YXJlQ0FSZW5kZXJlcj4oX3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CisgICAg
ICAgIF9zb2Z0d2FyZVJlbmRlcmVyID0gbWFrZVVuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+KF9w
cm94eS0+cmVuZGVyQ29udGV4dElEKCkpOwogICAgIGVsc2UKICAgICAgICAgW3NlbGYgY3JlYXRl
UGx1Z2luTGF5ZXJdOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KaW5kZXgg
ZjdhZWRiY2VkNGQ3ZjVjNGJhM2U5NmUzNTYxY2E3ZjBiMjY1YzhhYy4uOGVjMWJmNzllZTMyYTJh
YzFiYmNmN2EyMWU3M2U3ZTFlMDFkYjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
Lm1tCkBAIC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlcj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyCiB7CiAgICAgc3dp
dGNoIChbcGx1Z2luVmlldyBldmVudE1vZGVsXSkgewogICAgIGNhc2UgTlBFdmVudE1vZGVsQ29j
b2E6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyQ29jb2E+KHBsdWdpblZpZXcpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxX
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5WaWV3KTsKICAgICBkZWZh
dWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCmluZGV4IDcwODM3NzZk
MjhhNzVjZmI1NDI1MzNkOTBmMzc3OGU4NWFiY2QxZDIuLmJiZDljNWQ1ODIxZjg1ZjY1ZWJjOGY3
NzdlYzY1NTIyOWQ1ZTg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2Nv
YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXIuaCIKIAogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYSA6IHB1
YmxpYyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2Nv
YShXZWJOZXRzY2FwZVBsdWdpblZpZXcqKTsgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMDJmZjIx
ODZkZjg0YTlhOTBkN2U5YzI2YzA3NjI3OWUzMjIxMTM3OC4uMTYwNjYzZTg2MWY3MTBlYmZlZDFk
NzY4NTY1ZGQyMmExMTRlOGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE2NTUsNyArMTY1NSw3
IEBAIC0gKHVpbnQzMl90KXNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVy
dmFsIHJlcGVhdDooTlBCb29sKXJlcGVhdCB0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAg
IGlmICghdGltZXJzKQotICAgICAgICB0aW1lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8
dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4+PigpOworICAgICAgICB0aW1l
cnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5U
aW1lcj4+PigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPiogc2xvdDsKICAg
ICB1aW50MzJfdCB0aW1lcklEOwpAQCAtMTY2Myw3ICsxNjYzLDcgQEAgLSAodWludDMyX3Qpc2No
ZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoodWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wp
cmVwZWF0IHQKICAgICAgICAgdGltZXJJRCA9ICsrY3VycmVudFRpbWVySUQ7CiAgICAgd2hpbGUg
KCF0aW1lcnMtPmlzVmFsaWRLZXkodGltZXJJRCkgfHwgKihzbG90ID0gJnRpbWVycy0+YWRkKHRp
bWVySUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZSkpOwogCi0gICAgYXV0byB0aW1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8UGx1Z2luVGltZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJl
cGVhdCwgdGltZXJGdW5jKTsKKyAgICBhdXRvIHRpbWVyID0gbWFrZVVuaXF1ZTxQbHVnaW5UaW1l
cj4ocGx1Z2luLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogCiAgICAg
aWYgKF9zaG91bGRGaXJlVGltZXJzKQogICAgICAgICB0aW1lci0+c3RhcnQoX2lzQ29tcGxldGVs
eU9ic2N1cmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KaW5kZXggNzA0Y2QwOTVlODhmZTFhMjM4
MTE4NmM2YmZmMTMwZmM5MDIwNDFlYi4uNTdmYmJmYWQ5ZTY0Yjc2NzhhZDNhY2NlODA3NzhiYWNm
MDM3ODFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KQEAgLTk0LDEwICs5NCwxMSBAQCBXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQ6On5XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQogfQogCiBj
bGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4p
CiAgICAgewotICAgICAgICBhdXRvIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlm
eU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gbWFr
ZVVuaXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdpbik7CiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSB7CiAgICAgICAgICAg
ICBjb250ZXh0LT5jbGllbnQuZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29udGV4dC0+b3JpZ2lu
KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IGEz
YjE1OThlZTM1M2Q2N2UyM2FmODA5NThlYjdmNzVlYjE2N2Y0ZDguLmNkNzI2NDI2ODI1YmE3MjIx
NTU3ZTA1NjZmYTkyZWMwODExMTQ1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oCkBAIC0zMSw2ICszMSw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDc4YjUzOWUzNzJiODY1YzU5NGZjMDc2ZjVhMWZjODRhYWZlOThiZjAuLjI3MTQyN2UyZDQ2
ZWUzYTI5N2QwNTQwMTJhN2E4NWFiOGIzZTFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCiBjbGFzcyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJDb3JlOjpD
YWNoZWRGcmFtZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoaWQgd2ViRG9jdW1lbnRWaWV3
KSA6IG1fd2ViRG9jdW1lbnRWaWV3KHdlYkRvY3VtZW50VmlldykgeyB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCmluZGV4IGZkYzRjYzc4MTk2ZmNiY2YzMjYwMmQxOGUyODlmMDdhMTE1NGNjOTUuLmMw
ZmJkYTliMmRhMWRkNDUxMGZmZTA4OWJmNjhmNWE3NjdkZDQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiAvLyBiYXNlIGNsYXNz
IG9mIHRoZSBjb25jcmV0ZSBjbGFzcywgV2ViQ2hyb21lQ2xpZW50SU9TLiBCZWNhdXNlIG9mIHRo
YXQsIHRoaXMgY2xhc3MgYW5kCiAvLyBtYW55IG9mIGl0cyBmdW5jdGlvbnMgYXJlIG5vdCBtYXJr
ZWQgZmluYWwuIFRoYXQgaXMgbWVzc3kgd2F5IHRvIG9yZ2FuaXplIHRoaW5ncy4KIGNsYXNzIFdl
YkNocm9tZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJWaWV3
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDE4ODVmMDMxMzEzNWI4MTdiMzBm
OTQ1Nzc3ZDhlMjRiMTUzOWJmOTAuLmE3ZjY2ZWVlZjMwNmE2ODYwNTQyMGU3OTg3NjIwMjU3YmUw
NmI2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFz
cyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVu
dAogICAgICwgcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50CiAjZW5kaWYKIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVu
dUNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudUNs
aWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDg0N2E3M2IxN2E0NjE3YmQ1NGE4ZDI4YTkyM2MxZDRh
NjNiZGQxMmUuLjMwZGYzZjczZDg1MGVhNzY5YzcxMzUyMjFkMmU4ODY1ZWE2N2UwM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJE
cmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IGYwNTllMDU5ZTExODdhM2JjNWJkMjQ3Y2MyNDFmNTlhZGQ0NTA5
NTAuLmI1MTA3ODdkODA5YmNmOTdiNzY4OWU3NDA5MzI4Mzc1YWEwYjBiMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC00NSw2ICs0NSw3IEBACiBAY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAog
Y2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVu
dCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2ViRWRpdG9yQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgdmlydHVhbCB+V2ViRWRp
dG9yQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDNkZDUwZTdiM2I5
Y2Y5OTMzNDljOWFiYjRjYjQ5NzgzN2VlYzM1M2UuLjk0MGIwZmY5NjNhODVjZTlkODhkN2JjNTZm
ZjZiM2VlYjJlM2Q5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDY3LDcg
KzEwNjcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5
KCkKIHN0YXRpYyB2b2lkIGFkZFJlZGlyZWN0VVJMKFdlYkhpc3RvcnlJdGVtICppdGVtLCBjb25z
dCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxz
KQotICAgICAgICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RV
UkxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAogICAgIC8vIE91ciBBUEkgYWxs
b3dzIHVzIHRvIHN0b3JlIGFsbCB0aGUgVVJMcyBpbiB0aGUgcmVkaXJlY3QgY2hhaW4sIGJ1dCBm
b3IKICAgICAvLyBub3cgd2Ugb25seSBoYXZlIGEgdXNlIGZvciB0aGUgZmluYWwgVVJMLgpAQCAt
MTM4MCw3ICsxMzgwLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2Fj
aGVkRnJhbWUpCiB7Ci0gICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
KHN0ZDo6bWFrZV91bmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUt
Pl9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CisgICAgY2FjaGVkRnJhbWUt
PnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3
KSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Ug
a25vdyB0aGlzIGZyYW1lIGlzIGdvaW5nIHRvIGJlIGNhY2hlZC4gU3RvcCBhbGwgcGx1Z2lucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGZmZTI5OTMxMmViNDgwYmFmYjVmMGVhYzQz
NTJmMjQzZjk2ZTAwZjcuLmZmZGJhY2ZjMjc0MjFlOGQzNTg4OGYyY2U2YjE4MDc3YTE2ZTMzZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBHZW9s
b2NhdGlvblBvc2l0aW9uOwogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9u
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJW
aWV3ICopOwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYmQ3ZjYyZmM4NWRjOTljMzg3MTZmMDc2NjY0NjMxODI1
MTFjNTRhNS4uMGM5NDhiM2FlZjk4NzYwOTYzMDM1MWQ1OWFjNzkwYjJhYmVhZGE3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICppbnNwZWN0ZWRXZWJWaWV3
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDFjMDA4MDk3NjkyZmY5YjA3MWZjZTVh
YzRhNGI0NjkyZDEzN2VkOTUuLjdkM2U1ZWM5ZTYxNWUxZDQ4YzNkMDVkNzFhNTljNDUxZmViNzY2
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTEwOSw3ICsxMDksNyBAQCBGcm9udGVu
ZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcAogICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3Rv
ckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJv
bGxlci5nZXQoKSBmcm9udGVuZFdlYlZpZXddKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJW
aWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9m
cm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZENs
aWVudCA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVk
V2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIs
IG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogCiAgICAgUmV0YWlu
UHRyPFdlYkluc3BlY3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0TlMo
W1tXZWJJbnNwZWN0b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDptX2Zy
b250ZW5kQ2xpZW50LmdldCgpXSk7CiAgICAgW1ttX2luc3BlY3RlZFdlYlZpZXcgaW5zcGVjdG9y
XSBzZXRGcm9udGVuZDp3ZWJJbnNwZWN0b3JGcm9udGVuZC5nZXQoKV07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5oCmluZGV4IDE1YjQxODA0OGU0ZjFkNDYyNGMzMDNkY2JiZmVkMTY5Nzk2NDQ4
NjEuLjk0ZWQ2MThhYzc4ZWU4YmNmNTcxNTVjOWFkYWJjYmRhZGY2OGM3MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAog
Y2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsg
cmV0dXJuIG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyLmgKaW5kZXggYTNkNmFlNjM2MzY0N2M1ZjMwY2M3OWZiZDYzNWY2NjRiY2EwMTIzYy4uZGM5
ZDExYTM1ODdlZTA0ZjUwMTUxYmU4OGJjNWQ0YjE0OGJjZGU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEludFBv
aW50OwogfQogCiBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA6IHB1YmxpYyBX
ZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIoV2ViVmlldyop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQppbmRleCAyNTM2NDhkOGU4
NDU5MTFlMmFlMjhjMGJiODYzY2I1N2Y3YzMwMDM5Li4yNzZkOWYxNWVmOGZhNWUxZmVkNDM4ZWQ5
YzFkMjU5YTc4NTgzNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0K
QEAgLTM2LDcgKzM2LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAg
ICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOworICAgIG1fY29yZSA9IG1h
a2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOwogICAgIHJldHVybiBzZWxm
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRl
eCBhOTA2MjJjMjA3NGUwY2RjZWNlZjJjNmMxYzg0OTQ1ZDRlOWRmZmFiLi4zYTk0YmI5MTBkMjU5
ZWZhYTg5MWQ1MjllODBkMmI1YjAwMjBiNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTM3OCw3ICszNzgsNyBAQCAtICh2b2lkKV9hdHRhY2hT
Y3JpcHREZWJ1Z2dlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3ByaXZhdGUtPnNj
cmlwdERlYnVnZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFs
T2JqZWN0KTsKKyAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBtYWtlVW5pcXVlPFdlYlNj
cmlwdERlYnVnZ2VyPihnbG9iYWxPYmplY3QpOwogfQogCiAtICh2b2lkKV9kZXRhY2hTY3JpcHRE
ZWJ1Z2dlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCBkZmE3ZWZkMDYwNmFkYzQ5
ZmUyOTFkMDUyMWQxMzJlNmUxOWM1MDczLi5hMDcyZTgxOTUyNDkzOWFlMGYyMmJiOTgzNmQzYWM3
MDVkODU3OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtMzcsNiArMzcsNyBA
QCBjbGFzcyBQYWdlOwogfQogCiBjbGFzcyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIDog
cHVibGljIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4gY3JlYXRlKFdlYkNvcmU6OlBhZ2UmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDcyYzIwYzY5M2ZlY2JhOTcxMDQ2MzQx
NjQxY2NlMTE0OTRkZTRhNjkuLjYwMjQwMjk5NjJlYzM0ZjAwZjRhYWQ5NDMyYTdmYzQyYmExZDE3
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAog
c3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+IFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXI6OmNyZWF0ZShXZWJDb3JlOjpQYWdlJiBwYWdlKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBhZ2Up
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBh
Z2UpOwogfQogCiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDFhNzI1OGI0MjNhODQ1
Nzg5MWU0MTVlMTBkMDAyNTY3MzBhYTJiZGUuLmUzNjNiODViMmIzZDVhZTE0NzNjODM3MjcxODU4
MzRkNTE3ODdiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVGV4dEl0ZXJhdG9yLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6
KERPTVJhbmdlICopcmFuZ2UKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgCiAgICAgX3ByaXZh
dGUgPSBbW1dlYlRleHRJdGVyYXRvclByaXZhdGUgYWxsb2NdIGluaXRdOwotICAgIF9wcml2YXRl
LT5fdGV4dEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+
KGNvcmUocmFuZ2UpKTsKKyAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiOGQ5
NzExZTcwZDc3NDVkN2QzOWIxZjlmNTQxYTE2NTRkNjU5YzgyLi5mYjdjZjJmYWFkNjdiNDljOTMz
YTYyMWUzMjc5MTBlMTA4MWFlZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmxlYWtP
dXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCkKIC0odm9pZClfaW5qZWN0T3V0bG9va1F1
aXJrc1NjcmlwdAogewogICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENv
bnRlbnRzID0gbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKLSAgICBfcHJp
dmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUo
W1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4ob3V0
bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9y
PFN0cmluZz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKKyAg
ICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQo
KmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlxdWU8VXNlclNjcmlwdD4ob3V0
bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9y
PFN0cmluZz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKIAog
fQogI2VuZGlmCkBAIC0xNDM4LDcgKzE0MzgsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXph
dGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQo
c2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2Vi
Q29udGV4dE1lbnVDbGllbnQoc2VsZik7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBlbmFibGUg
dGhpcyBvbiBpT1MgYXMgd2VsbC4KLSAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVz
c2FnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+
KHNlbGYpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxm
KTsKICNlbHNlCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNo
cm9tZUNsaWVudElPUyhzZWxmKTsKQEAgLTQ2MjgsNyArNDYyOCw3IEBAICsgKHZvaWQpX2FkZFVz
ZXJTY3JpcHRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29y
bGQgKil3b3JsCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1
c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9T
dHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0
aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3Rh
cnQgOiBJbmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFs
bEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAg
IGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRv
U3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVj
dGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0
YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5B
bGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKICAg
ICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUo
d29ybGQpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtNDY1MSw3ICs0NjUxLDcgQEAg
KyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3
b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0
Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3Io
YmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmpl
Y3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwp
OworICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJj
ZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QpLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxs
RnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CiAgICAg
dmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCgqY29y
ZSh3b3JsZCksIFdURk1vdmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMp
OwogfQogCkBAIC05NDAyLDcgKzk0MDIsNyBAQCAtIChWZWN0b3I8U3RyaW5nPilfZGljdGF0aW9u
QWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0CiAtIChXZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlciYpX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyCiB7CiAgICAgaWYg
KCFfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKQotICAgICAgICBfcHJpdmF0
ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CisgICAgICAgIF9wcml2YXRlLT5fc2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyPihzZWxmKTsKICAgICByZXR1cm4gKl9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXI7CiB9CiAjZW5kaWYKQEAgLTk0NjEsNyArOTQ2MSw3IEBAIC0gKHZvaWQpX3NldFRl
eHRJbmRpY2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3IKIC0gKHZvaWQpX3NldFRl
eHRJbmRpY2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOihU
ZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUpbGlmZXRpbWUKIHsKICAgICBpZiAoIV9wcml2YXRl
LT50ZXh0SW5kaWNhdG9yV2luZG93KQotICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldp
bmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CisgICAg
ICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxUZXh0SW5kaWNh
dG9yV2luZG93PihzZWxmKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dD
b29yZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OltzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290
Vmlldzp0ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMo
KV0gdG9WaWV3Om5pbF07CiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3Jk
aW5hdGVzID0gW3NlbGYud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46dGV4dEJvdW5kaW5nUmVj
dEluV2luZG93Q29vcmRpbmF0ZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEubW0KaW5kZXggMTA2MGMyZDg1NGFkYTBkY2FmYjMzNTU5YzgxMWU0ZWU0
OTRjYzZlMC4uODIzOGE0ZWM1ZmVlMTY4MzY0ZWQxMzA0YmM3NTE1ZjU1MTdmZTg5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC05Niw3
ICs5Niw3IEBAIExheWVyRmx1c2hDb250cm9sbGVyOjpMYXllckZsdXNoQ29udHJvbGxlcihXZWJW
aWV3KiB3ZWJWaWV3KQogV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZs
dXNoU2NoZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVyKiBmbHVzaENvbnRyb2xsZXIpCiAgICAg
OiBtX2ZsdXNoQ29udHJvbGxlcihmbHVzaENvbnRyb2xsZXIpCiB7Ci0gICAgbV9ydW5Mb29wT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1fcnVuTG9vcE9ic2VydmVyID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+
KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJG
bHVzaCksIFt0aGlzXSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaENhbGxiYWNrKCk7CiAg
ICAgfSk7CiB9CkBAIC0yMDgsNyArMjA4LDcgQEAgLSAoaWQpaW5pdAogICAgIHBsdWdpbkRhdGFi
YXNlQ2xpZW50Q291bnQrKzsKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAg
IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcj4oKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDY0NmU2
YWVmOTMyZjFjOTkyOTg1MzZjODJmMmM5NTVhNzFhMTkyY2YuLmRlNTJjODU4NjQxNDI5MmMzYzk3
ZWRiZTk5NGFiZjFkNWY3OGQ1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCkBAIC0xNzYsNiArMTc2LDcgQEAgdm9p
ZCBIVURTbGlkZXI6OmRyYWcoY29uc3QgSW50UG9pbnQmIHBvaW50LCBib29sIHN0YXJ0KQogCiAj
aWYgVVNFKENBKQogY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMYXllckNsaWVudChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KIApAQCAtMjQ2LDEwICsy
NDcsMTAgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcigpCiAgICAgLCBtX21vdmluZ1dpbmRvdyhmYWxzZSkKICAgICAsIG1fdGltZXIoKnRoaXMs
ICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1lckZpcmVkKQogI2lmIFVTRShDQSkKLSAg
ICAsIG1fbGF5ZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcykpCisg
ICAgLCBtX2xheWVyQ2xpZW50KG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQogICAgICwg
bV9yb290Q2hpbGQoUGxhdGZvcm1DQUxheWVyV2luOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMYXllciwgbV9sYXllckNsaWVudC5nZXQoKSkpCiAjZW5kaWYKLSAgICAsIG1fZnVs
bHNjcmVlbldpbmRvdyhzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQq
Pih0aGlzKSkpCisgICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3cobWFrZVVuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93PihzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuQ2xpZW50Kj4odGhpcykpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKaW5kZXggZjFkZThkZDdjY2U3
ODg3ZDZjODNjYjI4MTE1NjEzZWE4MGI1NWQ3OC4uMTM4YzNlYzRlMjY0YjE4YjI3MmUyNjdjMTY4
Mzc1NzZhYmM4NDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBQbGF0Zm9ybUNB
TGF5ZXI7CiB9CiAKIGNsYXNzIEhVRFdpZGdldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgSFVEV2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qp
IDogbV9yZWN0KHJlY3QpIHsgfQogICAgIApAQCAtMTAxLDYgKzEwMiw3IEBAIGNsYXNzIEhVRFNs
aWRlciA6IHB1YmxpYyBIVURXaWRnZXQgewogfTsKIAogY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlciA6IFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwogcHVibGljOgogICAgIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmgKaW5kZXggNWZkNzZkNDE3ODI1MjYxZDRl
ZDUyOGE4NTQxZjY2MmE0ZjdmODdmOS4uNGI3OWZlNjJiZmQ4NDU5OWIyNGRjMmQ5NWM2OGM1MWUy
MTUwM2MzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5NZXNzYWdlVGhyb3R0bGVyV2luLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBsdWdpblZpZXc7CiAKICAgICBzdHJ1Y3QgUGx1Z2lu
TWVzc2FnZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgSFdORCBoV25kOwogICAgICAgICBVSU5UIG1zZzsKICAgICAgICAgV1BBUkFNIHdQYXJhbTsK
QEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAKICAgICBjbGFz
cyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luKFBs
dWdpblZpZXcqKTsKICAgICAgICAgflBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCBh
YmE2M2RhYjhiMzFlNDdhYmQ4MDg4YjM3ODNhODBlYzU0YzEwMjE4Li4wZjZiZWVmZmFkMWRjMDE1
YzhhNDc3ZTdmYmU1YzliNmFhZmFmZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBQbHVn
aW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IGNoYXIKIAogICAgIGlmIChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZ
KSB7CiAgICAgICAgIGlmICghbV9kZWxpdmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPGNoYXI+PigpOworICAgICAgICAgICAgbV9k
ZWxpdmVyeURhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4oKTsKIAogICAgICAgICBpbnQg
b2xkU2l6ZSA9IG1fZGVsaXZlcnlEYXRhLT5zaXplKCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRh
LT5yZXNpemUob2xkU2l6ZSArIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyMTM2MzE3ZjI5OTlkNWUxMzc0OWRmMzhlMTlh
OGY0ZDJmMjViZDYwLi41NDcxNmEwYmIyYjFmYWI3NWQ4MWRlNDJhZWU5NmVlYTJmNmIxM2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAg
LTUxMCw3ICs1MTAsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmxvYWQoRnJhbWVMb2FkUmVxdWVz
dCYmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGlmaWNhdAogICAgIH0gZWxzZSBpZiAo
IW1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1
cmwpKQogICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKIAotICAgIHNjaGVkdWxl
UmVxdWVzdChzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpblJlcXVlc3Q+KFdURk1vdmUoZnJhbWVMb2Fk
UmVxdWVzdCksIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEsIGFyZVBvcHVwc0FsbG93ZWQo
KSkpOworICAgIHNjaGVkdWxlUmVxdWVzdChtYWtlVW5pcXVlPFBsdWdpblJlcXVlc3Q+KFdURk1v
dmUoZnJhbWVMb2FkUmVxdWVzdCksIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEsIGFyZVBv
cHVwc0FsbG93ZWQoKSkpOwogCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXgg
MDU3MjhmM2VkMzcyMDUwNGFmNTVmOTg3N2Y4NjIxYmRjMDVjZTYyMi4uNTIwNDU5NGFiNmY4NGQ1
NzAwMDQwZGZkMjk4MWMzZjU2M2VkZmYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgUGx1Z2lu
Vmlldzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSkKICAgICBpZiAobWVzc2FnZSA9PSBXTV9VU0VSICsgMSAmJgogICAgICAgICBt
X3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtUaHJvdHRsZVdNVXNlclBsdXNP
bmVNZXNzYWdlcykpIHsKICAgICAgICAgaWYgKCFtX21lc3NhZ2VUaHJvdHRsZXIpCi0gICAgICAg
ICAgICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbk1lc3NhZ2VU
aHJvdHRsZXJXaW4+KHRoaXMpOworICAgICAgICAgICAgbV9tZXNzYWdlVGhyb3R0bGVyID0gbWFr
ZVVuaXF1ZTxQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luPih0aGlzKTsKIAogICAgICAgICBtX21l
c3NhZ2VUaHJvdHRsZXItPmFwcGVuZE1lc3NhZ2UoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFy
YW0pOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCmluZGV4IDUzMGI2OWVkNzE5YzI3YWNjNmIw
N2UzNTE1OTIyMWY1NTI2YzUzMDUuLjNiZjQ0ZDg3ZDE4ZDVmMjczY2QyOTUzNTY3NmIyNDA4ZjJj
OTE0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEuaD4KIAogY2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhKElXZWJEYXRhU291cmNlKiB3ZWJEYXRhU291cmNlKSA6IG1fd2ViRGF0YVNvdXJjZSh3ZWJE
YXRhU291cmNlKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmgKaW5kZXggZTNlYzMzZmQ0OTk3YTAxYTIyNWQ1ZTFjZjliNGY0YjYyZDc3ZTIyZC4uYzQxZjg2
ZTA3M2Q4ZGNiOWU0YThhNTI5NGYwZDYzY2M5NGU1NjNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCkBAIC00MCw2ICs0MCw3IEBACiBjbGFzcyBXZWJWaWV3
OwogCiBjbGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA6IHB1YmxpYyBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2ViVmll
dyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNGE0OWI5NGJiYTU4ZDBjNTQ2MzMyOWMzZjZl
ZjIzZTg0ODhiN2FmMy4uN2IyOTljZWUyNWVjZDEwYmJhNjIxYzg1ODFiMDZhZTA2YzVhMWQxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBzaXpl
X3QgbWF4RmlsZVBhdGhzTGlzdFNpemUgPSBVU0hSVF9NQVg7CiBXZWJDaHJvbWVDbGllbnQ6Oldl
YkNocm9tZUNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcp
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0
ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZp
ZXcpKQorICAgICwgbV9ub3RpZmljYXRpb25zRGVsZWdhdGUobWFrZVVuaXF1ZTxXZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlPih3ZWJWaWV3KSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCA0MWQ1ZjA2YWVhY2I3ZTE0MTdkNGI3MDI0MDA2MGJiZTU3ZjY5MzBmLi43ODc1
NDMyNTNkNWRmZjRlYzY2OGViZTg4ZjA4ODVkMGJhZGI2NTllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApA
QCAtMzgsNiArMzgsNyBAQCBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOwog
aW50ZXJmYWNlIElXZWJVSURlbGVnYXRlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaAppbmRleCBjOWRlNDliM2NkMTQ1NTE3MjhmYjJmOWQ5NmVmNDkwZTk5
MTU4YmQ0Li5mNDhlZTczMGVlZjcxOTc5ZTRkOGQyYzMyN2VkMWJhMTdiOTRmZmE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAK
IGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJD
b250ZXh0TWVudUNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3Rp
ZmljYXRpb25zRGVsZWdhdGUuaAppbmRleCA4Mjk2YzhjY2I2ODg3ZDM0NTQ4ZDVhNjRjNjg2Nzcy
NmE3NDYwNzcyLi40Y2ZkMTAyNjVkMWQwN2E1N2YwMzBhNGU2YjE1MDY5Y2JiZmI5MzM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCkBAIC00MSw2ICs0
MSw3IEBAIGNsYXNzIERvY3VtZW50OwogfQogCiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRGVza3RvcE5vdGlmaWNhdGlv
bnNEZWxlZ2F0ZShXZWJWaWV3KiB2aWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGI1OTg5MzMyOTEw
MDllMjg1MWVkNzU0MTVlYzRhYTBmZTQwM2Q2MTEuLjQ1ZTNjYTcyNzUzYWQxYWMxMTUzYmU5NjE5
M2Y2ZWQ2MjFmZjg5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0Ns
aWVudChXZWJWaWV3Kik7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJveWVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGRiNjM1MmQ2MzgxNmY3YzlhZWVlOWY3NDRlNDhlMzgx
ZTg1NmQyYjUuLjY5ZDdlZDNlMGFhMzFmMTNiZWE2NGNmMGMyNzY1ZTI1NGZiZjhlNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNs
YXNzIFdlYkVkaXRvclVuZG9UYXJnZXQ7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tl
ckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
RWRpdG9yQ2xpZW50KFdlYlZpZXcqKTsKICAgICB+V2ViRWRpdG9yQ2xpZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGUzNTRiNzFjZGZkMmE1ZjliOGIwMTFhMDMyOWQ3
NDI0YmM5MGJiYy4uZDRiMmY3ZjYzZTg2MDg1OTM5MzQ1MmJkNjJlMTI4NWQyZThhZDQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTMsNiArOTMsNyBAQCBzdGF0aWMgV2Vi
RGF0YVNvdXJjZSogZ2V0V2ViRGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogfQog
CiBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcml2YXRlKCkgCiAgICAgICAgIDogbV9wb2xpY3lGdW5jdGlvbihudWxs
cHRyKQpAQCAtMTA3LDcgKzEwOCw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZSB7CiB9OwogCiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQoV2ViRnJhbWUqIHdlYkZyYW1lKQotICAgIDogbV9wb2xpY3lM
aXN0ZW5lclByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJp
dmF0ZT4oKSkKKyAgICA6IG1fcG9saWN5TGlzdGVuZXJQcml2YXRlKG1ha2VVbmlxdWU8V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+KCkpCiAgICAgLCBtX3dlYkZyYW1lKHdlYkZyYW1lKQog
ICAgICwgbV9tYW51YWxMb2FkZXIoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4o
ZmFsc2UpIApAQCAtOTczLDcgKzk3NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNh
dmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKiBjYWNoZWRGcmFtCiAKICAg
ICBBU1NFUlQoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID09IGNhY2hlZEZy
YW1lLT5kb2N1bWVudExvYWRlcigpKTsKIAotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
PihzdGF0aWNfY2FzdDxJV2ViRGF0YVNvdXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0Q2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVGcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGViOTc1OGJkNDIx
MDdkMmY5YTg1NGU0ZTY4ODE2NmE2ZjUxNWZiOWYuLmJiYTljOWY0NDUzNThkN2NlM2VhMDNmODk2
NjQxYmQ2ZTVlMDQwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzYsNiArMzYs
NyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2ViVmlldzsKIAogY2xhc3Mg
V2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0
aW9uQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNzU2
OTU5MGMxYjNjZjM4MTZmYzQyYTM1YmYzZjY2YmZkNzg5MDIyNC4uZjgwYWUwNDhiODJkYmRiMjM0
NjU0NjhkOTMzYzYwYTcwOTcyYzdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0x
NjksNyArMTY5LDcgQEAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNs
aWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHIKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsKLSAg
ICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZy
b250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBj
cmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5p
cXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5z
cGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250
ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9m
cm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENs
aWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKICAgICBtX2Zyb250ZW5kSGFuZGxlID0gZnJv
bnRlbmRId25kOwogICAgIHJldHVybiB0aGlzOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQoKQogICAgIGJvb2wgY3JlYXRpbmdIaWdobGlnaHQg
PSAhbV9oaWdobGlnaHQ7CiAKICAgICBpZiAoY3JlYXRpbmdIaWdobGlnaHQpCi0gICAgICAgIG1f
aGlnaGxpZ2h0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3BlY3Rl
ZFdlYlZpZXcpOworICAgICAgICBtX2hpZ2hsaWdodCA9IG1ha2VVbmlxdWU8V2ViTm9kZUhpZ2hs
aWdodD4obV9pbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGlmIChtX2hpZ2hsaWdodC0+aXNTaG93
aW5nKCkpCiAgICAgICAgIG1faGlnaGxpZ2h0LT51cGRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKaW5kZXggOTVjOWFmYTg1MDAyYTU0MzI3MGI3Y2U2YjM4OGM3MGQ0ODkxODUxOC4uMGE1MTQ4
MzkxYmFlMTI2MGRmNjg2NmIyODcwN2U2NjA4NGU5MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIGNsYXNzIFdlYlZp
ZXc7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVj
dG9yQ2xpZW50KFdlYlZpZXcqKTsKIApAQCAtOTQsNiArOTUsNyBAQCBjbGFzcyBXZWJJbnNwZWN0
b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMg
SW5zcGVjdAogfTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgV2ViQ29yZTo6V2lu
ZG93TWVzc2FnZUxpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJW
aWV3LCBIV05EIGluc3BlY3RlZFdlYlZpZXdId25kLCBIV05EIGZyb250ZW5kSHduZCwgY29uc3Qg
Q09NUHRyPFdlYlZpZXc+JiBmcm90bmVuZFdlYlZpZXcsIEhXTkQgZnJvbnRlbmRXZWJWaWV3SHdu
ZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kiwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPik7CiAgICAg
dmlydHVhbCB+V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDI0OTNjN2IwYjc5ZmM0ZmQ4
ZWNlYzBlYTk2NjdjNmVlMmFjM2EwNGEuLjQ0NTQyYTFkYTEwM2FhNDQ3NjNlOTRkNGZhYmE4NjRl
ZDAyZmM3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMzU1LDYgKzM1NSw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpz
ZXRJREJQZXJPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB9CiAKIGNsYXNz
IERpZE1vZGlmeU9yaWdpbkRhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERpZE1vZGlmeU9yaWdpbkRhdGEpOwogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlciogZGF0
YWJhc2VNYW5hZ2VyLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDI3
YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIuLjhhZmJhMGY2ZDUzYWZkNTU1
ODQ1YzE5NTM2YzJhOWMxZWM1ZjM3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogLy8gV2ViRWxlbWVudFByb3BlcnR5QmFnIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6
OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCi0gICAg
OiBtX3Jlc3VsdChzdGQ6Om1ha2VfdW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCisgICAg
OiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0
eUJhZyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4
IGE4MWMwMGU1NmM1ZGUyYWViYzEyYWI4YjZkYjExYmM5MzRlYmJiZGEuLmZiODhlMzllN2I1NmFj
MzJkY2Y1Y2Y1MDExYzM1NDgxNzFhNmMzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJ
dGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihfSW5fb3B0XyB2b2lkKiBkaWN0
aW9uYQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gcmVkaXJlY3RVUkxzVmVj
dG9yOwogICAgIGlmIChDRkFycmF5UmVmIHJlZGlyZWN0VVJMc1JlZiA9IHN0YXRpY19jYXN0PENG
QXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnlSZWYsIHJlZGlyZWN0VVJM
c0tleSkpKSB7CiAgICAgICAgIENGSW5kZXggc2l6ZSA9IENGQXJyYXlHZXRDb3VudChyZWRpcmVj
dFVSTHNSZWYpOwotICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdHJpbmc+PihzaXplKTsKKyAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oc2l6ZSk7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgICgqcmVkaXJlY3RVUkxzVmVjdG9yKVtpXSA9
IFN0cmluZyhzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChy
ZWRpcmVjdFVSTHNSZWYsIGkpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5k
ZXJlci5jcHAKaW5kZXggMmYxZjJmNDgwN2ViOWM0ZmU3MDgzNWRiNzhlMzRhMzRiY2ZmMzZkMC4u
ZDY1ZGUxOWVlOTljNDUxNDQ1ZGZiZjFiMTM1OWRjMmE4YmEzOGM4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4gQ0FEM0RSZW5kZXJlcjo6Y3JlYXRlRDNEUG9z
dFByb2Nlc3NpbmcKICAgICBtZW1jcHkob3ZlcmxheVF1YWRCdWZmZXIsIG92ZXJsYXlRdWFkVmVy
dGljZXMsIHNpemVvZihvdmVybGF5UXVhZFZlcnRpY2VzKSk7CiAgICAgb3ZlcmxheVF1YWQtPlVu
bG9jaygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RDNEUG9zdFByb2Nlc3NpbmdD
b250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1YWQpOwog
fQogCiAvLyBGSVhNRTogPHJkYXI6Ly82NTA3ODUxPiBTaGFyZSB0aGlzIGNvZGUgd2l0aCBDb3Jl
QW5pbWF0aW9uJ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKaW5kZXggNjdkNDgz
NTNiMDNkNzJlYThhOWMyOGFiODcwZDc1ZGExMWQ4MDhlYy4uNDdlYWRkYTY1NjEyZTYwNTBkMmMy
OGFjZTZmNGM5YWNlOWNiYjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgK
QEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdLUUNBIHsKIGNsYXNzIEltYWdlOwogCiBjbGFz
cyBEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dChjb25zdCBDQ29tUHRyPElE
aXJlY3QzRFRleHR1cmU5PiYsIGNvbnN0IENDb21QdHI8SURpcmVjdDNEVmVydGV4QnVmZmVyOT4m
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhpZ2hsaWdo
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhpZ2hsaWdodC5oCmluZGV4IGY5
NzU1YmI4ZGFlYWFiMzlkMzQyMmVlOGZlYjBmMjRjMWIzNTRmZWQuLmIyNjk1NDk5YjgyNmI5OWI4
MmVhZmE4NDU0MTg3ZDE5ZjZlMDdmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5vZGVIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJO
b2RlSGlnaGxpZ2h0LmgKQEAgLTM1LDYgKzM1LDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNz
IFdlYk5vZGVIaWdobGlnaHQgOiBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vZGVIaWdobGlnaHQo
V2ViVmlldyopOwogICAgIH5XZWJOb2RlSGlnaGxpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA3YmQ5ODg5NjExMWMz
YjNmZTZmZTU0ZjBhMjQ3OTY2MDZiMjJhNzVmLi45MjUzMmRiZGNhNDFiODUzMWU5MTY4Y2RkZGUz
MWI1N2E3ZjQ1NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbkNlbnRlci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgdHlwZWRlZiBPYmplY3RPYnNlcnZl
ckxpc3Q6Oml0ZXJhdG9yIE9ic2VydmVyTGlzdEl0ZXJhdG9yOwogdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgT2JqZWN0T2JzZXJ2ZXJMaXN0PiBNYXBwZWRPYnNlcnZlcnM7CiAKIHN0cnVjdCBXZWJO
b3RpZmljYXRpb25DZW50ZXJQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgTWFwcGVkT2JzZXJ2ZXJzIG1fbWFwcGVkT2JzZXJ2ZXJzOwogfTsKIApAQCAt
NTMsNyArNTQsNyBAQCBzdHJ1Y3QgV2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZSB7CiBJV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50ZXI6Om1fZGVmYXVsdENlbnRl
ciA9IDA7CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkK
LSAgICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigp
KQorICAgIDogZChtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlm
aWNhdGlvbkNlbnRlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmlj
YXRpb25DZW50ZXIuaAppbmRleCAzODllOThjN2Q5ZmRjYTMwMzE2MDE0ZjlmMWQxZjYyMGEzNDll
ZjJmLi5mMTQ5ODEyMmQ4ZGUzYzMzNzMyNTQ0OGJlMzkxNDQyNGVjNzYwMDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuaApAQCAtMzEsNiAr
MzEsNyBAQAogc3RydWN0IFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU7CiAKIGNsYXNzIFdl
Yk5vdGlmaWNhdGlvbkNlbnRlciBmaW5hbCA6IHB1YmxpYyBJV2ViTm90aWZpY2F0aW9uQ2VudGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyKiBjcmVhdGVJbnN0YW5jZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IDk3NjE0OGUzM2Y3NDQ2ZDdjMzg0OTk1OWQ2Y2Y3M2RlZjQ4ZjY3
ZmYuLjlhNjEwNzllYmU1ZDM5MGEzZWM0OWZjY2QwODY0ZDk3MzE2NGEyMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xODgwLDcgKzE4ODAsNyBAQCBib29sIFdlYlZpZXc6
OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBh
cmFtKQogICAgICAgICBtb3VzZUV2ZW50LnNldENsaWNrQ291bnQoZ2xvYmFsQ2xpY2tDb3VudCk7
CiAgICAgICAgIGhhbmRsZWQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLm1v
dXNlTW92ZWQobW91c2VFdmVudCk7CiAgICAgICAgIGlmICghbV9tb3VzZU91dFRyYWNrZXIpIHsK
LSAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxUUkFDS01P
VVNFRVZFTlQ+KCk7CisgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPFRSQUNLTU9VU0VFVkVOVD4oKTsKICAgICAgICAgICAgIG1f
bW91c2VPdXRUcmFja2VyLT5jYlNpemUgPSBzaXplb2YoVFJBQ0tNT1VTRUVWRU5UKTsKICAgICAg
ICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5kd0ZsYWdzID0gVE1FX0xFQVZFOwogICAgICAgICAg
ICAgbV9tb3VzZU91dFRyYWNrZXItPmh3bmRUcmFjayA9IG1fdmlld1dpbmRvdzsKQEAgLTY3OTQs
NyArNjc5NCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlw
ZShfSW5fIEJTVFIgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBp
ZiAoIW1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzKQotICAgICAgICBtX2VtYmVkZGVkVmlld01JTUVU
eXBlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBtX2Vt
YmVkZGVkVmlld01JTUVUeXBlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogCiAg
ICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMtPmFkZCh0b1N0cmluZyhtaW1lVHlwZSkpOwogICAg
IHJldHVybiBTX09LOwpAQCAtNjg5NCw3ICs2ODk0LDcgQEAgdm9pZCBXZWJWaWV3OjplbnRlclZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1l
bnQKICAgICAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwogICAgIH0K
IAotICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcj4oKTsKKyAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xs
ZXIgPSBtYWtlVW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+KCk7CiAgICAgbV9mdWxs
U2NyZWVuVmlkZW9Db250cm9sbGVyLT5zZXRWaWRlb0VsZW1lbnQoJnZpZGVvRWxlbWVudCk7CiAg
ICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKICNlbmRp
ZgpAQCAtNjk0Niw3ICs2OTQ2LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9H
cm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8gdXNlclNjcmlwdCA9
IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmlu
Z1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwKKyAgICBhdXRvIHVzZXJTY3JpcHQg
PSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCiAgICAgICAgIHRvU3RyaW5nVmVjdG9yKGJs
YWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9j
dW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQs
CiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0
SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmlld0dyb3VwLT51c2Vy
Q29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3Zl
KHVzZXJTY3JpcHQpKTsKQEAgLTY5NzMsNyArNjk3Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRk
VXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJT
Y3JpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29y
bGQgPSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRv
IHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRv
VVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0
cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwKKyAgICBhdXRvIHN0eWxlU2hl
ZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3Ry
aW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFj
a2xpc3QsIGJsYWNrbGlzdENvdW50KSwKICAgICAgICAgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5q
ZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5
LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclN0eWxlU2hlZXQod29ybGQtPndvcmxkKCksIFdURk1vdmUoc3R5bGVTaGVl
dCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogICAgIHJldHVybiBTX09LOwpAQCAtNzIz
Nyw3ICs3MjM3LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJv
b2wgYWNjZWxlcmF0ZWQpCiAgICAgfQogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAg
IGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKLSAg
ICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2Vs
ZXJhdGVkOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCmluZGV4IGVlY2E3Mzlk
MmIzOTRlODYwMzUxYmExYjQ2NGRlNTQ3OGI5YmIxNjcuLmRiMzZlYjlkZWQyYjllMGY1ZjZlZjQw
ZGI2YzY5OTE5YTczMDZkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
SGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCkBAIC04Miw2ICs4
Miw3IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qg
c2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApID0g
ZGVsZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJpdmF0ZTog
XAogdHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkTWFjcm9TZW1pY29sb25pZmllcgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKaW5kZXggYzA0NGQ3NzNiODc5YTY2
ZGZhZGQyZTJjYTMxNWVlZWEzNzZmZmE0YS4uM2FhMWQyMDk1MWRiZjMzNjRlN2QxNmRkMjM2NDNk
MGNkOTdmNmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaApAQCAt
MTIzLDYgKzEyMyw3IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZv
aWQqIHApID0gZGVsZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAog
cHJpdmF0ZTogXAogdHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkSW5saW5lTWFjcm9TZW1p
Y29sb25pZmllcgogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMmE1OWE3MjVhMGQ3MWNlNzBjMDFiMWEwODc4NmJmYTIyZmY4NDMxNy4uZGM2YWY3
MDA0MDZjZTBmN2UxOGIyOGUyNmUxNzFmYzg1MDQyZmNlNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAxOS0wOC0x
NCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFk
ZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChhZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2spOgor
ICAgICAgICAoc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnJ1blVJU2NyaXB0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE9wZW5QYW5l
bEZpbGVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06
CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKGV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vRFJURGF0YU9iamVjdC5jcHA6CisgICAgICAgIChEUlREYXRhT2JqZWN0OjpTZXREYXRh
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwOgor
ICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9hZERlbGVnYXRlKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChEUlRVbmRvTWFu
YWdlcjo6RFJUVW5kb01hbmFnZXIpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSk6
CisgICAgICAgIChVSURlbGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci93cGUvbWFpbi5jcHA6CisgICAgICAgIChjcmVhdGVWaWV3QmFja2VuZCk6CisgICAg
ICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRleHQuaDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNz
TWV0aG9kU3dpenpsZXIuaDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3Rh
bmNlTWV0aG9kU3dpenpsZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmg6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpydW5KU1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZv
cm1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRT
ZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RNb3ZpbmdVc2luZ0Vuc3VyZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdBZGQpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTG9jay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5Mb2Nr
VGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VbmlxdWVSZWYuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Zh
cmlhbnQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNBUmluZ0J1ZmZlclRlc3Q6OlNldFVw
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVUZXN0VmFsdWUpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2ll
cy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0
aGluQ3JlYXRlUGFnZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdl
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRl
c3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9h
ZC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyV2lsbExvYWRUZXN0OjpTZXRV
cCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRB
cHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Rm9y
Y2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZVRlc3Q6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNw
cDoKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJWaWV3QXV0aGVu
dGljYXRpb25Qcm94eUhUVFBTKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRv
d1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0
aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAg
KGFwcGx5V29ya2Fyb3VuZFRvQWxsb3dXcml0aW5nQXR0cmlidXRlZFN0cmluZ3NUb0l0ZW1Qcm92
aWRlcnMpOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJh
dGlvbjphZGRUb1dpbmRvdzpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJLaXRUZXN0U2VydmVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvVGVz
dEZvbnRPcHRpb25zLm1tOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgaW5pdFdpdGhGb250
T3B0aW9uczpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHku
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2V0T3BlblBhbmVsRmlsZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9TdHJpbmdGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdUUjo6dG9TVEQpOgorICAgICAgICAo
V1RSOjp0b1dURlN0cmluZyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVl
cyk6CisgICAgICAgIChXVFI6OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cnVuVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnNldERlZmF1bHRDYWxlbmRhclR5cGUpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RS
OjpnZXRHREtLZXlTeW1Gb3JLZXlSZWYpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9z
L1Rlc3RDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmllcik6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRv
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNw
cDoKKyAgICAgICAgKFdUUjo6d3BlS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiB3cGUvYmFj
a2VuZHMvVmlld0JhY2tlbmQuaDoKKwogMjAxOS0wOC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdKFJFR1JFU1NJT046IHIyMDA0
ODcpOiBXZWJLaXQuUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvRm9yUm90YXRlZEltYWdlIGZh
aWxzIG9uIGlPUyAxMwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmgKaW5kZXggZTczYTJjMjdkMTc3MjJkMTI0ZDE0MjUxYjkwYjY1NTIxMDg1YTMxYy4u
MWJkZjFjNDMwYmM1MGJlMzg0ZmFjY2U1MGRmZmE1MjhkYTQ4NTZhNSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC00MSw2ICs0MSw3IEBA
CiAjZW5kaWYKIAogY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7
CiAgICAgfkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDkwYzY0YzM2MTRjZGM0MmRiNmY0OTQyYmRlMWFkMTMwZmQxZmQ5Y2IuLmQy
YmYyZTgyYWNkNjQ1YzU3OGQ2MmZjNmI3MGM4N2JiYTlmZTZjZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCkBAIC0zNjMsMTEgKzM2MywxMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBh
ZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bgogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVuZ3RoID0g
SlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKG9yaWdpbi5nZXQoKSk7Ci0gICAgYXV0
byBvcmlnaW5CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7
CisgICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcob3Jp
Z2luLmdldCgpLCBvcmlnaW5CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgbWF4
TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGRlc3RpbmF0aW9uLmdl
dCgpKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpT
U3RyaW5nR2V0VVRGOENTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCksIGRlc3RpbmF0aW9uQnVmZmVy
LmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
QEAgLTEzMTgsNyArMTMxOCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFdpbGxTZW5kUmVxdWVz
dENsZWFySGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgQVNTRVJU
KCEqZXhjZXB0aW9uKTsKIAogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoaGVhZGVyLmdldCgpKTsKLSAgICBhdXRvIGhlYWRlckJ1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGhlYWRl
ckJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVu
Z3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhoZWFkZXIuZ2V0KCksIGhlYWRl
ckJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CkBAIC0yMzk0LDcgKzIzOTQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNob3VsZFBh
aW50QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKQogdm9pZCBUZXN0UnVu
bmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5uZWwpCiB7
CiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShjaGFubmVsKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPiht
YXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0
cmluZyhjaGFubmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgV2ViQ29y
ZVRlc3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKHsgYnVmZmVyLmdldCgpIH0p
OwpAQCAtMjQ2NCw3ICsyNDY0LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpydW5VSVNjcmlwdChKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1ZhbHVlUmUKICAgICBjYWNo
ZVRlc3RSdW5uZXJDYWxsYmFjayhjYWxsYmFja0lELCBjYWxsYmFjayk7CiAKICAgICBpZiAoIW1f
VUlTY3JpcHRDb250ZXh0KQotICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENv
bnRleHQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXVFI6OlVJU2NyaXB0Q29u
dGV4dD4oKnRoaXMpOwogCiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyhKU1N0cmluZ0dldENoYXJh
Y3RlcnNQdHIoc2NyaXB0KSwgSlNTdHJpbmdHZXRMZW5ndGgoc2NyaXB0KSk7CiAgICAgbV9VSVNj
cmlwdENvbnRleHQtPnJ1blVJU2NyaXB0KHNjcmlwdFN0cmluZywgY2FsbGJhY2tJRCk7CkBAIC0y
NTIxLDcgKzI1MjEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAgYXV0byBm
aWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUsIG51bGxw
dHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxlQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0
byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihm
aWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQo
KSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIG1fb3BlblBh
bmVsRmlsZXMucHVzaF9iYWNrKGZpbGVCdWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDJlOTM5N2ZmNTk0OTI1MDBmYjA4Njg3MWM4
YWY3YzZmMTY2OWFiZjQuLjEzMDY4Y2FlMDM1MzJiZDhmMjVmZDRiZGJjNTI1ZjUyYzQyMDBiOWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MzUs
NyArMTUzNSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAq
ZnJhbWUpCiAgICAgLy8gdGhlIHJlc3VsdCB3aXRob3V0IGFueSBjb252ZXJzaW9uLgogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpbm5lclRleHQpKTsKICAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmdS
ZWYuZ2V0KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1
ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tT
dHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmdSZWYuZ2V0KCksIGJ1ZmZlci5nZXQo
KSwgYnVmZmVyU2l6ZSk7CiAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwgU3RyaW5n
Ojpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAt
IDEpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDQ2MWJkM2RmM2ViYjI2MDNh
YzMyMTgyODgyMThkZDhmNjkxNjhmZmQuLjNiZTMzMjIxZDZiM2ViYzM1NmQ1MWUzMzRhMjRkOTI5
YWUyNTNhOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tCkBAIC01NjgsNyArNTY4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZv
clYKIHsKICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkK
ICAgICAgICAgdmlldyA9IFsoV2ViSFRNTFZpZXcgKil2aWV3IF9oaXRWaWV3Rm9yRXZlbnQ6ZXZl
bnRdOwotICAgIHJldHVybiAhW3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11d
ID8gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10s
IEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3
aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSkgOiBOVUxMOworICAgIHJldHVybiAhW3Zp
ZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11dID8gbWFrZVVuaXF1ZTxDbGFzc01l
dGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0
b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0
b25zKSkgOiBOVUxMOwogfQogCiBzdGF0aWMgTlNVSW50ZWdlciBzd2l6emxlZEV2ZW50UHJlc3Nl
ZE1vdXNlQnV0dG9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJU
RGF0YU9iamVjdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5j
cHAKaW5kZXggZWYyZDJlZmI4NTlmNGI4YTIyZjMwYzQ2N2FjZTFmOGFhZDE1N2E0ZC4uY2RmZThh
Y2I0NjhjNzRkMGFlMDg0Y2Y4NzZkNTM0ZmYxZTNiYTU3YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcApAQCAtNDgsNiArNDgsNyBAQCBGT1JNQVRFVEMqIGNm
VXJsV0Zvcm1hdCgpCiB9CiAKIGNsYXNzIFdDRW51bUZvcm1hdEV0YyBmaW5hbCA6IHB1YmxpYyBJ
RW51bUZPUk1BVEVUQyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV0NFbnVtRm9ybWF0RXRjKGNvbnN0IFZlY3RvcjxGT1JNQVRFVEM+JiBmb3Jt
YXRzKTsKICAgICBleHBsaWNpdCBXQ0VudW1Gb3JtYXRFdGMoY29uc3QgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxGT1JNQVRFVEM+PiYgZm9ybWF0cyk7CkBAIC0yNDksNyArMjUwLDcgQEAgU1RETUVU
SE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEoX0luXyBGT1JNQVRFVEMqIHBmb3JtYXRldGMs
IF9Jbl8gU1RHTUVESVVNKgogICAgIGlmICghcGZvcm1hdGV0YyB8fCAhcG1lZGl1bSkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8gZm9ybWF0ZXRjID0gc3RkOjptYWtlX3Vu
aXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0byBmb3JtYXRldGMgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxGT1JNQVRFVEM+KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNUR01F
RElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0Z01lZChuZXcgU1RHTUVESVVNKTsKIAogICAgIFpl
cm9NZW1vcnkoZm9ybWF0ZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuaAppbmRleCBiOTUyYjA4MWFmZWFhMzkxOTI3YWQy
Y2FiN2RkMThlODc5MzM3NDIxLi4xNmM2NDIzMDhlNTRjMTU1YWUzNjRkMjczMDFiMjgyNTM4ZmJk
NTk3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgc3RydWN0IFN0Z01lZGl1bURlbGV0ZXIgewogfTsKIAogY2xhc3MgRFJURGF0YU9i
amVjdCBmaW5hbCA6IHB1YmxpYyBJRGF0YU9iamVjdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBDb3B5TWVkaXVtKFNUR01FRElVTSogcE1lZERlc3Qs
IFNUR01FRElVTSogcE1lZFNyYywgRk9STUFURVRDKiBwRm10U3JjKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2Vu
dGVyLmgKaW5kZXggNzBiZDQ3MGUzZGNjMGU2MzBmNmQ1MWMyZWNhOGI0MjNkZDNmOTNkNy4uNDZk
ODQ1ZTMwMjc5OGMzZTMyMzhmMmFiZDE3NTU3ZmQ0YTU5ZGRhNiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRl
ci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d2luZGVmLmg+CiAKIGNsYXNzIERSVERl
c2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIgZmluYWwgOiBwdWJsaWMgSVdlYkRlc2t0b3BOb3Rp
ZmljYXRpb25zRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIoKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EUlREcm9wU291cmNlLmgKaW5kZXggZDllZTdkMDE5NjU2MzZlMTMzMTY4Nzdj
ZTkzNGJjNGM2ZDcwMjFjYy4uOWFjYTQ2NDNmZGMyMWFlODE1OWM1ZWM2OWZlZGVjNjk3OTkxZDBm
NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogCiBjbGFzcyBEUlREcm9wU291cmNlIGZpbmFs
IDogcHVibGljIElEcm9wU291cmNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOyAgICAg
ICAgCiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EcmFnZ2luZ0luZm8uaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EcmFnZ2luZ0luZm8uaAppbmRleCAwMmFkYWIzNjM0NjI0OGIxZGJh
NjRjY2YwYzY3YmRhZDc3ZDM1OWRiLi4wOTA3ZDU0OGQ3YzMwNmNjNmYxMWFjODY0YzlmNGZjMGEz
OWU4ZWRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHJhZ2dpbmdJbmZv
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RyYWdnaW5nSW5mby5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAKIGNsYXNzIERyYWdnaW5nSW5mbyB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRHJhZ2dpbmdJbmZvKElE
YXRhT2JqZWN0KiBvYmplY3QsIElEcm9wU291cmNlKiBzb3VyY2UpCiAgICAgICAgIDogbV9vYmpl
Y3Qob2JqZWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdE
ZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5oCmlu
ZGV4IDRmMTc2N2M2ZWU0YjI1MmI4ODhlOTBhNWJmOWY2MDY4NzhlMWNkZWYuLmI1MTczOWY1Y2Rh
M2I5YWI0MDdjZDcwOTk0Yjc5NmMyNGFmNTM0YzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRWRpdGluZ0RlbGVnYXRlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXRM
ZWdhY3kvV2ViS2l0Lmg+CiAKIGNsYXNzIF9fZGVjbHNwZWModXVpZCgiMjY1RENENEItNzlDMy00
NGEyLTg0QkMtNTExQzNFREFCRDZGIikpIEVkaXRpbmdEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBJ
V2ViRWRpdGluZ0RlbGVnYXRlMiwgcHVibGljIElXZWJOb3RpZmljYXRpb25PYnNlcnZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRWRpdGluZ0RlbGVnYXRl
KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVudFNlbmRlci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5kZXIuY3BwCmluZGV4IGFkY2I4
NDdlMzcyYjMyZjc3ZDIwYmUzOGE5ZDVjYmRhYmY1N2Y1ZTEuLjNhYmI5NWRjMDM5MjBmNGU3ODI0
ZjA2NzgwZTgzMWYwNWM1MDhkYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2Vu
ZGVyLmNwcApAQCAtNTksNiArNTksNyBAQCBzdGF0aWMgaW50IHRpbWVPZmZzZXQ7CiBzdGF0aWMg
UE9JTlQgbGFzdE1vdXNlUG9zaXRpb247CiAKIHN0cnVjdCBEZWxheWVkTWVzc2FnZSB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIE1TRyBtc2c7CiAgICAgdW5zaWdu
ZWQgZGVsYXk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHAKaW5kZXggYzgwZGYxYmU1ZjJkZTQ3ZDNiODMxNjM3ZWY2ZTlmYmNkOTM0YzhlNi4u
MTFjOTMzOWIxNmQ4MDRkMmMyMDFjOTMyOWY0YThjMzU0NDJhODNjYiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCkBAIC03Miw5ICs3Miw5IEBA
IHN0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChJV2ViRnJhbWUqIHdlYkZy
YW1lKQogfQogCiBGcmFtZUxvYWREZWxlZ2F0ZTo6RnJhbWVMb2FkRGVsZWdhdGUoKQotICAgIDog
bV9nY0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCi0gICAgLCBt
X2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI+KCkpCi0gICAgLCBtX3RleHRJbnB1dENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxUZXh0SW5wdXRDb250cm9sbGVyPigpKQorICAgIDogbV9nY0NvbnRyb2xsZXIobWFrZVVuaXF1
ZTxHQ0NvbnRyb2xsZXI+KCkpCisgICAgLCBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKG1ha2VV
bmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX3RleHRJbnB1dENvbnRy
b2xsZXIobWFrZVVuaXF1ZTxUZXh0SW5wdXRDb250cm9sbGVyPigpKQogewogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCmluZGV4IDJjZTJlOWQxNTc1
NzRlOTFhYmU2YTE0N2UyOGNlODVhMzYyODFkYzIuLmY4ZGY4YzMzYmZhNGE5MGVjZDUzZjkxMzgx
MWYwMGFjMTcyMDM5MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWRE
ZWxlZ2F0ZS5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXI7CiBj
bGFzcyBHQ0NvbnRyb2xsZXI7CiAKIGNsYXNzIEZyYW1lTG9hZERlbGVnYXRlIDogcHVibGljIElX
ZWJGcmFtZUxvYWREZWxlZ2F0ZSwgcHVibGljIElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUy
LCBwdWJsaWMgSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWREZWxlZ2F0ZSgpOwogICAgIHZpcnR1YWwg
fkZyYW1lTG9hZERlbGVnYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vSGlzdG9yeURlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vSGlzdG9yeURl
bGVnYXRlLmgKaW5kZXggYmE2YTFhZjQ3MzY0ZjE4OWMwOWM0Njc3N2VhMzMyYzQ5Y2QxOTMzZS4u
YWFkMTgxNWQ2Zjk0OGI4YTJhMGRkMTQ1ZGE1Y2Y3NzNlMjAzMDQ1ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0hpc3RvcnlEZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KIAogY2xhc3MgSGlzdG9yeURlbGVnYXRlIDogcHVi
bGljIElXZWJIaXN0b3J5RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEhpc3RvcnlEZWxlZ2F0ZSgpOwogICAgIHZpcnR1YWwgfkhpc3RvcnlEZWxl
Z2F0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5oCmluZGV4IGI4ZWI4OTBhNGY4NjdjZGUyYmNhYjM4
Y2ZiZWMwYjAxZDdhOGNlOWUuLjQ0ZjkyY2FlZWQzNThkNGFjMzgwZTM0YmM1NzNiNmMyODY4MzY4
MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmgKQEAgLTMyLDYgKzMyLDcgQEAKIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyBVTE9ORzsKIAogc3RydWN0IE1ENV9DVFggeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBVTE9ORyBpWzJdOwogICAgIFVMT05HIGJ1Zls0XTsKICAg
ICB1bnNpZ25lZCBjaGFyIGluWzY0XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9Qb2xpY3lEZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BvbGljeURl
bGVnYXRlLmgKaW5kZXggZTk4Mzg2NTA3NjUyMjBlZmYyMWJjMTA4OTQ4N2FiZDkzYmZhMDZhMC4u
NjkzMjIxNDUzNjcxZWZiYWE5OTEzOGUyNDIxMDg0Y2Y1MjJjYTk4ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIGNsYXNzIFRl
c3RSdW5uZXI7CiAKIGNsYXNzIFBvbGljeURlbGVnYXRlIGZpbmFsIDogcHVibGljIElXZWJQb2xp
Y3lEZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
UG9saWN5RGVsZWdhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Jlc291cmNlTG9hZERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuaAppbmRleCAxMWFlYjc4MDgzZGI1M2NkOGU5ZjU1OTVkODE4YzA3ODcy
NTJmOTViLi5lMTdiNWM0NDhjZDJjNzIzODBhNDhmNTk2NzU1Nzc2ZjZhMjM2MGYwIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIGNsYXNzIFJlc291cmNlTG9h
ZERlbGVnYXRlIDogcHVibGljIElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZSwgcHVibGljIElXZWJS
ZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWREZWxlZ2F0ZSgpOwogICAgIHZpcnR1YWwgflJl
c291cmNlTG9hZERlbGVnYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVGV4dElucHV0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1RleHRJ
bnB1dENvbnRyb2xsZXIuaAppbmRleCAyNWMzNDhlODExMGFmZTExN2RlNGQ4Yzk1YzcyYmJiNTM2
ZjYxNGI1Li4yOWYwMzhiZTJkZGI1MGU5ZmFlNTMwZTFjNmQxM2MxZDQ2Zjk5NzkyIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGV4dElucHV0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXh0SW5wdXRDb250cm9sbGVyLmgKQEAgLTM0LDgg
KzM0LDEwIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgorI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgbWFrZVdpbmRv
d09iamVjdChKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJ
RGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCmlu
ZGV4IGYwYWRiY2U0Nzk2ZmFiZjRmMGQ0MmIyNzExNjMzNzAxYWM3ODEzMTQuLjhmODJmMGQ5MjZj
MGFkNjk2MTAxYTViMTM1NGU3ZTcwZjQzODQ0M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VUlEZWxlZ2F0ZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKIHVzaW5nIHN0ZDo6d3N0cmluZzsKIAog
Y2xhc3MgRFJUVW5kb09iamVjdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRFJUVW5kb09iamVjdChJV2ViVW5kb1RhcmdldCogdGFyZ2V0LCBCU1RSIGFjdGlv
bk5hbWUsIElVbmtub3duKiBvYmopCiAgICAgICAgIDogbV90YXJnZXQodGFyZ2V0KQpAQCAtNzEs
NiArNzIsNyBAQCBjbGFzcyBEUlRVbmRvT2JqZWN0IHsKIH07CiAKIGNsYXNzIERSVFVuZG9TdGFj
ayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV91bmRvVmVjdG9yLmlzRW1wdHkoKTsgfQogICAgIHZvaWQg
Y2xlYXIoKSB7IG1fdW5kb1ZlY3Rvci5jbGVhcigpOyB9CkBAIC04Myw2ICs4NSw3IEBAIGNsYXNz
IERSVFVuZG9TdGFjayB7CiB9OwogCiBjbGFzcyBEUlRVbmRvTWFuYWdlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRFJUVW5kb01hbmFnZXIoKTsKIApAQCAt
MTAxLDggKzEwNCw4IEBAIGNsYXNzIERSVFVuZG9NYW5hZ2VyIHsKIH07CiAKIERSVFVuZG9NYW5h
Z2VyOjpEUlRVbmRvTWFuYWdlcigpCi0gICAgOiBtX3JlZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVl
PERSVFVuZG9TdGFjaz4oKSkKLSAgICAsIG1fdW5kb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJU
VW5kb1N0YWNrPigpKQorICAgIDogbV9yZWRvU3RhY2sobWFrZVVuaXF1ZTxEUlRVbmRvU3RhY2s+
KCkpCisgICAgLCBtX3VuZG9TdGFjayhtYWtlVW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKIHsKIH0K
IApAQCAtMTQ2LDcgKzE0OSw3IEBAIHZvaWQgRFJUVW5kb01hbmFnZXI6OnVuZG8oKQogfQogCiBV
SURlbGVnYXRlOjpVSURlbGVnYXRlKCkKLSAgICA6IG1fdW5kb01hbmFnZXIoc3RkOjptYWtlX3Vu
aXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKKyAgICA6IG1fdW5kb01hbmFnZXIobWFrZVVuaXF1ZTxE
UlRVbmRvTWFuYWdlcj4oKSkKICAgICAsIG1fZGVza3RvcE5vdGlmaWNhdGlvbnMobmV3IERSVERl
c2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIpCiB7CiAgICAgbV9mcmFtZS5ib3R0b20gPSAwOwpA
QCAtMTU3LDcgKzE2MCw3IEBAIFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUoKQogCiB2b2lkIFVJRGVs
ZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIoKQogewotICAgIG1fdW5kb01hbmFnZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOworICAgIG1fdW5kb01hbmFnZXIgPSBtYWtlVW5p
cXVlPERSVFVuZG9NYW5hZ2VyPigpOwogfQogCiBIUkVTVUxUIFVJRGVsZWdhdGU6OlF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmgKaW5kZXggNzgyNTg5MDM3NzAwNTVhYzky
NDY2MTkxYTVlYjhkZWZmNDI1MTRiYi4uZjRmOGQ1ZDI3NjM5Y2NiNzQ0NzZhY2VjZjE1ZjI3MWRi
MGZiNmU0YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5oCkBAIC0zNyw2ICsz
Nyw3IEBAIGNsYXNzIERSVFVuZG9NYW5hZ2VyOwogY2xhc3MgRFJURGVza3RvcE5vdGlmaWNhdGlv
blByZXNlbnRlcjsKIAogY2xhc3MgVUlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBJV2ViVUlEZWxl
Z2F0ZTIsIElXZWJVSURlbGVnYXRlUHJpdmF0ZTMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFVJRGVsZWdhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmlu
ZGV4IGJlNjQ2MGU1NmI3YjcwY2QyNDgwZmM4N2RlMmI5YmE5NzBlNThjMzguLjcyYWYzY2JhYmNk
MDA0YWRjNDIzY2ZkMzE4MzA0OTk2ODQxYzYxODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAg
LTY2LDYgKzY2LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlv
bnNbXSA9CiB9OwogCiBjbGFzcyBJbnB1dENsaWVudCBmaW5hbCA6IHB1YmxpYyBXUEVUb29saW5n
QmFja2VuZHM6OlZpZXdCYWNrZW5kOjpJbnB1dENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW5wdXRDbGllbnQoR01haW5Mb29wKiBsb29wLCBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fbG9vcChsb29wKQpAQCAtMTI5LDggKzEz
MCw4IEBAIHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJW
aWV3ICosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdQ
RVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ+IGNyZWF0ZVZpZXdCYWNrZW5kKHVpbnQzMl90
IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiB7CiAgICAgaWYgKGhlYWRsZXNzTW9kZSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc1Zp
ZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
UEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdQRVRvb2xpbmdC
YWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdQRVRvb2xpbmdCYWNrZW5kczo6V2lu
ZG93Vmlld0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQpOwogfQogCiB0eXBlZGVmIHN0cnVjdCB7CkBA
IC0yNTEsNyArMjUyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAg
ICAgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X3VucmVmKHNldHRpbmdzKTsKIAotICAgIGJhY2tl
bmRQdHItPnNldElucHV0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SW5wdXRDbGllbnQ+KGxvb3As
IHdlYlZpZXcpKTsKKyAgICBiYWNrZW5kUHRyLT5zZXRJbnB1dENsaWVudChtYWtlVW5pcXVlPElu
cHV0Q2xpZW50Pihsb29wLCB3ZWJWaWV3KSk7CiAjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJ
VFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQogICAgIGF1dG8qIGFjY2Vzc2libGUgPSB3cGVfdmll
d19iYWNrZW5kX2Rpc3BhdGNoX2dldF9hY2Nlc3NpYmxlKHdwZUJhY2tlbmQpOwogICAgIGlmIChB
VEtfSVNfT0JKRUNUKGFjY2Vzc2libGUpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmggYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaAppbmRleCA0ZTAyMGYxOTZj
ZDAzM2Q2MWVlMGU2MjhmNmExZTU5Y2ExYzMzNDU4Li4wYjg0ZDJkNDU0NTU4M2RlOWZjMGRlYzEy
YTRhYTg4YTY1OWVkMTk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaApAQCAtNjgsNiArNjgsNyBAQCB0eXBl
ZGVmIGVudW0gIHsKIH0gQ2FsbGJhY2tUeXBlOwogCiBjbGFzcyBVSVNjcmlwdENvbnRleHQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVJ
U2NyaXB0Q29udGV4dCk7CiBwdWJsaWM6CiAgICAgVUlTY3JpcHRDb250ZXh0KFVJU2NyaXB0Q29u
dGV4dERlbGVnYXRlJik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29h
L0NsYXNzTWV0aG9kU3dpenpsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xh
c3NNZXRob2RTd2l6emxlci5oCmluZGV4IDI4ZGIxMGE0Nzk5NjMwYzY0YzU1ZDA3ODZjMDBlZTA5
NDg5MTQ1ZTIuLjM5YjRlNWVhNzE4MzY4OGNkZWM5YmVmY2M5NjRjZTg5M2E1NDNmMDcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5o
CisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5o
CkBAIC0yNiw5ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxvYmpjL3J1bnRp
bWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBjbGFzcyBDbGFzc01ldGhvZFN3aXp6bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGFzc01ldGhvZFN3aXp6bGVy
KTsKIHB1YmxpYzoKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyKENsYXNzLCBTRUwsIElNUCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3RhbmNlTWV0aG9kU3dp
enpsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6
emxlci5oCmluZGV4IGI4YTBiMGIxOGQxMzFlY2M5OWIyNmEzOTFjODkwZjlmNmM2YzA3MmUuLjYy
NDc0ZDdjZDk3Nzc5OGM1YmJlY2FmNjU2YTYyNjQ4NTVhY2Y4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6emxlci5oCisrKyBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6emxlci5oCkBAIC0y
Niw5ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiBjbGFzcyBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
KTsKIHB1YmxpYzoKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyKENsYXNzLCBTRUwsIElNUCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvdW50ZXJzLmgKaW5kZXggZjllYTIyNDAyNjE1MGQ4ZTFhYzZiYjc2MTViNmRl
Mzg5MGFmNjcwZS4uYWI1YzUyZjc1ZDFhYzZhZjk2MGFjMTRjYTcwYjVjYjc0ZmEzNjI4OCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ291bnRlcnMuaApAQCAtMjcsNiArMjcsOCBAQAogI2lmbmRlZiBDb3VudGVyc19o
CiAjZGVmaW5lIENvdW50ZXJzX2gKIAorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKIHN0
cnVjdCBDb3B5TW92ZUNvdW50ZXIgewogICAgIHN0YXRpYyB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25D
b3VudDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29weUNvdW50OwpAQCAtNTAsNiArNTIsNyBAQCBz
dHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsKIAogCiBzdHJ1Y3QgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRp
YyB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0aWMgdW5zaWduZWQgZGVzdHJ1
Y3Rpb25Db3VudDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0
VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcAppbmRleCAy
MTM2ZTk4ZDhlYmI4NzVkNTk3ZmM2ZTA3YzdiMDFlZDViODRhZTE2Li42YTIzMzYzMjk0MWFjZjYw
NzA1OTQ5NDI2NDAxYjMyNzMzN2M3MDgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0phdmFTY3JpcHRUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRU
ZXN0LmNwcApAQCAtNzUsNyArNzUsNyBAQCA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBydW5K
U1Rlc3QoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgV0tQYQogICAgIFV0
aWw6OnJ1bigmY29udGV4dC5kaWRGaW5pc2gpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY29udGV4dC5hY3R1YWxTdHJpbmcuZ2V0
KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNp
emUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGNvbnRleHQu
YWN0dWFsU3RyaW5nLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIAogICAg
IHJldHVybiBjb21wYXJlSlNSZXN1bHQoc2NyaXB0LCBidWZmZXIuZ2V0KCksIGV4cGVjdGVkUmVz
dWx0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKaW5kZXggOGY4
ZDc2OGE1M2MyNzUxYTI0M2UwNTk1ZTJjMGMwZjQ0NWRkOTZjOC4uYmJiZmY3MDllNjdkMzU5YjRl
NDgxNzFlZDdjNGMyNDAwOGE1NjdmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0
aWxpdGllcy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgV0tDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRG
b3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3ROYW1lLCBXS1QKIHN0
ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1
dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1
dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZm
ZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmlu
ZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVdlYlZpZXcuaAppbmRleCBhZDJhNzMyZDUxOTQ3YmJjN2FmYzY0ZTI3ZDQyMTVjZTMy
ODdkZGVlLi4wYzI3YTQ2MTY0NWZiYTEyYTVjNjk1ZDkzMjY0MzA1MjZjNGVmMTI5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYg
UGxhdGZvcm1XZWJWaWV3X2gKICNkZWZpbmUgUGxhdGZvcm1XZWJWaWV3X2gKIAorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NHR2VvbWV0cnkuaD4KICNlbmRpZgpAQCAtNjMsNiArNjUsNyBAQCB0eXBlZGVmIHVpbnQzMl90
IFdLRXZlbnRNb2RpZmllcnM7CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIGNsYXNzIFBs
YXRmb3JtV2ViVmlldyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpOwogICAg
IGV4cGxpY2l0IFBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmID0g
MCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKaW5kZXggNGIx
MGM4NmEyYWI3MzJlMWVhNjI3NDg0Y2M3ODk0MGZiNmNkNmU5Ni4uMmEwNmY4YmE1Y2E5ZmViNDky
YTM1MjJjNWM2NTUwMTM4ZDIyMzdlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0V4cGVjdGVkLmNwcApAQCAtNDA3LDYgKzQwNyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCBkZXN0
cnVjdG9ycykKIHN0YXRpYyBpbnQgc25vd2ZsYWtlcyA9IDA7CiBzdGF0aWMgaW50IG1lbHRlZCA9
IDA7CiBzdHJ1Y3Qgc25vd2ZsYWtlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgc3RhdGljIHZvaWQgcmVzZXQoKSB7IHNub3dmbGFrZXMgPSBtZWx0ZWQgPSAwOyB9
CiAgICAgc25vd2ZsYWtlKCkgeyArK3Nub3dmbGFrZXM7IH0KICAgICB+c25vd2ZsYWtlKCkgeyAr
K21lbHRlZDsgfQpAQCAtNDE2LDcgKzQxNyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVf
cHRyKQogewogICAgIC8vIFVuaXF1ZSBzbm93Zmxha2VzIGNhbm5vdCBiZSBjb3BpZWQuCiAgICAg
ewotICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dm
bGFrZT4oKSk7CisgICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25v
d2ZsYWtlPigpKTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwogICAgICAgICBF
WFBFQ1RfRVEobWVsdGVkLCAwKTsKICAgICB9CkBAIC00MjUsNyArNDI2LDcgQEAgVEVTVChXVEZf
RXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewot
ICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFr
ZT4oKSk7CisgICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2Zs
YWtlPigpKTsKICAgICAgICAgVW5leHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4g
YyhXVEZNb3ZlKHMpKTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwogICAgICAg
ICBFWFBFQ1RfRVEobWVsdGVkLCAwKTsKQEAgLTQ0Niw3ICs0NDcsNyBAQCBURVNUKFdURl9FeHBl
Y3RlZCwgdW5pcXVlX3B0cikKICAgICB9OwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDxzdGQ6
OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPiwgaW50PiBzKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtl
PigpKTsKKyAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4sIGludD4g
cyhtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS52YWx1
ZSgpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpAQCAtNDU0LDcgKzQ1
NSw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFrZTo6cmVz
ZXQoKTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8c25v
d2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSkp
OworICAgICAgICBFeHBlY3RlZDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1h
a2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RG
TW92ZShzKS5lcnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpA
QCAtNDYyLDcgKzQ2Myw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNu
b3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgc3RkOjp1
bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxz
bm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgc3RkOjp1bmlxdWVfcHRyPHNu
b3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpKTsKICAg
ICAgICAgcGxvdyhXVEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25v
d2ZsYWtlcywgMSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoQ291bnRlZFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291
bnRlZFNldC5jcHAKaW5kZXggODRkYTVlYzNmZmMyNDhhY2RkOWUzNjMzMDM4YzY5ZGFlODkxMjA5
OS4uN2I4ZmFmMjg4YWJjMDdjZmFmOGI1MjcxMjM4Zjc2ZDAxMzAxMmVlNiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcApAQCAtMjQxLDcg
KzI0MSw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBI
YXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgaGFzaENv
dW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI1OSw3
ICsyNTksNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5SW5pdGlhbENv
dW50KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1
dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigp
OwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDEyKTsKIAogICAg
IEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9u
Q291bnQpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlx
dWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6
OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQ
dHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAK
QEAgLTMxMiw3ICszMTIsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5
X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5n
ZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAt
MzIzLDcgKzMyMyw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfR2V0
VXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxp
bnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAg
ICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMzM3LDcgKzMz
Nyw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdS
YXdQb2ludGVyKQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVl
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0
ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAppbmRleCAxZTE2M2QzODk5
OGU2YmFiZmZmNTM4NDEzY2NhMjhhYTZkMjk4OTgyLi5hODBjYTc0OTRhOGY5YTc5NjdlMWU0OTQ2
ZmU4Y2NhNjM5Y2JiNThiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9IYXNoTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFw
LmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleSkK
IAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFr
ZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIG1hcC5hZGQoV1RG
TW92ZSh1bmlxdWVQdHIpLCAyKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIFRF
U1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAg
IEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0g
dW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApA
QCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9Db250YWlu
c1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBp
bnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI1NSw3ICsyNTUsNyBAQCBURVNUKFdURl9IYXNo
TWFwLCBVbmlxdWVQdHJLZXlfR2V0VXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8c3Rk
Ojp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdl
dCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjY5LDcgKzI2
OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50
ZXIpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yODksNyArMjg5LDcgQEAgVEVTVChXVEZf
SGFzaE1hcCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoTWFw
PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0
ciksIDIpOwogCkBAIC01NjMsMTIgKzU2MywxMiBAQCBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVf
VW5pcXVlUG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8
dW5zaWduZWQ+PiBtYXA7CiAgICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5lbnN1
cmUoMSwgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMSk7IH0pOworICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDEpOyB9KTsKICAgICAgICAgRVhQRUNU
X0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKmFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIGFkZFJlc3VsdC5p
dGVyYXRvci0+a2V5KTsKICAgICAgICAgRVhQRUNUX1RSVUUoYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwotICAgICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDIpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQy
ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazx1bnNpZ25lZD4oMik7IH0pOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICptYXAuZ2V0KDEp
KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqYWRkUmVzdWx0Mi5pdGVyYXRvci0+dmFsdWUuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIGFkZFJlc3VsdDIuaXRlcmF0b3ItPmtleSk7CkBA
IC01OTAsNiArNTkwLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1JlZlB0cikKIH0KIAog
Y2xhc3MgT2JqZWN0V2l0aFJlZkxvZ2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgT2JqZWN0V2l0aFJlZkxvZ2dlcihSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dl
cikKICAgICAgICAgOiBtX2xvZ2dlcihXVEZNb3ZlKGxvZ2dlcikpCkBAIC02MDQsNyArNjA1LDcg
QEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdFbnN1cmUoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiB7
CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFdpdGhSZWZMb2dn
ZXI+PiBtYXA7CiAgICAgCi0gICAgbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9KTsKKyAgICBt
YXAuZW5zdXJlKDEsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+
KFdURk1vdmUobG9nZ2VyKSk7IH0pOwogfQogCiB2b2lkIHRlc3RNb3ZpbmdVc2luZ0FkZChSZWY8
UmVmTG9nZ2VyPiYmIGxvZ2dlcikKQEAgLTYxMiw3ICs2MTMsNyBAQCB2b2lkIHRlc3RNb3ZpbmdV
c2luZ0FkZChSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBz
dGQ6OnVuaXF1ZV9wdHI8T2JqZWN0V2l0aFJlZkxvZ2dlcj4+IG1hcDsKIAogICAgIGF1dG8mIHNs
b3QgPSBtYXAuYWRkKDEsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBzbG90ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOworICAg
IHNsb3QgPSBtYWtlVW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7
CiB9CiAKIFRFU1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9MYW1iZGFzQ2FwdHVyaW5nQnlSZWZlcmVu
Y2UpCkBAIC02ODMsNiArNjg0LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVmFsdWVJc0Rlc3RydWN0
ZWRPblJlbW92ZSkKIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVm
KQogewogICAgIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCByZWYoKQogICAgICAg
ICB7CiAgICAgICAgICAgICArK2NvdW50OwpAQCAtNjk3LDcgKzY5OSw3IEBAIFRFU1QoV1RGX0hh
c2hNYXAsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogICAgICAgICBjb25zdCBEZXJlZk9i
c2VydmVyKiBvYnNlcnZlZEJ1Y2tldCB7IG51bGxwdHIgfTsKICAgICB9OwogCi0gICAgYXV0byBv
YnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAgICBhdXRvIG9i
c2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAgICAgSGFzaE1hcDxSZWZQ
dHI8RGVyZWZPYnNlcnZlcj4sIGludD4gbWFwOwogICAgIG1hcC5hZGQoYWRvcHRSZWYob2JzZXJ2
ZXIuZ2V0KCkpLCA1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAK
aW5kZXggNzFlY2ZkZGI4NDJiNmJkNTE2NDFjYTA1YjYxMDhhZDQ4ZjYyYmI3ZC4uODcyNjhjNzRm
MGNiOGZjMTQ5ZWJmNjBjODU4OGZjZWQzNTgxYTIwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaFNldC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBURVNUKFdURl9IYXNoU2V0
LCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlx
dWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAg
c2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0xNDQsNyArMTQ0
LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIp
CiB7CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRy
ID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApA
QCAtMTU4LDcgKzE1OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWlu
c1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBz
ZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4o
NSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3Zl
KHVuaXF1ZVB0cikpOwogCkBAIC0xNzEsNyArMTcxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5p
cXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlx
dWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlx
dWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xOTEs
NyArMTkxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1Bv
aW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQo
V1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMjgzLDYgKzI4Myw3IEBAIFRFU1QoV1RGX0hhc2hT
ZXQsIENvcHlDYXBhY2l0eUlzTm90T25Cb3VuZGFyeSkKIFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0
ck5vdFplcm9lZEJlZm9yZURlcmVmKQogewogICAgIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBORVZFUl9JTkxJ
TkUgdm9pZCByZWYoKQogICAgICAgICB7CiAgICAgICAgICAgICArK2NvdW50OwpAQCAtMjk3LDcg
KzI5OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQog
ICAgICAgICBjb25zdCBEZXJlZk9ic2VydmVyKiBvYnNlcnZlZEJ1Y2tldCB7IG51bGxwdHIgfTsK
ICAgICB9OwogCi0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNl
cnZlcj4oKTsKKyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigp
OwogCiAgICAgSGFzaFNldDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4+IHNldDsKICAgICBzZXQuYWRk
KGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9MaXN0SGFzaFNldC5jcHAKaW5kZXggNjU3YmU0MWQ2MjA3MjQ0NjdhNTU0OWUyYWI1YTE5
NDFjNGUzNzNjMS4uYjc3MGE1YjI3YzFkMmIwOTVhNWJiNTlkNjVhYzNmNGRjNGU0ZTY4ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcApAQCAtMzgw
LDcgKzM4MCw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBM
aXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+
IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVu
aXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0zOTYsNyArMzk2LDcgQEAgVEVTVChXVEZfTGlz
dEhhc2hTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIExpc3RI
YXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVl
UHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTQxMCw3
ICs0MTAsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNp
bmdSYXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBs
aXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7Cisg
ICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+
KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSk7CiAKQEAgLTQyMSw5ICs0MjEsOSBAQCBURVNUKFdURl9MaXN0SGFzaFNl
dCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0
SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRy
V2l0aDIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMik7CisgICAgYXV0byB1bmlxdWVQdHJXaXRo
MiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMik7CiAgICAgYXV0byBw
dHJXaXRoMiA9IHVuaXF1ZVB0cldpdGgyLmdldCgpOwotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQg
PSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNCk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoNCA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNCk7CiAgICAgYXV0byBwdHJXaXRo
NCA9IHVuaXF1ZVB0cldpdGg0LmdldCgpOwogCiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHJXaXRoMikpOwpAQCAtNDM1LDcgKzQzNSw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlx
dWVQdHJLZXlfSW5zZXJ0QmVmb3JlVXNpbmdSYXdQb2ludGVyKQogICAgIEFTU0VSVF9FUShwdHJX
aXRoNCwgbGlzdC5sYXN0KCkuZ2V0KCkpOwogICAgIEFTU0VSVF9FUSg0LCAqbGlzdC5sYXN0KCku
Z2V0KCkpOwogCi0gICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IHN0ZDo6bWFrZV91bmlxdWU8aW50
PigzKTsKKyAgICBhdXRvIHVuaXF1ZVB0cldpdGgzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8aW50PigzKTsKICAgICBhdXRvIHB0cldpdGgzID0gdW5pcXVlUHRyV2l0aDMuZ2V0
KCk7CiAKICAgICBsaXN0Lmluc2VydEJlZm9yZShwdHJXaXRoNCwgV1RGTW92ZSh1bmlxdWVQdHJX
aXRoMykpOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQ
dHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlx
dWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+KCk7CiAgICAgYXV0byogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3Qu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0xvY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9j
ay5jcHAKaW5kZXggMmRjY2VkY2FkY2M2YzIyMjczZGViYzIwZjNmZjY3N2M4NzMyOTAyNy4uNWZk
MzFiZjFjOWFiZWNmYjhhYmU3MzU2MDhhNDdjNTYwNDMwNDc3MiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvTG9jay5jcHAKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IExvY2tJbnNwZWN0
b3IgewogdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiB2b2lkIHJ1bkxvY2tUZXN0KHVuc2ln
bmVkIG51bVRocmVhZEdyb3VwcywgdW5zaWduZWQgbnVtVGhyZWFkc1Blckdyb3VwLCB1bnNpZ25l
ZCB3b3JrUGVyQ3JpdGljYWxTZWN0aW9uLCB1bnNpZ25lZCBudW1JdGVyYXRpb25zKQogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9IHN0ZDo6bWFrZV91bmlxdWU8TG9j
a1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlW10+
IHdvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdy
b3VwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9ja3MgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxMb2NrVHlwZVtdPihudW1UaHJlYWRHcm91cHMpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJH
cm91cCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIHRocmVhZEdyb3VwSW5kZXggPSBudW1UaHJlYWRH
cm91cHM7IHRocmVhZEdyb3VwSW5kZXgtLTspIHsKICAgICAgICAgd29yZHNbdGhyZWFkR3JvdXBJ
bmRleF0gPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFy
a2luZ0xvdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNw
cAppbmRleCA0NTJlMjI3NzFkYzA2NGFkYWFmZTYyMGViMzNlODAxMzBmNzlmMTk3Li5lMDBhMDli
MmExN2FhNzM0ODU2ZTQyYzExNDVjYmU2MDg2M2YwYTA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0cnVjdCBT
aW5nbGVMYXRjaFRlc3QgewogCiB2b2lkIHJ1blBhcmtpbmdUZXN0KHVuc2lnbmVkIG51bUxhdGNo
ZXMsIHVuc2lnbmVkIGRlbGF5LCB1bnNpZ25lZCBudW1UaHJlYWRzLCB1bnNpZ25lZCBudW1TaW5n
bGVVbnBhcmtzKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRjaFRlc3RbXT4gdGVz
dHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8U2luZ2xlTGF0Y2hUZXN0W10+KG51bUxhdGNoZXMpOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBsYXRjaEluZGV4ID0gbnVtTGF0Y2hlczsgbGF0Y2hJbmRleC0tOykK
ICAgICAgICAgdGVzdHNbbGF0Y2hJbmRleF0uaW5pdGlhbGl6ZShudW1UaHJlYWRzKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKaW5kZXggMDgxZGY5ZTRm
YzFkMjUxZDgxNGIyMjY0YmQyZDBlMDUyYzBiZDQxZi4uZjRlZjk4M2IxYTlmYmU4OTgwN2M3NWFj
MjhmZGI2MjZkOWE5NmExMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVmQ291bnRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVm
Q291bnRlci5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBURVNUKFdURiwgUmVmQ291bnRlcikKIFRF
U1QoV1RGLCBSZWZDb3VudGVyRGVsZXRlQ291bnRlcldpdGhPdXRzdGFuZGluZ1Rva2VucykKIHsK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBjb3VudGVyID0gbWFrZVVuaXF1
ZTxUZXN0Q291bnRlcj4oWyZdKFJlZkNvdW50ZXJFdmVudCBldmVudCkgewogICAgICAgICAgICAg
aWYgKCFjb3VudGVyLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgIGNvdW50ZXIgPSBudWxscHRy
OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1VuaXF1ZVJlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYu
Y3BwCmluZGV4IDRkMmIyMmFhNTRmOGIwMjU0ODBmNTllNTYxYTNjY2U3MTU1MDIzMTIuLjFhZmUz
ZTk3NzliYjg0ODg3ZTk0MzBkZTQxNzI2Yzc0Mzg1MzJmZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcApAQCAtMzAsOCArMzAsMTEgQEAKIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogICAgIAotY2xhc3MgQSB7IH07CitjbGFzcyBBIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK307CiBjbGFzcyBCIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCKGludCBhLCBpbnQgYiwgaW50IGMpCiAgICAgICAg
IDogYShhKQpAQCAtNDMsNiArNDYsNyBAQCBjbGFzcyBCIHsKICAgICBpbnQgYzsKIH07CiBjbGFz
cyBDIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDKFVuaXF1
ZVJlZjxBPiYmIGEpCiAgICAgICAgIDogYShXVEZNb3ZlKGEpKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9WYXJpYW50LmNwcAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1NGZmZmQzMzIxMzk1
ZTlmMWUyZDJhN2MyLi41MWVjYTA3NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5ZmY0ZmQ1NmJiIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAtMjEyLDcgKzIx
Miw3IEBAIFRFU1QoV1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKICAgICBDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7CiAKICAgICB7Ci0g
ICAgICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOworICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICAgICAgVmFyaWFudDxzdGQ6OnVuaXF1
ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gdiA9IFdURk1vdmUodW5p
cXVlUHRyKTsKIAogICAgICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
V2Vha1B0ci5jcHAKaW5kZXggMTUwYjliNzZjOGE1NjVlMzY1NTQ4MzZlMGJiZWMwNTA1Yzc4NDhm
Mi4uN2U2MzA2OTNlZWM2MDQxYTM3NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0
IEludCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnQ+IHsKIH07CiAKIGNsYXNzIEJhc2UgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEJhc2UoKSB7IH0KIApAQCAtNTc4LDEwICs1NzksMTAgQEAgVEVTVChX
VEZfV2Vha1B0ciwgV2Vha0hhc2hTZXRFeHBhbnNpb24pCiAgICAgICAgIEVYUEVDVF9FUSh3ZWFr
SGFzaFNldC5jYXBhY2l0eSgpLCAwdSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGluaXRpYWxDYXBh
Y2l0eSAvIG1heExvYWRDYXApOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5p
dGlhbENhcGFjaXR5IC8gbWF4TG9hZENhcDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0g
bWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3Qp
OwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAg
ICAgIG90aGVyT2JqZWN0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpKTsKKyAgICAg
ICAgICAgIG90aGVyT2JqZWN0cy5hcHBlbmQobWFrZVVuaXF1ZTxCYXNlPigpKTsKICAgICAgICAg
ICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgfQogICAgICAgICBF
WFBFQ1RfRVEoc19iYXNlV2Vha1JlZmVyZW5jZXMsIG90aGVyT2JqZWN0cy5zaXplKCkpOwpAQCAt
NjE1LDcgKzYxNiw3IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQog
ICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICB1
bnNpZ25lZCBvYmplY3RDb3VudCA9IGluaXRpYWxDYXBhY2l0eSAqIDI7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRv
IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2Jq
ZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpv
YmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAg
ICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTY2NywxMCArNjY4
LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZXNFbXB0eSkKICAgICB7
CiAgICAgICAgIFdlYWtIYXNoU2V0PEJhc2U+IHdlYWtIYXNoU2V0OwogICAgICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJhc2U+PiBvYmplY3RzOwotICAgICAgICBhdXRvIGZpcnN0T2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0g
bWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0
KTsKICAgICAgICAgZG8gewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4o
KTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9i
amVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgIH0gd2hpbGUgKHdlYWtIYXNo
U2V0LmJlZ2luKCkuZ2V0KCkgPT0gZmlyc3RPYmplY3QuZ2V0KCkpOwpAQCAtNzM0LDggKzczNSw4
IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAKICAgICB3aGls
ZSAoMSkgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKLSAgICAgICAg
YXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKLSAgICAgICAgYXV0
byBsYXN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZp
cnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGxhc3RPYmplY3Qg
PSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqZmlyc3RPYmpl
Y3QpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmxhc3RPYmplY3QpOwogICAgICAgICBpZiAo
d2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSAhPSBmaXJzdE9iamVjdC5nZXQoKSkKQEAgLTc1OSwx
MCArNzYwLDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAg
ICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBub25GaXJz
dE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBub25GaXJz
dE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpu
b25GaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAg
ICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdo
aWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IG5vbkZpcnN0T2JqZWN0LmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZm
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5j
cHAKaW5kZXggMmFhYjY1ZGQ4ZmQ3ZWYwNzA1MWZiNmY3NTY3NThjZGU3MDJlMDdhMS4uODFkN2Jh
MjkxYWU5ZjRhYjdjZjJlNWY5YWFkNjJjOTQyNDM1MzY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgQ0FSaW5nQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKQogICAgIHsKICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZCgpOwotICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1
ZmZlcj4oKTsKKyAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Q0FSaW5nQnVmZmVyPigpOwogICAgIH0KIAogICAgIC8vIENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbihkb3VibGUgc2FtcGxlUmF0ZSwgVUludDMyIG51bUNoYW5uZWxzLCBQQ01Gb3Jt
YXQgZm9ybWF0LCBib29sIGlzSW50ZXJsZWF2ZWQsIHNpemVfdCBjYXBhY2l0eSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNw
cAppbmRleCA3NzhlNjE1NWYwNmNjMTI4Mzk3OTc1ZjA0NTg3MTJhMmM3MTA0MGZhLi5kY2E0NjM2
MDJlOTZkNjBhMDQ1MTM4MTIxY2JiZGNlZmJlZTllNWMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHN0YXRpYyB1bnNpZ25lZCBkZWxl
dGlvbkNvdW50OwogCiBjbGFzcyBDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMg
V2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25Ob2RlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUoKQog
ICAgIHsKQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2Rl
IDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CiAKIHN0YXRpYyBSZWY8V2Vi
Q29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsKLSAgICBhdXRvIG5v
ZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKKyAg
ICBhdXRvIG5vZGUgPSBtYWtlVW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsK
ICAgICByZXR1cm4gV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUobm9k
ZSksIFdlYkNvcmU6OlZhbHVlUmFuZ2VBbGwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCmluZGV4IGY1
OGRhOGE0MjA3M2VjOTliYmVlMzRhODViZWMzNGMwODVjNTJhNjQuLjBjMWEwNjlmMTNjMzljNDA5
ZTVkNWUxYjAzYTdlOTJiZjliMzY2YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBAIC00OCwxMCArNDgs
MTAgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRTaXplKQogICAgIHVpbnQz
Ml90IGNoYW5uZWxJZCA9IDB4MDUwNjA3MDg7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAK
LSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0
PihjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+
KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxG
aWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQs
IFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIEVYUEVDVF9FUSg2NHUs
IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKIAotICAgIGF1dG8gY29u
dGludWF0aW9uUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFj
a2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGludWF0aW9u
UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQs
IDAsIFdURk1vdmUoZGF0YSkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGNvbnRpbnVhdGlvblBhY2tl
dC0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCkpOwogfQogCkBAIC03MCw3ICs3MCw3IEBAIFRF
U1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YSkKICAgICB1aW50MzJfdCBjaGFu
bmVsSWQgPSAweEY1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9Owog
ICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2lu
azsKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFj
a2V0PihjaGFubmVsSWQsIGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7
CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hh
bm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIHNp
emVfdCBpbmRleCA9IDA7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZCA9IGluaXRQ
YWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CkBAIC05NCw3ICs5NCw3IEBAIFRFU1QoRmlkb0hp
ZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprV2luazsKICAgICBzaXplX3QgbGVuZ3RoID0gZGF0YS5zaXplKCk7Ci0g
ICAgYXV0byBvcmlnUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4o
Y2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CisgICAgYXV0byBvcmlnUGFj
a2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1v
dmUoZGF0YSksIGxlbmd0aCk7CiAKICAgICBzaXplX3QgcGF5bG9hZExlbmd0aCA9IHN0YXRpY19j
YXN0PHNpemVfdD4ob3JpZ1BhY2tldC0+cGF5bG9hZExlbmd0aCgpKTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gb3JpZ0RhdGEgPSBvcmlnUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXgg
MWVkMTMyOGY4MTMwOWUxMmUxMzcxY2IzYWRmZTZiMGE5NzgzZWViNi4uMjI4MzgzYTBmMzBhOWIx
MzlmNmFhZjQzZjk1Y2VkZDgwOTE2NmU2YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgVEVTVF9G
KEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBX
b3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVl
LmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAg
YXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRl
c3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmlj
YXRpb246CkBAIC0xOTAsNyArMTkwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0
TXVsdGlwbGVDaGFuZ2VzKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0
ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10g
KEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0g
bWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVm
KCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAg
IGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yNTAs
NyArMjUwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRpb24pCiAKICAg
ICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsK
IAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBG
aWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9y
Pih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpG
aWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6Rmls
ZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTI4OSw3ICsyODksNyBAQCBURVNUX0YoRmls
ZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQogCiAgICAgYXV0byB0ZXN0
UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRv
IG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwg
dGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBl
KSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQ
YXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5
cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMzQ2LDcgKzM0Niw3IEBAIFRFU1RfRihGaWxlTW9uaXRv
clRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAKICAgICBhdXRvIHRl
c3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1
dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgp
LCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5
cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmls
ZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlOjpNb2RpZmljYXRpb246CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDkyZDhhMTkyY2E3YjJhMTA4MTU2NTk5N2Iw
ZWE1YjFmOWFlYThmNjUuLjIxOWU5NjZkYmViYWE4NGQzNjAyNzIyZTk1OWUzMmY2NGZiNGRiMmUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tp
ZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tp
ZXMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEN1cmxDb29raWVzOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CiAgICAgewogICAgICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwogCi0gICAgICAgIG1fY29va2llSmFyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOworICAg
ICAgICBtX2Nvb2tpZUphciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tp
ZWRiLnNxbCIpKTsKICAgICAgICAgbV9jb29raWVKYXItPm9wZW4oKTsKICAgICAgICAgbV9jb29r
aWVKYXItPnNldEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5cyk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9t
V2l0aGluQ3JlYXRlUGFnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9D
bG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAppbmRleCA1YzBhZTMzMTMyOGIzNmIwYmE3MGEx
OGQ5OTM2Njk0MTJhY2EyOWE5Li5iM2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5ZGRhMTIxMmYxOTMyYTBk
MjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZy
b21XaXRoaW5DcmVhdGVQYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0
aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJl
ZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0g
bnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3Jt
V2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1l
bXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCmluZGV4IGE0ZmJhMTI3
YzZlNGQwM2U2M2Q5YTgxNzJhMzliM2NiOGIxNDcyYzcuLjdiYzM1MjRmMmJkYjlkYmQ3YTQzNWEz
Y2M2YWQzODMyZTk0NGVkZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgV0tQ
YWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxS
ZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0
cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZp
ZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmll
dz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgm
dWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5k
RWRpdGluZy5jcHAKaW5kZXggMGY3ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4MDM4ZDE5MjIxZWRiZjdk
NS4uY2QxOWQ3Y2RlNTg4OTYyNWYxMjIxMmZjNzUzY2ZkNTVlMjc4ZDkyMyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRF
ZGl0aW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0Rmll
bGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBXZWJL
aXQyVGV4dEZpZWxkQmVnaW5BbmRFZGl0RWRpdGluZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRX
SyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJUZXh0RmllbGREaWRC
ZWdpbkFuZEVuZEVkaXRpbmdFdmVudHNUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJW
aWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAg
ICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAg
ZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvVXNlck1lc3NhZ2UuY3BwCmluZGV4IGM3YjAyNTFiZmNmMjFhYTRhYmQxMTRjODU1MDc5
MjQxZDY2MTc0ZTkuLjlkYzNhNmRhOTk1MDljMjcxMTIxZDRjM2E0NTMwODRmZWU5ODliZDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgV2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGls
OjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJVc2VyTWVzc2FnZVRlc3QiKSk7
CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwog
Ci0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29u
dGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmll
dz4oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy0+
cGFnZSgpLCB0aGlzKTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKaW5kZXggZWQ5ZjBmZmM3
MDI1YWIxMmNiNTM5NjdmNzIwNWZmOTZjODliZTY5OS4uNTJmMThkY2ViNDJkNTFhYzA4Mzk1YjYy
MDAxZDRhOTU0MGY3NDUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvV2lsbExvYWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L1dpbGxMb2FkLmNwcApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBXZWJLaXQyV2lsbExvYWRUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnRleHQgPSBhZG9wdFdLKFV0
aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIldpbGxMb2FkVGVzdCIpKTsK
ICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAK
LSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250
ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3
Pihjb250ZXh0LmdldCgpKTsKIAogICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZhbHNlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9G
b3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5t
bQppbmRleCBhZWJhMWMzNDhmYmM2NmExNzBlNTM5ZTBhNzI4NmFlZTkxNTNlNjA0Li4yOTFhNDc4
YTI3ODQyNDJkYWQ0NWEzYThmMTczOTA1ZDdkM2IyZjIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9C
dW5kbGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNl
TGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5
KHNjcmlwdENvbnRleHQsIHJlc3VsdCwgbnVsbHB0cikpOwogCiAgICAgICAgIGF1dG8gYnVmZmVy
U2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShyZXN1bHRTdHJpbmcuZ2V0
KCkpOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZm
ZXJTaXplKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKHJlc3VsdFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAg
ICAgICBXS0J1bmRsZVBhZ2VTZXRVc2VEYXJrQXBwZWFyYW5jZShtX3BhZ2UsIHRydWUpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50
aWNhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1
dGhlbnRpY2F0aW9uLmNwcAppbmRleCBkNmNjMmZiMjQ3ZTU2MjA2Njk3NzYxMGIyNTY3OWI3ZWQx
ZGNjOGJhLi43YzhjOGI1MjE1NGFjNGViMDk4ZTY5NTE3OTA2OWEwNWViZGM2NmFjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0
aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1
dGhlbnRpY2F0aW9uLmNwcApAQCAtMjU2LDYgKzI1Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3QXV0aGVudGljYXRpb25FbXB0eVJlYWxtKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2Nv
bnN0CiB9CiAKIGNsYXNzIFR1bm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgVHVubmVsKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3Nh
Z2UpCiAgICAgICAgIDogbV9zZXJ2ZXIoc2VydmVyKQpAQCAtMjk5LDcgKzMwMCw3IEBAIHN0YXRp
YyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1l
c3NhZ2UsIGNvbnN0IGNoYXIqCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01F
VEhPRF9DT05ORUNUKSB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoc291cF9zZXJ2ZXJfZ2V0
X3BvcnQoc2VydmVyKSwgPT0sIGdQcm94eVNlcnZlclBvcnQpOwotICAgICAgICBhdXRvIHR1bm5l
bCA9IHN0ZDo6bWFrZV91bmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOworICAgICAgICBh
dXRvIHR1bm5lbCA9IG1ha2VVbmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOwogICAgICAg
ICBhdXRvKiB0dW5uZWxQdHIgPSB0dW5uZWwuZ2V0KCk7CiAgICAgICAgIHR1bm5lbFB0ci0+Y29u
bmVjdChbdHVubmVsID0gV1RGTW92ZSh0dW5uZWwpXShjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2Up
IHsKICAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKQEAgLTM5NCw3ICszOTUsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHkoUHJveHlBdXRoZW50aWNh
dGlvblRlc3QqIHRlc3QsIGdjb25zdAogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRp
Y2F0aW9uUHJveHlIVFRQUyhQcm94eUF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIHsKLSAgICBhdXRvIGh0dHBzU2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRU
ZXN0U2VydmVyPihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7CisgICAgYXV0byBodHRw
c1NlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6
U2VydmVySFRUUFMpOwogICAgIGh0dHBzU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOwogCiAg
ICAgdGVzdC0+bG9hZFVSSShodHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Byb3h5L2F1dGgt
dGVzdC5odG1sIikuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNiMDVjZDRiYzAyN2UxMmQx
MTAzZmFmNmEwMDdhYzZmNDBmMy4uYjZiNzI4ZTQ1ZTA5YzUxYTZkNmJhOTliZjcxN2UxOTVlOWEw
ZTBjMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dl
YlByb2Nlc3NUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1dlYlByb2Nlc3NUZXN0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNlbmRpZgogCiBjbGFzcyBXZWJQ
cm9jZXNzVGVzdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChj
b25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSopID0gMDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAK
aW5kZXggMTI1NjI0MTk2YTcxYzZkM2FkNWJjZGQyOWYxNDJiODZhYmI5ZmQxMS4uZTQwMDA3NjMz
ZjIzNjI0MDUyOWRmNTRhZTg2MzIwODdiZDM2OTUyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAgc3RhdGljIGdib29sZWFuIGNsaWNrZWRDYWxsYmFjayhXZWJLaXRET01ET01X
aW5kb3cqLCBXZWJLaXRET01FdmVudCosIFdlYktpdERPTUQKIAogY2xhc3MgV2ViS2l0RE9NRE9N
V2luZG93VGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxX
ZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CiAKIHByaXZhdGU6CiAgICAgZ3VpbnQ2NCB3ZWJQ
YWdlRnJvbUFyZ3MoR1ZhcmlhbnQqIGFyZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggOGQyZWU4YWQxNmNhZDY3OTU2
OGVkOWI2ZDc1Y2VjZDgyMTUwZmVkYi4uMzQ5MGVmMWNlYjZmMTc4MDUwMmYwY2RjOTE5Yzk3MWUy
OTJiZTkwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0
aWxpdGllc0NvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1V
dGlsaXRpZXNDb2NvYS5tbQpAQCAtMzgsNyArMzgsNyBAQCBzdGQ6OnN0cmluZyB0b1NURChOU1N0
cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIAogICAgIHNpemVf
dCBidWZmZXJTaXplID0gW3N0cmluZyBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ107Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIE5TVUludGVnZXIgc3RyaW5nTGVu
Z3RoOwogICAgIFtzdHJpbmcgZ2V0Qnl0ZXM6YnVmZmVyLmdldCgpIG1heExlbmd0aDpidWZmZXJT
aXplIHVzZWRMZW5ndGg6JnN0cmluZ0xlbmd0aCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
ZyBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSByZW1haW5p
bmdSYW5nZTowXTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4
IDU0NmNhNmUyMjJkOWZlYTgxY2U3YmU0ZTJjMmQzOTg1YzViNDRmMGYuLjI0NzU3Mjg5OGI2YTg3
OWM3YTM2YjRmYzY1YjkxNTMzMDQ3MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVdv
cmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCkK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IHN3aXp6bGVy
OwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgc3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENs
YXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdy
aXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JU
RkQpKTsKKyAgICAgICAgc3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+
KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZp
ZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlk
ZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKICAgICB9KTsKIH0K
IApAQCAtMzQ3LDcgKzM0Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1Jl
Y3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9u
Y2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NTIwND4gaXMgZml4ZWQuCi0gICAgX3NoYXJlZENh
bGxvdXRCYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4o
W1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CisgICAgX3NoYXJlZENhbGxv
dXRCYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91
dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CiAgICAgX2lucHV0U2Vzc2lvbkNoYW5nZUNv
dW50ID0gMDsKICAgICBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJp
bmdzVG9JdGVtUHJvdmlkZXJzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaAppbmRleCA2OTBmMGE3NzU2
Y2ZlM2FmYjA3ZDkwYmVlZmYwOTU3OGIyZmM1NWRlLi4yODE0NTI3ZjE5Yjk1NGY4MmFlYjg3YmMw
ZTRjOGRjMGI5YTdmNWI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBjbGFzcyBXZWJLaXRUZXN0U2VydmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIGVudW0gU2VydmVyT3B0aW9u
cyB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KaW5kZXggODYy
NjM1NDQzMzVhN2Y1ZDk3MWI1ZGMwZDI1OWU1NWRjMGQ3M2M2Ni4uNGJkZTZjNTEwMGQyYmQ2ZmU0
YmI5MGZhY2JlMjVkMzM5YTUwNTRiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvVGVzdEZvbnRPcHRpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RG
b250T3B0aW9ucy5tbQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhG
b250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCiAKICAgICBfc2hhZG93T2Zm
c2V0ID0gQ0dTaXplWmVybzsKICAgICBfc2hhZG93Qmx1clJhZGl1cyA9IDA7Ci0gICAgX3JlcGxh
Y2VGb250T3B0aW9uc1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6
bGVyPihOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJl
ZEZvbnRPcHRpb25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNoYXJlZEZvbnRPcHRpb25zRm9y
VGVzdGluZykpOworICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8
Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiks
IEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFy
ZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKICAgICBfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMg
PSBOTzsKICAgICBfaGFzTXVsdGlwbGVGb250cyA9IE5POwogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDE1MzIyMTgyNjk5ZTBlYTMwNzU0YTAyMjZjM2E3
YjYyOTU5NzZkMDAuLjExMzk5YjM5MGZlOTE3MGY2YzUyNTI3NWFjMjM0NTgyZGFmNzUwZjggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC01NCw2ICs1NCw3
IEBAIHN0cnVjdCBXVFJFdmVudFF1ZXVlSXRlbTsKICNlbmRpZgogCiBjbGFzcyBFdmVudFNlbmRl
clByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKik7CiAgICAgfkV2ZW50U2VuZGVy
UHJveHkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Q
cm92aWRlck1vY2suaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRl
ck1vY2suaAppbmRleCA3ZDk0NWQ2N2VjNjc1MGJlNzA2NDM1YTJhNmIzYzc0ZDFhZDE3NDNjLi4x
ZWQ0YWRmOWIzOTM5M2EzMzNhYTMyNTEwOTdiOWUzYWE0MmNjMzZiIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCkBAIC0yNywxMCArMjcs
MTIgQEAKICNkZWZpbmUgR2VvbG9jYXRpb25Qcm92aWRlck1vY2tfaAogCiAjaW5jbHVkZSA8V2Vi
S2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNw
YWNlIFdUUiB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayhX
S0NvbnRleHRSZWYpOwogICAgIH5HZW9sb2NhdGlvblByb3ZpZGVyTW9jaygpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oCmluZGV4IGUxMjA3ZmNlZmJkNjk2MjZkODhhZDhmNmNlZGIwYjUy
NmJiMmRlNTMuLjIyYWM5NDc3Mzk1YjE5ZThkZmM4ZGYxNzk0YWQ0MmVkOGY1NzZkOTAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaWYgVVNFKEFUSykKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHAKaW5kZXggMWY5ZDNlZmM5NjRmYjEzNzdiYzY2M2MwMTYwYzM0YTg4YjIz
MjhhNi4uYzlhNTJjMTVmNzcwODMwNjgzYzhlZmY2ODk0MjliZDBiYzFmNTY0NSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCkBAIC02MTIsNiArNjEyLDcgQEAgdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjptb25pdG9yV2hlZWxFdmVudHMoKQogfQogCiBzdHJ1Y3QgU2Nyb2xs
Q29tcGxldGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIEpTQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAgICAgSlNPYmplY3RSZWYgbV9mdW5j
dGlvbjsKIApAQCAtNjQ3LDcgKzY0OCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsCiAgICAg
CiAgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAK
LSAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tP
YmplY3QpOworICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSA9IG1ha2VVbmlx
dWU8U2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YT4oY29udGV4dCwgZnVuY3Rpb25DYWxsYmFj
a09iamVjdCk7CiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyID0gc2Ny
b2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YS5yZWxlYXNlKCk7CiAgICAgYm9vbCBjYWxsYmFja1dp
bGxCZUNhbGxlZCA9IFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlv
bkNhbGxiYWNrKHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNr
RGF0YVB0cik7CiAgICAgaWYgKCFjYWxsYmFja1dpbGxCZUNhbGxlZCkgewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAppbmRleCA3MTE2Y2M5ODE1NjY5ZDk0OTRkYmY4ZGU0OGJhZWVjZDYzNzRjMzc2Li44M2IyYjMw
YjEzMzJlYzc3YmZlZmNjMjlmZGQxYTJlNDgzY2I1ZjIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5kbGVS
ZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiB2b2lkIEluamVjdGVkQnVu
ZGxlOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewogICAgIGJvb2wgaXNN
YWluUGFnZSA9IG1fcGFnZXMuaXNFbXB0eSgpOwotICAgIG1fcGFnZXMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7CisgICAgbV9wYWdlcy5hcHBlbmQo
bWFrZVVuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+KHBhZ2UpKTsKIAogICAgIHNldFVwSW5qZWN0
ZWRCdW5kbGVDbGllbnRzKHBhZ2UpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA1OWQzZTFi
MGQwMmUyMmM1MmZhNzY1NDMzMjljMjNmNmI2MmEzODlhLi5iMzIzYzI1MDQ0ZjU1MDM2MDc2ZjQ4
ZWRkZDQ3YmNlYWEzZTIwZjE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTM0LDYgKzM0LDcg
QEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2UgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlUGFnZShX
S0J1bmRsZVBhZ2VSZWYpOwogICAgIH5JbmplY3RlZEJ1bmRsZVBhZ2UoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4
IDE4NjBmMTY5ZTUyYWMxMjU5M2ZhZWUwZTQ2ZTJkMDUwNDhkYTE2YmQuLjcyMDZiMDgyNTA2NWEw
MDczMDczY2E4YjUwOGQzYjRmYTIyMzQzNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjM5MSw3ICsyMzkxLDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmIGZpbGVzVmFs
dWUpCiAKICAgICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBmaWxlVmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXpl
ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAg
ICAgICAgYXV0byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZm
ZXJTaXplKTsKKyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0
VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUp
OwogCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGZpbGVVUkxzLmdldCgpLCBhZG9wdFdLKFdL
VVJMQ3JlYXRlV2l0aEJhc2VVUkwobV90ZXN0VVJMLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpKSku
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRl
eCAwZTVjMDdjYTcyOWI2ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMyYzAwMTdjLi4xOGU1N2QyZmNmNjI5
NzY3YTczMjk3OWJjMmVkYzU3YWNmMTA5Y2UyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNzMwLDcgKzczMCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IGNvbnZlcnRUb0pTT2JqZWN0QXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNj
cmlwdENvbnRleHQobWFpbkZyYW1lKTsKIAogICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBjaGls
ZHJlbi5zaXplKCk7Ci0gICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxK
U1ZhbHVlUmVmW10+KGVsZW1lbnRDb3VudCk7CisgICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyBpKyspCiAgICAgICAg
IHZhbHVlRWxlbWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29udGV4dCwgY2hpbGRyZW5baV0tPndy
YXBwZXJDbGFzcygpLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGY3NGNjMmQzOTNkNTMwNWZkMzY2NWJiMGUwYTM1NTE4
NDQ3MzEwOWYuLmNhNGZkYmQ3MjIxNWFmNDhiZGE5NjdkNWJjYWI0ODE1NmJhZGNjNzEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgIWRlZmluZWQoQlVJTERJTkdf
R1RLX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgpAQCAtNjQsNiArNjUsNyBA
QCB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1JbWFnZTsKIG5hbWVzcGFjZSBXVFIg
ewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtV2ViVmlldyhXS1dl
YlZpZXdDb25maWd1cmF0aW9uKiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCmluZGV4IGRhZjE0Y2E3MDU0ODZiZmMyMDY0MzEyM2Rl
NTA5MWI3OWU1ZDAxMzEuLmJiYTE3YzJlZmZiMDk2NjVlZmMyOGVlYjY5ZTcyMzI5YjFkNjliNzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaApAQCAtNzMsNyArNzMs
NyBAQCBpbmxpbmUgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRvSlMoY29uc3QgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+JiBzdHJpbmcpCiBpbmxpbmUgc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJp
bmdSZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhp
bXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBz
dHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgp
LCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJp
bmdMZW5ndGggLSAxKTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIHRv
U1REKGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIFdURjo6
U3RyaW5nIHRvV1RGU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAg
IGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAg
IGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihi
dWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0
cmluZ05vblN0cmljdChzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0
dXJuIFdURjo6U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCks
IHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCA4ZTczM2JlZWQ4MGQ0YTA1ZTM1ZTNjMGVmMzEyYzM5ZWY0ZGQzMzUzLi44
ODFiMzA5YTcyNWNjYTgwZmYzODE4MmYwY2E3OTM5YWZkZjJhMDA0IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllciA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdFRlc3RSdW5uZXJQYWdlR3JvdXAi
KSk7CiAgICAgbV9wYWdlR3JvdXAuYWRvcHQoV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmll
cihwYWdlR3JvdXBJZGVudGlmaWVyLmdldCgpKSk7CiAKLSAgICBtX2V2ZW50U2VuZGVyUHJveHkg
PSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOworICAgIG1fZXZlbnRT
ZW5kZXJQcm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CiB9CiAKIFdL
UmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5l
cmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zOjpDb250ZXh0T3B0aW9u
cyYgb3B0aW9ucykgY29uc3QKQEAgLTUyMSw3ICs1MjEsNyBAQCBXS1JldGFpblB0cjxXS1BhZ2VD
b25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlv
bihjbwogICAgICAgICBtX2NvbnRleHQgPSBwbGF0Zm9ybUFkanVzdENvbnRleHQoYWRvcHRXSyhX
S0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQo
KSkpLmdldCgpLCBjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fY29udGV4
dE9wdGlvbnMgPSBvcHRpb25zLmNvbnRleHRPcHRpb25zOwogCi0gICAgICAgIG1fZ2VvbG9jYXRp
b25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1f
Y29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IG1ha2VVbmlx
dWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGlu
ZygpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9t
VVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwpAQCAtOTUyLDcgKzk1Miw3IEBAIGJvb2wgVGVzdENv
bnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbnMsIFJlCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsc28gZW5z
dXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVzZXQgdGhl
IEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVy
UHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogCiAgICAgLy8gRklY
TUU6IElzIHRoaXMgbmVlZGVkPyBOb3RoaW5nIGluIFRlc3RDb250cm9sbGVyIGNoYW5nZXMgcHJl
ZmVyZW5jZXMgZHVyaW5nIHRlc3RzLCBhbmQgaWYgdGhlcmUgaXMKICAgICAvLyBzb21lIG90aGVy
IGNvZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlc3BvbnNpYmxlIGZvciBj
bGVhbnVwIHRvby4KQEAgLTEyMzUsMTEgKzEyMzUsMTEgQEAgc3RhdGljIFdLVVJMUmVmIGNyZWF0
ZVRlc3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNo
YXJbXT4gYnVmZmVyOwogICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7Cisg
ICAgICAgIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4o
cHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCks
IGZpbGVQcmVmaXgpOwogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3Ro
LCBwYXRoT3JVUkwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAx
IGZvciB0aGUgcGF0aFNlcGFyYXRvcgorICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0aCArIFBBVEhfTUFYICsgbGVuZ3Ro
ICsgMik7IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCiAgICAgICAgIHN0cmNweShidWZmZXIu
Z2V0KCksIGZpbGVQcmVmaXgpOwogICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBw
cmVmaXhMZW5ndGgsIFBBVEhfTUFYKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY0OSw3
ICsxNjQ5LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cnVuVGVzdChjb25zdCBjaGFyKiBpbnB1
dExpbmUpCiAgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21t
YW5kKTsKIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0soY3JlYXRl
VGVzdFVSTChjb21tYW5kLnBhdGhPclVSTC5jX3N0cigpKSk7Ci0gICAgbV9jdXJyZW50SW52b2Nh
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRp
b25zKTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gbWFrZVVuaXF1ZTxUZXN0SW52b2NhdGlv
bj4od2tVUkwuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBp
eGVscyB8fCBtX3Nob3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+c2V0SXNQaXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CkBA
IC0yOTYxLDcgKzI5NjEsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5U
ZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJikKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKKyAgICBt
X21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24s
IG9wdGlvbnMpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDI4YWQxZWQ4OGE2
M2Y3YmQ2YWYxZGQ1OTlhYmYyMDA2MzQ4NmVmZmIuLmEzODZlOWI4MmI0NWZhNTA5MzY2MGI5NTEw
NGFlN2M2ZGZiZmNkMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCkBAIC0xNjg1LDcgKzE2ODUsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVT
Y3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0LCB1bnNpZ25lZCBzY3JpcHRDYWxsYmFjawogICAgIG1f
cGVuZGluZ1VJU2NyaXB0SW52b2NhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX1VJ
U2NyaXB0Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9
IG1ha2VVbmlxdWU8VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAgICAgCiAgICAgbV9VSVNjcmlw
dENvbnRleHQtPnJ1blVJU2NyaXB0KHRvV1RGU3RyaW5nKHNjcmlwdCksIHNjcmlwdENhbGxiYWNr
SUQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDc4ODBk
ZDhkZjU1MmZjOWQ4MmI5NGQxZDJmMmRkZmQ2ZGY4MmVjMmIuLjg1YjFiMDIwNmViODkyMjZlODZj
NmI0MWFiOTNlNWRiOTVlYmZkOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0SW52
b2NhdGlvbiBmaW5hbCA6IHB1YmxpYyBVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGVzdEludm9j
YXRpb24pOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRlc3RJbnZvY2F0aW9uKFdLVVJMUmVmLCBj
b25zdCBUZXN0T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDBmYmY4ZWE1MjNkMzQ4ZDI1NmVjYzUyMzA0
MmRlYTAyZmVjZGQxZGMuLjBlYmY3YmZkMDAzOWY0ZWY4MDkzMmMxZWI1MTkyZmY1NGVlM2M0YTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJD
b2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW0KQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAg
ICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0QXBwbGljYXRpb25NYW5pZmVzdDpbX1dLQXBw
bGljYXRpb25NYW5pZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046dGV4dCBtYW5pZmVz
dFVSTDpuaWwgZG9jdW1lbnRVUkw6bmlsXV07CiAgICAgfQogCi0gICAgbV9tYWluV2ViVmlldyA9
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdl
dCgpLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KGNvcGllZENvbmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwogICAgIGZpbmlzaENy
ZWF0aW5nUGxhdGZvcm1XZWJWaWV3KG1fbWFpbldlYlZpZXcuZ2V0KCksIG9wdGlvbnMpOwogCiAg
ICAgaWYgKG9wdGlvbnMucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSkKQEAgLTIy
Niw3ICsyMjYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBl
KE5TU3RyaW5nICppZGVudGlmaWVyKQogewogICAgIG1fb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRp
ZmllciA9IGlkZW50aWZpZXI7CiAgICAgaWYgKCFtX2NhbGVuZGFyU3dpenpsZXIpCi0gICAgICAg
IG1fY2FsZW5kYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxl
cj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsKKyAgICAgICAgbV9jYWxlbmRhclN3
aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNDYWxlbmRhciBjbGFz
c10sIEBzZWxlY3RvcihjdXJyZW50Q2FsZW5kYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dp
enpsZWRDYWxlbmRhcikpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldENvbnRlbnRF
eHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50
U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5k
ZXJQcm94eUd0ay5jcHAKaW5kZXggZGU1NzhmNzNmYzM2ZWNkMTU4OWM5OWY4ZGJmOGZjY2MzOTg3
YjQyZS4uZWY5ZTM4ZTcyM2JhYTk1ZGZmZTcwZWM1YTg3NWNmZWM4NGUzMjg3NyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAg
LTI3MSw3ICsyNzEsNyBAQCBpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtl
eVJlZiwgdW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2RpZmllcgogICAgICAgICByZXR1cm4g
R0RLX0tFWV9GMTI7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShrZXlSZWYpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBXS1N0cmluZ0dl
dFVURjhDU3RyaW5nKGtleVJlZiwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBjaGFy
IGNoYXJDb2RlID0gYnVmZmVyLmdldCgpWzBdOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IDZhNjFkZjhlMzVkNmZhMDhjOGIxNGM1
MWE4MjNjNjJkMDgwNWQ0ZDIuLmYzYzQxN2M3ZmI3Y2FhNGRlNDc3N2M3YTQ5NGY1M2FmMzJhMThi
ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVy
SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9T
Lm1tCkBAIC0xNTEsOCArMTUxLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKIAogICAgIG1f
cHJlc2VudFBvcG92ZXJTd2l6emxlcnMuY2xlYXIoKTsKICAgICBpZiAoIW9wdGlvbnMuc2hvdWxk
UHJlc2VudFBvcG92ZXJzKSB7Ci0gICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRy
b2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNv
bXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250
cm9sbGVyT3JQb3BvdmVyKSkpOwotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJD
b250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3
OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CisgICAgICAgIG1f
cHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RT
d2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdD
b250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNl
bnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenps
ZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVy
RnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIp
KSk7CiAgICAgfQogICAgIAogICAgIEJPT0wgc2hvdWxkUmVzdG9yZUZpcnN0UmVzcG9uZGVyID0g
Tk87CkBAIC0yNjksOSArMjY5LDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0S2V5Ym9hcmRJ
bnB1dE1vZGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogICAgIGF1dG8g
Y29udHJvbGxlckNsYXNzID0gVUlLZXlib2FyZElucHV0TW9kZUNvbnRyb2xsZXIuY2xhc3M7CiAg
ICAgbV9pbnB1dE1vZGVTd2l6emxlcnMucmVzZXJ2ZUNhcGFjaXR5KDMpOwotICAgIG1faW5wdXRN
b2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0
aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUp
LCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAg
bV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
dGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElu
cHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVu
dElucHV0TW9kZSkpKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3Ms
IEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVBY3RpdmVJbnB1dE1vZGVzKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tl
ZEFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFz
cywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dp
enpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVj
a2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNs
YXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKKyAgICBtX2lucHV0TW9kZVN3
aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
Pihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkpOwogICAgIFtVSUtleWJvYXJk
SW1wbC5zaGFyZWRJbnN0YW5jZSBwcmVwYXJlS2V5Ym9hcmRJbnB1dE1vZGVGcm9tUHJlZmVyZW5j
ZXM6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZl
bnRTZW5kZXJQcm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW0KaW5kZXggZDFjZmM2YTMzMjFlMDI5YzhiYTgxMTVmNGE2ZDkyMDdmOGU3MTg0Zi4u
ODljZTRlZjEyNmMxNWQ5MmRjZjc2NjUwY2U2ZWVmNWI4OTIzMTcyZSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCkBAIC0zMjUsNyArMzI1LDcg
QEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVy
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWUKIAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFtt
X3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0Oltl
dmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAg
YXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1v
dXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1v
dXNlQnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6
bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBz
ZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVu
dEV2ZW50OmV2ZW50XTsKICAgICAgICAgW3RhcmdldFZpZXcgbW91c2VEb3duOmV2ZW50XTsKICAg
ICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTM1Nyw3ICszNTcsNyBAQCB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycwogICAgICAgICB0YXJnZXRWaWV3ID0gbV90ZXN0Q29udHJv
bGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAKICAgICBBU1NFUlQodGFyZ2V0
Vmlldyk7Ci0gICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0
b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2
ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0
b25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNs
YXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElN
UD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKICAgICBbTlNBcHAgX3NldEN1
cnJlbnRFdmVudDpldmVudF07CiAgICAgW3RhcmdldFZpZXcgbW91c2VVcDpldmVudF07CiAgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEV2
ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICAvLyBB
bHdheXMgdGFyZ2V0IGRyYWdzIGF0IHRoZSBXS1dlYlZpZXcgdG8gYWxsb3cgZm9yIGRyYWctc2Ny
b2xsaW5nIG91dHNpZGUgdGhlIHZpZXcuCiAgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gaXNEcmFn
ID8gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgOiBbbV90
ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDp3aW5k
b3dMb2NhdGlvbl07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFBy
ZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RT
d2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykp
OworICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVu
aXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVz
c2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVz
c2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50
XTsKICAgICAgICAgaWYgKGlzRHJhZykKICAgICAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRHJh
Z2dlZDpldmVudF07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVu
dFNlbmRlclByb3h5V1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2Vu
ZGVyUHJveHlXUEUuY3BwCmluZGV4IDQ2OWJmYWYwZThjZjI5MDczMGJhYmZhMDc4MzZkODc3ZWM3
MGU4ZjUuLjY5NmY0NTU3NTg5NmZlODI2NjQ4N2QwOThlOGZlOGVlNjFlNTRkNTYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCkBA
IC0yNzksNyArMjc5LDcgQEAgc3RhdGljIHVpbnQzMl90IHdwZUtleVN5bUZvcktleVJlZihXS1N0
cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1aW50MzIKICAgICAgICAgcmV0dXJu
IFdQRV9LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hh
ciBjaGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2Jh
Y2tlbmRzL1ZpZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuaApp
bmRleCAwMDljZTQ2ODA2ODg1ODMxM2E2ZmUwN2IxYmEyYzBkNTU2ODlkMTBkLi40ZWU5ZDQxZTk0
MzcyNjlkNmUxOThkMTJlOWQyMTc5NzYxZGZmZDA2IDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFj
a2VuZHMvVmlld0JhY2tlbmQuaAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQu
aApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBWaWV3QmFja2VuZCB7CiAgICAgdmlydHVhbCB+Vmll
d0JhY2tlbmQoKTsKIAogICAgIGNsYXNzIElucHV0Q2xpZW50IHsKKyAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5JbnB1dENsaWVu
dCgpID0gZGVmYXVsdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376362</attachid>
            <date>2019-08-14 23:31:39 -0700</date>
            <delta_ts>2019-08-15 00:03:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190814233138.patch</filename>
            <type>text/plain</type>
            <size>1797128</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2U0YzNjMTA2MDY0ODRlNjNkZDVmZDExMGYyZjNkYzRmMGZhN2FlLi4yNTdiNDMzNGE2ZGVmMWY2
MWE2NzBhZDI5YjQ2MjVmZjUyY2NlM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBz
dXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQyOGY1ZjNlODc4YTIyZWY5MmYzZTAyMzM4
YjVmYjRkYzVjYWM0YTkuLjMzNGU4NWU4MjY4MTI0OGViYjY2YjJiZWMwODM3M2RlZWMzNDA4ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAg
ICAgICogYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3Vy
cmVudFZlY3Rvci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAg
ICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHA6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3Rm
L0Z1bmN0aW9uLmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3Rm
L0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAg
ICAgICAqIHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6Cisg
ICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToK
KyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAg
ICAqIHd0Zi9TdHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBl
bmQpOgorICAgICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVm
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6
SXRlcmF0b3IpOgorCiAyMDE5LTA4LTE0ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUgc2hvdWxkIGxvZyBl
cnJvciBzdGF0dXMgKDE3ODM0NykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNWJjOGYwYmQ4MjIxOWZhNzBiYmJl
OTQwN2JlNmUzNjQwNjc2ZDIxLi43NGU0Y2IxODZjMmU4OTgyOGU3NmQ5NDg5YTNhOTIxMzMyMWVl
YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg4MCBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVl
PFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nRGV2ZWxvcGVyV2FybmluZyk6CisgICAgICAgICog
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvckJlYWNvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dD
YWNoZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Q2FjaGVzOjpmcm9tKToKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKToKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RN
OjprZXlTeXN0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RN
OjpjbGllbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpz
ZXRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETVByaXZhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZldGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KToK
KyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
cm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZp
Z2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9sb2Nh
dGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhl
ZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRhYmFz
ZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcik6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246
OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVy
OjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJlY29y
ZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJh
c2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5kZXhL
ZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVPcGVu
Q3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9y
ZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0
U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJh
c2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpi
ZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FM
aXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5C
YWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
OjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVz
dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0
RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2Fj
dGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJz
aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJh
bnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNh
Y3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRlY29k
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdl
cik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFiaWxp
dGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2ZVNl
ZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVk
aWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNlczo6
ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hh
bm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tlbmRG
cm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNy
ZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpj
cmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlTm90
aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1
bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvV29y
a2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5h
dmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Nw
ZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJlUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3lu
Y0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6
ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6
OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFjayk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdU
YXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVk
aW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxT
cGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2Rl
OjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1
ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5v
ZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3ND
b21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9H
YWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBhbm5l
ck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNo
YXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2FnZTo6
Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlk
UGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9t
U2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tl
dDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVy
aWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpE
YXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGlu
Z0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVs
ZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1l
bnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JH
UFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQ
b2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29tcHV0
ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBh
cnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdh
dG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJvbSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVN
ZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5x
dWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVl
dWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vz
c091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldElu
ZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0
aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcyk6
CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1Rv
RXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29k
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJyaWRn
ZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRob2RO
YW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFtZWQg
Y29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICogYnJp
ZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFz
czo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNz
OjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29tYmlu
ZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21i
aW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVDcnlw
dG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMpOgor
ICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxE
ZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjps
b2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNl
dDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAgKiBj
c3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVs
ZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNo
ZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojpj
c3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9ET01D
U1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNTU1Jl
Z2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVT
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50UnVs
ZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNlckFn
ZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpt
YWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1
dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRz
KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAgICAg
ICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVT
ZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6
YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxl
U2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAw
UGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hh
ZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NT
U3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNjYWRl
ZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgorICAg
ICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6CisgICAg
ICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJ
bXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OnBh
cnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1
bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1
cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5
ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRv
RWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpw
YXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2Vs
ZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hhcGVQ
YXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAgICAg
KiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAgICAg
KiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6
aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UpOgor
ICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRTaGFk
b3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhPYmpl
Y3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJD
U1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRv
bVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVu
dFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3Jh
cnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNs
YXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBk
b20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAgKiBk
b20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6
YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRvbS9N
aWNyb3Rhc2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb3Rhc2tRdWV1ZTo6dm0gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKToKKyAgICAg
ICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKToKKyAg
ICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVOb2Rl
V2lsbERldGFjaCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1
cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJNdXRh
dGlvbk9ic2VydmVyKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmFyZURhdGE6OmVuc3VyZU5vZGVMaXN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmFyZURhdGE6OmVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKiBk
b20vUmFkaW9CdXR0b25Hcm91cHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25H
cm91cHM6OmFkZEJ1dHRvbik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0RXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9y
dFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3cpOgorICAgICAg
ICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAgICog
ZG9tL1Nsb3RBc3NpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50
OjphZGRTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVu
dDo6YXNzaWduVG9TbG90KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVT
Y29wZTo6YWRkRWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRF
bGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRkSW1hZ2VNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKToKKyAgICAg
ICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJv
YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Y2xlYXJBbmRDcmVhdGVOb3RpZmllcik6CisgICAg
ICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcik6CisgICAg
ICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQ
YWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQpOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxPbkZpbGVUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0pOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpy
ZWFkSW50ZXJuYWwpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5
L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUGFnZTo6Q2FjaGVkUGFn
ZSk6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZSk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKToKKyAg
ICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVy
KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29u
dHJvbGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bUNvbnRyb2xsZXI6OnRha2VTdGF0ZUZvckZvcm1FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50
OjpyZWxMaXN0IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxD
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1cGRhdGVO
YW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxl
bWVudENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKToKKyAg
ICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJRnJhbWVFbGVtZW50OjpzYW5kYm94KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2l6ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpyZWxMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Zmlu
aXNoSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp1cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbik6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFy
eUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN1bW1hcnlFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
UHVibGljVVJMTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2Vy
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0OjpEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByZWxv
YWRTY2FubmVyOjplbWl0UnVsZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omlu
c2VydEhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVs
ZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjppbnNl
cnRBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpwdXNoQ29tbW9u
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpjcmVhdGVQ
cmVsb2FkUmVxdWVzdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVkSFRUUEJvZHlT
dWZmaXhUcmVlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpw
YXJzZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQ
SUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGlu
ZUFQSUhvc3Q6OmNsZWFyQWxsV3JhcHBlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjppbnNlcnRCZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01FZGl0b3I6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6
OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE91dGVy
SFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXROb2RlVmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdl
c3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01B
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVQYWdl
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFBhcnNlZFN0eWxl
U2hlZXQ6OnNldFNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVT
aGVldDo6ZW5zdXJlU291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpy
ZXNvdXJjZUNyZWF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6
Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1BVUHJv
ZmlsZXJBZ2VudDo6SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6YWRkUnVsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVkTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0
cik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6SW5zcGVjdG9yTmV0d29ya0FnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZy
b21Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0
b3BGcm9tQ29uc29sZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5z
cGVjdG9yV29ya2VyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29s
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6ZGlkRmFpbExv
YWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkhlYXBBZ2VudDo6V2ViSGVhcEFnZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAg
ICAqIGxheW91dC9MYXlvdXRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxh
eW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRp
bmdSb290SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6
Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UnVuLmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25CcmVha2Fi
bGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZFRleHRDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJ
bmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRIYXJkTGlu
ZUJyZWFrKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmg6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5k
VGV4dEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OnNw
bGl0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OkJveCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJveDo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1
aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVC
dWlsZGVyOjpjcmVhdGVUYWJsZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OnByaW50TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVudHMpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6
CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OkRv
Y3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsb2FkQXBw
bGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YWRk
QWxsQXJjaGl2ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjps
b2FkTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpGcmFtZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVk
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRldGFjaENoaWxkcmVu
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTGlu
a0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNl
Q2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmg6CisgICAgICAg
ICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmln
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVQ
YWdlQmxvY2spOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmg6CisgICAg
ICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjaGVja0ZvckhlYWRDaGFyc2V0KToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1h
aW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OnNldEJvZHlEYXRhRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJl
Y3RSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnByZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2U6OmxvYWRSZXF1ZXN0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmRvY3VtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW06CisgICAgICAgICgtW1dl
YlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjpyZXNvdXJjZVJlc3BvbnNlOl0p
OgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJv
cjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92
ZXJsYXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1
cGRhdGVSZWdpb24pOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2Jq
ZWN0VG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWlu
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxl
QXJlYSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVG
b3JQYWdpbmF0aW9uSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjppbml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0
aFR5cGVBbmRMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2Ny
ZWVuc2hvdCk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9y
bWFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
UGVyZm9ybWFuY2U6Om1lYXN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNs
ZWFyTWVhc3VyZXMpOgorICAgICAgICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAg
ICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250
ZXh0OjpvdXRwdXRMaW5rZWREZXN0aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcjo6c3RhcnRUaW1lcik6CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYWdlL1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAg
ICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250
ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xs
ZXI6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFG
aWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVh
dGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9u
Q29udHJvbGxlcik6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNp
dGVkQWZmZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlX
cmFwcGVyOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAg
ICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpzZXRDU1BEaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VP
YnNlcnZlci5oOgorICAgICAgICAqIHBhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaDoKKyAg
ICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFk
ZFNjaGVkdWxlUGFpcik6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5o
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9m
ZnNldHNJbmZvLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxkKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjpjb21taXQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9D
UFVNb25pdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZU1vbml0b3IuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9MZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvMTAwUGVy
Y2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kTWl4ZWRUeXBlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxh
YmxlQXJlYTo6c2Nyb2xsQW5pbWF0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vU3Vk
ZGVuVGVybWluYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQnVzOjpBdWRpb0J1cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6Y29w
eVdpdGhHYWluRnJvbSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpudW1iZXJPZkNoYW5uZWxzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFubmVsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFubmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpsZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdXM6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdXM6OnNldFNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9CdXM6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
OjpBdWRpb0J1cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFu
bmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OkF1ZGlvQ2hhbm5lbCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnNldCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Om11dGFibGVEYXRhKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6ZGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Onplcm8pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9DaGFubmVsOjpjbGVhclNpbGVudEZsYWcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9DaGFubmVsOjppc1NpbGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZJ
Rk86OmZyYW1lc0luRmlmbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZJRk86OnVwZGF0ZUluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb1B1bGxGSUZPLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVscyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvUmVzYW1wbGVyOjpyYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzQWN0aXZlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9CaXF1YWQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9Db25lLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRJ
bm5lckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmlubmVy
QW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0
T3V0ZXJBbmdsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRl
ckFuZ2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNl
dE91dGVyR2Fpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRl
ckdhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFs
RGlzYWJsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OkRlbm9ybWFs
RGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6
fkRlbm9ybWFsRGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxE
aXNhYmxlcjo6Zmx1c2hEZW5vcm1hbEZsb2F0VG9aZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OmdldENTUik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjpzZXRDU1IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rp
c3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bW9kZWwpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldE1vZGVsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjpzZXRSZWZEaXN0YW5jZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6c2V0TWF4RGlzdGFuY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldFJvbGxvZmZG
YWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnJlZkRp
c3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0
OjptYXhEaXN0YW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5j
ZUVmZmVjdDo6cm9sbG9mZkZhY3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vRG93blNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpz
ZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNz
b3I6Om55cXVpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3ND
b21wcmVzc29yOjp0YWlsVGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
eW5hbWljc0NvbXByZXNzb3I6OmxhdGVuY3lUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6bGF0ZW5jeUZyYW1lcyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yS2VybmVsOjptZXRlcmluZ0dhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVENvbnZvbHZlcjo6
ZmZ0U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmNyZWF0ZUludGVycG9sYXRlZEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6bnVtYmVyT2ZBemltdXRocyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlv
bjo6Y3JlYXRlRm9yU3ViamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpj
cmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZFbGV2YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OkhSVEZFbGV2
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVs
TGlzdEwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVs
TGlzdFIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6ZWxldmF0
aW9uQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlv
bjo6bnVtYmVyT2ZBemltdXRocyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpI
UlRGRWxldmF0aW9uOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6
OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxz
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGUGFubmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcik6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5l
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAo
V2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpy
ZWFkVGltZUZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpS
ZXZlcmJDb252b2x2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VM
ZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVy
OjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2
ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5wdXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1VwU2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6
CisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xl
OjpzZXRQb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxp
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6bGlzdCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6Om9wZXJhdG9y
IEF1ZGlvQnVmZmVyTGlzdCYgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
QXVkaW9CdWZmZXJMaXN0OjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
Ojpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9pbnRHcmFwaDo6
ZmluZE9yQ3JlYXRlTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6c2V0U2hhcGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpjb3B5U2hh
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpkZWNvZGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnBy
ZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5RmFpclBsYXlT
dHJlYW1pbmc6OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6YnVmZmVyZWQg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWM6OnBsYXRmb3JtUGlja2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpub3RpZmlj
YXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0
cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2Fk
ZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpz
ZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRU
cmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01l
dGFkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFu
Z2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRo
VG9sZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVw
ZGF0ZUN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJ
dGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpz
ZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qzo6c2V0TWVkaWFTZWxlY3Rvbk9wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0
Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp0aWxlZFNj
cm9sbGluZ0luZGljYXRvckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNvY29hOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGls
ZWRCYWNraW5nTGF5ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQbGF0
Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcDoKKyAgICAgICAgKFdl
YlRpbGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6bV9wcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhpY3NDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9wZXJ0aWVzOjpp
c0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRp
b25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3BlcnRpZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6c2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGVk
U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVD
YWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1Yu
bW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmxvYWRFeHRlcm5hbERvY3Vt
ZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9u
dFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmU6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNy
Y01ha2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2g6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9C
b3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRp
b25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBh
cnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRp
b25Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJv
eC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25C
b3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OklTT1dlYlZUVEN1ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3Bl
cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2Nl
bmVJbnRlZ3JhdGlvbi5jcHA6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpj
cmVhdGVVcGRhdGVTY29wZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpjcmVhdGVDb21tYW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQ
YWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKToKKyAgICAgICAg
KE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OkZvclJlY29yZGlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBv
c2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3Jl
YXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5n
VGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4
dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xD
b21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3
YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNv
bnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvVGlsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3Rh
dGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6OnNldExhc3RQbGFu
YXJTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6c2V0
U2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXI6OkZ1bGxT
Y3JlZW5Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5Db250cm9sbGVy
OjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjptX3ByaXZh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVXaW5kb3dzQml0
bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1
c3RvbVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6
OndyaXRlQ2xpcGJvYXJkQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUdhZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUdhZGdldDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVscGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAg
ICAoR0lGRnJhbWVDb250ZXh0OjpkZWNvZGUpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OmFk
ZEZyYW1lSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVy
OjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rl
cjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpMZWdhY3lUaWxlQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFn
QW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChX
ZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9TY3JvbGxBbmltYXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjptX2NhcHR1cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OkdTdHJlYW1lckF1ZGlvRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmdldFNhbXBsZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmdldEF1ZGlvSW5mbyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmtpbmQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDYXB0dXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJr
aXRfbWVkaWFfc3RyZWFtX3NyY19pbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Om1fY2FwdHVyZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVv
RW5jb2RlckZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNv
ZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFj
a2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rv
cnk6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2Nv
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRl
ckdTdHJlYW1lcjo6Y3JlYXRlRGVjb2RlckZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpj
b252ZXJ0VG9ZVVYpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlQ29jb2E6OnJvdGF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENO
b3RpZmllcnNNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFubmVsTm90
aWZpZXI6OmZpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJM
RGVjb2Rlcjo6Y3JlYXRlRGVjb2RlVGFzayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZhaWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6d2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRTZW5kQm9keURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgt
W1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBfcmVzdGFydF0pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29r
aWVKYXJEQjo6c2VhcmNoQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6
Y3JlYXRlUHJlcGFyZVN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xDdHgpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEZvcm1EYXRhU3Ry
ZWFtOjpnZXRQb3N0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRs
ZTo6Y3JlYXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3Rl
bnRTdG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2Fs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
TGF0aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNSZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVu
dDo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRG
MTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0
Q29kZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAg
ICAgICogcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmg6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
REI6OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NE
YXRhT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6
CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29t
cGxleExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVl
ZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGbG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpu
ZXh0RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdu
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0
ZUJhc2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3Vs
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJh
c2VkVGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZFBsYWNlaG9sZGVyUnVuRm9ySXNvbGF0ZWRJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9M
YXllck92ZXJsYXBNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPdmVybGFwTWFwOjpw
dXNoQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVyTWFwcyk6
CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXA6OmFkZERlc2NlbmRh
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5m
b0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlQmxvY2tS
YXJlRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0TGluZUdyaWRCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjplbnN1cmVMaW5lQm94ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjptYXRlcmlhbGl6ZVJhcmVCbG9ja0Zsb3dE
YXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjplbnN1
cmVDb250aW51YXRpb25DaGFpbk5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VDb3VudGVyTm9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y29udGFpbmluZ0ZyYWdtZW50TWFwKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0
cnlNYXA6OnB1c2hWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVw
ZWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3Jp
ZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
OlJlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y29sbGVjdExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBk
YXRlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVDbGlw
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0
cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFuY2VzdG9yQ2xpcHBp
bmdTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFu
c2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5
Rmx1c2hCZWZvcmVEaXNwbGF5UmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJL
aXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWlu
ZWRMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVt
bkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVE
YXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90
dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVh
dGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2
ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50
UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290
SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJh
bmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVjdEJvdW5kcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2Vu
ZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUlu
dGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBv
bHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVQYXRoOjpibGVuZCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZp
bGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFk
ZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291
bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFu
aW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRp
b25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJh
cmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5s
aW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBl
Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNl
dE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVz
b3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5kZXJlcik6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAg
ICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6Oklu
dmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6
OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVT
aGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6Cisg
ICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVu
Y2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRh
bFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6Y29weSBjb25zdCk6CisgICAgICAgICogc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlM
VGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5o
OgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmg6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0RlY29yYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5Lmg6CisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNl
dHRpbmdzOjpmcm9tKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OmVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0UHJpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjppbml0aWFsaXplTW9ja0NETSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnF1ZXVlTWljcm9UYXNrKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAg
ICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRh
aWxzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNj
b3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckds
b2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExv
YWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVh
ZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVS
ZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjp0
ZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6
c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
UmVnaXN0ZXJKb2IpOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3Rl
clBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6Cisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAq
IHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKToKKyAgICAg
ICAgKiB4bWwvWE1MRXJyb3JzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp1cGxvYWQpOgorICAgICAgICAqIHht
bC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpldmFsdWF0ZVByZWRpY2F0ZSk6CisgICAgICAgICog
eG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxl
U2hlZXQ6OmxvYWRDaGlsZFNoZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVF
cnJvcik6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kU3RhcnRFbGVtZW50
TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRF
bmRFbGVtZW50TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kQ0RBVEFCbG9ja0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENvbW1lbnRDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRJbnRlcm5hbFN1YnNl
dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVy
cm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERv
Y3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkb0Vu
ZCk6CisKIDIwMTktMDgtMTQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV0hMU0xdIFZhcmlhYmxlcyBzaG91bGRuJ3QgYmUgYWJsZSB0byBoYXZl
IHZvaWQgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNjBlN2ZiNTZjOTcwNWUxOWZjODliYzhh
NmJkNGY0MjNlZjE2MjViZS4uYzdhYWE4ZDE0NjNhMWVhMjkzYWIyMzQ1MzdmMmYzMzMyM2E2NmYx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDgtMTQgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29udGV4
dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwOgor
ICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL21hYy9D
bG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6OmNyZWF0ZSk6CisKIDIwMTktMDgtMTQgIEtlaXRo
IFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZv
ciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDM1OGYyYmYwMDVhZTY0NGQ4MTIzMjhk
NWRlZGU0MTljOGJhMDFjZmIuLjNiMTkyOGU5YTMwOTMwNTBhNTE3MGI3MzcwOTI2Zjk2ZTgxNTBi
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1
ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKToK
KyAgICAgICAgKiBnbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKwogMjAxOS0wNi0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjQ1
NTY3KTogW0dUS11bV1BFXSBbMi4yNS4xXSBXZWJLaXRXZWJEcml2ZXIgZ2V0cyBpbnN0YWxsZWQg
YXMgV2ViRHJpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwOWY1YzM2MjUxNDI4Njg5NDczYzk5OGIzOGZkYWFi
YjU0YTYwY2QuLjYyYmY5OTVlYTdiNTM4YjU4ZmZlYjQ3YThjMjQwY2M2NzM4NzhkZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjM4IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVu
c3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2spOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3Vw
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hcDo6YWRkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93
bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRh
YmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtl
RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlUmVkaXJl
Y3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3Jk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdp
c3RlclN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5
UGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5
bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFk
UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2ZUZyb21NZW1v
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToK
KyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpj
cmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQ
cm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENv
b3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrU291cDo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAg
ICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRj
aFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZyk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6dW53cmFwRm9yVGVzdGluZyk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6
aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjpDb25uZWN0aW9uVGVy
bWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAg
ICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vz
c01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0v
TW9kdWxlLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW06
CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhv
c3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVS
TC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6cGFy
c2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9SZW1v
dGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZv
Y2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51SXRl
bUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAg
ICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKToKKyAgICAgICAg
KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24pOgorICAgICAg
ICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xh
YmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51
KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKToKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRleG1hcExheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIpOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0
b3I6OlRocmVhZGVkQ29tcG9zaXRvcik6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9i
amVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rl
ck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0
cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8v
U2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5k
TWF0Y2hlc0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6SFRUUENv
b2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUhpc3RvcnlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFz
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChX
S0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXRI
aXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlv
bk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNl
dFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUgaW5pdFdpdGhQYWdl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoKKyAgICAgICAg
KFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9y
ZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFs
bG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24g
c2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNRTGl0ZVN0YXRlbWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAg
ICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoYXR0
YWNoQ29udGV4dE1lbnVDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNo
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoRG93
bmxvYWRDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAod2Via2l0RmF2aWNvbkRhdGFiYXNlT3Bl
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFj
aEZvcm1DbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25NYW5hZ2Vy
Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdD
bGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoSWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6
CisgICAgICAgIChhdHRhY2hJbmplY3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNw
cDoKKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKToKKyAg
ICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2Fn
ZV9oYW5kbGVyX2luX3dvcmxkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
RHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1v
amlDaG9vc2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0
aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViSW5zcGVjdG9yQ3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VEcmFnQW5kRHJvcEhhbmRsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaWRSZWxh
dW5jaFdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToK
KyAgICAgICAgKC1bV0tWaWV3IG1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5jcHA6CisgICAgICAgIChXS1dQRTo6Vmlldzo6Vmlldyk6CisgICAgICAg
IChXS1dQRTo6Vmlldzo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9x
dC9XUEVRdFZpZXcuY3BwOgorICAgICAgICAoV1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENh
bGxiYWNrKToKKyAgICAgICAgKFdQRVF0Vmlldzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKToK
KyAgICAgICAgKFdQRVF0Vmlldzo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHA6CisgICAgICAgIChXUEVRdFZpZXdCYWNr
ZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxv
YWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpj
cmVhdGVDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNy
ZWF0ZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydERpc3BsYXlMaW5rKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFRleHRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9y
YXRlVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0
Rm9yT3JpZ2luQ2FsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMp
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29u
bmVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VV
cGxvYWRBc3NlcnRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5SZXF1
aXJlc0d0azIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNh
dG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2Rl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2
aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRD
cmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpt
YXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2li
bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9h
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxh
eWluZ0F1ZGlibGVNZWRpYSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21w
b3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25T
dGF0ZVRyYWNraW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tp
bmdWaWV3IGRpZE1vdmVUb1dpbmRvd10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoUHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246d2ViVmlldzpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlv
dXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
YXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhXaW5kb3c6d2ViVmlldzpwYWdlOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgaW5pdFdpdGhQYWdlOnZpZXc6dXNlUGxhdGZvcm1GaW5kVUk6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9y
bVN0YXJ0VGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJW
aWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6Z2FtZXBhZENvbm5lY3Rl
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVNldENsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgor
ICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV0tC
dW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV0tCdW5k
bGVQYWdlU2V0VUlDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VPdmVy
bGF5Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21h
Yy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW06CisgICAgICAgIChXS0J1bmRsZVBhZ2VCYW5uZXJD
cmVhdGVCYW5uZXJXaXRoQ0FMYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0Ojpn
ZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpwdXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdEV4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYkVkaXRvckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwOgorICAgICAgICAod2Via2l0V2Vi
RXh0ZW5zaW9uQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0RnJhbWVHZXRPckNyZWF0
ZSk6CisgICAgICAgICh3ZWJraXRXZWJQYWdlQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW06CisgICAgICAgICgt
W1dLRE9NVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyIF9zZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQZW5kaW5nTWVzc2FnZTo6UGVuZGluZ01lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KToK
KyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50
VGNwU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3Jl
YXRlTmV3Q29ubmVjdGlvblNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZUFzeW5jUmVzb2x2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVj
dG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVUaW1lcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
OjpjcmVhdGVTdWJmcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRpbWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5k
bGVSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5k
Q29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1Zv
bGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNl
c3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdv
cmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6U291cmNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnByb2Nlc3NUYXNrU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUpOgorCiAyMDE5LTA4LTE0
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSBtX2Jsb2NrUmVjdEZvclRleHRTZWxlY3Rpb24gKGFsb25nIHdpdGggcmVsYXRlZCBjb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkN2JmZmNiZDM3YmZlMjI3MTcwOGE2MzJhMzFmOTQ3YmZi
YzNjMTFmLi43ODFiZTQ1M2EyMGMyZmY0MGUwYmE0ZGVkZGU0Yzk5Yzk4NGU5NDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4s
IHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFu
YWdlcik6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJhY2tlcik6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcDoKKyAg
ICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbik6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24p
OgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hh
bmdlTG9nCmluZGV4IGM2M2VmYWJhNWQ4ODY4M2JlZmJmMTY5NThmZjFmZTAwMDRlYTljNmIuLjE5
Njk0YmQxMTExNmE2MGZjMTNiMDMxYzQ4NzZkZWFlYzJjOGQ3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2Yv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJvbnRlbmRTZXR0
aW5ncyk6CisKIDIwMTktMDgtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI0ODQ1NCk6IFdLMSBpbnNwZWN0
b3IgZnJvbnRlbmQgY2xpZW50IGRvZXNuJ3QgcXVldWUgbWVzc2FnZXMgdG8gdGhlIGZyb250ZW5k
IGJlZm9yZSBpdCdzIGxvYWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDg1YmZl
N2ZlN2FhNGMzZjdmY2JiMmQ3MjhkYjVkZWE3YWRhYmE4ZmYuLmJiNTQwYzFlNWFlMmE4N2M2MDcx
NGZiOWJjNTIyNmM5ZWU4MDQ0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMg
ZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW06CisgICAgICAgICgtW1dl
YkZpeGVkUG9zaXRpb25Db250ZW50IHNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6c3RpY2t5
Q29udGFpbmVyTWFwOl0pOgorCiAyMDE5LTA3LTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gZGlkRmluaXNoQ29udGVu
dENoYW5nZU9ic2VydmluZyBzaG91bGQgaW5jbHVkZSB0aGUgdHlwZSBvZiBjb250ZW50IGNoYW5n
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwMmExY2U3YmE2OGViZGQyZTdmYjNh
YmY4NGMzZGI2OGQ3NDg1ZTZlLi45Y2QzNTFjNWJlZDc2YzMyODA5ZmU0Y2JiNjNhNjFkNDJkMDlh
ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTkt
MDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RG
XSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEhpc3Rvcnkv
V2ViSGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgaW5pdF0pOgorICAg
ICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlJ
dGVtIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgorICAgICAgICAoV0tQQ0dldFNj
cmlwdGFibGVOUE9iamVjdFJlcGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuUmVwbHkpOgorICAg
ICAgICAoV0tQQ0Jvb2xlYW5BbmREYXRhUmVwbHkpOgorICAgICAgICAoV0tQQ0luc3RhbnRpYXRl
UGx1Z2luUmVwbHkpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5oOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06
CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Om1ldGhvZE5hbWVkKToKKyAgICAgICAg
KFdlYktpdDo6UHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZCk6CisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1Z2luXSk6CisgICAgICAgICogUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2NoZWR1bGVU
aW1lcldpdGhJbnRlcnZhbDpyZXBlYXQ6dGltZXJGdW5jOl0pOgorICAgICAgICAqIFN0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0
YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNhY2hl
ZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChhZGRSZWRpcmVjdFVSTCk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJh
bWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06
CisgICAgICAgICgtW1dlYkZyYW1lIF9hdHRhY2hTY3JpcHREZWJ1Z2dlcl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbToKKyAgICAgICAgKFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0SXRl
cmF0b3IubW06CisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBpbml0V2l0aFJhbmdlOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfaW5qZWN0
T3V0bG9va1F1aXJrc1NjcmlwdF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9h
ZGRVc2VyU2NyaXB0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6
aW5qZWN0aW9uVGltZTppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRk
VXNlclN0eWxlU2hlZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlz
dDppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0VGV4dEluZGljYXRvcjp3aXRo
TGlmZXRpbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAg
KFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcik6
CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKwogMjAxOS0wOC0xNCAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjQ4NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQ2MDMwYmI2
M2I0NmYyZjkyODUzZjA0OTczNjA5NWYzMzQyMWFhNWEuLjZkODljMDNjNzliYjk1YzVjZTZiMWQ1
ZTM5M2ZlMWE4ZTEyZWQzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NyBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFz
dC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKiBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5NZXNz
YWdlVGhyb3R0bGVyV2luLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OmxvYWQpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3Ojp3bmRQcm9jKToKKyAgICAgICAgKiBXZWJDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNo
ZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoV2ViRWxlbWVu
dFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcpOgorICAgICAgICAqIFdlYkhpc3Rv
cnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQ
b3N0UHJvY2Vzc2luZ0NvbnRleHQpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ0FEM0RSZW5kZXJlci5oOgorICAgICAgICAqIFdlYk5vZGVIaWdobGlnaHQuaDoKKyAgICAg
ICAgKiBXZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlv
bkNlbnRlci5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFu
ZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmlld01J
TUVUeXBlKToKKyAgICAgICAgKFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAg
ICAgKFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3
OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKwogMjAxOS0wOC0xNCAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjQ4NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nIGIvU291cmNl
L2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDNmMGZiMmUxY2VlYWVmMDY1OWMzNGM4MjcxYmVlYzEw
ODIzNzU2ZWQuLjZlMDFkYWJjZjgwMDcwOTkzNzAxYjg2MWQzZGQzODhlMDZkMTY4NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBl
bnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwLmg6CisgICAgICAgICogYm1hbGxv
Yy9Jc29IZWFwSW5saW5lcy5oOgorCiAyMDE5LTA3LTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIEFkZCBJc29IZWFwIHRlc3QgdG8gZW5z
dXJlIHRoYXQgSXNvSGVhcCBwYWdlcyBhcmUgbm90IGFsbG9jYXRpbmcgdG9vIGxhcmdlIFZBCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDA3ZDcw
OWJhMTJjODJjODU0ODJkNzNjNzIzNzdmNTE5ZTdmYzJhNWMuLmQwZTYyNTI4MmE4NGY0ZjM1ZWVk
ZWQxOTVlZGI4ZGM4OTdiMWE1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBKU0NhbGxiYWNrT2JqZWN0
RGF0YSB7CiAgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVydHkoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgewog
ICAgICAgICBpZiAoIW1fcHJpdmF0ZVByb3BlcnRpZXMpCi0gICAgICAgICAgICBtX3ByaXZhdGVQ
cm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ByaXZhdGVQcm9wZXJ0eU1hcD4oKTsKKyAg
ICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEpTUHJpdmF0ZVByb3Bl
cnR5TWFwPigpOwogICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVy
dHkodm0sIG93bmVyLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CmluZGV4IGFlM2E2ZmUzYWNmOWM2YTgwMzk0ZTFkNzM0ZmEzMTdkOTA4ZmFlMmMuLjljYTNiNGJm
NDA4NTA3NTBiOGJjNDE5NDlmNzUwNDJiMzU3MjMxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC01OCw3ICs1
OCw3IEBAIGlubGluZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6YXNDYWxsYmFja09iamVjdChFbmNvCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgog
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgdm9pZCogZGF0YSkK
ICAgICA6IFBhcmVudChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2Jq
ZWN0RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0Ns
YXNzKSkKKyAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09i
amVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KFZNJiB2bSwgSlNDbGFzc1JlZiBqc0NsYXNz
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IFBhcmVudCh2bSwgc3RydWN0dXJlKQotICAg
ICwgbV9jYWxsYmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0
RGF0YT4obnVsbHB0ciwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtl
VW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5kZXggZjFjOWQ1NzAyYThh
YTY5MDQ0ZGZiMjk1YjQ3MWZjZmNiYzg5MGI2Yi4uN2VlYzJhOTBhNDRmODYwYmFhMjI3NmI5NmQ0
NWYyYmQ2ODYxNzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Ns
YXNzUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3Bw
CkBAIC01OSwyMSArNTksMjEgQEAgT3BhcXVlSlNDbGFzczo6T3BhcXVlSlNDbGFzcyhjb25zdCBK
U0NsYXNzRGVmaW5pdGlvbiogZGVmaW5pdGlvbiwgT3BhcXVlSlNDbGFzcyoKICAgICBpbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAKICAgICBpZiAoY29uc3QgSlNTdGF0aWNWYWx1ZSogc3RhdGljVmFs
dWUgPSBkZWZpbml0aW9uLT5zdGF0aWNWYWx1ZXMpIHsKLSAgICAgICAgbV9zdGF0aWNWYWx1ZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAg
ICAgICAgbV9zdGF0aWNWYWx1ZXMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1
ZXNUYWJsZT4oKTsKICAgICAgICAgd2hpbGUgKHN0YXRpY1ZhbHVlLT5uYW1lKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgdmFsdWVOYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdGF0aWNWYWx1ZS0+bmFt
ZSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgICAg
ICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8
U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+
c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAg
ICAgICAgICAgICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCksIG1ha2VVbmlx
dWU8U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3BlcnR5LCBzdGF0aWNWYWx1
ZS0+c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKICAg
ICAgICAgICAgICsrc3RhdGljVmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoY29u
c3QgSlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rpb24gPSBkZWZpbml0aW9uLT5zdGF0aWNG
dW5jdGlvbnMpIHsKLSAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAgICAgbV9zdGF0aWNG
dW5jdGlvbnMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4o
KTsKICAgICAgICAgd2hpbGUgKHN0YXRpY0Z1bmN0aW9uLT5uYW1lKSB7CiAgICAgICAgICAgICBT
dHJpbmcgZnVuY3Rpb25OYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdGF0aWNGdW5jdGlvbi0+bmFt
ZSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAg
ICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0
aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOworICAgICAgICAgICAgICAgIG1fc3Rh
dGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNG
dW5jdGlvbkVudHJ5PihzdGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0
aW9uLT5hdHRyaWJ1dGVzKSk7CiAgICAgICAgICAgICArK3N0YXRpY0Z1bmN0aW9uOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTI4LDIxICsxMjgsMjEgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
OjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpWTSYsIE9wYXF1ZUpTQ2xhc3MqIGpzQ2wK
ICAgICA6IG1fY2xhc3MoanNDbGFzcykKIHsKICAgICBpZiAoanNDbGFzcy0+bV9zdGF0aWNWYWx1
ZXMpIHsKLSAgICAgICAgc3RhdGljVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0Ns
YXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CisgICAgICAgIHN0YXRpY1ZhbHVlcyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICBPcGFxdWVKU0Ns
YXNzU3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGpzQ2xhc3MtPm1fc3Rh
dGljVmFsdWVzLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVz
VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJUKCFpdC0+a2V5LT5pc0F0
b20oKSk7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWVOYW1lID0gaXQtPmtleS0+aXNvbGF0ZWRD
b3B5KCk7Ci0gICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1ZU5hbWUuaW1wbCgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1ZS0+Z2V0UHJvcGVydHks
IGl0LT52YWx1ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1l
KSk7CisgICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1ZU5hbWUuaW1wbCgpLCBtYWtl
VW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1ZS0+Z2V0UHJvcGVydHksIGl0LT52YWx1
ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoanNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMpIHsKLSAg
ICAgICAgc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU+KCk7CisgICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwogICAgICAgICBPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGpzQ2xhc3Mt
Pm1fc3RhdGljRnVuY3Rpb25zLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganNDbGFzcy0+bV9zdGF0aWNG
dW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJU
KCFpdC0+a2V5LT5pc0F0b20oKSk7Ci0gICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChp
dC0+a2V5LT5pc29sYXRlZENvcHkoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVu
dHJ5PihpdC0+dmFsdWUtPmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsK
KyAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgp
LCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rp
b24sIGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTUx
LDcgKzE1MSw3IEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgT3BhcXVlSlNDbGFzczo6Y29u
dGV4dERhdGEoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVK
U0NsYXNzQ29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+b3BhcXVlSlNDbGFzc0RhdGEoKS5hZGQodGhpcywgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghY29udGV4dERhdGEpCi0gICAgICAgIGNvbnRleHREYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwor
ICAgICAgICBjb250ZXh0RGF0YSA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
PihleGVjLT52bSgpLCB0aGlzKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRhOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFBy
aXZhdGUuY3BwCmluZGV4IGQ5ZWU2NzQwMzQ5Y2ZlZmRmYmNjMGQzMTA5NGYxZjRkZTVhNTJjMWUu
LmJhNGE1YTE2Njk3YWY1ZjhhOTcyMmU1NzQ2OWUzOTRkOTc5MDQyYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNDb250ZXh0R3JvdXBBZGRNYXJraW5nQ29uc3Ry
YWludChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNNYXJraW5nQ29uc3RyCiAgICAgLy8gZWxz
ZSBnZXRzIG1hcmtlZC4KICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5ID0gQ29u
c3RyYWludFZvbGF0aWxpdHk6OkdyZXllZEJ5TWFya2luZzsKICAgICAKLSAgICBhdXRvIGNvbnN0
cmFpbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PigKKyAgICBh
dXRvIGNvbnN0cmFpbnQgPSBtYWtlVW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PigKICAg
ICAgICAgdG9DU3RyaW5nKCJBbWMiLCBjb25zdHJhaW50SW5kZXgsICIoIiwgUmF3UG9pbnRlcihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFpbnRDYWxsYmFjaykpLCAiKSIpLAogICAgICAgICB0
b0NTdHJpbmcoIkFQSSBNYXJraW5nIENvbnN0cmFpbnQgIyIsIGNvbnN0cmFpbnRJbmRleCwgIiAo
IiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFpbnRDYWxsYmFjaykpLCAi
LCAiLCBSYXdQb2ludGVyKHVzZXJEYXRhKSwgIikiKSwKICAgICAgICAgW2NvbnN0cmFpbnRDYWxs
YmFjaywgdXNlckRhdGFdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
V3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1t
CmluZGV4IGQ0NjliNzVhMzFmMGVmY2E5ZDA3YWJiMDNiMGJlNjYxNjFiMzk1NjcuLjRiNTk5MDcz
ZmU3NmI0ODY0NDM2OTlhYmRjYjM0YzQxNjRiYzJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC02MDYsNyArNjA2LDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKICAg
ICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKICAg
ICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlP
cHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBjYXBhY2l0eTowXTsK
IAotICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NN
YXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoY29udGV4dCkt
PnZtKCkpOworICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IG1ha2VVbmlxdWU8SlNDOjpXZWFrR0NN
YXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoY29udGV4dCkt
PnZtKCkpOwogCiAgICAgQVNTRVJUKCF0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT53cmFwcGVy
TWFwKCkpOwogICAgIHRvSlNHbG9iYWxPYmplY3QoY29udGV4dCktPnNldFdyYXBwZXJNYXAoc2Vs
Zik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1
bmN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlv
bi5tbQppbmRleCBlZTkzMjgyMWVmNzRiZDY4OTFhZThmMjlmYWQ3YmJhNWFmZWEwY2JjLi43M2Ni
NDI3MDQzODE4MzFlODE5ZDlkOTQzZWI5ZTU0NDAzMDk2ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KQEAgLTE5NSwxOCArMTk1
LDE4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudERvdWJsZTxU
Pj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudERvdWJsZTxU
Pj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQm9vbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50Qm9vbGVhbj4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJvb2xlYW4+KCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQpAQCAtMjE3LDcgKzIx
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SWQ+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJZD4oKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlT2ZDbGFzcyhjb25zdCBjaGFyKiBiZWdpbiwgY29u
c3QgY2hhciogZW5kKQpAQCAtMjI4LDE5ICsyMjgsMTkgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKGNscyA9PSBbSlNWYWx1ZSBjbGFzc10pCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SlNWYWx1
ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRKU1Zh
bHVlPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU1N0cmluZyBjbGFzc10pCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmc+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmc+KCk7
CiAgICAgICAgIGlmIChjbHMgPT0gW05TTnVtYmVyIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051bWJlcj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051bWJlcj4oKTsKICAgICAg
ICAgaWYgKGNscyA9PSBbTlNEYXRlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RhdGU+KCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOwogICAgICAgICBpZiAoY2xzID09
IFtOU0FycmF5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrQXJndW1lbnROU0FycmF5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGljdGlv
bmFyeSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFj
a0FyZ3VtZW50TlNEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKQEAg
LTI1Miw3ICsyNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5
KGJlZ2luLCBlbmQpOwogICAgICAgICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdmFs
dWVUb1R5cGVJbnZvY2F0aW9uRm9yKGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3RydWN0PihpbnZvY2F0
aW9uLCBjb3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTMzNSw0
NSArMzM1LDQ1IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRp
YyBSZXN1bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZURvdWJsZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8
VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxU
Pj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQm9vbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdEJvb2xlYW4+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0Qm9vbGVhbj4oKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4oKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlT2ZD
bGFzcyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBl
IHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVTdHJ1Y3QoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkKICAg
ICB7CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChO
U0ludm9jYXRpb24gKmludm9jYXRpb24gPSB0eXBlVG9WYWx1ZUludm9jYXRpb25Gb3IoY29weSkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFN0cnVj
dD4oaW52b2NhdGlvbiwgY29weSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxs
YmFja1Jlc3VsdFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIH07CkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIEpTT2JqZWN0UmVmIG9i
akNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbihKU0NvbnRleHQgKmNvbnRleHQsIE5TSW52
b2MKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSk7CiAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgYXV0byBpbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFz
cywgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOworICAgIGF1dG8gaW1wbCA9
IG1ha2VVbmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5
cGUsIGluc3RhbmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsK
ICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBpbXBsLT5uYW1lKCk7CiAgICAgcmV0dXJuIHRvUmVm
KEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBuYW1lLCBXVEZNb3ZlKGltcGwpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKaW5kZXggZTAxZTk3MGM3ZjU4MDM2NTYxOGVm
MWRhYjg1NTQ0ZDcwNGY5YjQ3YS4uNzhkNzY1NWZmODA3NzYwZDQ2MDhhNjE3ZTU3YzkwZjE1NDI3
OTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIGpzY0NvbnRleHRTZXRWaXJ0dWFsTWFj
aGluZShKU0NDb250ZXh0KiBjb250ZXh0LCBHUmVmUHRyPEpTQ1ZpcnR1YWxNCiAgICAgICAgICAg
ICBwcml2LT5qc0NvbnRleHQgPSBKU1JldGFpblB0cjxKU0dsb2JhbENvbnRleHRSZWY+KEFkb3B0
LCBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGpzY1ZpcnR1YWxNYWNoaW5lR2V0Q29udGV4
dEdyb3VwKHByaXYtPnZtLmdldCgpKSwgbnVsbHB0cikpOwogICAgICAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSB0b0pTR2xvYmFsT2JqZWN0KHByaXYtPmpzQ29udGV4dC5nZXQoKSk7CiAgICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0LT53cmFwcGVyTWFwKCkpCi0gICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldFdyYXBwZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxKU0M6OldyYXBwZXJNYXA+KHByaXYt
PmpzQ29udGV4dC5nZXQoKSkpOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRXcmFwcGVy
TWFwKG1ha2VVbmlxdWU8SlNDOjpXcmFwcGVyTWFwPihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsK
ICAgICAgICAganNjVmlydHVhbE1hY2hpbmVBZGRDb250ZXh0KHByaXYtPnZtLmdldCgpLCBjb250
ZXh0KTsKICAgICB9IGVsc2UgaWYgKHByaXYtPnZtKSB7CiAgICAgICAgIEFTU0VSVChwcml2LT5q
c0NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q1dyYXBwZXJNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBw
ZXJNYXAuY3BwCmluZGV4IDExYmI3YzBiODczN2RiNjdkZDE3ZGNkMjRmNzAyOTQzNDQ2OWE4MDMu
LmY1MjNlYTQxOTlmOGFiZDczMmY3N2I2MjgxNDEyMDEzNGJiOGJlYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKEpTR2xvYmFs
Q29udGV4dFJlZiBqc0NvbnRleHQpCi0gICAgOiBtX2NhY2hlZEpTV3JhcHBlcnMoc3RkOjptYWtl
X3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09iamVjdD4+KHRvSlMoanND
b250ZXh0KS0+dm0oKSkpCisgICAgOiBtX2NhY2hlZEpTV3JhcHBlcnMobWFrZVVuaXF1ZTxKU0M6
OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09iamVjdD4+KHRvSlMoanNDb250ZXh0KS0+dm0o
KSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3Rh
Y2suY3BwCmluZGV4IGE3NWY1OGRjMTQ2YjNiNjQ5NWNlYjE2N2FkZjRkYWJmZjA2YjBjODkuLmRh
NDc3MDUxZjM0NWUwNzE2OGZjN2QwNmUwYzdmNTI2MzExODZlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBA
IFBhZ2UqIFN0YWNrOjplbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpCiAgICAgaWYgKExJS0VM
WShpdCAhPSBtX3BhZ2VzLmVuZCgpKSkKICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gaXQt
PnZhbHVlLmdldCgpOwogICAgIGVsc2UgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4g
cGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oYmFzZUFkZHJlc3MpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZT4gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oYmFzZUFkZHJlc3MpOwog
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZXMuYWRkKGJhc2VBZGRyZXNzLCBXVEZNb3ZlKHBh
Z2UpKTsKICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CmluZGV4IDJjOWMzYjBkZTg5ZWIzZTM4M2Y0Y2JkY2YyMTJkMjY4YzFjMTlkYmEuLjdmNjg1ODZj
MWMwMjg5YzBhMzI1MjJmZGU5ZTA2N2RmMWY0MWUyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBjbGFzcyBMb3dlclRv
QWlyIHsKICAgICB2b2lkIHByaW50KFZhbHVlKiBvcmlnaW4sIEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gcHJpbnRMaXN0ID0gUHJpbnRlcjo6bWFrZVByaW50
UmVjb3JkTGlzdChhcmd1bWVudHMuLi4pOwotICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0
YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtl
X3VuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOworICAgICAgICBhdXRvIHBy
aW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwobWFrZVVuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOwogICAgICAg
ICBJbnN0IGluc3QoQWlyOjpQYXRjaCwgb3JpZ2luLCBBcmc6OnNwZWNpYWwocHJpbnRTcGVjaWFs
KSk7CiAgICAgICAgIFByaW50ZXI6OmFwcGVuZEFpckFyZ3MoaW5zdCwgc3RkOjpmb3J3YXJkPEFy
Z3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAgICAgICAgIGFwcGVuZChXVEZNb3ZlKGluc3QpKTsK
QEAgLTEzMDgsNyArMTMwOCw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgIHsKICAgICAgICAg
aWYgKCFmaWVsZCkgewogICAgICAgICAgICAgZmllbGQgPSBzdGF0aWNfY2FzdDxUKj4oCi0gICAg
ICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOworICAgICAgICAgICAgICAgIG1fY29k
ZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLikpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggZmZjYjJkNGUyNzE0NDI5
NzBlNTQ2NDM2NjcwZjdmMjlkZWIxYWIxYy4uMmVjY2RhYzA0OWU2OGQxMTNlMjNmOTdmMjQzNTNh
NWQ0YWFhM2I5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogUHJvY2VkdXJl
OjpQcm9jZWR1cmUoKQogICAgIDogbV9jZmcobmV3IENGRygqdGhpcykpCiAgICAgLCBtX2xhc3RQ
aGFzZU5hbWUoImluaXRpYWwiKQotICAgICwgbV9ieXByb2R1Y3RzKHN0ZDo6bWFrZV91bmlxdWU8
T3BhcXVlQnlwcm9kdWN0cz4oKSkKKyAgICAsIG1fYnlwcm9kdWN0cyhtYWtlVW5pcXVlPE9wYXF1
ZUJ5cHJvZHVjdHM+KCkpCiAgICAgLCBtX2NvZGUobmV3IEFpcjo6Q29kZSgqdGhpcykpCiB7CiAg
ICAgbV9jb2RlLT5zZXROdW1FbnRyeXBvaW50cyhtX251bUVudHJ5cG9pbnRzKTsKQEAgLTMxMSwy
OCArMzExLDI4IEBAIHZvaWQgUHJvY2VkdXJlOjpkZWxldGVPcnBoYW5zKCkKIERvbWluYXRvcnMm
IFByb2NlZHVyZTo6ZG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFtX2RvbWluYXRvcnMpCi0gICAg
ICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwor
ICAgICAgICBtX2RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPERvbWluYXRvcnM+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fZG9taW5hdG9yczsKIH0KIAogTmF0dXJhbExvb3BzJiBQcm9jZWR1cmU6Om5h
dHVyYWxMb29wcygpCiB7CiAgICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAg
ICBtX25hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX25hdHVyYWxMb29wczsKIH0KIAogQmFja3dhcmRzQ0ZHJiBQcm9jZWR1cmU6OmJh
Y2t3YXJkc0NGRygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9iYWNr
d2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAgICAg
ICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIAogQmFja3dhcmRzRG9taW5hdG9ycyYgUHJvY2Vk
dXJlOjpiYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKICAgICBpZiAoIW1fYmFja3dhcmRzRG9taW5h
dG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxC
YWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9y
cyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAq
bV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCogUHJv
Y2VkdXJlOjphZGREYXRhU2VjdGlvbihzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4g
ZGF0YVNlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0gbWFrZVVuaXF1ZTxEYXRh
U2VjdGlvbj4oc2l6ZSk7CiAgICAgdm9pZCogcmVzdWx0ID0gZGF0YVNlY3Rpb24tPmRhdGEoKTsK
ICAgICBtX2J5cHJvZHVjdHMtPmFkZChXVEZNb3ZlKGRhdGFTZWN0aW9uKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IDMz
ZjhhYmZlZmJjMWY4ZjkxNjU0NWEzYmRjYTE5NmIwY2M2NmMzOTguLmQ1ZDY5YzMwYTU5OTE3NWYy
ODE0ODM2Mjg2MzZmY2I3NzA2ODAxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIENDYWxsU3BlY2lhbCogQ29kZTo6Y0NhbGxT
cGVjaWFsKCkKIHsKICAgICBpZiAoIW1fY0NhbGxTcGVjaWFsKSB7CiAgICAgICAgIG1fY0NhbGxT
cGVjaWFsID0gc3RhdGljX2Nhc3Q8Q0NhbGxTcGVjaWFsKj4oCi0gICAgICAgICAgICBhZGRTcGVj
aWFsKHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7CisgICAgICAgICAgICBhZGRT
cGVjaWFsKG1ha2VVbmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IG1fY0NhbGxTcGVjaWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcAppbmRleCBmMzZiOWIyZmU2NjgxNjBiODg5OWIwYzUwYjMxOTdkNzU4ODI0ZjgwLi45
NWNhYTAwNGQ4ZWIzOTIzMzBlMWNjYmI2MzlhNWNlZTc5Y2JjNzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAgICAgICAgIGRhdGFMb2co
Y29kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJl
Z2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4o
Y29kZSk7CisgICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gbWFr
ZVVuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2RlKTsKICAgICAgICAgY29k
ZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMtPnByZXBhcmVGb3JHZW5lcmF0aW9uKCk7
CiAKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci90ZXN0YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5j
cHAKaW5kZXggZWYxNTQ0YzA3YmIzMmE5MDM3ZjJjYjcxZTE1ZTc0YTliZTYxYmY5NC4uM2RjYTI5
Njc4OGIwMDEwNjhlMDFmNDIzZTExNmM3YzJhNGU3ZGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxC
Mzo6Q29tcGlsYXRpb24+IGNvbXBpbGUoQjM6OlByb2NlZHVyZSYgcHJvYykKICAgICBnZW5lcmF0
ZShwcm9jLmNvZGUoKSwgaml0KTsKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxs
cHRyKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVf
Q09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAidGVzdGFpciBjb21waWxhdGlv
biIpLCBwcm9jLnJlbGVhc2VCeXByb2R1Y3RzKCkpOwogfQogCkBAIC0xODU1LDcgKzE4NTUsNyBA
QCB2b2lkIHRlc3RJbnZhbGlkYXRlQ2FjaGVkVGVtcFJlZ2lzdGVycygpCiAgICAgcm9vdC0+YXBw
ZW5kKE1vdmUsIG51bGxwdHIsIEFyZzo6YmlnSW1tKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnRo
aW5ncykpLCBiYXNlKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBwYXRjaFBvaW50MVJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwg
PSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRT
cGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIC8vIElu
IFBhdGNocG9pbnQsIExvYWQgdGhpbmdzWzBdIC0+IHRtcC4gVGhpcyB3aWxsIG1hdGVyaWFsaXpl
IHRoZSBhZGRyZXNzIGluIHgxNyAoZGF0YU1lbW9yeVJlZ2lzdGVyKS4KICAgICBCMzo6UGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50MSA9IHBhdGNoUG9pbnQxUm9vdC0+YXBwZW5kTmV3PEIzOjpQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTkzMCw3
ICsxOTMwLDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQoKQogICAgIEdQUlJlZyBwaW5u
ZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQp
OwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNw
ZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIz
OjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VV
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBi
M1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpW
b2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgdm9pZCB0ZXN0QXJndW1l
bnRSZWdQaW5uZWQyKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
OwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwq
IHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6
OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50
U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwog
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxC
Mzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTIw
MDAsNyArMjAwMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkMygpCiAgICAgR1BSUmVn
IHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBp
bm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUu
YWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7Cisg
ICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwo
bWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxv
Y2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywg
QjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXgg
MTU1Y2E0YWI0NzBiMDE0NDJhZDk1NDNhOGFlMWZjMWZjNTlmN2UzYS4uMWM3YWQwZjk0ZTA2Yjhj
MzFiZmU3Y2M5NGQwNTUyYzQ3Nzk2MDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApA
QCAtMTg5LDcgKzE4OSw3IEBAIGV4dGVybiBMb2NrIGNyYXNoTG9jazsKIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNvbXBpbGVQcm9jKFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1
bnNpZ25lZCBvcHRMZXZlbCA9IE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkpCiB7CiAgICAg
cHJvY2VkdXJlLnNldE9wdExldmVsKG9wdExldmVsKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJlKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzEwODU5YWNlZDNkYjc4YjY2
NDk3NmEwOGI4ZTViNDhkNjUyYjJmMy4uNzdmYjY1ZGEwYjdhMDZjN2Q2NThiYWJkYjRlNTEwOGE3
OTE3ZWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBzdGF0ZS5zZXRTcGlsbFN0
YXRlRm9ySlNHZXR0ZXJTZXR0ZXIoc3BpbGxTdGF0ZSk7CiAKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFhY2Nlc3MuY2FsbExpbmtJbmZvKCkpOwotICAgICAgICAgICAgYWNjZXNzLm1fY2Fs
bExpbmtJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua0luZm8+KCk7CisgICAgICAgICAg
ICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBtYWtlVW5pcXVlPENhbGxMaW5rSW5mbz4oKTsKIAog
ICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGdlbmVyYXRlZCBhIHBvbHltb3JwaGljIGNhbGwg
c3R1YiB0aGF0IGp1bXBlZCBiYWNrIHRvIHRoZSBnZXR0ZXIKICAgICAgICAgICAgIC8vIHN0dWIs
IHdoaWNoIHRoZW4ganVtcGVkIGJhY2sgdG8gdGhlIG1haW4gY29kZSwgdGhlbiB3ZSdkIGhhdmUg
YSByZWFjaGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCmluZGV4IDJiZDlmZTY1MTk5ZDA3ZjE3
M2UzODMwZGM3NGU0NjdlYjlkNTQxZmMuLjkyNTdmYzIyNjY1MjlmODYxMzdkNWRhZDhjOTI0OTcx
ODM5MDQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlU25pcHBldFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNz
IFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMgOiBwdWJsaWMgQWNjZXNzQ2FzZVNu
aXBwZXRQYXJhbXM6OlNsb3dQCiAgICAgdm9pZCBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6YWRk
U2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVy
cyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIHN0ZDo6
dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKICAgICB7IFwKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCB0byA9IGppdC5sYWJlbCgpOyBcCi0gICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzPENDYWxs
SGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIF9fVkFfQVJHU19f
Pj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKKyAgICAgICAgbV9nZW5l
cmF0b3JzLmFwcGVuZChtYWtlVW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVu
dHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgX19W
QV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAogICAgIH0g
XAogCiBTTklQUEVUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKaW5kZXggMzNiYjBjMDY2MzUzODFlODk4ZjY1YTg3NGYxZjM2YThjOTQ4MjNhZi4u
MTBjNjViYjlkZDcwOWE5YWY3YWJhNmNlYjhhOWI3MzU5NzcxNjQxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAg
LTY1LDE1ICs2NSwxNSBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgLy8gQ3JlYXRlIHRo
ZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNh
cGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwogCi0gICAgYXV0byBlbnRyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5
QmxvY2spOwotICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZW50
cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpF
bnRyeUJsb2NrKTsKKyAgICBhdXRvIGZpcnN0QmxvY2sgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFz
aWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKICAgICBsaW5rQmxvY2tz
KGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAogICAgIGFwcGVuZEJsb2NrKFdURk1v
dmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJsb2Nr
LmdldCgpOwogICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCi0gICAgYXV0
byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFz
aWNCbG9jazo6RXhpdEJsb2NrKTsKKyAgICBhdXRvIGV4aXQgPSBtYWtlVW5pcXVlPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBu
ZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKICAg
ICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBqdW1wIHRhcmdldCwgdGhlbiBp
dCdzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBiYXNpYyBibG9jay4KICAgICAgICAgaWYgKGlzSnVt
cFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5z
dHJ1Y3Rpb25Jc0xlYWRlcikgewotICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0cnVjdGlvbik7CisgICAgICAgICAgICBh
dXRvIG5ld0Jsb2NrID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGluc3RydWN0aW9u
KTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKICAgICAgICAgICAgIGFw
cGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCmluZGV4IGQ4ZGFjMTU4NWZhYjJiOTk4YzFlNWQ4ODc1MmJhMTJkZjZkYWRiZGUuLjM5M2Yx
ODI0ZTQxYTRiZWI1MTRjNjJhNjk2ZjMzYTgzNzI0OTVjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAg
dm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiAKIHZvaWQgQ2FsbExpbmtJbmZv
OjpzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRhJiBzaHVmZmxl
RGF0YSkKIHsKLSAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxG
cmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0YSk7CisgICAgbV9mcmFtZVNodWZmbGVEYXRhID0g
bWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggZWYxY2FiZmE3MThiMDgwZDdmM2U4NjM3ZjlmOTRmNjA1ODZlZTRlOC4uMzlh
MjNiNGM3ZjQ3ZDhmY2U1ZTMwZWVjYTU1MGU3N2RhZDMxNTg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKIENvZGVCbG9jazo6SklU
RGF0YSYgQ29kZUJsb2NrOjplbnN1cmVKSVREYXRhU2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImKQogewogICAgIEFTU0VSVCghbV9qaXREYXRhKTsKLSAgICBtX2ppdERhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVERhdGE+KCk7CisgICAgbV9qaXREYXRhID0gbWFrZVVuaXF1ZTxKSVREYXRh
PigpOwogICAgIHJldHVybiAqbV9qaXREYXRhOwogfQogCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCB1
bnNpZ25lZCBDb2RlQmxvY2s6OnJhcmVDYXNlUHJvZmlsZUNvdW50Rm9yQnl0ZWNvZGVPZmZzZXQo
Y29uc3QgQ29uY3VycmVudEpTTG9jawogdm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdp
c3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycykKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1fY2Fs
bGVlU2F2ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
KGNhbGxlZVNhdmVSZWdpc3RlcnMpOworICAgIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX2NhbGxl
ZVNhdmVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihjYWxsZWVT
YXZlUmVnaXN0ZXJzKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3Rl
cnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3RlckF0T2Zmc2V0
TGlzdCkKQEAgLTE3OTAsNyArMTc5MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjplbnN1cmVDYXRjaExp
dmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0U2xvdyhjb25zdCBPcENhdGNoCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKICAgICAgICAgbGl2ZU9w
ZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CiAKLSAgICBhdXRv
IHByb2ZpbGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
PihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICBhdXRvIHByb2ZpbGVzID0gbWFrZVVuaXF1ZTxW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKICAgICBS
RUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCiAgICAg
ICAgIHByb2ZpbGVzLT5tX2J1ZmZlci5nZXQoKVtpXS5tX29wZXJhbmQgPSBsaXZlT3BlcmFuZHNb
aV0ub2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggODcwNjhiYTY1ZGQ4NWMyM2ZiZTRhNDkwZTk3NGE3MjgxZjI1NjA0Yy4uMzE0MzhlMGFj
NTA2OWIyNzQ5Njk4ODg2YWIxMTIwMDc2YmNiNzNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTQzLDcgKzk0Myw3IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gcmFy
ZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICAgICAgYXV0byBy
YXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOyAvLyBtX2NhdGNoUHJvZmlsZXMgY2FuIGJlIHRvdWNoZWQgZnJvbSBjb21w
aWxlciB0aHJlYWRzLgogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdURk1vdmUocmFyZURhdGEp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmNwcAppbmRleCAyZDk0MzFjZjBiMTQ0ZmEzYTJjMjIxYTY2ZTk0MDcwYzc3NTBl
MGUwLi5iMWEwMWZmYTRkOTM0OGZlY2IyNGM5Njg4YmM4MDA1MmY5Mzg4NmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgYm9vbCBFeGl0UHJvZmlsZTo6YWRkKENvZGVCbG9jayogb3duZXIsIGNvbnN0
IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgc2VlbiBhbnkg
ZnJlcXVlbnQgZXhpdHMgdGhlbiBjcmVhdGUgdGhlIGxpc3QgYW5kIHB1dCB0aGlzIHNpdGUKICAg
ICAvLyBpbnRvIGl0LgogICAgIGlmICghcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzKSB7Ci0g
ICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPEZyZXF1ZW50RXhpdFNpdGU+PigpOworICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0
U2l0ZXMgPSBtYWtlVW5pcXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKICAgICAgICAg
cHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzLT5hcHBlbmQoc2l0ZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKaW5kZXggNGY0OGExZDZj
OTg3MjJlNWFjMmVjZTg3ZTUwNDAyMzJmOWE1ZDZiMS4uNGZiMTE1NzMwMDNiNTJlZmQ5YTg2NmZi
M2JkZjc3NTA5OGNlZmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgdm9pZCBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlk
Q29tcGxldGUoQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiwKIFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1
bXA+JiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmVuc3VyZURlZmVycmVkU291cmNlRHVt
cCgpCiB7CiAgICAgaWYgKCFtX2RlZmVycmVkU291cmNlRHVtcCkKLSAgICAgICAgbV9kZWZlcnJl
ZFNvdXJjZUR1bXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+
PigpOworICAgICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IG1ha2VVbmlxdWU8VmVjdG9yPERl
ZmVycmVkU291cmNlRHVtcD4+KCk7CiAgICAgcmV0dXJuICptX2RlZmVycmVkU291cmNlRHVtcDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCmluZGV4IGRiOWFkMTYwYWMyODEzMGYzOTg0MWZmM2JmZWIzMmI2ODNkZGVhZDYuLmRmNGQ3
N2NlM2Y2M2I1MjAwNzU1NDRjNDFhMTZjYjIzMWQ3ZGZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKQEAgLTI0Myw3ICsyNDMsNyBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRF
eGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpHZXR0ZXI6IHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5r
U3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9IG1ha2VVbmlx
dWU8Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLmNh
bGxMaW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtTdGF0dXMg
PSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5j
cHAKaW5kZXggZmMxZjQ2MGRlOTY1NDFkOGZhMDk5Y2JiNDVmMjMwOWMyYTMzMzgwZi4uZWQ4ZDQ5
M2Y3ZWU2ZjFkYTJiOTA5YWQ1N2M2Mjc3MTgxM2MyZDZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBA
IEdldEJ5SWRWYXJpYW50JiBHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBvdGhlcikKICAgICBtX2N1c3RvbUFjY2Vzc29yR2V0dGVyID0gb3RoZXIubV9jdXN0
b21BY2Nlc3NvckdldHRlcjsKICAgICBtX2RvbUF0dHJpYnV0ZSA9IG90aGVyLm1fZG9tQXR0cmli
dXRlOwogICAgIGlmIChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5r
U3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExp
bmtTdGF0dXMpOworICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9j
YWxsTGlua1N0YXR1cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5jcHAKaW5kZXggMDkyOWQ2ZmI0MTI2NzRlZDdmMjA0MDQ1ZmI0MjVlYjdkMzhkM2M5My4uNmVl
YjE0NWIzMzc5NjYyYWYxYzE1MDAxOTA3NjcyN2EzOWVlMmJkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBDb21wcmVzc2Vk
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCgKICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KQogewogICAg
IGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExhenlPcGVy
YW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOworICAgICAgICBtX2RhdGEgPSBtYWtlVW5pcXVlPExh
enlPcGVyYW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOwogICAgIGVsc2UgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRhLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
aWYgKG1fZGF0YS0+YXQoaSkua2V5KCkgPT0ga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAppbmRleCBiNDllNGUyNDJl
NTJmMDgxMzE1ZTQ4ZmIxZTFiY2MyOTdlNTI4YWUwLi5hMWVjYjk0ZGQwZDE4NjcwODYzNTJmNTJi
NWI1OGMzMTkzZWVjZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBQb2x5
UHJvdG9BY2Nlc3NDaGFpbiB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IGNsb25lKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBv
bHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBv
bHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPFN0
cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4
IDIyZjQ1NTgxNGI4NGFmNGZlNzRjYWYyMzQwMWQzMGFkYWRhZTVjNmUuLjNiMzAyMzM5ZjAzNTBk
YWM0MjhmM2YwNGNjNzM1MmEzYWU1MjFiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNjE2LDcgKzYxNiw3IEBA
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiAg
ICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxv
Y2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFu
ZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CiAgICAgbV93YXRjaHBv
aW50cyA9IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwogICAgIGlmICghc3RhdGUud2Vha1Jl
ZmVyZW5jZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtS
ZWZlcmVuY2VzKSk7CisgICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsK
ICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKaW5kZXggYzJkOTUz
MjBjZWJkNTZkYmRjOTNlZWJkNmMzMTQwYTdkZjdjYzIwOS4uZDY0MmJjY2ZlNzk3NjZjNTI3OWJi
YzgxMDg3MDFlYjdmODU4MjRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OklubGluZWFibGU6IHsKICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiBjYWxsTGlu
a1N0YXR1cyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPENhbGxM
aW5rU3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICAgICAgbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gYWNjZXNzLmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZv
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwg
cHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAppbmRleCA1
ZDZiMjkwNDVjYTY3NWM1NmZhNzFkNTQ3NWExMTViMmRmNmYzYzVlLi43MmM2Y2FjODRmYjI3YmNm
NWU0MTdjNDk2ZTYzNjJmNzJlNmMwYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUHV0QnlJZFZh
cmlhbnQmIFB1dEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgUHV0QnlJZFZhcmlhbnQmIG90
aGVyKQogICAgIG1fY29uZGl0aW9uU2V0ID0gb3RoZXIubV9jb25kaXRpb25TZXQ7CiAgICAgbV9v
ZmZzZXQgPSBvdGhlci5tX29mZnNldDsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykK
LSAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0
dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9
IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAq
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmNwcAppbmRleCA5NmQyMmVjZmEwYTRjNzU2ZWRmZjYxZjAwMTNmNzI1OGU3ZDNmYmQ1
Li41M2YyMDhiY2FkZWQzZGVhMmRlZTE4YTBlODk2MDVjNDkwYTE5NWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFJlY29yZGVkU3RhdHVzZXM6OlJlY29yZGVkU3RhdHVzZXMoUmVjb3JkZWRT
dGF0dXNlcyYmIG90aGVyKQogCiBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRk
Q2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgQ2FsbExp
bmtTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOwogICAgIENhbGxMaW5rU3RhdHVzKiByZXN1bHQg
PSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVP
cmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01Myw3
ICs1Myw3IEBAIENhbGxMaW5rU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luCiAKIEdldEJ5SWRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVz
UHRyID0gbWFrZVVuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIEdldEJ5SWRTdGF0
dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNjEsNyArNjEsNyBAQCBHZXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRH
ZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sCiAgICAgCiBQdXRCeUlk
U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4sIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRv
IHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAg
ICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKICAg
ICBQdXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgcHV0cy5hcHBl
bmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTY5LDcgKzY5LDcgQEAgUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRT
dGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAog
CiBJbkJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEluQnlJZFN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBJbkJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAg
ICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5CeUlkU3RhdHVzPihzdGF0dXMp
OworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7
CiAgICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgaW5zLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4
IDMwYTFmMDU1MjU5ZTNkZWQxYTcxNjhlZTM1MjZmNzJjMDg0YmVlNWEuLmZjYzI5MTE4MDI0NGUw
YjMyMjllMmZkNzYzMDA3YmU3OWE4NzQxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2lu
dCogV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2UKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBrZXkpCiB7CiAgICAgaWYgKCFob2xkZXJSZWYpCi0gICAgICAgIGhvbGRlclJlZiA9IHN0ZDo6
bWFrZV91bmlxdWU8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0
dWJJbmZvKTsKKyAgICAgICAgaG9sZGVyUmVmID0gbWFrZVVuaXF1ZTxXYXRjaHBvaW50c09uU3Ry
dWN0dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOwogICAgIGVsc2UgewogICAgICAg
ICBBU1NFUlQoaG9sZGVyUmVmLT5tX2NvZGVCbG9jayA9PSBjb2RlQmxvY2spOwogICAgICAgICBB
U1NFUlQoaG9sZGVyUmVmLT5tX3N0dWJJbmZvID09IHN0dWJJbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDcy
MjJkNDgyYWQxZTVlMjg2Y2VmNTlkNGZmMWUxZjVlYjA3MTA3OGQuLjQ5MTk1ZDE1NzIxZDJjZGE0
Zjc0OGFlOGRiZTJhZjAwOWEyOGE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNj
ZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4oKTsKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQ
b2x5bW9ycGhpY0FjY2Vzcz4oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CiAgICAgICAgICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IGUwMDZkMTZiOWI4YTBmYzMwZjA0MzNjZGU2MDJlY2MzYjE2OGQ0MmUuLjJj
OWEwYjMwMWViMDk4ZTExNWVmMWUzNmIxMjdiZTI5ZTNhYmRhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDE0
LDcgKzQxNCw3IEBAIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgVW5saW5rZWRDb2RlQmxvY2s6
OmxpdmVuZXNzQW5hbHlzaXNTbG93KENvZGVCbG9jayogY29kCiAgICAgICAgIGlmICghbV9saXZl
bmVzcykgewogICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBjaGFuY2UgdHdvIGNvbXBpbGVyIHRo
cmVhZHMgcmFjZWQgdG8gdGhlIHNsb3cgcGF0aC4KICAgICAgICAgICAgIC8vIEdyYWJiaW5nIHRo
ZSBsb2NrIGFib3ZlIGRlZmVuZHMgYWdhaW5zdCBjb21wdXRpbmcgbGl2ZW5lc3MgdHdpY2UuCi0g
ICAgICAgICAgICBtX2xpdmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM+KGNvZGVCbG9jayk7CisgICAgICAgICAgICBtX2xpdmVuZXNzID0gbWFrZVVuaXF1
ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KGNvZGVCbG9jayk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCmluZGV4IDQzNzA5NTE5ZWI2MTZlMjY1MTA2ZWYxZDU1Mjk2MTdkNjQ1YzliYzku
LjUxMjUzNmMwZDQ0ODU3YTRjYTc2ZTgxM2ZlMTQ4MDNhOTczZmZhNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00MDIs
NyArNDAyLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkgewogICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBsb2NrRHVyaW5nTWFya2luZygqaGVhcCgpLCBjZWxsTG9jaygpKTsKLSAgICAgICAgICAgIG1f
cmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9y
YXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGZiZWM5ZjcyY2EyZmQxYTE4YmFjYjA3M2U2ODcy
NTRiNzBiOWViZTEuLjQ5ZDlkMmZkM2U2ZmU5ZmI0YjUyN2Y2NzdhYmQ1YmQ0YTUxMjI2Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoVk0mIHZtKQogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOwot
ICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgIG1fcmFy
ZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJldHVybiAqbV9yYXJlRGF0YTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IGU5NzY4NmFhM2VkY2RkOGQzZjliNTdjNGE2ZDEyM2JhYzlj
YjM5ODcuLjE3OGE2MWRmNjkxMzNhZmRjYzEyNzI4Y2JmZDk2ZWIzOWY0MmFlYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKQEAgLTQwMSw3ICs0MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVC
bG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCk7CisgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5v
ZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsK
ICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0b3ItPmdlbmVyYXRlKCk7
CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBp
bGVUaW1lcygpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApp
bmRleCBiY2Q3MmVhMDlmNWY3MTdhNjVmNjVkN2QyZWZjMTc1ZTAyM2U2OTkwLi5lYmFiYjU5ZDQz
NTlhOWUzNjRmMmNhM2FmNmFmZDBlZmQwMzkwYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBWTTsKIHR5cGVkZWYg
RXhlY1N0YXRlIENhbGxGcmFtZTsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlYnVnZ2VyKFZN
Jik7CiAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBmMjBh
MzU3ZWNiNzNhYTdlZmU0Y2IxMDdkMWNjYjdlOWRjOTAwMzM5Li4yNzY1NjkyNmE4ZDI5ZDI3ZWJl
ZWFhOWZmZGNhMjAzY2MyNWZhMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC01OCw3ICs1OCw3
IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpBYnN0cmFjdEludGVy
cHJldGVyKEdyYXBoJiBncmFwaCwgQWJzdHJhCiAgICAgLCBtX3N0YXRlKHN0YXRlKQogewogICAg
IGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgIG1fcGhpQ2hpbGRyZW4gPSBzdGQ6
Om1ha2VfdW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKKyAgICAgICAgbV9waGlDaGlsZHJl
biA9IG1ha2VVbmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggNWIwYzg3ZmZlZTUyYjJhOWU1MDExZTViZjhjNzFjMDEyOTQyZWZkMC4uZTY4M2E4
MjFiMjJiY2ZlNTZiMzllZjQxYTExZjFjMmRkYmQ2NjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwg
UGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFu
LmNvZGVCbG9jaygpKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5h
dGl2ZSgpKQotICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkK
KyAgICAsIG1fc3NhQ0ZHKG1ha2VVbmlxdWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRN
YWNoaW5lTG9jYWwoMCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAg
ICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3Rlcmlu
ZykKQEAgLTg2LDggKzg2LDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAg
ICAKICAgICBtX2hhc0RlYnVnZ2VyRW5hYmxlZCA9IG1fcHJvZmlsZWRCbG9jay0+d2FzQ29tcGls
ZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29k
ZUdlbmVyYXRpb24oKTsKICAgICAKLSAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZsb3dJbmRleGluZz4oKnRoaXMpOwotICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworICAgIG1faW5k
ZXhpbmdDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7CisgICAgbV9hYnN0
cmFjdFZhbHVlc0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhp
cyk7CiAKICAgICByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkp
OwogICAgIHRoaXMtPnN0cmluZ1N0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBGdWxsQnl0ZWNvZGVMaXZl
bmVzcyYgR3JhcGg6OmxpdmVuZXNzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGlmIChp
dGVyICE9IG1fYnl0ZWNvZGVMaXZlbmVzcy5lbmQoKSkKICAgICAgICAgcmV0dXJuICppdGVyLT52
YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxp
dmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gbWFrZVVuaXF1
ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlz
aXMoKS5jb21wdXRlRnVsbExpdmVuZXNzKGNvZGVCbG9jaywgKmxpdmVuZXNzKTsKICAgICBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0ID0gKmxpdmVuZXNzOwogICAgIG1fYnl0ZWNvZGVMaXZl
bmVzcy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGxpdmVuZXNzKSk7CkBAIC0xMTE1LDcgKzExMTUs
NyBAQCBCeXRlY29kZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUtpbGxzLmVuZCgpKQogICAgICAgICByZXR1cm4g
Kml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBr
aWxscyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVLaWxscz4ga2lsbHMgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7
CiAgICAgY29kZUJsb2NrLT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0ZUtpbGxzKGNvZGVCbG9j
aywgKmtpbGxzKTsKICAgICBCeXRlY29kZUtpbGxzJiByZXN1bHQgPSAqa2lsbHM7CiAgICAgbV9i
eXRlY29kZUtpbGxzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUoa2lsbHMpKTsKQEAgLTE1NTMsNyAr
MTU1Myw3IEBAIENQU0NGRyYgR3JhcGg6OmVuc3VyZUNQU0NGRygpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFt
X2Nwc0NGRykKLSAgICAgICAgbV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4oKnRo
aXMpOworICAgICAgICBtX2Nwc0NGRyA9IG1ha2VVbmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2Nwc0NGRzsKIH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgQ1BTRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwogICAgIGlmICghbV9jcHNEb21p
bmF0b3JzKQotICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxD
UFNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc0RvbWluYXRvcnM7CiB9CiAK
QEAgLTE1NjksNyArMTU2OSw3IEBAIFNTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FEb21p
bmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNT
QUNvbnZlcnNpb24pOwogICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQotICAgICAgICBtX3NzYURv
bWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAg
ICAgbV9zc2FEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIENQ
U05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29wcygpCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgZW5z
dXJlQ1BTRG9taW5hdG9ycygpOwogICAgIGlmICghbV9jcHNOYXR1cmFsTG9vcHMpCi0gICAgICAg
IG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0
aGlzKTsKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPENQU05hdHVyYWxM
b29wcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1
ODcsNyArMTU4Nyw3IEBAIFNTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZVNTQU5hdHVyYWxM
b29wcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgZW5zdXJlU1NB
RG9taW5hdG9ycygpOwogICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fc3Nh
TmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsK
KyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPFNTQU5hdHVyYWxMb29wcz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1OTYsNyAr
MTU5Niw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiAgICAg
Ly8gV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSB0byB3b3JrIG92ZXIg
Q1BTLCBidXQgdG9kYXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4KICAgICBSRUxFQVNFX0FTU0VS
VChtX2Zvcm0gPT0gU1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9i
YWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAg
ICAgICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIApAQCAtMTYwNCw3ICsxNjA0LDcgQEAgQmFj
a3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNE
b21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNEb21p
bmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0
dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE2MTIsNyArMTYxMiw3IEBAIENv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlm
ICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKLSAgICAgICAgbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXM+KCp0aGlzKTsKKyAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG1ha2VV
bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
Y29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNjM5MDQzZTllMjdmYmUwZTBiOTJhYjQ2YTY2
OWJlMTQxMDUwMzM3MC4uZjJiNjY0MDJlM2FkMGU3MmRmY2UwNWI2NWFmM2ZjOTI2ZDAwOWRhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgSklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBoJiBkZmcpCiAgICAgLCBt
X3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcihkZmcubV92bSkKIHsKICAgICBpZiAoVU5MSUtFTFko
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgbV9ncmFwaC5tX3ZtLm1fcGVyQnl0ZWNvZGVQcm9m
aWxlcikpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNhc3Nl
bWJsZXI+KGRmZyk7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxEaXNhc3Nl
bWJsZXI+KGRmZyk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgbV9qaXRDb2RlLT50aWVyVXBJ
bkxvb3BIaWVyYXJjaHkgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnRpZXJVcEluTG9vcEhpZXJh
cmNoeSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIHRpZXJVcEJ5dGVjb2RlIDogbV9ncmFwaC5tX3Bs
YW4udGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMoKSkKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lk
IEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgfQogCiAgICAg
aWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAg
ICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1Rv
Q29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtC
dWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VV
bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIpLCBsaW5rQnVmZmVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hl
Y2soSklUQ29tcGlsZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzdGFja092ZXJm
bG93KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAg
ICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKLSAgICBtX3NwZWN1bGF0
aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3Bl
Y3VsYXRpdmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAKICAgICAvLyBQ
bGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpT
U3RhY2suCiAgICAgSnVtcExpc3Qgc3RhY2tPdmVyZmxvdzsKQEAgLTQwMiw5ICs0MDIsOSBAQCB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBtX3NwZWN1bGF0aXZlLT5jcmVhdGVPU1JF
bnRyaWVzKCk7CiAgICAgc2V0RW5kT2ZDb2RlKCk7CiAKLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGls
YXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZm
ZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAo
bGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxh
bi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgu
bV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVl
PEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkK
IAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNl
dEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZm
ZXIpKSk7CiB9CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
RnVuY3Rpb24oKQogICAgIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKTsKIAogICAgIC8vID09
PSBGdW5jdGlvbiBib2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KLSAgICBtX3NwZWN1bGF0aXZlID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3BlY3VsYXRp
dmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAgICAgY29tcGlsZUJvZHko
KTsKICAgICBzZXRFbmRPZk1haW5QYXRoKCk7CiAKQEAgLTUwNyw5ICs1MDcsOSBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIHNldEVuZE9mQ29kZSgpOwogCiAgICAg
Ly8gPT09IExpbmsgPT09Ci0gICAgYXV0byBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxM
aW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Cisg
ICAgYXV0byBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZh
aWxUb0FsbG9jYXRlKCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0
ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOworICAgICAg
ICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+
KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbGluaygqbGlu
a0J1ZmZlcik7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1
bmN0aW9uKCkKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRo
QXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oYXJpdHlD
aGVjayk7CiAKLSAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1
ZTxKSVRGaW5hbGl6ZXI+KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5p
cXVlPEpJVEZpbmFsaXplcj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2spKTsKIH0K
IApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVD
b25zdGFudChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIGlm
ICghbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cykKLSAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNv
bnN0YW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFnPGRvdWJsZT4+KCk7CisgICAgICAgIG1fZ3Jh
cGgubV9kb3VibGVDb25zdGFudHMgPSBtYWtlVW5pcXVlPEJhZzxkb3VibGU+PigpOwogCiAgICAg
ZG91YmxlKiBhZGRyZXNzSW5Db25zdGFudFBvb2wgPSBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRz
LT5hZGQoKTsKICAgICAqYWRkcmVzc0luQ29uc3RhbnRQb29sID0gdmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAK
aW5kZXggYmI4MDAyNzRkZGNiNjMwMzQ3ODM3MzdlMzhhZDFlNjFlOWM1ZWEwNC4uYTk0NDA0NzQ1
OTI1MjE4NDViYTMxODgzN2IxM2I5ZjRhMzE3ZWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBjbGFzcyBMaXZlbmVzc0FuYWx5c2lzUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAsIG1fbGl2ZUF0VGFpbChtX2dyYXBoKQogICAgIHsKICAgICAgICAgbV9ncmFwaC5tX2lu
ZGV4aW5nQ2FjaGUtPnJlY29tcHV0ZSgpOwotICAgICAgICBtX3dvcmtzZXQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1JbmRpY2VzKCkpOwor
ICAgICAgICBtX3dvcmtzZXQgPSBtYWtlVW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGlu
Z0NhY2hlLT5udW1JbmRpY2VzKCkpOwogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IDM0YWNiYzFmZTIyZmI3N2YzNTgwZGEzNjc5
OWM4MjE0YmViYzlkNjIuLmI2OTQ5YWEwMzVjMTJmYTc0OWQ1ODBjYzdjMmFlY2NhOGQ5MmMxNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBA
IFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBp
ZiAobV9tb2RlID09IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAgICAgICBib29sIHJlc3VsdCA9
IHBlcmZvcm1PU1JFbnRyeXBvaW50Q3JlYXRpb24oZGZnKTsKICAgICAgICAgaWYgKCFyZXN1bHQp
IHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5h
bGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAg
ICAgfQogICAgICAgICBSVU5fUEhBU0UocGVyZm9ybUNQU1JldGhyZWFkaW5nKTsKQEAgLTM5OCw3
ICszOTgsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCgpCiAgICAgY2FzZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICNpZiBFTkFCTEUoRlRMX0pJVCkK
ICAgICAgICAgaWYgKEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkg
ewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFs
aXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxl
ZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtNDc4LDcgKzQ3OCw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQ
bGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1XYXRj
aHBvaW50Q29sbGVjdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxl
KGRmZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBt
X2ZpbmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAg
ICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCmluZGV4IDg3MTU5NWIxZmYy
NTliZWU0NGM3MWNlMDNkN2Q4ZThiZDY0MzY1MzcuLjUzNGQ2NGI1MzhmYTE4MGFmNDhlODlkNGY4
MjYwMmZiNDVjOTIxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBTU0FDb252
ZXJzaW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigp
OwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwotICAgICAgICAgICAg
YmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2sp
OworICAgICAgICAgICAgYmxvY2stPnNzYSA9IG1ha2VVbmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0
YT4oYmxvY2spOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZW50cnlw
b2ludEluZGV4VG9Bcmd1bWVudHNCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDdjZjQyNTIxYTYyMTE3OGZmODUxMmFm
ZjlmZmZhMzI1MjAwMjI0ZDYuLmNkY2RhYTYwZDg5OGEzYjY2ZDdiMjk4ZjY2ODE4Yzc5ZGM0OGM4
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwKICAgICBSZXN1bHRUeXBl
IHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oCisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KAogICAgICAgICBmcm9t
LCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50
cy4uLik7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlw
ZSwgdHlwZW5hbWUgRGVzdGluYXRpb25UeXBlLCB0eXBlbmFtZSBTb3VyY2VUeXBlLCB1bnNpZwog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAog
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFNvdXJjZVR5cGUgc291cmNl
W251bWJlck9mQXNzaWdubWVudHNdLCBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25bbnVtYmVy
T2ZBc3NpZ25tZW50c10pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5n
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwg
bnVtYmVyT2ZBc3NpZ25tZW50cz4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Ns
b3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIG51
bWJlck9mQXNzaWdubWVudHM+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbiwgc291
cmNlKTsKIH0KIApAQCAtMjQ5LDcgKzI0OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFy
cmF5WzFdID0geyBzb3VyY2UgfTsKICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25BcnJh
eVsxXSA9IHsgZGVzdGluYXRpb24gfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3Np
Z25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VU
eXBlLCAxPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0
b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMT4+KAogICAgICAgICBm
cm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIApAQCAtMjU5LDcg
KzI1OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5WzJdID0geyBzb3VyY2UxLCBz
b3VyY2UyIH07CiAgICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0aW9uQXJyYXlbMl0gPSB7IGRl
c3RpbmF0aW9uMSwgZGVzdGluYXRpb24yIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291
cmNlVHlwZSwgMj4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2Vu
ZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDI+PigKICAgICAg
ICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjA3
YTliNjliNDg4NTViNTZiMWY4MzcyMDY1MWMyYmM3NmUzOGY5ZS4uNzBlNzA1ZDc4NDkzMmQ5ZDNm
YzI3MjQ5MTMyZWZkM2UzZTVkNjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZQogICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0
IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0J3MKICAgICAvLyB3aGF0IHRoaXMgY3VzdG9t
IENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90
CiAgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHku
IDotLwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1h
a2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0R1BSLCBzdG9yYWdl
R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOwogCkBAIC04OTksNyArODk5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZSwgR1BSUmVnIGJh
c2VSZWcsIEdQUlJlZyBwcm9wZXJ0eVJlZykKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBT
bG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAg
ICB9CiAgICAgCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxBcnJh
eWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5p
cXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93UGF0aCwgdGhpcywg
bm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHRlbXBHUFIsIHN0cnVjdHVyZUdQUikpOwogICAg
IAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwpAQCAtMjI0MiwxMCArMjI0MiwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlKiBub2RlKQog
ICAgICAgICB9CiAgICAgICAgIGlmIChwcm90b3R5cGVDaGFpbklzU2FuZSkgewogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhH
ZW5lcmF0b3I+KAogICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVn
cyhzY3JhdGNoUmVnKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbHNlCi0gICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1h
a2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAg
ICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdSZWcsIHNjcmF0
Y2hSZWcpLAogICAgICAgICAgICAgICAgIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAjZW5kaWYK
QEAgLTc2MTksNyArNzYxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVE
aXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwK
ICAgICAgICAgICAgICAgICBrbm93bkxlbmd0aCwgbWluQ2FwYWNpdHkpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBhdXRvIGdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbENyZWF0ZURp
cmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYXV0byBnZW5lcmF0b3Ig
PSBtYWtlVW5pcXVlPENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4o
CiAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGxlbmd0
aEdQUiwgbWluQ2FwYWNpdHkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KGdlbmVyYXRvcikpOwogICAgIH0KQEAgLTg0MzksNyArODQzOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJs
ZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVT
dHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgdGVtcFZh
bHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSKSk7CiAgICAgfQogCkBAIC05MTM1LDcgKzkx
MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJlQ2hlY2soTm9kZSogbm9k
ZSwgR1BSUmVnIGNlbGxHUFIsIEdQUlJlZyB0ZW1wRwogICAgICAgICBHUFJSZWcgc3RydWN0dXJl
R1BSOwogICAgICAgICAKICAgICAgICAgaWYgKHRlbXBHUFIgPT0gSW52YWxpZEdQUlJlZykgewot
ICAgICAgICAgICAgc3RydWN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRo
aXMpOworICAgICAgICAgICAgc3RydWN0dXJlID0gbWFrZVVuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRo
aXMpOwogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLT5ncHIoKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSB0ZW1wR1BSOwpAQCAtMTMxNzYs
NyArMTMxNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJh
eVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgbV9qaXQubXV0YXRv
ckZlbmNlKCptX2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9j
YXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAogICAgICAgICBz
dHJ1Y3R1cmUsCiAgICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSkgOiBzdHJ1Y3R1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGZhMzk2ZjRmMTkyYThi
YjRhZWY5OWQwMzcxOTI0YTJhMzhjNjQ1ZTguLmJhNjEyOGVmZTliYjM2OGZlM2IwNjYyM2I1MWVl
M2VlYWQzYzRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC05NSw4ICs5NSw4IEBAIGNs
YXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
Y2FzZSBQaGFzZU1vZGU6Okdsb2JhbDogewogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogCi0gICAgICAgICAgICBtX3N0YXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7Ci0gICAg
ICAgICAgICBtX2ludGVycHJldGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEludGVycHJl
dGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUpOworICAgICAgICAg
ICAgbV9zdGF0ZSA9IG1ha2VVbmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+KG1fZ3JhcGgpOwor
ICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IG1ha2VVbmlxdWU8QWJzdHJhY3RJbnRlcnByZXRl
cjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0YXRlKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9pc0NvbnZlcmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCkBAIC0x
MDcsOCArMTA3LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgLy8gdG93YXJkcyBiZWxpZXZpbmcgdGhhdCBhbGwgbm9kZXMg
bmVlZCBiYXJyaWVycy4gIk5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlCiAgICAgICAgICAgICAv
LyBzYXlpbmcgdGhhdCB0aGUgbm9kZSBpcyBpbiBhIHBhc3QgZXBvY2guICJOb3QgbmVlZGluZyBh
IGJhcnJpZXIiIGlzIGxpa2Ugc2F5aW5nCiAgICAgICAgICAgICAvLyB0aGF0IHRoZSBub2RlIGlz
IGluIHRoZSBjdXJyZW50IGVwb2NoLgotICAgICAgICAgICAgbV9zdGF0ZUF0SGVhZCA9IHN0ZDo6
bWFrZV91bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKLSAgICAgICAg
ICAgIG1fc3RhdGVBdFRhaWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9k
ZSo+Pj4obV9ncmFwaCk7CisgICAgICAgICAgICBtX3N0YXRlQXRIZWFkID0gbWFrZVVuaXF1ZTxC
bG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0
VGFpbCA9IG1ha2VVbmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgQmxvY2tMaXN0IHBvc3RPcmRlciA9IG1fZ3JhcGguYmxv
Y2tzSW5Qb3N0T3JkZXIoKTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dvcmtsaXN0LmNwcAppbmRleCBlNmMyMjIxZWUzMDE1NDRjNzJhOWNlODM1Zjk4MGZmMzZm
MDI0YjdkLi44ZjkzMDM0YjBjNmY5MGJhNjZmNGJmNWM1M2JlMWI0ZjBmYmE3NGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IGNsYXNzIFdvcmtsaXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1dG9tYXRpY1RocmVhZCB7CiAg
ICAgICAgIGlmIChtX3JlbGF0aXZlUHJpb3JpdHkpCiAgICAgICAgICAgICBUaHJlYWQ6OmN1cnJl
bnQoKS5jaGFuZ2VQcmlvcml0eShtX3JlbGF0aXZlUHJpb3JpdHkpOwogICAgICAgICAKLSAgICAg
ICAgbV9jb21waWxhdGlvblNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvblNjb3Bl
PigpOworICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBtYWtlVW5pcXVlPENvbXBpbGF0aW9u
U2NvcGU+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBB
YnN0cmFjdExvY2tlciYpIG92ZXJyaWRlCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXb3JrbGlz
dDo6ZmluaXNoQ3JlYXRpb24odW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQ
cmlvcml0eSkKIAogdm9pZCBXb3JrbGlzdDo6Y3JlYXRlTmV3VGhyZWFkKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaHJlYWREYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWREYXRhPih0aGlz
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IG1ha2VVbmlxdWU8VGhy
ZWFkRGF0YT4odGhpcyk7CiAgICAgZGF0YS0+bV90aHJlYWQgPSBhZG9wdFJlZihuZXcgVGhyZWFk
Qm9keShsb2NrZXIsICp0aGlzLCAqZGF0YSwgbV9sb2NrLCBtX3BsYW5FbnF1ZXVlZC5jb3B5UmVm
KCksIHJlbGF0aXZlUHJpb3JpdHkpKTsKICAgICBtX3RocmVhZHMuYXBwZW5kKFdURk1vdmUoZGF0
YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9E
aXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuY3BwCmluZGV4IDE5YjExNWM5ZmRkNjdjYmM4YWUxMDljNjQ0NTc0MjhiYTNhZGZh
NTMuLjAwYmRhNjU3Mjc5Y2Y3YTk5ZGJhYjE0OWIwOWM3MDNkNjhiMzViZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKQEAg
LTEzMCw3ICsxMzAsNyBAQCBBc3luY2hyb25vdXNEaXNhc3NlbWJsZXImIGFzeW5jaHJvbm91c0Rp
c2Fzc2VtYmxlcigpCiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCiAgICAgY29uc3Qg
Q1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQ
dHJUYWc+JiBjb2RlUmVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4KQogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PERpc2Fzc2VtYmx5VGFzaz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNr
PiB0YXNrID0gbWFrZVVuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CiAgICAgdGFzay0+aGVhZGVy
ID0gc3RyZHVwKGhlYWRlci5kYXRhKCkpOyAvLyBZdWNrISBXZSBuZWVkIHRoaXMgYmVjYXVzZSBD
U3RyaW5nIGRvZXMgcmFjeSByZWZjb3VudGluZy4KICAgICB0YXNrLT5jb2RlUmVmID0gY29kZVJl
ZjsKICAgICB0YXNrLT5zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwLmNwcAppbmRleCA5MGFlMmY0ZmUwNmExNTJjYWU1Nzg1ZTJjMDNjOTk5
YjY4MzJiYzFiLi5lYzgwZWE2N2IyNTZmODkxOGQ0ODgzYThjNTJiOGYzNzk1ODNhYmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCkBAIC0xNTcs
MTEgKzE1NywxMSBAQCBjb25zdCBBYnN0cmFjdEhlYXAmIEluZGV4ZWRBYnN0cmFjdEhlYXA6OmF0
U2xvdyhwdHJkaWZmX3QgaW5kZXgpCiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5k
ZXgpID49IG1fc21hbGxJbmRpY2VzLnNpemUoKSk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKCFt
X2xhcmdlSW5kaWNlcykpCi0gICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gc3RkOjptYWtlX3VuaXF1
ZTxNYXBUeXBlPigpOworICAgICAgICBtX2xhcmdlSW5kaWNlcyA9IG1ha2VVbmlxdWU8TWFwVHlw
ZT4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBYnN0cmFjdEhlYXA+JiBmaWVsZCA9IG1fbGFy
Z2VJbmRpY2VzLT5hZGQoaW5kZXgsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
IWZpZWxkKSB7Ci0gICAgICAgIGZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEhlYXA+
KCk7CisgICAgICAgIGZpZWxkID0gbWFrZVVuaXF1ZTxBYnN0cmFjdEhlYXA+KCk7CiAgICAgICAg
IGluaXRpYWxpemUoKmZpZWxkLCBpbmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA1ZDA0YjcyZjA0ODMxZDA2MzAyMzA0ZDFlYjdlNDky
OWQ0ODA0MjdmLi40NjM1Y2M5NmY5MTA5MWY3M2YwOGQxZjc1MmIwNDdkMTA1M2JmYjQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
dm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJl
c3VsdCkKICAgICBWTSYgdm0gPSBncmFwaC5tX3ZtOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNh
c3NlbWJseSgpKQotICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKHN0
ZDo6bWFrZV91bmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKKyAgICAgICAgc3RhdGUu
cHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2Vt
Ymxlcj4oKSk7CiAKICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0
ZS5ncmFwaCwgc2FmZXBvaW50UmVzdWx0KTsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBjb21waWxl
KFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4gcmVnaXN0ZXJPZmZzZXRzID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0
T2Zmc2V0TGlzdD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkp
OworICAgICAgICBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5j
YWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CiAgICAgaWYgKHNob3VsZER1bXBEaXNh
c3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBmb3IgIiwgQ29kZUJsb2Nr
V2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiOiAiLCAqcmVnaXN0ZXJP
ZmZzZXRzLCAiXG4iKTsKICAgICBjb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoV1RG
TW92ZShyZWdpc3Rlck9mZnNldHMpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIGNvbXBpbGUo
U3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
bG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKIAotICAgIHN0YXRlLmZpbmFs
aXplci0+YjNDb2RlTGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0
LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgc3RhdGUuZmluYWxpemVy
LT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIAogICAgIGlmIChzdGF0ZS5maW5hbGl6ZXItPmIz
Q29kZUxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgc3RhdGUuYWxs
b2NhdGlvbkZhaWxlZCA9IHRydWU7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBjb21waWxlKFN0
YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAKICAg
ICBCMzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9jLT5yZWxlYXNlUENUb09y
aWdpbk1hcCgpOwogICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5n
KCkpCi0gICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3Vu
aXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZN
b3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7Cisg
ICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29k
ZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1h
cCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7CiAKICAgICBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihzdGF0ZS5wcm9jLT5lbnRyeXBv
aW50TGFiZWwoMCkpOwogICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcAppbmRleCAxNjUzMzUwOWNkMGI0ODJjNzRiY2E2
NzMxODc2M2YyZTBmMDlkZGYxLi5jM2Y5MzM5MmYyNmU2ZmM5NWY5YzJjYzU5MjllZDM0YzZiYzMw
YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIERGRzsKIAogdm9pZCBmYWlsKFN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBzdGF0ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVk
RmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3BsYW4pKTsKKyAgICBzdGF0ZS5ncmFwaC5tX3BsYW4u
c2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3Bs
YW4pKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKaW5kZXggMDg1NDA1NmVjN2QxNjJiMTFjZGMyMWNkNzhmZTE1MTdmN2Fj
ZjNlYi4uOTVkYjY5NjFlOGU5MDc3MGNkNmU1NTY3MzAyMmI0NDc2M2I1ODA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAg
ICAgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOwogCi0gICAgICAgICAg
ICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBtYWtl
VW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwp
OwogICAgICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAg
ICAgICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbWFpblBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCi0gICAgICAgIGxpbmtC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOworICAgICAgICBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5r
QnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAg
aWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgIHN0YXRl
LmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFmMWJhNGJmOTBh
OGZkMGJhMjUwMmM2NDdlMmMxNzE0MTIyZGU3ZDQuLjA5YjM0MjczY2JiN2NhYjQ0Y2Q4NjNlOTli
Mjg1OTBlODdjOTRiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTE1MDgwLDcgKzE1MDgwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGdlbmVyYXRv
ckp1bXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbDxKSVRUaHVua1B0clRhZz4odm0tPmdldENUSVN0dWIobGF6eVNsb3dQYXRoR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5
U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF6eVNsb3dQYXRoPigp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF6eVNs
b3dQYXRoPiBsYXp5U2xvd1BhdGggPSBtYWtlVW5pcXVlPExhenlTbG93UGF0aD4oKTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmtlZFBhdGNoYWJsZUp1bXAgPSBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KGxpbmtCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVKdW1wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTdGF0ZS5jcHAKaW5kZXggNjUzZWM2ZjY5NjA0OWI3NTJhYzI0YTc3OTMxMGQ0YWQ5N2Ji
MDNkYi4uNGE0ODRmYTZkNDY0MzBkNzFlNTcwMDhiZjFlOTlmNmMyNWI4NDg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTYwLDEwICs2MCwxMCBAQCBTdGF0ZTo6
U3RhdGUoR3JhcGgmIGdyYXBoKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPihncmFwaC5t
X3BsYW4pKTsKKyAgICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmlu
YWxpemVyPihncmFwaC5tX3BsYW4pKTsKICAgICBmaW5hbGl6ZXIgPSBzdGF0aWNfY2FzdDxKSVRG
aW5hbGl6ZXIqPihncmFwaC5tX3BsYW4uZmluYWxpemVyKCkpOwogCi0gICAgcHJvYyA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2VkdXJlPigpOworICAgIHByb2MgPSBtYWtlVW5pcXVlPFByb2NlZHVy
ZT4oKTsKIAogICAgIHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAgICAgICAgIFtdIChQcmludFN0
cmVhbSYgb3V0LCBCMzo6T3JpZ2luIG9yaWdpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRleCAyMmQ3ZmQ2NWQ1YTE3NTViNWIyZDNi
NzhkZGE1NWMwZDAwN2UxY2NiLi4wMjFiMGNkYjlkZmFjMThiMzY4NjQyOGE5ODIzZjI4MTEwYmI3
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNw
YWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcApAQCAtODAsNyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2Nh
dG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgQmxvY2tE
aXJlY3RvcnkvTG9jYWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwgIiwgYXR0cmlidXRlcygp
LCAiLCAiLCBzaXplQ2xhc3MsICIuXG4iKTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qmxv
Y2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9yeSA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8
QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3MpOworICAgICAgICBtYWtl
VW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKICAgICBC
bG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0b3J5LmdldCgpOwogICAgIG1f
ZGlyZWN0b3JpZXMuYXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0b3J5KSk7CiAgICAgCkBAIC04
OCw3ICs4OCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93
KHNpemVfdCBzaXplKQogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3RvcnkobG9ja2VyLCBkaXJl
Y3RvcnkpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbEFsbG9jYXRvcj4gdW5pcXVl
TG9jYWxBbGxvY2F0b3IgPQotICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsQWxsb2NhdG9y
PihkaXJlY3RvcnkpOworICAgICAgICBtYWtlVW5pcXVlPExvY2FsQWxsb2NhdG9yPihkaXJlY3Rv
cnkpOwogICAgIExvY2FsQWxsb2NhdG9yKiBsb2NhbEFsbG9jYXRvciA9IHVuaXF1ZUxvY2FsQWxs
b2NhdG9yLmdldCgpOwogICAgIG1fbG9jYWxBbGxvY2F0b3JzLmFwcGVuZChXVEZNb3ZlKHVuaXF1
ZUxvY2FsQWxsb2NhdG9yKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmlu
ZGV4IGEwMWI1YTJiNGFlZmQzZTUyOTY5NzdhNWM4Mzg0MDQyZTVhMjk1NmEuLjk3MTk5ZTE4NmRl
NzJkNzcyNzk3MzVjOWQzYzk5NDBjODVjNDhhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCkBAIC0yODksMTUgKzI4OSwxNSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAs
IG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9vYmplY3RTcGFjZSh0
aGlzKQotICAgICwgbV9tYWNoaW5lVGhyZWFkcyhzdGQ6Om1ha2VfdW5pcXVlPE1hY2hpbmVUaHJl
YWRzPigpKQotICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgIkMiKSkKLSAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKHN0ZDo6
bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQotICAgICwgbV9tdXRhdG9yTWFy
a1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3JhY2VN
YXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fY29u
c3RyYWludFNldChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykp
CisgICAgLCBtX21hY2hpbmVUaHJlYWRzKG1ha2VVbmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCisg
ICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlz
LCAiQyIpKQorICAgICwgbV9tdXRhdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90VmlzaXRv
cj4oKnRoaXMsICJNIikpCisgICAgLCBtX211dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJr
U3RhY2tBcnJheT4oKSkKKyAgICAsIG1fcmFjZU1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFj
a0FycmF5PigpKQorICAgICwgbV9jb25zdHJhaW50U2V0KG1ha2VVbmlxdWU8TWFya2luZ0NvbnN0
cmFpbnRTZXQ+KCp0aGlzKSkKICAgICAsIG1faGFuZGxlU2V0KHZtKQotICAgICwgbV9jb2RlQmxv
Y2tzKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQotICAgICwgbV9qaXRTdHViUm91
dGluZXMoc3RkOjptYWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKKyAgICAsIG1fY29k
ZUJsb2NrcyhtYWtlVW5pcXVlPENvZGVCbG9ja1NldD4oKSkKKyAgICAsIG1faml0U3R1YlJvdXRp
bmVzKG1ha2VVbmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCiAgICAgLCBtX3ZtKHZtKQogICAg
IC8vIFdlIHNlZWQgd2l0aCAxMG1zIHNvIHRoYXQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxv
Y2F0ZSBkb2Vzbid0IGNvbnRpbnVvdXNseSAKICAgICAvLyBzY2hlZHVsZSB0aGUgdGltZXIgaWYg
d2UndmUgbmV2ZXIgZG9uZSBhIGNvbGxlY3Rpb24uCkBAIC0zMDUsOCArMzA1LDggQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxs
YmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKICAgICAs
IG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCiAgICAg
LCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGlt
ZXIodm0pKSkKLSAgICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlx
dWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3RhY2soc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fc2hhcmVkQ29sbGVjdG9y
TWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3NoYXJlZE11
dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKICAgICAsIG1faGVs
cGVyQ2xpZW50KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2Nr
Pjo6Y3JlYXRlKCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25k
aXRpb246OmNyZWF0ZSgpKQpAQCAtMzE0LDcgKzMxNCw3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkcyA9IGhlYXBIZWxwZXJQb29s
KCkubnVtYmVyT2ZUaHJlYWRzKCk7IGkgPCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkczsgKytpKSB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0b3IgPSBtYWtlVW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEpKTsKICAgICAgICAgaWYgKE9w
dGlvbnM6Om9wdGltaXplUGFyYWxsZWxTbG90VmlzaXRvcnNGb3JTdG9wcGVkTXV0YXRvcigpKQog
ICAgICAgICAgICAgdmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogICAgICAg
ICBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVuZCh2aXNpdG9yLmdldCgpKTsK
QEAgLTMyMywxNyArMzIzLDE3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAKICAgICBpZiAoT3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkpIHsKICAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1bGVyKCkpCi0gICAgICAgICAg
ICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0
b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1
ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VUaW1l
TXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtl
VW5pcXVlPFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBXZSBzaW11bGF0ZSB0dXJuaW5nIG9mZiBjb25jdXJyZW50IEdDIGJ5IG1ha2lu
ZyB0aGUgc2NoZWR1bGVyIHNheSB0aGF0IHRoZSB3b3JsZAogICAgICAgICAvLyBzaG91bGQgYWx3
YXlzIGJlIHN0b3BwZWQgd2hlbiB0aGUgY29sbGVjdG9yIGlzIHJ1bm5pbmcuCi0gICAgICAgIG1f
c2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0
b3JTY2hlZHVsZXI+KCk7CisgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTeW5jaHJv
bm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CiAgICAgfQogICAgIAogICAgIGlm
IChPcHRpb25zOjp2ZXJpZnlIZWFwKCkpCi0gICAgICAgIG1fdmVyaWZpZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xlc1RvUmVj
b3JkRm9yVmVyaWZpY2F0aW9uKCkpOworICAgICAgICBtX3ZlcmlmaWVyID0gbWFrZVVuaXF1ZTxI
ZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0NDeWNsZXNUb1JlY29yZEZvclZl
cmlmaWNhdGlvbigpKTsKICAgICAKICAgICBtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5vcHRpbWl6
ZUZvclN0b3BwZWRNdXRhdG9yKCk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCBzaXplX3QgSGVhcDo6
cHJvdGVjdGVkT2JqZWN0Q291bnQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBI
ZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKICAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgKICAgICAgICAgWyZdIChK
U0NlbGwqIGNlbGwpIHsKICAgICAgICAgICAgIHJlY29yZFR5cGUoKnZtKCksICpyZXN1bHQsIGNl
bGwpOwpAQCAtOTA5LDcgKzkwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhl
YXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNv
dW50U2V0PiBIZWFwOjpvYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBpdGVyYXRp
b25TY29wZSwKQEAgLTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFp
bnRzKCkKICAgICAgICAgfSwKICAgICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6OlNlbGRvbUdy
ZXllZCk7CiAgICAgCi0gICAgbV9jb25zdHJhaW50U2V0LT5hZGQoc3RkOjptYWtlX3VuaXF1ZTxN
YXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludD4oKnRoaXMpKTsKKyAgICBtX2NvbnN0cmFpbnRTZXQt
PmFkZChtYWtlVW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhpcykpOwogfQog
CiB2b2lkIEhlYXA6OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6dW5pcXVlX3B0cjxNYXJraW5n
Q29uc3RyYWludD4gY29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCmluZGV4IDViNjljZDVlMzVmNjJiNTA2NjNhOWNiZGM3Mzk0ZDFiZDY3YWQxZDguLmUx
ZWI2Yzc4MzNkNDg1ODcxYTljNTMzY2ZkNDczMWM3NWY5YjExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtMjE3LDcgKzIxNyw3IEBAIGlubGluZSB2b2lk
IEhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKIGlubGluZSBIYXNo
U2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4mIEhlYXA6Om1hcmtMaXN0U2V0KCkKIHsKICAgICBp
ZiAoIW1fbWFya0xpc3RTZXQpCi0gICAgICAgIG1fbWFya0xpc3RTZXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsKKyAgICAgICAgbV9tYXJrTGlz
dFNldCA9IG1ha2VVbmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOwogICAg
IHJldHVybiAqbV9tYXJrTGlzdFNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA1YjlhYzg5ZGFiZjA0YTA2MTRk
YzEwZmJiYWYxNmMwZjRhNDk5ZjdlLi4yZDJiYzhmYjliMjdmZTlmOWIxYjViZTU0Y2I3NTFmODNl
MGQzZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNo
b3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNo
b3RCdWlsZGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxkZXI6
OmJ1aWxkU25hcHNob3QoKQogCiAgICAgUHJldmVudENvbGxlY3Rpb25TY29wZSBwcmV2ZW50Q29s
bGVjdGlvblNjb3BlKG1fcHJvZmlsZXIudm0oKS5oZWFwKTsKIAotICAgIG1fc25hcHNob3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhlYXBTbmFwc2hvdD4obV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNo
b3QoKSk7CisgICAgbV9zbmFwc2hvdCA9IG1ha2VVbmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2Zp
bGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKICAgICB7CiAgICAgICAgIG1fcHJvZmlsZXIuc2V0
QWN0aXZlU25hcHNob3RCdWlsZGVyKHRoaXMpOwogICAgICAgICBtX3Byb2ZpbGVyLnZtKCkuaGVh
cC5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IGI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBm
MTBjZGQ2ZTliYjE5OGZkYTkuLjdjMmVkMjQwMmZkNzMwMWZjMDk5YThkZmI1ZDNjMzM2YWVhZDEx
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+
KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9jCiAgICAgYXV0byYgYml0c1B0clJlZiA9
IG1fYml0c1tibG9ja0luZGV4XTsKICAgICBhdXRvKiBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsK
ICAgICBpZiAoIWJpdHMpIHsKLSAgICAgICAgYml0c1B0clJlZiA9IHN0ZDo6bWFrZV91bmlxdWU8
Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKKyAgICAgICAgYml0c1B0clJl
ZiA9IG1ha2VVbmlxdWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKICAg
ICAgICAgYml0cyA9IGJpdHNQdHJSZWYuZ2V0KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZl
bmNlKCk7CiAgICAgICAgIG1fYmxvY2tzV2l0aEJpdHNbYmxvY2tJbmRleF0gPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IGQ1MTAwMGViYTg3
ZjMxZGU0ODFiZWQwOGE1ZjJmZWQ4YTYzOWZmOTkuLmNkM2U3ZTU2MTU0NTY2ZGNmOGMxNTE2M2Ex
NWI3MmYyNzY4ZjI5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHMKICAgICAsIG1f
c2l6ZShzaXplKQogICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRv
cigmbV9kaXJlY3RvcnkpCi0gICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgbV9pc29BbGln
bmVkTWVtb3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4o
KSkKIHsKICAgICBpbml0aWFsaXplKGhlYXBDZWxsVHlwZSwgbV9pc29BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTZXQuY3BwCmluZGV4IGIzYWJkMmM1MjI0ZmNlM2U1Y2UxMmM0ZjE2M2Vk
NDgyM2RhZTY5OGUuLjE3ODBjMDhhNDcwZjI3NjIzMTYzN2VmNjgxMTdjOWE0ZTMyYzFkMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNl
dC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6ZGlkU3Rh
cnRNYXJraW5nKCkKIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKENTdHJpbmcgYWJi
cmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYp
PiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSwgQ29uc3RyYWludENv
bmN1cnJlbmN5IGNvbmN1cnJlbmN5LCBDb25zdHJhaW50UGFyYWxsZWxpc20gcGFyYWxsZWxpc20p
CiB7Ci0gICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdU
Rk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiks
IHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOworICAgIGFkZChtYWtlVW5p
cXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdU
Rk1vdmUobmFtZSksIFdURk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwg
cGFyYWxsZWxpc20pKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQuY3BwCmluZGV4IDgyYmUzYmJiNDRjYjZjNTc3NmI4ZWNmN2Zh
MGM5NDBkNWQ1YTU4MjUuLjUzYTkxYTIzYzFkODkyOTE4ZWU0Mjk0MWE2NWY1Mjc4NjdkNDMzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3MKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGFyZ3VtZW50cy0+
Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwotICAgIG1fY29uc29sZUFnZW50LT5h
ZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIGV4ZWMpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CiB9CiAKIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpjb3VudChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbGFiZWwpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25z
b2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
ICAgICAgICAgICAgIGlmIChleGlzdGluZ1RpdGxlID09IHRpdGxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KICAgICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJV
bm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwi
IiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgIG1fY29uc29s
ZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAgICAgICBtX2NvbnNvbGVB
Z2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRp
dGwKIAogICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2Nh
bGl6YXRpb24/CiAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJv
ZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBkb2Vz
IG5vdCBleGlzdCIpOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0
ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJv
ZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzdGFydENvbnNvbGVQcm9maWxlKCkKQEAgLTE4NSw3
ICsxODUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChF
eGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKQogdm9pZCBKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ6Ondhcm5VbmltcGxlbWVudGVkKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogewog
ICAgIFN0cmluZyBtZXNzYWdlID0gbWV0aG9kICsgIiBpcyBjdXJyZW50bHkgaWdub3JlZCBpbiBK
YXZhU2NyaXB0IGNvbnRleHQgaW5zcGVjdGlvbi4iOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgbWVzc2FnZSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCBjOGRhNTJlZmQxM2M0OTFjY2FlNjM5NWUwNzRjNDY0NGU3MGNjMGE3Li5iZGJk
MzFkNjMxMmIyYzA1NmQ3YzQ3ODE1ZGM2MTVkMTIyNmQ5MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAg
IDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KG1ha2VVbmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNy
ZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihnbG9iYWxPYmplY3QpCiAgICAgLCBt
X2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKQEAgLTcxLDExICs3MSwx
MSBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iagogewogICAgIGF1dG8gY29udGV4dCA9IGpzQWdl
bnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKICAgICBtX2NvbnNv
bGVBZ2VudCA9IGNvbnNvbGVBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZShjb25zb2xlQWdlbnQpKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50PihtX2NvbnNvbGVBZ2VudCk7CisgICAgbV9j
b25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1f
Y29uc29sZUFnZW50KTsKIAogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogfQpA
QCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpyZXBvcnRBUElFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlCiAgICAgICAgICAgICBD
b25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFN0cmluZygp
LCAwLCAwKTsKICAgICB9CiAKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29s
ZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3Zl
KGNhbGxTdGFjaykpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFj
aykpKTsKIH0KIAogQ29uc29sZUNsaWVudCogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25zb2xlQ2xpZW50KCkgY29uc3QKQEAgLTI4MCw3ICsyODAsNyBAQCBJbnNwZWN0b3JB
Z2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JB
Z2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29u
dGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0KTsKKyAgICAgICAgYXV0byBp
bnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOwogICAg
ICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1f
YWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CiAgICAgfQpAQCAtMjkxLDcg
KzI5MSw3IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlRGVidWdnZXJBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2RlYnVnZ2Vy
QWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAg
ICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKKyAgICAgICAgYXV0byBkZWJ1
Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KGNvbnRl
eHQsIG1fY29uc29sZUFnZW50KTsKICAgICAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJB
Z2VudC5nZXQoKTsKICAgICAgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KG1fZGVidWdnZXJBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3Zl
KGRlYnVnZ2VyQWdlbnQpKTsKQEAgLTMyNywyMCArMzI3LDIwIEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGVuc3VyZUlu
c3BlY3RvckFnZW50KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxK
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4oY29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CiAKICAg
ICBlbnN1cmVEZWJ1Z2dlckFnZW50KCk7CiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRl
eHQpOworICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CiAgICAgbV9jb25zb2xlQ2xpZW50LT5z
ZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0
KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIp
KTsKIAotICAgIGF1dG8gaGVhcEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIZWFw
QWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8gaGVhcEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3JIZWFwQWdlbnQ+KGNvbnRleHQpOwogICAgIGlmIChtX2NvbnNvbGVBZ2VudCkKICAgICAgICAg
bV9jb25zb2xlQWdlbnQtPnNldEluc3BlY3RvckhlYXBBZ2VudChoZWFwQWdlbnQuZ2V0KCkpOwog
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGhlYXBBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFn
ZW50Pihjb250ZXh0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwCmluZGV4IGMwYjVjOWFhZDE4YzA4Y2VkZGMzNjk2NmJmMDQ2ODUxNDE3NjI2NDMuLjQx
N2U3NzVmYjgwMjQ5YzA0MDMxMzdhODI3ODIxMzczMjdkMzMyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBJbnNwZWN0b3JBZ2Vu
dDo6SW5zcGVjdG9yQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJJbnNwZWN0b3IiX3MpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52
aXJvbm1lbnQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA3
ZWRiYzgwNjYwZjM2ZDZhODFhYTkxZmI4ZmEzZmRkZGVkYWU2ZjI2Li41ZDI0YzY5ZTZiZjQ1ZDcy
ZmIwYmRhNTNiNGM0NTc1OTg2MTNjYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2Fn
ZXNTdGVwID0gMTA7CiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNvbnNv
bGUiX3MpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2Ny
aXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8
Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihD
b25zb2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKSkKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6c3RhcnRUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQg
YW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5n
IHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgYWxyZWFkeSBleGlz
dHMiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zv
ckNvbnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENh
bGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICB9CiB9CiAKQEAgLTE1OSwxNCArMTU5
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpsb2dUaW1pbmcoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5k
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9y
IGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1l
ciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdh
cm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92
ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNU
aW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9u
aWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobGFiZWwsICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxp
c2Vjb25kcygpLCAzKSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFr
ZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2Fn
ZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShhcmd1
bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZWwpCkBAIC0xODQsMTQgKzE4NCwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3Rv
cFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAgIGlm
IChpdCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0g
dG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5n
ID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0g
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25k
cyBlbGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
V2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVz
c2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxT
dGFjaykpKTsKIAogICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIH0KQEAgLTIyNCw3ICsyMjQsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgbGFiZWwpCiAgICAgLy8gRklYTUU6IFdlYiBJbnNwZWN0b3Igc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgVUkgZm9yIGNvdW50ZXJzLCBidXQgZm9yIG5vdyB3ZSBqdXN0IGxvZyBh
biB1cGRhdGVkIGNvdW50ZXIgdmFsdWUuCiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobGFiZWwsICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbAogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkgewogICAgICAgICAvLyBGSVhN
RTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAg
ICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIkNvdW50ZXIgXCIiLCBsYWJlbCwgIlwiIGRv
ZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
bWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZTVmMjQ4MmEzY2FhMDhh
YTgxNjQ1ZmE4Yzc5YzUyOWJhNDM4MGQwYS4uMjVmMWQzZTcyODFjNmIwZmI4MzMwZmYxMzc4NzM2
NDNlYmM2MGVkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oY29u
c3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW8KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIkRlYnVnZ2VyIl9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZl
cihjb250ZXh0LmVudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwCmluZGV4IGI1MzVmZjYxOTJhYWNlZmM3OWI0ZjZjZDkzZGYxMjAxYTM3
MTQ4YWMuLjU4MmMzNWQzNjdkZmUxZTRmN2RjNGU5YTU2ODRkY2EyYTRlM2I0YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIEluc3BlY3RvckhlYXBBZ2VudDo6SW5zcGVjdG9ySGVhcEFnZW50KEFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSGVhcCJfcykKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEhlYXBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZpcm9ubWVu
dChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAppbmRleCA1NmZjMWI3OThkYTBlZWVlYTAyMzMxZWQ1MjU0YTk1MDIxMDA1
ODc0Li5jYmFkODFkNjk5NDQwYTczM2IwYWYwNDE2OTRhODZjYTllNmU4ZWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6SW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIlNjcmlwdFByb2ZpbGVyIl9zKQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoU2NyaXB0UHJvZmlsZXJCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwCmluZGV4IDNhY2E0MTA1MTBmZTUwMGYwNWJmYmFhYzQ2N2ZmZGFjY2Iy
MWM1MjQuLjkzNTA2OGM3YWUxMTk3MTA1NDRjMWY3Njc5ODIyZGZiNjZlNTZiODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdl
dEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIEluc3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9u
dGVuZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlz
cGF0Y2hlcikKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGFyZ2V0Il9zKQotICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5jcHAKaW5kZXggZTMyOWEzYjQzY2Q2MDk2NWQ5Zjc3ODVhNDgyMjAxMWFiMzY2ZmE1My4u
OWIzZjM3OWQ1ZTVhNDkwZGJlMzc1YzcyYWM5OWZhNzIwYjlhY2NlZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVk
U2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KEVycm9yU3RyaW5nJiBlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpicmVh
a3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZz
dGF0ZSksIDApKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3Rh
dGUpLCAwKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IDE0NWQwNTE2YjhlMzk2ODg3OGQ5MmNiNTk0
YWE1OTliYWZhMzlkMzIuLjNiN2MzZTIxZDMxYzFjMmY1YjZkMWJhMGMxNmY0ODg4M2U2Y2YzMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChKU0FnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9nbG9iYWxPYmplY3QoY29u
dGV4dC5pbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCA3MTAxNjY4YTk3Yzg3NDQ4
MTJmNDY1NmYxNmUwYjdkZDU5NGYxYTYwLi5jYzk2NDAwNTY3OWRiZmNkNGZlMDI5MDZiYzkzYzIz
YjJjODJlY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludC5jcHAKQEAgLTE0NCwxMSArMTQ0LDExIEBAIE9wdGlvbmFsPENvbm5lY3Rp
b25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9y
bVNvY2tlCiAKICAgICBTb2NrZXQ6OnNldHVwKHNvY2tldCk7CiAKLSAgICBhdXRvIGNvbm5lY3Rp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKKyAgICBhdXRvIGNv
bm5lY3Rpb24gPSBtYWtlVW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKIAogICAgIGNvbm5l
Y3Rpb24tPnBvbGwgPSBTb2NrZXQ6OnByZXBhcmVQb2xsaW5nKHNvY2tldCk7CiAgICAgY29ubmVj
dGlvbi0+c29ja2V0ID0gc29ja2V0OwotICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVzc2FnZVBhcnNlcj4oaWQsIFNvY2tldDo6QnVmZmVyU2l6ZSk7CisgICAgY29u
bmVjdGlvbi0+cGFyc2VyID0gbWFrZVVuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpC
dWZmZXJTaXplKTsKICAgICBjb25uZWN0aW9uLT5wYXJzZXItPnNldERpZFBhcnNlTWVzc2FnZUxp
c3RlbmVyKFt0aGlzXShDb25uZWN0aW9uSUQgaWQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsK
ICAgICAgICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KQogICAgICAgICAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JFdmVudChpZCwgV1RGTW92ZShkYXRhKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCmlu
ZGV4IDcwZjJkN2E0ODEzNDcwZjgxMzczMmIzYjk3N2I1YjczYTQxOTYwYjUuLjMyMDQwMGZkNWIz
Y2RiMmM0YjE1ZGJkYzkzMDQ2YmJmZDAwY2FkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50PiBjcmVhdGUoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCogaW5zcGVjdG9yQ2xp
ZW50LCBjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFt
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50PihpbnNwZWN0b3JDbGllbnQsIG5hbWUpOwogICAgIH0KIAogICAgIFJlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50KFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQqLCBjb25zdCBj
aGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMu
cHkKaW5kZXggNjZmOWZkMmRjNDcwZDIxZjRkZTU3ZGU4MjhjMTU5NDQ1NjcxMjNiYi4uZmE1MDZh
NjFlOTliMzlhODc0NmUwY2U1YmUwZDZhYmMwYjBhNGU5NCAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVt
cGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM4LDggKzEzOCw4IEBAIGNs
YXNzIE9iakNHZW5lcmF0b3JUZW1wbGF0ZXM6CiAgICAgW18ke3ZhcmlhYmxlTmFtZVByZWZpeH1I
YW5kbGVyIHJlbGVhc2VdOwogICAgIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyID0gW2hh
bmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRl
cm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBt
YWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7
ZG9tYWluTmFtZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVB
Z2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3Jt
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dAppbmRleCA4ODQyYzllYjY5NzU2Y2U2MTQ3ZWM0YzJkOTdiZjcyYzdmMzUyMjNhLi5lMDcyZmFi
MjIxMjljYWY2NGEyMmY2NGVmMzRlMWUwOGFmYTcyODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRp
b25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTc3MSw4ICs3NzEsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25l
dHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250
cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwg
V1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4
dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGE3MTRmYjEzMTgzMjkz
ZDE4MzJmYzU4MWU2YzUzMzc4NjgwMmQ1NzIuLmMwZTE3MzM3ZmQ0YTc5ODgzMGU4NWQyOWU4NWQ4
ZWQzMDIwY2E3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb24tcmVzdWx0CkBAIC0xMTg5LDggKzExODksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9kYXRhYmFzZUhhbmRs
ZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
PihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdU
Rk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRy
YUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CmluZGV4IDUzYmQ1NTNiN2JhNzRkZGQyOWUyNTUxY2MwYjg0ZmE0MzA3MTRjYWUu
LmFlZDA3Yjc1ZThiODg4ZGQ1OTMzOTBhZmEyMWQyYzg5MGRkZmM1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEwNjgsOCArMTA2OCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RhdGFiYXNl
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBB
bHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVy
bmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxl
ciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWls
YWJpbGl0eS5qc29uLXJlc3VsdAppbmRleCA2NzhjNmFhYTg1YWNhMzg0MjQ4Yjk5MjkwMzRjY2Yw
OTQxMThkZWU3Li4xYWRjYmQzZmQyYWNiOWNhMTQ2MWMzMDhlNDVjNDkyZWMzZTAzMjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKQEAgLTc4Miw4ICs3ODIsOCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZG9tYWluQUhhbmRsZXIgcmVsZWFzZV07CiAg
ICAgX2RvbWFpbkFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5BQmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkEiX3MsICpfY29udHJv
bGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFw
cGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC04MDAsOCAr
ODAwLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkJIYW5kbGVy
IHJlbGVhc2VdOwogICAgIF9kb21haW5CSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0
b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRl
QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFp
bkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPj4o
IkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9y
RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5CQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5C
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKaW5kZXggZjZjNWVkY2NiOTI4NWFmNDhjNmRlYjk4NDIyYTcyMzZiODcwMmQ0ZS4u
YTNlMjdkZjM4Y2VhZmJiM2M0NTFlMTNiNjExOWUyZTU0YzNkMmE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0x
MDM5LDggKzEwMzksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29y
azFIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRh
aW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVl
PE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0
ZXJuYXRlQWdlbnQpKTsKIH0KIApAQCAtMTA1Nyw4ICsxMDU3LDggQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBbX25ldHdvcmszSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29y
azNIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazMiX3MsICpfY29u
dHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0
ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9s
bGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBw
ZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1y
ZXN1bHQKaW5kZXggZWMwYzEwYjRkYjQ2YjNiYzA4Mzg2ZmZiNzNjZmZmOTkwODZiZjA2NC4uYWJm
YjZlMTUzNzM2ZTdkNDZiY2RiMGNiZjM1NzliM2ViZDA5YzVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1
bHQKQEAgLTgxNSw4ICs4MTUsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
Y29tbWFuZERvbWFpbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2NvbW1hbmREb21haW5IYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hl
cj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFp
biJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
Pj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRl
cm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggMzBlODJjNWExNzY2MjhjZWJiZGJi
MGZjNDEwZWU5NmM4YTQ4ZGM0OS4uNmJkZWZmMTg3OTdjMTY5NWE4MWZiMTU2NDA2ZGUzOWM5Zjg4
MTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3Vh
cmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdApAQCAtNzk4LDggKzc5OCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmsx
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBB
bHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVy
bmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxl
ciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9u
cy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCA4ODQyYzllYjY5NzU2Y2U2MTQ3
ZWM0YzJkOTdiZjcyYzdmMzUyMjNhLi5lMDcyZmFiMjIxMjljYWY2NGEyMmY2NGVmMzRlMWUwOGFm
YTcyODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQK
QEAgLTc3MSw4ICs3NzEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0
d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0
YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERp
c3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURp
c3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9i
akNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8g
YWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVy
Pj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVB
Z2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggODM0MmU1ZmM1ZWZj
YTI4NDlkZmQxMmRiN2FhNGFiNDk4MmI2MWZlOC4uZWY5MDY2OTQzMGJiMTI2ZTY4OWJiYzdiZmZh
OWJiMGY1NDQ3MzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNjU0LDcgKzY1
NCw3IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0KQogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wRGlzYXNz
ZW1ibHkoKSB8fCAobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIE9wdGlvbnM6OmRpc2Fz
c2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKSkpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29kZUJsb2NrKTsKKyAgICAgICAg
bV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2sp
OwogICAgIGlmIChVTkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7CiAgICAg
ICAgIG1fY29tcGlsYXRpb24gPSBhZG9wdFJlZigKICAgICAgICAgICAgIG5ldyBQcm9maWxlcjo6
Q29tcGlsYXRpb24oCkBAIC05MDEsNyArOTAxLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjps
aW5rKCkKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVp
bGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChz
dGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmln
aW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBD
VG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9w
Y1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOwogICAgIAogICAgIENvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hC
dWZmZXIsIEpTRW50cnlQdHJUYWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAKaW5kZXggMTZiZjcwZDgwMTc0NDIzMDUwMmEyZDhiMTk3Y2Q0MDFjODAyNGYzOC4uNWJkZjgz
MDQ2NTA0Mzk5NGUxMWJhZmZlZDUyYmI3ODVjMWJhMGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IEpJVFRodW5rczo6SklUVGh1bmtzKCkKLSAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChzdGQ6
Om1ha2VfdW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCisgICAgOiBtX2hvc3RGdW5jdGlv
blN0dWJNYXAobWFrZVVuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMzg4ZmIwZTYyNzA4YjM0ZWNiOTcx
ZTk0NmI0NmIxOTNjNGNhZTNiLi44ZjlhODY0ZTRmZTg2MjZhMWZlZmMwYzMwN2M5ZTQ2NTY2MmY1
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwOTIsNyArMTA5
Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
bEZyYW1lU2h1ZmZsZXI+IGZyYW1lU2h1ZmZsZXI7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5mcmFt
ZVNodWZmbGVEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxs
KCkpOwotICAgICAgICBmcmFtZVNodWZmbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRnJhbWVT
aHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOworICAg
ICAgICBmcmFtZVNodWZmbGVyID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1Ykpp
dCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgICAgIC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGNh
bGxlZSBpcyBhIGNlbGwsIGFuZCB3ZSBjYW4KICAgICAgICAgLy8gdXNlIHRoZSBhZGRpdGlvbmFs
IHJlZ2lzdGVyIHRoaXMgYnV5cyB1cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzY4MTdlMDQ1
ZjU2N2U5ZWQzYTBlNTk1N2QyNWU2Mzc5ODU2NWZhZS4uNWFiMDBlZjdmZTU5MzFmNzQ2MjRmZTdj
MWYxYjBhYzQ2NzFjMDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI5NjksNyArMjk2OSw3
IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIs
IGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAg
ICAgICAgIGlmIChvcHRpb25zLm1fcHJvZmlsZSAmJiAhdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVy
KQotICAgICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZtKTsKKyAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQ
cm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CiAKICAgICAgICAg
Z2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1bWVudHMpOwogICAgICAg
ICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQob3B0aW9ucy5tX2VuYWJs
ZVJlbW90ZURlYnVnZ2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggZjhkYmU3MTk2ZjExMTcxNmQwYTU4ZjdmNTdlM2Y4ZjY3YjdhMmFjZi4uYTE2NGZkOTAz
ZjM2ZTk0MjBhNzM2NGVmNDI3YzZjMmZmZTMyMmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUKICAgICAsIG1faW1tZWRpYXRlUGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkluU3Rh
dGVtZW50KGZhbHNlKQogICAgICwgbV9kZWJ1Z2dlclBhcnNlRGF0YShkZWJ1Z2dlclBhcnNlRGF0
YSkKIHsKLSAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWls
dGluTW9kZSwgc2NyaXB0TW9kZSk7CisgICAgbV9sZXhlciA9IG1ha2VVbmlxdWU8TGV4ZXJUeXBl
Pih2bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291
cmNlLCAmbV9wYXJzZXJBcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24uc3Rh
cnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IDY5YWEwYmMxOTBhZjY3ODNkODkyOGMzNTlhYTNiMTBiYjFmYmQ4NzMu
LjBhNWVkZTRiODQyNWNmZDFiMzE3Yzc2YzUxZWE3Mzc4MTc4MGI1MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBTY29wZSB7
CiAgICAgdm9pZCBwdXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFiZWwsIGJvb2wgaXNMb29w
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2xhYmVscykKLSAgICAgICAgICAgIG1fbGFiZWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxMYWJlbFN0YWNrPigpOworICAgICAgICAgICAgbV9sYWJlbHMgPSBt
YWtlVW5pcXVlPExhYmVsU3RhY2s+KCk7CiAgICAgICAgIG1fbGFiZWxzLT5hcHBlbmQoU2NvcGVM
YWJlbEluZm8geyBsYWJlbC0+aW1wbCgpLCBpc0xvb3AgfSk7CiAgICAgfQogCkBAIC0xOTQxLDcg
KzE5NDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgICAgICBlbmRMb2NhdGlvbi5s
aW5lU3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAg
ICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNldCgpOwog
ICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVu
ZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAorICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydENvbHVtbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApp
bmRleCBkZjE3YmU1MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNmMzNhN2VlLi40MTAwMDZkOTI3
NTFjZTk2YjkyY2I5NjI1NjM1ZWE3Y2Y3OGVjNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xODAsNyArMTgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIElkZW50aWZpZXJBcmVuYSYgaWRlbnRpZmllckFyZW5hKCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZICghbV9pZGVudGlmaWVyQXJlbmEpKQotICAgICAgICAg
ICAgICAgIG1faWRlbnRpZmllckFyZW5hID0gc3RkOjptYWtlX3VuaXF1ZTxJZGVudGlmaWVyQXJl
bmE+KCk7CisgICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBtYWtlVW5pcXVlPElk
ZW50aWZpZXJBcmVuYT4oKTsKICAgICAgICAgICAgIHJldHVybiAqbV9pZGVudGlmaWVyQXJlbmE7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCmluZGV4IDA1MDMyYjVkMTMxMDhjMGViNjIwZTlkYWU4
MjBjZWY3YWM3NTMxOGMuLjM1NzExYjVmYTY0MjY5ZTY3NzRhYjcwZTIxZGQ1MDI1MTY5YzhlYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBp
bGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJD
b21waWxhdGlvbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0aW9uQ291bnRlciogQ29tcGls
YXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IoY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpbikKIHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhlY3V0aW9uQ291bnRlcj4mIGNvdW50ZXIgPSBtX2NvdW50
ZXJzLmFkZChvcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvdW50
ZXIpCi0gICAgICAgIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+
KCk7CisgICAgICAgIGNvdW50ZXIgPSBtYWtlVW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+KCk7CiAK
ICAgICByZXR1cm4gY291bnRlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAppbmRleCA3MGM3MTQ3MzMyNDQ0MDgwNzg3OTM0MDE5ODY2NzNjOTdlMWVhODNk
Li5hNjRkZTNmZGQ2NjI1NTE4YWM1ZDEyNmNlYWM3OGI2ZjIxMjVhNGZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gZ2V0U3RhY2tUcmFjZShFeGVjU3RhdGUqIGV4ZWMs
IFZNJiB2bSwgSlNPYmoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzaXplX3QgZnJh
bWVzVG9Ta2lwID0gdXNlQ3VycmVudEZyYW1lID8gMCA6IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0YWNrRnJhbWU+PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+
IHN0YWNrVHJhY2UgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKICAgICB2bS5p
bnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShvYmosICpzdGFja1RyYWNlLCBmcmFtZXNUb1NraXAs
IGdsb2JhbE9iamVjdC0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWUoKSk7CiAgICAgaWYgKCFzdGFj
a1RyYWNlLT5pc0VtcHR5KCkpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYyA9PSB2
bS50b3BDYWxsRnJhbWUgfHwgZXhlYy0+aXNHbG9iYWxFeGVjKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNDM5
ZTIwOWIwYTVmOGZiODI5Yjc5MTk3NTc0ODhjNDE1NjM0MjczZi4uZWYyZTgzMDg3NDFiODg1MmU1
NjIzMjZmOTYyNTdjOWQwMjkzNWQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJl
RGF0YVNsb3coKQogewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgYXV0byByYXJlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgYXV0byByYXJlRGF0YSA9IG1h
a2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmFyZURhdGEtPm1fbGluZUNvdW50ID0gbGluZUNv
dW50KCk7CiAgICAgcmFyZURhdGEtPm1fZW5kQ29sdW1uID0gZW5kQ29sdW1uKCk7CiAgICAgcmFy
ZURhdGEtPm1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgK
aW5kZXggNDYyMzY0MWM1OThlM2ViYjVmYmE2YmMwMjM3MjY0ZTUwNTJmZDE3OS4uNTJiMjhiMTNj
N2UyZTI1ZDIxYmJiYWIzYWQzMWQ1YjZiYzBjZGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGNs
YXNzIEZ1bmN0aW9uUmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50
IGZpbmFsIDogcHVibGljIFdhdGNoCiBpbmxpbmUgV2F0Y2hwb2ludCogRnVuY3Rpb25SYXJlRGF0
YTo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKCFoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKTsK
LSAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CisgICAgbV9h
bGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8QWxsb2NhdGlv
blByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+KHRoaXMpOwogICAgIHJldHVybiBtX2FsbG9jYXRp
b25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMWE1N2VmM2RjZmU5
MTllNzBiMzdmYTdlMzQ4NTRhMTNlOTA1M2ZhZS4uY2M4Nzc2N2YxMDhiY2M0ODNiMzE1ZjExMmZh
OWM1MzQ3ZjUyMDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmluaXQoVk0mIHZtKQogICAgIG1fZGVidWdnZXIgPSAwOwogCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwotICAg
IG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlPigqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CiAgICAg
bV9jb25zb2xlQ2xpZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xlQ2xpZW50KCk7
CiAjZW5kaWYKQEAgLTExNDUsNTcgKzExNDUsNTcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IG1h
a2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2
bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fYXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1f
YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAg
ICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0p
OwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0b3JQcm90b3R5cGUsIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQo
bV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wp
OwotICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQ
cm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc2V0SXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAg
IHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFw
dGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQobV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKLSAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlw
ZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCht
X3N0cmluZ1Byb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCk7Ci0gICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJv
bEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hw
b2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwotICAg
ICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90
eXBlU2V0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBT
ZXRXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0
YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgp
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRX
YXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOwogICAgICAgICBt
X3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIApAQCAtMTIw
Niw3ICsxMjA2LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgdGhpcy0+c3lt
Ym9sUHJvdG90eXBlKCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCBtX3ZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVy
VG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwogICAgIH0KQEAgLTE5MzIsMTAg
KzE5MzIsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dh
dGNocG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3Bl
Y2llc1dhdGNocG9pbnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAgbV9hcnJheVNwZWNpZXNXYXRj
aHBvaW50LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKTsKIAot
ICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBv
aW50KTsKKyAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hw
b2ludCk7CiAgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0
Y2hwb2ludCk7CisgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQgPSBtYWtl
VW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9p
bnQpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggMDQ3YzE2NjUzZTcxYjFhODA2YmQ5ZmM3ZDU2NjQzYTVmOTg4ZjExZS4uODQ1MzVj
YTVjNjAwY2VjYmQ4YjQ3OGY2NWI1M2NkMDdlMzZhODM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01MjEsNyArNTIxLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgewogICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4o
KTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0
YT4oKTsKICAgICB9CiAgICAgICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDFhZjAwMzY1M2NiOGMzZGU2NDNm
OGM0OTEyN2FiYjNlNTUxM2Q1YWQuLjMyN2ZlZDA2YzY3YTViZjExMjUxZjlmNGRlZDgzOWU3MDMz
YzhhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9v
cFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BU
aW1lci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6
UGVyVk1EYXRhOjpzZXRSdW5Mb29wKE1hbmFnZXIqIG1hbmFnZXIsIENGUnVuTG9vcFIKICNlbHNl
CiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdlciYg
bWFuYWdlcikKICAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKLSAgICAsIHRpbWVy
KHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFu
YWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCisg
ICAgLCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PigqcnVuTG9vcCwg
Jm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2sp
KQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGltZXItPnNldFByaW9yaXR5KFJ1
bkxvb3BTb3VyY2VQcmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsKQEAgLTE3Miw3ICsxNzIsNyBA
QCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlciYgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNoYXJl
ZCgpCiAKIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVyVk0oVk0mIHZtKQog
ewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVyVk1EYXRhPigqdGhpcyk7Cisg
ICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKICNpZiBVU0UoQ0Yp
CiAgICAgZGF0YS0+c2V0UnVuTG9vcCh0aGlzLCB2bS5ydW5Mb29wKCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAppbmRleCA1ZjA3OGQyYTUwOWQyYjQ0MjAwZjdhNGFmMzg4MTI0NmNiMmQ1OGE3Li41MjkwMjBk
ZjBmMWRjMmEyODZmODAwYWJhZDlkN2ViN2QzZjhlZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTQ0OCw3ICs0
NDgsNyBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9m
ZnNldCgpCiBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAg
IG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNl
dD4+KCk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4+KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAK
aW5kZXggNTllYzQxYzQ5YWU4MmY0N2Y2OTg2ODA2ZGQ2MTQzOTQ0YTQyYjVkNi4uYjFiYjY3OTE5
OTI2NWFmY2JjY2M4MzY1NmQ4ZDU2ZmM1YjRhMzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUHJvcGVy
dHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVy
KQogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQ
cm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZz
ZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0
ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3Ro
ZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVl
PFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogUHJv
cGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0
eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCkBAIC0xMDcsNyArMTA3LDcgQEAgUHJvcGVy
dHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwg
Y29uc3QgUHJvcGVydHlUYWIKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rv
ci4KICAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3Ro
ZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykK
LSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CiB9CiAKIHZvaWQgUHJvcGVydHlUYWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCAwNzFiMWY2NjMxNWNl
M2FlOGRjZmUxNzVmZjYzNjZmNWM2MzJhZmZjLi43MGU1OTNkNTNlYmRkODFkOGMwODEzYTI5Nzcw
ZTk0MGNlMDQxMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAK
QEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
CiAgICAgbV9udW1TdWJwYXR0ZXJucyA9IHBhdHRlcm4ubV9udW1TdWJwYXR0ZXJuczsKICAgICBp
ZiAoIXBhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcy5pc0VtcHR5KCkgfHwgIXBhdHRlcm4ubV9u
YW1lZEdyb3VwVG9QYXJlbkluZGV4LmlzRW1wdHkoKSkgewotICAgICAgICBtX3JhcmVEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VV
bmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fY2FwdHVyZUdyb3VwTmFt
ZXMuc3dhcChwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMpOwogICAgICAgICBtX3JhcmVEYXRh
LT5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguc3dhcChwYXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFy
ZW5JbmRleCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRl
eCAzOWNkZDkxMTZlMDI3ZTNkYjYwNDBkYmQ4ZmU1MjcwZDJlOTk1ZDhkLi5lOGRhODUyNmU3Yzdl
ODFmYmVhNzVjODg5ODgxNjFiOWFmODkxNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaApAQCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGVuc3VyZVJlZ0V4cEpJVENvZGUo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUpCi0gICAgICAgICAgICBtX3Jl
Z0V4cEpJVENvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7Cisg
ICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUgPSBtYWtlVW5pcXVlPFlhcnI6OllhcnJDb2RlQmxv
Y2s+KCk7CiAgICAgICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2RlLmdldCgpOwogICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmNwcAppbmRleCAyMzdkN2RlNjg4ZGQyMDc2NTAyMDEyMTZjZDBkNTQ2ODBjNDk2ZWFhLi5l
ZTZlMThjZWZkYmU3OWY0YmMyZWIyMTk3ZmY1MzkxMDRlMWY3OTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtNDY5LDcg
KzQ2OSw3IEBAIGF1dG8gU2NyaXB0RXhlY3V0YWJsZTo6ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXBJ
bXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjCiB7CiAgICAgaWYgKGRlc3QpCiAgICAg
ICAgIHJldHVybiAqZGVzdDsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVt
cGxhdGVPYmplY3RNYXA+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFRlbXBsYXRl
T2JqZWN0TWFwPigpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgZGVzdCA9IFdU
Rk1vdmUocmVzdWx0KTsKICAgICByZXR1cm4gKmRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAyOTNjNDY0NzJlNzQ4OTQxY2E5Y2MyYWRhYzE2
YTNkMmRjNWRlZWVjLi4wMWNkMmJkNTQ3ZmUwMmI1MDQ3YTZkNDViM2M4YWQ2ZmQ1MmJkYjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTg1Niw3
ICs4NTYsNyBAQCBXYXRjaHBvaW50U2V0KiBTdHJ1Y3R1cmU6OmVuc3VyZVByb3BlcnR5UmVwbGFj
ZW1lbnRXYXRjaHBvaW50U2V0KFZNJiB2bSwgUHJvcGVydAogICAgIFN0cnVjdHVyZVJhcmVEYXRh
KiByYXJlRGF0YSA9IHRoaXMtPnJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS0+bV9yZXBs
YWNlbWVudFdhdGNocG9pbnRTZXRzKSB7CiAgICAgICAgIHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50
V2F0Y2hwb2ludFNldHMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxTdHJ1Y3R1cmVS
YXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOworICAgICAgICAgICAgbWFrZVVuaXF1
ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOwogICAgICAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IHJhcmVEYXRh
LT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMtPmFkZChvZmZzZXQsIG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
CmluZGV4IDk5YThkOWY3ZGFhYzIxN2U0YzgxZTdlNzEyNmU5YzAyYjM3NGVkM2YuLmQzY2YxODNi
MGY2ZDdjNDg5ODgwMGFiNjhlZTQ4Y2QxMjhmN2ZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAgLTE0MCw3ICsxNDAs
NyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cgogICAgIEFTU0VSVChjb25kaXRpb25TZXQuc3Ry
dWN0dXJlc0Vuc3VyZVZhbGlkaXR5KCkpOwogICAgIGZvciAoT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uIDogY29uZGl0aW9uU2V0KSB7CiAgICAgICAgIGlmIChjb25kaXRpb24uY29u
ZGl0aW9uKCkua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZSkgewotICAgICAg
ICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CisgICAgICAgICAgICBtX29iamVj
dFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2Jq
ZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2
Q29uZGl0aW9uLCB0aGlzKTsKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUlu
ZmVycmVkVmFsdWVXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0LmFkZChjb25kaXRp
b24sIHRoaXMpLT5pbnN0YWxsKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcAppbmRleCAzOTJmMjE3YzE0ZWZhZWI1NDViZjBkNGY3NzkwYzExMjc5
MzJiYzg1Li5hNGE4NzBmYzFmY2FkMzVjNDM5NWYxMDliMjJhOTljNDIwZDc0MTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xMTgsNyAr
MTE4LDcgQEAgY29uc3QgU3ltYm9sVGFibGU6OkxvY2FsVG9FbnRyeVZlYyYgU3ltYm9sVGFibGU6
OmxvY2FsVG9FbnRyeShjb25zdCBDb25jdXJyZW50SlMKICAgICAgICAgICAgICAgICBzaXplID0g
c3RkOjptYXgoc2l6ZSwgb2Zmc2V0LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgKyAxKTsKICAgICAg
ICAgfQogICAgIAotICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9j
YWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsKKyAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBt
YWtlVW5pcXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CiAgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX21hcCkgewogICAgICAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVu
dHJ5LnZhbHVlLnZhck9mZnNldCgpOwogICAgICAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkp
CkBAIC0xNTksNyArMTU5LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3Bl
UGFydChWTSYgdm0pCiAgICAgICAgIHJlc3VsdC0+bV9hcmd1bWVudHMuc2V0KHZtLCByZXN1bHQs
IGFyZ3VtZW50cyk7CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEpIHsKLSAgICAgICAgcmVzdWx0
LT5tX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwor
ICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURh
dGE+KCk7CiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpdGVyID0gbV9yYXJlRGF0YS0+
bV91bmlxdWVJRE1hcC5iZWdpbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgU3ltYm9sVGFi
bGU6OnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiAg
ICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmFyZURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIGZvciAoYXV0byBpdGVy
ID0gbV9tYXAuYmVnaW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKICAgICAgICAgbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoaXRlci0+a2V5LCBUeXBl
UHJvZmlsZXJOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7CkBAIC0yMTAsNyArMjEwLDcgQEAgQ29k
ZUJsb2NrKiBTeW1ib2xUYWJsZTo6cmFyZURhdGFDb2RlQmxvY2soKQogdm9pZCBTeW1ib2xUYWJs
ZTo6c2V0UmFyZURhdGFDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgaWYg
KCFtX3JhcmVEYXRhKQotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1i
b2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1i
b2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX2NvZGVCbG9j
ayk7CiAgICAgbV9yYXJlRGF0YS0+bV9jb2RlQmxvY2suc2V0KCpjb2RlQmxvY2stPnZtKCksIHRo
aXMsIGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
CmluZGV4IDQxMGViNmQ1YWUxNmYzNjAyMjZkYjM4MjNmN2VlODI4ZWNjYWIzODMuLjQxYWNhOWQz
ZDRkOWI4YTU2YWU2ODUyMzBlOGQ2Njc1MmFjMGQwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIFN0cnVjdHVy
ZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb3RvLT5w
cm9wZXJ0eUhhc2goKSk7CiAgICAgfQogCi0gICAgbV9wcm9wZXJ0eUhhc2ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsKKyAgICBtX3Byb3BlcnR5SGFzaCA9
IG1ha2VVbmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiAqbV9w
cm9wZXJ0eUhhc2g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0
ZTJkMGQzMjRhMjRlMjMyY2QxOTUzODkyZWQ4YjBhMzNiMGIwNWVlLi5iNzA5MmMwOGVmNzJiMGVj
YTg5ZmYwYjVjNGJlMWFlNTlhYTFkYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC0yNTIsMTggKzI1MiwxOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQogI2VuZGlm
IC8vIFVTRShDRikKICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCi0gICAgLCBmYXN0TWFsbG9j
QWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3I+KCkpCi0gICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVl
PEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCi0g
ICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFy
eUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0
ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQotICAgICwg
aW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxU
eXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlND
ZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUoc3RkOjpt
YWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1
Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlw
ZShzdGQ6Om1ha2VfdW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQotICAgICwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlx
dWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVH
aWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Io
bWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1Zh
bHVlKSkKKyAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlw
ZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGls
aWFyeSkpKQorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKKyAgICAsIGNlbGxIZWFwQ2VsbFR5
cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZSht
YWtlVW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQorICAgICwgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGU+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxv
Y2tIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVh
cENlbGxUeXBlPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShzdGQ6
Om1ha2VfdW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3
ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlKG1ha2VVbmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkKICNl
bmRpZgogICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJp
bWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgogICAgICwg
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5
IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxv
Y2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2CkBAIC0yOTYsNyArMjk2LDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9hdG9tU3RyaW5nVGFi
bGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUo
KSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAg
ICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCi0gICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0
ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVTdGF0cz4oKSkK
KyAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChtYWtl
VW5pcXVlPFNpbXBsZVN0YXRzPigpKQogICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25N
YXAoKnRoaXMpCiAgICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKICAgICAsIHN5bWJvbEltcGxUb1N5
bWJvbE1hcCgqdGhpcykKQEAgLTMxMiw4ICszMTIsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luaXRpYWxpemluZ09iamVjdENsYXNzKDApCiAj
ZW5kaWYKICAgICAsIG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KDApCi0gICAgLCBtX2NvZGVDYWNo
ZShzdGQ6Om1ha2VfdW5pcXVlPENvZGVDYWNoZT4oKSkKLSAgICAsIG1fYnVpbHRpbkV4ZWN1dGFi
bGVzKHN0ZDo6bWFrZV91bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCisgICAgLCBt
X2NvZGVDYWNoZShtYWtlVW5pcXVlPENvZGVDYWNoZT4oKSkKKyAgICAsIG1fYnVpbHRpbkV4ZWN1
dGFibGVzKG1ha2VVbmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCiAgICAgLCBtX3R5
cGVQcm9maWxlckVuYWJsZWRDb3VudCgwKQogICAgICwgbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJs
ZWQoSXNXYXRjaGVkKQogICAgICwgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50KDAp
CkBAIC00MDcsNyArNDA3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgIExMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7CiAgICAgCiAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZVByb2ZpbGVyKCkpKSB7Ci0gICAgICAgIG1fcGVy
Qnl0ZWNvZGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPigq
dGhpcyk7CisgICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmls
ZXI6OkRhdGFiYXNlPigqdGhpcyk7CiAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gcGF0aE91
dDsKICAgICAgICAgY29uc3QgY2hhciogcHJvZmlsZXJQYXRoID0gZ2V0ZW52KCJKU0NfUFJPRklM
RVJfUEFUSCIpOwpAQCAtNDIzLDcgKzQyMyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlD
b250cm9sbGVyID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOwog
Ci0gICAgbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CisgICAgbV9ieXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CiAK
ICAgICBpZiAoT3B0aW9uczo6dXNlVHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIGVuYWJsZVR5cGVQ
cm9maWxlcigpOwpAQCAtNDQyLDkgKzQ0Miw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKICAg
ICBpZiAoT3B0aW9uczo6dXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRG
dXp6ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPFJhbmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlz
KSk7CisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8UmFuZG9taXppbmdGdXp6ZXJB
Z2VudD4oKnRoaXMpKTsKICAgICBlbHNlIGlmIChPcHRpb25zOjp1c2VEb3VibGVQcmVkaWN0aW9u
RnV6emVyQWdlbnQoKSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxE
b3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAgIHNldEZ1enplckFn
ZW50KG1ha2VVbmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOwogCiAg
ICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAoKSkKICAgICAg
ICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsKQEAgLTQ1Nyw5ICs0NTcs
OSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUgSklUIGlzIGdv
aW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvbXBpbGF0aW9uIHRocmVhZHMuCiAg
ICAgaWYgKGNhblVzZUpJVCgpKSB7Ci0gICAgICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1
ZTxKSVRUaHVua3M+KCk7CisgICAgICAgIGppdFN0dWJzID0gbWFrZVVuaXF1ZTxKSVRUaHVua3M+
KCk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgICAgIGZ0bFRodW5rcyA9IHN0ZDo6bWFrZV91
bmlxdWU8RlRMOjpUaHVua3M+KCk7CisgICAgICAgIGZ0bFRodW5rcyA9IG1ha2VVbmlxdWU8RlRM
OjpUaHVua3M+KCk7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUlu
dGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJ
SW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CkBAIC02MTks
NyArNjE5LDcgQEAgV2F0Y2hkb2cmIFZNOjplbnN1cmVXYXRjaGRvZygpCiBIZWFwUHJvZmlsZXIm
IFZNOjplbnN1cmVIZWFwUHJvZmlsZXIoKQogewogICAgIGlmICghbV9oZWFwUHJvZmlsZXIpCi0g
ICAgICAgIG1faGVhcFByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwUHJvZmlsZXI+KCp0
aGlzKTsKKyAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBtYWtlVW5pcXVlPEhlYXBQcm9maWxlcj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9oZWFwUHJvZmlsZXI7CiB9CiAKQEAgLTEwNDEsOCArMTA0
MSw4IEBAIHN0YXRpYyBib29sIGRpc2FibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCh1bnNp
Z25lZCYgY291bnRlciwgY29uc3QgRnVuYyYgZG9ECiBib29sIFZNOjplbmFibGVUeXBlUHJvZmls
ZXIoKQogewogICAgIGF1dG8gZW5hYmxlVHlwZVByb2ZpbGVyID0gW3RoaXNdICgpIHsKLSAgICAg
ICAgdGhpcy0+bV90eXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlcj4o
KTsKLSAgICAgICAgdGhpcy0+bV90eXBlUHJvZmlsZXJMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5
cGVQcm9maWxlckxvZz4oKnRoaXMpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IG1h
a2VVbmlxdWU8VHlwZVByb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlckxv
ZyA9IG1ha2VVbmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CiAgICAgfTsKIAogICAgIHJl
dHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX3R5cGVQcm9maWxlckVuYWJs
ZWRDb3VudCwgZW5hYmxlVHlwZVByb2ZpbGVyKTsKQEAgLTEwNjEsNyArMTA2MSw3IEBAIGJvb2wg
Vk06OmRpc2FibGVUeXBlUHJvZmlsZXIoKQogYm9vbCBWTTo6ZW5hYmxlQ29udHJvbEZsb3dQcm9m
aWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyID0gW3RoaXNdICgp
IHsKLSAgICAgICAgdGhpcy0+bV9jb250cm9sRmxvd1Byb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93UHJv
ZmlsZXIgPSBtYWtlVW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CiAgICAgfTsKIAogICAg
IHJldHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX2NvbnRyb2xGbG93UHJv
ZmlsZXJFbmFibGVkQ291bnQsIGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpOwpAQCAtMTA4Nyw3
ICsxMDg3LDcgQEAgdm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEoKQogCiB2b2lkIFZNOjpx
dWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNr
PiYmIHRhc2spCiB7Ci0gICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOworICAg
IG1fbWljcm90YXNrUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZn
bG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBWTTo6ZHJhaW5NaWNyb3Rh
c2tzKCkKQEAgLTEyMzAsMTQgKzEyMzAsMTQgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tl
bigpCiB7CiAgICAgaWYgKG1fc2hhZG93Q2hpY2tlbikKICAgICAgICAgcmV0dXJuOwotICAgIG1f
c2hhZG93Q2hpY2tlbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKKyAgICBt
X3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAKICNkZWZp
bmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxs
VHlwZSwgdHlwZSkgXAogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7
IFwKICAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBD
ZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1v
dmUoc3BhY2UpOyBcCiAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXApAQCAtMTI2OCw3
ICsxMjY4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWEKICAgICBJc29TdWJzcGFjZSogVk06
Om5hbWUjI1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0g
ICAgICAgIGF1dG8gc3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3Bh
Y2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFw
Q2VsbFR5cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAg
ICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gJm1fIyNu
YW1lLT5zcGFjZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKaW5kZXggMjRmMThhZDAyZGUyZmVmOTAwOTM0NDg2NDMwYzk4ZmU5NDk0
MjRlZi4uNTMzOTNjYjI1OGY3NDJjNmFjZmRkZWFlYzZjNzE3NTY0NGQ3OTQxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC00
MTcsNyArNDE3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3IgewogICAgIHZvaWQgZW1pdFBhdGNo
cG9pbnQoQmFzaWNCbG9jayogYmFzaWNCbG9jaywgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2gs
IFRtcCByZXN1bHQsIFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgaW5saW5lU2l6ZT4mJiBhcmdzKQog
ICAgIHsKICAgICAgICAgaWYgKCFtX3BhdGNocG9pbnRTcGVjaWFsKQotICAgICAgICAgICAgbV9w
YXRjaHBvaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1f
Y29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigp
KSk7CisgICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBh
dGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hw
b2ludFNwZWNpYWw+KCkpKTsKIAogICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIHBhdGNoLCBBcmc6
OnNwZWNpYWwobV9wYXRjaHBvaW50U3BlY2lhbCkpOwogICAgICAgICBJbnN0IHJlc3VsdE1vdjsK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAKICAgICAgICAgLy8g
RklYTUU6IE1ha2UgYSBoYXNobWFwIG9mIHRoZXNlLgogICAgICAgICBCMzo6Q2hlY2tTcGVjaWFs
OjpLZXkga2V5KGJyYW5jaCk7Ci0gICAgICAgIEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBz
dGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtl
X3VuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CisgICAgICAgIEIzOjpDaGVja1NwZWNp
YWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwobWFrZVVuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CiAKICAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGUgbmVlZCBmb3IgZHVtbXkgdmFsdWVzCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAKQEAgLTIxMzksMTAgKzIx
MzksMTAgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4gQjM6Ok9yaWdpbgogCiBF
eHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VB
bmRDb21waWxlQWlyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25z
dCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlu
a2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5
TW9kZSBtb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBU
aHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250
ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJz
PigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRl
ckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxh
dGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4o
KTsKIAogICAgIEIzOjpQcm9jZWR1cmUgcHJvY2VkdXJlOwogICAgIENvZGUmIGNvZGUgPSBwcm9j
ZWR1cmUuY29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCmluZGV4IDIwOTQxNzdlZDZmMTgzYWI0ZDg2MmVjMjI2N2QzMGYyOGI3ZGU1
YjYuLjE1OGRmOWZhOWYwYzlmNzIxYWMyOTI3NzgxODhkY2YyOGU3MDdmZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE1NTEs
MTAgKzE1NTEsMTAgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBPcmlnaW4KIAog
RXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNl
QW5kQ29tcGlsZShDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29uc3Qg
dWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtl
ZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9yeU1v
ZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rp
b25JbmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2Fz
bUV4Y2VwdGlvbikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJu
YWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5j
dGlvbj4oKTsKIAotICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRl
eHQud2FzbUVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsK
KyAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50
SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBQcm9jZWR1cmUgcHJvY2Vk
dXJlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXgg
Zjk4NWQ1MjNjMmU5M2YzYmQyM2ZiN2M1NzEyYjU4NjhjYzE2YTY4NS4uNTA2ZGY0YmVmZDBkNTY0
MTg0NGNlNTI3OTUxMTVmNjEyODcxNjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxl
dGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1fd2FzbUludGVybmFs
RnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIG1fd2FzbUludGVy
bmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFr
ZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICAgICAgICAgICAgICBGSU5BTElaRV9D
T0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBCQlEgZnVu
Y3Rpb25bJWldICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3Bh
Y2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNw
YWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250
ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwogICAgICAgICAgICAgfQpAQCAtMzI3LDcg
KzMyNyw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+ZW50cnlwb2lu
dC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAg
ICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24tPmVudHJ5cG9pbnQuY29t
cGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAg
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIkVtYmVk
ZGVyLT5XZWJBc3NlbWJseSBlbnRyeXBvaW50WyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRl
eCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhP
ck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlv
bi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAg
ICAgICAgICAgIFdURk1vdmUoY29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5j
cHAKaW5kZXggYzUxM2ZkMmY1MGVkNmZiMTdjMzM4NWVmMjkwNTI3ODE3MzkyMTAzNy4uMGQ3YTAz
YzM2MTI5Y2QxZGUyYzU0ZmZjZDUwMjk1YjU2YzViODk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIE9NR1BsYW46
OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBv
bWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRp
b24+KAorICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21w
aWxhdGlvbj4oCiAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlv
blB0clRhZywgIldlYkFzc2VtYmx5IE9NRyBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIG1fZnVu
Y3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJp
bmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5u
YW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAg
ICAgICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKaW5kZXggMzZkNzRjMTRi
MThjNzA3YjgxMmEwNDg3ZjkxZTI5YzM4NTM5MWRlMi4uNjYwZjk1NjU3MzhiMTBhMzBmM2U3Y2M4
MThhMzJjODU4NzgyMTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVdvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29y
a2xpc3QuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgV29ya2xpc3Q6OldvcmtsaXN0KCkKICAgICBt
X3RocmVhZHMucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzKTsKICAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKLSAgICAgICAgbV90aHJlYWRzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwg
KnRoaXMpKTsKKyAgICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFdv
cmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKIH0KIAogV29ya2xpc3Q6On5Xb3JrbGlz
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggNWRk
NDUxYmVhODRkNTkwYmJmMGZjYjA3NmUyNmZmZDNjYzdiODFhYy4uNzM1MjIwMjg5MzdjNmRhYzFm
YzQ3M2M3ZTRjZGM2NDk1OGNlOGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTVG9XYXNtLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxG
dW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAog
ewogICAgIENDYWxsSGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVu
dHJ5cG9pbnRKSVQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJu
YWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5j
dGlvbj4oKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgIC8vIEZJWE1F
IFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcAppbmRleCA3ZjAzM2ZlYzFjMzY5YTk0MjNiMzNjZjhlYjMzMzRjNTFjZTA4
MDhiLi5jNGI3N2NhZGJlNWVlYTU3M2VjODUyYjk1ZWY2YTc4OWI4Mjg1MzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTE3MDYsNyAr
MTcwNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgICAgICBkdW1wRGlzanVuY3Rp
b24obV9ib2R5RGlzanVuY3Rpb24uZ2V0KCkpOwogI2VuZGlmCiAKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9u
KSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURp
c2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBs
b2NrKTsKICAgICB9CiAKICAgICB2b2lkIGNoZWNrSW5wdXQodW5zaWduZWQgY291bnQpCkBAIC0x
OTI2LDcgKzE5MjYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICB1bnNpZ25lZCBz
dWJwYXR0ZXJuSWQgPSBwYXJlbnRoZXNlc0JlZ2luLmF0b20uc3VicGF0dGVybklkOwogCiAgICAg
ICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gbGFzdFN1YnBhdHRlcm5JZCAtIHN1YnBhdHRl
cm5JZCArIDE7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7
CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURp
c2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAKICAgICAgICAgdW5z
aWduZWQgZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyA9IGJlZ2luVGVybSArIDE7CiAgICAgICAgIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24tPnRlcm1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW5kVGVy
bSAtIGZpcnN0VGVybUluUGFyZW50aGVzZXMgKyAyKTsKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAKICAgICB2b2lkIHJlZ2V4QmVnaW4odW5zaWduZWQgbnVtU3Vi
cGF0dGVybnMsIHVuc2lnbmVkIGNhbGxGcmFtZVNpemUsIGJvb2wgb25jZVRocm91Z2gpCiAgICAg
ewotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZURpc2p1
bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIG1fYm9keURp
c2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBj
YWxsRnJhbWVTaXplKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChC
eXRlVGVybTo6Qm9keUFsdGVybmF0aXZlQmVnaW4ob25jZVRocm91Z2gpKTsKICAgICAgICAgbV9i
b2R5RGlzanVuY3Rpb24tPnRlcm1zWzBdLmZyYW1lTG9jYXRpb24gPSAwOwogICAgICAgICBtX2N1
cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAKaW5kZXggNDEyYzZlNGE2Y2JlYWM4OTMyMWIwYWU3ODBmZGQ3NmEwNjE5YmUyZC4uZjY2
YTgyZTU3NTFhZGRhMzI5ZWRlZWY3MGFkOTI2OWQxMWVkMmI5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTM4OTksNyArMzg5OSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgp
IHx8IE9wdGlvbnM6OmR1bXBSZWdFeHBEaXNhc3NlbWJseSgpKSkKLSAgICAgICAgICAgIG1fZGlz
YXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0aGlzKTsKKyAg
ICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0
aGlzKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBtX2Rpc2Fz
c2VtYmxlci0+c2V0U3RhcnRPZkNvZGUobGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAKaW5kZXggNDlmNzdmNjljNjg1YzY1MjAzZGYzZjAzNGM5MGQx
ODc3YzkyZGM5Yi4uZmNjNTFiMjc3ZjUwMTEwM2I3YzY1YmJkMzNhNWNhNDEwZDgxYzBlZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMjQwLDcgKzI0
MCw3IEBAIGNsYXNzIENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAg
Y29hbGVzY2VUYWJsZXMoKTsKIAotICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICAgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAKICAgICAgICAgY2hhcmFjdGVyQ2xh
c3MtPm1fbWF0Y2hlcy5zd2FwKG1fbWF0Y2hlcyk7CiAgICAgICAgIGNoYXJhY3RlckNsYXNzLT5t
X3Jhbmdlcy5zd2FwKG1fcmFuZ2VzKTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBjbGFzcyBZYXJyUGF0
dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgLCBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3Io
cGF0dGVybi5pZ25vcmVDYXNlKCksIHBhdHRlcm4udW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6
VW5pY29kZSA6IENhbm9uaWNhbE1vZGU6OlVDUzIpCiAgICAgICAgICwgbV9zdGFja0xpbWl0KHN0
YWNrTGltaXQpCiAgICAgewotICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
dHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5ID0gbWFrZVVuaXF1ZTxQYXR0
ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBib2R5LmdldCgp
OwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAg
ICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGJvZHkpKTsKQEAg
LTQ1Niw3ICs0NTYsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAg
bV9wYXR0ZXJuLnJlc2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAgIG1fY2hhcmFjdGVyQ2xhc3ND
b25zdHJ1Y3Rvci5yZXNldCgpOwogCi0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlx
dWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBtYWtlVW5pcXVl
PFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9keSA9IGJvZHku
Z2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRlcm5hdGl2ZSgp
OwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoYm9keSkp
OwpAQCAtNjA4LDcgKzYwOCw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVCghb3B0R3JvdXBOYW1lKTsKIAotICAgICAg
ICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5E
aXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNq
dW5jdGlvbiA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsK
ICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVy
blRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRlcm5JZCwgcGFyZW50aGVz
ZXNEaXNqdW5jdGlvbi5nZXQoKSwgY2FwdHVyZSwgZmFsc2UpKTsKICAgICAgICAgbV9hbHRlcm5h
dGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAg
ICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShwYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uKSk7CkBAIC02MTYsNyArNjE2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciB7CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBp
bnZlcnQgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsK
KyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJu
RGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rl
cm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3Nl
cnRpb24sIG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFyZW50aGVzZXNEaXNqdW5j
dGlvbi5nZXQoKSwgZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9pbnZl
cnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwpAQCAtNzA3LDcgKzcwNyw3IEBAIGNs
YXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0
aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLmdldCgp
OwogICAgICAgICAgICAgaWYgKCFmaWx0ZXJTdGFydHNXaXRoQk9MIHx8ICFhbHRlcm5hdGl2ZS0+
bV9zdGFydHNXaXRoQk9MKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXdEaXNqdW5jdGlvbikg
ewotICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlv
biA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICAgICAgICAgICAg
ICBuZXdEaXNqdW5jdGlvbi0+bV9wYXJlbnQgPSBkaXNqdW5jdGlvbi0+bV9wYXJlbnQ7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbmV3QWx0
ZXJuYXRpdmUgPSBuZXdEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKQEAgLTE0NzMs
NyArMTQ3Myw3IEBAIHZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0ZXJuKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRyPENoYXJh
Y3RlckNsYXNzPiBhbnljaGFyQ3JlYXRlKCkKIHsKLSAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0g
c3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+
bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MDAsIDB4N2YpKTsKICAgICBjaGFyYWN0
ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwODAsIDB4
MTBmZmZmKSk7CiAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fY2hhcmFjdGVyV2lkdGhzID0gQ2hhcmFj
dGVyQ2xhc3NXaWR0aHM6Okhhc0JvdGhCTVBBbmROb25CTVA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCAwYjdkYjJlYmE4YWQ1MmRlZDJiNWY3ZTY3ZTU0NWI4
YzE2Yzk0NWM3Li43ZTgyYzg1NWE4NzhlNmMxODBlZDUyMWYxZjdhZDQ4ZDhjMWZiYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTM0MSw3ICszNDEsNyBA
QCBzdHJ1Y3QgUGF0dGVybkRpc2p1bmN0aW9uIHsKICAgICAKICAgICBQYXR0ZXJuQWx0ZXJuYXRp
dmUqIGFkZE5ld0FsdGVybmF0aXZlKCkKICAgICB7Ci0gICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOworICAgICAg
ICBtX2FsdGVybmF0aXZlcy5hcHBlbmQobWFrZVVuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+KHRo
aXMpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhdHRlcm5BbHRlcm5hdGl2ZSo+KG1f
YWx0ZXJuYXRpdmVzLmxhc3QoKS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwppbmRleCBjMWY5Zjk5ZGUwOTFjZWNiMmUx
ZGI1NWMzOGZhMzYwMzExZWUzN2Y0Li42OWNkODg4NjU3ODU0Y2Q1NDQ1Zjg2M2UyMmQ1NWZmYjlj
NDBlZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVn
ZXhfdGFibGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90
YWJsZXMKQEAgLTk1LDExICs5NSwxMSBAQCBmb3IgbmFtZSwgY2xhc3NlcyBpbiB0eXBlcy5pdGVt
cygpOgogICAgIGZ1bmN0aW9uICs9ICgie1xuIikKICAgICBpZiBlbWl0VGFibGVzIGFuZCBjbGFz
c2VzWyJVc2VUYWJsZSJdOgogICAgICAgICBpZiAiSW52ZXJzZSIgaW4gY2xhc3NlczoKLSAgICAg
ICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52
ZXJzZSJdKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xh
c3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xh
c3Nlc1siSW52ZXJzZSJdKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmN0aW9uICs9
ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNs
YXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQorICAgICAgICAgICAgZnVuY3Rpb24g
Kz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+
KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCiAgICAgZWxzZToKLSAgICAgICAgZnVuY3Rp
b24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFj
dGVyQ2xhc3M+KCk7XG4iKQorICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3Rl
ckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCiAgICAgaGFzQk1QQ2hh
cmFjdGVycyA9IEZhbHNlCiAgICAgaGFzTm9uQk1QQ2hhcmFjdGVycyA9IEZhbHNlCiAgICAgZm9y
IChtaW4sIG1heCkgaW4gcmFuZ2VzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5CmluZGV4
IGY5ZmVmNDY4ZDJiNWRkYTZhYWVlYWIwYjNmYzA1OGNkM2VlY2VhYzEuLjUyNmZiNmU3YWMzYTIy
N2E2ZDQzY2JiZWZkMjcwMmQxYTBjNTRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMu
cHkKQEAgLTUyOSw3ICs1MjksNyBAQCBkZWYgZHVtcE1hdGNoRGF0YShzZWxmLCBmaWxlLCB2YWx1
ZXNQZXJMaW5lLCBkYXRhTGlzdCwgZm9ybWF0dGVyKToKICAgICBkZWYgZHVtcChzZWxmLCBmaWxl
LCBjb21tYUFmdGVyKToKICAgICAgICAgZmlsZS53cml0ZSgic3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDaGFyYWN0ZXJDbGFzcz4ge30oKVxue3tcbiIuZm9ybWF0KHNlbGYuZ2V0Q3JlYXRlRnVuY05h
bWUoKSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAvLyBOYW1lID0ge30sIG51bWJlciBvZiBj
b2RlUG9pbnRzOiB7fVxuIi5mb3JtYXQoc2VsZi5uYW1lLCBzZWxmLmNvZGVQb2ludENvdW50KSkK
LSAgICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPihcbiIpCisgICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRv
IGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQogICAgICAg
ICBmaWxlLndyaXRlKCIgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcjMyPigiKQog
ICAgICAgICBzZWxmLmR1bXBNYXRjaERhdGEoZmlsZSwgOCwgc2VsZi5tYXRjaGVzLCBsYW1iZGEg
ZmlsZSwgbWF0Y2g6IChmaWxlLndyaXRlKCJ7MDowPSM0eH0iLmZvcm1hdChtYXRjaCkpKSkKICAg
ICAgICAgZmlsZS53cml0ZSgiKSxcbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFy
a3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJu
ZXNzVGVzdC5jcHAKaW5kZXggY2M3MDdkZTNmZjRlYzEzOGNmYTQ2YWI0YzhlMTNhYmI2NTkzY2Jh
MS4uOGM5N2MxYTI0MWI3MjlhZjhmMzFmMzU5YzdmNTE3N2E2MzQwOWRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9X
VEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcApAQCAtNjEsOCArNjEsOCBAQCBzdHJ1
Y3QgQmVuY2htYXJrIHsKICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAg
ICB7CiAgICAgICAgIExvY2tUeXBlIGxvY2s7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNp
Z25lZFtdPiBjb3VudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkW10+KG51bVRocmVhZHMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazx1bnNpZ25lZFtdPihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsKICAgICAKICAgICAgICAgdm9s
YXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0cnVlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xv
Y2tTcGVlZFRlc3QuY3BwCmluZGV4IGYxNTY1MGQ0YzljOGZhNjc3MGY4OTEyZjA5ZGZlMzkyOTEz
MDdjMzQuLmJlN2FiYTM5MGViNTNlMzU4MWUzNmY0YThiOTUwMGQwZTI5OWY5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgc3RydWN0
IEJlbmNobWFyayB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiAgICAgc3RhdGlj
IHZvaWQgcnVuKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+IGxvY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxXaXRo
UGFkZGluZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdp
dGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0
cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4obnVt
VGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJs
ZT5bXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGlu
Zzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3Vw
KTsKIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Nv
bmN1cnJlbnRWZWN0b3IuaAppbmRleCAwYjU0MWI4YzczZDBmNTk4NjUxYmY5NWU3NjkzYjgwN2M5
OTlmNzhhLi44ODRlZDczMjMzNzYxYTI5ZmI0OTZmMGFkMDk4OTY3NTQ1ZTcwMzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93
dGYvQ29uY3VycmVudFZlY3Rvci5oCkBAIC0yNTQsNyArMjU0LDcgQEAgY2xhc3MgQ29uY3VycmVu
dFZlY3RvciBmaW5hbCB7CiAgICAgdm9pZCBhbGxvY2F0ZVNlZ21lbnQoKQogICAgIHsKICAgICAg
ICAgbV9zZWdtZW50cy5ncm93KG1fbnVtU2VnbWVudHMgKyAxKTsKLSAgICAgICAgbV9zZWdtZW50
c1ttX251bVNlZ21lbnRzKytdID0gc3RkOjptYWtlX3VuaXF1ZTxTZWdtZW50PigpOworICAgICAg
ICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBtYWtlVW5pcXVlPFNlZ21lbnQ+KCk7CiAg
ICAgfQogCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5jcHAKaW5kZXggODNjMjA3NTFmODVmNGU0ZDIwMTU2MTQ0MWNhODMxNDFj
YjVjMzdmZi4uYzYzYzA1NWEwYTAzNDFkZjZhNWFmMjcwYTRhY2NiOGQ1N2Q3ODQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKQEAgLTczLDcgKzczLDcgQEAg
dm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgpCiAKICAgICB3aGlsZSAo
IW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29sID0gKG1fdXNlQXV0b2Ry
YWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVzZSkgPyBzdGQ6Om1ha2Vf
dW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJh
aW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNlKSA/IG1ha2VVbmlxdWU8
QXV0b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKIAogICAgICAgICAgICAgbV90YXNrUXVldWUu
d2FpdEZvck1lc3NhZ2UoKS5wZXJmb3JtVGFzaygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgK
aW5kZXggZWZlZmIzYTMxMzNlODNmNjQzMzZmZDJlYzJkYTUyYTU0ODMyZTYyMS4uOTViNjc1OTcy
ZDMxMGUzZGRiZDQxM2Q0YThmOGQxMjg4ZjIwZmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMzAx
LDkgKzMwMSwxMSBAQCB1c2luZyBXVEY6OmZhc3RBbGlnbmVkRnJlZTsKICNkZWZpbmUgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQgXAogcHVibGljOiBcCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJpdmF0ZTog
XAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
bwogCiAjZGVmaW5lIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRCBcCiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFz
czsgXAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNN
YWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKaW5kZXggM2UyNTNjZjJhYzIxOWNjODU1
ODRkNDJjNDUxZWZjN2NhNzliNjRlYS4uNzA3NGMwM2FiYWY4ZmNmMzk3N2YyYjExYWI5YzNkNmUz
ODE2MTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGaWxlUHJpbnRTdHJlYW0+IEZpbGVQcmludFN0cmVhbTo6b3Blbihj
b25zdCBjaGFyKiBmaWxlbmFtZSwgY29uCiAgICAgaWYgKCFmaWxlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVQcmludFN0cmVhbT4o
ZmlsZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKIH0K
IAogdm9pZCBGaWxlUHJpbnRTdHJlYW06OnZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9s
aXN0IGFyZ0xpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oIGIvU291
cmNlL1dURi93dGYvRnVuY3Rpb24uaAppbmRleCAwNWUzNjk3ODI1YmMzZDM0OWY0OGQ2OGMzMmE2
ODYyMjU1ZmI1ODNlLi4wYjc5NTg2NzQ4MGZkMDMyMjQxMjQ1NGU3ZDBhZjgzMzhkNmUzYTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0Z1bmN0aW9uLmgKQEAgLTY3LDExICs2NywxMSBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4p
PiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8IShzdGQ6OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUg
JiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxl
VHlwZT46OnR5cGU+Ojp2YWx1ZSkgJiYgc3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxl
VHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxh
YmxlKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV0YWls
OjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxs
YWJsZSkpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtlVW5pcXVlPERldGFp
bDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoY2Fs
bGFibGUpKSkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNz
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46
OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxG
dW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKEZ1bmN0aW9u
VHlwZSBmKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV0
YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShm
KSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpD
YWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSkpIHsg
fQogCiAgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0CiAgICAgewpAQCAtODQsMTQg
Kzg0LDE0IEBAIGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IShzdGQ6
OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxlVHlwZT46OnR5cGU+Ojp2YWx1ZSkgJiYg
c3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgog
ICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCiAgICAgewot
ICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxs
YWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkp
OworICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJs
ZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpOwog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxGdW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBG
dW5jdGlvbiYgb3BlcmF0b3I9KEZ1bmN0aW9uVHlwZSBmKQogICAgIHsKLSAgICAgICAgbV9jYWxs
YWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1
bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOworICAgICAgICBtX2NhbGxhYmxl
V3JhcHBlciA9IG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBl
LCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93
dGYvSGFzaFRhYmxlLmgKaW5kZXggM2IxZTk1MzAzZGU1NDA1MTQzZmI1NjNjY2I4MDQ3ZTVhY2Vh
ZDBiMy4uYTRkMDc3Zjg0ZjAyYTFmYTFjMWJlMDM0YTg2ZWIzNTBkNmQ3ZjQ5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRh
YmxlLmgKQEAgLTU4OCwxMCArNTg4LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAsIG1f
ZGVsZXRlZENvdW50KDApCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICAs
IG1faXRlcmF0b3JzKDApCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+
KCkpCisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICNpZiBE
VU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKLSAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdHM+KCkpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigp
KQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTEzMzQsMTAgKzEzMzQsMTAgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVf
SVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMobnVsbHB0cikKLSAgICAgICAgLCBtX211
dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlx
dWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQot
ICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKm90aGVyLm1fc3RhdHMp
KQorICAgICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxTdGF0cz4oKm90aGVyLm1fc3RhdHMpKQog
I2VuZGlmCiAgICAgewogICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNvdW50ID0gb3RoZXIuc2l6
ZSgpOwpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgaW5saW5lIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6SGFzaFRhYmxlKEhhc2hUYWJsZSYmIG90aGVyKQogI2lmIENIRUNLX0hBU0hUQUJM
RV9JVEVSQVRPUlMKICAgICAgICAgOiBtX2l0ZXJhdG9ycyhudWxscHRyKQotICAgICAgICAsIG1f
bXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVu
aXF1ZTxMb2NrPigpKQogI2VuZGlmCiAgICAgewogICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRl
cmF0b3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCA5
ZTg3MjBmNmQ5YTc5ODBiOTVlNWIxM2M1ZTY1NWMzODk0OTMwNGI1Li41Mzc5YzBhNGQ1YzhjNmYz
NjdkOTE2OTZlMGQ2YTE4YzVkOWZlYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sIHVzZSkKICAgICB9CiAKICAg
ICBpZiAodXNlKSB7Ci0gICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwor
ICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1l
bW9yeVByZXNzdXJlSGFuZGxlcj4+KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKTsKICAgICAgICAgbV9tZWFzdXJlbWVu
dFRpbWVyLT5zdGFydFJlcGVhdGluZygzMF9zKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9tZWFz
dXJlbWVudFRpbWVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggYWY2NWUwOGNh
ODgwMjQwZWE5ZjE5YzNjMWZjMWZkYzU3YWI0ZDRhYi4uZGVmODM0MGUzYzhhY2M4NTg2ZGE0ZjAw
YmI4ZTlkYzU2ZTAxM2VmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFz
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTU2NSw2ICs1NjUsMjQg
QEAgY29uc3RleHByIHNpemVfdCBjbHoodWludDMyX3QgdmFsdWUsIFplcm9TdGF0dXMgbWlnaHRC
ZVplcm8gPSBaZXJvU3RhdHVzOjpNYXlCZVoKIAogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lO
TElORSBkZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVlKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVuYW1lIFQ6Ol9fZmFzdEFsbG9jYXRlZENsYXNz
LCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJn
cz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwogI2RlZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KHZhbHVlKQogCiB1c2luZyBXVEY6OktCOwpAQCAtNTg1LDMgKzYwMyw1IEBAIHVzaW5n
IFdURjo6bWVyZ2VEZWR1cGxpY2F0ZWRTb3J0ZWQ7CiB1c2luZyBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Y7CiB1c2luZyBXVEY6OnNhZmVDYXN0OwogdXNpbmcgV1RGOjp0cnlCaW5hcnlTZWFyY2g7
Cit1c2luZyBXVEY6Om1ha2VVbmlxdWU7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAppbmRleCAyNmJiYzhmZDY3YTQ5MzQ2MzIy
MWQ2MTk2MThlYjdjNjQ2ODY0MDMwLi5jYTMzZjg2N2QzOGI1NzU5MjAxNDFkNTIzYzMwN2FhZTdj
ODIwYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBTdHJl
YW1CdWZmZXIgewogICAgICAgICBtX3NpemUgKz0gc2l6ZTsKICAgICAgICAgd2hpbGUgKHNpemUp
IHsKICAgICAgICAgICAgIGlmICghbV9idWZmZXIuc2l6ZSgpIHx8IG1fYnVmZmVyLmxhc3QoKS0+
c2l6ZSgpID09IEJsb2NrU2l6ZSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxCbG9jaz4oKSk7CisgICAgICAgICAgICAgICAgbV9idWZmZXIuYXBwZW5k
KG1ha2VVbmlxdWU8QmxvY2s+KCkpOwogICAgICAgICAgICAgc2l6ZV90IGFwcGVuZFNpemUgPSBz
dGQ6Om1pbihCbG9ja1NpemUgLSBtX2J1ZmZlci5sYXN0KCktPnNpemUoKSwgc2l6ZSk7CiAgICAg
ICAgICAgICBtX2J1ZmZlci5sYXN0KCktPmFwcGVuZChkYXRhLCBhcHBlbmRTaXplKTsKICAgICAg
ICAgICAgIGRhdGEgKz0gYXBwZW5kU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Vu
aXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggNzNlOWRmZWMwNmZk
Nzg3ZjNiMDZiM2RjOWRhNjVhNTUwNGQxYzAyOS4uNjU5MTI1MWI4NjI3ZGYzNmNmMmViOWY3NDc5
M2VmNDg5Y2ExZTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysr
IGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTMzLDExICszMywxOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFVuaXF1ZVJlZjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVm
KEFyZ3MmJi4uLiBhcmdzKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1h
bGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQogewogICAgIHJldHVybiBVbmlxdWVSZWY8VD4oKm5l
dyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4u
IGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6X19m
YXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFVuaXF1ZVJlZiB7CiBwdWJsaWM6CkBA
IC02Myw3ICs3MCw3IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFQ+
IG1vdmVUb1VuaXF1ZVB0cigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWYpOyB9CiAKIHByaXZhdGU6
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxV
PiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3Mu
Li4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxs
b2NDaGVjayhBcmdzJiYuLi4pOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBjbGFzcyBV
bmlxdWVSZWY7CiAKICAgICBVbmlxdWVSZWYoVCYgb3RoZXIpCkBAIC03OSwzICs4Niw0IEBAIGNs
YXNzIFVuaXF1ZVJlZiB7CiAKIHVzaW5nIFdURjo6VW5pcXVlUmVmOwogdXNpbmcgV1RGOjptYWtl
VW5pcXVlUmVmOwordXNpbmcgV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVj
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291
cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXggNWU1YmE4YWJlYmRiZDQ5YmJi
ODM3ZGQ0YzRmZDY5YmQ2ZmZjMzYxZi4uZmIyMTFkMGEyOTYxZGZjMTZhYTZlMjFhMjFhOTc0ZGZm
MTUyNjk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTE0Nyw3ICsxNDcs
NyBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQo
KSwgIltXZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hBZnRlciIpOwogICAgIGdfc291cmNlX3NldF9y
ZWFkeV90aW1lKHNvdXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIGR1cmF0aW9u
Lm1pY3Jvc2Vjb25kc0FzPGdpbnQ2ND4oKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0
Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BhdGNoQWZ0ZXJD
b250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNo
QWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4o
V1RGTW92ZShmdW5jdGlvbikpOwogICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhzb3VyY2UuZ2V0
KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChzdGF0aWNfY2FzdDxEaXNwYXRj
aEFmdGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7CiAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBkY2JhMDYwODJjNWY2NmUzMTlhMTVl
ZTU5N2ZjNjQ5NzY2YjA1ZTZjLi41YmY0ZTZkMDFkZTg0M2VkMjg3ODgzZWEzYTAzZTg0OTQ5M2Jl
Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBj
bGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbCB7CiB9Owog
CiBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpCi0gICAgOiBtX2ltcGwoc3Rk
OjptYWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3LmlzTnVsbCgpID8gV1RG
OjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKKyAgICA6
IG1faW1wbChtYWtlVW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkg
PyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
PihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFu
aWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKaW5k
ZXggZmRiOGNlMjkyZDczOGRhNDIwMzhhYTk2NWFmM2FjYTE3OGE4MGNlYi4uOGRjNzZmYTJlNTll
YTY3ZTAyMTczOGMzMTFhMzU3N2Y0ZDM2ZTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlJbnZhbGlkVVJMKGNvbnN0IFN0cmlu
ZyYgcHJvcAogdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZlbG9wZXJXYXJu
aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9jb25zb2xlQ29udGV4dCkK
LSAgICAgICAgbV9jb25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVy
LCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2csIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtl
U3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5z
dHJpbmcoKSwgIjogIl9zLCBtZXNzYWdlKSkpOworICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KEpT
Qzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFuaWZl
c3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7CiB9CiAK
IFVSTCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZVN0YXJ0VVJMKGNvbnN0IEpTT046
Ok9iamVjdCYgbWFuaWZlc3QsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCA5YmZhNWY5
NDk5NGIwNTQ1MDZiODI2YTMxNGI4MjU4MjdlYTQxYWRiLi43ZTRmNzk0NzFlMmM1OWZlNzFjMTQ4
MTMyZjRiNTUxZDhmZmM3OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVh
Y29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgTmF2aWdhdG9yQmVhY29u
KiBOYXZpZ2F0b3JCZWFjb246OmZyb20oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CiAgICAgYXV0
byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckJlYWNvbio+KFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYg
KCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2
aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAK
aW5kZXggNWVkMWY1Y2NhNjQxZWIwNGVjMGUwYTBjZTA2YzgzNzI0NTY4YTJmZi4uNjE1Mzk0MzBk
ZmI5NjE2ZmQyODhmZWQ5MmNiOTQ0ZmY0NDZiMDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcApAQCAtNDksNyArNDksNyBAQCBET01X
aW5kb3dDYWNoZXMqIERPTVdpbmRvd0NhY2hlczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsK
ICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93Q2FjaGVzKj4oU3Vw
cGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2Fj
aGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVD
YWNoZXMuY3BwCmluZGV4IDA2NTZiZWYwYjE3MThlMzNkYmM3ZmEwZWU2MGM1N2Q0OGUzOGQ0ZTgu
LjUxMThhNDg4NTBmMjQyZDA0NGQzYjQwZmYwZTNiMjNiYjk2ZTI4ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKiBXb3JrZXJHbG9i
YWxTY29wZUNhY2hlczo6ZnJvbShXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCiB7CiAgICAgYXV0
byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKj4oU3Vw
cGxlbWVudDxXb3JrZXJHbG9iYWxTY29wZT46OmZyb20oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM+KHNjb3BlKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUNhY2hl
cz4oc2NvcGUpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAg
ICAgICAgcHJvdmlkZVRvKCZzY29wZSwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVk
ZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcApp
bmRleCA3MWY0MzhjZjc4NmM3NmQ3YjU4NzIxNTU5NzY2OGI2MjM2MWI1OTkzLi4xMTgxYmQ5ODVh
MjJiYTQ5M2Y4MzYzMWQ3ZTQxZmVlODc5YjU2YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRv
ckNyZWRlbnRpYWxzLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOYXZpZ2F0b3JDcmVkZW50aWFscyog
TmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAg
TmF2aWdhdG9yQ3JlZGVudGlhbHMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JD
cmVkZW50aWFscyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50aWFscz4oKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50aWFs
cz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IGI2ZmQ2OGQ2NzJlZGUzODc3
OGMxNWM2ZmVhYWY0NmI0NTVlNWExY2QuLjc1ZWRiNmE5MzYzODgwZTU4N2MzNTc1NmIxNGRlYzlm
OWI0NWU2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIE9wdGlv
bmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94Pj4+IEluaXREYXRhCiAgICAgICAgIGF1dG8gc3lzdGVtSUQgPSBJU09Qcm90ZWN0aW9u
U3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRCh2aWV3LCBvZmZzZXQpOwogI2lm
IEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICAgICAgaWYgKHN5c3Rl
bUlEID09IElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveDo6ZmFpclBsYXlTeXN0ZW1JRCgpKSB7
Ci0gICAgICAgICAgICBhdXRvIGZwc1Bzc2ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveD4oKTsKKyAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IG1ha2VVbmlx
dWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOwogICAgICAgICAgICAgaWYgKCFmcHNQ
c3NoLT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgICAgIHBzc2hCb3hlcy5hcHBlbmQoV1RGTW92ZShmcHNQc3NoKSk7CkBA
IC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICNlbHNlCiAgICAgICAg
IFVOVVNFRF9QQVJBTShzeXN0ZW1JRCk7CiAjZW5kaWYKLSAgICAgICAgYXV0byBwc3NoQm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7
CisgICAgICAgIGF1dG8gcHNzaEJveCA9IG1ha2VVbmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNw
ZWNpZmljSGVhZGVyQm94PigpOwogICAgICAgICBpZiAoIXBzc2hCb3gtPnJlYWQodmlldywgb2Zm
c2V0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0u
Y3BwCmluZGV4IDgyNjI4OTNmZTBhZjk5OTE0ZWQzOWU5NjBjZjEwYTc1MzQwNzA1YjYuLjgzN2Rm
MTIzYWU1OTZmMzUzN2M5MTUyNzAzZTNkMjcxYjM0NmViNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNw
cApAQCAtNjEsMTUgKzYxLDE1IEBAIHN0cnVjdCBDRE1GYWN0b3J5IHsKIHN0YXRpYyBWZWN0b3I8
Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQogewogICAgIHN0YXRpYyBhdXRv
IGNkbXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPENETUZhY3RvcnkqPiB7Ci0gICAgICAg
IG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZh
Y3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5PihjZG0pOyB9LAogICAgICAgICAgICAgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogICAgICAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBz
cGVjaWZpYyBVQSBDRE1zLiBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMxOCwgaHR0cDovL3dlYmtp
dC5vcmcvYi8xMDkzMjAKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9
LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCiAgICAgICAgICAgICBDRE1Q
cml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAjaWYgKEhBVkUoQVZDT05URU5U
S0VZU0VTU0lPTikgfHwgSEFWRShBVlNUUkVBTVNFU1NJT04pKSAmJiBFTkFCTEUoTUVESUFfU09V
UkNFKQotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAor
ICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVu
aXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAogICAgICAgICAgICAg
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogI2Vu
ZGlmCiAgICAgfSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TT4gTGVnYWN5Q0RNOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgaWYgKCFz
dXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUNETT4oa2V5U3lzdGVtKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3RlbSk7CiB9CiAKIExlZ2FjeUNETTo6
TGVnYWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAppbmRleCA0
NThlYzUzYjQzMzdiMTcxMDU1NmY4YTE3YjRlZjAxZWZjZTE1NjRlLi5mYjVkYTFmMTZkYTAyZWM4
NGMzNDc3ZDM1NWZlMGE1ZTg5NjQwNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaApAQCAtNTAsNyArNTAs
OCBAQCBjbGFzcyBMZWdhY3lDRE1DbGllbnQgewogICAgIHZpcnR1YWwgUmVmUHRyPE1lZGlhUGxh
eWVyPiBjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25zdCA9IDA7CiB9OwogCi1j
bGFzcyBMZWdhY3lDRE0geworY2xhc3MgTGVnYWN5Q0RNIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDRE0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKaW5kZXggMGE4
ZDU0ZTVjNTY1ZjM0NTA4NTYyYzVhOGMxZTAwMzVhZjE0YTc0Zi4uZjI0OTcwNzJlNzg1NzYwYzU5
ZTIzMDM5MzRmYjdmOWNjNDc3MmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaApA
QCAtMzUsNiArMzUsNyBAQCBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwogY2xhc3MgTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudDsKIAogY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUludGVyZmFjZSgpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgPSBkZWZhdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggYzkz
MTZkZmQ4YWJiNDA1NDkyZjU1NWViM2QxYjNkMDkxN2NlZmY1MC4uM2E4YzAwZjUyMzFmNTJhNmU4
OWQxODNkMTUxMWMzYWM4NzczYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlQ2xlYXJLZXkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6
OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMmY3YjAzNTM5
ZWY4ZWE0NzRlMjM2ZDA1ZDllMTdmZWM0ODRlNjI3ZS4uYmM3NzdmMGNiYzhjZTdiODllOTQzYjhh
NjNlNGU2ZTgyODliMzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNs
ZWFyS2V5LmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDRE1TZXNzaW9uQ2xlYXJLZXkgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CitjbGFzcyBD
RE1TZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkNsZWFyS2V5
KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQ2xlYXJL
ZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHAKaW5kZXggYWRkYzU0ODk2YjhhNDQzOGNmYmZkMDY1ODBhZGJjODYwYTgxZjg2NC4uZGI2Mzkw
ZTdmOTkyNTk3N2I4N2NhMDA5ZWRhYmQ1MWNkYjY2NzMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRjaEJvZHlD
b25zdW1lciogY29uc3VtZXIpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyLmVtcGxhY2UoKnRo
aXMpOwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExv
YWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOworICAgIG1fYmxvYkxvYWRlci0+bG9hZGVy
ID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOwogCiAg
ICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGJsb2IpOwogICAgIGlmICghbV9ibG9iTG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCBj
ZDM0NWViOWVjMzQwYzM2ZTBmMGE2ZWVkODJkZDk4OGI0Zjk3ZDM5Li45NDAxM2NmNGVhNjUyMzhk
ODNiOWI0YzgxZGI3ZDE4MTY1MzI0NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVz
dCYgcmVxdWVzdAogCiAgICAgcmVzcG9uc2UtPmFkZEFib3J0U3RlcHMocmVxdWVzdC5zaWduYWwo
KSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxCb2R5
TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNrKSk7CisgICAg
cmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG1ha2VVbmlxdWU8Qm9keUxvYWRlcj4ocmVzcG9uc2Uu
Z2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwogICAgIGlmICghcmVzcG9uc2UtPm1f
Ym9keUxvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3BvbnNlLT5t
X2JvZHlMb2FkZXIgPSBudWxscHRyOwogfQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCiAKIGJvb2wgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZt
X3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVl
PEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigpKTsKICAg
ICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIG1fbG9hZGVy
LT5pc1N0YXJ0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAppbmRleCA2MTAyMDg5OWNiYzRhN2U0MzNiMTUxZGNjYWVi
ZmU5MDc2NGQzZTJkLi44NTBkMjJkZTI4NWJiMzM1ZDIyZThjMmUyNTNiN2FiNmUwYzYwMzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVw
YWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvckdhbWVwYWQqIE5hdmlnYXRvckdhbWVw
YWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2FtZXBhZCog
c3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdhbWVwYWQqPihTdXBwbGVtZW50PE5h
dmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwCmluZGV4IGIwOWZjMzQzM2JiZmJiNzI4ZjMxNWMxNTMzYTZmMmM5ZTRmYzAwNzEuLmNkODA3
MGIyMDdkYjhhMzQ0MDI2Y2ZmNjEwNWI4NWVlMTliYzUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCkKIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFnZSogcGFn
ZSwgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQocGFnZSk7Ci0gICAg
U3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+
KCpwYWdlLCBjbGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEdlb2xv
Y2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCBiMzRmNDlhNjcxZDg1ZjUxNDJi
OGJhZjBmNTJiYTk5MWFjNDM1OWRjLi4zNWRmYmY4ZjNmMjU2OWMwMTM1MzU2NjMwMGY1Yjc4Mzdk
ZTI4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05h
dmlnYXRvckdlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCBOYXZpZ2F0
b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20oTmF2aWdhdG9yJiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxOYXZpZ2F0b3JHZW9sb2NhdGlvbio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgm
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR2Vv
bG9jYXRpb24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYzcyMDNhOWE4NjQwOTcwNTBkM2RjMDA3OTJmN2E2YjU4
MWZhYTI1ZS4uNWU5ZDk3OTY2YmZkZTU4ZTY2MDk5YTUwOWU2MThiODRjMThkMDVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5k
b3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERPTVdpbmRvd0luZGV4ZWRE
YXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKERPTVdpbmRvdyogd2luZG93
KQogewogICAgIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJv
bSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2U+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVt
ZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3Vw
cGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4
IGY0MzA5MGM0ZGNjM2VkZTVlMjdkMWFhNDQzODQ0NDdkODQ5YzY0MGIuLjlhNzgxMjc4NDYzZWQw
YTRhMGFkZGQzZjdkYjBjNTY1Njk2MmI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmRleCcgb24gJ0lEQk9iamVj
dFN0b3JlJzogVGhlIHNwZWNpZmllZCBpbmRleCB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAg
YXV0byBpbmRleCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBpbmRleCA9IG1ha2VVbmlxdWU8SURC
SW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CiAKICAgICBS
ZWY8SURCSW5kZXg+IHJlZmVyZW5jZWRJbmRleCB7ICppbmRleCB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZmEy
Y2Q3ZWFkMDliNjA1NTI1YjhjYjQ0MWVmNzAwMWQ4MzM1MDEwMC4uNDIyNDNmYmE1NzMxMjk1NDE4
ODk0YTMyMDQzZTg5ZTBiMmMxYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYgKCFpbmZvIHx8ICghZm91bmQgJiYgIWlzVmVyc2lv
bkNoYW5nZSgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJG
YWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3RvcmUnIG9uICdJREJUcmFuc2FjdGlvbic6IFRoZSBz
cGVjaWZpZWQgb2JqZWN0IHN0b3JlIHdhcyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBhdXRvIG9i
amVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gbWFr
ZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8s
ICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwog
ICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmVOYW1lLCBXVEZNb3Zl
KG9iamVjdFN0b3JlKSk7CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+
IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mCiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9j
ayk7CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RT
dG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOworICAgIGF1dG8g
b2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmpl
Y3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KGluZm8ubmFt
ZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RT
dG9yZSYgb2JqZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jcmVhdGVJbmRleE9uU2Vy
dmVyKG9wZXJhdGlvbiwgaW5mbyk7CiAgICAgfSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0
b3JlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpj
cmVhdGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRl
eGVkRGF0YWJhc2UuY3BwCmluZGV4IGE0ODUwM2I0ZDJkODA0Mjk0Njg0YTY1YTY1ZWJkNjRmMjMz
Y2Q3YjkuLjliNzU3NzQ5MjFiNDY1MDZmNTgzZGU3ZmVjNDI1MGU4NTRhY2U1MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9X
b3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV29y
a2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERh
dGFiYXNlOjpmcm9tKFdvcmtlckcKICAgICAgICAgaWYgKCFjb25uZWN0aW9uUHJveHkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwg
KmNvbm5lY3Rpb25Qcm94eSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlx
dWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblBy
b3h5KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVu
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggOTQ4Y2Y3
NDY2M2FlNjljODJkYTQ0NGUwOTM0NzNkZDg1NmQ0ZGU5My4uMzc3MTFkYzEwM2RiNmM5YTliODEz
ZGJjOWRmNzk5YjdlMjZhNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gSURCQ29ubmVjdGlv
blRvU2VydmVyOjpjcmVhdGUoSURCQ29ubmVjdGlvblRvU2VydmVyRGUKIAogSURCQ29ubmVjdGlv
blRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIoSURCQ29ubmVjdGlvblRvU2VydmVyRGVs
ZWdhdGUmIGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShtYWtlV2Vha1B0cihkZWxlZ2F0ZSkp
Ci0gICAgLCBtX3Byb3h5KHN0ZDo6bWFrZV91bmlxdWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhp
cykpCisgICAgLCBtX3Byb3h5KG1ha2VVbmlxdWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhpcykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDI3NTNmZDBjMjQ1
N2I5YzA5ZDlkODllNGY3NjJiNDc5ZjhiNDQwYjEuLjhlMWRlMDZkNzFlOGYwYjIyM2Q2ODZlNWUx
YThhMjIwOWI3NDM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApAQCAtNDIs
NyArNDIsNyBAQCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChtX2luZGV4SWRlbnRp
ZmllcikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1ZXN0LnJlcXVlc3RlZEluZGV4
UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0LnBlbmRpbmdDdXJz
b3IoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CisgICAgICAg
IG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihj
dXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCiAgICAgbV9pZGJSZXF1ZXN0ID0gJnJlcXVl
c3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuY3BwCmluZGV4IDg5YmZlNzkzZDdkYmI1Y2U3MzExNDc5ZWY2OTUwYjljZmQx
N2NlMDguLjNiYjZkYWNhNjhkN2MwZjUzYWQ4N2U5ZDFkZjE4YTNmZmU0YTkxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVW5pcXVlSURCRGF0YWJhc2UmIElEQlNlcnZlcjo6Z2V0
T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW4KIAogICAgIGF1
dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLmFkZChpZGVudGlm
aWVyLCBudWxscHRyKTsKICAgICBpZiAodW5pcXVlSURCRGF0YWJhc2UuaXNOZXdFbnRyeSkKLSAg
ICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworICAgICAgICB1bmlxdWVJ
REJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFVuaXF1ZUlEQkRhdGFiYXNl
PigqdGhpcywgaWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gKnVuaXF1ZUlEQkRhdGFiYXNlLml0
ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURC
QmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRh
YmFzZQogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9u
SUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdTdG9yZVRl
bXBvcmFyeUZpbGVIYW5kbGVyLCBtX3Blck9yaWdpblF1b3RhKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2Rh
dGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciwg
bV9wZXJPcmlnaW5RdW90YSk7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpAQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQg
SURCU2VydmVyOjpRdW90YVVzZXI6OmluaXRpYWxpemVTcGFjZVVzZWQodWludDY0X3Qgc3BhY2VV
c2VkKQogSURCU2VydmVyOjpRdW90YVVzZXImIElEQlNlcnZlcjo6ZW5zdXJlUXVvdGFVc2VyKGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVybiAqbV9xdW90YVVzZXJzLmVu
c3VyZShvcmlnaW4sIFt0aGlzLCAmb3JpZ2luXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVvdGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklE
LCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmlnaW4gfSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVvdGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklE
LCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmlnaW4gfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCmluZGV4IDY5ODNjOWQ3ZWFmZjU2MTY3MjA0
ZDk1MmYxZjIyNjdiYjQwY2E0YmEuLjhkOTIxZDhlZmU2YmE4NDBhMzBkNjFkZmRjNmE3MjFlODI4
YTQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JbmRleFZhbHVlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIElEQkVycm9y
IEluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQktleURhdGEmIGluZGV4S2V5LCBj
b25zdCBJREJLZXlEYXRhCiAgICAgICAgIHJldHVybiBJREJFcnJvcihDb25zdHJhaW50RXJyb3Ip
OwogCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZUVudHJ5
PihtX3VuaXF1ZSk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGRLZXkodmFsdWVL
ZXkpOwogICAgIG1fb3JkZXJlZEtleXMuaW5zZXJ0KGluZGV4S2V5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDQ3Y2M0MmZkMjZkNjQ3M2M2
NDE5MjdlOTkyZDRlYzZlOGQ3YmY4ZWUuLjVlNzE0NDk3ODRhMGRhMDc2Nzc4OWE4ZGVkYzUyMjY4
OWY0ZDhkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogc3RkOjp1bmlx
dWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPiBNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbjo6Y3JlYXRlKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBj
b25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJh
Y2tpbmdTdG9yZSwgaW5mbyk7CiB9CiAKIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihNZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tp
bmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQpAQCAtNTIsNyArNTIsNyBA
QCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oTWVtb3J5SURCQmFja2luZ1N0bwogICAgICAgICBJREJEYXRhYmFzZUluZm8gaW5mbzsK
ICAgICAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLmdldE9yRXN0YWJsaXNoRGF0YWJh
c2VJbmZvKGluZm8pOwogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGluZm8pOworICAgICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8
SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICB9CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2
b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVt
b3J5T2JqZWN0U3RvcmUmIG9iamVjdAogCiAgICAgYXV0byBvcmlnaW5hbEFkZFJlc3VsdCA9IG1f
b3JpZ2luYWxWYWx1ZXMuYWRkKCZvYmplY3RTdG9yZSwgbnVsbHB0cik7CiAgICAgaWYgKG9yaWdp
bmFsQWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG9y
aWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+
KCk7CiAKICAgICBhdXRvKiBtYXAgPSBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2QxNDJiMDA1
MGFiNjA4ODFlMzg3YmU4YzE5ODk0N2FjNmU4ZGQ4MS4uY2ZmZTMzMzdmNzk0NDhiOGMyMTNkYmJl
NWZhMzViNGQzYTcwZjJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHVpbnQ2NF90IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgy
MDAwMDAwMDAwMDAwMDsKIAogc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4g
TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURC
QmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIH0KIAogTWVtb3J5SURCQmFja2luZ1N0b3JlOjpN
ZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQpAQCAtNjEsNyArNjEsNyBAQCBNZW1vcnlJREJCYWNraW5nU3RvcmU6On5NZW1vcnlJREJC
YWNraW5nU3RvcmUoKSA9IGRlZmF1bHQ7CiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAg
ICBpZiAoIW1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDAp
OworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPiht
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOwogCiAgICAgaW5mbyA9ICptX2RhdGFiYXNl
SW5mbzsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJhc2VJbmZvKGNvbnN0IElEQkRhdGFiYXNlSW5m
byYgaW5mbykKICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8gZGlyZWN0bHkgc2V0IGRhdGFiYXNl
IGluZm8gb24gYSBiYWNraW5nIHN0b3JlIHRoYXQgaGFzbid0IGFscmVhZHkgc2V0IGl0cyBvd24g
ZGF0YWJhc2UgaW5mby4KICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwogCi0gICAgbV9kYXRh
YmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAg
bV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiB9CiAK
IElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAppbmRleCA0OWRkY2E2YmQ0MGQy
OWQ0MmUzOGI4NTEzMWM4OWZkZmU3ZDQ3OTJkLi44NTk1ZGJiOGY0YTdlZTNkMTkxZTMxZmI2MTBi
MDQ5NzViODc0NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBJREJFcnJv
ciBNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkoY29uc3QgSURCS2V5RGF0YSYgdmFsdWVLZXksIGNv
bnN0IEluZGV4S2V5JiBpbgogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6cHJvdmlz
aW9uYWxQdXRJbmRleEtleSIpOwogCiAgICAgaWYgKCFtX3JlY29yZHMpIHsKLSAgICAgICAgbV9y
ZWNvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRleFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUo
KSk7CisgICAgICAgIG1fcmVjb3JkcyA9IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2lu
Zm8udW5pcXVlKCkpOwogICAgICAgICBub3RpZnlDdXJzb3JzT2ZBbGxSZWNvcmRzQ2hhbmdlZCgp
OwogICAgIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIE1lbW9yeUluZGV4Q3Vyc29yKiBNZW1vcnlJ
bmRleDo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4o
KnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1l
bW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IGVkNmVi
YTkyN2YxZjRmNmI5YzMwNjhmNmI1ZDg4ZGUyOTk3MjY3ZWIuLjViNDRhNzM4NzhjOWZkZDdhMWUw
NWE5NWI3NjU3ZWJlNjM2MzUxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMjU5
LDggKzI1OSw4IEBAIElEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uCiAKICAgICBpZiAoIW1fa2V5VmFs
dWVTdG9yZSkgewogICAgICAgICBBU1NFUlQoIW1fb3JkZXJlZEtleXMpOwotICAgICAgICBtX2tl
eVZhbHVlU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtleVZhbHVlTWFwPigpOwotICAgICAgICBt
X29yZGVyZWRLZXlzID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhU2V0PigpOworICAgICAg
ICBtX2tleVZhbHVlU3RvcmUgPSBtYWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOworICAgICAgICBt
X29yZGVyZWRLZXlzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SURCS2V5RGF0
YVNldD4oKTsKICAgICB9CiAKICAgICBhdXRvIG1hcFJlc3VsdCA9IG1fa2V5VmFsdWVTdG9yZS0+
c2V0KGtleURhdGEsIHZhbHVlLmRhdGEoKSk7CkBAIC00OTcsNyArNDk3LDcgQEAgTWVtb3J5T2Jq
ZWN0U3RvcmVDdXJzb3IqIE1lbW9yeU9iamVjdFN0b3JlOjptYXliZU9wZW5DdXJzb3IoY29uc3Qg
SURCQ3Vyc29ySW5mbyYKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0aGlz
LCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBiZmJkMDlkYmI5YTcxZDNjNDFh
OWRmNmE3Nzk0ZWVkZTU4MWFiZDcwLi5kYWE0YTE5YmQ4Mzk2ZjM4MTllNjlkYzk5NTY3NmUzMzll
YWRkMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjI0LDcgKzYy
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsCiAgICAgfQogCiAgICAgLy8gVGhpcyBpbml0
aWFsIGRhdGFiYXNlIGluZm8gbWF0Y2hlcyB0aGUgZGVmYXVsdCB2YWx1ZXMgd2UganVzdCBwdXQg
aW50byB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFt
ZSgpLCAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8oKQpAQCAtNjU5LDcgKzY1
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBh
dXRvIGRhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRh
YmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7CisgICAgYXV0byBkYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOwog
CiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiU0VMRUNU
IGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jLCBtYXhJbmRleElEIEZST00gT2JqZWN0U3RvcmVJ
bmZvOyJfcyk7CkBAIC04MjEsNyArODIxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KIAog
ICAgIFN0cmluZyBkYkZpbGVuYW1lID0gZnVsbERhdGFiYXNlUGF0aCgpOwogCi0gICAgbV9zcWxp
dGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9zcWxpdGVE
QiA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX3NxbGl0ZURCLT5v
cGVuKGRiRmlsZW5hbWUpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FM
aXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIGNsb3NlU1FMaXRlREIoKTsKQEAgLTkzMSwxMSArOTMxLDExIEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gZXN0YWJsaXNoIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgdGhhdCBhbHJlYWR5IGV4
aXN0cyJfcyB9OwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CisgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rpb24+
KCp0aGlzLCBpbmZvKTsKIAogICAgIGF1dG8gZXJyb3IgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5iZWdpbigqbV9zcWxpdGVEQik7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGluZm8u
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewotICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPigqbV9kYXRhYmFzZUluZm8pOwogCiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1f
c3FsaXRlREIsICJVUERBVEUgSURCRGF0YWJhc2VJbmZvIFNFVCB2YWx1ZSA9ID8gd2hlcmUga2V5
ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKICAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCkBAIC0yNjYyLDcgKzI2NjIsNyBAQCBTUUxpdGVTdGF0ZW1lbnQqIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50KFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Uwog
ICAgIH0KIAogICAgIGlmIChtX3NxbGl0ZURCKSB7Ci0gICAgICAgIG1fY2FjaGVkU3RhdGVtZW50
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0
ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQpOworICAgICAgICBtX2NhY2hlZFN0YXRlbWVu
dHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50
PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKICAgICAgICAgaWYgKG1fY2FjaGVkU3RhdGVtZW50
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldLT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAg
ICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBu
dWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggZjg0MDVhNzk4YTM2ODEw
ZGM1NzZhZjFlNzNiY2FmNTMxMDIzN2JhZi4uYzZiM2ZkOTUzYTBkNTNhYzE1NjhlMjg0OGNiYzc4
YTEyZjE5NTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3Rh
dGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0ID0gODsKIAogc3RkOjp1bmlxdWVfcHRyPFNR
TGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAg
YXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rp
b24sIGluZm8pOworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+
KHRyYW5zYWN0aW9uLCBpbmZvKTsKIAogICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01OSw3ICs1OSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FM
aXRlSURCVHJhbnNhY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0
ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVDdXJzb3IoU1FMaXRlSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCB1
aW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIGF1
dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9u
LCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7CisgICAgYXV0byBjdXJzb3IgPSBtYWtl
VW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4
SUQsIHJhbmdlKTsKIAogICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTksNyArMTk5LDcgQEAgYm9vbCBTUUxpdGVJREJD
dXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKICAgICBBU1NF
UlQoIW1fY3VycmVudFVwcGVyS2V5LmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKSk7CiAKLSAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigp
LT5kYXRhYmFzZSgpLCBzcWwpOworICAgIG1fc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVT
dGF0ZW1lbnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCks
IHNxbCk7CiAKICAgICBpZiAobV9zdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKHBy
ZXBhcmUvaWQpIC0gJyVzJyIsIG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRh
dGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIFNRTGl0ZUlEQkN1
cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29y
ZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09IElu
ZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpCi0gICAgICAgICAgICByZWNvcmQucmVj
b3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwor
ICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRo
cmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBi
bG9iRmlsZVBhdGhzKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJp
bWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXpl
IHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7
CkBAIC00ODYsNyArNDg2LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJ
REJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBp
ZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIG9iamVjdFN0b3JlU3RhdGVt
ZW50LmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29y
ZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5y
ZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJl
Y29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBv
YmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBTa2lwIG92ZXIgaXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBhNmEzYzVmZmYzMzgwYzI1ZWY3MzYxZTY4OGJlZjM2YzA2
MTVmYzgzLi5kMjEyZGUyYjZiODhhZmZlMGEzNWIwZmQwZmQzM2ZjODY3Y2VjYmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJh
bnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAg
ICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwogCi0gICAgbV9zcWxpdGVUcmFuc2FjdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8u
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOworICAgIG1fc3FsaXRlVHJh
bnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZv
Lm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBtX3NxbGl0ZVRy
YW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJv
Z3Jlc3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDczMDQ5NzQ0MjBmZjQ2ZmRm
MmVhOTY3OWI2ZDViNWI3ZTY5YmZkZWMuLjU3Yjc3YzAxMjU4ZmQ1ZDQ5ZjcwNThmZWJiZDU4NTM3
NDNjMmRiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBk
ZWxldGVkVmVyc2lvbikKICAgICAvLyB3ZSB3b24ndCBoYXZlIGEgbV9tb3N0UmVjZW50RGVsZXRl
ZERhdGFiYXNlSW5mby4gSW4gdGhhdCBjYXNlLCB3ZSdsbCBtYW51ZmFjdHVyZSBvbmUgdXNpbmcg
dGhlCiAgICAgLy8gcGFzc2VkIGluIGRlbGV0ZWRWZXJzaW9uIGFyZ3VtZW50LgogICAgIGlmICgh
bV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbykKLSAgICAgICAgbV9tb3N0UmVjZW50RGVs
ZXRlZERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lk
ZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRWZXJzaW9uKTsKKyAgICAgICAgbV9tb3N0
UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPiht
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRWZXJzaW9uKTsKIAogICAgIGlmICht
X2N1cnJlbnRPcGVuREJSZXF1ZXN0KSB7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3Qt
Pm5vdGlmeURpZERlbGV0ZURhdGFiYXNlKCptX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZv
KTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFj
a2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbywgY29uc3QgSQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIpOwogICAgIAotICAgIG1fZGF0YWJhc2VJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIG1fYmFja2lu
Z1N0b3JlT3BlbkVycm9yID0gZXJyb3I7CiAKICAgICBBU1NFUlQobV9pc09wZW5pbmdCYWNraW5n
U3RvcmUpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
UGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAg
ICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwog
ICAgICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbiB8fCAmbV92
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmRhdGFiYXNlQ29ubmVjdGlvbigpID09IG1fdmVyc2lv
bkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CiAgICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7Ci0gICAgICAgIG1fZGF0YWJh
c2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CisgICAgICAgIG1fZGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CiAgICAgfQogCiAgICAgSURCRXJyb3Ig
cmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkgPT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2FjdGlvbi0+cmVzdWx0KCkgOiBlcnJvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAppbmRleCBmMTdhNGU1
NTIzZmI1ZjYxYjAyNmEwOTE0N2Y4MTQxZDViNjQxMzlhLi44NTQwY2E3ODZkNTczNThkOTgyYzcz
ZTY0NjBmN2Y4ZjBhODgzNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24uY3BwCkBAIC01MSw3ICs1MSw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiAg
ICAgQVNTRVJUKGRhdGFiYXNlKTsKIAogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkg
PT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKQotICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNl
LT5pbmZvKCkpOworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlcnZl
ciA9IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5zZXJ2ZXIoKSkKICAgICAgICAgc2VydmVyLT5yZWdp
c3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCmluZGV4IGIxMGQ4NDA5
OWIyNTI4ZTZmNzNjMjhiMTUwNGE4YTkzMjRkMGIyMWEuLjIxNjQxNmFmYTExY2YyNTVkMzZkZWZi
M2VmZjM2ZWZhZjE5NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoKQogCiBJREJSZXF1ZXN0RGF0YTo6SURC
UmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5lY3Rp
b25Qcm94eSwgY29uc3QgSURCT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvblByb3h5LnNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQorICAgICwgbV9y
ZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVj
dGlvblByb3h5LCByZXF1ZXN0KSkKICAgICAsIG1fZGF0YWJhc2VJZGVudGlmaWVyKHJlcXVlc3Qu
ZGF0YWJhc2VJZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3RlZFZlcnNpb24ocmVxdWVzdC52
ZXJzaW9uKCkpCiAgICAgLCBtX3JlcXVlc3RUeXBlKHJlcXVlc3QucmVxdWVzdFR5cGUoKSkKQEAg
LTQ5LDggKzQ5LDggQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHIKIAogSURCUmVxdWVzdERhdGE6
OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlv
bikKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIob3BlcmF0aW9uLnRyYW5zYWN0
aW9uKCkuZGF0YWJhc2UoKS5jb25uZWN0aW9uUHJveHkoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCi0gICAgLCBtX3RyYW5z
YWN0aW9uSWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
b3BlcmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAsIG1fcmVxdWVzdElkZW50
aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVudGlm
aWVyKCkpKQorICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCiAgICAg
LCBtX29iamVjdFN0b3JlSWRlbnRpZmllcihvcGVyYXRpb24ub2JqZWN0U3RvcmVJZGVudGlmaWVy
KCkpCiAgICAgLCBtX2luZGV4SWRlbnRpZmllcihvcGVyYXRpb24uaW5kZXhJZGVudGlmaWVyKCkp
CiB7CkBAIC01OCw3ICs1OCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIG1faW5kZXhS
ZWNvcmRUeXBlID0gb3BlcmF0aW9uLmluZGV4UmVjb3JkVHlwZSgpOwogCiAgICAgaWYgKG9wZXJh
dGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklk
ZW50aWZpZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CiB9CiAK
IElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgb3Ro
ZXIpCkBAIC03MSwxMSArNzEsMTEgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNv
bnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKICAgICAsIG1fcmVxdWVzdFR5cGUob3RoZXIubV9y
ZXF1ZXN0VHlwZSkKIHsKICAgICBpZiAob3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAgICAg
ICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVxdWVzdElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fcmVx
dWVzdElkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikK
LSAgICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICAg
ICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRp
Zmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIubV9j
dXJzb3JJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmllcik7
CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogSURCUmVxdWVzdERhdGE6
OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiB0aGF0LCBJc29sYXRlZENvcHlU
YWcpCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCB2b2lkIElEQlJlcXVlc3REYXRhOjppc29sYXRlZENv
cHkoY29uc3QgSURCUmVxdWVzdERhdGEmIHNvdXJjZSwgSURCUmVxdWVzdERhdGEmCiAgICAgICAg
IGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJZGVudGlmaWVyID0gc291cmNlLm1fZGF0YWJhc2VJZGVu
dGlmaWVyLT5pc29sYXRlZENvcHkoKTsKIAogICAgIGlmIChzb3VyY2UubV9yZXF1ZXN0SWRlbnRp
ZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50aWZp
ZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7CiAg
ICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgZGVzdGluYXRp
b24ubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNl
SWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmIChz
b3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklk
ZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJj
ZS5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1cnNv
cklkZW50aWZpZXIpOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0RGF0YTo6c2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA0NWNmZmFlYTYwM2E1
M2I1OTkwNGM4YjE0YjdhMWRlZjdkMjVmMzEwLi40MDhiNGU0NjI4NzMzN2I5YWMzNDRhZmJmNDY5
MTU4NjhlODBmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wg
SURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVz
b3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3JlcXVlc3RJZGVudGlmaWVyID0gV1RGTW92ZShv
YmplY3QpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFz
T2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+
IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVz
dC5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE3NCw3ICsx
NzQsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlk
ZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9jdXJzb3JJZGVudGlmaWVy
ID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCmluZGV4IGE4OTQ1NGU2ZTYzZjZl
YjdjYjUwMzhiOWM5MzJmYTIxODYzM2VkYzYuLjRjYmQ1ZDliZGYwYTg1MjNiZjdmNTJhYzViYzVj
YjRiN2VkMTA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBJREJS
ZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIG90aGVyKQogICAg
ICwgbV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKIHsKICAgICBpZiAob3Ro
ZXIubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CisgICAgICAgIG1f
ZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFi
YXNlSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBtX3Ry
YW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3Ro
ZXIubV90cmFuc2FjdGlvbkluZm8pOworICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VV
bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOwogICAg
IGlmIChvdGhlci5tX3Jlc3VsdEtleSkKLSAgICAgICAgbV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtleSk7CisgICAgICAgIG1fcmVzdWx0
S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOwogICAgIGlm
IChvdGhlci5tX2dldFJlc3VsdCkKLSAgICAgICAgbV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKKyAgICAgICAgbV9nZXRSZXN1
bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKICAgICBp
ZiAob3RoZXIubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7CisgICAg
ICAgIG1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5t
X2dldEFsbFJlc3VsdCk7CiB9CiAKIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3Qg
SURCUmVzdWx0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtODcsMTUgKzg3LDE1IEBA
IHZvaWQgSURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlc3VsdERhdGEmIHNv
dXJjZSwgSURCUmVzdWx0RGF0YSYgZGVzCiAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRJbnRlZ2Vy
ID0gc291cmNlLm1fcmVzdWx0SW50ZWdlcjsKIAogICAgIGlmIChzb3VyY2UubV9kYXRhYmFzZUlu
Zm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5m
bzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUluZm8gPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURCRGF0
YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbklu
Zm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElEQlRy
YW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90cmFu
c2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJjZS5tX3Ry
YW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlm
IChzb3VyY2UubV9yZXN1bHRLZXkpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJLZXlE
YXRhOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9IG1h
a2VVbmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6SXNv
bGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fZ2V0UmVzdWx0KQotICAgICAgICBkZXN0aW5h
dGlvbi5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqc291cmNl
Lm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3Rp
bmF0aW9uLm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2UubV9n
ZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1f
Z2V0QWxsUmVzdWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJREJH
ZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0QWxs
UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxSZXN1
bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogSURCUmVzdWx0RGF0YSBJ
REJSZXN1bHREYXRhOjplcnJvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCkBAIC0xMTEsNyArMTExLDcgQEAgSURC
UmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmUKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVlc3RJ
ZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5EYXRh
YmFzZVN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCktPmlu
Zm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6
Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAg
IElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1bHQu
bV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZDsKICAgICBy
ZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uZGF0YWJh
c2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNv
bm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOwotICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9u
SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlvbi5p
bmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZv
KCkpOworICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJhbnNh
Y3Rpb25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkRhdGFi
YXNlSW5mbyYgaW5mbykKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7SURCUmVzdWx0VHlw
ZTo6RGVsZXRlRGF0YWJhc2VTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3Vs
dC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZv
KTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTcxLDIxICsxNzEsMjEgQEAg
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpyZW5hbWVJbmRleFN1Y2Nlc3MoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXEKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cHV0
T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsKICAgICBJREJSZXN1bHREYXRhIHJl
c3VsdCB7IElEQlJlc3VsdFR5cGU6OlB1dE9yQWRkU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIg
fTsKLSAgICByZXN1bHQubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+
KHJlc3VsdEtleSk7CisgICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlE
YXRhPihyZXN1bHRLZXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEg
SURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsK
ICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1Y2Nl
c3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0UmVz
dWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRzU3Vj
Y2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBJREJHZXRBbGxSZXN1bHQmIGdldEFsbFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJl
c3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzLCByZXF1ZXN0SWRlbnRp
ZmllciB9OwotICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
R2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9
IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTIwNCwxNCArMjA0LDE0IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0
RGF0YTo6ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
CiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJlc3Vs
dCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlw
ZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1f
Z2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7Cisg
ICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3Vs
dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRh
OjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJS
ZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNzLCBy
ZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9
IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDcxN2IzZTJkZTUzYjM1M2ZlYjZkZDc1NTAwYTBlNWU2
OGM5NDdhM2YuLjYyMDYyYTFlMjk1ZjdiNTk4MTU4OTViNTdiZWMwMDhlNWIxODc2YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
c3VsdERhdGEuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJl
c3VsdC5tX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE5Myw3ICsxOTMsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1
bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7
Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbklu
Zm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbklu
Zm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8g
PSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29k
ZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKTsKKyAgICAgICAgYXV0byBvYmplY3Qg
PSBtYWtlVW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElEQktleURhdGE+
IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAoIW9w
dGlvbmFsKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5p
cXVlPElEQkdldFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0
KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2dl
dFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1
dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CisgICAgICAg
IGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCmluZGV4IDk4M2MxYzExYzk5YjQ1YjZjZTU0NGRmY2Fj
MDM3ZTRjNzM3Mjk1YzMuLjRmYjk5OTE5ZjY3ZDVmN2M5YWJjMTA5ZTJlMzAwMGNjZTRjNDQwOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJU
cmFuc2FjdGlvbkluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCkBAIC01NSw3ICs1NSw3IEBAIElEQlRyYW5z
YWN0aW9uSW5mbyBJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UoY29uc3QgSURCU2Vy
dmVyOjpJREJDb25uZWN0CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIHJlc3VsdCgoSURCUmVzb3Vy
Y2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pKSk7CiAgICAgcmVzdWx0Lm1fbW9kZSA9IElEQlRyYW5z
YWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZTsKICAgICByZXN1bHQubV9uZXdWZXJzaW9uID0gbmV3
VmVyc2lvbjsKLSAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CisgICAgcmVzdWx0
Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3Jp
Z2luYWxEYXRhYmFzZUluZm8pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3LDcgKzY3
LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICwgbV9vYmplY3RTdG9yZXMoaW5mby5tX29iamVjdFN0
b3JlcykKIHsKICAgICBpZiAoaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8pOwogfQogCiBJREJUcmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0aW9uSW5mbyhj
b25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTkxLDcg
KzkxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkluZm86Omlzb2xhdGVkQ29weShjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mIHNvdXJjZSwgSURCVHJhbnMKICAgICAgICAgZGVzdGluYXRpb24ubV9v
YmplY3RTdG9yZXMudW5jaGVja2VkQXBwZW5kKG9iamVjdFN0b3JlLmlzb2xhdGVkQ29weSgpKTsK
IAogICAgIGlmIChzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6
SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5m
byA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFz
ZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogI2lmICFMT0dfRElT
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJUcmFuc2FjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAppbmRleCA5MzBkODAyMzYxODIzMmFiZjZjMDgx
ZGYyMTI5NThmZjYyYTU1NWVkLi43Yjk0NzdlOGVjNTU0YzkxM2QyYTQ4YmU1NThlMTYzM2Q5M2Zj
ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCVHJhbnNhY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJ
REJUcmFuc2FjdGlvbkluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJUcmFuc2FjdGlv
bkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNPYmplY3Qp
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBXVEZNb3Zl
KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDg3YjFhZGNkOTY2NjIw
NmVjOTcxNjYwMzYyYjQwZTVhZDdkODAxZDEuLmM5Njg5NDQ0ZmQyMjQwMmNlZDIxMTNiM2JmYTBi
OWE1MjZjNjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblByb2Nl
c3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsK
ICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50
U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CiAgICAg
ICAgIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZp
Z2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5kZXggZjg3MjU3NGU4NWMyNDA4NzcyYjFkMTFh
MmU4YmNiNmRkNjBkYTI5Ny4uYTMxYmFkYjU0YWM5ODFlMGUzYmFkYWZlMjA5ODc4MjlkM2Y3NDAz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9O
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMmIE5hdmlnYXRvck1lZGlhQ2Fw
YWJpbGl0aWVzOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG8KIHsKICAgICBOYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlhQ2Fw
YWJpbGl0aWVzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcz4o
KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZN
b3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmlu
ZGV4IDUwZDBiYjBiMWVkNTNhNDMyNDU4ZDlmYjcxMzU3MGFlMGVjYTBkMDYuLmI5NzQzNGM0ZTYy
NDVkNzNjY2YyZDYyNWEwYTFiMDNlMTI5MGNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKIE1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlja2Vy
KCkKIHsKICAgICBpZiAoIW1fcGlja2VyT3ZlcnJpZGUpCi0gICAgICAgIG1fcGlja2VyT3ZlcnJp
ZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigqdGhp
cyk7CisgICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fcGlja2VyT3ZlcnJpZGUu
Z2V0KCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdWludDY0X3QgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWEKIAog
ICAgIExPRyhNZWRpYSwgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50KCVwICsgJWxsdSkiLCAmY2xpZW50LCBjb250ZXh0SWQpOwogCi0gICAgbV9j
bGllbnRTdGF0ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBj
b250ZXh0SWQpKTsKKyAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVudFN0
YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgc2NoZWR1bGVEZWxheWVk
VGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlv
blRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmNwcAppbmRleCBkNDE3YTEyMTY5MTExMjE1ZDU0MjI5MWUwM2M1OWQ1ZDZlN2ViM2Y0
Li43Y2JjNmExMzM1MWUwZDMyY2UyNTVhOWJhZGNiOTc0NGRhZjRkNDQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtMTc4
LDkgKzE3OCw5IEBAIE1lZGlhVGltZSBNZWRpYVNvdXJjZTo6Y3VycmVudFRpbWUoKSBjb25zdAog
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVk
KCkgY29uc3QKIHsKICAgICBpZiAobV9idWZmZXJlZCAmJiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMt
Pmxlbmd0aCgpICYmIHN0ZDo6YWxsX29mKG1fYWN0aXZlU291cmNlQnVmZmVycy0+YmVnaW4oKSwg
bV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5lbmQoKSwgW10oYXV0byYgYnVmZmVyKSB7IHJldHVybiAh
YnVmZmVyLT5pc0J1ZmZlcmVkRGlydHkoKTsgfSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAotICAgIG1fYnVm
ZmVyZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBtX2J1
ZmZlcmVkID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgZm9yIChhdXRv
JiBzb3VyY2VCdWZmZXIgOiAqbV9hY3RpdmVTb3VyY2VCdWZmZXJzKQogICAgICAgICBzb3VyY2VC
dWZmZXItPnNldEJ1ZmZlcmVkRGlydHkoZmFsc2UpOwogCkBAIC0xOTAsNyArMTkwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkg
Y29uc3QKIAogICAgIC8vIDEuIElmIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMubGVuZ3RoIGVxdWFscyAw
IHRoZW4gcmV0dXJuIGFuIGVtcHR5IFRpbWVSYW5nZXMgb2JqZWN0IGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KICAgICBpZiAoYWN0aXZlUmFuZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCiAg
ICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5lZCBieSBidWZm
ZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMu
CiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3QgcmFuZ2UgZW5k
IHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QK
IAogICAgIC8vIFJldHVybiBhbiBlbXB0eSByYW5nZSBpZiBhbGwgcmFuZ2VzIGFyZSBlbXB0eS4K
ICAgICBpZiAoIWhpZ2hlc3RFbmRUaW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyA0LiBMZXQg
aW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmluZyBh
IHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBtX2J1ZmZlcmVk
LT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBoaWdoZXN0RW5kVGltZSk7CkBAIC0yMjEsNyAr
MjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6
OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChzb3Vy
Y2VSYW5nZXMpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzZWVrVG9U
aW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kKQogCiAgICAgLy8gU2V0IGxpdmUgc2Vla2FibGUgcmFuZ2UgdG8gYmUgYSBuZXcg
bm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdlCiAg
ICAgLy8gd2hvc2Ugc3RhcnQgcG9zaXRpb24gaXMgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBpcyBl
bmQuCi0gICAgbV9saXZlU2Vla2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKGVuZCkpOworICAgIG1fbGl2ZVNlZWthYmxlID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlh
RGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhRGV2aWNlcy5jcHAKaW5kZXggZTQxODI3ODM4ZDYyY2EzOGZjM2JmM2JlNzhmOGY0YWE4
YWU1MjU5Ni4uN2IzNThmNWUwZGU0MmZiMjI2OGQzNjkwM2U1OGRiNWViNzhlOTBkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURl
dmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmNwcApAQCAtNTEsNyArNTEsNyBAQCBOYXZpZ2F0b3JNZWRpYURldmlj
ZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsK
ICAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZp
Z2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2Vz
PihuYXZpZ2F0b3ItPndpbmRvdygpKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ29udHJvbGxlci5jcHAKaW5kZXggOGQ3ZTYzY2M2MDZkNmRhMTlmYmRiMTJkZTU0
ZmI4NTVmZGY2MmM5OS4uMTRkZjExNjFkYWU2OGNjNDZjYjQ5ZWFhZTIxZjVlZjk4OWUyYWNhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFVzZXJNZWRpYUNvbnRyb2xs
ZXI6On5Vc2VyTWVkaWFDb250cm9sbGVyKCkKIAogdm9pZCBwcm92aWRlVXNlck1lZGlhVG8oUGFn
ZSogcGFnZSwgVXNlck1lZGlhQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgVXNlck1lZGlhQ29udHJv
bGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1l
KCksIHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7CisgICAg
VXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6
OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlY3VyZShEb2N1bWVudExvYWRlciYgZG9j
dW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBhYWE0MDAwMjA3MzY1ZmZjYmU1MjgxMjhlMjhjZTAyZjZjNjA3Y2Rk
Li5jOTg1YmMxOWEzMWQwMTE0NTY1YWJhYmE1ZjA2MGVlNTBkYTYxMTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cjo6Y2hhbm5lbEV2ZW50KFNjcmlwdEV4ZWN1dGkKICAgICBpbml0Lm5lZ290aWF0ZWQgPSBkYXRh
Q2hhbm5lbC0+bmVnb3RpYXRlZCgpOwogICAgIGluaXQuaWQgPSBkYXRhQ2hhbm5lbC0+aWQoKTsK
IAotICAgIGF1dG8gaGFuZGxlciA9ICBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOworICAgIGF1dG8gaGFuZGxlciA9ICBt
YWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5l
bCkpOwogICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoY29udGV4dCwg
V1RGTW92ZShoYW5kbGVyKSwgZnJvbVN0ZFN0cmluZyhsYWJlbCksIFdURk1vdmUoaW5pdCkpOwog
CiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWNoYW5uZWxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vLCBXVEZNb3ZlKGNoYW5uZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAKaW5kZXggZGVmMWY5MWVlZTllZDZlYzc4ZDEzYzY5ZWM0MzQ4ZjBhYTY4ZDM2
Ny4uZDFhNzRiODU3MWJlZTdlZTVlOWMzMTYyZWNhMmY0ZDZmZjQxZTQ1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2
b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+c2V0
QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RG
TW92ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+c2V0QmFja2VuZChtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsKICAg
ICBhdXRvJiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwogICAgIGFkZFBlbmRpbmdUcmFja0V2
ZW50KHJlY2VpdmVyLnJlbGVhc2VOb25OdWxsKCksIHRyYWNrLCBydGNTdHJlYW1zLCBudWxscHRy
KTsKIH0KQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNv
bGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2Nl
aXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RG
TW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSks
IHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiB9CiAKQEAgLTQ5OSw3ICs0OTksNyBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zYwogICAgIGlmICghc291cmNlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
Lm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpKTsKIAogICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KG1ha2VSZWYobmV3VHJhbnNjZWl2ZXIu
cmVjZWl2ZXIoKSksIG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkudHJhY2soKSwgcnRjUmVjZWl2
ZXItPnN0cmVhbXMoKSwgbWFrZVJlZihuZXdUcmFuc2NlaXZlcikpOwogfQpAQCAtNTM0LDcgKzUz
NCw3IEBAIE9wdGlvbmFsPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzPiBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpjcmVhdGVUcmFuc2NlCiAgICAgaWYgKCFyZXN1bHQub2soKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1vdmVW
YWx1ZSgpKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CiAgICAgcmV0dXJuIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzIHsgdHJhbnNjZWl2ZXItPmNyZWF0ZVNlbmRlckJh
Y2tlbmQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQsIFdURk1vdmUoc291cmNlKSksIHRyYW5zY2Vp
dmVyLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikgfTsKIH0K
IApAQCAtNTg1LDcgKzU4NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnRyYW5zY2VpCiB7CiAgICAgZm9y
IChhdXRvJiB0cmFuc2NlaXZlciA6IG1fYmFja2VuZC0+R2V0VHJhbnNjZWl2ZXJzKCkpIHsKICAg
ICAgICAgaWYgKHRyYW5zY2VpdmVyLT5zZW5kZXIoKS5nZXQoKSA9PSBiYWNrZW5kLnJ0Y1NlbmRl
cigpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2NlaXZl
ckludGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CiAgICAgfQogICAgIHJl
dHVybiBudWxscHRyOwogfQpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFu
bmVsCiB7CiAgICAgYXV0byBpbml0ID0gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpmcm9t
UlRDRGF0YUNoYW5uZWxJbml0KG9wdGlvbnMpOwogICAgIGF1dG8gY2hhbm5lbCA9IG1fYmFja2Vu
ZC0+Q3JlYXRlRGF0YUNoYW5uZWwobGFiZWwudXRmOCgpLmRhdGEoKSwgJmluaXQpOwotICAgIHJl
dHVybiBjaGFubmVsID8gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gY2hhbm5lbCA/IG1h
a2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6
IG51bGxwdHI7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hhbm5l
bChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0YUNo
YW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcAppbmRleCAyMDdmMTVlNjQ1N2I5ZGZjYWMxYzMzOWVhMzlmZWExZDc3ODU5ZDhi
Li5mYzkxY2NkMGJiZDFmZGJiYTc2NDJlNzA0ZjM3ZmU4NWNjNzJmZDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+
IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2UKIAogICAgIHBhZ2UtPmxpYldlYlJU
Q1Byb3ZpZGVyKCkuc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihwYWdlLT5zZXR0aW5ncygpLndl
YlJUQ0VuY3J5cHRpb25FbmFibGVkKCkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGli
V2ViUlRDUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIo
KSk7CiB9CiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKQEAgLTMx
MSw3ICszMTEsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlZpZGVvUmVjZWl2
ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aQogICAgIGF1dG8gc291cmNlID0g
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFj
a0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJj
ZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywgeyB9
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsK
ICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJD
b25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTMzNCw3
ICszMzQsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2ZXIg
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdQogICAgIGF1dG8gc291cmNlID0gUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lk
KSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJjZS5j
b3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
YXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
PigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2Vp
dmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJhdWRpbyJfcywgeyB9LCBX
VEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsKICAg
ICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTQwMCw3ICs0
MDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRFeGlzdGluZ1Nl
bmRlcihjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNl
bmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHJl
YW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmll
ZFBsYW5FbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
ICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNr
KCpzZW5kZXJCYWNrZW5kLCB0cmFjaywgbWVkaWFTdHJlYW1JZHMpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKIApA
QCAtNDM4LDcgKzQzOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyCiAgICAgICAgIGNvbnN0
IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgpOwogICAgICAgICBTdHJpbmcgdHJhY2tJ
ZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIHNlbmRlckJh
Y2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlz
LCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGF1dG8gbmV3
U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIG1ha2VSZWYodHJhY2spLCBWZWN0
b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwog
ICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXIodHJhY2tLaW5kLCB0cmFja0lk
KTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUo
V1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSwgbnVsbHB0cik7CkBAIC00NzIs
NyArNDcyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoU3RyaW5nIHsgdHJhY2tL
aW5kIH0sIGluaXQpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBz
ZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhp
cywgbnVsbHB0cik7CiAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgq
dGhpcywgU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVy
QmFja2VuZCkpOwogICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3
U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOwog
fQpAQCAtNDgyLDcgKzQ4Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5F
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFdURk1v
dmUodHJhY2spLCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1
dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4o
KnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8mIGJhY2tlbmQgPSAqc2VuZGVyQmFja2VuZDsKICAg
ICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCB0cmFjay5jb3B5UmVm
KCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIGlmICgh
bV9lbmRwb2ludC0+YWRkVHJhY2soYmFja2VuZCwgdHJhY2ssIFZlY3RvcjxTdHJpbmc+IHsgfSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmluZGV4
IDY4NTBlNmE4NWU5MDI0YmIxMTQ1YjZiOTQyMjljMGY2MTQyZGY3YWEuLjZhZWVhMTMzODkyZDIw
NjNmMDM1MzliOGVlYzRkYjliY2U2NGQ3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0
ZXJzJiBwYXJhbWUKIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2VuZGVy
LT5HZXREdG1mU2VuZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ0RUTUZT
ZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZC5jcHAKaW5kZXggZWI4NzFlYjdkYjAzODg0ZjRjYzdlMGFkZWY2ODc4
MmUxYzA5NzJkNy4uNWMwZDdlOTVlMmZkMTJlM2Y4NGYxN2NmYmViNmQ4NjdhNTFmMmU0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQu
Y3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2NlaXZl
ckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5y
ZWNlaXZlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJh
Y2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNr
ZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYg
YmFja2VuZCwgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6U291cmNlJiYgc291cmNlKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJh
Y2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQsIG1f
cnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiBSVENSdHBU
cmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRpcmVj
dGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDBjMzI4ZmFlNDQyMzU5OTI1MzMwNzJjODVkNmIz
MmZkYzZjMTM4MzguLjBlYmFmZjg5ZmZiYzUwMDNlMjQ2MWJhZGVlNTIwMzkxMTcxY2JkM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9uCiAgICAg
LCBtX2JvZHkob3B0aW9ucy5ib2R5KQogICAgICwgbV90YWcob3B0aW9ucy50YWcpCiAgICAgLCBt
X3N0YXRlKElkbGUpCi0gICAgLCBtX3Rhc2tUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihb
dGhpc10gKCkgeyBzaG93KCk7IH0pKQorICAgICwgbV90YXNrVGltZXIobWFrZVVuaXF1ZTxUaW1l
cj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKIHsKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5pc0Vt
cHR5KCkpIHsKICAgICAgICAgYXV0byBpY29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwob3B0
aW9ucy5pY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBhNjIwMzUzOTNj
N2ZiM2Y2ZGRmMDFjNWM4OWQ3NGYzYjVlZGQyZDQ0Li5kNDhmMjA1YTllMjQxNGUwN2Q3MjJmOTAz
MjVhN2MzNjRkNDg5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIGNvbnN0IGNoYXIqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCkKIAogdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNhdGlv
bkNsaWVudCogY2xpZW50KQogewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVU
byhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1h
a2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpz
dXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVu
dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCmluZGV4IDAzZmU5ZTM4Njc4ZjQwNTA3MzI1
NTA5YzIwMzg2N2M5Y2Y4MjBmZjEuLmM5OGM5OTg2ZGVkNmNkMjA1NDI2MTcyMTVmNjUzNmNlNThm
Mjc5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVv
dGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIERPTVdpbmRvd1F1b3RhKiBET01XaW5kb3dRdW90YTo6
ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dRdW90YSogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1F1b3RhKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpm
cm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd1F1
b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERP
TVdpbmRvd1F1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVu
dC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDdiYTFkM2Q0YjM2
OTQ0MGM2NGUxN2RkMjBjYTk0NTM4YjhhZDliNzQuLjdhMDgwNDU5NTY5ODNhMzFmNmQ4MzRlZjdl
YTc3MmZhNjY3MzZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
TmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1
b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdhdG9y
U3RvcmFnZVF1b3RhKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oTmF2aWdhdG9yKiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8TmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9t
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvclN0
b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVu
aXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQg
PSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3Jh
Z2VRdW90YS5jcHAKaW5kZXggOTVjM2U0MzY0NzMxNjJhNTBkNjFiNWNlNzUxNjVlZTY4YjIxYjcy
Ny4uMWExYzg0N2RjNDk3ZGM2NDg0NWY1NmVjZTU5MjYzYTQyNmFmNjMwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3Rv
cmFnZVF1b3RhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEqIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3IqCiB7
CiAgICAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nh
c3Q8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0
b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxl
bWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01X
aW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCAzNzk1NjUyNmZiZjI4NjkwZWNmMDM5
OTUyYzUyZjZlMDQ0NmJjYjRjLi45NjljMjM3ZjdjODE1NTE1M2RlMDcxZWM5NmE2MWE0YTQ2MmQz
ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dT
cGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgRE9NV2luZG93U3Bl
ZWNoU3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20oRE9NV2luZG93KiB3
aW5kb3cpCiB7CiAgICAgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzKj4oU3VwcGxlbWVudDxET01XaW5kb3c+
Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
bWFrZVVuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAppbmRl
eCA3MmI1NjNlNGJiZjdkY2UwM2ZhMzA4ODBkMmZhNzcwYjg5ODY5M2E0Li5lN2I2MmExYTE3YmQ5
NmE5ZjVhMTNmZDA5ZTc0OWFiNGJjZTE5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBT
cGVlY2hTeW50aGVzaXM6OnZvaWNlc0RpZENoYW5nZSgpCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyJiBTcGVlY2hTeW50aGVzaXM6OmVuc3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKQog
ewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQotICAgICAgICBtX3BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI+KHRoaXMpOworICAgICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpOwogICAgIHJldHVybiAq
bV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDYyZjY4ZWM2
NjNhODAyMTJjNmYzYWY3Yjg1ZTIzYzZiNGY3NDJhMGEuLjJmNTQyNzJhYzVjMDFkMGEyMzBlNWMw
ZGYwNDUyNGFmYjJhNGUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQXN5
bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEs
IGZsb2F0IHNhbXBsZVJhCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1
dG8gZGVjb2RpbmdUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1vdmUo
YXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spKTsKKyAgICBhdXRvIGRlY29kaW5nVGFzayA9IG1ha2VVbmlxdWU8RGVj
b2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3VjY2Vz
c0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CiAgICAgbV9xdWV1ZS5hcHBlbmQo
V1RGTW92ZShkZWNvZGluZ1Rhc2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUgdGFz
ayBpcyBlZmZlY3RpdmVseSB0YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAppbmRleCBiYzAw
ZWI5Zjg3ZDFiY2Q1OGNiZjc0OWI3ZGE3YzQ5M2NmN2U4ODc2Li5jZjkyNjljMzA0NGM0MzIyZDc0
NGQwNjI5ZGRhMGZhODk0OTNlY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw4IEBAIGNsYXNzIEF1
ZGlvQnVmZmVyQ2FsbGJhY2s7CiAvLyBBc3luY0F1ZGlvRGVjb2RlciBhc3luY2hyb25vdXNseSBk
ZWNvZGVzIGF1ZGlvIGZpbGUgZGF0YSBmcm9tIGFuIEFycmF5QnVmZmVyIGluIGEgd29ya2VyIHRo
cmVhZC4KIC8vIFVwb24gc3VjY2Vzc2Z1bCBkZWNvZGluZywgYSBjb21wbGV0aW9uIGNhbGxiYWNr
IHdpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBkZWNvZGVkIFBDTSBkYXRhIGluIGFuIEF1ZGlvQnVm
ZmVyLgogCi1jbGFzcyBBc3luY0F1ZGlvRGVjb2RlciB7CitjbGFzcyBBc3luY0F1ZGlvRGVjb2Rl
ciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQXN5bmNBdWRpb0RlY29kZXIpOwogcHVibGljOgogICAgIEFzeW5jQXVkaW9EZWNv
ZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IGJhOGMyNTVhZTdkN2RhNzNiYzlmZjY1
NTQzZjFlMzdiYzk1NDA0YjMuLjBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZh
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIEF1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKLSAgICBhZGRJbnB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQpKTsK
KyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRk
T3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291
bnQpKTsKIH0KIAogLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpIGFzIGFuIG9wdGltaXphdGlv
biBhbGxvd2luZyB0aGlzIG5vZGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW4tcGxhY2UgcHJvY2Vz
c2luZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYmMxODljMDhjYmVmYzdjMTk2MDY0NjZj
MDc2OGI4ZmE2MzRiMTZhYi4uMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZlNzkwYWJmYmU2ZTk4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2lj
UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQyLDggKzQyLDggQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIEF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkK
IHsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAx
KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAg
Ly8gVGhlIHN1YmNsYXNzIG11c3QgY3JlYXRlIG1fcHJvY2Vzc29yLgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwCmluZGV4IDQwYWMzMmM1YzU1YzNkMzJkMGUxNGI2YTdkMjJiMjQ2NzM5MGY0YmYuLjI1MTBj
NDBhN2Y2MTIzZDRjN2ZjMmQ2NDBhOTBiNGYwYTk4ZTZmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAK
QEAgLTczLDcgKzczLDcgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGUKICAgICBtX3BsYXliYWNr
UmF0ZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicGxheWJhY2tSYXRlIiwgMS4wLCAt
TWF4UmF0ZSwgTWF4UmF0ZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIG1vbm8uICBBIGNhbGwgdG8g
c2V0QnVmZmVyKCkgd2lsbCBzZXQgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMgdG8gdGhh
dCBvZiB0aGUgYnVmZmVyLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91
dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5NTZjMTU4NjIx
ODljNzE0MjljYmNmZDYwMDQyZjAwYzk4YmFlZjYuLmQ0Y2RiNzY1OGMwZjM1YjVmYzlhMjJjZTg5
OGJjYjJiOTllZTRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVl
TG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2Vf
dW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFr
ZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAgIC8vIEFjY29yZGluZyB0
byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVyIHBhZ2UgbmF2aWdhdGUuCiAg
ICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0aXZp
dHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCkBAIC0xNjYsNyArMTY2LDcgQEAgQXVk
aW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QKICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRy
dWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0
aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1
ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRR
dWV1ZT4oKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC00MzIsNyArNDMy
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gQXVkaW9Db250ZXh0OjpjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmUKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWNvZGVB
dWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4m
JiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICghbV9hdWRpb0RlY29kZXIpCi0gICAgICAgIG1f
YXVkaW9EZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAg
ICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigpOwog
ICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBs
ZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2sp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA5NzU4ODc1NDc0N2UxNTI0ODE4OWY0OTcwYzZk
MzNlM2M2YWUxZTExLi5kOWFiYjk3NzdhOWQyNWVlYWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YQogICAgICwgbV9tdXRlZChmYWxzZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlc3Rp
bmF0aW9uKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0
aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwog
fQogCiBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3Bw
CmluZGV4IDE2MzczY2U5Mzc4ZDMyMmZkZDljMjUzZjljNzZkOTYzZTYxM2NkM2IuLjRhODI1NWU2
ZjBhZjA3NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzksNyArMzks
NyBAQCBCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZp
bHRlcik7CiAKICAgICAvLyBJbml0aWFsbHkgc2V0dXAgYXMgbG93cGFzcyBmaWx0ZXIuCi0gICAg
bV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgZmFsc2UpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxCaXF1
YWRQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKIH0KIAogQmlxdWFk
RmlsdGVyVHlwZSBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCAwZTRl
MzY4NWI4MmNlNDc3ZWM0ZTU4NTQ3ZjE2YWQ4YjcwZmM3OTA0Li5lODRiOTgwMzU2NzBmYjFkY2Mz
MjcwOTY2M2QyYjM5MDU1MmU2NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEJpcXVhZFBy
b2Nlc3Nvcjo6fkJpcXVhZFByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtl
cm5lbD4gQmlxdWFkUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmNo
ZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlxdWFk
UHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lSZXNwb25zZShpbnQgbkZyZXF1ZW5jaWVzLCBjb25zdCBm
bG9hdCogZnJlcXVlCiAgICAgLy8gdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgcHJvY2Vz
c2luZyBydW5uaW5nIGluIHRoZSBhdWRpbwogICAgIC8vIHRocmVhZCBvbiB0aGUgbWFpbiBrZXJu
ZWxzLgogICAgIAotICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJp
cXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgYXV0byByZXNwb25zZUtlcm5lbCA9IG1ha2VVbmlx
dWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIAogICAgIHJlc3BvbnNlS2VybmVsLT5nZXRGcmVx
dWVuY3lSZXNwb25zZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5jeUh6LCBtYWdSZXNwb25zZSwgcGhh
c2VSZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IDIwYjhkYTE5ZTVmNDM5Y2ZlNTQ1NWYwMWRj
MjkwODc0NDZiMjNjMDguLmRmNTBmMjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMyZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdl
ck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1l
cmdlck5vZGUuY3BwCkBAIC01OSw5ICs1OSw5IEBAIENoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVs
TWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuCiAK
ICAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5wdXRzLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQotICAgICAgICBhZGRJbnB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgICAgIGFkZElu
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAotICAgIGFkZE91dHB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGluaXRp
YWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDQ2MzU0OThjMDM0YzU5MzBiNGU4ZjIyMDg2
ZTE0YjJiNGJkMjkxMTcuLjgyZjY5YTA0Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkxYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
U3BsaXR0ZXJOb2RlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIENoYW5uZWxTcGxpdHRlck5vZGU6
OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwogCi0gICAg
YWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFk
ZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAogICAgIC8vIENyZWF0
ZSBhIGZpeGVkIG51bWJlciBvZiBvdXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11bSBu
dW1iZXIgb2YgY2hhbm5lbHMgZmVkIHRvIGFuIGlucHV0KS4KICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCi0gICAgICAgIGFkZE91dHB1dChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgICAgICBhZGRPdXRwdXQo
bWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0aWFs
aXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Nv
bnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2
ZXJOb2RlLmNwcAppbmRleCAyMzgyZGFiY2M5Yzk5MjdjYWMzMWQzMjc1ZjIyMDNjYzhmNThhMDkz
Li5lMzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTUyLDgg
KzUyLDggQEAgQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDb252b2x2
ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhp
cykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsK
KyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAog
ICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFubmVs
Q291bnQgPSAyOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZl
ck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgLy8gQ3JlYXRlIHRo
ZSByZXZlcmIgd2l0aCB0aGUgZ2l2ZW4gaW1wdWxzZSByZXNwb25zZS4KICAgICBib29sIHVzZUJh
Y2tncm91bmRUaHJlYWRzID0gIWNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCk7Ci0gICAgYXV0
byByZXZlcmIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRp
b05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91
bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CisgICAgYXV0byByZXZlcmIgPSBtYWtlVW5pcXVlPFJl
dmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMs
IE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CiAKICAg
ICB7CiAgICAgICAgIC8vIFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDQyNjVhMDA3NDllYWZm
ZjZhOWUxYjlkMWRkYTYwZDRkYjcwMjhiMDMuLjgxYmQ3ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdj
ZTI1NTc4MDJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5
Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heEQKICAgICA6
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0
Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUp
OworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPERlbGF5
Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggYTc1YmE2YjdjOTJlNzQ0NGM2
NTYwOGU4YWUxOGY5ZDUwMDAyNmEwNC4uMTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5ZTZk
MmFjYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGVsYXlQcm9jZXNzb3I6On5EZWxheVBy
b2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gRGVsYXlQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlE
U1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlbGF5RFNQS2VybmVsPih0
aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKaW5k
ZXggYWEwZTRhODAxMTllYmVkOWRkMzY5NmIzZmExMzA1ZGRmMzJiZDA1Mi4uMTQwOTZkOGYwYzU5
NmE1Mjk3MTY2NmVmODI2N2EwMjNmZGI0NGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00
Niw4ICs0Niw4IEBAIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wCiB7CiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMp
KTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAg
YWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZhdWx0TnVtYmVy
T2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgbV90aHJlc2hvbGQgPSBBdWRpb1BhcmFtOjpjcmVh
dGUoY29udGV4dCwgInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CiAgICAgbV9rbmVlID0gQXVk
aW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJrbmVlIiwgMzAsIDAsIDQwKTsKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7ICAgIAotICAgIG1fZHluYW1p
Y3NDb21wcmVzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBs
ZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIG1fZHluYW1pY3ND
b21wcmVzc29yID0gbWFrZVVuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUoKSwg
ZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogfQogCiB2b2lkIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vR2Fpbk5vZGUuY3BwCmluZGV4IDZjOTRhNTIzYzNiMmEwMjEyYjJhNTRhMWE5YzhmMDI2YmJk
MWRiNWYuLjI1N2RmMmVjZTIzMzhjYmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC00Niw4ICs0Niw4
IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAKICAgICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImdhaW4i
LCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlu
cHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAKaW5kZXggMzgxYWU3Mjc5NGZiMGU3ZmVhNjMzMWFiZDMzYjIwYzE1ODQ1ZmY5Yi4uOTEy
ZTZlYjIzMjE0NTY0M2Q2ZmRhZmJjMTFlOTY3NjRjM2QyZjVkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZSk7CiAKICAgICAv
LyBEZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdoYXQg
dGhlIG1lZGlhIGVsZW1lbnQgLnNyYyBpcyBzZXQgdG8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1ha2VV
bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9
CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRG
b3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAKICAgICAgICAgaWYg
KHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUg
c2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgpOwotICAgICAgICAg
ICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5l
bFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICAgICAg
bV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxl
cj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gQnlwYXNzIHJlc2FtcGxpbmcuCiAgICAgICAgICAgICBtX211bHRpQ2hhbm5l
bFJlc2FtcGxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDVi
MmE1MDBkZDI5NGQxMDU1OGJjN2EwOGNmNzcxNmU0MjZiNWMyYWMuLmU0M2Y1NDQ4YmMyNmI4NmFm
NjkzZDAwOTk5NWM2NzM0ZjY5NTVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lCiAgICAgYXVkaW9Tb3VyY2VQ
cm92aWRlci0+c2V0Q2xpZW50KHRoaXMpOwogICAgIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVv
LiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIGZvcm1hdCBvZiB0aGUgTWVkaWFT
dHJlYW0ncyBhdWRpbyB0cmFjay4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UKICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNh
bXBsZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3Ig
PSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZTsKLSAgICAgICAgbV9tdWx0aUNoYW5uZWxS
ZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVG
YWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxl
ciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVy
T2ZDaGFubmVscyk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0gbnVt
YmVyT2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggNWI1MDI5YmZiY2U3N2FkNWI2YzNjODgzMjYwZGI5ZGVm
ZGY2MTA0Yi4uYTk5Y2VhYWQ2YjVjMjFlMDlkZDIyNTNjMmFjZjMwNDU1NDc1M2U3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXRUeXBlKG1fdHlwZSk7CiAK
ICAgICAvLyBBbiBvc2NpbGxhdG9yIGlzIGFsd2F5cyBtb25vLgotICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAK
aW5kZXggZjY0NzQ2OWUyMzU1ZWIzYTBjMDliM2IwODUyYmZiZWM2ZTQ4ZDI4ZC4uNTFjNjk5MTZm
ZmRlNzBmNWU2ODBhYTkyN2NlZmVmN2NhNzMyYzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFBhbm5lck5v
ZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3Qg
YmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFi
YXNlLgogICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVh
dGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7
CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAy
KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAg
Ly8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3Vu
dCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Blcmlv
ZGljV2F2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5jcHAKaW5kZXggYmIyYTA3ZDIzNTRlYmFmOTRkMDA0NjVhNGI0MWQ4NjA1NTU5OTg2Yi4uZWM5
YTE3YzRmNTZlYjk5NjZkYzE3NjI3ZTkzNDA1YmExZmQ0OGM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgUGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyhjb25zdCBmbG9h
dCogcmVhbERhdGEsIGNvbnN0IGZsb2F0KiBpCiAgICAgICAgIHJlYWxQWzBdID0gMDsKIAogICAg
ICAgICAvLyBDcmVhdGUgdGhlIGJhbmQtbGltaXRlZCB0YWJsZS4KLSAgICAgICAgbV9iYW5kTGlt
aXRlZFRhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVy
aW9kaWNXYXZlU2l6ZSkpOworICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChtYWtl
VW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CiAKICAgICAgICAg
Ly8gQXBwbHkgYW4gaW52ZXJzZSBGRlQgdG8gZ2VuZXJhdGUgdGhlIHRpbWUtZG9tYWluIHRhYmxl
IGRhdGEuCiAgICAgICAgIGZsb2F0KiBkYXRhID0gbV9iYW5kTGltaXRlZFRhYmxlc1tyYW5nZUlu
ZGV4XS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggM2I2MjgxZDFlODQzZWQyOTljZjYxNTNjNzMyNzk3
MDc0MTgwNjc3OC4uODAyMzczNDA3Zjc1ZDQ3ZTI1OWViNjA1NjM4MGY2MzVmMTNhY2VmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlz
ZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5hbHlz
ZXIoKQogICAgICwgbV9taW5EZWNpYmVscyhEZWZhdWx0TWluRGVjaWJlbHMpCiAgICAgLCBtX21h
eERlY2liZWxzKERlZmF1bHRNYXhEZWNpYmVscykKIHsKLSAgICBtX2FuYWx5c2lzRnJhbWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CisgICAgbV9hbmFseXNp
c0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOwogfQogCiBSZWFs
dGltZUFuYWx5c2VyOjp+UmVhbHRpbWVBbmFseXNlcigpID0gZGVmYXVsdDsKQEAgLTgzLDcgKzgz
LDcgQEAgYm9vbCBSZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mZnRTaXplICE9IHNpemUpIHsKLSAgICAg
ICAgbV9hbmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7Cisg
ICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KHNpemUpOwogICAg
ICAgICAvLyBtX21hZ25pdHVkZUJ1ZmZlciBoYXMgc2l6ZSA9IGZmdFNpemUgLyAyIGJlY2F1c2Ug
aXQgY29udGFpbnMgZmxvYXRzIHJlZHVjZWQgZnJvbSBjb21wbGV4IHZhbHVlcyBpbiBtX2FuYWx5
c2lzRnJhbWUuCiAgICAgICAgIG1fbWFnbml0dWRlQnVmZmVyLmFsbG9jYXRlKHNpemUgLyAyKTsK
ICAgICAgICAgbV9mZnRTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGQ1OWRlY2Y5OTUx
NmY2ZDAxYWY5YzFkOWZkYmYxZDBiMTAxOWU0MGYuLmQ1YjNhZmJmMjcxMDE0NTE0OTRiMTg5Mzc3
NjhiNjA1ZjZhM2I0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNjgsOCArNjgsOCBAQCBTY3JpcHRQ
cm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZQogICAgIEFTU0VSVChudW1iZXJPZklucHV0Q2hhbm5lbHMgPD0gQXVk
aW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwogCiAgICAgc2V0Tm9kZVR5cGUoTm9k
ZVR5cGVKYXZhU2NyaXB0KTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAg
aW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNDEwZDFkYWY1Yzg5NTQwMDlmZjA2
MzZhODI5MDBiZjk0YWY0ZjhmMS4uZjNkMjEyMmRmNTFjNGYxYTI5MjI0ZTY5M2FiNDk1YmJjMmI5
MzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJEU1BLZXJuZWwuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBXYXZlU2hhcGVy
RFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAogICAgIGlmICghbV90ZW1wQnVmZmVyKSB7Ci0gICAgICAgIG1fdGVtcEJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVt
ICogMik7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwotICAgICAgICBtX3VwU2FtcGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKLSAgICAgICAgbV9k
b3duU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50
dW0gKiAyKTsKLSAgICAgICAgbV91cFNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNhbXBs
ZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBzdGQ6
Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CisgICAgICAg
IG1fdGVtcEJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFu
dHVtICogMik7CisgICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAgICBtX3VwU2FtcGxlciA9IG1ha2VV
bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKKyAgICAgICAgbV9kb3duU2FtcGxl
ciA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAg
ICAgbV91cFNhbXBsZXIyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0g
KiAyKTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihS
ZW5kZXJpbmdRdWFudHVtICogNCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDg0ODY5OTNmMjEwODRj
Y2M2MWNjZDgwYjJjMTg3ZTA4YzE1NWZkMDEuLjZlN2U4ZGQxYzljMTlmYTNjODVlM2Q5ZDg1NWFi
OWY0NTc4NWI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFdhdmVTaGFwZXJOb2RlOjpXYXZl
U2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsKICAgICBzZXROb2RlVHlw
ZShOb2RlVHlwZVdhdmVTaGFwZXIpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1
ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CisgICAgbV9w
cm9jZXNzb3IgPSBtYWtlVW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2FtcGxl
UmF0ZSgpLCAxKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4IDI4
OWMzOWY1ZjNmOWY3YTc5ZTlhNWI2YTZkODMxNWI1OTFmNDMyZGEuLmJmZTVlMGU0N2ZiODRhMjhj
NjNjNmUyOGIzMmUwZmMxMWU1YzY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtNDYsNyArNDYsNyBA
QCBXYXZlU2hhcGVyUHJvY2Vzc29yOjp+V2F2ZVNoYXBlclByb2Nlc3NvcigpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVs
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlzKTsK
IH0KIAogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1
cnZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggYjFjNDlkYjUyM2I5MzZiMGE0ZWMyMjEwNDFi
NzdkYTdjYzE0NzhmZC4uMjBkNjA2OTcyNDI4OTczNzc5ODJiODRlZTczZDRkYTYzNGVkOGZjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiB1c2luZyBDcmVkZW50aWFsUHJvbWlzZSA9IERPTVBy
b21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8QmFzaWNDcmVkZW50aWFsPj4+
OwogCiBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvSGlkTWVzc2FnZS5jcHAKaW5kZXggOGMzZDEzNDZjNDAzMGNmYjNkODI3NzM3YTBhMTVm
M2YxY2I5YmFkNy4uMWI5MTJkOThkOWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQyZmFmMzU3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNz
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hp
ZE1lc3NhZ2UuY3BwCkBAIC0xNTAsOSArMTUwLDkgQEAgRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRN
ZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwgY28K
ICAgICB1aW50OF90IHNlcXVlbmNlID0gMDsKIAogICAgIHNpemVfdCBwb3MgPSBkYXRhLnNpemUo
KSA+IGtIaWRJbml0UGFja2V0RGF0YVNpemUgPyBrSGlkSW5pdFBhY2tldERhdGFTaXplIDogZGF0
YS5zaXplKCk7Ci0gICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJ
bml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBkYXRh
LnNpemUoKSkpOworICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBh
Y2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5zaXpl
KCkpKTsKICAgICBmb3IgKDsgcG9zIDwgZGF0YS5zaXplKCk7IHBvcyArPSBrSGlkQ29udGludWF0
aW9uUGFja2V0RGF0YVNpemUpCi0gICAgICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdl
dENvbnRpbnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOworICAgICAgICBtX3BhY2tldHMu
YXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBz
ZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKIH0KIAog
Rmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5p
dFBhY2tldD4gaW5pdFBhY2tldCwgc2l6ZV90IHJlbWFpbmluZ1NpemUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKaW5k
ZXggNTViN2IyZDcxNTM2YTIzNTQ5MTNhZTM2ZTlmYjkxZWYwMGE4ZjA4My4uMjZiODBhYThhNWYx
Mzk2M2M3NjhlN2U5MjNiYmFhYjJiODdiNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNzAsNyArNzAs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFja2V0
OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoYwogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1aW50
OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBkYXRh
U2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4o
Y2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RG
TW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCiAvLyBVMkYgSW5pdGlhbGl6YXRpb24gcGFj
a2V0IGlzIGRlZmluZWQgYXM6CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZp
ZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0
ZUZyb20KICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFwcGVu
ZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1
ZW5jZSwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRp
bnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9CiAK
IC8vIFUyRiBDb250aW51YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDAyMTQ1ZDBjYzJl
OGM5ZWFkYjBjODgyOTQxYjg1OWZjMGFlODA1MmQuLjViNjRhMDg3NDZhZjgwODBjZDJlNzI1MDNm
YTAwZDNjOTQ5ZmIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0
YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Up
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gcmVzdWx0OwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5j
aHJvbml6ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9w
ZW5UYXNrPigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVz
dWx0KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwog
ICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApAQCAtMjczLDcgKzI3
Myw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFz
ZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOworICAgIHRocmVhZC5zY2hlZHVsZUlt
bWVkaWF0ZVRhc2sobWFrZVVuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9u
aXplcikpOwogCiAgICAgLy8gRklYTUU6IGlPUyBkZXBlbmRzIG9uIHRoaXMgZnVuY3Rpb24gYmxv
Y2tpbmcgdW50aWwgdGhlIGRhdGFiYXNlIGlzIGNsb3NlZCBhcyBwYXJ0CiAgICAgLy8gb2YgY2xv
c2luZyBhbGwgb3BlbiBkYXRhYmFzZXMgZnJvbSBhIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGlyYXRp
b24gaGFuZGxlci4KQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRy
YW5zYWN0aW9uKCkKICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7CiAKICAgICBh
dXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwotICAgIGF1
dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1v
dmUodHJhbnNhY3Rpb24pKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVHJh
bnNhY3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0cmFuc2FjdGlvbiAl
cFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAgICAgZGF0YWJhc2VUaHJl
YWQoKS5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC01NDEsNyArNTQxLDcgQEAg
dm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewogICAgIGF1dG8mIHRocmVhZCA9IGRhdGFiYXNlVGhyZWFkKCk7CiAKLSAg
ICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPigm
dHJhbnNhY3Rpb24pOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2Fj
dGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5n
IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwg
dGFzay5nZXQoKSk7CiAgICAgdGhyZWFkLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsKIH0K
QEAgLTc2Myw3ICs3NjMsNyBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygp
CiAgICAgaWYgKHRocmVhZC50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKKyAg
ICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBz
eW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhX
VEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAKaW5kZXggM2JhYmQ0OTU2NmYxNGExYjNjMGQzYjE3YmY0YzdmMzJjNWUzZDVm
Ny4uZDY0OTdjMzk3ZmE0NzQyODU5ZTA1ODYyMjM2ZWRlZTQzZDRlZjM5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VUaHJlYWQ6
OkRhdGFiYXNlVGhyZWFkKCkKLSAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihzdGQ6Om1h
a2VfdW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCisgICAgOiBtX3RyYW5zYWN0
aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQog
ewogICAgIG1fc2VsZlJlZiA9IHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDhkZGNjNTk4NTUx
NTc2ZDJhMmMxMGY0MmU0YWQxMmE4MjU5YjUxOS4uYzI4YTk2ZjQ1ODM5ZWY1NGRhZjFmOTlhMWFk
NThkN2VjZDRhNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIExv
Y2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKIAog
ICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCi0gICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKKyAgICAgICAgbV9vcGVuRGF0
YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0byBv
cmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCkBAIC05NTYsNyArOTU2LDcgQEAg
dm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6ZW5z
dXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdpbiBl
dmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nQ3JlYXRlZC5nZXQob3JpZ2lu
KTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25lZFNl
dCA9IG1ha2VVbmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFtZVNl
dCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nQ3JlYXRlZC5hZGQob3JpZ2luLmlz
b2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAgfQpAQCAtMTAwMiw3ICsxMDAy
LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1h
cDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9y
aWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5nZXQo
b3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVkU2V0
ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVTZXQgPSBvd25l
ZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi5pc29sYXRlZENv
cHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCmluZGV4IDg1ZjFiNjM1YzNlNDliM2Zl
MWE4MWY5NDg3ODI0ODBlMWRlNDhmYjUuLjhhNTRhMzY2N2EwN2FhY2UwM2E5NjBmYjI1NjRmN2Vi
ZGYzYmQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxTdGF0ZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQ7CiBjbGFz
cyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ7CiAKIGNsYXNzIFNRTFN0YXRlbWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1FMU3RhdGVtZW50KERhdGFiYXNl
JiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNRTFZhbHVlPiYmLCBSZWZQdHI8U1FMU3RhdGVtZW50
Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmLCBpbnQgcGVy
bWlzc2lvbnMpOwogICAgIH5TUUxTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjBkNjk3MzQ3
NzRkYmZiZjMwYmQ4ZjM5Y2U0YzU5NTcyMTRlOTAwYy4uNGNiMDQxZTQ1MmM4MGY1ZjU5YmIyNzIx
ZWFiOGVjMWE4ZjYxODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0
ZW1lbnQsIE9wdGlvbmEKICAgICBlbHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJtaXNz
aW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8gc3Rh
dGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0
YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAgIGF1
dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0
YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOwogCiAgICAg
aWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50LT5zZXREYXRhYmFz
ZURlbGV0ZWRFcnJvcigpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246
Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAgICAgfQogCiAgICAgQVNTRVJUKCFtX3Nx
bGl0ZVRyYW5zYWN0aW9uKTsKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9y
ZWFkT25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRlVHJh
bnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOwogCiAg
ICAgbV9kYXRhYmFzZS0+cmVzZXREZWxldGVzKCk7CiAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZUF1
dGhvcml6ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVy
L05hdmlnYXRvcldlYkRyaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZl
ci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCmluZGV4IDc5YWE1NjE4MWZmZWYzYWIxYTkyYWE1N2Zl
Y2RiNmZiYTU5ZTZmMGIuLjEyOWQ4NmZmY2ZiZDE1N2E4MGIwMTkyZTNiNDk5NzEzM2JlYjc4MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldl
YkRyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdh
dG9yV2ViRHJpdmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBOYXZpZ2F0b3JXZWJEcml2ZXIqIE5h
dmlnYXRvcldlYkRyaXZlcjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZp
Z2F0b3JXZWJEcml2ZXIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJEcml2
ZXIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFt
ZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOworICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhu
YXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQ
VS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCmlu
ZGV4IDg4YTk3ODA0NGJjMWU3MDg5MzM1NjVkYzYyZDBhMzE0NmIzOGI0MjYuLjM3NmQxNTVjYTli
MmY1ZDJhNGFiMTg1MmM3NzZkOWMxOGYyZTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBOYXZpZ2F0b3JH
UFUqIE5hdmlnYXRvckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZp
Z2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHUFUqPihTdXBwbGVt
ZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgKaW5kZXggMWIzNDI1MDRkNjk1NTA4ZjA4MTZjY2I1NTgyZjViZDlh
YTc2MWE2Yi4uNWY1N2VmMTE3NzUzMWEwYWMzZDk2MGRlYjFkNDM4NzExYTRmMDViZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xh
c3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAKICAg
ICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKICAgICB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVl
PEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51bWVyYXRpb25N
ZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50
cnk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaApp
bmRleCAwZTMxZmZiZGUwYjE0ODZmNmM2ZjY1ZTIwZWI2MzhhZTg4MWI4N2Y4Li5jYmNjNDg0YjY4
MjUwYzBhYTA5YjU5OTQzYWRjNzllODEwMDkyNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50
cnlQb2ludFNjYWZmb2xkaW5nLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIE1ldGFsIHsK
IGNsYXNzIFR5cGVOYW1lcjsKIAogY2xhc3MgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbnRyeVBvaW50
U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5j
cHAKaW5kZXggODI1NDhiOGM2ZWEwYmU1YmJhODJkODk3Nzc2ZDc0NjMyMTBkOThlNi4uNTE5Yzc4
MmJlMmZjNmFmMmFjYWQxZGJiODhmOWFiMWE1ODQ3NjZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5j
dGlvbldyaXRlci5jcHAKQEAgLTc1Nyw5ICs3NTcsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQ
b2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVu
dAogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAg
fTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3MudmVy
dGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZXJ0ZXhFbnRyeVBv
aW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVO
YW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9t
YXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92
ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZl
cnRleEF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRyeVBv
aW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVO
YW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9t
YXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92
ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZl
cnRleEF0dHJpYnV0ZXMpOwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hl
ZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9p
bnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVy
RW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJj
ZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRj
aGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlv
biwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50
U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJS
ZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwg
bV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApAQCAtNzgzLDcgKzc4Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBv
aW50U2NhZmZvbGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVu
CiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICB9
OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5zaGFk
ZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwg
bV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnJl
c291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4o
ZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRT
ZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAs
IG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggMTg1YmEwYjA4OGE1
Y2VkNGM1YjY2MzZmYTk0NDJjMDAzNDBkZDAyYS4uNDBiNjJjMzdkYmUyNTgwZTIzZDU5MGMwOTFl
YmI0MTdjYTliODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjcyLDE5ICsyNzIs
MTkgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3JlYXRl
TmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICBzd2l0Y2ggKHVubmFtZWRUeXBlLmtp
bmQoKSkgewogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5jZTog
ewogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJl
bmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVy
ZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVm
ZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVmZXJl
bmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZl
cmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6
OktpbmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxB
U1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUo
KSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHBv
aW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRU
eXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5j
ZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9k
ZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRk
cmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVJlZmVyZW5jZVR5
cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5j
ZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6
OktpbmQ6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6
QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5
VHlwZS5udW1FbGVtZW50cygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlUeXBl
TmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVs
ZW1lbnRzKCkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggOTAxYzYxMDIwM2VlZmY0NjkwNWE4ZDZhZjM0NDgw
Yjk0NDUwNWMwMi4uM2RlYzA2MzAzY2E3OTU2NDljZjg3YTRmNTMwMDc2ZDc3YjhkODkwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
ZXIuY3BwCkBAIC05NzAsMTQgKzk3MCwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKIAogdm9pZCBDaGVja2VyOjph
c3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNUOjpV
bm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRp
b24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1h
cC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92
ZSh1bm5hbWVkVHlwZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4
cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkp
KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
ICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikp
OwogfQogCiB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNz
aW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJlc29sdmFibGVUeXBlUmVmZXJl
bmNlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVl
KCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBz
dGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9u
LCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRp
b24pKTsKIH0KQEAgLTk4NSwxMCArOTg1LDEwIEBAIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlwZShB
U1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyCiB2
b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVz
b2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3Rh
dGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewogICAgIHJlc29sdmluZ1R5cGUudmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmlu
Z1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1
bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVU
eXBlUmVmZXJlbmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBl
TWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1
bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgm
ZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CiAgICAgfSkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBl
QW5ub3RhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IDAxNjExNGE2MTBlMTEwMGVmZTY5NzJjYTJhMjM1MzI3
YzE1MmU3YWIuLjVlNDlmMDNhM2IzODI2ZDFmZTdjYjNhNTU4Nzk2NzY2NTc2OWZiY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5j
cHAKQEAgLTc0MCwxOSArNzQwLDE5IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGljKCkgLT4g
RXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KICAgICBzd2l0
Y2ggKHRva2VuLT50eXBlKSB7CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7CiAg
ICAgICAgIFBBUlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJu
IHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9Owor
ICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3Vs
dCkpIH07CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlNwZWNpYWxpemVkOiAgewogICAg
ICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAg
ICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVz
dWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZN
b3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpSZWdpc3Rlcjog
IHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFudGljKTsKLSAgICAgICAgcmV0
dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9
OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJl
c3VsdCkpIH07CiAgICAgfQogICAgIGRlZmF1bHQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwg
QnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6
OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5p
cXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVz
b2x2aW5nVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xS
ZXNvbHZpbmdUeXBlLmgKaW5kZXggNTU5Y2U4YmE5M2IyOWQ1MTdmYTc3M2Y2YTVmNTI3ZGRmNGE4
NWIwMS4uNDU3MDBjZWQ4ZmQzNDQ5YzRkYTQ5NTlmNzFhNDAyYWEwMmQ2ZTQzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZp
bmdUeXBlLmgKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVuY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewogLy8gSXQgZXhp
c3RzIHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBkb2Vz
IHRoZSByaWdodCB0aGluZy4KIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5Lgog
Y2xhc3MgUmVzb2x2aW5nVHlwZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgUmVzb2x2aW5nVHlwZSgpCiAgICAgICAgIDogbV9pbm5lcihSZWZQdHI8UmVzb2x2
YWJsZVR5cGVSZWZlcmVuY2U+KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAppbmRleCBiZjkwZjZjMzYwNTQ4ZDUyYzhmZDhl
ZWVjNzUzYzc4ZDhmYTliZjFjLi5kOTUyMjMwNWFkYTFlZTk3MWYxNjUyOGRlMDY2MDRiYjZhOTZi
MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZp
Z2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5h
dmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgV29ya2VyTmF2aWdhdG9yR1BVKiBXb3Jr
ZXJOYXZpZ2F0b3JHUFU6OmZyb20oV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAg
V29ya2VyTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2aWdh
dG9yR1BVKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3Vw
cGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JHUFU+
KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1l
bnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXIuY3BwCmluZGV4IGVkNWEzY2M4MzRmZTE5ZDQ4ODhiODU1NTA0YmExNTVkNDgzZmM0
MDcuLmMxYmFjODZkM2FiMmIwZDkxM2ZjZTc0MjE0MzFhOTQ0NTllZWQyZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0xNTMs
NyArMTUzLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OmNsZWFyQ2xpZW50KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZENvbm5lY3QoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1f
cGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkQ29ubmVjdCgpOwogICAgIH0pKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5
KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVu
ZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0pKTsK
QEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogCiB2b2lkIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEo
VmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShiaW5h
cnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX3BlbmRp
bmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92
ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlE
YXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0pKTsKQEAgLTE4Niw3ICsxODYsNyBAQCB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnVmZmVyZWRB
bW91bnQpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVkQW1v
dW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1v
dW50KTsKICAgICB9KSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVk
IGIKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAg
bV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAgICB9KSk7CkBAIC0yMDgsNyArMjA4
LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwg
V2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMg
Y2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtl
Q29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNv
bXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKICAgICAgICAgfSkpOwpAQCAtMjE5
LDcgKzIxOSw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlCiAKIHZvaWQgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIHsK
LSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFr
ZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlRXJy
b3IoKTsKICAgICB9KSk7CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogCiB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBncmFkZVVSTCgp
CiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGdyYWRlVVJMKCk7
CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDYwNzE0NDA5MjRmYjJjZTY3ZjUzNDA2MmQ3OWU4
ZTNiMDRlZTFjNTAuLmEwN2E4NzYzYWZiOTY5YjQyMDcwYmM0OWE4NjIzOWI3ODNkNmViYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVjdFN0
YXR1cyBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgcmVxdWVzdGVkVVIKICAg
ICBtX2FsbG93Q29va2llcyA9IHZhbGlkYXRlZFVSTC0+YXJlQ29va2llc0FsbG93ZWQ7CiAgICAg
U3RyaW5nIHVzZXJBZ2VudCA9IG1fZG9jdW1lbnQtPnVzZXJBZ2VudChtX2RvY3VtZW50LT51cmwo
KSk7CiAgICAgU3RyaW5nIGNsaWVudE9yaWdpbiA9IG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkudG9TdHJpbmcoKTsKLSAgICBtX2hhbmRzaGFrZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU29j
a2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwgY2xp
ZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CisgICAgbV9oYW5kc2hha2UgPSBtYWtlVW5pcXVl
PFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2VyQWdl
bnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwogICAgIG1faGFuZHNoYWtlLT5yZXNl
dCgpOwogICAgIGlmIChtX2RlZmxhdGVGcmFtZXIuY2FuRGVmbGF0ZSgpKQogICAgICAgICBtX2hh
bmRzaGFrZS0+YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKG1fZGVmbGF0ZUZyYW1lci5jcmVhdGVFeHRl
bnNpb25Qcm9jZXNzb3IoKSk7CkBAIC03MDMsNyArNzAzLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzRnJhbWUoKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZy
YW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1l
UXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VV
bmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IFdlYlNvY2tldEZyYW1l
OjpPcENvZGVUZXh0OwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVTdHJp
bmc7CiAgICAgZnJhbWUtPnN0cmluZ0RhdGEgPSBzdHJpbmc7CkBAIC03MTMsNyArNzEzLDcgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0
cmluZykKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkK
IHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFt
ZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJh
bWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAg
ZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJh
bWVUeXBlVmVjdG9yOwogICAgIGZyYW1lLT52ZWN0b3JEYXRhLnJlc2l6ZShkYXRhTGVuZ3RoKTsK
QEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFt
ZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhcgogdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2Rl
LCBCbG9iJiBibG9iKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9
PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3Vu
aXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRG
cmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5mcmFtZVR5
cGUgPSBRdWV1ZWRGcmFtZVR5cGVCbG9iOwogICAgIGZyYW1lLT5ibG9iRGF0YSA9ICZibG9iOwpA
QCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5n
RnJhbWVRdWV1ZSgpCiAgICAgICAgICAgICAgICAgcmVmKCk7IC8vIFdpbGwgYmUgZGVyZWZlZCBh
ZnRlciBkaWRGaW5pc2hMb2FkaW5nKCkgb3IgZGlkRmFpbCgpLgogICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9ibG9iTG9hZGVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmJsb2JE
YXRhKTsKLSAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlz
KTsKKyAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJM
b2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKICAgICAg
ICAgICAgICAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKICAgICAg
ICAgICAgICAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KG1fZG9jdW1lbnQuZ2V0KCksICpmcmFtZS0+
YmxvYkRhdGEpOwogICAgICAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBlbmQo
V1RGTW92ZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCmluZGV4IGYyZmE2MjA5YzA0
OGY1MTUxOGEyNWVlYzEzYWVmMjU2NGM5ZjRlN2IuLmVlMzNlYTBmZTVjZjFkNWJmNzlhMmRhMDY3
MDdiNzNjZDNhNzhjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTE1NSw3ICsxNTUs
NyBAQCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkKIAog
c3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhpcyk7
CiB9CiAKIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0CkBA
IC0xNzAsOCArMTcwLDggQEAgYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRl
KCkgY29uc3QKICNpZiBVU0UoWkxJQikKIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5h
YmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRUYWtl
T3Zlck1vZGUgbW9kZSkKIHsKLSAgICBtX2RlZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJT
b2NrZXREZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7Ci0gICAgbV9pbmZsYXRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViU29ja2V0SW5mbGF0ZXI+KCk7CisgICAgbV9kZWZsYXRlciA9IG1ha2VV
bmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOworICAgIG1faW5mbGF0
ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOwogICAgIGlmICghbV9kZWZsYXRl
ci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2luZmxhdGVyLT5pbml0aWFsaXplKCkpIHsKICAgICAgICAg
bV9kZWZsYXRlciA9IG51bGxwdHI7CiAgICAgICAgIG1faW5mbGF0ZXIgPSBudWxscHRyOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVmbGF0
ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvCiBzdGQ6OnVuaXF1ZV9wdHI8
RGVmbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShXZWJT
b2NrZXRGcmFtZSYgZnJhbWUpCiB7CiAjaWYgVVNFKFpMSUIpCi0gICAgYXV0byByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8gcmVz
dWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBpZiAoIWVu
YWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5vcENv
ZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExl
bmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBAIC0xOTYsNyArMTk2LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6
OmRlZmxhdGUoV2ViU29ja2V0RnIKICAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9kZWZsYXRl
ci0+c2l6ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTIxMCw3ICsy
MTAsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRleHQo
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1
dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBp
ZiAoIWVuYWJsZWQoKSAmJiBmcmFtZS5jb21wcmVzcykgewogICAgICAgICByZXN1bHQtPmZhaWwo
IkNvbXByZXNzZWQgYml0IG11c3QgYmUgMCBpZiBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJhbWUg
ZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAppbmRleCAx
ZDZmMTc4MjJjODA1MjgxYjcwYTQxNjIwZGNkZWU2YWQyYWI4ODljLi40YTQ4NjVmODQ5NGQwNjEz
ZWFjMzIxYTU5NGY4YmFlMTk5OTZiYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgV2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKGludCB3aW5kb3dCaXRzLCBD
b250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHQKIHsKICAgICBBU1NFUlQobV93aW5kb3dCaXRzID49
IDgpOwogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPD0gMTUpOwotICAgIG1fc3RyZWFtID0gc3Rk
OjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5nZXQo
KSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFdl
YlNvY2tldERlZmxhdGVyOjpyZXNldCgpCiBXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0SW5m
bGF0ZXIoaW50IHdpbmRvd0JpdHMpCiAgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykKIHsK
LSAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9zdHJl
YW0gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAgICBt
ZW1zZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5OTQwNzNlYWE1ZThiMjMw
ZDFjOGIwMGMxNmM1OTY0M2U5Nzg0MjY4Li5kYzZmNjYwZmQzODhjZWZmYWYwZWJlZjZlNjYwZTZi
Njk1YmI2MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAogCiAgICAgYm9vbCBz
ZW50ID0gbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh7CiAg
ICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLAotICAgICAg
ICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJveHks
IHBlZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigpLCBs
b2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFtjbGllbnRXcmFw
cGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IG1ha2VV
bmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250ZXh0
LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKGNsaWVudFdyYXBw
ZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJsaWVyLCB3ZSBuZWVkIHRvIGtp
Y2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBlZXIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCmluZGV4IGQ5N2I1YzJhODVh
OWQyMzI4Zjk4NDBmNDRkM2QxZTk2MzJjODJkOWUuLjc3NmM0M2FlYzBiOWI1YmRlYWRjM2RkODkx
MjZhY2VkNmJhNzUxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
TmF2aWdhdG9yV2ViVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2
aWdhdG9yV2ViVlIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIE5hdmlnYXRvcldlYlZSKiBOYXZpZ2F0
b3JXZWJWUjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JXZWJW
Uiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYlZSKj4oU3VwcGxlbWVudDxO
YXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICgh
c3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5hdmlnYXRvcldlYlZSPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUo
KSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5j
cHAKaW5kZXggYmMyM2Q1OWNjMzEyMzdiMTQ5N2E3NmFjYzU5ZDNlYWY1ZDJiNTg0MC4uNmNhNjdm
MzkxYTMxZmNkMzg2OTI1NWIyMWYyZmNiN2YzZmJmOWJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5T
U0wuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbCA6
IHB1YmxpYyBDcnlwdG9EaWdlc3RDb250ZXh0IHsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHRJbXBsPigpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4oKTsKICAgICB9CiAKICAgICBD
cnlwdG9EaWdlc3RDb250ZXh0SW1wbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCAzMTUzMTY4MDgwN2I3MmQ1ZWY5MzgwOTE0ZTdhZTI0
MGFkOWQwMzk3Li5lNTNlMTk1YjM1ZjQ5OGY3OTUyNTE1MWViYzJhY2ViNWZhZmNkMjkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKQEAgLTMy
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIFBBTCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4gQ2xv
Y2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tHZW5lcmlj
PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrR2VuZXJpYz4oKTsKIH0KIAogQ2xvY2tH
ZW5lcmljOjpDbG9ja0dlbmVyaWMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9t
YWMvQ2xvY2tDTS5tbQppbmRleCBjNjg5MzIxNWYwNmIwYzY3NGQ1NDYwODMzYjFhNGQ1MWNjMzJi
NjE0Li45ZTA3MWI3ODE0ZTQ0ZmUwMDQ0MmU2NmM3MjBiMmJmYjMxMzA2OWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQpAQCAtMzksNyArMzksNyBA
QCBzdGF0aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDsKIAogc3RkOjp1
bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDbG9ja0NNPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrQ00+KCk7CiB9
CiAKIENsb2NrQ006OkNsb2NrQ00oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKaW5kZXggY2FjYWI4NTY4Yzg2MTEyZDljZGZlZmMzMDkwMjZhZDlj
ODE1MzNlNS4uYjM1ZmMxNTY0MzdmMWNhMDlkNjQyMmJkNTljNzEzM2ZhYzJjNjBhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNTc1
LDcgKzE1NzUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogdm9pZCBBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdDb21w
dXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKCkKIHsKICAgICBpZiAoIW1fY29t
cHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSkKLSAgICAgICAgbV9jb21wdXRlZE9iamVjdEF0dHJp
YnV0ZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2Fj
aGU+KCk7CisgICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IG1ha2VVbmlx
dWU8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlPigpOwogfQogCiB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggZWRmZGJiMGEwNmZkNmVkYTI1MDQ4
Yjk3MTliOWVmMWJhOWUxMzQ0My4uZTZkZWE5NjExZjliNDg4MGE1YTE5YjlhZDFlMWJkZTcxYzE4
NDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAgLTc3
Nyw3ICs3NzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShEaWRT
ZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlOb3RpZnkgc3luYwogICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCBpZiBzeW5jaHJvbm91c2x5IG5vdGlmeSBpcyBmYWxzZSwgcXVldWUgYSBtaWNyb3Rh
c2sgdG8gcnVuIGZpbmlzaCBub3RpZmljYXRpb24gc3RlcHMgZm9yIGFuaW1hdGlvbiB1bmxlc3Mg
dGhlcmUKICAgICAgICAgICAgIC8vIGlzIGFscmVhZHkgYSBtaWNyb3Rhc2sgcXVldWVkIHRvIHJ1
biB0aG9zZSBzdGVwcyBmb3IgYW5pbWF0aW9uLgogICAgICAgICAgICAgbV9maW5pc2hOb3RpZmlj
YXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSB0cnVlOwotICAgICAgICAgICAgTWljcm90YXNr
UXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNy
b3Rhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKKyAgICAg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1
ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rh
c2tQZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZmluaXNoTm90aWZpY2F0aW9uU3Rl
cHNNaWNyb3Rhc2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaE5v
dGlmaWNhdGlvblN0ZXBzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01Qcm9taXNlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21p
c2VQcm94eS5oCmluZGV4IDdkYTQ2YTYxNTA0ZWYyNDgxNWE2OTRkZmJhMTJjMjhiMWVmNGZlNjYu
LjYyMWI4OTA1MWJiNDhkYjAzMDFlYTgwNDdjN2FmZWZmYjY4Y2RlNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCkBAIC02MCw2ICs2MCw3IEBAIGNs
YXNzIERPTVByb21pc2VQcm94eSB7CiAKIHRlbXBsYXRlPD4KIGNsYXNzIERPTVByb21pc2VQcm94
eTxJRExWb2lkPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
RE9NUHJvbWlzZVByb3h5KCkgPSBkZWZhdWx0OwogICAgIH5ET01Qcm9taXNlUHJveHkoKSA9IGRl
ZmF1bHQ7CkBAIC04NCw2ICs4NSw3IEBAIGNsYXNzIERPTVByb21pc2VQcm94eTxJRExWb2lkPiB7
CiAvLyBGb250RmFjZSBhbmQgRm9udEZhY2VTZXQuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBl
PgogY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjayB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlICgpPjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAppbmRleCAwY2U0NTk1MGM1Mzkx
ZjYwNjk2ZmQ0MGQ4OWQ5MjdkYTM4NmE4N2QzLi42Y2VkZDc2NjQ1ZWM0ZjViZjQ2MDkzMmI2YTZk
MTczMzdhZDgxNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIu
aApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHQ0NvbnRy
b2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEdDQ29udHJvbGxlcik7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95
ZWQ8R0NDb250cm9sbGVyPjsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGRiMGMxZGM3NmY4YTI4OTcwNDVlZTJjZmM5MTky
M2Q1OGRmMWI2ZjkuLmM1YzQ3MDYxYmZhY2ExZmNhNzI4YmUyN2IwYTJiNGE5ZjBiMzAyNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAt
MjEwLDcgKzIxMCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9v
cChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyCiAgICAgSlNET01XaW5kb3dC
YXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsK
IAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09i
amVjdCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVh
ZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBt
YWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFp
blRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNr
LT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXggNjI5NWY1ODRjZmU4YTE3MjlkZGY2YjE4ZDc3
NTQ5ZmQ0NGM5YTBiZS4uZGI1ZTc3MzQ5MGJlZGZiZjNlMGMxMGNmMjNkMGEzNmM4YTNiZGE4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3Rv
bS5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCBFdmVudFRhcmdldCogSlNFdmVudFRhcmdldDo6dG9X
cmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFy
Z2V0V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3QoVk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSkK
IHsKICAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0V2ZW50VGFyZ2V0Kj4o
dm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRU
YXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRh
cmdldCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5kb3codm0sIHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVy
Pih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CiAgICAg
aWYgKGF1dG8qIHNjb3BlID0gdG9KU1dvcmtlckdsb2JhbFNjb3BlKHZtLCB0aGlzVmFsdWUpKQot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2Nv
cGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVu
dFRhcmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBkODMxNjA0Y2JhZWI4N2YwN2QxMmVhZGRhNGJm
MDUzMWE3MGJiNDAyLi45YmQ2NjQ0NjAxNzA1NDk1YTk0ZTdiM2ZhZGYwNDhmM2M3YjA0M2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoK
IAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09i
amVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01D
YWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFz
ayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90
YXNrUXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDExNGZmM2M4YTVkZjAzOTAyODNiMWE2N2NlNjA4ZDdmNDI0NmU3YzIuLjM1Y2NkNDk2MzVlMDYx
MTk0ZTk3MjkzZTcxMmY3YWEzNzJjNDliYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzMwMCw3ICszMzAwLDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmUKICAgICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGNvbnRlbnRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXplKCkp
OworICAgIGF1dG8gY29udGVudHMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CiAKICAgICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZmZXIq
PiB2aXNpdGVkOwogICAgIGZvciAoc2l6ZV90IGFycmF5QnVmZmVySW5kZXggPSAwOyBhcnJheUJ1
ZmZlckluZGV4IDwgYXJyYXlCdWZmZXJzLnNpemUoKTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7CkBA
IC0zNDUxLDcgKzM0NTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
Pj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAjZW5kaWYKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJz
ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IG1h
a2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIGF1dG8gY29kZSA9IENs
b25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZzdGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJy
YXlCdWZmZXJzLCBpbWFnZUJpdG1hcHMsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAg
ICB3YXNtTW9kdWxlcywgCkBAIC0zNDY5LDcgKzM0NjksNyBAQCBFeGNlcHRpb25PcjxSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0
YXRlJgogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdU
Rk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9z
dE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwgV1RGTW92ZShpbWFn
ZUJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICAgICAgICAgICwgc3Rk
OjptYWtlX3VuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAgICAgICAg
ICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQogI2VuZGlmCiAg
ICAgICAgICAgICAgICAgKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDVjNDY2Mjk0YmVlNTZjMjFiZjBmNjNkMTVi
MGY4ZGYwZjI3YTNhMGUuLjRmNGIwY2YzYjdlZWNkZGQwNzg3MDI1NTIwODg5NWU0NWZhMmEwN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKGFycmF5TGVuZ3RoKTsKIAotICAgIGF1dG8gYXJy
YXlCdWZmZXJDb250ZW50c0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+KCk7CisgICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5p
cXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICB3aGlsZSAoYXJyYXlMZW5ndGgt
LSkgewogICAgICAgICB1bnNpZ25lZCBidWZmZXJTaXplOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcAppbmRleCAyNDZmNjRhOWY2MzIyYjU4NzBjYmI2ODJlZGIy
ZDRlZGI5NTNlYzdjLi4zYjExMjUyYWU2NGNhZjJlNGZlNzM5ZTMxZWUxMDk5NTRkNTZhNTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRh
LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29y
bGQoVk0qIHZtKQogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gbmV3IEpTVk1DbGll
bnREYXRhKCp2bSk7CiAgICAgdm0tPmNsaWVudERhdGEgPSBjbGllbnREYXRhOyAvLyB+Vk0gZGVs
ZXRlcyB0aGlzIHBvaW50ZXIuCiAgICAgCi0gICAgdm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFp
bnQoc3RkOjptYWtlX3VuaXF1ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERh
dGEpKTsKKyAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChtYWtlVW5pcXVlPERPTUdD
T3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOwogICAgICAgICAKICAgICBjbGll
bnREYXRhLT5tX25vcm1hbFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoKnZtLCB0cnVl
KTsKICAgICB2bS0+bV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3Jl
VHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDE2YTc2YzQ5NTI5YTRiYjg3
MWNiNjZjYTNhZDc1YTJkNzZhODA2NTUuLmQyMzk4NTdhYTNiZGRlOWZlYjljYjg3NDBmY2Y1ZDY0
OWUzNTBkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsK
ICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3Rv
dHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtl
ckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGll
bnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3Bl
KTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2Nv
bnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmlu
ZGV4IDI5YzgxODY4MzZlYTA1NDExZThmMWVkNjQxYzA1NzBjZTgxNzY4MTUuLmFhNTZlMmZkZTg1
NTc3YWNmOWMwNDc0Yzg5ODc3ZjRlMGQ1YzUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xh
c3MuY3BwCkBAIC04MSw3ICs4MSw3IEBAIE1ldGhvZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29u
c3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFu
Y2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9p
c2EtPmhhc01ldGhvZCAmJiBtX2lzYS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKSB7Ci0gICAgICAg
IGF1dG8gbWV0aG9kID0gc3RkOjptYWtlX3VuaXF1ZTxDTWV0aG9kPihpZGVudCk7CisgICAgICAg
IGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxDTWV0aG9kPihpZGVudCk7CiAgICAgICAgIENNZXRo
b2QqIHJldCA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgbV9tZXRob2RzLnNldChuYW1lLmltcGwo
KSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTEwMyw3ICsxMDMs
NyBAQCBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBz
dGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9i
aiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzUHJvcGVydHkgJiYgbV9p
c2EtPmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gZmllbGQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENGaWVsZD4oaWRlbnQpOworICAgICAgICBhdXRvIGZpZWxkID0gbWFrZVVu
aXF1ZTxDRmllbGQ+KGlkZW50KTsKICAgICAgICAgQ0ZpZWxkKiByZXQgPSBmaWVsZC5nZXQoKTsK
ICAgICAgICAgbV9maWVsZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKGZpZWxkKSk7CiAgICAg
ICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0Jy
aWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBm
MmY2MjA4MmE4MDhhMTlmMTBhNWQ5MzVkOTIyYjc3M2MxMjIxYzI4Li4wNGNkZGNkMjRjYWE4Mjlj
MzJlNTZlYzI3M2FmYmQzNTFmMjU0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdl
SlNDLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUm9vdE9iamVjdDsKIGNsYXNzIFJ1bnRpbWVP
YmplY3Q7CiAKIGNsYXNzIEZpZWxkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwg
Y29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9J
bnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IGI4NmY3NTFhMGE3
MTM4YmUwMDc3NmE3OGNiYzJhNmQ0NWRkMzc1MDIuLmEzZDhkMzJmMjhkZDgwNThhNGFiNDQyNzM5
NTM0NDA3NGYyNmM3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5t
bQpAQCAtMTM0LDcgKzEzNCw3IEBAIE1ldGhvZCogT2JqY0NsYXNzOjptZXRob2ROYW1lZChQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiAgICAgICAgICAgICAgICAg
bWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOm9iamNNZXRo
b2RTZWxlY3Rvcl07CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFt
ZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyopbWV0aG9kTmFtZS5nZXQoKV0pIHx8ICFzdHJj
bXAob2JqY01ldGhvZFNlbGVjdG9yTmFtZSwgYnVmZmVyLmRhdGEoKSkpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNz
LCBvYmpjTWV0aG9kU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gbWFr
ZVVuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CiAgICAg
ICAgICAgICAgICAgbWV0aG9kUHRyID0gbWV0aG9kLmdldCgpOwogICAgICAgICAgICAgICAgIG1f
bWV0aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxk
TmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25z
CiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZv
cktleTpVVEY4S2V5TmFtZV07CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFw
cGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8
IFtrZXlOYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkg
ewotICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNG
aWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleU5hbWUpOworICAgICAgICAgICAgICAgIGF1
dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNGaWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVm
KWtleU5hbWUpOwogICAgICAgICAgICAgICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAg
ICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVs
ZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIwLDcgKzIyMCw3IEBAIEZpZWxkKiBP
YmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2Uq
IGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0Ns
YXNzIHdlYlNjcmlwdE5hbWVGb3JLZXk6b2JqY0l2YXJOYW1lXTsKIAogICAgICAgICAgICAgICAg
IGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8ICFzdHJjbXAob2JqY0l2YXJOYW1lLCBqc05hbWUuZGF0
YSgpKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdG
aWVsZCA9IG1ha2VVbmlxdWU8T2JqY0ZpZWxkPihvYmpjSVZhcik7CiAgICAgICAgICAgICAgICAg
ICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fZmllbGRD
YWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobmV3RmllbGQpKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0K
aW5kZXggZTA4YjA0OGUzYjU2ODQyOThjZGVmZDkzZWI5MTg4Mzg5MTU2ZjQzOC4uM2I5M2UxODc4
Mzg1NGMyNDQ0NmUxY2ZhNTc1ODQ2NmYwZjBhN2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBl
eGVjKQogICAgIAogICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOild
KXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3Mq
PihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2Jq
Y01ldGhvZD4gZmFsbGJhY2tNZXRob2Qoc3RkOjptYWtlX3VuaXF1ZTxPYmpjTWV0aG9kPihvYmpj
Q2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlw
dDp3aXRoQXJndW1lbnRzOikpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+
IGZhbGxiYWNrTWV0aG9kKG1ha2VVbmlxdWU8T2JqY01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwg
QHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50
czopKSk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2Fz
dDxPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVjLT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1l
KCk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRp
Zmllci5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3Rh
bmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVy
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRl
cnMuY3BwCmluZGV4IDgzZDQ0ZTA2N2ZiZGY1NDdmNmM4OGI2N2EzNmViNTNmNjkxNDY2ZWUuLmYx
NzFhNTgyMDNmOThhZjE1NTQ3ODBlMDUxOWUwNGExZTUzYTBiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcApA
QCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjpwcmludCgpIGNvbnN0
CiAjZW5kaWYKIAogQ29tYmluZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMoKQotICAg
IDogbV9wcmVmaXhUcmVlUm9vdChzdGQ6Om1ha2VfdW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkp
CisgICAgOiBtX3ByZWZpeFRyZWVSb290KG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkK
IHsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjphZGRQ
YXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25zdCBWZWN0b3I8VGVybT4mIHBhdHRlCiAgICAg
ICAgIGlmIChuZXh0RW50cnlJbmRleCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAgICAgbGFz
dFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+ZWRnZXNbbmV4dEVudHJ5SW5kZXhdLmNoaWxk
LmdldCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdl
cy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIHN0ZDo6
bWFrZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKKyAgICAgICAgICAgIGxhc3RQcmVm
aXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQo
dGVybSksIG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKICAgICAgICAgICAgIGxh
c3RQcmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmxhc3QoKS5jaGlsZC5nZXQoKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggOGM3ZTNmN2Q3ZjFl
MGQ1NWFhZDg5MzRhYmJhNWFhNzBmYjhmODVjZi4uNzdmZWI2MGM1MGJjOGE0ZjI0YjI3Njk2YWQx
MTBkMWVkYTc0MjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKQEAgLTQ5LDYgKzQ5LDcgQEAg
c3RydWN0IFJlc291cmNlTG9hZEluZm87CiAvLyAxKSBJdCBzdG9yZXMgdGhlIHJ1bGVzIGZvciBl
YWNoIGNvbnRlbnQgZXh0ZW5zaW9uLgogLy8gMikgSXQgcHJvdmlkZXMgQVBJcyBmb3IgdGhlIFdl
YkNvcmUgaW50ZXJmYWNlcyB0byB1c2UgdGhvc2UgcnVsZXMgZWZmaWNpZW50bHkuCiBjbGFzcyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIC8vIC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFjZS4gVGhpcyBjYW4gYmUg
dXNlZCBieSB1cHBlciBsYXllci4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cAppbmRleCA5NmUyZDYzNGI4OTNiMzk5MzA0YThiMmIyODVlNjFmNGU0NjlkYzBjLi5iMmE5YTc4
MzUyMjc3MjgzZjk1ZDg0OWQwM2IxNTZmY2RjNzIxZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcApAQCAtMTE1LDMxICsxMTUsMzEgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5
cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkRlY3J5cHQ6CiAgICAgICAgIHN3aXRjaCAoKmlk
ZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FF
U19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09BRVA6
IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxn
b3JpdGhtUnNhT2FlcFBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19DQkM6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NG
QjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9B
bGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFyYW1zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6QUVTX0NUUjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGlj
dGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6QUVTX0dDTTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252
ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHN0YXRlLCB2YWx1ZS5n
ZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHBhcmFtcyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFy
YW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBA
IC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgc3dpdGNo
ICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlJTQVNTQV9QS0NTMV92MV81OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkhNQUM6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQTogewogICAg
ICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1F
Y2RzYVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKQEAgLTE2MCwxMyArMTYwLDEzIEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVh
c2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJ
ZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1z
ID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZh
dWx0OgpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UlNBRVNfUEtDUzFfdjFfNTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252
ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHN0YXRlLCB2YWx1
ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CkBAIC0yMDMs
NyArMjAzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNo
SWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElk
ZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVu
dGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdl
blBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfQ1RSOgpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAg
ICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBh
cmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFt
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0yMjMs
MTQgKzIyMywxNCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhh
c2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNo
SWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElk
ZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFt
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAgICAgICAgYXV0
byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4o
c3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tl
eVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGRlZmF1bHQ6CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKIAog
ICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0
aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihzdGF0ZSwgbmV3VmFsdWUpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6SEtERjogewpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNy
eXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsK
ICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpQQktERjI6IHsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9B
bAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAg
ICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMjc5LDcgKzI3OSw3IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpJbXBvcnRLZXk6
CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAg
ICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihw
YXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UlNBX1BTUzoKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgRXhjZXB0
aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxp
emVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQ
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yOTgsNyArMjk4LDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfR0NNOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DRkI6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVT
X0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewogICAgICAgICAg
ICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5
UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwpAQCAtMzA3LDE5ICszMDcsMTkgQEAgc3RhdGlj
IEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4g
bm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNl
cHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4
Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50
aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkVDREg6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERp
Y3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkhLREY6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6UEJLREYyOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVu
aXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTMyOSw3ICszMjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlw
dG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6VW53cmFwS2V5OgogICAgICAgICBzd2l0Y2ggKCpp
ZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVT
X0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IgfTsKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzogewogICAgICAg
ICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNL
ZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQ
YXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewpAQCAt
MzU0LDEyICszNTQsMTIgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlm
IChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
aGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhh
c2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQ
YXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAgICAgICAgICAg
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTUy
MCwxNiArNTIwLDE2IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4gY3Jvc3NUaHJlYWRDb3B5SW1wb3J0UGFyYW1zKGNvCiB7CiAgICAgc3dpdGNoIChp
bXBvcnRQYXJhbXMucGFyYW1ldGVyc0NsYXNzKCkpIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM6OkNsYXNzOjpOb25lOiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICAgICAg
cmVzdWx0LT5pZGVudGlmaWVyID0gaW1wb3J0UGFyYW1zLmlkZW50aWZpZXI7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6
Q2xhc3M6OkVjS2V5UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1FY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobUVjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpIbWFjS2V5UGFyYW1zOgotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihj
cm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oaW1w
b3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1I
bWFjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1h
Y0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyczo6Q2xhc3M6OlJzYUhhc2hlZEltcG9ydFBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihjcm9z
c1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1z
PihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBk
YmNjYzkwMGYzMzc0OGNkMjA2N2Y2MGNiMjkwYzBiZDYwMDY1NTMzLi5hNDJmNTY0ZjgxZmUxZjBl
YTA5NDQzZDFmMTA1M2MxYzNjZDBjZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwCkBAIC0yMTcsMTIgKzIxNywxMiBAQCBjbGFzcyBDU1NDYWxjUHJpbWl0
aXZlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoY2F0ZWdvcnkoKSkgewogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0
ZWdvcnk6Ok51bWJlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNF
eHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9hdFZhbHVlKCkpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUo
KSk7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoOgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCht
X3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNvcmU6OkZp
eGVkKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0
aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwg
V2ViQ29yZTo6Rml4ZWQpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJj
ZW50OgogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnRMZW5ndGg6IHsK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3Ro
PihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50
Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRG
bG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKICAg
ICAgICAgfQogICAgICAgICAvLyBPbmx5IHR5cGVzIHRoYXQgY291bGQgYmUgcGFydCBvZiBhIExl
bmd0aCBleHByZXNzaW9uIGNhbiBiZSBjb252ZXJ0ZWQKICAgICAgICAgLy8gdG8gYSBDYWxjRXhw
cmVzc2lvbk5vZGUuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnROdW1iZXIgbWFrZXMgbm8g
c2Vuc2UgYXMgYSBMZW5ndGguCkBAIC01MjAsNyArNTIwLDcgQEAgY2xhc3MgQ1NTQ2FsY09wZXJh
dGlvbiBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgbm9kZXMudW5jaGVja2VkQXBwZW5kKFdU
Rk1vdmUobm9kZSkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3Zl
KG5vZGVzKSwgbV9vcGVyYXRvcik7CiAgICAgfQogCiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkg
Y29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5
bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5j
cHAKaW5kZXggYzQ0Y2ViYzUxMjBlZDgzMjZkOWExYjJhNjU2YjkzNjdiNmUxOTEyOC4uZTVhZThi
NzdhNTE0ZjA5YzNiNDk0NDFiNTYyZjVjMmExZWM3NTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKQEAgLTE2NywxMSArMTY3LDExIEBAIHZvaWQg
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgICAgIHNp
bXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICBB
U1NFUlQoIWRlZmF1bHRTdHlsZSk7Ci0gICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgICAgIGRlZmF1bHRRdWlya3NT
dHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgZGVm
YXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKLSAgICBk
ZWZhdWx0UHJpbnRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7
CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAg
ICBkZWZhdWx0UHJpbnRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAg
ICAgbWVkaWFRdWVyeVN0eWxlU2hlZXQgPSAmU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoQ1NT
UGFyc2VyQ29udGV4dChVQVNoZWV0TW9kZSkpLmxlYWtSZWYoKTsKIAogICAgIC8vIFN0cmljdC1t
b2RlIHJ1bGVzLgpAQCAtMTkwLDEwICsxOTAsMTAgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVl
dHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsK
ICAgICBBU1NFUlQoIXNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKIAotICAgIGRlZmF1bHRTdHls
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFN0
eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICAvLyBUaGVyZSBhcmUg
bm8gbWVkaWEtc3BlY2lmaWMgcnVsZXMgaW4gdGhlIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgogICAg
IGRlZmF1bHRQcmludFN0eWxlID0gZGVmYXVsdFN0eWxlOwotICAgIGRlZmF1bHRRdWlya3NTdHls
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFF1
aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKIAogICAgIHNpbXBs
ZURlZmF1bHRTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hl
ZXQsIHN0cmxlbihzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiAgICAgZGVmYXVsdFN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldCgqc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA3NzA5YjVkZWFmYmZlOWY5YWIx
MWFjMDc3YzYxOWQ3OTRkMTY0MmYyLi42NDZjMTRhMTFhYzY0NWI5OTI2MTQ5ZjI5ZTk4MDBjNGM3
MjY3YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTc3LDEwICs3NywxMCBA
QCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwg
Q1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBEbwogICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2Fk
aW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxl
QmluYXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRpbmcg
JiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQs
IGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSkp
Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZh
Y2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZvbnQpOworICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250
RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRG
YWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVs
ZW1lbnQpOworICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJj
ZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwgZm9udEZhY2VFbGVtZW50KTsK
IAogICAgICAgICBpZiAoc291cmNlKQogICAgICAgICAgICAgZm9udEZhY2UuYWRvcHRTb3VyY2Uo
V1RGTW92ZShzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCmluZGV4
IDA1ZTNhM2Y2ZTIxYmM5MjgxNzg1NTY5YTE0YWE1MGZmNTJlNGEyNzAuLjE4ZTgzNGQ2OTBhNmVi
NTEwMWRjOTBjOGRlNWRiNWU3YTFiMGM1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U2V0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxv
Y2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmIGZhbWlsCiAgICAg
ICAgIGZhbWlseUxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUZv
bnRGYW1pbHlWYWx1ZShmYW1pbHlOYW1lKSk7CiAgICAgICAgIGZhY2UtPnNldEZhbWlsaWVzKGZh
bWlseUxpc3QuZ2V0KCkpOwogICAgICAgICBmYWNlLT5zZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0
aWVzKGl0ZW0pOwotICAgICAgICBmYWNlLT5hZG9wdFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPENT
U0ZvbnRGYWNlU291cmNlPihmYWNlLmdldCgpLCBmYW1pbHlOYW1lKSk7CisgICAgICAgIGZhY2Ut
PmFkb3B0U291cmNlKG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCksIGZh
bWlseU5hbWUpKTsKICAgICAgICAgQVNTRVJUKCFmYWNlLT5jb21wdXRlRmFpbHVyZVN0YXRlKCkp
OwogICAgICAgICBmYWNlcy5hcHBlbmQoV1RGTW92ZShmYWNlKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAppbmRleCBkZTZmMzlkM2Y1ZDg3MzFkOTllNWViM2M5
NjhlMjlhZDFlYWNiZmU2Li5jNmM1YzM5NTQwYTVjNTA1Y2RmNGQ1OWM3NDZjMzkxODVjOWUwM2Iy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcApAQCAtMTQwLDcgKzE0MCw3
IEBAIENTU1J1bGUqIENTU0dyb3VwaW5nUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QK
IENTU1J1bGVMaXN0JiBDU1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+Pihj
b25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0aGlzKSk7CisgICAgICAgIG1fcnVsZUxpc3RD
U1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+
Pihjb25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0aGlzKSk7CiAgICAgcmV0dXJuICptX3J1
bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggZmZkZDNkMGFhNjU3ZjI1ZWFmMzFkNTcwYzU4NjhlZDUz
MDllMmVmZC4uNTU1MWYyYzY5MTdkMDMzMDcyNmFjZGY4MTA5MWE5MWZhYjRlMGI1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMTEwLDcg
KzExMCw3IEBAIEdlbmVyYXRlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJ
bWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUpCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6
OnNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUsIEdlbmVyYXRlZEltYWdlJiBp
bWFnZSkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2VzLmNvbnRhaW5zKHNpemUpKTsKLSAgICBtX2lt
YWdlcy5hZGQoc2l6ZSwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRo
aXMsIHNpemUsIGltYWdlKSk7CisgICAgbV9pbWFnZXMuYWRkKHNpemUsIG1ha2VVbmlxdWU8Q2Fj
aGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOwogfQogCiB2b2lkIENTU0lt
YWdlR2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoRmxvYXRTaXplIHNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggYzkwOTgzMmRh
MGU1MTkwMjUzNTEzYTM5ODMxOTFhN2MyZjM5MzAwNS4uNmYxZWIzMzg2ZDlmYmM3MmQ0NDM3ODVk
MWQxOWM0ZGQ4YzVjMzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZy
YW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNw
cApAQCAtMjIwLDcgKzIyMCw3IEBAIENTU0tleWZyYW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVsZTo6
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENTU1J1bGVMaXN0JiBDU1NLZXlmcmFtZXNSdWxl
Ojpjc3NSdWxlcygpCiB7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAg
ICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxp
c3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3Jh
cHBlciA9IG1ha2VVbmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0tleWZyYW1lc1J1bGU+PigqdGhp
cyk7CiAgICAgcmV0dXJuICptX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNDgwYTg5ODUyMzdhZGE5MGExMTc4ZTBiMjc5ZTBl
NjY4MDdlMzM0MS4uYzg4ZDFlZGM5M2I3YTZjODNmMjE3N2JhYzc2N2Y5Yjc4MmVlNzU4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0
cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMoKQogICAgIGlmICghY2FuQWNj
ZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3J1bGVMaXN0
Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOworICAgICAgICBtX3J1bGVMaXN0
Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOwog
ICAgIHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmluZGV4IDY1YTJmZGY4ZGZhY2I0ZDdmNzFk
NzYxY2IyMTY2YjFhOTI4NGMwNzAuLjkxNGJkZTRhMmRlOWFhMjEwNmMwMTA2M2I4MDhkOWNhNGZm
ZjZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIERPTUNTU1BhaW50V29ya2xldCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpmcm9t
KERPTUNTU05hbWVzcGFjZSYgY3NzKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxET01DU1NQYWludFdvcmtsZXQqPihTdXBwbGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZy
b20oJmNzcywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUNTU1BhaW50V29y
a2xldD4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01D
U1NQYWludFdvcmtsZXQ+KGNzcyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92
ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IDdlY2Q5M2Q3ZGMzZDQzMmVhZjgy
YmM5NTZlNjFkNDg5YTUxMDYyNWIuLjBkZjZhYWU5NmYwZTFjNzBiMzc1NTYxNjQ5ZWUzNWQyOGVi
NGMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0
b21Qcm9wZXJ0eS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eSogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbShET01DU1NOYW1lc3BhY2UK
IHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NQ1NTUmVnaXN0ZXJDdXN0
b21Qcm9wZXJ0eSo+KFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0
eT4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01DU1NS
ZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcAppbmRleCBkODU5NmZkMWIyNDU5ZGUwN2UxYzg5OWNjMDc5ZmMxOTg1MTE2
NWU5Li44MmI3ZmNjMzBlNTgyNzQ5OTIwMmUyOGI4MzA4NmNmMGZhNDRhYzU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wgRG9j
dW1lbnRSdWxlU2V0czo6c19pc0ludmFsaWRhdGluZ1N0eWxlV2l0aFJ1bGVTZXRzIHsgZmFsc2Ug
fTsKIERvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50UnVsZVNldHMoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlcikKICAgICA6IG1fc3R5bGVSZXNvbHZlcihzdHlsZVJlc29sdmVyKQogewotICAg
IG1fYXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRo
b3JTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNh
YmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBEb2N1bWVu
dFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNvbnN0
CiAKICAgICAvLyBNZWRpYSBxdWVyaWVzIG9uIHVzZXIgYWdlbnQgc2hlZXQgbmVlZCB0byBldmFs
dWF0ZWQgaW4gZG9jdW1lbnQgY29udGV4dC4gVGhleSBiZWhhdmUgbGlrZSBhdXRob3Igc2hlZXRz
IGluIHRoaXMgcmVzcGVjdC4KICAgICBhdXRvJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yID0gbV9zdHls
ZVJlc29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3IoKTsKLSAgICBtX3VzZXJBZ2VudE1lZGlhUXVl
cnlTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX3VzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX3VzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6
bWVkaWFRdWVyeVN0eWxlU2hlZXQsIG1lZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2
ZXIpOwogCiAgICAgLy8gVmlld3BvcnQgZGVwZW5kZW50IHF1ZXJpZXMgYXJlIGN1cnJlbnRseSB0
b28gaW5lZmZpY2llbnQgdG8gYWxsb3cgb24gVUEgc2hlZXQuCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgRG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSgpCiB7CiAgICAgYXV0byYg
ZXh0ZW5zaW9uU3R5bGVTaGVldHMgPSBtX3N0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5leHRlbnNp
b25TdHlsZVNoZWV0cygpOwogICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxl
UmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpOwotICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBhdXRvIHRlbXBVc2VyU3R5bGUgPSBt
YWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hl
ZXQgPSBleHRlbnNpb25TdHlsZVNoZWV0cy5wYWdlVXNlclNoZWV0KCkpCiAgICAgICAgIHRlbXBV
c2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHBhZ2VVc2VyU2hlZXQtPmNvbnRlbnRzKCksIG1l
ZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2ZXIpOwogICAgIGNvbGxlY3RSdWxlc0Zy
b21Vc2VyU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVT
aGVldHMoKSwgKnRlbXBVc2VyU3R5bGUsIG1lZGlhUXVlcnlFdmFsdWF0b3IsIG1fc3R5bGVSZXNv
bHZlcik7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0
PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxlcykKICAgICBzaXpl
X3Qgc2l6ZSA9IHJ1bGVzLnNpemUoKTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGF1dG8gcnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsK
KyAgICBhdXRvIHJ1bGVTZXQgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZXNb
aV0ucnVsZSwgcnVsZXNbaV0uc2VsZWN0b3JJbmRleCwgcnVsZXNbaV0uc2VsZWN0b3JMaXN0SW5k
ZXgpOwogICAgIHJ1bGVTZXQtPnNocmlua1RvRml0KCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVs
ZUZlYXR1cmU+JiBydWxlcykKIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6cmVzZXRBdXRob3JTdHls
ZSgpCiB7CiAgICAgbV9pc0F1dGhvclN0eWxlRGVmaW5lZCA9IHRydWU7Ci0gICAgbV9hdXRob3JT
dHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0g
bWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hy
aW5rVG9GaXQoKTsKIH0KIApAQCAtMTk1LDEyICsxOTUsMTIgQEAgc3RhdGljIFZlY3RvcjxJbnZh
bGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0
cmluZyYKICAgICAgICAgICAgIGF1dG8gYXJyYXlJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PigqZmVhdHVyZS5tYXRjaEVsZW1lbnQpOwogICAgICAgICAgICAgYXV0byYgcnVsZVNldCA9IG1h
dGNoRWxlbWVudEFycmF5W2FycmF5SW5kZXhdOwogICAgICAgICAgICAgaWYgKCFydWxlU2V0KQot
ICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7Cisg
ICAgICAgICAgICAgICAgcnVsZVNldCA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICAgICAg
ICAgIHJ1bGVTZXQtPmFkZFJ1bGUoZmVhdHVyZS5ydWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5kZXgs
IGZlYXR1cmUuc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgICAgICAgICAgaWYgKGZlYXR1cmUuaW52
YWxpZGF0aW9uU2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uU2VsZWN0b3JB
cnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7CiAg
ICAgICAgIH0KLSAgICAgICAgYXV0byBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PigpOworICAgICAgICBhdXRvIGludmFs
aWRhdGlvblJ1bGVTZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaEVsZW1lbnRBcnJheS5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1hdGNoRWxlbWVudEFycmF5W2ldKQogICAg
ICAgICAgICAgICAgIGludmFsaWRhdGlvblJ1bGVTZXRzLT5hcHBlbmQoeyBzdGF0aWNfY2FzdDxN
YXRjaEVsZW1lbnQ+KGkpLCBXVEZNb3ZlKG1hdGNoRWxlbWVudEFycmF5W2ldKSwgV1RGTW92ZShp
bnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2ldKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxl
bWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDA1ZDM4NWE1NThjNDhjNDhlZThkYTkwZjZhMThj
YjRlNzVhNmE5NWEuLjA1YjQ1N2ZkNjgyMGM2N2YwZTBmYmU5MzA4N2I4Y2VmMDgyOWViYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMjkxLDcg
KzI5MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNlCiAgICAgaWYgKG1fbWF0Y2hlZFJ1bGVz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gcnVsZURhdGFWZWN0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOworICAgIGF1
dG8gcnVsZURhdGFWZWN0b3IgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigp
OwogICAgIHJ1bGVEYXRhVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hlZFJ1
bGVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1bGVz
KQogICAgICAgICBydWxlRGF0YVZlY3Rvci0+dW5jaGVja2VkQXBwZW5kKCptYXRjaGVkUnVsZS5y
dWxlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCAyMTIyNDVkZWRjYWZmOTU2YWQ0
NDEwN2I5ZWI0NGNiNDEzMjhhYWRiLi5lMWIxYWYyMGZiMTFhZTNkZmVlMTkyY2FjOTJlNjJjZGVh
NTU3ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVm
ZmVyKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgUmVmPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYmIGFy
cmF5QnVmZmVyVmlldykKIHsKLSAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NT
Rm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RG
TW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKKyAgICBhdXRvIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NT
Rm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RG
TW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3Zl
KHNvdXJjZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggM2IyMGQ0MTMz
Mzc1MzNkNmNiM2M1OGNiM2QxMDRmMGYwNGI1ZTYxOS4uZTFlMWQ3MjEyMTFlNmRlMDFhOGE4NmUw
ZDQwZDg1Mjg5OTdiMzU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8
RGVwcmVjYXRlZENTU09NVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3Jh
cEZvckRlcHJlY2F0ZWRDUwogICAgIC8vIFRoZSBtYXAgaXMgaGVyZSB0byBtYWludGFpbiB0aGUg
b2JqZWN0IGlkZW50aXR5IG9mIHRoZSBDU1NWYWx1ZXMgb3ZlciBtdWx0aXBsZSBpbnZvY2F0aW9u
cy4KICAgICAvLyBGSVhNRTogSXQgaXMgbGlrZWx5IHRoYXQgdGhlIGlkZW50aXR5IGlzIG5vdCBp
bXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5IGFuZCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJl
bW92ZWQuCiAgICAgaWYgKCFtX2Nzc29tVmFsdWVXcmFwcGVycykKLSAgICAgICAgbV9jc3NvbVZh
bHVlV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRy
PERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CisgICAgICAgIG1fY3Nzb21WYWx1ZVdyYXBwZXJz
ID0gbWFrZVVuaXF1ZTxIYXNoTWFwPENTU1ZhbHVlKiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01W
YWx1ZT4+PigpOwogICAgIAogICAgIGF1dG8mIGNsb25lZFZhbHVlID0gbV9jc3NvbVZhbHVlV3Jh
cHBlcnMtPmFkZChpbnRlcm5hbFZhbHVlLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPigp
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNsb25lZFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
RmVhdHVyZS5jcHAKaW5kZXggZGZmZGE2ZjUxZGY5NTRkMjA2ZjAzZDBjNzM1NjBkZGEzOTJkMTQz
MC4uNDRlZWIxZDcwMmQyZjlkY2I2YjEyYjU1Mjc4MTU2N2ZkMDBkMmU1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZUZlYXR1cmUuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNl
dDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIAogICAgIGZvciAo
YXV0byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAgICAg
IGNsYXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVs
ZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBuYW1l
QW5kTWF0Y2guc2Vjb25kKSk7CiAgICAgICAgIGlmIChuYW1lQW5kTWF0Y2guc2Vjb25kID09IE1h
dGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChu
YW1lQW5kTWF0Y2guZmlyc3QpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUnVsZUZlYXR1cmVT
ZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgICAgIGF1
dG8qIHNlbGVjdG9yID0gc2VsZWN0b3JBbmRNYXRjaC5maXJzdDsKICAgICAgICAgYXV0byBtYXRj
aEVsZW1lbnQgPSBzZWxlY3RvckFuZE1hdGNoLnNlY29uZDsKICAgICAgICAgYXR0cmlidXRlUnVs
ZXMuZW5zdXJlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJ
SUxvd2VyY2FzZSgpLCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVj
dG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQo
UnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1
bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG1hdGNoRWxlbWVudCwgc2VsZWN0b3IpKTsKICAg
ICAgICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAg
ICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2Fs
TmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwpAQCAtMjAxLDE0ICsyMDEsMTQgQEAg
dm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikKICAg
ICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFZlY3RvcihvdGhlci51bmNvbW1vbkF0dHJp
YnV0ZVJ1bGVzKTsKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLmNsYXNzUnVs
ZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7
CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIu
dmFsdWUpOwogICAgIH0KICAgICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuY2xhc3Nl
c0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5kKCkp
OwogCiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5hdHRyaWJ1dGVSdWxlcykg
ewogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10gewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7
CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIu
dmFsdWUpOwogICAgIH0KICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuYXR0
cmlidXRlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIuYXR0cmlidXRlc0FmZmVjdGluZ0hv
c3QuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGZhNmI5MTIwMjEzZWM1NGJiNjU5
MDNjZmFlNjY5YmQ0NjZmYmIwMjcuLjNiYmJiZmViY2EwMDk5NzgyYWYzOTgxZWI4NjczNmNlNjgw
MzZlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFJ1
bGVTZXQ6OmFkZFRvUnVsZVNldChjb25zdCBBdG9tU3RyaW5nJiBrZXksIEF0b21SdWxlTWFwJiBt
YXAsIGNvbnN0IFJ1bGVEYQogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgcnVsZXMgPSBtYXAu
YWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghcnVsZXMpCi0gICAg
ICAgIHJ1bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlRGF0YVZlY3Rvcj4oKTsKKyAgICAgICAg
cnVsZXMgPSBtYWtlVW5pcXVlPFJ1bGVEYXRhVmVjdG9yPigpOwogICAgIHJ1bGVzLT5hcHBlbmQo
cnVsZURhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgKaW5kZXggNjlhZjU1ODE1NjU0YmUzMjBmMWE5ZmQ3MWE3NzY2N2Q5MjkzZmE5Ny4uODg3NzVh
ZDdiYThhYTU5MGFkN2JmNzJhMzdkM2I1ZjY1YjVkMmQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMzQ4LDkgKzM0OCw5IEBAIGlubGluZSBMZW5n
dGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgo
Y29uc3QgTGVuZ3RoCiAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNh
bGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNz
aW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIp
OwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJl
c3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNr
ZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7
Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+
KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMu
dW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgx
MDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8
Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6
U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdU
Rk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaAppbmRleCA5YTE5MWQxN2RkOGUzZWRjYzFjMTMwYzI2NTkwZTBjYTZmNGUz
NmEzLi5jNWMyYmY1ZDBmNWZjNzkxMGFmZjE2MjU5OTkwYzQzODY2MGMxNDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC04MTMsNyArODEzLDcgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmUKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5jb2xv
ckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y29sb3IoKTsKLSAgICAg
ICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2lu
dCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVy
dHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5z
cGFyZW50KTsKKyAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRh
PihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29s
b3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4
dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRv
dyhXVEZNb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0
IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCkBAIC04MjksNyAr
ODI5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxUZXh0
U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2wKIAogaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxl
UmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxT
aGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDog
bnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0eWxl
UmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dE
YXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDogbnVsbHB0
cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRT
aGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAt
ODQ0LDcgKzg0NCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0
aWFsQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2CiAKIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3co
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IHN0ZDo6bWFrZV91bmlx
dWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkp
IDogbnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3coc3R5
bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IG1ha2VVbmlxdWU8U2hhZG93
RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpIDogbnVsbHB0
cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJveFNo
YWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0x
MzU5LDcgKzEzNTksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAgICAgICBDU1NW
YWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwog
ICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKICAgICAgICAg
ICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0
eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAgICAgICAgICAgYXV0byBjb3VudGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCks
IGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOworICAgICAgICAgICAg
YXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5p
ZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOwog
ICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50KFdURk1vdmUoY291
bnRlciksIGRpZFNldCk7CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICB9IGVs
c2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA0Y2Y2YzZmN2Fi
N2RmOWZjMDQzMzRiYmU4ZGQwNWEzYjU1OWU5MzVjLi4xOWNiMDMzZDcwYmI1YTg5Njg2NTU3Mjc1
NWI5NmI5NzcwNTFjYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApA
QCAtMTUzMCw3ICsxNTMwLDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJv
cGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCiAgICAgICAgIEFTU0VSVCghbV9j
c3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSk7CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdy
YXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKKyAgICBtX2Nzc29tV3JhcHBlciA9
IG1ha2VVbmlxdWU8UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApAQCAtMTU0MCw3ICsxNTQwLDcgQEAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5
bGVEZWNsYXJhdGlvbihTdHkKICAgICAgICAgQVNTRVJUKG1fY3Nzb21XcmFwcGVyLT5wYXJlbnRF
bGVtZW50KCkgPT0gJnBhcmVudEVsZW1lbnQpOwogICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFw
cGVyOwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
Q1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMsIHBhcmVudEVsZW1lbnQpOworICAgIG1fY3Nzb21X
cmFwcGVyID0gbWFrZVVuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywgcGFy
ZW50RWxlbWVudCk7CiAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDNhNTJjMzYxOTlhNzlhMjVlMDljMDFkOGZhMGM1
MGFlZmY2ODJiYjUuLmRlNGRhNWY1NTEyOTkwOTMxZGE4NmM1YzdlODNiY2IxMDE4MDhiYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE3MTUsNyArMTcxNSw3IEBAIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQ
cm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgICAgIGlmIChhdXRob3JSb2xsYmFjaykKICAgICAg
ICAgICAgIHJldHVybiBhdXRob3JSb2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld0F1dGhvclJv
bGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdy
aXRpbmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2sobWFrZVVuaXF1ZTxD
YXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAgICAgICAv
LyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBVQSBydWxlcyBhbmQgdXNl
ciBydWxlcyBidXQgbm8gYXV0aG9yIHJ1bGVzLgogICAgICAgICBuZXdBdXRob3JSb2xsYmFjay0+
YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFS
dWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpAQCAtMTczMiw3ICsx
NzMyLDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVy
OjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAgICAgaWYgKHVzZXJSb2xsYmFj
aykKICAgICAgICAgICAgIHJldHVybiB1c2VyUm9sbGJhY2s7CiAKLSAgICAgICAgYXV0byBuZXdV
c2VyUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlv
biwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBuZXdVc2VyUm9sbGJhY2sobWFrZVVuaXF1
ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAgICAg
ICAvLyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBvbmx5IFVBIHJ1bGVz
LgogICAgICAgICBuZXdVc2VyUm9sbGJhY2stPmFkZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQs
IG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RV
QVJ1bGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5w
bCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCA5OTdjNGMwMzY3ZGQ1ZDBk
NjQ1ZDVlZGY1MWVlYzRiZmIwYzMyMTA1Li4wMmEzNmVmZTA1ZDNjYzlmZTk3ZGQ1YzBlMjU5M2Fl
NzlmZDZjMmM2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC04MTEsNyArODExLDcgQEAgc3Vi
IGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogcHJldmlvdXNDaGlsZCA9IG51bGxwdHI7
XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoYXV0byogcGFyZW50ID0g
JnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRuYW1l
KSAuICIoKTsgcGFyZW50ICYmIHBhcmVudC0+IiAuICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBhcmVu
dCA9IHBhcmVudC0+bmV4dCgpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
IiAgICBpZiAoIWNoaWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAg
ICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4o
IiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQobWFrZVVuaXF1ZTxG
aWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQtPm5l
eHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIH1cbiI7CiAgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGNoaWxkLT4iIC4gJHNldHRlciAuICIocGFy
ZW50LT4iIC4gJGdldHRlciAuICIoKSk7XG4iOwpAQCAtODM3LDcgKzgzNyw3IEBAIHN1YiBnZW5l
cmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gIiAgICAvLyBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIs
IGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVkLlxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBpZiAo
IWNoaWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAg
IHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBn
ZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZp
bGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQt
Pm5leHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICB9XG4i
OwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZU1hcCgpLT4iIC4gZ2V0RmlsbExheWVyTWFwZnVuY3Rpb24oJG5hbWUpIC4gIigiIC4gJENT
U1Byb3BlcnR5SWQgLiAiLCAqY2hpbGQsIGl0ZW0pO1xuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCmluZGV4IDY3Y2ZkZjU2ZDYyNTA1M2EwMTExOTkyZDcx
MWY4YzhmZmRiOTVkYzIuLmQ3NWU0ZmM5MmM3N2IwN2IxZTUzZGFkMzM4N2U1NTFhMzkwYzI1Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNzcs
NyArNzcsNyBAQCBDU1NQYXJzZXJJbXBsOjpDU1NQYXJzZXJJbXBsKGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc3RyaQogICAgICwgbV9zdHlsZVNoZWV0KHN0
eWxlU2hlZXQpCiAgICAgLCBtX29ic2VydmVyV3JhcHBlcih3cmFwcGVyKQogewotICAgIG1fdG9r
ZW5pemVyID0gd3JhcHBlciA/IHN0ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcs
ICp3cmFwcGVyKSA6IHN0ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOworICAg
IG1fdG9rZW5pemVyID0gd3JhcHBlciA/IG1ha2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcs
ICp3cmFwcGVyKSA6IG1ha2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOwogICAgIGlmIChj
b250ZXh0LmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCAmJiAhd3JhcHBlciAmJiBzdHlsZVNoZWV0
ICYmIHJ1bGVQYXJzaW5nID09IENTU1BhcnNlcjo6UnVsZVBhcnNpbmc6OkRlZmVycmVkKQogICAg
ICAgICBtX2RlZmVycmVkUGFyc2VyID0gQ1NTRGVmZXJyZWRQYXJzZXI6OmNyZWF0ZShjb250ZXh0
LCBzdHJpbmcsICpzdHlsZVNoZWV0KTsKIH0KQEAgLTI4Miw5ICsyODIsOSBAQCBDU1NTZWxlY3Rv
ckxpc3QgQ1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSByYW5nZSwgU3R5bAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBz
ZWxlY3RvcjsKICAgICBpZiAoIXR5cGVTZWxlY3Rvci5pc051bGwoKSAmJiBwc2V1ZG8uaXNOdWxs
KCkpCi0gICAgICAgIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rv
cj4oUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRl
ZmF1bHROYW1lc3BhY2UoKSkpOworICAgICAgICBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHls
ZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2VsZWN0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBzZWxl
Y3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIGlmICghcHNl
dWRvLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBzZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4oQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVj
dG9yKHBzZXVkbykpOwogICAgICAgICAgICAgaWYgKCFzZWxlY3RvciB8fCBzZWxlY3Rvci0+bWF0
Y2goKSAhPSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKQpAQCAtNTM1LDcgKzUzNSw3IEBA
IFJlZlB0cjxTdHlsZVJ1bGVOYW1lc3BhY2U+IENTU1BhcnNlckltcGw6OmNvbnN1bWVOYW1lc3Bh
Y2VSdWxlKENTU1BhcnNlclRva2VuUmFuCiBSZWZQdHI8U3R5bGVSdWxlTWVkaWE+IENTU1BhcnNl
ckltcGw6OmNvbnN1bWVNZWRpYVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQ
YXJzZXJUb2tlblJhbmdlIGJsb2NrKQogewogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAg
ICAgICByZXR1cm4gU3R5bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJz
ZU1lZGlhUXVlcnlTZXQocHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0
KSkucmVsZWFzZU5vbk51bGwoKSwgIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3Vw
UnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5
bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlTZXQo
cHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0KSkucmVsZWFzZU5vbk51
bGwoKSwgIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9k
ZWZlcnJlZFBhcnNlcikpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gcnVs
ZXM7CiAKQEAgLTU2Myw3ICs1NjMsNyBAQCBSZWZQdHI8U3R5bGVSdWxlU3VwcG9ydHM+IENTU1Bh
cnNlckltcGw6OmNvbnN1bWVTdXBwb3J0c1J1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3IsIGludmFsaWQgQHN1cHBvcnRzIGNvbmRp
dGlvbgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1
bGVTdXBwb3J0czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCks
IHN1cHBvcnRlZCwgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4o
YmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVTdXBw
b3J0czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1cHBv
cnRlZCwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2Rl
ZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAgICAg
bV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6
U3VwcG9ydHMsIG1fb2JzZXJ2ZXJXcmFwcGVyLT5zdGFydE9mZnNldChwcmVsdWRlKSk7CkBAIC02
MzUsNyArNjM1LDcgQEAgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gQ1NTUGFyc2VySW1wbDo6
Y29uc3VtZUtleWZyYW1lc1J1bGUoYm9vbCB3ZWJraXRQcmVmaXgKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7IC8vIFBhcnNlIGVycm9yOyBleHBlY3RlZCBpZGVudCB0b2tlbiBpbiBAa2V5ZnJhbWVz
IGhlYWRlcgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHls
ZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5
bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0
dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUsIG1ha2VVbmlxdWU8RGVmZXJyZWRT
dHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgaWYg
KG1fb2JzZXJ2ZXJXcmFwcGVyKSB7CiAgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZl
cigpLnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OktleWZyYW1lcywgbV9vYnNlcnZlcldyYXBw
ZXItPnN0YXJ0T2Zmc2V0KHJhbmdlQ29weSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcAppbmRleCA0ZGJlZjQwNThjNzE2MmNkOTY0NmVhNzY0
ZGNiYjliYmNmMzFlNDU5Li5hMDg3MGQzNzYyY2VhNDJmNWI1ZWFiZDA1ZWE3NDRmMmQ5ZDZiMzVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENT
U1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3RvcihTdAogICAgIGVsc2UKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1
ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0
Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcyk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0
b3ItPnNldFBhZ2VQc2V1ZG9UeXBlKHBzZXVkb1R5cGUpOwogICAgIHJldHVybiBzZWxlY3RvcjsK
QEAgLTYzLDcgKzYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQ
YXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVl
PENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRj
aChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUpOwogICAgIEF0b21TdHJpbmcgbmFtZTsK
QEAgLTg0LDEzICs4NCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENT
U1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IoUwogewogICAgIGF1dG8g
cHNldWRvVHlwZSA9IHBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFN0cmlu
Zyhwc2V1ZG9UeXBlU3RyaW5nKTsKICAgICBpZiAocHNldWRvVHlwZS5wc2V1ZG9DbGFzcyAhPSBD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBhdXRvIHNl
bGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0
b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CiAgICAg
ICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9DbGFzc1R5cGUocHNldWRvVHlwZS5w
c2V1ZG9DbGFzcyk7CiAgICAgICAgIHJldHVybiBzZWxlY3RvcjsKICAgICB9CiAgICAgaWYgKHBz
ZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBzZXVkb0VsZW1lbnQgIT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnRVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVu
aXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKICAgICAgICAgc2VsZWN0b3It
Pm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0
eVBzZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0VmFsdWUo
cHNldWRvVHlwZVN0cmluZy5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKQEAgLTEwMCwxMiAr
MTAwLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2Vs
ZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3RvcihTCiB9CiAKIENTU1BhcnNlclNlbGVjdG9y
OjpDU1NQYXJzZXJTZWxlY3RvcigpCi0gICAgOiBtX3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8
Q1NTU2VsZWN0b3I+KCkpCisgICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+
KCkpCiB7CiB9CiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcihjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdRTmFtZSkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1
ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUpKQorICAgIDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENT
U1NlbGVjdG9yPih0YWdRTmFtZSkpCiB7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBDU1NQYXJz
ZXJTZWxlY3Rvcjo6fkNTU1BhcnNlclNlbGVjdG9yKCkKIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rv
cjo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNl
bGVjdG9yPj4mJiBzZWxlY3RvclZlY3RvcikKIHsKLSAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rv
ckxpc3Qoc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0b3JW
ZWN0b3IpKSk7CisgICAgbV9zZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0KG1ha2VVbmlxdWU8Q1NT
U2VsZWN0b3JMaXN0PihXVEZNb3ZlKHNlbGVjdG9yVmVjdG9yKSkpOwogfQogCiB2b2lkIENTU1Bh
cnNlclNlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
QXRvbVN0cmluZz4+IGFyZ3VtZW50TGlzdCkKQEAgLTIwOSwxMiArMjA5LDEyIEBAIHZvaWQgQ1NT
UGFyc2VyU2VsZWN0b3I6OmFwcGVuZFRhZ0hpc3RvcnkoQ1NTUGFyc2VyU2VsZWN0b3JDb21iaW5h
dG9yIHJlbGF0aW9uLCBzCiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxl
Y3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVzcGFj
ZVJ1bGUpCiB7Ci0gICAgYXV0byBzZWNvbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOworICAgIGF1dG8gc2Vjb25kID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rv
cj4oKTsKICAgICBzZWNvbmQtPm1fc2VsZWN0b3IgPSBXVEZNb3ZlKG1fc2VsZWN0b3IpOwogICAg
IHNlY29uZC0+bV90YWdIaXN0b3J5ID0gV1RGTW92ZShtX3RhZ0hpc3RvcnkpOwogICAgIG1fdGFn
SGlzdG9yeSA9IFdURk1vdmUoc2Vjb25kKTsKIAotICAgIG1fc2VsZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKKyAg
ICBtX3NlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lzRm9y
TmFtZXNwYWNlUnVsZSk7CiAgICAgbV9zZWxlY3Rvci0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6
OlN1YnNlbGVjdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcAppbmRleCA0ODhlNjAyM2YyMDAyNGFmZmVmODYxN2E1MTRjNDA5YmY0
OWQxZWYzLi43MDhlYzc3NzNjMThkNmUwOGUwMDFjYWZhM2QyOGM4MGQ5Zjg3MmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMjQz
NSw3ICsyNDM1LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlUGF0aD4gY29uc3VtZUJh
c2ljU2hhcGVQYXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MKICAgICBpZiAoYXJncy5wZWVr
KCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAK
LSAgICBhdXRvIGJ5dGVTdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFt
PigpOworICAgIGF1dG8gYnl0ZVN0cmVhbSA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+
KCk7CiAgICAgaWYgKCFidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhhcmdzLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCAqYnl0ZVN0cmVhbSwg
VW5hbHRlcmVkUGFyc2luZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAppbmRleCA2YjNh
Y2M4NWU2ZmM1ZTVjYmI5NWFiOWZlMWE2YzdjYTllZjgxMDQ3Li5mMzMyM2IyMjZiNGIwMTAwYzk4
M2M0ODY2Mzc1ZjFlNjU3YjE3Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVQc2V1ZG8oQ1NT
UGFyc2VyVG9rCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NMYW5nOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQ1NTIFNlbGVjdG9ycyBMZXZlbCA0IGFs
bG93cyA6bGFuZygqLWZvbykKLSAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+KCk7CisgICAgICAgICAgICBhdXRvIGFyZ3Vt
ZW50TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPEF0b21TdHJpbmc+PigpOwogICAgICAgICAgICAg
aWYgKCFjb25zdW1lTGFuZ0FyZ3VtZW50TGlzdChhcmd1bWVudExpc3QsIGJsb2NrKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRMYW5n
QXJndW1lbnRMaXN0KFdURk1vdmUoYXJndW1lbnRMaXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCA5ZWI1ZDdlNDlmNTZh
MWU5OGQxZmJiOWIyM2U2ZWE3MmUyMjYxNThmLi44ODExN2YxOWU0YjI2YmEyNWJmZjI1YTg1NTkx
NzMyYmI3YTNlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBDdXN0b21FbGVtZW50UmVhY3Rp
b25RdWV1ZTo6RWxlbWVudFF1ZXVlJiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5zdXJl
QmFjawogewogICAgIGlmICghc19wcm9jZXNzaW5nQmFja3VwRWxlbWVudFF1ZXVlKSB7CiAgICAg
ICAgIHNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRRdWV1ZSA9IHRydWU7Ci0gICAgICAgIE1pY3Jv
dGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYWNr
dXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOworICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFp
blRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8QmFja3VwRWxlbWVudFF1ZXVlTWljcm90
YXNrPigpKTsKICAgICB9CiAgICAgcmV0dXJuIGJhY2t1cEVsZW1lbnRRdWV1ZSgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBlNzkzZjIwZDkzMWJmODRjODVmYWI5YWQy
NGY4M2ZlOGE0OGEyZjFkLi5kM2FmNzBmYjhiYTMzNmJmYTYxOGJmOWMxMjU2YjEwN2Q5ZDI1YWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjkwLDcgKzI5MCw3IEBAIHZv
aWQgRGF0YVRyYW5zZmVyOjpkaWRBZGRGaWxlVG9JdGVtTGlzdCgpCiBEYXRhVHJhbnNmZXJJdGVt
TGlzdCYgRGF0YVRyYW5zZmVyOjppdGVtcygpCiB7CiAgICAgaWYgKCFtX2l0ZW1MaXN0KQotICAg
ICAgICBtX2l0ZW1MaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlzdD4o
KnRoaXMpOworICAgICAgICBtX2l0ZW1MaXN0ID0gbWFrZVVuaXF1ZTxEYXRhVHJhbnNmZXJJdGVt
TGlzdD4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtNDE2LDcgKzQx
Niw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0RXZl
bnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwgY29u
c3QgU3RyaW5nJiBodG1sVGV4dCkKIHsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0
ZXh0L3BsYWluIl9zLCBwbGFpblRleHQpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKCJ0
ZXh0L2h0bWwiX3MsIGh0bWxUZXh0KTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVHJh
bnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCks
IFR5cGU6OklucHV0RXZlbnQpKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBSZWY8RGF0YVRyYW5zZmVy
PiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQog
CiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFk
b3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwg
c3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERh
dGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVy
KGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJv
YXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3Jp
Z2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7
CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIERh
dGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGludCB4LCBpbnQgeSkK
ICAgICBtX2RyYWdJbWFnZSA9IGltYWdlOwogICAgIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAg
ICBpZiAoIW1fZHJhZ0ltYWdlTG9hZGVyKQotICAgICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERyYWdJbWFnZUxvYWRlcj4odGhpcyk7CisgICAgICAgICAgICBt
X2RyYWdJbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKICAg
ICAgICAgbV9kcmFnSW1hZ2VMb2FkZXItPnN0YXJ0TG9hZGluZyhtX2RyYWdJbWFnZSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IDMzNjIyMzEwODFiMTNmNzJkYzE4ZGFjNWYzOTA3YTVlN2MxN2IwYmYuLmYy
MTEzMWZmODI3ODIxZGM3NGU4NTBhOThmMWJiMjMwOTllMDI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDAsNyAr
MTAwLDcgQEAgYm9vbCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQoUGFn
ZSogcGFnZSkKIAogdm9pZCBwcm92aWRlRGV2aWNlT3JpZW50YXRpb25UbyhQYWdlJiBwYWdlLCBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewotICAgIERldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6
OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyPihjbGllbnQpKTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnByb3Zp
ZGVUbygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgp
LCBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGUyYjE0
NGQ1NjdkNzk2NjJlOThmNzRiYzUxZTkyNDExNmNjNmQ1NmYuLmViMGI5NzQ1NTVhZDI1MzkyZTgw
NjY1YTZjZDExNTE5MjZmZTdmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTIxLDE5
ICs1MjEsMTkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fcXVpcmtzKG1ha2VV
bmlxdWVSZWY8UXVpcmtzPigqdGhpcykpCiAgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVyKG1f
ZnJhbWUgPyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+KG1fZnJhbWUtPmxvYWRlcigpLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpIDogQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShudWxscHRyKSkKICAgICAsIG1fZG9tVHJlZVZlcnNpb24oKytzX2ds
b2JhbFRyZWVWZXJzaW9uKQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5
bGU6OlNjb3BlPigqdGhpcykpCi0gICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRzKHN0ZDo6bWFr
ZV91bmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVldHM+KCp0aGlzKSkKLSAgICAsIG1fdmlzaXRlZExp
bmtTdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFZpc2l0ZWRMaW5rU3RhdGU+KCp0aGlzKSkKLSAgICAs
IG1fbWFya2VycyhzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50TWFya2VyQ29udHJvbGxlcj4oKnRo
aXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykp
CisgICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRzKG1ha2VVbmlxdWU8RXh0ZW5zaW9uU3R5bGVT
aGVldHM+KCp0aGlzKSkKKyAgICAsIG1fdmlzaXRlZExpbmtTdGF0ZShtYWtlVW5pcXVlPFZpc2l0
ZWRMaW5rU3RhdGU+KCp0aGlzKSkKKyAgICAsIG1fbWFya2VycyhtYWtlVW5pcXVlPERvY3VtZW50
TWFya2VyQ29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV9zdHlsZVJlY2FsY1RpbWVyKFt0aGlz
XSB7IHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsgfSkKICAgICAsIG1fZG9jdW1lbnRDcmVhdGlvblRp
bWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQotICAgICwgbV9tb2R1bGVMb2FkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVu
bmVyKG1ha2VVbmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCisgICAgLCBtX21vZHVsZUxvYWRl
cihtYWtlVW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShYU0xU
KQogICAgICwgbV9hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXIoKnRoaXMsICZEb2N1bWVu
dDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1f
eG1sVmVyc2lvbigiMS4wIl9zKQotICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQorICAgICwgbV9jb25zdGFudFBy
b3BlcnR5TWFwKG1ha2VVbmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwg
bV9kb2N1bWVudENsYXNzZXMoZG9jdW1lbnRDbGFzc2VzKQogICAgICwgbV9ldmVudFF1ZXVlKCp0
aGlzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTU0NSwxMCArNTQ1LDEwIEBAIERv
Y3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBk
b2N1bWVudENsYXNzZXMsIHVuc2lnCiAjZW5kaWYKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1l
cigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAsIG1fZGV2
aWNlTW90aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigp
KQotICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNl
TW90aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlTW90aW9uQ2xpZW50KSkKLSAgICAsIG1fZGV2aWNl
T3JpZW50YXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dElPUz4oKSkKLSAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNs
aWVudCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNsaWVudChtYWtlVW5pcXVlPERldmljZU1vdGlv
bkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihtYWtlVW5pcXVl
PERldmljZU1vdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU1vdGlvbkNsaWVudCkpCisgICAgLCBt
X2RldmljZU9yaWVudGF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGll
bnRJT1M+KCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihtYWtlVW5pcXVl
PERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQp
KQogI2VuZGlmCiAgICAgLCBtX3BlbmRpbmdUYXNrc1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnBl
bmRpbmdUYXNrc1RpbWVyRmlyZWQpCiAgICAgLCBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRp
bWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnZpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmlyZWQp
CkBAIC03NTgsNyArNzU4LDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRGb3JBY2Nlc3NL
ZXkoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHZvaWQgRG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2Fj
aGUoKQogewotICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8
U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsKKyAg
ICBtX2FjY2Vzc0tleUNhY2hlID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVudCos
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0aGlzXSB7CiAgICAgICAgIEhhc2hNYXA8U3Ry
aW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7CiAgICAgICAgIGZv
ciAoYXV0byYgbm9kZSA6IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCp0aGlzKSkgewogICAgICAg
ICAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKQEAgLTc4Myw3ICs3ODMsNyBAQCBFeGNlcHRp
b25PcjxTZWxlY3RvclF1ZXJ5Jj4gRG9jdW1lbnQ6OnNlbGVjdG9yUXVlcnlGb3JTdHJpbmcoY29u
c3QgU3RyaW5nJiBzZWxlYwogICAgIGlmIChzZWxlY3RvclN0cmluZy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogICAgIGlmICghbV9zZWxlY3Rv
clF1ZXJ5Q2FjaGUpCi0gICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7CisgICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hl
ID0gbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7CiAgICAgcmV0dXJuIG1fc2VsZWN0
b3JRdWVyeUNhY2hlLT5hZGQoc2VsZWN0b3JTdHJpbmcsICp0aGlzKTsKIH0KIApAQCAtODQ4LDcg
Kzg0OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKCkKIERPTUltcGxl
bWVudGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQogewogICAgIGlmICghbV9pbXBs
ZW1lbnRhdGlvbikKLSAgICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
RE9NSW1wbGVtZW50YXRpb24+KCp0aGlzKTsKKyAgICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IG1h
a2VVbmlxdWU8RE9NSW1wbGVtZW50YXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1wbGVt
ZW50YXRpb247CiB9CiAKQEAgLTE3NjMsNyArMTc2Myw3IEBAIE5vZGU6Ok5vZGVUeXBlIERvY3Vt
ZW50Ojpub2RlVHlwZSgpIGNvbnN0CiBGb3JtQ29udHJvbGxlciYgRG9jdW1lbnQ6OmZvcm1Db250
cm9sbGVyKCkKIHsKICAgICBpZiAoIW1fZm9ybUNvbnRyb2xsZXIpCi0gICAgICAgIG1fZm9ybUNv
bnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1Db250cm9sbGVyPigpOworICAgICAgICBt
X2Zvcm1Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxGb3JtQ29udHJvbGxlcj4oKTsKICAgICByZXR1
cm4gKm1fZm9ybUNvbnRyb2xsZXI7CiB9CiAKQEAgLTE5ODgsNyArMTk4OCw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXRPZlJl
cGxhY2VkVGV4dCwgdW5zCiAgICAgQVNTRVJUKCFtX2luUmVuZGVyVHJlZVVwZGF0ZSk7CiAgICAg
U2V0Rm9yU2NvcGU8Ym9vbD4gaW5SZW5kZXJUcmVlVXBkYXRlKG1faW5SZW5kZXJUcmVlVXBkYXRl
LCB0cnVlKTsKIAotICAgIGF1dG8gdGV4dFVwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6
OlVwZGF0ZT4oKnRoaXMpOworICAgIGF1dG8gdGV4dFVwZGF0ZSA9IG1ha2VVbmlxdWU8U3R5bGU6
OlVwZGF0ZT4oKnRoaXMpOwogICAgIHRleHRVcGRhdGUtPmFkZFRleHQodGV4dCwgeyBvZmZzZXRP
ZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQsIFdURjo6bnVsbG9wdCB9KTsKIAog
ICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRyZWVVcGRhdGVyKCp0aGlzKTsKQEAgLTIyNzAs
NyArMjI3MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGlu
dCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiBTdHlsZVJlc29sdmVyJiBEb2N1
bWVudDo6dXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKQogewogICAgIGlmICghbV91
c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcikKLSAgICAgICAgbV91c2VyQWdlbnRTaGFk
b3dUcmVlU3R5bGVSZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRo
aXMpOworICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gbWFrZVVu
aXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJBZ2VudFNoYWRv
d1RyZWVTdHlsZVJlc29sdmVyOwogfQogCkBAIC0yNjczLDcgKzI2NzMsNyBAQCBBWE9iamVjdENh
Y2hlKiBEb2N1bWVudDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAKICAgICBBU1NFUlQoJnRvcERv
Y3VtZW50ID09IHRoaXMgfHwgIW1fYXhPYmplY3RDYWNoZSk7CiAgICAgaWYgKCF0b3BEb2N1bWVu
dC5tX2F4T2JqZWN0Q2FjaGUpIHsKLSAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hl
ID0gc3RkOjptYWtlX3VuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CisgICAgICAg
IHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSA9IG1ha2VVbmlxdWU8QVhPYmplY3RDYWNoZT4o
dG9wRG9jdW1lbnQpOwogICAgICAgICBoYXNFdmVyQ3JlYXRlZEFuQVhPYmplY3RDYWNoZSA9IHRy
dWU7CiAgICAgfQogICAgIHJldHVybiB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUuZ2V0KCk7
CkBAIC0zMDM3LDcgKzMwMzcsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRQYXJzaW5nKGJvb2wgYikK
ICAgICBtX2JQYXJzaW5nID0gYjsKIAogICAgIGlmIChtX2JQYXJzaW5nICYmICFtX3NoYXJlZE9i
amVjdFBvb2wpCi0gICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IHN0ZDo6bWFrZV91bmlxdWU8
RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sPigpOworICAgICAgICBtX3NoYXJlZE9iamVjdFBvb2wg
PSBtYWtlVW5pcXVlPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4oKTsKIAogICAgIGlmICghbV9i
UGFyc2luZyAmJiB2aWV3KCkgJiYgIXZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmll
dygpLT5maXJlTGF5b3V0UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwpAQCAtNTU2Nyw3ICs1
NTY3LDcgQEAgY29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBEb2N1bWVudDo6c3ZnRXh0ZW5z
aW9ucygpCiBTVkdEb2N1bWVudEV4dGVuc2lvbnMmIERvY3VtZW50OjphY2Nlc3NTVkdFeHRlbnNp
b25zKCkKIHsKICAgICBpZiAoIW1fc3ZnRXh0ZW5zaW9ucykKLSAgICAgICAgbV9zdmdFeHRlbnNp
b25zID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsKKyAg
ICAgICAgbV9zdmdFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3ZnRXh0ZW5zaW9uczsKIH0KIApAQCAtNTc3Miw3ICs1
NzcyLDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8v
IFRoaXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVu
dCgpLgogICAgICAgICBzZXRDb29raWVVUkwoVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSkpOwogICAg
ICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRl
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkpOwotICAgICAgICBzZXRDb250ZW50U2Vj
dXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7
IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOworICAgICAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwgZW1w
dHlTdHJpbmcoKSB9LCAqdGhpcykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01Nzkx
LDcgKzU3OTEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAg
ICAgaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA9IGRvY3VtZW50TG9hZGVyICYmIGRvY3VtZW50TG9h
ZGVyLT5yZXNwb25zZSgpLnRhaW50aW5nKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6
Ok9wYXF1ZTsKIAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9s
aWN5OjpjcmVhdGUoaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVVbmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKSk7Ci0gICAgc2V0Q29u
dGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeSht
YWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsK
IAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1fZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAgICAgaWYg
KCFvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5pc051bGwoKSkKQEAgLTYwMjksNyArNjAy
OSw3IEBAIFN0cmluZyBEb2N1bWVudDo6bmFtZUZvckNTU0NhbnZhc0VsZW1lbnQoY29uc3QgSFRN
TENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQpCiBUZXh0QXV0b1NpemluZyYgRG9jdW1lbnQ6
OnRleHRBdXRvU2l6aW5nKCkKIHsKICAgICBpZiAoIW1fdGV4dEF1dG9TaXppbmcpCi0gICAgICAg
IG1fdGV4dEF1dG9TaXppbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwor
ICAgICAgICBtX3RleHRBdXRvU2l6aW5nID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZz4oKTsK
ICAgICByZXR1cm4gKm1fdGV4dEF1dG9TaXppbmc7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKQEAgLTYzOTYsNyArNjM5Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OndoZWVsRXZl
bnRIYW5kbGVyc0NoYW5nZWQoKQogdm9pZCBEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRs
ZXIoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIW1fd2hlZWxFdmVudFRhcmdldHMpCi0gICAgICAg
IG1fd2hlZWxFdmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50VGFyZ2V0U2V0Pigp
OworICAgICAgICBtX3doZWVsRXZlbnRUYXJnZXRzID0gbWFrZVVuaXF1ZTxFdmVudFRhcmdldFNl
dD4oKTsKIAogICAgIG1fd2hlZWxFdmVudFRhcmdldHMtPmFkZCgmbm9kZSk7CiAKQEAgLTY0NTYs
NyArNjQ1Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKE5vZGUm
IGhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoIW1fdG91Y2hF
dmVudFRhcmdldHMpCi0gICAgICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEV2ZW50VGFyZ2V0U2V0PigpOworICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gbWFr
ZVVuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKIAogICAgIG1fdG91Y2hFdmVudFRhcmdldHMtPmFk
ZCgmaGFuZGxlcik7CiAKQEAgLTgwNDQsNyArODA0NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExv
Z01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWws
IFZlCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBt
ZXNzYWdlTGV2ZWxGcm9tV1RGTG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyks
IG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgpKSk7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxk
RXhlY1N0YXRlKGZyYW1lKCkpKTsKIAogICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3Zl
KG1lc3NhZ2UpKTsKICAgICB9KTsKQEAgLTgwNzksNyArODA3OSw3IEBAIFN0cmluZyBEb2N1bWVu
dDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRl
eCwgY29uc3QKIAogYm9vbCBEb2N1bWVudDo6cmVnaXN0ZXJDU1NQcm9wZXJ0eShDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHkmJiBwcm9wKQogewotICAgIHJldHVybiBtX0NTU1JlZ2lzdGVyZWRQ
cm9wZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9wKSkpLmlzTmV3RW50cnk7CisgICAgcmV0dXJuIG1f
Q1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIG1ha2VVbmlxdWU8Q1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3ApKSkuaXNOZXdFbnRyeTsKIH0KIAog
dm9pZCBEb2N1bWVudDo6ZGV0YWNoRnJvbUZyYW1lKCkKQEAgLTgxNzMsNyArODE3Myw3IEBAIERl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciYgRG9jdW1lbnQ6OmRldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uCiAgICAgICAgIHJldHVybiB0b3BEb2N1bWVudCgpLmRldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcigpOwogCiAgICAgaWYgKCFtX2Rl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcikKLSAgICAgICAgbV9kZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcj4oKnRoaXMpOworICAg
ICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciA9IG1ha2VV
bmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxl
cjsKIH0KIApAQCAtODIwNCw3ICs4MjA0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPFBhaW50V28KIENv
bnRlbnRDaGFuZ2VPYnNlcnZlciYgRG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpCiB7
CiAgICAgaWYgKCFtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9jb250ZW50Q2hh
bmdlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRo
aXMpOworICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IG1ha2VVbmlxdWU8Q29udGVu
dENoYW5nZU9ic2VydmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRlbnRDaGFuZ2VPYnNl
cnZlcjsgCiB9CiAKQEAgLTgyMTIsNyArODIxMiw3IEBAIERPTVRpbWVySG9sZGluZ1RhbmsmIERv
Y3VtZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKCkKIHsKICAgICBpZiAobV9kb21UaW1lckhvbGRp
bmdUYW5rKQogICAgICAgICByZXR1cm4gKm1fZG9tVGltZXJIb2xkaW5nVGFuazsKLSAgICBtX2Rv
bVRpbWVySG9sZGluZ1RhbmsgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+
KCk7CisgICAgbV9kb21UaW1lckhvbGRpbmdUYW5rID0gbWFrZVVuaXF1ZTxET01UaW1lckhvbGRp
bmdUYW5rPigpOwogICAgIHJldHVybiAqbV9kb21UaW1lckhvbGRpbmdUYW5rOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDBmNTM4YmZhMDVkYmNlZjNlOGE2ZjhlNjZjOTgwZmQzZDk3Y2Vl
OTYuLmFiNTgwNDI1NDhjZTZhNDRmNjU4NGNmOTIwYjcxOTBlYWRkNTI5MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMjg0LDcgKzEyODQsNyBAQCBjbGFzcyBEb2N1bWVudAogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4gY3JlYXRlUGFyc2VyWWllbGRU
b2tlbigpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFBh
cnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RG9jdW1l
bnRQYXJzZXJZaWVsZFRva2VuPigqdGhpcyk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNBY3RpdmVQ
YXJzZXJZaWVsZFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXJZaWVsZFRva2VuQ291bnQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggMDFjN2Y5
NmUwMmU5ZWJkNTg4NTNmYjVkYjFjNGI4ODIxZTJmOTcyOC4uMDM3MDNiNjJiYzY1MDU1NzhiMzg5
Yjk5OTM4YTRkYWFiNmQ3NmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRR
dWV1ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgRG9jdW1lbnRFdmVudFF1ZXVlOjpUaW1l
ciBmaW5hbCA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKIAogRG9jdW1lbnRFdmVudFF1ZXVl
OjpEb2N1bWVudEV2ZW50UXVldWUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVu
dChkb2N1bWVudCkKLSAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIoc3RkOjptYWtlX3VuaXF1ZTxU
aW1lcj4oKnRoaXMpKQorICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcihtYWtlVW5pcXVlPFRpbWVy
PigqdGhpcykpCiAgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQogewogICAgIG1fcGVuZGluZ0V2ZW50
VGltZXItPnN1c3BlbmRJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCA3MjkxZDRhZGVlOWY0MTc3ZmRiZmVmZWVmZGRm
MjY3MDU0YTljNGYwLi5lNzY0MWFmNjIxOGJmMTNhYjBlM2M2ODkyMDIwZGU4ODljNGU5MDZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApA
QCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJr
ZXIoTm9kZSYgbm9kZSwgY29uc3QgRG9jdW1lbnRNYXJrZXImIG5ld01hCiAgICAgc3RkOjp1bmlx
dWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZCgmbm9kZSwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogCiAgICAgaWYgKCFsaXN0KSB7Ci0gICAgICAgIGxpc3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPE1hcmtlckxpc3Q+KCk7CisgICAgICAgIGxpc3QgPSBtYWtlVW5pcXVlPE1h
cmtlckxpc3Q+KCk7CiAgICAgICAgIGxpc3QtPmFwcGVuZChSZW5kZXJlZERvY3VtZW50TWFya2Vy
KG5ld01hcmtlcikpOwogICAgIH0gZWxzZSBpZiAoc2hvdWxkSW5zZXJ0QXNTZXBhcmF0ZU1hcmtl
cihuZXdNYXJrZXIpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG1lcmdlIGRpY3RhdGlvbiBtYXJr
ZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRl
eCA4MWVmYjEwZDVlNzZlZGI2ZjZkMzgzNTMwMDUxZDI5YzM4OGVhZmRiLi44NTVhMmEwNjU2Zjcx
YjQ1ZWU4ZDRmZmYyODRhNTM1Mzc5YTM4Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtNDgsNyArNDgsNyBAQCBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3MqIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50U3RvcmFnZUFjY2Vz
cyo+KFN1cHBsZW1lbnQ8RG9jdW1lbnQ+Ojpmcm9tKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUo
KSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vzcz4oZG9jdW1lbnQpOworICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vz
cz4oZG9jdW1lbnQpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsK
ICAgICAgICAgcHJvdmlkZVRvKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShu
ZXdTdXBwbGVtZW50KSk7CiAgICAgfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgRG9jdW1lbnRT
dG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiAgICAgICAgIGJvb2wgc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSA9IHdhc0dy
YW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyB8fCBwcm9tcHRXYXNTaG93biA9
PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOwogCiAgICAgICAgIGlmIChzaG91bGRQ
cmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRo
cmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3Vt
ZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgeworICAgICAgICAgICAg
TWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRN
aWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgp
IHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVyZW5j
ZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmVuYWJsZVRlbXBvcmFyeVRp
bWVVc2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgfSkpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHZv
aWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hvdWxkUHJl
c2VydmVVc2VyR2VzdHVyZSkgewotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVu
dFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRSZWZlcmVuY2UpXSAoKSB7CisgICAgICAgICAg
ICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9p
ZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5j
ZSldICgpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJl
ZmVyZW5jZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmNvbnN1bWVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsKQEAgLTIwOSw3ICsyMDks
NyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vz
czo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKIHsKLSAgICBtX3RlbXBvcmFyeVVz
ZXJHZXN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CisgICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVy
ZSA9IG1ha2VVbmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSwgJm1fZG9jdW1lbnQpOwogfQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6Y29uc3Vt
ZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNDUx
NjFjOWNhMjBiYWQ2OTMzMDA1MWQwOWE1NWYwYWZhNTU4NmNjNi4uZWViMWYzNDI5ZDY0ZWZjNGRi
MGIxMzBkMTM3ZjMxNmUzNTBkMGQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDc3LDcg
KzQ3Nyw3IEBAIE5hbWVkTm9kZU1hcCYgRWxlbWVudDo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAg
aWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gcmFyZURhdGEuYXR0cmlidXRlTWFwKCkp
CiAgICAgICAgIHJldHVybiAqYXR0cmlidXRlTWFwOwogCi0gICAgcmFyZURhdGEuc2V0QXR0cmli
dXRlTWFwKHN0ZDo6bWFrZV91bmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVsZW1lbnQm
PigqdGhpcykpKTsKKyAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAobWFrZVVuaXF1ZTxOYW1l
ZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOwogICAgIHJldHVybiAqcmFy
ZURhdGEuYXR0cmlidXRlTWFwKCk7CiB9CiAKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHZvaWQgRWxl
bWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudChKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Um
IGVsZW1lbnRJbnRlcmZhCiAgICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwogICAgIGF1dG8m
IGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUoKSkKLSAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rp
b25RdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVt
ZW50SW50ZXJmYWNlKSk7CisgICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUobWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFj
ZSkpOwogICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CkBAIC0y
MzQ0LDcgKzIzNDQsNyBAQCB2b2lkIEVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUoSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYWNlKQogICAgIGF1dG8mIGRhdGEgPSBlbnN1
cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBib29sIGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUg
PSBkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCk7CiAgICAgaWYgKCFhbHJlYWR5U2No
ZWR1bGVkVG9VcGdyYWRlKQotICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJ
bnRlcmZhY2UpKTsKKyAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSht
YWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7
CiAgICAgZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpLT5lbnF1ZXVlRWxlbWVudFVw
Z3JhZGUoKnRoaXMsIGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpOwogfQogCkBAIC0zNDgwLDcg
KzM0ODAsNyBAQCBET01Ub2tlbkxpc3QmIEVsZW1lbnQ6OmNsYXNzTGlzdCgpCiB7CiAgICAgRWxl
bWVudFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFk
YXRhLmNsYXNzTGlzdCgpKQotICAgICAgICBkYXRhLnNldENsYXNzTGlzdChzdGQ6Om1ha2VfdW5p
cXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CisgICAgICAg
IGRhdGEuc2V0Q2xhc3NMaXN0KG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5h
bWVzOjpjbGFzc0F0dHIpKTsKICAgICByZXR1cm4gKmRhdGEuY2xhc3NMaXN0KCk7CiB9CiAKQEAg
LTM0ODgsNyArMzQ4OCw3IEBAIERhdGFzZXRET01TdHJpbmdNYXAmIEVsZW1lbnQ6OmRhdGFzZXQo
KQogewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgp
OwogICAgIGlmICghZGF0YS5kYXRhc2V0KCkpCi0gICAgICAgIGRhdGEuc2V0RGF0YXNldChzdGQ6
Om1ha2VfdW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CisgICAgICAgIGRhdGEu
c2V0RGF0YXNldChtYWtlVW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CiAgICAg
cmV0dXJuICpkYXRhLmRhdGFzZXQoKTsKIH0KIApAQCAtMzYzMiw3ICszNjMyLDcgQEAgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhJiBFbGVtZW50OjplbnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRh
dGEoKQogewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAg
ICAgaWYgKCFyYXJlRGF0YS5pbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKSkKLSAgICAgICAgcmFy
ZURhdGEuc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKKyAgICAgICAgcmFyZURhdGEuc2V0SW50ZXJzZWN0aW9u
T2JzZXJ2ZXJEYXRhKG1ha2VVbmlxdWU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKICAg
ICByZXR1cm4gKnJhcmVEYXRhLmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpOwogfQogCkBAIC0z
NjU4LDcgKzM2NTgsNyBAQCBSZXNpemVPYnNlcnZlckRhdGEmIEVsZW1lbnQ6OmVuc3VyZVJlc2l6
ZU9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLnJlc2l6ZU9ic2VydmVyRGF0YSgpKQotICAgICAg
ICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxSZXNpemVP
YnNlcnZlckRhdGE+KCkpOworICAgICAgICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEo
bWFrZVVuaXF1ZTxSZXNpemVPYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEu
cmVzaXplT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmNwcAppbmRleCBkOWU2NjM0OWNiZGJhMGJiODFkMmFjZmJmZGMwZDQzMzc4YzY1OGRiLi4w
YjA5ZDA4MmMzNmVkZGQ4NGI5Y2RlOTg4MjUyNzJkYjVmOTZlNWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBFdmVudExp
c3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0
ZW5lcj4mJiBsaXMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYXV0byBsaXN0
ZW5lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CisgICAgYXV0
byBsaXN0ZW5lcnMgPSBtYWtlVW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CiAgICAgbGlz
dGVuZXJzLT51bmNoZWNrZWRBcHBlbmQoUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6OmNyZWF0ZShX
VEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucykpOwogICAgIG1fZW50cmllcy5hcHBlbmQoeyBldmVu
dFR5cGUsIFdURk1vdmUobGlzdGVuZXJzKSB9KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCmluZGV4IDllOTMwOGJiNWRhMTQ2MWUzNThlM2NjNjJmZWFmZGNmY2QwY2M3
YWQuLjViNmFiNjg3NTViNjFiZmUyZDRhNjhiY2JlNzUyNGZkMGRkYWJiOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaApAQCAtMzM5LDEzICszMzksMTMgQEAgc3RydWN0IEV2ZW50TmFtZXMgewog
ICAgIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChET01fRVZFTlRfTkFNRVNfREVDTEFSRSkKICN1
bmRlZiBET01fRVZFTlRfTkFNRVNfREVDTEFSRQogCi0gICAgLy8gRklYTUU6IFRoZSBmcmllbmQg
ZGVjbGFyYXRpb24gdG8gc3RkOjptYWtlX3VuaXF1ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdp
bmRvd3MgcG9ydC4KKyAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBtYWtl
VW5pcXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgogICAgIC8vCiAgICAg
Ly8gdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4KLSAgICAvLyBmcmllbmQgdHlwZW5h
bWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBzdGQ6Om1ha2VfdW5pcXVlKEFy
Z3MmJi4uLik7CisgICAgLy8gZnJpZW5kIHR5cGVuYW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6X1Np
bmdsZV9vYmplY3QgbWFrZVVuaXF1ZShBcmdzJiYuLi4pOwogICAgIC8vCiAgICAgLy8gVGhpcyBj
cmVhdGUgZnVuY3Rpb24gc2hvdWxkIGJlIGRlbGV0ZWQgbGF0ZXIgYW5kIGlzIG9ubHkgZm9yIGtl
ZXBpbmcgRXZlbnROYW1lcyBhcyBwcml2YXRlLgotICAgIC8vIHN0ZDo6bWFrZV91bmlxdWUgc2hv
dWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAvLyBtYWtlVW5pcXVlIHNob3VsZCBiZSB1c2VkIGlu
c3RlYWQuCiAgICAgLy8KICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRQYXRoLmNwcAppbmRleCBkYjE0MjhkMWQ0MjYwNThjYjY1YjFlYjZmYWNhMjNkYjk4
OTI4MmJkLi5hMGFkMGFkN2M0ODI2OTJlNjM4ZTU3MjgwZjFhMjkyNDdhY2VjMTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRQYXRoLmNwcApAQCAtMTE1LDE3ICsxMTUsMTcgQEAgdm9pZCBFdmVudFBhdGg6
OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogewogICAgIHVz
aW5nIE1ha2VFdmVudENvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiAoKiko
Tm9kZSYsIEV2ZW50VGFyZ2V0KiwgRXZlbnRUYXJnZXQqLCBpbnQgY2xvc2VkU2hhZG93RGVwdGgp
OwogICAgIE1ha2VFdmVudENvbnRleHQgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2Rl
LCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNs
b3NlZFNoYWRvd0RlcHRoKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KCZub2RlLCBjdXJyZW50
VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICB9OwogICAgIGlmIChpczxN
b3VzZUV2ZW50PihldmVudCkgfHwgZXZlbnQuaXNGb2N1c0V2ZW50KCkpIHsKICAgICAgICAgbWFr
ZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdl
dCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVu
aXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdl
dCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW91
c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3Nl
ZFNoYWRvd0RlcHRoKTsKICAgICAgICAgfTsKICAgICB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKICAgICBpZiAoaXM8VG91Y2hFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgIG1ha2VFdmVudENv
bnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50
VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVfcHRy
PEV2ZW50Q29udGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VG91
Y2hFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93
RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VG91Y2hFdmVudENvbnRleHQ+
KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAg
ICB9OwogICAgIH0KICNlbmRpZgpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgRXZlbnRQYXRoOjpi
dWlsZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxE
b2N1bWVudD4oKm5vZGUpLmRvbVdpbmRvdygpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpub2Rl
LCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+
KCpub2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTMwOCw3ICszMDgsNyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RWxl
bWVudCo+JiB0YXJnZXRzKQogICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgTm9kZSog
b3JpZ2luID0gKnRhcmdldHMuYmVnaW4oKTsKICAgICAgICAgaWYgKCF0YXJnZXQtPmlzQ2xvc2Vk
U2hhZG93SGlkZGVuKCpvcmlnaW4pKQotICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwgMCkpOworICAg
ICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0
YXJnZXQsIG9yaWdpbiwgMCkpOwogICAgIH0KIH0KIApAQCAtMzE3LDcgKzMxNyw3IEBAIEV2ZW50
UGF0aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFdmVudFRhcmdldCo+JiB0YXJnZXRzKQogICAg
IGZvciAoYXV0byogdGFyZ2V0IDogdGFyZ2V0cykgewogICAgICAgICBBU1NFUlQodGFyZ2V0KTsK
ICAgICAgICAgQVNTRVJUKCFpczxOb2RlPih0YXJnZXQpKTsKLSAgICAgICAgbV9wYXRoLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0
cy5iZWdpbigpLCAwKSk7CisgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVudENv
bnRleHQ+KG51bGxwdHIsIHRhcmdldCwgKnRhcmdldHMuYmVnaW4oKSwgMCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlZGQ5Y2EyOGVhNDkz
YWM3Yzk0YzhiZGUyODViMTY2NmMzODgyNTU5Li5hNzBiY2FlY2NjODc5NWE0ZjRiYTQyNmUyNTEz
ZGZmN2EwZjc0YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAt
NDIsNiArNDIsNyBAQCBjbGFzcyBSZW5kZXJUcmVlQnVpbGRlcjsKIGNsYXNzIFJlbmRlclN0eWxl
OwogCiBjbGFzcyBGdWxsc2NyZWVuTWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgRnVsbHNjcmVlbk1hbmFnZXIoRG9jdW1lbnQmKTsKICAgICB+RnVs
bHNjcmVlbk1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeS5jcHAKaW5kZXggYjNhMDZlNDdiMDcwMGY3YzQ3ZDNkOWFlZjMzZjQ0MzcyNGUw
YzU1ZS4uOTQwZWZjYWVkODMwOTFjMjU4M2ZhOWUzMzZlZjNkNzhjNTRhYTNkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKGNvbnN0
IEF0b21TdHJpbmcmIGlkLCBJZFRhcmdldE9ic2VydmUKICAgICAKICAgICBJZFRvT2JzZXJ2ZXJT
ZXRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3JlZ2lzdHJ5LmFkZChpZC5pbXBsKCksIG51bGxw
dHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T2JzZXJ2ZXJTZXQ+KCk7CisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9ic2VydmVyU2V0PigpOwogCiAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKG9ic2VydmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXli
b2FyZEV2ZW50LmNwcAppbmRleCA3ZTdhMzQ3OTdiODYyOWY2MmY3Zjc4NmFiMTRjNWM2ZjViZDkw
YjE0Li5jZTg1NmJiNTVkNWJkOTllNjZmNTBjYjU1YjBiZTQ3OTBlMDk4NDUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBLZXlib2Fy
ZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogaW5saW5lIEtleWJvYXJkRXZlbnQ6
OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0cjxX
aW5kb3dQcm94eT4mJiB2aWV3KQogICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5cGVG
b3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgQ2FuQnViYmxlOjpZZXMsIElzQ2FuY2Vs
YWJsZTo6WWVzLCBJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIGtleS50aW1lc3RhbXAoKS5hcHBy
b3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldy5jb3B5UmVmKCksIDAsIGtleS5tb2RpZmllcnMo
KSwgSXNUcnVzdGVkOjpZZXMpCi0gICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQorICAgICwgbV91bmRlcmx5
aW5nUGxhdGZvcm1FdmVudChtYWtlVW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkK
ICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAgICAsIG1fa2V5KGtleS5rZXko
KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKaW5kZXggYjYzMTg0MTUwZjVhMzkxNDI1
MmI4NDJlZDlkMDdkZWFhZjZiNDAzNi4uYmE3MjJhMTFjNzBmY2E4MDgzMmU2NGM4NTI3ZWU0NmI5
YzM0NzY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCkBAIC02OSw3ICs2OSw4IEBAIGNsYXNz
IFZvaWRNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMgTWljcm90YXNrIHsKICAgICBGdW5jdGlvbjx2
b2lkKCk+IG1fZnVuY3Rpb247CiB9OwogCi1jbGFzcyBNaWNyb3Rhc2tRdWV1ZSB7CitjbGFzcyBN
aWNyb3Rhc2tRdWV1ZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1pY3JvdGFza1F1ZXVlPjsKICAgICBmcmllbmQgY2xhc3Mg
TWljcm90YXNrOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CmluZGV4IDY2YzVlYTBiOWQ2MzQ1NDQzODEyZmIxMzFmZmU1ZGJlNmNhMWRkZjMuLjE5M2YyNzgw
NWE1YWVkNGI2MDZlOWNlZWEzYTlhMzVkOGIxZTk5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlci5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgdm9pZCBxdWV1ZU11
dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFzaygpCiAgICAgaWYgKG11dGF0aW9uT2JzZXJ2
ZXJDb21wb3VuZE1pY3JvdGFza1F1ZXVlZEZsYWcpCiAgICAgICAgIHJldHVybjsKICAgICBtdXRh
dGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnID0gdHJ1ZTsKLSAgICBNaWNy
b3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0
YXRpb25PYnNlcnZlck1pY3JvdGFzaz4oKSk7CisgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkp
OwogfQogCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmVucXVldWVNdXRhdGlvblJlY29yZChSZWY8
TXV0YXRpb25SZWNvcmQ+JiYgbXV0YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAppbmRleCA1MmRhNjFmNzRmMWY1N2Fm
Njg1NDlmMzY2NTYzMDZkOGQxNzAzYzc5Li4wMjc2ZTQyYmU1YmQ4M2ZmNDJhNzkzNTZiZGU5Y2U3
MzYwOTljYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cDo6Y3IKICAgICBpZiAob2JzZXJ2ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2VydmVy
cyksIG9sZFZhbHVlRmxhZyk7CiB9CiAKIGJvb2wgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXA6OmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGM4ZmMwMTA2NzI0NWU0
ZTM2MTk3YTJmNmQ0ZDFlNDU3NTQ3YmJjOGEuLmU1YzZkZDE2YTRkYjYwOWJhNTI3M2E0N2FmN2Zh
NjgyNjYyYTJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaChOb2RlJiBub2Rl
KQogICAgIG1fb2JzZXJ2ZXItPnNldEhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbigpOwogCiAgICAg
aWYgKCFtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzKSB7Ci0gICAgICAgIG1fdHJhbnNpZW50
UmVnaXN0cmF0aW9uTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8R0NSZWFjaGFibGVS
ZWY8Tm9kZT4+PigpOworICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gbWFr
ZVVuaXF1ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKIAogICAgICAgICBBU1NF
UlQoIW1fbm9kZUtlcHRBbGl2ZSk7CiAgICAgICAgIG1fbm9kZUtlcHRBbGl2ZSA9ICZtX25vZGU7
IC8vIEJhbGFuY2VkIGluIHRha2VUcmFuc2llbnRSZWdpc3RyYXRpb25zLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IDc2ZDRlYTlkNzMwYTkyMzcyYTlmOGU3YTZkOGY2N2QwMGZkM2RiZjUuLmNhYmYxZWI1
OGM5YzIzY2FkODg1YmQwMWRmMTIyYjY1MWFlMDJiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTM5
OCw5ICszOTgsOSBAQCB2b2lkIE5vZGU6Om1hdGVyaWFsaXplUmFyZURhdGEoKQogewogICAgIE5v
ZGVSYXJlRGF0YSogZGF0YTsKICAgICBpZiAoaXM8RWxlbWVudD4oKnRoaXMpKQotICAgICAgICBk
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOworICAgICAgICBkYXRhID0gbWFr
ZVVuaXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG1fZGF0YS5t
X3JlbmRlcmVyKSkucmVsZWFzZSgpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOworICAg
ICAgICBkYXRhID0gbWFrZVVuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5tX3JlbmRlcmVyKS5y
ZWxlYXNlKCk7CiAgICAgQVNTRVJUKGRhdGEpOwogCiAgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBk
YXRhOwpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgRXZlbnRUYXJnZXREYXRhJiBOb2RlOjplbnN1cmVF
dmVudFRhcmdldERhdGEoKQogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX2V2ZW50VGFy
Z2V0RGF0YU1hcExvY2spOwogICAgIHNldEhhc0V2ZW50VGFyZ2V0RGF0YSh0cnVlKTsKLSAgICBy
ZXR1cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEV2
ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqZXZlbnRUYXJn
ZXREYXRhTWFwKCkuYWRkKHRoaXMsIG1ha2VVbmlxdWU8RXZlbnRUYXJnZXREYXRhPigpKS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgTm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEoKQpAQCAt
MjI4Nyw3ICsyMjg3LDcgQEAgdm9pZCBOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0
YXRpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIKICAgICB9CiAKICAgICBp
ZiAoIXJlZ2lzdHJhdGlvbikgewotICAgICAgICByZWdpc3RyeS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9wdGlv
bnMsIGF0dHJpYnV0ZUZpbHRlcikpOworICAgICAgICByZWdpc3RyeS5hcHBlbmQobWFrZVVuaXF1
ZTxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9wdGlvbnMs
IGF0dHJpYnV0ZUZpbHRlcikpOwogICAgICAgICByZWdpc3RyYXRpb24gPSByZWdpc3RyeS5sYXN0
KCkuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNzY5MGQ1
OTlmY2E3ZGM5OWNiNDllMTYwZmJlMmFmYWRkZjAwY2RmNC4uNzY2ZDY3ZjNmNmQ2MjlhZjA4OTQy
YWRjMjNlMmMyMmMyOWYzZTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMjgx
LDcgKzI4MSw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNl
IHsKICAgICBOb2RlTGlzdHNOb2RlRGF0YSYgZW5zdXJlTm9kZUxpc3RzKCkKICAgICB7CiAgICAg
ICAgIGlmICghbV9ub2RlTGlzdHMpCi0gICAgICAgICAgICBtX25vZGVMaXN0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CisgICAgICAgICAgICBtX25vZGVMaXN0cyA9
IG1ha2VVbmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9ub2Rl
TGlzdHM7CiAgICAgfQogCkBAIC0yODksNyArMjg5LDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIDog
cHVibGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YSYg
ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKQogICAgIHsKICAgICAgICAgaWYgKCFtX211dGF0
aW9uT2JzZXJ2ZXJEYXRhKQotICAgICAgICAgICAgbV9tdXRhdGlvbk9ic2VydmVyRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhPigpOworICAgICAgICAgICAg
bV9tdXRhdGlvbk9ic2VydmVyRGF0YSA9IG1ha2VVbmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJE
YXRhPigpOwogICAgICAgICByZXR1cm4gKm1fbXV0YXRpb25PYnNlcnZlckRhdGE7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAppbmRleCA1MzM3YzU4Y2Rm
YmJhYWIyMzAxODQ1MDI2MzhkYzYzNDQ5Zjc5NmFjLi42MWJiYzRlZGZmOTM0YTY0NDZlYTI1Njc1
NTY2M2ZkNTQ2ODc3ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0
b25Hcm91cHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5j
cHAKQEAgLTE5OCwxMSArMTk4LDExIEBAIHZvaWQgUmFkaW9CdXR0b25Hcm91cHM6OmFkZEJ1dHRv
bihIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IW1fbmFtZVRvR3JvdXBNYXApCi0gICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hbWVUb0dyb3VwTWFwPigpOworICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gbWFr
ZVVuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKIAogICAgIGF1dG8mIGdyb3VwID0gbV9uYW1lVG9H
cm91cE1hcC0+YWRkKGVsZW1lbnQubmFtZSgpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghZ3JvdXApCi0gICAgICAgIGdyb3VwID0gc3RkOjptYWtlX3VuaXF1ZTxS
YWRpb0J1dHRvbkdyb3VwPigpOworICAgICAgICBncm91cCA9IG1ha2VVbmlxdWU8UmFkaW9CdXR0
b25Hcm91cD4oKTsKICAgICBncm91cC0+YWRkKGVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYzgyNWE3ZWRlZTZiYjJk
NWY1MTZjNmQzZTZlYTc0MTBlNmVjYzc1Ni4uMDRhZmU5ZDc4YWQwYmQxMDI4YTY3MDNjMGZjM2Q0
ZjY1M2IxM2RlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcApAQCAtMzc5LDggKzM3OSw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluCiB7CiAg
ICAgaWYgKG1faW5EaXNwYXRjaEVycm9yRXZlbnQpIHsKICAgICAgICAgaWYgKCFtX3BlbmRpbmdF
eGNlcHRpb25zKQotICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+KCk7Ci0gICAg
ICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdF
eGNlcHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VV
UkwsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9u
cyA9IG1ha2VVbmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+
KCk7CisgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChtYWtlVW5pcXVlPFBlbmRp
bmdFeGNlcHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3Vy
Y2VVUkwsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC00MTQsOSArNDE0LDkgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRVbmhh
bmRsZWRQcm9taXNlUmVqZWN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGEKICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlID0gbWFrZVN0cmluZygiVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiAiLCBy
ZXN1bHRNZXNzYWdlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBj
YWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlw
ZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOworICAgICAgICBt
ZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNz
YWdlKTsKICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApAQCAt
NTA5LDcgKzUwOSw3IEBAIFJlamVjdGVkUHJvbWlzZVRyYWNrZXImIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRyYWNrZXJTbG93CiAgICAgLy8gV2hlbiBpbml0
aWFsaXppbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdm0oKSBpcyBub3QgcmVhZHkuCiAKICAg
ICBBU1NFUlQoIW1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlcik7Ci0gICAgbV9yZWplY3RlZFByb21p
c2VUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWplY3RlZFByb21pc2VUcmFja2VyPigqdGhp
cywgdm0oKSk7CisgICAgbV9yZWplY3RlZFByb21pc2VUcmFja2VyID0gbWFrZVVuaXF1ZTxSZWpl
Y3RlZFByb21pc2VUcmFja2VyPigqdGhpcywgdm0oKSk7CiAgICAgcmV0dXJuICptX3JlamVjdGVk
UHJvbWlzZVRyYWNrZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNw
cAppbmRleCA1NWRjMmM4N2E0YWMyMDJkNzFhZGRhNjZkNTk2YjVmZWEwYmM4ODU2Li4yMTA5Y2U0
YTIyOGMzZTdiYTg3YTRiYTUyYjJkYjI4MjM2MDg3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dG9yUXVlcnkuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgRXhjZXB0aW9uT3I8U2VsZWN0b3JRdWVy
eSY+IFNlbGVjdG9yUXVlcnlDYWNoZTo6YWRkKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBEb2MK
ICAgICBpZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtYXhpbXVtU2VsZWN0b3JRdWVyeUNhY2hlU2l6
ZSkKICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShtX2VudHJpZXMucmFuZG9tKCkpOwogCi0gICAg
cmV0dXJuICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3Rv
clF1ZXJ5PihXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0
dXJuICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5PihX
VEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAppbmRleCA2OTYzYjY4Mzc5ZDg4ZjI3YTg0ZTJmMWRhNjUxNTM4MTgw
NWIyOTNjLi42Nzg2YzBkMjFlMWIyYzJhNTc4NTFiZDA4NTE2NGMxYTFlOTJjOTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRv
d1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBTaGFkb3dSb290TW9kZSB0eXBlKQogICAgIDogRG9j
dW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAsIFRyZWVTY29w
ZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fc3R5bGVTY29w
ZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNj
b3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCiB7CiB9CiAKQEAgLTY3LDcgKzY3
LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5p
cXVlX3B0cjxTbG90QXNzaWdubWVudD4mJiBzbG8KICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9j
dW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50
KQogICAgICwgbV90eXBlKFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCi0gICAgLCBtX3N0eWxl
U2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fc3R5
bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogICAgICwgbV9zbG90QXNz
aWdubWVudChXVEZNb3ZlKHNsb3RBc3NpZ25tZW50KSkKIHsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBA
QCB2b2lkIFNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudChEb2N1bWVudCYg
bmV3RG9jdW1lbnQpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TighcGFyZW50VHJlZVNjb3BlKCkgfHwgJnBhcmVudFRyZWVTY29wZSgpLT5kb2N1bWVudFNjb3Bl
KCkgPT0gJm5ld0RvY3VtZW50KTsKIAogICAgIC8vIFN0eWxlIHNjb3BlcyBhcmUgZG9jdW1lbnQg
c3BlY2lmaWMuCi0gICAgbV9zdHlsZVNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2Nv
cGU+KCp0aGlzKTsKKyAgICBtX3N0eWxlU2NvcGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4o
KnRoaXMpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJm1f
c3R5bGVTY29wZS0+ZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOwogfQogCkBAIC0yMjgsNyAr
MjI4LDcgQEAgdm9pZCBTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9t
U3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHMKIHsKICAgICBBU1NFUlQoJnNsb3Qucm9v
dE5vZGUoKSA9PSB0aGlzKTsKICAgICBpZiAoIW1fc2xvdEFzc2lnbm1lbnQpCi0gICAgICAgIG1f
c2xvdEFzc2lnbm1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOworICAg
ICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gbWFrZVVuaXF1ZTxTbG90QXNzaWdubWVudD4oKTsKIAog
ICAgIHJldHVybiBtX3Nsb3RBc3NpZ25tZW50LT5hZGRTbG90RWxlbWVudEJ5TmFtZShuYW1lLCBz
bG90LCAqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2ln
bm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCBh
NDE5ZGRhNTI4YWNjYmRhNmRlOWRkZjFhNTQ4NjRjZmRmOTE2MGVmLi40NWMwOGVhMzZhZmUxMzk3
YmUwZWNiZmIyOWUyMjhlY2QwYzk5MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2xvdEFzc2lnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVu
dC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjphZGRTbG90RWxl
bWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbgogICAgICAg
ICAvLyB0byBhdm9pZCBhbHdheXMgaGF2aW5nIGEgdmVjdG9yIG9mIGFsbCBjaGlsZCBub2RlcyBv
ZiBhIHNoYWRvdyBob3N0LgogICAgICAgICBpZiAoc2xvdE5hbWUgPT0gZGVmYXVsdFNsb3ROYW1l
KCkpCiAgICAgICAgICAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U2xvdD4oKTsKICAgICB9KTsKICAgICBhdXRvJiBzbG90ID0gKmFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiAgICAgYm9vbCBuZWVkc1Nsb3RjaGFuZ2VFdmVudCA9IHNoYWRvd1Jvb3Qu
c2hvdWxkRmlyZVNsb3RjaGFuZ2VFdmVudCgpICYmIGhhc0Fzc2lnbmVkTm9kZXMoc2hhZG93Um9v
dCwgc2xvdCk7CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6YXNzaWdu
VG9TbG90KE5vZGUmIGNoaWxkLCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZSkKICAgICB9CiAK
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2xvdHMuZW5zdXJlKHNsb3ROYW1lLCBbXSB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YXNzaWduZWROb2Rlcy5hcHBlbmQoJmNoaWxkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAK
aW5kZXggMmYyODcwZDE2NjlkNDRiYzYxODRhNzJlYzYzZWIzMjNmNTI3ZDM5Zi4uNTMxYWNkZjRk
ZDY1NjhlMGY0NjIxZWI1MGQ4OWRlZTQ2N2Q1NWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUoU2hhZG93Um9vdCYgc2hh
ZG93Um9vdCwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShzaGFkb3dSb290
KQogICAgICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2Nv
cGUoJmRvY3VtZW50KQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoc3RkOjptYWtl
X3VuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBtX2lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKIHsK
ICAgICBzaGFkb3dSb290LnNldFRyZWVTY29wZSgqdGhpcyk7CiB9CkBAIC03Myw3ICs3Myw3IEBA
IFRyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5v
ZGUoZG9jdW1lbnQpCiAgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3Bh
cmVudFRyZWVTY29wZShudWxscHRyKQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnko
c3RkOjptYWtlX3VuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBtX2lk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eT4oKSkKIHsKICAgICBkb2N1bWVudC5zZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtMTQxLDcg
KzE0MSw3IEBAIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIFRyZWVTY29wZTo6Z2V0QWxsRWxlbWVu
dHNCeUlkKGNvbnN0IEF0b21TdHJpbmcmIGVsZW1lbnRJCiB2b2lkIFRyZWVTY29wZTo6YWRkRWxl
bWVudEJ5SWQoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGVsZW1lbnRJZCwgRWxlbWVudCYgZWxlbWVu
dCwgYm9vbCBub3RpZnlPYnNlcnZlcnMpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnRzQnlJZCkKLSAg
ICAgICAgbV9lbGVtZW50c0J5SWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRN
YXA+KCk7CisgICAgICAgIG1fZWxlbWVudHNCeUlkID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRl
cmVkTWFwPigpOwogICAgIG1fZWxlbWVudHNCeUlkLT5hZGQoZWxlbWVudElkLCBlbGVtZW50LCAq
dGhpcyk7CiAgICAgaWYgKG5vdGlmeU9ic2VydmVycykKICAgICAgICAgbV9pZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnktPm5vdGlmeU9ic2VydmVycyhlbGVtZW50SWQpOwpAQCAtMTY4LDcgKzE2OCw3
IEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5n
JiBuYW1lKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUoY29uc3QgQXRv
bVN0cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2VsZW1l
bnRzQnlOYW1lKQotICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxU
cmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gbWFrZVVu
aXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIG1fZWxlbWVudHNCeU5hbWUtPmFkZChu
YW1lLCBlbGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFRyZWVT
Y29wZTo6YWRkSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQmIGltYWdlTWFwKQogICAgIGlmICghbmFt
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9pbWFnZU1hcHNCeU5hbWUpCi0gICAgICAg
IG1faW1hZ2VNYXBzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFw
PigpOworICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3Jk
ZXJlZE1hcD4oKTsKICAgICBtX2ltYWdlTWFwc0J5TmFtZS0+YWRkKCpuYW1lLCBpbWFnZU1hcCwg
KnRoaXMpOwogfQogCkBAIC0yNjMsNyArMjYzLDcgQEAgSFRNTE1hcEVsZW1lbnQqIFRyZWVTY29w
ZTo6Z2V0SW1hZ2VNYXAoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNj
b3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwg
SFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1faW1hZ2VzQnlVc2VtYXAp
Ci0gICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9y
ZGVyZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBtYWtlVW5pcXVlPFRyZWVT
Y29wZU9yZGVyZWRNYXA+KCk7CiAgICAgcmV0dXJuIG1faW1hZ2VzQnlVc2VtYXAtPmFkZChuYW1l
LCBlbGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBIVE1MTGFiZWxFbGVt
ZW50KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKGNvbnN0IEF0b21TdHJpbmcmIGZvckF0
dHJpYnV0ZVZhbAogCiAgICAgaWYgKCFtX2xhYmVsc0J5Rm9yQXR0cmlidXRlKSB7CiAgICAgICAg
IC8vIFBvcHVsYXRlIHRoZSBtYXAgb24gZmlyc3QgYWNjZXNzLgotICAgICAgICBtX2xhYmVsc0J5
Rm9yQXR0cmlidXRlID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwor
ICAgICAgICBtX2xhYmVsc0J5Rm9yQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRl
cmVkTWFwPigpOwogCiAgICAgICAgIGZvciAoYXV0byYgbGFiZWwgOiBkZXNjZW5kYW50c09mVHlw
ZTxIVE1MTGFiZWxFbGVtZW50PihtX3Jvb3ROb2RlKSkgewogICAgICAgICAgICAgY29uc3QgQXRv
bVN0cmluZyYgZm9yVmFsdWUgPSBsYWJlbC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KGZvckF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5oCmluZGV4IGRkYTQ5MGIxM2NkYzJkZGI4M2ZiMWZjOGZmYWIwOWRmMDA4OGQ4MmMuLjQyNjgx
OTZmODkyYWYzMDU1MTAzYzQ4NzJmZThlY2JkZDVmMTFhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3Mg
U3R5bGVkRWxlbWVudDsKIGNsYXNzIFRleHQ7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlVbmRvUmVw
bGFjZWRUZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBB
Y2Nlc3NpYmlsaXR5VW5kb1JlcGxhY2VkVGV4dCgpIHsgfQogICAgIHZvaWQgY29uZmlndXJlUmFu
Z2VEZWxldGVkQnlSZWFwcGx5V2l0aFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3OTM0MmM0OTc3NTNkOWEx
NTI2ZTA1NTU0OWZjNzc5NzIxNGJmNmU0Li44OTFjMTI4OGM2ZTMxNGFjY2FlOWI2MjcxOTc4MTg4
MWU3NDJkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODAsMTIgKzM4MCwx
MiBAQCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJv
YXJkRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNh
c2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5k
OjpDdXQ6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtl
X3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9k
ZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogICAgIGNhc2Ug
Q2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUGxhaW5UZXh0OgogICAgICAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVu
YWJsZWQoKSkgewogICAgICAgICAgICAgYXV0byBwbGFpblRleHRUeXBlID0gInRleHQvcGxhaW4i
X3M7CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSgpLT5yZWFkU3RyaW5nKHBsYWluVGV4dFR5cGUpOwotICAgICAgICAgICAgYXV0
byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOworICAg
ICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigp
OwogICAgICAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcocGxhaW5UZXh0VHlwZSwgcGxh
aW5UZXh0KTsKICAgICAgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZN
b3ZlKHBhc3RlYm9hcmQpKTsKICAgICAgICAgfQpAQCAtMzk2LDEwICszOTYsMTAgQEAgc3RhdGlj
IFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERv
Y3VtZW50JiBkb2N1bWVudCwKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29w
eToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xp
cGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVQYXN0ZToKLSAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9k
ZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAg
ICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBE
YXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJv
YXJkPigpKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6
OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigp
KTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1l
bnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCkpOwogfQogCiAvLyBSZXR1cm5zIHdoZXRoZXIgY2FsbGVyIHNob3VsZCBjb250
aW51ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5nIiwgd2hpY2ggaXMgdGhlIHNhbWUgYXMK
QEAgLTExODMsOSArMTE4Myw5IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRD
b21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiBFZGl0b3I6OkVkaXRvcihGcmFtZSYg
ZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9raWxsUmluZyhzdGQ6Om1ha2Vf
dW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCi0gICAgLCBtX3NwZWxsQ2hlY2tlcihzdGQ6Om1ha2Vf
dW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJhbWUp
KQorICAgICwgbV9raWxsUmluZyhtYWtlVW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCisgICAgLCBt
X3NwZWxsQ2hlY2tlcihtYWtlVW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQorICAgICwgbV9h
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcj4oZnJhbWUpKQogICAgICwgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9y
OjplZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJf
REVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fdGVsZXBob25lTnVt
YmVyRGV0ZWN0aW9uVXBkYXRlVGltZXIoKnRoaXMsICZFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JU
ZWxlcGhvbmVOdW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAwZGRjMTViZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3
NjQ1ZjU0Nzk0Li4yYzIwMjhjYzYzYzFiOTM4YmM2NmZmNGJlYTU4OTkyNThlOWE0YTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cApAQCAtMTYzMSw3ICsxNjMxLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6dXBk
YXRlTm9kZXNJbnNlcnRlZChOb2RlICpub2RlKQogUmVwbGFjZW1lbnRGcmFnbWVudCogUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQoKQogewogICAgIGlm
ICghbV9yZXBsYWNlbWVudEZyYWdtZW50KQotICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVu
dC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOworICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21l
bnQgPSBtYWtlVW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5n
ZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIHJldHVybiBtX3JlcGxhY2VtZW50RnJhZ21l
bnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0
aW9uUmVjdEdhdGhlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVj
dEdhdGhlcmVyLmNwcAppbmRleCAzYjQwNjg4Y2I0ZGE2NTZiMzQ0NTg3YzA4ODg2MzZjMGFiMTU2
NmNmLi5mOWI2NGM1YzhjODk2YmYzMjI2MzA4NzA5ZjI2YWE2NjdlMWVkOTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVy
PiBTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kCiAgICAgbV9nYXBSZWN0cy5jbGVhcigp
OwogICAgIG1faXNUZXh0T25seSA9IHRydWU7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxOb3RpZmllcj4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5vdGlmaWVyPigqdGhp
cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcAppbmRleCAxODk2ZTFhMjI4MWMxYTliMDQ2ZThlZmFjZDkxMTlhZjVlMjc3
ZDU2Li5mMWQxOWMxMDExNGMxYTk4NWI4YjQyNmZhNjhmZGI4MTIyYTYwYzc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC02NTAsNyArNjUwLDcgQEAgYm9vbCBU
ZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRp
b24gPSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2VuZE9mZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3RoKCk7CiAgICAgICAgIGlmICghbV9mbG93
UnVuUmVzb2x2ZXJDYWNoZSB8fCAmbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZi
bG9ja0Zsb3cpIHsKICAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5G
bG93ID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA/IDAgOiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0
ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gc3RkOjptYWtl
X3VuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0
KTsKKyAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBtYWtlVW5pcXVlPFNpbXBs
ZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQpOwogICAgICAgICB9
CiAgICAgICAgIC8vIFNraXAgdG8gbV9vZmZzZXQgcG9zaXRpb24uCiAgICAgICAgIGF1dG8gcmFu
Z2UgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAw
YTgzYWMwOTU5Mjc0YzA3ODBkNWQ3YjM4NWYwMTljMGU4NmUzYzc0Li45Y2Y4NmE0YTE1ZjFjN2M2
ZjAyODE1NTY0N2FmYTAwNTlhZTNiNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0zODAsNyArMzgwLDcgQEAgSFRNTENvbnZlcnRlcjo6
SFRNTENvbnZlcnRlcihjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQp
CiAgICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9IGZhbHNlOwogICAgIF9mbGFncy5yZWFjaGVkRW5k
ID0gZmFsc2U7CiAgICAgCi0gICAgX2NhY2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTENvbnZl
cnRlckNhY2hlcz4oKTsKKyAgICBfY2FjaGVzID0gbWFrZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2Fj
aGVzPigpOwogfQogCiBIVE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigpCkBAIC01NTEsNyAr
NTUxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0
eWxlUHJvcGVydHlGb3JFbGVtZW50KEVsZW1lbnQmIGUKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9j
b21wdXRlZFN0eWxlcy5hZGQoJmVsZW1lbnQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1lbnQsIHRydWUpOworICAgICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPigm
ZWxlbWVudCwgdHJ1ZSk7CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciYgY29tcHV0ZWRTdHls
ZSA9ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBjb21wdXRlZFN0eWxlLnBy
b3BlcnR5VmFsdWUocHJvcGVydHlJZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4IDI1NzdkNWE3
Njk2ODE2MjJmNWQwYTdiNjNmZjRkMDlkODhjOTVkYzEuLjI5YzVhOGRhN2VlMzI1NTYxMjY1Njkw
NTRlMzAyMjI4YTUzMDE4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCkBAIC0zNyw2ICszNyw3IEBAIE9C
SkNfQ0xBU1MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcigpIHsgfQogICAgIC8vIFJldHVybnMg
YSBjb250ZXh0IElELgpAQCAtNTIsNiArNTMsNyBAQCBjbGFzcyBBbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIgewogICAgIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlcygpOwogCiAgICAgY2xhc3Mg
QWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29u
dHJvbGxlcigpIHsgfQogICAgICAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3QgUmV0
YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApp
bmRleCBmYjQzNzE2MzAzYWUyNWI4MTkyOTJkMjcxY2EyY2FlNjg0YjljMDJlLi5jM2M4ZjhiMzI0
YmZlY2RjZTllNWM0ZWIxOWI1Yjc0NjA4OTI4YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VG
b3JTYW5pdGl6aW5nV2ViQ29udGVudCgpCiB7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9
IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwogICAgIAotICAgIGF1dG8gcGFn
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwor
ICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlv
bikpOwogICAgIHBhZ2UtPnNldElzRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKICAgICBwYWdl
LT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgcGFnZS0+c2V0dGluZ3Mo
KS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmNwcAppbmRleCBhMDk1ZWVhZTliMmE3OTdiZGFiYWUzNDk0MGZkYzZhM2NlMzA0
MjRiLi5kNTgxMTJmZjliZGY2Y2Q3ZDE5ODU1MmQ4NjY5OTFmODViN2ExYzNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC05NCwxMSArOTQsMTEgQEAg
c3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9u
KQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1
ZXVlLmdldCgpLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1
bmN0aW9uKSkpOwogfQogCiBBc3luY0ZpbGVTdHJlYW06OkFzeW5jRmlsZVN0cmVhbShGaWxlU3Ry
ZWFtQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2ludGVybmFscyhzdGQ6Om1ha2VfdW5pcXVlPElu
dGVybmFscz4oY2xpZW50KSkKKyAgICA6IG1faW50ZXJuYWxzKG1ha2VVbmlxdWU8SW50ZXJuYWxz
PihjbGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCA5YWQzZGE5ZWZmZjBmM2E3MDdhMDYwMWY3ODYw
MWQ1ZDg2ODI1OGY1Li45OWE3YjVjNmY5ODdhMTRiYTE5MDk0NTg5ODdhZTg0ZWNmYzRmMDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiYgYmxvYiwgRmls
ZVJlYWRlckxvYWRlcjo6UmVhZFR5cAogICAgIG1fc3RhdGUgPSBMT0FESU5HOwogICAgIG1fZXJy
b3IgPSBudWxscHRyOwogCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFk
ZXJMb2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQq
Pih0aGlzKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1f
cmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0aGlzKSk7CiAg
ICAgbV9sb2FkZXItPnNldEVuY29kaW5nKG1fZW5jb2RpbmcpOwogICAgIG1fbG9hZGVyLT5zZXRE
YXRhVHlwZShtX2Jsb2ItPnR5cGUoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
CmluZGV4IDZhZTU1MmNiY2VmYmEzNWFmNTQ5NGFkODBhMTQ3MzFkMDBhY2EzZDEuLjVjOGYxOGUz
ZGFiMGViMjU5N2FkNWU4MjIxMzliZDg4ZmYzMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
Q2FjaGVkRnJhbWUuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZy
YW1lKEZyYW1lJiBmcmFtZSkKIAogICAgIC8vIENyZWF0ZSB0aGUgQ2FjaGVkRnJhbWVzIGZvciBh
bGwgRnJhbWVzIGluIHRoZSBGcmFtZVRyZWUuCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFt
ZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRT
aWJsaW5nKCkpCi0gICAgICAgIG1fY2hpbGRGcmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
Q2FjaGVkRnJhbWU+KCpjaGlsZCkpOworICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZChtYWtl
VW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9j
dW1lbnQtPmRvbVdpbmRvdygpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5mcmFt
ZSgpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUm
IGZyYW1lKQogICAgIC8vIEFjdGl2ZSBET00gb2JqZWN0cyBtdXN0IGJlIHN1c3BlbmRlZCBiZWZv
cmUgd2UgY2FjaGUgdGhlIGZyYW1lIHNjcmlwdCBkYXRhLgogICAgIG1fZG9jdW1lbnQtPnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hlKTsKIAotICAgIG1fY2FjaGVkRnJhbWVT
Y3JpcHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRDYWNoZWRGcmFtZURhdGE+KGZyYW1l
KTsKKyAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IG1ha2VVbmlxdWU8U2NyaXB0Q2FjaGVk
RnJhbWVEYXRhPihmcmFtZSk7CiAKICAgICBtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+c3VzcGVu
ZEZvclBhZ2VDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Nh
Y2hlZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAppbmRl
eCAwNjg2YWU4ZmVjZTQ0ZjFlZjY5MGU1ZjhmNmFiZTg0NjE0NjNkZjdkLi45NzQ3YTQwNDAxNmFj
ODY4ZDJmNzc5NmU1MzMwNDM2ZmZhNTg3NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVk
UGFnZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6
UmVmQ291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRQYWdlQ291bnRlciwgKCJDYWNoZWQKIENhY2hl
ZFBhZ2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwg
bV9leHBpcmF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSArIFNlY29uZHMocGFnZS5zZXR0
aW5ncygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWwoKSkpCi0gICAgLCBtX2Nh
Y2hlZE1haW5GcmFtZShzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5GcmFt
ZSgpKSkKKyAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+KHBh
Z2UubWFpbkZyYW1lKCkpKQogewogI2lmbmRlZiBOREVCVUcKICAgICBjYWNoZWRQYWdlQ291bnRl
ci5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAwMDI5
NjU1ODkyZDE1NGNiNTA0M2UxZGEyMjgyNTg3OWY2M2VkZGU1Li4zYmEyNGI5ZGUyZTk5NDE5NmEw
ZGY5MmZjMzY2M2NlZWE1YmY0Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CkBAIC00NzgsNyArNDc4LDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3Rv
cnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3Qg
ZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUuCiAgICAgICAgIFNjcmlwdERpc2FsbG93
ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAotICAgICAgICBp
dGVtLm1fY2FjaGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOwor
ICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2Up
OwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdSZWFzb246Ok5vbmU7CiAg
ICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcAppbmRleCA3YTk5MWYxN2IwM2Q4M2U5MDVmN2QzZTA2MDdiZjUyYTk5YjgwZTQ1
Li5iMTRkMzEwMTU4YjY0NWZlODY5OWY3Zjk5ZjQxODU4YmQ1NWFlMjhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIEZpbGVJbnB1
dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAg
bV9maWxlSWNvbkxvYWRlci0+aW52YWxpZGF0ZSgpOwogCiAgICAgRmlsZUljb25Mb2FkZXJDbGll
bnQmIGNsaWVudCA9ICp0aGlzOwotICAgIG1fZmlsZUljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOworICAgIG1fZmlsZUljb25Mb2FkZXIgPSBtYWtl
VW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOwogCiAgICAgY2hyb21lLT5sb2FkSWNvbkZv
ckZpbGVzKHBhdGhzLCAqbV9maWxlSWNvbkxvYWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggODA2ZTVmM2RhZWJlMjk0ZTMzMDIz
MGRmYTVlZGU4YzkyZDU4YzMxOC4uMTdjMDI3Y2ZkZmExYmI0M2I2NDVlZTYyZDU4YzhhYzMyMDZk
ODc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0
b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihhc0hUTUxFbGVtZW50KCkuaXNDb25uZWN0ZWQoKSk7Ci0g
ICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1B
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7CisgICAgbV9mb3JtQXR0cmlidXRlVGFy
Z2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNI
VE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAq
dGhpcyk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlVGFy
Z2V0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IGVh
NWIwOWFhYTA4ZGIyNzM5NjFiOTUzNDIyZjAzZGQ3YWQ2ZTQ2NzEuLmQwZTAzZjU2Y2IwNjNlMjdm
MTEzNDBhMjcxM2Q0Zjk2MWI1YWU2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNhdmVkRm9ybVN0YXRl
PiBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmluZz4KICAgICBz
aXplX3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5kZXgrK10udG9VSW50KCk7CiAgICAgaWYg
KCFpdGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gc2F2ZWRGb3Jt
U3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOworICAgIGF1dG8gc2F2
ZWRGb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwogICAgIHdoaWxlIChp
dGVtQ291bnQtLSkgewogICAgICAgICBpZiAoaW5kZXggKyAxID49IHN0YXRlVmVjdG9yLnNpemUo
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY1LDEzICszNjUsMTMgQEAgc3Rh
dGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogc3RkOjp1bmlxdWVfcHRyPEZvcm1Db250
cm9sbGVyOjpTYXZlZEZvcm1TdGF0ZU1hcD4gRm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9y
bVN0YXRlTWFwKGNvbnN0IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQmIGNvbnRyb2xMaXN0KQogewog
ICAgIEZvcm1LZXlHZW5lcmF0b3Iga2V5R2VuZXJhdG9yOwotICAgIGF1dG8gc3RhdGVNYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOworICAgIGF1dG8gc3RhdGVNYXAg
PSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOwogICAgIGZvciAoYXV0byYgY29udHJv
bCA6IGNvbnRyb2xMaXN0KSB7CiAgICAgICAgIGlmICghY29udHJvbC0+c2hvdWxkU2F2ZUFuZFJl
c3RvcmVGb3JtQ29udHJvbFN0YXRlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
YXV0byYgZm9ybVN0YXRlID0gc3RhdGVNYXAtPmFkZChrZXlHZW5lcmF0b3IuZm9ybUtleSgqY29u
dHJvbCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGlmICghZm9y
bVN0YXRlKQotICAgICAgICAgICAgZm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZv
cm1TdGF0ZT4oKTsKKyAgICAgICAgICAgIGZvcm1TdGF0ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3Jt
U3RhdGU+KCk7CiAgICAgICAgIGZvcm1TdGF0ZS0+YXBwZW5kQ29udHJvbFN0YXRlKGNvbnRyb2wt
Pm5hbWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9sLT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFwOwpAQCAtNDAzLDcgKzQwMyw3IEBAIEZvcm1D
b250cm9sU3RhdGUgRm9ybUNvbnRyb2xsZXI6OnRha2VTdGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0
IEhUTUxGb3JtQ29udHJvbEVsCiAgICAgaWYgKG1fc2F2ZWRGb3JtU3RhdGVNYXAuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwogICAgIGlmICghbV9mb3JtS2V5
R2VuZXJhdG9yKQotICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZvcm1LZXlHZW5lcmF0b3I+KCk7CisgICAgICAgIG1fZm9ybUtleUdlbmVyYXRvciA9IG1ha2VV
bmlxdWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKICAgICBTYXZlZEZvcm1TdGF0ZU1hcDo6aXRlcmF0
b3IgaXQgPSBtX3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQobV9mb3JtS2V5R2VuZXJhdG9yLT5mb3Jt
S2V5KGNvbnRyb2wpLmltcGwoKSk7CiAgICAgaWYgKGl0ID09IG1fc2F2ZWRGb3JtU3RhdGVNYXAu
ZW5kKCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDEwNDdjNThlZWMzNTM2ZTNkMzk5M2E3
YjZlNTg2MjViMDE1OTUyZjEuLmViOWJkMDY4NWQ1OTJlYTY5MjMxM2FkNDE2YzI3ZDdmMjgyNjFm
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0zMTQs
NyArMzE0LDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6aGFzUmVsKFJlbGF0aW9uIHJlbGF0
aW9uKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIHsKLSAgICAgICAgbV9yZWxMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQmPigq
dGhpcyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2Vu
KSB7CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0Pihjb25zdF9j
YXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERv
Y3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAg
ICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAibm9yZWZlcnJl
ciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJub29wZW5lciIpIHx8IGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJhciIpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCBhYzA3NThkZTgzYjA0ODgyYTVkODkyMmZkNDA1NTQ4
ZWY5NTZkY2EyLi40OWFiZmE1ZjcwYTdhYjk3ZDczZTJjODJiNzY3YjA1MzUxYWRlZjg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZv
aWQgSFRNTEFyZWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkUmVnaW9uKCkKIGJvb2wgSFRNTEFy
ZWFFbGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlv
dXRTaXplJiBzaXplLCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiB7CiAgICAgaWYgKG1fbGFzdFNp
emUgIT0gc2l6ZSkgewotICAgICAgICBtX3JlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4o
Z2V0UmVnaW9uKHNpemUpKTsKKyAgICAgICAgbV9yZWdpb24gPSBtYWtlVW5pcXVlPFBhdGg+KGdl
dFJlZ2lvbihzaXplKSk7CiAgICAgICAgIG1fbGFzdFNpemUgPSBzaXplOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAwNzcxNWNiYjUwOTU0
YTYyNjM2YzkzMzA1YTc2NTMzNTlkMWU2ZjZiLi4yMDE0ZWZlNzVjZWM0NjBlMzc5MWUzNjNmNTYy
OGU1MDAxYjhkY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cApAQCAtOTUyLDcgKzk1Miw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldEltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpIGNvCiAgICAgbV9pbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHRydWUpOwogICAg
IG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGRl
ZmF1bHRJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
LnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250
ZXh0KCkpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAKICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZt
KCkpOwogICAgIEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkuaGVh
cC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtZW1vcnlDb3N0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA5NzZjOGUwYTlhMDZhOWI4M2Q2Y2E5NDFiZDVk
ZDM3YjlmMzM4NWM1Li4zMjgxNzZiNjllOGNkMWJmMjJkNGU3NjMyN2U5ZjI5Mjk2OGFiNDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBA
IHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAg
ICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigp
OworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNo
ZT4oKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHAKaW5kZXggZjE1Nzg3NGU2ZDUzNGUzZjYxMzRlNGE1ZGY0ZjUxYmUyZjY3YTMx
YS4uNjBkZDFmYjI1MjAzODYwZDNkOTJhN2E1YWNiMzMxYzJhYjA0YjU5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtODgsNyArODgsNyBAQCBjb25z
dCBBdG9tU3RyaW5nJiBEZXRhaWxzU2xvdEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxk
KGNvbnN0IE5vZGUmIGNoaWxkKQogUmVmPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIGF1dG8gZGV0YWlscyA9IGFkb3B0UmVmKCpuZXcgSFRNTERldGFpbHNF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChT
aGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsc1Nsb3RB
c3NpZ25tZW50PigpKSk7CisgICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290Ojpj
cmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7CiAg
ICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ4ODkzYjFmMDk0OWVmMTAyZTI5ZDAzYzU4OTY3YzRk
ZDRmM2ZkNWEuLmUxNTMxNmExOWVlZmI0NzdlM2YzNjdjODBmN2MzYzFhMmE2MzRiODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDgw
LDcgKzQ4MCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlKCkKICAgICBpZiAocmVuZGVyZXIoKSAmJiB3aWxsVmFsaWRhdGUoKSkK
ICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7
CiAgICAgaWYgKCFtX3ZhbGlkYXRpb25NZXNzYWdlKQotICAgICAgICBtX3ZhbGlkYXRpb25NZXNz
YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CisgICAgICAg
IG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBtYWtlVW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0aGlz
KTsKICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT51cGRhdGVWYWxpZGF0aW9uTWVzc2FnZShtZXNz
YWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcAppbmRleCA2ZWMyMmQ3NzQ5ZjJmNzhiZDMxZWY3N2VhNjM2MDczYjcxYzU5
ZmYyLi5hMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZlNjg5YzNiMWM2OGI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5h
bWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29s
bGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVl
PENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmlu
Z0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAppbmRleCBjNzZkNDkzYTYyY2VkODMwODgwMWI2YjAxZDMzMjFlMGEzMzNmNTFk
Li40MzVkOTUxNGRkMjlkZGQxZjZkZmIxZDE2OWUzNDdlMzE1YTMwMTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgdm9pZCBIVE1M
Rm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0ZW0qIGl0ZW0sIGNvbnN0
IEF0b21TdHJpbmcmIHAKICAgICBpZiAocGFzdE5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKCFtX3Bhc3ROYW1lc01hcCkKLSAgICAgICAgbV9wYXN0TmFtZXNNYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKKyAgICAgICAgbV9wYXN0TmFtZXNNYXAg
PSBtYWtlVW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKICAgICBtX3Bhc3ROYW1lc01hcC0+c2V0KHBh
c3ROYW1lLmltcGwoKSwgaXRlbSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5jcHAKaW5kZXggMDJkN2Q0ZTRmYmU4NmY1MjcwZjU4NGI2YThkZWI5YmU0NmY5N2Fh
OS4uYjFjODIxZGQ5YmFiYTJhMjBjYjI5ZTFjMWNmZDkwZDcxZmVjNThiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhU
TUxJRnJhbWVFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIEQKIERPTVRva2VuTGlzdCYgSFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRi
b3goKQogewogICAgIGlmICghbV9zYW5kYm94KSB7Ci0gICAgICAgIG1fc2FuZGJveCA9IHN0ZDo6
bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2FuZGJveEF0dHIsIFtdKERvY3VtZW50
JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3NhbmRib3ggPSBtYWtlVW5pcXVlPERP
TVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcg
dG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiBTZWN1cml0eUNvbnRleHQ6OmlzU3VwcG9ydGVk
U2FuZGJveFBvbGljeSh0b2tlbik7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBjMjVjZGQ4MGQ1ZjhhNzcwYTFkOTcwMDU3
ODQ3YTg5YzU2ODNkYmQuLjM3NmM1MjE5NjRlMGY3MWI2ZmQ5YzIxNzJkNjIwMWMyOTI1N2ExYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1
dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKIHsKICAgICBpZiAoIW1faW1hZ2VMb2FkZXIp
Ci0gICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRl
cj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VM
b2FkZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKQEAgLTE2NDEs
NyArMTY0MSw3IEBAIFJlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50
OjpkYXRhTGlzdCgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJp
YnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkKLSAgICAgICAg
bV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0
QXR0ciksIHRoaXMpOworICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1h
a2VVbmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CiAgICAgZWxzZQogICAgICAgICBtX2xpc3RB
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjg2MzRjYWRhZmExOGEwYTI3Y2NmNzI4ZjliYmY1NmNi
N2Y3OGQxNi4uZjZhN2JjODAyNGZmYTVlNGJkNzFmNjlhMjdjOTdjOGM5MzZiYjRlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIGJv
b2wgSFRNTExpbmtFbGVtZW50OjpzdHlsZVNoZWV0SXNMb2FkaW5nKCkgY29uc3QKIERPTVRva2Vu
TGlzdCYgSFRNTExpbmtFbGVtZW50OjpzaXplcygpCiB7CiAgICAgaWYgKCFtX3NpemVzKQotICAg
ICAgICBtX3NpemVzID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXpl
c0F0dHIpOworICAgICAgICBtX3NpemVzID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlz
LCBzaXplc0F0dHIpOwogICAgIHJldHVybiAqbV9zaXplczsKIH0KIApAQCAtNTIyLDcgKzUyMiw3
IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRT
ZW5kZXIqIGV2ZW50U2VuZGVyKQogRE9NVG9rZW5MaXN0JiBIVE1MTGlua0VsZW1lbnQ6OnJlbExp
c3QoKQogewogICAgIGlmICghbV9yZWxMaXN0KSAKLSAgICAgICAgbV9yZWxMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERv
Y3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3JlbExpc3Qg
PSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6cmVsQXR0ciwgW10o
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAgICByZXR1
cm4gTGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQoZG9jdW1lbnQsIHRva2VuKTsKICAgICAg
ICAgfSk7CiAgICAgcmV0dXJuICptX3JlbExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBiNTVjNDY5MDYxZGNjMDRmMmExMTlhMjU1MzhlZjA4MmZlNmU0
MzU1Li5mNjRmZTkyYjZiN2QwMWM0OTRiNTdhNzY1ZTJhNTViNjRiM2YwNDNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBIVE1M
TWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50JiBkb2N1bQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRp
YWxpemF0aW9uKCkKIHsKLSAgICBtX21lZGlhU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8TWVk
aWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOworICAgIG1fbWVkaWFTZXNzaW9uID0gbWFrZVVuaXF1
ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CiAKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRk
QmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1
cmVGb3JGdWxsc2NyZWVuKTsKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmlj
dGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYSk7
CkBAIC0zMDI3LDcgKzMwMjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9s
ZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRpbQogCiAgICAgLy8g
NSAtIElmIHRoZSBzZWVrIHdhcyBpbiByZXNwb25zZSB0byBhIERPTSBtZXRob2QgY2FsbCBvciBz
ZXR0aW5nIG9mIGFuIElETCBhdHRyaWJ1dGUsIHRoZW4gY29udGludWUKICAgICAvLyB0aGUgc2Ny
aXB0LiBUaGUgcmVtYWluZGVyIG9mIHRoZXNlIHN0ZXBzIG11c3QgYmUgcnVuIGFzeW5jaHJvbm91
c2x5LgotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTZWVrPihu
b3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CisgICAgbV9w
ZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRpdmVU
b2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICBpZiAoZnJvbURPTSkgewogICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1aW5nIHNlZWsgZnJvbSAiLCBub3csICIg
dG8gIiwgdGltZSk7CiAgICAgICAgIG1fc2Vla1Rhc2tRdWV1ZS5zY2hlZHVsZVRhc2soc3RkOjpi
aW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2MTI0NTQxZjdjZjU0YTExMGE1ZTQ4NmU0MmM3MWNk
MmEyZWZhMTkzLi4yYzZlYzA1OGU0Yzk1MjEzMWMwZWEwOGUwOGE3ZWE5NDM1ODA2NTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTkwLDYgKzk5MCw3IEBAIGNs
YXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAog
ICAgIHN0cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29uc3QgTWVkaWFUaW1lJiBub3csIGNvbnN0
IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRvbGVyYW5j
ZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVyYW5jZSkKICAgICAgICAgICAgIDogbm93
KG5vdykKICAgICAgICAgICAgICwgdGFyZ2V0VGltZSh0YXJnZXRUaW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCBkZDRmYTJkNzBlNGY0M2Y0MmI4MjIy
ZDM3ZDQ0MThmMWExMzFlZDg3Li41NmI3MjA2YWUzYmU4ZjEwYTg4MTRhZTlhZmFjNjJiZmViNTYw
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtMTMy
LDcgKzEzMiw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25z
dCBTdHJpbmcmIHZhbHVlKQogRE9NVG9rZW5MaXN0JiBIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZv
cigpCiB7CiAgICAgaWYgKCFtX3Rva2VucykKLSAgICAgICAgbV90b2tlbnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOworICAgICAgICBtX3Rva2VucyA9
IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgZm9yQXR0cik7CiAgICAgcmV0dXJuICpt
X3Rva2VuczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKaW5kZXggZGRhOTQ0OWQ1N2FkNDIwODU4NjI3ZGVkM2ZkZDkxODEzMjE1ZmUyYi4u
NWI5OWQ1NTU1MzA0OTcwOTNjNmJjYTk5NTg3YzdhMmY3MjU1OTA5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yODcsNyArMjg3LDcg
QEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlv
bigpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgIXVzZUZhbGxiYWNrQ29udGVudCgpKSB7CiAgICAg
ICAgIGlmIChpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIp
Ci0gICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTElt
YWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VV
bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgICAgICBpZiAobV9uZWVkc0lt
YWdlUmVsb2FkKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVt
ZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggMTBiYzA5ZmYwOTljODg4YjIy
NjI2OTM5MGI4ZTFmOGJlNGNlMzk2Ny4uYjA0OTM5YjljMmQ3MjcwMjEzNzljNWE0ZGQzNDA0N2Q4
MTJhZDk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBTdW1tYXJ5U2xvdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
U2xvdEFzc2lnbm1lbnQgewogUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4gSFRNTFN1bW1hcnlFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IHN1bW1hcnkgPSBhZG9wdFJlZigq
bmV3IEhUTUxTdW1tYXJ5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIHN1bW1hcnkt
PmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5p
cXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOworICAgIHN1bW1hcnktPmFkZFNoYWRvd1Jvb3Qo
U2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlVW5pcXVlPFN1bW1hcnlTbG90RWxlbWVu
dD4oKSkpOwogICAgIHJldHVybiBzdW1tYXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAppbmRleCBhNWU3NWFhZmY1MmRkZjlmNTc1NDViYTA2N2VlYzc4OTg4
OGRkOWFiLi42N2ZmMjEyNTJmMWI4ZTgzMTBhMWQ3Y2JiMjMyZWE4YzczOTM4YTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9p
ZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgIHVwZGF0ZURpc3Bs
YXlTdGF0ZSgpOwogICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAg
ICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1faW1hZ2VM
b2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICBtX2lt
YWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAgICBpZiAoYXV0byogcmVuZGVy
ZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXItPmltYWdlUmVzb3Vy
Y2UoKS5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKQEAgLTEyNyw3ICsx
MjcsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogCiAgICAgICAgIGlmIChzaG91bGREaXNw
bGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAg
ICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxv
YWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVl
PEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBk
YXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCA3YmViYzdhMTBjY2JlZDUz
Y2ZlOGNhZjhhMDdjNzhlNmM1NzlkNjRmLi5iNjY4ZGExZjMyMTRkYmY5YjkxNjFlZmE4MzI1NmM5
NWNhODIxMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UHVi
bGljVVJMTWFuYWdlcj4gUHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKKyAgICBhdXRvIHB1YmxpY1VSTE1h
bmFnZXIgPSBtYWtlVW5pcXVlPFB1YmxpY1VSTE1hbmFnZXI+KGNvbnRleHQpOwogICAgIHB1Ymxp
Y1VSTE1hbmFnZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBwdWJsaWNVUkxNYW5h
Z2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCA4
YWY3M2E4YTAwNTQ5ODBhZDE3OTA2OTU2YTg0MzJhNmY5Y2RiMTRiLi5mNWRhYjBmNDJmMmQwNTNl
NzAzYzZjNTcyM2NhMTYwMzcxZDFhMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRp
b25NZXNzYWdlLmNwcApAQCAtMTE1LDkgKzExNSw5IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6
OnNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVCghbWVzc2FnZS5p
c0VtcHR5KCkpOwogICAgIG1fbWVzc2FnZSA9IG1lc3NhZ2U7CiAgICAgaWYgKCFtX2J1YmJsZSkK
LSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRh
dGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5p
cXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOwog
ICAgIGVsc2UKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlz
LCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKKyAgICAg
ICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6
OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3Qo
MF9zKTsKIH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNl
dE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKCkKICAgICBpZiAobWFnbmlmaWNhdGlvbiA8PSAwKQog
ICAgICAgICBtX3RpbWVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKLSAgICAgICAgbV90aW1lciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0
ZUJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgICAgIG1fdGltZXIt
PnN0YXJ0T25lU2hvdChzdGQ6Om1heCg1X3MsIDFfbXMgKiBzdGF0aWNfY2FzdDxkb3VibGU+KG1f
bWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uKSk7CiAgICAgfQogfQpAQCAtMjM0LDcg
KzIzNCw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdlKCkK
ICAgICB9CiAKICAgICAvLyBXZSBtdXN0IG5vdCBtb2RpZnkgdGhlIERPTSB0cmVlIGluIHRoaXMg
Y29udGV4dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0TWVzc2FnZSgpLgotICAgIG1fdGltZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxl
dGVCdWJibGVUcmVlKTsKKyAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZW
YWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgbV90aW1lci0+c3RhcnRP
bmVTaG90KDBfcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggYjE2Nzc4NDQyOGMz
YmZlOWU2ZjE2YTc3ODQwZDNmM2JiOTcwNWI5Ni4uNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2
NTRjY2M1NmMwMjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAg
c3RydWN0IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQgewogCiAgICAgRGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0
UmVjdCYgY2xpcCkKICAgICAgICAgOiBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3Bs
YXlMaXN0Q29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlz
cGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0
ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0
LCBzdGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgICAgICB9KQogICAgIHsKICAg
ICB9CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OmRyYXdpbmdDb250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAoVU5MSUtF
TFkobV91c2VzRGlzcGxheUxpc3REcmF3aW5nKSkgewogICAgICAgICBpZiAoIW1fcmVjb3JkaW5n
Q29udGV4dCkKLSAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOworICAgICAg
ICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVy
bygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAgICAgIHJldHVybiAmbV9yZWNvcmRpbmdD
b250ZXh0LT5jb250ZXh0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2MzExOTE3NTcwZjJkYjI4
NTk0Y2JiMzQ5MDI0Njk5N2I1ODNmYmUwLi5jZDQ3MjEyNjFiMmUwMjJiNTUyNWRkM2QzY2E1NDY5
ZjljMGIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTM1OSw3ICsxMzU5LDcgQEAgV2ViR0xFeHRlbnNp
b24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVMaXRl
cmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBu
YW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAgICAg
IHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6
IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5p
cXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAh
PSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggZTA2YmY5OWQ1OTE1OTYzOTgwYTYxMWMzMmE4MzllMjk3ZjEyODA0NS4uZTVmZGU3MDMzNzQ1
NmEzMWUxNTcxZWUxMGYzZmQyNjQyZGIwMzZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMTYsNyArMTE2LDcg
QEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJp
YWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAogICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAgICAgICAgIGlmICghdmFyaWFibGUpIHsg
XAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8
dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5h
YmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAogICAgICAgICAgICAg
aWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7IFwKICAgICAgICAg
fSBcCkBAIC0xMzIsNyArMTMyLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBt
X2V4dFNoYWRlclRleHR1cmVMT0QgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgICAgICAgICAgICAgbV9leHRTaGFkZXJU
ZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7
CisgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbWFrZVVuaXF1ZTxFWFRT
aGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xNTksNyArMTU5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
ICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgICAgICAgICAgICAgbV93ZWJnbERyYXdC
dWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7CisgICAg
ICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbWFrZVVuaXF1ZTxXZWJHTERyYXdCdWZm
ZXJzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC0xNzEsNyArMTcxLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX2Fu
Z2xlSW5zdGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FO
R0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwotICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5j
ZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7
CisgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG1ha2VVbmlxdWU8QU5H
TEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggM2VjZTdlZWI3NDJmYWRiNmZlMThi
MzNlYjVhNjEzOWNlZDQxYmE1Ni4uZDE2NmZiMjM5MDc2ZDM2MjY1ZDk2YzY0NWYwNzE4NzVhYzgy
YmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc5OSw4ICs3OTksOCBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX2NvbnRleHQt
PnZpZXdwb3J0KDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7
CiAgICAgbV9jb250ZXh0LT5zY2lzc29yKDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFz
U2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2so
c3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMp
KTsKLSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKHN0ZDo6bWFrZV91bmlx
dWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KHRoaXMpKTsKKyAg
ICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRl
cmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnNldEVycm9y
TWVzc2FnZUNhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNz
YWdlQ2FsbGJhY2s+KHRoaXMpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpzZXR1cEZsYWdzKCkKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQogICAgICAgICBS
ZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNy
ZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpOwogCiAgICAg
ICAgIGZvciAoYXV0byYgZXJyb3IgOiBnZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikuc3BsaXQoJ1xu
JykpCi0gICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2Uoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpS
ZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDog
IiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkpOworICAgICAgICAgICAgY2FudmFzLT5k
b2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkp
KTsKICAgICB9CiB9CiAKQEAgLTU4MDgsOSArNTgwOCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJp
bmcmCiAgICAgLy8gRXJyb3IgbWVzc2FnZXMgY2FuIG9jY3VyIGR1cmluZyBmdW5jdGlvbiBjYWxs
cywgc28gc2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZW0uCiAgICAgaWYgKGxldmVsID09IE1lc3Nh
Z2VMZXZlbDo6RXJyb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNr
PiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3Rh
dGU6OmN1cnJlbnRTdGF0ZSgpKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmlu
ZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFjZSkp
OworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZl
bCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNv
bnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNz
YWdlKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywg
bGV2ZWwsIG1lc3NhZ2UpOwogCiAgICAgYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpOwogICAg
IGlmIChjYW52YXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQ
cmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2Fk
U2Nhbm5lci5jcHAKaW5kZXggZTg1OTBjY2M2OTcyOGFmMzkzMDFkM2FlOGQ4OTg4ZjVjMTVhNGIy
YS4uYWVmZTQ1N2Y0ZWZmMDQzNjU3NjNjYjI2ZjcxNzg0NjNlMzJlMWQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjAxLDcg
KzIwMSw3IEBAIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAgICAgICAgaWYg
KCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBVUkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJvbSB0aGUgSFRNTFByZWxvYWRTY2FubmVy
IHZpYSBzY2FuKCk6IHdpdGhvdXQgaXQgd2Ugd2lsbCBnZXQgcmVsYXRpdmUgVVJMcyB3cm9uZy4K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJz
ZXQgaW4gdGhlIHByZWxvYWQgcmVxdWVzdD8KLSAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVu
dFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQsIFN0cmluZygpLCBQcmVs
b2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5n
KSk7CisgICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQobWFrZVVuaXF1ZTxQcmVsb2FkUmVx
dWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpD
U1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8s
IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwogICAgICAgICB9CiAgICAgICAgIG1fc3Rh
dGUgPSBJbml0aWFsOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UocnVsZSwgImNoYXJzZXQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA1MWJhZTRjMjFjZjk0MGRjZDhjNmQzMjBi
YzRkYmQ2NjI2YmU3ZDlmLi45YWM0NDRlZjBhNjcxZjhhNDc2OTk1N2FlMzIyMmJkOGQxMDA3ZDk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rpb25EYXRhPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEUKICAg
ICBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGVsZW1lbnRJbnRlcmZhY2UgPSBudWxscHRyOwog
ICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0
b21FbGVtZW50SW50ZXJmYWNlKHRva2VuLCAmZWxlbWVudEludGVyZmFjZSk7CiAgICAgaWYgKFVO
TElLRUxZKGVsZW1lbnRJbnRlcmZhY2UpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4oKmVsZW1lbnRJbnRlcmZhY2UsIHRva2Vu
Lm5hbWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJmYWNl
LCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygpKSk7CiAgICAgYXR0YWNo
TGF0ZXIoY3VycmVudE5vZGUoKSwgKmVsZW1lbnQpOwogICAgIG1fb3BlbkVsZW1lbnRzLnB1c2go
SFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSh0
b2tlbikpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDRmZjRlMmI4Nzg4YTkxOWJmNDJk
MTdhZDlmZDY1MWI5YjAzYWQxOWIuLmRkOWVhMDRjNmY1MDBjODY0YjhjOTRjMTkzODM3ODc3YWZm
ZGU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERv
Y3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX29wdGlvbnMoZG9jdW1lbnQpCiAgICAgLCBt
X3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5p
cXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVu
bmVySG9zdCY+KCp0aGlzKSkpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8
SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwg
bV9vcHRpb25zKSkKLSAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRN
TFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1
ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5l
ckhvc3QmPigqdGhpcykpKQorICAgICwgbV90cmVlQnVpbGRlcihtYWtlVW5pcXVlPEhUTUxUcmVl
QnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9u
cykpCisgICAgLCBtX3BhcnNlclNjaGVkdWxlcihtYWtlVW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVs
ZXI+KCp0aGlzKSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGRvY3VtZW50KQotICAgICwg
bV9wcmVsb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+KGRvY3Vt
ZW50KSkKKyAgICAsIG1fcHJlbG9hZGVyKG1ha2VVbmlxdWU8SFRNTFJlc291cmNlUHJlbG9hZGVy
Pihkb2N1bWVudCkpCiB7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIEhUTUxEb2N1bWVu
dFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBF
bGVtZW4KICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1bWVudCgp
LCByYXdQb2xpY3kpCiAgICAgLCBtX29wdGlvbnMoZnJhZ21lbnQuZG9jdW1lbnQoKSkKICAgICAs
IG1fdG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1fdHJlZUJ1aWxkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBh
cnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAsIG1fdHJlZUJ1aWxkZXIobWFr
ZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQs
IHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKICAgICAsIG1feHNzQXVkaXRvckRl
bGVnYXRlKGZyYWdtZW50LmRvY3VtZW50KCkpCiB7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1odG1sLWZyYWdtZW50cwpA
QCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVy
KFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsK
ICAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLmlzSW5EYXRhU3RhdGUoKSk7CiAgICAgICAgIGlm
ICghbV9wcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9IHN0
ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCkt
PnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1f
cHJlbG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25z
LCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAg
ICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChtX2lucHV0LmN1cnJlbnQo
KSk7CiAgICAgICAgIH0KICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2NhbigqbV9wcmVsb2Fk
ZXIsICpkb2N1bWVudCgpKTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6aW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmIHNvdXJjZSkKICAgICAgICAgLy8gQ2hlY2sg
dGhlIGRvY3VtZW50LndyaXRlKCkgb3V0cHV0IHdpdGggYSBzZXBhcmF0ZSBwcmVsb2FkIHNjYW5u
ZXIgYXMKICAgICAgICAgLy8gdGhlIG1haW4gc2Nhbm5lciBjYW4ndCBkZWFsIHdpdGggaW5zZXJ0
aW9ucy4KICAgICAgICAgaWYgKCFtX2luc2VydGlvblByZWxvYWRTY2FubmVyKQotICAgICAgICAg
ICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxv
YWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIg
PSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51
cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIG1faW5zZXJ0
aW9uUHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKHNvdXJjZSk7CiAgICAgICAgIG1faW5zZXJ0
aW9uUHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApp
bmRleCAzMGM1YjQ2ZGYxMDNkYmRmNmY0YjdjZTQwOWNjM2FhMTZjNTQ2MDEyLi42ZWYxNzEyYjlk
NjNiNzFhY2I3YzE2OWY2MmI0OWM4MmYzMTA1ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQg
SFRNTEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUoUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSwg
RWxlbWVudFJlY29yZCYgcmVjCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICArK21f
c3RhY2tEZXB0aDsKLSAgICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1
ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQo
KSkpOworICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4dChtYWtlVW5pcXVlPEVsZW1lbnRSZWNv
cmQ+KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSk7CiAgICAgICAg
IHJlY29yZEFib3ZlLT5uZXh0KCktPmVsZW1lbnQoKS5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgSFRNTEVsZW1l
bnRTdGFjazo6cHVzaENvbW1vbihSZWY8SFRNTFN0YWNrSXRlbT4mJiBpdGVtKQogICAgIEFTU0VS
VChtX3Jvb3ROb2RlKTsKIAogICAgICsrbV9zdGFja0RlcHRoOwotICAgIG1fdG9wID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7
CisgICAgbV90b3AgPSBtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdU
Rk1vdmUobV90b3ApKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwb3BDb21tb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAK
aW5kZXggNTNhMTcyZDMzYWZjZGE4ZmY4OGQzNDRkOWMwZWYwOTAzY2RlY2M5Mi4uMzNkN2IzYmIw
OGI2NTJkMGNkNjliY2VkZjFmODYwNjMxYWZhYTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAg
Y2xhc3MgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyIHsKICAgICAgICAgaWYg
KCFMaW5rTG9hZGVyOjppc1N1cHBvcnRlZFR5cGUodHlwZS52YWx1ZSgpLCBtX3R5cGVBdHRyaWJ1
dGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byByZXF1ZXN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQp
LCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwgdHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0
cmlidXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJlclBvbGljeSk7CisgICAgICAgIGF1dG8g
cmVxdWVzdCA9IG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvcihtX3RhZ0lk
KSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0
dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOwogICAgICAgICByZXF1
ZXN0LT5zZXRDcm9zc09yaWdpbk1vZGUobV9jcm9zc09yaWdpbk1vZGUpOwogICAgICAgICByZXF1
ZXN0LT5zZXROb25jZShtX25vbmNlQXR0cmlidXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVG9rZW4uaAppbmRleCBmNzFiMjFkMjc4OTVlNTc4YWI0N2Y1Y2Y1NDAyNTgzZTM2MTIx
ZDAyLi4zZjc0NmRjNmQ2NjdjNDM3MTFiNjhkMDliNDIwMmQyM2ZmMGMwODhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjA5LDcgKzIwOSw3IEBAIGlubGluZSB2
b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IFVu
aW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IERPQ1RZUEU7Ci0gICAgbV9kb2N0eXBlRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8RG9jdHlwZURhdGE+KCk7CisgICAgbV9kb2N0eXBlRGF0YSA9IG1h
a2VVbmlxdWU8RG9jdHlwZURhdGE+KCk7CiB9CiAKIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVn
aW5ET0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvci5jcHAKaW5kZXggYWM2ZTc5NDQzMDA3MDM2NDIxZWIxNmRmODNhOTBkM2QyNzcyZjg1
Ni4uMDYxZDk1NjdiNzg0ZDliMGJhY2YzZjZkYjljZGU1YTgwNmIwMWMxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8WFNTSW5mbz4gWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVy
VG9rZW5SZXF1ZXN0JiByZXF1ZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJvb2wg
ZGlkQmxvY2tFbnRpcmVQYWdlID0gbV94c3NQcm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25EaXNw
b3NpdGlvbjo6QmxvY2tFbmFibGVkOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFhTU0lu
Zm8+KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQ
cm90ZWN0aW9uSGVhZGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxYU1NJbmZvPihtX2RvY3Vt
ZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhl
YWRlcik7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU3RhcnRUb2tlbihjb25zdCBGaWx0
ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC03MTIsNyArNzEyLDcgQEAgU3VmZml4VHJlZTxB
U0NJSUNvZGVib29rPiogWFNTQXVkaXRvcjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSgpCiAg
ICAgY29uc3QgdW5zaWduZWQgc3VmZml4VHJlZURlcHRoID0gNTsKIAogICAgIGlmICghbV9kZWNv
ZGVkSFRUUEJvZHlTdWZmaXhUcmVlICYmIG1fZGVjb2RlZEhUVFBCb2R5Lmxlbmd0aCgpID49IG1p
bmltdW1MZW5ndGhGb3JTdWZmaXhUcmVlKQotICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1ZmZp
eFRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVj
b2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOworICAgICAgICBtX2RlY29kZWRIVFRQQm9k
eVN1ZmZpeFRyZWUgPSBtYWtlVW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVj
b2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwogICAgIHJldHVybiBtX2RlY29kZWRIVFRQ
Qm9keVN1ZmZpeFRyZWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDNhNjM3ZGFlZjAx
MjRlMmU0ZWQzMzZiNjYzNzUyZDAwMjJiNWJlMDEuLmQ1NjZiY2M3OTRhYTcyNGFiZTYwYTA4MGEz
ZjJjZjk1MWY0NTM3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIFJlbmRl
clRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZW5k
ZXJlcigpIGNvbnN0CiBPcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVu
ZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIHN0eWxlID0gZG93bmNhc3Q8
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KCkpLmNyZWF0ZUlubmVyVGV4
dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOwotICAgIHJldHVybiBFbGVtZW50U3R5bGUoc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHlsZSkpKTsKKyAgICByZXR1cm4gRWxl
bWVudFN0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CiB9CiAK
IC8vIE1BUks6IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCBlNDAy
MDBhOWE3YTIyNWRkZmQ4NzQ0ZDhjOTNiZGU2OTA5NjQ3MDA5Li40OTM0ZDcyOWMxOThkMDgwNTlh
YzhjOWYwYjE3NGE5NWU3NmY3MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNr
Q3VlJiBjdWUpCiBXZWJWVFRQYXJzZXImIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNlcigp
CiB7CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xp
ZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fd2ViVlRU
UGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNl
ckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiAq
bV93ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCA4NTViYjIzOTI3ZWIxMGEzNWE1OWQxMmJl
MGQyMzVhNzNjYWJjMTBlLi4xMGZhYTEyZjkwYjQ2MGI1MDU2ZjI1NjdjYzJkOTgxMjdkOGZhYTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRU
cmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0
VHJhY2suY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluYmFuZFdlYlZUVFRleHRUcmFjazo6fkluYmFu
ZFdlYlZUVFRleHRUcmFjaygpID0gZGVmYXVsdDsKIFdlYlZUVFBhcnNlciYgSW5iYW5kV2ViVlRU
VGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAgICAg
IG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19j
YXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0
aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDhmMjljN2YxNjc5YTBm
YTI5MThkZWNmYTUxM2UyZDgwMjcxYTM1ZTIuLjdhMWUxYmM0NjkxYjIxMTY4OGMzY2Y1ZGE2MTlh
YzYxZGJkNmZlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFi
bGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVU
ZXh0VHJhY2suY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Omxv
YWRUaW1lckZpcmVkKCkKICAgICAvLyA0LiBEb3dubG9hZDogSWYgVVJMIGlzIG5vdCB0aGUgZW1w
dHkgc3RyaW5nLCBwZXJmb3JtIGEgcG90ZW50aWFsbHkgQ09SUy1lbmFibGVkIGZldGNoIG9mIFVS
TCwgd2l0aCB0aGUKICAgICAvLyBtb2RlIGJlaW5nIHRoZSBzdGF0ZSBvZiB0aGUgbWVkaWEgZWxl
bWVudCdzIGNyb3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmlidXRlLCB0aGUgb3JpZ2luIGJlaW5nIHRo
ZQogICAgIC8vIG9yaWdpbiBvZiB0aGUgbWVkaWEgZWxlbWVudCdzIERvY3VtZW50LCBhbmQgdGhl
IGRlZmF1bHQgb3JpZ2luIGJlaGF2aW91ciBzZXQgdG8gZmFpbC4KLSAgICBtX2xvYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tMb2Fk
ZXJDbGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPigm
bV90cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8
VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJDbGllbnQmPigqdGhp
cyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90cmFja0VsZW1lbnQt
PmRvY3VtZW50KCkpKTsKICAgICBpZiAoIW1fbG9hZGVyLT5sb2FkKG1fdXJsLCAqbV90cmFja0Vs
ZW1lbnQpKQogICAgICAgICBtX3RyYWNrRWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKEhUTUxUcmFj
a0VsZW1lbnQ6OkZhaWx1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElIb3N0LmNwcAppbmRleCAwMzEwODBlMWFiNjZkMzJjYzljMDcxNzhmMDJmOTM1
MjNiYzcwNmIwLi45MDI5YjkyZDhiODNmMmQ3YmVkNmQ4ZTU0NTc2YzBhMTY4Y2E1MjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAt
NjEsNyArNjEsNyBAQCBSZWY8Q29tbWFuZExpbmVBUElIb3N0PiBDb21tYW5kTGluZUFQSUhvc3Q6
OmNyZWF0ZSgpCiB9CiAKIENvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KCkK
LSAgICA6IG1faW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmpl
Y3Q+KCkpCisgICAgOiBtX2luc3BlY3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2Jq
ZWN0PigpKQogewogfQogCkBAIC0xOTYsNyArMTk2LDcgQEAgSlNWYWx1ZSBDb21tYW5kTGluZUFQ
SUhvc3Q6OndyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2IKIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKCkKIHsKICAgICBt
X3dyYXBwZXJzLmNsZWFyQWxsV3JhcHBlcnMoKTsKLSAgICBtX2luc3BlY3RlZE9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCk7CisgICAgbV9pbnNwZWN0ZWRPYmpl
Y3QgPSBtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCmluZGV4IDZjMzFl
NDk4ZTQzNGQzMDBiMGYxYzZlYWI4NDM0Njc3NmNmMGEyZmMuLjgzODkwOGRjOTM2ZWZhNmJhMjZj
NzkxNjcxNDRkYjdkZTllMmFlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3Iu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIERPTUVkaXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9u
IGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gcGVyZm9ybSgpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5wYXJl
bnROb2RlKCkpIHsKLSAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZSk7
CisgICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gbWFrZVVuaXF1ZTxSZW1vdmVDaGls
ZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOwogICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBtX3JlbW92ZUNoaWxkQWN0aW9uLT5wZXJmb3JtKCk7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOwpAQCAtMzg1LDI3ICszODUsMjcgQEAgRE9NRWRpdG9yOjp+RE9N
RWRpdG9yKCkgPSBkZWZhdWx0OwogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6Omluc2Vy
dEJlZm9yZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiBub2RlLCBOb2RlKiBhbmNob3JO
b2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPElu
c2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSkp
OworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPEluc2VydEJlZm9yZUFj
dGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOwogfQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUsIE5v
ZGUmIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsKKyAgICByZXR1cm4gbV9o
aXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwg
bm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldEF0dHJpYnV0ZShF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0QXR0
cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpOworICAgIHJldHVybiBtX2hpc3Rv
cnkucGVyZm9ybShtYWtlVW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwg
dmFsdWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1
dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBt
X2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4o
ZWxlbWVudCwgbmFtZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVl
PFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSkpOwogfQogCiBFeGNlcHRpb25P
cjx2b2lkPiBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcm
IGh0bWwsIE5vZGUqJiBuZXdOb2RlKQogewotICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOworICAgIGF1dG8gYWN0aW9uID0g
bWFrZVVuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOwogICAgIGF1dG8mIHJh
d0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byByZXN1bHQgPSBtX2hpc3RvcnkucGVyZm9ybShX
VEZNb3ZlKGFjdGlvbikpOwogICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNDE1
LDIyICs0MTUsMjIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwo
Tm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYKIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
U3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKQogewotICAgIHJldHVybiBtX2hpc3Rv
cnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlvbj4oZWxl
bWVudCwgd2hlcmUsIGh0bWwpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVu
aXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7CiB9
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChUZXh0JiB0
ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2RlLCB0
ZXh0KSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVwbGFjZVdo
b2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYgbmV3
Tm9kZSwgTm9kZSYgb2xkTm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3Rk
OjptYWtlX3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3Zl
KG5ld05vZGUpLCBvbGROb2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VV
bmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdOb2Rl
KSwgb2xkTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE5vZGVW
YWx1ZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwg
dmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxTZXROb2Rl
VmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CiB9CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRXJy
b3JTdHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQsIEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBv
cnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5k
ZXggMjBkYTM0MzBjMTVjODU1MTQ4NWM1NzM4YzU0N2ZhMGMzNDMxYTFiYS4uMmU5ZDc1NTY1NWM4
M2VmODgxNTk2YWFkMjBjOTZlMTBlNjg4MjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBh
ZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVh
dGVEaWdlc3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNNYXAqIHVudXNlZE5vZGVzTWFwKQogewot
ICAgIGF1dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWdlc3Q+KCk7CisgICAgYXV0byBk
aWdlc3QgPSBtYWtlVW5pcXVlPERpZ2VzdD4oKTsKICAgICBkaWdlc3QtPm5vZGUgPSAmbm9kZTsK
ICAgICBTSEExIHNoYTE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCA1MjAzNzA2YjUzYjMyYjBiYTRmMGVkNGQ0YmE0MDBiNmM3
OWI1ZTE1Li42M2ZmM2FiNjIzYTQ0NmNkNjIwZWU0N2UzOTIwNTVjZWE1MWE4NzZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC05
MywxMCArOTMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ29u
dHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQq
IGluc3BlY3RvckNsaWVudCkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50
aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIo
c3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRT
Y3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91
dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCi0gICAgLCBtX292ZXJsYXko
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQp
KQorICAgICwgbV9vdmVybGF5KG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5z
cGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3Jl
YXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKHBhZ2UpCiAgICAgLCBtX3BhZ2UocGFn
ZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250
cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAgYXV0
byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7Cisg
ICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VD
b250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChj
b25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVB
Z2VudCkpOwogfQpAQCAtMTUzLDM3ICsxNTMsMzcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBlbnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogICAgIGVu
c3VyZVBhZ2VBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCkpOwogCi0gICAgYXV0byBkZWJ1
Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRl
eHQpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8UGFnZURlYnVnZ2VyQWdl
bnQ+KHBhZ2VDb250ZXh0KTsKICAgICBhdXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBkZWJ1Z2dlckFn
ZW50LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsK
IAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+
KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VV
bmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsKICAgICBlbnN1
cmVET01BZ2VudCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7Ci0g
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdlQ29u
dGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1f
YWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VD
b250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1f
YWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29u
dGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvcldvcmtlckFn
ZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOwogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCkp
OwogI2VuZGlmCiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBh
dXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtlVW5pcXVlPEluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQo
KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikp
OwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0g
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+
KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9y
Q1BVUHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgotICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250
ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUF1ZGl0QWdl
bnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29udGV4
dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VBdWRpdEFnZW50PihwYWdl
Q29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNhbnZh
c0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29t
bWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJ
SG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmNvcHlSZWYoKSk7CkBAIC00MjEsNyArNDIxLDcgQEAgSW5zcGVjdG9yQWdlbnQmIElu
c3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1f
aW5zcGVjdG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENv
bnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2Vu
dCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICAgICAgbV9p
bnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAgICAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdlbnQpOwogICAgICAg
ICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwpAQCAtNDMzLDcgKzQz
Myw3IEBAIEluc3BlY3RvckRPTUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01B
Z2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckRPTUFnZW50KSB7CiAgICAgICAgIGF1dG8g
cGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gZG9tQWdlbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgbV9vdmVy
bGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBkb21BZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9y
RE9NQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgICAgICBtX2luc3Bl
Y3RvckRPTUFnZW50ID0gZG9tQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChX
VEZNb3ZlKGRvbUFnZW50KSk7CiAgICAgfQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIEluc3BlY3RvclBh
Z2VBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KCkKIHsKICAgICBp
ZiAoIW1faW5zcGVjdG9yUGFnZUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBw
YWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gcGFnZUFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVudCwg
bV9vdmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBwYWdlQWdlbnQgPSBtYWtlVW5pcXVlPElu
c3BlY3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1faW5zcGVjdG9yQ2xpZW50LCBtX292ZXJs
YXkuZ2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvclBhZ2VBZ2VudCA9IHBhZ2VBZ2VudC5nZXQo
KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUocGFnZUFnZW50KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmgKaW5kZXggMjhlZTcyN2EzNmQ2NmNlMjEwOTY5NzgzMWFlMGE4YWFjNDIzODU3
NS4uNmMxYjUxYWRlZTlhMzg0MjYzMzM4ZjQ1ZDg4ODRhNmQ5YzM3ZWE4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwg
OiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNldHRpbmdzIHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBTZXR0
aW5ncygpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+U2V0dGluZ3MoKSA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKaW5kZXgg
MDBkNWYxODUyY2ViYTI3MGMzYWY4MWMxMzIwOTAwNWRhN2IxMThhOC4uYzgxMDNkZDdkYmI4MzIw
ZWFiMmU2YWQ1ZTMyYzJkNTJkNzJiMDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlv
bikKIAogdm9pZCBJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVTdGF0ZSgpCiB7Ci0gICAg
cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigpKTsKKyAgICBwZXJm
b3JtKG1ha2VVbmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCkpOwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBJbnNwZWN0b3JIaXN0b3J5Ojp1bmRvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAxNDk1ZjM5ZTJhNDVlM2M3MmE5NjE0
YWZmNTc5ZTY0ZGRmNTVjMGI1Li5kYmU1NTUzZjAxMjE3MzRhOTY1OTEzODQ2YWFkNDZiZjI3Nzk3
M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3Vy
Y2VEYXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291cmNlRGF0YUxpc3Q+IHNvdXJjZUQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIG1fc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UnVs
ZVNvdXJjZURhdGFMaXN0PigpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkg
c29sdXRpb24gdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBmbGF0IHNvdXJjZURhdGEgc3RydWN0dXJl
CiAgICAgLy8gY29udGFpbmluZyBvbmx5IHN0eWxlIHJ1bGVzLCBldmVuIHRob3VnaCBDU1NQYXJz
ZXIgbm93IHByb3ZpZGVzIHRoZSBmdWxsIHJ1bGUgc291cmNlIGRhdGEgdHJlZS4KQEAgLTEzMjAs
NyArMTMyMCw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0YSgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbmV3U3R5bGVTaGVldCA9IFN0eWxl
U2hlZXRDb250ZW50czo6Y3JlYXRlKCk7Ci0gICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIGF1dG8gcnVsZVNv
dXJjZURhdGFSZXN1bHQgPSBtYWtlVW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKICAgICAK
ICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQocGFyc2VyQ29udGV4dEZvckRvY3VtZW50KG1f
cGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSkpOwogICAgIFN0eWxlU2hlZXRIYW5kbGVy
IGhhbmRsZXIobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIG1fcGFnZVN0eWxlU2hlZXQtPm93
bmVyRG9jdW1lbnQoKSwgcnVsZVNvdXJjZURhdGFSZXN1bHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggZDNiNzU5
ZjI5Y2NmMWFlMTgwMjgwZDVlMTczNjcwZDI5YzRmOGNjMS4uZmQ3Y2FkMzA3NjdlNzc1YjE2NzVl
YzQ1NGVmN2EwOGJiMDM2ZDU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsK
IAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZURhdGE+
KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gbWFrZVVuaXF1
ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwogICAgIHJlc291cmNlRGF0YS0+
c2V0VHlwZSh0eXBlKTsKICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1
ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVx
dWVzdElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNv
dXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8gcmVzb3VyY2VEYXRhID0g
bWFrZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwogICAgIHJlc291
cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoJmNhY2hlZFJlc291cmNlKTsKICAgICBtX3JlcXVl
c3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VEYXRh
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggNDM1MWU4NzJhOWU1YTM2NDcyOWY1YjRmYjI2MjE2Yzcz
MzAyYzhkZC4uMzY0YWVhN2Q0YjVkOTExNzkzMjc1ZDY0NmYyOTVlNjdiZjBlZWVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICA6IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+
KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhp
cywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5kUm91
dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAg
ICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQpAQCAtNjksNyAr
NjksNyBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAogCiAgICAgYXV0byB3b3JrZXJDb250ZXh0
ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3b3JrZXJDb250ZXh0KTsKKyAgICBhdXRv
IGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3b3JrZXJDb250
ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25z
b2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2Vu
dCkpOwogfQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+cmVzZXQoKTsK
ICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQoKTsKIAotICAgIG1fZm9yd2FyZGluZ0No
YW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93
b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IG1ha2VVbmlxdWU8
V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBt
X2Zyb250ZW5kUm91dGVyLT5jb25uZWN0RnJvbnRlbmQoKm1fZm9yd2FyZGluZ0NoYW5uZWwuZ2V0
KCkpOwogICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9udGVu
ZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQpAQCAtMTY0LDE4
ICsxNjQsMTggQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdl
bnRzKCkKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgpOwog
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyUnVudGltZUFnZW50
Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2Vy
UnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV93b3JrZXJHbG9iYWxT
Y29wZSkpIHsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2Vydmlj
ZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAg
ICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtl
ckNvbnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyTmV0
d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXZWJIZWFwQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsK
LSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50
Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZCht
YWtlVW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJBdWRpdEFnZW50Pih3b3JrZXJDb250
ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQ
SUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYThkM2M4OTljMzI4MGEyOGU2NzMyY2Y4OGFi
ODRkMDAwZDQ1ZWQyZC4uZmRmMDQ0YzU3OWIzNjhjMzIwNTFiNjVkYzQ0MGUzODdmNjAxOGZiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDQsNyArNDQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJBcHBsaWNhdGlvbkNhY2hlIl9zLCBjb250
ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkFwcGxpY2F0aW9uQ2Fj
aGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJv
ZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGNmOTRjYTgwOTZmZjU3MWQ3NGQ3NzNiMWYwMDI3
NTA1NGMwY2UxZjkuLjExNjI0ZTI0MDk0NjRmYzFlMWU2NWE2OTk4ZGJkMWIwNjgyZjBiMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJv
ZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50OjpJbnNwZWN0b3JDUFVQ
cm9maWxlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIkNQVVByb2ZpbGVyIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6Q1BVUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0YjY5OTQ1ZWM3MDY3Zjk2
NDNlNDgwNzMwMzQ4NDI2ODZkNjE5ZmI4Li40NGU5YzVhYmViNGM5NjZhYmFlYTk0NGE0MGQ1ZTAz
ZDQ3MmQxMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIENTU1N0eWxlUnVsZSog
SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUmIHJ1bGUpCiAKIEluc3Bl
Y3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNTUyJfcywgY29udGV4dCkKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250
ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KQEAgLTYyNiw3ICs2MjYsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8
U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxT
ZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkpOwogICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVj
dG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiB9
CkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5
KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3Rv
clN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQg
PSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0U3R5bGVUZXh0QWN0
aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CiAgICAgaWYgKHBl
cmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNw
ZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZXJmb3JtUmVz
dWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFJ1
bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0
b3IpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJm
b3JtKG1ha2VVbmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0
LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJy
b3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1
cm47CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBZGRS
dWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CisgICAgYXV0byBhY3Rp
b24gPSBtYWtlVW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVj
dG9yKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwogICAgIGF1dG8gcGVyZm9ybVJl
c3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oV1RGTW92ZShhY3Rpb24pKTsKICAg
ICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRl
eCA5YmUwNjExOWZiMzIxOTcwMDcyOTcyMmQ4MzZhODE2YjI1ZjFjMDE1Li4wZTUwYzc1YmE0ODc1
MTU1NmU0MTJkY2I5N2FkMTk2Njk2NWE5OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNzEsNyAr
NzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiQ2FudmFzIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNo
ZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQ
YWdlKQpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29y
ZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kCiAgICAgaWYg
KCFpbnNwZWN0b3JDYW52YXMtPmN1cnJlbnRGcmFtZUhhc0RhdGEoKSkgewogICAgICAgICBpZiAo
YXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y29udGV4dCgp
LmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgICAgIGF1
dG8mIHF1ZXVlID0gTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpOwotICAgICAgICAg
ICAgcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgWyYsIHByb3RlY3RlZEluc3BlY3Rv
ckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCldIHsKKyAgICAgICAgICAgIHF1ZXVl
LmFwcGVuZChtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihxdWV1ZSwgKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNw
ZWN0b3JDYW52YXMuY29weVJlZigpXSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhbnZh
c0VsZW1lbnQgPSBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMtPmNhbnZhc0VsZW1lbnQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzRWxlbWVudC0+aXNEZXNjZW5kYW50T2YoY2Fu
dmFzRWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCmluZGV4IDZjMTk2ZTBjYzY4MmI0NDI1NmM3ZGRhYWUwOTBhYTBhYWQ1NTMxN2Qu
LmYwYTI4YzEzMzFjNWJiMzA4OGQ1M2U3MjQzZGJhZjRlZWI2M2U3YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBA
IC0yODMsNyArMjgzLDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5n
KEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01B
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5
KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET00iX3MsIGNvbnRleHQpCiAgICAgLCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01Gcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2Up
CiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTMwMSw4ICszMDEsOCBAQCBJbnNwZWN0b3JE
T01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2hpc3RvcnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7Ci0gICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7CisgICAgbV9oaXN0b3J5ID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOworICAgIG1fZG9tRWRpdG9yID0gbWFrZVVuaXF1ZTxE
T01FZGl0b3I+KCptX2hpc3RvcnkpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldElu
c3BlY3RvckRPTUFnZW50KHRoaXMpOwogICAgIG1fZG9jdW1lbnQgPSBtX2luc3BlY3RlZFBhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBpbnQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICAg
ICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUpOwogICAgICAgICBpZiAoIXBh
cmVudCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWluZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4g
cHVzaCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBhdXRvIG5ld01hcCA9IHN0ZDo6bWFrZV91
bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CisgICAgICAgICAgICBhdXRvIG5ld01hcCA9IG1ha2VVbmlx
dWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5nZXQo
KTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxl
YXNlKCkpOwogICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CkBAIC0xMTc3LDcgKzExNzcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0Q29uZmlnRnJvbUluc3BlY3RvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0
Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGln
aHRDb25maWc+KCk7CiAgICAgYm9vbCBzaG93SW5mbyA9IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxz
ZSAoZG8gbm90IHNob3cgYSB0b29sdGlwKS4KICAgICBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qt
PmdldEJvb2xlYW4oInNob3dJbmZvIiwgc2hvd0luZm8pOwogICAgIGhpZ2hsaWdodENvbmZpZy0+
c2hvd0luZm8gPSBzaG93SW5mbzsKQEAgLTExOTYsMTMgKzExOTYsMTMgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgYm9vbCBlbmEKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChFcnJv
clN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBKU09O
OjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3Qg
Ym9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91
bmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIGF1
dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCkpOwogICAgIGlubmVySGlnaGxpZ2h0UXVhZChXVEZNb3ZlKHF1YWQpLCBjb2xvciwgb3V0
bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6
QXJyYXkmIHF1YWRBcnJheSwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6
T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsK
LSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKTsKKyAgICBhdXRv
IHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNlUXVhZChxdWFk
QXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgUXVh
ZCBmb3JtYXQiX3M7CiAgICAgICAgIHJldHVybjsKQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBKU09OOjpBcnJhCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxp
Z2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBKU09OOjpPYmpl
Y3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCog
dXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjpt
YWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgYXV0byBoaWdobGlnaHRDb25maWcg
PSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRP
dXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+
dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VDb29yZGlu
YXRlcyA6IGZhbHNlOwpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewot
ICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0
Q29uZmlnPigpOworICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGln
aGxpZ2h0Q29uZmlnPigpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gdHJ1
ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KICAgICAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgICAgIGhpZ2hsaWdodENv
bmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CkBAIC0xMzk4
LDcgKzEzOTgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0ZWROb2RlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAgICBtX2luc3BlY3RlZE5vZGUg
PSBub2RlOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0
PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciY+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKS5jb21t
YW5kTGluZUFQSUhvc3QoKSkKLSAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0
ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKKyAgICAg
ICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNw
ZWN0YWJsZU5vZGU+KG5vZGUpKTsKIAogICAgIG1fc3VwcHJlc3NFdmVudExpc3RlbmVyQ2hhbmdl
ZEV2ZW50ID0gZmFsc2U7CiB9CkBAIC0yMzE0LDcgKzIzMTQsNyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzaykKLSAgICAgICAg
bV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2YWxpZGF0ZVN0
eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7CisgICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRh
c2sgPSBtYWtlVW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KHRoaXMpOwogICAg
IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnNjaGVkdWxlRm9yKCZlbGVtZW50KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGU5NzFhOTlmNzA1MjRkODMxODFhZTcxNWQ4MjY1
ODgxMWZlMDg4MDguLjgxZjE0ZGMxN2JmYTA0NzQ3ZTNkMjNlNDUzZjVlNGFmOGQwOWZkODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50
QmFzZSgiRE9NU3RvcmFnZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpE
T01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2Up
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiMzdhNTYwY2U4MDc2OGM2NjQ0MDg1MTVmYjA1
NTEyNjE2NWJlZDgyLi4zNThhODU2NTEyZWE0ZDcxOTYzMzJhMjA2OTkwZGUzMjUwMDQxMGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAKIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQoV2ViQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEYXRhYmFzZSJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJhc2VG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5jcHAKaW5kZXggZTFlMDgyZTQxYWQyZDUyNGY1N2VmMTA2NDAyODg3NjExNTY4MjRiOS4uYjU5
ODJjZWUzN2UzNzQ0NzA1Mzk0NmJjZjRjNDM0YjQzMWVmOWE5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KFdlYkFnZW50Q29u
dGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTGF5ZXJUcmVlIl9zLCBj
b250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TGF5
ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcAppbmRleCAyOWM3NmQwYzdmZWE5MjJjMmEzZDk5NDE0Yzk4NmVhOGQyOGQ3N2I1Li4y
ODMyOTUxZjUzODAxMjFmYTQ1MmJmYThkNDcwZjRkMzVlNzg5YjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cApAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0
b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTWVtb3J5Il9zLCBjb250ZXh0KQotICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9y
eUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoSW5zcGVjdG9yOjpNZW1vcnlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDNlNGU5
NmViMjMxYTA1NGIyMTIxMjQ3YmMyY2IwOTE2NWYwMjY1YjMuLjVkMDgxNjM4MGNkYzY2YzdkNzk2
MGMxMmQzNDhhMGZiZjNmN2IxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE3MiwxMCArMTcy
LDEwIEBAIGNsYXNzIEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJs
aWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAKIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6SW5z
cGVjdG9yTmV0d29ya0FnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3Bl
Y3RvckFnZW50QmFzZSgiTmV0d29yayJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQotICAgICwgbV9yZXNvdXJjZXNEYXRhKHN0ZDo6bWFrZV91bmlxdWU8TmV0
d29ya1Jlc291cmNlc0RhdGE+KCkpCisgICAgLCBtX3Jlc291cmNlc0RhdGEobWFrZVVuaXF1ZTxO
ZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDMyOWUxYjBj
NWFkOTJmYjQ1MWRmMTc2NzMzYWUyYWUzNThmYjQ5MzcuLmM2NDFhNmEwNDg0MTkzMjY4ZTI5ZTkw
ZmYwMTI2YWI5MTFjOTMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBEb2N1
bWVudExvYWRlciogSW5zcGVjdG9yUGFnZUFnZW50Ojphc3NlcnREb2N1bWVudExvYWRlcihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbgogCiBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VB
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwg
SW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiUGFn
ZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpQ
YWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAppbmRleCAzYTM2MWU5MWU2ZjJkZWIwMDQyZTE4YTdjNjRjN2I1MTZmOWI4MGM1
Li4zMGQ4NmM3NDYzYzQ3ZjViM2FkMmIzOGNmNWRlMjQ5ZDQ0ZWI5YTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIENGUnVuTG9vcFJlZiBjdXJyZW50UnVu
TG9vcCgpCiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQo
UGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGlt
ZWxpbmUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJv
bnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpAQCAtMTkzLDcgKzE5
Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBp
bnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIC8vIEZJWE1FOiBBYnN0cmFjdCBhd2F5IHBsYXRm
b3JtLXNwZWNpZmljIGNvZGUgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQyNzQ4IGlzIGZpeGVkLgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9mcmFt
ZVN0YXJ0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJ
bnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgeworICAgIG1fZnJhbWVTdGFydE9ic2VydmVy
ID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxv
b3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdpbiks
IFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2Ny
aXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0
KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgICAgIG1fcnVuTG9vcE5lc3RpbmdM
ZXZlbCsrOwogICAgIH0pOwogCi0gICAgbV9mcmFtZVN0b3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2
ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lRW5kKSwgW3RoaXNdKCkg
eworICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4o
c3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3Jk
ZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNr
aW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcKICAgICAgICAgICAgICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2Fs
aXphdGlvbj8KICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0Vt
cHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0cmluZygi
UHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQ
cm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxl
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzE2LDcgKzMxNiw3IEBA
IHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29s
ZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRp
b24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIk5vIHByb2Zp
bGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgZG9lcyBu
b3QgZXhpc3QiKTsKLSAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0
ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKKyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQ
cm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAKaW5kZXggOTE2MWQ4NDNjZDM4ZTRkOTY2MTI2YWNkZDM2ZTgzZGQxOGY1
MTAwMi4uMWUzOThlZGQxYTllYTNlZjI2YmUwOWVjMDNkNmM2YzJjZDM5OGRlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
SW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KFBhZ2VBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIldvcmtlciJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250
ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZShjb250ZXh0Lmluc3Bl
Y3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dl
YkNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMmVlZDFjZTYwYjMwMjJhZDk4MjRmYTYyOGEzNWRkYzU0
NDQ5NjBkOS4uYzIwOTRiOTkyZDM1NDE2MGYxN2VlMjhmNjQxMGE3OTNkY2RlOWYzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNw
cApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0CiAKICAgICBpZiAocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2Ug
PSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25k
ZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAiICgiLCBy
ZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdv
cmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3Bv
bnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwor
ICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1l
c3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCByZXF1
ZXN0SWRlbnRpZmllcikpOwogICAgIH0KIH0KIApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYkNv
bnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgUmVzbwogICAgICAgICBtZXNzYWdlLmFwcGVuZChlcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbigpKTsKICAgICB9CiAKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBl
OjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFp
bGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50
b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVu
dGlmaWVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAppbmRleCBiYjVkMWJlYzZjNjMy
MjM5YmVlNjQ2MzQzN2FlZmVkMTJiYTQ3MWQ1Li4wOWNiNmY0NjY2YWI0YzkxY2JlZTJkMGZjZmRk
NGJhNmE2MWExMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L1dlYkhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9X
ZWJIZWFwQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBHYXJiYWdlQ29sbGVjdGlv
bkRhdGEgewogfTsKIAogY2xhc3MgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2VuZEdhcmJhZ2VDb2xs
ZWN0aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmKTsKICAgICB2b2lkIGFkZEdhcmJhZ2VDb2xs
ZWN0aW9uKEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSYmKTsKQEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBT
ZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrOjp0aW1lckZpcmVkKCkKIFdlYkhlYXBBZ2Vu
dDo6V2ViSGVhcEFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rv
ckhlYXBBZ2VudChjb250ZXh0KQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQu
aW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRz
VGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0
aGlzKSkKKyAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhtYWtlVW5pcXVl
PFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1l
QWdlbnQuY3BwCmluZGV4IDVlYWZiNmEzMjg0NmU3MDAxNTNhYzgyNjgxYjdiZTUwZDNhZmU0OGMu
Ljg5ODViYzk0NWZlNzVlMGU4NTFhMzZkZTM1ODRhYjA0NzFjMGZkZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogUGFn
ZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0
KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rv
cjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVt
ZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYjIwY2JiYzk1MDcwMjgxMWI2NTg5
YWMxZGZiZDU3MzM5MTkzZDMzNy4uODA4MmVlMzFlZWM2MGEyZjYwMzI5ZGJhYmQ0ZDk4NDJmNmE1
NWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgV29y
a2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZv
aWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhFeGVjU3RhdGUmIHN0
YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5h
ZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2Us
IGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CisgICAgbV93b3JrZXJHbG9iYWxTY29w
ZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNy
ZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CiB9CiAKIEluamVjdGVkU2NyaXB0IFdvcmtl
ckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRTdGF0ZS5jcHAKaW5kZXggYmQ5ZDRjYWRlZmIyZmFhMWYyZTBiMjU3OTU1YWQ1MTI0ZTE3
OTRlZS4uMWYzZmFiYTMxMjZmMmU5YjM2Yjg0ZDEzZTczYmYxZmRhMzE3NTQyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgTGF5b3V0
U3RhdGU6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBCb3gmIGxheW91dFJv
b3QpCiBEaXNwbGF5OjpCb3gmIExheW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNv
bnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIHJldHVybiAqbV9sYXlvdXRUb0Rpc3Bs
YXlCb3guZW5zdXJlKCZsYXlvdXRCb3gsIFsmbGF5b3V0Qm94XSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OkJveD4obGF5b3V0Qm94LnN0eWxlKCkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+KGxheW91dEJveC5zdHlsZSgpKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTE0MCwxMyArMTQwLDEzIEBAIEZvcm1hdHRp
bmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdS
b290SWZOZWVkZWQoY29uCiAgICAgICAgICAgICAvLyBzaG91bGQgbm90IGludGVyZmVyZSB3aXRo
IHRoZSBjb250ZW50IGluc2lkZS4KICAgICAgICAgICAgIC8vIDxkaXYgc3R5bGU9ImZsb2F0OiBs
ZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzogaGlkZGVuIj4gPC0gaXMgYSBub24taW50
cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gdHJpZ2dlcnMgbmV3IGJsb2Nr
IGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4KICAgICAgICAgICAgIGlmIChmb3JtYXR0aW5nUm9v
dC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3Rh
dGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRl
OjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogCiAgICAgICAgICAgICAv
LyBPdGhlcndpc2UsIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgaW5oZXJpdHMgdGhlIGZsb2F0cyBm
cm9tIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0LgogICAgICAgICAgICAgLy8gRmluZCB0
aGUgZm9ybWF0dGluZyBzdGF0ZSBpbiB3aGljaCB0aGlzIGZvcm1hdHRpbmcgcm9vdCBsaXZlcywg
bm90IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQgdXNlIGl0cyBmbG9hdGluZyBzdGF0ZS4KICAgICAg
ICAgICAgIGF1dG8mIHBhcmVudEZvcm1hdHRpbmdTdGF0ZSA9IGNyZWF0ZUZvcm1hdHRpbmdTdGF0
ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ1Jvb3QuZm9ybWF0dGluZ0NvbnRl
eHRSb290KCkpOyAKICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZsb2F0aW5nU3RhdGUgPSBwYXJl
bnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRl
LCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5n
U3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5
b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQo
Y29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGlu
Z1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIEJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBh
bHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUuCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6
Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUo
KnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRT
dGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24K
ICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9v
dCwgWyZdIHsKIAogICAgICAgICAgICAgLy8gVGFibGUgZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5
cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZSAtYW5kIGl0IHN0YXlzIGVtcHR5Lgot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+
KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRp
bmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKICAgICAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTc0LDE4ICsxNzQsMTggQEAgc3RkOjp1
bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGlu
Z0NvbnRleHQoY29uc3QgQm8KICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9v
dC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0byYg
aW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihj
cmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdD
b250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3Rh
dGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4o
Zm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAog
ICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpOwogICAgICAgICBhdXRvJiBibG9ja0Zv
cm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3Jt
YXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9v
dCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSkgewog
ICAgICAgICBhdXRvJiB0YWJsZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PFRhYmxlRm9ybWF0
dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVk
KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9y
bWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5n
Q29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CiAg
ICAgfQogCiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVJ1bi5oCmluZGV4IDdhZTNiNDA5ZDc2MTE2ZjJlOWQxM2NjMzFlYjZlNTYwNjNi
MTA3NmYuLjc5OTE2Mjc1NzQwMTgzZjM1M2Y1YWZkNWIxNTIyZTU2NTNmYzg5NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaApAQCAtMzYsNyAr
MzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheSB7CiAKIHN0cnVj
dCBSdW4geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdHJ1Y3Qg
VGV4dENvbnRleHQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgogICAgICAgICBUZXh0Q29udGV4dCh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGEx
Y2Q2ZDZmMWI3ZWI5MGZjYzc5MDVlMzFlOWYwNGZlM2JmODI2MGIuLjUwOGQ2NjEyOWQxNDg3YzRl
ODQ0MDkzOTNkYTMzNDA5MTllYTdmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpj
b2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIXRyZWF0QXNJbmxp
bmVDb250YWluZXIobGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4gPHNw
YW4+KS4KLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFr
ZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWlu
ZXJTdGFydCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFr
ZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5l
clN0YXJ0KSk7CiAgICAgICAgICAgICBhdXRvJiBjb250YWluZXIgPSBkb3duY2FzdDxDb250YWlu
ZXI+KGxheW91dEJveCk7CiAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5oYXNJbkZsb3dPckZs
b2F0aW5nQ2hpbGQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5MiwxNyArMjkyLDE3
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50KCkg
Y29uc3QKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFz
dCgpOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZW5kIG9mIGFuIGlubGluZSBjb250YWlu
ZXIgKGUuZy4gPC9zcGFuPikuCiAgICAgICAgICAgICBpZiAodHJlYXRBc0lubGluZUNvbnRhaW5l
cihsYXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJ
dGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpU
eXBlOjpDb250YWluZXJFbmQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
SW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6
VHlwZTo6Q29udGFpbmVyRW5kKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNM
aW5lQnJlYWtCb3goKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5l
SXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6
VHlwZTo6SGFyZExpbmVCcmVhaykpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5h
ZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVt
OjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3gu
aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5s
aW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRl
bTo6VHlwZTo6RmxvYXQpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFT
U0VSVChsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
bGF5b3V0Qm94Lmhhc1RleHRDb250ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIElubGluZVRl
eHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0
ZW1zKCksIGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGlu
ZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CisgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRl
bT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpCb3gpKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5nID0gbGF5b3V0Qm94Lm5leHRJbkZsb3dP
ckZsb2F0aW5nU2libGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRMaW5lTGF5b3V0LmNwcAppbmRleCBmNzQxZGU0ODllOTQyNDYxZDc2OTJlMmU0MDQxNTkz
ODNiMGM4MTYwLi4wYTIxMzAyMTNmMTI0ZWViNWY3ZjcxMTJlODg2ZDcxMmM1MzFkYTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKQEAg
LTM5Niw3ICszOTYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlv
dXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgZGlz
cGxheUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7CiAgICAgICAgICAgICBk
aXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChsb2dpY2FsUmVjdC53aWR0aCgpKTsKICAgICAg
ICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChsb2dpY2FsUmVjdC5oZWlnaHQo
KSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91
bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOworICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3Qp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQwNyw3ICs0MDcsNyBA
QCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3Bs
YXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgICAgIHRvcExlZnQgKz0gR2Vv
bWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRTdGF0ZSgpLCBsYXlv
dXRCb3gpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KHRvcExlZnQpOwogICAg
ICAgICAgICAgbGluZUJveFJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRo
KCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2Vf
dW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZvcm1hdHRp
bmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0
KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDIsNyArNDQyLDcg
QEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNw
bGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNSdW5D
YW5CZUV4dGVuZGVkID0gcHJldmlvdXNMaW5lUnVuICYmIHByZXZpb3VzTGluZVJ1bi0+dGV4dENv
bnRleHQoKSA/IHByZXZpb3VzTGluZVJ1bi0+dGV4dENvbnRleHQoKS0+Y2FuQmVFeHRlbmRlZCA6
IGZhbHNlOwogICAgICAgICAgICAgYXV0byByZXF1aXJlc05ld1J1biA9ICFpbmRleCB8fCAhcHJl
dmlvdXNSdW5DYW5CZUV4dGVuZGVkIHx8ICZsYXlvdXRCb3ggIT0gJnByZXZpb3VzTGluZVJ1bi0+
bGF5b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAocmVxdWlyZXNOZXdSdW4pCi0gICAgICAgICAg
ICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3Bs
YXk6OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29u
dGV4dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5ndGggfSkpOworICAgICAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2lj
YWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0
ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgIGF1dG8mIGxhc3REaXNwbGF5UnVuID0gZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5s
YXN0KCk7CiAgICAgICAgICAgICAgICAgbGFzdERpc3BsYXlSdW4tPmV4cGFuZEhvcml6b250YWxs
eShsb2dpY2FsUmVjdC53aWR0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRleCBiMDAxM2I2ZWQ1NjNiY2JmODI4MTM5
MTM0MWYyZGQ1NjE1ZWM1M2VmLi43OTA2MTk2ODFlNjc1MmQyODcyNDkzODYyMmUzYTc0YmUwMzNm
ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lSXRlbS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVtIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PElubGluZUl0ZW0+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBIYXJkTGluZUJyZWFrLCBCb3gsIEZsb2F0LCBDb250
YWluZXJTdGFydCwgQ29udGFpbmVyRW5kIH07CiAgICAgSW5saW5lSXRlbShjb25zdCBCb3gmIGxh
eW91dEJveCwgVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDRmMjBhNmZmMWQ3MGNlMzQ5YmRlMGViZWRm
ZThmODBhMzVlODVhMjguLmVkNjUyMDViN2RiOTliMGY2YWIxMGYzZWVlYWEwN2M0NDZiN2Y4ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIExpbmU6OkNvbnRlbnQ6OlJ1bjo6UnVuKGNv
bnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFRleHRDb250ZXh0JiB0ZXh0Q29uCiAK
IExpbmU6OkxpbmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBJbml0aWFs
Q29uc3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywgU2tpcFZlcnRpY2FsQWxpZ21lbnQgc2tp
cFZlcnRpY2FsQWxpZ21lbnQpCiAgICAgOiBtX2xheW91dFN0YXRlKGxheW91dFN0YXRlKQotICAg
ICwgbV9jb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8TGluZTo6Q29udGVudD4oKSkKKyAgICAsIG1f
Y29udGVudChtYWtlVW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkpCiAgICAgLCBtX2xvZ2ljYWxUb3BM
ZWZ0KGluaXRpYWxDb25zdHJhaW50cy5sb2dpY2FsVG9wTGVmdCkKICAgICAsIG1fYmFzZWxpbmUo
eyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQsIGlu
aXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5oZWlnaHQgLSBpbml0aWFsQ29uc3Ry
YWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQgfSkKICAgICAsIG1faW5pdGlh
bFN0cnV0KGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5zdHJ1dCkKQEAgLTIx
Myw3ICsyMTMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJ
dGVtLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIAogdm9pZCBMaW5lOjphcHBlbmROb25CcmVh
a2FibGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBEaXNwbGF5OjpS
ZWN0JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAg
bV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJ
dGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSBsb2dpY2Fs
UmVjdC53aWR0aCgpOwogfQogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBMaW5lOjphcHBlbmRU
ZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBs
b2dpY2EKICAgICB9CiAKICAgICBhdXRvIHRleHRDb250ZXh0ID0gQ29udGVudDo6UnVuOjpUZXh0
Q29udGV4dCB7IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5saW5lSXRlbS5pc0NvbGxhcHNlZCgpID8g
MSA6IGlubGluZUl0ZW0ubGVuZ3RoKCksIGlzQ29tcGxldGVseUNvbGxhcHNlZCwgaW5saW5lSXRl
bS5pc1doaXRlc3BhY2UoKSwgY2FuQmVFeHRlbmRlZCB9OwotICAgIGF1dG8gbGluZUl0ZW0gPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgdGV4dENvbnRleHQsIGxv
Z2ljYWxSZWN0KTsKKyAgICBhdXRvIGxpbmVJdGVtID0gbWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+
KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2FsUmVjdCk7CiAgICAgaWYgKGlzVHJpbW1h
YmxlICYmICFpc0NvbXBsZXRlbHlDb2xsYXBzZWQpCiAgICAgICAgIG1fdHJpbW1hYmxlQ29udGVu
dC5hZGQobGluZUl0ZW0uZ2V0KCkpOwogCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBMaW5lOjph
cHBlbmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBM
YXlvdXRVbml0IGwKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGlubGluZUl0ZW1Db250
ZW50SGVpZ2h0KGlubGluZUl0ZW0pKTsKICAgICB9CiAKLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxS
ZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6
UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0
aCArPSAobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250YWxN
YXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuY2xlYXIoKTsKIH0KQEAgLTMyMyw3
ICszMjMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWsoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSkKICAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGlu
ZUl0ZW0sIHsgfSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0
KCkpOwogICAgIH0KLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50
LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dp
Y2FsUmVjdCkpOwogfQogCiB2b2lkIExpbmU6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IHJ1bkhlaWdodCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApp
bmRleCBmYWYwNTQ3NTNkMzcyMmFiYzAxZDhhNzNmNDc5OTM0OWJjYjFhYTExLi43MzdhMDdiMDMy
YWY2ZmYxMTk5MDk2ZjdhMzc1NzU3ZTZkYTlmMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCkBAIC01Miw4ICs1MiwxMCBA
QCBjbGFzcyBMaW5lIHsKICAgICBMaW5lKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgSW5pdGlh
bENvbnN0cmFpbnRzJiwgU2tpcFZlcnRpY2FsQWxpZ21lbnQpOwogCiAgICAgY2xhc3MgQ29udGVu
dCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RydWN0IFJ1biB7CisgICAgICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgICAgICBzdHJ1Y3QgVGV4dENvbnRleHQgewogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZVRleHRJdGVtLmNwcAppbmRleCBmMTMwODlhNzA4ZjNmZTNmZjliNzdmNzIwOTZjZGE0
MmVmMzZlMjIyLi41ZTZjMjU2ZGIwYjMwOWFhZjFlMjU4MjFmMGUxZTE4ZTU2NDUyZjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0
SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lVGV4dEl0ZW0uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06OmNy
ZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QK
IHsKICAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRlbnQoKTsKICAgICBpZiAoIXRl
eHQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkp
OworICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVU
ZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIGF1dG8mIHN0
eWxlID0gaW5saW5lQm94LnN0eWxlKCk7CiAgICAgYXV0byBwcmVzZXJ2ZU5ld2xpbmUgPSBzdHls
ZS5wcmVzZXJ2ZU5ld2xpbmUoKTsKQEAgLTk5LDIwICs5OSwyMCBAQCB2b2lkIElubGluZVRleHRJ
dGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQs
IGNvbnN0CiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlvbiA8IHRleHQubGVuZ3RoKCkpIHsKICAg
ICAgICAgLy8gU29mdCBsaW5lYnJlYWs/CiAgICAgICAgIGlmIChpc1NvZnRMaW5lQnJlYWsodGV4
dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7Ci0gICAgICAgICAgICBpbmxp
bmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVC
b3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgICAgIGlubGlu
ZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3Vy
cmVudFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOwogICAgICAgICAgICAgKytjdXJyZW50UG9z
aXRpb247CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNX
aGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRbY3VycmVudFBvc2l0aW9uXSwgcHJlc2VydmVOZXdsaW5l
KSkgewogICAgICAgICAgICAgYXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBv
c2l0aW9uKHRleHQsIGN1cnJlbnRQb3NpdGlvbiwgcHJlc2VydmVOZXdsaW5lKTsKICAgICAgICAg
ICAgIGF1dG8gaXNDb2xsYXBzZWQgPSBjb2xsYXBzZVdoaXRlU3BhY2UgJiYgbGVuZ3RoID4gMTsK
LSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29s
bGFwc2VkKSk7CisgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElu
bGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBp
c0NvbGxhcHNlZCkpOwogICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IGxlbmd0aDsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBsZW5ndGggPSBt
b3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24oY3VycmVudFBvc2l0aW9uLCBsaW5lQnJlYWtJdGVy
YXRvciwgc3R5bGUpOwotICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBm
YWxzZSwgZmFsc2UpKTsKKyAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJ
bmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgZmFsc2Us
IGZhbHNlKSk7CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQogfQpA
QCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gSW5saW5l
VGV4dEl0ZW06OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9zaXRpb24sIHVuCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoc3BsaXRQb3NpdGlvbiA+PSB0aGlzLT5zdGFydCgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVChzcGxpdFBvc2l0aW9uICsgbGVuZ3RoIDw9IGVuZCgpKTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24sIGxl
bmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBp
c1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDgwODRlMmJiNjllOGM5MmFh
YTliN2JlNmQ4YTE0Yjc3OTUyOTEyMDMuLjNiYWY5ZWFhMWZiYTkyYzcwZjRjNmM3MzI5NWIxMzhi
MzFiYzViOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
Qm94LmNwcApAQCAtNDUsNyArNDUsNyBAQCBCb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmli
dXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbAogICAgICwg
bV9oYXNSYXJlRGF0YShmYWxzZSkKIHsKICAgICBpZiAoaXNSZXBsYWNlZCgpKQotICAgICAgICBl
bnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlZD4oKnRo
aXMpOworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gbWFrZVVuaXF1ZTxSZXBs
YWNlZD4oKnRoaXMpOwogfQogCiBCb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4g
YXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBjb25z
dCBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OnJhcmVEYXRhKCkgY29uc3QKIEJveDo6Qm94UmFyZURh
dGEmIEJveDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwot
ICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVy
biAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxCb3hS
YXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIEJveDo6cmVtb3ZlUmFy
ZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGFiMjg0ZWEwOTliOGZhM2ZmYTcyNzRlMDZlNGNlY2Nh
Zjg0NzQzMDcuLmYyYWZjYWJkMGEzODFjNmQ1YzhkYTM5ZDM0NmUxYWVhMzNkNDdiMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVp
bGRlci5jcHAKQEAgLTEzMCwyNSArMTMwLDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVC
dWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAg
ICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBDbGVhcmx5IHRoZXJlIG11c3QgYmUgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoaXMuCiAgICAg
ICAgIGlmIChwYXJlbnRSZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJv
eD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJl
bmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGls
ZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFJlbmRl
cmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJl
cikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKKyAg
ICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRl
clRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRl
QW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5
VHlwZTo6SW5saW5lKSk7CiAgICAgICAgIHJldHVybiBjaGlsZExheW91dEJveDsKICAgICB9CiAK
ICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVy
ZXIpOwogICAgIGF1dG8gZGlzcGxheVR5cGUgPSByZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKTsK
ICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJT
dHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJl
bmRlcmVyLnN0eWxlKCkpKTsKIAogICAgIGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpKSB7
CiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgcHJpbmNpcGFsIHRhYmxlIHdyYXBwZXIgYm94IChh
bmQgbm90IHRoZSB0YWJsZSBib3ggaXRzZWxmKS4KLSAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6
RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOworICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFp
bmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFw
cGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgfSBl
bHNlIGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpKSB7CiAgICAgICAgIGlmIChkaXNw
bGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExh
eW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
KyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
ICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHlldCBzdXBwb3J0IGFsbCByZXBsYWNlZCBlbGVt
ZW50cyBhbmQgdGhpcyBpcyB0ZW1wb3JhcnkgYW55d2F5LgogICAgICAgICBpZiAoY2hpbGRMYXlv
dXRCb3gtPnJlcGxhY2VkKCkpCiAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+cmVwbGFjZWQo
KS0+c2V0SW50cmluc2ljU2l6ZShkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpLmlu
dHJpbnNpY1NpemUoKSk7CkBAIC0xNjMsMTggKzE2MywxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94
PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVu
dFJlbgogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
cmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldFRvcCh7IG9mZnNl
dC0+aGVpZ2h0KCksIEZpeGVkIH0pOwogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRMZWZ0KHsg
b2Zmc2V0LT53aWR0aCgpLCBGaXhlZCB9KTsKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJl
ciksIFdURk1vdmUoKnN0eWxlKSk7CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBt
YWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3Zl
KCpzdHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
ICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQot
ICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4o
ZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIu
c3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRh
aW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVu
ZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5
VHlwZTo6SW5saW5lQmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0
eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJl
bmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKGRp
c3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24gfHwgZGlzcGxheVR5cGUgPT0g
RGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkgewotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVy
ZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVs
c2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwIHx8IGRpc3Bs
YXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IGRpc3BsYXlUeXBlID09
IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCiAgICAgICAgICAgICB8fCBkaXNwbGF5VHlw
ZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6
OlRhYmxlQ29sdW1uR3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29s
dW1uKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShy
ZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlx
dWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpj
bG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAg
LTIxMCw3ICsyMTAsNyBAQCB2b2lkIFRyZWVCdWlsZGVyOjpjcmVhdGVUYWJsZVN0cnVjdHVyZShj
b25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29udGFpbgogICAgICAgICB0YWJsZUNo
aWxkID0gdGFibGVDaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiAKLSAgICBhdXRvIHRhYmxl
Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMg
eyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVS
ZW5kZXJlci5zdHlsZSgpKSk7CisgICAgYXV0byB0YWJsZUJveCA9IG1ha2VVbmlxdWU8Q29udGFp
bmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3gg
fSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOwogICAgIGFwcGVu
ZENoaWxkKHRhYmxlV3JhcHBlckJveCwgKnRhYmxlQm94KTsKICAgICB3aGlsZSAodGFibGVDaGls
ZCkgewogICAgICAgICBUcmVlQnVpbGRlcjo6Y3JlYXRlU3ViVHJlZShkb3duY2FzdDxSZW5kZXJF
bGVtZW50PigqdGFibGVDaGlsZCksICp0YWJsZUJveCk7CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9p
ZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKICAgICAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gZmluZCBhIHdheSB0byBvdXRwdXQgZ2VvbWV0cnkgd2l0aG91dCBsYXlvdXQgY29udGV4
dC4KICAgICAgICAgYXV0byYgcmVuZGVyVmlldyA9ICpkb2N1bWVudC0+cmVuZGVyVmlldygpOwog
ICAgICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2sgPSBUcmVlQnVpbGRlcjo6Y3JlYXRl
TGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oKmluaXRpYWxDb250YWluaW5nQmxvY2sp
OworICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gbWFrZVVuaXF1ZTxMYXlvdXQ6OkxheW91dFN0
YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgIGxheW91dFN0YXRlLT5zZXRR
dWlya3NNb2RlKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5pbkxpbWl0ZWRRdWlya3NNb2RlKCkgPyBM
YXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6TGltaXRlZCA6IChyZW5kZXJWaWV3LmRvY3VtZW50KCku
aW5RdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6WWVzIDogTGF5b3V0U3Rh
dGU6OlF1aXJrc01vZGU6Ok5vKSk7CiAgICAgICAgIGxheW91dFN0YXRlLT51cGRhdGVMYXlvdXQo
KTsKICAgICAgICAgc2hvd0xheW91dFRyZWUoKmluaXRpYWxDb250YWluaW5nQmxvY2ssIGxheW91
dFN0YXRlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRl
eCA1MWQ3N2U0YWYxZGJkZGYwNDVhOTJjMWM4YWQzYjk5ZWFjZWI5N2I1Li5iNDk4YTIyNGIxOTBj
NmNlODQ0ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50Rmls
dGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGUoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hCiAg
ICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVycyks
IGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZW50RmlsdGVyPihX
VEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7CiB9CiAKIENvbnRlbnRGaWx0ZXI6OkNv
bnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVudEZpbHRlcnMsIERvY3VtZW50TG9hZGVyJiBk
b2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbC5jcHAKaW5kZXggZDBkNTRiOTdlYWU3MjA0MjZmOTYxYzhkYWU4OTVlMjAz
NjljZWRjYy4uYzRjZTVmNTUyMTcwYjNjZmM4Yjg0MWI1OWE1MTBmZDc1YWE4M2ZiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAK
QEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIHZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAgIGlmICghcGFz
c2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
c2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICBpZiAoIXJlc3VsdC0+cGFyc2UocmVzcG9uc2Up
CiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKHJlcXVlc3QuaHR0
cE1ldGhvZCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZXJyb3JEZXNjcmlwdGlvbikKICAg
ICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmlnaW5IZWFkZXJzKHJlcXVlc3QuaHR0cEhl
YWRlckZpZWxkcygpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZXJyb3JEZXNjcmlwdGlvbikp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGRlMDllNzAz
OTljYzc0N2U4ODczNjk3ODM3MjRlNmRhYTlmYzc4OGIuLjA0NTVjYWZjNTlmZjdiNmVhMWY5YTJj
ZDM5MzFhNjllOWY2OTQ0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVECiAgICAgLCBt
X29yaWdpbmFsU3Vic3RpdHV0ZURhdGFXYXNWYWxpZChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkp
CiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIoKnRoaXMsICZEb2N1bWVu
dExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKQogICAgICwgbV9k
YXRhTG9hZFRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRh
TG9hZE5vdykKLSAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxB
cHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQorICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9z
dChtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCiB7CiB9CiAKQEAgLTEz
MzYsNyArMTMzNiw3IEBAIHVpbnQ2NF90IERvY3VtZW50TG9hZGVyOjpsb2FkQXBwbGljYXRpb25N
YW5pZmVzdCgpCiAgICAgaWYgKG1hbmlmZXN0VVJMLmlzRW1wdHkoKSB8fCAhbWFuaWZlc3RVUkwu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5p
ZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOworICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBtYWtl
VW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNl
Q3JlZGVudGlhbHMpOwogICAgIGF1dG8qIHJhd01hbmlmZXN0TG9hZGVyID0gbWFuaWZlc3RMb2Fk
ZXIuZ2V0KCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbmV4dENhbGxiYWNrSUQrKzsKICAgICBt
X2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChXVEZNb3ZlKG1hbmlmZXN0TG9hZGVyKSwg
Y2FsbGJhY2tJRCk7CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpz
ZXRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmIGFyY2hpdmUpCiB2b2lkIERvY3VtZW50TG9hZGVyOjph
ZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB7CiAgICAgaWYgKCFtX2Fy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKKyAg
ICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVz
b3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRk
QWxsUmVzb3VyY2VzKGFyY2hpdmUpOwogfQogCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB2
b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJj
ZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikK
LSAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAg
bV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNl
KSk7CiB9CiAKQEAgLTE5NjMsNyArMTk2Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRN
YWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICAgICAgLy8gSWYgdGhl
IGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRo
ZSBBcHBsaWNhdGlvbkNhY2hlSG9zdAogICAgICAgICAvLyBpcyBub3cgaW4gYSBzdGF0ZSB3aGVy
ZSBzdGFydGluZyBhbiBlbXB0eSBsb2FkIHdpbGwgYmUgaW5jb25zaXN0ZW50LiBSZXBsYWNlIGl0
IHdpdGgKICAgICAgICAgLy8gYSBuZXcgQXBwbGljYXRpb25DYWNoZUhvc3QuCi0gICAgICAgIG1f
YXBwbGljYXRpb25DYWNoZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVI
b3N0PigqdGhpcyk7CisgICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QgPSBtYWtlVW5pcXVl
PEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CiAgICAgICAgIG1heWJlTG9hZEVtcHR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTIyLDcgKzIxMjIsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2
NF90IGxvYWRJZGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpY29uTG9h
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGVyPigqdGhpcywgaWNvbi51cmwpOworICAg
IGF1dG8gaWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8SWNvbkxvYWRlcj4oKnRoaXMsIGljb24udXJs
KTsKICAgICBhdXRvKiByYXdJY29uTG9hZGVyID0gaWNvbkxvYWRlci5nZXQoKTsKICAgICBtX2lj
b25Mb2FkZXJzLnNldChXVEZNb3ZlKGljb25Mb2FkZXIpLCBuZXdDYWxsYmFja0lEKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBjNDUwYzA4NzBjMGRiOTAwMmI5
MDRjN2I2Y2JjZTRjOTY5MDJjNmRjLi5hY2EzNDUyOTg1YjczMTE5YmNiMjNjNDNiYTIzZWVmYjc1
YTdhMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTgyLDcg
KzU4Miw3IEBAIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xp
ZW50cygpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5UHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50PiBkdW1teVByb2dyZXNzVHJhY2tlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5w
cm9ncmVzc1RyYWNrZXJDbGllbnQgPSAmZHVtbXlQcm9ncmVzc1RyYWNrZXJDbGllbnQuZ2V0KCk7
CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8RW1wdHlEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZSh7IH0sIHsg
fSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IGFkb3B0UmVmKCpu
ZXcgRW1wdHlEYXRhYmFzZVByb3ZpZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IGUwZjQ2MTQ4ZjJkZmFhODdmNmIyNDI2MzdkNTA4OTE4NTIwYTYwYTIuLjgzYmVi
MjcxN2QzMzdjMzQxYzAxNWVjZjQ2ZDRmMzczZTA4YjE1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcApAQCAtMjcwLDEwICsyNzAsMTAgQEAgY2xhc3MgRnJhbWVMb2FkZXI6
OkZyYW1lUHJvZ3Jlc3NUcmFja2VyIHsKIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSYg
ZnJhbWUsIEZyYW1lTG9hZGVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQog
ICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9wb2xpY3lDaGVja2VyKHN0ZDo6bWFrZV91
bmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQotICAgICwgbV9oaXN0b3J5KHN0ZDo6bWFrZV91
bmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkKKyAgICAsIG1fcG9saWN5Q2hlY2tlciht
YWtlVW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1lKSkKKyAgICAsIG1faGlzdG9yeShtYWtlVW5p
cXVlPEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCiAgICAgLCBtX25vdGlmaWVyKGZyYW1lKQot
ICAgICwgbV9zdWJmcmFtZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFN1YmZyYW1lTG9hZGVyPihm
cmFtZSkpCisgICAgLCBtX3N1YmZyYW1lTG9hZGVyKG1ha2VVbmlxdWU8U3ViZnJhbWVMb2FkZXI+
KGZyYW1lKSkKICAgICAsIG1fbWl4ZWRDb250ZW50Q2hlY2tlcihmcmFtZSkKICAgICAsIG1fc3Rh
dGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBl
OjpTdGFuZGFyZCkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkK
ICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkRp
c3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0
ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNzVHJh
Y2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwor
ICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4o
bV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXRGb3JTeW50aGVzaXplZERvY3Vt
ZW50KGNvbnN0IFVSTCYpCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5p
dEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJMJikKICAgICBtX25lZWRzQ2xlYXIgPSB0
cnVlOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtp
bmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZy
YW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAgICBtX3Byb2dyZXNzVHJhY2tlciA9IG1h
a2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwogfQogCiB2b2lkIEZyYW1l
TG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQpAQCAtMjY3OCw3ICsyNjc4LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRyZW4oKQogICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRtbCNuYXZpZ2F0
ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXZpZ2F0aW9uRGlzYWJsZXI+IG5hdmlnYXRpb25EaXNh
YmxlcjsKICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICBuYXZpZ2F0aW9u
RGlzYWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRpb25EaXNhYmxlcj4oJm1fZnJhbWUp
OworICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBtYWtlVW5pcXVlPE5hdmlnYXRpb25EaXNh
Ymxlcj4oJm1fZnJhbWUpOwogCiAgICAgLy8gQW55IHN1YmZyYW1lIGluc2VydGVkIGJ5IHVubG9h
ZCBldmVudCBoYW5kbGVycyBleGVjdXRlZCBpbiB0aGUgbG9vcCBiZWxvdyB3aWxsIG5vdCBnZXQg
dW5sb2FkZWQKICAgICAvLyBiZWNhdXNlIHdlIGNyZWF0ZSBhIGNvcHkgb2YgdGhlIHN1YmZyYW1l
cyBsaXN0IGJlZm9yZSBsb29waW5nLiBUaGVyZWZvcmUsIGl0IHdvdWxkIGJlIHVuc2FmZSB0bwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCA4ZTNhNDZiNTEwYTk5ODBjMmFmYjgw
YTM0NDhhNDk4OWVhYzE5ZTE5Li41ZmZmNjdkOTQyZWJlOTFlMDNhNTI5NmU2ZTlkYTI0ZGIzYjdj
Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtOTYsNiArOTYsNyBAQCBX
RUJDT1JFX0VYUE9SVCBib29sIGlzUmVsb2FkKEZyYW1lTG9hZFR5cGUpOwogdXNpbmcgQ29udGVu
dFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9u
LCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPjsKIAogY2xhc3MgRnJhbWVMb2FkZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lTG9h
ZGVyKTsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWRlcihGcmFtZSYsIEZyYW1lTG9hZGVyQ2xpZW50
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggY2RmNjQ5NTI2ZmUzZDFm
MzMyOGQ2ZTM2YzIwMTA4N2MzMWYxNjU1Yi4uNDA4YzUzNjQyOWUzYjA4Nzc5OGViOTdlNzY4NjRj
Yzk0ODY2NjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMTQyLDIy
ICsxNDIsMjIgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xp
ZW50PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW4KIHsKICAgICBzd2l0Y2ggKHJlc291
cmNlLnR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNv
dXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRJbWFnZT4ocmVzb3VyY2UpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50Pihs
b2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OlNjcmlwdDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVk
U2NyaXB0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9h
ZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJl
c291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldDoK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRTdHlsZVJlc291cmNl
Q2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVu
dD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXNvdXJjZSkpOwogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwg
ZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVk
Rm9udD4ocmVzb3VyY2UpKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRv
d25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8
Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwogI2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6VHlwZTo6TWVkaWFSZXNvdXJjZToKICAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWVkaWFQcmVsb2FkaW5nRW5hYmxlZCgpKTsKICAg
ICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6UmF3UmVz
b3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkUmF3UmVz
b3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNl
KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGll
bnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNlKSk7CiAgICAg
Y2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlOgogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6Okljb246CiAjaWYgRU5BQkxFKFNWR19GT05UUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaAppbmRleCAwMmNjN2QxMjBjYTRiY2ZmMzUy
NWM4Zjc0OWNjNDE4MGZlNmQ0NWUyLi44YWU0YjMxYjhiNjlmOThkMDFhZGE3ODg5OWE5OGJkMTFk
ZDQyNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2Fi
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCkBA
IC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5hdmlnYXRpb25E
aXNhYmxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmF2
aWdhdGlvbkRpc2FibGVyKEZyYW1lKiBmcmFtZSkKICAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDU1
OGM3ODA0OTU3ZWM4ODI4ODE4ZWY1NjE5YmY5ODNkM2Y5NDBhNTUuLjNjMmMyNTJhYTUxYjk2OTI5
NWVjZjE0ODEyNTRhMzI0MGVjNDJhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIE5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCwg
ZG91YmxlCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBiYWNrL2ZvcndhcmQgbGlzdCBpdGVtIGlmIHRo
ZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4KICAgICBpZiAoIW1fcmVkaXJlY3QgfHwg
ZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkgewogICAgICAgICBhdXRvIGxvY2tCYWNrRm9y
d2FyZExpc3QgPSBkZWxheSA8PSAxID8gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIDogTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm87Ci0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2No
ZWR1bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVudCwgZGVsYXksICZtX2ZyYW1lLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tG
b3J3YXJkTGlzdCkpOworICAgICAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJlZGly
ZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3Qp
KTsKICAgICB9CiB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVs
ZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCwg
UwogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVuIGEgZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRp
b24gb2YgYW5vdGhlciBmcmFtZS4KICAgICBib29sIGR1cmluZ0xvYWQgPSAhbG9hZGVyLnN0YXRl
TWFjaGluZSgpLmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpOwogCi0gICAgc2NoZWR1
bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0Rv
Y3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkp
OworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRp
YXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9y
eSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJt
aXNzaW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW9uKQpAQCAtNDY4LDcgKzQ2OCw3
IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8
Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvCiAgICAgICAgIGxvY2tCYWNrRm9yd2FyZExpc3Qg
PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXM7CiAgICAgfQogICAgIAotICAgIHNjaGVkdWxlKHN0
ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24+KFdURk1vdmUoc3VibWlzc2lv
biksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpKTsKKyAgICBzY2hlZHVsZShtYWtl
VW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihXVEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQpCkBAIC00
NzksNyArNDc5LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2go
RG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRS
ZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKKyAg
ICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJlZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVu
dCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxv
YWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVs
ZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQpAQCAtNDk4LDEzICs0OTgs
MTMgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9u
KGludCBzdGVwcykKICAgICB9CiAKICAgICAvLyBJbiBhbGwgb3RoZXIgY2FzZXMsIHNjaGVkdWxl
IHRoZSBoaXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1ciBhc3luY2hyb25vdXNseS4KLSAgICBzY2hl
ZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uPihzdGVwcykp
OworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0
ZXBzKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVQYWdlQmxvY2so
RG9jdW1lbnQmIG9yaWdpbkRvY3VtZW50KQogewogICAgIGlmIChzaG91bGRTY2hlZHVsZU5hdmln
YXRpb24oKSkKLSAgICAgICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRQYWdl
QmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CisgICAgICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2No
ZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25T
Y2hlZHVsZXI6OnRpbWVyRmlyZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05hdmlnYXRpb25TY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
U2NoZWR1bGVyLmgKaW5kZXggYTJkZGFjZTI4ZjA3YzM5MWZlMjRlMTkxOGQyNTRhNTAwMmZhYjQ3
Ni4uOTdjMjNiMTUwOTJiZjM5M2IzMWQyMGM4ZjM0ZDI1NzcyNjMxY2M5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCkBAIC00Niw2ICs0Niw3IEBAIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogZW51bSBjbGFzcyBOZXdMb2FkSW5Qcm9ncmVzcyA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgCiBjbGFzcyBOYXZpZ2F0aW9uU2NoZWR1bGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uU2No
ZWR1bGVyKEZyYW1lJik7CiAgICAgfk5hdmlnYXRpb25TY2hlZHVsZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZTE3YTlkYzcyZGUwMzdjOTYzNGJj
MWNjOTNjMmMxYTc3YTg2YmZhMy4uMjgxN2E3NjY2NDU3YjIzOTczYTY4ZmNmN2JjMDE4MGMxMmJm
NWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTIw
MSw3ICsyMDEsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3ModW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZQogCiAgICAgYXV0byYgaXRlbSA9
IG1fcHJvZ3Jlc3NJdGVtcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwogICAgIGlmICghaXRlbSkgewotICAgICAgICBpdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9n
cmVzc0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CisgICAgICAgIGl0ZW0gPSBtYWtlVW5pcXVlPFBy
b2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IGVh
NWRiZmJhYWIyMGJmZDQzZGVhY2YxZTc3NjExYzM0MzNhYmFiODMuLjgyNDZiYjA3MDZjZDBjMDcx
Zjg5OTYyODk4NmE1YmE1MWM0OGI2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCBib29sIFRleHRSZXNvdXJj
ZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
biwgYm9vbAogICAgIGlmIChtX2NvbnRlbnRUeXBlID09IFhNTCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBtX2NoYXJzZXRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxNZXRhQ2hh
cnNldFBhcnNlcj4oKTsKKyAgICBtX2NoYXJzZXRQYXJzZXIgPSBtYWtlVW5pcXVlPEhUTUxNZXRh
Q2hhcnNldFBhcnNlcj4oKTsKICAgICByZXR1cm4gY2hlY2tGb3JNZXRhQ2hhcnNldChkYXRhLCBs
ZW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4
IGNhOWU2YzQzNDNkNzQwMTA1NTNhOWUxMGZhNjU2M2VlNTIzOTFiYmUuLmZhOTI2ZWEwNjJhZGZm
MjA1NzBjOGEzNjkxMjQ2NzJiOWVmNTY2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpw
cm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghbV9jdWVQYXJzZXIpCi0gICAgICAgIG1fY3VlUGFyc2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+
KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBtX2N1ZVBhcnNlciA9
IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQq
Pih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAogICAgIHdoaWxlIChtX3BhcnNl
T2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVyLT5n
ZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBhMTI2M2UyZjA0NTc0YjRmMGVlNzNjMDRl
OGI2MmY1YzgwNzJhNzU4Li43NzUzMmY4NjEzNGUwNDNhZDM3ZDNmNTk5OThhNmY1N2E0MjQxNzQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFT
U0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCiAgICAgYXV0byBzZWN1cml0eU9yaWdpbkNv
cHkgPSBzZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgYXV0byBjb250ZW50U2Vj
dXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1
cml0eVBvbGljeUNvcHkgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFs
U2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeUNv
cHktPmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3VyaXR5UG9saWN5KTsKICAgICBjb250ZW50U2Vj
dXJpdHlQb2xpY3lDb3B5LT5jb3B5VXBncmFkZUluc2VjdXJlUmVxdWVzdFN0YXRlRnJvbSgqY29u
dGVudFNlY3VyaXR5UG9saWN5KTsKIAotICAgIGF1dG8gb3B0aW9uc0NvcHkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigp
LmlzTnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdU
Rk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7CisgICAgYXV0byBvcHRpb25zQ29weSA9IG1ha2VV
bmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMsIHJlcXVlc3QuaHR0cFJlZmVycmVyKCku
aXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDogcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgV1RG
TW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKIAogICAgIC8vIEFsbCBsb2FkcyBzdGFydCBvdXQg
YXMgRG9jdW1lbnQuIEluc2lkZSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIHdlIHVwZ3JhZGUgdGhp
cyB0byBhIFdvcmtlciBsb2FkLgogICAgIEFTU0VSVChvcHRpb25zQ29weS0+b3B0aW9ucy5pbml0
aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5k
ZXggZjk3ZWIwMDQyNWJkMjliM2NiNmJjYjM0NWZiZmQ2NTIyNDA4ZjhjZS4uYmJhOTEwNDE5MTU0
ZWNmNDNjMTIyZTJkOTBjZjg2NDU1OTdhOTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQyMyw3ICs0MjMs
NyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5v
ZGUmIG5vZGUsIFdURjo6RnVuY3Rpb248Ym9vbAogICAgIC8vIGJ1dCB3ZSBjYW4gYXBwcm94aW1h
dGUgdGhhdCBieSBjaGVja2luZyBpZiBzY3JpcHRpbmcgaXMgZW5hYmxlZCByaWdodCBub3cuCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4gdGFnTmFtZXNUb0ZpbHRl
cjsKICAgICBpZiAoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLmlz
U2NyaXB0RW5hYmxlZCgpKSB7Ci0gICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4oKTsKKyAgICAgICAgdGFnTmFtZXNUb0ZpbHRl
ciA9IG1ha2VVbmlxdWU8VmVjdG9yPFF1YWxpZmllZE5hbWU+PigpOwogICAgICAgICB0YWdOYW1l
c1RvRmlsdGVyLT5hcHBlbmQoSFRNTE5hbWVzOjpub3NjcmlwdFRhZyk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA4MzY4YTk1NzA1
ZTMxOTJkMWY4MTdmZjJlY2Q2ODM3ZTNmOWUxMzVkLi5lZjkzYjM1MWU3OTFkNTI3ZGFlODBmODdj
NTI1YTdkYzE0ZTdlNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpzZXRCb2R5RGF0
YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBtX2ltYWdlT2Jz
ZXJ2ZXItPmNhY2hlZEltYWdlcygpLmFkZCh0aGlzKTsKIAogICAgIGlmIChtX2ltYWdlICYmIGlz
PFNWR0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOwor
ICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3du
Y2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRk
Q2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkBAIC0zNTcsNyArMzU3LDcgQEAg
aW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKCkKIAogICAgIGlmIChtX2ltYWdl
KSB7CiAgICAgICAgIGlmIChpczxTVkdJbWFnZT4oKm1faW1hZ2UpKQotICAgICAgICAgICAgbV9z
dmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8
U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtl
VW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIAog
ICAgICAgICAvLyBTZW5kIHF1ZXVlZCBjb250YWluZXIgc2l6ZSByZXF1ZXN0cy4KICAgICAgICAg
aWYgKG1faW1hZ2UtPnVzZXNDb250YWluZXJTaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGJlNjE4M2FiZmE1OWQ1
YzhlMTYyZmVjMWQ2NTUyNDUyM2FkZTI3OGMuLmY5YTc1ZjM1NDUyNzY5MDJhOWU0YTVjMzViNmFj
NmIxZjE1MGMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVx
dWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQoUmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJl
c3BvbnNlKSk7Ci0gICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIHN0ZDo6bWFr
ZV91bmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgaXRlcmF0ZUNsaWVudHMo
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xp
ZW50cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgV1RG
TW92ZShyZXF1ZXN0KSwgbWFrZVVuaXF1ZTxSZXNvdXJjZVJlc3BvbnNlPihyZXNwb25zZSksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCByZXNwb25zZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggZTQzMGU0NDdhYzQ5NDYzNmM5ODRlNzRkNDBiOTFlNjVjZGViYjUwYi4uMDU2N2QxZDVkZThj
NmYxM2UxODY4NDRhZWQ3NTU3NWNmMTdlMTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01NDYsNyArNTQ2LDcgQEAgYm9vbCBDYWNo
ZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
ICAgICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBzZW5kaW5nIGNh
bGxiYWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90aGVyIENhY2hlZFJlc291cmNlcywKICAgICAg
ICAgLy8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlz
aCBzeW5jaHJvbm91c2x5LgogICAgICAgICBBU1NFUlQoIW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJh
Y2suY29udGFpbnMoJmNsaWVudCkpOwotICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNr
LmFkZCgmY2xpZW50LCBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrPigqdGhpcywgY2xpZW50KSk7
CisgICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKCZjbGllbnQsIG1ha2VVbmlx
dWU8Q2FsbGJhY2s+KCp0aGlzLCBjbGllbnQpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRl
eCAyMjlhMTQyZDY0NDEzY2ViYWVmYWM1MjcxMGJiMmJmOGRkZWRmN2JlLi4yZmZlMmI0MTg3OTk3
ZWVmZGQ0MTVlMGVkYmU4MDJkYzE3MmNhZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMzgxLDkgKzM4MSw3IEBAIGNsYXNzIENhY2hlZFJl
c291cmNlIHsKIH07CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOjpDYWxsYmFjayB7Ci0jaWYgIUNP
TVBJTEVSKE1TVkMpCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0jZW5kaWYKIHB1Ymxp
YzoKICAgICBDYWxsYmFjayhDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJlc291cmNlQ2xpZW50Jik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDg0M2E5ZDFmOWQ2Yzg1ZjEwMDBhMmM0MGYxOTY0YjQ3YTJlYjFjN2Eu
LmIzNGI4ZmQzNWMxMDc3YTU0NTJhYmIzNDMyMzYxYjRjYzNkMTFjOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAt
NzkxLDcgKzc5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAgLy8gRW50cnkgcG9p
bnQgdG8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI21haW4tZmV0Y2guCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gb3JpZ2luYWxSZXF1ZXN0OwogICAgIGlmIChD
YWNoZWRSZXNvdXJjZTo6c2hvdWxkVXNlUGluZ0xvYWQodHlwZSkgfHwgcmVxdWVzdC5vcHRpb25z
KCkuZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcp
IHsKLSAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJl
cXVlc3Q+KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpOworICAgICAgICBvcmlnaW5hbFJlcXVl
c3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSk7CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdC0+Y2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAg
ICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBPcmlnaW4oKTsKICAgICB9CkBAIC0xMzkxLDcg
KzEzOTEsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbAogICAgICAgICByZXNvdXJjZVZhbHVl
LT5pbmNyZWFzZVByZWxvYWRDb3VudCgpOwogCiAgICAgICAgIGlmICghbV9wcmVsb2FkcykKLSAg
ICAgICAgICAgIG1fcHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hl
ZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICBtX3ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0
SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICBtX3ByZWxvYWRzLT5hZGQocmVz
b3VyY2VWYWx1ZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZTsKQEAgLTE0MzMs
NyArMTQzMyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMoQ2xl
YXJQcmVsb2Fkc01vZGUgbW9kZSkKICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICAgICAg
aWYgKG1vZGUgPT0gQ2xlYXJQcmVsb2Fkc01vZGU6OkNsZWFyU3BlY3VsYXRpdmVQcmVsb2FkcyAm
JiByZXNvdXJjZS0+aXNMaW5rUHJlbG9hZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXJlbWFpbmlu
Z0xpbmtQcmVsb2FkcykKLSAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CisgICAgICAg
ICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxD
YWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzLT5h
ZGQocmVzb3VyY2UpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlLmgKaW5kZXggNzBjYjFhZmE0Y2YxZDNhNmU2NDJhOGFlOWRiODQ0OGY4NGQxNGJkNi4uMjJh
ZTcyZDhmZjVlZjcyOWExNjRjNzZhNGZkYmIwZTQ5ZDcxZjRiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgK
QEAgLTM1LDcgKzM1LDggQEAgY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnQ7CiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnM7CiAKLWNsYXNzIENh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50
IHsKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIGZpbmFsIDogcHVibGljIENhY2hl
ZFNWR0RvY3VtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZShjb25zdCBTdHJpbmcmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQy
M2MzZmM1MjRiZDhiNmY1NWYzNWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2Fm
ZmNiZWYzOTI3ODI2M2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Np
b25SZXNvdXJjZU1hcChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAg
QVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJl
c291cmNlcy5hZGQoc2Vzc2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+
KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAg
cmV0dXJuICptYXA7CiB9CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjph
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlv
bik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1
dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxs
cHRyKTsKLSAgICBhdXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFn
ZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNo
ZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVt
bXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUo
Yml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVt
b3J5Q2FjaGU6OmxydUxpc3RGb3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0
JgogCiAgICAgbV9hbGxSZXNvdXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsK
ICAgICB3aGlsZSAobV9hbGxSZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAg
IG1fYWxsUmVzb3VyY2VzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+
KCkpOworICAgICAgICBtX2FsbFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxM
UlVMaXN0PigpKTsKICAgICByZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCmluZGV4IDYxOGU5NDI5
NTAxN2RjM2I4MzAzNjVjMTE2NzYxNTM4YjFkYjYyMzguLjE1MDNkNzhlM2FmNTk5NDk1NGIzM2My
YTgwODRmNGZlYTYzMDA3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xv
YWRlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFByZXZpZXdMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZXZpZXdMb2FkZXIpOwogcHVi
bGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gY3JlYXRlKFJl
c291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCmluZGV4IGY2YjgyMjE3OTE2Y2FkOTViZmU5NjBi
YjNlMzc4NGEyNzBhOWJhNjcuLmM1Y2E1YzI1ZjExYjRkOGE5Y2E5M2VmYzg4OTA5OTA3ZjZiNzY2
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTg2
LDcgKzg2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFJlc291
cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNvdXJjZVIKIAogICAgIF9yZXNvdXJjZUxvYWRl
ciA9IG1ha2VXZWFrUHRyKHJlc291cmNlTG9hZGVyKTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJj
ZVJlc3BvbnNlOwotICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252
ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSk7CisgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJl
dmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKICAgICBfYnVmZmVyZWREYXRhQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfc2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZyA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdz
KCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKTsKIApA
QCAtMjQ2LDcgKzI0Niw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgfQogCiAgICAg
X2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFtzZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5Q
dHIoc2VsZildIChjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSB7Ci0gICAgICAgIF9jb252ZXJ0ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFz
c3dvcmQpOworICAgICAgICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVy
PihzZWxmLCBfcmVzcG9uc2UsIHBhc3N3b3JkKTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRm
b3JtQ29udmVydGVyKCkgYXBwZW5kRGF0YUFycmF5Ol9idWZmZXJlZERhdGFBcnJheS5nZXQoKV07
CiAgICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZpbmlzaGVkQXBwZW5k
aW5nRGF0YV07CiAgICAgfSk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUHJldmlld0xvYWRlcjo6flBy
ZXZpZXdMb2FkZXIoKQogc3RkOjp1bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2Fk
ZXI6OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1F
VHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25zZSk7CiB9CiAKIGJvb2wgUHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAppbmRleCBlNmFkYjY3ZGE5NDg2
ODYyNmZlMjA2ZmYxNmU2NGRkYWNlMjcwMWZlLi42MTNlNzg5MmI0MTBmM2IyYTQ5NGVjZmI2ODAw
MGFhYzBkYzY2MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBUZXh0VHJhY2tMaXN0Owogc3RydWN0IE1l
ZGlhU2VsZWN0aW9uT3B0aW9uOwogCiBjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYXB0aW9uVXNlclByZWZl
cmVuY2VzKFBhZ2VHcm91cCYpOwogICAgIHZpcnR1YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRl
eCBjNDc5Y2ExZjljYjA3ZDRhYzdiNGI5ZmIyMjg1MWYwYzk5NGIxNzE0Li40Y2NkYWIwNGI3YjNm
NTUzNGNlY2MyYTE5ZWMwYTRiY2I3YWIxN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4
dE1lbnUoRXZlbnQKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRleHRNZW51PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRleHRNZW51PigpOwog
fQogCiB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNZW51KEV2ZW50JiBl
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggZjYz
ZGFhN2Y2MzQ3MjU1ODg3M2RiM2I1ODNiYzI1MTJhMTc3NTI3YS4uY2RjNzRmNmRlMDllOTNkZTlh
YWI5MjM1NmVmMmZiZjQ0ZGQyZDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgTW91c2VXaGVlbFJlZ2lvbk92ZXJs
YXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3ZlcmxheSB7CiAKIGJvb2wgTW91c2VXaGVlbFJlZ2lv
bk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCiB7Ci0gICAgYXV0byByZWdpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlZ2lvbj4oKTsKKyAgICBhdXRvIHJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigp
OwogICAgIAogICAgIGZvciAoY29uc3QgRnJhbWUqIGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAg
ICBpZiAoIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDQ4YzA3MzQ3NzBlYjExMGMxYzVkODQ1M2RkMDg3OTky
ZTU2NDlhMWUuLmQyMGI5OGM0MTVlZWM4Mjc2Zjg5MDBmMjRjNjdhOTdmMTAxZDBhMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCBFdmVudEhh
bmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSYgZnJhbWUpCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
ICwgbV9wZW5kaW5nTW9tZW50dW1XaGVlbEV2ZW50c1RpbWVyKCp0aGlzLCAmRXZlbnRIYW5kbGVy
OjpjbGVhckxhdGNoZWRTdGF0ZSkKICNlbmRpZgotICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxl
cihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQorICAgICwgbV9hdXRv
c2Nyb2xsQ29udHJvbGxlcihtYWtlVW5pcXVlPEF1dG9zY3JvbGxDb250cm9sbGVyPigpKQogI2lm
ICFFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGlt
ZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRpbWVyRmlyZWQpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAyMzM3Mjk0MmIzNzYzZDkyOTNk
MjY1YjM1YWNjMTUyNWUzNGNjMDBmLi5hNWU1ZWRlMGI0Yjc0N2U0Nzk0ZGM3OTQwNmFlZmNjYmIz
ODVkZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBA
QCBSZW5kZXJCb3gqIEZyYW1lVmlldzo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKIHZvaWQg
RnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0
JiBlbWJlZGRlZE9iamVjdCkKIHsKICAgICBpZiAoIW1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUp
Ci0gICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExp
c3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CisgICAgICAgIG1fZW1iZWRkZWRP
YmplY3RzVG9VcGRhdGUgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2Jq
ZWN0Kj4+KCk7CiAKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRl
ZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwogICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVu
dD4oZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkpIHsKQEAgLTE0Mjcs
NyArMTQyNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdChSZW5kZXJF
bGVtZW50JiByZW5kZXJlcikKICAgICBib29sIGhhZFNsb3dSZXBhaW50T2JqZWN0cyA9IGhhc1Ns
b3dSZXBhaW50T2JqZWN0cygpOwogCiAgICAgaWYgKCFtX3Nsb3dSZXBhaW50T2JqZWN0cykKLSAg
ICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29u
c3QgUmVuZGVyRWxlbWVudCo+PigpOworICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IG1h
a2VVbmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CiAKICAgICBtX3Nsb3dS
ZXBhaW50T2JqZWN0cy0+YWRkKCZyZW5kZXJlcik7CiAgICAgaWYgKGhhZFNsb3dSZXBhaW50T2Jq
ZWN0cykKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVw
YWludE9iamVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKIHZvaWQgRnJhbWVWaWV3OjphZGRW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckxheWVyTW9kZWxPYmplY3QqIG9iamVjdCkK
IHsKICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCi0gICAgICAgIG1fdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3RTZXQ+KCk7CisgICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMg
PSBtYWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+KCk7CiAKICAgICBpZiAo
IW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAg
ICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YWRkKG9iamVjdCk7CkBAIC00ODY2LDcg
KzQ4NjYsNyBAQCBTdHJpbmcgRnJhbWVWaWV3Ojp0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkg
Y29uc3QKIGJvb2wgRnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSog
c2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhcykKLSAgICAgICAg
bV9zY3JvbGxhYmxlQXJlYXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0Pigp
OworICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IG1ha2VVbmlxdWU8U2Nyb2xsYWJsZUFyZWFT
ZXQ+KCk7CiAgICAgCiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWFzLT5hZGQoc2Nyb2xsYWJsZUFy
ZWEpLmlzTmV3RW50cnkpIHsKICAgICAgICAgc2Nyb2xsYWJsZUFyZWFTZXRDaGFuZ2VkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAppbmRleCA3
MzA5OGYxZmExZjEwNzFlNjFmY2QzYWE2NTM1MzMwZDNlODliZjU5Li5lODU4YzkyY2JmOGMzMWEz
MjFiZjM4MDA5N2FiYTU1ZjE1NzAwMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKQEAgLTU5NiwxNCArNTk2LDE0IEBAIHZvaWQgRnJhbWVW
aWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKFJlbmRlckVsZW1lbnQmIHJvb3QpCiAg
ICAgQVNTRVJUKCFtX3BhaW50T2Zmc2V0Q2FjaGVEaXNhYmxlQ291bnQpOwogICAgIEFTU0VSVCgh
bGF5b3V0U3RhdGUoKSk7CiAKLSAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsKKyAgICBtX2xheW91dFN0YXRlU3Rh
Y2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJvb3QpKTsKIH0KIAogYm9v
bCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZO
ZWVkZWQoUmVuZGVyQmxvY2tGbG93JiBsYXlvdXRSb290KQogewogICAgIGlmIChsYXlvdXRTdGF0
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihsYXlvdXRSb290LCBSZW5kZXJM
YXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5h
cHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5
b3V0U3RhdGU6OklzUGFnaW5hdGVkOjpZZXMpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAK
QEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlv
dXRTdGF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRTaQogICAgIGF1dG8qIGxh
eW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKICAgICBpZiAoIWxheW91dFN0YXRlIHx8
ICFuZWVkc0Z1bGxSZXBhaW50KCkgfHwgbGF5b3V0U3RhdGUtPmlzUGFnaW5hdGVkKCkgfHwgcmVu
ZGVyZXIuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3coKQogICAgICAgICB8fCBsYXlvdXRTdGF0ZS0+
bGluZUdyaWQoKSB8fCAocmVuZGVyZXIuc3R5bGUoKS5saW5lR3JpZCgpICE9IFJlbmRlclN0eWxl
Ojppbml0aWFsTGluZUdyaWQoKSAmJiByZW5kZXJlci5pc1JlbmRlckJsb2NrRmxvdygpKSkgewot
ICAgICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
TGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhl
aWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsKKyAgICAgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFw
cGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihtX2xheW91dFN0YXRlU3RhY2ssIHJl
bmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VIZWlnaHRDaGFuZ2VkKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3JCYXNlLmNwcAppbmRleCA4YzNjNTJhMDczNTIyNzkwY2QwYzRhNjBkYzA1ZTYxNDEy
YzE5YWU5Li41MjI3ZTQyYWMwOTZjZTY5MjVkN2VjNmExOGU1MTkyNWQyZTAwNmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyJiBOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKCkKIHsKICAgICBB
U1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29y
a2VyRW5hYmxlZCgpKTsKICAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbnRhaW5lcikKLSAgICAg
ICAgbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29y
a2VyQ29udGFpbmVyPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsKKyAgICAgICAg
bV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyQ29udGFp
bmVyPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzKTsKICAgICByZXR1cm4gKm1fc2Vy
dmljZVdvcmtlckNvbnRhaW5lcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNGQ0YTQ5Yzcz
MWE0Y2FmNDZlZGU2MTE1NzdjYjM5ZTZiZmZmMGEyMi4uYjgyMGU0OWQzNjZkNzE2OTI1YTk3M2Uy
YjI4YzliNTgyYWY5OTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMTEsMjYgKzIxMSwyNiBA
QCBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBwYWdlSW5p
dGlhbEFjdGl2aXR5U3RhdGUoKQogfQogCiBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2Nocm9tZShzdGQ6Om1ha2VfdW5pcXVlPENocm9t
ZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQotICAgICwgbV9kcmFn
Q2FyZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NhcmV0Q29udHJvbGxlcj4oKSkK
KyAgICA6IG1fY2hyb21lKG1ha2VVbmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0
aW9uLmNocm9tZUNsaWVudCkpCisgICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIobWFrZVVuaXF1
ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAg
LCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlz
LCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCisgICAgLCBtX2RyYWdDb250cm9sbGVy
KG1ha2VVbmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJh
Z0NsaWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZm9jdXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpKQor
ICAgICwgbV9mb2N1c0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlz
LCBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRN
ZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVu
dCkpCisgICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihtYWtlVW5pcXVlPENvbnRleHRNZW51
Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkp
CiAjZW5kaWYKLSAgICAsIG1fdXNlcklucHV0QnJpZGdlKHN0ZDo6bWFrZV91bmlxdWU8VXNlcklu
cHV0QnJpZGdlPigqdGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24uaW5z
cGVjdG9yQ2xpZW50KSkKKyAgICAsIG1fdXNlcklucHV0QnJpZGdlKG1ha2VVbmlxdWU8VXNlcklu
cHV0QnJpZGdlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1
ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9y
Q2xpZW50KSkKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCi0gICAgLCBtX3BvaW50ZXJDYXB0
dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4o
KnRoaXMpKQorICAgICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2lu
dGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCi0gICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBv
aW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRpZgogICAg
ICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9wcm9ncmVzcyhz
dGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dy
ZXNzVHJhY2tlckNsaWVudCkpCi0gICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKKyAgICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1
ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGll
bnQpKQorICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIobWFrZVVuaXF1ZTxCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJk
Q2xpZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShGcmFtZTo6Y3JlYXRlKHRoaXMsIG51bGxwdHIs
IHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSkpCiAgICAgLCBtX2Vk
aXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCkpCiAgICAg
LCBtX3BsdWdJbkNsaWVudChwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQpCkBAIC0yNTAs
OSArMjUwLDkgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0
aW9uKQogICAgICwgbV9kb21UaW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lcigqdGhp
cywgJlBhZ2U6OmRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQpCiAg
ICAgLCBtX2FjdGl2aXR5U3RhdGUocGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpCiAgICAgLCBt
X2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRD
bGllbnQpCi0gICAgLCBtX2NvbnNvbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29s
ZUNsaWVudD4oKnRoaXMpKQorICAgICwgbV9jb25zb2xlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNv
bnNvbGVDbGllbnQ+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAs
IG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigq
dGhpcykpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUobWFrZVVuaXF1ZTxQYWdlRGVidWdn
YWJsZT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIpKQogICAgICwgbV9jb29raWVKYXIoV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbi5jb29raWVKYXIpKQpAQCAtMjY4LDE2ICsyNjgsMTYgQEAgUGFn
ZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9w
bGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyKCp0aGlzLCAmUGFnZTo6cGxheWJhY2tD
b250cm9sc01hbmFnZXJVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCiAgICAgLCBtX2lzVXRpbGl0
eVBhZ2UoaXNVdGlsaXR5UGFnZUNocm9tZUNsaWVudChjaHJvbWUoKS5jbGllbnQoKSkpCi0gICAg
LCBtX3BlcmZvcm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogc3RkOjpt
YWtlX3VuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKLSAgICAsIG1fbG93UG93ZXJN
b2RlTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNd
KGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShp
c0xvd1Bvd2VyTW9kZUVuYWJsZWQpOyB9KSkKLSAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nKHN0
ZDo6bWFrZV91bmlxdWU8UGVyZm9ybWFuY2VMb2dnaW5nPigqdGhpcykpCisgICAgLCBtX3BlcmZv
cm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkgPyBudWxscHRyIDogbWFrZVVuaXF1ZTxQZXJm
b3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKKyAgICAsIG1fbG93UG93ZXJNb2RlTm90aWZpZXIobWFr
ZVVuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVF
bmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShpc0xvd1Bvd2VyTW9kZUVuYWJsZWQp
OyB9KSkKKyAgICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nKG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VM
b2dnaW5nPigqdGhpcykpCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAoRU5BQkxFKFNFUlZJQ0VfQ09O
VFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikpCi0gICAgLCBtX3Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAs
IG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyKFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3Jl
YXRlKCkpCi0gICAgLCBtX3BhZ2VPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQotICAgICwgbV9wYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQ
YXltZW50Q29vcmRpbmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JD
bGllbnQpKQorICAgICwgbV9wYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29v
cmRpbmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQpKQog
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICAsIG1fYXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yKG1ha2VVbmlxdWVSZWY8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yPihXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCkpKQpAQCAtNTYx
LDcgKzU2MSw3IEBAIHZvaWQgUGFnZTo6aW5pdEdyb3VwKCkKIHsKICAgICBBU1NFUlQoIW1fc2lu
Z2xlUGFnZUdyb3VwKTsKICAgICBBU1NFUlQoIW1fZ3JvdXApOwotICAgIG1fc2luZ2xlUGFnZUdy
b3VwID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlR3JvdXA+KCp0aGlzKTsKKyAgICBtX3NpbmdsZVBh
Z2VHcm91cCA9IG1ha2VVbmlxdWU8UGFnZUdyb3VwPigqdGhpcyk7CiAgICAgbV9ncm91cCA9IG1f
c2luZ2xlUGFnZUdyb3VwLmdldCgpOwogfQogCkBAIC0yNjU0LDcgKzI2NTQsNyBAQCB2b2lkIFBh
Z2U6OnNldFJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgfQog
CiAgICAgaWYgKCFtX3Jlc291cmNlVXNhZ2VPdmVybGF5ICYmIG1fc2V0dGluZ3MtPmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkKCkpCi0gICAgICAgIG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5PigqdGhpcyk7CisgICAgICAg
IG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBtYWtlVW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5
PigqdGhpcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAppbmRleCAxODkxZTk1OWIzNzhhMzgzMmQ0Y2MxZjhmNDhhOGNmZDY4ZDk3ODI5Li40
ZTQ4MGMwYzIwZTQwYzJiOTZkNGMzZWNhOWZhNDM1ZTJiOWFlZjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMTYxLDkgKzE2MSw5IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VM
ZXZlbCBsZXZlbCwgY29uCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+IG1lc3NhZ2U7CiAKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3Nh
Z2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxs
KCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwg
bWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNz
YWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdnZXN0ZWRDb2x1
bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6
OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1i
ZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKIAog
ICAgIGFkZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAg
dm9pZCBQYWdlQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5
cGUgdHlwZSwgTWVzc2FnZUxldmVsIGwKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYm9v
bCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2Fn
ZVRleHQpOwogCi0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwg
bWVzc2FnZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOworICAgIGF1dG8gbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBhcmd1bWVudHMuY29weVJlZigp
LCBleGVjKTsKIAogICAgIFN0cmluZyB1cmwgPSBtZXNzYWdlLT51cmwoKTsKICAgICB1bnNpZ25l
ZCBsaW5lTnVtYmVyID0gbWVzc2FnZS0+bGluZSgpOwpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQg
UGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWY8
U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0YVVSTC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3QgY2FwdHVyZSBzY3JlZW5z
aG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICAgICAgICAgIGFkZE1lc3NhZ2UobWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3Qg
Y2FwdHVyZSBzY3JlZW5zaG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFBhZ2VD
b25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlw
dEFyZ3VtZW50cz4mJgogICAgIGZvciAoc2l6ZV90IGkgPSAoIXRhcmdldCA/IDAgOiAxKTsgaSA8
IGFyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFkanVzdGVkQXJndW1l
bnRzLmFwcGVuZCh7IHN0YXRlLT52bSgpLCBhcmd1bWVudHMtPmFyZ3VtZW50QXQoaSkgfSk7CiAg
ICAgYXJndW1lbnRzID0gU2NyaXB0QXJndW1lbnRzOjpjcmVhdGUoKnN0YXRlLCBXVEZNb3ZlKGFk
anVzdGVkQXJndW1lbnRzKSk7Ci0gICAgYWRkTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VU
eXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJndW1lbnRz
KSkpOworICAgIGFkZE1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VM
ZXZlbDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDkxOTM2MDQ1YzJm
YWY3NmNhYzVlMmM2OWU2MjMzZjJjZTMwYmY5YjEuLjEyOGMxOGYxNGI5MDhlNzFiYzdjZWZiMzk2
MjA3ZmViYmMwMGYyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTExNiw5ICsx
MTYsOSBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJl
bmNlcygpCiB7CiAgICAgaWYgKCFtX2NhcHRpb25QcmVmZXJlbmNlcykgewogI2lmIFBMQVRGT1JN
KE1BQykgfHwgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKLSAgICAgICAgbV9j
YXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGPigqdGhpcyk7CisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVu
aXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRj4oKnRoaXMpOwogI2Vsc2UKLSAgICAg
ICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5p
cXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlzKTsKICNlbmRpZgogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCA2YzE1YjNmYWE4M2Y1Y2FlMGQ5MTc2ZDAw
YzhhZmMxNWI3NjY5MzE2Li5jYmJhYzIxZDQwMDViMWIwZTExODAyMmY3YWExNGE4YmNmZWQ4NTI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZv
aWQgUGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5nQnVmZmVyRnVsbFRpbWVyRmlyZWQoKQogRXhj
ZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkK
IHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjpt
YWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1h
a2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3VzZXJU
aW1pbmctPm1hcmsobWFya05hbWUpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBA
IC0yNzksMTQgKzI3OSwxNCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhj
b25zdCBTdHJpbmcmIG1hcmtOYW1lKQogdm9pZCBQZXJmb3JtYW5jZTo6Y2xlYXJNYXJrcyhjb25z
dCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBt
X3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAg
ICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAgICAgbV91
c2VyVGltaW5nLT5jbGVhck1hcmtzKG1hcmtOYW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
UGVyZm9ybWFuY2U6Om1lYXN1cmUoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgY29uc3QgU3Ry
aW5nJiBzdGFydE1hcmssIGNvbnN0IFN0cmluZyYgZW5kTWFyaykKIHsKICAgICBpZiAoIW1fdXNl
clRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGlt
aW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWlu
Zz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQgPSBtX3VzZXJUaW1pbmctPm1lYXN1cmUobWVh
c3VyZU5hbWUsIHN0YXJ0TWFyaywgZW5kTWFyayk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKQEAgLTMwMCw3ICszMDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6
bWVhc3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcmCiB2b2lkIFBl
cmZvcm1hbmNlOjpjbGVhck1lYXN1cmVzKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUpCiB7CiAg
ICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91
bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5p
cXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmctPmNsZWFyTWVhc3VyZXMo
bWVhc3VyZU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdh
cm1JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24u
aAppbmRleCA5OWE0MzcyZTU0ZDg0MDI5YmFmYmY5YjhmN2E1ODIwMDFmYTYzYTFiLi4xNmJjZjA0
MzkwYTE3MGYzZGU3ODI2NTBjMmZjMjUyMmNmNTA1NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJld2FybUluZm9ybWF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IFdFQkNPUkVfRVhQT1JUIFByZXdhcm1JbmZvcm1hdGlvbiB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEZvbnRDYWNoZTo6UHJld2FybUluZm9y
bWF0aW9uIGZvbnRDYWNoZTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJp
bnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRl
eCAwMzcwZjI4ODdmNjViNTdiM2NkODk3ZTRmYzY5ZThhMmVmYjg3NWRmLi40NDI5MWFlZmEzN2M4
YTdhODQ0OGJlYzM5YWVlYWMyNDM5ZWM0NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRl
eHQuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcmludENvbnRleHQ6Om91dHB1dExpbmtl
ZERlc3RpbmF0aW9ucyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgRG8KICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2xpbmtlZERlc3RpbmF0aW9ucykgewotICAgICAgICBt
X2xpbmtlZERlc3RpbmF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFJl
ZjxFbGVtZW50Pj4+KCk7CisgICAgICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0gbWFrZVVuaXF1
ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4oKTsKICAgICAgICAgY29sbGVjdExpbmtl
ZERlc3RpbmF0aW9ucyhkb2N1bWVudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKaW5kZXggNTZhMDExYzRjZWU5OTc4OTkw
MWZhZDM2MzAyYmUxMGMzNDU2NjUyNy4uM2I4ODFkZmJiMTcxN2Y0ZTQxMWE2YzUzNDQ1OTVmYmQz
YWI0MzA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6aXNTY2hlZHVsZWQoKSBjb25zdAogdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnN0
YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAgICBBU1NFUlQoIWlzU2NoZWR1bGVkKCkpOwot
ICAgIG1fcmVmcmVzaFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOworICAgIG1fcmVmcmVz
aFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOwogICAgIG1fcmVmcmVzaFRpbWVyLT5zdGFydE9uZVNo
b3QoZGVsYXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuaAppbmRleCBmYWRlNjJmYzc4N2VlNDg5NzlhZjZkZDgyNjYyNzc5ODA0ZDM3NTE3
Li42ZjA2MDgxNzgyNmVjNTZjNmVlOGE1ZjhjZDM5NDRlYzJkNDE5MGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKQEAgLTQyLDcgKzQyLDcg
QEAgY2xhc3MgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+IGNyZWF0ZShQYWdlJiBwYWdl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyPihwYWdlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyPihwYWdlKTsKICAgICB9CiAKICAgICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXIoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCmluZGV4IDk1YjFjOGI1
YmU4M2Q4OWIyNDk3OWVhZWQ5YjlkNGU5MGQzZjRmODcuLmVlZWJmOWI5ZTYxYmQ1ODhmZDNiYTk5
ZmFiMTUwMTkxY2M4ZjY3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXpl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKQEAg
LTQwLDYgKzQwLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogCiBzdHJ1Y3Qg
UmVzaXplT2JzZXJ2ZXJEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgVmVjdG9yPFdlYWtQdHI8UmVzaXplT2JzZXJ2ZXI+PiBvYnNlcnZlcnM7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDQyMzQxODI4MGVhMmVlM2M5
YmZkZmM5MWNkMTI3Yjk2OGViMWUxYmYuLjBkZWIwNjQxNDhmOTcyNmNkMzhiNDEwMDVkNTIyOTcy
NjBjMWM2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xODks
NyArMTg5LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KICAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwog
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOworICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+
KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5h
dGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50
cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNz
QXNJUEFkZHJlc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBiNjg0
ODk2ZjM5ODg0NjI1NGExNzk3YWRjZGVkNjY2NjA1ZTg1ZDVjLi4yN2VlYTZjMGFiOTM4ZWJjOGY5
NjVkYWNiODIwMzExNDQzMTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGxheW91dFNjaGVkdWxlVGhy
ZXNob2xkID0gMjUwX21zOwogCiBTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZShQYWdlKiBwYWdl
KQogICAgIDogbV9wYWdlKG51bGxwdHIpCi0gICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMoc3Rk
OjptYWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQorICAgICwgbV9mb250R2VuZXJp
Y0ZhbWlsaWVzKG1ha2VVbmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKICAgICAsIG1fbGF5
b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAgICAgLCBtX21pbmltdW1ET01U
aW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAgLCBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3VzcGVuZGFibGVUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRp
bWVyLmgKaW5kZXggNTU4NDQzNDA3ODM0NmZiOWI1N2E2ZWE1OWFmY2UyN2E2MjQwYjU1YS4uM2Mz
ZDQ5ZTA1OGFiMTMxNzQ3ZWI0OWJiMGM5M2EwZmQyOTQ1MThmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TdXNwZW5kYWJsZVRpbWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU3VzcGVuZGFibGVUaW1lciA6IHByaXZhdGUgVGltZXJCYXNlLCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsK
ICAgICB2aXJ0dWFsIH5TdXNwZW5kYWJsZVRpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggYjljZTk4Y2M2Y2E1YzI0NTZjZGI5NGY1
ZGM0MWI0ZDJiNTBlOThmNi4uNjUyMzExZDdhNTVmNTUwN2EwNWFhNDNiNjJjODAyMDg3MjJkYmFk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApA
QCAtNzMsNyArNzMsNyBAQCB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6Zm9yRWFjaFVzZXJN
ZXNzYWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFVzZXJNZQogCiB2b2lkIFVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6
OnVuaXF1ZV9wdHI8VXNlclNjcmlwdD4gdXNlclNjcmlwdCkKIHsKLSAgICBhdXRvJiBzY3JpcHRz
SW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAg
IGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0g
eyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0K
IApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVV
c2VyU2NyaXB0cyhET01XcmFwcGVyV29ybGQmIHdvcmxkKQogCiB2b2lkIFVzZXJDb250ZW50Q29u
dHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1
bmlxdWVfcHRyPFVzZXJTdHlsZVNoZWV0PiB1c2VyU3R5bGVTaGVldCwgVXNlclN0eWxlSW5qZWN0
aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewotICAgIGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9
IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAg
YXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3Js
ZCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0
ZXJhdG9yLT52YWx1ZTsKICAgICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVz
ZXJTdHlsZVNoZWV0KSk7CiAKICAgICBpZiAoaW5qZWN0aW9uVGltZSA9PSBJbmplY3RJbkV4aXN0
aW5nRG9jdW1lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50
RGVsdGFGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0
ZXIuY3BwCmluZGV4IGYyNTlhZWIxYTBhOWU1Y2U3YTEzNGYwZDEyNjllYzMxNGM5YTljMzEuLjMw
NGQ5NGE3NWJmMzYxZDhkZDQ2ZjZhZmZhZmUzMWMzZWY4MmE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAKQEAgLTQzLDkgKzQzLDkgQEAgV2hl
ZWxFdmVudERlbHRhRmlsdGVyOjp+V2hlZWxFdmVudERlbHRhRmlsdGVyKCkgPSBkZWZhdWx0Owog
c3RkOjp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0YUZpbHRlcj4gV2hlZWxFdmVudERlbHRhRmls
dGVyOjpjcmVhdGUoKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8V2hlZWxFdmVudERlbHRhRmlsdGVyTWFjPigpOwogI2Vsc2UKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZpbHRlcj4oKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IDE0NDY2M2NhZTk1OTc5Y2ZjYzdjNGEyMjQyZTFkMTYxZDYxMDI5MjUu
LjEzYzMxZjU3NjRiN2IyMjRhMmI3ZWE1NWFlMzNhNmIzOTg2Yjk2ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwCkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZTo6YW5pbWF0aW9uV2lsbEJlUmVtb3ZlZChBbmltYXRpb25CYXNlJiBhbmltYXQKIH0KIAogQ1NT
QW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcihGcmFtZSYgZnJhbWUp
Ci0gICAgOiBtX2RhdGEoc3RkOjptYWtlX3VuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZT4oZnJhbWUpKQorICAgIDogbV9kYXRhKG1ha2VVbmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJv
bGxlclByaXZhdGU+KGZyYW1lKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDc0ZWVkYzk5NjZl
OWY4MWFjYjk5NmNmMzc2OTgzZGFiNjg1NTQwYzYuLmJhZWIyNDc2NTcxNjczN2I4NGExY2M4ZjE5
ZGUwMTczZjM2N2U5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTExNyw5ICsxMTcsOSBAQCBzdGF0aWMg
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJv
cGVydHlCbGVuZGluZ0NsaQogewogICAgIEFTU0VSVChmcm9tICYmIHRvKTsKICAgICBpZiAoZnJv
bS0+c3R5bGUoKSAhPSB0by0+c3R5bGUoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U2hhZG93RGF0YT4oKnRvKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0
YT4oKnRvKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KGJsZW5k
KGZyb20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlvbigpLCBwcm9ncmVzcyksCisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0
aW9uKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmQoZnJvbS0+cmFkaXVzKCksIHRvLT5yYWRp
dXMoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5zcHJlYWQoKSwgdG8tPnNwcmVh
ZCgpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLT5zdHlsZSgpLCB0
by0+c3R5bGUoKSwgcHJvZ3Jlc3MpLApAQCAtOTc0LDE1ICs5NzQsMTUgQEAgY2xhc3MgUHJvcGVy
dHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlX
cmFwcGVyQmFzZQogICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1By
b3BlcnR5SUQgcHJvcCwgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25z
dCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IENvbG9yJiksCiAgICAgICAgIGNv
bnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChS
ZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5p
bWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihzdGQ6
Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikp
Ci0gICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3Jh
cHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKKyAgICAgICAg
LCBtX3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVy
LCBzZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0
eVdyYXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAg
ewogICAgIH0KICAgICBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9w
ZXJ0eUlEIHByb3AsIE1heWJlSW52YWxpZENvbG9yVGFnLCBjb25zdCBDb2xvciYgKFJlbmRlclN0
eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3Qg
Q29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0
ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29s
b3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAg
ICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZh
bGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFw
cGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHBy
b3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1fd3JhcHBlciht
YWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCBnZXR0ZXIs
IHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5
V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0
dGVyKSkKICAgICB7CiAgICAgfQogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBh
LCBjb25zdCBSZW5kZXJTdHlsZSogYikgY29uc3Qgb3ZlcnJpZGUKQEAgLTEyMjksMTkgKzEyMjks
MTkgQEAgY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5V3JhcHBlciA6IHB1YmxpYyBBbmltYXRpb25Q
cm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDoKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdy
YXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJh
Y2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclBy
b3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBw
ZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3Np
dGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tn
cm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0
eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFw
cGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9z
aXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNr
Z3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJv
cGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBl
cj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0
aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWU9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dy
b3VuZFlPcmlnaW4sIEVkZ2U6OkJvdHRvbSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
U2l6ZToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAm
RmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3RoKTsKKyAgICAg
ICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQ
cm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVu
Z3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgotICAgICAgICAgICAgbV9maWxs
TGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclN0eWxlSW1h
Z2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXll
cjo6c2V0SW1hZ2UpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBt
YWtlVW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAm
RmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3NzAsNyArMTc3
MCw3IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRp
b25XcmFwcGVyTWFwKCkKICAgICAgICAgICAgIGxvbmdoYW5kV3JhcHBlcnMudW5jaGVja2VkQXBw
ZW5kKG1fcHJvcGVydHlXcmFwcGVyc1t3cmFwcGVySW5kZXhdLmdldCgpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIFdURk1vdmUobG9uZ2hh
bmRXcmFwcGVycykpKTsKKyAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVu
ZChtYWtlVW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92
ZShsb25naGFuZFdyYXBwZXJzKSkpOwogICAgICAgICBpbmRleEZyb21Qcm9wZXJ0eUlEKHByb3Bl
cnR5SUQpID0gYW5pbWF0YWJsZUxvbmdoYW5kUHJvcGVydGllc0NvdW50ICsgaTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cAppbmRleCA3MDQ3ZTgzZGU3ODVkYjgxYjZkOTkwYTk0ODM3YmE3MWQ3MjgyOWEwLi44ZjBmNmJm
NTNiMDNlMDhmNzAzMzE2NmViOGM3NGQ2YmY5NzI4MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTIzOCw3ICsyMzgsNyBA
QCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJp
bmcmIGhlYWRlciwgQ29udGVudFNlY3VyaQogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVw
ZGF0ZVNvdXJjZVNlbGYoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewog
ICAgIG1fc2VsZlNvdXJjZVByb3RvY29sID0gc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKTsKLSAg
ICBtX3NlbGZTb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCks
IHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKKyAg
ICBtX3NlbGZTb3VyY2UgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4o
KnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3Vy
aXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKIH0KIAogdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFwcGx5UG9saWN5VG9TY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlLmgKaW5kZXggYThmMWQ0ZjBiZGUxNGYxNGI4OGFhMzk0MGVkZDhj
ODk2MjYxZTNkZS4uYmJkOTE4OWUyNDgzNGRhY2M4ZDdiYWUxNWNjNTgxNmNhMzIwY2YxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDsKIAogY2xhc3MgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGlyZWN0aXZlTGlzdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICA6IG1fbmFtZShuYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCBkZGJkOGNkZTI3ODBlOTJkYmEyMGUwYWJkOTljZjA0
OTg0M2Y0YzRkLi5jMDE1NmRkZjAxYzk0N2U1MDRiNTY5ZDBhNDExNjk4YzU1OGYzZWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3QoQ29udGVudFNlCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVhdGUoQ29u
dGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHR5cGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UG9s
aWN5RnJvbSBmcm9tKQogewotICAgIGF1dG8gZGlyZWN0aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsKKyAgICBh
dXRvIGRpcmVjdGl2ZXMgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CiAgICAgZGlyZWN0aXZlcy0+cGFyc2UoaGVhZGVyLCBmcm9t
KTsKIAogICAgIGlmICghY2hlY2tFdmFsKGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShk
aXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkpKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAgbV9wb2xpY3kucmVwb3J0RHVwbGljYXRlRGly
ZWN0aXZlKG5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRpcmVjdGl2ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKKyAg
ICBkaXJlY3RpdmUgPSBtYWtlVW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YXBw
bHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzYW5kYm94
UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5n
ZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2
ZXIuaAppbmRleCAxYzJiNGQwOGU2ZGIyNDMwNTI5MWExZWExYzg2ZWI2MzZlM2YzNTI2Li44NDk0
ODQyNjRlOTE3MzBmN2E2OTA5OGRmM2Q3ZGFkMTQ5MmRjZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBj
bGFzcyBET01UaW1lcjsKIGNsYXNzIEVsZW1lbnQ7CiAKIGNsYXNzIENvbnRlbnRDaGFuZ2VPYnNl
cnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3Mv
RE9NVGltZXJIb2xkaW5nVGFuay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJI
b2xkaW5nVGFuay5oCmluZGV4IGI2MjE4NGZlMTc5NDJkYTk0ODU5YTgwMmNlZmRlNzZlMjQyZDNl
NGMuLmJiZjc5NDVhYWE0OTlhNzZiN2UxMmFiM2M3NWQ1OTQ0MjFlNDVlZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmgKQEAgLTM1LDYgKzM1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NVGltZXI7CiAKIGNsYXNzIERPTVRpbWVy
SG9sZGluZ1RhbmsgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IERPTVRpbWVySG9sZGluZ1RhbmsoKTsKICAgICB+RE9NVGltZXJIb2xkaW5nVGFuaygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxp
bnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHAKaW5kZXggNGZkZjc1NmMwMjE5ODg1MzNiMmYxMjU1YzkxYTRlY2M5MTQ4NGZhNC4u
YzA3YjEyNzY5Y2QwNGJhN2IzMWY4OGM0NmE5ZjA2YjZhZDZiNDlkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3Bw
CkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2NUaW1lclN0cmluZyhNb25vdG9uaWNU
aW1lIHRpbWVyRmlyZURhdGUsIE1vbm90b25pY1RpbWUgbm93KQogc3RhdGljIGNvbnN0IGZsb2F0
IGdGb250U2l6ZSA9IDE0OwogCiBjbGFzcyBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmlu
YWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyKFJlc291cmNl
VXNhZ2VPdmVybGF5JiBvdmVybGF5KQogICAgICAgICA6IG1fb3ZlcmxheShvdmVybGF5KQpAQCAt
MTMyLDcgKzEzMyw3IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlciBmaW5hbCA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIAogdm9pZCBSZXNvdXJjZVVzYWdlT3Zlcmxh
eTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAgICBtX292ZXJsYXlQYWludGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsKKyAgICBtX292
ZXJsYXlQYWludGVyID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0
aGlzKTsKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUob3ZlcmxheSgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1fb3Zl
cmxheVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDNEKCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3JtYWxI
ZWlnaHQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQppbmRleCBkN2FkZmZkNzJmOWZh
OGZlOTdhZmNkYTA3MThkODNjNmUwOTA4NTBjLi4wODYzYWQyNjcyNWQ2NTU0NzUyYjdhYzIxNDhl
ZWQxYzZkZmMyM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KQEAgLTkwLDcgKzkw
LDcgQEAgdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogdm9pZCBQYWdlOjphZGRTY2hl
ZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogewogICAgIGlmICghbV9zY2hlZHVs
ZWRSdW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gc3RkOjpt
YWtlX3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOworICAgICAgICBtX3NjaGVkdWxlZFJ1
bkxvb3BQYWlycyA9IG1ha2VVbmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3Nj
aGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1Rl
eHRJbmRpY2F0b3JXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0
b3JXaW5kb3cuaAppbmRleCBkY2RkOTUwNDhiZDk1OGFhNzQ0MGEwZmMzZDliY2U3ZGYyZjU0ODBm
Li42NDc1Y2U1ZWJjOTA3YWUxODgwYWYxNzFjMDczNmZmM2VjYjUwMjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCkBAIC01Miw2ICs1Miw3IEBA
IGVudW0gY2xhc3MgVGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlvbiA6IHVpbnQ4
X3QgewogI2lmIFBMQVRGT1JNKE1BQykKIAogY2xhc3MgVGV4dEluZGljYXRvcldpbmRvdyB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4
dEluZGljYXRvcldpbmRvdyk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXgg
MzA2Y2ZlZDE5Y2U2ZDAwYjYyYTg1MjQ5NzAwMjhiODA0NWZhZDgyMy4uMDBhZjM5NDc4ZGM3NWY3
MDI5YzI0ODQ1NGVmMDFhYjBjNmM3ZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTU5
LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKiBwYWdlKQogICAgIDogU2Nyb2xsaW5n
Q29vcmRpbmF0b3IocGFnZSkKICAgICAsIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXIo
KnRoaXMsICZBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFm
dGVyQXN5bmNTY3JvbGxUaW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQorICAgICwgbV9zY3JvbGxp
bmdTdGF0ZVRyZWUobWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5oCmluZGV4IDYzYmQ5NjM4YjYzYTFhMTFjYTQwZjM2NzIxMjlmNzE0MTBjNmZmMmUu
LjNhYjY0MDY4MjY0YzUwNDA4YmFiNGVlMzhkMmNjZDRhNjQxYzc4NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBA
IC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTY3JvbGxPZmZzZXRSYW5nZSB7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZlY3RvcjxUPiBob3Jpem9udGFsU25hcE9mZnNl
dHM7CiAgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25hcE9mZnNldHM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuY3BwCmluZGV4IDc2NDBkNTVkOTZhM2YwOTU5YjkzMWVmMDQzM2VjMTVmYTIwN2RiZDQu
LmM4OTBmOWViYTAwNGNhODc4MDE0MWI4NWNlZWUwMDU1NjJlMmU0NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmNwcApAQCAtNzEsNyArNzEsNyBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNp
emUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRp
YWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5p
dGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1By
ZWRpY3Rpb25FbmFibGVkKGJvb2wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCmluZGV4IGJlOTlkMGVl
NmEzZjA3ODlmYzRkN2RjNjkyODg1YjUyNDAwNDM4MDIuLjIxYzMxMWNkODliNzk0MDg0YTg0OTBk
NWZjOWJhNTVhOTNiOWFlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCkBAIC0zOSw2ICszOSw3
IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiAKIGNsYXNzIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50
JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxv
YXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9y
dFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWZWxvY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAppbmRleCA5NjgyZDJjMWJjZWUzNzU3MTNjMzQ2
ZDNlMzNjZDRkYzEzNWFmYzc4Li5iZTU3YzliODY5ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0MGM4
MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9k
ZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAg
Y2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAg
ICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5n
U3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxS
ZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdU
Rk1vdmUoY2hpbGROb2RlKSk7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkKENoaWxkTm9kZXMpOwog
fQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGls
ZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90CiAKICAgICBpZiAo
IW1fY2hpbGRyZW4pIHsKICAgICAgICAgQVNTRVJUKCFpbmRleCk7Ci0gICAgICAgIG1fY2hpbGRy
ZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+
KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xs
aW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgfQogCiAgICAgaWYgKGluZGV4ID4gbV9jaGlsZHJlbi0+
c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVUcmVlLmNwcAppbmRleCBmNjFlMjhlMGVjNTAzMDEyYjM3MmZiMjU1NjlhOGNiN2Rk
NTNhYTcwLi43MTU3ZTE2ODYwZjQ5YzkxZGRhMzViYmM0ZWFmZTk4MTllYWNiZTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5j
cHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVl
PiBTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdChMYXllclJlcHJlc2VudGF0aQogICAgIH0KIAog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVzIGFuZCByZXNldHMgdGhlIGN1cnJlbnQgc3RhdGUg
dHJlZSwgYnV0IGxlYXZlcyB0aGUgdHJlZSBzdHJ1Y3R1cmUgaW50YWN0LgotICAgIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRyZWVTdGF0ZUNsb25lID0gc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGlu
Z1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJl
ZT4oKTsKICAgICB0cmVlU3RhdGVDbG9uZS0+c2V0UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlv
bihwcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKTsKIAogICAgIGlmIChtX3Jvb3RTdGF0ZU5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5jcHAKaW5kZXggZWE3NGUyY2E0MjQyOWE4ZTJiZTlmOWEzNzllMzY3ZGE0ZGRkYTNkMS4u
NzI5NjE1YTY5ZjAxMjI2MzE1MTQ3ZWNmZGI1NTI4YjAxOTlmMzg2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtNTAs
NyArNTAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xs
aW5nVHJlZU5vZGU+JiYgY2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMp
OwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7CisgICAgICAgIG1f
Y2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4o
KTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RGTW92ZShjaGlsZE5vZGUpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KaW5kZXggMWM3YWI3NmExNTFlNjM1MGQ4
YjYxNGMzNmQwNWJjZTY1YzZjOTU4NC4uYjQzZWE5OTVmYWY2YjQ3MDMzNWZiZjA3YTIwODZhNmIz
NWY3MGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0zNiw3
ICszNiw3IEBAIHN0YXRpYyBib29sIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJl
ZGljdGlvbiA9IHRydWU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRl
bnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3
cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRp
YWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQ
bGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCmluZGV4IDcxZTQzZDNmM2I5NDYxMDYwOGNi
ZjExZGI1MTE1YmNiZWMwNTQ4OTAuLjA4OGRmNTQzZTA0NzkxMTdjODM3YWZlMjIzYmJjYzU1MTQ4
OGE3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKQEAgLTMzLDYgKzMzLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1BVTW9uaXRvciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgRXhjZWVkZWRDUFVMaW1pdEhh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoZG91YmxlKT47CiAgICAgV0VCQ09SRV9FWFBPUlQg
Q1BVTW9uaXRvcihTZWNvbmRzIGNoZWNrSW50ZXJ2YWwsIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVy
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKaW5kZXggZTYwZjc3MTNmNjJi
YjI1NjJhODQyODg4YzdmYzYyOWYyYzU0N2YzMy4uNmIyODhlMWUxN2U0NDhiYjg2ZmI5ZWNlMjlj
YzllNWJkYjlkZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1v
bml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCkBAIC00
Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVNb25pdG9yIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEZp
bGVDaGFuZ2VUeXBlIHsgTW9kaWZpY2F0aW9uLCBSZW1vdmFsIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguY3BwCmluZGV4IDRmZjk4MDRlYWVjMTMwNmIyNjhhMjQ1ZjI3NzFhMTEyZTI4ZDJh
MWUuLjNmYzQzMWE0NzQ2MWQ4YzQ0M2RiNGI2MjJkNmVhOTA2MzRkYTBmMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMjg4LDkgKzI4OCw5IEBAIExlbmd0aCBjb252ZXJ0VG8x
MDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgLy8gVHVybiB0
aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVu
Z3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBl
cmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVy
YXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8
Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Ro
cy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3Ro
KSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdU
Rk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5n
dGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7
CiB9CiAKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgTGVuZ3RoIGJsZW5kTWl4ZWRUeXBlcyhj
b25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncgogICAgIGlm
IChwcm9ncmVzcyA+PSAxLjApCiAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgCi0gICAgYXV0
byBibGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aD4oZnJv
bSwgdG8sIHByb2dyZXNzKTsKKyAgICBhdXRvIGJsZW5kID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVz
c2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3MpOwogICAgIHJldHVybiBMZW5ndGgo
Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUoYmxlbmQpLCBWYWx1ZVJhbmdlQWxsKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVu
ZXIuY3BwCmluZGV4IDU1MmIxMmY2YzFlOGNkYTZmZmVhNjQ3ODY5MjIyOWVhOTNlZDE3Y2EuLjhl
MzVlMzA0YzFlNzI1N2JjNjRjNmFkMTBlZGRlOTY0MjA0ZTY1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcApAQCAtMzEsNyArMzEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgKCFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oTUFDKSkgfHwgIUhBVkUoTUVESUFfUExBWUVSKQogc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCmluZGV4IDJlNWY2M2JjZWYyYmZkZmNm
ZjkyMTZkOTg2YjBmNDM2MGM2ODBiNDEuLmI3YzFkMjRlYjQ5ZTVhNTVmNjkxZjA2Y2U5ZTFkODBi
MjFiY2NhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBA
IC0zNCw2ICszNCw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsK
IAogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb24oKSB7IH07CiAgICAgdmlydHVh
bCBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZs
b2F0IC8qIHN0ZXAgKi8sIGZsb2F0IC8qIG11bHRpcGxpZXIgKi8pIHsgcmV0dXJuIHRydWU7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggZDkxNTRk
OTM1MWEyZjMzNjZkZGQwNWZlNjBmZGViYjljMWExZTczOC4uZjhlZGM4ODJkN2YzNjAwMmUxOTg1
MTBkODFiOGViMzRhYTUwMDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIUVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRG
T1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6
OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCBjNjJh
ZDgzNGU2YjM4MDhlMWVjZGE4YmExMzEyZDNkOTU3MDVlOTZhLi45NmQwZjMwMGIzNDE4ZTYwODIx
ZGEyZGEyYTY0MTg5YzRkZWUwYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFNjcm9sbEFuaW1hdG9yJiBTY3JvbGxhYmxl
QXJlYTo6c2Nyb2xsQW5pbWF0b3IoKSBjb25zdAogewogICAgIGlmICghbV9zY3JvbGxBbmltYXRv
cikgewogICAgICAgICBpZiAodXNlc01vY2tTY3JvbGxBbmltYXRvcigpKSB7Ci0gICAgICAgICAg
ICBtX3Njcm9sbEFuaW1hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+
KGNvbnN0X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBtYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0aGlzKSwgW3Ro
aXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIGxvZ01vY2tTY3Jv
bGxBbmltYXRvck1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBl
bHNlCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFzTGF5ZXJGb3JT
Y3JvbGxDb3JuZXIoKSBjb25zdAogU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBT
Y3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKIHsKICAgICBpZiAoIW1fc25h
cE9mZnNldHNJbmZvKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PigpOworICAgICAgICBtX3NuYXBP
ZmZzZXRzSW5mbyA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
PigpOwogICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0c0luZm87CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCmluZGV4IDcyYjAwNDUxMzE0MmM4ZjRlOTVk
ZjIyODE4YzNkZGMxODBhYWVjZWQuLjBkNzRiMTZlNTkyNTk4YWI4M2IwYzhjMGViNTRiNDQ2ZGZk
MzhkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaApA
QCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIGNsYXNz
IFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3VkZGVuVGVybWluYXRpb25EaXNh
Ymxlcik7CiAgICAgcHVibGljOgogICAgICAgICBTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYTI4
MDEwZWNmZTVhMzY3YWQ5ZDBiMjlhMjAwNTYzYTBmNTYxZDU2MC4uMjdhNzM2NDE2YmEwNGMwNTNj
MmU3N2RiMmM1NTgxNDQ0MGQyZjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKLSAgICA6IG1fY2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNl
UmVxdWVzdEluaXRpYXRvcnM+KCkpCisgICAgOiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRp
YXRvcnMobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQogICAg
ICwgbV9ldmVudE5hbWVzKEV2ZW50TmFtZXM6OmNyZWF0ZSgpKQotICAgICwgbV90aHJlYWRUaW1l
cnMoc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCi0gICAgLCBtX3F1YWxpZmllZE5h
bWVDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkKKyAgICAsIG1f
dGhyZWFkVGltZXJzKG1ha2VVbmlxdWU8VGhyZWFkVGltZXJzPigpKQorICAgICwgbV9xdWFsaWZp
ZWROYW1lQ2FjaGUobWFrZVVuaXF1ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCiAjaWZuZGVmIE5E
RUJVRwogICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKLSAgICAs
IG1fY2FjaGVkQ29udmVydGVySUNVKHN0ZDo6bWFrZV91bmlxdWU8SUNVQ29udmVydGVyV3JhcHBl
cj4oKSkKKyAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKG1ha2VVbmlxdWU8SUNVQ29udmVydGVy
V3JhcHBlcj4oKSkKIHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNh
bGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBvbgogICAgIC8vIGFu
eSBvdGhlciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0aGlz
IG1ha2VzIHRoaXMgYSBjb252ZW5pZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5jcHAKaW5kZXggMmY4OTJkNmIxOWFiYTQyMzBlOTI0Yzc2MTg3MzhmYzZjYjQ4Zjdl
Yy4uZTcwZDQ2ZDBiOWYyNDA3ZjkwODU0OGZhOGYyZTk4YzlkYTQ1NjNiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBBdWRp
b0J1czo6QXVkaW9CdXModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGxlbmd0aCwg
Ym9vbCBhbGxvY2F0ZSkKICAgICBtX2NoYW5uZWxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVt
YmVyT2ZDaGFubmVscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZD
aGFubmVsczsgKytpKSB7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8gc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Q2hhbm5lbD4obnVsbHB0ciwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byBjaGFubmVsID0gYWxsb2Nh
dGUgPyBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IG1ha2VVbmlxdWU8QXVkaW9D
aGFubmVsPihudWxscHRyLCBsZW5ndGgpOwogICAgICAgICBtX2NoYW5uZWxzLnVuY2hlY2tlZEFw
cGVuZChXVEZNb3ZlKGNoYW5uZWwpKTsKICAgICB9CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lk
IEF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZs
b2F0KiBsYXN0TWl4R2FpbiwgZgogCiAgICAgaWYgKGZyYW1lc1RvRGV6aXBwZXIpIHsKICAgICAg
ICAgaWYgKCFtX2RlemlwcGVyR2FpblZhbHVlcy5nZXQoKSB8fCBtX2RlemlwcGVyR2FpblZhbHVl
cy0+c2l6ZSgpIDwgZnJhbWVzVG9EZXppcHBlcikKLSAgICAgICAgICAgIG1fZGV6aXBwZXJHYWlu
VmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6aXBw
ZXIpOworICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBtYWtlVW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4oZnJhbWVzVG9EZXppcHBlcik7CiAKICAgICAgICAgZmxvYXQqIGdhaW5WYWx1
ZXMgPSBtX2RlemlwcGVyR2FpblZhbHVlcy0+ZGF0YSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZnJhbWVzVG9EZXppcHBlcjsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCAyMTczZGM5MzgzZTRhMzNjMWI1OTM0NzY1YTFlNWIx
MDc0NmYwM2ExLi5iYmIzZDJhY2QyMmM1NzJiYzkyM2E0OGIxZjcwYWY4NTRjMGNiMDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQW4gQXVkaW9CdXMgcmVwcmVzZW50cyBhIGNvbGxlY3Rp
b24gb2Ygb25lIG9yIG1vcmUgQXVkaW9DaGFubmVscy4KIC8vIFRoZSBkYXRhIGxheW91dCBpcyAi
cGxhbmFyIiBhcyBvcHBvc2VkIHRvICJpbnRlcmxlYXZlZCIuCiAvLyBBbiBBdWRpb0J1cyB3aXRo
IG9uZSBjaGFubmVsIGlzIG1vbm8sIGFuIEF1ZGlvQnVzIHdpdGggdHdvIGNoYW5uZWxzIGlzIHN0
ZXJlbywgZXRjLgotY2xhc3MgQXVkaW9CdXMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
QXVkaW9CdXM+IHsKK2NsYXNzIEF1ZGlvQnVzIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEF1ZGlvQnVzPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9CdXMpOwog
cHVibGljOgogICAgIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9DaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0NoYW5uZWwuaAppbmRleCBiYmMxMzU3YTNkNTNmMDU0OGY4ODc4ZTU4N2RiN2Q2ZGQxYzRmYWQ4
Li43Yjk4OTNkMzhhYzQxNzQ1MzE3NDFiNzcyNGM2ZmYyYWJkMDFkZjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaApAQCAtMzcsNyArMzcsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvQ2hhbm5lbCByZXByZXNlbnRzIGEgYnVm
ZmVyIG9mIG5vbi1pbnRlcmxlYXZlZCBmbG9hdGluZy1wb2ludCBhdWRpbyBzYW1wbGVzLgogLy8g
VGhlIFBDTSBzYW1wbGVzIGFyZSBub3JtYWxseSBhc3N1bWVkIHRvIGJlIGluIGEgbm9taW5hbCBy
YW5nZSAtMS4wIC0+ICsxLjAKLWNsYXNzIEF1ZGlvQ2hhbm5lbCB7CitjbGFzcyBBdWRpb0NoYW5u
ZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEF1ZGlvQ2hhbm5lbCk7CiBwdWJsaWM6CiAgICAgLy8gTWVtb3J5IGNhbiBiZSBl
eHRlcm5hbGx5IHJlZmVyZW5jZWQsIG9yIGNhbiBiZSBpbnRlcm5hbGx5IGFsbG9jYXRlZCB3aXRo
IGFuIEF1ZGlvRmxvYXRBcnJheS4KQEAgLTU2LDcgKzU3LDcgQEAgY2xhc3MgQXVkaW9DaGFubmVs
IHsKICAgICAgICAgLCBtX3Jhd1BvaW50ZXIoMCkKICAgICAgICAgLCBtX3NpbGVudCh0cnVlKQog
ICAgIHsKLSAgICAgICAgbV9tZW1CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4obGVuZ3RoKTsKKyAgICAgICAgbV9tZW1CdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4obGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBBICJibGFuayIgYXVkaW8gY2hhbm5l
bCAtLSBtdXN0IGNhbGwgc2V0KCkgYmVmb3JlIGl0J3MgdXNlZnVsLi4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCmluZGV4IDc1YzlhYmQ3NDk0ZDM1ODIyZjgyYWNl
N2NjZDBkODU2ODYxMWQ3ZWEuLjBmNDM4ZGQ3ZDBmYTU5ZmI2NDRkNGRmNTcyZjU1OWZkNjYzMDhi
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCkBAIC0zMyw3
ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9GSUZPIHsKK2Ns
YXNzIEF1ZGlvRklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgLy8gQ3JlYXRlIGEgRklGTyBsYXJnZSBlbm91Z2ggdG8gaG9sZCB8Zmlmb0xlbmd0
aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLgogICAgIEF1
ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKaW5kZXggYmZi
ZTk4M2E1NzVhNDU0YWFjMmIwYzNjYmU0NTc1ZWZhZjZiNzhkNy4uZDc0OGZhNDEzODczNzlkYjM5
NWJlYWU2NWY4ODJiYTI1OGU5ZmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUHVsbEZJRk8uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAvLyB0aGUgRklGTyB3aWxsIGFzayB0aGUgcHJvdmlkZXIgZm9yIG1vcmUgZGF0YSB3aGVuIG5l
Y2Vzc2FyeSB0byBmdWxmaWxsIGEgcmVxdWVzdC4gQ29udHJhc3QgdGhpcwogLy8gd2l0aCBhICJw
dXNoIiBGSUZPLCB3aGVyZSB0aGUgc2VuZGVyIHB1c2hlcyBkYXRhIHRvIHRoZSBGSUZPIHdoaWNo
IHdpbGwgaXRzZWxmIHB1c2ggdGhlIGRhdGEgdG8KIC8vIHRoZSByZWNlaXZlciB3aGVuIHRoZSBG
SUZPIGlzIGZ1bGwuCi1jbGFzcyBBdWRpb1B1bGxGSUZPIHsKK2NsYXNzIEF1ZGlvUHVsbEZJRk8g
ZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIENy
ZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJvdmlkZXJ8LiBUaGUgRklGTyB3aWxs
IGJlIGxhcmdlIGVub3VnaCB0byBob2xkCiAgICAgLy8gfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBk
YXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4gVGhlIEF1ZGlvU291cmNlUHJvdmlk
ZXIgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9SZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNh
bXBsZXIuY3BwCmluZGV4IDg2OTA2YmE1MTI0NzU4NjkyYzY4M2UyYmM5MDM4MzUwMWVhYjhmZDku
LjI4NGMwNTQ5NDMyNTkzNDRlYWNlMzI0MThhZGE5YjgzMDNkYTJlNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgY29uc3QgZG91YmxlIEF1ZGlvUmVzYW1wbGVyOjpNYXhSYXRlID0gOC4wOwogQXVkaW9S
ZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKCkKICAgICA6IG1fcmF0ZSgxLjApCiB7Ci0gICAgbV9r
ZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlz
KSk7CisgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVs
Pih0aGlzKSk7CiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEsIDAsIGZhbHNl
KTsKIH0KIApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IG1fcmF0ZSgxLjApCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9r
ZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlz
KSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktl
cm5lbD4odGhpcykpOwogCiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKG51bWJl
ck9mQ2hhbm5lbHMsIDAsIGZhbHNlKTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBBdWRpb1Jl
c2FtcGxlcjo6Y29uZmlndXJlQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAg
ICAvLyBGaXJzdCBkZWFsIHdpdGggYWRkaW5nIG9yIHJlbW92aW5nIGtlcm5lbHMuCiAgICAgaWYg
KG51bWJlck9mQ2hhbm5lbHMgPiBjdXJyZW50U2l6ZSkgewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBjdXJyZW50U2l6ZTsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgICAg
IG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4o
dGhpcykpOworICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVz
YW1wbGVyS2VybmVsPih0aGlzKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fa2VybmVscy5yZXNp
emUobnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Jlc2FtcGxlci5oCmluZGV4IGQxMWZhOTNlYmFhY2JkOGU1NmI5OGRhMzM3NWZhZTE0
MDY4ZTNiYzkuLjIwMTZiYWZmN2M4OGRmMThhZjVkMzUyYzMwMWY1ZmY0Mzc2ODlmN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaApAQCAtMzcs
NyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgYXVkaW8gc3RyZWFtIG1heSBi
ZSBzaW5nbGUgb3IgbXVsdGktY2hhbm5lbC4KIC8vIFRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRl
ZmF1bHRzIHRvIHNpbmdsZS1jaGFubmVsIChtb25vKS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXIg
eworY2xhc3MgQXVkaW9SZXNhbXBsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVyKCk7CiAgICAgQXVkaW9SZXNhbXBsZXIo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAppbmRleCA5OWQ4NzdiYjdjZDY4ZGJi
MDUzNjc3YTA5N2NkNGUwZWFjODNiNzgyLi44YWMyYmFhNDJjNTg3YTM0ODVkNTM0MDIzYWRlZTI0
Zjg4MzI2ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlcktlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyS2VybmVsLmgKQEAgLTM0LDcgKzM0LDkgQEAgY2xhc3MgQXVkaW9SZXNhbXBs
ZXI7CiAvLyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBkb2VzIHJlc2FtcGxpbmcgb24gYSBzaW5nbGUg
bW9ubyBjaGFubmVsLgogLy8gSXQgdXNlcyBhIHNpbXBsZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBm
b3IgZ29vZCBwZXJmb3JtYW5jZS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgeworY2xh
c3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvUmVzYW1wbGVyS2VybmVsKTsKIHB1
YmxpYzoKICAgICBBdWRpb1Jlc2FtcGxlcktlcm5lbChBdWRpb1Jlc2FtcGxlciopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAppbmRleCA1YzFi
ZjJhMzE3MzQyZWEzZTUyOTJhNzk3ZThlNjZlMWE4ZGEzOTdjLi5iNWZiNTgwNjQ4ZjljZjhlYzRm
MTg2ZmFmYTQ4ZTEzZmRjZjJmNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgYm9vbCBBdWRpb1Nlc3Npb246
OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogY2xh
c3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiB9
OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IDE3ZGE4MWIzYjc1ZDdhNWFhYjgyMTQ4NmI3
YzFlMzNmMWE4ZGY0NjkuLmU3MDA4MjJmZjFmZWViZDc4MjlhZWM3NTBjY2U0MGE2MGI5MjU2NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC00
NCw3ICs0NCw4IEBAIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdCB7CiAg
ICAgTG9uZ0Zvcm1WaWRlbwogfTsKIAotY2xhc3MgQXVkaW9TZXNzaW9uIHsKK2NsYXNzIEF1ZGlv
U2Vzc2lvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uKTsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgQXVkaW9TZXNzaW9uJiBzaGFyZWRTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0JpcXVhZC5oCmluZGV4IGJiNzIxYTIzYTdmY2M3NzRiNjA5M2U0ZWE5MDhjNjBl
ODkwODEwN2MuLjcxMzQ5NGM5MTRkMzM3ODY0M2UyOWE4MGJjMzllNzczNjZkZjE4MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vICAgIGxvd3Bhc3MsIGhpZ2hwYXNzLCBzaGVsdmluZywgcGFyYW1l
dGVyaWMsIG5vdGNoLCBhbGxwYXNzLCAuLi4KIAogY2xhc3MgQmlxdWFkIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBCaXF1YWQoKTsKICAgICB+
QmlxdWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKaW5kZXggZDgxYzA1ZGM2
OGU2ZTJmYTIxZDI0NWRkMTM3YjRmMTc4YTIxMjBiNC4uYTdhY2EzYTRjNTRkMjc0YjNhYTNkNDBh
ZDlkMTQzZWJkZmM0NWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQ29uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaApAQCAt
MzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbmUgZ2FpbiBpcyBkZWZp
bmVkIGFjY29yZGluZyB0byB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24KIAotY2xhc3MgQ29uZUVm
ZmVjdCB7CitjbGFzcyBDb25lRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBDb25lRWZmZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAppbmRleCA2ZTlmNGUwMWRhZTZkNDVk
MDIxMTFkNWQ1YjEyOGVmMzg4NmIyMjQyLi5lMGIzZWZkODBmNzhmZmFhMzA2NTczMzIzMTQ3MDJk
YzczYTJmMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5v
cm1hbERpc2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3Jt
YWxEaXNhYmxlci5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRp
ZgogCiAjaWZkZWYgSEFWRV9ERU5PUk1BTAotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFz
cyBEZW5vcm1hbERpc2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBEZW5vcm1hbERpc2FibGVyKCkKICAgICAgICAgICAgIDogbV9zYXZlZENT
UigwKQpAQCAtMTAzLDcgKzEwNCw4IEBAIGNsYXNzIERlbm9ybWFsRGlzYWJsZXIgewogCiAjZWxz
ZQogLy8gRklYTUU6IGFkZCBpbXBsZW1lbnRhdGlvbnMgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMg
YW5kIGNvbXBpbGVycwotY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBEZW5vcm1hbERp
c2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBEZW5vcm1hbERpc2FibGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKaW5kZXggNmYyZmFmNDBlNjFiZjZlMzJhNGY0OTk5NzY1
YzllMWJiNTE5NDFhOC4uNWM4ZDg2NmMxNjU1Y2MzOTFhODI1ZDNiMjM3ODhiZjQwYzc4OWEzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgK
QEAgLTMwLDEwICszMCwxMyBAQAogI2RlZmluZSBEaXJlY3RDb252b2x2ZXJfaAogCiAjaW5jbHVk
ZSAiQXVkaW9BcnJheS5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIERpcmVjdENvbnZvbHZlciB7CitjbGFzcyBEaXJlY3RDb252
b2x2ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKERpcmVjdENvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRGly
ZWN0Q29udm9sdmVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EaXN0YW5jZS5oCmluZGV4IDkxZDM0OWI5N2U2Mjc3MzMyZDc2MzFhODg0NDI2
YjE2NjhkY2YyODMuLmIzZWI3Nzk3M2NmYTQ3OTVmMTUwNTM2OWI3ZTRiMmY4OWZmYjZjNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaApAQCAtNDAsNyArNDAsOCBA
QCBlbnVtIGNsYXNzIERpc3RhbmNlTW9kZWxUeXBlIHsKICAgICBFeHBvbmVudGlhbAogfTsKIAot
Y2xhc3MgRGlzdGFuY2VFZmZlY3QgeworY2xhc3MgRGlzdGFuY2VFZmZlY3QgZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERpc3RhbmNlRWZmZWN0KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oCmluZGV4IGY0
YjQyMDE3ZWU3NjI3Y2FkNjU2YmZmNDU3YWFlOTg5NDgwMTRiZjIuLjk1NzBiODkxYzk3ZmZhOTEx
YTAxMTM0MDAzYjRmZGNiNWY3NmY5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRG93blNhbXBsZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIERvd25TYW1wbGVyIGRvd24tc2FtcGxlcyB0aGUgc291cmNlIHN0cmVhbSBieSBhIGZhY3Rv
ciBvZiAyeC4KIAotY2xhc3MgRG93blNhbXBsZXIgeworY2xhc3MgRG93blNhbXBsZXIgZmluYWwg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IERv
d25TYW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAppbmRleCBiMjU1MThkODgw
YThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViLi41MTM3OTlhODUxMmY0MjdiNGU0YjhkOWIy
OTQ1YTk0ZDM0OTE4Nzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAgLTI3MSw4ICsyNzEsOCBAQCB2b2lkIER5bmFt
aWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzKQogICAgIG1fcHJlRmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBtX3Bvc3RGaWx0ZXJQYWNr
cy5jbGVhcigpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxz
OyArK2kpIHsKLSAgICAgICAgbV9wcmVGaWx0ZXJQYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKLSAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7CisgICAgICAgIG1f
cHJlRmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7
CisgICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFplcm9Qb2xlRmls
dGVyUGFjazQ+KCkpOwogICAgIH0KIAogICAgIG1fc291cmNlQ2hhbm5lbHMgPSBtYWtlVW5pcXVl
QXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKaW5kZXggZWY4YzA5M2Ex
Yjk2NTMyMjlkNzk5ZjFhNmIyOTJhZmFkYmRhYmFkMS4uODIyYzkzMWYzOGNlMGVjOGRjNjI4MmYw
ZjhjMzQzYWY2NzdmOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTQzLDggKzQzLDkgQEAgY2xhc3MgQXVkaW9CdXM7
CiAvLyBvZiB0aGUgbG91ZGVzdCBwYXJ0cyBvZiB0aGUgc2lnbmFsIGFuZCByYWlzZXMgdGhlIHZv
bHVtZSBvZiB0aGUgc29mdGVzdCBwYXJ0cywKIC8vIG1ha2luZyB0aGUgc291bmQgcmljaGVyLCBm
dWxsZXIsIGFuZCBtb3JlIGNvbnRyb2xsZWQuCiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3NvciB7
CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKER5bmFtaWNzQ29tcHJlc3Nvcik7CiBw
dWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIFBhcmFtVGhyZXNob2xkLApAQCAtOTUsOSArOTYs
MTAgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yIHsKICAgICBmbG9hdCBtX2xhc3RBbmNob3I7
CiAgICAgZmxvYXQgbV9sYXN0RmlsdGVyU3RhZ2VHYWluOwogCi0gICAgdHlwZWRlZiBzdHJ1Y3Qg
eworICAgIHN0cnVjdCBaZXJvUG9sZUZpbHRlclBhY2s0IHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBaZXJvUG9sZSBmaWx0ZXJzWzRdOwotICAgIH0g
WmVyb1BvbGVGaWx0ZXJQYWNrNDsKKyAgICB9OwogCiAgICAgLy8gUGVyLWNoYW5uZWwgZW1waGFz
aXMgZmlsdGVycy4KICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Qb2xlRmlsdGVyUGFj
azQ+PiBtX3ByZUZpbHRlclBhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKaW5kZXggNzM0YjA2NmNk
YTQ4YmMyYzdhNzllZGY1MDdkMDZjMDU2YzcwYTA5MC4uYWZlZGI3YjRjZDBhNWE2MWQxYTlmZTI3
OGMzNDAzODNmOThlMjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCkBAIC03Niw3ICs3Niw3IEBA
IHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMpCiAKICAgICBtX3ByZURlbGF5QnVmZmVycy5jbGVhcigpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAg
ICAgIG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKKyAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBw
ZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihNYXhQcmVEZWxheUZyYW1lcykpOwogfQog
CiB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0UHJlRGVsYXlUaW1lKGZsb2F0IHBy
ZURlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKaW5kZXggYjdiY2VhMmZhZmQ4OTk2Y2E1MjhiMGI1
ZGFiNDljYjg4OTU4ZGNjNC4uZTExZjQ3YmFhZjBiYzZjNWQwY2E3ZTNkNzIwMDgyNjM5ZDI3MGMw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsLmgKQEAgLTM1LDcgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwgeworY2xhc3MgRHluYW1pY3ND
b21wcmVzc29yS2VybmVsIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwoZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAppbmRleCA4Y2Y1OTkxNzk1ZjNmMWY2
M2UyODFkOWUxNmFjYWYzZDdhNTdhNWRhLi40ZTQ2M2IxMjgxYTdmYTNiYjM5N2E2YjA2NWNlMDMz
Y2NiZjlhZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVh
bFBvd2VyUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQ
b3dlclBhbm5lci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
Q29tbW9uIHR5cGUgb2Ygc3RlcmVvIHBhbm5lciBhcyBmb3VuZCBpbiBub3JtYWwgYXVkaW8gbWl4
aW5nIGVxdWlwbWVudC4KIAotY2xhc3MgRXF1YWxQb3dlclBhbm5lciA6IHB1YmxpYyBQYW5uZXIg
eworY2xhc3MgRXF1YWxQb3dlclBhbm5lciBmaW5hbCA6IHB1YmxpYyBQYW5uZXIgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IEVxdWFsUG93ZXJQYW5uZXIoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKaW5kZXggNDU0MmI2
ZmIyNTc4NTQ5NWFiMjA2YWJjM2M5MGM3NWJjMmYxNmVhMC4uMzg2MjI3ZjE5NzA0YWZkNzkyZTM2
NjIyYmRkYTljMWFjZWE3NTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZUQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZUQ29udm9sdmVyLmgKQEAgLTM0LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBGRlRDb252b2x2ZXIgeworY2xhc3MgRkZUQ29udm9sdmVyIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGRlRDb252
b2x2ZXIpOwogcHVibGljOgogICAgIC8vIGZmdFNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3bwog
ICAgIEZGVENvbnZvbHZlcihzaXplX3QgZmZ0U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHAKaW5kZXggNGMwMmI2OTkyYjA2MzgzYjgwMzU3Mzc4NzhkYmY2
NWEyNmZiOWMzMS4uNGMxNTIwNjdkNDRhYzRiODU0MTkyMWFhZWQyOTU5ODJiOTY5Mzc4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcApAQCAtNTQsNyArNTQs
NyBAQCB2b2lkIEZGVEZyYW1lOjpkb1BhZGRlZEZGVChjb25zdCBmbG9hdCogZGF0YSwgc2l6ZV90
IGRhdGFTaXplKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RkZURnJhbWU+IEZGVEZyYW1lOjpjcmVhdGVJ
bnRlcnBvbGF0ZWRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUxLCBjb25zdCBGRlRGcmFtZSYg
ZnJhbWUyLCBkb3VibGUgeCkKIHsKLSAgICBhdXRvIG5ld0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1
ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CisgICAgYXV0byBuZXdGcmFtZSA9IG1ha2VV
bmlxdWU8RkZURnJhbWU+KGZyYW1lMS5mZnRTaXplKCkpOwogCiAgICAgbmV3RnJhbWUtPmludGVy
cG9sYXRlRnJlcXVlbmN5Q29tcG9uZW50cyhmcmFtZTEsIGZyYW1lMiwgeCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgKaW5kZXggNzU3YmNmYTRiNmFl
ZmQ3MGViYWU4NjU0ODcyNWZhNDA2MjljNmU5ZS4uYTUxOTM0OTgxNTA0NTI2ZDZmYzY0ZDQ1Yjk3
OTBiMzc4MTAzYTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBI
UlRGS2VybmVsOwogCi1jbGFzcyBIUlRGRGF0YWJhc2UgeworY2xhc3MgSFJURkRhdGFiYXNlIGZp
bmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShIUlRGRGF0YWJhc2UpOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKaW5kZXggZjQ1YmU4NDdjZTcxMGRj
ZWRhMmUwZWMxMDZiNzViZjI2ODU3ODljZC4uYTQ3NGE3MGM0MDg1MmFlMmUxZjlmNThhNDlhMDAw
MzYxNTgwYjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2VMb2FkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSFJURkRhdGFiYXNl
TG9hZGVyOjpsb2FkKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1f
aHJ0ZkRhdGFiYXNlLmdldCgpKSB7CiAgICAgICAgIC8vIExvYWQgdGhlIGRlZmF1bHQgSFJURiBk
YXRhYmFzZS4KLSAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZE
YXRhYmFzZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUpOworICAgICAgICBtX2hydGZEYXRhYmFzZSA9
IG1ha2VVbmlxdWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3Bw
CmluZGV4IGM4NGFiOTc1MWExNDU5ODlhMDM3N2ZhZDFmNGE3NWU4ZjE3ZTJiMjQuLjYwNTIzMmNk
MWE5OWM5MjMzZDlhZDEwNDliYTMwN2UyMTc3MzhmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0yNDQsOCArMjQ0LDggQEAgc3Rk
Ojp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1Ympl
Y3QoY29uc3QgU3RyaW5nJiBzdWIKICAgICBpZiAoIWlzRWxldmF0aW9uR29vZCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAgIGF1
dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJP
ZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhSVEZL
ZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIg
PSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAg
ICAgLy8gTG9hZCBjb252b2x1dGlvbiBrZXJuZWxzIGZyb20gSFJURiBmaWxlcy4KICAgICBpbnQg
aW50ZXJwb2xhdGVkSW5kZXggPSAwOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0
cmluZyYgc3ViCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVs
TGlzdFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhS
VEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwg
ZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRp
b24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxldmF0
aW9uKiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjIsIGZsb2F0
IHgsIGZsb2F0IHNhbXBsZVJhdGUpCkBAIC0yODUsOCArMjg1LDggQEAgc3RkOjp1bmlxdWVfcHRy
PEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNl
cyhIUlRGRWwKICAgICAgICAgCiAgICAgQVNTRVJUKHggPj0gMC4wICYmIHggPCAxLjApOwogICAg
IAotICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0
PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAgIGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1
dG8ga2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFs
QXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxM
aXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5l
bExpc3RMMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0TCgpOwogICAgIEhSVEZLZXJuZWxM
aXN0KiBrZXJuZWxMaXN0UjEgPSBocnRmRWxldmF0aW9uMS0+a2VybmVsTGlzdFIoKTsKQEAgLTMw
Miw3ICszMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlv
bjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbAogICAgIC8vIEludGVycG9sYXRl
IGVsZXZhdGlvbiBhbmdsZS4KICAgICBkb3VibGUgYW5nbGUgPSAoMS4wIC0geCkgKiBocnRmRWxl
dmF0aW9uMS0+ZWxldmF0aW9uQW5nbGUoKSArIHggKiBocnRmRWxldmF0aW9uMi0+ZWxldmF0aW9u
QW5nbGUoKTsKICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9u
PihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIHN0YXRpY19jYXN0
PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRGRWxl
dmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIHN0YXRp
Y19jYXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBIUlRGRWxldmF0aW9u
OjpnZXRLZXJuZWxzRnJvbUF6aW11dGgoZG91YmxlIGF6aW11dGhCbGVuZCwgdW5zaWduZWQgYXpp
bXV0aEluZGV4LCBIUlRGS2VybmVsKiAma2VybmVsTCwgSFJURktlcm5lbCogJmtlcm5lbFIsIGRv
dWJsZSYgZnJhbWVEZWxheUwsIGRvdWJsZSYgZnJhbWVEZWxheVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKaW5kZXggMmE5NTkwNDU1MjE4NDNhMTUx
NjJlY2M4ZTMyMTE3MzllMDcwNTNmNy4uZWY3NTJjM2MwMWJlMzllY2RiN2VmNjRkZjQzOTA5MjY2
ZDZlZDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVs
ZXZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uaApAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEhSVEZFbGV2
YXRpb24gY29udGFpbnMgYWxsIG9mIHRoZSBIUlRGS2VybmVscyAob25lIGxlZnQgZWFyIGFuZCBv
bmUgcmlnaHQgZWFyIHBlciBhemltdXRoIGFuZ2xlKSBmb3IgYSBwYXJ0aWN1bGFyIGVsZXZhdGlv
bi4KIAotY2xhc3MgSFJURkVsZXZhdGlvbiB7CitjbGFzcyBIUlRGRWxldmF0aW9uIGZpbmFsIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShI
UlRGRWxldmF0aW9uKTsKIHB1YmxpYzoKICAgICBIUlRGRWxldmF0aW9uKHN0ZDo6dW5pcXVlX3B0
cjxIUlRGS2VybmVsTGlzdD4ga2VybmVsTGlzdEwsIHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2VybmVs
TGlzdD4ga2VybmVsTGlzdFIsIGludCBlbGV2YXRpb24sIGZsb2F0IHNhbXBsZVJhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCmluZGV4IGVkZjZjNjBk
MGRiODE0ZDk0YzBmNzFiNjMwNmU0MzgyNjUzYWE0YzcuLjM3NTUyMTZhZTI4N2E3MWM3NDI5Mjlh
NTNjOTU5MDk2ZGIxZGJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZLZXJuZWwuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEhSVEZLZXJuZWw6OkhSVEZLZXJuZWwoQXVk
aW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICAgICAgfQogICAgIH0KIAotICAgIG1fZmZ0RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZy
YW1lPihmZnRTaXplKTsKKyAgICBtX2ZmdEZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0
U2l6ZSk7CiAgICAgbV9mZnRGcmFtZS0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNlLCB0cnVu
Y2F0ZWRSZXNwb25zZUxlbmd0aCk7CiB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzaXplX3QgSFJU
Rktlcm5lbDo6ZmZ0U2l6ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0NoYW5uZWw+
IEhSVEZLZXJuZWw6OmNyZWF0ZUltcHVsc2VSZXNwb25zZSgpCiB7Ci0gICAgYXV0byBjaGFubmVs
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CisgICAgYXV0byBj
aGFubmVsID0gbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CiAgICAgRkZURnJh
bWUgZmZ0RnJhbWUoKm1fZmZ0RnJhbWUpOwogCiAgICAgLy8gQWRkIGxlYWRpbmcgZGVsYXkgYmFj
ayBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5u
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAppbmRleCBi
ZjVlZWZhYTVlNGM2ZDJiZjE3YTk5MDAzMDc0MTY1YzZlNDMzYWQ3Li5jYWFhNDQxZjFkMTRlYTM2
ZjVlOTY4YWQ4YTc3ZDBiN2E2MGRkOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURlBhbm5lci5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSFJURlBhbm5lciA6IHB1YmxpYyBQYW5uZXIgeworY2xhc3MgSFJURlBhbm5lciBm
aW5hbCA6IHB1YmxpYyBQYW5uZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEhSVEZQYW5uZXIo
ZmxvYXQgc2FtcGxlUmF0ZSwgSFJURkRhdGFiYXNlTG9hZGVyKik7CiAgICAgdmlydHVhbCB+SFJU
RlBhbm5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVs
dGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXggYmJiZjE2NDQ2MjA3NjM5ZTM1Y2Y3OTU2NDgy
ODI2M2QzZTkzNzNhZS4uNWJmOWFiOTVkMDE1NzUwMDgxNWQ2MTMxYWIxZDg5NzQxYmUxZmUyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5u
ZWxSZXNhbXBsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6
TXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVy
CiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2FtcGxlci4KICAgICBmb3IgKHVu
c2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7
ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFwcGVu
ZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yKSk7CiB9CiAKIHZvaWQgTXVs
dGlDaGFubmVsUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNlUHJvdmlkZXIqIHByb3ZpZGVy
LCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5o
CmluZGV4IDQ0MTc1NDc2MDU4M2QyODAzNGE0NWIzYmQ4YTYxODhkNDY1YTJmMzYuLjYxNDZlOTI1
YzA2YTJkZGE3NmNiNDEyZjBjYzFlMGEyNDZhYzgwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CiAgICAgCi1jbGFz
cyBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgeworY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGZp
bmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICBleHBs
aWNpdCBNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3Bw
CmluZGV4IGFjNzI4NmFjOWEwNjBiNzUzNGNiMmVkZTkyMWQ2Y2JkNzdhOTdhODguLjQwYjlkMDFk
YzE4NGI5NmQ1ZGYzYWI5YjdmNDA5NDYzYTk3ODM0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGFubmVyLmNwcApAQCAtNDMsMTEgKzQzLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
YW5uZXI+IFBhbm5lcjo6Y3JlYXRlKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwsIGZsb2F0IHNhbXBs
ZVJhdGUsCiAKICAgICBzd2l0Y2ggKG1vZGVsKSB7CiAgICAgY2FzZSBQYW5uaW5nTW9kZWxUeXBl
OjpFcXVhbHBvd2VyOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVxdWFsUG93
ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOworICAgICAgICBwYW5uZXIgPSBtYWtlVW5pcXVlPEVxdWFs
UG93ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgUGFu
bmluZ01vZGVsVHlwZTo6SFJURjoKLSAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxI
UlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRlcik7CisgICAgICAgIHBhbm5lciA9
IG1ha2VVbmlxdWU8SFJURlBhbm5lcj4oc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybUF1ZGlvRGF0YS5oCmluZGV4IGNkYTcyZThhYjNjNGNkYzBhODY4ZmFhYzRmMDVj
ZTYxYzQ0NDAyZDAuLjQ2MzVhNjczM2VjYzNmM2EwNzUwMmZjN2E3NTAxNzNlMzNlMTFmMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEu
aApAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9y
bUF1ZGlvRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+UGxhdGZvcm1BdWRpb0RhdGEoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRl
eCBlMDIzOTRhYTViMTQ5Y2QxNTk2OTEyYTI1NjgxZmY1ZWE0NGFkOGQyLi5jOGJkNjRhNDFiZjYx
MmU4OWUzYzIxNGZhMjJkY2M1OTk0OGU1NGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
TWVkaWFTZXNzaW9uPiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1NZWRpYVNlc3Npb24+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZv
cm1NZWRpYVNlc3Npb24+KGNsaWVudCk7CiB9CiAKIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKaW5kZXggMzA0M2ZjOGEwNGRmMGQ3
N2MxMGFhMDM3OWJkMjZhMzlkNDZjZTZiYS4uOGE2NzU1YzU0YWQwMGEzYTgxMDE4NzQyMTYyY2Nk
MDc0ZGUxMGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCkBA
IC0xMTcsNyArMTE3LDcgQEAgdm9pZCBSZXZlcmI6OmluaXRpYWxpemUoQXVkaW9CdXMqIGltcHVs
c2VSZXNwb25zZUJ1ZmZlciwgc2l6ZV90IHJlbmRlclNsaWNlU2l6ZSwKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bVJlc3BvbnNlQ2hhbm5lbHM7ICsraSkgewogICAgICAgICBBdWRpb0No
YW5uZWwqIGNoYW5uZWwgPSBpbXB1bHNlUmVzcG9uc2VCdWZmZXItPmNoYW5uZWwoaSk7CiAKLSAg
ICAgICAgbV9jb252b2x2ZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYkNvbnZvbHZl
cj4oY2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBtYXhGRlRTaXplLCBjb252b2x2ZXJSZW5kZXJQ
aGFzZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsKKyAgICAgICAgbV9jb252b2x2ZXJzLmFwcGVu
ZChtYWtlVW5pcXVlPFJldmVyYkNvbnZvbHZlcj4oY2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBt
YXhGRlRTaXplLCBjb252b2x2ZXJSZW5kZXJQaGFzZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsK
IAogICAgICAgICBjb252b2x2ZXJSZW5kZXJQaGFzZSArPSByZW5kZXJTbGljZVNpemU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaAppbmRleCAzZTI1NzZiMzU3NTdk
YmEyNDcwYzhlYjdkYTNjMTdiZWViYmZkY2VkLi4yMzRlMzFkYWViYmQ0ZGRhYTM2YTFlOTA1MzEx
ZWI5OTIyZmFhNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaApAQCAt
MzgsNyArMzgsNyBAQCBjbGFzcyBBdWRpb0J1czsKICAgICAKIC8vIE11bHRpLWNoYW5uZWwgY29u
dm9sdXRpb24gcmV2ZXJiIHdpdGggY2hhbm5lbCBtYXRyaXhpbmcgLSBvbmUgb3IgbW9yZSBSZXZl
cmJDb252b2x2ZXIgb2JqZWN0cyBhcmUgdXNlZCBpbnRlcm5hbGx5LgogCi1jbGFzcyBSZXZlcmIg
eworY2xhc3MgUmV2ZXJiIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBlbnVtIHsgTWF4RnJhbWVTaXplID0gMjU2IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCmlu
ZGV4IDUxMmI2YWRlMzQxYTI4NTY5NzJlZTNmN2JjYjIxMTY2YmI3MjFhMWYuLmE2MjgzNWY5YzBk
N2Q3NDNjOWU5MjdjZWRlMmQ2YTFkYTQ1NTg0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCkBAIC0zNiw3
ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZl
ciBpcyBhIGNpcmN1bGFyIGRlbGF5IGJ1ZmZlciB3aXRoIG9uZSBjbGllbnQgcmVhZGluZyBmcm9t
IGl0IGFuZCBtdWx0aXBsZSBjbGllbnRzCiAvLyB3cml0aW5nL2FjY3VtdWxhdGluZyB0byBpdCBh
dCBkaWZmZXJlbnQgZGVsYXkgb2Zmc2V0cyBmcm9tIHRoZSByZWFkIHBvc2l0aW9uLiAgVGhlIHJl
YWQgb3BlcmF0aW9uIHdpbGwgemVybyB0aGUgbWVtb3J5CiAvLyBqdXN0IHJlYWQgZnJvbSB0aGUg
YnVmZmVyLCBzbyBpdCB3aWxsIGJlIHJlYWR5IGZvciBhY2N1bXVsYXRpb24gdGhlIG5leHQgdGlt
ZSBhcm91bmQuCi1jbGFzcyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgeworY2xhc3MgUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIoc2l6ZV90IGxl
bmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252
b2x2ZXIuY3BwCmluZGV4IDE0NWRmODFlMmE2YmEyYzJkYWE5YmI0MWU2YjVjYWJhZjM4NWY5MWMu
LmE5YzkzNWMxYTI4NWFiMTM2MmQ4ZmYxZGY4Y2ViYTVhN2U1YWE3N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApAQCAtOTQsNyAr
OTQsNyBAQCBSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcihBdWRpb0NoYW5uZWwqIGlt
cHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlbmRlclNsaQogCiAgICAgICAgIGJvb2wgdXNlRGlyZWN0
Q29udm9sdmVyID0gIXN0YWdlT2Zmc2V0OwogCi0gICAgICAgIGF1dG8gc3RhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90YWxSZXNwb25zZUxl
bmd0aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VTaXplLCBmZnRTaXpl
LCByZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRpb25CdWZmZXIsIHVz
ZURpcmVjdENvbnZvbHZlcik7CisgICAgICAgIGF1dG8gc3RhZ2UgPSBtYWtlVW5pcXVlPFJldmVy
YkNvbnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90YWxSZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90
YWxMYXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VTaXplLCBmZnRTaXplLCByZW5kZXJQaGFzZSwg
cmVuZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRpb25CdWZmZXIsIHVzZURpcmVjdENvbnZvbHZl
cik7CiAKICAgICAgICAgYm9vbCBpc0JhY2tncm91bmRTdGFnZSA9IGZhbHNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCmluZGV4IDViODE5
ZTFhM2U2ZjRmYjFmOGRiMGM1OTY5NzI2MmFhYzA5YzZiZGUuLjMyMDBiNDVlYThkZjdjMjFjZTZm
YTM3ZTA4YmIyNzkxZjhhZTVmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlci5oCkBAIC00Myw4ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQXVkaW9DaGFubmVsOwogCi1jbGFzcyBSZXZlcmJDb252b2x2ZXIgeworY2xh
c3MgUmV2ZXJiQ29udm9sdmVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXZlcmJDb252b2x2ZXIpOwogcHVibGljOgogICAg
IC8vIG1heEZGVFNpemUgY2FuIGJlIGFkanVzdGVkIChmcm9tIHNheSAyMDQ4IHRvIDMyNzY4KSBk
ZXBlbmRpbmcgb24gaG93IG11Y2ggcHJlY2lzaW9uIGlzIG5lY2Vzc2FyeS4KICAgICAvLyBGb3Ig
Y2VydGFpbiB0d2Vha3kgZGUtY29udm9sdmluZyBhcHBsaWNhdGlvbnMgdGhlIHBoYXNlIGVycm9y
cyBhZGQgdXAgcXVpY2tseSBhbmQgbGVhZCB0byBub24tc2Vuc2ljYWwgcmVzdWx0cyB3aXRoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJT
dGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJT
dGFnZS5jcHAKaW5kZXggMGZkZTQyMWFmMmY4MmZkNDg3NGQ5NGY2YWYxZDYzNDcyMzljNjU2ZS4u
NGZmOTUzYjI2MDQ5MTdkMzQ1MjAzOTQwNWI2NWRlMmJkNWExZWFiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcApA
QCAtNTUsMTYgKzU1LDE2IEBAIFJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJT
dGFnZShjb25zdCBmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QsCiAgICAgQVNTRVJUKGFj
Y3VtdWxhdGlvbkJ1ZmZlcik7CiAKICAgICBpZiAoIW1fZGlyZWN0TW9kZSkgewotICAgICAgICBt
X2ZmdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOworICAgICAg
ICBtX2ZmdEtlcm5lbCA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOwogICAgICAgICBt
X2ZmdEtlcm5lbC0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNlICsgc3RhZ2VPZmZzZXQsIHN0
YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZG
VENvbnZvbHZlcj4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0Q29udm9sdmVyID0gbWFrZVVuaXF1
ZTxGRlRDb252b2x2ZXI+KGZmdFNpemUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCgh
c3RhZ2VPZmZzZXQpOwogICAgICAgICBBU1NFUlQoc3RhZ2VMZW5ndGggPD0gZmZ0U2l6ZSAvIDIp
OwogCi0gICAgICAgIG1fZGlyZWN0S2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0
QXJyYXk+KGZmdFNpemUgLyAyKTsKKyAgICAgICAgbV9kaXJlY3RLZXJuZWwgPSBtYWtlVW5pcXVl
PEF1ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIpOwogICAgICAgICBtX2RpcmVjdEtlcm5lbC0+
Y29weVRvUmFuZ2UoaW1wdWxzZVJlc3BvbnNlLCAwLCBzdGFnZUxlbmd0aCk7Ci0gICAgICAgIG1f
ZGlyZWN0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXJlY3RDb252b2x2ZXI+KHJlbmRl
clNsaWNlU2l6ZSk7CisgICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0gbWFrZVVuaXF1ZTxEaXJl
Y3RDb252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CiAgICAgfQogICAgIG1fdGVtcG9yYXJ5QnVm
ZmVyLmFsbG9jYXRlKHJlbmRlclNsaWNlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCmluZGV4IGEwNDkwOTcwMzQw
YWIzYjMzNjAwYjA4OWU1OTg0NzRmYjNkNDU1ZTYuLjNjMDNiZTM0MWIzYjdkNjQ2MjFkYzgwMzgx
NjY5MzYwZjRkYjRjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlclN0YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBEaXJlY3RD
b252b2x2ZXI7CiAgICAgCiAvLyBBIFJldmVyYkNvbnZvbHZlclN0YWdlIHJlcHJlc2VudHMgdGhl
IGNvbnZvbHV0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIHN1Yi1zZWN0aW9uIG9mIGEgbGFyZ2UgaW1w
dWxzZSByZXNwb25zZS4KIC8vIEl0IGluY29ycG9yYXRlcyBhIGRlbGF5IGxpbmUgdG8gYWNjb3Vu
dCBmb3IgdGhlIG9mZnNldCBvZiB0aGUgc3ViLXNlY3Rpb24gd2l0aGluIHRoZSBsYXJnZXIgaW1w
dWxzZSByZXNwb25zZS4KLWNsYXNzIFJldmVyYkNvbnZvbHZlclN0YWdlIHsKK2NsYXNzIFJldmVy
YkNvbnZvbHZlclN0YWdlIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICAvLyByZW5kZXJQaGFzZSBpcyB1c2VmdWwgdG8ga25vdyBzbyB0aGF0IHdlIGNh
biBtYW5pcHVsYXRlIHRoZSBwcmUgdmVyc3VzIHBvc3QgZGVsYXkgc28gdGhhdCBzdGFnZXMgd2ls
bCBwZXJmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJJbnB1dEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5w
dXRCdWZmZXIuaAppbmRleCBiYjA2ZTRlZWQ2MzNmMGU3YzY4MmUyMGU0ZTZhNTcyYWExZmFhOTY2
Li5hZjllZDAwZDczM2U4NDJiNmVkM2E2NDc0ODU0MjBkM2M3Njc3NTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKQEAgLTM0LDcg
KzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gUmV2ZXJiSW5wdXRCdWZmZXIgaXMg
dXNlZCB0byBidWZmZXIgaW5wdXQgc2FtcGxlcyBmb3IgZGVmZXJyZWQgcHJvY2Vzc2luZyBieSB0
aGUgYmFja2dyb3VuZCB0aHJlYWRzLgotY2xhc3MgUmV2ZXJiSW5wdXRCdWZmZXIgeworY2xhc3Mg
UmV2ZXJiSW5wdXRCdWZmZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFJldmVyYklucHV0QnVmZmVyKHNpemVfdCBsZW5ndGgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKaW5kZXgg
MmZjZDg5ZjdlY2EzNzU4NTg2MzFhOWIyNzY1YTEwZDIwMWIzNDFjNy4uYzEzMmY1ZDk3NjJjNzU2
NmIyMzI1YzA2NGIyOGRlOGI2ZTM5MDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1NpbmNSZXNhbXBsZXIuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIFNpbmNSZXNhbXBsZXIgaXMgYSBoaWdoLXF1YWxpdHkgc2FtcGxlLXJhdGUgY29u
dmVydGVyLgogCi1jbGFzcyBTaW5jUmVzYW1wbGVyIHsKK2NsYXNzIFNpbmNSZXNhbXBsZXIgZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAgIC8vIHNj
YWxlRmFjdG9yID09IHNvdXJjZVNhbXBsZVJhdGUgLyBkZXN0aW5hdGlvblNhbXBsZVJhdGUKICAg
ICAvLyBrZXJuZWxTaXplIGNhbiBiZSBhZGp1c3RlZCBmb3IgcXVhbGl0eSAoaGlnaGVyIGlzIGJl
dHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgKaW5kZXggMjY2
YmNhZjk4MGQ3MjZmYTJmNjM3Y2ZlOTNhNWQ0YzM4YjI0ZWUwNi4uNjc1ZWU0YWQwYzQ0NjdjZDFk
ZDZkMWQ1MTYxMWU3N2I5OGM0YzYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vVXBTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
VXBTYW1wbGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBV
cFNhbXBsZXIgdXAtc2FtcGxlcyB0aGUgc291cmNlIHN0cmVhbSBieSBhIGZhY3RvciBvZiAyeC4K
IAotY2xhc3MgVXBTYW1wbGVyIHsKK2NsYXNzIFVwU2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXBTYW1wbGVyKHNpemVf
dCBpbnB1dEJsb2NrU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9aZXJvUG9sZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUu
aAppbmRleCA4MzFkZTkwOTNiMDA1NjE2YjRiZDc3ZWE3YjA3NzhjMzdkYWE3YjZlLi4wMmZmYWNk
NWVhY2E3Y2UyNzU4OTJiZThkNjQzOTRjNzMzZGM3ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1plcm9Qb2xlLmgKQEAgLTMzLDcgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAvLyBaZXJvUG9sZSBpcyBhIHNpbXBsZSBmaWx0ZXIgd2l0aCBvbmUgemVybyBhbmQgb25l
IHBvbGUuCiAKLWNsYXNzIFplcm9Qb2xlIHsKK2NsYXNzIFplcm9Qb2xlIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBaZXJvUG9sZSgpCiAgICAgICAg
IDogbV96ZXJvKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oCmluZGV4IDg2YjY1YTIyNTNhZjFhZWIyYTFjYTlj
YWEzNjY3ODZjZDdkNjU1MjAuLjhhN2U3YTAzYWMzM2E0ZTU1YzQzYzMxYWVjNjM3YjE4OWNiMWM3
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1
ZGlvQnVmZmVyTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L1dlYkF1ZGlvQnVmZmVyTGlzdC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogCi1jbGFzcyBXZWJBdWRpb0J1
ZmZlckxpc3QgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgeworY2xhc3MgV2ViQXVkaW9CdWZm
ZXJMaXN0IGZpbmFsIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKIHB1YmxpYzoKICAgICBX
ZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcAppbmRleCA1YmY4ZmRhNmIyOTEyYjE4ZjExOTBkY2JlNzA4MmJmNjg0
YmVlOThmLi4xYTU0OTVmZDc2NGQ5YzNjYzZlZGI1ODFmYTQ4MGVhZWFkMTQ1OWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0g
MikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwg
JWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyPihjYWxsYmFjaywgc2FtcGxlUmF0
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcj4oY2Fs
bGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2Fy
ZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4IDhhZjg3N2VjMmM0Y2EwYWJkMzA3
NDgzNWY1NGIzNGFlYmYwNDMzYTIuLjRiZGU3ZTQxZTJiNjQzN2NkMGZmNzI1ZTRkMDc5ZDY4Zjg5
ZTdkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2Fs
bGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAg
ICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhh
bmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9TPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9
CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpp
bmRleCBkYzZjOGJjY2UzNjlkMDZhZWRjOGZkMzMzYzczOGMwYmU5NTc1ZGQ0Li42Mzk4MjQwYmJk
OGQ5NjczMDJkZjdlOWVjZmY0MDc1MDJkYTZlMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTU5LDYgKzU5LDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIGNhdGVnb3J5TmFtZShBdWRpb1Nlc3Npb246OkNhdGVnb3J5
VHlwZSBjYXRlZ29yeSkKICNlbmRpZgogCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBdWRpb1Nlc3Npb25Qcml2
YXRlKEF1ZGlvU2Vzc2lvbiopOwogICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0
ZWdvcnlPdmVycmlkZTsKQEAgLTcxLDcgKzcyLDcgQEAgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6QXVk
aW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKQogfQogCiBBdWRpb1Nlc3Npb246OkF1ZGlv
U2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Q
cml2YXRlPih0aGlzKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblBy
aXZhdGU+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggNzY0YTM0N2Y5ODI5
ZTFlODQ3NWJkMmVhMTI4MGFhMTc1MDI2ZWNmYy4uOWZlNjRiYWFhNDc4NGZlY2RhYjNkNmRkYjVl
Mjc4MzgxZTFlMDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1
ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIp
CiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVm
KSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNrLCBzYW1wbGVS
YXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBs
ZURhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVEYXRhU291cmNlLm1tCmluZGV4IDc3ZDQzMTY1NjY5OTBlOTAxYjkyMGJmNzc4ZDk2OWU5
ZjE4ZjE4OGEuLjQxYWZlMzlmMjMyYWU1ODgwODYwZjA4NGQ1NTZjYjRhNWQ4YWUyNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFT
b3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxl
RGF0YVNvdXJjZTo6c2V0SW5wdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBmCiB7CiAgICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX2lu
cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4oZm9ybWF0KTsKKyAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKICAgICBpZiAobV9vdXRwdXREZXNjcmlwdGlvbikK
ICAgICAgICAgcmV0dXJuIHNldHVwQ29udmVydGVyKCk7CiAKQEAgLTEyMCw5ICsxMjAsOSBAQCBP
U1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mCiAgICAgQVNTRVJUKG1faW5wdXREZXNjcmlwdGlvbik7CiAg
ICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX291dHB1dERlc2Ny
aXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1h
dCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihmb3JtYXQpOwogICAgIGlmICghbV9yaW5nQnVmZmVyKQotICAgICAgICBtX3Jp
bmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9y
aW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAKICAgICBtX3JpbmdCdWZm
ZXItPmFsbG9jYXRlKGZvcm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVD
b3VudCkpOwogICAgIG1fc2NyYXRjaEJ1ZmZlciA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y3Jl
YXRlKG1fb3V0cHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbWF4aW11bVNh
bXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1Nlc3Npb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5jcHAKaW5kZXggN2Y2ZWY5ZDMzZGIxZmI0N2U3Y2YxNGM1OTA0YTQ2
MTEyYjE1MjIzMi4uY2MwNGYwYmUzMDk3NDk4YjgzNjZlOTI0MjA3M2VjZTNlMTk3NWFiNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiB9
OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQorICAgIDogbV9wcml2
YXRlKG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCmlu
ZGV4IDE4YTI2YWI2ZGM1YzhkZDAxMjUyZGIwNjQ2ZDRmNWI5YjQ3YjZmZjUuLjA0YWNlZmM4ZGFh
ZDcxMzI4YTRkZGZhYmJkMDRhZjllY2Q4ZWI5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgQXVkaW9CdWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0FSaW5nQnVmZmVyU3RvcmFnZSgpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgYWxsb2NhdGUoc2l6ZV90KSA9IDA7CkBAIC00Niw3
ICs0Nyw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2UgewogICAgIHZpcnR1YWwgdm9pZCog
ZGF0YSgpID0gMDsKIH07CiAKLWNsYXNzIENBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IgOiBwdWJs
aWMgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CitjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9y
IGZpbmFsIDogcHVibGljIENBUmluZ0J1ZmZlclN0b3JhZ2UgewogcHVibGljOgogICAgIH5DQVJp
bmdCdWZmZXJTdG9yYWdlVmVjdG9yKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKaW5kZXggYjk4MDNiZmEwMjMyNDM1N2MwZGZl
MDQ3MzEzZDJjM2VjMzA0Y2I5Mi4uN2E0N2Y1NjA4YmJiNmRlOWQzNzczYjE3ZTk4ZTQ3NjRhMjQy
MjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNw
cApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0
cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29k
ZXJDRj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyQ0Y+
KGRhdGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJDRjo6S2V5ZWREZWNvZGVyQ0YoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggMWE2MjdlYTAwYjkyY2JhYTZjZjdjMzU1ZDVlNDQ1
ZWM0ODYxYTQxMi4uNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVu
Y29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8S2V5ZWRFbmNvZGVyQ0Y+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNv
ZGVyQ0Y+KCk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4g
Y3JlYXRlRGljdGlvbmFyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggYjY4OTIyODA1ZTVkMzczZGU3ZjBh
ZWQ3ODkwODI1YWNjY2MxMjAzOS4uMDdhNDVjYWQ3OGI2ZDQzN2ZhYTg0MjUyNjk5YzBkNDg2ZDc4
ZWQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNo
YXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcApAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cFBv
d2VyT2JzZXJ2ZXIoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGF0aWMgUG93ZXJPYnNlcnZl
ciogcG93ZXJPYnNlcnZlcjsKICAgICBpZiAoIXBvd2VyT2JzZXJ2ZXIpCi0gICAgICAgIHBvd2Vy
T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRU
aW1lcikucmVsZWFzZSgpOworICAgICAgICBwb3dlck9ic2VydmVyID0gbWFrZVVuaXF1ZTxQb3dl
ck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKICNlbGlmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90
aWZpY2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFyZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3Rp
ZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggMTJhYjMyMWNiNDc3
MmJlNzAwMTUwMGYxOTZmNzhiNmViZTVlMmJkNS4uMDVjNTUyNGRlZmM3Nzc2MTFkZjc1ZjQ5YjE5
MWQ3ZmQ2OWY0NTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTY1LDcgKzY1
LDcgQEAgYm9vbCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4gTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQgTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmluaXRpYWxpemUoY29uc3QgVVJMKiB1cmwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGFlMGJkMjA5Y2NkNmYzMTdjOTE5MzI1YTE2YTE4YTk5
Y2QxNTcyZTQuLjBkMmE2MjE4NmI1YTU0ZTJiODUxZmY5NmQ1MjgxMDFmODQ2NmY0MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpj
cmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyPigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgY2FuSGFuZGxlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQppbmRleCBlODM2OWM2ZTUwMTZl
MjNjZjg3M2I5NTM3ZDJhZmI0ZjBiYzY4NTIyLi44ZmUzOGFkMGNjZTJmZDU0MmQyOTcwMTdmZGEy
ZDFjYjM1NWI3NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbENvbnRyb2xsZXIubW0KQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xs
ZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZl
Y3RvcgogICAgICAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bFNuYXBBbmltYXRvclN0YXRlPigpOworICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG1ha2VV
bmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7CiAgICAgfQogCiAgICAgaWYgKHNuYXBQ
b2ludHMuaXNFbXB0eSgpICYmIG1fc2Nyb2xsU25hcFN0YXRlLT5zbmFwT2Zmc2V0c0ZvckF4aXMo
b3RoZXJTY3JvbGxFdmVudEF4aXMoYXhpcykpLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcAppbmRleCA1MDNmOTdiOTIwMThkYTg3YzI0ODg5MWIyMjY3OWFiYjcwMDViMzAw
Li45NmM4NTEyOTM1YWI5YjY5OGU4OTg1NTE2M2JiNmQyMmFjOWI4MmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENE
TVByaXZhdGU+IENETUZhY3RvcnlDbGVhcktleTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5
U3lzdGUKICNlbHNlCiAgICAgQVNTRVJUKHN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpOwog
I2VuZGlmCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5Pigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVDbGVhcktleT4oKTsKIH0KIAogYm9v
bCBDRE1GYWN0b3J5Q2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggZDQ3MzA0Yzk1YjI2ZWYyMDRm
NWRhNGFkY2JiOGEwODY0ZGUxOGJiMy4uMGI5MTA2NDljYTRhNDdhOTE1ZDU0OGM5ZDk0YWZmZjMz
NTM1OTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC00MCw2ICs0MCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUZhY3RvcnlDbGVhcktleSBmaW5hbCA6IHB1
YmxpYyBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgQ0RNRmFjdG9yeUNsZWFyS2V5JiBzaW5nbGV0b24oKTsKIApAQCAtNTQsNiAr
NTUsNyBAQCBjbGFzcyBDRE1GYWN0b3J5Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9y
eSB7CiB9OwogCiBjbGFzcyBDRE1Qcml2YXRlQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNUHJp
dmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJp
dmF0ZUNsZWFyS2V5KCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUNsZWFyS2V5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9j
b2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQppbmRleCBmNzIwY2ZkMzM0M2Y5
YmFkMzNhNDkxOWE3OGY4NjZmOWQ4NjJhMGFkLi41YTZlYjQwNDM5ZWY1OTA1NzJhN2MyOWVmYzMz
OGQ5MmYyMzljNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIu
bW0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6
Y29udHJvbGxlckRpZENvbm5lY3QoR0NDb250cm9sbGVyICpjb250cm9sbGUKICAgICBMT0coR2Ft
ZXBhZCwgIkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyIGNvbnRyb2xsZXIgJXAgYWRkZWQi
LCBjb250cm9sbGVyKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5l
Y3RlZERldmljZSgpOwotICAgIGF1dG8gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8R2FtZUNv
bnRyb2xsZXJHYW1lcGFkPihjb250cm9sbGVyLCBpbmRleCk7CisgICAgYXV0byBnYW1lcGFkID0g
bWFrZVVuaXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKIAog
ICAgIGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICBtX2dhbWVw
YWRWZWN0b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCmluZGV4IDE1ZjA0YzcwOGU5MDA3YmI0ZGFkZWU1NDM1
YzM1N2YwMmY1MzFjOTMuLmEyNTIzNGZiODc1YTc1MWM2M2MzN2JhNmE1Y2VlN2Q0NTM0ZDVhOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVw
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFk
LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEhJREdh
bWVwYWRFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
SElER2FtZXBhZEVsZW1lbnQoZG91YmxlIHRoZU1pbiwgZG91YmxlIHRoZU1heCwgSU9ISURFbGVt
ZW50UmVmIGVsZW1lbnQpCiAgICAgICAgIDogbWluKHRoZU1pbikKICAgICAgICAgLCBtYXgodGhl
TWF4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElE
R2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFj
L0hJREdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggNTc0MzkxYjVjMTExYTMyYmU5MTI1Y2E2Y2Uw
NjAwZjVkNjM4MjI1Ny4uNmQxNGI2YjIxNjEwYjg2Y2U0YzAwMTNlNTA5MTFiODhmOTVlMWE2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBh
ZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBISURHYW1lcGFk
UHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKICAgICBMT0coR2Ft
ZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRkZWQiLCBkZXZpY2UpOwogCiAg
ICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhJ
REdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFk
PiBnYW1lcGFkID0gbWFrZVVuaXF1ZTxISURHYW1lcGFkPihkZXZpY2UsIGluZGV4KTsKIAogICAg
IGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICBtX2dhbWVwYWRW
ZWN0b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKaW5kZXggYTRhMzBiNTJhYmU0OGFm
ODUwZGM3Yzc0N2EzYmNkZTFkNTFmZGE1Zi4uMGU1OTcyMzIxYjVmNzNmNTcyYmQ3OTY1ODgxMWYw
MDNhOTVlZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZERlY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEtleWVk
RGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnkgewogICAgIHVzaW5nIE5vZGUgPSBWYXJpYW50PFZl
Y3Rvcjx1aW50OF90PiwgYm9vbCwgdWludDMyX3QsIHVpbnQ2NF90LCBpbnQzMl90LCBpbnQ2NF90
LCBmbG9hdCwgZG91YmxlLCBTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Piwgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5Pj47CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2
b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIHN0
ZDo6bWFrZV91bmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CisgICAgdm9p
ZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBtYWtl
VW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQogICAgIE5vZGUmIGdldChj
b25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4gKm1fbWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6
CkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBib29sIHJlYWRTaW1wbGVWYWx1ZShXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyLCBLZXllZERlY29kZXJHZW5lCiAKIHN0ZDo6dW5pcXVl
X3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERl
Y29kZXJHZW5lcmljPihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERl
Y29kZXJHZW5lcmljPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5
ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTg2
LDcgKzg2LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICBLZXllZEVuY29kZXJHZW5lcmljOjpU
eXBlIHR5cGU7CiAgICAgU3RyaW5nIGtleTsKIAotICAgIG1fcm9vdERpY3Rpb25hcnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgbV9yb290RGljdGlvbmFyeSA9IG1ha2VV
bmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobV9yb290
RGljdGlvbmFyeS5nZXQoKSk7CiAKICAgICBib29sIG9rID0gdHJ1ZTsKQEAgLTE0NCw3ICsxNDQs
NyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8qIGN1cnJlbnREaWN0aW5hcnkgPSBtX2RpY3Rp
b25hcnlTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25h
cnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlT
dGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7CiAgICAgICAgICAgICBjdXJyZW50RGlj
dGluYXJ5LT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0RpY3Rpb25hcnkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTU2LDEzICsxNTYsMTMgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNv
ZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAg
IG9rID0gcmVhZFN0cmluZyhkZWNvZGVyLCBrZXkpOwogICAgICAgICAgICAgaWYgKCFvaykKICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFycmF5PigpOworICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlx
dWU8QXJyYXk+KCk7CiAgICAgICAgICAgICBtX2FycmF5U3RhY2suYXBwZW5kKG5ld0FycmF5Lmdl
dCgpKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKS0+YWRkKGtleSwgV1RG
TW92ZShuZXdBcnJheSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCZWdpbkFycmF5RWxlbWVudDogewotICAg
ICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5
PigpOworICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9u
YXJ5PigpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25h
cnkuZ2V0KCkpOwogICAgICAgICAgICAgbV9hcnJheVN0YWNrLmxhc3QoKS0+YXBwZW5kKFdURk1v
dmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRl
eCAyZjg0MTA0NzQ2Mzk1NThmMjk1ZTgxYTUxNzE5YTg3MzRiMzJkNThhLi4yMWNjMWViZTRhOTAx
YTEzYzc0NDAzZGMwMWNmMmZjODE4MTMwMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVy
PiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEtleWVkRW5jb2RlckdlbmVyaWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNv
ZGVyR2VuZXJpYz4oKTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJp
bmcoY29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKaW5kZXggN2FlNjVjNWE4ZDMw
OWUzZGVlZjUzY2U4Y2YxZTMwMjQyNmQyN2MxNC4uMjA4YWY3Yjg0NzllY2FlZjU1MzBjY2M1NTdi
NzM2ZWJhYmNiY2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcApAQCAtNDQsMTQgKzQ0LDE0IEBAIHN0
YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbENhcHR1cmVUaHJlc2hvbGQgeyAxNTBfbXMgfTsKIAog
c3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAog
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQogICAgIDogU2Nyb2xsQW5pbWF0b3Ioc2Nyb2xsYWJsZUFyZWEp
CiAgICAgLCBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lcigqdGhpcywgJlNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyRmlyZWQpCiB7Ci0g
ICAgbV9raW5ldGljQW5pbWF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRpb25L
aW5ldGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7
CisgICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5l
dGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAj
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKICAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9z
aXRpb24pOwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5z
dXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc21vb3RoQW5pbWF0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBv
c2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgbV9zbW9vdGhBbmlt
YXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJl
YSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICAg
ICAgICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKaW5k
ZXggZTdkZDE5MTQwNDE3MTk2OGY5MGQ2ZmVhMzM1NGUxNGNlZjZmNTU2Ny4uMzYxZTlkZjMyNDVi
ZTU2NWIwZTJhNDFkZjE4YjI2ZmZiYzcxOWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNv
ZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdsaWI+KGRhdGEsIHNpemUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdsaWI+KGRhdGEsIHNpemUpOwogfQogCiBL
ZXllZERlY29kZXJHbGliOjpLZXllZERlY29kZXJHbGliKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHAKaW5kZXggNzQwNGJjYmQ0NDlhYTQ5MjFiOGNlMmI3ZTAxODQ0OTUwMTA2ZjY4
MC4uNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5j
b2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxLZXllZEVuY29kZXJHbGliPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5j
b2RlckdsaWI+KCk7CiB9CiAKIEtleWVkRW5jb2RlckdsaWI6OktleWVkRW5jb2RlckdsaWIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmlu
ZGV4IGYxYzkwZTU5ODg5M2FkYTgzNDc5ZmM3YjM4M2E5MGE1MzViZjJhOTkuLmIyYmQ0N2NiMTYx
NGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpjbGVhclRpbWVyKCkKIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIo
U2Vjb25kcyBkZWxheSkKIHsKICAgICBBU1NFUlQoIW1fZnJhbWVUaW1lcik7Ci0gICAgbV9mcmFt
ZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2
YW5jZUFuaW1hdGlvbik7CisgICAgbV9mcmFtZVRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRo
aXMsICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CiAgICAgbV9mcmFtZVRpbWVyLT5z
dGFydE9uZVNob3QoZGVsYXkpOwogfQogCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6cmVzZXRBbmltYXRpb24oKQogdm9pZCBCaXRtYXBJbWFnZTo6ZGVjb2RlKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9kZWNvZGluZ0NhbGxiYWNr
cykKLSAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOworICAgICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzID0g
bWFrZVVuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+KCk7CiAKICAgICBtX2RlY29k
aW5nQ2FsbGJhY2tzLT5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAppbmRleCAwZDM1NTYxODk3MGZiMjc3ZjcyZTc4OTkwZTNmNGYyYTIxNmZiYzY5Li4zNTNm
Y2E2NjAxMzI2NGIwMjQ2MmE1NzEyMjRkMDVhMTgxZDk2ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgVGV4dExheW91dCB7CiAgICAgVGV4dExheW91dChS
ZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgeFBvcykKICAg
ICAgICAgOiBtX2ZvbnQoZm9udCkKICAgICAgICAgLCBtX3J1bihjb25zdHJ1Y3RUZXh0UnVuKHRl
eHQsIHhQb3MpKQotICAgICAgICAsIG1fY29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbXBs
ZXhUZXh0Q29udHJvbGxlcj4obV9mb250LCBtX3J1biwgdHJ1ZSkpCisgICAgICAgICwgbV9jb250
cm9sbGVyKG1ha2VVbmlxdWU8Q29tcGxleFRleHRDb250cm9sbGVyPihtX2ZvbnQsIG1fcnVuLCB0
cnVlKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFBvaW50LmgKaW5kZXggNzIwNDUzZDlmMDQ2ZDc5ZjQ4YTA5YjgxYWY3MDAwZjRkZTNi
ZTAyNS4uY2VmZDhkNDIyNDRkMDZmY2I4MjRiZTVlM2I3MzQxOWNkNDk4YTRlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaApAQCAtNjMsNiArNjMs
NyBAQCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CiAKIGNsYXNzIEZsb2F0UG9pbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZsb2F0UG9pbnQo
KSB7IH0KICAgICBGbG9hdFBvaW50KGZsb2F0IHgsIGZsb2F0IHkpIDogbV94KHgpLCBtX3koeSkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE4NGI0
NGIwN2E0MTIyMTZiOWVjNTk4NDIyZjA3ODdmMGU2YzdhZWIuLmUwYjQ5ZjI0N2MyMDA5YmRkNWYx
ZDBjOGViYTdhZDZjN2ViOGNiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZv
ckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikgY29uc3QKIGF1dG8gRm9udDo6ZW5zdXJlRGVy
aXZlZEZvbnREYXRhKCkgY29uc3QgLT4gRGVyaXZlZEZvbnRzJgogewogICAgIGlmICghbV9kZXJp
dmVkRm9udERhdGEpCi0gICAgICAgIG1fZGVyaXZlZEZvbnREYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxEZXJpdmVkRm9udHM+KCk7CisgICAgICAgIG1fZGVyaXZlZEZvbnREYXRhID0gbWFrZVVuaXF1
ZTxEZXJpdmVkRm9udHM+KCk7CiAgICAgcmV0dXJuICptX2Rlcml2ZWRGb250RGF0YTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDJlNThiZDY5ZWJiNTM5
MWUwMzZkMjhjMjcwMmMxZjQ1MDUwOGIzMTIuLjU0NGIwYjcxMThhYjJmOTA4MDc0OWU0NDFlNTE0
OWYwNTE4ZjJlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAg
LTI2OSw5ICsyNjksNyBAQCBjbGFzcyBGb250IDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udD4gewog
I2VuZGlmCiAKICAgICBzdHJ1Y3QgRGVyaXZlZEZvbnRzIHsKLSNpZiAhQ09NUElMRVIoTVNWQykK
LSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0jZW5kaWYKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKIAogICAgICAgICBSZWZQdHI8
Rm9udD4gc21hbGxDYXBzRm9udDsKQEAgLTM0NSw3ICszNDMsNyBAQCBBTFdBWVNfSU5MSU5FIEZs
b2F0UmVjdCBGb250Ojpib3VuZHNGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIAogICAgIGJv
dW5kcyA9IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoZ2x5cGgpOwogICAgIGlmICghbV9nbHlwaFRv
Qm91bmRzTWFwKQotICAgICAgICBtX2dseXBoVG9Cb3VuZHNNYXAgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOworICAgICAgICBtX2dseXBoVG9Cb3VuZHNN
YXAgPSBtYWtlVW5pcXVlPEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOwogICAgIG1fZ2x5
cGhUb0JvdW5kc01hcC0+c2V0TWV0cmljc0ZvckdseXBoKGdseXBoLCBib3VuZHMpOwogICAgIHJl
dHVybiBib3VuZHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcAppbmRleCAwYTYyYTI3NWJjNjkyZWYzOTkxMTQwZTAyOGY1ODAwNDIxZDBjNzEx
Li4zNzA5YjQxZWIyYjdiZDBiZjdiMTAyYWM1ZGJlZmUyZjc3NzNhZjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTI0NCw3ICsyNDQs
NyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAgICAgICAgICAgIGl0ID0gZm9udFBs
YXRmb3JtRGF0YUNhY2hlKCkuZmluZChrZXkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChpdCAh
PSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5lbmQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGZv
bnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKQotICAgICAgICAgICAgICAgICAgICBpdC0+
dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KCpmb250UGxhdGZvcm1E
YXRhRm9yQWx0ZXJuYXRlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGl0LT52YWx1ZSA9IG1h
a2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVO
YW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA3Mjc0ZGIwZGIzMmIz
YjQxYjNlMGUxYjFlZDBmYjJhZWE4YjM2YTNiLi42NDgxOGY0YjUxNTVkNDJiZmFjODFiNjFmNGI1
ZjljZGVhNTQ1MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIFJlZjxGb250Q2FzY2Fk
ZUZvbnRzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlw
dGkKICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZvbnRzLmdldCgp
OwogCiAgICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAg
IG5ld0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KFdURk1v
dmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkp
OworICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KFdURk1v
dmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkp
OwogICAgIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBnbHlwaHMgPSBuZXdFbnRyeS0+Zm9udHMuZ2V0
KCk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5yZWZlcmVuY2VkUHJ1bmVJbnRlcnZh
bCA9IDUwOwpAQCAtMzI2LDkgKzMyNiw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAg
aWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gZGlzcGxheUxp
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1h
a2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwogICAgIEdyYXBoaWNzQ29udGV4
dCByZWNvcmRpbmdDb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4
dCkgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZs
b2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3Qs
IGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICB9
KTsKICAgICAKICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAK
aW5kZXggZGI3NDMwMmU5ZGFhNGViNTJjMGNlMDgxZmQ1NjA1Mjc5NTc4ZmJmNC4uMTJhYzgzN2Zj
ZDI0NjVmOWY4MWRlYjA2ODdhYTc3NmQ1ZWEwNjQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBGb250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlw
aERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGEKIHsKICAgICBBU1NFUlQoIWdseXBoRGF0YUZv
ckNoYXJhY3RlcihjaGFyYWN0ZXIpLmdseXBoKTsKICAgICBpZiAoIW1fbWl4ZWRGb250KSB7Ci0g
ICAgICAgIG1fbWl4ZWRGb250ID0gc3RkOjptYWtlX3VuaXF1ZTxNaXhlZEZvbnRHbHlwaFBhZ2U+
KG1fc2luZ2xlRm9udC5nZXQoKSk7CisgICAgICAgIG1fbWl4ZWRGb250ID0gbWFrZVVuaXF1ZTxN
aXhlZEZvbnRHbHlwaFBhZ2U+KG1fc2luZ2xlRm9udC5nZXQoKSk7CiAgICAgICAgIG1fc2luZ2xl
Rm9udCA9IG51bGxwdHI7CiAgICAgfQogICAgIG1fbWl4ZWRGb250LT5zZXRHbHlwaERhdGFGb3JD
aGFyYWN0ZXIoY2hhcmFjdGVyLCBnbHlwaERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAppbmRleCAyNTllOTc1MzNjYWVkY2Zj
MTQ1ZmY3YWI0MjhlYTE2OWY2NGIxNTk0Li43OWUyZjUzODhjNDZlNTg5MjMwMTYxYzQ3NDUyNTQx
OTI0N2U4MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaE1ldHJpY3NNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaE1ldHJpY3NNYXAuaApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdGVtcGxhdGU8Y2xhc3MgVD4g
dHlwZW5hbWUgR2x5cGhNZXRyaWNzTWFwPFQ+OjpHbHlwaE1ldHJpY3NQYWdlJiBHbHlwaE1ldHJp
Y3NNYXAKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZXMpCi0gICAgICAgIG1fcGFnZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFn
ZT4+PigpOworICAgICAgICBtX3BhZ2VzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPGludCwgc3RkOjp1
bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4oKTsKIAogICAgIGF1dG8mIHBhZ2UgPSBtX3Bh
Z2VzLT5lbnN1cmUocGFnZU51bWJlciwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4odW5rbm93bk1ldHJpY3MoKSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAqcGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDA4Y2ZiN2Qx
ZTJkYjk4ZjdhZGM4M2JiYzMzYjgxYjlhZjEyMWIwYy4uNDQ3ZDdlM2UzNTQ3NjJlODBiOGYyN2E5
NTI2MjMyMjc5YjVmOTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU1Nyw2ICs1NTcsNyBAQCBjbGFzcyBHcmFwaGlj
c0NvbnRleHQgewogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cygpIGNvbnN0Owog
CiAgICAgY2xhc3MgV2luZG93c0JpdG1hcCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXaW5kb3dzQml0bWFwKTsKICAgICBw
dWJsaWM6CiAgICAgICAgIFdpbmRvd3NCaXRtYXAoSERDLCBjb25zdCBJbnRTaXplJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oCmluZGV4IDFiNDIyODZkZGY0NjVjMGUyYjEyNGQ4YWZkZjBmN2NkNjQ3
N2NiYjcuLmUzM2Y4ZmJlNzM4OTJlMzRiOGRlZjgzNmQ0NmY1YzcwYzc5YzYxZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEJpdG1hcFRleHR1cmVHTDsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
U3R5bGUpOwogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRl
eCAwYmFkNGU3MDYzNDIxOTk4Njg5NDQ5MmRmZTZmNjFkMzE3ODgxOWQzLi5iODczMTk0ZWUyNDYw
MWZlNGUwNzE0N2FhNzFlYTMwNTg3YTg0YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC0zMCw2ICszMCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdy
YXBoaWNzQ29udGV4dEltcGwpOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dEltcGwoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuY3BwCmluZGV4IDk0YWFjMWRmODM1NmJkYjEwZGY3ZDA4NmZhY2UyNmMxZTM3
MTgzMjYuLjZjZDAwYzI2NTcwZDlkYjNiOWZhYTdlMjAyM2FmMWE1ZTdlNjNhMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyOjpzdXBwb3J0c0NvbnRlbnRzVGls
aW5nKCkKICNlbmRpZgogCiAvLyBTaW5nbGV0b24gY2xpZW50IHVzZWQgZm9yIGxheWVycyBvbiB3
aGljaCBjbGVhckNsaWVudCBoYXMgYmVlbiBjYWxsZWQuCi1jbGFzcyBFbXB0eUdyYXBoaWNzTGF5
ZXJDbGllbnQgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CitjbGFzcyBFbXB0eUdyYXBo
aWNzTGF5ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEVtcHR5R3JhcGhp
Y3NMYXllckNsaWVudCYgc2luZ2xldG9uKCk7CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJp
eCkKICAgICBpZiAobV90cmFuc2Zvcm0pCiAgICAgICAgICptX3RyYW5zZm9ybSA9IG1hdHJpeDsK
ICAgICBlbHNlCi0gICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOwogfQogCiBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgR3JhcGhpY3NMYXllcjo6Y2hpbGRyZW5UcmFuc2Zvcm0oKSBjb25zdApAQCAtMzU2
LDcgKzM1Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKICAgICBpZiAobV9jaGlsZHJlblRyYW5z
Zm9ybSkKICAgICAgICAgKm1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQot
ICAgICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAgbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NM
YXllcjo6c2V0TWFza0xheWVyKFJlZlB0cjxHcmFwaGljc0xheWVyPiYmIGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDAw
OWQ0ODY4OTVkNTY4NjI1NDAxMWRmNTYwMGE3MjExMjQzMGU2MmYuLjdhMWZlYWFjNzllNzhiYTg4
ZmNhZGNiODVlMzI5OWZkNzlhMDA0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBGbG9h
dEFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7
CiAgICAgfQogCiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CkBA
IC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMg
QW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKGNvbnN0IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhl
cikKQEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBGaWx0ZXJBbmltYXRpb25WYWx1ZSA6IHB1Ymxp
YyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+
IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAgICAgRmlsdGVy
QW5pbWF0aW9uVmFsdWUoY29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmIG90aGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDhlY2YzM2Y4OThiNzQ0
OTExZjcwNWExNDlmZjc4OGI2N2I2ZDk0ZWYuLjM5OTk2NzJiOWY1ODkzMjg2Y2YzMmRiMWNjNmI4
MGEzMzE4MmFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpYwogdm9pZCBJbWFn
ZTo6c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSgpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlv
blN0YXJ0VGltZXIpCi0gICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKTsKKyAgICAgICAgbV9h
bmltYXRpb25TdGFydFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3Rh
cnRBbmltYXRpb24pOwogICAgIGlmIChtX2FuaW1hdGlvblN0YXJ0VGltZXItPmlzQWN0aXZlKCkp
CiAgICAgICAgIHJldHVybjsKICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXItPnN0YXJ0T25lU2hv
dCgwX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVn
YWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5
Q0RNU2Vzc2lvbi5oCmluZGV4IGJlNzY3NjBmOGUzNTY1ZDQyNjcyYjAwNWE5NmRjZGI3ZmE0YjJk
NjkuLjI1ZTc5YTZkYzBhNWIyMTkzYTcyYTIyN2FhY2ExNzczYTdlM2MyOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKQEAg
LTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGVnYWN5Q0RNU2Vz
c2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFs
IHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlvblVSTCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CmluZGV4IDc1N2YwOTU2N2RjNWRmZGY1YmUwMjYzOTYzOWQxZWZlYzcxOGMwZGIuLmFiZTg2OTQx
OTRmZjdjMTc1MTAwYjY5ODgwNGExMjQwYmQ2MmM4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBj
bGFzcyBOdWxsTWVkaWFQbGF5ZXJQcml2YXRlIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZSB7CiAKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIDA7IH0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBi
dWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
YnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsgfQogCiAgICAgZG91YmxlIHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRp
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxpdmVVcGRhdGVJbnRl
cnZhbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBSZWY8
TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVhdGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVu
dCkKIE1lZGlhUGxheWVyOjpNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQog
ICAgIDogbV9jbGllbnQoJmNsaWVudCkKICAgICAsIG1fcmVsb2FkVGltZXIoKnRoaXMsICZNZWRp
YVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5p
cXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1ha2VV
bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKQEAgLTUxMSw3ICs1
MTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBN
ZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAjZW5kaWYKICAgICAgICAgbV9wcml2YXRlLT5s
b2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX3ByaXZhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOworICAgICAgICBt
X3ByaXZhdGUgPSBtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRoaXMpOwogICAg
ICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQodGhpcyk7CiAgICAgICAgIGNs
aWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQodGhpcyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaAppbmRleCAwMGQ4NWE0OTk2NDJiM2Y1MjM3YjMwYmZmNWY0ZTZiNDI5MTMwZWNkLi4xZDJm
YzAwOTIwNGE4YzAyNTU0MWIyYTJkN2M1ZjBkMGJlNWM5OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTI5
LDcgKzEyOSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgdmly
dHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHNl
ZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2FibGUoKSA9PSBNZWRpYVRp
bWU6Onplcm9UaW1lKCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKSA6
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJs
ZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhNZWRp
YVRpbWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSA/IG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1l
ZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmlydHVh
bCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVh
bCBNZWRpYVRpbWUgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUobWF4VGltZVNlZWthYmxlKCkpOyB9CiAgICAgdmlydHVhbCBk
b3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAppbmRleCAzZTY4
ODA1NWJkY2MwYjEwZTQxNjBjZjE0MGQ0ZmFjZTkyMzIwYTY1Li41YWQ5MzM0OWJmYjQwZGE0ZmYz
MDhhZGE5ODQ5N2ZjMzc1ZTEwOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApAQCAtODksNyArODksNyBAQCBGbG9hdFBvaW50
R3JhcGg6Ok5vZGUqIEZsb2F0UG9pbnRHcmFwaDo6ZmluZE9yQ3JlYXRlTm9kZShGbG9hdFBvaW50
IHBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHRlc3ROb2RlLmdldCgpOwogICAgIH0KIAotICAg
IG1fYWxsTm9kZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRQb2ludEdyYXBoOjpOb2Rl
Pihwb2ludCkpOworICAgIG1fYWxsTm9kZXMuYXBwZW5kKG1ha2VVbmlxdWU8RmxvYXRQb2ludEdy
YXBoOjpOb2RlPihwb2ludCkpOwogICAgIHJldHVybiBtX2FsbE5vZGVzLmxhc3QoKS5nZXQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKaW5kZXgg
OWRjZWU4NzYxNjI1YzAxNDg4YjRkOTBkMWFmMjJlMzU0MzVkNGE1ZS4uNmE3MDFjMWExMjg5Nzlk
NGM5NDhiMWE3YmFiNTY4ZjEwMjQ3Y2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uY3BwCkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBSZWdpb246OnNldFNo
YXBlKFNoYXBlJiYgc2hhcGUpCiAgICAgfQogCiAgICAgaWYgKCFtX3NoYXBlKQotICAgICAgICBt
X3NoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOworICAgICAg
ICBtX3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4oV1RGTW92ZShzaGFwZSkpOwogICAgIGVsc2UK
ICAgICAgICAgKm1fc2hhcGUgPSBXVEZNb3ZlKHNoYXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggNzk2MzNmZGI2YWRmMzRmZmZlZThmODI2NzQ4
M2I4Y2ZmNWNlMWYzYy4uYmMzOWMzMDAwMGVhOGI2YjVhOWU2MGNmMmJjNWFlMTg2NjY0YjZjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKQEAgLTkxLDYgKzkx
LDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICB9OwogCiAgICAgY2xhc3MgU2hhcGUgeworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFNoYXBlKCkg
PSBkZWZhdWx0OwogICAgICAgICBTaGFwZShjb25zdCBJbnRSZWN0Jik7CkBAIC0xNDgsNyArMTQ5
LDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTaGFwZSYsIGNvbnN0IFNoYXBlJik7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IHN0ZDo6bWFrZV91bmlx
dWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hh
cGU+IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBtYWtlVW5pcXVlPFNoYXBl
PigqbV9zaGFwZSkgOiBudWxscHRyOyB9CiAgICAgdm9pZCBzZXRTaGFwZShTaGFwZSYmKTsKIAog
ICAgIEludFJlY3QgbV9ib3VuZHM7CkBAIC0yODksNyArMjkwLDcgQEAgT3B0aW9uYWw8UmVnaW9u
PiBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBkZWNvZGVyID4+IHNo
YXBlOwogICAgICAgICBpZiAoIXNoYXBlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZN
b3ZlKCpzaGFwZSkpOworICAgICAgICByZWdpb24ubV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hhcGU+
KFdURk1vdmUoKnNoYXBlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgcmVnaW9uIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNl
bnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggMWU0ZTdmYWMzNmM3YzMwYTY1NmYxZWZkMDBhYWNlNmQ0
Yzk1Y2VkYS4uNjkzOWY5MTdhZTZmYWIxM2VjMWM5MWQ0YWE4MTU1NjZhOTE3MGRkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFj
a1JlcHJlc2VudGF0aW9uLmNwcApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBOdWxsVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24gOiBwdWJsaWMgVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gewogCiBzdGQ6
OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IFRleHRUcmFja1JlcHJlc2VudGF0
aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGllbnQmKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2Np
dHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEu
aAppbmRleCA3YWViNzU5YjM0YjE4YTFlODQ2ODNmMjljNjE2YTZjZGIwMjU3NGQ4Li42YTA2Y2M2
ZWJhMzRiOTU5ZDJmMTg2MDIyOWUxZjJmMzhmZjMxOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaApAQCAtNjUsNiArNjUsNyBAQCBzdHJ1
Y3QgVmVsb2NpdHlEYXRhICB7CiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBWZWxvY2l0eURhdGEmKTsKIAogY2xhc3MgSGlzdG9yaWNhbFZl
bG9jaXR5RGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
SGlzdG9yaWNhbFZlbG9jaXR5RGF0YSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHQzREFOR0xFLmNwcAppbmRleCA3N2EzZTE4YzFjNmMyZTI3ZGQ2M2FlMjk2ZjZlYzlhMWVhMmZh
ZTFmLi42MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1YjE2Y2E0ZTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQz
REFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHQzREFOR0xFLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMzRCYg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNp
b25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMz
REFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMg
PSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkp
OwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAppbmRleCBhOWVjZDMyMTM2ZGE4NzcwMmY0NzhhZmNk
OGFjYzhlYjk3YzIzOTQwLi45OWRkZGQ4Zjg1MDI3MzAzYmI4YTc2M2VjYWMyYjg2OTg4MmZhOThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTZWxlY3Rpb25P
cHRpb25BVkZPYmpDOwogCiBjbGFzcyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRyYWNrKik7CiAgICAgZXhwbGljaXQgQVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbChBVkFzc2V0VHJhY2sqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCA1Y2Q3NzcyYWMyZWUxY2VhOTAx
MGU4MzM3MWVhNmFhZWY3ZjA2OTU4Li42YjNjOTIyZTZhZWJlNTkyMGFlNjVlNTdhZjA1ZWRlNGFk
MDM3NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tCkBAIC0zMTMsMTIgKzMxMywxMiBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcmVwYXJlKENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogewog
ICAgIEFTU0VSVChtYXhGcmFtZXMgPj0gMCk7CiAKLSAgICBtX3RhcERlc2NyaXB0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpwcm9jZXNzaW5nRm9y
bWF0KTsKKyAgICBtX3RhcERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zvcm1hdCk7CiAg
ICAgaW50IG51bWJlck9mQ2hhbm5lbHMgPSBwcm9jZXNzaW5nRm9ybWF0LT5tQ2hhbm5lbHNQZXJG
cmFtZTsKICAgICBkb3VibGUgc2FtcGxlUmF0ZSA9IHByb2Nlc3NpbmdGb3JtYXQtPm1TYW1wbGVS
YXRlOwogICAgIEFTU0VSVChzYW1wbGVSYXRlID49IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlw
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOwor
ICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CiAgICAgbV9vdXRwdXREZXNjcmlwdGlv
bi0+bVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1G
b3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKICAgICBtX291dHB1dERlc2NyaXB0aW9u
LT5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkOwpAQCAt
MzM4LDcgKzMzOCw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUo
Q01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0cmVhCiAgICAgLy8gTWFrZSB0aGUg
cmluZ2J1ZmZlciBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgYXQgbGVhc3QgdHdvIGNhbGxiYWNrcyB3
b3J0aCBvZiBhdWRpbywgb3IgMXMsIHdoaWNoZXZlciBpcyBsYXJnZXIuCiAgICAgc2l6ZV90IGNh
cGFjaXR5ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8c2l6ZV90PigyICogbWF4RnJhbWVzKSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihrUmluZ0J1ZmZlckR1cmF0aW9uICogc2FtcGxlUmF0ZSkpOwogCi0g
ICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAg
bV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAgICAgbV9yaW5nQnVm
ZmVyLT5hbGxvY2F0ZShDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnByb2Nlc3NpbmdGb3JtYXQp
LCBjYXBhY2l0eSk7CiAKICAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJpYWJsZS1sZW5n
dGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMgbmV3KCkgb3Bl
cmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDM2
MWE5OTJmMGM0NjUwY2YyYjk2MjhhNjQyZTk3YjVkYmEwZTJhM2MuLjRmYzY3ODdkZDhkOTA3Y2Fk
NmEyNzdmMzliMWVkMzJlZDY3OWE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2
YXRlPiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcm
CiAgICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc+KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggODkxOGU4MGUwYzM5MGQ3ZThkYWNhMTkwMzk0Nzlh
MGQwZjY5NWFkOC4uNTM4Njk2OWY5NDk3NmYzODM2ODAxODc0MWJhZmQxMjU1MWUyOGI4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTM1LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEZvdXJDQzsKIAogY2xhc3MgQ0RNRmFjdG9yeUZh
aXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5RmFpclBsYXlT
dHJlYW1pbmcmIHNpbmdsZXRvbigpOwogCkBAIC00OSw2ICs1MCw3IEBAIGNsYXNzIENETUZhY3Rv
cnlGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAKIGNs
YXNzIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmcoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5oCmluZGV4IDRhNTBlYjQxYTU4MzY4M2Y2NmE2NzYyMjk1NDZjNTgwMWIyMGI1ODguLmQ4
MWJjYTM1NDkwMzkxOGExYmRhMGFkZGQ5NThkNTk0M2Y3MDFiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMzcsNiArMzcsNyBA
QCBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOwog
CiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDIDogcHVibGljIENETVByaXZhdGVJ
bnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTGVnYWN5Q0RNKiBjZG0pCiAgICAg
ICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQppbmRleCAyY2MwOGE5YTNiNTFjYmY3YWIxOTc0MjAyYTk4YjE2OWRi
NDNjMTAxLi4wY2QwMTI5YTNjZDllYWY4NjNhZDQ3ODk4Mzg1MDMxZDhiNzZlZjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAt
MTQ3LDEwICsxNDcsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24oTGUKICNlbmRpZgogICAgIAog
ICAgIGlmIChzaG91bGRVc2VBVkNvbnRlbnRLZXlTZXNzaW9uICYmIENETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKQotICAgICAgICBzZXNzaW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJz
LnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBj
bGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1l
dGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBjbGllbnQpOwogICAgIGVsc2UKICNpZiBIQVZF
KEFWU1RSRUFNU0VTU0lPTikKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9j
b2xzKSwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29s
cyksICp0aGlzLCBjbGllbnQpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaApp
bmRleCBlNDYwMTQ4MzA1Y2VlZDFiNTY0ODQxOTk2Y2I5ZmMzNGNkYzNhYjUyLi4xNDdjMzc5ZjEy
NzA2ODJlNTVmZDIxNWNlMjNhMzllYTEyNDk1YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3No
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVi
bGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBzaSI7IH0K
IApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVh
bWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAgICAgRm91ckNDIG1fc2NoZW1lOwog
fTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0
SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJm
a3JpIjsgfQogCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CiAgICAg
S2V5SUQgbV9rZXlJRDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IGZpbmFsIDogcHVibGljIElTT0Jv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJm
a2FpIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1
aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCBmaW5hbCA6IHB1YmxpYyBJU09C
b3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAi
ZmtjeCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQpAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8
dWludDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlT
dHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCBmaW5hbCA6IHB1
YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7
IHJldHVybiAiZmt2bCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4gdmVyc2lvbnMoKSBj
b25zdCB7IHJldHVybiBtX3ZlcnNpb25zOyB9CkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggOiBwdWJsaWMg
SVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV92ZXJzaW9uczsKIH07CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCA6IHB1YmxpYyBJ
U09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1
ZXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJD
QyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNrIjsgfQogCkBAIC0xMDYsNyArMTA2LDcgQEAg
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IDog
cHVibGljIElTT0JveCB7CiAgICAgT3B0aW9uYWw8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJz
aW9uTGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggZmluYWwgOiBwdWJs
aWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyBy
ZXR1cm4gImZwc2QiOyB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRhQm94IDogcHVibGljIElTT0JveCB7CiAgICAg
VmVjdG9yPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveD4gbV9yZXF1ZXN0czsKIH07
CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveCA6IHB1
YmxpYyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggeworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94IGZpbmFsIDogcHVibGljIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZmFpclBsYXlTeXN0ZW1JRCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDg1
N2YzMWYyNzcyZjQwODFmYmE2MzhmODEwYzExNDk0Mjg1OGI5NGIuLjU5Y2Y4YmEyMTMxNmIzMDdj
MDUwMjNlZDU2ZDliMzlkMjU2MTdmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpidWZmZXJlZCgpIGMKICAgICBpZiAoIW1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcykK
ICAgICAgICAgbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzID0gcGxhdGZvcm1CdWZmZXJlZFRpbWVS
YW5nZXMoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsKIH0KIAogTWVkaWFU
aW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bWF4TWVkaWFUaW1lU2Vla2FibGUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwCmluZGV4IDM5NWNlNzgyZThjNTgwNDU5NjE2MjQ2OTgwZjMzZWFkZjAzYjc4YjIuLjVmNWI2
ZjY5NTJiNDkzYTk4ODdiYWZjN2YzMGI3YmVlNzMzNDE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6fldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMoKSA9IGRl
ZmF1bHQ7CiBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyJiBXZWJNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcigpCiB7CiAgICAgaWYgKCFtX3RhcmdldFBpY2tl
cikKLSAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKKyAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBtYWtl
VW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKIAogICAgIHJldHVy
biAqbV90YXJnZXRQaWNrZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKaW5kZXggNzYwOGEwMTcyNjNiMzA0NDRjYWJlNTM1ZmRh
NDRjOTlmZmFmMTFmMi4uZDYxNjdiODc2ODk5OWRjMDQ5NDc1MzgyMGQ5YTJiYzdiZWQwNjRkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaApA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGIGZp
bmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25DRihNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRiYgcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCmluZGV4IGFmMGE3Y2M3N2JmMjkyY2RmZDY2YWJjNmU3ZjYzYTUwOTAw
YWFkNjcuLjNiNzBlNzY2MzllNTk0MGFmMWYyYjFkNWJmMjY3M2FlMzJkZWNhMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcApAQCAtOTgsNiArOTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgUEFMOwogY2xhc3Mg
TGF5ZXJDbGllbnQ7CiAKIGNsYXNzIEFWRldyYXBwZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YqKTsKICAgICB+QVZGV3JhcHBlcigpOwpAQCAtMjEzLDYgKzIxNCw3IEBAIGNsYXNz
IEFWRldyYXBwZXIgewogdWludHB0cl90IEFWRldyYXBwZXI6OnNfbmV4dEFWRldyYXBwZXJPYmpl
Y3RJRDsKIAogY2xhc3MgTGF5ZXJDbGllbnQgOiBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMYXllckNsaWVu
dChBVkZXcmFwcGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KICAgICB2aXJ0dWFs
IH5MYXllckNsaWVudCgpIHsgbV9wYXJlbnQgPSAwOyB9CkBAIC0zNDMsNyArMzQ1LDcgQEAgc3Rh
dGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlh
RW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAg
ICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0sCisg
ICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAogICAgICAg
ICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNL
ZXlTeXN0ZW0pOwogfQogCkBAIC02NzIsNyArNjc0LDcgQEAgc3RhdGljIGJvb2wgdGltZVJhbmdl
SXNWYWxpZEFuZE5vdEVtcHR5KENNVGltZSBzdGFydCwgQ01UaW1lIGR1cmF0aW9uKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8g
dGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAg
IGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAg
ICAgaWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuIHRpbWVS
YW5nZXM7CkBAIC0xMTM3LDcgKzExMzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vz
c2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3NpbwogICAg
IGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25B
VkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CiAKICNlbGlmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQpAQCAtMTY0MSw2ICsxNjQzLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpw
ZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUs
IHZvaWQKIH0KIAogc3RydWN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9w
cm9wZXJ0eU5hbWU7CiAgICAgdm9pZCogbV9jb250ZXh0OwogCkBAIC0xNzA4LDcgKzE3MTEsNyBA
QCB2b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQwogICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6Om5v
dGlmaWNhdGlvbkNhbGxiYWNrKGlmPSVkKSAlcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihvYnNlcnZlciksIG5vdGlmaWNhdGlvbk5hbWUpOwogI2VuZGlmCiAKLSAgICBhdXRvIG5vdGlm
aWNhdGlvbkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4o
cHJvcGVydHlOYW1lLCBvYnNlcnZlcik7CisgICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gbWFr
ZVVuaXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIp
OwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBub3Rp
ZmljYXRpb25EYXRhLnJlbGVhc2UoKSwgcHJvY2Vzc05vdGlmaWNhdGlvbik7CiB9CkBAIC0xNzg1
LDYgKzE3ODgsNyBAQCB2b2lkIEFWRldyYXBwZXI6OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1l
JiB0aW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVG9sZQogCiAjaWYgSEFWRShBVkZPVU5E
QVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAmJiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxF
X09VVFBVVF9TVVBQT1JUKQogc3RydWN0IExlZ2libGVPdXRwdXREYXRhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fYXR0
cmlidXRlZFN0cmluZ3M7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fc2FtcGxlczsKICAg
ICBNZWRpYVRpbWUgbV90aW1lOwpAQCAtMTgzMyw3ICsxODM3LDcgQEAgdm9pZCBBVkZXcmFwcGVy
OjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdp
YmxlT3V0cHUKIAogICAgIEFTU0VSVChsZWdpYmxlT3V0cHV0ID09IHNlbGYtPm1fbGVnaWJsZU91
dHB1dCk7CiAKLSAgICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxM
ZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMs
IFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0KTsKKyAgICBhdXRvIGxlZ2libGVP
dXRwdXREYXRhID0gbWFrZVVuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmlu
Z3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250
ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
bGVnaWJsZU91dHB1dERhdGEucmVsZWFzZSgpLCBwcm9jZXNzQ3VlKTsKIH0KQEAgLTE4NDEsNiAr
MTg0NSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNv
bnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1CiAKICNpZiBIQVZFKEFWRk9VTkRBVElP
Tl9MT0FERVJfREVMRUdBVEUpCiBzdHJ1Y3QgTG9hZFJlcXVlc3REYXRhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3RSZWY+IG1fcmVxdWVzdDsKICAgICB2b2lkKiBtX2NvbnRleHQ7CiAKQEAg
LTE5MjYsNyArMTkzMSw3IEBAIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91
bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzCiAKICAgICBMT0coTWVk
aWEsICJBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1
ZXN0ZWRSZXNvdXJjZSglcCkiLCBzZWxmKTsKIAotICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0
KTsKKyAgICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IG1ha2VVbmlxdWU8TG9hZFJlcXVlc3REYXRh
Pihsb2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIGxvYWRSZXF1ZXN0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NT
aG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2UpOwogCkBAIC0xOTUzLDcgKzE5NTgsNyBAQCBQ
bGF0Zm9ybUxheWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAvLyBDcmVhdGUgYSBQbGF0Zm9ybUNBTGF5ZXIgc28gd2UgY2FuIHJlc2l6ZSB0
aGUgdmlkZW8gbGF5ZXIgdG8gbWF0Y2ggdGhlIGVsZW1lbnQgc2l6ZS4KLSAgICBtX2xheWVyQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CisgICAgbV9sYXllckNs
aWVudCA9IG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOwogICAgIGlmICghbV9sYXllckNs
aWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMTRhZjFhMjdmMjZiZDFhZDYwMjg2
MDRhNTc1MmYwZGY5YThkZjUyLi43ZGUxNGMyNTcxZjdkMzhlZWNiYjM0OGZkYTNjNzRhNDNkZWI4
MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDLm1tCkBAIC0zMywxMyArMzMsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJ
dGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpOwogfQogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1faW1w
bChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCisg
ICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24p
KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNTksNyArNTksNyBA
QCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhB
VlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCBBVlBsYXllckl0ZW1UcmFj
ayogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogfQogCiBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJh
Y2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygp
OwogfQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFz
c2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpOwogfQogCkBAIC04Nyw3ICs4Nyw3IEBAIEFWQXNzZXRUcmFjayogQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjphc3NldFRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYg
b3B0aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBlYzBkMGVkZGJmNzNiZWVkYTY3
MTdiN2E1MThjNzMyMTI2MDk1YWUyLi5kZjUyMjZhNGVhMDM2ZTU2ZmEyNTM5YTYyNzYyYTIzOGFl
NzBlMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNr
LCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6
bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9p
bXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwg
bV9wYXJlbnQocGFyZW50KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwpAQCAt
NTIsNyArNTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpy
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAg
bV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
ayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0
cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIy
YWFmZWM3YjgzNDI3YjgxMzBhN2MwNDNmOGY2NzIwODM0Y2NhNDcuLjVkOGUyNTA3NDcwYmM3YTQ5
OTk1NWM5ODFiMTc2ZmY0NDRmYmM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaApAQCAtMzksNyArMzksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7
CiAKLWNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIDogcHVibGljIExlZ2FjeUNETVNl
c3Npb24sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4g
eworY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgZmluYWwgOiBwdWJsaWMgTGVnYWN5
Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyog
cGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAyNGIyYTE3ZDk3N2ViYmYwNTMzNTBj
NTVkOWQ0MDlhNjEyNzk2MzhmLi4zOWVhOGU1MTEzNjMyYWU3NGJmNTM2NGE4ZDFiMDI2OTcyMjFh
YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQy5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiAKIGNsYXNzIENETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwg
fkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU0ODIwZDIyNTE5N2RiN2Y5YmU3M2Y0ZmJk
MmNlYzg3OGY5YTgwMDguLjMyNmRhZGJiMTdkMDg5MTE3MGViNzU0NTNiNjM0OGQ3ZmU4Mzk3ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAt
NDEyLDcgKzQxMiw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRh
dGEoKQogICAgICAgICB8fCAhbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkKICAg
ICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkudmFsdWUoKSAhPSBm
aW5hbFRyYW5zZm9ybQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXplKCkg
IT0gc2l6ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNpemUs
IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJ
bWFnZUNvbXBhdGlibGU6Olllcyk7CisgICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBt
YWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0p
LCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
OjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwogCiAgICAgbV9zaXplID0gZXhwYW5kZWRJbnRT
aXplKG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJvdGF0ZWRTaXplKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KaW5kZXggNWNkMjI0MDNhYTJjMmVmNjIyZTMwMGQwMDc0MWZjMGMzMzM5YmYz
Ni4uN2ZjMDE4YWU1OGVhZjUyNTYwZGVlNmIzNGExYTk3Y2U3ZDAxZDIxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEK
ICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFD
YWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAg
IEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7
CiB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIAogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uKHBsYXllcikKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0
ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAs
IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQogICAgICwgbV9vYmpjT2JzZXJ2ZXIo
YWRvcHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBsYXllcjpt
YWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQpA
QCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1l
UmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0
byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBp
ZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAgLTE4OTIs
NyArMTg5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBk
YXRlUm90YXRpb25TZXNzaW9uKCkKICAgICAgICAgJiYgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+
c2l6ZSgpID09IG5hdHVyYWxTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ltYWdlUm90
YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihX
VEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8z
MkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7
CisgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNl
c3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZv
cm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRp
YmxlOjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMjIxNiw3ICsyMjE2
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0
SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogI2Vsc2UKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRy
aWJ1dGVzID0gbmlsOwogI2VuZGlmCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBt
YWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0y
MjY1LDcgKzIyNjUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHNpemVfdCBoZWln
aHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAog
ICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29w
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwor
ICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29w
aWVyQ1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29w
eUltYWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBo
ZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KQEAgLTIzMzAsNyAr
MjMzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzCiB7CiAgICAgaWYgKCFrZXlTeXN0ZW1J
c1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0
aGlzLCBjbGllbnQpOworICAgIGF1dG8gc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVudCk7CiAgICAgbV9zZXNzaW9uID0gbWFrZVdlYWtQ
dHIoKnNlc3Npb24pOwogICAgIHJldHVybiBXVEZNb3ZlKHNlc3Npb24pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAppbmRleCA3Mzk2ZTViMWI0MzExOThlNWU2MGQ4ZmNkMDYzNTliYjI3Y2Y0
OWY3Li5hMWRkMGY5MDkxZmIyODY0NjhkYmUwYWUxMGNlOGIzYzE0MmMwYmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaApAQCAtMjY4LDYgKzI2OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQwogICAgIGZyaWVuZCBjbGFzcyBNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDOwogCiAgICAgc3RydWN0IFBlbmRpbmdTZWVrIHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nU2Vlayhjb25zdCBNZWRpYVRp
bWUmIHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0
IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpCiAgICAgICAgICAgICA6IHRhcmdldFRpbWUo
dGFyZ2V0VGltZSkKICAgICAgICAgICAgICwgbmVnYXRpdmVUaHJlc2hvbGQobmVnYXRpdmVUaHJl
c2hvbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZjE5NTE1NmQ4Y2YyMjU2ZjYw
ZjlmNTUzMjQxMjllODUyM2Q5ZDM4Yi4uOWMwYWVmNjE5YWRjMmEzMThmMGRiN2QyZTM4NjdjMjFk
ZmMzMWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTM3LDcgKzEzNyw3IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDKE1lZGlhCiAgICAgLCBtX3BsYXlpbmcoMCkKICAgICAsIG1fc2Vl
a2luZyhmYWxzZSkKICAgICAsIG1fbG9hZGluZ1Byb2dyZXNzZWQoZmFsc2UpCi0gICAgLCBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
cihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAgICAgLCBt
X2VmZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXIoRWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5l
cjo6Y3JlYXRlKCp0aGlzLCBbbV9zeW5jaHJvbml6ZXIgdGltZWJhc2VdKSkKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIo
KSkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdAogICAgIGlmICgh
aXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRp
YVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNh
Y2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKTsKIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFu
Y2UoY29uc3QgTWVkaWFUaW1lJiB0aQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ0aW1l
ID0gIiwgdGltZSwgIiwgbmVnYXRpdmVUaHJlc2hvbGQgPSAiLCBuZWdhdGl2ZVRocmVzaG9sZCwg
IiwgcG9zaXRpdmVUaHJlc2hvbGQgPSAiLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBtX3Nl
ZWtpbmcgPSB0cnVlOwotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRocmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOworICAg
IG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRo
cmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgaWYgKG1fc2Vla1RpbWVyLmlzQWN0
aXZlKCkpCiAgICAgICAgIG1fc2Vla1RpbWVyLnN0b3AoKTsKQEAgLTU0Myw3ICs1NDMsNyBAQCBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnJlYWR5U3RhdGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWthYmxlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1p
bk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwg
bWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKQEAgLTU1
OCw3ICs1NTgsNyBAQCBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjptaW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6YnVm
ZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVk
aWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNv
dXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmRpZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAKICAgICBpZiAo
IW1fcmdiQ29uZm9ybWVyKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IEB7IChfX2JyaWRn
ZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVs
Rm9ybWF0VHlwZV8zMkJHUkEpIH07Ci0gICAgICAgIG1fcmdiQ29uZm9ybWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVm
KWF0dHJpYnV0ZXMpOworICAgICAgICBtX3JnYkNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxC
dWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsK
ICAgICB9CiAKICAgICBtX2xhc3RJbWFnZSA9IG1fcmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZy
b21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CkBAIC02NDksNyArNjQ5LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmEKICAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1
ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlk
ZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRl
b1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4
dCk7CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZv
cm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRU
ZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBl
LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0K
aW5kZXggY2EzYjExMzU1MmIzODg1Yzk5OTc3ZGFlMmEyMWVhMTY1NzdlZGE4MC4uOWRlZWU0NmYy
Y2EyNDUyOTUzZGY1Y2E4OGJiNjlmODE4ZTdlNGU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQpAQCAtMTgzLDcgKzE4Myw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKE1lZGlhCiAgICAgOiBt
X3BsYXllcihwbGF5ZXIpCiAgICAgLCBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyKGFkb3B0TlMoW1tX
ZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCiAgICAgLCBtX2Nsb2NrKFBBTDo6Q2xvY2s6OmNyZWF0ZSgpKQotICAgICwgbV92
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXJPYmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxv
Z2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVu
dGlmaWVyKCkpCkBAIC0yMjAsNyArMjIwLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCkKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5l
KE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUo
KSkKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5
ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgICAg
IHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiB9CiAKQEAgLTEwNTQsMTIgKzEwNTQsMTIgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygp
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YnVmZmVyZWQo
KSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTEwNzMsNyArMTA3
Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVD
dXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9pbWFnZVBh
aW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVs
QnVmZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
PigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBp
eGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEp
IH0pOworICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VV
bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilA
eyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTog
QChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKIAogICAgIEFTU0VSVChtX2ltYWdlUGFp
bnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcik7CiAgICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhl
bEJ1ZmZlckNvbmZvcm1lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuY3BwCmluZGV4IGM4NzFjNTk0ODM1NTA4NTcxODJjN2EyNGQ1NTM0
Yjg1YTVkNGVmN2UuLjI5NDgzYmE1ZTk4ZDk1ZmE4ZTVlYzlhNmExMGJmNjQxYWFlMzU1OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpD
LmNwcApAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRy
YWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2so
KTsKIH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akMoQVZBc3NldFRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVl
PEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNldFByb3BlcnRp
ZXNGcm9tVHJhY2soKTsKIH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakMoTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCi0gICAg
OiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRp
b24pKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
b3B0aW9uKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zy
b21UcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVt
VHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9
IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0
UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC03Nyw3ICs3Nyw3IEBAIEFWUGxheWVySXRl
bVRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiAKIHZv
aWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAq
dHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9
CiAKQEAgLTg4LDcgKzg4LDcgQEAgQVZBc3NldFRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OmFzc2V0VHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVk
aWFTZWxlY3Rvbk9wdGlvbihNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKIHsK
LSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KG9wdGlvbik7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPihvcHRpb24pOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGZjYzI0OTZhMTM1YWE0ZjczYThmZTU0OGQxNGUwYzgw
MDA0YWQxYjAuLjk3NTZjZmZhZmQ4YzNmNmZlM2I0N2EyMzMzNzFiNzRkZWM5OGQwNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJlbnQocGFyZW50
KQogICAgICwgbV90cmFja0lEKC0xKQogICAgICwgbV9zZWxlY3RlZChmYWxzZSkKQEAgLTU2LDcg
KzU2LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQ
cm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwor
ICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
OwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRl
eCAxNzFmMjc3MmM5NGE2OWNkYTczNDkzY2M5YzhjNzg3OGIwMDEwOGRkLi44NzY1MzQ0NTIwMjRl
NjE2NTE0MTdhMDRhMGQ5NDUwNThhOTU0MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE2MzYsMTIg
KzE2MzYsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMo
Q29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25zdCBUcmEKICAgICBpZiAodXNlc0Rpc3BsYXlM
aXN0RHJhd2luZygpICYmIG1fZHJhd3NDb250ZW50ICYmICghbV9oYXNFdmVyUGFpbnRlZCB8fCBo
YWREaXJ0eVJlY3RzKSkgewogICAgICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShEaXNwbGF5
TGlzdFJlY29yZFN0YXJ0LCBEaXNwbGF5TGlzdFJlY29yZEVuZCk7CiAKLSAgICAgICAgbV9kaXNw
bGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwor
ICAgICAgICBtX2Rpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q+KCk7CiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENsaXAoYm91bmRzT3Jp
Z2luKCksIHNpemUoKSk7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoWyZdKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3Jh
cGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4
dCwgKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBB
ZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pOwogICAgICAgICBwYWludEdyYXBoaWNzTGF5
ZXJDb250ZW50cyhjb250ZXh0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpKTsKICAg
ICB9CkBAIC0yODY3LDcgKzI4NjcsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5n
VHJhbnNmb3JtQW5pbWF0aW9uKCkgY29uc3QKIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVM
YXllckFuaW1hdGlvbnMoKQogewogICAgIGlmICghbV9hbmltYXRpb25zKQotICAgICAgICBtX2Fu
aW1hdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKKyAgICAgICAg
bV9hbmltYXRpb25zID0gbWFrZVVuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24m
IGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1YkluZGV4LCBTZWNvbmRzIHRpbWVPZmZzZXQpCkBA
IC0zOTAzLDcgKzM5MDMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXll
cnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8UGxhdGZvcm1DQUxheWVyPgogICAgIGNvbnRlbnRz
TGF5ZXIgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX2xheWVyQ2xvbmVzKQotICAgICAgICBtX2xh
eWVyQ2xvbmVzID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsb25lcz4oKTsKKyAgICAgICAgbV9s
YXllckNsb25lcyA9IG1ha2VVbmlxdWU8TGF5ZXJDbG9uZXM+KCk7CiAKICAgICBwcmltYXJ5TGF5
ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9sYXllci5nZXQoKSwgbV9sYXllckNsb25l
cy0+cHJpbWFyeUxheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKICAgICBzdHJ1Y3R1cmFsTGF5ZXIg
PSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9zdHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5
ZXJDbG9uZXMtPnN0cnVjdHVyYWxMYXllckNsb25lcywgY2xvbmVMZXZlbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmlu
ZGV4IDNhYzRjMWUzMmExNTQ4ZDU4YzY5MTExN2NjNjlhMjljNGRjZjBlMWEuLmM0YjJjOWMzNDcw
ODBhNmI3Yzk2ZDY3MDJmNGE0ZDhhMzBjN2Y2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xNTcsNiArMTU3
LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1Ymxp
YyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIEZsb2F0U2l6ZSBwaXhlbEFsaWdubWVudE9m
ZnNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7IH0K
IAogICAgIHN0cnVjdCBDb21taXRTdGF0ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgdW5zaWduZWQgdHJlZURlcHRoIHsgMCB9OwogICAgICAgICB1
bnNpZ25lZCB0b3RhbEJhY2tkcm9wRmlsdGVyQXJlYSB7IDAgfTsKICAgICAgICAgYm9vbCBhbmNl
c3RvckhhZENoYW5nZXMgeyBmYWxzZSB9OwpAQCAtMzA5LDYgKzMxMCw3IEBAIGNsYXNzIEdyYXBo
aWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVy
Q2xpZW50IHsKICAgICB0eXBlZGVmIHVuc2lnbmVkIENvbXB1dGVWaXNpYmxlUmVjdEZsYWdzOwog
ICAgIAogICAgIHN0cnVjdCBWaXNpYmxlQW5kQ292ZXJhZ2VSZWN0cyB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0
OwogICAgICAgICBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0OwogICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBhbmltYXRpbmdUcmFuc2Zvcm07CkBAIC0zMjgsNiArMzMwLDcgQEAgY2xhc3MgR3Jh
cGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQgewogCiAgICAgLy8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVl
IGZvciByZXBsaWNhIGxheWVycy4KICAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heFJlcGxpY2FEZXB0aCA9IDE2OwogICAgICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBl
IHsgQ2hpbGRCcmFuY2ggPSAwLCBSZXBsaWNhQnJhbmNoID0gMSB9OwogICAgICAgICBSZXBsaWNh
U3RhdGUoUmVwbGljYUJyYW5jaFR5cGUgZmlyc3RCcmFuY2gpCkBAIC01NzksNiArNTgyLDcgQEAg
Y2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQgewogCiAgICAgLy8gUmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3Vy
IGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJzLgogICAgIHN0cnVjdCBMYXllckNsb25lcyB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJN
YXAgcHJpbWFyeUxheWVyQ2xvbmVzOwogICAgICAgICBMYXllck1hcCBzdHJ1Y3R1cmFsTGF5ZXJD
bG9uZXM7CiAgICAgICAgIExheWVyTWFwIGNvbnRlbnRzTGF5ZXJDbG9uZXM7CkBAIC02MDgsNiAr
NjEyLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1
YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPj4gQW5pbWF0aW9uc1RvUHJvY2Vzc01h
cDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4+IEFuaW1hdGlvbnNNYXA7CiAgICAgc3RydWN0IExheWVyQW5pbWF0aW9ucyB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgVmVjdG9yPExheWVy
UHJvcGVydHlBbmltYXRpb24+IHVuY29taXR0ZWRBbmltYXRpb25zOwogICAgICAgICBBbmltYXRp
b25zVG9Qcm9jZXNzTWFwIGFuaW1hdGlvbnNUb1Byb2Nlc3M7CiAgICAgICAgIEFuaW1hdGlvbnNN
YXAgcnVubmluZ0FuaW1hdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKaW5kZXggNGQ2NGMyYzRiMTliMzFiODA1
NGMxYmM0MWFjMDIyNTczYmVmZjU2Mi4uMzA1ZWZkMzMzYmQ2MTFjNmVmNWU0YzFiMjYyMjg4NzUy
NTZmMjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcgVGlsZUNvbnRy
b2xsZXI6Onpvb21lZE91dFRpbGVHcmlkQ29udGFpbmVyTGF5ZXJOYW1lKCkKIFRpbGVDb250cm9s
bGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RQbGF0Zm9ybUxheWVyKQog
ICAgIDogbV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1MYXllcikKICAgICAsIG1fZGV2aWNl
U2NhbGVGYWN0b3Iob3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZXZpY2VT
Y2FsZUZhY3RvcigpKQotICAgICwgbV90aWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlk
PigqdGhpcykpCisgICAgLCBtX3RpbGVHcmlkKG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkK
ICAgICAsIG1fdGlsZVJldmFsaWRhdGlvblRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRp
bGVSZXZhbGlkYXRpb25UaW1lckZpcmVkKQogICAgICwgbV90aWxlU2l6ZUNoYW5nZVRpbWVyKCp0
aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVTaXplQ2hhbmdlVGltZXJGaXJlZCwgdGlsZVNpemVV
cGRhdGVEZWxheSkKICAgICAsIG1fbWFyZ2luRWRnZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNT
Y2FsZShmbG9hdCBzY2FsZSkKICAgICBpZiAobV96b29tZWRPdXRDb250ZW50c1NjYWxlICYmIG1f
em9vbWVkT3V0Q29udGVudHNTY2FsZSA9PSB0aWxlR3JpZCgpLnNjYWxlKCkgJiYgdGlsZUdyaWQo
KS5zY2FsZSgpICE9IHNjYWxlICYmICFtX2hhc1RpbGVzV2l0aFRlbXBvcmFyeVNjYWxlRmFjdG9y
KSB7CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQgPSBXVEZNb3ZlKG1fdGlsZUdyaWQpOwog
ICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT5zZXRJc1pvb21lZE91dFRpbGVHcmlkKHRydWUp
OwotICAgICAgICBtX3RpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMp
OworICAgICAgICBtX3RpbGVHcmlkID0gbWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOwogICAg
ICAgICB0aWxlR3JpZHNDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC01MDAsNyArNTAwLDcgQEAgRmxv
YXRSZWN0IFRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9yU2Nyb2xsaW5n
KGNvbnN0IEZsb2F0UmVjdCYgY28KICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
IW1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSkKLSAgICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9j
aXR5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yaWNhbFZlbG9jaXR5RGF0YT4oKTsKKyAg
ICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSA9IG1ha2VVbmlxdWU8SGlzdG9yaWNh
bFZlbG9jaXR5RGF0YT4oKTsKIAogICAgICAgICBtX3ZlbG9jaXR5ID0gbV9oaXN0b3JpY2FsVmVs
b2NpdHlEYXRhLT52ZWxvY2l0eUZvck5ld0RhdGEoc2Nyb2xsT2Zmc2V0LCBjb250ZW50c1NjYWxl
LCBNb25vdG9uaWNUaW1lOjpub3coKSk7CiAgICAgfTsKQEAgLTY4NSw3ICs2ODUsNyBAQCBJbnRS
ZWN0IFRpbGVDb250cm9sbGVyOjp0aWxlQ292ZXJhZ2VSZWN0KCkgY29uc3QKIFBsYXRmb3JtQ0FM
YXllciogVGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIoKQogewog
ICAgIGlmICghbV9jb3ZlcmFnZU1hcCkKLSAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CisgICAgICAgIG1fY292ZXJhZ2VNYXAg
PSBtYWtlVW5pcXVlPFRpbGVDb3ZlcmFnZU1hcD4oKnRoaXMpOwogCiAgICAgcmV0dXJuICZtX2Nv
dmVyYWdlTWFwLT5sYXllcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpp
bmRleCBhNDg1MjNjZjUxNzZiMzFmMmFjYzQ5ODRiMmVjZDhlMmM4NzRmNjA3Li4zNmFjMmY3ODRi
MDA2ZmY5YzcwM2Y0MWU3YmZmNjg3YTFhYTRjNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6
OmNvbW1vbkluaXQoKQogICAgICAgICBXZWJUaWxlZEJhY2tpbmdMYXllciogdGlsZWRCYWNraW5n
TGF5ZXIgPSBzdGF0aWNfY2FzdDxXZWJUaWxlZEJhY2tpbmdMYXllcio+KG1fbGF5ZXIuZ2V0KCkp
OwogICAgICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSBbdGlsZWRCYWNraW5n
TGF5ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6dGhpc107CiAKLSAgICAgICAgbV9jdXN0b21TdWJs
YXllcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9s
bGVyLT5jb250YWluZXJMYXllcnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5
ZXJzKCkpOwogICAgIH0KIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTk0Nyw3
ICs5NDcsNyBAQCBGbG9hdFJvdW5kZWRSZWN0IFBsYXRmb3JtQ0FMYXllckNvY29hOjpzaGFwZVJv
dW5kZWRSZWN0KCkgY29uc3QKIHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCiB7CiAgICAgQVNT
RVJUKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNoYXBlTGF5ZXIpOwotICAgIG1fc2hhcGVSb3Vu
ZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3Qp
OworICAgIG1fc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4o
cm91bmRlZFJlY3QpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgUGF0
aCBzaGFwZVBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCmluZGV4IGMxOTFm
MzkxYzY0NTcyY2M5OTU1YTQ3YzZjYjdiOTAwNzg2NzI2MzkuLmIzZTIxZjY0MGFlOTFhMGQxZjU5
Mzg0NmE4NTBmZWMyMmZhNzhhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1t
CkBAIC02Miw3ICs2Miw3IEBAIC0gKGlkKWluaXRXaXRoTGF5ZXI6KGlkKWxheWVyCiAtIChXZWJD
b3JlOjpUaWxlQ29udHJvbGxlciopY3JlYXRlVGlsZUNvbnRyb2xsZXI6KFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllciopcm9vdExheWVyCiB7CiAgICAgQVNTRVJUKCFfdGlsZUNvbnRyb2xsZXIpOwot
ICAgIF90aWxlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRy
b2xsZXI+KHJvb3RMYXllcik7CisgICAgX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAgICByZXR1cm4gX3RpbGVDb250cm9s
bGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDE1ZDRlNDZi
MDZjNzZjMTdmMzQwNTEzOWM2Yzk3OWMxMDE3YjM2OTYuLmQ2YTdjMTY4ZjBlNDQxZmQ3ZDI5MGZj
NGZlMzEzNjBjNTg1ZDU2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNTIs
NyArMTUyLDcgQEAgUGxhdGZvcm1DQUxheWVyV2luOjpQbGF0Zm9ybUNBTGF5ZXJXaW4oTGF5ZXJU
eXBlIGxheWVyVHlwZSwgUGxhdGZvcm1MYXllciogbGF5ZXIKICAgICBpZiAodXNlc1RpbGVkQmFj
a2luZ0xheWVyKCkpIHsKICAgICAgICAgaW50ZXJuID0gbmV3IFdlYlRpbGVkQmFja2luZ0xheWVy
V2luKHRoaXMpOwogICAgICAgICBUaWxlQ29udHJvbGxlciogdGlsZUNvbnRyb2xsZXIgPSByZWlu
dGVycHJldF9jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyV2luKj4oaW50ZXJuKS0+Y3JlYXRlVGls
ZUNvbnRyb2xsZXIodGhpcyk7Ci0gICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5
ZXJzKCkpOworICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1D
QUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKICAgICB9IGVs
c2UKICAgICAgICAgaW50ZXJuID0gbmV3IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKHRoaXMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAppbmRleCAyMjRkOGJiZWVk
Mzk5MmFlZWZjOTMyYTFiZWU4MGRjNjNmY2EyZjhiLi5jNWE3M2U4ZDNhZTliYjQ5YTk2YmUyN2Y1
MzI3ZTA2YzA2MjE0ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAK
QEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpzZXRCb3Jk
ZXJDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCiBUaWxlQ29udHJvbGxlciogV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdExh
eWVyKQogewogICAgIEFTU0VSVCghbV90aWxlQ29udHJvbGxlcik7Ci0gICAgbV90aWxlQ29udHJv
bGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CisgICAg
bV90aWxlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7
CiAgICAgcmV0dXJuIG1fdGlsZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAppbmRleCBjMzFjYzZlMzhiYTU5OWM5ZmI4MjZhYTAzOTc2YjIwNTFjYzEx
NWJlLi4xOGYzNDA1MGFhOWUzYjc0MzRhNjI3YTA3N2NkMmNjZjJmOTljOWZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC00MSw2ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5n
czxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoKICAgICBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5jcHAKaW5kZXggNTBiN2Q5YzIzYzAxYWJmYzNhMDUxNzhjMTA1MjUxMDcwZjE1
ZDZkYi4uMDRmMmE5ZmY1NDY5YWE1YmEyNGQxNDk1NjU0YjYwZjBiYzQzZDJhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdyYXBoaWNz
Q29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250
ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4o
Y29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU0LDE0ICs1
NCwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbY2Fpcm9Db250ZXh0XShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9D
b250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dElt
cGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKICAg
ICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJh
bnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAg
ICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAg
bV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0
KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7
CkBAIC02OSw5ICs2OSw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhCiAKIEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY2Fpcm9fdCogY2Fpcm9Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1w
bChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9v
d25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJv
PihjYWlyb0NvbnRleHQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVl
PFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQogICAgICwgbV9wbGF0Zm9ybUNv
bnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtl
X3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0
KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdy
YXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5
bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKaW5kZXggOTllMTgzY2M3MDU2MDNkMjM0
ZThlOGVkOWZkNjY5ZDU5NmZiZWVhMi4uMDgzNzI1ZDZmZDM4MzI2MDdhYTc2MWZmOWY2ODM1OTA2
NjRjOTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVDYWlyby5oCkBAIC00NSw2ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgIDogcGxhdGZvcm1Db250
ZXh0KHBsYXRmb3JtQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggMTM3NDE1ZjNl
YWJmNTMyMWZjMzVjYWMyMGUxZTEyNzg0ZDc1MjIzMy4uZTAxZTYwYjllZWU3YmExODM5N2E2M2Vm
NGExNzY2N2ZmZGM0YTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE2NSw3ICsxNjUs
NyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAg
ICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygp
KTsKLSAgICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBt
X3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKKyAgICAgICAg
ICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsKICAgICAgICAgICAgIH07CiAjaWYgVVNFKE5J
Q09TSUEpCiAgICAgICAgIHByb3h5T3BlcmF0aW9uKGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsK
QEAgLTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogCiAgICAgUmVmUHRy
PGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0
KCkpKTsKICAgICBtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwotICAg
IG1fZGF0YS5tX2NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29u
dGV4dCkpOworICAgIG1fZGF0YS5tX2NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRm
b3JtQ29udGV4dCkpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaAppbmRleCA4MGVjNzI1OGI2NDIxZmJmOThiM2ViNTUxM2QwY2VhZmJlN2FkZmRjLi45
OWM4MmUyZTZlOTkzMWM4ZmVhOWRlMjE1ZDBmMzZjNzE5YzM4OTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29u
dGV4dENhaXJvLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IFNoYWRvd1N0YXRlOwogLy8gY29k
ZSBmcm9tIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQuCiAKIGNsYXNz
IFBsYXRmb3JtQ29udGV4dENhaXJvIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNvbnRleHRDYWlybyk7CiBwdWJsaWM6CiAg
ICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8oY2Fpcm9fdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4MGI1ZDRm
YmQyNzJkZWU0MzViNWNlN2MwODRlZTM1OWE1MDFlZDY0Li5kMzVmZjBlZmY5NzE5NTBlZWQxZTNm
ZDAyNmJjZGE5ZWFmYTM0ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgQ0dDb2xvclNwCiAgICAgICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZGF0YS5jb250ZXh0ID0g
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAg
ICAgY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCmluZGV4IDcxODhlNDM3ZDJjODg2NzI2ZDNkM2Y0ZGViNDFiZjI1Y2IwNmIzODAuLmZmN2Zj
NjYzNjhiZDJjNjYwYzQ4YzEwNjc0NWY5YmE4OWIzZGRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKQEAgLTEzNzEsNyArMTM3MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1E
YXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAKICAg
ICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3Nh
cnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIo
KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQu
Z2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlw
dGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnRE
ZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
b250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9u
LndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiB9
CiAKIHR5cGVkZWYgSGFzaFNldDxSZXRhaW5QdHI8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJP
YmplY3RIYXNoPENURm9udFJlZj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaFRyYWl0czxDVEZv
bnRSZWY+PiBGYWxsYmFja0RlZHVwU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcAppbmRleCAxY2UwYzk0N2UxN2U5YTY4ZWVhZDNhNGQ1N2I1OWQ4
ZmExNmNlZjI5Li4wZGU5MzRhN2IzODQxMDBlZWI3NmQ3N2Y0NTZhMTgyZmJiYWJjZWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMTEy
LDcgKzExMiw3IEBAIEZvbnRSYW5nZXMgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6
Zm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAKICAgICAgICAgYXV0byBbc3lu
dGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lz
KGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xk
T2JsaXF1ZVBhaXIoKTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxh
dGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9u
dERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQo
KSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3lu
dGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlw
dGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkp
OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dDNEQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCmluZGV4IGZlZWFjZDRkMzI2NjA1ZjA0
MjkxY2U5YzMxZWVjYmJlOWNiMjJiOTIuLjJjM2NhYzBhYWEwNTYzYWYxZWQ0YjMzOTM4Njk4OTgz
MjIwNTdjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtOTIsNiArOTIs
NyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQgPSA1OwogLy8g
RklYTUU6IFRoaXMgY2xhc3MgaXMgY3VycmVudGx5IGVtcHR5IG9uIE1hYywgYnV0IHdpbGwgZ2V0
IHBvcHVsYXRlZCBhcwogLy8gdGhlIHJlc3RydWN0dXJpbmcgaW4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTAzIGlzIGRvbmUKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKikgeyB9CiAgICAgCkBA
IC0xODEsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgc2V0R1BVQnlSZWdpc3RyeUlEKFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QgY29udGV4dE9iaiwgQ0dMUGl4ZWxGb3IKIAogR3JhcGhpY3NDb250
ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRy
cywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxl
LCBHcmFwaGljc0NvbnRleHQzRCogc2hhcmVkQ29udGV4dCkKICAgICA6IG1fYXR0cnMoYXR0cnMp
Ci0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU+KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlPih0aGlzKSkKIHsKICNpZiAhVVNFKEFOR0xFKQogI2lmIFVTRShPUEVOR0xfRVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0KaW5kZXggNWM3MzNlM2JhZDFlOWQzZDI1YzFlZDU3ZjVhY2RmZmYzYTRjYjk5Zi4uMzg3NWZj
ZmQzMDZkZjg2ZDM0NzRlZTE4NjBiYTU5MGEzYThiYzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzI2LDcgKzMy
Niw3IEBAIEdyYXBoaWNzQ29udGV4dCYgSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0NvbnRleHQo
KQogICAgIGlmIChtX2dyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuICptX2dyYXBoaWNz
Q29udGV4dDsKIAotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHQ+KGVuc3VyZVBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBtX2dyYXBoaWNzQ29u
dGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQo
KSk7CiAgICAgbV9ncmFwaGljc0NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KHRydWUp
OwogCiAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbkNvY29hLm1tCmluZGV4IDZlNjBlYmYxZmZhNjU5MGY2ZjM0ZTUyOGEzZTMz
NTgzMThiNWViZGYuLjI3ODc0NjgxNjZmZWYxYjVmNjQ2MjFmZWI1YmI1ZTUwZDlkNmRhMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFj
a1JlcHJlc2VudGF0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQpAQCAtMTA4LDcgKzEw
OCw3IEBAIEBlbmQKIAogc3RkOjp1bmlxdWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xp
ZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrUmVw
cmVzZW50YXRpb25Db2NvYT4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOwogfQogCiBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hKFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKaW5kZXggYWRjOTdh
ZGMxZmEyNDU4MDk5MDAzYzNkZTljMGFhMzhkODc2MTg3ZC4uNjAwMWJiNzBhMTAwNDE3NDQxMDky
MTM2ZjNmZTViNjE3NjJjYjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaApAQCAtMzYsNyAr
MzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxCdWZmZXJQb29sKiBDVlBpeGVsQnVmZmVy
UG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUIHsKK2NsYXNzIEltYWdlUm90YXRpb25TZXNzaW9uVlQgZmluYWwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBSb3RhdGlvblByb3BlcnRp
ZXMgewogICAgICAgICBib29sIGZsaXBYIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yu
aAppbmRleCBkZDEzNTY5ZTA4MWExYjM5OWRjYmFiZjNmNWU4ODM3Zjg0YzJhYjRlLi5jZDViNmZj
YzAwZDc3NDY0ZTZlNmJlNzQ2MzExZTEzZDBkMjdlMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vi5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxC
dWZmZXJSZWY7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9y
bWVyQ1YgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YoQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOwogICAgIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0KENWUGl4ZWxCdWZmZXJSZWYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1Yu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgK
aW5kZXggODFhYjJmOTI0ZGFmMjZjZGEyMmM1ZTIwMDc3NmMyMTgwMjAyM2EzYi4uYzlmZjQxOWQ0
M2JlNDVmNDA0NDAzMDQwYWRkOGM0ZDA0NDAyYmEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCkBAIC00NCw2ICs0NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFz
cyBUZXh0dXJlQ2FjaGVDViA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUZXh0dXJlQ2FjaGVDVj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJl
Q2FjaGVDVi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVD
YWNoZUNWLm1tCmluZGV4IDU3N2VjMjg0NjM5MmE3MjE1ZDk5OGFhMzEwZDNkOGQ2MzNmNWYxZWMu
LjlmMWY2NmIzYmQ1OWY1OWIxYWQzY2I3MDVjODU2NTQ0MjI3ZWMzOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCkBA
IC01MCw3ICs1MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gVGV4dHVyZUNh
Y2hlQ1Y6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCYgY29udGV4CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+IHN0cm9uZ0NhY2hlID0g
YWRvcHRDRihjYWNoZSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZUNhY2hl
Q1Y+KGNvbnRleHQsIFdURk1vdmUoc3Ryb25nQ2FjaGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUZXh0dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOwogfQogCiBU
ZXh0dXJlQ2FjaGVDVjo6VGV4dHVyZUNhY2hlQ1YoR3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleHQs
IFJldGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiYmIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgK
aW5kZXggNDNhOTZkYzE0MzY1ODRhZmE3NzE4NzhiMTk3ZjJhOTU0N2RjY2NlZS4uOWQzOTJlYTA1
OGIzNjAwOGNhNTY5Y2E0NGZkNzEyODgzYjBkNmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCkBA
IC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVDYWNoZUNW
OwogCiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgVmlkZW9UZXh0dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0
M0QmKTsKICAgICB+VmlkZW9UZXh0dXJlQ29waWVyQ1YoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA4ZmVhYTJmNWQ3NTMyOGU0MzZiZjlkODhiOGRjMDVi
YWMxYzJlMWYzLi5jNTYxZjVmOWVhYjk5NjIxMWE4YjIyMjE5Nzc2ZDY4ZjM5ZTE2NDQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBib29sCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxp
c3Q+IHJlcGxheUxpc3Q7CiAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpCi0gICAg
ICAgIHJlcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0PigpOworICAgICAg
ICByZXBsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKIAogICAgIHNpemVfdCBu
dW1JdGVtcyA9IG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1JdGVtczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNTU3
YjhlMDA4NjJkNmFiYzU4MDRiNDE0MzIxMDA4MGE4MzUxNmQxZS4uMzBiYjQ4Y2M4ZjBjNDk1NDQ4
YWI2NWY2ODExNzJjY2M2YmNhNTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9j
dW1lbnRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlcgogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCFTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UobV91cmwsICpjYWNo
ZWRSZXNvdXJjZUxvYWRlci5kb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlPihtX3VybCk7CisgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9
IG1ha2VVbmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKICAgICBtX2Nh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRp
b25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDY1NjNjOGJmZWVi
MzViYTUzMjdmNDg5NjFlZDYyMWZlM2Q1M2FhNDEuLjcxYTRhYjJmNDgyNWYxYTU0MzE5MTgwMzRi
MzUzMWVjZGE4YTBmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTQ1NSw3
ICs0NTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpj
cmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgICAgICAgICAgRmNQYXR0ZXJu
QWRkU3RyaW5nKHJlc3VsdFBhdHRlcm4uZ2V0KCksIEZDX0ZPTlRfVkFSSUFUSU9OUywgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBGY0NoYXI4Kj4odmFyaWFudHMudXRmOCgpLmRhdGEoKSkpOwogICAg
IH0KICNlbmRpZgotICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGb250
UGxhdGZvcm1EYXRhPihmb250RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERl
c2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQs
IHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKKyAgICBh
dXRvIHBsYXRmb3JtRGF0YSA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2Uu
Z2V0KCksIHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVs
U2l6ZSgpLCBmaXhlZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250
RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSk7CiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBmb250
IGhhcyBhbiBlbmNvZGluZyBjb21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNvbmZpZyBj
dXJyZW50bHkKICAgICAvLyBzdXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlwZUNo
YXJJbmRleDogVW5pY29kZSwgU3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElmIHRoaXMg
Zm9udCBkb2Vzbid0IGhhdmUgb25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9uJ3Qgc2Vs
ZWN0IGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKaW5kZXggMTM3NjVmNDNkYTg2NjhkMmRlODJlNjcxZDgxODBkNjg0NDI4NDNiMC4uNTg5
NDNkMmE5MGRmYzU1MDFmMmRjYWE4ZWNmMGU5MGUxYWM3ZjcwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAg
ICBpZiAoRlRfTmV3X01lbW9yeV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
RlRfQnl0ZSo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNl
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVy
KTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25z
dCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmNwcAppbmRleCA4Njk4MTM2NDUxM2I4ZTZmMGQ3YjJkZGE1YmI4ZDFmODcy
ZTdmNTc2Li43MWZkYTBkOTI0Y2QyNTVkYjNlZjEwNzdmOWUxMDc4MTRlMjQzZGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC05
NSw3ICs5NSw3IEBAIFJlZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIEZvcm1hdCBmb3JtYXQsIGludCB3CiAgICAgICAgIG51bVRpbGVzID0g
MDsKICAgICB9CiAKLSAgICBhdXRvIHRleHR1cmVJZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjx1bnNpZ25lZD4+KG51bVRpbGVzKTsKKyAgICBhdXRvIHRleHR1cmVJZHMgPSBtYWtlVW5pcXVl
PFZlY3Rvcjx1bnNpZ25lZD4+KG51bVRpbGVzKTsKICAgICB0ZXh0dXJlSWRzLT5maWxsKDAsIG51
bVRpbGVzKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0YTlm
ZGVjM2VjNTkxMmNlMjViMWU2YjI1YjkxNDRmYThmNDBjN2QwLi5hYjM3ZWUwNDFlYjI4YzNjODJm
MzVhZjM2M2NjZWRiOWI0MmIxNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFy
IHJlZ2lzCiB7CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6
ZURlYnVnQ2F0ZWdvcnkoKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5
U3lzdGVtKTsKICAgICB9CiB9CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkK
IAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2Vz
ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fZXJyb3JPY2N1
cmVkIHx8IGlzTGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIApAQCAt
MjM3Niw3ICsyMzc2LDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjphdWRpb1NpbmsoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVu
c3VyZUF1ZGlvU291cmNlUHJvdmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyKQotICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI+KCk7CisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92
aWRlciA9IG1ha2VVbmlxdWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKIH0KIAog
QXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1Nv
dXJjZVByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcAppbmRleCBjNTc4ZWVlNmQ1NWRkNGI0MzA3Y2Q0MmJiMDBjY2Y0NzYy
OTdiYjMzLi5iMDJlMjhlZGNkNDA3ZmRmZjhjYmVhNzhhZDFhNmU3YjBjN2I1OGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBA
IC03MTAsMTkgKzcxMCwxOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKICAgICAgICAgICAgIGlmICghcHJveHkuaXNBY3Rp
dmUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdz
LCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9G
cmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2lu
Z0ZhbGxiYWNrVmlkZW9TaW5rKTsKIAogICAgICAgICAgICAgR0x1aW50IHRleHR1cmVJRCA9IGZy
YW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgICAgICBp
ZiAodGV4dHVyZUlEKSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1l
SG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCks
IGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAg
ICAgICAgICAgbGF5ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGTW92
ZShmcmFtZUhvbGRlcikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlciA9IHByb3h5LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6ZSgp
LCBHTF9ET05UX0NBUkUpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbGF5ZXJCdWZm
ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVH
TDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkpOwogICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhv
bGRlci0+aGFzQWxwaGFDaGFubmVsKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDog
Qml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZN
b3ZlKHRleHR1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnVwZGF0ZVRl
eHR1cmUobGF5ZXJCdWZmZXItPnRleHR1cmVHTCgpKTsKICAgICAgICAgICAgICAgICBsYXllckJ1
ZmZlci0+c2V0RXh0cmFGbGFncyhtX3RleHR1cmVNYXBwZXJGbGFncyB8IChmcmFtZUhvbGRlci0+
aGFzQWxwaGFDaGFubmVsKCkgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCkpOwpA
QCAtOTEyLDcgKzkxMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgaWYgKCFHU1Rf
SVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJl
TWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9s
ZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1w
bGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVy
ZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAt
OTIzLDcgKzkyMyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgICAgIHNpemUgPSBz
aXplLnRyYW5zcG9zZWRTaXplKCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQot
ICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwor
ICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAg
cmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUodGV4dHVyZUlELCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVs
LCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVu
dGF0aW9uKTsKIH0KQEAgLTkzOSw3ICs5MzksNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBp
ZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCks
IG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0Vmlk
ZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xk
ZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBh
dXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1
cmVJRCkKQEAgLTk1Myw3ICs5NTMsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBjb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIp
Ci0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7
CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAg
ICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUodGV4dHVyZUlELCBzaXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3VyY2VPcmllbnRh
dGlvbikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEyNSw2ICsxMTI1LDcgQEAgc3Rh
dGljIHZvaWQgc2V0UmVjdGFuZ2xlVG9WaWRlb1NpbmsoR3N0RWxlbWVudCogdmlkZW9TaW5rLCBj
b25zdCBJbnRSZWN0JiByZWN0KQogfQogCiBjbGFzcyBHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQg
OiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OkhvbGVQdW5jaENsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVy
SG9sZVB1bmNoQ2xpZW50KEdSZWZQdHI8R3N0RWxlbWVudD4mJiB2aWRlb1NpbmspIDogbV92aWRl
b1NpbmsoV1RGTW92ZSh2aWRlb1NpbmspKSB7IH07CiAgICAgdm9pZCBzZXRWaWRlb1JlY3Rhbmds
ZShjb25zdCBJbnRSZWN0JiByZWN0KSBmaW5hbCB7IHNldFJlY3RhbmdsZVRvVmlkZW9TaW5rKG1f
dmlkZW9TaW5rLmdldCgpLCByZWN0KTsgfQpAQCAtMTE0Nyw4ICsxMTQ4LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAg
ICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAg
ICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAg
ICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdM
X0RPTlRfQ0FSRSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9sZVB1
bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckhv
bGVQdW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOworICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4
dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVu
dCA9IG1ha2VVbmlxdWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQo
KSk7CiAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0SG9sZVB1bmNoQ2xpZW50KFdURk1vdmUo
aG9sZVB1bmNoQ2xpZW50KSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZN
b3ZlKGxheWVyQnVmZmVyKSk7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCA3YWU3ZWNlZDZlOWY2YmI2NTUzM2I3
ZDg5MDMwMjM3Y2NjZGZmZTY2Li5lMjYwNGM0YWUzYjA1OWNlMWZiNmUwNGQ1NjhmMWE4MzZhMjMw
NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmgKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmwKICNlbmRpZgog
I2VuZGlmCiB7Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBpbml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKaW5kZXggNTFmZDliMjViMGI4NDM3Yzg0OTEy
NTNlNmYwMjFlNjU3ZDAzYTgxNy4uNWM1NmVjMzQxODg4MzM0NTc4OGZhMGI1NDlhOTgwMzI3ZDNl
N2JmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaApA
QCAtMzMsNiArMzMsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTsKIGNsYXNz
IEltYWdlT3JpZW50YXRpb247CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBD
b2xvckNvbnZlcnNpb24gewogICAgICAgICBDb252ZXJ0QkdSQVRvUkdCQSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggOTczZjRkNGYwMDMyMzU2ZjE3
N2ViZDdmYzRiOWU5NGE1MjkyZjk1YS4uOTgxMGMyNTdiMzc3NmZmZDhkNDIxMmU5Njk0YmU5MmIy
NTk3MzUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTUwLDYgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAjZGVmaW5lIExPV19R
VUVVRV9GQUNUT1JfVEhSRVNIT0xEIDAuMgogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudCBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KTsKIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudChXZWJLaXRXZWJTcmMqLCBSZXNvdXJjZVJlcXVlc3QmJik7CkBAIC02MzIs
NyArNjMzLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KEdzdEJh
c2VTcmMqIGJhc2VTcmMsIGJvb2wgbm90aWZ5QXN5bmNDb20KICAgICAgICAgICAgIGxvYWRPcHRp
b25zIHw9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0
YTsKICAgICAgICAgcHJpdi0+cmVzb3VyY2UgPSBwcml2LT5sb2FkZXItPnJlcXVlc3RSZXNvdXJj
ZShSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGxvYWRPcHRpb25zKTsKICAgICAgICAgaWYgKHBy
aXYtPnJlc291cmNlKSB7Ci0gICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5n
ZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CisgICAgICAgICAgICBwcml2LT5yZXNv
dXJjZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+
KHByb3RlY3Rvci5nZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CiAgICAgICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHByb3RlY3Rvci5nZXQoKSwgIlN0YXJ0ZWQgcmVxdWVzdCIpOwog
ICAgICAgICAgICAgaWYgKG5vdGlmeUFzeW5jQ29tcGxldGlvbikKICAgICAgICAgICAgICAgICBn
c3RfYmFzZV9zcmNfc3RhcnRfY29tcGxldGUoR1NUX0JBU0VfU1JDKHNyYyksIEdTVF9GTE9XX09L
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcAppbmRleCA0ZTlkMTlkODUyN2Q2OTYyMGNmNWFhOTQxMDczNjI4MzgxYjNjOWYw
Li5lNjg4MGQ5OGU3ZmNhZDFkMDUzZjg0ZWQzOGE2ZmQ4MTk4ZGU3Yjg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBA
IC03Nyw3ICs3Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlCiAgICAgaW5pdGlhbGl6ZUdT
dHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMoKTsKICAgICBHU1RfREVCVUdfQ0FURUdP
UllfSU5JVCh3ZWJraXRfbXNlX2RlYnVnLCAid2Via2l0bXNlIiwgMCwgIldlYktpdCBNU0UgbWVk
aWEgcGxheWVyIik7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIo
W10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tl
eVN5c3RlbSk7CiAgICAgfQogfQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFOjpzZXRSYXRlKGZsb2F0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVk
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1
ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBy
ZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0U6OnNvdXJjZVNldHVwKEdzdEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmluZGV4IDExNzI0
NTg0MTBlOWExNDUzYjYzNWIwZjhkOTFiOWZiNGE2OTZjNTguLjBmMDhjMTlkYmRiZTY5YjA2Zjdi
NzU1M2Y4YWI0OTdkNDdlMzc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclBy
aXZhdGVIb2xlUHVuY2guY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAgICAg
ICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBt
X3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7Cisg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05U
X0NBUkUpOwogICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1
ZmZlcikpOwogICAgICAgICB9OwogCkBAIC0xNDEsNyArMTQxLDcgQEAgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25z
dCBNZWRpYUUKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVk
aWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2g+KHBsYXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggZjBkMDRkNGM2M2Q5
MzEyMGJjZTgwNWFiOGZlYTI4N2EwMWUwNDQyYS4uOGJmNzIxMzE4ODE5YzQwMjY3YjcyMWZhOWI4
MmFjMWNkOTI2ZjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgICwg
cHVibGljIFBsYXRmb3JtTGF5ZXIKICNlbmRpZgogewotCisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKE1lZGlhUGxh
eWVyKik7CiAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCgpOwpAQCAtNzksNyArNzks
NyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6OkVtcHR5
OyB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9OwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OwogCiAgICAgYm9vbCBkaWRM
b2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCmluZGV4IGUxYTNhODY2
MzE0NzVjYWI3YTliMTcxYjQwNjJkMzkzZDg5MGU2MDYuLmVjZjg5NjkzZGEzMzg1MjAxMmU3NTAy
MTEyOTk4MDk5ZWM4ZGFjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgRGF0YVZpZXc7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0JveCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SVNPQm94KCkgPSBkZWZh
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPT3JpZ2luYWxGb3JtYXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCmluZGV4IDcwYmI4NjExMzE2ZTY4NWI3NmI3ODgz
OGI1ZWQwNjAzNzZiOWIxYTkuLjE4ODNiYTQ3YmRmM2E1MmFmYjJmZjdkMGRkNWNkOWRjZDdjZGQ4
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09P
cmlnaW5hbEZvcm1hdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2luYWxGb3JtYXRCb3gg
OiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0
Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBi
b3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcm1hIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hl
bWVJbmZvQm94LmNwcAppbmRleCBkOGQ3NDAxYTc1NjAwNDZjOThhZmY4Y2IxMWViMmU3MjIzYzk4
MWNlLi5iZGZkYmRjOTZjZjBlMWI1MGE3Mjg1ODI4OGM5YjJmNDc0ZjdkMGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVt
ZUluZm9Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBJU09Q
cm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBv
ZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChvcHRpb25hbEJveFR5cGUu
dmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVUeXBlQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAg
ICAgIG1fc2NoZW1lVHlwZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lVHlwZUJveD4o
KTsKKyAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0gbWFrZVVuaXF1ZTxJU09TY2hlbWVUeXBlQm94
PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lVHlwZUJveC0+cmVhZCh2aWV3LCBsb2NhbE9mZnNl
dCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBJ
U09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVk
JiBvZmZzZXQpCiAgICAgfQogCiAgICAgaWYgKG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLmZpcnN0
ID09IElTT1NjaGVtZUluZm9ybWF0aW9uQm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAgICAgIG1f
c2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZUluZm9ybWF0
aW9uQm94PigpOworICAgICAgICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0gbWFrZVVuaXF1ZTxJ
U09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZUluZm9ybWF0
aW9uQm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAppbmRleCBmMzdiNzYyNDlkOGUw
MGZhMTdhMDU1OTI5ZTc3NjY4NTEzNzMzMzY2Li44ZTU2NzNlMDUxNmE2NTAxNGY1Y2Q0OWY2MWFh
N2I3NTM4ZDJjYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaApAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJU09TY2hlbWVUeXBlQm94Owog
Y2xhc3MgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3gg
ewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAic2lu
ZiI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKaW5kZXggYjRmMjc3YTY4NDdj
YzIwZDRmYzlkNjI2ZjljYWNjNzQzMGFkYWY3MC4uYzgzYzRmZjdiMzhhYmYxYWUyMmZmZTVlNzJj
N2ExZjg2YTA4ZWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIGJvb2wgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2
aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICBpZiAobG9jYWxPZmZzZXQgKyBzY2hlbWVT
cGVjaWZpY0JveFR5cGUudmFsdWUoKS5zZWNvbmQgPiBvZmZzZXQgKyBtX3NpemUpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9zY2hlbWVTcGVjaWZpY0RhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVT
cGVjaWZpY0RhdGEgPSBtYWtlVW5pcXVlPElTT1RyYWNrRW5jcnlwdGlvbkJveD4oKTsKICAgICAg
ICAgaWYgKCFtX3NjaGVtZVNwZWNpZmljRGF0YS0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3gu
aAppbmRleCA5ZWRiMTg3OGE5YmE5MTliZWIxOWQ3YjYyMjNkOWU3ZTQ2NGY2ODU4Li5lOGVjMGM0
YzY5Yjc0ZTgzMzQ0OTg5NDFmMjRlZWU0MTBmMmNkZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRp
b25Cb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9ybWF0aW9uQm94IDogcHVibGljIElTT0JveCB7
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveCBmaW5hbCA6IHB1
YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7
IHJldHVybiAic2NoaSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKaW5kZXggNjE5NjEwMzlmNDhjZjJiYzZl
ZTdiODg0ODA3M2M4Mzc2ZTU4MzEzMC4uNGI4ZjI2MzM3NTBmOGFkZjkwYmMyN2MyZDBjZjE0ZWY5
ODJjMTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1NjaGVtZVR5cGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlwZUJveCA6IHB1Ymxp
YyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggZmlu
YWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hU
eXBlTmFtZSgpIHsgcmV0dXJuICJzY2htIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKaW5k
ZXggZjRlZmUyODEwNTFlM2M3YjI5ZGJlZjc4ZTQ0ZGEzYjAzODc4MDNmMy4uNDdmYTQ5NzI0NmM3
MTViZTFkMmNlZjliMGVhODdkZDdmNzllZjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaApA
QCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCBmaW5hbCA6IHB1YmxpYyBJU09G
dWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1
cm4gInRlbmMiOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1ZUVEN1ZS5jcHAKaW5kZXggOWVjNDA4OTRmMWUyOGEwNWEyMTRjYjMyMzUxNGY3YjEz
OTU1ZDI4NC4uNGI1MTZlZThkZDdmN2QyMzdlOGQ2MjcyNzk3YjAzMmRkMWY1YWNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgSlNDOjpEYXRhVmlldzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBJU09TdHJpbmdCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT1N0
cmluZ0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgY29udGVudHMoKSB7IHJldHVybiBtX2NvbnRlbnRzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAppbmRleCBhNjE2MGI2NmFlOTQ2
ODIwNjc3YWQyOTM0YjE4MWRlYjkzY2M0ZjQ5Li5hZTIzYmVmZmZlZDY0YTZkZTI4OTE3NmU0MTUx
MDExZjA2N2M5ODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1ZUVEN1ZS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IE4gYnl0ZXMgOiBDdWVUaW1lQm94IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVT
ZXR0aW5nc0JveCA6IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlUGF5bG9hZEJveCA6
IGJveCA6IHJlcXVpcmVkCi1jbGFzcyBJU09XZWJWVFRDdWUgOiBwdWJsaWMgSVNPQm94IHsKK2Ns
YXNzIElTT1dlYlZUVEN1ZSBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIElT
T1dlYlZUVEN1ZShjb25zdCBNZWRpYVRpbWUmIHByZXNlbnRhdGlvblRpbWUsIGNvbnN0IE1lZGlh
VGltZSYgZHVyYXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMzI3
ZWJmNjA2MjU5MDlmYmUyYzViNmJkNTE5OGFjYTE5YTQ1ZDRhNC4uNTA3OTM4YmUxMTA1Y2Y0MjYw
NDU1OTEzYjBjNWU5OWQ0ZjU0ZjllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApA
QCAtODQsNyArODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpKTsKIH0KIAog
Ym9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcm
IGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oCmluZGV4IDgzZjc3
NjY3OWUxODljNmZjZTRlZjg2MjU3YjAwNWQxMTM3NGUyMmQuLjZmMjE1YjI3YWFkOTZjM2ZhOWMy
MDdmMzIwZWY5ZTMyYjQzYjdjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRp
b24uaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgTmljb3NpYSB7CiBzdHJ1Y3QgUGFpbnRp
bmdPcGVyYXRpb25SZXBsYXkgeyB9OwogCiBzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb24geworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICB2aXJ0dWFsIH5QYWludGluZ09w
ZXJhdGlvbigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYWludGluZ09w
ZXJhdGlvblJlcGxheSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChXVEY6OlRleHRTdHJl
YW0mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDEw
OWMyYzU3NzY3OWExMjE0YWE2ZWExMDFjNmY0ODBmYmEyZWM2MDEuLjViZWU2MTNmY2Y2YjQ2YTA3
YzYyOGU1ODAxNmY0OWJiOTAyMWIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdy
YXRpb24uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVxdWVz
dFVwZGF0ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29w
ZT4gU2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKIH0KIAogU2NlbmVJbnRl
Z3JhdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAyYjFhZWNm
MGQxYjdlNmEzNDFiZjk0YmZmYWVkMjIwZjFhNDU4NjM4Li41MGUwYzNjN2Q5NzY4MjZiYTdiYjgx
ODVkMWVlMTQyMTI5YWRhMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBhdXRvIGNyZWF0
ZUNvbW1hbmQoQXJncyYmLi4uIGFyZ3VtZW50cykgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X2Jhc2Vfb2Y8T3BlcgogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGF1dG8gY3JlYXRlQ29tbWFuZCgp
IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXJhdGlvbkRhdGE8PiwgVD46
OnZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRpbmdPcGVyYXRpb24+PgogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VD4oKTsKIH0K
IAogQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFBhaW50aW5nT3BlcmF0aW9ucyYgY29tbWFuZExpc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAKaW5k
ZXggMGM4YTY3MGUzYTBhMzYzMDdlM2YyOTllY2RhMDI1NTJmZDc3NGVkMS4uYjM1MDhkNTE3YjI0
ZTQ3NWMwOGFmNDhiMzNlNDMxZmQyNzkyMDRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcApAQCAtNzAsOCArNzAsOCBAQCBQYWlu
dGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKEJ1ZmZlciYgYnVmZmVy
KQogICAgICAgICB9KTsKIAogICAgIG1fY2Fpcm8uY29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2Ny
ZWF0ZShtX2NhaXJvLnN1cmZhY2UuZ2V0KCkpKTsKLSAgICBtX3BsYXRmb3JtQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29u
dGV4dC5nZXQoKSk7Ci0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpjcmVhdGVGYWN0b3J5KCptX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fcGxhdGZvcm1Db250
ZXh0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9jYWlyby5j
b250ZXh0LmdldCgpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNy
ZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CiB9CiAKIFBhaW50aW5nQ29udGV4dENh
aXJvOjpGb3JQYWludGluZzo6fkZvclBhaW50aW5nKCkKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHZv
aWQgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpyZXBsYXkoY29uc3QgUGFpbnRp
bmdPcGVyYXRpb25zJiBwYWludGluCiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRp
bmc6OkZvclJlY29yZGluZyhQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW5nT3BlcmF0aW9ucykK
IHsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0PigKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0PigKICAgICAgICAgWyZwYWludGluZ09wZXJhdGlvbnNdKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFp
bnRpbmdPcGVyYXRpb25zKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CiAgICAgICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBkNGM5YjYwNWI0Y2QyOGUzNDhlZmQ4
NTMzNTAzOGI1OGM5YTRkZGZhLi44ZTM3OTBmN2FiNTRmNmIzZDk1NmYzMDcwNGM0MjljMmFjZGMz
MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNr
aW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBCYWNr
aW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsK
ICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10oQmFja2luZ1N0b3JlJikgewotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlcklt
cGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJl
TWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVU
ZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXgg
ZWFkNDk3NzZlNTBhMjNjZmQ1MDE0YTdlOTY0MzBiM2RlMTI0ZGIwYS4uZDQzNmYyMGMzMTYxYzA1
NTRhNWFhMjJhMzkzMGE5OTVlZWMzNWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVN
YXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQxLDYg
KzQxLDcgQEAKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgQmFja2luZ1N0b3JlVGV4dHVy
ZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgQmFja2luZ1N0b3JlOjpJbXBsLCBwdWJsaWMgV2Vi
Q29yZTo6VGlsZWRCYWNraW5nU3RvcmVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25M
YXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCAzOGZkZDkzZGE2YjEzODgzMTQwNTkxNjUz
Y2RmMjllMDdkZTMyMzk2Li43NTY5MmM3YzRhN2JmZGIxODcxZGYxODAyZTM4Nzc1MzZiNjE1NTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29t
cG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRv
IENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZh
Y3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10odWludDY0X3QsIENvbXBv
c2l0aW9uTGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21w
b3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0p
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29t
cG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggNjU1NWJmYjA4MDI2MWU4YTMw
OTViZGU0ODNhMDYxYmI1NDIxNDU3NC4uNTMwYTY3NTEwMTcyNmVhMjg3MjhjNTNkODg4ZGJkZWY3
YWFlNzk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDAsNiArNDAsNyBAQCBj
bGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIENv
bXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb21wb3NpdGlv
bkxheWVyOjpJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5
ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3Bw
CmluZGV4IDU2MTcyOGI1ZWYxZjQwZDgwYzUzNTk5MjY3MTA2NmFkODc0ODE5YTcuLjJmYjBlYzk1
OTE1YWViMGJhMDk2ZjgwYmM2OTBkMmYzYjI4NDhjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNw
cApAQCAtMzksNyArMzksNyBAQCBhdXRvIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpj
cmVhdGVGYWN0b3J5KENsaWVudCYgY2xpZW50KSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZh
Y3RvcnkoCiAgICAgICAgIFsmY2xpZW50XShDb250ZW50TGF5ZXImKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xp
ZW50KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsPihjbGllbnQpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaApp
bmRleCBlZjk2YTYwODMxNjJkZTQxYzI3ZGU0YmYzNTdiOGE0ZmNhZjhkOWNmLi5iMDEwNWI3M2Fj
MjI2NGY1N2NhN2I3ZTUwM2VjZjcwZGE1MjdkYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaApAQCAt
NDEsNiArNDEsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OwogbmFt
ZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCBm
aW5hbCA6IHB1YmxpYyBDb250ZW50TGF5ZXI6OkltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUdDM0RMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAppbmRleCA1MmVjNzBiNjgxZjdiYzU2M2E2
NzQ3NTQzNjIzODc2YjAzMTM5YTliLi45YTliZDQ2ODNiMjY3NDJhZmVjYjE0OTFmNjE0NGYyYTc4
YzU5NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcApAQCAtODgs
NyArODgsNyBAQCB2b2lkIEdDM0RMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAg
IGF1dG8mIHByb3h5ID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGw+KG1fY29udGVudExheWVyLT5pbXBsKCkpLnByb3h5KCk7CiAKICAgICAgICAgTG9ja0hv
bGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIo
c3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250
ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1f
aW50ZXJuYWxDb2xvckZvcm1hdCkpOworICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtl
VW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21w
b3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENv
bG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaAppbmRleCAzMmRiOWRkMzdhNmYw
ZDlmYThkNGQxODhlYjE4ZjhhZTE0NzVhMDBiLi45ZjU0NDViYmUxMTgzY2U3NDg1NTkzY2JiYmYx
NjUwZWRjY2U0MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oCkBAIC00
MSw2ICs0MSw3IEBAIGNsYXNzIEdMQ29udGV4dDsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xh
c3MgR0MzRExheWVyIDogcHVibGljIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdDM0RMYXll
cihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSk7CiAgICAgdmlydHVhbCB+R0MzRExheWVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1h
Z2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJ
bXBsLmNwcAppbmRleCBhMmFlMzRhMzEzMjdlODcxNTY1NDE0NmQxOGY3N2M3YTY3ZjI0MjE2Li5k
MzUzYzhiZTFiNWJmYTExNmI2Y2I4NTIwOTcwMjc3Y2M5MzI0NWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VC
YWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVy
SW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgK
ICAgICAgICAgW10oSW1hZ2VCYWNraW5nJikgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUlt
YWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggMWE2MjNhZmE0MDkzYjIyYWMyMGQx
M2IzMjkzNjA4M2FjYjA4ZWE4MC4uNDliMWU5YjJlYzAzNTUyYTBiZDYxMjBhZTc3YjhlNjk0YTk0
NjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgSW1hZ2U7
CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJ
bXBsIGZpbmFsIDogcHVibGljIEltYWdlQmFja2luZzo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKaW5kZXggN2M2MTRmYjQwMzM1
OGVhNDA0NTZkODQ2MmNmOGRjNWJjM2E0ZWIxOS4uMTQ3MjE3OTA3NzI3Y2FlZWEyN2VmNjhhMDY5
Y2MwNTMxMDgyMGQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaApAQCAt
MzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlbnNpb25zM0RP
cGVuR0xDb21tb24gOiBwdWJsaWMgRXh0ZW5zaW9uczNEIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FeHRlbnNpb25zM0RPcGVuR0xDb21tb24o
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTY4NDhmY2Vj
YTQxZTk3MzZmMmEzODE3YTlmZDAzY2ViYWUzYWMxMS4uYjk2MzYzYjU1MTkzNTZjOGNkZjQ2NTQz
NjMyNmVkMDZjZWNlZDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3Bw
CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChH
QzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0
ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9u
cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29t
cGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMz
RE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5z
aW9uczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggYjI0ZGYwMzVlMjg4ZTFlYjJmOGFmOWY3YWI5MWQ3NzlkMGFjYTQ5ZS4u
MmEwZTViNzZlNGQ2YmFiNzBlOTBiMmYzZDI4ZWI0M2MwN2Y0MjUxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC02NTYsNyArNjU2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKICAgICBBTkdMRVJlc291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZvclNoYWRl
cjsKIAogICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1lSGFzaE1h
cEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAg
ICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwog
ICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMu
Z2V0KCkpOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIApA
QCAtMTAyMyw3ICsxMDIzLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1i
b2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAgICAgICAgLy8g
QXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZv
cmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBhbmQgYXJlbid0
IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0uCiAgICAgICAg
IGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JT
aGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgICAg
IG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAg
ICAgICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRl
cnMuZ2V0KCkpOwogCiAgICAgICAgIGF1dG8gZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFzaGVk
TmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRl
eCAyNDMwNDZkOTg5YWQ3MzhmN2M5ZjcxNDk1NTY3Yzk2YmIzNGM1NjQxLi43MGEyMGQ1MGMzNTIx
YTYxMjNlNmVmYWYxZjQ3NjhmNjQ5NWNkZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAg
ICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+
KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VV
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAg
ICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBAQCBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0M0RBdHRyaWJ1dGVzCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4
dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV9j
b21waWxlcihpc0dMRVMyQ29tcGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dMU0xfQ09N
UEFUSUJJTElUWV9PVVRQVVQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKKyAgICAsIG1fcHJpdmF0
ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUp
KQogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
M0RUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlZDZjY2YxOTRiYmVlMWUwMGZkNDM5ZjYxYTZkZTYy
ZTQwMzAyZWEzLi44ZmQzYWQ0ZjcyZDc2NGJkOTVkMjIwZjU4MWVkMmI3OTYyODgzYzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTA2
LDkgKzEwNiw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGlj
c0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAjaWYgVVNFKE5JQ09TSUEpCi0gICAg
bV9uaWNvc2lhTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRo
aXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3Np
YTo6R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2Vsc2UKLSAgICBtX3RleG1hcExh
eWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0
aGlzLCByZW5kZXJTdHlsZSk7CisgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2VuZGlmCiAK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTMyNSwxMCArMzI1LDEwIEBAIEV4dGVuc2lv
bnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgIGlmICghbV9leHRl
bnNpb25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlz
IG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CisgICAgICAgIG1f
ZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxz
ZSk7CiAjZWxzZQogICAgICAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3Jl
IHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCi0gICAgICAgIG1f
ZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBH
TENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIG1fZXh0ZW5z
aW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1
cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuICpt
X2V4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXIuY3BwCmluZGV4IDE0ZjFkYmYxOGQ5MWIzOTA3NWUyZDUwZjIxNDliNzc2YmJjMTc0OTMuLjY2
MzIzMTU2OTViYTIxYzI2N2QxNTU5MzJlYmE5MTQ3ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRm
b3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkK
IAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHkt
PmxvY2soKSk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRl
eHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9p
bnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNo
TmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiht
X2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRl
eHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtM
YXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXIuaAppbmRleCA4YjYwMjE0YWJhOWI4M2NhMTkzMGYxMzVjNzUzNDhiMjY2ZmU1Y2FjLi5l
NmYwOWM4Nzk4NTQ4NjMyZWU0YjBhYTVhNTYzMDYxNWEyNGEzNzg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0
Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNz
IEdMQ29udGV4dDsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7CiAKIGNs
YXNzIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllciA6IHB1YmxpYyBQbGF0Zm9ybUxheWVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXIoR3JhcGhpY3NDb250ZXh0M0QmLCBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyU3R5bGUpOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1M
YXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA5NzRiODU3OGI4OGFhNjQzNTA5MWU4
YjBjMzhiYjJkYjcxMGVmMTAyLi5hMmY3NTg2NmUzMjNiOGZkYmE0M2EwMDdkNDQ3YWFhNDY1NzZi
ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIFRleHR1cmVN
YXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKCkKIAogICAgIG1fZGF0YSA9IG5ldyBUZXh0dXJlTWFw
cGVyR0xEYXRhKHBsYXRmb3JtQ29udGV4dCk7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQot
ICAgIG1fdGV4dHVyZVBvb2wgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpdG1hcFRleHR1cmVQb29sPiht
X2NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBtX3RleHR1cmVQb29sID0gbWFrZVVuaXF1ZTxCaXRt
YXBUZXh0dXJlUG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7CiAjZW5kaWYKIH0KIApAQCAtNzkw
LDcgKzc5MCw3IEBAIFJlZjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRl
eHR1cmUoR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyPiBUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOwogfQogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggN2FmZGYzMGEwNWJjYTUz
OTdiODAxOGJmZWJkODllMGUxZGE1MDMzMy4uZTExYTBiYjI3YjgxMGMyZDUyNzZiMmE5YjBjNTA5
Zjg4OTUwNjZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAg
ICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNv
bnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7CiAgICAgdGV4dHVyZS0+
cmVzZXQobV9zaXplKTsKICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJl
LmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1v
dmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFn
cyk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5LmNwcAppbmRleCBjNzE0ZjZkNzhjMWNmMWE2MWQ0ZGZmNmI0MjA1MjFiMDJlY2Q3
YzUwLi4zNzkzNjc1YWM4ZDZiM2MzMmEzYjMxODE5M2U0OWE3YjM3ZGM0ODgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC03MSw4ICs3
MSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNv
bXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvCiAgICAgaWYgKG1fdGFyZ2V0TGF5ZXIgJiYg
bV9jdXJyZW50QnVmZmVyKQogICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xheWVy
KG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKLSAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGlt
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOwotICAgIG1f
Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpU
aW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgp
LCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVh
ZFVwZGF0ZVRpbWVyRmlyZWQpOworICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IG1h
a2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+
KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7CisgICAgbV9jb21wb3NpdG9yVGhy
ZWFkVXBkYXRlVGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7
CiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0
ZVRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkNvbXBvc2l0aW5nVGhy
ZWFkVXBkYXRlVGltZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAzNjdkOGE1M2NmMzcwZDIyMDJkNmYzNDAxY2Rj
YjNhMDJmZjQyYzJiLi5kNDc1NzEwYmEwY2RkZmJjZGJkYTBjNjhjZTMwYjgxZWZhYWQ2OWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcApAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Ojp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKICAgICAvLyBFbnN1cmUgdGhlIFRpbGVkQmFja2lu
Z1N0b3JlIG9iamVjdCwgYW5kIGVuZm9yY2UgYSBjb21wbGV0ZSByZXBhaW50IGlmIGl0J3Mgbm90
IGJlZW4gcHJlc2VudCB5ZXQuCiAgICAgaWYgKCFsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUp
IHsKLSAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1
ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKKyAg
ICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxUaWxlZEJhY2tp
bmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKICAgICAgICAgbV9wZW5k
aW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50ID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGls
ZS5oCmluZGV4IDJjMjRlMDg0ZTMyOTZhNDdlMDllOTYxMGQ3NDhkNmE4OGZlNDk2NTYuLmZiYzI0
NWJlMWU1MDM4NTNjNzMyZjAxZTVhMzRlNTU4NGE1YjNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUu
aApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUaWxlZEJhY2tp
bmdTdG9yZTsKIAogY2xhc3MgVGlsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBDb29yZGluYXRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzYmU0MzExZGVhYTAyNDk3
YzdlZDFjZGNhMTM0NWJhNWE2ODAzMTA5Li40YTY5NzgyMmU0ZGUyY2RiOGI2NmY4MWQ0MDRkOGRi
ZTgyYjQ5ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVU
aWxlcyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgcwogICAgIHVu
c2lnbmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgpOwogICAgIGZv
ciAodW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikgewogICAgICAg
ICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25dOwotICAgICAg
ICBtX3RpbGVzLmFkZChjb29yZGluYXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFRpbGU+KCp0aGlzLCBj
b29yZGluYXRlKSk7CisgICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIG1ha2VVbmlxdWU8
VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKICAgICB9CiAgICAgcmVxdWlyZWRUaWxlQ291bnQg
LT0gdGlsZXNUb0NyZWF0ZUNvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4
IGM4OGU5YmVmOWQ2NmNhMmI1NTAxOGM5MGY0YjBhNDI4YjQ2ODJlZjguLjRlYWYwMDExMjBjNDdm
ZmNlNTVhYjRkZmE5MjE4M2NlOGIzMTk0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0
b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBpZiAobV9tYXBRdWFkKSB7CiAg
ICAgICAgIG1fbGFzdFBsYW5hclF1YWQgPSBvdGhlci5tX2xhc3RQbGFuYXJRdWFkOwogICAgICAg
ICBpZiAob3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAgICAgIG1fbGFz
dFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKm90aGVy
Lm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29u
ZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgVHJhbnNmb3JtU3Rh
dGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVy
KQogICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBudWxscHRyOwogCiAgICAgaWYgKG90aGVy
Lm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVs
YXRlZFRyYW5zZm9ybSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5p
cXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7
CiAgICAgICAgIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTEyOSwxMiArMTI5LDEyIEBAIHZv
aWQgVHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm1Gcm9tQ29uCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBhY2N1bXVsYXRlZCB0
cmFuc2Zvcm0gZnJvbSBsYXN0IHRpbWUsIG11bHRpcGx5IGluIHRoaXMgdHJhbnNmb3JtCiAgICAg
aWYgKG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09
IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQotICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZy
b21Db250YWluZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgICAgICBtX2Fj
Y3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJh
bnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdGlwbHkodHJhbnNm
b3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRlID09IEFjY3VtdWxh
dGVUcmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3RhcnRlZCB0byBhY2N1
bXVsYXRlCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKKyAgICAgICAg
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+
KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAgIH0KICAgICAKICAgICBpZiAoYWNjdW11bGF0
ZSA9PSBGbGF0dGVuVHJhbnNmb3JtKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBUcmFuc2Zv
cm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRRdWFkKiBxdWFk
KQogICAgIC8vIE1hcCB0aGUgcXVhZCBiYWNrIHRocm91Z2ggYW55IHRyYW5zZm9ybSBvciBvZmZz
ZXQgYmFjayBpbnRvIHRoZSBsYXN0IGZsYXR0ZW5pbmcgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBG
bG9hdFF1YWQgYmFja01hcHBlZFF1YWQoKnF1YWQpOwogICAgIG1hcFF1YWQoYmFja01hcHBlZFF1
YWQsIGludmVyc2VEaXJlY3Rpb24oKSk7Ci0gICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9
IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CisgICAgbV9sYXN0
UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVh
ZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBU
cmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sKiB3YXNDbGFtcGVkKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5oCmluZGV4IDEwODYzNzQwMGEyMGZhMmYwOWRmNmFkNDM5MzNjYTdk
YTE3ZjQ4NjEuLmI2MjU4MzZhNWNlMjI1YmY0N2YzMzBjMDhjMjlkOGM3NTY1MmVlNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybVN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgVHJhbnNmb3JtU3Rh
dGUgewogICAgICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0YXRlIChubyBhY2N1
bXVsYXRlZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBxdWFkLgogICAgICAg
ICBBU1NFUlQobV9hY2N1bXVsYXRlZE9mZnNldCA9PSBMYXlvdXRTaXplKCkpOwogICAgICAgICBp
ZiAocXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2Fj
aGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHAKaW5kZXggZDMxYTI1NzlmYjFlMWM3OTQyNWQwMjkwNWViZWJjODhkMTRhZGQ1MC4u
OGY3NzAyNzVkZTY5OTU2OGM4NTE1YWVhMGYyY2ZhMGU1MjA1NjcyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAg
LTY0Miw3ICs2NDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENh
Y2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgIGJvb2wgc3ludGhl
c2l6ZUJvbGQgPSBpc0dESUZvbnRXZWlnaHRCb2xkKHdlaWdodCkgJiYgIWlzR0RJRm9udFdlaWdo
dEJvbGQobG9nRm9udC5sZldlaWdodCk7CiAgICAgYm9vbCBzeW50aGVzaXplSXRhbGljID0gaXNJ
dGFsaWMoZm9udERlc2NyaXB0aW9uLml0YWxpYygpKSAmJiAhbG9nRm9udC5sZkl0YWxpYzsKIAot
ICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZN
b3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNp
emVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9u
LmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1
c2VHREkpOwogCiAjaWYgVVNFKENHKQogICAgIGJvb2wgZm9udENyZWF0aW9uRmFpbGVkID0gIXJl
c3VsdC0+Y2dGb250KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMzg3YTIz
OWY4MjljMmQ3ODA5YzJjOTZkM2ZlMTI0ZGVlMTRiZDNkNy4uNjQ4NDg1YWMyNmNiMjM3NWNmNjU3
NGY4MWZmNGNkNjU2NzJjNTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAt
MTEzLDcgKzExMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgZm9udFJlZmVyZW5j
ZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAgICBpZiAoIWZv
bnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1l
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVm
ZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3Vw
cG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCAxOTA0NDkwMDQ1ZjRlN2U3ZjdkYjgxZDk1ZjBhNmEyNDJiZDU0ODM4Li5lYWI4MDZl
NDJjMDYyZDU1OTc4OTk0NTJlZmU3NDc0ZTU5OWY5MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKQEAgLTQxLDYgKzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRU
YWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1
cmVTZXR0aW5nczsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOwogcHVibGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoSEFORExF
IGZvbnRSZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggYWI3Yzc5MGQ2MGYyZThmNzRhZjAzYzA2YWNmYzcyYzhl
MzljMjJkOS4uZWVlYWZlYmQ5MzNjYTljNzhkZDA1MTQxM2QyMzM0NGNhODUzYjAxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0K
IAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJp
bmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI5NTM1NTAzYzMwNmM1
MDFhYTM5M2YzMWZmZDkyODg1ZWRlOWJkZWYuLmNjN2FkM2VjMzEwYmFmZjlmMmQ1MzEzZWEzN2Vi
YjY2N2M3OWQ0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcApAQCAtNDMsNiArNDMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgaW50IGtGdWxsU2NyZWVuQW5pbWF0
aW9uRHVyYXRpb24gPSA1MDA7IC8vIG1pbGxpc2Vjb25kcyAKIAogY2xhc3MgRnVsbFNjcmVlbkNv
bnRyb2xsZXI6OlByaXZhdGUgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNs
aWVudCAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByaXZh
dGUoRnVsbFNjcmVlbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIEZ1bGxTY3JlZW5Db250cm9sbGVy
Q2xpZW50KiBjbGllbnQpIAogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpAQCAt
MTAzLDcgKzEwNCw3IEBAIExSRVNVTFQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZhdGU6OmZ1
bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQgaHduZCwgVUlOVCBtCiB9CiAKIEZ1bGxTY3JlZW5D
b250cm9sbGVyOjpGdWxsU2NyZWVuQ29udHJvbGxlcihGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVu
dCogY2xpZW50KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UHJpdmF0ZT4odGhp
cywgY2xpZW50KSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFByaXZhdGU+KHRoaXMsIGNs
aWVudCkpCiB7CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CiB9CkBAIC0xMzEsMTMg
KzEzMiwxMyBAQCB2b2lkIEZ1bGxTY3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4oKQog
ICAgIG1fcHJpdmF0ZS0+bV9vcmlnaW5hbEZyYW1lID0gb3JpZ2luYWxGcmFtZTsKIAogICAgIEFT
U0VSVCghbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9i
YWNrZ3JvdW5kV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3Jv
dW5kV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5j
cmVhdGVXaW5kb3coMCk7CiAgICAgOjpBbmltYXRlV2luZG93KG1fcHJpdmF0ZS0+bV9iYWNrZ3Jv
dW5kV2luZG93LT5od25kKCksIGtGdWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24sIEFXX0JMRU5E
IHwgQVdfQUNUSVZBVEUpOwogCiAgICAgbV9wcml2YXRlLT5tX2NsaWVudC0+ZnVsbFNjcmVlbkNs
aWVudFdpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS0+bV9mdWxs
U2NyZWVuV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRl
LmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyA9IG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKICAg
ICBBU1NFUlQobV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwogICAgIG1fcHJpdmF0ZS0+
bV9mdWxsU2NyZWVuV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
Q2Fpcm9XaW4uY3BwCmluZGV4IDEwNjdiOTYwOTNkYjJlZDU5MWEyMWEzMWQ5ZDAyNTZkYzEyOTNl
ODkuLmYxNDQyNTcyY2M2ZDFkNTRiYmVlNThiZGJjMzZlZGY3NzRhYWJiNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWly
b1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dENhaXJvV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9vbCBoYXNBbHBoYSkKIAogICAgIGNhaXJvX3Qq
IGNyID0gY3JlYXRlQ2Fpcm9Db250ZXh0V2l0aEhEQyhkYywgaGFzQWxwaGEpOwogCi0gICAgbV9k
YXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOworICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY3Ip
KTsKICAgICBtX2RhdGEtPnBsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRl
KG1fZGF0YSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGRjOwogICAgIGlmIChwbGF0Zm9ybUNvbnRl
eHQoKS0+Y3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggYzJiYWZh
Zjk2YTE2MDcwODBiNzYzMzk1MjY2MmU3Njc3NjE0YjAwYy4uOTZjODI4MWFmNGIyMmM2Njg2YWNi
MTRjNWU4MmMxZDY5YjkwZGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMs
IElEMkQxRENSZW5kZXJUYXJnZXQqKiByZW5kZXJUYXJnZXQsIFJFCiAKICAgICAoKnJlbmRlclRh
cmdldCktPkJpbmREQyhoZGMsICZyZWN0KTsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFy
Z2V0KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwg
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hk
YyA9IGhkYzsKIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxh
dGZvcm1Jbml0KEhEQyBoZGMsIGJvb2wgaGFzQWxwaGEpCiAgICAgaWYgKCFTVUNDRUVERUQoaHIp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgp
KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKICAgICBtX2RhdGEgPSBuZXcgR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNvbnRleHQp
LCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1f
aGRjID0gaGRjOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4
IGJkNzZlZmJiYTlkMGU4OTdkM2QyODhlODVlOGQyNDQ0Y2M0ZjhmNGUuLjFlYmI1YjA5ZDM4NTM3
YzAxOTIyMGI5NDdkY2FkOTQ0ZDhlMTAxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3ND
b250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAg
ICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxh
dGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU1LDE0ICs1NSwxNCBAQCBHcmFw
aGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNz
Q29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbcmVuZGVyVGFyZ2V0XShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkK
ICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5l
VHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVy
aW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGlj
c0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAg
IG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdl
dCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKQEAg
LTcwLDkgKzcwLDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXgKIAogR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0KQogICAgIDogR3JhcGhp
Y3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9
KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29u
dGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQog
ICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBt
X3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+
KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0
OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRm
b3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAg
ICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRXaW4uY3BwCmluZGV4IDViZGU0Y2VkZjUxNmE5MTc5YTZkM2QzYjNlMzNkMTM0ZWQ1YWI1MTEu
LjFkODA0MjBjZjdlYzZjZDc3NWE2MmJhZWEyMmY5OTA2MDdlYjRjYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6V2luZG93c0JpdG1h
cDo6fldpbmRvd3NCaXRtYXAoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0OjpX
aW5kb3dzQml0bWFwPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVdpbmRvd3NCaXRtYXAoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dzQml0
bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaW5kb3dz
Qml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyRC5jcHAKaW5kZXggMDZjMTc0NTc5YTRiYzEzMDkxZjM0YjU3OTRhYWE5Mjk5M2JiYmEyNC4u
MzVhOWZmNjExMzUxYzMzYzcxNzRkOTJhMWZkY2Y0NDcwZTgxYTg4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJELmNwcApAQCAtMTEyLDggKzExMiw4IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vdGU6IFRoaXMgcGxhY2VzIHRoZSBiaXRtYXBjb250
ZXh0IGludG8gYSBsb2NrZWQgc3RhdGUgYmVjYXVzZSBvZiB0aGUgQmVnaW5EcmF3IGNhbGwgaW4g
dGhlIGNvbnN0cnVjdG9yLgotICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKLSAg
ICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2Rh
dGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmlu
Z0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOworICAgIG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsK
KyAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEu
cGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0Nv
bnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAppbmRleCBlMDY2MzEwYTBh
Y2E3MWJkOWFjODFkZDE2YmEwZGIxNWE3ZDUxMWQ1Li5kMjg1MzhhMTU4MjI4YjJjODllMTgzYzcz
OTE0ZTEyYjhhMTg5MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2Ny
ZWVuV2luZG93LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbkNsaWVudCB7CiB9OwogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5DbGllbnQqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA1
ODM4ZWMxNTdhMmM3YjcxNjNiNzE2ODJhNGViOGM4MDM0ZTk2MzIxLi42ZDY0YWU5YTZlM2E0MTdm
YjE0ZjEyMTY2ZjY4ZDNjOWE1NTI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtODIsNyArODIsNyBAQCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJs
ZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxh
eWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIp
OyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwg
MCwgMCk7CiAgICAgfQogfQpAQCAtMzAxLDcgKzMwMSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uOjpidWZmZXJlZCgpIGNvbnN0CiB7IAotICAgIGF1dG8gcmFuZ2VzID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byByYW5nZXMgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBpZiAobV9wcmVzZW50ZXIgJiYgbV9wcmVzZW50
ZXItPm1heFRpbWVMb2FkZWQoKSA+IDApCiAgICAgICAgIHJhbmdlcy0+YWRkKE1lZGlhVGltZTo6
emVyb1RpbWUoKSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fcHJlc2VudGVyLT5tYXhU
aW1lTG9hZGVkKCkpKTsKICAgICByZXR1cm4gcmFuZ2VzOwpAQCAtODg4LDcgKzg4OCw3IEBAIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1
c3RvbVZpZGVvUHJlc2VudGVyKE1lCiAgICAgbV9zb3VyY2VSZWN0LmJvdHRvbSA9IDE7CiAgICAg
bV9zb3VyY2VSZWN0LnJpZ2h0ID0gMTsKIAotICAgIG1fcHJlc2VudGVyRW5naW5lID0gc3RkOjpt
YWtlX3VuaXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKKyAgICBtX3ByZXNlbnRlckVuZ2luZSA9
IG1ha2VVbmlxdWU8RGlyZWN0M0RQcmVzZW50ZXI+KCk7CiAgICAgaWYgKCFtX3ByZXNlbnRlckVu
Z2luZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uLmgKaW5kZXggOTBlOWI3MjE1NzA4YWMyYTJlZmY3ZDRhNmFkZTE0N2VlZTI4
ODQ2Ni4uYTIxNjYxMTBiMzgwMGYxNzY0NzE2NWMyZDAyYTBkYTllYTk1MTAyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaApAQCAtNDcsNiArNDcsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKE1lZGlhUGxheWVyKik7CiAgICAgfk1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpOwpAQCAtMTY4LDYgKzE2OSw3IEBAIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhCiAgICAgfTsKIAogICAgIGNsYXNzIEFzeW5jQ2FsbGJhY2sgOiBwdWJs
aWMgSU1GQXN5bmNDYWxsYmFjaywgcHVibGljIE1lZGlhUGxheWVyTGlzdGVuZXIgeworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFzeW5jQ2Fs
bGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKiwgYm9vbCBldmVudCk7CiAg
ICAgICAgIH5Bc3luY0NhbGxiYWNrKCk7CkBAIC0xOTEsNiArMTkzLDcgQEAgY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmEKICAgICB0eXBlZGVmIERlcXVlPENPTVB0cjxJTUZTYW1wbGU+PiBWaWRlb1Nh
bXBsZUxpc3Q7CiAKICAgICBjbGFzcyBWaWRlb1NhbXBsZVBvb2wgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFZpZGVvU2FtcGxlUG9vbCgp
ID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+VmlkZW9TYW1wbGVQb29sKCkgPSBkZWZhdWx0
OwpAQCAtMjEyLDYgKzIxNSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgY2xhc3Mg
RGlyZWN0M0RQcmVzZW50ZXI7CiAKICAgICBjbGFzcyBWaWRlb1NjaGVkdWxlciB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVmlkZW9TY2hl
ZHVsZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflZpZGVvU2NoZWR1bGVyKCkgPSBk
ZWZhdWx0OwpAQCAtMjU3LDYgKzI2MSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAg
fTsKIAogICAgIGNsYXNzIERpcmVjdDNEUHJlc2VudGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBEaXJlY3QzRFByZXNlbnRlcigpOwog
ICAgICAgICB+RGlyZWN0M0RQcmVzZW50ZXIoKTsKQEAgLTMxOSw2ICszMjQsNyBAQCBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYQogICAgICAgICAsIHB1YmxpYyBJTUZWaWRlb0Rpc3BsYXlDb250cm9s
CiAgICAgICAgICwgcHVibGljIElNRkFzeW5jQ2FsbGJhY2sKICAgICAgICAgLCBwdWJsaWMgTWVk
aWFQbGF5ZXJMaXN0ZW5lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKICAgICAgICAgQ3VzdG9tVmlkZW9QcmVzZW50ZXIoTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uKik7CiAgICAgICAgIH5DdXN0b21WaWRlb1ByZXNlbnRlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29u
dGV4dERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQuaAppbmRleCA2ZmJlMmI1ZWQ3NWFiM2JhMDRlMzAyNTQ5Y2Nl
YjkxNjFhZjVjMDEzLi4xOTA1NDBlMDMzZDliN2NjOGM1NGI4YjFiZWY3NzY5MmJkNWY5NDI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaApAQCAtNDUsNiArNDUsNyBAQCBzdHJ1Y3QgU2hh
ZG93U3RhdGU7CiB9CiAKIGNsYXNzIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCk7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQoSUQy
RDFSZW5kZXJUYXJnZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCmluZGV4IDMzN2ZhZjM3OGRhNzk1NWJlYTYx
MGFlYzkwNzU3OTY2ZDZjNDgyMDAuLjlkN2Q5MmU4ZWFkOTZhMWJiZGZiZDFkOTJkYzk2NjIxYzZj
NDJmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
S0NBSW1hZ2VRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FJbWFnZVF1ZXVlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXS0NBSW1hZ2VRdWV1ZVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFJldGFpblB0cjxDQUltYWdlUXVldWVSZWY+IG1faW1h
Z2VRdWV1ZTsKIH07CkBAIC01MCwxMyArNTEsMTMgQEAgc3RhdGljIHZvaWQgV0tDQUltYWdlUXVl
dWVSZWxlYXNlKENBSW1hZ2VRdWV1ZVJlZiBpcSkKIH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJ
bWFnZVF1ZXVlKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGNhcGFj
aXR5KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2
YXRlPigpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRl
PigpKQogewogICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlID0gYWRvcHRDRih3a0NBSW1hZ2VR
dWV1ZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBjYXBhY2l0eSkpOwogfQogCiBXS0NBSW1hZ2VRdWV1
ZTo6V0tDQUltYWdlUXVldWUoY29uc3QgV0tDQUltYWdlUXVldWUmIG8pCi0gICAgOiBtX3ByaXZh
dGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3By
aXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2
YXRlLT5tX2ltYWdlUXVldWUgPSBvLm1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDcxYTAwYTMw
YzBmYWVkZDliNDBlYzRmZmFkZjE3ODYzOGYyNWI4NTQuLjQyMjUyZDM0YjU0ZmU2YzJjMjZiNTIy
YzY2MGU4NjJmMDU2ZWYwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKQEAgLTQzLDI0ICs0MywyNCBAQCBlbnVtIENsaXBib2FyZERhdGFUeXBl
IHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4o
IkNMSVBCT0FSRCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9B
UkQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckdsb2JhbFNlbGVjdGlvbigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFz
dGVib2FyZD4oIlBSSU1BUlkiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigi
UFJJTUFSWSIpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0YTo6Y3JlYXRl
KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNy
ZWF0ZSgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NF
UlQoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAK
aW5kZXggNDkwMzcxYWQ4OWVmMmU3OTZlMzQwMWFhYzFkYmI4MDZlYTk2NmViMC4uYWY4ZmYzNDI0
NmJjOTcyZjFhNWZmNzM3Zjk5Mjk4MDlmYjY2OWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApAQCAtMjY2LDYgKzI2Niw3IEBAIFZl
Y3RvcjxHZGtBdG9tPiBQYXN0ZWJvYXJkSGVscGVyOjpkcm9wQXRvbXNGb3JDb250ZXh0KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtEcmFnCiBzdGF0aWMgU2VsZWN0aW9uRGF0YSogc2V0dGluZ0NsaXBi
b2FyZFNlbGVjdGlvbjsKIAogc3RydWN0IENsaXBib2FyZFNldERhdGEgeworICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBDbGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRh
dGEmIHNlbGVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENh
bGxiYWNrKQogICAgICAgICA6IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKQogICAgICAgICAsIHNl
bGVjdGlvbkNsZWFyZWRDYWxsYmFjayhXVEZNb3ZlKHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykp
CkBAIC0zMDAsNyArMzAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2Fy
ZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWwKIAogICAgIGlmIChu
dW1iZXJPZlRhcmdldHMgPiAwICYmIHRhYmxlKSB7CiAgICAgICAgIFNldEZvclNjb3BlPFNlbGVj
dGlvbkRhdGEqPiBjaGFuZ2Uoc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgY29uc3RfY2FzdDxT
ZWxlY3Rpb25EYXRhKj4oJnNlbGVjdGlvbikpOwotICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPENsaXBib2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBX
VEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IG1h
a2VVbmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdU
Rk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9h
cmRfc2V0X3dpdGhfZGF0YShjbGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENs
aXBib2FyZENvbnRlbnRzQ2FsbGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywg
ZGF0YS5nZXQoKSkpIHsKICAgICAgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShj
bGlwYm9hcmQsIG51bGxwdHIsIDApOwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJk
X3NldF93aXRoX2RhdGEoKSBzdWNjZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sg
dGFrZXMgdGhlIG93bmVyc2hpcCBvZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAppbmRleCBi
ZGNjOTllODU5ZDQ5NzUwNzhmZjNjNWUyZWJjMzg1ZDliOTViOTUyLi43M2UwNzU4YTZlZGQxZTE5
MzIzMTA4M2Y4OWE3ZTdmZGYyMGQxMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKQEAgLTM1LDIwICszNSwyMCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyVGhlbWVHYWRnZXQ+IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoY29u
c3QgUmVuZGVyVGhlbWVHYQogewogICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CiAgICAgY2FzZSBS
ZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJpYzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0
aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8s
IHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0
OjpUeXBlOjpUZXh0RmllbGQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0Pihp
bmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdh
ZGdldDo6VHlwZTo6UmFkaW86CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6Q2hl
Y2s6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2Fk
Z2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdz
LCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QXJyb3c6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGlu
Zm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRp
b24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6Okljb246Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50
LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZUljb25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBj
YXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpTY3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQs
IHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRo
ZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAg
ICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBz
aWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKaW5kZXggMDVkMTJkZDllYWZiZWYwMmE0NTlj
YTUyNzY0MTdhNWI5YjBlODk3Ni4uY2E2ZWQ5MThhNTAzM2UyOTc2ZGI4NGQ4OWMyMDQ4ODcwMGYw
MmJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1l
V2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVX
aWRnZXQuY3BwCkBAIC00Miw0OSArNDIsNDkgQEAgUmVuZGVyVGhlbWVXaWRnZXQmIFJlbmRlclRo
ZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZShUeXBlIHdpZGdldFR5cGUpCiAgICAgYXV0byBhZGRSZXN1
bHQgPSB3aWRnZXRNYXAoKS5lbnN1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdpZGdldFR5cGUp
LCBbd2lkZ2V0VHlwZV0oKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVXaWRnZXQ+IHsK
ICAgICAgICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVX
aWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZF
UlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZF
UlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2Ug
UmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdDoKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJ
RU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5k
ZXJUaGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZF
UlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xsYmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJ
Wk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hP
UklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFy
PihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJ
bmRpY2F0b3IpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3Jv
bGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1v
ZGU6OkluZGljYXRvcik7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZl
cnRpY2FsU2Nyb2xsSW5kaWNhdG9yTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRo
ZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0
aWNhbFBvc2l0aW9uOjpMZWZ0KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlw
ZTo6SG9yaXpvbnRhbFNjcm9sbEluZGljYXRvcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRB
TCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hP
UklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAg
ICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpDaGVja0J1dHRvbjoKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJU
aGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpU
eXBlOjpDaGVjayk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlJhZGlv
QnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVU
b2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVy
VGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlvKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVt
ZVdpZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhl
bWVCdXR0b246OkRlZmF1bHQ6Ok5vKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6
VHlwZTo6QnV0dG9uRGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVt
ZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6
VHlwZTo6Q29tYm9Cb3g6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZUNvbWJvQm94PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVDb21ib0JveD4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
RW50cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVu
dHJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4o
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VsZWN0ZWRFbnRyeToK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJl
bmRlclRoZW1lRW50cnk6OlNlbGVjdGVkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNlYXJjaEVudHJ5OgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+
KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNwaW5CdXR0b246Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+
KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+
KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2xpZGVy
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+
KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNsaWRlcjoKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5U
QVRJT05fSE9SSVpPTlRBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpOwogICAgICAgICBjYXNlIFJl
bmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jl
c3NCYXI6Ok1vZGU6OkRldGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRl
dGVybWluYXRlKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SW5kZXRl
cm1pbmF0ZVByb2dyZXNzQmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5k
ZXRlcm1pbmF0ZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVBy
b2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6TGlzdFZpZXc6Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lSWNvbj4oKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVt
ZVdpZGdldDo6VHlwZTo6V2luZG93OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVXaW5kb3c+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVdpbmRvdz4oKTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVy
VGhlbWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKEd0a09yaWVudGF0aW9uIG9yaWVu
dGF0aW9uLCBNb2RlIG1vZGUKICAgICBpbmZvLnR5cGUgPSBSZW5kZXJUaGVtZUdhZGdldDo6VHlw
ZTo6R2VuZXJpYzsKICAgICBpbmZvLm5hbWUgPSAiY29udGVudHMiOwogICAgIGluZm8uY2xhc3NM
aXN0LmNsZWFyKCk7Ci0gICAgbV9jb250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1f
c2Nyb2xsYmFyLmdldCgpKTsKKyAgICBtX2NvbnRlbnRzID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9z
Y3JvbGxiYXIuZ2V0KCkpOwogICAgIGluZm8ubmFtZSA9ICJzbGlkZXIiOwogICAgIG1fc2xpZGVy
ID0gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShpbmZvLCBtX2NvbnRlbnRzLT5jaGlsZChtX3Ry
b3VnaFBvc2l0aW9uKSk7CiB9CkBAIC0xOTcsNyArMTk3LDcgQEAgUmVuZGVyVGhlbWVDb21ib0Jv
eDo6UmVuZGVyVGhlbWVDb21ib0JveCgpCiAgICAgfTsKICAgICBpbmZvLm5hbWUgPSAiYm94IjsK
ICAgICBpbmZvLmNsYXNzTGlzdCA9IHsgImhvcml6b250YWwiLCAibGlua2VkIiB9OwotICAgIG1f
Ym94ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09S
SUVOVEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKKyAgICBt
X2JveCA9IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRB
VElPTl9IT1JJWk9OVEFMLCBjaGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CiAgICAgUmVuZGVy
VGhlbWVHYWRnZXQqIGJ1dHRvbiA9IG1fYm94LT5jaGlsZCgwKTsKICAgICBpbmZvLmNsYXNzTGlz
dC5yZW1vdmVMYXN0KCk7CiAgICAgbV9idXR0b25Cb3ggPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3Jl
YXRlKGluZm8sIGJ1dHRvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDg0MDdj
MTEwMWRkZDZkYjZlMzc4ZGVmY2IzYWI4MjZiZjcyNjQ1NGQuLjc4Njk3ZWIwMDAwZjdmN2I4MmE3
ZDBlY2Y1Zjk4NWExZTkyODljMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC05
OCw3ICs5OCw3IEBAIGJvb2wgQk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIoYm9vbCBvbmx5
U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3JlYWRlcikgewotICAg
ICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1f
ZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwgZmFsc2UpOworICAgICAgICBtX3JlYWRlciA9
IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0
YU9mZnNldCwgZmFsc2UpOwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3YmE3ZWQ5MTAxY2Uy
NWE5YmY2ZTIzMTA4N2JmMGJjMTE0Y2MyMmQ2Li40ZjM0ODdlMzM0NzY0MDU0NzRjZjg2YjVjNjA2
ZDJjMTk4OGM3Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzM0LDcgKzMz
NCw3IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUs
IEdJRlF1ZXJ5IHF1ZXJ5LCBib29sIGFsbERhdGFSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9yZWFkZXIpIHsKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRklt
YWdlUmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEdJRkltYWdl
UmVhZGVyPih0aGlzKTsKICAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDFjY2E1ZTU5ZWViMzUxYjA1
OGEyMWRiMTM0ZjY0Mzc5MWU1MDc3Y2EuLmQ3NzE4NmVhOTczOWJkZmIyYzU2MjI4ZWU0Y2Y1ZTg4
MjhkODg1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBA
IGJvb2wgR0lGRnJhbWVDb250ZXh0OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6CiAgICAgICAgIGlmICghaXNEYXRhU2l6ZURlZmluZWQo
KSB8fCAhaXNIZWFkZXJEZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
ICAgICBtX2x6d0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNsaWVu
dCwgdGhpcyk7CisgICAgICAgIG1fbHp3Q29udGV4dCA9IG1ha2VVbmlxdWU8R0lGTFpXQ29udGV4
dD4oY2xpZW50LCB0aGlzKTsKICAgICAgICAgaWYgKCFtX2x6d0NvbnRleHQtPnByZXBhcmVUb0Rl
Y29kZSgpKSB7CiAgICAgICAgICAgICBtX2x6d0NvbnRleHQgPSBudWxscHRyOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgR0lGSW1hZ2VSZWFkZXI6
OnNldFJlbWFpbmluZ0J5dGVzKHNpemVfdCByZW1haW5pbmdCeXRlcykKIHZvaWQgR0lGSW1hZ2VS
ZWFkZXI6OmFkZEZyYW1lSWZOZWNlc3NhcnkoKQogewogICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5
KCkgfHwgbV9mcmFtZXMubGFzdCgpLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIG1fZnJhbWVzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7
CisgICAgICAgIG1fZnJhbWVzLmFwcGVuZChtYWtlVW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9m
cmFtZXMuc2l6ZSgpKSk7CiB9CiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIHRvIGNsb3Nl
IHRvIGRvTFpXKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDE4NzBiYjE2MGI4
NDk0OGYwYjU5ZGU0NTExNjM2YmE0YzBmMzhmMmUuLmZmNmExYzg3YWU2ZjA1YjQ5Y2NjMTI4YWJl
MDVjMzAzZDZlZWJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBoYXZlIGFscmVhZHkgc2l6ZWQgbV9mcmFtZUJ1
ZmZlckNhY2hlIGJlZm9yZSB0aGlzLCBhbmQKICAgICAgICAgICAgIC8vIHdlIG11c3Qgbm90IHJl
c2l6ZSBpdCBhZ2FpbiBsYXRlciAoc2VlIGNhdXRpb24gaW4gZnJhbWVDb3VudCgpKS4KICAgICAg
ICAgICAgIEFTU0VSVChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpID09IG1fZGlyRW50cmllcy5z
aXplKCkpOwotICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlx
dWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUp
OworICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VS
ZWFkZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOwogICAgICAgICAg
ICAgbV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgICAgICAg
ICAgbV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0QnVmZmVyKCZtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5k
ZXhdKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZWJm
ZTQ1MzBmNzE4NTMwNzJlM2E1M2QyZmNjNjYwZTdhMDk2Y2Y0My4uMGMwNTQ5YjVhM2VlMDRhZjI5
Y2E3ZDYwNjAzNWZjZmU2MTc0ODUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBv
bmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxKUEVHSW1h
Z2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8SlBFR0ltYWdl
UmVhZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2Ug
YnV0IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFp
bGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjMThhMzliNTkxMzNhMzE4ZjE1
MTA1ODFlOGY5MWViZGQ3Njg3OWFiLi42MmNiOWIyMmEwMWYyNmU5ZjJjZDQxZGVhMzgxYjM2MzY4
OTdlZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBA
IHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5zaWduZWQgaGFs
dEF0RnJhbWUsIGJvb2wgYWxsRGF0YVJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9y
ZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFnZVJlYWRl
cj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxQTkdJbWFnZVJlYWRlcj4o
dGhpcyk7CiAKICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2
ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IDIw
OWY4OGY0N2EzYjdjZGMwMTQzZGU5MmUyNGJhZGRmOTY2NGI1ZjQuLmNhZTNkY2YxNjQ3OTZjZWVj
YjY4YjI0NDhmMTEzM2MxMGVjOWMyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRpbGVDYWNoZShXQUtXaW5kb3cqIHdpbmRvdykK
ICAgICA6IG1fd2luZG93KHdpbmRvdykKICAgICAsIG1fdG9tYnN0b25lKGFkb3B0TlMoW1tMZWdh
Y3lUaWxlQ2FjaGVUb21ic3RvbmUgYWxsb2NdIGluaXRdKSkKLSAgICAsIG1fem9vbWVkT3V0VGls
ZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUp
KQorICAgICwgbV96b29tZWRPdXRUaWxlR3JpZChtYWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigq
dGhpcywgbV90aWxlU2l6ZSkpCiAgICAgLCBtX3RpbGVDcmVhdGlvblRpbWVyKCp0aGlzLCAmTGVn
YWN5VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1lckZpcmVkKQogewogICAgIFtob3N0TGF5ZXIo
KSBpbnNlcnRTdWJsYXllcjptX3pvb21lZE91dFRpbGVHcmlkLT50aWxlSG9zdExheWVyKCkgYXRJ
bmRleDowXTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0
U2NhbGVDaGFuZ2UoKQogCiAgICAgaWYgKG1fY3VycmVudFNjYWxlICE9IG1fem9vbWVkT3V0VGls
ZUdyaWQtPnNjYWxlKCkpIHsKICAgICAgICAgaWYgKCFtX3pvb21lZEluVGlsZUdyaWQpIHsKLSAg
ICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGls
ZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKKyAgICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3Jp
ZCA9IG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKICAgICAg
ICAgICAgIFtob3N0TGF5ZXIoKSBhZGRTdWJsYXllcjptX3pvb21lZEluVGlsZUdyaWQtPnRpbGVI
b3N0TGF5ZXIoKV07CiAgICAgICAgICAgICBob3N0TGF5ZXJTaXplQ2hhbmdlZCgpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdy
aWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCmluZGV4
IDY2NDdlYzNhMzZkMTU4Nzg2OTRmMDdkMDJiMWZiMWU4YzM1MGQ1M2YuLjMwZWY5ZmMzMWM4N2Yx
MWJmYWZlNGNhNmE5ZWE4MTI0ZDVmYzNhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlR3JpZC5oCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIExlZ2FjeVRpbGVHcmlkVGlsZTsKIAogY2xhc3MgTGVnYWN5VGlsZUdyaWQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgSW50UG9p
bnQgVGlsZUluZGV4OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IDE5MWFjNzY5NjIxNTEyMTUzZGJkY2IwNzhkZDY2ZjQ2NTUzYmMyMWQuLjAy
NzFiOTNlNzA1Y2UyYzQyZDYzMmZlMmRiMjlhYTQ2ZTgzNmQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02NiwxMiArNjYsMTIgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oImRhdGEg
aW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9h
cmQ+KCJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9hcmQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0
ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsKIH0KIAogI2VuZGlmCkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFu
Z2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggYTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEz
MWNlNjQ2OTAyNTY4NS4uYzJiNWEwYjA4YmRmNzVlOGMwMWNkOWJkMmQ1MWMzMTQ5MzA1ZjM4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC04NCw3ICs4NCw3
IEBAIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZO
ZWVkZWQoTlNVUkwgKnVybCwgTlNTdHJpbmcKICAgICBpZiAoW1FMUHJldmlld0dldFN1cHBvcnRl
ZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OnVwZGF0ZWRNSU1FVHlwZS5nZXQoKV0pIHsK
ICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB1dGkgPSBhZG9wdE5TKFBBTDo6c29mdExpbmtf
UXVpY2tMb29rX1FMVHlwZUNvcHlVVElGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIHVwZGF0ZWRNSU1F
VHlwZS5nZXQoKSkpOwogCi0gICAgICAgIGF1dG8gY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0KCkpOworICAgICAgICBhdXRvIGNvbnZl
cnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKICAg
ICAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZXZpZXdSZXF1ZXN0ID0gY29udmVydGVyLT5wcmV2aWV3
UmVxdWVzdCgpOwogCiAgICAgICAgIC8vIFdlIHVzZSBbcmVxdWVzdCBVUkxdIGhlcmUgaW5zdGVh
ZCBvZiB1cmwgc2luY2UgaXQgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KaW5kZXggMTA3Yzc3Yzc1M2Vh
YjdkOTJkYTI5NDg3Y2E2ZjY1ZjgwNzA0ODIxMy4uNmQ5Y2NlMTViODc0ZjE1ZjE1NDg3NWVhMGVl
NmI5ZjEwMzVhODM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3Jl
YXRlKFJlbW90ZUNvbW1hCiAgICAgaWYgKCFNZWRpYVBsYXllckxpYnJhcnkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21t
YW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29t
bWFuZExpc3RlbmVySU9TPihjbGllbnQpOwogfQogCiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6
OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNs
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmlt
YXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklP
Uy5tbQppbmRleCAwMWYwYTliYjIwYTI0OGI2OTk4ODU2NDcwYWVlMzc0YTk4Y2ZhNTFjLi5lZDYz
MmVhNWUzZjU1OTdlOWQ3NmZkMmU1NTY5NTYxZmU2YzRjMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBT
Y3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJs
ZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxh
YmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9ySU9TOjpTY3JvbGxBbmltYXRvcklPUyhTY3Jv
bGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKaW5kZXggMDU0M2VkNWU5ZmM5ZmNmZTNi
YmFhNDAzNTVlNDA3MmY5ZjNjM2Y0MC4uZjhhNjFlYzcwYzBjMWE0Y2QzNzdmMGU3Y2Q2NzZlZmI5
ZGU1YmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0
ZWJvYXJkTGliV1BFLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKTsKIH0KIAogUGFzdGVib2FyZDo6UGFz
dGVib2FyZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IDUxNTIwZGNiYmVhNTkyMTg1YzMyNjcwMmNiYTY5ZmU4OGI0ZDRkZGUuLjhlYjE1Y2Y4
ODUyZDk4NTc0NDdlMDU5YzM4YWNhZWJhMjM0MTVkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xMDAsNyArMTAwLDcgQEAgUGFzdGVib2Fy
ZDo6UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcHJvbWkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oTlNHZW5l
cmFsUGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQ
Ym9hcmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCkBAIC0x
MDgsMTMgKzEwOCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PihOU0RyYWdQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJh
Z1Bib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5h
bWVzKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3Rl
Ym9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yy5tbQppbmRleCAwNWNjMDg5NTdlMWQ1MDEyNGRkNjMyZTJhNGM4OTIxMjk4OTY5NjExLi4xYWEy
Y2Q4MDEzMmYyYzIxZWUzOGI5ZmZiZGI4MzM3M2JiZjRjMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGllbnQpOwogfQogCiB2b2lkIFJlbW90
ZUNvbW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3VwcG9ydGVkQ29tbWFuZHMoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IGE4MzE3
NTEyMmVjMmU0YjZiNmRlNTFiZTZkZjUyNjRiNDFhMWY4YzQuLjY4NjBlMzNjM2EzYjIxNTYzMDVm
YjMxYWY0MjdkYzQ5MDIzNTg3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6
OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQog
CiBTY3JvbGxBbmltYXRvck1hYzo6U2Nyb2xsQW5pbWF0b3JNYWMoU2Nyb2xsYWJsZUFyZWEmIHNj
cm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmlu
ZGV4IDFiOWRjNTM0NWI4ODFlYjM2ZDk2ZmNlMzU4MmRmMGU1NGExMzg1YmEuLmUyNDQ1YmM4MjNm
ODZlMDU1YjBlNTc4NzdkNmNmNTMxYTRmZmNjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlQVZGSW1wbC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVh
dGUKICAgICBpZiAoIXdyaXRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5y
ZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFj
a0lkKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
Pih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3Zl
KHZpZGVvVHJhY2tJZCkpOwogfQogCiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYg
d3JpdGVyLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQsIFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCmluZGV4IGQ0YWRiMTUyYmQ0YmFlZjdl
ZjdiZjA1NWY2ZDlhODNkODY3ZTY3ZWIuLmEyMmY1NzFiYzUxNjExZjYxNzQ0OTEwNGNmNWZjODYw
ZTUyZTlhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaApAQCAtMzQs
NiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7
CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbCBmaW5hbCA6IHB1YmxpYyBNZWRp
YVJlY29yZGVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+
IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2Fw
dHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCBkYjk0ZmRhZjgzYThh
YmQ2N2FmY2ZkNmVhMzY5ZmFhODljNDZjM2UyLi41OWFiMzg0MGZkNzM2Y2ExNDUwMTZjN2Y2NjBl
Y2EzYjA5MDMyNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlLmNwcApAQCAtOTEsMTQgKzkxLDE0IEBAIEF1ZGlvQ2FwdHVyZUZhY3Rvcnkm
IEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6ZmFjdG9yeSgpCiAKIEdTdHJlYW1lckF1ZGlv
Q2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1
cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lTWVkaWFT
b3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0cmluZyB7IGRldmljZS5w
ZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hT
YWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0Nh
cHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1
ZGlvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7
CiB9CiAKIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJl
U291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2Fs
dCkKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
QXVkaW8sIFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0
KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1
cmVyPigpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVy
ZXI+KCkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKaW5kZXggOTUzZjNhOGEwZTRmNmEwNjJiOWI5NGE4ZjQx
NTFhNDlmMWE0MzAxZC4uMzQxNTQ5MjUxZWQ1NzFiNzVlZjVkMGMyZGVkZjFlNzdiNzUyMzc4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckF1ZGlvRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaApAQCAtMjksNyArMjksNyBAQAog
I2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBHU3RyZWFtZXJBdWRpb0RhdGEgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgeworY2xhc3Mg
R1N0cmVhbWVyQXVkaW9EYXRhIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKIHB1
YmxpYzoKICAgICBHU3RyZWFtZXJBdWRpb0RhdGEoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxl
LCBHc3RBdWRpb0luZm8gaW5mbykKICAgICAgICAgOiBtX3NhbXBsZShXVEZNb3ZlKHNhbXBsZSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCmluZGV4IGJiZTVhZTczOTU0YWU1M2Nj
MjE2NTc5M2VjMDk2YTg4NzkyYWQ0ZjIuLmY5MmE2YTliMTI2MTEwMGYxOTM0NWY0ZWNhMjE5NGJm
ZTFiOGEzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oCkBAIC0zMiw2ICsz
Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lckNhcHR1cmVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJDYXB0
dXJlcihHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLCBHUmVmUHRyPEdzdENhcHM+KTsKICAgICBHU3Ry
ZWFtZXJDYXB0dXJlcihjb25zdCBjaGFyKiBzb3VyY2VGYWN0b3J5LCBHUmVmUHRyPEdzdENhcHM+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3Bw
CmluZGV4IGIzYWYzNWFmODI0ODhkZDRjZjgyMWNkM2VlYWU2M2Q5Y2YxYWNkODQuLmYzZTUxODZi
ZjY2ODc4MWVmYjEzOTVmZTg1MWIzNDMyM2M0MmEzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIEdz
dFN0cmVhbSogd2Via2l0TWVkaWFTdHJlYW1OZXcoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHRy
YWNrKQogCiBjbGFzcyBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIKICAgICA6IHB1Ymxp
YyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFtVHJhY2tP
YnNlcnZlcigpIHsgfTsKICAgICBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIoV2ViS2l0
TWVkaWFTdHJlYW1TcmMqIHNyYykKQEAgLTE0Myw2ICsxNDQsNyBAQCBjbGFzcyBXZWJLaXRNZWRp
YVN0cmVhbVRyYWNrT2JzZXJ2ZXIKIAogY2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcgog
ICAgIDogcHVibGljIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFt
T2JzZXJ2ZXIoKSB7IH07CiAgICAgV2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcihXZWJLaXRNZWRp
YVN0cmVhbVNyYyogc3JjKQpAQCAtMzUxLDggKzM1Myw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9t
ZWRpYV9zdHJlYW1fc3JjX2NsYXNzX2luaXQoV2ViS2l0TWVkaWFTdHJlYW1TcmNDbGFzcyoga2xh
c3MpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2luaXQoV2ViS2l0TWVk
aWFTdHJlYW1TcmMqIHNlbGYpCiB7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYp
OwotICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFtVHJhY2tP
YnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyPihzZWxm
KTsKKyAgICBzZWxmLT5tZWRpYVN0cmVhbU9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRp
YVN0cmVhbU9ic2VydmVyPihzZWxmKTsKICAgICBzZWxmLT5mbG93Q29tYmluZXIgPSBnc3RfZmxv
d19jb21iaW5lcl9uZXcoKTsKICAgICBzZWxmLT5maXJzdEF1ZGlvQnVmZmVyUHRzID0gR1NUX0NM
T0NLX1RJTUVfTk9ORTsKICAgICBzZWxmLT5maXJzdEZyYW1lUHRzID0gR1NUX0NMT0NLX1RJTUVf
Tk9ORTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZS5jcHAKaW5kZXggZTVkOWIwZTAyNzZlZGRhNWRiZDUyMGJjMTBmMzUxODBkMDE1ZDY5Yi4uOTdi
ZTFmMTJmYmIyMmRjMzU4Yzk5YzgzOWY5ODFmMTY1NmE4ZTEyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEyNywxNCArMTI3
LDE0IEBAIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
OjpkaXNwbGF5RmFjdG9yeSgpCiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBT
dHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIgKnNvdXJjZV9mYWN0b3J5KQogICAgIDogUmVh
bHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSks
IFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdT
dHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKKyAgICAsIG1fY2FwdHVyZXIo
bWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9yeSkpCiB7CiAg
ICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZp
Y2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lVmlkZW9DYXB0dXJl
U291cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2Uu
bGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtl
X3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJl
cihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5p
dGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9y
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJl
YW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaAppbmRleCBlNGQ1MDhlMzE3OWFjNDdiZjFkMTBmNGYy
ODdjNTQ3YmMyNTYwMDJhLi5lZmRhMjliZTM5NzE4YmJhNzkxMzQxOGNjNzNlYjlhZDM2ODRmOGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5
LmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVh
bWVyVmlkZW9EZWNvZGVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rv
cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1l
clZpZGVvRGVjb2RlckZhY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBuZXdTb3VyY2UoU3RyaW5n
IHRyYWNrSWQsIEdzdEVsZW1lbnQgKnNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKaW5kZXggNjk5NWM2MDJjYjE3NDQ3ZmE3
NDFkMzlkNDQ5NGMzNTYxZGMxYmI4Mi4uODM1ODFlODVhMzk2MmQ5N2UwMTc0M2IxMGU1NmNlYWEx
NTFjZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29k
ZXJGYWN0b3J5LmNwcApAQCAtNjAsNiArNjAsNyBAQCBHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0
X3dlYnJ0Y2VuY19kZWJ1Zyk7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1l
clZpZGVvRW5jb2RlciA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9FbmNvZGVyKGNv
bnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmKQogICAgICAgICA6IG1fZmlyc3RGcmFtZVB0cyhH
U1RfQ0xPQ0tfVElNRV9OT05FKQpAQCAtNTEyLDE0ICs1MTMsMTQgQEAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9FbmNvZGVyPiBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVh
dGVWaWRlb0UKICAgICAgICAgZ19vYmplY3RfZ2V0KHdlYnJ0Y2VuY29kZXIuZ2V0KCksICJlbmNv
ZGVyIiwgJmVuY29kZXIub3V0UHRyKCksIE5VTEwpOwogCiAgICAgICAgIGlmIChlbmNvZGVyKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4o
Zm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZQOEVuY29k
ZXI+KGZvcm1hdCk7CiAKICAgICAgICAgR1NUX0lORk8oIlVzaW5nIFZQOCBFbmNvZGVyIGZyb20g
TGliV2ViUlRDLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx3ZWJydGM6Okxp
YnZweFZwOEVuY29kZXI+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazx3ZWJydGM6OkxpYnZweFZwOEVuY29kZXI+KCk7CiAgICAgfQogCiAgICAgaWYg
KGZvcm1hdC5uYW1lID09IGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9F
bmNvZGVyRmFjdG9yeS5oCmluZGV4IDc5NmEyMGY5NDVlM2E5NTE5OGVjZTEwZmU3MGQ5YjUyZjcy
MzNkMTEuLjE0ODNhMmIyMGIzNTE1YzcxYjdhMGM3YTUyMjYyNmU5ZmY1MzkyMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFt
ZXJWaWRlb0VuY29kZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaApAQCAtMjgs
NiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJWaWRlb0Vu
Y29kZXJGYWN0b3J5IGZpbmFsIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlk
ZW9FbmNvZGVyRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZC5oCmluZGV4IGRjNmY4ZjNmYjA1N2ZiNTQwZDkwYzAwMjI2OGE5OTc3NDQx
MDI3N2YuLjRhMDYxZmNjOTUzYjEzZDU4M2JhZTU1NDUxNTViY2UwOGRmOGY5ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEVE1GU2VuZGVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCkBAIC00MCw2ICs0
MCw3IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBSVENEVE1G
U2VuZGVyQmFja2VuZCwgcHJpdmF0ZSB3ZWJydGM6OkR0bWZTZW5kZXJPYnNlcnZlckludGVyZmFj
ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGliV2Vi
UlRDRFRNRlNlbmRlckJhY2tlbmQocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RHRtZlNlbmRl
ckludGVyZmFjZT4mJik7CiAgICAgfkxpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCAyMDdhYjc4YTlhMmJiZTQwYTBl
ZDRkYTY5NTY5YWVkYjEyMjk5ZTIwLi43NDUzM2M1ZmE0ZGYwZDRlNWE2NGQ3NWNlNjI3YjMyNDJj
NDZiODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTc5LDkg
Kzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRB
ZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIH0KIAogY2xhc3MgQmFzaWNQYWNrZXRT
b2NrZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCYXNpY1Bh
Y2tldFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQmIG5ldHdvcmtUaHJlYWQpCi0gICAgICAgIDog
bV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rv
cnk+KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAgOiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+
KCZuZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAgfQogCkBAIC0xNzksNyArMTgwLDcgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMoUGVlckNv
bm5lY3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWdu
YWxpbmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNTRVJUKHJlc3VsdCk7CiAKLSAgICBmYWN0b3J5
QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
QXVkaW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFuZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpOwogfQogCiBzdGF0aWMgaW5saW5l
IFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRz
KCkKQEAgLTI4OCwxMCArMjg5LDEwIEBAIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJD
b25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlCiAgICAgYXV0
byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5l
dHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKIAogICAgIGlmICghZmFjdG9yeUFuZFRocmVh
ZHMubmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5h
Z2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAg
ICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogCiAgICAgaWYgKCFm
YWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5KQotICAgICAgICBmYWN0b3J5QW5k
VGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1BhY2tl
dFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKKyAgICAg
ICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSA9IG1ha2VVbmlxdWU8QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZCk7
CiAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeS0+c2V0RGlzYWJsZU5v
bkxvY2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKTsK
IAogICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgKmZhY3RvcnlBbmRU
aHJlYWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFj
dG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbnVsbHB0cik7CkBAIC0zMTQsNyArMzE1LDcg
QEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExp
YldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0
OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxvY2F0b3I7CiAgICAgZmFjdG9yeUFuZFRocmVh
ZHMuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9pZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgewot
ICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Y3JpY2tl
dDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29ya01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0
b3J5KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRBbGxvY2F0b3IgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFu
YWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwogICAgICAgICBpZiAoIW1fZW5hYmxlRW51bWVy
YXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAgICAgICAgICAgIGJhc2ljUG9ydEFsbG9jYXRv
ci0+c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRvci0+ZmxhZ3MoKSB8IGNyaWNrZXQ6OlBPUlRB
TExPQ0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1FUkFUSU9OKTsKICAgICAgICAgcG9ydEFsbG9j
YXRvciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2NhdG9yKTsKQEAgLTMzNSw3ICszMzYsNyBAQCBy
dGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNh
dGVHZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZhY3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGlj
RmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAg
ICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcikKLSAgICAgICAg
ZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+KGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGlu
Z1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya1RocmVhZC5nZXQoKSk7Cisg
ICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFj
dG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5u
ZXR3b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJldHVybiAqZmFjdG9yeUFuZFRocmVhZHMuY2Vy
dGlmaWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmlu
ZGV4IGJkZjA5MDA0MGM5MDY1N2Y0OWYwY2U0YWUyODA3NzM4YTFlOGJlNzkuLjdhYThkZTJlYjNh
NGM1NTVlMDlhNjBkN2Q3YzNhZDgzMTliMTE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5oCkBAIC02NCw2ICs2NCw3IEBAIHN0cnVjdCBSVENSdHBDYXBhYmlsaXRpZXM7CiBl
bnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsgTm90SW1wbGVtZW50ZWQsIEJhZFBhcmFtZXRl
ciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExp
YldlYlJUQ1Byb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiBjcmVhdGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmgKaW5kZXggNzcyYTM5NWYwY2Ji
NDNlNzMwNzUwY2NiOTYzNjE2MWNhYTM0MWM2My4uZDNjMzgzOTVjMDc3ZjM0NjA0YjViYjBmNGI0
M2FlMTEwMGNkZjIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2Nv
YS5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIFZpZGVvRW5jb2RlckZhY3Rvcnk7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyQ29j
b2EgOiBwdWJsaWMgTGliV2ViUlRDUHJvdmlkZXIgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKSA9IGRlZmF1bHQ7CiAg
ICAgfkxpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDE1ZTJhODc4OWMwN2ZiMGQwYWVjNmY2
YzIwZjdiYjE3ZmE4ZGI3ZDIuLjViODI3M2IwODUxOTZmZmQzMGU0ZDdhN2Y2NTUxMGJlYzA4MDMx
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVy
LmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIGJvb2wgTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2
YWlsYWJsZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+
IExpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5Pigp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBMaWJX
ZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAppbmRleCA4MmNiY2IxYzY2ZDMyZWExOGNkZWIxNjc5
MzhkNjhkM2IxMmU0MTlhLi5mN2Q4NWRjNjBhNjFhODE0NmRiYTBkMDNlNTVkNzU3NjJmZTkwZjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
LmNwcApAQCAtMTg4LDggKzE4OCw4IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzCiAgICAgICAg
IGlmICghcmVtb3RlSU9Vbml0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1faW5w
dXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
PihpbnB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7
CisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlv
biA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlv
bik7CiAKICAgICAgICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVh
dGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMiwgc3RyZWFtVHJhY2soKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBlOGUzZDM0ODZkYTQzYWFj
MWRkNTRiNzhlNmI0ZGY0ZGM5ODE2NzkwLi42MTFhYzE2YjllY2I4Njg5OGEzNzI2NDcxYzc2MjA3
MTJmYjliMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBA
IC0xMzQsNyArMTM0LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25m
aWd1cmUoKQogICAgIGNvbnN0IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CiAgICAgRmls
bE91dEFTQkRGb3JMUENNKG1fc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCksIGNoYW5uZWxDb3Vu
dCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxv
YXQsIGlzRmxvYXQsIGlzQmlnRW5kaWFuLCBpc05vbkludGVybGVhdmVkKTsKIAotICAgIG1fYXVk
aW9CdWZmZXJMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3Ry
ZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFt
ZUNvdW50KTsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZm
ZXJMaXN0PihtX3N0cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBt
X21heGltaXVtRnJhbWVDb3VudCk7CiAKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1h
dERlc2NyaXB0aW9uOwogICAgIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShOVUxMLCAm
bV9zdHJlYW1Gb3JtYXQsIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXREZXNjcmlwdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0K
aW5kZXggZjlkYzRhODQ3ZjRhMzU1ZDljY2ZmNGNkZTAzMDhkMGQ1YzVjNDQ1Ni4uMzg4ZDcxZTI0
YjI1ZWJmNmQ3Nzg4MTRmZGQwYTk2NjNiMTcwNTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNv
bnZlcnRUb1lVVihDVlBpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9w
aXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlv
bmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0
VHlwZUtleTogQChwcmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpIH0pOworICAgICAgICBtX3Bp
eGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVs
QnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkg
fSk7CiAKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y29udmVydChwaXhlbEJ1
ZmZlcik7CiB9CkBAIC03NSw3ICs3NSw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIoCiAgICAg
ICAgIEludFNpemUgc2l6ZSA9IHsgKGludClDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZm
ZXIpICwgKGludClDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSB9OwogICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJv
dGF0aW9uVG9BbmdsZShyb3RhdGlvbikpOwotICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0p
LCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOworICAgICAgICBt
X3JvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RG
TW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBp
eGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6
Tm8pOwogICAgIH0KIAogICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHBpeGVs
QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAppbmRleCA4ZTI5ZDdiODFhMTczZGZhNTM3
MDVmYTFlNjJjOWU4ODNjNGY5NTAyLi5kNDc2OWQ2OWU0YWYwNDcwZDYyY2U5MGI3NTQ0MGUyODI3
NjllN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrIGZp
bmFsIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNb2NrKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9j
ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrLmgKaW5kZXggM2M2ZGUxYzRlYmU0ZWM3NDczNTQwYWVjY2I4OTc2MmIxOTU1NWNkNC4uMTM4
OGFkMDUxMzEwOGIyZWI5MmVjMmJiZTI4OTMzNjUyZTk5YTA4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgK
QEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jayBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1
YmxpYyBUaW1lckV2ZW50QmFzZWRNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAppbmRleCAyZjFmYjU1ZWU2NzFmMmYyMjhmYzUx
NTFkMGRkNjljZjhlYzY5NWNiLi4yYzdjNDFiZDY5NmZmMWY5YmFiMzgzODFhNGI1ODM4NTY4YjE4
YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVy
c01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJz
TW9jay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6UmVt
b3RlRGF0YUNoYW5uZWxOb3RpZmllcihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGkKIAogdm9p
ZCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKCkKIHsKLSAgICBtX2NsaWVudC0+ZGlk
QWRkUmVtb3RlRGF0YUNoYW5uZWwoc3RkOjptYWtlX3VuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgp
KSk7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKG1ha2VVbmlxdWU8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENE
YXRhQ2hhbm5lbEluaXQoKSkpOwogfQogCiBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI6OkRhdGFD
aGFubmVsU3RhdGVOb3RpZmllcihSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCwg
UlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggNTU5OTMzODJiM2ExZGMzNmQ4MzU2YjYxYjI1YzcwMDJlMDcz
NDdmZS4uMzg3YTIxZGFmNDU1MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4ODY5MGQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQg
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCisgICAgcmVnaXN0cmFyKFtdIChN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgc3VwcG9y
dHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpidWZm
ZXJlZCgpIGNvbnN0CiAgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2YXRlKQogICAgICAgICByZXR1
cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCk7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBib29sIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGNjNjdjZTY4
OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjguLjkwNTE0MzE2MjFhOGMxMDhhNmVmMGY1
MWViNjBmNzc0YWZjYzBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE1OSw5ICsxNTksOSBAQCBCbG9i
UmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNv
bnN0IFJlc291cmNlUmVxdWVzdAogICAgICwgbV9hc3luYyB7IGFzeW5jIH0KIHsKICAgICBpZiAo
bV9hc3luYykKLSAgICAgICAgbV9hc3luY1N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNG
aWxlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIG1fYXN5bmNTdHJlYW0gPSBtYWtlVW5pcXVlPEFz
eW5jRmlsZVN0cmVhbT4oKnRoaXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJlYW0gPSBzdGQ6
Om1ha2VfdW5pcXVlPEZpbGVTdHJlYW0+KCk7CisgICAgICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1
ZTxGaWxlU3RyZWFtPigpOwogfQogCiBCbG9iUmVzb3VyY2VIYW5kbGU6On5CbG9iUmVzb3VyY2VI
YW5kbGUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuY3BwCmluZGV4IDgxMTJiOTczZWVmNTRlZDdhNWM3YTUxNGNmMTAy
YWM5OTFlNzY1MzMuLmI1NDFmNjJlZTAwNTIwMzYyYzE1NTdmN2NhNDk2NGEyMzdiODc0OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlY29kaW5nUmVzdWx0RGlzcGEKIAogc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNrKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEZWNvZGVUYXNrPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVUYXNrPigK
ICAgICAgICAgdXJsLnN0cmluZygpLAogICAgICAgICBzY2hlZHVsZUNvbnRleHQsCiAgICAgICAg
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggYTk4NDNmNTBlNWE0MzQwM2Q4
ZjUyZjBhOTY3ZjkwMjc4NjVlOGQ1Ni4uOGRhZWM1NGExMzQyZGFiNTljMzVjYzQ5MjdhMDBmZTYy
Mjk0OTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuaApAQCAtMzcsNiArMzcsNyBAQCBXRUJDT1JFX0VYUE9SVCBleHRlcm4g
Y29uc3QgY2hhciogY29uc3QgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbDsgLy8gVXNlZCBmb3Ig
ZQogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2Vi
S2l0U2VydmljZVdvcmtlcjsgLy8gVXNlZCBmb3IgZXJyb3JzIHRoYXQgaGFwcGVuIHdoZW4gbG9h
ZGluZyBhIHJlc291cmNlIGZyb20gYSBzZXJ2aWNlIHdvcmtlci4KIAogY2xhc3MgUmVzb3VyY2VF
cnJvckJhc2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5k
ZXggMzBjMjdmNTc2YTE3N2U2YjZhYjE5NDc0MGE3ZDkwMjViNjU5ZmNhZC4uNmEzMWUzZTUyN2Y4
ZWM5MmQ2ZjYyYjk2Y2RkODE5NDQxNGI1NWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29uc3Qg
QXRvbVN0cmluZyYgcHJvdG9jb2wKIH0KIAogUmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxl
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9v
bCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpCi0g
ICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhpcywgY29u
dGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYg
JiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZikpCisgICAgOiBkKG1ha2VVbmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4o
dGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250
ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZikpCiB7CiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLmlzVmFsaWQo
KSkgewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUoSW52YWxpZFVSTEZhaWx1cmUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZGFkOTAxMGY5NTcwZWJjNTY3NjMzNTQz
ZmQxZmM1MDJmODQ2OWI5OS4uNzEzYjRkZmIzMGIyYWZkZmJlYWZmNGVlNTM3MGEyNTQ2ZmFkM2E0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xNjksNyArMTY5LDcg
QEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAg
IGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3Nl
bWFwaG9yZS53YWl0KCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9u
c2UKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMjYs
NyArMjI2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICB9OwogICAgIAogICAgIGlm
IChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9t
ZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUo
d29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3Jr
KSk7CiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICB9
OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUt
PmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykp
KTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWlsKENG
RXJyb3JSZWYKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTMxMSw3ICszMTEsNyBAQCBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OgogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVl
KQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVs
c2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFw
aG9yZS53YWl0KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmcK
ICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3Jr
KSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248
dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRC
b2R5RGF0YShDRgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1f
bWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihX
VEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIEJv
b2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6Y2FuUmVzcG9uZFRvUHJvCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVl
dWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5h
cHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAg
ZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2Vt
YXBob3JlLndhaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBjOWI1M2UzMTJhZDg1
NTc2ZDM2NmVmNGRjNTM3NDM5MWZlOGM2OTBjLi5iYTU1ZjAwNDhiOGU0ZGRjNWIwNzM0ZDk5M2Rj
OWIxM2I4Y2IyYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01MjMsNyArNTIzLDcg
QEAgLSAodm9pZClfcmVzdGFydAogCiAgICAgX3Jlc291cmNlID0gc2VsZi5zZXNzaW9uLmxvYWRl
ci5yZXF1ZXN0UmVzb3VyY2Uoc2VsZi5vcmlnaW5hbFJlcXVlc3QsIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoX3Jlc291
cmNlKQotICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2VsZikpOworICAgICAgICBfcmVzb3VyY2Ut
PnNldENsaWVudChtYWtlVW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4o
c2VsZikpOwogfQogCiAtICh2b2lkKV9jYW5jZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGE0NWE1ZjRlNGEwMjhm
ZTZlN2YyZGZiNzVlYzJjOGFlYzkzZWQyYmIuLjEwMTYyNGYyOTAwYTk0Y2M3ZDFhODk5ODk2NzZk
NmI0NWFiN2ZhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIE9wdGlvbmFsPFZlY3Rv
cjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0CiAgICAgICAgICJBTkQgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdMT0IgPykp
ICJcCiAgICAgICAgICJPUkRFUiBCWSBsZW5ndGgocGF0aCkgREVTQywgbGFzdHVwZGF0ZWQiOwog
Ci0gICAgYXV0byBwc3RtdCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2Rh
dGFiYXNlLCBzcWwpOworICAgIGF1dG8gcHN0bXQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVu
dD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpZiAoIXBzdG10KQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCkBAIC01NjYsNyArNTY2LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRl
QWxsQ29va2llcygpCiAKIHZvaWQgQ29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQo
Y29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVu
dCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGlu
dCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlQocmV0ID09IFNRTElURV9P
Syk7CiAgICAgbV9zdGF0ZW1lbnRzLmFkZChzcWwsIFdURk1vdmUoc3RhdGVtZW50KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCmlu
ZGV4IDBjMDNlOWQ2OTJjN2Y2ZGM2MTMwODZmZjI1NWMyMGU1YzZiYmU5ZTkuLjI2ODdhZTc0ZmI5
ZDk5NDI5NzJiZWRjYWM2YWI5YjExNTlhN2U1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCkBAIC00MSw2ICs0MSw3IEBAIGVu
dW0gY2xhc3MgQ29va2llQWNjZXB0UG9saWN5IHsKIH07CiAKIGNsYXNzIENvb2tpZUphckRCIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
b29raWVKYXJEQik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKaW5kZXggMTEwMjdjZTNiM2NmNjM4OGY5
OTU0YWFmNDljNDkwM2ZlOTNmZGZmNS4uOGNlMTE0Mzg0OGZiMjMxOGJhMTk5MGVhZDE4ZTE1ZjM3
ZDg0MzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ3VybENhY2hlRW50cnkgewotCisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQ3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291
cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpOwogICAgIH5DdXJsQ2FjaGVF
bnRyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGZhNWM4ZDJkMjFiNjI3MzgxNWQwMjNhNGYy
MDQ1NTAxNmU5NjM4YWYuLmUyYjRiNWRmYmRhNjJhM2MwY2I2YmY5MTgxYmJkNjhmZDdhNGEwODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEN1cmxDYWNoZU1h
bmFnZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIC0tZW5kOyAvLyBMYXN0IGxpbmUgaXMgZW1wdHkK
ICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBpdC0+c3RyaXBX
aGl0ZVNwYWNlKCk7Ci0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CisgICAgICAgIGF1dG8g
Y2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9j
YWNoZURpcik7CiAKICAgICAgICAgaWYgKGNhY2hlRW50cnktPmlzQ2FjaGVkKCkgJiYgY2FjaGVF
bnRyeS0+ZW50cnlTaXplKCkgPCBtX3N0b3JhZ2VTaXplTGltaXQpIHsKICAgICAgICAgICAgIG1f
Y3VycmVudFN0b3JhZ2VTaXplICs9IGNhY2hlRW50cnktPmVudHJ5U2l6ZSgpOwpAQCAtMjEzLDcg
KzIxMyw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlSGFuZGxlJiBqb2IsIFJlc291cmNlUmVzcG9uc2UmCiAKICAgICAgICAgaW52YWxpZGF0ZUNh
Y2hlRW50cnkodXJsKTsgLy8gSW52YWxpZGF0ZSBleGlzdGluZyBlbnRyeSBvbiAyMDAKIAotICAg
ICAgICBhdXRvIGNhY2hlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1
cmwsICZqb2IsIG1fY2FjaGVEaXIpOworICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlVW5p
cXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2IsIG1fY2FjaGVEaXIpOwogICAgICAgICBib29s
IGNhY2hlYWJsZSA9IGNhY2hlRW50cnktPnBhcnNlUmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsK
ICAgICAgICAgaWYgKGNhY2hlYWJsZSkgewogICAgICAgICAgICAgY2FjaGVFbnRyeS0+c2V0SXNM
b2FkaW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggN2QxNzIxN2MyZTQ0MmFjNmYzZGU4YzRiNjBhOTUy
NmM5ZjY1ODQyYS4uN2IwNGZhMjZhNDJhYjk3OGFlMDdiZDMxZjBlNjkxNTUxYmJjNDYwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgQ3VybENvbnRleHQ6OkN1cmxDb250ZXh0KCkKICAg
ICBpZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFkQXM8c2lnbmVkPigiV0VCS0lUX0NVUkxfTUFY
X0hPU1RfQ09OTkVDVElPTlMiKSkKICAgICAgICAgbWF4SG9zdENvbm5lY3Rpb25zID0gKnZhbHVl
OwogCi0gICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1
bGVyPihtYXhDb25uZWN0cywgbWF4VG90YWxDb25uZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25z
KTsKKyAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1h
eENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOwogCiAj
aWZuZGVmIE5ERUJVRwogICAgIG1fdmVyYm9zZSA9IGVudlZhci5kZWZpbmVkKCJERUJVR19DVVJM
Iik7CkBAIC0zMzYsNyArMzM2LDcgQEAgQ1VSTGNvZGUgQ3VybEhhbmRsZTo6d2lsbFNldHVwU3Ns
Q3R4KHZvaWQqIHNzbEN0eCkKICAgICAgICAgcmV0dXJuIENVUkxFX0FCT1JURURfQllfQ0FMTEJB
Q0s7CiAKICAgICBpZiAoIW1fc3NsVmVyaWZpZXIpCi0gICAgICAgIG1fc3NsVmVyaWZpZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEN1cmxTU0xWZXJpZmllcj4oc3NsQ3R4KTsKKyAgICAgICAgbV9zc2xW
ZXJpZmllciA9IG1ha2VVbmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOwogCiAgICAgcmV0
dXJuIENVUkxFX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENvbnRleHQuaAppbmRleCA3ZDA2MDY4Y2Q5ZDFhZWJlZTQyZDM4NTk0YWJkMDk0
YjkwMTE0NDQ0Li5hNGY4YzAyODI3NjdiMGI0ODc3MGEwNDhlZTg1MmYxNjZlMDdhN2Y1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
aApAQCAtMTQ3LDYgKzE0Nyw3IEBAIGNsYXNzIEN1cmxDb250ZXh0IDogcHVibGljIEN1cmxHbG9i
YWwgewogLy8gQ3VybE11bHRpSGFuZGxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIGNsYXNzIEN1cmxNdWx0aUhhbmRsZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybE11bHRpSGFuZGxlKTsK
IAogcHVibGljOgpAQCAtMjAyLDYgKzIwMyw3IEBAIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7CiAKIGNsYXNzIEN1cmxIYW5kbGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxIYW5kbGUpOwog
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IDlmYzY2ZWMwMjBlMjk5NmQzOGQw
NjBhZDc4ZDM2ZjExNGFlNDgxYzYuLjc4NWQ2Y2I4ZTZkYzhmYWZlOGU4MTBkZmJmZGY0Y2U3NjJm
NGIzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGNvbnN0IFZl
Y3RvcjxjaGFyPiogQ3VybEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKCFtX3Bvc3REYXRhKQotICAgICAgICBtX3Bvc3REYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7
CisgICAgICAgIG1fcG9zdERhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0
YS0+ZmxhdHRlbigpKTsKIAogICAgIHJldHVybiBtX3Bvc3REYXRhLmdldCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCmluZGV4IGE4YmI4ZDgxYTdhYmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZk
ZTJkNTUuLmNjZGJiMjgyMzlmMjJjMzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxN
dWx0aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxN
dWwKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5k
YXJ5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQs
ICpib3VuZGFyeSk7CiB9CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6
ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuaAppbmRleCA4MDRjNzQ0NmM0NTNiNjcxNWY4ODVlOWFmYzI3Mzg4NThlMjY4NzFhLi43
MjBjNjk4MGVkZDNkYWUzZTEyYzYzZjA4YjYzYzZmODk2ZTUzMzAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0
aXBhcnRIYW5kbGU+IGNyZWF0ZUlmTmVlZGVkKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBj
b25zdCBDdXJsUmVzcG9uc2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMDcwMzRiYjYyZDdiYmU2NDBkNGY4
MDFjNGUxODQyMjNkZjI0MTNkYy4uYjJhMjJkYTIyZDZjMDE1NTUwNzU5OTVmNmI4MzA4NmZlYTgx
ZmUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2Fs
bENsaWVudChGdW5jdGlvbjx2b2lkKEN1cmxSZXF1ZXN0JiwgQ3VybFJlcXVlc3RDbGllbnQmKT4m
Jgogdm9pZCBDdXJsUmVxdWVzdDo6cnVuT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0
YXNrKQogewogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUt
PmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykp
KTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUodGFzaykpKTsKICAgICBlbHNlIGlmIChpc01haW5UaHJlYWQoKSkKICAg
ICAgICAgdGFzaygpOwogICAgIGVsc2UKQEAgLTIwNSw3ICsyMDUsNyBAQCBDVVJMKiBDdXJsUmVx
dWVzdDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgYXV0byBodHRwSGVhZGVyRmllbGRzID0gbV9yZXF1
ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICBhcHBlbmRBY2NlcHRMYW5ndWFnZUhlYWRlciho
dHRwSGVhZGVyRmllbGRzKTsKIAotICAgIG1fY3VybEhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUgPSBtYWtlVW5pcXVlPEN1cmxIYW5kbGU+
KCk7CiAKICAgICBtX2N1cmxIYW5kbGUtPnNldFVybChtX3JlcXVlc3QudXJsKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmNwcAppbmRleCA5MTgzN2FmOWYzZTQ3NzNiNWM3MWMxYzI2MGRiOTZm
NTg2YjIxMWFmLi4zYWE1ZjUyZGI2MjdhYmIwZWNjYWYyOTIxM2RjZTEyZmJjNmZiYzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgbV9jdXJsTXVsdGlIYW5kbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0
aUhhbmRsZT4oKTsKKyAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybE11bHRp
SGFuZGxlPigpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhDb25uZWN0cyhtX21heENv
bm5lY3RzKTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4VG90YWxDb25uZWN0aW9ucyht
X21heFRvdGFsQ29ubmVjdGlvbnMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhIb3N0
Q29ubmVjdGlvbnMobV9tYXhIb3N0Q29ubmVjdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaApp
bmRleCBjYTNiYmE4MTM0NDBiZmY2ZTgwMzEyNjQwOTc2Y2MzODhhNzQ4NjRmLi40Yjk1YzBkMTlh
ZDkwNDJkMmFjNzBlZDRiMTMzZjhkMWQwYzYzMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaApA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdFNj
aGVkdWxlckNsaWVudDsKIAogY2xhc3MgQ3VybFJlcXVlc3RTY2hlZHVsZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXF1ZXN0
U2NoZWR1bGVyKTsKICAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8Q3VybFJlcXVlc3RTY2hlZHVs
ZXI+OwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTU0xWZXJpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTU0xWZXJpZmllci5oCmluZGV4IDQ1MmY3MDVmOWNiOGZlMjkxOWNmMjg1NmRl
ZThkMGFkMWE4MTRmMWEuLjNiNTljYjFmODYzNjU0ODgxZDQ2ZTY1YmJlOTU1NGU5ZjY2MzQzNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NM
VmVyaWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTFZlcmlmaWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ3VybFNTTFZlcmlmaWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsU1NMVmVyaWZpZXIpOwogcHVibGljOgogICAgIGVu
dW0gY2xhc3MgU1NMQ2VydGlmaWNhdGVGbGFncyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4
IDQ3YjM3ODNlNjQ2MjlhOTJlZThkYTQwYmQ0Nzk3MGM3OTZlYTU0ODYuLjcwN2QwYTY2M2E3MTg2
ZGIxMDUwNGRkYzI4NjZiNzY5NzdkMzRiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0x
NjMsNyArMTYzLDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ3Vy
bFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmUKIEN1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUoKQogewogICAgIGlmICghZC0+bV9k
ZWxlZ2F0ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKKyAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IG1h
a2VVbmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKIAogICAgIHJldHVy
biBkLT5tX2RlbGVnYXRlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3Vy
bC5jcHAKaW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5NTVlNjg4OWM2NTcyMGM5ZWZhZjIxYi4uMTNh
ODMyYzI2NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkwMmRmYTk0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
Y2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgIG1fdGFza1F1ZXVlLmFw
cGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKIH0KIAog
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpleGVjdXRlVGFza3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCmlu
ZGV4IDVhMDZmMmVmODllZjVjMjFiZTE1N2M3MWRhMTQxOWVjODQ4MDllZjcuLjc2NTQzYWQxNmMx
NDk0ODU4ODIyOTkxZjMwNWZmN2EzM2UxN2FlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTM2LDYgKzM2
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAog
Y2xhc3MgUHJldmlld0NvbnZlcnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6CiAgICAg
UHJldmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFm
MTg3YjUwNzY1YTlkMTdjMmVjNGVjODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdj
ZWMxZTJmZjZlNzNmMjRjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAo
dm9pZCljYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlv
bgogewogICAgIC8vIFN5bmMgeGhyIHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1f
bWVzc2FnZVF1ZXVlKQotICAgICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAg
ICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBj
YXNlLgogICAgIGlmICghc2NoZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVk
UGFpcnMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3
MTkzNGZlYzM3NjNhNWE0YTgyZDkuLmQ0YmE0ZTk1MDQxNWJiNDA2YmFiYzAxYjZkMjBjNjZkNGY4
NGIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNSZXNvbHZlUXVldWVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lk
IEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWlu
dDY0X3QgaWRlbnRpZmllciwgRAogCiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRk
cmVzcy5nZXQoKSksICJpZGVudGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7
CiAKLSAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3Rk
OjptYWtlX3VuaXF1ZTxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFu
ZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkp
OworICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0
aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3Zl
KGNhbmNlbGxhYmxlKSkpOwogfQogCiB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNv
bHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5j
cHAKaW5kZXggZTRjOGIwZjEzZTZkMDg5YTU4OTJhYTdhZTBhOWI4MjE1ODViYjlhNC4uYmQwNjJm
NzI4ZjE2ZjcwMGM0NjgwM2JjODM5ZWMwYmM1NTc4ZTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcApAQCAtMTM0LDYgKzEzNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBh
dXRoVHlwZUZyb21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9u
U3BhCiB9CiAKIHN0cnVjdCBTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YSB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhKEdDYW5j
ZWxsYWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZvaWQgKENyZWRlbnRpYWwmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogY2FuY2VsbGFibGUoY2FuY2VsbGFibGUpCiAgICAg
ICAgICwgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCkBAIC0x
NzMsNyArMTc0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENyZWRlbnRpYWxG
cm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJvdGVjdGlvblMKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjcmV0U2VydmljZVNl
YXJjaERhdGE+KGNhbmNlbGxhYmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
YXV0byBkYXRhID0gbWFrZVVuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFi
bGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBzZWNyZXRfc2VydmljZV9zZWFy
Y2gobnVsbHB0ciwgU0VDUkVUX1NDSEVNQV9DT01QQVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQo
KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8U2VjcmV0U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hf
VU5MT0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NFQ1JFVFMpLCBjYW5jZWxsYWJsZSwKICAgICAg
ICAgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNl
ckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCmlu
ZGV4IDEwZmVjYmM0MTk0Nzk1ZjMyZDFjYTdlNzYwOWFjNGZmMjA5MmNkMjMuLmFhZmVkM2RlNzli
OTlhYWM0NzY5Yzc2YjU1ZjZjMWNiYjY2MWI4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQmlkaVJlc29s
dmVyQmFzZTxJdGVyYXRvciwgUnVuLCBEZXJpdmVkQ2xhc3M+OjphcHBlbmRSdW5JbnRlcm5hbCgp
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZW5kT2Zmc2V0ID49IHN0YXJ0T2Zmc2V0KQotICAg
ICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihzdGQ6Om1ha2VfdW5pcXVlPFJ1bj4oc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKKyAgICAgICAgICAg
IG1fcnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxSdW4+KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQg
KyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5jcmVtZW50
KCk7CiAgICAgICAgIG1fc29yID0gbV9lb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZUlDVS5jcHAKaW5kZXggNTllMWZjNzJhMmJmMjk2OTQ1YTg2Zjg1NTJiODYzNzZhOWVh
NTg2ZC4uMmM4Y2NlNzMwODhmYTVhZDBjZjU5NTljY2U0Zjk2OTFiZjM1N2EwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcApAQCAtNDQsNyArNDQsNyBAQCB1
c2luZyBuYW1lc3BhY2UgaWN1OwogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNy
ZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiB9CiAKIExvY2FsZUlDVTo6TG9jYWxlSUNVKGNvbnN0IGNoYXIqIGxvY2FsZSkKQEAgLTE2Mywy
MiArMTYzLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZUZvcm1hdFBhdHRlcm4oY29uc3QgVURh
dGVGb3JtYXQqIGRhdGVGb3JtYXQpCiBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExv
Y2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQs
IFVEYXRlRm9ybWF0U3ltYm9sVHlwZSB0eXBlLCBpbnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qg
c2l6ZSkKIHsKICAgICBpZiAoIWRhdGVGb3JtYXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9jb3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlw
ZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oKTsKIAotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7
CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOwogICAgICAgICBpbnQzMl90IGxlbmd0aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9y
bWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgMCwgMCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChz
dGF0dXMgIT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihs
ZW5ndGgpOwogICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIHVkYXRfZ2V0
U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgYnVmZmVyLmRhdGEoKSwg
bGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxz
LT5hcHBlbmQoU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICB9CiAgICAgcmV0
dXJuIFdURk1vdmUobGFiZWxzKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVG
b3JtYXQqCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZh
bGxiYWNrTW9udGhMYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9y
PFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdU
SChXVEY6Om1vbnRoRnVsbE5hbWUpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RG
X0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+
YXBwZW5kKFdURjo6bW9udGhGdWxsTmFtZVtpXSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQogCiBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMoKQogewot
ICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAg
ICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxz
LT5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIkFNIik7CiAgICAgbGFi
ZWxzLT5hcHBlbmQoIlBNIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0xvY2FsZU5vbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVO
b25lLmNwcAppbmRleCBiYjZiMjZiYTU5Y2IzNmI5ODliN2U2ZjU4NjMwYzdhN2IzYjU2ZWE3Li43
ODE1YTQ3OGUwMjk3NDU1OTY1NzZjMmRlZDIyMTE5MzZhYTk2YTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3Mg
TG9jYWxlTm9uZSA6IHB1YmxpYyBMb2NhbGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBM
b2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxMb2NhbGVOb25lPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZU5vbmU+
KCk7CiB9CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVOb25lKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCmluZGV4IGY4ZTE2NzA4NDlh
OTU4OThhMTQ1N2JjOThkYTkxZTRiZGU3ODRjNzkuLmU1ZjI4MTY2YzZkZDM0YmM1MzUwOWI2YTAw
MjBhODg4OTA3YzJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjSUNVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY0lDVS5jcHAKQEAgLTE1Niw0MyArMTU2LDQzIEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdp
c3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICAvLyBodHRw
Oi8vZGVtby5pY3UtcHJvamVjdC5vcmcvaWN1LWJpbi9jb252ZXhwCiAgICAgICAgIGlmICghc3Ry
Y21wKG5hbWUsICJ3aW5kb3dzLTg3NCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwg
W25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29k
ZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIXN0cmNtcChuYW1lLCAid2luZG93cy05NDkiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFy
KG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOworICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAi
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWN5cmlsbGljIikpIHsKICAgICAgICAgICAg
IHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTdfMy0xMC4yIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18z
LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWdyZWVrIikpIHsKICAgICAgICAg
ICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTZfMi0xMC40Iik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3Mt
Nl8yLTEwLjQiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLWNlbnRyYWxldXJyb21hbiIp
KSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0x
MC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihu
YW1lLCAibWFjb3MtMjktMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtdHVya2lz
aCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0z
NS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNV
PihuYW1lLCAibWFjb3MtMzUtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiRVVDLUtSIikp
IHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1l
LCAid2luZG93cy05NDkiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0
ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgY29uc3QgY2hh
ciogY2Fub25pY2FsQ29udmVydGVyTmFtZSA9IHVjbnZfZ2V0Q2Fub25pY2FsTmFtZShuYW1lLCAi
SUFOQSIsICZlcnJvcik7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1MoZXJyb3IpKTsKICAgICAg
ICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lXSB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9u
aWNhbENvbnZlcnRlck5hbWUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENv
ZGVjSUNVPihuYW1lLCBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lKTsKICAgICAgICAgfSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNM
YXRpbjEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEu
Y3BwCmluZGV4IDkzMTQ1MzMyOGE2ZjY2OTQ4NWVlMDFmOGE0ZTJjZWRlNTAyNjc3ZmYuLjkyYzY2
MTNjYjFmY2MwZTMwOGE3M2MzNTBhOWUwN2VmNzczNDYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVS
ZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNz
KFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ3aW5kb3dz
LTEyNTIiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0xh
dGluMT4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1JlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjUmVwbGFjZW1lbnQuY3BwCmluZGV4IDE3NjViZjc5MjE1OTc1YjE1N2M4YjNmNzRjNTU3
MmM0NzFlMjExNDEuLmM4YjU1OGM4Y2EyZDNhZmQzMDIxNGJjZmMzN2ExNDU3NzU2YTEzYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFj
ZW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJl
Z2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lk
IFRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIg
cmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigicmVwbGFjZW1lbnQiLCBbXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYx
Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApp
bmRleCBiZTAwNjU2NDQ2NDhmY2UwYzM3OWQzYzc0M2VlMjI3ZWE5ZWRhNmY0Li45MGM0NDc1ZDAy
MGI5ZjQ3MWI1YmU3N2MzY2FhYzBmZGM5OGNiYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBAIHZvaWQg
VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3Ry
YXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJDb2RlY3MoVGV4dENv
ZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi0xNkxFIiwgW10g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKICAgICB9
KTsKICAgICByZWdpc3RyYXIoIlVURi0xNkJFIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcAppbmRleCBhM2RhZDRlOWQxNjM3
Njg2MzA4OGIxOTcxMGY4MzlkYmJmZmVhOGRkLi5lMWQwYTUzYzcxN2FhZTczOTkzOWY1MWM0ZDMy
OTM0NWFmODljYWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjVVRGOC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3Rl
ckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4
dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikK
IHsKICAgICByZWdpc3RyYXIoIlVURi04IiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0
Q29kZWNVVEY4PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCmluZGV4IDI5NmM0NjlmMTY5ZmI5
MTFkYzhkYmQ3YTY0N2VhNTY0MWUyZmZlMTkuLjQ4YWRiYTlkNGIxYTdhOWE2NThhZWY5ZGZhZGY4
NWFkZGU5ZGNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjVXNlckRlZmluZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENvZGVjVXNlckRlZmluZWQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgVGV4dENvZGVj
VXNlckRlZmluZWQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIg
cmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhUZXh0
Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigieC11c2VyLWRlZmlu
ZWQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VzZXJE
ZWZpbmVkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVc2VyRGVmaW5l
ZD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLm1tCmluZGV4IGE1MTdiZTM0MWY2YWM0YmU4ZTg5M2NmYWQ3YzIyODg0NWQ2YTgy
ODAuLjJiM2QwM2EzOGE1ZDIwMWJiNmRjYjhlYmU0NGY0NmZlZWZjNjdlMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KQEAgLTY3LDcgKzY3LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU0xvY2FsZT4gZGV0ZXJtaW5lTG9jYWxlKGNvbnN0IFN0cmlu
ZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25z
dCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9j
YWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygp
KS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVE
YXRlVGltZUZvcm1hdHRlcihOU0xvY2FsZSogbG9jYWxlLCBOU0NhbGVuZGFyKiBjYWxlbmRhciwg
TlNEYXRlRm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxlLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSB0aW1l
U3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNw
cAppbmRleCA2YTE2MGRlY2NmYzkyNmFlZjM3ZGUyM2U5N2Y2MmU4ZjVjNjc5MDZhLi5hYTAwYTRh
ZDZmNWI1OTk4MmI2YjQ3NzMxNzFjOGJjN2MwMzM5MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGlj
IExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlV2luPihMQ0lERnJvbUxvY2Fs
ZShsb2NhbGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9j
YWxlKGxvY2FsZSkpOwogfQogCiBpbmxpbmUgTG9jYWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVj
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5j
cHAKaW5kZXggYWY0NjkxMzkwODFlODBjMTIwN2I4MmM5N2ZkZmEzYzc3MjFhNjUxMS4uMmNlYjQ3
NWU1ZmFlYmI2NzBjNzQxNDQ3NWE0NzI5MjQ5NTJkY2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcg
QEAgc3RhdGljIFVJTlQgZ2V0Q29kZVBhZ2UoY29uc3QgY2hhciogbmFtZSkKIAogc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1RleHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7
CiB9CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVjV2luKFVJTlQgY29kZVBhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlP
cGVuVlIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlz
cGxheU9wZW5WUi5oCmluZGV4IGRkNmFlNzM2MDQ2NzlmMTg4ZTAxZTExMGU0ZmViZTU5M2Q1Mzdm
MWIuLmY3MWJkOWYwZDU4OWNjMmY4MzliMDY3YzIzZWM4Y2I1MTgxMDY4ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5W
Ui5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlz
cGxheU9wZW5WUi5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSIDogcHVibGljIFZSUGxhdGZvcm1EaXNwbGF5IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBWUlBs
YXRmb3JtRGlzcGxheU9wZW5WUih2cjo6SVZSU3lzdGVtKiwgdnI6OklWUkNoYXBlcm9uZSosIHZy
OjpJVlJDb21wb3NpdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCmluZGV4IGQxZGM2
NzM2ODZmNjUxZTNlMDMyOTFiN2MwMmMzMWIwYzE2OWJiYzIuLmU3Y2Y3MTM3ZTMzYWE1NWJmN2U1
ODVlZTE2NGU2NzNkM2FhZWVjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcApAQCAtMzUs
NyArMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+IFZSUGxh
dGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUoKQogICAgIGlmICghdnI6OlZSX0lzUnVudGltZUlu
c3RhbGxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOwogfQogCiBWUlBsYXRmb3JtTWFuYWdlck9w
ZW5WUjo6flZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSKCkKQEAgLTc4LDcgKzc4LDcgQEAgVmVjdG9y
PFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0
VlJEaXNwbGF5cygpCiAKICAgICBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IGRp
c3BsYXlzOwogICAgIGlmICghbV9kaXNwbGF5KQotICAgICAgICBtX2Rpc3BsYXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVyb25lLCBj
b21wb3NpdG9yKTsKKyAgICAgICAgbV9kaXNwbGF5ID0gbWFrZVVuaXF1ZTxWUlBsYXRmb3JtRGlz
cGxheU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CiAgICAgZGlzcGxh
eXMuYXBwZW5kKG1ha2VXZWFrUHRyKCptX2Rpc3BsYXkpKTsKICAgICByZXR1cm4gZGlzcGxheXM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9W
UlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCmluZGV4IDZhNDM4N2NjMzA4MTVlMDBjMzQxNmM4OTY2
YWQyOWQ0YjczZjcwZDkuLjZhNzgyM2JjN2I5NWVkNDBkY2VjZGYwZjU3MzNlMTZkODQ0NWFhNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3Jt
TWFuYWdlck9wZW5WUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9W
UlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSOwogCiBjbGFzcyBWUlBsYXRmb3Jt
TWFuYWdlck9wZW5WUiA6IHB1YmxpYyBWUlBsYXRmb3JtTWFuYWdlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWUlBs
YXRmb3JtTWFuYWdlck9wZW5WUj4gY3JlYXRlKCk7CiAgICAgZXhwbGljaXQgVlJQbGF0Zm9ybU1h
bmFnZXJPcGVuVlIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYWJhZGRjN2ZiY2EyMzU5ZWZmNWI5ODExYzE5NWY2YjVh
YmMxYmE4My4uMTY5Nzg1NWZlNzJmNjM3ZTY1YWQ0Nzc3MmFmYTYxYzc0NzE5MjQ0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTMsNyAr
OTMsNyBAQCBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jKEhX
TkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gdwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICBhdXRvIHBh
c3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0
ZWJvYXJkID0gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOwogICAgIENPTVB0cjxJRGF0YU9iamVj
dD4gY2xpcGJvYXJkRGF0YTsKICAgICBpZiAoIVNVQ0NFRURFRChPbGVHZXRDbGlwYm9hcmQoJmNs
aXBib2FyZERhdGEpKSkKICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IDA7CkBAIC0xMDYsMTYgKzEw
NiwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9y
RHJhZ0FuZERyb3AoKQogewogICAgIENPTVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAg
ICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CiB9CiAKIC8vIHN0
YXRpYwogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRy
YWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBpZiAoZHJhZ0RhdGEu
cGxhdGZvcm1EYXRhKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9h
cmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogICAgIC8vIEZJWE1FOiBTaG91
bGQgYWRkIGEgY29uc3Qgb3ZlcmxvYWQgb2YgZHJhZ0RhdGFNYXAgc28gd2UgZG9uJ3QgbmVlZCBh
IGNvbnN0X2Nhc3QgaGVyZS4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
Pihjb25zdF9jYXN0PERyYWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0
YSkuZHJhZ0RhdGFNYXAoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKaW5kZXggMTk2NDljNTY2Y2ZjZjVmNDI0
MzA5ZDFkOGQxMDBiMGI0ZmY3NzBhOC4uNmY3ZjRiYTE2NjBiNGY3YTk3NzIxMmM4NTYzYTQzYzY2
NWUzMGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudURCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51REIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgaW50IFNlYXJjaFBvcHVwTWVudURCOjpl
eGVjdXRlU2ltcGxlU3FsKGNvbnN0IFN0cmluZyYgc3FsLCBib29sIGlnbm9yZUVycm9yKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiBTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRl
UHJlcGFyZWRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsK
KyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBzcWwpOwogICAgIGludCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NF
UlRfVU5VU0VEKHJldCwgcmV0ID09IFNRTElURV9PSyk7CiAgICAgcmV0dXJuIHN0YXRlbWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKaW5kZXggZGJm
OTlhNDVjZTcwM2E5ZDg1N2EwZTYwMTlkNjgwNmRkMTFmYTE3Yi4uMjQxMDAzYTEwMDMxYTNkN2U2
ZDdhYTFlMjRhNDljYjk4OTgyMGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dDRGF0YU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1dDRGF0YU9iamVjdC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBTVERNRVRIT0RJTVAgV0NEYXRh
T2JqZWN0OjpTZXREYXRhKEZPUk1BVEVUQyogcGZvcm1hdGV0YywgU1RHTUVESVVNKiBwbWVkaXVt
LCBCTwogICAgIGlmICghcGZvcm1hdGV0YyB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAotICAgIGF1dG8gZmV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFURVRDPigp
OworICAgIGF1dG8gZmV0YyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1B
VEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVy
PiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmZXRjLmdldCgpLCBz
aXplb2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmlu
ZGV4IGMwMDRmYzllNzA0YTZhZDMyMzQ5ZmI4MjRjZGM1ZGRkMDM2MDFiNWMuLjQ3OTgxYWU2OTkx
ZGM2NDkxNTIwZmM4MjQzMmVjYzQ5NTg2NDQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NT
RmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkK
IAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdDsKIAotICAgIGF1dG8gYnVpbGRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKKyAg
ICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0Vm
ZmVjdCk7CiAgICAgbV9zb3VyY2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNl
QWxwaGE6OmVmZmVjdE5hbWUoKSk7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBj
aGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0
ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVM
YXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNw
cAppbmRleCAwMTMzNzg3ZDlkMzA2MmIxY2E3OWIxNjA3OTYzZjIwYzEwNzFlZDUzLi5iZDNjOWJl
ZTg3Mjk4NmVjNjFiMWEzMGEwNDk1YjhjMGEyNmZkNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGlj
IHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJ
dGVyYXRvciBpdGVyKQogCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGNyZWF0ZVJ1
bihpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2
ZXImIHJlc29sdmVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHN0
YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250
ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKIH0KIAogdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBw
ZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXJ0LCBp
bnQgZW5kLCBSZW5kZXJPYmplY3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikK
QEAgLTEzMCwxMiArMTMwLDEyIEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNG
b3JPYmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFyCiBzdGQ6OnVuaXF1
ZV9wdHI8Um9vdElubGluZUJveD4gQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVC
b3goKQogewogICAgIGlmIChpczxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7Ci0gICAgICAgIGF1
dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSb290SW5saW5lQm94Pihkb3duY2FzdDxSZW5k
ZXJTVkdUZXh0PihtX2Zsb3cpKTsKKyAgICAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR1Jv
b3RJbmxpbmVCb3g+KGRvd25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOwogICAgICAgICBi
b3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBib3g7CiAg
ICAgfQogICAgICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94
PihtX2Zsb3cpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7
CiB9CiAKIFJvb3RJbmxpbmVCb3gqIENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRS
b290SW5saW5lQm94KCkKQEAgLTEwODUsNyArMTA4NSw3IEBAIGlubGluZSBCaWRpUnVuKiBDb21w
bGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4m
IGJpCiAgICAgICAgIHdoaWxlIChCaWRpQ29udGV4dCogcGFyZW50ID0gYmFzZUNvbnRleHQtPnBh
cmVudCgpKQogICAgICAgICAgICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7CiAKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJpZGlSdW4+IG5ld1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxC
aWRpUnVuPihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3Bh
Y2VSdW4tPnJlbmRlcmVyKCksIGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBtYWtlVW5pcXVlPEJp
ZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFj
ZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAg
IHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIHRyYWlsaW5n
U3BhY2VSdW4gPSBuZXdUcmFpbGluZ1J1bi5nZXQoKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2b2lkIENvbXBsZXhM
aW5lTGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSkKICAgICAgICAgaWYgKGxheW91dFN0YXRlLmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5l
KCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0
Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAgICAgIExh
eW91dFVuaXQgYm90dG9tTGF5b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90
dG9tTGF5b3V0T3ZlcmZsb3coKTsKLSAgICAgICAgICAgIGF1dG8gbmV3TGluZUJveCA9IHN0ZDo6
bWFrZV91bmlxdWU8VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgICAg
ICAgICAgYXV0byBuZXdMaW5lQm94ID0gbWFrZVVuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxp
bmVCb3g+KG1fZmxvdyk7CiAgICAgICAgICAgICBhdXRvIHRyYWlsaW5nRmxvYXRzTGluZUJveCA9
IG5ld0xpbmVCb3guZ2V0KCk7CiAgICAgICAgICAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94
KFdURk1vdmUobmV3TGluZUJveCkpOwogICAgICAgICAgICAgdHJhaWxpbmdGbG9hdHNMaW5lQm94
LT5zZXRDb25zdHJ1Y3RlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmNwcAppbmRleCA0Y2RkMTM5YzQ4NzUxNmVhMGU3YjEyMTNiNzAzYmQzNDI3YWIwMThj
Li5hNmM2NDgxOGM0OTc0NTYwOTBmNjYyM2MzMDRiNWQ2Mjc3MDdhZTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBG
bG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94JiByZW5kZXJlciwgVHlwZSB0
eXBlLCBjb25zdCBMYXlvdXRSZWN0JgogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+
IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikKIHsKLSAgICBhdXRv
IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKKyAg
ICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKICAg
ICBvYmplY3QtPnNldFNob3VsZFBhaW50KCFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigp
KTsgLy8gSWYgYSBsYXllciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3Ro
ZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgogICAgIG9iamVjdC0+c2V0SXNEZXNjZW5kYW50KHRy
dWUpOwogICAgIHJldHVybiBvYmplY3Q7CkBAIC04MywxMiArODMsMTIgQEAgc3RkOjp1bmlxdWVf
cHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVu
ZGVyZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6
OmNvcHlUb05ld0NvbnRhaW5lcihMYXlvdXRTaXplIG9mZnNldCwgYm9vbCBzaG91bGRQYWludCwg
Ym9vbCBpc0Rlc2NlbmRhbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3Qo
KS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQo
KSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmxv
YXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5s
b2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwg
c2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGlu
Z09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50KCkgY29uc3QKIHsKLSAg
ICBhdXRvIGNsb25lT2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVu
ZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFp
bnQsIG1faXNEZXNjZW5kYW50KTsKKyAgICBhdXRvIGNsb25lT2JqZWN0ID0gbWFrZVVuaXF1ZTxG
bG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5P
ZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKICAgICBjbG9uZU9iamVjdC0+
bV9wYWdpbmF0aW9uU3RydXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBjbG9uZU9iamVjdC0+
bV9pc1BsYWNlZCA9IG1faXNQbGFjZWQ7CiAgICAgcmV0dXJuIGNsb25lT2JqZWN0OwpAQCAtMzcy
LDcgKzM3Miw3IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJl
ZSgpCiAgICAgaWYgKG1fc2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
bGFjZWRGbG9hdHNUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7
CisgICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+
KCk7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zZXQuYmVnaW4oKSwgZW5kID0gbV9zZXQuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmpl
Y3QgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCBjNzJkMDFkODFjN2Q3MTY2MTU3OWUzYmEw
MTgzMGU0MjlkMzBmNjg4Li4xZTkxMWFlNjBhNjEyNjg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4N2UyOTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2ln
bmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0lu
ZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3Jp
ZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5n
VHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFy
ZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNw
YW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyBy
b3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5k
ZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0
cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3Bh
biksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBt
X2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUg
aXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4g
dGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdU
cmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggNWZjMzI4MTUz
YTZkOGJmYzQ4ODNiYTUxMjFjY2EwYmY2ZjJlOTlkMC4uNjYwOTA5OGY5Yzg3MDQ2ODgxMTQxOGFi
MTc4Mjk0MTdiZWUyZDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRCYXNlbGluZUFsaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRCYXNlbGluZUFsaWdubWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdyaWRCYXNl
bGluZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KEl0ZW1Qb3NpdGlv
biBwcmVmZXJlbgogCiAgICAgLy8gTG9va2luZyBmb3IgYSBjb21wYXRpYmxlIGJhc2VsaW5lLXNo
YXJpbmcgZ3JvdXAuCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlbGluZUNvbnRleHQ+
KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOworICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVm
ZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvKiBjb250
ZXh0ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICAgICAgY29udGV4dC0+
dXBkYXRlU2hhcmVkR3JvdXAoY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uY3BwCmluZGV4IGFkZGVkYzQyOGIxZjJmZGIzNTAzZTgxMjYyNmI5NzY5M2EzZTdiNWYuLmIy
YjAxMWJkZjc0OTFiMzVhYjFkYmI3YWM2YjI2Mzk2MTcyMWNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC02
ODEsNyArNjgxLDcgQEAgZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZs
ZXhGYWN0b3JVbml0U2l6ZShjb25zdCBWZWN0b3I8R3JpZFRyYWMKICAgICAgICAgICAgIGxlZnRP
dmVyU3BhY2UgLT0gYmFzZVNpemU7CiAgICAgICAgICAgICBmbGV4RmFjdG9yU3VtIC09IGZsZXhG
YWN0b3I7CiAgICAgICAgICAgICBpZiAoIXRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUpCi0gICAg
ICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
VHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhp
YmxlID0gbWFrZVVuaXF1ZTxUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgdHJhY2tzVG9U
cmVhdEFzSW5mbGV4aWJsZS0+YWRkKGluZGV4KTsKICAgICAgICAgICAgIHZhbGlkRmxleEZhY3Rv
clVuaXQgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMTI2MCwxMCArMTI2MCwxMCBAQCB2b2lkIEdy
aWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbiwgdW5zaWduZQogICAgIG1fc2l6aW5nT3BlcmF0aW9uID0gc2l6aW5nT3BlcmF0aW9u
OwogICAgIHN3aXRjaCAobV9zaXppbmdPcGVyYXRpb24pIHsKICAgICBjYXNlIEludHJpbnNpY1Np
emVDb21wdXRhdGlvbjoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5k
ZWZpbml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVu
aXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVHJhY2tTaXppbmc6Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVl
PERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtl
VW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDcz
YjM2NTQ3NjcxNDBhMDM3MGU0ZDU2OTU2ZTU0ZjI2NzRiNThiMzYuLmIzYzQwMDc5MDJkZjYwNDg2
MmE1YWM3YzI5OThjYmFkNzNmMTEyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJl
c3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90
aGVyLmlzT3ZlcldpZGdldCgpKQogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBj
YXNlIG9mIGxpc3QgaGl0IHRlc3QuCi0gICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIu
bV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIu
bV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CisgICAgbV9saXN0QmFzZWRUZXN0UmVz
dWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigq
b3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CiB9CiAKIEhpdFRlc3RSZXN1
bHQ6On5IaXRUZXN0UmVzdWx0KCkgPSBkZWZhdWx0OwpAQCAtMTEzLDcgKzExMyw3IEBAIEhpdFRl
c3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBv
dGhlcikKICAgICBtX2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAg
Ly8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBt
X2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6
Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVs
bHB0cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RS
ZXN1bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQp
IDogbnVsbHB0cjsKIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTY5MCwxNCArNjkwLDE0IEBA
IHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxCiBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBI
aXRUZXN0UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1f
bGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQg
PSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1
bHQ7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVM
aXN0QmFzZWRUZXN0UmVzdWx0KCkKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkK
LSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0
PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+
KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IDMzMmYyODUzMWQzODhjZmUyYzNkNThh
OTRjM2YyNjE3ZGNiOTE2NjYuLjEwYTE5NDM2YjRiYWM2NTYyOTA2YjI0MWE3MGQxZDU4NTIwMDAy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDIsNiAr
NDIsNyBAQCBjbGFzcyBTY3JvbGxiYXI7CiBlbnVtIGNsYXNzIEhpdFRlc3RQcm9ncmVzcyB7IFN0
b3AsIENvbnRpbnVlIH07CiAKIGNsYXNzIEhpdFRlc3RSZXN1bHQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPE5v
ZGU+PiBOb2RlU2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5o
CmluZGV4IDQzYzY1Mzg3NmNmOTg0YTYyYjZmYzkyOTQ1ZDNkZDY5MGNhM2VkYjkuLjE1ZmRlNTRk
ZTVkMzQ5OTIwODJkNDM5YTI5MGE1MWY5MjVjYzJkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC00OTMsNyArNDkzLDcgQEAgc3RhdGljIGlubGluZSB1
bnNpZ25lZCBudW1iZXJPZklzb2xhdGVBbmNlc3RvcnMoY29uc3QgSW5saW5lSXRlcmF0b3ImIGl0
ZXIpCiAvLyBvZiBCaWRpUmVzb2x2ZXIgd2hpY2gga25vd3Mgbm90aGluZyBhYm91dCBSZW5kZXJP
YmplY3RzLgogc3RhdGljIGlubGluZSB2b2lkIGFkZFBsYWNlaG9sZGVyUnVuRm9ySXNvbGF0ZWRJ
bmxpbmUoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgUmVuZGVyT2JqZWN0JiBvYmosIHVu
c2lnbmVkIHBvcywgUmVuZGVyRWxlbWVudCYgcm9vdCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
QmlkaVJ1bj4gaXNvbGF0ZWRSdW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHBvcywgcG9z
LCBvYmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IG1ha2VVbmlxdWU8QmlkaVJ1bj4ocG9zLCBw
b3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CiAgICAgLy8gRklY
TUU6IGlzb2xhdGVkUnVucygpIGNvdWxkIGJlIGEgaGFzaCBvZiBvYmplY3QtPnJ1biBhbmQgdGhl
biB3ZSBjb3VsZCBjaGVhcGx5CiAgICAgLy8gQVNTRVJUIGhlcmUgdGhhdCB3ZSBkaWRuJ3QgY3Jl
YXRlIG11bHRpcGxlIG9iamVjdHMgZm9yIHRoZSBzYW1lIGlubGluZS4KICAgICByZXNvbHZlci5z
ZXRXaGl0ZXNwYWNlQ29sbGFwc2luZ1RyYW5zaXRpb25Gb3JJc29sYXRlZFJ1bigqaXNvbGF0ZWRS
dW4sIHJlc29sdmVyLndoaXRlc3BhY2VDb2xsYXBzaW5nU3RhdGUoKS5jdXJyZW50VHJhbnNpdGlv
bigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBN
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKaW5k
ZXggMjg1YWE1ZjlmZTliYWU3ZGZjODUyOGMyNGMxZDU1NjdkNDEyOWZmMy4uOTZhZjk1YTQ1NTY5
NTBlODEyNmI5NTM3MzUzNGQ0NzZkYWUzNTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKQEAgLTcxLDYgKzcxLDcgQEAgc3RhdGljIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlY3RMaXN0JiByZWN0TGlzdCkK
IC8vIENoZWNraW5nIGZvciBvdmVybGFwIGludm9sdmVzIGZpbmRpbmcgdGhlIG5vZGUgZm9yIHRo
ZSBjbGlwcGluZyBsYXllciBlbmNsb3NpbmcgdGhlIGdpdmVuIGxheWVyIChvciB0aGUgcm9vdCks
CiAvLyBhbmQgY29tcGFyaW5nIGFnYWluc3QgdGhlIGJvdW5kcyBvZiBlYXJsaWVyIHNpYmxpbmdz
LgogY2xhc3MgT3ZlcmxhcE1hcENvbnRhaW5lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgT3ZlcmxhcE1hcENvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllciYg
cm9vdExheWVyKQogICAgICAgICA6IG1fcm9vdFNjb3BlKHJvb3RMYXllcikKQEAgLTI5Niw3ICsy
OTcsNyBAQCBib29sIExheWVyT3ZlcmxhcE1hcDo6b3ZlcmxhcHNMYXllcnMoY29uc3QgUmVuZGVy
TGF5ZXImIGxheWVyLCBjb25zdCBMYXlvdXRSZWN0JgogCiB2b2lkIExheWVyT3ZlcmxhcE1hcDo6
cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCkKIHsKLSAgICBtX292ZXJsYXBTdGFjay5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxPdmVybGFwTWFwQ29udGFpbmVyPihtX3Jvb3RMYXllcikpOworICAg
IG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1f
cm9vdExheWVyKSk7CiB9CiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpwb3BDb21wb3NpdGluZ0Nv
bnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA0
ZGJhM2YxYzQxMDVhZmIwZThlNGM3NmE3Y2ZjYjllNWZmZjcxODU0Li4wMDE5MjU4ODJlNTAyOGM4
YTIwOTliNGJiZGUzNzMxNjViNGEyNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgdm9pZCBpbnNlcnRJbnRvVHJh
Y2tlZFJlbmRlcmVyTWFwcyhjb25zdCBSZW5kZXJCbG9jayYgY29udGFpbmVyLCBSZW5kZXJCbwog
ICAgIH0KICAgICAKICAgICBhdXRvJiBkZXNjZW5kYW50U2V0ID0gcGVyY2VudEhlaWdodERlc2Nl
bmRhbnRzTWFwLT5lbnN1cmUoJmNvbnRhaW5lciwgW10gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlOwogCiAgICAgYm9vbCBhZGRlZCA9IGRlc2NlbmRhbnRTZXQtPmFkZCgmZGVzY2Vu
ZGFudCkuaXNOZXdFbnRyeTsKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgdm9pZCBpbnNlcnRJ
bnRvVHJhY2tlZFJlbmRlcmVyTWFwcyhjb25zdCBSZW5kZXJCbG9jayYgY29udGFpbmVyLCBSZW5k
ZXJCbwogICAgIH0KICAgICAKICAgICBhdXRvJiBjb250YWluZXJTZXQgPSBwZXJjZW50SGVpZ2h0
Q29udGFpbmVyTWFwLT5lbnN1cmUoJmRlc2NlbmRhbnQsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJCbG9jayo+PigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKCFjb250YWluZXJTZXQtPmNvbnRhaW5zKCZj
b250YWluZXIpKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBQb3NpdGlvbmVkRGVzY2VuZGFu
dHNNYXAgewogICAgICAgICB9CiAKICAgICAgICAgYXV0byYgZGVzY2VuZGFudHMgPSBtX2Rlc2Nl
bmRhbnRzTWFwLmVuc3VyZSgmY29udGFpbmluZ0Jsb2NrLCBbXSB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOwog
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgYm9vbCBpc05ld0VudHJ5ID0g
bW92ZURlc2NlbmRhbnRUb0VuZCA9PSBNb3ZlRGVzY2VuZGFudFRvRW5kOjpZZXMgPyBkZXNjZW5k
YW50cy0+YXBwZW5kT3JNb3ZlVG9MYXN0KCZwb3NpdGlvbmVkRGVzY2VuZGFudCkuaXNOZXdFbnRy
eQpAQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBpbmxpbmUgVXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb24qIGN1cnJlbnRVcGRhdGVTY3JvbGxJbmZvQWZ0CiB2b2lkIFJlbmRl
ckJsb2NrOjpiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCkKIHsK
ICAgICBpZiAoIXVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSkK
LSAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpID0g
c3RkOjptYWtlX3VuaXF1ZTxEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1N0YWNrPigpOworICAgICAg
ICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBtYWtlVW5p
cXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7CiAgICAgaWYgKHVwZGF0ZVNjcm9s
bEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKS0+aXNFbXB0eSgpIHx8IGN1cnJlbnRV
cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpLT52aWV3ICE9ICZ2aWV3KCkp
CiAgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKS0+
YXBwZW5kKFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKHZpZXcoKSkpOwog
ICAgICsrY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCktPm5l
c3RlZENvdW50OwpAQCAtNjIwLDcgKzYyMCw3IEBAIHN0YXRpYyBSZW5kZXJCbG9ja1JhcmVEYXRh
JiBlbnN1cmVCbG9ja1JhcmVEYXRhKGNvbnN0IFJlbmRlckJsb2NrJiBibG9jaykKICAgICAKICAg
ICBhdXRvJiByYXJlRGF0YSA9IGdSYXJlRGF0YU1hcC0+YWRkKCZibG9jaywgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwogICAgIGlmICghcmFyZURhdGEpCi0gICAgICAgIHJhcmVEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOworICAgICAgICByYXJlRGF0YSA9
IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tSYXJlRGF0YT4oKTsKICAgICByZXR1cm4gKnJhcmVEYXRh
LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwCmluZGV4IDdmMWU2Mzk3MDYzYmU0ZjhkZjliNTdmMTc1ZDZlMjZlNzhlZmIxMzQuLmI4NjQy
ZDE3MjAzYmQ0YmYyNWJkZTE3MWY5ODcwYWY3ZDVhNDNhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCYgcmUKICAgICBtX3NpbXBsZUxpbmVMYXlvdXQgPSBudWxscHRyOwogCiAg
ICAgaWYgKCFtX2NvbXBsZXhMaW5lTGF5b3V0KQotICAgICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOworICAgICAgICBt
X2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMp
OwogCiAgICAgbV9jb21wbGV4TGluZUxheW91dC0+bGF5b3V0TGluZUJveGVzKHJlbGF5b3V0Q2hp
bGRyZW4sIHJlcGFpbnRMb2dpY2FsVG9wLCByZXBhaW50TG9naWNhbEJvdHRvbSk7CiB9CkBAIC0y
MDE5LDcgKzIwMTksNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0TGluZUdyaWRCb3go
KQogICAgIAogICAgIHNldExpbmVHcmlkQm94KDApOwogCi0gICAgYXV0byBsaW5lR3JpZEJveCA9
IHN0ZDo6bWFrZV91bmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMpOworICAgIGF1dG8gbGluZUdy
aWRCb3ggPSBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KCp0aGlzKTsKICAgICBsaW5lR3JpZEJv
eC0+c2V0SGFzVGV4dENoaWxkcmVuKCk7IC8vIE5lZWRlZCB0byBtYWtlIHRoZSBsaW5lIGFzY2Vu
dC9kZXNjZW50IGFjdHVhbGx5IGJlIGhvbm9yZWQgaW4gcXVpcmtzIG1vZGUuCiAgICAgbGluZUdy
aWRCb3gtPnNldENvbnN0cnVjdGVkKCk7CiAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9u
dHNNYXAgdGV4dEJveERhdGFNYXA7CkBAIC0yMjYwLDcgKzIyNjAsNyBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6Y2xpcE91dEZsb2F0aW5nT2JqZWN0cyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBj
b25zdCBQYWludAogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxvYXRpbmdPYmplY3Rz
KCkKIHsKLSAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdP
YmplY3RzPigqdGhpcyk7CisgICAgbV9mbG9hdGluZ09iamVjdHMgPSBtYWtlVW5pcXVlPEZsb2F0
aW5nT2JqZWN0cz4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVtb3ZlRmxv
YXRpbmdPYmplY3RzKCkKQEAgLTM2NzcsNyArMzY3Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjplbnN1cmVMaW5lQm94ZXMoKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1fY29t
cGxleExpbmVMYXlvdXQpOwotICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CisgICAgbV9jb21wbGV4TGluZUxheW91dCA9
IG1ha2VVbmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKIAogICAgIGlmIChTaW1wbGVM
aW5lTGF5b3V0OjpjYW5Vc2VGb3JMaW5lQm94VHJlZSgqdGhpcywgKm1fc2ltcGxlTGluZUxheW91
dCkpIHsKICAgICAgICAgU2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSgqdGhp
cywgKm1fc2ltcGxlTGluZUxheW91dCk7CkBAIC0zNzM1LDcgKzM3MzUsNyBAQCBSZW5kZXJCbG9j
a0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhJiBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZVJh
cmVCbG9ja0Zsb3dEYQogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1hdGVyaWFsaXplUmFyZUJsb2Nr
Rmxvd0RhdGEoKQogewogICAgIEFTU0VSVCghaGFzUmFyZUJsb2NrRmxvd0RhdGEoKSk7Ci0gICAg
bV9yYXJlQmxvY2tGbG93RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tGbG93OjpS
ZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOworICAgIG1fcmFyZUJsb2NrRmxvd0RhdGEg
PSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGE+KCp0
aGlzKTsKIH0KIAogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGRiM2E2ZGE4ZjFhMzIxNTM3MDBlNzM0MTdkMTBmNmE0
ODEzMDgzNWYuLjk2NzdkYWU5Y2ZlMjhiMWRjMzkwNWMzYTgyYjA2ZWM2ZWNkY2RjNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3Rh
dGljIENvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCYgY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkK
IHN0YXRpYyBDb250cm9sU3RhdGVzKiBjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJlcikKIHsKICAgICByZXR1cm4gY29udHJvbFN0YXRlc1JlbmRlcmVyTWFw
KCkuZW5zdXJlKCZyZW5kZXJlciwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDb250cm9sU3RhdGVzPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250cm9sU3Rh
dGVzPigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApAQCAtMjEyMiw3ICsy
MTIyLDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3g6Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVy
RWxlbWVudCYgY29udGFpbmVyLCBjb25zdCBMYXlvdXQKIAogc3RkOjp1bmlxdWVfcHRyPElubGlu
ZUVsZW1lbnRCb3g+IFJlbmRlckJveDo6Y3JlYXRlSW5saW5lQm94KCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckJveDo6
ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggYmNiYTdiNDE2ODVhM2Y0MTIw
YzFlZWE1NDYxMDJmODM2ZDU2YWEyNi4uOTAxYzQxMTBlMWM1NmJhNjBhNGRkM2JhN2I5M2ZhYWY2
MDQxY2IzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCkBAIC0yNTM4LDcgKzI1MzgsNyBAQCBhdXRvIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjplbnN1cmVDb250aW51YXRpb25DaGFpbk5vZGUoKSAtPiBDb250aW51YXRpb25DaGFpbk5v
ZAogewogICAgIHNldEhhc0NvbnRpbnVhdGlvbkNoYWluTm9kZSh0cnVlKTsKICAgICByZXR1cm4g
KmNvbnRpbnVhdGlvbkNoYWluTm9kZU1hcCgpLmVuc3VyZSh0aGlzLCBbJl0gewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGludWF0aW9uQ2hhaW5Ob2RlPigqdGhpcyk7CiAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKaW5kZXggMjIxMDQ0MzRlNDVkNmM5ODQ3NmZmZDI5YWI1NTBiZDYyYWM0
MDhmZS4uYzFlMDNmMDk3ZWY1OWFkNWExNmIxOTRjOWMwNWQ2NDlmN2ZmMTVjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBA
IHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgaWYgKHBsYWNlLnBhcmVudCkKICAgICAgICAg
cGxhY2UucGFyZW50LT5pbnNlcnRBZnRlcihuZXdOb2RlLCBwbGFjZS5wcmV2aW91c1NpYmxpbmcu
Z2V0KCksIGlkZW50aWZpZXIpOwogCi0gICAgbWFwcy5hZGQoJnJlbmRlcmVyLCBzdGQ6Om1ha2Vf
dW5pcXVlPENvdW50ZXJNYXA+KCkpLml0ZXJhdG9yLT52YWx1ZS0+YWRkKGlkZW50aWZpZXIsIG5l
d05vZGUuY29weVJlZigpKTsKKyAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIG1ha2VVbmlxdWU8Q291
bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5jb3B5
UmVmKCkpOwogICAgIHJlbmRlcmVyLnNldEhhc0NvdW50ZXJOb2RlTWFwKHRydWUpOwogCiAgICAg
aWYgKG5ld05vZGUtPnBhcmVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKaW5kZXggNTFhOWU0Njg0MzQ0ZDI2MzdkMDRh
OTFmYjU5YTNjZDZlZjhmMDZlZC4uN2Y2Y2FiYzA1OTEyMTA4MWM0ZDcyODYwMjE5YmQ0YjljODVi
OTRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21l
bnRDb250YWluZXIuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgUmVuZGVyQm94RnJhZ21lbnRJbmZv
KiBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJhZ21lbnRJbmZvKGNvbnN0
IFIKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJCb3hGcmFnbWVudEluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hGcmFnbWVudEluZm8uYWRk
KGJveCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCb3hGcmFnbWVudEluZm8+KGxvZ2ljYWxMZWZ0
SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveEZyYWdtZW50SW5m
bz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQoYm94LCBtYWtlVW5pcXVl
PFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5z
ZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBy
ZXR1cm4gYm94SW5mby5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKaW5kZXggNDRmNTYzNWJhNTNhZTNmN2U5NGQ3YWM4
ZTQ5NjczOTBmNThjMmU1Ni4uODQ2ZGQzYTAyYWE4NmFhZjcxNWMwOTRlOGMzNTBjMTY2YTg2N2Ix
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRG
bG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZs
b3cuY3BwCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogUmVu
ZGVyRnJhZ21lbnRlZEZsb3c6OmN1cnJlbnRGcmFnbWVudCgpIGNvbnN0CiBDb250YWluaW5nRnJh
Z21lbnRNYXAmIFJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb250YWluaW5nRnJhZ21lbnRNYXAoKQog
ewogICAgIGlmICghbV9saW5lVG9GcmFnbWVudE1hcCkKLSAgICAgICAgbV9saW5lVG9GcmFnbWVu
dE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmluZ0ZyYWdtZW50TWFwPigpOworICAgICAg
ICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gbWFrZVVuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+
KCk7CiAKICAgICByZXR1cm4gKm1fbGluZVRvRnJhZ21lbnRNYXAuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAppbmRleCBiOTA0NWU2
NzkwODczYWJmODFhOTBkZmE1YmJiMTEwOTNjNjc3YjAyLi41MmM3OTBkNGU1Nzg5YjE3OGUyNmM4
YWJkOGJhN2IxM2NjNTkxNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHZW9tZXRyeU1hcC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5
TWFwOjpwdXNoKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTQogICAgIAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1tt
X2luc2VydGlvblBvc2l0aW9uXTsKICAgICBpZiAoIXQuaXNJbnRlZ2VyVHJhbnNsYXRpb24oKSkK
LSAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRp
b25NYXRyaXg+KHQpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odCk7CiAgICAgZWxzZQogICAgICAgICBzdGVwLm1fb2Zmc2V0ID0g
TGF5b3V0U2l6ZSh0LmUoKSwgdC5mKCkpOwogCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZW5k
ZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcoY29uc3QgUmVuZGVyVmlldyogdmlldywgY29uc3QgTGF5
b3V0U2l6ZSYgc2Nyb2wKICAgICBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAmIHN0ZXAgPSBtX21hcHBp
bmdbbV9pbnNlcnRpb25Qb3NpdGlvbl07CiAgICAgc3RlcC5tX29mZnNldCA9IHNjcm9sbE9mZnNl
dDsKICAgICBpZiAodCkKLSAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCp0KTsKKyAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9
IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCp0KTsKICAgICAKICAgICBzdGVwSW5z
ZXJ0ZWQoc3RlcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5k
ZXggZTM1YTJjMTMyMjVkNDcyNWNkODhjMjJmNmQwNGNjYzlkMGYzNDk3Zi4uNDlhZDAzNTU1Mzcz
NDIyNWYxZGRkNjMzYjQyYzEzODMyY2NlZmJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVk
VHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0b1JlcGVh
CiAgICAgdW5zaWduZWQgbGFzdEF1dG9SZXBlYXRUcmFjayA9IGZpcnN0QXV0b1JlcGVhdFRyYWNr
ICsgZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKGRpcmVjdGlvbik7CiAKICAgICBpZiAoIWdyaWQuaGFz
R3JpZEl0ZW1zKCkpIHsKLSAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOworICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9
IG1ha2VVbmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgdHJhY2tJbmRleCA9IGZpcnN0QXV0b1JlcGVhdFRyYWNrOyB0cmFja0luZGV4IDwgbGFzdEF1
dG9SZXBlYXRUcmFjazsgKyt0cmFja0luZGV4KQogICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4
ZXMtPmFkZCh0cmFja0luZGV4KTsKICAgICB9IGVsc2UgewpAQCAtNTUyLDcgKzU1Miw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVt
cHR5VHJhY2tzRm9yQXV0b1JlcGVhCiAgICAgICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3Io
Z3JpZCwgZGlyZWN0aW9uLCB0cmFja0luZGV4KTsKICAgICAgICAgICAgIGlmICghaXRlcmF0b3Iu
bmV4dEdyaWRJdGVtKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5VHJhY2tJbmRleGVz
KQotICAgICAgICAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgICAgICAgICAgICAgIGVtcHR5VHJh
Y2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAg
ICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5kZXgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC03MzIsNyArNzMyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVh
PiBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXQK
ICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZkNyb3NzRGlyZWN0aW9uID0gZ3JpZC5udW1UcmFja3Mo
Y3Jvc3NEaXJlY3Rpb24pOwogICAgIHVuc2lnbmVkIGNyb3NzRGlyZWN0aW9uU3BhblNpemUgPSBH
cmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oZ3JpZEl0ZW0s
IGNyb3NzRGlyZWN0aW9uKTsKICAgICBHcmlkU3BhbiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA9
IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihlbmRPZkNyb3NzRGlyZWN0aW9u
LCBlbmRPZkNyb3NzRGlyZWN0aW9uICsgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JpZEFyZWE+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNw
ZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jv
c3NEaXJlY3Rpb25Qb3NpdGlvbnMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRBcmVhPihz
cGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25z
IDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/
IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKIH0KIAogdm9p
ZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdy
aWQsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYgYXV0b0dyaWRJdGVtcykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDg5MTNlNzZjOWQ2MWM5ZDI1
NDE5OTBhOTAxYjdiMDI5NGU0OGFhZGMuLmY1MWUyZmViMzdlMWZjZjBmZDBlNzkxYWU2NGYwM2Vl
ODhhMmE3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAt
MTM0LDcgKzEzNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFJlbmRlckltYWdl
OjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHls
ZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8pCiAg
ICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQot
ICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFn
ZSA/IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdl
KSA6IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKICAgICAsIG1faW1hZ2VEZXZp
Y2VQaXhlbFJhdGlvKGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKIHsKICAgICB1cGRhdGVBbHRUZXh0
KCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWwKIAogUmVuZGVy
SW1hZ2U6OlJlbmRlckltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAgICA6IFJlbmRlclJlcGxhY2VkKGRvY3VtZW50
LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQotICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxl
SW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigq
c3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisg
ICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZT4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcAppbmRleCA5ZDhhNjU5MzRiYTNmZDI1NDc0YzM5YzkxZmVlYzQzYWEwYzlmOWY1Li4xNTMy
NWNkYTE2OTA2N2E1NjkxYjg4NWE4ZGZkYzdhYTkwMzY0MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBSZW5k
ZXJJbmxpbmU6OmRlbGV0ZUxpbmVzKCkKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+
IFJlbmRlcklubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PElubGluZUZsb3dCb3g+KCp0aGlzKTsKIH0KIAogSW5saW5lRmxvd0JveCogUmVuZGVySW5saW5l
OjpjcmVhdGVBbmRBcHBlbmRJbmxpbmVGbG93Qm94KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IGY5ZjBkMGQ0Y2VlNjZjMWY0M2RlNTMyYjYxMDA1MzJiZmI2
MTUwOGMuLjE4NTQ2ODcwNTE2ZTRkMGZkNWUyYjAyOGRlYjNiYzQwY2U2YzhiZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNzAwLDcgKzcwMCw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkKICAgICAgICAgLy8gSWdub3Jl
IG5vbi1vdmVyZmxvdyBsYXllcnMgYW5kIHJlZmxlY3Rpb25zLgogICAgICAgICBpZiAoY2hpbGQt
PmlzTm9ybWFsRmxvd09ubHkoKSAmJiAhaXNSZWZsZWN0aW9uTGF5ZXIoKmNoaWxkKSkgewogICAg
ICAgICAgICAgaWYgKCFtX25vcm1hbEZsb3dMaXN0KQotICAgICAgICAgICAgICAgIG1fbm9ybWFs
Rmxvd0xpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOworICAg
ICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxSZW5kZXJM
YXllcio+PigpOwogICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdC0+YXBwZW5kKGNoaWxkKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpj
b2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcgogICAgIGlmIChpbmNsdWRlSGlkZGVuTGF5ZXIgJiYgIWlzTm9ybWFsRmxvd09ubHkoKSkg
ewogICAgICAgICBhdXRvJiBsYXllckxpc3QgPSAoekluZGV4KCkgPj0gMCkgPyBwb3NpdGl2ZVpP
cmRlckxpc3QgOiBuZWdhdGl2ZVpPcmRlckxpc3Q7CiAgICAgICAgIGlmICghbGF5ZXJMaXN0KQot
ICAgICAgICAgICAgbGF5ZXJMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5
ZXIqPj4oKTsKKyAgICAgICAgICAgIGxheWVyTGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRl
ckxheWVyKj4+KCk7CiAgICAgICAgIGxheWVyTGlzdC0+YXBwZW5kKHRoaXMpOwogICAgIH0KIApA
QCAtMTIwNiw3ICsxMjA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkK
ICAgICBib29sIGhhZFRyYW5zZm9ybSA9ICEhbV90cmFuc2Zvcm07CiAgICAgaWYgKGhhc1RyYW5z
Zm9ybSAhPSBoYWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKGhhc1RyYW5zZm9ybSkKLSAgICAg
ICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4oKTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4oKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBudWxs
cHRyOwogICAgICAgICAKQEAgLTU1MjcsNyArNTUyNyw3IEBAIFJlZjxDbGlwUmVjdHM+IFJlbmRl
ckxheWVyOjp1cGRhdGVDbGlwUmVjdHMoY29uc3QgQ2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3Rz
Q29uCiAgICAgfQogICAgIAogICAgIGlmICghbV9jbGlwUmVjdHNDYWNoZSkKLSAgICAgICAgbV9j
bGlwUmVjdHNDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CisgICAg
ICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBtYWtlVW5pcXVlPENsaXBSZWN0c0NhY2hlPigpOwogI2lm
bmRlZiBOREVCVUcKICAgICBtX2NsaXBSZWN0c0NhY2hlLT5tX2NsaXBSZWN0c1Jvb3RbY2xpcFJl
Y3RzVHlwZV0gPSBjbGlwUmVjdHNDb250ZXh0LnJvb3RMYXllcjsKICAgICBtX2NsaXBSZWN0c0Nh
Y2hlLT5tX3Njcm9sbGJhclJlbGV2YW5jeVtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRl
eHQub3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3k7CkBAIC02MTA1LDcgKzYxMDUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpjbGVhckNsaXBSZWN0cyhDbGlwUmVjdHNUeXBlIHR5cGVUb0NsZWFy
KQogUmVuZGVyTGF5ZXJCYWNraW5nKiBSZW5kZXJMYXllcjo6ZW5zdXJlQmFja2luZygpCiB7CiAg
ICAgaWYgKCFtX2JhY2tpbmcpIHsKLSAgICAgICAgbV9iYWNraW5nID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNraW5nID0gbWFrZVVu
aXF1ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0aGlzKTsKICAgICAgICAgY29tcG9zaXRvcigpLmxh
eWVyQmVjYW1lQ29tcG9zaXRlZCgqdGhpcyk7CiAKICAgICAgICAgdXBkYXRlRmlsdGVyUGFpbnRp
bmdTdHJhdGVneSgpOwpAQCAtNjUyMyw3ICs2NTIzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c3R5
bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUKIAogICAgIGlmIChyZW5kZXJlcigpLmlzSFRNTE1hcnF1ZWUoKSAmJiByZW5kZXJlcigpLnN0
eWxlKCkubWFycXVlZUJlaGF2aW9yKCkgIT0gTWFycXVlZUJlaGF2aW9yOjpOb25lICYmIHJlbmRl
cmVyKCkuaXNCb3goKSkgewogICAgICAgICBpZiAoIW1fbWFycXVlZSkKLSAgICAgICAgICAgIG1f
bWFycXVlZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7CisgICAgICAg
ICAgICBtX21hcnF1ZWUgPSBtYWtlVW5pcXVlPFJlbmRlck1hcnF1ZWU+KHRoaXMpOwogICAgICAg
ICBtX21hcnF1ZWUtPnVwZGF0ZU1hcnF1ZWVTdHlsZSgpOwogICAgIH0gZWxzZSBpZiAobV9tYXJx
dWVlKQogICAgICAgICBtX21hcnF1ZWUgPSBudWxscHRyOwpAQCAtNjczNSw3ICs2NzM1LDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6ZW5zdXJlTGF5ZXJGaWx0ZXJzKCkKICAgICBpZiAobV9maWx0ZXJz
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9maWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJMYXllckZpbHRlcnM+KCp0aGlzKTsKKyAgICBtX2ZpbHRlcnMgPSBtYWtlVW5pcXVl
PFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpjbGVh
ckxheWVyRmlsdGVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IDIyZWQ2ZGQ3YzAyNTJiMTk1M2RlM2JlMTUzOTcxYjEyOWFlMWM3
NGIuLjEyMWQxMmYyNjlmOTBkMTNjNmNjZGQwOTdiOTIyZTNhZGFjZTI2ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNjI3LDcg
KzE2MjcsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQW5jZXN0b3JDbGlwcGlu
Z1N0YWNrKFZlY3RvcjxDb21wb3NpdGVkQ2xpcERhdGE+JgogICAgIH0KICAgICAKICAgICBpZiAo
IW1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKSB7Ci0gICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ1N0
YWNrID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjaz4oV1RGTW92
ZShjbGlwcGluZ0RhdGEpKTsKKyAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3RhY2sgPSBtYWtl
VW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkp
OwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcsIHN0cmVhbSA8PCAibGF5ZXIg
IiA8PCAmbV9vd25pbmdMYXllciA8PCAiIGFuY2VzdG9yQ2xpcHBpbmdTdGFjayAiIDw8ICptX2Fu
Y2VzdG9yQ2xpcHBpbmdTdGFjayk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMx
NzgsMTcgKzMxNzgsMTcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9u
KGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24mIGFuaW0KICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNGaXJzdE9yTGFzdEtleWZyYW1lID0ga2V5ID09IDAgfHwga2V5ID09IDE7CiAg
ICAgICAgIGlmICgoaGFzVHJhbnNmb3JtICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3Vy
cmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pKQotICAg
ICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPnRyYW5zZm9ybSgpLCB0ZikpOwor
ICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFu
aW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPnRyYW5zZm9ybSgpLCB0ZikpOwogCiAg
ICAgICAgIGlmICgoaGFzT3BhY2l0eSAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJl
bnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSkpCi0gICAgICAg
ICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOworICAgICAgICAgICAg
b3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPihrZXks
IGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYpKTsKIAogICAgICAgICBpZiAoKGhhc0ZpbHRl
ciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1By
b3BlcnR5KENTU1Byb3BlcnR5RmlsdGVyKSkKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNl
cnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0
eWxlLT5maWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQobWFr
ZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5maWx0ZXIo
KSwgdGYpKTsKIAogI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCiAgICAgICAgIGlmICgoaGFz
QmFja2Ryb3BGaWx0ZXIgJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJh
bWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKSkKLSAg
ICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCks
IHRmKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1
ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5iYWNrZHJvcEZpbHRl
cigpLCB0ZikpOwogI2VuZGlmCiAgICAgfQogCkBAIC0zMjQzLDggKzMyNDMsOCBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIG9wYWNpdHlBbmltID0g
dG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSk7CiAgICAg
ICAgIGlmIChvcGFjaXR5QW5pbSAmJiAhb3BhY2l0eUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlv
bigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBvcGFjaXR5VmVjdG9yKEFuaW1h
dGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0
ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgY29tcG9zaXRpbmdPcGFjaXR5
KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNl
cnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigxLCBjb21wb3NpdGluZ09w
YWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpOworICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5p
bnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGluZ09wYWNp
dHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmlu
c2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0
eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAgICAgICAgICAvLyBUaGUgYm94U2l6ZSBwYXJh
bSBpcyBvbmx5IHVzZWQgZm9yIHRyYW5zZm9ybSBhbmltYXRpb25zICh3aGljaCBjYW4gb25seSBy
dW4gb24gUmVuZGVyQm94ZXMpLCBzbyB3ZSBwYXNzIGFuIGVtcHR5IHNpemUgaGVyZS4KICAgICAg
ICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihvcGFjaXR5VmVjdG9yLCBG
bG9hdFNpemUoKSwgb3BhY2l0eUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JU
cmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSwgdGltZU9mZnNldCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBvcGFjaXR5IGlzIHZpc2li
bGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBvcGFjaXR5LgpA
QCAtMzI1OCw4ICszMjU4LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNp
dGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29u
c3QgQW5pbWF0aW9uKiB0cmFuc2Zvcm1BbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3Bl
cnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKTsKICAgICAgICAgaWYgKHRyYW5zZm9ybUFuaW0gJiYg
IXRyYW5zZm9ybUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBL
ZXlmcmFtZVZhbHVlTGlzdCB0cmFuc2Zvcm1WZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9y
bSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKTsKLSAg
ICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAg
IHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVj
dG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxl
LT50cmFuc2Zvcm0oKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5p
bWF0aW9uKHRyYW5zZm9ybVZlY3Rvciwgc25hcHBlZEludFJlY3QocmVuZGVyQm94KCktPmJvcmRl
ckJveFJlY3QoKSkuc2l6ZSgpLCB0cmFuc2Zvcm1BbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRp
b25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKSwgdGltZU9mZnNl
dCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCB0cmFu
c2Zvcm0gaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZp
bmFsIHRyYW5zZm9ybS4KICAgICAgICAgICAgICAgICB1cGRhdGVUcmFuc2Zvcm0oKnRvU3R5bGUp
OwpAQCAtMzI3Miw4ICszMjcyLDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJh
bnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAg
Y29uc3QgQW5pbWF0aW9uKiBmaWx0ZXJBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3Bl
cnR5KENTU1Byb3BlcnR5RmlsdGVyKTsKICAgICAgICAgaWYgKGZpbHRlckFuaW0gJiYgIWZpbHRl
ckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZh
bHVlTGlzdCBmaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlcik7Ci0gICAgICAgICAg
ICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFs
dWU+KDAsIGZyb21TdHlsZS0+ZmlsdGVyKCkpKTsKLSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5p
bnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+
ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxG
aWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAg
ICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigx
LCB0b1N0eWxlLT5maWx0ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+
YWRkQW5pbWF0aW9uKGZpbHRlclZlY3RvciwgRmxvYXRTaXplKCksIGZpbHRlckFuaW0sIEdyYXBo
aWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlGaWx0
ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRo
ZSBjb3JyZWN0IGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNv
IHNldCB0aGUgZmluYWwgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVwZGF0ZUZpbHRlcnMoKnRv
U3R5bGUpOwpAQCAtMzI4Nyw4ICszMjg3LDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0
YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAg
ICAgICAgY29uc3QgQW5pbWF0aW9uKiBiYWNrZHJvcEZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFu
c2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlcik7CiAgICAg
ICAgIGlmIChiYWNrZHJvcEZpbHRlckFuaW0gJiYgIWJhY2tkcm9wRmlsdGVyQW5pbS0+aXNFbXB0
eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IGJhY2tk
cm9wRmlsdGVyVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlXZWJraXRCYWNrZHJvcEZpbHRlcik7Ci0g
ICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxG
aWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7Ci0g
ICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxG
aWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOworICAg
ICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5p
bWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOworICAgICAgICAg
ICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9u
VmFsdWU+KDEsIHRvU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKICAgICAgICAgICAgIGlmICht
X2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihiYWNrZHJvcEZpbHRlclZlY3RvciwgRmxvYXRT
aXplKCksIGJhY2tkcm9wRmlsdGVyQW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZv
clRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKSwgdGltZU9m
ZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBi
YWNrZHJvcCBmaWx0ZXIgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBz
ZXQgdGhlIGZpbmFsIGJhY2tkcm9wIGZpbHRlci4KICAgICAgICAgICAgICAgICB1cGRhdGVCYWNr
ZHJvcEZpbHRlcnMoKnRvU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBhYmU0ZDRkNjc1YTIyMTg2ZTJlYTg5ZDQx
MmZmYTgxNTM4YzVjOTI5Li4zMjEyMjlkNmYyM2NmYWU2NmEwNWE1MjgwOGRkMGIwY2JhOGMxNDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yKFJlbmRlclZpZXcmIHJlbmRlclZpZXcpCiB7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnBsYXRmb3JtV2lk
Z2V0KCkpCi0gICAgICAgIG1fbGVnYWN5U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcj4ocGFnZSgp
LmNocm9tZSgpLmNsaWVudCgpLCBpc01haW5GcmFtZUNvbXBvc2l0b3IoKSk7CisgICAgICAgIG1f
bGVnYWN5U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8TGVnYWN5V2ViS2l0
U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcj4ocGFnZSgpLmNocm9tZSgpLmNsaWVudCgpLCBpc01h
aW5GcmFtZUNvbXBvc2l0b3IoKSk7CiAjZW5kaWYKIH0KIApAQCAtNjEyLDcgKzYxMiw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNo
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqCiB7CiAgICAgaWYgKCFtX2xheWVyVXBkYXRlcikgewogICAg
ICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQgPSBwYWdlKCkuY2hyb21lKCkuZGlzcGxh
eUlEKCk7Ci0gICAgICAgIG1fbGF5ZXJVcGRhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGlj
c0xheWVyVXBkYXRlcj4oKnRoaXMsIGRpc3BsYXlJRCk7CisgICAgICAgIG1fbGF5ZXJVcGRhdGVy
ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0xheWVyVXBkYXRlcj4oKnRoaXMsIGRpc3BsYXlJRCk7CiAg
ICAgfQogICAgIAogICAgIG1fbGF5ZXJVcGRhdGVyLT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtNDc5
Miw3ICs0NzkyLDcgQEAgdm9pZCBMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9y
OjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMKIAogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Vmlld3BvcnRDb25zdHJhaW50cz4gY29uc3RyYWludHM7CiAgICAgICAgIGlmIChs
YXllci0+cmVuZGVyZXIoKS5pc1N0aWNraWx5UG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBj
b25zdHJhaW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXll
cikpOworICAgICAgICAgICAgY29uc3RyYWludHMgPSBtYWtlVW5pcXVlPFN0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlU3RpY2t5Vmlld3BvcnRDb25z
dHJhaW50cygqbGF5ZXIpKTsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlckxheWVyKiBlbmNsb3Np
bmdUb3VjaFNjcm9sbGFibGVMYXllciA9IG51bGxwdHI7CiAgICAgICAgICAgICBpZiAoY29tcG9z
aXRvci5pc0FzeW5jU2Nyb2xsYWJsZVN0aWNreUxheWVyKCpsYXllciwgJmVuY2xvc2luZ1RvdWNo
U2Nyb2xsYWJsZUxheWVyKSAmJiBlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllcikgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllci0+aXNDb21w
b3NpdGVkKCkpOwpAQCAtNDgwMCw3ICs0ODAwLDcgQEAgdm9pZCBMZWdhY3lXZWJLaXRTY3JvbGxp
bmdMYXllckNvb3JkaW5hdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMK
ICAgICAgICAgICAgICAgICBzdGlja3lDb250YWluZXJNYXAuYWRkKGxheWVyLT5iYWNraW5nKCkt
PmdyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpLCBlbmNsb3NpbmdUb3VjaFNjcm9sbGFi
bGVMYXllci0+YmFja2luZygpLT5zY3JvbGxDb250YWluZXJMYXllcigpLT5wbGF0Zm9ybUxheWVy
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGxheWVyLT5yZW5kZXJlcigp
LmlzRml4ZWRQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICBjb25zdHJhaW50cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29t
cHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKKyAgICAgICAgICAgIGNvbnN0
cmFpbnRzID0gbWFrZVVuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29t
cG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGJmNjQ1Y2Q0MWI4OTEyMTJkN2Y1
YTMwMzg2ZWY5Y2E1NGJmYTQ2MDIuLjhkZDAzOWJhZmRhNjM1MzhjZTMyMTNkYzMxMzU2MGZhYThh
NGJkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxT
Y3JvbGxDb29yZGluYXRpb25Sb2xlPiBhbGxTY3JvbGxDb29yZGluYXRpb25Sb2xlcygpCiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogY2xhc3MgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJD
b29yZGluYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcihDaHJvbWVDbGllbnQmIGNocm9t
ZUNsaWVudCwgYm9vbCBjb29yZGluYXRlVmlld3BvcnRDb25zdHJhaW5lZExheWVycykKICAgICAg
ICAgOiBtX2Nocm9tZUNsaWVudChjaHJvbWVDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggNGI4NmZlMmFkMTc1
ZGNlODZhZDM4NTJiZGZjMTUyZmQxMzA4ZDQ1ZS4uMTI4Yzk2ZGFlMGIzMTAwNmNhMjVkNWE1NmM3
MjBiYzg5MGQzNGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbmRlckxheWVy
TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCiB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6
OmNyZWF0ZUxheWVyKCkKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXIpOwotICAgIG1fbGF5ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyPigqdGhpcyk7CisgICAgbV9sYXllciA9IG1ha2VV
bmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKICAgICBzZXRIYXNMYXllcih0cnVlKTsKICAgICBt
X2xheWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGJjNTUyN2I4YzQ2YTRkZTA2NmY2OWU1YTMx
MGM4ODY4MTk2ZmMyM2EuLjFhYWUwOWQwMGIyNmVhM2NhZGVhODY3MmUyNzc5MjliZmQxN2E2MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC04
OSw3ICs4OSw3IEBAIGludCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
bmxpbmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBS
ZW5kZXJMaW5lQnJlYWs6OnNldElubGluZUJveFdyYXBwZXIoSW5saW5lRWxlbWVudEJveCogaW5s
aW5lQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5GbG93LmNwcAppbmRleCA5YmI5YTUzOWQ2NjQyZGY5MDAyNmE3ODJhZjhjZjg0ZGM0OWRhMmE5
Li40MTAzZGFkNDg0NGRkMjRhMzAyYTczMmFmMjIxOWFjOTAwMDFjYmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcApAQCAtNDIs
NyArNDIsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVsdGlDb2x1bW5G
bG93KTsKIAogUmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3coRG9j
dW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhZ21l
bnRlZEZsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zcGFubmVyTWFwKHN0
ZDo6bWFrZV91bmlxdWU8U3Bhbm5lck1hcD4oKSkKKyAgICAsIG1fc3Bhbm5lck1hcChtYWtlVW5p
cXVlPFNwYW5uZXJNYXA+KCkpCiAgICAgLCBtX2xhc3RTZXRXb3JrZWRPbihudWxscHRyKQogICAg
ICwgbV9jb2x1bW5Db3VudCgxKQogICAgICwgbV9jb2x1bW5XaWR0aCgwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ZGEzYmQ3Mzc3MWJhMTcxOTBlYWMz
NWRhNjM4ZTI0M2YxOTAyOTA3Li4wYmY1MTkzZGU0ODQ0NWJjYzY3N2U5MTRlOGFkM2RmODFjZWI4
MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg5
Myw3ICsxODkzLDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YSYg
UmVuZGVyT2JqZWN0OjpyYXJlRGF0YSgpIGNvbnN0CiBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVj
dFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNS
YXJlRGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtd
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtd
IHsgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9y
LT52YWx1ZTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
CmluZGV4IDZkNTZiNWVjYTJjNmIyNzY4YWZiYjJkNGNmZjBhYzA4ODJlOWZkYzYuLjBkZmUyODI3
NjRmNDA4YjYyMGJlZjVkOWY1OGU4OGE2Y2M3NmMwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNTMsNyArNTMs
NyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4p
OwogCiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRN
TFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6
IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9z
bmFwc2hvdFJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkK
KyAgICAsIG1fc25hcHNob3RSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+
KCkpCiB7CiAgICAgbV9zbmFwc2hvdFJlc291cmNlLT5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDE4NmNhODcwZWQxMDkx
M2Q1OGI4NTQ5ZWI5NmRlMzM2ZTM0NTUzNTkuLmU5MWExMzM3MTk5MTJkMThmYTU1ZTM2ZDgzNTU4
ODU3YzJkMThiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApA
QCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQgUmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5CiAgICAgICAgIC8vIEFj
Y29yZGluZyB0byB0aGUgQ1NTMiBzcGVjLCB5b3Ugb25seSB1c2UgZml4ZWQgdGFibGUgbGF5b3V0
IGlmIGFuCiAgICAgICAgIC8vIGV4cGxpY2l0IHdpZHRoIGlzIHNwZWNpZmllZCBvbiB0aGUgdGFi
bGUuICBBdXRvIHdpZHRoIGltcGxpZXMgYXV0byB0YWJsZSBsYXlvdXQuCiAgICAgICAgIGlmIChz
dHlsZSgpLnRhYmxlTGF5b3V0KCkgPT0gVGFibGVMYXlvdXRUeXBlOjpGaXhlZCAmJiAhc3R5bGUo
KS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpeGVkVGFibGVMYXlvdXQ+KHRoaXMpOworICAgICAgICAgICAgbV90
YWJsZUxheW91dCA9IG1ha2VVbmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9U
YWJsZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1
ZTxBdXRvVGFibGVMYXlvdXQ+KHRoaXMpOwogICAgIH0KIAogICAgIC8vIElmIGJvcmRlciB3YXMg
Y2hhbmdlZCwgaW52YWxpZGF0ZSBjb2xsYXBzZWQgYm9yZGVycyBjYWNoZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBhYWQwYzE0N2YxMWQzOWIzYWQxNmNhZGRj
MTUzYzMyMmU5MmQ3YTBhLi5iNjMwNWRlNWY2MzE2YzRkYjI2MGE3OTljZDExNmJiZDFhZTU0NDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMzExLDcgKzEz
MTEsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkK
IAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclRleHQ6OmNyZWF0ZVRleHRC
b3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiB9CiAKIHZv
aWQgUmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gmIHRleHRCb3gpCkBA
IC0xNTQ1LDcgKzE1NDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFz
dFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogICAgICAgICByZXR1
cm47CiAgICAgYXV0byYgc2VjdXJlVGV4dFRpbWVyID0gc2VjdXJlVGV4dFRpbWVycygpLmFkZCh0
aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzZWN1cmVUZXh0VGltZXIp
Ci0gICAgICAgIHNlY3VyZVRleHRUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjdXJlVGV4dFRp
bWVyPigqdGhpcyk7CisgICAgICAgIHNlY3VyZVRleHRUaW1lciA9IG1ha2VVbmlxdWU8U2VjdXJl
VGV4dFRpbWVyPigqdGhpcyk7CiAgICAgc2VjdXJlVGV4dFRpbWVyLT5yZXN0YXJ0KG9mZnNldEFm
dGVyTGFzdFR5cGVkQ2hhcmFjdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCmluZGV4IGMxNDQ1MWExOGVlYTdhNTcxYTI3Nzc4OThhNzljYzhiNDNmZjMxNDIu
LjVmZWM2NzhjNmJiNWRmMGU0OTIyYjAxMmMzZjI2OGRiYWI0YTdiNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIFJlbmRl
clZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0
KSBjb25zdAogICAgIC8vIEZJWE1FOiBNYXliZSB0aGVyZSBzaG91bGQgYmUgYSByZWdpb24gdHlw
ZSB0aGF0IGRvZXMgdGhpcyBhdXRvbWF0aWNhbGx5LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplID0gMTYgKiAxNjsKICAgICBpZiAobV9hY2N1
bXVsYXRlZFJlcGFpbnRSZWdpb24tPmdyaWRTaXplKCkgPiBtYXhpbXVtUmVwYWludFJlZ2lvbkdy
aWRTaXplKQotICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOworICAg
ICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPihtX2Fj
Y3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6
OmZsdXNoQWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uKCkgY29uc3QKQEAgLTcyNCw3ICs3MjQsNyBA
QCBib29sIFJlbmRlclZpZXc6OnVzZXNDb21wb3NpdGluZygpIGNvbnN0CiBSZW5kZXJMYXllckNv
bXBvc2l0b3ImIFJlbmRlclZpZXc6OmNvbXBvc2l0b3IoKQogewogICAgIGlmICghbV9jb21wb3Np
dG9yKQotICAgICAgICBtX2NvbXBvc2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVy
Q29tcG9zaXRvcj4oKnRoaXMpOworICAgICAgICBtX2NvbXBvc2l0b3IgPSBtYWtlVW5pcXVlPFJl
bmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX2NvbXBvc2l0b3I7
CiB9CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIEltYWdlUXVh
bGl0eUNvbnRyb2xsZXImIFJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKQogewog
ICAgIGlmICghbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyKQotICAgICAgICBtX2ltYWdlUXVhbGl0
eUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0
aGlzKTsKKyAgICAgICAgbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbWFn
ZVF1YWxpdHlDb250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlUXVhbGl0eUNv
bnRyb2xsZXI7CiB9CiAKQEAgLTgzNCw3ICs4MzQsNyBAQCBSZW5kZXJWaWV3OjpSZXBhaW50UmVn
aW9uQWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcihSZW5kZXJWaWV3KiB2aWV3
KQogCiAgICAgbV93YXNBY2N1bXVsYXRpbmdSZXBhaW50UmVnaW9uID0gISFyb290UmVuZGVyVmll
dy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb247CiAgICAgaWYgKCFtX3dhc0FjY3VtdWxhdGlu
Z1JlcGFpbnRSZWdpb24pCi0gICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVw
YWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgICAgICByb290UmVu
ZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4o
KTsKICAgICBtX3Jvb3RWaWV3ID0gbWFrZVdlYWtQdHIoKnJvb3RSZW5kZXJWaWV3KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGZkY2Q1OWM1
MmM1ZjMyOGY1MjA5ZjAwYzFmOGQ4MTZhZGM1Zjc2NjguLjQ0NTU4NDFhZjMyZmYxNTI1MmNmYTI4
ZWQ4YTY5YzNlNDlmMWYzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVs
bGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGZsbwogICAg
ICAgICBnRWxsaXBzaXNCb3hNYXAgPSBuZXcgRWxsaXBzaXNCb3hNYXAoKTsKIAogICAgIEFTU0VS
VCghaGFzRWxsaXBzaXNCb3goKSk7Ci0gICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNC
b3hNYXAtPnNldCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3co
KSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3Vw
Qm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290
Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7
CisgICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBtYWtl
VW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlw
c2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBs
b2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJr
dXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgc2V0SGFzRWxsaXBzaXNCb3godHJ1
ZSk7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYW4gUlRMIHZlcnNpb24gb2YgdGhpcz8KICAg
ICBpZiAobHRyICYmICh4KCkgKyBsb2dpY2FsV2lkdGgoKSArIGVsbGlwc2lzV2lkdGgpIDw9IGJs
b2NrUmlnaHRFZGdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApp
bmRleCA3ZGYyODI4OGE0ZDU1YzJjN2QyNmFkNGJjMDE3NmQwYjc2MTc4MzY0Li4yNDdlNTVjMDY5
ZTlmZTg4MWNhZjRiZmJjMmI0YWVmMTllMzYxN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBSb290SW5saW5lQm94
IDogcHVibGljIElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSb290SW5saW5l
Qm94PgogICAgICAgICBpZiAobV9mbG9hdHMpCiAgICAgICAgICAgICBtX2Zsb2F0cy0+YXBwZW5k
KG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
ZmxvYXRzID0gc3RkOjptYWtlX3VuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFr
UHRyKGZsb2F0aW5nQm94KSk7CisgICAgICAgICAgICBtX2Zsb2F0cyA9IG1ha2VVbmlxdWU8Q2xl
YW5MaW5lRmxvYXRMaXN0PigxLCBtYWtlV2Vha1B0cihmbG9hdGluZ0JveCkpOwogICAgIH0KIAog
ICAgIHZvaWQgcmVtb3ZlRmxvYXQoUmVuZGVyQm94JiBmbG9hdGluZ0JveCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5kZXggZWM1ZTczNTZh
NjRkMTI0OWRkYTExNDdlOGJiYTMxZjQ3OTBiNGJmMi4uYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNm
NGU4MTFjM2VhMWI5M2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Nl
bGVjdGlvblJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5jcHAKQEAgLTEzMSwxMyArMTMxLDEzIEBAIHN0YXRpYyBTZWxlY3Rpb25E
YXRhIGNvbGxlY3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24s
IGJvb2wKICAgICB3aGlsZSAoc3RhcnQgJiYgc3RhcnQgIT0gc3RvcCkgewogICAgICAgICBpZiAo
aXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpzdGFydCwgc2VsZWN0aW9uKSkgewogICAgICAg
ICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFu
ZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAg
ICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CisgICAgICAgICAgICBvbGRTZWxl
Y3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9u
SW5mbz4oKnN0YXJ0LCB0cnVlKSk7CiAgICAgICAgICAgICBpZiAocmVwYWludERpZmZlcmVuY2Up
IHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8qIGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVs
b3dWaWV3KCpzdGFydCk7IGJsb2NrOyBibG9jayA9IGNvbnRhaW5pbmdCbG9ja0JlbG93Vmlldygq
YmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGJsb2NrSW5mbyA9IG9sZFNlbGVj
dGlvbkRhdGEuYmxvY2tzLmFkZChibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOworICAgICAgICAgICAgICAgICAgICBi
bG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmJsb2NrKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMywxMyAr
MjEzLDEzIEBAIEludFJlY3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBU
b1Zpc2libGVDb250ZW50IGNsaXBUb1Zpc2libGVDb250CiAgICAgICAgIGlmICgoc3RhcnQtPmNh
bkJlU2VsZWN0aW9uTGVhZigpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgp
IHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKICAgICAgICAgICAgICYmIHN0
YXJ0LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgewog
ICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBn
YXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAg
ICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVj
dGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNv
bnRlbnQ6OlllcykpOworICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1
ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENs
aXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKICAgICAgICAgICAgIGF1dG8qIGJsb2NrID0gc3Rh
cnQtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgd2hpbGUgKGJsb2NrICYmICFpczxS
ZW5kZXJWaWV3PigqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclNlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSByZW5kZXJlcnMuYWRkKGJsb2NrLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVD
b250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOworICAgICAgICAgICAgICAgIGJs
b2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2NrLCBjbGlwVG9W
aXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsKICAgICAgICAgICAg
ICAgICBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBs
eShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAg
c2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAg
ICAgZm9yIChhdXRvKiBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsgY3VycmVudFJl
bmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJlbnRSZW5kZXJl
ciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRl
cmVyRm9yU2VsZWN0aW9uKCpjdXJyZW50UmVuZGVyZXIsIG1fc2VsZWN0aW9uQ29udGV4dCkpIHsK
LSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rp
b25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJl
bmRlcmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rp
b25JbmZvPiBzZWxlY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigq
Y3VycmVudFJlbmRlcmVyLCB0cnVlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAg
ICAgICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHNlbGVjdGlvbkluZm8tPmNvbGxlY3RlZFNlbGVj
dGlvblJlY3RzKCkpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRk
UmVjdChzZWxlY3Rpb25JbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIHJlY3QpOwpAQCAtMjk0LDcg
KzI5NCw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBu
ZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVj
dGVkQmxvY2tzLmFkZChjb250YWluaW5nQmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJs
b2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgICAgICAgICAgYmxv
Y2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpjb250YWluaW5n
QmxvY2spOwogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9j
ay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAg
ICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkR2FwUmVjdHMoYmxvY2tJbmZv
LT5yZXBhaW50Q29udGFpbmVyKCksIGJsb2NrSW5mby0+cmVjdHMoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggOGM3NjZlNmRlMmM3NGFk
MDM3OTczMzMxZmM3ZjVhNDc0OTAxNWI4ZS4uYzM2MmY0ZTU3YjAwZjljZTM5YTczZWNlODExYzJj
ODMyZDY1MGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0LmNwcApAQCAtOTk3LDcgKzk5Nyw3IEBAIExheW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3Rv
ciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291bnQsIGNvbnN0IFJlbmRlckJsb2NrCiBjb25z
dCBSdW5SZXNvbHZlciYgTGF5b3V0OjpydW5SZXNvbHZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3J1blJlc29sdmVyKQotICAgICAgICBtX3J1blJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxS
dW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOworICAgICAgICBtX3J1blJl
c29sdmVyID0gbWFrZVVuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRo
aXMpOwogICAgIHJldHVybiAqbV9ydW5SZXNvbHZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDFi
Zjk4ZTRlZWI0M2JhMjJjZGE0ZTZmNWQzYmMyYTVmOWZjNGI0YjcuLjA2MjViMTZiZDU0MzE5NzNl
ZDMxZGU5OThhZWQ4ODliMDEyYmEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBA
QCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91
dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0Rh
dGE+IGRlYnVnU2hhZG93ID0gbnVsbHB0cjsKICAgICBpZiAoZmxvdy5zZXR0aW5ncygpLnNpbXBs
ZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpIHsKLSAgICAgICAgZGVidWdTaGFkb3cg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNo
YWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CisgICAgICAg
IGRlYnVnU2hhZG93ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAs
IDIwLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAsIDIwMCkpOwog
ICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVidWdTaGFkb3cuZ2V0KCkpOwogICAgIH0K
IApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgZ2VuZXJhdGVMaW5lQm94VHJlZShSZW5kZXJCbG9j
a0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQogICAgICAgICBCaWRpUnVuTGlzdDxC
aWRpUnVuPiBiaWRpUnVuczsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsg
aXQgIT0gcmFuZ2UuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgIGF1dG8gcnVuID0gKml0Owot
ICAgICAgICAgICAgYmlkaVJ1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4o
cnVuLmxvY2FsU3RhcnQoKSwgcnVuLmxvY2FsRW5kKCksIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0
Jj4ocnVuLnJlbmRlcmVyKCkpLCBiaWRpQ29udGV4dC5wdHIoKSwgVV9MRUZUX1RPX1JJR0hUKSk7
CisgICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxCaWRpUnVuPihydW4u
bG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihy
dW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIExpbmVJbmZvIGxpbmVJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKaW5kZXggM2JhMTMwZDQ1NTlkNzI5MmQ4OTFmNTUz
Y2YxNDgwZjg2NmJiMmJhZC4uNGI0M2U2YWNiZTBlZWRhZjRlYWY0ZDJlNWQ1YTQ0NjM5MDYwNTNl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0y
MjUsNyArMjI1LDcgQEAgdm9pZCBUZXh0QXV0b1NpemluZzo6YWRkVGV4dE5vZGUoVGV4dCYgbm9k
ZSwgZmxvYXQgY2FuZGlkYXRlU2l6ZSkKICAgICBMT0coVGV4dEF1dG9zaXppbmcsICIgYWRkQXV0
b1NpemVkTm9kZSAlcCBjYW5kaWRhdGVTaXplPSVmIiwgJm5vZGUsIGNhbmRpZGF0ZVNpemUpOwog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0Tm9kZXMuYWRkPFRleHRBdXRvU2l6aW5nSGFzaFRy
YW5zbGF0b3I+KG5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKSwgbnVsbHB0cik7CiAgICAgaWYgKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOworICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOwog
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZFRleHROb2RlKG5vZGUsIGNhbmRpZGF0
ZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5jcHAKaW5kZXggMmIxYzFmYTAzY2ExYzU3NTY5MDI3N2E1ZTgxMjg3MTAxMGQ0NDY3ZS4uZDEx
NjYxNWE3MjZjNWEwYTk0M2Q5YjlmNmUwOTQwYjk1ZTY5MDkxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lk
IExpbmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiBy
ZXNvbHZlciwgTGluZUluZm8mCiAgICAgICAgIGlmIChvYmplY3QuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpIHsKICAgICAgICAgICAgIHNldFN0YXRpY1Bvc2l0aW9ucyhtX2Jsb2NrLCBkb3duY2Fz
dDxSZW5kZXJCb3g+KG9iamVjdCksIHdpZHRoLnNob3VsZEluZGVudFRleHQoKSk7CiAgICAgICAg
ICAgICBpZiAob2JqZWN0LnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpIHsK
LSAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlx
dWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRp
cigpKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1bihtYWtlVW5p
cXVlPEJpZGlSdW4+KDAsIDEsIG9iamVjdCwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5k
aXIoKSkpOwogICAgICAgICAgICAgICAgIGxpbmVJbmZvLmluY3JlbWVudFJ1bnNGcm9tTGVhZGlu
Z1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChvYmplY3Qu
aXNGbG9hdGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3Rl
clNoYXBlLmNwcAppbmRleCA0YjE1OTdlOWYyMWM5Y2Q0YjJmMGQ4ODM0NzQ0Nzc1ZjFkOGJkZTAx
Li5kNTIwOTJiNjhlZDhlMmM4ZmRhNTE1YzkwY2Q1MjIzNTZkNjU1YzI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtNzYsNyArNzYs
NyBAQCBJbnRTaGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0
KGludCB5KSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0
ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1h
cmdpbikgY29uc3QKIHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChvZmZzZXQoKSA+
IHNoYXBlTWFyZ2luKSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiArIHNoYXBlTWFy
Z2luICogMjsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJ
bnRlcnZhbHM+KG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFyZ2luLCBvZmZz
ZXQoKSkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFs
cz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7
CiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ioc2hh
cGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygp
Lm1heFkoKTsgKyt5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CmluZGV4IDMwMjMxYTBiZTFiYmM2M2U0YmUzZDI1MDUxMmJlZDNkMTk1OTQwOTkuLmY1ZWZlZmRk
MzJiMzA1NDdhZGJkOGViMDhmNTRlNjNiMDI0MGZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC00NiwyNCArNDYsMjQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlSW5zZXRTaGFwZShjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiB7CiAgICAgQVNTRVJUKGJvdW5kcy5yZWN0KCku
d2lkdGgoKSA+PSAwICYmIGJvdW5kcy5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Qm94U2hhcGU+KGJvdW5kcyk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IGNyZWF0ZUNpcmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQgcmFkaXVz
KQogewogICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIu
eSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRp
dXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNl
bnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMq
MiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBj
b25zdCBGbG9hdFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChyYWRpaS53aWR0aCgpID49IDAg
JiYgcmFkaWkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVj
dGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVy
LnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIp
LCByYWRpaSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVj
dChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgp
LCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CiB9CiAKIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2Vz
KSwgZmlsbFJ1bGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBvbHlnb25TaGFwZT4oV1RGTW92
ZSh2ZXJ0aWNlcyksIGZpbGxSdWxlKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9hdFJlY3QgcGh5
c2ljYWxSZWN0VG9Mb2dpY2FsKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbG9naWNhbEJv
eEhlaWdodCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCkBAIC0xMjgsNyArMTI4LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSYg
YmFzaWNTaGFwZSwgY29uc3QgTGEKICAgICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVl
cyA9IHBvbHlnb24udmFsdWVzKCk7CiAgICAgICAgIHNpemVfdCB2YWx1ZXNTaXplID0gdmFsdWVz
LnNpemUoKTsKICAgICAgICAgQVNTRVJUKCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IG1ha2VVbmlxdWU8VmVjdG9y
PEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB2YWx1ZXNTaXplOyBpICs9IDIpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgdmVy
dGV4KAogICAgICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWVzLmF0KGkpLCBi
b3hXaWR0aCksCkBAIC0xNzksNyArMTc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFw
ZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKIAog
ICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gc25hcHBlZEludFJlY3QoaW1hZ2VSKTsKICAgICBJbnRS
ZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKLSAgICBhdXRvIGludGVy
dmFscyA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3Qu
aGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CisgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5p
cXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVj
dC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJl
IHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXpl
KCksIFVuYWNjZWxlcmF0ZWQpOwogCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJl
c2hvbGQsIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Qu
c2l6ZSgpKTsKKyAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4o
V1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CiAgICAgcmFzdGVyU2hhcGUt
Pm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4g
PSBtYXJnaW47CiAgICAgcmV0dXJuIHJhc3RlclNoYXBlOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRS
ZWN0JiByb3VuZGVkUmVjdCwgV3JpCiAKICAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCByb3VuZGVk
UmVjdC5yZWN0KCkud2lkdGgoKSwgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpKTsKICAgICBG
bG9hdFJvdW5kZWRSZWN0IGJvdW5kcyhyZWN0LCByb3VuZGVkUmVjdC5yYWRpaSgpKTsKLSAgICBh
dXRvIHNoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICBhdXRv
IHNoYXBlID0gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKICAgICBzaGFwZS0+bV93cml0
aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
aAppbmRleCBjZDk0Zjg5YzAyYjBiOGMxMzUxOTQ1N2U0NGQwZGRhZjZkODdmMWZhLi45NDg0MzE3
MTk0N2MwMjMwOWFiN2Y0ZmIxYjk3YzI2Mzg4MmVlMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaApAQCAtMTEzLDcgKzExMyw3
IEBAIGNsYXNzIFNoYXBlT3V0c2lkZUluZm8gZmluYWwgewogICAgICAgICBJbmZvTWFwJiBpbmZv
TWFwID0gU2hhcGVPdXRzaWRlSW5mbzo6aW5mb01hcCgpOwogICAgICAgICBpZiAoU2hhcGVPdXRz
aWRlSW5mbyogaW5mbyA9IGluZm9NYXAuZ2V0KCZrZXkpKQogICAgICAgICAgICAgcmV0dXJuICpp
bmZvOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGluZm9NYXAuYWRkKCZrZXksIHN0ZDo6bWFrZV91
bmlxdWU8U2hhcGVPdXRzaWRlSW5mbz4oa2V5KSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5m
b01hcC5hZGQoJmtleSwgbWFrZVVuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKICAgICAg
ICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KICAgICBzdGF0aWMgdm9p
ZCByZW1vdmVJbmZvKGNvbnN0IFJlbmRlckJveCYga2V5KSB7IGluZm9NYXAoKS5yZW1vdmUoJmtl
eSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3Bw
CmluZGV4IDBjOThmOTE2NmY3ZTE1Mjk3MDNiY2RiMmM4YzgzY2M4MGJiN2JmMjQuLjc0NGM5MGI4
ZmIzZjUyNzY4YTUzOGQyMTM1ODM2MmNhNjM0ODI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzU4LDcgKzM1OCw3IEBAIFJlZjxC
YXNpY1NoYXBlPiBCYXNpY1NoYXBlUGF0aDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwg
ZG91YmxlIHByb2dyZXNzKSBjCiAKICAgICBhdXRvJiBmcm9tUGF0aCA9IGRvd25jYXN0PEJhc2lj
U2hhcGVQYXRoPihmcm9tKTsKIAotICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIHJlc3VsdGluZ1BhdGhC
eXRlcyA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVpbGRBbmltYXRl
ZFNWR1BhdGhCeXRlU3RyZWFtKCpmcm9tUGF0aC5tX2J5dGVTdHJlYW0sICptX2J5dGVTdHJlYW0s
ICpyZXN1bHRpbmdQYXRoQnl0ZXMsIHByb2dyZXNzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gQmFz
aWNTaGFwZVBhdGg6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdGluZ1BhdGhCeXRlcykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCBlN2JiMDYxNjUw
MmQ5OWQ2ZGI0MzkyYmI0NjhhOWFiNDY5Y2U0OTRhLi4yYzEyZGQ5YjQwZGQ0MGIzYzBiZjY3NDkz
MjJhZTJiMGZkMWUwNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29u
dGVudERhdGEuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBJbWFnZUNvbnRlbnREYXRhIGZpbmFs
IDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVh
dGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZp
bmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNv
bnN0IGZpbmFsCiAgICAgewotICAgICAgICBhdXRvIGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bWFnZUNvbnRlbnREYXRhPihtX2ltYWdlLmNvcHlSZWYoKSk7CisgICAgICAgIGF1dG8gaW1hZ2Ug
PSBtYWtlVW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKICAgICAg
ICAgaW1hZ2UtPnNldEFsdFRleHQoYWx0VGV4dCgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwog
ICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBUZXh0Q29udGVudERhdGEgZmluYWwgOiBw
dWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmpl
Y3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVy
bmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERh
dGE+KG1fdGV4dCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50
ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4o
bV90ZXh0KTsgfQogCiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CkBAIC0xNjEsNyArMTYxLDcgQEAg
Y2xhc3MgQ291bnRlckNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAg
ICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQm
LCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KHN0ZDo6bWFrZV91bmlx
dWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDb3VudGVyQ29udGVudERhdGE+KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIo
KSkpOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gbV9jb3Vu
dGVyOwpAQCAtMTkwLDcgKzE5MCw3IEBAIGNsYXNzIFF1b3RlQ29udGVudERhdGEgZmluYWwgOiBw
dWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmpl
Y3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVy
bmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnRE
YXRhPihxdW90ZSgpKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJ
bnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGVDb250ZW50RGF0
YT4ocXVvdGUoKSk7IH0KIAogICAgIFF1b3RlVHlwZSBtX3F1b3RlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggZjNkOTFkYzhkYmM4ZDll
NDZjNjAxYjk1ODQzYjlhOTUyZjNiMmQxZC4uMzAwMTRkMDRmNzBmYjkxODE3NDI4NzYwM2ZkZWFi
NzIzOTU2MTRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXll
ci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgRmlsbExheWVyOjpGaWxsTGF5ZXIoRmlsbExheWVyVHlw
ZSB0eXBlKQogfQogCiBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25zdCBGaWxsTGF5ZXImIG8pCi0g
ICAgOiBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9u
ZXh0KSA6IG51bGxwdHIpCisgICAgOiBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxM
YXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAg
ICAsIG1feFBvc2l0aW9uKG8ubV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBv
c2l0aW9uKQpAQCAtMTE3LDcgKzExNyw3IEBAIEZpbGxMYXllcjo6fkZpbGxMYXllcigpCiAKIEZp
bGxMYXllciYgRmlsbExheWVyOjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQogewotICAg
IG1fbmV4dCA9IG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4
dCkgOiBudWxscHRyOworICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxGaWxsTGF5
ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOwogCiAgICAgbV9pbWFnZSA9IG8ubV9pbWFnZTsKICAg
ICBtX3hQb3NpdGlvbiA9IG8ubV94UG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAyNDliYTQ3ZTU4NDNlY2M2MmU2ZmQ0ZjI2
YWYxY2Y1MzhhMTYzZjljLi5mYjQzYzIwZTVjZTk5ZWNlMTlmNDUyZmQ5Zjg3OTY0ZDgxNGJiN2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
QEAgLTEwOSw3ICsxMDksNyBAQCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRl
clN0eWxlOjpjbG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CiB9CiAKIFJlbmRlclN0eWxl
IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKQEAgLTQwOSw3ICs0MDks
NyBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldQogICAgIFJlbmRlclN0eWxlKiByZXN1bHQgPSBw
c2V1ZG8uZ2V0KCk7CiAKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzKQotICAgICAgICBt
X2NhY2hlZFBzZXVkb1N0eWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHNldWRvU3R5bGVDYWNoZT4o
KTsKKyAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMgPSBtYWtlVW5pcXVlPFBzZXVkb1N0eWxl
Q2FjaGU+KCk7CiAKICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+YXBwZW5kKFdURk1vdmUocHNl
dWRvKSk7CiAKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1c3Rv
bVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byYgZGF0
YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFkYXRhLmN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpCi0gICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVk
UHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAg
ICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8
U3RyaW5nPj4oKTsKICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMtPmFkZChu
YW1lKTsKIH0KIApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29u
dGVudChSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxJ
bWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKKyAgICBzZXRD
b250ZW50KG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwo
KSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGJvb2wgYWRkKQpAQCAtMTMxMCwxMyArMTMxMCwxMyBAQCB2b2lkIFJlbmRlclN0
eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkKICAgICBpZiAo
YWRkICYmIGRhdGEuY29udGVudCkgewogICAgICAgICBhdXRvJiBsYXN0ID0gbGFzdENvbnRlbnQo
KmRhdGEuY29udGVudCk7CiAgICAgICAgIGlmICghaXM8VGV4dENvbnRlbnREYXRhPihsYXN0KSkK
LSAgICAgICAgICAgIGxhc3Quc2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0
YT4oc3RyaW5nKSk7CisgICAgICAgICAgICBsYXN0LnNldE5leHQobWFrZVVuaXF1ZTxUZXh0Q29u
dGVudERhdGE+KHN0cmluZykpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8mIHRl
eHRDb250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPihsYXN0KTsKICAgICAgICAgICAg
IHRleHRDb250ZW50LnNldFRleHQodGV4dENvbnRlbnQudGV4dCgpICsgc3RyaW5nKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRhdGEuY29udGVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOworICAgICAgICBkYXRhLmNvbnRlbnQgPSBtYWtl
VW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKTsKICAgICAgICAgYXV0byYgYWx0VGV4dCA9
IGRhdGEuYWx0VGV4dDsKICAgICAgICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQogICAgICAgICAg
ICAgZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFsdFRleHQpOwpAQCAtMTMyNywxMiArMTMyNywx
MiBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVy
Q29udGVudD4gY291bnRlciwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFjb3VudGVyKQogICAgICAg
ICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50
RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVl
PENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CiB9CiAKIHZvaWQg
UmVuZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkKIHsKLSAg
ICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBh
ZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSks
IGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnRBbHRUZXh0KGNvbnN0IFN0
cmluZyYgc3RyaW5nKQpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYg
UmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCkKIHsKICAgICBhdXRvJiBtYXAg
PSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvdW50ZXJEaXJlY3RpdmVzOwogICAg
IGlmICghbWFwKQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3Rp
dmVNYXA+KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4o
KTsKICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAtMTY3MSwxNCArMTY3MSwxNCBAQCB2b2lkIFJl
bmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygpCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHls
ZTo6ZW5zdXJlQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLmFuaW1hdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAg
ICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gbWFrZVVu
aXF1ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+YW5pbWF0aW9uczsKIH0KIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZVRy
YW5zaXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
dHJhbnNpdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJh
bnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgICAgIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBtYWtlVW5pcXVlPEFu
aW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFu
c2l0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAppbmRleCAyMGIyYTgxMTRiMGM4ZTllYmQ0ODI3MDc5YTk4
MjBmMmVjMGRjZGMyLi42ZTM3Y2Y4ZmI4YWJhNTVlYzMzMGE5NjAzM2E4YTk1NGM3Y2IwNGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVE
ZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5
bGVEZWZzLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVT
aGFkb3dTVkdEYXRhKCkKIAogaW5saW5lIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dT
VkdEYXRhKGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVk
PFN0eWxlU2hhZG93U1ZHRGF0YT4oKQotICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IHN0ZDo6
bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQorICAgICwg
c2hhZG93KG90aGVyLnNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRv
dykgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHAKaW5kZXggM2Q2MWM5NGMwMTY2MTYwODU4ZGFiZDg0MDlmYzQwODY3MGU1
MDFjYS4uYzE3ZWFmODU5YjBiZmFhN2RhYmMwMDhkNGU3NDBmYzYzMGE0YjgzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMzMsNyArMzMs
NyBAQCBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCiAgICAgLCBt
X2NvbG9yKG8ubV9jb2xvcikKICAgICAsIG1fc3R5bGUoby5tX3N0eWxlKQogICAgICwgbV9pc1dl
YmtpdEJveFNoYWRvdyhvLm1faXNXZWJraXRCb3hTaGFkb3cpCi0gICAgLCBtX25leHQoby5tX25l
eHQgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQor
ICAgICwgbV9uZXh0KG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby5tX25leHQp
IDogbnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGFkMmNiZDk1N2VlZjgy
NTYwY2ZiMzUyZTlmNTBiMzllNjMzYTI2ZmYuLjk2ZGJiYTAwN2U2YTY0YTdkNjk3YTI5YTIxZDYy
MWFkNDQ3NTRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBpbmxp
bmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihv
LnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IpCiAgICAgLCBjYXJldENvbG9yKG8uY2FyZXRD
b2xvcikKICAgICAsIHZpc2l0ZWRMaW5rQ2FyZXRDb2xvcihvLnZpc2l0ZWRMaW5rQ2FyZXRDb2xv
cikKLSAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFk
b3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCB0ZXh0U2hhZG93KG8udGV4
dFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8udGV4dFNoYWRvdykgOiBudWxscHRy
KQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQp
CiAgICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmNwcAppbmRleCA2ZmJiMmI3YjBjM2ViMDNlODY5YTFlYWFjOTE2MTExOWM5YzYxZTliLi5iZGQw
MTkxNWFhMjc4ZGQ2YTY2NDhmZjRjM2ZiZGIzZmNjZDE0MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAg
ICwgc2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgogICAgICwgY29udGVu
dChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAgICwgY291bnRl
ckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRl
ckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKKyAgICAsIGNv
dW50ZXJEaXJlY3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBtYWtlVW5pcXVlPENvdW50ZXJE
aXJlY3RpdmVNYXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCiAgICAgLCBhbHRU
ZXh0KG8uYWx0VGV4dCkKLSAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91
bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBib3hTaGFk
b3coby5ib3hTaGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBu
dWxscHRyKQogICAgICwgd2lsbENoYW5nZShvLndpbGxDaGFuZ2UpCiAgICAgLCBib3hSZWZsZWN0
KG8uYm94UmVmbGVjdCkKLSAgICAsIGFuaW1hdGlvbnMoby5hbmltYXRpb25zID8gc3RkOjptYWtl
X3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5hbmltYXRpb25zKSA6IG51bGxwdHIpCi0gICAgLCB0
cmFuc2l0aW9ucyhvLnRyYW5zaXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0
Pigqby50cmFuc2l0aW9ucykgOiBudWxscHRyKQorICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlv
bnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikK
KyAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxp
c3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCiAgICAgLCBtYXNrKG8ubWFzaykKICAgICAs
IG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJbWFnZSkKICAgICAsIHBhZ2VTaXplKG8ucGFnZVNpemUp
CkBAIC0xNzAsNyArMTcwLDcgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIGp1c3Rp
ZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKICAgICAsIGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYp
CiAgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykKLSAgICAsIGN1c3Rv
bVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8g
c3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFBy
b3BlcnRpZXMpIDogbnVsbHB0cikKKyAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMo
by5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmlu
Zz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKICNpZiBFTkFC
TEUoUE9JTlRFUl9FVkVOVFMpCiAgICAgLCB0b3VjaEFjdGlvbnMoby50b3VjaEFjdGlvbnMpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5j
cHAKaW5kZXggMmM2ZjMxNzhlZWIyNmM3YjJjMGQ5NWFlMTA4YjdlZmNjNmUyMmM0ZS4uMjRjZGU0
YmQ2MWU3MTRjMjMyM2I5ZTVjZDJjZjI2OWUyODQ1ZjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVu
ZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKICAgICAs
IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3Vy
Y2UobWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogICAgIGltYWdlUmVzb3Vy
Y2UoKS5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRleCAzYzMxMDU2ZDFjYWIxZmVhMTA0OTA3ODBk
MDBjOGRjZDJjNzk4MDY4Li5iYTFjZDA1MmRhZGFhMWNlMTg0MWM3YzIzY2FmMzNmYWE0ZTM0N2Vi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNW
R0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsCiAKIHN0ZDo6dW5p
cXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dC
b3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVGbG93Qm94
PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0
aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJu
IGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZVRleHQuY3BwCmluZGV4IDY3ZTZmOTg5N2QyNzc0NGZkNDEzM2ZmMjc2NzE0YzRlOWRh
NjY1YjAuLmRiZjQ5MDNmODlmNGRjOTJlZGZmMzA1MzkyNTg2OWYzMmUyZDk5YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNw
cApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAKIHN0ZDo6dW5p
cXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94
KCkKIHsKLSAgICBhdXRvIGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW5saW5lVGV4dEJveD4o
KnRoaXMpOworICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhp
cyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAgIHJldHVybiBi
b3g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDFiM2VmMjRjYzkyZDIwNTJhMzRhYWQyMDg4MjMz
MGUxYTEyM2I4NGYuLjFhZDI2NDk2NDY3MDljMjNmMGRiOWNmYWU0Yjg2M2MyNDdiMzY5MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0
ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0Zp
CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gZmlsdGVyLnRhcmdldEJvdW5kaW5n
Qm94KCk7CiAKICAgICAvLyBBZGQgZWZmZWN0cyB0byB0aGUgYnVpbGRlcgotICAgIGF1dG8gYnVp
bGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6
Y3JlYXRlKGZpbHRlcikpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVy
QnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOwogICAgIGJ1aWxkZXItPnNl
dFByaW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpKTsKICAgICBi
dWlsZGVyLT5zZXRUYXJnZXRCb3VuZGluZ0JveCh0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgCkBA
IC0xMjIsNyArMTIyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJu
IGZhbHNlOyAvLyBBbHJlYWR5IGJ1aWx0LCBvciB3ZSdyZSBpbiBhIGN5Y2xlLCBvciB3ZSdyZSBt
YXJrZWQgZm9yIHJlbW92YWwuIFJlZ2FyZGxlc3MsIGp1c3QgZG8gbm90aGluZyBtb3JlIG5vdy4K
ICAgICB9CiAKLSAgICBhdXRvIGZpbHRlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckRh
dGE+KCk7CisgICAgYXV0byBmaWx0ZXJEYXRhID0gbWFrZVVuaXF1ZTxGaWx0ZXJEYXRhPigpOwog
ICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5n
Qm94KCk7CiAKICAgICBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzID0gU1ZHTGVuZ3RoQ29udGV4dDo6
cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJFbGVtZW50PigmZmlsdGVyRWxlbWVudCgpLCBmaWx0
ZXJFbGVtZW50KCkuZmlsdGVyVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5jcHAKaW5kZXggZDhhZDA4MDQ2NmM1YzZkOWVlY2YwNzhjZGZmNjQyNmM2MTRhMGNlMi4u
NTUyY2U1YTMzYTgwNjJlNmJlZTBiMDRhZTNmMTYwZjA5OWViNTJmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KIAogICAg
IGF1dG8mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKCZyZW5kZXJlciwgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZ3JhZGllbnREYXRhKQotICAgICAgICBncmFk
aWVudERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKKyAgICAgICAgZ3Jh
ZGllbnREYXRhID0gbWFrZVVuaXF1ZTxHcmFkaWVudERhdGE+KCk7CiAKICAgICBib29sIGlzUGFp
bnRpbmdUZXh0ID0gcmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6
QXBwbHlUb1RleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IGFhNTc2NWVkMzc5YjZhYjFiOTQ0
NzI2ZjViNWVlNDU0MzgzYzQ2NGUuLjRjODE5YjliYzU1ZGMyYmZhODJmYmJjMDk3ZjYzNzU4NWI1
YjEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IFJlbmRlCiAKICAgICBib29sIG1pc3NpbmdNYXNrZXJEYXRhID0gIW1fbWFza2VyLmNvbnRh
aW5zKCZyZW5kZXJlcik7CiAgICAgaWYgKG1pc3NpbmdNYXNrZXJEYXRhKQotICAgICAgICBtX21h
c2tlci5zZXQoJnJlbmRlcmVyLCBzdGQ6Om1ha2VfdW5pcXVlPE1hc2tlckRhdGE+KCkpOworICAg
ICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPE1hc2tlckRhdGE+KCkpOwog
CiAgICAgTWFza2VyRGF0YSogbWFza2VyRGF0YSA9IG1fbWFza2VyLmdldCgmcmVuZGVyZXIpOwog
ICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJl
bmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCAyOWU4ZTdjMjQ3NTY1ODc5MmVlNGVkNGVkMDgyMGZh
ZWVjOWJkYzBjLi5kZjAxN2JhMWJmYzBjY2Y3YWVhOTNhM2JiMmY3ZmM3ODhmNjk2Yzc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIAogc3RydWN0IE1hc2tlckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJ
bWFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBjYzJjYmZjZjBmZTlhNTllY2UxNWY1
MmYzNTcyZGI1OWQxNjMyMGQ2Li4zMWJjNWYxOTMxYmRhZTUwYWFjNjYxMzU5ZmMwYTI2ZjE3ODU4
NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgUGF0dGVybkRhdGEq
IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBPcHQKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBCdWlsZCBwYXR0
ZXJuLgotICAgIGF1dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EYXRh
PigpOworICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwog
ICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJl
bGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwogCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNw
YWNlIHRyYW5zZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYXBlLmNwcAppbmRleCAzNGIwYWU3NWJkYzAwNTY1NzZkNTEzODAxODVlZmU2YmM3
MmM3MDZlLi42YTY3MTE4ZmYxYjI1OGIzMDNjOTU2Mzg1OTNmNDc0ZWU4OWJiZTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtNzks
NyArNzksNyBAQCBSZW5kZXJTVkdTaGFwZTo6flJlbmRlclNWR1NoYXBlKCkgPSBkZWZhdWx0Owog
CiB2b2lkIFJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKIHsKLSAgICBt
X3BhdGggPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KCZn
cmFwaGljc0VsZW1lbnQoKSkpOworICAgIG1fcGF0aCA9IG1ha2VVbmlxdWU8UGF0aD4ocGF0aEZy
b21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CiAgICAgcHJvY2Vzc01hcmtl
clBvc2l0aW9ucygpOwogCiAgICAgbV9maWxsQm91bmRpbmdCb3ggPSBjYWxjdWxhdGVPYmplY3RC
b3VuZGluZ0JveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJj
ZXMuY3BwCmluZGV4IGJmNzg2NDQzZGRkNjBkNjIxYmNkNTc5Yjg3NzBlZGNkOTFkMjlmYTkuLjlj
NzM3Y2FmZjhiOTI3NmNjNDEwNjAyZjU3OWE5ZjM2NGU1YTA4YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBi
b29sIFNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcihSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNs
aXBwZXIpCiAgICAgQVNTRVJUKGNsaXBwZXItPnJlc291cmNlVHlwZSgpID09IENsaXBwZXJSZXNv
dXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAg
ICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmls
dGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1h
a2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhLT5jbGlwcGVyID0gY2xpcHBlcjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUy
OSw3ICs1MjksNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0RmlsdGVyKFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXIpCiAgICAgQVNTRVJUKGZpbHRlci0+cmVzb3VyY2VUeXBlKCkgPT0g
RmlsdGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0
YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tl
ckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVyID0gZmlsdGVyOwogICAgIHJldHVybiB0cnVl
OwpAQCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydChS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQpCiAgICAgQVNTRVJUKG1hcmtlclN0
YXJ0LT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFt
X21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFy
a2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRh
PigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1hcmtlclN0YXJ0OwogICAg
IHJldHVybiB0cnVlOwpAQCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRN
YXJrZXJNaWQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlck1pZCkKICAgICBBU1NFUlQo
bWFya2VyTWlkLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAg
aWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJr
ZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSBtYXJrZXJNaWQ7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC01OTIsNyArNTkyLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNl
dE1hcmtlckVuZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyRW5kKQogICAgIEFTU0VS
VChtYXJrZXJFbmQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAg
ICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1h
cmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlckVuZCA9IG1hcmtlckVuZDsK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFNWR1Jlc291cmNlczo6
c2V0TWFza2VyKFJlbmRlclNWR1Jlc291cmNlTWFza2VyKiBtYXNrZXIpCiAgICAgQVNTRVJUKG1h
c2tlci0+cmVzb3VyY2VUeXBlKCkgPT0gTWFza2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICgh
bV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAg
ICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJN
YXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyID0g
bWFza2VyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgU1ZHUmVz
b3VyY2VzOjpzZXRGaWxsKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKQogICAgICAg
ICAgICB8fCBmaWxsLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlw
ZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxT
dHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0
cm9rZURhdGEtPmZpbGwgPSBmaWxsOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjU5LDcgKzY1OSw3
IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIqIHN0cm9rZSkKICAgICAgICAgICAgfHwgc3Ryb2tlLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRp
YWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0g
ICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRh
PigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0
YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSA9IHN0cm9rZTsKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJj
ZXNDYWNoZS5jcHAKaW5kZXggMTkxOTVhYTFkYWJjNjZlNGIzNTY1OTcyZWM5MWY4OTQ3N2Y0MDM5
Yi4uMWVlYjc4ZjU3YjNlYmIzMWI0Y2RlOGU1MzAyZGRlMDllMDQ4YzBiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJlbmRl
cmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdAogICAgIEFTU0VSVCghbV9jYWNoZS5j
b250YWlucygmcmVuZGVyZXIpKTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBhbGwgcmVzb3Vy
Y2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFzc2VkIFJlbmRlck9iamVjdAotICAgIGF1dG8gbmV3
UmVzb3VyY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7CisgICAgYXV0byBu
ZXdSZXNvdXJjZXMgPSBtYWtlVW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKICAgICBpZiAoIW5ld1Jl
c291cmNlcy0+YnVpbGRDYWNoZWRSZXNvdXJjZXMocmVuZGVyZXIsIHN0eWxlKSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggMzI0MTAyNTg0YzFmMTEzZDBlZWQzMzIxNGE2N2Y1
NTM0YWIwZjU5YS4uODEwYTBiODgwYThhYTRkYWUwMmZhYjQ0NmE5NDFlZGQ5YzVhNzFkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NC
dWlsZGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVy
Ojppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAg
ICAgaWYgKG1faXNDb21wbGV4VGV4dCkKICAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0g
bnVsbHB0cjsKICAgICBlbHNlCi0gICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2lkdGhJdGVyYXRvcj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsKKyAgICAgICAg
bV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVk
Rm9udCwgbV9ydW4pOwogfQogCiBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3Bw
CmluZGV4IGQzN2JlZThjYmNlNTU2MTUxMWIyNGUzNjRlMWFmNjRhYWQ3YWE3NWQuLmU2YjI3MzIw
ZDkyZmU4NTZkODM3NDEwOGVkOTU0MmUwOTFlZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMTIy
LDIyICsxMjIsMjIgQEAgc3RhdGljIHZvaWQgZ2V0SW5saW5lUnVuKFJlbmRlck9iamVjdCogc3Rh
cnQsIFJlbmRlck9iamVjdCogYm91bmRhcnksIFJlbmRlck9iamUKIAogUmVuZGVyVHJlZUJ1aWxk
ZXI6OlJlbmRlclRyZWVCdWlsZGVyKFJlbmRlclZpZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmll
dykKLSAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rmlyc3RMZXR0
ZXI+KCp0aGlzKSkKLSAgICAsIG1fbGlzdEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxMaXN0Pigq
dGhpcykpCi0gICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE11bHRp
Q29sdW1uPigqdGhpcykpCi0gICAgLCBtX3RhYmxlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPFRh
YmxlPigqdGhpcykpCi0gICAgLCBtX3J1YnlCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVieT4o
KnRoaXMpKQotICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9y
bUNvbnRyb2xzPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVl
PEJsb2NrPigqdGhpcykpCi0gICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1
ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKLSAgICAsIG1faW5saW5lQnVpbGRlcihzdGQ6Om1ha2VfdW5p
cXVlPElubGluZT4oKnRoaXMpKQotICAgICwgbV9zdmdCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8
U1ZHPigqdGhpcykpCisgICAgLCBtX2ZpcnN0TGV0dGVyQnVpbGRlcihtYWtlVW5pcXVlPEZpcnN0
TGV0dGVyPigqdGhpcykpCisgICAgLCBtX2xpc3RCdWlsZGVyKG1ha2VVbmlxdWU8TGlzdD4oKnRo
aXMpKQorICAgICwgbV9tdWx0aUNvbHVtbkJ1aWxkZXIobWFrZVVuaXF1ZTxNdWx0aUNvbHVtbj4o
KnRoaXMpKQorICAgICwgbV90YWJsZUJ1aWxkZXIobWFrZVVuaXF1ZTxUYWJsZT4oKnRoaXMpKQor
ICAgICwgbV9ydWJ5QnVpbGRlcihtYWtlVW5pcXVlPFJ1Ynk+KCp0aGlzKSkKKyAgICAsIG1fZm9y
bUNvbnRyb2xzQnVpbGRlcihtYWtlVW5pcXVlPEZvcm1Db250cm9scz4oKnRoaXMpKQorICAgICwg
bV9ibG9ja0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9jaz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0Zs
b3dCdWlsZGVyKG1ha2VVbmlxdWU8QmxvY2tGbG93PigqdGhpcykpCisgICAgLCBtX2lubGluZUJ1
aWxkZXIobWFrZVVuaXF1ZTxJbmxpbmU+KCp0aGlzKSkKKyAgICAsIG1fc3ZnQnVpbGRlcihtYWtl
VW5pcXVlPFNWRz4oKnRoaXMpKQogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgLCBtX21hdGhNTEJ1
aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxNYXRoTUw+KCp0aGlzKSkKKyAgICAsIG1fbWF0aE1MQnVp
bGRlcihtYWtlVW5pcXVlPE1hdGhNTD4oKnRoaXMpKQogI2VuZGlmCi0gICAgLCBtX2NvbnRpbnVh
dGlvbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRpb24+KCp0aGlzKSkKKyAgICAs
IG1fY29udGludWF0aW9uQnVpbGRlcihtYWtlVW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCisgICAgLCBtX2Z1bGxTY3JlZW5CdWls
ZGVyKG1ha2VVbmlxdWU8RnVsbFNjcmVlbj4oKnRoaXMpKQogI2VuZGlmCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIXNfY3VycmVudCB8fCAmbV92aWV3ICE9ICZzX2N1cnJlbnQtPm1fdmlldyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcAppbmRleCA5YTk4ZDI1YzMyYjkzNjRiNDZhNmFlY2ZjM2NmZmRjNmM0NjZmNGQy
Li5iOWQyMDdmN2RmZDMyNDZmZTAzMDg2Yzg0Y2EyMDFiY2I3YjkxOWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5j
cHAKQEAgLTcxLDcgKzcxLDcgQEAgUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyoKIAogUmVuZGVyVHJl
ZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1f
ZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2dlbmVyYXRlZENvbnRlbnQoc3RkOjptYWtlX3Vu
aXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCisgICAgLCBtX2dlbmVyYXRlZENvbnRlbnQo
bWFrZVVuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCiAgICAgLCBtX2J1aWxkZXIocmVu
ZGVyVmlldygpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJ
bnB1dEJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCmlu
ZGV4IDdmZTdmNjg3MzIwNDEwZWYwNDgzODdkNDgxZjkyN2IxMmMyMzgzYWMuLmI5YzcyZWI4ODBl
OWJiODc1OThmNDE0NDA3N2QwMjMwMTY2NjViODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNl
cklucHV0QnJpZGdlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgZW51bSBjbGFzcyBJbnB1dFNvdXJjZSB7
CiB9OwogCiBjbGFzcyBVc2VySW5wdXRCcmlkZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJJbnB1dEJyaWRnZSk7CiBwdWJsaWM6
CiAgICAgVXNlcklucHV0QnJpZGdlKFBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5jcHAKaW5kZXggZGFlMTFjYjJmNjI4OTkxODQ1M2ExMjgwOWFlNDNiODEyNGI2
YjEyYi4uNmQ2OTVhNjYwZDBlNGUwNDVhMjZkYWJlMzMzMWVjYTI2ZmFkMmViZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkRGlydHlBbGxTdHlsZShjb25zdCBWZWN0b3I8U3R5bGVTaGVldENvbnRl
bnRzKj4mIHNoZWV0cykKIH0KIAogSW52YWxpZGF0b3I6OkludmFsaWRhdG9yKGNvbnN0IFZlY3Rv
cjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9y
JiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKQotICAgIDogbV9vd25lZFJ1bGVTZXQoc3RkOjptYWtlX3Vu
aXF1ZTxSdWxlU2V0PigpKQorICAgIDogbV9vd25lZFJ1bGVTZXQobWFrZVVuaXF1ZTxSdWxlU2V0
PigpKQogICAgICwgbV9ydWxlU2V0KCptX293bmVkUnVsZVNldCkKICAgICAsIG1fZGlydGllc0Fs
bFN0eWxlKHNob3VsZERpcnR5QWxsU3R5bGUoc2hlZXRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVsYXRpb25zLmNwcAppbmRleCA0ZDgxNDhiNGUzMWQ3NGQ2YTBhNTE3NTRkZWU1ZWFi
ODA3NTlhYmFhLi4wNjJkNTk2NGQ3N2VjNWRiODNiM2Y0MWFjYmFhODdlZmNlOThkZDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZWxhdGlvbnM+IGNvbW1pdFJlbGF0aW9uc1RvUmVuZGVyU3R5bGUoUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zCiAKICAgICBhdXRvIGFwcGVuZFN0eWxlUmVsYXRpb24gPSBb
JnJlbWFpbmluZ1JlbGF0aW9uc10gKGNvbnN0IFJlbGF0aW9uJiByZWxhdGlvbikgewogICAgICAg
ICBpZiAoIXJlbWFpbmluZ1JlbGF0aW9ucykKLSAgICAgICAgICAgIHJlbWFpbmluZ1JlbGF0aW9u
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVsYXRpb25zPigpOworICAgICAgICAgICAgcmVtYWluaW5n
UmVsYXRpb25zID0gbWFrZVVuaXF1ZTxSZWxhdGlvbnM+KCk7CiAgICAgICAgIHJlbWFpbmluZ1Jl
bGF0aW9ucy0+YXBwZW5kKHJlbGF0aW9uKTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGUuY3BwCmluZGV4IDlmMGQxYWQ3NDkwYmZlYWIyNDA3Y2U3YmM4OGIwOTUxMTZkMGIyMjIu
LmRjYjY1YmMwOWMzNDc3OWI2M2EyOTMyNGUyNGQzNzJiZmM2YTIzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFN0eWxlUmVzb2x2ZXImIFNjb3Bl
OjpyZXNvbHZlcigpCiAgICAgaWYgKCFtX3Jlc29sdmVyKSB7CiAgICAgICAgIFNldEZvclNjb3Bl
PGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZl
ciwgdHJ1ZSB9OwogCi0gICAgICAgIG1fcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxl
UmVzb2x2ZXI+KG1fZG9jdW1lbnQpOworICAgICAgICBtX3Jlc29sdmVyID0gbWFrZVVuaXF1ZTxT
dHlsZVJlc29sdmVyPihtX2RvY3VtZW50KTsKIAogICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkg
ewogICAgICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsK
QEAgLTU2Myw3ICs1NjMsNyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBT
Y29wZTo6YWN0aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3IoKQogYm9vbCBTY29wZTo6YWN0aXZl
U3R5bGVTaGVldHNDb250YWlucyhjb25zdCBDU1NTdHlsZVNoZWV0KiBzaGVldCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCkg
ewotICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOworICAg
ICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBtYWtl
VW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVTaGVldCo+PigpOwogICAgICAgICBmb3IgKGF1
dG8mIGFjdGl2ZVN0eWxlU2hlZXQgOiBtX2FjdGl2ZVN0eWxlU2hlZXRzKQogICAgICAgICAgICAg
bV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwLT5hZGQoYWN0aXZl
U3R5bGVTaGVldC5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwCmluZGV4IDg0NmEyMzFhZDJiMThiNWQ3ZjI5NDkwMTZkMDlmMjIzZGQ2OWU4
OGIuLmEwMGY0ZmUwZjRjY2I1MmRkODMxYTk0ZTI2YTU4NjRlNWMxYjc5MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmUoKQogCiAgICAgbV9k
aWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9IG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLmhhc1BlbmRp
bmdTaGVldHNCZWZvcmVCb2R5KCk7CiAKLSAgICBtX3VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
VXBkYXRlPihtX2RvY3VtZW50KTsKKyAgICBtX3VwZGF0ZSA9IG1ha2VVbmlxdWU8VXBkYXRlPiht
X2RvY3VtZW50KTsKICAgICBtX3Njb3BlU3RhY2suYXBwZW5kKGFkb3B0UmVmKCpuZXcgU2NvcGUo
bV9kb2N1bWVudCkpKTsKICAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJlbnQobV9kb2N1bWVu
dCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmlu
ZGV4IGJjNTE0MzRiMGIyYjhlMGJmNzdlNTdhNGE3NmU0ZDRiY2VlZTk5NjUuLjI1ZjM4NjNkMDc5
NTRhYzhkNmE2M2U2ODY0YTFmMDc2YjBkNTFhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMoRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcmVz
b3VyY2VzQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKKyAgICAs
IG1fcmVzb3VyY2VzQ2FjaGUobWFrZVVuaXF1ZTxTVkdSZXNvdXJjZXNDYWNoZT4oKSkKICAgICAs
IG1fYXJlQW5pbWF0aW9uc1BhdXNlZCghZG9jdW1lbnQucGFnZSgpIHx8ICFkb2N1bWVudC5wYWdl
KCktPmlzVmlzaWJsZSgpKQogewogfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIEVs
ZW1lbnQmIGVsCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQs
IG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0VsZW1lbnRzPigpOworICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQZW5kaW5nRWxlbWVudHM+
KCk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZlbGVtZW50KTsKIAogICAgIGVs
ZW1lbnQuc2V0SGFzUGVuZGluZ1Jlc291cmNlcygpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEhhc2hT
ZXQ8U1ZHRWxlbWVudCo+KiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNldE9mRWxlbWVudHNSZWZl
cmVuY2luZ1RhcmdldChTVkdFCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVu
dFJlZmVyZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQmIHJlZmVyZW5jaW5nRWxlbWVudCwgU1ZHRWxl
bWVudCYgcmVmZXJlbmNlZEVsZW1lbnQpCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2VsZW1lbnRE
ZXBlbmRlbmNpZXMuZW5zdXJlKCZyZWZlcmVuY2VkRWxlbWVudCwgWyZyZWZlcmVuY2luZ0VsZW1l
bnRdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTVkdFbGVtZW50
Kj4+KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVmZXJlbmNpbmdFbGVt
ZW50IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4o
c3RkOjppbml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQg
fSk7CiAgICAgfSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZyZWZlcmVuY2luZ0VsZW1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCmluZGV4IGE4MDk2ZGRhZGE4MWVhZDZhN2ExZWEzMjRjZDg1MDY3ZjVjMGIy
OGIuLmU0ZGUzYjc0OWYwYTAwMzliYzVjNGNmY2QwOGUxOTM5NmNkNjU2MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5F
IEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiBjcmVhdGVBdHRyaWJ1dGVO
YW1lVAogU1ZHRWxlbWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBDcmVhdGVTVkdFbGVtZW50KQogICAgICwgU1ZHTGFuZ1NwYWNlKHRoaXMpCi0gICAgLCBt
X3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJvcGVydHlBbmlt
YXRvckZhY3Rvcnk+KCkpCisgICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KG1ha2VVbmlx
dWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CkBAIC0y
MDMsNyArMjAzLDcgQEAgdm9pZCBTVkdFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNo
YW5nZSBjaGFuZ2UpCiBTVkdFbGVtZW50UmFyZURhdGEmIFNWR0VsZW1lbnQ6OmVuc3VyZVNWR1Jh
cmVEYXRhKCkKIHsKICAgICBpZiAoIW1fc3ZnUmFyZURhdGEpCi0gICAgICAgIG1fc3ZnUmFyZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9z
dmdSYXJlRGF0YSA9IG1ha2VVbmlxdWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOwogICAgIHJldHVy
biAqbV9zdmdSYXJlRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmNwcAppbmRleCBhNzU4OTBmMzE4MDQ2OGQxNTI0YmVlODU0MzU5ZDAzNTZlYjUyMjJkLi44
MGVjN2ZjODYyOTJiNjNiYmJhODUxZTExZTEwNmZhMTUyZjkxNDcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEFmZmluZVRy
YW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25z
dAogQWZmaW5lVHJhbnNmb3JtKiBTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5z
Zm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKLSAgICAgICAgbV9z
dXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPEFmZmluZVRyYW5zZm9ybT4o
KTsKKyAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPEFmZmluZVRy
YW5zZm9ybT4oKTsKICAgICByZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKaW5kZXggNmYwYWNhY2YxOWVl
ODUwZGI0ZTY5MTBkM2U4M2QyNjQ5NGQ2N2ViMC4uNDM0ZDkxZWIzZGY4YWQ4NzlmODM5YTQ4OTY2
ODY3ODBiNDA5ZjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRl
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKQEAg
LTg2LDcgKzg2LDcgQEAgY2xhc3MgU1ZHUGF0aEJ5dGVTdHJlYW0gewogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigqdGhpcyk7CiAgICAgfQogCiAg
ICAgRGF0YUl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWlu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHAKaW5kZXggZTA0MjNjZTk4MTVmYTBmMjU1NjNhM2I1NDMxNDA4NmFjMzU2ZmY0NC4uM2ViNTdh
ZDJmMjFkZmE2NGI5YjExODAxZjQyNzI4MzYwMmI3NWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6c2NoZWR1bGUoU1ZHU01JTEVsZW1lbnQqIGFuaW1h
dGlvbiwgU1ZHRWxlbWVudCogdGFyZ2V0LAogICAgIEVsZW1lbnRBdHRyaWJ1dGVQYWlyIGtleSh0
YXJnZXQsIGF0dHJpYnV0ZU5hbWUpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25zVmVj
dG9yPiYgc2NoZWR1bGVkID0gbV9zY2hlZHVsZWRBbmltYXRpb25zLmFkZChrZXksIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNjaGVkdWxlZCkKLSAgICAgICAgc2NoZWR1bGVk
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigpOworICAgICAgICBzY2hlZHVs
ZWQgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbnNWZWN0b3I+KCk7CiAgICAgQVNTRVJUKCFzY2hlZHVs
ZWQtPmNvbnRhaW5zKGFuaW1hdGlvbikpOwogICAgIHNjaGVkdWxlZC0+YXBwZW5kKGFuaW1hdGlv
bik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDgwOWFm
ZjVkODg1MzcxMjA3MmFkODcxNTY3MzVlOTMwZjliYTM1Y2QuLjVjNTZiNjk5OTViYzkyZjRjYTg4
MWUyYjkxZTlmMzdmZjVjMzhmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpk
YXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2
ZWQpIHsKICAgICAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9u
V2l0aEVtcHR5Q2xpZW50cygpOwotICAgICAgICBtX2Nocm9tZUNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOworICAgICAgICBtX2Nocm9tZUNsaWVu
dCA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOwogICAgICAgICBwYWdl
Q29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKIAogICAg
ICAgICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UgbWln
aHQgbGVhayB0aGUgd29ybGQuCkBAIC00NjYsNyArNDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMg
U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBU
aGlzIHdpbGwgYmVjb21lIGFuIGlzc3VlIHdoZW4gU1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxv
YWQgb3RoZXIKICAgICAgICAgLy8gU1ZHSW1hZ2Ugb2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93
LCBiZWNhdXNlIFNWR0ltYWdlIGNhbiBvbmx5IGJlCiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRv
cC1sZXZlbCBkb2N1bWVudC4KLSAgICAgICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
PihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgICAgIG1fcGFnZSA9IG1ha2VVbmlx
dWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgICAgICBtX3BhZ2UtPnNl
dHRpbmdzKCkuc2V0TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5n
cygpLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCku
c2V0UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IGQ5NzAzMDJhZGY4NjU4
NTUwOWM2NTA4ZDUwNDk1MmEyNTUzMjM2MmIuLmM3N2FlMDhiYWM2NWMzYzJjZmM4OTc0ZmEzM2U3
NjQ2MGNlOTdmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgUmVuZGVy
T2JqZWN0OwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVyQnVpbGRl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBI
YXNoU2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9w
ZXJ0eS5oCmluZGV4IGU1ZWZhYWVhNzExMWJjNmM5NTdkOTcyZDc0NTQ4ZGU5MmQ4YTEzM2UuLmNl
YmFhMzYzYmY1MjdiYmIzOGU1NjdkM2UzZDQyYmY4NDMxMDJhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9w
ZXJ0eSA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERl
Y29yYXRlZFByb3BlcnR5PgogICAgIHN0YXRpYyBSZWY8QW5pbWF0ZWRQcm9wZXJ0eT4gY3JlYXRl
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgc3RkOjptYWtlX3VuaXF1
ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZSwgUHJvcGVydHlUeXBlPj4oKSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVt
ZW50LCBtYWtlVW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0
eVR5cGU+PigpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBl
LCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0
eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAyODg3NDFiMTI5MDVjYjg1MTQz
MDU0MDkwYzRlMmM5MTM5YjM1YmYzLi5kMDczN2FjYmEzMzFmZTEyMzQ3YjgzNGZmN2FhMzAxMDBh
ZDE1NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC01MCw3ICs1MCw3IEBA
IGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xl
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xl
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjgs
NyArNjgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQQogCiAgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJv
b2xlYW4+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtODksNyArODksNyBAQCBjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3Ig
ZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAg
IHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1h
dGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxF
bnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTEx
LDcgKzExMSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
SW50ZWdlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmlt
YXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIAogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUs
IFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwg
bGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3Ro
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiAKICAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTE3Miw3ICsxNzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51
bWJlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxT
VkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE4OSw3ICsxODksNyBAQCBjbGFz
cyBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVk
TnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKIHBy
aXZhdGU6CkBAIC0yMDYsNyArMjA2LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjwKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMjQsNyArMjI0LDcgQEAg
Y2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmlt
YXRlZFByb3BlcnR5QW5pbWF0b3I8U1YKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUG9pbnRM
aXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiBw
cml2YXRlOgpAQCAtMjQzLDcgKzI0Myw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjYyLDcgKzI2Miw3IEBAIGNs
YXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlBCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjgxLDcgKzI4MSw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjxTVkdBbmltCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUmVjdD4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFJlY3RBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yOTgsNyArMjk4LDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiYg
YW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zMzgs
NyArMzM4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG8KIHB1YmxpYzoKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRv
ckltcGwuaAppbmRleCA0ZWRhMzRjOWIxODg4ZmZkNmQzZDY2MzJjZjBjZjZkMzNhNmZhOWUxLi4z
OTdmZjA5MTU5NDAwZDMzYzA1MmIxMWQ4MjhjYjhlMzdiM2M4MDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9y
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0
ZWRBbmdsZU9yaWVudEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQ
YWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZDEsIFJl
ZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVk
MiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
MTEzLDcgKzExMyw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hCiBwdWJsaWM6CiAgICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBh
bmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
VkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwg
YW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIFNWR0Fu
aW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlQYWlyQW5pbWF0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVk
MSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1h
dGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVk
MiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlclBhaXJBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3Iu
aAppbmRleCA2NGE2NWIxODYyZmZiOTY5NjAzYzcxNTYwN2I1NDRmNTU2ZTAwODNhLi4wMjJlZGVk
YTgyMWI1MzM1NWIzZmRkMzk1OGYyNDM2ODAxOWFhZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKQEAgLTUyLDYgKzUy
LDcgQEAgZW51bSBjbGFzcyBDYWxjTW9kZSA6IHVpbnQ4X3QgewogfTsKIAogY2xhc3MgU1ZHQXR0
cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpCiAgICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24u
aAppbmRleCAyNjRjMzZiNjkwNzRjY2YzZTJlMjlkMjY3NzIxY2Y1Mzc0NTcwMzExLi5hMzVlMjUw
YTliMTUxZjllODk3Zjg1ZjYzNjdjMzg3ZGJiM2NhNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKQEAgLTM5
LDcgKzM5LDcgQEAgY2xhc3MgU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24gOiBwdWJsaWMgU1ZHRGVj
b3JhdGVkUHJpbWl0aXZlPERlY29yYXRpb25UeXBlLCBFbnUKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgRW51bVR5cGUmIHZhbHVlKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2ludGVncmFsPERlY29yYXRpb25UeXBlPjo6dmFsdWUsICJEZWNvcmF0aW9uVHlwZSBm
b3JtIGVudW0gc2hvdWxkIGJlIGludGVncmFsLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbj4odmFsdWUpOwogICAgIH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29y
YXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0
ZWRQcm9wZXJ0eS5oCmluZGV4IGU0YWIwMzcwYjk0NzllNTU1MGJiYjExMDg3MzQyMzUzMTE2NjUw
NzAuLmFiMTRmM2NiZTVhN2ZjMjBlMTMwZmRhOWJkNDg3OTdkZGRkM2U4NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaApA
QCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IERlY29yYXRpb25UeXBlPgogY2xhc3MgU1ZHRGVjb3JhdGVkUHJvcGVydHkgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNWR0RlY29yYXRlZFByb3BlcnR5KCkg
PSBkZWZhdWx0OwogICAgIHZpcnR1YWwgflNWR0RlY29yYXRlZFByb3BlcnR5KCkgPSBkZWZhdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZl
UHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvci5oCmluZGV4IDQxMjE3MjIwYmRmY2ZlZmY2N2MxNjA5MTNh
ZDE0ZDZiOTliYTE0MmMuLjY4YjJlMGIxMTM3YWRlOGQzN2Y4MGUwZTI5OGI1ZGUyNGQwMWE4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVBy
b3BlcnR5QW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvciA6IHB1YmxpYyBTVkdQcm9wZXJ0eUFuaW1hdG9yPEFuaW1h
dGlvbkZ1bmN0aW8KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1v
dmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCmluZGV4
IGFkNTBkNDIzNjI5Njk0MmQxZGM4NzE4YTJkYThlNmFkZjhkMWJjY2IuLjVlMzAxOGY1YTQwMmE5
YzdmMTI5ZDQxZDQxOWFjNWU5NDlmZWUwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaApAQCAtMzQs
NiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdQcm9wZXJ0eUFuaW1h
dG9yRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
U1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRv
ckltcGwuaAppbmRleCAxMTg4ODZjNGY4YmI3MjM2YTQ0NmZmYWQwMzg2OWZmMGIwZGNkZTk1Li5m
ZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEyODc5YTdlZGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1h
dG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3Rh
cnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFu
aW1hdG9ySW1wbC5oCmluZGV4IDVlZThhYzNkMGY0ZTEyYzYyYTVlZmMwMGZmNTNiNTkwZTQwMGYz
NjguLmFlOTRlMjllZDRiODYxM2I5OWNkOTc0ODZlZDBiMDYyODI2YzAyZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0
b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9w
ZXJ0eUxpc3RBbmltYXRvckltcGwuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhM
aXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcjxT
VkdMZW5ndAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlv
bk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRl
ZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5
KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExl
bmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aExpc3RB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwog
ICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJp
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGMx
MTMxZDI1YjM4OGJiYTgzNjY1M2QyOTcwOGU2YTViYmU0YmRmYzQuLjI0Mzc4OWJiOWQyNzlhNmU4
NTNlMDg2NDRiNjRiZWU4NTFlNWVlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcApAQCAtMjMxLDYgKzIzMSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5n
czo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogfQogCiBjbGFzcyBJbnRl
cm5hbFNldHRpbmdzV3JhcHBlciA6IHB1YmxpYyBTdXBwbGVtZW50PFBhZ2U+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRp
bmdzV3JhcHBlcihQYWdlKiBwYWdlKQogICAgICAgICA6IG1faW50ZXJuYWxTZXR0aW5ncyhJbnRl
cm5hbFNldHRpbmdzOjpjcmVhdGUocGFnZSkpIHsgfQpAQCAtMjUyLDcgKzI1Myw3IEBAIGNvbnN0
IGNoYXIqIEludGVybmFsU2V0dGluZ3M6OnN1cHBsZW1lbnROYW1lKCkKIEludGVybmFsU2V0dGlu
Z3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFnZSogcGFnZSkKIHsKICAgICBpZiAoIVN1cHBs
ZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpCi0gICAgICAgIFN1cHBs
ZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2Vf
dW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CisgICAgICAgIFN1cHBsZW1l
bnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPElu
dGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PElu
dGVybmFsU2V0dGluZ3NXcmFwcGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBw
bGVtZW50TmFtZSgpKSktPmludGVybmFsU2V0dGluZ3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGUxNzhiNDk2ODU4NzU1MWJmMDcwNGQ4MzAyMDU2MmRkMTJk
ZjRlYmIuLjYyZTczNDlhMWNhMTY2MmQwNjJjNjA3OTM4OTJmYzcwZmY2MDU4MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCBjbGFzcyBJbnNw
ZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbCwgcHVibGljCiB9OwogCiBJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJG
cm9udGVuZChQYWdlJiBpbnNwZWN0ZWRQYWdlLCBSZWZQdHI8RE9NV2luZG93PiYmIGZyb250ZW5k
V2luZG93KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkUGFn
ZS5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdl
KCksIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGlu
Z3M+KCkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdl
Lmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2Uo
KSwgbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkK
ICAgICAsIG1fZnJvbnRlbmRXaW5kb3coZnJvbnRlbmRXaW5kb3cuY29weVJlZigpKQogewogICAg
IEFTU0VSVF9BUkcoZnJvbnRlbmRXaW5kb3csIGZyb250ZW5kV2luZG93KTsKQEAgLTU2Nyw3ICs1
NjcsNyBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgYXV0
byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFn
ZSgpICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGF1dG8gbW9ja1BheW1lbnRD
b29yZGluYXRvciA9IG5ldyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKCpmcmFtZS0+cGFnZSgpKTsK
LSAgICAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91
bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqbW9ja1BheW1lbnRDb29yZGluYXRvcikpOworICAg
ICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXlt
ZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CiAgICAgfQogI2VuZGlm
CiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVj
aFN5bnRoZXNpemVyKCkKICAgICBpZiAoIXN5bnRoZXNpcykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOworICAgIHN5bnRoZXNpcy0+
c2V0UGxhdGZvcm1TeW50aGVzaXplcihtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrPihzeW50aGVzaXMpKTsKIH0KIAogI2VuZGlmCkBAIC0yNDg5LDcgKzI0ODksNyBAQCBS
ZWZQdHI8V2luZG93UHJveHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiB1cmwpCiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9IGNvbnRleHREb2N1
bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0gaW5zcGVjdGVkUGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgYXV0byBmcm9udGVu
ZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3csIHVybCwgIiIsICIi
KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2Fz
dDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CisgICAgbV9pbnNw
ZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVj
dGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3co
KSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQogCkBAIC0zMDA5LDcgKzMw
MDksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldFZpZXdFeHBvc2VkUmVjdChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZgogCiB2b2lkIEludGVybmFsczo6c2V0UHJp
bnRpbmcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIHByaW50Q29udGV4dEZvclRlc3Rp
bmcoKSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKKyAgICBwcmlu
dENvbnRleHRGb3JUZXN0aW5nKCkgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oZnJhbWUoKSk7
CiAgICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpLT5iZWdpbih3aWR0aCwgaGVpZ2h0KTsKIH0K
IApAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZUF1dG9TaXplTW9k
ZShib29sIGVuYWJsZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogdm9pZCBJbnRlcm5hbHM6
OmluaXRpYWxpemVNb2NrQ0RNKCkKIHsKLSAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9y
eShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5TW9j
a0NETT4oY2RtKTsgfSwKKyAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVn
YWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwK
ICAgICAgICAgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeU1vY2tDRE06
OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpOwogfQogCkBAIC00MjQxLDcgKzQyNDEsNyBA
QCB2b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCiAgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6
bWFpblRocmVhZFF1ZXVlKCksICpkb2N1bWVudCwgW2RvY3VtZW50LCB0ZXN0TnVtYmVyXSgpIHsK
KyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1l
bnQsIHRlc3ROdW1iZXJdKCkgewogICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1pY3Jv
VGFzayAjIiwgdGVzdE51bWJlciwgIiBoYXMgcnVuLiIpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKaW5kZXggNjQyODdkMjM5YWY1NzNlOTIwM2Qy
NTg0MzFiMjczYzdiODc0OTAwNi4uNjAyNzJkMzQ5N2Y0Yjg2NWNkYjAzNzBmZTQxZDNkNmZiZGU4
YjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC0zOCw2
ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vY2tDRE1TZXNzaW9uIDog
cHVibGljIExlZ2FjeUNETVNlc3Npb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIE1vY2tDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAg
ICB2aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lvbigpID0gZGVmYXVsdDsKQEAgLTczLDcgKzc0LDcgQEAg
Ym9vbCBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpj
cmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogc3RhdGljIFVpbnQ4QXJy
YXkqIGluaXREYXRhUHJlZml4KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TGVnYWN5TW9ja0NETS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgK
aW5kZXggMjRiOWI4MDA4YzRmNTE5YjRhNjY2ZWM2ZDE1MjVhYzYyZWMxYzMwYS4uYjkzYWViOTNm
ZjYzMjllNTE1NDdjMTNmZjc2YTY5MmVlNmE3MTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9M
ZWdhY3lNb2NrQ0RNLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTGVnYWN5Q0RNOwogCiBjbGFzcyBMZWdhY3lNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGVJ
bnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IExlZ2FjeU1vY2tDRE0oTGVnYWN5Q0RNKiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2Rt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA1Njc5NmVl
OTAwYmJmM2I2Y2MwNWNmNmEyMjk2ZWZkNDNiOWVmN2I2Li5jZTVkOGY3ZDZiZGYzOGI1OTIyMDkz
MDJhNmU2ZDcxYjM2OTY2MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBv
cnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYmIHR5cGVzKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKIH0K
IAogTW9ja0NETTo6TW9ja0NETShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBmYWN0b3J5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IDMzOTZjZDAyYWQwMmRkMTRl
OTJmMTU3OWUyNzUxNmU2YmMzZjQyOTguLjM5OTA5YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdl
NTI1MDU5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTEw
MCw2ICsxMDAsNyBAQCBjbGFzcyBNb2NrQ0RNRmFjdG9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1v
Y2tDRE1GYWN0b3J5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPAogfTsKIAogY2xhc3MgTW9ja0NE
TSA6IHB1YmxpYyBDRE1Qcml2YXRlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9ja0NETT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1vY2tDRE0oV2Vha1B0
cjxNb2NrQ0RNRmFjdG9yeT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwCmluZGV4IDUxMTgxZGFlNzJlMTNlMmJiZDE1M2U4MTFjMTQzNjRkMWNkOGEx
ODcuLjc3OGE5MThhNmI5MDc1NWNiODZkM2FhYTc0Zjc5YjNlNjE4ZDRjOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TW9j
a0NvbnRlbnRGaWx0ZXI+IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVy
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0dhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZDNhYzVkODdkMTllMmE4NTM2MWMxMTU3MmNm
MzExZjBjODNiMjQ1Yi4uZDQwZGVkMWRhMTE5OGNhYTM0NTlkNjc3ZTFmZTg0ZjViZmI5NDZlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIHZvaWQgTW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWRE
ZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGdhCiAgICAgaWYgKG1fbW9ja0dh
bWVwYWRWZWN0b3JbaW5kZXhdKQogICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XS0+
dXBkYXRlRGV0YWlscyhnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwogICAgIGVs
c2UKLSAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBzdGQ6Om1ha2VfdW5pcXVl
PE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsK
KyAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBtYWtlVW5pcXVlPE1vY2tHYW1l
cGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKIH0KIAogYm9v
bCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQgaW5kZXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcAppbmRl
eCBkYmU5MDczZDZhZGViZmM1MDE1OWNjMmVkYmIyMjgzY2NkMTdiYTg1Li44ZjE2NDdjMWYzMjI1
MTgxNmM3Y2YwODk2MTgyYWUzNDIzNWM1MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBXb3JrZXJD
b25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwKIHsKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5n
ZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwotICAgIGF1dG8gbWVzc2FnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50
cyksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwogICAgIG1fd29ya2VyR2xvYmFsU2Nv
cGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCmluZGV4IGY0M2JkMmE3YTYwNTkzNzI3
YWQwYTZhOTFkZWNkNmViZWM3MjI2ODguLjY5MDNiZTVlYzI1ZmI5MWVmZjc3NzZlNDQ3NmFkNGVh
MmJjZTczMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNw
cApAQCAtNDQsNiArNDQsNyBAQCBXb3JrZXJFdmVudFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgp
CiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWU6OkV2ZW50RGlzcGF0Y2hlcgogeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEV2ZW50RGlzcGF0Y2hlcihSZWZQdHI8
RXZlbnQ+JiYgZXZlbnQsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUpCiAgICAgICAgIDog
bV9ldmVudChXVEZNb3ZlKGV2ZW50KSkKQEAgLTg0LDcgKzg1LDcgQEAgYm9vbCBXb3JrZXJFdmVu
dFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBhdXRvKiBldmVudFB0ciA9IGV2ZW50LnB0cigpOwotICAgIGF1dG8gZXZl
bnREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUo
ZXZlbnQpLCAqdGhpcyk7CisgICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPEV2
ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsKICAgICBtX2V2ZW50RGlzcGF0
Y2hlck1hcC5hZGQoZXZlbnRQdHIsIGV2ZW50RGlzcGF0Y2hlci5nZXQoKSk7CiAgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LnBvc3RUYXNrKFtldmVudERpc3BhdGNoZXIgPSBXVEZNb3ZlKGV2
ZW50RGlzcGF0Y2hlcildIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBldmVu
dERpc3BhdGNoZXItPmRpc3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZl
bnRRdWV1ZS5oCmluZGV4IDYxMTVlZjRhMTM2NTJhNmVhZDEwYWYzN2NmYjQ5NDI4MjBjM2NiMmIu
LmQ4OTczZDViY2FlMTdiOTU1MDA0NGM3ZTgwMTYwNWI5OWQ1NDlhZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFdvcmtl
ckV2ZW50UXVldWUgZmluYWwgOiBwdWJsaWMgRXZlbnRRdWV1ZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV29ya2VyRXZlbnRRdWV1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+V29ya2VyRXZlbnRRdWV1ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3YmE2
ZWRiNTIwOGYyMmMzZjhmMTZkZTI5ZDgyNWI3NzFmNmMzZTllLi5iMTdkNjYzNjNhYzM1ODBlN2Ez
NDQwMDgxYTJmN2M2M2EwNzM4NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcApAQCAtNjIsOSArNjIsOSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29y
a2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmln
aQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2Vy
QWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JD
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRo
aXMpKQotICAgICwgbV9taWNyb3Rhc2tRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPE1pY3JvdGFza1F1
ZXVlPihtX3NjcmlwdC0+dm0oKSkpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlclNj
cmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VV
bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9taWNyb3Rh
c2tRdWV1ZShtYWtlVW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCiAgICAg
LCBtX2lzT25saW5lKGlzT25saW5lKQogICAgICwgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3koc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5KQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQpAQCAtODYsNyArODYsNyBAQCBXb3JrZXJH
bG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0
eU9yaWdpbj4mJiBvcmlnaQogICAgICAgICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21G
aWxlVVJMc1F1aXJrKCk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9y
aWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUob3JpZ2luKSkpOwotICAgIHNldENvbnRlbnRTZWN1
cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsg
bV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiB9CiAKIFdv
cmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQpAQCAtMzYyLDkgKzM2Miw5IEBA
IHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBt
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3Vy
Y2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVh
c2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9n
LCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0
SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0
YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWws
IG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUs
IHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1l
c3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGE3NWMwMTU2
YzU5ZTM4ZGQ5OTlkNmNlYzFkZGVlZGUyM2JlMTg3YjMuLjRlOWY1MTlhZWZlZGQyNWY4ODNmNjNh
Y2EwYTQ3ODlmZjAyN2U0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkmIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OmNyZWF0ZShXb3JrZXImIHdvcmtlcikKIAogV29y
a2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciYgd29ya2VyT2Jq
ZWN0KQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2luc3BlY3RvclByb3h5KHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQorICAg
ICwgbV9pbnNwZWN0b3JQcm94eShtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3Jr
ZXJPYmplY3QuaWRlbnRpZmllcigpKSkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmpl
Y3QpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkgJiYgaXNNYWluVGhyZWFkKCkpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnQKICAgICAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwogICAgICAgICBt
X3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogICAgIH0g
ZWxzZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBt
X3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKaW5kZXggYmNkOTRlNmFjMDQw
M2FjZDZhNTRiYWM0MWZhYjQxZTViZjU1MjdkYS4uYmZhYzk1OTJkZmFhNzkyMTAwNjViMzQ1OWJk
MjIxNjE5NTc4NDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIE1vZGVQcmVkaWNhdGUgewogfTsKIAogV29ya2VyUnVu
TG9vcDo6V29ya2VyUnVuTG9vcCgpCi0gICAgOiBtX3NoYXJlZFRpbWVyKHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCisgICAgOiBtX3NoYXJlZFRpbWVyKG1ha2VVbmlxdWU8
V29ya2VyU2hhcmVkVGltZXI+KCkpCiB7CiB9CiAKQEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQg
V29ya2VyUnVuTG9vcDo6cG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRh
c2spCiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5k
QW5kS2lsbChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2Rl
KCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4o
V1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6
OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29u
c3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5h
cHBlbmQobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9CiAKIHZvaWQg
V29ya2VyUnVuTG9vcDo6cG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcAppbmRleCAxOTkxMmYwMjc1ZmVhMTk0ODA1NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1Li4yMjhm
M2QxN2ZmMDAyMmU2MmU2MzY0NTMyZDU1NmI5NTA3YTAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9p
ZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXQKIAogICAgIEFTU0VSVChzY3JpcHRSZXF1ZXN0Lmh0dHBNZXRo
b2QoKSA9PSAiR0VUIik7CiAKLSAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
c291cmNlUmVxdWVzdD4oV1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CisgICAgYXV0byByZXF1ZXN0
ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOwog
ICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAg
Y29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKIAogc3Rk
Ojp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVS
ZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQogewotICAg
IGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7
CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsK
ICAgICByZXF1ZXN0LT5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgIHJlcXVlc3QtPnNldElu
aXRpYXRvcklkZW50aWZpZXIoaW5pdGlhdG9ySWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggMWY3NTYxODZh
MjBmMDE2OWU0Nzg0Mzk1MWJlZTM2ODdlMDAyNGZiYS4uM2MzODU4YmRhOWI0NGI1N2ZhZGIzOWVm
YTJlMGEwZjNhMzA0MTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cApAQCAtMTE0LDcgKzExNCw3IEBAIFdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVS
TCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAgLCBtX3dv
cmtlckRlYnVnZ2VyUHJveHkod29ya2VyRGVidWdnZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVw
b3J0aW5nUHJveHkod29ya2VyUmVwb3J0aW5nUHJveHkpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhy
dW50aW1lRmxhZ3MpCi0gICAgLCBtX3N0YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2Vy
VGhyZWFkU3RhcnR1cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50
LCBpc09ubGluZSwgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQorICAgICwgbV9zdGFydHVwRGF0
YShtYWtlVW5pcXVlPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlk
ZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3ksIHRvcE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICAsIG1faWRiQ29ubmVjdGlvblByb3h5
KGNvbm5lY3Rpb25Qcm94eSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGIyZDI2MTVh
MTI2M2QxNjI2NjE4MjAwNDY0OGY5MGVkYTY5MjA2YjUuLjU5YzcxYzRkMTQ3NjI3Y2ZkOWQzMWE0
NWVhYmNjY2RhZTEwM2U3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXJlZkV2ZW50VGFyZ2V0KCkKIGF1dG8gU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkoKSAtPiBSZWFkeVByb21pc2UmCiB7CiAgICAgaWYg
KCFtX3JlYWR5UHJvbWlzZSkgewotICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVhZHlQcm9taXNlPigpOworICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlx
dWU8UmVhZHlQcm9taXNlPigpOwogCiAgICAgICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gKm1fcmVhZHlQcm9taXNlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3Jp
cHRVUkwsIGNvCiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lz
dGVyOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBz
Y2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVu
aXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShq
b2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lz
dHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1v
dmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENP
TlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVn
aXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50
aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3Rk
OjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdv
cmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0K
IAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3Qg
VVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJM
LCBjb25zdCBVUkwmCiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVt
b3ZlUmVnaXN0cmF0aW9uOiBVcGRhdGluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1
NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAg
ICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBX
VEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFr
ZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92
ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxl
Sm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYikKQEAgLTI2OSw3ICsy
NjksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25z
dCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycgogICAgIH0KIAogICAgIHVpbnQ2NF90IHBl
bmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVy
OwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9t
aXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAg
YXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUo
cHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9t
aXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNl
KSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZp
ZXIoKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Omdl
dFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAog
ICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1By
b21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1By
b21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAg
ICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3Zl
KHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+
Y29udGV4dElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdhYzljOTgzODNiMDRiNmVi
ODljOTlmMjIwODg1ZTc2NzM5NzZjM2YuLjNiZDZiOWIwNmU1NzM3NjY1YjU4Zjk2OWUyOTNkMGZl
ZDYyYzNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGNsYXNzIFNlcnZp
Y2VXb3JrZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIEFjCiAjZW5kaWYKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1Byb21p
c2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8UGVuZGluZ0FjdGl2aXR5PFNl
cnZpY2VXb3JrZXJDb250YWluZXI+PiYmIHBlbmRpbmdBY3Rpdml0eSkKICAgICAgICAgICAgIDog
cHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogICAgICAgICAgICAgLCBwZW5kaW5nQWN0aXZpdHko
V1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGJj
OGY5MWVlNDM0NjJhNTA0OWU4OGMxY2VmNWVmYTc2MmM5OGZmLi5jYjVjMjIxZmM5NDg4ZDdjMDA3
Mjk4M2ExNTc4OTVkY2E4YzZjZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uCiAKICAgICBzZXJ2aWNlV29ya2VyLT5z
ZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CiAKLSAgICBtX3BlbmRpbmdTZXJ2aWNlV29y
a2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxT
ZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91
dCkpOworICAgIG1fcGVuZGluZ1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChp
ZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0
aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CiAKICAgICBhdXRvJiB0aHJlYWQgPSBzZXJ2aWNl
V29ya2VyLT50aHJlYWQoKTsKICAgICB0aHJlYWQuc3RvcChbdGhpcywgaWRlbnRpZmllciwgc2Vy
dmljZVdvcmtlciA9IFdURk1vdmUoc2VydmljZVdvcmtlciksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcAppbmRleCBjNjE3MzYxM2NhY2I1NWQ2OTA1OGJlMmM3ZTJhNWZi
ZDg1MjljNzc2Li45ZTcyOGMzYTdhZmE0NmM5NDljZGNiZTBkNmZlYjA0YTk1MzFjY2Y5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29u
ZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVz
KCkuYWRkKHRoaXMpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9yZW1v
dGVEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4o
KnRoaXMsIGRhdGEpOworICAgIG1fcmVtb3RlRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8U2Vydmlj
ZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBkYXRhKTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUt
PnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxl
LT5pbml0KCk7CiAjZW5kaWYKQEAgLTE2OCw3ICsxNjgsNyBAQCBSZWY8Q2FjaGVTdG9yYWdlQ29u
bmVjdGlvbj4gU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25u
ZWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eTo6Y3JlYXRlQmxvYkxvYWRlcihGZXRjaExvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBV
UkwmIGJsb2JVUkwpCiB7Ci0gICAgYXV0byBsb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNo
TG9hZGVyPihjbGllbnQsIG51bGxwdHIpOworICAgIGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZTxG
ZXRjaExvYWRlcj4oY2xpZW50LCBudWxscHRyKTsKICAgICBsb2FkZXItPnN0YXJ0TG9hZGluZ0Js
b2JVUkwobV9kb2N1bWVudCwgYmxvYlVSTCk7CiAgICAgaWYgKCFsb2FkZXItPmlzU3RhcnRlZCgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5k
ZXggMWRkMzQxMzc0YzQ0NDVhMzQ5NzMyZDQ0ZmRlZDE1NDc3NDgxYzBiNC4uOTJjYmEwODVkM2Fj
ZjZhMjkzZjA2YjU1ZGY0NWY0ZGZjNzkzZmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FM
aXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxsRmlsZW5hbWUpCiAKICAgICBTUUxpdGVGaWxl
U3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhtX2RhdGFiYXNlRGlyZWN0b3J5
KTsKIAotICAgIG1fZGF0YWJhc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigp
OworICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlm
ICghbV9kYXRhYmFzZS0+b3BlbihmdWxsRmlsZW5hbWUpKSB7CiAgICAgICAgIGVycm9yTWVzc2Fn
ZSA9ICJGYWlsZWQgdG8gb3BlbiByZWdpc3RyYXRpb24gZGF0YWJhc2UiOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCmluZGV4IGZlNWNjODU5ZTY1YTZlMzJhNzhiNTI4OTc1YTEzMmU3NGJmMTc4N2UuLjkz
MjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0ZDBlOTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBoYXZlIGJl
ZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGlsZSB0aGUg
aW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCiAgICAgQVNTRVJUKCFtX3JlZ2lzdHJhdGlv
bnMuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAKLSAgICBhdXRvIHJlZ2lzdHJh
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRh
LnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRh
LnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOworICAgIGF1dG8gcmVnaXN0
cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVn
aXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVn
aXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CiAgICAgcmVnaXN0cmF0aW9uLT5z
ZXRMYXN0VXBkYXRlVGltZShkYXRhLnJlZ2lzdHJhdGlvbi5sYXN0VXBkYXRlVGltZSk7CiAgICAg
YXV0byByZWdpc3RyYXRpb25QdHIgPSByZWdpc3RyYXRpb24uZ2V0KCk7CiAgICAgYWRkUmVnaXN0
cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgU1dTZXJ2
ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBTdHJp
bmcmJiByZWdpc3RyYXRpb24KIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGly
ZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAo
IW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdp
c3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOworICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3Jl
ID0gbWFrZVVuaXF1ZTxSZWdpc3RyYXRpb25TdG9yZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0
aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsKICAgICBlbHNlCiAgICAgICAgIHJlZ2lzdHJhdGlvblN0
b3JlSW1wb3J0Q29tcGxldGUoKTsKIApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgU1dTZXJ2ZXI6
OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKICAgICAvLyBJZiBp
dCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4KIAogICAgIGF1dG8mIGpvYlF1ZXVl
ID0gKm1fam9iUXVldWVzLmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBbdGhpcywg
JmpvYkRhdGFdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJKb2JR
dWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25L
ZXkoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgam9iUXVldWUuZW5xdWV1ZUpv
Yihqb2JEYXRhKTsKQEAgLTgyMCw3ICs4MjAsNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwog
CiAgICAgaWYgKGNsaWVudElkZW50aWZpZXJzLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQo
IWl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyKTsKLSAgICAgICAg
aXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbWVyPihbY2xpZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhp
c10geworICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1l
ciA9IG1ha2VVbmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9t
YWluLCB0aGlzXSB7CiAgICAgICAgICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJz
VG9UZXJtaW5hdGU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09y
VGVybWluYXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtl
ci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcAppbmRleCA4YjY4YjcwZjAxZDI1Mjc4YWY1MzhhYmNlOTE0YjhjN2M2OGFi
ODM3Li5kY2FmNWE4YTcxMGY3OTQ0NjQ3ZGUzY2Q1ZTk4MDYzOTlhOGZkNTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJK
b2JRdWV1ZS5jcHAKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1
blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAgICAgICAgICAg
ICByZWdpc3RyYXRpb24tPnNldFVwZGF0ZVZpYUNhY2hlKGpvYi5yZWdpc3RyYXRpb25PcHRpb25z
LnVwZGF0ZVZpYUNhY2hlKTsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVw
IC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IEZvdW5kIHJlZ2lzdHJhdGlvbiAl
bGx1IGZvciBqb2IgJXMgYnV0IGl0IG5lZWRzIHVwZGF0aW5nIiwgdGhpcywgcmVnaXN0cmF0aW9u
LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdSZWdpc3Ry
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwg
bV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hl
LCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOworICAgICAgICBhdXRvIG5ld1JlZ2lzdHJh
dGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lz
dHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5z
Y29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CiAgICAgICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlv
bihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlvbikpOwogCiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iOiBObyBleGlz
dGluZyByZWdpc3RyYXRpb24gZm9yIGpvYiAlcywgY29uc3RydWN0aW5nIGEgbmV3IG9uZS4iLCB0
aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNw
cAppbmRleCAyYjdhMmZlM2ZiYjU4ZDRjNGVlMzhmYzA0YjUzNmEzZTRlMGM3N2U3Li4zYmU3NTdl
MDJhZTE5ZDc1OTBlYzA3YjNmYTRjYmU3ZDYzY2U4MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVy
UGFpbnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAogICAgICAgICBSZWZQdHI8SlNDU1NQYWludENh
bGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2Fs
bGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKIAotICAgICAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGFp
bnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVu
dHMpKTsKKyAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBtYWtlVW5pcXVlPFBhaW50RGVm
aW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51
bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7
CiAgICAgICAgIHBhaW50RGVmaW5pdGlvbk1hcCgpLmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVm
aW5pdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggOTZjZjE4NTBiMGNhZTNhYWU5NjA3ZGIxMzQxNjcz
NThiNjcxYzFkOS4uNjRmYzc4ZWVlNzg4MGVkOWJlZGNmYzJhNzAxMmNhNmVjM2NlMWMwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
CkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGlj
IFdvcmtsZXRHbG9iYWxTY29wZSB7CiAKICAgICAvLyBBbGwgcGFpbnQgZGVmaW5pdGlvbnMgbXVz
dCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQsIGJlY2F1c2Ugb3RoZXJ3
aXNlIHRoZXkgd2lsbCBwb2ludCB0byBmcmVlZCBtZW1vcnkuCiAgICAgc3RydWN0IFBhaW50RGVm
aW5pdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWludERlZmluaXRpb24+IHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQYWludERlZmluaXRp
b24oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3Rv
ciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRQcm9wZXJ0
aWVzLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0QXJndW1lbnRzKTsKIAogICAgICAgICBjb25zdCBB
dG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29u
c29sZUNsaWVudC5jcHAKaW5kZXggOGU4YTJhNGNhMjNlMmI5M2RhMTM0YWZiNTJkMGU5NTc2YzQw
MjE1OS4uM2YwOTI1NjNiZDUyYWM0YTRiYmVkYTQxNWMyMzdhMmQxZGZkYWRiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcApAQCAtNDgs
NyArNDgsNyBAQCB2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRM
ZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZQogewogICAgIFN0cmluZyBtZXNzYWdl
VGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4
dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7
CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNz
YWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCmluZGV4IDRiYjc4OGVhNjNjZDZiYmRjNTMyNTg3ZTA1MTBkNTMyNTI2MDZmZmEuLmNl
ZjgyZjdiNDExZDIxOGM3MzNkNjZmYTlkYmEyZDkzMTI1YWU4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNDksNyArNDksNyBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2xldEdsb2JhbFNjb3BlKTsKIFdvcmtsZXRH
bG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0
U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50
KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQotICAgICwgbV9z
Y3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisg
ICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkK
ICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAs
IG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUpKQpAQCAtNjIs
NyArNjIsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjbwogICAgIEFTU0VSVChkb2N1bWVudC5w
YWdlKCkpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xp
Y3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVmKCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1f
Y29kZS51cmwoKSB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtl
VW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlz
KSk7CiB9CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29wZSgpCkBAIC0x
NDAsNyArMTQwLDcgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXMKIHsKICAgICBpZiAoIW1fZG9j
dW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+
dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDApKTsKKyAgICBt
X2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxl
dmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxT
Y29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDFjZWU5ZWIzNDIxY2Q5OWE1NmM4ODYwYjhlY2RkNDU5NmY4MGQy
ZGUuLjcxMzM5MDBmMTcxZWVmNDE1NjczZDRlOTBkNWNmNzdjZmViYzJiYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAg
LTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0
V2l0aFN1YmNsYXNzKCkKICAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5n
bG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VS
VChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVj
dCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIp
OwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0Q29uc29s
ZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBt
YWtlVW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOwog
ICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNv
bGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
RXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYjAyMWNjZTE1
M2MzMTkyOTUwYTJiZjc3ZDgwOWEyODQ3YWIwZjBjMS4uYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYw
MzgxNTI0MjhjNzFhYTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9y
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApAQCAtMzcsNiArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgWE1MRXJyb3Jz
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBY
TUxFcnJvcnMoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
aW5kZXggOGU0NDI0ZWYyNDZhMzZhNGRiODEzYzMwNmNiMzIxZmE0ZmVhMjUxMy4uMzY1YjUxNTZj
NDNmOWExMDBiMjg5YTJiN2FiMzQ1NDYxMjczYzQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0Ojpy
ZXNwb25zZVVSTCgpIGNvbnN0CiBYTUxIdHRwUmVxdWVzdFVwbG9hZCYgWE1MSHR0cFJlcXVlc3Q6
OnVwbG9hZCgpCiB7CiAgICAgaWYgKCFtX3VwbG9hZCkKLSAgICAgICAgbV91cGxvYWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CisgICAgICAgIG1fdXBs
b2FkID0gbWFrZVVuaXF1ZTxYTUxIdHRwUmVxdWVzdFVwbG9hZD4oKnRoaXMpOwogICAgIHJldHVy
biAqbV91cGxvYWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1
bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4
IGFkN2UxM2M4YTE5NGFkNTZkNjIzNDIwMDAxN2NiYTc3ZmU4MGI3NDIuLmE5MjQ0MDllZTQ2YzUz
ZTczYjI3YTQ5YTE5ZWZlOTY5NzIxNjczYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rp
b25zLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNl
KFVDaGFyIGMpCiAgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicg
fHwgYyA9PSAnXHQnOwogfQogCi0jZGVmaW5lIERFRklORV9GVU5DVElPTl9DUkVBVE9SKFN1ZmZp
eCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rpb24jI1N1ZmZp
eCgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RnVuIyNTdWZmaXg+KCk7IH0KKyNkZWZpbmUg
REVGSU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1
bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4KCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxGdW4j
I1N1ZmZpeD4oKTsgfQogCiBjbGFzcyBJbnRlcnZhbCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoUHJlZGljYXRlLmNwcAppbmRleCAwNDYxNWMzZDVmMDMxMzEwNjkzOGZhYTA1ZmIzOWM5
OWNlMTIzYjVjLi5jMWJiYzU0ZWI4MzAxNjkxMTljODY4MzFhNGYyYTZlN2MwMDQ1NjhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29s
IGV2YWx1YXRlUHJlZGljYXRlKGNvbnN0IEV4cHJlc3Npb24mIGV4cHJlc3Npb24pCiAKICAgICAv
LyBmb29bM10gbWVhbnMgZm9vW3Bvc2l0aW9uKCk9M10KICAgICBpZiAocmVzdWx0LmlzTnVtYmVy
KCkpCi0gICAgICAgIHJldHVybiBFcVRlc3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1bmN0aW9uOjpj
cmVhdGUoInBvc2l0aW9uIl9zKSwgc3RkOjptYWtlX3VuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051
bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKKyAgICAgICAgcmV0dXJuIEVxVGVzdE9w
KEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBtYWtlVW5p
cXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOwog
CiAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCmluZGV4IGVjMmM2YWUwNDU5YTA2OTI1NmE2NjJmNzJj
ODcyNjdmZWExYTQ1YmQuLjYzMDRlOTI4MTFhOTM0ZjdkZTc0YzhjOTRiMmI2OWMwMDRlYTQ5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtMjMx
LDcgKzIzMSw3IEBAIHZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxkU2hlZXRzKCkKIAogdm9p
ZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldChjb25zdCBTdHJpbmcmIGhyZWYpCiB7Ci0g
ICAgYXV0byBjaGlsZFJ1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMs
IGhyZWYpOworICAgIGF1dG8gY2hpbGRSdWxlID0gbWFrZVVuaXF1ZTxYU0xJbXBvcnRSdWxlPih0
aGlzLCBocmVmKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZChjaGlsZFJ1bGUucmVsZWFzZSgpKTsK
ICAgICBtX2NoaWxkcmVuLmxhc3QoKS0+bG9hZFNoZWV0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGUwMjRlZmI1NmJmNjUy
YjkwYTlhMWQ0ZjgxMzA2NDkxODMwZDhlMGYuLjcwNDg4OTJhNWFhMGVmOWE1NWZiZDI0MDhjZDE3
OTE0ZDAyYTljODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6
YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQogdm9pZCBYTUxEb2N1bWVu
dFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hh
ciogbSwgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKQogewogICAgIGlmICghbV94bWxFcnJvcnMpCi0g
ICAgICAgIG1feG1sRXJyb3JzID0gc3RkOjptYWtlX3VuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVu
dCgpKTsKKyAgICAgICAgbV94bWxFcnJvcnMgPSBtYWtlVW5pcXVlPFhNTEVycm9ycz4oKmRvY3Vt
ZW50KCkpOwogICAgIG1feG1sRXJyb3JzLT5oYW5kbGVFcnJvcih0eXBlLCBtLCBwb3NpdGlvbik7
CiAgICAgaWYgKHR5cGUgIT0gWE1MRXJyb3JzOjp3YXJuaW5nKQogICAgICAgICBtX3Nhd0Vycm9y
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBiOTMxMDFiOGFhYzQ4MzlhMzliYjU0YjJiODlkZTg5
OGM3OWI3NWFiLi5iOTliMzA4OTczODU1MDllYmFiMDQ1MjEzOTc1MzliMDcwY2VlNzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1s
Mi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogcHVi
bGljOgogICAgIHZvaWQgYXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayhjb25zdCB4bWxDaGFy
KiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIqIHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciog
eG1sVVJJLCBpbnQgbnVtTmFtZXNwYWNlcywgY29uc3QgeG1sQ2hhcioqIG5hbWVzcGFjZXMsIGlu
dCBudW1BdHRyaWJ1dGVzLCBpbnQgbnVtRGVmYXVsdGVkLCBjb25zdCB4bWxDaGFyKiogYXR0cmli
dXRlcykKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0g
bWFrZVVuaXF1ZTxQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFjaz4oKTsKIAogICAgICAgICBj
YWxsYmFjay0+eG1sTG9jYWxOYW1lID0geG1sU3RyZHVwKHhtbExvY2FsTmFtZSk7CiAgICAgICAg
IGNhbGxiYWNrLT54bWxQcmVmaXggPSB4bWxTdHJkdXAoeG1sUHJlZml4KTsKQEAgLTEyMiwxMiAr
MTIyLDEyIEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRFbmRF
bGVtZW50TlNDYWxsYmFjaygpCiAgICAgewotICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOworICAgICAgICBt
X2NhbGxiYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+
KCkpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQ2hhcmFjdGVyc0NhbGxiYWNrKGNvbnN0IHht
bENoYXIqIHMsIGludCBsZW4pCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjpt
YWtlX3VuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNh
bGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0NhbGxiYWNrPigpOwogCiAgICAg
ICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1cChzLCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+
bGVuID0gbGVuOwpAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3Mgewog
CiAgICAgdm9pZCBhcHBlbmRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjayhjb25zdCB4bWxD
aGFyKiB0YXJnZXQsIGNvbnN0IHhtbENoYXIqIGRhdGEpCiAgICAgewotICAgICAgICBhdXRvIGNh
bGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2Fs
bGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+dGFyZ2V0
ID0geG1sU3RyZHVwKHRhcmdldCk7CiAgICAgICAgIGNhbGxiYWNrLT5kYXRhID0geG1sU3RyZHVw
KGRhdGEpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAg
ICAgdm9pZCBhcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxl
bikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5p
cXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMg
PSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0x
NTcsNyArMTU3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVu
ZENvbW1lbnRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzKQogICAgIHsKLSAgICAgICAgYXV0byBj
YWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKKyAg
ICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4o
KTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cmR1cChzKTsKIApAQCAtMTY2LDcgKzE2
Niw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRJbnRlcm5h
bFN1YnNldENhbGxiYWNrKGNvbnN0IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVy
bmFsSUQsIGNvbnN0IHhtbENoYXIqIHN5c3RlbUlEKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxs
YmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7
CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdJbnRlcm5hbFN1YnNl
dENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5uYW1lID0geG1sU3RyZHVwKG5hbWUp
OwogICAgICAgICBjYWxsYmFjay0+ZXh0ZXJuYWxJRCA9IHhtbFN0cmR1cChleHRlcm5hbElEKTsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQg
YXBwZW5kRXJyb3JDYWxsYmFjayhYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCB4bWxD
aGFyKiBtZXNzYWdlLCBPcmRpbmFsTnVtYmVyIGxpbmVOdW1iZXIsIE9yZGluYWxOdW1iZXIgY29s
dW1uTnVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtl
VW5pcXVlPFBlbmRpbmdFcnJvckNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5tZXNz
YWdlID0geG1sU3RyZHVwKG1lc3NhZ2UpOwogICAgICAgICBjYWxsYmFjay0+dHlwZSA9IHR5cGU7
CkBAIC0xOTcsNiArMTk3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKIHByaXZhdGU6
CiAgICAgc3RydWN0IFBlbmRpbmdDYWxsYmFjayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVhbCB+UGVuZGluZ0NhbGxiYWNrKCkgPSBkZWZh
dWx0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbChYTUxEb2N1bWVudFBhcnNlciogcGFyc2Vy
KSA9IDA7CiAgICAgfTsKQEAgLTU2NCw3ICs1NjUsNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2Vy
OjpzdXBwb3J0c1hNTFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogWE1MRG9jdW1lbnRQ
YXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBm
cmFtZVZpZXcpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAg
LCBtX3ZpZXcoZnJhbWVWaWV3KQotICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91
bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtl
VW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJlbnROb2RlKCZkb2N1bWVu
dCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQ
b3NpdGlvbigpKQogewpAQCAtNTcyLDcgKzU3Myw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxE
b2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQog
CiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYg
ZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFy
c2VyQ29udGVudFBvbGljeSkKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVu
dC5kb2N1bWVudCgpLCBwYXJzZXJDb250ZW50UG9saWN5KQotICAgICwgbV9wZW5kaW5nQ2FsbGJh
Y2tzKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGlu
Z0NhbGxiYWNrcyhtYWtlVW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJl
bnROb2RlKCZmcmFnbWVudCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRp
b246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwgbV9wYXJzaW5nRnJhZ21lbnQodHJ1ZSkK
QEAgLTEzMjgsNyArMTMyOSw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAg
ICAgICAgeG1sVHJlZVZpZXdlci50cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKTsKICAgICB9
IGVsc2UgaWYgKG1fc2F3WFNMVHJhbnNmb3JtKSB7CiAgICAgICAgIHhtbERvY1B0ciBkb2MgPSB4
bWxEb2NQdHJGb3JTdHJpbmcoZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgbV9v
cmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybS50b1N0cmluZygpLCBkb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKSk7Ci0gICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6Om1h
a2VfdW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNl
dFRyYW5zZm9ybVNvdXJjZShtYWtlVW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CiAKICAg
ICAgICAgZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhmYWxzZSk7IC8vIE1ha2UgdGhlIGRvY3VtZW50
IHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSBYU0wgc3R5bGVzaGVldHMuCiAgICAg
ICAgIGRvY3VtZW50KCktPmFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNOb3dJZlNjaGVkdWxlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1Nv
dXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggMDViYzk1M2Y3ZjBkZGM3
ODdiMWU2MzA0ODc2OTZjMjA4NTljYWUwZi4uZDY5ZTE0OTkyZDU4Njc1MWNhMDQzNDI2MzYyYTZm
NDFjMjY5OWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02NTcs
NyArNjU3LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKFZlY3Rv
cjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlc3Npb25Ib3N0
PihjYXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0KCkpOworICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBt
YWtlVW5pcXVlPFNlc3Npb25Ib3N0PihjYXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0KCkpOwogICAg
IGF1dG8qIHNlc3Npb25Ib3N0UHRyID0gc2Vzc2lvbkhvc3QuZ2V0KCk7CiAgICAgc2Vzc2lvbkhv
c3RQdHItPmNvbm5lY3RUb0Jyb3dzZXIoW3RoaXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3Zl
KGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxT
dHJpbmc+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcCBiL1NvdXJjZS9XZWJE
cml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCmluZGV4IDdhMjBiODk0MWFmZjcyYTg1MmI3
NmY1YzU1MTA2MjY1NDc3NGExY2MuLjE3N2FhNTRmMjIyOTdhYzMxNjE0ZDM1M2JlOWYzYTc5ZDFh
YWIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0x
MTMsNiArMTEzLDcgQEAgYm9vbCBTZXNzaW9uSG9zdDo6aXNDb25uZWN0ZWQoKSBjb25zdAogfQog
CiBzdHJ1Y3QgQ29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgIENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGEoU2Vzc2lvbkhv
c3QqIHNlc3Npb25Ib3N0LCBHVW5pcXVlUHRyPGNoYXI+JiYgZGJ1c0FkZHJlc3MsIEdDYW5jZWxs
YWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3Ip
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IHNlc3Npb25Ib3N0KHNlc3Npb25Ib3N0
KQogICAgICAgICAsIGRidXNBZGRyZXNzKFdURk1vdmUoZGJ1c0FkZHJlc3MpKQpAQCAtMTczLDcg
KzE3NCw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OmxhdW5jaEJyb3dzZXIoRnVuY3Rpb248dm9pZCAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxlCiAgICAgfSwgdGhpcyk7CiAKICAgICBH
VW5pcXVlUHRyPGNoYXI+IGRidXNBZGRyZXNzKGdfc3RyZHVwX3ByaW50ZigidGNwOmhvc3Q9JXMs
cG9ydD0ldSIsICIxMjcuMC4wLjEiLCBwb3J0KSk7Ci0gICAgY29ubmVjdFRvQnJvd3NlcihzdGQ6
Om1ha2VfdW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1
c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkpOworICAgIGNvbm5lY3RUb0Jyb3dzZXIobWFrZVVuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5
bmNEYXRhPih0aGlzLCBXVEZNb3ZlKGRidXNBZGRyZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6Y29u
bmVjdFRvQnJvd3NlcihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4m
JiBkYXRhKQpAQCAtMzcxLDYgKzM3Miw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElECiB9CiAK
IHN0cnVjdCBNZXNzYWdlQ29udGV4dCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIGxvbmcgbWVzc2FnZUlEOwogICAgIFNlc3Npb25Ib3N0KiBob3N0OwogfTsKQEAg
LTM4MSw3ICszODMsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChs
b25nIG1lc3NhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVChtX2Nvbm5l
Y3Rpb25JRCk7CiAgICAgQVNTRVJUKG1fdGFyZ2V0LmlkKTsKIAotICAgIGF1dG8gbWVzc2FnZUNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4dCB7
IG1lc3NhZ2VJRCwgdGhpcyB9KTsKKyAgICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0gbWFrZVVuaXF1
ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2FnZUNvbnRleHQgeyBtZXNzYWdlSUQsIHRoaXMgfSk7CiAg
ICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbChtX2RidXNDb25uZWN0aW9uLmdldCgpLCBudWxscHRy
LAogICAgICAgICBJTlNQRUNUT1JfREJVU19PQkpFQ1RfUEFUSCwKICAgICAgICAgSU5TUEVDVE9S
X0RCVVNfSU5URVJGQUNFLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaAppbmRleCBiNjJmMTJlMTgyZjIxZWI4ZDUx
MDc0Y2IyNTRkN2IyMTJlMGNlZDE5Li5iNDQ1ZTdhNjVhNDhkMDc0OGJkN2U5MjA1YTM0NDBmN2Yx
YTk1NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tB
dHRyaWJ1dGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Fk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogCiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggMmUyOTZiMjlmNDNhNGZj
ODhlNzAwOTMyNGE1ZTIzYjBiZTljZDUxYy4uOTMwM2QyYWRjMTVlZjZmYjMxMGI2ZmIxNmQwNzBj
Yzg1M2ZkYzNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzaygp
CiAgICAgaWYgKHJlc291cmNlTG9nUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJj
ZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBt
X2ZpbGVNb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4ocmVzb3VyY2VMb2dQYXRoLCBt
X3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBtX2ZpbGVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxl
TW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxl
TW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtl
VW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBb
dGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAodHlwZSA9PSBGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGU6OlJlbW92YWwpIHsKICAgICAgICAgICAgIC8vIERpcmVjdG9yeSB3YXMg
cmVtb3ZlZCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UuaAppbmRleCA0YzAzM2UzNTNkNGYzMDhmN2Y3NjAwMTJjYTk2Mjk2MzAz
YzEwNzMwLi43MWYzNGJmYTNkNmMyYjUyNzYxNjg5NDRlZTMzNGM3M2RhZjUwMzI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZTsKIAogLy8gQ2FuIG9ubHkgYmUgY29uc3RydWN0ZWQgLyBkZXN0cm95ZWQgLyB1c2VkIGZy
b20gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpYyBxdWV1ZS4K
IGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlJiwgV29ya1F1ZXVlJiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAg
ICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDcwYWNiZGNlOTZmNjVjZjgzYTk0
NjM3ZDNmYjhkMWU5YjI2NTUzZGQuLmEwY2VmNmYzMWI0OTY2MmU1ZjkyMDNjY2Y4YjE5MDg3ZTMw
ZTg0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTc3
LDYgKzc3LDcgQEAgZW51bSBjbGFzcyBPcGVyYXRpbmdEYXRlc1dpbmRvdyA6IGJvb2wgeyBMb25n
LCBTaG9ydCB9OwogCiAvLyBUaGlzIGlzIGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0
cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3Mg
cXVldWUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgdXNpbmcgUmVnaXN0cmFibGVE
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggOGMyMTE1N2NjN2Y2OTE3YmE5NzA4
OWUzNmYxNjlkODZjZjhiOGFiMC4uYTFjMDdmMzZhNmY4ZmZmY2Q3NjAzOGRkNmNlYWNiY2E2NDdl
YjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKQEAgLTE1OSwxNSArMTU5LDE1IEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBuCiAgICAgCiAg
ICAgcG9zdFRhc2soW3RoaXMsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpLCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0XSB7CiAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmlzSVRQRGF0YWJhc2VFbmFibGVkKCkpIHsKLSAgICAgICAgICAgIG1fc3RhdGlz
dGljc1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0
LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlz
dGljc1N0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKIAotICAgICAgICAgICAgYXV0byBtZW1vcnlT
dG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
PigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAg
ICAgICAgICAgYXV0byBwZXJzaXN0ZW50U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBtX3N0YXRpc3Rp
Y3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBh
dXRvIG1lbW9yeVN0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7
CisgICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGlj
c1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKIAogICAgICAgICAgICAg
ZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCptX3N0YXRpc3Rp
Y3NTdG9yZS5nZXQoKSkucG9wdWxhdGVGcm9tTWVtb3J5U3RvcmUoKm1lbW9yeVN0b3JlKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRp
c3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAgICAgICAgICBtX3BlcnNp
c3RlbnRTdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U+KGRvd25jYXN0PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZT4oKm1fc3RhdGlzdGljc1N0b3JlKSwgbV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtl
VW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlz
dGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKKyAgICAgICAgICAgIG1fcGVyc2lz
dGVudFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9z
dGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRSgxOTMyOTcpOiBUaGlz
IHNob3VsZCBiZSByZXZpc2VkIGFmdGVyIHRoZSBVSVByb2Nlc3MgdmVyc2lvbiBnb2VzIGF3YXku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuaAppbmRleCA2MDVhZWYzZTZlZTk1MGYzOTQ4M2ZjZDhjYzRkOGU2NThlMDJj
ZjBjLi5iYmUzOTg0NzUyYmUxNDYwNTBkNTAzNTcxMzcxNTUwZmIyY2I2M2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3Jr
UHJvY2VzczsKIAogY2xhc3MgV2ViQ29va2llTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vz
c1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29va2llTWFuYWdl
cik7CiBwdWJsaWM6CiAgICAgV2ViQ29va2llTWFuYWdlcihOZXR3b3JrUHJvY2VzcyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBkYzc5
ZWViY2YxOGRiZjY3YjQ2NGMzNTg2MTBmYjNjZTdjZmU5MGNjLi5mOTBmMGZjYjQxOTAyNGI4YTk1
ZjU3NzBjOWI3OTk3YjU3ODRiMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vz
czsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVu
dCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcihO
ZXR3b3JrUHJvY2VzcyYpOwpAQCAtNzgsNiArNzksNyBAQCBjbGFzcyBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBD
OgogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgc3RydWN0IFdlYlNvdXBSZXF1ZXN0QXN5bmNE
YXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBX
ZWJTb3VwUmVxdWVzdEFzeW5jRGF0YShHUmVmUHRyPEdUYXNrPiYmLCBXZWJLaXRTb3VwUmVxdWVz
dEdlbmVyaWMqKTsKICAgICAgICAgfldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
clNvdXAuY3BwCmluZGV4IDJjNGQyZmY5NDgwOWM0MmE2MTE2NzNiNWZiNWNhZGJmYTU5MTYwNGUu
LmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0ZjM5ZmI1ZWZjZDc1ZTcxNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3Vw
LmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbFJlcXVlc3RDbGllbnQg
ZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xpZW50CiAgICAgICAgIGlm
ICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9t
UHJvdG9jb2woc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldl
YlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CisgICAgICAg
IGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9t
UHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CiAgICAgICAgIGN1c3Rv
bVByb3RvY29sTWFuYWdlci0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHdlYmtpdFNv
dXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVlc3QocmVxdWVzdCkpOwogICAgIH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAppbmRleCBmNGQ3NWQ5ZGQzMTgyMDA0NDlhMmFiMmU1OGU4ODYzMTIwYzc3NzQ0
Li41MDdmNGY2ZmZjM2Q0MDY5YzEzNzgyNjUyNzVjNjYwNjU0YjRjODM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93
bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2EKICAgICAg
ICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihyZXF1ZXN0LnVybCgpKTsK
ICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6VXNlOwogCi0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9h
ZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxv
YWRJRCwgKm5ldHdvcmtTZXNzaW9uLCAmY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KS0+YmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKKyAgICBtX3BlbmRpbmdEb3dubG9h
ZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCiB2b2lkIERv
d25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3du
bG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBAIC05MCw3ICs5
MCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29u
dmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFT
U0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX3Bl
bmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rv
d25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBX
VEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25sb2Fk
SUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3du
bG9hZElELCBtYWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQog
CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0
aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092
ZXJ3cml0ZSkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1l
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogI2lm
ICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKLSAgICBhdXRv
IGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQs
IG51bGxwdHIsIHNlc3Npb25JRCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93
bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwogCiAgICAgZG93
bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFwLmNwcAppbmRleCBhODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3YmJjNDMzZTY1
Li5hZTNjYTdlMGU0ZWU3ZWM4NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6OkFkZFJlc3Vs
dCBEb3dubG9hZE1hcDo6YWRkKERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBhdXRvIHJlc3Vs
dCA9IG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAg
aWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9h
ZEFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkQXNz
ZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldlYktpdCBk
b3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKICAgICAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQgZG93bmxvYWRz
JyBhc3NlcnRpb24gaW4gTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
Y3BwCmluZGV4IGEyNzgyOGQ3YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5NmQuLjU5MTIz
ZjJjNDhmMWMxZTQxNzliYjFkNWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6OkNvbm5lY3Rp
b24qIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vz
c2lvbiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZE5hbWUpCi0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5l
dHdvcmtTZXNzaW9uKSkKKyAgICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3JrTG9h
ZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Np
b24pKQogICAgICwgbV9wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbikKIHsKICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gcGFyYW1l
dGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1h
eUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCAxZjEwMDRlMWI1YmNkMzlkOGIxMjJkZjhjNmRhNDhkMTM3YzRiZTYxLi4zMDFkYmUzNzgzMDE2
NzkyYWMxMzVkMzBlNjk4MTIwYmEwMjBiMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtOTAzLDcgKzkwMyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBzZXJ2ZXIgPSBt
X25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICBhdXRv
IGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9u
ZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7Cisg
ICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1f
bmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOwog
ICAgIAogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25u
ZWN0aW9uIC0gJXMiLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4IDQ0NDIwZmY1
ZmYyMjk5YmUzNzU0Y2UzN2NkZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIxYWYwYmFkZTBj
MDI3NWJlMmYwOTVhMTY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCkBAIC02OSw3
ICs2OSw3IEBAIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRl
bnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0RGF0YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAgICBhdXRvJiBi
YWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVudGlmaWVyLCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQ+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRvJiYgY29udGVu
dFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2Y2ExZjA5NWUx
MDNjNTQyYWQ0ZTQzMDAwYmNiNzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIyMTA0ZGYwOTQ2
OTJjYzNmNjU1MjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNl
IjsKIAogTmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3b3JrU2Vz
c2lvbiYgc2Vzc2lvbiwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3JrRGF0
YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDb250
ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykKICAgICA6
IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJlYW0oc3RkOjpt
YWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3RyZWFtKG1ha2VV
bmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGZp
bGVSZWZlcmVuY2VzKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5ldHdvcmtQcm9j
ZXNzKCkpCiB7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpk
b3dubG9hZCgpCiAgICAgfQogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9uZXR3b3Jr
UHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwg
KnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAg
IGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1f
cGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0
ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwog
ICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdE
b3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0
ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
LmNwcAppbmRleCBmNjU0Mjk1OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMxMTZjLi4xOTMy
NmYyZjQ3ZGM5ZjRmNjIyOGE0YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
LmNwcApAQCAtNjcsNyArNjcsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0
YWJhc2U+KCk7CisgICAgICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0
ZURhdGFiYXNlPigpOwogICAgICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9kYXRhYmFzZS0+
b3BlbihwYXRoLCBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJlYWRPbmx5KTsK
ICAgICAgICAgaWYgKCFpc0RhdGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAt
ODAsNyArODAsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXIoKQogICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1
ZSwgdGhlIHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVy
ZW50IHRocmVhZHMuCiAgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdDaGVja3Mo
KTsKIAotICAgICAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsKKyAg
ICAgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4o
Km1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAgIGludCBpc1N0
YXRlbWVudFByZXBhcmVkID0gKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FMSVRFX09LKTsK
ICAgICAgICAgQVNTRVJUKGlzU3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBpZiAoIWlzU3Rh
dGVtZW50UHJlcGFyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKaW5kZXggZGNkNDZhNjAxYmU2MzA5ODZm
YzJhZTBjMWM5NjU1OGM5NTkyMjA4YS4uNTFkMjAzMTRlYWE0OWU5NmE0MWE1N2NlOGQ0MjIyNmJi
ZmIwNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBTZXNz
aW9uSUQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CiAgICAgfk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4
IDkxMDdmZWMxZTM0ZGI0NDg4MTYyMjg2ODYyMmM4ZmJlYjViMzg4M2MuLmVlODBhYzZlYTFhNzc5
NzczYTA3MTBlMTc4ODcwNjM3NjdjNTEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9u
c2VDb21wbGUKICAgICB9CiAKICAgICBpZiAobV9sb2FkVGhyb3R0bGVMYXRlbmN5ID4gMF9zKSB7
Ci0gICAgICAgIG1fdGhyb3R0bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocm90dGxlPigqdGhpcywg
bV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBtX3Rocm90dGxlID0gbWFrZVVuaXF1ZTxUaHJvdHRsZT4o
KnRoaXMsIG1fbG9hZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4
IDQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlhMTYwODE3ZjI0Nzk2N2IwMTYuLmUxYWUwMGJkOWQ5NTQ3
Nzc4MTc0Mzk4NWRmMDczYThiMWNkMjUzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogICAgICAgICBtX2ZyYW1lSUQsCiAgICAgICAgIG1fc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3Jr
UHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFu
ZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShh
dXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBtYWtl
VW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQo
KSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1l
dHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1v
dmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3Ip
IG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja0NPUlNSZXF1
ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxp
Z2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9yUmVkaXJlY3Q/ICVkIiwgZXJy
b3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwo
KSkgewpAQCAtNDQ2LDcgKzQ0Niw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xv
YWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3koKQogewogICAgIGlmICghbV9jb250ZW50
U2VjdXJpdHlQb2xpY3kgJiYgbV9jc3BSZXNwb25zZUhlYWRlcnMpIHsKICAgICAgICAgLy8gRklY
TUU6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIHJlc291cmNlIGluc3RlYWQgb2YgaXRz
IG9yaWdpbi4KLSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3Ry
aW5nKCkgfSk7CisgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygp
IH0pOwogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+ZGlkUmVjZWl2ZUhlYWRlcnMo
Km1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3JlZmVycmVyIH0sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOwogICAgIH0KICAgICByZXR1cm4g
bV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGU4MjBiMjljMjBmNTE5ZmI1ZTNkZDg4
YThiZWY2NDY1NDA2ODZiMGIuLjRkYzgyNTY0NmIyYmY3N2ZiY2E5MTdjOTVjMjdiNGU0NmY1NWI1
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC01MDMsOSArNTAzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZV
UkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNl
c3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92
ZShjb29raWVTdG9yYWdlKSk7CisgICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3Rv
cmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIG1fZGVmYXVsdE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBtX2Rl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAjZW5k
aWYKIH0KIApAQCAtNTM1LDkgKzUzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNl
c3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nCiAgICAg
ICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlD
b29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7
CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Np
b24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92
ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENV
UkwpIHx8IFVTRShTT1VQKQotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNl
c3Npb25JRCk7CiAjZW5kaWYKIH0KIApAQCAtMjQ1Myw3ICsyNDUzLDcgQEAgU1dTZXJ2ZXImIE5l
dHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6OlNl
c3Npb25JRCBjb21lIGZyb20/CiAgICAgICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSB8fCAhcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICAKLSAgICAgICAgYXV0byB2YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4o
KSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IG1ha2VV
bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92
ZShwYXRoKSwgc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKICAgICAgICAgICAgIHZhbHVlLT5kaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiAgICAgICAgIHJldHVybiB2
YWx1ZTsKQEAgLTI1NjUsNiArMjU2NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPCiB9CiAK
IGNsYXNzIFF1b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VRdW90YVVzZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFF1b3RhVXNlckluaXRpYWxpemVyKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFn
ZXIpCiAgICAgICAgIDogbV9tYW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQpAQCAtMjU5OSw3
ICsyNjAwLDcgQEAgY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6U3RvcmFnZVF1b3RhVXNlciB7CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxp
emVRdW90YVVzZXJzKFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNz
aW9uSUQsIG9yaWdpbiwgdXNlciA9IHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6
ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVz
ZXIgPSBtYWtlVW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
dGhpcy0+aWRiU2VydmVyKHNlc3Npb25JRCkuaW5pdGlhbGl6ZVF1b3RhVXNlcihvcmlnaW4pOwpA
QCAtMjYxMyw3ICsyNjE0LDcgQEAgU3RvcmFnZVF1b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6
OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAgcmV0
dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXJzIHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgcmV0dXJuICpzdG9yYWdlUXVvdGFNYW5hZ2Vycy5tYW5hZ2Vyc1Blck9yaWdpbigpLmVuc3Vy
ZShvcmlnaW4sIFt0aGlzLCAmc3RvcmFnZVF1b3RhTWFuYWdlcnMsIHNlc3Npb25JRCwgJm9yaWdp
bl0gewotICAgICAgICBhdXRvIG1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90
YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBbdGhp
cywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3Bh
Y2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAgICAgYXV0
byBtYW5hZ2VyID0gbWFrZVVuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVvdGFN
YW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3JpZ2luXSh1
aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3Jl
YXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAgICB0aGlzLT5yZXF1ZXN0U3RvcmFnZVNw
YWNlKHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwgY3VycmVudFNwYWNlLCBzcGFjZUluY3JlYXNl
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIH0pOwogICAgICAgICBpbml0aWFsaXplUXVv
dGFVc2VycygqbWFuYWdlciwgc2Vzc2lvbklELCBvcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDFiZWI3YjY1ZGI2MzBjM2IzMjhi
YjE1Y2ZjM2IzMTE2YjRiOTk0ZDYuLmE5NWEyZGU3OWVhZGRkNDgwOTQzNDRiZjdjYTI2NmNkYjNm
NzZkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBBdXhp
bGlhcnlQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xpZW50LAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAg
ICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVl
PFQ+KCp0aGlzKSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1l
KCksIG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICB2b2lkIHJlbW92ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNDc4MmVmMTVmM2RlZWU1YWY0ZWFlZjA1Y2RmNjAzNmFlN2U2ZDJm
Yi4uOGMzM2ZiODYwYWQ3YTc4NzM2ZTRiOGZiYWRmMjBjNzc1NTMyOWU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtMTExLDcgKzExMSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291
cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAKICAgICBpZiAo
c3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNl
QWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUpIHsKICAgICAgICAgTmV0d29y
a0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBpc01haW5GcmFtZUxvYWQo
KSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok1haW5GcmFtZSA6IE5ldHdvcmtMb2Fk
Q2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQ
cm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1l
dGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRl
cnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNv
dXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdp
bmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVF
bmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExv
YWRUeXBlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdv
cmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlvbnMg
eyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRlck1hcCB7
IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVy
cy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBt
X3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJy
ZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CiAgICAgICAgIGlmICht
X3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzKQogICAgICAgICAgICAgbV9uZXR3b3JrTG9h
ZENoZWNrZXItPnNldENTUFJlc3BvbnNlSGVhZGVycyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMgeyBtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTExOSw3ICsxMTksNyBAQCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmIHBhcgogI2VuZGlmCiAgICAgfQogICAgIGlmIChzeW5jaHJvbm91c1Jl
cGx5KQotICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5
bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOworICAgICAgICBt
X3N5bmNocm9ub3VzTG9hZERhdGEgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdU
Rk1vdmUoc3luY2hyb25vdXNSZXBseSkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoKQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZpcnN0TG9hCiAgICAgICAgIHBhcmFtZXRlcnMuYmxvYkZpbGVSZWZlcmVuY2VzID0gbmV0d29y
a1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKG9yaWdpbmFsUmVxdWVzdCgpLnVy
bCgpKTsKIAogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7Ci0gICAg
bV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0
d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29y
a1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigq
dGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0gJXtwdWJsaWN9cykiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51
dGY4KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAppbmRleCA1MDZlN2ZmMDhmYmM5YTc2NGVhODMwMzA5NGI2ZDMwNjc0YTNmM2E0
Li4zMzViMTliZmIwOTA1MGE3ZmJhZDMzMzg0N2IxYzRmNTJjY2M2MDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC02NSw2ICs2NSw3IEBA
IGNsYXNzIENhY2hlOwogfQogCiBjbGFzcyBOZXR3b3JrU2Vzc2lvbiA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0
ZShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwog
ICAgIHZpcnR1YWwgfk5ldHdvcmtTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCmluZGV4IDA0ZTNkMDI1MjIw
ZGU0YzQzYzczNjJkYTE0MWRmMzJiYTIwMzBmYWYuLjU5MTg4NTc1N2E4NDc1MWM4MzE4ZjdiZTVk
Mjc1YTdmMTFjNWE0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5l
dHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVy
KQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU29ja2V0Q2hh
bm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8TmV0d29ya1NvY2tldENoYW5uZWw+KGNvbm5lY3Rpb24sIGNv
bm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCByZXF1
ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXN1bHQtPm1fc29ja2V0KSB7
CiAgICAgICAgIHJlc3VsdC0+ZGlkQ2xvc2UoMCwgIkNhbm5vdCBjcmVhdGUgYSB3ZWIgc29ja2V0
IHRhc2siX3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAppbmRleCA2NzJiMzc4MWE0
ZDRhMzRiOWMxZTFlMjQxNWJkNDkxMGU3NzllZDcxLi45ZGY5YWFjZGNiMzMyZTA0MWRiNjliZDA2
ODEwMjI5Y2Y4YmI0ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzOwogY2xhc3MgTmV0d29ya1Nlc3Npb247CiAKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFu
bmVsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRDaGFubmVsPiBjcmVhdGUoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3QgaWRlbnRpZmllcik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAK
aW5kZXggZDkwY2NjYTk4MGE4ZWZmYzJkNGYzOGY1ZTNmNmJjMGFhMmMyZTU0Ni4uMmM2NDI3ZTY0
ODIyY2VmNWQxYTgxMjAyNWVmZDZjODU0NTQxY2U4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUHJlY29u
bmVjdFRhc2s6OlByZWNvbm5lY3RUYXNrKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
TmV0d29ya0xvYWRQYXJhbWUKICAgICB9CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy5zaG91bGRQ
cmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKTsKLSAgICBtX25ldHdvcmtMb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUo
cGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VV
bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAq
bmV0d29ya1Nlc3Npb24pOwogCiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KDYwMDAw
X3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2Nr
ZXRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApp
bmRleCAzYTU5ZmZhNmExYTA4ZDYzZGU1YmZmNTllM2Y2OTQ2ZjBlNDA4ZWI0Li4wNDc5OTIwODk2
ZGEyNTdmYzU4NjQ1MTYwYzAwMDlkMTY0Y2U1ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYlNvY2tldFRhc2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgdWludDY0X3QgVGFza0lkZW50aWZpZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4IGJmNTE1NzhmYjE0N2RkZGM4N2U2NmQ5
MGE1ZWRkMDJhNGNkNzI2OTMuLmNjODc4NGQ0MjgzYTYyNWZjMGUxZDllZmFhNTI3MDUyM2FjNzEx
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBA
IHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRhdGUoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVX
cml0aW5nVG9Mb2NhbFN0b3JhZ2UpCi0gICAgICAgIG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9u
V2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZGRlblRlcm1p
bmF0aW9uRGlzYWJsZXI+KCk7CisgICAgICAgIG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hp
bGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFN1ZGRlblRlcm1pbmF0aW9uRGlz
YWJsZXI+KCk7CiAKICAgICBtX2RpZFNjaGVkdWxlRGF0YWJhc2VVcGRhdGUgPSB0cnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAKaW5kZXggM2U5ZDE3ZDYwMmQzNDE3NzAzM2M5MzM4YjRiYmU2ZGEwYmFiYThhNC4uYjA4M2Q1
ZDMyYTUxZTYxZGE0Mzc2ZGY5NDQ2ZWYxMTE0ZWE2YmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtODQsMTcgKzg0
LDE3IEBAIENhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFJlZjxT
dG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKENh
Y2hlT3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbikpIHsKLSAgICAgICAgbV9sb3dQb3dl
ck1vZGVOb3RpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TG93UG93ZXJNb2RlTm90
aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeworICAgICAgICBtX2xv
d1Bvd2VyTW9kZU5vdGlmaWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3Rp
Zmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7CiAgICAgICAgICAgICBB
U1NFUlQoV1RGOjpSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoaXNMb3dQb3dl
ck1vZGVFbmFibGVkKQogICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9
IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1f
c3BlY3VsYXRpdmVMb2FkTWFuYWdlcik7Ci0gICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhp
cywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1h
bmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3Jh
Z2UuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgaWYgKCFtX2xv
d1Bvd2VyTW9kZU5vdGlmaWVyLT5pc0xvd1Bvd2VyTW9kZUVuYWJsZWQoKSkKLSAgICAgICAgICAg
IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAgICBtX3NwZWN1
bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0
aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgIH0KICNlbmRpZgogCkBAIC0zNzUsMTIgKzM3NSwx
MiBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRs
ZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3Zl
KHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2Up
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCBy
ZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJl
cXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1h
a2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1By
b2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25z
ZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3Bv
bnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjp1cGRhdGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcQogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBleGlzdGluZ0VudHJ5LnJlc3BvbnNlKCk7CiAg
ICAgV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24ocmVzcG9u
c2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKLSAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5n
RW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCBy
ZXNwb25zZSkpOworICAgIGF1dG8gdXBkYXRlRW50cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihleGlz
dGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRyeS5idWZmZXIoKSwgV2ViQ29y
ZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKSk7CiAgICAgYXV0byB1
cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAKICAg
ICBtX3N0b3JhZ2UtPnN0b3JlKHVwZGF0ZVJlY29yZCwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5k
ZXggN2FlMWMyZmU3ZGNlNjA3YjlmOGE1M2Q5OWExYmQ3OTg1Mzk5YmNmMS4uMWY0MTQ0YThmYWU4
N2JmNWZjNWM4M2VkOTAyYjZmZjA4YTA2NGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgp
IGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNv
cmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7Ci0gICAgYXV0byBlbnRy
eSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRy
eSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VF
bnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3Jl
c3BvbnNlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCA5NGI2MDY4
YTBkZmVkNzQyZmFmZmRlNTc2ODg3MDVhZTdhNDYyMDFiLi5iYjk3YzdhM2YyNzYxNzZkMDlmZjQ4
MzViMmYzYjk3ZWYyZTU4ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hl
JiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgcGFyYW1ldGVy
cy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBDb250ZW50U25pZmZpbmdQb2xpY3k6OkRvTm90U25p
ZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
PSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmY7CiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0
d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKSk7CiB9CiAKIFNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCAxY2Q2YjQ5
MmY4MWE1YTgxZDI0Y2E3OTEwOGRhNmIxOWUwYzAwM2YxLi41N2U4ZTc1OTliMWNjYTY1YjI2ZTA2
ZWMzODcyZWUyZGQ5NDlkZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkTWFuYWdlci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVibGljIFJlZkNvdW50ZWQ8UGVuZGluZ0ZyYW1l
TAogICAgIHZvaWQgcmVnaXN0ZXJTdWJyZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBLZXkmIHN1YnJlc291cmNlS2V5KQogICAgIHsKICAgICAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VL
ZXkpKTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVuZChtYWtlVW5pcXVlPFN1YnJl
c291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VLZXkpKTsKICAgICAgICAgbV9sb2FkSHlz
dGVyZXNpc0FjdGl2aXR5LmltcHVsc2UoKTsKICAgICB9CiAKQEAgLTM1NSw3ICszNTUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlKGNvbnN0IEtleSYgc3RvcmFnZUtl
eSwgUmV0cmlldmVDb21wbGV0aW9uSAogICAgIEFTU0VSVChtX3BlbmRpbmdQcmVsb2Fkcy5jb250
YWlucyhzdG9yYWdlS2V5KSk7CiAgICAgLy8gRklYTUU6IFRoaXMgYnJlYWtzIGluY3JlbWVudGFs
IGxvYWRpbmcgd2hlbiB0aGUgcmV2YWxpZGF0aW9uIGlzIG5vdCBzdWNjZXNzZnVsLgogICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmlldmVSZXF1ZXN0cy5lbnN1cmUoc3RvcmFnZUtl
eSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmV0cmlldmVD
b21wbGV0aW9uSGFuZGxlcj4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKICAgICB9KTsKICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5hcHBlbmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpAQCAt
NDA0LDcgKzQwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVk
RW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgY29uCiAgICAgQVNTRVJUKGVudHJ5
KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAgYXV0byBrZXkg
PSBlbnRyeS0+a2V5KCk7Ci0gICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFr
ZV91bmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBXVEZNb3ZlKHJldmFsaWRh
dGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7CisgICAgbV9wcmVsb2FkZWRFbnRy
aWVzLmFkZChrZXksIG1ha2VVbmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBX
VEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAg
ICAgIGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3ByZWxvYWRlZEVudHJpZXMudGFrZShrZXkpOwog
ICAgICAgICBBU1NFUlQocHJlbG9hZGVkRW50cnkpOwogICAgICAgICBpZiAocHJlbG9hZGVkRW50
cnktPndhc1JldmFsaWRhdGVkKCkpCkBAIC00NDksNyArNDQ5LDcgQEAgYm9vbCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0IEtleSYga2V5LCBFbnRy
eSogZW50cnkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChhdXRvJiBjb21wbGV0
aW9uSGFuZGxlciA6ICpjb21wbGV0aW9uSGFuZGxlcnMpCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGVudHJ5ID8gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6IG51bGxwdHIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IG1ha2VVbmlxdWU8RW50cnk+KCplbnRy
eSkgOiBudWxscHRyKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDY4LDcgKzQ2OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0
IFN1YnJlc291cmNlSW5mbyYgc3VicmVzCiAKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBTcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGlu
ZyAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIHJl
dmFsaWRhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZy
YW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCBy
ZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFs
aWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFsaWRhdG9yID0gbWFrZVVuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUo
ZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXZh
bGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAg
ICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCByZXZhbGlkYXRlZEVudHJ5LT5rZXko
KSA9PSBrZXkpOwogCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGYK
ICAgICAgICAgICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJlc291cmNlSW5mbywgZnJhbWVJRCk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
UHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgTm90IHByZWxvYWRpbmcgJyVzJyBiZWNhdXNl
IGl0IGlzIG1hcmtlZCBhcyB0cmFuc2llbnQiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFr
ZV91bmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwgZnJhbWVJRF0geworICAgICAgICAg
ICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1ha2VVbmlxdWU8RXhwaXJpbmdFbnRy
eT4oW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZl
TG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKG1fY2FjaGUubmV0d29ya1Byb2Nlc3MoKSwgZnJhbWVJ
RCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRyeVJpZ2h0bHlOb3RXYXJtZWRVcEtleSgpKTsK
ICAgICAgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMucmVtb3ZlKGtleSk7CiAgICAg
ICAgICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiYmZjNjQ5ODkwZjk1Y2M3ZTA0
Y2U4MmE0ZmUzMjk0NGRjMWFiMWYwLi44MDRjNDI5OGNjM2UzYzI4MTRmZGJjMmJiYjZjYmVlNTc1
ODRhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTI5MCw4ICsyOTAsOCBAQCB2b2lkIFN0
b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3
b3JrUHJvY2Vzcykgc3luY2hyb25pemluZyBjYWNoZSIpOwogCiAgICAgYmFja2dyb3VuZElPUXVl
dWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byByZWNvcmRGaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bnRlbnRzRmlsdGVyPigpOwotICAgICAgICBhdXRvIGJsb2JGaWx0ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRvIHJlY29yZEZpbHRlciA9IG1ha2VV
bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1dG8gYmxvYkZpbHRlciA9IG1ha2VV
bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CiAKICAgICAgICAgLy8gTW9zdCBvZiB0aGUgZGlzayBz
cGFjZSB1c2FnZSBpcyBpbiBibG9icyBpZiB3ZSBhcmUgdXNpbmcgdGhlbS4gQXBwcm94aW1hdGUg
cmVjb3JkcyBmaWxlIHNpemVzIHRvIGF2b2lkIGV4cGVuc2l2ZSBzdGF0KCkgY2FsbHMuCiAgICAg
ICAgIHNpemVfdCByZWNvcmRzU2l6ZSA9IDA7CkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBTdG9y
YWdlOjpyZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24mIHJlYWRPcGVyYXRpb24sIGNvbnN0IERhdGEm
IHJlY29yZERhdGEpCiAgICAgfQogCiAgICAgcmVhZE9wZXJhdGlvbi5leHBlY3RlZEJvZHlIYXNo
ID0gbWV0YURhdGEuYm9keUhhc2g7Ci0gICAgcmVhZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3JkIHsKKyAgICBy
ZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IG1ha2VVbmlxdWU8U3RvcmFnZTo6UmVjb3JkPihT
dG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0YS5rZXksCiAgICAgICAgIG1ldGFEYXRh
LnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKQEAgLTc1OCw3ICs3NTgsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZyb21NZW1vcnkoY29uc3QgVCYgb3BlcmF0aW9u
cywgY29uc3QgS2V5JiBrZXksCiAgICAgICAgIGlmIChvcGVyYXRpb24tPnJlY29yZC5rZXkgPT0g
a2V5KSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJv
Y2VzcykgZm91bmQgd3JpdGUgb3BlcmF0aW9uIGluIHByb2dyZXNzIik7CiAgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlY29yZCA9IG9wZXJhdGlvbi0+cmVjb3JkLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om1ha2VfdW5pcXVlPFN0b3Jh
Z2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTg2Miw3ICs4
NjIsNyBAQCB2b2lkIFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IEtleSYga2V5LCB1bnNpZ25lZCBw
cmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZAogICAgIGlmIChyZXRyaWV2ZUZyb21NZW1v
cnkobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMsIGtleSwgY29tcGxldGlvbkhhbmRsZXIpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFJlYWRPcGVyYXRpb24+KCp0aGlz
LCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIHJlYWRPcGVyYXRpb24t
PnRpbWluZ3Muc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgcmVhZE9wZXJh
dGlvbi0+dGltaW5ncy5kaXNwYXRjaENvdW50QXRTdGFydCA9IG1fcmVhZE9wZXJhdGlvbkRpc3Bh
dGNoQ291bnQ7CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBTdG9yYWdlOjpzdG9yZShjb25zdCBS
ZWNvcmQmIHJlY29yZCwgTWFwcGVkQm9keUhhbmRsZXImJiBtYXBwZWRCb2R5SGFuZGxlciwKICAg
ICBpZiAoIW1fY2FwYWNpdHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd3JpdGVPcGVy
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhpcywgcmVjb3JkLCBX
VEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBtYWtlVW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhp
cywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5wcmVwZW5kKFdURk1vdmUo
d3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFkZCBrZXkgdG8gdGhlIGZpbHRlciBhbHJlYWR5
IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRoZSBwZW5kaW5nIG9wZXJhdGlvbnMgdG9vLgpA
QCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0
eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBmbGFncywgVHJhdmVyCiAgICAgQVNTRVJUKHRy
YXZlcnNlSGFuZGxlcik7CiAgICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIEZ1bmN0aW9uIGNv
cGllcy4KIAotICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25QdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUo
dHJhdmVyc2VIYW5kbGVyKSk7CisgICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IG1ha2VV
bmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRoaXMpLCB0eXBlLCBmbGFncywgV1RG
TW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKICAgICBhdXRvJiB0cmF2ZXJzZU9wZXJhdGlvbiA9ICp0
cmF2ZXJzZU9wZXJhdGlvblB0cjsKICAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQo
V1RGTW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCmluZGV4IDdiODg5MjI5OTUzOWRiMzRjNWIzOTE0ZDNiMjE0Y2U4Yjgx
NDNiOTguLjYzYWQwNDA5ZmRkMjM2ZjZlM2MyY2EzMGU4N2U0YTdjMGEyOTU5MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVz
b3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0b3Jh
Z2U6OlJlY29yZCBTdWJyZXNvdXJjZXNFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29u
c3QKIAogc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291cmNlc0VudHJ5PiBTdWJyZXNvdXJjZXNFbnRy
eTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRy
eSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZXNFbnRy
eT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxTdWJyZXNvdXJj
ZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRlci5z
aXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fc3VicmVzb3VyY2VzKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuY3BwCmluZGV4IGQ4YTA1OTQwZDcxOTdlYjMyMjVhMzZiYzUxM2EyZGI2MTBkYjBjZDguLjcx
MDRkMWY3NGNkNzAxY2JjZWNmYWI1N2QyNGViZmY4ZGFlYmVkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtNzMs
OCArNzMsOCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9
Owogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAg
ICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNN
YXA+KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVx
dWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShy
ZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVz
ID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVybCwgbWFrZVVuaXF1ZTxQcmVmZXRj
aENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOwogICAg
IC8vIExpbWl0IHByZWZldGNoZXMgZm9yIHNhbWUgdXJsIHRvIDEuCiAgICAgaWYgKCFhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwpAQCAtODYsOSArODYsOSBAQCB2b2lkIFBy
ZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlcwogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0
IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCkKIHsKICAg
ICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKKyAgICAgICAgbV9zZXNz
aW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwogICAgIHJl
ZGlyZWN0UmVxdWVzdC5jbGVhclB1cnBvc2UoKTsKLSAgICBtX3Nlc3Npb25QcmVmZXRjaGVzLT5z
ZXQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RG
TW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZWRpcmVjdFJlcXVlc3QpKSk7CisgICAg
bV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmwsIG1ha2VVbmlxdWU8UHJlZmV0Y2hD
YWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVkaXJlY3RS
ZXF1ZXN0KSkpOwogICAgIG1fc2Vzc2lvbkV4cGlyYXRpb25MaXN0LmFwcGVuZChzdGQ6Om1ha2Vf
dHVwbGUocmVxdWVzdFVybCwgV2FsbFRpbWU6Om5vdygpKSk7CiAgICAgaWYgKCFtX2V4cGlyYXRp
b25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNo
b3QoZXhwaXJhdGlvblRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMTcxMGJhZTllNWE4ODUyNmNlZmEzYjM5
YWE3ODhmYWFmMmNmYTBlLi5hMjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBQcmVmZXRjaENhY2hlIHsKICAgICB2b2lk
IGNsZWFyKCk7CiAKICAgICBzdHJ1Y3QgRW50cnkgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0KaW5kZXggMDc3ZjE2ZmE2NTA2NTJjNzg3YTZmMDMxNjA5MDkwMjY4ZWJi
OGFjMC4uY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjViYmM4ZTRhNWU5OGExNWM5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDCiAK
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBOZXR3b3JrUHJvY2Vz
czo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdApAQCAtMjc2LDcgKzI3Niw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVn
cm91bmQoKQogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXImIE5ldHdvcmtQcm9jZXNzOjpuZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyKQotICAgICAgICBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsKKyAgICAgICAgbV9uZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXI+KCk7CiAgICAgcmV0dXJuICptX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggNGE2MWRmMTRkY2ZmMmU2YzNkMGUwOTBlZDNlNTFjYjYw
MzE1ZTY0NC4uNDY4Njg5MzVjNmM2NDJjMjA0ODI4OGZiZTM4NzkwM2MwMTI4MjAyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtODAyLDcgKzgwMiw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNV
UkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRh
CiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4gcHJvdGVjdGVkTmV0d29ya0RhdGFU
YXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3Jr
RGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CiAgICAgICAgIGF1dG8mIGRvd25sb2FkTWFu
YWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAg
ICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihk
b3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Np
b25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgICAgICBh
dXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFn
ZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3
b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoKmRvd25sb2FkKTsKICAgICAg
ICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5h
dGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOwpAQCAtODk3
LDcgKzg5Nyw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0Q1REYXRhQ29ubmVjdGlv
blNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4o
bmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFyeSAqcHJveHlEaWN0aW9uYXJ5KGNvbnN0IFVS
TCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkpCkBAIC0xMzIxLDcgKzEzMjEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrUwogewogICAgIC8vIEZJWE1FOiBVc2UgcHJvdG9jb2wu
CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+IHRhc2sgPSBbbV9zZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpIHdlYlNvY2tldFRhc2tXaXRoUmVxdWVzdDog
cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpXTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRU
YXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJT
b2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vz
c2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tldFRhc2smIHRhc2spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2Nv
YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EuaAppbmRleCA5MzdlMjg3MzJiZTU3NDMyNjE2OWQ4NTRkZjY0YzE1MTNlMmI2OGEzLi5mNmNk
N2E5MjhiOTczODgxNmMzODlhOTU3YzhhOTFkZThjMjViMjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgKQEAg
LTQxLDYgKzQxLDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb247CiBjbGFzcyBOZXR3b3JrU29ja2V0
Q2hhbm5lbDsKIAogY2xhc3MgV2ViU29ja2V0VGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
ZWJTb2NrZXRUYXNrPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIFJldGFpblB0cjxOU1VSTFNl
c3Npb25XZWJTb2NrZXRUYXNrPiYmKTsKICAgICB+V2ViU29ja2V0VGFzaygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJs
LmNwcAppbmRleCBiZTY4MDFmMzBjZGY0OTAwMjU0YzIyNGI5YjExZmJkZjczZmUyZTMxLi41YmUx
NzAyNjZmNDViOGJmNzJlZjU2YjEwMDg3Y2I1OWJiNTZkYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApA
QCAtNDEsNyArNDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZv
cm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNh
dGVGb3JIb3N0KGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBT
dHJpbmcmIGhvc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Nlc3Npb25DdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKaW5kZXggZDQ3MDlhNWU0YWM4YTJmYjZhY2ViNTZjNTdl
YmYwYjVjNzQwZDQ1Ni4uZTE4YTQzOTBiMTg4YTI3ZTkzMThjNTI0MDQ1NWYwNjRjZjZiZDY2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNz
aW9uQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
U2Vzc2lvbkN1cmwuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkN1cmwg
ZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3Vy
bD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25DdXJsKE5ldHdvcmtQcm9jZXNz
JiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgfk5ldHdvcmtTZXNz
aW9uQ3VybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQppbmRleCAy
Mzc0NTI4OGEwNmQwMTE0NTkxOTY4YjUwODZkZWI1ZjQ1YWEwYWM2Li5jOGI4NmM1MTExMzdlMzc0
ZWMwYmUwYzBlYjViM2ZlYjRmMDliZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc0lPUy5tbQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVu
dENvb3JkaW5hdG9yKCkKIHsKICAgICBpZiAoIW1fcGF5bWVudENvb3JkaW5hdG9yKQotICAgICAg
ICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBtYWtl
VW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X3BheW1lbnRDb29yZGluYXRvcjsKIH0KIApAQCAtODIsNyArODIsNyBAQCBjb25zdCBTdHJpbmcm
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VB
cHBsaWNhdGlvbgogCiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBdXRo
b3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBjb29yZGluYXRv
ciwgUEtQYXltZW50UmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI+KGNvb3JkaW5hdG9yLCByZXF1ZXN0
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI+
KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggZDQ2YzUwM2Q4MWU5ODM0ZTVkMmEy
NTY2MGM4NzIzZWFlN2UxNzBlYy4uNGZhY2M4MjEzZWY4NTA1Y2Y5ZDU0OGIyM2M1NjZkZDNkMGJl
MGFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRPdXRwdXRTdHJlYW0gPSBh
ZG9wdEdSZWYoR19PVVRQVVRfU1RSRUFNKG91dHB1dFN0cmVhbS5sZWFrUmVmKCkpKTsKIAogICAg
IGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IG1fc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3du
bG9hZE1hbmFnZXIoKTsKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3du
bG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNz
aW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgYXV0byBkb3dubG9h
ZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxv
YWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkp
OwogICAgIGF1dG8qIGRvd25sb2FkUHRyID0gZG93bmxvYWQuZ2V0KCk7CiAgICAgZG93bmxvYWRN
YW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKG1fcGVuZGluZ0Rvd25sb2FkSUQsIFdU
Rk1vdmUoZG93bmxvYWQpKTsKICAgICBkb3dubG9hZFB0ci0+ZGlkQ3JlYXRlRGVzdGluYXRpb24o
bV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDgzYzJmMjhl
YTVjNzAzNGRhYTdkYjY0NjIxYjQ0NGVkZDVkOTZhZjkuLjdhNzQ4MWY3ZDQyNWYwMjMzN2EwYzEw
YWRmOWQ2NTRmNzBlYzdkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNz
aW9uU291cC5jcHAKaW5kZXggMzBmYzhhNTM1NWQwODQ1MmFjMzYxYjFkY2VhOTdjODRmMzYwN2Zl
ZC4uNDA3MzYxZjAzNmU3OTg5MTc2N2Q4MDdmYmI2M2M5MDQ0YjI2MGE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291
cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIE5ldHdv
cmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3Jr
UHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQog
ICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMpCi0gICAgLCBt
X25ldHdvcmtTZXNzaW9uKHN0ZDo6bWFrZV91bmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nl
c3Npb25JRCkpCisgICAgLCBtX25ldHdvcmtTZXNzaW9uKG1ha2VVbmlxdWU8U291cE5ldHdvcmtT
ZXNzaW9uPihtX3Nlc3Npb25JRCkpCiB7CiAgICAgYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3
b3JrU3RvcmFnZVNlc3Npb24oKTsKICAgICBBU1NFUlQoc3RvcmFnZVNlc3Npb24pOwpAQCAtMTI0
LDcgKzEyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lv
blNvdXA6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvCiAgICAgcmVxdWVzdC51cGRhdGVT
b3VwTWVzc2FnZShzb3VwTWVzc2FnZS5nZXQoKSwgYmxvYlJlZ2lzdHJ5KCkpOwogICAgIGlmIChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndzcyIpKQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0
KHNvdXBNZXNzYWdlLmdldCgpLCAibmV0d29yay1ldmVudCIsIEdfQ0FMTEJBQ0sod2ViU29ja2V0
TWVzc2FnZU5ldHdvcmtFdmVudENhbGxiYWNrKSwgbnVsbHB0cik7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1l
c3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRU
YXNrPihjaGFubmVsLCBzb3VwU2Vzc2lvbigpLCBzb3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAppbmRleCBmOWVmNGJiNTQz
MGJiZjczYjA0YTBlM2JlYzI0NzkyOGQ1OWU3MTZiLi40NjZiMjc4MmJmOTNjNzcwNzBmNzk3ZGQz
NjUyMzRjYzFkZTNmYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE5l
dHdvcmtTZXNzaW9uU291cCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uU291cD4obmV0d29ya1By
b2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vzc2lvblNv
dXAoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
ICAgICB+TmV0d29ya1Nlc3Npb25Tb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bS5jcHAKaW5kZXggNmRkYzgxYTM2ZDg0OWNiYzI4Mzc5M2I2MTcwNjdhMjdlMjlkOTFmMC4uODc0
NTI1ZTM4Y2U3MDRlYmUxZGFhNzEwYmI1NWMwMWNjMDU4ZWFlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9nbGli
L0dVbmlxdWVQdHIuaD4KIAogc3RydWN0IEFzeW5jUmVhZERhdGEgeworICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBBc3luY1JlYWREYXRhKEdSZWZQdHI8R1Rhc2s+JiYg
dGFzaywgdm9pZCogYnVmZmVyLCBnc2l6ZSBjb3VudCkKICAgICAgICAgOiB0YXNrKFdURk1vdmUo
dGFzaykpCiAgICAgICAgICwgYnVmZmVyKGJ1ZmZlcikKQEAgLTM5LDYgKzQwLDcgQEAgc3RydWN0
IEFzeW5jUmVhZERhdGEgewogfTsKIAogc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3Ry
ZWFtUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHVp
bnQ2NF90IGNvbnRlbnRMZW5ndGg7CiAgICAgdWludDY0X3QgYnl0ZXNSZWNlaXZlZDsKICAgICB1
aW50NjRfdCBieXRlc1JlYWQ7CkBAIC05OSw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0s
IHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RyZWFtLT5wcml2LT5wZW5kaW5n
QXN5bmNSZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2sp
LCBidWZmZXIsIGNvdW50KTsKKyAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBt
YWtlVW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291bnQpOwog
fQogCiBzdGF0aWMgZ3NzaXplIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkRmluaXNo
KEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3Iq
KiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJTb2NrZXRUYXNrU291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmgKaW5kZXggZGE4NzYxMTA2NDgxZjk2YTlkNmEwMDAxODRjY2QyNDA3
YjFmMjY1MC4uNWVmN2I0OGU0MjA4MzllZWY4MDA4MTFiMGQ5NzQwZjQ0ZTAxZjBhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3Jr
U29ja2V0Q2hhbm5lbDsKIAogY2xhc3MgV2ViU29ja2V0VGFzayB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hh
bm5lbCYsIFNvdXBTZXNzaW9uKiwgU291cE1lc3NhZ2UqLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KTsKICAgICB+V2ViU29ja2V0VGFzaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaAppbmRleCA4ZjIw
NWNlMDI5NzEzZDhiYTIxM2YxNDNiYTcxYmIxMTQ3NTJkZWY1Li4yMmFiZGVjNjlkYjI0NWE0Y2Y5
ODNmMjQ3YjM4ZjcyZDkwMGE2ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaApAQCAtNDgsNiAr
NDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtSVENQcm92aWRlcjsKIAog
Y2xhc3MgTGliV2ViUlRDU29ja2V0Q2xpZW50IGZpbmFsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19z
bG90czw+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFR5cGUgeyBVRFAsIFNlcnZlclRDUCwgQ2xpZW50VENQLCBTZXJ2ZXJDb25uZWN0aW9u
VENQIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZTc4NjU2OGZmNTA1YTdiODcxNzg3
MGRmNTdmYTU3ZDE1ZjVkNzc2My4uOTI2NjY4YzM4ZmZmNzA4YWU1MDJmNThmZDQxNTI4ODAzZWM1
NTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgdm9pZCBOZXR3
b3JrTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTUROU05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRl
bnRpZmllciBkb2N1bWUKIH0KIAogc3RydWN0IFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0IHsK
KyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUGVuZGluZ1JlZ2lzdHJh
dGlvblJlcXVlc3QoUmVmPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgdWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
ICAgICAgICAgOiBjb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgICAgICwgcmVx
dWVzdElkZW50aWZpZXIocmVxdWVzdElkZW50aWZpZXIpCkBAIC0xMzUsNyArMTM2LDcgQEAgdm9p
ZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBQQUw6OlNlc3MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
cGVuZGluZ1JlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1
ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmll
ciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0g
bWFrZVVuaXF1ZTxQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdD4obWFrZVJlZihtX2Nvbm5lY3Rp
b24uY29ubmVjdGlvbigpKSwgcmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHNlc3Np
b25JRCk7CiAgICAgYXV0byogcmVjb3JkID0gJnBlbmRpbmdSZXF1ZXN0LT5yZWNvcmQ7CiAgICAg
YXV0byBlcnJvciA9IEROU1NlcnZpY2VSZWdpc3RlclJlY29yZChzZXJ2aWNlLAogICAgICAgICBy
ZWNvcmQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKaW5kZXggMzUzZWFjOGNlMTFiNjkwNmVmYWRkMmZkMjcx
OGI5N2FiNTJjZGE0ZC4uYWI3MDZkYzJlOTM0YTlhN2VmOTkyNjg5Nzk3NGJkYzc1NGVhM2RmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q01vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENNb25pdG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIE5ldHdvcmtSVENNb25p
dG9yOjpzdGFydFVwZGF0aW5nKCkKIHsKICAgICBtX2lzU3RhcnRlZCA9IHRydWU7CiAgICAgbV9y
dGNQcm92aWRlci5jYWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzXSgpIHsKLSAgICAgICAgbV9t
YW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7Cisg
ICAgICAgIG1fbWFuYWdlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6
QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKICAgICAgICAgbV9tYW5hZ2VyLT5TaWduYWxOZXR3b3Jr
c0NoYW5nZWQuY29ubmVjdCh0aGlzLCAmTmV0d29ya1JUQ01vbml0b3I6Om9uTmV0d29ya3NDaGFu
Z2VkKTsKICAgICAgICAgbV9tYW5hZ2VyLT5TdGFydFVwZGF0aW5nKCk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcAppbmRleCBhNWFjNTcyMTM3OWRiM2QxYjI1ODc1NTg2MTAzMGJiYTRkYjll
YjhlLi4xNWQ0NGQwYWQ5ZGIwZjNiMDU5OWUxYTMzZWZjZmRiODk2MWE2NWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgTmV0d29ya1JUQ1Byb3ZpZGVyOjpOZXR3b3Jr
UlRDUHJvdmlkZXIoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24KICAg
ICA6IG1fY29ubmVjdGlvbigmY29ubmVjdGlvbikKICAgICAsIG1fcnRjTW9uaXRvcigqdGhpcykK
ICAgICAsIG1fcnRjTmV0d29ya1RocmVhZChjcmVhdGVUaHJlYWQoKSkKLSAgICAsIG1fcGFja2V0
U29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5
PihtX3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkpKQorICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5
KG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNQYWNrZXRTb2Nr
ZXRGYWN0b3J5PihtX3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkpKQogewogI2lmIGRlZmluZWQoTkRF
QlVHKQogICAgIHJ0Yzo6TG9nTWVzc2FnZTo6TG9nVG9EZWJ1ZyhydGM6OkxTX05PTkUpOwpAQCAt
MTA0LDcgKzEwNCw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQodWlu
dDY0X3QgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6CiAgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2Vf
dW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUo
c29ja2V0KSwgdHlwZSkpOworICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPExp
YldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwg
dHlwZSkpOwogfQogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlVURQU29ja2V0KHVp
bnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFJUQ05ldHdvcms6OlNvY2tldEFkZHJlc3MmIGFkZHJl
c3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCkBAIC0xNTMsNyArMTUzLDcg
QEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdUQ1BDb25uZWN0aW9uKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0MKIHsKICAgICBjYWxsT25SVENOZXR3b3JrVGhyZWFk
KFt0aGlzLCBpZGVudGlmaWVyLCBuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllcl0oKSB7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFja2V0U29ja2V0PiBzb2NrZXQgPSBt
X3BlbmRpbmdJbmNvbWluZ1NvY2tldHMudGFrZShuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmll
cik7Ci0gICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGli
V2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQKSk7CisgICAgICAg
IGFkZFNvY2tldChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4o
aWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50
OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMzgzODJiMDlkNGZiM2JlMjY0Zjg5
Yjc3ODQxYTQxZDdjMDhjYWMwNS4uYzVlZjZkOTlhNTYwZGQxNDg4ZjE4NDk5NWFlOGE3YjE2ZDlh
ZDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTM0
Myw3ICszNDMsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyTWVzc2FnZShXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+
KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVw
bHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHki
LCBzeW5jUmVxdWVzdElEKTsKIAogICAgIC8vIEhhbmQgb2ZmIGJvdGggdGhlIGRlY29kZXIgYW5k
IGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVzc2FnZSByZWNlaXZlci4KICAgICB3b3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKCp0aGlzLCBkZWNvZGVyLCBy
ZXBseUVuY29kZXIpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFya0N1
cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkKIAogc3RkOjp1bmlxdWVfcHRyPEVu
Y29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRv
IGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUs
IG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5p
cXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlv
bklEKTsKICAgICBlbmNvZGVyLT5zZXRJc1N5bmNNZXNzYWdlKHRydWUpOwogCiAgICAgLy8gRW5j
b2RlIHRoZSBzeW5jIHJlcXVlc3QgSUQuCkBAIC03NTYsNyArNzU2LDcgQEAgdm9pZCBDb25uZWN0
aW9uOjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZygpCiAgICAgaWYgKG1faW5jb21p
bmdNZXNzYWdlc1Rocm90dGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbmNvbWluZ01l
c3NhZ2VzVGhyb3R0bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRo
aXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMpOworICAgIG1faW5jb21p
bmdNZXNzYWdlc1Rocm90dGxlciA9IG1ha2VVbmlxdWU8TWVzc2FnZXNUaHJvdHRsZXI+KCp0aGlz
LCAmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VzKTsKIH0KIAogdm9pZCBDb25u
ZWN0aW9uOjpwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAg
LTg0Myw3ICs4NDMsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVj
b2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlF
bmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVw
bHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8
RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09ICJXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyIpIHsKICAgICAg
ICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDIwZjVlYzViMjAyYmVjMmJk
ZjU4ZjAyMGViZGVlZjgzMTQ5MzExYmYuLmFkYzRhYWQ5ODgxOGZhMDZhZmM2YmU4OTYxNDVkNTYz
MTU4MzJkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTQz
Myw3ICs0MzMsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPgogewogICAgIENPTVBJTEVfQVNT
RVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2Rl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNv
ZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbmRN
ZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKQEAgLTQ0OCw3ICs0NDgsNyBA
QCB2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNv
bXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5
bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRp
b25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZl
ck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5l
cklEID0gbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlz
dGVuZXJJRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCBjY2EwNzM5MGFkZWM0NDZkZTc0
NjZjZjhlMTAxMjNjMjc5Mzg1MzUyLi5mZDUxNzAxNzEyYjA2MjlkNDcyNTJkMDQwODk2YzY0ZmNi
Y2JiMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtMTIzLDcg
KzEyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBEZWNvZGVyOjp1bndyYXBGb3JUZXN0
aW5nKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3cmFwcGVkTWVz
c2FnZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RGVjb2Rlcj4od3JhcHBlZE1lc3NhZ2UuZGF0YSgpLCB3cmFwcGVkTWVzc2FnZS5zaXpl
KCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwg
bnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogfQogCiBzdGF0aWMgaW5saW5lIGNvbnN0
IHVpbnQ4X3QqIHJvdW5kVXBUb0FsaWdubWVudChjb25zdCB1aW50OF90KiBwdHIsIHVuc2lnbmVk
IGFsaWdubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApp
bmRleCA4NTQ1MmNkYTdlMDQ1ZTQ0NTVlMDdiOTNiYWZjYTM1YjEwMjAwMTFlLi5hNzQ5YWFiODcw
MDU0Y2ViNjkwZTVmMTRmNDA3NTYzZmZjZDBmOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBoYW5kbGVNZXNz
YWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2Jq
ZWN0LCBNRgogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhh
bmRsZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBjb25uZWN0aW9uID0gbWFrZVJlZihj
b25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVz
c2FnZVJlcGx5TmFtZSgpLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxF
bmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKICAg
ICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVu
Y29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4uKTsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IDNkNmYzNDI4OTJiYzg4Mzkw
Njc4ZThjMzY0NjM5MTEwZGU0ZjU3MjYuLjc3MTQ0OGE0NGQwODg2ZGQwMWJiMGMyZGU2NGRjOWE0
Mjg2MjdhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgK
QEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVzc2FnZVNlbmRlciB7CiAgICAgewogICAgICAgICBz
dGF0aWNfYXNzZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAg
YXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUo
KSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlv
bklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nv
bm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5l
Y3Rpb25Db2NvYS5tbQppbmRleCAzNzAyYWNjN2RmNTFiZDg0NmI5M2FmNjRiZjA3MGE0YzEwMDM5
MTlmLi44N2RkMjhmODA4Njc4MmNlMmEzZGY3OTBmNGFjMGU2ZDc0OWRhYjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBA
IC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV94cGNDb25uZWN0aW9uKHhwY0Nv
bm5lY3Rpb24pCiAgICAgICAgICwgbV93YXRjaGRvZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjp3YXRjaGRvZ1RpbWVyRmlyZWQpCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgLCBtX2Fzc2VydGlvbihzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRf
cGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRv
ZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCisgICAgICAgICwgbV9h
c3NlcnRpb24obWFrZVVuaXF1ZTxXZWJLaXQ6OlByb2Nlc3NBbmRVSUFzc2VydGlvbj4oeHBjX2Nv
bm5lY3Rpb25fZ2V0X3BpZChtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpLCAiQ29ubmVjdGlvblRlcm1p
bmF0aW9uV2F0Y2hkb2ciX3MsIFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpKQog
I2VuZGlmCiAgICAgewogICAgICAgICBtX3dhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVy
dmFsKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIENvbm5lY3Rpb246Om9wZW4oKQogICAgICAg
ICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGlu
aXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFpbnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2Vy
dmVyIHRvIHVzZS4KLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNv
ZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CisgICAgICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIs
IDApOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUoTWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFD
SF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKIAogICAgICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgp
OwpAQCAtNDEyLDcgKzQxMiw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3Jl
YXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWlu
dDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlciArIDEpOwogICAg
ICAgICBzaXplX3QgYm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIHNpemVvZihtYWNoX21z
Z19oZWFkZXJfdCk7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4o
Ym9keSwgYm9keVNpemUsIG51bGxwdHIsIFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVj
dG9yPEF0dGFjaG1lbnQ+IHsgfSk7CiAgICAgfQogCiAgICAgYm9vbCBtZXNzYWdlQm9keUlzT09M
ID0gaGVhZGVyLT5tc2doX2lkID09IG91dE9mTGluZUJvZHlNZXNzYWdlSUQ7CkBAIC00NTAsNyAr
NDUwLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVj
b2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBtZXNzYWdl
Qm9keSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkZXNjcmlwdG9yLT5vdXRfb2ZfbGluZS5hZGRy
ZXNzKTsKICAgICAgICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6ZSA9IGRlc2NyaXB0b3ItPm91dF9v
Zl9saW5lLnNpemU7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4o
bWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgbGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFtdKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGxlbmd0aCkgewogICAgICAgICAgICAgdm1fZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBy
ZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oYnVmZmVyKSwgbGVuZ3RoKTsKICAgICAgICAg
fSwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAgIH0KQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNn
X2hlYWRlcl90KiBoZWFkZXIpCiAgICAgdWludDhfdCogbWVzc2FnZUJvZHkgPSBkZXNjcmlwdG9y
RGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUgLSAo
ZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihoZWFkZXIpKTsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdl
Qm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBX
VEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIC8vIFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNo
b3VsZCBhbHdheXMgaW5jbHVkZSB0aGUgbWF4aW11bSB0cmFpbGVyIHNpemUuCkBAIC01MjYsNyAr
NTI2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAg
ICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGRlY29kZXItPnNldEltcG9y
dGFuY2VBc3NlcnRpb24oc3RkOjptYWtlX3VuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFk
ZXIpKTsKKyAgICBkZWNvZGVyLT5zZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKG1ha2VVbmlxdWU8SW1w
b3J0YW5jZUFzc2VydGlvbj4oaGVhZGVyKSk7CiAjZW5kaWYKIAogICAgIGlmIChkZWNvZGVyLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9
PSAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDYzYjZiZTcyNzFlNDQ1ODgzOTUw
NWFhOTE1ZTM4NzNmODUxNGRlZGQuLjc3YWY5YjI4NTg0NTI2YmI3MGM3ZmZjOGUzMjU2YTNiYWEx
M2EyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNz
TWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzQm9keU91dE9mTGluZSgpKQogICAgICAg
ICBtZXNzYWdlQm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VCb2R5
LT5kYXRhKCkpOwogCi0gICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVy
PihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShh
dHRhY2htZW50cykpOworICAgIGF1dG8gZGVjb2RlciA9IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVz
c2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNo
bWVudHMpKTsKIAogICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7
CiAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdl
KFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxPQ0spIHsKICNpZiBV
U0UoR0xJQikKLSAgICAgICAgICAgIG1fcGVuZGluZ091dHB1dE1lc3NhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1lc3NhZ2UpKTsKKyAgICAgICAgICAg
IG1fcGVuZGluZ091dHB1dE1lc3NhZ2UgPSBtYWtlVW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3Zl
KG91dHB1dE1lc3NhZ2UpKTsKICAgICAgICAgICAgIG1fd3JpdGVTb2NrZXRNb25pdG9yLnN0YXJ0
KG1fc29ja2V0LmdldCgpLCBHX0lPX09VVCwgbV9jb25uZWN0aW9uUXVldWUtPnJ1bkxvb3AoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKEdJT0NvbmRpdGlvbiBjb25k
aXRpb24pIC0+IGdib29sZWFuIHsKICAgICAgICAgICAgICAgICBpZiAoY29uZGl0aW9uICYgR19J
T19PVVQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ091dHB1dE1lc3Nh
Z2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4u
Y3BwCmluZGV4IDY0MGY0NTI5OWUzYjI2NmUwMjY5Y2NjY2M5NDUyYjNiYTU3OWVmYjEuLjVhZGZk
ODJiZWNhNDZkYjAyNDQ3ZThiY2I2ZDM4NGMyYzAxNTZhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhhbmRsZXIoKQogICAgICAgICBpZiAoIW1fcmVh
ZEJ1ZmZlci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtZXNzYWdlLCBs
ZXQncyBkaXNwYXRjaCBpdC4KICAgICAgICAgICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2ht
ZW50cygwKTsKLSAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVj
b2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwg
V1RGTW92ZShhdHRhY2htZW50cykpOworICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gbWFrZVVu
aXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBu
dWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAgICAgICAgICBwcm9jZXNzSW5jb21p
bmdNZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01v
ZHVsZS5oCmluZGV4IGRkMmI2NmE3Y2ExOTU5MWI2ZWU2N2I4ZjI4NGZkMjU0YTM4Mjc4NWQuLjU2
ODM3MjEzZGZiZWFlYjRkNTllOTNjM2Q0OWY2YzdhYzJmNTM0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9N
b2R1bGUuaApAQCAtNDQsNiArNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR01vZHVsZSBHTW9kdWxl
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTW9kdWxlKTsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBNb2R1bGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCmluZGV4IDgyMzJkYjRl
YjU2ZWFjYjZmOGNlODU1NjY0YjhiNzgyYWI2NTBhOTguLjdhZWU0N2VhYjk1ZjU4YTZiNDE3ODVj
MGY0ZmY3ZjAyYjA0Y2Y0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFj
L0xheWVySG9zdGluZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
TGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0Nv
bnRleHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRSaWdodCYgc2VydmVyUG9ydCkKIHsK
LSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9z
dGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1
ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0g
QHsKICAgICAgICAga0NBQ29udGV4dFBvcnROdW1iZXIgOiBAKHNlcnZlclBvcnQuc2VuZFJpZ2h0
KCkpLApAQCAtNTIsNyArNTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYQogI2lmIEhBVkUo
T1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3Rp
bmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQ
cm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRpb25zJiBvcHRpb25zKQogewotICAg
IGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5n
Q29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExh
eWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhv
c3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQpAQCAtODIsNyArODIsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4
dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aQogI2lmIFBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVl
X3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JF
eHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKCkKIHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0Nv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0
byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0Pigp
OwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9z
dGluZ01vZGU6Ok91dE9mUHJvY2VzczsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRl
eHQgPSBbQ0FDb250ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlv
bklEKCkgb3B0aW9uczpAeyBrQ0FDb250ZXh0Q0lGaWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9
XTsKICAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCA5N2UyZGYzNTNi
MzY4MjM5MjlhMzFhZTk1N2ExZGRjZGMyMWMzN2Q2Li5iOThjYTk0YmM5ZWZjMjNiMmVkODE4YTVi
Nzg0MzM3MjMxN2U5YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC00OSw3ICs0OSw4IEBAIGNsYXNzIFNoYXJlYWJs
ZUJpdG1hcDsKIGNsYXNzIFdlYlByb2Nlc3NDb25uZWN0aW9uOwogc3RydWN0IFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczsKIAotY2xhc3MgUGx1Z2luQ29udHJvbGxlclByb3h5IDogUGx1Z2luQ29u
dHJvbGxlciB7CitjbGFzcyBQbHVnaW5Db250cm9sbGVyUHJveHkgOiBwdWJsaWMgUGx1Z2luQ29u
dHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUGx1Z2luQ29udHJvbGxlclByb3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
MzY2Yjk4M2NjMGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNS4uY2U4MjY3ZDJlZTc4Y2Fj
YjNkZGEwYTliMzc1YmZhYWZjNjg2ZWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAg
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW4KIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3Jl
YXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlv
blBhcmFtZXRlcnMsIGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMy
X3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpCiB7Ci0gICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJv
eHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRp
b25QYXJhbWV0ZXJzKTsKKyAgICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1ha2VVbmlx
dWU8UGx1Z2luQ29udHJvbGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOwogCiAg
ICAgUGx1Z2luQ29udHJvbGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVyUHJveHlQdHIgPSBwbHVn
aW5Db250cm9sbGVyUHJveHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElVUkwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRl
eCBiYmQ0MjNiY2Y1NzE1ZTRhZDcwYmY1MmRlZjhjMmMzMGM0MWJmMGY2Li4zZTYxYmJkMDAwZTFm
NGNkYjZjMmEzNmNhNGY3NWU5MDRmODM1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJVVJMLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6
VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJh
c2VVUkwtPnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9
IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwg
cmVsYXRpdmVVUkwpOworICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gbWFrZVVuaXF1ZTxXVEY6
OlVSTD4oKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CiAgICAgICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBhYnNvbHV0ZVVSTFN0cmluZyA9IGFic29sdXRlVVJMLT5zdHJp
bmcoKTsKIAogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFi
c29sdXRlVVJMKSwgYWJzb2x1dGVVUkxTdHJpbmcpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFz
cyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAg
ICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3Bh
cnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5n
KTsKKyAgICAgICAgbV9wYXJzZWRVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgp
LCBtX3N0cmluZyk7CiAgICAgfQogCiAgICAgV1RGOjpTdHJpbmcgbV9zdHJpbmc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0
aW9uLm1tCmluZGV4IDI1OTI4NDdlMzQxYTNiNmY3Mjg3NTRiZDc4OGE2NjUzZGQyMjE1YjAuLmQz
ZmY2MjFlYzBmNGExMGQ3NTY0ODdjYzIxNmY0OTVjZTg2ZDcyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1t
CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgUmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlT2JqZWN0SW52b2NhdGlvCiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYmxvY2tTaWduYXR1cmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIHJlc3VsdC5tX3JlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbHlJ
bmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CisgICAgICAgIHJlc3VsdC5t
X3JlcGx5SW5mbyA9IG1ha2VVbmlxdWU8UmVwbHlJbmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2Nr
U2lnbmF0dXJlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
aW5kZXggNjVkYTllZmYwMWI0M2VhNTcxMDgwMmY2YzQ2YTZkMDIwMjY1NjkzZS4uNDg5OTc2Mjkz
MmI3YWY2OTIyMWQwNTBhZjY3NDU4MzZmYzM4N2IwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAt
MTA5LDcgKzEwOSw3IEBAIC0gKGlkKV9pbml0V2l0aFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSYp
cGFnZQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVn
aXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBh
Z2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xMTksNyArMTE5LDcgQEAgLSAoaWQpX2lu
aXRXaXRoV2ViUGFnZVByb3h5OihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZQogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90
ZU9iamVjdFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJl
Z2lzdHJ5PihzZWxmLCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5p
cXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9CkBAIC0xNjAsNyArMTYwLDcgQEAgLSAodm9pZClfc2VuZEludm9jYXRpb246
KE5TSW52b2NhdGlvbiAqKWludm9jYXRpb24gaW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnQK
ICAgICAgICAgaWYgKHN0cmNtcChbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNU
eXBlczpyZXBseUJsb2NrU2lnbmF0dXJlXS5tZXRob2RSZXR1cm5UeXBlLCAidiIpKQogICAgICAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIlJldHVybiB2YWx1ZSBvZiBibG9jayBhcmd1bWVudCBtdXN0IGJlICd2b2lkJy4gKCVzKSIs
IHNlbF9nZXROYW1lKGludm9jYXRpb24uc2VsZWN0b3IpXTsKIAotICAgICAgICByZXBseUluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJ
bmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKKyAg
ICAgICAgcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b246OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25h
dHVyZSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0
IHRyeSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5j
cHAKaW5kZXggN2VkMTFlNmMxNzFlMjBiZTFlOWVhZGIzMDdlNzFmYzQ4YmZkZTg0OS4uZmFlZmVk
MmRjYzgzOGVlOTU3MzkwNjVkYWM2M2YxMzU2M2YwZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC05
NCw3ICs5NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVt
Q3JlYXRlKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmCiB7CiAgICAgV2ViS2l0Q29udGV4
dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgTlVMTCkpOwogCi0gICAgaXRlbS0+cHJpdi0+
bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1E
YXRhKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4oaXRlbURhdGEpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0
ZW1EYXRhPiYgc3ViTWVudSA9IGl0ZW1EYXRhLnN1Ym1lbnUoKTsKICAgICBpZiAoIXN1Yk1lbnUu
aXNFbXB0eSgpKQogICAgICAgICB3ZWJraXRDb250ZXh0TWVudUl0ZW1TZXRTdWJNZW51KGl0ZW0s
IGFkb3B0R1JlZih3ZWJraXRDb250ZXh0TWVudUNyZWF0ZShzdWJNZW51KSkpOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X25ldyhHdGtBY3Rpb24qIGFjdGlvbikKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChHVEtfSVNf
QUNUSU9OKGFjdGlvbiksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBp
dGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9D
T05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOworICAgIGl0
ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihh
Y3Rpb24pOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlv
bihHQWN0aW9uKiBhY3Rpb24KICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghdGFyZ2V0IHx8IGdf
dmFyaWFudF9pc19vZl90eXBlKHRhcmdldCwgZ19hY3Rpb25fZ2V0X3BhcmFtZXRlcl90eXBlKGFj
dGlvbikpLCBudWxscHRyKTsKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdF
QktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9N
RU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4
KGxhYmVsKSwgdGFyZ2V0KTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8
V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwg
dGFyZ2V0KTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMTk0LDcgKzE5NCw3IEBAIFdlYktp
dENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2Nr
X2FjdGlvbihXZWJLaXRDb250CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBX
RUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRf
TUVOVV9JVEVNLCBudWxscHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Vi
a2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9u
VHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0
aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwo
YWN0aW9uKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRl
eHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFn
KGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CiAKICAg
ICByZXR1cm4gaXRlbTsKIH0KQEAgLTIxNiw3ICsyMTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0
ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9s
YWJlbAogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRf
TUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVs
bHB0cikpOwogICAgIENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51
QWN0aW9uSXNDaGVja2FibGUoYWN0aW9uKSA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25U
eXBlOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250
ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRh
ZyhhY3Rpb24pLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVu
dUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENv
bnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFi
ZWwpKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMjM5LDcgKzIzOSw3IEBAIFdlYktpdENv
bnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUo
Y29uc3QgZ2NoYXIqIGxhCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgV2ViS2l0Q29u
dGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnBy
aXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihB
Y3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJv
bVVURjgobGFiZWwpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2Vi
Q29udGV4dE1lbnVJdGVtR2xpYj4oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxp
Y2F0aW9uVGFnLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CiAgICAgaXRlbS0+cHJpdi0+c3Vi
TWVudSA9IHN1Ym1lbnU7CiAgICAgd2Via2l0Q29udGV4dE1lbnVTZXRQYXJlbnRJdGVtKHN1Ym1l
bnUsIGl0ZW0pOwogCkBAIC0yNTYsNyArMjU2LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3
ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEK
IFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBh
cmF0b3Iodm9pZCkKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRf
Q09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9J
VEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRl
bVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtl
VW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51
SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCmluZGV4IDVlZDE0M2E5OTg1OTA0OTZjMzM3NmE1Njk4ODExNTNhNmEwMmIy
OGMuLmYzM2NhYjMwNWZlZTEyNzRmYWE3YjIxODM4ZTliYjdlZjc2YmJmMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eQogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4KICAgICAsIHB1YmxpYyBQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCB+
Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmlu
ZGV4IDdhZDMzMzE0NTM5MTg4ODlmZDNiOTg5NjM4NmE4YmVkMWY1MTlhMTQuLjM5MTRhNGMyMDE0
YTlhNTRhNjM0ODhhNGU3NDM4MTljNmE4ZGIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0KQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAog
ICAgICAgICBBU1NFUlQodmlld0NvbnRyb2xsZXIpOwogCi0gICAgICAgIHBheW1lbnRDb29yZGlu
YXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXltZW50Q29vcmRpbmF0b3JQcm94
eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVyKTsKKyAgICAgICAgcGF5bWVu
dENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IG1ha2VVbmlxdWU8
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29yZGluYXRvclBy
b3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmlld0NvbnRyb2xsZXIpOwogCiAgICAgICAgIEFT
U0VSVCghcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cpOwogICAgICAgICBw
YXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyA9IFtOU1dpbmRvdyB3aW5kb3dX
aXRoQ29udGVudFZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgKaW5kZXggODZlNzQ0YzEwOGRmNGNiY2Y1ZDA0NzYwOWFjZjk2YzY4MjNkNmIxNi4uNGY4
MzcwMjRlZTVmMzRmZmEwZTY5YmFmN2IzYmZjODgxYTUyODAyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgKQEAgLTU1LDYgKzU1LDcgQEAgZW51bSBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uIDogdWludDhfdDsKIHVzaW5nIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+OwogCiBjbGFzcyBBdXRoZW50aWNhdGlv
bk1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdXRoZW50aWNhdGlvbk1hbmFn
ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShBdXRoZW50aWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dGhl
bnRpY2F0aW9uTWFuYWdlcihOZXR3b3JrUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IDU2YTc4M2EwYjIz
YjI2YTIwYzViOGZhNGE1OWYxNTdhNGMwMzdiYjcuLjJkNWQxYWZjMDgyN2E0MWEwYmQ4M2JiYWE4
MGY3OGY2MTRmNWJkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1Nh
bmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94RXh0
ZW5zaW9uSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGUgdHlwZSwgT3B0aW9uYWw8cGlkX3Q+IHBpZCA9IFdURjo6bnVsbG9wdCkKICAgICB7CkBAIC0x
NjAsNyArMTYxLDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPEhhbmRsZT4KICAgICAgICAgcmV0dXJuIHt7
IH19OwogCiAgICAgSGFuZGxlIGhhbmRsZTsKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUo
KSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IG1ha2VVbmlxdWU8U2FuZGJveEV4
dGVuc2lvbkltcGw+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2Uu
ZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRs
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCAx
OGRjMmZiOGVkMTNkMTUzNDEyZWEzMGUyOTExMTc4ZWFjZWZjNWFlLi43MDQzMGY0NDMxMmM4YTU2
MmNlMTVmYzczMmY2OWQzODc2ZmU5YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgVGV4dHVyZU1hcHBlckxheWVyJiB0ZXht
YXBMYXllcihOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyJiBjb21wb3NpdGlvbkxheWVyKQogewog
ICAgIGF1dG8mIGNvbXBvc2l0aW9uU3RhdGUgPSBjb21wb3NpdGlvbkxheWVySW1wbChjb21wb3Np
dGlvbkxheWVyKS5jb21wb3NpdGlvblN0YXRlKCk7CiAgICAgaWYgKCFjb21wb3NpdGlvblN0YXRl
LmxheWVyKSB7Ci0gICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKKyAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXll
ciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOwogICAgICAgICBjb21wb3NpdGlv
blN0YXRlLmxheWVyLT5zZXRJRChjb21wb3NpdGlvbkxheWVyLmlkKCkpOwogICAgIH0KICAgICBy
ZXR1cm4gKmNvbXBvc2l0aW9uU3RhdGUubGF5ZXI7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RMYXllcigpCiAgICAgaWYgKG1fcm9v
dExheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Jvb3RMYXllciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOworICAgIG1fcm9vdExheWVyID0gbWFrZVVuaXF1
ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CiAgICAgbV9yb290TGF5ZXItPnNldE1hc2tzVG9Cb3Vu
ZHMoZmFsc2UpOwogICAgIG1fcm9vdExheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwogICAg
IG1fcm9vdExheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoMCwgMCwgMCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRv
ci5jcHAKaW5kZXggY2QzZTU3YzZiY2I5ZDhkYzFmZjk5Y2FkNTljNGUxM2ZmNjYwM2E2Yi4uYmNi
MjM1OTc1YjEzM2QyZTI3Njc2ZDI4M2ZlODkxMzgxYTBkNWQxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIFJlZjxUaHJlYWRlZENvbXBvc2l0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6
Y3JlYXRlKENsaWVudCYgY2xpZW50LCBUaHJlYWRlZERpc3BsCiBUaHJlYWRlZENvbXBvc2l0b3I6
OlRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbGF5UmVmcmVz
aE1vbml0b3I6OkNsaWVudCYgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LCBQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2Nh
bGVGYWN0b3IsIFRleHR1cmVNYXBwZXI6OlBhaW50RmxhZ3MgcGFpbnRGbGFncykKICAgICA6IG1f
Y2xpZW50KGNsaWVudCkKICAgICAsIG1fcGFpbnRGbGFncyhwYWludEZsYWdzKQotICAgICwgbV9j
b21wb3NpdGluZ1J1bkxvb3Aoc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+KFt0
aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkKKyAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29w
KG1ha2VVbmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUo
KTsgfSkpCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikK
ICAgICAsIG1fZGlzcGxheVJlZnJlc2hNb25pdG9yKFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25p
dG9yOjpjcmVhdGUoZGlzcGxheUlELCBkaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQpKQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyLmgKaW5kZXggMWEwNTQ3NTA3ZWMxYzFhODEyNDcyYmI3ZWJkOWZhMGQ0YWQx
M2E0OC4uMDdlOGJiYzliNWM5YzNjNmM5ZDhkNmMzYjk0NWU1MzkzMjdiODc1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2
ZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBOUFZhcmlhbnREYXRhOwogY2xhc3MgUGx1Z2lu
OwogCiBjbGFzcyBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTlBPYmplY3RNZXNzYWdlUmVjZWl2
ZXIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05QUmVtb3RlT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBS
ZW1vdGVPYmplY3RNYXAuY3BwCmluZGV4IDYxZTFmOTQwMjUyMzg1ZGI4MDVlYzEyMmRmZjFjOWU0
ZjFiNzI1NjMuLmQ0YjUyNGM4MjllYzY2NzIxZGYxYTcwZDJkNTEzYWU0ZWIzZjNkMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3Bw
CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTlBSZW1vdGVPYmplY3RNYXA6Om5wT2JqZWN0UHJveHlE
ZXN0cm95ZWQoTlBPYmplY3QqIG5wT2JqZWN0KQogdWludDY0X3QgTlBSZW1vdGVPYmplY3RNYXA6
OnJlZ2lzdGVyTlBPYmplY3QoTlBPYmplY3QqIG5wT2JqZWN0LCBQbHVnaW4qIHBsdWdpbikKIHsK
ICAgICB1aW50NjRfdCBucE9iamVjdElEID0gZ2VuZXJhdGVOUE9iamVjdElEKCk7Ci0gICAgbV9y
ZWdpc3RlcmVkTlBPYmplY3RzLnNldChucE9iamVjdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyPih0aGlzLCBwbHVnaW4sIG5wT2JqZWN0SUQsIG5wT2JqZWN0KS5y
ZWxlYXNlKCkpOworICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQobnBPYmplY3RJRCwgbWFr
ZVVuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcj4odGhpcywgcGx1Z2luLCBucE9iamVjdElE
LCBucE9iamVjdCkucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiBucE9iamVjdElEOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbk1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCA3YjAyYjVlMTJmMzJjNzJkMzhmNTIwNDViYjZk
NmEyM2I2MmFlMmUxLi4yNjFkN2E4OTY5MzA2YTg5MjVjNGFiMzZlNDc5NDdiMzk2YzEyNTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyBi
b29sIG1vZHVsZU1peGVzR3RrU3ltYm9scyhNb2R1bGUqIG1vZHVsZSkKIAogYm9vbCBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiB7Ci0gICAgbV9tb2R1bGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1vZHVsZT4obV9wbHVnaW5QYXRoKTsKKyAgICBtX21vZHVsZSA9IG1ha2VVbmlxdWU8TW9k
dWxlPihtX3BsdWdpblBhdGgpOwogICAgIGlmICghbV9tb2R1bGUtPmxvYWQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IGVh
MmJlOTMwOGNiYmU2ZGQ3ZWI4Y2YyYzU4OGM4ZmY2MTllYTk5M2MuLjk1NTEzZjQ3OTgyZmQ2N2Vl
NWY5OGRkNzk5NmM4NTk4ZjFmNDYzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIEVuY29kZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gTGF5ZXJDaGFuZ2UgewogICAgICAgICBOYW1l
Q2hhbmdlZCAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxLApAQCAtOTQsNiArOTUsNyBA
QCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiB7CiAgICAgfTsKIAogICAgIHN0cnVj
dCBMYXllckNyZWF0aW9uUHJvcGVydGllcyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMoKTsKIAogICAgICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKQEAgLTEwOSw2ICsxMTEsNyBAQCBj
bGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBM
YXllclByb3BlcnRpZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIExheWVyUHJvcGVydGllcygpOwogICAgICAgICBMYXllclByb3BlcnRpZXMoY29u
c3QgTGF5ZXJQcm9wZXJ0aWVzJiBvdGhlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5tbQppbmRleCAxZjJkZTRkMDM3ZWEzZTgzMDI4N2FiOThjYjJhOGYyMWM0ZWNlYTJlLi4w
ZDIyN2ZmYzFkOWM1NTU2YWFkOTJlN2VlMTU3NjVlMTZiMzQ0MmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMoY29uc3QgTGF5
ZXJQcm9wZXJ0aQogICAgIC8vIEZJWE1FOiBMYXllclByb3BlcnRpZXMgc2hvdWxkbid0IGJlIGNv
cHlhYmxlOyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lIHNob3VsZCBjb3B5IHRoZSByZWxl
dmFudCBwcm9wZXJ0aWVzLgogCiAgICAgaWYgKG90aGVyLnRyYW5zZm9ybSkKLSAgICAgICAgdHJh
bnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
Km90aGVyLnRyYW5zZm9ybSk7CisgICAgICAgIHRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOwogCiAgICAgaWYgKG90
aGVyLnN1YmxheWVyVHJhbnNmb3JtKQotICAgICAgICBzdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXll
clRyYW5zZm9ybSk7CisgICAgICAgIHN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKIAog
ICAgIGlmIChvdGhlci5maWx0ZXJzKQotICAgICAgICBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7CisgICAgICAgIGZp
bHRlcnMgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0
ZXJzKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0
aWVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtMzU0LDcgKzM1NCw3
IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0
cmFuc2Zvcm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAg
cmVzdWx0LnRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg+KHRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC50cmFuc2Zvcm0gPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOwogICAgIH0KIAog
ICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBTdWJsYXllclRyYW5zZm9ybUNoYW5n
ZWQpIHsKQEAgLTM2Miw3ICszNjIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICByZXN1bHQuc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1
bHQuc3VibGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4Pih0cmFuc2Zvcm0pOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3Bl
cnRpZXMgJiBIaWRkZW5DaGFuZ2VkKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJvdW5kZWRSZWN0KSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJlc3VsdC5zaGFwZVJv
dW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Pihy
b3VuZGVkUmVjdCk7CisgICAgICAgIHJlc3VsdC5zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAgfQogCiAgICAg
aWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIFNoYXBlUGF0aENoYW5nZWQpIHsKQEAgLTQ3
MSw3ICs0NzEsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaGFzRnJvbnRCdWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAoaGFzRnJvbnRCdWZmZXIpIHsKLSAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3Jl
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7Cisg
ICAgICAgICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU+KG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqYmFj
a2luZ1N0b3JlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAK
QEAgLTQ4Niw3ICs0ODYsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXll
clByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgfQogCiAgICAg
aWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEZpbHRlcnNDaGFuZ2VkKSB7Ci0gICAgICAg
IGF1dG8gZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
cz4oKTsKKyAgICAgICAgYXV0byBmaWx0ZXJzID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpmaWx0ZXJzKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0LmZpbHRlcnMgPSBXVEZNb3Zl
KGZpbHRlcnMpOwpAQCAtNjAyLDcgKzYwMiw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVyVHJlZVRyCiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGllcz4gbGF5ZXJQ
cm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVydGllcyA9IG1ha2VV
bmlxdWU8TGF5ZXJQcm9wZXJ0aWVzPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCps
YXllclByb3BlcnRpZXMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggOTc4
YzRiYmVkN2I1Y2Q5MWNhYWVjMTU0YmM4YmExNGJhYjc1MzQ2MS4uZTgyNmEzMGIxMmUyNGVjZjQz
MGM2OWI3NmIxYTZmMjhmNWJiOThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtNTIyLDcgKzUyMiw3IEBAIGJvb2wgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc05ld1Jvb3ROb2RlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRy
ZWUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKIAogICAgIGJvb2wgaGFzQ2hh
bmdlZFByb3BlcnRpZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDaGFuZ2VkUHJvcGVy
dGllcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVC
aXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRt
YXBDYWlyby5jcHAKaW5kZXggYzczNDdjNzllNjY5MzgzNzg1ZDA1ZDIyOWU0N2I3NDdjMWYwY2E1
NS4uYjJjZDQ4NDY2NzdjZTk3ZGZhYzI4NTg0OTBjMWVhNDM0Zjk2MjkzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAt
NjAsNyArNjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4gaW1hZ2UgPSBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKICAgICBSZWZQdHI8Y2Fpcm9fdD4g
Yml0bWFwQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShpbWFnZS5nZXQoKSkpOwotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxl
Qml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBk
c3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA5MmYxMDYyYjI5MGY3NzVkYjVhZTdlZDE5
NTJhOWNhODU4YWIzMTIyLi4wMTZhYmJkOTkzZTE4YTQ1YzAxYTdmMDQ5N2RjYzMxYTUzYjQzNzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogICAgIENHQ29udGV4dFRyYW5zbGF0
ZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAwLCBtX3NpemUuaGVpZ2h0KCkpOwogICAgIENHQ29u
dGV4dFNjYWxlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDEsIC0xKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihiaXRtYXBDb250ZXh0LmdldCgp
KTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxl
Qml0bWFwRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJp
dG1hcERpcmVjdDJELmNwcAppbmRleCA2MGY4ZjNjYjczMjg5YjZiMGQyZjRjMzUxNDZmMWNmZWQ0
MDM0YTgwLi4xMDAxZWUzZTUyOTJlZGNiNTM2ZjgyMzMwM2MyYzc0YzJiMWU5Mjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIG1fYml0bWFwID0g
Y3JlYXRlRGlyZWN0MkRTdXJmYWNlKCk7CiAgICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBi
aXRtYXBDb250ZXh0ID0gRGlyZWN0MkQ6OmNyZWF0ZVJlbmRlclRhcmdldEZyb21XSUNCaXRtYXAo
bV9iaXRtYXAuZ2V0KCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29u
dGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENv
bnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0Lmdl
dCgpKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVu
dC5oCmluZGV4IDI5OTU4MTA5NWRkMWQxYjE1YWZlYWJiNGRhY2JlZDA1ZDJiZGQxMTQuLjU0NWE3
YmU0ZDQ4MTk3MTMyOGQxYzNmNzlkMjcxZWQ5YTIxZjgzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaApAQCAtMzUsNiArMzUsNyBA
QCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBBdXRvbWF0
aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5BdXRvbWF0aW9uQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKaW5kZXggMjhm
YWY2ODcxOWE5ZDcyOGQ1MWI2Yzc3MmQ4NGUxN2I2NDkwOTdjYS4uMmFlMmE1MDM0YzNhNDE3MWNj
ZjQ3N2I5Nzg1YjczYTZmMjRkYjgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcg
QEAgZW51bSBBdXRvbWF0aW9uU2Vzc2lvbkJyb3dzaW5nQ29udGV4dE9wdGlvbnMgOiB1aW50MTZf
dCB7CiB9OwogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBKYXZhU2NyaXB0RGlhbG9n
VHlwZSB7CiAgICAgICAgIEFsZXJ0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBhZjEwOWMxZGY2NzAwZGMyM2UyZTMzMWIw
YjUwZWZiY2ZmNDI4NjY3Li44MTZmNzFlMTI2NzBjYjNkNjViMWU2MzI4MDNhNmI0MGVmN2RiZmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVD
bGllbnQuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2Ug
QVBJIHsKIAogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQuaAppbmRleCAwZjhjYWI5NzMyOWYwOTU3ZjMyYjQ3YzI3Nzgx
ZDFlNzg2ZmExNDdkLi44YjQ0YTNmNDU2YzUzMmFkMzM4MDZlZjY5YjQ3ZWFkMDk0MWRmN2IxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgfkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCmlu
ZGV4IDkyYjJkNjc1ZGZjYTJjYWZkYTIxMWIzZjcxYzU3OThhZmQ0NWQ2MmEuLmI0ZTJhZGU3Mjll
YTY2ZDhkZGE4ZGQ1MDIxMThhZTRhYmRiMjE4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRGljdGlvbmFyeTsKIAogY2xhc3MgRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKaW5kZXggMDIz
NzZlMWUxMTBkNDc2ZWIyYjkxODVlNGUyZmNkOGQ2ZTEzMzJlMS4uYjJlYWNjOWI4MzI1OThiMTdh
OTlkYmQ5ZDY3ZWYyNGU0NzNhZWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgZW51bSBjbGFzcyBBbGxv
d092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBEb3dubG9h
ZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RG93bmxvYWRDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElGaW5kQ2xpZW50LmgKaW5kZXggZjMxMjNhZjE5NTE2NWE2NjlkNjY2ODMxOGI4MTJlOTMz
NjVlNmRjMi4uNmQxZTNiMjExZmUwZGQ5NWE5NDg1MDU4NDE3ZGI0ZGUwODI0MGQ2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCkBAIC0zOSw2ICszOSw3
IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5kQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5GaW5kQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZpbmRNYXRjaGVzQ2xpZW50LmgKaW5kZXggYzZmNDU3MzQyZDExMTkwMWRjYTZkM2MzMDkw
MzM3ZmVlN2ExZmVjMi4uZmFlMWRjZDNjZDY4ODM1MDdlZmJlM2Q5NWQ1ZDZmNzJhMDM2OWRlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xp
ZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQ
SSB7CiAKIGNsYXNzIEZpbmRNYXRjaGVzQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaW5kTWF0Y2hlc0NsaWVudCgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaAppbmRleCA1YjBjNmNj
YTI0ZWVmYzFhOTU4MTkxZTBlMjc5NGE0N2I0ZjU0ZTdjLi5mMGNhMDYwMTExOTgwMmVkMzY5YjRk
MDc4ZDgzYzg2MmE1MTYxMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRm9ybUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
b3JtQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmpl
Y3Q7CiAKIGNsYXNzIEZvcm1DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkZvcm1DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKaW5kZXggMTM3NTUyOWNk
YTI1ZjI1Y2JiMTc5YmRjODk4OTE3MWM4OWVlODg1Ny4uODk3NGNkMTMzOTQ3NzUwMjczZjQ1MGYw
ZTgzOTZjMGU2YjEzMjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZ1bGxzY3JlZW5DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRnVsbHNjcmVlbkNsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGdWxsc2NyZWVuQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBB
UElUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xv
Y2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2Nh
dGlvblByb3ZpZGVyLmgKaW5kZXggNTI2NmJjMmNhNTRjZjA5OWMyMzhjYWNjNjIxNDRjOTc5OWEw
OTc5Ny4uN2M2ZjU2MjljYjYwZTUzYmM3Yjg1YWE4ODg5ZjcyZTY4ZDdhNGMyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5o
CkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OwogbmFt
ZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uUHJvdmlk
ZXIoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmNwcAppbmRleCA5ODFhOTg1YmJkZTVmMWNiNjVmOTZjYmIyMTM5ZmJjZjE5ZDdk
Y2U1Li5lMTIyZWUzZWRiMWM0MjE5ZDFkODQxOTkzMjFhODAwM2Q1MmM4MjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKE9i
c2VydmVyJiBvYnNlcnZlcikKIAogICAgIEFTU0VSVCghbV9vYnNlcnZlZENvb2tpZU1hbmFnZXJQ
cm94eSk7CiAKLSAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRoaXMpOworICAgIG1fY29v
a2llTWFuYWdlclByb3h5T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEFQSVdlYkNvb2tpZU1hbmFnZXJQ
cm94eU9ic2VydmVyPigqdGhpcyk7CiAKICAgICBhdXRvKiBwb29sID0gbV9vd25pbmdEYXRhU3Rv
cmUtPnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKaW5kZXggZmNmNDYwNjFm
NmJmYTZkY2I3NjBlMTJjNjYzM2I2YjQ1ZjE1NmRkNC4uMTE4NGFhNDMyYzNiOWZmY2IxNWRhNWY4
MjhlZjRhYzRmMWFkYjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhpc3RvcnlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SGlzdG9yeUNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0
YVN0b3JlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEhpc3RvcnlDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkhpc3RvcnlDbGll
bnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUlj
b25EYXRhYmFzZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25E
YXRhYmFzZUNsaWVudC5oCmluZGV4IGVhOWViYTUwZTFlZmU4ZjAzMjFjNGRmZTNhNDQ2ZjBkY2Ji
NWQ4YzkuLmJlNDNhZWVjNTRmZjJkNGFiYjVhMjhmZjM2MzE0NWM0OTBjN2U4NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgK
QEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgV2ViSWNvbkRhdGFiYXNlOwogbmFtZXNwYWNlIEFQSSB7
CiAKIGNsYXNzIEljb25EYXRhYmFzZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkRhdGFiYXNlQ2xpZW50KCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgK
aW5kZXggNmY5ZTdhZjljOTgwOTIzM2I2YTU2NWVjM2UzODBiZTBhYWNkNTY3ZS4uMmZlMzg2MjU5
NDYzYmZiMzYyM2ViYmRiNGZlZjVmODM5MzZiMGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAg
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJY29uTG9hZGlu
Z0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SWNvbkxvYWRpbmdDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCBjMzVlN2IzYWU0
OTNkOWFjNjNjYjNhNGI1ODFmZTMyZmNiNDBhY2U4Li45ZDQzNDg5YTJkNjI1N2NiMGNhZjkyMmIz
ZmIwOTMyOTVjZTliYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBXZWJQ
cm9jZXNzUG9vbDsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
SW5qZWN0ZWRCdW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgK
aW5kZXggY2JiOWUwYTk3MTQ1YmQxN2RkZWY4ZTBiYjE0YWY4YzM3NmRmYjM4OC4uZGI1ZDkwYzMx
ZjkyNzY5ZDMwM2EwMWFkNzhiZGE3ZmJkMWE0ZDAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgK
QEAgLTM4LDYgKzM4LDcgQEAgc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiBuYW1lc3Bh
Y2UgQVBJIHsKIAogY2xhc3MgTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElM
b2FkZXJDbGllbnQuaAppbmRleCAzNDhkNmJmNzcyOTI3MmU4ZjJhYmFlYzM3NTVjMjBkZTU0MmQ2
NDVkLi5iMmVhNDFkOWUyZjJlODFlMmM5ZWIzYjg3NzkxZmMzZWY4YzNmMGRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCkBAIC01Myw2ICs1Myw3
IEBAIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIExvYWRlckNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
TG9hZGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkm
LCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggYTZlMDE5Y2M0NTE4
NjNhNDFhY2ZjOGJlYTdiZjMwMjg5NmIxYmI3My4uY2QyMmEyNjc2NDY4ZDE4MjM0YTYwODQyZmU5
ZDkxNjcxYjIwYTg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oCkBAIC03Myw2ICs3Myw3IEBAIGNsYXNzIE5hdmlnYXRpb25SZXNw
b25zZTsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgTmF2aWdhdGlvbkNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TmF2aWdhdGlvbkNs
aWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xp
ZW50LmgKaW5kZXggNWViZTQ0MDc0MmE3NjU0MWIxZDljY2YyOTk1YzlhOTVmZTg0ZDVhZC4uNmFl
OGU3NTIwNWZmZmM4NjUyZjRmOWI4M2JiM2RlMzBlZTZjZmFmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaApAQCAtNDcsNiArNDcsNyBAQCBuYW1l
c3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgUG9saWN5Q2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Qb2xpY3lDbGll
bnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJ
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRl
eCBkOWRkMGRiNDY2Mzc3MjJiNjAyYjIwZGRkZjY3MzgxMzVmNjQ2ZjYyLi43NzJkYTZlNWE4Njk3
N2VjOGFlMmRjMDc1NDJkOGZjZjFlMTQ5NjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaApAQCAtNzEsNiArNzEsNyBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0
ZXJzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFVJQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5VSUNsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBk
MGViMzFhZTE2OTAwNTc3MmE2YmVjMTQzN2MyYjQzMGQwY2I0ZTZkLi5iMzI0YTI0MDRmYzAwYWU3
OTg0NGZlZjkwN2QwNzBlMWQwMzAwNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBXS0NvbnRleHRTZXRDbGll
bnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIHdr
Q2wKIAogdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiB3a0Ns
aWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYkNvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OldlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5
Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2xp
ZW50QmFzZSogd2tDbGllbnQpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXS0NvbnRleHRTZXRI
aXN0b3J5Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRIaXN0
b3J5Q2wKICAgICB9OwogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wg
PSAqV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZik7Ci0gICAgcHJvY2Vzc1Bvb2wuc2V0SGlzdG9y
eUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcnlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
cHJvY2Vzc1Bvb2wuc2V0SGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEhpc3RvcnlDbGllbnQ+KHdr
Q2xpZW50KSk7CiAKICAgICBib29sIGFkZHNWaXNpdGVkTGlua3MgPSBwcm9jZXNzUG9vbC5oaXN0
b3J5Q2xpZW50KCkuYWRkc1Zpc2l0ZWRMaW5rcygpOwogCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9p
ZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29u
c3QgV0tDb250ZXh0RG93bmxvYWQKICAgICAgICAgfQogICAgIH07CiAKLSAgICBXZWJLaXQ6OnRv
SW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3du
bG9hZENsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+
c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVudD4od2tDbGllbnQpKTsK
IH0KIAogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFu
YWdlci5jcHAKaW5kZXggMTFiODM0YjRlZTJhOWE2ODc2MjZjNzMyYmY1OGE0ODgyM2Y2MzM0YS4u
ODg4Yjc1YmM3Y2VjODlkMTZlMDdmNjE3ZTdiYjJjZTI5NzlmYTYyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApA
QCAtNDAsNyArNDAsNyBAQCBXS1R5cGVJRCBXS0dlb2xvY2F0aW9uTWFuYWdlckdldFR5cGVJRCgp
CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihXS0dlb2xvY2F0aW9uTWFu
YWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYsIGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRl
ckJhc2UqIHdrUHJvdmlkZXIpCiB7Ci0gICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZikt
PnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQ
cm92aWRlcikpOworICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5zZXRQcm92aWRl
cihtYWtlVW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAog
dm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2hhbmdlUG9zaXRpb24oV0tHZW9s
b2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBXS0dlb2xvY2F0aW9uUG9z
aXRpb25SZWYgcG9zaXRpb25SZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCBiMjIzZDZmODdiZmE1ZTk2
ZTNlNTBkYTJkZDc4ZmYwZDJkZDQxNmNlLi43NjkyMzk5MGFiNWI5ZWEyMTM4NWYxZDM1NjllOGI1
MGFhN2Y2NWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tO
b3RpZmljYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJTZXRQcm92aWRlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgY29uc3Qg
V0tOb3RpZmljYXRpb25Qcm92aWRlckJhc2UqIHdrUHJvdmlkZXIpCiB7Ci0gICAgdG9JbXBsKG1h
bmFnZXJSZWYpLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyPih3a1Byb3ZpZGVyKSk7CisgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5zZXRQcm92aWRl
cihtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAK
IHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25J
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IDQ3ZWM3MjZi
MGNlNDQwNTdmMDAyYjU0MGJlYTc2OGU0M2IxMGE4ZDQuLjYxYTY5YjFmM2E2ZGE3NDk2YWQ0NzI2
OTcwYjg1ZjJjOTExODEzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcApAQCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsCiAgICAgICAg
IH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250ZXh0TWVudUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1w
bChwYWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNs
aWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAg
IFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBAIC05NTcsNyArOTU3LDcgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNv
bnRleHRNZW51Q2wKIAogdm9pZCBXS1BhZ2VTZXRQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50QmFz
ZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4o
d2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50KG1ha2VVbmlxdWU8V2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVudCkp
OwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC05OTUsNyArOTk1LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlRmluZENsaWVudEJhc2UqIHdrQ2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwo
cGFnZVJlZiktPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5kQ2xpZW50Pih3a0Ns
aWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPEZp
bmRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVz
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJh
c2UqIHdrQ2xpZW50KQpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmlu
ZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVz
Q2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRNYXRj
aGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZE1hdGNoZXNDbGllbnQ+KHdrQ2xpZW50KSk7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEZp
bmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VJbmplY3RlZEJ1CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZvcm1DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0
b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJGb3JtQ2xp
ZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNsaWVudChtYWtl
VW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFn
ZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50
QmFzZSogd2tDbGllbnQpCkBAIC0xMTk5LDcgKzExOTksNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJh
c2UqCiAKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSA9IHRvSW1wbChwYWdlUmVmKTsK
IAotICAgIGF1dG8gbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJDbGllbnQ+
KHdrQ2xpZW50KTsKKyAgICBhdXRvIGxvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8TG9hZGVyQ2xp
ZW50Pih3a0NsaWVudCk7CiAKICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGdldCByaWQgb2Yg
dGhpcyBjb2RlIGFuZCB0cmFuc2l0aW9uIGFsbCBjbGllbnRzIHRvIHVzaW5nIGRpZExheW91dCBp
bnN0ZWFkIG9mCiAgICAgLy8gZGlkRmlyc3RMYXlvdXRJbkZyYW1lIGFuZCBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lLiBJbiB0aGUgbWVhbnRpbWUsIHRoaXMgaXMgcmVxdWly
ZWQKQEAgLTEyODEsNyArMTI4MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAg
fQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvbGljeUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFBvbGljeUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZikt
PnNldFBvbGljeUNsaWVudChtYWtlVW5pcXVlPFBvbGljeUNsaWVudD4od2tDbGllbnQpKTsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMDc1LDcgKzIwNzUsNyBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNl
KiB3a0NsaWVudAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7
CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTIyOTMs
MTY0ICsyMjkzLDE2NiBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgIHdlYlBhZ2VQcm94
eS0+c2V0TmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPE5hdmlnYXRpb25DbGllbnQ+KHdr
Q2xpZW50KSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBw
YWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKLXsKLSAgICBjbGFzcyBTdGF0ZUNs
aWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBw
dWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhw
bGljaXQgU3RhdGVDbGllbnQoY29uc3QgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKLSAgICAgICAgfQotICAg
IHByaXZhdGU6Ci0gICAgICAgIHZvaWQgd2lsbENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZykK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
SXNMb2FkaW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KK2NsYXNzIFN0
YXRlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZVN0YXRlQ2xpZW50QmFz
ZT4sIHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3RhdGVDbGllbnQoY29uc3QgV0tQYWdl
U3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCisgICAgeworICAgICAgICBpbml0aWFsaXplKGNsaWVu
dCk7CisgICAgfQorcHJpdmF0ZToKKyAgICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5n
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hh
bmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZykKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZVRpdGxl
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlVGl0bGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAg
ICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1f
Y2xpZW50LndpbGxDaGFuZ2VUaXRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9j
bGllbnQud2lsbENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQog
Ci0gICAgICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVRpdGxlKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVRpdGxlKG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUFjdGl2ZVVS
TCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZUFjdGl2ZVVSTCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2Ns
aWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAg
ICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VB
Y3RpdmVVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0K
KyAgICB2b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2Vj
dXJlQ29udGVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxD
aGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNv
bnRlbnQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlT
ZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlk
Q2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dy
ZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxs
Q2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9n
cmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VF
c3RpbWF0ZWRQcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRl
ZFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50
LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRl
ZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZv
aWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjaykKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2so
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29C
YWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2Fu
R29CYWNrKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQg
ZGlkQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2spCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUNhbkdvQmFjaygpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjaykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5n
ZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9j
bGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29G
b3J3YXJkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
Q2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAg
IHZvaWQgZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUNh
bkdvRm9yd2FyZCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZUNhbkdvRm9yd2FyZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQog
Ci0gICAgICAgIHZvaWQgd2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVy
cmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3
b3JrUmVxdWVzdHNJblByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3Jr
UmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hh
bmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VO
ZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAg
ICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVz
dHNJblByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRD
aGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRp
ZmljYXRlSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVu
dC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNh
dGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQg
ZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZv
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5n
ZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNp
dmUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxD
aGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlV2Vi
UHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNS
ZXNwb25zaXZlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lk
IGRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNw
b25zaXZlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQg
ZGlkU3dhcFdlYlByb2Nlc3NlcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcykKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICB9OworICAgIHZvaWQgZGlkU3dhcFdlYlByb2Nl
c3NlcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN3YXBXZWJQ
cm9jZXNzZXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZFN3YXBX
ZWJQcm9jZXNzZXMobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9Cit9OworCit2b2lk
IFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGll
bnRCYXNlKiBjbGllbnQpCit7CiAgICAgaWYgKGNsaWVudCkKLSAgICAgICAgdG9JbXBsKHBhZ2Up
LT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjptYWtlX3VuaXF1ZTxTdGF0ZUNsaWVudD4o
Y2xpZW50KSk7CisgICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVy
KG1ha2VVbmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOwogICAgIGVsc2UKICAgICAgICAgdG9J
bXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIobnVsbHB0cik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1t
CmluZGV4IGY3NjNhZjYwMDNkYTQ2NjczNjMxZTkxZWE4MWI4M2I1Yzk3YTA4N2QuLjM1ZWY5MjIx
NTRlMTk2MzAwZTRiNmVlNzVkNGM5ODE3ODViYzNlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCkBAIC01Miw3ICs1
Miw3IEBAIC0gKGlkKWluaXRXaXRoUGFnZTooUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiYm
KXBhZ2UKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIF9wYWdlID0gV1RGTW92ZShwYWdlKTsK
LSAgICBfb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9i
c2VydmVyPihzZWxmLCBAIlVSTCIpOworICAgIF9vYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYsIEAiVVJMIik7CiAgICAgX3BhZ2UtPnBhZ2VM
b2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqX29ic2VydmVyKTsKIAogICAgIHJldHVybiBzZWxmOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcAppbmRleCA3OGJi
YTM5NjdiNjE5N2MwZThhN2MyM2FjM2RhOGNkMTMyZTdjNGJlLi45NjQwNmQwYWFmYmMzNTU1NjBi
NWQzMTk3YTAwYzI1ZjU3NTlhM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy93cGUvV0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy93cGUvV0tWaWV3LmNwcApAQCAtNjgsNSArNjgsNSBAQCB2b2lkIFdLVmlld1NldFZpZXdDbGll
bnQoV0tWaWV3UmVmIHZpZXcsIGNvbnN0IFdLVmlld0NsaWVudEJhc2UqIGNsaWVudCkKICAgICAg
ICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwodmlldyktPnNldENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFZpZXdDbGllbnQ+KGNsaWVudCkpOworICAgIHRvSW1wbCh2aWV3KS0+c2V0Q2xpZW50KG1h
a2VVbmlxdWU8Vmlld0NsaWVudD4oY2xpZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlci5tbQppbmRleCAyNjU1NTRmM2Q3ZjJkN2FkMjk2ZTlmM2Y5ZmExMTM4OGI3OGZkNTY0Li40
OTY3Nzg4YTEwNTdmYTg4MmEwYTAxYzhkYmY1MDAyZTkyMjZlYzAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIubW0KQEAgLTYwMiw3ICs2MDIsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2lu
aXRXaXRoUGFnZVJlZjooV0tQYWdlUmVmKXBhZ2VSZWYKIAogICAgIF9wYWdlID0gV2ViS2l0Ojp0
b0ltcGwocGFnZVJlZik7CiAKLSAgICBfcGFnZUxvYWRTdGF0ZU9ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZik7CisgICAgX3BhZ2VM
b2FkU3RhdGVPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2
ZXI+KHNlbGYpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKl9wYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIpOwogCiAgICAgQVNTRVJUKCFicm93c2luZ0NvbnRleHRDb250cm9s
bGVyTWFwKCkuY29udGFpbnMoX3BhZ2UuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCAxMzcyY2E0
MTA2Yzc2ZTFkNjIzNWQ2MTRhZDVjMWU2YTU2ZWEwNWExLi44MWQzNzAzYjBlZWE4MmU1ZTZjNjJm
MzIyMmFjNGU2ODE5ZjZiM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgLSAo
dm9pZClhZGRPYnNlcnZlcjooaWQ8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4pb2JzZXJ2ZXIK
ICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxXS0hUVFBDb29raWVTdG9yZU9i
c2VydmVyPihvYnNlcnZlcik7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIpOwogICAgIF9jb29raWVTdG9y
ZS0+cmVnaXN0ZXJPYnNlcnZlcigqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5k
ZXggYmFjZTVhYzdlYzAwYjE4OThhZDJkZjcyY2IxYjE5NDQ2N2RjZWM5ZC4uZWJhYzU2OGUzZGRi
Njg3MGY4NWIwMTUwOGVjMjBmYWFiN2YyMDRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTM3Myw3ICszNzMsNyBAQCAt
IChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pX2Rvd25sb2FkRGVsZWdhdGUKIC0gKHZvaWQpX3Nl
dERvd25sb2FkRGVsZWdhdGU6KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilkb3dubG9hZERlbGVn
YXRlCiB7CiAgICAgX2Rvd25sb2FkRGVsZWdhdGUgPSBkb3dubG9hZERlbGVnYXRlOwotICAgIF9w
cm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRv
d25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRE
b3dubG9hZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2Fk
RGVsZWdhdGUpKTsKIH0KIAogLSAoaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRp
b25EZWxlZ2F0ZQpAQCAtMzg0LDcgKzM4NCw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdh
dGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKIC0gKHZvaWQpX3NldEF1dG9tYXRpb25EZWxlZ2F0ZToo
aWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pYXV0b21hdGlvbkRlbGVnYXRlCiB7CiAgICAgX2F1
dG9tYXRpb25EZWxlZ2F0ZSA9IGF1dG9tYXRpb25EZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wt
PnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25D
bGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0
QXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2Vs
ZiwgYXV0b21hdGlvbkRlbGVnYXRlKSk7CiB9CiAKIC0gKHZvaWQpX3dhcm1Jbml0aWFsUHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDhiNmRmMjRmODk1MmQ4NGY2MDc1NDRjNmEz
MWEyZGQxYjhhYTM1NWQuLmEwMGIyMDNjYzkwNTkzMDFiZWNjNDYxZDYxYjQ2NzMyYjg1NjEyZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTExOCw2ICsxMTgsNyBAQCAtICh2b2lkKXJl
bW92ZUFsbENvbnRlbnRSdWxlTGlzdHMKIH0KIAogY2xhc3MgU2NyaXB0TWVzc2FnZUhhbmRsZXJE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlw
dE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGUoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xs
ZXIsIGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyLCBOU1N0cmluZyAqbmFtZSkK
ICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKQEAgLTE0NSw3ICsxNDYsNyBAQCBw
cml2YXRlOgogCiAtICh2b2lkKWFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhhbmRsZXIgbmFtZTooTlNTdHJpbmcgKiluYW1l
CiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2Vs
Ziwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29y
bGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVs
ZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2Vy
Q29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIV91c2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQog
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiQXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1lc3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVA
JyB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBuYW1lXTsKIH0KQEAgLTIyOSw3ICsyMzAsNyBA
QCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHNBc3NvY2lhdGVkV2l0aFVzZXJDb250
ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50VwogCiAtICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5h
bWU6KE5TU3RyaW5nICopbmFtZSB1c2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxk
ICopdXNlckNvbnRlbnRXb3JsZAogewotICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VI
YW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwg
KnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsKKyAgICBhdXRvIGhhbmRsZXIg
PSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3Jp
cHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFt
ZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CiAgICAgaWYg
KCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxl
cihoYW5kbGVyLmdldCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNzYWdlIGhh
bmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFtZV07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCAwMzkxYTE5OTJlMzUzMmRiZTVmMjFkYjY5MWRkODEwOGFhZTJhNjZjLi4wOGY0MmVjOGIxM2Jm
NzBiZDJiNmIzN2JjN2Q4MTU2ODIzZDZjNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTc1Nyw3ICs3NTcsNyBAQCAtICh2b2lkKV9p
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBfaW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2ws
IHBhZ2VDb25maWd1cmF0aW9uLmNvcHlSZWYoKSk7CisgICAgX2ltcGwgPSBtYWtlVW5pcXVlPFdl
YktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJh
dGlvbi5jb3B5UmVmKCkpOwogICAgIF9wYWdlID0gJl9pbXBsLT5wYWdlKCk7CiAKICAgICBfaW1w
bC0+c2V0QXV0b21hdGljYWxseUFkanVzdHNDb250ZW50SW5zZXRzKHRydWUpOwpAQCAtNzY5LDE0
ICs3NjksMTQgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogCiAgICAgX3BhZ2UtPnNldEFwcGxpY2F0
aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQoY29uZmlndXJhdGlvbi5fYXBwbGljYXRpb25OYW1l
Rm9yRGVza3RvcFVzZXJBZ2VudCk7CiAKLSAgICBfbmF2aWdhdGlvblN0YXRlID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7CisgICAgX25hdmlnYXRpb25T
dGF0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNlbGYpOwogICAgIF9w
YWdlLT5zZXROYXZpZ2F0aW9uQ2xpZW50KF9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZU5hdmlnYXRp
b25DbGllbnQoKSk7CiAKLSAgICBfdWlEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpVSURlbGVnYXRlPihzZWxmKTsKLSAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6RmluZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXREaWFnbm9z
dGljTG9nZ2luZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ+KHNlbGYpKTsKKyAgICBfdWlEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpV
SURlbGVnYXRlPihzZWxmKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdl
YktpdDo6RmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXREaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHNlbGYp
KTsKIAotICAgIF9pY29uTG9hZGluZ0RlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
Okljb25Mb2FkaW5nRGVsZWdhdGU+KHNlbGYpOworICAgIF9pY29uTG9hZGluZ0RlbGVnYXRlID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+KHNlbGYpOwogCiAgICAgX3Vz
ZVBsYXRmb3JtRmluZFVJID0gWUVTOwogCkBAIC0zNDI1LDcgKzM0MjUsNyBAQCAtICh2b2lkKXNl
dEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3
YXJkTmF2aWdhdGlvbgogICAgIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9
IGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOwogCiAgICAgaWYgKGFsbG93c0Jh
Y2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzICYmICFfZ2VzdHVyZUNvbnRyb2xsZXIpIHsKLSAg
ICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcj4oKl9wYWdlKTsKKyAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKl9wYWdlKTsKICAgICAg
ICAgX2dlc3R1cmVDb250cm9sbGVyLT5pbnN0YWxsU3dpcGVIYW5kbGVyKHNlbGYsIFtzZWxmIHNj
cm9sbFZpZXddKTsKICAgICAgICAgaWYgKFdLV2ViVmlldyAqYWx0ZXJuYXRlV2ViVmlldyA9IFtf
Y29uZmlndXJhdGlvbiBfYWx0ZXJuYXRlV2ViVmlld0Zvck5hdmlnYXRpb25HZXN0dXJlc10pCiAg
ICAgICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPnNldEFsdGVybmF0ZUJhY2tGb3J3YXJkTGlz
dFNvdXJjZVBhZ2UoYWx0ZXJuYXRlV2ViVmlldy0+X3BhZ2UuZ2V0KCkpOwpAQCAtNTY3OCw3ICs1
Njc4LDcgQEAgLSAodm9pZClfc2V0SW5wdXREZWxlZ2F0ZTooaWQgPF9XS0lucHV0RGVsZWdhdGU+
KWlucHV0RGVsZWdhdGUKICAgICB9OwogCiAgICAgaWYgKGlucHV0RGVsZWdhdGUpCi0gICAgICAg
IF9wYWdlLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikp
OworICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNl
bGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50KG51bGxwdHIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9t
YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1
dG9tYXRpb25TZXNzaW9uLm1tCmluZGV4IDdhZDA3M2I4Y2Q2ZGQ0MjAzZTFhNzYwNThmN2M3ZGYy
YTlmOGFkN2IuLjJhZGVlYTc2MGM2OThiMThhZTU5MWU1NzA1NzEzMjk1ZjI0YzU2ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21h
dGlvblNlc3Npb24ubW0KQEAgLTcyLDcgKzcyLDcgQEAgLSAoaWQgPF9XS0F1dG9tYXRpb25TZXNz
aW9uRGVsZWdhdGU+KWRlbGVnYXRlCiAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8X1dLQXV0b21h
dGlvblNlc3Npb25EZWxlZ2F0ZT4pZGVsZWdhdGUKIHsKICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKLSAgICBfc2Vzc2lvbi0+c2V0Q2xpZW50KGRlbGVnYXRlID8gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihkZWxlZ2F0ZSkgOiBudWxscHRyKTsKKyAg
ICBfc2Vzc2lvbi0+c2V0Q2xpZW50KGRlbGVnYXRlID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50PihkZWxlZ2F0ZSkgOiBudWxscHRyKTsKIH0KIAogLSAoTlNTdHJp
bmcgKilzZXNzaW9uSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCmluZGV4IGIzN2IwNTA1M2YxMjRhY2I3MGZkNmFkZTZkZjQyMGZlODI1ZDU0
Y2YuLjBkZDQwOWE0M2RlNjUzMDBjOWYwY2M4NTQ0N2FjMmY3MTNlYzk0OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTM4LDYgKzM4LDcgQEAg
QGVuZAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIF9XS1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5Q2xpZW50IGZpbmFsIDogcHVibGljIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBfV0tSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudChfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAq
Y29udHJvbGxlcikKICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKQEAgLTc1LDcg
Kzc2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IG1fcmVtb3RlSW5zcGVjdG9yUHJveHkgPSBXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5
OjpjcmVhdGUoKTsKLSAgICBtX3JlbW90ZUluc3BlY3RvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudD4oc2VsZik7CisgICAg
bV9yZW1vdGVJbnNwZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlDbGllbnQ+KHNlbGYpOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHkt
PnNldENsaWVudChtX3JlbW90ZUluc3BlY3RvckNsaWVudC5nZXQoKSk7CiAKICAgICByZXR1cm4g
c2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJh
c2UuY3BwCmluZGV4IDhkMmY4OGFlMDAzMmEwZDkzNDVlNjgwMGE5Nzg1OGI0MjhhNGQ2ZDkuLjA2
ODcwZDIxZGVlN2NhNGY4OWRiOWUzNDJmNmYwZjVmZDNmNTRhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMTY5MSw3ICsx
NjkxLDcgQEAgaW5saW5lIHZvaWQgcmVhZHlTUUxpdGVTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRy
PFNRTGl0ZVN0YXRlbWVudD4mIHN0YXRlbWVudCwgU1EKICAgICAgICAgc3RhdGVtZW50ID0gbnVs
bHB0cjsKICAgICB9CiAgICAgaWYgKCFzdGF0ZW1lbnQpIHsKLSAgICAgICAgc3RhdGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KGRiLCBzdHIpOworICAgICAgICBzdGF0
ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oZGIsIHN0cik7CiAgICAgICAgIGlm
IChzdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBMT0dfRVJS
T1IoIlByZXBhcmluZyBzdGF0ZW1lbnQgJXMgZmFpbGVkIiwgc3RyLmFzY2lpKCkuZGF0YSgpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5oCmluZGV4IGJhYmQ4YTk4MjlmYjgwZDE5ODUyZWM5NzRhZWVhNzBjZWUwYjkxNTguLjhhOGNh
YmJkNTNjMWU2NWY3MGFkZDA4NWQ0ZjU1ZWEzMTAxMTYwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCkBAIC00NCw2ICs0NCw3IEBAIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJY29uRGF0YWJh
c2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgpID0gZGVmYXVsdDsKIApAQCAtNTgsNiArNTksNyBA
QCBjbGFzcyBJY29uRGF0YWJhc2UgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25TbmFwc2hv
dCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAg
ICAgSWNvblNuYXBzaG90KCkgPSBkZWZhdWx0OwogCkBAIC0xMTgsNiArMTIwLDcgQEAgY2xhc3Mg
SWNvbkRhdGFiYXNlIHsKICAgICB9OwogCiAgICAgY2xhc3MgUGFnZVVSTFNuYXBzaG90IHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBQYWdl
VVJMU25hcHNob3QoKSA9IGRlZmF1bHQ7CiAKQEAgLTE3Miw2ICsxNzUsNyBAQCBjbGFzcyBJY29u
RGF0YWJhc2UgewogICAgIH07CiAKICAgICBjbGFzcyBNYWluVGhyZWFkTm90aWZpZXIgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIE1haW5U
aHJlYWROb3RpZmllcigpCiAgICAgICAgICAgICA6IG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmTWFpblRocmVhZE5vdGlmaWVyOjp0aW1lckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
Y3BwCmluZGV4IGQyYWY2NGJhZDg2YThhMzNmMTMzNTQ3MjU4MWI3MDJlNDFhNjdlYzIuLjIxODY2
MDQ1MTkyNzY5YmU2ZGZmODU5YTYzMjA0M2Q1MTM1NjljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxd
ID0geyAwLCB9OwogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZUEVfT0JKRUNUKQogCiBjbGFzcyBBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lv
bikKICAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lvbikKQEAgLTIyMyw3ICsyMjQsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVj
dCkKIAogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21h
dGlvblNlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklk
ZW50aWZpZXIoU3RyaW5nOjpmcm9tVVRGOChzZXNzaW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKLSAg
ICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikpOworICAgIHNlc3Npb24tPnByaXYtPnNlc3Np
b24tPnNldENsaWVudChtYWtlVW5pcXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9u
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uRGlzcG9zZShHT2Jq
ZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggOTdlOTI1NjAxNzczN2I3
NjY1YWNjOGViMmYzNThlYjJlYzU5MDBiOS4uMjg1OGRmNmYzNGQ0ZmE2MjEyMDliZjFlYjFlMTA4
ODVhZDA1ZTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNTYsNiArNTYsNiBAQCBj
bGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbDogcHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGll
bnQgewogCiB2b2lkIGF0dGFjaENvbnRleHRNZW51Q2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Q29udGV4
dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2ViVmlldykp
OworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldENvbnRleHRNZW51Q2xpZW50
KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKaW5kZXggZDMyYjU5YzU0NzY2N2E3ZWM4
NzcxODEwNTJiZDFhNzQ5YzBkYmMxYy4uYTM3M2IyOTQ1NzE2NzkxYTJkNGMzMDdiZDVlMGE5Mjlj
ODE0MGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCkBA
IC01Niw1ICs1Niw1IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVuCiAKIHZvaWQgYXR0YWNoQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNv
bnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQp
LnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNv
bnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQobWFrZVVuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNv
bnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlYWQ0ZjIzNDk5MTY3MDRkMTdkMWYy
MzA2NDA4OWY3YTFhMDQ1OTRmLi5lNzcxZGQ3MTg3ZTU4NTlhZGJkNWEwMTZmOGNhOTM1ZDI4ZTg0
YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRE
b3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC0xMTgsNSArMTE4LDUgQEAgY2xhc3MgRG93bmxv
YWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7CiAKIHZvaWQgYXR0
YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkK
IHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93
bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkp
OworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3du
bG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMTgwODNlNzY5N2E1MTM5OGYyZWUwOTRjZGIwNjhjMjA4
MzdiMWZhLi45YjU4MThhOTgzNmYzNzYyZDg5NjIyZTM2MmMzZmM4YjJkM2ViZmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRh
YmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBw
YQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKiBw
cml2ID0gZGF0YWJhc2UtPnByaXY7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gc3RkOjptYWtl
X3VuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Ci0gICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7
CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbWFrZVVuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Cisg
ICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJY29uRGF0
YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CiAgICAgSWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNl
Q2xlYW51cCgpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAg
ICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVy
ZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5j
cHAKaW5kZXggNGY5ODBkNGVlMjU4YWNhYzQ1NTgzMjNjYTdiZDcxY2NkZjNiZWViMS4uNzY3NWM5
Y2IzYTVlZGFmODg2NGQxN2ExNzkyMTdjYjk0MjMzNjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcApA
QCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9maW5kX2Nv
bnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAogICAgIFdlYktp
dEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxlciA9IFdFQktJVF9GSU5EX0NPTlRST0xMRVIo
b2JqZWN0KTsKLSAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKKyAgICBnZXRQYWdlKGZp
bmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4oZmluZENv
bnRyb2xsZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0RmluZENvbnRyb2xsZXJHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcGFyYW1TcGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAppbmRleCAxMzRkMWM2Y2ViZTU2N2ZjNTRkOTcwZjg3
NmJlMDI5MzFkMzI4MjJkLi5iYzY3YTM1N2RjMDc0NDVhMzUyOGY4MGYwYWJkNzlkMDdjM2JjMDRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3Jt
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
b3JtQ2xpZW50LmNwcApAQCAtNDgsNSArNDgsNSBAQCBjbGFzcyBGb3JtQ2xpZW50IGZpbmFsIDog
cHVibGljIEFQSTo6Rm9ybUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoRm9ybUNsaWVudFRvVmlldyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZp
ZXcpLnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7
CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Rm9ybUNsaWVudChtYWtlVW5p
cXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmlu
ZGV4IDJlMTU5NDVkZmFkMjljMzE1NTBkMWFkM2M0ZGQxNDk4YmU3YjcyMDQuLjhjYmE0MjJlZDVl
MzhiZjg0Yzc2MDU5NGQ2Y2YwZjY1ODhjYmVhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNw
cApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdl
clN0YXJ0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFuYWdlcikKICAgICB9CiAKICAgICBp
ZiAoIW1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlcikgewotICAgICAgICBtYW5hZ2VyLT5w
cml2LT5nZW9jbHVlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlv
blByb3ZpZGVyPigpOworICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBt
YWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOwogICAgICAgICBtYW5hZ2Vy
LT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVuYWJsZUhpZ2hBY2N1cmFjeShtYW5hZ2VyLT5w
cml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAgICB9CiAgICAgbWFuYWdlci0+cHJpdi0+Z2Vv
Y2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9jYXRpb25Qb3NpdGlvbiYmIGNvcmVQ
b3NpdGlvbiwgT3B0aW9uYWw8Q1N0cmluZz4gZXJyb3IpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCBX
ZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZShX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcgogewogICAgIGF1dG8qIG1hbmFnZXIgPSBXRUJLSVRfR0VP
TE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFO
QUdFUiwgbnVsbHB0cikpOwogICAgIG1hbmFnZXItPnByaXYtPm1hbmFnZXIgPSBwcm94eTsKLSAg
ICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVy
PihtYW5hZ2VyKSk7CisgICAgcHJveHktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8R2VvbG9jYXRp
b25Qcm92aWRlcj4obWFuYWdlcikpOwogICAgIHJldHVybiBtYW5hZ2VyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9h
ZGluZ0NsaWVudC5jcHAKaW5kZXggYjhmMDFmYjI0ZmYyNzY1NGMwYWQ2MDlhZGQzMjQxOTVlZTQx
Y2E1OS4uNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2RlYjI1ZmRhYTI3ZjY2YzUyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25M
b2FkaW5nQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0Ns
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgSWNvbkxvYWRpbmdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykKQEAgLTYxLDUgKzYyLDUgQEAgY2xhc3MgSWNvbkxvYWRpbmdDbGll
bnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CiAKIHZvaWQgYXR0YWNoSWNvbkxv
YWRpbmdDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRX
ZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBh
Z2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0Ns
aWVudD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGE5
M2ZmMjViMzlhMjkyNTYwMGQyYzRhZWNjZWNiYzc1NzBkNWRmM2QuLjkyNjJhODRkZWNlMjViZjBi
ZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAK
QEAgLTE3OSw1ICsxNzksNSBAQCBjbGFzcyBXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5h
bCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hJbmpl
Y3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQog
ewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluamVjdGVkQnVuZGxlQ2xp
ZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdl
YkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5qZWN0
ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcAppbmRleCAyMzZlODFjMTM5MGIzZWMzYzE1NDkxODY4NmJhZmE1ZTUzODY0Njg3Li41NTE2
MzY0NDc3NTU3NDdiNzBhYzVlNzZiMWQxMDRkNjFjMGI1Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVy
OjpXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJvCiAg
ICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobm90aWZpY2F0aW9uTWFuYWdlcikKIHsKICAgICBB
U1NFUlQobV9ub3RpZmljYXRpb25NYW5hZ2VyKTsKLSAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXIt
PnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlz
KSk7CisgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPE5v
dGlmaWNhdGlvblByb3ZpZGVyPigqdGhpcykpOwogfQogCiBXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcjo6fldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5oCmluZGV4IDllNThiY2IwYjFhYjMzZmFhZDk3ZmNmODU5ODEyN2U2MTBhMTIzMzYuLjM2Yjc4
MzQzODgwZDk2MDMwZTcyZmZhYTE1Mzc0OGVlNWIxZTNhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXIuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkqLCBXZWJLaXRXZWJDb250ZXh0Kik7
CiAgICAgfldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggNWJjZWY2OGY2
NWQyMzE4OTgwY2Y5MWRhZTU5M2Q3NjY3MTQ4YTk4OS4uODk2ZTEzZGFkOTdiZTdmZjc3NmMwM2Jm
NmU3ZDAyNzgyZTAzMjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMjI1LDYgKzIyNSw2IEBAIGNsYXNzIFVJQ2xp
ZW50IDogcHVibGljIEFQSTo6VUlDbGllbnQgewogCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2Vi
Vmlldykuc2V0VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxVSUNsaWVudD4od2ViVmlldykpOwor
ICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8
VUlDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKaW5kZXgg
NDhiMzhlYWMwOGQ5MTJjOTYzOWVmNTUwOTRiMTBmMWZmYWQxZDlmOS4uMjU1ZThlNWE2NzkyNzY0
ODMzZDM3ZGFmZjlmNTc5MGYwODU5NjY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBA
IC0xODIsNiArMTgyLDcgQEAgdm9pZCB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3Zl
X2FsbF9zY3JpcHRzKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWEKIH0KIAogY2xhc3MgU2Ny
aXB0TWVzc2FnZUNsaWVudEd0ayBmaW5hbCA6IHB1YmxpYyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
cjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
Y3JpcHRNZXNzYWdlQ2xpZW50R3RrKFdlYktpdFVzZXJDb250ZW50TWFuYWdlciogbWFuYWdlciwg
Y29uc3QgY2hhciogaGFuZGxlck5hbWUpCiAgICAgICAgIDogbV9oYW5kbGVyTmFtZShnX3F1YXJr
X2Zyb21fc3RyaW5nKGhhbmRsZXJOYW1lKSkKQEAgLTIzOCw3ICsyMzksNyBAQCBnYm9vbGVhbiB3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxl
cihXZWJLaXRVc2VyQwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG5hbWUsIEZBTFNFKTsKIAog
ICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdl
Q2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpV
c2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFn
ZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6
Om5vcm1hbFdvcmxkKCkpOwogICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0K
IApAQCAtMjg4LDcgKzI4OSw3IEBAIGdib29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyX2luX3dvcmxkKFdlCiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwod29ybGROYW1lLCBGQUxTRSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwg
bmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29y
bGROYW1lKSk7CisgICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVu
aXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9t
VVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1
cm4gbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggYWQ4M2RiODIz
ZDM3ZDIwZjUxM2IwMTIzY2UyNzRhMmJiZjQ3MTc4Mi4uOGM2ODk4Mjk1MzlmNDIyMzhiMzA3ZjU1
NTYwOGE1YzUwMDJkY2Y0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTE5OCw2ICsxOTgsNyBAQCBzdGF0aWMg
Z3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKIGNsYXNzIFdlYktpdEF1dG9tYXRpb25DbGllbnQgZmluYWwgOiBJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50KFdlYktpdFdl
YkNvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIDogbV93ZWJDb250ZXh0KGNvbnRleHQpCkBAIC0z
NjcsOSArMzY4LDkgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXR0
YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogCiAg
ICAgcHJpdi0+Z2VvbG9jYXRpb25NYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9u
TWFuYWdlckNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eT4oKSkpOwotICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bv
b2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250ZXh0
KTsKKyAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8V2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7CiAjaWYgUExBVEZPUk0oR1RLKSAm
JiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcj4od2ViQ29udGV4dCk7CisgICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyID0gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+KHdlYkNvbnRl
eHQpOwogI2VuZGlmCiB9CiAKQEAgLTY3OCw3ICs2NzksNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGdi
b29sZQogICAgICAgICAgICAgZ193YXJuaW5nKCJOb3QgZW5hYmxpbmcgYXV0b21hdGlvbiBvbiBX
ZWJLaXRXZWJDb250ZXh0IGJlY2F1c2UgdGhlcmUncyBhbm90aGVyIGNvbnRleHQgd2l0aCBhdXRv
bWF0aW9uIGVuYWJsZWQsIG9ubHkgb25lIGlzIGFsbG93ZWQiKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKKyAgICAg
ICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0QXV0
b21hdGlvbkNsaWVudD4oY29udGV4dCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbnRleHQtPnBy
aXYtPmF1dG9tYXRpb25DbGllbnQgPSBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGIyMzlhYzRl
MTllNjNkMzNhODY5ZGVmYjY2ZmMzYzBiNDUwMGI3ODUuLjc0MzBjM2ZjZmQ1NGM0NmVmYTY0ZTEy
ZmQ5N2RlNWE5MzI5OGE0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMDEsNiArMjAxLDcgQEAgY2xhc3MgUGFnZUxv
YWRTdGF0ZU9ic2VydmVyOwogI2lmIFBMQVRGT1JNKFdQRSkKIHN0YXRpYyB1bnNpZ25lZCBmcmFt
ZURpc3BsYXlDYWxsYmFja0lEOwogc3RydWN0IEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sgeworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBGcmFtZURpc3BsYXllZENhbGxi
YWNrKFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJE
YXRhID0gbnVsbHB0ciwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveU5vdGlmeUZ1bmN0aW9uID0gbnVs
bHB0cikKICAgICAgICAgOiBpZCgrK2ZyYW1lRGlzcGxheUNhbGxiYWNrSUQpCiAgICAgICAgICwg
Y2FsbGJhY2soY2FsbGJhY2spCkBAIC0yMjcsNiArMjI4LDcgQEAgc3RydWN0IEZyYW1lRGlzcGxh
eWVkQ2FsbGJhY2sgewogI2VuZGlmIC8vIFBMQVRGT1JNKFdQRSkKIAogc3RydWN0IF9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IH5fV2ViS2l0V2ViVmlld1ByaXZhdGUoKQogICAgIHsKICAgICAgICAgLy8gRm9yIG1vZGFsIGRp
YWxvZ3MsIG1ha2Ugc3VyZSB0aGUgbWFpbiBsb29wIGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5n
IHRoZSB3ZWJWaWV3LgpAQCAtMzI2LDYgKzMyOCw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0lzUGxh
eWluZ0F1ZGlvQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogfQogCiBjbGFzcyBQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQpAQCAtMzk5LDYgKzQwMiw3IEBAIGNsYXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlciBm
aW5hbCA6IHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAKICNpZiBQTEFURk9STShX
UEUpCiBjbGFzcyBXZWJWaWV3Q2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Vmlld0NsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
Vmlld0NsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQpAQCAtNzI1LDcgKzcyOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25z
dHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFn
ZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmlldywgcHJpdi0+dXNlckNvbnRl
bnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7CiAKLSAgICBwcml2LT5sb2FkT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7
CisgICAgcHJpdi0+bG9hZE9ic2VydmVyID0gbWFrZVVuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2
ZXI+KHdlYlZpZXcpOwogICAgIGdldFBhZ2Uod2ViVmlldykucGFnZUxvYWRTdGF0ZSgpLmFkZE9i
c2VydmVyKCpwcml2LT5sb2FkT2JzZXJ2ZXIpOwogCiAgICAgLy8gVGhlIHJlbGF0ZWQgdmlldyBp
cyBvbmx5IHZhbGlkIGR1cmluZyB0aGUgY29uc3RydWN0aW9uLgpAQCAtNzQxLDcgKzc0NSw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdQRSkKLSAgICBwcml2LT52aWV3LT5zZXRDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJWaWV3Q2xpZW50Pih3ZWJWaWV3KSk7CisgICAgcHJpdi0+dmlldy0+
c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmlldykpOwogI2VuZGlmCiAK
ICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGFmdGVyIGF0dGFjaFVJQ2xpZW50VG9WaWV3KCkgYmVj
YXVzZSBXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KCkgY2FsbHMgc2V0Q2FuUnVuTW9kYWwoKSB3
aXRoIHRydWUuCkBAIC0zNzAxLDYgKzM3MDUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
Y2FuX3Nob3dfbWltZV90eXBlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqCiB9
CiAKIHN0cnVjdCBWaWV3U2F2ZUFzeW5jRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkRhdGE7CiAgICAgR1JlZlB0cjxH
RmlsZT4gZmlsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGYwOWQ2YzdlOTIwNjgzYTc1NjY1Mjc2OTY3ZTc0N2Nj
NmNlZWI0ODEuLjA2YjNiODM2MDY1ZDlmNjZhMDc5OGEyMDk1NTEzY2E4NjhiMzFjNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3Bw
CkBAIC02NSw3ICs2NSw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChHdGtXaWRn
ZXQqIHZpZXdXaWRnZXQpCiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwog
c3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVE
cmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndl
YmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQp
KSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVX
X0JBU0UobV92aWV3V2lkZ2V0KSksIHByb2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29z
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29z
ZXIuY3BwCmluZGV4IDMxZTA5NzNmZTEwMDNjNmVhNjUyMzA2MWE2N2M5NDlkNTNlYmQ2YjcuLjJk
MWMyY2IzNjhhOTkzMzE2OTc0MjQ2YTBlZDU5OWMyOGRjYWU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKQEAg
LTUxOSw3ICs1MTksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2pp
U2VjdGlvbnMoV2ViS2l0RW1vamlDaG9vc2VyKiBjaG9vc2VyLCBHdAogICAgICAgICBjaG9vc2Vy
LT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBudWxscHRyOwogICAgIH07CiAKLSAgICBj
aG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrVGltZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOworICAgIGNob29zZXItPnBy
aXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9IG1ha2VVbmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RG
TW92ZShwb3B1bGF0ZVNlY3Rpb25zKSk7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0
aW9uc1RpbWVyLT5zZXRQcmlvcml0eShHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAgICAgY2hv
b3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zZXROYW1lKCJbV2ViS2l0RW1vamlD
aG9vc2VyXSBwb3B1bGF0ZSBzZWN0aW9ucyB0aW1lciIpOwogICAgIGNob29zZXItPnByaXYtPnBv
cHVsYXRlU2VjdGlvbnNUaW1lci0+c3RhcnRSZXBlYXRpbmcoeyB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCAwZjY3NDg2NDUyY2QxZmE4N2E4
Mjg2MmU3ZTYwNTczNGRmYzM1OTY4Li41YmE2MTBlN2Q5YTQ0ZDA0NzM4MzgxZTIzZDA0MGJkYTky
YzNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgU2NyaXB0TWVzc2FnZUNsaWVudChSZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXImIGluc3BlY3RvclByb3RvY29sSGFuZGxlcikKICAgICAgICAgOiBtX2luc3BlY3Rv
clByb3RvY29sSGFuZGxlcihpbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIpCkBAIC0xMDUsMTMgKzEw
NiwxMyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVz
dChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFu
YWdlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7
CiAgICAgYXV0byB1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdl
cnMuYWRkKHVzZXJDb250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJl
c3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50Pigq
dGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkp
OworICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICAgICAgd2Via2l0VXNlckNv
bnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5h
Z2VyKS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogICAgICAg
ICBnX29iamVjdF93ZWFrX3JlZihHX09CSkVDVCh1c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVy
cHJldF9jYXN0PEdXZWFrTm90aWZ5Pih1c2VyQ29udGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlz
KTsKICAgICB9CiAKICAgICBhdXRvKiBjbGllbnQgPSBtX2luc3BlY3RvckNsaWVudHMuZW5zdXJl
KHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgW3RoaXMsICZyZXF1ZXN0VVJMXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVS
TC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVl
c3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0
aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKICAgICBHU3RyaW5nKiBodG1s
ID0gZ19zdHJpbmdfbmV3KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCmluZGV4IDBmMDE3MTFlNzk2MWU4YjAwYzVlNTc0
ZDI4ODUwZDA1YjI0MWY2ZWMuLjgwZDIwYWE3NjAzYmFkYWI5MDBmZTRiZDE1OTBhYWQzOWIzMGUy
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
SW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkluc3BlY3Rvci5jcHAKQEAgLTI4NCw2ICsyODQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX2luc3BlY3Rvcl9jbGFzc19pbml0KFdlYktpdFdlYkluc3BlY3RvckNsYXNzKiBmaW5kQ2xh
c3MpCiB9CiAKIGNsYXNzIFdlYktpdEluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViS2l0SW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYkluc3BlY3Rv
ciogaW5zcGVjdG9yKQogICAgICAgICA6IG1faW5zcGVjdG9yKGluc3BlY3RvcikKQEAgLTM2MCw3
ICszNjEsNyBAQCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYmtpdFdlYkluc3BlY3RvckNyZWF0ZShX
ZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yKQogewogICAgIFdlYktpdFdlYkluc3BlY3Rv
ciogaW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQRUNUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9JTlNQRUNUT1IsIE5VTEwpKTsKICAgICBpbnNwZWN0b3ItPnByaXYtPndlYkluc3Bl
Y3RvciA9IHdlYkluc3BlY3RvcjsKLSAgICB3ZWJJbnNwZWN0b3ItPnNldENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdEluc3BlY3RvckNsaWVudD4oaW5zcGVjdG9yKSk7CisgICAgd2ViSW5z
cGVjdG9yLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3Bl
Y3RvcikpOwogICAgIHJldHVybiBpbnNwZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggMWI5ZGQ4
ZDFmNDYwMjE0ZjVhNzcyNjcyYzJmYjY1MzcwYjUyMGM1ZS4uODhiM2NmNDNiZmU2OGVlOTdjNzMx
Yjc2NGQ0NDk5MGE3YmZjNWE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTU2Niw3ICs1NjYsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVs
cGVyOjpzaW5nbGV0b24oKS50YXJnZXRMaXN0KCkpOwogCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uob2JqZWN0KS0+cHJpdjsKLSAgICBw
cml2LT5wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlld1dp
ZGdldCk7CisgICAgcHJpdi0+cGFnZUNsaWVudCA9IG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+
KHZpZXdXaWRnZXQpOwogICAgIHByaXYtPmRpYWxvZyA9IG51bGxwdHI7CiB9CiAKQEAgLTEyMjAs
NyArMTIyMCw3IEBAIEdlc3R1cmVDb250cm9sbGVyJiB3ZWJraXRXZWJWaWV3QmFzZUdlc3R1cmVD
b250cm9sbGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3CiB7CiAgICAgV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5n
ZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdlc3R1cmVDb250cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwg
c3RkOjptYWtlX3VuaXF1ZTxUb3VjaEdlc3R1cmVDb250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwor
ICAgICAgICBwcml2LT5nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8R2VzdHVyZUNvbnRy
b2xsZXI+KEdUS19XSURHRVQod2ViVmlld0Jhc2UpLCBtYWtlVW5pcXVlPFRvdWNoR2VzdHVyZUNv
bnRyb2xsZXI+KHdlYlZpZXdCYXNlKSk7CiAgICAgcmV0dXJuICpwcml2LT5nZXN0dXJlQ29udHJv
bGxlcjsKIH0KIApAQCAtMTUwMSw3ICsxNTAxLDcgQEAgRHJhZ0FuZERyb3BIYW5kbGVyJiB3ZWJr
aXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmkK
IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJp
djsKICAgICBpZiAoIXByaXYtPmRyYWdBbmREcm9wSGFuZGxlcikKLSAgICAgICAgcHJpdi0+ZHJh
Z0FuZERyb3BIYW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpw
cml2LT5wYWdlUHJveHkpOworICAgICAgICBwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIgPSBtYWtl
VW5pcXVlPERyYWdBbmREcm9wSGFuZGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgcmV0dXJu
ICpwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXI7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQ
UE9SVCkKQEAgLTE3MTMsNyArMTcxMyw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxh
dW5jaFdlYlByb2Nlc3MoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlCiAgICAg
aWYgKHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlcikKICAgICAgICAgcHJpdi0+dmlld0dlc3R1
cmVDb250cm9sbGVyLT5jb25uZWN0VG9Qcm9jZXNzKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHBy
aXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3
R2VzdHVyZUNvbnRyb2xsZXI+KCpwcml2LT5wYWdlUHJveHkpOworICAgICAgICBwcml2LT52aWV3
R2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9s
bGVyPigqcHJpdi0+cGFnZVByb3h5KTsKICAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9s
bGVyLT5zZXRTd2lwZUdlc3R1cmVFbmFibGVkKHByaXYtPmlzQmFja0ZvcndhcmROYXZpZ2F0aW9u
R2VzdHVyZUVuYWJsZWQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0KaW5kZXggMmNhYjJlMDUzODZkNDJiMzcxZjQ0MDZhYjcxYTdmNjU5MzBmN2Q3
Ny4uMTQ2MDNkNWFmZWJhZjZkZWUwMTE5Nzk1NzcwMzg4MzQ5ZDRlN2IzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTg5NSw2ICs4OTUsNyBAQCAtICh2
b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiB7CiAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1Ymxp
YyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChXS1Zp
ZXcgKndrVmlldykKICAgICAgICAgICAgIDogbV93a1ZpZXcod2tWaWV3KQpAQCAtOTMyLDcgKzkz
Myw3IEBAIC0gKHZvaWQpbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnQKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIGlmIChbc2VsZiByZXNwb25kc1RvU2Vs
ZWN0b3I6SWNvbkxvYWRpbmdDbGllbnQ6OmRlbGVnYXRlU2VsZWN0b3IoKV0pCi0gICAgICAgIF9k
YXRhLT5faW1wbC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
SWNvbkxvYWRpbmdDbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCku
c2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oc2VsZikp
OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nl
c3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9u
OihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiljb25maWd1cmF0aW9uCkBAIC05NDQsNyAr
OTQ1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9j
ZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYKICAgICBXZWJLaXQ6OkluaXRpYWxpemVX
ZWJLaXQyKCk7CiAKICAgICBfZGF0YSA9IFtbV0tWaWV3RGF0YSBhbGxvY10gaW5pdF07Ci0gICAg
X2RhdGEtPl9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxm
LCBudWxscHRyLCBwcm9jZXNzUG9vbCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisgICAgX2Rh
dGEtPl9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBudWxscHRy
LCBwcm9jZXNzUG9vbCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAKICAgICBbc2VsZiBtYXli
ZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmgKaW5kZXggMjE5OTFmOGRhZjMxYjQxYjE1NjVmZmY5
ODY1ZGU5OTM4ZmI4YTBkZi4uNjRjYTJmY2I1YTg1MTI3ZjViNDE0NzFlY2U2ZWE4ZjQ0NmNlMDUx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50
LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgVmlldzsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFz
cyBWaWV3Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5WaWV3Q2xpZW50KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDg1MTI5YTU0ODdj
OWZmYmVkNTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3NTg4NTczZGZmNDM2MDMz
NzdlZjhkMTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6OlZpZXcmIHZpZXcpCiAg
ICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fc2Nyb2xsR2Vz
dHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKIHsK
IH0KIApAQCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6Omhv
c3RGaWxlRGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQ
YWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcucGFn
ZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlz
cGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDljOWY2
ZTllM2IxOGI0MmY1M2Y3MmY4ZWI1NWE0ZTY3NTVkYjQ3YTIuLjNmNjMyNTEyMWQ4MjhlMzU4YWQx
NWI3NmM0ZDVjZGM0ODM3NWRjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgKQEAgLTMwLDYgKzMwLDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTY3JvbGxHZXN0dXJlQ29udHJvbGxlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2Nyb2xsR2VzdHVy
ZUNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dQRVZpZXcuY3BwCmluZGV4IGJlNTBmMTI3NGU4YzFmYTQ5MTA5YWEyODU1YjhiYjQxNTcx
NzA0NGYuLjEyZTMyZmFkNDAwMjhjNzdlNTcwMzA5Mjg0OTg0NDBkMDMwY2UwNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAtNDIsOCArNDIsOCBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogbmFtZXNwYWNlIFdLV1BFIHsKIAogVmlldzo6Vmll
dyhzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZCwgY29uc3QgQVBJOjpQYWdlQ29uZmln
dXJhdGlvbiYgYmFzZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2NsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6Vmlld0NsaWVudD4oKSkKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisgICAgOiBtX2NsaWVudChtYWtlVW5pcXVlPEFQ
STo6Vmlld0NsaWVudD4oKSkKKyAgICAsIG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDbGll
bnRJbXBsPigqdGhpcykpCiAgICAgLCBtX3NpemUgeyA4MDAsIDYwMCB9CiAgICAgLCBtX3ZpZXdT
dGF0ZUZsYWdzIHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUsIFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNW
aXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0luV2luZG93IH0KICAgICAsIG1fYmFj
a2VuZChiYWNrZW5kKQpAQCAtMTg0LDcgKzE4NCw3IEBAIFZpZXc6On5WaWV3KCkKIHZvaWQgVmll
dzo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlZpZXdDbGllbnQ+JiYgY2xpZW50KQog
ewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpWaWV3Q2xpZW50PigpOworICAgICAgICBtX2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpW
aWV3Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVu
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQ
RVF0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmll
dy5jcHAKaW5kZXggZTFkYzg1N2ZmOTk1ZWQwY2U2YTg1MzY1OWNjNWIxMzU2MWNiMzY2Yy4uYjRm
MjdiNmQzNGUyNDJiYTU1MzVhYjViMmU0ZWNlNTMxNWQwOWQzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcApAQCAtMTUwLDcgKzE1MCw3
IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRMb2FkRXZlbnQgZXZlbnQsCiAKICAgICBpZiAoc3RhdHVzU2V0KSB7CiAgICAg
ICAgIFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUodmlldy0+
dXJsKCksIGxvYWRTdGF0dXMsICIiKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmll
d0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3TG9h
ZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxX
UEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xv
YWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgICAgICBRX0VNSVQgdmlldy0+bG9h
ZGluZ0NoYW5nZWQobG9hZFJlcXVlc3QuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTE2Niw3ICsxNjYs
NyBAQCB2b2lkIFdQRVF0Vmlldzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0CiAgICAgICAgIGxvYWRTdGF0dXMgPSBXUEVRdFZp
ZXc6OkxvYWRTdGF0dXM6OkxvYWRGYWlsZWRTdGF0dXM7CiAKICAgICBXUEVRdFZpZXdMb2FkUmVx
dWVzdFByaXZhdGUgbG9hZFJlcXVlc3RQcml2YXRlKFFVcmwoUVN0cmluZyhmYWlsaW5nVVJJKSks
IGxvYWRTdGF0dXMsIGVycm9yLT5tZXNzYWdlKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRW
aWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdM
b2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BF
UXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxXUEVRdFZpZXdMb2Fk
UmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKICAgICBRX0VNSVQgdmlldy0+bG9hZGluZ0No
YW5nZWQobG9hZFJlcXVlc3QuZ2V0KCkpOwogfQogCkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGlj
IHZvaWQganNBc3luY1JlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIKICovCiB2b2lkIFdQRVF0Vmlldzo6cnVuSmF2YVNjcmlwdChjb25z
dCBRU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFFKU1ZhbHVlJiBjYWxsYmFjaykKIHsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4oY2FsbGJhY2ssIFFQb2ludGVyPFdQRVF0Vmlldz4o
dGhpcykpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRh
ID0gbWFrZVVuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8
V1BFUXRWaWV3Pih0aGlzKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KG1f
d2ViVmlldy5nZXQoKSwgc2NyaXB0LnRvVXRmOCgpLmNvbnN0RGF0YSgpLCBudWxscHRyLCBqc0Fz
eW5jUmVhZHlDYWxsYmFjaywgZGF0YS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcAppbmRl
eCBhODUyNmNlZDAyMGY2MzQ0ZTcyZmJjYzNhYTQ0OWMyZGQzYWJkMWY5Li4xM2ZkMzdhZWZmMmI2
NTM1ZDU0ZjMxNGM0MTZlMWNiODY4ZTNlODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0JhY2tlbmQ+IFdQRVF0Vmlld0JhY2tlbmQ6
OmNyZWF0ZShjb25zdCBRU2l6ZUYmIHNpemUsIFEKICAgICBpZiAoIWVnbENvbnRleHQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRW
aWV3QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxheSwgZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFUXRWaWV3QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxh
eSwgZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7CiB9CiAKIFdQRVF0Vmlld0JhY2tlbmQ6OldQ
RVF0Vmlld0JhY2tlbmQoY29uc3QgUVNpemVGJiBzaXplLCBFR0xEaXNwbGF5IGRpc3BsYXksIEVH
TENvbnRleHQgZWdsQ29udGV4dCwgUVBvaW50ZXI8UU9wZW5HTENvbnRleHQ+IGNvbnRleHQsIFFQ
b2ludGVyPFdQRVF0Vmlldz4gdmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
cHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCmluZGV4IDQyMDhlOGYyMmUwYWE0ZWRkODViNTIyNTkw
NGMyZGM0OTliMDVlOTYuLjk0OTM3YjAwMTk0NjI1MzYyZjY0NGNhNzcwNTA4ZDBkYWE2NzQzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFj
a2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXIuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIFVJVmlldzsKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBBcHBsaWNhdGlvblN0YXRlVHJhY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyKFVJVmlldyAqLCBTRUwg
ZGlkRW50ZXJCYWNrZ3JvdW5kU2VsZWN0b3IsIFNFTCBkaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRl
ckVudGVyaW5nQmFja2dyb3VuZFNlbGVjdG9yLCBTRUwgd2lsbEVudGVyRm9yZWdyb3VuZFNlbGVj
dG9yKTsKICAgICB+QXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKaW5kZXggZTMzNTQzYjdiZGExZDU5M2YzMDQ1M2FlNGQ2OWJmMjVkZTc0MGNiZS4uYWI5ZDQ4
NDNmZjc1MDM4OTIxNzM0YWNlMzQ0MWYxZDE1NzU4MDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKQEAgLTczLDExICs3MywxMSBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0UGFnZUxv
YWRUaW1lb3V0ID0gMzAwX3M7CiBzdGF0aWMgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSBkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDsKIAog
V2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRpb25TZXNzaW9uKCkKLSAgICA6IG1fY2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkKKyAg
ICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkK
ICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRS
b3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZG9tYWluRGlzcGF0Y2hlcihBdXRvbWF0aW9uQmFj
a2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2JhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAs
IG1fZG9tYWluTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNw
YXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZG9tYWluTm90aWZpZXIobWFrZVVu
aXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fbG9hZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYkF1dG9tYXRpb25TZXNz
aW9uOjpsb2FkVGltZXJGaXJlZCkKIHsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApp
bmRleCA2YjA5YmFkYjhkMGNlYmFiZjJjNjlmNjAwOWIxYmQxZDIzYzA5ZTU4Li41M2IzNzcwN2U4
N2M1MWRjNGFlOWQ2MzliMWQ0ZjMyNjM4MDY4YjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wg
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBPcHRpb25TZXQ8CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9u
SUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNl
aXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNv
ZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92
ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKaW5kZXggMTBhOGU0MjQxM2Iy
OWFmZmI2Mzc3ZDg0YTA5YmU1MTFiZDI1MWQ1Yy4uZGU0MGZjOGYzMTc2OTc1YjE1MmM0ZWZhYTQw
MTU3Yzk0ZjJmYTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJs
aWMgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoaWQg
PF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCmluZGV4IGIwMTFkZDNhNzIz
OTczMjA1Y2M2ZGY0Y2M2NmE2NzkwNmMwMjliMGQuLjA3NDM3OTA0ZjFlNDIzMGIzMTU4MmE5ZGY0
MmMyM2MxNGQ2MDVhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0ljb25Mb2FkaW5nRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0RlbGVnYXRlKFdLV2Vi
VmlldyAqKTsKICAgICB+SWNvbkxvYWRpbmdEZWxlZ2F0ZSgpOwpAQCAtNDgsNiArNDksNyBAQCBj
bGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlIHsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBJY29uTG9h
ZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJY29u
TG9hZGluZ0NsaWVudChJY29uTG9hZGluZ0RlbGVnYXRlJik7CiAgICAgICAgIH5JY29uTG9hZGlu
Z0NsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25M
b2FkaW5nRGVsZWdhdGUubW0KaW5kZXggYTM0NGRmZjljZTBkNTM1Y2EzMGRiMmJlYjViY2JkN2Mw
ZDc0Y2ZiNC4uMTYzZmI5NTJlZTBlYTliNzFhM2Q0OWQzZGQ5N2NlMDA0M2NjNjhmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRl
Lm1tCkBAIC00NCw3ICs0NCw3IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6On5JY29uTG9hZGluZ0Rl
bGVnYXRlKCkKIAogc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+IEljb25M
b2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2FkaW5nQ2xpZW50KCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oKnRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CiB9CiAKIFJldGFpblB0cjxpZCA8
X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4gPiBJY29uTG9hZGluZ0RlbGVnYXRlOjpkZWxlZ2F0ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBhNTFh
MjIzNjIzODQxNTFhYjExZDQ4OTQzNjlmOGExODU4MDA2N2RhLi5mNTEzN2Y5Y2M3MzE2Mzg4ZTYx
ZGUxMDc3M2ZmMzQyODU2MjUwNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW0KQEAgLTc4LDEzICs3OCwxMyBAQCBVSURlbGVnYXRlOjp+VUlEZWxlZ2F0
ZSgpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250
ZXh0TWVudUNsaWVudD4gVUlEZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVDbGllbnQoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50PigqdGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKIH0KICNlbmRp
ZgogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4gVUlEZWxlZ2F0ZTo6Y3JlYXRlVUlD
bGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50PigqdGhpcyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRy
PGlkIDxXS1VJRGVsZWdhdGU+ID4gVUlEZWxlZ2F0ZTo6ZGVsZWdhdGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmNwcAppbmRleCA0OGMyYjJiNGUwNjEwNjkyNzJhZWI4Yjk0YTIzNGVhYTkyNmFm
NzZkLi45MWNmOTQ4MGM3NTE4Y2Q5YmIxN2U5ZmNhNGU5MTZkMGIwNzNiMDhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmNwcApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5OjpTb3VyY2VQcm94eSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZl
ciwgcHVibGljIFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlOjpDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNvdXJjZVByb3h5KHVpbnQ2NF90IGlkLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFJlZjxSZWFsdGltZU1lZGlhU291cmNl
PiYmIHNvdXJjZSkKICAgICAgICAgOiBtX2lkKGlkKQpAQCAtMTY4LDcgKzE2OSw3IEBAIHZvaWQg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJl
RGV2aWNlV2l0aENvbnN0cmFpCiAgICAgICAgIHNvdXJjZS0+c2V0SXNSZW1vdGUodHJ1ZSk7CiAg
ICAgICAgIHNldHRpbmdzID0gc291cmNlLT5zZXR0aW5ncygpOwogICAgICAgICBBU1NFUlQoIW1f
cHJveGllcy5jb250YWlucyhpZCkpOwotICAgICAgICBtX3Byb3hpZXMuYWRkKGlkLCBzdGQ6Om1h
a2VfdW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1v
dmUoc291cmNlKSkpOworICAgICAgICBtX3Byb3hpZXMuYWRkKGlkLCBtYWtlVW5pcXVlPFNvdXJj
ZVByb3h5PihpZCwgKm1fcHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc291cmNlKSkpOwog
ICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29uc3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9y
RXJyb3IuZXJyb3JNZXNzYWdlKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZWVkZWQsIGlu
dmFsaWRDb25zdHJhaW50cywgV1RGTW92ZShzZXR0aW5ncykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5oCmluZGV4IDljYTZmYTM1MzQ5NjAxODAzZGY1ZDNkMWIyYWJhMzE2NTU3NDBjMzkuLjliZGRi
OTkwOWRmN2U4ZmVmMWU1NDgwNmNiZTZiYzVjNDBjZmM1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgU2hhcmVkTWVtb3J5OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OwogCiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5IDogcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShXZWJQcm9j
ZXNzUHJveHkmKTsKICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
aW5kZXggMzA3MGQ1NzQ0M2ZkZjcxOTYwODYwMzBlM2U2MzE0MWUwNjc4NTgyNi4uZTVlMzJkMmZh
MmEwODYwNDE3YzZjZjgwZDdiY2U1OWI5YTczOWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0xMzUsNyArMTM1
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBpZiAo
IVtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJL
aXRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciJdKQogICAgICAgICBpbnN0YWxsTWVtb3J5
UHJlc3N1cmVIYW5kbGVyKCk7CiAKLSAgICBzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+
KCkpOworICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVl
PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CiB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0
YXJ0RGlzcGxheUxpbmsoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1bnNpZ25lZCBvYnNl
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgYXV0byBkaXNwbGF5
TGluayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpbms+KGRpc3BsYXlJRCk7CisgICAgYXV0
byBkaXNwbGF5TGluayA9IG1ha2VVbmlxdWU8RGlzcGxheUxpbms+KGRpc3BsYXlJRCk7CiAgICAg
ZGlzcGxheUxpbmstPmFkZE9ic2VydmVyKGNvbm5lY3Rpb24sIG9ic2VydmVySUQpOwogICAgIG1f
ZGlzcGxheUxpbmtzLmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlMaW5rKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmlu
ZGV4IDVjMjFjYTc1YTE4MjljNTBmMWQ4MmY1Nzc3OGI0ZTg2ZTY5ZDcwZWEuLmIxZWM4NDZiN2I0
NjA1NDhjZTBmODZkN2E1ZDExN2E2NzY3OGM0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0yMDUsNyArMjA1
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3Bl
bmRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCkKICAgICBhdXRvIGJhY2tncm91bmRBY3Rpdml0
eVRpbWVvdXRIYW5kbGVyID0gW2FjdGl2aXR5VG9rZW4gPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHk6OnBy
b2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5kIGFj
dGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdldCgpKTsKICAgICB9OwotICAgIG1fdW5leHBl
Y3RlZEFjdGl2aXR5VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVP
bmVTaG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1
bmV4cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CisgICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1l
ciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92ZShi
YWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0
aW9uKTsKICAgICBjb21wbGV0aW9uKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggY2FiMDU1MDlmYjZkMDJiYjQzZTg4ZDhk
NjU0ODlmZmI3MjJmZTgwMi4uOGRmNGRhN2IzMjA4MDk0NmRmNzFjOTI4MjE2NTNmNmVhOTQwNzU3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTEzMTUsNyArMTMxNSw3IEBAIHN0YXRpYyBOU1RyYWNraW5nQXJlYU9wdGlvbnMgdHJhY2tpbmdB
cmVhT3B0aW9ucygpCiAKIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJ
bXBsRGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViVmlldywgV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQogICAgIDogbV92aWV3KHZpZXcpCi0gICAgLCBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlldywgb3V0ZXJXZWJWaWV3KSkKKyAgICAsIG1fcGFnZUNs
aWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQogICAg
ICwgbV9wYWdlKHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSkpCiAgICAgLCBtX25lZWRzVmlld0ZyYW1lSW5XaW5kb3dDb29yZGlu
YXRlcyhtX3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1Z2luc0VuYWJsZWQoKSkKICAgICAsIG1faW50
cmluc2ljQ29udGVudFNpemUoQ0dTaXplTWFrZShOU1ZpZXdOb0ludHJpbnNpY01ldHJpYywgTlNW
aWV3Tm9JbnRyaW5zaWNNZXRyaWMpKQpAQCAtMTM1Myw3ICsxMzUzLDcgQEAgV2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmll
dyAqb3V0ZXJXZWIKICAgICB2aWV3LmxheWVyQ29udGVudHNQbGFjZW1lbnQgPSBOU1ZpZXdMYXll
ckNvbnRlbnRzUGxhY2VtZW50VG9wTGVmdDsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OkZ1bGxzY3JlZW5DbGllbnQ+KHZpZXcpKTsKKyAgICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KHZpZXcpKTsKICNlbmRpZgog
CiAgICAgV2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMTcx
MSw5ICsxNzExLDkgQEAgQ0dTaXplIFdlYlZpZXdJbXBsOjpmaXhlZExheW91dFNpemUoKSBjb25z
dAogc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eT4gV2ViVmlld0ltcGw6
OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewogICAg
IGlmIChbW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5
OkAiV2ViS2l0MlVzZVJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIl0gYm9vbFZhbHVlXSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk+KG1f
cGFnZSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKIH0KIAogYm9vbCBXZWJWaWV3SW1w
bDo6aXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nKCkgY29uc3QKQEAgLTMzNTYsNyArMzM1Niw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKIHZvaWQgV2ViVmlld0lt
cGw6OnNldFRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvciYgdGV4dEluZGljYXRv
ciwgV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lIGxpZmV0aW1lKQogewogICAg
IGlmICghbV90ZXh0SW5kaWNhdG9yV2luZG93KQotICAgICAgICBtX3RleHRJbmRpY2F0b3JXaW5k
b3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c+KG1fdmll
dy5nZXRBdXRvcmVsZWFzZWQoKSk7CisgICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxl
YXNlZCgpKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRl
cyA9IFtbbV92aWV3IHdpbmRvd10gY29udmVydFJlY3RUb1NjcmVlbjpbbV92aWV3IGNvbnZlcnRS
ZWN0OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygp
IHRvVmlldzpuaWxdXTsKICAgICBtX3RleHRJbmRpY2F0b3JXaW5kb3ctPnNldFRleHRJbmRpY2F0
b3IodGV4dEluZGljYXRvciwgTlNSZWN0VG9DR1JlY3QodGV4dEJvdW5kaW5nUmVjdEluU2NyZWVu
Q29vcmRpbmF0ZXMpLCBsaWZldGltZSk7CkBAIC00MzU4LDcgKzQzNTgsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSkKIFZpZXdHZXN0dXJlQ29udHJvbGxlciYgV2ViVmlld0ltcGw6OmVuc3VyZUdl
c3R1cmVDb250cm9sbGVyKCkKIHsKICAgICBpZiAoIW1fZ2VzdHVyZUNvbnRyb2xsZXIpCi0gICAg
ICAgIG1fZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlQ29u
dHJvbGxlcj4obV9wYWdlKTsKKyAgICAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOwogICAgIHJldHVybiAqbV9nZXN0dXJl
Q29udHJvbGxlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCA4ZWFjZDkxYTFlNmFlNDg1NjVjOWU1
OGNjZGExMGYzZWE0NDRjMjc2Li42MjY0ZGRiN2Y3OTBjMmZjY2NkZjQxMGRmNmUyYzkzMzdiNjVk
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUlu
Zm8mIHVwCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9iYWNraW5nU3RvcmUpCi0gICAg
ICAgIG1fYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmU+KHVwZGF0
ZUluZm8udmlld1NpemUsIHVwZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0b3IsIG1fd2ViUGFnZVBy
b3h5KTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZT4o
dXBkYXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQ
YWdlUHJveHkpOwogCiAgICAgbV9iYWNraW5nU3RvcmUtPmluY29ycG9yYXRlVXBkYXRlKHVwZGF0
ZUluZm8pOwogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljczo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyhXVEY6OkZ1bmMKICAg
ICB9CiAKICAgICBpZiAoIW1fZHJhd2luZ01vbml0b3IpCi0gICAgICAgIG1fZHJhd2luZ01vbml0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNz
OjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2RyYXdpbmdNb25p
dG9yID0gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJh
d2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsKICAgICBtX2RyYXdpbmdNb25pdG9yLT5zdGFy
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmluZGV4IGEyZDAzODZhY2Y1
ZDhhZDUzNWM3OTEyYTg4NmNiZDBmMDA1NDc4NjguLjZhYTI0N2JkODc3MDIxNTg4MjQ3MTZhNjY1
ZWUxYjc4Njk2YTZhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3JpZ2luPiBEZXZpY2VJZEhh
c2hTYWx0U3RvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGhh
c2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RG
TW92ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUocGFyZW50U2VjdXJpdHlP
cmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKKyAgICBhdXRv
IGhhc2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92
ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUocGFyZW50U2VjdXJpdHlPcmln
aW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAogICAgIGhhc2hT
YWx0Rm9yT3JpZ2luLT5sYXN0VGltZVVzZWQgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFz
dFRpbWVVc2VkKTsKIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwoU2VjdXJpdHlPcmln
CiAKICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7
CiAKLSAgICAgICAgYXV0byBuZXdIYXNoU2FsdEZvck9yaWdpbiA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoZG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHBhcmVu
dE9yaWdpbiksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgICAgICBhdXRvIG5ld0hh
c2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShk
b2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhh
c2hTYWx0KSk7CiAKICAgICAgICAgcmV0dXJuIG5ld0hhc2hTYWx0Rm9yT3JpZ2luOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAppbmRleCA2M2E0OWI1NjdkYjhkYTUzZjU3OTlh
NTAzNDRmMzEyNTFmNWU5Njg0Li5kYzVhZGYxYTNlNGI5NGFhMDE0YjQzMGVmYTY2ZGUwOWY5NWNh
N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHlNYXAuY3BwCkBAIC04OCwxMSArODgsMTEgQEAgRG93bmxvYWRQcm94eSYgRG93
bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wKIAogICAgIGlmIChtX2Rvd25sb2Fkcy5zaXplKCkgPT0gMSAmJiBtX3Nob3VsZFRha2VB
c3NlcnRpb24pIHsKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkVUlBc3NlcnRpb24pOwotICAg
ICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZFVJQXNz
ZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lE
KCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29y
a2luZyk7CiAKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkTmV0d29ya2luZ0Fzc2VydGlvbik7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzcyk7Ci0gICAgICAgIG1fZG93bmxvYWRO
ZXR3b3JraW5nQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPiht
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fZG93bmxvYWROZXR3
b3JraW5nQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0
ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJVSVByb2Nlc3MgdG9vayAnV2ViS2l0IGRvd25sb2FkcycgYXNzZXJ0aW9ucyBm
b3IgVUlQcm9jZXNzIGFuZCBOZXR3b3JrUHJvY2VzcyIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCAzZGVmNWQ3OWYwN2NiOTE0MGI4MjU2
MmRiOWY2ZjJiYzZkMGY3MmY2Li41NjA2YzUxMTY1MzRmNDNjZmM4MDZkNTExZDQxZWQ5OGNmYjI1
MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC01
Miw2ICs1Miw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHJvdGVjdGVkIElQQzo6TWVzc2FnZVNlbmRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhd2luZ0FyZWFQcm94eSk7CiAKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFk
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQ
cm92aWRlci5jcHAKaW5kZXggZWNhYWMzMDFiNGJkZjQ2ZjJjODljZGRlNzFkMTkzMjU0NTE0ZjY0
MC4uZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIyM2Q1NGI5ODJhZWNmZDEwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5l
Y3RlZEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQKICAgICBmb3IgKGF1dG8q
IGdhbWVwYWQgOiBpbml0aWFsR2FtZXBhZHMpIHsKICAgICAgICAgaWYgKCFnYW1lcGFkKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOworICAgICAgICBtX2dhbWVw
YWRzW2dhbWVwYWQtPmluZGV4KCldID0gbWFrZVVuaXF1ZTxVSUdhbWVwYWQ+KCpnYW1lcGFkKTsK
ICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHBvb2wgOiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBh
ZHMpCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1H
YW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCkKICAgICAgICAgbV9nYW1l
cGFkcy5ncm93KGdhbWVwYWQuaW5kZXgoKSArIDEpOwogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRz
W2dhbWVwYWQuaW5kZXgoKV0pOwotICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IHN0
ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVw
YWQuaW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oZ2FtZXBhZCk7CiAKICAgICBzY2hl
ZHVsZUdhbWVwYWRTdGF0ZVN5bmMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKaW5kZXgg
N2Q1NmIwYTI0NjNkZWRmMTY2OTU4YzI4ZmZiNzVhYTBlMmNlNTFmMS4uZTZiYzBhNDUwNTY1ZWUy
ZWZhMWJkMDVhMmE3NTYxMTFhMTVkOThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCkBA
IC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7
CiAKIGNsYXNzIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIaWdoUGVyZm9ybWFu
Y2VHcmFwaGljc1VzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCA5NGZhZjZiOWRlMjYyMDFkODRkMjZmZjgzOTMzZjgyMjljMDVkNmI5Li4yNzdjYTA0NGU0
MDdiMDdiYzRhZjU4ZjIyMjE3Y2I2YjY4NDI4YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2NCw3
ICsxNjQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVBcHBJc0JhY2tn
cm91bmQoYm9vbCBiYWNrZ3JvdW5kKQogRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKIHsKICAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKLSAgICAgICAgbV9kb3dubG9h
ZFByb3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7Cisg
ICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IG1ha2VVbmlxdWU8RG93bmxvYWRQcm94eU1hcD4o
KnRoaXMpOwogCiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQ
cm94eShtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOwogfQpAQCAtMTIxMSw3ICsxMjEx
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
dGFrZVVwbG9hZEFzc2VydGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX3VwbG9hZEFzc2VydGlvbik7
Ci0gICAgbV91cGxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3Rh
dGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIG1fdXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVu
aXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9h
ZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhclVwbG9hZEFzc2VydGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IDQzMzU0NWMwZTMzZmFhZWVkOWRlYmIzNGY2YjIwY2ZjYWU1ZTk1YzguLjU5NWIzZWU0MTVjZGY3
MDQ2MDljNTM2YzkwYWJhMjU5NzE3ZDQ2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC03MCw2ICs3MCw3IEBA
IGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Owogc3RydWN0IFdlYnNpdGVEYXRh
OwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVBy
b2Nlc3NQcm94eSwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgVG9wRnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApp
bmRleCAyYWFmZjFlYzJhNjU0OTBkODg1NDM5OTZiZjgxMDJjMmQ0OWM1MDQyLi40N2EzZTliMjNi
YTEyNjUxOThiNjBlZGRmNmM0ZGQ5ODZmY2QyMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuY3BwCkBAIC01NiwxNCArNTYsMTQgQEAgUmVmPFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJv
Y2Vzc1AKIAogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1
cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKSkKKyAgICAsIG1fcHJvdmlkZXIobWFrZVVuaXF1
ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQogewogfQogCiB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZp
Y2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7CiAgICAgaWYgKCFwcm92aWRlcikgewotICAg
ICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3Zp
ZGVyPigpOworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlv
blByb3ZpZGVyPigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKaW5kZXggZWM2NGJjOWUxNjJjYjdjYTFlNzUzN2U5MzMxZDRmMTM5NTg3
ZWM0MS4uNmNmNWUxNGVhNTY5ZjIzZGE4NDc1NDA5NmNhNTExNDUzYzI5OGI5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHVzaW5nIExheWVy
SG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwogI2VuZGlmCiAKIGNsYXNzIFBhZ2VDbGllbnQg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZUNsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VDbGllbnQoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVz
YWdlU2FtcGxlci5oCmluZGV4IDAxYTdkYTdiODkxYTkwMDY2YzkwZTg0MjljNjU2YmQ3MDBiMTY2
YmQuLmVhNDM5MjdkNDhkNzUyYmViNjcyODA5NDk5YzlhZDBiZmUwN2JjNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2w7CiAKIGNsYXNzIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bvb2wmKTsKICAgICB+UGVyQWN0
aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3Bw
CmluZGV4IGY2ZjQ3OWIxZTAzOTJmMzIyMTYwYTY0OTRhZWM2MmUwYTA2Nzk2ZGQuLjg0MzY5ZDMz
NDQwN2NmYmMyZTgzYWE4MjdjNWNjMGU1ZGI5MTIyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRm
b3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGEKICNpZiBQ
TEFURk9STShHVEspCiBzdGF0aWMgYm9vbCBwbHVnaW5SZXF1aXJlc0d0azIoY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IHN0
ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TW9kdWxlPiBtb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0aCk7CiAgICAgaWYg
KCFtb2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtb2R1
bGUtPmZ1bmN0aW9uUG9pbnRlcjxncG9pbnRlcj4oImd0a19vYmplY3RfZ2V0X3R5cGUiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKaW5kZXggMDBhOTkx
ODg2MTQ4NzM5MzhhNmNiNGFiZDk5MTRiYzg2Mjk0NWNmNy4uNGNlMjYyZTlkY2JiNGIxYjBmZjBh
ZDVkYjk3ZWI5N2YzNjA3Mzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvY2Vzc1Rocm90dGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6
OmRpZENvbm5lY3RUb1Byb2Nlc3MoUHJvY2Vzc0lEIHBpZCkKIAogICAgIG1fc3VzcGVuZFRpbWVy
LnN0b3AoKTsKICAgICBpZiAobV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKQotICAg
ICAgICBtX2Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9u
PihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAg
ICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlk
LCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgZWxz
ZQotICAgICAgICBtX2Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlv
bj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7Cisg
ICAgICAgIG1fYXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJX
ZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX3Byb2Nl
c3MuZGlkU2V0QXNzZXJ0aW9uU3RhdGUoYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgbV9hc3NlcnRp
b24tPnNldENsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDYwZjAyYzYxMGZjZDk4ODMwNjM5YzU3YjNlOWQ2MWZm
MWZkNTI1ZmQuLjI3NGFiZDMwMjljMDA3NzMzOWRmZTM3NDhmZjMwNjk3YzliNDhiNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMDcs
NyArMTA3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHksIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICA6IERyYXdp
bmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCB3ZWJQYWdlUHJveHks
IHByb2Nlc3MpCi0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcykpCisgICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3Qo
bWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcykpCiB7CiAjaWYgSEFWRShJT1NV
UkZBQ0UpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwb29sIHN1cmZhY2VzIGluIHRoZSBVSSBw
cm9jZXNzLgpAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6dXBkYXRlRGVidWdJbmRpY2F0b3IoSW50U2l6ZSBjb250ZW50c1NpemUsCiAKIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNh
dG9yKCkKIHsKLSAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpOworICAgIG1fZGVidWdJbmRpY2F0b3JM
YXllclRyZWVIb3N0ID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcyk7CiAg
ICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3QtPnNldElzRGVidWdMYXllclRyZWVIb3N0
KHRydWUpOwogCiAgICAgbV90aWxlTWFwSG9zdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxs
b2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggMzAwMjVkNDI5OWYz
YmNhMDQ4NWQzMDRkODMzNTgxNzYxMGJhNTBiZC4uOGE0ZTUwNDgxN2ViYzEyNWNlODk4YzFjMjkx
ZDlhNmU0ZDVmNTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI1Miw3ICsy
NTIsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxh
eWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykK
IHsKICAgICBhdXRvIG1ha2VXaXRoTGF5ZXIgPSBbJl0gKFJldGFpblB0cjxDQUxheWVyPiBsYXll
cikgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2Rl
Pihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3Zl
KGxheWVyKSk7CiAgICAgfTsKICAgICBhdXRvIG1ha2VBZG9wdGluZ0xheWVyID0gWyZdIChDQUxh
eWVyKiBsYXllcikgewogICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihhZG9wdE5TKGxheWVy
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlTm9kZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCmluZGV4IGU4OGJiYzYwOGQ0ZmIwNTgzODRk
MjliMjY5ODE1OTJlZGE4MTRlYmEuLjRmZDRlYTI2OWU4Y2MxYmRmZmIyZWIyNTk3ZDRmNzUwZDg0
MjQwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCkBAIC03Myw3ICs3Myw3IEBAIFJl
bW90ZUxheWVyVHJlZU5vZGU6On5SZW1vdGVMYXllclRyZWVOb2RlKCkKIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxh
aW5MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCkK
IHsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIgPSBhZG9wdE5TKFtbV0tQbGFpblJlbW90
ZUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKIH0K
IAogdm9pZCBSZW1vdGVMYXllclRyZWVOb2RlOjpkZXRhY2hGcm9tUGFyZW50KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaApp
bmRleCBjMjc4MWRjOGFkYTM0MzM5Zjc5ZWQ4NWE3ZTNlOWZmNzY1MjIyNTI4Li4yOWRmZWZlNmNi
NzJjMTIwYTYxY2MyMmQwZDNiYTY0YTZkOTQ0MjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCkBAIC0zMyw2ICszMyw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTsKIAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eSYpOwogICAgIH5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDg2ZDBk
ZWZjNjk2NWU0ZmE2YmExMTY0NzYxYmM5YWM3MTk4YzcyZTYuLjFhNzY5NDNmMjQ1YmUxY2Q4MjJm
MTk2MTNjZGQzNWY1NDBhOTRjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHkuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBSZW1vdGVTY3JvbGxpbmdU
cmVlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCmluZGV4IDYyOWE5YzY1
MGQ0M2MwZDU2MWM4MTkzM2JhMGQxNGU4ZDMzZWE0NDQuLjBjMTI2YWU2YWY3NWU0MTM4YWZkMDA4
NjgzOTU2NjI5ZmY3MDAyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJ
T1MubW0KQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIFJldGFpblB0cjxVSVZpZXc+IGNyZWF0ZVJl
bW90ZVZpZXcocGlkX3QgcGlkLCB1aW50MzJfdCBjb250ZXh0SUQpCiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9w
ZXJ0aWVzKQogewogICAgIGF1dG8gbWFrZVdpdGhWaWV3ID0gWyZdIChSZXRhaW5QdHI8VUlWaWV3
PiB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJl
ZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZSh2aWV3KSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RG
TW92ZSh2aWV3KSk7CiAgICAgfTsKICAgICBhdXRvIG1ha2VBZG9wdGluZ1ZpZXcgPSBbJl0gKFVJ
VmlldyogdmlldykgewogICAgICAgICByZXR1cm4gbWFrZVdpdGhWaWV3KGFkb3B0TlModmlldykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLm1tCmluZGV4IDgxYTJlYjlhNjM1ZDU5ODQxNjAwZjc4MzUyMDRh
Yzg0YmQ2ZDVjMjguLmI4OTA2ODFlOWU3YTUxM2JhMzQzNjdjZWYzOTg5YmUzYjE5ZDljYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVJT1MubW0KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNv
bnN0IFMKIAogICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAgICAgIGlmIChz
Y3JvbGxDb250YWluZXJMYXllcigpKQotICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdh
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbWFrZVVu
aXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcyk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbnVsbHB0cjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW0KaW5kZXggYjU2ZTJlYTY0ZGE1MjAzMWRmYWYxMjhlYzI0OGNk
MTVjNzEwMDkyNi4uZDBiZGQzYzU3ZGJiY2JlZjA3MGU4NTFhZmUwNGVlZTZhYWI1N2Q5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5tbQpAQCAtNDMsNyArNDMsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUwog
CiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1Ry
ZWUsIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Ny
b2xsaW5nTm9kZURlbGVnYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpKQorICAgICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUo
bWFrZVVuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLmgKaW5kZXggNjQ4OWE4ZTc0NDJkN2IxNzA1Mjk1YjYyZWViNWMw
MjVjN2E5YjMzYS4uZTYzN2Q2MTUzMjVkMzgwY2U5MmQwN2EyYjEyMTkxM2ZmMTgxZGQyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUyA6IHB1YmxpYyBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJik7CiAgICAgflNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
bWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IDMy
YTFlMzNhYTg1NjdjMGI2MTYyZTA2NzgzY2YzNzZjZjYxOTA3ZTIuLjIzM2ZmZDAyMWU2MzhiZjE4
OGY4ZGNhYmQ3NzljNzQ1Mjk0MzcyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApAQCAtMzYs
NyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYyhTY3JvbGxpbmdUcmVlJiB0cmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwg
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWModHJlZSwgbm9kZVR5cGUsIG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVy
UGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjLmNwcAppbmRleCBkODk2MGNlYzMwZTQzMzE5YWEwMjdkOWEyMWZjZWZj
ODM3NjM1MDQzLi5iNmNhM2NiYmE4MDgwN2FmN2I5ZjY5OWJlOWIxYjJhYTljZGMxYzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWM+IFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ04KIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyhTY3JvbGxpbmdU
cmVlJiB0cmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9sbGVyUGFp
cihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQorICAgICwgbV9zY3Jv
bGxlclBhaXIobWFrZVVuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKaW5k
ZXggZjI2MWY1MjY4MTUyZDBmZGRiNjg1NTFhODYwMTUyZTQxNjdkMGFlYy4uMmI5MGUxYjg5YzBh
YTVlZWVhZjA1NGRlNDI4ZGVlZDQwZTYzYThiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4IGY1MDVlMjgwYzQ0MjkwYTgwM2RiZGI2OGM5
OGVlYTYzMGIxYzliYjYuLjg2OGI1NGU3OTJhZjJhYmQ5ODZiYzg2NjAwNWNiMTJmNDU2ODI0Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFz
cyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eQogICAgICwgcHJpdmF0ZSBM
b2dnZXJIZWxwZXIKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
KFdlYlBhZ2VQcm94eSYpOwogICAgIH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KaW5kZXggOWVhZTE4ZWRkNWY0ZDJkYzVk
ZjM4ZTk2ZDA1MDUwOTNiY2E5YjM5OC4uYWJkMGU3ZTcyOTQ3OTEyOGNiNmFmZmY3ZjIxODEyNjNl
NGRhOTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCkBAIC05Miw3ICs5Miw3IEBAIFVu
aXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBIaWRTZXJ2aWNlOjpjcmVhdGVIaWRDb25uZWN0aW9uKElP
SElERGV2aWNlUmVmIGRldmljZSkKIAogdm9pZCBIaWRTZXJ2aWNlOjpkZXZpY2VBZGRlZChJT0hJ
RERldmljZVJlZiBkZXZpY2UpCiB7Ci0gICAgYXV0byBkcml2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEN0YXBIaWREcml2ZXI+KGNyZWF0ZUhpZENvbm5lY3Rpb24oZGV2aWNlKSk7CisgICAgYXV0byBk
cml2ZXIgPSBtYWtlVW5pcXVlPEN0YXBIaWREcml2ZXI+KGNyZWF0ZUhpZENvbm5lY3Rpb24oZGV2
aWNlKSk7CiAgICAgLy8gR2V0IGF1dGhlbnRpY2F0b3IgaW5mbyBmcm9tIHRoZSBkZXZpY2UuCiAg
ICAgZHJpdmVyLT50cmFuc2FjdChlbmNvZGVFbXB0eUF1dGhlbnRpY2F0b3JSZXF1ZXN0KEN0YXBS
ZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JHZXRJbmZvKSwgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCBwdHIgPSBkcml2ZXIuZ2V0KCldKFZlY3Rvcjx1aW50OF90PiYmIHJlc3Bv
bnNlKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAppbmRleCA4NWNlNjkwNjEx
MTQ0MmJjNjc5Y2M3YTc3NWI4NjgyZGQxNTcyOGM5Li5mODUyYmVkMjEzMGI0N2MyZjdkZDI5OGFk
MzU2YWVhYzg3YzAyNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDk5ZDZlYTMzNDE1
M2VjZjQ5ZDQ1ODRjNzQzZGM2ODE2ODg0MTU1MjAuLjg0NmE1YWEyN2RmYWIzZDI3NGNmZmE0ODcz
ODYxZjI1ODdkMTdmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRl
KFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNv
bnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKKyAgICAsIG1fcHJvdmlkZXIobWFr
ZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiAgICAgV2ViQ29udGV4dFN1
cHBsZW1lbnQ6OnByb2Nlc3NQb29sKCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwog
fQpAQCAtNTQsNyArNTQsNyBAQCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQbwogdm9pZCBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2Vv
bG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVyKQotICAg
ICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlk
ZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Q
cm92aWRlcj4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fcHJvdmlkZXIgPSBXVEZNb3ZlKHByb3Zp
ZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vz
c2lvbkZvY3VzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXIuY3BwCmluZGV4IDJjZGNkMTc2NTI5OWZlNzc2NDliYWJmOWRlM2U3
NGU4YjBmMDBlMzcuLjMzNjRiY2JjYzkxMTg0YTZiYTc1NDFlZjkwYjBmOTYwNGNkZTRkZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyOjp1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVkaWFTdGF0ZShXZWJQYWdl
CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpzZXRGb2N1c2VkTWVkaWFFbGVt
ZW50KFdlYlBhZ2VQcm94eSYgcHJveHksIHVpbnQ2NF90IGVsZW1lbnRJRCkKIHsKLSAgICBtX2Zv
Y3VzZWRNZWRpYUVsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+
KCZwcm94eSwgZWxlbWVudElEKTsKKyAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBtYWtlVW5p
cXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElEKTsKIH0KIAogdm9pZCBX
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNsZWFyRm9jdXNlZE1lZGlhRWxlbWVudCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDllYjlk
MjhhZGRkNWI1YjAwNmQ1MGIwOGEzZDc0ZmI2OWQxNjIzOTIuLjE2YTc1OWFjOGExZmYzMTQ2MDVi
MDk0NmZmYzVhYTY1ODE4ZTA3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYk5hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5h
dmlnYXRpb25TdGF0ZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNs
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiAKIGNsYXNzIFdlYk5hdmlnYXRpb25TdGF0ZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
TmF2aWdhdGlvblN0YXRlKCk7CiAgICAgfldlYk5hdmlnYXRpb25TdGF0ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApp
bmRleCA2NTI5ODJhODEyYTllZmJlZjUyMWE2YTk4OTlmYTRiZWU1ZmFmMzRjLi4xYjI5Zjc5ZGRm
YWVhMDdiOWU3MjQ5YmQ3NzIzODRlZWJmNTMwZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApAQCAtNDIsNiArNDIs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFn
ZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29u
c3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxB
UEk6Ok9iamVjdD4pPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjNGI5MmM4M2NmZWEyOWIzMWVkYmIz
NGFhODQwMjViYTVjOGIwM2I3Li5iZGE1OWNkODA1MTU3NjQ2YjMwOGQyZmQyMzZmM2QxMTgyNzFl
MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFdlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcihXZWJQYWdlUHJveHkmIHBhZ2UpCiAg
ICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1f
YmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91
dGVyLmNvcHlSZWYoKSkpCiB7Ci0gICAgYXV0byB0YXJnZXRBZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBt
X2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAgICBhdXRvIHRhcmdldEFnZW50ID0gbWFrZVVu
aXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQ+KG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCks
IG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogCiAgICAgbV90YXJnZXRBZ2VudCA9IHRhcmdl
dEFnZW50LmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCAzMjYzMWM0NTBlYjI2ZDc1NDU0NjhiNzI2YzE1YTQ0OTg1Yzk5OGE5Li5kYTVkMTJjYTI1
NGNmNTExYmMxMjE3NmFhMGUyNzAyZWQ1ODk3ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM5NywxNSArMzk3LDE1IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgUGFnCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKICAg
ICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVu
dD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6SGlzdG9yeUNs
aWVudD4oKSkKLSAgICAsIG1faWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
Okljb25Mb2FkaW5nQ2xpZW50PigpKQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpGb3JtQ2xpZW50PigpKQotICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6VUlDbGllbnQ+KCkpCi0gICAgLCBtX2ZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkZpbmRDbGllbnQ+KCkpCi0gICAgLCBtX2ZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKSkKKyAgICAsIG1faWNvbkxvYWRpbmdDbGll
bnQobWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpKQorICAgICwgbV9mb3JtQ2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpKQorICAgICwgbV91aUNsaWVudChtYWtl
VW5pcXVlPEFQSTo6VUlDbGllbnQ+KCkpCisgICAgLCBtX2ZpbmRDbGllbnQobWFrZVVuaXF1ZTxB
UEk6OkZpbmRDbGllbnQ+KCkpCisgICAgLCBtX2ZpbmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKSkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51
Q2xpZW50PigpKQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Q29u
dGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAsIG1fbmF2aWdhdGlvblN0YXRlKHN0ZDo6
bWFrZV91bmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigpKQorICAgICwgbV9uYXZpZ2F0aW9uU3Rh
dGUobWFrZVVuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJv
Y2VzcykKICAgICAsIG1fcGFnZUdyb3VwKCptX2NvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQog
ICAgICwgbV9wcmVmZXJlbmNlcygqbV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygpKQpAQCAt
NDE2LDcgKzQxNiw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnCiAgICAgLCBtX292ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5IHsgbV9jb25maWd1cmF0aW9uLT5vdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpIH0KICAgICAsIG1fdHJlYXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1
cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3Vy
ZSgpKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVsbHNjcmVlbkNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKSkKKyAgICAsIG1fZnVs
bHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKSkKICNlbmRp
ZgogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKICAg
ICAsIG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQpAQCAtNDM1
LDkgKzQzNSw5IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnCiAjZW5kaWYKICAgICAsIG1fcGFn
ZUxvYWRTdGF0ZSgqdGhpcykKICAgICAsIG1fY29uZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXMo
bV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFsdWVzKCkpCi0gICAgLCBtX2luc3BlY3RvckNv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcj4oKnRo
aXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAg
ICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VEZWJ1Z2dh
YmxlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUobWFrZVVuaXF1ZTxXZWJQ
YWdlRGVidWdnYWJsZT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hD
b3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6cmVzZXRSZWNl
bnRDcmFzaENvdW50KQogewpAQCAtNDc3LDcgKzQ3Nyw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcywg
UGFnCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fYWN0aXZpdHlTdGF0ZUNo
YW5nZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpB
Y3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNdIHsKKyAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VE
aXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5k
ZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0
ZUNoYW5nZSksIFt0aGlzXSB7CiAgICAgICAgIHRoaXMtPmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNo
YW5nZSgpOwogICAgIH0pOwogI2VuZGlmCkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+
JiYgcG9saWN5Q2wKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGll
bnQpIHsKLSAgICAgICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1D
bGllbnQ+KCk7CisgICAgICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xp
ZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MTEsNyArNjExLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNs
aWVudD4mJiBmb3JtQ2xpZW50KQogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiYmIHVpQ2xpZW50KQogewogICAgIGlmICghdWlDbGll
bnQpIHsKLSAgICAgICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVu
dD4oKTsKKyAgICAgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpVSUNsaWVudD4oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9h
ZGluZ0NsaWVudD4mCiB7CiAgICAgYm9vbCBoYXNDbGllbnQgPSBpY29uTG9hZGluZ0NsaWVudC5n
ZXQoKTsKICAgICBpZiAoIWljb25Mb2FkaW5nQ2xpZW50KQotICAgICAgICBtX2ljb25Mb2FkaW5n
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOworICAg
ICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IFdURk1vdmUo
aWNvbkxvYWRpbmdDbGllbnQpOwogCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6OnVuaXF1ZV9wdHI8UGFnZUxvYWRTdGF0
ZTo6T2JzZXIKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKIHsKICAgICBpZiAoIWZpbmRDbGllbnQp
IHsKLSAgICAgICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGll
bnQ+KCk7CisgICAgICAgIG1fZmluZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50
PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNjYwLDcgKzY2MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRD
bGllbnQ+JiYgZmluZENsaWVudCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kTWF0Y2hlc0Ns
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4mJiBmaW5kTWF0Y2hl
c0NsaWVudCkKIHsKICAgICBpZiAoIWZpbmRNYXRjaGVzQ2xpZW50KSB7Ci0gICAgICAgIG1fZmlu
ZE1hdGNoZXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+
KCk7CisgICAgICAgIG1fZmluZE1hdGNoZXNDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZE1h
dGNoZXNDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY3Niw3ICs2NzYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6RGlhZ25vc3RpY0xvZwogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbnRl
eHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiYmIGNv
bnRleHRNZW51Q2xpZW50KQogewogICAgIGlmICghY29udGV4dE1lbnVDbGllbnQpIHsKLSAgICAg
ICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVu
dUNsaWVudD4oKTsKKyAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpDb250ZXh0TWVudUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjkx
LDcgKzY5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChj
b25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CisgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9
IG1ha2VVbmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PigpOwogICAgIG1faW5qZWN0
ZWRCdW5kbGVDbGllbnQtPmluaXRpYWxpemUoY2xpZW50KTsKIH0KIApAQCAtNzc2LDcgKzc3Niw3
IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgfQogCiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBT
dXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1h
aW5GcmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUpOworICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IG1ha2VVbmlxdWU8U3VzcGVu
ZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBz
aG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUp
OwogCiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBj
cmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJk
IGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9n
Z2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8g
ZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CiAKQEAgLTg0OSw3ICs4NDksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5NYW5hZ2VyKTsK
LSAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5PigqdGhpcywgcGFnZUNsaWVudCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlD
bGllbnQoKSk7CisgICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IG1ha2VVbmlxdWU8V2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGllbnQoKS5mdWxsU2NyZWVuTWFuYWdlclBy
b3h5Q2xpZW50KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShB
VktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KSkKICAgICBBU1NFUlQoIW1fcGxheWJhY2tTZXNzaW9uTWFuYWdlcik7CkBAIC04NjAsMjIgKzg2
MCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgIEFTU0VSVCghbV9wYXltZW50Q29vcmRpbmF0b3Ip
OwotICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbWFr
ZVVuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgQVNTRVJUKCFtX3N5c3RlbVByZXZpZXdDb250cm9s
bGVyKTsKLSAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOworICAgIG1fc3lzdGVtUHJldmlld0NvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPFN5c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhpcyk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgQVNTRVJUKCFtX2NyZWRlbnRpYWxzTWVz
c2VuZ2VyKTsKLSAgICBtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgIG1fY3JlZGVudGlh
bHNNZXNzZW5nZXIgPSBtYWtlVW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5
PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEhBVkUoUEVOQ0lMS0lUKQogICAgIEFTU0VSVCghbV9l
ZGl0YWJsZUltYWdlQ29udHJvbGxlcik7Ci0gICAgbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICBt
X2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxFZGl0YWJsZUltYWdlQ29udHJv
bGxlcj4oKnRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RHJhd2luZ0FyZWEoc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+
JiYgZHJhd2luZ0FyZQogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0o
Q09DT0EpCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEtPnR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVS
ZW1vdGVMYXllclRyZWUpIHsKLSAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5ID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5PigqdGhpcyk7
CisgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIC8vIE9uIGlPUywgbWFpbiBmcmFtZSBzY3JvbGxzIGFyZSBzZW50IGluIHRl
cm1zIG9mIHZpc2libGUgcmVjdCB1cGRhdGVzLgogICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHktPnNldFByb3BhZ2F0ZXNNYWluRnJhbWVTY3JvbGxzKGZhbHNlKTsKQEAgLTEwMDYs
MTcgKzEwMDYsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2xvYWRlckNs
aWVudCA9IG51bGxwdHI7CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZVJlZjxB
UEk6Ok5hdmlnYXRpb25DbGllbnQ+KCk7CiAgICAgbV9wb2xpY3lDbGllbnQgPSBudWxscHRyOwot
ICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRp
bmdDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZv
cm1DbGllbnQ+KCk7Ci0gICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNs
aWVudD4oKTsKLSAgICBtX2ZpbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENs
aWVudD4oKTsKLSAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CisgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpVSUNsaWVudD4oKTsKKyAgICBtX2ZpbmRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZENs
aWVudD4oKTsKKyAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRN
YXRjaGVzQ2xpZW50PigpOwogICAgIG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBudWxscHRy
OwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgbV9jb250ZXh0
TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICBtX2Z1bGxzY3Jl
ZW5DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKICNlbmRpZgog
CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9y
UGFnZSgqdGhpcyk7CkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
YwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7
IH0pOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxv
YWREYXRhTmF2aWdhdGlvbihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRh
dGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKKyAg
ICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZp
Z2F0aW9uKG1ha2VVbmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlN
RVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkpOwogICAgIGxvYWREYXRhV2l0aE5h
dmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbmF2aWdhdGlvbiwgZGF0YSwgTUlN
RVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpObywgV1RGOjpudWxsb3B0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsK
ICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KQEAgLTI0MTUsNyArMjQxNSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2
ZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb2FsZXNjZWRXaGVlbEV2
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7Cisg
ICAgYXV0byBjb2FsZXNjZWRXaGVlbEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2Vi
V2hlZWxFdmVudD4+KCk7CiAgICAgY29hbGVzY2VkV2hlZWxFdmVudC0+YXBwZW5kKGV2ZW50KTsK
ICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChXVEZNb3ZlKGNvYWxl
c2NlZFdoZWVsRXZlbnQpKTsKICAgICBzZW5kV2hlZWxFdmVudChldmVudCk7CkBAIC0yNDIzLDcg
KzI0MjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRp
dmVXZWJXaGVlbEV2ZW50JiBldmVudCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0
UXVldWVkV2hlZWxFdmVudCgpCiB7Ci0gICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKKyAgICBhdXRvIG5l
eHRDb2FsZXNjZWRFdmVudCA9IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+
PigpOwogICAgIFdlYldoZWVsRXZlbnQgbmV4dFdoZWVsRXZlbnQgPSBjb2FsZXNjZWRXaGVlbEV2
ZW50KG1fd2hlZWxFdmVudFF1ZXVlLCAqbmV4dENvYWxlc2NlZEV2ZW50LmdldCgpKTsKICAgICBt
X2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChXVEZNb3ZlKG5leHRDb2FsZXNj
ZWRFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KG5leHRXaGVlbEV2ZW50KTsKQEAgLTI5ODQs
NyArMjk4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgICAgIG1fcHJvdmlzaW9u
YWxQYWdlID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlS
ZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1
cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOworICAgIG1fcHJv
dmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIG5l
d1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2VQcm94eSksIG5hdmlnYXRp
b24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCks
IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCk7CiAKICAgICBpZiAoYXV0byogaXRlbSA9IG5hdmlnYXRpb24udGFyZ2V0SXRlbSgpKSB7CiAg
ICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS0+dXJsKCkudXRmOCgp
LmRhdGEoKSk7CkBAIC01NzAyLDcgKzU3MDIsNyBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5hZ2VyKCkKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+
JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KSB7Ci0gICAgICAgIG1fZnVsbHNjcmVlbkNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOworICAgICAg
ICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQzNiw3ICs3NDM2LDcgQEAgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkmIFdlYlBhZ2VQcm94eTo6dXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QKICAgICBpZiAobV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIpCiAgICAgICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI7CiAKLSAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+KCp0aGlzKTsK
KyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA9IG1ha2VVbmlxdWU8VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwogfQogCkBAIC04MTQyLDcgKzgx
NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVj
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29s
bGVjdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCiAgICAgaWYgKG1fc2Nyb2xsUGVyZm9ybWFuY2VE
YXRhQ29sbGVjdGlvbkVuYWJsZWQgJiYgIW1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKQotICAg
ICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhPihkb3duY2FzdDxSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5PigqbV9kcmF3aW5nQXJlYSkpOworICAgICAgICBtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhPihkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Pigq
bV9kcmF3aW5nQXJlYSkpOwogICAgIGVsc2UgaWYgKCFtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNv
bGxlY3Rpb25FbmFibGVkKQogICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IG51
bGxwdHI7CiB9CkBAIC05MTg5LDcgKzkxODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRT
cGVlY2hTeW50aGVzaXplcigpCiBXZWJQYWdlUHJveHk6OlNwZWVjaFN5bnRoZXNpc0RhdGEmIFdl
YlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzRGF0YSgpCiB7CiAgICAgaWYgKCFtX3NwZWVjaFN5
bnRoZXNpc0RhdGEpCi0gICAgICAgIG1fc3BlZWNoU3ludGhlc2lzRGF0YSA9IFNwZWVjaFN5bnRo
ZXNpc0RhdGEgeyBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRo
aXMpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CisgICAg
ICAgIG1fc3BlZWNoU3ludGhlc2lzRGF0YSA9IFNwZWVjaFN5bnRoZXNpc0RhdGEgeyBtYWtlVW5p
cXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAgICAgcmV0dXJuICptX3NwZWVjaFN5bnRoZXNp
c0RhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjQz
ODNjYWY4OGYzNzI3MmNmOTQ3N2I2NDAzOWNlOWVmNWM5NDlhMS4uMTdiZjVmYTliZTE3ZTYzODVj
MjNiYjg3NDVhMWI1ZDNhYzc4Y2YzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTM0Nyw4ICszNDcsNyBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdD4gVG91Y2hlc0NhbAogdHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jj4g
U2VsZWN0aW9uUmVjdHNDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24mPiBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uQ2FsbGJh
Y2s7CiBzdHJ1Y3QgRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiBpbmZvcm1hdGlvbjsKICAgICBib29sIHVz
ZXJJc0ludGVyYWN0aW5nOwogICAgIGJvb2wgYmx1clByZXZpb3VzTm9kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCmluZGV4IDhiZGY4Y2Y4Mzg4Y2RjN2Jm
YWNmZjJiN2U2MDVkMGE4MThkYWFjNjQuLjk2MmYzYmVkMmQ4MjU2OWEwN2RkNGU5Y2RhYjhmY2M3
MjExOWY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNw
cApAQCAtODQsNyArODQsNyBAQCBib29sIFdlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9z
c2libGUoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9IGdlbmVyYXRlQWRkUmVxdWVz
dElkZW50aWZpZXIoKTsKLSAgICBtX3BlbmRpbmdBZGRSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50
aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUHJvY2Vzcz4ocHJvY2Vzcy5jb3B5UmVmKCkp
KTsKKyAgICBtX3BlbmRpbmdBZGRSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VV
bmlxdWU8Q2FjaGVkUHJvY2Vzcz4ocHJvY2Vzcy5jb3B5UmVmKCkpKTsKIAogICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQ
b3NzaWJsZSgpOiBDaGVja2luZyBpZiBwcm9jZXNzICVpIGlzIHJlc3BvbnNpdmUgYmVmb3JlIGNh
Y2hpbmcgaXQuLi4iLCB0aGlzLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBw
cm9jZXNzLT5pc1Jlc3BvbnNpdmUoW3RoaXMsIHByb2Nlc3NQb29sID0gbWFrZVJlZihwcm9jZXNz
LT5wcm9jZXNzUG9vbCgpKSwgcmVxdWVzdElkZW50aWZpZXJdKGJvb2wgaXNSZXNwb25zaXZlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMzYzNjdm
MDA0Y2YxZTIxNjVkMjdiNmFlOGU2ZmNiNWRjNmY5MTM4Yy4uODE5NjVhZjdjYThiMDMyMzNmZjRm
ODU2NDE0ZGRiZDE0ZDk5NDAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcApAQCAtMjMzLDE1ICsyMzMsMTUgQEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnbG9iYWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3QK
IFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
LmNvcHkoKSkKICAgICAsIG1fZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgp
KQotICAgICwgbV9pbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCi0gICAgLCBtX2F1dG9tYXRpb25DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKSkKLSAgICAsIG1faGlzdG9y
eUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+
KCkpCi0gICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQorICAgICwgbV9pbmplY3RlZEJ1
bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCisgICAg
LCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkp
CisgICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4o
KSkKKyAgICAsIG1faGlzdG9yeUNsaWVudChtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhp
c3RvcnlDbGllbnQ+KCkpCisgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChtYWtl
VW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQogICAgICwgbV92aXNp
dGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6OmNyZWF0ZSgpKQogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAsIG1faGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIoc3RkOjptYWtl
X3VuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQotICAg
ICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGVy
QWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9oaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihtYWtlVW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBo
aWNzVXNhZ2VTYW1wbGVyPigqdGhpcykpCisgICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2Fn
ZVNhbXBsZXIobWFrZVVuaXF1ZTxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhp
cykpCiAjZW5kaWYKICAgICAsIG1fYWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KG1fY29u
ZmlndXJhdGlvbi0+YWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5KCkpCiAgICAgLCBtX3No
b3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24obV9jb25maWd1cmF0aW9uLT5zaG91bGRUYWtl
VUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKCkpCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGll
bnQpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYg
KCFjbGllbnQpCi0gICAgICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CisgICAgICAgIG1faW5qZWN0ZWRCdW5k
bGVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CiAgICAg
ZWxzZQogICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwog
fQpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDb25u
ZWN0aW9uQ2xpZW50KGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50PiYmIGhpc3RvcnlDbGllbnQpCiB7CiAgICAgaWYgKCFoaXN0b3J5
Q2xpZW50KQotICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7CisgICAgICAgIG1faGlzdG9yeUNsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CkBA
IC0zODUsNyArMzg1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUMKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xp
ZW50PiYmIGRvd25sb2FkQ2xpZW50KQogewogICAgIGlmICghZG93bmxvYWRDbGllbnQpCi0gICAg
ICAgIG1fZG93bmxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGll
bnQ+KCk7CisgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxv
YWRDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92
ZShkb3dubG9hZENsaWVudCk7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGll
bnQ+JiYgZG8KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4mJiBhdXRvbWF0aW9uQ2xpZW50KQogewog
ICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKLSAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCk7CisgICAgICAgIG1fYXV0
b21hdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOwogICAg
IGVsc2UKICAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gV1RGTW92ZShhdXRvbWF0aW9uQ2xp
ZW50KTsKIH0KQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Qwogewog
I2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAgICAgaWYgKCFjdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCi0gICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dD4oKTsKKyAgICAgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBtYWtlVW5pcXVl
PEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAg
bV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgPSBXVEZNb3ZlKGN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudCk7CiAjZW5kaWYKQEAgLTQ5Miw3ICs0OTIsNyBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2l0aAogICAgICAgICByZXR1cm4gKm1fbmV0d29ya1Byb2Nlc3M7CiAgICAgfQogCi0gICAg
YXV0byBuZXR3b3JrUHJvY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Byb2Nlc3NQcm94
eT4oKnRoaXMpOworICAgIGF1dG8gbmV0d29ya1Byb2Nlc3MgPSBtYWtlVW5pcXVlPE5ldHdvcmtQ
cm9jZXNzUHJveHk+KCp0aGlzKTsKIAogICAgIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAKQEAgLTI1MTUsNyArMjUxNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21hCiAgICAgICAgIG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4u
cmVtb3ZlKG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4ucmFuZG9tKCkp
OwogCiAgICAgYXV0byYgdmFsdWUgPSBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxl
RG9tYWluLmVuc3VyZShyZWdpc3RyYWJsZURvbWFpbiwgW10gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbj4oKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CiAKICAgICAqdmFsdWUgPSBwcmV3YXJtSW5mb3JtYXRpb247CkBAIC0y
NTYyLDEyICsyNTYyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NIYXNV
cGxvYWRzKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKICAgICAgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+dGFrZVVwbG9hZEFzc2VydGlvbigpOwogICAgICAgICAKICAgICAgICAgQVNTRVJUKCFt
X3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbik7Ci0gICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNz
ZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJv
Y2Vzc0lEKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5l
dHdvcmtpbmcpOworICAgICAgICBtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbiA9IG1ha2VVbmlx
dWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9h
ZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKICAgICB9CiAgICAg
CiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nlc1dpdGhVcGxvYWRzLmFkZChwcm9jZXNzSUQs
IG51bGxwdHIpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0
ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1h
a2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
IldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMoUHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQpAQCAtMjYwNCwxMiArMjYwNCwxMiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaQogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IlRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIHBsYXlpbmcgYXVkaWJsZSBtZWRpYSBpcyBub3cgb25l
LiBUYWtpbmcgVUkgcHJvY2VzcyBhc3NlcnRpb24uIik7CiAKICAgICAgICAgQVNTRVJUKCFtX3Vp
UHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vzc01lZGlh
UGxheWJhY2tBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdl
dEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9u
U3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CisgICAg
ICAgIG1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vz
c0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNr
Il9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBs
YXliYWNrKTsKICAgICB9CiAKICAgICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc2VzUGxheWluZ0F1
ZGlibGVNZWRpYS5hZGQocHJvY2Vzc0lELCBudWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQg
TWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25S
ZWFzb246Ok1lZGlhUGxheWJhY2spOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtl
VW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJX
ZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3Nl
cnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpj
bGVhcldlYlByb2Nlc3NJc1BsYXlpbmdBdWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgcHJvY2Vzc0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKaW5kZXggZTE2OTEzN2Y1Mzg5ZDMwYmI4YjExYjNhOGUxZjUwY2E0M2FhMDZlZC4uMWUz
Y2RkZThmYmU4OGU4NWQ4MDI5ODc3OTdmODEyZWVjNTI1YjMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgV2ViUHJv
Y2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBX
ZWJzaXRlRGF0YVN0b3JlKgogICAgICwgbV92aXNpYmxlUGFnZUNvdW50ZXIoW3RoaXNdKFJlZkNv
dW50ZXJFdmVudCkgeyB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOyB9KQog
ICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUpCiAjaWYgUExBVEZPUk0o
Q09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgLCBtX3VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkoc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
PigqdGhpcykpCisgICAgLCBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkobWFrZVVuaXF1
ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1f
aXNQcmV3YXJtZWQoaXNQcmV3YXJtZWQgPT0gSXNQcmV3YXJtZWQ6OlllcykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDbGllbnQuaAppbmRleCBlOWZjZjAwMTUzOTk1ZGMxY2NlMTM1ZjhjMDkyZTkyZTY2ZGJm
ZjNhLi5kMGJiYTU2NGMyNzU4MmQ3ODI2ZTlmMmMyMDYyMjM3MDIyNzI5NTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
c2l0ZURhdGFTdG9yZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggMTgyOTRkMzdmZTQ5ZWVkNmQ2
OWRmZmZmNWYyZjY1MDcwYjY2Y2Q5MC4uN2JkZDAzZDNjOGVjOGUwNjYyZTc3ZDAxODI1MGI1MDg4
YzI2Y2ZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tp
bmdTdG9yZUNhaXJvLmNwcApAQCAtNTQsMTIgKzU0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm8+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiAgICAg
ICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ3RrX3dpZGdldF9nZXRfdmlzdWFsKG1fd2ViUGFnZVBy
b3h5LnZpZXdXaWRnZXQoKSk7CiAgICAgICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ2RrX3Zpc3Vh
bF9nZXRfc2NyZWVuKHZpc3VhbCk7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURp
c3BsYXlYMTE+KHNoYXJlZERpc3BsYXkpLm5hdGl2ZSgpID09IEdES19TQ1JFRU5fWERJU1BMQVko
c2NyZWVuKSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJh
Y2tlbmRDYWlyb1gxMT4oR0RLX1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3co
c2NyZWVuKSksCisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb1gxMT4oR0RLX1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVu
KSksCiAgICAgICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgZ2RrX3Zpc3VhbF9n
ZXRfZGVwdGgodmlzdWFsKSwgbV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICB9CiAj
ZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRD
YWlyb0ltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvSW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxl
RmFjdG9yKTsKIH0KIAogdm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KGNhaXJvX3QqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggYjg3NGZiMGZiMmUyYTdlN2Vj
MzZjYzQ0ZTM5ZDYyNDkwNmE0YzVmMS4uZjg4OGMwZjQ0NmM2MjcxMjdjODM3NWJlMGQ4MWE2YTNm
MmMwOWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJ
bnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yQ2xpZW50Ojpjb25uZWN0aW9uQ2xvc2VkKCkKIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50OjppbnNwZWN0KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpCiB7
CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2luc3BlY3RvclByb3h5TWFwLmVuc3VyZShzdGQ6Om1h
a2VfcGFpcihjb25uZWN0aW9uSUQsIHRhcmdldElEKSwgW3RoaXMsIGNvbm5lY3Rpb25JRCwgdGFy
Z2V0SURdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9y
UHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdl
dElEKTsKICAgICB9KTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNob3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFu
ZC5jcHAKaW5kZXggMzgzMTAwMDU4ODk0ZGVjMGZiN2I1MWNhYTA5YTIzOWQ3N2QwOGE4Yi4uODkz
Mjc5ZmJjZjU4YWVhZjJhZmQ2YjFhNDdjMWM3NmMyM2Q4MmJlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZC5jcHAKQEAgLTc5LDkgKzc5LDkgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25z
M0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RP
cGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVu
c2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9w
ZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOwogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRl
bnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkg
Pj0gMzIwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xF
eHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29u
dGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgICAgICBpZiAo
Z2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKICAgICAgICAgICAgIGds
SW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJH
RVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRl
eHR1cmUyRE9FUyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9E
cmFnQW5kRHJvcEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdB
bmREcm9wSGFuZGxlci5jcHAKaW5kZXggZTlhZTY1NTJhN2EyZDg2MmM0YmQ0ZWUxMGVkMmVjMzZl
OTJmODMxZC4uY2E2NTNlNWViYTcwYzk2MTU1ZmY3NjQ4OGMzZWRmNDI4MWY4NTcxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAK
QEAgLTIwMiw3ICsyMDIsNyBAQCBTZWxlY3Rpb25EYXRhKiBEcmFnQW5kRHJvcEhhbmRsZXI6OmRy
YWdEYXRhU2VsZWN0aW9uKEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEcm9wcGluZ0NvbnRleHQ+JiBkcm9wcGluZ0NvbnRleHQgPSBtX2Ryb3BwaW5nQ29u
dGV4dHMuYWRkKGNvbnRleHQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWRy
b3BwaW5nQ29udGV4dCkgewogICAgICAgICBHdGtXaWRnZXQqIHdpZGdldCA9IG1fcGFnZS52aWV3
V2lkZ2V0KCk7Ci0gICAgICAgIGRyb3BwaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RHJv
cHBpbmdDb250ZXh0Pihjb250ZXh0LCBwb3NpdGlvbik7CisgICAgICAgIGRyb3BwaW5nQ29udGV4
dCA9IG1ha2VVbmlxdWU8RHJvcHBpbmdDb250ZXh0Pihjb250ZXh0LCBwb3NpdGlvbik7CiAgICAg
ICAgIFZlY3RvcjxHZGtBdG9tPiBhY2NlcHRhYmxlVGFyZ2V0cyhQYXN0ZWJvYXJkSGVscGVyOjpz
aW5nbGV0b24oKS5kcm9wQXRvbXNGb3JDb250ZXh0KHdpZGdldCwgZHJvcHBpbmdDb250ZXh0LT5n
ZGtDb250ZXh0KSk7CiAgICAgICAgIGRyb3BwaW5nQ29udGV4dC0+cGVuZGluZ0RhdGFSZXF1ZXN0
cyA9IGFjY2VwdGFibGVUYXJnZXRzLnNpemUoKTsKICAgICAgICAgZm9yIChhdXRvJiB0YXJnZXQg
OiBhY2NlcHRhYmxlVGFyZ2V0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9E
cmFnQW5kRHJvcEhhbmRsZXIuaAppbmRleCA1MjU0MjAzNzFmNjFiZDRiOGYzYzFhMzk5YjdiODI2
MWI5OTRlYTEwLi41OTE0YjdlMGRmNTQzMWFjZjY2MzcxMDNlNjg4MDQwNGVkNDQzZjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCkBA
IC00OSw2ICs0OSw3IEBAIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIAogY2xhc3MgRHJhZ0FuZERyb3BIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmFnQW5kRHJvcEhhbmRsZXIpOwogcHVi
bGljOgogICAgIERyYWdBbmREcm9wSGFuZGxlcihXZWJQYWdlUHJveHkmKTsKQEAgLTY0LDYgKzY1
LDcgQEAgY2xhc3MgRHJhZ0FuZERyb3BIYW5kbGVyIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
RHJvcHBpbmdDb250ZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICBEcm9wcGluZ0NvbnRleHQoR2RrRHJhZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9zaXRpb24pOwogCiAgICAgICAgIEdka0RyYWdDb250ZXh0KiBnZGtDb250
ZXh0IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dheWxhbmRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5jcHAKaW5kZXggY2JlMzgwYjI0MGQ5NjAxMTE3MjdiNzcwYTgyNWUwOWUw
NTQ3YzllZC4uYzNkOTk3M2M3MGRjMjA4OWM2ODNkNjVhOTEzZGEyOTRkNWZmZWJjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBA
IC00MjAsOSArNDIwLDkgQEAgYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1
ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgp
LT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3Bl
bkdMPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0
ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAg
aWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAgICAgIGds
SW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJH
RVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRl
eHR1cmUyRE9FUyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9F
ZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0Vk
aXRhYmxlSW1hZ2VDb250cm9sbGVyLmgKaW5kZXggYmJmOTNjMjAyODZlZTZjNjYyOGE3MTgyYmFl
ZDQ1MmYyYmM4Zjc0Yy4uNTE0ZWNhNjg5YjY1MWNjZGZlZDYxMTg1MGQyYjE0YmMyZjRjNTk4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VD
b250cm9sbGVyLmgKQEAgLTQxLDExICs0MSwxMyBAQCBPQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IEVkaXRhYmxlSW1hZ2UgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4g
ZHJhd2luZ1ZpZXc7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRJRDsKIH07CiAKIGNsYXNzIEVkaXRh
YmxlSW1hZ2VDb250cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IEVkaXRhYmxlSW1hZ2VD
b250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCmluZGV4IGMyMzQxMWMxZjA5YjAx
MGE2NTI1NGIzNjlkZDMxNjlkMzFmMGMwZTAuLjYxZTg1OTRkNWI3YzQxYWFmOWZjODJjNjUzOGRi
OWFkNzE4NTYzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0
YWJsZUltYWdlQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KQEAgLTU4LDcgKzU4LDcgQEAgRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXI6On5FZGl0YWJsZUltYWdlQ29udHJvbGxlcigpCiBFZGl0YWJsZUltYWdlJiBF
ZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKIHsKICAgICBhdXRvIHJl
c3VsdCA9IG1fZWRpdGFibGVJbWFnZXMuZW5zdXJlKGVtYmVkZGVkVmlld0lELCBbJl0gewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVkaXRhYmxlSW1hZ2U+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUlt
YWdlPiBpbWFnZSA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKICAgICAgICAgaW1hZ2Ut
PmRyYXdpbmdWaWV3ID0gbV93ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5n
VmlldyhlbWJlZGRlZFZpZXdJRCk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZl
cnJlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVy
cmVyLmgKaW5kZXggYzZmNTBhYjExZjNkYjI2ZTMxY2MyMDQ0M2ExZTg0MmI3ZDgwMmY4ZC4uZWZj
MzNkZTZmMmE4MjI1ZGZjNGUxYTM0M2MxOWMyMmVlMWMzNDI2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgKQEAgLTMz
LDYgKzMzLDcgQEAgT0JKQ19DTEFTUyBVSVZpZXc7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElucHV0Vmlld1VwZGF0ZURlZmVycmVyKTsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcihVSVZpZXcgKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaAppbmRleCA3MjgwNzg4NjM4MTJlODA5Y2RlMDk2ZWU4OWIxZjYwMjA1
MGJjNGQxLi4wMjAxMTY3OWI3OTFmOGUwYWQxMWYxYThmNTI3MzFhZmEzMDg1NzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgOiBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
KTsKIHB1YmxpYzoKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKFdLQ29udGVudFZp
ZXcgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
QXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQppbmRleCBkMDNhMTcyNmFiMzM0YTAwZTYw
ZmJjMDUwYjUwZTVjMzM3NWFmNzIwLi43ZjBmOTQ4NGZkNzc3NGRkMTE1N2FlMjg4NWM5MGEzYmYy
ZWU3OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KQEAgLTY1LDcgKzY1LDcgQEAgLSAo
dm9pZClkaWRNb3ZlVG9XaW5kb3cKICAgICBpZiAoIXNlbGYuX2NvbnRlbnRWaWV3LndpbmRvdyB8
fCBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9hcHBs
aWNhdGlvblN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBcHBsaWNhdGlv
blN0YXRlVHJhY2tlcj4oc2VsZiwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVu
dGVyaW5nQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKSk7CisgICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6
OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90
dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxF
bnRlckZvcmVncm91bmQpKTsKICAgICAKICAgICBpZiAoX2xhc3RPYnNlcnZlZFN0YXRlV2FzQmFj
a2dyb3VuZCAmJiAhW3NlbGYgaXNCYWNrZ3JvdW5kXSkKICAgICAgICAgW3NlbGYgX2FwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCmluZGV4IDY4MTFlODdhNGE0MjEwMDViZDk0YTdhYzIxNjU0M2VjYzAw
YTc3ZmMuLjQzMWZhY2QxZTY4Mzk3ZWM4NTczOTFhYjFjZjg4OGQzODQxNTdhNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0xNjcsNyArMTY3
LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9v
bDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHIKICAgICBfcGFnZS0+c2V0RGVsZWdhdGVzU2Ny
b2xsaW5nKHRydWUpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIF9wYWdlLT5z
ZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xp
ZW50Pihfd2ViVmlldykpOworICAgIF9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlx
dWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pihfd2ViVmlldykpOwogI2VuZGlmCiAKICAgICBX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkud2tWaWV3Q291bnQrKzsKQEAgLTIz
OSw3ICsyMzksNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1l
IHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJgogCiAgICAgV2ViS2l0OjpJbml0
aWFsaXplV2ViS2l0MigpOwogCi0gICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOworICAgIF9wYWdlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKICAgICBf
d2ViVmlldyA9IHdlYlZpZXc7CiAKICAgICByZXR1cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0
aW9uV2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGTW92ZShjb25m
aWd1cmF0aW9uKV07CkBAIC01NDEsNyArNTQxLDcgQEAgLSAodm9pZClfd2ViVmlld0Rlc3Ryb3ll
ZAogCiAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3JlYXRl
RHJhd2luZ0FyZWFQcm94eTooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHkmKXByb2Nlc3MKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UsIHByb2Nlc3MpOwogfQog
CiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZWYzYWU0NDNkYTY0
ZDk1MTgyYjBlMjUwMDMxYjZhMTgyMGI0ZjQzNC4uZWY1MDZkYTRmNmRiNTgxOTJmNmQ3ZDY2Yzky
ZmYxYzEzZGM0YThhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04MDYsNyArODA2LDcgQEAgLSAodm9p
ZClzZXR1cEludGVyYWN0aW9uCiAgICAgCiAgICAgX2FjdGlvblNoZWV0QXNzaXN0YW50ID0gYWRv
cHROUyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7
CiAgICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBfc21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpTbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyPihzZWxmKTsKKyAgICBfc21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyPihzZWxmKTsKICAgICBfaXNFeHBlY3RpbmdGYXN0U2luZ2xlVGFwQ29tbWl0ID0gTk87CiAg
ICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBOTzsKICAgICBfaXNEb3VibGVUYXBQZW5kaW5n
ID0gTk87CkBAIC04MjEsNyArODIxLDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVYVF9DSEVDS0lORykKLSAgICBfdGV4
dENoZWNraW5nQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0Q2hlY2tp
bmdDb250cm9sbGVyPigqX3BhZ2UpOworICAgIF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFnZSk7CiAjZW5kaWYK
IAogICAgIF9oYXNTZXRVcEludGVyYWN0aW9ucyA9IFlFUzsKQEAgLTExOTYsNyArMTE5Niw3IEBA
IC0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3CiAgICAgICAgIHJldHVybiBO
TzsKIAogICAgIGlmICghX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyKQotICAgICAgICBfaW5wdXRW
aWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXI+KHNlbGYpOworICAgICAgICBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBt
YWtlVW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOwogCiAgICAg
Qk9PTCBkaWRCZWNvbWVGaXJzdFJlc3BvbmRlcjsKICAgICB7CkBAIC01MzExLDcgKzUzMTEsNyBA
QCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQogICAgICAgICAvLyBEZWZlciB2aWV3IHVwZGF0ZXMg
dW50aWwgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIGEgbm90aWNlYWJsZSBmbGFz
aCB3aGVuIHN3aXRjaGluZyBmb2N1cwogICAgICAgICAvLyBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQg
cmVxdWlyZSB0aGUga2V5Ym9hcmQuCiAgICAgICAgIGlmICghaW5wdXRWaWV3VXBkYXRlRGVmZXJy
ZXIpCi0gICAgICAgICAgICBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CisgICAgICAgICAgICBp
bnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlcj4oc2VsZik7CiAgICAgICAgIFtzZWxmIF9lbGVtZW50RGlkQmx1cl07CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpp
bmRleCBiMDI4MjQ4OTIwMDNhMDQ5ODkyOWU3MDZhNTkwNDU5YTRmODcxYWNkLi5jMDhmOTc4NmYw
ZWFhYjRhOTc1YmI1NjQ4Yzc0MjdjNTYzNmRiZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24mIGluZm9ybWF0aW9uLAogICAgIEFQSTo6T2JqZWN0KiB1c2VyRGF0YU9iamVjdCA9IHByb2Nl
c3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKTsK
ICAgICBpZiAobV9lZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkgewogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBlbGltaW5hdGUgbV9kZWZlcnJlZEVsZW1lbnRE
aWRGb2N1c0FyZ3VtZW50cyBhbHRvZ2V0aGVyLCBpbiBmYXZvciBvZiBvbmx5IGRlZmVycmluZyBh
Y3Rpb25zIHRoYXQgYXJlIGRlcGVuZGVudCBvbiBwb3N0LWxheW91dCBlZGl0b3Igc3RhdGUgaW5m
b3JtYXRpb24uCi0gICAgICAgIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cz4oRWxlbWVudERpZEZvY3Vz
QXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNO
b2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgdXNlckRhdGFPYmplY3QgfSk7CisgICAgICAgIG1f
ZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgPSBtYWtlVW5pcXVlPEVsZW1lbnREaWRG
b2N1c0FyZ3VtZW50cz4oRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVz
ZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywg
dXNlckRhdGFPYmplY3QgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNTgsNyAr
MTI1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSwgUEtQYXltZW50UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QpOwogfQogCiBVSVZpZXdDb250cm9s
bGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyLm1tCmluZGV4IDhiMTIzYjBhOTdjMDMwZTk0NTBmNWVkNGY4YzE3
NGIzMjFiYjQwN2IuLjhmZjhhMGJmNDc1YjNmN2IyMzYyMjlmNDEyZTNmMzI2NmNmOTU5NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
dWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCkBAIC04OCw2ICs4OCw3IEBA
IHByaXZhdGU6CiB9OwogCiBjbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgc2V0UGFy
ZW50KFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJl
bnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tCmluZGV4IDgzNDM0ODg5Y2RjZjI0OWMxYzI3OTFiZDA3YmZmZmEyMDFjZjQ4N2QuLmE5
MTI5NTNlYzkxYzI3MzM2MjY3NjNkYWY5ZGEyNmIyNDkzM2M2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTEwOCw3ICsxMDgs
NyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoTlNWaWV3KiB2aWV3LCBXS1dlYlZp
ZXcgKndlYlZpZXcpCiAgICAgOiBQYWdlQ2xpZW50SW1wbENvY29hKHdlYlZpZXcpCiAgICAgLCBt
X3ZpZXcodmlldykKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICAsIG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyPigpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCiAjZW5kaWYKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIubW0KaW5kZXggNDNlOWY5NjdiYzg5NzdmYmZmOGM4NjY4YTVjY2ExZjM4
MjRjMDgwOS4uMzRhNjliYmUwYmIwZDE3NmI1NTFiYWYyZDdhMzVjMWZhYWMwMzdhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIubW0KQEAgLTU0LDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUlu
dGVydmFsIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5N
b2RlbENsaWVudCA6IFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0K
IApAQCAtMTUwLDcgKzE1MSw3IEBAIC0gKGlkKWluaXRXaXRoV2luZG93OihOU1dpbmRvdyAqKXdp
bmRvdyB3ZWJWaWV3OihOU1ZpZXcgKil3ZWJWaWV3IHBhZ2U6KFdlYktpdDo6CiAgICAgX3dlYlZp
ZXcgPSB3ZWJWaWV3OwogICAgIF9wYWdlID0gJnBhZ2U7CiAKLSAgICBfdmlkZW9GdWxsc2NyZWVu
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4oKTsKKyAgICBfdmlkZW9GdWxsc2NyZWVu
Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4oKTsKICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50
LT5zZXRQYXJlbnQoc2VsZik7CiAKICAgICBbc2VsZiB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENo
YW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0Rmlu
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbQppbmRleCA2NjAzMTdjMmZiYzc5YjY4YmI1YjczNDc2YTU4YmVmZWEwOWIwNmQzLi42
OWQ5ZDllMmQ0NDQ4NDNkMTUyNzBmNTExN2Y3NzRjZDIzN2Q1ZGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KQEAgLTU1LDYgKzU1
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xh
c3MgVGV4dEZpbmRlckZpbmRDbGllbnQgOiBwdWJsaWMgQVBJOjpGaW5kTWF0Y2hlc0NsaWVudCwg
cHVibGljIEFQSTo6RmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dEZpbmRlckZpbmRDbGllbnQoV0tUZXh0RmluZGVyQ2xp
ZW50ICp0ZXh0RmluZGVyQ2xpZW50KQogICAgICAgICA6IG1fdGV4dEZpbmRlckNsaWVudCh0ZXh0
RmluZGVyQ2xpZW50KQpAQCAtMTY4LDggKzE2OSw4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFBhZ2U6KFdlYktpdDo6V2ViUGFnZVByb3h5JilwYWdlIHZpZXc6KE5TVmlldyAqKXZpZXcgdXNl
CiAgICAgX3ZpZXcgPSB2aWV3OwogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IHVzZVBsYXRmb3Jt
RmluZFVJOwogICAgIAotICAgIF9wYWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+
c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGll
bnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CisgICAgX3BhZ2UtPnNldEZpbmRD
bGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggZWQwZDVmZmU5NTg5Zjk1
ZTQ0YTA3ZjIyMThlZDgyYzAwZjAxN2Q3ZS4uZTc0YWRhYzFlNjVlYmU1Yzk5YjMxZDkwNjdhZTYx
MTU4ZjM5ODdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1Jl
bW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29j
a2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvckNsaWVudDo6ZGlkQ2xvc2UoQ29ubmVjdGlvbklEKQogdm9pZCBSZW1vdGVJ
bnNwZWN0b3JDbGllbnQ6Omluc3BlY3QoQ29ubmVjdGlvbklEIGNvbm5lY3Rpb25JRCwgVGFyZ2V0
SUQgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJlKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwg
dGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCwgJnR5cGVdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBj
b25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBl
KTsKICAgICB9KTsKIAogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMWI2ZDljYzU0ZmM2MGI1M2U0NDAyNzFmMjMw
OGU3YzBmNDdjODc0Yy4uYTg4MzNmNjI0ODdmOWE2NzIxMDM5OWVjOWY4ZmY1ZTA5MjcxMmVkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTg0LDExICs4NCwxMSBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2Vi
UGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIGNsaWVu
dCA9IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBb
dGhpcywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVt
b3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1
ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwg
cmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKIAogICAgIC8vIFNldHVwIHRhcmdldCBwb3N0TWVzc2FnZSBsaXN0ZW5lcgotICAg
IGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVz
ZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50
PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOwogICAgIHBhZ2VQcm94eS5wYWdlR3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5h
ZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICBTdHJpbmdC
dWlsZGVyIGh0bWxCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKaW5kZXggYjY3ZDczYTRkYzQ4OGIzMWZkYzlhNDcy
MTk2OTE0MDQyNzQ0ODgyNS4uNWQ1MGFlNTU0NjgwYTZlOWUzZGEyY2U4NGJlNTY0ZDVjMzIzN2Y3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURp
cmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3Jl
RGlyZWN0MkQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJEPiBCYWNraW5nU3Rv
cmU6OmNyZWF0ZUJhY2tlbmQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tp
bmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4o
bV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBCYWNraW5nU3RvcmU6OnBh
aW50KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRl
eCBjZDZmMDhmZjE4YmQ1NWMxNTU0NDYzZDRhNDBiNTFlNDViMmVhYjlmLi4wMzA3YzRmOWYxNDNm
ODZkYzYyMDhiNDg0YmU4ZGI0MjJkYzBmNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUGFnZUNsaWVudElt
cGw6OlBhZ2VDbGllbnRJbXBsKFdlYlZpZXcmIHZpZXcpCiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2
aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljcz4oKm1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2Uo
KSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3Bs
YXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKaW5kZXggY2Q1MzUyZGY3YWEwNGU2OWQ5YjBmOThlZDAwMWU1YzYzMzJm
NzU5My4uNjdlNWU0YjI3YTNhZTgwYWI2NjhmNmMzNDE3YzBmMGNlNmI3ZjA1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wg
V2ViVmlldzo6cmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MoKQogfQogCiBXZWJWaWV3OjpXZWJW
aWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
biwgSFdORCBwYXJlbnRXaW5kb3cpCi0gICAgOiBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQorICAgIDogbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8
UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKIHsKICAgICByZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFz
cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXggYjZkNGEwNDIwZDVhNWRiZDY0NjA4M2FmNjc4
ODA1MWJmNmNjNDdlMC4uZjJkNjJlYTk3OTBmODA3YTY1YjVkM2U1OGY4MGI5N2YwNmFkYmYzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb247CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0
b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBleHBsaWNpdCBXZWJQYXltZW50Q29vcmRpbmF0
b3IoV2ViUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVw
YWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1l
cGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggNGY4MTBjY2YzOGVjZmEyYzk5ZWNiZGE4
OWQwNDFjZWI4ZDIzMzNiOC4uYWFiMzQ1N2NlZDY0YTVhOTEwY2RjNTYyYWNjMDExNTAwZDNjNmNj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBh
ZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJH
YW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViR2FtZXBhZFByb3Zp
ZGVyOjpzZXRJbml0aWFsR2FtZXBhZHMoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYgZ2FtZXBh
ZERhCiAgICAgICAgIGlmIChnYW1lcGFkRGF0YXNbaV0uaXNOdWxsKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBtX2dhbWVwYWRzW2ldID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJH
YW1lcGFkPihnYW1lcGFkRGF0YXNbaV0pOworICAgICAgICBtX2dhbWVwYWRzW2ldID0gbWFrZVVu
aXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YXNbaV0pOwogICAgICAgICBtX3Jhd0dhbWVwYWRz
W2ldID0gbV9nYW1lcGFkc1tpXS5nZXQoKTsKICAgICB9CiB9CkBAIC03Niw3ICs3Niw3IEBAIHZv
aWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVkKGNvbnN0IEdhbWVwYWREYXRh
JiBnYW1lcGFkRGF0YSkKIAogICAgIEFTU0VSVCghbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRl
eCgpXSk7CiAKLSAgICBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YSk7CisgICAgbV9nYW1lcGFkc1tnYW1lcGFk
RGF0YS5pbmRleCgpXSA9IG1ha2VVbmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGEpOwogICAg
IG1fcmF3R2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBtX2dhbWVwYWRzW2dhbWVwYWRE
YXRhLmluZGV4KCldLmdldCgpOwogCiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCmluZGV4
IGZkNjUyM2Q2ZmE3ZDc1OTNkMWI4ZDNiMzJiYWI0NjNhOTY4ZWFhMjguLjYzM2YyMmZkZmU0Mjcy
YjM5ZGUyNWVhMGU0YTBhMDRkN2NkZTZjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xv
Y2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IDBiYjRmMmI0MjFhM2VjMjI4NzU0ZTYzODI5ZDQx
YWJiZTJlMDZmOGQuLmE2YzI4NzE2YWIxNjc4YWZkZDU3NGM5ZGY5ZmUyODY4NjM0NjMwMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2Nh
dGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV2ViUHJvY2Vz
czsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdlciA6IHB1Ymxp
YyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJH
ZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9u
TWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCBmM2VjNzIwODdj
YTI4ODY3ZjU0ZDlkZjBmNTBkODcxMDJlMDE2ZmEyLi5jYTg1ZDU4NWRjZjFiNzZlZjBiOGQxMWQ1
OWFkNjYwNGFjM2YxODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
V0tUeXBlSUQgV0tCdW5kbGVHZXRUeXBlSUQoKQogCiB2b2lkIFdLQnVuZGxlU2V0Q2xpZW50KFdL
QnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVDbGllbnRCYXNlICp3a0NsaWVudCkKIHsKLSAg
ICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9J
bXBsKGJ1bmRsZVJlZiktPnNldENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRTZXJ2aWNlV29ya2Vy
UHJveHlDcmVhdGlvbkNhbGxiYWNrKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgdm9pZCAoKmNhbGxi
YWNrKSh1aW50NjRfdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IGYxMmE1YmE3
NzRkNmNjNjhkMDg0ZjFmNjAyMWNlYmYzODFhYTNhNTguLmRjMDc1OGFkNzVhZjM2MWRmYmU4MTZl
YjExM2Y0MWM3ZjA5ZDgxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpCiB2b2lkIFdLQnVuZGxl
UGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChw
YWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBVTlVTRURfUEFSQU0od2tDbGll
bnQpOwpAQCAtODYsMjIgKzg2LDIyIEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRlCiAKIHZvaWQg
V0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1
bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1w
bChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQod2tDbGllbnQgPyBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pigqd2tD
bGllbnQpIDogc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGll
bnQ+KCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudCh3a0NsaWVudCA/IG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkVkaXRvckNsaWVudD4oKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVu
dChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRm9ybUNsaWVudEJhc2UqIHdr
Q2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZv
cm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldElu
amVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VMb2FkZXJD
bGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0
b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5p
cXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Pih3a0NsaWVudCkpOwog
fQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFJlc291cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3Vy
Y2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VS
ZXNvdXJjZUxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJl
ZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAK
IHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTExMSw3ICsxMTEs
NyBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZiwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xp
ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VVSUNsaWVudEJhc2UqIHdr
Q2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0
ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlD
bGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0RnVsbFNjcmVlbkNs
aWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVu
dEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3Bw
CmluZGV4IGViZDNlZjVmMjkzMDhjMTQxOTNhMTgxYjdlMWU0YTQyNWZkMjFkZDIuLjY5ZjdhZjIy
YjU2NzUwNGQ0ZjMxZjBkN2E3MGI4NzRlMDlmYTU1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlT3ZlcmxheS5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZU92ZXJsYXlBY2Nlc3NpYmlsaXR5Q2xpZW50QmFzZT4g
ewogfQogCiBjbGFzcyBQYWdlT3ZlcmxheUNsaWVudEltcGwgOiBBUEk6OkNsaWVudDxXS0J1bmRs
ZVBhZ2VPdmVybGF5Q2xpZW50QmFzZT4sIHB1YmxpYyBXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFBhZ2VPdmVybGF5Q2xpZW50SW1wbChXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZSog
Y2xpZW50KQogICAgIHsKQEAgLTIxNiw3ICsyMTcsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VP
dmVybGF5R2V0VHlwZUlEKCkKIAogV0tCdW5kbGVQYWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VP
dmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsK
LSAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VPdmVybGF5Q2xpZW50
SW1wbD4od2tDbGllbnQpOworICAgIGF1dG8gY2xpZW50SW1wbCA9IG1ha2VVbmlxdWU8UGFnZU92
ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7CiAgICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6Oldl
YlBhZ2VPdmVybGF5OjpjcmVhdGUoV1RGTW92ZShjbGllbnRJbXBsKSkubGVha1JlZigpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQppbmRl
eCBhY2MzNWEyMWI1OWYxYWEzMWUzMzA1MWE2NmJjMTMwNTk5NjY5OWQzLi5kNmZmZDFjY2MwNGE5
M2E3YTA5ZDJiMzY1NTlhOGYwYzA5NTBmZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFj
L1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQpAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBQYWdlQmFubmVyQ2xpZW50
SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZUJhbm5lckNsaWVudEJhc2U+LCBwdWJsaWMg
UGFnZUJhbm5lcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBQYWdlQmFubmVyQ2xpZW50SW1wbChXS0J1bmRsZVBhZ2VCYW5uZXJD
bGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAtMTAzLDcgKzEwNCw3IEBAIFdLQnVuZGxlUGFn
ZUJhbm5lclJlZiBXS0J1bmRsZVBhZ2VCYW5uZXJDcmVhdGVCYW5uZXJXaXRoQ0FMYXllcihDQUxh
eWVyICpsYXllciwKICAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgYXV0byBjbGllbnRJbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OlBhZ2VCYW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAgYXV0byBjbGllbnRJ
bXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VCYW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7
CiAgICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6OlBhZ2VCYW5uZXI6OmNyZWF0ZShsYXllciwgaGVp
Z2h0LCBjbGllbnRJbXBsLnJlbGVhc2UoKSkubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01P
YmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcAppbmRleCA0MjEwMWY4YzgyY2IyYTU0ODNi
YWU0ZGM4NDgwN2I0MTY1YTkyZDg2Li4yMmI0MGU0MzliYmI2MDE1ZTE4YWE4YzI1NThlMGU2OTNm
NWViMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBET01PYmplY3RD
YWNoZURhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBET01P
YmplY3RDYWNoZURhdGEoR09iamVjdCogd3JhcHBlcikKICAgICAgICAgOiBvYmplY3Qod3JhcHBl
cikKICAgICAgICAgLCBjYWNoZVJlZmVyZW5jZXMoMSkKQEAgLTc3LDE1ICs3OCw4IEBAIHN0YXRp
YyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXAmIGRvbU9iamVjdENhY2hlRnJhbWVPYnNl
cnZlcnMoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBET01PYmplY3RDYWNoZUZyYW1l
T2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6
OkZyYW1lJiBmcmFtZSkKLXsKLSAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6OkFk
ZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZmcmFt
ZSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2Jz
ZXJ2ZXI+KGZyYW1lKTsKLSAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci19Ci0K
IGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6
OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1l
JiBmcmFtZSkKICAgICAgICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoJmZyYW1lKQpAQCAt
MTA1LDcgKzk5LDcgQEAgY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyIGZpbmFsOiBw
dWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmUKICAgICAgICAgaWYgKGRvbVdp
bmRvdyAmJiAoIW1fZG9tV2luZG93T2JzZXJ2ZXIgfHwgbV9kb21XaW5kb3dPYnNlcnZlci0+d2lu
ZG93KCkgIT0gZG9tV2luZG93KSkgewogICAgICAgICAgICAgLy8gTmV3IERPTVdpbmRvdywgY2xl
YXIgdGhlIGNhY2hlIGFuZCBjcmVhdGUgYSBuZXcgRE9NV2luZG93T2JzZXJ2ZXIuCiAgICAgICAg
ICAgICBjbGVhcigpOwotICAgICAgICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlzKTsKKyAgICAgICAg
ICAgIG1fZG9tV2luZG93T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERPTVdpbmRvd09ic2VydmVyPigq
ZG9tV2luZG93LCAqdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICBtX29iamVjdHMuYXBwZW5k
KCZkYXRhKTsKQEAgLTE5MSw2ICsxODUsMTQgQEAgY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9i
c2VydmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmUKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RE9NV2luZG93T2JzZXJ2ZXI+IG1fZG9tV2luZG93T2JzZXJ2ZXI7
CiB9OwogCitzdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyJiBnZXRPckNyZWF0ZURP
TU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCit7CisgICAg
RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2Jq
ZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpLmFkZCgmZnJhbWUsIG51bGxwdHIpOworICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VV
bmlxdWU8RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyPihmcmFtZSk7CisgICAgcmV0dXJuICpy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIHN0ZDo6
dW5pcXVlX3B0cjxET01PYmplY3RDYWNoZURhdGE+PiBET01PYmplY3RNYXA7CiAKIHN0YXRpYyBE
T01PYmplY3RNYXAmIGRvbU9iamVjdHMoKQpAQCAtMjE1LDcgKzIxNyw3IEBAIHZvaWQgRE9NT2Jq
ZWN0Q2FjaGU6OnB1dCh2b2lkKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCiB7CiAgICAg
RE9NT2JqZWN0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0cygpLmFkZChvYmplY3RI
YW5kbGUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRh
PihHX09CSkVDVCh3cmFwcGVyKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBt
YWtlVW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBlcikpOwogfQogCiB2
b2lkIERPTU9iamVjdENhY2hlOjpwdXQoV2ViQ29yZTo6Tm9kZSogb2JqZWN0SGFuZGxlLCB2b2lk
KiB3cmFwcGVyKQpAQCAtMjI0LDcgKzIyNiw3IEBAIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChX
ZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCiAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFw
cGVyKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0
Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CiAgICAgaWYgKFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IG9iamVjdEhhbmRsZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBnZXRPckNy
ZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcigqZnJhbWUpLmFkZE9iamVjdENhY2hlRGF0
YSgqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggNGNjZWM2MmVmMGUxMTMxZmExM2Y3ZmIw
NjBjODBlMDdlZTQyNTFhZi4uNGQ3NDJlNDA5YmJmYzdjZmFiNDA4Y2Q2NTM4YWVmOWYyMjhmZDcy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNw
cApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlh
bGl6ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBBUEk6Ok9iamVjdCogdXNlCiAgICAgc2Nhbk1v
ZHVsZXMod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgbW9kdWxlUGF0aHMpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRv
IG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtb2R1bGVQYXRoc1tpXSk7CisgICAg
ICAgIGF1dG8gbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKICAg
ICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBpZiAoaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbihtb2R1bGUuZ2V0KCksIHVzZXJEYXRhLmdldCgp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKaW5kZXggMDQwNzJlYjg2
NGRiZTM1ZjgwZGZjODZhZDBlODgzYzNlOTljZTQ0Zi4uY2NiNTFlMGQ5NjQwYzY2Zjg1OTZlNDc0
MTcxNDA1OGU5MTM5NzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVh
dGUoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIHsKICAgICBXZWJLaXRXZWJFZGl0b3IqIGVkaXRv
ciA9IFdFQktJVF9XRUJfRURJVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRURJVE9S
LCBudWxscHRyKSk7CiAgICAgZWRpdG9yLT5wcml2LT53ZWJQYWdlID0gd2ViUGFnZTsKLSAgICB3
ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50PihlZGl0b3IpKTsKKyAgICB3ZWJr
aXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQo
bWFrZVVuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50PihlZGl0b3IpKTsKICAgICByZXR1cm4gZWRpdG9y
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4
IDRhMjNiZjU2MDEwN2MzMWYxYTRkZTJjOTYxMjk5YTcwMTA4MTc1MDEuLmUzMDZlM2ZlZjI2MzFk
NTQ2NjU1NzExNmU1ZTQ4N2QzNzFjNzg1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRXZWJFeHRlbnNpb24uY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgY2xhc3MgV2ViRXh0ZW5zaW9u
SW5qZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6
Q2xpZW4KIFdlYktpdFdlYkV4dGVuc2lvbiogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVj
dGVkQnVuZGxlKiBidW5kbGUpCiB7CiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24g
PSBXRUJLSVRfV0VCX0VYVEVOU0lPTihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VYVEVO
U0lPTiwgTlVMTCkpOwotICAgIGJ1bmRsZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2Vi
RXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4dGVuc2lvbikpOworICAgIGJ1bmRsZS0+
c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4
dGVuc2lvbikpOwogICAgIHJldHVybiBleHRlbnNpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcAppbmRleCBjZmM1MDMxZWQ2ZTRhMjk1NGZlMDJhMDNkYTg3YTE2MWNk
MmQzMDgyLi5jOTIwNGIyMzk4MWQ3ZjE3YWQwNzNiOWVkNDEyYTg3NzY4NWNlN2QzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC05NSw2ICs5NSw3IEBAIFdFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRXZWJQYWdlLCB3ZWJraXRfd2ViX3BhZ2UsIEdfVFlQRV9PQkpFQ1Qp
CiBzdGF0aWMgdm9pZCB3ZWJGcmFtZURlc3Ryb3llZChXZWJGcmFtZSopOwogCiBjbGFzcyBXZWJL
aXRGcmFtZVdyYXBwZXIgZmluYWw6IHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYktpdEZyYW1lV3Jh
cHBlcihXZWJGcmFtZSYgd2ViRnJhbWUpCiAgICAgICAgIDogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyKHdlYkZyYW1lLmNvcmVGcmFtZSgpKQpAQCAtMTI4LDcgKzEyOSw3IEBAIHN0YXRpYyBXZWJL
aXRGcmFtZSogd2Via2l0RnJhbWVHZXRPckNyZWF0ZShXZWJGcmFtZSogd2ViRnJhbWUpCiAgICAg
aWYgKHdyYXBwZXJQdHIpCiAgICAgICAgIHJldHVybiB3cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgp
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEZyYW1lV3JhcHBlcj4gd3JhcHBlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0RnJhbWVXcmFwcGVyPigqd2ViRnJhbWUpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+IHdyYXBwZXIgPSBtYWtlVW5pcXVlPFdlYktp
dEZyYW1lV3JhcHBlcj4oKndlYkZyYW1lKTsKICAgICB3cmFwcGVyUHRyID0gd3JhcHBlci5nZXQo
KTsKICAgICB3ZWJGcmFtZU1hcCgpLnNldCh3ZWJGcmFtZSwgV1RGTW92ZSh3cmFwcGVyKSk7CiAg
ICAgcmV0dXJuIHdyYXBwZXJQdHItPndlYmtpdEZyYW1lKCk7CkBAIC02NzgsMTEgKzY3OSwxMSBA
QCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCiAg
ICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IFdFQktJVF9XRUJfUEFHRShnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCX1BBR0UsIE5VTEwpKTsKICAgICBwYWdlLT5wcml2LT53ZWJQYWdlID0gd2Vi
UGFnZTsKIAotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFnZSkpOwotICAgIHdl
YlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50
PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VVSUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVk
QnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7
CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQobWFrZVVu
aXF1ZTxQYWdlUmVzb3VyY2VMb2FkQ2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUxvYWRlckNsaWVudD4o
cGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQo
bWFrZVVuaXF1ZTxQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5z
ZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1ha2VVbmlxdWU8UGFnZVVJQ2xpZW50PihwYWdlKSk7
CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8UGFn
ZUZvcm1DbGllbnQ+KHBhZ2UpKTsKIAogICAgIHJldHVybiBwYWdlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0
SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQppbmRleCA4MTA1NWNlN2ZkZWJhMzE4ZGFiMDY4MjYz
NGM2YmQ4NGEzN2ZhZThjLi4wODRmMzAwNWQ2MTAzZDRlMjUwMzNjMjU2YzcwYzBlMDY0MDQxY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQpAQCAtNDUsNyArNDUs
NyBAQCAtIChpZClpbml0V2l0aFJhbmdlOihXS0RPTVJhbmdlICopcmFuZ2UKICAgICBpZiAoIXNl
bGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfdGV4dEl0ZXJhdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KFdlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFu
Z2UpKTsKKyAgICBfdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0
b3I+KFdlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFuZ2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDQ4ODAwYmIzMTc5MDY1ZTRl
NzMyOTMwNjkwNTQ2ODBlNDM0YWYxZmYuLjQyMDIzOTZhYmFmYWYzMGQ3MTg5YWViNjg1MDllYTI3
MTcxYjk3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTU0NCw3ICs1
NDQsNyBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5G
b3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVsZWdhdAogICAgIH07CiAKICAgICBpZiAoZm9ybURl
bGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOworICAgICAgICBfcGFnZS0+c2V0SW5qZWN0
ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOwogICAgIGVs
c2UKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChudWxscHRyKTsK
IH0KQEAgLTY3Myw3ICs2NzMsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxX
S1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgIH07CiAK
ICAgICBpZiAoZWRpdGluZ0RlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnQ+KHNlbGYpKTsKKyAgICAgICAg
X3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KG1ha2VVbmlxdWU8Q2xpZW50Pihz
ZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAyMGNlNTU5MTFkNzA2
NTFjMzM1YTcwYWNmMjRlNWJkZmMyMWJkNjMxLi45OTc5ZDYzODRkZmY1Yzk4MDU5MWYyOTA4M2M5
MzcyOTYzNDRhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVkQnVuZGxlOjpjcmVhdGUoV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogSW5qZWN0ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKGNv
bnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3Bh
dGgocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgLCBtX3BsYXRmb3JtQnVuZGxl
KDApCi0gICAgLCBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OkNsaWVudD4oKSkKKyAgICAsIG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Q2xpZW50PigpKQogewogfQogCkBAIC0xMTQsNyArMTE0LDcgQEAgSW5qZWN0ZWRCdW5kbGU6
On5JbmplY3RlZEJ1bmRsZSgpCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAg
aWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVu
dCA9IFdURk1vdmUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAppbmRl
eCAwY2E1ZWE2ZDJhYmU1NzIxNTRkMjFiZWQwY2M5YTA1M2U3ZDY2YzE4Li5iZmIzZDA0NTE0Mzcz
NmMzMWRmOTg4YWIxYjAwZGU0MmI4NTMwODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2Vz
czsKIAogY2xhc3MgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNz
U3VwcGxlbWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcihXZWJQcm9jZXNzJikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJl
YW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZDdjNWM2ODM0NGI3
MjczOGQ5NDk3ZGYwMTJjYTM3NmJiODQxODhkYS4uYjBiZDUzNGNlMTlkNzM4NjFkODE3NmE4MjA1
Y2RjZTYxOTVmZDA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
U3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBh
Z2U7CiAKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+LCBwcml2YXRl
IFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKFdlYlBhZ2UmKTsKICAgICB+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA3MzM1Mjc2NTg3MWQ4MjU1YTIzZGI3YjU1ZTZk
NDRlZTczMzkyMmQ3Li4yZTU3YWYyNDgzYmQzNmIzZGQ4NWU0ZWMxOGRkZTEwZjQ0MzZlODZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtMTMyLDM4ICsxMzIsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kTWVzc2FnZShUJiYgbWVzc2FnZSwgc2l6ZV90IGJ5dGUK
ICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi1XZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tl
dENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGF1dG8gYnl0ZUxl
bmd0aCA9IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRB
bW91bnQoYnl0ZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBTZW5kRmFpbDsKLQotICAgIGlmICht
X3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2Vz
OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0
aCk7Ci0gICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2FnZSkpOwotCi0gICAgcmV0dXJuIFNlbmRTdWNj
ZXNzOwotfQotCi1XZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6
OnNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKLXsKLSAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRB
bW91bnQoYnl0ZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBTZW5kRmFpbDsKLQotICAgIGlmICht
X3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2Vz
OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNl
dCwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9wZW5k
aW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KGJpbmFy
eURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKLQotICAgIHJldHVybiBTZW5kU3VjY2Vz
czsKLX0KLQogY2xhc3MgQmxvYkxvYWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpGaWxlUmVh
ZGVyTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBCbG9iTG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6Qmxv
YiYgYmxvYiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ICAgICAgICA6IG1fbG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsZVJlYWRlckxv
YWRlcj4oV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMp
KQorICAgICAgICA6IG1fbG9hZGVyKG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cj4oV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpKQog
ICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgewogICAgICAgICBtX2xvYWRlci0+c3RhcnQoZG9jdW1lbnQsIGJsb2IpOwpAQCAtMjI2
LDcgKzE5OSw3IEBAIGNsYXNzIFBlbmRpbmdNZXNzYWdlIHsKIAogICAgIFBlbmRpbmdNZXNzYWdl
KFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6QmxvYiYgYmxvYiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IG1fdHlw
ZShUeXBlOjpCbG9iKQotICAgICAgICAsIG1fYmxvYkxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPEJs
b2JMb2FkZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpCisg
ICAgICAgICwgbV9ibG9iTG9hZGVyKG1ha2VVbmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJs
b2IsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSkKICAgICB7CiAgICAgfQogCkBAIC0yNDQs
MTMgKzIxNyw0MCBAQCBjbGFzcyBQZW5kaW5nTWVzc2FnZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKIH07CiAKK1dlYlNvY2tldENoYW5uZWw6OlNlbmRS
ZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOworICAgIGlmICghaW5j
cmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIFNlbmRGYWls
OworCisgICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgc2VuZE1l
c3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgbWVzc2Fn
ZSB9LCBieXRlTGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFw
cGVuZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdlKSk7CisKKyAgICByZXR1cm4g
U2VuZFN1Y2Nlc3M7Cit9CisKK1dlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQoreworICAgIGlmICghaW5jcmVhc2VC
dWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIFNlbmRGYWlsOworCisg
ICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgc2VuZE1lc3NhZ2Uo
TWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVy
ZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBi
eXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CisgICAgZWxzZQorICAgICAg
ICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4oYmlu
YXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOworCisgICAgcmV0dXJuIFNlbmRTdWNj
ZXNzOworfQorCiBXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6
OnNlbmQoV2ViQ29yZTo6QmxvYiYgYmxvYikKIHsKICAgICAvLyBBdm9pZCB0aGUgQmxvYiBxdWV1
ZSBhbmQgbG9hZGluZyBmb3IgZW1wdHkgYmxvYnMuCiAgICAgaWYgKCFibG9iLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIHNlbmQoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJsb2Iuc2l6ZSgpLCAx
KSwgMCwgMCk7CiAKLSAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nTWVzc2FnZT4obV9kb2N1bWVudC5nZXQoKSwgYmxvYiwgW3RoaXNdIHsKKyAgICBt
X3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obV9kb2N1
bWVudC5nZXQoKSwgYmxvYiwgW3RoaXNdIHsKICAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdNZXNz
YWdlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1lc3NhZ2UgPSBtX3BlbmRpbmdN
ZXNzYWdlcy5maXJzdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCAwOTRhYzcx
ZjdlNWVmZmFiNzQ4NWZjZWZjYWU1NDg5M2RiM2UwNTA2Li43ZWMzN2NkZjA5ZDM5MGEzODI3YTY5
Y2EzZjYwYTZjMzA1NmRhNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
Y2xhc3MgQXN5bmNSZXNvbHZlckZhY3RvcnkgOiBwdWJsaWMgd2VicnRjOjpBc3luY1Jlc29sdmVy
RmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwcml2YXRlOgogICAgIHJ0
Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogQ3JlYXRlKCkgZmluYWwKICAgICB7CkBAIC00Niw3
ICs0Nyw3IEBAIGNsYXNzIEFzeW5jUmVzb2x2ZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6QXN5
bmNSZXNvbHZlckZhY3RvcnkgewogCiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29u
bmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9u
KHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIHJ0Yzo6UGFja2V0U29j
a2V0RmFjdG9yeSogc29ja2V0RmFjdG9yeSwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFj
ZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKSwgKnNvY2tl
dEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlvbiksIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNS
ZXNvbHZlckZhY3Rvcnk+KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRl
cjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2ZXIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCksICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKIH0KIAog
dm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENSZXNvbHZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Jlc29sdmVyLmgKaW5kZXggNWQ2MzgzZjZiNTA2NTNiNWM2NzA3MDcwNWM2YzEw
Mjg3MGZhMDIzMS4uMzk5MDY5OWQwNzc4ZmViMTdiMGNhOGU2MDc4MTQxMDhhNWMwMGFmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Jlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Jlc29sdmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OwogCiBjbGFzcyBMaWJXZWJSVENSZXNvbHZl
ciBmaW5hbCA6IHB1YmxpYyBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ1Jlc29sdmVyKHVpbnQ2
NF90IGlkZW50aWZpZXIpIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29j
a2V0RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKaW5kZXggZjhiN2VkMjI5YzRmNmYyZGMwMzYxMzJj
Yzk2ZTQxMWVlY2E1NzAyZS4uMjM1ODJkZTc1OWI5ODQ1ZWI3ZmU0MDY0NDM2NWVmYmMxOWI3NWQx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcApAQCAtNTAsNyArNTAsNyBA
QCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29ja2V0QWRkcmVzcyBwcmVwYXJlU29ja2V0QWRkcmVzcyhj
b25zdCBydGM6OlNvY2tldEFkZHJlc3MmCiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldl
YlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldChjb25zdCBydGM6OlNvY2tl
dEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQsIGlu
dCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29j
a2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKKyAg
ICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3Vu
aXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyVENQLCBh
ZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQt
PmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2lk
ZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9IHByZXBhcmVTb2NrZXRB
ZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKSwgbWluUG9y
dCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7CkBAIC02Niw3ICs2Niw3IEBAIHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldChj
b25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rv
cnk6OmNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVp
bnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJ
ZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRjOjpTb2Nr
ZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2Nr
ZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpU
eXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKICAgICBtX3NvY2tldHMu
c2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCiAgICAgY2FsbE9uTWFp
blRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigpLCBhZGRyZXNzID0gcHJl
cGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlv
bnMpLCBtaW5Qb3J0LCBtYXhQb3J0XSgpIHsKQEAgLTgwLDcgKzgwLDcgQEAgcnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNvbnN0
IHJ0Yzo6U29ja2UKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFj
dG9yeTo6Y3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgbG9j
YWxBZGRyZXNzLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZUFkZHJlc3MsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nJiYgdXNlckFnZW50LCBpbnQgb3B0aW9ucykKIHsK
LSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhp
cywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6Q2xp
ZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MpOworICAgIGF1dG8gc29ja2V0ID0g
bWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRp
ZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywgcmVt
b3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENTb2NrZXQ6OlNUQVRF
X0NPTk5FQ1RJTkcpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNv
Y2tldC5nZXQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCog
TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0YzoK
IAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRl
TmV3Q29ubmVjdGlvblNvY2tldChMaWJXZWJSVENTb2NrZXQmIHNlcnZlclNvY2tldCwgdWludDY0
X3QgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXIsIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYgcmVtb3RlQWRkcmVzcykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldl
YlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0LmxvY2Fs
QWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8
TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldl
YlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0LmxvY2Fs
QWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNldFN0YXRlKExpYldlYlJU
Q1NvY2tldDo6U1RBVEVfQ09OTkVDVEVEKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRl
bnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpkZXRhY2goTGliV2ViUlRDU29ja2V0JiBzb2NrZXQpCiAKIHJ0
Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRl
QXN5bmNSZXNvbHZlcigpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOworICAgIGF1
dG8gcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1Jlc29sdmVyPigrK3NfdW5pcXVlUmVz
b2x2ZXJJZGVudGlmaWVyKTsKICAgICBhdXRvKiByZXNvbHZlclBvaW50ZXIgPSByZXNvbHZlci5n
ZXQoKTsKICAgICBtX3Jlc29sdmVycy5zZXQocmVzb2x2ZXJQb2ludGVyLT5pZGVudGlmaWVyKCks
IFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4gcmVzb2x2ZXJQb2ludGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDJkMWU4NDI0N2JkMGEzMGM5NGQxZjJlYTMwMWRk
NTVkMDJhNmUwNzYuLmIyNzEzZjQ2YzFmYzEzYzlmMjdiYmUzOWNhNWRjNTE4NTBiMTgzZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2Vi
UGFnZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIg
OiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV2ViTm90aWZpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJG
dW5jcy5jcHAKaW5kZXggMTZhMWE3ZjgzNDQ2MDUzZjMzZDY1NGU4MzMzMjI5NTBlZTk5NGQ3Mi4u
ZDczZjFmMTZmODkwNzY5YzcyY2M5ZGQ0NDBkMjI5MjFmZjVmZmE5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVu
Y3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBQbHVnaW5EZXN0
cnVjdGlvblByb3RlY3RvciB7CiAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0
b3IoTmV0c2NhcGVQbHVnaW4qIHBsdWdpbikKICAgICB7CiAgICAgICAgIGlmIChwbHVnaW4pCi0g
ICAgICAgICAgICBtX3Byb3RlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29udHJvbGxl
cjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdp
biktPmNvbnRyb2xsZXIoKSk7CisgICAgICAgICAgICBtX3Byb3RlY3RvciA9IG1ha2VVbmlxdWU8
UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0
PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA2OWEzYzkzZjEzMjZmYTRjNmY3ZmViZjhhYjFi
MmNhNGM3NzZiYzBlLi41OWY0ODI1MWYyODg1NGM2ZDE2ODBiMWQ2NGRmYWE1YTQ3YzY4MTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgdWludDMyX3QgTmV0
c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIodW5zaWduZWQgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0
LCB2b2lkICgqdGkKICAgICAvLyBGSVhNRTogSGFuZGxlIHdyYXBwaW5nIGFyb3VuZC4KICAgICB1
bnNpZ25lZCB0aW1lcklEID0gKyttX25leHRUaW1lcklEOwogCi0gICAgYXV0byB0aW1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRp
bWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KHRoaXMsIHRpbWVy
SUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAgICAgCiAgICAgLy8gRklYTUU6IEJh
c2VkIG9uIHRoZSBwbHVnLWluIHZpc2liaWxpdHksIGZpZ3VyZSBvdXQgaWYgd2Ugc2hvdWxkIHRo
cm90dGxlIHRoZSB0aW1lciwgb3IgaWYgd2Ugc2hvdWxkIHN0YXJ0IGl0IGF0IGFsbC4KICAgICB0
aW1lci0+c3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGUwYWJjMmM3YjQxMjk5MzAw
MmJiYWI4YmRmYWI3ZjI2NTFhZGM1N2YuLmI2Yzc2YjZlZDcxNGNhYWEzYTQxZGRlNDFjMWQ2YTEw
NGZiN2FlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMzA4LDYgKzMwOCw3IEBAIGNsYXNz
IE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiAgICAgVmVjdG9yPGJvb2wsIDg+IG1f
cG9wdXBFbmFibGVkU3RhdGVzOwogCiAgICAgY2xhc3MgVGltZXIgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGltZXIpOwog
CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IDA0
OTYyOGY1YzYyNzAyZTRkNWQ0MTExODIwMTIzYmE1ZjRiOTY1MjQuLmJkYWExNDQ3ODQyMjY5NWQ1
MGVhODQ4YWFmY2NiY2UxMmQyYWQ5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxp
dmVyRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmIChtX3RyYW5z
ZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9kZWxpdmVyeURhdGEp
Ci0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHVp
bnQ4X3Q+PigpOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBtYWtlVW5pcXVlPFZlY3Rv
cjx1aW50OF90Pj4oKTsKIAogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+cmVzZXJ2ZUNhcGFjaXR5
KG1fZGVsaXZlcnlEYXRhLT5zaXplKCkgKyBsZW5ndGgpOwogICAgICAgICBtX2RlbGl2ZXJ5RGF0
YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgx
MS5jcHAKaW5kZXggNDRkMTFiNTdjM2VhNmQ1MThjMThkMDRiODIyZDI4NmQ1M2U5NjhjZi4uMDdk
NTU2YzNiN2ZjNjM3MTljMmEyNTU5ZTBhYWQ2YzIyNmMwN2NhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBAIC0xMzYsMTAgKzEzNiwxMCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TmV0c2NhcGVQbHVnaW5YMTE+IE5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUoTmV0c2NhcGVQ
bHVnaW4mIHBsdQogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChwbHVnaW4uaXNXaW5kb3dl
ZCgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4o
cGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5l
dHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRvd0lEKTsKICNlbmRpZgogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlz
cGxheSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwg
ZGlzcGxheSk7CiB9CiAKIE5ldHNjYXBlUGx1Z2luWDExOjpOZXRzY2FwZVBsdWdpblgxMShOZXRz
Y2FwZVBsdWdpbiYgcGx1Z2luLCBEaXNwbGF5KiBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuaAppbmRleCA0MWU5YjZjOWQ4NGNhYTQ5NThlMzg1YjllZDgwZmRkN2UxMWRj
YTViLi4xZjlmZDg3ZmEzYTMwYzkzNjA0MzhlZDU5N2RjMzJjODk1ODdhZjE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQ
bHVnaW5YMTEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIE5ldHNjYXBlUGx1Z2luOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdpblgxMSBm
aW5hbCA6IHB1YmxpYyBOZXRzY2FwZVBsdWdpblVuaXggeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQbHVn
aW5YMTE+IGNyZWF0ZShOZXRzY2FwZVBsdWdpbiYpOwogICAgIE5ldHNjYXBlUGx1Z2luWDExKE5l
dHNjYXBlUGx1Z2luJiwgRGlzcGxheSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmluZGV4IGExZjgwN2UxZTU1MDcyM2VmZWVh
MTc3MTMzYjgxZGZmNGQxNzZiMzUuLmI1NzJhYTNhNTM2ZDQ4NWNiOWI4MTdhMTZlMDJjMzMyYzRi
YzIxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Db250cm9sbGVyLmgKQEAgLTE1OSw2ICsxNTksNyBAQCBjbGFzcyBQbHVnaW5Db250cm9sbGVy
IHsKIAogICAgIC8vIEhlbHBlciBjbGFzcyBmb3IgZGVsYXlpbmcgZGVzdHJ1Y3Rpb24gb2YgYSBw
bHVnLWluLgogICAgIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHsKKyAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBQ
bHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihQbHVnaW5Db250cm9sbGVyKiBwbHVnaW5Db250cm9s
bGVyKQogICAgICAgICAgICAgOiBtX3BsdWdpbkNvbnRyb2xsZXIocGx1Z2luQ29udHJvbGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApp
bmRleCBmMzdjMmNjMjRlM2RkOTc2M2YzZWJkZDYzMmQ4YmZkYjc3MTQ0MzQ3Li45YWI1ODM3MzBi
ODlkYmQ5NjAxZDY1MjBlZjhmOWIwYmUwMDZkYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wg
UGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAg
ICBtX2Nvbm5lY3Rpb24tPmFkZFBsdWdpblByb3h5KHRoaXMpOwogCiAgICAgLy8gQXNrIHRoZSBw
bHVnLWluIHByb2Nlc3MgdG8gY3JlYXRlIGEgcGx1Zy1pbi4KLSAgICBtX3BlbmRpbmdQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1l
dGVycz4oKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBtYWtlVW5p
cXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKIAogICAgIG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy0+cGx1Z2luSW5zdGFuY2VJRCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsK
ICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPndpbmRvd05QT2JqZWN0SUQg
PSB3aW5kb3dOUE9iamVjdElEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDdhYjg5NjZkYjkwNWFkZDEyMzk0ODE2NTBiMTlkZTRh
N2U3ZDIyM2YuLjExOWQyYjkwYzJiNDQyMzFmMjU2OTU3ZTYyZGRjYThmMTMwZmM3MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC04
OTgsNyArODk4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVh
dGVXZWJFdmVudChNb3VzZUV2ZW50JiBldmVudCkgY29uc3QKICAgICBpZiAoZXZlbnQubWV0YUtl
eSgpKQogICAgICAgICBtb2RpZmllcnMuYWRkKFdlYkV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0
b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50
KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50LnNjcmVlbkxvY2F0aW9u
KCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWUgeyB9LCAwKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1
dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNl
dFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAs
IGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWUgeyB9LCAwKTsKIH0KIAogdm9pZCBQbHVn
aW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKaW5kZXggNmZjMDljNGY2NWIyNDViNjBiZjRkNGY1OTdhOWY5MGFkNGQwYWFm
OS4uYTFmZjAzM2IyMDRlYWZhZGM4ODhhODIwOGE4OWY3OWRhMDBiY2Y5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250CiAKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIG1vdmVk
IGRpcmVjdGx5IHRvIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24KICAgICAv
LyBJZiBpdCB3ZXJlbid0IGZvciBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQncyBkZXBl
bmRlbmNlIG9uIFdlYkRvY3VtZW50TG9hZGVyLCB0aGlzIGNvdWxkIGFscmVhZHkgaGFwcGVuLgot
ICAgIGF1dG8gZnJhbWVMb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2
aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZmZWN0aXZlVXNlckFnZW50KTsKKyAgICBhdXRvIGZyYW1l
TG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+
KCp0aGlzLCBzZXNzaW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQs
IGVmZmVjdGl2ZVVzZXJBZ2VudCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50
Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCk7CiAgICAgbV9sb2FkZXJzLmFk
ZChXVEZNb3ZlKGZyYW1lTG9hZGVyQ2xpZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaAppbmRleCA5MjBkZWQwNDBjZTU2
MTgzMzk5ZjZjOTNiODJlYjM2ZGY3MzA0OTZhLi45MzBlNDYxODE5ZTE4NmY1YTgwZDhmNjcxNmZi
MTE4YzRkYzBlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV09yaWdpblRhYmxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dPcmlnaW5UYWJsZS5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTZWN1cml0eU9y
aWdpbkRhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU1dPcmlnaW5UYWJsZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU1dPcmlnaW5U
YWJsZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmlu
ZGV4IDRkZjZmMDE5ZTU1ODU3NTUyYzg0ZGZhYjkyNTBjNDAxYTg0Y2I4MzUuLmY0Y2YyOTFhNDAx
MGIxZTdjMjQxNjdkNDU0YjU0ZWM0Yjg2NGM0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJQYWdlOwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSop
OwogICAgIHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAppbmRleCAzYzg3MmY1YWRmMzliZWFjZDNhNzA2NjdiMjY4OWQzOGM5YjExMTJlLi40
ZDI3NDc2ODYyMGU1YTQ2ZWI5NTA4ZmRlNDdiNTcxZTc5NmYxNzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVk
QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sCiAKIHN0
ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JD
aG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCYgY2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENv
bG9yKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1f
cGFnZSwgJmNsaWVudCwgaW5pdGlhbENvbG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJD
b2xvckNob29zZXI+KCZtX3BhZ2UsICZjbGllbnQsIGluaXRpYWxDb2xvcik7CiB9CiAKICNlbmRp
ZgpAQCAtODAyLDcgKzgwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsCiAKIHN0ZDo6dW5p
cXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVu
dCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCmluZGV4IGNlZDM2YTZjMjViN2U0ZjgzNDRhNTg5OTQwMDY3OTFmN2NjOTI3
NmYuLmQ0NTU2ZDk4N2EzNjZkMTgxMTQwOGFkOTBiZjdhMzQ3ZGQ1OThkYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJD
aHJvbWVDbGllbnQoV2ViUGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4
IDZjMjliNGUwODEyNmU3Y2Q2Njc5Y2M0NzAyMzVjNTU3NGRlNTBkMmUuLmMxYzg5Y2Q5OWU4N2Fl
ZTg0ZWQ1NzQ2YzJlODFmNjQ3ZTgyZjFmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNv
bnRleHRNZW51Q2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaAppbmRleCAxYWQ0YzNkZTJjYjdkMzhlNjI2MmMxOTdhYWIyNGNjYTZmZWRhODIx
Li5iMjRlY2Y3NmM0NTUyNGY2MGQ4NmFlZDZmYjFlY2Y2ZjBmMzk0MjFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwog
CiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2Vi
UGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRl
eCAyNjgxMDJmZWExYTc3NTdlZDdlMTZkZGVjY2UzY2FkOGVlNmJkNDM1Li5kMjJkNGNiNzNmMjk3
M2Y1NjU1YTg3M2ViZDIyZDZiMDA2YWUwZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2Vi
RWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGlj
IFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAg
OiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMzBmNWFkNmI0
YmMyYTYzOGQ2MDM3ZjhlYzk3MzgwOWRmNmU1NmIxOC4uMzVhMzFmYzJhMzQ0YjMxMjg3MzA1MDRi
N2ZlN2ExMTVmMDExYjg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMyLDYg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJH
ZW9sb2NhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25D
bGllbnQoV2ViUGFnZSYgcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKaW5kZXggN2NkYWFjZDFmYzFkNDZkNjVlYWRjM2YzYTYxMzRhYTM1NThh
MmQxMS4uZDY3YjYyYzAyZTY4ODNiNDQ4NjVmYmExNTg1MTZlYTBjYmNiNWM1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfQogCiAg
ICAgaWYgKCFtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQpCi0gICAgICAgIG1fcGFpbnRJbmRp
Y2F0b3JMYXllckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwYWludEluZGljYXRvckxheWVy
Q2xpZW50PigqdGhpcyk7CisgICAgICAgIG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IG1h
a2VVbmlxdWU8UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7CiAKICAgICBhdXRv
IHBhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUobV9wYWdlLT5kcmF3aW5nQXJlYSgp
LT5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50KTsK
ICAgICAKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1Bh
aW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcGFpbnRMYXllci0+c2V0QmFja2dy
b3VuZENvbG9yKENvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDAuMmYpKTsKIAogICAgIEtleWZyYW1l
VmFsdWVMaXN0IGZhZGVLZXlmcmFtZXMoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgIGZh
ZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4o
MCwgMSkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRp
b25WYWx1ZT4oMCwgMSkpOwogCi0gICAgZmFkZUtleWZyYW1lcy5pbnNlcnQoc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1LCAwKSk7CisgICAgZmFkZUtleWZyYW1lcy5p
bnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1LCAwKSk7CiAgICAgCiAg
ICAgYXV0byBvcGFjaXR5QW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKICAgICBvcGFj
aXR5QW5pbWF0aW9uLT5zZXREdXJhdGlvbigwLjI1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApp
bmRleCBmNWVjYzY0YzkyM2YzODZjNTBlN2I1Mjk3N2VmYzA5OWUwYmNmYWQ2Li4yN2MzZWUxNDJl
MTYxNmU0MzVmNDhkNDFmMjcyNzE1ZmU4ZTAzODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBSZXBhaW50SW5kaWNhdG9y
TGF5ZXJDbGllbnQ7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQsIHByaXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBmcmllbmQgY2xhc3MgUmVwYWludEluZGlj
YXRvckxheWVyQ2xpZW50OwogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQYWdl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IDUz
M2JlODQwY2FkNzE0NTU1ZGFmMGFhMjA3MjhhM2M5MzM1NWM5YmUuLjRiYjM3ZmRkNjA3Nzc0ZWQ4
MDlhOTY3YTc3NTE1ZmJhZmI2ZWY2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6TWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgc2luZ2xl
dG9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAxNjM3YWQxMDk3ZDc2
NDllNTBkZjc0ZjVlMDYyMjcyNzFmYWI4NDVhLi4wMGNjMGEwOGQ5MjYwNGZkZGZiNWNhNjJmNmI4
ODU5NWMzMWFiMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00MSw2ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViTm90
aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTm90aWZpY2F0aW9u
Q2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJOb3RpZmljYXRpb25DbGllbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAppbmRleCA3OTAwODRjZTQ4ZDIyNmIx
MGU2NjViODI4NDQzNDlmZGFhZmZlZTQ2Li42OWYwYWU4Mjc5NTA3YjcyOTY1ZjY1YzIxNjg3M2M0
ODFhZGY0ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyCiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X292ZXJyaWRlc01hcC5hZGQocGFzdGVib2FyZE5hbWUsIG51bGxwdHIpOwogCiAgICAgaWYgKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0
cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1h
cDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxI
YXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9IG1ha2VVbmlxdWU8SGFz
aE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+KCk7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBXVEZNb3ZlKHR5cGVNYXApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5o
CmluZGV4IGY2ZTAxNDk1N2VkYzI3N2RiOTgzNzMxMjdlYzEwNjNlOTM1NThjYjguLmNmOTBhNWRm
Y2ZkYTYzZWNiOTg5N2NjNjZkMGQ0ODEyOTQ0ODEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKQEAg
LTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFz
cyBXZWJQbHVnSW5DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z0luQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQbHVnSW5D
bGllbnQoV2ViUGFnZSYpOwogICAgIHZpcnR1YWwgfldlYlBsdWdJbkNsaWVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNz
VHJhY2tlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCmluZGV4IDVkZDY1YmZhMGQ1MGNjZmRiMTQ2MWZl
YjNmZTUyNDFmY2FhMGZiYTYuLjYzZDc3NGU1YTk0MjdjNzM1YjUyNDkwYmQwMWNkNzlhYjc0YTEw
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQcm9ncmVz
c1RyYWNrZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQ
cm9ncmVzc1RyYWNrZXJDbGllbnQoV2ViUGFnZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5
bnRoZXNpc0NsaWVudC5oCmluZGV4IGVhZDE3ZDMwZjA1OTBkNzQ0NjcyMDU1Y2FkNzdkOTVjNmQw
YTQ3NzAuLjdiZDg3NTkwNWE2NWM3N2Q5NmMzZjc4ODQwMDE4NTgyY2ZhZjc2YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50
aGVzaXNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogICAgIAogY2xhc3MgV2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU3BlZWNoU3ludGhlc2lzQ2xp
ZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlh
Q2xpZW50LmgKaW5kZXggMTA5MzA0NTNjZTc5N2VkZDkwZGU3NmYwMzU0YjlhMWQ0MDZmMmU2ZS4u
Njk1MjE3NGI5MTJjOTcxZTM1Nzg2ZTI3YzQ4MjI1ZDJmY2ExNDAyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVk
aWFDbGllbnQuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YlBhZ2U7CiAKIGNsYXNzIFdlYlVzZXJNZWRpYUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpVc2Vy
TWVkaWFDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYlVzZXJNZWRpYUNsaWVudChXZWJQYWdlJik7CiAgICAgfldlYlVzZXJNZWRpYUNsaWVudCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaAppbmRleCAwMGExZTJl
OGUyNjMzNTYzYzMwNjk5OGRkMTVhMjE4Yjk2ZDE2NTEyLi4wNzQxM2NmYzkzOTg1ZmU1ZDk5ZTk0
MDY4ZjE2MTVmNGIyNDRjNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJv
eHkuaApAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5KFdlYlBhZ2UmKTsKICAgICB+VGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggOWNmZmNjOWE5ZmQy
YjY0NDQ5MjJmODU0YWQ5N2QxZDMzMWU3MGIwZS4uYjI0NTgxYzk3ZTdhODgxNmY0NmFmOTMxOWE5
MWVhMjFiNzJiZDY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtNTUwLDcgKzU1MCw3IEBA
IHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKEdyYXBoaWNzTGF5CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKTsKICAgICB9IGVsc2UgewogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxMYXllclRyZWVIb3N0PihtX3dlYlBhZ2UpOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QgPSBtYWtlVW5pcXVlPExheWVyVHJlZUhvc3Q+KG1fd2ViUGFnZSk7CiAjZWxzZQogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggYzA3
Mzk2ZjAyZjFmYTY1ZjQ1YWNlZTcyZjEzNGY0ZmIyZDllODkwOS4uNTM1OGNkNjg2M2IzMjI2OTU4
ZWUyNzRlZmQwMzJhZDIwMDY0ZGQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIHN0ZDo6dW5pcXVl
X3B0cjxEcmF3aW5nQXJlYT4gRHJhd2luZ0FyZWE6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBj
b25zdCBXZWJQYWdlCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb246Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3
ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlmCiAgICAg
Y2FzZSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWU6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0
ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVDb29yZGlu
YXRlZEdyYXBoaWNzOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdlYlBhZ2UsIHBh
cmFtZXRlcnMpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAppbmRleCAwZjI2NDAzZWJiNzBhODExYjE4ZTk4
Nzk1ZTE5ZGU3NzQwYmU4MzYwLi4xYTUzNWYxN2Q5N2Y2NjY4Mzk3MjY5YTg2ZTI4NTdiMjliOTcy
YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQ
YWdlOwogCiBjbGFzcyBGaW5kQ29udHJvbGxlciA6IHByaXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJs
YXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRmluZENvbnRyb2xsZXIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDQ1MmY1M2JjZWRjMDA0N2Y3
MzNkMWMzNGJjZDc2NTExOTJjYjhiZTYuLjQ2ZThhYTA5OTg2NDVhOGNlNWQyZDdiOTU3Zjk5YWZk
YzM4ZjQ2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVu
c3VyZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVB
dHRhY2hlZCk7CiAKICAgICBpZiAoIW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUpCi0gICAgICAg
IG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlPih0aGlzKTsKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9
IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOwogCiAgICAgdXBkYXRl
QmFja2luZ1N0b3JlKCk7CiB9CkBAIC01MjEsNyArNTIxLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRy
aXggUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp0cmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB2YWx1ZSkKIHsKLSAgICBtX3Byb3BlcnRpZXMudHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOworICAgIG1fcHJvcGVydGllcy50cmFuc2Zv
cm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9w
ZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
VHJhbnNmb3JtQ2hhbmdlZCk7CiB9CiAKQEAgLTUzMiw3ICs1MzIsNyBAQCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QK
IAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKLSAgICBtX3Byb3BlcnRpZXMuc3VibGF5
ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1
ZSk7CisgICAgbV9wcm9wZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGll
c0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlN1YmxheWVyVHJhbnNmb3JtQ2hh
bmdlZCk7CiB9CiAKQEAgLTczOCw3ICs3MzgsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0T3BhY2l0eShmbG9hdCB2YWx1ZSkKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBtX3By
b3BlcnRpZXMuZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmls
dGVycyk7CisgICAgbV9wcm9wZXJ0aWVzLmZpbHRlcnMgPSBtYWtlVW5pcXVlPEZpbHRlck9wZXJh
dGlvbnM+KGZpbHRlcnMpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQo
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKTsKIH0KIApAQCAtODI2
LDcgKzgyNiw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRS
ZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSCiAgICAgaWYgKG1fcHJvcGVydGll
cy5zaGFwZVJvdW5kZWRSZWN0ICYmICptX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9PSBy
b3VuZGVkUmVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91
bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0
KTsKKyAgICBtX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRS
b3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGll
c0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlNoYXBlUm91bmRlZFJlY3RDaGFu
Z2VkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcAppbmRleCAxY2JkMWI0YmE3OWE3ZGY5Y2U1NWUw
NDIxZDQ0ZTY1YjQwODgyMWMyLi4wOTk1MzZiOTNjMDExYWMzZjJhMDczYzNjYTQ2NGYwNzI2NDY5
Y2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nOjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1D
QUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKICAg
ICA6IFBsYXRmb3JtQ0FMYXllclJlbW90ZShsYXllclR5cGUsIG93bmVyLCBjb250ZXh0KQotICAg
ICwgbV90aWxlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlz
KSkKKyAgICAsIG1fdGlsZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhp
cykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQppbmRleCA1ZTUwZTBiYTFlZjEyNDZjNmFlMDhmMjlkOTJhODMwZTBkYjRm
MjM3Li40NDQ2ZjM0ZDA0Y2NmYmZiZWIzNjliYTQ0YzMyMDZiZjBkZDIzZWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC01
OCw3ICs1OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwg
Y29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdp
bmdBcmVhKERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSwgcGFyYW1ldGVycy5kcmF3aW5n
QXJlYUlkZW50aWZpZXIsIHdlYlBhZ2UpCi0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQo
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVDb250ZXh0Pih3ZWJQYWdlKSkKKyAgICAs
IG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQ+KHdlYlBhZ2UpKQogICAgICwgbV9yb290TGF5ZXIoR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdy
YXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKSkKICAgICAsIG1fbGF5ZXJGbHVzaFRpbWVyKCp0
aGlzLCAmUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKQogewpAQCAtNDIz
LDcgKzQyMyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJz
KCkKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpX
aWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpKSk7CiAK
ICAgICBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5
ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwot
ICAgIGF1dG8gY29tbWl0RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8SVBDOjpFbmNvZGVyPihN
ZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVl
OjpyZWNlaXZlck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OkNvbW1pdExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgYXV0byBjb21taXRFbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2Vz
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2Vp
dmVyTmFtZSgpLCBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29t
bWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBjb21t
aXRFbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICAvLyBGSVhNRTog
TW92ZSBhbGwgYmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlQ29sbGVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRl
eCBhYWRlM2Q5ZjE4NDRkN2YwNWMwOTIxOGQ4ZTIwNDRkNThhMmYwNWY4Li5iMmJkYzQxYjcyMzM2
YmI2ZTQ4NDkwZjczMWIyNDg1ZDI3MDc4MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsK
IAogY2xhc3MgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYpOwogICAgIH5WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKaW5kZXggNjBjZmQ4ZDJhMTc1NGE3YWNlZDU4ZDYxZGYxN2JlNGMxNDMx
MzY5NC4uYmRkNGIzOTUyNTRhNzE2NzYzOWFlY2Q3Mzg2MGUwNzJkNjljNDJmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTIwLDcgKzEy
MCw3IEBAIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdl
YlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjCiAKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6
OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKLSAgICBhdXRvIGZyYW1lID0g
Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOworICAgIGF1
dG8gZnJhbWUgPSBjcmVhdGUobWFrZVVuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CiAg
ICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShm
cmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBhdXRvIGNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUo
cGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJFbGVtZW50LCBmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVu
dC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDEzMzY1NzBkOTNhYTUxMTA2OTc4NTYxMTcwMjYwODkzYjhhM2NkYjQuLmRiMzJkYTQ4
MTM5ZTE5ZjcxNDIxMjU2NTQwYTIxNjMyMzRjYzkxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODMsMjEgKzM4MywyMSBAQCBXZWJQYWdl
OjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eShtYWtl
VW5pcXVlUmVmPFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKLSAgICAsIG1fdmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I+KCp0aGlzKSkKKyAgICAsIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihtYWtl
VW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I+KCp0aGlzKSkKICNlbGlmIEVOQUJM
RShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShHVEspCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlP
YmplY3QobnVsbHB0cikKICNlbmRpZgogICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQp
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50
PigpKQorICAgICwgbV9jb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKSkKICNlbmRpZgotICAgICwgbV9lZGl0b3JD
bGllbnQgeyBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dD4oKSB9Ci0gICAgLCBtX2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpGb3JtQ2xpZW50PigpKQotICAgICwgbV9sb2FkZXJDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpKQotICAgICwgbV9y
ZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ+KCkpCi0gICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpKQorICAgICwgbV9lZGl0b3JDbGll
bnQgeyBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSB9Cisg
ICAgLCBtX2Zvcm1DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xp
ZW50PigpKQorICAgICwgbV9sb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpKQorICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCkpCisgICAg
LCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50
PigpKQogICAgICwgbV9maW5kQ29udHJvbGxlcihtYWtlVW5pcXVlUmVmPEZpbmRDb250cm9sbGVy
Pih0aGlzKSkKLSAgICAsIG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5p
cXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2lu
c3BlY3RvclRhcmdldENvbnRyb2xsZXIobWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0
Q29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29u
dHJvbGxlcklEKSkKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgLCBtX2dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI+KCp0aGlzKSkKQEAgLTQ2NCwyMSArNDY0LDIxIEBAIFdlYlBhZ2U6
OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQgPSBuZXcg
V2ViUGx1Z0luQ2xpZW50KCp0aGlzKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGll
bnRGb3JNYWluRnJhbWUgPSBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0gbmV3IFdlYlByb2dyZXNzVHJhY2tlckNs
aWVudCgqdGhpcyk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0Ns
aWVudD4oKnRoaXMpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHBhZ2VDb25maWd1cmF0aW9u
LndlYkdMU3RhdGVUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4o
W3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSB7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24ud2ViR0xTdGF0ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFdlYkdMU3RhdGVUcmFja2Vy
PihbdGhpc10oYm9vbCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpIHsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRJc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wo
aXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSk7CiAgICAgfSk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRo
ZXNpc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Pigq
dGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PigqdGhp
cyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtl
VW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PigqdGhpcyk7CiAjZW5kaWYKIAogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gJldlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CkBAIC00OTMsMTQgKzQ5Mywx
NCBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVU
SE4pCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBt
YWtlVW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
YXBwbGljYXRpb25NYW5pZmVzdCA9IHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdDsKICNl
bmRpZgogCi0gICAgbV9wYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uKSk7CisgICAgbV9wYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSk7CiAKICAgICAvLyBTZXQgdGhlIHNlc3Npb25JRCAqYmVmb3JlKiB1
cGRhdGluZyB0aGUgcHJlZmVyZW5jZXMgYXMgdGhlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgcHJl
ZmVyZW5jZXMgbWF5IG5lZWQgdG8gb3ZlcnJpZGUgaXQuCiAgICAgaWYgKHBhcmFtZXRlcnMuc2Vz
c2lvbklELmlzVmFsaWQoKSkKQEAgLTg1Myw3ICs4NTMsNyBAQCB1aW50NjRfdCBXZWJQYWdlOjpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB2b2lkIFdlYlBhZ2U6OnNldEluamVj
dGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAg
ICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNs
aWVudD4oKTsKKyAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC04NjQsNyArODY0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1
bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnUKIHZv
aWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQpCiB7CiAg
ICAgaWYgKCFlZGl0b3JDbGllbnQpIHsKLSAgICAgICAgbV9lZGl0b3JDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKKyAgICAgICAg
bV9lZGl0b3JDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNs
aWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODc0LDcgKzg3NCw3IEBAIHZv
aWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9y
bUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4m
JiBmb3JtQ2xpZW50KQogewogICAgIGlmICghZm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1D
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+
KCk7CisgICAgICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Rm9ybUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODg0LDcgKzg4
NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpGCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUxvYWRlckNsaWVudD4mJiBsb2FkZXJDbGllbnQpCiB7CiAgICAgaWYgKCFsb2FkZXJD
bGllbnQpIHsKLSAgICAgICAgbV9sb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CisgICAgICAgIG1fbG9hZGVyQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50Pigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBXZWJQ
YWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUG9s
aWN5Q2xpZW50QmFzZSoKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxv
YWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9h
ZENsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFtX3Jlc291cmNlTG9hZENsaWVudCkKLSAg
ICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVu
dD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZShj
bGllbnQpOwogfQpAQCAtOTEzLDcgKzkxMyw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRC
dW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCCiB2
b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAo
IXVpQ2xpZW50KSB7Ci0gICAgICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKKyAgICAgICAgbV91aUNsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xNDEwLDE0ICsxNDEwLDE0IEBAIHZvaWQgV2ViUGFnZTo6Y2xv
c2UoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRN
ZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29u
dGV4dE1lbnVDbGllbnQ+KCk7CisgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCi0g
ICAgbV9lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OkVkaXRvckNsaWVudD4oKTsKLSAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7Ci0gICAgbV9sb2FkZXJDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7
CisgICAgbV9lZGl0b3JDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVk
aXRvckNsaWVudD4oKTsKKyAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7CisgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgbV9wb2xpY3lD
bGllbnQuaW5pdGlhbGl6ZSgwKTsKLSAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwotICAg
IG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VV
SUNsaWVudD4oKTsKKyAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgbV9mdWxsU2NyZWVuQ2xpZW50LmluaXRpYWxpemUoMCk7
CiAjZW5kaWYKQEAgLTQ2OTYsNyArNDY5Niw3IEBAIHZvaWQgV2ViUGFnZTo6YmVnaW5QcmludGlu
Zyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbykKICNlbmRpZgog
CiAgICAgaWYgKCFtX3ByaW50Q29udGV4dCkgewotICAgICAgICBtX3ByaW50Q29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250ZXh0Pihjb3JlRnJhbWUpOworICAgICAgICBtX3ByaW50
Q29udGV4dCA9IG1ha2VVbmlxdWU8UHJpbnRDb250ZXh0Pihjb3JlRnJhbWUpOwogICAgICAgICBt
X3BhZ2UtPmRpc3BhdGNoQmVmb3JlUHJpbnRFdmVudCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHAKaW5kZXggNzM1NjZhMTMzODVkZTNhYWM2NDZmYjk0OTZiZGRhZmNiNWFmNDZi
Ni4uMzFlZmYxMWY3YWUwYTNlYjhjZmJiNmZmMmIzZGJhNTE2MjRjMWVjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRP
cGVyYXRpb25HdGsuY3BwCkBAIC0yMTMsNiArMjEzLDcgQEAgY2xhc3MgV2ViUHJpbnRPcGVyYXRp
b25HdGtXaW4zMiBmaW5hbDogcHVibGljIFdlYlByaW50T3BlcmF0aW9uR3RrIHsKICNlbmRpZgog
CiBzdHJ1Y3QgUHJpbnRQYWdlc0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBQcmludFBhZ2VzRGF0YShXZWJQcmludE9wZXJhdGlvbkd0ayogcHJpbnRPcGVy
YXRpb24pCiAgICAgICAgIDogcHJpbnRPcGVyYXRpb24ocHJpbnRPcGVyYXRpb24pCiAgICAgICAg
ICwgdG90YWxQcmludGVkKC0xKQpAQCAtNzI2LDcgKzcyNyw3IEBAIHZvaWQgV2ViUHJpbnRPcGVy
YXRpb25HdGs6OnByaW50KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgZG91YmxlIHhEUEksIGRv
dWJsZSB5CiB7CiAgICAgQVNTRVJUKG1fcHJpbnRDb250ZXh0KTsKIAotICAgIGF1dG8gZGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOworICAgIGF1dG8gZGF0YSA9
IG1ha2VVbmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOwogICAgIGlmICghZGF0YS0+aXNWYWxp
ZCkgewogICAgICAgICBjYWlyb19zdXJmYWNlX2ZpbmlzaChzdXJmYWNlKTsKICAgICAgICAgcHJp
bnREb25lKGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGZyYW1lVVJMKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklP
Uy5tbQppbmRleCA5YWJiMmE3OTI5OWQ1OTZiOTFlNmVmNjFjYTQzZWY4NjE5MGE5MDQ5Li45MzQx
OGFiMjFkNzRmYzk0NThhMDIyNGU0Y2I0OGE3MzQxNzgwOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1t
CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0
b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlCiAgICAgaWYgKCF0ZXh0
SW5kaWNhdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ZpbmRJbmRpY2F0b3JP
dmVybGF5Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVu
dElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4dEluZGljYXRvci5nZXQoKSk7CisgICAgbV9maW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudCA9IG1ha2VVbmlxdWU8RmluZEluZGljYXRvck92ZXJsYXlDbGll
bnRJT1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOwogICAgIG1fZmluZElu
ZGljYXRvclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRJbmRpY2F0b3ItPnNlbGVjdGlvblJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSk7CiAgICAgbV9maW5kSW5kaWNhdG9yT3ZlcmxheSA9
IFBhZ2VPdmVybGF5OjpjcmVhdGUoKm1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQsIFBhZ2VP
dmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpOwogICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2Uo
KS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KCptX2ZpbmRJbmRp
Y2F0b3JPdmVybGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGljYXRvck92
ZXJsYXlDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCmluZGV4IDUzNWI4NGZiNjQyOWE5N2YwYzk4
YThlYWMxODVkOWRmMmVlOTQ4NTQuLjAxNWUzMmRiMTg5M2U2YTA2MmQ5ZTNhN2NhMGRjNTJlOTQ2
ZGQwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCkBAIC0zNCw2
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmluZEluZGljYXRvck92ZXJs
YXlDbGllbnRJT1MgOiBwdWJsaWMgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmluZEluZGljYXRvck92ZXJs
YXlDbGllbnRJT1MoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
KiB0ZXh0SW5kaWNhdG9yKQogICAgICAgICA6IG1fZnJhbWUoZnJhbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcApp
bmRleCA5MDY4N2M5NzRhY2YzM2Q4MmI4YzY0Yjk0OGU2ZWU5YTMwZWUyZTljLi4wNmZjYzQ3MTU5
M2ViNzhlZGViZmNjNjNmODk0NGIzZGZhZTlkYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKQEAgLTgzLDcg
KzgzLDcgQEAgYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2Fs
bGJhY2soKQogICAgIGlmICghbV9oYXNTZW50TWVzc2FnZSkgewogICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQo
KSksIDApOwogICAgICAgICBtX2hhc1NlbnRNZXNzYWdlID0gdHJ1ZTsKLSAgICAgICAgbV9ydW5M
b29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9v
cEVudHJ5LCBbdGhpc10oKSB7CisgICAgICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbWFrZVVuaXF1
ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3RoaXNdKCkgewogICAgICAgICAg
ICAgdGhpcy0+bV9maXJzdENhbGxiYWNrSW5DdXJyZW50UnVubG9vcCA9IHRydWU7CiAgICAgICAg
IH0pOwogICAgICAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUoQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBk
ZjYwMDM2NDU5OGYxMzQ2MjlkYWI2MjcwNmVhZjY4NjFlNWZmMzNkLi40Y2IzZGY5YWVhNTI5ZWZm
NTI2MzM2YzgxZjEzMDIwNDViYTNlMGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjCiAg
ICAgW21faG9zdGluZ0xheWVyIHNldE9wYXF1ZTpZRVNdOwogICAgIFttX2hvc3RpbmdMYXllciBz
ZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKIAotICAgIG1fbGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2Fz
dDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVy
Rmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1
bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlz
XSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaFJ1bkxvb3BDYWxsYmFjaygpOwogICAgIH0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggN2I0OGEwZjcy
NDYyZmZlNTdmZTkyMDZjYmNjMGNmMzMxYzMyMTFlMS4uYzcxY2Q1ZjI3NGZmNjIyYzVkNDNmMzU5
ZjYxNWZkMzdjZjJkNjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtMTU3Myw3ICsxNTczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9s
YXRpbGUoV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW4KICAgICBBU1NF
UlQoIW1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlcik7CiAgICAgbV9jb3VudE9m
UGFnZXNGYWlsaW5nVG9NYXJrVm9sYXRpbGUgPSAwOwogCi0gICAgbV9wYWdlTWFya2luZ0xheWVy
c0FzVm9sYXRpbGVDb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTWFya2luZ0xheWVyc0Fz
Vm9sYXRpbGVDb3VudGVyPihbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50ZXJFdmVudCkgeworICAgIG1fcGFnZU1hcmtpbmdMYXll
cnNBc1ZvbGF0aWxlQ291bnRlciA9IG1ha2VVbmlxdWU8UGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0
aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKICAgICAgICAgaWYgKG1fcGFnZU1hcmtpbmdM
YXllcnNBc1ZvbGF0aWxlQ291bnRlci0+dmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMTgzOCw3ICsxODM4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmFibGVkU2VydmljZXMo
Ym9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnYKIAogdm9pZCBXZWJQ
cm9jZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkZW50aWZpZXIpCiB7Ci0gICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PihzZXNzaW9uSWRlbnRpZmllcik7Cisg
ICAgbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gbWFrZVVuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5PihzZXNzaW9uSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVz
dHJveUF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQpAQCAtMTg3MSw3ICsxODcxLDcgQEAgYm9vbCBX
ZWJQcm9jZXNzOjpoYXNWaXNpYmxlV2ViUGFnZSgpIGNvbnN0CiBMaWJXZWJSVENOZXR3b3JrJiBX
ZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIHsKICAgICBpZiAoIW1fbGliV2ViUlRDTmV0
d29yaykKLSAgICAgICAgbV9saWJXZWJSVENOZXR3b3JrID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENOZXR3b3JrPigpOworICAgICAgICBtX2xpYldlYlJUQ05ldHdvcmsgPSBtYWtlVW5pcXVl
PExpYldlYlJUQ05ldHdvcms+KCk7CiAgICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9
CiAKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAgICAgLy8g
YnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1hbmFn
ZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRo
ZQogICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1
cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc2V0Q29ubmVjdGlvbihzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJRCwgcGFnZUlELCBzdG9yZSkpOworICAg
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQs
IHBhZ2VJRCwgc3RvcmUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGQ0
YzAxYmFiMWY5M2RhOTA4NWIwZjIxOTRjZDMyN2Q0NzE4NjUwYjIuLjJmNGZiNTMwYWJjZWQ3ZWZj
NzM3NjQyMjMwOWZkMzE4ODdhNDdiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMTMzLDYgKzEzMyw3IEBAIGNsYXNzIFdlYlByb2Nlc3MKICAgICAsIFByb2Nlc3NU
YXNrU3RhdGVPYnNlcnZlcjo6Q2xpZW50CiAjZW5kaWYKIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUHJvY2VzcyYgc2luZ2xldG9uKCk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSA9IFByb2Nlc3NUeXBl
OjpXZWJDb250ZW50OwpAQCAtMTQ2LDcgKzE0Nyw3IEBAIGNsYXNzIFdlYlByb2Nlc3MKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAg
ICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3Vu
aXF1ZTxUPigqdGhpcykpOworICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50
TmFtZSgpLCBtYWtlVW5pcXVlPFQ+KCp0aGlzKSk7CiAgICAgfQogCiAgICAgV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzKiB3ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBt
X3dlYkNvbm5lY3Rpb24uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDI3MjBiODZm
Y2QyZmZlZTYwMjJmNWFkNWVlZDUwYmNmMzY5MmQ3ZjguLjlhZjAwZWU4YWEwZjFjZDg0MGE4MTcz
NzkwZmEwNjIzMDA0NmZkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAtNjQsNyArNjQsNyBA
QCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlIDogcHVibGljIFJlYWx0aW1l
TWVkaWFTb3VyY2UgewogICAgIHsKICAgICAgICAgQVNTRVJUKGRldmljZVR5cGUgIT0gQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6VW5rbm93bik7CiAgICAgICAgIGlmICh0eXBlID09IFR5cGU6
OkF1ZGlvKQotICAgICAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJp
bmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIp
KTsKKyAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPiht
YWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRyKSk7CiAgICAgfQog
CiAgICAgflNvdXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCmluZGV4IGJhZWQwY2Q5ZTA5YjQ5ZDIyMWU5
NDAxOGY2NDlmZTZkYmNmOTI1MTkuLmMxZDQzZmNiM2FmNTg0MTQ1M2FkMzQzNGM3Y2Y5M2ViZmM5
ZTdlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIENyb3NzUHJv
Y2Vzc1JlYWx0aW1lQXVkaW9Tb3VyY2U7CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6QXVkaW9DYXB0dXJlRmFjdG9y
eSwgcHVibGljIFdlYkNvcmU6OlZpZGVvQ2FwdHVyZUZhY3RvcnksIHB1YmxpYyBXZWJDb3JlOjpE
aXNwbGF5Q2FwdHVyZUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlByb2Nlc3MmKTsK
ICAgICB+VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGI0N2QxZDhhZmEwM2ZlZDM2
ZGVjYWQ5ODlkNzJkYmM0MTg0ODdmNTkuLjNiOTA2YTgwYzVhZDhmNjliZWY3N2Y5YThjNzY0YWY4
MDlmNDk1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vz
c1Rhc2tTdGF0ZURpZENoYW5nZShQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OlRhc2tTdGF0ZSB0
CiAKICAgICAvLyBXZSB3ZXJlIGF3YWtlbmVkIGZyb20gc3VzcGVuc2lvbiB1bmV4cGVjdGVkbHku
IE5vdGlmeSB0aGUgV2ViUHJvY2Vzc1Byb3h5LCBidXQgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9u
IG9uIG91ciBwYXJlbnQgUElECiAgICAgLy8gdG8gZW5zdXJlIHRoYXQgaXQgdG9vIGlzIGF3YWtl
bmVkLgotICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQo
KSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQsIEFz
c2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CisgICAgYXV0byB1aVByb2Nlc3NBc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5leHBlY3RlZGx5IHJlc3VtZWQiLCBBc3NlcnRpb25TdGF0
ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5pc2hUYXNrKTsKICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6UHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKCksIFt1aVByb2Nlc3NB
c3NlcnRpb24gPSBXVEZNb3ZlKHVpUHJvY2Vzc0Fzc2VydGlvbildIHsgfSk7CiB9CiAjZW5kaWYK
QEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0
ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uIHJlYXNvbikKICAgICB9CiAKICAgICBpZiAoIW1fY3B1
TW9uaXRvcikgewotICAgICAgICBtX2NwdU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENQVU1v
bml0b3I+KGNwdU1vbml0b3JpbmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2FnZSkgewor
ICAgICAgICBtX2NwdU1vbml0b3IgPSBtYWtlVW5pcXVlPENQVU1vbml0b3I+KGNwdU1vbml0b3Jp
bmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2FnZSkgewogICAgICAgICAgICAgaWYgKG1f
cHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5cGU6OlNlcnZpY2VXb3JrZXIpCiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBTZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIGV4Y2VlZGVkIENQVSBsaW1pdCBvZiAlLjFmJSUgKHdhcyB1c2luZyAlLjFm
JSUpIiwgdGhpcywgbV9jcHVMaW1pdC52YWx1ZSgpICogMTAwLCBjcHVVc2FnZSAqIDEwMCk7CiAg
ICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlU3luY01hbmFnZXIuY3BwCmluZGV4IDM2OTA5NWNkYWQxZDM0NzExYTA2NzZkODczNmE5MGUx
OTNlMjkwNWUuLjIyOGY0YTM2ZDRiMGYyMjJjMTc4NjBkMGJjNDk4YzFmOWUwODlhMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIFJlZjxTdG9yYWdlU3luY01hbmFnZXI+IFN0b3JhZ2VTeW5jTWFu
YWdlcjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKIH0KIAogU3RvcmFnZVN5bmNNYW5hZ2Vy
OjpTdG9yYWdlU3luY01hbmFnZXIoY29uc3QgU3RyaW5nJiBwYXRoKQotICAgIDogbV90aHJlYWQo
c3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQorICAgIDogbV90aHJlYWQobWFrZVVu
aXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRDb3B5KCkp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAppbmRleCA0NDM5MzgyOTVmNGUxYzI5ZGQwNDg2YjQz
MWJhN2ZlYTM1MjlkMTZkLi45Yzc1MTRlMzQ2MmM0YjRkOGE4NTYwNWVkMDI5ZGJkMTkyNWQ2YjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFT
U0VSVCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVhZCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsK
KyAgICBtX3F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3Zl
KGZ1bmN0aW9uKSkpOwogfQogCiB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCkBAIC04
Nyw3ICs4Nyw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKICAgICBpZiAoIW1f
dGhyZWFkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10geworICAgIG1fcXVldWUuYXBwZW5kKG1h
a2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CiAgICAgICAgIHBlcmZvcm1UZXJt
aW5hdGUoKTsKICAgICB9KSk7CiAgICAgbV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCBi
OTM0ZDFhM2IxYmFhODMxYWRkZjNhYmU1ZTA3NzBhYjFjZjc3ZmEyLi44MDZjYjA5OTVkMGEwN2M3
MTgyNzFkMjEwNTA3MDM5OGM0MDNiYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgU3RvcmFnZVRyYWNrZXIm
IFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkKIFN0b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJhY2tl
cihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKQogICAgIDogbV9zdG9yYWdlRGlyZWN0b3J5UGF0
aChzdG9yYWdlUGF0aC5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fY2xpZW50KDApCi0gICAgLCBt
X3RocmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCisgICAgLCBtX3RocmVh
ZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQog
ICAgICwgbV9uZWVkc0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwgbV9TdG9yYWdlRGF0YWJh
c2VJZGxlSW50ZXJ2YWwoZGVmYXVsdFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAppbmRleCA0M2VhNDVkYWU4OTIwNmM4MjlhNTE0ZDRkYThl
M2QxYzk3Y2MxMjg0Li44NTFjYzEwMTdkZWQwMGMwNmQ0NmQyYzg1OWQ3MDAwMGI2ZDcyZDUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9y
YWdlU2Vzc2lvbk1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzdG9yYWdl
U2Vzc2lvbihjb25zdCBQCiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKIHsKICAgICBpZiAoIWRl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICBkZWZh
dWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAg
cmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKQEAgLTc0LDcgKzc0
LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nl
c3Npb24oKQogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFn
ZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uLmdl
dCgpKSk7CiAgICAgfQogCi0gICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2ll
U3RvcmFnZSkpOworICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsK
ICNlbmRpZgogfQogCkBAIC0xMDAsMTEgKzEwMCwxMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBj
bwogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Np
b25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5n
ZXQoKSkpOwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZN
b3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tp
ZVN0b3JhZ2UpKTsKIAogI2VsaWYgVVNFKENVUkwpCiAgICAgZ2xvYmFsU2Vzc2lvbk1hcCgpLmVu
c3VyZShzZXNzaW9uSUQsIFtzZXNzaW9uSURdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Np
b25JRCk7CiAgICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKaW5k
ZXggMTg3NmI5NjBiOTQ3MDgxNGMzNTBiYzU5MjZhNGM4MWFlZGYzOTAyMy4uN2I4Njk4MWEzZjQ4
ZTUwZjhiM2NjYWMzNzA2OTE3ZDRhZjFmZGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5j
cHAKQEAgLTE1OSw1ICsxNTksNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IFdlYkluc3BlY3RvckNsaQogICAgICAgICAg
ICAgZGVsZXRlU2V0dGluZyhuYW1lKTsKICAgICAgICAgfQogICAgIH07Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGPigpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLmgKaW5kZXggM2IxYTQ1MDcwNzhmYTRjYzA2OGU3NDAzMDMyMjEyMzliMmFkNzEy
My4uMTQ1NzcyMjJhOWUxM2U2M2U0OTFkNmQzYjkyY2ExYmM4OWU3Y2IwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9T
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIldlYkNocm9tZUNsaWVudC5o
IgogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnRJT1MgZmluYWwgOiBwdWJsaWMgV2ViQ2hyb21lQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJv
bWVDbGllbnRJT1MoV2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBXZWJDaHJvbWVDbGllbnQo
d2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KaW5kZXggMjE3YTRlZDBh
ODVhNmJiNDE0ZDMxOTRjYjdiZmFlZmRlMDM2ZDQ3YS4uYWZlMTFhODBiOWYxYzljZTc2YTM1NjJm
YTYzYzQ1YmY3MWQxMWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KQEAg
LTUyLDYgKzUyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHN0YXRpYyBMb2NrIHdlYkZpeGVk
UG9zaXRpb25Db250ZW50RGF0YUxvY2s7CiAKIHN0cnVjdCBWaWV3cG9ydENvbnN0cmFpbmVkTGF5
ZXJEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVmlld3Bv
cnRDb25zdHJhaW5lZExheWVyRGF0YSgpCiAgICAgICAgIDogbV9lbmNsb3NpbmdBY2NlbGVyYXRl
ZFNjcm9sbExheWVyKG5pbCkKICAgICB7IH0KQEAgLTYyLDYgKzYzLDcgQEAgc3RydWN0IFZpZXdw
b3J0Q29uc3RyYWluZWRMYXllckRhdGEgewogdHlwZWRlZiBIYXNoTWFwPFJldGFpblB0cjxDQUxh
eWVyPiwgc3RkOjp1bmlxdWVfcHRyPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+PiBMYXll
ckluZm9NYXA7CiAKIHN0cnVjdCBXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGEgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJGaXhlZFBvc2l0
aW9uQ29udGVudERhdGEoV2ViVmlldyAqKTsKICAgICB+V2ViRml4ZWRQb3NpdGlvbkNvbnRlbnRE
YXRhKCk7CkBAIC0xNzgsNyArMTgwLDcgQEAgLSAodm9pZClzZXRWaWV3cG9ydENvbnN0cmFpbmVk
TGF5ZXJzOihXVEY6Okhhc2hNYXA8Q0FMYXllciAqLCBzdGQ6OnVuaXF1ZV9wdHI8V2UKIAogICAg
IGZvciAoYXV0byYgbGF5ZXJBbmRDb25zdHJhaW50cyA6IGxheWVyTWFwKSB7CiAgICAgICAgIENB
TGF5ZXIqIGxheWVyID0gbGF5ZXJBbmRDb25zdHJhaW50cy5rZXk7Ci0gICAgICAgIGF1dG8gbGF5
ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPigp
OworICAgICAgICBhdXRvIGxheWVyRGF0YSA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5l
ZExheWVyRGF0YT4oKTsKIAogICAgICAgICBsYXllckRhdGEtPm1fZW5jbG9zaW5nQWNjZWxlcmF0
ZWRTY3JvbGxMYXllciA9IHN0aWNreUNvbnRhaW5lcnMuZ2V0KGxheWVyKTsKICAgICAgICAgbGF5
ZXJEYXRhLT5tX3ZpZXdwb3J0Q29uc3RyYWludHMgPSBXVEZNb3ZlKGxheWVyQW5kQ29uc3RyYWlu
dHMudmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9X
ZWJIaXN0b3J5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5
Lm1tCmluZGV4IGE4YjZhMDQzOTNlYzAwMDE0NjUzOGQ0Y2Y2NWJkNjQwYzc0YmQ5MDEuLjVhZDgx
YjRhM2I0OWI1ZDA2MzkzNjU2ODNhMWJjZjVkNTdlZjM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KQEAgLTEzMyw3ICsxMzMsNyBAQCAtIChp
ZClpbml0CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgX2VudHJpZXNCeVVSTCA9IFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgX2VudHJpZXNCeURhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CisgICAgX2VudHJpZXNCeURhdGUg
PSBtYWtlVW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
CmluZGV4IGI3Mzk1OTM1ZTUxMGJmM2I3ZjBjNDhlZGQ0MzZjNThiYmM0ODFkOGUuLjg2ZjlkM2Q0
MjIzODQ2YmM5NWNiYzk1NjQ1YTFjYTczMjBhZmUxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMzQ4LDcgKzM0OCw3IEBA
IC0gKGlkKWluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOihOU0RpY3Rpb25hcnkgKilk
aWN0CiAgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUp
OwogICAgIAogICAgIGlmIChOU0FycmF5ICpyZWRpcmVjdFVSTHMgPSBbZGljdCBfd2Via2l0X2Fy
cmF5Rm9yS2V5OnJlZGlyZWN0VVJMc0tleV0pIHsKLSAgICAgICAgYXV0byByZWRpcmVjdFVSTHNW
ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBhdXRv
IHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAg
ICAgIHJlZGlyZWN0VVJMc1ZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbcmVkaXJlY3RV
UkxzIGNvdW50XSk7CiAKICAgICAgICAgZm9yIChpZCByZWRpcmVjdFVSTCBpbiByZWRpcmVjdFVS
THMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KaW5kZXggZTE3Yzc4ODFhNTE3
ZjBjMzU1Zjg3NTY5YjYwZGEzZjIxNWExZWJhNy4uZjVlN2ZiY2YxMmU0N2Y5MGRlZWYxZWEyY2Zl
YjcxNzQyNjg4MGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTQ5
Myw3ICs0OTMsNyBAQCBrZXJuX3JldHVybl90IFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBs
eShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbAogICAgIGlmICghaW5zdGFuY2VQ
cm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHkt
PnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0SUQpKTsK
KyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVl
PE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHk+
KG9iamVjdElEKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApAQCAtNTA5LDcgKzUw
OSw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0Jvb2xlYW5SZXBseShtYWNoX3BvcnRfdCBjbGllbnRQ
b3J0LCB1aW50MzJfdCBwbHVnaW5JRCwgdWludDMyCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQog
ICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogICAgIAotICAgIGluc3RhbmNlUHJveHktPnNl
dEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOworICAgIGluc3RhbmNlUHJveHkt
PnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+KHJlc3VsdCkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NF
U1M7CiB9CiAKQEAgLTUyOCw3ICs1MjgsNyBAQCBrZXJuX3JldHVybl90IFdLUENCb29sZWFuQW5k
RGF0YVJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELAogICAg
ICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVz
dWx0ID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KHJl
c3VsdERhdGEpLCByZXN1bHRMZW5ndGgpKTsKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50
UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6Qm9vbGVhbkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOworICAgIGlu
c3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwg
cmVzdWx0KSk7CiAgICAgCiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KQEAgLTU0NSw3ICs1
NDUsNyBAQCBrZXJuX3JldHVybl90IFdLUENJbnN0YW50aWF0ZVBsdWdpblJlcGx5KG1hY2hfcG9y
dF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbgogICAgIGlmICghaW5zdGFuY2VQcm94eSkK
ICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1
cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpJbnN0YW50aWF0ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJ
RCwgc3RhdGljX2Nhc3Q8UmVuZGVyZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CisgICAgaW5zdGFu
Y2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwgcmVuZGVy
Q29udGV4dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkpKTsKICAg
ICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oCmluZGV4IDEwYTA4ZTk1MGEzZGMwYzkzNjcxZjFmYzFjNzRjOTQ3NzkzYTA3ZTgu
LmU1NmExMDNhMjhhNzYwZjljZTBiOTdlNzFkZDZiMjNhNjBjNTNlODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCkBAIC0xNzEsNiArMTcxLDcgQEAgY2xhc3MgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3gKIAogICAgIC8vIFJlcGx5IHN0cnVjdHMKICAgICBzdHJ1Y3QgUmVwbHkg
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGVudW0g
VHlwZSB7CiAgICAgICAgICAgICBJbnN0YW50aWF0ZVBsdWdpbiwKICAgICAgICAgICAgIEdldFNj
cmlwdGFibGVOUE9iamVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDIwMmM2ZGVhZjEzZDA3YzZlM2E1
Njk4YjFjZGI1OWExOWI1ZGEwMzkuLjUyYmY3YmQxMmU0ZTM3MTJkMzE0NzVlMmE1MzlhNDI4Y2Zm
OGZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMzYyLDcgKzM2Miw3IEBAIE1ldGhvZCogUHJveHlJ
bnN0YW5jZTo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBB
ZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVkIHdoaWxl
IHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0gbV9tZXRo
b2RzLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05l
d0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlNZXRob2Q+KG1ldGhvZE5hbWUpOworICAg
ICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eU1ldGhv
ZD4obWV0aG9kTmFtZSk7CiAKICAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6Zmll
bGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRy
eSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3
YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX2ZpZWxkcy5hZGQobmFtZS5p
bXBsKCksIG51bGxwdHIpOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiByZXBs
eS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOworICAgICAgICBtYXBBZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlmaWVyKTsK
ICAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVk
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDljNzFhM2NjOTIzZjMz
ZDJlMGFiMzlhMWJmNmIxNGI0NDNlOTRkNGIuLmVlMTljNTY3YzAxZmExOGM1ZThkYzYxYjA4Yzg5
NGU1MjAwMmRhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0K
QEAgLTYwLDYgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFjZSBXZWJL
aXQgewogICAgIAogY2xhc3MgU29mdHdhcmVDQVJlbmRlcmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTb2Z0d2FyZUNBUmVuZGVyZXIodWlu
dDMyX3QgY29udGV4dElEKQogICAgICAgICA6IG1fY29udGV4dCB7IFtDQUNvbnRleHQgbG9jYWxD
b250ZXh0XSB9CkBAIC0xNjgsNyArMTY5LDcgQEAgLSAoQk9PTCljcmVhdGVQbHVnaW4KICAgICAg
ICAgcmV0dXJuIE5POwogCiAgICAgaWYgKF9wcm94eS0+cmVuZGVyZXJUeXBlKCkgPT0gVXNlU29m
dHdhcmVSZW5kZXJlcikKLSAgICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNvZnR3YXJlQ0FSZW5kZXJlcj4oX3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CisgICAg
ICAgIF9zb2Z0d2FyZVJlbmRlcmVyID0gbWFrZVVuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+KF9w
cm94eS0+cmVuZGVyQ29udGV4dElEKCkpOwogICAgIGVsc2UKICAgICAgICAgW3NlbGYgY3JlYXRl
UGx1Z2luTGF5ZXJdOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KaW5kZXgg
ZjdhZWRiY2VkNGQ3ZjVjNGJhM2U5NmUzNTYxY2E3ZjBiMjY1YzhhYy4uOGVjMWJmNzllZTMyYTJh
YzFiYmNmN2EyMWU3M2U3ZTFlMDFkYjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
Lm1tCkBAIC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlcj4gV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNyCiB7CiAgICAgc3dp
dGNoIChbcGx1Z2luVmlldyBldmVudE1vZGVsXSkgewogICAgIGNhc2UgTlBFdmVudE1vZGVsQ29j
b2E6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyQ29jb2E+KHBsdWdpblZpZXcpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxX
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5WaWV3KTsKICAgICBkZWZh
dWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCmluZGV4IDcwODM3NzZk
MjhhNzVjZmI1NDI1MzNkOTBmMzc3OGU4NWFiY2QxZDIuLmJiZDljNWQ1ODIxZjg1ZjY1ZWJjOGY3
NzdlYzY1NTIyOWQ1ZTg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2Nv
YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXIuaCIKIAogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYSA6IHB1
YmxpYyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2Nv
YShXZWJOZXRzY2FwZVBsdWdpblZpZXcqKTsgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMDJmZjIx
ODZkZjg0YTlhOTBkN2U5YzI2YzA3NjI3OWUzMjIxMTM3OC4uMTYwNjYzZTg2MWY3MTBlYmZlZDFk
NzY4NTY1ZGQyMmExMTRlOGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE2NTUsNyArMTY1NSw3
IEBAIC0gKHVpbnQzMl90KXNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVy
dmFsIHJlcGVhdDooTlBCb29sKXJlcGVhdCB0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAg
IGlmICghdGltZXJzKQotICAgICAgICB0aW1lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8
dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4+PigpOworICAgICAgICB0aW1l
cnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5U
aW1lcj4+PigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPiogc2xvdDsKICAg
ICB1aW50MzJfdCB0aW1lcklEOwpAQCAtMTY2Myw3ICsxNjYzLDcgQEAgLSAodWludDMyX3Qpc2No
ZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoodWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wp
cmVwZWF0IHQKICAgICAgICAgdGltZXJJRCA9ICsrY3VycmVudFRpbWVySUQ7CiAgICAgd2hpbGUg
KCF0aW1lcnMtPmlzVmFsaWRLZXkodGltZXJJRCkgfHwgKihzbG90ID0gJnRpbWVycy0+YWRkKHRp
bWVySUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZSkpOwogCi0gICAgYXV0byB0aW1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8UGx1Z2luVGltZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJl
cGVhdCwgdGltZXJGdW5jKTsKKyAgICBhdXRvIHRpbWVyID0gbWFrZVVuaXF1ZTxQbHVnaW5UaW1l
cj4ocGx1Z2luLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogCiAgICAg
aWYgKF9zaG91bGRGaXJlVGltZXJzKQogICAgICAgICB0aW1lci0+c3RhcnQoX2lzQ29tcGxldGVs
eU9ic2N1cmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KaW5kZXggNzA0Y2QwOTVlODhmZTFhMjM4
MTE4NmM2YmZmMTMwZmM5MDIwNDFlYi4uNTdmYmJmYWQ5ZTY0Yjc2NzhhZDNhY2NlODA3NzhiYWNm
MDM3ODFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KQEAgLTk0LDEwICs5NCwxMSBAQCBXZWJE
YXRhYmFzZU1hbmFnZXJDbGllbnQ6On5XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQogfQogCiBj
bGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFz
ZU1hbmFnZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4p
CiAgICAgewotICAgICAgICBhdXRvIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlm
eU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2luKTsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gbWFr
ZVVuaXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdpbik7CiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpXSB7CiAgICAgICAgICAg
ICBjb250ZXh0LT5jbGllbnQuZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29udGV4dC0+b3JpZ2lu
KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IGEz
YjE1OThlZTM1M2Q2N2UyM2FmODA5NThlYjdmNzVlYjE2N2Y0ZDguLmNkNzI2NDI2ODI1YmE3MjIx
NTU3ZTA1NjZmYTkyZWMwODExMTQ1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oCkBAIC0zMSw2ICszMSw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDc4YjUzOWUzNzJiODY1YzU5NGZjMDc2ZjVhMWZjODRhYWZlOThiZjAuLjI3MTQyN2UyZDQ2
ZWUzYTI5N2QwNTQwMTJhN2E4NWFiOGIzZTFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCiBjbGFzcyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJDb3JlOjpD
YWNoZWRGcmFtZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoaWQgd2ViRG9jdW1lbnRWaWV3
KSA6IG1fd2ViRG9jdW1lbnRWaWV3KHdlYkRvY3VtZW50VmlldykgeyB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCmluZGV4IGZkYzRjYzc4MTk2ZmNiY2YzMjYwMmQxOGUyODlmMDdhMTE1NGNjOTUuLmMw
ZmJkYTliMmRhMWRkNDUxMGZmZTA4OWJmNjhmNWE3NjdkZDQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiAvLyBiYXNlIGNsYXNz
IG9mIHRoZSBjb25jcmV0ZSBjbGFzcywgV2ViQ2hyb21lQ2xpZW50SU9TLiBCZWNhdXNlIG9mIHRo
YXQsIHRoaXMgY2xhc3MgYW5kCiAvLyBtYW55IG9mIGl0cyBmdW5jdGlvbnMgYXJlIG5vdCBtYXJr
ZWQgZmluYWwuIFRoYXQgaXMgbWVzc3kgd2F5IHRvIG9yZ2FuaXplIHRoaW5ncy4KIGNsYXNzIFdl
YkNocm9tZUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJWaWV3
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDE4ODVmMDMxMzEzNWI4MTdiMzBm
OTQ1Nzc3ZDhlMjRiMTUzOWJmOTAuLmE3ZjY2ZWVlZjMwNmE2ODYwNTQyMGU3OTg3NjIwMjU3YmUw
NmI2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFz
cyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVu
dAogICAgICwgcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50CiAjZW5kaWYKIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVu
dUNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KTsKICAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudUNs
aWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDg0N2E3M2IxN2E0NjE3YmQ1NGE4ZDI4YTkyM2MxZDRh
NjNiZGQxMmUuLjMwZGYzZjczZDg1MGVhNzY5YzcxMzUyMjFkMmU4ODY1ZWE2N2UwM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJE
cmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IGYwNTllMDU5ZTExODdhM2JjNWJkMjQ3Y2MyNDFmNTlhZGQ0NTA5
NTAuLmI1MTA3ODdkODA5YmNmOTdiNzY4OWU3NDA5MzI4Mzc1YWEwYjBiMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC00NSw2ICs0NSw3IEBACiBAY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAog
Y2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVu
dCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2ViRWRpdG9yQ2xpZW50PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgdmlydHVhbCB+V2ViRWRp
dG9yQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDNkZDUwZTdiM2I5
Y2Y5OTMzNDljOWFiYjRjYjQ5NzgzN2VlYzM1M2UuLjk0MGIwZmY5NjNhODVjZTlkODhkN2JjNTZm
ZjZiM2VlYjJlM2Q5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDY3LDcg
KzEwNjcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5
KCkKIHN0YXRpYyB2b2lkIGFkZFJlZGlyZWN0VVJMKFdlYkhpc3RvcnlJdGVtICppdGVtLCBjb25z
dCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxz
KQotICAgICAgICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RV
UkxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAogICAgIC8vIE91ciBBUEkgYWxs
b3dzIHVzIHRvIHN0b3JlIGFsbCB0aGUgVVJMcyBpbiB0aGUgcmVkaXJlY3QgY2hhaW4sIGJ1dCBm
b3IKICAgICAvLyBub3cgd2Ugb25seSBoYXZlIGEgdXNlIGZvciB0aGUgZmluYWwgVVJMLgpAQCAt
MTM4MCw3ICsxMzgwLDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2Fj
aGVkRnJhbWUpCiB7Ci0gICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
KHN0ZDo6bWFrZV91bmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUt
Pl9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CisgICAgY2FjaGVkRnJhbWUt
PnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3
KSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Ug
a25vdyB0aGlzIGZyYW1lIGlzIGdvaW5nIHRvIGJlIGNhY2hlZC4gU3RvcCBhbGwgcGx1Z2lucy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGZmZTI5OTMxMmViNDgwYmFmYjVmMGVhYzQz
NTJmMjQzZjk2ZTAwZjcuLmZmZGJhY2ZjMjc0MjFlOGQzNTg4OGYyY2U2YjE4MDc3YTE2ZTMzZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBHZW9s
b2NhdGlvblBvc2l0aW9uOwogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9u
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJW
aWV3ICopOwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYmQ3ZjYyZmM4NWRjOTljMzg3MTZmMDc2NjY0NjMxODI1
MTFjNTRhNS4uMGM5NDhiM2FlZjk4NzYwOTYzMDM1MWQ1OWFjNzkwYjJhYmVhZGE3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICppbnNwZWN0ZWRXZWJWaWV3
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IDFjMDA4MDk3NjkyZmY5YjA3MWZjZTVh
YzRhNGI0NjkyZDEzN2VkOTUuLjdkM2U1ZWM5ZTYxNWUxZDQ4YzNkMDVkNzFhNTljNDUxZmViNzY2
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTEwOSw3ICsxMDksNyBAQCBGcm9udGVu
ZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcAogICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3Rv
ckNsaWVudDp0aGlzXTsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJv
bGxlci5nZXQoKSBmcm9udGVuZFdlYlZpZXddKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJW
aWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9m
cm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZENs
aWVudCA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVk
V2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIs
IG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogCiAgICAgUmV0YWlu
UHRyPFdlYkluc3BlY3RvckZyb250ZW5kPiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0TlMo
W1tXZWJJbnNwZWN0b3JGcm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDptX2Zy
b250ZW5kQ2xpZW50LmdldCgpXSk7CiAgICAgW1ttX2luc3BlY3RlZFdlYlZpZXcgaW5zcGVjdG9y
XSBzZXRGcm9udGVuZDp3ZWJJbnNwZWN0b3JGcm9udGVuZC5nZXQoKV07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5oCmluZGV4IDE1YjQxODA0OGU0ZjFkNDYyNGMzMDNkY2JiZmVkMTY5Nzk2NDQ4
NjEuLjk0ZWQ2MThhYzc4ZWU4YmNmNTcxNTVjOWFkYWJjYmRhZGY2OGM3MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAog
Y2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50KFdlYlZpZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsg
cmV0dXJuIG1fd2ViVmlldzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyLmgKaW5kZXggYTNkNmFlNjM2MzY0N2M1ZjMwY2M3OWZiZDYzNWY2NjRiY2EwMTIzYy4uZGM5
ZDExYTM1ODdlZTA0ZjUwMTUxYmU4OGJjNWQ0YjE0OGJjZGU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEludFBv
aW50OwogfQogCiBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA6IHB1YmxpYyBX
ZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIoV2ViVmlldyop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmlj
ZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQppbmRleCAyNTM2NDhkOGU4
NDU5MTFlMmFlMjhjMGJiODYzY2I1N2Y3YzMwMDM5Li4yNzZkOWYxNWVmOGZhNWUxZmVkNDM4ZWQ5
YzFkMjU5YTc4NTgzNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0K
QEAgLTM2LDcgKzM2LDcgQEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAg
ICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOworICAgIG1fY29yZSA9IG1h
a2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrPigpOwogICAgIHJldHVybiBzZWxm
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRl
eCBhOTA2MjJjMjA3NGUwY2RjZWNlZjJjNmMxYzg0OTQ1ZDRlOWRmZmFiLi4zYTk0YmI5MTBkMjU5
ZWZhYTg5MWQ1MjllODBkMmI1YjAwMjBiNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTM3OCw3ICszNzgsNyBAQCAtICh2b2lkKV9hdHRhY2hT
Y3JpcHREZWJ1Z2dlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3ByaXZhdGUtPnNj
cmlwdERlYnVnZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFs
T2JqZWN0KTsKKyAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBtYWtlVW5pcXVlPFdlYlNj
cmlwdERlYnVnZ2VyPihnbG9iYWxPYmplY3QpOwogfQogCiAtICh2b2lkKV9kZXRhY2hTY3JpcHRE
ZWJ1Z2dlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCBkZmE3ZWZkMDYwNmFkYzQ5
ZmUyOTFkMDUyMWQxMzJlNmUxOWM1MDczLi5hMDcyZTgxOTUyNDkzOWFlMGYyMmJiOTgzNmQzYWM3
MDVkODU3OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtMzcsNiArMzcsNyBA
QCBjbGFzcyBQYWdlOwogfQogCiBjbGFzcyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIDog
cHVibGljIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4gY3JlYXRlKFdlYkNvcmU6OlBhZ2UmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4IDcyYzIwYzY5M2ZlY2JhOTcxMDQ2MzQx
NjQxY2NlMTE0OTRkZTRhNjkuLjYwMjQwMjk5NjJlYzM0ZjAwZjRhYWQ5NDMyYTdmYzQyYmExZDE3
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAog
c3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+IFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXI6OmNyZWF0ZShXZWJDb3JlOjpQYWdlJiBwYWdlKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBhZ2Up
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBh
Z2UpOwogfQogCiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDFhNzI1OGI0MjNhODQ1
Nzg5MWU0MTVlMTBkMDAyNTY3MzBhYTJiZGUuLmUzNjNiODViMmIzZDVhZTE0NzNjODM3MjcxODU4
MzRkNTE3ODdiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVGV4dEl0ZXJhdG9yLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6
KERPTVJhbmdlICopcmFuZ2UKICAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgCiAgICAgX3ByaXZh
dGUgPSBbW1dlYlRleHRJdGVyYXRvclByaXZhdGUgYWxsb2NdIGluaXRdOwotICAgIF9wcml2YXRl
LT5fdGV4dEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+
KGNvcmUocmFuZ2UpKTsKKyAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiOGQ5
NzExZTcwZDc3NDVkN2QzOWIxZjlmNTQxYTE2NTRkNjU5YzgyLi5mYjdjZjJmYWFkNjdiNDljOTMz
YTYyMWUzMjc5MTBlMTA4MWFlZjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmxlYWtP
dXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCkKIC0odm9pZClfaW5qZWN0T3V0bG9va1F1
aXJrc1NjcmlwdAogewogICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENv
bnRlbnRzID0gbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKLSAgICBfcHJp
dmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUo
W1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4ob3V0
bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9y
PFN0cmluZz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKKyAg
ICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQo
KmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksIG1ha2VVbmlxdWU8VXNlclNjcmlwdD4ob3V0
bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9y
PFN0cmluZz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKIAog
fQogI2VuZGlmCkBAIC0xNDM4LDcgKzE0MzgsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXph
dGlvbldpdGhGcmFtZU5hbWU6KE5TU3RyaW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQo
c2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2Vi
Q29udGV4dE1lbnVDbGllbnQoc2VsZik7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBlbmFibGUg
dGhpcyBvbiBpT1MgYXMgd2VsbC4KLSAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVz
c2FnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+
KHNlbGYpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxm
KTsKICNlbHNlCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNo
cm9tZUNsaWVudElPUyhzZWxmKTsKQEAgLTQ2MjgsNyArNDYyOCw3IEBAICsgKHZvaWQpX2FkZFVz
ZXJTY3JpcHRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29y
bGQgKil3b3JsCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1
c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9T
dHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0
aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3Rh
cnQgOiBJbmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFs
bEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAg
IGF1dG8gdXNlclNjcmlwdCA9IG1ha2VVbmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRv
U3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVj
dGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0
YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5B
bGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKICAg
ICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUo
d29ybGQpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtNDY1MSw3ICs0NjUxLDcgQEAg
KyAodm9pZClfYWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3
b3JsZDooV2ViU2NyaXB0V29ybGQgKikKICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0
Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3Io
YmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmpl
Y3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwp
OworICAgIGF1dG8gc3R5bGVTaGVldCA9IG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJj
ZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QpLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxs
RnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CiAgICAg
dmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCgqY29y
ZSh3b3JsZCksIFdURk1vdmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMp
OwogfQogCkBAIC05NDAyLDcgKzk0MDIsNyBAQCAtIChWZWN0b3I8U3RyaW5nPilfZGljdGF0aW9u
QWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0CiAtIChXZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlciYpX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyCiB7CiAgICAgaWYg
KCFfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKQotICAgICAgICBfcHJpdmF0
ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CisgICAgICAgIF9wcml2YXRlLT5fc2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyPihzZWxmKTsKICAgICByZXR1cm4gKl9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXI7CiB9CiAjZW5kaWYKQEAgLTk0NjEsNyArOTQ2MSw3IEBAIC0gKHZvaWQpX3NldFRl
eHRJbmRpY2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3IKIC0gKHZvaWQpX3NldFRl
eHRJbmRpY2F0b3I6KFRleHRJbmRpY2F0b3ImKXRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOihU
ZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUpbGlmZXRpbWUKIHsKICAgICBpZiAoIV9wcml2YXRl
LT50ZXh0SW5kaWNhdG9yV2luZG93KQotICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldp
bmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CisgICAg
ICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxUZXh0SW5kaWNh
dG9yV2luZG93PihzZWxmKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dD
b29yZGluYXRlcyA9IFtzZWxmIGNvbnZlcnRSZWN0OltzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290
Vmlldzp0ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMo
KV0gdG9WaWV3Om5pbF07CiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3Jk
aW5hdGVzID0gW3NlbGYud2luZG93IGNvbnZlcnRSZWN0VG9TY3JlZW46dGV4dEJvdW5kaW5nUmVj
dEluV2luZG93Q29vcmRpbmF0ZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEubW0KaW5kZXggMTA2MGMyZDg1NGFkYTBkY2FmYjMzNTU5YzgxMWU0ZWU0
OTRjYzZlMC4uODIzOGE0ZWM1ZmVlMTY4MzY0ZWQxMzA0YmM3NTE1ZjU1MTdmZTg5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC05Niw3
ICs5Niw3IEBAIExheWVyRmx1c2hDb250cm9sbGVyOjpMYXllckZsdXNoQ29udHJvbGxlcihXZWJW
aWV3KiB3ZWJWaWV3KQogV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZs
dXNoU2NoZWR1bGVyKExheWVyRmx1c2hDb250cm9sbGVyKiBmbHVzaENvbnRyb2xsZXIpCiAgICAg
OiBtX2ZsdXNoQ29udHJvbGxlcihmbHVzaENvbnRyb2xsZXIpCiB7Ci0gICAgbV9ydW5Mb29wT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGlj
X2Nhc3Q8Q0ZJbmRleD4oV2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1fcnVuTG9vcE9ic2VydmVyID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+
KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJG
bHVzaCksIFt0aGlzXSgpIHsKICAgICAgICAgdGhpcy0+bGF5ZXJGbHVzaENhbGxiYWNrKCk7CiAg
ICAgfSk7CiB9CkBAIC0yMDgsNyArMjA4LDcgQEAgLSAoaWQpaW5pdAogICAgIHBsdWdpbkRhdGFi
YXNlQ2xpZW50Q291bnQrKzsKIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAg
IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcj4oKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDY0NmU2
YWVmOTMyZjFjOTkyOTg1MzZjODJmMmM5NTVhNzFhMTkyY2YuLmRlNTJjODU4NjQxNDI5MmMzYzk3
ZWRiZTk5NGFiZjFkNWY3OGQ1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCkBAIC0xNzYsNiArMTc2LDcgQEAgdm9p
ZCBIVURTbGlkZXI6OmRyYWcoY29uc3QgSW50UG9pbnQmIHBvaW50LCBib29sIHN0YXJ0KQogCiAj
aWYgVVNFKENBKQogY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMYXllckNsaWVudChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBwYXJlbnQpIDogbV9wYXJlbnQocGFyZW50KSB7IH0KIApAQCAtMjQ2LDEwICsy
NDcsMTAgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcigpCiAgICAgLCBtX21vdmluZ1dpbmRvdyhmYWxzZSkKICAgICAsIG1fdGltZXIoKnRoaXMs
ICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1lckZpcmVkKQogI2lmIFVTRShDQSkKLSAg
ICAsIG1fbGF5ZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcykpCisg
ICAgLCBtX2xheWVyQ2xpZW50KG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQogICAgICwg
bV9yb290Q2hpbGQoUGxhdGZvcm1DQUxheWVyV2luOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVMYXllciwgbV9sYXllckNsaWVudC5nZXQoKSkpCiAjZW5kaWYKLSAgICAsIG1fZnVs
bHNjcmVlbldpbmRvdyhzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQq
Pih0aGlzKSkpCisgICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3cobWFrZVVuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVGdWxsc2NyZWVuV2luZG93PihzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuQ2xpZW50Kj4odGhpcykpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKaW5kZXggZjFkZThkZDdjY2U3
ODg3ZDZjODNjYjI4MTE1NjEzZWE4MGI1NWQ3OC4uMTM4YzNlYzRlMjY0YjE4YjI3MmUyNjdjMTY4
Mzc1NzZhYmM4NDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBQbGF0Zm9ybUNB
TGF5ZXI7CiB9CiAKIGNsYXNzIEhVRFdpZGdldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgSFVEV2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3Qp
IDogbV9yZWN0KHJlY3QpIHsgfQogICAgIApAQCAtMTAxLDYgKzEwMiw3IEBAIGNsYXNzIEhVRFNs
aWRlciA6IHB1YmxpYyBIVURXaWRnZXQgewogfTsKIAogY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlciA6IFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwogcHVibGljOgogICAgIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmgKaW5kZXggNWZkNzZkNDE3ODI1MjYxZDRl
ZDUyOGE4NTQxZjY2MmE0ZjdmODdmOS4uNGI3OWZlNjJiZmQ4NDU5OWIyNGRjMmQ5NWM2OGM1MWUy
MTUwM2MzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5NZXNzYWdlVGhyb3R0bGVyV2luLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBsdWdpblZpZXc7CiAKICAgICBzdHJ1Y3QgUGx1Z2lu
TWVzc2FnZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgSFdORCBoV25kOwogICAgICAgICBVSU5UIG1zZzsKICAgICAgICAgV1BBUkFNIHdQYXJhbTsK
QEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAKICAgICBjbGFz
cyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luKFBs
dWdpblZpZXcqKTsKICAgICAgICAgflBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCBh
YmE2M2RhYjhiMzFlNDdhYmQ4MDg4YjM3ODNhODBlYzU0YzEwMjE4Li4wZjZiZWVmZmFkMWRjMDE1
YzhhNDc3ZTdmYmU1YzliNmFhZmFmZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBQbHVn
aW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2Fk
ZXIsIGNvbnN0IGNoYXIKIAogICAgIGlmIChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZ
KSB7CiAgICAgICAgIGlmICghbV9kZWxpdmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPGNoYXI+PigpOworICAgICAgICAgICAgbV9k
ZWxpdmVyeURhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4oKTsKIAogICAgICAgICBpbnQg
b2xkU2l6ZSA9IG1fZGVsaXZlcnlEYXRhLT5zaXplKCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRh
LT5yZXNpemUob2xkU2l6ZSArIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyMTM2MzE3ZjI5OTlkNWUxMzc0OWRmMzhlMTlh
OGY0ZDJmMjViZDYwLi41NDcxNmEwYmIyYjFmYWI3NWQ4MWRlNDJhZWU5NmVlYTJmNmIxM2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAg
LTUxMCw3ICs1MTAsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmxvYWQoRnJhbWVMb2FkUmVxdWVz
dCYmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGlmaWNhdAogICAgIH0gZWxzZSBpZiAo
IW1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1
cmwpKQogICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKIAotICAgIHNjaGVkdWxl
UmVxdWVzdChzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpblJlcXVlc3Q+KFdURk1vdmUoZnJhbWVMb2Fk
UmVxdWVzdCksIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEsIGFyZVBvcHVwc0FsbG93ZWQo
KSkpOworICAgIHNjaGVkdWxlUmVxdWVzdChtYWtlVW5pcXVlPFBsdWdpblJlcXVlc3Q+KFdURk1v
dmUoZnJhbWVMb2FkUmVxdWVzdCksIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEsIGFyZVBv
cHVwc0FsbG93ZWQoKSkpOwogCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXgg
MDU3MjhmM2VkMzcyMDUwNGFmNTVmOTg3N2Y4NjIxYmRjMDVjZTYyMi4uNTIwNDU5NGFiNmY4NGQ1
NzAwMDQwZGZkMjk4MWMzZjU2M2VkZmYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgUGx1Z2lu
Vmlldzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSkKICAgICBpZiAobWVzc2FnZSA9PSBXTV9VU0VSICsgMSAmJgogICAgICAgICBt
X3BsdWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtUaHJvdHRsZVdNVXNlclBsdXNP
bmVNZXNzYWdlcykpIHsKICAgICAgICAgaWYgKCFtX21lc3NhZ2VUaHJvdHRsZXIpCi0gICAgICAg
ICAgICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbk1lc3NhZ2VU
aHJvdHRsZXJXaW4+KHRoaXMpOworICAgICAgICAgICAgbV9tZXNzYWdlVGhyb3R0bGVyID0gbWFr
ZVVuaXF1ZTxQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luPih0aGlzKTsKIAogICAgICAgICBtX21l
c3NhZ2VUaHJvdHRsZXItPmFwcGVuZE1lc3NhZ2UoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFy
YW0pOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCmluZGV4IDUzMGI2OWVkNzE5YzI3YWNjNmIw
N2UzNTE1OTIyMWY1NTI2YzUzMDUuLjNiZjQ0ZDg3ZDE4ZDVmMjczY2QyOTUzNTY3NmIyNDA4ZjJj
OTE0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEuaD4KIAogY2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhKElXZWJEYXRhU291cmNlKiB3ZWJEYXRhU291cmNlKSA6IG1fd2ViRGF0YVNvdXJjZSh3ZWJE
YXRhU291cmNlKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmgKaW5kZXggZTNlYzMzZmQ0OTk3YTAxYTIyNWQ1ZTFjZjliNGY0YjYyZDc3ZTIyZC4uYzQxZjg2
ZTA3M2Q4ZGNiOWU0YThhNTI5NGYwZDYzY2M5NGU1NjNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCkBAIC00MCw2ICs0MCw3IEBACiBjbGFzcyBXZWJWaWV3
OwogCiBjbGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA6IHB1YmxpYyBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2ViVmll
dyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNGE0OWI5NGJiYTU4ZDBjNTQ2MzMyOWMzZjZl
ZjIzZTg0ODhiN2FmMy4uN2IyOTljZWUyNWVjZDEwYmJhNjIxYzg1ODFiMDZhZTA2YzVhMWQxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBzaXpl
X3QgbWF4RmlsZVBhdGhzTGlzdFNpemUgPSBVU0hSVF9NQVg7CiBXZWJDaHJvbWVDbGllbnQ6Oldl
YkNocm9tZUNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcp
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0
ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZp
ZXcpKQorICAgICwgbV9ub3RpZmljYXRpb25zRGVsZWdhdGUobWFrZVVuaXF1ZTxXZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlPih3ZWJWaWV3KSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCA0MWQ1ZjA2YWVhY2I3ZTE0MTdkNGI3MDI0MDA2MGJiZTU3ZjY5MzBmLi43ODc1
NDMyNTNkNWRmZjRlYzY2OGViZTg4ZjA4ODVkMGJhZGI2NTllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApA
QCAtMzgsNiArMzgsNyBAQCBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOwog
aW50ZXJmYWNlIElXZWJVSURlbGVnYXRlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaAppbmRleCBjOWRlNDliM2NkMTQ1NTE3MjhmYjJmOWQ5NmVmNDkwZTk5
MTU4YmQ0Li5mNDhlZTczMGVlZjcxOTc5ZTRkOGQyYzMyN2VkMWJhMTdiOTRmZmE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAK
IGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJD
b250ZXh0TWVudUNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3Rp
ZmljYXRpb25zRGVsZWdhdGUuaAppbmRleCA4Mjk2YzhjY2I2ODg3ZDM0NTQ4ZDVhNjRjNjg2Nzcy
NmE3NDYwNzcyLi40Y2ZkMTAyNjVkMWQwN2E1N2YwMzBhNGU2YjE1MDY5Y2JiZmI5MzM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9w
Tm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCkBAIC00MSw2ICs0
MSw3IEBAIGNsYXNzIERvY3VtZW50OwogfQogCiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlIDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRGVza3RvcE5vdGlmaWNhdGlv
bnNEZWxlZ2F0ZShXZWJWaWV3KiB2aWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGI1OTg5MzMyOTEw
MDllMjg1MWVkNzU0MTVlYzRhYTBmZTQwM2Q2MTEuLjQ1ZTNjYTcyNzUzYWQxYWMxMTUzYmU5NjE5
M2Y2ZWQ2MjFmZjg5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0Ns
aWVudChXZWJWaWV3Kik7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJveWVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGRiNjM1MmQ2MzgxNmY3YzlhZWVlOWY3NDRlNDhlMzgx
ZTg1NmQyYjUuLjY5ZDdlZDNlMGFhMzFmMTNiZWE2NGNmMGMyNzY1ZTI1NGZiZjhlNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNs
YXNzIFdlYkVkaXRvclVuZG9UYXJnZXQ7CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tl
ckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
RWRpdG9yQ2xpZW50KFdlYlZpZXcqKTsKICAgICB+V2ViRWRpdG9yQ2xpZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGUzNTRiNzFjZGZkMmE1ZjliOGIwMTFhMDMyOWQ3
NDI0YmM5MGJiYy4uZDRiMmY3ZjYzZTg2MDg1OTM5MzQ1MmJkNjJlMTI4NWQyZThhZDQ3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtOTMsNiArOTMsNyBAQCBzdGF0aWMgV2Vi
RGF0YVNvdXJjZSogZ2V0V2ViRGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogfQog
CiBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcml2YXRlKCkgCiAgICAgICAgIDogbV9wb2xpY3lGdW5jdGlvbihudWxs
cHRyKQpAQCAtMTA3LDcgKzEwOCw3IEBAIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZSB7CiB9OwogCiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQoV2ViRnJhbWUqIHdlYkZyYW1lKQotICAgIDogbV9wb2xpY3lM
aXN0ZW5lclByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJp
dmF0ZT4oKSkKKyAgICA6IG1fcG9saWN5TGlzdGVuZXJQcml2YXRlKG1ha2VVbmlxdWU8V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+KCkpCiAgICAgLCBtX3dlYkZyYW1lKHdlYkZyYW1lKQog
ICAgICwgbV9tYW51YWxMb2FkZXIoMCkKICAgICAsIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4o
ZmFsc2UpIApAQCAtOTczLDcgKzk3NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNh
dmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKiBjYWNoZWRGcmFtCiAKICAg
ICBBU1NFUlQoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID09IGNhY2hlZEZy
YW1lLT5kb2N1bWVudExvYWRlcigpKTsKIAotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
PihzdGF0aWNfY2FzdDxJV2ViRGF0YVNvdXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0Q2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEobWFrZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVGcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGViOTc1OGJkNDIx
MDdkMmY5YTg1NGU0ZTY4ODE2NmE2ZjUxNWZiOWYuLmJiYTljOWY0NDUzNThkN2NlM2VhMDNmODk2
NjQxYmQ2ZTVlMDQwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzYsNiArMzYs
NyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogY2xhc3MgV2ViVmlldzsKIAogY2xhc3Mg
V2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0
aW9uQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNzU2
OTU5MGMxYjNjZjM4MTZmYzQyYTM1YmYzZjY2YmZkNzg5MDIyNC4uZjgwYWUwNDhiODJkYmRiMjM0
NjU0NjhkOTMzYzYwYTcwOTcyYzdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0x
NjksNyArMTY5LDcgQEAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNs
aWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHIKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsKLSAg
ICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZy
b250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBj
cmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5p
cXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5z
cGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250
ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9m
cm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENs
aWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgpKTsKICAgICBtX2Zyb250ZW5kSGFuZGxlID0gZnJv
bnRlbmRId25kOwogICAgIHJldHVybiB0aGlzOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQoKQogICAgIGJvb2wgY3JlYXRpbmdIaWdobGlnaHQg
PSAhbV9oaWdobGlnaHQ7CiAKICAgICBpZiAoY3JlYXRpbmdIaWdobGlnaHQpCi0gICAgICAgIG1f
aGlnaGxpZ2h0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3BlY3Rl
ZFdlYlZpZXcpOworICAgICAgICBtX2hpZ2hsaWdodCA9IG1ha2VVbmlxdWU8V2ViTm9kZUhpZ2hs
aWdodD4obV9pbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGlmIChtX2hpZ2hsaWdodC0+aXNTaG93
aW5nKCkpCiAgICAgICAgIG1faGlnaGxpZ2h0LT51cGRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKaW5kZXggOTVjOWFmYTg1MDAyYTU0MzI3MGI3Y2U2YjM4OGM3MGQ0ODkxODUxOC4uMGE1MTQ4
MzkxYmFlMTI2MGRmNjg2NmIyODcwN2U2NjA4NGU5MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIGNsYXNzIFdlYlZp
ZXc7CiAKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVj
dG9yQ2xpZW50KFdlYlZpZXcqKTsKIApAQCAtOTQsNiArOTUsNyBAQCBjbGFzcyBXZWJJbnNwZWN0
b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMg
SW5zcGVjdAogfTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgV2ViQ29yZTo6V2lu
ZG93TWVzc2FnZUxpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJW
aWV3LCBIV05EIGluc3BlY3RlZFdlYlZpZXdId25kLCBIV05EIGZyb250ZW5kSHduZCwgY29uc3Qg
Q09NUHRyPFdlYlZpZXc+JiBmcm90bmVuZFdlYlZpZXcsIEhXTkQgZnJvbnRlbmRXZWJWaWV3SHdu
ZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kiwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPik7CiAgICAg
dmlydHVhbCB+V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDI0OTNjN2IwYjc5ZmM0ZmQ4
ZWNlYzBlYTk2NjdjNmVlMmFjM2EwNGEuLjQ0NTQyYTFkYTEwM2FhNDQ3NjNlOTRkNGZhYmE4NjRl
ZDAyZmM3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMzU1LDYgKzM1NSw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpz
ZXRJREJQZXJPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB9CiAKIGNsYXNz
IERpZE1vZGlmeU9yaWdpbkRhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERpZE1vZGlmeU9yaWdpbkRhdGEpOwogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlciogZGF0
YWJhc2VNYW5hZ2VyLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDI3
YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3MGIuLjhhZmJhMGY2ZDUzYWZkNTU1
ODQ1YzE5NTM2YzJhOWMxZWM1ZjM3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogLy8gV2ViRWxlbWVudFByb3BlcnR5QmFnIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6
OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCi0gICAg
OiBtX3Jlc3VsdChzdGQ6Om1ha2VfdW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCisgICAg
OiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0
eUJhZyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4
IGE4MWMwMGU1NmM1ZGUyYWViYzEyYWI4YjZkYjExYmM5MzRlYmJiZGEuLmZiODhlMzllN2I1NmFj
MzJkY2Y1Y2Y1MDExYzM1NDgxNzFhNmMzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJ
dGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihfSW5fb3B0XyB2b2lkKiBkaWN0
aW9uYQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gcmVkaXJlY3RVUkxzVmVj
dG9yOwogICAgIGlmIChDRkFycmF5UmVmIHJlZGlyZWN0VVJMc1JlZiA9IHN0YXRpY19jYXN0PENG
QXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnlSZWYsIHJlZGlyZWN0VVJM
c0tleSkpKSB7CiAgICAgICAgIENGSW5kZXggc2l6ZSA9IENGQXJyYXlHZXRDb3VudChyZWRpcmVj
dFVSTHNSZWYpOwotICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdHJpbmc+PihzaXplKTsKKyAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oc2l6ZSk7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgICgqcmVkaXJlY3RVUkxzVmVjdG9yKVtpXSA9
IFN0cmluZyhzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChy
ZWRpcmVjdFVSTHNSZWYsIGkpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5k
ZXJlci5jcHAKaW5kZXggMmYxZjJmNDgwN2ViOWM0ZmU3MDgzNWRiNzhlMzRhMzRiY2ZmMzZkMC4u
ZDY1ZGUxOWVlOTljNDUxNDQ1ZGZiZjFiMTM1OWRjMmE4YmEzOGM4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRk
aXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4gQ0FEM0RSZW5kZXJlcjo6Y3JlYXRlRDNEUG9z
dFByb2Nlc3NpbmcKICAgICBtZW1jcHkob3ZlcmxheVF1YWRCdWZmZXIsIG92ZXJsYXlRdWFkVmVy
dGljZXMsIHNpemVvZihvdmVybGF5UXVhZFZlcnRpY2VzKSk7CiAgICAgb3ZlcmxheVF1YWQtPlVu
bG9jaygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RDNEUG9zdFByb2Nlc3NpbmdD
b250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1YWQpOwog
fQogCiAvLyBGSVhNRTogPHJkYXI6Ly82NTA3ODUxPiBTaGFyZSB0aGlzIGNvZGUgd2l0aCBDb3Jl
QW5pbWF0aW9uJ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKaW5kZXggNjdkNDgz
NTNiMDNkNzJlYThhOWMyOGFiODcwZDc1ZGExMWQ4MDhlYy4uNDdlYWRkYTY1NjEyZTYwNTBkMmMy
OGFjZTZmNGM5YWNlOWNiYjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgK
QEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdLUUNBIHsKIGNsYXNzIEltYWdlOwogCiBjbGFz
cyBEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dChjb25zdCBDQ29tUHRyPElE
aXJlY3QzRFRleHR1cmU5PiYsIGNvbnN0IENDb21QdHI8SURpcmVjdDNEVmVydGV4QnVmZmVyOT4m
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhpZ2hsaWdo
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhpZ2hsaWdodC5oCmluZGV4IGY5
NzU1YmI4ZGFlYWFiMzlkMzQyMmVlOGZlYjBmMjRjMWIzNTRmZWQuLmIyNjk1NDk5YjgyNmI5OWI4
MmVhZmE4NDU0MTg3ZDE5ZjZlMDdmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5vZGVIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJO
b2RlSGlnaGxpZ2h0LmgKQEAgLTM1LDYgKzM1LDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNz
IFdlYk5vZGVIaWdobGlnaHQgOiBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vZGVIaWdobGlnaHQo
V2ViVmlldyopOwogICAgIH5XZWJOb2RlSGlnaGxpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA3YmQ5ODg5NjExMWMz
YjNmZTZmZTU0ZjBhMjQ3OTY2MDZiMjJhNzVmLi45MjUzMmRiZGNhNDFiODUzMWU5MTY4Y2RkZGUz
MWI1N2E3ZjQ1NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbkNlbnRlci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgdHlwZWRlZiBPYmplY3RPYnNlcnZl
ckxpc3Q6Oml0ZXJhdG9yIE9ic2VydmVyTGlzdEl0ZXJhdG9yOwogdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgT2JqZWN0T2JzZXJ2ZXJMaXN0PiBNYXBwZWRPYnNlcnZlcnM7CiAKIHN0cnVjdCBXZWJO
b3RpZmljYXRpb25DZW50ZXJQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgTWFwcGVkT2JzZXJ2ZXJzIG1fbWFwcGVkT2JzZXJ2ZXJzOwogfTsKIApAQCAt
NTMsNyArNTQsNyBAQCBzdHJ1Y3QgV2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZSB7CiBJV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50ZXI6Om1fZGVmYXVsdENlbnRl
ciA9IDA7CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkK
LSAgICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigp
KQorICAgIDogZChtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlm
aWNhdGlvbkNlbnRlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmlj
YXRpb25DZW50ZXIuaAppbmRleCAzODllOThjN2Q5ZmRjYTMwMzE2MDE0ZjlmMWQxZjYyMGEzNDll
ZjJmLi5mMTQ5ODEyMmQ4ZGUzYzMzNzMyNTQ0OGJlMzkxNDQyNGVjNzYwMDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuaApAQCAtMzEsNiAr
MzEsNyBAQAogc3RydWN0IFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU7CiAKIGNsYXNzIFdl
Yk5vdGlmaWNhdGlvbkNlbnRlciBmaW5hbCA6IHB1YmxpYyBJV2ViTm90aWZpY2F0aW9uQ2VudGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyKiBjcmVhdGVJbnN0YW5jZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IDk3NjE0OGUzM2Y3NDQ2ZDdjMzg0OTk1OWQ2Y2Y3M2RlZjQ4ZjY3
ZmYuLjlhNjEwNzllYmU1ZDM5MGEzZWM0OWZjY2QwODY0ZDk3MzE2NGEyMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xODgwLDcgKzE4ODAsNyBAQCBib29sIFdlYlZpZXc6
OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBh
cmFtKQogICAgICAgICBtb3VzZUV2ZW50LnNldENsaWNrQ291bnQoZ2xvYmFsQ2xpY2tDb3VudCk7
CiAgICAgICAgIGhhbmRsZWQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLm1v
dXNlTW92ZWQobW91c2VFdmVudCk7CiAgICAgICAgIGlmICghbV9tb3VzZU91dFRyYWNrZXIpIHsK
LSAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxUUkFDS01P
VVNFRVZFTlQ+KCk7CisgICAgICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPFRSQUNLTU9VU0VFVkVOVD4oKTsKICAgICAgICAgICAgIG1f
bW91c2VPdXRUcmFja2VyLT5jYlNpemUgPSBzaXplb2YoVFJBQ0tNT1VTRUVWRU5UKTsKICAgICAg
ICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5kd0ZsYWdzID0gVE1FX0xFQVZFOwogICAgICAgICAg
ICAgbV9tb3VzZU91dFRyYWNrZXItPmh3bmRUcmFjayA9IG1fdmlld1dpbmRvdzsKQEAgLTY3OTQs
NyArNjc5NCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlw
ZShfSW5fIEJTVFIgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBp
ZiAoIW1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzKQotICAgICAgICBtX2VtYmVkZGVkVmlld01JTUVU
eXBlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBtX2Vt
YmVkZGVkVmlld01JTUVUeXBlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogCiAg
ICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMtPmFkZCh0b1N0cmluZyhtaW1lVHlwZSkpOwogICAg
IHJldHVybiBTX09LOwpAQCAtNjg5NCw3ICs2ODk0LDcgQEAgdm9pZCBXZWJWaWV3OjplbnRlclZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1l
bnQKICAgICAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwogICAgIH0K
IAotICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcj4oKTsKKyAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xs
ZXIgPSBtYWtlVW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI+KCk7CiAgICAgbV9mdWxs
U2NyZWVuVmlkZW9Db250cm9sbGVyLT5zZXRWaWRlb0VsZW1lbnQoJnZpZGVvRWxlbWVudCk7CiAg
ICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKICNlbmRp
ZgpAQCAtNjk0Niw3ICs2OTQ2LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9H
cm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAgIGF1dG8gdXNlclNjcmlwdCA9
IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmlu
Z1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwKKyAgICBhdXRvIHVzZXJTY3JpcHQg
PSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCiAgICAgICAgIHRvU3RyaW5nVmVjdG9yKGJs
YWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9j
dW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQs
CiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0
SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmlld0dyb3VwLT51c2Vy
Q29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3Zl
KHVzZXJTY3JpcHQpKTsKQEAgLTY5NzMsNyArNjk3Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRk
VXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJT
Y3JpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29y
bGQgPSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRv
IHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRv
VVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0
cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwKKyAgICBhdXRvIHN0eWxlU2hl
ZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3Ry
aW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFj
a2xpc3QsIGJsYWNrbGlzdENvdW50KSwKICAgICAgICAgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5q
ZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5
LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkuYWRkVXNlclN0eWxlU2hlZXQod29ybGQtPndvcmxkKCksIFdURk1vdmUoc3R5bGVTaGVl
dCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogICAgIHJldHVybiBTX09LOwpAQCAtNzIz
Nyw3ICs3MjM3LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJv
b2wgYWNjZWxlcmF0ZWQpCiAgICAgfQogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAg
IGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKLSAg
ICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2Vs
ZXJhdGVkOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCmluZGV4IGVlY2E3Mzlk
MmIzOTRlODYwMzUxYmExYjQ2NGRlNTQ3OGI5YmIxNjcuLmRiMzZlYjlkZWQyYjllMGY1ZjZlZjQw
ZGI2YzY5OTE5YTczMDZkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
SGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCkBAIC04Miw2ICs4
Miw3IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qg
c2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApID0g
ZGVsZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJpdmF0ZTog
XAogdHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkTWFjcm9TZW1pY29sb25pZmllcgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKaW5kZXggYzA0NGQ3NzNiODc5YTY2
ZGZhZGQyZTJjYTMxNWVlZWEzNzZmZmE0YS4uM2FhMWQyMDk1MWRiZjMzNjRlN2QxNmRkMjM2NDNk
MGNkOTdmNmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaApAQCAt
MTIzLDYgKzEyMyw3IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVyYXRvciBuZXdb
XShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZv
aWQqIHApID0gZGVsZXRlOyBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAog
cHJpdmF0ZTogXAogdHlwZWRlZiBpbnQgX19tYWtlQmlzb01hbGxvY2VkSW5saW5lTWFjcm9TZW1p
Y29sb25pZmllcgogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMmE1OWE3MjVhMGQ3MWNlNzBjMDFiMWEwODc4NmJmYTIyZmY4NDMxNy4uZGM2YWY3
MDA0MDZjZTBmN2UxOGIyOGUyNmUxNzFmYzg1MDQyZmNlNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAxOS0wOC0x
NCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFk
ZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChhZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2spOgor
ICAgICAgICAoc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnJ1blVJU2NyaXB0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE9wZW5QYW5l
bEZpbGVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06
CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKGV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vRFJURGF0YU9iamVjdC5jcHA6CisgICAgICAgIChEUlREYXRhT2JqZWN0OjpTZXREYXRh
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwOgor
ICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9hZERlbGVnYXRlKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChEUlRVbmRvTWFu
YWdlcjo6RFJUVW5kb01hbmFnZXIpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSk6
CisgICAgICAgIChVSURlbGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci93cGUvbWFpbi5jcHA6CisgICAgICAgIChjcmVhdGVWaWV3QmFja2VuZCk6CisgICAg
ICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRleHQuaDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNz
TWV0aG9kU3dpenpsZXIuaDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3Rh
bmNlTWV0aG9kU3dpenpsZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmg6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpydW5KU1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZv
cm1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRT
ZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RNb3ZpbmdVc2luZ0Vuc3VyZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdBZGQpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTG9jay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5Mb2Nr
VGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VbmlxdWVSZWYuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Zh
cmlhbnQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNBUmluZ0J1ZmZlclRlc3Q6OlNldFVw
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVUZXN0VmFsdWUpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2ll
cy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0
aGluQ3JlYXRlUGFnZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdl
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRl
c3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9h
ZC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyV2lsbExvYWRUZXN0OjpTZXRV
cCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRB
cHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Rm9y
Y2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZVRlc3Q6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNw
cDoKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJWaWV3QXV0aGVu
dGljYXRpb25Qcm94eUhUVFBTKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRv
d1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0
aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAg
KGFwcGx5V29ya2Fyb3VuZFRvQWxsb3dXcml0aW5nQXR0cmlidXRlZFN0cmluZ3NUb0l0ZW1Qcm92
aWRlcnMpOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJh
dGlvbjphZGRUb1dpbmRvdzpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJLaXRUZXN0U2VydmVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvVGVz
dEZvbnRPcHRpb25zLm1tOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgaW5pdFdpdGhGb250
T3B0aW9uczpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHku
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2V0T3BlblBhbmVsRmlsZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9TdHJpbmdGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdUUjo6dG9TVEQpOgorICAgICAgICAo
V1RSOjp0b1dURlN0cmluZyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVl
cyk6CisgICAgICAgIChXVFI6OmNyZWF0ZVRlc3RVUkwpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cnVuVGVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnNldERlZmF1bHRDYWxlbmRhclR5cGUpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RS
OjpnZXRHREtLZXlTeW1Gb3JLZXlSZWYpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9z
L1Rlc3RDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmllcik6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZl
bnRTZW5kZXJQcm94eTo6bW91c2VEb3duKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94
eTo6bW91c2VVcCk6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRv
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNw
cDoKKyAgICAgICAgKFdUUjo6d3BlS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiB3cGUvYmFj
a2VuZHMvVmlld0JhY2tlbmQuaDoKKwogMjAxOS0wOC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdKFJFR1JFU1NJT046IHIyMDA0
ODcpOiBXZWJLaXQuUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvRm9yUm90YXRlZEltYWdlIGZh
aWxzIG9uIGlPUyAxMwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmgKaW5kZXggZTczYTJjMjdkMTc3MjJkMTI0ZDE0MjUxYjkwYjY1NTIxMDg1YTMxYy4u
MWJkZjFjNDMwYmM1MGJlMzg0ZmFjY2U1MGRmZmE1MjhkYTQ4NTZhNSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC00MSw2ICs0MSw3IEBA
CiAjZW5kaWYKIAogY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7
CiAgICAgfkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDkwYzY0YzM2MTRjZGM0MmRiNmY0OTQyYmRlMWFkMTMwZmQxZmQ5Y2IuLmQy
YmYyZTgyYWNkNjQ1YzU3OGQ2MmZjNmI3MGM4N2JiYTlmZTZjZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCkBAIC0zNjMsMTEgKzM2MywxMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBh
ZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bgogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVuZ3RoID0g
SlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKG9yaWdpbi5nZXQoKSk7Ci0gICAgYXV0
byBvcmlnaW5CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7
CisgICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcob3Jp
Z2luLmdldCgpLCBvcmlnaW5CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgbWF4
TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGRlc3RpbmF0aW9uLmdl
dCgpKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpT
U3RyaW5nR2V0VVRGOENTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCksIGRlc3RpbmF0aW9uQnVmZmVy
LmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
QEAgLTEzMTgsNyArMTMxOCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFdpbGxTZW5kUmVxdWVz
dENsZWFySGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgQVNTRVJU
KCEqZXhjZXB0aW9uKTsKIAogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoaGVhZGVyLmdldCgpKTsKLSAgICBhdXRvIGhlYWRlckJ1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGhlYWRl
ckJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVu
Z3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhoZWFkZXIuZ2V0KCksIGhlYWRl
ckJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CkBAIC0yMzk0LDcgKzIzOTQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNob3VsZFBh
aW50QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKQogdm9pZCBUZXN0UnVu
bmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5uZWwpCiB7
CiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShjaGFubmVsKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPiht
YXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0
cmluZyhjaGFubmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgV2ViQ29y
ZVRlc3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKHsgYnVmZmVyLmdldCgpIH0p
OwpAQCAtMjQ2NCw3ICsyNDY0LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpydW5VSVNjcmlwdChKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1ZhbHVlUmUKICAgICBjYWNo
ZVRlc3RSdW5uZXJDYWxsYmFjayhjYWxsYmFja0lELCBjYWxsYmFjayk7CiAKICAgICBpZiAoIW1f
VUlTY3JpcHRDb250ZXh0KQotICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENv
bnRleHQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXVFI6OlVJU2NyaXB0Q29u
dGV4dD4oKnRoaXMpOwogCiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyhKU1N0cmluZ0dldENoYXJh
Y3RlcnNQdHIoc2NyaXB0KSwgSlNTdHJpbmdHZXRMZW5ndGgoc2NyaXB0KSk7CiAgICAgbV9VSVNj
cmlwdENvbnRleHQtPnJ1blVJU2NyaXB0KHNjcmlwdFN0cmluZywgY2FsbGJhY2tJRCk7CkBAIC0y
NTIxLDcgKzI1MjEsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAgYXV0byBm
aWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUsIG51bGxw
dHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxlQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0
byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihm
aWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQo
KSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIG1fb3BlblBh
bmVsRmlsZXMucHVzaF9iYWNrKGZpbGVCdWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDJlOTM5N2ZmNTk0OTI1MDBmYjA4Njg3MWM4
YWY3YzZmMTY2OWFiZjQuLjEzMDY4Y2FlMDM1MzJiZDhmMjVmZDRiZGJjNTI1ZjUyYzQyMDBiOWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MzUs
NyArMTUzNSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAq
ZnJhbWUpCiAgICAgLy8gdGhlIHJlc3VsdCB3aXRob3V0IGFueSBjb252ZXJzaW9uLgogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmluZ1JlZilpbm5lclRleHQpKTsKICAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmdS
ZWYuZ2V0KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1
ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tT
dHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmdSZWYuZ2V0KCksIGJ1ZmZlci5nZXQo
KSwgYnVmZmVyU2l6ZSk7CiAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwgU3RyaW5n
Ojpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAt
IDEpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDQ2MWJkM2RmM2ViYjI2MDNh
YzMyMTgyODgyMThkZDhmNjkxNjhmZmQuLjNiZTMzMjIxZDZiM2ViYzM1NmQ1MWUzMzRhMjRkOTI5
YWUyNTNhOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tCkBAIC01NjgsNyArNTY4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZv
clYKIHsKICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkK
ICAgICAgICAgdmlldyA9IFsoV2ViSFRNTFZpZXcgKil2aWV3IF9oaXRWaWV3Rm9yRXZlbnQ6ZXZl
bnRdOwotICAgIHJldHVybiAhW3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11d
ID8gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10s
IEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3
aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSkgOiBOVUxMOworICAgIHJldHVybiAhW3Zp
ZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11dID8gbWFrZVVuaXF1ZTxDbGFzc01l
dGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0
b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0
b25zKSkgOiBOVUxMOwogfQogCiBzdGF0aWMgTlNVSW50ZWdlciBzd2l6emxlZEV2ZW50UHJlc3Nl
ZE1vdXNlQnV0dG9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJU
RGF0YU9iamVjdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5j
cHAKaW5kZXggZWYyZDJlZmI4NTlmNGI4YTIyZjMwYzQ2N2FjZTFmOGFhZDE1N2E0ZC4uY2RmZThh
Y2I0NjhjNzRkMGFlMDg0Y2Y4NzZkNTM0ZmYxZTNiYTU3YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcApAQCAtNDgsNiArNDgsNyBAQCBGT1JNQVRFVEMqIGNm
VXJsV0Zvcm1hdCgpCiB9CiAKIGNsYXNzIFdDRW51bUZvcm1hdEV0YyBmaW5hbCA6IHB1YmxpYyBJ
RW51bUZPUk1BVEVUQyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV0NFbnVtRm9ybWF0RXRjKGNvbnN0IFZlY3RvcjxGT1JNQVRFVEM+JiBmb3Jt
YXRzKTsKICAgICBleHBsaWNpdCBXQ0VudW1Gb3JtYXRFdGMoY29uc3QgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxGT1JNQVRFVEM+PiYgZm9ybWF0cyk7CkBAIC0yNDksNyArMjUwLDcgQEAgU1RETUVU
SE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEoX0luXyBGT1JNQVRFVEMqIHBmb3JtYXRldGMs
IF9Jbl8gU1RHTUVESVVNKgogICAgIGlmICghcGZvcm1hdGV0YyB8fCAhcG1lZGl1bSkKICAgICAg
ICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8gZm9ybWF0ZXRjID0gc3RkOjptYWtlX3Vu
aXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0byBmb3JtYXRldGMgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxGT1JNQVRFVEM+KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNUR01F
RElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0Z01lZChuZXcgU1RHTUVESVVNKTsKIAogICAgIFpl
cm9NZW1vcnkoZm9ybWF0ZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuaAppbmRleCBiOTUyYjA4MWFmZWFhMzkxOTI3YWQy
Y2FiN2RkMThlODc5MzM3NDIxLi4xNmM2NDIzMDhlNTRjMTU1YWUzNjRkMjczMDFiMjgyNTM4ZmJk
NTk3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgc3RydWN0IFN0Z01lZGl1bURlbGV0ZXIgewogfTsKIAogY2xhc3MgRFJURGF0YU9i
amVjdCBmaW5hbCA6IHB1YmxpYyBJRGF0YU9iamVjdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBDb3B5TWVkaXVtKFNUR01FRElVTSogcE1lZERlc3Qs
IFNUR01FRElVTSogcE1lZFNyYywgRk9STUFURVRDKiBwRm10U3JjKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2Vu
dGVyLmgKaW5kZXggNzBiZDQ3MGUzZGNjMGU2MzBmNmQ1MWMyZWNhOGI0MjNkZDNmOTNkNy4uNDZk
ODQ1ZTMwMjc5OGMzZTMyMzhmMmFiZDE3NTU3ZmQ0YTU5ZGRhNiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRl
ci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d2luZGVmLmg+CiAKIGNsYXNzIERSVERl
c2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIgZmluYWwgOiBwdWJsaWMgSVdlYkRlc2t0b3BOb3Rp
ZmljYXRpb25zRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIoKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EUlREcm9wU291cmNlLmgKaW5kZXggZDllZTdkMDE5NjU2MzZlMTMzMTY4Nzdj
ZTkzNGJjNGM2ZDcwMjFjYy4uOWFjYTQ2NDNmZGMyMWFlODE1OWM1ZWM2OWZlZGVjNjk3OTkxZDBm
NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogCiBjbGFzcyBEUlREcm9wU291cmNlIGZpbmFs
IDogcHVibGljIElEcm9wU291cmNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOyAgICAg
ICAgCiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EcmFnZ2luZ0luZm8uaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EcmFnZ2luZ0luZm8uaAppbmRleCAwMmFkYWIzNjM0NjI0OGIxZGJh
NjRjY2YwYzY3YmRhZDc3ZDM1OWRiLi4wOTA3ZDU0OGQ3YzMwNmNjNmYxMWFjODY0YzlmNGZjMGEz
OWU4ZWRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHJhZ2dpbmdJbmZv
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RyYWdnaW5nSW5mby5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAKIGNsYXNzIERyYWdnaW5nSW5mbyB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRHJhZ2dpbmdJbmZvKElE
YXRhT2JqZWN0KiBvYmplY3QsIElEcm9wU291cmNlKiBzb3VyY2UpCiAgICAgICAgIDogbV9vYmpl
Y3Qob2JqZWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdE
ZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5oCmlu
ZGV4IDRmMTc2N2M2ZWU0YjI1MmI4ODhlOTBhNWJmOWY2MDY4NzhlMWNkZWYuLmI1MTczOWY1Y2Rh
M2I5YWI0MDdjZDcwOTk0Yjc5NmMyNGFmNTM0YzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRWRpdGluZ0RlbGVnYXRlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxXZWJLaXRM
ZWdhY3kvV2ViS2l0Lmg+CiAKIGNsYXNzIF9fZGVjbHNwZWModXVpZCgiMjY1RENENEItNzlDMy00
NGEyLTg0QkMtNTExQzNFREFCRDZGIikpIEVkaXRpbmdEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBJ
V2ViRWRpdGluZ0RlbGVnYXRlMiwgcHVibGljIElXZWJOb3RpZmljYXRpb25PYnNlcnZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRWRpdGluZ0RlbGVnYXRl
KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVudFNlbmRlci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5kZXIuY3BwCmluZGV4IGFkY2I4
NDdlMzcyYjMyZjc3ZDIwYmUzOGE5ZDVjYmRhYmY1N2Y1ZTEuLjNhYmI5NWRjMDM5MjBmNGU3ODI0
ZjA2NzgwZTgzMWYwNWM1MDhkYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2Vu
ZGVyLmNwcApAQCAtNTksNiArNTksNyBAQCBzdGF0aWMgaW50IHRpbWVPZmZzZXQ7CiBzdGF0aWMg
UE9JTlQgbGFzdE1vdXNlUG9zaXRpb247CiAKIHN0cnVjdCBEZWxheWVkTWVzc2FnZSB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIE1TRyBtc2c7CiAgICAgdW5zaWdu
ZWQgZGVsYXk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHAKaW5kZXggYzgwZGYxYmU1ZjJkZTQ3ZDNiODMxNjM3ZWY2ZTlmYmNkOTM0YzhlNi4u
MTFjOTMzOWIxNmQ4MDRkMmMyMDFjOTMyOWY0YThjMzU0NDJhODNjYiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCkBAIC03Miw5ICs3Miw5IEBA
IHN0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChJV2ViRnJhbWUqIHdlYkZy
YW1lKQogfQogCiBGcmFtZUxvYWREZWxlZ2F0ZTo6RnJhbWVMb2FkRGVsZWdhdGUoKQotICAgIDog
bV9nY0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCi0gICAgLCBt
X2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI+KCkpCi0gICAgLCBtX3RleHRJbnB1dENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxUZXh0SW5wdXRDb250cm9sbGVyPigpKQorICAgIDogbV9nY0NvbnRyb2xsZXIobWFrZVVuaXF1
ZTxHQ0NvbnRyb2xsZXI+KCkpCisgICAgLCBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKG1ha2VV
bmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX3RleHRJbnB1dENvbnRy
b2xsZXIobWFrZVVuaXF1ZTxUZXh0SW5wdXRDb250cm9sbGVyPigpKQogewogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCmluZGV4IDJjZTJlOWQxNTc1
NzRlOTFhYmU2YTE0N2UyOGNlODVhMzYyODFkYzIuLmY4ZGY4YzMzYmZhNGE5MGVjZDUzZjkxMzgx
MWYwMGFjMTcyMDM5MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWRE
ZWxlZ2F0ZS5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXI7CiBj
bGFzcyBHQ0NvbnRyb2xsZXI7CiAKIGNsYXNzIEZyYW1lTG9hZERlbGVnYXRlIDogcHVibGljIElX
ZWJGcmFtZUxvYWREZWxlZ2F0ZSwgcHVibGljIElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUy
LCBwdWJsaWMgSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWREZWxlZ2F0ZSgpOwogICAgIHZpcnR1YWwg
fkZyYW1lTG9hZERlbGVnYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vSGlzdG9yeURlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vSGlzdG9yeURl
bGVnYXRlLmgKaW5kZXggYmE2YTFhZjQ3MzY0ZjE4OWMwOWM0Njc3N2VhMzMyYzQ5Y2QxOTMzZS4u
YWFkMTgxNWQ2Zjk0OGI4YTJhMGRkMTQ1ZGE1Y2Y3NzNlMjAzMDQ1ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0hpc3RvcnlEZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KIAogY2xhc3MgSGlzdG9yeURlbGVnYXRlIDogcHVi
bGljIElXZWJIaXN0b3J5RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEhpc3RvcnlEZWxlZ2F0ZSgpOwogICAgIHZpcnR1YWwgfkhpc3RvcnlEZWxl
Z2F0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5oCmluZGV4IGI4ZWI4OTBhNGY4NjdjZGUyYmNhYjM4
Y2ZiZWMwYjAxZDdhOGNlOWUuLjQ0ZjkyY2FlZWQzNThkNGFjMzgwZTM0YmM1NzNiNmMyODY4MzY4
MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmgKQEAgLTMyLDYgKzMyLDcgQEAKIHR5cGVkZWYgdW5z
aWduZWQgbG9uZyBVTE9ORzsKIAogc3RydWN0IE1ENV9DVFggeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBVTE9ORyBpWzJdOwogICAgIFVMT05HIGJ1Zls0XTsKICAg
ICB1bnNpZ25lZCBjaGFyIGluWzY0XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9Qb2xpY3lEZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BvbGljeURl
bGVnYXRlLmgKaW5kZXggZTk4Mzg2NTA3NjUyMjBlZmYyMWJjMTA4OTQ4N2FiZDkzYmZhMDZhMC4u
NjkzMjIxNDUzNjcxZWZiYWE5OTEzOGUyNDIxMDg0Y2Y1MjJjYTk4ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIGNsYXNzIFRl
c3RSdW5uZXI7CiAKIGNsYXNzIFBvbGljeURlbGVnYXRlIGZpbmFsIDogcHVibGljIElXZWJQb2xp
Y3lEZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
UG9saWN5RGVsZWdhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Jlc291cmNlTG9hZERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuaAppbmRleCAxMWFlYjc4MDgzZGI1M2NkOGU5ZjU1OTVkODE4YzA3ODcy
NTJmOTViLi5lMTdiNWM0NDhjZDJjNzIzODBhNDhmNTk2NzU1Nzc2ZjZhMjM2MGYwIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIGNsYXNzIFJlc291cmNlTG9h
ZERlbGVnYXRlIDogcHVibGljIElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZSwgcHVibGljIElXZWJS
ZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWREZWxlZ2F0ZSgpOwogICAgIHZpcnR1YWwgflJl
c291cmNlTG9hZERlbGVnYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVGV4dElucHV0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1RleHRJ
bnB1dENvbnRyb2xsZXIuaAppbmRleCAyNWMzNDhlODExMGFmZTExN2RlNGQ4Yzk1YzcyYmJiNTM2
ZjYxNGI1Li4yOWYwMzhiZTJkZGI1MGU5ZmFlNTMwZTFjNmQxM2MxZDQ2Zjk5NzkyIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGV4dElucHV0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXh0SW5wdXRDb250cm9sbGVyLmgKQEAgLTM0LDgg
KzM0LDEwIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8dmVjdG9yPgorI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgbWFrZVdpbmRv
d09iamVjdChKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVjdCwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJ
RGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCmlu
ZGV4IGYwYWRiY2U0Nzk2ZmFiZjRmMGQ0MmIyNzExNjMzNzAxYWM3ODEzMTQuLjhmODJmMGQ5MjZj
MGFkNjk2MTAxYTViMTM1NGU3ZTcwZjQzODQ0M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VUlEZWxlZ2F0ZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKIHVzaW5nIHN0ZDo6d3N0cmluZzsKIAog
Y2xhc3MgRFJUVW5kb09iamVjdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRFJUVW5kb09iamVjdChJV2ViVW5kb1RhcmdldCogdGFyZ2V0LCBCU1RSIGFjdGlv
bk5hbWUsIElVbmtub3duKiBvYmopCiAgICAgICAgIDogbV90YXJnZXQodGFyZ2V0KQpAQCAtNzEs
NiArNzIsNyBAQCBjbGFzcyBEUlRVbmRvT2JqZWN0IHsKIH07CiAKIGNsYXNzIERSVFVuZG9TdGFj
ayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV91bmRvVmVjdG9yLmlzRW1wdHkoKTsgfQogICAgIHZvaWQg
Y2xlYXIoKSB7IG1fdW5kb1ZlY3Rvci5jbGVhcigpOyB9CkBAIC04Myw2ICs4NSw3IEBAIGNsYXNz
IERSVFVuZG9TdGFjayB7CiB9OwogCiBjbGFzcyBEUlRVbmRvTWFuYWdlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRFJUVW5kb01hbmFnZXIoKTsKIApAQCAt
MTAxLDggKzEwNCw4IEBAIGNsYXNzIERSVFVuZG9NYW5hZ2VyIHsKIH07CiAKIERSVFVuZG9NYW5h
Z2VyOjpEUlRVbmRvTWFuYWdlcigpCi0gICAgOiBtX3JlZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVl
PERSVFVuZG9TdGFjaz4oKSkKLSAgICAsIG1fdW5kb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJU
VW5kb1N0YWNrPigpKQorICAgIDogbV9yZWRvU3RhY2sobWFrZVVuaXF1ZTxEUlRVbmRvU3RhY2s+
KCkpCisgICAgLCBtX3VuZG9TdGFjayhtYWtlVW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKIHsKIH0K
IApAQCAtMTQ2LDcgKzE0OSw3IEBAIHZvaWQgRFJUVW5kb01hbmFnZXI6OnVuZG8oKQogfQogCiBV
SURlbGVnYXRlOjpVSURlbGVnYXRlKCkKLSAgICA6IG1fdW5kb01hbmFnZXIoc3RkOjptYWtlX3Vu
aXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKKyAgICA6IG1fdW5kb01hbmFnZXIobWFrZVVuaXF1ZTxE
UlRVbmRvTWFuYWdlcj4oKSkKICAgICAsIG1fZGVza3RvcE5vdGlmaWNhdGlvbnMobmV3IERSVERl
c2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIpCiB7CiAgICAgbV9mcmFtZS5ib3R0b20gPSAwOwpA
QCAtMTU3LDcgKzE2MCw3IEBAIFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUoKQogCiB2b2lkIFVJRGVs
ZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIoKQogewotICAgIG1fdW5kb01hbmFnZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOworICAgIG1fdW5kb01hbmFnZXIgPSBtYWtlVW5p
cXVlPERSVFVuZG9NYW5hZ2VyPigpOwogfQogCiBIUkVTVUxUIFVJRGVsZWdhdGU6OlF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmgKaW5kZXggNzgyNTg5MDM3NzAwNTVhYzky
NDY2MTkxYTVlYjhkZWZmNDI1MTRiYi4uZjRmOGQ1ZDI3NjM5Y2NiNzQ0NzZhY2VjZjE1ZjI3MWRi
MGZiNmU0YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5oCkBAIC0zNyw2ICsz
Nyw3IEBAIGNsYXNzIERSVFVuZG9NYW5hZ2VyOwogY2xhc3MgRFJURGVza3RvcE5vdGlmaWNhdGlv
blByZXNlbnRlcjsKIAogY2xhc3MgVUlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBJV2ViVUlEZWxl
Z2F0ZTIsIElXZWJVSURlbGVnYXRlUHJpdmF0ZTMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFVJRGVsZWdhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvd3BlL21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd3BlL21haW4uY3BwCmlu
ZGV4IGJlNjQ2MGU1NmI3YjcwY2QyNDgwZmM4N2RlMmI5YmE5NzBlNThjMzguLjcyYWYzY2JhYmNk
MDA0YWRjNDIzY2ZkMzE4MzA0OTk2ODQxYzYxODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAg
LTY2LDYgKzY2LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlv
bnNbXSA9CiB9OwogCiBjbGFzcyBJbnB1dENsaWVudCBmaW5hbCA6IHB1YmxpYyBXUEVUb29saW5n
QmFja2VuZHM6OlZpZXdCYWNrZW5kOjpJbnB1dENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSW5wdXRDbGllbnQoR01haW5Mb29wKiBsb29wLCBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IG1fbG9vcChsb29wKQpAQCAtMTI5LDggKzEz
MCw4IEBAIHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJW
aWV3ICosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdQ
RVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ+IGNyZWF0ZVZpZXdCYWNrZW5kKHVpbnQzMl90
IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiB7CiAgICAgaWYgKGhlYWRsZXNzTW9kZSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc1Zp
ZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
UEVUb29saW5nQmFja2VuZHM6OldpbmRvd1ZpZXdCYWNrZW5kPih3aWR0aCwgaGVpZ2h0KTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdQRVRvb2xpbmdC
YWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZD4od2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdQRVRvb2xpbmdCYWNrZW5kczo6V2lu
ZG93Vmlld0JhY2tlbmQ+KHdpZHRoLCBoZWlnaHQpOwogfQogCiB0eXBlZGVmIHN0cnVjdCB7CkBA
IC0yNTEsNyArMjUyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAg
ICAgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X3VucmVmKHNldHRpbmdzKTsKIAotICAgIGJhY2tl
bmRQdHItPnNldElucHV0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SW5wdXRDbGllbnQ+KGxvb3As
IHdlYlZpZXcpKTsKKyAgICBiYWNrZW5kUHRyLT5zZXRJbnB1dENsaWVudChtYWtlVW5pcXVlPElu
cHV0Q2xpZW50Pihsb29wLCB3ZWJWaWV3KSk7CiAjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJ
VFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQogICAgIGF1dG8qIGFjY2Vzc2libGUgPSB3cGVfdmll
d19iYWNrZW5kX2Rpc3BhdGNoX2dldF9hY2Nlc3NpYmxlKHdwZUJhY2tlbmQpOwogICAgIGlmIChB
VEtfSVNfT0JKRUNUKGFjY2Vzc2libGUpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmggYi9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaAppbmRleCA0ZTAyMGYxOTZj
ZDAzM2Q2MWVlMGU2MjhmNmExZTU5Y2ExYzMzNDU4Li4wYjg0ZDJkNDU0NTU4M2RlOWZjMGRlYzEy
YTRhYTg4YTY1OWVkMTk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaApAQCAtNjgsNiArNjgsNyBAQCB0eXBl
ZGVmIGVudW0gIHsKIH0gQ2FsbGJhY2tUeXBlOwogCiBjbGFzcyBVSVNjcmlwdENvbnRleHQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVJ
U2NyaXB0Q29udGV4dCk7CiBwdWJsaWM6CiAgICAgVUlTY3JpcHRDb250ZXh0KFVJU2NyaXB0Q29u
dGV4dERlbGVnYXRlJik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29h
L0NsYXNzTWV0aG9kU3dpenpsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xh
c3NNZXRob2RTd2l6emxlci5oCmluZGV4IDI4ZGIxMGE0Nzk5NjMwYzY0YzU1ZDA3ODZjMDBlZTA5
NDg5MTQ1ZTIuLjM5YjRlNWVhNzE4MzY4OGNkZWM5YmVmY2M5NjRjZTg5M2E1NDNmMDcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5o
CisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5o
CkBAIC0yNiw5ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxvYmpjL3J1bnRp
bWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBjbGFzcyBDbGFzc01ldGhvZFN3aXp6bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDbGFzc01ldGhvZFN3aXp6bGVy
KTsKIHB1YmxpYzoKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyKENsYXNzLCBTRUwsIElNUCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3RhbmNlTWV0aG9kU3dp
enpsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6
emxlci5oCmluZGV4IGI4YTBiMGIxOGQxMzFlY2M5OWIyNmEzOTFjODkwZjlmNmM2YzA3MmUuLjYy
NDc0ZDdjZDk3Nzc5OGM1YmJlY2FmNjU2YTYyNjQ4NTVhY2Y4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6emxlci5oCisrKyBiL1Rv
b2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6emxlci5oCkBAIC0y
Niw5ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiBjbGFzcyBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
KTsKIHB1YmxpYzoKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyKENsYXNzLCBTRUwsIElNUCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvdW50ZXJzLmgKaW5kZXggZjllYTIyNDAyNjE1MGQ4ZTFhYzZiYjc2MTViNmRl
Mzg5MGFmNjcwZS4uYWI1YzUyZjc1ZDFhYzZhZjk2MGFjMTRjYTcwYjVjYjc0ZmEzNjI4OCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ291bnRlcnMuaApAQCAtMjcsNiArMjcsOCBAQAogI2lmbmRlZiBDb3VudGVyc19o
CiAjZGVmaW5lIENvdW50ZXJzX2gKIAorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKIHN0
cnVjdCBDb3B5TW92ZUNvdW50ZXIgewogICAgIHN0YXRpYyB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25D
b3VudDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29weUNvdW50OwpAQCAtNTAsNiArNTIsNyBAQCBz
dHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsKIAogCiBzdHJ1Y3QgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRp
YyB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0aWMgdW5zaWduZWQgZGVzdHJ1
Y3Rpb25Db3VudDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0
VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcAppbmRleCAy
MTM2ZTk4ZDhlYmI4NzVkNTk3ZmM2ZTA3YzdiMDFlZDViODRhZTE2Li42YTIzMzYzMjk0MWFjZjYw
NzA1OTQ5NDI2NDAxYjMyNzMzN2M3MDgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0phdmFTY3JpcHRUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRU
ZXN0LmNwcApAQCAtNzUsNyArNzUsNyBAQCA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBydW5K
U1Rlc3QoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgV0tQYQogICAgIFV0
aWw6OnJ1bigmY29udGV4dC5kaWRGaW5pc2gpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY29udGV4dC5hY3R1YWxTdHJpbmcuZ2V0
KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNp
emUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGNvbnRleHQu
YWN0dWFsU3RyaW5nLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIAogICAg
IHJldHVybiBjb21wYXJlSlNSZXN1bHQoc2NyaXB0LCBidWZmZXIuZ2V0KCksIGV4cGVjdGVkUmVz
dWx0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKaW5kZXggOGY4
ZDc2OGE1M2MyNzUxYTI0M2UwNTk1ZTJjMGMwZjQ0NWRkOTZjOC4uYmJiZmY3MDllNjdkMzU5YjRl
NDgxNzFlZDdjNGMyNDAwOGE1NjdmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0
aWxpdGllcy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgV0tDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRG
b3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3ROYW1lLCBXS1QKIHN0
ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVy
U2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1
dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1
dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZm
ZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmlu
ZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVdlYlZpZXcuaAppbmRleCBhZDJhNzMyZDUxOTQ3YmJjN2FmYzY0ZTI3ZDQyMTVjZTMy
ODdkZGVlLi4wYzI3YTQ2MTY0NWZiYTEyYTVjNjk1ZDkzMjY0MzA1MjZjNGVmMTI5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYg
UGxhdGZvcm1XZWJWaWV3X2gKICNkZWZpbmUgUGxhdGZvcm1XZWJWaWV3X2gKIAorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NHR2VvbWV0cnkuaD4KICNlbmRpZgpAQCAtNjMsNiArNjUsNyBAQCB0eXBlZGVmIHVpbnQzMl90
IFdLRXZlbnRNb2RpZmllcnM7CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIGNsYXNzIFBs
YXRmb3JtV2ViVmlldyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpOwogICAg
IGV4cGxpY2l0IFBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmID0g
MCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKaW5kZXggNGIx
MGM4NmEyYWI3MzJlMWVhNjI3NDg0Y2M3ODk0MGZiNmNkNmU5Ni4uMmEwNmY4YmE1Y2E5ZmViNDky
YTM1MjJjNWM2NTUwMTM4ZDIyMzdlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0V4cGVjdGVkLmNwcApAQCAtNDA3LDYgKzQwNyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCBkZXN0
cnVjdG9ycykKIHN0YXRpYyBpbnQgc25vd2ZsYWtlcyA9IDA7CiBzdGF0aWMgaW50IG1lbHRlZCA9
IDA7CiBzdHJ1Y3Qgc25vd2ZsYWtlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgc3RhdGljIHZvaWQgcmVzZXQoKSB7IHNub3dmbGFrZXMgPSBtZWx0ZWQgPSAwOyB9
CiAgICAgc25vd2ZsYWtlKCkgeyArK3Nub3dmbGFrZXM7IH0KICAgICB+c25vd2ZsYWtlKCkgeyAr
K21lbHRlZDsgfQpAQCAtNDE2LDcgKzQxNyw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVf
cHRyKQogewogICAgIC8vIFVuaXF1ZSBzbm93Zmxha2VzIGNhbm5vdCBiZSBjb3BpZWQuCiAgICAg
ewotICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dm
bGFrZT4oKSk7CisgICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25v
d2ZsYWtlPigpKTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwogICAgICAgICBF
WFBFQ1RfRVEobWVsdGVkLCAwKTsKICAgICB9CkBAIC00MjUsNyArNDI2LDcgQEAgVEVTVChXVEZf
RXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewot
ICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFr
ZT4oKSk7CisgICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2Zs
YWtlPigpKTsKICAgICAgICAgVW5leHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4g
YyhXVEZNb3ZlKHMpKTsKICAgICAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwogICAgICAg
ICBFWFBFQ1RfRVEobWVsdGVkLCAwKTsKQEAgLTQ0Niw3ICs0NDcsNyBAQCBURVNUKFdURl9FeHBl
Y3RlZCwgdW5pcXVlX3B0cikKICAgICB9OwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDxzdGQ6
OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPiwgaW50PiBzKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtl
PigpKTsKKyAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4sIGludD4g
cyhtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS52YWx1
ZSgpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpAQCAtNDU0LDcgKzQ1
NSw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFrZTo6cmVz
ZXQoKTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8c25v
d2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSkp
OworICAgICAgICBFeHBlY3RlZDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1h
a2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RG
TW92ZShzKS5lcnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpA
QCAtNDYyLDcgKzQ2Myw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNu
b3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgc3RkOjp1
bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxz
bm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8dm9pZCwgc3RkOjp1bmlxdWVfcHRyPHNu
b3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpKTsKICAg
ICAgICAgcGxvdyhXVEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25v
d2ZsYWtlcywgMSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoQ291bnRlZFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291
bnRlZFNldC5jcHAKaW5kZXggODRkYTVlYzNmZmMyNDhhY2RkOWUzNjMzMDM4YzY5ZGFlODkxMjA5
OS4uN2I4ZmFmMjg4YWJjMDdjZmFmOGI1MjcxMjM4Zjc2ZDAxMzAxMmVlNiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcApAQCAtMjQxLDcg
KzI0MSw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBI
YXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgaGFzaENv
dW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI1OSw3
ICsyNTksNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5SW5pdGlhbENv
dW50KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1
dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigp
OwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDEyKTsKIAogICAg
IEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9u
Q291bnQpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlx
dWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6
OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQ
dHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAK
QEAgLTMxMiw3ICszMTIsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5
X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5n
ZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAt
MzIzLDcgKzMyMyw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfR2V0
VXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxp
bnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAg
ICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMzM3LDcgKzMz
Nyw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdS
YXdQb2ludGVyKQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVl
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0
ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAppbmRleCAxZTE2M2QzODk5
OGU2YmFiZmZmNTM4NDEzY2NhMjhhYTZkMjk4OTgyLi5hODBjYTc0OTRhOGY5YTc5NjdlMWU0OTQ2
ZmU4Y2NhNjM5Y2JiNThiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9IYXNoTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFw
LmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleSkK
IAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFr
ZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIG1hcC5hZGQoV1RG
TW92ZSh1bmlxdWVQdHIpLCAyKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIFRF
U1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAg
IEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0g
dW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApA
QCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9Db250YWlu
c1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBp
bnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI1NSw3ICsyNTUsNyBAQCBURVNUKFdURl9IYXNo
TWFwLCBVbmlxdWVQdHJLZXlfR2V0VXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8c3Rk
Ojp1bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdl
dCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjY5LDcgKzI2
OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50
ZXIpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yODksNyArMjg5LDcgQEAgVEVTVChXVEZf
SGFzaE1hcCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoTWFw
PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0
ciksIDIpOwogCkBAIC01NjMsMTIgKzU2MywxMiBAQCBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVf
VW5pcXVlUG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8
dW5zaWduZWQ+PiBtYXA7CiAgICAgewotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5lbnN1
cmUoMSwgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMSk7IH0pOworICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDEpOyB9KTsKICAgICAgICAgRVhQRUNU
X0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKmFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIGFkZFJlc3VsdC5p
dGVyYXRvci0+a2V5KTsKICAgICAgICAgRVhQRUNUX1RSVUUoYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwotICAgICAgICBhdXRvIGFkZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDIpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQy
ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazx1bnNpZ25lZD4oMik7IH0pOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICptYXAuZ2V0KDEp
KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqYWRkUmVzdWx0Mi5pdGVyYXRvci0+dmFsdWUuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIGFkZFJlc3VsdDIuaXRlcmF0b3ItPmtleSk7CkBA
IC01OTAsNiArNTkwLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1JlZlB0cikKIH0KIAog
Y2xhc3MgT2JqZWN0V2l0aFJlZkxvZ2dlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgT2JqZWN0V2l0aFJlZkxvZ2dlcihSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dl
cikKICAgICAgICAgOiBtX2xvZ2dlcihXVEZNb3ZlKGxvZ2dlcikpCkBAIC02MDQsNyArNjA1LDcg
QEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdFbnN1cmUoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiB7
CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFdpdGhSZWZMb2dn
ZXI+PiBtYXA7CiAgICAgCi0gICAgbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9KTsKKyAgICBt
YXAuZW5zdXJlKDEsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+
KFdURk1vdmUobG9nZ2VyKSk7IH0pOwogfQogCiB2b2lkIHRlc3RNb3ZpbmdVc2luZ0FkZChSZWY8
UmVmTG9nZ2VyPiYmIGxvZ2dlcikKQEAgLTYxMiw3ICs2MTMsNyBAQCB2b2lkIHRlc3RNb3ZpbmdV
c2luZ0FkZChSZWY8UmVmTG9nZ2VyPiYmIGxvZ2dlcikKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBz
dGQ6OnVuaXF1ZV9wdHI8T2JqZWN0V2l0aFJlZkxvZ2dlcj4+IG1hcDsKIAogICAgIGF1dG8mIHNs
b3QgPSBtYXAuYWRkKDEsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICBzbG90ID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOworICAg
IHNsb3QgPSBtYWtlVW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9nZ2VyKSk7
CiB9CiAKIFRFU1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9MYW1iZGFzQ2FwdHVyaW5nQnlSZWZlcmVu
Y2UpCkBAIC02ODMsNiArNjg0LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVmFsdWVJc0Rlc3RydWN0
ZWRPblJlbW92ZSkKIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVm
KQogewogICAgIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCByZWYoKQogICAgICAg
ICB7CiAgICAgICAgICAgICArK2NvdW50OwpAQCAtNjk3LDcgKzY5OSw3IEBAIFRFU1QoV1RGX0hh
c2hNYXAsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQogICAgICAgICBjb25zdCBEZXJlZk9i
c2VydmVyKiBvYnNlcnZlZEJ1Y2tldCB7IG51bGxwdHIgfTsKICAgICB9OwogCi0gICAgYXV0byBv
YnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAgICBhdXRvIG9i
c2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAgICAgSGFzaE1hcDxSZWZQ
dHI8RGVyZWZPYnNlcnZlcj4sIGludD4gbWFwOwogICAgIG1hcC5hZGQoYWRvcHRSZWYob2JzZXJ2
ZXIuZ2V0KCkpLCA1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAK
aW5kZXggNzFlY2ZkZGI4NDJiNmJkNTE2NDFjYTA1YjYxMDhhZDQ4ZjYyYmI3ZC4uODcyNjhjNzRm
MGNiOGZjMTQ5ZWJmNjBjODU4OGZjZWQzNTgxYTIwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaFNldC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBURVNUKFdURl9IYXNoU2V0
LCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlx
dWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAg
c2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0xNDQsNyArMTQ0
LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIp
CiB7CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRy
ID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApA
QCAtMTU4LDcgKzE1OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWlu
c1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBz
ZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4o
NSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3Zl
KHVuaXF1ZVB0cikpOwogCkBAIC0xNzEsNyArMTcxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5p
cXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlx
dWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlx
dWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xOTEs
NyArMTkxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1Bv
aW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQo
V1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMjgzLDYgKzI4Myw3IEBAIFRFU1QoV1RGX0hhc2hT
ZXQsIENvcHlDYXBhY2l0eUlzTm90T25Cb3VuZGFyeSkKIFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0
ck5vdFplcm9lZEJlZm9yZURlcmVmKQogewogICAgIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBORVZFUl9JTkxJ
TkUgdm9pZCByZWYoKQogICAgICAgICB7CiAgICAgICAgICAgICArK2NvdW50OwpAQCAtMjk3LDcg
KzI5OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURlcmVmKQog
ICAgICAgICBjb25zdCBEZXJlZk9ic2VydmVyKiBvYnNlcnZlZEJ1Y2tldCB7IG51bGxwdHIgfTsK
ICAgICB9OwogCi0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNl
cnZlcj4oKTsKKyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigp
OwogCiAgICAgSGFzaFNldDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4+IHNldDsKICAgICBzZXQuYWRk
KGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9MaXN0SGFzaFNldC5jcHAKaW5kZXggNjU3YmU0MWQ2MjA3MjQ0NjdhNTU0OWUyYWI1YTE5
NDFjNGUzNzNjMS4uYjc3MGE1YjI3YzFkMmIwOTVhNWJiNTlkNjVhYzNmNGRjNGU0ZTY4ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcApAQCAtMzgw
LDcgKzM4MCw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBM
aXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+
IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVu
aXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0zOTYsNyArMzk2LDcgQEAgVEVTVChXVEZfTGlz
dEhhc2hTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIExpc3RI
YXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVl
UHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTQxMCw3
ICs0MTAsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNp
bmdSYXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBs
aXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7Cisg
ICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+
KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSk7CiAKQEAgLTQyMSw5ICs0MjEsOSBAQCBURVNUKFdURl9MaXN0SGFzaFNl
dCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0
SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRy
V2l0aDIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMik7CisgICAgYXV0byB1bmlxdWVQdHJXaXRo
MiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMik7CiAgICAgYXV0byBw
dHJXaXRoMiA9IHVuaXF1ZVB0cldpdGgyLmdldCgpOwotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQg
PSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNCk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoNCA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNCk7CiAgICAgYXV0byBwdHJXaXRo
NCA9IHVuaXF1ZVB0cldpdGg0LmdldCgpOwogCiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHJXaXRoMikpOwpAQCAtNDM1LDcgKzQzNSw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlx
dWVQdHJLZXlfSW5zZXJ0QmVmb3JlVXNpbmdSYXdQb2ludGVyKQogICAgIEFTU0VSVF9FUShwdHJX
aXRoNCwgbGlzdC5sYXN0KCkuZ2V0KCkpOwogICAgIEFTU0VSVF9FUSg0LCAqbGlzdC5sYXN0KCku
Z2V0KCkpOwogCi0gICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IHN0ZDo6bWFrZV91bmlxdWU8aW50
PigzKTsKKyAgICBhdXRvIHVuaXF1ZVB0cldpdGgzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8aW50PigzKTsKICAgICBhdXRvIHB0cldpdGgzID0gdW5pcXVlUHRyV2l0aDMuZ2V0
KCk7CiAKICAgICBsaXN0Lmluc2VydEJlZm9yZShwdHJXaXRoNCwgV1RGTW92ZSh1bmlxdWVQdHJX
aXRoMykpOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQ
dHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlx
dWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+KCk7CiAgICAgYXV0byogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3Qu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0xvY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9j
ay5jcHAKaW5kZXggMmRjY2VkY2FkY2M2YzIyMjczZGViYzIwZjNmZjY3N2M4NzMyOTAyNy4uNWZk
MzFiZjFjOWFiZWNmYjhhYmU3MzU2MDhhNDdjNTYwNDMwNDc3MiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvTG9jay5jcHAKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IExvY2tJbnNwZWN0
b3IgewogdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiB2b2lkIHJ1bkxvY2tUZXN0KHVuc2ln
bmVkIG51bVRocmVhZEdyb3VwcywgdW5zaWduZWQgbnVtVGhyZWFkc1Blckdyb3VwLCB1bnNpZ25l
ZCB3b3JrUGVyQ3JpdGljYWxTZWN0aW9uLCB1bnNpZ25lZCBudW1JdGVyYXRpb25zKQogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9IHN0ZDo6bWFrZV91bmlxdWU8TG9j
a1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlW10+
IHdvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdy
b3VwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9ja3MgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxMb2NrVHlwZVtdPihudW1UaHJlYWRHcm91cHMpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxkb3VibGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJH
cm91cCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIHRocmVhZEdyb3VwSW5kZXggPSBudW1UaHJlYWRH
cm91cHM7IHRocmVhZEdyb3VwSW5kZXgtLTspIHsKICAgICAgICAgd29yZHNbdGhyZWFkR3JvdXBJ
bmRleF0gPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFy
a2luZ0xvdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNw
cAppbmRleCA0NTJlMjI3NzFkYzA2NGFkYWFmZTYyMGViMzNlODAxMzBmNzlmMTk3Li5lMDBhMDli
MmExN2FhNzM0ODU2ZTQyYzExNDVjYmU2MDg2M2YwYTA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0cnVjdCBT
aW5nbGVMYXRjaFRlc3QgewogCiB2b2lkIHJ1blBhcmtpbmdUZXN0KHVuc2lnbmVkIG51bUxhdGNo
ZXMsIHVuc2lnbmVkIGRlbGF5LCB1bnNpZ25lZCBudW1UaHJlYWRzLCB1bnNpZ25lZCBudW1TaW5n
bGVVbnBhcmtzKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRjaFRlc3RbXT4gdGVz
dHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8U2luZ2xlTGF0Y2hUZXN0W10+KG51bUxhdGNoZXMpOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBsYXRjaEluZGV4ID0gbnVtTGF0Y2hlczsgbGF0Y2hJbmRleC0tOykK
ICAgICAgICAgdGVzdHNbbGF0Y2hJbmRleF0uaW5pdGlhbGl6ZShudW1UaHJlYWRzKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKaW5kZXggMDgxZGY5ZTRm
YzFkMjUxZDgxNGIyMjY0YmQyZDBlMDUyYzBiZDQxZi4uZjRlZjk4M2IxYTlmYmU4OTgwN2M3NWFj
MjhmZGI2MjZkOWE5NmExMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVmQ291bnRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVm
Q291bnRlci5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBURVNUKFdURiwgUmVmQ291bnRlcikKIFRF
U1QoV1RGLCBSZWZDb3VudGVyRGVsZXRlQ291bnRlcldpdGhPdXRzdGFuZGluZ1Rva2VucykKIHsK
ICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBjb3VudGVyID0gbWFrZVVuaXF1
ZTxUZXN0Q291bnRlcj4oWyZdKFJlZkNvdW50ZXJFdmVudCBldmVudCkgewogICAgICAgICAgICAg
aWYgKCFjb3VudGVyLT52YWx1ZSgpKQogICAgICAgICAgICAgICAgIGNvdW50ZXIgPSBudWxscHRy
OwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1VuaXF1ZVJlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYu
Y3BwCmluZGV4IDRkMmIyMmFhNTRmOGIwMjU0ODBmNTllNTYxYTNjY2U3MTU1MDIzMTIuLjFhZmUz
ZTk3NzliYjg0ODg3ZTk0MzBkZTQxNzI2Yzc0Mzg1MzJmZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcApAQCAtMzAsOCArMzAsMTEgQEAKIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogICAgIAotY2xhc3MgQSB7IH07CitjbGFzcyBBIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK307CiBjbGFzcyBCIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCKGludCBhLCBpbnQgYiwgaW50IGMpCiAgICAgICAg
IDogYShhKQpAQCAtNDMsNiArNDYsNyBAQCBjbGFzcyBCIHsKICAgICBpbnQgYzsKIH07CiBjbGFz
cyBDIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDKFVuaXF1
ZVJlZjxBPiYmIGEpCiAgICAgICAgIDogYShXVEZNb3ZlKGEpKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9WYXJpYW50LmNwcAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1NGZmZmQzMzIxMzk1
ZTlmMWUyZDJhN2MyLi41MWVjYTA3NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5ZmY0ZmQ1NmJiIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAtMjEyLDcgKzIx
Miw3IEBAIFRFU1QoV1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKICAgICBDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7CiAKICAgICB7Ci0g
ICAgICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOworICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICAgICAgVmFyaWFudDxzdGQ6OnVuaXF1
ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gdiA9IFdURk1vdmUodW5p
cXVlUHRyKTsKIAogICAgICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
V2Vha1B0ci5jcHAKaW5kZXggMTUwYjliNzZjOGE1NjVlMzY1NTQ4MzZlMGJiZWMwNTA1Yzc4NDhm
Mi4uN2U2MzA2OTNlZWM2MDQxYTM3NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0
IEludCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnQ+IHsKIH07CiAKIGNsYXNzIEJhc2UgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEJhc2UoKSB7IH0KIApAQCAtNTc4LDEwICs1NzksMTAgQEAgVEVTVChX
VEZfV2Vha1B0ciwgV2Vha0hhc2hTZXRFeHBhbnNpb24pCiAgICAgICAgIEVYUEVDVF9FUSh3ZWFr
SGFzaFNldC5jYXBhY2l0eSgpLCAwdSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGluaXRpYWxDYXBh
Y2l0eSAvIG1heExvYWRDYXApOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5p
dGlhbENhcGFjaXR5IC8gbWF4TG9hZENhcDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0g
bWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3Qp
OwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAg
ICAgIG90aGVyT2JqZWN0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpKTsKKyAgICAg
ICAgICAgIG90aGVyT2JqZWN0cy5hcHBlbmQobWFrZVVuaXF1ZTxCYXNlPigpKTsKICAgICAgICAg
ICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKICAgICAgICAgfQogICAgICAgICBF
WFBFQ1RfRVEoc19iYXNlV2Vha1JlZmVyZW5jZXMsIG90aGVyT2JqZWN0cy5zaXplKCkpOwpAQCAt
NjE1LDcgKzYxNiw3IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQog
ICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICB1
bnNpZ25lZCBvYmplY3RDb3VudCA9IGluaXRpYWxDYXBhY2l0eSAqIDI7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRv
IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2Jq
ZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpv
YmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAg
ICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTY2NywxMCArNjY4
LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZXNFbXB0eSkKICAgICB7
CiAgICAgICAgIFdlYWtIYXNoU2V0PEJhc2U+IHdlYWtIYXNoU2V0OwogICAgICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJhc2U+PiBvYmplY3RzOwotICAgICAgICBhdXRvIGZpcnN0T2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0g
bWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0
KTsKICAgICAgICAgZG8gewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4o
KTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9i
amVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAgIH0gd2hpbGUgKHdlYWtIYXNo
U2V0LmJlZ2luKCkuZ2V0KCkgPT0gZmlyc3RPYmplY3QuZ2V0KCkpOwpAQCAtNzM0LDggKzczNSw4
IEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAKICAgICB3aGls
ZSAoMSkgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKLSAgICAgICAg
YXV0byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKLSAgICAgICAgYXV0
byBsYXN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZp
cnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGxhc3RPYmplY3Qg
PSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqZmlyc3RPYmpl
Y3QpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmxhc3RPYmplY3QpOwogICAgICAgICBpZiAo
d2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSAhPSBmaXJzdE9iamVjdC5nZXQoKSkKQEAgLTc1OSwx
MCArNzYwLDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAg
ICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBub25GaXJz
dE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBub25GaXJz
dE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpu
b25GaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAg
ICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdo
aWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IG5vbkZpcnN0T2JqZWN0LmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZm
ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5j
cHAKaW5kZXggMmFhYjY1ZGQ4ZmQ3ZWYwNzA1MWZiNmY3NTY3NThjZGU3MDJlMDdhMS4uODFkN2Jh
MjkxYWU5ZjRhYjdjZjJlNWY5YWFkNjJjOTQyNDM1MzY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgQ0FSaW5nQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKQogICAgIHsKICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZCgpOwotICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1
ZmZlcj4oKTsKKyAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Q0FSaW5nQnVmZmVyPigpOwogICAgIH0KIAogICAgIC8vIENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbihkb3VibGUgc2FtcGxlUmF0ZSwgVUludDMyIG51bUNoYW5uZWxzLCBQQ01Gb3Jt
YXQgZm9ybWF0LCBib29sIGlzSW50ZXJsZWF2ZWQsIHNpemVfdCBjYXBhY2l0eSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNw
cAppbmRleCA3NzhlNjE1NWYwNmNjMTI4Mzk3OTc1ZjA0NTg3MTJhMmM3MTA0MGZhLi5kY2E0NjM2
MDJlOTZkNjBhMDQ1MTM4MTIxY2JiZGNlZmJlZTllNWMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHN0YXRpYyB1bnNpZ25lZCBkZWxl
dGlvbkNvdW50OwogCiBjbGFzcyBDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMg
V2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25Ob2RlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUoKQog
ICAgIHsKQEAgLTUyLDcgKzUzLDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2Rl
IDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CiAKIHN0YXRpYyBSZWY8V2Vi
Q29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsKLSAgICBhdXRvIG5v
ZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKKyAg
ICBhdXRvIG5vZGUgPSBtYWtlVW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsK
ICAgICByZXR1cm4gV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUobm9k
ZSksIFdlYkNvcmU6OlZhbHVlUmFuZ2VBbGwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCmluZGV4IGY1
OGRhOGE0MjA3M2VjOTliYmVlMzRhODViZWMzNGMwODVjNTJhNjQuLjBjMWEwNjlmMTNjMzljNDA5
ZTVkNWUxYjAzYTdlOTJiZjliMzY2YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBAIC00OCwxMCArNDgs
MTAgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRTaXplKQogICAgIHVpbnQz
Ml90IGNoYW5uZWxJZCA9IDB4MDUwNjA3MDg7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAK
LSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0
PihjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+
KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxG
aWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQs
IFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIEVYUEVDVF9FUSg2NHUs
IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKIAotICAgIGF1dG8gY29u
dGludWF0aW9uUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFj
a2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGludWF0aW9u
UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQs
IDAsIFdURk1vdmUoZGF0YSkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGNvbnRpbnVhdGlvblBhY2tl
dC0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCkpOwogfQogCkBAIC03MCw3ICs3MCw3IEBAIFRF
U1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YSkKICAgICB1aW50MzJfdCBjaGFu
bmVsSWQgPSAweEY1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9Owog
ICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2lu
azsKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFj
a2V0PihjaGFubmVsSWQsIGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7
CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hh
bm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIHNp
emVfdCBpbmRleCA9IDA7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZCA9IGluaXRQ
YWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CkBAIC05NCw3ICs5NCw3IEBAIFRFU1QoRmlkb0hp
ZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprV2luazsKICAgICBzaXplX3QgbGVuZ3RoID0gZGF0YS5zaXplKCk7Ci0g
ICAgYXV0byBvcmlnUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4o
Y2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CisgICAgYXV0byBvcmlnUGFj
a2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1v
dmUoZGF0YSksIGxlbmd0aCk7CiAKICAgICBzaXplX3QgcGF5bG9hZExlbmd0aCA9IHN0YXRpY19j
YXN0PHNpemVfdD4ob3JpZ1BhY2tldC0+cGF5bG9hZExlbmd0aCgpKTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gb3JpZ0RhdGEgPSBvcmlnUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXgg
MWVkMTMyOGY4MTMwOWUxMmUxMzcxY2IzYWRmZTZiMGE5NzgzZWViNi4uMjI4MzgzYTBmMzBhOWIx
MzlmNmFhZjQzZjk1Y2VkZDgwOTE2NmU2YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgVEVTVF9G
KEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBX
b3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVl
LmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAg
YXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRl
c3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmlj
YXRpb246CkBAIC0xOTAsNyArMTkwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0
TXVsdGlwbGVDaGFuZ2VzKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0
ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10g
KEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0g
bWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVm
KCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAg
IGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yNTAs
NyArMjUwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRpb24pCiAKICAg
ICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsK
IAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBG
aWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9y
Pih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpG
aWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6Rmls
ZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTI4OSw3ICsyODksNyBAQCBURVNUX0YoRmls
ZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQogCiAgICAgYXV0byB0ZXN0
UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRv
IG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwg
dGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBl
KSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQ
YXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5
cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMzQ2LDcgKzM0Niw3IEBAIFRFU1RfRihGaWxlTW9uaXRv
clRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAKICAgICBhdXRvIHRl
c3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1
dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgp
LCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5
cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmls
ZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlOjpNb2RpZmljYXRpb246CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDkyZDhhMTkyY2E3YjJhMTA4MTU2NTk5N2Iw
ZWE1YjFmOWFlYThmNjUuLjIxOWU5NjZkYmViYWE4NGQzNjAyNzIyZTk1OWUzMmY2NGZiNGRiMmUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tp
ZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tp
ZXMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEN1cmxDb29raWVzOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CiAgICAgewogICAgICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwogCi0gICAgICAgIG1fY29va2llSmFyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOworICAg
ICAgICBtX2Nvb2tpZUphciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tp
ZWRiLnNxbCIpKTsKICAgICAgICAgbV9jb29raWVKYXItPm9wZW4oKTsKICAgICAgICAgbV9jb29r
aWVKYXItPnNldEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5cyk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9t
V2l0aGluQ3JlYXRlUGFnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9D
bG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAppbmRleCA1YzBhZTMzMTMyOGIzNmIwYmE3MGEx
OGQ5OTM2Njk0MTJhY2EyOWE5Li5iM2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5ZGRhMTIxMmYxOTMyYTBk
MjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZy
b21XaXRoaW5DcmVhdGVQYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0
aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJl
ZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0g
bnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3Jt
V2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1l
bXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCmluZGV4IGE0ZmJhMTI3
YzZlNGQwM2U2M2Q5YTgxNzJhMzliM2NiOGIxNDcyYzcuLjdiYzM1MjRmMmJkYjlkYmQ3YTQzNWEz
Y2M2YWQzODMyZTk0NGVkZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgV0tQ
YWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxS
ZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0
cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZp
ZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmll
dz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgm
dWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5k
RWRpdGluZy5jcHAKaW5kZXggMGY3ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4MDM4ZDE5MjIxZWRiZjdk
NS4uY2QxOWQ3Y2RlNTg4OTYyNWYxMjIxMmZjNzUzY2ZkNTVlMjc4ZDkyMyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRF
ZGl0aW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0Rmll
bGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBXZWJL
aXQyVGV4dEZpZWxkQmVnaW5BbmRFZGl0RWRpdGluZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpU
ZXN0IHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRX
SyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJUZXh0RmllbGREaWRC
ZWdpbkFuZEVuZEVkaXRpbmdFdmVudHNUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJW
aWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAg
ICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAg
ZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvVXNlck1lc3NhZ2UuY3BwCmluZGV4IGM3YjAyNTFiZmNmMjFhYTRhYmQxMTRjODU1MDc5
MjQxZDY2MTc0ZTkuLjlkYzNhNmRhOTk1MDljMjcxMTIxZDRjM2E0NTMwODRmZWU5ODliZDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgV2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdCA6
IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGls
OjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJVc2VyTWVzc2FnZVRlc3QiKSk7
CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwog
Ci0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29u
dGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmll
dz4oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy0+
cGFnZSgpLCB0aGlzKTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKaW5kZXggZWQ5ZjBmZmM3
MDI1YWIxMmNiNTM5NjdmNzIwNWZmOTZjODliZTY5OS4uNTJmMThkY2ViNDJkNTFhYzA4Mzk1YjYy
MDAxZDRhOTU0MGY3NDUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvV2lsbExvYWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L1dpbGxMb2FkLmNwcApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBXZWJLaXQyV2lsbExvYWRUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnRleHQgPSBhZG9wdFdLKFV0
aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIldpbGxMb2FkVGVzdCIpKTsK
ICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAK
LSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250
ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3
Pihjb250ZXh0LmdldCgpKTsKIAogICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZhbHNlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9G
b3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5t
bQppbmRleCBhZWJhMWMzNDhmYmM2NmExNzBlNTM5ZTBhNzI4NmFlZTkxNTNlNjA0Li4yOTFhNDc4
YTI3ODQyNDJkYWQ0NWEzYThmMTczOTA1ZDdkM2IyZjIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9C
dW5kbGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNl
TGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5
KHNjcmlwdENvbnRleHQsIHJlc3VsdCwgbnVsbHB0cikpOwogCiAgICAgICAgIGF1dG8gYnVmZmVy
U2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShyZXN1bHRTdHJpbmcuZ2V0
KCkpOwotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZm
ZXJTaXplKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKHJlc3VsdFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAg
ICAgICBXS0J1bmRsZVBhZ2VTZXRVc2VEYXJrQXBwZWFyYW5jZShtX3BhZ2UsIHRydWUpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50
aWNhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1
dGhlbnRpY2F0aW9uLmNwcAppbmRleCBkNmNjMmZiMjQ3ZTU2MjA2Njk3NzYxMGIyNTY3OWI3ZWQx
ZGNjOGJhLi43YzhjOGI1MjE1NGFjNGViMDk4ZTY5NTE3OTA2OWEwNWViZGM2NmFjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0
aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1
dGhlbnRpY2F0aW9uLmNwcApAQCAtMjU2LDYgKzI1Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3QXV0aGVudGljYXRpb25FbXB0eVJlYWxtKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2Nv
bnN0CiB9CiAKIGNsYXNzIFR1bm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgVHVubmVsKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3Nh
Z2UpCiAgICAgICAgIDogbV9zZXJ2ZXIoc2VydmVyKQpAQCAtMjk5LDcgKzMwMCw3IEBAIHN0YXRp
YyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1l
c3NhZ2UsIGNvbnN0IGNoYXIqCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01F
VEhPRF9DT05ORUNUKSB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoc291cF9zZXJ2ZXJfZ2V0
X3BvcnQoc2VydmVyKSwgPT0sIGdQcm94eVNlcnZlclBvcnQpOwotICAgICAgICBhdXRvIHR1bm5l
bCA9IHN0ZDo6bWFrZV91bmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOworICAgICAgICBh
dXRvIHR1bm5lbCA9IG1ha2VVbmlxdWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOwogICAgICAg
ICBhdXRvKiB0dW5uZWxQdHIgPSB0dW5uZWwuZ2V0KCk7CiAgICAgICAgIHR1bm5lbFB0ci0+Y29u
bmVjdChbdHVubmVsID0gV1RGTW92ZSh0dW5uZWwpXShjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2Up
IHsKICAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsKQEAgLTM5NCw3ICszOTUsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHkoUHJveHlBdXRoZW50aWNh
dGlvblRlc3QqIHRlc3QsIGdjb25zdAogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRp
Y2F0aW9uUHJveHlIVFRQUyhQcm94eUF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIHsKLSAgICBhdXRvIGh0dHBzU2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRU
ZXN0U2VydmVyPihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7CisgICAgYXV0byBodHRw
c1NlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6
U2VydmVySFRUUFMpOwogICAgIGh0dHBzU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOwogCiAg
ICAgdGVzdC0+bG9hZFVSSShodHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Byb3h5L2F1dGgt
dGVzdC5odG1sIikuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNiMDVjZDRiYzAyN2UxMmQx
MTAzZmFmNmEwMDdhYzZmNDBmMy4uYjZiNzI4ZTQ1ZTA5YzUxYTZkNmJhOTliZjcxN2UxOTVlOWEw
ZTBjMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dl
YlByb2Nlc3NUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1dlYlByb2Nlc3NUZXN0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNlbmRpZgogCiBjbGFzcyBXZWJQ
cm9jZXNzVGVzdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChj
b25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSopID0gMDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAK
aW5kZXggMTI1NjI0MTk2YTcxYzZkM2FkNWJjZGQyOWYxNDJiODZhYmI5ZmQxMS4uZTQwMDA3NjMz
ZjIzNjI0MDUyOWRmNTRhZTg2MzIwODdiZDM2OTUyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAgc3RhdGljIGdib29sZWFuIGNsaWNrZWRDYWxsYmFjayhXZWJLaXRET01ET01X
aW5kb3cqLCBXZWJLaXRET01FdmVudCosIFdlYktpdERPTUQKIAogY2xhc3MgV2ViS2l0RE9NRE9N
V2luZG93VGVzdCA6IHB1YmxpYyBXZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxX
ZWJLaXRET01ET01XaW5kb3dUZXN0PigpOyB9CiAKIHByaXZhdGU6CiAgICAgZ3VpbnQ2NCB3ZWJQ
YWdlRnJvbUFyZ3MoR1ZhcmlhbnQqIGFyZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggOGQyZWU4YWQxNmNhZDY3OTU2
OGVkOWI2ZDc1Y2VjZDgyMTUwZmVkYi4uMzQ5MGVmMWNlYjZmMTc4MDUwMmYwY2RjOTE5Yzk3MWUy
OTJiZTkwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0
aWxpdGllc0NvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1V
dGlsaXRpZXNDb2NvYS5tbQpAQCAtMzgsNyArMzgsNyBAQCBzdGQ6OnN0cmluZyB0b1NURChOU1N0
cmluZyAqc3RyaW5nKQogICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIAogICAgIHNpemVf
dCBidWZmZXJTaXplID0gW3N0cmluZyBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ107Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIE5TVUludGVnZXIgc3RyaW5nTGVu
Z3RoOwogICAgIFtzdHJpbmcgZ2V0Qnl0ZXM6YnVmZmVyLmdldCgpIG1heExlbmd0aDpidWZmZXJT
aXplIHVzZWRMZW5ndGg6JnN0cmluZ0xlbmd0aCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
ZyBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSByZW1haW5p
bmdSYW5nZTowXTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdM
ZW5ndGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4
IDU0NmNhNmUyMjJkOWZlYTgxY2U3YmU0ZTJjMmQzOTg1YzViNDRmMGYuLjI0NzU3Mjg5OGI2YTg3
OWM3YTM2YjRmYzY1YjkxNTMzMDQ3MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVdv
cmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCkK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IHN3aXp6bGVy
OwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgc3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENs
YXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdy
aXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JU
RkQpKTsKKyAgICAgICAgc3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+
KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZp
ZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlk
ZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKICAgICB9KTsKIH0K
IApAQCAtMzQ3LDcgKzM0Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1Jl
Y3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9u
Y2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NTIwND4gaXMgZml4ZWQuCi0gICAgX3NoYXJlZENh
bGxvdXRCYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4o
W1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CisgICAgX3NoYXJlZENhbGxv
dXRCYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91
dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CiAgICAgX2lucHV0U2Vzc2lvbkNoYW5nZUNv
dW50ID0gMDsKICAgICBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJp
bmdzVG9JdGVtUHJvdmlkZXJzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaAppbmRleCA2OTBmMGE3NzU2
Y2ZlM2FmYjA3ZDkwYmVlZmYwOTU3OGIyZmM1NWRlLi4yODE0NTI3ZjE5Yjk1NGY4MmFlYjg3YmMw
ZTRjOGRjMGI5YTdmNWI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBjbGFzcyBXZWJLaXRUZXN0U2VydmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIGVudW0gU2VydmVyT3B0aW9u
cyB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KaW5kZXggODYy
NjM1NDQzMzVhN2Y1ZDk3MWI1ZGMwZDI1OWU1NWRjMGQ3M2M2Ni4uNGJkZTZjNTEwMGQyYmQ2ZmU0
YmI5MGZhY2JlMjVkMzM5YTUwNTRiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvVGVzdEZvbnRPcHRpb25zLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RG
b250T3B0aW9ucy5tbQpAQCAtODQsNyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhG
b250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCiAKICAgICBfc2hhZG93T2Zm
c2V0ID0gQ0dTaXplWmVybzsKICAgICBfc2hhZG93Qmx1clJhZGl1cyA9IDA7Ci0gICAgX3JlcGxh
Y2VGb250T3B0aW9uc1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6
bGVyPihOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJl
ZEZvbnRPcHRpb25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNoYXJlZEZvbnRPcHRpb25zRm9y
VGVzdGluZykpOworICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8
Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiks
IEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFy
ZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKICAgICBfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMg
PSBOTzsKICAgICBfaGFzTXVsdGlwbGVGb250cyA9IE5POwogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4IDE1MzIyMTgyNjk5ZTBlYTMwNzU0YTAyMjZjM2E3
YjYyOTU5NzZkMDAuLjExMzk5YjM5MGZlOTE3MGY2YzUyNTI3NWFjMjM0NTgyZGFmNzUwZjggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC01NCw2ICs1NCw3
IEBAIHN0cnVjdCBXVFJFdmVudFF1ZXVlSXRlbTsKICNlbmRpZgogCiBjbGFzcyBFdmVudFNlbmRl
clByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBFdmVudFNlbmRlclByb3h5KFRlc3RDb250cm9sbGVyKik7CiAgICAgfkV2ZW50U2VuZGVy
UHJveHkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Q
cm92aWRlck1vY2suaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRl
ck1vY2suaAppbmRleCA3ZDk0NWQ2N2VjNjc1MGJlNzA2NDM1YTJhNmIzYzc0ZDFhZDE3NDNjLi4x
ZWQ0YWRmOWIzOTM5M2EzMzNhYTMyNTEwOTdiOWUzYWE0MmNjMzZiIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCkBAIC0yNywxMCArMjcs
MTIgQEAKICNkZWZpbmUgR2VvbG9jYXRpb25Qcm92aWRlck1vY2tfaAogCiAjaW5jbHVkZSA8V2Vi
S2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNw
YWNlIFdUUiB7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayhX
S0NvbnRleHRSZWYpOwogICAgIH5HZW9sb2NhdGlvblByb3ZpZGVyTW9jaygpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5oCmluZGV4IGUxMjA3ZmNlZmJkNjk2MjZkODhhZDhmNmNlZGIwYjUy
NmJiMmRlNTMuLjIyYWM5NDc3Mzk1YjE5ZThkZmM4ZGYxNzk0YWQ0MmVkOGY1NzZkOTAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaWYgVVNFKEFUSykKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVy
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHAKaW5kZXggMWY5ZDNlZmM5NjRmYjEzNzdiYzY2M2MwMTYwYzM0YTg4YjIz
MjhhNi4uYzlhNTJjMTVmNzcwODMwNjgzYzhlZmY2ODk0MjliZDBiYzFmNTY0NSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCkBAIC02MTIsNiArNjEyLDcgQEAgdm9pZCBFdmVudFNl
bmRpbmdDb250cm9sbGVyOjptb25pdG9yV2hlZWxFdmVudHMoKQogfQogCiBzdHJ1Y3QgU2Nyb2xs
Q29tcGxldGlvbkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIEpTQ29udGV4dFJlZiBtX2NvbnRleHQ7CiAgICAgSlNPYmplY3RSZWYgbV9mdW5j
dGlvbjsKIApAQCAtNjQ3LDcgKzY0OCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsCiAgICAg
CiAgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAK
LSAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tP
YmplY3QpOworICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSA9IG1ha2VVbmlx
dWU8U2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YT4oY29udGV4dCwgZnVuY3Rpb25DYWxsYmFj
a09iamVjdCk7CiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyID0gc2Ny
b2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YS5yZWxlYXNlKCk7CiAgICAgYm9vbCBjYWxsYmFja1dp
bGxCZUNhbGxlZCA9IFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlv
bkNhbGxiYWNrKHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNr
RGF0YVB0cik7CiAgICAgaWYgKCFjYWxsYmFja1dpbGxCZUNhbGxlZCkgewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAppbmRleCA3MTE2Y2M5ODE1NjY5ZDk0OTRkYmY4ZGU0OGJhZWVjZDYzNzRjMzc2Li44M2IyYjMw
YjEzMzJlYzc3YmZlZmNjMjlmZGQxYTJlNDgzY2I1ZjIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5kbGVS
ZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiB2b2lkIEluamVjdGVkQnVu
ZGxlOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewogICAgIGJvb2wgaXNN
YWluUGFnZSA9IG1fcGFnZXMuaXNFbXB0eSgpOwotICAgIG1fcGFnZXMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7CisgICAgbV9wYWdlcy5hcHBlbmQo
bWFrZVVuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+KHBhZ2UpKTsKIAogICAgIHNldFVwSW5qZWN0
ZWRCdW5kbGVDbGllbnRzKHBhZ2UpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA1OWQzZTFi
MGQwMmUyMmM1MmZhNzY1NDMzMjljMjNmNmI2MmEzODlhLi5iMzIzYzI1MDQ0ZjU1MDM2MDc2ZjQ4
ZWRkZDQ3YmNlYWEzZTIwZjE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTM0LDYgKzM0LDcg
QEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2UgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlUGFnZShX
S0J1bmRsZVBhZ2VSZWYpOwogICAgIH5JbmplY3RlZEJ1bmRsZVBhZ2UoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4
IDE4NjBmMTY5ZTUyYWMxMjU5M2ZhZWUwZTQ2ZTJkMDUwNDhkYTE2YmQuLjcyMDZiMDgyNTA2NWEw
MDczMDczY2E4YjUwOGQzYjRmYTIyMzQzNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjM5MSw3ICsyMzkxLDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmIGZpbGVzVmFs
dWUpCiAKICAgICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBmaWxlVmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXpl
ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAg
ICAgICAgYXV0byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZm
ZXJTaXplKTsKKyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0
VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUp
OwogCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGZpbGVVUkxzLmdldCgpLCBhZG9wdFdLKFdL
VVJMQ3JlYXRlV2l0aEJhc2VVUkwobV90ZXN0VVJMLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpKSku
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRl
eCAwZTVjMDdjYTcyOWI2ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMyYzAwMTdjLi4xOGU1N2QyZmNmNjI5
NzY3YTczMjk3OWJjMmVkYzU3YWNmMTA5Y2UyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRrLmNwcApAQCAtNzMwLDcgKzczMCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IGNvbnZlcnRUb0pTT2JqZWN0QXJyYXkoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtCiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNj
cmlwdENvbnRleHQobWFpbkZyYW1lKTsKIAogICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBjaGls
ZHJlbi5zaXplKCk7Ci0gICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxK
U1ZhbHVlUmVmW10+KGVsZW1lbnRDb3VudCk7CisgICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyBpKyspCiAgICAgICAg
IHZhbHVlRWxlbWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29udGV4dCwgY2hpbGRyZW5baV0tPndy
YXBwZXJDbGFzcygpLCBjaGlsZHJlbltpXS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGY3NGNjMmQzOTNkNTMwNWZkMzY2NWJiMGUwYTM1NTE4
NDQ3MzEwOWYuLmNhNGZkYmQ3MjIxNWFmNDhiZGE5NjdkNWJjYWI0ODE1NmJhZGNjNzEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgIWRlZmluZWQoQlVJTERJTkdf
R1RLX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgpAQCAtNjQsNiArNjUsNyBA
QCB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogUGxhdGZvcm1JbWFnZTsKIG5hbWVzcGFjZSBXVFIg
ewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFBsYXRmb3JtV2ViVmlldyhXS1dl
YlZpZXdDb25maWd1cmF0aW9uKiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCmluZGV4IGRhZjE0Y2E3MDU0ODZiZmMyMDY0MzEyM2Rl
NTA5MWI3OWU1ZDAxMzEuLmJiYTE3YzJlZmZiMDk2NjVlZmMyOGVlYjY5ZTcyMzI5YjFkNjliNzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaApAQCAtNzMsNyArNzMs
NyBAQCBpbmxpbmUgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRvSlMoY29uc3QgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+JiBzdHJpbmcpCiBpbmxpbmUgc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJp
bmdSZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhp
bXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBz
dHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgp
LCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJp
bmdMZW5ndGggLSAxKTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIHRv
U1REKGNvbnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIFdURjo6
U3RyaW5nIHRvV1RGU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAg
IGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAg
IGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihi
dWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0
cmluZ05vblN0cmljdChzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0
dXJuIFdURjo6U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCks
IHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCA4ZTczM2JlZWQ4MGQ0YTA1ZTM1ZTNjMGVmMzEyYzM5ZWY0ZGQzMzUzLi44
ODFiMzA5YTcyNWNjYTgwZmYzODE4MmYwY2E3OTM5YWZkZjJhMDA0IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllciA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdFRlc3RSdW5uZXJQYWdlR3JvdXAi
KSk7CiAgICAgbV9wYWdlR3JvdXAuYWRvcHQoV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmll
cihwYWdlR3JvdXBJZGVudGlmaWVyLmdldCgpKSk7CiAKLSAgICBtX2V2ZW50U2VuZGVyUHJveHkg
PSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOworICAgIG1fZXZlbnRT
ZW5kZXJQcm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CiB9CiAKIFdL
UmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5l
cmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zOjpDb250ZXh0T3B0aW9u
cyYgb3B0aW9ucykgY29uc3QKQEAgLTUyMSw3ICs1MjEsNyBAQCBXS1JldGFpblB0cjxXS1BhZ2VD
b25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlv
bihjbwogICAgICAgICBtX2NvbnRleHQgPSBwbGF0Zm9ybUFkanVzdENvbnRleHQoYWRvcHRXSyhX
S0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQo
KSkpLmdldCgpLCBjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fY29udGV4
dE9wdGlvbnMgPSBvcHRpb25zLmNvbnRleHRPcHRpb25zOwogCi0gICAgICAgIG1fZ2VvbG9jYXRp
b25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1f
Y29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IG1ha2VVbmlx
dWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGlu
ZygpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9t
VVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwpAQCAtOTUyLDcgKzk1Miw3IEBAIGJvb2wgVGVzdENv
bnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbnMsIFJlCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsc28gZW5z
dXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVzZXQgdGhl
IEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVy
UHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogCiAgICAgLy8gRklY
TUU6IElzIHRoaXMgbmVlZGVkPyBOb3RoaW5nIGluIFRlc3RDb250cm9sbGVyIGNoYW5nZXMgcHJl
ZmVyZW5jZXMgZHVyaW5nIHRlc3RzLCBhbmQgaWYgdGhlcmUgaXMKICAgICAvLyBzb21lIG90aGVy
IGNvZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlc3BvbnNpYmxlIGZvciBj
bGVhbnVwIHRvby4KQEAgLTEyMzUsMTEgKzEyMzUsMTEgQEAgc3RhdGljIFdLVVJMUmVmIGNyZWF0
ZVRlc3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNo
YXJbXT4gYnVmZmVyOwogICAgIGlmIChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7Cisg
ICAgICAgIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4o
cHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCks
IGZpbGVQcmVmaXgpOwogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3Ro
LCBwYXRoT3JVUkwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAx
IGZvciB0aGUgcGF0aFNlcGFyYXRvcgorICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KHByZWZpeExlbmd0aCArIFBBVEhfTUFYICsgbGVuZ3Ro
ICsgMik7IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCiAgICAgICAgIHN0cmNweShidWZmZXIu
Z2V0KCksIGZpbGVQcmVmaXgpOwogICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBw
cmVmaXhMZW5ndGgsIFBBVEhfTUFYKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY0OSw3
ICsxNjQ5LDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cnVuVGVzdChjb25zdCBjaGFyKiBpbnB1
dExpbmUpCiAgICAgVGVzdE9wdGlvbnMgb3B0aW9ucyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21t
YW5kKTsKIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0soY3JlYXRl
VGVzdFVSTChjb21tYW5kLnBhdGhPclVSTC5jX3N0cigpKSk7Ci0gICAgbV9jdXJyZW50SW52b2Nh
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRp
b25zKTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gbWFrZVVuaXF1ZTxUZXN0SW52b2NhdGlv
bj4od2tVUkwuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBp
eGVscyB8fCBtX3Nob3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+c2V0SXNQaXhlbFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CkBA
IC0yOTYxLDcgKzI5NjEsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5U
ZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJikKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKKyAgICBt
X21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24s
IG9wdGlvbnMpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDI4YWQxZWQ4OGE2
M2Y3YmQ2YWYxZGQ1OTlhYmYyMDA2MzQ4NmVmZmIuLmEzODZlOWI4MmI0NWZhNTA5MzY2MGI5NTEw
NGFlN2M2ZGZiZmNkMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCkBAIC0xNjg1LDcgKzE2ODUsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVT
Y3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0LCB1bnNpZ25lZCBzY3JpcHRDYWxsYmFjawogICAgIG1f
cGVuZGluZ1VJU2NyaXB0SW52b2NhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX1VJ
U2NyaXB0Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9
IG1ha2VVbmlxdWU8VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAgICAgCiAgICAgbV9VSVNjcmlw
dENvbnRleHQtPnJ1blVJU2NyaXB0KHRvV1RGU3RyaW5nKHNjcmlwdCksIHNjcmlwdENhbGxiYWNr
SUQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDc4ODBk
ZDhkZjU1MmZjOWQ4MmI5NGQxZDJmMmRkZmQ2ZGY4MmVjMmIuLjg1YjFiMDIwNmViODkyMjZlODZj
NmI0MWFiOTNlNWRiOTVlYmZkOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmgKQEAgLTQwLDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0SW52
b2NhdGlvbiBmaW5hbCA6IHB1YmxpYyBVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGVzdEludm9j
YXRpb24pOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRlc3RJbnZvY2F0aW9uKFdLVVJMUmVmLCBj
b25zdCBUZXN0T3B0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDBmYmY4ZWE1MjNkMzQ4ZDI1NmVjYzUyMzA0
MmRlYTAyZmVjZGQxZGMuLjBlYmY3YmZkMDAzOWY0ZWY4MDkzMmMxZWI1MTkyZmY1NGVlM2M0YTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJD
b2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW0KQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAg
ICAgICBbY29waWVkQ29uZmlndXJhdGlvbiBfc2V0QXBwbGljYXRpb25NYW5pZmVzdDpbX1dLQXBw
bGljYXRpb25NYW5pZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046dGV4dCBtYW5pZmVz
dFVSTDpuaWwgZG9jdW1lbnRVUkw6bmlsXV07CiAgICAgfQogCi0gICAgbV9tYWluV2ViVmlldyA9
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdl
dCgpLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KGNvcGllZENvbmZpZ3VyYXRpb24uZ2V0KCksIG9wdGlvbnMpOwogICAgIGZpbmlzaENy
ZWF0aW5nUGxhdGZvcm1XZWJWaWV3KG1fbWFpbldlYlZpZXcuZ2V0KCksIG9wdGlvbnMpOwogCiAg
ICAgaWYgKG9wdGlvbnMucHVuY2hPdXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSkKQEAgLTIy
Niw3ICsyMjYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBl
KE5TU3RyaW5nICppZGVudGlmaWVyKQogewogICAgIG1fb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRp
ZmllciA9IGlkZW50aWZpZXI7CiAgICAgaWYgKCFtX2NhbGVuZGFyU3dpenpsZXIpCi0gICAgICAg
IG1fY2FsZW5kYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxl
cj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsKKyAgICAgICAgbV9jYWxlbmRhclN3
aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNDYWxlbmRhciBjbGFz
c10sIEBzZWxlY3RvcihjdXJyZW50Q2FsZW5kYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dp
enpsZWRDYWxlbmRhcikpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldENvbnRlbnRF
eHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50
U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5k
ZXJQcm94eUd0ay5jcHAKaW5kZXggZGU1NzhmNzNmYzM2ZWNkMTU4OWM5OWY4ZGJmOGZjY2MzOTg3
YjQyZS4uZWY5ZTM4ZTcyM2JhYTk1ZGZmZTcwZWM1YTg3NWNmZWM4NGUzMjg3NyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAg
LTI3MSw3ICsyNzEsNyBAQCBpbnQgZ2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtl
eVJlZiwgdW5zaWduZWQgbG9jYXRpb24sIGd1aW50KiBtb2RpZmllcgogICAgICAgICByZXR1cm4g
R0RLX0tFWV9GMTI7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShrZXlSZWYpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBXS1N0cmluZ0dl
dFVURjhDU3RyaW5nKGtleVJlZiwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBjaGFy
IGNoYXJDb2RlID0gYnVmZmVyLmdldCgpWzBdOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCmluZGV4IDZhNjFkZjhlMzVkNmZhMDhjOGIxNGM1
MWE4MjNjNjJkMDgwNWQ0ZDIuLmYzYzQxN2M3ZmI3Y2FhNGRlNDc3N2M3YTQ5NGY1M2FmMzJhMThi
ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVy
SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9T
Lm1tCkBAIC0xNTEsOCArMTUxLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNl
dFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKIAogICAgIG1f
cHJlc2VudFBvcG92ZXJTd2l6emxlcnMuY2xlYXIoKTsKICAgICBpZiAoIW9wdGlvbnMuc2hvdWxk
UHJlc2VudFBvcG92ZXJzKSB7Ci0gICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRy
b2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNv
bXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250
cm9sbGVyT3JQb3BvdmVyKSkpOwotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJD
b250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3
OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CisgICAgICAgIG1f
cHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RT
d2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdD
b250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNl
bnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenps
ZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVy
RnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIp
KSk7CiAgICAgfQogICAgIAogICAgIEJPT0wgc2hvdWxkUmVzdG9yZUZpcnN0UmVzcG9uZGVyID0g
Tk87CkBAIC0yNjksOSArMjY5LDkgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0S2V5Ym9hcmRJ
bnB1dE1vZGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogICAgIGF1dG8g
Y29udHJvbGxlckNsYXNzID0gVUlLZXlib2FyZElucHV0TW9kZUNvbnRyb2xsZXIuY2xhc3M7CiAg
ICAgbV9pbnB1dE1vZGVTd2l6emxlcnMucmVzZXJ2ZUNhcGFjaXR5KDMpOwotICAgIG1faW5wdXRN
b2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0
aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUp
LCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAg
bV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
dGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElu
cHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVu
dElucHV0TW9kZSkpKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3Ms
IEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVBY3RpdmVJbnB1dE1vZGVzKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tl
ZEFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFz
cywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dp
enpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVj
a2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNs
YXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKKyAgICBtX2lucHV0TW9kZVN3
aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
Pihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkpOwogICAgIFtVSUtleWJvYXJk
SW1wbC5zaGFyZWRJbnN0YW5jZSBwcmVwYXJlS2V5Ym9hcmRJbnB1dE1vZGVGcm9tUHJlZmVyZW5j
ZXM6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZl
bnRTZW5kZXJQcm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVy
UHJveHkubW0KaW5kZXggZDFjZmM2YTMzMjFlMDI5YzhiYTgxMTVmNGE2ZDkyMDdmOGU3MTg0Zi4u
ODljZTRlZjEyNmMxNWQ5MmRjZjc2NjUwY2U2ZWVmNWI4OTIzMTcyZSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCkBAIC0zMjUsNyArMzI1LDcg
QEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVy
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWUKIAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFtt
X3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0Oltl
dmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAg
YXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1v
dXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1v
dXNlQnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6
bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBz
ZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVu
dEV2ZW50OmV2ZW50XTsKICAgICAgICAgW3RhcmdldFZpZXcgbW91c2VEb3duOmV2ZW50XTsKICAg
ICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTM1Nyw3ICszNTcsNyBAQCB2
b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycwogICAgICAgICB0YXJnZXRWaWV3ID0gbV90ZXN0Q29udHJv
bGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CiAKICAgICBBU1NFUlQodGFyZ2V0
Vmlldyk7Ci0gICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0
b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2
ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0
b25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNs
YXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElN
UD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKICAgICBbTlNBcHAgX3NldEN1
cnJlbnRFdmVudDpldmVudF07CiAgICAgW3RhcmdldFZpZXcgbW91c2VVcDpldmVudF07CiAgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6bmlsXTsKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEV2
ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICAvLyBB
bHdheXMgdGFyZ2V0IGRyYWdzIGF0IHRoZSBXS1dlYlZpZXcgdG8gYWxsb3cgZm9yIGRyYWctc2Ny
b2xsaW5nIG91dHNpZGUgdGhlIHZpZXcuCiAgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gaXNEcmFn
ID8gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgOiBbbV90
ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDp3aW5k
b3dMb2NhdGlvbl07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFBy
ZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RT
d2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykp
OworICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVu
aXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVz
c2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVz
c2VkTW91c2VCdXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50
XTsKICAgICAgICAgaWYgKGlzRHJhZykKICAgICAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRHJh
Z2dlZDpldmVudF07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVu
dFNlbmRlclByb3h5V1BFLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2Vu
ZGVyUHJveHlXUEUuY3BwCmluZGV4IDQ2OWJmYWYwZThjZjI5MDczMGJhYmZhMDc4MzZkODc3ZWM3
MGU4ZjUuLjY5NmY0NTU3NTg5NmZlODI2NjQ4N2QwOThlOGZlOGVlNjFlNTRkNTYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCkBA
IC0yNzksNyArMjc5LDcgQEAgc3RhdGljIHVpbnQzMl90IHdwZUtleVN5bUZvcktleVJlZihXS1N0
cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1aW50MzIKICAgICAgICAgcmV0dXJu
IFdQRV9LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGlt
dW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hh
ciBjaGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376365</attachid>
            <date>2019-08-15 00:03:34 -0700</date>
            <delta_ts>2019-08-15 01:06:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190815000333.patch</filename>
            <type>text/plain</type>
            <size>1799469</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2U0YzNjMTA2MDY0ODRlNjNkZDVmZDExMGYyZjNkYzRmMGZhN2FlLi4yNTdiNDMzNGE2ZGVmMWY2
MWE2NzBhZDI5YjQ2MjVmZjUyY2NlM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBz
dXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQyOGY1ZjNlODc4YTIyZWY5MmYzZTAyMzM4
YjVmYjRkYzVjYWM0YTkuLjMzNGU4NWU4MjY4MTI0OGViYjY2YjJiZWMwODM3M2RlZWMzNDA4ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5z
dXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAg
ICAgICogYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3Vy
cmVudFZlY3Rvci5oOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAg
ICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHA6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3Rm
L0Z1bmN0aW9uLmg6CisgICAgICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3Rm
L0hhc2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAg
ICAgICAqIHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6Cisg
ICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToK
KyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAg
ICAqIHd0Zi9TdHJlYW1CdWZmZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBl
bmQpOgorICAgICAgICAqIHd0Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVm
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6
SXRlcmF0b3IpOgorCiAyMDE5LTA4LTE0ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUgc2hvdWxkIGxvZyBl
cnJvciBzdGF0dXMgKDE3ODM0NykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNWJjOGYwYmQ4MjIxOWZhNzBiYmJl
OTQwN2JlNmUzNjQwNjc2ZDIxLi43NGU0Y2IxODZjMmU4OTgyOGU3NmQ5NDg5YTNhOTIxMzMyMWVl
YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg4MCBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVl
PFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nRGV2ZWxvcGVyV2FybmluZyk6CisgICAgICAgICog
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvckJlYWNvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dD
YWNoZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Q2FjaGVzOjpmcm9tKToKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKToKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKToKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RN
OjprZXlTeXN0ZW0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RN
OjpjbGllbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpz
ZXRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETVByaXZhdGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZldGNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KToK
KyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
cm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZp
Z2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9sb2Nh
dGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhl
ZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRhYmFz
ZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcik6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246
OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVy
OjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJlY29y
ZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJh
c2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5kZXhL
ZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVPcGVu
Q3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9y
ZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0
U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJh
c2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpi
ZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FM
aXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vy
c29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5C
YWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRh
OjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVz
dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0
RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2Fj
dGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJz
aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJh
bnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6aXNv
bGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNh
Y3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRlY29k
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdl
cik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFiaWxp
dGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNz
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6
OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpi
dWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2ZVNl
ZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVk
aWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNlczo6
ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hh
bm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tlbmRG
cm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNy
ZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpj
cmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlTm90
aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1
bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvV29y
a2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5h
dmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Nw
ZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJlUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3lu
Y0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6
ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6
OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rl
cjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFjayk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdU
YXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVk
aW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5u
ZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxT
cGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2Rl
OjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1
ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5v
ZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3ND
b21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9H
YWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBhbm5l
ck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNo
YXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2FnZTo6
Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlk
UGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9t
U2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tl
dDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVy
aWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpE
YXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGlu
Z0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVs
ZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1l
bnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAg
KFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JH
UFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6TWV0YWw6OlJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQ
b2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29tcHV0
ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpDaGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBh
cnNlcjo6cGFyc2VTZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZpbmdUeXBlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdh
dG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJvbSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVN
ZXNzYWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVu
cXVldWVUZXh0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5x
dWV1ZVJhd0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVl
dWVCbG9iRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vz
c091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldElu
ZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0
aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcyk6
CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0RPTVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1Rv
RXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29k
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJyaWRn
ZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRob2RO
YW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFtZWQg
Y29uc3QpOgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICogYnJp
ZGdlL29iamMvb2JqY19jbGFzcy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFz
czo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNz
OjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToKKyAg
ICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29tYmlu
ZWRVUkxGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21i
aW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVDcnlw
dG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMpOgor
ICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRldGVybWluZUNhdGVnb3J5KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxE
ZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjps
b2FkU2ltcGxlRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNl
dDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAgKiBj
c3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVs
ZTo6Y3NzUnVsZXMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNo
ZWRJbWFnZUZvclNpemUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojpj
c3NSdWxlcyk6CisgICAgICAgICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01DU1NQYWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9ET01D
U1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNTU1Jl
Z2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVT
ZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50UnVs
ZVNldHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNlckFn
ZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpt
YWtlUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1
dGhvclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRz
KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1
bGVzRm9yU2xvdCk6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAgICAg
ICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVT
ZXQ6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6
YWRkKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxl
U2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAw
UGVyY2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hh
ZG93VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUlu
aGVyaXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlJbmhlcml0Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NT
U3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNjYWRl
ZFByb3BlcnRpZXNGb3JSb2xsYmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgorICAg
ICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6CisgICAg
ICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJ
bXBsOjpDU1NQYXJzZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OnBh
cnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1
bWVNZWRpYVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1
cHBvcnRzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5
ZnJhbWVzUnVsZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRv
RWxlbWVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpw
YXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2Vs
ZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNl
bGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
clNlbGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hhcGVQ
YXRoKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAgICAg
KiBkb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAgICAg
KiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6
aXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UpOgor
ICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojpmb3JtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRTaGFk
b3dUcmVlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhPYmpl
Y3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZGlkTG9nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJD
U1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojpjb250ZW50Q2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRv
bVRpbWVySG9sZGluZ1RhbmspOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVu
dFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyOjphZGRNYXJrZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3Jh
cnlUaW1lVXNlckdlc3R1cmUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjplbnF1ZXVlVG9VcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNs
YXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAgICAg
ICAqIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlz
dGVuZXJNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBk
b20vRXZlbnRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAgKiBk
b20vRnVsbHNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6
YWRkT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OktleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRvbS9N
aWNyb3Rhc2tzLmg6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb3Rhc2tRdWV1ZTo6dm0gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKToKKyAgICAg
ICAgKiBkb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKToKKyAg
ICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVOb2Rl
V2lsbERldGFjaCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1
cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJNdXRh
dGlvbk9ic2VydmVyKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmFyZURhdGE6OmVuc3VyZU5vZGVMaXN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmFyZURhdGE6OmVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKiBk
b20vUmFkaW9CdXR0b25Hcm91cHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25H
cm91cHM6OmFkZEJ1dHRvbik6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0RXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9y
dFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3cpOgorICAgICAg
ICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAgICog
ZG9tL1Nsb3RBc3NpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50
OjphZGRTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVu
dDo6YXNzaWduVG9TbG90KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVT
Y29wZTo6YWRkRWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRF
bGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRkSW1hZ2VNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKToKKyAgICAg
ICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJv
YXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAq
IGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Y2xlYXJBbmRDcmVhdGVOb3RpZmllcik6CisgICAg
ICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcik6CisgICAg
ICAgIChIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQ
YWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQpOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxPbkZpbGVUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0pOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpy
ZWFkSW50ZXJuYWwpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5
L0NhY2hlZFBhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUGFnZTo6Q2FjaGVkUGFn
ZSk6CisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZSk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKToKKyAg
ICAgICAgKiBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVy
KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNhdmVkRm9ybVN0YXRlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29u
dHJvbGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Rm9y
bUNvbnRyb2xsZXI6OnRha2VTdGF0ZUZvckZvcm1FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50
OjpyZWxMaXN0IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQpOgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxD
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1cGRhdGVO
YW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3Nh
Z2UpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxl
bWVudENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKToKKyAg
ICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJRnJhbWVFbGVtZW50OjpzYW5kYm94KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2l6ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpyZWxMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Zmlu
aXNoSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2Vla1dpdGhUb2xlcmFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp1cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbik6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFy
eUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN1bW1hcnlFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
UHVibGljVVJMTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2Vy
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0OjpEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByZWxv
YWRTY2FubmVyOjplbWl0UnVsZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omlu
c2VydEhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVs
ZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjppbnNl
cnRBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpwdXNoQ29tbW9u
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpjcmVhdGVQ
cmVsb2FkUmVxdWVzdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVkSFRUUEJvZHlT
dWZmaXhUcmVlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpw
YXJzZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQ
SUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGlu
ZUFQSUhvc3Q6OmNsZWFyQWxsV3JhcHBlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjppbnNlcnRCZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01FZGl0b3I6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6
OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE91dGVy
SFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXROb2RlVmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdl
c3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01B
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVQYWdl
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFBhcnNlZFN0eWxl
U2hlZXQ6OnNldFNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVT
aGVldDo6ZW5zdXJlU291cmNlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpy
ZXNvdXJjZUNyZWF0ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6
Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNQVVByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1BVUHJv
ZmlsZXJBZ2VudDo6SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6YWRkUnVsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVkTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0
cik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6SW5zcGVjdG9yTmV0d29ya0FnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZy
b21Db25zb2xlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0
b3BGcm9tQ29uc29sZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5z
cGVjdG9yV29ya2VyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29s
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6ZGlkRmFpbExv
YWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkhlYXBBZ2VudDo6V2ViSGVhcEFnZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAg
ICAqIGxheW91dC9MYXlvdXRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxh
eW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRp
bmdSb290SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6
Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UnVuLmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJ
bmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6
OkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25CcmVha2Fi
bGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZFRleHRDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJ
bmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRIYXJkTGlu
ZUJyZWFrKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmg6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5k
VGV4dEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OnNw
bGl0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OkJveCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJveDo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1
aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVC
dWlsZGVyOjpjcmVhdGVUYWJsZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OnByaW50TGF5b3V0VHJlZUZvckxpdmVEb2N1bWVudHMpOgorICAgICAgICAqIGxvYWRlci9Db250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6
CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OkRv
Y3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsb2FkQXBw
bGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YWRk
QWxsQXJjaGl2ZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjps
b2FkTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpGcmFtZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVk
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRldGFjaENoaWxkcmVu
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTGlu
a0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNl
Q2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmg6CisgICAgICAg
ICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmln
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVQ
YWdlQmxvY2spOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmg6CisgICAg
ICAgICogbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9n
cmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJl
c291cmNlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjaGVja0ZvckhlYWRDaGFyc2V0KToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1h
aW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OnNldEJvZHlEYXRhRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJl
Y3RSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnByZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudFJlZmVyZW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2U6OmxvYWRSZXF1ZXN0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmRvY3VtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW06CisgICAgICAgICgtW1dl
YlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjpyZXNvdXJjZVJlc3BvbnNlOl0p
OgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJv
cjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92
ZXJsYXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1
cGRhdGVSZWdpb24pOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2Jq
ZWN0VG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWlu
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxl
QXJlYSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVG
b3JQYWdpbmF0aW9uSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjppbml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0
aFR5cGVBbmRMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2Ny
ZWVuc2hvdCk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9y
bWFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
UGVyZm9ybWFuY2U6Om1lYXN1cmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNs
ZWFyTWVhc3VyZXMpOgorICAgICAgICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAg
ICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250
ZXh0OjpvdXRwdXRMaW5rZWREZXN0aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcjo6c3RhcnRUaW1lcik6CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwYWdlL1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAg
ICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250
ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xs
ZXI6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFG
aWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVh
dGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9u
Q29udHJvbGxlcik6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6
OlByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNp
dGVkQWZmZWN0ZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlX
cmFwcGVyOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVy
TWFwKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToK
KyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAg
ICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpzZXRDU1BEaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VP
YnNlcnZlci5oOgorICAgICAgICAqIHBhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaDoKKyAg
ICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFk
ZFNjaGVkdWxlUGFpcik6CisgICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5o
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9m
ZnNldHNJbmZvLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxkKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjpjb21taXQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9D
UFVNb25pdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZU1vbml0b3IuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9MZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvMTAwUGVy
Y2VudE1pbnVzTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kTWl4ZWRUeXBlcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxh
YmxlQXJlYTo6c2Nyb2xsQW5pbWF0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vU3Vk
ZGVuVGVybWluYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQnVzOjpBdWRpb0J1cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6Y29w
eVdpdGhHYWluRnJvbSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpudW1iZXJPZkNoYW5uZWxzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFubmVsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFubmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpsZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdXM6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdXM6OnNldFNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9CdXM6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
OjpBdWRpb0J1cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFu
bmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OkF1ZGlvQ2hhbm5lbCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnNldCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Om11dGFibGVEYXRhKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6ZGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Onplcm8pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9DaGFubmVsOjpjbGVhclNpbGVudEZsYWcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9DaGFubmVsOjppc1NpbGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZJ
Rk86OmZyYW1lc0luRmlmbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZJRk86OnVwZGF0ZUluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9B
dWRpb1B1bGxGSUZPLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVscyk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvUmVzYW1wbGVyOjpyYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNz
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzQWN0aXZlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9CaXF1YWQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9Db25lLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRJ
bm5lckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmlubmVy
QW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0
T3V0ZXJBbmdsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRl
ckFuZ2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNl
dE91dGVyR2Fpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRl
ckdhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFs
RGlzYWJsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OkRlbm9ybWFs
RGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6
fkRlbm9ybWFsRGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxE
aXNhYmxlcjo6Zmx1c2hEZW5vcm1hbEZsb2F0VG9aZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OmdldENTUik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEZW5vcm1hbERpc2FibGVyOjpzZXRDU1IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rp
c3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bW9kZWwpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldE1vZGVsKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjpzZXRSZWZEaXN0YW5jZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6c2V0TWF4RGlzdGFuY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldFJvbGxvZmZG
YWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnJlZkRp
c3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0
OjptYXhEaXN0YW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5j
ZUVmZmVjdDo6cm9sbG9mZkZhY3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vRG93blNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpz
ZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2FtcGxl
UmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNz
b3I6Om55cXVpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3ND
b21wcmVzc29yOjp0YWlsVGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
eW5hbWljc0NvbXByZXNzb3I6OmxhdGVuY3lUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6bGF0ZW5jeUZyYW1lcyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWw6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1p
Y3NDb21wcmVzc29yS2VybmVsOjptZXRlcmluZ0dhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVENvbnZvbHZlcjo6
ZmZ0U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJh
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmNyZWF0ZUludGVycG9sYXRlZEZy
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6bnVtYmVyT2ZBemltdXRocyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlv
bjo6Y3JlYXRlRm9yU3ViamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpj
cmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZFbGV2YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OkhSVEZFbGV2
YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVs
TGlzdEwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVs
TGlzdFIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6ZWxldmF0
aW9uQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlv
bjo6bnVtYmVyT2ZBemltdXRocyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpI
UlRGRWxldmF0aW9uOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6
OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxz
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGUGFubmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhSVEZQYW5uZXI6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcik6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5l
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAo
V2ViQ29yZTo6UmV2ZXJiOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpy
ZWFkVGltZUZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpS
ZXZlcmJDb252b2x2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VM
ZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVy
OjppbnB1dEJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2
ZXI6OnVzZUJhY2tncm91bmRUaHJlYWRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJDb252b2x2ZXJTdGFnZTo6aW5wdXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXZlcmJJbnB1dEJ1ZmZlcjo6d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1VwU2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6
CisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6WmVyb1BvbGU6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Olplcm9Qb2xlOjpzZXRaZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xl
OjpzZXRQb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxp
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6bGlzdCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6Om9wZXJhdG9y
IEF1ZGlvQnVmZmVyTGlzdCYgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
QXVkaW9CdWZmZXJMaXN0OjpraW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9T
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01h
aW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJP
YnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRy
b2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6
OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250
cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVw
YWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5
ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5l
cmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVj
b2RlckdlbmVyaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmlt
YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVu
Y29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250OjplbnN1cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0Zv
ckdseXBoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFy
YWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpzZXRDaGlsZHJlblRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
Ojpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9pbnRHcmFwaDo6
ZmluZE9yQ3JlYXRlTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6c2V0U2hhcGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpjb3B5U2hh
cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpkZWNvZGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnBy
ZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5RmFpclBsYXlT
dHJlYW1pbmc6OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6YnVmZmVyZWQg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWM6OnBsYXRmb3JtUGlja2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpub3RpZmlj
YXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0
cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2Fk
ZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpz
ZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVB
VkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRU
cmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01l
dGFkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFu
Z2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRo
VG9sZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVw
ZGF0ZUN1cnJlbnRGcmFtZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJ
dGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpz
ZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qzo6c2V0TWVkaWFTZWxlY3Rvbk9wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRp
b25zRnJvbUtleWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhp
Y3NMYXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0
Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp0aWxlZFNj
cm9sbGluZ0luZGljYXRvckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNvY29hOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGls
ZWRCYWNraW5nTGF5ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQbGF0
Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcDoKKyAgICAgICAgKFdl
YlRpbGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6bV9wcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6ZW5zdXJlR3JhcGhpY3NDb250ZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29h
Lm1tOgorICAgICAgICAoVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9wZXJ0aWVzOjpp
c0lkZW50aXR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRp
b25TZXNzaW9uVlQ6OnRyYW5zZm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGlvblByb3BlcnRpZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6c2l6ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGVk
U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVD
YWNoZUNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1Yu
bW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmxvYWRFeHRlcm5hbERvY3Vt
ZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9u
dFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmU6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNy
Y01ha2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2g6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQ
dW5jaC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9C
b3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRp
b25Cb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBh
cnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRp
b25Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJv
eC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25C
b3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklTT1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OklTT1dlYlZUVEN1ZTo6Ym94VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
SVNPV2ViVlRUQ3VlOjpwcmVzZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3Bl
cmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2Nl
bmVJbnRlZ3JhdGlvbi5jcHA6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpj
cmVhdGVVcGRhdGVTY29wZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpjcmVhdGVDb21tYW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQ
YWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKToKKyAgICAgICAg
KE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OkZvclJlY29yZGlu
Zyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1h
cHBlckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBv
c2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3Jl
YXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5n
VGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4
dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xD
b21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6bWFwcGVkU3ltYm9sTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3
YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNv
bnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvVGlsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tp
bmdTdG9yZTo6Y3JlYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3Rh
dGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6OnNldExhc3RQbGFu
YXJTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6c2V0
U2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXI6OkZ1bGxT
Y3JlZW5Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5Db250cm9sbGVy
OjplbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjptX3ByaXZh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVXaW5kb3dzQml0
bWFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVu
V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1
c3RvbVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6
OndyaXRlQ2xpcGJvYXJkQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUdhZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUdhZGdldDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVscGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAg
ICAoR0lGRnJhbWVDb250ZXh0OjpkZWNvZGUpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OmFk
ZEZyYW1lSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVy
OjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rl
cjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5VGlsZUNhY2hlOjpMZWdhY3lUaWxlQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5VGlsZUNhY2hlOjpjb21taXRTY2FsZUNoYW5nZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFn
QW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChX
ZWJDb3JlOjpyZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9TY3JvbGxBbmltYXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW1v
dGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjptX2NhcHR1cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OkdTdHJlYW1lckF1ZGlvRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmdldFNhbXBsZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmdldEF1ZGlvSW5mbyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmtpbmQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDYXB0dXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJr
aXRfbWVkaWFfc3RyZWFtX3NyY19pbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Om1fY2FwdHVyZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVv
RW5jb2RlckZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNv
ZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFj
a2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rv
cnk6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2Nv
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRl
ckdTdHJlYW1lcjo6Y3JlYXRlRGVjb2RlckZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNv
Y29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1D
b2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpj
b252ZXJ0VG9ZVVYpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlQ29jb2E6OnJvdGF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENO
b3RpZmllcnNNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFubmVsTm90
aWZpZXI6OmZpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJM
RGVjb2Rlcjo6Y3JlYXRlRGVjb2RlVGFzayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZhaWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZTo6d2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRTZW5kQm9keURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgt
W1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBfcmVzdGFydF0pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29r
aWVKYXJEQjo6c2VhcmNoQ29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6
Y3JlYXRlUHJlcGFyZVN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxDb250ZXh0OjpDdXJsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xDdHgpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRm9ybURhdGFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEZvcm1EYXRhU3Ry
ZWFtOjpnZXRQb3N0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRs
ZTo6Y3JlYXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0
aW9uUXVldWVEZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3Rl
bnRTdG9yYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2Fs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
TGF0aW4xOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNSZXBsYWNlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVu
dDo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRG
MTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0
Q29kZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAg
ICAgICogcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmg6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51
REI6OmNyZWF0ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NE
YXRhT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6
CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29t
cGxleExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6
CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVl
ZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGbG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpu
ZXh0RW1wdHlHcmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdu
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0
ZUJhc2VsaW5lQWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3Vs
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJh
c2VkVGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZFBsYWNlaG9sZGVyUnVuRm9ySXNvbGF0ZWRJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9M
YXllck92ZXJsYXBNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPdmVybGFwTWFwOjpw
dXNoQ29tcG9zaXRpbmdDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVyTWFwcyk6
CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXA6OmFkZERlc2NlbmRh
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5m
b0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlQmxvY2tS
YXJlRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0TGluZUdyaWRCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjplbnN1cmVMaW5lQm94ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjptYXRlcmlhbGl6ZVJhcmVCbG9ja0Zsb3dE
YXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjplbnN1
cmVDb250aW51YXRpb25DaGFpbk5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VDb3VudGVyTm9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y29udGFpbmluZ0ZyYWdtZW50TWFwKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0
cnlNYXA6OnB1c2hWaWV3KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVw
ZWF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3Jp
ZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
OlJlbmRlckltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y29sbGVjdExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBk
YXRlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVDbGlw
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0
cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFuY2VzdG9yQ2xpcHBp
bmdTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFu
c2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5
Rmx1c2hCZWZvcmVEaXNwbGF5UmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJL
aXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWlu
ZWRMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVt
bkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVE
YXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90
dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVh
dGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2
ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50
UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290
SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJh
bmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVjdEJvdW5kcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5
b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2Vu
ZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUlu
dGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0
U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBv
bHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVQYXRoOjpibGVuZCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZp
bGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFk
ZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291
bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFu
aW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRp
b25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJh
cmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5s
aW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBl
Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
c291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNl
dE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVz
b3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5kZXJlcik6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAg
ICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6Oklu
dmFsaWRhdG9yKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6Y29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6
OnJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVT
aGVldHNDb250YWlucyBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6Cisg
ICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVu
Y2luZ1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6U1ZHRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjplbnN1cmVTVkdSYXJlRGF0YSk6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRh
bFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6Y29weSBjb25zdCk6CisgICAgICAgICogc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlM
VGltZUNvbnRhaW5lcjo6c2NoZWR1bGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5o
OgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmg6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0RlY29yYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5Lmg6CisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNl
dHRpbmdzOjpmcm9tKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OmVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0UHJpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjppbml0aWFsaXplTW9ja0NETSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnF1ZXVlTWljcm9UYXNrKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAg
ICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRh
aWxzKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNj
b3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckds
b2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExv
YWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlw
dExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVh
ZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVS
ZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjp0
ZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6
c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
UmVnaXN0ZXJKb2IpOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3Rl
clBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgor
ICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6Cisg
ICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAq
IHdvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKToKKyAgICAg
ICAgKiB4bWwvWE1MRXJyb3JzLmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp1cGxvYWQpOgorICAgICAgICAqIHht
bC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpldmFsdWF0ZVByZWRpY2F0ZSk6CisgICAgICAgICog
eG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxl
U2hlZXQ6OmxvYWRDaGlsZFNoZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVF
cnJvcik6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kU3RhcnRFbGVtZW50
TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRF
bmRFbGVtZW50TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tz
OjphcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kQ0RBVEFCbG9ja0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENvbW1lbnRDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRJbnRlcm5hbFN1YnNl
dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVy
cm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERv
Y3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkb0Vu
ZCk6CisKIDIwMTktMDgtMTQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV0hMU0xdIFZhcmlhYmxlcyBzaG91bGRuJ3QgYmUgYWJsZSB0byBoYXZl
IHZvaWQgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNjBlN2ZiNTZjOTcwNWUxOWZjODliYzhh
NmJkNGY0MjNlZjE2MjViZS4uYzdhYWE4ZDE0NjNhMWVhMjkzYWIyMzQ1MzdmMmYzMzMyM2E2NmYx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDgtMTQgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29udGV4
dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwOgor
ICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL21hYy9D
bG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6OmNyZWF0ZSk6CisKIDIwMTktMDgtMTQgIEtlaXRo
IFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZv
ciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDM1OGYyYmYwMDVhZTY0NGQ4MTIzMjhk
NWRlZGU0MTljOGJhMDFjZmIuLjNiMTkyOGU5YTMwOTMwNTBhNTE3MGI3MzcwOTI2Zjk2ZTgxNTBi
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1
ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKToK
KyAgICAgICAgKiBnbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6
OlNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2VyKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKwogMjAxOS0wNi0wMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjQ1
NTY3KTogW0dUS11bV1BFXSBbMi4yNS4xXSBXZWJLaXRXZWJEcml2ZXIgZ2V0cyBpbnN0YWxsZWQg
YXMgV2ViRHJpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwOWY1YzM2MjUxNDI4Njg5NDczYzk5OGIzOGZkYWFi
YjU0YTYwY2QuLjYyYmY5OTVlYTdiNTM4YjU4ZmZlYjQ3YThjMjQwY2M2NzM4NzhkZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjM4IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVu
c3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2spOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3Vw
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hcDo6YWRkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93
bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
V2ViU29ja2V0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRh
YmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtl
RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlUmVkaXJl
Y3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3Jk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdp
c3RlclN1YnJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5
UGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5
bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFk
UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXRyaWV2ZUZyb21NZW1v
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAg
KFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRpcmVjdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToK
KyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpj
cmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJT
b2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQ
cm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENv
b3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrU291cDo6ZG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25Tb3VwKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAg
ICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRlU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRj
aFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGluZyk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6dW53cmFwRm9yVGVzdGluZyk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6
aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjpDb25uZWN0aW9uVGVy
bWluYXRpb25XYXRjaGRvZyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAg
ICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vz
c01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0v
TW9kdWxlLmg6CisgICAgICAgICogUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW06
CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhv
c3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3Jl
YXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVS
TC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6cGFy
c2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9SZW1v
dGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZv
Y2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0
V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51SXRl
bUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAg
ICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKToKKyAgICAgICAg
KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24pOgorICAgICAg
ICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xh
YmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51
KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKToKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRleG1hcExheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIpOgor
ICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0
b3I6OlRocmVhZGVkQ29tcG9zaXRvcik6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9i
amVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rl
ck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0
cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8v
U2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5k
TWF0Y2hlc0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6SFRUUENv
b2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUhpc3RvcnlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFz
ZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChX
S0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXRI
aXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlv
bk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNl
dFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUgaW5pdFdpdGhQYWdl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoKKyAgICAgICAg
KFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9y
ZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFs
bG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24g
c2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNRTGl0ZVN0YXRlbWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAg
ICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoYXR0
YWNoQ29udGV4dE1lbnVDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNo
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoRG93
bmxvYWRDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAod2Via2l0RmF2aWNvbkRhdGFiYXNlT3Bl
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFj
aEZvcm1DbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0R2VvbG9jYXRpb25NYW5hZ2Vy
Q3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdD
bGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoSWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6
CisgICAgICAgIChhdHRhY2hJbmplY3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNw
cDoKKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKToKKyAg
ICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2Fn
ZV9oYW5kbGVyX2luX3dvcmxkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgor
ICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFn
ZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
RHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1v
amlDaG9vc2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0
aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViSW5zcGVjdG9yQ3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VEcmFnQW5kRHJvcEhhbmRsZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEaWRSZWxh
dW5jaFdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToK
KyAgICAgICAgKC1bV0tWaWV3IG1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XSk6CisgICAg
ICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5jcHA6CisgICAgICAgIChXS1dQRTo6Vmlldzo6Vmlldyk6CisgICAgICAg
IChXS1dQRTo6Vmlldzo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9x
dC9XUEVRdFZpZXcuY3BwOgorICAgICAgICAoV1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENh
bGxiYWNrKToKKyAgICAgICAgKFdQRVF0Vmlldzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKToK
KyAgICAgICAgKFdQRVF0Vmlldzo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHA6CisgICAgICAgIChXUEVRdFZpZXdCYWNr
ZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxv
YWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpj
cmVhdGVDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNy
ZWF0ZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50
cyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGFydERpc3BsYXlMaW5rKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNldFRleHRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9y
YXRlVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRldmlj
ZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRhRnJvbURlY29kZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0
Rm9yT3JpZ2luQ2FsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMp
OgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29u
bmVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2Fn
ZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93
bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VV
cGxvYWRBc3NlcnRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5SZXF1
aXJlc0d0azIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNh
dG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2Rl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2
aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRD
cmFzaENvdW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpt
YXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2li
bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9h
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxh
eWluZ0F1ZGlibGVNZWRpYSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldheWxhbmRDb21w
b3NpdG9yOjppbml0aWFsaXplRUdMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6
OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25T
dGF0ZVRyYWNraW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tp
bmdWaWV3IGRpZE1vdmVUb1dpbmRvd10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoUHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBpbml0V2l0aEZyYW1lOnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246d2ViVmlldzpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJGb3JXZWJWaWV3XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGluZzpibHVyUHJldmlv
dXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZWxlbWVudERpZEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
YXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIgaW5pdFdpdGhXaW5kb3c6d2ViVmlldzpwYWdlOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtX
S1RleHRGaW5kZXJDbGllbnQgaW5pdFdpdGhQYWdlOnZpZXc6dXNlUGxhdGZvcm1GaW5kVUk6XSk6
CisgICAgICAgICogVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9y
bVN0YXJ0VGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJW
aWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFk
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6Z2FtZXBhZENvbm5lY3Rl
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVNldENsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgor
ICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV0tC
dW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldEZvcm1D
bGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAg
ICAgIChXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV0tCdW5k
bGVQYWdlU2V0VUlDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VPdmVy
bGF5Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21h
Yy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW06CisgICAgICAgIChXS0J1bmRsZVBhZ2VCYW5uZXJD
cmVhdGVCYW5uZXJXaXRoQ0FMYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0Ojpn
ZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpwdXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdEV4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYkVkaXRvckNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwOgorICAgICAgICAod2Via2l0V2Vi
RXh0ZW5zaW9uQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0RnJhbWVHZXRPckNyZWF0
ZSk6CisgICAgICAgICh3ZWJraXRXZWJQYWdlQ3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW06CisgICAgICAgICgt
W1dLRE9NVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyIF9zZXRGb3JtRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQZW5kaW5nTWVzc2FnZTo6UGVuZGluZ01lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KToK
KyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0
KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50
VGNwU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3Jl
YXRlTmV3Q29ubmVjdGlvblNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZUFzeW5jUmVzb2x2ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVj
dG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVUaW1lcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJE
YXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBs
dWdpblgxMS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFz
dGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktp
dDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
OjpjcmVhdGVTdWJmcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRpbWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5k
bGVSZXNvdXJjZUxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmpl
Y3RlZEJ1bmRsZVVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpiZWdpblByaW50aW5nKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpGaW5k
Q29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1Zv
bGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNl
c3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdv
cmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRTdXBwbGVtZW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6U291cmNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnByb2Nlc3NUYXNrU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUpOgorCiAyMDE5LTA4LTE0
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSBtX2Jsb2NrUmVjdEZvclRleHRTZWxlY3Rpb24gKGFsb25nIHdpdGggcmVsYXRlZCBjb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkN2JmZmNiZDM3YmZlMjI3MTcwOGE2MzJhMzFmOTQ3YmZi
YzNjMTFmLi43ODFiZTQ1M2EyMGMyZmY0MGUwYmE0ZGVkZGU0Yzk5Yzk4NGU5NDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4s
IHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFu
YWdlcik6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJhY2tlcik6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcDoKKyAg
ICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbik6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24p
OgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hh
bmdlTG9nCmluZGV4IGM2M2VmYWJhNWQ4ODY4M2JlZmJmMTY5NThmZjFmZTAwMDRlYTljNmIuLjE5
Njk0YmQxMTExNmE2MGZjMTNiMDMxYzQ4NzZkZWFlYzJjOGQ3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2Yv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJvbnRlbmRTZXR0
aW5ncyk6CisKIDIwMTktMDgtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI0ODQ1NCk6IFdLMSBpbnNwZWN0
b3IgZnJvbnRlbmQgY2xpZW50IGRvZXNuJ3QgcXVldWUgbWVzc2FnZXMgdG8gdGhlIGZyb250ZW5k
IGJlZm9yZSBpdCdzIGxvYWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDg1YmZl
N2ZlN2FhNGMzZjdmY2JiMmQ3MjhkYjVkZWE3YWRhYmE4ZmYuLmJiNTQwYzFlNWFlMmE4N2M2MDcx
NGZiOWJjNTIyNmM5ZWU4MDQ0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMg
ZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW06CisgICAgICAgICgtW1dl
YkZpeGVkUG9zaXRpb25Db250ZW50IHNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6c3RpY2t5
Q29udGFpbmVyTWFwOl0pOgorCiAyMDE5LTA3LTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gZGlkRmluaXNoQ29udGVu
dENoYW5nZU9ic2VydmluZyBzaG91bGQgaW5jbHVkZSB0aGUgdHlwZSBvZiBjb250ZW50IGNoYW5n
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwMmExY2U3YmE2OGViZGQyZTdmYjNh
YmY4NGMzZGI2OGQ3NDg1ZTZlLi45Y2QzNTFjNWJlZDc2YzMyODA5ZmU0Y2JiNjNhNjFkNDJkMDlh
ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTkt
MDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RG
XSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEhpc3Rvcnkv
V2ViSGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgaW5pdF0pOgorICAg
ICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlJ
dGVtIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgorICAgICAgICAoV0tQQ0dldFNj
cmlwdGFibGVOUE9iamVjdFJlcGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuUmVwbHkpOgorICAg
ICAgICAoV0tQQ0Jvb2xlYW5BbmREYXRhUmVwbHkpOgorICAgICAgICAoV0tQQ0luc3RhbnRpYXRl
UGx1Z2luUmVwbHkpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5oOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06
CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Om1ldGhvZE5hbWVkKToKKyAgICAgICAg
KFdlYktpdDo6UHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZCk6CisgICAgICAgICogUGx1Z2lucy9I
b3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1Z2luXSk6CisgICAgICAgICogUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2NoZWR1bGVU
aW1lcldpdGhJbnRlcnZhbDpyZXBlYXQ6dGltZXJGdW5jOl0pOgorICAgICAgICAqIFN0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0
YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNhY2hl
ZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChhZGRSZWRpcmVjdFVSTCk6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJh
bWUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9y
aWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06
CisgICAgICAgICgtW1dlYkZyYW1lIF9hdHRhY2hTY3JpcHREZWJ1Z2dlcl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbToKKyAgICAgICAgKFdlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0SXRl
cmF0b3IubW06CisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBpbml0V2l0aFJhbmdlOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfaW5qZWN0
T3V0bG9va1F1aXJrc1NjcmlwdF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9h
ZGRVc2VyU2NyaXB0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6
aW5qZWN0aW9uVGltZTppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRk
VXNlclN0eWxlU2hlZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlz
dDppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0VGV4dEluZGljYXRvcjp3aXRo
TGlmZXRpbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAg
KFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcik6
CisgICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKwogMjAxOS0wOC0xNCAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjQ4NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQ2MDMwYmI2
M2I0NmYyZjkyODUzZjA0OTczNjA5NWYzMzQyMWFhNWEuLjZkODljMDNjNzliYjk1YzVjZTZiMWQ1
ZTM5M2ZlMWE4ZTEyZWQzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NyBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFz
dC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKiBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5NZXNz
YWdlVGhyb3R0bGVyV2luLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OmxvYWQpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3Ojp3bmRQcm9jKToKKyAgICAgICAgKiBXZWJDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNo
ZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoV2ViRWxlbWVu
dFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcpOgorICAgICAgICAqIFdlYkhpc3Rv
cnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbik6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQ
b3N0UHJvY2Vzc2luZ0NvbnRleHQpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ0FEM0RSZW5kZXJlci5oOgorICAgICAgICAqIFdlYk5vZGVIaWdobGlnaHQuaDoKKyAgICAg
ICAgKiBXZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlv
bkNlbnRlci5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFu
ZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmlld01J
TUVUeXBlKToKKyAgICAgICAgKFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAg
ICAgKFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3
OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKwogMjAxOS0wOC0xNCAgUnlhbiBIYWRkYWQg
IDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjQ4NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nIGIvU291cmNl
L2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDNmMGZiMmUxY2VlYWVmMDY1OWMzNGM4MjcxYmVlYzEw
ODIzNzU2ZWQuLjZlMDFkYWJjZjgwMDcwOTkzNzAxYjg2MWQzZGQzODhlMDZkMTY4NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBl
bnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYm1hbGxvYy9Jc29IZWFwLmg6CisgICAgICAgICogYm1hbGxv
Yy9Jc29IZWFwSW5saW5lcy5oOgorCiAyMDE5LTA3LTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIEFkZCBJc29IZWFwIHRlc3QgdG8gZW5z
dXJlIHRoYXQgSXNvSGVhcCBwYWdlcyBhcmUgbm90IGFsbG9jYXRpbmcgdG9vIGxhcmdlIFZBCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDA3ZDcw
OWJhMTJjODJjODU0ODJkNzNjNzIzNzdmNTE5ZTdmYzJhNWMuLmQwZTYyNTI4MmE4NGY0ZjM1ZWVk
ZWQxOTVlZGI4ZGM4OTdiMWE1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCkBAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBKU0NhbGxiYWNrT2JqZWN0
RGF0YSB7CiAgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVydHkoVk0mIHZtLCBKU0NlbGwqIG93bmVy
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiAgICAgewog
ICAgICAgICBpZiAoIW1fcHJpdmF0ZVByb3BlcnRpZXMpCi0gICAgICAgICAgICBtX3ByaXZhdGVQ
cm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ByaXZhdGVQcm9wZXJ0eU1hcD4oKTsKKyAg
ICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEpTUHJpdmF0ZVByb3Bl
cnR5TWFwPigpOwogICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5zZXRQcml2YXRlUHJvcGVy
dHkodm0sIG93bmVyLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CmluZGV4IGFlM2E2ZmUzYWNmOWM2YTgwMzk0ZTFkNzM0ZmEzMTdkOTA4ZmFlMmMuLjljYTNiNGJm
NDA4NTA3NTBiOGJjNDE5NDlmNzUwNDJiMzU3MjMxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC01OCw3ICs1
OCw3IEBAIGlubGluZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6YXNDYWxsYmFja09iamVjdChFbmNvCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgog
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgdm9pZCogZGF0YSkK
ICAgICA6IFBhcmVudChleGVjLT52bSgpLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2Jq
ZWN0RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0Ns
YXNzKSkKKyAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09i
amVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpKU0NhbGxiYWNrT2JqZWN0KFZNJiB2bSwgSlNDbGFzc1JlZiBqc0NsYXNz
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IFBhcmVudCh2bSwgc3RydWN0dXJlKQotICAg
ICwgbV9jYWxsYmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0
RGF0YT4obnVsbHB0ciwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtl
VW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0NsYXNzKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKaW5kZXggZjFjOWQ1NzAyYThh
YTY5MDQ0ZGZiMjk1YjQ3MWZjZmNiYzg5MGI2Yi4uN2VlYzJhOTBhNDRmODYwYmFhMjI3NmI5NmQ0
NWYyYmQ2ODYxNzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Ns
YXNzUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3Bw
CkBAIC01OSwyMSArNTksMjEgQEAgT3BhcXVlSlNDbGFzczo6T3BhcXVlSlNDbGFzcyhjb25zdCBK
U0NsYXNzRGVmaW5pdGlvbiogZGVmaW5pdGlvbiwgT3BhcXVlSlNDbGFzcyoKICAgICBpbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAKICAgICBpZiAoY29uc3QgSlNTdGF0aWNWYWx1ZSogc3RhdGljVmFs
dWUgPSBkZWZpbml0aW9uLT5zdGF0aWNWYWx1ZXMpIHsKLSAgICAgICAgbV9zdGF0aWNWYWx1ZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKKyAg
ICAgICAgbV9zdGF0aWNWYWx1ZXMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1
ZXNUYWJsZT4oKTsKICAgICAgICAgd2hpbGUgKHN0YXRpY1ZhbHVlLT5uYW1lKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgdmFsdWVOYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdGF0aWNWYWx1ZS0+bmFt
ZSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgICAg
ICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8
U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+
c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAg
ICAgICAgICAgICBtX3N0YXRpY1ZhbHVlcy0+c2V0KHZhbHVlTmFtZS5pbXBsKCksIG1ha2VVbmlx
dWU8U3RhdGljVmFsdWVFbnRyeT4oc3RhdGljVmFsdWUtPmdldFByb3BlcnR5LCBzdGF0aWNWYWx1
ZS0+c2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKICAg
ICAgICAgICAgICsrc3RhdGljVmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoY29u
c3QgSlNTdGF0aWNGdW5jdGlvbiogc3RhdGljRnVuY3Rpb24gPSBkZWZpbml0aW9uLT5zdGF0aWNG
dW5jdGlvbnMpIHsKLSAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKKyAgICAgICAgbV9zdGF0aWNG
dW5jdGlvbnMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4o
KTsKICAgICAgICAgd2hpbGUgKHN0YXRpY0Z1bmN0aW9uLT5uYW1lKSB7CiAgICAgICAgICAgICBT
dHJpbmcgZnVuY3Rpb25OYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdGF0aWNGdW5jdGlvbi0+bmFt
ZSk7CiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAg
ICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0
aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOworICAgICAgICAgICAgICAgIG1fc3Rh
dGljRnVuY3Rpb25zLT5zZXQoZnVuY3Rpb25OYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNG
dW5jdGlvbkVudHJ5PihzdGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0
aW9uLT5hdHRyaWJ1dGVzKSk7CiAgICAgICAgICAgICArK3N0YXRpY0Z1bmN0aW9uOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTI4LDIxICsxMjgsMjEgQEAgT3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
OjpPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEoSlNDOjpWTSYsIE9wYXF1ZUpTQ2xhc3MqIGpzQ2wK
ICAgICA6IG1fY2xhc3MoanNDbGFzcykKIHsKICAgICBpZiAoanNDbGFzcy0+bV9zdGF0aWNWYWx1
ZXMpIHsKLSAgICAgICAgc3RhdGljVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0Ns
YXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CisgICAgICAgIHN0YXRpY1ZhbHVlcyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAgICBPcGFxdWVKU0Ns
YXNzU3RhdGljVmFsdWVzVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGpzQ2xhc3MtPm1fc3Rh
dGljVmFsdWVzLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVz
VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJUKCFpdC0+a2V5LT5pc0F0
b20oKSk7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWVOYW1lID0gaXQtPmtleS0+aXNvbGF0ZWRD
b3B5KCk7Ci0gICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1ZU5hbWUuaW1wbCgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1ZS0+Z2V0UHJvcGVydHks
IGl0LT52YWx1ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1l
KSk7CisgICAgICAgICAgICBzdGF0aWNWYWx1ZXMtPmFkZCh2YWx1ZU5hbWUuaW1wbCgpLCBtYWtl
VW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KGl0LT52YWx1ZS0+Z2V0UHJvcGVydHksIGl0LT52YWx1
ZS0+c2V0UHJvcGVydHksIGl0LT52YWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoanNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMpIHsKLSAg
ICAgICAgc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU+KCk7CisgICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwogICAgICAgICBPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGpzQ2xhc3Mt
Pm1fc3RhdGljRnVuY3Rpb25zLT5lbmQoKTsKICAgICAgICAgZm9yIChPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ID0ganNDbGFzcy0+bV9zdGF0aWNG
dW5jdGlvbnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQVNTRVJU
KCFpdC0+a2V5LT5pc0F0b20oKSk7Ci0gICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChp
dC0+a2V5LT5pc29sYXRlZENvcHkoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5jdGlvbkVu
dHJ5PihpdC0+dmFsdWUtPmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsK
KyAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29weSgp
LCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2FsbEFzRnVuY3Rp
b24sIGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTUx
LDcgKzE1MSw3IEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYgT3BhcXVlSlNDbGFzczo6Y29u
dGV4dERhdGEoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVK
U0NsYXNzQ29udGV4dERhdGE+JiBjb250ZXh0RGF0YSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKS0+b3BhcXVlSlNDbGFzc0RhdGEoKS5hZGQodGhpcywgbnVsbHB0cikuaXRlcmF0b3ItPnZh
bHVlOwogICAgIGlmICghY29udGV4dERhdGEpCi0gICAgICAgIGNvbnRleHREYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMpOwor
ICAgICAgICBjb250ZXh0RGF0YSA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRh
PihleGVjLT52bSgpLCB0aGlzKTsKICAgICByZXR1cm4gKmNvbnRleHREYXRhOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFBy
aXZhdGUuY3BwCmluZGV4IGQ5ZWU2NzQwMzQ5Y2ZlZmRmYmNjMGQzMTA5NGYxZjRkZTVhNTJjMWUu
LmJhNGE1YTE2Njk3YWY1ZjhhOTcyMmU1NzQ2OWUzOTRkOTc5MDQyYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNDb250ZXh0R3JvdXBBZGRNYXJraW5nQ29uc3Ry
YWludChKU0NvbnRleHRHcm91cFJlZiBncm91cCwgSlNNYXJraW5nQ29uc3RyCiAgICAgLy8gZWxz
ZSBnZXRzIG1hcmtlZC4KICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5ID0gQ29u
c3RyYWludFZvbGF0aWxpdHk6OkdyZXllZEJ5TWFya2luZzsKICAgICAKLSAgICBhdXRvIGNvbnN0
cmFpbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PigKKyAgICBh
dXRvIGNvbnN0cmFpbnQgPSBtYWtlVW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PigKICAg
ICAgICAgdG9DU3RyaW5nKCJBbWMiLCBjb25zdHJhaW50SW5kZXgsICIoIiwgUmF3UG9pbnRlcihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFpbnRDYWxsYmFjaykpLCAiKSIpLAogICAgICAgICB0
b0NTdHJpbmcoIkFQSSBNYXJraW5nIENvbnN0cmFpbnQgIyIsIGNvbnN0cmFpbnRJbmRleCwgIiAo
IiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnN0cmFpbnRDYWxsYmFjaykpLCAi
LCAiLCBSYXdQb2ludGVyKHVzZXJEYXRhKSwgIikiKSwKICAgICAgICAgW2NvbnN0cmFpbnRDYWxs
YmFjaywgdXNlckRhdGFdCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
V3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1t
CmluZGV4IGQ0NjliNzVhMzFmMGVmY2E5ZDA3YWJiMDNiMGJlNjYxNjFiMzk1NjcuLjRiNTk5MDcz
ZmU3NmI0ODY0NDM2OTlhYmRjYjM0YzQxNjRiYzJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC02MDYsNyArNjA2LDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWNvbnRleHQKICAg
ICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKICAg
ICBtX2NhY2hlZE9iakNXcmFwcGVycyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlP
cHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBjYXBhY2l0eTowXTsK
IAotICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NN
YXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoY29udGV4dCkt
PnZtKCkpOworICAgIG1fY2FjaGVkSlNXcmFwcGVycyA9IG1ha2VVbmlxdWU8SlNDOjpXZWFrR0NN
YXA8X191bnNhZmVfdW5yZXRhaW5lZCBpZCwgSlNDOjpKU09iamVjdD4+KHRvSlMoY29udGV4dCkt
PnZtKCkpOwogCiAgICAgQVNTRVJUKCF0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT53cmFwcGVy
TWFwKCkpOwogICAgIHRvSlNHbG9iYWxPYmplY3QoY29udGV4dCktPnNldFdyYXBwZXJNYXAoc2Vs
Zik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1
bmN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlv
bi5tbQppbmRleCBlZTkzMjgyMWVmNzRiZDY4OTFhZThmMjlmYWQ3YmJhNWFmZWEwY2JjLi43M2Ni
NDI3MDQzODE4MzFlODE5ZDlkOTQzZWI5ZTU0NDAzMDk2ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KQEAgLTE5NSwxOCArMTk1
LDE4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrQXJndW1lbnRJbnRlZ2VyPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudERvdWJsZTxU
Pj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudERvdWJsZTxU
Pj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQm9vbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50Qm9vbGVhbj4o
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJvb2xlYW4+KCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQpAQCAtMjE3LDcgKzIx
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJZCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SWQ+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRJZD4oKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlT2ZDbGFzcyhjb25zdCBjaGFyKiBiZWdpbiwgY29u
c3QgY2hhciogZW5kKQpAQCAtMjI4LDE5ICsyMjgsMTkgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgaWYgKGNscyA9PSBbSlNWYWx1ZSBjbGFzc10pCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SlNWYWx1
ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRKU1Zh
bHVlPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU1N0cmluZyBjbGFzc10pCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmc+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmc+KCk7
CiAgICAgICAgIGlmIChjbHMgPT0gW05TTnVtYmVyIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051bWJlcj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU051bWJlcj4oKTsKICAgICAg
ICAgaWYgKGNscyA9PSBbTlNEYXRlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RhdGU+KCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOwogICAgICAgICBpZiAoY2xzID09
IFtOU0FycmF5IGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
bGxiYWNrQXJndW1lbnROU0FycmF5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TQXJyYXk+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGljdGlv
bmFyeSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFj
a0FyZ3VtZW50TlNEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKikKQEAg
LTI1Miw3ICsyNTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5
KGJlZ2luLCBlbmQpOwogICAgICAgICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdmFs
dWVUb1R5cGVJbnZvY2F0aW9uRm9yKGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50U3RydWN0PihpbnZvY2F0
aW9uLCBjb3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAgLTMzNSw0
NSArMzM1LDQ1IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRp
YyBSZXN1bHRUeXBlIHR5cGVJbnRlZ2VyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZURvdWJsZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8
VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxU
Pj4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQm9vbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdEJvb2xlYW4+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0Qm9vbGVhbj4oKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4oKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlT2ZD
bGFzcyhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBl
IHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1
bHRUeXBlIHR5cGVTdHJ1Y3QoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkKICAg
ICB7CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAgICAgIGlmIChO
U0ludm9jYXRpb24gKmludm9jYXRpb24gPSB0eXBlVG9WYWx1ZUludm9jYXRpb25Gb3IoY29weSkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdFN0cnVj
dD4oaW52b2NhdGlvbiwgY29weSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxs
YmFja1Jlc3VsdFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIH07CkBAIC02NjIsNyArNjYyLDcgQEAgc3RhdGljIEpTT2JqZWN0UmVmIG9i
akNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbihKU0NvbnRleHQgKmNvbnRleHQsIE5TSW52
b2MKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSk7CiAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgYXV0byBpbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6
Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFz
cywgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOworICAgIGF1dG8gaW1wbCA9
IG1ha2VVbmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5
cGUsIGluc3RhbmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsK
ICAgICBjb25zdCBTdHJpbmcmIG5hbWUgPSBpbXBsLT5uYW1lKCk7CiAgICAgcmV0dXJuIHRvUmVm
KEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBuYW1lLCBXVEZNb3ZlKGltcGwpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKaW5kZXggZTAxZTk3MGM3ZjU4MDM2NTYxOGVm
MWRhYjg1NTQ0ZDcwNGY5YjQ3YS4uNzhkNzY1NWZmODA3NzYwZDQ2MDhhNjE3ZTU3YzkwZjE1NDI3
OTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIGpzY0NvbnRleHRTZXRWaXJ0dWFsTWFj
aGluZShKU0NDb250ZXh0KiBjb250ZXh0LCBHUmVmUHRyPEpTQ1ZpcnR1YWxNCiAgICAgICAgICAg
ICBwcml2LT5qc0NvbnRleHQgPSBKU1JldGFpblB0cjxKU0dsb2JhbENvbnRleHRSZWY+KEFkb3B0
LCBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKGpzY1ZpcnR1YWxNYWNoaW5lR2V0Q29udGV4
dEdyb3VwKHByaXYtPnZtLmdldCgpKSwgbnVsbHB0cikpOwogICAgICAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSB0b0pTR2xvYmFsT2JqZWN0KHByaXYtPmpzQ29udGV4dC5nZXQoKSk7CiAgICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0LT53cmFwcGVyTWFwKCkpCi0gICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldFdyYXBwZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxKU0M6OldyYXBwZXJNYXA+KHByaXYt
PmpzQ29udGV4dC5nZXQoKSkpOworICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRXcmFwcGVy
TWFwKG1ha2VVbmlxdWU8SlNDOjpXcmFwcGVyTWFwPihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsK
ICAgICAgICAganNjVmlydHVhbE1hY2hpbmVBZGRDb250ZXh0KHByaXYtPnZtLmdldCgpLCBjb250
ZXh0KTsKICAgICB9IGVsc2UgaWYgKHByaXYtPnZtKSB7CiAgICAgICAgIEFTU0VSVChwcml2LT5q
c0NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q1dyYXBwZXJNYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBw
ZXJNYXAuY3BwCmluZGV4IDExYmI3YzBiODczN2RiNjdkZDE3ZGNkMjRmNzAyOTQzNDQ2OWE4MDMu
LmY1MjNlYTQxOTlmOGFiZDczMmY3N2I2MjgxNDEyMDEzNGJiOGJlYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKEpTR2xvYmFs
Q29udGV4dFJlZiBqc0NvbnRleHQpCi0gICAgOiBtX2NhY2hlZEpTV3JhcHBlcnMoc3RkOjptYWtl
X3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09iamVjdD4+KHRvSlMoanND
b250ZXh0KS0+dm0oKSkpCisgICAgOiBtX2NhY2hlZEpTV3JhcHBlcnMobWFrZVVuaXF1ZTxKU0M6
OldlYWtHQ01hcDxncG9pbnRlciwgSlNDOjpKU09iamVjdD4+KHRvSlMoanNDb250ZXh0KS0+dm0o
KSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3Rh
Y2suY3BwCmluZGV4IGE3NWY1OGRjMTQ2YjNiNjQ5NWNlYjE2N2FkZjRkYWJmZjA2YjBjODkuLmRh
NDc3MDUxZjM0NWUwNzE2OGZjN2QwNmUwYzdmNTI2MzExODZlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBA
IFBhZ2UqIFN0YWNrOjplbnN1cmVQYWdlRm9yKHZvaWQqIGFkZHJlc3MpCiAgICAgaWYgKExJS0VM
WShpdCAhPSBtX3BhZ2VzLmVuZCgpKSkKICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gaXQt
PnZhbHVlLmdldCgpOwogICAgIGVsc2UgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4g
cGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oYmFzZUFkZHJlc3MpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZT4gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oYmFzZUFkZHJlc3MpOwog
ICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZXMuYWRkKGJhc2VBZGRyZXNzLCBXVEZNb3ZlKHBh
Z2UpKTsKICAgICAgICAgbV9sYXN0QWNjZXNzZWRQYWdlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CmluZGV4IDJjOWMzYjBkZTg5ZWIzZTM4M2Y0Y2JkY2YyMTJkMjY4YzFjMTlkYmEuLjdmNjg1ODZj
MWMwMjg5YzBhMzI1MjJmZGU5ZTA2N2RmMWY0MWUyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xMjQxLDcgKzEyNDEsNyBAQCBjbGFzcyBMb3dlclRv
QWlyIHsKICAgICB2b2lkIHByaW50KFZhbHVlKiBvcmlnaW4sIEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gcHJpbnRMaXN0ID0gUHJpbnRlcjo6bWFrZVByaW50
UmVjb3JkTGlzdChhcmd1bWVudHMuLi4pOwotICAgICAgICBhdXRvIHByaW50U3BlY2lhbCA9IHN0
YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtl
X3VuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOworICAgICAgICBhdXRvIHBy
aW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEFpcjo6UHJpbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwobWFrZVVuaXF1ZTxBaXI6OlByaW50U3BlY2lhbD4ocHJpbnRMaXN0KSkpOwogICAgICAg
ICBJbnN0IGluc3QoQWlyOjpQYXRjaCwgb3JpZ2luLCBBcmc6OnNwZWNpYWwocHJpbnRTcGVjaWFs
KSk7CiAgICAgICAgIFByaW50ZXI6OmFwcGVuZEFpckFyZ3MoaW5zdCwgc3RkOjpmb3J3YXJkPEFy
Z3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiAgICAgICAgIGFwcGVuZChXVEZNb3ZlKGluc3QpKTsK
QEAgLTEzMDgsNyArMTMwOCw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgIHsKICAgICAgICAg
aWYgKCFmaWVsZCkgewogICAgICAgICAgICAgZmllbGQgPSBzdGF0aWNfY2FzdDxUKj4oCi0gICAg
ICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOworICAgICAgICAgICAgICAgIG1fY29k
ZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLikpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggZmZjYjJkNGUyNzE0NDI5
NzBlNTQ2NDM2NjcwZjdmMjlkZWIxYWIxYy4uMmVjY2RhYzA0OWU2OGQxMTNlMjNmOTdmMjQzNTNh
NWQ0YWFhM2I5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2Vk
dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogUHJvY2VkdXJl
OjpQcm9jZWR1cmUoKQogICAgIDogbV9jZmcobmV3IENGRygqdGhpcykpCiAgICAgLCBtX2xhc3RQ
aGFzZU5hbWUoImluaXRpYWwiKQotICAgICwgbV9ieXByb2R1Y3RzKHN0ZDo6bWFrZV91bmlxdWU8
T3BhcXVlQnlwcm9kdWN0cz4oKSkKKyAgICAsIG1fYnlwcm9kdWN0cyhtYWtlVW5pcXVlPE9wYXF1
ZUJ5cHJvZHVjdHM+KCkpCiAgICAgLCBtX2NvZGUobmV3IEFpcjo6Q29kZSgqdGhpcykpCiB7CiAg
ICAgbV9jb2RlLT5zZXROdW1FbnRyeXBvaW50cyhtX251bUVudHJ5cG9pbnRzKTsKQEAgLTMxMSwy
OCArMzExLDI4IEBAIHZvaWQgUHJvY2VkdXJlOjpkZWxldGVPcnBoYW5zKCkKIERvbWluYXRvcnMm
IFByb2NlZHVyZTo6ZG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFtX2RvbWluYXRvcnMpCi0gICAg
ICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwor
ICAgICAgICBtX2RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPERvbWluYXRvcnM+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fZG9taW5hdG9yczsKIH0KIAogTmF0dXJhbExvb3BzJiBQcm9jZWR1cmU6Om5h
dHVyYWxMb29wcygpCiB7CiAgICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAg
ICBtX25hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX25hdHVyYWxMb29wczsKIH0KIAogQmFja3dhcmRzQ0ZHJiBQcm9jZWR1cmU6OmJh
Y2t3YXJkc0NGRygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9iYWNr
d2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAgICAg
ICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIAogQmFja3dhcmRzRG9taW5hdG9ycyYgUHJvY2Vk
dXJlOjpiYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKICAgICBpZiAoIW1fYmFja3dhcmRzRG9taW5h
dG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxC
YWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9y
cyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAq
bV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCogUHJv
Y2VkdXJlOjphZGREYXRhU2VjdGlvbihzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNpemUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhU2VjdGlvbj4g
ZGF0YVNlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0gbWFrZVVuaXF1ZTxEYXRh
U2VjdGlvbj4oc2l6ZSk7CiAgICAgdm9pZCogcmVzdWx0ID0gZGF0YVNlY3Rpb24tPmRhdGEoKTsK
ICAgICBtX2J5cHJvZHVjdHMtPmFkZChXVEZNb3ZlKGRhdGFTZWN0aW9uKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29k
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IDMz
ZjhhYmZlZmJjMWY4ZjkxNjU0NWEzYmRjYTE5NmIwY2M2NmMzOTguLmQ1ZDY5YzMwYTU5OTE3NWYy
ODE0ODM2Mjg2MzZmY2I3NzA2ODAxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIENDYWxsU3BlY2lhbCogQ29kZTo6Y0NhbGxT
cGVjaWFsKCkKIHsKICAgICBpZiAoIW1fY0NhbGxTcGVjaWFsKSB7CiAgICAgICAgIG1fY0NhbGxT
cGVjaWFsID0gc3RhdGljX2Nhc3Q8Q0NhbGxTcGVjaWFsKj4oCi0gICAgICAgICAgICBhZGRTcGVj
aWFsKHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7CisgICAgICAgICAgICBhZGRT
cGVjaWFsKG1ha2VVbmlxdWU8Q0NhbGxTcGVjaWFsPigpKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IG1fY0NhbGxTcGVjaWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcAppbmRleCBmMzZiOWIyZmU2NjgxNjBiODg5OWIwYzUwYjMxOTdkNzU4ODI0ZjgwLi45
NWNhYTAwNGQ4ZWIzOTIzMzBlMWNjYmI2MzlhNWNlZTc5Y2JjNzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAgICAgICAgIGRhdGFMb2co
Y29kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJl
Z2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4o
Y29kZSk7CisgICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gbWFr
ZVVuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2RlKTsKICAgICAgICAgY29k
ZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMtPnByZXBhcmVGb3JHZW5lcmF0aW9uKCk7
CiAKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci90ZXN0YWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5j
cHAKaW5kZXggZWYxNTQ0YzA3YmIzMmE5MDM3ZjJjYjcxZTE1ZTc0YTliZTYxYmY5NC4uM2RjYTI5
Njc4OGIwMDEwNjhlMDFmNDIzZTExNmM3YzJhNGU3ZGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL3Rlc3RhaXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxC
Mzo6Q29tcGlsYXRpb24+IGNvbXBpbGUoQjM6OlByb2NlZHVyZSYgcHJvYykKICAgICBnZW5lcmF0
ZShwcm9jLmNvZGUoKSwgaml0KTsKICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBudWxs
cHRyKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVf
Q09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAidGVzdGFpciBjb21waWxhdGlv
biIpLCBwcm9jLnJlbGVhc2VCeXByb2R1Y3RzKCkpOwogfQogCkBAIC0xODU1LDcgKzE4NTUsNyBA
QCB2b2lkIHRlc3RJbnZhbGlkYXRlQ2FjaGVkVGVtcFJlZ2lzdGVycygpCiAgICAgcm9vdC0+YXBw
ZW5kKE1vdmUsIG51bGxwdHIsIEFyZzo6YmlnSW1tKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oJnRo
aW5ncykpLCBiYXNlKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBwYXRjaFBvaW50MVJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7Ci0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwg
PSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRT
cGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIC8vIElu
IFBhdGNocG9pbnQsIExvYWQgdGhpbmdzWzBdIC0+IHRtcC4gVGhpcyB3aWxsIG1hdGVyaWFsaXpl
IHRoZSBhZGRyZXNzIGluIHgxNyAoZGF0YU1lbW9yeVJlZ2lzdGVyKS4KICAgICBCMzo6UGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50MSA9IHBhdGNoUG9pbnQxUm9vdC0+YXBwZW5kTmV3PEIzOjpQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTkzMCw3
ICsxOTMwLDcgQEAgdm9pZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQoKQogICAgIEdQUlJlZyBwaW5u
ZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQp
OwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNw
ZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIz
OjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VV
bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBi
M1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpW
b2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgdm9pZCB0ZXN0QXJndW1l
bnRSZWdQaW5uZWQyKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIw
OwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwq
IHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6
OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50
U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lh
bD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwog
ICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxC
Mzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTIw
MDAsNyArMjAwMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkMygpCiAgICAgR1BSUmVn
IHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBp
bm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUu
YWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7Cisg
ICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwo
bWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxv
Y2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywg
QjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKaW5kZXgg
MTU1Y2E0YWI0NzBiMDE0NDJhZDk1NDNhOGFlMWZjMWZjNTlmN2UzYS4uMWM3YWQwZjk0ZTA2Yjhj
MzFiZmU3Y2M5NGQwNTUyYzQ3Nzk2MDdlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaApA
QCAtMTg5LDcgKzE4OSw3IEBAIGV4dGVybiBMb2NrIGNyYXNoTG9jazsKIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNvbXBpbGVQcm9jKFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1
bnNpZ25lZCBvcHRMZXZlbCA9IE9wdGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCkpCiB7CiAgICAg
cHJvY2VkdXJlLnNldE9wdExldmVsKG9wdExldmVsKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDb21waWxhdGlvbj4oQjM6OmNvbXBpbGUocHJvY2VkdXJlKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKaW5kZXggYzEwODU5YWNlZDNkYjc4YjY2
NDk3NmEwOGI4ZTViNDhkNjUyYjJmMy4uNzdmYjY1ZGEwYjdhMDZjN2Q2NThiYWJkYjRlNTEwOGE3
OTE3ZWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcApAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKEFj
Y2Vzc0dlbmVyYXRpb25TdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBzdGF0ZS5zZXRTcGlsbFN0
YXRlRm9ySlNHZXR0ZXJTZXR0ZXIoc3BpbGxTdGF0ZSk7CiAKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFhY2Nlc3MuY2FsbExpbmtJbmZvKCkpOwotICAgICAgICAgICAgYWNjZXNzLm1fY2Fs
bExpbmtJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua0luZm8+KCk7CisgICAgICAgICAg
ICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBtYWtlVW5pcXVlPENhbGxMaW5rSW5mbz4oKTsKIAog
ICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGdlbmVyYXRlZCBhIHBvbHltb3JwaGljIGNhbGwg
c3R1YiB0aGF0IGp1bXBlZCBiYWNrIHRvIHRoZSBnZXR0ZXIKICAgICAgICAgICAgIC8vIHN0dWIs
IHdoaWNoIHRoZW4ganVtcGVkIGJhY2sgdG8gdGhlIG1haW4gY29kZSwgdGhlbiB3ZSdkIGhhdmUg
YSByZWFjaGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCmluZGV4IDJiZDlmZTY1MTk5ZDA3ZjE3
M2UzODMwZGM3NGU0NjdlYjlkNTQxZmMuLjkyNTdmYzIyNjY1MjlmODYxMzdkNWRhZDhjOTI0OTcx
ODM5MDQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlU25pcHBldFBhcmFtcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNz
IFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHMgOiBwdWJsaWMgQWNjZXNzQ2FzZVNu
aXBwZXRQYXJhbXM6OlNsb3dQCiAgICAgdm9pZCBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6YWRk
U2xvd1BhdGhDYWxsSW1wbChDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGZyb20sIENDYWxsSGVscGVy
cyYgaml0LCBPcGVyYXRpb25UeXBlIG9wZXJhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHQsIHN0ZDo6
dHVwbGU8X19WQV9BUkdTX18+IGFyZ3MpIFwKICAgICB7IFwKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpMYWJlbCB0byA9IGppdC5sYWJlbCgpOyBcCi0gICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzPENDYWxs
SGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIF9fVkFfQVJHU19f
Pj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKKyAgICAgICAgbV9nZW5l
cmF0b3JzLmFwcGVuZChtYWtlVW5pcXVlPFNsb3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVu
dHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwgT3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgX19W
QV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAogICAgIH0g
XAogCiBTTklQUEVUX1NMT1dfUEFUSF9DQUxMUyhKU0NfREVGSU5FX0NBTExfT1BFUkFUSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHAKaW5kZXggMzNiYjBjMDY2MzUzODFlODk4ZjY1YTg3NGYxZjM2YThjOTQ4MjNhZi4u
MTBjNjViYjlkZDcwOWE5YWY3YWJhNmNlYjhhOWI3MzU5NzcxNjQxYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAg
LTY1LDE1ICs2NSwxNSBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgLy8gQ3JlYXRlIHRo
ZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNh
cGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwogCi0gICAgYXV0byBlbnRyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5
QmxvY2spOwotICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1dG8gZW50
cnkgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpF
bnRyeUJsb2NrKTsKKyAgICBhdXRvIGZpcnN0QmxvY2sgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlQmFz
aWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKICAgICBsaW5rQmxvY2tz
KGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAogICAgIGFwcGVuZEJsb2NrKFdURk1v
dmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJsb2Nr
LmdldCgpOwogICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCi0gICAgYXV0
byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFz
aWNCbG9jazo6RXhpdEJsb2NrKTsKKyAgICBhdXRvIGV4aXQgPSBtYWtlVW5pcXVlPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBu
ZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
bnN0cnVjdGlvblN0cmVhbSYKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKICAg
ICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBqdW1wIHRhcmdldCwgdGhlbiBp
dCdzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBiYXNpYyBibG9jay4KICAgICAgICAgaWYgKGlzSnVt
cFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5z
dHJ1Y3Rpb25Jc0xlYWRlcikgewotICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0cnVjdGlvbik7CisgICAgICAgICAgICBh
dXRvIG5ld0Jsb2NrID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGluc3RydWN0aW9u
KTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKICAgICAgICAgICAgIGFw
cGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCmluZGV4IGQ4ZGFjMTU4NWZhYjJiOTk4YzFlNWQ4ODc1MmJhMTJkZjZkYWRiZGUuLjM5M2Yx
ODI0ZTQxYTRiZWI1MTRjNjJhNjk2ZjMzYTgzNzI0OTVjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAg
dm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhWTSYgdm0pCiAKIHZvaWQgQ2FsbExpbmtJbmZv
OjpzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRhJiBzaHVmZmxl
RGF0YSkKIHsKLSAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxG
cmFtZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0YSk7CisgICAgbV9mcmFtZVNodWZmbGVEYXRhID0g
bWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggZWYxY2FiZmE3MThiMDgwZDdmM2U4NjM3ZjlmOTRmNjA1ODZlZTRlOC4uMzlh
MjNiNGM3ZjQ3ZDhmY2U1ZTMwZWVjYTU1MGU3N2RhZDMxNTg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKIENvZGVCbG9jazo6SklU
RGF0YSYgQ29kZUJsb2NrOjplbnN1cmVKSVREYXRhU2xvdyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImKQogewogICAgIEFTU0VSVCghbV9qaXREYXRhKTsKLSAgICBtX2ppdERhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpJVERhdGE+KCk7CisgICAgbV9qaXREYXRhID0gbWFrZVVuaXF1ZTxKSVREYXRh
PigpOwogICAgIHJldHVybiAqbV9qaXREYXRhOwogfQogCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCB1
bnNpZ25lZCBDb2RlQmxvY2s6OnJhcmVDYXNlUHJvZmlsZUNvdW50Rm9yQnl0ZWNvZGVPZmZzZXQo
Y29uc3QgQ29uY3VycmVudEpTTG9jawogdm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdp
c3RlcnMoUmVnaXN0ZXJTZXQgY2FsbGVlU2F2ZVJlZ2lzdGVycykKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1fY2Fs
bGVlU2F2ZVJlZ2lzdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+
KGNhbGxlZVNhdmVSZWdpc3RlcnMpOworICAgIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX2NhbGxl
ZVNhdmVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihjYWxsZWVT
YXZlUmVnaXN0ZXJzKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3Rl
cnMoc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3RlckF0T2Zmc2V0
TGlzdCkKQEAgLTE3OTAsNyArMTc5MCw3IEBAIHZvaWQgQ29kZUJsb2NrOjplbnN1cmVDYXRjaExp
dmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2RlT2Zmc2V0U2xvdyhjb25zdCBPcENhdGNoCiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKICAgICAgICAgbGl2ZU9w
ZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CiAKLSAgICBhdXRv
IHByb2ZpbGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
PihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICBhdXRvIHByb2ZpbGVzID0gbWFrZVVuaXF1ZTxW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKICAgICBS
RUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCiAgICAg
ICAgIHByb2ZpbGVzLT5tX2J1ZmZlci5nZXQoKVtpXS5tX29wZXJhbmQgPSBsaXZlT3BlcmFuZHNb
aV0ub2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggODcwNjhiYTY1ZGQ4NWMyM2ZiZTRhNDkwZTk3NGE3MjgxZjI1NjA0Yy4uMzE0MzhlMGFj
NTA2OWIyNzQ5Njk4ODg2YWIxMTIwMDc2YmNiNzNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtOTQzLDcgKzk0Myw3IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gcmFy
ZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICAgICAgYXV0byBy
YXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOyAvLyBtX2NhdGNoUHJvZmlsZXMgY2FuIGJlIHRvdWNoZWQgZnJvbSBjb21w
aWxlciB0aHJlYWRzLgogICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdURk1vdmUocmFyZURhdGEp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmNwcAppbmRleCAyZDk0MzFjZjBiMTQ0ZmEzYTJjMjIxYTY2ZTk0MDcwYzc3NTBl
MGUwLi5iMWEwMWZmYTRkOTM0OGZlY2IyNGM5Njg4YmM4MDA1MmY5Mzg4NmE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgYm9vbCBFeGl0UHJvZmlsZTo6YWRkKENvZGVCbG9jayogb3duZXIsIGNvbnN0
IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgc2VlbiBhbnkg
ZnJlcXVlbnQgZXhpdHMgdGhlbiBjcmVhdGUgdGhlIGxpc3QgYW5kIHB1dCB0aGlzIHNpdGUKICAg
ICAvLyBpbnRvIGl0LgogICAgIGlmICghcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzKSB7Ci0g
ICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVj
dG9yPEZyZXF1ZW50RXhpdFNpdGU+PigpOworICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0
U2l0ZXMgPSBtYWtlVW5pcXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKICAgICAgICAg
cHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzLT5hcHBlbmQoc2l0ZSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKaW5kZXggNGY0OGExZDZj
OTg3MjJlNWFjMmVjZTg3ZTUwNDAyMzJmOWE1ZDZiMS4uNGZiMTE1NzMwMDNiNTJlZmQ5YTg2NmZi
M2JkZjc3NTA5OGNlZmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgdm9pZCBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmNvbXBpbGF0aW9uRGlk
Q29tcGxldGUoQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiwKIFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1
bXA+JiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s6OmVuc3VyZURlZmVycmVkU291cmNlRHVt
cCgpCiB7CiAgICAgaWYgKCFtX2RlZmVycmVkU291cmNlRHVtcCkKLSAgICAgICAgbV9kZWZlcnJl
ZFNvdXJjZUR1bXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+
PigpOworICAgICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IG1ha2VVbmlxdWU8VmVjdG9yPERl
ZmVycmVkU291cmNlRHVtcD4+KCk7CiAgICAgcmV0dXJuICptX2RlZmVycmVkU291cmNlRHVtcDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRT
dGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCmluZGV4IGRiOWFkMTYwYWMyODEzMGYzOTg0MWZmM2JmZWIzMmI2ODNkZGVhZDYuLmRmNGQ3
N2NlM2Y2M2I1MjAwNzU1NDRjNDFhMTZjYjIzMWQ3ZGZhNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKQEAgLTI0Myw3ICsyNDMsNyBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRF
eGl0U2l0ZUZlZWRiYWNrKAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpHZXR0ZXI6IHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5r
U3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cyA9IG1ha2VVbmlx
dWU8Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLmNh
bGxMaW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtTdGF0dXMg
PSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5j
cHAKaW5kZXggZmMxZjQ2MGRlOTY1NDFkOGZhMDk5Y2JiNDVmMjMwOWMyYTMzMzgwZi4uZWQ4ZDQ5
M2Y3ZWU2ZjFkYTJiOTA5YWQ1N2M2Mjc3MTgxM2MyZDZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBA
IEdldEJ5SWRWYXJpYW50JiBHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBvdGhlcikKICAgICBtX2N1c3RvbUFjY2Vzc29yR2V0dGVyID0gb3RoZXIubV9jdXN0
b21BY2Nlc3NvckdldHRlcjsKICAgICBtX2RvbUF0dHJpYnV0ZSA9IG90aGVyLm1fZG9tQXR0cmli
dXRlOwogICAgIGlmIChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5r
U3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExp
bmtTdGF0dXMpOworICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9j
YWxsTGlua1N0YXR1cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5jcHAKaW5kZXggMDkyOWQ2ZmI0MTI2NzRlZDdmMjA0MDQ1ZmI0MjVlYjdkMzhkM2M5My4uNmVl
YjE0NWIzMzc5NjYyYWYxYzE1MDAxOTA3NjcyN2EzOWVlMmJkYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKiBDb21wcmVzc2Vk
TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCgKICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KQogewogICAg
IGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExhenlPcGVy
YW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOworICAgICAgICBtX2RhdGEgPSBtYWtlVW5pcXVlPExh
enlPcGVyYW5kVmFsdWVQcm9maWxlOjpMaXN0PigpOwogICAgIGVsc2UgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kYXRhLT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
aWYgKG1fZGF0YS0+YXQoaSkua2V5KCkgPT0ga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAppbmRleCBiNDllNGUyNDJl
NTJmMDgxMzE1ZTQ4ZmIxZTFiY2MyOTdlNTI4YWUwLi5hMWVjYjk0ZGQwZDE4NjcwODYzNTJmNTJi
NWI1OGMzMTkzZWVjZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBQb2x5
UHJvdG9BY2Nlc3NDaGFpbiB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IGNsb25lKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBv
bHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBv
bHlQcm90b0FjY2Vzc0NoYWluPigqdGhpcyk7CiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPFN0
cnVjdHVyZSo+JiBjaGFpbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhaW47IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCmluZGV4
IDIyZjQ1NTgxNGI4NGFmNGZlNzRjYWYyMzQwMWQzMGFkYWRhZTVjNmUuLjNiMzAyMzM5ZjAzNTBk
YWM0MjhmM2YwNGNjNzM1MmEzYWU1MjFiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApAQCAtNjE2LDcgKzYxNiw3IEBA
IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUoCiAg
ICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2RlQmxv
Y2ssIGRvZXNDYWxscywgY2VsbHNUb01hcmssIGNvZGVCbG9ja1RoYXRPd25zRXhjZXB0aW9uSGFu
ZGxlcnMsIGNhbGxTaXRlSW5kZXhGb3JFeGNlcHRpb25IYW5kbGluZyk7CiAgICAgbV93YXRjaHBv
aW50cyA9IFdURk1vdmUoc3RhdGUud2F0Y2hwb2ludHMpOwogICAgIGlmICghc3RhdGUud2Vha1Jl
ZmVyZW5jZXMuaXNFbXB0eSgpKQotICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtS
ZWZlcmVuY2VzKSk7CisgICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsK
ICAgICBpZiAoUG9seW1vcnBoaWNBY2Nlc3NJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygiUmV0dXJuaW5nOiAiLCBjb2RlLmNvZGUoKSwgIlxuIik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKaW5kZXggYzJkOTUz
MjBjZWJkNTZkYmRjOTNlZWJkNmMzMTQwYTdkZjdjYzIwOS4uZDY0MmJjY2ZlNzk3NjZjNTI3OWJi
YzgxMDg3MDFlYjdmODU4MjRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKAogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OklubGluZWFibGU6IHsKICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPiBjYWxsTGlu
a1N0YXR1cyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPENhbGxM
aW5rU3RhdHVzPigpOworICAgICAgICAgICAgICAgICAgICAgICAgbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gYWNjZXNzLmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZv
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICpjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwg
cHJvZmlsZWRCbG9jaywgKmNhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAppbmRleCA1
ZDZiMjkwNDVjYTY3NWM1NmZhNzFkNTQ3NWExMTViMmRmNmYzYzVlLi43MmM2Y2FjODRmYjI3YmNm
NWU0MTdjNDk2ZTYzNjJmNzJlNmMwYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUHV0QnlJZFZh
cmlhbnQmIFB1dEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgUHV0QnlJZFZhcmlhbnQmIG90
aGVyKQogICAgIG1fY29uZGl0aW9uU2V0ID0gb3RoZXIubV9jb25kaXRpb25TZXQ7CiAgICAgbV9v
ZmZzZXQgPSBvdGhlci5tX29mZnNldDsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykK
LSAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0
dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9
IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAg
ICBlbHNlCiAgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAq
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmNwcAppbmRleCA5NmQyMmVjZmEwYTRjNzU2ZWRmZjYxZjAwMTNmNzI1OGU3ZDNmYmQ1
Li41M2YyMDhiY2FkZWQzZGVhMmRlZTE4YTBlODk2MDVjNDkwYTE5NWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFJlY29yZGVkU3RhdHVzZXM6OlJlY29yZGVkU3RhdHVzZXMoUmVjb3JkZWRT
dGF0dXNlcyYmIG90aGVyKQogCiBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRk
Q2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgQ2FsbExp
bmtTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5p
cXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOwogICAgIENhbGxMaW5rU3RhdHVzKiByZXN1bHQg
PSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVP
cmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01Myw3
ICs1Myw3IEBAIENhbGxMaW5rU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luCiAKIEdldEJ5SWRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVz
UHRyID0gbWFrZVVuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIEdldEJ5SWRTdGF0
dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNjEsNyArNjEsNyBAQCBHZXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRH
ZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sCiAgICAgCiBQdXRCeUlk
U3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4sIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRv
IHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAg
ICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKICAg
ICBQdXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgcHV0cy5hcHBl
bmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTY5LDcgKzY5LDcgQEAgUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRT
dGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAog
CiBJbkJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEluQnlJZFN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBJbkJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAg
ICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5CeUlkU3RhdHVzPihzdGF0dXMp
OworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7
CiAgICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgaW5zLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCmluZGV4
IDMwYTFmMDU1MjU5ZTNkZWQxYTcxNjhlZTM1MjZmNzJjMDg0YmVlNWEuLmZjYzI5MTE4MDI0NGUw
YjMyMjllMmZkNzYzMDA3YmU3OWE4NzQxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2lu
dCogV2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2UKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiBrZXkpCiB7CiAgICAgaWYgKCFob2xkZXJSZWYpCi0gICAgICAgIGhvbGRlclJlZiA9IHN0ZDo6
bWFrZV91bmlxdWU8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0
dWJJbmZvKTsKKyAgICAgICAgaG9sZGVyUmVmID0gbWFrZVVuaXF1ZTxXYXRjaHBvaW50c09uU3Ry
dWN0dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOwogICAgIGVsc2UgewogICAgICAg
ICBBU1NFUlQoaG9sZGVyUmVmLT5tX2NvZGVCbG9jayA9PSBjb2RlQmxvY2spOwogICAgICAgICBB
U1NFUlQoaG9sZGVyUmVmLT5tX3N0dWJJbmZvID09IHN0dWJJbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IDcy
MjJkNDgyYWQxZTVlMjg2Y2VmNTlkNGZmMWUxZjVlYjA3MTA3OGQuLjQ5MTk1ZDE1NzIxZDJjZGE0
Zjc0OGFlOGRiZTJhZjAwOWEyOGE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQgU3RydWN0dXJlU3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UoCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNj
ZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxQb2x5bW9ycGhpY0FjY2Vzcz4oKTsKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vzcz4gYWNjZXNzID0gbWFrZVVuaXF1ZTxQ
b2x5bW9ycGhpY0FjY2Vzcz4oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiwgMj4gYWNjZXNzQ2FzZXM7CiAgICAgICAgICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IGUwMDZkMTZiOWI4YTBmYzMwZjA0MzNjZGU2MDJlY2MzYjE2OGQ0MmUuLjJj
OWEwYjMwMWViMDk4ZTExNWVmMWUzNmIxMjdiZTI5ZTNhYmRhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtNDE0
LDcgKzQxNCw3IEBAIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgVW5saW5rZWRDb2RlQmxvY2s6
OmxpdmVuZXNzQW5hbHlzaXNTbG93KENvZGVCbG9jayogY29kCiAgICAgICAgIGlmICghbV9saXZl
bmVzcykgewogICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSBjaGFuY2UgdHdvIGNvbXBpbGVyIHRo
cmVhZHMgcmFjZWQgdG8gdGhlIHNsb3cgcGF0aC4KICAgICAgICAgICAgIC8vIEdyYWJiaW5nIHRo
ZSBsb2NrIGFib3ZlIGRlZmVuZHMgYWdhaW5zdCBjb21wdXRpbmcgbGl2ZW5lc3MgdHdpY2UuCi0g
ICAgICAgICAgICBtX2xpdmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM+KGNvZGVCbG9jayk7CisgICAgICAgICAgICBtX2xpdmVuZXNzID0gbWFrZVVuaXF1
ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KGNvZGVCbG9jayk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCmluZGV4IDQzNzA5NTE5ZWI2MTZlMjY1MTA2ZWYxZDU1Mjk2MTdkNjQ1YzliYzku
LjUxMjUzNmMwZDQ0ODU3YTRjYTc2ZTgxM2ZlMTQ4MDNhOTczZmZhNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00MDIs
NyArNDAyLDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkgewogICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBsb2NrRHVyaW5nTWFya2luZygqaGVhcCgpLCBjZWxsTG9jaygpKTsKLSAgICAgICAgICAgIG1f
cmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9y
YXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IGZiZWM5ZjcyY2EyZmQxYTE4YmFjYjA3M2U2ODcy
NTRiNzBiOWViZTEuLjQ5ZDlkMmZkM2U2ZmU5ZmI0YjUyN2Y2NzdhYmQ1YmQ0YTUxMjI2Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZUNhY2hlZENvZGVCbG9ja3MoVk0mIHZtKQogVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOwot
ICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgIG1fcmFy
ZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJldHVybiAqbV9yYXJlRGF0YTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCmluZGV4IGU5NzY4NmFhM2VkY2RkOGQzZjliNTdjNGE2ZDEyM2JhYzlj
YjM5ODcuLjE3OGE2MWRmNjkxMzNhZmRjYzEyNzI4Y2JmZDk2ZWIzOWY0MmFlYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKQEAgLTQwMSw3ICs0MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAogICAgICAgICAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwotICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVC
bG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCk7CisgICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIG5v
ZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlvbk1vZGUsIGVudmlyb25tZW50KTsK
ICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYnl0ZWNvZGVHZW5lcmF0b3ItPmdlbmVyYXRlKCk7
CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpyZXBvcnRCeXRlY29kZUNvbXBp
bGVUaW1lcygpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApp
bmRleCBiY2Q3MmVhMDlmNWY3MTdhNjVmNjVkN2QyZWZjMTc1ZTAyM2U2OTkwLi5lYmFiYjU5ZDQz
NTlhOWUzNjRmMmNhM2FmNmFmZDBlZmQwMzkwYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBWTTsKIHR5cGVkZWYg
RXhlY1N0YXRlIENhbGxGcmFtZTsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlYnVnZ2VyKFZN
Jik7CiAgICAgdmlydHVhbCB+RGVidWdnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBmMjBh
MzU3ZWNiNzNhYTdlZmU0Y2IxMDdkMWNjYjdlOWRjOTAwMzM5Li4yNzY1NjkyNmE4ZDI5ZDI3ZWJl
ZWFhOWZmZGNhMjAzY2MyNWZhMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC01OCw3ICs1OCw3
IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpBYnN0cmFjdEludGVy
cHJldGVyKEdyYXBoJiBncmFwaCwgQWJzdHJhCiAgICAgLCBtX3N0YXRlKHN0YXRlKQogewogICAg
IGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgIG1fcGhpQ2hpbGRyZW4gPSBzdGQ6
Om1ha2VfdW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKKyAgICAgICAgbV9waGlDaGlsZHJl
biA9IG1ha2VVbmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKaW5kZXggNWIwYzg3ZmZlZTUyYjJhOWU1MDExZTViZjhjNzFjMDEyOTQyZWZkMC4uZTY4M2E4
MjFiMjJiY2ZlNTZiMzllZjQxYTExZjFjMmRkYmQ2NjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwg
UGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFu
LmNvZGVCbG9jaygpKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5h
dGl2ZSgpKQotICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkK
KyAgICAsIG1fc3NhQ0ZHKG1ha2VVbmlxdWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRN
YWNoaW5lTG9jYWwoMCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAg
ICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3Rlcmlu
ZykKQEAgLTg2LDggKzg2LDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAg
ICAKICAgICBtX2hhc0RlYnVnZ2VyRW5hYmxlZCA9IG1fcHJvZmlsZWRCbG9jay0+d2FzQ29tcGls
ZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29k
ZUdlbmVyYXRpb24oKTsKICAgICAKLSAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZsb3dJbmRleGluZz4oKnRoaXMpOwotICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworICAgIG1faW5k
ZXhpbmdDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7CisgICAgbV9hYnN0
cmFjdFZhbHVlc0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhp
cyk7CiAKICAgICByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkp
OwogICAgIHRoaXMtPnN0cmluZ1N0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBGdWxsQnl0ZWNvZGVMaXZl
bmVzcyYgR3JhcGg6OmxpdmVuZXNzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGlmIChp
dGVyICE9IG1fYnl0ZWNvZGVMaXZlbmVzcy5lbmQoKSkKICAgICAgICAgcmV0dXJuICppdGVyLT52
YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxp
dmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gbWFrZVVuaXF1
ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlz
aXMoKS5jb21wdXRlRnVsbExpdmVuZXNzKGNvZGVCbG9jaywgKmxpdmVuZXNzKTsKICAgICBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0ID0gKmxpdmVuZXNzOwogICAgIG1fYnl0ZWNvZGVMaXZl
bmVzcy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGxpdmVuZXNzKSk7CkBAIC0xMTE1LDcgKzExMTUs
NyBAQCBCeXRlY29kZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUtpbGxzLmVuZCgpKQogICAgICAgICByZXR1cm4g
Kml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBr
aWxscyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVLaWxscz4ga2lsbHMgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7
CiAgICAgY29kZUJsb2NrLT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0ZUtpbGxzKGNvZGVCbG9j
aywgKmtpbGxzKTsKICAgICBCeXRlY29kZUtpbGxzJiByZXN1bHQgPSAqa2lsbHM7CiAgICAgbV9i
eXRlY29kZUtpbGxzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUoa2lsbHMpKTsKQEAgLTE1NTMsNyAr
MTU1Myw3IEBAIENQU0NGRyYgR3JhcGg6OmVuc3VyZUNQU0NGRygpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFt
X2Nwc0NGRykKLSAgICAgICAgbV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4oKnRo
aXMpOworICAgICAgICBtX2Nwc0NGRyA9IG1ha2VVbmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2Nwc0NGRzsKIH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgQ1BTRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwogICAgIGlmICghbV9jcHNEb21p
bmF0b3JzKQotICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxD
UFNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc0RvbWluYXRvcnM7CiB9CiAK
QEAgLTE1NjksNyArMTU2OSw3IEBAIFNTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FEb21p
bmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNT
QUNvbnZlcnNpb24pOwogICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQotICAgICAgICBtX3NzYURv
bWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAg
ICAgbV9zc2FEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIENQ
U05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29wcygpCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgZW5z
dXJlQ1BTRG9taW5hdG9ycygpOwogICAgIGlmICghbV9jcHNOYXR1cmFsTG9vcHMpCi0gICAgICAg
IG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0
aGlzKTsKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPENQU05hdHVyYWxM
b29wcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1
ODcsNyArMTU4Nyw3IEBAIFNTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZVNTQU5hdHVyYWxM
b29wcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgZW5zdXJlU1NB
RG9taW5hdG9ycygpOwogICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fc3Nh
TmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsK
KyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPFNTQU5hdHVyYWxMb29wcz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1OTYsNyAr
MTU5Niw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiAgICAg
Ly8gV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSB0byB3b3JrIG92ZXIg
Q1BTLCBidXQgdG9kYXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4KICAgICBSRUxFQVNFX0FTU0VS
VChtX2Zvcm0gPT0gU1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9i
YWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAg
ICAgICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIApAQCAtMTYwNCw3ICsxNjA0LDcgQEAgQmFj
a3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNE
b21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNEb21p
bmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0
dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE2MTIsNyArMTYxMiw3IEBAIENv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlm
ICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKLSAgICAgICAgbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXM+KCp0aGlzKTsKKyAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG1ha2VV
bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
Y29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNjM5MDQzZTllMjdmYmUwZTBiOTJhYjQ2YTY2
OWJlMTQxMDUwMzM3MC4uZjJiNjY0MDJlM2FkMGU3MmRmY2UwNWI2NWFmM2ZjOTI2ZDAwOWRhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgSklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBoJiBkZmcpCiAgICAgLCBt
X3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcihkZmcubV92bSkKIHsKICAgICBpZiAoVU5MSUtFTFko
c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgbV9ncmFwaC5tX3ZtLm1fcGVyQnl0ZWNvZGVQcm9m
aWxlcikpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNhc3Nl
bWJsZXI+KGRmZyk7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxEaXNhc3Nl
bWJsZXI+KGRmZyk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgbV9qaXRDb2RlLT50aWVyVXBJ
bkxvb3BIaWVyYXJjaHkgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnRpZXJVcEluTG9vcEhpZXJh
cmNoeSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIHRpZXJVcEJ5dGVjb2RlIDogbV9ncmFwaC5tX3Bs
YW4udGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMoKSkKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lk
IEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgfQogCiAgICAg
aWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAg
ICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1Rv
Q29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtC
dWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VV
bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIpLCBsaW5rQnVmZmVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hl
Y2soSklUQ29tcGlsZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzdGFja092ZXJm
bG93KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAg
ICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKLSAgICBtX3NwZWN1bGF0
aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3Bl
Y3VsYXRpdmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAKICAgICAvLyBQ
bGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpT
U3RhY2suCiAgICAgSnVtcExpc3Qgc3RhY2tPdmVyZmxvdzsKQEAgLTQwMiw5ICs0MDIsOSBAQCB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBtX3NwZWN1bGF0aXZlLT5jcmVhdGVPU1JF
bnRyaWVzKCk7CiAgICAgc2V0RW5kT2ZDb2RlKCk7CiAKLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGls
YXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZm
ZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAo
bGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxh
bi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgu
bV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVl
PEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkK
IAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNl
dEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZm
ZXIpKSk7CiB9CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
RnVuY3Rpb24oKQogICAgIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKTsKIAogICAgIC8vID09
PSBGdW5jdGlvbiBib2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KLSAgICBtX3NwZWN1bGF0aXZlID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3BlY3VsYXRp
dmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAgICAgY29tcGlsZUJvZHko
KTsKICAgICBzZXRFbmRPZk1haW5QYXRoKCk7CiAKQEAgLTUwNyw5ICs1MDcsOSBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIHNldEVuZE9mQ29kZSgpOwogCiAgICAg
Ly8gPT09IExpbmsgPT09Ci0gICAgYXV0byBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxM
aW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Cisg
ICAgYXV0byBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZh
aWxUb0FsbG9jYXRlKCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0
ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOworICAgICAg
ICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+
KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbGluaygqbGlu
a0J1ZmZlcik7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1
bmN0aW9uKCkKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRo
QXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oYXJpdHlD
aGVjayk7CiAKLSAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1
ZTxKSVRGaW5hbGl6ZXI+KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5p
cXVlPEpJVEZpbmFsaXplcj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2spKTsKIH0K
IApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVD
b25zdGFudChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIGlm
ICghbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cykKLSAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNv
bnN0YW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFnPGRvdWJsZT4+KCk7CisgICAgICAgIG1fZ3Jh
cGgubV9kb3VibGVDb25zdGFudHMgPSBtYWtlVW5pcXVlPEJhZzxkb3VibGU+PigpOwogCiAgICAg
ZG91YmxlKiBhZGRyZXNzSW5Db25zdGFudFBvb2wgPSBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRz
LT5hZGQoKTsKICAgICAqYWRkcmVzc0luQ29uc3RhbnRQb29sID0gdmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAK
aW5kZXggYmI4MDAyNzRkZGNiNjMwMzQ3ODM3MzdlMzhhZDFlNjFlOWM1ZWEwNC4uYTk0NDA0NzQ1
OTI1MjE4NDViYTMxODgzN2IxM2I5ZjRhMzE3ZWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBjbGFzcyBMaXZlbmVzc0FuYWx5c2lzUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAsIG1fbGl2ZUF0VGFpbChtX2dyYXBoKQogICAgIHsKICAgICAgICAgbV9ncmFwaC5tX2lu
ZGV4aW5nQ2FjaGUtPnJlY29tcHV0ZSgpOwotICAgICAgICBtX3dvcmtzZXQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1JbmRpY2VzKCkpOwor
ICAgICAgICBtX3dvcmtzZXQgPSBtYWtlVW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGlu
Z0NhY2hlLT5udW1JbmRpY2VzKCkpOwogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IDM0YWNiYzFmZTIyZmI3N2YzNTgwZGEzNjc5
OWM4MjE0YmViYzlkNjIuLmI2OTQ5YWEwMzVjMTJmYTc0OWQ1ODBjYzdjMmFlY2NhOGQ5MmMxNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBA
IFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBp
ZiAobV9tb2RlID09IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAgICAgICBib29sIHJlc3VsdCA9
IHBlcmZvcm1PU1JFbnRyeXBvaW50Q3JlYXRpb24oZGZnKTsKICAgICAgICAgaWYgKCFyZXN1bHQp
IHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5h
bGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAg
ICAgfQogICAgICAgICBSVU5fUEhBU0UocGVyZm9ybUNQU1JldGhyZWFkaW5nKTsKQEAgLTM5OCw3
ICszOTgsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCgpCiAgICAgY2FzZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICNpZiBFTkFCTEUoRlRMX0pJVCkK
ICAgICAgICAgaWYgKEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkg
ewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFs
aXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxl
ZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtNDc4LDcgKzQ3OCw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQ
bGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1XYXRj
aHBvaW50Q29sbGVjdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxl
KGRmZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBt
X2ZpbmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAg
ICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCmluZGV4IDg3MTU5NWIxZmYy
NTliZWU0NGM3MWNlMDNkN2Q4ZThiZDY0MzY1MzcuLjUzNGQ2NGI1MzhmYTE4MGFmNDhlODlkNGY4
MjYwMmZiNDVjOTIxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBTU0FDb252
ZXJzaW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigp
OwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwotICAgICAgICAgICAg
YmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2sp
OworICAgICAgICAgICAgYmxvY2stPnNzYSA9IG1ha2VVbmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0
YT4oYmxvY2spOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZW50cnlw
b2ludEluZGV4VG9Bcmd1bWVudHNCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDdjZjQyNTIxYTYyMTE3OGZmODUxMmFm
ZjlmZmZhMzI1MjAwMjI0ZDYuLmNkY2RhYTYwZDg5OGEzYjY2ZDdiMjk4ZjY2ODE4Yzc5ZGM0OGM4
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRo
R2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwKICAgICBSZXN1bHRUeXBl
IHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oCisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBl
LCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KAogICAgICAgICBmcm9t
LCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50
cy4uLik7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlw
ZSwgdHlwZW5hbWUgRGVzdGluYXRpb25UeXBlLCB0eXBlbmFtZSBTb3VyY2VUeXBlLCB1bnNpZwog
aW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAog
ICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFNvdXJjZVR5cGUgc291cmNl
W251bWJlck9mQXNzaWdubWVudHNdLCBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25bbnVtYmVy
T2ZBc3NpZ25tZW50c10pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5n
U2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwg
bnVtYmVyT2ZBc3NpZ25tZW50cz4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Ns
b3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIG51
bWJlck9mQXNzaWdubWVudHM+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbiwgc291
cmNlKTsKIH0KIApAQCAtMjQ5LDcgKzI0OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xv
d1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFy
cmF5WzFdID0geyBzb3VyY2UgfTsKICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25BcnJh
eVsxXSA9IHsgZGVzdGluYXRpb24gfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3Np
Z25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VU
eXBlLCAxPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0
b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMT4+KAogICAgICAgICBm
cm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIApAQCAtMjU5LDcg
KzI1OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQ
YXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5WzJdID0geyBzb3VyY2UxLCBz
b3VyY2UyIH07CiAgICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0aW9uQXJyYXlbMl0gPSB7IGRl
c3RpbmF0aW9uMSwgZGVzdGluYXRpb24yIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291
cmNlVHlwZSwgMj4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2Vu
ZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDI+PigKICAgICAg
ICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjA3
YTliNjliNDg4NTViNTZiMWY4MzcyMDY1MWMyYmM3NmUzOGY5ZS4uNzBlNzA1ZDc4NDkzMmQ5ZDNm
YzI3MjQ5MTMyZWZkM2UzZTVkNjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZQogICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0
IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0J3MKICAgICAvLyB3aGF0IHRoaXMgY3VzdG9t
IENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90
CiAgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHku
IDotLwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1h
a2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0R1BSLCBzdG9yYWdl
R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOwogCkBAIC04OTksNyArODk5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZSwgR1BSUmVnIGJh
c2VSZWcsIEdQUlJlZyBwcm9wZXJ0eVJlZykKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBT
bG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAg
ICB9CiAgICAgCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxBcnJh
eWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5p
cXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93UGF0aCwgdGhpcywg
bm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHRlbXBHUFIsIHN0cnVjdHVyZUdQUikpOwogICAg
IAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwpAQCAtMjI0MiwxMCArMjI0MiwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlKiBub2RlKQog
ICAgICAgICB9CiAgICAgICAgIGlmIChwcm90b3R5cGVDaGFpbklzU2FuZSkgewogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhH
ZW5lcmF0b3I+KAogICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVn
cyhzY3JhdGNoUmVnKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbHNlCi0gICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1h
a2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAg
ICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdSZWcsIHNjcmF0
Y2hSZWcpLAogICAgICAgICAgICAgICAgIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAjZW5kaWYK
QEAgLTc2MTksNyArNzYxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVE
aXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwK
ICAgICAgICAgICAgICAgICBrbm93bkxlbmd0aCwgbWluQ2FwYWNpdHkpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBhdXRvIGdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbENyZWF0ZURp
cmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYXV0byBnZW5lcmF0b3Ig
PSBtYWtlVW5pcXVlPENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4o
CiAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGxlbmd0
aEdQUiwgbWluQ2FwYWNpdHkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KGdlbmVyYXRvcikpOwogICAgIH0KQEAgLTg0MzksNyArODQzOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJs
ZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVT
dHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgdGVtcFZh
bHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSKSk7CiAgICAgfQogCkBAIC05MTM1LDcgKzkx
MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJlQ2hlY2soTm9kZSogbm9k
ZSwgR1BSUmVnIGNlbGxHUFIsIEdQUlJlZyB0ZW1wRwogICAgICAgICBHUFJSZWcgc3RydWN0dXJl
R1BSOwogICAgICAgICAKICAgICAgICAgaWYgKHRlbXBHUFIgPT0gSW52YWxpZEdQUlJlZykgewot
ICAgICAgICAgICAgc3RydWN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRo
aXMpOworICAgICAgICAgICAgc3RydWN0dXJlID0gbWFrZVVuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRo
aXMpOwogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLT5ncHIoKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSB0ZW1wR1BSOwpAQCAtMTMxNzYs
NyArMTMxNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJh
eVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgbV9qaXQubXV0YXRv
ckZlbmNlKCptX2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9j
YXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAogICAgICAgICBz
dHJ1Y3R1cmUsCiAgICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSkgOiBzdHJ1Y3R1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGZhMzk2ZjRmMTkyYThi
YjRhZWY5OWQwMzcxOTI0YTJhMzhjNjQ1ZTguLmJhNjEyOGVmZTliYjM2OGZlM2IwNjYyM2I1MWVl
M2VlYWQzYzRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC05NSw4ICs5NSw4IEBAIGNs
YXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
Y2FzZSBQaGFzZU1vZGU6Okdsb2JhbDogewogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogCi0gICAgICAgICAgICBtX3N0YXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7Ci0gICAg
ICAgICAgICBtX2ludGVycHJldGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEludGVycHJl
dGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUpOworICAgICAgICAg
ICAgbV9zdGF0ZSA9IG1ha2VVbmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+KG1fZ3JhcGgpOwor
ICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IG1ha2VVbmlxdWU8QWJzdHJhY3RJbnRlcnByZXRl
cjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0YXRlKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9pc0NvbnZlcmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCkBAIC0x
MDcsOCArMTA3LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgLy8gdG93YXJkcyBiZWxpZXZpbmcgdGhhdCBhbGwgbm9kZXMg
bmVlZCBiYXJyaWVycy4gIk5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlCiAgICAgICAgICAgICAv
LyBzYXlpbmcgdGhhdCB0aGUgbm9kZSBpcyBpbiBhIHBhc3QgZXBvY2guICJOb3QgbmVlZGluZyBh
IGJhcnJpZXIiIGlzIGxpa2Ugc2F5aW5nCiAgICAgICAgICAgICAvLyB0aGF0IHRoZSBub2RlIGlz
IGluIHRoZSBjdXJyZW50IGVwb2NoLgotICAgICAgICAgICAgbV9zdGF0ZUF0SGVhZCA9IHN0ZDo6
bWFrZV91bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKLSAgICAgICAg
ICAgIG1fc3RhdGVBdFRhaWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9k
ZSo+Pj4obV9ncmFwaCk7CisgICAgICAgICAgICBtX3N0YXRlQXRIZWFkID0gbWFrZVVuaXF1ZTxC
bG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0
VGFpbCA9IG1ha2VVbmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgQmxvY2tMaXN0IHBvc3RPcmRlciA9IG1fZ3JhcGguYmxv
Y2tzSW5Qb3N0T3JkZXIoKTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dvcmtsaXN0LmNwcAppbmRleCBlNmMyMjIxZWUzMDE1NDRjNzJhOWNlODM1Zjk4MGZmMzZm
MDI0YjdkLi44ZjkzMDM0YjBjNmY5MGJhNjZmNGJmNWM1M2JlMWI0ZjBmYmE3NGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IGNsYXNzIFdvcmtsaXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1dG9tYXRpY1RocmVhZCB7CiAg
ICAgICAgIGlmIChtX3JlbGF0aXZlUHJpb3JpdHkpCiAgICAgICAgICAgICBUaHJlYWQ6OmN1cnJl
bnQoKS5jaGFuZ2VQcmlvcml0eShtX3JlbGF0aXZlUHJpb3JpdHkpOwogICAgICAgICAKLSAgICAg
ICAgbV9jb21waWxhdGlvblNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvblNjb3Bl
PigpOworICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBtYWtlVW5pcXVlPENvbXBpbGF0aW9u
U2NvcGU+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBB
YnN0cmFjdExvY2tlciYpIG92ZXJyaWRlCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXb3JrbGlz
dDo6ZmluaXNoQ3JlYXRpb24odW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQ
cmlvcml0eSkKIAogdm9pZCBXb3JrbGlzdDo6Y3JlYXRlTmV3VGhyZWFkKGNvbnN0IEFic3RyYWN0
TG9ja2VyJiBsb2NrZXIsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaHJlYWREYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWREYXRhPih0aGlz
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IG1ha2VVbmlxdWU8VGhy
ZWFkRGF0YT4odGhpcyk7CiAgICAgZGF0YS0+bV90aHJlYWQgPSBhZG9wdFJlZihuZXcgVGhyZWFk
Qm9keShsb2NrZXIsICp0aGlzLCAqZGF0YSwgbV9sb2NrLCBtX3BsYW5FbnF1ZXVlZC5jb3B5UmVm
KCksIHJlbGF0aXZlUHJpb3JpdHkpKTsKICAgICBtX3RocmVhZHMuYXBwZW5kKFdURk1vdmUoZGF0
YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9E
aXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuY3BwCmluZGV4IDE5YjExNWM5ZmRkNjdjYmM4YWUxMDljNjQ0NTc0MjhiYTNhZGZh
NTMuLjAwYmRhNjU3Mjc5Y2Y3YTk5ZGJhYjE0OWIwOWM3MDNkNjhiMzViZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKQEAg
LTEzMCw3ICsxMzAsNyBAQCBBc3luY2hyb25vdXNEaXNhc3NlbWJsZXImIGFzeW5jaHJvbm91c0Rp
c2Fzc2VtYmxlcigpCiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCiAgICAgY29uc3Qg
Q1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQ
dHJUYWc+JiBjb2RlUmVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4KQogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PERpc2Fzc2VtYmx5VGFzaz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNr
PiB0YXNrID0gbWFrZVVuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CiAgICAgdGFzay0+aGVhZGVy
ID0gc3RyZHVwKGhlYWRlci5kYXRhKCkpOyAvLyBZdWNrISBXZSBuZWVkIHRoaXMgYmVjYXVzZSBD
U3RyaW5nIGRvZXMgcmFjeSByZWZjb3VudGluZy4KICAgICB0YXNrLT5jb2RlUmVmID0gY29kZVJl
ZjsKICAgICB0YXNrLT5zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwLmNwcAppbmRleCA5MGFlMmY0ZmUwNmExNTJjYWU1Nzg1ZTJjMDNjOTk5
YjY4MzJiYzFiLi5lYzgwZWE2N2IyNTZmODkxOGQ0ODgzYThjNTJiOGYzNzk1ODNhYmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCkBAIC0xNTcs
MTEgKzE1NywxMSBAQCBjb25zdCBBYnN0cmFjdEhlYXAmIEluZGV4ZWRBYnN0cmFjdEhlYXA6OmF0
U2xvdyhwdHJkaWZmX3QgaW5kZXgpCiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5k
ZXgpID49IG1fc21hbGxJbmRpY2VzLnNpemUoKSk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKCFt
X2xhcmdlSW5kaWNlcykpCi0gICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gc3RkOjptYWtlX3VuaXF1
ZTxNYXBUeXBlPigpOworICAgICAgICBtX2xhcmdlSW5kaWNlcyA9IG1ha2VVbmlxdWU8TWFwVHlw
ZT4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBYnN0cmFjdEhlYXA+JiBmaWVsZCA9IG1fbGFy
Z2VJbmRpY2VzLT5hZGQoaW5kZXgsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
IWZpZWxkKSB7Ci0gICAgICAgIGZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEhlYXA+
KCk7CisgICAgICAgIGZpZWxkID0gbWFrZVVuaXF1ZTxBYnN0cmFjdEhlYXA+KCk7CiAgICAgICAg
IGluaXRpYWxpemUoKmZpZWxkLCBpbmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA1ZDA0YjcyZjA0ODMxZDA2MzAyMzA0ZDFlYjdlNDky
OWQ0ODA0MjdmLi40NjM1Y2M5NmY5MTA5MWY3M2YwOGQxZjc1MmIwNDdkMTA1M2JmYjQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
dm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJl
c3VsdCkKICAgICBWTSYgdm0gPSBncmFwaC5tX3ZtOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNh
c3NlbWJseSgpKQotICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKHN0
ZDo6bWFrZV91bmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKKyAgICAgICAgc3RhdGUu
cHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2Vt
Ymxlcj4oKSk7CiAKICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0
ZS5ncmFwaCwgc2FmZXBvaW50UmVzdWx0KTsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBjb21waWxl
KFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlz
dD4gcmVnaXN0ZXJPZmZzZXRzID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0
T2Zmc2V0TGlzdD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkp
OworICAgICAgICBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5j
YWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CiAgICAgaWYgKHNob3VsZER1bXBEaXNh
c3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBmb3IgIiwgQ29kZUJsb2Nr
V2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiOiAiLCAqcmVnaXN0ZXJP
ZmZzZXRzLCAiXG4iKTsKICAgICBjb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoV1RG
TW92ZShyZWdpc3Rlck9mZnNldHMpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIGNvbXBpbGUo
U3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAg
ICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
bG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKIAotICAgIHN0YXRlLmZpbmFs
aXplci0+YjNDb2RlTGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0
LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgc3RhdGUuZmluYWxpemVy
LT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIAogICAgIGlmIChzdGF0ZS5maW5hbGl6ZXItPmIz
Q29kZUxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgc3RhdGUuYWxs
b2NhdGlvbkZhaWxlZCA9IHRydWU7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBjb21waWxlKFN0
YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAKICAg
ICBCMzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9jLT5yZWxlYXNlUENUb09y
aWdpbk1hcCgpOwogICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5n
KCkpCi0gICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3Vu
aXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZN
b3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7Cisg
ICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29k
ZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1h
cCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7CiAKICAgICBDb2RlTG9j
YXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihzdGF0ZS5wcm9jLT5lbnRyeXBv
aW50TGFiZWwoMCkpOwogICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcAppbmRleCAxNjUzMzUwOWNkMGI0ODJjNzRiY2E2
NzMxODc2M2YyZTBmMDlkZGYxLi5jM2Y5MzM5MmYyNmU2ZmM5NWY5YzJjYzU5MjllZDM0YzZiYzMw
YzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIERGRzsKIAogdm9pZCBmYWlsKFN0YXRlJiBzdGF0ZSkKIHsKLSAg
ICBzdGF0ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVk
RmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3BsYW4pKTsKKyAgICBzdGF0ZS5ncmFwaC5tX3BsYW4u
c2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3Bs
YW4pKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKaW5kZXggMDg1NDA1NmVjN2QxNjJiMTFjZGMyMWNkNzhmZTE1MTdmN2Fj
ZjNlYi4uOTVkYjY5NjFlOGU5MDc3MGNkNmU1NTY3MzAyMmI0NDc2M2I1ODA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAg
ICAgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOwogCi0gICAgICAgICAg
ICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBtYWtl
VW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwp
OwogICAgICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAg
ICAgICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbWFpblBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCi0gICAgICAgIGxpbmtC
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOworICAgICAgICBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5r
QnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAg
aWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgIHN0YXRl
LmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFmMWJhNGJmOTBh
OGZkMGJhMjUwMmM2NDdlMmMxNzE0MTIyZGU3ZDQuLjA5YjM0MjczY2JiN2NhYjQ0Y2Q4NjNlOTli
Mjg1OTBlODdjOTRiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKQEAgLTE1MDgwLDcgKzE1MDgwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGdlbmVyYXRv
ckp1bXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25M
YWJlbDxKSVRUaHVua1B0clRhZz4odm0tPmdldENUSVN0dWIobGF6eVNsb3dQYXRoR2VuZXJhdGlv
blRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5
U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF6eVNsb3dQYXRoPigp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF6eVNs
b3dQYXRoPiBsYXp5U2xvd1BhdGggPSBtYWtlVW5pcXVlPExhenlTbG93UGF0aD4oKTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmtlZFBhdGNoYWJsZUp1bXAgPSBD
b2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KGxpbmtCdWZmZXIubG9jYXRpb25PZjxK
U0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVKdW1wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExTdGF0ZS5jcHAKaW5kZXggNjUzZWM2ZjY5NjA0OWI3NTJhYzI0YTc3OTMxMGQ0YWQ5N2Ji
MDNkYi4uNGE0ODRmYTZkNDY0MzBkNzFlNTcwMDhiZjFlOTlmNmMyNWI4NDg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTYwLDEwICs2MCwxMCBAQCBTdGF0ZTo6
U3RhdGUoR3JhcGgmIGdyYXBoKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBncmFwaC5t
X3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPihncmFwaC5t
X3BsYW4pKTsKKyAgICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmlu
YWxpemVyPihncmFwaC5tX3BsYW4pKTsKICAgICBmaW5hbGl6ZXIgPSBzdGF0aWNfY2FzdDxKSVRG
aW5hbGl6ZXIqPihncmFwaC5tX3BsYW4uZmluYWxpemVyKCkpOwogCi0gICAgcHJvYyA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2VkdXJlPigpOworICAgIHByb2MgPSBtYWtlVW5pcXVlPFByb2NlZHVy
ZT4oKTsKIAogICAgIHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAgICAgICAgIFtdIChQcmludFN0
cmVhbSYgb3V0LCBCMzo6T3JpZ2luIG9yaWdpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRleCAyMmQ3ZmQ2NWQ1YTE3NTViNWIyZDNi
NzhkZGE1NWMwZDAwN2UxY2NiLi4wMjFiMGNkYjlkZmFjMThiMzY4NjQyOGE5ODIzZjI4MTEwYmI3
OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNw
YWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcApAQCAtODAsNyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2Nh
dG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgQmxvY2tE
aXJlY3RvcnkvTG9jYWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwgIiwgYXR0cmlidXRlcygp
LCAiLCAiLCBzaXplQ2xhc3MsICIuXG4iKTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qmxv
Y2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9yeSA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8
QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3MpOworICAgICAgICBtYWtl
VW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKICAgICBC
bG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0b3J5LmdldCgpOwogICAgIG1f
ZGlyZWN0b3JpZXMuYXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0b3J5KSk7CiAgICAgCkBAIC04
OCw3ICs4OCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93
KHNpemVfdCBzaXplKQogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3RvcnkobG9ja2VyLCBkaXJl
Y3RvcnkpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbEFsbG9jYXRvcj4gdW5pcXVl
TG9jYWxBbGxvY2F0b3IgPQotICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsQWxsb2NhdG9y
PihkaXJlY3RvcnkpOworICAgICAgICBtYWtlVW5pcXVlPExvY2FsQWxsb2NhdG9yPihkaXJlY3Rv
cnkpOwogICAgIExvY2FsQWxsb2NhdG9yKiBsb2NhbEFsbG9jYXRvciA9IHVuaXF1ZUxvY2FsQWxs
b2NhdG9yLmdldCgpOwogICAgIG1fbG9jYWxBbGxvY2F0b3JzLmFwcGVuZChXVEZNb3ZlKHVuaXF1
ZUxvY2FsQWxsb2NhdG9yKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmlu
ZGV4IGEwMWI1YTJiNGFlZmQzZTUyOTY5NzdhNWM4Mzg0MDQyZTVhMjk1NmEuLjk3MTk5ZTE4NmRl
NzJkNzcyNzk3MzVjOWQzYzk5NDBjODVjNDhhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCkBAIC0yODksMTUgKzI4OSwxNSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAs
IG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9vYmplY3RTcGFjZSh0
aGlzKQotICAgICwgbV9tYWNoaW5lVGhyZWFkcyhzdGQ6Om1ha2VfdW5pcXVlPE1hY2hpbmVUaHJl
YWRzPigpKQotICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgIkMiKSkKLSAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKHN0ZDo6
bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQotICAgICwgbV9tdXRhdG9yTWFy
a1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3JhY2VN
YXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fY29u
c3RyYWludFNldChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykp
CisgICAgLCBtX21hY2hpbmVUaHJlYWRzKG1ha2VVbmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCisg
ICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlz
LCAiQyIpKQorICAgICwgbV9tdXRhdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90VmlzaXRv
cj4oKnRoaXMsICJNIikpCisgICAgLCBtX211dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJr
U3RhY2tBcnJheT4oKSkKKyAgICAsIG1fcmFjZU1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFj
a0FycmF5PigpKQorICAgICwgbV9jb25zdHJhaW50U2V0KG1ha2VVbmlxdWU8TWFya2luZ0NvbnN0
cmFpbnRTZXQ+KCp0aGlzKSkKICAgICAsIG1faGFuZGxlU2V0KHZtKQotICAgICwgbV9jb2RlQmxv
Y2tzKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQotICAgICwgbV9qaXRTdHViUm91
dGluZXMoc3RkOjptYWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKKyAgICAsIG1fY29k
ZUJsb2NrcyhtYWtlVW5pcXVlPENvZGVCbG9ja1NldD4oKSkKKyAgICAsIG1faml0U3R1YlJvdXRp
bmVzKG1ha2VVbmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCiAgICAgLCBtX3ZtKHZtKQogICAg
IC8vIFdlIHNlZWQgd2l0aCAxMG1zIHNvIHRoYXQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxv
Y2F0ZSBkb2Vzbid0IGNvbnRpbnVvdXNseSAKICAgICAvLyBzY2hlZHVsZSB0aGUgdGltZXIgaWYg
d2UndmUgbmV2ZXIgZG9uZSBhIGNvbGxlY3Rpb24uCkBAIC0zMDUsOCArMzA1LDggQEAgSGVhcDo6
SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxs
YmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKICAgICAs
IG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCiAgICAg
LCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGlt
ZXIodm0pKSkKLSAgICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlx
dWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3RhY2soc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fc2hhcmVkQ29sbGVjdG9y
TWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3NoYXJlZE11
dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKICAgICAsIG1faGVs
cGVyQ2xpZW50KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2Nr
Pjo6Y3JlYXRlKCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25k
aXRpb246OmNyZWF0ZSgpKQpAQCAtMzE0LDcgKzMxNCw3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkcyA9IGhlYXBIZWxwZXJQb29s
KCkubnVtYmVyT2ZUaHJlYWRzKCk7IGkgPCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkczsgKytpKSB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0b3IgPSBtYWtlVW5pcXVlPFNs
b3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEpKTsKICAgICAgICAgaWYgKE9w
dGlvbnM6Om9wdGltaXplUGFyYWxsZWxTbG90VmlzaXRvcnNGb3JTdG9wcGVkTXV0YXRvcigpKQog
ICAgICAgICAgICAgdmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogICAgICAg
ICBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVuZCh2aXNpdG9yLmdldCgpKTsK
QEAgLTMyMywxNyArMzIzLDE3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAKICAgICBpZiAoT3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkpIHsKICAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1bGVyKCkpCi0gICAgICAgICAg
ICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0
b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1
ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VUaW1l
TXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtl
VW5pcXVlPFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBXZSBzaW11bGF0ZSB0dXJuaW5nIG9mZiBjb25jdXJyZW50IEdDIGJ5IG1ha2lu
ZyB0aGUgc2NoZWR1bGVyIHNheSB0aGF0IHRoZSB3b3JsZAogICAgICAgICAvLyBzaG91bGQgYWx3
YXlzIGJlIHN0b3BwZWQgd2hlbiB0aGUgY29sbGVjdG9yIGlzIHJ1bm5pbmcuCi0gICAgICAgIG1f
c2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0
b3JTY2hlZHVsZXI+KCk7CisgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTeW5jaHJv
bm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CiAgICAgfQogICAgIAogICAgIGlm
IChPcHRpb25zOjp2ZXJpZnlIZWFwKCkpCi0gICAgICAgIG1fdmVyaWZpZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xlc1RvUmVj
b3JkRm9yVmVyaWZpY2F0aW9uKCkpOworICAgICAgICBtX3ZlcmlmaWVyID0gbWFrZVVuaXF1ZTxI
ZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0NDeWNsZXNUb1JlY29yZEZvclZl
cmlmaWNhdGlvbigpKTsKICAgICAKICAgICBtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5vcHRpbWl6
ZUZvclN0b3BwZWRNdXRhdG9yKCk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCBzaXplX3QgSGVhcDo6
cHJvdGVjdGVkT2JqZWN0Q291bnQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBI
ZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKICAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgKICAgICAgICAgWyZdIChK
U0NlbGwqIGNlbGwpIHsKICAgICAgICAgICAgIHJlY29yZFR5cGUoKnZtKCksICpyZXN1bHQsIGNl
bGwpOwpAQCAtOTA5LDcgKzkwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhl
YXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNv
dW50U2V0PiBIZWFwOjpvYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5
cGVDb3VudFNldD4oKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRo
aXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBpdGVyYXRp
b25TY29wZSwKQEAgLTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFp
bnRzKCkKICAgICAgICAgfSwKICAgICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6OlNlbGRvbUdy
ZXllZCk7CiAgICAgCi0gICAgbV9jb25zdHJhaW50U2V0LT5hZGQoc3RkOjptYWtlX3VuaXF1ZTxN
YXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludD4oKnRoaXMpKTsKKyAgICBtX2NvbnN0cmFpbnRTZXQt
PmFkZChtYWtlVW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhpcykpOwogfQog
CiB2b2lkIEhlYXA6OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6dW5pcXVlX3B0cjxNYXJraW5n
Q29uc3RyYWludD4gY29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCmluZGV4IDViNjljZDVlMzVmNjJiNTA2NjNhOWNiZGM3Mzk0ZDFiZDY3YWQxZDguLmUx
ZWI2Yzc4MzNkNDg1ODcxYTljNTMzY2ZkNDczMWM3NWY5YjExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtMjE3LDcgKzIxNyw3IEBAIGlubGluZSB2b2lk
IEhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKIGlubGluZSBIYXNo
U2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4mIEhlYXA6Om1hcmtMaXN0U2V0KCkKIHsKICAgICBp
ZiAoIW1fbWFya0xpc3RTZXQpCi0gICAgICAgIG1fbWFya0xpc3RTZXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsKKyAgICAgICAgbV9tYXJrTGlz
dFNldCA9IG1ha2VVbmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOwogICAg
IHJldHVybiAqbV9tYXJrTGlzdFNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA1YjlhYzg5ZGFiZjA0YTA2MTRk
YzEwZmJiYWYxNmMwZjRhNDk5ZjdlLi4yZDJiYzhmYjliMjdmZTlmOWIxYjViZTU0Y2I3NTFmODNl
MGQzZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNo
b3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNo
b3RCdWlsZGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxkZXI6
OmJ1aWxkU25hcHNob3QoKQogCiAgICAgUHJldmVudENvbGxlY3Rpb25TY29wZSBwcmV2ZW50Q29s
bGVjdGlvblNjb3BlKG1fcHJvZmlsZXIudm0oKS5oZWFwKTsKIAotICAgIG1fc25hcHNob3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhlYXBTbmFwc2hvdD4obV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNo
b3QoKSk7CisgICAgbV9zbmFwc2hvdCA9IG1ha2VVbmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2Zp
bGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKICAgICB7CiAgICAgICAgIG1fcHJvZmlsZXIuc2V0
QWN0aXZlU25hcHNob3RCdWlsZGVyKHRoaXMpOwogICAgICAgICBtX3Byb2ZpbGVyLnZtKCkuaGVh
cC5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IGI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBm
MTBjZGQ2ZTliYjE5OGZkYTkuLjdjMmVkMjQwMmZkNzMwMWZjMDk5YThkZmI1ZDNjMzM2YWVhZDEx
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+
KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9jCiAgICAgYXV0byYgYml0c1B0clJlZiA9
IG1fYml0c1tibG9ja0luZGV4XTsKICAgICBhdXRvKiBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsK
ICAgICBpZiAoIWJpdHMpIHsKLSAgICAgICAgYml0c1B0clJlZiA9IHN0ZDo6bWFrZV91bmlxdWU8
Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKKyAgICAgICAgYml0c1B0clJl
ZiA9IG1ha2VVbmlxdWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKICAg
ICAgICAgYml0cyA9IGJpdHNQdHJSZWYuZ2V0KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZl
bmNlKCk7CiAgICAgICAgIG1fYmxvY2tzV2l0aEJpdHNbYmxvY2tJbmRleF0gPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IGQ1MTAwMGViYTg3
ZjMxZGU0ODFiZWQwOGE1ZjJmZWQ4YTYzOWZmOTkuLmNkM2U3ZTU2MTU0NTY2ZGNmOGMxNTE2M2Ex
NWI3MmYyNzY4ZjI5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcg
bmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHMKICAgICAsIG1f
c2l6ZShzaXplKQogICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRv
cigmbV9kaXJlY3RvcnkpCi0gICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgbV9pc29BbGln
bmVkTWVtb3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4o
KSkKIHsKICAgICBpbml0aWFsaXplKGhlYXBDZWxsVHlwZSwgbV9pc29BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2luZ0NvbnN0cmFpbnRTZXQuY3BwCmluZGV4IGIzYWJkMmM1MjI0ZmNlM2U1Y2UxMmM0ZjE2M2Vk
NDgyM2RhZTY5OGUuLjE3ODBjMDhhNDcwZjI3NjIzMTYzN2VmNjgxMTdjOWE0ZTMyYzFkMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNl
dC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6ZGlkU3Rh
cnRNYXJraW5nKCkKIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKENTdHJpbmcgYWJi
cmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYp
PiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSwgQ29uc3RyYWludENv
bmN1cnJlbmN5IGNvbmN1cnJlbmN5LCBDb25zdHJhaW50UGFyYWxsZWxpc20gcGFyYWxsZWxpc20p
CiB7Ci0gICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdU
Rk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiks
IHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOworICAgIGFkZChtYWtlVW5p
cXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdU
Rk1vdmUobmFtZSksIFdURk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwg
cGFyYWxsZWxpc20pKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQuY3BwCmluZGV4IDgyYmUzYmJiNDRjYjZjNTc3NmI4ZWNmN2Zh
MGM5NDBkNWQ1YTU4MjUuLjUzYTkxYTIzYzFkODkyOTE4ZWU0Mjk0MWE2NWY1Mjc4NjdkNDMzNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3MKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGFyZ3VtZW50cy0+
Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwotICAgIG1fY29uc29sZUFnZW50LT5h
ZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIGV4ZWMpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CiB9CiAKIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpjb3VudChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbGFiZWwpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25z
b2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
ICAgICAgICAgICAgIGlmIChleGlzdGluZ1RpdGxlID09IHRpdGxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KICAgICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJV
bm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwi
IiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgIG1fY29uc29s
ZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAgICAgICBtX2NvbnNvbGVB
Z2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRp
dGwKIAogICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2Nh
bGl6YXRpb24/CiAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJv
ZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBkb2Vz
IG5vdCBleGlzdCIpOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0
ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJv
ZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzdGFydENvbnNvbGVQcm9maWxlKCkKQEAgLTE4NSw3
ICsxODUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChF
eGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKQogdm9pZCBKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ6Ondhcm5VbmltcGxlbWVudGVkKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogewog
ICAgIFN0cmluZyBtZXNzYWdlID0gbWV0aG9kICsgIiBpcyBjdXJyZW50bHkgaWdub3JlZCBpbiBK
YXZhU2NyaXB0IGNvbnRleHQgaW5zcGVjdGlvbi4iOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgbWVzc2FnZSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1h
a2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCBjOGRhNTJlZmQxM2M0OTFjY2FlNjM5NWUwNzRjNDY0NGU3MGNjMGE3Li5iZGJk
MzFkNjMxMmIyYzA1NmQ3YzQ3ODE1ZGM2MTVkMTIyNmQ5MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2Jq
ZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAg
IDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KG1ha2VVbmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNy
ZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihnbG9iYWxPYmplY3QpCiAgICAgLCBt
X2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKQEAgLTcxLDExICs3MSwx
MSBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iagogewogICAgIGF1dG8gY29udGV4dCA9IGpzQWdl
bnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKICAgICBtX2NvbnNv
bGVBZ2VudCA9IGNvbnNvbGVBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZShjb25zb2xlQWdlbnQpKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50PihtX2NvbnNvbGVBZ2VudCk7CisgICAgbV9j
b25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1f
Y29uc29sZUFnZW50KTsKIAogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogfQpA
QCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjpyZXBvcnRBUElFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlCiAgICAgICAgICAgICBD
b25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFN0cmluZygp
LCAwLCAwKTsKICAgICB9CiAKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29s
ZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3Zl
KGNhbGxTdGFjaykpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFj
aykpKTsKIH0KIAogQ29uc29sZUNsaWVudCogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25zb2xlQ2xpZW50KCkgY29uc3QKQEAgLTI4MCw3ICsyODAsNyBAQCBJbnNwZWN0b3JB
Z2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JB
Z2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29u
dGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0KTsKKyAgICAgICAgYXV0byBp
bnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOwogICAg
ICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1f
YWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CiAgICAgfQpAQCAtMjkxLDcg
KzI5MSw3IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlRGVidWdnZXJBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2RlYnVnZ2Vy
QWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAg
ICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKKyAgICAgICAgYXV0byBkZWJ1
Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KGNvbnRl
eHQsIG1fY29uc29sZUFnZW50KTsKICAgICAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJB
Z2VudC5nZXQoKTsKICAgICAgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KG1fZGVidWdnZXJBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3Zl
KGRlYnVnZ2VyQWdlbnQpKTsKQEAgLTMyNywyMCArMzI3LDIwIEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGVuc3VyZUlu
c3BlY3RvckFnZW50KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxK
U0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4oY29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CiAKICAg
ICBlbnN1cmVEZWJ1Z2dlckFnZW50KCk7CiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRl
eHQpOworICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CiAgICAgbV9jb25zb2xlQ2xpZW50LT5z
ZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0
KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIp
KTsKIAotICAgIGF1dG8gaGVhcEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIZWFw
QWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8gaGVhcEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3JIZWFwQWdlbnQ+KGNvbnRleHQpOwogICAgIGlmIChtX2NvbnNvbGVBZ2VudCkKICAgICAgICAg
bV9jb25zb2xlQWdlbnQtPnNldEluc3BlY3RvckhlYXBBZ2VudChoZWFwQWdlbnQuZ2V0KCkpOwog
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGhlYXBBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFn
ZW50Pihjb250ZXh0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwCmluZGV4IGMwYjVjOWFhZDE4YzA4Y2VkZGMzNjk2NmJmMDQ2ODUxNDE3NjI2NDMuLjQx
N2U3NzVmYjgwMjQ5YzA0MDMxMzdhODI3ODIxMzczMjdkMzMyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBJbnNwZWN0b3JBZ2Vu
dDo6SW5zcGVjdG9yQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJJbnNwZWN0b3IiX3MpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52
aXJvbm1lbnQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA3
ZWRiYzgwNjYwZjM2ZDZhODFhYTkxZmI4ZmEzZmRkZGVkYWU2ZjI2Li41ZDI0YzY5ZTZiZjQ1ZDcy
ZmIwYmRhNTNiNGM0NTc1OTg2MTNjYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2Fn
ZXNTdGVwID0gMTA7CiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2Vu
dChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNvbnNv
bGUiX3MpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2Ny
aXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8
Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihD
b25zb2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVy
LCB0aGlzKSkKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6c3RhcnRUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQg
YW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5n
IHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgYWxyZWFkeSBleGlz
dHMiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zv
ckNvbnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENh
bGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICB9CiB9CiAKQEAgLTE1OSwxNCArMTU5
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpsb2dUaW1pbmcoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5k
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9y
IGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1l
ciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdh
cm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92
ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNU
aW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9u
aWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobGFiZWwsICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxp
c2Vjb25kcygpLCAzKSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFr
ZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2Fn
ZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShhcmd1
bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZWwpCkBAIC0xODQsMTQgKzE4NCwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3Rv
cFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAgIGlm
IChpdCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0g
dG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5n
ID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0g
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25k
cyBlbGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
V2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVz
c2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxT
dGFjaykpKTsKIAogICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIH0KQEAgLTIyNCw3ICsyMjQsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgbGFiZWwpCiAgICAgLy8gRklYTUU6IFdlYiBJbnNwZWN0b3Igc2hvdWxk
IGhhdmUgYSBiZXR0ZXIgVUkgZm9yIGNvdW50ZXJzLCBidXQgZm9yIG5vdyB3ZSBqdXN0IGxvZyBh
biB1cGRhdGVkIGNvdW50ZXIgdmFsdWUuCiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobGFiZWwsICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2Fn
ZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbAogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkgewogICAgICAgICAvLyBGSVhN
RTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAg
ICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIkNvdW50ZXIgXCIiLCBsYWJlbCwgIlwiIGRv
ZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
bWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3Jp
cHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZTVmMjQ4MmEzY2FhMDhh
YTgxNjQ1ZmE4Yzc5YzUyOWJhNDM4MGQwYS4uMjVmMWQzZTcyODFjNmIwZmI4MzMwZmYxMzc4NzM2
NDNlYmM2MGVkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oY29u
c3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW8KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIkRlYnVnZ2VyIl9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZl
cihjb250ZXh0LmVudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwCmluZGV4IGI1MzVmZjYxOTJhYWNlZmM3OWI0ZjZjZDkzZGYxMjAxYTM3
MTQ4YWMuLjU4MmMzNWQzNjdkZmUxZTRmN2RjNGU5YTU2ODRkY2EyYTRlM2I0YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBB
Z2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKIEluc3BlY3RvckhlYXBBZ2VudDo6SW5zcGVjdG9ySGVhcEFnZW50KEFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSGVhcCJfcykKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEhlYXBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZpcm9ubWVu
dChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAppbmRleCA1NmZjMWI3OThkYTBlZWVlYTAyMzMxZWQ1MjU0YTk1MDIxMDA1
ODc0Li5jYmFkODFkNjk5NDQwYTczM2IwYWYwNDE2OTRhODZjYTllNmU4ZWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6SW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIlNjcmlwdFByb2ZpbGVyIl9zKQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoU2NyaXB0UHJvZmlsZXJCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGFyZ2V0QWdlbnQuY3BwCmluZGV4IDNhY2E0MTA1MTBmZTUwMGYwNWJmYmFhYzQ2N2ZmZGFjY2Iy
MWM1MjQuLjkzNTA2OGM3YWUxMTk3MTA1NDRjMWY3Njc5ODIyZGZiNjZlNTZiODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdl
dEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIEluc3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9u
dGVuZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlz
cGF0Y2hlcikKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGFyZ2V0Il9zKQotICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNo
ZXI+KGZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5jcHAKaW5kZXggZTMyOWEzYjQzY2Q2MDk2NWQ5Zjc3ODVhNDgyMjAxMWFiMzY2ZmE1My4u
OWIzZjM3OWQ1ZTVhNDkwZGJlMzc1YzcyYWM5OWZhNzIwYjlhY2NlZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVk
U2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KEVycm9yU3RyaW5nJiBlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpicmVh
a3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZz
dGF0ZSksIDApKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3Rh
dGUpLCAwKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IDE0NWQwNTE2YjhlMzk2ODg3OGQ5MmNiNTk0
YWE1OTliYWZhMzlkMzIuLjNiN2MzZTIxZDMxYzFjMmY1YjZkMWJhMGMxNmY0ODg4M2U2Y2YzMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChKU0FnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNv
bnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9nbG9iYWxPYmplY3QoY29u
dGV4dC5pbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCA3MTAxNjY4YTk3Yzg3NDQ4
MTJmNDY1NmYxNmUwYjdkZDU5NGYxYTYwLi5jYzk2NDAwNTY3OWRiZmNkNGZlMDI5MDZiYzkzYzIz
YjJjODJlY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludC5jcHAKQEAgLTE0NCwxMSArMTQ0LDExIEBAIE9wdGlvbmFsPENvbm5lY3Rp
b25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9y
bVNvY2tlCiAKICAgICBTb2NrZXQ6OnNldHVwKHNvY2tldCk7CiAKLSAgICBhdXRvIGNvbm5lY3Rp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKKyAgICBhdXRvIGNv
bm5lY3Rpb24gPSBtYWtlVW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKIAogICAgIGNvbm5l
Y3Rpb24tPnBvbGwgPSBTb2NrZXQ6OnByZXBhcmVQb2xsaW5nKHNvY2tldCk7CiAgICAgY29ubmVj
dGlvbi0+c29ja2V0ID0gc29ja2V0OwotICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVzc2FnZVBhcnNlcj4oaWQsIFNvY2tldDo6QnVmZmVyU2l6ZSk7CisgICAgY29u
bmVjdGlvbi0+cGFyc2VyID0gbWFrZVVuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpC
dWZmZXJTaXplKTsKICAgICBjb25uZWN0aW9uLT5wYXJzZXItPnNldERpZFBhcnNlTWVzc2FnZUxp
c3RlbmVyKFt0aGlzXShDb25uZWN0aW9uSUQgaWQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsK
ICAgICAgICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KQogICAgICAgICAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JFdmVudChpZCwgV1RGTW92ZShkYXRhKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCmlu
ZGV4IDcwZjJkN2E0ODEzNDcwZjgxMzczMmIzYjk3N2I1YjczYTQxOTYwYjUuLjMyMDQwMGZkNWIz
Y2RiMmM0YjE1ZGJkYzkzMDQ2YmJmZDAwY2FkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRw
b2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50PiBjcmVhdGUoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCogaW5zcGVjdG9yQ2xp
ZW50LCBjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFt
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50PihpbnNwZWN0b3JDbGllbnQsIG5hbWUpOwogICAgIH0KIAogICAgIFJlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50KFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQqLCBjb25zdCBj
aGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMu
cHkKaW5kZXggNjZmOWZkMmRjNDcwZDIxZjRkZTU3ZGU4MjhjMTU5NDQ1NjcxMjNiYi4uZmE1MDZh
NjFlOTliMzlhODc0NmUwY2U1YmUwZDZhYmMwYjBhNGU5NCAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVt
cGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM4LDggKzEzOCw4IEBAIGNs
YXNzIE9iakNHZW5lcmF0b3JUZW1wbGF0ZXM6CiAgICAgW18ke3ZhcmlhYmxlTmFtZVByZWZpeH1I
YW5kbGVyIHJlbGVhc2VdOwogICAgIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyID0gW2hh
bmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRl
cm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBt
YWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7
ZG9tYWluTmFtZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVB
Z2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3Jt
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dAppbmRleCA4ODQyYzllYjY5NzU2Y2U2MTQ3ZWM0YzJkOTdiZjcyYzdmMzUyMjNhLi5lMDcyZmFi
MjIxMjljYWY2NGEyMmY2NGVmMzRlMWUwOGFmYTcyODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRp
b25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTc3MSw4ICs3NzEsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25l
dHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250
cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwg
V1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4
dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGE3MTRmYjEzMTgzMjkz
ZDE4MzJmYzU4MWU2YzUzMzc4NjgwMmQ1NzIuLmMwZTE3MzM3ZmQ0YTc5ODgzMGU4NWQyOWU4NWQ4
ZWQzMDIwY2E3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb24tcmVzdWx0CkBAIC0xMTg5LDggKzExODksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9kYXRhYmFzZUhhbmRs
ZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
PihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdU
Rk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRy
YUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CmluZGV4IDUzYmQ1NTNiN2JhNzRkZGQyOWUyNTUxY2MwYjg0ZmE0MzA3MTRjYWUu
LmFlZDA3Yjc1ZThiODg4ZGQ1OTMzOTBhZmEyMWQyYzg5MGRkZmM1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEwNjgsOCArMTA2OCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RhdGFiYXNl
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBB
bHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVy
bmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxl
ciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWls
YWJpbGl0eS5qc29uLXJlc3VsdAppbmRleCA2NzhjNmFhYTg1YWNhMzg0MjQ4Yjk5MjkwMzRjY2Yw
OTQxMThkZWU3Li4xYWRjYmQzZmQyYWNiOWNhMTQ2MWMzMDhlNDVjNDkyZWMzZTAzMjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKQEAgLTc4Miw4ICs3ODIsOCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZG9tYWluQUhhbmRsZXIgcmVsZWFzZV07CiAg
ICAgX2RvbWFpbkFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5BQmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkEiX3MsICpfY29udHJv
bGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFw
cGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC04MDAsOCAr
ODAwLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkJIYW5kbGVy
IHJlbGVhc2VdOwogICAgIF9kb21haW5CSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAg
ICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0
b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRl
QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFp
bkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPj4o
IkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9y
RG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5CQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5C
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNv
bi1yZXN1bHQKaW5kZXggZjZjNWVkY2NiOTI4NWFmNDhjNmRlYjk4NDIyYTcyMzZiODcwMmQ0ZS4u
YTNlMjdkZjM4Y2VhZmJiM2M0NTFlMTNiNjExOWUyZTU0YzNkMmE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0x
MDM5LDggKzEwMzksOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29y
azFIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRh
aW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVl
PE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0
ZXJuYXRlQWdlbnQpKTsKIH0KIApAQCAtMTA1Nyw4ICsxMDU3LDggQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBbX25ldHdvcmszSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29y
azNIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazMiX3MsICpfY29u
dHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0
ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9s
bGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBw
ZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1y
ZXN1bHQKaW5kZXggZWMwYzEwYjRkYjQ2YjNiYzA4Mzg2ZmZiNzNjZmZmOTkwODZiZjA2NC4uYWJm
YjZlMTUzNzM2ZTdkNDZiY2RiMGNiZjM1NzliM2ViZDA5YzVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1
bHQKQEAgLTgxNSw4ICs4MTUsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
Y29tbWFuZERvbWFpbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2NvbW1hbmREb21haW5IYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hl
cj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFp
biJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
Pj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRl
cm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggMzBlODJjNWExNzY2MjhjZWJiZGJi
MGZjNDEwZWU5NmM4YTQ4ZGM0OS4uNmJkZWZmMTg3OTdjMTY5NWE4MWZiMTU2NDA2ZGUzOWM5Zjg4
MTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3Vh
cmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdApAQCAtNzk4LDggKzc5OCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmsx
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBB
bHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVy
bmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxl
ciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9u
cy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCA4ODQyYzllYjY5NzU2Y2U2MTQ3
ZWM0YzJkOTdiZjcyYzdmMzUyMjNhLi5lMDcyZmFiMjIxMjljYWY2NGEyMmY2NGVmMzRlMWUwOGFm
YTcyODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQK
QEAgLTc3MSw4ICs3NzEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0
d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0
YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERp
c3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURp
c3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9i
akNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8g
YWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5l
dHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVy
Pj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVy
KSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVB
Z2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggODM0MmU1ZmM1ZWZj
YTI4NDlkZmQxMmRiN2FhNGFiNDk4MmI2MWZlOC4uZWY5MDY2OTQzMGJiMTI2ZTY4OWJiYzdiZmZh
OWJiMGY1NDQ3MzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNjU0LDcgKzY1
NCw3IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0KQogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wRGlzYXNz
ZW1ibHkoKSB8fCAobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIE9wdGlvbnM6OmRpc2Fz
c2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKSkpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29kZUJsb2NrKTsKKyAgICAgICAg
bV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2sp
OwogICAgIGlmIChVTkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7CiAgICAg
ICAgIG1fY29tcGlsYXRpb24gPSBhZG9wdFJlZigKICAgICAgICAgICAgIG5ldyBQcm9maWxlcjo6
Q29tcGlsYXRpb24oCkBAIC05MDEsNyArOTAxLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjps
aW5rKCkKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVp
bGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChz
dGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmln
aW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBD
VG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9w
Y1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOwogICAgIAogICAgIENvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hC
dWZmZXIsIEpTRW50cnlQdHJUYWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAKaW5kZXggMTZiZjcwZDgwMTc0NDIzMDUwMmEyZDhiMTk3Y2Q0MDFjODAyNGYzOC4uNWJkZjgz
MDQ2NTA0Mzk5NGUxMWJhZmZlZDUyYmI3ODVjMWJhMGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
IEpJVFRodW5rczo6SklUVGh1bmtzKCkKLSAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChzdGQ6
Om1ha2VfdW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCisgICAgOiBtX2hvc3RGdW5jdGlv
blN0dWJNYXAobWFrZVVuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMzg4ZmIwZTYyNzA4YjM0ZWNiOTcx
ZTk0NmI0NmIxOTNjNGNhZTNiLi44ZjlhODY0ZTRmZTg2MjZhMWZlZmMwYzMwN2M5ZTQ2NTY2MmY1
YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwOTIsNyArMTA5
Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2Fs
bEZyYW1lU2h1ZmZsZXI+IGZyYW1lU2h1ZmZsZXI7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5mcmFt
ZVNodWZmbGVEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxs
KCkpOwotICAgICAgICBmcmFtZVNodWZmbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRnJhbWVT
aHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOworICAg
ICAgICBmcmFtZVNodWZmbGVyID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1Ykpp
dCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgICAgIC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGNh
bGxlZSBpcyBhIGNlbGwsIGFuZCB3ZSBjYW4KICAgICAgICAgLy8gdXNlIHRoZSBhZGRpdGlvbmFs
IHJlZ2lzdGVyIHRoaXMgYnV5cyB1cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzY4MTdlMDQ1
ZjU2N2U5ZWQzYTBlNTk1N2QyNWU2Mzc5ODU2NWZhZS4uNWFiMDBlZjdmZTU5MzFmNzQ2MjRmZTdj
MWYxYjBhYzQ2NzFjMDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI5NjksNyArMjk2OSw3
IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIs
IGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAg
ICAgICAgIGlmIChvcHRpb25zLm1fcHJvZmlsZSAmJiAhdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVy
KQotICAgICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZtKTsKKyAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQ
cm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CiAKICAgICAgICAg
Z2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1bWVudHMpOwogICAgICAg
ICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQob3B0aW9ucy5tX2VuYWJs
ZVJlbW90ZURlYnVnZ2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggZjhkYmU3MTk2ZjExMTcxNmQwYTU4ZjdmNTdlM2Y4ZjY3YjdhMmFjZi4uYTE2NGZkOTAz
ZjM2ZTk0MjBhNzM2NGVmNDI3YzZjMmZmZTMyMmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQ
YXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1v
ZGUKICAgICAsIG1faW1tZWRpYXRlUGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkluU3Rh
dGVtZW50KGZhbHNlKQogICAgICwgbV9kZWJ1Z2dlclBhcnNlRGF0YShkZWJ1Z2dlclBhcnNlRGF0
YSkKIHsKLSAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWls
dGluTW9kZSwgc2NyaXB0TW9kZSk7CisgICAgbV9sZXhlciA9IG1ha2VVbmlxdWU8TGV4ZXJUeXBl
Pih2bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291
cmNlLCAmbV9wYXJzZXJBcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3Vy
Y2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24uc3Rh
cnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IDY5YWEwYmMxOTBhZjY3ODNkODkyOGMzNTlhYTNiMTBiYjFmYmQ4NzMu
LjBhNWVkZTRiODQyNWNmZDFiMzE3Yzc2YzUxZWE3Mzc4MTc4MGI1MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBTY29wZSB7
CiAgICAgdm9pZCBwdXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFiZWwsIGJvb2wgaXNMb29w
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2xhYmVscykKLSAgICAgICAgICAgIG1fbGFiZWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxMYWJlbFN0YWNrPigpOworICAgICAgICAgICAgbV9sYWJlbHMgPSBt
YWtlVW5pcXVlPExhYmVsU3RhY2s+KCk7CiAgICAgICAgIG1fbGFiZWxzLT5hcHBlbmQoU2NvcGVM
YWJlbEluZm8geyBsYWJlbC0+aW1wbCgpLCBpc0xvb3AgfSk7CiAgICAgfQogCkBAIC0xOTQxLDcg
KzE5NDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgICAgICBlbmRMb2NhdGlvbi5s
aW5lU3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAg
ICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNldCgpOwog
ICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVu
ZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAorICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydENvbHVtbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApp
bmRleCBkZjE3YmU1MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNmMzNhN2VlLi40MTAwMDZkOTI3
NTFjZTk2YjkyY2I5NjI1NjM1ZWE3Y2Y3OGVjNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xODAsNyArMTgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIElkZW50aWZpZXJBcmVuYSYgaWRlbnRpZmllckFyZW5hKCkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZICghbV9pZGVudGlmaWVyQXJlbmEpKQotICAgICAgICAg
ICAgICAgIG1faWRlbnRpZmllckFyZW5hID0gc3RkOjptYWtlX3VuaXF1ZTxJZGVudGlmaWVyQXJl
bmE+KCk7CisgICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBtYWtlVW5pcXVlPElk
ZW50aWZpZXJBcmVuYT4oKTsKICAgICAgICAgICAgIHJldHVybiAqbV9pZGVudGlmaWVyQXJlbmE7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCmluZGV4IDA1MDMyYjVkMTMxMDhjMGViNjIwZTlkYWU4
MjBjZWY3YWM3NTMxOGMuLjM1NzExYjVmYTY0MjY5ZTY3NzRhYjcwZTIxZGQ1MDI1MTY5YzhlYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBp
bGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJD
b21waWxhdGlvbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0aW9uQ291bnRlciogQ29tcGls
YXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IoY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpbikKIHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhlY3V0aW9uQ291bnRlcj4mIGNvdW50ZXIgPSBtX2NvdW50
ZXJzLmFkZChvcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvdW50
ZXIpCi0gICAgICAgIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+
KCk7CisgICAgICAgIGNvdW50ZXIgPSBtYWtlVW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+KCk7CiAK
ICAgICByZXR1cm4gY291bnRlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAppbmRleCA3MGM3MTQ3MzMyNDQ0MDgwNzg3OTM0MDE5ODY2NzNjOTdlMWVhODNk
Li5hNjRkZTNmZGQ2NjI1NTE4YWM1ZDEyNmNlYWM3OGI2ZjIxMjVhNGZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gZ2V0U3RhY2tUcmFjZShFeGVjU3RhdGUqIGV4ZWMs
IFZNJiB2bSwgSlNPYmoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzaXplX3QgZnJh
bWVzVG9Ta2lwID0gdXNlQ3VycmVudEZyYW1lID8gMCA6IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0YWNrRnJhbWU+PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+
IHN0YWNrVHJhY2UgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKICAgICB2bS5p
bnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShvYmosICpzdGFja1RyYWNlLCBmcmFtZXNUb1NraXAs
IGdsb2JhbE9iamVjdC0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWUoKSk7CiAgICAgaWYgKCFzdGFj
a1RyYWNlLT5pc0VtcHR5KCkpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYyA9PSB2
bS50b3BDYWxsRnJhbWUgfHwgZXhlYy0+aXNHbG9iYWxFeGVjKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNDM5
ZTIwOWIwYTVmOGZiODI5Yjc5MTk3NTc0ODhjNDE1NjM0MjczZi4uZWYyZTgzMDg3NDFiODg1MmU1
NjIzMjZmOTYyNTdjOWQwMjkzNWQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJl
RGF0YVNsb3coKQogewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgYXV0byByYXJlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgYXV0byByYXJlRGF0YSA9IG1h
a2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmFyZURhdGEtPm1fbGluZUNvdW50ID0gbGluZUNv
dW50KCk7CiAgICAgcmFyZURhdGEtPm1fZW5kQ29sdW1uID0gZW5kQ29sdW1uKCk7CiAgICAgcmFy
ZURhdGEtPm1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgK
aW5kZXggNDYyMzY0MWM1OThlM2ViYjVmYmE2YmMwMjM3MjY0ZTUwNTJmZDE3OS4uNTJiMjhiMTNj
N2UyZTI1ZDIxYmJiYWIzYWQzMWQ1YjZiYzBjZGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGNs
YXNzIEZ1bmN0aW9uUmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50
IGZpbmFsIDogcHVibGljIFdhdGNoCiBpbmxpbmUgV2F0Y2hwb2ludCogRnVuY3Rpb25SYXJlRGF0
YTo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKCFoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKTsK
LSAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CisgICAgbV9h
bGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8QWxsb2NhdGlv
blByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+KHRoaXMpOwogICAgIHJldHVybiBtX2FsbG9jYXRp
b25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMWE1N2VmM2RjZmU5
MTllNzBiMzdmYTdlMzQ4NTRhMTNlOTA1M2ZhZS4uY2M4Nzc2N2YxMDhiY2M0ODNiMzE1ZjExMmZh
OWM1MzQ3ZjUyMDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmluaXQoVk0mIHZtKQogICAgIG1fZGVidWdnZXIgPSAwOwogCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCi0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwotICAg
IG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RE
ZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlPigqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CiAgICAg
bV9jb25zb2xlQ2xpZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xlQ2xpZW50KCk7
CiAjZW5kaWYKQEAgLTExNDUsNTcgKzExNDUsNTcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IG1h
a2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2
bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fYXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1f
YXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAg
ICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0p
OwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0b3JQcm90b3R5cGUsIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQo
bV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wp
OwotICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0
Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQ
cm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc2V0SXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0
SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAg
IHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFw
dGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+
aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJ
dGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQobV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKLSAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlw
ZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludCht
X3N0cmluZ1Byb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCk7Ci0gICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJv
bEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hw
b2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwotICAg
ICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90
eXBlU2V0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBT
ZXRXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0
YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgp
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRX
YXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOwogICAgICAgICBt
X3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIApAQCAtMTIw
Niw3ICsxMjA2LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgdGhpcy0+c3lt
Ym9sUHJvdG90eXBlKCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCBtX3ZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVy
VG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlLT5nZXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwogICAgIH0KQEAgLTE5MzIsMTAg
KzE5MzIsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dh
dGNocG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3Bl
Y2llc1dhdGNocG9pbnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAgbV9hcnJheVNwZWNpZXNXYXRj
aHBvaW50LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKTsKIAot
ICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBv
aW50KTsKKyAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gbWFrZVVu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hw
b2ludCk7CiAgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0
Y2hwb2ludCk7CisgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQgPSBtYWtl
VW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9p
bnQpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggMDQ3YzE2NjUzZTcxYjFhODA2YmQ5ZmM3ZDU2NjQzYTVmOTg4ZjExZS4uODQ1MzVj
YTVjNjAwY2VjYmQ4YjQ3OGY2NWI1M2NkMDdlMzZhODM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01MjEsNyArNTIxLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgewogICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4o
KTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0
YT4oKTsKICAgICB9CiAgICAgICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDFhZjAwMzY1M2NiOGMzZGU2NDNm
OGM0OTEyN2FiYjNlNTUxM2Q1YWQuLjMyN2ZlZDA2YzY3YTViZjExMjUxZjlmNGRlZDgzOWU3MDMz
YzhhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9v
cFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BU
aW1lci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6
UGVyVk1EYXRhOjpzZXRSdW5Mb29wKE1hbmFnZXIqIG1hbmFnZXIsIENGUnVuTG9vcFIKICNlbHNl
CiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdlciYg
bWFuYWdlcikKICAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKLSAgICAsIHRpbWVy
KHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFu
YWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCisg
ICAgLCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PigqcnVuTG9vcCwg
Jm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2sp
KQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGltZXItPnNldFByaW9yaXR5KFJ1
bkxvb3BTb3VyY2VQcmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsKQEAgLTE3Miw3ICsxNzIsNyBA
QCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlciYgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNoYXJl
ZCgpCiAKIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVyVk0oVk0mIHZtKQog
ewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVyVk1EYXRhPigqdGhpcyk7Cisg
ICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKICNpZiBVU0UoQ0Yp
CiAgICAgZGF0YS0+c2V0UnVuTG9vcCh0aGlzLCB2bS5ydW5Mb29wKCkpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aAppbmRleCA1ZjA3OGQyYTUwOWQyYjQ0MjAwZjdhNGFmMzg4MTI0NmNiMmQ1OGE3Li41MjkwMjBk
ZjBmMWRjMmEyODZmODAwYWJhZDlkN2ViN2QzZjhlZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTQ0OCw3ICs0
NDgsNyBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9m
ZnNldCgpCiBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAg
IG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNl
dD4+KCk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4+KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAK
aW5kZXggNTllYzQxYzQ5YWU4MmY0N2Y2OTg2ODA2ZGQ2MTQzOTQ0YTQyYjVkNi4uYjFiYjY3OTE5
OTI2NWFmY2JjY2M4MzY1NmQ4ZDU2ZmM1YjRhMzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUHJvcGVy
dHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVy
KQogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQ
cm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZz
ZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0
ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3Ro
ZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVl
PFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogUHJv
cGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0
eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCkBAIC0xMDcsNyArMTA3LDcgQEAgUHJvcGVy
dHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwg
Y29uc3QgUHJvcGVydHlUYWIKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rv
ci4KICAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3Ro
ZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykK
LSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3Bl
cnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZz
ZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CiB9CiAKIHZvaWQgUHJvcGVydHlUYWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCAwNzFiMWY2NjMxNWNl
M2FlOGRjZmUxNzVmZjYzNjZmNWM2MzJhZmZjLi43MGU1OTNkNTNlYmRkODFkOGMwODEzYTI5Nzcw
ZTk0MGNlMDQxMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAK
QEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
CiAgICAgbV9udW1TdWJwYXR0ZXJucyA9IHBhdHRlcm4ubV9udW1TdWJwYXR0ZXJuczsKICAgICBp
ZiAoIXBhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcy5pc0VtcHR5KCkgfHwgIXBhdHRlcm4ubV9u
YW1lZEdyb3VwVG9QYXJlbkluZGV4LmlzRW1wdHkoKSkgewotICAgICAgICBtX3JhcmVEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VV
bmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fY2FwdHVyZUdyb3VwTmFt
ZXMuc3dhcChwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMpOwogICAgICAgICBtX3JhcmVEYXRh
LT5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguc3dhcChwYXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFy
ZW5JbmRleCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRl
eCAzOWNkZDkxMTZlMDI3ZTNkYjYwNDBkYmQ4ZmU1MjcwZDJlOTk1ZDhkLi5lOGRhODUyNmU3Yzdl
ODFmYmVhNzVjODg5ODgxNjFiOWFmODkxNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaApAQCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGVuc3VyZVJlZ0V4cEpJVENvZGUo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUpCi0gICAgICAgICAgICBtX3Jl
Z0V4cEpJVENvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7Cisg
ICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUgPSBtYWtlVW5pcXVlPFlhcnI6OllhcnJDb2RlQmxv
Y2s+KCk7CiAgICAgICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2RlLmdldCgpOwogICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmNwcAppbmRleCAyMzdkN2RlNjg4ZGQyMDc2NTAyMDEyMTZjZDBkNTQ2ODBjNDk2ZWFhLi5l
ZTZlMThjZWZkYmU3OWY0YmMyZWIyMTk3ZmY1MzkxMDRlMWY3OTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtNDY5LDcg
KzQ2OSw3IEBAIGF1dG8gU2NyaXB0RXhlY3V0YWJsZTo6ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXBJ
bXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjCiB7CiAgICAgaWYgKGRlc3QpCiAgICAg
ICAgIHJldHVybiAqZGVzdDsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVt
cGxhdGVPYmplY3RNYXA+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFRlbXBsYXRl
T2JqZWN0TWFwPigpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgZGVzdCA9IFdU
Rk1vdmUocmVzdWx0KTsKICAgICByZXR1cm4gKmRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAyOTNjNDY0NzJlNzQ4OTQxY2E5Y2MyYWRhYzE2
YTNkMmRjNWRlZWVjLi4wMWNkMmJkNTQ3ZmUwMmI1MDQ3YTZkNDViM2M4YWQ2ZmQ1MmJkYjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTg1Niw3
ICs4NTYsNyBAQCBXYXRjaHBvaW50U2V0KiBTdHJ1Y3R1cmU6OmVuc3VyZVByb3BlcnR5UmVwbGFj
ZW1lbnRXYXRjaHBvaW50U2V0KFZNJiB2bSwgUHJvcGVydAogICAgIFN0cnVjdHVyZVJhcmVEYXRh
KiByYXJlRGF0YSA9IHRoaXMtPnJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS0+bV9yZXBs
YWNlbWVudFdhdGNocG9pbnRTZXRzKSB7CiAgICAgICAgIHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50
V2F0Y2hwb2ludFNldHMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxTdHJ1Y3R1cmVS
YXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOworICAgICAgICAgICAgbWFrZVVuaXF1
ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOwogICAgICAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IHJhcmVEYXRh
LT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMtPmFkZChvZmZzZXQsIG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
CmluZGV4IDk5YThkOWY3ZGFhYzIxN2U0YzgxZTdlNzEyNmU5YzAyYjM3NGVkM2YuLmQzY2YxODNi
MGY2ZDdjNDg5ODgwMGFiNjhlZTQ4Y2QxMjhmN2ZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAgLTE0MCw3ICsxNDAs
NyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cgogICAgIEFTU0VSVChjb25kaXRpb25TZXQuc3Ry
dWN0dXJlc0Vuc3VyZVZhbGlkaXR5KCkpOwogICAgIGZvciAoT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uIDogY29uZGl0aW9uU2V0KSB7CiAgICAgICAgIGlmIChjb25kaXRpb24uY29u
ZGl0aW9uKCkua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZSkgewotICAgICAg
ICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CisgICAgICAgICAgICBtX29iamVj
dFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2Jq
ZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2
Q29uZGl0aW9uLCB0aGlzKTsKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUlu
ZmVycmVkVmFsdWVXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0LmFkZChjb25kaXRp
b24sIHRoaXMpLT5pbnN0YWxsKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcAppbmRleCAzOTJmMjE3YzE0ZWZhZWI1NDViZjBkNGY3NzkwYzExMjc5
MzJiYzg1Li5hNGE4NzBmYzFmY2FkMzVjNDM5NWYxMDliMjJhOTljNDIwZDc0MTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xMTgsNyAr
MTE4LDcgQEAgY29uc3QgU3ltYm9sVGFibGU6OkxvY2FsVG9FbnRyeVZlYyYgU3ltYm9sVGFibGU6
OmxvY2FsVG9FbnRyeShjb25zdCBDb25jdXJyZW50SlMKICAgICAgICAgICAgICAgICBzaXplID0g
c3RkOjptYXgoc2l6ZSwgb2Zmc2V0LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgKyAxKTsKICAgICAg
ICAgfQogICAgIAotICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9j
YWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsKKyAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBt
YWtlVW5pcXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CiAgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX21hcCkgewogICAgICAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVu
dHJ5LnZhbHVlLnZhck9mZnNldCgpOwogICAgICAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkp
CkBAIC0xNTksNyArMTU5LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3Bl
UGFydChWTSYgdm0pCiAgICAgICAgIHJlc3VsdC0+bV9hcmd1bWVudHMuc2V0KHZtLCByZXN1bHQs
IGFyZ3VtZW50cyk7CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEpIHsKLSAgICAgICAgcmVzdWx0
LT5tX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwor
ICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURh
dGE+KCk7CiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpdGVyID0gbV9yYXJlRGF0YS0+
bV91bmlxdWVJRE1hcC5iZWdpbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgU3ltYm9sVGFi
bGU6OnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiAg
ICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmFyZURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIGZvciAoYXV0byBpdGVy
ID0gbV9tYXAuYmVnaW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
IHsKICAgICAgICAgbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoaXRlci0+a2V5LCBUeXBl
UHJvZmlsZXJOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7CkBAIC0yMTAsNyArMjEwLDcgQEAgQ29k
ZUJsb2NrKiBTeW1ib2xUYWJsZTo6cmFyZURhdGFDb2RlQmxvY2soKQogdm9pZCBTeW1ib2xUYWJs
ZTo6c2V0UmFyZURhdGFDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgaWYg
KCFtX3JhcmVEYXRhKQotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1i
b2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1i
b2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX2NvZGVCbG9j
ayk7CiAgICAgbV9yYXJlRGF0YS0+bV9jb2RlQmxvY2suc2V0KCpjb2RlQmxvY2stPnZtKCksIHRo
aXMsIGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3Bw
CmluZGV4IDQxMGViNmQ1YWUxNmYzNjAyMjZkYjM4MjNmN2VlODI4ZWNjYWIzODMuLjQxYWNhOWQz
ZDRkOWI4YTU2YWU2ODUyMzBlOGQ2Njc1MmFjMGQwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIFN0cnVjdHVy
ZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb3RvLT5w
cm9wZXJ0eUhhc2goKSk7CiAgICAgfQogCi0gICAgbV9wcm9wZXJ0eUhhc2ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsKKyAgICBtX3Byb3BlcnR5SGFzaCA9
IG1ha2VVbmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiAqbV9w
cm9wZXJ0eUhhc2g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0
ZTJkMGQzMjRhMjRlMjMyY2QxOTUzODkyZWQ4YjBhMzNiMGIwNWVlLi5iNzA5MmMwOGVmNzJiMGVj
YTg5ZmYwYjVjNGJlMWFlNTlhYTFkYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC0yNTIsMTggKzI1MiwxOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgLCBtX3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQogI2VuZGlm
IC8vIFVTRShDRikKICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCi0gICAgLCBmYXN0TWFsbG9j
QWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0
b3I+KCkpCi0gICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVl
PEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCi0g
ICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFs
aWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFy
eUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0
ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQotICAgICwg
aW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxU
eXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlND
ZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUoc3RkOjpt
YWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1
Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2Vs
bFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRz
RGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlw
ZShzdGQ6Om1ha2VfdW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQotICAgICwgZGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlx
dWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVH
aWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Io
bWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1Zh
bHVlKSkKKyAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlw
ZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGls
aWFyeSkpKQorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8
SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFw
Q2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKKyAgICAsIGNlbGxIZWFwQ2VsbFR5
cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVz
dHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZSht
YWtlVW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQorICAgICwgZGVzdHJ1Y3RpYmxlT2Jq
ZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGU+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxv
Y2tIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVh
cENlbGxUeXBlPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShzdGQ6
Om1ha2VfdW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3
ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENl
bGxUeXBlKG1ha2VVbmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkKICNl
bmRpZgogICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdp
Z2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJp
bWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgogICAgICwg
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5
IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxv
Y2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2CkBAIC0yOTYsNyArMjk2LDcgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9hdG9tU3RyaW5nVGFi
bGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUo
KSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAg
ICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCi0gICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0
ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVTdGF0cz4oKSkK
KyAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChtYWtl
VW5pcXVlPFNpbXBsZVN0YXRzPigpKQogICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25N
YXAoKnRoaXMpCiAgICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKICAgICAsIHN5bWJvbEltcGxUb1N5
bWJvbE1hcCgqdGhpcykKQEAgLTMxMiw4ICszMTIsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luaXRpYWxpemluZ09iamVjdENsYXNzKDApCiAj
ZW5kaWYKICAgICAsIG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KDApCi0gICAgLCBtX2NvZGVDYWNo
ZShzdGQ6Om1ha2VfdW5pcXVlPENvZGVDYWNoZT4oKSkKLSAgICAsIG1fYnVpbHRpbkV4ZWN1dGFi
bGVzKHN0ZDo6bWFrZV91bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCisgICAgLCBt
X2NvZGVDYWNoZShtYWtlVW5pcXVlPENvZGVDYWNoZT4oKSkKKyAgICAsIG1fYnVpbHRpbkV4ZWN1
dGFibGVzKG1ha2VVbmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCiAgICAgLCBtX3R5
cGVQcm9maWxlckVuYWJsZWRDb3VudCgwKQogICAgICwgbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJs
ZWQoSXNXYXRjaGVkKQogICAgICwgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50KDAp
CkBAIC00MDcsNyArNDA3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgIExMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7CiAgICAgCiAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZVByb2ZpbGVyKCkpKSB7Ci0gICAgICAgIG1fcGVy
Qnl0ZWNvZGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPigq
dGhpcyk7CisgICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmls
ZXI6OkRhdGFiYXNlPigqdGhpcyk7CiAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gcGF0aE91
dDsKICAgICAgICAgY29uc3QgY2hhciogcHJvZmlsZXJQYXRoID0gZ2V0ZW52KCJKU0NfUFJPRklM
RVJfUEFUSCIpOwpAQCAtNDIzLDcgKzQyMyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlD
b250cm9sbGVyID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOwog
Ci0gICAgbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CisgICAgbV9ieXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CiAK
ICAgICBpZiAoT3B0aW9uczo6dXNlVHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIGVuYWJsZVR5cGVQ
cm9maWxlcigpOwpAQCAtNDQyLDkgKzQ0Miw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFw
VHlwZSBoZWFwVHlwZSkKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKICAg
ICBpZiAoT3B0aW9uczo6dXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRG
dXp6ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPFJhbmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlz
KSk7CisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8UmFuZG9taXppbmdGdXp6ZXJB
Z2VudD4oKnRoaXMpKTsKICAgICBlbHNlIGlmIChPcHRpb25zOjp1c2VEb3VibGVQcmVkaWN0aW9u
RnV6emVyQWdlbnQoKSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxE
b3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAgIHNldEZ1enplckFn
ZW50KG1ha2VVbmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOwogCiAg
ICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAoKSkKICAgICAg
ICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsKQEAgLTQ1Nyw5ICs0NTcs
OSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUgSklUIGlzIGdv
aW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvbXBpbGF0aW9uIHRocmVhZHMuCiAg
ICAgaWYgKGNhblVzZUpJVCgpKSB7Ci0gICAgICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1
ZTxKSVRUaHVua3M+KCk7CisgICAgICAgIGppdFN0dWJzID0gbWFrZVVuaXF1ZTxKSVRUaHVua3M+
KCk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgICAgIGZ0bFRodW5rcyA9IHN0ZDo6bWFrZV91
bmlxdWU8RlRMOjpUaHVua3M+KCk7CisgICAgICAgIGZ0bFRodW5rcyA9IG1ha2VVbmlxdWU8RlRM
OjpUaHVua3M+KCk7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUlu
dGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJ
SW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CkBAIC02MTks
NyArNjE5LDcgQEAgV2F0Y2hkb2cmIFZNOjplbnN1cmVXYXRjaGRvZygpCiBIZWFwUHJvZmlsZXIm
IFZNOjplbnN1cmVIZWFwUHJvZmlsZXIoKQogewogICAgIGlmICghbV9oZWFwUHJvZmlsZXIpCi0g
ICAgICAgIG1faGVhcFByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwUHJvZmlsZXI+KCp0
aGlzKTsKKyAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBtYWtlVW5pcXVlPEhlYXBQcm9maWxlcj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9oZWFwUHJvZmlsZXI7CiB9CiAKQEAgLTEwNDEsOCArMTA0
MSw4IEBAIHN0YXRpYyBib29sIGRpc2FibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCh1bnNp
Z25lZCYgY291bnRlciwgY29uc3QgRnVuYyYgZG9ECiBib29sIFZNOjplbmFibGVUeXBlUHJvZmls
ZXIoKQogewogICAgIGF1dG8gZW5hYmxlVHlwZVByb2ZpbGVyID0gW3RoaXNdICgpIHsKLSAgICAg
ICAgdGhpcy0+bV90eXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlcj4o
KTsKLSAgICAgICAgdGhpcy0+bV90eXBlUHJvZmlsZXJMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5
cGVQcm9maWxlckxvZz4oKnRoaXMpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IG1h
a2VVbmlxdWU8VHlwZVByb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlckxv
ZyA9IG1ha2VVbmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CiAgICAgfTsKIAogICAgIHJl
dHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX3R5cGVQcm9maWxlckVuYWJs
ZWRDb3VudCwgZW5hYmxlVHlwZVByb2ZpbGVyKTsKQEAgLTEwNjEsNyArMTA2MSw3IEBAIGJvb2wg
Vk06OmRpc2FibGVUeXBlUHJvZmlsZXIoKQogYm9vbCBWTTo6ZW5hYmxlQ29udHJvbEZsb3dQcm9m
aWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyID0gW3RoaXNdICgp
IHsKLSAgICAgICAgdGhpcy0+bV9jb250cm9sRmxvd1Byb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93UHJv
ZmlsZXIgPSBtYWtlVW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CiAgICAgfTsKIAogICAg
IHJldHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX2NvbnRyb2xGbG93UHJv
ZmlsZXJFbmFibGVkQ291bnQsIGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpOwpAQCAtMTA4Nyw3
ICsxMDg3LDcgQEAgdm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEoKQogCiB2b2lkIFZNOjpx
dWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNr
PiYmIHRhc2spCiB7Ci0gICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOworICAg
IG1fbWljcm90YXNrUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZn
bG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBWTTo6ZHJhaW5NaWNyb3Rh
c2tzKCkKQEAgLTEyMzAsMTQgKzEyMzAsMTQgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tl
bigpCiB7CiAgICAgaWYgKG1fc2hhZG93Q2hpY2tlbikKICAgICAgICAgcmV0dXJuOwotICAgIG1f
c2hhZG93Q2hpY2tlbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKKyAgICBt
X3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAKICNkZWZp
bmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxs
VHlwZSwgdHlwZSkgXAogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7
IFwKICAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBD
ZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vi
c3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1v
dmUoc3BhY2UpOyBcCiAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXApAQCAtMTI2OCw3
ICsxMjY4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWEKICAgICBJc29TdWJzcGFjZSogVk06
Om5hbWUjI1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0g
ICAgICAgIGF1dG8gc3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VC
U1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3Bh
Y2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFw
Q2VsbFR5cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAg
ICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gJm1fIyNu
YW1lLT5zcGFjZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKaW5kZXggMjRmMThhZDAyZGUyZmVmOTAwOTM0NDg2NDMwYzk4ZmU5NDk0
MjRlZi4uNTMzOTNjYjI1OGY3NDJjNmFjZmRkZWFlYzZjNzE3NTY0NGQ3OTQxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC00
MTcsNyArNDE3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3IgewogICAgIHZvaWQgZW1pdFBhdGNo
cG9pbnQoQmFzaWNCbG9jayogYmFzaWNCbG9jaywgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2gs
IFRtcCByZXN1bHQsIFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgaW5saW5lU2l6ZT4mJiBhcmdzKQog
ICAgIHsKICAgICAgICAgaWYgKCFtX3BhdGNocG9pbnRTcGVjaWFsKQotICAgICAgICAgICAgbV9w
YXRjaHBvaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1f
Y29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigp
KSk7CisgICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBh
dGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hw
b2ludFNwZWNpYWw+KCkpKTsKIAogICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIHBhdGNoLCBBcmc6
OnNwZWNpYWwobV9wYXRjaHBvaW50U3BlY2lhbCkpOwogICAgICAgICBJbnN0IHJlc3VsdE1vdjsK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAKICAgICAgICAgLy8g
RklYTUU6IE1ha2UgYSBoYXNobWFwIG9mIHRoZXNlLgogICAgICAgICBCMzo6Q2hlY2tTcGVjaWFs
OjpLZXkga2V5KGJyYW5jaCk7Ci0gICAgICAgIEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBz
dGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtl
X3VuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CisgICAgICAgIEIzOjpDaGVja1NwZWNp
YWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNw
ZWNpYWwobWFrZVVuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CiAKICAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGUgbmVlZCBmb3IgZHVtbXkgdmFsdWVzCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAKQEAgLTIxMzksMTAgKzIx
MzksMTAgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4gQjM6Ok9yaWdpbgogCiBF
eHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VB
bmRDb21waWxlQWlyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25z
dCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlu
a2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5
TW9kZSBtb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBU
aHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250
ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJz
PigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRl
ckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxh
dGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4o
KTsKIAogICAgIEIzOjpQcm9jZWR1cmUgcHJvY2VkdXJlOwogICAgIENvZGUmIGNvZGUgPSBwcm9j
ZWR1cmUuY29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCmluZGV4IDIwOTQxNzdlZDZmMTgzYWI0ZDg2MmVjMjI2N2QzMGYyOGI3ZGU1
YjYuLjE1OGRmOWZhOWYwYzlmNzIxYWMyOTI3NzgxODhkY2YyOGU3MDdmZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE1NTEs
MTAgKzE1NTEsMTAgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBPcmlnaW4KIAog
RXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNl
QW5kQ29tcGlsZShDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29uc3Qg
dWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtl
ZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9yeU1v
ZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rp
b25JbmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2Fz
bUV4Y2VwdGlvbikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJu
YWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5j
dGlvbj4oKTsKIAotICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRl
eHQud2FzbUVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsK
KyAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1
ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50
SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBQcm9jZWR1cmUgcHJvY2Vk
dXJlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXgg
Zjk4NWQ1MjNjMmU5M2YzYmQyM2ZiN2M1NzEyYjU4NjhjYzE2YTY4NS4uNTA2ZGY0YmVmZDBkNTY0
MTg0NGNlNTI3OTUxMTVmNjEyODcxNjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxl
dGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1fd2FzbUludGVybmFs
RnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIG1fd2FzbUludGVy
bmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFr
ZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICAgICAgICAgICAgICBGSU5BTElaRV9D
T0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBCQlEgZnVu
Y3Rpb25bJWldICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3Bh
Y2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNw
YWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250
ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwogICAgICAgICAgICAgfQpAQCAtMzI3LDcg
KzMyNyw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+ZW50cnlwb2lu
dC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAg
ICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24tPmVudHJ5cG9pbnQuY29t
cGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAg
ICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIkVtYmVk
ZGVyLT5XZWJBc3NlbWJseSBlbnRyeXBvaW50WyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRl
eCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhP
ck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlv
bi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAg
ICAgICAgICAgIFdURk1vdmUoY29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5j
cHAKaW5kZXggYzUxM2ZkMmY1MGVkNmZiMTdjMzM4NWVmMjkwNTI3ODE3MzkyMTAzNy4uMGQ3YTAz
YzM2MTI5Y2QxZGUyYzU0ZmZjZDUwMjk1YjU2YzViODk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIE9NR1BsYW46
OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBv
bWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRp
b24+KAorICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21w
aWxhdGlvbj4oCiAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlv
blB0clRhZywgIldlYkFzc2VtYmx5IE9NRyBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIG1fZnVu
Y3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJp
bmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5u
YW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAg
ICAgICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKaW5kZXggMzZkNzRjMTRi
MThjNzA3YjgxMmEwNDg3ZjkxZTI5YzM4NTM5MWRlMi4uNjYwZjk1NjU3MzhiMTBhMzBmM2U3Y2M4
MThhMzJjODU4NzgyMTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVdvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29y
a2xpc3QuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgV29ya2xpc3Q6OldvcmtsaXN0KCkKICAgICBt
X3RocmVhZHMucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzKTsKICAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKLSAgICAgICAgbV90aHJlYWRzLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwg
KnRoaXMpKTsKKyAgICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFdv
cmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKIH0KIAogV29ya2xpc3Q6On5Xb3JrbGlz
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggNWRk
NDUxYmVhODRkNTkwYmJmMGZjYjA3NmUyNmZmZDNjYzdiODFhYy4uNzM1MjIwMjg5MzdjNmRhYzFm
YzQ3M2M3ZTRjZGM2NDk1OGNlOGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTVG9XYXNtLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxG
dW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAog
ewogICAgIENDYWxsSGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVu
dHJ5cG9pbnRKSVQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJu
YWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5j
dGlvbj4oKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgIC8vIEZJWE1F
IFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcAppbmRleCA3ZjAzM2ZlYzFjMzY5YTk0MjNiMzNjZjhlYjMzMzRjNTFjZTA4
MDhiLi5jNGI3N2NhZGJlNWVlYTU3M2VjODUyYjk1ZWY2YTc4OWI4Mjg1MzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTE3MDYsNyAr
MTcwNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgICAgICBkdW1wRGlzanVuY3Rp
b24obV9ib2R5RGlzanVuY3Rpb24uZ2V0KCkpOwogI2VuZGlmCiAKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9u
KSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURp
c2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBs
b2NrKTsKICAgICB9CiAKICAgICB2b2lkIGNoZWNrSW5wdXQodW5zaWduZWQgY291bnQpCkBAIC0x
OTI2LDcgKzE5MjYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICB1bnNpZ25lZCBz
dWJwYXR0ZXJuSWQgPSBwYXJlbnRoZXNlc0JlZ2luLmF0b20uc3VicGF0dGVybklkOwogCiAgICAg
ICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gbGFzdFN1YnBhdHRlcm5JZCAtIHN1YnBhdHRl
cm5JZCArIDE7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7
CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURp
c2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAKICAgICAgICAgdW5z
aWduZWQgZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyA9IGJlZ2luVGVybSArIDE7CiAgICAgICAgIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24tPnRlcm1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW5kVGVy
bSAtIGZpcnN0VGVybUluUGFyZW50aGVzZXMgKyAyKTsKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAKICAgICB2b2lkIHJlZ2V4QmVnaW4odW5zaWduZWQgbnVtU3Vi
cGF0dGVybnMsIHVuc2lnbmVkIGNhbGxGcmFtZVNpemUsIGJvb2wgb25jZVRocm91Z2gpCiAgICAg
ewotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZURpc2p1
bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIG1fYm9keURp
c2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBj
YWxsRnJhbWVTaXplKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChC
eXRlVGVybTo6Qm9keUFsdGVybmF0aXZlQmVnaW4ob25jZVRocm91Z2gpKTsKICAgICAgICAgbV9i
b2R5RGlzanVuY3Rpb24tPnRlcm1zWzBdLmZyYW1lTG9jYXRpb24gPSAwOwogICAgICAgICBtX2N1
cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5jcHAKaW5kZXggNDEyYzZlNGE2Y2JlYWM4OTMyMWIwYWU3ODBmZGQ3NmEwNjE5YmUyZC4uZjY2
YTgyZTU3NTFhZGRhMzI5ZWRlZWY3MGFkOTI2OWQxMWVkMmI5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTM4OTksNyArMzg5OSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgp
IHx8IE9wdGlvbnM6OmR1bXBSZWdFeHBEaXNhc3NlbWJseSgpKSkKLSAgICAgICAgICAgIG1fZGlz
YXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0aGlzKTsKKyAg
ICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0
aGlzKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBtX2Rpc2Fz
c2VtYmxlci0+c2V0U3RhcnRPZkNvZGUobGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAKaW5kZXggNDlmNzdmNjljNjg1YzY1MjAzZGYzZjAzNGM5MGQx
ODc3YzkyZGM5Yi4uZmNjNTFiMjc3ZjUwMTEwM2I3YzY1YmJkMzNhNWNhNDEwZDgxYzBlZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMjQwLDcgKzI0
MCw3IEBAIGNsYXNzIENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAg
Y29hbGVzY2VUYWJsZXMoKTsKIAotICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICAgICAgYXV0byBjaGFyYWN0ZXJDbGFz
cyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAKICAgICAgICAgY2hhcmFjdGVyQ2xh
c3MtPm1fbWF0Y2hlcy5zd2FwKG1fbWF0Y2hlcyk7CiAgICAgICAgIGNoYXJhY3RlckNsYXNzLT5t
X3Jhbmdlcy5zd2FwKG1fcmFuZ2VzKTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBjbGFzcyBZYXJyUGF0
dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgLCBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3Io
cGF0dGVybi5pZ25vcmVDYXNlKCksIHBhdHRlcm4udW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6
VW5pY29kZSA6IENhbm9uaWNhbE1vZGU6OlVDUzIpCiAgICAgICAgICwgbV9zdGFja0xpbWl0KHN0
YWNrTGltaXQpCiAgICAgewotICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
dHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5ID0gbWFrZVVuaXF1ZTxQYXR0
ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBib2R5LmdldCgp
OwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAg
ICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGJvZHkpKTsKQEAg
LTQ1Niw3ICs0NTYsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAg
bV9wYXR0ZXJuLnJlc2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAgIG1fY2hhcmFjdGVyQ2xhc3ND
b25zdHJ1Y3Rvci5yZXNldCgpOwogCi0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlx
dWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBtYWtlVW5pcXVl
PFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9keSA9IGJvZHku
Z2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRlcm5hdGl2ZSgp
OwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoYm9keSkp
OwpAQCAtNjA4LDcgKzYwOCw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVCghb3B0R3JvdXBOYW1lKTsKIAotICAgICAg
ICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5E
aXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNq
dW5jdGlvbiA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsK
ICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVy
blRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRlcm5JZCwgcGFyZW50aGVz
ZXNEaXNqdW5jdGlvbi5nZXQoKSwgY2FwdHVyZSwgZmFsc2UpKTsKICAgICAgICAgbV9hbHRlcm5h
dGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAg
ICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShwYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uKSk7CkBAIC02MTYsNyArNjE2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1
Y3RvciB7CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBp
bnZlcnQgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsK
KyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJu
RGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rl
cm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3Nl
cnRpb24sIG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFyZW50aGVzZXNEaXNqdW5j
dGlvbi5nZXQoKSwgZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9pbnZl
cnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwpAQCAtNzA3LDcgKzcwNyw3IEBAIGNs
YXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0
aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLmdldCgp
OwogICAgICAgICAgICAgaWYgKCFmaWx0ZXJTdGFydHNXaXRoQk9MIHx8ICFhbHRlcm5hdGl2ZS0+
bV9zdGFydHNXaXRoQk9MKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXdEaXNqdW5jdGlvbikg
ewotICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlv
biA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICAgICAgICAgICAg
ICBuZXdEaXNqdW5jdGlvbi0+bV9wYXJlbnQgPSBkaXNqdW5jdGlvbi0+bV9wYXJlbnQ7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbmV3QWx0
ZXJuYXRpdmUgPSBuZXdEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKQEAgLTE0NzMs
NyArMTQ3Myw3IEBAIHZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0ZXJuKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRyPENoYXJh
Y3RlckNsYXNzPiBhbnljaGFyQ3JlYXRlKCkKIHsKLSAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0g
c3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+
bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MDAsIDB4N2YpKTsKICAgICBjaGFyYWN0
ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwODAsIDB4
MTBmZmZmKSk7CiAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fY2hhcmFjdGVyV2lkdGhzID0gQ2hhcmFj
dGVyQ2xhc3NXaWR0aHM6Okhhc0JvdGhCTVBBbmROb25CTVA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCAwYjdkYjJlYmE4YWQ1MmRlZDJiNWY3ZTY3ZTU0NWI4
YzE2Yzk0NWM3Li43ZTgyYzg1NWE4NzhlNmMxODBlZDUyMWYxZjdhZDQ4ZDhjMWZiYWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTM0MSw3ICszNDEsNyBA
QCBzdHJ1Y3QgUGF0dGVybkRpc2p1bmN0aW9uIHsKICAgICAKICAgICBQYXR0ZXJuQWx0ZXJuYXRp
dmUqIGFkZE5ld0FsdGVybmF0aXZlKCkKICAgICB7Ci0gICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOworICAgICAg
ICBtX2FsdGVybmF0aXZlcy5hcHBlbmQobWFrZVVuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+KHRo
aXMpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhdHRlcm5BbHRlcm5hdGl2ZSo+KG1f
YWx0ZXJuYXRpdmVzLmxhc3QoKS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwppbmRleCBjMWY5Zjk5ZGUwOTFjZWNiMmUx
ZGI1NWMzOGZhMzYwMzExZWUzN2Y0Li42OWNkODg4NjU3ODU0Y2Q1NDQ1Zjg2M2UyMmQ1NWZmYjlj
NDBlZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVn
ZXhfdGFibGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90
YWJsZXMKQEAgLTk1LDExICs5NSwxMSBAQCBmb3IgbmFtZSwgY2xhc3NlcyBpbiB0eXBlcy5pdGVt
cygpOgogICAgIGZ1bmN0aW9uICs9ICgie1xuIikKICAgICBpZiBlbWl0VGFibGVzIGFuZCBjbGFz
c2VzWyJVc2VUYWJsZSJdOgogICAgICAgICBpZiAiSW52ZXJzZSIgaW4gY2xhc3NlczoKLSAgICAg
ICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52
ZXJzZSJdKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xh
c3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xh
c3Nlc1siSW52ZXJzZSJdKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmN0aW9uICs9
ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNs
YXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQorICAgICAgICAgICAgZnVuY3Rpb24g
Kz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+
KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCiAgICAgZWxzZToKLSAgICAgICAgZnVuY3Rp
b24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFj
dGVyQ2xhc3M+KCk7XG4iKQorICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3Rl
ckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCiAgICAgaGFzQk1QQ2hh
cmFjdGVycyA9IEZhbHNlCiAgICAgaGFzTm9uQk1QQ2hhcmFjdGVycyA9IEZhbHNlCiAgICAgZm9y
IChtaW4sIG1heCkgaW4gcmFuZ2VzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5CmluZGV4
IGY5ZmVmNDY4ZDJiNWRkYTZhYWVlYWIwYjNmYzA1OGNkM2VlY2VhYzEuLjUyNmZiNmU3YWMzYTIy
N2E2ZDQzY2JiZWZkMjcwMmQxYTBjNTRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMu
cHkKQEAgLTUyOSw3ICs1MjksNyBAQCBkZWYgZHVtcE1hdGNoRGF0YShzZWxmLCBmaWxlLCB2YWx1
ZXNQZXJMaW5lLCBkYXRhTGlzdCwgZm9ybWF0dGVyKToKICAgICBkZWYgZHVtcChzZWxmLCBmaWxl
LCBjb21tYUFmdGVyKToKICAgICAgICAgZmlsZS53cml0ZSgic3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxDaGFyYWN0ZXJDbGFzcz4ge30oKVxue3tcbiIuZm9ybWF0KHNlbGYuZ2V0Q3JlYXRlRnVuY05h
bWUoKSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAvLyBOYW1lID0ge30sIG51bWJlciBvZiBj
b2RlUG9pbnRzOiB7fVxuIi5mb3JtYXQoc2VsZi5uYW1lLCBzZWxmLmNvZGVQb2ludENvdW50KSkK
LSAgICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPihcbiIpCisgICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRv
IGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQogICAgICAg
ICBmaWxlLndyaXRlKCIgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcjMyPigiKQog
ICAgICAgICBzZWxmLmR1bXBNYXRjaERhdGEoZmlsZSwgOCwgc2VsZi5tYXRjaGVzLCBsYW1iZGEg
ZmlsZSwgbWF0Y2g6IChmaWxlLndyaXRlKCJ7MDowPSM0eH0iLmZvcm1hdChtYXRjaCkpKSkKICAg
ICAgICAgZmlsZS53cml0ZSgiKSxcbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFy
a3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJu
ZXNzVGVzdC5jcHAKaW5kZXggY2M3MDdkZTNmZjRlYzEzOGNmYTQ2YWI0YzhlMTNhYmI2NTkzY2Jh
MS4uOGM5N2MxYTI0MWI3MjlhZjhmMzFmMzU5YzdmNTE3N2E2MzQwOWRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9X
VEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcApAQCAtNjEsOCArNjEsOCBAQCBzdHJ1
Y3QgQmVuY2htYXJrIHsKICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAg
ICB7CiAgICAgICAgIExvY2tUeXBlIGxvY2s7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNp
Z25lZFtdPiBjb3VudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkW10+KG51bVRocmVhZHMp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazx1bnNpZ25lZFtdPihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsKICAgICAKICAgICAgICAgdm9s
YXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0cnVlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xv
Y2tTcGVlZFRlc3QuY3BwCmluZGV4IGYxNTY1MGQ0YzljOGZhNjc3MGY4OTEyZjA5ZGZlMzkyOTEz
MDdjMzQuLmJlN2FiYTM5MGViNTNlMzU4MWUzNmY0YThiOTUwMGQwZTI5OWY5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgc3RydWN0
IEJlbmNobWFyayB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiAgICAgc3RhdGlj
IHZvaWQgcnVuKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+IGxvY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxXaXRo
UGFkZGluZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdp
dGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0
cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4obnVt
VGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJs
ZT5bXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGlu
Zzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3Vw
KTsKIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Nv
bmN1cnJlbnRWZWN0b3IuaAppbmRleCAwYjU0MWI4YzczZDBmNTk4NjUxYmY5NWU3NjkzYjgwN2M5
OTlmNzhhLi44ODRlZDczMjMzNzYxYTI5ZmI0OTZmMGFkMDk4OTY3NTQ1ZTcwMzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93
dGYvQ29uY3VycmVudFZlY3Rvci5oCkBAIC0yNTQsNyArMjU0LDcgQEAgY2xhc3MgQ29uY3VycmVu
dFZlY3RvciBmaW5hbCB7CiAgICAgdm9pZCBhbGxvY2F0ZVNlZ21lbnQoKQogICAgIHsKICAgICAg
ICAgbV9zZWdtZW50cy5ncm93KG1fbnVtU2VnbWVudHMgKyAxKTsKLSAgICAgICAgbV9zZWdtZW50
c1ttX251bVNlZ21lbnRzKytdID0gc3RkOjptYWtlX3VuaXF1ZTxTZWdtZW50PigpOworICAgICAg
ICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBtYWtlVW5pcXVlPFNlZ21lbnQ+KCk7CiAg
ICAgfQogCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5jcHAKaW5kZXggODNjMjA3NTFmODVmNGU0ZDIwMTU2MTQ0MWNhODMxNDFj
YjVjMzdmZi4uYzYzYzA1NWEwYTAzNDFkZjZhNWFmMjcwYTRhY2NiOGQ1N2Q3ODQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKQEAgLTczLDcgKzczLDcgQEAg
dm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgpCiAKICAgICB3aGlsZSAo
IW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29sID0gKG1fdXNlQXV0b2Ry
YWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVzZSkgPyBzdGQ6Om1ha2Vf
dW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJh
aW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNlKSA/IG1ha2VVbmlxdWU8
QXV0b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKIAogICAgICAgICAgICAgbV90YXNrUXVldWUu
d2FpdEZvck1lc3NhZ2UoKS5wZXJmb3JtVGFzaygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgK
aW5kZXggZWZlZmIzYTMxMzNlODNmNjQzMzZmZDJlYzJkYTUyYTU0ODMyZTYyMS4uOTViNjc1OTcy
ZDMxMGUzZGRiZDQxM2Q0YThmOGQxMjg4ZjIwZmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMzAx
LDkgKzMwMSwxMSBAQCB1c2luZyBXVEY6OmZhc3RBbGlnbmVkRnJlZTsKICNkZWZpbmUgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQgXAogcHVibGljOiBcCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJpdmF0ZTog
XAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNy
bwogCiAjZGVmaW5lIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRCBcCiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURURfSU1QTCBcCit0eXBlZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFz
czsgXAogdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNN
YWNybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKaW5kZXggM2UyNTNjZjJhYzIxOWNjODU1
ODRkNDJjNDUxZWZjN2NhNzliNjRlYS4uNzA3NGMwM2FiYWY4ZmNmMzk3N2YyYjExYWI5YzNkNmUz
ODE2MTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGaWxlUHJpbnRTdHJlYW0+IEZpbGVQcmludFN0cmVhbTo6b3Blbihj
b25zdCBjaGFyKiBmaWxlbmFtZSwgY29uCiAgICAgaWYgKCFmaWxlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVQcmludFN0cmVhbT4o
ZmlsZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKIH0K
IAogdm9pZCBGaWxlUHJpbnRTdHJlYW06OnZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9s
aXN0IGFyZ0xpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oIGIvU291
cmNlL1dURi93dGYvRnVuY3Rpb24uaAppbmRleCAwNWUzNjk3ODI1YmMzZDM0OWY0OGQ2OGMzMmE2
ODYyMjU1ZmI1ODNlLi4wYjc5NTg2NzQ4MGZkMDMyMjQxMjQ1NGU3ZDBhZjgzMzhkNmUzYTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0Z1bmN0aW9uLmgKQEAgLTY3LDExICs2NywxMSBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4p
PiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8IShzdGQ6OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUg
JiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxl
VHlwZT46OnR5cGU+Ojp2YWx1ZSkgJiYgc3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxl
VHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxh
YmxlKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV0YWls
OjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxs
YWJsZSkpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtlVW5pcXVlPERldGFp
bDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoY2Fs
bGFibGUpKSkgeyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNz
ID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46
OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxG
dW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKEZ1bmN0aW9u
VHlwZSBmKQotICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV0
YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShm
KSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpD
YWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSkpIHsg
fQogCiAgICAgT3V0IG9wZXJhdG9yKCkoSW4uLi4gaW4pIGNvbnN0CiAgICAgewpAQCAtODQsMTQg
Kzg0LDE0IEBAIGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IShzdGQ6
OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxlVHlwZT46OnR5cGU+Ojp2YWx1ZSkgJiYg
c3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgog
ICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCiAgICAgewot
ICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxs
YWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkp
OworICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJs
ZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpOwog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rpb25UeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRl
cjxGdW5jdGlvblR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBG
dW5jdGlvbiYgb3BlcmF0b3I9KEZ1bmN0aW9uVHlwZSBmKQogICAgIHsKLSAgICAgICAgbV9jYWxs
YWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1
bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOworICAgICAgICBtX2NhbGxhYmxl
V3JhcHBlciA9IG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBl
LCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93
dGYvSGFzaFRhYmxlLmgKaW5kZXggM2IxZTk1MzAzZGU1NDA1MTQzZmI1NjNjY2I4MDQ3ZTVhY2Vh
ZDBiMy4uYTRkMDc3Zjg0ZjAyYTFmYTFjMWJlMDM0YTg2ZWIzNTBkNmQ3ZjQ5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRh
YmxlLmgKQEAgLTU4OCwxMCArNTg4LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAsIG1f
ZGVsZXRlZENvdW50KDApCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICAs
IG1faXRlcmF0b3JzKDApCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+
KCkpCisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICNpZiBE
VU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUKLSAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFr
ZV91bmlxdWU8U3RhdHM+KCkpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigp
KQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTEzMzQsMTAgKzEzMzQsMTAgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVf
SVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMobnVsbHB0cikKLSAgICAgICAgLCBtX211
dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlx
dWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQot
ICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKm90aGVyLm1fc3RhdHMp
KQorICAgICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxTdGF0cz4oKm90aGVyLm1fc3RhdHMpKQog
I2VuZGlmCiAgICAgewogICAgICAgICB1bnNpZ25lZCBvdGhlcktleUNvdW50ID0gb3RoZXIuc2l6
ZSgpOwpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgaW5saW5lIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6SGFzaFRhYmxlKEhhc2hUYWJsZSYmIG90aGVyKQogI2lmIENIRUNLX0hBU0hUQUJM
RV9JVEVSQVRPUlMKICAgICAgICAgOiBtX2l0ZXJhdG9ycyhudWxscHRyKQotICAgICAgICAsIG1f
bXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVu
aXF1ZTxMb2NrPigpKQogI2VuZGlmCiAgICAgewogICAgICAgICBvdGhlci5pbnZhbGlkYXRlSXRl
cmF0b3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCA5
ZTg3MjBmNmQ5YTc5ODBiOTVlNWIxM2M1ZTY1NWMzODk0OTMwNGI1Li41Mzc5YzBhNGQ1YzhjNmYz
NjdkOTE2OTZlMGQ2YTE4YzVkOWZlYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcihib29sIHVzZSkKICAgICB9CiAKICAg
ICBpZiAodXNlKSB7Ci0gICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwor
ICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1l
bW9yeVByZXNzdXJlSGFuZGxlcj4+KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZpcmVkKTsKICAgICAgICAgbV9tZWFzdXJlbWVu
dFRpbWVyLT5zdGFydFJlcGVhdGluZygzMF9zKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9tZWFz
dXJlbWVudFRpbWVyID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggYWY2NWUwOGNh
ODgwMjQwZWE5ZjE5YzNjMWZjMWZkYzU3YWI0ZDRhYi4uZGVmODM0MGUzYzhhY2M4NTg2ZGE0ZjAw
YmI4ZTlkYzU2ZTAxM2VmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFz
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTU2NSw2ICs1NjUsMjQg
QEAgY29uc3RleHByIHNpemVfdCBjbHoodWludDMyX3QgdmFsdWUsIFplcm9TdGF0dXMgbWlnaHRC
ZVplcm8gPSBaZXJvU3RhdHVzOjpNYXlCZVoKIAogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lO
TElORSBkZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVlKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVuYW1lIFQ6Ol9fZmFzdEFsbG9jYXRlZENsYXNz
LCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJn
cz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwogI2RlZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJh
bWV0ZXI+KHZhbHVlKQogCiB1c2luZyBXVEY6OktCOwpAQCAtNTg1LDMgKzYwMyw1IEBAIHVzaW5n
IFdURjo6bWVyZ2VEZWR1cGxpY2F0ZWRTb3J0ZWQ7CiB1c2luZyBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Y7CiB1c2luZyBXVEY6OnNhZmVDYXN0OwogdXNpbmcgV1RGOjp0cnlCaW5hcnlTZWFyY2g7
Cit1c2luZyBXVEY6Om1ha2VVbmlxdWU7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAppbmRleCAyNmJiYzhmZDY3YTQ5MzQ2MzIy
MWQ2MTk2MThlYjdjNjQ2ODY0MDMwLi5jYTMzZjg2N2QzOGI1NzU5MjAxNDFkNTIzYzMwN2FhZTdj
ODIwYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBTdHJl
YW1CdWZmZXIgewogICAgICAgICBtX3NpemUgKz0gc2l6ZTsKICAgICAgICAgd2hpbGUgKHNpemUp
IHsKICAgICAgICAgICAgIGlmICghbV9idWZmZXIuc2l6ZSgpIHx8IG1fYnVmZmVyLmxhc3QoKS0+
c2l6ZSgpID09IEJsb2NrU2l6ZSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxCbG9jaz4oKSk7CisgICAgICAgICAgICAgICAgbV9idWZmZXIuYXBwZW5k
KG1ha2VVbmlxdWU8QmxvY2s+KCkpOwogICAgICAgICAgICAgc2l6ZV90IGFwcGVuZFNpemUgPSBz
dGQ6Om1pbihCbG9ja1NpemUgLSBtX2J1ZmZlci5sYXN0KCktPnNpemUoKSwgc2l6ZSk7CiAgICAg
ICAgICAgICBtX2J1ZmZlci5sYXN0KCktPmFwcGVuZChkYXRhLCBhcHBlbmRTaXplKTsKICAgICAg
ICAgICAgIGRhdGEgKz0gYXBwZW5kU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Vu
aXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggNzNlOWRmZWMwNmZk
Nzg3ZjNiMDZiM2RjOWRhNjVhNTUwNGQxYzAyOS4uNjU5MTI1MWI4NjI3ZGYzNmNmMmViOWY3NDc5
M2VmNDg5Y2ExZTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysr
IGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTMzLDExICszMywxOCBAQCBuYW1lc3Bh
Y2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFVuaXF1ZVJlZjsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVm
KEFyZ3MmJi4uLiBhcmdzKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1h
bGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQogewogICAgIHJldHVybiBVbmlxdWVSZWY8VD4oKm5l
dyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4u
IGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6X19m
YXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFVuaXF1ZVJlZiB7CiBwdWJsaWM6CkBA
IC02Myw3ICs3MCw3IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFQ+
IG1vdmVUb1VuaXF1ZVB0cigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWYpOyB9CiAKIHByaXZhdGU6
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxV
PiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3Mu
Li4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxs
b2NDaGVjayhBcmdzJiYuLi4pOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBjbGFzcyBV
bmlxdWVSZWY7CiAKICAgICBVbmlxdWVSZWYoVCYgb3RoZXIpCkBAIC03OSwzICs4Niw0IEBAIGNs
YXNzIFVuaXF1ZVJlZiB7CiAKIHVzaW5nIFdURjo6VW5pcXVlUmVmOwogdXNpbmcgV1RGOjptYWtl
VW5pcXVlUmVmOwordXNpbmcgV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVj
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIvU291
cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXggNWU1YmE4YWJlYmRiZDQ5YmJi
ODM3ZGQ0YzRmZDY5YmQ2ZmZjMzYxZi4uZmIyMTFkMGEyOTYxZGZjMTZhYTZlMjFhMjFhOTc0ZGZm
MTUyNjk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTE0Nyw3ICsxNDcs
NyBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQo
KSwgIltXZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hBZnRlciIpOwogICAgIGdfc291cmNlX3NldF9y
ZWFkeV90aW1lKHNvdXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIGR1cmF0aW9u
Lm1pY3Jvc2Vjb25kc0FzPGdpbnQ2ND4oKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0
Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BhdGNoQWZ0ZXJD
b250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNo
QWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4o
V1RGTW92ZShmdW5jdGlvbikpOwogICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhzb3VyY2UuZ2V0
KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChzdGF0aWNfY2FzdDxEaXNwYXRj
aEFmdGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7CiAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBkY2JhMDYwODJjNWY2NmUzMTlhMTVl
ZTU5N2ZjNjQ5NzY2YjA1ZTZjLi41YmY0ZTZkMDFkZTg0M2VkMjg3ODgzZWEzYTAzZTg0OTQ5M2Jl
Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBj
bGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbCB7CiB9Owog
CiBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpCi0gICAgOiBtX2ltcGwoc3Rk
OjptYWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3LmlzTnVsbCgpID8gV1RG
OjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKKyAgICA6
IG1faW1wbChtYWtlVW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkg
PyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
PihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFu
aWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKaW5k
ZXggZmRiOGNlMjkyZDczOGRhNDIwMzhhYTk2NWFmM2FjYTE3OGE4MGNlYi4uOGRjNzZmYTJlNTll
YTY3ZTAyMTczOGMzMTFhMzU3N2Y0ZDM2ZTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNh
dGlvbk1hbmlmZXN0UGFyc2VyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlJbnZhbGlkVVJMKGNvbnN0IFN0cmlu
ZyYgcHJvcAogdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZlbG9wZXJXYXJu
aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9jb25zb2xlQ29udGV4dCkK
LSAgICAgICAgbV9jb25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVy
LCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2csIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtl
U3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5z
dHJpbmcoKSwgIjogIl9zLCBtZXNzYWdlKSkpOworICAgICAgICBtX2NvbnNvbGVDb250ZXh0LT5h
ZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KEpT
Qzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFuaWZl
c3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7CiB9CiAK
IFVSTCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZVN0YXJ0VVJMKGNvbnN0IEpTT046
Ok9iamVjdCYgbWFuaWZlc3QsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCA5YmZhNWY5
NDk5NGIwNTQ1MDZiODI2YTMxNGI4MjU4MjdlYTQxYWRiLi43ZTRmNzk0NzFlMmM1OWZlNzFjMTQ4
MTMyZjRiNTUxZDhmZmM3OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVh
Y29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgTmF2aWdhdG9yQmVhY29u
KiBOYXZpZ2F0b3JCZWFjb246OmZyb20oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CiAgICAgYXV0
byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckJlYWNvbio+KFN1cHBsZW1lbnQ8
TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYg
KCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2
aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAK
aW5kZXggNWVkMWY1Y2NhNjQxZWIwNGVjMGUwYTBjZTA2YzgzNzI0NTY4YTJmZi4uNjE1Mzk0MzBk
ZmI5NjE2ZmQyODhmZWQ5MmNiOTQ0ZmY0NDZiMDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcApAQCAtNDksNyArNDksNyBAQCBET01X
aW5kb3dDYWNoZXMqIERPTVdpbmRvd0NhY2hlczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsK
ICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93Q2FjaGVzKj4oU3Vw
cGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2Fj
aGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVD
YWNoZXMuY3BwCmluZGV4IDA2NTZiZWYwYjE3MThlMzNkYmM3ZmEwZWU2MGM1N2Q0OGUzOGQ0ZTgu
LjUxMThhNDg4NTBmMjQyZDA0NGQzYjQwZmYwZTNiMjNiYjk2ZTI4ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKiBXb3JrZXJHbG9i
YWxTY29wZUNhY2hlczo6ZnJvbShXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCiB7CiAgICAgYXV0
byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKj4oU3Vw
cGxlbWVudDxXb3JrZXJHbG9iYWxTY29wZT46OmZyb20oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM+KHNjb3BlKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUNhY2hl
cz4oc2NvcGUpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAg
ICAgICAgcHJvdmlkZVRvKCZzY29wZSwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVk
ZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcApp
bmRleCA3MWY0MzhjZjc4NmM3NmQ3YjU4NzIxNTU5NzY2OGI2MjM2MWI1OTkzLi4xMTgxYmQ5ODVh
MjJiYTQ5M2Y4MzYzMWQ3ZTQxZmVlODc5YjU2YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRv
ckNyZWRlbnRpYWxzLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOYXZpZ2F0b3JDcmVkZW50aWFscyog
TmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAg
TmF2aWdhdG9yQ3JlZGVudGlhbHMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JD
cmVkZW50aWFscyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50aWFscz4oKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50aWFs
cz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IGI2ZmQ2OGQ2NzJlZGUzODc3
OGMxNWM2ZmVhYWY0NmI0NTVlNWExY2QuLjc1ZWRiNmE5MzYzODgwZTU4N2MzNTc1NmIxNGRlYzlm
OWI0NWU2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIE9wdGlv
bmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94Pj4+IEluaXREYXRhCiAgICAgICAgIGF1dG8gc3lzdGVtSUQgPSBJU09Qcm90ZWN0aW9u
U3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRCh2aWV3LCBvZmZzZXQpOwogI2lm
IEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICAgICAgaWYgKHN5c3Rl
bUlEID09IElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveDo6ZmFpclBsYXlTeXN0ZW1JRCgpKSB7
Ci0gICAgICAgICAgICBhdXRvIGZwc1Bzc2ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT0ZhaXJQbGF5
U3RyZWFtaW5nUHNzaEJveD4oKTsKKyAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IG1ha2VVbmlx
dWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOwogICAgICAgICAgICAgaWYgKCFmcHNQ
c3NoLT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgICAgIHBzc2hCb3hlcy5hcHBlbmQoV1RGTW92ZShmcHNQc3NoKSk7CkBA
IC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICNlbHNlCiAgICAgICAg
IFVOVVNFRF9QQVJBTShzeXN0ZW1JRCk7CiAjZW5kaWYKLSAgICAgICAgYXV0byBwc3NoQm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7
CisgICAgICAgIGF1dG8gcHNzaEJveCA9IG1ha2VVbmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNw
ZWNpZmljSGVhZGVyQm94PigpOwogICAgICAgICBpZiAoIXBzc2hCb3gtPnJlYWQodmlldywgb2Zm
c2V0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0u
Y3BwCmluZGV4IDgyNjI4OTNmZTBhZjk5OTE0ZWQzOWU5NjBjZjEwYTc1MzQwNzA1YjYuLjgzN2Rm
MTIzYWU1OTZmMzUzN2M5MTUyNzAzZTNkMjcxYjM0NmViNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNw
cApAQCAtNjEsMTUgKzYxLDE1IEBAIHN0cnVjdCBDRE1GYWN0b3J5IHsKIHN0YXRpYyBWZWN0b3I8
Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQogewogICAgIHN0YXRpYyBhdXRv
IGNkbXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPENETUZhY3RvcnkqPiB7Ci0gICAgICAg
IG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZh
Y3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5PihjZG0pOyB9LAogICAgICAgICAgICAgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogICAgICAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBz
cGVjaWZpYyBVQSBDRE1zLiBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMxOCwgaHR0cDovL3dlYmtp
dC5vcmcvYi8xMDkzMjAKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9
LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCiAgICAgICAgICAgICBDRE1Q
cml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQbGF5
ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAjaWYgKEhBVkUoQVZDT05URU5U
S0VZU0VTU0lPTikgfHwgSEFWRShBVlNUUkVBTVNFU1NJT04pKSAmJiBFTkFCTEUoTUVESUFfU09V
UkNFKQotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAor
ICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVu
aXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAogICAgICAgICAgICAg
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogI2Vu
ZGlmCiAgICAgfSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNE
TT4gTGVnYWN5Q0RNOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgaWYgKCFz
dXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUNETT4oa2V5U3lzdGVtKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3RlbSk7CiB9CiAKIExlZ2FjeUNETTo6
TGVnYWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAppbmRleCA0
NThlYzUzYjQzMzdiMTcxMDU1NmY4YTE3YjRlZjAxZWZjZTE1NjRlLi5mYjVkYTFmMTZkYTAyZWM4
NGMzNDc3ZDM1NWZlMGE1ZTg5NjQwNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaApAQCAtNTAsNyArNTAs
OCBAQCBjbGFzcyBMZWdhY3lDRE1DbGllbnQgewogICAgIHZpcnR1YWwgUmVmUHRyPE1lZGlhUGxh
eWVyPiBjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25zdCA9IDA7CiB9OwogCi1j
bGFzcyBMZWdhY3lDRE0geworY2xhc3MgTGVnYWN5Q0RNIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDRE0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKaW5kZXggMGE4
ZDU0ZTVjNTY1ZjM0NTA4NTYyYzVhOGMxZTAwMzVhZjE0YTc0Zi4uZjI0OTcwNzJlNzg1NzYwYzU5
ZTIzMDM5MzRmYjdmOWNjNDc3MmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaApA
QCAtMzUsNiArMzUsNyBAQCBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwogY2xhc3MgTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudDsKIAogY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUludGVyZmFjZSgpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgPSBkZWZhdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggYzkz
MTZkZmQ4YWJiNDA1NDkyZjU1NWViM2QxYjNkMDkxN2NlZmY1MC4uM2E4YzAwZjUyMzFmNTJhNmU4
OWQxODNkMTUxMWMzYWM4NzczYTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlQ2xlYXJLZXkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6
OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETVNlc3Npb25DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKaW5kZXggMmY3YjAzNTM5
ZWY4ZWE0NzRlMjM2ZDA1ZDllMTdmZWM0ODRlNjI3ZS4uYmM3NzdmMGNiYzhjZTdiODllOTQzYjhh
NjNlNGU2ZTgyODliMzhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNs
ZWFyS2V5LmgKQEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDRE1TZXNzaW9uQ2xlYXJLZXkgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CitjbGFzcyBD
RE1TZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkNsZWFyS2V5
KExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uQ2xlYXJL
ZXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5j
cHAKaW5kZXggYWRkYzU0ODk2YjhhNDQzOGNmYmZkMDY1ODBhZGJjODYwYTgxZjg2NC4uZGI2Mzkw
ZTdmOTkyNTk3N2I4N2NhMDA5ZWRhYmQ1MWNkYjY2NzMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihjb25zdCBCbG9iJiBibG9iLCBGZXRjaEJvZHlD
b25zdW1lciogY29uc3VtZXIpCiAgICAgfQogCiAgICAgbV9ibG9iTG9hZGVyLmVtcGxhY2UoKnRo
aXMpOwotICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExv
YWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOworICAgIG1fYmxvYkxvYWRlci0+bG9hZGVy
ID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3VtZXIpOwogCiAg
ICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGJsb2IpOwogICAgIGlmICghbV9ibG9iTG9hZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCBj
ZDM0NWViOWVjMzQwYzM2ZTBmMGE2ZWVkODJkZDk4OGI0Zjk3ZDM5Li45NDAxM2NmNGVhNjUyMzhk
ODNiOWI0YzgxZGI3ZDE4MTY1MzI0NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVz
dCYgcmVxdWVzdAogCiAgICAgcmVzcG9uc2UtPmFkZEFib3J0U3RlcHMocmVxdWVzdC5zaWduYWwo
KSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxCb2R5
TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNwb25zZUNhbGxiYWNrKSk7CisgICAg
cmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG1ha2VVbmlxdWU8Qm9keUxvYWRlcj4ocmVzcG9uc2Uu
Z2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOwogICAgIGlmICghcmVzcG9uc2UtPm1f
Ym9keUxvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCkpCiAgICAgICAgIHJlc3BvbnNlLT5t
X2JvZHlMb2FkZXIgPSBudWxscHRyOwogfQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCiAKIGJvb2wgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZt
X3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVl
PEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5jb25zdW1lcigpKTsKICAg
ICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIG1fbG9hZGVy
LT5pc1N0YXJ0ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Ft
ZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAppbmRleCA2MTAyMDg5OWNiYzRhN2U0MzNiMTUxZGNjYWVi
ZmU5MDc2NGQzZTJkLi44NTBkMjJkZTI4NWJiMzM1ZDIyZThjMmUyNTNiN2FiNmUwYzYwMzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVw
YWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvckdhbWVwYWQqIE5hdmlnYXRvckdhbWVw
YWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2FtZXBhZCog
c3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdhbWVwYWQqPihTdXBwbGVtZW50PE5h
dmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwCmluZGV4IGIwOWZjMzQzM2JiZmJiNzI4ZjMxNWMxNTMzYTZmMmM5ZTRmYzAwNzEuLmNkODA3
MGIyMDdkYjhhMzQ0MDI2Y2ZmNjEwNWI4NWVlMTliYzUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBjb25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCkKIHZvaWQgcHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFnZSogcGFn
ZSwgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQocGFnZSk7Ci0gICAg
U3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6
c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+
KCpwYWdlLCBjbGllbnQpKTsKKyAgICBTdXBwbGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwg
R2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEdlb2xv
Y2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwogfQogICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCBiMzRmNDlhNjcxZDg1ZjUxNDJi
OGJhZjBmNTJiYTk5MWFjNDM1OWRjLi4zNWRmYmY4ZjNmMjU2OWMwMTM1MzU2NjMwMGY1Yjc4Mzdk
ZTI4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05h
dmlnYXRvckdlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBAQCBOYXZpZ2F0
b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20oTmF2aWdhdG9yJiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxOYXZpZ2F0b3JHZW9sb2NhdGlvbio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgm
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR2Vv
bG9jYXRpb24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYzcyMDNhOWE4NjQwOTcwNTBkM2RjMDA3OTJmN2E2YjU4
MWZhYTI1ZS4uNWU5ZDk3OTY2YmZkZTU4ZTY2MDk5YTUwOWU2MThiODRjMThkMDVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5k
b3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01Miw3ICs1Miw3IEBAIERPTVdpbmRvd0luZGV4ZWRE
YXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjpmcm9tKERPTVdpbmRvdyogd2luZG93
KQogewogICAgIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJv
bSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2U+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVt
ZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3Vw
cGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4
IGY0MzA5MGM0ZGNjM2VkZTVlMjdkMWFhNDQzODQ0NDdkODQ5YzY0MGIuLjlhNzgxMjc4NDYzZWQw
YTRhMGFkZGQzZjdkYjBjNTY1Njk2MmI5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCBF
eGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdpbmRleCcgb24gJ0lEQk9iamVj
dFN0b3JlJzogVGhlIHNwZWNpZmllZCBpbmRleCB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAg
YXV0byBpbmRleCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBpbmRleCA9IG1ha2VVbmlxdWU8SURC
SW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CiAKICAgICBS
ZWY8SURCSW5kZXg+IHJlZmVyZW5jZWRJbmRleCB7ICppbmRleCB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZmEy
Y2Q3ZWFkMDliNjA1NTI1YjhjYjQ0MWVmNzAwMWQ4MzM1MDEwMC4uNDIyNDNmYmE1NzMxMjk1NDE4
ODk0YTMyMDQzZTg5ZTBiMmMxYTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYgKCFpbmZvIHx8ICghZm91bmQgJiYgIWlzVmVyc2lv
bkNoYW5nZSgpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJG
YWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3RvcmUnIG9uICdJREJUcmFuc2FjdGlvbic6IFRoZSBz
cGVjaWZpZWQgb2JqZWN0IHN0b3JlIHdhcyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBhdXRvIG9i
amVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gbWFr
ZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8s
ICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwog
ICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmVOYW1lLCBXVEZNb3Zl
KG9iamVjdFN0b3JlKSk7CiAKQEAgLTY2Nyw3ICs2NjcsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+
IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mCiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9j
ayk7CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RT
dG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOworICAgIGF1dG8g
b2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmpl
Y3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KGluZm8ubmFt
ZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RT
dG9yZSYgb2JqZWN0U3RvcgogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5jcmVhdGVJbmRleE9uU2Vy
dmVyKG9wZXJhdGlvbiwgaW5mbyk7CiAgICAgfSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0
b3JlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpj
cmVhdGVJbmRleE9uU2VydmVyKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRl
eGVkRGF0YWJhc2UuY3BwCmluZGV4IGE0ODUwM2I0ZDJkODA0Mjk0Njg0YTY1YTY1ZWJkNjRmMjMz
Y2Q3YjkuLjliNzU3NzQ5MjFiNDY1MDZmNTgzZGU3ZmVjNDI1MGU4NTRhY2U1MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9X
b3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV29y
a2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERh
dGFiYXNlOjpmcm9tKFdvcmtlckcKICAgICAgICAgaWYgKCFjb25uZWN0aW9uUHJveHkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwg
KmNvbm5lY3Rpb25Qcm94eSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlx
dWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblBy
b3h5KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVu
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggOTQ4Y2Y3
NDY2M2FlNjljODJkYTQ0NGUwOTM0NzNkZDg1NmQ0ZGU5My4uMzc3MTFkYzEwM2RiNmM5YTliODEz
ZGJjOWRmNzk5YjdlMjZhNmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gSURCQ29ubmVjdGlv
blRvU2VydmVyOjpjcmVhdGUoSURCQ29ubmVjdGlvblRvU2VydmVyRGUKIAogSURCQ29ubmVjdGlv
blRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9TZXJ2ZXIoSURCQ29ubmVjdGlvblRvU2VydmVyRGVs
ZWdhdGUmIGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShtYWtlV2Vha1B0cihkZWxlZ2F0ZSkp
Ci0gICAgLCBtX3Byb3h5KHN0ZDo6bWFrZV91bmlxdWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhp
cykpCisgICAgLCBtX3Byb3h5KG1ha2VVbmlxdWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhpcykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCmluZGV4IDI3NTNmZDBjMjQ1
N2I5YzA5ZDlkODllNGY3NjJiNDc5ZjhiNDQwYjEuLjhlMWRlMDZkNzFlOGYwYjIyM2Q2ODZlNWUx
YThhMjIwOWI3NDM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcApAQCAtNDIs
NyArNDIsNyBAQCBUcmFuc2FjdGlvbk9wZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURC
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJREJSZXF1ZQogICAgIGlmIChtX2luZGV4SWRlbnRp
ZmllcikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSByZXF1ZXN0LnJlcXVlc3RlZEluZGV4
UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRvKiBjdXJzb3IgPSByZXF1ZXN0LnBlbmRpbmdDdXJz
b3IoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50aWZpZXIoKSk7CisgICAgICAg
IG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihj
dXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwogCiAgICAgbV9pZGJSZXF1ZXN0ID0gJnJlcXVl
c3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuY3BwCmluZGV4IDg5YmZlNzkzZDdkYmI1Y2U3MzExNDc5ZWY2OTUwYjljZmQx
N2NlMDguLjNiYjZkYWNhNjhkN2MwZjUzYWQ4N2U5ZDFkZjE4YTNmZmU0YTkxYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVW5pcXVlSURCRGF0YWJhc2UmIElEQlNlcnZlcjo6Z2V0
T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW4KIAogICAgIGF1
dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLmFkZChpZGVudGlm
aWVyLCBudWxscHRyKTsKICAgICBpZiAodW5pcXVlSURCRGF0YWJhc2UuaXNOZXdFbnRyeSkKLSAg
ICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOworICAgICAgICB1bmlxdWVJ
REJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFVuaXF1ZUlEQkRhdGFiYXNl
PigqdGhpcywgaWRlbnRpZmllcik7CiAKICAgICByZXR1cm4gKnVuaXF1ZUlEQkRhdGFiYXNlLml0
ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURC
QmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRh
YmFzZQogICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9u
SUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdTdG9yZVRl
bXBvcmFyeUZpbGVIYW5kbGVyLCBtX3Blck9yaWdpblF1b3RhKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2Rh
dGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciwg
bV9wZXJPcmlnaW5RdW90YSk7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQpAQCAtNzYxLDcgKzc2MSw3IEBAIHZvaWQg
SURCU2VydmVyOjpRdW90YVVzZXI6OmluaXRpYWxpemVTcGFjZVVzZWQodWludDY0X3Qgc3BhY2VV
c2VkKQogSURCU2VydmVyOjpRdW90YVVzZXImIElEQlNlcnZlcjo6ZW5zdXJlUXVvdGFVc2VyKGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVybiAqbV9xdW90YVVzZXJzLmVu
c3VyZShvcmlnaW4sIFt0aGlzLCAmb3JpZ2luXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVvdGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklE
LCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmlnaW4gfSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFF1b3RhVXNlcj4oKnRoaXMsIG1fcXVvdGFNYW5hZ2VyR2V0dGVyKG1fc2Vzc2lvbklE
LCBvcmlnaW4pLCBDbGllbnRPcmlnaW4geyBvcmlnaW4gfSk7CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCmluZGV4IDY5ODNjOWQ3ZWFmZjU2MTY3MjA0
ZDk1MmYxZjIyNjdiYjQwY2E0YmEuLjhkOTIxZDhlZmU2YmE4NDBhMzBkNjFkZmRjNmE3MjFlODI4
YTQzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JbmRleFZhbHVlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIElEQkVycm9y
IEluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQktleURhdGEmIGluZGV4S2V5LCBj
b25zdCBJREJLZXlEYXRhCiAgICAgICAgIHJldHVybiBJREJFcnJvcihDb25zdHJhaW50RXJyb3Ip
OwogCiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZUVudHJ5
PihtX3VuaXF1ZSk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGRLZXkodmFsdWVL
ZXkpOwogICAgIG1fb3JkZXJlZEtleXMuaW5zZXJ0KGluZGV4S2V5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDQ3Y2M0MmZkMjZkNjQ3M2M2
NDE5MjdlOTkyZDRlYzZlOGQ3YmY4ZWUuLjVlNzE0NDk3ODRhMGRhMDc2Nzc4OWE4ZGVkYzUyMjY4
OWY0ZDhkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogc3RkOjp1bmlx
dWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPiBNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbjo6Y3JlYXRlKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBj
b25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJhY2tpbmdTdG9yZSwgaW5mbyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+KGJh
Y2tpbmdTdG9yZSwgaW5mbyk7CiB9CiAKIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihNZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tp
bmdTdG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQpAQCAtNTIsNyArNTIsNyBA
QCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oTWVtb3J5SURCQmFja2luZ1N0bwogICAgICAgICBJREJEYXRhYmFzZUluZm8gaW5mbzsK
ICAgICAgICAgYXV0byBlcnJvciA9IG1fYmFja2luZ1N0b3JlLmdldE9yRXN0YWJsaXNoRGF0YWJh
c2VJbmZvKGluZm8pOwogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGluZm8pOworICAgICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8
SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICB9CiB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2
b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpyZWNvcmRWYWx1ZUNoYW5nZWQoTWVt
b3J5T2JqZWN0U3RvcmUmIG9iamVjdAogCiAgICAgYXV0byBvcmlnaW5hbEFkZFJlc3VsdCA9IG1f
b3JpZ2luYWxWYWx1ZXMuYWRkKCZvYmplY3RTdG9yZSwgbnVsbHB0cik7CiAgICAgaWYgKG9yaWdp
bmFsQWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG9y
aWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+
KCk7CiAKICAgICBhdXRvKiBtYXAgPSBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggN2QxNDJiMDA1
MGFiNjA4ODFlMzg3YmU4YzE5ODk0N2FjNmU4ZGQ4MS4uY2ZmZTMzMzdmNzk0NDhiOGMyMTNkYmJl
NWZhMzViNGQzYTcwZjJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTQ4LDcgKzQ4LDcgQEAgc3RhdGljIHVpbnQ2NF90IG1heEdlbmVyYXRlZEtleVZhbHVlID0gMHgy
MDAwMDAwMDAwMDAwMDsKIAogc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4g
TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURC
QmFja2luZ1N0b3JlPihpZGVudGlmaWVyKTsKIH0KIAogTWVtb3J5SURCQmFja2luZ1N0b3JlOjpN
ZW1vcnlJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQpAQCAtNjEsNyArNjEsNyBAQCBNZW1vcnlJREJCYWNraW5nU3RvcmU6On5NZW1vcnlJREJC
YWNraW5nU3RvcmUoKSA9IGRlZmF1bHQ7CiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbykKIHsKICAg
ICBpZiAoIW1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDAp
OworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPiht
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOwogCiAgICAgaW5mbyA9ICptX2RhdGFiYXNl
SW5mbzsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJhc2VJbmZvKGNvbnN0IElEQkRhdGFiYXNlSW5m
byYgaW5mbykKICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8gZGlyZWN0bHkgc2V0IGRhdGFiYXNl
IGluZm8gb24gYSBiYWNraW5nIHN0b3JlIHRoYXQgaGFzbid0IGFscmVhZHkgc2V0IGl0cyBvd24g
ZGF0YWJhc2UgaW5mby4KICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwogCi0gICAgbV9kYXRh
YmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAg
bV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiB9CiAK
IElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAppbmRleCA0OWRkY2E2YmQ0MGQy
OWQ0MmUzOGI4NTEzMWM4OWZkZmU3ZDQ3OTJkLi44NTk1ZGJiOGY0YTdlZTNkMTkxZTMxZmI2MTBi
MDQ5NzViODc0NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBJREJFcnJv
ciBNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkoY29uc3QgSURCS2V5RGF0YSYgdmFsdWVLZXksIGNv
bnN0IEluZGV4S2V5JiBpbgogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6cHJvdmlz
aW9uYWxQdXRJbmRleEtleSIpOwogCiAgICAgaWYgKCFtX3JlY29yZHMpIHsKLSAgICAgICAgbV9y
ZWNvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRleFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUo
KSk7CisgICAgICAgIG1fcmVjb3JkcyA9IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2lu
Zm8udW5pcXVlKCkpOwogICAgICAgICBub3RpZnlDdXJzb3JzT2ZBbGxSZWNvcmRzQ2hhbmdlZCgp
OwogICAgIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIE1lbW9yeUluZGV4Q3Vyc29yKiBNZW1vcnlJ
bmRleDo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4o
KnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1l
bW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IGVkNmVi
YTkyN2YxZjRmNmI5YzMwNjhmNmI1ZDg4ZGUyOTk3MjY3ZWIuLjViNDRhNzM4NzhjOWZkZDdhMWUw
NWE5NWI3NjU3ZWJlNjM2MzUxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMjU5
LDggKzI1OSw4IEBAIElEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uCiAKICAgICBpZiAoIW1fa2V5VmFs
dWVTdG9yZSkgewogICAgICAgICBBU1NFUlQoIW1fb3JkZXJlZEtleXMpOwotICAgICAgICBtX2tl
eVZhbHVlU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtleVZhbHVlTWFwPigpOwotICAgICAgICBt
X29yZGVyZWRLZXlzID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhU2V0PigpOworICAgICAg
ICBtX2tleVZhbHVlU3RvcmUgPSBtYWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOworICAgICAgICBt
X29yZGVyZWRLZXlzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SURCS2V5RGF0
YVNldD4oKTsKICAgICB9CiAKICAgICBhdXRvIG1hcFJlc3VsdCA9IG1fa2V5VmFsdWVTdG9yZS0+
c2V0KGtleURhdGEsIHZhbHVlLmRhdGEoKSk7CkBAIC00OTcsNyArNDk3LDcgQEAgTWVtb3J5T2Jq
ZWN0U3RvcmVDdXJzb3IqIE1lbW9yeU9iamVjdFN0b3JlOjptYXliZU9wZW5DdXJzb3IoY29uc3Qg
SURCQ3Vyc29ySW5mbyYKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywgaW5mbyk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0aGlz
LCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBiZmJkMDlkYmI5YTcxZDNjNDFh
OWRmNmE3Nzk0ZWVkZTU4MWFiZDcwLi5kYWE0YTE5YmQ4Mzk2ZjM4MTllNjlkYzk5NTY3NmUzMzll
YWRkMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjI0LDcgKzYy
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsCiAgICAgfQogCiAgICAgLy8gVGhpcyBpbml0
aWFsIGRhdGFiYXNlIGluZm8gbWF0Y2hlcyB0aGUgZGVmYXVsdCB2YWx1ZXMgd2UganVzdCBwdXQg
aW50byB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFt
ZSgpLCAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8oKQpAQCAtNjU5LDcgKzY1
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBh
dXRvIGRhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRh
YmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7CisgICAgYXV0byBkYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOwog
CiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiU0VMRUNU
IGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jLCBtYXhJbmRleElEIEZST00gT2JqZWN0U3RvcmVJ
bmZvOyJfcyk7CkBAIC04MjEsNyArODIxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KIAog
ICAgIFN0cmluZyBkYkZpbGVuYW1lID0gZnVsbERhdGFiYXNlUGF0aCgpOwogCi0gICAgbV9zcWxp
dGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9zcWxpdGVE
QiA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX3NxbGl0ZURCLT5v
cGVuKGRiRmlsZW5hbWUpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FM
aXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAg
ICAgICAgIGNsb3NlU1FMaXRlREIoKTsKQEAgLTkzMSwxMSArOTMxLDExIEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gZXN0YWJsaXNoIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgdGhhdCBhbHJlYWR5IGV4
aXN0cyJfcyB9OwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CisgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rpb24+
KCp0aGlzLCBpbmZvKTsKIAogICAgIGF1dG8gZXJyb3IgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5iZWdpbigqbV9zcWxpdGVEQik7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGluZm8u
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewotICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPigqbV9kYXRhYmFzZUluZm8pOwogCiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1f
c3FsaXRlREIsICJVUERBVEUgSURCRGF0YWJhc2VJbmZvIFNFVCB2YWx1ZSA9ID8gd2hlcmUga2V5
ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKICAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCkBAIC0yNjYyLDcgKzI2NjIsNyBAQCBTUUxpdGVTdGF0ZW1lbnQqIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50KFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Uwog
ICAgIH0KIAogICAgIGlmIChtX3NxbGl0ZURCKSB7Ci0gICAgICAgIG1fY2FjaGVkU3RhdGVtZW50
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0
ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQpOworICAgICAgICBtX2NhY2hlZFN0YXRlbWVu
dHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50
PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKICAgICAgICAgaWYgKG1fY2FjaGVkU3RhdGVtZW50
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldLT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAg
ICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBu
dWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggZjg0MDVhNzk4YTM2ODEw
ZGM1NzZhZjFlNzNiY2FmNTMxMDIzN2JhZi4uYzZiM2ZkOTUzYTBkNTNhYzE1NjhlMjg0OGNiYzc4
YTEyZjE5NTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3Rh
dGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0ID0gODsKIAogc3RkOjp1bmlxdWVfcHRyPFNR
TGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7Ci0gICAg
YXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rp
b24sIGluZm8pOworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+
KHRyYW5zYWN0aW9uLCBpbmZvKTsKIAogICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01OSw3ICs1OSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FM
aXRlSURCVHJhbnNhY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0
ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVDdXJzb3IoU1FMaXRlSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCB1
aW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAgIGF1
dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9u
LCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7CisgICAgYXV0byBjdXJzb3IgPSBtYWtl
VW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQsIGluZGV4
SUQsIHJhbmdlKTsKIAogICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTksNyArMTk5LDcgQEAgYm9vbCBTUUxpdGVJREJD
dXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKICAgICBBU1NF
UlQoIW1fY3VycmVudFVwcGVyS2V5LmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlv
bi0+c3FsaXRlVHJhbnNhY3Rpb24oKSk7CiAKLSAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigp
LT5kYXRhYmFzZSgpLCBzcWwpOworICAgIG1fc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVT
dGF0ZW1lbnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCks
IHNxbCk7CiAKICAgICBpZiAobV9zdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKHBy
ZXBhcmUvaWQpIC0gJyVzJyIsIG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRh
dGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIFNRTGl0ZUlEQkN1
cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29y
ZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09IElu
ZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpCi0gICAgICAgICAgICByZWNvcmQucmVj
b3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwor
ICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+KFRo
cmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBi
bG9iRmlsZVBhdGhzKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQucHJp
bWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXpl
IHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29yIik7
CkBAIC00ODYsNyArNDg2LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxpdGVJ
REJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKIAogICAgICAgICBp
ZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIG9iamVjdFN0b3JlU3RhdGVt
ZW50LmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlEYXRhKTsKLSAgICAgICAgICAgIHJlY29y
ZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0
YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKKyAgICAgICAgICAgIHJlY29yZC5y
ZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0g
U1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJl
Y29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBv
YmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBTa2lwIG92ZXIgaXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBhNmEzYzVmZmYzMzgwYzI1ZWY3MzYxZTY4OGJlZjM2YzA2
MTVmYzgzLi5kMjEyZGUyYjZiODhhZmZlMGEzNWIwZmQwZmQzM2ZjODY3Y2VjYmQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJh
bnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAg
ICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwogCi0gICAgbV9zcWxpdGVUcmFuc2FjdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8u
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOworICAgIG1fc3FsaXRlVHJh
bnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZv
Lm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBtX3NxbGl0ZVRy
YW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJv
Z3Jlc3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDczMDQ5NzQ0MjBmZjQ2ZmRm
MmVhOTY3OWI2ZDViNWI3ZTY5YmZkZWMuLjU3Yjc3YzAxMjU4ZmQ1ZDQ5ZjcwNThmZWJiZDU4NTM3
NDNjMmRiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtNDM0LDcgKzQzNCw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBk
ZWxldGVkVmVyc2lvbikKICAgICAvLyB3ZSB3b24ndCBoYXZlIGEgbV9tb3N0UmVjZW50RGVsZXRl
ZERhdGFiYXNlSW5mby4gSW4gdGhhdCBjYXNlLCB3ZSdsbCBtYW51ZmFjdHVyZSBvbmUgdXNpbmcg
dGhlCiAgICAgLy8gcGFzc2VkIGluIGRlbGV0ZWRWZXJzaW9uIGFyZ3VtZW50LgogICAgIGlmICgh
bV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbykKLSAgICAgICAgbV9tb3N0UmVjZW50RGVs
ZXRlZERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lk
ZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRWZXJzaW9uKTsKKyAgICAgICAgbV9tb3N0
UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPiht
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRWZXJzaW9uKTsKIAogICAgIGlmICht
X2N1cnJlbnRPcGVuREJSZXF1ZXN0KSB7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3Qt
Pm5vdGlmeURpZERlbGV0ZURhdGFiYXNlKCptX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZv
KTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFj
a2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbywgY29uc3QgSQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIpOwogICAgIAotICAgIG1fZGF0YWJhc2VJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIG1fYmFja2lu
Z1N0b3JlT3BlbkVycm9yID0gZXJyb3I7CiAKICAgICBBU1NFUlQobV9pc09wZW5pbmdCYWNraW5n
U3RvcmUpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
UGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAg
ICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwog
ICAgICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbiB8fCAmbV92
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmRhdGFiYXNlQ29ubmVjdGlvbigpID09IG1fdmVyc2lv
bkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CiAgICAgICAgIEFTU0VSVChtX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7Ci0gICAgICAgIG1fZGF0YWJh
c2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CisgICAgICAgIG1fZGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CiAgICAgfQogCiAgICAgSURCRXJyb3Ig
cmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkgPT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2FjdGlvbi0+cmVzdWx0KCkgOiBlcnJvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAppbmRleCBmMTdhNGU1
NTIzZmI1ZjYxYjAyNmEwOTE0N2Y4MTQxZDViNjQxMzlhLi44NTQwY2E3ODZkNTczNThkOTgyYzcz
ZTY0NjBmN2Y4ZjBhODgzNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24uY3BwCkBAIC01MSw3ICs1MSw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uCiAg
ICAgQVNTRVJUKGRhdGFiYXNlKTsKIAogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2RlKCkg
PT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKQotICAgICAgICBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNl
LT5pbmZvKCkpOworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlcnZl
ciA9IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5zZXJ2ZXIoKSkKICAgICAgICAgc2VydmVyLT5yZWdp
c3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCmluZGV4IGIxMGQ4NDA5
OWIyNTI4ZTZmNzNjMjhiMTUwNGE4YTkzMjRkMGIyMWEuLjIxNjQxNmFmYTExY2YyNTVkMzZkZWZi
M2VmZjM2ZWZhZjE5NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoKQogCiBJREJSZXF1ZXN0RGF0YTo6SURC
UmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5lY3Rp
b25Qcm94eSwgY29uc3QgSURCT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvblByb3h5LnNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQorICAgICwgbV9y
ZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVj
dGlvblByb3h5LCByZXF1ZXN0KSkKICAgICAsIG1fZGF0YWJhc2VJZGVudGlmaWVyKHJlcXVlc3Qu
ZGF0YWJhc2VJZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3RlZFZlcnNpb24ocmVxdWVzdC52
ZXJzaW9uKCkpCiAgICAgLCBtX3JlcXVlc3RUeXBlKHJlcXVlc3QucmVxdWVzdFR5cGUoKSkKQEAg
LTQ5LDggKzQ5LDggQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHIKIAogSURCUmVxdWVzdERhdGE6
OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlv
bikKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIob3BlcmF0aW9uLnRyYW5zYWN0
aW9uKCkuZGF0YWJhc2UoKS5jb25uZWN0aW9uUHJveHkoKS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCi0gICAgLCBtX3RyYW5z
YWN0aW9uSWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
b3BlcmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAsIG1fcmVxdWVzdElkZW50
aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVudGlm
aWVyKCkpKQorICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCiAgICAg
LCBtX29iamVjdFN0b3JlSWRlbnRpZmllcihvcGVyYXRpb24ub2JqZWN0U3RvcmVJZGVudGlmaWVy
KCkpCiAgICAgLCBtX2luZGV4SWRlbnRpZmllcihvcGVyYXRpb24uaW5kZXhJZGVudGlmaWVyKCkp
CiB7CkBAIC01OCw3ICs1OCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIG1faW5kZXhS
ZWNvcmRUeXBlID0gb3BlcmF0aW9uLmluZGV4UmVjb3JkVHlwZSgpOwogCiAgICAgaWYgKG9wZXJh
dGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklk
ZW50aWZpZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CiB9CiAK
IElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgb3Ro
ZXIpCkBAIC03MSwxMSArNzEsMTEgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNv
bnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKICAgICAsIG1fcmVxdWVzdFR5cGUob3RoZXIubV9y
ZXF1ZXN0VHlwZSkKIHsKICAgICBpZiAob3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAgICAg
ICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVxdWVzdElk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fcmVx
dWVzdElkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikK
LSAgICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICAg
ICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRp
Zmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIubV9j
dXJzb3JJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmllcik7
CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogSURCUmVxdWVzdERhdGE6
OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiB0aGF0LCBJc29sYXRlZENvcHlU
YWcpCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCB2b2lkIElEQlJlcXVlc3REYXRhOjppc29sYXRlZENv
cHkoY29uc3QgSURCUmVxdWVzdERhdGEmIHNvdXJjZSwgSURCUmVxdWVzdERhdGEmCiAgICAgICAg
IGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJZGVudGlmaWVyID0gc291cmNlLm1fZGF0YWJhc2VJZGVu
dGlmaWVyLT5pc29sYXRlZENvcHkoKTsKIAogICAgIGlmIChzb3VyY2UubV9yZXF1ZXN0SWRlbnRp
ZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50aWZp
ZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7CiAg
ICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgZGVzdGluYXRp
b24ubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNl
SWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmIChz
b3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklk
ZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJj
ZS5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklkZW50
aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1cnNv
cklkZW50aWZpZXIpOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0RGF0YTo6c2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA0NWNmZmFlYTYwM2E1
M2I1OTkwNGM4YjE0YjdhMWRlZjdkMjVmMzEwLi40MDhiNGU0NjI4NzMzN2I5YWMzNDRhZmJmNDY5
MTU4NjhlODBmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wg
SURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVz
b3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3JlcXVlc3RJZGVudGlmaWVyID0gV1RGTW92ZShv
YmplY3QpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFz
T2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+
IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVz
dC5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE3NCw3ICsx
NzQsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlk
ZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9jdXJzb3JJZGVudGlmaWVy
ID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCmluZGV4IGE4OTQ1NGU2ZTYzZjZl
YjdjYjUwMzhiOWM5MzJmYTIxODYzM2VkYzYuLjRjYmQ1ZDliZGYwYTg1MjNiZjdmNTJhYzViYzVj
YjRiN2VkMTA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBJREJS
ZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIG90aGVyKQogICAg
ICwgbV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKIHsKICAgICBpZiAob3Ro
ZXIubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CisgICAgICAgIG1f
ZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFi
YXNlSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBtX3Ry
YW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3Ro
ZXIubV90cmFuc2FjdGlvbkluZm8pOworICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VV
bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOwogICAg
IGlmIChvdGhlci5tX3Jlc3VsdEtleSkKLSAgICAgICAgbV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtleSk7CisgICAgICAgIG1fcmVzdWx0
S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOwogICAgIGlm
IChvdGhlci5tX2dldFJlc3VsdCkKLSAgICAgICAgbV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKKyAgICAgICAgbV9nZXRSZXN1
bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKICAgICBp
ZiAob3RoZXIubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7CisgICAg
ICAgIG1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5t
X2dldEFsbFJlc3VsdCk7CiB9CiAKIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3Qg
SURCUmVzdWx0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtODcsMTUgKzg3LDE1IEBA
IHZvaWQgSURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlc3VsdERhdGEmIHNv
dXJjZSwgSURCUmVzdWx0RGF0YSYgZGVzCiAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRJbnRlZ2Vy
ID0gc291cmNlLm1fcmVzdWx0SW50ZWdlcjsKIAogICAgIGlmIChzb3VyY2UubV9kYXRhYmFzZUlu
Zm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5m
bzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUluZm8gPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURCRGF0
YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbklu
Zm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElEQlRy
YW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90cmFu
c2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJjZS5tX3Ry
YW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlm
IChzb3VyY2UubV9yZXN1bHRLZXkpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJLZXlE
YXRhOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9IG1h
a2VVbmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6SXNv
bGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fZ2V0UmVzdWx0KQotICAgICAgICBkZXN0aW5h
dGlvbi5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqc291cmNl
Lm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3Rp
bmF0aW9uLm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2UubV9n
ZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1f
Z2V0QWxsUmVzdWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJREJH
ZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0QWxs
UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxSZXN1
bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogSURCUmVzdWx0RGF0YSBJ
REJSZXN1bHREYXRhOjplcnJvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCkBAIC0xMTEsNyArMTExLDcgQEAgSURC
UmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmUKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVlc3RJ
ZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5EYXRh
YmFzZVN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCktPmlu
Zm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6
Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAg
IElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1bHQu
bV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZDsKICAgICBy
ZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uZGF0YWJh
c2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNv
bm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOwotICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9u
SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlvbi5p
bmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZv
KCkpOworICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJhbnNh
Y3Rpb25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkRhdGFi
YXNlSW5mbyYgaW5mbykKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7SURCUmVzdWx0VHlw
ZTo6RGVsZXRlRGF0YWJhc2VTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3Vs
dC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZv
KTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTcxLDIxICsxNzEsMjEgQEAg
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpyZW5hbWVJbmRleFN1Y2Nlc3MoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiByZXEKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cHV0
T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsKICAgICBJREJSZXN1bHREYXRhIHJl
c3VsdCB7IElEQlJlc3VsdFR5cGU6OlB1dE9yQWRkU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIg
fTsKLSAgICByZXN1bHQubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+
KHJlc3VsdEtleSk7CisgICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlE
YXRhPihyZXN1bHRLZXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEg
SURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsK
ICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1Y2Nl
c3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0UmVz
dWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRzU3Vj
Y2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBJREJHZXRBbGxSZXN1bHQmIGdldEFsbFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJl
c3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzLCByZXF1ZXN0SWRlbnRp
ZmllciB9OwotICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
R2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9
IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTIwNCwxNCArMjA0LDE0IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0
RGF0YTo6ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
CiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJlc3Vs
dCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlw
ZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1f
Z2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7Cisg
ICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3Vs
dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRh
OjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJS
ZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNzLCBy
ZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9
IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDcxN2IzZTJkZTUzYjM1M2ZlYjZkZDc1NTAwYTBlNWU2
OGM5NDdhM2YuLjYyMDYyYTFlMjk1ZjdiNTk4MTU4OTViNTdiZWMwMDhlNWIxODc2YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
c3VsdERhdGEuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJl
c3VsdC5tX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE5Myw3ICsxOTMsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1
bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7
Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbklu
Zm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbklu
Zm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8g
PSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29k
ZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKTsKKyAgICAgICAgYXV0byBvYmplY3Qg
PSBtYWtlVW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElEQktleURhdGE+
IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAoIW9w
dGlvbmFsKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5p
cXVlPElEQkdldFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0
KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2dl
dFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1
dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CisgICAgICAg
IGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJh
bnNhY3Rpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCmluZGV4IDk4M2MxYzExYzk5YjQ1YjZjZTU0NGRmY2Fj
MDM3ZTRjNzM3Mjk1YzMuLjRmYjk5OTE5ZjY3ZDVmN2M5YWJjMTA5ZTJlMzAwMGNjZTRjNDQwOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJU
cmFuc2FjdGlvbkluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCkBAIC01NSw3ICs1NSw3IEBAIElEQlRyYW5z
YWN0aW9uSW5mbyBJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UoY29uc3QgSURCU2Vy
dmVyOjpJREJDb25uZWN0CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIHJlc3VsdCgoSURCUmVzb3Vy
Y2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pKSk7CiAgICAgcmVzdWx0Lm1fbW9kZSA9IElEQlRyYW5z
YWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZTsKICAgICByZXN1bHQubV9uZXdWZXJzaW9uID0gbmV3
VmVyc2lvbjsKLSAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CisgICAgcmVzdWx0
Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3Jp
Z2luYWxEYXRhYmFzZUluZm8pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3LDcgKzY3
LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICwgbV9vYmplY3RTdG9yZXMoaW5mby5tX29iamVjdFN0
b3JlcykKIHsKICAgICBpZiAoaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAgICBt
X29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8pOwogfQogCiBJREJUcmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0aW9uSW5mbyhj
b25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTkxLDcg
KzkxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkluZm86Omlzb2xhdGVkQ29weShjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mIHNvdXJjZSwgSURCVHJhbnMKICAgICAgICAgZGVzdGluYXRpb24ubV9v
YmplY3RTdG9yZXMudW5jaGVja2VkQXBwZW5kKG9iamVjdFN0b3JlLmlzb2xhdGVkQ29weSgpKTsK
IAogICAgIGlmIChzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6
SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5m
byA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFz
ZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogI2lmICFMT0dfRElT
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJUcmFuc2FjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAppbmRleCA5MzBkODAyMzYxODIzMmFiZjZjMDgx
ZGYyMTI5NThmZjYyYTU1NWVkLi43Yjk0NzdlOGVjNTU0YzkxM2QyYTQ4YmU1NThlMTYzM2Q5M2Zj
ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCVHJhbnNhY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBJ
REJUcmFuc2FjdGlvbkluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJUcmFuc2FjdGlv
bkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNPYmplY3Qp
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBXVEZNb3Zl
KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDg3YjFhZGNkOTY2NjIw
NmVjOTcxNjYwMzYyYjQwZTVhZDdkODAxZDEuLmM5Njg5NDQ0ZmQyMjQwMmNlZDIxMTNiM2JmYTBi
OWE1MjZjNjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblByb2Nl
c3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsK
ICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3RhTWFu
YWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50
U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CiAgICAg
ICAgIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZp
Z2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5kZXggZjg3MjU3NGU4NWMyNDA4NzcyYjFkMTFh
MmU4YmNiNmRkNjBkYTI5Ny4uYTMxYmFkYjU0YWM5ODFlMGUzYmFkYWZlMjA5ODc4MjlkM2Y3NDAz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9O
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMmIE5hdmlnYXRvck1lZGlhQ2Fw
YWJpbGl0aWVzOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG8KIHsKICAgICBOYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlhQ2Fw
YWJpbGl0aWVzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcz4o
KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRp
YUNhcGFiaWxpdGllcz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZN
b3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmlu
ZGV4IDUwZDBiYjBiMWVkNTNhNDMyNDU4ZDlmYjcxMzU3MGFlMGVjYTBkMDYuLmI5NzQzNGM0ZTYy
NDVkNzNjY2YyZDYyNWEwYTFiMDNlMTI5MGNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXRN
b2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKIE1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlja2Vy
KCkKIHsKICAgICBpZiAoIW1fcGlja2VyT3ZlcnJpZGUpCi0gICAgICAgIG1fcGlja2VyT3ZlcnJp
ZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigqdGhp
cyk7CisgICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fcGlja2VyT3ZlcnJpZGUu
Z2V0KCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdWludDY0X3QgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWEKIAog
ICAgIExPRyhNZWRpYSwgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50KCVwICsgJWxsdSkiLCAmY2xpZW50LCBjb250ZXh0SWQpOwogCi0gICAgbV9j
bGllbnRTdGF0ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBj
b250ZXh0SWQpKTsKKyAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVudFN0
YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgc2NoZWR1bGVEZWxheWVk
VGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJhdGlv
blRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmNwcAppbmRleCBkNDE3YTEyMTY5MTExMjE1ZDU0MjI5MWUwM2M1OWQ1ZDZlN2ViM2Y0
Li43Y2JjNmExMzM1MWUwZDMyY2UyNTVhOWJhZGNiOTc0NGRhZjRkNDQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtMTc4
LDkgKzE3OCw5IEBAIE1lZGlhVGltZSBNZWRpYVNvdXJjZTo6Y3VycmVudFRpbWUoKSBjb25zdAog
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVk
KCkgY29uc3QKIHsKICAgICBpZiAobV9idWZmZXJlZCAmJiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMt
Pmxlbmd0aCgpICYmIHN0ZDo6YWxsX29mKG1fYWN0aXZlU291cmNlQnVmZmVycy0+YmVnaW4oKSwg
bV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5lbmQoKSwgW10oYXV0byYgYnVmZmVyKSB7IHJldHVybiAh
YnVmZmVyLT5pc0J1ZmZlcmVkRGlydHkoKTsgfSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAotICAgIG1fYnVm
ZmVyZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBtX2J1
ZmZlcmVkID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgZm9yIChhdXRv
JiBzb3VyY2VCdWZmZXIgOiAqbV9hY3RpdmVTb3VyY2VCdWZmZXJzKQogICAgICAgICBzb3VyY2VC
dWZmZXItPnNldEJ1ZmZlcmVkRGlydHkoZmFsc2UpOwogCkBAIC0xOTAsNyArMTkwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkg
Y29uc3QKIAogICAgIC8vIDEuIElmIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMubGVuZ3RoIGVxdWFscyAw
IHRoZW4gcmV0dXJuIGFuIGVtcHR5IFRpbWVSYW5nZXMgb2JqZWN0IGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KICAgICBpZiAoYWN0aXZlUmFuZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCiAg
ICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5lZCBieSBidWZm
ZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMu
CiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3QgcmFuZ2UgZW5k
IHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QK
IAogICAgIC8vIFJldHVybiBhbiBlbXB0eSByYW5nZSBpZiBhbGwgcmFuZ2VzIGFyZSBlbXB0eS4K
ICAgICBpZiAoIWhpZ2hlc3RFbmRUaW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyA0LiBMZXQg
aW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmluZyBh
IHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBtX2J1ZmZlcmVk
LT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBoaWdoZXN0RW5kVGltZSk7CkBAIC0yMjEsNyAr
MjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6
OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChzb3Vy
Y2VSYW5nZXMpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzZWVrVG9U
aW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kKQogCiAgICAgLy8gU2V0IGxpdmUgc2Vla2FibGUgcmFuZ2UgdG8gYmUgYSBuZXcg
bm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdlCiAg
ICAgLy8gd2hvc2Ugc3RhcnQgcG9zaXRpb24gaXMgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBpcyBl
bmQuCi0gICAgbV9saXZlU2Vla2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKGVuZCkpOworICAgIG1fbGl2ZVNlZWthYmxlID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlh
RGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhRGV2aWNlcy5jcHAKaW5kZXggZTQxODI3ODM4ZDYyY2EzOGZjM2JmM2JlNzhmOGY0YWE4
YWU1MjU5Ni4uN2IzNThmNWUwZGU0MmZiMjI2OGQzNjkwM2U1OGRiNWViNzhlOTBkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURl
dmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmNwcApAQCAtNTEsNyArNTEsNyBAQCBOYXZpZ2F0b3JNZWRpYURldmlj
ZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsK
ICAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZp
Z2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2Vz
PihuYXZpZ2F0b3ItPndpbmRvdygpKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ29udHJvbGxlci5jcHAKaW5kZXggOGQ3ZTYzY2M2MDZkNmRhMTlmYmRiMTJkZTU0
ZmI4NTVmZGY2MmM5OS4uMTRkZjExNjFkYWU2OGNjNDZjYjQ5ZWFhZTIxZjVlZjk4OWUyYWNhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFVzZXJNZWRpYUNvbnRyb2xs
ZXI6On5Vc2VyTWVkaWFDb250cm9sbGVyKCkKIAogdm9pZCBwcm92aWRlVXNlck1lZGlhVG8oUGFn
ZSogcGFnZSwgVXNlck1lZGlhQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgVXNlck1lZGlhQ29udHJv
bGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1l
KCksIHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7CisgICAg
VXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6
OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlY3VyZShEb2N1bWVudExvYWRlciYgZG9j
dW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmNwcAppbmRleCBhYWE0MDAwMjA3MzY1ZmZjYmU1MjgxMjhlMjhjZTAyZjZjNjA3Y2Rk
Li5jOTg1YmMxOWEzMWQwMTE0NTY1YWJhYmE1ZjA2MGVlNTBkYTYxMTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cjo6Y2hhbm5lbEV2ZW50KFNjcmlwdEV4ZWN1dGkKICAgICBpbml0Lm5lZ290aWF0ZWQgPSBkYXRh
Q2hhbm5lbC0+bmVnb3RpYXRlZCgpOwogICAgIGluaXQuaWQgPSBkYXRhQ2hhbm5lbC0+aWQoKTsK
IAotICAgIGF1dG8gaGFuZGxlciA9ICBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOworICAgIGF1dG8gaGFuZGxlciA9ICBt
YWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5l
bCkpOwogICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoY29udGV4dCwg
V1RGTW92ZShoYW5kbGVyKSwgZnJvbVN0ZFN0cmluZyhsYWJlbCksIFdURk1vdmUoaW5pdCkpOwog
CiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0
YWNoYW5uZWxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vLCBXVEZNb3ZlKGNoYW5uZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAKaW5kZXggZGVmMWY5MWVlZTllZDZlYzc4ZDEzYzY5ZWM0MzQ4ZjBhYTY4ZDM2
Ny4uZDFhNzRiODU3MWJlZTdlZTVlOWMzMTYyZWNhMmY0ZDZmZjQxZTQ1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB2
b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+c2V0
QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RG
TW92ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+c2V0QmFja2VuZChtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsKICAg
ICBhdXRvJiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwogICAgIGFkZFBlbmRpbmdUcmFja0V2
ZW50KHJlY2VpdmVyLnJlbGVhc2VOb25OdWxsKCksIHRyYWNrLCBydGNTdHJlYW1zLCBudWxscHRy
KTsKIH0KQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNv
bGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2Nl
aXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RG
TW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSks
IHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiB9CiAKQEAgLTQ5OSw3ICs0OTksNyBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zYwogICAgIGlmICghc291cmNlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
Lm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9uTnVs
bCgpKTsKIAogICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KG1ha2VSZWYobmV3VHJhbnNjZWl2ZXIu
cmVjZWl2ZXIoKSksIG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkudHJhY2soKSwgcnRjUmVjZWl2
ZXItPnN0cmVhbXMoKSwgbWFrZVJlZihuZXdUcmFuc2NlaXZlcikpOwogfQpAQCAtNTM0LDcgKzUz
NCw3IEBAIE9wdGlvbmFsPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzPiBMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjpjcmVhdGVUcmFuc2NlCiAgICAgaWYgKCFyZXN1bHQub2soKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1vdmVW
YWx1ZSgpKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CiAgICAgcmV0dXJuIExpYldl
YlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzIHsgdHJhbnNjZWl2ZXItPmNyZWF0ZVNlbmRlckJh
Y2tlbmQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQsIFdURk1vdmUoc291cmNlKSksIHRyYW5zY2Vp
dmVyLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikgfTsKIH0K
IApAQCAtNTg1LDcgKzU4NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnRyYW5zY2VpCiB7CiAgICAgZm9y
IChhdXRvJiB0cmFuc2NlaXZlciA6IG1fYmFja2VuZC0+R2V0VHJhbnNjZWl2ZXJzKCkpIHsKICAg
ICAgICAgaWYgKHRyYW5zY2VpdmVyLT5zZW5kZXIoKS5nZXQoKSA9PSBiYWNrZW5kLnJ0Y1NlbmRl
cigpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2NlaXZl
ckludGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CiAgICAgfQogICAgIHJl
dHVybiBudWxscHRyOwogfQpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFu
bmVsCiB7CiAgICAgYXV0byBpbml0ID0gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpmcm9t
UlRDRGF0YUNoYW5uZWxJbml0KG9wdGlvbnMpOwogICAgIGF1dG8gY2hhbm5lbCA9IG1fYmFja2Vu
ZC0+Q3JlYXRlRGF0YUNoYW5uZWwobGFiZWwudXRmOCgpLmRhdGEoKSwgJmluaXQpOwotICAgIHJl
dHVybiBjaGFubmVsID8gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gY2hhbm5lbCA/IG1h
a2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6
IG51bGxwdHI7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hhbm5l
bChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0YUNo
YW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcAppbmRleCAyMDdmMTVlNjQ1N2I5ZGZjYWMxYzMzOWVhMzlmZWExZDc3ODU5ZDhi
Li5mYzkxY2NkMGJiZDFmZGJiYTc2NDJlNzA0ZjM3ZmU4NWNjNzJmZDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+
IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2UKIAogICAgIHBhZ2UtPmxpYldlYlJU
Q1Byb3ZpZGVyKCkuc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihwYWdlLT5zZXR0aW5ncygpLndl
YlJUQ0VuY3J5cHRpb25FbmFibGVkKCkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGli
V2ViUlRDUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIo
KSk7CiB9CiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKQEAgLTMx
MSw3ICszMTEsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlZpZGVvUmVjZWl2
ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aQogICAgIGF1dG8gc291cmNlID0g
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFj
a0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJj
ZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywgeyB9
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsK
ICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJD
b25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTMzNCw3
ICszMzQsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2ZXIg
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdQogICAgIGF1dG8gc291cmNlID0gUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lk
KSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJjZS5j
b3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
YXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
PigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2Vp
dmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJhdWRpbyJfcywgeyB9LCBX
VEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsKICAg
ICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTQwMCw3ICs0
MDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRFeGlzdGluZ1Nl
bmRlcihjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNl
bmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHJl
YW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmll
ZFBsYW5FbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAg
ICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNr
KCpzZW5kZXJCYWNrZW5kLCB0cmFjaywgbWVkaWFTdHJlYW1JZHMpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKIApA
QCAtNDM4LDcgKzQzOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyCiAgICAgICAgIGNvbnN0
IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgpOwogICAgICAgICBTdHJpbmcgdHJhY2tJ
ZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIHNlbmRlckJh
Y2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlz
LCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGF1dG8gbmV3
U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIG1ha2VSZWYodHJhY2spLCBWZWN0
b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwog
ICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXIodHJhY2tLaW5kLCB0cmFja0lk
KTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUo
V1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSwgbnVsbHB0cik7CkBAIC00NzIs
NyArNDcyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoU3RyaW5nIHsgdHJhY2tL
aW5kIH0sIGluaXQpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBz
ZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhp
cywgbnVsbHB0cik7CiAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgq
dGhpcywgU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVy
QmFja2VuZCkpOwogICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3
U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQpOwog
fQpAQCAtNDgyLDcgKzQ4Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5F
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFdURk1v
dmUodHJhY2spLCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1
dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4o
KnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8mIGJhY2tlbmQgPSAqc2VuZGVyQmFja2VuZDsKICAg
ICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCB0cmFjay5jb3B5UmVm
KCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIGlmICgh
bV9lbmRwb2ludC0+YWRkVHJhY2soYmFja2VuZCwgdHJhY2ssIFZlY3RvcjxTdHJpbmc+IHsgfSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmluZGV4
IDY4NTBlNmE4NWU5MDI0YmIxMTQ1YjZiOTQyMjljMGY2MTQyZGY3YWEuLjZhZWVhMTMzODkyZDIw
NjNmMDM1MzliOGVlYzRkYjliY2U2NGQ3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBMaWJXZWJS
VENSdHBTZW5kZXJCYWNrZW5kOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0
ZXJzJiBwYXJhbWUKIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2VuZGVy
LT5HZXREdG1mU2VuZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ0RUTUZT
ZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZC5jcHAKaW5kZXggZWI4NzFlYjdkYjAzODg0ZjRjYzdlMGFkZWY2ODc4
MmUxYzA5NzJkNy4uNWMwZDdlOTVlMmZkMTJlM2Y4NGYxN2NmYmViNmQ4NjdhNTFmMmU0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQu
Y3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2NlaXZl
ckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5y
ZWNlaXZlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJh
Y2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNr
ZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCYg
YmFja2VuZCwgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6U291cmNlJiYgc291cmNlKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJh
Y2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQsIG1f
cnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiBSVENSdHBU
cmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRpcmVj
dGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDBjMzI4ZmFlNDQyMzU5OTI1MzMwNzJjODVkNmIz
MmZkYzZjMTM4MzguLjBlYmFmZjg5ZmZiYzUwMDNlMjQ2MWJhZGVlNTIwMzkxMTcxY2JkM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9uCiAgICAg
LCBtX2JvZHkob3B0aW9ucy5ib2R5KQogICAgICwgbV90YWcob3B0aW9ucy50YWcpCiAgICAgLCBt
X3N0YXRlKElkbGUpCi0gICAgLCBtX3Rhc2tUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihb
dGhpc10gKCkgeyBzaG93KCk7IH0pKQorICAgICwgbV90YXNrVGltZXIobWFrZVVuaXF1ZTxUaW1l
cj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKIHsKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5pc0Vt
cHR5KCkpIHsKICAgICAgICAgYXV0byBpY29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwob3B0
aW9ucy5pY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBhNjIwMzUzOTNj
N2ZiM2Y2ZGRmMDFjNWM4OWQ3NGYzYjVlZGQyZDQ0Li5kNDhmMjA1YTllMjQxNGUwN2Q3MjJmOTAz
MjVhN2MzNjRkNDg5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIGNvbnN0IGNoYXIqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCkKIAogdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNhdGlv
bkNsaWVudCogY2xpZW50KQogewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVU
byhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1h
a2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIE5vdGlmaWNh
dGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpz
dXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVu
dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCmluZGV4IDAzZmU5ZTM4Njc4ZjQwNTA3MzI1
NTA5YzIwMzg2N2M5Y2Y4MjBmZjEuLmM5OGM5OTg2ZGVkNmNkMjA1NDI2MTcyMTVmNjUzNmNlNThm
Mjc5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVv
dGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIERPTVdpbmRvd1F1b3RhKiBET01XaW5kb3dRdW90YTo6
ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dRdW90YSogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1F1b3RhKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpm
cm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd1F1
b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERP
TVdpbmRvd1F1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVu
dC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDdiYTFkM2Q0YjM2
OTQ0MGM2NGUxN2RkMjBjYTk0NTM4YjhhZDliNzQuLjdhMDgwNDU5NTY5ODNhMzFmNmQ4MzRlZjdl
YTc3MmZhNjY3MzZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
TmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1
b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdhdG9y
U3RvcmFnZVF1b3RhKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oTmF2aWdhdG9yKiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8TmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9t
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvclN0
b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVu
aXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQg
PSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3Jh
Z2VRdW90YS5jcHAKaW5kZXggOTVjM2U0MzY0NzMxNjJhNTBkNjFiNWNlNzUxNjVlZTY4YjIxYjcy
Ny4uMWExYzg0N2RjNDk3ZGM2NDg0NWY1NmVjZTU5MjYzYTQyNmFmNjMwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3Rv
cmFnZVF1b3RhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEqIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3IqCiB7
CiAgICAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nh
c3Q8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0
b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxl
bWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01X
aW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCAzNzk1NjUyNmZiZjI4NjkwZWNmMDM5
OTUyYzUyZjZlMDQ0NmJjYjRjLi45NjljMjM3ZjdjODE1NTE1M2RlMDcxZWM5NmE2MWE0YTQ2MmQz
ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dT
cGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgRE9NV2luZG93U3Bl
ZWNoU3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20oRE9NV2luZG93KiB3
aW5kb3cpCiB7CiAgICAgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzKj4oU3VwcGxlbWVudDxET01XaW5kb3c+
Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
bWFrZVVuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CiAgICAgICAgIHN1
cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAppbmRl
eCA3MmI1NjNlNGJiZjdkY2UwM2ZhMzA4ODBkMmZhNzcwYjg5ODY5M2E0Li5lN2I2MmExYTE3YmQ5
NmE5ZjVhMTNmZDA5ZTc0OWFiNGJjZTE5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBT
cGVlY2hTeW50aGVzaXM6OnZvaWNlc0RpZENoYW5nZSgpCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyJiBTcGVlY2hTeW50aGVzaXM6OmVuc3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKQog
ewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQotICAgICAgICBtX3BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI+KHRoaXMpOworICAgICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpOwogICAgIHJldHVybiAq
bV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDYyZjY4ZWM2
NjNhODAyMTJjNmYzYWY3Yjg1ZTIzYzZiNGY3NDJhMGEuLjJmNTQyNzJhYzVjMDFkMGEyMzBlNWMw
ZGYwNDUyNGFmYjJhNGUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgQXN5
bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEs
IGZsb2F0IHNhbXBsZVJhCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1
dG8gZGVjb2RpbmdUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1vdmUo
YXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spKTsKKyAgICBhdXRvIGRlY29kaW5nVGFzayA9IG1ha2VVbmlxdWU8RGVj
b2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3VjY2Vz
c0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CiAgICAgbV9xdWV1ZS5hcHBlbmQo
V1RGTW92ZShkZWNvZGluZ1Rhc2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUgdGFz
ayBpcyBlZmZlY3RpdmVseSB0YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAppbmRleCBiYzAw
ZWI5Zjg3ZDFiY2Q1OGNiZjc0OWI3ZGE3YzQ5M2NmN2U4ODc2Li5jZjkyNjljMzA0NGM0MzIyZDc0
NGQwNjI5ZGRhMGZhODk0OTNlY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw4IEBAIGNsYXNzIEF1
ZGlvQnVmZmVyQ2FsbGJhY2s7CiAvLyBBc3luY0F1ZGlvRGVjb2RlciBhc3luY2hyb25vdXNseSBk
ZWNvZGVzIGF1ZGlvIGZpbGUgZGF0YSBmcm9tIGFuIEFycmF5QnVmZmVyIGluIGEgd29ya2VyIHRo
cmVhZC4KIC8vIFVwb24gc3VjY2Vzc2Z1bCBkZWNvZGluZywgYSBjb21wbGV0aW9uIGNhbGxiYWNr
IHdpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBkZWNvZGVkIFBDTSBkYXRhIGluIGFuIEF1ZGlvQnVm
ZmVyLgogCi1jbGFzcyBBc3luY0F1ZGlvRGVjb2RlciB7CitjbGFzcyBBc3luY0F1ZGlvRGVjb2Rl
ciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQXN5bmNBdWRpb0RlY29kZXIpOwogcHVibGljOgogICAgIEFzeW5jQXVkaW9EZWNv
ZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IGJhOGMyNTVhZTdkN2RhNzNiYzlmZjY1
NTQzZjFlMzdiYzk1NDA0YjMuLjBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZh
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIEF1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKLSAgICBhZGRJbnB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQpKTsK
KyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRk
T3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291
bnQpKTsKIH0KIAogLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpIGFzIGFuIG9wdGltaXphdGlv
biBhbGxvd2luZyB0aGlzIG5vZGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW4tcGxhY2UgcHJvY2Vz
c2luZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYmMxODljMDhjYmVmYzdjMTk2MDY0NjZj
MDc2OGI4ZmE2MzRiMTZhYi4uMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZlNzkwYWJmYmU2ZTk4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2lj
UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQyLDggKzQyLDggQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIEF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkK
IHsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAx
KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAg
Ly8gVGhlIHN1YmNsYXNzIG11c3QgY3JlYXRlIG1fcHJvY2Vzc29yLgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwCmluZGV4IDQwYWMzMmM1YzU1YzNkMzJkMGUxNGI2YTdkMjJiMjQ2NzM5MGY0YmYuLjI1MTBj
NDBhN2Y2MTIzZDRjN2ZjMmQ2NDBhOTBiNGYwYTk4ZTZmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAK
QEAgLTczLDcgKzczLDcgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGUKICAgICBtX3BsYXliYWNr
UmF0ZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicGxheWJhY2tSYXRlIiwgMS4wLCAt
TWF4UmF0ZSwgTWF4UmF0ZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIG1vbm8uICBBIGNhbGwgdG8g
c2V0QnVmZmVyKCkgd2lsbCBzZXQgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMgdG8gdGhh
dCBvZiB0aGUgYnVmZmVyLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91
dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5NTZjMTU4NjIx
ODljNzE0MjljYmNmZDYwMDQyZjAwYzk4YmFlZjYuLmQ0Y2RiNzY1OGMwZjM1YjVmYzlhMjJjZTg5
OGJjYjJiOTllZTRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVl
TG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2Vf
dW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFr
ZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAgIC8vIEFjY29yZGluZyB0
byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVyIHBhZ2UgbmF2aWdhdGUuCiAg
ICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0aXZp
dHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCkBAIC0xNjYsNyArMTY2LDcgQEAgQXVk
aW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QKICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRy
dWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0
aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1
ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRR
dWV1ZT4oKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC00MzIsNyArNDMy
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gQXVkaW9Db250ZXh0OjpjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmUKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWNvZGVB
dWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4m
JiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICghbV9hdWRpb0RlY29kZXIpCi0gICAgICAgIG1f
YXVkaW9EZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAg
ICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigpOwog
ICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBs
ZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2sp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA5NzU4ODc1NDc0N2UxNTI0ODE4OWY0OTcwYzZk
MzNlM2M2YWUxZTExLi5kOWFiYjk3NzdhOWQyNWVlYWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YQogICAgICwgbV9tdXRlZChmYWxzZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlc3Rp
bmF0aW9uKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0
aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwog
fQogCiBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3Bw
CmluZGV4IDE2MzczY2U5Mzc4ZDMyMmZkZDljMjUzZjljNzZkOTYzZTYxM2NkM2IuLjRhODI1NWU2
ZjBhZjA3NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzksNyArMzks
NyBAQCBCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZp
bHRlcik7CiAKICAgICAvLyBJbml0aWFsbHkgc2V0dXAgYXMgbG93cGFzcyBmaWx0ZXIuCi0gICAg
bV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgZmFsc2UpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxCaXF1
YWRQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKIH0KIAogQmlxdWFk
RmlsdGVyVHlwZSBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCAwZTRl
MzY4NWI4MmNlNDc3ZWM0ZTU4NTQ3ZjE2YWQ4YjcwZmM3OTA0Li5lODRiOTgwMzU2NzBmYjFkY2Mz
MjcwOTY2M2QyYjM5MDU1MmU2NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEJpcXVhZFBy
b2Nlc3Nvcjo6fkJpcXVhZFByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtl
cm5lbD4gQmlxdWFkUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmNo
ZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlxdWFk
UHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lSZXNwb25zZShpbnQgbkZyZXF1ZW5jaWVzLCBjb25zdCBm
bG9hdCogZnJlcXVlCiAgICAgLy8gdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgcHJvY2Vz
c2luZyBydW5uaW5nIGluIHRoZSBhdWRpbwogICAgIC8vIHRocmVhZCBvbiB0aGUgbWFpbiBrZXJu
ZWxzLgogICAgIAotICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJp
cXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgYXV0byByZXNwb25zZUtlcm5lbCA9IG1ha2VVbmlx
dWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIAogICAgIHJlc3BvbnNlS2VybmVsLT5nZXRGcmVx
dWVuY3lSZXNwb25zZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5jeUh6LCBtYWdSZXNwb25zZSwgcGhh
c2VSZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IDIwYjhkYTE5ZTVmNDM5Y2ZlNTQ1NWYwMWRj
MjkwODc0NDZiMjNjMDguLmRmNTBmMjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMyZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdl
ck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1l
cmdlck5vZGUuY3BwCkBAIC01OSw5ICs1OSw5IEBAIENoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVs
TWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuCiAK
ICAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5wdXRzLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQotICAgICAgICBhZGRJbnB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgICAgIGFkZElu
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAotICAgIGFkZE91dHB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGluaXRp
YWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDQ2MzU0OThjMDM0YzU5MzBiNGU4ZjIyMDg2
ZTE0YjJiNGJkMjkxMTcuLjgyZjY5YTA0Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkxYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
U3BsaXR0ZXJOb2RlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIENoYW5uZWxTcGxpdHRlck5vZGU6
OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwogCi0gICAg
YWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFk
ZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAogICAgIC8vIENyZWF0
ZSBhIGZpeGVkIG51bWJlciBvZiBvdXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11bSBu
dW1iZXIgb2YgY2hhbm5lbHMgZmVkIHRvIGFuIGlucHV0KS4KICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCi0gICAgICAgIGFkZE91dHB1dChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgICAgICBhZGRPdXRwdXQo
bWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0aWFs
aXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Nv
bnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2
ZXJOb2RlLmNwcAppbmRleCAyMzgyZGFiY2M5Yzk5MjdjYWMzMWQzMjc1ZjIyMDNjYzhmNThhMDkz
Li5lMzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTUyLDgg
KzUyLDggQEAgQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDb252b2x2
ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhp
cykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsK
KyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAog
ICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFubmVs
Q291bnQgPSAyOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZl
ck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgLy8gQ3JlYXRlIHRo
ZSByZXZlcmIgd2l0aCB0aGUgZ2l2ZW4gaW1wdWxzZSByZXNwb25zZS4KICAgICBib29sIHVzZUJh
Y2tncm91bmRUaHJlYWRzID0gIWNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCk7Ci0gICAgYXV0
byByZXZlcmIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRp
b05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91
bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CisgICAgYXV0byByZXZlcmIgPSBtYWtlVW5pcXVlPFJl
dmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMs
IE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CiAKICAg
ICB7CiAgICAgICAgIC8vIFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDQyNjVhMDA3NDllYWZm
ZjZhOWUxYjlkMWRkYTYwZDRkYjcwMjhiMDMuLjgxYmQ3ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdj
ZTI1NTc4MDJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5
Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heEQKICAgICA6
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0
Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUp
OworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPERlbGF5
Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggYTc1YmE2YjdjOTJlNzQ0NGM2
NTYwOGU4YWUxOGY5ZDUwMDAyNmEwNC4uMTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5ZTZk
MmFjYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGVsYXlQcm9jZXNzb3I6On5EZWxheVBy
b2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gRGVsYXlQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlE
U1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlbGF5RFNQS2VybmVsPih0
aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKaW5k
ZXggYWEwZTRhODAxMTllYmVkOWRkMzY5NmIzZmExMzA1ZGRmMzJiZDA1Mi4uMTQwOTZkOGYwYzU5
NmE1Mjk3MTY2NmVmODI2N2EwMjNmZGI0NGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00
Niw4ICs0Niw4IEBAIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wCiB7CiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMp
KTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAg
YWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZhdWx0TnVtYmVy
T2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgbV90aHJlc2hvbGQgPSBBdWRpb1BhcmFtOjpjcmVh
dGUoY29udGV4dCwgInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CiAgICAgbV9rbmVlID0gQXVk
aW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJrbmVlIiwgMzAsIDAsIDQwKTsKQEAgLTk4LDcgKzk4
LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7ICAgIAotICAgIG1fZHluYW1p
Y3NDb21wcmVzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBs
ZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIG1fZHluYW1pY3ND
b21wcmVzc29yID0gbWFrZVVuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUoKSwg
ZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogfQogCiB2b2lkIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vR2Fpbk5vZGUuY3BwCmluZGV4IDZjOTRhNTIzYzNiMmEwMjEyYjJhNTRhMWE5YzhmMDI2YmJk
MWRiNWYuLjI1N2RmMmVjZTIzMzhjYmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC00Niw4ICs0Niw4
IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAKICAgICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImdhaW4i
LCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlu
cHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAKaW5kZXggMzgxYWU3Mjc5NGZiMGU3ZmVhNjMzMWFiZDMzYjIwYzE1ODQ1ZmY5Yi4uOTEy
ZTZlYjIzMjE0NTY0M2Q2ZmRhZmJjMTFlOTY3NjRjM2QyZjVkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZSk7CiAKICAgICAv
LyBEZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdoYXQg
dGhlIG1lZGlhIGVsZW1lbnQgLnNyYyBpcyBzZXQgdG8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1ha2VV
bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9
CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRG
b3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAKICAgICAgICAgaWYg
KHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUg
c2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgpOwotICAgICAgICAg
ICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5l
bFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICAgICAg
bV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxl
cj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gQnlwYXNzIHJlc2FtcGxpbmcuCiAgICAgICAgICAgICBtX211bHRpQ2hhbm5l
bFJlc2FtcGxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDVi
MmE1MDBkZDI5NGQxMDU1OGJjN2EwOGNmNzcxNmU0MjZiNWMyYWMuLmU0M2Y1NDQ4YmMyNmI4NmFm
NjkzZDAwOTk5NWM2NzM0ZjY5NTVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lCiAgICAgYXVkaW9Tb3VyY2VQ
cm92aWRlci0+c2V0Q2xpZW50KHRoaXMpOwogICAgIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVv
LiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIGZvcm1hdCBvZiB0aGUgTWVkaWFT
dHJlYW0ncyBhdWRpbyB0cmFjay4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UKICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNh
bXBsZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3Ig
PSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZTsKLSAgICAgICAgbV9tdWx0aUNoYW5uZWxS
ZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVG
YWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxl
ciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVy
T2ZDaGFubmVscyk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0gbnVt
YmVyT2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggNWI1MDI5YmZiY2U3N2FkNWI2YzNjODgzMjYwZGI5ZGVm
ZGY2MTA0Yi4uYTk5Y2VhYWQ2YjVjMjFlMDlkZDIyNTNjMmFjZjMwNDU1NDc1M2U3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXRUeXBlKG1fdHlwZSk7CiAK
ICAgICAvLyBBbiBvc2NpbGxhdG9yIGlzIGFsd2F5cyBtb25vLgotICAgIGFkZE91dHB1dChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAK
aW5kZXggZjY0NzQ2OWUyMzU1ZWIzYTBjMDliM2IwODUyYmZiZWM2ZTQ4ZDI4ZC4uNTFjNjk5MTZm
ZmRlNzBmNWU2ODBhYTkyN2NlZmVmN2NhNzMyYzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFBhbm5lck5v
ZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3Qg
YmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFi
YXNlLgogICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVh
dGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7
CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAy
KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAg
IGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAg
Ly8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3Vu
dCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Blcmlv
ZGljV2F2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5jcHAKaW5kZXggYmIyYTA3ZDIzNTRlYmFmOTRkMDA0NjVhNGI0MWQ4NjA1NTU5OTg2Yi4uZWM5
YTE3YzRmNTZlYjk5NjZkYzE3NjI3ZTkzNDA1YmExZmQ0OGM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgUGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyhjb25zdCBmbG9h
dCogcmVhbERhdGEsIGNvbnN0IGZsb2F0KiBpCiAgICAgICAgIHJlYWxQWzBdID0gMDsKIAogICAg
ICAgICAvLyBDcmVhdGUgdGhlIGJhbmQtbGltaXRlZCB0YWJsZS4KLSAgICAgICAgbV9iYW5kTGlt
aXRlZFRhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVy
aW9kaWNXYXZlU2l6ZSkpOworICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChtYWtl
VW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CiAKICAgICAgICAg
Ly8gQXBwbHkgYW4gaW52ZXJzZSBGRlQgdG8gZ2VuZXJhdGUgdGhlIHRpbWUtZG9tYWluIHRhYmxl
IGRhdGEuCiAgICAgICAgIGZsb2F0KiBkYXRhID0gbV9iYW5kTGltaXRlZFRhYmxlc1tyYW5nZUlu
ZGV4XS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggM2I2MjgxZDFlODQzZWQyOTljZjYxNTNjNzMyNzk3
MDc0MTgwNjc3OC4uODAyMzczNDA3Zjc1ZDQ3ZTI1OWViNjA1NjM4MGY2MzVmMTNhY2VmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlz
ZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5hbHlz
ZXIoKQogICAgICwgbV9taW5EZWNpYmVscyhEZWZhdWx0TWluRGVjaWJlbHMpCiAgICAgLCBtX21h
eERlY2liZWxzKERlZmF1bHRNYXhEZWNpYmVscykKIHsKLSAgICBtX2FuYWx5c2lzRnJhbWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CisgICAgbV9hbmFseXNp
c0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOwogfQogCiBSZWFs
dGltZUFuYWx5c2VyOjp+UmVhbHRpbWVBbmFseXNlcigpID0gZGVmYXVsdDsKQEAgLTgzLDcgKzgz
LDcgQEAgYm9vbCBSZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mZnRTaXplICE9IHNpemUpIHsKLSAgICAg
ICAgbV9hbmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7Cisg
ICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KHNpemUpOwogICAg
ICAgICAvLyBtX21hZ25pdHVkZUJ1ZmZlciBoYXMgc2l6ZSA9IGZmdFNpemUgLyAyIGJlY2F1c2Ug
aXQgY29udGFpbnMgZmxvYXRzIHJlZHVjZWQgZnJvbSBjb21wbGV4IHZhbHVlcyBpbiBtX2FuYWx5
c2lzRnJhbWUuCiAgICAgICAgIG1fbWFnbml0dWRlQnVmZmVyLmFsbG9jYXRlKHNpemUgLyAyKTsK
ICAgICAgICAgbV9mZnRTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGQ1OWRlY2Y5OTUx
NmY2ZDAxYWY5YzFkOWZkYmYxZDBiMTAxOWU0MGYuLmQ1YjNhZmJmMjcxMDE0NTE0OTRiMTg5Mzc3
NjhiNjA1ZjZhM2I0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNjgsOCArNjgsOCBAQCBTY3JpcHRQ
cm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZQogICAgIEFTU0VSVChudW1iZXJPZklucHV0Q2hhbm5lbHMgPD0gQXVk
aW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwogCiAgICAgc2V0Tm9kZVR5cGUoTm9k
ZVR5cGVKYXZhU2NyaXB0KTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAg
aW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNDEwZDFkYWY1Yzg5NTQwMDlmZjA2
MzZhODI5MDBiZjk0YWY0ZjhmMS4uZjNkMjEyMmRmNTFjNGYxYTI5MjI0ZTY5M2FiNDk1YmJjMmI5
MzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJEU1BLZXJuZWwuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBXYXZlU2hhcGVy
RFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAogICAgIGlmICghbV90ZW1wQnVmZmVyKSB7Ci0gICAgICAgIG1fdGVtcEJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVt
ICogMik7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwotICAgICAgICBtX3VwU2FtcGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKLSAgICAgICAgbV9k
b3duU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50
dW0gKiAyKTsKLSAgICAgICAgbV91cFNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNhbXBs
ZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBzdGQ6
Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CisgICAgICAg
IG1fdGVtcEJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFu
dHVtICogMik7CisgICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAgICBtX3VwU2FtcGxlciA9IG1ha2VV
bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKKyAgICAgICAgbV9kb3duU2FtcGxl
ciA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAg
ICAgbV91cFNhbXBsZXIyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0g
KiAyKTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihS
ZW5kZXJpbmdRdWFudHVtICogNCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDg0ODY5OTNmMjEwODRj
Y2M2MWNjZDgwYjJjMTg3ZTA4YzE1NWZkMDEuLjZlN2U4ZGQxYzljMTlmYTNjODVlM2Q5ZDg1NWFi
OWY0NTc4NWI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFdhdmVTaGFwZXJOb2RlOjpXYXZl
U2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsKICAgICBzZXROb2RlVHlw
ZShOb2RlVHlwZVdhdmVTaGFwZXIpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1
ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CisgICAgbV9w
cm9jZXNzb3IgPSBtYWtlVW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2FtcGxl
UmF0ZSgpLCAxKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4IDI4
OWMzOWY1ZjNmOWY3YTc5ZTlhNWI2YTZkODMxNWI1OTFmNDMyZGEuLmJmZTVlMGU0N2ZiODRhMjhj
NjNjNmUyOGIzMmUwZmMxMWU1YzY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtNDYsNyArNDYsNyBA
QCBXYXZlU2hhcGVyUHJvY2Vzc29yOjp+V2F2ZVNoYXBlclByb2Nlc3NvcigpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVs
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlzKTsK
IH0KIAogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1
cnZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmgKaW5kZXggYjFjNDlkYjUyM2I5MzZiMGE0ZWMyMjEwNDFi
NzdkYTdjYzE0NzhmZC4uMjBkNjA2OTcyNDI4OTczNzc5ODJiODRlZTczZDRkYTYzNGVkOGZjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5oCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnM7CiB1c2luZyBDcmVkZW50aWFsUHJvbWlzZSA9IERPTVBy
b21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8QmFzaWNDcmVkZW50aWFsPj4+
OwogCiBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yKHN0ZDo6dW5pcXVlX3B0cjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGll
bnQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvSGlkTWVzc2FnZS5jcHAKaW5kZXggOGMzZDEzNDZjNDAzMGNmYjNkODI3NzM3YTBhMTVm
M2YxY2I5YmFkNy4uMWI5MTJkOThkOWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQyZmFmMzU3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNz
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hp
ZE1lc3NhZ2UuY3BwCkBAIC0xNTAsOSArMTUwLDkgQEAgRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRN
ZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwgY28K
ICAgICB1aW50OF90IHNlcXVlbmNlID0gMDsKIAogICAgIHNpemVfdCBwb3MgPSBkYXRhLnNpemUo
KSA+IGtIaWRJbml0UGFja2V0RGF0YVNpemUgPyBrSGlkSW5pdFBhY2tldERhdGFTaXplIDogZGF0
YS5zaXplKCk7Ci0gICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJ
bml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBkYXRh
LnNpemUoKSkpOworICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBh
Y2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5zaXpl
KCkpKTsKICAgICBmb3IgKDsgcG9zIDwgZGF0YS5zaXplKCk7IHBvcyArPSBrSGlkQ29udGludWF0
aW9uUGFja2V0RGF0YVNpemUpCi0gICAgICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdl
dENvbnRpbnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOworICAgICAgICBtX3BhY2tldHMu
YXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBz
ZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKIH0KIAog
Rmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5p
dFBhY2tldD4gaW5pdFBhY2tldCwgc2l6ZV90IHJlbWFpbmluZ1NpemUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKaW5k
ZXggNTViN2IyZDcxNTM2YTIzNTQ5MTNhZTM2ZTlmYjkxZWYwMGE4ZjA4My4uMjZiODBhYThhNWYx
Mzk2M2M3NjhlN2U5MjNiYmFhYjJiODdiNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNzAsNyArNzAs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFja2V0
OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoYwogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1aW50
OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBkYXRh
U2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4o
Y2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RG
TW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCiAvLyBVMkYgSW5pdGlhbGl6YXRpb24gcGFj
a2V0IGlzIGRlZmluZWQgYXM6CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZp
ZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0
ZUZyb20KICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFwcGVu
ZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1
ZW5jZSwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRp
bnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9CiAK
IC8vIFUyRiBDb250aW51YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDAyMTQ1ZDBjYzJl
OGM5ZWFkYjBjODgyOTQxYjg1OWZjMGFlODA1MmQuLjViNjRhMDg3NDZhZjgwODBjZDJlNzI1MDNm
YTAwZDNjOTQ5ZmIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0
YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2Up
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gcmVzdWx0OwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlx
dWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5j
aHJvbml6ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9w
ZW5UYXNrPigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVz
dWx0KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwog
ICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApAQCAtMjczLDcgKzI3
Myw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFz
ZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOworICAgIHRocmVhZC5zY2hlZHVsZUlt
bWVkaWF0ZVRhc2sobWFrZVVuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9u
aXplcikpOwogCiAgICAgLy8gRklYTUU6IGlPUyBkZXBlbmRzIG9uIHRoaXMgZnVuY3Rpb24gYmxv
Y2tpbmcgdW50aWwgdGhlIGRhdGFiYXNlIGlzIGNsb3NlZCBhcyBwYXJ0CiAgICAgLy8gb2YgY2xv
c2luZyBhbGwgb3BlbiBkYXRhYmFzZXMgZnJvbSBhIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGlyYXRp
b24gaGFuZGxlci4KQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRy
YW5zYWN0aW9uKCkKICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7CiAKICAgICBh
dXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwotICAgIGF1
dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1v
dmUodHJhbnNhY3Rpb24pKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVHJh
bnNhY3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0cmFuc2FjdGlvbiAl
cFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAgICAgZGF0YWJhc2VUaHJl
YWQoKS5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC01NDEsNyArNTQxLDcgQEAg
dm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewogICAgIGF1dG8mIHRocmVhZCA9IGRhdGFiYXNlVGhyZWFkKCk7CiAKLSAg
ICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPigm
dHJhbnNhY3Rpb24pOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2Fj
dGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5n
IERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwg
dGFzay5nZXQoKSk7CiAgICAgdGhyZWFkLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsKIH0K
QEAgLTc2Myw3ICs3NjMsNyBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygp
CiAgICAgaWYgKHRocmVhZC50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKKyAg
ICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBz
eW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhX
VEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAKaW5kZXggM2JhYmQ0OTU2NmYxNGExYjNjMGQzYjE3YmY0YzdmMzJjNWUzZDVm
Ny4uZDY0OTdjMzk3ZmE0NzQyODU5ZTA1ODYyMjM2ZWRlZTQzZDRlZjM5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VUaHJlYWQ6
OkRhdGFiYXNlVGhyZWFkKCkKLSAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihzdGQ6Om1h
a2VfdW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCisgICAgOiBtX3RyYW5zYWN0
aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQog
ewogICAgIG1fc2VsZlJlZiA9IHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDhkZGNjNTk4NTUx
NTc2ZDJhMmMxMGY0MmU0YWQxMmE4MjU5YjUxOS4uYzI4YTk2ZjQ1ODM5ZWY1NGRhZjFmOTlhMWFk
NThkN2VjZDRhNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgRGF0
YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIExv
Y2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKIAog
ICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCi0gICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKKyAgICAgICAgbV9vcGVuRGF0
YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0byBv
cmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCkBAIC05NTYsNyArOTU2LDcgQEAg
dm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6ZW5z
dXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdpbiBl
dmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nQ3JlYXRlZC5nZXQob3JpZ2lu
KTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25lZFNl
dCA9IG1ha2VVbmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFtZVNl
dCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nQ3JlYXRlZC5hZGQob3JpZ2luLmlz
b2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAgfQpAQCAtMTAwMiw3ICsxMDAy
LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1h
cDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9y
aWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5nZXQo
b3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVkU2V0
ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVTZXQgPSBvd25l
ZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi5pc29sYXRlZENv
cHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCmluZGV4IDg1ZjFiNjM1YzNlNDliM2Zl
MWE4MWY5NDg3ODI0ODBlMWRlNDhmYjUuLjhhNTRhMzY2N2EwN2FhY2UwM2E5NjBmYjI1NjRmN2Vi
ZGYzYmQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxTdGF0ZW1lbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBTUUxSZXN1bHRTZXQ7CiBjbGFz
cyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ7CiAKIGNsYXNzIFNRTFN0YXRlbWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1FMU3RhdGVtZW50KERhdGFiYXNl
JiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNRTFZhbHVlPiYmLCBSZWZQdHI8U1FMU3RhdGVtZW50
Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiYmLCBpbnQgcGVy
bWlzc2lvbnMpOwogICAgIH5TUUxTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjBkNjk3MzQ3
NzRkYmZiZjMwYmQ4ZjM5Y2U0YzU5NTcyMTRlOTAwYy4uNGNiMDQxZTQ1MmM4MGY1ZjU5YmIyNzIx
ZWFiOGVjMWE4ZjYxODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0
ZW1lbnQsIE9wdGlvbmEKICAgICBlbHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJtaXNz
aW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8gc3Rh
dGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0
YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAgIGF1
dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0
YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOwogCiAgICAg
aWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50LT5zZXREYXRhYmFz
ZURlbGV0ZWRFcnJvcigpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246
Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAgICAgfQogCiAgICAgQVNTRVJUKCFtX3Nx
bGl0ZVRyYW5zYWN0aW9uKTsKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9y
ZWFkT25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRlVHJh
bnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOwogCiAg
ICAgbV9kYXRhYmFzZS0+cmVzZXREZWxldGVzKCk7CiAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZUF1
dGhvcml6ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVy
L05hdmlnYXRvcldlYkRyaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZl
ci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCmluZGV4IDc5YWE1NjE4MWZmZWYzYWIxYTkyYWE1N2Zl
Y2RiNmZiYTU5ZTZmMGIuLjEyOWQ4NmZmY2ZiZDE1N2E4MGIwMTkyZTNiNDk5NzEzM2JlYjc4MDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldl
YkRyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdh
dG9yV2ViRHJpdmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBOYXZpZ2F0b3JXZWJEcml2ZXIqIE5h
dmlnYXRvcldlYkRyaXZlcjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZp
Z2F0b3JXZWJEcml2ZXIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJEcml2
ZXIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFt
ZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOworICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhu
YXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQ
VS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCmlu
ZGV4IDg4YTk3ODA0NGJjMWU3MDg5MzM1NjVkYzYyZDBhMzE0NmIzOGI0MjYuLjM3NmQxNTVjYTli
MmY1ZDJhNGFiMTg1MmM3NzZkOWMxOGYyZTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBOYXZpZ2F0b3JH
UFUqIE5hdmlnYXRvckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZp
Z2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHUFUqPihTdXBwbGVt
ZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgKaW5kZXggMWIzNDI1MDRkNjk1NTA4ZjA4MTZjY2I1NTgyZjViZDlh
YTc2MWE2Yi4uNWY1N2VmMTE3NzUzMWEwYWMzZDk2MGRlYjFkNDM4NzExYTRmMDViZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVy
YXRpb25EZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xh
c3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAKICAg
ICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKICAgICB7Ci0gICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVl
PEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51bWVyYXRpb25N
ZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50
cnk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKaW5kZXggZTky
ZGFhMTZlZjUzYzAxMTE1NDdhOWU4Y2Q3OWEzZTgzNTI3NzFjYi4uZmE4NjU1MWUzOGQyNDkwZmI0
MGE2ZWMyODAwNWE0NzExZWUwMzBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRp
b24uaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGZpbmFsIHsK
IC8vIEZpbmFsIGJlY2F1c2Ugd2UgbWFkZSB0aGUgZGVzdHJ1Y3RvciBub24tdmlydHVhbC4KIHB1
YmxpYzoKICAgICBzdHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFJhcmVEYXRhKFF1YWxpZmllcnMmJiBxdWFsaWZpZXJzQXJn
dW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxTZW1hbnRpYz4mJiBzZW1hbnRpY0FyZ3VtZW50KQogICAg
ICAgICAgICAgOiBxdWFsaWZpZXJzKFdURk1vdmUocXVhbGlmaWVyc0FyZ3VtZW50KSkKICAgICAg
ICAgICAgICwgc2VtYW50aWMoV1RGTW92ZShzZW1hbnRpY0FyZ3VtZW50KSkKQEAgLTY0LDcgKzY1
LDcgQEAgY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbiBmaW5hbCB7CiAgICAgICAgICwgbV9uYW1l
KFdURk1vdmUobmFtZSkpCiAgICAgewogICAgICAgICBpZiAoc2VtYW50aWMgfHwgIXF1YWxpZmll
cnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmFyZURhdGE+KFdURk1vdmUocXVhbGlmaWVycyksIFdURk1vdmUoc2VtYW50aWMpKTsKKyAgICAg
ICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPihXVEZNb3ZlKHF1YWxpZmll
cnMpLCBXVEZNb3ZlKHNlbWFudGljKSk7CiAgICAgfQogCiAgICAgflZhcmlhYmxlRGVjbGFyYXRp
b24oKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcu
aAppbmRleCAwZTMxZmZiZGUwYjE0ODZmNmM2ZjY1ZTIwZWI2MzhhZTg4MWI4N2Y4Li5jYmNjNDg0
YjY4MjUwYzBhYTA5YjU5OTQzYWRjNzllODEwMDkyNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RW50cnlQb2ludFNjYWZmb2xkaW5nLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIE1ldGFs
IHsKIGNsYXNzIFR5cGVOYW1lcjsKIAogY2xhc3MgRW50cnlQb2ludFNjYWZmb2xkaW5nIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbnRyeVBv
aW50U2NhZmZvbGRpbmcoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRl
ci5jcHAKaW5kZXggODI1NDhiOGM2ZWEwYmU1YmJhODJkODk3Nzc2ZDc0NjMyMTBkOThlNi4uNTE5
Yzc4MmJlMmZjNmFmMmFjYWQxZGJiODhmOWFiMWE1ODQ3NjZkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHAKQEAgLTc1Nyw5ICs3NTcsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnlQb2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0
ZUVudAogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAg
ICAgfTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3Mu
dmVydGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywg
bV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRy
eVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5
cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywg
bV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RG
TW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hl
ZFZlcnRleEF0dHJpYnV0ZXMpOwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0
Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwg
bV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hh
ZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNv
dXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9t
YXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5p
dGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdt
ZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFk
ZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
KSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtNzgzLDcgKzc4Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eVBvaW50U2NhZmZvbGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0
ZUVuCiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAg
ICB9OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5z
aGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVFbnRyeVBvaW50
U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1l
ciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNz
LnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGlu
Zz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNo
ZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VN
YXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggMTg1YmEwYjA4
OGE1Y2VkNGM1YjY2MzZmYTk0NDJjMDAzNDBkZDAyYS4uNDBiNjJjMzdkYmUyNTgwZTIzZDU5MGMw
OTFlYmI0MTdjYTliODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjcyLDE5ICsy
NzIsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3Jl
YXRlTmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICBzd2l0Y2ggKHVubmFtZWRUeXBl
LmtpbmQoKSkgewogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5j
ZTogewogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVm
ZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
ZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBl
UmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVm
ZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVS
ZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2Fz
dDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5h
bWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCks
IHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFt
ZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVy
ZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUp
OwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1l
Tm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUu
YWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVJlZmVyZW5j
ZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVy
ZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5
cGU6OktpbmQ6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFT
VDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFy
cmF5VHlwZS5udW1FbGVtZW50cygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlU
eXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51
bUVsZW1lbnRzKCkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggOTAxYzYxMDIwM2VlZmY0NjkwNWE4ZDZhZjM0
NDgwYjk0NDUwNWMwMi4uM2RlYzA2MzAzY2E3OTU2NDljZjg3YTRmNTMwMDc2ZDc3YjhkODkwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwCkBAIC05NzAsMTQgKzk3MCwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKIAogdm9pZCBDaGVja2Vy
Ojphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNU
OjpVbm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90
YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlw
ZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RG
TW92ZSh1bm5hbWVkVHlwZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQo
JmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlw
ZSkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkp
OwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlv
bikpOwogfQogCiB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJlc29sdmFibGVUeXBlUmVm
ZXJlbmNlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZh
bHVlKCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9u
LCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNz
aW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZl
cmVuY2UpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90
YXRpb24pKTsKIH0KQEAgLTk4NSwxMCArOTg1LDEwIEBAIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlw
ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVy
CiB2b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwg
UmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5u
b3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewogICAgIHJlc29sdmluZ1R5cGUudmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1h
a2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29s
dmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90
eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihy
ZXN1bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFk
ZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigp
KSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CiAgICAgfSkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0
eXBlQW5ub3RhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IDAxNjExNGE2MTBlMTEwMGVmZTY5NzJjYTJhMjM1
MzI3YzE1MmU3YWIuLjVlNDlmMDNhM2IzODI2ZDFmZTdjYjNhNTU4Nzk2NzY2NTc2OWZiY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5jcHAKQEAgLTc0MCwxOSArNzQwLDE5IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGljKCkg
LT4gRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KICAgICBz
d2l0Y2ggKHRva2VuLT50eXBlKSB7CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7
CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0
dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9
OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJl
c3VsdCkpIH07CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlNwZWNpYWxpemVkOiAgewog
ICAgICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0g
ICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgq
cmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihX
VEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpSZWdpc3Rl
cjogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFudGljKTsKLSAgICAgICAg
cmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQp
KSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUo
KnJlc3VsdCkpIH07CiAgICAgfQogICAgIGRlZmF1bHQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3Vs
dCwgQnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtl
VW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UmVzb2x2aW5nVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xSZXNvbHZpbmdUeXBlLmgKaW5kZXggNTU5Y2U4YmE5M2IyOWQ1MTdmYTc3M2Y2YTVmNTI3ZGRm
NGE4NWIwMS4uNDU3MDBjZWQ4ZmQzNDQ5YzRkYTQ5NTlmNzFhNDAyYWEwMmQ2ZTQzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNv
bHZpbmdUeXBlLmgKQEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgUmVzb2x2YWJsZVR5cGVSZWZlcmVu
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4gewogLy8gSXQg
ZXhpc3RzIHNvIHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBk
b2VzIHRoZSByaWdodCB0aGluZy4KIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk4MTU4IFRoaXMgd3JhcHBlciBtaWdodCBub3QgYmUgbmVjZXNzYXJ5
LgogY2xhc3MgUmVzb2x2aW5nVHlwZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVzb2x2aW5nVHlwZSgpCiAgICAgICAgIDogbV9pbm5lcihSZWZQdHI8UmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2U+KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAppbmRleCBiZjkwZjZjMzYwNTQ4ZDUyYzhm
ZDhlZWVjNzUzYzc4ZDhmYTliZjFjLi5kOTUyMjMwNWFkYTFlZTk3MWYxNjUyOGRlMDY2MDRiYjZh
OTZiMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJO
YXZpZ2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtl
ck5hdmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgV29ya2VyTmF2aWdhdG9yR1BVKiBX
b3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20oV29ya2VyTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAg
ICAgV29ya2VyTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8V29ya2VyTmF2
aWdhdG9yR1BVKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwg
c3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsK
KyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JH
UFU+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAg
ICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBs
ZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwCmluZGV4IGVkNWEzY2M4MzRmZTE5ZDQ4ODhiODU1NTA0YmExNTVkNDgz
ZmM0MDcuLmMxYmFjODZkM2FiMmIwZDkxM2ZjZTc0MjE0MzFhOTQ0NTllZWQyZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmNsZWFyQ2xpZW50KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZENvbm5lY3QoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkQ29ubmVjdCgpOwogICAgIH0pKTsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiAKIHZv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRD
b3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFw
cGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgIH0p
KTsKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZQogCiB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYmluYXJ5RGF0YSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RGTW92ZShi
aW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBiaW5hcnlEYXRhID0gV1RG
TW92ZShiaW5hcnlEYXRhKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5h
cnlEYXRhKFdURk1vdmUoYmluYXJ5RGF0YSkpOwogICAgIH0pKTsKQEAgLTE4Niw3ICsxODYsNyBA
QCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZUJpbmFyeURhdGEoVmVjdG9yPHVpbnQ4XwogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYnVmZmVy
ZWRBbW91bnQpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewor
ICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVk
QW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50
KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVk
QW1vdW50KTsKICAgICB9KSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2ln
bmVkIGIKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Cisg
ICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKICAgICB9KSk7CkBAIC0yMDgsNyAr
MjA4LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0
dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNo
YWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVu
aXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFr
ZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHkoKV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9z
aW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uKTsKICAgICAgICAgfSkpOwpAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRDbG9zZSh1bnNpZ25lZCB1bmhhbmRsZWRCdWZmZXJlCiAKIHZvaWQgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkK
IHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQo
bWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdl
RXJyb3IoKTsKICAgICB9KSk7CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogCiB2
b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBncmFkZVVS
TCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGdyYWRlVVJM
KCk7CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDYwNzE0NDA5MjRmYjJjZTY3ZjUzNDA2MmQ3
OWU4ZTNiMDRlZTFjNTAuLmEwN2E4NzYzYWZiOTY5YjQyMDcwYmM0OWE4NjIzOWI3ODNkNmViYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVj
dFN0YXR1cyBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgcmVxdWVzdGVkVVIK
ICAgICBtX2FsbG93Q29va2llcyA9IHZhbGlkYXRlZFVSTC0+YXJlQ29va2llc0FsbG93ZWQ7CiAg
ICAgU3RyaW5nIHVzZXJBZ2VudCA9IG1fZG9jdW1lbnQtPnVzZXJBZ2VudChtX2RvY3VtZW50LT51
cmwoKSk7CiAgICAgU3RyaW5nIGNsaWVudE9yaWdpbiA9IG1fZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCkudG9TdHJpbmcoKTsKLSAgICBtX2hhbmRzaGFrZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
U29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwg
Y2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CisgICAgbV9oYW5kc2hha2UgPSBtYWtlVW5p
cXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2Vy
QWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwogICAgIG1faGFuZHNoYWtlLT5y
ZXNldCgpOwogICAgIGlmIChtX2RlZmxhdGVGcmFtZXIuY2FuRGVmbGF0ZSgpKQogICAgICAgICBt
X2hhbmRzaGFrZS0+YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKG1fZGVmbGF0ZUZyYW1lci5jcmVhdGVF
eHRlbnNpb25Qcm9jZXNzb3IoKSk7CkBAIC03MDMsNyArNzAzLDcgQEAgYm9vbCBXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzRnJhbWUoKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4
dEZyYW1lKGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0Zy
YW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1h
a2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IFdlYlNvY2tldEZy
YW1lOjpPcENvZGVUZXh0OwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVT
dHJpbmc7CiAgICAgZnJhbWUtPnN0cmluZ0RhdGEgPSBzdHJpbmc7CkBAIC03MTMsNyArNzEzLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IENTdHJpbmcm
IHN0cmluZykKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdG
cmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVk
RnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAg
ICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVk
RnJhbWVUeXBlVmVjdG9yOwogICAgIGZyYW1lLT52ZWN0b3JEYXRhLnJlc2l6ZShkYXRhTGVuZ3Ro
KTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhcgogdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BD
b2RlLCBCbG9iJiBibG9iKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1
cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtl
X3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1
ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5mcmFt
ZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVCbG9iOwogICAgIGZyYW1lLT5ibG9iRGF0YSA9ICZibG9i
OwpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdv
aW5nRnJhbWVRdWV1ZSgpCiAgICAgICAgICAgICAgICAgcmVmKCk7IC8vIFdpbGwgYmUgZGVyZWZl
ZCBhZnRlciBkaWRGaW5pc2hMb2FkaW5nKCkgb3IgZGlkRmFpbCgpLgogICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9ibG9iTG9hZGVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmJs
b2JEYXRhKTsKLSAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbGVSZWFkZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0
aGlzKTsKKyAgICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFk
ZXJMb2FkZXI+KEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVyLCB0aGlzKTsKICAg
ICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKICAg
ICAgICAgICAgICAgICBtX2Jsb2JMb2FkZXItPnN0YXJ0KG1fZG9jdW1lbnQuZ2V0KCksICpmcmFt
ZS0+YmxvYkRhdGEpOwogICAgICAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnByZXBl
bmQoV1RGTW92ZShmcmFtZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCmluZGV4IGYyZmE2MjA5
YzA0OGY1MTUxOGEyNWVlYzEzYWVmMjU2NGM5ZjRlN2IuLmVlMzNlYTBmZTVjZjFkNWJmNzlhMmRh
MDY3MDdiNzNjZDNhNzhjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTE1NSw3ICsx
NTUsNyBAQCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyKCkK
IAogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gV2ViU29ja2V0
RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWU+KHRoaXMpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhp
cyk7CiB9CiAKIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0
CkBAIC0xNzAsOCArMTcwLDggQEAgYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZs
YXRlKCkgY29uc3QKICNpZiBVU0UoWkxJQikKIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
ZW5hYmxlRGVmbGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvbnRleHRU
YWtlT3Zlck1vZGUgbW9kZSkKIHsKLSAgICBtX2RlZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJTb2NrZXREZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7Ci0gICAgbV9pbmZsYXRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0SW5mbGF0ZXI+KCk7CisgICAgbV9kZWZsYXRlciA9IG1h
a2VVbmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOworICAgIG1faW5m
bGF0ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOwogICAgIGlmICghbV9kZWZs
YXRlci0+aW5pdGlhbGl6ZSgpIHx8ICFtX2luZmxhdGVyLT5pbml0aWFsaXplKCkpIHsKICAgICAg
ICAgbV9kZWZsYXRlciA9IG51bGxwdHI7CiAgICAgICAgIG1faW5mbGF0ZXIgPSBudWxscHRyOwpA
QCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZW5hYmxlRGVm
bGF0ZShpbnQgd2luZG93Qml0cywgV2ViU29ja2V0RGVmbGF0ZXI6OkNvCiBzdGQ6OnVuaXF1ZV9w
dHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7CiAjaWYgVVNFKFpMSUIpCi0gICAgYXV0byByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAgICBpZiAo
IWVuYWJsZWQoKSB8fCAhV2ViU29ja2V0RnJhbWU6OmlzTm9uQ29udHJvbE9wQ29kZShmcmFtZS5v
cENvZGUpIHx8ICFmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIGlmICghbV9kZWZsYXRlci0+YWRkQnl0ZXMoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9h
ZExlbmd0aCkgfHwgIW1fZGVmbGF0ZXItPmZpbmlzaCgpKSB7CkBAIC0xOTYsNyArMTk2LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmRlZmxhdGUoV2ViU29ja2V0RnIKICAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gbV9kZWZs
YXRlci0+c2l6ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogI2VuZGlmCiB9CiAKQEAgLTIxMCw3
ICsyMTAsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OnJlc2V0RGVmbGF0ZUNvbnRl
eHQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5mbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6aW5mbGF0ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOworICAg
IGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICAg
ICBpZiAoIWVuYWJsZWQoKSAmJiBmcmFtZS5jb21wcmVzcykgewogICAgICAgICByZXN1bHQtPmZh
aWwoIkNvbXByZXNzZWQgYml0IG11c3QgYmUgMCBpZiBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJh
bWUgZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAppbmRl
eCAxZDZmMTc4MjJjODA1MjgxYjcwYTQxNjIwZGNkZWU2YWQyYWI4ODljLi40YTQ4NjVmODQ5NGQw
NjEzZWFjMzIxYTU5NGY4YmFlMTk5OTZiYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgV2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERlZmxhdGVyKGludCB3aW5kb3dCaXRz
LCBDb250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHQKIHsKICAgICBBU1NFUlQobV93aW5kb3dCaXRz
ID49IDgpOwogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPD0gMTUpOwotICAgIG1fc3RyZWFtID0g
c3RkOjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5n
ZXQoKSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lk
IFdlYlNvY2tldERlZmxhdGVyOjpyZXNldCgpCiBXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0
SW5mbGF0ZXIoaW50IHdpbmRvd0JpdHMpCiAgICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0cykK
IHsKLSAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9z
dHJlYW0gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAg
ICBtZW1zZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5OTQwNzNlYWE1ZThi
MjMwZDFjOGIwMGMxNmM1OTY0M2U5Nzg0MjY4Li5kYzZmNjYwZmQzODhjZWZmYWYwZWJlZjZlNjYw
ZTZiNjk1YmI2MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dAogCiAgICAgYm9v
bCBzZW50ID0gbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZSh7
CiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLAotICAg
ICAgICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJv
eHksIHBlZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigp
LCBsb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIFtjbGllbnRX
cmFwcGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IG1h
a2VVbmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250
ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
Y29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKGNsaWVudFdy
YXBwZXItPmZhaWxlZFdlYlNvY2tldENoYW5uZWxDcmVhdGlvbigpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSWYgQnJpZGdlOjppbml0aWFsaXplKCkgcXVpdHRlZCBlYXJsaWVyLCB3ZSBuZWVkIHRv
IGtpY2sgbWFpblRocmVhZERlc3Ryb3koKSB0byBkZWxldGUgdGhlIHBlZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCmluZGV4IGQ5N2I1YzJh
ODVhOWQyMzI4Zjk4NDBmNDRkM2QxZTk2MzJjODJkOWUuLjc3NmM0M2FlYzBiOWI1YmRlYWRjM2Rk
ODkxMjZhY2VkNmJhNzUxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
dnIvTmF2aWdhdG9yV2ViVlIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIv
TmF2aWdhdG9yV2ViVlIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIE5hdmlnYXRvcldlYlZSKiBOYXZp
Z2F0b3JXZWJWUjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JX
ZWJWUiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYlZSKj4oU3VwcGxlbWVu
dDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlm
ICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPE5hdmlnYXRvcldlYlZSPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNT
TC5jcHAKaW5kZXggYmMyM2Q1OWNjMzEyMzdiMTQ5N2E3NmFjYzU5ZDNlYWY1ZDJiNTg0MC4uNmNh
NjdmMzkxYTMxZmNkMzg2OTI1NWIyMWYyZmNiN2YzZmJmOWJiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9w
ZW5TU0wuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0SW1w
bCA6IHB1YmxpYyBDcnlwdG9EaWdlc3RDb250ZXh0IHsKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHRJbXBsPigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4oKTsKICAgICB9CiAKICAg
ICBDcnlwdG9EaWdlc3RDb250ZXh0SW1wbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
eXN0ZW0vQ2xvY2tHZW5lcmljLmNwcAppbmRleCAzMTUzMTY4MDgwN2I3MmQ1ZWY5MzgwOTE0ZTdh
ZTI0MGFkOWQwMzk3Li5lNTNlMTk1YjM1ZjQ5OGY3OTUyNTE1MWViYzJhY2ViNWZhZmNkMjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFBBTCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4g
Q2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tHZW5l
cmljPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrR2VuZXJpYz4oKTsKIH0KIAogQ2xv
Y2tHZW5lcmljOjpDbG9ja0dlbmVyaWMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3Rl
bS9tYWMvQ2xvY2tDTS5tbQppbmRleCBjNjg5MzIxNWYwNmIwYzY3NGQ1NDYwODMzYjFhNGQ1MWNj
MzJiNjE0Li45ZTA3MWI3ODE0ZTQ0ZmUwMDQ0MmU2NmM3MjBiMmJmYjMxMzA2OWExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbQpAQCAtMzksNyArMzks
NyBAQCBzdGF0aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDsKIAogc3Rk
Ojp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDbG9ja0NNPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENsb2NrQ00+KCk7
CiB9CiAKIENsb2NrQ006OkNsb2NrQ00oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggY2FjYWI4NTY4Yzg2MTEyZDljZGZlZmMzMDkwMjZh
ZDljODE1MzNlNS4uYjM1ZmMxNTY0MzdmMWNhMDlkNjQyMmJkNTljNzEzM2ZhYzJjNjBhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0x
NTc1LDcgKzE1NzUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogdm9pZCBBWE9iamVjdENhY2hlOjpzdGFydENhY2hpbmdD
b21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKCkKIHsKICAgICBpZiAoIW1f
Y29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSkKLSAgICAgICAgbV9jb21wdXRlZE9iamVjdEF0
dHJpYnV0ZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRl
Q2FjaGU+KCk7CisgICAgICAgIG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IG1ha2VV
bmlxdWU8QVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlPigpOwogfQogCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5kZXggZWRmZGJiMGEwNmZkNmVkYTI1
MDQ4Yjk3MTliOWVmMWJhOWUxMzQ0My4uZTZkZWE5NjExZjliNDg4MGE1YTE5YjlhZDFlMWJkZTcx
YzE4NDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAg
LTc3Nyw3ICs3NzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShE
aWRTZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlOb3RpZnkgc3luYwogICAgICAgICAgICAgLy8g
T3RoZXJ3aXNlLCBpZiBzeW5jaHJvbm91c2x5IG5vdGlmeSBpcyBmYWxzZSwgcXVldWUgYSBtaWNy
b3Rhc2sgdG8gcnVuIGZpbmlzaCBub3RpZmljYXRpb24gc3RlcHMgZm9yIGFuaW1hdGlvbiB1bmxl
c3MgdGhlcmUKICAgICAgICAgICAgIC8vIGlzIGFscmVhZHkgYSBtaWNyb3Rhc2sgcXVldWVkIHRv
IHJ1biB0aG9zZSBzdGVwcyBmb3IgYW5pbWF0aW9uLgogICAgICAgICAgICAgbV9maW5pc2hOb3Rp
ZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSB0cnVlOwotICAgICAgICAgICAgTWljcm90
YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRN
aWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKKyAg
ICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVu
aXF1ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNy
b3Rhc2tQZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fZmluaXNoTm90aWZpY2F0aW9u
U3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGZpbmlz
aE5vdGlmaWNhdGlvblN0ZXBzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01Qcm9taXNlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVBy
b21pc2VQcm94eS5oCmluZGV4IDdkYTQ2YTYxNTA0ZWYyNDgxNWE2OTRkZmJhMTJjMjhiMWVmNGZl
NjYuLjYyMWI4OTA1MWJiNDhkYjAzMDFlYTgwNDdjN2FmZWZmYjY4Y2RlNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCkBAIC02MCw2ICs2MCw3IEBA
IGNsYXNzIERPTVByb21pc2VQcm94eSB7CiAKIHRlbXBsYXRlPD4KIGNsYXNzIERPTVByb21pc2VQ
cm94eTxJRExWb2lkPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgRE9NUHJvbWlzZVByb3h5KCkgPSBkZWZhdWx0OwogICAgIH5ET01Qcm9taXNlUHJveHkoKSA9
IGRlZmF1bHQ7CkBAIC04NCw2ICs4NSw3IEBAIGNsYXNzIERPTVByb21pc2VQcm94eTxJRExWb2lk
PiB7CiAvLyBGb250RmFjZSBhbmQgRm9udEZhY2VTZXQuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExU
eXBlPgogY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjayB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVzb2x2ZUNhbGxiYWNr
ID0gV1RGOjpGdW5jdGlvbjx0eXBlbmFtZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlICgpPjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaAppbmRleCAwY2U0NTk1MGM1
MzkxZjYwNjk2ZmQ0MGQ4OWQ5MjdkYTM4NmE4N2QzLi42Y2VkZDc2NjQ1ZWM0ZjViZjQ2MDkzMmI2
YTZkMTczMzdhZDgxNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9H
Q0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHQ0Nv
bnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEdDQ29udHJvbGxlcik7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0
cm95ZWQ8R0NDb250cm9sbGVyPjsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGRiMGMxZGM3NmY4YTI4OTcwNDVlZTJjZmM5
MTkyM2Q1OGRmMWI2ZjkuLmM1YzQ3MDYxYmZhY2ExZmNhNzI4YmUyN2IwYTJiNGE5ZjBiMzAyNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApA
QCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50
TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyCiAgICAgSlNET01XaW5k
b3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0
KTsKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhp
c09iamVjdCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRo
cmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sg
PSBtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6
bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxi
YWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXggNjI5NWY1ODRjZmU4YTE3MjlkZGY2YjE4
ZDc3NTQ5ZmQ0NGM5YTBiZS4uZGI1ZTc3MzQ5MGJlZGZiZjNlMGMxMGNmMjNkMGEzNmM4YTNiZGE4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1
c3RvbS5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCBFdmVudFRhcmdldCogSlNFdmVudFRhcmdldDo6
dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50
VGFyZ2V0V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3QoVk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1
ZSkKIHsKICAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0V2ZW50VGFyZ2V0
Kj4odm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZl
bnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwg
KnRhcmdldCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5kb3codm0sIHRoaXNW
YWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFw
cGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CiAg
ICAgaWYgKGF1dG8qIHNjb3BlID0gdG9KU1dvcmtlckdsb2JhbFNjb3BlKHZtLCB0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4o
c2NvcGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNF
dmVudFRhcmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBkODMxNjA0Y2JhZWI4N2YwN2QxMmVhZGRh
NGJmMDUzMWE3MGJiNDAyLi45YmQ2NjQ0NjAxNzA1NDk1YTk0ZTdiM2ZhZGYwNDhmM2M3YjA0M2Y3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNj
b3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2UuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNj
b3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVm
PEoKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhp
c09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVE
T01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3Jv
dGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWlj
cm90YXNrUXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IDExNGZmM2M4YTVkZjAzOTAyODNiMWE2N2NlNjA4ZDdmNDI0NmU3YzIuLjM1Y2NkNDk2MzVl
MDYxMTk0ZTk3MjkzZTcxMmY3YWEzNzJjNDliYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzMwMCw3ICszMzAw
LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmUKICAgICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGNvbnRlbnRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXpl
KCkpOworICAgIGF1dG8gY29udGVudHMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNB
cnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CiAKICAgICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZm
ZXIqPiB2aXNpdGVkOwogICAgIGZvciAoc2l6ZV90IGFycmF5QnVmZmVySW5kZXggPSAwOyBhcnJh
eUJ1ZmZlckluZGV4IDwgYXJyYXlCdWZmZXJzLnNpemUoKTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7
CkBAIC0zNDUxLDcgKzM0NTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAjZW5kaWYK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZm
ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9
IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIGF1dG8gY29kZSA9
IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZzdGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywg
YXJyYXlCdWZmZXJzLCBpbWFnZUJpdG1hcHMsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
ICAgICB3YXNtTW9kdWxlcywgCkBAIC0zNDY5LDcgKzM0NjksNyBAQCBFeGNlcHRpb25PcjxSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhl
Y1N0YXRlJgogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2Vy
UG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwgV1RGTW92ZShp
bWFnZUJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICAgICAgICAgICwg
c3RkOjptYWtlX3VuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAgICAg
ICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQogI2VuZGlm
CiAgICAgICAgICAgICAgICAgKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDVjNDY2Mjk0YmVlNTZjMjFiZjBmNjNk
MTViMGY4ZGYwZjI3YTNhMGUuLjRmNGIwY2YzYjdlZWNkZGQwNzg3MDI1NTIwODg5NWU0NWZhMmEw
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKGFycmF5TGVuZ3RoKTsKIAotICAgIGF1dG8g
YXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk+KCk7CisgICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtl
VW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICB3aGlsZSAoYXJyYXlMZW5n
dGgtLSkgewogICAgICAgICB1bnNpZ25lZCBidWZmZXJTaXplOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAppbmRleCAyNDZmNjRhOWY2MzIyYjU4NzBjYmI2ODJl
ZGIyZDRlZGI5NTNlYzdjLi4zYjExMjUyYWU2NGNhZjJlNGZlNzM5ZTMxZWUxMDk5NTRkNTZhNTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnRE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnRE
YXRhLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFs
V29ybGQoVk0qIHZtKQogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gbmV3IEpTVk1D
bGllbnREYXRhKCp2bSk7CiAgICAgdm0tPmNsaWVudERhdGEgPSBjbGllbnREYXRhOyAvLyB+Vk0g
ZGVsZXRlcyB0aGlzIHBvaW50ZXIuCiAgICAgCi0gICAgdm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0
cmFpbnQoc3RkOjptYWtlX3VuaXF1ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVu
dERhdGEpKTsKKyAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChtYWtlVW5pcXVlPERP
TUdDT3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOwogICAgICAgICAKICAgICBj
bGllbnREYXRhLT5tX25vcm1hbFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoKnZtLCB0
cnVlKTsKICAgICB2bS0+bV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJD
b3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDE2YTc2YzQ5NTI5YTRi
Yjg3MWNiNjZjYTNhZDc1YTJkNzZhODA2NTUuLmQyMzk4NTdhYTNiZGRlOWZlYjljYjg3NDBmY2Y1
ZDY0OWUzNTBkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
KTsKICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFBy
b3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVD
bGllbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNj
b3BlKTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudCht
X2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3Bw
CmluZGV4IDI5YzgxODY4MzZlYTA1NDExZThmMWVkNjQxYzA1NzBjZTgxNzY4MTUuLmFhNTZlMmZk
ZTg1NTc3YWNmOWMwNDc0Yzg5ODc3ZjRlMGQ1YzUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2Nf
Y2xhc3MuY3BwCkBAIC04MSw3ICs4MSw3IEBAIE1ldGhvZCogQ0NsYXNzOjptZXRob2ROYW1lZChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAg
Y29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5z
dGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAo
bV9pc2EtPmhhc01ldGhvZCAmJiBtX2lzYS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKSB7Ci0gICAg
ICAgIGF1dG8gbWV0aG9kID0gc3RkOjptYWtlX3VuaXF1ZTxDTWV0aG9kPihpZGVudCk7CisgICAg
ICAgIGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxDTWV0aG9kPihpZGVudCk7CiAgICAgICAgIENN
ZXRob2QqIHJldCA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgbV9tZXRob2RzLnNldChuYW1lLmlt
cGwoKSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTEwMyw3ICsx
MDMsNyBAQCBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3Qg
PSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3Qq
IG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzUHJvcGVydHkgJiYg
bV9pc2EtPmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gZmllbGQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENGaWVsZD4oaWRlbnQpOworICAgICAgICBhdXRvIGZpZWxkID0gbWFr
ZVVuaXF1ZTxDRmllbGQ+KGlkZW50KTsKICAgICAgICAgQ0ZpZWxkKiByZXQgPSBmaWVsZC5nZXQo
KTsKICAgICAgICAgbV9maWVsZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKGZpZWxkKSk7CiAg
ICAgICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNj
L0JyaWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRl
eCBmMmY2MjA4MmE4MDhhMTlmMTBhNWQ5MzVkOTIyYjc3M2MxMjIxYzI4Li4wNGNkZGNkMjRjYWE4
MjljMzJlNTZlYzI3M2FmYmQzNTFmMjU0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJp
ZGdlSlNDLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUm9vdE9iamVjdDsKIGNsYXNzIFJ1bnRp
bWVPYmplY3Q7CiAKIGNsYXNzIEZpZWxkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRl
KiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNldFZhbHVl
VG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCmluZGV4IGI4NmY3NTFh
MGE3MTM4YmUwMDc3NmE3OGNiYzJhNmQ0NWRkMzc1MDIuLmEzZDhkMzJmMjhkZDgwNThhNGFiNDQy
NzM5NTM0NDA3NGYyNmM3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfY2xhc3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFz
cy5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIE1ldGhvZCogT2JqY0NsYXNzOjptZXRob2ROYW1lZChQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSopIGNvbnN0CiAgICAgICAgICAgICAg
ICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvclNlbGVjdG9yOm9iamNN
ZXRob2RTZWxlY3Rvcl07CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVk
TmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyopbWV0aG9kTmFtZS5nZXQoKV0pIHx8ICFz
dHJjbXAob2JqY01ldGhvZFNlbGVjdG9yTmFtZSwgYnVmZmVyLmRhdGEoKSkpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhvZD4odGhpc0Ns
YXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpOworICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9kID0g
bWFrZVVuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxlY3Rvcik7CiAg
ICAgICAgICAgICAgICAgbWV0aG9kUHRyID0gbWV0aG9kLmdldCgpOwogICAgICAgICAgICAgICAg
IG1fbWV0aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZp
ZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBj
b25zCiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFt
ZUZvcktleTpVVEY4S2V5TmFtZV07CiAKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBb
bWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0p
IHx8IFtrZXlOYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgp
XSkgewotICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9i
amNGaWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleU5hbWUpOworICAgICAgICAgICAgICAg
IGF1dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNGaWVsZD4oKF9fYnJpZGdlIENGU3RyaW5n
UmVmKWtleU5hbWUpOwogICAgICAgICAgICAgICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAg
ICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShuZXdG
aWVsZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIwLDcgKzIyMCw3IEBAIEZpZWxk
KiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFu
Y2UqIGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhp
c0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JLZXk6b2JqY0l2YXJOYW1lXTsKIAogICAgICAgICAgICAg
ICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0
cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8ICFzdHJjbXAob2JqY0l2YXJOYW1lLCBqc05hbWUu
ZGF0YSgpKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBu
ZXdGaWVsZCA9IG1ha2VVbmlxdWU8T2JqY0ZpZWxkPihvYmpjSVZhcik7CiAgICAgICAgICAgICAg
ICAgICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fZmll
bGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobmV3RmllbGQpKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KaW5kZXggZTA4YjA0OGUzYjU2ODQyOThjZGVmZDkzZWI5MTg4Mzg5MTU2ZjQzOC4uM2I5M2Ux
ODc4Mzg1NGMyNDQ0NmUxY2ZhNTc1ODQ2NmYwZjBhN2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjY3LDcgKzI2Nyw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRl
KiBleGVjKQogICAgIAogICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRz
OildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xh
c3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2Qoc3RkOjptYWtlX3VuaXF1ZTxPYmpjTWV0aG9kPihv
YmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNj
cmlwdDp3aXRoQXJndW1lbnRzOikpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamNNZXRo
b2Q+IGZhbGxiYWNrTWV0aG9kKG1ha2VVbmlxdWU8T2JqY01ldGhvZD4ob2JqY0NsYXNzLT5pc2Eo
KSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3Vt
ZW50czopKSk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNf
Y2FzdDxPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVjLT5qc0NhbGxlZSgpKS0+cHJvcGVydHlO
YW1lKCk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRl
bnRpZmllci5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0lu
c3RhbmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmls
dGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZp
bHRlcnMuY3BwCmluZGV4IDgzZDQ0ZTA2N2ZiZGY1NDdmNmM4OGI2N2EzNmViNTNmNjkxNDY2ZWUu
LmYxNzFhNTgyMDNmOThhZjE1NTQ3ODBlMDUxOWUwNGExZTUzYTBiZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjpwcmludCgpIGNv
bnN0CiAjZW5kaWYKIAogQ29tYmluZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMoKQot
ICAgIDogbV9wcmVmaXhUcmVlUm9vdChzdGQ6Om1ha2VfdW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+
KCkpCisgICAgOiBtX3ByZWZpeFRyZWVSb290KG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4o
KSkKIHsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgQ29tYmluZWRVUkxGaWx0ZXJzOjph
ZGRQYXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25zdCBWZWN0b3I8VGVybT4mIHBhdHRlCiAg
ICAgICAgIGlmIChuZXh0RW50cnlJbmRleCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAgICAg
bGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+ZWRnZXNbbmV4dEVudHJ5SW5kZXhdLmNo
aWxkLmdldCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5l
ZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIHN0
ZDo6bWFrZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKKyAgICAgICAgICAgIGxhc3RQ
cmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJu
ZWQodGVybSksIG1ha2VVbmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKX0pKTsKICAgICAgICAgICAg
IGxhc3RQcmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmxhc3QoKS5jaGlsZC5nZXQo
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggOGM3ZTNmN2Q3
ZjFlMGQ1NWFhZDg5MzRhYmJhNWFhNzBmYjhmODVjZi4uNzdmZWI2MGM1MGJjOGE0ZjI0YjI3Njk2
YWQxMTBkMWVkYTc0MjgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgc3RydWN0IFJlc291cmNlTG9hZEluZm87CiAvLyAxKSBJdCBzdG9yZXMgdGhlIHJ1bGVzIGZv
ciBlYWNoIGNvbnRlbnQgZXh0ZW5zaW9uLgogLy8gMikgSXQgcHJvdmlkZXMgQVBJcyBmb3IgdGhl
IFdlYkNvcmUgaW50ZXJmYWNlcyB0byB1c2UgdGhvc2UgcnVsZXMgZWZmaWNpZW50bHkuCiBjbGFz
cyBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIC8vIC0gUnVsZSBtYW5hZ2VtZW50IGludGVyZmFjZS4gVGhpcyBjYW4g
YmUgdXNlZCBieSB1cHBlciBsYXllci4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRv
LmNwcAppbmRleCA5NmUyZDYzNGI4OTNiMzk5MzA0YThiMmIyODVlNjFmNGU0NjlkYzBjLi5iMmE5
YTc4MzUyMjc3MjgzZjk1ZDg0OWQwM2IxNTZmY2RjNzIxZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vU3VidGxlQ3J5cHRvLmNwcApAQCAtMTE1LDMxICsxMTUsMzEgQEAgc3RhdGljIEV4Y2VwdGlv
bk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXpl
Q3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkRlY3J5cHQ6CiAgICAgICAgIHN3aXRjaCAo
KmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FFU19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX09B
RVA6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRv
QWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0Fs
Z29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DQkM6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVT
X0NGQjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlw
dG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQg
PSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0NUUjogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0
RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQo
KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBj
b252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHN0YXRlLCB2YWx1
ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4o
cGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6
CkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgc3dp
dGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlJTQVNTQV9QS0NTMV92MV81OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkhNQUM6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQTogewog
ICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0
aG1FY2RzYVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKQEAgLTE2MCwxMyArMTYwLDEzIEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJl
bGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhh
c2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6IHsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihzdGF0
ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQ
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBk
ZWZhdWx0OgpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFt
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMTkxLDcgKzE5MSw3IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNTogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBj
b252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHN0YXRlLCB2
YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUtleUdl
blBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CkBAIC0y
MDMsNyArMjAzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmICho
YXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFz
aElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJ
ZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtl
eUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpBRVNfQ1RSOgpAQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAg
ICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tl
eVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0y
MjMsMTQgKzIyMywxNCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYg
KGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBo
YXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFz
aElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAgICAgICAg
YXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFt
cz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihw
YXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1F
Y0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGRlZmF1bHQ6CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwK
IAogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdv
cml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihzdGF0ZSwgbmV3VmFsdWUpOwogICAgICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxn
b3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6SEtERjogewpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6
ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpQQktERjI6IHsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlw
dG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAg
ICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMjc5LDcgKzI3OSw3
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpJbXBvcnRL
ZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OgotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6UlNBX1BTUzoKQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihwYXJhbXMpOworICAg
ICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBv
cnRQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yOTgsNyArMjk4
LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfR0NNOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkFFU19DRkI6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
QUVTX0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewogICAgICAg
ICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1IbWFj
S2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwpAQCAtMzA3LDE5ICszMDcsMTkgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNF
eGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFz
ZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElk
ZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkVDREg6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVy
dERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQo
KSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkhLREY6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UEJLREYyOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTMyOSw3ICszMjksNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6VW53cmFwS2V5OgogICAgICAgICBzd2l0Y2gg
KCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
QUVTX0tXOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IgfTsKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9B
bAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzogewogICAg
ICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1B
ZXNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwot
ICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNL
ZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzogewpA
QCAtMzU0LDEyICszNTQsMTIgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAg
IGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1z
Lmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNL
ZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOgotICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihw
YXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAg
LTUyMCwxNiArNTIwLDE2IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4gY3Jvc3NUaHJlYWRDb3B5SW1wb3J0UGFyYW1zKGNvCiB7CiAgICAgc3dpdGNo
IChpbXBvcnRQYXJhbXMucGFyYW1ldGVyc0NsYXNzKCkpIHsKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM6OkNsYXNzOjpOb25lOiB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOworICAgICAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKICAgICAg
ICAgcmVzdWx0LT5pZGVudGlmaWVyID0gaW1wb3J0UGFyYW1zLmlkZW50aWZpZXI7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
czo6Q2xhc3M6OkVjS2V5UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobUVjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpIbWFjS2V5UGFyYW1zOgotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
Pihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4o
aW1wb3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1IbWFjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGht
SG1hY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyczo6Q2xhc3M6OlJzYUhhc2hlZEltcG9ydFBhcmFtczoKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihj
cm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFy
YW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRl
eCBkYmNjYzkwMGYzMzc0OGNkMjA2N2Y2MGNiMjkwYzBiZDYwMDY1NTMzLi5hNDJmNTY0ZjgxZmUx
ZjBlYTA5NDQzZDFmMTA1M2MxYzNjZDBjZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0yMTcsMTIgKzIxNywxMiBAQCBjbGFzcyBDU1NDYWxjUHJp
bWl0aXZlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAgICB7
CiAgICAgICAgIHN3aXRjaCAoY2F0ZWdvcnkoKSkgewogICAgICAgICBjYXNlIENhbGN1bGF0aW9u
Q2F0ZWdvcnk6Ok51bWJlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
bGNFeHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5mbG9hdFZhbHVlKCkpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFs
dWUoKSk7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoOgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0
aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNvcmU6
OkZpeGVkKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxl
bmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRh
KSwgV2ViQ29yZTo6Rml4ZWQpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQ
ZXJjZW50OgogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnRMZW5ndGg6
IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVu
Z3RoPihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJj
ZW50Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihtX3ZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8Rml4
ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsK
ICAgICAgICAgfQogICAgICAgICAvLyBPbmx5IHR5cGVzIHRoYXQgY291bGQgYmUgcGFydCBvZiBh
IExlbmd0aCBleHByZXNzaW9uIGNhbiBiZSBjb252ZXJ0ZWQKICAgICAgICAgLy8gdG8gYSBDYWxj
RXhwcmVzc2lvbk5vZGUuIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnROdW1iZXIgbWFrZXMg
bm8gc2Vuc2UgYXMgYSBMZW5ndGguCkBAIC01MjAsNyArNTIwLDcgQEAgY2xhc3MgQ1NTQ2FsY09w
ZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgbm9kZXMudW5jaGVja2VkQXBwZW5k
KFdURk1vdmUobm9kZSkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZN
b3ZlKG5vZGVzKSwgbV9vcGVyYXRvcik7CiAgICAgfQogCiAgICAgZG91YmxlIGRvdWJsZVZhbHVl
KCkgY29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0
U3R5bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0
cy5jcHAKaW5kZXggYzQ0Y2ViYzUxMjBlZDgzMjZkOWExYjJhNjU2YjkzNjdiNmUxOTEyOC4uZTVh
ZThiNzdhNTE0ZjA5YzNiNDk0NDFiNTYyZjVjMmExZWM3NTE2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKQEAgLTE2NywxMSArMTY3LDExIEBAIHZv
aWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgICAg
IHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAg
ICBBU1NFUlQoIWRlZmF1bHRTdHlsZSk7Ci0gICAgICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgICAgIGRlZmF1bHRRdWly
a3NTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAg
ZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKLSAg
ICBkZWZhdWx0UHJpbnRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNl
KCk7CisgICAgZGVmYXVsdFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsK
KyAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7
CiAgICAgbWVkaWFRdWVyeVN0eWxlU2hlZXQgPSAmU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUo
Q1NTUGFyc2VyQ29udGV4dChVQVNoZWV0TW9kZSkpLmxlYWtSZWYoKTsKIAogICAgIC8vIFN0cmlj
dC1tb2RlIHJ1bGVzLgpAQCAtMTkwLDEwICsxOTAsMTAgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVT
aGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIEFTU0VSVCghZGVmYXVsdFN0eWxl
KTsKICAgICBBU1NFUlQoIXNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKIAotICAgIGRlZmF1bHRT
dHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVs
dFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICAvLyBUaGVyZSBh
cmUgbm8gbWVkaWEtc3BlY2lmaWMgcnVsZXMgaW4gdGhlIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgog
ICAgIGRlZmF1bHRQcmludFN0eWxlID0gZGVmYXVsdFN0eWxlOwotICAgIGRlZmF1bHRRdWlya3NT
dHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVs
dFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKIAogICAgIHNp
bXBsZURlZmF1bHRTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHNpbXBsZVVzZXJBZ2VudFN0eWxl
U2hlZXQsIHN0cmxlbihzaW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiAgICAgZGVmYXVsdFN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2
YWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA3NzA5YjVkZWFmYmZlOWY5
YWIxMWFjMDc3YzYxOWQ3OTRkMTY0MmYyLi42NDZjMTRhMTFhYzY0NWI5OTI2MTQ5ZjI5ZTk4MDBj
NGM3MjY3YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTc3LDEwICs3Nywx
MCBAQCB2b2lkIENTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFj
ZSwgQ1NTVmFsdWVMaXN0JiBzcmNMaXN0LCBEbwogICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25s
b2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRh
YmxlQmluYXJ5Rm9udHNFbmFibGVkKCkpOwogICAgICAgICAgICAgaWYgKGFsbG93RG93bmxvYWRp
bmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRvY3VtZW50KSB7CiAgICAgICAgICAg
ICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoZG9jdW1l
bnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJl
ZSkpCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9u
dEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZvbnQpOworICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihm
b250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU0Zv
bnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFj
ZUVsZW1lbnQpOworICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNv
dXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwgZm9udEZhY2VFbGVtZW50
KTsKIAogICAgICAgICBpZiAoc291cmNlKQogICAgICAgICAgICAgZm9udEZhY2UuYWRvcHRTb3Vy
Y2UoV1RGTW92ZShzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCmlu
ZGV4IDA1ZTNhM2Y2ZTIxYmM5MjgxNzg1NTY5YTE0YWE1MGZmNTJlNGEyNzAuLjE4ZTgzNGQ2OTBh
NmViNTEwMWRjOTBjOGRlNWRiNWU3YTFiMGM1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU2V0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmVuc3Vy
ZUxvY2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmIGZhbWlsCiAg
ICAgICAgIGZhbWlseUxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUZvbnRGYW1pbHlWYWx1ZShmYW1pbHlOYW1lKSk7CiAgICAgICAgIGZhY2UtPnNldEZhbWlsaWVz
KGZhbWlseUxpc3QuZ2V0KCkpOwogICAgICAgICBmYWNlLT5zZXRGb250U2VsZWN0aW9uQ2FwYWJp
bGl0aWVzKGl0ZW0pOwotICAgICAgICBmYWNlLT5hZG9wdFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVl
PENTU0ZvbnRGYWNlU291cmNlPihmYWNlLmdldCgpLCBmYW1pbHlOYW1lKSk7CisgICAgICAgIGZh
Y2UtPmFkb3B0U291cmNlKG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCks
IGZhbWlseU5hbWUpKTsKICAgICAgICAgQVNTRVJUKCFmYWNlLT5jb21wdXRlRmFpbHVyZVN0YXRl
KCkpOwogICAgICAgICBmYWNlcy5hcHBlbmQoV1RGTW92ZShmYWNlKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAppbmRleCBkZTZmMzlkM2Y1ZDg3MzFkOTllNWVi
M2M5NjhlMjlhZDFlYWNiZmU2Li5jNmM1YzM5NTQwYTVjNTA1Y2RmNGQ1OWM3NDZjMzkxODVjOWUw
M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcApAQCAtMTQwLDcgKzE0
MCw3IEBAIENTU1J1bGUqIENTU0dyb3VwaW5nUnVsZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29u
c3QKIENTU1J1bGVMaXN0JiBDU1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdy
YXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1bGU+
Pihjb25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0aGlzKSk7CisgICAgICAgIG1fcnVsZUxp
c3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NHcm91cGluZ1J1
bGU+Pihjb25zdF9jYXN0PENTU0dyb3VwaW5nUnVsZSY+KCp0aGlzKSk7CiAgICAgcmV0dXJuICpt
X3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggZmZkZDNkMGFhNjU3ZjI1ZWFmMzFkNTcwYzU4Njhl
ZDUzMDllMmVmZC4uNTU1MWYyYzY5MTdkMDMzMDcyNmFjZGY4MTA5MWE5MWZhYjRlMGI1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMTEw
LDcgKzExMCw3IEBAIEdlbmVyYXRlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNo
ZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUpCiB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUoRmxvYXRTaXplIHNpemUsIEdlbmVyYXRlZEltYWdl
JiBpbWFnZSkKIHsKICAgICBBU1NFUlQoIW1faW1hZ2VzLmNvbnRhaW5zKHNpemUpKTsKLSAgICBt
X2ltYWdlcy5hZGQoc2l6ZSwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4o
KnRoaXMsIHNpemUsIGltYWdlKSk7CisgICAgbV9pbWFnZXMuYWRkKHNpemUsIG1ha2VVbmlxdWU8
Q2FjaGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOwogfQogCiB2b2lkIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoRmxvYXRTaXpl
IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggYzkwOTgz
MmRhMGU1MTkwMjUzNTEzYTM5ODMxOTFhN2MyZjM5MzAwNS4uNmYxZWIzMzg2ZDlmYmM3MmQ0NDM3
ODVkMWQxOWM0ZGQ4YzVjMzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxl
LmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIENTU0tleWZyYW1lUnVsZSogQ1NTS2V5ZnJhbWVzUnVs
ZTo6aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKIENTU1J1bGVMaXN0JiBDU1NLZXlmcmFtZXNS
dWxlOjpjc3NSdWxlcygpCiB7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAg
ICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVs
ZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09N
V3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0tleWZyYW1lc1J1bGU+Pigq
dGhpcyk7CiAgICAgcmV0dXJuICptX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNDgwYTg5ODUyMzdhZGE5MGExMTc4ZTBiMjc5
ZTBlNjY4MDdlMzM0MS4uYzg4ZDFlZGM5M2I3YTZjODNmMjE3N2JhYzc2N2Y5Yjc4MmVlNzU4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFJl
ZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMoKQogICAgIGlmICghY2Fu
QWNjZXNzUnVsZXMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFtX3J1bGVM
aXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMpOworICAgICAgICBtX3J1bGVM
aXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxTdHlsZVNoZWV0Q1NTUnVsZUxpc3Q+KHRoaXMp
OwogICAgIHJldHVybiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmluZGV4IDY1YTJmZGY4ZGZhY2I0ZDdm
NzFkNzYxY2IyMTY2YjFhOTI4NGMwNzAuLjkxNGJkZTRhMmRlOWFhMjEwNmMwMTA2M2I4MDhkOWNh
NGZmZjZkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmts
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBA
IC00NSw3ICs0NSw3IEBAIERPTUNTU1BhaW50V29ya2xldCogRE9NQ1NTUGFpbnRXb3JrbGV0Ojpm
cm9tKERPTUNTU05hbWVzcGFjZSYgY3NzKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0
aWNfY2FzdDxET01DU1NQYWludFdvcmtsZXQqPihTdXBwbGVtZW50PERPTUNTU05hbWVzcGFjZT46
OmZyb20oJmNzcywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUNTU1BhaW50
V29ya2xldD4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxE
T01DU1NQYWludFdvcmtsZXQ+KGNzcyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RG
TW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCmluZGV4IDdlY2Q5M2Q3ZGMzZDQzMmVh
ZjgyYmM5NTZlNjFkNDg5YTUxMDYyNWIuLjBkZjZhYWU5NmYwZTFjNzBiMzc1NTYxNjQ5ZWUzNWQy
OGViNGMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1
c3RvbVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgRE9NQ1NTUmVnaXN0ZXJDdXN0b21Q
cm9wZXJ0eSogRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbShET01DU1NOYW1lc3Bh
Y2UKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eSo+KFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBz
dXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9w
ZXJ0eT4oY3NzKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01D
U1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1
bWVudFJ1bGVTZXRzLmNwcAppbmRleCBkODU5NmZkMWIyNDU5ZGUwN2UxYzg5OWNjMDc5ZmMxOTg1
MTE2NWU5Li44MmI3ZmNjMzBlNTgyNzQ5OTIwMmUyOGI4MzA4NmNmMGZhNDRhYzU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGJvb2wg
RG9jdW1lbnRSdWxlU2V0czo6c19pc0ludmFsaWRhdGluZ1N0eWxlV2l0aFJ1bGVTZXRzIHsgZmFs
c2UgfTsKIERvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50UnVsZVNldHMoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlcikKICAgICA6IG1fc3R5bGVSZXNvbHZlcihzdHlsZVJlc29sdmVyKQogewot
ICAgIG1fYXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9h
dXRob3JTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX2F1dGhvclN0eWxlLT5k
aXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBEb2N1
bWVudFJ1bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCgpIGNv
bnN0CiAKICAgICAvLyBNZWRpYSBxdWVyaWVzIG9uIHVzZXIgYWdlbnQgc2hlZXQgbmVlZCB0byBl
dmFsdWF0ZWQgaW4gZG9jdW1lbnQgY29udGV4dC4gVGhleSBiZWhhdmUgbGlrZSBhdXRob3Igc2hl
ZXRzIGluIHRoaXMgcmVzcGVjdC4KICAgICBhdXRvJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yID0gbV9z
dHlsZVJlc29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3IoKTsKLSAgICBtX3VzZXJBZ2VudE1lZGlh
UXVlcnlTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX3VzZXJBZ2Vu
dE1lZGlhUXVlcnlTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX3VzZXJBZ2Vu
dE1lZGlhUXVlcnlTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKkNTU0RlZmF1bHRTdHlsZVNoZWV0
czo6bWVkaWFRdWVyeVN0eWxlU2hlZXQsIG1lZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVz
b2x2ZXIpOwogCiAgICAgLy8gVmlld3BvcnQgZGVwZW5kZW50IHF1ZXJpZXMgYXJlIGN1cnJlbnRs
eSB0b28gaW5lZmZpY2llbnQgdG8gYWxsb3cgb24gVUEgc2hlZXQuCkBAIC05Niw3ICs5Niw3IEBA
IHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6aW5pdGlhbGl6ZVVzZXJTdHlsZSgpCiB7CiAgICAgYXV0
byYgZXh0ZW5zaW9uU3R5bGVTaGVldHMgPSBtX3N0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5leHRl
bnNpb25TdHlsZVNoZWV0cygpOwogICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0
eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpOwotICAgIGF1dG8gdGVtcFVzZXJTdHls
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBhdXRvIHRlbXBVc2VyU3R5bGUg
PSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHBhZ2VVc2Vy
U2hlZXQgPSBleHRlbnNpb25TdHlsZVNoZWV0cy5wYWdlVXNlclNoZWV0KCkpCiAgICAgICAgIHRl
bXBVc2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHBhZ2VVc2VyU2hlZXQtPmNvbnRlbnRzKCks
IG1lZGlhUXVlcnlFdmFsdWF0b3IsICZtX3N0eWxlUmVzb2x2ZXIpOwogICAgIGNvbGxlY3RSdWxl
c0Zyb21Vc2VyU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5
bGVTaGVldHMoKSwgKnRlbXBVc2VyU3R5bGUsIG1lZGlhUXVlcnlFdmFsdWF0b3IsIG1fc3R5bGVS
ZXNvbHZlcik7CkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxl
U2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8UnVsZUZlYXR1cmU+JiBydWxlcykKICAgICBz
aXplX3Qgc2l6ZSA9IHJ1bGVzLnNpemUoKTsKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIGF1dG8gcnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4o
KTsKKyAgICBhdXRvIHJ1bGVTZXQgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVs
ZXNbaV0ucnVsZSwgcnVsZXNbaV0uc2VsZWN0b3JJbmRleCwgcnVsZXNbaV0uc2VsZWN0b3JMaXN0
SW5kZXgpOwogICAgIHJ1bGVTZXQtPnNocmlua1RvRml0KCk7CkBAIC0xMjgsNyArMTI4LDcgQEAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBtYWtlUnVsZVNldChjb25zdCBWZWN0b3I8
UnVsZUZlYXR1cmU+JiBydWxlcykKIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6cmVzZXRBdXRob3JT
dHlsZSgpCiB7CiAgICAgbV9pc0F1dGhvclN0eWxlRGVmaW5lZCA9IHRydWU7Ci0gICAgbV9hdXRo
b3JTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxl
ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRv
U2hyaW5rVG9GaXQoKTsKIH0KIApAQCAtMTk1LDEyICsxOTUsMTIgQEAgc3RhdGljIFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRv
bVN0cmluZyYKICAgICAgICAgICAgIGF1dG8gYXJyYXlJbmRleCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPigqZmVhdHVyZS5tYXRjaEVsZW1lbnQpOwogICAgICAgICAgICAgYXV0byYgcnVsZVNldCA9
IG1hdGNoRWxlbWVudEFycmF5W2FycmF5SW5kZXhdOwogICAgICAgICAgICAgaWYgKCFydWxlU2V0
KQotICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7
CisgICAgICAgICAgICAgICAgcnVsZVNldCA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICAg
ICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUoZmVhdHVyZS5ydWxlLCBmZWF0dXJlLnNlbGVjdG9ySW5k
ZXgsIGZlYXR1cmUuc2VsZWN0b3JMaXN0SW5kZXgpOwogICAgICAgICAgICAgaWYgKGZlYXR1cmUu
aW52YWxpZGF0aW9uU2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uU2VsZWN0
b3JBcnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3Rvcik7
CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PigpOworICAgICAgICBhdXRvIGlu
dmFsaWRhdGlvblJ1bGVTZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNl
dD4+KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRjaEVsZW1lbnRBcnJh
eS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1hdGNoRWxlbWVudEFycmF5W2ldKQog
ICAgICAgICAgICAgICAgIGludmFsaWRhdGlvblJ1bGVTZXRzLT5hcHBlbmQoeyBzdGF0aWNfY2Fz
dDxNYXRjaEVsZW1lbnQ+KGkpLCBXVEZNb3ZlKG1hdGNoRWxlbWVudEFycmF5W2ldKSwgV1RGTW92
ZShpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2ldKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCmluZGV4IDA1ZDM4NWE1NThjNDhjNDhlZThkYTkwZjZh
MThjYjRlNzVhNmE5NWEuLjA1YjQ1N2ZkNjgyMGM2N2YwZTBmYmU5MzA4N2I4Y2VmMDgyOWViYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcApAQCAtMjkx
LDcgKzI5MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4gRWxl
bWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNlCiAgICAgaWYgKG1fbWF0Y2hlZFJ1
bGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gcnVsZURhdGFW
ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPigpOworICAg
IGF1dG8gcnVsZURhdGFWZWN0b3IgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9y
PigpOwogICAgIHJ1bGVEYXRhVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fbWF0Y2hl
ZFJ1bGVzLnNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBtYXRjaGVkUnVsZSA6IG1fbWF0Y2hlZFJ1
bGVzKQogICAgICAgICBydWxlRGF0YVZlY3Rvci0+dW5jaGVja2VkQXBwZW5kKCptYXRjaGVkUnVs
ZS5ydWxlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCAyMTIyNDVkZWRjYWZmOTU2
YWQ0NDEwN2I5ZWI0NGNiNDEzMjhhYWRiLi5lMWIxYWYyMGZiMTFhZTNkZmVlMTkyY2FjOTJlNjJj
ZGVhNTU3ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5
QnVmZmVyKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgUmVmPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiYm
IGFycmF5QnVmZmVyVmlldykKIHsKLSAgICBhdXRvIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwg
V1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKKyAgICBhdXRvIHNvdXJjZSA9IG1ha2VVbmlxdWU8
Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0ciwg
V1RGTW92ZShhcnJheUJ1ZmZlclZpZXcpKTsKICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZN
b3ZlKHNvdXJjZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggM2IyMGQ0
MTMzMzc1MzNkNmNiM2M1OGNiM2QxMDRmMGYwNGI1ZTYxOS4uZTFlMWQ3MjEyMTFlNmRlMDFhOGE4
NmUwZDQwZDg1Mjg5OTdiMzU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBSZWZQ
dHI8RGVwcmVjYXRlZENTU09NVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
d3JhcEZvckRlcHJlY2F0ZWRDUwogICAgIC8vIFRoZSBtYXAgaXMgaGVyZSB0byBtYWludGFpbiB0
aGUgb2JqZWN0IGlkZW50aXR5IG9mIHRoZSBDU1NWYWx1ZXMgb3ZlciBtdWx0aXBsZSBpbnZvY2F0
aW9ucy4KICAgICAvLyBGSVhNRTogSXQgaXMgbGlrZWx5IHRoYXQgdGhlIGlkZW50aXR5IGlzIG5v
dCBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5IGFuZCB0aGlzIGNvZGUgc2hvdWxkIGJl
IHJlbW92ZWQuCiAgICAgaWYgKCFtX2Nzc29tVmFsdWVXcmFwcGVycykKLSAgICAgICAgbV9jc3Nv
bVZhbHVlV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFr
UHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CisgICAgICAgIG1fY3Nzb21WYWx1ZVdyYXBw
ZXJzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPENTU1ZhbHVlKiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NT
T01WYWx1ZT4+PigpOwogICAgIAogICAgIGF1dG8mIGNsb25lZFZhbHVlID0gbV9jc3NvbVZhbHVl
V3JhcHBlcnMtPmFkZChpbnRlcm5hbFZhbHVlLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVl
PigpKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKGNsb25lZFZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9S
dWxlRmVhdHVyZS5jcHAKaW5kZXggZGZmZGE2ZjUxZGY5NTRkMjA2ZjAzZDBjNzM1NjBkZGEzOTJk
MTQzMC4uNDRlZWIxZDcwMmQyZjlkY2I2YjEyYjU1Mjc4MTU2N2ZkMDBkMmU1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZUZlYXR1cmUuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSdWxlRmVhdHVy
ZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIAogICAgIGZv
ciAoYXV0byYgbmFtZUFuZE1hdGNoIDogc2VsZWN0b3JGZWF0dXJlcy5jbGFzc2VzKSB7CiAgICAg
ICAgIGNsYXNzUnVsZXMuZW5zdXJlKG5hbWVBbmRNYXRjaC5maXJzdCwgW10gewotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAg
IH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwg
cnVsZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBu
YW1lQW5kTWF0Y2guc2Vjb25kKSk7CiAgICAgICAgIGlmIChuYW1lQW5kTWF0Y2guc2Vjb25kID09
IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFk
ZChuYW1lQW5kTWF0Y2guZmlyc3QpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUnVsZUZlYXR1
cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgICAg
IGF1dG8qIHNlbGVjdG9yID0gc2VsZWN0b3JBbmRNYXRjaC5maXJzdDsKICAgICAgICAgYXV0byBt
YXRjaEVsZW1lbnQgPSBzZWxlY3RvckFuZE1hdGNoLnNlY29uZDsKICAgICAgICAgYXR0cmlidXRl
UnVsZXMuZW5zdXJlKHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpLCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBl
bmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCks
IHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG1hdGNoRWxlbWVudCwgc2VsZWN0b3IpKTsK
ICAgICAgICAgaWYgKG1hdGNoRWxlbWVudCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAg
ICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxv
Y2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwpAQCAtMjAxLDE0ICsyMDEsMTQg
QEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBvdGhlcikK
ICAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzLmFwcGVuZFZlY3RvcihvdGhlci51bmNvbW1vbkF0
dHJpYnV0ZVJ1bGVzKTsKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLmNsYXNz
UnVsZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10g
ewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJl
Pj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+
KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBh
aXIudmFsdWUpOwogICAgIH0KICAgICBjbGFzc2VzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIuY2xh
c3Nlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIuY2xhc3Nlc0FmZmVjdGluZ0hvc3QuZW5k
KCkpOwogCiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhlci5hdHRyaWJ1dGVSdWxl
cykgewogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoa2V5VmFsdWVQYWlyLmtleSwgW10g
ewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJl
Pj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+
KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBh
aXIudmFsdWUpOwogICAgIH0KICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5hZGQob3RoZXIu
YXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYmVnaW4oKSwgb3RoZXIuYXR0cmlidXRlc0FmZmVjdGlu
Z0hvc3QuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGZhNmI5MTIwMjEzZWM1NGJi
NjU5MDNjZmFlNjY5YmQ0NjZmYmIwMjcuLjNiYmJiZmViY2EwMDk5NzgyYWYzOTgxZWI4NjczNmNl
NjgwMzZlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lk
IFJ1bGVTZXQ6OmFkZFRvUnVsZVNldChjb25zdCBBdG9tU3RyaW5nJiBrZXksIEF0b21SdWxlTWFw
JiBtYXAsIGNvbnN0IFJ1bGVEYQogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgcnVsZXMgPSBt
YXAuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghcnVsZXMpCi0g
ICAgICAgIHJ1bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlRGF0YVZlY3Rvcj4oKTsKKyAgICAg
ICAgcnVsZXMgPSBtYWtlVW5pcXVlPFJ1bGVEYXRhVmVjdG9yPigpOwogICAgIHJ1bGVzLT5hcHBl
bmQocnVsZURhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKaW5kZXggNjlhZjU1ODE1NjU0YmUzMjBmMWE5ZmQ3MWE3NzY2N2Q5MjkzZmE5Ny4uODg3
NzVhZDdiYThhYTU5MGFkN2JmNzJhMzdkM2I1ZjY1YjVkMmQ0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMzQ4LDkgKzM0OCw5IEBAIGlubGluZSBM
ZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5n
dGgoY29uc3QgTGVuZ3RoCiAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246
IGNhbGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHBy
ZXNzaW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KDIpOwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4
cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3Ro
KSk7Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRp
b24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0
aHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0
aCgxMDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1
ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlx
dWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRv
cjo6U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRl
KFdURk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDdXN0b20uaAppbmRleCA5YTE5MWQxN2RkOGUzZWRjYzFjMTMwYzI2NTkwZTBjYTZm
NGUzNmEzLi5jNWMyYmY1ZDBmNWZjNzkxMGFmZjE2MjU5OTkwYzQzODY2MGMxNDI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC04MTMsNyArODEzLDcgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5j
b2xvckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y29sb3IoKTsKLSAg
ICAgICAgYXV0byBzaGFkb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihJbnRQ
b2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRy
YW5zcGFyZW50KTsKKyAgICAgICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dE
YXRhPihJbnRQb2ludCh4LCB5KSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkg
PT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDog
Q29sb3I6OnRyYW5zcGFyZW50KTsKICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5
VGV4dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNo
YWRvdyhXVEZNb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBs
aXN0IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCkBAIC04Mjks
NyArODI5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxU
ZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2wKIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1
ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkp
IDogbnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KHN0
eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFk
b3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkpIDogbnVs
bHB0cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRl
eHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpA
QCAtODQ0LDcgKzg0NCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2CiAKIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Qm94U2hhZG93KFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFk
b3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IHN0ZDo6bWFrZV91
bmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93
KCkpIDogbnVsbHB0cik7CisgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRCb3hTaGFkb3co
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSA/IG1ha2VVbmlxdWU8U2hh
ZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkpIDogbnVs
bHB0cik7CiB9CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJv
eFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBA
IC0xMzU5LDcgKzEzNTksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAgICAgICBD
U1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJZGVudCgp
OwogICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKICAgICAg
ICAgICAgICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlz
dFN0eWxlSWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAgICAgICAgICAgYXV0byBjb3VudGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVy
KCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOworICAgICAgICAg
ICAgYXV0byBjb3VudGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVl
LT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkp
OwogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50KFdURk1vdmUo
Y291bnRlciksIGRpZFNldCk7CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICB9
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA0Y2Y2YzZm
N2FiN2RmOWZjMDQzMzRiYmU4ZGQwNWEzYjU1OWU5MzVjLi4xOWNiMDMzZDcwYmI1YTg5Njg2NTU3
Mjc1NWI5NmI5NzcwNTFjYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNw
cApAQCAtMTUzMCw3ICsxNTMwLDcgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxl
UHJvcGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCiAgICAgICAgIEFTU0VSVCgh
bV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSk7CiAgICAgICAgIHJldHVybiAqbV9jc3Nv
bVdyYXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKKyAgICBtX2Nzc29tV3JhcHBl
ciA9IG1ha2VVbmlxdWU8UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApAQCAtMTU0MCw3ICsxNTQwLDcgQEAgQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NT
U3R5bGVEZWNsYXJhdGlvbihTdHkKICAgICAgICAgQVNTRVJUKG1fY3Nzb21XcmFwcGVyLT5wYXJl
bnRFbGVtZW50KCkgPT0gJnBhcmVudEVsZW1lbnQpOwogICAgICAgICByZXR1cm4gKm1fY3Nzb21X
cmFwcGVyOwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5s
aW5lQ1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMsIHBhcmVudEVsZW1lbnQpOworICAgIG1fY3Nz
b21XcmFwcGVyID0gbWFrZVVuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywg
cGFyZW50RWxlbWVudCk7CiAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDNhNTJjMzYxOTlhNzlhMjVlMDljMDFkOGZh
MGM1MGFlZmY2ODJiYjUuLmRlNGRhNWY1NTEyOTkwOTMxZGE4NmM1YzdlODNiY2IxMDE4MDhiYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE3MTUsNyArMTcxNSw3IEBA
IFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2Fk
ZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgICAgIGlmIChhdXRob3JSb2xsYmFjaykKICAg
ICAgICAgICAgIHJldHVybiBhdXRob3JSb2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld0F1dGhv
clJvbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24s
IHdyaXRpbmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2sobWFrZVVuaXF1
ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAgICAg
ICAvLyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBVQSBydWxlcyBhbmQg
dXNlciBydWxlcyBidXQgbm8gYXV0aG9yIHJ1bGVzLgogICAgICAgICBuZXdBdXRob3JSb2xsYmFj
ay0+YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0
VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpAQCAtMTczMiw3
ICsxNzMyLDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29s
dmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAgICAgaWYgKHVzZXJSb2xs
YmFjaykKICAgICAgICAgICAgIHJldHVybiB1c2VyUm9sbGJhY2s7CiAKLSAgICAgICAgYXV0byBu
ZXdVc2VyUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVj
dGlvbiwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBuZXdVc2VyUm9sbGJhY2sobWFrZVVu
aXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKIAogICAg
ICAgICAvLyBUaGlzIHNwZWNpYWwgcm9sbGJhY2sgY2FzY2FkZSBjb250YWlucyBvbmx5IFVBIHJ1
bGVzLgogICAgICAgICBuZXdVc2VyUm9sbGJhY2stPmFkZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1
bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxh
c3RVQVJ1bGUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJv
cC5wbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCA5OTdjNGMwMzY3ZGQ1
ZDBkNjQ1ZDVlZGY1MWVlYzRiZmIwYzMyMTA1Li4wMmEzNmVmZTA1ZDNjYzlmZTk3ZGQ1YzBlMjU5
M2FlNzlmZDZjMmM2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC04MTEsNyArODExLDcgQEAg
c3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFsdWVTZXR0ZXIgewogICAkc2V0
dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIkZpbGxMYXllciogcHJldmlvdXNDaGlsZCA9IG51bGxw
dHI7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gImZvciAoYXV0byogcGFyZW50
ID0gJnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+IiAuIGdldExheWVyc0Z1bmN0aW9uKCRu
YW1lKSAuICIoKTsgcGFyZW50ICYmIHBhcmVudC0+IiAuICR0ZXN0RnVuY3Rpb24gLiAiKCk7IHBh
cmVudCA9IHBhcmVudC0+bmV4dCgpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICBpZiAoIWNoaWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
IiAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXll
cj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQobWFrZVVuaXF1
ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CiAgICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hpbGQt
Pm5leHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIH1cbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGNoaWxkLT4iIC4gJHNldHRlciAuICIo
cGFyZW50LT4iIC4gJGdldHRlciAuICIoKSk7XG4iOwpAQCAtODM3LDcgKzgzNyw3IEBAIHN1YiBn
ZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5VmFsdWVTZXR0ZXIgewogICAkc2V0dGVyQ29udGVudCAu
PSAkaW5kZW50IC4gIiAgICAvLyBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5
ZXIsIGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVkLlxuIjsKICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0
Pih2YWx1ZSkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBp
ZiAoIWNoaWxkKSB7XG4iOwotICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAg
ICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIg
LiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CisgICRzZXR0ZXJDb250ZW50IC49
ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVl
PEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBjaGlsZCA9IHByZXZpb3VzQ2hp
bGQtPm5leHQoKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICB9
XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZU1hcCgpLT4iIC4gZ2V0RmlsbExheWVyTWFwZnVuY3Rpb24oJG5hbWUpIC4gIigiIC4g
JENTU1Byb3BlcnR5SWQgLiAiLCAqY2hpbGQsIGl0ZW0pO1xuIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCmluZGV4IDY3Y2ZkZjU2ZDYyNTA1M2EwMTExOTky
ZDcxMWY4YzhmZmRiOTVkYzIuLmQ3NWU0ZmM5MmM3N2IwN2IxZTUzZGFkMzM4N2U1NTFhMzkwYzI1
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcApAQCAt
NzcsNyArNzcsNyBAQCBDU1NQYXJzZXJJbXBsOjpDU1NQYXJzZXJJbXBsKGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc3RyaQogICAgICwgbV9zdHlsZVNoZWV0
KHN0eWxlU2hlZXQpCiAgICAgLCBtX29ic2VydmVyV3JhcHBlcih3cmFwcGVyKQogewotICAgIG1f
dG9rZW5pemVyID0gd3JhcHBlciA/IHN0ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJp
bmcsICp3cmFwcGVyKSA6IHN0ZDo6bWFrZV91bmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOwor
ICAgIG1fdG9rZW5pemVyID0gd3JhcHBlciA/IG1ha2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJp
bmcsICp3cmFwcGVyKSA6IG1ha2VVbmlxdWU8Q1NTVG9rZW5pemVyPihzdHJpbmcpOwogICAgIGlm
IChjb250ZXh0LmRlZmVycmVkQ1NTUGFyc2VyRW5hYmxlZCAmJiAhd3JhcHBlciAmJiBzdHlsZVNo
ZWV0ICYmIHJ1bGVQYXJzaW5nID09IENTU1BhcnNlcjo6UnVsZVBhcnNpbmc6OkRlZmVycmVkKQog
ICAgICAgICBtX2RlZmVycmVkUGFyc2VyID0gQ1NTRGVmZXJyZWRQYXJzZXI6OmNyZWF0ZShjb250
ZXh0LCBzdHJpbmcsICpzdHlsZVNoZWV0KTsKIH0KQEAgLTI4Miw5ICsyODIsOSBAQCBDU1NTZWxl
Y3Rvckxpc3QgQ1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IoQ1NTUGFyc2VyVG9rZW5S
YW5nZSByYW5nZSwgU3R5bAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9y
PiBzZWxlY3RvcjsKICAgICBpZiAoIXR5cGVTZWxlY3Rvci5pc051bGwoKSAmJiBwc2V1ZG8uaXNO
dWxsKCkpCi0gICAgICAgIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxl
Y3Rvcj4oUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQt
PmRlZmF1bHROYW1lc3BhY2UoKSkpOworICAgICAgICBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NT
UGFyc2VyU2VsZWN0b3I+KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBz
dHlsZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKICAgICBlbHNlIHsKLSAgICAgICAgc2Vs
ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBz
ZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIGlmICgh
cHNldWRvLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBzZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4oQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1Nl
bGVjdG9yKHBzZXVkbykpOwogICAgICAgICAgICAgaWYgKCFzZWxlY3RvciB8fCBzZWxlY3Rvci0+
bWF0Y2goKSAhPSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKQpAQCAtNTM1LDcgKzUzNSw3
IEBAIFJlZlB0cjxTdHlsZVJ1bGVOYW1lc3BhY2U+IENTU1BhcnNlckltcGw6OmNvbnN1bWVOYW1l
c3BhY2VSdWxlKENTU1BhcnNlclRva2VuUmFuCiBSZWZQdHI8U3R5bGVSdWxlTWVkaWE+IENTU1Bh
cnNlckltcGw6OmNvbnN1bWVNZWRpYVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBD
U1NQYXJzZXJUb2tlblJhbmdlIGJsb2NrKQogewogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQot
ICAgICAgICByZXR1cm4gU3R5bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpw
YXJzZU1lZGlhUXVlcnlTZXQocHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9jb250
ZXh0KSkucmVsZWFzZU5vbk51bGwoKSwgIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdy
b3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4g
U3R5bGVSdWxlTWVkaWE6OmNyZWF0ZShNZWRpYVF1ZXJ5UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnlT
ZXQocHJlbHVkZSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQobV9jb250ZXh0KSkucmVsZWFzZU5v
bk51bGwoKSwgIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAq
bV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4g
cnVsZXM7CiAKQEAgLTU2Myw3ICs1NjMsNyBAQCBSZWZQdHI8U3R5bGVSdWxlU3VwcG9ydHM+IENT
U1BhcnNlckltcGw6OmNvbnN1bWVTdXBwb3J0c1J1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3IsIGludmFsaWQgQHN1cHBvcnRzIGNv
bmRpdGlvbgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHls
ZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNl
KCksIHN1cHBvcnRlZCwgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlz
dD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVT
dXBwb3J0czo6Y3JlYXRlKHByZWx1ZGUuc2VyaWFsaXplKCkuc3RyaXBXaGl0ZVNwYWNlKCksIHN1
cHBvcnRlZCwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICpt
X2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAg
ICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVs
ZTo6U3VwcG9ydHMsIG1fb2JzZXJ2ZXJXcmFwcGVyLT5zdGFydE9mZnNldChwcmVsdWRlKSk7CkBA
IC02MzUsNyArNjM1LDcgQEAgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gQ1NTUGFyc2VySW1w
bDo6Y29uc3VtZUtleWZyYW1lc1J1bGUoYm9vbCB3ZWJraXRQcmVmaXgKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7IC8vIFBhcnNlIGVycm9yOyBleHBlY3RlZCBpZGVudCB0b2tlbiBpbiBAa2V5ZnJh
bWVzIGhlYWRlcgogCiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBT
dHlsZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVk
U3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAg
cmV0dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUsIG1ha2VVbmlxdWU8RGVmZXJy
ZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAg
aWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKSB7CiAgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNl
cnZlcigpLnN0YXJ0UnVsZUhlYWRlcihTdHlsZVJ1bGU6OktleWZyYW1lcywgbV9vYnNlcnZlcldy
YXBwZXItPnN0YXJ0T2Zmc2V0KHJhbmdlQ29weSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcAppbmRleCA0ZGJlZjQwNThjNzE2MmNkOTY0NmVh
NzY0ZGNiYjliYmNmMzFlNDU5Li5hMDg3MGQzNzYyY2VhNDJmNWI1ZWFiZDA1ZWE3NDRmMmQ5ZDZi
MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9y
LmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3RvcihTdAogICAgIGVsc2UK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVu
aXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcyk7CiAgICAgc2VsZWN0b3ItPm1fc2Vs
ZWN0b3ItPnNldFBhZ2VQc2V1ZG9UeXBlKHBzZXVkb1R5cGUpOwogICAgIHJldHVybiBzZWxlY3Rv
cjsKQEAgLTYzLDcgKzYzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBD
U1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0
b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUpOwogICAgIEF0b21TdHJpbmcgbmFt
ZTsKQEAgLTg0LDEzICs4NCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IoUwogewogICAgIGF1
dG8gcHNldWRvVHlwZSA9IHBhcnNlUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudFN0
cmluZyhwc2V1ZG9UeXBlU3RyaW5nKTsKICAgICBpZiAocHNldWRvVHlwZS5wc2V1ZG9DbGFzcyAh
PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBhdXRv
IHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgc2Vs
ZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CiAg
ICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9DbGFzc1R5cGUocHNldWRvVHlw
ZS5wc2V1ZG9DbGFzcyk7CiAgICAgICAgIHJldHVybiBzZWxlY3RvcjsKICAgICB9CiAgICAgaWYg
KHBzZXVkb1R5cGUuY29tcGF0aWJpbGl0eVBzZXVkb0VsZW1lbnQgIT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0VsZW1lbnRVbmtub3duKSB7Ci0gICAgICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgICAgICBhdXRvIHNlbGVjdG9yID0gbWFr
ZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0
b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKICAgICAgICAgc2VsZWN0
b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0VsZW1lbnRUeXBlKHBzZXVkb1R5cGUuY29tcGF0aWJp
bGl0eVBzZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0VmFs
dWUocHNldWRvVHlwZVN0cmluZy5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKQEAgLTEwMCwx
MiArMTAwLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2Vy
U2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3RvcihTCiB9CiAKIENTU1BhcnNlclNlbGVj
dG9yOjpDU1NQYXJzZXJTZWxlY3RvcigpCi0gICAgOiBtX3NlbGVjdG9yKHN0ZDo6bWFrZV91bmlx
dWU8Q1NTU2VsZWN0b3I+KCkpCisgICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0
b3I+KCkpCiB7CiB9CiAKIENTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcihjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUpKQorICAgIDogbV9zZWxlY3RvcihtYWtlVW5pcXVl
PENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCiB7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBDU1NQ
YXJzZXJTZWxlY3Rvcjo6fkNTU1BhcnNlclNlbGVjdG9yKCkKIAogdm9pZCBDU1NQYXJzZXJTZWxl
Y3Rvcjo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNl
clNlbGVjdG9yPj4mJiBzZWxlY3RvclZlY3RvcikKIHsKLSAgICBtX3NlbGVjdG9yLT5zZXRTZWxl
Y3Rvckxpc3Qoc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0
b3JWZWN0b3IpKSk7CisgICAgbV9zZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0KG1ha2VVbmlxdWU8
Q1NTU2VsZWN0b3JMaXN0PihXVEZNb3ZlKHNlbGVjdG9yVmVjdG9yKSkpOwogfQogCiB2b2lkIENT
U1BhcnNlclNlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8QXRvbVN0cmluZz4+IGFyZ3VtZW50TGlzdCkKQEAgLTIwOSwxMiArMjA5LDEyIEBAIHZvaWQg
Q1NTUGFyc2VyU2VsZWN0b3I6OmFwcGVuZFRhZ0hpc3RvcnkoQ1NTUGFyc2VyU2VsZWN0b3JDb21i
aW5hdG9yIHJlbGF0aW9uLCBzCiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdT
ZWxlY3Rvcihjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVz
cGFjZVJ1bGUpCiB7Ci0gICAgYXV0byBzZWNvbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNl
clNlbGVjdG9yPigpOworICAgIGF1dG8gc2Vjb25kID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxl
Y3Rvcj4oKTsKICAgICBzZWNvbmQtPm1fc2VsZWN0b3IgPSBXVEZNb3ZlKG1fc2VsZWN0b3IpOwog
ICAgIHNlY29uZC0+bV90YWdIaXN0b3J5ID0gV1RGTW92ZShtX3RhZ0hpc3RvcnkpOwogICAgIG1f
dGFnSGlzdG9yeSA9IFdURk1vdmUoc2Vjb25kKTsKIAotICAgIG1fc2VsZWN0b3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsK
KyAgICBtX3NlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lz
Rm9yTmFtZXNwYWNlUnVsZSk7CiAgICAgbV9zZWxlY3Rvci0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0
b3I6OlN1YnNlbGVjdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCA0ODhlNjAyM2YyMDAyNGFmZmVmODYxN2E1MTRjNDA5
YmY0OWQxZWYzLi43MDhlYzc3NzNjMThkNmUwOGUwMDFjYWZhM2QyOGM4MGQ5Zjg3MmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAt
MjQzNSw3ICsyNDM1LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlUGF0aD4gY29uc3Vt
ZUJhc2ljU2hhcGVQYXRoKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MKICAgICBpZiAoYXJncy5w
ZWVrKCkudHlwZSgpICE9IFN0cmluZ1Rva2VuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKLSAgICBhdXRvIGJ5dGVTdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3Ry
ZWFtPigpOworICAgIGF1dG8gYnl0ZVN0cmVhbSA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJl
YW0+KCk7CiAgICAgaWYgKCFidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhhcmdzLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b1N0cmluZygpLCAqYnl0ZVN0cmVh
bSwgVW5hbHRlcmVkUGFyc2luZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAppbmRleCA2
YjNhY2M4NWU2ZmM1ZTVjYmI5NWFiOWZlMWE2YzdjYTllZjgxMDQ3Li5mMzMyM2IyMjZiNGIwMTAw
Yzk4M2M0ODY2Mzc1ZjFlNjU3YjE3Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtNTY0LDcgKzU2NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVQc2V1ZG8o
Q1NTUGFyc2VyVG9rCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3NMYW5nOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQ1NTIFNlbGVjdG9ycyBMZXZlbCA0
IGFsbG93cyA6bGFuZygqLWZvbykKLSAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+KCk7CisgICAgICAgICAgICBhdXRvIGFy
Z3VtZW50TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPEF0b21TdHJpbmc+PigpOwogICAgICAgICAg
ICAgaWYgKCFjb25zdW1lTGFuZ0FyZ3VtZW50TGlzdChhcmd1bWVudExpc3QsIGJsb2NrKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRM
YW5nQXJndW1lbnRMaXN0KFdURk1vdmUoYXJndW1lbnRMaXN0KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAppbmRleCA5ZWI1ZDdlNDlm
NTZhMWU5OGQxZmJiOWIyM2U2ZWE3MmUyMjYxNThmLi44ODExN2YxOWU0YjI2YmEyNWJmZjI1YTg1
NTkxNzMyYmI3YTNlN2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZTo6RWxlbWVudFF1ZXVlJiBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5z
dXJlQmFjawogewogICAgIGlmICghc19wcm9jZXNzaW5nQmFja3VwRWxlbWVudFF1ZXVlKSB7CiAg
ICAgICAgIHNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRRdWV1ZSA9IHRydWU7Ci0gICAgICAgIE1p
Y3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxC
YWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOworICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6
bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8QmFja3VwRWxlbWVudFF1ZXVlTWlj
cm90YXNrPigpKTsKICAgICB9CiAgICAgcmV0dXJuIGJhY2t1cEVsZW1lbnRRdWV1ZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBlNzkzZjIwZDkzMWJmODRjODVmYWI5
YWQyNGY4M2ZlOGE0OGEyZjFkLi5kM2FmNzBmYjhiYTMzNmJmYTYxOGJmOWMxMjU2YjEwN2Q5ZDI1
YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMjkwLDcgKzI5MCw3IEBA
IHZvaWQgRGF0YVRyYW5zZmVyOjpkaWRBZGRGaWxlVG9JdGVtTGlzdCgpCiBEYXRhVHJhbnNmZXJJ
dGVtTGlzdCYgRGF0YVRyYW5zZmVyOjppdGVtcygpCiB7CiAgICAgaWYgKCFtX2l0ZW1MaXN0KQot
ICAgICAgICBtX2l0ZW1MaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtTGlz
dD4oKnRoaXMpOworICAgICAgICBtX2l0ZW1MaXN0ID0gbWFrZVVuaXF1ZTxEYXRhVHJhbnNmZXJJ
dGVtTGlzdD4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pdGVtTGlzdDsKIH0KIApAQCAtNDE2LDcg
KzQxNiw3IEBAIGJvb2wgRGF0YVRyYW5zZmVyOjpoYXNTdHJpbmdPZlR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvcklucHV0
RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHBsYWluVGV4dCwg
Y29uc3QgU3RyaW5nJiBodG1sVGV4dCkKIHsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFr
ZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluIl9zLCBwbGFpblRleHQpOwogICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5n
KCJ0ZXh0L2h0bWwiX3MsIGh0bWxUZXh0KTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
VHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2Fy
ZCksIFR5cGU6OklucHV0RXZlbnQpKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBSZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogCiBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2
ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0
ZSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpLCBUeXBlOjpEcmFnQW5kRHJv
cERhdGEpKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5z
ZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0
ZWJvYXJkPigpLCBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKICAgICBkYXRhVHJhbnNmZXItPm1f
b3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJk
KCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lk
IERhdGFUcmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGludCB4LCBpbnQg
eSkKICAgICBtX2RyYWdJbWFnZSA9IGltYWdlOwogICAgIGlmIChtX2RyYWdJbWFnZSkgewogICAg
ICAgICBpZiAoIW1fZHJhZ0ltYWdlTG9hZGVyKQotICAgICAgICAgICAgbV9kcmFnSW1hZ2VMb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYWdJbWFnZUxvYWRlcj4odGhpcyk7CisgICAgICAgICAg
ICBtX2RyYWdJbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsK
ICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXItPnN0YXJ0TG9hZGluZyhtX2RyYWdJbWFnZSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IDMzNjIyMzEwODFiMTNmNzJkYzE4ZGFjNWYzOTA3YTVlN2MxN2IwYmYu
LmYyMTEzMWZmODI3ODIxZGM3NGU4NTBhOThmMWJiMjMwOTllMDI3MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDAs
NyArMTAwLDcgQEAgYm9vbCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmlzQWN0aXZlQXQo
UGFnZSogcGFnZSkKIAogdm9pZCBwcm92aWRlRGV2aWNlT3JpZW50YXRpb25UbyhQYWdlJiBwYWdl
LCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewotICAgIERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyPihjbGllbnQpKTsKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnBy
b3ZpZGVUbygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFt
ZSgpLCBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGUy
YjE0NGQ1NjdkNzk2NjJlOThmNzRiYzUxZTkyNDExNmNjNmQ1NmYuLmViMGI5NzQ1NTVhZDI1Mzky
ZTgwNjY1YTZjZDExNTE5MjZmZTdmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTIx
LDE5ICs1MjEsMTkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fcXVpcmtzKG1h
a2VVbmlxdWVSZWY8UXVpcmtzPigqdGhpcykpCiAgICAgLCBtX2NhY2hlZFJlc291cmNlTG9hZGVy
KG1fZnJhbWUgPyBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+KG1fZnJhbWUtPmxvYWRlcigpLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkpIDogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShudWxscHRyKSkKICAgICAsIG1fZG9tVHJlZVZlcnNpb24oKytz
X2dsb2JhbFRyZWVWZXJzaW9uKQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8
U3R5bGU6OlNjb3BlPigqdGhpcykpCi0gICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRzKHN0ZDo6
bWFrZV91bmlxdWU8RXh0ZW5zaW9uU3R5bGVTaGVldHM+KCp0aGlzKSkKLSAgICAsIG1fdmlzaXRl
ZExpbmtTdGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFZpc2l0ZWRMaW5rU3RhdGU+KCp0aGlzKSkKLSAg
ICAsIG1fbWFya2VycyhzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50TWFya2VyQ29udHJvbGxlcj4o
KnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhp
cykpCisgICAgLCBtX2V4dGVuc2lvblN0eWxlU2hlZXRzKG1ha2VVbmlxdWU8RXh0ZW5zaW9uU3R5
bGVTaGVldHM+KCp0aGlzKSkKKyAgICAsIG1fdmlzaXRlZExpbmtTdGF0ZShtYWtlVW5pcXVlPFZp
c2l0ZWRMaW5rU3RhdGU+KCp0aGlzKSkKKyAgICAsIG1fbWFya2VycyhtYWtlVW5pcXVlPERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV9zdHlsZVJlY2FsY1RpbWVyKFt0
aGlzXSB7IHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsgfSkKICAgICAsIG1fZG9jdW1lbnRDcmVhdGlv
blRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1h
a2VfdW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQotICAgICwgbV9tb2R1bGVMb2FkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0
UnVubmVyKG1ha2VVbmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCisgICAgLCBtX21vZHVsZUxv
YWRlcihtYWtlVW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShY
U0xUKQogICAgICwgbV9hcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXIoKnRoaXMsICZEb2N1
bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAs
IG1feG1sVmVyc2lvbigiMS4wIl9zKQotICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKHN0ZDo6
bWFrZV91bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQorICAgICwgbV9jb25zdGFu
dFByb3BlcnR5TWFwKG1ha2VVbmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAg
ICwgbV9kb2N1bWVudENsYXNzZXMoZG9jdW1lbnRDbGFzc2VzKQogICAgICwgbV9ldmVudFF1ZXVl
KCp0aGlzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTU0NSwxMCArNTQ1LDEwIEBA
IERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25l
ZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnCiAjZW5kaWYKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlU
aW1lcigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICAsIG1f
ZGV2aWNlTW90aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9T
PigpKQotICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8RGV2
aWNlTW90aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlTW90aW9uQ2xpZW50KSkKLSAgICAsIG1fZGV2
aWNlT3JpZW50YXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNs
aWVudElPUz4oKSkKLSAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKHN0ZDo6bWFr
ZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPigqbV9kZXZpY2VPcmllbnRhdGlv
bkNsaWVudCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNsaWVudChtYWtlVW5pcXVlPERldmljZU1v
dGlvbkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihtYWtlVW5p
cXVlPERldmljZU1vdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU1vdGlvbkNsaWVudCkpCisgICAg
LCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25D
bGllbnRJT1M+KCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihtYWtlVW5p
cXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlT3JpZW50YXRpb25DbGll
bnQpKQogI2VuZGlmCiAgICAgLCBtX3BlbmRpbmdUYXNrc1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6
OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQpCiAgICAgLCBtX3Zpc3VhbFVwZGF0ZXNTdXBwcmVzc2lv
blRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnZpc3VhbFVwZGF0ZXNTdXBwcmVzc2lvblRpbWVyRmly
ZWQpCkBAIC03NTgsNyArNzU4LDcgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRGb3JBY2Nl
c3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHZvaWQgRG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5
Q2FjaGUoKQogewotICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hN
YXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsK
KyAgICBtX2FjY2Vzc0tleUNhY2hlID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVu
dCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0aGlzXSB7CiAgICAgICAgIEhhc2hNYXA8
U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7CiAgICAgICAg
IGZvciAoYXV0byYgbm9kZSA6IGNvbXBvc2VkVHJlZURlc2NlbmRhbnRzKCp0aGlzKSkgewogICAg
ICAgICAgICAgaWYgKCFpczxFbGVtZW50Pihub2RlKSkKQEAgLTc4Myw3ICs3ODMsNyBAQCBFeGNl
cHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gRG9jdW1lbnQ6OnNlbGVjdG9yUXVlcnlGb3JTdHJpbmco
Y29uc3QgU3RyaW5nJiBzZWxlYwogICAgIGlmIChzZWxlY3RvclN0cmluZy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogICAgIGlmICghbV9zZWxl
Y3RvclF1ZXJ5Q2FjaGUpCi0gICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlID0gc3RkOjptYWtl
X3VuaXF1ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7CisgICAgICAgIG1fc2VsZWN0b3JRdWVyeUNh
Y2hlID0gbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5Q2FjaGU+KCk7CiAgICAgcmV0dXJuIG1fc2Vs
ZWN0b3JRdWVyeUNhY2hlLT5hZGQoc2VsZWN0b3JTdHJpbmcsICp0aGlzKTsKIH0KIApAQCAtODQ4
LDcgKzg0OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKCkKIERPTUlt
cGxlbWVudGF0aW9uJiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQogewogICAgIGlmICghbV9p
bXBsZW1lbnRhdGlvbikKLSAgICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8RE9NSW1wbGVtZW50YXRpb24+KCp0aGlzKTsKKyAgICAgICAgbV9pbXBsZW1lbnRhdGlvbiA9
IG1ha2VVbmlxdWU8RE9NSW1wbGVtZW50YXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1w
bGVtZW50YXRpb247CiB9CiAKQEAgLTE3NjMsNyArMTc2Myw3IEBAIE5vZGU6Ok5vZGVUeXBlIERv
Y3VtZW50Ojpub2RlVHlwZSgpIGNvbnN0CiBGb3JtQ29udHJvbGxlciYgRG9jdW1lbnQ6OmZvcm1D
b250cm9sbGVyKCkKIHsKICAgICBpZiAoIW1fZm9ybUNvbnRyb2xsZXIpCi0gICAgICAgIG1fZm9y
bUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1Db250cm9sbGVyPigpOworICAgICAg
ICBtX2Zvcm1Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxGb3JtQ29udHJvbGxlcj4oKTsKICAgICBy
ZXR1cm4gKm1fZm9ybUNvbnRyb2xsZXI7CiB9CiAKQEAgLTE5ODgsNyArMTk4OCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXRP
ZlJlcGxhY2VkVGV4dCwgdW5zCiAgICAgQVNTRVJUKCFtX2luUmVuZGVyVHJlZVVwZGF0ZSk7CiAg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaW5SZW5kZXJUcmVlVXBkYXRlKG1faW5SZW5kZXJUcmVlVXBk
YXRlLCB0cnVlKTsKIAotICAgIGF1dG8gdGV4dFVwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5
bGU6OlVwZGF0ZT4oKnRoaXMpOworICAgIGF1dG8gdGV4dFVwZGF0ZSA9IG1ha2VVbmlxdWU8U3R5
bGU6OlVwZGF0ZT4oKnRoaXMpOwogICAgIHRleHRVcGRhdGUtPmFkZFRleHQodGV4dCwgeyBvZmZz
ZXRPZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQsIFdURjo6bnVsbG9wdCB9KTsK
IAogICAgIFJlbmRlclRyZWVVcGRhdGVyIHJlbmRlclRyZWVVcGRhdGVyKCp0aGlzKTsKQEAgLTIy
NzAsNyArMjI3MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxz
KGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiBTdHlsZVJlc29sdmVyJiBE
b2N1bWVudDo6dXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKQogewogICAgIGlmICgh
bV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcikKLSAgICAgICAgbV91c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4o
KnRoaXMpOworICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gbWFr
ZVVuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3VzZXJBZ2VudFNo
YWRvd1RyZWVTdHlsZVJlc29sdmVyOwogfQogCkBAIC0yNjczLDcgKzI2NzMsNyBAQCBBWE9iamVj
dENhY2hlKiBEb2N1bWVudDo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAKICAgICBBU1NFUlQoJnRv
cERvY3VtZW50ID09IHRoaXMgfHwgIW1fYXhPYmplY3RDYWNoZSk7CiAgICAgaWYgKCF0b3BEb2N1
bWVudC5tX2F4T2JqZWN0Q2FjaGUpIHsKLSAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENh
Y2hlID0gc3RkOjptYWtlX3VuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CisgICAg
ICAgIHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSA9IG1ha2VVbmlxdWU8QVhPYmplY3RDYWNo
ZT4odG9wRG9jdW1lbnQpOwogICAgICAgICBoYXNFdmVyQ3JlYXRlZEFuQVhPYmplY3RDYWNoZSA9
IHRydWU7CiAgICAgfQogICAgIHJldHVybiB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUuZ2V0
KCk7CkBAIC0zMDM3LDcgKzMwMzcsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRQYXJzaW5nKGJvb2wg
YikKICAgICBtX2JQYXJzaW5nID0gYjsKIAogICAgIGlmIChtX2JQYXJzaW5nICYmICFtX3NoYXJl
ZE9iamVjdFBvb2wpCi0gICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IHN0ZDo6bWFrZV91bmlx
dWU8RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sPigpOworICAgICAgICBtX3NoYXJlZE9iamVjdFBv
b2wgPSBtYWtlVW5pcXVlPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4oKTsKIAogICAgIGlmICgh
bV9iUGFyc2luZyAmJiB2aWV3KCkgJiYgIXZpZXcoKS0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAg
dmlldygpLT5maXJlTGF5b3V0UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwpAQCAtNTU2Nyw3
ICs1NTY3LDcgQEAgY29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBEb2N1bWVudDo6c3ZnRXh0
ZW5zaW9ucygpCiBTVkdEb2N1bWVudEV4dGVuc2lvbnMmIERvY3VtZW50OjphY2Nlc3NTVkdFeHRl
bnNpb25zKCkKIHsKICAgICBpZiAoIW1fc3ZnRXh0ZW5zaW9ucykKLSAgICAgICAgbV9zdmdFeHRl
bnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lvbnM+KCp0aGlzKTsK
KyAgICAgICAgbV9zdmdFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxTVkdEb2N1bWVudEV4dGVuc2lv
bnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3ZnRXh0ZW5zaW9uczsKIH0KIApAQCAtNTc3Miw3
ICs1NzcyLDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAg
IC8vIFRoaXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1
bWVudCgpLgogICAgICAgICBzZXRDb29raWVVUkwoVVJMKHsgfSwgZW1wdHlTdHJpbmcoKSkpOwog
ICAgICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3Jl
YXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSkpOwotICAgICAgICBzZXRDb250ZW50
U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVS
TCB7IHsgfSwgZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOworICAgICAgICBzZXRDb250ZW50U2Vj
dXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IHsgfSwg
ZW1wdHlTdHJpbmcoKSB9LCAqdGhpcykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01
NzkxLDcgKzU3OTEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAg
ICAgICAgaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA9IGRvY3VtZW50TG9hZGVyICYmIGRvY3VtZW50
TG9hZGVyLT5yZXNwb25zZSgpLnRhaW50aW5nKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRp
bmc6Ok9wYXF1ZTsKIAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2lu
UG9saWN5OjpjcmVhdGUoaXNTZWN1cml0eU9yaWdpblVuaXF1ZSA/IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVVbmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKSk7Ci0gICAgc2V0
Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGlj
eShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMp
KTsKIAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1fZnJhbWUt
PmxvYWRlcigpLmNsaWVudCgpLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAgICAg
aWYgKCFvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5pc051bGwoKSkKQEAgLTYwMjksNyAr
NjAyOSw3IEBAIFN0cmluZyBEb2N1bWVudDo6bmFtZUZvckNTU0NhbnZhc0VsZW1lbnQoY29uc3Qg
SFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQpCiBUZXh0QXV0b1NpemluZyYgRG9jdW1l
bnQ6OnRleHRBdXRvU2l6aW5nKCkKIHsKICAgICBpZiAoIW1fdGV4dEF1dG9TaXppbmcpCi0gICAg
ICAgIG1fdGV4dEF1dG9TaXppbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5nPigp
OworICAgICAgICBtX3RleHRBdXRvU2l6aW5nID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZz4o
KTsKICAgICByZXR1cm4gKm1fdGV4dEF1dG9TaXppbmc7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKQEAgLTYzOTYsNyArNjM5Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OndoZWVs
RXZlbnRIYW5kbGVyc0NoYW5nZWQoKQogdm9pZCBEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhh
bmRsZXIoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIW1fd2hlZWxFdmVudFRhcmdldHMpCi0gICAg
ICAgIG1fd2hlZWxFdmVudFRhcmdldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50VGFyZ2V0U2V0
PigpOworICAgICAgICBtX3doZWVsRXZlbnRUYXJnZXRzID0gbWFrZVVuaXF1ZTxFdmVudFRhcmdl
dFNldD4oKTsKIAogICAgIG1fd2hlZWxFdmVudFRhcmdldHMtPmFkZCgmbm9kZSk7CiAKQEAgLTY0
NTYsNyArNjQ1Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKE5v
ZGUmIGhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoIW1fdG91
Y2hFdmVudFRhcmdldHMpCi0gICAgICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOworICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzID0g
bWFrZVVuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKIAogICAgIG1fdG91Y2hFdmVudFRhcmdldHMt
PmFkZCgmaGFuZGxlcik7CiAKQEAgLTgwNDQsNyArODA0NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRp
ZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2
ZWwsIFZlCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwg
PSBtZXNzYWdlTGV2ZWxGcm9tV1RGTG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3Nh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdl
cyksIG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgpKSk7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVz
c2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldv
cmxkRXhlY1N0YXRlKGZyYW1lKCkpKTsKIAogICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZN
b3ZlKG1lc3NhZ2UpKTsKICAgICB9KTsKQEAgLTgwNzksNyArODA3OSw3IEBAIFN0cmluZyBEb2N1
bWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJ
bmRleCwgY29uc3QKIAogYm9vbCBEb2N1bWVudDo6cmVnaXN0ZXJDU1NQcm9wZXJ0eShDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHkmJiBwcm9wKQogewotICAgIHJldHVybiBtX0NTU1JlZ2lzdGVy
ZWRQcm9wZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBzdGQ6Om1ha2VfdW5pcXVlPENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9wKSkpLmlzTmV3RW50cnk7CisgICAgcmV0dXJu
IG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIG1ha2VVbmlxdWU8Q1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3ApKSkuaXNOZXdFbnRyeTsKIH0K
IAogdm9pZCBEb2N1bWVudDo6ZGV0YWNoRnJvbUZyYW1lKCkKQEAgLTgxNzMsNyArODE3Myw3IEBA
IERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciYgRG9jdW1lbnQ6OmRl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uCiAgICAgICAgIHJldHVybiB0b3BEb2N1bWVudCgpLmRl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcigpOwogCiAgICAgaWYgKCFt
X2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcikKLSAgICAgICAgbV9k
ZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcj4oKnRoaXMpOwor
ICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciA9IG1h
a2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPigqdGhp
cyk7CiAgICAgcmV0dXJuICptX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJv
bGxlcjsKIH0KIApAQCAtODIwNCw3ICs4MjA0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPFBhaW50V28K
IENvbnRlbnRDaGFuZ2VPYnNlcnZlciYgRG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigp
CiB7CiAgICAgaWYgKCFtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlcikKLSAgICAgICAgbV9jb250ZW50
Q2hhbmdlT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4o
KnRoaXMpOworICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IG1ha2VVbmlxdWU8Q29u
dGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRlbnRDaGFuZ2VP
YnNlcnZlcjsgCiB9CiAKQEAgLTgyMTIsNyArODIxMiw3IEBAIERPTVRpbWVySG9sZGluZ1Rhbmsm
IERvY3VtZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKCkKIHsKICAgICBpZiAobV9kb21UaW1lckhv
bGRpbmdUYW5rKQogICAgICAgICByZXR1cm4gKm1fZG9tVGltZXJIb2xkaW5nVGFuazsKLSAgICBt
X2RvbVRpbWVySG9sZGluZ1RhbmsgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRpbWVySG9sZGluZ1Rh
bms+KCk7CisgICAgbV9kb21UaW1lckhvbGRpbmdUYW5rID0gbWFrZVVuaXF1ZTxET01UaW1lckhv
bGRpbmdUYW5rPigpOwogICAgIHJldHVybiAqbV9kb21UaW1lckhvbGRpbmdUYW5rOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDBmNTM4YmZhMDVkYmNlZjNlOGE2ZjhlNjZjOTgwZmQzZDk3
Y2VlOTYuLmFiNTgwNDI1NDhjZTZhNDRmNjU4NGNmOTIwYjcxOTBlYWRkNTI5MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMjg0LDcgKzEyODQsNyBAQCBjbGFzcyBEb2N1bWVudAogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4gY3JlYXRlUGFyc2VyWWll
bGRUb2tlbigpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVu
dFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RG9j
dW1lbnRQYXJzZXJZaWVsZFRva2VuPigqdGhpcyk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNBY3Rp
dmVQYXJzZXJZaWVsZFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXJZaWVsZFRva2VuQ291
bnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggMDFj
N2Y5NmUwMmU5ZWJkNTg4NTNmYjVkYjFjNGI4ODIxZTJmOTcyOC4uMDM3MDNiNjJiYzY1MDU1Nzhi
Mzg5Yjk5OTM4YTRkYWFiNmQ3NmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZl
bnRRdWV1ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgRG9jdW1lbnRFdmVudFF1ZXVlOjpU
aW1lciBmaW5hbCA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKIAogRG9jdW1lbnRFdmVudFF1
ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1
bWVudChkb2N1bWVudCkKLSAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIoc3RkOjptYWtlX3VuaXF1
ZTxUaW1lcj4oKnRoaXMpKQorICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcihtYWtlVW5pcXVlPFRp
bWVyPigqdGhpcykpCiAgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQogewogICAgIG1fcGVuZGluZ0V2
ZW50VGltZXItPnN1c3BlbmRJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCA3MjkxZDRhZGVlOWY0MTc3ZmRiZmVmZWVm
ZGRmMjY3MDU0YTljNGYwLi5lNzY0MWFmNjIxOGJmMTNhYjBlM2M2ODkyMDIwZGU4ODljNGU5MDZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cApAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRN
YXJrZXIoTm9kZSYgbm9kZSwgY29uc3QgRG9jdW1lbnRNYXJrZXImIG5ld01hCiAgICAgc3RkOjp1
bmlxdWVfcHRyPE1hcmtlckxpc3Q+JiBsaXN0ID0gbV9tYXJrZXJzLmFkZCgmbm9kZSwgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgaWYgKCFsaXN0KSB7Ci0gICAgICAgIGxpc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1hcmtlckxpc3Q+KCk7CisgICAgICAgIGxpc3QgPSBtYWtlVW5pcXVl
PE1hcmtlckxpc3Q+KCk7CiAgICAgICAgIGxpc3QtPmFwcGVuZChSZW5kZXJlZERvY3VtZW50TWFy
a2VyKG5ld01hcmtlcikpOwogICAgIH0gZWxzZSBpZiAoc2hvdWxkSW5zZXJ0QXNTZXBhcmF0ZU1h
cmtlcihuZXdNYXJrZXIpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG1lcmdlIGRpY3RhdGlvbiBt
YXJrZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFj
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApp
bmRleCA4MWVmYjEwZDVlNzZlZGI2ZjZkMzgzNTMwMDUxZDI5YzM4OGVhZmRiLi44NTVhMmEwNjU2
ZjcxYjQ1ZWU4ZDRmZmYyODRhNTM1Mzc5YTM4Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtNDgsNyArNDgsNyBAQCBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MqIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbShEb2N1bWVudCYgZG9jdW1lbnQp
CiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50U3RvcmFnZUFj
Y2Vzcyo+KFN1cHBsZW1lbnQ8RG9jdW1lbnQ+Ojpmcm9tKCZkb2N1bWVudCwgc3VwcGxlbWVudE5h
bWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50U3RvcmFnZUFjY2Vzcz4oZG9jdW1lbnQpOwor
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERvY3VtZW50U3RvcmFnZUFj
Y2Vzcz4oZG9jdW1lbnQpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQo
KTsKICAgICAgICAgcHJvdmlkZVRvKCZkb2N1bWVudCwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92
ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgRG9jdW1l
bnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiAgICAgICAgIGJvb2wgc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSA9IHdh
c0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyB8fCBwcm9tcHRXYXNTaG93
biA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOwogCiAgICAgICAgIGlmIChzaG91
bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFp
blRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2Rv
Y3VtZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgeworICAgICAgICAg
ICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZv
aWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCld
ICgpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudFJlZmVy
ZW5jZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmVuYWJsZVRlbXBvcmFy
eVRpbWVVc2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgfSkpOwpAQCAtMTk5LDcgKzE5OSw3IEBA
IHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hvdWxk
UHJlc2VydmVVc2VyR2VzdHVyZSkgewotICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5U
aHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1
bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1lbnRSZWZlcmVuY2UpXSAoKSB7CisgICAgICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8
Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVudFJlZmVy
ZW5jZSldICgpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVu
dFJlZmVyZW5jZS5nZXQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmNvbnN1bWVU
ZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsKQEAgLTIwOSw3ICsy
MDksNyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFj
Y2Vzczo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKIHsKLSAgICBtX3RlbXBvcmFy
eVVzZXJHZXN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4oUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CisgICAgbV90ZW1wb3JhcnlVc2VyR2Vz
dHVyZSA9IG1ha2VVbmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSwgJm1fZG9jdW1lbnQpOwogfQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6Y29u
c3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
NDUxNjFjOWNhMjBiYWQ2OTMzMDA1MWQwOWE1NWYwYWZhNTU4NmNjNi4uZWViMWYzNDI5ZDY0ZWZj
NGRiMGIxMzBkMTM3ZjMxNmUzNTBkMGQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNDc3
LDcgKzQ3Nyw3IEBAIE5hbWVkTm9kZU1hcCYgRWxlbWVudDo6YXR0cmlidXRlcygpIGNvbnN0CiAg
ICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gcmFyZURhdGEuYXR0cmlidXRlTWFw
KCkpCiAgICAgICAgIHJldHVybiAqYXR0cmlidXRlTWFwOwogCi0gICAgcmFyZURhdGEuc2V0QXR0
cmlidXRlTWFwKHN0ZDo6bWFrZV91bmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVsZW1l
bnQmPigqdGhpcykpKTsKKyAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAobWFrZVVuaXF1ZTxO
YW1lZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOwogICAgIHJldHVybiAq
cmFyZURhdGEuYXR0cmlidXRlTWFwKCk7CiB9CiAKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHZvaWQg
RWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudChKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UmIGVsZW1lbnRJbnRlcmZhCiAgICAgc2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpOwogICAgIGF1
dG8mIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9t
RWxlbWVudFJlYWN0aW9uUXVldWUoKSkKLSAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihl
bGVtZW50SW50ZXJmYWNlKSk7CisgICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUobWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVy
ZmFjZSkpOwogICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENoYW5nZUN1c3RvbUVsZW1lbnRTdGF0ZSgqdGhpcyk7CiB9CkBA
IC0yMzQ0LDcgKzIzNDQsNyBAQCB2b2lkIEVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUoSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYWNlKQogICAgIGF1dG8mIGRhdGEgPSBl
bnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBib29sIGFscmVhZHlTY2hlZHVsZWRUb1VwZ3Jh
ZGUgPSBkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCk7CiAgICAgaWYgKCFhbHJlYWR5
U2NoZWR1bGVkVG9VcGdyYWRlKQotICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlv
blF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1l
bnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNl
KSk7CiAgICAgZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpLT5lbnF1ZXVlRWxlbWVu
dFVwZ3JhZGUoKnRoaXMsIGFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpOwogfQogCkBAIC0zNDgw
LDcgKzM0ODAsNyBAQCBET01Ub2tlbkxpc3QmIEVsZW1lbnQ6OmNsYXNzTGlzdCgpCiB7CiAgICAg
RWxlbWVudFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYg
KCFkYXRhLmNsYXNzTGlzdCgpKQotICAgICAgICBkYXRhLnNldENsYXNzTGlzdChzdGQ6Om1ha2Vf
dW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CisgICAg
ICAgIGRhdGEuc2V0Q2xhc3NMaXN0KG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRN
TE5hbWVzOjpjbGFzc0F0dHIpKTsKICAgICByZXR1cm4gKmRhdGEuY2xhc3NMaXN0KCk7CiB9CiAK
QEAgLTM0ODgsNyArMzQ4OCw3IEBAIERhdGFzZXRET01TdHJpbmdNYXAmIEVsZW1lbnQ6OmRhdGFz
ZXQoKQogewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpOwogICAgIGlmICghZGF0YS5kYXRhc2V0KCkpCi0gICAgICAgIGRhdGEuc2V0RGF0YXNldChz
dGQ6Om1ha2VfdW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CisgICAgICAgIGRh
dGEuc2V0RGF0YXNldChtYWtlVW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0aGlzKSk7CiAg
ICAgcmV0dXJuICpkYXRhLmRhdGFzZXQoKTsKIH0KIApAQCAtMzYzMiw3ICszNjMyLDcgQEAgSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhJiBFbGVtZW50OjplbnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZl
ckRhdGEoKQogewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7
CiAgICAgaWYgKCFyYXJlRGF0YS5pbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKSkKLSAgICAgICAg
cmFyZURhdGEuc2V0SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKHN0ZDo6bWFrZV91bmlxdWU8SW50
ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsKKyAgICAgICAgcmFyZURhdGEuc2V0SW50ZXJzZWN0
aW9uT2JzZXJ2ZXJEYXRhKG1ha2VVbmlxdWU8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhPigpKTsK
ICAgICByZXR1cm4gKnJhcmVEYXRhLmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpOwogfQogCkBA
IC0zNjU4LDcgKzM2NTgsNyBAQCBSZXNpemVPYnNlcnZlckRhdGEmIEVsZW1lbnQ6OmVuc3VyZVJl
c2l6ZU9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50
UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLnJlc2l6ZU9ic2VydmVyRGF0YSgpKQotICAg
ICAgICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxSZXNp
emVPYnNlcnZlckRhdGE+KCkpOworICAgICAgICByYXJlRGF0YS5zZXRSZXNpemVPYnNlcnZlckRh
dGEobWFrZVVuaXF1ZTxSZXNpemVPYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURh
dGEucmVzaXplT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyTWFwLmNwcAppbmRleCBkOWU2NjM0OWNiZGJhMGJiODFkMmFjZmJmZGMwZDQzMzc4YzY1OGRi
Li4wYjA5ZDA4MmMzNmVkZGQ4NGI5Y2RlOTg4MjUyNzJkYjVmOTZlNWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBFdmVu
dExpc3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRM
aXN0ZW5lcj4mJiBsaXMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgYXV0byBs
aXN0ZW5lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CisgICAg
YXV0byBsaXN0ZW5lcnMgPSBtYWtlVW5pcXVlPEV2ZW50TGlzdGVuZXJWZWN0b3I+KCk7CiAgICAg
bGlzdGVuZXJzLT51bmNoZWNrZWRBcHBlbmQoUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6OmNyZWF0
ZShXVEZNb3ZlKGxpc3RlbmVyKSwgb3B0aW9ucykpOwogICAgIG1fZW50cmllcy5hcHBlbmQoeyBl
dmVudFR5cGUsIFdURk1vdmUobGlzdGVuZXJzKSB9KTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oCmluZGV4IDllOTMwOGJiNWRhMTQ2MWUzNThlM2NjNjJmZWFmZGNmY2Qw
Y2M3YWQuLjViNmFiNjg3NTViNjFiZmUyZDRhNjhiY2JlNzUyNGZkMGRkYWJiOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaApAQCAtMzM5LDEzICszMzksMTMgQEAgc3RydWN0IEV2ZW50TmFtZXMg
ewogICAgIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSChET01fRVZFTlRfTkFNRVNfREVDTEFSRSkK
ICN1bmRlZiBET01fRVZFTlRfTkFNRVNfREVDTEFSRQogCi0gICAgLy8gRklYTUU6IFRoZSBmcmll
bmQgZGVjbGFyYXRpb24gdG8gc3RkOjptYWtlX3VuaXF1ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGlu
IHdpbmRvd3MgcG9ydC4KKyAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBt
YWtlVW5pcXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgogICAgIC8vCiAg
ICAgLy8gdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4KLSAgICAvLyBmcmllbmQgdHlw
ZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBzdGQ6Om1ha2VfdW5pcXVl
KEFyZ3MmJi4uLik7CisgICAgLy8gZnJpZW5kIHR5cGVuYW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6
X1NpbmdsZV9vYmplY3QgbWFrZVVuaXF1ZShBcmdzJiYuLi4pOwogICAgIC8vCiAgICAgLy8gVGhp
cyBjcmVhdGUgZnVuY3Rpb24gc2hvdWxkIGJlIGRlbGV0ZWQgbGF0ZXIgYW5kIGlzIG9ubHkgZm9y
IGtlZXBpbmcgRXZlbnROYW1lcyBhcyBwcml2YXRlLgotICAgIC8vIHN0ZDo6bWFrZV91bmlxdWUg
c2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAvLyBtYWtlVW5pcXVlIHNob3VsZCBiZSB1c2Vk
IGluc3RlYWQuCiAgICAgLy8KICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRQYXRoLmNwcAppbmRleCBkYjE0MjhkMWQ0MjYwNThjYjY1YjFlYjZmYWNhMjNk
Yjk4OTI4MmJkLi5hMGFkMGFkN2M0ODI2OTJlNjM4ZTU3MjgwZjFhMjkyNDdhY2VjMTc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRQYXRoLmNwcApAQCAtMTE1LDE3ICsxMTUsMTcgQEAgdm9pZCBFdmVudFBh
dGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogewogICAg
IHVzaW5nIE1ha2VFdmVudENvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiAo
KikoTm9kZSYsIEV2ZW50VGFyZ2V0KiwgRXZlbnRUYXJnZXQqLCBpbnQgY2xvc2VkU2hhZG93RGVw
dGgpOwogICAgIE1ha2VFdmVudENvbnRleHQgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBu
b2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50
IGNsb3NlZFNoYWRvd0RlcHRoKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEV2
ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVw
dGgpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+KCZub2RlLCBjdXJy
ZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICB9OwogICAgIGlmIChp
czxNb3VzZUV2ZW50PihldmVudCkgfHwgZXZlbnQuaXNGb2N1c0V2ZW50KCkpIHsKICAgICAgICAg
bWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRh
cmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6
OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRh
cmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNs
b3NlZFNoYWRvd0RlcHRoKTsKICAgICAgICAgfTsKICAgICB9CiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKICAgICBpZiAoaXM8VG91Y2hFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgIG1ha2VFdmVu
dENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2
ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVf
cHRyPEV2ZW50Q29udGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VG91Y2hFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hh
ZG93RGVwdGgpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VG91Y2hFdmVudENvbnRl
eHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAg
ICAgICB9OwogICAgIH0KICNlbmRpZgpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgRXZlbnRQYXRo
OjpidWlsZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJn
ZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKm5vZGUpLmRvbVdpbmRvdygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dFdmVudENvbnRleHQ+KCpu
b2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxXaW5kb3dFdmVudENvbnRl
eHQ+KCpub2RlLCAqd2luZG93LCAqdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCkpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTMwOCw3ICszMDgsNyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8
RWxlbWVudCo+JiB0YXJnZXRzKQogICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgTm9k
ZSogb3JpZ2luID0gKnRhcmdldHMuYmVnaW4oKTsKICAgICAgICAgaWYgKCF0YXJnZXQtPmlzQ2xv
c2VkU2hhZG93SGlkZGVuKCpvcmlnaW4pKQotICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0LCB0YXJnZXQsIG9yaWdpbiwgMCkpOwor
ICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4odGFyZ2V0
LCB0YXJnZXQsIG9yaWdpbiwgMCkpOwogICAgIH0KIH0KIApAQCAtMzE3LDcgKzMxNyw3IEBAIEV2
ZW50UGF0aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFdmVudFRhcmdldCo+JiB0YXJnZXRzKQog
ICAgIGZvciAoYXV0byogdGFyZ2V0IDogdGFyZ2V0cykgewogICAgICAgICBBU1NFUlQodGFyZ2V0
KTsKICAgICAgICAgQVNTRVJUKCFpczxOb2RlPih0YXJnZXQpKTsKLSAgICAgICAgbV9wYXRoLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFy
Z2V0cy5iZWdpbigpLCAwKSk7CisgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVu
dENvbnRleHQ+KG51bGxwdHIsIHRhcmdldCwgKnRhcmdldHMuYmVnaW4oKSwgMCkpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlZGQ5Y2EyOGVh
NDkzYWM3Yzk0YzhiZGUyODViMTY2NmMzODgyNTU5Li5hNzBiY2FlY2NjODc5NWE0ZjRiYTQyNmUy
NTEzZGZmN2EwZjc0YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVl
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaApA
QCAtNDIsNiArNDIsNyBAQCBjbGFzcyBSZW5kZXJUcmVlQnVpbGRlcjsKIGNsYXNzIFJlbmRlclN0
eWxlOwogCiBjbGFzcyBGdWxsc2NyZWVuTWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgRnVsbHNjcmVlbk1hbmFnZXIoRG9jdW1lbnQmKTsKICAgICB+
RnVsbHNjcmVlbk1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRh
cmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5jcHAKaW5kZXggYjNhMDZlNDdiMDcwMGY3YzQ3ZDNkOWFlZjMzZjQ0Mzcy
NGUwYzU1ZS4uOTQwZWZjYWVkODMwOTFjMjU4M2ZhOWUzMzZlZjNkNzhjNTRhYTNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKGNv
bnN0IEF0b21TdHJpbmcmIGlkLCBJZFRhcmdldE9ic2VydmUKICAgICAKICAgICBJZFRvT2JzZXJ2
ZXJTZXRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3JlZ2lzdHJ5LmFkZChpZC5pbXBsKCksIG51
bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T2JzZXJ2ZXJTZXQ+KCk7CisgICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9ic2VydmVyU2V0PigpOwogCiAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKG9ic2VydmVyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmNwcAppbmRleCA3ZTdhMzQ3OTdiODYyOWY2MmY3Zjc4NmFiMTRjNWM2ZjVi
ZDkwYjE0Li5jZTg1NmJiNTVkNWJkOTllNjZmNTBjYjU1YjBiZTQ3OTBlMDk4NDUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBLZXli
b2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogaW5saW5lIEtleWJvYXJkRXZl
bnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJlZlB0
cjxXaW5kb3dQcm94eT4mJiB2aWV3KQogICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVudFR5
cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgQ2FuQnViYmxlOjpZZXMsIElzQ2Fu
Y2VsYWJsZTo6WWVzLCBJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIGtleS50aW1lc3RhbXAoKS5h
cHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldy5jb3B5UmVmKCksIDAsIGtleS5tb2RpZmll
cnMoKSwgSXNUcnVzdGVkOjpZZXMpCi0gICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQorICAgICwgbV91bmRl
cmx5aW5nUGxhdGZvcm1FdmVudChtYWtlVW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5
KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAgICAsIG1fa2V5KGtleS5r
ZXkoKSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKaW5kZXggYjYzMTg0MTUwZjVhMzkx
NDI1MmI4NDJlZDlkMDdkZWFhZjZiNDAzNi4uYmE3MjJhMTFjNzBmY2E4MDgzMmU2NGM4NTI3ZWU0
NmI5YzM0NzY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCkBAIC02OSw3ICs2OSw4IEBAIGNs
YXNzIFZvaWRNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMgTWljcm90YXNrIHsKICAgICBGdW5jdGlv
bjx2b2lkKCk+IG1fZnVuY3Rpb247CiB9OwogCi1jbGFzcyBNaWNyb3Rhc2tRdWV1ZSB7CitjbGFz
cyBNaWNyb3Rhc2tRdWV1ZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1pY3JvdGFza1F1ZXVlPjsKICAgICBmcmllbmQgY2xh
c3MgTWljcm90YXNrOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIu
Y3BwCmluZGV4IDY2YzVlYTBiOWQ2MzQ1NDQzODEyZmIxMzFmZmU1ZGJlNmNhMWRkZjMuLjE5M2Yy
NzgwNWE1YWVkNGI2MDZlOWNlZWEzYTlhMzVkOGIxZTk5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgdm9pZCBxdWV1
ZU11dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFzaygpCiAgICAgaWYgKG11dGF0aW9uT2Jz
ZXJ2ZXJDb21wb3VuZE1pY3JvdGFza1F1ZXVlZEZsYWcpCiAgICAgICAgIHJldHVybjsKICAgICBt
dXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnID0gdHJ1ZTsKLSAgICBN
aWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
TXV0YXRpb25PYnNlcnZlck1pY3JvdGFzaz4oKSk7CisgICAgTWljcm90YXNrUXVldWU6Om1haW5U
aHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+
KCkpOwogfQogCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmVucXVldWVNdXRhdGlvblJlY29yZChS
ZWY8TXV0YXRpb25SZWNvcmQ+JiYgbXV0YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAppbmRleCA1MmRhNjFmNzRmMWY1
N2FmNjg1NDlmMzY2NTYzMDZkOGQxNzAzYzc5Li4wMjc2ZTQyYmU1YmQ4M2ZmNDJhNzkzNTZiZGU5
Y2U3MzYwOTljYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cDo6Y3IKICAgICBpZiAob2JzZXJ2ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2Vy
dmVycyksIG9sZFZhbHVlRmxhZyk7CiB9CiAKIGJvb2wgTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXA6OmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGM4ZmMwMTA2NzI0
NWU0ZTM2MTk3YTJmNmQ0ZDFlNDU3NTQ3YmJjOGEuLmU1YzZkZDE2YTRkYjYwOWJhNTI3M2E0N2Fm
N2ZhNjgyNjYyYTJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaChOb2RlJiBu
b2RlKQogICAgIG1fb2JzZXJ2ZXItPnNldEhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbigpOwogCiAg
ICAgaWYgKCFtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzKSB7Ci0gICAgICAgIG1fdHJhbnNp
ZW50UmVnaXN0cmF0aW9uTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8R0NSZWFjaGFi
bGVSZWY8Tm9kZT4+PigpOworICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0g
bWFrZVVuaXF1ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKIAogICAgICAgICBB
U1NFUlQoIW1fbm9kZUtlcHRBbGl2ZSk7CiAgICAgICAgIG1fbm9kZUtlcHRBbGl2ZSA9ICZtX25v
ZGU7IC8vIEJhbGFuY2VkIGluIHRha2VUcmFuc2llbnRSZWdpc3RyYXRpb25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCmluZGV4IDc2ZDRlYTlkNzMwYTkyMzcyYTlmOGU3YTZkOGY2N2QwMGZkM2RiZjUuLmNhYmYx
ZWI1OGM5YzIzY2FkODg1YmQwMWRmMTIyYjY1MWFlMDJiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAg
LTM5OCw5ICszOTgsOSBAQCB2b2lkIE5vZGU6Om1hdGVyaWFsaXplUmFyZURhdGEoKQogewogICAg
IE5vZGVSYXJlRGF0YSogZGF0YTsKICAgICBpZiAoaXM8RWxlbWVudD4oKnRoaXMpKQotICAgICAg
ICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRl
ckVsZW1lbnQ+KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOworICAgICAgICBkYXRhID0g
bWFrZVVuaXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG1fZGF0
YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOwor
ICAgICAgICBkYXRhID0gbWFrZVVuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5tX3JlbmRlcmVy
KS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGRhdGEpOwogCiAgICAgbV9kYXRhLm1fcmFyZURhdGEg
PSBkYXRhOwpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgRXZlbnRUYXJnZXREYXRhJiBOb2RlOjplbnN1
cmVFdmVudFRhcmdldERhdGEoKQogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX2V2ZW50
VGFyZ2V0RGF0YU1hcExvY2spOwogICAgIHNldEhhc0V2ZW50VGFyZ2V0RGF0YSh0cnVlKTsKLSAg
ICByZXR1cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVl
PEV2ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqZXZlbnRU
YXJnZXREYXRhTWFwKCkuYWRkKHRoaXMsIG1ha2VVbmlxdWU8RXZlbnRUYXJnZXREYXRhPigpKS5p
dGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgTm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEoKQpA
QCAtMjI4Nyw3ICsyMjg3LDcgQEAgdm9pZCBOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIo
TXV0YXRpb25PYnNlcnZlciYgb2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIKICAgICB9CiAKICAg
ICBpZiAoIXJlZ2lzdHJhdGlvbikgewotICAgICAgICByZWdpc3RyeS5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9w
dGlvbnMsIGF0dHJpYnV0ZUZpbHRlcikpOworICAgICAgICByZWdpc3RyeS5hcHBlbmQobWFrZVVu
aXF1ZTxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9wdGlv
bnMsIGF0dHJpYnV0ZUZpbHRlcikpOwogICAgICAgICByZWdpc3RyYXRpb24gPSByZWdpc3RyeS5s
YXN0KCkuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNzY5
MGQ1OTlmY2E3ZGM5OWNiNDllMTYwZmJlMmFmYWRkZjAwY2RmNC4uNzY2ZDY3ZjNmNmQ2MjlhZjA4
OTQyYWRjMjNlMmMyMmMyOWYzZTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAt
MjgxLDcgKzI4MSw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFC
YXNlIHsKICAgICBOb2RlTGlzdHNOb2RlRGF0YSYgZW5zdXJlTm9kZUxpc3RzKCkKICAgICB7CiAg
ICAgICAgIGlmICghbV9ub2RlTGlzdHMpCi0gICAgICAgICAgICBtX25vZGVMaXN0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CisgICAgICAgICAgICBtX25vZGVMaXN0
cyA9IG1ha2VVbmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9u
b2RlTGlzdHM7CiAgICAgfQogCkBAIC0yODksNyArMjg5LDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRh
IDogcHVibGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0
YSYgZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKQogICAgIHsKICAgICAgICAgaWYgKCFtX211
dGF0aW9uT2JzZXJ2ZXJEYXRhKQotICAgICAgICAgICAgbV9tdXRhdGlvbk9ic2VydmVyRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhPigpOworICAgICAgICAg
ICAgbV9tdXRhdGlvbk9ic2VydmVyRGF0YSA9IG1ha2VVbmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2
ZXJEYXRhPigpOwogICAgICAgICByZXR1cm4gKm1fbXV0YXRpb25PYnNlcnZlckRhdGE7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAppbmRleCA1MzM3YzU4
Y2RmYmJhYWIyMzAxODQ1MDI2MzhkYzYzNDQ5Zjc5NmFjLi42MWJiYzRlZGZmOTM0YTY0NDZlYTI1
Njc1NTY2M2ZkNTQ2ODc3ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9C
dXR0b25Hcm91cHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vw
cy5jcHAKQEAgLTE5OCwxMSArMTk4LDExIEBAIHZvaWQgUmFkaW9CdXR0b25Hcm91cHM6OmFkZEJ1
dHRvbihIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIW1fbmFtZVRvR3JvdXBNYXApCi0gICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hbWVUb0dyb3VwTWFwPigpOworICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0g
bWFrZVVuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKIAogICAgIGF1dG8mIGdyb3VwID0gbV9uYW1l
VG9Hcm91cE1hcC0+YWRkKGVsZW1lbnQubmFtZSgpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOwogICAgIGlmICghZ3JvdXApCi0gICAgICAgIGdyb3VwID0gc3RkOjptYWtlX3VuaXF1
ZTxSYWRpb0J1dHRvbkdyb3VwPigpOworICAgICAgICBncm91cCA9IG1ha2VVbmlxdWU8UmFkaW9C
dXR0b25Hcm91cD4oKTsKICAgICBncm91cC0+YWRkKGVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYzgyNWE3ZWRlZTZi
YjJkNWY1MTZjNmQzZTZlYTc0MTBlNmVjYzc1Ni4uMDRhZmU5ZDc4YWQwYmQxMDI4YTY3MDNjMGZj
M2Q0ZjY1M2IxM2RlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcApAQCAtMzc5LDggKzM3OSw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluCiB7
CiAgICAgaWYgKG1faW5EaXNwYXRjaEVycm9yRXZlbnQpIHsKICAgICAgICAgaWYgKCFtX3BlbmRp
bmdFeGNlcHRpb25zKQotICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+KCk7Ci0g
ICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRp
bmdFeGNlcHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3Vy
Y2VVUkwsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0
aW9ucyA9IG1ha2VVbmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9u
Pj4+KCk7CisgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChtYWtlVW5pcXVlPFBl
bmRpbmdFeGNlcHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBz
b3VyY2VVUkwsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MTQsOSArNDE0LDkgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRV
bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGEKICAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiAi
LCByZXN1bHRNZXNzYWdlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdl
LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5y
ZWxlYXNlTm9uTnVsbCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOworICAgICAg
ICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlKTsKICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApA
QCAtNTA5LDcgKzUwOSw3IEBAIFJlamVjdGVkUHJvbWlzZVRyYWNrZXImIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRyYWNrZXJTbG93CiAgICAgLy8gV2hlbiBp
bml0aWFsaXppbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdm0oKSBpcyBub3QgcmVhZHkuCiAK
ICAgICBBU1NFUlQoIW1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlcik7Ci0gICAgbV9yZWplY3RlZFBy
b21pc2VUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWplY3RlZFByb21pc2VUcmFja2VyPigq
dGhpcywgdm0oKSk7CisgICAgbV9yZWplY3RlZFByb21pc2VUcmFja2VyID0gbWFrZVVuaXF1ZTxS
ZWplY3RlZFByb21pc2VUcmFja2VyPigqdGhpcywgdm0oKSk7CiAgICAgcmV0dXJuICptX3JlamVj
dGVkUHJvbWlzZVRyYWNrZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmNwcAppbmRleCA1NWRjMmM4N2E0YWMyMDJkNzFhZGRhNjZkNTk2YjVmZWEwYmM4ODU2Li4yMTA5
Y2U0YTIyOGMzZTdiYTg3YTRiYTUyYjJkYjI4MjM2MDg3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgRXhjZXB0aW9uT3I8U2VsZWN0b3JR
dWVyeSY+IFNlbGVjdG9yUXVlcnlDYWNoZTo6YWRkKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBE
b2MKICAgICBpZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtYXhpbXVtU2VsZWN0b3JRdWVyeUNhY2hl
U2l6ZSkKICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShtX2VudHJpZXMucmFuZG9tKCkpOwogCi0g
ICAgcmV0dXJuICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgc3RkOjptYWtlX3VuaXF1ZTxTZWxl
Y3RvclF1ZXJ5PihXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CisgICAg
cmV0dXJuICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5
PihXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA2OTYzYjY4Mzc5ZDg4ZjI3YTg0ZTJmMWRhNjUxNTM4
MTgwNWIyOTNjLi42Nzg2YzBkMjFlMWIyYzJhNTc4NTFiZDA4NTE2NGMxYTFlOTJjOTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFNoYWRvd1Jvb3Q6OlNo
YWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBTaGFkb3dSb290TW9kZSB0eXBlKQogICAgIDog
RG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAsIFRyZWVT
Y29wZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fc3R5bGVT
Y29wZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9zdHls
ZVNjb3BlKG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCiB7CiB9CiAKQEAgLTY3LDcg
KzY3LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6
dW5pcXVlX3B0cjxTbG90QXNzaWdubWVudD4mJiBzbG8KICAgICA6IERvY3VtZW50RnJhZ21lbnQo
ZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3Vt
ZW50KQogICAgICwgbV90eXBlKFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCi0gICAgLCBtX3N0
eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1f
c3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogICAgICwgbV9zbG90
QXNzaWdubWVudChXVEZNb3ZlKHNsb3RBc3NpZ25tZW50KSkKIHsKIH0KQEAgLTE0Nyw3ICsxNDcs
NyBAQCB2b2lkIFNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudChEb2N1bWVu
dCYgbmV3RG9jdW1lbnQpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTighcGFyZW50VHJlZVNjb3BlKCkgfHwgJnBhcmVudFRyZWVTY29wZSgpLT5kb2N1bWVudFNj
b3BlKCkgPT0gJm5ld0RvY3VtZW50KTsKIAogICAgIC8vIFN0eWxlIHNjb3BlcyBhcmUgZG9jdW1l
bnQgc3BlY2lmaWMuCi0gICAgbV9zdHlsZVNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6
U2NvcGU+KCp0aGlzKTsKKyAgICBtX3N0eWxlU2NvcGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpTY29w
ZT4oKnRoaXMpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
Jm1fc3R5bGVTY29wZS0+ZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOwogfQogCkBAIC0yMjgs
NyArMjI4LDcgQEAgdm9pZCBTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBB
dG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHMKIHsKICAgICBBU1NFUlQoJnNsb3Qu
cm9vdE5vZGUoKSA9PSB0aGlzKTsKICAgICBpZiAoIW1fc2xvdEFzc2lnbm1lbnQpCi0gICAgICAg
IG1fc2xvdEFzc2lnbm1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOwor
ICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gbWFrZVVuaXF1ZTxTbG90QXNzaWdubWVudD4oKTsK
IAogICAgIHJldHVybiBtX3Nsb3RBc3NpZ25tZW50LT5hZGRTbG90RWxlbWVudEJ5TmFtZShuYW1l
LCBzbG90LCAqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFz
c2lnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRl
eCBhNDE5ZGRhNTI4YWNjYmRhNmRlOWRkZjFhNTQ4NjRjZmRmOTE2MGVmLi40NWMwOGVhMzZhZmUx
Mzk3YmUwZWNiZmIyOWUyMjhlY2QwYzk5MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2xvdEFzc2lnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdu
bWVudC5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjphZGRTbG90
RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbgogICAg
ICAgICAvLyB0byBhdm9pZCBhbHdheXMgaGF2aW5nIGEgdmVjdG9yIG9mIGFsbCBjaGlsZCBub2Rl
cyBvZiBhIHNoYWRvdyBob3N0LgogICAgICAgICBpZiAoc2xvdE5hbWUgPT0gZGVmYXVsdFNsb3RO
YW1lKCkpCiAgICAgICAgICAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U2xvdD4oKTsKICAgICB9KTsKICAgICBhdXRvJiBzbG90ID0gKmFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CiAgICAgYm9vbCBuZWVkc1Nsb3RjaGFuZ2VFdmVudCA9IHNoYWRvd1Jv
b3Quc2hvdWxkRmlyZVNsb3RjaGFuZ2VFdmVudCgpICYmIGhhc0Fzc2lnbmVkTm9kZXMoc2hhZG93
Um9vdCwgc2xvdCk7CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6YXNz
aWduVG9TbG90KE5vZGUmIGNoaWxkLCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZSkKICAgICB9
CiAKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2xvdHMuZW5zdXJlKHNsb3ROYW1lLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS0+YXNzaWduZWROb2Rlcy5hcHBlbmQoJmNoaWxkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5j
cHAKaW5kZXggMmYyODcwZDE2NjlkNDRiYzYxODRhNzJlYzYzZWIzMjNmNTI3ZDM5Zi4uNTMxYWNk
ZjRkZDY1NjhlMGY0NjIxZWI1MGQ4OWRlZTQ2N2Q1NWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29w
ZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUoU2hhZG93Um9vdCYg
c2hhZG93Um9vdCwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShzaGFkb3dS
b290KQogICAgICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVl
U2NvcGUoJmRvY3VtZW50KQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoc3RkOjpt
YWtlX3VuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBtX2lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkK
IHsKICAgICBzaGFkb3dSb290LnNldFRyZWVTY29wZSgqdGhpcyk7CiB9CkBAIC03Myw3ICs3Myw3
IEBAIFRyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9v
dE5vZGUoZG9jdW1lbnQpCiAgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1lbnQpCiAgICAgLCBt
X3BhcmVudFRyZWVTY29wZShudWxscHRyKQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkoc3RkOjptYWtlX3VuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBt
X2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeT4oKSkKIHsKICAgICBkb2N1bWVudC5zZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtMTQx
LDcgKzE0MSw3IEBAIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIFRyZWVTY29wZTo6Z2V0QWxsRWxl
bWVudHNCeUlkKGNvbnN0IEF0b21TdHJpbmcmIGVsZW1lbnRJCiB2b2lkIFRyZWVTY29wZTo6YWRk
RWxlbWVudEJ5SWQoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGVsZW1lbnRJZCwgRWxlbWVudCYgZWxl
bWVudCwgYm9vbCBub3RpZnlPYnNlcnZlcnMpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnRzQnlJZCkK
LSAgICAgICAgbV9lbGVtZW50c0J5SWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVy
ZWRNYXA+KCk7CisgICAgICAgIG1fZWxlbWVudHNCeUlkID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVP
cmRlcmVkTWFwPigpOwogICAgIG1fZWxlbWVudHNCeUlkLT5hZGQoZWxlbWVudElkLCBlbGVtZW50
LCAqdGhpcyk7CiAgICAgaWYgKG5vdGlmeU9ic2VydmVycykKICAgICAgICAgbV9pZFRhcmdldE9i
c2VydmVyUmVnaXN0cnktPm5vdGlmeU9ic2VydmVycyhlbGVtZW50SWQpOwpAQCAtMTY4LDcgKzE2
OCw3IEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUoY29uc3Qg
QXRvbVN0cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2Vs
ZW1lbnRzQnlOYW1lKQotICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gbWFr
ZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIG1fZWxlbWVudHNCeU5hbWUtPmFk
ZChuYW1lLCBlbGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFRy
ZWVTY29wZTo6YWRkSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQmIGltYWdlTWFwKQogICAgIGlmICgh
bmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9pbWFnZU1hcHNCeU5hbWUpCi0gICAg
ICAgIG1faW1hZ2VNYXBzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVk
TWFwPigpOworICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3Bl
T3JkZXJlZE1hcD4oKTsKICAgICBtX2ltYWdlTWFwc0J5TmFtZS0+YWRkKCpuYW1lLCBpbWFnZU1h
cCwgKnRoaXMpOwogfQogCkBAIC0yNjMsNyArMjYzLDcgQEAgSFRNTE1hcEVsZW1lbnQqIFRyZWVT
Y29wZTo6Z2V0SW1hZ2VNYXAoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJl
ZVNjb3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFt
ZSwgSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1faW1hZ2VzQnlVc2Vt
YXApCi0gICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29w
ZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBtYWtlVW5pcXVlPFRy
ZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgcmV0dXJuIG1faW1hZ2VzQnlVc2VtYXAtPmFkZChu
YW1lLCBlbGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBIVE1MTGFiZWxF
bGVtZW50KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKGNvbnN0IEF0b21TdHJpbmcmIGZv
ckF0dHJpYnV0ZVZhbAogCiAgICAgaWYgKCFtX2xhYmVsc0J5Rm9yQXR0cmlidXRlKSB7CiAgICAg
ICAgIC8vIFBvcHVsYXRlIHRoZSBtYXAgb24gZmlyc3QgYWNjZXNzLgotICAgICAgICBtX2xhYmVs
c0J5Rm9yQXR0cmlidXRlID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigp
OworICAgICAgICBtX2xhYmVsc0J5Rm9yQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVP
cmRlcmVkTWFwPigpOwogCiAgICAgICAgIGZvciAoYXV0byYgbGFiZWwgOiBkZXNjZW5kYW50c09m
VHlwZTxIVE1MTGFiZWxFbGVtZW50PihtX3Jvb3ROb2RlKSkgewogICAgICAgICAgICAgY29uc3Qg
QXRvbVN0cmluZyYgZm9yVmFsdWUgPSBsYWJlbC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKGZvckF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5oCmluZGV4IGRkYTQ5MGIxM2NkYzJkZGI4M2ZiMWZjOGZmYWIwOWRmMDA4OGQ4MmMuLjQy
NjgxOTZmODkyYWYzMDU1MTAzYzQ4NzJmZThlY2JkZDVmMTFhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xh
c3MgU3R5bGVkRWxlbWVudDsKIGNsYXNzIFRleHQ7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlVbmRv
UmVwbGFjZWRUZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBBY2Nlc3NpYmlsaXR5VW5kb1JlcGxhY2VkVGV4dCgpIHsgfQogICAgIHZvaWQgY29uZmlndXJl
UmFuZ2VEZWxldGVkQnlSZWFwcGx5V2l0aFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3OTM0MmM0OTc3NTNk
OWExNTI2ZTA1NTU0OWZjNzc5NzIxNGJmNmU0Li44OTFjMTI4OGM2ZTMxNGFjY2FlOWI2MjcxOTc4
MTg4MWU3NDJkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODAsMTIgKzM4
MCwxMiBAQCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xp
cGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAgIHN3aXRjaCAoa2luZCkgewogICAg
IGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRL
aW5kOjpDdXQ6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3RkOjpt
YWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3Jl
TW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogICAgIGNh
c2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUGxhaW5UZXh0OgogICAgICAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0
YUVuYWJsZWQoKSkgewogICAgICAgICAgICAgYXV0byBwbGFpblRleHRUeXBlID0gInRleHQvcGxh
aW4iX3M7CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZSgpLT5yZWFkU3RyaW5nKHBsYWluVGV4dFR5cGUpOwotICAgICAgICAgICAg
YXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwor
ICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJk
PigpOwogICAgICAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcocGxhaW5UZXh0VHlwZSwg
cGxhaW5UZXh0KTsKICAgICAgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNv
cHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBX
VEZNb3ZlKHBhc3RlYm9hcmQpKTsKICAgICAgICAgfQpAQCAtMzk2LDEwICszOTYsMTAgQEAgc3Rh
dGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50
KERvY3VtZW50JiBkb2N1bWVudCwKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3Jl
Q29weToKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0OgogICAgIGNhc2Ug
Q2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVQYXN0ZToKLSAgICAgICAgcmV0dXJuIERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3Jl
TW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0
ZWJvYXJkPigpKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNm
ZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJk
PigpKTsKKyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9j
dW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRp
Y1Bhc3RlYm9hcmQ+KCkpOwogfQogCiAvLyBSZXR1cm5zIHdoZXRoZXIgY2FsbGVyIHNob3VsZCBj
b250aW51ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5nIiwgd2hpY2ggaXMgdGhlIHNhbWUg
YXMKQEAgLTExODMsOSArMTE4Myw5IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKEVk
aXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiBFZGl0b3I6OkVkaXRvcihGcmFt
ZSYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9raWxsUmluZyhzdGQ6Om1h
a2VfdW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCi0gICAgLCBtX3NwZWxsQ2hlY2tlcihzdGQ6Om1h
a2VfdW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJh
bWUpKQorICAgICwgbV9raWxsUmluZyhtYWtlVW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCisgICAg
LCBtX3NwZWxsQ2hlY2tlcihtYWtlVW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQorICAgICwg
bV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcj4oZnJhbWUpKQogICAgICwgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRp
dG9yOjplZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1C
RVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fdGVsZXBob25l
TnVtYmVyRGV0ZWN0aW9uVXBkYXRlVGltZXIoKnRoaXMsICZFZGl0b3I6OnNjYW5TZWxlY3Rpb25G
b3JUZWxlcGhvbmVOdW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAwZGRjMTViZGMwZDMwNGY0NTQzYTA1OTYyYmM2
Y2M3NjQ1ZjU0Nzk0Li4yYzIwMjhjYzYzYzFiOTM4YmM2NmZmNGJlYTU4OTkyNThlOWE0YTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcApAQCAtMTYzMSw3ICsxNjMxLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
dXBkYXRlTm9kZXNJbnNlcnRlZChOb2RlICpub2RlKQogUmVwbGFjZW1lbnRGcmFnbWVudCogUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQoKQogewogICAg
IGlmICghbV9yZXBsYWNlbWVudEZyYWdtZW50KQotICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21l
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFn
bWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOworICAgICAgICBtX3JlcGxhY2VtZW50RnJh
Z21lbnQgPSBtYWtlVW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVu
dC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIHJldHVybiBtX3JlcGxhY2VtZW50RnJh
Z21lbnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vs
ZWN0aW9uUmVjdEdhdGhlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
UmVjdEdhdGhlcmVyLmNwcAppbmRleCAzYjQwNjg4Y2I0ZGE2NTZiMzQ0NTg3YzA4ODg2MzZjMGFi
MTU2NmNmLi5mOWI2NGM1YzhjODk2YmYzMjI2MzA4NzA5ZjI2YWE2NjdlMWVkOTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlm
aWVyPiBTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kCiAgICAgbV9nYXBSZWN0cy5jbGVh
cigpOwogICAgIG1faXNUZXh0T25seSA9IHRydWU7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxOb3RpZmllcj4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5vdGlmaWVyPigq
dGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAppbmRleCAxODk2ZTFhMjI4MWMxYTliMDQ2ZThlZmFjZDkxMTlhZjVl
Mjc3ZDU2Li5mMWQxOWMxMDExNGMxYTk4NWI4YjQyNmZhNjhmZGI4MTIyYTYwYzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC02NTAsNyArNjUwLDcgQEAgYm9v
bCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgdW5zaWduZWQgZW5kUG9z
aXRpb24gPSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2VuZE9mZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3RoKCk7CiAgICAgICAgIGlmICghbV9m
bG93UnVuUmVzb2x2ZXJDYWNoZSB8fCAmbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+ZmxvdygpICE9
ICZibG9ja0Zsb3cpIHsKICAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3Ro
SW5GbG93ID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA/IDAgOiB0ZXh0Tm9kZU9mZnNldEluRmxv
dyh0ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gc3RkOjpt
YWtlX3VuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5
b3V0KTsKKyAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBtYWtlVW5pcXVlPFNp
bXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQpOwogICAgICAg
ICB9CiAgICAgICAgIC8vIFNraXAgdG8gbV9vZmZzZXQgcG9zaXRpb24uCiAgICAgICAgIGF1dG8g
cmFuZ2UgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRl
eCAwYTgzYWMwOTU5Mjc0YzA3ODBkNWQ3YjM4NWYwMTljMGU4NmUzYzc0Li45Y2Y4NmE0YTE1ZjFj
N2M2ZjAyODE1NTY0N2FmYTAwNTlhZTNiNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0zODAsNyArMzgwLDcgQEAgSFRNTENvbnZlcnRl
cjo6SFRNTENvbnZlcnRlcihjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBl
bmQpCiAgICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9IGZhbHNlOwogICAgIF9mbGFncy5yZWFjaGVk
RW5kID0gZmFsc2U7CiAgICAgCi0gICAgX2NhY2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTENv
bnZlcnRlckNhY2hlcz4oKTsKKyAgICBfY2FjaGVzID0gbWFrZVVuaXF1ZTxIVE1MQ29udmVydGVy
Q2FjaGVzPigpOwogfQogCiBIVE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigpCkBAIC01NTEs
NyArNTUxLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21wdXRl
ZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KEVsZW1lbnQmIGUKIAogICAgIGF1dG8gcmVzdWx0ID0g
bV9jb21wdXRlZFN0eWxlcy5hZGQoJmVsZW1lbnQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1lbnQsIHRydWUpOworICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9y
PigmZWxlbWVudCwgdHJ1ZSk7CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciYgY29tcHV0ZWRT
dHlsZSA9ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBjb21wdXRlZFN0eWxl
LnByb3BlcnR5VmFsdWUocHJvcGVydHlJZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCmluZGV4IDI1Nzdk
NWE3Njk2ODE2MjJmNWQwYTdiNjNmZjRkMDlkODhjOTVkYzEuLjI5YzVhOGRhN2VlMzI1NTYxMjY1
NjkwNTRlMzAyMjI4YTUzMDE4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oCkBAIC0zNyw2ICszNyw3IEBA
IE9CSkNfQ0xBU1MgTlNWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcigpIHsgfQogICAgIC8vIFJldHVy
bnMgYSBjb250ZXh0IElELgpAQCAtNTIsNiArNTMsNyBAQCBjbGFzcyBBbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIgewogICAgIHZvaWQgZGlzbWlzc0FsdGVybmF0aXZlcygpOwogCiAgICAgY2xh
c3MgQWxlcm5hdGl2ZVRleHRDb250ZXh0Q29udHJvbGxlciB7CisgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQWxlcm5hdGl2ZVRleHRDb250ZXh0
Q29udHJvbGxlcigpIHsgfQogICAgICAgICB1aW50NjRfdCBhZGRBbHRlcm5hdGl2ZXMoY29uc3Qg
UmV0YWluUHRyPE5TVGV4dEFsdGVybmF0aXZlcz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAppbmRleCBmYjQzNzE2MzAzYWUyNWI4MTkyOTJkMjcxY2EyY2FlNjg0YjljMDJlLi5jM2M4Zjhi
MzI0YmZlY2RjZTllNWM0ZWIxOWI1Yjc0NjA4OTI4YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBh
Z2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpCiB7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlv
biA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwogICAgIAotICAgIGF1dG8g
cGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikp
OworICAgIGF1dG8gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbikpOwogICAgIHBhZ2UtPnNldElzRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKICAgICBw
YWdlLT5zZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgcGFnZS0+c2V0dGlu
Z3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5
bmNGaWxlU3RyZWFtLmNwcAppbmRleCBhMDk1ZWVhZTliMmE3OTdiZGFiYWUzNDk0MGZkYzZhM2Nl
MzA0MjRiLi5kNTgxMTJmZjliZGY2Y2Q3ZDE5ODU1MmQ4NjY5OTFmODViN2ExYzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC05NCwxMSArOTQsMTEg
QEAgc3RhdGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0
aW9uKQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1ZXVlLmdldCgpLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAg
IHF1ZXVlLmdldCgpLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3Zl
KGZ1bmN0aW9uKSkpOwogfQogCiBBc3luY0ZpbGVTdHJlYW06OkFzeW5jRmlsZVN0cmVhbShGaWxl
U3RyZWFtQ2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2ludGVybmFscyhzdGQ6Om1ha2VfdW5pcXVl
PEludGVybmFscz4oY2xpZW50KSkKKyAgICA6IG1faW50ZXJuYWxzKG1ha2VVbmlxdWU8SW50ZXJu
YWxzPihjbGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCA5YWQzZGE5ZWZmZjBmM2E3MDdhMDYwMWY3
ODYwMWQ1ZDg2ODI1OGY1Li45OWE3YjVjNmY5ODdhMTRiYTE5MDk0NTg5ODdhZTg0ZWNmYzRmMDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiYgYmxvYiwg
RmlsZVJlYWRlckxvYWRlcjo6UmVhZFR5cAogICAgIG1fc3RhdGUgPSBMT0FESU5HOwogICAgIG1f
ZXJyb3IgPSBudWxscHRyOwogCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVS
ZWFkZXJMb2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGll
bnQqPih0aGlzKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+
KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0aGlzKSk7
CiAgICAgbV9sb2FkZXItPnNldEVuY29kaW5nKG1fZW5jb2RpbmcpOwogICAgIG1fbG9hZGVyLT5z
ZXREYXRhVHlwZShtX2Jsb2ItPnR5cGUoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUu
Y3BwCmluZGV4IDZhZTU1MmNiY2VmYmEzNWFmNTQ5NGFkODBhMTQ3MzFkMDBhY2EzZDEuLjVjOGYx
OGUzZGFiMGViMjU5N2FkNWU4MjIxMzliZDg4ZmYzMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hl
ZEZyYW1lKEZyYW1lJiBmcmFtZSkKIAogICAgIC8vIENyZWF0ZSB0aGUgQ2FjaGVkRnJhbWVzIGZv
ciBhbGwgRnJhbWVzIGluIHRoZSBGcmFtZVRyZWUuCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBm
cmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5l
eHRTaWJsaW5nKCkpCi0gICAgICAgIG1fY2hpbGRGcmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8Q2FjaGVkRnJhbWU+KCpjaGlsZCkpOworICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZCht
YWtlVW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKG1f
ZG9jdW1lbnQtPmRvbVdpbmRvdygpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5m
cmFtZSgpKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJh
bWUmIGZyYW1lKQogICAgIC8vIEFjdGl2ZSBET00gb2JqZWN0cyBtdXN0IGJlIHN1c3BlbmRlZCBi
ZWZvcmUgd2UgY2FjaGUgdGhlIGZyYW1lIHNjcmlwdCBkYXRhLgogICAgIG1fZG9jdW1lbnQtPnN1
c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hlKTsKIAotICAgIG1fY2FjaGVkRnJh
bWVTY3JpcHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRDYWNoZWRGcmFtZURhdGE+KGZy
YW1lKTsKKyAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IG1ha2VVbmlxdWU8U2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhPihmcmFtZSk7CiAKICAgICBtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+c3Vz
cGVuZEZvclBhZ2VDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApp
bmRleCAwNjg2YWU4ZmVjZTQ0ZjFlZjY5MGU1ZjhmNmFiZTg0NjE0NjNkZjdkLi45NzQ3YTQwNDAx
NmFjODY4ZDJmNzc5NmU1MzMwNDM2ZmZhNTg3NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdU
Rjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRQYWdlQ291bnRlciwgKCJDYWNoZWQKIENh
Y2hlZFBhZ2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAg
ICwgbV9leHBpcmF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSArIFNlY29uZHMocGFnZS5z
ZXR0aW5ncygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWwoKSkpCi0gICAgLCBt
X2NhY2hlZE1haW5GcmFtZShzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5G
cmFtZSgpKSkKKyAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+
KHBhZ2UubWFpbkZyYW1lKCkpKQogewogI2lmbmRlZiBOREVCVUcKICAgICBjYWNoZWRQYWdlQ291
bnRlci5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAw
MDI5NjU1ODkyZDE1NGNiNTA0M2UxZGEyMjgyNTg3OWY2M2VkZGU1Li4zYmEyNGI5ZGUyZTk5NDE5
NmEwZGY5MmZjMzY2M2NlZWE1YmY0Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwCkBAIC00NzgsNyArNDc4LDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhp
c3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9u
J3QgZmlyZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUuCiAgICAgICAgIFNjcmlwdERpc2Fs
bG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAotICAgICAg
ICBpdGVtLm1fY2FjaGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2Up
OworICAgICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBh
Z2UpOwogICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdSZWFzb246Ok5vbmU7
CiAgICAgICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcAppbmRleCA3YTk5MWYxN2IwM2Q4M2U5MDVmN2QzZTA2MDdiZjUyYTk5Yjgw
ZTQ1Li5iMTRkMzEwMTU4YjY0NWZlODY5OWY3Zjk5ZjQxODU4YmQ1NWFlMjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIEZpbGVJ
bnB1dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAg
ICAgbV9maWxlSWNvbkxvYWRlci0+aW52YWxpZGF0ZSgpOwogCiAgICAgRmlsZUljb25Mb2FkZXJD
bGllbnQmIGNsaWVudCA9ICp0aGlzOwotICAgIG1fZmlsZUljb25Mb2FkZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOworICAgIG1fZmlsZUljb25Mb2FkZXIgPSBt
YWtlVW5pcXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOwogCiAgICAgY2hyb21lLT5sb2FkSWNv
bkZvckZpbGVzKHBhdGhzLCAqbV9maWxlSWNvbkxvYWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggODA2ZTVmM2RhZWJlMjk0ZTMz
MDIzMGRmYTVlZGU4YzkyZDU4YzMxOC4uMTdjMDI3Y2ZkZmExYmI0M2I2NDVlZTYyZDU4YzhhYzMy
MDZkODc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50
LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRD
dXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQogdm9pZCBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihhc0hUTUxFbGVtZW50KCkuaXNDb25uZWN0ZWQoKSk7
Ci0gICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZv
cm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7CisgICAgbV9mb3JtQXR0cmlidXRl
VGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4o
YXNIVE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIp
LCAqdGhpcyk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRl
VGFyZ2V0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4
IGVhNWIwOWFhYTA4ZGIyNzM5NjFiOTUzNDIyZjAzZGQ3YWQ2ZTQ2NzEuLmQwZTAzZjU2Y2IwNjNl
MjdmMTEzNDBhMjcxM2Q0Zjk2MWI1YWU2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRy
b2xsZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNhdmVkRm9ybVN0
YXRlPiBTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmluZz4KICAg
ICBzaXplX3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5kZXgrK10udG9VSW50KCk7CiAgICAg
aWYgKCFpdGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gc2F2ZWRG
b3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOworICAgIGF1dG8g
c2F2ZWRGb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwogICAgIHdoaWxl
IChpdGVtQ291bnQtLSkgewogICAgICAgICBpZiAoaW5kZXggKyAxID49IHN0YXRlVmVjdG9yLnNp
emUoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY1LDEzICszNjUsMTMgQEAg
c3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogc3RkOjp1bmlxdWVfcHRyPEZvcm1D
b250cm9sbGVyOjpTYXZlZEZvcm1TdGF0ZU1hcD4gRm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVk
Rm9ybVN0YXRlTWFwKGNvbnN0IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQmIGNvbnRyb2xMaXN0KQog
ewogICAgIEZvcm1LZXlHZW5lcmF0b3Iga2V5R2VuZXJhdG9yOwotICAgIGF1dG8gc3RhdGVNYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOworICAgIGF1dG8gc3RhdGVN
YXAgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOwogICAgIGZvciAoYXV0byYgY29u
dHJvbCA6IGNvbnRyb2xMaXN0KSB7CiAgICAgICAgIGlmICghY29udHJvbC0+c2hvdWxkU2F2ZUFu
ZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgYXV0byYgZm9ybVN0YXRlID0gc3RhdGVNYXAtPmFkZChrZXlHZW5lcmF0b3IuZm9ybUtleSgq
Y29udHJvbCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGlmICgh
Zm9ybVN0YXRlKQotICAgICAgICAgICAgZm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZl
ZEZvcm1TdGF0ZT4oKTsKKyAgICAgICAgICAgIGZvcm1TdGF0ZSA9IG1ha2VVbmlxdWU8U2F2ZWRG
b3JtU3RhdGU+KCk7CiAgICAgICAgIGZvcm1TdGF0ZS0+YXBwZW5kQ29udHJvbFN0YXRlKGNvbnRy
b2wtPm5hbWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9sLT5zYXZlRm9ybUNvbnRyb2xTdGF0
ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFwOwpAQCAtNDAzLDcgKzQwMyw3IEBAIEZv
cm1Db250cm9sU3RhdGUgRm9ybUNvbnRyb2xsZXI6OnRha2VTdGF0ZUZvckZvcm1FbGVtZW50KGNv
bnN0IEhUTUxGb3JtQ29udHJvbEVsCiAgICAgaWYgKG1fc2F2ZWRGb3JtU3RhdGVNYXAuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwogICAgIGlmICghbV9mb3Jt
S2V5R2VuZXJhdG9yKQotICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZvcm1LZXlHZW5lcmF0b3I+KCk7CisgICAgICAgIG1fZm9ybUtleUdlbmVyYXRvciA9IG1h
a2VVbmlxdWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKICAgICBTYXZlZEZvcm1TdGF0ZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQobV9mb3JtS2V5R2VuZXJhdG9yLT5m
b3JtS2V5KGNvbnRyb2wpLmltcGwoKSk7CiAgICAgaWYgKGl0ID09IG1fc2F2ZWRGb3JtU3RhdGVN
YXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDEwNDdjNThlZWMzNTM2ZTNkMzk5
M2E3YjZlNTg2MjViMDE1OTUyZjEuLmViOWJkMDY4NWQ1OTJlYTY5MjMxM2FkNDE2YzI3ZDdmMjgy
NjFmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0z
MTQsNyArMzE0LDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6aGFzUmVsKFJlbGF0aW9uIHJl
bGF0aW9uKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIHsKLSAgICAgICAgbV9yZWxMaXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQm
PigqdGhpcyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRv
a2VuKSB7CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0Pihjb25z
dF9jYXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtd
KERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogI2lmIFVTRShTWVNURU1fUFJFVklFVykK
ICAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAibm9yZWZl
cnJlciIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJub29wZW5lciIpIHx8IGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJhciIpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCBhYzA3NThkZTgzYjA0ODgyYTVkODkyMmZkNDA1
NTQ4ZWY5NTZkY2EyLi40OWFiZmE1ZjcwYTdhYjk3ZDczZTJjODJiNzY3YjA1MzUxYWRlZjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IHZvaWQgSFRNTEFyZWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkUmVnaW9uKCkKIGJvb2wgSFRN
TEFyZWFFbGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBM
YXlvdXRTaXplJiBzaXplLCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiB7CiAgICAgaWYgKG1fbGFz
dFNpemUgIT0gc2l6ZSkgewotICAgICAgICBtX3JlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0
aD4oZ2V0UmVnaW9uKHNpemUpKTsKKyAgICAgICAgbV9yZWdpb24gPSBtYWtlVW5pcXVlPFBhdGg+
KGdldFJlZ2lvbihzaXplKSk7CiAgICAgICAgIG1fbGFzdFNpemUgPSBzaXplOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAwNzcxNWNiYjUw
OTU0YTYyNjM2YzkzMzA1YTc2NTMzNTlkMWU2ZjZiLi4yMDE0ZWZlNzVjZWM0NjBlMzc5MWUzNjNm
NTYyOGU1MDAxYjhkY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcApAQCAtOTUyLDcgKzk1Miw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldEltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpIGNvCiAgICAgbV9p
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHRydWUpOwog
ICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KGRlZmF1bHRJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5j
b250ZXh0KCkpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnZtKCkpOwogICAgIEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCku
aGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtZW1vcnlDb3N0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA5NzZjOGUwYTlhMDZhOWI4M2Q2Y2E5NDFi
ZDVkZDM3YjlmMzM4NWM1Li4zMjgxNzZiNjllOGNkMWJmMjJkNGU3NjMyN2U5ZjI5Mjk2OGFiNDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMjA1LDcgKzIwNSw3
IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QK
ICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hl
PigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRD
YWNoZT4oKTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5jcHAKaW5kZXggZjE1Nzg3NGU2ZDUzNGUzZjYxMzRlNGE1ZGY0ZjUxYmUyZjY3
YTMxYS4uNjBkZDFmYjI1MjAzODYwZDNkOTJhN2E1YWNiMzMxYzJhYjA0YjU5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtODgsNyArODgsNyBAQCBj
b25zdCBBdG9tU3RyaW5nJiBEZXRhaWxzU2xvdEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9zdENo
aWxkKGNvbnN0IE5vZGUmIGNoaWxkKQogUmVmPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFp
bHNFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50KQogewogICAgIGF1dG8gZGV0YWlscyA9IGFkb3B0UmVmKCpuZXcgSFRNTERldGFp
bHNFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgZGV0YWlscy0+YWRkU2hhZG93Um9v
dChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsc1Ns
b3RBc3NpZ25tZW50PigpKSk7CisgICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290
OjpjcmVhdGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7
CiAgICAgcmV0dXJuIGRldGFpbHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ4ODkzYjFmMDk0OWVmMTAyZTI5ZDAzYzU4OTY3
YzRkZDRmM2ZkNWEuLmUxNTMxNmExOWVlZmI0NzdlM2YzNjdjODBmN2MzYzFhMmE2MzRiODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAt
NDgwLDcgKzQ4MCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlKCkKICAgICBpZiAocmVuZGVyZXIoKSAmJiB3aWxsVmFsaWRhdGUo
KSkKICAgICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNl
KCk7CiAgICAgaWYgKCFtX3ZhbGlkYXRpb25NZXNzYWdlKQotICAgICAgICBtX3ZhbGlkYXRpb25N
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CisgICAg
ICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBtYWtlVW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0
aGlzKTsKICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT51cGRhdGVWYWxpZGF0aW9uTWVzc2FnZSht
ZXNzYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcAppbmRleCA2ZWMyMmQ3NzQ5ZjJmNzhiZDMxZWY3N2VhNjM2MDczYjcx
YzU5ZmYyLi5hMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZlNjg5YzNiMWM2OGI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0
ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5p
cXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0
cmluZ0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcAppbmRleCBjNzZkNDkzYTYyY2VkODMwODgwMWI2YjAxZDMzMjFlMGEzMzNm
NTFkLi40MzVkOTUxNGRkMjlkZGQxZjZkZmIxZDE2OWUzNDdlMzE1YTMwMTk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgdm9pZCBI
VE1MRm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0ZW0qIGl0ZW0sIGNv
bnN0IEF0b21TdHJpbmcmIHAKICAgICBpZiAocGFzdE5hbWUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgaWYgKCFtX3Bhc3ROYW1lc01hcCkKLSAgICAgICAgbV9wYXN0TmFtZXNNYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKKyAgICAgICAgbV9wYXN0TmFtZXNN
YXAgPSBtYWtlVW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKICAgICBtX3Bhc3ROYW1lc01hcC0+c2V0
KHBhc3ROYW1lLmltcGwoKSwgaXRlbSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5jcHAKaW5kZXggMDJkN2Q0ZTRmYmU4NmY1MjcwZjU4NGI2YThkZWI5YmU0NmY5
N2FhOS4uYjFjODIxZGQ5YmFiYTJhMjBjYjI5ZTFjMWNmZDkwZDcxZmVjNThiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVm
PEhUTUxJRnJhbWVFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIEQKIERPTVRva2VuTGlzdCYgSFRNTElGcmFtZUVsZW1lbnQ6OnNh
bmRib3goKQogewogICAgIGlmICghbV9zYW5kYm94KSB7Ci0gICAgICAgIG1fc2FuZGJveCA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2FuZGJveEF0dHIsIFtdKERvY3Vt
ZW50JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3NhbmRib3ggPSBtYWtlVW5pcXVl
PERPTVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1Zp
ZXcgdG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiBTZWN1cml0eUNvbnRleHQ6OmlzU3VwcG9y
dGVkU2FuZGJveFBvbGljeSh0b2tlbik7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBjMjVjZGQ4MGQ1ZjhhNzcwYTFkOTcw
MDU3ODQ3YTg5YzU2ODNkYmQuLjM3NmM1MjE5NjRlMGY3MWI2ZmQ5YzIxNzJkNjIwMWMyOTI1N2Ex
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTQ4LDcg
KzE0OCw3IEBAIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJ
bnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKIHsKICAgICBpZiAoIW1faW1hZ2VMb2Fk
ZXIpCi0gICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxv
YWRlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1h
Z2VMb2FkZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKQEAgLTE2
NDEsNyArMTY0MSw3IEBAIFJlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBIVE1MSW5wdXRFbGVt
ZW50OjpkYXRhTGlzdCgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0TGlzdEF0
dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkKLSAgICAg
ICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RB
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihs
aXN0QXR0ciksIHRoaXMpOworICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9
IG1ha2VVbmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CiAgICAgZWxzZQogICAgICAgICBtX2xp
c3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggYjg2MzRjYWRhZmExOGEwYTI3Y2NmNzI4ZjliYmY1
NmNiN2Y3OGQxNi4uZjZhN2JjODAyNGZmYTVlNGJkNzFmNjlhMjdjOTdjOGM5MzZiYjRlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBA
IGJvb2wgSFRNTExpbmtFbGVtZW50OjpzdHlsZVNoZWV0SXNMb2FkaW5nKCkgY29uc3QKIERPTVRv
a2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpzaXplcygpCiB7CiAgICAgaWYgKCFtX3NpemVzKQot
ICAgICAgICBtX3NpemVzID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBz
aXplc0F0dHIpOworICAgICAgICBtX3NpemVzID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0
aGlzLCBzaXplc0F0dHIpOwogICAgIHJldHVybiAqbV9zaXplczsKIH0KIApAQCAtNTIyLDcgKzUy
Miw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZl
bnRTZW5kZXIqIGV2ZW50U2VuZGVyKQogRE9NVG9rZW5MaXN0JiBIVE1MTGlua0VsZW1lbnQ6OnJl
bExpc3QoKQogewogICAgIGlmICghbV9yZWxMaXN0KSAKLSAgICAgICAgbV9yZWxMaXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtd
KERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3JlbExp
c3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6cmVsQXR0ciwg
W10oRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gTGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQoZG9jdW1lbnQsIHRva2VuKTsKICAg
ICAgICAgfSk7CiAgICAgcmV0dXJuICptX3JlbExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCBiNTVjNDY5MDYxZGNjMDRmMmExMTlhMjU1MzhlZjA4MmZl
NmU0MzU1Li5mNjRmZTkyYjZiN2QwMWM0OTRiNTdhNzY1ZTJhNTViNjRiM2YwNDNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBI
VE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaElu
aXRpYWxpemF0aW9uKCkKIHsKLSAgICBtX21lZGlhU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOworICAgIG1fbWVkaWFTZXNzaW9uID0gbWFrZVVu
aXF1ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CiAKICAgICBtX21lZGlhU2Vzc2lvbi0+
YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdl
c3R1cmVGb3JGdWxsc2NyZWVuKTsKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0
cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRp
YSk7CkBAIC0zMDI3LDcgKzMwMjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRo
VG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRpbQogCiAgICAg
Ly8gNSAtIElmIHRoZSBzZWVrIHdhcyBpbiByZXNwb25zZSB0byBhIERPTSBtZXRob2QgY2FsbCBv
ciBzZXR0aW5nIG9mIGFuIElETCBhdHRyaWJ1dGUsIHRoZW4gY29udGludWUKICAgICAvLyB0aGUg
c2NyaXB0LiBUaGUgcmVtYWluZGVyIG9mIHRoZXNlIHN0ZXBzIG11c3QgYmUgcnVuIGFzeW5jaHJv
bm91c2x5LgotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTZWVr
Pihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CisgICAg
bV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRp
dmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICBpZiAoZnJvbURPTSkgewogICAg
ICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1aW5nIHNlZWsgZnJvbSAiLCBub3cs
ICIgdG8gIiwgdGltZSk7CiAgICAgICAgIG1fc2Vla1Rhc2tRdWV1ZS5zY2hlZHVsZVRhc2soc3Rk
OjpiaW5kKCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2MTI0NTQxZjdjZjU0YTExMGE1ZTQ4NmU0MmM3
MWNkMmEyZWZhMTkzLi4yYzZlYzA1OGU0Yzk1MjEzMWMwZWEwOGUwOGE3ZWE5NDM1ODA2NTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTkwLDYgKzk5MCw3IEBA
IGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsK
IAogICAgIHN0cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29uc3QgTWVkaWFUaW1lJiBub3csIGNv
bnN0IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRvbGVy
YW5jZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVyYW5jZSkKICAgICAgICAgICAgIDog
bm93KG5vdykKICAgICAgICAgICAgICwgdGFyZ2V0VGltZSh0YXJnZXRUaW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCBkZDRmYTJkNzBlNGY0M2Y0MmI4
MjIyZDM3ZDQ0MThmMWExMzFlZDg3Li41NmI3MjA2YWUzYmU4ZjEwYTg4MTRhZTlhZmFjNjJiZmVi
NTYwOWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAt
MTMyLDcgKzEzMiw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShj
b25zdCBTdHJpbmcmIHZhbHVlKQogRE9NVG9rZW5MaXN0JiBIVE1MT3V0cHV0RWxlbWVudDo6aHRt
bEZvcigpCiB7CiAgICAgaWYgKCFtX3Rva2VucykKLSAgICAgICAgbV90b2tlbnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOworICAgICAgICBtX3Rva2Vu
cyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgZm9yQXR0cik7CiAgICAgcmV0dXJu
ICptX3Rva2VuczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKaW5kZXggZGRhOTQ0OWQ1N2FkNDIwODU4NjI3ZGVkM2ZkZDkxODEzMjE1ZmUy
Yi4uNWI5OWQ1NTU1MzA0OTcwOTNjNmJjYTk5NTg3YzdhMmY3MjU1OTA5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yODcsNyArMjg3
LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVBZnRlclN0eWxlUmVzb2x1
dGlvbigpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgIXVzZUZhbGxiYWNrQ29udGVudCgpKSB7CiAg
ICAgICAgIGlmIChpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2Fk
ZXIpCi0gICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRN
TEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1h
a2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgICAgICBpZiAobV9uZWVk
c0ltYWdlUmVsb2FkKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21F
bGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggMTBiYzA5ZmYwOTljODg4
YjIyNjI2OTM5MGI4ZTFmOGJlNGNlMzk2Ny4uYjA0OTM5YjljMmQ3MjcwMjEzNzljNWE0ZGQzNDA0
N2Q4MTJhZDk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNw
cApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBTdW1tYXJ5U2xvdEVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgU2xvdEFzc2lnbm1lbnQgewogUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4gSFRNTFN1bW1hcnlF
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IHN1bW1hcnkgPSBhZG9wdFJl
ZigqbmV3IEhUTUxTdW1tYXJ5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIHN1bW1h
cnktPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1ha2Vf
dW5pcXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkpOworICAgIHN1bW1hcnktPmFkZFNoYWRvd1Jv
b3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlVW5pcXVlPFN1bW1hcnlTbG90RWxl
bWVudD4oKSkpOwogICAgIHJldHVybiBzdW1tYXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBhNWU3NWFhZmY1MmRkZjlmNTc1NDViYTA2N2VlYzc4
OTg4OGRkOWFiLi42N2ZmMjEyNTJmMWI4ZTgzMTBhMWQ3Y2JiMjMyZWE4YzczOTM4YTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAg
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgIHVwZGF0ZURp
c3BsYXlTdGF0ZSgpOwogICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAg
ICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1faW1h
Z2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICBt
X2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAgICBpZiAoYXV0byogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXItPmltYWdlUmVz
b3VyY2UoKS5zZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKQEAgLTEyNyw3
ICsxMjcsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogCiAgICAgICAgIGlmIChzaG91bGRE
aXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQot
ICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFn
ZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5p
cXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+
dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCA3YmViYzdhMTBjY2Jl
ZDUzY2ZlOGNhZjhhMDdjNzhlNmM1NzlkNjRmLi5iNjY4ZGExZjMyMTRkYmY5YjkxNjFlZmE4MzI1
NmM5NWNhODIxMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8
UHVibGljVVJMTWFuYWdlcj4gUHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKKyAgICBhdXRvIHB1YmxpY1VS
TE1hbmFnZXIgPSBtYWtlVW5pcXVlPFB1YmxpY1VSTE1hbmFnZXI+KGNvbnRleHQpOwogICAgIHB1
YmxpY1VSTE1hbmFnZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBwdWJsaWNVUkxN
YW5hZ2VyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVz
c2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRl
eCA4YWY3M2E4YTAwNTQ5ODBhZDE3OTA2OTU2YTg0MzJhNmY5Y2RiMTRiLi5mNWRhYjBmNDJmMmQw
NTNlNzAzYzZjNTcyM2NhMTYwMzcxZDFhMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcApAQCAtMTE1LDkgKzExNSw5IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3Nh
Z2U6OnNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVCghbWVzc2Fn
ZS5pc0VtcHR5KCkpOwogICAgIG1fbWVzc2FnZSA9IG1lc3NhZ2U7CiAgICAgaWYgKCFtX2J1YmJs
ZSkKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFs
aWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7CisgICAgICAgIG1fdGltZXIgPSBtYWtl
VW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUp
OwogICAgIGVsc2UKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0
aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKKyAg
ICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3Nh
Z2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNo
b3QoMF9zKTsKIH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6
OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKCkKICAgICBpZiAobWFnbmlmaWNhdGlvbiA8PSAw
KQogICAgICAgICBtX3RpbWVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKLSAgICAgICAgbV90aW1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRl
bGV0ZUJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRo
aXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgICAgIG1fdGlt
ZXItPnN0YXJ0T25lU2hvdChzdGQ6Om1heCg1X3MsIDFfbXMgKiBzdGF0aWNfY2FzdDxkb3VibGU+
KG1fbWVzc2FnZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uKSk7CiAgICAgfQogfQpAQCAtMjM0
LDcgKzIzNCw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdl
KCkKICAgICB9CiAKICAgICAvLyBXZSBtdXN0IG5vdCBtb2RpZnkgdGhlIERPTSB0cmVlIGluIHRo
aXMgY29udGV4dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0TWVzc2FnZSgpLgotICAgIG1fdGlt
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpk
ZWxldGVCdWJibGVUcmVlKTsKKyAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMs
ICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgbV90aW1lci0+c3Rh
cnRPbmVTaG90KDBfcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggYjE2Nzc4NDQy
OGMzYmZlOWU2ZjE2YTc3ODQwZDNmM2JiOTcwNWI5Ni4uNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBj
MmQ2NTRjY2M1NmMwMjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgc3RydWN0IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQgewogCiAgICAgRGlzcGxheUxpc3RE
cmF3aW5nQ29udGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZs
b2F0UmVjdCYgY2xpcCkKICAgICAgICAgOiBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRp
c3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBz
dGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlM
aXN0LCBzdGF0ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgICAgICB9KQogICAgIHsK
ICAgICB9CkBAIC0yMTE4LDcgKzIxMTgsNyBAQCBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OmRyYXdpbmdDb250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAoVU5M
SUtFTFkobV91c2VzRGlzcGxheUxpc3REcmF3aW5nKSkgewogICAgICAgICBpZiAoIW1fcmVjb3Jk
aW5nQ29udGV4dCkKLSAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOworICAg
ICAgICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdERyYXdp
bmdDb250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6
emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAgICAgIHJldHVybiAmbV9yZWNvcmRp
bmdDb250ZXh0LT5jb250ZXh0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2MzExOTE3NTcwZjJk
YjI4NTk0Y2JiMzQ5MDI0Njk5N2I1ODNmYmUwLi5jZDQ3MjEyNjFiMmUwMjJiNTUyNWRkM2QzY2E1
NDY5ZjljMGIzZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTM1OSw3ICsxMzU5LDcgQEAgV2ViR0xFeHRl
bnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVM
aXRlcmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCBuYW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAg
ICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlz
KSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBtYWtl
VW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJpYWJs
ZSAhPSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggZTA2YmY5OWQ1OTE1OTYzOTgwYTYxMWMzMmE4MzllMjk3ZjEyODA0NS4uZTVmZGU3MDMz
NzQ1NmEzMWUxNTcxZWUxMGYzZmQyNjQyZGIwMzZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMTYsNyArMTE2
LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2
YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAogICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAgICAgICAgIGlmICghdmFyaWFibGUp
IHsgXAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlx
dWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSAoY2Fu
RW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAogICAgICAgICAg
ICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7IFwKICAgICAg
ICAgfSBcCkBAIC0xMzIsNyArMTMyLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAg
ICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgICAgICAgICAgICAgbV9leHRTaGFk
ZXJUZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9EPigqdGhp
cyk7CisgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbWFrZVVuaXF1ZTxF
WFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0xNTksNyArMTU5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAg
ICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBudWxscHRyOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgICAgICAgICAgICAgbV93ZWJnbERy
YXdCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7Cisg
ICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbWFrZVVuaXF1ZTxXZWJHTERyYXdC
dWZmZXJzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0xNzEsNyArMTcxLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBt
X2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdM
X0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOwotICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0
YW5jZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhp
cyk7CisgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG1ha2VVbmlxdWU8
QU5HTEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggM2VjZTdlZWI3NDJmYWRiNmZl
MThiMzNlYjVhNjEzOWNlZDQxYmE1Ni4uZDE2NmZiMjM5MDc2ZDM2MjY1ZDk2YzY0NWYwNzE4NzVh
YzgyYmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTc5OSw4ICs3OTksOCBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX2NvbnRl
eHQtPnZpZXdwb3J0KDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQo
KSk7CiAgICAgbV9jb250ZXh0LT5zY2lzc29yKDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2Fu
dmFzU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJh
Y2soc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRo
aXMpKTsKLSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKHN0ZDo6bWFrZV91
bmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KHRoaXMpKTsK
KyAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2sobWFrZVVuaXF1ZTxXZWJHTFJl
bmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnNldEVy
cm9yTWVzc2FnZUNhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JN
ZXNzYWdlQ2FsbGJhY2s+KHRoaXMpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpzZXR1cEZsYWdzKCkKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQogICAgICAg
ICBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6
OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpOwogCiAg
ICAgICAgIGZvciAoYXV0byYgZXJyb3IgOiBnZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikuc3BsaXQo
J1xuJykpCi0gICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2Uo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJH
TDogIiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkpOworICAgICAgICAgICAgY2FudmFz
LT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFjZS5jb3B5UmVm
KCkpKTsKICAgICB9CiB9CiAKQEAgLTU4MDgsOSArNTgwOCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBT
dHJpbmcmCiAgICAgLy8gRXJyb3IgbWVzc2FnZXMgY2FuIG9jY3VyIGR1cmluZyBmdW5jdGlvbiBj
YWxscywgc28gc2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZW0uCiAgICAgaWYgKGxldmVsID09IE1l
c3NhZ2VMZXZlbDo6RXJyb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0
YWNrPiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVj
U3RhdGU6OmN1cnJlbnRTdGF0ZSgpKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRl
cmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFj
ZSkpOworICAgICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBs
ZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CiAgICAgfSBlbHNlCi0gICAgICAg
IGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBt
ZXNzYWdlKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6Okxv
ZywgbGV2ZWwsIG1lc3NhZ2UpOwogCiAgICAgYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpOwog
ICAgIGlmIChjYW52YXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
U1NQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVs
b2FkU2Nhbm5lci5jcHAKaW5kZXggZTg1OTBjY2M2OTcyOGFmMzkzMDFkM2FlOGQ4OTg4ZjVjMTVh
NGIyYS4uYWVmZTQ1N2Y0ZWZmMDQzNjU3NjNjYjI2ZjcxNzg0NjNlMzJlMWQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjAx
LDcgKzIwMSw3IEBAIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAgICAgICAg
aWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBVUkwgYmFzZUVsZW1lbnRVUkw7IC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJvbSB0aGUgSFRNTFByZWxvYWRTY2Fu
bmVyIHZpYSBzY2FuKCk6IHdpdGhvdXQgaXQgd2Ugd2lsbCBnZXQgcmVsYXRpdmUgVVJMcyB3cm9u
Zy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBpbmNsdWRpbmcgdGhlIGNo
YXJzZXQgaW4gdGhlIHByZWxvYWQgcmVxdWVzdD8KLSAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIiwgdXJsLCBiYXNlRWxl
bWVudFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQsIFN0cmluZygpLCBQ
cmVsb2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nKSk7CisgICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQobWFrZVVuaXF1ZTxQcmVsb2Fk
UmVxdWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBl
OjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6
Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwogICAgICAgICB9CiAgICAgICAgIG1f
c3RhdGUgPSBJbml0aWFsOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocnVsZSwgImNoYXJzZXQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA1MWJhZTRjMjFjZjk0MGRjZDhjNmQz
MjBiYzRkYmQ2NjI2YmU3ZDlmLi45YWM0NDRlZjBhNjcxZjhhNDc2OTk1N2FlMzIyMmJkOGQxMDA3
ZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEUK
ICAgICBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGVsZW1lbnRJbnRlcmZhY2UgPSBudWxscHRy
OwogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnRPckZpbmRD
dXN0b21FbGVtZW50SW50ZXJmYWNlKHRva2VuLCAmZWxlbWVudEludGVyZmFjZSk7CiAgICAgaWYg
KFVOTElLRUxZKGVsZW1lbnRJbnRlcmZhY2UpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4oKmVsZW1lbnRJbnRlcmZhY2UsIHRv
a2VuLm5hbWUoKSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJm
YWNlLCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygpKSk7CiAgICAgYXR0
YWNoTGF0ZXIoY3VycmVudE5vZGUoKSwgKmVsZW1lbnQpOwogICAgIG1fb3BlbkVsZW1lbnRzLnB1
c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92
ZSh0b2tlbikpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDRmZjRlMmI4Nzg4YTkxOWJm
NDJkMTdhZDlmZDY1MWI5YjAzYWQxOWIuLmRkOWVhMDRjNmY1MDBjODY0YjhjOTRjMTkzODM3ODc3
YWZmZGU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRN
TERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX29wdGlvbnMoZG9jdW1lbnQpCiAgICAg
LCBtX3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2Vf
dW5pcXVlPEhUTUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0
UnVubmVySG9zdCY+KCp0aGlzKSkpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlx
dWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3ko
KSwgbV9vcHRpb25zKSkKLSAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKHN0ZDo6bWFrZV91bmlxdWU8
SFRNTFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVu
aXF1ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1
bm5lckhvc3QmPigqdGhpcykpKQorICAgICwgbV90cmVlQnVpbGRlcihtYWtlVW5pcXVlPEhUTUxU
cmVlQnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0
aW9ucykpCisgICAgLCBtX3BhcnNlclNjaGVkdWxlcihtYWtlVW5pcXVlPEhUTUxQYXJzZXJTY2hl
ZHVsZXI+KCp0aGlzKSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGRvY3VtZW50KQotICAg
ICwgbV9wcmVsb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+KGRv
Y3VtZW50KSkKKyAgICAsIG1fcHJlbG9hZGVyKG1ha2VVbmlxdWU8SFRNTFJlc291cmNlUHJlbG9h
ZGVyPihkb2N1bWVudCkpCiB7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIEhUTUxEb2N1
bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50
LCBFbGVtZW4KICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1bWVu
dCgpLCByYXdQb2xpY3kpCiAgICAgLCBtX29wdGlvbnMoZnJhZ21lbnQuZG9jdW1lbnQoKSkKICAg
ICAsIG1fdG9rZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1fdHJlZUJ1aWxkZXIoc3RkOjptYWtl
X3VuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQs
IHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAsIG1fdHJlZUJ1aWxkZXIo
bWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1l
bnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKICAgICAsIG1feHNzQXVkaXRv
ckRlbGVnYXRlKGZyYWdtZW50LmRvY3VtZW50KCkpCiB7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1odG1sLWZyYWdtZW50
cwpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5p
emVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkp
IHsKICAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLmlzSW5EYXRhU3RhdGUoKSk7CiAgICAgICAg
IGlmICghbV9wcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9
IHN0ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50
KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAg
IG1fcHJlbG9hZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRp
b25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChtX2lucHV0LmN1cnJl
bnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2NhbigqbV9wcmVs
b2FkZXIsICpkb2N1bWVudCgpKTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6aW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmIHNvdXJjZSkKICAgICAgICAgLy8gQ2hl
Y2sgdGhlIGRvY3VtZW50LndyaXRlKCkgb3V0cHV0IHdpdGggYSBzZXBhcmF0ZSBwcmVsb2FkIHNj
YW5uZXIgYXMKICAgICAgICAgLy8gdGhlIG1haW4gc2Nhbm5lciBjYW4ndCBkZWFsIHdpdGggaW5z
ZXJ0aW9ucy4KICAgICAgICAgaWYgKCFtX2luc2VydGlvblByZWxvYWRTY2FubmVyKQotICAgICAg
ICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTFBy
ZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5k
ZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5u
ZXIgPSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgp
LT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIG1faW5z
ZXJ0aW9uUHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKHNvdXJjZSk7CiAgICAgICAgIG1faW5z
ZXJ0aW9uUHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRT
dGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNw
cAppbmRleCAzMGM1YjQ2ZGYxMDNkYmRmNmY0YjdjZTQwOWNjM2FhMTZjNTQ2MDEyLi42ZWYxNzEy
YjlkNjNiNzFhY2I3YzE2OWY2MmI0OWM4MmYzMTA1ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZv
aWQgSFRNTEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUoUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRl
bSwgRWxlbWVudFJlY29yZCYgcmVjCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAr
K21fc3RhY2tEZXB0aDsKLSAgICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQoc3RkOjptYWtlX3Vu
aXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVsZWFzZU5l
eHQoKSkpOworICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4dChtYWtlVW5pcXVlPEVsZW1lbnRS
ZWNvcmQ+KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSk7CiAgICAg
ICAgIHJlY29yZEFib3ZlLT5uZXh0KCktPmVsZW1lbnQoKS5iZWdpblBhcnNpbmdDaGlsZHJlbigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgSFRNTEVs
ZW1lbnRTdGFjazo6cHVzaENvbW1vbihSZWY8SFRNTFN0YWNrSXRlbT4mJiBpdGVtKQogICAgIEFT
U0VSVChtX3Jvb3ROb2RlKTsKIAogICAgICsrbV9zdGFja0RlcHRoOwotICAgIG1fdG9wID0gc3Rk
OjptYWtlX3VuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1fdG9w
KSk7CisgICAgbV90b3AgPSBtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSks
IFdURk1vdmUobV90b3ApKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwb3BDb21tb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAKaW5kZXggNTNhMTcyZDMzYWZjZGE4ZmY4OGQzNDRkOWMwZWYwOTAzY2RlY2M5Mi4uMzNkN2Iz
YmIwOGI2NTJkMGNkNjliY2VkZjFmODYwNjMxYWZhYTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcg
QEAgY2xhc3MgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyIHsKICAgICAgICAg
aWYgKCFMaW5rTG9hZGVyOjppc1N1cHBvcnRlZFR5cGUodHlwZS52YWx1ZSgpLCBtX3R5cGVBdHRy
aWJ1dGUpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byByZXF1
ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oaW5pdGlhdG9yRm9yKG1fdGFn
SWQpLCBtX3VybFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwgdHlwZS52YWx1ZSgpLCBtX21lZGlh
QXR0cmlidXRlLCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJlclBvbGljeSk7CisgICAgICAgIGF1
dG8gcmVxdWVzdCA9IG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvcihtX3Rh
Z0lkKSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9tZWRp
YUF0dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOwogICAgICAgICBy
ZXF1ZXN0LT5zZXRDcm9zc09yaWdpbk1vZGUobV9jcm9zc09yaWdpbk1vZGUpOwogICAgICAgICBy
ZXF1ZXN0LT5zZXROb25jZShtX25vbmNlQXR0cmlidXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaAppbmRleCBmNzFiMjFkMjc4OTVlNTc4YWI0N2Y1Y2Y1NDAyNTgzZTM2
MTIxZDAyLi4zZjc0NmRjNmQ2NjdjNDM3MTFiNjhkMDliNDIwMmQyM2ZmMGMwODhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjA5LDcgKzIwOSw3IEBAIGlubGlu
ZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NUWVBFKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09
IFVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdHlwZSA9IERPQ1RZUEU7Ci0gICAgbV9kb2N0eXBlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdHlwZURhdGE+KCk7CisgICAgbV9kb2N0eXBlRGF0YSA9
IG1ha2VVbmlxdWU8RG9jdHlwZURhdGE+KCk7CiB9CiAKIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6
YmVnaW5ET0NUWVBFKFVDaGFyIGNoYXJhY3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
WFNTQXVkaXRvci5jcHAKaW5kZXggYWM2ZTc5NDQzMDA3MDM2NDIxZWIxNmRmODNhOTBkM2QyNzcy
Zjg1Ni4uMDYxZDk1NjdiNzg0ZDliMGJhY2YzZjZkYjljZGU1YTgwNmIwMWMxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8WFNTSW5mbz4gWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oY29uc3QgRmls
dGVyVG9rZW5SZXF1ZXN0JiByZXF1ZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJv
b2wgZGlkQmxvY2tFbnRpcmVQYWdlID0gbV94c3NQcm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25E
aXNwb3NpdGlvbjo6QmxvY2tFbmFibGVkOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFhT
U0luZm8+KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSwgbV9kaWRTZW5kVmFsaWRY
U1NQcm90ZWN0aW9uSGVhZGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxYU1NJbmZvPihtX2Rv
Y3VtZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlv
bkhlYWRlcik7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU3RhcnRUb2tlbihjb25zdCBG
aWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCkBAIC03MTIsNyArNzEyLDcgQEAgU3VmZml4VHJl
ZTxBU0NJSUNvZGVib29rPiogWFNTQXVkaXRvcjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSgp
CiAgICAgY29uc3QgdW5zaWduZWQgc3VmZml4VHJlZURlcHRoID0gNTsKIAogICAgIGlmICghbV9k
ZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlICYmIG1fZGVjb2RlZEhUVFBCb2R5Lmxlbmd0aCgpID49
IG1pbmltdW1MZW5ndGhGb3JTdWZmaXhUcmVlKQotICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1
ZmZpeFRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1f
ZGVjb2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOworICAgICAgICBtX2RlY29kZWRIVFRQ
Qm9keVN1ZmZpeFRyZWUgPSBtYWtlVW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1f
ZGVjb2RlZEhUVFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwogICAgIHJldHVybiBtX2RlY29kZWRI
VFRQQm9keVN1ZmZpeFRyZWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDNhNjM3ZGFl
ZjAxMjRlMmU0ZWQzMzZiNjYzNzUyZDAwMjJiNWJlMDEuLmQ1NjZiY2M3OTRhYTcyNGFiZTYwYTA4
MGEzZjJjZjk1MWY0NTM3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIFJl
bmRlclRleHRDb250cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojpy
ZW5kZXJlcigpIGNvbnN0CiBPcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJU
ZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
UmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIHN0eWxlID0gZG93bmNh
c3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KCkpLmNyZWF0ZUlubmVy
VGV4dFN0eWxlKCpzaGFkb3dIb3N0U3R5bGUpOwotICAgIHJldHVybiBFbGVtZW50U3R5bGUoc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHlsZSkpKTsKKyAgICByZXR1cm4g
RWxlbWVudFN0eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CiB9
CiAKIC8vIE1BUks6IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCBl
NDAyMDBhOWE3YTIyNWRkZmQ4NzQ0ZDhjOTNiZGU2OTA5NjQ3MDA5Li40OTM0ZDcyOWMxOThkMDgw
NTlhYzhjOWYwYjE3NGE5NWU3NmY3MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRy
YWNrQ3VlJiBjdWUpCiBXZWJWVFRQYXJzZXImIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNl
cigpCiB7CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAgICAgICAgbV93ZWJWVFRQYXJzZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2Vy
Q2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fd2Vi
VlRUUGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBh
cnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVy
biAqbV93ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCA4NTViYjIzOTI3ZWIxMGEzNWE1OWQx
MmJlMGQyMzVhNzNjYWJjMTBlLi4xMGZhYTEyZjkwYjQ2MGI1MDU2ZjI1NjdjYzJkOTgxMjdkOGZh
YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRl
eHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluYmFuZFdlYlZUVFRleHRUcmFjazo6fklu
YmFuZFdlYlZUVFRleHRUcmFjaygpID0gZGVmYXVsdDsKIFdlYlZUVFBhcnNlciYgSW5iYW5kV2Vi
VlRUVGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAg
ICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRp
Y19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihz
dGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDhmMjljN2YxNjc5
YTBmYTI5MThkZWNmYTUxM2UyZDgwMjcxYTM1ZTIuLjdhMWUxYmM0NjkxYjIxMTY4OGMzY2Y1ZGE2
MTlhYzYxZGJkNmZlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9h
ZGFibGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFi
bGVUZXh0VHJhY2suY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6
OmxvYWRUaW1lckZpcmVkKCkKICAgICAvLyA0LiBEb3dubG9hZDogSWYgVVJMIGlzIG5vdCB0aGUg
ZW1wdHkgc3RyaW5nLCBwZXJmb3JtIGEgcG90ZW50aWFsbHkgQ09SUy1lbmFibGVkIGZldGNoIG9m
IFVSTCwgd2l0aCB0aGUKICAgICAvLyBtb2RlIGJlaW5nIHRoZSBzdGF0ZSBvZiB0aGUgbWVkaWEg
ZWxlbWVudCdzIGNyb3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmlidXRlLCB0aGUgb3JpZ2luIGJlaW5n
IHRoZQogICAgIC8vIG9yaWdpbiBvZiB0aGUgbWVkaWEgZWxlbWVudCdzIERvY3VtZW50LCBhbmQg
dGhlIGRlZmF1bHQgb3JpZ2luIGJlaGF2aW91ciBzZXQgdG8gZmFpbC4KLSAgICBtX2xvYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tM
b2FkZXJDbGllbnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
PigmbV90cmFja0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlx
dWU8VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJDbGllbnQmPigq
dGhpcyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90cmFja0VsZW1l
bnQtPmRvY3VtZW50KCkpKTsKICAgICBpZiAoIW1fbG9hZGVyLT5sb2FkKG1fdXJsLCAqbV90cmFj
a0VsZW1lbnQpKQogICAgICAgICBtX3RyYWNrRWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKEhUTUxU
cmFja0VsZW1lbnQ6OkZhaWx1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElIb3N0LmNwcAppbmRleCAwMzEwODBlMWFiNjZkMzJjYzljMDcxNzhmMDJm
OTM1MjNiYzcwNmIwLi45MDI5YjkyZDhiODNmMmQ3YmVkNmQ4ZTU0NTc2YzBhMTY4Y2E1MjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApA
QCAtNjEsNyArNjEsNyBAQCBSZWY8Q29tbWFuZExpbmVBUElIb3N0PiBDb21tYW5kTGluZUFQSUhv
c3Q6OmNyZWF0ZSgpCiB9CiAKIENvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0
KCkKLSAgICA6IG1faW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVP
YmplY3Q+KCkpCisgICAgOiBtX2luc3BlY3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxl
T2JqZWN0PigpKQogewogfQogCkBAIC0xOTYsNyArMTk2LDcgQEAgSlNWYWx1ZSBDb21tYW5kTGlu
ZUFQSUhvc3Q6OndyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2IKIHZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKCkKIHsKICAg
ICBtX3dyYXBwZXJzLmNsZWFyQWxsV3JhcHBlcnMoKTsKLSAgICBtX2luc3BlY3RlZE9iamVjdCA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCk7CisgICAgbV9pbnNwZWN0ZWRP
YmplY3QgPSBtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCmluZGV4IDZj
MzFlNDk4ZTQzNGQzMDBiMGYxYzZlYWI4NDM0Njc3NmNmMGEyZmMuLjgzODkwOGRjOTM2ZWZhNmJh
MjZjNzkxNjcxNDRkYjdkZTllMmFlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0
b3IuY3BwCkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIERPTUVkaXRvcjo6SW5zZXJ0QmVmb3JlQWN0
aW9uIGZpbmFsIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gcGVyZm9ybSgpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5w
YXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9k
ZSk7CisgICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gbWFrZVVuaXF1ZTxSZW1vdmVD
aGlsZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOwogICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBtX3JlbW92ZUNoaWxkQWN0aW9uLT5wZXJmb3JtKCk7CiAgICAgICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOwpAQCAtMzg1LDI3ICszODUsMjcgQEAgRE9NRWRpdG9yOjp+
RE9NRWRpdG9yKCkgPSBkZWZhdWx0OwogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6Omlu
c2VydEJlZm9yZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiBub2RlLCBOb2RlKiBhbmNo
b3JOb2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVl
PEluc2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9k
ZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPEluc2VydEJlZm9y
ZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUs
IE5vZGUmIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsKKyAgICByZXR1cm4g
bV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9k
ZSwgbm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldEF0dHJpYnV0
ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0
QXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpOworICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFt
ZSwgdmFsdWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVBdHRy
aWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVy
biBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlv
bj4oZWxlbWVudCwgbmFtZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5p
cXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSkpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJp
bmcmIGh0bWwsIE5vZGUqJiBuZXdOb2RlKQogewotICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOworICAgIGF1dG8gYWN0aW9u
ID0gbWFrZVVuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOwogICAgIGF1dG8m
IHJhd0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byByZXN1bHQgPSBtX2hpc3RvcnkucGVyZm9y
bShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAt
NDE1LDIyICs0MTUsMjIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhU
TUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYKIAogRXhjZXB0aW9uT3I8
dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKQogewotICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlvbj4o
ZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFr
ZVVuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChUZXh0
JiB0ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIHJldHVybiBtX2hpc3Rvcnku
cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2Rl
LCB0ZXh0KSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVwbGFj
ZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYg
bmV3Tm9kZSwgTm9kZSYgb2xkTm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0o
c3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZN
b3ZlKG5ld05vZGUpLCBvbGROb2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1h
a2VVbmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdO
b2RlKSwgb2xkTm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE5v
ZGVWYWx1ZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBt
X2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlvbj4obm9k
ZSwgdmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRO
b2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CiB9CiAKIHN0YXRpYyBib29sIHBvcHVsYXRl
RXJyb3JTdHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQsIEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAK
aW5kZXggMjBkYTM0MzBjMTVjODU1MTQ4NWM1NzM4YzU0N2ZhMGMzNDMxYTFiYS4uMmU5ZDc1NTY1
NWM4M2VmODgxNTk2YWFkMjBjOTZlMTBlNjg4MjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdGF0aWMgdm9p
ZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0Ojpj
cmVhdGVEaWdlc3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNNYXAqIHVudXNlZE5vZGVzTWFwKQog
ewotICAgIGF1dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWdlc3Q+KCk7CisgICAgYXV0
byBkaWdlc3QgPSBtYWtlVW5pcXVlPERpZ2VzdD4oKTsKICAgICBkaWdlc3QtPm5vZGUgPSAmbm9k
ZTsKICAgICBTSEExIHNoYTE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1MjAzNzA2YjUzYjMyYjBiYTRmMGVkNGQ0YmE0MDBi
NmM3OWI1ZTE1Li42M2ZmM2FiNjIzYTQ0NmNkNjIwZWU0N2UzOTIwNTVjZWE1MWE4NzZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC05MywxMCArOTMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9y
Q29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGll
bnQqIGluc3BlY3RvckNsaWVudCkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVt
ZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJ
bmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0
ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5k
Um91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCi0gICAgLCBtX292ZXJs
YXkoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGll
bnQpKQorICAgICwgbV9vdmVybGF5KG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwg
aW5zcGVjdG9yQ2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6
Y3JlYXRlKCkpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKHBhZ2UpCiAgICAgLCBtX3BhZ2Uo
cGFnZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAg
YXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29s
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7
CisgICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBh
Z2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2Vu
dChjb25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNv
bGVBZ2VudCkpOwogfQpAQCAtMTUzLDM3ICsxNTMsMzcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKICAgICBlbnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogICAg
IGVuc3VyZVBhZ2VBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCkpOwogCi0gICAgYXV0byBk
ZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNv
bnRleHQpOworICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8UGFnZURlYnVnZ2Vy
QWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBhdXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBkZWJ1Z2dl
ckFnZW50LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdlbnQp
KTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VOZXR3b3JrQWdl
bnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1h
a2VVbmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsKICAgICBl
bnN1cmVET01BZ2VudCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdl
Q29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOworICAg
IG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBh
Z2VDb250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VV
bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4dCkpOworICAg
IG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdl
Q29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rvcldvcmtl
ckFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPElu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOwogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4
dCkpOwogI2VuZGlmCiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAg
ICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtlVW5pcXVlPEluc3BlY3RvclNjcmlw
dFByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMt
PnNldEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5n
ZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0
cikpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTWVtb3J5QWdl
bnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVj
dG9yQ1BVUHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VIZWFwQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUF1ZGl0
QWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29u
dGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VBdWRpdEFnZW50Pihw
YWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNh
bnZhc0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAKICAgICBpZiAoYXV0byYg
Y29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5l
QVBJSG9zdCgpKQogICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmluaXQobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmNvcHlSZWYoKSk7CkBAIC00MjEsNyArNDIxLDcgQEAgSW5zcGVjdG9yQWdlbnQm
IEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAo
IW1faW5zcGVjdG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2Vu
dENvbnRleHQoKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JB
Z2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICAgICAg
bV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAgICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdlbnQpOwogICAg
ICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwpAQCAtNDMzLDcg
KzQzMyw3IEBAIEluc3BlY3RvckRPTUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVE
T01BZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckRPTUFnZW50KSB7CiAgICAgICAgIGF1
dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gZG9tQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgbV9v
dmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBkb21BZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yRE9NQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgICAgICBtX2lu
c3BlY3RvckRPTUFnZW50ID0gZG9tQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVu
ZChXVEZNb3ZlKGRvbUFnZW50KSk7CiAgICAgfQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIEluc3BlY3Rv
clBhZ2VBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KCkKIHsKICAg
ICBpZiAoIW1faW5zcGVjdG9yUGFnZUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQg
PSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gcGFnZUFnZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVu
dCwgbV9vdmVybGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBwYWdlQWdlbnQgPSBtYWtlVW5pcXVl
PEluc3BlY3RvclBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1faW5zcGVjdG9yQ2xpZW50LCBtX292
ZXJsYXkuZ2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvclBhZ2VBZ2VudCA9IHBhZ2VBZ2VudC5n
ZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUocGFnZUFnZW50KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmgKaW5kZXggMjhlZTcyN2EzNmQ2NmNlMjEwOTY5NzgzMWFlMGE4YWFjNDIz
ODU3NS4uNmMxYjUxYWRlZTlhMzg0MjYzMzM4ZjQ1ZDg4ODRhNmQ5YzM3ZWE4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNldHRpbmdzIHsK
KyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBT
ZXR0aW5ncygpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+U2V0dGluZ3MoKSA9IGRlZmF1
bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKaW5k
ZXggMDBkNWYxODUyY2ViYTI3MGMzYWY4MWMxMzIwOTAwNWRhN2IxMThhOC4uYzgxMDNkZDdkYmI4
MzIwZWFiMmU2YWQ1ZTMyYzJkNTJkNzJiMDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFj
dGlvbikKIAogdm9pZCBJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVTdGF0ZSgpCiB7Ci0g
ICAgcGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigpKTsKKyAgICBw
ZXJmb3JtKG1ha2VVbmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCkpOwogfQogCiBFeGNlcHRpb25P
cjx2b2lkPiBJbnNwZWN0b3JIaXN0b3J5Ojp1bmRvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAxNDk1ZjM5ZTJhNDVlM2M3MmE5
NjE0YWZmNTc5ZTY0ZGRmNTVjMGI1Li5kYmU1NTUzZjAxMjE3MzRhOTY1OTEzODQ2YWFkNDZiZjI3
Nzk3M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBQYXJzZWRTdHlsZVNoZWV0OjpzZXRT
b3VyY2VEYXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291cmNlRGF0YUxpc3Q+IHNvdXJjZUQKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIG1fc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8
UnVsZVNvdXJjZURhdGFMaXN0PigpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jh
cnkgc29sdXRpb24gdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBmbGF0IHNvdXJjZURhdGEgc3RydWN0
dXJlCiAgICAgLy8gY29udGFpbmluZyBvbmx5IHN0eWxlIHJ1bGVzLCBldmVuIHRob3VnaCBDU1NQ
YXJzZXIgbm93IHByb3ZpZGVzIHRoZSBmdWxsIHJ1bGUgc291cmNlIGRhdGEgdHJlZS4KQEAgLTEz
MjAsNyArMTMyMCw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0
YSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbmV3U3R5bGVTaGVldCA9IFN0
eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7Ci0gICAgYXV0byBydWxlU291cmNlRGF0YVJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOworICAgIGF1dG8gcnVs
ZVNvdXJjZURhdGFSZXN1bHQgPSBtYWtlVW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKICAg
ICAKICAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQocGFyc2VyQ29udGV4dEZvckRvY3VtZW50
KG1fcGFnZVN0eWxlU2hlZXQtPm93bmVyRG9jdW1lbnQoKSkpOwogICAgIFN0eWxlU2hlZXRIYW5k
bGVyIGhhbmRsZXIobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIG1fcGFnZVN0eWxlU2hlZXQt
Pm93bmVyRG9jdW1lbnQoKSwgcnVsZVNvdXJjZURhdGFSZXN1bHQuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggZDNi
NzU5ZjI5Y2NmMWFlMTgwMjgwZDVlMTczNjcwZDI5YzRmOGNjMS4uZmQ3Y2FkMzA3NjdlNzc1YjE2
NzVlYzQ1NGVmN2EwOGJiMDM2ZDU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElk
KTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZURh
dGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gbWFrZVVu
aXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwogICAgIHJlc291cmNlRGF0
YS0+c2V0VHlwZSh0eXBlKTsKICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChy
ZXF1ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VEYXRhKSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCBTdHJpbmcKIHsKICAgICBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQo
cmVxdWVzdElkKTsKIAotICAgIGF1dG8gcmVzb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOworICAgIGF1dG8gcmVzb3VyY2VEYXRh
ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZURhdGE+KHJlcXVlc3RJZCwgbG9hZGVySWQpOwogICAgIHJl
c291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoJmNhY2hlZFJlc291cmNlKTsKICAgICBtX3Jl
cXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLnNldChyZXF1ZXN0SWQsIFdURk1vdmUocmVzb3VyY2VE
YXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNDM1MWU4NzJhOWU1YTM2NDcyOWY1YjRmYjI2MjE2
YzczMzAyYzhkZC4uMzY0YWVhN2Q0YjVkOTExNzkzMjc1ZDY0NmYyOTVlNjdiZjBlZWVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICA6IG1faW5zdHJ1bWVudGlu
Z0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFn
ZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigq
dGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5k
Um91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkp
CiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQpAQCAtNjks
NyArNjksNyBAQCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbAogCiAgICAgYXV0byB3b3JrZXJDb250
ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3b3JrZXJDb250ZXh0KTsKKyAgICBh
dXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUFnZW50Pih3b3JrZXJD
b250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChj
b25zb2xlQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVB
Z2VudCkpOwogfQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+cmVzZXQo
KTsKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQoKTsKIAotICAgIG1fZm9yd2FyZGlu
Z0NoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4o
bV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IG1ha2VVbmlx
dWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNjb3BlKTsKICAg
ICBtX2Zyb250ZW5kUm91dGVyLT5jb25uZWN0RnJvbnRlbmQoKm1fZm9yd2FyZGluZ0NoYW5uZWwu
Z2V0KCkpOwogICAgIG1fYWdlbnRzLmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZCgmbV9mcm9u
dGVuZFJvdXRlci5nZXQoKSwgJm1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwogfQpAQCAtMTY0
LDE4ICsxNjQsMTggQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5
QWdlbnRzKCkKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgp
OwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyUnVudGltZUFn
ZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29y
a2VyUnVudGltZUFnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4obV93b3JrZXJHbG9i
YWxTY29wZSkpIHsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2Vy
dmljZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOwor
ICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyQWdlbnQ+KHdv
cmtlckNvbnRleHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2Vy
TmV0d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXZWJIZWFwQWdlbnQ+KHdvcmtlckNvbnRleHQp
KTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFn
ZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJBdWRpdEFnZW50Pih3b3JrZXJD
b250ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQogICAgICAgICBjb21tYW5kTGlu
ZUFQSUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmNvcHlSZWYoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggYThkM2M4OTljMzI4MGEyOGU2NzMyY2Y4
OGFiODRkMDAwZDQ1ZWQyZC4uZmRmMDQ0YzU3OWIzNjhjMzIwNTFiNjVkYzQ0MGUzODdmNjAxOGZi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtNDQsNyArNDQsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBj
b250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJBcHBsaWNhdGlvbkNhY2hlIl9zLCBj
b250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkFwcGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkFwcGxpY2F0aW9u
Q2FjaGVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BV
UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGNmOTRjYTgwOTZmZjU3MWQ3NGQ3NzNiMWYw
MDI3NTA1NGMwY2UxZjkuLjExNjI0ZTI0MDk0NjRmYzFlMWU2NWE2OTk4ZGJkMWIwNjgyZjBiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BV
UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50OjpJbnNwZWN0b3JD
UFVQcm9maWxlckFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoIkNQVVByb2ZpbGVyIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNQVVByb2ZpbGVyRnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6Q1BVUHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0YjY5OTQ1ZWM3MDY3
Zjk2NDNlNDgwNzMwMzQ4NDI2ODZkNjE5ZmI4Li40NGU5YzVhYmViNGM5NjZhYmFlYTk0NGE0MGQ1
ZTAzZDQ3MmQxMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIENTU1N0eWxlUnVs
ZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NTU3R5bGVSdWxlKENTU1J1bGUmIHJ1bGUpCiAKIElu
c3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRl
eHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNTUyJfcywgY29udGV4dCkKLSAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVy
Pihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1h
a2VVbmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KQEAgLTYyNiw3ICs2MjYsNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlx
dWU8U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1
ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkpOwog
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5z
cGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7
CiB9CkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVU
ZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0
b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3Bl
Y3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1
bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0U3R5bGVUZXh0
QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CiAgICAgaWYg
KHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJ
bnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBKU09OOjpPYgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZXJmb3Jt
UmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNl
dFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2Vs
ZWN0b3IpKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5w
ZXJmb3JtKG1ha2VVbmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNo
ZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRv
RXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICBy
ZXR1cm47CkBAIC03NTcsNyArNzU3LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVs
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGUKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxB
ZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CisgICAgYXV0byBh
Y3Rpb24gPSBtYWtlVW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNl
bGVjdG9yKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwogICAgIGF1dG8gcGVyZm9y
bVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oV1RGTW92ZShhY3Rpb24pKTsK
ICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApp
bmRleCA5YmUwNjExOWZiMzIxOTcwMDcyOTcyMmQ4MzZhODE2YjI1ZjFjMDE1Li4wZTUwYzc1YmE0
ODc1MTU1NmU0MTJkY2I5N2FkMTk2Njk2NWE5OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNzEs
NyArNzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6SW5zcGVjdG9yQ2FudmFzQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ2FudmFzIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yOjpDYW52YXNCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0
ZWRQYWdlKQpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJl
Y29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kCiAgICAg
aWYgKCFpbnNwZWN0b3JDYW52YXMtPmN1cnJlbnRGcmFtZUhhc0RhdGEoKSkgewogICAgICAgICBp
ZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y29udGV4
dCgpLmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgICAg
IGF1dG8mIHF1ZXVlID0gTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpOwotICAgICAg
ICAgICAgcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNy
b3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgWyYsIHByb3RlY3RlZEluc3Bl
Y3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCldIHsKKyAgICAgICAgICAgIHF1
ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihxdWV1ZSwg
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMgPSBp
bnNwZWN0b3JDYW52YXMuY29weVJlZigpXSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNh
bnZhc0VsZW1lbnQgPSBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMtPmNhbnZhc0VsZW1lbnQoKSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzRWxlbWVudC0+aXNEZXNjZW5kYW50T2Yo
Y2FudmFzRWxlbWVudC0+ZG9jdW1lbnQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IDZjMTk2ZTBjYzY4MmI0NDI1NmM3ZGRhYWUwOTBhYTBhYWQ1NTMx
N2QuLmYwYTI4YzEzMzFjNWJiMzA4OGQ1M2U3MjQzZGJhZjRlZWI2M2U3YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC0yODMsNyArMjgzLDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3Ry
aW5nKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JE
T01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVy
bGF5KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET00iX3MsIGNvbnRleHQpCiAgICAgLCBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01G
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBh
Z2UpCiAgICAgLCBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTMwMSw4ICszMDEsOCBAQCBJbnNwZWN0
b3JET01BZ2VudDo6fkluc3BlY3RvckRPTUFnZW50KCkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIq
LCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKIHsKLSAgICBtX2hpc3RvcnkgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7Ci0gICAgbV9kb21FZGl0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7CisgICAgbV9oaXN0b3J5ID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOworICAgIG1fZG9tRWRpdG9yID0gbWFrZVVuaXF1
ZTxET01FZGl0b3I+KCptX2hpc3RvcnkpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNl
dEluc3BlY3RvckRPTUFnZW50KHRoaXMpOwogICAgIG1fZG9jdW1lbnQgPSBtX2luc3BlY3RlZFBh
Z2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBpbnQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAg
ICAgICAgTm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUpOwogICAgICAgICBpZiAo
IXBhcmVudCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWluZyBwdXNoZWQgaXMgZGV0YWNoZWQg
LT4gcHVzaCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBhdXRvIG5ld01hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CisgICAgICAgICAgICBhdXRvIG5ld01hcCA9IG1ha2VV
bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBkYW5nbGluZ01hcCA9IG5ld01hcC5n
ZXQoKTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5y
ZWxlYXNlKCkpOwogICAgICAgICAgICAgYXV0byBjaGlsZHJlbiA9IEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CkBAIC0xMTc3LDcgKzExNzcs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3RvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxp
Z2h0Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdo
bGlnaHRDb25maWc+KCk7CiAgICAgYm9vbCBzaG93SW5mbyA9IGZhbHNlOyAvLyBEZWZhdWx0OiBm
YWxzZSAoZG8gbm90IHNob3cgYSB0b29sdGlwKS4KICAgICBoaWdobGlnaHRJbnNwZWN0b3JPYmpl
Y3QtPmdldEJvb2xlYW4oInNob3dJbmZvIiwgc2hvd0luZm8pOwogICAgIGhpZ2hsaWdodENvbmZp
Zy0+c2hvd0luZm8gPSBzaG93SW5mbzsKQEAgLTExOTYsMTMgKzExOTYsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgYm9vbCBlbmEKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChF
cnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBK
U09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29u
c3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAg
IGF1dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwgd2lkdGgs
IGhlaWdodCkpOwogICAgIGlubmVySGlnaGxpZ2h0UXVhZChXVEZNb3ZlKHF1YWQpLCBjb2xvciwg
b3V0bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogfQogCiB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNP
Tjo6QXJyYXkmIHF1YWRBcnJheSwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykK
IHsKLSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKTsKKyAgICBh
dXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNlUXVhZChx
dWFkQXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQg
UXVhZCBmb3JtYXQiX3M7CiAgICAgICAgIHJldHVybjsKQEAgLTEyMTIsNyArMTIxMiw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBKU09OOjpBcnJhCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGln
aGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBKU09OOjpP
YmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9v
bCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3Rk
OjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgYXV0byBoaWdobGlnaHRDb25m
aWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICBoaWdobGlnaHRDb25maWct
PmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPmNvbnRl
bnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZp
Zy0+dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VDb29y
ZGluYXRlcyA6IGZhbHNlOwpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGZyYW1lLT5vd25lckVsZW1lbnQoKSkg
ewotICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxp
Z2h0Q29uZmlnPigpOworICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8
SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0g
dHJ1ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KICAgICAgICAgaGlnaGxp
Z2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgICAgIGhpZ2hsaWdo
dENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CkBAIC0x
Mzk4LDcgKzEzOTgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0ZWROb2Rl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAgICBtX2luc3BlY3RlZE5v
ZGUgPSBub2RlOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IHN0YXRpY19j
YXN0PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciY+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKS5j
b21tYW5kTGluZUFQSUhvc3QoKSkKLSAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNw
ZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKKyAg
ICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJ
bnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKIAogICAgIG1fc3VwcHJlc3NFdmVudExpc3RlbmVyQ2hh
bmdlZEV2ZW50ID0gZmFsc2U7CiB9CkBAIC0yMzE0LDcgKzIzMTQsNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzaykKLSAgICAg
ICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2YWxpZGF0
ZVN0eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7CisgICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0
clRhc2sgPSBtYWtlVW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KHRoaXMpOwog
ICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnNjaGVkdWxlRm9yKCZlbGVtZW50KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IGU5NzFhOTlmNzA1MjRkODMxODFhZTcxNWQ4
MjY1ODgxMWZlMDg4MDguLjgxZjE0ZGMxN2JmYTA0NzQ3ZTNkMjNlNDUzZjVlNGFmOGQwOWZkODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiRE9NU3RvcmFnZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpET01TdG9yYWdlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBh
Z2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCBiMzdhNTYwY2U4MDc2OGM2NjQ0MDg1MTVm
YjA1NTEyNjE2NWJlZDgyLi4zNThhODU2NTEyZWE0ZDcxOTYzMzJhMjA2OTkwZGUzMjUwMDQxMGJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAKIElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQoV2ViQWdlbnRDb250
ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEYXRhYmFzZSJfcywgY29u
dGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJh
c2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5jcHAKaW5kZXggZTFlMDgyZTQxYWQyZDUyNGY1N2VmMTA2NDAyODg3NjExNTY4MjRiOS4u
YjU5ODJjZWUzN2UzNzQ0NzA1Mzk0NmJjZjRjNDM0YjQzMWVmOWE5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KFdlYkFnZW50
Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTGF5ZXJUcmVlIl9z
LCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJv
dXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpMYXllclRyZWVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9y
eUFnZW50LmNwcAppbmRleCAyOWM3NmQwYzdmZWE5MjJjMmEzZDk5NDE0Yzk4NmVhOGQyOGQ3N2I1
Li4yODMyOTUxZjUzODAxMjFmYTQ1MmJmYThkNDcwZjRkMzVlNzg5YjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcApAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNw
ZWN0b3JNZW1vcnlBZ2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQoUGFnZUFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiTWVtb3J5Il9zLCBjb250ZXh0KQot
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok1l
bW9yeUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3Bh
dGNoZXIoSW5zcGVjdG9yOjpNZW1vcnlCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDNl
NGU5NmViMjMxYTA1NGIyMTIxMjQ3YmMyY2IwOTE2NWYwMjY1YjMuLjVkMDgxNjM4MGNkYzY2Yzdk
Nzk2MGMxMmQzNDhhMGZiZjNmN2IxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTE3MiwxMCAr
MTcyLDEwIEBAIGNsYXNzIEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgZmluYWwgOiBw
dWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAKIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
SW5zcGVjdG9yTmV0d29ya0FnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiTmV0d29yayJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9y
OjpOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9yZXNvdXJjZXNEYXRhKHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya1Jlc291cmNlc0RhdGE+KCkpCisgICAgLCBtX3Jlc291cmNlc0RhdGEobWFrZVVuaXF1
ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDMyOWUx
YjBjNWFkOTJmYjQ1MWRmMTc2NzMzYWUyYWUzNThmYjQ5MzcuLmM2NDFhNmEwNDg0MTkzMjY4ZTI5
ZTkwZmYwMTI2YWI5MTFjOTMwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBE
b2N1bWVudExvYWRlciogSW5zcGVjdG9yUGFnZUFnZW50Ojphc3NlcnREb2N1bWVudExvYWRlcihF
cnJvclN0cmluZyYgZXJyb3JTdHJpbgogCiBJbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBh
Z2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVu
dCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
UGFnZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpQYWdlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVk
UGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAppbmRleCAzYTM2MWU5MWU2ZjJkZWIwMDQyZTE4YTdjNjRjN2I1MTZmOWI4
MGM1Li4zMGQ4NmM3NDYzYzQ3ZjViM2FkMmIzOGNmNWRlMjQ5ZDQ0ZWI5YTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIENGUnVuTG9vcFJlZiBjdXJyZW50
UnVuTG9vcCgpCiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
VGltZWxpbmUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAg
ICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpAQCAtMTkzLDcg
KzE5Myw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25z
dCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgIC8vIEZJWE1FOiBBYnN0cmFjdCBhd2F5IHBs
YXRmb3JtLXNwZWNpZmljIGNvZGUgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQyNzQ4IGlzIGZpeGVkLgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9m
cmFtZVN0YXJ0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3Rh
dGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJz
OjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgeworICAgIG1fZnJhbWVTdGFydE9ic2Vy
dmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1
bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdp
biksIFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3RyYWNraW5nIHx8IG1fZW52aXJvbm1lbnQu
c2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0yMDIsNyArMjAyLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0
YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgICAgIG1fcnVuTG9vcE5lc3Rp
bmdMZXZlbCsrOwogICAgIH0pOwogCi0gICAgbV9mcmFtZVN0b3BPYnNlcnZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lRW5kKSwgW3RoaXNd
KCkgeworICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZl
cj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29w
T3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgpIHsKICAgICAgICAgaWYgKCFtX3Ry
YWNraW5nIHx8IG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5pc1BhdXNlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTdHJpbmcKICAgICAgICAgICAgICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxv
Y2FsaXphdGlvbj8KICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5p
c0VtcHR5KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0cmlu
ZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9m
aWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzE2LDcgKzMxNiw3
IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKEpTQzo6RXhl
Y1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29u
c29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6
YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIk5vIHBy
b2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAiXCIgZG9l
cyBub3QgZXhpc3QiKTsKLSAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xl
KHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5p
bmcpKTsKKyAgICAgICAgY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
V29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggOTE2MWQ4NDNjZDM4ZTRkOTY2MTI2YWNkZDM2ZTgzZGQx
OGY1MTAwMi4uMWUzOThlZGQxYTllYTNlZjI2YmUwOWVjMDNkNmM2YzJjZDM5OGRlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogSW5zcGVjdG9yV29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KFBhZ2VBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIldvcmtlciJfcywgY29u
dGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpXb3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6V29ya2VyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fcGFnZShjb250ZXh0Lmlu
c3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L1dlYkNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMmVlZDFjZTYwYjMwMjJhZDk4MjRmYTYyOGEzNWRk
YzU0NDQ5NjBkOS4uYzIwOTRiOTkyZDM1NDE2MGYxN2VlMjhmNjQxMGE3OTNkY2RlOWYzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50
LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0CiAKICAgICBpZiAo
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNw
b25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAiICgi
LCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpLCAnKScpOwotICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5l
dHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIHJl
c3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikp
OworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxscHRyLCBy
ZXF1ZXN0SWRlbnRpZmllcikpOwogICAgIH0KIH0KIApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdl
YkNvbnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgUmVzbwogICAgICAgICBtZXNzYWdlLmFwcGVuZChlcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbigpKTsKICAgICB9CiAKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VU
eXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3Iu
ZmFpbGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOworICAgIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2Fn
ZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJ
ZGVudGlmaWVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAppbmRleCBiYjVkMWJlYzZj
NjMyMjM5YmVlNjQ2MzQzN2FlZmVkMTJiYTQ3MWQ1Li4wOWNiNmY0NjY2YWI0YzkxY2JlZTJkMGZj
ZmRkNGJhNmE2MWExMzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL1dlYkhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9XZWJIZWFwQWdlbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBAIHN0cnVjdCBHYXJiYWdlQ29sbGVj
dGlvbkRhdGEgewogfTsKIAogY2xhc3MgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzayhXZWJIZWFwQWdlbnQmKTsKICAgICB2b2lkIGFkZEdhcmJhZ2VD
b2xsZWN0aW9uKEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSYmKTsKQEAgLTk2LDcgKzk3LDcgQEAgdm9p
ZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrOjp0aW1lckZpcmVkKCkKIFdlYkhlYXBB
Z2VudDo6V2ViSGVhcEFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3Bl
Y3RvckhlYXBBZ2VudChjb250ZXh0KQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRl
eHQuaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZl
bnRzVGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+
KCp0aGlzKSkKKyAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhtYWtlVW5p
cXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlzKSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1l
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50
aW1lQWdlbnQuY3BwCmluZGV4IDVlYWZiNmEzMjg0NmU3MDAxNTNhYzgyNjgxYjdiZTUwZDNhZmU0
OGMuLjg5ODViYzk0NWZlNzVlMGU4NTFhMzZkZTM1ODRhYjA0NzFjMGZkZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVB
Z2VudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0
cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVk
UGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYjIwY2JiYzk1MDcwMjgxMWI2
NTg5YWMxZGZiZDU3MzM5MTkzZDMzNy4uODA4MmVlMzFlZWM2MGEyZjYwMzI5ZGJhYmQ0ZDk4NDJm
NmE1NWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
V29ya2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAK
IHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29w
ZS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3Nh
Z2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CisgICAgbV93b3JrZXJHbG9iYWxT
Y29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2Us
IGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CiB9CiAKIEluamVjdGVkU2NyaXB0IFdv
cmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggYmQ5ZDRjYWRlZmIyZmFhMWYyZTBiMjU3OTU1YWQ1MTI0
ZTE3OTRlZS4uMWYzZmFiYTMxMjZmMmU5YjM2Yjg0ZDEzZTczYmYxZmRhMzE3NTQyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgTGF5
b3V0U3RhdGU6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBCb3gmIGxheW91
dFJvb3QpCiBEaXNwbGF5OjpCb3gmIExheW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIHJldHVybiAqbV9sYXlvdXRUb0Rp
c3BsYXlCb3guZW5zdXJlKCZsYXlvdXRCb3gsIFsmbGF5b3V0Qm94XSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OkJveD4obGF5b3V0Qm94LnN0eWxlKCkpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+KGxheW91dEJveC5zdHlsZSgpKTsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTE0MCwxMyArMTQwLDEzIEBAIEZvcm1h
dHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRp
bmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgICAgICAvLyBzaG91bGQgbm90IGludGVyZmVyZSB3
aXRoIHRoZSBjb250ZW50IGluc2lkZS4KICAgICAgICAgICAgIC8vIDxkaXYgc3R5bGU9ImZsb2F0
OiBsZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzogaGlkZGVuIj4gPC0gaXMgYSBub24t
aW50cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gdHJpZ2dlcnMgbmV3IGJs
b2NrIGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4KICAgICAgICAgICAgIGlmIChmb3JtYXR0aW5n
Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5n
U3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0
YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogCiAgICAgICAgICAg
ICAvLyBPdGhlcndpc2UsIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgaW5oZXJpdHMgdGhlIGZsb2F0
cyBmcm9tIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0LgogICAgICAgICAgICAgLy8gRmlu
ZCB0aGUgZm9ybWF0dGluZyBzdGF0ZSBpbiB3aGljaCB0aGlzIGZvcm1hdHRpbmcgcm9vdCBsaXZl
cywgbm90IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQgdXNlIGl0cyBmbG9hdGluZyBzdGF0ZS4KICAg
ICAgICAgICAgIGF1dG8mIHBhcmVudEZvcm1hdHRpbmdTdGF0ZSA9IGNyZWF0ZUZvcm1hdHRpbmdT
dGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ1Jvb3QuZm9ybWF0dGluZ0Nv
bnRleHRSb290KCkpOyAKICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZsb2F0aW5nU3RhdGUgPSBw
YXJlbnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOwotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGbG9hdGluZ1N0
YXRlLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0
aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYg
TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVk
ZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0
dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIEJsb2NrIGZvcm1hdHRpbmcgY29udGV4
dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUuCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0
ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVh
dGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlv
dXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChj
b24KICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5n
Um9vdCwgWyZdIHsKIAogICAgICAgICAgICAgLy8gVGFibGUgZm9ybWF0dGluZyBjb250ZXh0IGFs
d2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZSAtYW5kIGl0IHN0YXlzIGVtcHR5
LgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGFibGVGb3JtYXR0aW5nU3Rh
dGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxv
YXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKICAgICAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTc0LDE4ICsxNzQsMTggQEAgc3Rk
Ojp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0
dGluZ0NvbnRleHQoY29uc3QgQm8KICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVz
dGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0
Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0
byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRl
PihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRp
bmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5n
U3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0K
IAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3Rh
Ymxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpOwogICAgICAgICBhdXRvJiBibG9j
a0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVG
b3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0
Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGlu
Z0NvbnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZv
cm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSkg
ewogICAgICAgICBhdXRvJiB0YWJsZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PFRhYmxlRm9y
bWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVl
ZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxl
Rm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0
aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRpbmdTdGF0ZSk7
CiAgICAgfQogCiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheVJ1bi5oCmluZGV4IDdhZTNiNDA5ZDc2MTE2ZjJlOWQxM2NjMzFlYjZlNTYw
NjNiMTA3NmYuLjc5OTE2Mjc1NzQwMTgzZjM1M2Y1YWZkNWIxNTIyZTU2NTNmYzg5NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaApAQCAtMzYs
NyArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheSB7CiAKIHN0
cnVjdCBSdW4geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdHJ1
Y3QgVGV4dENvbnRleHQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgcHVibGljOgogICAgICAgICBUZXh0Q29udGV4dCh1bnNpZ25lZCBwb3NpdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGExY2Q2ZDZmMWI3ZWI5MGZjYzc5MDVlMzFlOWYwNGZlM2JmODI2MGIuLjUwOGQ2NjEyOWQxNDg3
YzRlODQ0MDkzOTNkYTMzNDA5MTllYTdmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIXRyZWF0QXNJ
bmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4g
PHNwYW4+KS4KLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6
bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250
YWluZXJTdGFydCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0o
bWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRh
aW5lclN0YXJ0KSk7CiAgICAgICAgICAgICBhdXRvJiBjb250YWluZXIgPSBkb3duY2FzdDxDb250
YWluZXI+KGxheW91dEJveCk7CiAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5oYXNJbkZsb3dP
ckZsb2F0aW5nQ2hpbGQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5MiwxNyArMjky
LDE3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50
KCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS50YWtl
TGFzdCgpOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZW5kIG9mIGFuIGlubGluZSBjb250
YWluZXIgKGUuZy4gPC9zcGFuPikuCiAgICAgICAgICAgICBpZiAodHJlYXRBc0lubGluZUNvbnRh
aW5lcihsYXlvdXRCb3gpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxp
bmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVt
OjpUeXBlOjpDb250YWluZXJFbmQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRl
bTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3gu
aXNMaW5lQnJlYWtCb3goKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5s
aW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRl
bTo6VHlwZTo6SGFyZExpbmVCcmVhaykpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJ
dGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRC
b3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwg
SW5saW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5l
SXRlbTo6VHlwZTo6RmxvYXQpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
IEFTU0VSVChsYXlvdXRCb3guaXNJbmxpbmVMZXZlbEJveCgpKTsKICAgICAgICAgICAgICAgICBp
ZiAobGF5b3V0Qm94Lmhhc1RleHRDb250ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIElubGlu
ZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoZm9ybWF0dGluZ1N0YXRlLmlubGlu
ZUl0ZW1zKCksIGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElu
bGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CisgICAgICAgICAg
ICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5l
SXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpCb3gpKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5nID0gbGF5b3V0Qm94Lm5leHRJbkZs
b3dPckZsb2F0aW5nU2libGluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRMaW5lTGF5b3V0LmNwcAppbmRleCBmNzQxZGU0ODllOTQyNDYxZDc2OTJlMmU0MDQx
NTkzODNiMGM4MTYwLi4wYTIxMzAyMTNmMTI0ZWViNWY3ZjcxMTJlODg2ZDcxMmM1MzFkYTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAK
QEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVM
YXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAg
ZGlzcGxheUJveC5zZXRUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7CiAgICAgICAgICAg
ICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hXaWR0aChsb2dpY2FsUmVjdC53aWR0aCgpKTsKICAg
ICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodChsb2dpY2FsUmVjdC5oZWln
aHQoKSk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFr
ZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOworICAgICAgICAgICAgZm9ybWF0
dGluZ1N0YXRlLmFkZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJl
Y3QpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQwNyw3ICs0MDcs
NyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURp
c3BsYXlSdW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgICAgIHRvcExlZnQgKz0g
R2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRTdGF0ZSgpLCBs
YXlvdXRCb3gpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KHRvcExlZnQpOwog
ICAgICAgICAgICAgbGluZUJveFJlY3QuZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0Lndp
ZHRoKCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1h
a2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZvcm1h
dHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxS
ZWN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDIsNyArNDQy
LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVE
aXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNS
dW5DYW5CZUV4dGVuZGVkID0gcHJldmlvdXNMaW5lUnVuICYmIHByZXZpb3VzTGluZVJ1bi0+dGV4
dENvbnRleHQoKSA/IHByZXZpb3VzTGluZVJ1bi0+dGV4dENvbnRleHQoKS0+Y2FuQmVFeHRlbmRl
ZCA6IGZhbHNlOwogICAgICAgICAgICAgYXV0byByZXF1aXJlc05ld1J1biA9ICFpbmRleCB8fCAh
cHJldmlvdXNSdW5DYW5CZUV4dGVuZGVkIHx8ICZsYXlvdXRCb3ggIT0gJnByZXZpb3VzTGluZVJ1
bi0+bGF5b3V0Qm94KCk7CiAgICAgICAgICAgICBpZiAocmVxdWlyZXNOZXdSdW4pCi0gICAgICAg
ICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERp
c3BsYXk6OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyB0ZXh0
Q29udGV4dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5ndGggfSkpOworICAgICAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxv
Z2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0
LCB0ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGF1dG8mIGxhc3REaXNwbGF5UnVuID0gZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMo
KS5sYXN0KCk7CiAgICAgICAgICAgICAgICAgbGFzdERpc3BsYXlSdW4tPmV4cGFuZEhvcml6b250
YWxseShsb2dpY2FsUmVjdC53aWR0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRleCBiMDAxM2I2ZWQ1NjNiY2JmODI4
MTM5MTM0MWYyZGQ1NjE1ZWM1M2VmLi43OTA2MTk2ODFlNjc1MmQyODcyNDkzODYyMmUzYTc0YmUw
MzNmZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lSXRlbS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVtIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPElubGluZUl0ZW0+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBIYXJkTGluZUJyZWFrLCBCb3gsIEZsb2F0LCBD
b250YWluZXJTdGFydCwgQ29udGFpbmVyRW5kIH07CiAgICAgSW5saW5lSXRlbShjb25zdCBCb3gm
IGxheW91dEJveCwgVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDRmMjBhNmZmMWQ3MGNlMzQ5YmRlMGVi
ZWRmZThmODBhMzVlODVhMjguLmVkNjUyMDViN2RiOTliMGY2YWIxMGYzZWVlYWEwN2M0NDZiN2Y4
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIExpbmU6OkNvbnRlbnQ6OlJ1bjo6UnVu
KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFRleHRDb250ZXh0JiB0ZXh0Q29u
CiAKIExpbmU6OkxpbmUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBJbml0
aWFsQ29uc3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywgU2tpcFZlcnRpY2FsQWxpZ21lbnQg
c2tpcFZlcnRpY2FsQWxpZ21lbnQpCiAgICAgOiBtX2xheW91dFN0YXRlKGxheW91dFN0YXRlKQot
ICAgICwgbV9jb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8TGluZTo6Q29udGVudD4oKSkKKyAgICAs
IG1fY29udGVudChtYWtlVW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkpCiAgICAgLCBtX2xvZ2ljYWxU
b3BMZWZ0KGluaXRpYWxDb25zdHJhaW50cy5sb2dpY2FsVG9wTGVmdCkKICAgICAsIG1fYmFzZWxp
bmUoeyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQs
IGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5oZWlnaHQgLSBpbml0aWFsQ29u
c3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQgfSkKICAgICAsIG1faW5p
dGlhbFN0cnV0KGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5zdHJ1dCkKQEAg
LTIxMyw3ICsyMTMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIAogdm9pZCBMaW5lOjphcHBlbmROb25C
cmVha2FibGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBEaXNwbGF5
OjpSZWN0JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7Cisg
ICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxp
bmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSBsb2dp
Y2FsUmVjdC53aWR0aCgpOwogfQogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBMaW5lOjphcHBl
bmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5p
dCBsb2dpY2EKICAgICB9CiAKICAgICBhdXRvIHRleHRDb250ZXh0ID0gQ29udGVudDo6UnVuOjpU
ZXh0Q29udGV4dCB7IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5saW5lSXRlbS5pc0NvbGxhcHNlZCgp
ID8gMSA6IGlubGluZUl0ZW0ubGVuZ3RoKCksIGlzQ29tcGxldGVseUNvbGxhcHNlZCwgaW5saW5l
SXRlbS5pc1doaXRlc3BhY2UoKSwgY2FuQmVFeHRlbmRlZCB9OwotICAgIGF1dG8gbGluZUl0ZW0g
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgdGV4dENvbnRleHQs
IGxvZ2ljYWxSZWN0KTsKKyAgICBhdXRvIGxpbmVJdGVtID0gbWFrZVVuaXF1ZTxDb250ZW50OjpS
dW4+KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2FsUmVjdCk7CiAgICAgaWYgKGlzVHJp
bW1hYmxlICYmICFpc0NvbXBsZXRlbHlDb2xsYXBzZWQpCiAgICAgICAgIG1fdHJpbW1hYmxlQ29u
dGVudC5hZGQobGluZUl0ZW0uZ2V0KCkpOwogCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBMaW5l
OjphcHBlbmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
LCBMYXlvdXRVbml0IGwKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGlubGluZUl0ZW1D
b250ZW50SGVpZ2h0KGlubGluZUl0ZW0pKTsKICAgICB9CiAKLSAgICBtX2NvbnRlbnQtPnJ1bnMo
KS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2lj
YWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVu
dDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxX
aWR0aCArPSAobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250
YWxNYXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuY2xlYXIoKTsKIH0KQEAgLTMy
Myw3ICszMjMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWsoY29uc3QgSW5saW5l
SXRlbSYgaW5saW5lSXRlbSkKICAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGlu
bGluZUl0ZW0sIHsgfSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChsb2dpY2FsSGVp
Z2h0KCkpOwogICAgIH0KLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250
ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBs
b2dpY2FsUmVjdCkpOwogfQogCiB2b2lkIExpbmU6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdo
dChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IHJ1bkhlaWdodCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUu
aAppbmRleCBmYWYwNTQ3NTNkMzcyMmFiYzAxZDhhNzNmNDc5OTM0OWJjYjFhYTExLi43MzdhMDdi
MDMyYWY2ZmYxMTk5MDk2ZjdhMzc1NzU3ZTZkYTlmMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCkBAIC01Miw4ICs1Miwx
MCBAQCBjbGFzcyBMaW5lIHsKICAgICBMaW5lKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgSW5p
dGlhbENvbnN0cmFpbnRzJiwgU2tpcFZlcnRpY2FsQWxpZ21lbnQpOwogCiAgICAgY2xhc3MgQ29u
dGVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RydWN0IFJ1biB7CisgICAgICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgICAgICAgICBzdHJ1Y3QgVGV4dENvbnRleHQgewogICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHN0YXJ0IHsgMCB9OwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZVRleHRJdGVtLmNwcAppbmRleCBmMTMwODlhNzA4ZjNmZTNmZjliNzdmNzIwOTZj
ZGE0MmVmMzZlMjIyLi41ZTZjMjU2ZGIwYjMwOWFhZjFlMjU4MjFmMGUxZTE4ZTU2NDUyZjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVU
ZXh0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lVGV4dEl0ZW0uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06
OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29u
c3QKIHsKICAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRlbnQoKTsKICAgICBpZiAo
IXRleHQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIDAsIDAsIGZhbHNlLCBmYWxz
ZSkpOworICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxp
bmVUZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIGF1dG8m
IHN0eWxlID0gaW5saW5lQm94LnN0eWxlKCk7CiAgICAgYXV0byBwcmVzZXJ2ZU5ld2xpbmUgPSBz
dHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKTsKQEAgLTk5LDIwICs5OSwyMCBAQCB2b2lkIElubGluZVRl
eHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRl
bnQsIGNvbnN0CiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlvbiA8IHRleHQubGVuZ3RoKCkpIHsK
ICAgICAgICAgLy8gU29mdCBsaW5lYnJlYWs/CiAgICAgICAgIGlmIChpc1NvZnRMaW5lQnJlYWso
dGV4dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7Ci0gICAgICAgICAgICBp
bmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxp
bmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgICAgIGlu
bGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwg
Y3VycmVudFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOwogICAgICAgICAgICAgKytjdXJyZW50
UG9zaXRpb247CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
aXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRbY3VycmVudFBvc2l0aW9uXSwgcHJlc2VydmVOZXds
aW5lKSkgewogICAgICAgICAgICAgYXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFj
ZVBvc2l0aW9uKHRleHQsIGN1cnJlbnRQb3NpdGlvbiwgcHJlc2VydmVOZXdsaW5lKTsKICAgICAg
ICAgICAgIGF1dG8gaXNDb2xsYXBzZWQgPSBjb2xsYXBzZVdoaXRlU3BhY2UgJiYgbGVuZ3RoID4g
MTsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5s
aW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIHRydWUsIGlz
Q29sbGFwc2VkKSk7CisgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVl
PElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0cnVl
LCBpc0NvbGxhcHNlZCkpOwogICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IGxlbmd0aDsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBsZW5ndGgg
PSBtb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24oY3VycmVudFBvc2l0aW9uLCBsaW5lQnJlYWtJ
dGVyYXRvciwgc3R5bGUpOwotICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3Ro
LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1
ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgZmFs
c2UsIGZhbHNlKSk7CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQog
fQpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gSW5s
aW5lVGV4dEl0ZW06OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9zaXRpb24sIHVuCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiA+PSB0aGlzLT5zdGFydCgpKTsKICAgICBSRUxFQVNF
X0FTU0VSVChzcGxpdFBvc2l0aW9uICsgbGVuZ3RoIDw9IGVuZCgpKTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24s
IGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3Ro
LCBpc1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDgwODRlMmJiNjllOGM5
MmFhYTliN2JlNmQ4YTE0Yjc3OTUyOTEyMDMuLjNiYWY5ZWFhMWZiYTkyYzcwZjRjNmM3MzI5NWIx
MzhiMzFiYzViOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94LmNwcApAQCAtNDUsNyArNDUsNyBAQCBCb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0
cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbAogICAg
ICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKIHsKICAgICBpZiAoaXNSZXBsYWNlZCgpKQotICAgICAg
ICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlZD4o
KnRoaXMpOworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gbWFrZVVuaXF1ZTxS
ZXBsYWNlZD4oKnRoaXMpOwogfQogCiBCb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRl
cz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBj
b25zdCBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OnJhcmVEYXRhKCkgY29uc3QKIEJveDo6Qm94UmFy
ZURhdGEmIEJveDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUp
OwotICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJl
dHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxC
b3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIEJveDo6cmVtb3Zl
UmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGFiMjg0ZWEwOTliOGZhM2ZmYTcyNzRlMDZlNGNl
Y2NhZjg0NzQzMDcuLmYyYWZjYWJkMGEzODFjNmQ1YzhkYTM5ZDM0NmUxYWVhMzNkNDdiMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVl
QnVpbGRlci5jcHAKQEAgLTEzMCwyNSArMTMwLDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRy
ZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVu
CiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBDbGVhcmx5IHRoZXJlIG11c3QgYmUgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoaXMuCiAg
ICAgICAgIGlmIChwYXJlbnRSZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlw
ZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVl
PEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCks
IFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0Pihj
aGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFJl
bmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5k
ZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsK
KyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGRvd25jYXN0PFJl
bmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNw
bGF5VHlwZTo6SW5saW5lKSk7CiAgICAgICAgIHJldHVybiBjaGlsZExheW91dEJveDsKICAgICB9
CiAKICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkUmVu
ZGVyZXIpOwogICAgIGF1dG8gZGlzcGxheVR5cGUgPSByZW5kZXJlci5zdHlsZSgpLmRpc3BsYXko
KTsKICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5k
ZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25l
KHJlbmRlcmVyLnN0eWxlKCkpKTsKIAogICAgIGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIp
KSB7CiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgcHJpbmNpcGFsIHRhYmxlIHdyYXBwZXIgYm94
IChhbmQgbm90IHRoZSB0YWJsZSBib3ggaXRzZWxmKS4KLSAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJv
eDo6RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVu
ZGVyZXIuc3R5bGUoKSkpOworICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29u
dGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVX
cmFwcGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAg
fSBlbHNlIGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpKSB7CiAgICAgICAgIGlmIChk
aXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGls
ZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRB
dHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkp
KTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRB
dHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkp
KTsKICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHlldCBzdXBwb3J0IGFsbCByZXBsYWNlZCBl
bGVtZW50cyBhbmQgdGhpcyBpcyB0ZW1wb3JhcnkgYW55d2F5LgogICAgICAgICBpZiAoY2hpbGRM
YXlvdXRCb3gtPnJlcGxhY2VkKCkpCiAgICAgICAgICAgICBjaGlsZExheW91dEJveC0+cmVwbGFj
ZWQoKS0+c2V0SW50cmluc2ljU2l6ZShkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIp
LmludHJpbnNpY1NpemUoKSk7CkBAIC0xNjMsMTggKzE2MywxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBh
cmVudFJlbgogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQ
dHIocmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldFRvcCh7IG9m
ZnNldC0+aGVpZ2h0KCksIEZpeGVkIH0pOwogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRMZWZ0
KHsgb2Zmc2V0LT53aWR0aCgpLCBGaXhlZCB9KTsKLSAgICAgICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5k
ZXJlciksIFdURk1vdmUoKnN0eWxlKSk7CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZN
b3ZlKCpzdHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMo
cmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAg
ICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRB
dHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkp
KTsKICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5l
KQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5l
cj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVy
ZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENv
bnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUo
cmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNw
bGF5VHlwZTo6SW5saW5lQmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRl
clN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UgaWYg
KGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24gfHwgZGlzcGxheVR5cGUg
PT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkgewotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9
IGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwIHx8IGRp
c3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8IGRpc3BsYXlUeXBl
ID09IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCiAgICAgICAgICAgICB8fCBkaXNwbGF5
VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5
cGU6OlRhYmxlQ29sdW1uR3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxl
Q29sdW1uKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9u
ZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VV
bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxl
OjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
QEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFRyZWVCdWlsZGVyOjpjcmVhdGVUYWJsZVN0cnVjdHVy
ZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29udGFpbgogICAgICAgICB0YWJs
ZUNoaWxkID0gdGFibGVDaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiAKLSAgICBhdXRvIHRh
YmxlQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0
ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUodGFi
bGVSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgYXV0byB0YWJsZUJveCA9IG1ha2VVbmlxdWU8Q29u
dGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVC
b3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOwogICAgIGFw
cGVuZENoaWxkKHRhYmxlV3JhcHBlckJveCwgKnRhYmxlQm94KTsKICAgICB3aGlsZSAodGFibGVD
aGlsZCkgewogICAgICAgICBUcmVlQnVpbGRlcjo6Y3JlYXRlU3ViVHJlZShkb3duY2FzdDxSZW5k
ZXJFbGVtZW50PigqdGFibGVDaGlsZCksICp0YWJsZUJveCk7CkBAIC0zNjEsNyArMzYxLDcgQEAg
dm9pZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKICAgICAgICAgLy8gRklYTUU6
IE5lZWQgdG8gZmluZCBhIHdheSB0byBvdXRwdXQgZ2VvbWV0cnkgd2l0aG91dCBsYXlvdXQgY29u
dGV4dC4KICAgICAgICAgYXV0byYgcmVuZGVyVmlldyA9ICpkb2N1bWVudC0+cmVuZGVyVmlldygp
OwogICAgICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2sgPSBUcmVlQnVpbGRlcjo6Y3Jl
YXRlTGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oKmluaXRpYWxDb250YWluaW5nQmxv
Y2spOworICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gbWFrZVVuaXF1ZTxMYXlvdXQ6OkxheW91
dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgIGxheW91dFN0YXRlLT5z
ZXRRdWlya3NNb2RlKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5pbkxpbWl0ZWRRdWlya3NNb2RlKCkg
PyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6TGltaXRlZCA6IChyZW5kZXJWaWV3LmRvY3VtZW50
KCkuaW5RdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6WWVzIDogTGF5b3V0
U3RhdGU6OlF1aXJrc01vZGU6Ok5vKSk7CiAgICAgICAgIGxheW91dFN0YXRlLT51cGRhdGVMYXlv
dXQoKTsKICAgICAgICAgc2hvd0xheW91dFRyZWUoKmluaXRpYWxDb250YWluaW5nQmxvY2ssIGxh
eW91dFN0YXRlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJs
ZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZv
cm1hdHRpbmcvVGFibGVHcmlkLmNwcAppbmRleCBjN2FlM2U1ODEwZDYwMmY2NWViNzAwMmZmZTlj
NTJiZmM1YzAwMGE1Li5iNDVmMDVlNTU5MzhlNTQ2NGZiMjIxOWI4NjcyZmRlMWViNWE2NTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3Jp
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdy
aWQuY3BwCkBAIC03OCwxMyArNzgsMTMgQEAgdm9pZCBUYWJsZUdyaWQ6OmFwcGVuZENlbGwoY29u
c3QgQm94JiB0YWJsZUNlbGxCb3gpCiAgICAgICAgICAgICBpbml0aWFsU2xvdFBvc2l0aW9uLm1v
dmUoMSwgMCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgYXV0byBjZWxsSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2VsbEluZm8+KHRhYmxlQ2VsbEJveCwgaW5pdGlhbFNsb3RQb3NpdGlvbiwgQ2Vs
bFNpemUgeyByb3dTcGFuLCBjb2x1bW5TcGFuIH0pOworICAgIGF1dG8gY2VsbEluZm8gPSBtYWtl
VW5pcXVlPENlbGxJbmZvPih0YWJsZUNlbGxCb3gsIGluaXRpYWxTbG90UG9zaXRpb24sIENlbGxT
aXplIHsgcm93U3BhbiwgY29sdW1uU3BhbiB9KTsKICAgICAvLyBSb3cgYW5kIGNvbHVtbiBzcGFu
bmVycyBjcmVhdGUgYWRkaXRpb25hbCBzbG90cy4KICAgICBmb3IgKGludCByb3cgPSAxOyByb3cg
PD0gcm93U3BhbjsgKytyb3cpIHsKICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMTsgY29sdW1u
IDw9IGNvbHVtblNwYW47ICsrY29sdW1uKSB7CiAgICAgICAgICAgICBhdXRvIHBvc2l0aW9uID0g
U2xvdFBvc2l0aW9uIHsgaW5pdGlhbFNsb3RQb3NpdGlvbi54KCkgKyByb3cgLSAxLCBpbml0aWFs
U2xvdFBvc2l0aW9uLnkoKSArIGNvbHVtbiAtIDEgfTsKICAgICAgICAgICAgIEFTU0VSVCghbV9z
bG90TWFwLmNvbnRhaW5zKHBvc2l0aW9uKSk7Ci0gICAgICAgICAgICBtX3Nsb3RNYXAuYWRkKHBv
c2l0aW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RJbmZvPigqY2VsbEluZm8pKTsKKyAgICAgICAg
ICAgIG1fc2xvdE1hcC5hZGQocG9zaXRpb24sIG1ha2VVbmlxdWU8U2xvdEluZm8+KCpjZWxsSW5m
bykpOwogICAgICAgICB9CiAgICAgfQogICAgIG1fY2VsbExpc3QuYWRkKFdURk1vdmUoY2VsbElu
Zm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcv
VGFibGVHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxl
R3JpZC5oCmluZGV4IGJiYjI3MzY3NzQxN2Y5M2I4MTNiMDMzNzAzYmM5ZGY3YzEyNTFkODcuLmE0
Njg1MTk5YWU0YTYxNmJlYTYzODQyMTM0OTcyYzBmMjMzZWM0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaApAQCAtNDksNiArNDks
NyBAQCBjbGFzcyBUYWJsZUdyaWQgewogICAgIHVzaW5nIFNsb3RQb3NpdGlvbiA9IEludFBvaW50
OwogICAgIHVzaW5nIENlbGxTaXplID0gSW50U2l6ZTsKICAgICBzdHJ1Y3QgQ2VsbEluZm8gOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2VsbEluZm8+IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBDZWxsSW5mbyhjb25zdCBCb3gmIHRhYmxlQ2VsbEJv
eCwgU2xvdFBvc2l0aW9uLCBDZWxsU2l6ZSk7CiAKICAgICAgICAgY29uc3QgQm94JiB0YWJsZUNl
bGxCb3g7CkBAIC02MCw2ICs2MSw3IEBAIGNsYXNzIFRhYmxlR3JpZCB7CiAKICAgICB1c2luZyBT
bG90TG9naWNhbFNpemUgPSBMYXlvdXRTaXplOwogICAgIHN0cnVjdCBTbG90SW5mbyB7CisgICAg
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgU2xvdEluZm8oKSA9
IGRlZmF1bHQ7CiAgICAgICAgIFNsb3RJbmZvKENlbGxJbmZvJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA1MWQ3N2U0YWYxZGJkZGYwNDVhOTJjMWM4YWQz
Yjk5ZWFjZWI5N2I1Li5iNDk4YTIyNGIxOTBjNmNlODQ0ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGUoRG9j
dW1lbnRMb2FkZXImIGRvY3VtZW50TG9hCiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRl
bnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRl
cik7CiB9CiAKIENvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVu
dEZpbHRlcnMsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggZDBkNTRi
OTdlYWU3MjA0MjZmOTYxYzhkYWU4OTVlMjAzNjljZWRjYy4uYzRjZTVmNTUyMTcwYjNjZmM4Yjg0
MWI1OWE1MTBmZDc1YWE4M2ZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIHZhbGlk
YXRlUHJlZmxpZ2h0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlcwogICAgIGlmICghcGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNl
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRp
b24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICBp
ZiAoIXJlc3VsdC0+cGFyc2UocmVzcG9uc2UpCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Ny
b3NzT3JpZ2luTWV0aG9kKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgZXJyb3JEZXNjcmlwdGlvbikKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NP
cmlnaW5IZWFkZXJzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpLCBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgZXJyb3JEZXNjcmlwdGlvbikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCmluZGV4IGRlMDllNzAzOTljYzc0N2U4ODczNjk3ODM3MjRlNmRhYTlmYzc4
OGIuLjA0NTVjYWZjNTlmZjdiNmVhMWY5YTJjZDM5MzFhNjllOWY2OTQ0NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIERvY3Vt
ZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFN1YnN0aXR1dGVECiAgICAgLCBtX29yaWdpbmFsU3Vic3RpdHV0ZURhdGFXYXNWYWxp
ZChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURl
bGl2ZXJ5VGltZXIoKnRoaXMsICZEb2N1bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVs
aXZlcnlUaW1lckZpcmVkKQogICAgICwgbV9kYXRhTG9hZFRpbWVyKCp0aGlzLCAmRG9jdW1lbnRM
b2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdykKLSAgICAsIG1fYXBwbGljYXRpb25D
YWNoZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQor
ICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVI
b3N0PigqdGhpcykpCiB7CiB9CiAKQEAgLTEzMzYsNyArMTMzNiw3IEBAIHVpbnQ2NF90IERvY3Vt
ZW50TG9hZGVyOjpsb2FkQXBwbGljYXRpb25NYW5pZmVzdCgpCiAgICAgaWYgKG1hbmlmZXN0VVJM
LmlzRW1wdHkoKSB8fCAhbWFuaWZlc3RVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOworICAg
IGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2Fk
ZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOwogICAgIGF1dG8qIHJhd01h
bmlmZXN0TG9hZGVyID0gbWFuaWZlc3RMb2FkZXIuZ2V0KCk7CiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbmV4dENhbGxiYWNrSUQrKzsKICAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNl
dChXVEZNb3ZlKG1hbmlmZXN0TG9hZGVyKSwgY2FsbGJhY2tJRCk7CkBAIC0xNDI3LDcgKzE0Mjcs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmIGFyY2hp
dmUpCiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUm
IGFyY2hpdmUpCiB7CiAgICAgaWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAg
ICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKKyAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uID0gbWFrZVVuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkQWxsUmVzb3VyY2VzKGFyY2hpdmUpOwogfQogCkBA
IC0xNDM2LDcgKzE0MzYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVz
b3VyY2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZl
UmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAoIW1f
YXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOwor
ICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVS
ZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5h
ZGRSZXNvdXJjZShXVEZNb3ZlKHJlc291cmNlKSk7CiB9CiAKQEAgLTE5NjMsNyArMTk2Myw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKICAgICAgICAgLy8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcg
bV9yZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdAogICAgICAg
ICAvLyBpcyBub3cgaW4gYSBzdGF0ZSB3aGVyZSBzdGFydGluZyBhbiBlbXB0eSBsb2FkIHdpbGwg
YmUgaW5jb25zaXN0ZW50LiBSZXBsYWNlIGl0IHdpdGgKICAgICAgICAgLy8gYSBuZXcgQXBwbGlj
YXRpb25DYWNoZUhvc3QuCi0gICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CisgICAgICAgIG1fYXBwbGlj
YXRpb25DYWNoZUhvc3QgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7
CiAgICAgICAgIG1heWJlTG9hZEVtcHR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0y
MTIyLDcgKzIxMjIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBpY29uTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9h
ZGVyPigqdGhpcywgaWNvbi51cmwpOworICAgIGF1dG8gaWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8
SWNvbkxvYWRlcj4oKnRoaXMsIGljb24udXJsKTsKICAgICBhdXRvKiByYXdJY29uTG9hZGVyID0g
aWNvbkxvYWRlci5nZXQoKTsKICAgICBtX2ljb25Mb2FkZXJzLnNldChXVEZNb3ZlKGljb25Mb2Fk
ZXIpLCBuZXdDYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCBjNDUwYzA4NzBjMGRiOTAwMmI5MDRjN2I2Y2JjZTRjOTY5MDJjNmRjLi5hY2EzNDUy
OTg1YjczMTE5YmNiMjNjNDNiYTIzZWVmYjc1YTdhMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcApAQCAtNTgyLDcgKzU4Miw3IEBAIFBhZ2VDb25maWd1cmF0aW9uIHBh
Z2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEVtcHR5UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiBkdW1teVByb2dyZXNzVHJhY2tlckNsaWVu
dDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSAmZHVtbXlQ
cm9ncmVzc1RyYWNrZXJDbGllbnQuZ2V0KCk7CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFn
bm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RW1wdHlEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudD4oKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudCA9IG1ha2VVbmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKIAogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNyZWF0ZSh7IH0sIHsgfSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0
YWJhc2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgRW1wdHlEYXRhYmFzZVByb3ZpZGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGUwZjQ2MTQ4ZjJkZmFhODdmNmIy
NDI2MzdkNTA4OTE4NTIwYTYwYTIuLjgzYmViMjcxN2QzMzdjMzQxYzAxNWVjZjQ2ZDRmMzczZTA4
YjE1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjcwLDEwICsy
NzAsMTAgQEAgY2xhc3MgRnJhbWVMb2FkZXI6OkZyYW1lUHJvZ3Jlc3NUcmFja2VyIHsKIEZyYW1l
TG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSYgZnJhbWUsIEZyYW1lTG9hZGVyQ2xpZW50JiBjbGll
bnQpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwg
bV9wb2xpY3lDaGVja2VyKHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQot
ICAgICwgbV9oaXN0b3J5KHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1l
KSkKKyAgICAsIG1fcG9saWN5Q2hlY2tlcihtYWtlVW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1l
KSkKKyAgICAsIG1faGlzdG9yeShtYWtlVW5pcXVlPEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkp
CiAgICAgLCBtX25vdGlmaWVyKGZyYW1lKQotICAgICwgbV9zdWJmcmFtZUxvYWRlcihzdGQ6Om1h
a2VfdW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFtZSkpCisgICAgLCBtX3N1YmZyYW1lTG9hZGVy
KG1ha2VVbmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKICAgICAsIG1fbWl4ZWRDb250ZW50
Q2hlY2tlcihmcmFtZSkKICAgICAsIG1fc3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAg
ICwgbV9sb2FkVHlwZShGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZCkKQEAgLTMyMSw3ICszMjEsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8o
RnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6OkRpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7
CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0Nv
bnRleHQoKTsKLSAgICBtX3Byb2dyZXNzVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQ
cm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOworICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVu
aXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXI6OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KGNvbnN0IFVSTCYpCkBAIC0zNDYsNyArMzQ2
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3Qg
VVJMJikKICAgICBtX25lZWRzQ2xlYXIgPSB0cnVlOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4
dCA9IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1Ry
YWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsK
KyAgICBtX3Byb2dyZXNzVHJhY2tlciA9IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+
KG1fZnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wg
ZGVmZXJzKQpAQCAtMjY3OCw3ICsyNjc4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hp
bGRyZW4oKQogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jy
b3dzaW5nLXRoZS13ZWIuaHRtbCNuYXZpZ2F0ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXZpZ2F0
aW9uRGlzYWJsZXI+IG5hdmlnYXRpb25EaXNhYmxlcjsKICAgICBpZiAobV9mcmFtZS5pc01haW5G
cmFtZSgpKQotICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5h
dmlnYXRpb25EaXNhYmxlcj4oJm1fZnJhbWUpOworICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIg
PSBtYWtlVW5pcXVlPE5hdmlnYXRpb25EaXNhYmxlcj4oJm1fZnJhbWUpOwogCiAgICAgLy8gQW55
IHN1YmZyYW1lIGluc2VydGVkIGJ5IHVubG9hZCBldmVudCBoYW5kbGVycyBleGVjdXRlZCBpbiB0
aGUgbG9vcCBiZWxvdyB3aWxsIG5vdCBnZXQgdW5sb2FkZWQKICAgICAvLyBiZWNhdXNlIHdlIGNy
ZWF0ZSBhIGNvcHkgb2YgdGhlIHN1YmZyYW1lcyBsaXN0IGJlZm9yZSBsb29waW5nLiBUaGVyZWZv
cmUsIGl0IHdvdWxkIGJlIHVuc2FmZSB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApp
bmRleCA4ZTNhNDZiNTEwYTk5ODBjMmFmYjgwYTM0NDhhNDk4OWVhYzE5ZTE5Li41ZmZmNjdkOTQy
ZWJlOTFlMDNhNTI5NmU2ZTlkYTI0ZGIzYjdjY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaApAQCAtOTYsNiArOTYsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGlzUmVsb2FkKEZy
YW1lTG9hZFR5cGUpOwogdXNpbmcgQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPjsKIAog
Y2xhc3MgRnJhbWVMb2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEZyYW1lTG9hZGVyKTsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWRl
cihGcmFtZSYsIEZyYW1lTG9hZGVyQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5jcHAKaW5kZXggY2RmNjQ5NTI2ZmUzZDFmMzMyOGQ2ZTM2YzIwMTA4N2MzMWYxNjU1Yi4uNDA4
YzUzNjQyOWUzYjA4Nzc5OGViOTdlNzY4NjRjYzk0ODY2NjdhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcApAQCAtMTQyLDIyICsxNDIsMjIgQEAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNl
Q2xpZW4KIHsKICAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxD
YWNoZWRJbWFnZT4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1By
ZWxvYWRJbWFnZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihy
ZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdDoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGll
bnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVy
LCBkb3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TGlua1ByZWxvYWRTdHlsZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hl
ZENTU1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExp
bmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NT
dHlsZVNoZWV0PihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZv
bnRSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRG
b250UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2Up
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGll
bnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVz
b3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVs
dFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3Vy
Y2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3Vy
Y2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwog
I2VuZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWVkaWFSZXNvdXJjZToKICAg
ICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWVk
aWFQcmVsb2FkaW5nRW5hYmxlZCgpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6VHlwZTo6UmF3UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8
Q2FjaGVkUmF3UmVzb3VyY2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3
UmVzb3VyY2U+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFp
blJlc291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Okljb246CiAjaWYgRU5B
QkxFKFNWR19GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uRGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIu
aAppbmRleCAwMmNjN2QxMjBjYTRiY2ZmMzUyNWM4Zjc0OWNjNDE4MGZlNmQ0NWUyLi44YWU0YjMx
YjhiNjlmOThkMDFhZGE3ODg5OWE5OGJkMTFkZDQyNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCkBAIC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE5hdmlnYXRpb25EaXNhYmxlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkRpc2FibGVyKEZyYW1lKiBmcmFtZSkK
ICAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDU1OGM3ODA0OTU3ZWM4ODI4ODE4ZWY1NjE5YmY5ODNk
M2Y5NDBhNTUuLjNjMmMyNTJhYTUxYjk2OTI5NWVjZjE0ODEyNTRhMzI0MGVjNDJhNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTM5Nyw3
ICszOTcsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoRG9j
dW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCwgZG91YmxlCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBi
YWNrL2ZvcndhcmQgbGlzdCBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29u
ZC4KICAgICBpZiAoIW1fcmVkaXJlY3QgfHwgZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkg
ewogICAgICAgICBhdXRvIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBkZWxheSA8PSAxID8gTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6WWVzIDogTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm87Ci0gICAgICAgIHNj
aGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1
bWVudCwgZGVsYXksICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwg
TG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJkTGlzdCkpOworICAgICAgICBzY2hlZHVs
ZShtYWtlVW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5
LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5
OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKICAgICB9CiB9CiAKQEAgLTQ0NSw3ICs0NDUs
NyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoRG9j
dW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCwgUwogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVu
IGEgZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRpb24gb2YgYW5vdGhlciBmcmFtZS4KICAgICBib29s
IGR1cmluZ0xvYWQgPSAhbG9hZGVyLnN0YXRlTWFjaGluZSgpLmNvbW1pdHRlZEZpcnN0UmVhbERv
Y3VtZW50TG9hZCgpOwogCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRM
b2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwg
cmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2No
ZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2lu
LCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5n
TG9hZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9u
U2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBz
dWJtaXNzaW9uKQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6
c2NoZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvCiAg
ICAgICAgIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXM7CiAg
ICAgfQogICAgIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkRm9ybVN1
Ym1pc3Npb24+KFdURk1vdmUoc3VibWlzc2lvbiksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmlu
Z0xvYWQpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9u
PihXVEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7
CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50
JiBpbml0aWF0aW5nRG9jdW1lbnQpCkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBOYXZpZ2F0aW9u
U2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2goRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkK
ICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUo
c3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZt
X2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIo
KS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxl
ZFJlZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVudCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOwog
fQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24o
aW50IHN0ZXBzKQpAQCAtNDk4LDEzICs0OTgsMTMgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVy
OjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKICAgICB9CiAKICAgICAvLyBJ
biBhbGwgb3RoZXIgY2FzZXMsIHNjaGVkdWxlIHRoZSBoaXN0b3J5IHRyYXZlcnNhbCB0byBvY2N1
ciBhc3luY2hyb25vdXNseS4KLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxl
ZEhpc3RvcnlOYXZpZ2F0aW9uPihzdGVwcykpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2No
ZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0ZXBzKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNj
aGVkdWxlcjo6c2NoZWR1bGVQYWdlQmxvY2soRG9jdW1lbnQmIG9yaWdpbkRvY3VtZW50KQogewog
ICAgIGlmIChzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKLSAgICAgICAgc2NoZWR1bGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRQYWdlQmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CisgICAg
ICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVu
dCkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnRpbWVyRmlyZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKaW5kZXggYTJkZGFjZTI4ZjA3
YzM5MWZlMjRlMTkxOGQyNTRhNTAwMmZhYjQ3Ni4uOTdjMjNiMTUwOTJiZjM5M2IzMWQyMGM4ZjM0
ZDI1NzcyNjMxY2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogZW51bSBjbGFz
cyBOZXdMb2FkSW5Qcm9ncmVzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgCiBjbGFzcyBOYXZp
Z2F0aW9uU2NoZWR1bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBOYXZpZ2F0aW9uU2NoZWR1bGVyKEZyYW1lJik7CiAgICAgfk5hdmlnYXRp
b25TY2hlZHVsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAK
aW5kZXggZTE3YTlkYzcyZGUwMzdjOTYzNGJjMWNjOTNjMmMxYTc3YTg2YmZhMy4uMjgxN2E3NjY2
NDU3YjIzOTczYTY4ZmNmN2JjMDE4MGMxMmJmNWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFByb2dyZXNzVHJh
Y2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3ModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZQogCiAgICAgYXV0byYgaXRlbSA9IG1fcHJvZ3Jlc3NJdGVtcy5hZGQoaWRlbnRpZmll
ciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghaXRlbSkgewotICAgICAgICBp
dGVtID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7Cisg
ICAgICAgIGl0ZW0gPSBtYWtlVW5pcXVlPFByb2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRS
ZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IGVhNWRiZmJhYWIyMGJmZDQzZGVhY2YxZTc3NjExYzM0
MzNhYmFiODMuLjgyNDZiYjA3MDZjZDBjMDcxZjg5OTYyODk4NmE1YmE1MWM0OGI2MzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTUzNSw3
ICs1MzUsNyBAQCBib29sIFRleHRSZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbiwgYm9vbAogICAgIGlmIChtX2NvbnRlbnRUeXBl
ID09IFhNTCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2NoYXJzZXRQYXJzZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNlcj4oKTsKKyAgICBtX2NoYXJzZXRQ
YXJzZXIgPSBtYWtlVW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNlcj4oKTsKICAgICByZXR1cm4g
Y2hlY2tGb3JNZXRhQ2hhcnNldChkYXRhLCBsZW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGNhOWU2YzQzNDNkNzQwMTA1NTNhOWUxMGZhNjU2
M2VlNTIzOTFiYmUuLmZhOTI2ZWEwNjJhZGZmMjA1NzBjOGEzNjkxMjQ2NzJiOWVmNTY2ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC05Miw3ICs5Miw3
IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9jdWVQYXJzZXIpCi0g
ICAgICAgIG1fY3VlUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRp
Y19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOworICAgICAgICBtX2N1ZVBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0
aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KTsKIAogICAgIHdoaWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVmZmVyLT5zaXplKCkpIHsKICAg
ICAgICAgYXV0byBkYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShtX3BhcnNlT2Zmc2V0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCBhMTI2M2UyZjA0NTc0YjRmMGVlNzNjMDRlOGI2MmY1YzgwNzJhNzU4Li43NzUzMmY4NjEzNGUw
NDNhZDM3ZDNmNTk5OThhNmY1N2E0MjQxNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRo
cmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kpOwog
CiAgICAgYXV0byBzZWN1cml0eU9yaWdpbkNvcHkgPSBzZWN1cml0eU9yaWdpbi0+aXNvbGF0ZWRD
b3B5KCk7Ci0gICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29w
eSgpKTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBtYWtlVW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOwog
ICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlTdGF0ZUZyb20oY29udGVudFNlY3Vy
aXR5UG9saWN5KTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5VXBncmFkZUlu
c2VjdXJlUmVxdWVzdFN0YXRlRnJvbSgqY29udGVudFNlY3VyaXR5UG9saWN5KTsKIAotICAgIGF1
dG8gb3B0aW9uc0NvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRp
b25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6
IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7Cisg
ICAgYXV0byBvcHRpb25zQ29weSA9IG1ha2VVbmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlv
bnMsIHJlcXVlc3QuaHR0cFJlZmVycmVyKCkuaXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDog
cmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKIAog
ICAgIC8vIEFsbCBsb2FkcyBzdGFydCBvdXQgYXMgRG9jdW1lbnQuIEluc2lkZSBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyIHdlIHVwZ3JhZGUgdGhpcyB0byBhIFdvcmtlciBsb2FkLgogICAgIEFTU0VS
VChvcHRpb25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRl
eHQ6OkRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZjk3ZWIwMDQyNWJkMjliM2NiNmJjYjM0NWZi
ZmQ2NTIyNDA4ZjhjZS4uYmJhOTEwNDE5MTU0ZWNmNDNjMTIyZTJkOTBjZjg2NDU1OTdhOTlkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUmIG5vZGUsIFdURjo6RnVuY3Rpb248Ym9vbAog
ICAgIC8vIGJ1dCB3ZSBjYW4gYXBwcm94aW1hdGUgdGhhdCBieSBjaGVja2luZyBpZiBzY3JpcHRp
bmcgaXMgZW5hYmxlZCByaWdodCBub3cuCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxRdWFs
aWZpZWROYW1lPj4gdGFnTmFtZXNUb0ZpbHRlcjsKICAgICBpZiAoZnJhbWUtPnBhZ2UoKSAmJiBm
cmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxlZCgpKSB7Ci0gICAgICAgIHRh
Z05hbWVzVG9GaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4o
KTsKKyAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9IG1ha2VVbmlxdWU8VmVjdG9yPFF1YWxpZmll
ZE5hbWU+PigpOwogICAgICAgICB0YWdOYW1lc1RvRmlsdGVyLT5hcHBlbmQoSFRNTE5hbWVzOjpu
b3NjcmlwdFRhZyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAppbmRleCA4MzY4YTk1NzA1ZTMxOTJkMWY4MTdmZjJlY2Q2ODM3ZTNmOWUxMzVk
Li5lZjkzYjM1MWU3OTFkNTI3ZGFlODBmODdjNTI1YTdkYzE0ZTdlNDIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2
b2lkIENhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogICAgICAgICBtX2ltYWdlT2JzZXJ2ZXItPmNhY2hlZEltYWdlcygpLmFkZCh0aGlz
KTsKIAogICAgIGlmIChtX2ltYWdlICYmIGlzPFNWR0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAg
IG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25j
YXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtl
VW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIH0K
IAogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBj
bGllbnQpCkBAIC0zNTcsNyArMzU3LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNyZWF0
ZUltYWdlKCkKIAogICAgIGlmIChtX2ltYWdlKSB7CiAgICAgICAgIGlmIChpczxTVkdJbWFnZT4o
Km1faW1hZ2UpKQotICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gc3RkOjptYWtlX3VuaXF1
ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CisgICAgICAg
ICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2Fz
dDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIAogICAgICAgICAvLyBTZW5kIHF1ZXVlZCBjb250YWlu
ZXIgc2l6ZSByZXF1ZXN0cy4KICAgICAgICAgaWYgKG1faW1hZ2UtPnVzZXNDb250YWluZXJTaXpl
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCmluZGV4IGJlNjE4M2FiZmE1OWQ1YzhlMTYyZmVjMWQ2NTUyNDUyM2FkZTI3OGMuLmY5
YTc1ZjM1NDUyNzY5MDJhOWU0YTVjMzViNmFjNmIxZjE1MGMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMjA4LDcgKzIw
OCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpy
ZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBl
bmQoUmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJlc3BvbnNlKSk7Ci0gICAgICAgIGl0ZXJhdGVDbGll
bnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50Piht
X2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyks
IFdURk1vdmUocmVxdWVzdCksIHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXNwb25zZT4ocmVz
cG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxl
IHsKKyAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50cyksIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92ZShyZXF1ZXN0KSwgbWFrZVVuaXF1ZTxSZXNv
dXJjZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNwb25zZV0gKFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0
UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggZTQzMGU0NDdhYzQ5NDYzNmM5ODRlNzRkNDBi
OTFlNjVjZGViYjUwYi4uMDU2N2QxZDVkZThjNmYxM2UxODY4NDRhZWQ3NTU3NWNmMTdlMTcyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBA
IC01NDYsNyArNTQ2LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgLy8gVGhlcmVmb3JlLCByYXRoZXIg
dGhhbiBpbW1lZGlhdGVseSBzZW5kaW5nIGNhbGxiYWNrcyBvbiBhIGNhY2hlIGhpdCBsaWtlIG90
aGVyIENhY2hlZFJlc291cmNlcywKICAgICAgICAgLy8gd2Ugc2NoZWR1bGUgdGhlIGNhbGxiYWNr
cyBhbmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlzaCBzeW5jaHJvbm91c2x5LgogICAgICAgICBBU1NF
UlQoIW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suY29udGFpbnMoJmNsaWVudCkpOwotICAgICAg
ICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50LCBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxiYWNrPigqdGhpcywgY2xpZW50KSk7CisgICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2Fs
bGJhY2suYWRkKCZjbGllbnQsIG1ha2VVbmlxdWU8Q2FsbGJhY2s+KCp0aGlzLCBjbGllbnQpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCAyMjlhMTQyZDY0NDEzY2ViYWVmYWM1MjcxMGJi
MmJmOGRkZWRmN2JlLi4yZmZlMmI0MTg3OTk3ZWVmZGQ0MTVlMGVkYmU4MDJkYzE3MmNhZTZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMzgx
LDkgKzM4MSw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlIHsKIH07CiAKIGNsYXNzIENhY2hlZFJl
c291cmNlOjpDYWxsYmFjayB7Ci0jaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci0jZW5kaWYKIHB1YmxpYzoKICAgICBDYWxsYmFjayhDYWNoZWRSZXNvdXJj
ZSYsIENhY2hlZFJlc291cmNlQ2xpZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg0M2E5ZDFmOWQ2Yzg1
ZjEwMDBhMmM0MGYxOTY0YjQ3YTJlYjFjN2EuLmIzNGI4ZmQzNWMxMDc3YTU0NTJhYmIzNDMyMzYx
YjRjYzNkMTFjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIFJlc291cmNlRXJyb3JP
cjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1CiAgICAgLy8gRW50cnkgcG9pbnQgdG8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3
Zy5vcmcvI21haW4tZmV0Y2guCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4g
b3JpZ2luYWxSZXF1ZXN0OwogICAgIGlmIChDYWNoZWRSZXNvdXJjZTo6c2hvdWxkVXNlUGluZ0xv
YWQodHlwZSkgfHwgcmVxdWVzdC5vcHRpb25zKCkuZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpIHsKLSAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkpOworICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVz
dD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdC0+
Y2xlYXJIVFRQUmVmZXJyZXIoKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBP
cmlnaW4oKTsKICAgICB9CkBAIC0xMzkxLDcgKzEzOTEsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cHJlbAogICAgICAgICByZXNvdXJjZVZhbHVlLT5pbmNyZWFzZVByZWxvYWRDb3VudCgpOwogCiAg
ICAgICAgIGlmICghbV9wcmVsb2FkcykKLSAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICBt
X3ByZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwog
ICAgICAgICBtX3ByZWxvYWRzLT5hZGQocmVzb3VyY2VWYWx1ZS5nZXQoKSk7CiAgICAgfQogICAg
IHJldHVybiByZXNvdXJjZTsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNsZWFyUHJlbG9hZHMoQ2xlYXJQcmVsb2Fkc01vZGUgbW9kZSkKICAgICAgICAg
QVNTRVJUKHJlc291cmNlKTsKICAgICAgICAgaWYgKG1vZGUgPT0gQ2xlYXJQcmVsb2Fkc01vZGU6
OkNsZWFyU3BlY3VsYXRpdmVQcmVsb2FkcyAmJiByZXNvdXJjZS0+aXNMaW5rUHJlbG9hZCgpKSB7
CiAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZ0xpbmtQcmVsb2FkcykKLSAgICAgICAgICAgICAg
ICByZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENh
Y2hlZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRz
ID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICAg
ICAgcmVtYWluaW5nTGlua1ByZWxvYWRzLT5hZGQocmVzb3VyY2UpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKaW5kZXggNzBjYjFhZmE0Y2YxZDNhNmU2
NDJhOGFlOWRiODQ0OGY4NGQxNGJkNi4uMjJhZTcyZDhmZjVlZjcyOWExNjRjNzZhNGZkYmIwZTQ5
ZDcxZjRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50UmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKQEAgLTM1LDcgKzM1LDggQEAgY2xhc3MgQ2FjaGVk
U1ZHRG9jdW1lbnQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIHN0cnVjdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnM7CiAKLWNsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIDogcHVi
bGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlIGZpbmFsIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVy
ZW5jZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1v
cnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQyM2MzZmM1MjRiZDhiNmY1NWYzNWE2YWMyMjMwYjIw
Mi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2FmZmNiZWYzOTI3ODI2M2M0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGF1
dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwog
ICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJlc291cmNlcy5hZGQoc2Vzc2lvbklELCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8
Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAgcmV0dXJuICptYXA7CiB9CiAKQEAgLTIxNiw3ICsy
MTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHIm
JiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUo
dXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBp
dCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBhdXRvIGNhY2hlZEltYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vz
c2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICBhdXRvIGNh
Y2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJbWFnZS5wdHIo
KSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKIAogICAg
IGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKICAgICBj
YWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRlY29kZWRTaXplKCkpOwpA
QCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmxydUxpc3RGb3IoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0JgogCiAgICAgbV9hbGxSZXNvdXJjZXMucmVzZXJ2
ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsKICAgICB3aGlsZSAobV9hbGxSZXNvdXJjZXMuc2l6
ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAgIG1fYWxsUmVzb3VyY2VzLnVuY2hlY2tlZEFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+KCkpOworICAgICAgICBtX2FsbFJlc291cmNlcy51
bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxMUlVMaXN0PigpKTsKICAgICByZXR1cm4gKm1fYWxs
UmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJl
dmlld0xvYWRlci5oCmluZGV4IDYxOGU5NDI5NTAxN2RjM2I4MzAzNjVjMTE2NzYxNTM4YjFkYjYy
MzguLjE1MDNkNzhlM2FmNTk5NDk1NGIzM2MyYTgwODRmNGZlYTYzMDA3MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFByZXZpZXdM
b2FkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFByZXZpZXdMb2FkZXIpOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UHJldmlld0xvYWRlcj4gY3JlYXRlKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3
TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCmlu
ZGV4IGY2YjgyMjE3OTE2Y2FkOTViZmU5NjBiYjNlMzc4NGEyNzBhOWJhNjcuLmM1Y2E1YzI1ZjEx
YjRkOGE5Y2E5M2VmYzg4OTA5OTA3ZjZiNzY2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTg2LDcgKzg2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoUmVzb3VyY2VMb2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxvYWRlciByZXNv
dXJjZVIKIAogICAgIF9yZXNvdXJjZUxvYWRlciA9IG1ha2VXZWFrUHRyKHJlc291cmNlTG9hZGVy
KTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwotICAgIF9jb252ZXJ0ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSk7CisgICAg
X2NvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNl
KTsKICAgICBfYnVmZmVyZWREYXRhQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKICAgICBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyA9IHJlc291
cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXcoKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIC0gKHZvaWQpY29u
bmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0aEVycm9yOihO
U0Vycm9yICopZXJyCiAgICAgfQogCiAgICAgX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFtz
ZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChjb25zdCBTdHJpbmcmIHBhc3N3
b3JkKSB7Ci0gICAgICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252
ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOworICAgICAgICBfY29udmVydGVyID0g
bWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UsIHBhc3N3b3JkKTsK
ICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgYXBwZW5kRGF0YUFycmF5
Ol9idWZmZXJlZERhdGFBcnJheS5nZXQoKV07CiAgICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9y
bUNvbnZlcnRlcigpIGZpbmlzaGVkQXBwZW5kaW5nRGF0YV07CiAgICAgfSk7CkBAIC0yNjgsNyAr
MjY4LDcgQEAgUHJldmlld0xvYWRlcjo6flByZXZpZXdMb2FkZXIoKQogc3RkOjp1bmlxdWVfcHRy
PFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2FkZXI6OmNyZWF0ZShSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQoUHJl
dmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSk7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25z
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UHJldmlld0xvYWRlcj4obG9hZGVyLCByZXNwb25z
ZSk7CiB9CiAKIGJvb2wgUHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuaAppbmRleCBlNmFkYjY3ZGE5NDg2ODYyNmZlMjA2ZmYxNmU2NGRkYWNlMjcwMWZlLi42
MTNlNzg5MmI0MTBmM2IyYTQ5NGVjZmI2ODAwMGFhYzBkYzY2MDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFz
cyBUZXh0VHJhY2tMaXN0Owogc3RydWN0IE1lZGlhU2VsZWN0aW9uT3B0aW9uOwogCiBjbGFzcyBD
YXB0aW9uVXNlclByZWZlcmVuY2VzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VHcm91cCYpOwogICAgIHZpcnR1
YWwgfkNhcHRpb25Vc2VyUHJlZmVyZW5jZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBjNDc5Y2ExZjljYjA3ZDRhYzdiNGI5ZmIyMjg1
MWYwYzk5NGIxNzE0Li40Y2NkYWIwNGI3YjNmNTUzNGNlY2MyYTE5ZWMwYTRiY2I3YWIxN2VhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0x
ODAsNyArMTgwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNv
bnRyb2xsZXI6Om1heWJlQ3JlYXRlQ29udGV4dE1lbnUoRXZlbnQKICAgICB9CiAjZW5kaWYKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51PigpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPENvbnRleHRNZW51PigpOwogfQogCiB2b2lkIENvbnRleHRNZW51Q29udHJvbGxl
cjo6c2hvd0NvbnRleHRNZW51KEV2ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggZjYzZGFhN2Y2MzQ3MjU1ODg3M2RiM2I1ODNiYzI1MTJh
MTc3NTI3YS4uY2RjNzRmNmRlMDllOTNkZTlhYWI5MjM1NmVmMmZiZjQ0ZGQyZDMwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
Y2xhc3MgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3Zlcmxh
eSB7CiAKIGJvb2wgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCiB7Ci0g
ICAgYXV0byByZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lvbj4oKTsKKyAgICBhdXRvIHJl
Z2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigpOwogICAgIAogICAgIGZvciAoY29uc3QgRnJhbWUq
IGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBpZiAoIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1l
LT5kb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDQ4YzA3
MzQ3NzBlYjExMGMxYzVkODQ1M2RkMDg3OTkyZTU2NDlhMWUuLmQyMGI5OGM0MTVlZWM4Mjc2Zjg5
MDBmMjRjNjdhOTdmMTAxZDBhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
QEAgLTM4NSw3ICszODUsNyBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSYgZnJh
bWUpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9wZW5kaW5nTW9tZW50dW1XaGVlbEV2ZW50
c1RpbWVyKCp0aGlzLCAmRXZlbnRIYW5kbGVyOjpjbGVhckxhdGNoZWRTdGF0ZSkKICNlbmRpZgot
ICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9zY3JvbGxD
b250cm9sbGVyPigpKQorICAgICwgbV9hdXRvc2Nyb2xsQ29udHJvbGxlcihtYWtlVW5pcXVlPEF1
dG9zY3JvbGxDb250cm9sbGVyPigpKQogI2lmICFFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAg
ICAsIG1fZmFrZU1vdXNlTW92ZUV2ZW50VGltZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmZha2VN
b3VzZU1vdmVFdmVudFRpbWVyRmlyZWQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCAyMzM3Mjk0MmIzNzYzZDkyOTNkMjY1YjM1YWNjMTUyNWUzNGNjMDBmLi5hNWU1ZWRl
MGI0Yjc0N2U0Nzk0ZGM3OTQwNmFlZmNjYmIzODVkZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBSZW5kZXJCb3gqIEZyYW1lVmlldzo6ZW1iZWRk
ZWRDb250ZW50Qm94KCkgY29uc3QKIHZvaWQgRnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRv
VXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKIHsKICAgICBpZiAo
IW1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUpCi0gICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9V
cGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0
Kj4+KCk7CisgICAgICAgIG1fZW1iZWRkZWRPYmplY3RzVG9VcGRhdGUgPSBtYWtlVW5pcXVlPExp
c3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+KCk7CiAKICAgICBIVE1MRnJhbWVPd25l
ckVsZW1lbnQmIGVsZW1lbnQgPSBlbWJlZGRlZE9iamVjdC5mcmFtZU93bmVyRWxlbWVudCgpOwog
ICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxl
bWVudD4oZWxlbWVudCkpIHsKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHZvaWQgRnJhbWVWaWV3Ojph
ZGRTbG93UmVwYWludE9iamVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICBib29sIGhh
ZFNsb3dSZXBhaW50T2JqZWN0cyA9IGhhc1Nsb3dSZXBhaW50T2JqZWN0cygpOwogCiAgICAgaWYg
KCFtX3Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyRWxlbWVudCo+PigpOworICAgICAg
ICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJF
bGVtZW50Kj4+KCk7CiAKICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cy0+YWRkKCZyZW5kZXJlcik7
CiAgICAgaWYgKGhhZFNsb3dSZXBhaW50T2JqZWN0cykKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWludE9iamVjdChSZW5kZXJFbGVtZW50JiByZW5k
ZXJlcikKIHZvaWQgRnJhbWVWaWV3OjphZGRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIG9iamVjdCkKIHsKICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHMpCi0gICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ+KCk7CisgICAgICAgIG1f
dmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSBtYWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RTZXQ+KCk7CiAKICAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMt
PmNvbnRhaW5zKG9iamVjdCkpIHsKICAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0
cy0+YWRkKG9iamVjdCk7CkBAIC00ODY2LDcgKzQ4NjYsNyBAQCBTdHJpbmcgRnJhbWVWaWV3Ojp0
cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCkgY29uc3QKIGJvb2wgRnJhbWVWaWV3OjphZGRTY3Jv
bGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgaWYgKCFt
X3Njcm9sbGFibGVBcmVhcykKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOworICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9
IG1ha2VVbmlxdWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CiAgICAgCiAgICAgaWYgKG1fc2Nyb2xs
YWJsZUFyZWFzLT5hZGQoc2Nyb2xsYWJsZUFyZWEpLmlzTmV3RW50cnkpIHsKICAgICAgICAgc2Ny
b2xsYWJsZUFyZWFTZXRDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXdMYXlvdXRDb250ZXh0LmNwcAppbmRleCA3MzA5OGYxZmExZjEwNzFlNjFmY2QzYWE2NTM1MzMw
ZDNlODliZjU5Li5lODU4YzkyY2JmOGMzMWEzMjFiZjM4MDA5N2FiYTU1ZjE1NzAwMGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKQEAgLTU5
NiwxNCArNTk2LDE0IEBAIHZvaWQgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0
YXRlKFJlbmRlckVsZW1lbnQmIHJvb3QpCiAgICAgQVNTRVJUKCFtX3BhaW50T2Zmc2V0Q2FjaGVE
aXNhYmxlQ291bnQpOwogICAgIEFTU0VSVCghbGF5b3V0U3RhdGUoKSk7CiAKLSAgICBtX2xheW91
dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KHJv
b3QpKTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5
b3V0U3RhdGU+KHJvb3QpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNo
TGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVkZWQoUmVuZGVyQmxvY2tGbG93JiBsYXlvdXRS
b290KQogewogICAgIGlmIChsYXlvdXRTdGF0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91
dFN0YXRlPihsYXlvdXRSb290LCBSZW5kZXJMYXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6Olllcykp
OworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRT
dGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0U3RhdGU6OklzUGFnaW5hdGVkOjpZZXMpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIEZyYW1l
Vmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyLCBj
b25zdCBMYXlvdXRTaQogICAgIGF1dG8qIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUo
KTsKICAgICBpZiAoIWxheW91dFN0YXRlIHx8ICFuZWVkc0Z1bGxSZXBhaW50KCkgfHwgbGF5b3V0
U3RhdGUtPmlzUGFnaW5hdGVkKCkgfHwgcmVuZGVyZXIuZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3co
KQogICAgICAgICB8fCBsYXlvdXRTdGF0ZS0+bGluZUdyaWQoKSB8fCAocmVuZGVyZXIuc3R5bGUo
KS5saW5lR3JpZCgpICE9IFJlbmRlclN0eWxlOjppbml0aWFsTGluZUdyaWQoKSAmJiByZW5kZXJl
ci5pc1JlbmRlckJsb2NrRmxvdygpKSkgewotICAgICAgICBtX2xheW91dFN0YXRlU3RhY2suYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVTdGFj
aywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsKKyAg
ICAgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0
YXRlPihtX2xheW91dFN0YXRlU3RhY2ssIHJlbmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBh
Z2VIZWlnaHRDaGFuZ2VkKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAppbmRleCA4YzNjNTJh
MDczNTIyNzkwY2QwYzRhNjBkYzA1ZTYxNDEyYzE5YWU5Li41MjI3ZTQyYWMwOTZjZTY5MjVkN2Vj
NmExOGU1MTkyNWQyZTAwNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAK
QEAgLTE0OSw3ICsxNDksNyBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyJiBOYXZpZ2F0b3JCYXNl
OjpzZXJ2aWNlV29ya2VyKCkKIHsKICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXJ2aWNlV29ya2VyRW5hYmxlZCgpKTsKICAgICBpZiAoIW1fc2Vy
dmljZVdvcmtlckNvbnRhaW5lcikKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksICp0aGlzKTsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gbWFr
ZVVuaXF1ZTxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
ICp0aGlzKTsKICAgICByZXR1cm4gKm1fc2VydmljZVdvcmtlckNvbnRhaW5lcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggNGQ0YTQ5YzczMWE0Y2FmNDZlZGU2MTE1NzdjYjM5ZTZiZmZmMGEy
Mi4uYjgyMGU0OWQzNjZkNzE2OTI1YTk3M2UyYjI4YzliNTgyYWY5OTczYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0yMTEsMjYgKzIxMSwyNiBAQCBzdGF0aWMgY29uc3RleHByIE9wdGlvblNldDxB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKQogfQogCiBQYWdl
OjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCi0gICAgOiBtX2No
cm9tZShzdGQ6Om1ha2VfdW5pcXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5j
aHJvbWVDbGllbnQpKQotICAgICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8RHJhZ0NhcmV0Q29udHJvbGxlcj4oKSkKKyAgICA6IG1fY2hyb21lKG1ha2VVbmlxdWU8Q2hy
b21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCisgICAgLCBtX2Ry
YWdDYXJldENvbnRyb2xsZXIobWFrZVVuaXF1ZTxEcmFnQ2FyZXRDb250cm9sbGVyPigpKQogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgLCBtX2RyYWdDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVu
dCkpCisgICAgLCBtX2RyYWdDb250cm9sbGVyKG1ha2VVbmlxdWU8RHJhZ0NvbnRyb2xsZXI+KCp0
aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCkpCiAjZW5kaWYKLSAgICAsIG1fZm9j
dXNDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFn
ZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkpKQorICAgICwgbV9mb2N1c0NvbnRyb2xsZXIobWFrZVVu
aXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkp
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxl
cihzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29u
ZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkpCisgICAgLCBtX2NvbnRleHRNZW51Q29udHJv
bGxlcihtYWtlVW5pcXVlPENvbnRleHRNZW51Q29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmln
dXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCkpCiAjZW5kaWYKLSAgICAsIG1fdXNlcklucHV0QnJp
ZGdlKHN0ZDo6bWFrZV91bmlxdWU8VXNlcklucHV0QnJpZGdlPigqdGhpcykpCi0gICAgLCBtX2lu
c3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb250cm9sbGVyPigq
dGhpcywgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAsIG1fdXNlcklu
cHV0QnJpZGdlKG1ha2VVbmlxdWU8VXNlcklucHV0QnJpZGdlPigqdGhpcykpCisgICAgLCBtX2lu
c3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcywg
cGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50KSkKICNpZiBFTkFCTEUoUE9JTlRFUl9F
VkVOVFMpCi0gICAgLCBtX3BvaW50ZXJDYXB0dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVl
PFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9wb2ludGVyQ2FwdHVy
ZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkK
ICNlbmRpZgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCi0gICAgLCBtX3BvaW50ZXJMb2NrQ29u
dHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQor
ICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxQb2ludGVyTG9ja0NvbnRy
b2xsZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRl
KHRoaXMpKQotICAgICwgbV9wcm9ncmVzcyhzdGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzVHJhY2tl
cj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCi0gICAgLCBtX2Jh
Y2tGb3J3YXJkQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxl
cj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkK
KyAgICAsIG1fcHJvZ3Jlc3MobWFrZVVuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmln
dXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQpKQorICAgICwgbV9iYWNrRm9yd2FyZENvbnRy
b2xsZXIobWFrZVVuaXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCiAgICAgLCBtX21haW5GcmFtZShG
cmFtZTo6Y3JlYXRlKHRoaXMsIG51bGxwdHIsIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVu
dEZvck1haW5GcmFtZSkpCiAgICAgLCBtX2VkaXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1
cmF0aW9uLmVkaXRvckNsaWVudCkpCiAgICAgLCBtX3BsdWdJbkNsaWVudChwYWdlQ29uZmlndXJh
dGlvbi5wbHVnSW5DbGllbnQpCkBAIC0yNTAsOSArMjUwLDkgQEAgUGFnZTo6UGFnZShQYWdlQ29u
ZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogICAgICwgbV9kb21UaW1lckFsaWdubWVu
dEludGVydmFsSW5jcmVhc2VUaW1lcigqdGhpcywgJlBhZ2U6OmRvbVRpbWVyQWxpZ25tZW50SW50
ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQpCiAgICAgLCBtX2FjdGl2aXR5U3RhdGUocGFnZUluaXRp
YWxBY3Rpdml0eVN0YXRlKCkpCiAgICAgLCBtX2FsdGVybmF0aXZlVGV4dENsaWVudChwYWdlQ29u
ZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQpCi0gICAgLCBtX2NvbnNvbGVDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQorICAgICwgbV9jb25z
b2xlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnNvbGVDbGllbnQ+KCp0aGlzKSkKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckRlYnVn
Z2FibGUobWFrZVVuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBt
X3NvY2tldFByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uc29ja2V0UHJvdmlkZXIp
KQogICAgICwgbV9jb29raWVKYXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb29raWVKYXIp
KQpAQCAtMjY4LDE2ICsyNjgsMTYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBh
Z2VDb25maWd1cmF0aW9uKQogICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRp
bWVyKCp0aGlzLCAmUGFnZTo6cGxheWJhY2tDb250cm9sc01hbmFnZXJVcGRhdGVUaW1lckZpcmVk
KQogI2VuZGlmCiAgICAgLCBtX2lzVXRpbGl0eVBhZ2UoaXNVdGlsaXR5UGFnZUNocm9tZUNsaWVu
dChjaHJvbWUoKS5jbGllbnQoKSkpCi0gICAgLCBtX3BlcmZvcm1hbmNlTW9uaXRvcihpc1V0aWxp
dHlQYWdlKCkgPyBudWxscHRyIDogc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+
KCp0aGlzKSkKLSAgICAsIG1fbG93UG93ZXJNb2RlTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxM
b3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7
IGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpOyB9KSkKLSAg
ICAsIG1fcGVyZm9ybWFuY2VMb2dnaW5nKHN0ZDo6bWFrZV91bmlxdWU8UGVyZm9ybWFuY2VMb2dn
aW5nPigqdGhpcykpCisgICAgLCBtX3BlcmZvcm1hbmNlTW9uaXRvcihpc1V0aWxpdHlQYWdlKCkg
PyBudWxscHRyIDogbWFrZVVuaXF1ZTxQZXJmb3JtYW5jZU1vbml0b3I+KCp0aGlzKSkKKyAgICAs
IG1fbG93UG93ZXJNb2RlTm90aWZpZXIobWFrZVVuaXF1ZTxMb3dQb3dlck1vZGVOb3RpZmllcj4o
W3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7IGhhbmRsZUxvd01vZGVQb3dlckNo
YW5nZShpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpOyB9KSkKKyAgICAsIG1fcGVyZm9ybWFuY2VMb2dn
aW5nKG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VMb2dnaW5nPigqdGhpcykpCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiAoRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikpCi0gICAgLCBtX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3Nl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVy
KFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKCkpCi0gICAgLCBtX3BhZ2VPdmVybGF5Q29u
dHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQor
ICAgICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNvbnRy
b2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQotICAgICwgbV9wYXltZW50Q29v
cmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCpwYWdlQ29uZmln
dXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQpKQorICAgICwgbV9wYXltZW50Q29vcmRp
bmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCpwYWdlQ29uZmlndXJhdGlvbi5w
YXltZW50Q29vcmRpbmF0b3JDbGllbnQpKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
ICAgICAsIG1fYXV0aGVudGljYXRvckNvb3JkaW5hdG9yKG1ha2VVbmlxdWVSZWY8QXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudCkpKQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgUGFnZTo6aW5pdEdy
b3VwKCkKIHsKICAgICBBU1NFUlQoIW1fc2luZ2xlUGFnZUdyb3VwKTsKICAgICBBU1NFUlQoIW1f
Z3JvdXApOwotICAgIG1fc2luZ2xlUGFnZUdyb3VwID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlR3Jv
dXA+KCp0aGlzKTsKKyAgICBtX3NpbmdsZVBhZ2VHcm91cCA9IG1ha2VVbmlxdWU8UGFnZUdyb3Vw
PigqdGhpcyk7CiAgICAgbV9ncm91cCA9IG1fc2luZ2xlUGFnZUdyb3VwLmdldCgpOwogfQogCkBA
IC0yNjU0LDcgKzI2NTQsNyBAQCB2b2lkIFBhZ2U6OnNldFJlc291cmNlVXNhZ2VPdmVybGF5Vmlz
aWJsZShib29sIHZpc2libGUpCiAgICAgfQogCiAgICAgaWYgKCFtX3Jlc291cmNlVXNhZ2VPdmVy
bGF5ICYmIG1fc2V0dGluZ3MtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkpCi0gICAg
ICAgIG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNh
Z2VPdmVybGF5PigqdGhpcyk7CisgICAgICAgIG1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgPSBtYWtl
VW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5PigqdGhpcyk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCAxODkxZTk1OWIzNzhhMzgz
MmQ0Y2MxZjhmNDhhOGNmZDY4ZDk3ODI5Li40ZTQ4MGMwYzIwZTQwYzJiOTZkNGMzZWNhOWZhNDM1
ZTJiOWFlZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApA
QCAtMTYxLDkgKzE2MSw5IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UoTWVz
c2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAKICAgICBpZiAoY2Fs
bFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4
dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNl
LCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNl
Tm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdl
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1l
c3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0
ZWRMaW5lTnVtYmVyLCBzdWdnZXN0ZWRDb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRp
Zmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdn
ZXN0ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3Rh
dGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKIAogICAgIGFkZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdl
KSk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6bWVzc2Fn
ZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGwKICAgICBT
dHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRG
aXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwogCi0gICAgYXV0byBtZXNzYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIGFyZ3VtZW50cy5jb3B5UmVm
KCksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2VUZXh0LCBhcmd1bWVudHMuY29weVJlZigpLCBleGVjKTsKIAogICAgIFN0cmluZyB1cmwgPSBt
ZXNzYWdlLT51cmwoKTsKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gbWVzc2FnZS0+bGluZSgp
OwpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3Qo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoZGF0YVVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGFkZE1lc3Nh
Z2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
ICJDb3VsZCBub3QgY2FwdHVyZSBzY3JlZW5zaG90Il9zLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsK
KyAgICAgICAgICAgIGFkZE1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsICJDb3VsZCBub3QgY2FwdHVyZSBzY3JlZW5zaG90Il9zLCBXVEZNb3Zl
KGFyZ3VtZW50cykpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTM5OSw3ICszOTksNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJgogICAgIGZvciAoc2l6ZV90
IGkgPSAoIXRhcmdldCA/IDAgOiAxKTsgaSA8IGFyZ3VtZW50cy0+YXJndW1lbnRDb3VudCgpOyAr
K2kpCiAgICAgICAgIGFkanVzdGVkQXJndW1lbnRzLmFwcGVuZCh7IHN0YXRlLT52bSgpLCBhcmd1
bWVudHMtPmFyZ3VtZW50QXQoaSkgfSk7CiAgICAgYXJndW1lbnRzID0gU2NyaXB0QXJndW1lbnRz
OjpjcmVhdGUoKnN0YXRlLCBXVEZNb3ZlKGFkanVzdGVkQXJndW1lbnRzKSk7Ci0gICAgYWRkTWVz
c2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2cs
IGRhdGFVUkwsIFdURk1vdmUoYXJndW1lbnRzKSkpOworICAgIGFkZE1lc3NhZ2UobWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBN
ZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZlbDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFy
Z3VtZW50cykpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuY3BwCmluZGV4IDkxOTM2MDQ1YzJmYWY3NmNhYzVlMmM2OWU2MjMzZjJjZTMwYmY5YjEu
LjEyOGMxOGYxNGI5MDhlNzFiYzdjZWZiMzk2MjA3ZmViYmMwMGYyYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VHcm91cC5jcHAKQEAgLTExNiw5ICsxMTYsOSBAQCBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
JiBQYWdlR3JvdXA6OmNhcHRpb25QcmVmZXJlbmNlcygpCiB7CiAgICAgaWYgKCFtX2NhcHRpb25Q
cmVmZXJlbmNlcykgewogI2lmIFBMQVRGT1JNKE1BQykgfHwgSEFWRShNRURJQV9BQ0NFU1NJQklM
SVRZX0ZSQU1FV09SSykKLSAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGPigqdGhpcyk7CisgICAgICAgIG1f
Y2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRj4oKnRoaXMpOwogI2Vsc2UKLSAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0aGlzKTsKKyAgICAgICAgbV9j
YXB0aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+KCp0
aGlzKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRl
eCA2YzE1YjNmYWE4M2Y1Y2FlMGQ5MTc2ZDAwYzhhZmMxNWI3NjY5MzE2Li5jYmJhYzIxZDQwMDVi
MWIwZTExODAyMmY3YWExNGE4YmNmZWQ4NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
LmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6OnJlc291cmNlVGltaW5n
QnVmZmVyRnVsbFRpbWVyRmlyZWQoKQogRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1h
cmsoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAg
ICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7
CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwog
CiAgICAgYXV0byByZXN1bHQgPSBtX3VzZXJUaW1pbmctPm1hcmsobWFya05hbWUpOwogICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0yNzksMTQgKzI3OSwxNCBAQCBFeGNlcHRpb25P
cjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogdm9pZCBQ
ZXJmb3JtYW5jZTo6Y2xlYXJNYXJrcyhjb25zdCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlm
ICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxV
c2VyVGltaW5nPigqdGhpcyk7CiAgICAgbV91c2VyVGltaW5nLT5jbGVhck1hcmtzKG1hcmtOYW1l
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1lYXN1cmUoY29uc3QgU3Ry
aW5nJiBtZWFzdXJlTmFtZSwgY29uc3QgU3RyaW5nJiBzdGFydE1hcmssIGNvbnN0IFN0cmluZyYg
ZW5kTWFyaykKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5n
ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRp
bWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogCiAgICAgYXV0byByZXN1bHQg
PSBtX3VzZXJUaW1pbmctPm1lYXN1cmUobWVhc3VyZU5hbWUsIHN0YXJ0TWFyaywgZW5kTWFyayk7
CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTMwMCw3ICszMDAsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVO
YW1lLCBjb25zdCBTdHJpbmcmCiB2b2lkIFBlcmZvcm1hbmNlOjpjbGVhck1lYXN1cmVzKGNvbnN0
IFN0cmluZyYgbWVhc3VyZU5hbWUpCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAg
IG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAg
ICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKICAgICBt
X3VzZXJUaW1pbmctPmNsZWFyTWVhc3VyZXMobWVhc3VyZU5hbWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaAppbmRleCA5OWE0MzcyZTU0ZDg0MDI5YmFmYmY5
YjhmN2E1ODIwMDFmYTYzYTFiLi4xNmJjZjA0MzkwYTE3MGYzZGU3ODI2NTBjMmZjMjUyMmNmNTA1
NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKQEAgLTMyLDYg
KzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFdFQkNPUkVfRVhQT1JUIFBy
ZXdhcm1JbmZvcm1hdGlvbiB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIGZvbnRDYWNoZTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCAwMzcwZjI4ODdmNjViNTdiM2NkODk3ZTRmYzY5
ZThhMmVmYjg3NWRmLi40NDI5MWFlZmEzN2M4YTdhODQ0OGJlYzM5YWVlYWMyNDM5ZWM0NzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9p
ZCBQcmludENvbnRleHQ6Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyhHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgRG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2xpbmtl
ZERlc3RpbmF0aW9ucykgewotICAgICAgICBtX2xpbmtlZERlc3RpbmF0aW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFJlZjxFbGVtZW50Pj4+KCk7CisgICAgICAgIG1fbGlu
a2VkRGVzdGluYXRpb25zID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+
Pj4oKTsKICAgICAgICAgY29sbGVjdExpbmtlZERlc3RpbmF0aW9ucyhkb2N1bWVudCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5j
cHAKaW5kZXggNTZhMDExYzRjZWU5OTc4OTkwMWZhZDM2MzAyYmUxMGMzNDU2NjUyNy4uM2I4ODFk
ZmJiMTcxN2Y0ZTQxMWE2YzUzNDQ1OTVmYmQzYWI0MzA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBi
b29sIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6aXNTY2hlZHVsZWQoKSBjb25zdAogdm9pZCBS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnN0YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAg
ICBBU1NFUlQoIWlzU2NoZWR1bGVkKCkpOwotICAgIG1fcmVmcmVzaFRpbWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlS
ZWZyZXNoRmlyZWQpOworICAgIG1fcmVmcmVzaFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRo
aXMsICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOwogICAg
IG1fcmVmcmVzaFRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAppbmRleCBmYWRlNjJmYzc4N2Vl
NDg5NzlhZjZkZDgyNjYyNzc5ODA0ZDM3NTE3Li42ZjA2MDgxNzgyNmVjNTZjNmVlOGE1ZjhjZDM5
NDRlYzJkNDE5MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1Vw
ZGF0ZVNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyCiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXI+IGNyZWF0ZShQYWdlJiBwYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPihwYWdlKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPihwYWdlKTsKICAgICB9CiAK
ICAgICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNp
emVPYnNlcnZlci5oCmluZGV4IDk1YjFjOGI1YmU4M2Q4OWIyNDk3OWVhZWQ5YjlkNGU5MGQzZjRm
ODcuLmVlZWJmOWI5ZTYxYmQ1ODhmZDNiYTk5ZmFiMTUwMTkxY2M4ZjY3MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBFbGVtZW50OwogCiBzdHJ1Y3QgUmVzaXplT2JzZXJ2ZXJEYXRhIHsKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVmVjdG9yPFdlYWtQdHI8UmVzaXplT2Jz
ZXJ2ZXI+PiBvYnNlcnZlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
Y3BwCmluZGV4IDQyMzQxODI4MGVhMmVlM2M5YmZkZmM5MWNkMTI3Yjk2OGViMWUxYmYuLjBkZWIw
NjQxNDhmOTcyNmNkMzhiNDEwMDVkNTIyOTcyNjBjMWM2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBTZWN1cml0eVBvbGlj
eTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNv
dXJjZU8KICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOwogICAg
IE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFk
ZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T3JpZ2luQWNj
ZXNzV2hpdGVMaXN0PigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxp
c3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIGxpc3QtPmFwcGVu
ZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFp
biwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dT
dWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2lu
QWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNzQXNJUEFkZHJlc3MpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3NCYXNlLmNwcAppbmRleCBiNjg0ODk2ZjM5ODg0NjI1NGExNzk3YWRjZGVkNjY2NjA1
ZTg1ZDVjLi4yN2VlYTZjMGFiOTM4ZWJjOGY5NjVkYWNiODIwMzExNDQzMTYwYjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25z
dCBTZWNvbmRzIGxheW91dFNjaGVkdWxlVGhyZXNob2xkID0gMjUwX21zOwogCiBTZXR0aW5nc0Jh
c2U6OlNldHRpbmdzQmFzZShQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKG51bGxwdHIpCi0gICAg
LCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMoc3RkOjptYWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWls
aWVzPigpKQorICAgICwgbV9mb250R2VuZXJpY0ZhbWlsaWVzKG1ha2VVbmlxdWU8Rm9udEdlbmVy
aWNGYW1pbGllcz4oKSkKICAgICAsIG1fbGF5b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJl
c2hvbGQpCiAgICAgLCBtX21pbmltdW1ET01UaW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0
TWluaW11bUludGVydmFsKCkpCiAgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIo
KnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKaW5kZXggNTU4NDQzNDA3ODM0NmZiOWI1
N2E2ZWE1OWFmY2UyN2E2MjQwYjU1YS4uM2MzZDQ5ZTA1OGFiMTMxNzQ3ZWI0OWJiMGM5M2EwZmQy
OTQ1MThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgKQEAgLTM0LDYg
KzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3VzcGVuZGFibGVUaW1lciA6
IHByaXZhdGUgVGltZXJCYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTdXNwZW5kYWJsZVRpbWVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5TdXNwZW5kYWJsZVRpbWVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5k
ZXggYjljZTk4Y2M2Y2E1YzI0NTZjZGI5NGY1ZGM0MWI0ZDJiNTBlOThmNi4uNjUyMzExZDdhNTVm
NTUwN2EwNWFhNDNiNjJjODAyMDg3MjJkYmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFVzZXJDb250
ZW50Q29udHJvbGxlcjo6Zm9yRWFjaFVzZXJNZXNzYWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKGNv
bnN0IFVzZXJNZQogCiB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1ZV9wdHI8VXNlclNjcmlwdD4gdXNlclNj
cmlwdCkKIHsKLSAgICBhdXRvJiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJl
KCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4o
KTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2Vy
U2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0
VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVu
ZChXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0cyhET01XcmFwcGVyV29ybGQmIHdv
cmxkKQogCiB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1bmlxdWVfcHRyPFVzZXJTdHlsZVNoZWV0PiB1c2Vy
U3R5bGVTaGVldCwgVXNlclN0eWxlSW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewotICAg
IGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29y
bGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigp
OyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91
c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8VXNl
clN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBzdHlsZVNoZWV0
c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CiAKICAgICBpZiAoaW5q
ZWN0aW9uVGltZSA9PSBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCmluZGV4IGYyNTlhZWIxYTBhOWU1Y2U3
YTEzNGYwZDEyNjllYzMxNGM5YTljMzEuLjMwNGQ5NGE3NWJmMzYxZDhkZDQ2ZjZhZmZhZmUzMWMz
ZWY4MmE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRh
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRl
ci5jcHAKQEAgLTQzLDkgKzQzLDkgQEAgV2hlZWxFdmVudERlbHRhRmlsdGVyOjp+V2hlZWxFdmVu
dERlbHRhRmlsdGVyKCkgPSBkZWZhdWx0Owogc3RkOjp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0
YUZpbHRlcj4gV2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKQogewogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJN
YWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2hlZWxFdmVudERlbHRhRmlsdGVyTWFjPigp
OwogI2Vsc2UKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0
YUZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZp
bHRlcj4oKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDE0NDY2M2NhZTk1OTc5
Y2ZjYzdjNGEyMjQyZTFkMTYxZDYxMDI5MjUuLjEzYzMxZjU3NjRiN2IyMjRhMmI3ZWE1NWFlMzNh
NmIzOTg2Yjk2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBD
U1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YW5pbWF0aW9uV2lsbEJlUmVtb3ZlZChBbmlt
YXRpb25CYXNlJiBhbmltYXQKIH0KIAogQ1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0
aW9uQ29udHJvbGxlcihGcmFtZSYgZnJhbWUpCi0gICAgOiBtX2RhdGEoc3RkOjptYWtlX3VuaXF1
ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQorICAgIDogbV9kYXRhKG1h
a2VVbmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+KGZyYW1lKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCmluZGV4IDc0ZWVkYzk5NjZlOWY4MWFjYjk5NmNmMzc2OTgzZGFiNjg1NTQwYzYu
LmJhZWIyNDc2NTcxNjczN2I4NGExY2M4ZjE5ZGUwMTczZjM2N2U5OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
QEAgLTExNyw5ICsxMTcsOSBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dE
YXRhPiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaQogewogICAgIEFTU0VS
VChmcm9tICYmIHRvKTsKICAgICBpZiAoZnJvbS0+c3R5bGUoKSAhPSB0by0+c3R5bGUoKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKnRvKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKnRvKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KGJsZW5kKGZyb20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlv
bigpLCBwcm9ncmVzcyksCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oYmxlbmQo
ZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxl
bmQoZnJvbS0+cmFkaXVzKCksIHRvLT5yYWRpdXMoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVu
ZChmcm9tLT5zcHJlYWQoKSwgdG8tPnNwcmVhZCgpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5k
RnVuYyhhbmltLCBmcm9tLT5zdHlsZSgpLCB0by0+c3R5bGUoKSwgcHJvZ3Jlc3MpLApAQCAtOTc0
LDE1ICs5NzQsMTUgQEAgY2xhc3MgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3Ig
OiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZQogICAgIFByb3BlcnR5V3JhcHBl
clZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgQ29sb3ImIChS
ZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIp
KGNvbnN0IENvbG9yJiksCiAgICAgICAgIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNp
dGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNv
bnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9w
KQotICAgICAgICAsIG1fd3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNv
bG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCi0gICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihz
dGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVy
LCB2aXNpdGVkU2V0dGVyKSkKKyAgICAgICAgLCBtX3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0
eVdyYXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRl
ZFdyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRlZEdl
dHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAgewogICAgIH0KICAgICBQcm9wZXJ0eVdyYXBwZXJW
aXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3AsIE1heWJlSW52YWxpZENvbG9y
VGFnLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChS
ZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3Im
IChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxl
OjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9w
ZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlx
dWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVy
KSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlX
cmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0
ZXIpKQorICAgICAgICAsIG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJl
SW52YWxpZENvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVk
V3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9w
LCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAgICAgfQogICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikgY29uc3Qg
b3ZlcnJpZGUKQEAgLTEyMjksMTkgKzEyMjksMTkgQEAgY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5
V3JhcHBlciA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICAgICAg
c3dpdGNoIChwcm9wZXJ0eSkgewogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6Ci0g
ICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4
UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3Vu
ZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7
CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8Rmls
bExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9z
aXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhP
cmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvblk6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgotICAg
ICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBv
c2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZ
T3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsK
KyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxs
TGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnlQb3Np
dGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWU9y
aWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFlPcmlnaW4sIEVkZ2U6OkJvdHRvbSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXpl
OgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKLSAgICAgICAgICAgIG1fZmlsbExheWVy
UHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBw
ZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExh
eWVyOjpzZXRTaXplTGVuZ3RoKTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFw
cGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHBy
b3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3Ro
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEltYWdlOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAm
RmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UpOworICAgICAgICAgICAgbV9m
aWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQ
cm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6
c2V0SW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE3NzAsNyArMTc3MCw3IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkKICAgICAgICAgICAgIGxv
bmdoYW5kV3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1fcHJvcGVydHlXcmFwcGVyc1t3cmFwcGVy
SW5kZXhdLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51
bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+
KHByb3BlcnR5SUQsIFdURk1vdmUobG9uZ2hhbmRXcmFwcGVycykpKTsKKyAgICAgICAgbV9wcm9w
ZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFNob3J0aGFuZFByb3BlcnR5
V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdyYXBwZXJzKSkpOwogICAgICAg
ICBpbmRleEZyb21Qcm9wZXJ0eUlEKHByb3BlcnR5SUQpID0gYW5pbWF0YWJsZUxvbmdoYW5kUHJv
cGVydGllc0NvdW50ICsgaTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA3MDQ3ZTgzZGU3ODVkYjgxYjZkOTkw
YTk0ODM3YmE3MWQ3MjgyOWEwLi44ZjBmNmJmNTNiMDNlMDhmNzAzMzE2NmViOGM3NGQ2YmY5NzI4
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaQogdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZGF0ZVNvdXJjZVNlbGYoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewogICAgIG1fc2VsZlNvdXJjZVByb3RvY29sID0gc2Vj
dXJpdHlPcmlnaW4ucHJvdG9jb2woKTsKLSAgICBtX3NlbGZTb3VyY2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3Rv
Y29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlT
dHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX3NlbGZTb3VyY2UgPSBtYWtlVW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBz
ZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmco
KSwgZmFsc2UsIGZhbHNlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFwcGx5
UG9saWN5VG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKaW5kZXggYThm
MWQ0ZjBiZGUxNGYxNGI4OGFhMzk0MGVkZDhjODk2MjYxZTNkZS4uYmJkOTE4OWUyNDgzNGRhY2M4
ZDdiYWUxNWNjNTgxNmNhMzIwY2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKQEAgLTMzLDYgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGly
ZWN0aXZlTGlzdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAg
ICAgICA6IG1fbmFtZShuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCBkZGJk
OGNkZTI3ODBlOTJkYmEyMGUwYWJkOTljZjA0OTg0M2Y0YzRkLi5jMDE1NmRkZjAxYzk0N2U1MDRi
NTY5ZDBhNDExNjk4YzU1OGYzZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAt
MTIzLDcgKzEyMyw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QoQ29udGVudFNlCiAKIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0PiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjpjcmVhdGUoQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNv
bnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHR5cGUs
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UG9saWN5RnJvbSBmcm9tKQogewotICAgIGF1dG8gZGly
ZWN0aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdD4ocG9saWN5LCB0eXBlKTsKKyAgICBhdXRvIGRpcmVjdGl2ZXMgPSBtYWtlVW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CiAgICAgZGly
ZWN0aXZlcy0+cGFyc2UoaGVhZGVyLCBmcm9tKTsKIAogICAgIGlmICghY2hlY2tFdmFsKGRpcmVj
dGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkp
KSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjpzZXRDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAg
bV9wb2xpY3kucmVwb3J0RHVwbGljYXRlRGlyZWN0aXZlKG5hbWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGRpcmVjdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlw
ZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKKyAgICBkaXJlY3RpdmUgPSBtYWtlVW5pcXVlPENTUERp
cmVjdGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YXBwbHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBzYW5kYm94UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAppbmRleCAxYzJiNGQwOGU2ZGIyNDMwNTI5
MWExZWExYzg2ZWI2MzZlM2YzNTI2Li44NDk0ODQyNjRlOTE3MzBmN2E2OTA5OGRmM2Q3ZGFkMTQ5
MmRjZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdl
T2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBET01UaW1lcjsKIGNsYXNzIEVsZW1lbnQ7
CiAKIGNsYXNzIENvbnRlbnRDaGFuZ2VPYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
b250ZW50Q2hhbmdlT2JzZXJ2ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5oCmluZGV4IGI2MjE4NGZlMTc5
NDJkYTk0ODU5YTgwMmNlZmRlNzZlMjQyZDNlNGMuLmJiZjc5NDVhYWE0OTlhNzZiN2UxMmFiM2M3
NWQ1OTQ0MjFlNDVlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRp
bWVySG9sZGluZ1RhbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9ET01UaW1lckhv
bGRpbmdUYW5rLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
RE9NVGltZXI7CiAKIGNsYXNzIERPTVRpbWVySG9sZGluZ1RhbmsgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERPTVRpbWVySG9sZGluZ1RhbmsoKTsKICAgICB+
RE9NVGltZXJIb2xkaW5nVGFuaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9s
aW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKaW5kZXggNGZkZjc1NmMwMjE5ODg1
MzNiMmYxMjU1YzkxYTRlY2M5MTQ4NGZhNC4uYzA3YjEyNzY5Y2QwNGJhN2IzMWY4OGM0NmE5ZjA2
YjZhZDZiNDlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jl
c291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBTdHJp
bmcgZ2NUaW1lclN0cmluZyhNb25vdG9uaWNUaW1lIHRpbWVyRmlyZURhdGUsIE1vbm90b25pY1Rp
bWUgbm93KQogc3RhdGljIGNvbnN0IGZsb2F0IGdGb250U2l6ZSA9IDE0OwogCiBjbGFzcyBSZXNv
dXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VV
c2FnZU92ZXJsYXlQYWludGVyKFJlc291cmNlVXNhZ2VPdmVybGF5JiBvdmVybGF5KQogICAgICAg
ICA6IG1fb3ZlcmxheShvdmVybGF5KQpAQCAtMTMyLDcgKzEzMyw3IEBAIGNsYXNzIFJlc291cmNl
VXNhZ2VPdmVybGF5UGFpbnRlciBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsK
IAogdm9pZCBSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAg
ICBtX292ZXJsYXlQYWludGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3Zlcmxh
eVBhaW50ZXI+KCp0aGlzKTsKKyAgICBtX292ZXJsYXlQYWludGVyID0gbWFrZVVuaXF1ZTxSZXNv
dXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFw
aGljc0xheWVyOjpjcmVhdGUob3ZlcmxheSgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3Jh
cGhpY3NMYXllckZhY3RvcnkoKSwgKm1fb3ZlcmxheVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXll
ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0
U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3JtYWxIZWlnaHQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFn
ZU1hYy5tbQppbmRleCBkN2FkZmZkNzJmOWZhOGZlOTdhZmNkYTA3MThkODNjNmUwOTA4NTBjLi4w
ODYzYWQyNjcyNWQ2NTU0NzUyYjdhYzIxNDhlZWQxYzZkZmMyM2JiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1BhZ2VNYWMubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRp
YWxpemUoKQogdm9pZCBQYWdlOjphZGRTY2hlZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBw
YWlyKQogewogICAgIGlmICghbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2No
ZWR1bGVkUnVuTG9vcFBhaXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0
PigpOworICAgICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IG1ha2VVbmlxdWU8U2NoZWR1
bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIu
cHRyKCkpOwogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaAppbmRleCBkY2RkOTUwNDhiZDk1
OGFhNzQ0MGEwZmMzZDliY2U3ZGYyZjU0ODBmLi42NDc1Y2U1ZWJjOTA3YWUxODgwYWYxNzFjMDcz
NmZmM2VjYjUwMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5k
aWNhdG9yV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRv
cldpbmRvdy5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3MgVGV4dEluZGljYXRvcldpbmRv
d0Rpc21pc3NhbEFuaW1hdGlvbiA6IHVpbnQ4X3QgewogI2lmIFBMQVRGT1JNKE1BQykKIAogY2xh
c3MgVGV4dEluZGljYXRvcldpbmRvdyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dEluZGljYXRvcldpbmRvdyk7CiAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggMzA2Y2ZlZDE5Y2U2ZDAwYjYyYTg1MjQ5NzAwMjhi
ODA0NWZhZDgyMy4uMDBhZjM5NDc4ZGM3NWY3MDI5YzI0ODQ1NGVmMDFhYjBjNmM3ZDEzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcihQ
YWdlKiBwYWdlKQogICAgIDogU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkKICAgICAsIG1fdXBk
YXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXIoKnRoaXMsICZBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGxUaW1lckZpcmVkKQotICAg
ICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRy
ZWU+KHRoaXMpKQorICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUobWFrZVVuaXF1ZTxTY3JvbGxp
bmdTdGF0ZVRyZWU+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCmluZGV4IDYzYmQ5NjM4YjYzYTFh
MTFjYTQwZjM2NzIxMjlmNzE0MTBjNmZmMmUuLjNhYjY0MDY4MjY0YzUwNDA4YmFiNGVlMzhkMmNj
ZDRhNjQxYzc4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTY3JvbGxP
ZmZzZXRSYW5nZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RydWN0IFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZl
Y3RvcjxUPiBob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgVmVjdG9yPFQ+IHZlcnRpY2FsU25h
cE9mZnNldHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IDc2NDBkNTVkOTZhM2Yw
OTU5YjkzMWVmMDQzM2VjMTVmYTIwN2RiZDQuLmM4OTBmOWViYTAwNGNhODc4MDE0MWI4NWNlZWUw
MDU1NjJlMmU0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5h
dGlvbk9mZnNldCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVu
dFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmll
d3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0
aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0
UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvci5oCmluZGV4IGJlOTlkMGVlNmEzZjA3ODlmYzRkN2RjNjkyODg1YjUyNDAwNDM4
MDIuLjIxYzMxMWNkODliNzk0MDg0YTg0OTBkNWZjOWJhNTVhOTNiOWFlYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBG
bG9hdFNpemU7CiAKIGNsYXNzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNv
bnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVu
dFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcApp
bmRleCA5NjgyZDJjMWJjZWUzNzU3MTNjMzQ2ZDNlMzNjZDRkYzEzNWFmYzc4Li5iZTU3YzliODY5
ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0MGM4MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1N0
YXRlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAK
ICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hp
bGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7
CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiAgICAgc2V0UHJv
cGVydHlDaGFuZ2VkKENoaWxkTm9kZXMpOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgU2Ny
b2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNo
aWxkTm9kZSwgc2l6ZV90CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pIHsKICAgICAgICAgQVNTRVJU
KCFpbmRleCk7Ci0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxS
ZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtl
VW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgfQogCiAg
ICAgaWYgKGluZGV4ID4gbV9jaGlsZHJlbi0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAppbmRleCBmNjFlMjhl
MGVjNTAzMDEyYjM3MmZiMjU1NjlhOGNiN2RkNTNhYTcwLi43MTU3ZTE2ODYwZjQ5YzkxZGRhMzVi
YmM0ZWFmZTk4MTllYWNiZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdChM
YXllclJlcHJlc2VudGF0aQogICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVzIGFu
ZCByZXNldHMgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSwgYnV0IGxlYXZlcyB0aGUgdHJlZSBzdHJ1
Y3R1cmUgaW50YWN0LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRy
ZWVTdGF0ZUNsb25lID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBt
YWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKICAgICB0cmVlU3RhdGVDbG9uZS0+c2V0
UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbihwcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9u
KTsKIAogICAgIGlmIChtX3Jvb3RTdGF0ZU5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKaW5kZXggZWE3NGUyY2E0MjQyOWE4
ZTJiZTlmOWEzNzllMzY3ZGE0ZGRkYTNkMS4uNzI5NjE1YTY5ZjAxMjI2MzE1MTQ3ZWNmZGI1NTI4
YjAxOTlmMzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVO
b2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+JiYgY2hpbGROb2RlKQogICAg
IGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAg
ICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGlu
Z1RyZWVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxS
ZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RG
TW92ZShjaGlsZE5vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
bW0KaW5kZXggMWM3YWI3NmExNTFlNjM1MGQ4YjYxNGMzNmQwNWJjZTY1YzZjOTU4NC4uYjQzZWE5
OTVmYWY2YjQ3MDMzNWZiZjA3YTIwODZhNmIzNWY3MGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIHN0YXRpYyBib29sIGdFbmFibGVQ
bGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9IHRydWU7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNp
emUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFs
RGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFs
T2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ1BVTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5o
CmluZGV4IDcxZTQzZDNmM2I5NDYxMDYwOGNiZjExZGI1MTE1YmNiZWMwNTQ4OTAuLjA4OGRmNTQz
ZTA0NzkxMTdjODM3YWZlMjIzYmJjYzU1MTQ4OGE3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
UFVNb25pdG9yLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ1BVTW9uaXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdXNpbmcgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoZG91
YmxlKT47CiAgICAgV0VCQ09SRV9FWFBPUlQgQ1BVTW9uaXRvcihTZWNvbmRzIGNoZWNrSW50ZXJ2
YWwsIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVN
b25pdG9yLmgKaW5kZXggZTYwZjc3MTNmNjJiYjI1NjJhODQyODg4YzdmYzYyOWYyYzU0N2YzMy4u
NmIyODhlMWUxN2U0NDhiYjg2ZmI5ZWNlMjljYzllNWJkYjlkZDhkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlTW9uaXRvci5oCkBAIC00Miw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZpbGVNb25pdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEZpbGVDaGFuZ2VUeXBlIHsgTW9kaWZpY2F0aW9uLCBS
ZW1vdmFsIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4IDRmZjk4MDRlYWVj
MTMwNmIyNjhhMjQ1ZjI3NzFhMTEyZTI4ZDJhMWUuLjNmYzQzMWE0NzQ2MWQ4YzQ0M2RiNGI2MjJk
NmVhOTA2MzRkYTBmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMjg4LDkg
KzI4OCw5IEBAIExlbmd0aCBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVu
Z3RoJiBsZW5ndGgpCiAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNh
bGMoMTAwJSAtIGxlbmd0aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNz
aW9uTm9kZT4+IGxlbmd0aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIp
OwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJl
c3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNr
ZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7
Ci0gICAgYXV0byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+
KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMu
dW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgx
MDAsIFBlcmNlbnQpKSk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8
Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6
U3VidHJhY3QpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdU
Rk1vdmUob3ApLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0
aWMgTGVuZ3RoIGJsZW5kTWl4ZWRUeXBlcyhjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0
aCYgdG8sIGRvdWJsZSBwcm9ncgogICAgIGlmIChwcm9ncmVzcyA+PSAxLjApCiAgICAgICAgIHJl
dHVybiB0bzsKICAgICAgICAgCi0gICAgYXV0byBibGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
Y0V4cHJlc3Npb25CbGVuZExlbmd0aD4oZnJvbSwgdG8sIHByb2dyZXNzKTsKKyAgICBhdXRvIGJs
ZW5kID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJv
Z3Jlc3MpOwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1v
dmUoYmxlbmQpLCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCmluZGV4IDU1MmIxMmY2YzFlOGNkYTZm
ZmVhNjQ3ODY5MjIyOWVhOTNlZDE3Y2EuLjhlMzVlMzA0YzFlNzI1N2JjNjRjNmFkMTBlZGRlOTY0
MjA0ZTY1OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFu
ZExpc3RlbmVyLmNwcApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYg
KCFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKSkgfHwgIUhBVkUoTUVESUFf
UExBWUVSKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29t
bWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihj
bGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xp
ZW50KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
bi5oCmluZGV4IDJlNWY2M2JjZWYyYmZkZmNmZjkyMTZkOTg2YjBmNDM2MGM2ODBiNDEuLmI3YzFk
MjRlYjQ5ZTVhNTVmNjkxZjA2Y2U5ZTFkODBiMjFiY2NhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIEZsb2F0UG9p
bnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIAogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxB
bmltYXRpb24oKSB7IH07CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRh
dGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IC8qIHN0ZXAgKi8sIGZsb2F0IC8qIG11bHRp
cGxpZXIgKi8pIHsgcmV0dXJuIHRydWU7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKaW5kZXggZDkxNTRkOTM1MWEyZjMzNjZkZGQwNWZlNjBmZGViYjljMWEx
ZTczOC4uZjhlZGM4ODJkN2YzNjAwMmUxOTg1MTBkODFiOGViMzRhYTUwMDdjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIUVOQUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3I+
KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcj4o
c2Nyb2xsYWJsZUFyZWEpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAppbmRleCBjNjJhZDgzNGU2YjM4MDhlMWVjZGE4YmExMzEyZDNkOTU3
MDVlOTZhLi45NmQwZjMwMGIzNDE4ZTYwODIxZGEyZGEyYTY0MTg5YzRkZWUwYjNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IFNjcm9sbEFuaW1hdG9yJiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsQW5pbWF0b3IoKSBjb25zdAog
ewogICAgIGlmICghbV9zY3JvbGxBbmltYXRvcikgewogICAgICAgICBpZiAodXNlc01vY2tTY3Jv
bGxBbmltYXRvcigpKSB7Ci0gICAgICAgICAgICBtX3Njcm9sbEFuaW1hdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+KGNvbnN0X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigq
dGhpcyksIFt0aGlzXShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIG1fc2Ny
b2xsQW5pbWF0b3IgPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxT
Y3JvbGxhYmxlQXJlYSY+KCp0aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewog
ICAgICAgICAgICAgICAgIGxvZ01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UobWVzc2FnZSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBT
Y3JvbGxhYmxlQXJlYTo6aGFzTGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdAogU2Nyb2xsU25h
cE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNl
dHNJbmZvKCkKIHsKICAgICBpZiAoIW1fc25hcE9mZnNldHNJbmZvKQotICAgICAgICBtX3NuYXBP
ZmZzZXRzSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91
dFVuaXQ+PigpOworICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IG1ha2VVbmlxdWU8U2Nyb2xs
U25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PigpOwogICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0
c0luZm87CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRl
cm1pbmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5o
CmluZGV4IDcyYjAwNDUxMzE0MmM4ZjRlOTVkZjIyODE4YzNkZGMxODBhYWVjZWQuLjBkNzRiMTZl
NTkyNTk4YWI4M2IwYzhjMGViNTRiNDQ2ZGZkMzhkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3VkZGVuVGVybWluYXRpb24uaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAjZW5kaWYKIAogICAgIGNsYXNzIFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIgewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU3VkZGVuVGVybWluYXRpb25EaXNhYmxlcik7CiAgICAgcHVibGljOgogICAgICAgICBT
dWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYTI4MDEwZWNmZTVhMzY3YWQ5ZDBiMjlhMjAwNTYzYTBm
NTYxZDU2MC4uMjdhNzM2NDE2YmEwNGMwNTNjMmU3N2RiMmM1NTgxNDQ0MGQyZjBmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTQwLDE0ICs0
MCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRH
bG9iYWxEYXRhKCkKLSAgICA6IG1fY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhzdGQ6
Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+KCkpCisgICAgOiBt
X2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJj
ZVJlcXVlc3RJbml0aWF0b3JzPigpKQogICAgICwgbV9ldmVudE5hbWVzKEV2ZW50TmFtZXM6OmNy
ZWF0ZSgpKQotICAgICwgbV90aHJlYWRUaW1lcnMoc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWRUaW1l
cnM+KCkpCi0gICAgLCBtX3F1YWxpZmllZE5hbWVDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFF1YWxp
ZmllZE5hbWVDYWNoZT4oKSkKKyAgICAsIG1fdGhyZWFkVGltZXJzKG1ha2VVbmlxdWU8VGhyZWFk
VGltZXJzPigpKQorICAgICwgbV9xdWFsaWZpZWROYW1lQ2FjaGUobWFrZVVuaXF1ZTxRdWFsaWZp
ZWROYW1lQ2FjaGU+KCkpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9pc01haW5UaHJlYWQoaXNN
YWluVGhyZWFkKCkpCiAjZW5kaWYKLSAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKHN0ZDo6bWFr
ZV91bmlxdWU8SUNVQ29udmVydGVyV3JhcHBlcj4oKSkKKyAgICAsIG1fY2FjaGVkQ29udmVydGVy
SUNVKG1ha2VVbmlxdWU8SUNVQ29udmVydGVyV3JhcHBlcj4oKSkKIHsKICAgICAvLyBUaGlzIGNv
bnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgYmVmb3Jl
IGJlaW5nIGNhbGxlZCBvbgogICAgIC8vIGFueSBvdGhlciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNh
bGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0aGlzIG1ha2VzIHRoaXMgYSBjb252ZW5pZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKaW5kZXggMmY4OTJkNmIxOWFi
YTQyMzBlOTI0Yzc2MTg3MzhmYzZjYjQ4ZjdlYy4uZTcwZDQ2ZDBiOWYyNDA3ZjkwODU0OGZhOGYy
ZTk4YzlkYTQ1NjNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVz
LmNwcApAQCAtNjQsNyArNjQsNyBAQCBBdWRpb0J1czo6QXVkaW9CdXModW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IGxlbmd0aCwgYm9vbCBhbGxvY2F0ZSkKICAgICBtX2NoYW5uZWxz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIGF1dG8g
Y2hhbm5lbCA9IGFsbG9jYXRlID8gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0
aCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4obnVsbHB0ciwgbGVuZ3RoKTsKKyAg
ICAgICAgYXV0byBjaGFubmVsID0gYWxsb2NhdGUgPyBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4o
bGVuZ3RoKSA6IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihudWxscHRyLCBsZW5ndGgpOwogICAg
ICAgICBtX2NoYW5uZWxzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGNoYW5uZWwpKTsKICAgICB9
CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIEF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKGNv
bnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZsb2F0KiBsYXN0TWl4R2FpbiwgZgogCiAgICAgaWYg
KGZyYW1lc1RvRGV6aXBwZXIpIHsKICAgICAgICAgaWYgKCFtX2RlemlwcGVyR2FpblZhbHVlcy5n
ZXQoKSB8fCBtX2RlemlwcGVyR2FpblZhbHVlcy0+c2l6ZSgpIDwgZnJhbWVzVG9EZXppcHBlcikK
LSAgICAgICAgICAgIG1fZGV6aXBwZXJHYWluVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6aXBwZXIpOworICAgICAgICAgICAgbV9kZXppcHBlckdh
aW5WYWx1ZXMgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZnJhbWVzVG9EZXppcHBlcik7
CiAKICAgICAgICAgZmxvYXQqIGdhaW5WYWx1ZXMgPSBtX2RlemlwcGVyR2FpblZhbHVlcy0+ZGF0
YSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhbWVzVG9EZXppcHBlcjsg
KytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAppbmRleCAyMTcz
ZGM5MzgzZTRhMzNjMWI1OTM0NzY1YTFlNWIxMDc0NmYwM2ExLi5iYmIzZDJhY2QyMmM1NzJiYzky
M2E0OGIxZjcwYWY4NTRjMGNiMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvQnVzLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQW4gQXVk
aW9CdXMgcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2Ygb25lIG9yIG1vcmUgQXVkaW9DaGFubmVs
cy4KIC8vIFRoZSBkYXRhIGxheW91dCBpcyAicGxhbmFyIiBhcyBvcHBvc2VkIHRvICJpbnRlcmxl
YXZlZCIuCiAvLyBBbiBBdWRpb0J1cyB3aXRoIG9uZSBjaGFubmVsIGlzIG1vbm8sIGFuIEF1ZGlv
QnVzIHdpdGggdHdvIGNoYW5uZWxzIGlzIHN0ZXJlbywgZXRjLgotY2xhc3MgQXVkaW9CdXMgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9CdXM+IHsKK2NsYXNzIEF1ZGlvQnVzIGZp
bmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQnVzPiB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQXVkaW9CdXMpOwogcHVibGljOgogICAgIGVudW0gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaAppbmRleCBiYmMxMzU3YTNkNTNm
MDU0OGY4ODc4ZTU4N2RiN2Q2ZGQxYzRmYWQ4Li43Yjk4OTNkMzhhYzQxNzQ1MzE3NDFiNzcyNGM2
ZmYyYWJkMDFkZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0NoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0No
YW5uZWwuaApAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1
ZGlvQ2hhbm5lbCByZXByZXNlbnRzIGEgYnVmZmVyIG9mIG5vbi1pbnRlcmxlYXZlZCBmbG9hdGlu
Zy1wb2ludCBhdWRpbyBzYW1wbGVzLgogLy8gVGhlIFBDTSBzYW1wbGVzIGFyZSBub3JtYWxseSBh
c3N1bWVkIHRvIGJlIGluIGEgbm9taW5hbCByYW5nZSAtMS4wIC0+ICsxLjAKLWNsYXNzIEF1ZGlv
Q2hhbm5lbCB7CitjbGFzcyBBdWRpb0NoYW5uZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvQ2hhbm5lbCk7CiBwdWJs
aWM6CiAgICAgLy8gTWVtb3J5IGNhbiBiZSBleHRlcm5hbGx5IHJlZmVyZW5jZWQsIG9yIGNhbiBi
ZSBpbnRlcm5hbGx5IGFsbG9jYXRlZCB3aXRoIGFuIEF1ZGlvRmxvYXRBcnJheS4KQEAgLTU2LDcg
KzU3LDcgQEAgY2xhc3MgQXVkaW9DaGFubmVsIHsKICAgICAgICAgLCBtX3Jhd1BvaW50ZXIoMCkK
ICAgICAgICAgLCBtX3NpbGVudCh0cnVlKQogICAgIHsKLSAgICAgICAgbV9tZW1CdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obGVuZ3RoKTsKKyAgICAgICAgbV9tZW1C
dWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obGVuZ3RoKTsKICAgICB9CiAKICAg
ICAvLyBBICJibGFuayIgYXVkaW8gY2hhbm5lbCAtLSBtdXN0IGNhbGwgc2V0KCkgYmVmb3JlIGl0
J3MgdXNlZnVsLi4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0ZJRk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCmlu
ZGV4IDc1YzlhYmQ3NDk0ZDM1ODIyZjgyYWNlN2NjZDBkODU2ODYxMWQ3ZWEuLjBmNDM4ZGQ3ZDBm
YTU5ZmI2NDRkNGRmNTcyZjU1OWZkNjYzMDhiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvRklGTy5oCkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgQXVkaW9GSUZPIHsKK2NsYXNzIEF1ZGlvRklGTyBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGEgRklGTyBsYXJn
ZSBlbm91Z2ggdG8gaG9sZCB8Zmlmb0xlbmd0aHwgZnJhbWVzIG9mIGRhdGEgb2YgfG51bWJlck9m
Q2hhbm5lbHN8IGNoYW5uZWxzLgogICAgIEF1ZGlvRklGTyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1B1bGxGSUZPLmgKaW5kZXggYmZiZTk4M2E1NzVhNDU0YWFjMmIwYzNjYmU0NTc1ZWZh
ZjZiNzhkNy4uZDc0OGZhNDEzODczNzlkYjM5NWJlYWU2NWY4ODJiYTI1OGU5ZmMyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaApAQCAtNDEsNyAr
NDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUgRklGTyB3aWxsIGFzayB0aGUgcHJv
dmlkZXIgZm9yIG1vcmUgZGF0YSB3aGVuIG5lY2Vzc2FyeSB0byBmdWxmaWxsIGEgcmVxdWVzdC4g
Q29udHJhc3QgdGhpcwogLy8gd2l0aCBhICJwdXNoIiBGSUZPLCB3aGVyZSB0aGUgc2VuZGVyIHB1
c2hlcyBkYXRhIHRvIHRoZSBGSUZPIHdoaWNoIHdpbGwgaXRzZWxmIHB1c2ggdGhlIGRhdGEgdG8K
IC8vIHRoZSByZWNlaXZlciB3aGVuIHRoZSBGSUZPIGlzIGZ1bGwuCi1jbGFzcyBBdWRpb1B1bGxG
SUZPIHsKK2NsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhIEZJRk8gdGhhdCBnZXRzIGRhdGEgZnJv
bSB8cHJvdmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdlIGVub3VnaCB0byBob2xkCiAgICAg
Ly8gfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxudW1iZXJPZkNoYW5uZWxzfCBjaGFu
bmVscy4gVGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBiZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCmluZGV4IDg2OTA2YmE1MTI0NzU4
NjkyYzY4M2UyYmM5MDM4MzUwMWVhYjhmZDkuLjI4NGMwNTQ5NDMyNTkzNDRlYWNlMzI0MThhZGE5
YjgzMDNkYTJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgY29uc3QgZG91YmxlIEF1ZGlvUmVzYW1w
bGVyOjpNYXhSYXRlID0gOC4wOwogQXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKCkKICAg
ICA6IG1fcmF0ZSgxLjApCiB7Ci0gICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtl
VW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAgICAgbV9zb3VyY2VCdXMgPSBB
dWRpb0J1czo6Y3JlYXRlKDEsIDAsIGZhbHNlKTsKIH0KIApAQCAtNDcsNyArNDcsNyBAQCBBdWRp
b1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAg
ICA6IG1fcmF0ZSgxLjApCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
Q2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQo
bWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwogCiAgICAgbV9zb3VyY2VC
dXMgPSBBdWRpb0J1czo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIDAsIGZhbHNlKTsKIH0KQEAg
LTYxLDcgKzYxLDcgQEAgdm9pZCBBdWRpb1Jlc2FtcGxlcjo6Y29uZmlndXJlQ2hhbm5lbHModW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICAvLyBGaXJzdCBkZWFsIHdpdGggYWRkaW5nIG9y
IHJlbW92aW5nIGtlcm5lbHMuCiAgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPiBjdXJyZW50U2l6
ZSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjdXJyZW50U2l6ZTsgaSA8IG51bWJlck9m
Q2hhbm5lbHM7ICsraSkKLSAgICAgICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOworICAgICAgICAgICAgbV9rZXJuZWxz
LmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIG1fa2VybmVscy5yZXNpemUobnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCmluZGV4IGQxMWZh
OTNlYmFhY2JkOGU1NmI5OGRhMzM3NWZhZTE0MDY4ZTNiYzkuLjIwMTZiYWZmN2M4OGRmMThhZjVk
MzUyYzMwMWY1ZmY0Mzc2ODlmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuaApAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAvLyBUaGUgYXVkaW8gc3RyZWFtIG1heSBiZSBzaW5nbGUgb3IgbXVsdGktY2hhbm5lbC4KIC8v
IFRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRlZmF1bHRzIHRvIHNpbmdsZS1jaGFubmVsIChtb25v
KS4KIAotY2xhc3MgQXVkaW9SZXNhbXBsZXIgeworY2xhc3MgQXVkaW9SZXNhbXBsZXIgZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1w
bGVyKCk7CiAgICAgQXVkaW9SZXNhbXBsZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktl
cm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJu
ZWwuaAppbmRleCA5OWQ4NzdiYjdjZDY4ZGJiMDUzNjc3YTA5N2NkNGUwZWFjODNiNzgyLi44YWMy
YmFhNDJjNTg3YTM0ODVkNTM0MDIzYWRlZTI0Zjg4MzI2ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKQEAgLTM0LDcg
KzM0LDkgQEAgY2xhc3MgQXVkaW9SZXNhbXBsZXI7CiAvLyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBk
b2VzIHJlc2FtcGxpbmcgb24gYSBzaW5nbGUgbW9ubyBjaGFubmVsLgogLy8gSXQgdXNlcyBhIHNp
bXBsZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmb3IgZ29vZCBwZXJmb3JtYW5jZS4KIAotY2xhc3Mg
QXVkaW9SZXNhbXBsZXJLZXJuZWwgeworY2xhc3MgQXVkaW9SZXNhbXBsZXJLZXJuZWwgZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1ZGlvUmVzYW1wbGVyS2VybmVsKTsKIHB1YmxpYzoKICAgICBBdWRpb1Jlc2FtcGxlcktlcm5l
bChBdWRpb1Jlc2FtcGxlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmNwcAppbmRleCA1YzFiZjJhMzE3MzQyZWEzZTUyOTJhNzk3ZThlNjZlMWE4
ZGEzOTdjLi5iNWZiNTgwNjQ4ZjljZjhlYzRmMTg2ZmFmYTQ4ZTEzZmRjZjJmNTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTUwLDYg
KzUwLDcgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQog
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiB9OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lv
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4
IDE3ZGE4MWIzYjc1ZDdhNWFhYjgyMTQ4NmI3YzFlMzNmMWE4ZGY0NjkuLmU3MDA4MjJmZjFmZWVi
ZDc4MjlhZWM3NTBjY2U0MGE2MGI5MjU2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC00NCw3ICs0NCw4IEBAIGVudW0gY2xhc3MgUm91dGVT
aGFyaW5nUG9saWN5IDogdWludDhfdCB7CiAgICAgTG9uZ0Zvcm1WaWRlbwogfTsKIAotY2xhc3Mg
QXVkaW9TZXNzaW9uIHsKK2NsYXNzIEF1ZGlvU2Vzc2lvbiBmaW5hbCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9TZXNzaW9uKTsK
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXVkaW9TZXNzaW9uJiBzaGFyZWRT
ZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oCmluZGV4IGJiNzIx
YTIzYTdmY2M3NzRiNjA5M2U0ZWE5MDhjNjBlODkwODEwN2MuLjcxMzQ5NGM5MTRkMzM3ODY0M2Uy
OWE4MGJjMzllNzczNjZkZjE4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0JpcXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVh
ZC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vICAgIGxvd3Bhc3Ms
IGhpZ2hwYXNzLCBzaGVsdmluZywgcGFyYW1ldGVyaWMsIG5vdGNoLCBhbGxwYXNzLCAuLi4KIAog
Y2xhc3MgQmlxdWFkIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzogICAKICAgICBCaXF1YWQoKTsKICAgICB+QmlxdWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9Db25lLmgKaW5kZXggZDgxYzA1ZGM2OGU2ZTJmYTIxZDI0NWRkMTM3YjRmMTc4YTIxMjBi
NC4uYTdhY2EzYTRjNTRkMjc0YjNhYTNkNDBhZDlkMTQzZWJkZmM0NWZjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0NvbmUuaApAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIC8vIENvbmUgZ2FpbiBpcyBkZWZpbmVkIGFjY29yZGluZyB0byB0aGUgT3BlbkFMIHNw
ZWNpZmljYXRpb24KIAotY2xhc3MgQ29uZUVmZmVjdCB7CitjbGFzcyBDb25lRWZmZWN0IGZpbmFs
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb25lRWZmZWN0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFs
RGlzYWJsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJs
ZXIuaAppbmRleCA2ZTlmNGUwMWRhZTZkNDVkMDIxMTFkNWQ1YjEyOGVmMzg4NmIyMjQyLi5lMGIz
ZWZkODBmNzhmZmFhMzA2NTczMzIzMTQ3MDJkYzczYTJmMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCkBAIC00MSw3ICs0MSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9ERU5PUk1BTAotY2xh
c3MgRGVub3JtYWxEaXNhYmxlciB7CitjbGFzcyBEZW5vcm1hbERpc2FibGVyIGZpbmFsIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEZW5vcm1hbERpc2FibGVy
KCkKICAgICAgICAgICAgIDogbV9zYXZlZENTUigwKQpAQCAtMTAzLDcgKzEwNCw4IEBAIGNsYXNz
IERlbm9ybWFsRGlzYWJsZXIgewogCiAjZWxzZQogLy8gRklYTUU6IGFkZCBpbXBsZW1lbnRhdGlv
bnMgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMgYW5kIGNvbXBpbGVycwotY2xhc3MgRGVub3JtYWxE
aXNhYmxlciB7CitjbGFzcyBEZW5vcm1hbERpc2FibGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEZW5vcm1hbERpc2FibGVyKCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKaW5kZXgg
NmYyZmFmNDBlNjFiZjZlMzJhNGY0OTk5NzY1YzllMWJiNTE5NDFhOC4uNWM4ZDg2NmMxNjU1Y2Mz
OTFhODI1ZDNiMjM3ODhiZjQwYzc4OWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmgKQEAgLTMwLDEwICszMCwxMyBAQAogI2RlZmluZSBE
aXJlY3RDb252b2x2ZXJfaAogCiAjaW5jbHVkZSAiQXVkaW9BcnJheS5oIgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERpcmVjdENv
bnZvbHZlciB7CitjbGFzcyBEaXJlY3RDb252b2x2ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpcmVjdENvbnZvbHZlcik7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRGlyZWN0Q29udm9sdmVyKHNpemVfdCBpbnB1dEJsb2Nr
U2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3Rh
bmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCmluZGV4IDkx
ZDM0OWI5N2U2Mjc3MzMyZDc2MzFhODg0NDI2YjE2NjhkY2YyODMuLmIzZWI3Nzk3M2NmYTQ3OTVm
MTUwNTM2OWI3ZTRiMmY4OWZmYjZjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0Rpc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RGlzdGFuY2UuaApAQCAtNDAsNyArNDAsOCBAQCBlbnVtIGNsYXNzIERpc3RhbmNlTW9kZWxUeXBl
IHsKICAgICBFeHBvbmVudGlhbAogfTsKIAotY2xhc3MgRGlzdGFuY2VFZmZlY3QgeworY2xhc3Mg
RGlzdGFuY2VFZmZlY3QgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIERpc3RhbmNlRWZmZWN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9Eb3duU2FtcGxlci5oCmluZGV4IGY0YjQyMDE3ZWU3NjI3Y2FkNjU2YmZmNDU3YWFlOTg5
NDgwMTRiZjIuLjk1NzBiODkxYzk3ZmZhOTExYTAxMTM0MDAzYjRmZGNiNWY3NmY5MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIERvd25TYW1wbGVyIGRvd24tc2FtcGxlcyB0
aGUgc291cmNlIHN0cmVhbSBieSBhIGZhY3RvciBvZiAyeC4KIAotY2xhc3MgRG93blNhbXBsZXIg
eworY2xhc3MgRG93blNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IERvd25TYW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmNwcAppbmRleCBiMjU1MThkODgwYThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWVi
Li41MTM3OTlhODUxMmY0MjdiNGU0YjhkOWIyOTQ1YTk0ZDM0OTE4Nzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAg
LTI3MSw4ICsyNzEsOCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFu
bmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgIG1fcHJlRmlsdGVyUGFja3MuY2xl
YXIoKTsKICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5jbGVhcigpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgbV9wcmVGaWx0ZXJQ
YWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKLSAg
ICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVG
aWx0ZXJQYWNrND4oKSk7CisgICAgICAgIG1fcHJlRmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlx
dWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7CisgICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFw
cGVuZChtYWtlVW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwogICAgIH0KIAogICAgIG1f
c291cmNlQ2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNo
YW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yLmgKaW5kZXggZWY4YzA5M2ExYjk2NTMyMjlkNzk5ZjFhNmIyOTJhZmFkYmRhYmFk
MS4uODIyYzkzMWYzOGNlMGVjOGRjNjI4MmYwZjhjMzQzYWY2NzdmOTg0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTQz
LDggKzQzLDkgQEAgY2xhc3MgQXVkaW9CdXM7CiAvLyBvZiB0aGUgbG91ZGVzdCBwYXJ0cyBvZiB0
aGUgc2lnbmFsIGFuZCByYWlzZXMgdGhlIHZvbHVtZSBvZiB0aGUgc29mdGVzdCBwYXJ0cywKIC8v
IG1ha2luZyB0aGUgc291bmQgcmljaGVyLCBmdWxsZXIsIGFuZCBtb3JlIGNvbnRyb2xsZWQuCiAK
LWNsYXNzIER5bmFtaWNzQ29tcHJlc3NvciB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgZmlu
YWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKER5bmFtaWNzQ29tcHJlc3Nvcik7CiBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAgIFBh
cmFtVGhyZXNob2xkLApAQCAtOTUsOSArOTYsMTAgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29y
IHsKICAgICBmbG9hdCBtX2xhc3RBbmNob3I7CiAgICAgZmxvYXQgbV9sYXN0RmlsdGVyU3RhZ2VH
YWluOwogCi0gICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgIHN0cnVjdCBaZXJvUG9sZUZpbHRlclBh
Y2s0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBa
ZXJvUG9sZSBmaWx0ZXJzWzRdOwotICAgIH0gWmVyb1BvbGVGaWx0ZXJQYWNrNDsKKyAgICB9Owog
CiAgICAgLy8gUGVyLWNoYW5uZWwgZW1waGFzaXMgZmlsdGVycy4KICAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPFplcm9Qb2xlRmlsdGVyUGFjazQ+PiBtX3ByZUZpbHRlclBhY2tzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2Vy
bmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHAKaW5kZXggNzM0YjA2NmNkYTQ4YmMyYzdhNzllZGY1MDdkMDZjMDU2YzcwYTA5
MC4uYWZlZGI3YjRjZDBhNWE2MWQxYTlmZTI3OGMzNDAzODNmOThlMjFiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVs
OjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAKICAgICBt
X3ByZURlbGF5QnVmZmVycy5jbGVhcigpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgIG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKKyAg
ICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5
PihNYXhQcmVEZWxheUZyYW1lcykpOwogfQogCiB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bDo6c2V0UHJlRGVsYXlUaW1lKGZsb2F0IHByZURlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKaW5k
ZXggYjdiY2VhMmZhZmQ4OTk2Y2E1MjhiMGI1ZGFiNDljYjg4OTU4ZGNjNC4uZTExZjQ3YmFhZjBi
YzZjNWQwY2E3ZTNkNzIwMDgyNjM5ZDI3MGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgKQEAgLTM1LDcg
KzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNz
b3JLZXJuZWwgeworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yS2VybmVsIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWwoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93
ZXJQYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5u
ZXIuaAppbmRleCA4Y2Y1OTkxNzk1ZjNmMWY2M2UyODFkOWUxNmFjYWYzZDdhNTdhNWRhLi40ZTQ2
M2IxMjgxYTdmYTNiYjM5N2E2YjA2NWNlMDMzY2NiZjlhZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCkBAIC0zMSw3ICszMSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ29tbW9uIHR5cGUgb2Ygc3RlcmVvIHBhbm5lciBh
cyBmb3VuZCBpbiBub3JtYWwgYXVkaW8gbWl4aW5nIGVxdWlwbWVudC4KIAotY2xhc3MgRXF1YWxQ
b3dlclBhbm5lciA6IHB1YmxpYyBQYW5uZXIgeworY2xhc3MgRXF1YWxQb3dlclBhbm5lciBmaW5h
bCA6IHB1YmxpYyBQYW5uZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEVxdWFsUG93ZXJQYW5u
ZXIoZmxvYXQgc2FtcGxlUmF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZUQ29udm9sdmVyLmgKaW5kZXggNDU0MmI2ZmIyNTc4NTQ5NWFiMjA2YWJjM2M5MGM3NWJjMmYx
NmVhMC4uMzg2MjI3ZjE5NzA0YWZkNzkyZTM2NjIyYmRkYTljMWFjZWE3NTEwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgKQEAgLTM0LDcgKzM0LDkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGRlRDb252b2x2ZXIgeworY2xhc3Mg
RkZUQ29udm9sdmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShGRlRDb252b2x2ZXIpOwogcHVibGljOgogICAgIC8vIGZmdFNp
emUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3bwogICAgIEZGVENvbnZvbHZlcihzaXplX3QgZmZ0U2l6
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKaW5kZXggNGMw
MmI2OTkyYjA2MzgzYjgwMzU3Mzc4NzhkYmY2NWEyNmZiOWMzMS4uNGMxNTIwNjdkNDRhYzRiODU0
MTkyMWFhZWQyOTU5ODJiOTY5Mzc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZURnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0ZGVEZyYW1lLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIEZGVEZyYW1lOjpkb1BhZGRlZEZG
VChjb25zdCBmbG9hdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
RkZURnJhbWU+IEZGVEZyYW1lOjpjcmVhdGVJbnRlcnBvbGF0ZWRGcmFtZShjb25zdCBGRlRGcmFt
ZSYgZnJhbWUxLCBjb25zdCBGRlRGcmFtZSYgZnJhbWUyLCBkb3VibGUgeCkKIHsKLSAgICBhdXRv
IG5ld0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7
CisgICAgYXV0byBuZXdGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZyYW1lMS5mZnRTaXpl
KCkpOwogCiAgICAgbmV3RnJhbWUtPmludGVycG9sYXRlRnJlcXVlbmN5Q29tcG9uZW50cyhmcmFt
ZTEsIGZyYW1lMiwgeCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlLmgKaW5kZXggNzU3YmNmYTRiNmFlZmQ3MGViYWU4NjU0ODcyNWZhNDA2MjljNmU5ZS4u
YTUxOTM0OTgxNTA0NTI2ZDZmYzY0ZDQ1Yjk3OTBiMzc4MTAzYTQ1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIUlRGS2VybmVsOwogCi1jbGFzcyBIUlRGRGF0YWJh
c2UgeworY2xhc3MgSFJURkRhdGFiYXNlIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIUlRGRGF0YWJhc2UpOwogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRl
ci5jcHAKaW5kZXggZjQ1YmU4NDdjZTcxMGRjZWRhMmUwZWMxMDZiNzViZjI2ODU3ODljZC4uYTQ3
NGE3MGM0MDg1MmFlMmUxZjlmNThhNDlhMDAwMzYxNTgwYjMxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCkBAIC04NSw3
ICs4NSw3IEBAIHZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKCkKICAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1faHJ0ZkRhdGFiYXNlLmdldCgpKSB7CiAgICAgICAg
IC8vIExvYWQgdGhlIGRlZmF1bHQgSFJURiBkYXRhYmFzZS4KLSAgICAgICAgbV9ocnRmRGF0YWJh
c2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZEYXRhYmFzZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUp
OworICAgICAgICBtX2hydGZEYXRhYmFzZSA9IG1ha2VVbmlxdWU8SFJURkRhdGFiYXNlPihtX2Rh
dGFiYXNlU2FtcGxlUmF0ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCmluZGV4IGM4NGFiOTc1MWExNDU5ODlhMDM3N2Zh
ZDFmNGE3NWU4ZjE3ZTJiMjQuLjYwNTIzMmNkMWE5OWM5MjMzZDlhZDEwNDliYTMwN2UyMTc3Mzhm
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24u
Y3BwCkBAIC0yNDQsOCArMjQ0LDggQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhS
VEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWIKICAgICBpZiAo
IWlzRWxldmF0aW9uR29vZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAg
IGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1i
ZXJPZlRvdGFsQXppbXV0aHMpOwotICAgIGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2Vy
bmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0
aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihO
dW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAgICAgLy8gTG9hZCBjb252b2x1dGlvbiBrZXJuZWxz
IGZyb20gSFJURiBmaWxlcy4KICAgICBpbnQgaW50ZXJwb2xhdGVkSW5kZXggPSAwOwpAQCAtMjc0
LDcgKzI3NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9u
OjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViCiAgICAgICAgIH0KICAgICB9CiAg
ICAgCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShr
ZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlz
dEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50
ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZh
dGlvbiogaHJ0ZkVsZXZhdGlvbjIsIGZsb2F0IHgsIGZsb2F0IHNhbXBsZVJhdGUpCkBAIC0yODUs
OCArMjg1LDggQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246
OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNlcyhIUlRGRWwKICAgICAgICAgCiAgICAgQVNTRVJU
KHggPj0gMC4wICYmIHggPCAxLjApOwogICAgIAotICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAg
IGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1i
ZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhS
VEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlz
dFIgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwog
CiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5lbExpc3RMMSA9IGhydGZFbGV2YXRpb24xLT5rZXJu
ZWxMaXN0TCgpOwogICAgIEhSVEZLZXJuZWxMaXN0KiBrZXJuZWxMaXN0UjEgPSBocnRmRWxldmF0
aW9uMS0+a2VybmVsTGlzdFIoKTsKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2Vz
KEhSVEZFbAogICAgIC8vIEludGVycG9sYXRlIGVsZXZhdGlvbiBhbmdsZS4KICAgICBkb3VibGUg
YW5nbGUgPSAoMS4wIC0geCkgKiBocnRmRWxldmF0aW9uMS0+ZWxldmF0aW9uQW5nbGUoKSArIHgg
KiBocnRmRWxldmF0aW9uMi0+ZWxldmF0aW9uQW5nbGUoKTsKICAgICAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92
ZShrZXJuZWxMaXN0UiksIHN0YXRpY19jYXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwg
V1RGTW92ZShrZXJuZWxMaXN0UiksIHN0YXRpY19jYXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRl
KTsKIH0KIAogdm9pZCBIUlRGRWxldmF0aW9uOjpnZXRLZXJuZWxzRnJvbUF6aW11dGgoZG91Ymxl
IGF6aW11dGhCbGVuZCwgdW5zaWduZWQgYXppbXV0aEluZGV4LCBIUlRGS2VybmVsKiAma2VybmVs
TCwgSFJURktlcm5lbCogJmtlcm5lbFIsIGRvdWJsZSYgZnJhbWVEZWxheUwsIGRvdWJsZSYgZnJh
bWVEZWxheVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RWxldmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9u
LmgKaW5kZXggMmE5NTkwNDU1MjE4NDNhMTUxNjJlY2M4ZTMyMTE3MzllMDcwNTNmNy4uZWY3NTJj
M2MwMWJlMzllY2RiN2VmNjRkZjQzOTA5MjY2ZDZlZDk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaApAQCAtMzksNyArMzksOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIC8vIEhSVEZFbGV2YXRpb24gY29udGFpbnMgYWxsIG9mIHRoZSBIUlRG
S2VybmVscyAob25lIGxlZnQgZWFyIGFuZCBvbmUgcmlnaHQgZWFyIHBlciBhemltdXRoIGFuZ2xl
KSBmb3IgYSBwYXJ0aWN1bGFyIGVsZXZhdGlvbi4KIAotY2xhc3MgSFJURkVsZXZhdGlvbiB7Citj
bGFzcyBIUlRGRWxldmF0aW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIUlRGRWxldmF0aW9uKTsKIHB1YmxpYzoKICAgICBI
UlRGRWxldmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2VybmVsTGlzdD4ga2VybmVsTGlzdEws
IHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2VybmVsTGlzdD4ga2VybmVsTGlzdFIsIGludCBlbGV2YXRp
b24sIGZsb2F0IHNhbXBsZVJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZLZXJuZWwuY3BwCmluZGV4IGVkZjZjNjBkMGRiODE0ZDk0YzBmNzFiNjMwNmU0MzgyNjUzYWE0
YzcuLjM3NTUyMTZhZTI4N2E3MWM3NDI5MjlhNTNjOTU5MDk2ZGIxZGJiN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCkBAIC05Miw3ICs5Miw3IEBA
IEhSVEZLZXJuZWw6OkhSVEZLZXJuZWwoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0
U2l6ZSwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmZ0RnJh
bWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKKyAgICBtX2ZmdEZyYW1l
ID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CiAgICAgbV9mZnRGcmFtZS0+ZG9QYWRk
ZWRGRlQoaW1wdWxzZVJlc3BvbnNlLCB0cnVuY2F0ZWRSZXNwb25zZUxlbmd0aCk7CiB9CiAKQEAg
LTEwMyw3ICsxMDMsNyBAQCBzaXplX3QgSFJURktlcm5lbDo6ZmZ0U2l6ZSgpIGNvbnN0CiAKIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0NoYW5uZWw+IEhSVEZLZXJuZWw6OmNyZWF0ZUltcHVsc2VSZXNw
b25zZSgpCiB7Ci0gICAgYXV0byBjaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5u
ZWw+KGZmdFNpemUoKSk7CisgICAgYXV0byBjaGFubmVsID0gbWFrZVVuaXF1ZTxBdWRpb0NoYW5u
ZWw+KGZmdFNpemUoKSk7CiAgICAgRkZURnJhbWUgZmZ0RnJhbWUoKm1fZmZ0RnJhbWUpOwogCiAg
ICAgLy8gQWRkIGxlYWRpbmcgZGVsYXkgYmFjayBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZQYW5uZXIuaAppbmRleCBiZjVlZWZhYTVlNGM2ZDJiZjE3YTk5MDAzMDc0MTY1
YzZlNDMzYWQ3Li5jYWFhNDQxZjFkMTRlYTM2ZjVlOTY4YWQ4YTc3ZDBiN2E2MGRkOTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCkBAIC0zMiw3ICszMiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFJURlBhbm5lciA6IHB1YmxpYyBQ
YW5uZXIgeworY2xhc3MgSFJURlBhbm5lciBmaW5hbCA6IHB1YmxpYyBQYW5uZXIgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IEhSVEZQYW5uZXIoZmxvYXQgc2FtcGxlUmF0ZSwgSFJURkRhdGFiYXNl
TG9hZGVyKik7CiAgICAgdmlydHVhbCB+SFJURlBhbm5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXgg
YmJiZjE2NDQ2MjA3NjM5ZTM1Y2Y3OTU2NDgyODI2M2QzZTkzNzNhZS4uNWJmOWFiOTVkMDE1NzUw
MDgxNWQ2MTMxYWIxZDg5NzQxYmUxZmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6TXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBz
Y2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVyCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5l
bCdzIHJlc2FtcGxlci4KICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5u
ZWxJbmRleCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tl
cm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3Ip
KTsKKyAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNj
YWxlRmFjdG9yKSk7CiB9CiAKIHZvaWQgTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpwcm9jZXNzKEF1
ZGlvU291cmNlUHJvdmlkZXIqIHByb3ZpZGVyLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCmluZGV4IDQ0MTc1NDc2MDU4M2QyODAzNGE0NWIz
YmQ4YTYxODhkNDY1YTJmMzYuLjYxNDZlOTI1YzA2YTJkZGE3NmNiNDEyZjBjYzFlMGEyNDZhYzgw
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5l
bFJlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hh
bm5lbFJlc2FtcGxlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQXVkaW9CdXM7CiAgICAgCi1jbGFzcyBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgeworY2xh
c3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzogICAKICAgICBleHBsaWNpdCBNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91
YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCmluZGV4IGFjNzI4NmFjOWEwNjBiNzUzNGNiMmVk
ZTkyMWQ2Y2JkNzdhOTdhODguLjQwYjlkMDFkYzE4NGI5NmQ1ZGYzYWI5YjdmNDA5NDYzYTk3ODM0
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcApAQCAtNDMsMTEg
KzQzLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYW5uZXI+IFBhbm5lcjo6Y3JlYXRlKFBhbm5pbmdN
b2RlbFR5cGUgbW9kZWwsIGZsb2F0IHNhbXBsZVJhdGUsCiAKICAgICBzd2l0Y2ggKG1vZGVsKSB7
CiAgICAgY2FzZSBQYW5uaW5nTW9kZWxUeXBlOjpFcXVhbHBvd2VyOgotICAgICAgICBwYW5uZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVxdWFsUG93ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOworICAgICAg
ICBwYW5uZXIgPSBtYWtlVW5pcXVlPEVxdWFsUG93ZXJQYW5uZXI+KHNhbXBsZVJhdGUpOwogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgUGFubmluZ01vZGVsVHlwZTo6SFJURjoKLSAgICAgICAg
cGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFz
ZUxvYWRlcik7CisgICAgICAgIHBhbm5lciA9IG1ha2VVbmlxdWU8SFJURlBhbm5lcj4oc2FtcGxl
UmF0ZSwgZGF0YWJhc2VMb2FkZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oCmluZGV4IGNk
YTcyZThhYjNjNGNkYzBhODY4ZmFhYzRmMDVjZTYxYzQ0NDAyZDAuLjQ2MzVhNjczM2VjYzNmM2Ew
NzUwMmZjN2E3NTAxNzNlMzNlMTFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaApAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1BdWRpb0RhdGEoKSA9
IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRleCBlMDIzOTRhYTViMTQ5Y2QxNTk2OTEyYTI1Njgx
ZmY1ZWE0NGFkOGQyLi5jOGJkNjRhNDFiZjYxMmU4OWUzYzIxNGZhMjJkY2M1OTk0OGU1NGQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb24uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUK
IAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1NZWRpYVNlc3Npb24+KGNsaWVudCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1NZWRpYVNlc3Npb24+KGNsaWVudCk7CiB9CiAK
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbkNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
Yi5jcHAKaW5kZXggMzA0M2ZjOGEwNGRmMGQ3N2MxMGFhMDM3OWJkMjZhMzlkNDZjZTZiYS4uOGE2
NzU1YzU0YWQwMGEzYTgxMDE4NzQyMTYyY2NkMDc0ZGUxMGUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBSZXZlcmI6
OmluaXRpYWxpemUoQXVkaW9CdXMqIGltcHVsc2VSZXNwb25zZUJ1ZmZlciwgc2l6ZV90IHJlbmRl
clNsaWNlU2l6ZSwKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVJlc3BvbnNlQ2hhbm5l
bHM7ICsraSkgewogICAgICAgICBBdWRpb0NoYW5uZWwqIGNoYW5uZWwgPSBpbXB1bHNlUmVzcG9u
c2VCdWZmZXItPmNoYW5uZWwoaSk7CiAKLSAgICAgICAgbV9jb252b2x2ZXJzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFJldmVyYkNvbnZvbHZlcj4oY2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBt
YXhGRlRTaXplLCBjb252b2x2ZXJSZW5kZXJQaGFzZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsK
KyAgICAgICAgbV9jb252b2x2ZXJzLmFwcGVuZChtYWtlVW5pcXVlPFJldmVyYkNvbnZvbHZlcj4o
Y2hhbm5lbCwgcmVuZGVyU2xpY2VTaXplLCBtYXhGRlRTaXplLCBjb252b2x2ZXJSZW5kZXJQaGFz
ZSwgdXNlQmFja2dyb3VuZFRocmVhZHMpKTsKIAogICAgICAgICBjb252b2x2ZXJSZW5kZXJQaGFz
ZSArPSByZW5kZXJTbGljZVNpemU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmIuaAppbmRleCAzZTI1NzZiMzU3NTdkYmEyNDcwYzhlYjdkYTNjMTdiZWViYmZkY2VkLi4y
MzRlMzFkYWViYmQ0ZGRhYTM2YTFlOTA1MzExZWI5OTIyZmFhNjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBBdWRpb0J1czsK
ICAgICAKIC8vIE11bHRpLWNoYW5uZWwgY29udm9sdXRpb24gcmV2ZXJiIHdpdGggY2hhbm5lbCBt
YXRyaXhpbmcgLSBvbmUgb3IgbW9yZSBSZXZlcmJDb252b2x2ZXIgb2JqZWN0cyBhcmUgdXNlZCBp
bnRlcm5hbGx5LgogCi1jbGFzcyBSZXZlcmIgeworY2xhc3MgUmV2ZXJiIGZpbmFsIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIHsgTWF4RnJhbWVTaXpl
ID0gMjU2IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJBY2N1bXVsYXRpb25CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oCmluZGV4IDUxMmI2YWRlMzQxYTI4NTY5NzJlZTNmN2Jj
YjIxMTY2YmI3MjFhMWYuLmE2MjgzNWY5YzBkN2Q3NDNjOWU5MjdjZWRlMmQ2YTFkYTQ1NTg0MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxh
dGlvbkJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFj
Y3VtdWxhdGlvbkJ1ZmZlci5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciBpcyBhIGNpcmN1bGFyIGRlbGF5IGJ1ZmZlciB3
aXRoIG9uZSBjbGllbnQgcmVhZGluZyBmcm9tIGl0IGFuZCBtdWx0aXBsZSBjbGllbnRzCiAvLyB3
cml0aW5nL2FjY3VtdWxhdGluZyB0byBpdCBhdCBkaWZmZXJlbnQgZGVsYXkgb2Zmc2V0cyBmcm9t
IHRoZSByZWFkIHBvc2l0aW9uLiAgVGhlIHJlYWQgb3BlcmF0aW9uIHdpbGwgemVybyB0aGUgbWVt
b3J5CiAvLyBqdXN0IHJlYWQgZnJvbSB0aGUgYnVmZmVyLCBzbyBpdCB3aWxsIGJlIHJlYWR5IGZv
ciBhY2N1bXVsYXRpb24gdGhlIG5leHQgdGltZSBhcm91bmQuCi1jbGFzcyBSZXZlcmJBY2N1bXVs
YXRpb25CdWZmZXIgeworY2xhc3MgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIGZpbmFsIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZXZlcmJB
Y2N1bXVsYXRpb25CdWZmZXIoc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCmluZGV4IDE0NWRmODFlMmE2YmEy
YzJkYWE5YmI0MWU2YjVjYWJhZjM4NWY5MWMuLmE5YzkzNWMxYTI4NWFiMTM2MmQ4ZmYxZGY4Y2Vi
YTVhN2U1YWE3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBSZXZlcmJDb252b2x2ZXI6OlJldmVy
YkNvbnZvbHZlcihBdWRpb0NoYW5uZWwqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlbmRlclNs
aQogCiAgICAgICAgIGJvb2wgdXNlRGlyZWN0Q29udm9sdmVyID0gIXN0YWdlT2Zmc2V0OwogCi0g
ICAgICAgIGF1dG8gc3RhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdl
PihyZXNwb25zZSwgdG90YWxSZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFn
ZU9mZnNldCwgc3RhZ2VTaXplLCBmZnRTaXplLCByZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXpl
LCAmbV9hY2N1bXVsYXRpb25CdWZmZXIsIHVzZURpcmVjdENvbnZvbHZlcik7CisgICAgICAgIGF1
dG8gc3RhZ2UgPSBtYWtlVW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90
YWxSZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VT
aXplLCBmZnRTaXplLCByZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRp
b25CdWZmZXIsIHVzZURpcmVjdENvbnZvbHZlcik7CiAKICAgICAgICAgYm9vbCBpc0JhY2tncm91
bmRTdGFnZSA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlci5oCmluZGV4IDViODE5ZTFhM2U2ZjRmYjFmOGRiMGM1OTY5NzI2MmFhYzA5
YzZiZGUuLjMyMDBiNDVlYThkZjdjMjFjZTZmYTM3ZTA4YmIyNzkxZjhhZTVmNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCkBAIC00Myw4
ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9DaGFubmVsOwogCi1j
bGFzcyBSZXZlcmJDb252b2x2ZXIgeworY2xhc3MgUmV2ZXJiQ29udm9sdmVyIGZpbmFsIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXZl
cmJDb252b2x2ZXIpOwogcHVibGljOgogICAgIC8vIG1heEZGVFNpemUgY2FuIGJlIGFkanVzdGVk
IChmcm9tIHNheSAyMDQ4IHRvIDMyNzY4KSBkZXBlbmRpbmcgb24gaG93IG11Y2ggcHJlY2lzaW9u
IGlzIG5lY2Vzc2FyeS4KICAgICAvLyBGb3IgY2VydGFpbiB0d2Vha3kgZGUtY29udm9sdmluZyBh
cHBsaWNhdGlvbnMgdGhlIHBoYXNlIGVycm9ycyBhZGQgdXAgcXVpY2tseSBhbmQgbGVhZCB0byBu
b24tc2Vuc2ljYWwgcmVzdWx0cyB3aXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKaW5kZXggMGZkZTQyMWFmMmY4MmZk
NDg3NGQ5NGY2YWYxZDYzNDcyMzljNjU2ZS4uNGZmOTUzYjI2MDQ5MTdkMzQ1MjAzOTQwNWI2NWRl
MmJkNWExZWFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcApAQCAtNTUsMTYgKzU1LDE2IEBAIFJldmVyYkNvbnZv
bHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZShjb25zdCBmbG9hdCogaW1wdWxzZVJlc3Bv
bnNlLCBzaXplX3QsCiAgICAgQVNTRVJUKGFjY3VtdWxhdGlvbkJ1ZmZlcik7CiAKICAgICBpZiAo
IW1fZGlyZWN0TW9kZSkgewotICAgICAgICBtX2ZmdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8
RkZURnJhbWU+KGZmdFNpemUpOworICAgICAgICBtX2ZmdEtlcm5lbCA9IG1ha2VVbmlxdWU8RkZU
RnJhbWU+KGZmdFNpemUpOwogICAgICAgICBtX2ZmdEtlcm5lbC0+ZG9QYWRkZWRGRlQoaW1wdWxz
ZVJlc3BvbnNlICsgc3RhZ2VPZmZzZXQsIHN0YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9mZnRDb252
b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVENvbnZvbHZlcj4oZmZ0U2l6ZSk7CisgICAgICAg
IG1fZmZ0Q29udm9sdmVyID0gbWFrZVVuaXF1ZTxGRlRDb252b2x2ZXI+KGZmdFNpemUpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghc3RhZ2VPZmZzZXQpOwogICAgICAgICBBU1NFUlQo
c3RhZ2VMZW5ndGggPD0gZmZ0U2l6ZSAvIDIpOwogCi0gICAgICAgIG1fZGlyZWN0S2VybmVsID0g
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZmdFNpemUgLyAyKTsKKyAgICAgICAg
bV9kaXJlY3RLZXJuZWwgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIp
OwogICAgICAgICBtX2RpcmVjdEtlcm5lbC0+Y29weVRvUmFuZ2UoaW1wdWxzZVJlc3BvbnNlLCAw
LCBzdGFnZUxlbmd0aCk7Ci0gICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxEaXJlY3RDb252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CisgICAgICAgIG1fZGlyZWN0
Q29udm9sdmVyID0gbWFrZVVuaXF1ZTxEaXJlY3RDb252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7
CiAgICAgfQogICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFsbG9jYXRlKHJlbmRlclNsaWNlU2l6ZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5oCmluZGV4IGEwNDkwOTcwMzQwYWIzYjMzNjAwYjA4OWU1OTg0NzRmYjNkNDU1ZTYu
LjNjMDNiZTM0MWIzYjdkNjQ2MjFkYzgwMzgxNjY5MzYwZjRkYjRjOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaApAQCAt
NDIsNyArNDIsNyBAQCBjbGFzcyBEaXJlY3RDb252b2x2ZXI7CiAgICAgCiAvLyBBIFJldmVyYkNv
bnZvbHZlclN0YWdlIHJlcHJlc2VudHMgdGhlIGNvbnZvbHV0aW9uIGFzc29jaWF0ZWQgd2l0aCBh
IHN1Yi1zZWN0aW9uIG9mIGEgbGFyZ2UgaW1wdWxzZSByZXNwb25zZS4KIC8vIEl0IGluY29ycG9y
YXRlcyBhIGRlbGF5IGxpbmUgdG8gYWNjb3VudCBmb3IgdGhlIG9mZnNldCBvZiB0aGUgc3ViLXNl
Y3Rpb24gd2l0aGluIHRoZSBsYXJnZXIgaW1wdWxzZSByZXNwb25zZS4KLWNsYXNzIFJldmVyYkNv
bnZvbHZlclN0YWdlIHsKK2NsYXNzIFJldmVyYkNvbnZvbHZlclN0YWdlIGZpbmFsIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyByZW5kZXJQaGFzZSBpcyB1
c2VmdWwgdG8ga25vdyBzbyB0aGF0IHdlIGNhbiBtYW5pcHVsYXRlIHRoZSBwcmUgdmVyc3VzIHBv
c3QgZGVsYXkgc28gdGhhdCBzdGFnZXMgd2lsbCBwZXJmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAppbmRleCBiYjA2ZTRlZWQ2MzNm
MGU3YzY4MmUyMGU0ZTZhNTcyYWExZmFhOTY2Li5hZjllZDAwZDczM2U4NDJiNmVkM2E2NDc0ODU0
MjBkM2M3Njc3NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJJbnB1dEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYklucHV0QnVmZmVyLmgKQEAgLTM0LDcgKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogLy8gUmV2ZXJiSW5wdXRCdWZmZXIgaXMgdXNlZCB0byBidWZmZXIgaW5wdXQgc2FtcGxlcyBm
b3IgZGVmZXJyZWQgcHJvY2Vzc2luZyBieSB0aGUgYmFja2dyb3VuZCB0aHJlYWRzLgotY2xhc3Mg
UmV2ZXJiSW5wdXRCdWZmZXIgeworY2xhc3MgUmV2ZXJiSW5wdXRCdWZmZXIgZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJldmVyYklu
cHV0QnVmZmVyKHNpemVfdCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9TaW5jUmVzYW1wbGVyLmgKaW5kZXggMmZjZDg5ZjdlY2EzNzU4NTg2MzFhOWIyNzY1YTEw
ZDIwMWIzNDFjNy4uYzEzMmY1ZDk3NjJjNzU2NmIyMzI1YzA2NGIyOGRlOGI2ZTM5MDFmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaApAQCAtMzYs
NyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFNpbmNSZXNhbXBsZXIgaXMgYSBo
aWdoLXF1YWxpdHkgc2FtcGxlLXJhdGUgY29udmVydGVyLgogCi1jbGFzcyBTaW5jUmVzYW1wbGVy
IHsKK2NsYXNzIFNpbmNSZXNhbXBsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOiAgIAogICAgIC8vIHNjYWxlRmFjdG9yID09IHNvdXJjZVNhbXBsZVJhdGUg
LyBkZXN0aW5hdGlvblNhbXBsZVJhdGUKICAgICAvLyBrZXJuZWxTaXplIGNhbiBiZSBhZGp1c3Rl
ZCBmb3IgcXVhbGl0eSAoaGlnaGVyIGlzIGJldHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vVXBTYW1wbGVyLmgKaW5kZXggMjY2YmNhZjk4MGQ3MjZmYTJmNjM3Y2ZlOTNhNWQ0YzM4
YjI0ZWUwNi4uNjc1ZWU0YWQwYzQ0NjdjZDFkZDZkMWQ1MTYxMWU3N2I5OGM0YzYzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVXBTYW1wbGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBVcFNhbXBsZXIgdXAtc2FtcGxlcyB0aGUgc291cmNl
IHN0cmVhbSBieSBhIGZhY3RvciBvZiAyeC4KIAotY2xhc3MgVXBTYW1wbGVyIHsKK2NsYXNzIFVw
U2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgVXBTYW1wbGVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaAppbmRleCA4MzFkZTkwOTNiMDA1NjE2YjRiZDc3
ZWE3YjA3NzhjMzdkYWE3YjZlLi4wMmZmYWNkNWVhY2E3Y2UyNzU4OTJiZThkNjQzOTRjNzMzZGM3
ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKQEAgLTMzLDcg
KzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBaZXJvUG9sZSBpcyBhIHNpbXBsZSBm
aWx0ZXIgd2l0aCBvbmUgemVybyBhbmQgb25lIHBvbGUuCiAKLWNsYXNzIFplcm9Qb2xlIHsKK2Ns
YXNzIFplcm9Qb2xlIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBaZXJvUG9sZSgpCiAgICAgICAgIDogbV96ZXJvKDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oCmlu
ZGV4IDg2YjY1YTIyNTNhZjFhZWIyYTFjYTljYWEzNjY3ODZjZDdkNjU1MjAuLjhhN2U3YTAzYWMz
M2E0ZTU1YzQzYzMxYWVjNjM3YjE4OWNiMWM3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oCkBAIC0zOSw3
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uOwogCi1jbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3QgOiBwdWJsaWMgUGxhdGZvcm1BdWRp
b0RhdGEgeworY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0IGZpbmFsIDogcHVibGljIFBsYXRmb3Jt
QXVkaW9EYXRhIHsKIHB1YmxpYzoKICAgICBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgV2ViQXVkaW9CdWZmZXJM
aXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQzMl90IHNhbXBsZUNvdW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCA1YmY4ZmRh
NmIyOTEyYjE4ZjExOTBkY2JlNzA4MmJmNjg0YmVlOThmLi4xYTU0OTVmZDc2NGQ5YzNjYzZlZGI1
ODFmYTQ4MGVhZWFkMTQ1OWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9u
PiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYg
KG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9E
ZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVs
cyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxl
UmF0ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9h
dCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
CmluZGV4IDhhZjg3N2VjMmM0Y2EwYWJkMzA3NDgzNWY1NGIzNGFlYmYwNDMzYTIuLjRiZGU3ZTQx
ZTJiNjQzN2NkMGZmNzI1ZTRkMDc5ZDY4Zjg5ZTdkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAg
LTgwLDcgKzgwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVz
dGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZP
dXRwdXRDaGFubmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNr
LCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9T
PihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246Omhh
cmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQppbmRleCBkYzZjOGJjY2UzNjlkMDZhZWRjOGZkMzMz
YzczOGMwYmU5NTc1ZGQ0Li42Mzk4MjQwYmJkOGQ5NjczMDJkZjdlOWVjZmY0MDc1MDJkYTZlMjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNz
aW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nl
c3Npb25JT1MubW0KQEAgLTU5LDYgKzU5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNhdGVnb3J5
TmFtZShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSkKICNlbmRpZgogCiBjbGFz
cyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiopOwogICAgIEF1ZGlv
U2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnlPdmVycmlkZTsKQEAgLTcxLDcgKzcyLDcg
QEAgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24q
KQogfQogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0aGlzKSkKKyAgICA6IG1fcHJpdmF0
ZShtYWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KHRoaXMpKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5jcHAKaW5kZXggNzY0YTM0N2Y5ODI5ZTFlODQ3NWJkMmVhMTI4MGFhMTc1MDI2ZWNmYy4u
OWZlNjRiYWFhNDc4NGZlY2RhYjNkNmRkYjVlMjc4MzgxZTFlMDcwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFj
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4g
QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChu
dW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVz
dGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMi
LCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJh
dGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4o
Y2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGlu
YXRpb25NYWM+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5h
dGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCmluZGV4IDc3ZDQz
MTY1NjY5OTBlOTAxYjkyMGJmNzc4ZDk2OWU5ZjE4ZjE4OGEuLjQxYWZlMzlmMjMyYWU1ODgwODYw
ZjA4NGQ1NTZjYjRhNWQ4YWUyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQpAQCAtMTA4LDcgKzEw
OCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0SW5wdXRGb3JtYXQoY29u
c3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmCiB7CiAgICAgQVNTRVJUKGZvcm1hdC5zYW1w
bGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKKyAgICBtX2lucHV0RGVzY3Jp
cHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKICAg
ICBpZiAobV9vdXRwdXREZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJuIHNldHVwQ29udmVydGVy
KCk7CiAKQEAgLTEyMCw5ICsxMjAsOSBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6
OnNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mCiAgICAgQVNT
RVJUKG1faW5wdXREZXNjcmlwdGlvbik7CiAgICAgQVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkg
Pj0gMCk7CiAKLSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9
IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOwogICAgIGlmICgh
bV9yaW5nQnVmZmVyKQotICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENB
UmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdC
dWZmZXI+KCk7CiAKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGZvcm1hdCwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVDb3VudCkpOwogICAgIG1fc2NyYXRjaEJ1ZmZlciA9
IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y3JlYXRlKG1fb3V0cHV0RGVzY3JpcHRpb24tPnN0cmVh
bURlc2NyaXB0aW9uKCksIG1fbWF4aW11bVNhbXBsZUNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKaW5kZXggN2Y2
ZWY5ZDMzZGIxZmI0N2U3Y2YxNGM1OTA0YTQ2MTEyYjE1MjIzMi4uY2MwNGYwYmUzMDk3NDk4Yjgz
NjZlOTI0MjA3M2VjZTNlMTk3NWFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY2xh
c3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiB9OwogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lv
bigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRl
Pihpc011dGVkKCkpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJp
dmF0ZT4oaXNNdXRlZCgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCmluZGV4IDE4YTI2YWI2ZGM1YzhkZDAxMjUyZGIwNjQ2
ZDRmNWI5YjQ3YjZmZjUuLjA0YWNlZmM4ZGFhZDcxMzI4YTRkZGZhYmJkMDRhZjllY2Q4ZWI5NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVmZmVy
LmgKQEAgLTM5LDYgKzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXVkaW9CdWZmZXJMaXN0IEF1ZGlv
QnVmZmVyTGlzdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0FSaW5nQnVmZmVyU3Rv
cmFnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+Q0FSaW5nQnVmZmVyU3RvcmFnZSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgYWxs
b2NhdGUoc2l6ZV90KSA9IDA7CkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclN0
b3JhZ2UgewogICAgIHZpcnR1YWwgdm9pZCogZGF0YSgpID0gMDsKIH07CiAKLWNsYXNzIENBUmlu
Z0J1ZmZlclN0b3JhZ2VWZWN0b3IgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CitjbGFz
cyBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yIGZpbmFsIDogcHVibGljIENBUmluZ0J1ZmZlclN0
b3JhZ2UgewogcHVibGljOgogICAgIH5DQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yKCkgPSBkZWZh
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29k
ZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAK
aW5kZXggYjk4MDNiZmEwMjMyNDM1N2MwZGZlMDQ3MzEzZDJjM2VjMzA0Y2I5Mi4uN2E0N2Y1NjA4
YmJiNmRlOWQzNzczYjE3ZTk4ZTQ3NjRhMjQyMjJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6
ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29kZXJDRj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyQ0Y+KGRhdGEsIHNpemUpOwogfQogCiBLZXllZERlY29k
ZXJDRjo6S2V5ZWREZWNvZGVyQ0YoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKaW5kZXggMWE2
MjdlYTAwYjkyY2JhYTZjZjdjMzU1ZDVlNDQ1ZWM0ODYxYTQxMi4uNDQ3M2VjMjhkMDRjNTQzNjMy
M2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2Rlcigp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyQ0Y+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyQ0Y+KCk7CiB9CiAKIHN0YXRpYyBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gY3JlYXRlRGljdGlvbmFyeSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAK
aW5kZXggYjY4OTIyODA1ZTVkMzczZGU3ZjBhZWQ3ODkwODI1YWNjY2MxMjAzOS4uMDdhNDVjYWQ3
OGI2ZDQzN2ZhYTg0MjUyNjk5YzBkNDg2ZDc4ZWQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcApAQCAtNTcsNyAr
NTcsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cFBvd2VyT2JzZXJ2ZXIoKQogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBzdGF0aWMgUG93ZXJPYnNlcnZlciogcG93ZXJPYnNlcnZlcjsKICAgICBpZiAoIXBv
d2VyT2JzZXJ2ZXIpCi0gICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBv
d2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOworICAgICAgICBwb3dl
ck9ic2VydmVyID0gbWFrZVVuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIp
LnJlbGVhc2UoKTsKICNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wg
cmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFy
ZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0KaW5kZXggMTJhYjMyMWNiNDc3MmJlNzAwMTUwMGYxOTZmNzhiNmViZTVlMmJkNS4u
MDVjNTUyNGRlZmM3Nzc2MTFkZjc1ZjQ5YjE5MWQ3ZmQ2OWY0NTg0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0KQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBOZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXI+KCk7CiB9CiAKIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmluaXRpYWxp
emUoY29uc3QgVVJMKiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGFlMGJk
MjA5Y2NkNmYzMTdjOTE5MzI1YTE2YTE4YTk5Y2QxNTcyZTQuLjBkMmE2MjE4NmI1YTU0ZTJiODUx
ZmY5NmQ1MjgxMDFmODQ2NmY0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC01
MCw3ICs1MCw3IEBAIGJvb2wgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQo
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+IFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPigpOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgY2FuSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJv
bGxlci5tbQppbmRleCBlODM2OWM2ZTUwMTZlMjNjZjg3M2I5NTM3ZDJhZmI0ZjBiYzY4NTIyLi44
ZmUzOGFkMGNjZTJmZDU0MmQyOTcwMTdmZGEyZDFjYjM1NWI3NzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTYyMCw3ICs2
MjAsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Ny
b2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFZlY3RvcgogICAgICAgICBpZiAoc25hcFBvaW50cy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9zY3JvbGxTbmFwU3Rh
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOworICAgICAg
ICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+
KCk7CiAgICAgfQogCiAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpICYmIG1fc2Nyb2xsU25h
cFN0YXRlLT5zbmFwT2Zmc2V0c0ZvckF4aXMob3RoZXJTY3JvbGxFdmVudEF4aXMoYXhpcykpLmlz
RW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCA1MDNmOTdiOTIwMThk
YTg3YzI0ODg5MWIyMjY3OWFiYjcwMDViMzAwLi45NmM4NTEyOTM1YWI5YjY5OGU4OTg1NTE2M2Ji
NmQyMmFjOWI4MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0zMDMsNyAr
MzAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IENETUZhY3RvcnlDbGVhcktleTo6
Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGUKICNlbHNlCiAgICAgQVNTRVJUKHN1cHBv
cnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpOwogI2VuZGlmCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVBy
aXZhdGVDbGVhcktleT4oKTsKIH0KIAogYm9vbCBDRE1GYWN0b3J5Q2xlYXJLZXk6OnN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmgKaW5kZXggZDQ3MzA0Yzk1YjI2ZWYyMDRmNWRhNGFkY2JiOGEwODY0ZGUxOGJiMy4uMGI5MTA2
NDljYTRhNDdhOTE1ZDU0OGM5ZDk0YWZmZjMzNTM1OTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENE
TUZhY3RvcnlDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ0RNRmFjdG9yeUNsZWFyS2V5
JiBzaW5nbGV0b24oKTsKIApAQCAtNTQsNiArNTUsNyBAQCBjbGFzcyBDRE1GYWN0b3J5Q2xlYXJL
ZXkgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CiB9OwogCiBjbGFzcyBDRE1Qcml2YXRlQ2xl
YXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUNsZWFyS2V5KCk7CiAgICAgdmlydHVhbCB+
Q0RNUHJpdmF0ZUNsZWFyS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92
aWRlci5tbQppbmRleCBmNzIwY2ZkMzM0M2Y5YmFkMzNhNDkxOWE3OGY4NjZmOWQ4NjJhMGFkLi41
YTZlYjQwNDM5ZWY1OTA1NzJhN2MyOWVmYzMzOGQ5MmYyMzljNWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBHYW1l
Q29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRpZENvbm5lY3QoR0NDb250cm9s
bGVyICpjb250cm9sbGUKICAgICBMT0coR2FtZXBhZCwgIkdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyIGNvbnRyb2xsZXIgJXAgYWRkZWQiLCBjb250cm9sbGVyKTsKIAogICAgIHVuc2lnbmVk
IGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOwotICAgIGF1dG8gZ2FtZXBh
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8R2FtZUNvbnRyb2xsZXJHYW1lcGFkPihjb250cm9sbGVyLCBp
bmRleCk7CisgICAgYXV0byBnYW1lcGFkID0gbWFrZVVuaXF1ZTxHYW1lQ29udHJvbGxlckdhbWVw
YWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKIAogICAgIGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgp
IDw9IGluZGV4KQogICAgICAgICBtX2dhbWVwYWRWZWN0b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCmluZGV4
IDE1ZjA0YzcwOGU5MDA3YmI0ZGFkZWU1NDM1YzM1N2YwMmY1MzFjOTMuLmEyNTIzNGZiODc1YTc1
MWM2M2MzN2JhNmE1Y2VlN2Q0NTM0ZDVhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RydWN0IEhJREdhbWVwYWRFbGVtZW50IHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgSElER2FtZXBhZEVsZW1lbnQoZG91YmxlIHRoZU1p
biwgZG91YmxlIHRoZU1heCwgSU9ISURFbGVtZW50UmVmIGVsZW1lbnQpCiAgICAgICAgIDogbWlu
KHRoZU1pbikKICAgICAgICAgLCBtYXgodGhlTWF4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXgg
NTc0MzkxYjVjMTExYTMyYmU5MTI1Y2E2Y2UwNjAwZjVkNjM4MjI1Ny4uNmQxNGI2YjIxNjEwYjg2
Y2U0YzAwMTNlNTA5MTFiODhmOTVlMWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2
aWNlUmVmIGRldmljZSkKICAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZp
Y2UgJXAgYWRkZWQiLCBkZXZpY2UpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5l
d2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdh
bWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxISURHYW1lcGFkPiBnYW1lcGFkID0gbWFrZVVuaXF1ZTxISURHYW1l
cGFkPihkZXZpY2UsIGluZGV4KTsKIAogICAgIGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9
IGluZGV4KQogICAgICAgICBtX2dhbWVwYWRWZWN0b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmlj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJp
Yy5jcHAKaW5kZXggYTRhMzBiNTJhYmU0OGFmODUwZGM3Yzc0N2EzYmNkZTFkNTFmZGE1Zi4uMGU1
OTcyMzIxYjVmNzNmNTcyYmQ3OTY1ODgxMWYwMDNhOTVlZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIEtleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnkgewog
ICAgIHVzaW5nIE5vZGUgPSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgYm9vbCwgdWludDMyX3Qs
IHVpbnQ2NF90LCBpbnQzMl90LCBpbnQ2NF90LCBmbG9hdCwgZG91YmxlLCBTdHJpbmcsIHN0ZDo6
dW5pcXVlX3B0cjxEaWN0aW9uYXJ5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5Pj47CiAKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYm
IHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8Tm9kZT4oc3RkOjpmb3J3
YXJkPFQ+KHZhbHVlKSkpOyB9CisgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2
YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBtYWtlVW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2
YWx1ZSkpKTsgfQogICAgIE5vZGUmIGdldChjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4gKm1f
bWFwLmdldChrZXkpOyB9CiAKIHByaXZhdGU6CkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBib29s
IHJlYWRTaW1wbGVWYWx1ZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyLCBLZXll
ZERlY29kZXJHZW5lCiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rl
cjo6ZGVjb2Rlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZERlY29kZXJHZW5lcmljPihkYXRhLCBzaXplKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJHZW5lcmljPihkYXRhLCBzaXplKTsKIH0K
IAogS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKQEAgLTg2LDcgKzg2LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJp
Yzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkK
ICAgICBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlIHR5cGU7CiAgICAgU3RyaW5nIGtleTsKIAot
ICAgIG1fcm9vdERpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7Cisg
ICAgbV9yb290RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICBtX2Rp
Y3Rpb25hcnlTdGFjay5hcHBlbmQobV9yb290RGljdGlvbmFyeS5nZXQoKSk7CiAKICAgICBib29s
IG9rID0gdHJ1ZTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXll
ZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAg
ICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8q
IGN1cnJlbnREaWN0aW5hcnkgPSBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCk7Ci0gICAgICAgICAg
ICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7Cisg
ICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7
CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQo
KSk7CiAgICAgICAgICAgICBjdXJyZW50RGljdGluYXJ5LT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0Rp
Y3Rpb25hcnkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2LDEzICsxNTYsMTMgQEAgS2V5
ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIG9rID0gcmVhZFN0cmluZyhkZWNvZGVyLCBrZXkp
OwogICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGF1dG8gbmV3QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5PigpOworICAgICAgICAg
ICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXk+KCk7CiAgICAgICAgICAgICBtX2Fy
cmF5U3RhY2suYXBwZW5kKG5ld0FycmF5LmdldCgpKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFy
eVN0YWNrLmxhc3QoKS0+YWRkKGtleSwgV1RGTW92ZShuZXdBcnJheSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBl
OjpCZWdpbkFycmF5RWxlbWVudDogewotICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0g
c3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgYXV0byBuZXdEaWN0
aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgICAgICAgICAgbV9kaWN0aW9u
YXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25hcnkuZ2V0KCkpOwogICAgICAgICAgICAgbV9hcnJh
eVN0YWNrLmxhc3QoKS0+YXBwZW5kKFdURk1vdmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCAyZjg0MTA0NzQ2Mzk1NThmMjk1ZTgxYTUxNzE5
YTg3MzRiMzJkNThhLi4yMWNjMWViZTRhOTAxYTEzYzc0NDAzZGMwMWNmMmZjODE4MTMwMTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckdlbmVyaWM+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJpYz4oKTsKIH0KIAogdm9pZCBLZXll
ZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJp
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2Vu
ZXJpYy5jcHAKaW5kZXggN2FlNjVjNWE4ZDMwOWUzZGVlZjUzY2U4Y2YxZTMwMjQyNmQyN2MxNC4u
MjA4YWY3Yjg0NzllY2FlZjU1MzBjY2M1NTdiNzM2ZWJhYmNiY2I4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcApAQCAtNDQsMTQgKzQ0LDE0IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbENhcHR1
cmVUaHJlc2hvbGQgeyAxNTBfbXMgfTsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9y
PiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNj
cm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvckdlbmVy
aWM+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxB
bmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogICAgIDogU2Ny
b2xsQW5pbWF0b3Ioc2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX292ZXJsYXlTY3JvbGxiYXJBbmlt
YXRpb25UaW1lcigqdGhpcywgJlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJh
ckFuaW1hdGlvblRpbWVyRmlyZWQpCiB7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhp
c10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CisgICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFr
ZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10o
RmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAg
ICAgICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0
aW9uLT5zZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb24pOwpAQCAtNzMsNyArNzMsNyBAQCB2b2lk
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkK
ICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc21v
b3RoQW5pbWF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1f
c2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBv
c2l0aW9uKSB7CisgICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShG
bG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICAgICAgICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShw
b3NpdGlvbikpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKaW5kZXggZTdkZDE5MTQwNDE3MTk2OGY5MGQ2ZmVhMzM1
NGUxNGNlZjZmNTU2Ny4uMzYxZTlkZjMyNDViZTU2NWIwZTJhNDFkZjE4YjI2ZmZiYzcxOWNkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIu
Y3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVf
cHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVj
b2RlckdsaWI+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2Rl
ckdsaWI+KGRhdGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJHbGliOjpLZXllZERlY29kZXJH
bGliKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzQwNGJjYmQ0NDlh
YTQ5MjFiOGNlMmI3ZTAxODQ0OTUwMTA2ZjY4MC4uNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVl
MDA5OGNiNmMwMGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJHbGliPigpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2RlckdsaWI+KCk7CiB9CiAKIEtleWVkRW5jb2Rl
ckdsaWI6OktleWVkRW5jb2RlckdsaWIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGYxYzkwZTU5ODg5M2FkYTgzNDc5ZmM3YjM4
M2E5MGE1MzViZjJhOTkuLmIyYmQ0N2NiMTYxNGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjbGVhclRpbWVyKCkKIHZv
aWQgQml0bWFwSW1hZ2U6OnN0YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAgICBBU1NFUlQo
IW1fZnJhbWVUaW1lcik7Ci0gICAgbV9mcmFtZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1l
cj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CisgICAgbV9mcmFtZVRp
bWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1h
dGlvbik7CiAgICAgbV9mcmFtZVRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQogCkBAIC01
MTksNyArNTE5LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6cmVzZXRBbmltYXRpb24oKQogdm9pZCBC
aXRtYXBJbWFnZTo6ZGVjb2RlKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghbV9kZWNvZGluZ0NhbGxiYWNrcykKLSAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNr
cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOworICAg
ICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9p
ZCgpPiwgMT4+KCk7CiAKICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzLT5hcHBlbmQoV1RGTW92ZShj
YWxsYmFjaykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAppbmRleCAwZDM1NTYxODk3MGZiMjc3Zjcy
ZTc4OTkwZTNmNGYyYTIxNmZiYzY5Li4zNTNmY2E2NjAxMzI2NGIwMjQ2MmE1NzEyMjRkMDVhMTgx
ZDk2ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgVGV4
dExheW91dCB7CiAgICAgVGV4dExheW91dChSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgZmxvYXQgeFBvcykKICAgICAgICAgOiBtX2ZvbnQoZm9udCkKICAgICAgICAg
LCBtX3J1bihjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHhQb3MpKQotICAgICAgICAsIG1fY29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhUZXh0Q29udHJvbGxlcj4obV9mb250LCBtX3J1
biwgdHJ1ZSkpCisgICAgICAgICwgbV9jb250cm9sbGVyKG1ha2VVbmlxdWU8Q29tcGxleFRleHRD
b250cm9sbGVyPihtX2ZvbnQsIG1fcnVuLCB0cnVlKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKaW5kZXggNzIwNDUzZDlm
MDQ2ZDc5ZjQ4YTA5YjgxYWY3MDAwZjRkZTNiZTAyNS4uY2VmZDhkNDIyNDRkMDZmY2I4MjRiZTVl
M2I3MzQxOWNkNDk4YTRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UG9pbnQuaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIElu
dFNpemU7CiAKIGNsYXNzIEZsb2F0UG9pbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEZsb2F0UG9pbnQoKSB7IH0KICAgICBGbG9hdFBvaW50KGZsb2F0IHgs
IGZsb2F0IHkpIDogbV94KHgpLCBtX3koeSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE4NGI0NGIwN2E0MTIyMTZiOWVjNTk4NDIyZjA3ODdmMGU2
YzdhZWIuLmUwYjQ5ZjI0N2MyMDA5YmRkNWYxZDBjOGViYTdhZDZjN2ViOGNiZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAg
R2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3Rlcikg
Y29uc3QKIGF1dG8gRm9udDo6ZW5zdXJlRGVyaXZlZEZvbnREYXRhKCkgY29uc3QgLT4gRGVyaXZl
ZEZvbnRzJgogewogICAgIGlmICghbV9kZXJpdmVkRm9udERhdGEpCi0gICAgICAgIG1fZGVyaXZl
ZEZvbnREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkRm9udHM+KCk7CisgICAgICAgIG1f
ZGVyaXZlZEZvbnREYXRhID0gbWFrZVVuaXF1ZTxEZXJpdmVkRm9udHM+KCk7CiAgICAgcmV0dXJu
ICptX2Rlcml2ZWRGb250RGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oCmluZGV4IDJlNThiZDY5ZWJiNTM5MWUwMzZkMjhjMjcwMmMxZjQ1MDUwOGIzMTIuLjU0
NGIwYjcxMThhYjJmOTA4MDc0OWU0NDFlNTE0OWYwNTE4ZjJlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTI2OSw5ICsyNjksNyBAQCBjbGFzcyBGb250IDog
cHVibGljIFJlZkNvdW50ZWQ8Rm9udD4gewogI2VuZGlmCiAKICAgICBzdHJ1Y3QgRGVyaXZlZEZv
bnRzIHsKLSNpZiAhQ09NUElMRVIoTVNWQykKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci0jZW5kaWYKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKIAogICAgICAgICBSZWZQdHI8Rm9udD4gc21hbGxDYXBzRm9udDsKQEAgLTM0NSw3
ICszNDMsNyBAQCBBTFdBWVNfSU5MSU5FIEZsb2F0UmVjdCBGb250Ojpib3VuZHNGb3JHbHlwaChH
bHlwaCBnbHlwaCkgY29uc3QKIAogICAgIGJvdW5kcyA9IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgo
Z2x5cGgpOwogICAgIGlmICghbV9nbHlwaFRvQm91bmRzTWFwKQotICAgICAgICBtX2dseXBoVG9C
b3VuZHNNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+Pigp
OworICAgICAgICBtX2dseXBoVG9Cb3VuZHNNYXAgPSBtYWtlVW5pcXVlPEdseXBoTWV0cmljc01h
cDxGbG9hdFJlY3Q+PigpOwogICAgIG1fZ2x5cGhUb0JvdW5kc01hcC0+c2V0TWV0cmljc0Zvckds
eXBoKGdseXBoLCBib3VuZHMpOwogICAgIHJldHVybiBib3VuZHM7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCAwYTYyYTI3NWJjNjky
ZWYzOTkxMTQwZTAyOGY1ODAwNDIxZDBjNzExLi4zNzA5YjQxZWIyYjdiZDBiZjdiMTAyYWM1ZGJl
ZmUyZjc3NzNhZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2Fj
aGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwog
ICAgICAgICAgICAgICAgIGl0ID0gZm9udFBsYXRmb3JtRGF0YUNhY2hlKCkuZmluZChrZXkpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChpdCAhPSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5lbmQo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1l
KQotICAgICAgICAgICAgICAgICAgICBpdC0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQ
bGF0Zm9ybURhdGE+KCpmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIGl0LT52YWx1ZSA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZv
bnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcAppbmRleCA3Mjc0ZGIwZGIzMmIzYjQxYjNlMGUxYjFlZDBmYjJhZWE4YjM2YTNiLi42
NDgxOGY0YjUxNTVkNDJiZmFjODFiNjFmNGI1ZjljZGVhNTQ1MmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNTQsNyArMjU0
LDcgQEAgc3RhdGljIFJlZjxGb250Q2FzY2FkZUZvbnRzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9u
dHMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGkKICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUtPmZvbnRzLmdldCgpOwogCiAgICAgYXV0byYgbmV3RW50cnkgPSBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIG5ld0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxG
b250Q2FzY2FkZUNhY2hlRW50cnk+KFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3Jl
YXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkpOworICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxG
b250Q2FzY2FkZUNhY2hlRW50cnk+KFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3Jl
YXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkpOwogICAgIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBn
bHlwaHMgPSBuZXdFbnRyeS0+Zm9udHMuZ2V0KCk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgdW5yZWZlcmVuY2VkUHJ1bmVJbnRlcnZhbCA9IDUwOwpAQCAtMzI2LDkgKzMyNiw5IEBAIHN0
ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNw
bGF5TGlzdEZvclRleHRSdW4oR3JhCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdD4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRp
c3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0PigpOwogICAgIEdyYXBoaWNzQ29udGV4dCByZWNvcmRpbmdDb250ZXh0KFsmXShHcmFwaGlj
c0NvbnRleHQmIGRpc3BsYXlMaXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3Bs
YXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxh
eUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCks
IEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICB9KTsKICAgICAKICAgICBGbG9hdFBvaW50IHN0YXJ0
UG9pbnQoc3RhcnRYLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKaW5kZXggZGI3NDMwMmU5ZGFhNGViNTJjMGNlMDgx
ZmQ1NjA1Mjc5NTc4ZmJmNC4uMTJhYzgzN2ZjZDI0NjVmOWY4MWRlYjA2ODdhYTc3NmQ1ZWEwNjQ1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGVGb250cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGVGb250cy5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBGb250Q2FzY2FkZUZvbnRzOjpH
bHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGEK
IHsKICAgICBBU1NFUlQoIWdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIpLmdseXBoKTsK
ICAgICBpZiAoIW1fbWl4ZWRGb250KSB7Ci0gICAgICAgIG1fbWl4ZWRGb250ID0gc3RkOjptYWtl
X3VuaXF1ZTxNaXhlZEZvbnRHbHlwaFBhZ2U+KG1fc2luZ2xlRm9udC5nZXQoKSk7CisgICAgICAg
IG1fbWl4ZWRGb250ID0gbWFrZVVuaXF1ZTxNaXhlZEZvbnRHbHlwaFBhZ2U+KG1fc2luZ2xlRm9u
dC5nZXQoKSk7CiAgICAgICAgIG1fc2luZ2xlRm9udCA9IG51bGxwdHI7CiAgICAgfQogICAgIG1f
bWl4ZWRGb250LT5zZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBnbHlwaERhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRy
aWNzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NN
YXAuaAppbmRleCAyNTllOTc1MzNjYWVkY2ZjMTQ1ZmY3YWI0MjhlYTE2OWY2NGIxNTk0Li43OWUy
ZjUzODhjNDZlNTg5MjMwMTYxYzQ3NDUyNTQxOTI0N2U4MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaApAQCAtMTMwLDEwICsx
MzAsMTAgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdHlwZW5hbWUgR2x5cGhNZXRyaWNzTWFwPFQ+OjpH
bHlwaE1ldHJpY3NQYWdlJiBHbHlwaE1ldHJpY3NNYXAKICAgICB9CiAKICAgICBpZiAoIW1fcGFn
ZXMpCi0gICAgICAgIG1fcGFnZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6
OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+PigpOworICAgICAgICBtX3BhZ2VzID0gbWFr
ZVVuaXF1ZTxIYXNoTWFwPGludCwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4o
KTsKIAogICAgIGF1dG8mIHBhZ2UgPSBtX3BhZ2VzLT5lbnN1cmUocGFnZU51bWJlciwgW10gewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3du
TWV0cmljcygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4o
dW5rbm93bk1ldHJpY3MoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAq
cGFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggNDA4Y2ZiN2QxZTJkYjk4ZjdhZGM4M2JiYzMzYjgxYjlhZjEyMWIw
Yy4uNDQ3ZDdlM2UzNTQ3NjJlODBiOGYyN2E5NTI2MjMyMjc5YjVmOTA5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTU1
Nyw2ICs1NTcsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQgewogICAgIGJvb2wgc2hvdWxkSW5j
bHVkZUNoaWxkV2luZG93cygpIGNvbnN0OwogCiAgICAgY2xhc3MgV2luZG93c0JpdG1hcCB7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXaW5kb3dzQml0bWFwKTsKICAgICBwdWJsaWM6CiAgICAgICAgIFdpbmRvd3NCaXRtYXAo
SERDLCBjb25zdCBJbnRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDFiNDIyODZk
ZGY0NjVjMGUyYjEyNGQ4YWZkZjBmN2NkNjQ3N2NiYjcuLmUzM2Y4ZmJlNzM4OTJlMzRiOGRlZjgz
NmQ0NmY1YzcwYzc5YzYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcFRleHR1cmVHTDsKIAogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0Qq
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUpOwogICAgIH5HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCAwYmFkNGU3MDYzNDIxOTk4Njg5NDQ5MmRmZTZm
NjFkMzE3ODgxOWQzLi5iODczMTk0ZWUyNDYwMWZlNGUwNzE0N2FhNzFlYTMwNTg3YTg0YTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oCkBAIC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dEltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dEltcGwpOwogcHVibGljOgog
ICAgIEdyYXBoaWNzQ29udGV4dEltcGwoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDk0YWFjMWRm
ODM1NmJkYjEwZGY3ZDA4NmZhY2UyNmMxZTM3MTgzMjYuLjZjZDAwYzI2NTcwZDlkYjNiOWZhYTdl
MjAyM2FmMWE1ZTdlNjNhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBHcmFwaGlj
c0xheWVyOjpzdXBwb3J0c0NvbnRlbnRzVGlsaW5nKCkKICNlbmRpZgogCiAvLyBTaW5nbGV0b24g
Y2xpZW50IHVzZWQgZm9yIGxheWVycyBvbiB3aGljaCBjbGVhckNsaWVudCBoYXMgYmVlbiBjYWxs
ZWQuCi1jbGFzcyBFbXB0eUdyYXBoaWNzTGF5ZXJDbGllbnQgOiBwdWJsaWMgR3JhcGhpY3NMYXll
ckNsaWVudCB7CitjbGFzcyBFbXB0eUdyYXBoaWNzTGF5ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMg
R3JhcGhpY3NMYXllckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEVtcHR5R3JhcGhpY3NMYXllckNsaWVudCYgc2luZ2xldG9uKCk7CkBA
IC0zNDMsNyArMzQzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKICAgICBpZiAobV90cmFuc2Zvcm0pCiAgICAg
ICAgICptX3RyYW5zZm9ybSA9IG1hdHJpeDsKICAgICBlbHNlCi0gICAgICAgIG1fdHJhbnNmb3Jt
ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAg
ICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgp
OwogfQogCiBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgR3JhcGhpY3NMYXllcjo6Y2hpbGRy
ZW5UcmFuc2Zvcm0oKSBjb25zdApAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
cjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJp
eCkKICAgICBpZiAobV9jaGlsZHJlblRyYW5zZm9ybSkKICAgICAgICAgKm1fY2hpbGRyZW5UcmFu
c2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQotICAgICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0g
c3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKKyAgICAgICAg
bV9jaGlsZHJlblRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1h
dHJpeCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKFJlZlB0cjxHcmFw
aGljc0xheWVyPiYmIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDAwOWQ0ODY4OTVkNTY4NjI1NDAxMWRmNTYwMGE3MjEx
MjQzMGU2MmYuLjdhMWZlYWFjNzllNzhiYTg4ZmNhZGNiODVlMzI5OWZkNzlhMDA0M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAg
LTExMSw3ICsxMTEsNyBAQCBjbGFzcyBGbG9hdEFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1h
dGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUo
KSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
bG9hdEFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAgICAgZmxvYXQgdmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3MgVHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4o
KnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGNvbnN0IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlJiBvdGhlcikKQEAgLTE2Myw3ICsxNjMsNyBAQCBjbGFzcyBG
aWx0ZXJBbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigq
dGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigq
dGhpcyk7CiAgICAgfQogCiAgICAgRmlsdGVyQW5pbWF0aW9uVmFsdWUoY29uc3QgRmlsdGVyQW5p
bWF0aW9uVmFsdWUmIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwCmluZGV4IDhlY2YzM2Y4OThiNzQ0OTExZjcwNWExNDlmZjc4OGI2N2I2ZDk0ZWYuLjM5
OTk2NzJiOWY1ODkzMjg2Y2YzMmRiMWNjNmI4MGEzMzE4MmFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIElt
YWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBM
ZW5ndGgmIGludHJpbnNpYwogdm9pZCBJbWFnZTo6c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNs
eSgpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvblN0YXJ0VGltZXIpCi0gICAgICAgIG1fYW5pbWF0
aW9uU3RhcnRUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0
YXJ0QW5pbWF0aW9uKTsKKyAgICAgICAgbV9hbmltYXRpb25TdGFydFRpbWVyID0gbWFrZVVuaXF1
ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3RhcnRBbmltYXRpb24pOwogICAgIGlmIChtX2FuaW1h
dGlvblN0YXJ0VGltZXItPmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2FuaW1h
dGlvblN0YXJ0VGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCmluZGV4IGJlNzY3NjBmOGUz
NTY1ZDQyNjcyYjAwNWE5NmRjZGI3ZmE0YjJkNjkuLjI1ZTc5YTZkYzBhNWIyMTkzYTcyYTIyN2Fh
Y2ExNzczYTdlM2MyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xlZ2FjeUNETVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dCgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSos
IFN0cmluZyBkZXN0aW5hdGlvblVSTCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDc1N2YwOTU2N2RjNWRmZGY1YmUwMjYz
OTYzOWQxZWZlYzcxOGMwZGIuLmFiZTg2OTQxOTRmZjdjMTc1MTAwYjY5ODgwNGExMjQwYmQ2MmM4
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBjbGFzcyBOdWxsTWVkaWFQbGF5ZXJQcml2YXRlIGZp
bmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAKICAgICBmbG9hdCBt
YXhUaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIG1p
blRpbWVTZWVrYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9CisgICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfQogCiAgICAgZG91YmxlIHNlZWth
YmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9
CiAgICAgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KQEAgLTM1NSw3ICszNTUsNyBAQCBSZWY8TWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVyOjpjcmVh
dGUoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKIE1lZGlhUGxheWVyOjpNZWRpYVBsYXllcihN
ZWRpYVBsYXllckNsaWVudCYgY2xpZW50KQogICAgIDogbV9jbGllbnQoJmNsaWVudCkKICAgICAs
IG1fcmVsb2FkVGltZXIoKnRoaXMsICZNZWRpYVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZCkKLSAg
ICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPE51bGxNZWRpYVBsYXllclByaXZhdGU+KHRo
aXMpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4o
dGhpcykpCiB7CiB9CiAKQEAgLTUxMSw3ICs1MTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2Fk
V2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAj
ZW5kaWYKICAgICAgICAgbV9wcml2YXRlLT5sb2FkKG1fdXJsLnN0cmluZygpKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX3ByaXZhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE51bGxNZWRpYVBsYXll
clByaXZhdGU+KHRoaXMpOworICAgICAgICBtX3ByaXZhdGUgPSBtYWtlVW5pcXVlPE51bGxNZWRp
YVBsYXllclByaXZhdGU+KHRoaXMpOwogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllckVuZ2lu
ZVVwZGF0ZWQodGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyUmVzb3VyY2VOb3RT
dXBwb3J0ZWQodGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCAwMGQ4NWE0OTk2NDJiM2Y1MjM3
YjMwYmZmNWY0ZTZiNDI5MTMwZWNkLi4xZDJmYzAwOTIwNGE4YzAyNTU0MWIyYTJkN2M1ZjBkMGJl
NWM5OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaApAQCAtMTI5LDcgKzEyOSw3IEBAIGNsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZSB7CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
IG5ldHdvcmtTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVk
aWFUaW1lU2Vla2FibGUoKSA9PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkgPyBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsg
fQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2Fi
bGUoKSBjb25zdCB7IHJldHVybiBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpID09IE1lZGlhVGltZTo6
emVyb1RpbWUoKSA/IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpIDogbWFrZVVuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGlt
ZVNlZWthYmxlKCkpOyB9CiAgICAgdmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgbWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobWF4VGltZVNl
ZWthYmxlKCkpOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVXRpbGl0aWVzLmNwcAppbmRleCAzZTY4ODA1NWJkY2MwYjEwZTQxNjBjZjE0MGQ0ZmFjZTky
MzIwYTY1Li41YWQ5MzM0OWJmYjQwZGE0ZmYzMDhhZGE5ODQ5N2ZjMzc1ZTEwOGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcApA
QCAtODksNyArODksNyBAQCBGbG9hdFBvaW50R3JhcGg6Ok5vZGUqIEZsb2F0UG9pbnRHcmFwaDo6
ZmluZE9yQ3JlYXRlTm9kZShGbG9hdFBvaW50IHBvaW50KQogICAgICAgICAgICAgcmV0dXJuIHRl
c3ROb2RlLmdldCgpOwogICAgIH0KIAotICAgIG1fYWxsTm9kZXMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8RmxvYXRQb2ludEdyYXBoOjpOb2RlPihwb2ludCkpOworICAgIG1fYWxsTm9kZXMuYXBw
ZW5kKG1ha2VVbmlxdWU8RmxvYXRQb2ludEdyYXBoOjpOb2RlPihwb2ludCkpOwogICAgIHJldHVy
biBtX2FsbE5vZGVzLmxhc3QoKS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlZ2lvbi5jcHAKaW5kZXggOWRjZWU4NzYxNjI1YzAxNDg4YjRkOTBkMWFmMjJl
MzU0MzVkNGE1ZS4uNmE3MDFjMWExMjg5NzlkNGM5NDhiMWE3YmFiNTY4ZjEwMjQ3Y2Y2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCkBAIC02NDYsNyAr
NjQ2LDcgQEAgdm9pZCBSZWdpb246OnNldFNoYXBlKFNoYXBlJiYgc2hhcGUpCiAgICAgfQogCiAg
ICAgaWYgKCFtX3NoYXBlKQotICAgICAgICBtX3NoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFw
ZT4oV1RGTW92ZShzaGFwZSkpOworICAgICAgICBtX3NoYXBlID0gbWFrZVVuaXF1ZTxTaGFwZT4o
V1RGTW92ZShzaGFwZSkpOwogICAgIGVsc2UKICAgICAgICAgKm1fc2hhcGUgPSBXVEZNb3ZlKHNo
YXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKaW5kZXgg
Nzk2MzNmZGI2YWRmMzRmZmZlZThmODI2NzQ4M2I4Y2ZmNWNlMWYzYy4uYmMzOWMzMDAwMGVhOGI2
YjVhOWU2MGNmMmJjNWFlMTg2NjY0YjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVnaW9uLmgKQEAgLTkxLDYgKzkxLDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICB9Owog
CiAgICAgY2xhc3MgU2hhcGUgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFNoYXBlKCkgPSBkZWZhdWx0OwogICAgICAgICBTaGFwZShjb25z
dCBJbnRSZWN0Jik7CkBAIC0xNDgsNyArMTQ5LDcgQEAgY2xhc3MgUmVnaW9uIHsKICAgICAgICAg
ZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZSYsIGNvbnN0IFNoYXBlJik7CiAgICAg
fTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zaGFwZSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7
IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcGUgPyBtYWtlVW5pcXVlPFNoYXBlPigqbV9zaGFwZSkgOiBudWxscHRyOyB9CiAgICAg
dm9pZCBzZXRTaGFwZShTaGFwZSYmKTsKIAogICAgIEludFJlY3QgbV9ib3VuZHM7CkBAIC0yODks
NyArMjkwLDcgQEAgT3B0aW9uYWw8UmVnaW9uPiBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgICAgICBkZWNvZGVyID4+IHNoYXBlOwogICAgICAgICBpZiAoIXNoYXBlKQogICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOworICAgICAgICByZWdpb24u
bV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hhcGU+KFdURk1vdmUoKnNoYXBlKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHsgcmVnaW9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggMWU0ZTdm
YWMzNmM3YzMwYTY1NmYxZWZkMDBhYWNlNmQ0Yzk1Y2VkYS4uNjkzOWY5MTdhZTZmYWIxM2VjMWM5
MWQ0YWE4MTU1NjZhOTE3MGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBjbGFzcyBOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gOiBwdWJsaWMgVGV4dFRy
YWNrUmVwcmVzZW50YXRpb24gewogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50
YXRpb24+IFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25DbGllbnQmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE51bGxUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOdWxsVGV4dFRyYWNr
UmVwcmVzZW50YXRpb24+KCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaAppbmRleCA3YWViNzU5YjM0YjE4YTFlODQ2ODNm
MjljNjE2YTZjZGIwMjU3NGQ4Li42YTA2Y2M2ZWJhMzRiOTU5ZDJmMTg2MDIyOWUxZjJmMzhmZjMx
OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0
eURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURh
dGEuaApAQCAtNjUsNiArNjUsNyBAQCBzdHJ1Y3QgVmVsb2NpdHlEYXRhICB7CiBXRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBWZWxvY2l0eURh
dGEmKTsKIAogY2xhc3MgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YSgpID0gZGVm
YXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcAppbmRleCA3N2EzZTE4YzFj
NmMyZTI3ZGQ2M2FlMjk2ZjZlYzlhMWVhMmZhZTFmLi42MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlk
NGEyNzA1YjE2Y2E0ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcApAQCAt
MzYyLDcgKzM2Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNs
YW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lv
bnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50
KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzREFOR0xF
Pih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaAppbmRl
eCBhOWVjZDMyMTM2ZGE4NzcwMmY0NzhhZmNkOGFjYzhlYjk3YzIzOTQwLi45OWRkZGQ4Zjg1MDI3
MzAzYmI4YTc2M2VjYWMyYjg2OTg4MmZhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOwogCiBjbGFzcyBBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWUGxheWVySXRlbVRy
YWNrKik7CiAgICAgZXhwbGljaXQgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbChBVkFzc2V0VHJh
Y2sqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5t
bQppbmRleCA1Y2Q3NzcyYWMyZWUxY2VhOTAxMGU4MzM3MWVhNmFhZWY3ZjA2OTU4Li42YjNjOTIy
ZTZhZWJlNTkyMGFlNjVlNTdhZjA1ZWRlNGFkMDM3NDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBAIC0zMTMsMTIgKzMxMywxMiBAQCB2
b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKENNSXRlbUNvdW50IG1heEZy
YW1lcywgY29uc3QgQXVkaW9TdHJlYQogewogICAgIEFTU0VSVChtYXhGcmFtZXMgPj0gMCk7CiAK
LSAgICBtX3RhcERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24+KCpwcm9jZXNzaW5nRm9ybWF0KTsKKyAgICBtX3RhcERlc2NyaXB0aW9uID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0
aW9uPigqcHJvY2Vzc2luZ0Zvcm1hdCk7CiAgICAgaW50IG51bWJlck9mQ2hhbm5lbHMgPSBwcm9j
ZXNzaW5nRm9ybWF0LT5tQ2hhbm5lbHNQZXJGcmFtZTsKICAgICBkb3VibGUgc2FtcGxlUmF0ZSA9
IHByb2Nlc3NpbmdGb3JtYXQtPm1TYW1wbGVSYXRlOwogICAgIEFTU0VSVChzYW1wbGVSYXRlID49
IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+
KCk7CiAgICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOwog
ICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBD
TTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRG
bGFnc05hdGl2ZUZsb2F0UGFja2VkOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoQ01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBB
dWRpb1N0cmVhCiAgICAgLy8gTWFrZSB0aGUgcmluZ2J1ZmZlciBsYXJnZSBlbm91Z2ggdG8gc3Rv
cmUgYXQgbGVhc3QgdHdvIGNhbGxiYWNrcyB3b3J0aCBvZiBhdWRpbywgb3IgMXMsIHdoaWNoZXZl
ciBpcyBsYXJnZXIuCiAgICAgc2l6ZV90IGNhcGFjaXR5ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8
c2l6ZV90PigyICogbWF4RnJhbWVzKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihrUmluZ0J1ZmZlckR1
cmF0aW9uICogc2FtcGxlUmF0ZSkpOwogCi0gICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJp
bmdCdWZmZXI+KCk7CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24oKnByb2Nlc3NpbmdGb3JtYXQpLCBjYXBhY2l0eSk7CiAKICAgICAvLyBBdWRpb0J1
ZmZlckxpc3QgaXMgYSB2YXJpYWJsZS1sZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhl
YXAgd2l0aCBhIGdlbmVyaWMgbmV3KCkgb3BlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDM2MWE5OTJmMGM0NjUwY2YyYjk2MjhhNjQyZTk3YjVk
YmEwZTJhM2MuLjRmYzY3ODdkZDhkOTA3Y2FkNmEyNzdmMzliMWVkMzJlZDY3OWE2ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjM0LDcgKzIzNCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1p
bmc6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmCiAgICAgaWYgKCFzdXBwb3J0c0tleVN5c3RlbShr
ZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZz4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc+KCk7CiB9CiAKIGJvb2wgQ0RNRmFj
dG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggODkx
OGU4MGUwYzM5MGQ3ZThkYWNhMTkwMzk0NzlhMGQwZjY5NWFkOC4uNTM4Njk2OWY5NDk3NmYzODM2
ODAxODc0MWJhZmQxMjU1MWUyOGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEZv
dXJDQzsKIAogY2xhc3MgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGlj
IENETUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmcmIHNpbmdsZXRvbigpOwogCkBAIC00
OSw2ICs1MCw3IEBAIGNsYXNzIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6IHB1
YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAKIGNsYXNzIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
ZyBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKICAgICB2aXJ0
dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDRhNTBlYjQxYTU4MzY4M2Y2
NmE2NzYyMjk1NDZjNTgwMWIyMGI1ODguLmQ4MWJjYTM1NDkwMzkxOGExYmRhMGFkZGQ5NThkNTk0
M2Y3MDFiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOwogCiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDIDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMoTGVnYWN5Q0RNKiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAyY2MwOGE5
YTNiNTFjYmY3YWIxOTc0MjAyYTk4YjE2OWRiNDNjMTAxLi4wY2QwMTI5YTNjZDllYWY4NjNhZDQ3
ODk4Mzg1MDMxZDhiNzZlZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTQ3LDEwICsxNDcsMTAgQEAgc3RkOjp1bmlxdWVf
cHRyPExlZ2FjeUNETVNlc3Npb24+IENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0
ZVNlc3Npb24oTGUKICNlbmRpZgogICAgIAogICAgIGlmIChzaG91bGRVc2VBVkNvbnRlbnRLZXlT
ZXNzaW9uICYmIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKQot
ICAgICAgICBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5
U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVy
cy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBjbGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFr
ZVVuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJz
LnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBj
bGllbnQpOwogICAgIGVsc2UKICNpZiBIQVZFKEFWU1RSRUFNU0VTU0lPTikKLSAgICAgICAgc2Vz
c2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92
ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CisgICAgICAg
IHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUo
cGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyksICp0aGlzLCBjbGllbnQpOwogI2Vsc2UKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09G
YWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAppbmRleCBlNDYwMTQ4MzA1Y2VlZDFiNTY0ODQxOTk2
Y2I5ZmMzNGNkYzNhYjUyLi4xNDdjMzc5ZjEyNzA2ODJlNTVmZDIxNWNlMjNhMzllYTEyNDk1YWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5o
CkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09S
RV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3gg
eworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IGZpbmFs
IDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlw
ZU5hbWUoKSB7IHJldHVybiAiZnBzaSI7IH0KIApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJv
eCB7CiAgICAgRm91ckNDIG1fc2NoZW1lOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9C
b3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJD
QyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma3JpIjsgfQogCkBAIC01NSw3ICs1NSw3IEBAIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3gg
OiBwdWJsaWMgSVNPRnVsbEJveCB7CiAgICAgS2V5SUQgbV9rZXlJRDsKIH07CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1YmxpYyBJ
U09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3Nl
dElkQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJD
QyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma2FpIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC02Niw3ICs2Niw3IEBAIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5QXNzZXRJZEJveCA6IHB1
YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBwdWJsaWMg
SVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29u
dGV4dEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3Vy
Q0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmtjeCI7IH0KICAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpAQCAtNzcsNyArNzcsNyBAQCBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUNvbnRleHRCb3ggOiBw
dWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV9kYXRhOwogfTsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1
YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdL
ZXlWZXJzaW9uTGlzdEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0
YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmt2bCI7IH0KICAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4gdmVyc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb25zOyB9CkBA
IC04OCw3ICs4OCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5VmVyc2lvbkxpc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4g
bV92ZXJzaW9uczsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5UmVxdWVzdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNr
IjsgfQogCkBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IDogcHVibGljIElTT0JveCB7CiAgICAgT3B0aW9uYWw8
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveD4gbV92ZXJzaW9uTGlzdDsKIH07
CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3gg
OiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFt
aW5nSW5pdERhdGFCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2QiOyB9CiAKQEAgLTEyMCw3ICsx
MjAsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXREYXRh
Qm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVxdWVzdEJveD4gbV9yZXF1ZXN0czsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nUHNzaEJveCA6IHB1YmxpYyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQ
c3NoQm94IGZpbmFsIDogcHVibGljIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZmFpclBsYXlT
eXN0ZW1JRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDg1N2YzMWYyNzcyZjQwODFmYmE2MzhmODEwYzExNDk0
Mjg1OGI5NGIuLjU5Y2Y4YmEyMTMxNmIzMDdjMDUwMjNlZDU2ZDliMzlkMjU2MTdmMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwCkBAIC0zODQsNyArMzg0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpidWZmZXJlZCgpIGMKICAgICBpZiAo
IW1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcykKICAgICAgICAgbV9jYWNoZWRMb2FkZWRUaW1lUmFu
Z2VzID0gcGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2Fk
ZWRUaW1lUmFuZ2VzKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCmluZGV4IDM5NWNlNzgyZThjNTgwNDU5NjE2
MjQ2OTgwZjMzZWFkZjAzYjc4YjIuLjVmNWI2ZjY5NTJiNDkzYTk4ODdiYWZjN2YzMGI3YmVlNzMz
NDE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1h
Yy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6fldlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJNYWMoKSA9IGRlZmF1bHQ7CiBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcigp
CiB7CiAgICAgaWYgKCFtX3RhcmdldFBpY2tlcikKLSAgICAgICAgbV90YXJnZXRQaWNrZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM+KCp0aGlzKTsKKyAg
ICAgICAgbV90YXJnZXRQaWNrZXIgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNYWM+KCp0aGlzKTsKIAogICAgIHJldHVybiAqbV90YXJnZXRQaWNrZXIuZ2V0KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKaW5kZXgg
NzYwOGEwMTcyNjNiMzA0NDRjYWJlNTM1ZmRhNDRjOTlmZmFmMTFmMi4uZDYxNjdiODc2ODk5OWRj
MDQ5NDc1MzgyMGQ5YTJiYzdiZWQwNjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjsKIAogY2xhc3Mg
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGIGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25B
VkZvdW5kYXRpb25DRihNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiYgcGFyZW50LCBM
ZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGFmMGE3Y2M3
N2JmMjkyY2RmZDY2YWJjNmU3ZjYzYTUwOTAwYWFkNjcuLjNiNzBlNzY2MzllNTk0MGFmMWYyYjFk
NWJmMjY3M2FlMzJkZWNhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtOTgsNiArOTgsNyBAQCB1
c2luZyBuYW1lc3BhY2UgUEFMOwogY2xhc3MgTGF5ZXJDbGllbnQ7CiAKIGNsYXNzIEFWRldyYXBw
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFWRldyYXBw
ZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqKTsKICAgICB+QVZGV3JhcHBlcigp
OwpAQCAtMjEzLDYgKzIxNCw3IEBAIGNsYXNzIEFWRldyYXBwZXIgewogdWludHB0cl90IEFWRldy
YXBwZXI6OnNfbmV4dEFWRldyYXBwZXJPYmplY3RJRDsKIAogY2xhc3MgTGF5ZXJDbGllbnQgOiBw
dWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBMYXllckNsaWVudChBVkZXcmFwcGVyKiBwYXJlbnQpIDogbV9wYXJl
bnQocGFyZW50KSB7IH0KICAgICB2aXJ0dWFsIH5MYXllckNsaWVudCgpIHsgbV9wYXJlbnQgPSAw
OyB9CkBAIC0zNDMsNyArMzQ1LDcgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9h
ZGVyRGVsZWdhdGVRdWV1ZSgpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsK
ICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVy
KiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXll
ciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBv
cnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNLZXlTeXN0ZW0pOwogfQogCkBAIC02NzIsNyArNjc0
LDcgQEAgc3RhdGljIGJvb2wgdGltZVJhbmdlSXNWYWxpZEFuZE5vdEVtcHR5KENNVGltZSBzdGFy
dCwgQ01UaW1lIGR1cmF0aW9uKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVS
YW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAgICAgaWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFw
cGVyKSkKICAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CkBAIC0xMTM3LDcgKzExMzksNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OmNyZWF0ZVNlc3NpbwogICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5
U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7
CiB9CiAKICNlbGlmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQpAQCAtMTY0MSw2ICsx
NjQzLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFW
Q0ZQbGF5ZXJSZWYsIENNVGltZSBjbVRpbWUsIHZvaWQKIH0KIAogc3RydWN0IE5vdGlmaWNhdGlv
bkNhbGxiYWNrRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbV9wcm9wZXJ0eU5hbWU7CiAgICAgdm9pZCogbV9jb250
ZXh0OwogCkBAIC0xNzA4LDcgKzE3MTEsNyBAQCB2b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlv
bkNhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQwogICAg
IExPRyhNZWRpYSwgIkFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKGlmPSVkKSAlcyIs
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihvYnNlcnZlciksIG5vdGlmaWNhdGlvbk5hbWUp
OwogI2VuZGlmCiAKLSAgICBhdXRvIG5vdGlmaWNhdGlvbkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4ocHJvcGVydHlOYW1lLCBvYnNlcnZlcik7CisgICAg
YXV0byBub3RpZmljYXRpb25EYXRhID0gbWFrZVVuaXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0Rh
dGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBub3RpZmljYXRpb25EYXRhLnJlbGVhc2UoKSwgcHJvY2Vz
c05vdGlmaWNhdGlvbik7CiB9CkBAIC0xNzg1LDYgKzE3ODgsNyBAQCB2b2lkIEFWRldyYXBwZXI6
OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0
aXZlVG9sZQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKSAm
JiBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQogc3RydWN0IExlZ2li
bGVPdXRwdXREYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IG1fYXR0cmlidXRlZFN0cmluZ3M7CiAgICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IG1fc2FtcGxlczsKICAgICBNZWRpYVRpbWUgbV90aW1lOwpAQCAtMTgzMyw3
ICsxODM3LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCog
Y29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHUKIAogICAgIEFTU0VSVChsZWdpYmxl
T3V0cHV0ID09IHNlbGYtPm1fbGVnaWJsZU91dHB1dCk7CiAKLSAgICBhdXRvIGxlZ2libGVPdXRw
dXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0
cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBj
b250ZXh0KTsKKyAgICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gbWFrZVVuaXF1ZTxMZWdpYmxl
T3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6
dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2Yo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbGVnaWJsZU91dHB1dERhdGEucmVsZWFzZSgpLCBw
cm9jZXNzQ3VlKTsKIH0KQEAgLTE4NDEsNiArMTg0NSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bGVn
aWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91
dHB1CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCiBzdHJ1Y3QgTG9h
ZFJlcXVlc3REYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
UmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RSZWY+IG1fcmVxdWVzdDsK
ICAgICB2b2lkKiBtX2NvbnRleHQ7CiAKQEAgLTE5MjYsNyArMTkzMSw3IEBAIEJvb2xlYW4gQVZG
V3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVz
b3VyY2UoQVZDRkFzCiAKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpyZXNvdXJjZUxvYWRl
clNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZSglcCkiLCBzZWxmKTsKIAot
ICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkUmVxdWVzdERh
dGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKKyAgICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9
IG1ha2VVbmlxdWU8TG9hZFJlcXVlc3REYXRhPihsb2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CiAK
ICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGxvYWRSZXF1
ZXN0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVzb3VyY2Up
OwogCkBAIC0xOTUzLDcgKzE5NTgsNyBAQCBQbGF0Zm9ybUxheWVyKiBBVkZXcmFwcGVyOjpwbGF0
Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBDcmVhdGUgYSBQbGF0Zm9y
bUNBTGF5ZXIgc28gd2UgY2FuIHJlc2l6ZSB0aGUgdmlkZW8gbGF5ZXIgdG8gbWF0Y2ggdGhlIGVs
ZW1lbnQgc2l6ZS4KLSAgICBtX2xheWVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckNs
aWVudD4odGhpcyk7CisgICAgbV9sYXllckNsaWVudCA9IG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+
KHRoaXMpOwogICAgIGlmICghbV9sYXllckNsaWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQpp
bmRleCBlMTRhZjFhMjdmMjZiZDFhZDYwMjg2MDRhNTc1MmYwZGY5YThkZjUyLi43ZGUxNGMyNTcx
ZjdkMzhlZWNiYjM0OGZkYTNjNzRhNDNkZWI4MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCkBAIC0zMywxMyArMzMsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1Ry
YWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBs
KHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAg
IDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQog
ewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiBBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFW
Rk9iakMmIG9wdGlvbikKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpOwogfQpAQCAtNTksNyArNTksNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2Jq
Qzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFW
Rk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0g
ICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0
cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
Pih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTY5LDE0
ICs2OSwxNCBAQCBBVlBsYXllckl0ZW1UcmFjayogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpw
bGF5ZXJJdGVtVHJhY2soKQogfQogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6
bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9p
bXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAg
IHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwor
ICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
OwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC04Nyw3ICs4Nyw3IEBA
IEFWQXNzZXRUcmFjayogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjphc3NldFRyYWNrKCkKIAog
dm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKE1l
ZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2lt
cGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAg
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNw
cAppbmRleCBlYzBkMGVkZGJmNzNiZWVkYTY3MTdiN2E1MThjNzMyMTI2MDk1YWUyLi5kZjUyMjZh
NGVhMDM2ZTU2ZmEyNTM5YTYyNzYyYTIzOGFlNzBlMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyog
cGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJlbnQocGFyZW50KQogewogICAgIHJlc2V0
UHJvcGVydGllc0Zyb21UcmFjaygpOwpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFW
QXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJv
bVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIyYWFmZWM3YjgzNDI3YjgxMzBhN2MwNDNmOGY2NzIw
ODM0Y2NhNDcuLjVkOGUyNTA3NDcwYmM3YTQ5OTk1NWM5ODFiMTc2ZmY0NDRmYmM2ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMu
aApAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiAKLWNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4geworY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFr
UHRyPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50
Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaApp
bmRleCAyNGIyYTE3ZDk3N2ViYmYwNTMzNTBjNTVkOWQ0MDlhNjEyNzk2MzhmLi4zOWVhOGU1MTEz
NjMyYWU3NGJmNTM2NGE4ZDFiMDI2OTcyMjFhYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC00Miw2ICs0Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM7CiAKIGNsYXNzIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJsaWMgTGVnYWN5
Q0RNU2Vzc2lvbiwgcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQyhDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDJiwgTGVnYWN5Q0RNU2Vz
c2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4
IDU0ODIwZDIyNTE5N2RiN2Y5YmU3M2Y0ZmJkMmNlYzg3OGY5YTgwMDguLjMyNmRhZGJiMTdkMDg5
MTE3MGViNzU0NTNiNjM0OGQ3ZmU4Mzk3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSW1hZ2VEZWNv
ZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRhdGEoKQogICAgICAgICB8fCAhbV9pbWFnZVJvdGF0
aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkKICAgICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lv
bi0+dHJhbnNmb3JtKCkudmFsdWUoKSAhPSBmaW5hbFRyYW5zZm9ybQogICAgICAgICB8fCBtX2lt
YWdlUm90YXRpb25TZXNzaW9uLT5zaXplKCkgIT0gc2l6ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0
aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RG
TW92ZShmaW5hbFRyYW5zZm9ybSksIHNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIElt
YWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CisgICAgICAg
IG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9u
VlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJC
R1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwog
CiAgICAgbV9zaXplID0gZXhwYW5kZWRJbnRTaXplKG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJv
dGF0ZWRTaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNWNkMjI0MDNhYTJj
MmVmNjIyZTMwMGQwMDc0MWZjMGMzMzM5YmYzNi4uN2ZjMDE4YWU1OGVhZjUyNTYwZGVlNmIzNGEx
YTk3Y2U3ZDAxZDIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yNzYsNyArMjc2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlh
RW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+
KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVy
KTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdp
bnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6
c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7CiB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKGNvbnN0IFN0cmluZyYKIAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQog
ICAgIDogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uKHBsYXllcikKLSAgICAsIG1fdmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
KG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1f
dmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNw
ZWN0KQogICAgICwgbV9vYmpjT2JzZXJ2ZXIoYWRvcHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2Vy
dmVyIGFsbG9jXSBpbml0V2l0aFBsYXllcjptYWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1f
dmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQpAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHBy
ZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdl
cygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBpZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICBy
ZXR1cm4gdGltZVJhbmdlczsKQEAgLTE4OTIsNyArMTg5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlUm90YXRpb25TZXNzaW9uKCkKICAgICAgICAg
JiYgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+c2l6ZSgpID09IG5hdHVyYWxTaXplKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJh
bFNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6
OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CisgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9
IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9y
bSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQpAQCAtMjIxNiw3ICsyMjE2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogI2Vsc2UK
ICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gbmlsOwogI2VuZGlmCi0gICAgICAg
IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAg
IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0yMjY1LDcgKzIyNjUsNyBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZShHcmFwaAogICAgIHNpemVfdCBoZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1f
bGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIp
Ci0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1Rl
eHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9
IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVy
biBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRh
cmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxw
aGEsIGZsaXBZKTsKIH0KQEAgLTIzMzAsNyArMjMzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdh
Y3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVT
ZXNzCiB7CiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0aGlzLCBjbGllbnQpOworICAgIGF1dG8gc2Vzc2lv
biA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVudCk7
CiAgICAgbV9zZXNzaW9uID0gbWFrZVdlYWtQdHIoKnNlc3Npb24pOwogICAgIHJldHVybiBXVEZN
b3ZlKHNlc3Npb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCA3Mzk2ZTViMWI0
MzExOThlNWU2MGQ4ZmNkMDYzNTliYjI3Y2Y0OWY3Li5hMWRkMGY5MDkxZmIyODY0NjhkYmUwYWUx
MGNlOGIzYzE0MmMwYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjY4LDYgKzI2
OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQwogICAgIGZy
aWVuZCBjbGFzcyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOwogCiAgICAgc3RydWN0IFBlbmRp
bmdTZWVrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBQZW5kaW5nU2Vlayhjb25zdCBNZWRpYVRpbWUmIHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGlt
ZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQp
CiAgICAgICAgICAgICA6IHRhcmdldFRpbWUodGFyZ2V0VGltZSkKICAgICAgICAgICAgICwgbmVn
YXRpdmVUaHJlc2hvbGQobmVnYXRpdmVUaHJlc2hvbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KaW5kZXggZjE5NTE1NmQ4Y2YyMjU2ZjYwZjlmNTUzMjQxMjllODUyM2Q5ZDM4Yi4uOWMwYWVm
NjE5YWRjMmEzMThmMGRiN2QyZTM4NjdjMjFkZmMzMWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKE1lZGlhCiAgICAg
LCBtX3BsYXlpbmcoMCkKICAgICAsIG1fc2Vla2luZyhmYWxzZSkKICAgICAsIG1fbG9hZGluZ1By
b2dyZXNzZWQoZmFsc2UpCi0gICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6
Om1ha2VfdW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlck9iakM+KCkpCiAgICAgLCBtX2VmZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXIo
RWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcjo6Y3JlYXRlKCp0aGlzLCBbbV9zeW5jaHJvbml6
ZXIgdGltZWJhc2VdKSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2Vy
KHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdAogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIp
OyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4ocGxheWVyKTsgfSwK
ICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAg
ICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgp
KTsKIH0KQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiB0aQogICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICJ0aW1lID0gIiwgdGltZSwgIiwgbmVnYXRpdmVUaHJlc2hv
bGQgPSAiLCBuZWdhdGl2ZVRocmVzaG9sZCwgIiwgcG9zaXRpdmVUaHJlc2hvbGQgPSAiLCBwb3Np
dGl2ZVRocmVzaG9sZCk7CiAKICAgICBtX3NlZWtpbmcgPSB0cnVlOwotICAgIG1fcGVuZGluZ1Nl
ZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRocmVzaG9s
ZCwgcG9zaXRpdmVUaHJlc2hvbGQpOworICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBl
bmRpbmdTZWVrPih0aW1lLCBuZWdhdGl2ZVRocmVzaG9sZCwgcG9zaXRpdmVUaHJlc2hvbGQpOwog
CiAgICAgaWYgKG1fc2Vla1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fc2Vla1RpbWVyLnN0
b3AoKTsKQEAgLTU0Myw3ICs1NDMsNyBAQCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlYWR5U3RhdGUoKSBjb25zdAogCiBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlh
VGltZVNlZWthYmxlKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7CiB9CiAK
IE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om1heE1lZGlh
VGltZVNlZWthYmxlKCkgY29uc3QKQEAgLTU1OCw3ICs1NTgsNyBAQCBNZWRpYVRpbWUgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjptaW5NZWRpYVRpbWVTZWVrYWJsZSgpIGNv
bnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBt
X21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgpIDog
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVk
aWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBtYWtl
VW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CkBAIC02MDIs
NyArNjAyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVw
ZGF0ZUxhc3RJbWFnZSgpCiAKICAgICBpZiAoIW1fcmdiQ29uZm9ybWVyKSB7CiAgICAgICAgIGF1
dG8gYXR0cmlidXRlcyA9IEB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4
ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH07Ci0gICAgICAg
IG1fcmdiQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
PigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOworICAgICAgICBtX3JnYkNv
bmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9CiAKICAgICBtX2xhc3RJbWFnZSA9IG1f
cmdiQ29uZm9ybWVyLT5jcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZl
ci5nZXQoKSk7CkBAIC02NDksNyArNjQ5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmEKICAg
ICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZl
ci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3Zp
ZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+
KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZp
ZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1
cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdl
dCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBp
bnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggY2EzYjExMzU1MmIzODg1Yzk5OTc3ZGFl
MmEyMWVhMTY1NzdlZGE4MC4uOWRlZWU0NmYyY2EyNDUyOTUzZGY1Y2E4OGJiNjlmODE4ZTdlNGU2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMTgzLDcgKzE4Myw3IEBAIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDKE1lZGlhCiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCiAgICAgLCBtX3N0YXR1
c0NoYW5nZUxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxp
c3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2Nsb2NrKFBBTDo6
Q2xvY2s6OmNyZWF0ZSgpKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIoc3Rk
OjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQorICAgICwg
bV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXJPYmpDPigpKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9s
b2dnZXIocGxheWVyLT5tZWRpYVBsYXllckxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVy
KHBsYXllci0+bWVkaWFQbGF5ZXJMb2dJZGVudGlmaWVyKCkpCkBAIC0yMjAsNyArMjIwLDcgQEAg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJh
cikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAg
ICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDPihwbGF5ZXIpOyB9LCBnZXRT
dXBwb3J0ZWRUeXBlcywKICAgICAgICAgICAgIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiB9
CiAKQEAgLTEwNTQsMTIgKzEwNTQsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnVwZGF0ZVRyYWNrcygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Vla2FibGUo
KSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKQEAgLTEwNzMsNyArMTA3Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJhbWVJbWFnZSgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0g
ICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7
IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBA
KGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOworICAgICAgICBtX2ltYWdlUGFpbnRlci5w
aXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4o
KF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhl
bEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9
KTsKIAogICAgIEFTU0VSVChtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcik7CiAg
ICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwCmluZGV4IGM4
NzFjNTk0ODM1NTA4NTcxODJjN2EyNGQ1NTM0Yjg1YTVkNGVmN2UuLjI5NDgzYmE1ZTk4ZDk1ZmE4
ZTVlYzlhNmExMGJmNjQxYWFlMzU1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcApAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6
Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1f
aW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAg
ICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogVmlkZW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKLSAgICA6
IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNr
KSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRy
YWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoTWVkaWFTZWxlY3Rpb25P
cHRpb25BVkZPYmpDJiBvcHRpb24pCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKIHsKICAgICByZXNldFByb3BlcnRp
ZXNGcm9tVHJhY2soKTsKIH0KQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNr
KQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBA
IC03Nyw3ICs3Nyw3IEBAIEFWUGxheWVySXRlbVRyYWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OnBsYXllckl0ZW1UcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpz
ZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjpt
YWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBs
ID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVz
ZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTg4LDcgKzg4LDcgQEAgQVZBc3NldFRy
YWNrKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OmFzc2V0VHJhY2soKQogCiB2b2lkIFZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rvbk9wdGlvbihNZWRpYVNlbGVjdGlv
bk9wdGlvbkFWRk9iakMmIG9wdGlvbikKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CisgICAgbV9pbXBsID0gbWFrZVVu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOwogICAgIHJlc2V0UHJvcGVy
dGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGZjYzI0
OTZhMTM1YWE0ZjczYThmZTU0OGQxNGUwYzgwMDA0YWQxYjAuLjk3NTZjZmZhZmQ4YzNmNmZlM2I0
N2EyMzMzNzFiNzRkZWM5OGQwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0zNSw3
ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0
VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDog
bV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
KQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJh
Y2spKQogICAgICwgbV9wYXJlbnQocGFyZW50KQogICAgICwgbV90cmFja0lEKC0xKQogICAgICwg
bV9zZWxlY3RlZChmYWxzZSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0
VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCAxNzFmMjc3MmM5NGE2OWNkYTczNDkzY2M5Yzhj
Nzg3OGIwMDEwOGRkLi44NzY1MzQ0NTIwMjRlNjE2NTE0MTdhMDRhMGQ5NDUwNThhOTU0MDM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKQEAgLTE2MzYsMTIgKzE2MzYsMTIgQEAgdm9pZCBHcmFwaGljc0xheWVy
Q0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoQ29tbWl0U3RhdGUmIGNvbW1pdFN0YXRlLCBjb25z
dCBUcmEKICAgICBpZiAodXNlc0Rpc3BsYXlMaXN0RHJhd2luZygpICYmIG1fZHJhd3NDb250ZW50
ICYmICghbV9oYXNFdmVyUGFpbnRlZCB8fCBoYWREaXJ0eVJlY3RzKSkgewogICAgICAgICBUcmFj
ZVNjb3BlIHRyYWNpbmdTY29wZShEaXNwbGF5TGlzdFJlY29yZFN0YXJ0LCBEaXNwbGF5TGlzdFJl
Y29yZEVuZCk7CiAKLSAgICAgICAgbV9kaXNwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOworICAgICAgICBtX2Rpc3BsYXlMaXN0ID0gbWFrZVVu
aXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CiAgICAgICAgIAogICAgICAgICBGbG9h
dFJlY3QgaW5pdGlhbENsaXAoYm91bmRzT3JpZ2luKCksIHNpemUoKSk7CiAKICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0IGNvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihj
b250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlhbENs
aXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERp
c3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIH0p
OwogICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKCkpKTsKICAgICB9CkBAIC0yODY3LDcgKzI4NjcsNyBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9uKCkgY29uc3QKIHZv
aWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMoKQogewogICAgIGlmICgh
bV9hbmltYXRpb25zKQotICAgICAgICBtX2FuaW1hdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPExh
eWVyQW5pbWF0aW9ucz4oKTsKKyAgICAgICAgbV9hbmltYXRpb25zID0gbWFrZVVuaXF1ZTxMYXll
ckFuaW1hdGlvbnM+KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25P
bkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24mIGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHBy
b3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1Yklu
ZGV4LCBTZWNvbmRzIHRpbWVPZmZzZXQpCkBAIC0zOTAzLDcgKzM5MDMsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMoQ2xvbmVJRCBjbG9uZUlELCBSZWZQdHI8UGxh
dGZvcm1DQUxheWVyPgogICAgIGNvbnRlbnRzTGF5ZXIgPSBudWxscHRyOwogCiAgICAgaWYgKCFt
X2xheWVyQ2xvbmVzKQotICAgICAgICBtX2xheWVyQ2xvbmVzID0gc3RkOjptYWtlX3VuaXF1ZTxM
YXllckNsb25lcz4oKTsKKyAgICAgICAgbV9sYXllckNsb25lcyA9IG1ha2VVbmlxdWU8TGF5ZXJD
bG9uZXM+KCk7CiAKICAgICBwcmltYXJ5TGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwg
bV9sYXllci5nZXQoKSwgbV9sYXllckNsb25lcy0+cHJpbWFyeUxheWVyQ2xvbmVzLCBjbG9uZUxl
dmVsKTsKICAgICBzdHJ1Y3R1cmFsTGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9z
dHJ1Y3R1cmFsTGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMtPnN0cnVjdHVyYWxMYXllckNsb25l
cywgY2xvbmVMZXZlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDNhYzRjMWUzMmExNTQ4ZDU4YzY5MTExN2Nj
NjlhMjljNGRjZjBlMWEuLmM0YjJjOWMzNDcwODBhNmI3Yzk2ZDY3MDJmNGE0ZDhhMzBjN2Y2Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5oCkBAIC0xNTcsNiArMTU3LDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDog
cHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogICAg
IEZsb2F0U2l6ZSBwaXhlbEFsaWdubWVudE9mZnNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7IH0KIAogICAgIHN0cnVjdCBDb21taXRTdGF0ZSB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdW5zaWduZWQg
dHJlZURlcHRoIHsgMCB9OwogICAgICAgICB1bnNpZ25lZCB0b3RhbEJhY2tkcm9wRmlsdGVyQXJl
YSB7IDAgfTsKICAgICAgICAgYm9vbCBhbmNlc3RvckhhZENoYW5nZXMgeyBmYWxzZSB9OwpAQCAt
MzA5LDYgKzMxMCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xh
eWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKICAgICB0eXBlZGVmIHVuc2lnbmVk
IENvbXB1dGVWaXNpYmxlUmVjdEZsYWdzOwogICAgIAogICAgIHN0cnVjdCBWaXNpYmxlQW5kQ292
ZXJhZ2VSZWN0cyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgRmxvYXRSZWN0IHZpc2libGVSZWN0OwogICAgICAgICBGbG9hdFJlY3QgY292ZXJhZ2VS
ZWN0OwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhbmltYXRpbmdUcmFuc2Zvcm07CkBA
IC0zMjgsNiArMzMwLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNz
TGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogCiAgICAgLy8gVXNlZCB0byB0
cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVlIGZvciByZXBsaWNhIGxheWVycy4KICAgICBzdHJ1
Y3QgUmVwbGljYVN0YXRlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heFJlcGxpY2FEZXB0aCA9IDE2OwogICAg
ICAgICBlbnVtIFJlcGxpY2FCcmFuY2hUeXBlIHsgQ2hpbGRCcmFuY2ggPSAwLCBSZXBsaWNhQnJh
bmNoID0gMSB9OwogICAgICAgICBSZXBsaWNhU3RhdGUoUmVwbGljYUJyYW5jaFR5cGUgZmlyc3RC
cmFuY2gpCkBAIC01NzksNiArNTgyLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGlj
IEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogCiAgICAgLy8g
UmVmZXJlbmNlcyB0byBjbG9uZXMgb2Ygb3VyIGxheWVycywgZm9yIHJlcGxpY2F0ZWQgbGF5ZXJz
LgogICAgIHN0cnVjdCBMYXllckNsb25lcyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJNYXAgcHJpbWFyeUxheWVyQ2xvbmVzOwogICAgICAg
ICBMYXllck1hcCBzdHJ1Y3R1cmFsTGF5ZXJDbG9uZXM7CiAgICAgICAgIExheWVyTWFwIGNvbnRl
bnRzTGF5ZXJDbG9uZXM7CkBAIC02MDgsNiArNjEyLDcgQEAgY2xhc3MgR3JhcGhpY3NMYXllckNB
IDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewog
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxBbmltYXRpb25Qcm9jZXNzaW5nQWN0
aW9uPj4gQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4+IEFuaW1hdGlvbnNNYXA7CiAgICAgc3Ry
dWN0IExheWVyQW5pbWF0aW9ucyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IHVuY29taXR0ZWRB
bmltYXRpb25zOwogICAgICAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwIGFuaW1hdGlvbnNUb1By
b2Nlc3M7CiAgICAgICAgIEFuaW1hdGlvbnNNYXAgcnVubmluZ0FuaW1hdGlvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5j
cHAKaW5kZXggNGQ2NGMyYzRiMTliMzFiODA1NGMxYmM0MWFjMDIyNTczYmVmZjU2Mi4uMzA1ZWZk
MzMzYmQ2MTFjNmVmNWU0YzFiMjYyMjg4NzUyNTZmMjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcApAQCAtNjYs
NyArNjYsNyBAQCBTdHJpbmcgVGlsZUNvbnRyb2xsZXI6Onpvb21lZE91dFRpbGVHcmlkQ29udGFp
bmVyTGF5ZXJOYW1lKCkKIFRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNB
TGF5ZXIqIHJvb3RQbGF0Zm9ybUxheWVyKQogICAgIDogbV90aWxlQ2FjaGVMYXllcihyb290UGxh
dGZvcm1MYXllcikKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3Iob3duaW5nR3JhcGhpY3NMYXll
cigpLT5wbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpKQotICAgICwgbV90aWxlR3Jp
ZChzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcykpCisgICAgLCBtX3RpbGVHcmlkKG1h
a2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkKICAgICAsIG1fdGlsZVJldmFsaWRhdGlvblRpbWVy
KCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVSZXZhbGlkYXRpb25UaW1lckZpcmVkKQogICAg
ICwgbV90aWxlU2l6ZUNoYW5nZVRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVTaXpl
Q2hhbmdlVGltZXJGaXJlZCwgdGlsZVNpemVVcGRhdGVEZWxheSkKICAgICAsIG1fbWFyZ2luRWRn
ZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBU
aWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKICAgICBpZiAobV96
b29tZWRPdXRDb250ZW50c1NjYWxlICYmIG1fem9vbWVkT3V0Q29udGVudHNTY2FsZSA9PSB0aWxl
R3JpZCgpLnNjYWxlKCkgJiYgdGlsZUdyaWQoKS5zY2FsZSgpICE9IHNjYWxlICYmICFtX2hhc1Rp
bGVzV2l0aFRlbXBvcmFyeVNjYWxlRmFjdG9yKSB7CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdy
aWQgPSBXVEZNb3ZlKG1fdGlsZUdyaWQpOwogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkLT5z
ZXRJc1pvb21lZE91dFRpbGVHcmlkKHRydWUpOwotICAgICAgICBtX3RpbGVHcmlkID0gc3RkOjpt
YWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOworICAgICAgICBtX3RpbGVHcmlkID0gbWFrZVVu
aXF1ZTxUaWxlR3JpZD4oKnRoaXMpOwogICAgICAgICB0aWxlR3JpZHNDaGFuZ2VkKCk7CiAgICAg
fQogCkBAIC01MDAsNyArNTAwLDcgQEAgRmxvYXRSZWN0IFRpbGVDb250cm9sbGVyOjphZGp1c3RU
aWxlQ292ZXJhZ2VSZWN0Rm9yU2Nyb2xsaW5nKGNvbnN0IEZsb2F0UmVjdCYgY28KICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIW1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSkKLSAg
ICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SGlz
dG9yaWNhbFZlbG9jaXR5RGF0YT4oKTsKKyAgICAgICAgICAgIG1faGlzdG9yaWNhbFZlbG9jaXR5
RGF0YSA9IG1ha2VVbmlxdWU8SGlzdG9yaWNhbFZlbG9jaXR5RGF0YT4oKTsKIAogICAgICAgICBt
X3ZlbG9jaXR5ID0gbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhLT52ZWxvY2l0eUZvck5ld0RhdGEo
c2Nyb2xsT2Zmc2V0LCBjb250ZW50c1NjYWxlLCBNb25vdG9uaWNUaW1lOjpub3coKSk7CiAgICAg
fTsKQEAgLTY4NSw3ICs2ODUsNyBAQCBJbnRSZWN0IFRpbGVDb250cm9sbGVyOjp0aWxlQ292ZXJh
Z2VSZWN0KCkgY29uc3QKIFBsYXRmb3JtQ0FMYXllciogVGlsZUNvbnRyb2xsZXI6OnRpbGVkU2Ny
b2xsaW5nSW5kaWNhdG9yTGF5ZXIoKQogewogICAgIGlmICghbV9jb3ZlcmFnZU1hcCkKLSAgICAg
ICAgbV9jb3ZlcmFnZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhp
cyk7CisgICAgICAgIG1fY292ZXJhZ2VNYXAgPSBtYWtlVW5pcXVlPFRpbGVDb3ZlcmFnZU1hcD4o
KnRoaXMpOwogCiAgICAgcmV0dXJuICZtX2NvdmVyYWdlTWFwLT5sYXllcigpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCBhNDg1MjNjZjUxNzZiMzFmMmFjYzQ5ODRi
MmVjZDhlMmM4NzRmNjA3Li4zNmFjMmY3ODRiMDA2ZmY5YzcwM2Y0MWU3YmZmNjg3YTFhYTRjNjc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtMzEzLDcgKzMxMyw3IEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNvbW1vbkluaXQoKQogICAgICAgICBXZWJUaWxl
ZEJhY2tpbmdMYXllciogdGlsZWRCYWNraW5nTGF5ZXIgPSBzdGF0aWNfY2FzdDxXZWJUaWxlZEJh
Y2tpbmdMYXllcio+KG1fbGF5ZXIuZ2V0KCkpOwogICAgICAgICBUaWxlQ29udHJvbGxlciogdGls
ZUNvbnRyb2xsZXIgPSBbdGlsZWRCYWNraW5nTGF5ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6dGhp
c107CiAKLSAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CisgICAg
ICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0
aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOwogICAgIH0KIAogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKQEAgLTk0Nyw3ICs5NDcsNyBAQCBGbG9hdFJvdW5kZWRSZWN0IFBs
YXRmb3JtQ0FMYXllckNvY29hOjpzaGFwZVJvdW5kZWRSZWN0KCkgY29uc3QKIHZvaWQgUGxhdGZv
cm1DQUxheWVyQ29jb2E6OnNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgcm91bmRlZFJlY3QpCiB7CiAgICAgQVNTRVJUKG1fbGF5ZXJUeXBlID09IExheWVyVHlwZVNo
YXBlTGF5ZXIpOwotICAgIG1fc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgIG1fc2hhcGVSb3VuZGVkUmVjdCA9IG1h
a2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwogCiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiAgICAgUGF0aCBzaGFwZVBhdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXll
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVk
QmFja2luZ0xheWVyLm1tCmluZGV4IGMxOTFmMzkxYzY0NTcyY2M5OTU1YTQ3YzZjYjdiOTAwNzg2
NzI2MzkuLmIzZTIxZjY0MGFlOTFhMGQxZjU5Mzg0NmE4NTBmZWMyMmZhNzhhNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFj
a2luZ0xheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2Nv
Y29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tCkBAIC02Miw3ICs2Miw3IEBAIC0gKGlkKWluaXRX
aXRoTGF5ZXI6KGlkKWxheWVyCiAtIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlciopY3JlYXRlVGls
ZUNvbnRyb2xsZXI6KFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciopcm9vdExheWVyCiB7CiAgICAg
QVNTRVJUKCFfdGlsZUNvbnRyb2xsZXIpOwotICAgIF90aWxlQ29udHJvbGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CisgICAgX3RpbGVD
b250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUaWxlQ29udHJvbGxlcj4ocm9vdExheWVy
KTsKICAgICByZXR1cm4gX3RpbGVDb250cm9sbGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwCmluZGV4IDE1ZDRlNDZiMDZjNzZjMTdmMzQwNTEzOWM2Yzk3OWMxMDE3YjM2
OTYuLmQ2YTdjMTY4ZjBlNDQxZmQ3ZDI5MGZjNGZlMzEzNjBjNTg1ZDU2ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgUGxhdGZvcm1DQUxheWVyV2lu
OjpQbGF0Zm9ybUNBTGF5ZXJXaW4oTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1MYXllciog
bGF5ZXIKICAgICBpZiAodXNlc1RpbGVkQmFja2luZ0xheWVyKCkpIHsKICAgICAgICAgaW50ZXJu
ID0gbmV3IFdlYlRpbGVkQmFja2luZ0xheWVyV2luKHRoaXMpOwogICAgICAgICBUaWxlQ29udHJv
bGxlciogdGlsZUNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PFdlYlRpbGVkQmFja2luZ0xh
eWVyV2luKj4oaW50ZXJuKS0+Y3JlYXRlVGlsZUNvbnRyb2xsZXIodGhpcyk7Ci0gICAgICAgIG1f
Y3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0
aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOworICAgICAgICBtX2N1c3RvbVN1Ymxh
eWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNv
bnRhaW5lckxheWVycygpKTsKICAgICB9IGVsc2UKICAgICAgICAgaW50ZXJuID0gbmV3IFBsYXRm
b3JtQ0FMYXllcldpbkludGVybmFsKHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xh
eWVyV2luLmNwcAppbmRleCAyMjRkOGJiZWVkMzk5MmFlZWZjOTMyYTFiZWU4MGRjNjNmY2EyZjhi
Li5jNWE3M2U4ZDNhZTliYjQ5YTk2YmUyN2Y1MzI3ZTA2YzA2MjE0ZmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9X
ZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlRp
bGVkQmFja2luZ0xheWVyV2luOjpzZXRCb3JkZXJDb2xvcihjb25zdCBDb2xvciYgdmFsdWUpCiBU
aWxlQ29udHJvbGxlciogV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OmNyZWF0ZVRpbGVDb250cm9s
bGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdExheWVyKQogewogICAgIEFTU0VSVCghbV90aWxlQ29u
dHJvbGxlcik7Ci0gICAgbV90aWxlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNv
bnRyb2xsZXI+KHJvb3RMYXllcik7CisgICAgbV90aWxlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8
VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CiAgICAgcmV0dXJuIG1fdGlsZUNvbnRyb2xsZXIu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBjMzFjYzZlMzhi
YTU5OWM5ZmI4MjZhYTAzOTc2YjIwNTFjYzExNWJlLi4xOGYzNDA1MGFhOWUzYjc0MzRhNjI3YTA3
N2NkMmNjZjJmOTljOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC00MSw2
ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7
CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAK
IHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsK
IHB1YmxpYzoKICAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZl
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggNTBiN2Q5YzIz
YzAxYWJmYzNhMDUxNzhjMTA1MjUxMDcwZjE1ZDZkYi4uMDRmMmE5ZmY1NDY5YWE1YmEyNGQxNDk1
NjU0YjYwZjBiYzQzZDJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZh
Y3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxh
dGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4o
Y29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAg
ICAgICAgfSk7CiB9CiAKQEAgLTU0LDE0ICs1NCwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBo
aWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFj
dAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5
KAogICAgICAgICBbY2Fpcm9Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0
KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4
dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZvcm1D
b250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQorICAg
ICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPiht
X3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3ND
b250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRl
eHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CkBAIC02OSw5ICs2OSw5IEBAIEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgUGxhCiAKIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY2Fpcm9fdCogY2Fpcm9Db250ZXh0
KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZp
bmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQorICAgICwgbV9vd25l
ZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0Nv
bnRleHQpKQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3duZWRQbGF0Zm9ybUNvbnRleHQp
Ci0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVl
PEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewog
ICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRl
LmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNy
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJv
LmgKaW5kZXggOTllMTgzY2M3MDU2MDNkMjM0ZThlOGVkOWZkNjY5ZDU5NmZiZWVhMi4uMDgzNzI1
ZDZmZDM4MzI2MDdhYTc2MWZmOWY2ODM1OTA2NjRjOTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCkBAIC00NSw2ICs0NSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQpCiAgICAgICAgIDogcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKaW5kZXggMTM3NDE1ZjNlYWJmNTMyMWZjMzVjYWMyMGUxZTEyNzg0ZDc1MjIz
My4uZTAxZTYwYjllZWU3YmExODM5N2E2M2VmNGExNzY2N2ZmZGM0YTQ1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6c3dh
cEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgTG9j
a0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgICAgICBwcm94eS5wdXNo
TmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPihtX2NvbXBvc2l0b3JUZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
QmxlbmQsIEdMX1JHQkEpKTsKKyAgICAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlciht
YWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbXBvc2l0b3JU
ZXh0dXJlLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIEdMX1JHQkEpKTsK
ICAgICAgICAgICAgIH07CiAjaWYgVVNFKE5JQ09TSUEpCiAgICAgICAgIHByb3h5T3BlcmF0aW9u
KGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihtX25pY29z
aWFMYXllci0+aW1wbCgpKS5wcm94eSgpKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBJbWFnZUJ1ZmZl
cjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhYwogCiAgICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYoY2Fpcm9f
Y3JlYXRlKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCkpKTsKICAgICBtX2RhdGEubV9wbGF0Zm9ybUNv
bnRleHQuc2V0Q3IoY3IuZ2V0KCkpOwotICAgIG1fZGF0YS5tX2NvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVG
YWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dCkpOworICAgIG1fZGF0YS5tX2NvbnRleHQg
PSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpj
cmVhdGVGYWN0b3J5KG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dCkpOwogICAgIHN1Y2Nlc3MgPSB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaAppbmRleCA4MGVjNzI1OGI2NDIxZmJm
OThiM2ViNTUxM2QwY2VhZmJlN2FkZmRjLi45OWM4MmUyZTZlOTkzMWM4ZmVhOWRlMjE1ZDBmMzZj
NzE5YzM4OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKQEAgLTQ4LDYgKzQ4LDcgQEAg
c3RydWN0IFNoYWRvd1N0YXRlOwogLy8gY29kZSBmcm9tIHRoZSBwbGF0Zm9ybS1pbmRlcGVuZGVu
dCBHcmFwaGljc0NvbnRleHQuCiAKIGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbGF0Zm9y
bUNvbnRleHRDYWlybyk7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8oY2Fpcm9f
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHLmNwcAppbmRleCA4MGI1ZDRmYmQyNzJkZWU0MzViNWNlN2MwODRlZTM1OWE1MDFl
ZDY0Li5kMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFmYTM0ZTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cApAQCAtMTg3LDcgKzE4Nyw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNwCiAgICAgICAgIGlm
ICghY2dDb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fZGF0YS5jb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7
CisgICAgICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNn
Q29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAgICAgY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSgx
LCAtMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDcxODhlNDM3ZDJjODg2NzI2ZDNk
M2Y0ZGViNDFiZjI1Y2IwNmIzODAuLmZmN2ZjNjYzNjhiZDJjNjYwYzQ4YzEwNjc0NWY5YmE4OWIz
ZGRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEzNzEsNyArMTM3MSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udERlCiAKICAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0
aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQsIHN5
bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3Jp
cHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBz
aXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3Jp
ZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRp
b24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiB9CiAKIHR5cGVkZWYgSGFzaFNldDxSZXRhaW5QdHI8
Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmplY3RIYXNoPENURm9udFJlZj4sIFdURjo6UmV0
YWluUHRyT2JqZWN0SGFzaFRyYWl0czxDVEZvbnRSZWY+PiBGYWxsYmFja0RlZHVwU2V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAppbmRleCAxY2Uw
Yzk0N2UxN2U5YTY4ZWVhZDNhNGQ1N2I1OWQ4ZmExNmNlZjI5Li4wZGU5MzRhN2IzODQxMDBlZWI3
NmQ3N2Y0NTZhMTgyZmJiYWJjZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIEZvbnRSYW5nZXMgRm9udEZh
bWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyhjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvCiAKICAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZV0g
PSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRhdGlvbi5n
ZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBm
YWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZv
bnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJp
bmdNb2RlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9u
Lm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2Ny
aXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAog
ICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29h
Lm1tCmluZGV4IGZlZWFjZDRkMzI2NjA1ZjA0MjkxY2U5YzMxZWVjYmJlOWNiMjJiOTIuLjJjM2Nh
YzBhYWEwNTYzYWYxZWQ0YjMzOTM4Njk4OTgzMjIwNTdjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0M0RDb2NvYS5tbQpAQCAtOTIsNiArOTIsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3Rh
dHVzQ2hlY2tUaHJlc2hvbGQgPSA1OwogLy8gRklYTUU6IFRoaXMgY2xhc3MgaXMgY3VycmVudGx5
IGVtcHR5IG9uIE1hYywgYnV0IHdpbGwgZ2V0IHBvcHVsYXRlZCBhcwogLy8gdGhlIHJlc3RydWN0
dXJpbmcgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTAzIGlz
IGRvbmUKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBo
aWNzQ29udGV4dDNEKikgeyB9CiAgICAgCkBAIC0xODEsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQg
c2V0R1BVQnlSZWdpc3RyeUlEKFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgY29udGV4dE9iaiwg
Q0dMUGl4ZWxGb3IKIAogR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBo
aWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlLCBHcmFwaGljc0NvbnRleHQzRCogc2hhcmVkQ29u
dGV4dCkKICAgICA6IG1fYXR0cnMoYXR0cnMpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMpKQorICAgICwgbV9wcml2YXRlKG1h
a2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkKIHsKICNpZiAhVVNFKEFO
R0xFKQogI2lmIFVTRShPUEVOR0xfRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KaW5kZXggNWM3MzNlM2JhZDFlOWQzZDI1YzFl
ZDU3ZjVhY2RmZmYzYTRjYjk5Zi4uMzg3NWZjZmQzMDZkZjg2ZDM0NzRlZTE4NjBiYTU5MGEzYThi
YzEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbQpAQCAtMzI2LDcgKzMyNiw3IEBAIEdyYXBoaWNzQ29udGV4dCYgSU9TdXJm
YWNlOjplbnN1cmVHcmFwaGljc0NvbnRleHQoKQogICAgIGlmIChtX2dyYXBoaWNzQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29udGV4dDsKIAotICAgIG1fZ3JhcGhpY3NDb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGVuc3VyZVBsYXRmb3JtQ29u
dGV4dCgpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgbV9ncmFwaGljc0NvbnRleHQtPnNl
dElzQWNjZWxlcmF0ZWRDb250ZXh0KHRydWUpOwogCiAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCmluZGV4IDZl
NjBlYmYxZmZhNjU5MGY2ZjM0ZTUyOGEzZTMzNTgzMThiNWViZGYuLjI3ODc0NjgxNjZmZWYxYjVm
NjQ2MjFmZWI1YmI1ZTUwZDlkNmRhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIEBlbmQKIAogc3RkOjp1bmlxdWVfcHRy
PFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRl
KFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYT4oY2xpZW50KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hPihjbGllbnQp
OwogfQogCiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hOjpUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vz
c2lvblZULmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0
aW9uU2Vzc2lvblZULmgKaW5kZXggYWRjOTdhZGMxZmEyNDU4MDk5MDAzYzNkZTljMGFhMzhkODc2
MTg3ZC4uNjAwMWJiNzBhMTAwNDE3NDQxMDkyMTM2ZjNmZTViNjE3NjJjYjBjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Np
b25WVC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90
YXRpb25TZXNzaW9uVlQuaApAQCAtMzYsNyArMzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4
ZWxCdWZmZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIHsKK2NsYXNzIEltYWdlUm90YXRpb25T
ZXNzaW9uVlQgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0cnVjdCBSb3RhdGlvblByb3BlcnRpZXMgewogICAgICAgICBib29sIGZsaXBYIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1Bp
eGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAppbmRleCBkZDEzNTY5ZTA4MWExYjM5OWRjYmFi
ZjNmNWU4ODM3Zjg0YzJhYjRlLi5jZDViNmZjYzAwZDc3NDY0ZTZlNmJlNzQ2MzExZTEzZDBkMjdl
MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhl
bEJ1ZmZlckNvbmZvcm1lckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVkZWYg
c3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YoQ0ZEaWN0aW9uYXJ5
UmVmIGF0dHJpYnV0ZXMpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0
KENWUGl4ZWxCdWZmZXJSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKaW5kZXggODFhYjJmOTI0ZGFmMjZjZGEyMmM1ZTIw
MDc3NmMyMTgwMjAyM2EzYi4uYzlmZjQxOWQ0M2JlNDVmNDA0NDAzMDQwYWRkOGM0ZDA0NDAyYmEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVy
ZUNhY2hlQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0
dXJlQ2FjaGVDVi5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBUZXh0dXJlQ2FjaGVDViA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxUZXh0dXJlQ2FjaGVDVj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IGNy
ZWF0ZShHcmFwaGljc0NvbnRleHQzRCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCmluZGV4IDU3N2VjMjg0NjM5MmE3
MjE1ZDk5OGFhMzEwZDNkOGQ2MzNmNWYxZWMuLjlmMWY2NmIzYmQ1OWY1OWIxYWQzY2I3MDVjODU2
NTQ0MjI3ZWMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L1RleHR1cmVDYWNoZUNWLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tCkBAIC01MCw3ICs1MCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlQ2FjaGVDVj4gVGV4dHVyZUNhY2hlQ1Y6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQz
RCYgY29udGV4CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmV0YWluUHRyPFRleHR1
cmVDYWNoZVR5cGU+IHN0cm9uZ0NhY2hlID0gYWRvcHRDRihjYWNoZSk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dHVyZUNhY2hlQ1Y+KGNvbnRleHQsIFdURk1vdmUoc3Ryb25nQ2Fj
aGUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RG
TW92ZShzdHJvbmdDYWNoZSkpOwogfQogCiBUZXh0dXJlQ2FjaGVDVjo6VGV4dHVyZUNhY2hlQ1Yo
R3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleHQsIFJldGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiYm
IGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
VmlkZW9UZXh0dXJlQ29waWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKaW5kZXggNDNhOTZkYzE0MzY1ODRhZmE3NzE4Nzhi
MTk3ZjJhOTU0N2RjY2NlZS4uOWQzOTJlYTA1OGIzNjAwOGNhNTY5Y2E0NGZkNzEyODgzYjBkNmY1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9U
ZXh0dXJlQ29waWVyQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
di9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFRleHR1cmVDYWNoZUNWOwogCiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJD
ViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVmlkZW9UZXh0
dXJlQ29waWVyQ1YoR3JhcGhpY3NDb250ZXh0M0QmKTsKICAgICB+VmlkZW9UZXh0dXJlQ29waWVy
Q1YoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA4ZmVh
YTJmNWQ3NTMyOGU0MzZiZjlkODhiOGRjMDViYWMxYzJlMWYzLi5jNTYxZjVmOWVhYjk5NjIxMWE4
YjIyMjE5Nzc2ZDY4ZjM5ZTE2NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdD4g
UmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheUxpc3Q7CiAgICAgaWYgKFVOTElL
RUxZKHRyYWNrUmVwbGF5TGlzdCkpCi0gICAgICAgIHJlcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPERpc3BsYXlMaXN0PigpOworICAgICAgICByZXBsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNw
bGF5TGlzdD4oKTsKIAogICAgIHNpemVfdCBudW1JdGVtcyA9IG1fZGlzcGxheUxpc3QuaXRlbUNv
dW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1JdGVtczsgKytpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNTU3YjhlMDA4NjJkNmFiYzU4MDRiNDE0MzIxMDA4MGE4
MzUxNmQxZS4uMzBiYjQ4Y2M4ZjBjNDk1NDQ4YWI2NWY2ODExNzJjY2M2YmNhNTM1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1lbnRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxv
YWRlcgogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJu
YWxVUklSZWZlcmVuY2UobV91cmwsICpjYWNoZWRSZXNvdXJjZUxvYWRlci5kb2N1bWVudCgpKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlPihtX3VybCk7CisgICAgbV9j
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VVbmlxdWU8Q2FjaGVkU1ZHRG9jdW1lbnRS
ZWZlcmVuY2U+KG1fdXJsKTsKICAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLT5sb2Fk
KGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJl
ZVR5cGUuY3BwCmluZGV4IDY1NjNjOGJmZWViMzViYTUzMjdmNDg5NjFlZDYyMWZlM2Q1M2FhNDEu
LjcxYTRhYjJmNDgyNWYxYTU0MzE5MTgwMzRiMzUzMWVjZGE4YTBmMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZQogICAgICAgICAgICAgRmNQYXR0ZXJuQWRkU3RyaW5nKHJlc3VsdFBhdHRlcm4uZ2V0KCks
IEZDX0ZPTlRfVkFSSUFUSU9OUywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBGY0NoYXI4Kj4odmFy
aWFudHMudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICNlbmRpZgotICAgIGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250RmFjZS5nZXQoKSwg
cmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCks
IGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlw
dGlvbi5vcmllbnRhdGlvbigpKTsKKyAgICBhdXRvIHBsYXRmb3JtRGF0YSA9IG1ha2VVbmlxdWU8
Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2UuZ2V0KCksIHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZv
bnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBmaXhlZFdpZHRoLCBzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSk7CiAg
ICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBmb250IGhhcyBhbiBlbmNvZGluZyBjb21wYXRpYmxlIHdp
dGggRm9udGNvbmZpZy4gRm9udGNvbmZpZyBjdXJyZW50bHkKICAgICAvLyBzdXBwb3J0cyB0aHJl
ZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlwZUNoYXJJbmRleDogVW5pY29kZSwgU3ltYm9sIGFuZCBB
cHBsZVJvbWFuLgogICAgIC8vIElmIHRoaXMgZm9udCBkb2Vzbid0IGhhdmUgb25lIG9mIHRoZXNl
IHRocmVlIGVuY29kaW5ncywgZG9uJ3Qgc2VsZWN0IGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggMTM3NjVmNDNkYTg2NjhkMmRl
ODJlNjcxZDgxODBkNjg0NDI4NDNiMC4uNTg5NDNkMmE5MGRmYzU1MDFmMmRjYWE4ZWNmMGU5MGUx
YWM3ZjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAg
ICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAgICBpZiAoRlRfTmV3X01lbW9yeV9GYWNlKGxpYnJh
cnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1ZmZlci5kYXRhKCkpLCBidWZm
ZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5
cGVGYWNlLCBidWZmZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAppbmRleCA4Njk4MTM2
NDUxM2I4ZTZmMGQ3YjJkZGE1YmI4ZDFmODcyZTdmNTc2Li43MWZkYTBkOTI0Y2QyNTVkYjNlZjEw
NzdmOWUxMDc4MTRlMjQzZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC05NSw3ICs5NSw3IEBAIFJlZlB0cjxUZXh0dXJlPiBU
ZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEZvcm1hdCBmb3JtYXQs
IGludCB3CiAgICAgICAgIG51bVRpbGVzID0gMDsKICAgICB9CiAKLSAgICBhdXRvIHRleHR1cmVJ
ZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1bnNpZ25lZD4+KG51bVRpbGVzKTsKKyAgICBh
dXRvIHRleHR1cmVJZHMgPSBtYWtlVW5pcXVlPFZlY3Rvcjx1bnNpZ25lZD4+KG51bVRpbGVzKTsK
ICAgICB0ZXh0dXJlSWRzLT5maWxsKDAsIG51bVRpbGVzKTsKIAogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbnVtVGlsZXM7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0YTlmZGVjM2VjNTkxMmNlMjViMWU2YjI1YjkxNDRmYThm
NDBjN2QwLi5hYjM3ZWUwNDFlYjI4YzNjODJmMzVhZjM2M2NjZWRiOWI0MmIxNDkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTE2LDcg
KzExNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rlck1lZGlh
RW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzCiB7CiAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6ZURlYnVnQ2F0ZWdvcnkoKTsKICAgICBpZiAoaXNB
dmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikg
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBs
YXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJl
dHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwK
ICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICB9CiB9CkBAIC0xMTQwLDcg
KzExNDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlc2VydmVz
UGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCgpIGNvbnN0CiB7
Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5n
ZXM+KCk7CiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkIHx8IGlzTGl2ZVN0cmVhbSgpKQogICAgICAg
ICByZXR1cm4gdGltZVJhbmdlczsKIApAQCAtMjM3Niw3ICsyMzc2LDcgQEAgR3N0RWxlbWVudCog
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsoKSBjb25zdAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIoKQogewog
ICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKQotICAgICAgICBtX2F1ZGlvU291cmNlUHJv
dmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI+KCk7
CisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IG1ha2VVbmlxdWU8QXVkaW9Tb3VyY2VQ
cm92aWRlckdTdHJlYW1lcj4oKTsKIH0KIAogQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBjNTc4ZWVl
NmQ1NWRkNGI0MzA3Y2Q0MmJiMDBjY2Y0NzYyOTdiYjMzLi5iMDJlMjhlZGNkNDA3ZmRmZjhjYmVh
NzhhZDFhNmU3YjBjN2I1OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03MTAsMTkgKzcxMCwxOSBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKICAg
ICAgICAgICAgIGlmICghcHJveHkuaXNBY3RpdmUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFt
ZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUu
Z2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKTsK
KyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhv
bGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1f
dGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKTsKIAogICAgICAg
ICAgICAgR0x1aW50IHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4g
bGF5ZXJCdWZmZXI7CiAgICAgICAgICAgICBpZiAodGV4dHVyZUlEKSB7Ci0gICAgICAgICAgICAg
ICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5m
bGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICAgICAgbGF5ZXJC
dWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0
dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldFVubWFu
YWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGTW92ZShmcmFtZUhvbGRlcikpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHByb3h5LmdldEF2YWlsYWJs
ZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6ZSgpLCBHTF9ET05UX0NBUkUpOwogICAgICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWSghbGF5ZXJCdWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0
QXR0cmlidXRlczo6Z2V0KCkpOwogICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5yZXNldChm
cmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+aGFzQWxwaGFDaGFubmVsKCkgPyBCaXRt
YXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKLSAgICAg
ICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgZnJhbWVIb2xkZXItPnVwZGF0ZVRleHR1cmUobGF5ZXJCdWZmZXItPnRleHR1cmVHTCgp
KTsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0RXh0cmFGbGFncyhtX3RleHR1cmVN
YXBwZXJGbGFncyB8IChmcmFtZUhvbGRlci0+aGFzQWxwaGFDaGFubmVsKCkgPyBUZXh0dXJlTWFw
cGVyR0w6OlNob3VsZEJsZW5kIDogMCkpOwpAQCAtOTEyLDcgKzkxMiw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0
dXJlKEdyYXBoaWNzCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVI
b2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVy
PihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8
R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdz
LCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgp
OwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAtOTIzLDcgKzkyMyw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJl
KEdyYXBoaWNzCiAgICAgICAgIHNpemUgPSBzaXplLnRyYW5zcG9zZWRTaXplKCk7CiAKICAgICBp
ZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9
IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NP
UElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9
IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9D
T0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5j
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVyZUlELCBzaXplLCBvdXRwdXRU
ZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBl
LCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0KQEAgLTkzOSw3ICs5MzksNyBA
QCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0
KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RW
aWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9G
cmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBt
YWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVN
YXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50
ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJRCkKQEAgLTk1Myw3ICs5NTMsNyBAQCBOYXRp
dmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkKICAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAg
IGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVf
Q09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVy
ID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVS
X0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyLT5j
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVyZUlELCBzaXplLCAwLCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
ZmFsc2UsIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTEyNSw2ICsxMTI1LDcgQEAgc3RhdGljIHZvaWQgc2V0UmVjdGFuZ2xlVG9WaWRlb1Np
bmsoR3N0RWxlbWVudCogdmlkZW9TaW5rLCBjb25zdCBJbnRSZWN0JiByZWN0KQogfQogCiBjbGFz
cyBHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI6OkhvbGVQdW5jaENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50KEdSZWZQdHI8R3N0RWxl
bWVudD4mJiB2aWRlb1NpbmspIDogbV92aWRlb1NpbmsoV1RGTW92ZSh2aWRlb1NpbmspKSB7IH07
CiAgICAgdm9pZCBzZXRWaWRlb1JlY3RhbmdsZShjb25zdCBJbnRSZWN0JiByZWN0KSBmaW5hbCB7
IHNldFJlY3RhbmdsZVRvVmlkZW9TaW5rKG1fdmlkZW9TaW5rLmdldCgpLCByZWN0KTsgfQpAQCAt
MTE0Nyw4ICsxMTQ4LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
dXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRl
ciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVN
YXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7Ci0gICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0
KCkpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwg
R0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xl
UHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9IG1ha2VVbmlxdWU8R1N0cmVhbWVySG9sZVB1
bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQoKSk7CiAgICAgICAgICAgICBsYXllckJ1ZmZlci0+
c2V0SG9sZVB1bmNoQ2xpZW50KFdURk1vdmUoaG9sZVB1bmNoQ2xpZW50KSk7CiAgICAgICAgICAg
ICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3ZlKGxheWVyQnVmZmVyKSk7CiAgICAgICAgIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApp
bmRleCA3YWU3ZWNlZDZlOWY2YmI2NTUzM2I3ZDg5MDMwMjM3Y2NjZGZmZTY2Li5lMjYwNGM0YWUz
YjA1OWNlMWZiNmUwNGQ1NjhmMWE4MzZhMjMwNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3Mg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2UsIHB1YmwKICNlbmRpZgogI2VuZGlmCiB7Ci0KKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplRGVidWdDYXRl
Z29yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgK
aW5kZXggNTFmZDliMjViMGI4NDM3Yzg0OTEyNTNlNmYwMjFlNjU3ZDAzYTgxNy4uNWM1NmVjMzQx
ODg4MzM0NTc4OGZhMGI1NDlhOTgwMzI3ZDNlN2JmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTsKIGNsYXNzIEltYWdlT3JpZW50YXRpb247CiAKIGNsYXNzIFZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDb2xvckNvbnZlcnNpb24gewogICAgICAgICBDb252
ZXJ0QkdSQVRvUkdCQSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAKaW5kZXggOTczZjRkNGYwMDMyMzU2ZjE3N2ViZDdmYzRiOWU5NGE1MjkyZjk1YS4uOTgxMGMy
NTdiMzc3NmZmZDhkNDIxMmU5Njk0YmU5MmIyNTk3MzUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAjZGVmaW5lIExPV19RVUVVRV9GQUNUT1JfVEhSRVNIT0xEIDAuMgogCiBj
bGFzcyBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KTsKIHB1
YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudChXZWJLaXRXZWJTcmMqLCBS
ZXNvdXJjZVJlcXVlc3QmJik7CkBAIC02MzIsNyArNjMzLDcgQEAgc3RhdGljIGdib29sZWFuIHdl
YktpdFdlYlNyY01ha2VSZXF1ZXN0KEdzdEJhc2VTcmMqIGJhc2VTcmMsIGJvb2wgbm90aWZ5QXN5
bmNDb20KICAgICAgICAgICAgIGxvYWRPcHRpb25zIHw9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0YTsKICAgICAgICAgcHJpdi0+cmVzb3VyY2UgPSBw
cml2LT5sb2FkZXItPnJlcXVlc3RSZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIGxv
YWRPcHRpb25zKTsKICAgICAgICAgaWYgKHByaXYtPnJlc291cmNlKSB7Ci0gICAgICAgICAgICBw
cml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5nZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
KSk7CisgICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8Q2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5nZXQoKSwgUmVzb3VyY2VSZXF1
ZXN0KHJlcXVlc3QpKSk7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHByb3RlY3Rvci5n
ZXQoKSwgIlN0YXJ0ZWQgcmVxdWVzdCIpOwogICAgICAgICAgICAgaWYgKG5vdGlmeUFzeW5jQ29t
cGxldGlvbikKICAgICAgICAgICAgICAgICBnc3RfYmFzZV9zcmNfc3RhcnRfY29tcGxldGUoR1NU
X0JBU0VfU1JDKHNyYyksIEdTVF9GTE9XX09LKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA0ZTlkMTlkODUyN2Q2
OTYyMGNmNWFhOTQxMDczNjI4MzgxYjNjOWYwLi5lNjg4MGQ5OGU3ZmNhZDFkMDUzZjg0ZWQzOGE2
ZmQ4MTk4ZGU3Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyIHJlCiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVu
dHMoKTsKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJraXRfbXNlX2RlYnVnLCAid2Vi
a2l0bXNlIiwgMCwgIldlYktpdCBNU0UgbWVkaWEgcGxheWVyIik7CiAgICAgaWYgKGlzQXZhaWxh
YmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5
ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0s
CiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgfQogfQpAQCAtNDU5LDcg
KzQ1OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzZXRSYXRlKGZs
b2F0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tZWRp
YVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFT
b3VyY2UtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNvdXJjZVNldHVwKEdzdEVs
ZW1lbnQqIHNvdXJjZUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZh
dGVIb2xlUHVuY2guY3BwCmluZGV4IDExNzI0NTg0MTBlOWExNDUzYjYzNWIwZjhkOTFiOWZiNGE2
OTZjNTguLjBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0OTdkNDdlMzc3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCkBAIC03Niw3ICs3
Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpwdXNoTmV4dEhvbGVQdW5j
aEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
JiBwcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHku
bG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
Tm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOwogICAgICAgICAgICAgcHJveHkucHVz
aE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAgICAgICB9OwogCkBAIC0xNDEs
NyArMTQxLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUUKIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIg
cmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVy
KTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7IH0sCiAgICAgICAg
IGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9s
ZVB1bmNoLmgKaW5kZXggZjBkMDRkNGM2M2Q5MzEyMGJjZTgwNWFiOGZlYTI4N2EwMWUwNDQyYS4u
OGJmNzIxMzE4ODE5YzQwMjY3YjcyMWZhOWI4MmFjMWNkOTI2ZjlkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVw
dW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaApAQCAtNDQsNyArNDQsNyBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRl
SW50ZXJmYWNlLCBwdWJsaWMgQwogICAgICwgcHVibGljIFBsYXRmb3JtTGF5ZXIKICNlbmRpZgog
ewotCisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoKE1lZGlhUGxheWVyKik7CiAgICAgfk1lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaCgpOwpAQCAtNzksNyArNzksNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2ggOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwog
ICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gTWVkaWFQbGF5ZXI6OkVtcHR5OyB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU1l
dGFkYXRhOyB9OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVm
ZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oKTsgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBi
dWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFu
Z2VzPigpOyB9OwogCiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT0JveC5oCmluZGV4IGUxYTNhODY2MzE0NzVjYWI3YTliMTcxYjQwNjJkMzkzZDg5MGU2
MDYuLmVjZjg5NjkzZGEzMzg1MjAxMmU3NTAyMTEyOTk4MDk5ZWM4ZGFjMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKQEAgLTM2LDYgKzM2LDcg
QEAgY2xhc3MgRGF0YVZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT0JveCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SVNPQm94KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCmlu
ZGV4IDcwYmI4NjExMzE2ZTY4NWI3NmI3ODgzOGI1ZWQwNjAzNzZiOWIxYTkuLjE4ODNiYTQ3YmRm
M2E1MmFmYjJmZjdkMGRkNWNkOWRjZDdjZGQ4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPT3JpZ2luYWxGb3JtYXRCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcm1hIjsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
UHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcAppbmRleCBkOGQ3NDAxYTc1
NjAwNDZjOThhZmY4Y2IxMWViMmU3MjIzYzk4MWNlLi5iZGZkYmRjOTZjZjBlMWI1MGE3Mjg1ODI4
OGM5YjJmNDc0ZjdkMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2Uo
RGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChvcHRpb25hbEJveFR5cGUudmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVUeXBl
Qm94Ojpib3hUeXBlTmFtZSgpKSB7Ci0gICAgICAgIG1fc2NoZW1lVHlwZUJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SVNPU2NoZW1lVHlwZUJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0g
bWFrZVVuaXF1ZTxJU09TY2hlbWVUeXBlQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lVHlw
ZUJveC0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTY4LDcgKzY4LDcgQEAgYm9vbCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFy
c2UoRGF0YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgfQogCiAgICAgaWYgKG9w
dGlvbmFsQm94VHlwZS52YWx1ZSgpLmZpcnN0ID09IElTT1NjaGVtZUluZm9ybWF0aW9uQm94Ojpi
b3hUeXBlTmFtZSgpKSB7Ci0gICAgICAgIG1fc2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBzdGQ6Om1h
a2VfdW5pcXVlPElTT1NjaGVtZUluZm9ybWF0aW9uQm94PigpOworICAgICAgICBtX3NjaGVtZUlu
Zm9ybWF0aW9uQm94ID0gbWFrZVVuaXF1ZTxJU09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKICAg
ICAgICAgaWYgKCFtX3NjaGVtZUluZm9ybWF0aW9uQm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUlu
Zm9Cb3guaAppbmRleCBmMzdiNzYyNDlkOGUwMGZhMTdhMDU1OTI5ZTc3NjY4NTEzNzMzMzY2Li44
ZTU2NzNlMDUxNmE2NTAxNGY1Y2Q0OWY2MWFhN2I3NTM4ZDJjYWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9C
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVj
dGlvblNjaGVtZUluZm9Cb3guaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBJU09TY2hlbWVUeXBlQm94OwogY2xhc3MgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g7
CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94IDogcHVi
bGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5m
b0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0Mg
Ym94VHlwZU5hbWUoKSB7IHJldHVybiAic2luZiI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlv
bkJveC5jcHAKaW5kZXggYjRmMjc3YTY4NDdjYzIwZDRmYzlkNjI2ZjljYWNjNzQzMGFkYWY3MC4u
YzgzYzRmZjdiMzhhYmYxYWUyMmZmZTVlNzJjN2ExZjg2YTA4ZWIwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1l
SW5mb3JtYXRpb25Cb3guY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGJvb2wgSVNPU2NoZW1lSW5mb3Jt
YXRpb25Cb3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAg
ICBpZiAobG9jYWxPZmZzZXQgKyBzY2hlbWVTcGVjaWZpY0JveFR5cGUudmFsdWUoKS5zZWNvbmQg
PiBvZmZzZXQgKyBtX3NpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
bV9zY2hlbWVTcGVjaWZpY0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPElTT1RyYWNrRW5jcnlwdGlv
bkJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVTcGVjaWZpY0RhdGEgPSBtYWtlVW5pcXVlPElTT1Ry
YWNrRW5jcnlwdGlvbkJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZVNwZWNpZmljRGF0YS0+
cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Nj
aGVtZUluZm9ybWF0aW9uQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaAppbmRleCA5ZWRiMTg3OGE5YmE5MTliZWIxOWQ3
YjYyMjNkOWU3ZTQ2NGY2ODU4Li5lOGVjMGM0YzY5Yjc0ZTgzMzQ0OTg5NDFmMjRlZWU0MTBmMmNk
ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
U2NoZW1lSW5mb3JtYXRpb25Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaApAQCAtMjksNyArMjksNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9y
bWF0aW9uQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hl
bWVJbmZvcm1hdGlvbkJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0
YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAic2NoaSI7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94
LmgKaW5kZXggNjE5NjEwMzlmNDhjZjJiYzZlZTdiODg0ODA3M2M4Mzc2ZTU4MzEzMC4uNGI4ZjI2
MzM3NTBmOGFkZjkwYmMyN2MyZDBjZjE0ZWY5ODJjMTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCkBAIC0y
OSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPU2NoZW1lVHlwZUJveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJzY2htIjsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJh
Y2tFbmNyeXB0aW9uQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKaW5kZXggZjRlZmUyODEwNTFlM2M3YjI5ZGJlZjc4ZTQ0
ZGEzYjAzODc4MDNmMy4uNDdmYTQ5NzI0NmM3MTViZTFkMmNlZjliMGVhODdkZDdmNzllZjU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNr
RW5jcnlwdGlvbkJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09UcmFja0VuY3J5cHRpb25Cb3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1RyYWNrRW5jcnlwdGlvbkJveCA6
IHB1YmxpYyBJU09GdWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1RyYWNrRW5jcnlw
dGlvbkJveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Rm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInRlbmMiOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKaW5kZXggOWVjNDA4
OTRmMWUyOGEwNWEyMTRjYjMyMzUxNGY3YjEzOTU1ZDI4NC4uNGI1MTZlZThkZDdmN2QyMzdlOGQ2
MjcyNzk3YjAzMmRkMWY1YWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgSlNDOjpE
YXRhVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJU09TdHJpbmdCb3ggOiBw
dWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT1N0cmluZ0JveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3gg
ewogcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgY29udGVudHMoKSB7IHJldHVybiBtX2NvbnRl
bnRzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09W
VFRDdWUuaAppbmRleCBhNjE2MGI2NmFlOTQ2ODIwNjc3YWQyOTM0YjE4MWRlYjkzY2M0ZjQ5Li5h
ZTIzYmVmZmZlZDY0YTZkZTI4OTE3NmU0MTUxMDExZjA2N2M5ODk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIE4gYnl0ZXMgOiBDdWVUaW1lQm94IDogYm94IDog
b3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVTZXR0aW5nc0JveCA6IGJveCA6IG9wdGlvbmFsCiAv
LyBOIGJ5dGVzIDogQ3VlUGF5bG9hZEJveCA6IGJveCA6IHJlcXVpcmVkCi1jbGFzcyBJU09XZWJW
VFRDdWUgOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIElTT1dlYlZUVEN1ZSBmaW5hbCA6IHB1Ymxp
YyBJU09Cb3ggewogcHVibGljOgogICAgIElTT1dlYlZUVEN1ZShjb25zdCBNZWRpYVRpbWUmIHBy
ZXNlbnRhdGlvblRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMzI3ZWJmNjA2MjU5MDlmYmUyYzViNmJkNTE5OGFjYTE5
YTQ1ZDRhNC4uNTA3OTM4YmUxMTA1Y2Y0MjYwNDU1OTEzYjBjNWU5OWQ0ZjU0ZjllNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtODQsNyArODQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShT
aGFyZWRCdWZmZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3Iu
Z2V0KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZv
bnREZXNjcmlwdG9yLmdldCgpKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpz
dXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWlu
dGluZ09wZXJhdGlvbi5oCmluZGV4IDgzZjc3NjY3OWUxODljNmZjZTRlZjg2MjU3YjAwNWQxMTM3
NGUyMmQuLjZmMjE1YjI3YWFkOTZjM2ZhOWMyMDdmMzIwZWY5ZTMyYjQzYjdjYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50
aW5nT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3Bh
Y2UgTmljb3NpYSB7CiBzdHJ1Y3QgUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkgeyB9OwogCiBzdHJ1
Y3QgUGFpbnRpbmdPcGVyYXRpb24geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICB2aXJ0dWFsIH5QYWludGluZ09wZXJhdGlvbigpID0gZGVmYXVsdDsKICAgICB2aXJ0
dWFsIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNj
ZW5lSW50ZWdyYXRpb24uY3BwCmluZGV4IDEwOWMyYzU3NzY3OWExMjE0YWE2ZWExMDFjNmY0ODBm
YmEyZWM2MDEuLjViZWU2MTNmY2Y2YjQ2YTA3YzYyOGU1ODAxNmY0OWJiOTAyMWIxZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNj
ZW5lSW50ZWdyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZv
aWQgU2NlbmVJbnRlZ3JhdGlvbjo6cmVxdWVzdFVwZGF0ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxT
Y2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBk
YXRlU2NvcGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZVNjb3BlPiht
YWtlUmVmKCp0aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VS
ZWYoKnRoaXMpKTsKIH0KIAogU2NlbmVJbnRlZ3JhdGlvbjo6Q2xpZW50Ojp+Q2xpZW50KCkgPSBk
ZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcAppbmRleCAyYjFhZWNmMGQxYjdlNmEzNDFiZjk0YmZmYWVkMjIwZjFhNDU4
NjM4Li41MGUwYzNjN2Q5NzY4MjZiYTdiYjgxODVkMWVlMTQyMTI5YWRhMDJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApA
QCAtNjgsNyArNjgsNyBAQCBhdXRvIGNyZWF0ZUNvbW1hbmQoQXJncyYmLi4uIGFyZ3VtZW50cykg
LT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8T3BlcgogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIGF1dG8gY3JlYXRlQ29tbWFuZCgpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19i
YXNlX29mPE9wZXJhdGlvbkRhdGE8PiwgVD46OnZhbHVlLCBzdGQ6OnVuaXF1ZV9wdHI8UGFpbnRp
bmdPcGVyYXRpb24+PgogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VD4oKTsKIH0KIAogQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Q2Fp
cm9PcGVyYXRpb25SZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFBhaW50aW5nT3Bl
cmF0aW9ucyYgY29tbWFuZExpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQ
YWludGluZ0NvbnRleHRDYWlyby5jcHAKaW5kZXggMGM4YTY3MGUzYTBhMzYzMDdlM2YyOTllY2Rh
MDI1NTJmZDc3NGVkMS4uYjM1MDhkNTE3YjI0ZTQ3NWMwOGFmNDhiMzNlNDMxZmQyNzkyMDRiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJv
LmNwcApAQCAtNzAsOCArNzAsOCBAQCBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6
OkZvclBhaW50aW5nKEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICB9KTsKIAogICAgIG1fY2Fpcm8u
Y29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShtX2NhaXJvLnN1cmZhY2UuZ2V0KCkpKTsK
LSAgICBtX3BsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UGxhdGZv
cm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4dC5nZXQoKSk7Ci0gICAgbV9ncmFwaGljc0Nv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KCptX3BsYXRmb3JtQ29u
dGV4dCkpOworICAgIG1fcGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQbGF0
Zm9ybUNvbnRleHRDYWlybz4obV9jYWlyby5jb250ZXh0LmdldCgpKTsKKyAgICBtX2dyYXBoaWNz
Q29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0
KSk7CiB9CiAKIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6fkZvclBhaW50aW5n
KCkKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHZvaWQgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBh
aW50aW5nOjpyZXBsYXkoY29uc3QgUGFpbnRpbmdPcGVyYXRpb25zJiBwYWludGluCiAKIFBhaW50
aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OkZvclJlY29yZGluZyhQYWludGluZ09wZXJh
dGlvbnMmIHBhaW50aW5nT3BlcmF0aW9ucykKIHsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PigKKyAgICBtX2dyYXBoaWNz
Q29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PigKICAgICAgICAg
WyZwYWludGluZ09wZXJhdGlvbnNdKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fpcm9PcGVy
YXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRpbmdPcGVyYXRpb25zKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhaXJvT3BlcmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50
aW5nT3BlcmF0aW9ucyk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3Jl
VGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcApp
bmRleCBkNGM5YjYwNWI0Y2QyOGUzNDhlZmQ4NTMzNTAzOGI1OGM5YTRkZGZhLi44ZTM3OTBmN2Fi
NTRmNmIzZDk1NmYzMDcwNGM0MjljMmFjZGMzMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4
dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgYXV0byBCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Y3Jl
YXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAg
W10oQmFja2luZ1N0b3JlJikgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9y
ZVRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggZWFkNDk3NzZlNTBhMjNjZmQ1MDE0YTdlOTY0MzBi
M2RlMTI0ZGIwYS4uZDQzNmYyMGMzMTYxYzA1NTRhNWFhMjJhMzkzMGE5OTVlZWMzNWE2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRl
eHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBOaWNvc2lhIHsK
IAogY2xhc3MgQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgQmFj
a2luZ1N0b3JlOjpJbXBsLCBwdWJsaWMgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmVDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBGYWN0
b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRl
eCAzOGZkZDkzZGE2YjEzODgzMTQwNTkxNjUzY2RmMjllMDdkZTMyMzk2Li43NTY5MmM3YzRhN2Jm
ZGIxODcxZGYxODAyZTM4Nzc1MzZiNjE1NTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRl
eHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBs
LmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRvIENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgK
ICAgICAgICAgW10odWludDY0X3QsIENvbXBvc2l0aW9uTGF5ZXImKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+
KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21wb3NpdGlvbkxheWVyVGV4dHVy
ZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25M
YXllclRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBs
LmgKaW5kZXggNjU1NWJmYjA4MDI2MWU4YTMwOTViZGU0ODNhMDYxYmI1NDIxNDU3NC4uNTMwYTY3
NTEwMTcyNmVhMjg3MjhjNTNkODg4ZGJkZWY3YWFlNzk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9u
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBl
ckltcGwuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiBuYW1l
c3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1w
bCBmaW5hbCA6IHB1YmxpYyBDb21wb3NpdGlvbkxheWVyOjpJbXBsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVu
dExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDU2MTcyOGI1ZWYxZjQwZDgwYzUzNTk5
MjY3MTA2NmFkODc0ODE5YTcuLjJmYjBlYzk1OTE1YWViMGJhMDk2ZjgwYmM2OTBkMmYzYjI4NDhj
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRvIENvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KENsaWVudCYgY2xpZW50KSAt
PiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAgICAgIFsmY2xpZW50XShDb250
ZW50TGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQpOwogICAgICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVu
dExheWVyVGV4dHVyZU1hcHBlckltcGwuaAppbmRleCBlZjk2YTYwODMxNjJkZTQxYzI3ZGU0YmYz
NTdiOGE0ZmNhZjhkOWNmLi5iMDEwNWI3M2FjMjI2NGY1N2NhN2I3ZTUwM2VjZjcwZGE1MjdkYTdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExh
eWVyVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5OwogbmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBDb250
ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBDb250ZW50TGF5ZXI6Oklt
cGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIENs
aWVudCB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNw
cAppbmRleCA1MmVjNzBiNjgxZjdiYzU2M2E2NzQ3NTQzNjIzODc2YjAzMTM5YTliLi45YTliZDQ2
ODNiMjY3NDJhZmVjYjE0OTFmNjE0NGYyYTc4YzU5NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhR0MzRExheWVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEdDM0RMYXllcjo6c3dh
cEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgIGF1dG8mIHByb3h5ID0gZG93bmNhc3Q8Tmljb3Np
YTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fY29udGVudExheWVyLT5pbXBsKCkp
LnByb3h5KCk7CiAKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAg
ICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1
cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOworICAgICAg
ICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZs
YWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9j
b250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNE
TGF5ZXIuaAppbmRleCAzMmRiOWRkMzdhNmYwZDlmYThkNGQxODhlYjE4ZjhhZTE0NzVhMDBiLi45
ZjU0NDViYmUxMTgzY2U3NDg1NTkzY2JiYmYxNjUwZWRjY2U0MzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUdDM0RMYXllci5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIEdMQ29udGV4dDsK
IG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgR0MzRExheWVyIDogcHVibGljIENvbnRlbnRM
YXllclRleHR1cmVNYXBwZXJJbXBsOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEdDM0RMYXllcihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRCYs
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAgICAgdmlydHVhbCB+
R0MzRExheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBhMmFlMzRhMzEzMjdlODcx
NTY1NDE0NmQxOGY3N2M3YTY3ZjI0MjE2Li5kMzUzYzhiZTFiNWJmYTExNmI2Y2I4NTIwOTcwMjc3
Y2M5MzI0NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0
byBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3Rv
cnkKIHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10oSW1hZ2VCYWNraW5nJikgewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1h
cHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJh
Y2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgK
aW5kZXggMWE2MjNhZmE0MDkzYjIyYWMyMGQxM2IzMjkzNjA4M2FjYjA4ZWE4MC4uNDliMWU5YjJl
YzAzNTUyYTBiZDYxMjBhZTc3YjhlNjk0YTk0NjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1Rl
eHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmgKQEAg
LTQyLDYgKzQyLDcgQEAgY2xhc3MgSW1hZ2U7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNz
IEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsIGZpbmFsIDogcHVibGljIEltYWdlQmFja2lu
Zzo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdM
Q29tbW9uLmgKaW5kZXggN2M2MTRmYjQwMzM1OGVhNDA0NTZkODQ2MmNmOGRjNWJjM2E0ZWIxOS4u
MTQ3MjE3OTA3NzI3Y2FlZWEyN2VmNjhhMDY5Y2MwNTMxMDgyMGQzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENv
bW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zM0RPcGVuR0xDb21tb24uaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24gOiBwdWJsaWMgRXh0ZW5zaW9u
czNEIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5FeHRlbnNpb25zM0RPcGVuR0xDb21tb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTC5jcHAKaW5kZXggZTY4NDhmY2VjYTQxZTk3MzZmMmEzODE3YTlmZDAzY2ViYWUzYWMx
MS4uYjk2MzYzYjU1MTkzNTZjOGNkZjQ2NTQzNjMyNmVkMDZjZWNlZDg4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNE
JiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVu
c2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9u
czNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lv
bnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFu
dCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggYjI0ZGYwMzVlMjg4ZTFl
YjJmOGFmOWY3YWI5MWQ3NzlkMGFjYTQ5ZS4uMmEwZTViNzZlNGQ2YmFiNzBlOTBiMmYzZDI4ZWI0
M2MwN2Y0MjUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21t
b24uY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGls
ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBBTkdMRVJlc291cmNlcy5IYXNo
RnVuY3Rpb24gPSBuYW1lSGFzaEZvclNoYWRlcjsKIAogICAgIGlmICghbmFtZUhhc2hNYXBGb3JT
aGFkZXJzKQotICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNoYWRlck5hbWVIYXNoPigpOworICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBtYWtl
VW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwogICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNo
YWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMuZ2V0KCkpOwogICAgIG1fY29tcGlsZXIuc2V0UmVz
b3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgU3RyaW5nIEdy
YXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgQU5HTEVTaGFkZXIKICAgICAgICAgLy8gQXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6
IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZvcmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBp
bGVkLAogICAgICAgICAvLyBhbmQgYXJlbid0IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBh
bnkgc2hhZGVyIHByb2dyYW0uCiAgICAgICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQot
ICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFk
ZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VV
bmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAgICAgICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZv
clNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMuZ2V0KCkpOwogCiAgICAgICAgIGF1dG8gZ2Vu
ZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFzaGVkTmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRleCAyNDMwNDZkOTg5YWQ3MzhmN2M5ZjcxNDk1NTY3
Yzk2YmIzNGM1NjQxLi43MGEyMGQ1MGMzNTIxYTYxMjNlNmVmYWYxZjQ3NjhmNjQ5NWNkZTVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCkBAIC0yNDIsNyArMjQy
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRo
KQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAg
ICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7Cisg
ICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRo
aXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAj
ZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzCiBHcmFwaGlj
c0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUg
cmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9h
dHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV9jb21waWxlcihpc0dMRVMyQ29tcGxpYW50KCkgPyBT
SF9FU1NMX09VVFBVVCA6IFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpCi0gICAgLCBtX3By
aXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJl
bmRlclN0eWxlKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVk
Q29udGV4dCwgIXNoYXJlZENvbnRleHQpOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlZDZj
Y2YxOTRiYmVlMWUwMGZkNDM5ZjYxYTZkZTYyZTQwMzAyZWEzLi44ZmQzYWQ0ZjcyZDc2NGJkOTVk
MjIwZjU4MWVkMmI3OTYyODgzYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
M0RUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTA2LDkgKzEwNiw5IEBAIEdyYXBoaWNzQ29udGV4dDNE
OjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgSG9zCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4
dCk7CiAjaWYgVVNFKE5JQ09TSUEpCi0gICAgbV9uaWNvc2lhTGF5ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX25pY29z
aWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5
bGUpOwogI2Vsc2UKLSAgICBtX3RleG1hcExheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CisgICAgbV90ZXht
YXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhp
cywgcmVuZGVyU3R5bGUpOwogI2VuZGlmCiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAg
LTMyNSwxMCArMzI1LDEwIEBAIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4
dGVuc2lvbnMoKQogICAgIGlmICghbV9leHRlbnNpb25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykK
ICAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCi0gICAg
ICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+
KHRoaXMsICBmYWxzZSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CiAjZWxzZQogICAgICAgICAvLyBGcm9tIE9w
ZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3JlIHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVz
ZSBnbEdldFN0cmluZ2kuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8
RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigp
ID49IDMyMCk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNE
T3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAj
ZW5kaWYKICAgICB9CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0
Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCmluZGV4IDE0ZjFkYmYxOGQ5MWIzOTA3
NWUyZDUwZjIxNDliNzc2YmJjMTc0OTMuLjY2MzIzMTU2OTViYTIxYzI2N2QxNTU5MzJlYmE5MTQ3
ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxh
eWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBo
b2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHktPmxvY2soKSk7Ci0gICAgICAgIG1fcGxhdGZvcm1M
YXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVy
ZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAg
IG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwg
dGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAg
ICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaAppbmRleCA4YjYwMjE0YWJhOWI4M2Nh
MTkzMGYxMzVjNzUzNDhiMjY2ZmU1Y2FjLi5lNmYwOWM4Nzk4NTQ4NjMyZWU0YjBhYTVhNTYzMDYx
NWEyNGEzNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
ci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIEdMQ29udGV4dDsKIGNsYXNzIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1M
YXllciA6IHB1YmxpYyBQbGF0Zm9ybUxheWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIoR3JhcGhpY3ND
b250ZXh0M0QmLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUpOwogICAgIHZpcnR1YWwg
flRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApp
bmRleCA5NzRiODU3OGI4OGFhNjQzNTA5MWU4YjBjMzhiYjJkYjcxMGVmMTAyLi5hMmY3NTg2NmUz
MjNiOGZkYmE0M2EwMDdkNDQ3YWFhNDY1NzZiZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApA
QCAtMTg2LDcgKzE4Niw3IEBAIFRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKCkKIAog
ICAgIG1fZGF0YSA9IG5ldyBUZXh0dXJlTWFwcGVyR0xEYXRhKHBsYXRmb3JtQ29udGV4dCk7CiAj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIG1fdGV4dHVyZVBvb2wgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJpdG1hcFRleHR1cmVQb29sPihtX2NvbnRleHRBdHRyaWJ1dGVzKTsKKyAgICBtX3Rl
eHR1cmVQb29sID0gbWFrZVVuaXF1ZTxCaXRtYXBUZXh0dXJlUG9vbD4obV9jb250ZXh0QXR0cmli
dXRlcyk7CiAjZW5kaWYKIH0KIApAQCAtNzkwLDcgKzc5MCw3IEBAIFJlZjxCaXRtYXBUZXh0dXJl
PiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNy
ZWF0ZUFjY2VsZXJhdGVkKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJl
TWFwcGVyR0w+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOwog
fQogCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAKaW5kZXggN2FmZGYzMGEwNWJjYTUzOTdiODAxOGJmZWJkODllMGUxZGE1MDMzMy4uZTEx
YTBiYjI3YjgxMGMyZDUyNzZiMmE5YjBjNTA5Zjg4OTUwNjZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmCiAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVy
ZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRl
cm5hbEZvcm1hdCk7CiAgICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKICAgICBzdGF0aWNfY2Fz
dDxCaXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVy
ZShtX3RleHR1cmVJRCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdU
Rk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAppbmRleCBjNzE0ZjZkNzhj
MWNmMWE2MWQ0ZGZmNmI0MjA1MjFiMDJlY2Q3YzUwLi4zNzkzNjc1YWM4ZDZiM2MzMmEzYjMxODE5
M2U0OWE3YjM3ZGM0ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuY3BwCkBAIC03MSw4ICs3MSw4IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNv
CiAgICAgaWYgKG1fdGFyZ2V0TGF5ZXIgJiYgbV9jdXJyZW50QnVmZmVyKQogICAgICAgICBtX3Rh
cmdldExheWVyLT5zZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKLSAg
ICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6
OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50
KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2Vk
QnVmZmVyc1RpbWVyRmlyZWQpOwotICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQpOworICAgIG1fcmVs
ZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJG
aXJlZCk7CisgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIgPSBtYWtlVW5pcXVlPFJ1
bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpj
dXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3Np
dG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7CiAKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQog
ICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291
cmNlUHJpb3JpdHk6OkNvbXBvc2l0aW5nVGhyZWFkVXBkYXRlVGltZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAz
NjdkOGE1M2NmMzcwZDIyMDJkNmYzNDAxY2RjYjNhMDJmZjQyYzJiLi5kNDc1NzEwYmEwY2RkZmJj
ZGJkYTBjNjhjZTMwYjgxZWZhYWQ2OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTgxLDcgKzk4MSw3IEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVmZmVycygpCiAKICAg
ICAvLyBFbnN1cmUgdGhlIFRpbGVkQmFja2luZ1N0b3JlIG9iamVjdCwgYW5kIGVuZm9yY2UgYSBj
b21wbGV0ZSByZXBhaW50IGlmIGl0J3Mgbm90IGJlZW4gcHJlc2VudCB5ZXQuCiAgICAgaWYgKCFs
YXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUpIHsKLSAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFj
a2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZm
ZWN0aXZlQ29udGVudHNTY2FsZSgpKTsKKyAgICAgICAgbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0
b3JlID0gbWFrZVVuaXF1ZTxUaWxlZEJhY2tpbmdTdG9yZT4oaW1wbCwgZWZmZWN0aXZlQ29udGVu
dHNTY2FsZSgpKTsKICAgICAgICAgbV9wZW5kaW5nVmlzaWJsZVJlY3RBZGp1c3RtZW50ID0gdHJ1
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oCmluZGV4IDJjMjRlMDg0ZTMyOTZhNDdlMDll
OTYxMGQ3NDhkNmE4OGZlNDk2NTYuLmZiYzI0NWJlMWU1MDM4NTNjNzMyZjAxZTVhMzRlNTU4NGE1
YjNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9UaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKIAogY2xhc3MgVGlsZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBD
b29yZGluYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3Jl
LmNwcAppbmRleCAzYmU0MzExZGVhYTAyNDk3YzdlZDFjZGNhMTM0NWJhNWE2ODAzMTA5Li40YTY5
NzgyMmU0ZGUyY2RiOGI2NmY4MWQ0MDRkOGRiZTgyYjQ5ODczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lk
IFRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVUaWxlcyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVj
dCwgY29uc3QgSW50UmVjdCYgcwogICAgIHVuc2lnbmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRp
bGVzVG9DcmVhdGUuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1Rv
Q3JlYXRlQ291bnQ7ICsrbikgewogICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUg
PSB0aWxlc1RvQ3JlYXRlW25dOwotICAgICAgICBtX3RpbGVzLmFkZChjb29yZGluYXRlLCBzdGQ6
Om1ha2VfdW5pcXVlPFRpbGU+KCp0aGlzLCBjb29yZGluYXRlKSk7CisgICAgICAgIG1fdGlsZXMu
YWRkKGNvb3JkaW5hdGUsIG1ha2VVbmlxdWU8VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKICAg
ICB9CiAgICAgcmVxdWlyZWRUaWxlQ291bnQgLT0gdGlsZXNUb0NyZWF0ZUNvdW50OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4IGM4OGU5YmVmOWQ2NmNhMmI1NTAxOGM5MGY0YjBh
NDI4YjQ2ODJlZjguLjRlYWYwMDExMjBjNDdmZmNlNTVhYjRkZmE5MjE4M2NlOGIzMTk0ZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFRyYW5zZm9ybVN0
YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6b3BlcmF0b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhl
cikKICAgICBpZiAobV9tYXBRdWFkKSB7CiAgICAgICAgIG1fbGFzdFBsYW5hclF1YWQgPSBvdGhl
ci5tX2xhc3RQbGFuYXJRdWFkOwogICAgICAgICBpZiAob3RoZXIubV9sYXN0UGxhbmFyU2Vjb25k
YXJ5UXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0UXVhZD4oKm90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOwor
ICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRR
dWFkPigqb3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KQEAg
LTUwLDcgKzUwLDcgQEAgVHJhbnNmb3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0o
Y29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVyKQogICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0g
PSBudWxscHRyOwogCiAgICAgaWYgKG90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pCi0gICAg
ICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0
aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgIG1fYWNj
dW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3Ro
ZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CiAgICAgICAgIAogICAgIHJldHVybiAqdGhpczsK
IH0KQEAgLTEyOSwxMiArMTI5LDEyIEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNm
b3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Gcm9tQ29uCiAgICAgLy8g
SWYgd2UgaGF2ZSBhbiBhY2N1bXVsYXRlZCB0cmFuc2Zvcm0gZnJvbSBsYXN0IHRpbWUsIG11bHRp
cGx5IGluIHRoaXMgdHJhbnNmb3JtCiAgICAgaWYgKG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pIHsK
ICAgICAgICAgaWYgKG1fZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQotICAg
ICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNm
b3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIgKiAqbV9hY2N1bXVsYXRlZFRy
YW5zZm9ybSk7CisgICAgICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1
ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3Vt
dWxhdGVkVHJhbnNmb3JtKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hY2N1bXVsYXRl
ZFRyYW5zZm9ybS0+bXVsdGlwbHkodHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfSBlbHNl
IGlmIChhY2N1bXVsYXRlID09IEFjY3VtdWxhdGVUcmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFr
ZSBvbmUgaWYgd2Ugc3RhcnRlZCB0byBhY2N1bXVsYXRlCi0gICAgICAgIG1fYWNjdW11bGF0ZWRU
cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zv
cm1Gcm9tQ29udGFpbmVyKTsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAg
IH0KICAgICAKICAgICBpZiAoYWNjdW11bGF0ZSA9PSBGbGF0dGVuVHJhbnNmb3JtKSB7CkBAIC0y
MDgsNyArMjA4LDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFy
eVF1YWQoY29uc3QgRmxvYXRRdWFkKiBxdWFkKQogICAgIC8vIE1hcCB0aGUgcXVhZCBiYWNrIHRo
cm91Z2ggYW55IHRyYW5zZm9ybSBvciBvZmZzZXQgYmFjayBpbnRvIHRoZSBsYXN0IGZsYXR0ZW5p
bmcgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBGbG9hdFF1YWQgYmFja01hcHBlZFF1YWQoKnF1YWQp
OwogICAgIG1hcFF1YWQoYmFja01hcHBlZFF1YWQsIGludmVyc2VEaXJlY3Rpb24oKSk7Ci0gICAg
bV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihi
YWNrTWFwcGVkUXVhZCk7CisgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlx
dWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6
Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBi
b29sKiB3YXNDbGFtcGVkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCmluZGV4IDEwODYz
NzQwMGEyMGZhMmYwOWRmNmFkNDM5MzNjYTdkYTE3ZjQ4NjEuLmI2MjU4MzZhNWNlMjI1YmY0N2Yz
MzBjMDhjMjlkOGM3NTY1MmVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKQEAgLTg0LDcg
Kzg0LDcgQEAgY2xhc3MgVHJhbnNmb3JtU3RhdGUgewogICAgICAgICAvLyBXZSBtdXN0IGJlIGlu
IGEgZmxhdHRlbmVkIHN0YXRlIChubyBhY2N1bXVsYXRlZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0
aGlzIHNlY29uZGFyeSBxdWFkLgogICAgICAgICBBU1NFUlQobV9hY2N1bXVsYXRlZE9mZnNldCA9
PSBMYXlvdXRTaXplKCkpOwogICAgICAgICBpZiAocXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBs
YW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOwor
ICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRR
dWFkPigqcXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29u
ZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggZDMxYTI1NzlmYjFlMWM3
OTQyNWQwMjkwNWViZWJjODhkMTRhZGQ1MC4uOGY3NzAyNzVkZTY5OTU2OGM4NTE1YWVhMGYyY2Zh
MGU1MjA1NjcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZQogICAgIGJvb2wgc3ludGhlc2l6ZUJvbGQgPSBpc0dESUZvbnRXZWlnaHRCb2xk
KHdlaWdodCkgJiYgIWlzR0RJRm9udFdlaWdodEJvbGQobG9nRm9udC5sZldlaWdodCk7CiAgICAg
Ym9vbCBzeW50aGVzaXplSXRhbGljID0gaXNJdGFsaWMoZm9udERlc2NyaXB0aW9uLml0YWxpYygp
KSAmJiAhbG9nRm9udC5sZkl0YWxpYzsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNv
bXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VH
REkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZN
b3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNp
emVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOwogCiAjaWYgVVNFKENHKQogICAgIGJv
b2wgZm9udENyZWF0aW9uRmFpbGVkID0gIXJlc3VsdC0+Y2dGb250KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKaW5kZXggMzg3YTIzOWY4MjljMmQ3ODA5YzJjOTZkM2ZlMTI0ZGVlMTRi
ZDNkNy4uNjQ4NDg1YWMyNmNiMjM3NWNmNjU3NGY4MWZmNGNkNjU2NzJjNTA4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlCiAgICAgZm9udFJlZmVyZW5jZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZm
ZXIsIGZvbnROYW1lKTsKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3Jt
YXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCAxOTA0NDkwMDQ1ZjRlN2U3ZjdkYjgx
ZDk1ZjBhNmEyNDJiZDU0ODM4Li5lYWI4MDZlNDJjMDYyZDU1OTc4OTk0NTJlZmU3NDc0ZTU5OWY5
MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTQxLDYgKzQxLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRh
Z2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIAogc3RydWN0IEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgogICAgIEZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoSEFORExFIGZvbnRSZWZlcmVuY2UsIGNvbnN0IFN0cmluZyYg
bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggYWI3Yzc5
MGQ2MGYyZThmNzRhZjAzYzA2YWNmYzcyYzhlMzljMjJkOS4uZWVlYWZlYmQ5MzNjYTljNzhkZDA1
MTQxM2QyMzM0NGNhODUzYjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBpZiAo
IWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9u
dE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZv
bnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
OjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IGI5NTM1NTAzYzMwNmM1MDFhYTM5M2YzMWZmZDkyODg1ZWRlOWJkZWYuLmNj
N2FkM2VjMzEwYmFmZjlmMmQ1MzEzZWEzN2ViYjY2N2M3OWQ0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250
cm9sbGVyLmNwcApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMg
Y29uc3QgaW50IGtGdWxsU2NyZWVuQW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7IC8vIG1pbGxpc2Vj
b25kcyAKIAogY2xhc3MgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OlByaXZhdGUgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFByaXZhdGUoRnVsbFNjcmVlbkNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIsIEZ1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50KiBjbGllbnQpIAogICAgICAgICA6IG1f
Y29udHJvbGxlcihjb250cm9sbGVyKQpAQCAtMTAzLDcgKzEwNCw3IEBAIExSRVNVTFQgRnVsbFNj
cmVlbkNvbnRyb2xsZXI6OlByaXZhdGU6OmZ1bGxzY3JlZW5DbGllbnRXbmRQcm9jKEhXTkQgaHdu
ZCwgVUlOVCBtCiB9CiAKIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpGdWxsU2NyZWVuQ29udHJvbGxl
cihGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudCogY2xpZW50KQotICAgIDogbV9wcml2YXRlKHN0
ZDo6bWFrZV91bmlxdWU8UHJpdmF0ZT4odGhpcywgY2xpZW50KSkKKyAgICA6IG1fcHJpdmF0ZSht
YWtlVW5pcXVlPFByaXZhdGU+KHRoaXMsIGNsaWVudCkpCiB7CiAgICAgQVNTRVJUX0FSRyhjbGll
bnQsIGNsaWVudCk7CiB9CkBAIC0xMzEsMTMgKzEzMiwxMyBAQCB2b2lkIEZ1bGxTY3JlZW5Db250
cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4oKQogICAgIG1fcHJpdmF0ZS0+bV9vcmlnaW5hbEZyYW1l
ID0gb3JpZ2luYWxGcmFtZTsKIAogICAgIEFTU0VSVCghbV9wcml2YXRlLT5tX2JhY2tncm91bmRX
aW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93ID0gc3RkOjptYWtlX3Vu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkp
OworICAgIG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJp
dmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5jcmVhdGVXaW5kb3coMCk7CiAgICAgOjpBbmltYXRl
V2luZG93KG1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93LT5od25kKCksIGtGdWxsU2NyZWVu
QW5pbWF0aW9uRHVyYXRpb24sIEFXX0JMRU5EIHwgQVdfQUNUSVZBVEUpOwogCiAgICAgbV9wcml2
YXRlLT5tX2NsaWVudC0+ZnVsbFNjcmVlbkNsaWVudFdpbGxFbnRlckZ1bGxTY3JlZW4oKTsKICAg
ICBBU1NFUlQoIW1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93KTsKLSAgICBtX3ByaXZhdGUt
Pm1fZnVsbFNjcmVlbldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fZnVs
bFNjcmVlbldpbmRvdyA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdz4obV9wcml2YXRlLmdldCgpKTsKICAgICBBU1NFUlQobV9wcml2YXRlLT5tX2Z1bGxTY3Jl
ZW5XaW5kb3cpOwogICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93LT5jcmVhdGVXaW5k
b3coMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCmluZGV4IDEwNjdiOTYwOTNk
YjJlZDU5MWEyMWEzMWQ5ZDAyNTZkYzEyOTNlODkuLmYxNDQyNTcyY2M2ZDFkNTRiYmVlNThiZGJj
MzZlZGY3NzRhYWJiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcApAQCAtNzgs
NyArNzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBkYywgYm9v
bCBoYXNBbHBoYSkKIAogICAgIGNhaXJvX3QqIGNyID0gY3JlYXRlQ2Fpcm9Db250ZXh0V2l0aEhE
QyhkYywgaGFzQWxwaGEpOwogCi0gICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOwor
ICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUobWFrZVVuaXF1
ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY3IpKTsKICAgICBtX2RhdGEtPnBsYXRmb3JtQ29udGV4
dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fZGF0YSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9
IGRjOwogICAgIGlmIChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJE
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHAKaW5kZXggYzJiYWZhZjk2YTE2MDcwODBiNzYzMzk1MjY2MmU3Njc3NjE0
YjAwYy4uOTZjODI4MWFmNGIyMmM2Njg2YWNiMTRjNWU4MmMxZDY5YjkwZGQ0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERp
cmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4
dDo6R3JhcGhpY3NDb250ZXh0KEhEQyBoZGMsIElEMkQxRENSZW5kZXJUYXJnZXQqKiByZW5kZXJU
YXJnZXQsIFJFCiAKICAgICAoKnJlbmRlclRhcmdldCktPkJpbmREQyhoZGMsICZyZWN0KTsKIAot
ICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFyZ2V0KTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1D
b250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdl
dCk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZN
b3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwgQml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQ
VU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGhkYzsKIH0KQEAgLTEyNiw3ICsxMjYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KEhEQyBoZGMsIGJvb2wgaGFzQWxw
aGEpCiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRD4ocmVuZGVyVGFyZ2V0LmdldCgpKTsKKyAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250
ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0Lmdl
dCgpKTsKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdU
Rk1vdmUob3duZWRQbGF0Zm9ybUNvbnRleHQpLCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6
R1BVTWVtb3J5KTsKICAgICBtX2RhdGEtPm1faGRjID0gaGRjOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGJkNzZlZmJiYTlkMGU4OTdkM2QyODhlODVlOGQy
NDQ0Y2M0ZjhmNGUuLjFlYmI1YjA5ZDM4NTM3YzAxOTIyMGI5NDdkY2FkOTQ0ZDhlMTAxMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC00Niw3ICs0Niw3IEBA
IEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3Jh
cGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZv
cm1Db250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9
CiAKQEAgLTU1LDE0ICs1NSwxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dElt
cGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBb
cmVuZGVyVGFyZ2V0XShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRD4oY29udGV4dCwgcmVuZGVyVGFyZ2V0KTsKICAg
ICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29u
dGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKICAgICAsIG1fcGxhdGZv
cm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdy
YXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisg
ICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+
KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNz
Q29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250
ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKQEAgLTcwLDkgKzcwLDkgQEAgR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXgKIAogR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJRDJEMVJlbmRlclRhcmdldCog
cmVuZGVyVGFyZ2V0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJl
Y3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4
dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQp
KQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEPihyZW5kZXJUYXJnZXQpKQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1fb3du
ZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0Nv
bnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9w
cml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRm
b3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6
R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQ
cml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3Bs
YXRmb3JtQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCmluZGV4IDViZGU0Y2VkZjUxNmE5
MTc5YTZkM2QzYjNlMzNkMTM0ZWQ1YWI1MTEuLjFkODA0MjBjZjdlYzZjZDc3NWE2MmJhZWEyMmY5
OTA2MDdlYjRjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEdy
YXBoaWNzQ29udGV4dDo6V2luZG93c0JpdG1hcDo6fldpbmRvd3NCaXRtYXAoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0OjpXaW5kb3dzQml0bWFwPiBHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZVdpbmRvd3NCaXRtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXaW5kb3dzQml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXaW5kb3dzQml0bWFwPihtX2RhdGEtPm1faGRjLCBzaXplKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKaW5kZXggMDZjMTc0NTc5YTRiYzEz
MDkxZjM0YjU3OTRhYWE5Mjk5M2JiYmEyNC4uMzVhOWZmNjExMzUxYzMzYzcxNzRkOTJhMWZkY2Y0
NDcwZTgxYTg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcApAQCAtMTEyLDggKzExMiw4IEBA
IEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5vdGU6
IFRoaXMgcGxhY2VzIHRoZSBiaXRtYXBjb250ZXh0IGludG8gYSBsb2NrZWQgc3RhdGUgYmVjYXVz
ZSBvZiB0aGUgQmVnaW5EcmF3IGNhbGwgaW4gdGhlIGNvbnN0cnVjdG9yLgotICAgIG1fZGF0YS5w
bGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
PihiaXRtYXBDb250ZXh0LmdldCgpKTsKLSAgICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFw
aGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOworICAg
IG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVj
dDJEPihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlx
dWU8R3JhcGhpY3NDb250ZXh0PihtX2RhdGEucGxhdGZvcm1Db250ZXh0LmdldCgpLCBHcmFwaGlj
c0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCiAgICAg
c3VjY2VzcyA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3cuaAppbmRleCBlMDY2MzEwYTBhY2E3MWJkOWFjODFkZDE2YmEwZGIxNWE3ZDUxMWQ1
Li5kMjg1MzhhMTU4MjI4YjJjODllMTgzYzczOTE0ZTEyYjhhMTg5MTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVs
bHNjcmVlbldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKQEAgLTQ4LDYgKzQ4LDcgQEAg
Y2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCB7CiB9OwogCiBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
KE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqKTsKICAgICB+TWVkaWFQbGF5ZXJQ
cml2YXRlRnVsbHNjcmVlbldpbmRvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA1ODM4ZWMxNTdhMmM3YjcxNjNiNzE2ODJhNGViOGM4
MDM0ZTk2MzIxLi42ZDY0YWU5YTZlM2E0MTdmYjE0ZjEyMTY2ZjY4ZDNjOWE1NTI2NmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtODIs
NyArODIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246On5NZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0
cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtd
KE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgfQogfQpAQCAtMzAxLDcgKzMw
MSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6bWF4VGltZVNl
ZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCgpIGNvbnN0CiB7IAotICAg
IGF1dG8gcmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7Cisg
ICAgYXV0byByYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBp
ZiAobV9wcmVzZW50ZXIgJiYgbV9wcmVzZW50ZXItPm1heFRpbWVMb2FkZWQoKSA+IDApCiAgICAg
ICAgIHJhbmdlcy0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgTWVkaWFUaW1lOjpjcmVhdGVX
aXRoRG91YmxlKG1fcHJlc2VudGVyLT5tYXhUaW1lTG9hZGVkKCkpKTsKICAgICByZXR1cm4gcmFu
Z2VzOwpAQCAtODg4LDcgKzg4OCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVvUHJlc2VudGVyKE1lCiAgICAgbV9z
b3VyY2VSZWN0LmJvdHRvbSA9IDE7CiAgICAgbV9zb3VyY2VSZWN0LnJpZ2h0ID0gMTsKIAotICAg
IG1fcHJlc2VudGVyRW5naW5lID0gc3RkOjptYWtlX3VuaXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4o
KTsKKyAgICBtX3ByZXNlbnRlckVuZ2luZSA9IG1ha2VVbmlxdWU8RGlyZWN0M0RQcmVzZW50ZXI+
KCk7CiAgICAgaWYgKCFtX3ByZXNlbnRlckVuZ2luZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgKaW5kZXggOTBlOWI3MjE1
NzA4YWMyYTJlZmY3ZDRhNmFkZTE0N2VlZTI4ODQ2Ni4uYTIxNjYxMTBiMzgwMGYxNzY0NzE2NWMy
ZDAyYTBkYTllYTk1MTAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24uaApAQCAtNDcsNiArNDcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKE1l
ZGlhUGxheWVyKik7CiAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbigpOwpA
QCAtMTY4LDYgKzE2OSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
biBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgfTsKIAogICAg
IGNsYXNzIEFzeW5jQ2FsbGJhY2sgOiBwdWJsaWMgSU1GQXN5bmNDYWxsYmFjaywgcHVibGljIE1l
ZGlhUGxheWVyTGlzdGVuZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBwdWJsaWM6CiAgICAgICAgIEFzeW5jQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uKiwgYm9vbCBldmVudCk7CiAgICAgICAgIH5Bc3luY0NhbGxiYWNrKCk7CkBAIC0x
OTEsNiArMTkzLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZp
bmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICB0eXBlZGVmIERlcXVl
PENPTVB0cjxJTUZTYW1wbGU+PiBWaWRlb1NhbXBsZUxpc3Q7CiAKICAgICBjbGFzcyBWaWRlb1Nh
bXBsZVBvb2wgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
CiAgICAgICAgIFZpZGVvU2FtcGxlUG9vbCgpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+
VmlkZW9TYW1wbGVQb29sKCkgPSBkZWZhdWx0OwpAQCAtMjEyLDYgKzIxNSw3IEBAIGNsYXNzIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhCiAgICAgY2xhc3MgRGlyZWN0M0RQcmVzZW50ZXI7CiAKICAgICBjbGFz
cyBWaWRlb1NjaGVkdWxlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKICAgICAgICAgVmlkZW9TY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZp
cnR1YWwgflZpZGVvU2NoZWR1bGVyKCkgPSBkZWZhdWx0OwpAQCAtMjU3LDYgKzI2MSw3IEBAIGNs
YXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgfTsKIAogICAgIGNsYXNzIERpcmVjdDNEUHJlc2Vu
dGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAg
ICAgICBEaXJlY3QzRFByZXNlbnRlcigpOwogICAgICAgICB+RGlyZWN0M0RQcmVzZW50ZXIoKTsK
QEAgLTMxOSw2ICszMjQsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYQogICAgICAgICAsIHB1
YmxpYyBJTUZWaWRlb0Rpc3BsYXlDb250cm9sCiAgICAgICAgICwgcHVibGljIElNRkFzeW5jQ2Fs
bGJhY2sKICAgICAgICAgLCBwdWJsaWMgTWVkaWFQbGF5ZXJMaXN0ZW5lciB7CisgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQ3VzdG9tVmlkZW9Q
cmVzZW50ZXIoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKik7CiAgICAgICAgIH5D
dXN0b21WaWRlb1ByZXNlbnRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaAppbmRleCA2
ZmJlMmI1ZWQ3NWFiM2JhMDRlMzAyNTQ5Y2NlYjkxNjFhZjVjMDEzLi4xOTA1NDBlMDMzZDliN2Nj
OGM1NGI4YjFiZWY3NzY5MmJkNWY5NDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaApA
QCAtNDUsNiArNDUsNyBAQCBzdHJ1Y3QgU2hhZG93U3RhdGU7CiB9CiAKIGNsYXNzIFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCk7CiBwdWJsaWM6CiAgICAg
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQoSUQyRDFSZW5kZXJUYXJnZXQqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3Bw
CmluZGV4IDMzN2ZhZjM3OGRhNzk1NWJlYTYxMGFlYzkwNzU3OTY2ZDZjNDgyMDAuLjlkN2Q5MmU4
ZWFkOTZhMWJiZGZiZDFkOTJkYzk2NjIxYzZjNDJmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXS0NBSW1hZ2VRdWV1ZVBy
aXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJldGFp
blB0cjxDQUltYWdlUXVldWVSZWY+IG1faW1hZ2VRdWV1ZTsKIH07CkBAIC01MCwxMyArNTEsMTMg
QEAgc3RhdGljIHZvaWQgV0tDQUltYWdlUXVldWVSZWxlYXNlKENBSW1hZ2VRdWV1ZVJlZiBpcSkK
IH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKHVpbnQzMl90IHdpZHRoLCB1aW50
MzJfdCBoZWlnaHQsIHVpbnQzMl90IGNhcGFjaXR5KQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFr
ZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQorICAgIDogbV9wcml2YXRlKG1ha2VV
bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQogewogICAgIG1fcHJpdmF0ZS0+bV9pbWFn
ZVF1ZXVlID0gYWRvcHRDRih3a0NBSW1hZ2VRdWV1ZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCBjYXBh
Y2l0eSkpOwogfQogCiBXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUoY29uc3QgV0tDQUlt
YWdlUXVldWUmIG8pCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VR
dWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1
ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBvLm1fcHJpdmF0
ZS0+bV9pbWFnZVF1ZXVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwCmluZGV4IDcxYTAwYTMwYzBmYWVkZDliNDBlYzRmZmFkZjE3ODYzOGYyNWI4
NTQuLjQyMjUyZDM0YjU0ZmU2YzJjMjZiNTIyYzY2MGU4NjJmMDU2ZWYwOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTQzLDI0ICs0Mywy
NCBAQCBlbnVtIENsaXBib2FyZERhdGFUeXBlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIkNMSVBCT0FSRCIpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIlBSSU1BUlkiKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiUFJJTUFSWSIpOwogfQogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVi
b2FyZD4oU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
c3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFnRGF0YS5wbGF0Zm9y
bURhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBs
YXRmb3JtRGF0YSgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggNDkwMzcxYWQ4OWVmMmU3OTZlMzQwMWFh
YzFkYmI4MDZlYTk2NmViMC4uYWY4ZmYzNDI0NmJjOTcyZjFhNWZmNzM3Zjk5Mjk4MDlmYjY2OWIw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcApAQCAtMjY2LDYgKzI2Niw3IEBAIFZlY3RvcjxHZGtBdG9tPiBQYXN0ZWJvYXJkSGVscGVy
Ojpkcm9wQXRvbXNGb3JDb250ZXh0KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnCiBzdGF0aWMg
U2VsZWN0aW9uRGF0YSogc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbjsKIAogc3RydWN0IENsaXBi
b2FyZFNldERhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBD
bGlwYm9hcmRTZXREYXRhKFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKQogICAgICAgICA6IHNlbGVjdGlvbkRh
dGEoc2VsZWN0aW9uKQogICAgICAgICAsIHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjayhXVEZNb3Zl
KHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykpCkBAIC0zMDAsNyArMzAxLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJv
YXJkLCBjb25zdCBTZWwKIAogICAgIGlmIChudW1iZXJPZlRhcmdldHMgPiAwICYmIHRhYmxlKSB7
CiAgICAgICAgIFNldEZvclNjb3BlPFNlbGVjdGlvbkRhdGEqPiBjaGFuZ2Uoc2V0dGluZ0NsaXBi
b2FyZFNlbGVjdGlvbiwgY29uc3RfY2FzdDxTZWxlY3Rpb25EYXRhKj4oJnNlbGVjdGlvbikpOwot
ICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBib2FyZFNldERhdGE+KCpz
ZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBXVEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVk
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNl
dHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQp
KTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YShjbGlwYm9hcmQsIHRh
YmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2ssIGNsZWFy
Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgZGF0YS5nZXQoKSkpIHsKICAgICAgICAgICAgIGd0
a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShjbGlwYm9hcmQsIG51bGxwdHIsIDApOwogICAgICAg
ICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEoKSBzdWNjZWVkcyBjbGVh
ckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sgdGFrZXMgdGhlIG93bmVyc2hpcCBvZiBkYXRhLCBz
byB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
bmRlclRoZW1lR2FkZ2V0LmNwcAppbmRleCBiZGNjOTllODU5ZDQ5NzUwNzhmZjNjNWUyZWJjMzg1
ZDliOTViOTUyLi43M2UwNzU4YTZlZGQxZTE5MzIzMTA4M2Y4OWE3ZTdmZGYyMGQxMzc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAK
QEAgLTM1LDIwICszNSwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVHYWRnZXQ+IFJl
bmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoY29uc3QgUmVuZGVyVGhlbWVHYQogewogICAgIHN3aXRj
aCAoaW5mby50eXBlKSB7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJp
YzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGlu
Zm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsK
ICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpUZXh0RmllbGQ6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBw
YXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlv
bik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6UmFkaW86CiAgICAgY2FzZSBS
ZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6Q2hlY2s6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBw
b3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2Fk
Z2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJU
aGVtZUdhZGdldDo6VHlwZTo6QXJyb3c6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9u
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVBcnJvd0dhZGdldD4oaW5m
bywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRn
ZXQ6OlR5cGU6Okljb246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUljb25HYWRnZXQ+KGluZm8sIHBhcmVudCwg
c2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpT
Y3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Ny
b2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJl
bnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlw
ZTo6QnV0dG9uOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1
dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBz
aWJsaW5ncywgcG9zaXRpb24pOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAK
aW5kZXggMDVkMTJkZDllYWZiZWYwMmE0NTljYTUyNzY0MTdhNWI5YjBlODk3Ni4uY2E2ZWQ5MThh
NTAzM2UyOTc2ZGI4NGQ4OWMyMDQ4ODcwMGYwMmJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCkBAIC00Miw0OSArNDIsNDkgQEAg
UmVuZGVyVGhlbWVXaWRnZXQmIFJlbmRlclRoZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZShUeXBlIHdp
ZGdldFR5cGUpCiAgICAgYXV0byBhZGRSZXN1bHQgPSB3aWRnZXRNYXAoKS5lbnN1cmUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHdpZGdldFR5cGUpLCBbd2lkZ2V0VHlwZV0oKSAtPiBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyVGhlbWVXaWRnZXQ+IHsKICAgICAgICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFy
UmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNj
cm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6
TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNj
cm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6
TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRp
Y2FsU2Nyb2xsYmFyTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1l
U2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3Np
dGlvbjo6TGVmdCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNj
cm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6
TW9kZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQp
OwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xs
YmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3Jv
bGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6
TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNj
cm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVy
dGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNB
TCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CiAgICAgICAgIGNhc2Ug
UmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9yTGVmdDoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihH
VEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRp
Y2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJ
RU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3Is
IFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNjcm9sbEluZGljYXRvcjoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFy
PihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6
OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNj
cm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpDaGVja0J1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6Q2hlY2sp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+
KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7CiAgICAgICAgIGNhc2UgUmVu
ZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlJhZGlvQnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xl
QnV0dG9uOjpUeXBlOjpSYWRpbyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlv
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRo
ZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Ok5vKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0dG9uRGVmYXVsdDoKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVt
ZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6Q29tYm9Cb3g6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUNvbWJvQm94PigpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVDb21ib0JveD4oKTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6RW50cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6U2VsZWN0ZWRFbnRyeToKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJlbmRlclRoZW1lRW50cnk6OlNlbGVjdGVkOjpZZXMp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oUmVuZGVy
VGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6OlNlYXJjaEVudHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVX
aWRnZXQ6OlR5cGU6OlNwaW5CdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVX
aWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2xpZGVyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVO
VEFUSU9OX1ZFUlRJQ0FMKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
SG9yaXpvbnRhbFNsaWRlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CisgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX0hP
UklaT05UQUwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpQcm9ncmVz
c0JhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lUHJv
Z3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVybWluYXRlKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRl
clRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVybWluYXRlKTsKICAgICAgICAgY2FzZSBSZW5k
ZXJUaGVtZVdpZGdldDo6VHlwZTo6SW5kZXRlcm1pbmF0ZVByb2dyZXNzQmFyOgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVy
VGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5kZXRlcm1pbmF0ZSk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNz
QmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6TGlzdFZpZXc6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZUxpc3RWaWV3PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVMaXN0Vmlldz4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlw
ZTo6SWNvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1l
SWNvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lSWNvbj4o
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6V2luZG93OgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVXaW5kb3c+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4oKTsKICAgICAgICAg
fQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Ny
b2xsYmFyKEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBNb2RlIG1vZGUKICAgICBpbmZvLnR5
cGUgPSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJpYzsKICAgICBpbmZvLm5hbWUgPSAi
Y29udGVudHMiOwogICAgIGluZm8uY2xhc3NMaXN0LmNsZWFyKCk7Ci0gICAgbV9jb250ZW50cyA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRB
VElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1fc2Nyb2xsYmFyLmdldCgpKTsKKyAgICBtX2NvbnRl
bnRzID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFU
SU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIuZ2V0KCkpOwogICAgIGluZm8ubmFt
ZSA9ICJzbGlkZXIiOwogICAgIG1fc2xpZGVyID0gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShp
bmZvLCBtX2NvbnRlbnRzLT5jaGlsZChtX3Ryb3VnaFBvc2l0aW9uKSk7CiB9CkBAIC0xOTcsNyAr
MTk3LDcgQEAgUmVuZGVyVGhlbWVDb21ib0JveDo6UmVuZGVyVGhlbWVDb21ib0JveCgpCiAgICAg
fTsKICAgICBpbmZvLm5hbWUgPSAiYm94IjsKICAgICBpbmZvLmNsYXNzTGlzdCA9IHsgImhvcml6
b250YWwiLCAibGlua2VkIiB9OwotICAgIG1fYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVu
LCBtX2NvbWJvQm94LmdldCgpKTsKKyAgICBtX2JveCA9IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVC
b3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBjaGlsZHJlbiwgbV9j
b21ib0JveC5nZXQoKSk7CiAgICAgUmVuZGVyVGhlbWVHYWRnZXQqIGJ1dHRvbiA9IG1fYm94LT5j
aGlsZCgwKTsKICAgICBpbmZvLmNsYXNzTGlzdC5yZW1vdmVMYXN0KCk7CiAgICAgbV9idXR0b25C
b3ggPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGluZm8sIGJ1dHRvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDg0MDdjMTEwMWRkZDZkYjZlMzc4ZGVmY2IzYWI4MjZiZjcy
NjQ1NGQuLjc4Njk3ZWIwMDAwZjdmN2I4MmE3ZDBlY2Y1Zjk4NWExZTkyODljMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgQk1QSW1hZ2VEZWNv
ZGVyOjpkZWNvZGVIZWxwZXIoYm9vbCBvbmx5U2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwg
ZmFsc2UpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRo
aXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwgZmFsc2UpOwogICAgICAgICBtX3Jl
YWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCA3YmE3ZWQ5MTAxY2UyNWE5YmY2ZTIzMTA4N2JmMGJjMTE0Y2MyMmQ2Li40
ZjM0ODdlMzM0NzY0MDU0NzRjZjg2YjVjNjA2ZDJjMTk4OGM3Y2JhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5LCBib29sIGFsbERhdGFS
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpIHsKLSAgICAgICAgbV9yZWFk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9y
ZWFkZXIgPSBtYWtlVW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsKICAgICAgICAgbV9yZWFk
ZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
Y3BwCmluZGV4IDFjY2E1ZTU5ZWViMzUxYjA1OGEyMWRiMTM0ZjY0Mzc5MWU1MDc3Y2EuLmQ3NzE4
NmVhOTczOWJkZmIyYzU2MjI4ZWU0Y2Y1ZTg4MjhkODg1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIGJvb2wgR0lGRnJhbWVDb250ZXh0OjpkZWNvZGUo
Y29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29yZTo6CiAgICAg
ICAgIGlmICghaXNEYXRhU2l6ZURlZmluZWQoKSB8fCAhaXNIZWFkZXJEZWZpbmVkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBtX2x6d0NvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNsaWVudCwgdGhpcyk7CisgICAgICAgIG1fbHp3Q29udGV4
dCA9IG1ha2VVbmlxdWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlzKTsKICAgICAgICAgaWYg
KCFtX2x6d0NvbnRleHQtPnByZXBhcmVUb0RlY29kZSgpKSB7CiAgICAgICAgICAgICBtX2x6d0Nv
bnRleHQgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzg2LDcgKzc4
Niw3IEBAIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OnNldFJlbWFpbmluZ0J5dGVzKHNpemVfdCByZW1h
aW5pbmdCeXRlcykKIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OmFkZEZyYW1lSWZOZWNlc3NhcnkoKQog
ewogICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5KCkgfHwgbV9mcmFtZXMubGFzdCgpLT5pc0NvbXBs
ZXRlKCkpCi0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEdJRkZyYW1l
Q29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7CisgICAgICAgIG1fZnJhbWVzLmFwcGVuZChtYWtl
VW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7CiB9CiAKIC8vIEZJWE1F
OiBNb3ZlIHRoaXMgbWV0aG9kIHRvIGNsb3NlIHRvIGRvTFpXKCkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwCmluZGV4IDE4NzBiYjE2MGI4NDk0OGYwYjU5ZGU0NTExNjM2YmE0YzBmMzhmMmUu
LmZmNmExYzg3YWU2ZjA1YjQ5Y2NjMTI4YWJlMDVjMzAzZDZlZWJhZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBJQ09JbWFnZURlY29kZXI6
OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBo
YXZlIGFscmVhZHkgc2l6ZWQgbV9mcmFtZUJ1ZmZlckNhY2hlIGJlZm9yZSB0aGlzLCBhbmQKICAg
ICAgICAgICAgIC8vIHdlIG11c3Qgbm90IHJlc2l6ZSBpdCBhZ2FpbiBsYXRlciAoc2VlIGNhdXRp
b24gaW4gZnJhbWVDb3VudCgpKS4KICAgICAgICAgICAgIEFTU0VSVChtX2ZyYW1lQnVmZmVyQ2Fj
aGUuc2l6ZSgpID09IG1fZGlyRW50cmllcy5zaXplKCkpOwotICAgICAgICAgICAgbV9ibXBSZWFk
ZXJzW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOworICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2lu
ZGV4XSA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VP
ZmZzZXQsIDAsIHRydWUpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0RGF0
YShtX2RhdGEuZ2V0KCkpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4XS0+c2V0QnVm
ZmVyKCZtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZWJmZTQ1MzBmNzE4NTMwNzJlM2E1M2QyZmNjNjYwZTdh
MDk2Y2Y0My4uMGMwNTQ5YjVhM2VlMDRhZjI5Y2E3ZDYwNjAzNWZjZmU2MTc0ODUyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBKUEVH
SW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3Jl
YWRlciA9IG1ha2VVbmlxdWU8SlBFR0ltYWdlUmVhZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdl
IGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0
YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBjMThhMzliNTkxMzNhMzE4ZjE1MTA1ODFlOGY5MWViZGQ3Njg3OWFiLi42MmNiOWIy
MmEwMWYyNmU5ZjJjZDQxZGVhMzgxYjM2MzY4OTdlZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUo
Ym9vbCBvbmx5U2l6ZSwgdW5zaWduZWQgaGFsdEF0RnJhbWUsIGJvb2wgYWxsRGF0YVJlCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0gICAgICAgIG1fcmVhZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0g
bWFrZVVuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CiAKICAgICAvLyBJZiB3ZSBjb3VsZG4n
dCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29k
aW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IDIwOWY4OGY0N2EzYjdjZGMwMTQzZGU5MmUyNGJhZGRm
OTY2NGI1ZjQuLmNhZTNkY2YxNjQ3OTZjZWVjYjY4YjI0NDhmMTEzM2MxMGVjOWMyMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQpAQCAtNjks
NyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBMZWdhY3lUaWxlQ2FjaGU6OkxlZ2FjeVRp
bGVDYWNoZShXQUtXaW5kb3cqIHdpbmRvdykKICAgICA6IG1fd2luZG93KHdpbmRvdykKICAgICAs
IG1fdG9tYnN0b25lKGFkb3B0TlMoW1tMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmUgYWxsb2NdIGlu
aXRdKSkKLSAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lU
aWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQorICAgICwgbV96b29tZWRPdXRUaWxlR3JpZCht
YWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSkpCiAgICAgLCBtX3Rp
bGVDcmVhdGlvblRpbWVyKCp0aGlzLCAmTGVnYWN5VGlsZUNhY2hlOjp0aWxlQ3JlYXRpb25UaW1l
ckZpcmVkKQogewogICAgIFtob3N0TGF5ZXIoKSBpbnNlcnRTdWJsYXllcjptX3pvb21lZE91dFRp
bGVHcmlkLT50aWxlSG9zdExheWVyKCkgYXRJbmRleDowXTsKQEAgLTIzNiw3ICsyMzYsNyBAQCB2
b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQogCiAgICAgaWYgKG1fY3Vy
cmVudFNjYWxlICE9IG1fem9vbWVkT3V0VGlsZUdyaWQtPnNjYWxlKCkpIHsKICAgICAgICAgaWYg
KCFtX3pvb21lZEluVGlsZUdyaWQpIHsKLSAgICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKKyAg
ICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9IG1ha2VVbmlxdWU8TGVnYWN5VGlsZUdyaWQ+
KCp0aGlzLCBtX3RpbGVTaXplKTsKICAgICAgICAgICAgIFtob3N0TGF5ZXIoKSBhZGRTdWJsYXll
cjptX3pvb21lZEluVGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKV07CiAgICAgICAgICAgICBob3N0
TGF5ZXJTaXplQ2hhbmdlZCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlR3JpZC5oCmluZGV4IDY2NDdlYzNhMzZkMTU4Nzg2OTRmMDdkMDJiMWZi
MWU4YzM1MGQ1M2YuLjMwZWY5ZmMzMWM4N2YxMWJmYWZlNGNhNmE5ZWE4MTI0ZDVmYzNhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oCkBAIC00Niw2
ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVRpbGVHcmlkVGlsZTsK
IAogY2xhc3MgTGVnYWN5VGlsZUdyaWQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHR5cGVkZWYgSW50UG9pbnQgVGlsZUluZGV4OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE5MWFjNzY5NjIxNTEyMTUz
ZGJkY2IwNzhkZDY2ZjQ2NTUzYmMyMWQuLjAyNzFiOTNlNzA1Y2UyYzQyZDYzMmZlMmRiMjlhYTQ2
ZTgzNmQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCkBAIC02NiwxMiArNjYsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJh
Z0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9h
cmQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFt
ZSgpKTsKIH0KIAogI2VuZGlmCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKCkp
OwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNr
TG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXgg
YTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEzMWNlNjQ2OTAyNTY4NS4uYzJiNWEwYjA4YmRmNzVl
OGMwMWNkOWJkMmQ1MWMzMTQ5MzA1ZjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tCkBAIC04NCw3ICs4NCw3IEBAIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJl
Z2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKnVybCwgTlNTdHJpbmcKICAg
ICBpZiAoW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0
OnVwZGF0ZWRNSU1FVHlwZS5nZXQoKV0pIHsKICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB1
dGkgPSBhZG9wdE5TKFBBTDo6c29mdExpbmtfUXVpY2tMb29rX1FMVHlwZUNvcHlVVElGb3JVUkxB
bmRNaW1lVHlwZSh1cmwsIHVwZGF0ZWRNSU1FVHlwZS5nZXQoKSkpOwogCi0gICAgICAgIGF1dG8g
Y29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGku
Z2V0KCkpOworICAgICAgICBhdXRvIGNvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZl
cnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZXZpZXdS
ZXF1ZXN0ID0gY29udmVydGVyLT5wcmV2aWV3UmVxdWVzdCgpOwogCiAgICAgICAgIC8vIFdlIHVz
ZSBbcmVxdWVzdCBVUkxdIGhlcmUgaW5zdGVhZCBvZiB1cmwgc2luY2UgaXQgd2lsbCBiZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MubW0KaW5kZXggMTA3Yzc3Yzc1M2VhYjdkOTJkYTI5NDg3Y2E2ZjY1ZjgwNzA0ODIxMy4u
NmQ5Y2NlMTViODc0ZjE1ZjE1NDg3NWVhMGVlNmI5ZjEwMzVhODM2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1t
CkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hCiAgICAgaWYgKCFNZWRp
YVBsYXllckxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TPihjbGllbnQpOwogfQog
CiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1v
dGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQppbmRleCAwMWYwYTliYjIwYTI0OGI2OTk4
ODU2NDcwYWVlMzc0YTk4Y2ZhNTFjLi5lZDYzMmVhNWUzZjU1OTdlOWQ3NmZkMmU1NTY5NTYxZmU2
YzRjMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5p
bWF0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1h
dG9ySU9TLm1tCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFi
bGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9y
SU9TOjpTY3JvbGxBbmltYXRvcklPUyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQ
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5j
cHAKaW5kZXggMDU0M2VkNWU5ZmM5ZmNmZTNiYmFhNDAzNTVlNDA3MmY5ZjNjM2Y0MC4uZjhhNjFl
YzcwYzBjMWE0Y2QzNzdmMGU3Y2Q2NzZlZmI5ZGU1YmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oKTsKIH0KIAogUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDUxNTIwZGNiYmVhNTkyMTg1YzMyNjcw
MmNiYTY5ZmU4OGI0ZDRkZGUuLjhlYjE1Y2Y4ODUyZDk4NTc0NDdlMDU5YzM4YWNhZWJhMjM0MTVk
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBA
IC0xMDAsNyArMTAwLDcgQEAgUGFzdGVib2FyZDo6UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvbWkKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewogICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFsUGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogfQogCkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgp
CiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9hcmQpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVi
b2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1l
cygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQppbmRleCAwNWNjMDg5NTdlMWQ1MDEyNGRk
NjMyZTJhNGM4OTIxMjk4OTY5NjExLi4xYWEyY2Q4MDEzMmYyYzIxZWUzOGI5ZmZiZGI4MzM3M2Ji
ZjRjMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWMubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21t
YW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+
KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFj
PihjbGllbnQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3Vw
cG9ydGVkQ29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tCmluZGV4IGE4MzE3NTEyMmVjMmU0YjZiNmRlNTFiZTZkZjUyNjRiNDFh
MWY4YzQuLjY4NjBlMzNjM2EzYjIxNTYzMDVmYjMxYWY0MjdkYzQ5MDIzNTg3YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTY5
Nyw3ICs2OTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JN
YWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRv
ck1hYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvck1hYzo6U2Nyb2xsQW5p
bWF0b3JNYWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDFiOWRjNTM0NWI4ODFlYjM2ZDk2ZmNlMzU4
MmRmMGU1NGExMzg1YmEuLmUyNDQ1YmM4MjNmODZlMDU1YjBlNTc4NzdkNmNmNTMxYTRmZmNjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKICAgICBpZiAoIXdyaXRlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlv
VHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lkKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgV1RG
TW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJZCkpOwogfQogCiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYgd3JpdGVyLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQs
IFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5oCmluZGV4IGQ0YWRiMTUyYmQ0YmFlZjdlZjdiZjA1NWY2ZDlhODNkODY3ZTY3ZWIuLmEyMmY1
NzFiYzUxNjExZjYxNzQ0OTEwNGNmNWZjODYwZTUyZTlhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbCBmaW5hbCA6IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJpdmF0ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZh
dGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291
cmNlLmNwcAppbmRleCBkYjk0ZmRhZjgzYThhYmQ2N2FmY2ZkNmVhMzY5ZmFhODljNDZjM2UyLi41
OWFiMzg0MGZkNzM2Y2ExNDUwMTZjN2Y2NjBlY2EzYjA5MDMyNDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcApAQCAtOTEsMTQgKzkx
LDE0IEBAIEF1ZGlvQ2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6
ZmFjdG9yeSgpCiAKIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVkaW9D
YXB0dXJlU291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNo
U2FsdCkKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6QXVkaW8sIFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZp
Y2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjpt
YWtlX3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwgbV9jYXB0
dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KGRldmljZSkpCiB7CiAgICAg
aW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNv
dXJjZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJp
bmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2Uo
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFdURk1vdmUoZGV2aWNlSUQpLCBXVEZN
b3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtl
X3VuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPigpKQorICAgICwgbV9jYXB0dXJlcihtYWtl
VW5pcXVlPEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJl
YW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKaW5kZXgg
OTUzZjNhOGEwZTRmNmEwNjJiOWI5NGE4ZjQxNTFhNDlmMWE0MzAxZC4uMzQxNTQ5MjUxZWQ1NzFi
NzVlZjVkMGMyZGVkZjFlNzdiNzUyMzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRp
b0RhdGEuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHU3RyZWFtZXJBdWRpb0RhdGEgOiBwdWJsaWMg
UGxhdGZvcm1BdWRpb0RhdGEgeworY2xhc3MgR1N0cmVhbWVyQXVkaW9EYXRhIGZpbmFsIDogcHVi
bGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJBdWRpb0RhdGEo
R1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBHc3RBdWRpb0luZm8gaW5mbykKICAgICAgICAg
OiBtX3NhbXBsZShXVEZNb3ZlKHNhbXBsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJl
ci5oCmluZGV4IGJiZTVhZTczOTU0YWU1M2NjMjE2NTc5M2VjMDk2YTg4NzkyYWQ0ZjIuLmY5MmE2
YTliMTI2MTEwMGYxOTM0NWY0ZWNhMjE5NGJmZTFiOGEzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDYXB0dXJlci5oCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdTdHJlYW1lckNhcHR1cmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBHU3RyZWFtZXJDYXB0dXJlcihHU3RyZWFtZXJDYXB0dXJlRGV2aWNlLCBH
UmVmUHRyPEdzdENhcHM+KTsKICAgICBHU3RyZWFtZXJDYXB0dXJlcihjb25zdCBjaGFyKiBzb3Vy
Y2VGYWN0b3J5LCBHUmVmUHRyPEdzdENhcHM+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IGIzYWYzNWFmODI0ODhkZDRjZjgyMWNk
M2VlYWU2M2Q5Y2YxYWNkODQuLmYzZTUxODZiZjY2ODc4MWVmYjEzOTVmZTg1MWIzNDMyM2M0MmEz
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIEdzdFN0cmVhbSogd2Via2l0TWVkaWFTdHJlYW1OZXco
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHRyYWNrKQogCiBjbGFzcyBXZWJLaXRNZWRpYVN0cmVh
bVRyYWNrT2JzZXJ2ZXIKICAgICA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2Jz
ZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgfldlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcigpIHsgfTsKICAgICBXZWJLaXRNZWRp
YVN0cmVhbVRyYWNrT2JzZXJ2ZXIoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNyYykKQEAgLTE0Myw2
ICsxNDQsNyBAQCBjbGFzcyBXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIKIAogY2xhc3Mg
V2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcgogICAgIDogcHVibGljIE1lZGlhU3RyZWFtUHJpdmF0
ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfldlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXIoKSB7IH07CiAgICAgV2ViS2l0TWVk
aWFTdHJlYW1PYnNlcnZlcihXZWJLaXRNZWRpYVN0cmVhbVNyYyogc3JjKQpAQCAtMzUxLDggKzM1
Myw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2NsYXNzX2luaXQoV2Vi
S2l0TWVkaWFTdHJlYW1TcmNDbGFzcyoga2xhc3MpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRp
YV9zdHJlYW1fc3JjX2luaXQoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYpCiB7Ci0gICAgc2Vs
Zi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRNZWRp
YVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOwotICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOwor
ICAgIHNlbGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0TWVk
aWFTdHJlYW1UcmFja09ic2VydmVyPihzZWxmKTsKKyAgICBzZWxmLT5tZWRpYVN0cmVhbU9ic2Vy
dmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyPihzZWxmKTsKICAgICBz
ZWxmLT5mbG93Q29tYmluZXIgPSBnc3RfZmxvd19jb21iaW5lcl9uZXcoKTsKICAgICBzZWxmLT5m
aXJzdEF1ZGlvQnVmZmVyUHRzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgICBzZWxmLT5maXJz
dEZyYW1lUHRzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggZTVkOWIwZTAyNzZlZGRhNWRi
ZDUyMGJjMTBmMzUxODBkMDE1ZDY5Yi4uOTdiZTFmMTJmYmIyMmRjMzU4Yzk5YzgzOWY5ODFmMTY1
NmE4ZTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZS5jcHAKQEAgLTEyNywxNCArMTI3LDE0IEBAIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYg
R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpkaXNwbGF5RmFjdG9yeSgpCiAKIEdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYm
IGRldmljZUlELCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIg
KnNvdXJjZV9mYWN0b3J5KQogICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92
ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9j
YXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9m
YWN0b3J5KSkKKyAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1
cmVyPihzb3VyY2VfZmFjdG9yeSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7
CiB9CiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkK
ICAgICA6IFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0
ZW50SWQoKSB9LCBTdHJpbmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkK
LSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVy
PihkZXZpY2UpKQorICAgICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2Fw
dHVyZXI+KGRldmljZSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaAppbmRl
eCBlNGQ1MDhlMzE3OWFjNDdiZjFkMTBmNGYyODdjNTQ3YmMyNTYwMDJhLi5lZmRhMjliZTM5NzE4
YmJhNzkxMzQxOGNjNzNlYjlhZDM2ODRmOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9y
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9H
U3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeSA6IHB1Ymxp
YyB3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkoKTsKICAgICBz
dGF0aWMgYm9vbCBuZXdTb3VyY2UoU3RyaW5nIHRyYWNrSWQsIEdzdEVsZW1lbnQgKnNvdXJjZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5j
cHAKaW5kZXggNjk5NWM2MDJjYjE3NDQ3ZmE3NDFkMzlkNDQ5NGMzNTYxZGMxYmI4Mi4uODM1ODFl
ODVhMzk2MmQ5N2UwMTc0M2IxMGU1NmNlYWExNTFjZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rl
ckZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcApAQCAtNjAsNiArNjAsNyBA
QCBHU1RfREVCVUdfQ0FURUdPUlkod2Via2l0X3dlYnJ0Y2VuY19kZWJ1Zyk7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lclZpZGVvRW5jb2RlciA6IHB1YmxpYyB3ZWJydGM6
OlZpZGVvRW5jb2RlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgR1N0cmVhbWVyVmlkZW9FbmNvZGVyKGNvbnN0IHdlYnJ0Yzo6U2RwVmlkZW9Gb3JtYXQmKQog
ICAgICAgICA6IG1fZmlyc3RGcmFtZVB0cyhHU1RfQ0xPQ0tfVElNRV9OT05FKQpAQCAtNTEyLDE0
ICs1MTMsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyPiBHU3RyZWFt
ZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVhdGVWaWRlb0UKICAgICAgICAgZ19vYmplY3RfZ2V0
KHdlYnJ0Y2VuY29kZXIuZ2V0KCksICJlbmNvZGVyIiwgJmVuY29kZXIub3V0UHRyKCksIE5VTEwp
OwogCiAgICAgICAgIGlmIChlbmNvZGVyKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEdTdHJlYW1lclZQOEVuY29kZXI+KGZvcm1hdCk7CiAKICAgICAgICAgR1NUX0lO
Rk8oIlVzaW5nIFZQOCBFbmNvZGVyIGZyb20gTGliV2ViUlRDLiIpOwotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTx3ZWJydGM6OkxpYnZweFZwOEVuY29kZXI+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx3ZWJydGM6OkxpYnZweFZwOEVu
Y29kZXI+KCk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdC5uYW1lID09IGNyaWNrZXQ6OmtIMjY0
Q29kZWNOYW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIMjY0
RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVySDI2
NEVuY29kZXI+KGZvcm1hdCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJW
aWRlb0VuY29kZXJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oCmluZGV4IDc5NmEyMGY5
NDVlM2E5NTE5OGVjZTEwZmU3MGQ5YjUyZjcyMzNkMTEuLjE0ODNhMmIyMGIzNTE1YzcxYjdhMGM3
YTUyMjYyNmU5ZmY1MzkyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZp
ZGVvRW5jb2RlckZhY3RvcnkuaApAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5IGZpbmFsIDogcHVibGljIHdl
YnJ0Yzo6VmlkZW9FbmNvZGVyRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRFRNRlNlbmRlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCmluZGV4IGRjNmY4ZjNm
YjA1N2ZiNTQwZDkwYzAwMjI2OGE5OTc3NDQxMDI3N2YuLjRhMDYxZmNjOTUzYjEzZDU4M2JhZTU1
NDUxNTViY2UwOGRmOGY5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1G
U2VuZGVyQmFja2VuZC5oCkBAIC00MCw2ICs0MCw3IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJT
X0VORAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMaWJXZWJSVENEVE1GU2VuZGVyQmFj
a2VuZCBmaW5hbCA6IHB1YmxpYyBSVENEVE1GU2VuZGVyQmFja2VuZCwgcHJpdmF0ZSB3ZWJydGM6
OkR0bWZTZW5kZXJPYnNlcnZlckludGVyZmFjZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPExpYldl
YlJUQ0RUTUZTZW5kZXJCYWNrZW5kPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQocnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6RHRtZlNlbmRlckludGVyZmFjZT4mJik7CiAgICAgfkxpYldlYlJU
Q0RUTUZTZW5kZXJCYWNrZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNw
cAppbmRleCAyMDdhYjc4YTlhMmJiZTQwYTBlZDRkYTY5NTY5YWVkYjEyMjk5ZTIwLi43NDUzM2M1
ZmE0ZGYwZDRlNWE2NGQ3NWNlNjI3YjMyNDJjNDZiODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5jcHAKQEAgLTc5LDkgKzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpT
b2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYKIH0KIAogY2xhc3MgQmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQm
IG5ldHdvcmtUaHJlYWQpCi0gICAgICAgIDogbV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8
cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAg
OiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRj
OjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAg
fQogCkBAIC0xNzksNyArMTgwLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0
aW9uRmFjdG9yeUFuZFRocmVhZHMoUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1
bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNT
RVJUKHJlc3VsdCk7CiAKLSAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFu
ZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBtYWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9k
dWxlPigpOwogfQogCiBzdGF0aWMgaW5saW5lIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVh
ZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkKQEAgLTI4OCwxMCArMjg5LDEwIEBAIHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQ
cm92aWRlcjo6Y3JlYXRlUGVlCiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0
aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsK
IAogICAgIGlmICghZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZh
Y3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJh
c2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtN
YW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdv
cmtNYW5hZ2VyPigpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRG
YWN0b3J5KQotICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0g
c3RkOjptYWtlX3VuaXF1ZTxCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhy
ZWFkcy5uZXR3b3JrVGhyZWFkKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29j
a2V0RmFjdG9yeSA9IG1ha2VVbmlxdWU8QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9y
eUFuZFRocmVhZHMubmV0d29ya1RocmVhZCk7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0
U29ja2V0RmFjdG9yeS0+c2V0RGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJs
ZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKTsKIAogICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVj
dGlvbihvYnNlcnZlciwgKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9y
eUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwg
bnVsbHB0cik7CkBAIC0zMTQsNyArMzE1LDcgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxv
Y2F0b3I7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9p
ZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgewotICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29y
a01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0b3J5KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRB
bGxvY2F0b3IgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNp
Y1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwog
ICAgICAgICBpZiAoIW1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAg
ICAgICAgICAgIGJhc2ljUG9ydEFsbG9jYXRvci0+c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRv
ci0+ZmxhZ3MoKSB8IGNyaWNrZXQ6OlBPUlRBTExPQ0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1F
UkFUSU9OKTsKICAgICAgICAgcG9ydEFsbG9jYXRvciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2Nh
dG9yKTsKQEAgLTMzNSw3ICszMzYsNyBAQCBydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBM
aWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNhdGVHZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZh
Y3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGljRmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3Jr
VGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0
aWZpY2F0ZUdlbmVyYXRvcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVH
ZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+
KGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVh
ZHMubmV0d29ya1RocmVhZC5nZXQoKSk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRp
ZmljYXRlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFk
LmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJl
dHVybiAqZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4IGJkZjA5MDA0MGM5MDY1N2Y0OWYwY2U0YWUy
ODA3NzM4YTFlOGJlNzkuLjdhYThkZTJlYjNhNGM1NTVlMDlhNjBkN2Q3YzNhZDgzMTliMTE4ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBAIC02NCw2ICs2NCw3IEBAIHN0
cnVjdCBSVENSdHBDYXBhYmlsaXRpZXM7CiBlbnVtIGNsYXNzIE1ETlNSZWdpc3RlckVycm9yIHsg
Tm90SW1wbGVtZW50ZWQsIEJhZFBhcmFtZXRlciwgRE5TU0QsIEludGVybmFsLCBUaW1lb3V0IH07
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgVW5pcXVlUmVmPExpYldlYlJU
Q1Byb3ZpZGVyPiBjcmVhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ckNvY29hLmgKaW5kZXggNzcyYTM5NWYwY2JiNDNlNzMwNzUwY2NiOTYzNjE2MWNhYTM0MWM2My4u
ZDNjMzgzOTVjMDc3ZjM0NjA0YjViYjBmNGI0M2FlMTEwMGNkZjIzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oCkBAIC0zNyw3ICszNyw2IEBAIGNsYXNzIFZp
ZGVvRW5jb2RlckZhY3Rvcnk7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyQ29jb2EgOiBwdWJsaWMgTGliV2ViUlRDUHJvdmlkZXIg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ1By
b3ZpZGVyQ29jb2EoKSA9IGRlZmF1bHQ7CiAgICAgfkxpYldlYlJUQ1Byb3ZpZGVyQ29jb2EoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCmlu
ZGV4IDE1ZTJhODc4OWMwN2ZiMGQwYWVjNmY2YzIwZjdiYjE3ZmE4ZGI3ZDIuLjViODI3M2IwODUx
OTZmZmQzMGU0ZDdhN2Y2NTUxMGJlYzA4MDMxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIGJvb2wg
TGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjx3
ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpj
cmVhdGVEZWNvZGVyRmFjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0
cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3Ry
ZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5PigpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRj
OjpWaWRlb0VuY29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRl
RW5jb2RlckZhY3RvcnkoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1l
clZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVy
VmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcAppbmRl
eCA4MmNiY2IxYzY2ZDMyZWExOGNkZWIxNjc5MzhkNjhkM2IxMmU0MTlhLi5mN2Q4NWRjNjBhNjFh
ODE0NmRiYTBkMDNlNTVkNzU3NjJmZTkwZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29h
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcApAQCAtMTg4LDggKzE4OCw4IEBAIHZvaWQg
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1NhbXBsZXNBdmFpbGFibGUo
Y29uc3QgTWVkaWFUaW1lJiBzCiAgICAgICAgIGlmICghcmVtb3RlSU9Vbml0KQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsKLSAgICAgICAg
bV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9
IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0aW9uKTsK
KyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CiAKICAgICAgICAgbV9kYXRhU291cmNlID0g
QXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICog
Miwgc3RyZWFtVHJhY2soKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5tbQppbmRleCBlOGUzZDM0ODZkYTQzYWFjMWRkNTRiNzhlNmI0ZGY0ZGM5ODE2NzkwLi42MTFh
YzE2YjllY2I4Njg5OGEzNzI2NDcxYzc2MjA3MTJmYjliMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUoKQogICAgIGNvbnN0IGJvb2wgaXNOb25J
bnRlcmxlYXZlZCA9IHRydWU7CiAgICAgRmlsbE91dEFTQkRGb3JMUENNKG1fc3RyZWFtRm9ybWF0
LCBzYW1wbGVSYXRlKCksIGNoYW5uZWxDb3VudCwgYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0
LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGlzRmxvYXQsIGlzQmlnRW5kaWFuLCBpc05v
bkludGVybGVhdmVkKTsKIAotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0
ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKKyAgICBtX2F1ZGlvQnVmZmVyTGlz
dCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX3N0cmVhbUZvcm1hdCwgbV9zdHJl
YW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVDb3VudCk7CiAKICAgICBD
TUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uOwogICAgIENNQXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbkNyZWF0ZShOVUxMLCAmbV9zdHJlYW1Gb3JtYXQsIDAsIE5VTEwsIDAsIE5V
TEwsIE5VTEwsICZmb3JtYXREZXNjcmlwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggZjlkYzRhODQ3ZjRhMzU1ZDljY2ZmNGNk
ZTAzMDhkMGQ1YzVjNDQ1Ni4uMzg4ZDcxZTI0YjI1ZWJmNmQ3Nzg4MTRmZGQwYTk2NjNiMTcwNTQ2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bQpAQCAtNDYsNyArNDYsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVihDVlBpeAogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAg
bV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25m
b3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcg
KilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChwcmVmZXJlZFBpeGVsQnVmZmVy
Rm9ybWF0KCkpIH0pOworICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1
ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7IChf
X2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRUeXBlS2V5OiBAKHBy
ZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7CiAKICAgICByZXR1cm4gbV9waXhlbEJ1ZmZl
ckNvbmZvcm1lci0+Y29udmVydChwaXhlbEJ1ZmZlcik7CiB9CkBAIC03NSw3ICs3NSw3IEBAIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2Nv
YTo6cm90YXRlUGl4ZWxCdWZmZXIoCiAgICAgICAgIEludFNpemUgc2l6ZSA9IHsgKGludClDVlBp
eGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICwgKGludClDVlBpeGVsQnVmZmVyR2V0SGVp
Z2h0KHBpeGVsQnVmZmVyKSB9OwogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwog
ICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJvdGF0aW9uVG9BbmdsZShyb3RhdGlvbikpOwotICAg
ICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNl
c3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxG
b3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdl
Q29tcGF0aWJsZTo6Tm8pOworICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8
SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVs
QnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Np
b25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOwogICAgIH0KIAogICAgIHJldHVybiBtX3Jv
dGF0aW9uU2Vzc2lvbi0+cm90YXRlKHBpeGVsQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2su
aAppbmRleCA4ZTI5ZDdiODFhMTczZGZhNTM3MDVmYTFlNjJjOWU4ODNjNGY5NTAyLi5kNDc2OWQ2
OWU0YWYwNDcwZDYyY2U5MGI3NTQ0MGUyODI3NjllN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
ay5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrKTsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayhNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyOjpDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKaW5kZXggM2M2ZGUxYzRlYmU0ZWM3NDcz
NTQwYWVjY2I4OTc2MmIxOTU1NWNkNC4uMTM4OGFkMDUxMzEwOGIyZWI5MmVjMmJiZTI4OTMzNjUy
ZTk5YTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRh
Q2hhbm5lbEhhbmRsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayBmaW5hbCA6IHB1Ymxp
YyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBUaW1lckV2ZW50QmFzZWRNb2NrIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcApp
bmRleCAyZjFmYjU1ZWU2NzFmMmYyMjhmYzUxNTFkMGRkNjljZjhlYzY5NWNiLi4yYzdjNDFiZDY5
NmZmMWY5YmFiMzgzODFhNGI1ODM4NTY4YjE4YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgUmVt
b3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6UmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcihSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGkKIAogdm9pZCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpm
aXJlKCkKIHsKLSAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwoc3RkOjptYWtl
X3VuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVy
TW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90
ZURhdGFDaGFubmVsKG1ha2VVbmlxdWU8UlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0Rh
dGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENEYXRhQ2hhbm5lbEluaXQoKSkpOwogfQogCiBEYXRh
Q2hhbm5lbFN0YXRlTm90aWZpZXI6OkRhdGFDaGFubmVsU3RhdGVOb3RpZmllcihSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCwgUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggNTU5OTMzODJi
M2ExZGMzNmQ4MzU2YjYxYjI1YzcwMDJlMDczNDdmZS4uMzg3YTIxZGFmNDU1MjM5NjhhZWU0Zjc5
NDE5ZDNkOGI4ODY5MGQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTWVkaWFQ
bGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAg
IHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVk
VHlwZXMsCisgICAgcmVnaXN0cmFyKFtdIChNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBt
YWtlVW5pcXVlPE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBw
b3J0ZWRUeXBlcywKICAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAt
MTY2LDcgKzE2Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgaWYgKG1fbWVkaWFT
b3VyY2VQcml2YXRlKQogICAgICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZl
cmVkKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBi
b29sIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3Vy
Y2VIYW5kbGUuY3BwCmluZGV4IGNjNjdjZTY4OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4
ZjguLjkwNTE0MzE2MjFhOGMxMDhhNmVmMGY1MWViNjBmNzc0YWZjYzBhMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHAKQEAgLTE1OSw5ICsxNTksOSBAQCBCbG9iUmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhh
bmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdAogICAgICwgbV9h
c3luYyB7IGFzeW5jIH0KIHsKICAgICBpZiAobV9hc3luYykKLSAgICAgICAgbV9hc3luY1N0cmVh
bSA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIG1f
YXN5bmNTdHJlYW0gPSBtYWtlVW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpOwogICAgIGVs
c2UKLSAgICAgICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVTdHJlYW0+KCk7Cisg
ICAgICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZTxGaWxlU3RyZWFtPigpOwogfQogCiBCbG9iUmVz
b3VyY2VIYW5kbGU6On5CbG9iUmVzb3VyY2VIYW5kbGUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCmluZGV4IDgx
MTJiOTczZWVmNTRlZDdhNWM3YTUxNGNmMTAyYWM5OTFlNzY1MzMuLmI1NDFmNjJlZTAwNTIwMzYy
YzE1NTdmN2NhNDk2NGEyMzdiODc0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3Mg
RGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERl
Y29kaW5nUmVzdWx0RGlzcGEKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBj
cmVhdGVEZWNvZGVUYXNrKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNj
aGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVUYXNrPigKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEZWNvZGVUYXNrPigKICAgICAgICAgdXJsLnN0cmluZygpLAogICAgICAg
ICBzY2hlZHVsZUNvbnRleHQsCiAgICAgICAgIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNl
LmgKaW5kZXggYTk4NDNmNTBlNWE0MzQwM2Q4ZjUyZjBhOTY3ZjkwMjc4NjVlOGQ1Ni4uOGRhZWM1
NGExMzQyZGFiNTljMzVjYzQ5MjdhMDBmZTYyMjk0OTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAtMzcsNiArMzcs
NyBAQCBXRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbDsgLy8gVXNlZCBmb3IgZQogV0VCQ09SRV9FWFBPUlQgZXh0ZXJuIGNvbnN0
IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2ViS2l0U2VydmljZVdvcmtlcjsgLy8gVXNlZCBmb3Ig
ZXJyb3JzIHRoYXQgaGFwcGVuIHdoZW4gbG9hZGluZyBhIHJlc291cmNlIGZyb20gYSBzZXJ2aWNl
IHdvcmtlci4KIAogY2xhc3MgUmVzb3VyY2VFcnJvckJhc2UgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggMzBjMjdmNTc2YTE3N2U2YjZhYjE5NDc0MGE3
ZDkwMjViNjU5ZmNhZC4uNmEzMWUzZTUyN2Y4ZWM5MmQ2ZjYyYjk2Y2RkODE5NDQxNGI1NWM0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWls
dGluU3luY2hyb25vdXNMb2FkZXIoY29uc3QgQXRvbVN0cmluZyYgcHJvdG9jb2wKIH0KIAogUmVz
b3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGll
bnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hv
dWxkQ29udGVudEVuY29kaW5nU25pZmYpCi0gICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8UmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbD4odGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNM
b2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVl
c3QudXJsKCkpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikpCisgICAgOiBkKG1ha2VVbmlx
dWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50
LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZm
VVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikpCiB7CiAgICAg
aWYgKCFyZXF1ZXN0LnVybCgpLmlzVmFsaWQoKSkgewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUo
SW52YWxpZFVSTEZhaWx1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5k
ZXggZGFkOTAxMGY5NTcwZWJjNTY3NjMzNTQzZmQxZmM1MDJmODQ2OWI5OS4uNzEzYjRkZmIzMGIy
YWZkZmJlYWZmNGVlNTM3MGEyNTQ2ZmFkM2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAg
ICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkp
OworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMDcsNyArMjA3
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2Fn
ZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwog
ICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBt
X3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0
YShDRkQKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9t
ZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdU
Rk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVl
PEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1
ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFw
cGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBl
bHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNzYs
NyArMjc2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWlsKENGRXJyb3JSZWYKICAgICB9OwogCiAgICAgaWYgKG1f
bWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3Jr
KSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsK
IH0KQEAgLTMxMSw3ICszMTEsNyBAQCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OgogICAgIH07CiAg
ICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwor
ICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgp
Pj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChX
VEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0zMzEsNyArMzMxLDcg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmcKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAg
IGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM0
OSw3ICszNDksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRCb2R5RGF0YShDRgogICAgIH07CiAKICAgICBpZiAo
bV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVz
c2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdv
cmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykp
OwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIEJvb2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvCiAgICAgfTsK
ICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7
CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQppbmRleCBjOWI1M2UzMTJhZDg1NTc2ZDM2NmVmNGRjNTM3NDM5MWZlOGM2OTBjLi5i
YTU1ZjAwNDhiOGU0ZGRjNWIwNzM0ZDk5M2RjOWIxM2I4Y2IyYjA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCkBAIC01MjMsNyArNTIzLDcgQEAgLSAodm9pZClfcmVzdGFydAogCiAgICAgX3Jl
c291cmNlID0gc2VsZi5zZXNzaW9uLmxvYWRlci5yZXF1ZXN0UmVzb3VyY2Uoc2VsZi5vcmlnaW5h
bFJlcXVlc3QsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxs
b3dDYWNoaW5nKTsKICAgICBpZiAoX3Jlc291cmNlKQotICAgICAgICBfcmVzb3VyY2UtPnNldENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4o
c2VsZikpOworICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2VsZikpOwogfQogCiAtICh2b2lkKV9jYW5jZWwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwCmluZGV4IGE0NWE1ZjRlNGEwMjhmZTZlN2YyZGZiNzVlYzJjOGFlYzkzZWQyYmIuLjEw
MTYyNGYyOTAwYTk0Y2M3ZDFhODk5ODk2NzZkNmI0NWFiN2ZhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzg0
LDcgKzM4NCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNo
Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0CiAgICAgICAgICJBTkQgKChkb21h
aW4gPSA/KSBPUiAoZG9tYWluIEdMT0IgPykpICJcCiAgICAgICAgICJPUkRFUiBCWSBsZW5ndGgo
cGF0aCkgREVTQywgbGFzdHVwZGF0ZWQiOwogCi0gICAgYXV0byBwc3RtdCA9IHN0ZDo6bWFrZV91
bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8gcHN0bXQg
PSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpZiAo
IXBzdG10KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkBAIC01NjYsNyArNTY2LDcg
QEAgYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRlQWxsQ29va2llcygpCiAKIHZvaWQgQ29va2llSmFy
REI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0
byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFz
ZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50
PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGludCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsK
ICAgICBBU1NFUlQocmV0ID09IFNRTElURV9PSyk7CiAgICAgbV9zdGF0ZW1lbnRzLmFkZChzcWws
IFdURk1vdmUoc3RhdGVtZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5oCmluZGV4IDBjMDNlOWQ2OTJjN2Y2ZGM2MTMwODZmZjI1
NWMyMGU1YzZiYmU5ZTkuLjI2ODdhZTc0ZmI5ZDk5NDI5NzJiZWRjYWM2YWI5YjExNTlhN2U1MGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gY2xhc3MgQ29va2llQWNjZXB0UG9saWN5IHsK
IH07CiAKIGNsYXNzIENvb2tpZUphckRCIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb29raWVKYXJEQik7CiAKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRy
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5
LmgKaW5kZXggMTEwMjdjZTNiM2NmNjM4OGY5OTU0YWFmNDljNDkwM2ZlOTNmZGZmNS4uOGNlMTE0
Mzg0OGZiMjMxOGJhMTk5MGVhZDE4ZTE1ZjM3ZDg0MzQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTQwLDcg
KzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybENhY2hlRW50cnkgewot
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ3VybENhY2hlRW50
cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYg
Y2FjaGVEaXIpOwogICAgIH5DdXJsQ2FjaGVFbnRyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4
IGZhNWM4ZDJkMjFiNjI3MzgxNWQwMjNhNGYyMDQ1NTAxNmU5NjM4YWYuLmUyYjRiNWRmYmRhNjJh
M2MwY2I2YmY5MTgxYmJkNjhmZDdhNGEwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIC0t
ZW5kOyAvLyBMYXN0IGxpbmUgaXMgZW1wdHkKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAg
ICAgIFN0cmluZyB1cmwgPSBpdC0+c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgIGF1dG8gY2Fj
aGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwg
bV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENh
Y2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CiAKICAgICAgICAgaWYgKGNhY2hl
RW50cnktPmlzQ2FjaGVkKCkgJiYgY2FjaGVFbnRyeS0+ZW50cnlTaXplKCkgPCBtX3N0b3JhZ2VT
aXplTGltaXQpIHsKICAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IGNhY2hlRW50
cnktPmVudHJ5U2l6ZSgpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlJiBqb2IsIFJlc291cmNlUmVzcG9u
c2UmCiAKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsgLy8gSW52YWxpZGF0ZSBl
eGlzdGluZyBlbnRyeSBvbiAyMDAKIAotICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBzdGQ6Om1h
a2VfdW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2IsIG1fY2FjaGVEaXIpOworICAgICAg
ICBhdXRvIGNhY2hlRW50cnkgPSBtYWtlVW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2Is
IG1fY2FjaGVEaXIpOwogICAgICAgICBib29sIGNhY2hlYWJsZSA9IGNhY2hlRW50cnktPnBhcnNl
UmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTsKICAgICAgICAgaWYgKGNhY2hlYWJsZSkgewogICAg
ICAgICAgICAgY2FjaGVFbnRyeS0+c2V0SXNMb2FkaW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggN2Qx
NzIxN2MyZTQ0MmFjNmYzZGU4YzRiNjBhOTUyNmM5ZjY1ODQyYS4uN2IwNGZhMjZhNDJhYjk3OGFl
MDdiZDMxZjBlNjkxNTUxYmJjNDYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgQ3Vy
bENvbnRleHQ6OkN1cmxDb250ZXh0KCkKICAgICBpZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFk
QXM8c2lnbmVkPigiV0VCS0lUX0NVUkxfTUFYX0hPU1RfQ09OTkVDVElPTlMiKSkKICAgICAgICAg
bWF4SG9zdENvbm5lY3Rpb25zID0gKnZhbHVlOwogCi0gICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPihtYXhDb25uZWN0cywgbWF4VG90YWxDb25u
ZWN0aW9ucywgbWF4SG9zdENvbm5lY3Rpb25zKTsKKyAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlx
dWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25z
LCBtYXhIb3N0Q29ubmVjdGlvbnMpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fdmVyYm9zZSA9
IGVudlZhci5kZWZpbmVkKCJERUJVR19DVVJMIik7CkBAIC0zMzYsNyArMzM2LDcgQEAgQ1VSTGNv
ZGUgQ3VybEhhbmRsZTo6d2lsbFNldHVwU3NsQ3R4KHZvaWQqIHNzbEN0eCkKICAgICAgICAgcmV0
dXJuIENVUkxFX0FCT1JURURfQllfQ0FMTEJBQ0s7CiAKICAgICBpZiAoIW1fc3NsVmVyaWZpZXIp
Ci0gICAgICAgIG1fc3NsVmVyaWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxTU0xWZXJpZmll
cj4oc3NsQ3R4KTsKKyAgICAgICAgbV9zc2xWZXJpZmllciA9IG1ha2VVbmlxdWU8Q3VybFNTTFZl
cmlmaWVyPihzc2xDdHgpOwogCiAgICAgcmV0dXJuIENVUkxFX09LOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAppbmRleCA3ZDA2
MDY4Y2Q5ZDFhZWJlZTQyZDM4NTk0YWJkMDk0YjkwMTE0NDQ0Li5hNGY4YzAyODI3NjdiMGI0ODc3
MGEwNDhlZTg1MmYxNjZlMDdhN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaApAQCAtMTQ3LDYgKzE0Nyw3IEBAIGNsYXNzIEN1
cmxDb250ZXh0IDogcHVibGljIEN1cmxHbG9iYWwgewogLy8gQ3VybE11bHRpSGFuZGxlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIEN1cmxNdWx0
aUhhbmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ3VybE11bHRpSGFuZGxlKTsKIAogcHVibGljOgpAQCAtMjAyLDYgKzIwMyw3IEBA
IGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiAKIGNsYXNz
IEN1cmxIYW5kbGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEN1cmxIYW5kbGUpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3Bw
CmluZGV4IDlmYzY2ZWMwMjBlMjk5NmQzOGQwNjBhZDc4ZDM2ZjExNGFlNDgxYzYuLjc4NWQ2Y2I4
ZTZkYzhmYWZlOGU4MTBkZmJmZGY0Y2U3NjJmNGIzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3Bw
CkBAIC03Nyw3ICs3Nyw3IEBAIGNvbnN0IFZlY3RvcjxjaGFyPiogQ3VybEZvcm1EYXRhU3RyZWFt
OjpnZXRQb3N0RGF0YSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFtX3Bv
c3REYXRhKQotICAgICAgICBtX3Bvc3REYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hh
cj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7CisgICAgICAgIG1fcG9zdERhdGEgPSBtYWtlVW5p
cXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsKIAogICAgIHJldHVybiBt
X3Bvc3REYXRhLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGE4YmI4ZDgx
YTdhYmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZkZTJkNTUuLmNjZGJiMjgyMzlmMjJjMzYzNmNhYzE0
YjA3ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwKICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0
aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
dXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpib3VuZGFyeSk7CiB9CiAKIE9wdGlvbmFsPFN0
cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA4MDRjNzQ0NmM0NTNiNjcx
NWY4ODVlOWFmYzI3Mzg4NThlMjY4NzFhLi43MjBjNjk4MGVkZDNkYWUzZTEyYzYzZjA4YjYzYzZm
ODk2ZTUzMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3Mg
Q3VybFJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0
SGFuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBhcnRIYW5kbGU+IGNyZWF0ZUlmTmVlZGVkKEN1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBDdXJsUmVzcG9uc2UmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMDcwMzRiYjYyZDdiYmU2NDBkNGY4MDFjNGUxODQyMjNkZjI0MTNkYy4uYjJhMjJkYTIy
ZDZjMDE1NTUwNzU5OTVmNmI4MzA4NmZlYTgxZmUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0xODUsNyArMTg1
LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FsbENsaWVudChGdW5jdGlvbjx2b2lkKEN1cmxSZXF1
ZXN0JiwgQ3VybFJlcXVlc3RDbGllbnQmKT4mJgogdm9pZCBDdXJsUmVxdWVzdDo6cnVuT25NYWlu
VGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIGlmIChtX21lc3NhZ2VRdWV1
ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFw
cGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKICAgICBl
bHNlIGlmIChpc01haW5UaHJlYWQoKSkKICAgICAgICAgdGFzaygpOwogICAgIGVsc2UKQEAgLTIw
NSw3ICsyMDUsNyBAQCBDVVJMKiBDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2ZlcigpCiAgICAgYXV0
byBodHRwSGVhZGVyRmllbGRzID0gbV9yZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICBh
cHBlbmRBY2NlcHRMYW5ndWFnZUhlYWRlcihodHRwSGVhZGVyRmllbGRzKTsKIAotICAgIG1fY3Vy
bEhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybEhhbmRsZT4oKTsKKyAgICBtX2N1cmxIYW5k
bGUgPSBtYWtlVW5pcXVlPEN1cmxIYW5kbGU+KCk7CiAKICAgICBtX2N1cmxIYW5kbGUtPnNldFVy
bChtX3JlcXVlc3QudXJsKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAppbmRleCA5MTgz
N2FmOWYzZTQ3NzNiNWM3MWMxYzI2MGRiOTZmNTg2YjIxMWFmLi4zYWE1ZjUyZGI2MjdhYmIwZWNj
YWYyOTIxM2RjZTEyZmJjNmZiYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKQEAgLTE0
Myw3ICsxNDMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQoKQog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgbV9jdXJsTXVsdGlIYW5kbGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aUhhbmRsZT4oKTsKKyAgICBtX2N1cmxNdWx0aUhh
bmRsZSA9IG1ha2VVbmlxdWU8Q3VybE11bHRpSGFuZGxlPigpOwogICAgIG1fY3VybE11bHRpSGFu
ZGxlLT5zZXRNYXhDb25uZWN0cyhtX21heENvbm5lY3RzKTsKICAgICBtX2N1cmxNdWx0aUhhbmRs
ZS0+c2V0TWF4VG90YWxDb25uZWN0aW9ucyhtX21heFRvdGFsQ29ubmVjdGlvbnMpOwogICAgIG1f
Y3VybE11bHRpSGFuZGxlLT5zZXRNYXhIb3N0Q29ubmVjdGlvbnMobV9tYXhIb3N0Q29ubmVjdGlv
bnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0U2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaAppbmRleCBjYTNiYmE4MTM0NDBiZmY2ZTgwMzEyNjQw
OTc2Y2MzODhhNzQ4NjRmLi40Yjk1YzBkMTlhZDkwNDJkMmFjNzBlZDRiMTMzZjhkMWQwYzYzMmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudDsKIAogY2xhc3MgQ3VybFJl
cXVlc3RTY2hlZHVsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEN1cmxSZXF1ZXN0U2NoZWR1bGVyKTsKICAgICBmcmllbmQgTmV2ZXJE
ZXN0cm95ZWQ8Q3VybFJlcXVlc3RTY2hlZHVsZXI+OwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5oCmluZGV4
IDQ1MmY3MDVmOWNiOGZlMjkxOWNmMjg1NmRlZThkMGFkMWE4MTRmMWEuLjNiNTljYjFmODYzNjU0
ODgxZDQ2ZTY1YmJlOTU1NGU5ZjY2MzQzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVyaWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmgKQEAgLTM0LDYgKzM0LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFNTTFZlcmlmaWVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsU1NM
VmVyaWZpZXIpOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgU1NMQ2VydGlmaWNhdGVGbGFncyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDQ3YjM3ODNlNjQ2MjlhOTJlZThkYTQwYmQ0Nzk3
MGM3OTZlYTU0ODYuLjcwN2QwYTY2M2E3MTg2ZGIxMDUwNGRkYzI4NjZiNzY5NzdkMzRiN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgUmVmPEN1cmxSZXF1ZXN0
PiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgUmUKIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVs
ZWdhdGUoKQogewogICAgIGlmICghZC0+bV9kZWxlZ2F0ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsK
KyAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU+KCp0aGlzKTsKIAogICAgIHJldHVybiBkLT5tX2RlbGVnYXRlLmdldCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5
NTVlNjg4OWM2NTcyMGM5ZWZhZjIxYi4uMTNhODMyYzI2NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkw
MmRmYTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIs
NyArMjAyLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZv
aWQoKT4mJiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV90YXNr
UXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0
YXNrKSkpOworICAgIG1fdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+KFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpl
eGVjdXRlVGFza3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDVhMDZmMmVmODllZjVjMjFiZTE1N2M3MWRh
MTQxOWVjODQ4MDllZjcuLjc2NTQzYWQxNmMxNDk0ODU4ODIyOTkxZjMwNWZmN2EzM2UxN2FlNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdD
b252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2
aWV3Q29udmVydGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogY2xhc3MgUHJldmlld0NvbnZlcnRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmll
d0NvbnZlcnRlcik7CiBwdWJsaWM6CiAgICAgUHJldmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJl
c291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1
ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFmMTg3YjUwNzY1YTlkMTdjMmVjNGVjODAzM2Q4M2Yz
NDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdjZWMxZTJmZjZlNzNmMjRjMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRs
ZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZCljYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6
KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogewogICAgIC8vIFN5bmMgeGhyIHVzZXMgdGhl
IG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICByZXR1cm4g
bV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+
KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIAog
ICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlLgogICAgIGlmICghc2NoZWR1bGVkV2l0aEN1
c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVkUGFpcnMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3Bw
CmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3MTkzNGZlYzM3NjNhNWE0YTgyZDkuLmQ0YmE0ZTk1
MDQxNWJiNDA2YmFiYzAxYjZkMjBjNjZkNGY4NGIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5j
cHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRAogCiAgICAgZ19v
YmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVudGlmaWVyIiwgR1VJ
TlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CiAKLSAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxI
YW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxETlNSZXNvbHZlUXVldWVT
b3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhh
bmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxE
TlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOwogfQogCiB2b2lkIERO
U1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZpZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggZTRjOGIwZjEzZTZkMDg5YTU4OTJh
YTdhZTBhOWI4MjE1ODViYjlhNC4uYmQwNjJmNzI4ZjE2ZjcwMGM0NjgwM2JjODM5ZWMwYmM1NTc4
ZTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtMTM0LDYgKzEz
NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBhdXRoVHlwZUZyb21Qcm90ZWN0aW9uU3BhY2VBdXRo
ZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9uU3BhCiB9CiAKIHN0cnVjdCBTZWNyZXRTZXJ2aWNl
U2VhcmNoRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNl
Y3JldFNlcnZpY2VTZWFyY2hEYXRhKEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9u
PHZvaWQgKENyZWRlbnRpYWwmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogY2Fu
Y2VsbGFibGUoY2FuY2VsbGFibGUpCiAgICAgICAgICwgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldENyZWRlbnRpYWxGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgUHJv
dGVjdGlvblMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8U2VjcmV0U2VydmljZVNlYXJjaERhdGE+KGNhbmNlbGxhYmxlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxTZWNyZXRT
ZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKICAgICBzZWNyZXRfc2VydmljZV9zZWFyY2gobnVsbHB0ciwgU0VDUkVUX1NDSEVNQV9DT01Q
QVRfTkVUV09SSywgYXR0cmlidXRlcy5nZXQoKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8U2VjcmV0
U2VhcmNoRmxhZ3M+KFNFQ1JFVF9TRUFSQ0hfVU5MT0NLIHwgU0VDUkVUX1NFQVJDSF9MT0FEX1NF
Q1JFVFMpLCBjYW5jZWxsYWJsZSwKICAgICAgICAgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNS
ZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCmluZGV4IDEwZmVjYmM0MTk0Nzk1ZjMyZDFjYTdlNzYw
OWFjNGZmMjA5MmNkMjMuLmFhZmVkM2RlNzliOTlhYWM0NzY5Yzc2YjU1ZjZjMWNiYjY2MWI4ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMzIx
LDcgKzMyMSw3IEBAIHZvaWQgQmlkaVJlc29sdmVyQmFzZTxJdGVyYXRvciwgUnVuLCBEZXJpdmVk
Q2xhc3M+OjphcHBlbmRSdW5JbnRlcm5hbCgpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZW5k
T2Zmc2V0ID49IHN0YXJ0T2Zmc2V0KQotICAgICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihzdGQ6
Om1ha2VfdW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwg
bV9kaXJlY3Rpb24pKTsKKyAgICAgICAgICAgIG1fcnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxS
dW4+KHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7
CiAKICAgICAgICAgbV9lb3IuaW5jcmVtZW50KCk7CiAgICAgICAgIG1fc29yID0gbV9lb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKaW5kZXggNTllMWZjNzJh
MmJmMjk2OTQ1YTg2Zjg1NTJiODYzNzZhOWVhNTg2ZC4uMmM4Y2NlNzMwODhmYTVhZDBjZjU5NTlj
Y2U0Zjk2OTFiZjM1N2EwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
SUNVLmNwcApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgaWN1OwogCiBzdGQ6OnVu
aXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlSUNVPihsb2NhbGUuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlSUNVPihsb2Nh
bGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIExvY2FsZUlDVTo6TG9jYWxlSUNVKGNv
bnN0IGNoYXIqIGxvY2FsZSkKQEAgLTE2MywyMiArMTYzLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0
RGF0ZUZvcm1hdFBhdHRlcm4oY29uc3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQpCiBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IoY29u
c3QgVURhdGVGb3JtYXQqIGRhdGVGb3JtYXQsIFVEYXRlRm9ybWF0U3ltYm9sVHlwZSB0eXBlLCBp
bnQzMl90IHN0YXJ0SW5kZXgsIGludDMyX3Qgc2l6ZSkKIHsKICAgICBpZiAoIWRhdGVGb3JtYXQp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBpZiAodWRhdF9j
b3VudFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSkgIT0gc3RhcnRJbmRleCArIHNpemUpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKIAotICAgIGF1dG8gbGFiZWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1h
a2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHko
c2l6ZSk7CiAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICBpbnQzMl90IGxlbmd0
aCA9IHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFydEluZGV4ICsgaSwgMCwg
MCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChzdGF0dXMgIT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJS
T1IpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAg
ICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihsZW5ndGgpOwogICAgICAgICBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CiAgICAgICAgIHVkYXRfZ2V0U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlLCBzdGFy
dEluZGV4ICsgaSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oKTsKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoU3RyaW5nOjphZG9wdChXVEZNb3Zl
KGJ1ZmZlcikpKTsKICAgICB9CiAgICAgcmV0dXJuIFdURk1vdmUobGFiZWxzKTsKQEAgLTE4Niw3
ICsxODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IExvY2FsZUlDVTo6Y3Jl
YXRlTGFiZWxWZWN0b3IoY29uc3QgVURhdGVGb3JtYXQqCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMoKQogewotICAgIGF1
dG8gbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRv
IGxhYmVscyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNl
cnZlQ2FwYWNpdHkoV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5h
bWUpOyArK2kpCiAgICAgICAgIGxhYmVscy0+YXBwZW5kKFdURjo6bW9udGhGdWxsTmFtZVtpXSk7
CkBAIC0yMDgsNyArMjA4LDcgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9u
dGhMYWJlbHMoKQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVh
dGVGYWxsYmFja0FNUE1MYWJlbHMoKQogewotICAgIGF1dG8gbGFiZWxzID0gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICBhdXRvIGxhYmVscyA9IG1ha2VVbmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgbGFi
ZWxzLT5hcHBlbmQoIkFNIik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIlBNIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAppbmRleCBiYjZiMjZiYTU5Y2IzNmI5
ODliN2U2ZjU4NjMwYzdhN2IzYjU2ZWE3Li43ODE1YTQ3OGUwMjk3NDU1OTY1NzZjMmRlZDIyMTE5
MzZhYTk2YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2Fs
ZU5vbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgTG9jYWxlTm9uZSA6IHB1YmxpYyBMb2NhbGUgewog
CiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5n
JikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVOb25lPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPExvY2FsZU5vbmU+KCk7CiB9CiAKIExvY2FsZU5vbmU6On5Mb2NhbGVO
b25lKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNJQ1UuY3BwCmluZGV4IGY4ZTE2NzA4NDlhOTU4OThhMTQ1N2JjOThkYTkxZTRiZGU3ODRjNzku
LmU1ZjI4MTY2YzZkZDM0YmM1MzUwOWI2YTAwMjBhODg4OTA3YzJjZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKQEAgLTE1Niw0MyArMTU2LDQz
IEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIg
cmVnaXN0cmFyKQogICAgICAgICAvLyBodHRwOi8vZGVtby5pY3UtcHJvamVjdC5vcmcvaWN1LWJp
bi9jb252ZXhwCiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ3aW5kb3dzLTg3NCIpKSB7CiAg
ICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAw
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1l
LCAid2luZG93cy04NzQtMjAwMCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAid2luZG93cy05NDki
KSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05
NDktMjAwMCIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lD
VT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFj
LWN5cmlsbGljIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwg
Im1hY29zLTdfMy0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4
dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwg
IngtbWFjLWdyZWVrIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFt
ZSwgIm1hY29zLTZfMi0xMC40Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8yLTEwLjQiKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFt
ZSwgIngtbWFjLWNlbnRyYWxldXJyb21hbiIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFt
ZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMjktMTAuMiIpOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
IXN0cmNtcChuYW1lLCAieC1tYWMtdHVya2lzaCIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIo
bmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4yIik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMzUtMTAuMiIpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIXN0cmNtcChuYW1lLCAiRVVDLUtSIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1l
LCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDkiKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBA
QCB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJl
Z2lzdHJhcikKICAgICAgICAgY29uc3QgY2hhciogY2Fub25pY2FsQ29udmVydGVyTmFtZSA9IHVj
bnZfZ2V0Q2Fub25pY2FsTmFtZShuYW1lLCAiSUFOQSIsICZlcnJvcik7CiAgICAgICAgIEFTU0VS
VChVX1NVQ0NFU1MoZXJyb3IpKTsKICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lLCBjYW5v
bmljYWxDb252ZXJ0ZXJOYW1lXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWUpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCBjYW5vbmljYWxDb252ZXJ0
ZXJOYW1lKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCmluZGV4IDkzMTQ1MzMyOGE2ZjY2OTQ4NWVl
MDFmOGE0ZTJjZWRlNTAyNjc3ZmYuLjkyYzY2MTNjYjFmY2MwZTMwOGE3M2MzNTBhOWUwN2VmNzcz
NDYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
TGF0aW4xLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xh
dGluMS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVy
RW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0
Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIp
CiB7CiAgICAgcmVnaXN0cmFyKCJ3aW5kb3dzLTEyNTIiLCBbXSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0xhdGluMT4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCmluZGV4IDE3
NjViZjc5MjE1OTc1YjE1N2M4YjNmNzRjNTU3MmM0NzFlMjExNDEuLmM4YjU1OGM4Y2EyZDNhZmQz
MDIxNGJjZmMzN2ExNDU3NzU2YTEzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZv
aWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05h
bWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1JlcGxhY2VtZW50OjpyZWdpc3Rl
ckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigi
cmVwbGFjZW1lbnQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b2RlY1JlcGxhY2VtZW50PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNS
ZXBsYWNlbWVudD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCBiZTAwNjU2NDQ2NDhmY2UwYzM3OWQzYzc0
M2VlMjI3ZWE5ZWRhNmY0Li45MGM0NDc1ZDAyMGI5ZjQ3MWI1YmU3N2MzY2FhYzBmZGM5OGNiYTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNw
cApAQCAtNTQsMTAgKzU0LDEwIEBAIHZvaWQgVGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyRW5jb2Rp
bmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNV
VEYxNjo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAg
ICByZWdpc3RyYXIoIlVURi0xNkxFIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRl
eHRDb2RlY1VURjE2Pih0cnVlKTsKICAgICB9KTsKICAgICByZWdpc3RyYXIoIlVURi0xNkJFIiwg
W10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFs
c2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEYxNj4oZmFsc2UpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNV
VEY4LmNwcAppbmRleCBhM2RhZDRlOWQxNjM3Njg2MzA4OGIxOTcxMGY4MzlkYmJmZmVhOGRkLi5l
MWQwYTUzYzcxN2FhZTczOTkzOWY1MWM0ZDMyOTM0NWFmODljYWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
dm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MoVGV4
dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIlVURi04IiwgW10g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEY4PigpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZp
bmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmlu
ZWQuY3BwCmluZGV4IDI5NmM0NjlmMTY5ZmI5MTFkYzhkYmQ3YTY0N2VhNTY0MWUyZmZlMTkuLjQ4
YWRiYTlkNGIxYTdhOWE2NThhZWY5ZGZhZGY4NWFkZGU5ZGNmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIHZvaWQgVGV4dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyRW5jb2RpbmdO
YW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyCiB2b2lkIFRleHRDb2RlY1VzZXJE
ZWZpbmVkOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewog
ICAgIHJlZ2lzdHJhcigieC11c2VyLWRlZmluZWQiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVkPigpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUZXh0Q29kZWNVc2VyRGVmaW5lZD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCmluZGV4IGE1MTdiZTM0MWY2
YWM0YmU4ZTg5M2NmYWQ3YzIyODg0NWQ2YTgyODAuLjJiM2QwM2EzOGE1ZDIwMWJiNmRjYjhlYmU0
NGY0NmZlZWZjNjdlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL0xvY2FsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9M
b2NhbGVNYWMubW0KQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0xvY2FsZT4g
ZGV0ZXJtaW5lTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxlTWFjPihkZXRlcm1pbmVMb2NhbGUobG9jYWxl
LnN0cmluZygpKS5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlTWFjPihkZXRl
cm1pbmVMb2NhbGUobG9jYWxlLnN0cmluZygpKS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5Q
dHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVEYXRlVGltZUZvcm1hdHRlcihOU0xvY2FsZSogbG9j
YWxlLCBOU0NhbGVuZGFyKiBjYWxlbmRhciwgTlNEYXRlRm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxl
LCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSB0aW1lU3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCA2YTE2MGRlY2NmYzkyNmFlZjM3ZGUy
M2U5N2Y2MmU4ZjVjNjc5MDZhLi5hYTAwYTRhZDZmNWI1OTk4MmI2YjQ3NzMxNzFjOGJjN2MwMzM5
MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5j
cHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0
ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TG9jYWxlV2luPihMQ0lERnJvbUxvY2FsZShsb2NhbGUpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOwogfQogCiBpbmxpbmUgTG9j
YWxlV2luOjpMb2NhbGVXaW4oTENJRCBsY2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKaW5kZXggYWY0NjkxMzkwODFlODBjMTIwN2I4
MmM5N2ZkZmEzYzc3MjFhNjUxMS4uMmNlYjQ3NWU1ZmFlYmI2NzBjNzQxNDQ3NWE0NzI5MjQ5NTJk
Y2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENv
ZGVjV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29k
ZWNXaW4uY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIFVJTlQgZ2V0Q29kZVBhZ2UoY29u
c3QgY2hhciogbmFtZSkKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxUZXh0Q29kZWM+IG5ld1Rl
eHRDb2RlY1dpbihjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBjb25zdCB2b2lkKikKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVu
Y29kaW5nLm5hbWUoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0
Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CiB9CiAKIFRleHRDb2RlY1dpbjo6VGV4dENvZGVj
V2luKFVJTlQgY29kZVBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92
ci9vcGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCmluZGV4IGRkNmFlNzM2MDQ2
NzlmMTg4ZTAxZTExMGU0ZmViZTU5M2Q1MzdmMWIuLmY3MWJkOWYwZDU4OWNjMmY4MzliMDY3YzIz
ZWM4Y2I1MTgxMDY4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29w
ZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5WUi5oCkBAIC0yOSw2ICsyOSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSIDog
cHVibGljIFZSUGxhdGZvcm1EaXNwbGF5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBWUlBsYXRmb3JtRGlzcGxheU9wZW5WUih2cjo6SVZSU3lz
dGVtKiwgdnI6OklWUkNoYXBlcm9uZSosIHZyOjpJVlJDb21wb3NpdG9yKik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9w
ZW5WUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1h
bmFnZXJPcGVuVlIuY3BwCmluZGV4IGQxZGM2NzM2ODZmNjUxZTNlMDMyOTFiN2MwMmMzMWIwYzE2
OWJiYzIuLmU3Y2Y3MTM3ZTMzYWE1NWJmN2U1ODVlZTE2NGU2NzNkM2FhZWVjNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9w
ZW5WUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZv
cm1NYW5hZ2VyT3BlblZSLmNwcApAQCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VlJQ
bGF0Zm9ybU1hbmFnZXJPcGVuVlI+IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUoKQog
ICAgIGlmICghdnI6OlZSX0lzUnVudGltZUluc3RhbGxlZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigp
OwogfQogCiBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6flZSUGxhdGZvcm1NYW5hZ2VyT3BlblZS
KCkKQEAgLTc4LDcgKzc4LDcgQEAgVmVjdG9yPFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBW
UlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cygpCiAKICAgICBWZWN0b3I8V2Vh
a1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IGRpc3BsYXlzOwogICAgIGlmICghbV9kaXNwbGF5KQot
ICAgICAgICBtX2Rpc3BsYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3Bl
blZSPihtX3N5c3RlbSwgY2hhcGVyb25lLCBjb21wb3NpdG9yKTsKKyAgICAgICAgbV9kaXNwbGF5
ID0gbWFrZVVuaXF1ZTxWUlBsYXRmb3JtRGlzcGxheU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9u
ZSwgY29tcG9zaXRvcik7CiAgICAgZGlzcGxheXMuYXBwZW5kKG1ha2VXZWFrUHRyKCptX2Rpc3Bs
YXkpKTsKICAgICByZXR1cm4gZGlzcGxheXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCmluZGV4
IDZhNDM4N2NjMzA4MTVlMDBjMzQxNmM4OTY2YWQyOWQ0YjczZjcwZDkuLjZhNzgyM2JjN2I5NWVk
NDBkY2VjZGYwZjU3MzNlMTZkODQ0NWFhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCkBAIC0z
MSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5
T3BlblZSOwogCiBjbGFzcyBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUiA6IHB1YmxpYyBWUlBsYXRm
b3JtTWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4gY3JlYXRlKCk7
CiAgICAgZXhwbGljaXQgVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIoKSA9IGRlZmF1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYWJhZGRj
N2ZiY2EyMzU5ZWZmNWI5ODExYzE5NWY2YjVhYmMxYmE4My4uMTY5Nzg1NWZlNzJmNjM3ZTY1YWQ0
Nzc3MmFmYTYxYzc0NzE5MjQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgTFJFU1VMVCBDQUxMQkFD
SyBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0g
dwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKCkKIHsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJk
PigpOwogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gY2xpcGJvYXJkRGF0YTsKICAgICBpZiAoIVNV
Q0NFRURFRChPbGVHZXRDbGlwYm9hcmQoJmNsaXBib2FyZERhdGEpKSkKICAgICAgICAgY2xpcGJv
YXJkRGF0YSA9IDA7CkBAIC0xMDYsMTYgKzEwNiwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewogICAgIENPTVB0cjxX
Q0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5j
ZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4o
ZGF0YU9iamVjdC5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZGF0
YU9iamVjdC5nZXQoKSk7CiB9CiAKIC8vIHN0YXRpYwogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKIHsKICAgICBpZiAoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1E
YXRhKCkpOwogICAgIC8vIEZJWE1FOiBTaG91bGQgYWRkIGEgY29uc3Qgb3ZlcmxvYWQgb2YgZHJh
Z0RhdGFNYXAgc28gd2UgZG9uJ3QgbmVlZCBhIGNvbnN0X2Nhc3QgaGVyZS4KLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjb25zdF9jYXN0PERyYWdEYXRhJj4oZHJhZ0Rh
dGEpLmRyYWdEYXRhTWFwKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGNv
bnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVEQi5j
cHAKaW5kZXggMTk2NDljNTY2Y2ZjZjVmNDI0MzA5ZDFkOGQxMDBiMGI0ZmY3NzBhOC4uNmY3ZjRi
YTE2NjBiNGY3YTk3NzIxMmM4NTYzYTQzYzY2NWUzMGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCkBAIC0yODQsNyArMjg0LDcg
QEAgaW50IFNlYXJjaFBvcHVwTWVudURCOjpleGVjdXRlU2ltcGxlU3FsKGNvbnN0IFN0cmluZyYg
c3FsLCBib29sIGlnbm9yZUVycm9yKQogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50
PiBTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRlUHJlcGFyZWRTdGF0ZW1lbnQoY29uc3QgU3RyaW5n
JiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0
YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlx
dWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGludCByZXQgPSBzdGF0
ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IFNRTElURV9P
Syk7CiAgICAgcmV0dXJuIHN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1dDRGF0YU9iamVjdC5jcHAKaW5kZXggZGJmOTlhNDVjZTcwM2E5ZDg1N2EwZTYwMTlkNjgwNmRk
MTFmYTE3Yi4uMjQxMDAzYTEwMDMxYTNkN2U2ZDdhYTFlMjRhNDljYjk4OTgyMGNmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKQEAgLTI1Niw3ICsy
NTYsNyBAQCBTVERNRVRIT0RJTVAgV0NEYXRhT2JqZWN0OjpTZXREYXRhKEZPUk1BVEVUQyogcGZv
cm1hdGV0YywgU1RHTUVESVVNKiBwbWVkaXVtLCBCTwogICAgIGlmICghcGZvcm1hdGV0YyB8fCAh
cG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8gZmV0YyA9IHN0
ZDo6bWFrZV91bmlxdWU8Rk9STUFURVRDPigpOworICAgIGF1dG8gZmV0YyA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1BVEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAg
ICAgWmVyb01lbW9yeShmZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IGMwMDRmYzllNzA0YTZhZDMyMzQ5ZmI4MjRj
ZGM1ZGRkMDM2MDFiNWMuLjQ3OTgxYWU2OTkxZGM2NDkxNTIwZmM4MjQzMmVjYzQ5NTg2NDQzZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0xMTEsNyArMTExLDcg
QEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdDsKIAotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVp
bGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKKyAgICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNW
R0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0VmZmVjdCk7CiAgICAgbV9zb3VyY2VBbHBoYSA9IGJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKSk7CiAKICAgICBm
b3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0ZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAppbmRleCAwMTMzNzg3ZDlkMzA2MmIxY2E3OWIx
NjA3OTYzZjIwYzEwNzFlZDUzLi5iZDNjOWJlZTg3Mjk4NmVjNjFiMWEzMGEwNDk1YjhjMGEyNmZk
NjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgZGV0ZXJtaW5lRGlyZWN0aW9uYWxpdHko
VGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVyKQogCiBpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPEJpZGlSdW4+IGNyZWF0ZVJ1bihpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9i
amVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4
dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmlkaVJ1bj4oc3Rh
cnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKIH0KIAog
dm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxC
aWRpUnVuPiogcnVucywgaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QmIG9iaiwgSW5s
aW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKQEAgLTEzMCwxMiArMTMwLDEyIEBAIHZvaWQgQ29t
cGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNGb3JPYmplY3QoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4q
IHJ1bnMsIGludCBzdGFyCiBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4gQ29tcGxleExp
bmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKQogewogICAgIGlmIChpczxSZW5kZXJTVkdU
ZXh0PihtX2Zsb3cpKSB7Ci0gICAgICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdS
b290SW5saW5lQm94Pihkb3duY2FzdDxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKTsKKyAgICAgICAg
YXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25jYXN0PFJlbmRlclNW
R1RleHQ+KG1fZmxvdykpOwogICAgICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0
KCk7CiAgICAgICAgIHJldHVybiBib3g7CiAgICAgfQogICAgICAgICAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiB9CiAKIFJvb3RJbmxpbmVCb3gqIENvbXBsZXhM
aW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkKQEAgLTEwODUsNyArMTA4
NSw3IEBAIGlubGluZSBCaWRpUnVuKiBDb21wbGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdT
cGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpCiAgICAgICAgIHdoaWxlIChCaWRpQ29udGV4
dCogcGFyZW50ID0gYmFzZUNvbnRleHQtPnBhcmVudCgpKQogICAgICAgICAgICAgYmFzZUNvbnRl
eHQgPSBwYXJlbnQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IG5ld1RyYWls
aW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNlLCB0cmFpbGluZ1Nw
YWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVyKCksIGJhc2VDb250ZXh0
LCBVX09USEVSX05FVVRSQUwpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3
VHJhaWxpbmdSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3Bh
Y2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQs
IFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZp
cnN0U3BhY2U7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4gPSBuZXdUcmFpbGluZ1J1bi5nZXQo
KTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCkBAIC0xNjE3
LDcgKzE2MTcsNyBAQCB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjpsaW5rVG9FbmRMaW5lSWZOZWVk
ZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAgICAgICAgaWYgKGxheW91dFN0YXRl
LmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQg
Ym90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tVmlzdWFs
T3ZlcmZsb3coKTsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tTGF5b3V0T3ZlcmZsb3cg
PSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3coKTsKLSAgICAgICAg
ICAgIGF1dG8gbmV3TGluZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhaWxpbmdGbG9hdHNSb290
SW5saW5lQm94PihtX2Zsb3cpOworICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94ID0gbWFrZVVu
aXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiAgICAgICAgICAgICBh
dXRvIHRyYWlsaW5nRmxvYXRzTGluZUJveCA9IG5ld0xpbmVCb3guZ2V0KCk7CiAgICAgICAgICAg
ICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94KFdURk1vdmUobmV3TGluZUJveCkpOwogICAgICAg
ICAgICAgdHJhaWxpbmdGbG9hdHNMaW5lQm94LT5zZXRDb25zdHJ1Y3RlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA0Y2RkMTM5YzQ4NzUx
NmVhMGU3YjEyMTNiNzAzYmQzNDI3YWIwMThjLi5hNmM2NDgxOGM0OTc0NTYwOTBmNjYyM2MzMDRi
NWQ2Mjc3MDdhZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRp
bmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmpl
Y3RzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3Qo
UmVuZGVyQm94JiByZW5kZXJlciwgVHlwZSB0eXBlLCBjb25zdCBMYXlvdXRSZWN0JgogCiBzdGQ6
OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVy
Qm94JiByZW5kZXJlcikKIHsKLSAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
YXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKKyAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8Rmxv
YXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKICAgICBvYmplY3QtPnNldFNob3VsZFBhaW50KCFyZW5k
ZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXllciBleGlzdHMsIHRoZSBm
bG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUgZWxzZSB3aWxsLgogICAg
IG9iamVjdC0+c2V0SXNEZXNjZW5kYW50KHRydWUpOwogICAgIHJldHVybiBvYmplY3Q7CkBAIC04
MywxMiArODMsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09i
amVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVuZGVyZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9h
dGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRhaW5lcihMYXlvdXRTaXpl
IG9mZnNldCwgYm9vbCBzaG91bGRQYWludCwgYm9vbCBpc0Rlc2NlbmRhbnQpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5
cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJl
Y3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKCksIHR5cGUo
KSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zmc2V0LCBmcmFtZVJlY3Qo
KS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlzRGVzY2VuZGFudCk7CiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNsb25l
Rm9yTmV3UGFyZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNsb25lT2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwg
bV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5kYW50KTsKKyAgICBhdXRv
IGNsb25lT2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlw
ZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNj
ZW5kYW50KTsKICAgICBjbG9uZU9iamVjdC0+bV9wYWdpbmF0aW9uU3RydXQgPSBtX3BhZ2luYXRp
b25TdHJ1dDsKICAgICBjbG9uZU9iamVjdC0+bV9pc1BsYWNlZCA9IG1faXNQbGFjZWQ7CiAgICAg
cmV0dXJuIGNsb25lT2JqZWN0OwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgRmxvYXRpbmdPYmpl
Y3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSgpCiAgICAgaWYgKG1fc2V0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CisgICAgbV9wbGFjZWRGbG9hdHNUcmVlID0gbWFr
ZVVuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zZXQu
YmVnaW4oKSwgZW5kID0gbV9zZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBG
bG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+Z2V0KCk7CiAgICAgICAgIGlmIChm
bG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRl
eCBjNzJkMDFkODFjN2Q3MTY2MTU3OWUzYmEwMTgzMGU0MjlkMzBmNjg4Li4xZTkxMWFlNjBhNjEy
Njg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4N2UyOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3Bw
CkBAIC0yMzMsNyArMjMzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0
b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGEKICAgICBjb25zdCB1
bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVt
bnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7CiAgICAgZm9yICg7IHZhcnlp
bmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJbmRl
eCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93U3BhbiwgY29sdW1uU3Bhbikp
IHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFu
KG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWRE
ZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFu
KSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VV
bmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jv
d0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5p
dGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwog
ICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUg
bG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92
ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxp
bmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFs
aWdubWVudC5jcHAKaW5kZXggNWZjMzI4MTUzYTZkOGJmYzQ4ODNiYTUxMjFjY2EwYmY2ZjJlOTlk
MC4uNjYwOTA5OGY5Yzg3MDQ2ODgxMTQxOGFiMTc4Mjk0MTdiZWUyZDE5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKQEAgLTEz
NCw3ICsxMzQsNyBAQCB2b2lkIEdyaWRCYXNlbGluZUFsaWdubWVudDo6dXBkYXRlQmFzZWxpbmVB
bGlnbm1lbnRDb250ZXh0KEl0ZW1Qb3NpdGlvbiBwcmVmZXJlbgogCiAgICAgLy8gTG9va2luZyBm
b3IgYSBjb21wYXRpYmxlIGJhc2VsaW5lLXNoYXJpbmcgZ3JvdXAuCiAgICAgaWYgKGFkZFJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRl
c2NlbnQpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxC
YXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQsIGRlc2NlbnQpOwogICAg
IGVsc2UgewogICAgICAgICBhdXRvKiBjb250ZXh0ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKICAgICAgICAgY29udGV4dC0+dXBkYXRlU2hhcmVkR3JvdXAoY2hpbGQsIHByZWZl
cmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCmluZGV4IGFkZGVkYzQyOGIxZjJmZGIz
NTAzZTgxMjYyNmI5NzY5M2EzZTdiNWYuLmIyYjAxMWJkZjc0OTFiMzVhYjFkYmI3YWM2YjI2Mzk2
MTcyMWNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC02ODEsNyArNjgxLDcgQEAgZG91YmxlIEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0U2l6ZShjb25zdCBWZWN0b3I8
R3JpZFRyYWMKICAgICAgICAgICAgIGxlZnRPdmVyU3BhY2UgLT0gYmFzZVNpemU7CiAgICAgICAg
ICAgICBmbGV4RmFjdG9yU3VtIC09IGZsZXhGYWN0b3I7CiAgICAgICAgICAgICBpZiAoIXRyYWNr
c1RvVHJlYXRBc0luZmxleGlibGUpCi0gICAgICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5m
bGV4aWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAg
ICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gbWFrZVVuaXF1ZTxUcmFja0luZGV4U2V0
PigpOwogICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZS0+YWRkKGluZGV4KTsK
ICAgICAgICAgICAgIHZhbGlkRmxleEZhY3RvclVuaXQgPSBmYWxzZTsKICAgICAgICAgfQpAQCAt
MTI2MCwxMCArMTI2MCwxMCBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXAo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZQogICAgIG1fc2l6aW5n
T3BlcmF0aW9uID0gc2l6aW5nT3BlcmF0aW9uOwogICAgIHN3aXRjaCAobV9zaXppbmdPcGVyYXRp
b24pIHsKICAgICBjYXNlIEludHJpbnNpY1NpemVDb21wdXRhdGlvbjoKLSAgICAgICAgbV9zdHJh
dGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZWZpbml0ZVNpemVTdHJhdGVneT4oKnRoaXMpOwor
ICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVuaXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5Pigq
dGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHJhY2tTaXppbmc6Ci0gICAgICAgIG1f
c3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7
CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5pcXVlPERlZmluaXRlU2l6ZVN0cmF0ZWd5Pigq
dGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDczYjM2NTQ3NjcxNDBhMDM3MGU0ZDU2OTU2ZTU0ZjI2
NzRiNThiMzYuLmIzYzQwMDc5MDJkZjYwNDg2MmE1YWM3YzI5OThjYmFkNzNmMTEyZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTk2LDcgKzk2LDcg
QEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhl
cikKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90aGVyLmlzT3ZlcldpZGdldCgpKQogewogICAgIC8v
IE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIGxpc3QgaGl0IHRlc3QuCi0gICAgbV9s
aXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0ID8gc3RkOjpt
YWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6IG51bGxw
dHI7CisgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0UmVz
dWx0ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0UmVzdWx0KSA6
IG51bGxwdHI7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6On5IaXRUZXN0UmVzdWx0KCkgPSBkZWZhdWx0
OwpAQCAtMTEzLDcgKzExMyw3IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJh
dG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICBtX2lzT3ZlcldpZGdldCA9IG90
aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNh
c2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5t
X2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5t
X2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpv
dGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIAogICAgIHJldHVybiAqdGhp
czsKIH0KQEAgLTY5MCwxNCArNjkwLDE0IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNv
bnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxCiBjb25z
dCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjpsaXN0QmFzZWRUZXN0UmVz
dWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAg
bV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAg
ICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAg
cmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6Ok5vZGVT
ZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0QmFzZWRUZXN0UmVzdWx0KCkKIHsKICAgICBp
ZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RS
ZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRl
c3RSZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmlu
ZGV4IDMzMmYyODUzMWQzODhjZmUyYzNkNThhOTRjM2YyNjE3ZGNiOTE2NjYuLjEwYTE5NDM2YjRi
YWM2NTYyOTA2YjI0MWE3MGQxZDU4NTIwMDAyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBTY3JvbGxiYXI7CiBlbnVt
IGNsYXNzIEhpdFRlc3RQcm9ncmVzcyB7IFN0b3AsIENvbnRpbnVlIH07CiAKIGNsYXNzIEhpdFRl
c3RSZXN1bHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+PiBOb2RlU2V0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCmluZGV4IDQzYzY1Mzg3NmNmOTg0YTYyYjZmYzky
OTQ1ZDNkZDY5MGNhM2VkYjkuLjE1ZmRlNTRkZTVkMzQ5OTIwODJkNDM5YTI5MGE1MWY5MjVjYzJk
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC00OTMs
NyArNDkzLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBudW1iZXJPZklzb2xhdGVBbmNlc3Rv
cnMoY29uc3QgSW5saW5lSXRlcmF0b3ImIGl0ZXIpCiAvLyBvZiBCaWRpUmVzb2x2ZXIgd2hpY2gg
a25vd3Mgbm90aGluZyBhYm91dCBSZW5kZXJPYmplY3RzLgogc3RhdGljIGlubGluZSB2b2lkIGFk
ZFBsYWNlaG9sZGVyUnVuRm9ySXNvbGF0ZWRJbmxpbmUoSW5saW5lQmlkaVJlc29sdmVyJiByZXNv
bHZlciwgUmVuZGVyT2JqZWN0JiBvYmosIHVuc2lnbmVkIHBvcywgUmVuZGVyRWxlbWVudCYgcm9v
dCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gaXNvbGF0ZWRSdW4gPSBzdGQ6Om1h
a2VfdW5pcXVlPEJpZGlSdW4+KHBvcywgcG9zLCBvYmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVz
b2x2ZXIuZGlyKCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9
IG1ha2VVbmlxdWU8QmlkaVJ1bj4ocG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCBy
ZXNvbHZlci5kaXIoKSk7CiAgICAgLy8gRklYTUU6IGlzb2xhdGVkUnVucygpIGNvdWxkIGJlIGEg
aGFzaCBvZiBvYmplY3QtPnJ1biBhbmQgdGhlbiB3ZSBjb3VsZCBjaGVhcGx5CiAgICAgLy8gQVNT
RVJUIGhlcmUgdGhhdCB3ZSBkaWRuJ3QgY3JlYXRlIG11bHRpcGxlIG9iamVjdHMgZm9yIHRoZSBz
YW1lIGlubGluZS4KICAgICByZXNvbHZlci5zZXRXaGl0ZXNwYWNlQ29sbGFwc2luZ1RyYW5zaXRp
b25Gb3JJc29sYXRlZFJ1bigqaXNvbGF0ZWRSdW4sIHJlc29sdmVyLndoaXRlc3BhY2VDb2xsYXBz
aW5nU3RhdGUoKS5jdXJyZW50VHJhbnNpdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKaW5kZXggMjg1YWE1ZjlmZTliYWU3ZGZjODUyOGMyNGMx
ZDU1NjdkNDEyOWZmMy4uOTZhZjk1YTQ1NTY5NTBlODEyNmI5NTM3MzUzNGQ0NzZkYWUzNTYzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHAKQEAgLTcx
LDYgKzcxLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFJlY3RMaXN0JiByZWN0TGlzdCkKIC8vIENoZWNraW5nIGZvciBvdmVybGFwIGludm9s
dmVzIGZpbmRpbmcgdGhlIG5vZGUgZm9yIHRoZSBjbGlwcGluZyBsYXllciBlbmNsb3NpbmcgdGhl
IGdpdmVuIGxheWVyIChvciB0aGUgcm9vdCksCiAvLyBhbmQgY29tcGFyaW5nIGFnYWluc3QgdGhl
IGJvdW5kcyBvZiBlYXJsaWVyIHNpYmxpbmdzLgogY2xhc3MgT3ZlcmxhcE1hcENvbnRhaW5lciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgT3ZlcmxhcE1hcENv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllciYgcm9vdExheWVyKQogICAgICAgICA6IG1fcm9vdFNj
b3BlKHJvb3RMYXllcikKQEAgLTI5Niw3ICsyOTcsNyBAQCBib29sIExheWVyT3ZlcmxhcE1hcDo6
b3ZlcmxhcHNMYXllcnMoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBMYXlvdXRSZWN0
JgogCiB2b2lkIExheWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCkKIHsK
LSAgICBtX292ZXJsYXBTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxPdmVybGFwTWFwQ29u
dGFpbmVyPihtX3Jvb3RMYXllcikpOworICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChtYWtlVW5p
cXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1fcm9vdExheWVyKSk7CiB9CiAKIHZvaWQgTGF5ZXJP
dmVybGFwTWFwOjpwb3BDb21wb3NpdGluZ0NvbnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA0ZGJhM2YxYzQxMDVhZmIwZThlNGM3NmE3Y2ZjYjll
NWZmZjcxODU0Li4wMDE5MjU4ODJlNTAyOGM4YTIwOTliNGJiZGUzNzMxNjViNGEyNGY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBzdGF0aWMgdm9pZCBpbnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVyTWFwcyhjb25zdCBSZW5kZXJC
bG9jayYgY29udGFpbmVyLCBSZW5kZXJCbwogICAgIH0KICAgICAKICAgICBhdXRvJiBkZXNjZW5k
YW50U2V0ID0gcGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwLT5lbnN1cmUoJmNvbnRhaW5lciwg
W10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0
SGFzaFNldD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlz
dEhhc2hTZXQ+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgYm9vbCBhZGRlZCA9
IGRlc2NlbmRhbnRTZXQtPmFkZCgmZGVzY2VuZGFudCkuaXNOZXdFbnRyeTsKQEAgLTExNSw3ICsx
MTUsNyBAQCBzdGF0aWMgdm9pZCBpbnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVyTWFwcyhjb25zdCBS
ZW5kZXJCbG9jayYgY29udGFpbmVyLCBSZW5kZXJCbwogICAgIH0KICAgICAKICAgICBhdXRvJiBj
b250YWluZXJTZXQgPSBwZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwLT5lbnN1cmUoJmRlc2NlbmRh
bnQsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBS
ZW5kZXJCbG9jayo+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0
IFJlbmRlckJsb2NrKj4+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJU
KCFjb250YWluZXJTZXQtPmNvbnRhaW5zKCZjb250YWluZXIpKTsKQEAgLTE2MSw3ICsxNjEsNyBA
QCBjbGFzcyBQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXAgewogICAgICAgICB9CiAKICAgICAgICAg
YXV0byYgZGVzY2VuZGFudHMgPSBtX2Rlc2NlbmRhbnRzTWFwLmVuc3VyZSgmY29udGFpbmluZ0Js
b2NrLCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUcmFja2VkUmVu
ZGVyZXJMaXN0SGFzaFNldD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYWNr
ZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAK
ICAgICAgICAgYm9vbCBpc05ld0VudHJ5ID0gbW92ZURlc2NlbmRhbnRUb0VuZCA9PSBNb3ZlRGVz
Y2VuZGFudFRvRW5kOjpZZXMgPyBkZXNjZW5kYW50cy0+YXBwZW5kT3JNb3ZlVG9MYXN0KCZwb3Np
dGlvbmVkRGVzY2VuZGFudCkuaXNOZXdFbnRyeQpAQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBp
bmxpbmUgVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24qIGN1cnJlbnRVcGRh
dGVTY3JvbGxJbmZvQWZ0CiB2b2lkIFJlbmRlckJsb2NrOjpiZWdpblVwZGF0ZVNjcm9sbEluZm9B
ZnRlckxheW91dFRyYW5zYWN0aW9uKCkKIHsKICAgICBpZiAoIXVwZGF0ZVNjcm9sbEluZm9BZnRl
ckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSkKLSAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpID0gc3RkOjptYWtlX3VuaXF1ZTxEZWxheWVkVXBkYXRl
U2Nyb2xsSW5mb1N0YWNrPigpOworICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRU
cmFuc2FjdGlvblN0YWNrKCkgPSBtYWtlVW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3Rh
Y2s+KCk7CiAgICAgaWYgKHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3Rh
Y2soKS0+aXNFbXB0eSgpIHx8IGN1cnJlbnRVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFu
c2FjdGlvbigpLT52aWV3ICE9ICZ2aWV3KCkpCiAgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRl
ckxheW91dFRyYW5zYWN0aW9uU3RhY2soKS0+YXBwZW5kKFVwZGF0ZVNjcm9sbEluZm9BZnRlckxh
eW91dFRyYW5zYWN0aW9uKHZpZXcoKSkpOwogICAgICsrY3VycmVudFVwZGF0ZVNjcm9sbEluZm9B
ZnRlckxheW91dFRyYW5zYWN0aW9uKCktPm5lc3RlZENvdW50OwpAQCAtNjIwLDcgKzYyMCw3IEBA
IHN0YXRpYyBSZW5kZXJCbG9ja1JhcmVEYXRhJiBlbnN1cmVCbG9ja1JhcmVEYXRhKGNvbnN0IFJl
bmRlckJsb2NrJiBibG9jaykKICAgICAKICAgICBhdXRvJiByYXJlRGF0YSA9IGdSYXJlRGF0YU1h
cC0+YWRkKCZibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghcmFyZURh
dGEpCi0gICAgICAgIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1JhcmVE
YXRhPigpOworICAgICAgICByYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tSYXJlRGF0
YT4oKTsKICAgICByZXR1cm4gKnJhcmVEYXRhLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDdmMWU2Mzk3MDYzYmU0ZjhkZjli
NTdmMTc1ZDZlMjZlNzhlZmIxMzQuLmI4NjQyZDE3MjAzYmQ0YmYyNWJkZTE3MWY5ODcwYWY3ZDVh
NDNhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNo
aWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmUKICAgICBtX3NpbXBs
ZUxpbmVMYXlvdXQgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX2NvbXBsZXhMaW5lTGF5b3V0KQot
ICAgICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4TGlu
ZUxheW91dD4oKnRoaXMpOworICAgICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVuaXF1
ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAgbV9jb21wbGV4TGluZUxheW91dC0+
bGF5b3V0TGluZUJveGVzKHJlbGF5b3V0Q2hpbGRyZW4sIHJlcGFpbnRMb2dpY2FsVG9wLCByZXBh
aW50TG9naWNhbEJvdHRvbSk7CiB9CkBAIC0yMDE5LDcgKzIwMTksNyBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6bGF5b3V0TGluZUdyaWRCb3goKQogICAgIAogICAgIHNldExpbmVHcmlkQm94KDAp
OwogCi0gICAgYXV0byBsaW5lR3JpZEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Um9vdElubGluZUJv
eD4oKnRoaXMpOworICAgIGF1dG8gbGluZUdyaWRCb3ggPSBtYWtlVW5pcXVlPFJvb3RJbmxpbmVC
b3g+KCp0aGlzKTsKICAgICBsaW5lR3JpZEJveC0+c2V0SGFzVGV4dENoaWxkcmVuKCk7IC8vIE5l
ZWRlZCB0byBtYWtlIHRoZSBsaW5lIGFzY2VudC9kZXNjZW50IGFjdHVhbGx5IGJlIGhvbm9yZWQg
aW4gcXVpcmtzIG1vZGUuCiAgICAgbGluZUdyaWRCb3gtPnNldENvbnN0cnVjdGVkKCk7CiAgICAg
R2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAgdGV4dEJveERhdGFNYXA7CkBAIC0yMjYw
LDcgKzIyNjAsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2xpcE91dEZsb2F0aW5nT2JqZWN0
cyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBQYWludAogCiB2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6Y3JlYXRlRmxvYXRpbmdPYmplY3RzKCkKIHsKLSAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9
IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3RzPigqdGhpcyk7CisgICAgbV9mbG9hdGlu
Z09iamVjdHMgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0cz4oKnRoaXMpOwogfQogCiB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6cmVtb3ZlRmxvYXRpbmdPYmplY3RzKCkKQEAgLTM2NzcsNyArMzY3
Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjplbnN1cmVMaW5lQm94ZXMoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQoIW1fY29tcGxleExpbmVMYXlvdXQpOwotICAgIG1fY29tcGxl
eExpbmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7
CisgICAgbV9jb21wbGV4TGluZUxheW91dCA9IG1ha2VVbmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+
KCp0aGlzKTsKIAogICAgIGlmIChTaW1wbGVMaW5lTGF5b3V0OjpjYW5Vc2VGb3JMaW5lQm94VHJl
ZSgqdGhpcywgKm1fc2ltcGxlTGluZUxheW91dCkpIHsKICAgICAgICAgU2ltcGxlTGluZUxheW91
dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSgqdGhpcywgKm1fc2ltcGxlTGluZUxheW91dCk7CkBAIC0z
NzM1LDcgKzM3MzUsNyBAQCBSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRh
JiBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZVJhcmVCbG9ja0Zsb3dEYQogdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6Om1hdGVyaWFsaXplUmFyZUJsb2NrRmxvd0RhdGEoKQogewogICAgIEFTU0VSVCghaGFz
UmFyZUJsb2NrRmxvd0RhdGEoKSk7Ci0gICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMp
OworICAgIG1fcmFyZUJsb2NrRmxvd0RhdGEgPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrRmxvdzo6
UmVuZGVyQmxvY2tGbG93UmFyZURhdGE+KCp0aGlzKTsKIH0KIAogI2lmIEVOQUJMRShURVhUX0FV
VE9TSVpJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGRiM2E2
ZGE4ZjFhMzIxNTM3MDBlNzM0MTdkMTBmNmE0ODEzMDgzNWYuLjk2NzdkYWU5Y2ZlMjhiMWRjMzkw
NWMzYTgyYjA2ZWM2ZWNkY2RjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIENvbnRyb2xTdGF0ZXNSZW5kZXJlck1hcCYg
Y29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkKIHN0YXRpYyBDb250cm9sU3RhdGVzKiBjb250cm9s
U3RhdGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikKIHsKICAgICByZXR1
cm4gY29udHJvbFN0YXRlc1JlbmRlcmVyTWFwKCkuZW5zdXJlKCZyZW5kZXJlciwgW10gewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9sU3RhdGVzPigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDb250cm9sU3RhdGVzPigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKIH0KIApAQCAtMjEyMiw3ICsyMTIyLDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3g6
Om9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYgY29udGFpbmVyLCBjb25zdCBMYXlv
dXQKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJlbmRlckJveDo6Y3JlYXRl
SW5saW5lQm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVFbGVtZW50
Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRo
aXMpOwogfQogCiB2b2lkIFJlbmRlckJveDo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKaW5kZXggYmNiYTdiNDE2ODVhM2Y0MTIwYzFlZWE1NDYxMDJmODM2ZDU2YWEyNi4uOTAxYzQx
MTBlMWM1NmJhNjBhNGRkM2JhN2I5M2ZhYWY2MDQxY2IzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNTM4LDcgKzI1Mzgs
NyBAQCBhdXRvIFJlbmRlckJveE1vZGVsT2JqZWN0OjplbnN1cmVDb250aW51YXRpb25DaGFpbk5v
ZGUoKSAtPiBDb250aW51YXRpb25DaGFpbk5vZAogewogICAgIHNldEhhc0NvbnRpbnVhdGlvbkNo
YWluTm9kZSh0cnVlKTsKICAgICByZXR1cm4gKmNvbnRpbnVhdGlvbkNoYWluTm9kZU1hcCgpLmVu
c3VyZSh0aGlzLCBbJl0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250aW51
YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGlu
dWF0aW9uQ2hhaW5Ob2RlPigqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggMjIxMDQ0MzRl
NDVkNmM5ODQ3NmZmZDI5YWI1NTBiZDYyYWM0MDhmZS4uYzFlMDNmMDk3ZWY1OWFkNWExNmIxOTRj
OWMwNWQ2NDlmN2ZmMTVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50
ZXJOb2RlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAg
aWYgKHBsYWNlLnBhcmVudCkKICAgICAgICAgcGxhY2UucGFyZW50LT5pbnNlcnRBZnRlcihuZXdO
b2RlLCBwbGFjZS5wcmV2aW91c1NpYmxpbmcuZ2V0KCksIGlkZW50aWZpZXIpOwogCi0gICAgbWFw
cy5hZGQoJnJlbmRlcmVyLCBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJNYXA+KCkpLml0ZXJhdG9y
LT52YWx1ZS0+YWRkKGlkZW50aWZpZXIsIG5ld05vZGUuY29weVJlZigpKTsKKyAgICBtYXBzLmFk
ZCgmcmVuZGVyZXIsIG1ha2VVbmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5h
ZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkpOwogICAgIHJlbmRlcmVyLnNldEhhc0Nv
dW50ZXJOb2RlTWFwKHRydWUpOwogCiAgICAgaWYgKG5ld05vZGUtPnBhcmVudCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAK
aW5kZXggNTFhOWU0Njg0MzQ0ZDI2MzdkMDRhOTFmYjU5YTNjZDZlZjhmMDZlZC4uN2Y2Y2FiYzA1
OTEyMTA4MWM0ZDcyODYwMjE5YmQ0YjljODViOTRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCkBAIC0zMDMsNyArMzAz
LDcgQEAgUmVuZGVyQm94RnJhZ21lbnRJbmZvKiBSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0
UmVuZGVyQm94RnJhZ21lbnRJbmZvKGNvbnN0IFIKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCb3hGcmFnbWVudEluZm8+JiBib3hJbmZvID0g
bV9yZW5kZXJCb3hGcmFnbWVudEluZm8uYWRkKGJveCwgc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJC
b3hGcmFnbWVudEluZm8+KGxvZ2ljYWxMZWZ0SW5zZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBjb250
YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdt
ZW50SW5mby5hZGQoYm94LCBtYWtlVW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNh
bExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNl
dCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4gYm94SW5mby5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKaW5k
ZXggNDRmNTYzNWJhNTNhZTNmN2U5NGQ3YWM4ZTQ5NjczOTBmNThjMmU1Ni4uODQ2ZGQzYTAyYWE4
NmFhZjcxNWMwOTRlOGMzNTBjMTY2YTg2N2IxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBS
ZW5kZXJGcmFnbWVudENvbnRhaW5lciogUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmN1cnJlbnRGcmFn
bWVudCgpIGNvbnN0CiBDb250YWluaW5nRnJhZ21lbnRNYXAmIFJlbmRlckZyYWdtZW50ZWRGbG93
Ojpjb250YWluaW5nRnJhZ21lbnRNYXAoKQogewogICAgIGlmICghbV9saW5lVG9GcmFnbWVudE1h
cCkKLSAgICAgICAgbV9saW5lVG9GcmFnbWVudE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFp
bmluZ0ZyYWdtZW50TWFwPigpOworICAgICAgICBtX2xpbmVUb0ZyYWdtZW50TWFwID0gbWFrZVVu
aXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+KCk7CiAKICAgICByZXR1cm4gKm1fbGluZVRvRnJh
Z21lbnRNYXAuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdl
b21ldHJ5TWFwLmNwcAppbmRleCBiOTA0NWU2NzkwODczYWJmODFhOTBkZmE1YmJiMTEwOTNjNjc3
YjAyLi41MmM3OTBkNGU1Nzg5YjE3OGUyNmM4YWJkOGJhN2IxM2NjNTkxNTE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKQEAgLTIxOCw3ICsy
MTgsNyBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTQogICAgIAogICAgIFJlbmRlckdlb21ldHJ5
TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBpZiAo
IXQuaXNJbnRlZ2VyVHJhbnNsYXRpb24oKSkKLSAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IHN0
ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHQpOworICAgICAgICBzdGVwLm1f
dHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odCk7CiAgICAgZWxz
ZQogICAgICAgICBzdGVwLm1fb2Zmc2V0ID0gTGF5b3V0U2l6ZSh0LmUoKSwgdC5mKCkpOwogCkBA
IC0yMzUsNyArMjM1LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaFZpZXcoY29uc3Qg
UmVuZGVyVmlldyogdmlldywgY29uc3QgTGF5b3V0U2l6ZSYgc2Nyb2wKICAgICBSZW5kZXJHZW9t
ZXRyeU1hcFN0ZXAmIHN0ZXAgPSBtX21hcHBpbmdbbV9pbnNlcnRpb25Qb3NpdGlvbl07CiAgICAg
c3RlcC5tX29mZnNldCA9IHNjcm9sbE9mZnNldDsKICAgICBpZiAodCkKLSAgICAgICAgc3RlcC5t
X3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCp0KTsK
KyAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRy
aXg+KCp0KTsKICAgICAKICAgICBzdGVwSW5zZXJ0ZWQoc3RlcCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggZTM1YTJjMTMyMjVkNDcyNWNkODhjMjJmNmQw
NGNjYzlkMGYzNDk3Zi4uNDlhZDAzNTU1MzczNDIyNWYxZGRkNjMzYjQyYzEzODMyY2NlZmJmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNTQ0LDcgKzU0NCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29t
cHV0ZUVtcHR5VHJhY2tzRm9yQXV0b1JlcGVhCiAgICAgdW5zaWduZWQgbGFzdEF1dG9SZXBlYXRU
cmFjayA9IGZpcnN0QXV0b1JlcGVhdFRyYWNrICsgZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKGRpcmVj
dGlvbik7CiAKICAgICBpZiAoIWdyaWQuaGFzR3JpZEl0ZW1zKCkpIHsKLSAgICAgICAgZW1wdHlU
cmFja0luZGV4ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwor
ICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IG1ha2VVbmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhT
ZXQ+KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgdHJhY2tJbmRleCA9IGZpcnN0QXV0b1JlcGVh
dFRyYWNrOyB0cmFja0luZGV4IDwgbGFzdEF1dG9SZXBlYXRUcmFjazsgKyt0cmFja0luZGV4KQog
ICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMtPmFkZCh0cmFja0luZGV4KTsKICAgICB9IGVs
c2UgewpAQCAtNTUyLDcgKzU1Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRl
eFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0b1JlcGVhCiAgICAgICAg
ICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IoZ3JpZCwgZGlyZWN0aW9uLCB0cmFja0luZGV4KTsK
ICAgICAgICAgICAgIGlmICghaXRlcmF0b3IubmV4dEdyaWRJdGVtKCkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoIWVtcHR5VHJhY2tJbmRleGVzKQotICAgICAgICAgICAgICAgICAgICBlbXB0eVRy
YWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7Cisg
ICAgICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVk
VHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRk
KHRyYWNrSW5kZXgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03MzIsNyArNzMyLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRB
cmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXQKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZkNyb3Nz
RGlyZWN0aW9uID0gZ3JpZC5udW1UcmFja3MoY3Jvc3NEaXJlY3Rpb24pOwogICAgIHVuc2lnbmVk
IGNyb3NzRGlyZWN0aW9uU3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXpl
Rm9yQXV0b1BsYWNlZEl0ZW0oZ3JpZEl0ZW0sIGNyb3NzRGlyZWN0aW9uKTsKICAgICBHcmlkU3Bh
biBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA9IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVH
cmlkU3BhbihlbmRPZkNyb3NzRGlyZWN0aW9uLCBlbmRPZkNyb3NzRGlyZWN0aW9uICsgY3Jvc3NE
aXJlY3Rpb25TcGFuU2l6ZSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JpZEFyZWE+
KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlv
bnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5z
ID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEdyaWRBcmVhPihzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zIDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZp
ZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGly
ZWN0aW9uUG9zaXRpb25zKTsKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1h
am9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYg
YXV0b0dyaWRJdGVtcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCmluZGV4IDg5MTNlNzZjOWQ2MWM5ZDI1NDE5OTBhOTAxYjdiMDI5NGU0OGFhZGMuLmY1MWUy
ZmViMzdlMWZjZjBmZDBlNzkxYWU2NGYwM2VlODhhMmE3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBmbG9h
dCBpbWFnZURldmljZVBpeGVsUmF0aW8pCiAgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQotICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1h
Z2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5
bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAg
LCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNv
dXJjZT4oKSkKICAgICAsIG1faW1hZ2VEZXZpY2VQaXhlbFJhdGlvKGltYWdlRGV2aWNlUGl4ZWxS
YXRpbykKIHsKICAgICB1cGRhdGVBbHRUZXh0KCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgUmVuZGVy
SW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUs
IFN0eWxlSW1hZ2UqIHN0eWwKIAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKERvY3VtZW50JiBk
b2N1bWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSkKICAg
ICA6IFJlbmRlclJlcGxhY2VkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6ZSgpKQot
ICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFn
ZSA/IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdl
KSA6IG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCA5ZDhhNjU5MzRiYTNmZDI1NDc0
YzM5YzkxZmVlYzQzYWEwYzlmOWY1Li4xNTMyNWNkYTE2OTA2N2E1NjkxYjg4NWE4ZGZkYzdhYTkw
MzY0MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAt
MTEwMCw3ICsxMTAwLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmRlbGV0ZUxpbmVzKCkKIAogc3Rk
Ojp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+IFJlbmRlcklubGluZTo6Y3JlYXRlSW5saW5lRmxv
d0JveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRmxvd0JveD4oKnRo
aXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZsb3dCb3g+KCp0aGlzKTsKIH0KIAog
SW5saW5lRmxvd0JveCogUmVuZGVySW5saW5lOjpjcmVhdGVBbmRBcHBlbmRJbmxpbmVGbG93Qm94
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGY5ZjBkMGQ0
Y2VlNjZjMWY0M2RlNTMyYjYxMDA1MzJiZmI2MTUwOGMuLjE4NTQ2ODcwNTE2ZTRkMGZkNWUyYjAy
OGRlYjNiYzQwY2U2YzhiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtNzAwLDcgKzcwMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZs
b3dMaXN0KCkKICAgICAgICAgLy8gSWdub3JlIG5vbi1vdmVyZmxvdyBsYXllcnMgYW5kIHJlZmxl
Y3Rpb25zLgogICAgICAgICBpZiAoY2hpbGQtPmlzTm9ybWFsRmxvd09ubHkoKSAmJiAhaXNSZWZs
ZWN0aW9uTGF5ZXIoKmNoaWxkKSkgewogICAgICAgICAgICAgaWYgKCFtX25vcm1hbEZsb3dMaXN0
KQotICAgICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxSZW5kZXJMYXllcio+PigpOworICAgICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3Qg
PSBtYWtlVW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOwogICAgICAgICAgICAgbV9ub3Jt
YWxGbG93TGlzdC0+YXBwZW5kKGNoaWxkKTsKICAgICAgICAgfQogICAgIH0KQEAgLTc1Niw3ICs3
NTYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRl
bkxheWVycywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcgogICAgIGlmIChpbmNsdWRlSGlkZGVuTGF5
ZXIgJiYgIWlzTm9ybWFsRmxvd09ubHkoKSkgewogICAgICAgICBhdXRvJiBsYXllckxpc3QgPSAo
ekluZGV4KCkgPj0gMCkgPyBwb3NpdGl2ZVpPcmRlckxpc3QgOiBuZWdhdGl2ZVpPcmRlckxpc3Q7
CiAgICAgICAgIGlmICghbGF5ZXJMaXN0KQotICAgICAgICAgICAgbGF5ZXJMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKKyAgICAgICAgICAgIGxheWVyTGlz
dCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CiAgICAgICAgIGxheWVyTGlz
dC0+YXBwZW5kKHRoaXMpOwogICAgIH0KIApAQCAtMTIwNiw3ICsxMjA2LDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkKICAgICBib29sIGhhZFRyYW5zZm9ybSA9ICEhbV90
cmFuc2Zvcm07CiAgICAgaWYgKGhhc1RyYW5zZm9ybSAhPSBoYWRUcmFuc2Zvcm0pIHsKICAgICAg
ICAgaWYgKGhhc1RyYW5zZm9ybSkKLSAgICAgICAgICAgIG1fdHJhbnNmb3JtID0gc3RkOjptYWtl
X3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3Jt
ID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV90cmFuc2Zvcm0gPSBudWxscHRyOwogICAgICAgICAKQEAgLTU1MjcsNyArNTUy
Nyw3IEBAIFJlZjxDbGlwUmVjdHM+IFJlbmRlckxheWVyOjp1cGRhdGVDbGlwUmVjdHMoY29uc3Qg
Q2xpcFJlY3RzQ29udGV4dCYgY2xpcFJlY3RzQ29uCiAgICAgfQogICAgIAogICAgIGlmICghbV9j
bGlwUmVjdHNDYWNoZSkKLSAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CisgICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBtYWtlVW5p
cXVlPENsaXBSZWN0c0NhY2hlPigpOwogI2lmbmRlZiBOREVCVUcKICAgICBtX2NsaXBSZWN0c0Nh
Y2hlLT5tX2NsaXBSZWN0c1Jvb3RbY2xpcFJlY3RzVHlwZV0gPSBjbGlwUmVjdHNDb250ZXh0LnJv
b3RMYXllcjsKICAgICBtX2NsaXBSZWN0c0NhY2hlLT5tX3Njcm9sbGJhclJlbGV2YW5jeVtjbGlw
UmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQub3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFu
Y3k7CkBAIC02MTA1LDcgKzYxMDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGVhckNsaXBSZWN0
cyhDbGlwUmVjdHNUeXBlIHR5cGVUb0NsZWFyKQogUmVuZGVyTGF5ZXJCYWNraW5nKiBSZW5kZXJM
YXllcjo6ZW5zdXJlQmFja2luZygpCiB7CiAgICAgaWYgKCFtX2JhY2tpbmcpIHsKLSAgICAgICAg
bV9iYWNraW5nID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0aGlzKTsK
KyAgICAgICAgbV9iYWNraW5nID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllckJhY2tpbmc+KCp0aGlz
KTsKICAgICAgICAgY29tcG9zaXRvcigpLmxheWVyQmVjYW1lQ29tcG9zaXRlZCgqdGhpcyk7CiAK
ICAgICAgICAgdXBkYXRlRmlsdGVyUGFpbnRpbmdTdHJhdGVneSgpOwpAQCAtNjUyMyw3ICs2NTIz
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKIAogICAgIGlmIChyZW5kZXJlcigpLmlzSFRN
TE1hcnF1ZWUoKSAmJiByZW5kZXJlcigpLnN0eWxlKCkubWFycXVlZUJlaGF2aW9yKCkgIT0gTWFy
cXVlZUJlaGF2aW9yOjpOb25lICYmIHJlbmRlcmVyKCkuaXNCb3goKSkgewogICAgICAgICBpZiAo
IW1fbWFycXVlZSkKLSAgICAgICAgICAgIG1fbWFycXVlZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyTWFycXVlZT4odGhpcyk7CisgICAgICAgICAgICBtX21hcnF1ZWUgPSBtYWtlVW5pcXVlPFJl
bmRlck1hcnF1ZWU+KHRoaXMpOwogICAgICAgICBtX21hcnF1ZWUtPnVwZGF0ZU1hcnF1ZWVTdHls
ZSgpOwogICAgIH0gZWxzZSBpZiAobV9tYXJxdWVlKQogICAgICAgICBtX21hcnF1ZWUgPSBudWxs
cHRyOwpAQCAtNjczNSw3ICs2NzM1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZW5zdXJlTGF5ZXJG
aWx0ZXJzKCkKICAgICBpZiAobV9maWx0ZXJzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
bV9maWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXllckZpbHRlcnM+KCp0aGlzKTsK
KyAgICBtX2ZpbHRlcnMgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOwog
fQogCiB2b2lkIFJlbmRlckxheWVyOjpjbGVhckxheWVyRmlsdGVycygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDIyZWQ2ZGQ3YzAy
NTJiMTk1M2RlM2JlMTUzOTcxYjEyOWFlMWM3NGIuLjEyMWQxMmYyNjlmOTBkMTNjNmNjZGQwOTdi
OTIyZTNhZGFjZTI2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCkBAIC0xNjI3LDcgKzE2MjcsNyBAQCBib29sIFJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlQW5jZXN0b3JDbGlwcGluZ1N0YWNrKFZlY3RvcjxDb21wb3NpdGVkQ2xpcERh
dGE+JgogICAgIH0KICAgICAKICAgICBpZiAoIW1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKSB7Ci0g
ICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckFu
Y2VzdG9yQ2xpcHBpbmdTdGFjaz4oV1RGTW92ZShjbGlwcGluZ0RhdGEpKTsKKyAgICAgICAgbV9h
bmNlc3RvckNsaXBwaW5nU3RhY2sgPSBtYWtlVW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0
YWNrPihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oQ29t
cG9zaXRpbmcsIHN0cmVhbSA8PCAibGF5ZXIgIiA8PCAmbV9vd25pbmdMYXllciA8PCAiIGFuY2Vz
dG9yQ2xpcHBpbmdTdGFjayAiIDw8ICptX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMxNzgsMTcgKzMxNzgsMTcgQEAgYm9vbCBSZW5kZXJM
YXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmlt
YXRpb24mIGFuaW0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNGaXJzdE9yTGFzdEtleWZyYW1l
ID0ga2V5ID09IDAgfHwga2V5ID09IDE7CiAgICAgICAgIGlmICgoaGFzVHJhbnNmb3JtICYmIGlz
Rmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHko
Q1NTUHJvcGVydHlUcmFuc2Zvcm0pKQotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1l
U3R5bGUtPnRyYW5zZm9ybSgpLCB0ZikpOworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmlu
c2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5
bGUtPnRyYW5zZm9ybSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgoaGFzT3BhY2l0eSAmJiBpc0Zp
cnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENT
U1Byb3BlcnR5T3BhY2l0eSkpCi0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6
Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3Bh
Y2l0eSgpLCB0ZikpOworICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1
ZTxGbG9hdEFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYp
KTsKIAogICAgICAgICBpZiAoKGhhc0ZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8
IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5RmlsdGVyKSkKLSAg
ICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmlt
YXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5maWx0ZXIoKSwgdGYpKTsKKyAgICAgICAg
ICAgIGZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4o
a2V5LCBrZXlmcmFtZVN0eWxlLT5maWx0ZXIoKSwgdGYpKTsKIAogI2lmIEVOQUJMRShGSUxURVJT
X0xFVkVMXzIpCiAgICAgICAgIGlmICgoaGFzQmFja2Ryb3BGaWx0ZXIgJiYgaXNGaXJzdE9yTGFz
dEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tkcm9wRmlsdGVyKSkKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9y
Lmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZy
YW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCksIHRmKSk7CisgICAgICAgICAgICBiYWNrZHJvcEZp
bHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBr
ZXlmcmFtZVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpLCB0ZikpOwogI2VuZGlmCiAgICAgfQogCkBA
IC0zMjQzLDggKzMyNDMsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0
aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25z
dCBBbmltYXRpb24qIG9wYWNpdHlBbmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5
KENTU1Byb3BlcnR5T3BhY2l0eSk7CiAgICAgICAgIGlmIChvcGFjaXR5QW5pbSAmJiAhb3BhY2l0
eUFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZh
bHVlTGlzdCBvcGFjaXR5VmVjdG9yKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICAgICAg
ICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25W
YWx1ZT4oMCwgY29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpOwotICAg
ICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1h
dGlvblZhbHVlPigxLCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpOwor
ICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlv
blZhbHVlPigwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7Cisg
ICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9u
VmFsdWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAg
ICAgICAgICAvLyBUaGUgYm94U2l6ZSBwYXJhbSBpcyBvbmx5IHVzZWQgZm9yIHRyYW5zZm9ybSBh
bmltYXRpb25zICh3aGljaCBjYW4gb25seSBydW4gb24gUmVuZGVyQm94ZXMpLCBzbyB3ZSBwYXNz
IGFuIGVtcHR5IHNpemUgaGVyZS4KICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFk
ZEFuaW1hdGlvbihvcGFjaXR5VmVjdG9yLCBGbG9hdFNpemUoKSwgb3BhY2l0eUFuaW0sIEdyYXBo
aWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlPcGFj
aXR5KSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBlbnN1cmUgdGhhdCB0
aGUgY29ycmVjdCBvcGFjaXR5IGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFs
c28gc2V0IHRoZSBmaW5hbCBvcGFjaXR5LgpAQCAtMzI1OCw4ICszMjU4LDggQEAgYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NTUHJv
cGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiB0cmFuc2Zvcm1BbmltID0g
dG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKTsKICAg
ICAgICAgaWYgKHRyYW5zZm9ybUFuaW0gJiYgIXRyYW5zZm9ybUFuaW0tPmlzRW1wdHlPclplcm9E
dXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCB0cmFuc2Zvcm1WZWN0
b3IoQW5pbWF0ZWRQcm9wZXJ0eVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0
b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDAsIGZy
b21TdHlsZS0+dHJhbnNmb3JtKCkpKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNl
cnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+
dHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVu
aXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkp
OworICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOwogICAgICAgICAgICAg
aWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3Rvciwgc25hcHBl
ZEludFJlY3QocmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSkuc2l6ZSgpLCB0cmFuc2Zvcm1B
bmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFBy
b3BlcnR5VHJhbnNmb3JtKSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBUbyBl
bnN1cmUgdGhhdCB0aGUgY29ycmVjdCB0cmFuc2Zvcm0gaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmlt
YXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIHRyYW5zZm9ybS4KICAgICAgICAgICAgICAg
ICB1cGRhdGVUcmFuc2Zvcm0oKnRvU3R5bGUpOwpAQCAtMzI3Miw4ICszMjcyLDggQEAgYm9vbCBS
ZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgQ1NT
UHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBmaWx0ZXJBbmltID0g
dG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5RmlsdGVyKTsKICAgICAg
ICAgaWYgKGZpbHRlckFuaW0gJiYgIWZpbHRlckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigp
KSB7CiAgICAgICAgICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQ
cm9wZXJ0eUZpbHRlcik7Ci0gICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFr
ZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+ZmlsdGVyKCkpKTsK
LSAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+ZmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRl
clZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0
eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5p
cXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5maWx0ZXIoKSkpOwogICAgICAg
ICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGZpbHRlclZlY3RvciwgRmxv
YXRTaXplKCksIGZpbHRlckFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFu
c2l0aW9uKEFuaW1hdGVkUHJvcGVydHlGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAg
ICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGZpbHRlciBpcyB2aXNpYmxlIHdo
ZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgZmlsdGVyLgogICAgICAg
ICAgICAgICAgIHVwZGF0ZUZpbHRlcnMoKnRvU3R5bGUpOwpAQCAtMzI4Nyw4ICszMjg3LDggQEAg
Ym9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNl
dCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9uKiBiYWNrZHJv
cEZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZHJvcEZpbHRlcik7CiAgICAgICAgIGlmIChiYWNrZHJvcEZpbHRlckFuaW0gJiYg
IWJhY2tkcm9wRmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAg
ICAgIEtleWZyYW1lVmFsdWVMaXN0IGJhY2tkcm9wRmlsdGVyVmVjdG9yKEFuaW1hdGVkUHJvcGVy
dHlXZWJraXRCYWNrZHJvcEZpbHRlcik7Ci0gICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rv
ci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0
eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7Ci0gICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rv
ci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHls
ZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOworICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3Iu
aW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+YmFj
a2Ryb3BGaWx0ZXIoKSkpOworICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0
KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmJhY2tkcm9wRmls
dGVyKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihi
YWNrZHJvcEZpbHRlclZlY3RvciwgRmxvYXRTaXplKCksIGJhY2tkcm9wRmlsdGVyQW5pbSwgR3Jh
cGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVdl
YmtpdEJhY2tkcm9wRmlsdGVyKSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBU
byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBiYWNrZHJvcCBmaWx0ZXIgaXMgdmlzaWJsZSB3aGVu
IHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIGJhY2tkcm9wIGZpbHRlci4K
ICAgICAgICAgICAgICAgICB1cGRhdGVCYWNrZHJvcEZpbHRlcnMoKnRvU3R5bGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRl
eCBhYmU0ZDRkNjc1YTIyMTg2ZTJlYTg5ZDQxMmZmYTgxNTM4YzVjOTI5Li4zMjEyMjlkNmYyM2Nm
YWU2NmEwNWE1MjgwOGRkMGIwY2JhOGMxNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKFJlbmRlclZpZXcmIHJl
bmRlclZpZXcpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9yZW5kZXJW
aWV3LmZyYW1lVmlldygpLnBsYXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIG1fbGVnYWN5U2Nyb2xs
aW5nTGF5ZXJDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5V2ViS2l0U2Nyb2xs
aW5nTGF5ZXJDb29yZGluYXRvcj4ocGFnZSgpLmNocm9tZSgpLmNsaWVudCgpLCBpc01haW5GcmFt
ZUNvbXBvc2l0b3IoKSk7CisgICAgICAgIG1fbGVnYWN5U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRv
ciA9IG1ha2VVbmlxdWU8TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcj4ocGFn
ZSgpLmNocm9tZSgpLmNsaWVudCgpLCBpc01haW5GcmFtZUNvbXBvc2l0b3IoKSk7CiAjZW5kaWYK
IH0KIApAQCAtNjEyLDcgKzYxMiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3Rp
ZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqCiB7CiAgICAg
aWYgKCFtX2xheWVyVXBkYXRlcikgewogICAgICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQgPSBwYWdlKCkuY2hyb21lKCkuZGlzcGxheUlEKCk7Ci0gICAgICAgIG1fbGF5ZXJVcGRhdGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0xheWVyVXBkYXRlcj4oKnRoaXMsIGRpc3BsYXlJ
RCk7CisgICAgICAgIG1fbGF5ZXJVcGRhdGVyID0gbWFrZVVuaXF1ZTxHcmFwaGljc0xheWVyVXBk
YXRlcj4oKnRoaXMsIGRpc3BsYXlJRCk7CiAgICAgfQogICAgIAogICAgIG1fbGF5ZXJVcGRhdGVy
LT5zY2hlZHVsZVVwZGF0ZSgpOwpAQCAtNDc5Miw3ICs0NzkyLDcgQEAgdm9pZCBMZWdhY3lXZWJL
aXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWlu
ZWRMYXllcnMKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Vmlld3BvcnRDb25zdHJhaW50cz4g
Y29uc3RyYWludHM7CiAgICAgICAgIGlmIChsYXllci0+cmVuZGVyZXIoKS5pc1N0aWNraWx5UG9z
aXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBjb25zdHJhaW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8
U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlj
a3lWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAgICAgICAgY29uc3RyYWludHMg
PSBtYWtlVW5pcXVlPFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRv
ci5jb21wdXRlU3RpY2t5Vmlld3BvcnRDb25zdHJhaW50cygqbGF5ZXIpKTsKICAgICAgICAgICAg
IGNvbnN0IFJlbmRlckxheWVyKiBlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllciA9IG51bGxw
dHI7CiAgICAgICAgICAgICBpZiAoY29tcG9zaXRvci5pc0FzeW5jU2Nyb2xsYWJsZVN0aWNreUxh
eWVyKCpsYXllciwgJmVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyKSAmJiBlbmNsb3NpbmdU
b3VjaFNjcm9sbGFibGVMYXllcikgewogICAgICAgICAgICAgICAgIEFTU0VSVChlbmNsb3NpbmdU
b3VjaFNjcm9sbGFibGVMYXllci0+aXNDb21wb3NpdGVkKCkpOwpAQCAtNDgwMCw3ICs0ODAwLDcg
QEAgdm9pZCBMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yOjpyZWdpc3RlckFs
bFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMKICAgICAgICAgICAgICAgICBzdGlja3lDb250YWlu
ZXJNYXAuYWRkKGxheWVyLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXll
cigpLCBlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllci0+YmFja2luZygpLT5zY3JvbGxDb250
YWluZXJMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKGxheWVyLT5yZW5kZXJlcigpLmlzRml4ZWRQb3NpdGlvbmVkKCkpCi0gICAgICAg
ICAgICBjb25zdHJhaW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRQb3NpdGlvblZpZXdwb3J0
Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cygq
bGF5ZXIpKTsKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gbWFrZVVuaXF1ZTxGaXhlZFBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENv
bnN0cmFpbnRzKCpsYXllcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb250aW51ZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
CmluZGV4IGJmNjQ1Y2Q0MWI4OTEyMTJkN2Y1YTMwMzg2ZWY5Y2E1NGJmYTQ2MDIuLjhkZDAzOWJh
ZmRhNjM1MzhjZTMyMTNkYzMxMzU2MGZhYThhNGJkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBz
dGF0aWMgY29uc3RleHByIE9wdGlvblNldDxTY3JvbGxDb29yZGluYXRpb25Sb2xlPiBhbGxTY3Jv
bGxDb29yZGluYXRpb25Sb2xlcygpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY2xhc3Mg
TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29y
ZGluYXRvcihDaHJvbWVDbGllbnQmIGNocm9tZUNsaWVudCwgYm9vbCBjb29yZGluYXRlVmlld3Bv
cnRDb25zdHJhaW5lZExheWVycykKICAgICAgICAgOiBtX2Nocm9tZUNsaWVudChjaHJvbWVDbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdC5jcHAKaW5kZXggNGI4NmZlMmFkMTc1ZGNlODZhZDM4NTJiZGZjMTUyZmQxMzA4ZDQ1ZS4u
MTI4Yzk2ZGFlMGIzMTAwNmNhMjVkNWE1NmM3MjBiYzg5MGQzNGYwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtOTUs
NyArOTUsNyBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCiB2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmNyZWF0ZUxheWVyKCkKIHsKICAgICBBU1NFUlQo
IW1fbGF5ZXIpOwotICAgIG1fbGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyPigq
dGhpcyk7CisgICAgbV9sYXllciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKICAg
ICBzZXRIYXNMYXllcih0cnVlKTsKICAgICBtX2xheWVyLT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4
IGJjNTUyN2I4YzQ2YTRkZTA2NmY2OWU1YTMxMGM4ODY4MTk2ZmMyM2EuLjFhYWUwOWQwMGIyNmVh
M2NhZGVhODY3MmUyNzc5MjliZmQxN2E2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC04OSw3ICs4OSw3IEBAIGludCBSZW5kZXJMaW5lQnJl
YWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJz
dExpbmUsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJl
YWs6OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5s
aW5lRWxlbWVudEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1l
bnRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OnNldElubGluZUJveFdy
YXBwZXIoSW5saW5lRWxlbWVudEJveCogaW5saW5lQm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAppbmRleCA5YmI5YTUzOWQ2NjQy
ZGY5MDAyNmE3ODJhZjhjZjg0ZGM0OWRhMmE5Li40MTAzZGFkNDg0NGRkMjRhMzAyYTczMmFmMjIx
OWFjOTAwMDFjYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5GbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5GbG93LmNwcApAQCAtNDIsNyArNDIsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoUmVuZGVyTXVsdGlDb2x1bW5GbG93KTsKIAogUmVuZGVyTXVsdGlDb2x1bW5GbG93
OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyRnJhZ21lbnRlZEZsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5
bGUpKQotICAgICwgbV9zcGFubmVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8U3Bhbm5lck1hcD4oKSkK
KyAgICAsIG1fc3Bhbm5lck1hcChtYWtlVW5pcXVlPFNwYW5uZXJNYXA+KCkpCiAgICAgLCBtX2xh
c3RTZXRXb3JrZWRPbihudWxscHRyKQogICAgICwgbV9jb2x1bW5Db3VudCgxKQogICAgICwgbV9j
b2x1bW5XaWR0aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApp
bmRleCA0ZGEzYmQ3Mzc3MWJhMTcxOTBlYWMzNWRhNjM4ZTI0M2YxOTAyOTA3Li4wYmY1MTkzZGU0
ODQ0NWJjYzY3N2U5MTRlOGFkM2RmODFjZWI4MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg5Myw3ICsxODkzLDcgQEAgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YSYgUmVuZGVyT2JqZWN0OjpyYXJlRGF0YSgpIGNvbnN0
CiBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OmVuc3Vy
ZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNSYXJlRGF0YSh0cnVlKTsKLSAgICByZXR1cm4gKnJh
cmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKnJh
cmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyT2Jq
ZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBSZW5kZXJPYmpl
Y3Q6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDZkNTZiNWVjYTJjNmIyNzY4YWZiYjJk
NGNmZjBhYzA4ODJlOWZkYzYuLjBkZmUyODI3NjRmNDA4YjYyMGJlZjVkOWY1OGU4OGE2Y2M3NmMw
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOwogCiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zbmFwc2hvdFJlc291cmNlKHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1fc25hcHNob3RSZXNvdXJjZShtYWtl
VW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiAgICAgbV9zbmFwc2hvdFJlc291cmNl
LT5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCmluZGV4IDE4NmNhODcwZWQxMDkxM2Q1OGI4NTQ5ZWI5NmRlMzM2ZTM0NTUzNTkuLmU5
MWExMzM3MTk5MTJkMThmYTU1ZTM2ZDgzNTU4ODU3YzJkMThiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTM3LDkgKzEzNyw5IEBAIHZvaWQgUmVuZGVy
VGFibGU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5CiAgICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NTMiBzcGVjLCB5b3Ug
b25seSB1c2UgZml4ZWQgdGFibGUgbGF5b3V0IGlmIGFuCiAgICAgICAgIC8vIGV4cGxpY2l0IHdp
ZHRoIGlzIHNwZWNpZmllZCBvbiB0aGUgdGFibGUuICBBdXRvIHdpZHRoIGltcGxpZXMgYXV0byB0
YWJsZSBsYXlvdXQuCiAgICAgICAgIGlmIChzdHlsZSgpLnRhYmxlTGF5b3V0KCkgPT0gVGFibGVM
YXlvdXRUeXBlOjpGaXhlZCAmJiAhc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKSkKLSAg
ICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkVGFibGVMYXlv
dXQ+KHRoaXMpOworICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IG1ha2VVbmlxdWU8Rml4ZWRU
YWJsZUxheW91dD4odGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdGFibGVMYXlv
dXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CisgICAgICAgICAg
ICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxBdXRvVGFibGVMYXlvdXQ+KHRoaXMpOwogICAg
IH0KIAogICAgIC8vIElmIGJvcmRlciB3YXMgY2hhbmdlZCwgaW52YWxpZGF0ZSBjb2xsYXBzZWQg
Ym9yZGVycyBjYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRl
eCBhYWQwYzE0N2YxMWQzOWIzYWQxNmNhZGRjMTUzYzMyMmU5MmQ3YTBhLi5iNjMwNWRlNWY2MzE2
YzRkYjI2MGE3OTljZDExNmJiZDFhZTU0NDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmRpcnR5
TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRC
b3g+IFJlbmRlclRleHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxp
bmVUZXh0Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94
KElubGluZVRleHRCb3gmIHRleHRCb3gpCkBAIC0xNTQ1LDcgKzE1NDUsNyBAQCB2b2lkIFJlbmRl
clRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNl
dEFmdGVyTGFzdFR5cAogICAgICAgICByZXR1cm47CiAgICAgYXV0byYgc2VjdXJlVGV4dFRpbWVy
ID0gc2VjdXJlVGV4dFRpbWVycygpLmFkZCh0aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgaWYgKCFzZWN1cmVUZXh0VGltZXIpCi0gICAgICAgIHNlY3VyZVRleHRUaW1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7CisgICAgICAgIHNlY3VyZVRl
eHRUaW1lciA9IG1ha2VVbmlxdWU8U2VjdXJlVGV4dFRpbWVyPigqdGhpcyk7CiAgICAgc2VjdXJl
VGV4dFRpbWVyLT5yZXN0YXJ0KG9mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGMxNDQ1MWExOGVlYTdh
NTcxYTI3Nzc4OThhNzljYzhiNDNmZjMxNDIuLjVmZWM2NzhjNmJiNWRmMGU0OTIyYjAxMmMzZjI2
OGRiYWI0YTdiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAg
LTQ5Miw3ICs0OTIsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNv
bnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0KSBjb25zdAogICAgIC8vIEZJWE1FOiBNYXliZSB0
aGVyZSBzaG91bGQgYmUgYSByZWdpb24gdHlwZSB0aGF0IGRvZXMgdGhpcyBhdXRvbWF0aWNhbGx5
LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXpl
ID0gMTYgKiAxNjsKICAgICBpZiAobV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24tPmdyaWRTaXpl
KCkgPiBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplKQotICAgICAgICBtX2FjY3VtdWxhdGVk
UmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVw
YWludFJlZ2lvbi0+Ym91bmRzKCkpOworICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lv
biA9IG1ha2VVbmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRz
KCkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmZsdXNoQWNjdW11bGF0ZWRSZXBhaW50UmVnaW9u
KCkgY29uc3QKQEAgLTcyNCw3ICs3MjQsNyBAQCBib29sIFJlbmRlclZpZXc6OnVzZXNDb21wb3Np
dGluZygpIGNvbnN0CiBSZW5kZXJMYXllckNvbXBvc2l0b3ImIFJlbmRlclZpZXc6OmNvbXBvc2l0
b3IoKQogewogICAgIGlmICghbV9jb21wb3NpdG9yKQotICAgICAgICBtX2NvbXBvc2l0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOworICAgICAgICBt
X2NvbXBvc2l0b3IgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRvcj4oKnRoaXMpOwog
CiAgICAgcmV0dXJuICptX2NvbXBvc2l0b3I7CiB9CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBS
ZW5kZXJWaWV3OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWwKIEltYWdlUXVhbGl0eUNvbnRyb2xsZXImIFJlbmRlclZpZXc6Omlt
YWdlUXVhbGl0eUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9pbWFnZVF1YWxpdHlDb250cm9s
bGVyKQotICAgICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICAgICAgbV9pbWFnZVF1YWxpdHlD
b250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbWFnZVF1YWxpdHlDb250cm9sbGVyPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CiB9CiAKQEAgLTgzNCw3ICs4MzQs
NyBAQCBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3I6OlJlcGFpbnRSZWdpb25B
Y2N1bXVsYXRvcihSZW5kZXJWaWV3KiB2aWV3KQogCiAgICAgbV93YXNBY2N1bXVsYXRpbmdSZXBh
aW50UmVnaW9uID0gISFyb290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb247
CiAgICAgaWYgKCFtX3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRSZWdpb24pCi0gICAgICAgIHJvb3RS
ZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVnaW9uPigpOworICAgICAgICByb290UmVuZGVyVmlldy0+bV9hY2N1bXVsYXRlZFJlcGFpbnRS
ZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICBtX3Jvb3RWaWV3ID0gbWFrZVdlYWtQ
dHIoKnJvb3RSZW5kZXJWaWV3KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guY3BwCmluZGV4IGZkY2Q1OWM1MmM1ZjMyOGY1MjA5ZjAwYzFmOGQ4MTZhZGM1Zjc2
NjguLjQ0NTU4NDFhZjMyZmYxNTI1MmNmYTI4ZWQ4YTY5YzNlNDlmMWYzMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBm
bG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21TdHJpbmcmIGVsbGlw
c2lzU3RyLCAgYm9vbCBsdHIsIGZsbwogICAgICAgICBnRWxsaXBzaXNCb3hNYXAgPSBuZXcgRWxs
aXBzaXNCb3hNYXAoKTsKIAogICAgIEFTU0VSVCghaGFzRWxsaXBzaXNCb3goKSk7Ci0gICAgYXV0
byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBzdGQ6Om1ha2VfdW5p
cXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lz
V2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dp
Y2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBC
b3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxs
aXBzaXNCb3hNYXAtPnNldCh0aGlzLCBtYWtlVW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3co
KSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3Vw
Qm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290
Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7
CiAgICAgc2V0SGFzRWxsaXBzaXNCb3godHJ1ZSk7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQg
YW4gUlRMIHZlcnNpb24gb2YgdGhpcz8KICAgICBpZiAobHRyICYmICh4KCkgKyBsb2dpY2FsV2lk
dGgoKSArIGVsbGlwc2lzV2lkdGgpIDw9IGJsb2NrUmlnaHRFZGdlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCA3ZGYyODI4OGE0ZDU1YzJjN2QyNmFkNGJj
MDE3NmQwYjc2MTc4MzY0Li4yNDdlNTVjMDY5ZTlmZTg4MWNhZjRiZmJjMmI0YWVmMTllMzYxN2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTE0NSw3ICsx
NDUsNyBAQCBjbGFzcyBSb290SW5saW5lQm94IDogcHVibGljIElubGluZUZsb3dCb3gsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSb290SW5saW5lQm94PgogICAgICAgICBpZiAobV9mbG9hdHMpCiAg
ICAgICAgICAgICBtX2Zsb2F0cy0+YXBwZW5kKG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZmxvYXRzID0gc3RkOjptYWtlX3VuaXF1ZTxDbGVh
bkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CisgICAgICAgICAg
ICBtX2Zsb2F0cyA9IG1ha2VVbmlxdWU8Q2xlYW5MaW5lRmxvYXRMaXN0PigxLCBtYWtlV2Vha1B0
cihmbG9hdGluZ0JveCkpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlRmxvYXQoUmVuZGVyQm94
JiBmbG9hdGluZ0JveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxl
Y3Rpb25SYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJh
bmdlRGF0YS5jcHAKaW5kZXggZWM1ZTczNTZhNjRkMTI0OWRkYTExNDdlOGJiYTMxZjQ3OTBiNGJm
Mi4uYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNmNGU4MTFjM2VhMWI5M2ZjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKQEAgLTEzMSwxMyAr
MTMxLDEzIEBAIHN0YXRpYyBTZWxlY3Rpb25EYXRhIGNvbGxlY3QoY29uc3QgU2VsZWN0aW9uUmFu
Z2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24sIGJvb2wKICAgICB3aGlsZSAoc3RhcnQgJiYgc3Rh
cnQgIT0gc3RvcCkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpz
dGFydCwgc2VsZWN0aW9uKSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJs
ZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4
YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5z
ZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0
cnVlKSk7CisgICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQs
IG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CiAgICAgICAg
ICAgICBpZiAocmVwYWludERpZmZlcmVuY2UpIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8q
IGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpzdGFydCk7IGJsb2NrOyBibG9jayA9
IGNvbnRhaW5pbmdCbG9ja0JlbG93VmlldygqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8mIGJsb2NrSW5mbyA9IG9sZFNlbGVjdGlvbkRhdGEuYmxvY2tzLmFkZChibG9jaywgbnVs
bHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZv
KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGJs
b2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxv
Y2spOworICAgICAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJs
b2NrU2VsZWN0aW9uSW5mbz4oKmJsb2NrKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTIxMywxMyArMjEzLDEzIEBAIEludFJlY3QgU2VsZWN0aW9uUmFu
Z2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVDb250ZW50IGNsaXBUb1Zpc2libGVD
b250CiAgICAgICAgIGlmICgoc3RhcnQtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IHN0YXJ0ID09
IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4
dC5lbmQoKSkKICAgICAgICAgICAgICYmIHN0YXJ0LT5zZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRl
ck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNw
b25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0
IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOworICAgICAgICAgICAgcmVu
ZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQs
IGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpKTsKICAg
ICAgICAgICAgIGF1dG8qIGJsb2NrID0gc3RhcnQtPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAg
ICAgICAgd2hpbGUgKGJsb2NrICYmICFpczxSZW5kZXJWaWV3PigqYmxvY2spKSB7CiAgICAgICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+JiBibG9ja0luZm8g
PSByZW5kZXJlcnMuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAg
ICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25J
bmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50
OjpZZXMpOworICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyU2Vs
ZWN0aW9uSW5mbz4oKmJsb2NrLCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxl
Q29udGVudDo6WWVzKTsKICAgICAgICAgICAgICAgICBibG9jayA9IGJsb2NrLT5jb250YWluaW5n
QmxvY2soKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZv
aWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24s
IFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25J
dGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAgICAgZm9yIChhdXRvKiBjdXJyZW50UmVuZGVyZXIg
PSBzZWxlY3Rpb25TdGFydDsgY3VycmVudFJlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJlciAhPSBz
ZWxlY3Rpb25FbmQ7IGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKSkg
ewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2VsZWN0aW9uKCpjdXJyZW50UmVuZGVy
ZXIsIG1fc2VsZWN0aW9uQ29udGV4dCkpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0cnVlKTsKKyAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0gbWFrZVVu
aXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0cnVlKTsKICNpZiBF
TkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAgICAgICAgIGZvciAoYXV0byYgcmVjdCA6IHNl
bGVjdGlvbkluZm8tPmNvbGxlY3RlZFNlbGVjdGlvblJlY3RzKCkpCiAgICAgICAgICAgICAgICAg
bV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkUmVjdChzZWxlY3Rpb25JbmZvLT5yZXBhaW50Q29u
dGFpbmVyKCksIHJlY3QpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VE
YXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2Nr
UmVwCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9u
SW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVjdGVkQmxvY2tzLmFkZChjb250YWluaW5nQmxvY2ss
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZv
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdC
bG9jayk7CisgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9j
a1NlbGVjdGlvbkluZm8+KCpjb250YWluaW5nQmxvY2spOwogICAgICAgICAgICAgICAgIGNvbnRh
aW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGFpbmluZ0Jsb2NrKCk7CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0
aGVyZXIuYWRkR2FwUmVjdHMoYmxvY2tJbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIGJsb2NrSW5m
by0+cmVjdHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5jcHAKaW5kZXggOGM3NjZlNmRlMmM3NGFkMDM3OTczMzMxZmM3ZjVhNDc0OTAxNWI4ZS4uYzM2
MmY0ZTU3YjAwZjljZTM5YTczZWNlODExYzJjODMyZDY1MGJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtOTk3LDcgKzk5Nyw3IEBAIExh
eW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291
bnQsIGNvbnN0IFJlbmRlckJsb2NrCiBjb25zdCBSdW5SZXNvbHZlciYgTGF5b3V0OjpydW5SZXNv
bHZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3J1blJlc29sdmVyKQotICAgICAgICBtX3J1blJl
c29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJl
ciwgKnRoaXMpOworICAgICAgICBtX3J1blJlc29sdmVyID0gbWFrZVVuaXF1ZTxSdW5SZXNvbHZl
cj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOwogICAgIHJldHVybiAqbV9ydW5SZXNvbHZl
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDFiZjk4ZTRlZWI0M2JhMjJjZGE0ZTZmNWQzYmMyYTVm
OWZjNGI0YjcuLjA2MjViMTZiZDU0MzE5NzNlZDMxZGU5OThhZWQ4ODliMDEyYmEzYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBQYWludEluZm8mIHBhaQogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGRlYnVnU2hhZG93ID0gbnVsbHB0cjsKICAg
ICBpZiAoZmxvdy5zZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVk
KCkpIHsKLSAgICAgICAgZGVidWdTaGFkb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+
KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9y
KDAsIDI1NSwgMCwgMjAwKSk7CisgICAgICAgIGRlYnVnU2hhZG93ID0gbWFrZVVuaXF1ZTxTaGFk
b3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVl
LCBDb2xvcigwLCAyNTUsIDAsIDIwMCkpOwogICAgICAgICB0ZXh0UGFpbnRlci5zZXRTaGFkb3co
ZGVidWdTaGFkb3cuZ2V0KCkpOwogICAgIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgZ2Vu
ZXJhdGVMaW5lQm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5
b3V0KQogICAgICAgICBCaWRpUnVuTGlzdDxCaWRpUnVuPiBiaWRpUnVuczsKICAgICAgICAgZm9y
IChhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsgaXQgIT0gcmFuZ2UuZW5kKCk7ICsraXQpIHsKICAg
ICAgICAgICAgIGF1dG8gcnVuID0gKml0OwotICAgICAgICAgICAgYmlkaVJ1bnMuYXBwZW5kUnVu
KHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocnVuLmxvY2FsU3RhcnQoKSwgcnVuLmxvY2FsRW5k
KCksIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4ocnVuLnJlbmRlcmVyKCkpLCBiaWRpQ29udGV4
dC5wdHIoKSwgVV9MRUZUX1RPX1JJR0hUKSk7CisgICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRS
dW4obWFrZVVuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwg
Y29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0
cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKICAgICAgICAgfQogCiAgICAgICAgIExpbmVJbmZvIGxp
bmVJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKaW5k
ZXggM2JhMTMwZDQ1NTlkNzI5MmQ4OTFmNTUzY2YxNDgwZjg2NmJiMmJhZC4uNGI0M2U2YWNiZTBl
ZWRhZjRlYWY0ZDJlNWQ1YTQ0NjM5MDYwNTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBUZXh0QXV0b1Np
emluZzo6YWRkVGV4dE5vZGUoVGV4dCYgbm9kZSwgZmxvYXQgY2FuZGlkYXRlU2l6ZSkKICAgICBM
T0coVGV4dEF1dG9zaXppbmcsICIgYWRkQXV0b1NpemVkTm9kZSAlcCBjYW5kaWRhdGVTaXplPSVm
IiwgJm5vZGUsIGNhbmRpZGF0ZVNpemUpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0Tm9k
ZXMuYWRkPFRleHRBdXRvU2l6aW5nSGFzaFRyYW5zbGF0b3I+KG5vZGUucmVuZGVyZXIoKS0+c3R5
bGUoKSwgbnVsbHB0cik7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1Npemlu
Z1ZhbHVlPigpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUt
PmFkZFRleHROb2RlKG5vZGUsIGNhbmRpZGF0ZVNpemUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKaW5kZXggMmIxYzFmYTAzY2ExYzU3NTY5
MDI3N2E1ZTgxMjg3MTAxMGQ0NDY3ZS4uZDExNjYxNWE3MjZjNWEwYTk0M2Q5YjlmNmUwOTQwYjk1
ZTY5MDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJy
ZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2Vy
LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIExpbmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRl
c3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgTGluZUluZm8mCiAgICAgICAgIGlm
IChvYmplY3QuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgIHNldFN0YXRp
Y1Bvc2l0aW9ucyhtX2Jsb2NrLCBkb3duY2FzdDxSZW5kZXJCb3g+KG9iamVjdCksIHdpZHRoLnNo
b3VsZEluZGVudFRleHQoKSk7CiAgICAgICAgICAgICBpZiAob2JqZWN0LnN0eWxlKCkuaXNPcmln
aW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5z
KCkuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNv
bHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZXIucnVucygpLmFwcGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlSdW4+KDAsIDEsIG9iamVjdCwgcmVz
b2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSkpOwogICAgICAgICAgICAgICAgIGxpbmVJ
bmZvLmluY3JlbWVudFJ1bnNGcm9tTGVhZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChvYmplY3QuaXNGbG9hdGluZygpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAppbmRleCA0YjE1OTdlOWYyMWM5
Y2Q0YjJmMGQ4ODM0NzQ0Nzc1ZjFkOGJkZTAxLi5kNTIwOTJiNjhlZDhlMmM4ZmRhNTE1YzkwY2Q1
MjIzNTZkNjU1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBJbnRTaGFwZUludGVydmFsIE1hcmdpbklu
dGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KGludCB5KSBjb25zdAogc3RkOjp1bmlxdWVfcHRy
PFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBl
TWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3QKIHsKICAgICBpbnQgbWFyZ2lu
SW50ZXJ2YWxzU2l6ZSA9IChvZmZzZXQoKSA+IHNoYXBlTWFyZ2luKSA/IHNpemUoKSA6IHNpemUo
KSAtIG9mZnNldCgpICogMiArIHNoYXBlTWFyZ2luICogMjsKLSAgICBhdXRvIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpbkludGVydmFsc1NpemUs
IHN0ZDo6bWF4KHNoYXBlTWFyZ2luLCBvZmZzZXQoKSkpOworICAgIGF1dG8gcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjpt
YXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CiAgICAgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ig
bWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ioc2hhcGVNYXJnaW4pOwogCiAgICAgZm9yIChpbnQgeSA9
IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygpLm1heFkoKTsgKyt5KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDMwMjMxYTBiZTFiYmM2M2U0YmUzZDI1
MDUxMmJlZDNkMTk1OTQwOTkuLmY1ZWZlZmRkMzJiMzA1NDdhZGJkOGViMDhmNTRlNjNiMDI0MGZk
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC00Niwy
NCArNDYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
aGFwZT4gY3JlYXRlSW5zZXRTaGFwZShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZHMpCiB7
CiAgICAgQVNTRVJUKGJvdW5kcy5yZWN0KCkud2lkdGgoKSA+PSAwICYmIGJvdW5kcy5yZWN0KCku
aGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94U2hhcGU+KGJv
dW5kcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CiB9CiAKIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUNpcmNsZVNoYXBlKGNvbnN0IEZsb2F0
UG9pbnQmIGNlbnRlciwgZmxvYXQgcmFkaXVzKQogewogICAgIEFTU0VSVChyYWRpdXMgPj0gMCk7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChj
ZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIueSgpIC0gcmFkaXVzLCByYWRpdXMqMiwgcmFkaXVz
KjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55KCkg
LSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykp
OwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVFbGxpcHNlU2hhcGUo
Y29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBjb25zdCBGbG9hdFNpemUmIHJhZGlpKQogewogICAg
IEFTU0VSVChyYWRpaS53aWR0aCgpID49IDAgJiYgcmFkaWkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIu
eCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53
aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwg
Y2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdo
dCgpKjIpLCByYWRpaSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0
ZVBvbHlnb25TaGFwZShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNl
cywgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9s
eWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBvbHlnb25TaGFwZT4oV1RGTW92ZSh2ZXJ0aWNlcyksIGZpbGxSdWxlKTsKIH0KIAog
c3RhdGljIGlubGluZSBGbG9hdFJlY3QgcGh5c2ljYWxSZWN0VG9Mb2dpY2FsKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmxvYXQgbG9naWNhbEJveEhlaWdodCwgV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUpCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3Jl
YXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFwZSwgY29uc3QgTGEKICAgICAgICAg
Y29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVlcyA9IHBvbHlnb24udmFsdWVzKCk7CiAgICAgICAg
IHNpemVfdCB2YWx1ZXNTaXplID0gdmFsdWVzLnNpemUoKTsKICAgICAgICAgQVNTRVJUKCEodmFs
dWVzU2l6ZSAlIDIpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxGbG9hdFBvaW50
Pj4gdmVydGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGbG9hdFBvaW50Pj4odmFsdWVz
U2l6ZSAvIDIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2
ZXJ0aWNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2YWx1ZXNTaXplOyBpICs9IDIpIHsK
ICAgICAgICAgICAgIEZsb2F0UG9pbnQgdmVydGV4KAogICAgICAgICAgICAgICAgIGZsb2F0VmFs
dWVGb3JMZW5ndGgodmFsdWVzLmF0KGkpLCBib3hXaWR0aCksCkBAIC0xNzksNyArMTc5LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGlt
YWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKIAogICAgIEludFJlY3QgaW1hZ2VSZWN0ID0gc25hcHBl
ZEludFJlY3QoaW1hZ2VSKTsKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50UmVj
dChtYXJnaW5SKTsKLSAgICBhdXRvIGludGVydmFscyA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7Cisg
ICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJn
aW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjAp
OiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVk
LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFVuYWNjZWxlcmF0ZWQpOwogCkBAIC0yMTgs
NyArMjE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hh
cGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhc3RlclNoYXBlPihXVEZN
b3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKKyAgICBhdXRvIHJhc3RlclNoYXBl
ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0
LnNpemUoKSk7CiAgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsK
ICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBtYXJnaW47CiAgICAgcmV0dXJuIHJhc3RlclNo
YXBlOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNy
ZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgV3JpCiAKICAgICBG
bG9hdFJlY3QgcmVjdCgwLCAwLCByb3VuZGVkUmVjdC5yZWN0KCkud2lkdGgoKSwgcm91bmRlZFJl
Y3QucmVjdCgpLmhlaWdodCgpKTsKICAgICBGbG9hdFJvdW5kZWRSZWN0IGJvdW5kcyhyZWN0LCBy
b3VuZGVkUmVjdC5yYWRpaSgpKTsKLSAgICBhdXRvIHNoYXBlID0gc3RkOjptYWtlX3VuaXF1ZTxC
b3hTaGFwZT4oYm91bmRzKTsKKyAgICBhdXRvIHNoYXBlID0gbWFrZVVuaXF1ZTxCb3hTaGFwZT4o
Ym91bmRzKTsKICAgICBzaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHNo
YXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAppbmRleCBjZDk0Zjg5YzAyYjBiOGMxMzUxOTQ1
N2U0NGQwZGRhZjZkODdmMWZhLi45NDg0MzE3MTk0N2MwMjMwOWFiN2Y0ZmIxYjk3YzI2Mzg4MmVl
MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0
c2lkZUluZm8uaApAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNoYXBlT3V0c2lkZUluZm8gZmlu
YWwgewogICAgICAgICBJbmZvTWFwJiBpbmZvTWFwID0gU2hhcGVPdXRzaWRlSW5mbzo6aW5mb01h
cCgpOwogICAgICAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogaW5mbyA9IGluZm9NYXAuZ2V0KCZr
ZXkpKQogICAgICAgICAgICAgcmV0dXJuICppbmZvOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGlu
Zm9NYXAuYWRkKCZrZXksIHN0ZDo6bWFrZV91bmlxdWU8U2hhcGVPdXRzaWRlSW5mbz4oa2V5KSk7
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQoJmtleSwgbWFrZVVuaXF1ZTxTaGFw
ZU91dHNpZGVJbmZvPihrZXkpKTsKICAgICAgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOwogICAgIH0KICAgICBzdGF0aWMgdm9pZCByZW1vdmVJbmZvKGNvbnN0IFJlbmRlckJveCYg
a2V5KSB7IGluZm9NYXAoKS5yZW1vdmUoJmtleSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4IDBjOThmOTE2NmY3ZTE1Mjk3MDNiY2Ri
MmM4YzgzY2M4MGJiN2JmMjQuLjc0NGM5MGI4ZmIzZjUyNzY4YTUzOGQyMTM1ODM2MmNhNjM0ODI3
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNw
cApAQCAtMzU4LDcgKzM1OCw3IEBAIFJlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlUGF0aDo6Ymxl
bmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjCiAKICAgICBhdXRv
JiBmcm9tUGF0aCA9IGRvd25jYXN0PEJhc2ljU2hhcGVQYXRoPihmcm9tKTsKIAotICAgIGF1dG8g
cmVzdWx0aW5nUGF0aEJ5dGVzID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4o
KTsKKyAgICBhdXRvIHJlc3VsdGluZ1BhdGhCeXRlcyA9IG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVT
dHJlYW0+KCk7CiAgICAgYnVpbGRBbmltYXRlZFNWR1BhdGhCeXRlU3RyZWFtKCpmcm9tUGF0aC5t
X2J5dGVTdHJlYW0sICptX2J5dGVTdHJlYW0sICpyZXN1bHRpbmdQYXRoQnl0ZXMsIHByb2dyZXNz
KTsKIAogICAgIGF1dG8gcmVzdWx0ID0gQmFzaWNTaGFwZVBhdGg6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdGluZ1BhdGhCeXRlcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29u
dGVudERhdGEuaAppbmRleCBlN2JiMDYxNjUwMmQ5OWQ2ZGI0MzkyYmI0NjhhOWFiNDY5Y2U0OTRh
Li4yYzEyZGQ5YjQwZGQ0MGIzYzBiZjY3NDkzMjJhZTJiMGZkMWUwNzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaApAQCAtOTUsNyArOTUsNyBAQCBj
bGFzcyBJbWFnZUNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBS
ZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250
ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBhdXRv
IGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihtX2ltYWdlLmNvcHlS
ZWYoKSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBtYWtlVW5pcXVlPEltYWdlQ29udGVudERhdGE+
KG1faW1hZ2UuY29weVJlZigpKTsKICAgICAgICAgaW1hZ2UtPnNldEFsdFRleHQoYWx0VGV4dCgp
KTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBjbGFz
cyBUZXh0Q29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRl
OgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1
bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KG1fdGV4dCk7IH0KKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
YWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQogCiAgICAgU3RyaW5nIG1fdGV4
dDsKIH07CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgQ291bnRlckNvbnRlbnREYXRhIGZpbmFs
IDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVh
dGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZp
bmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNv
bnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVy
Q29udGVudERhdGE+KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KG1ha2VVbmlx
dWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOwogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb3VudGVyQ29udGVudD4gbV9jb3VudGVyOwpAQCAtMTkwLDcgKzE5MCw3IEBAIGNsYXNz
IFF1b3RlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogCiBwcml2YXRl
OgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1
bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1ha2VVbmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUoKSk7IH0KIAogICAgIFF1b3RlVHlw
ZSBtX3F1b3RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXll
ci5jcHAKaW5kZXggZjNkOTFkYzhkYmM4ZDllNDZjNjAxYjk1ODQzYjlhOTUyZjNiMmQxZC4uMzAw
MTRkMDRmNzBmYjkxODE3NDI4NzYwM2ZkZWFiNzIzOTU2MTRmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgRmlsbExh
eWVyOjpGaWxsTGF5ZXIoRmlsbExheWVyVHlwZSB0eXBlKQogfQogCiBGaWxsTGF5ZXI6OkZpbGxM
YXllcihjb25zdCBGaWxsTGF5ZXImIG8pCi0gICAgOiBtX25leHQoby5tX25leHQgPyBzdGQ6Om1h
a2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisgICAgOiBtX25leHQo
by5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCiAg
ICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAgICAsIG1feFBvc2l0aW9uKG8ubV94UG9zaXRpb24p
CiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBvc2l0aW9uKQpAQCAtMTE3LDcgKzExNyw3IEBAIEZp
bGxMYXllcjo6fkZpbGxMYXllcigpCiAKIEZpbGxMYXllciYgRmlsbExheWVyOjpvcGVyYXRvcj0o
Y29uc3QgRmlsbExheWVyJiBvKQogewotICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gc3RkOjptYWtl
X3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOworICAgIG1fbmV4dCA9IG8u
bV9uZXh0ID8gbWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxscHRyOwogCiAg
ICAgbV9pbWFnZSA9IG8ubV9pbWFnZTsKICAgICBtX3hQb3NpdGlvbiA9IG8ubV94UG9zaXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRl
eCAyNDliYTQ3ZTU4NDNlY2M2MmU2ZmQ0ZjI2YWYxY2Y1MzhhMTYzZjljLi5mYjQzYzIwZTVjZTk5
ZWNlMTlmNDUyZmQ5Zjg3OTY0ZDgxNGJiN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBSZW5kZXJTdHls
ZSBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjbG9uZVB0cihjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+
KHN0eWxlLCBDbG9uZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxl
LCBDbG9uZSk7CiB9CiAKIFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5
cGUgZGlzcGxheSkKQEAgLTQwOSw3ICs0MDksNyBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6
OmFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldQog
ICAgIFJlbmRlclN0eWxlKiByZXN1bHQgPSBwc2V1ZG8uZ2V0KCk7CiAKICAgICBpZiAoIW1fY2Fj
aGVkUHNldWRvU3R5bGVzKQotICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKKyAgICAgICAgbV9jYWNoZWRQc2V1ZG9TdHls
ZXMgPSBtYWtlVW5pcXVlPFBzZXVkb1N0eWxlQ2FjaGU+KCk7CiAKICAgICBtX2NhY2hlZFBzZXVk
b1N0eWxlcy0+YXBwZW5kKFdURk1vdmUocHNldWRvKSk7CiAKQEAgLTEwNTgsNyArMTA1OCw3IEBA
IHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgYXV0byYgZGF0YSA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCk7CiAgICAgaWYgKCFkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpCi0gICAg
ICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKICAgICBkYXRhLmN1c3RvbVBh
aW50V2F0Y2hlZFByb3BlcnRpZXMtPmFkZChuYW1lKTsKIH0KIApAQCAtMTMwMSw3ICsxMzAxLDcg
QEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFn
ZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIHNl
dENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNl
Tm9uTnVsbCgpKSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50
RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwoKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5
bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQpAQCAtMTMxMCwx
MyArMTMxMCwxMyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGFkZCkKICAgICBpZiAoYWRkICYmIGRhdGEuY29udGVudCkgewogICAgICAg
ICBhdXRvJiBsYXN0ID0gbGFzdENvbnRlbnQoKmRhdGEuY29udGVudCk7CiAgICAgICAgIGlmICgh
aXM8VGV4dENvbnRlbnREYXRhPihsYXN0KSkKLSAgICAgICAgICAgIGxhc3Quc2V0TmV4dChzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CisgICAgICAgICAgICBsYXN0
LnNldE5leHQobWFrZVVuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRDb250ZW50ID0gZG93bmNhc3Q8VGV4dENvbnRl
bnREYXRhPihsYXN0KTsKICAgICAgICAgICAgIHRleHRDb250ZW50LnNldFRleHQodGV4dENvbnRl
bnQudGV4dCgpICsgc3RyaW5nKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGRh
dGEuY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOwor
ICAgICAgICBkYXRhLmNvbnRlbnQgPSBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5n
KTsKICAgICAgICAgYXV0byYgYWx0VGV4dCA9IGRhdGEuYWx0VGV4dDsKICAgICAgICAgaWYgKCFh
bHRUZXh0LmlzTnVsbCgpKQogICAgICAgICAgICAgZGF0YS5jb250ZW50LT5zZXRBbHRUZXh0KGFs
dFRleHQpOwpAQCAtMTMyNywxMiArMTMyNywxMiBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250
ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gY291bnRlciwgYm9vbCBhZGQpCiB7
CiAgICAgaWYgKCFjb3VudGVyKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6
Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7
CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShj
b3VudGVyKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVU
eXBlIHF1b3RlLCBib29sIGFkZCkKIHsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8
UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1
ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6
OnNldENvbnRlbnRBbHRUZXh0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTU1MSw3ICsxNTUx
LDcgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJl
Y3RpdmVzKCkKIHsKICAgICBhdXRvJiBtYXAgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLmNvdW50ZXJEaXJlY3RpdmVzOwogICAgIGlmICghbWFwKQotICAgICAgICBtYXAgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCk7CisgICAgICAgIG1hcCA9IG1ha2VV
bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAt
MTY3MSwxNCArMTY3MSwxNCBAQCB2b2lkIFJlbmRlclN0eWxlOjphZGp1c3RUcmFuc2l0aW9ucygp
CiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlQW5pbWF0aW9ucygpCiB7CiAgICAg
aWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMpCi0gICAgICAg
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS5hbmltYXRpb25zID0gbWFrZVVuaXF1ZTxBbmltYXRpb25MaXN0PigpOwogICAgIHJl
dHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0aW9uczsKIH0KIAogQW5pbWF0aW9u
TGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMpCi0gICAgICAgIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFu
aW1hdGlvbkxpc3Q+KCk7CisgICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCku
dHJhbnNpdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICpt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAppbmRleCAy
MGIyYTgxMTRiMGM4ZTllYmQ0ODI3MDc5YTk4MjBmMmVjMGRjZGMyLi42ZTM3Y2Y4ZmI4YWJhNTVl
YzMzMGE5NjAzM2E4YTk1NGM3Y2IwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBA
IFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKCkKIAogaW5saW5lIFN0eWxl
U2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0
YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlU2hhZG93U1ZHRGF0YT4oKQotICAgICwg
c2hhZG93KG90aGVyLnNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm90aGVy
LnNoYWRvdykgOiBudWxscHRyKQorICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IG1ha2VVbmlx
dWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggM2Q2MWM5NGMw
MTY2MTYwODU4ZGFiZDg0MDlmYzQwODY3MGU1MDFjYS4uYzE3ZWFmODU5YjBiZmFhN2RhYmMwMDhk
NGU3NDBmYzYzMGE0YjgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcApAQCAtMzMsNyArMzMsNyBAQCBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNv
bnN0IFNoYWRvd0RhdGEmIG8pCiAgICAgLCBtX2NvbG9yKG8ubV9jb2xvcikKICAgICAsIG1fc3R5
bGUoby5tX3N0eWxlKQogICAgICwgbV9pc1dlYmtpdEJveFNoYWRvdyhvLm1faXNXZWJraXRCb3hT
aGFkb3cpCi0gICAgLCBtX25leHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0Rh
dGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQorICAgICwgbV9uZXh0KG8ubV9uZXh0ID8gbWFrZVVu
aXF1ZTxTaGFkb3dEYXRhPigqby5tX25leHQpIDogbnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuY3BwCmluZGV4IGFkMmNiZDk1N2VlZjgyNTYwY2ZiMzUyZTlmNTBiMzllNjMzYTI2ZmYuLjk2
ZGJiYTAwN2U2YTY0YTdkNjk3YTI5YTIxZDYyMWFkNDQ3NTRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5j
cHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBpbmxpbmUgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5
bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYQogICAgICwgdmlz
aXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihvLnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3Ip
CiAgICAgLCBjYXJldENvbG9yKG8uY2FyZXRDb2xvcikKICAgICAsIHZpc2l0ZWRMaW5rQ2FyZXRD
b2xvcihvLnZpc2l0ZWRMaW5rQ2FyZXRDb2xvcikKLSAgICAsIHRleHRTaGFkb3coby50ZXh0U2hh
ZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxw
dHIpCisgICAgLCB0ZXh0U2hhZG93KG8udGV4dFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0
YT4oKm8udGV4dFNoYWRvdykgOiBudWxscHRyKQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRh
dGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQpCiAgICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0
aXZlWm9vbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA2ZmJiMmI3YjBjM2ViMDNlODY5
YTFlYWFjOTE2MTExOWM5YzYxZTliLi5iZGQwMTkxNWFhMjc4ZGQ2YTY2NDhmZjRjM2ZiZGIzZmNj
ZDE0MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBp
bmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwgc2Nyb2xsU25hcEFyZWEoby5zY3JvbGxTbmFw
QXJlYSkKICNlbmRpZgogICAgICwgY29udGVudChvLmNvbnRlbnQgPyBvLmNvbnRlbnQtPmNsb25l
KCkgOiBudWxscHRyKQotICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZl
cyA/IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVj
dGl2ZXMpIDogbnVsbHB0cikKKyAgICAsIGNvdW50ZXJEaXJlY3RpdmVzKG8uY291bnRlckRpcmVj
dGl2ZXMgPyBtYWtlVW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCpvLmNvdW50ZXJEaXJlY3Rp
dmVzKSA6IG51bGxwdHIpCiAgICAgLCBhbHRUZXh0KG8uYWx0VGV4dCkKLSAgICAsIGJveFNoYWRv
dyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93
KSA6IG51bGxwdHIpCisgICAgLCBib3hTaGFkb3coby5ib3hTaGFkb3cgPyBtYWtlVW5pcXVlPFNo
YWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBudWxscHRyKQogICAgICwgd2lsbENoYW5nZShvLndp
bGxDaGFuZ2UpCiAgICAgLCBib3hSZWZsZWN0KG8uYm94UmVmbGVjdCkKLSAgICAsIGFuaW1hdGlv
bnMoby5hbmltYXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby5hbmlt
YXRpb25zKSA6IG51bGxwdHIpCi0gICAgLCB0cmFuc2l0aW9ucyhvLnRyYW5zaXRpb25zID8gc3Rk
OjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby50cmFuc2l0aW9ucykgOiBudWxscHRyKQor
ICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+
KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKKyAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlv
bnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIp
CiAgICAgLCBtYXNrKG8ubWFzaykKICAgICAsIG1hc2tCb3hJbWFnZShvLm1hc2tCb3hJbWFnZSkK
ICAgICAsIHBhZ2VTaXplKG8ucGFnZVNpemUpCkBAIC0xNzAsNyArMTcwLDcgQEAgaW5saW5lIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3Qg
U3R5bGVSYXJlTm9uSW4KICAgICAsIGp1c3RpZnlJdGVtcyhvLmp1c3RpZnlJdGVtcykKICAgICAs
IGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYpCiAgICAgLCBjdXN0b21Qcm9wZXJ0aWVzKG8uY3Vz
dG9tUHJvcGVydGllcykKLSAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0
b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmlu
Zz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKKyAgICAsIGN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVz
ID8gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMpIDogbnVsbHB0cikKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiAgICAgLCB0b3Vj
aEFjdGlvbnMoby50b3VjaEFjdGlvbnMpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMmM2ZjMxNzhlZWIyNmM3YjJjMGQ5
NWFlMTA4YjdlZmNjNmUyMmM0ZS4uMjRjZGU0YmQ2MWU3MTRjMjMyM2I5ZTVjZDJjZjI2OWUyODQ1
ZjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVuZGVyU1ZHSW1hZ2U6OlJlbmRlclNWR0ltYWdlKFNW
R0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRl
clNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9uZWVkc0Jv
dW5kYXJpZXNVcGRhdGUodHJ1ZSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkK
LSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3Vy
Y2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3VyY2UobWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291
cmNlPigpKQogewogICAgIGltYWdlUmVzb3VyY2UoKS5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcAppbmRl
eCAzYzMxMDU2ZDFjYWIxZmVhMTA0OTA3ODBkMDBjOGRjZDJjNzk4MDY4Li5iYTFjZDA1MmRhZGFh
MWNlMTg0MWM3YzIzY2FmMzNmYWE0ZTM0N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlbmRlclNW
R0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwgUmVu
ZGVyU3R5bGUmJiBzdHlsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJT
VkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtl
VW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxM
b2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IDY3ZTZmOTg5
N2QyNzc0NGZkNDEzM2ZmMjc2NzE0YzRlOWRhNjY1YjAuLmRiZjQ5MDNmODlmNGRjOTJlZGZmMzA1
MzkyNTg2OWYzMmUyZDk5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUmVu
ZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBSZW5kZXJT
VkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KCkKIHsKLSAgICBhdXRvIGJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHSW5saW5lVGV4dEJveD4oKnRoaXMpOworICAgIGF1dG8gYm94ID0gbWFrZVVu
aXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9n
aWNhbEhlaWdodCgpOwogICAgIHJldHVybiBib3g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDFi
M2VmMjRjYzkyZDIwNTJhMzRhYWQyMDg4MjMzMGUxYTEyM2I4NGYuLjFhZDI2NDk2NDY3MDljMjNm
MGRiOWNmYWU0Yjg2M2MyNDdiMzY5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC04OCw3ICs4OCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5n
Qm94ID0gZmlsdGVyLnRhcmdldEJvdW5kaW5nQm94KCk7CiAKICAgICAvLyBBZGQgZWZmZWN0cyB0
byB0aGUgYnVpbGRlcgotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRmls
dGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOworICAgIGF1dG8gYnVp
bGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRl
KGZpbHRlcikpOwogICAgIGJ1aWxkZXItPnNldFByaW1pdGl2ZVVuaXRzKGZpbHRlckVsZW1lbnQo
KS5wcmltaXRpdmVVbml0cygpKTsKICAgICBidWlsZGVyLT5zZXRUYXJnZXRCb3VuZGluZ0JveCh0
YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgCkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBbHJlYWR5IGJ1aWx0LCBvciB3
ZSdyZSBpbiBhIGN5Y2xlLCBvciB3ZSdyZSBtYXJrZWQgZm9yIHJlbW92YWwuIFJlZ2FyZGxlc3Ms
IGp1c3QgZG8gbm90aGluZyBtb3JlIG5vdy4KICAgICB9CiAKLSAgICBhdXRvIGZpbHRlckRhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckRhdGE+KCk7CisgICAgYXV0byBmaWx0ZXJEYXRhID0g
bWFrZVVuaXF1ZTxGaWx0ZXJEYXRhPigpOwogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0Jv
eCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCk7CiAKICAgICBmaWx0ZXJEYXRhLT5ib3Vu
ZGFyaWVzID0gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJFbGVt
ZW50PigmZmlsdGVyRWxlbWVudCgpLCBmaWx0ZXJFbGVtZW50KCkuZmlsdGVyVW5pdHMoKSwgdGFy
Z2V0Qm91bmRpbmdCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggZDhhZDA4MDQ2NmM1YzZk
OWVlY2YwNzhjZGZmNjQyNmM2MTRhMGNlMi4uNTUyY2U1YTMzYTgwNjJlNmJlZTBiMDRhZTNmMTYw
ZjA5OWViNTJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBjb25zdCBSZW4KIAogICAgIGF1dG8mIGdyYWRpZW50RGF0YSA9IG1fZ3JhZGll
bnRNYXAuYWRkKCZyZW5kZXJlciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICgh
Z3JhZGllbnREYXRhKQotICAgICAgICBncmFkaWVudERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdy
YWRpZW50RGF0YT4oKTsKKyAgICAgICAgZ3JhZGllbnREYXRhID0gbWFrZVVuaXF1ZTxHcmFkaWVu
dERhdGE+KCk7CiAKICAgICBib29sIGlzUGFpbnRpbmdUZXh0ID0gcmVzb3VyY2VNb2RlLmNvbnRh
aW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1RleHQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3Bw
CmluZGV4IGFhNTc2NWVkMzc5YjZhYjFiOTQ0NzI2ZjViNWVlNDU0MzgzYzQ2NGUuLjRjODE5Yjli
YzU1ZGMyYmZhODJmYmJjMDk3ZjYzNzU4NWI1YjEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2Uo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBib29sIG1pc3NpbmdN
YXNrZXJEYXRhID0gIW1fbWFza2VyLmNvbnRhaW5zKCZyZW5kZXJlcik7CiAgICAgaWYgKG1pc3Np
bmdNYXNrZXJEYXRhKQotICAgICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBzdGQ6Om1ha2Vf
dW5pcXVlPE1hc2tlckRhdGE+KCkpOworICAgICAgICBtX21hc2tlci5zZXQoJnJlbmRlcmVyLCBt
YWtlVW5pcXVlPE1hc2tlckRhdGE+KCkpOwogCiAgICAgTWFza2VyRGF0YSogbWFza2VyRGF0YSA9
IG1fbWFza2VyLmdldCgmcmVuZGVyZXIpOwogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRy
YW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9P
dXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAppbmRleCAyOWU4
ZTdjMjQ3NTY1ODc5MmVlNGVkNGVkMDgyMGZhZWVjOWJkYzBjLi5kZjAxN2JhMWJmYzBjY2Y3YWVh
OTNhM2JiMmY3ZmM3ODhmNjk2Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCkBAIC0zMSw2ICszMSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogc3RydWN0IE1hc2tl
ckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApp
bmRleCBjYzJjYmZjZjBmZTlhNTllY2UxNWY1MmYzNTcyZGI1OWQxNjMyMGQ2Li4zMWJjNWYxOTMx
YmRhZTUwYWFjNjYxMzU5ZmMwYTI2ZjE3ODU4NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0x
MTcsNyArMTE3LDcgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVp
bGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIGF1dG8gcGF0dGVybkRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EYXRhPigpOworICAgIGF1dG8gcGF0dGVybkRhdGEgPSBt
YWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwog
CiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCAzNGIwYWU3
NWJkYzAwNTY1NzZkNTEzODAxODVlZmU2YmM3MmM3MDZlLi42YTY3MTE4ZmYxYjI1OGIzMDNjOTU2
Mzg1OTNmNDc0ZWU4OWJiZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcApAQCAtNzksNyArNzksNyBAQCBSZW5kZXJTVkdTaGFwZTo6flJl
bmRlclNWR1NoYXBlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbmRlclNWR1NoYXBlOjp1cGRhdGVT
aGFwZUZyb21FbGVtZW50KCkKIHsKLSAgICBtX3BhdGggPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+
KHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KCZncmFwaGljc0VsZW1lbnQoKSkpOworICAgIG1fcGF0
aCA9IG1ha2VVbmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdyYXBoaWNzRWxl
bWVudCgpKSk7CiAgICAgcHJvY2Vzc01hcmtlclBvc2l0aW9ucygpOwogCiAgICAgbV9maWxsQm91
bmRpbmdCb3ggPSBjYWxjdWxhdGVPYmplY3RCb3VuZGluZ0JveCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4IGJmNzg2NDQzZGRkNjBkNjIx
YmNkNTc5Yjg3NzBlZGNkOTFkMjlmYTkuLjljNzM3Y2FmZjhiOTI3NmNjNDEwNjAyZjU3OWE5ZjM2
NGU1YTA4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcihS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIpCiAgICAgQVNTRVJUKGNsaXBwZXItPnJl
c291cmNlVHlwZSgpID09IENsaXBwZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9j
bGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRh
dGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5jbGlwcGVyID0gY2xpcHBl
cjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyOSw3ICs1MjksNyBAQCBib29sIFNWR1Jlc291cmNl
czo6c2V0RmlsdGVyKFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpCiAgICAgQVNTRVJU
KGZpbHRlci0+cmVzb3VyY2VUeXBlKCkgPT0gRmlsdGVyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlm
ICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7Cisg
ICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+ZmlsdGVy
ID0gZmlsdGVyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgU1ZH
UmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2Vy
U3RhcnQpCiAgICAgQVNTRVJUKG1hcmtlclN0YXJ0LT5yZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJS
ZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1fbWFya2Vy
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9tYXJrZXJE
YXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRhLT5tYXJr
ZXJTdGFydCA9IG1hcmtlclN0YXJ0OwogICAgIHJldHVybiB0cnVlOwpAQCAtNTcxLDcgKzU3MSw3
IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJNaWQoUmVuZGVyU1ZHUmVzb3VyY2VNYXJr
ZXIqIG1hcmtlck1pZCkKICAgICBBU1NFUlQobWFya2VyTWlkLT5yZXNvdXJjZVR5cGUoKSA9PSBN
YXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEpCi0gICAgICAgIG1f
bWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsKKyAgICAgICAgbV9t
YXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAgbV9tYXJrZXJEYXRh
LT5tYXJrZXJNaWQgPSBtYXJrZXJNaWQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01OTIsNyArNTky
LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZChSZW5kZXJTVkdSZXNvdXJjZU1h
cmtlciogbWFya2VyRW5kKQogICAgIEFTU0VSVChtYXJrZXJFbmQtPnJlc291cmNlVHlwZSgpID09
IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAg
bV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBt
X21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRh
dGEtPm1hcmtlckVuZCA9IG1hcmtlckVuZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxMyw3ICs2
MTMsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFza2VyKFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyKiBtYXNrZXIpCiAgICAgQVNTRVJUKG1hc2tlci0+cmVzb3VyY2VUeXBlKCkgPT0gTWFza2Vy
UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAg
ICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBl
ckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEg
PSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVy
RmlsdGVyTWFza2VyRGF0YS0+bWFza2VyID0gbWFza2VyOwogICAgIHJldHVybiB0cnVlOwpAQCAt
NjM2LDcgKzYzNiw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWxsKFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyKiBmaWxsKQogICAgICAgICAgICB8fCBmaWxsLT5yZXNvdXJjZVR5cGUoKSA9
PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURh
dGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJv
a2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ry
b2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPmZpbGwgPSBmaWxsOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtNjU5LDcgKzY1OSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRTdHJv
a2UoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHN0cm9rZSkKICAgICAgICAgICAgfHwgc3Ry
b2tlLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAg
ICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRh
ID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEt
PnN0cm9rZSA9IHN0cm9rZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXggMTkxOTVhYTFkYWJj
NjZlNGIzNTY1OTcyZWM5MWY4OTQ3N2Y0MDM5Yi4uMWVlYjc4ZjU3YjNlYmIzMWI0Y2RlOGU1MzAy
ZGRlMDllMDQ4YzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXND
YWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBj
b25zdAogICAgIEFTU0VSVCghbV9jYWNoZS5jb250YWlucygmcmVuZGVyZXIpKTsKIAogICAgIC8v
IEJ1aWxkIGEgbGlzdCBvZiBhbGwgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFzc2Vk
IFJlbmRlck9iamVjdAotICAgIGF1dG8gbmV3UmVzb3VyY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdSZXNvdXJjZXM+KCk7CisgICAgYXV0byBuZXdSZXNvdXJjZXMgPSBtYWtlVW5pcXVlPFNWR1Jl
c291cmNlcz4oKTsKICAgICBpZiAoIW5ld1Jlc291cmNlcy0+YnVpbGRDYWNoZWRSZXNvdXJjZXMo
cmVuZGVyZXIsIHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKaW5kZXggMzI0
MTAyNTg0YzFmMTEzZDBlZWQzMzIxNGE2N2Y1NTM0YWIwZjU5YS4uODEwYTBiODgwYThhYTRkYWUw
MmZhYjQ0NmE5NDFlZGQ5YzVhNzFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBA
IHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4
dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAgICAgaWYgKG1faXNDb21wbGV4VGV4dCkKICAgICAg
ICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbnVsbHB0cjsKICAgICBlbHNlCi0gICAgICAgIG1f
c2ltcGxlV2lkdGhJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2lkdGhJdGVyYXRvcj4oJnNj
YWxlZEZvbnQsIG1fcnVuKTsKKyAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbWFrZVVu
aXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4pOwogfQogCiBzdHJ1Y3QgTWVh
c3VyZVRleHREYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGQzN2JlZThjYmNlNTU2MTUxMWIyNGUz
NjRlMWFmNjRhYWQ3YWE3NWQuLmU2YjI3MzIwZDkyZmU4NTZkODM3NDEwOGVkOTU0MmUwOTFlZWFm
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMTIyLDIyICsxMjIsMjIgQEAgc3RhdGljIHZvaWQgZ2V0
SW5saW5lUnVuKFJlbmRlck9iamVjdCogc3RhcnQsIFJlbmRlck9iamVjdCogYm91bmRhcnksIFJl
bmRlck9iamUKIAogUmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKFJlbmRlclZp
ZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVy
KHN0ZDo6bWFrZV91bmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKLSAgICAsIG1fbGlzdEJ1aWxk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaXN0PigqdGhpcykpCi0gICAgLCBtX211bHRpQ29sdW1uQnVp
bGRlcihzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ29sdW1uPigqdGhpcykpCi0gICAgLCBtX3RhYmxl
QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlPigqdGhpcykpCi0gICAgLCBtX3J1YnlCdWls
ZGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVieT4oKnRoaXMpKQotICAgICwgbV9mb3JtQ29udHJvbHNC
dWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhpcykpCi0gICAgLCBtX2Js
b2NrQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigqdGhpcykpCi0gICAgLCBtX2Jsb2Nr
Rmxvd0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKLSAgICAsIG1f
aW5saW5lQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPElubGluZT4oKnRoaXMpKQotICAgICwgbV9z
dmdCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8U1ZHPigqdGhpcykpCisgICAgLCBtX2ZpcnN0TGV0
dGVyQnVpbGRlcihtYWtlVW5pcXVlPEZpcnN0TGV0dGVyPigqdGhpcykpCisgICAgLCBtX2xpc3RC
dWlsZGVyKG1ha2VVbmlxdWU8TGlzdD4oKnRoaXMpKQorICAgICwgbV9tdWx0aUNvbHVtbkJ1aWxk
ZXIobWFrZVVuaXF1ZTxNdWx0aUNvbHVtbj4oKnRoaXMpKQorICAgICwgbV90YWJsZUJ1aWxkZXIo
bWFrZVVuaXF1ZTxUYWJsZT4oKnRoaXMpKQorICAgICwgbV9ydWJ5QnVpbGRlcihtYWtlVW5pcXVl
PFJ1Ynk+KCp0aGlzKSkKKyAgICAsIG1fZm9ybUNvbnRyb2xzQnVpbGRlcihtYWtlVW5pcXVlPEZv
cm1Db250cm9scz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9j
az4oKnRoaXMpKQorICAgICwgbV9ibG9ja0Zsb3dCdWlsZGVyKG1ha2VVbmlxdWU8QmxvY2tGbG93
PigqdGhpcykpCisgICAgLCBtX2lubGluZUJ1aWxkZXIobWFrZVVuaXF1ZTxJbmxpbmU+KCp0aGlz
KSkKKyAgICAsIG1fc3ZnQnVpbGRlcihtYWtlVW5pcXVlPFNWRz4oKnRoaXMpKQogI2lmIEVOQUJM
RShNQVRITUwpCi0gICAgLCBtX21hdGhNTEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxNYXRoTUw+
KCp0aGlzKSkKKyAgICAsIG1fbWF0aE1MQnVpbGRlcihtYWtlVW5pcXVlPE1hdGhNTD4oKnRoaXMp
KQogI2VuZGlmCi0gICAgLCBtX2NvbnRpbnVhdGlvbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxD
b250aW51YXRpb24+KCp0aGlzKSkKKyAgICAsIG1fY29udGludWF0aW9uQnVpbGRlcihtYWtlVW5p
cXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAg
ICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGdWxsU2NyZWVuPigqdGhp
cykpCisgICAgLCBtX2Z1bGxTY3JlZW5CdWlsZGVyKG1ha2VVbmlxdWU8RnVsbFNjcmVlbj4oKnRo
aXMpKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNfY3VycmVudCB8fCAmbV92aWV3
ICE9ICZzX2N1cnJlbnQtPm1fdmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCA5YTk4ZDI1YzMyYjkz
NjRiNDZhNmFlY2ZjM2NmZmRjNmM0NjZmNGQyLi5iOWQyMDdmN2RmZDMyNDZmZTAzMDg2Yzg0Y2Ey
MDFiY2I3YjkxOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUmVuZGVyVHJl
ZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpF
bGVtZW50VXBkYXRlcyoKIAogUmVuZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX2dl
bmVyYXRlZENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmF0ZWRDb250ZW50PigqdGhpcykp
CisgICAgLCBtX2dlbmVyYXRlZENvbnRlbnQobWFrZVVuaXF1ZTxHZW5lcmF0ZWRDb250ZW50Pigq
dGhpcykpCiAgICAgLCBtX2J1aWxkZXIocmVuZGVyVmlldygpKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCmluZGV4IDdmZTdmNjg3MzIwNDEwZWYwNDgzODdkNDgx
ZjkyN2IxMmMyMzgzYWMuLmI5YzcyZWI4ODBlOWJiODc1OThmNDE0NDA3N2QwMjMwMTY2NjViODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgZW51bSBjbGFzcyBJbnB1dFNvdXJjZSB7CiB9OwogCiBjbGFzcyBVc2VySW5wdXRCcmlkZ2Ug
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFVzZXJJbnB1dEJyaWRnZSk7CiBwdWJsaWM6CiAgICAgVXNlcklucHV0QnJpZGdlKFBhZ2UmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAKaW5kZXggZGFlMTFjYjJm
NjI4OTkxODQ1M2ExMjgwOWFlNDNiODEyNGI2YjEyYi4uNmQ2OTVhNjYwZDBlNGUwNDVhMjZkYWJl
MzMzMWVjYTI2ZmFkMmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJ
bnZhbGlkYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRv
ci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkRGlydHlBbGxTdHlsZShj
b25zdCBWZWN0b3I8U3R5bGVTaGVldENvbnRlbnRzKj4mIHNoZWV0cykKIH0KIAogSW52YWxpZGF0
b3I6OkludmFsaWRhdG9yKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRz
LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRpYVF1ZXJ5RXZhbHVhdG9yKQotICAgIDog
bV9vd25lZFJ1bGVTZXQoc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpKQorICAgIDogbV9vd25l
ZFJ1bGVTZXQobWFrZVVuaXF1ZTxSdWxlU2V0PigpKQogICAgICwgbV9ydWxlU2V0KCptX293bmVk
UnVsZVNldCkKICAgICAsIG1fZGlydGllc0FsbFN0eWxlKHNob3VsZERpcnR5QWxsU3R5bGUoc2hl
ZXRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAppbmRleCA0ZDgx
NDhiNGUzMWQ3NGQ2YTBhNTE3NTRkZWU1ZWFiODA3NTlhYmFhLi4wNjJkNTk2NGQ3N2VjNWRiODNi
M2Y0MWFjYmFhODdlZmNlOThkZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlv
bnMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZWxhdGlvbnM+IGNvbW1p
dFJlbGF0aW9uc1RvUmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zCiAKICAgICBh
dXRvIGFwcGVuZFN0eWxlUmVsYXRpb24gPSBbJnJlbWFpbmluZ1JlbGF0aW9uc10gKGNvbnN0IFJl
bGF0aW9uJiByZWxhdGlvbikgewogICAgICAgICBpZiAoIXJlbWFpbmluZ1JlbGF0aW9ucykKLSAg
ICAgICAgICAgIHJlbWFpbmluZ1JlbGF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVsYXRpb25z
PigpOworICAgICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gbWFrZVVuaXF1ZTxSZWxhdGlv
bnM+KCk7CiAgICAgICAgIHJlbWFpbmluZ1JlbGF0aW9ucy0+YXBwZW5kKHJlbGF0aW9uKTsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCmluZGV4IDlmMGQxYWQ3NDkwYmZl
YWIyNDA3Y2U3YmM4OGIwOTUxMTZkMGIyMjIuLmRjYjY1YmMwOWMzNDc3OWI2M2EyOTMyNGUyNGQz
NzJiZmM2YTIzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC05Niw3ICs5
Niw3IEBAIFN0eWxlUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCiAgICAgaWYgKCFtX3Jlc29s
dmVyKSB7CiAgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVy
IHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciwgdHJ1ZSB9OwogCi0gICAgICAgIG1fcmVzb2x2
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOworICAgICAg
ICBtX3Jlc29sdmVyID0gbWFrZVVuaXF1ZTxTdHlsZVJlc29sdmVyPihtX2RvY3VtZW50KTsKIAog
ICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkgewogICAgICAgICAgICAgbV9kb2N1bWVudC5mb250
U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsKQEAgLTU2Myw3ICs1NjMsNyBAQCBjb25zdCBWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNGb3JJbnNw
ZWN0b3IoKQogYm9vbCBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyhjb25zdCBDU1NT
dHlsZVNoZWV0KiBzaGVldCkgY29uc3QKIHsKICAgICBpZiAoIW1fd2Vha0NvcHlPZkFjdGl2ZVN0
eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCkgewotICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVT
dHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29u
c3QgQ1NTU3R5bGVTaGVldCo+PigpOworICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNo
ZWV0TGlzdEZvckZhc3RMb29rdXAgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgQ1NTU3R5bGVT
aGVldCo+PigpOwogICAgICAgICBmb3IgKGF1dG8mIGFjdGl2ZVN0eWxlU2hlZXQgOiBtX2FjdGl2
ZVN0eWxlU2hlZXRzKQogICAgICAgICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExp
c3RGb3JGYXN0TG9va3VwLT5hZGQoYWN0aXZlU3R5bGVTaGVldC5nZXQoKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDg0NmEyMzFhZDJi
MThiNWQ3ZjI5NDkwMTZkMDlmMjIzZGQ2OWU4OGIuLmEwMGY0ZmUwZjRjY2I1MmRkODMxYTk0ZTI2
YTU4NjRlNWMxYjc5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJl
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlPiBUcmVlUmVz
b2x2ZXI6OnJlc29sdmUoKQogCiAgICAgbV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCA9IG1fZG9j
dW1lbnQuc3R5bGVTY29wZSgpLmhhc1BlbmRpbmdTaGVldHNCZWZvcmVCb2R5KCk7CiAKLSAgICBt
X3VwZGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlPihtX2RvY3VtZW50KTsKKyAgICBtX3Vw
ZGF0ZSA9IG1ha2VVbmlxdWU8VXBkYXRlPihtX2RvY3VtZW50KTsKICAgICBtX3Njb3BlU3RhY2su
YXBwZW5kKGFkb3B0UmVmKCpuZXcgU2NvcGUobV9kb2N1bWVudCkpKTsKICAgICBtX3BhcmVudFN0
YWNrLmFwcGVuZChQYXJlbnQobV9kb2N1bWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IGJjNTE0MzRiMGIyYjhlMGJmNzdlNTdhNGE3
NmU0ZDRiY2VlZTk5NjUuLjI1ZjM4NjNkMDc5NTRhYzhkNmE2M2U2ODY0YTFmMDc2YjBkNTFhZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjpTVkdEb2N1bWVudEV4dGVuc2lvbnMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1
bWVudChkb2N1bWVudCkKLSAgICAsIG1fcmVzb3VyY2VzQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxT
VkdSZXNvdXJjZXNDYWNoZT4oKSkKKyAgICAsIG1fcmVzb3VyY2VzQ2FjaGUobWFrZVVuaXF1ZTxT
VkdSZXNvdXJjZXNDYWNoZT4oKSkKICAgICAsIG1fYXJlQW5pbWF0aW9uc1BhdXNlZCghZG9jdW1l
bnQucGFnZSgpIHx8ICFkb2N1bWVudC5wYWdlKCktPmlzVmlzaWJsZSgpKQogewogfQpAQCAtMTQ2
LDcgKzE0Niw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3Vy
Y2UoY29uc3QgQXRvbVN0cmluZyYgaWQsIEVsZW1lbnQmIGVsCiAKICAgICBhdXRvIHJlc3VsdCA9
IG1fcGVuZGluZ1Jlc291cmNlcy5hZGQoaWQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ0VsZW1lbnRzPigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
bWFrZVVuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS0+YWRkKCZlbGVtZW50KTsKIAogICAgIGVsZW1lbnQuc2V0SGFzUGVuZGluZ1Jlc291cmNlcygp
OwpAQCAtMjc5LDcgKzI3OSw3IEBAIEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiBTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OnNldE9mRWxlbWVudHNSZWZlcmVuY2luZ1RhcmdldChTVkdFCiB2b2lkIFNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KFNWR0VsZW1lbnQm
IHJlZmVyZW5jaW5nRWxlbWVudCwgU1ZHRWxlbWVudCYgcmVmZXJlbmNlZEVsZW1lbnQpCiB7CiAg
ICAgYXV0byByZXN1bHQgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZW5zdXJlKCZyZWZlcmVuY2Vk
RWxlbWVudCwgWyZyZWZlcmVuY2luZ0VsZW1lbnRdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8SGFzaFNldDxTVkdFbGVtZW50Kj4+KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdF
bGVtZW50Kj4geyAmcmVmZXJlbmNpbmdFbGVtZW50IH0pOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0PFNWR0VsZW1l
bnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7CiAgICAgfSk7CiAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKCZyZWZlcmVu
Y2luZ0VsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGE4MDk2ZGRhZGE4
MWVhZDZhN2ExZWEzMjRjZDg1MDY3ZjVjMGIyOGIuLmU0ZGUzYjc0OWYwYTAwMzliYzVjNGNmY2Qw
OGUxOTM5NmNkNjU2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTE2MSw3ICsx
NjEsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBDU1NQ
cm9wZXJ0eUlEPiBjcmVhdGVBdHRyaWJ1dGVOYW1lVAogU1ZHRWxlbWVudDo6U1ZHRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBT
dHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVTVkdFbGVtZW50KQogICAgICwg
U1ZHTGFuZ1NwYWNlKHRoaXMpCi0gICAgLCBtX3Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5KHN0ZDo6
bWFrZV91bmlxdWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+KCkpCisgICAgLCBtX3Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5KG1ha2VVbmlxdWU8U1ZHUHJvcGVydHlBbmltYXRvckZhY3Rvcnk+
KCkpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VGbGFnLCBbXSB7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdFbGVtZW50
Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSBjaGFuZ2UpCiBTVkdFbGVtZW50UmFyZURh
dGEmIFNWR0VsZW1lbnQ6OmVuc3VyZVNWR1JhcmVEYXRhKCkKIHsKICAgICBpZiAoIW1fc3ZnUmFy
ZURhdGEpCi0gICAgICAgIG1fc3ZnUmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0VsZW1l
bnRSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9zdmdSYXJlRGF0YSA9IG1ha2VVbmlxdWU8U1ZHRWxl
bWVudFJhcmVEYXRhPigpOwogICAgIHJldHVybiAqbV9zdmdSYXJlRGF0YTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBhNzU4OTBmMzE4MDQ2OGQx
NTI0YmVlODU0MzU5ZDAzNTZlYjUyMjJkLi44MGVjN2ZjODYyOTJiNjNiYmJhODUxZTExZTEwNmZh
MTUyZjkxNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFu
aW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogQWZmaW5lVHJhbnNmb3JtKiBTVkdHcmFwaGlj
c0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1l
bnRhbFRyYW5zZm9ybSkKLSAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSBzdGQ6Om1h
a2VfdW5pcXVlPEFmZmluZVRyYW5zZm9ybT4oKTsKKyAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFu
c2Zvcm0gPSBtYWtlVW5pcXVlPEFmZmluZVRyYW5zZm9ybT4oKTsKICAgICByZXR1cm4gbV9zdXBw
bGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRl
U3RyZWFtLmgKaW5kZXggNmYwYWNhY2YxOWVlODUwZGI0ZTY5MTBkM2U4M2QyNjQ5NGQ2N2ViMC4u
NDM0ZDkxZWIzZGY4YWQ4NzlmODM5YTQ4OTY2ODY3ODBiNDA5ZjI1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgU1ZHUGF0aEJ5
dGVTdHJlYW0gewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhC
eXRlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR1BhdGhCeXRl
U3RyZWFtPigqdGhpcyk7CiAgICAgfQogCiAgICAgRGF0YUl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmJlZ2luKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2Fu
aW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAKaW5kZXggZTA0MjNjZTk4MTVmYTBmMjU1NjNh
M2I1NDMxNDA4NmFjMzU2ZmY0NC4uM2ViNTdhZDJmMjFkZmE2NGI5YjExODAxZjQyNzI4MzYwMmI3
NWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNv
bnRhaW5lci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6c2No
ZWR1bGUoU1ZHU01JTEVsZW1lbnQqIGFuaW1hdGlvbiwgU1ZHRWxlbWVudCogdGFyZ2V0LAogICAg
IEVsZW1lbnRBdHRyaWJ1dGVQYWlyIGtleSh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUpOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25zVmVjdG9yPiYgc2NoZWR1bGVkID0gbV9zY2hlZHVsZWRB
bmltYXRpb25zLmFkZChrZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNj
aGVkdWxlZCkKLSAgICAgICAgc2NoZWR1bGVkID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25z
VmVjdG9yPigpOworICAgICAgICBzY2hlZHVsZWQgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbnNWZWN0
b3I+KCk7CiAgICAgQVNTRVJUKCFzY2hlZHVsZWQtPmNvbnRhaW5zKGFuaW1hdGlvbikpOwogICAg
IHNjaGVkdWxlZC0+YXBwZW5kKGFuaW1hdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDgwOWFmZjVkODg1MzcxMjA3MmFkODcxNTY3MzVlOTMwZjli
YTM1Y2QuLjVjNTZiNjk5OTViYzkyZjRjYTg4MWUyYjkxZTlmMzdmZjVjMzhmNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEVu
Y29kZWREYXRhU3RhdHVzIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZl
ZCkKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgYXV0byBwYWdlQ29uZmln
dXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwotICAgICAgICBt
X2Nocm9tZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRo
aXMpOworICAgICAgICBtX2Nocm9tZUNsaWVudCA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDaHJvbWVD
bGllbnQ+KHRoaXMpOwogICAgICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBt
X2Nocm9tZUNsaWVudC5nZXQoKTsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5k
cyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UgbWlnaHQgbGVhayB0aGUgd29ybGQuCkBAIC00NjYsNyAr
NDY2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgICAgICAvLyBUaGlzIHdpbGwgYmVjb21lIGFuIGlzc3VlIHdoZW4g
U1ZHSW1hZ2Ugd2lsbCBiZSBhYmxlIHRvIGxvYWQgb3RoZXIKICAgICAgICAgLy8gU1ZHSW1hZ2Ug
b2JqZWN0cywgYnV0IHdlJ3JlIHNhZmUgbm93LCBiZWNhdXNlIFNWR0ltYWdlIGNhbiBvbmx5IGJl
CiAgICAgICAgIC8vIGxvYWRlZCBieSBhIHRvcC1sZXZlbCBkb2N1bWVudC4KLSAgICAgICAgbV9w
YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7
CisgICAgICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbikpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0TWVkaWFFbmFibGVkKGZhbHNl
KTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwog
ICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVp
bGRlci5oCmluZGV4IGQ5NzAzMDJhZGY4NjU4NTUwOWM2NTA4ZDUwNDk1MmEyNTUzMjM2MmIuLmM3
N2FlMDhiYWM2NWMzYzJjZmM4OTc0ZmEzM2U3NjQ2MGNlOTdmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAg
LTMzLDYgKzMzLDcgQEAgY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVu
dDsKIAogY2xhc3MgU1ZHRmlsdGVyQnVpbGRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoU2V0PEZpbHRlckVmZmVjdCo+IEZpbHRlckVm
ZmVjdFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IGU1ZWZhYWVhNzExMWJjNmM5
NTdkOTcyZDc0NTQ4ZGU5MmQ4YTEzM2UuLmNlYmFhMzYzYmY1MjdiYmIzOGU1NjdkM2UzZDQyYmY4
NDMxMDJhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eSA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1h
dGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5PgogICAgIHN0YXRpYyBS
ZWY8QW5pbWF0ZWRQcm9wZXJ0eT4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250
ZXh0RWxlbWVudCwgc3RkOjptYWtlX3VuaXF1ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9u
VHlwZSwgUHJvcGVydHlUeXBlPj4oKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBB
bmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBtYWtlVW5pcXVlPERlY29yYXRlZFByb3Bl
cnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0g
U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwu
aAppbmRleCAyODg3NDFiMTI5MDVjYjg1MTQzMDU0MDkwYzRlMmM5MTM5YjM1YmYzLi5kMDczN2Fj
YmEzMzFmZTEyMzQ3YjgzNGZmN2FhMzAxMDBhZDE1NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9ySW1wbC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRv
ciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBp
c0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRBbmdsZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZEJv
b2xlYW5BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8
U1ZHQQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODksNyArODksNyBAQCBjbGFzcyBTVkdB
bmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9yPAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4mIGFu
aW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlw
ZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25BbmltYXRvcjxFbnVtVHlwZT4+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVk
SW50ZWdlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMzIsNyArMTMyLDcgQEAgY2xhc3Mg
U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3I8U1ZHQW4KIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+JiBhbmltYXRlZCwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwg
bGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTUzLDcgKzE1Myw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjxTCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4mIGFuaW1h
dGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2Rl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE3Miw3ICsx
NzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRv
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0
ZWROdW1iZXI+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmlt
YXRlZE51bWJlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTE4OSw3ICsxODksNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRv
ciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBp
c0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yMDYsNyArMjA2LDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjwKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUGF0aFNlZ0xp
c3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHBy
aXZhdGU6CkBAIC0yMjQsNyArMjI0LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmlt
YXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1YKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkUG9pbnRMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjQzLDcgKzI0Myw3IEBAIGNs
YXNzIFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5
cGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRPcmllbnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RS
YXRpb0FuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBCiBwdWJsaWM6
CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtMjgxLDcgKzI4MSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltCiAKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R0FuaW1hdGVkUmVjdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdB
bmltYXRlZFJlY3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0yOTgsNyArMjk4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoK
ICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0zMzgsNyArMzM4LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG8KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4mIGFuaW1hdGVk
LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlz
QWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5UGFpckFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaAppbmRleCA0ZWRhMzRjOWIxODg4ZmZk
NmQzZDY2MzJjZjBjZjZkMzNhNmZhOWUxLi4zOTdmZjA5MTU5NDAwZDMzYzA1MmIxMWQ4MjhjYjhl
MzdiM2M4MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKQEAgLTQw
LDcgKzQwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0Fu
aW1hdGVkQW5nbGU+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+JiBhbmlt
YXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdB
bmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5p
bWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNWR0FuaW1h
dGVkSW50ZWdlclBhaXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5
UGFpckFuaW1hCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDEs
IFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRJbnRlZ2VyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVk
MiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAt
MTU2LDcgKzE1Niw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5p
bWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBi
b29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdB
bmltYXRlZE51bWJlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmlt
YXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaAppbmRleCA2NGE2NWIxODYyZmZiOTY5NjAzYzcx
NTYwN2I1NDRmNTU2ZTAwODNhLi4wMjJlZGVkYTgyMWI1MzM1NWIzZmRkMzk1OGYyNDM2ODAxOWFh
ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1
dGVBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJp
YnV0ZUFuaW1hdG9yLmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBDYWxjTW9kZSA6IHVp
bnQ4X3QgewogfTsKIAogY2xhc3MgU1ZHQXR0cmlidXRlQW5pbWF0b3IgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNWR0F0dHJpYnV0ZUFuaW1hdG9yKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgIDogbV9hdHRyaWJ1dGVOYW1l
KGF0dHJpYnV0ZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaAppbmRleCAyNjRjMzZiNjkwNzRjY2YzZTJlMjlk
MjY3NzIxY2Y1Mzc0NTcwMzExLi5hMzVlMjUwYTliMTUxZjllODk3Zjg1ZjYzNjdjMzg3ZGJiM2Nh
NTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0
ZWRFbnVtZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZEVudW1lcmF0aW9uLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHRGVjb3JhdGVk
RW51bWVyYXRpb24gOiBwdWJsaWMgU1ZHRGVjb3JhdGVkUHJpbWl0aXZlPERlY29yYXRpb25UeXBl
LCBFbnUKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRW51bVR5cGUmIHZhbHVlKQogICAg
IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPERlY29yYXRpb25UeXBl
Pjo6dmFsdWUsICJEZWNvcmF0aW9uVHlwZSBmb3JtIGVudW0gc2hvdWxkIGJlIGludGVncmFsLiIp
OwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJhdGlv
bj4odmFsdWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdEZWNvcmF0ZWRFbnVtZXJh
dGlvbj4odmFsdWUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IGU0YWIwMzcwYjk0
NzllNTU1MGJiYjExMDg3MzQyMzUzMTE2NjUwNzAuLmFiMTRmM2NiZTVhN2ZjMjBlMTMwZmRhOWJk
NDg3OTdkZGRkM2U4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0RlY29yYXRlZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaApAQCAtMjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERlY29yYXRpb25UeXBlPgogY2xhc3MgU1ZHRGVj
b3JhdGVkUHJvcGVydHkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFNWR0RlY29yYXRlZFByb3BlcnR5KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgflNWR0Rl
Y29yYXRlZFByb3BlcnR5KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCmluZGV4
IDQxMjE3MjIwYmRmY2ZlZmY2N2MxNjA5MTNhZDE0ZDZiOTliYTE0MmMuLjY4YjJlMGIxMTM3YWRl
OGQzN2Y4MGUwZTI5OGI1ZGUyNGQwMWE4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvciA6IHB1Ymxp
YyBTVkdQcm9wZXJ0eUFuaW1hdG9yPEFuaW1hdGlvbkZ1bmN0aW8KIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNN
b2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1v
dmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
QW5pbWF0b3JGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCmluZGV4IGFkNTBkNDIzNjI5Njk0MmQxZGM4NzE4YTJkYThl
NmFkZjhkMWJjY2IuLjVlMzAxOGY1YTQwMmE5YzdmMTI5ZDQxZDQxOWFjNWU5NDlmZWUwNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlBbmltYXRvckZhY3RvcnkuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkoKSA9
IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAxMTg4ODZjNGY4YmI3MjM2
YTQ0NmZmYWQwMzg2OWZmMGIwZGNkZTk1Li5mZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEy
ODc5YTdlZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmlt
YXRvcjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9w
ZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9v
bCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdM
ZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3Ro
ZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkg
b3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCmluZGV4IDVlZThhYzNkMGY0
ZTEyYzYyYTVlZmMwMGZmNTNiNTkwZTQwMGYzNjguLmFlOTRlMjllZDRiODYxM2I5OWNkOTc0ODZl
ZDBiMDYyODI2YzAyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaApAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
VmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcjxTVkdMZW5ndAogcHVibGljOgogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJv
cGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFNWR0xlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IGMxMTMxZDI1YjM4OGJiYTgzNjY1M2QyOTcwOGU2YTVi
YmU0YmRmYzQuLjI0Mzc4OWJiOWQyNzlhNmU4NTNlMDg2NDRiNjRiZWU4NTFlNWVlMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMjMxLDYgKzIz
MSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3Mm
IHNldHRpbmdzKQogfQogCiBjbGFzcyBJbnRlcm5hbFNldHRpbmdzV3JhcHBlciA6IHB1YmxpYyBT
dXBwbGVtZW50PFBhZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzV3JhcHBlcihQYWdlKiBwYWdlKQogICAgICAg
ICA6IG1faW50ZXJuYWxTZXR0aW5ncyhJbnRlcm5hbFNldHRpbmdzOjpjcmVhdGUocGFnZSkpIHsg
fQpAQCAtMjUyLDcgKzI1Myw3IEBAIGNvbnN0IGNoYXIqIEludGVybmFsU2V0dGluZ3M6OnN1cHBs
ZW1lbnROYW1lKCkKIEludGVybmFsU2V0dGluZ3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFn
ZSogcGFnZSkKIHsKICAgICBpZiAoIVN1cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxl
bWVudE5hbWUoKSkpCi0gICAgICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBz
dXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVy
PihwYWdlKSk7CisgICAgICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBw
bGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludGVybmFsU2V0dGluZ3NXcmFwcGVyKj4oU3VwcGxl
bWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSktPmludGVybmFsU2V0dGlu
Z3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUxNzhiNDk2
ODU4NzU1MWJmMDcwNGQ4MzAyMDU2MmRkMTJkZjRlYmIuLjYyZTczNDlhMWNhMTY2MmQwNjJjNjA3
OTM4OTJmYzcwZmY2MDU4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTM0MSw3ICszNDEsNyBAQCBjbGFzcyBJbnNwZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgcHVibGljCiB9OwogCiBJbnNwZWN0b3JT
dHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZChQYWdlJiBpbnNwZWN0ZWRQYWdlLCBS
ZWZQdHI8RE9NV2luZG93PiYmIGZyb250ZW5kV2luZG93KQotICAgIDogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250
ZW5kV2luZG93LT5kb2N1bWVudCgpLT5wYWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+KCkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRl
bmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKICAgICAsIG1fZnJvbnRlbmRXaW5kb3coZnJvbnRl
bmRXaW5kb3cuY29weVJlZigpKQogewogICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRXaW5kb3csIGZy
b250ZW5kV2luZG93KTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCBJbnRlcm5hbHM6OkludGVybmFscyhE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwog
ICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKSB7
CiAgICAgICAgIGF1dG8gbW9ja1BheW1lbnRDb29yZGluYXRvciA9IG5ldyBNb2NrUGF5bWVudENv
b3JkaW5hdG9yKCpmcmFtZS0+cGFnZSgpKTsKLSAgICAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0UGF5
bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqbW9j
a1BheW1lbnRDb29yZGluYXRvcikpOworICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50
Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENv
b3JkaW5hdG9yKSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCB2b2lk
IEludGVybmFsczo6ZW5hYmxlTW9ja1NwZWVjaFN5bnRoZXNpemVyKCkKICAgICBpZiAoIXN5bnRo
ZXNpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRo
ZXNpemVyKHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5
bnRoZXNpcykpOworICAgIHN5bnRoZXNpcy0+c2V0UGxhdGZvcm1TeW50aGVzaXplcihtYWtlVW5p
cXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPihzeW50aGVzaXMpKTsKIH0KIAogI2Vu
ZGlmCkBAIC0yNDg5LDcgKzI0ODksNyBAQCBSZWZQdHI8V2luZG93UHJveHk+IEludGVybmFsczo6
b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgYXV0byog
aW5zcGVjdGVkUGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAg
YXV0byogd2luZG93ID0gaW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCk7CiAgICAgYXV0byBmcm9udGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3
aW5kb3csICp3aW5kb3csIHVybCwgIiIsICIiKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBt
X2luc3BlY3RvckZyb250ZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRl
bmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJv
eHktPndpbmRvdygpKSk7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5z
cGVjdG9yU3R1YkZyb250ZW5kPigqaW5zcGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihm
cm9udGVuZFdpbmRvd1Byb3h5LT53aW5kb3coKSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRv
d1Byb3h5OwogfQogCkBAIC0zMDA5LDcgKzMwMDksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRl
cm5hbHM6OnNldFZpZXdFeHBvc2VkUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwg
ZgogCiB2b2lkIEludGVybmFsczo6c2V0UHJpbnRpbmcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog
ewotICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRD
b250ZXh0PihmcmFtZSgpKTsKKyAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkgPSBtYWtlVW5p
cXVlPFByaW50Q29udGV4dD4oZnJhbWUoKSk7CiAgICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygp
LT5iZWdpbih3aWR0aCwgaGVpZ2h0KTsKIH0KIApAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgdm9pZCBJ
bnRlcm5hbHM6OmVuYWJsZUF1dG9TaXplTW9kZShib29sIGVuYWJsZWQsIGludCB3aWR0aCwgaW50
IGhlaWdodCkKIAogdm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKIHsKLSAgICBM
ZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwKKyAgICBMZWdhY3lDRE06
OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TGVnYWN5TW9ja0NETT4oY2RtKTsgfSwKICAgICAgICAgTGVnYWN5TW9ja0NETTo6c3VwcG9y
dHNLZXlTeXN0ZW0sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUp
OwogfQogCkBAIC00MjQxLDcgKzQyNDEsNyBAQCB2b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rh
c2soaW50IHRlc3ROdW1iZXIpCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNr
TWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICpkb2N1bWVudCwg
W2RvY3VtZW50LCB0ZXN0TnVtYmVyXSgpIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlx
dWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFk
UXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgewogICAgICAgICBk
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RGVidWcsIG1ha2VTdHJpbmcoIk1pY3JvVGFzayAjIiwgdGVzdE51bWJlciwgIiBoYXMgcnVu
LiIpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdh
Y3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAK
aW5kZXggNjQyODdkMjM5YWY1NzNlOTIwM2QyNTg0MzFiMjczYzdiODc0OTAwNi4uNjAyNzJkMzQ5
N2Y0Yjg2NWNkYjAzNzBmZTQxZDNkNmZiZGU4YjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE1vY2tDRE1TZXNzaW9uIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1vY2tDRE1TZXNzaW9uKExl
Z2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Nb2NrQ0RNU2Vzc2lvbigpID0g
ZGVmYXVsdDsKQEAgLTczLDcgKzc0LDcgQEAgYm9vbCBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c01J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lD
RE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25D
bGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNU2Vz
c2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xp
ZW50KTsKIH0KIAogc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKaW5kZXggMjRiOWI4MDA4YzRmNTE5YjRhNjY2ZWM2
ZDE1MjVhYzYyZWMxYzMwYS4uYjkzYWViOTNmZjYzMjllNTE1NDdjMTNmZjc2YTY5MmVlNmE3MTg2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmgKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogCiBjbGFzcyBMZWdhY3lN
b2NrQ0RNIDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExlZ2FjeU1vY2tDRE0oTGVnYWN5Q0RN
KiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2RtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAppbmRleCA1Njc5NmVlOTAwYmJmM2I2Y2MwNWNmNmEyMjk2ZWZkNDNiOWVm
N2I2Li5jZTVkOGY3ZDZiZGYzOGI1OTIyMDkzMDJhNmU2ZDcxYjM2OTY2MzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgTW9ja0NETUZhY3Rvcnk6OnNldFN1cHBvcnRlZERhdGFUeXBlcyhWZWN0b3I8U3RyaW5nPiYm
IHR5cGVzKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gTW9ja0NETUZhY3Rvcnk6OmNy
ZWF0ZUNETShjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1v
Y2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NE
TT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKIH0KIAogTW9ja0NETTo6TW9ja0NETShXZWFrUHRyPE1v
Y2tDRE1GYWN0b3J5PiBmYWN0b3J5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCmluZGV4IDMzOTZjZDAyYWQwMmRkMTRlOTJmMTU3OWUyNzUxNmU2YmMzZjQyOTguLjM5OTA5
YjkzMDNhOTRjOTM2OGVhYTBmNjI1ZjRiNjdlNTI1MDU5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBNb2NrQ0RNRmFj
dG9yeSA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDRE1GYWN0b3J5PiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPAogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TW9ja0NETT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIE1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxMTgxZGFlNzJl
MTNlMmJiZDE1M2U4MTFjMTQzNjRkMWNkOGExODcuLjc3OGE5MThhNmI5MDc1NWNiODZkM2FhYTc0
Zjc5YjNlNjE4ZDRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJs
ZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TW9ja0NvbnRlbnRGaWx0ZXI+IE1vY2tDb250ZW50Rmls
dGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDb250ZW50
RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOwog
fQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKaW5kZXgg
ZDNhYzVkODdkMTllMmE4NTM2MWMxMTU3MmNmMzExZjBjODNiMjQ1Yi4uZDQwZGVkMWRhMTE5OGNh
YTM0NTlkNjc3ZTFmZTg0ZjViZmI5NDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgTW9ja0dhbWVw
YWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBT
dHJpbmcmIGdhCiAgICAgaWYgKG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdKQogICAgICAgICBt
X21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XS0+dXBkYXRlRGV0YWlscyhnYW1lcGFkSUQsIGF4aXND
b3VudCwgYnV0dG9uQ291bnQpOwogICAgIGVsc2UKLSAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3Rv
cltpbmRleF0gPSBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElE
LCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKKyAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3Rvcltp
bmRleF0gPSBtYWtlVW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291
bnQsIGJ1dHRvbkNvdW50KTsKIH0KIAogYm9vbCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0
TW9ja0dhbWVwYWQodW5zaWduZWQgaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb25zb2xlQ2xpZW50LmNwcAppbmRleCBkYmU5MDczZDZhZGViZmM1MDE1OWNjMmVkYmIy
MjgzY2NkMTdiYTg1Li44ZjE2NDdjMWYzMjI1MTgxNmM3Y2YwODk2MTgyYWUzNDIzNWM1MTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdm9pZCBXb3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVB
bmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwKIHsKICAgICBTdHJpbmcgbWVz
c2FnZVRleHQ7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2Fn
ZVRleHQpOwotICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4
ZWMpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZSht
ZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUu
Y3BwCmluZGV4IGY0M2JkMmE3YTYwNTkzNzI3YWQwYTZhOTFkZWNkNmViZWM3MjI2ODguLjY5MDNi
ZTVlYzI1ZmI5MWVmZjc3NzZlNDQ3NmFkNGVhMmJjZTczMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcApAQCAtNDQsNiArNDQsNyBAQCBXb3JrZXJFdmVu
dFF1ZXVlOjp+V29ya2VyRXZlbnRRdWV1ZSgpCiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWU6OkV2
ZW50RGlzcGF0Y2hlcgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEV2ZW50RGlzcGF0Y2hlcihSZWZQdHI8RXZlbnQ+JiYgZXZlbnQsIFdvcmtlckV2ZW50UXVl
dWUmIGV2ZW50UXVldWUpCiAgICAgICAgIDogbV9ldmVudChXVEZNb3ZlKGV2ZW50KSkKQEAgLTg0
LDcgKzg1LDcgQEAgYm9vbCBXb3JrZXJFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50
PiYmIGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvKiBldmVudFB0ciA9
IGV2ZW50LnB0cigpOwotICAgIGF1dG8gZXZlbnREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUoZXZlbnQpLCAqdGhpcyk7CisgICAgYXV0byBldmVu
dERpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCks
ICp0aGlzKTsKICAgICBtX2V2ZW50RGlzcGF0Y2hlck1hcC5hZGQoZXZlbnRQdHIsIGV2ZW50RGlz
cGF0Y2hlci5nZXQoKSk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LnBvc3RUYXNrKFtl
dmVudERpc3BhdGNoZXIgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hlcildIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewogICAgICAgICBldmVudERpc3BhdGNoZXItPmRpc3BhdGNoKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oCmluZGV4IDYxMTVlZjRhMTM2NTJh
NmVhZDEwYWYzN2NmYjQ5NDI4MjBjM2NiMmIuLmQ4OTczZDViY2FlMTdiOTU1MDA0NGM3ZTgwMTYw
NWI5OWQ1NDlhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZl
bnRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5o
CkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFdvcmtlckV2ZW50UXVldWUgZmluYWwgOiBwdWJsaWMgRXZl
bnRRdWV1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgV29ya2VyRXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmly
dHVhbCB+V29ya2VyRXZlbnRRdWV1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcAppbmRleCA3YmE2ZWRiNTIwOGYyMmMzZjhmMTZkZTI5ZDgyNWI3NzFm
NmMzZTllLi5iMTdkNjYzNjNhYzM1ODBlN2EzNDQwMDgxYTJmN2M2M2EwNzM4NzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjIsOSArNjIs
OSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmws
IFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQpCiAgICAgLCBtX3RocmVhZCh0aHJlYWQp
Ci0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+
KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQotICAgICwgbV9taWNyb3Rhc2tRdWV1ZShz
dGQ6Om1ha2VfdW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCisgICAgLCBt
X3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQorICAgICwg
bV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cj4oKnRoaXMpKQorICAgICwgbV9taWNyb3Rhc2tRdWV1ZShtYWtlVW5pcXVlPE1pY3JvdGFza1F1
ZXVlPihtX3NjcmlwdC0+dm0oKSkpCiAgICAgLCBtX2lzT25saW5lKGlzT25saW5lKQogICAgICwg
bV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlz
KQpAQCAtODYsNyArODYsNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUo
Y29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICAgICBvcmln
aW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCk7CiAKICAgICBzZXRTZWN1
cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1vdmUob3Jp
Z2luKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250
ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7
IG1fdXJsIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFs
U2NvcGUoKQpAQCAtMzYyLDkgKzM2Miw5IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1l
c3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKICAg
ICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBt
ZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVudGlmaWVy
KTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFj
ay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxzZQotICAgICAg
ICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihz
b3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAg
ICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJj
ZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdURk1vdmUo
bWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCmluZGV4IGE3NWMwMTU2YzU5ZTM4ZGQ5OTlkNmNlYzFkZGVlZGUyM2JlMTg3
YjMuLjRlOWY1MTlhZWZlZGQyNWY4ODNmNjNhY2EwYTQ3ODlmZjAyN2U0YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlUHJveHkmIFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OmNy
ZWF0ZShXb3JrZXImIHdvcmtlcikKIAogV29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5KFdvcmtlciYgd29ya2VyT2JqZWN0KQogICAgIDogbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2lu
c3BlY3RvclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtl
ck9iamVjdC5pZGVudGlmaWVyKCkpKQorICAgICwgbV9pbnNwZWN0b3JQcm94eShtYWtlVW5pcXVl
PFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmplY3QuaWRlbnRpZmllcigpKSkKICAgICAs
IG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAgICAgQVNTRVJUKChpczxEb2N1bWVu
dD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtl
ckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnQKICAgICAgICAgKyttX3VuY29uZmly
bWVkTWVzc2FnZUNvdW50OwogICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrKFdURk1vdmUodGFzaykpOwogICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVlZEVhcmx5VGFz
a3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
V1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VV
bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOwogfQog
CiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVu
TG9vcC5jcHAKaW5kZXggYmNkOTRlNmFjMDQwM2FjZDZhNTRiYWM0MWZhYjQxZTViZjU1MjdkYS4u
YmZhYzk1OTJkZmFhNzkyMTAwNjViMzQ1OWJkMjIxNjE5NTc4NDg3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIE1vZGVQ
cmVkaWNhdGUgewogfTsKIAogV29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCgpCi0gICAgOiBt
X3NoYXJlZFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCisgICAg
OiBtX3NoYXJlZFRpbWVyKG1ha2VVbmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCiB7CiB9CiAK
QEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9z
dFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7
Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+
KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBl
bmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkp
OwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1fbWVz
c2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1v
ZGUpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3Zl
KHRhc2spLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdERlYnVnZ2VyVGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAxOTkxMmYwMjc1ZmVhMTk0ODA1
NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1Li4yMjhmM2QxN2ZmMDAyMmU2MmU2MzY0NTMyZDU1NmI5NTA3
YTAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXQKIAogICAgIEFT
U0VSVChzY3JpcHRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiR0VUIik7CiAKLSAgICBhdXRvIHJl
cXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92ZShzY3JpcHRS
ZXF1ZXN0KSk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+
KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6
OnJlc3BvbnNlVVJMKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4g
V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiBp
bml0aWF0b3JJZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1
ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKICAgICByZXF1ZXN0LT5zZXRIVFRQTWV0aG9kKCJH
RVQiX3MpOwogICAgIHJlcXVlc3QtPnNldEluaXRpYXRvcklkZW50aWZpZXIoaW5pdGlhdG9ySWRl
bnRpZmllcik7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKaW5kZXggMWY3NTYxODZhMjBmMDE2OWU0Nzg0Mzk1MWJlZTM2ODdlMDAyNGZi
YS4uM2MzODU4YmRhOWI0NGI1N2ZhZGIzOWVmYTJlMGEwZjNhMzA0MTE4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFdvcmtlclRo
cmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluCiAgICAgLCBtX3dvcmtlckRlYnVnZ2VyUHJveHkod29ya2VyRGVidWdn
ZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29ya2VyUmVwb3J0aW5nUHJv
eHkpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX3N0YXJ0dXBE
YXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNjcmlwdFVSTCwg
bmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgc291cmNlQ29kZSwgc3RhcnRN
b2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNz
aW9uSUQpKQorICAgICwgbV9zdGFydHVwRGF0YShtYWtlVW5pcXVlPFdvcmtlclRocmVhZFN0YXJ0
dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNPbmxpbmUs
IHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIHRvcE9yaWdp
biwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICAgICAsIG1faWRiQ29ubmVjdGlvblByb3h5KGNvbm5lY3Rpb25Qcm94eSkKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCmluZGV4IGIyZDI2MTVhMTI2M2QxNjI2NjE4MjAwNDY0OGY5MGVkYTY5MjA2
YjUuLjU5YzcxYzRkMTQ3NjI3Y2ZkOWQzMWE0NWVhYmNjY2RhZTEwM2U3OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpk
ZXJlZkV2ZW50VGFyZ2V0KCkKIGF1dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkoKSAt
PiBSZWFkeVByb21pc2UmCiB7CiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZSkgewotICAgICAgICBt
X3JlYWR5UHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZHlQcm9taXNlPigpOworICAgICAg
ICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWU8UmVhZHlQcm9taXNlPigpOwogCiAgICAgICAg
IGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQo
KS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gKm1fcmVhZHlQcm9taXNlOwpAQCAtMTgw
LDcgKzE4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9u
KGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0YS50eXBlID0g
U2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9u
T3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNl
cnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEp
KSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywg
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29w
ZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJ
RDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0
KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9i
PigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVk
dWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAg
LTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lz
dHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBDT05UQUlORVJf
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBVcGRhdGluZyBzZXJ2
aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklk
ZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVl
PFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRh
dGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhp
cywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29y
a2VySm9iPiYmIGpvYikKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVy
cgogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9ICsrbV9s
YXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVu
ZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlx
dWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJZGVudGlm
aWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJZGVudGlm
aWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRl
bnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVu
ZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHBy
b21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJv
bWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGlu
Z1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRv
IGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oCmluZGV4IDdhYzljOTgzODNiMDRiNmViODljOTlmMjIwODg1ZTc2NzM5NzZjM2YuLjNiZDZi
OWIwNmU1NzM3NjY1YjU4Zjk2OWUyOTNkMGZlZDYyYzNjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAt
MTM5LDYgKzEzOSw3IEBAIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXIgZmluYWwgOiBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEFjCiAjZW5kaWYKIAogICAgIHN0
cnVjdCBQZW5kaW5nUHJvbWlzZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgUGVuZGluZ1Byb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBSZWY8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiYmIHBlbmRp
bmdBY3Rpdml0eSkKICAgICAgICAgICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQogICAg
ICAgICAgICAgLCBwZW5kaW5nQWN0aXZpdHkoV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGJjOGY5MWVlNDM0NjJhNTA0OWU4OGMxY2VmNWVmYTc2
MmM5OGZmLi5jYjVjMjIxZmM5NDg4ZDdjMDA3Mjk4M2ExNTc4OTVkY2E4YzZjZWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdl
cjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNl
Y29uCiAKICAgICBzZXJ2aWNlV29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7
CiAKLSAgICBtX3BlbmRpbmdTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoaWRl
bnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0
PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91dCkpOworICAgIG1fcGVuZGluZ1NlcnZpY2VXb3Jr
ZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VX
b3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0KSk7CiAK
ICAgICBhdXRvJiB0aHJlYWQgPSBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKTsKICAgICB0aHJlYWQu
c3RvcChbdGhpcywgaWRlbnRpZmllciwgc2VydmljZVdvcmtlciA9IFdURk1vdmUoc2VydmljZVdv
cmtlciksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBjNjE3
MzYxM2NhY2I1NWQ2OTA1OGJlMmM3ZTJhNWZiZDg1MjljNzc2Li45ZTcyOGMzYTdhZmE0NmM5NDlj
ZGNiZTBkNmZlYjA0YTk1MzFjY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgIGFs
bFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkuYWRkKHRoaXMpOwogCiAjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCi0gICAgbV9yZW1vdGVEZWJ1Z2dhYmxlID0gc3RkOjptYWtlX3VuaXF1
ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEpOworICAgIG1fcmVtb3RlRGVi
dWdnYWJsZSA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBkYXRh
KTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1
ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5pbml0KCk7CiAjZW5kaWYKQEAgLTE2OCw3ICsx
NjgsNyBAQCBSZWY8Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbj4gU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpjcmVhdGVDYWNoZVN0b3JhZ2VDb25uZWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hM
b2FkZXI+IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlQmxvYkxvYWRlcihGZXRjaExv
YWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBVUkwmIGJsb2JVUkwpCiB7Ci0gICAgYXV0byBsb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOworICAg
IGF1dG8gbG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oY2xpZW50LCBudWxscHRyKTsK
ICAgICBsb2FkZXItPnN0YXJ0TG9hZGluZ0Jsb2JVUkwobV9kb2N1bWVudCwgYmxvYlVSTCk7CiAg
ICAgaWYgKCFsb2FkZXItPmlzU3RhcnRlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0
aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggMWRkMzQxMzc0YzQ0NDVhMzQ5NzMyZDQ0ZmRl
ZDE1NDc3NDgxYzBiNC4uOTJjYmEwODVkM2FjZjZhMjkzZjA2YjU1ZGY0NWY0ZGZjNzkzZmJkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJl
Z2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBmdWxs
RmlsZW5hbWUpCiAKICAgICBTUUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9y
eUV4aXN0cyhtX2RhdGFiYXNlRGlyZWN0b3J5KTsKIAotICAgIG1fZGF0YWJhc2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVl
PFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9kYXRhYmFzZS0+b3BlbihmdWxsRmlsZW5h
bWUpKSB7CiAgICAgICAgIGVycm9yTWVzc2FnZSA9ICJGYWlsZWQgdG8gb3BlbiByZWdpc3RyYXRp
b24gZGF0YWJhc2UiOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGZlNWNjODU5ZTY1YTZlMzJh
NzhiNTI4OTc1YTEzMmU3NGJmMTc4N2UuLjkzMjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0
ZDBlOTY5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVn
aXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAg
Ly8gUGFnZXMgc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJh
dGlvbiB0byB0aGlzIGtleSB3aGlsZSB0aGUgaW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2Uu
CiAgICAgQVNTRVJUKCFtX3JlZ2lzdHJhdGlvbnMuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24u
a2V5KSk7CiAKLSAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0
cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5z
Y3JpcHRVUkwpOworICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJl
Z2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRp
b24udXBkYXRlVmlhQ2FjaGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlw
dFVSTCk7CiAgICAgcmVnaXN0cmF0aW9uLT5zZXRMYXN0VXBkYXRlVGltZShkYXRhLnJlZ2lzdHJh
dGlvbi5sYXN0VXBkYXRlVGltZSk7CiAgICAgYXV0byByZWdpc3RyYXRpb25QdHIgPSByZWdpc3Ry
YXRpb24uZ2V0KCk7CiAgICAgYWRkUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7
CkBAIC0zMDQsNyArMzA0LDcgQEAgU1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdp
blN0b3JlPiYmIG9yaWdpblN0b3JlLCBTdHJpbmcmJiByZWdpc3RyYXRpb24KIHsKICAgICBBU1NF
UlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0g
ICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdHJhdGlv
blN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOwor
ICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlID0gbWFrZVVuaXF1ZTxSZWdpc3RyYXRpb25TdG9y
ZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsKICAgICBl
bHNlCiAgICAgICAgIHJlZ2lzdHJhdGlvblN0b3JlSW1wb3J0Q29tcGxldGUoKTsKIApAQCAtMzIx
LDcgKzMyMSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiYgam9iRGF0YSkKICAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0
IGpvYi4KIAogICAgIGF1dG8mIGpvYlF1ZXVlID0gKm1fam9iUXVldWVzLmVuc3VyZShqb2JEYXRh
LnJlZ2lzdHJhdGlvbktleSgpLCBbdGhpcywgJmpvYkRhdGFdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0
aW9uS2V5KCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigq
dGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogCiAgICAgam9iUXVldWUuZW5xdWV1ZUpvYihqb2JEYXRhKTsKQEAgLTgyMCw3ICs4MjAsNyBA
QCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogCiAgICAgaWYgKGNsaWVudElkZW50aWZpZXJzLmlz
RW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoIWl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2
aWNlV29ya2Vyc1RpbWVyKTsKLSAgICAgICAgaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJzVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPihbY2xpZW50T3JpZ2luLCBj
bGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhpc10geworICAgICAgICBpdGVyYXRvci0+dmFsdWUu
dGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KFtjbGllbnRP
cmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlzXSB7CiAgICAgICAgICAgICBWZWN0
b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJzVG9UZXJtaW5hdGU7CiAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5vcmln
aW4oKSA9PSBjbGllbnRPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA4YjY4YjcwZjAx
ZDI1Mjc4YWY1MzhhYmNlOTE0YjhjN2M2OGFiODM3Li5kY2FmNWE4YTcxMGY3OTQ0NjQ3ZGUzY2Q1
ZTk4MDYzOTlhOGZkNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTI4Niw3ICsyODYsNyBA
QCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiBqb2IpCiAgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNldFVwZGF0ZVZpYUNh
Y2hlKGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlKTsKICAgICAgICAgUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0
ZXJKb2I6IEZvdW5kIHJlZ2lzdHJhdGlvbiAlbGx1IGZvciBqb2IgJXMgYnV0IGl0IG5lZWRzIHVw
ZGF0aW5nIiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgam9i
LmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2Vy
dmVyUmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3Ry
YXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwp
OworICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdp
c3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9w
dGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CiAgICAg
ICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlvbikpOwog
CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVl
dWU6OnJ1blJlZ2lzdGVySm9iOiBObyBleGlzdGluZyByZWdpc3RyYXRpb24gZm9yIGpvYiAlcywg
Y29uc3RydWN0aW5nIGEgbmV3IG9uZS4iLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAyYjdhMmZlM2ZiYjU4ZDRjNGVlMzhm
YzA0YjUzNmEzZTRlMGM3N2U3Li4zYmU3NTdlMDJhZTE5ZDc1OTBlYzA3YjNmYTRjYmU3ZDYzY2U4
MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLAog
ICAgICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihzdGF0ZSwgcGFpbnRWYWx1ZSwgZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9u
IHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAotICAgICAgICBhdXRvIHBhaW50RGVmaW5p
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0
cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVy
dGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKKyAgICAgICAgYXV0byBwYWludERlZmlu
aXRpb24gPSBtYWtlVW5pcXVlPFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rv
ci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMp
LCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CiAgICAgICAgIHBhaW50RGVmaW5pdGlvbk1hcCgp
LmFkZChuYW1lLCBXVEZNb3ZlKHBhaW50RGVmaW5pdGlvbikpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggOTZj
ZjE4NTBiMGNhZTNhYWU5NjA3ZGIxMzQxNjczNThiNjcxYzFkOS4uNjRmYzc4ZWVlNzg4MGVkOWJl
ZGNmYzJhNzAxMmNhNmVjM2NlMWMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFBhaW50
V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtsZXRHbG9iYWxTY29wZSB7CiAKICAgICAv
LyBBbGwgcGFpbnQgZGVmaW5pdGlvbnMgbXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSB2bSBp
cyBkZXN0cm95ZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZXkgd2lsbCBwb2ludCB0byBmcmVlZCBt
ZW1vcnkuCiAgICAgc3RydWN0IFBhaW50RGVmaW5pdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxQYWludERlZmluaXRpb24+IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBQYWludERlZmluaXRpb24oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSlND
OjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3RvciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYsIFZl
Y3RvcjxTdHJpbmc+JiYgaW5wdXRQcm9wZXJ0aWVzLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0QXJn
dW1lbnRzKTsKIAogICAgICAgICBjb25zdCBBdG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKaW5kZXggOGU4YTJhNGNh
MjNlMmI5M2RhMTM0YWZiNTJkMGU5NTc2YzQwMjE1OS4uM2YwOTI1NjNiZDUyYWM0YTRiYmVkYTQx
NWMyMzdhMmQxZGZkYWRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldENvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFdvcmtsZXRDb25zb2xl
Q2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdl
TGV2ZQogewogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0
QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhl
Yyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQs
IFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRk
Q29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDRiYjc4OGVhNjNjZDZiYmRj
NTMyNTg3ZTA1MTBkNTMyNTI2MDZmZmEuLmNlZjgyZjdiNDExZDIxOGM3MzNkNjZmYTlkYmEyZDkz
MTI1YWU4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9i
YWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcApAQCAtNDksNyArNDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29y
a2xldEdsb2JhbFNjb3BlKTsKIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3Bl
KERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2Rv
Y3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1l
bnQtPnNlc3Npb25JRCgpKQotICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmts
ZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVVbmlxdWUoKSkKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1f
Y29kZShXVEZNb3ZlKGNvZGUpKQpAQCAtNjIsNyArNjIsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6
OldvcmtsZXRHbG9iYWxTY29wZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUm
JiBjbwogICAgIEFTU0VSVChkb2N1bWVudC5wYWdlKCkpOwogCiAgICAgc2V0U2VjdXJpdHlPcmln
aW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVm
KCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250
ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fY29kZS51cmwoKSB9LCAqdGhpcykpOworICAgIHNl
dENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4o
VVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6
fldvcmtsZXRHbG9iYWxTY29wZSgpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBXb3JrbGV0R2xv
YmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXMKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRl
bigpIHx8ICFtZXNzYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiht
ZXNzYWdlLT5zb3VyY2UoKSwgbWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNz
YWdlLT5tZXNzYWdlKCksIDApKTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZSht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBt
ZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkp
OwogfQogCiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDFjZWU5ZWIzNDIx
Y2Q5OWE1NmM4ODYwYjhlY2RkNDU5NmY4MGQyZGUuLjcxMzM5MDBmMTcxZWVmNDE1NjczZDRlOTBk
NWNmNzdjZmViYzJiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKICAgICBBU1NFUlQobV93
b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9i
YWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBt
X3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXb3JrbGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3Bl
KTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50
PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBl
ci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MRXJyb3JzLmgKaW5kZXggYjAyMWNjZTE1M2MzMTkyOTUwYTJiZjc3ZDgwOWEyODQ3YWIwZjBj
MS4uYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYwMzgxNTI0MjhjNzFhYTgyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxFcnJvcnMuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBE
b2N1bWVudDsKIAogY2xhc3MgWE1MRXJyb3JzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBYTUxFcnJvcnMoRG9jdW1lbnQmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggOGU0NDI0ZWYyNDZhMzZhNGRiODEzYzMw
NmNiMzIxZmE0ZmVhMjUxMy4uMzY1YjUxNTZjNDNmOWExMDBiMjg5YTJiN2FiMzQ1NDYxMjczYzQ4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNzMsNyArMjczLDcg
QEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVVSTCgpIGNvbnN0CiBYTUxIdHRwUmVx
dWVzdFVwbG9hZCYgWE1MSHR0cFJlcXVlc3Q6OnVwbG9hZCgpCiB7CiAgICAgaWYgKCFtX3VwbG9h
ZCkKLSAgICAgICAgbV91cGxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBs
b2FkPigqdGhpcyk7CisgICAgICAgIG1fdXBsb2FkID0gbWFrZVVuaXF1ZTxYTUxIdHRwUmVxdWVz
dFVwbG9hZD4oKnRoaXMpOwogICAgIHJldHVybiAqbV91cGxvYWQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IGFkN2UxM2M4YTE5NGFkNTZkNjIzNDIwMDAxN2Ni
YTc3ZmU4MGI3NDIuLmE5MjQ0MDllZTQ2YzUzZTczYjI3YTQ5YTE5ZWZlOTY5NzIxNjczYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlKFVDaGFyIGMpCiAgICAgcmV0dXJuIGMgPT0gJyAn
IHx8IGMgPT0gJ1xuJyB8fCBjID09ICdccicgfHwgYyA9PSAnXHQnOwogfQogCi0jZGVmaW5lIERF
RklORV9GVU5DVElPTl9DUkVBVE9SKFN1ZmZpeCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5j
dGlvbj4gY3JlYXRlRnVuY3Rpb24jI1N1ZmZpeCgpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RnVuIyNTdWZmaXg+KCk7IH0KKyNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4
KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4
KCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQogCiBjbGFzcyBJbnRlcnZh
bCB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcAppbmRleCAwNDYx
NWMzZDVmMDMxMzEwNjkzOGZhYTA1ZmIzOWM5OWNlMTIzYjVjLi5jMWJiYzU0ZWI4MzAxNjkxMTlj
ODY4MzFhNGYyYTZlN2MwMDQ1NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhQcmVkaWNhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5j
cHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIGV2YWx1YXRlUHJlZGljYXRlKGNvbnN0IEV4cHJl
c3Npb24mIGV4cHJlc3Npb24pCiAKICAgICAvLyBmb29bM10gbWVhbnMgZm9vW3Bvc2l0aW9uKCk9
M10KICAgICBpZiAocmVzdWx0LmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBFcVRlc3RPcChF
cVRlc3RPcDo6T1BfRVEsIEZ1bmN0aW9uOjpjcmVhdGUoInBvc2l0aW9uIl9zKSwgc3RkOjptYWtl
X3VuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4o
KTsKKyAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNy
ZWF0ZSgicG9zaXRpb24iX3MpLCBtYWtlVW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVtYmVyKCkp
KS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOwogCiAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4o
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNs
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCmluZGV4
IGVjMmM2YWUwNDU5YTA2OTI1NmE2NjJmNzJjODcyNjdmZWExYTQ1YmQuLjYzMDRlOTI4MTFhOTM0
ZjdkZTc0YzhjOTRiMmI2OWMwMDRlYTQ5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0
eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgWFNMU3R5bGVTaGVl
dDo6bG9hZENoaWxkU2hlZXRzKCkKIAogdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVl
dChjb25zdCBTdHJpbmcmIGhyZWYpCiB7Ci0gICAgYXV0byBjaGlsZFJ1bGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRoaXMsIGhyZWYpOworICAgIGF1dG8gY2hpbGRSdWxlID0g
bWFrZVVuaXF1ZTxYU0xJbXBvcnRSdWxlPih0aGlzLCBocmVmKTsKICAgICBtX2NoaWxkcmVuLmFw
cGVuZChjaGlsZFJ1bGUucmVsZWFzZSgpKTsKICAgICBtX2NoaWxkcmVuLmxhc3QoKS0+bG9hZFNo
ZWV0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwCmluZGV4IGUwMjRlZmI1NmJmNjUyYjkwYTlhMWQ0ZjgxMzA2NDkxODMwZDhlMGYuLjcw
NDg4OTJhNWFhMGVmOWE1NWZiZDI0MDhjZDE3OTE0ZDAyYTljODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMjgsNyArMTI4LDcg
QEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlu
cHV0U291cmNlKQogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3Jz
OjpFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKQog
ewogICAgIGlmICghbV94bWxFcnJvcnMpCi0gICAgICAgIG1feG1sRXJyb3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVudCgpKTsKKyAgICAgICAgbV94bWxFcnJvcnMgPSBt
YWtlVW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50KCkpOwogICAgIG1feG1sRXJyb3JzLT5oYW5k
bGVFcnJvcih0eXBlLCBtLCBwb3NpdGlvbik7CiAgICAgaWYgKHR5cGUgIT0gWE1MRXJyb3JzOjp3
YXJuaW5nKQogICAgICAgICBtX3Nhd0Vycm9yID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBiOTMx
MDFiOGFhYzQ4MzlhMzliYjU0YjJiODlkZTg5OGM3OWI3NWFiLi5iOTliMzA4OTczODU1MDllYmFi
MDQ1MjEzOTc1MzliMDcwY2VlNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFy
c2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGNs
YXNzIFBlbmRpbmdDYWxsYmFja3MgewogcHVibGljOgogICAgIHZvaWQgYXBwZW5kU3RhcnRFbGVt
ZW50TlNDYWxsYmFjayhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYXIq
IHhtbFByZWZpeCwgY29uc3QgeG1sQ2hhciogeG1sVVJJLCBpbnQgbnVtTmFtZXNwYWNlcywgY29u
c3QgeG1sQ2hhcioqIG5hbWVzcGFjZXMsIGludCBudW1BdHRyaWJ1dGVzLCBpbnQgbnVtRGVmYXVs
dGVkLCBjb25zdCB4bWxDaGFyKiogYXR0cmlidXRlcykKICAgICB7Ci0gICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigp
OworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nU3RhcnRFbGVtZW50
TlNDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+eG1sTG9jYWxOYW1lID0geG1sU3Ry
ZHVwKHhtbExvY2FsTmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT54bWxQcmVmaXggPSB4bWxTdHJk
dXAoeG1sUHJlZml4KTsKQEAgLTEyMiwxMiArMTIyLDEyIEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFj
a3MgewogCiAgICAgdm9pZCBhcHBlbmRFbmRFbGVtZW50TlNDYWxsYmFjaygpCiAgICAgewotICAg
ICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRW5kRWxlbWVu
dE5TQ2FsbGJhY2s+KCkpOworICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxQ
ZW5kaW5nRW5kRWxlbWVudE5TQ2FsbGJhY2s+KCkpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5k
Q2hhcmFjdGVyc0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiAgICAgewotICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2hhcmFjdGVyc0Nh
bGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ2hh
cmFjdGVyc0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1cChz
LCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+bGVuID0gbGVuOwpAQCAtMTM3LDcgKzEzNyw3IEBA
IGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb25DYWxsYmFjayhjb25zdCB4bWxDaGFyKiB0YXJnZXQsIGNvbnN0IHhtbENoYXIqIGRh
dGEpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJh
Y2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxsYmFjaz4oKTsK
IAogICAgICAgICBjYWxsYmFjay0+dGFyZ2V0ID0geG1sU3RyZHVwKHRhcmdldCk7CiAgICAgICAg
IGNhbGxiYWNrLT5kYXRhID0geG1sU3RyZHVwKGRhdGEpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGNs
YXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRDREFUQUJsb2NrQ2FsbGJh
Y2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJh
Y2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+KCk7CisgICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDREFUQUJsb2NrQ2FsbGJhY2s+
KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAg
IGNhbGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3MgUGVuZGluZ0Nh
bGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZENvbW1lbnRDYWxsYmFjayhjb25zdCB4bWxDaGFy
KiBzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlx
dWU8UGVuZGluZ0NvbW1lbnRDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHht
bFN0cmR1cChzKTsKIApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3Mg
ewogCiAgICAgdm9pZCBhcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKGNvbnN0IHhtbENoYXIq
IG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVybmFsSUQsIGNvbnN0IHhtbENoYXIqIHN5c3RlbUlE
KQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGlu
Z0ludGVybmFsU3Vic2V0Q2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtl
VW5pcXVlPFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxi
YWNrLT5uYW1lID0geG1sU3RyZHVwKG5hbWUpOwogICAgICAgICBjYWxsYmFjay0+ZXh0ZXJuYWxJ
RCA9IHhtbFN0cmR1cChleHRlcm5hbElEKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBjbGFzcyBQZW5k
aW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kRXJyb3JDYWxsYmFjayhYTUxFcnJvcnM6
OkVycm9yVHlwZSB0eXBlLCBjb25zdCB4bWxDaGFyKiBtZXNzYWdlLCBPcmRpbmFsTnVtYmVyIGxp
bmVOdW1iZXIsIE9yZGluYWxOdW1iZXIgY29sdW1uTnVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0
byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7Cisg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdFcnJvckNhbGxiYWNrPigp
OwogCiAgICAgICAgIGNhbGxiYWNrLT5tZXNzYWdlID0geG1sU3RyZHVwKG1lc3NhZ2UpOwogICAg
ICAgICBjYWxsYmFjay0+dHlwZSA9IHR5cGU7CkBAIC0xOTcsNiArMTk3LDcgQEAgY2xhc3MgUGVu
ZGluZ0NhbGxiYWNrcyB7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBlbmRpbmdDYWxsYmFjayB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgdmlydHVh
bCB+UGVuZGluZ0NhbGxiYWNrKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2Fs
bChYTUxEb2N1bWVudFBhcnNlciogcGFyc2VyKSA9IDA7CiAgICAgfTsKQEAgLTU2NCw3ICs1NjUs
NyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpzdXBwb3J0c1hNTFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uKQogWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3Vt
ZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgOiBTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX3ZpZXcoZnJhbWVWaWV3KQotICAgICwgbV9w
ZW5kaW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKKyAg
ICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtlVW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCiAg
ICAgLCBtX2N1cnJlbnROb2RlKCZkb2N1bWVudCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlv
bihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogewpAQCAtNTcyLDcgKzU3Myw3
IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudCYgZG9jdW1l
bnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQogCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1l
bnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbnQqIHBhcmVudEVsZW1l
bnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKICAgICA6IFNjcmlw
dGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1bWVudCgpLCBwYXJzZXJDb250ZW50UG9s
aWN5KQotICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Nh
bGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtlVW5pcXVlPFBlbmRpbmdD
YWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJlbnROb2RlKCZmcmFnbWVudCkKICAgICAsIG1fc2Ny
aXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQogICAg
ICwgbV9wYXJzaW5nRnJhZ21lbnQodHJ1ZSkKQEAgLTEzMjgsNyArMTMyOSw3IEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAgICAgICAgeG1sVHJlZVZpZXdlci50cmFuc2Zvcm1E
b2N1bWVudFRvVHJlZVZpZXcoKTsKICAgICB9IGVsc2UgaWYgKG1fc2F3WFNMVHJhbnNmb3JtKSB7
CiAgICAgICAgIHhtbERvY1B0ciBkb2MgPSB4bWxEb2NQdHJGb3JTdHJpbmcoZG9jdW1lbnQoKS0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgbV9vcmlnaW5hbFNvdXJjZUZvclRyYW5zZm9ybS50b1N0
cmluZygpLCBkb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIGRvY3VtZW50KCkt
PnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9j
KSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShtYWtlVW5pcXVlPFRy
YW5zZm9ybVNvdXJjZT4oZG9jKSk7CiAKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhm
YWxzZSk7IC8vIE1ha2UgdGhlIGRvY3VtZW50IHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2lsbCBh
cHBseSBYU0wgc3R5bGVzaGVldHMuCiAgICAgICAgIGRvY3VtZW50KCktPmFwcGx5UGVuZGluZ1hT
TFRyYW5zZm9ybXNOb3dJZlNjaGVkdWxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZl
ci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vydmlj
ZS5jcHAKaW5kZXggMDViYzk1M2Y3ZjBkZGM3ODdiMWU2MzA0ODc2OTZjMjA4NTljYWUwZi4uZDY5
ZTE0OTkyZDU4Njc1MWNhMDQzNDI2MzYyYTZmNDFjMjY5OWY0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dl
YkRyaXZlclNlcnZpY2UuY3BwCkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2
aWNlOjpjb25uZWN0VG9Ccm93c2VyKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVz
TGlzdCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNlc3Npb25Ib3N0PihjYXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0KCkp
OworICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBtYWtlVW5pcXVlPFNlc3Npb25Ib3N0PihjYXBhYmls
aXRpZXNMaXN0LnRha2VMYXN0KCkpOwogICAgIGF1dG8qIHNlc3Npb25Ib3N0UHRyID0gc2Vzc2lv
bkhvc3QuZ2V0KCk7CiAgICAgc2Vzc2lvbkhvc3RQdHItPmNvbm5lY3RUb0Jyb3dzZXIoW3RoaXMs
IGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFiaWxpdGllc0xpc3QpLCBzZXNzaW9uSG9z
dCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKGVycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lv
bkhvc3RHbGliLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3Bw
CmluZGV4IDdhMjBiODk0MWFmZjcyYTg1MmI3NmY1YzU1MTA2MjY1NDc3NGExY2MuLjE3N2FhNTRm
MjIyOTdhYzMxNjE0ZDM1M2JlOWYzYTc5ZDFhYWIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xp
Yi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0xMTMsNiArMTEzLDcgQEAgYm9vbCBTZXNzaW9uSG9z
dDo6aXNDb25uZWN0ZWQoKSBjb25zdAogfQogCiBzdHJ1Y3QgQ29ubmVjdFRvQnJvd3NlckFzeW5j
RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIENvbm5lY3RU
b0Jyb3dzZXJBc3luY0RhdGEoU2Vzc2lvbkhvc3QqIHNlc3Npb25Ib3N0LCBHVW5pcXVlUHRyPGNo
YXI+JiYgZGJ1c0FkZHJlc3MsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUsIEZ1bmN0aW9uPHZv
aWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAg
ICA6IHNlc3Npb25Ib3N0KHNlc3Npb25Ib3N0KQogICAgICAgICAsIGRidXNBZGRyZXNzKFdURk1v
dmUoZGJ1c0FkZHJlc3MpKQpAQCAtMTczLDcgKzE3NCw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6Omxh
dW5jaEJyb3dzZXIoRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29t
cGxlCiAgICAgfSwgdGhpcyk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRidXNBZGRyZXNzKGdf
c3RyZHVwX3ByaW50ZigidGNwOmhvc3Q9JXMscG9ydD0ldSIsICIxMjcuMC4wLjEiLCBwb3J0KSk7
Ci0gICAgY29ubmVjdFRvQnJvd3NlcihzdGQ6Om1ha2VfdW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJB
c3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxlLmdldCgp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIGNvbm5lY3RUb0Jyb3dzZXIobWFr
ZVVuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPih0aGlzLCBXVEZNb3ZlKGRidXNBZGRy
ZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsK
IH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6Y29ubmVjdFRvQnJvd3NlcihzdGQ6OnVuaXF1ZV9wdHI8
Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4mJiBkYXRhKQpAQCAtMzcxLDYgKzM3Miw3IEBAIHZv
aWQgU2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0aW9u
SUQsIHVpbnQ2NF90IHRhcmdldElECiB9CiAKIHN0cnVjdCBNZXNzYWdlQ29udGV4dCB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIGxvbmcgbWVzc2FnZUlEOwogICAg
IFNlc3Npb25Ib3N0KiBob3N0OwogfTsKQEAgLTM4MSw3ICszODMsNyBAQCB2b2lkIFNlc3Npb25I
b3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIG1lc3NhZ2VJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25JRCk7CiAgICAgQVNTRVJUKG1fdGFyZ2V0
LmlkKTsKIAotICAgIGF1dG8gbWVzc2FnZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3Nh
Z2VDb250ZXh0PihNZXNzYWdlQ29udGV4dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKKyAgICBhdXRv
IG1lc3NhZ2VDb250ZXh0ID0gbWFrZVVuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2FnZUNvbnRl
eHQgeyBtZXNzYWdlSUQsIHRoaXMgfSk7CiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbChtX2Ri
dXNDb25uZWN0aW9uLmdldCgpLCBudWxscHRyLAogICAgICAgICBJTlNQRUNUT1JfREJVU19PQkpF
Q1RfUEFUSCwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfSU5URVJGQUNFLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIu
aAppbmRleCBiNjJmMTJlMTgyZjIxZWI4ZDUxMDc0Y2IyNTRkN2IyMTJlMGNlZDE5Li5iNDQ1ZTdh
NjVhNDhkMDc0OGJkN2U5MjA1YTM0NDBmN2YxYTk1NmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaApAQCAt
MzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEFkQ2xpY2tBdHRyaWJ1
dGlvbk1hbmFnZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QWRDbGlja0F0dHJpYnV0aW9uTWFu
YWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogCiAgICAgdXNp
bmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZS5jcHAKaW5kZXggMmUyOTZiMjlmNDNhNGZjODhlNzAwOTMyNGE1ZTIzYjBiZTljZDUxYy4uOTMw
M2QyYWRjMTVlZjZmYjMxMGI2ZmIxNmQwNzBjYzg1M2ZkYzNjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAg
LTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzaygpCiAgICAgaWYgKHJlc291cmNlTG9nUGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYo
KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBtX2ZpbGVNb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxl
TW9uaXRvcj4ocmVzb3VyY2VMb2dQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlw
ZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBp
ZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0
b3J5Rm9yTmV3U3RhdGlzdGljcygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZpbGVNb25p
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1
ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
eworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0
aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAg
ICBpZiAodHlwZSA9PSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6OlJlbW92YWwpIHsKICAg
ICAgICAgICAgIC8vIERpcmVjdG9yeSB3YXMgcmVtb3ZlZCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAppbmRleCA0YzAzM2Uz
NTNkNGYzMDhmN2Y3NjAwMTJjYTk2Mjk2MzAzYzEwNzMwLi43MWYzNGJmYTNkNmMyYjUyNzYxNjg5
NDRlZTMzNGM3M2RhZjUwMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTsKIAogLy8gQ2FuIG9ubHkgYmUgY29uc3Ry
dWN0ZWQgLyBkZXN0cm95ZWQgLyB1c2VkIGZyb20gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSdzIHN0YXRpc3RpYyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlJiwgV29ya1F1ZXVlJiwgY29uc3QgU3RyaW5n
JiBzdG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAgICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CmluZGV4IDcwYWNiZGNlOTZmNjVjZjgzYTk0NjM3ZDNmYjhkMWU5YjI2NTUzZGQuLmEwY2VmNmYz
MWI0OTY2MmU1ZjkyMDNjY2Y4YjE5MDg3ZTMwZTg0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTc3LDYgKzc3LDcgQEAgZW51bSBjbGFzcyBPcGVyYXRp
bmdEYXRlc1dpbmRvdyA6IGJvb2wgeyBMb25nLCBTaG9ydCB9OwogCiAvLyBUaGlzIGlzIGFsd2F5
cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3MgcXVldWUuCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNp
bmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
aW5kZXggOGMyMTE1N2NjN2Y2OTE3YmE5NzA4OWUzNmYxNjlkODZjZjhiOGFiMC4uYTFjMDdmMzZh
NmY4ZmZmY2Q3NjAzOGRkNmNlYWNiY2E2NDdlYjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE1OSwxNSArMTU5LDE1IEBAIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KE5ldHdvcmtTZXNzaW9uJiBuCiAgICAgCiAgICAgcG9zdFRhc2soW3RoaXMsIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5Lmlz
b2xhdGVkQ29weSgpLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0XSB7CiAgICAgICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlzSVRQRGF0YWJhc2VFbmFibGVk
KCkpIHsKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1
ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBz
aG91bGRJbmNsdWRlTG9jYWxob3N0LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsK
IAotICAgICAgICAgICAgYXV0byBtZW1vcnlTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAgICAgICAgICAgYXV0byBwZXJzaXN0ZW50U3RvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZT4oKm1lbW9yeVN0b3JlLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSk7CisgICAgICAgICAgICBhdXRvIG1lbW9yeVN0b3JlID0gbWFrZVVuaXF1ZTxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1
ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CisgICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRT
dG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
PigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KTsKIAogICAgICAgICAgICAgZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZS5nZXQoKSkucG9wdWxhdGVGcm9tTWVt
b3J5U3RvcmUoKm1lbW9yeVN0b3JlKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1f
c3RhdGlzdGljc1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdCk7Ci0gICAgICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KGRvd25jYXN0PFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSwgbV9zdGF0
aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAg
ICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0KTsKKyAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBtYWtlVW5pcXVlPFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NR
dWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBGSVhNRSgxOTMyOTcpOiBUaGlzIHNob3VsZCBiZSByZXZpc2VkIGFmdGVyIHRoZSBV
SVByb2Nlc3MgdmVyc2lvbiBnb2VzIGF3YXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCA2MDVhZWYzZTZl
ZTk1MGYzOTQ4M2ZjZDhjYzRkOGU2NThlMDJjZjBjLi5iYmUzOTg0NzUyYmUxNDYwNTBkNTAzNTcx
MzcxNTUwZmIyY2I2M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIAogY2xhc3MgV2ViQ29va2llTWFu
YWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2ViQ29va2llTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgV2ViQ29va2llTWFu
YWdlcihOZXR3b3JrUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXIuaAppbmRleCBkYzc5ZWViY2YxOGRiZjY3YjQ2NGMzNTg2MTBmYjNjZTdj
ZmU5MGNjLi5mOTBmMGZjYjQxOTAyNGI4YTk1ZjU3NzBjOWI3OTk3YjU3ODRiMzIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaApAQCAtNjMsNiAr
NjMsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIDogcHVi
bGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IExl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcihOZXR3b3JrUHJvY2VzcyYpOwpAQCAtNzgsNiArNzks
NyBAQCBjbGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1By
b2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOgogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAg
c3RydWN0IFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YShHUmVmUHRy
PEdUYXNrPiYmLCBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWMqKTsKICAgICAgICAgfldlYlNvdXBS
ZXF1ZXN0QXN5bmNEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3Vw
L0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDJjNGQyZmY5NDgwOWM0
MmE2MTE2NzNiNWZiNWNhZGJmYTU5MTYwNGUuLmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0ZjM5ZmI1
ZWZjZDc1ZTcxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3Vz
dG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBD
dXN0b21Qcm90b2NvbFJlcXVlc3RDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVl
c3RHZW5lcmljQ2xpZW50CiAgICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3Rv
bVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2woc3RkOjptYWtlX3VuaXF1ZTxMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3Zl
KHRhc2spLCByZXF1ZXN0KSk7CisgICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3Rv
bVByb3RvY29sTWFuYWdlci0+YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2sp
LCByZXF1ZXN0KSk7CiAgICAgICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+c3RhcnRMb2FkaW5n
KGN1c3RvbVByb3RvY29sSUQsIHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVlc3QocmVx
dWVzdCkpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBmNGQ3NWQ5ZGQzMTgy
MDA0NDlhMmFiMmU1OGU4ODYzMTIwYzc3NzQ0Li41MDdmNGY2ZmZjM2Q0MDY5YzEzNzgyNjUyNzVj
NjYwNjU0YjRjODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBEb3dubG9hZElEIGRvd25sb2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5j
ZXMgPSBjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKS5m
aWxlc0luQmxvYihyZXF1ZXN0LnVybCgpKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRp
YWxzUG9saWN5ID0gc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwogCi0gICAgbV9w
ZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdE
b3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNzaW9uLCAmY2xpZW50
KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKS0+YmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5h
bWUpKTsKKyAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8
UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25s
b2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24s
ICZjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3Vn
Z2VzdGVkTmFtZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVE
b3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxv
YWQ+JiYgZG93bmxvYWQpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3
aWxsRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3
CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3du
bG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3Jr
TG9hZCwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZl
cmVuY2VzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRh
aW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQs
IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAg
bV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElELCBtYWtlVW5pcXVlPFBlbmRpbmdEb3du
bG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RG
TW92ZShuZXR3b3JrTG9hZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElE
LCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGlu
dWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQs
IFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2
b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sbwogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogI2Vsc2UKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxE
b3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CisgICAgYXV0
byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxs
cHRyLCBzZXNzaW9uSUQpOwogCiAgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRo
LCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxv
YWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAppbmRleCBhODg0YWNiMjk1ZDQy
Y2U5M2UyMWJhYzQzMzA4NGQ3YmJjNDMzZTY1Li5hZTNjYTdlMGU0ZWU3ZWM4NWRlYTJlMzA5ZTFk
M2MyMGI3NDk2NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIERvd25sb2FkTWFw
OjpEb3dubG9hZE1hcFR5cGU6OkFkZFJlc3VsdCBEb3dubG9hZE1hcDo6YWRkKERvd25sb2FkSUQg
ZG93bmxvYWRJRCwKICAgICBhdXRvIHJlc3VsdCA9IG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElE
LCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxKSB7
CiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9hZEFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxv
YWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgp
LCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtp
bmcpOworICAgICAgICBtX2Rvd25sb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNz
ZXJ0aW9uPihnZXRwaWQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpV
bmJvdW5kZWROZXR3b3JraW5nKTsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICJUb29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb24gaW4gTmV0d29ya1Byb2Nlc3Mi
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCmluZGV4IGEyNzgyOGQ3YThiZDg0YTdhZTM3
NzE2ODY3ODY5MWM3NjdmMjc5NmQuLjU5MTIzZjJjNDhmMWMxZTQxNzliYjFkNWJjZTE1NzBjNmI3
NTRlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQZW5kaW5nRG93bmxvYWQ6OlBl
bmRpbmdEb3dubG9hZChJUEM6OkNvbm5lY3Rpb24qIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uLCBO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBEb3dubG9hZElEIGRvd25sb2FkSUQs
IE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1w
bCogYmxvYlJlZ2lzdHJ5LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi0gICAgOiBtX25l
dHdvcmtMb2FkKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVnaXN0
cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNzaW9uKSkKKyAgICA6IG1fbmV0d29y
a0xvYWQobWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQogICAgICwgbV9wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbikKIHsKICAgICBtX2lzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzID0gcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAxZjEwMDRlMWI1YmNkMzlkOGIxMjJkZjhjNmRh
NDhkMTM3YzRiZTYxLi4zMDFkYmUzNzgzMDE2NzkyYWMxMzVkMzBlNjk4MTIwYmEwMjBiMGQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtOTAzLDcgKzkwMyw3IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCkKIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVj
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNl
c3Npb24oc2Vzc2lvbklEKTsKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5l
Y3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1
ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25u
ZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOwogICAgIAogICAgIFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5pZGVudGlm
aWVyKCk7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uIC0gJXMiLCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlz
dE1hbmFnZXIuY3BwCmluZGV4IDQ0NDIwZmY1ZmYyMjk5YmUzNzU0Y2UzN2NkZGM3ZWU2MTYyZTE5
MzEuLjU0MzUyODI4ZTY4NzIxYWYwYmFkZTBjMDI3NWJlMmYwOTVhMTY2MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTmV0d29ya0NvbnRlbnRS
dWxlTGlzdE1hbmFnZXI6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRy
b2xsCiB2b2lkIE5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxp
c3RzKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+JiYgY29udGVu
dFJ1bGVMaXN0cykKIHsKICAgICBhdXRvJiBiYWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJh
Y2tlbmRzLmVuc3VyZShpZGVudGlmaWVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogCiAgICAgZm9yIChhdXRvJiYgY29udGVudFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5jcHAKaW5kZXggODU2Y2ExZjA5NWUxMDNjNTQyYWQ0ZTQzMDAwYmNiNzBmZjFmYjMwNy4u
OGE2YzVhMWYyMThkM2M5YWIyMTA0ZGYwOTQ2OTJjYzNmNjU1MjI1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VE
b21haW4gPSAiV2ViS2l0QmxvYlJlc291cmNlIjsKIAogTmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0
d29ya0RhdGFUYXNrQmxvYihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgQmxvYlJlZ2lzdHJ5SW1w
bCYgYmxvYlJlZ2lzdHJ5LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVu
dFNuaWZmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4+JiBmaWxlUmVmZXJlbmNlcykKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGll
bnQsIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2UsIGZh
bHNlKQotICAgICwgbV9zdHJlYW0oc3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0
aGlzKSkKKyAgICAsIG1fc3RyZWFtKG1ha2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykp
CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGZpbGVSZWZlcmVuY2VzKQogICAgICwgbV9uZXR3b3Jr
UHJvY2VzcyhzZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkpCiB7CkBAIC00NjcsNyArNDY3LDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAgICAgfQogCiAgICAgYXV0byYg
ZG93bmxvYWRNYW5hZ2VyID0gbV9uZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCk7Ci0g
ICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFu
YWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCks
IHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERv
d25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nl
c3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3du
bG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwogICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0Jl
Y2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7
CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2Fk
TG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcAppbmRleCBmNjU0Mjk1OGI0NzEwM2QzODFm
OGNjNTM3MGQ5ZDZiNTk0ZGMxMTZjLi4xOTMyNmYyZjQ3ZGM5ZjRmNjIyOGE0YzlhYTg0ZjZjOWZh
YWJiNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBOZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgICAgIG1fZGF0YWJhc2Ug
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPigpOwogICAgICAgICBib29sIGlz
RGF0YWJhc2VPcGVuID0gbV9kYXRhYmFzZS0+b3BlbihwYXRoLCBXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZTo6T3Blbk1vZGU6OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFpc0RhdGFiYXNlT3Blbikg
ewogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODAsNyArODAsNyBAQCBOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAvLyBTaW5j
ZSB3ZSBhcmUgdXNpbmcgYSB3b3JrZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxv
Y2tzIG1heSBiZSBjYWxsZWQgYnkgZGlmZmVyZW50IHRocmVhZHMuCiAgICAgICAgIG1fZGF0YWJh
c2UtPmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKTsKIAotICAgICAgICBtX3N0YXRlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0
cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsKKyAgICAgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4oKm1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNr
ZXJRdWVyeSk7CiAgICAgICAgIGludCBpc1N0YXRlbWVudFByZXBhcmVkID0gKG1fc3RhdGVtZW50
LT5wcmVwYXJlKCkgPT0gU1FMSVRFX09LKTsKICAgICAgICAgQVNTRVJUKGlzU3RhdGVtZW50UHJl
cGFyZWQpOwogICAgICAgICBpZiAoIWlzU3RhdGVtZW50UHJlcGFyZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
LmgKaW5kZXggZGNkNDZhNjAxYmU2MzA5ODZmYzJhZTBjMWM5NjU1OGM5NTkyMjA4YS4uNTFkMjAz
MTRlYWE0OWU5NmE0MWE1N2NlOGQ0MjIyNmJiZmIwNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaApA
QCAtNDIsNiArNDIsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CiAgICAg
fk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDkxMDdmZWMxZTM0ZGI0NDg4MTYyMjg2ODYyMmM4
ZmJlYjViMzg4M2MuLmVlODBhYzZlYTFhNzc5NzczYTA3MTBlMTc4ODcwNjM3NjdjNTEyYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGUKICAgICB9CiAKICAgICBpZiAobV9s
b2FkVGhyb3R0bGVMYXRlbmN5ID4gMF9zKSB7Ci0gICAgICAgIG1fdGhyb3R0bGUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRocm90dGxlPigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX3Rocm90
dGxlID0gbWFrZVVuaXF1ZTxUaHJvdHRsZT4oKnRoaXMsIG1fbG9hZFRocm90dGxlTGF0ZW5jeSwg
V1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IDQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlhMTYwODE3
ZjI0Nzk2N2IwMTYuLmUxYWUwMGJkOWQ5NTQ3Nzc4MTc0Mzk4NWRmMDczYThiMWNkMjUzN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tD
T1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogICAgICAg
ICBtX2ZyYW1lSUQsCiAgICAgICAgIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9Owot
ICAgIG1fY29yc1ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVk
aXJlY3RlZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgIG1f
Y29yc1ByZWZsaWdodENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91
bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlz
UmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09y
aWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2Vz
czogJWQgZm9yUmVkaXJlY3Q/ICVkIiwgZXJyb3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAK
ICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewpAQCAtNDQ2LDcgKzQ0Niw3IEBAIENvbnRl
bnRTZWN1cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xp
Y3koKQogewogICAgIGlmICghbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgbV9jc3BSZXNwb25z
ZUhlYWRlcnMpIHsKICAgICAgICAgLy8gRklYTUU6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVj
dGVkIHJlc291cmNlIGluc3RlYWQgb2YgaXRzIG9yaWdpbi4KLSAgICAgICAgbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJM
IHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7CisgICAgICAgIG1fY29udGVudFNl
Y3VyaXR5UG9saWN5ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVS
TCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygpIH0pOwogICAgICAgICBtX2NvbnRlbnRTZWN1cml0
eVBvbGljeS0+ZGlkUmVjZWl2ZUhlYWRlcnMoKm1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcg
eyBtX3JlZmVycmVyIH0sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9y
czo6Tm8pOwogICAgIH0KICAgICByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGU4MjBiMjljMjBmNTE5ZmI1ZTNkZDg4YThiZWY2NDY1NDA2ODZiMGIuLjRkYzgyNTY0NmIy
YmY3N2ZiY2E5MTdjOTVjMjdiNGU0NmY1NWI1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01MDMsOSArNTAzLDkgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBj
b29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9y
YWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBt
X2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgbV9kZWZh
dWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUo
c2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVT
RShTT1VQKQotICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKTsKKyAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBt
YWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAjZW5kaWYKIH0KIApAQCAtNTM1LDkgKzUzNSw5IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNl
c3Npb25JRCwgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRD
RihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNz
aW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsK
KyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29v
a2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4oc2Vzc2lvbklEKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1
ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CiAjZW5kaWYKIH0KIApAQCAtMjQ1
Myw3ICsyNDUzLDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vdCwg
dGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6OlNlc3Npb25JRCBjb21lIGZyb20/CiAgICAgICAgIEFT
U0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSB8fCAhcGF0aC5pc0VtcHR5KCkpOwogICAgICAg
ICAKLSAgICAgICAgYXV0byB2YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VV
bmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsK
KyAgICAgICAgYXV0byB2YWx1ZSA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8
V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKICAgICAgICAg
aWYgKG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkK
ICAgICAgICAgICAgIHZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5KCk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKQEAgLTI1NjUsNiArMjU2NSw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBDbGllbnRPCiB9CiAKIGNsYXNzIFF1b3RhVXNlckluaXRpYWxpemVyIGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VRdW90YVVzZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFF1b3RhVXNlckluaXRpYWxpemVy
KFN0b3JhZ2VRdW90YU1hbmFnZXImIG1hbmFnZXIpCiAgICAgICAgIDogbV9tYW5hZ2VyKG1ha2VX
ZWFrUHRyKG1hbmFnZXIpKQpAQCAtMjU5OSw3ICsyNjAwLDcgQEAgY2xhc3MgUXVvdGFVc2VySW5p
dGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVF1b3RhVXNlciB7CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVRdW90YVVzZXJzKFN0b3JhZ2VRdW90YU1hbmFn
ZXImIG1hbmFnZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2lu
JiBvcmlnaW4pCiB7Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQsIG9yaWdpbiwgdXNlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUgeworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVzZXIgPSBtYWtlVW5pcXVlPFF1b3RhVXNlckluaXRp
YWxpemVyPihtYW5hZ2VyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy0+aWRiU2VydmVyKHNlc3Npb25JRCkuaW5p
dGlhbGl6ZVF1b3RhVXNlcihvcmlnaW4pOwpAQCAtMjYxMyw3ICsyNjE0LDcgQEAgU3RvcmFnZVF1
b3RhTWFuYWdlciYgTmV0d29ya1Byb2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbkkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VRdW90YU1hbmFnZXJzIHsgfTsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuICpzdG9yYWdlUXVvdGFNYW5hZ2Vy
cy5tYW5hZ2Vyc1Blck9yaWdpbigpLmVuc3VyZShvcmlnaW4sIFt0aGlzLCAmc3RvcmFnZVF1b3Rh
TWFuYWdlcnMsIHNlc3Npb25JRCwgJm9yaWdpbl0gewotICAgICAgICBhdXRvIG1hbmFnZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1hbmFnZXJz
LmRlZmF1bHRRdW90YShvcmlnaW4pLCBbdGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVpbnQ2NF90
IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1
dG8gY2FsbGJhY2spIHsKKyAgICAgICAgYXV0byBtYW5hZ2VyID0gbWFrZVVuaXF1ZTxTdG9yYWdl
UXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVvdGFNYW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwg
W3RoaXMsIHNlc3Npb25JRCwgb3JpZ2luXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVu
dFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAg
ICAgICB0aGlzLT5yZXF1ZXN0U3RvcmFnZVNwYWNlKHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwg
Y3VycmVudFNwYWNlLCBzcGFjZUluY3JlYXNlLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAg
IH0pOwogICAgICAgICBpbml0aWFsaXplUXVvdGFVc2VycygqbWFuYWdlciwgc2Vzc2lvbklELCBv
cmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CmluZGV4IDFiZWI3YjY1ZGI2MzBjM2IzMjhiYjE1Y2ZjM2IzMTE2YjRiOTk0ZDYuLmE5NWEyZGU3
OWVhZGRkNDgwOTQzNDRiZjdjYTI2NmNkYjNmNzZkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBjbGFzcyBO
ZXR3b3JrUHJvY2VzcyA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzLCBwcml2YXRlIERvd25sb2Fk
TWFuYWdlcjo6Q2xpZW50LAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRk
U3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVt
ZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+KCp0aGlzKSk7CisgICAgICAgIG1fc3VwcGxl
bWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsKICAg
ICB9CiAKICAgICB2b2lkIHJlbW92ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDc4MmVmMTVmM2Rl
ZWU1YWY0ZWFlZjA1Y2RmNjAzNmFlN2U2ZDJmYi4uOGMzM2ZiODYwYWQ3YTc4NzM2ZTRiOGZiYWRm
MjBjNzc1NTMyOWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiYgcGFyCiAKICAgICBpZiAoc3luY2hyb25vdXNSZXBseSB8fCBwYXJhbWV0ZXJz
LnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzIHx8IHBhcmFtZXRlcnMub3B0aW9ucy5r
ZWVwQWxpdmUpIHsKICAgICAgICAgTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZSByZXF1ZXN0
TG9hZFR5cGUgPSBpc01haW5GcmFtZUxvYWQoKSA/IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5
cGU6Ok1haW5GcmFtZSA6IE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGU6Ok90aGVyOwotICAg
ICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWRD
aGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7IG1fcGFy
YW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsgbV9wYXJh
bWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1fcGFyYW1l
dGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBt
X3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9h
ZENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3
b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlvbnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3Bh
cmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgSFRUUEhlYWRlck1hcCB7IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RI
ZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVy
cy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBv
cmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdy
YWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVl
c3RMb2FkVHlwZSk7CiAgICAgICAgIGlmIChtX3BhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJz
KQogICAgICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPnNldENTUFJlc3BvbnNlSGVhZGVy
cyhDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgeyBtX3BhcmFtZXRlcnMuY3Nw
UmVzcG9uc2VIZWFkZXJzLnZhbHVlKCkgfSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKQEAgLTExOSw3ICsxMTksNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogI2VuZGlmCiAg
ICAgfQogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5KQotICAgICAgICBtX3N5bmNocm9ub3VzTG9h
ZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3lu
Y2hyb25vdXNSZXBseSkpOworICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBtYWtlVW5p
cXVlPFN5bmNocm9ub3VzTG9hZERhdGE+KFdURk1vdmUoc3luY2hyb25vdXNSZXBseSkpOwogfQog
CiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5OZXR3b3JrUmVzb3VyY2VMb2FkZXIoKQpAQCAtMzE4
LDcgKzMxOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2Fk
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIHBhcmFtZXRlcnMu
YmxvYkZpbGVSZWZlcmVuY2VzID0gbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLmZpbGVz
SW5CbG9iKG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKTsKIAogICAgIHBhcmFtZXRlcnMucmVxdWVz
dCA9IFdURk1vdmUocmVxdWVzdCk7Ci0gICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQg
PSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVn
aXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRl
c2NyaXB0aW9uID0gJXtwdWJsaWN9cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0
KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9u
ZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCA1MDZlN2ZmMDhmYmM5
YTc2NGVhODMwMzA5NGI2ZDMwNjc0YTNmM2E0Li4zMzViMTliZmIwOTA1MGE3ZmJhZDMzMzg0N2Ix
YzRmNTJjY2M2MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCkBAIC02NSw2ICs2NSw3IEBAIGNsYXNzIENhY2hlOwogfQogCiBjbGFzcyBOZXR3
b3JrU2Vzc2lvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZpcnR1YWwgfk5ldHdvcmtTZXNzaW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENo
YW5uZWwuY3BwCmluZGV4IDA0ZTNkMDI1MjIwZGU0YzQzYzczNjJkYTE0MWRmMzJiYTIwMzBmYWYu
LjU5MTg4NTc1N2E4NDc1MWM4MzE4ZjdiZTVkMjc1YTdmMTFjNWE0YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1NvY2tldENoYW5uZWw+IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sLCB1aW50NjRfdCBpZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5u
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3Rv
Y29sLCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8TmV0d29ya1Nv
Y2tldENoYW5uZWw+KGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7CiAg
ICAgaWYgKCFyZXN1bHQtPm1fc29ja2V0KSB7CiAgICAgICAgIHJlc3VsdC0+ZGlkQ2xvc2UoMCwg
IkNhbm5vdCBjcmVhdGUgYSB3ZWIgc29ja2V0IHRhc2siX3MpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tl
dENoYW5uZWwuaAppbmRleCA2NzJiMzc4MWE0ZDRhMzRiOWMxZTFlMjQxNWJkNDkxMGU3NzllZDcx
Li45ZGY5YWFjZGNiMzMyZTA0MWRiNjliZDA2ODEwMjI5Y2Y4YmI0ZTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCkBAIC00
OCw2ICs0OCw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Nlc3Npb247
CiAKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRl
ciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRD
aGFubmVsPiBjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBQQUw6OlNlc3Np
b25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCwgdWludDY0X3QgaWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggZDkwY2NjYTk4MGE4ZWZmYzJkNGYzOGY1
ZTNmNmJjMGFhMmMyZTU0Ni4uMmM2NDI3ZTY0ODIyY2VmNWQxYTgxMjAyNWVmZDZjODU0NTQxY2U4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgUHJlY29ubmVjdFRhc2s6OlByZWNvbm5lY3RUYXNrKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya0xvYWRQYXJhbWUKICAgICB9CiAKICAg
ICBBU1NFUlQocGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25s
eTo6WWVzKTsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9h
ZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7
CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxs
cHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgbV90aW1l
b3V0VGltZXIuc3RhcnRPbmVTaG90KDYwMDAwX3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaAppbmRleCAzYTU5ZmZhNmExYTA4ZDYzZGU1YmZmNTll
M2Y2OTQ2ZjBlNDA4ZWI0Li4wNDc5OTIwODk2ZGEyNTdmYzU4NjQ1MTYwYzAwMDlkMTY0Y2U1ZmY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApAQCAt
MzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNvY2tldFRhc2sg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgdWlu
dDY0X3QgVGFza0lkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmlu
ZGV4IGJmNTE1NzhmYjE0N2RkZGM4N2U2NmQ5MGE1ZWRkMDJhNGNkNzI2OTMuLmNjODc4NGQ0Mjgz
YTYyNWZjMGUxZDllZmFhNTI3MDUyM2FjNzExODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNj
aGVkdWxlRGF0YWJhc2VVcGRhdGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UpCi0gICAgICAg
IG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXI+KCk7CisgICAgICAgIG1f
ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVXcml0aW5nVG9Mb2NhbFN0b3JhZ2UgPSBtYWtl
VW5pcXVlPFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXI+KCk7CiAKICAgICBtX2RpZFNjaGVkdWxl
RGF0YWJhc2VVcGRhdGUgPSB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggM2U5ZDE3ZDYwMmQzNDE3NzAzM2M5
MzM4YjRiYmU2ZGEwYmFiYThhNC4uYjA4M2Q1ZDMyYTUxZTYxZGE0Mzc2ZGY5NDQ2ZWYxMTE0ZWE2
YmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcApAQCAtODQsMTcgKzg0LDE3IEBAIENhY2hlOjpDYWNoZShOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFJlZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxD
CiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQog
ICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKENhY2hlT3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFsaWRh
dGlvbikpIHsKLSAgICAgICAgbV9sb3dQb3dlck1vZGVOb3RpZmllciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJN
b2RlRW5hYmxlZCkgeworICAgICAgICBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1v
ZGVFbmFibGVkKSB7CiAgICAgICAgICAgICBBU1NFUlQoV1RGOjpSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgICAgICAgICBpZiAoaXNMb3dQb3dlck1vZGVFbmFibGVkKQogICAgICAgICAgICAgICAg
IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlcik7Ci0gICAg
ICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9KTsKICAgICAgICAgaWYgKCFtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyLT5pc0xvd1Bvd2Vy
TW9kZUVuYWJsZWQoKSkKLSAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0
ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5n
ZXQoKSk7CisgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBtYWtlVW5pcXVl
PFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwogICAgIH0K
ICNlbmRpZgogCkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJp
ZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAog
ICAgIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VE
YXRhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXko
cmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxl
Y3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRy
eT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEp
LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCku
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1
ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXko
cmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFr
ZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpj
b2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJv
ZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IENhY2hlOjp1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBl
eGlzdGluZ0VudHJ5LnJlc3BvbnNlKCk7CiAgICAgV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFk
ZXJzQWZ0ZXJSZXZhbGlkYXRpb24ocmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKLSAg
ICBhdXRvIHVwZGF0ZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRy
eS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxl
Y3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSkpOworICAgIGF1dG8gdXBkYXRlRW50
cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihleGlzdGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhp
c3RpbmdFbnRyeS5idWZmZXIoKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVy
cyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVl
c3QsIHJlc3BvbnNlKSk7CiAgICAgYXV0byB1cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRyeS0+ZW5j
b2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAKICAgICBtX3N0b3JhZ2UtPnN0b3JlKHVwZGF0ZVJlY29y
ZCwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggN2FlMWMyZmU3ZGNlNjA3YjlmOGE1M2Q5OWEx
YmQ3OTg1Mzk5YmNmMS4uMWY0MTQ0YThmYWU4N2JmNWZjNWM4M2VkOTAyYjZmZjA4YTA2NGFlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50
cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9y
YWdlRW50cnkpCiB7Ci0gICAgYXV0byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KHN0
b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8RW50cnk+KHN0b3JhZ2VF
bnRyeSk7CiAKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVu
dHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3Jlc3BvbnNlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcAppbmRleCA5NGI2MDY4YTBkZmVkNzQyZmFmZmRlNTc2ODg3MDVhZTdhNDYy
MDFiLi5iYjk3YzdhM2YyNzYxNzZkMDlmZjQ4MzViMmYzYjk3ZWYyZTU4ZmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFNwZWN1bGF0aXZl
TG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYg
Z2xvYmFsRnJhbWVJCiAgICAgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBDb250
ZW50U25pZmZpbmdQb2xpY3k6OkRvTm90U25pZmZDb250ZW50OwogICAgIHBhcmFtZXRlcnMuY29u
dGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgPSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eTo6U25pZmY7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7Ci0g
ICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBu
dWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3
b3JrU2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CisgICAgbV9u
ZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKSk7CiB9CiAKIFNwZWN1bGF0aXZlTG9h
ZDo6flNwZWN1bGF0aXZlTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyLmNwcAppbmRleCAxY2Q2YjQ5MmY4MWE1YTgxZDI0Y2E3OTEwOGRhNmIxOWUwYzAw
M2YxLi41N2U4ZTc1OTliMWNjYTY1YjI2ZTA2ZWMzODcyZWUyZGQ5NDlkZjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTE3NCw3ICsxNzQs
NyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGVuZGluZ0ZyYW1lTAogICAgIHZvaWQgcmVnaXN0ZXJTdWJyZXNvdXJj
ZUxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLZXkmIHN1YnJlc291
cmNlS2V5KQogICAgIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAg
ICAgbV9zdWJyZXNvdXJjZUxvYWRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNl
TG9hZD4ocmVxdWVzdCwgc3VicmVzb3VyY2VLZXkpKTsKKyAgICAgICAgbV9zdWJyZXNvdXJjZUxv
YWRzLmFwcGVuZChtYWtlVW5pcXVlPFN1YnJlc291cmNlTG9hZD4ocmVxdWVzdCwgc3VicmVzb3Vy
Y2VLZXkpKTsKICAgICAgICAgbV9sb2FkSHlzdGVyZXNpc0FjdGl2aXR5LmltcHVsc2UoKTsKICAg
ICB9CiAKQEAgLTM1NSw3ICszNTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJl
dHJpZXZlKGNvbnN0IEtleSYgc3RvcmFnZUtleSwgUmV0cmlldmVDb21wbGV0aW9uSAogICAgIEFT
U0VSVChtX3BlbmRpbmdQcmVsb2Fkcy5jb250YWlucyhzdG9yYWdlS2V5KSk7CiAgICAgLy8gRklY
TUU6IFRoaXMgYnJlYWtzIGluY3JlbWVudGFsIGxvYWRpbmcgd2hlbiB0aGUgcmV2YWxpZGF0aW9u
IGlzIG5vdCBzdWNjZXNzZnVsLgogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nUmV0cmll
dmVSZXF1ZXN0cy5lbnN1cmUoc3RvcmFnZUtleSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsK
ICAgICB9KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBl
bnRyeSwgY29uCiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBBU1NFUlQoIWVudHJ5LT5uZWVkc1Zh
bGlkYXRpb24oKSk7CiAgICAgYXV0byBrZXkgPSBlbnRyeS0+a2V5KCk7Ci0gICAgbV9wcmVsb2Fk
ZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1v
dmUoZW50cnkpLCBXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBbdGhpcywga2V5LCBmcmFt
ZUlEXSB7CisgICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIG1ha2VVbmlxdWU8UHJlbG9h
ZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCBXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBb
dGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAgICAgIGF1dG8gcHJlbG9hZGVkRW50cnkgPSBtX3By
ZWxvYWRlZEVudHJpZXMudGFrZShrZXkpOwogICAgICAgICBBU1NFUlQocHJlbG9hZGVkRW50cnkp
OwogICAgICAgICBpZiAocHJlbG9hZGVkRW50cnktPndhc1JldmFsaWRhdGVkKCkpCkBAIC00NDks
NyArNDQ5LDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1Jl
cXVlc3RzKGNvbnN0IEtleSYga2V5LCBFbnRyeSogZW50cnkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgZm9yIChhdXRvJiBjb21wbGV0aW9uSGFuZGxlciA6ICpjb21wbGV0aW9uSGFuZGxl
cnMpCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVudHJ5ID8gc3RkOjptYWtlX3VuaXF1ZTxF
bnRyeT4oKmVudHJ5KSA6IG51bGxwdHIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRy
eSA/IG1ha2VVbmlxdWU8RW50cnk+KCplbnRyeSkgOiBudWxscHRyKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
cmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVzCiAKICAg
ICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNz
KSBTcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGluZyAnJXMnOiIsIGtleS5pZGVudGlmaWVyKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIHJldmFsaWRhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxT
cGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdU
Rk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFs
aWRhdG9yID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJl
dmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRp
b25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50
cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVu
dHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRy
eSB8fCByZXZhbGlkYXRlZEVudHJ5LT5rZXkoKSA9PSBrZXkpOwogCkBAIC01NTksNyArNTU5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGYKICAgICAgICAgICAgIHByZWxvYWRFbnRyeShrZXks
IHN1YnJlc291cmNlSW5mbywgZnJhbWVJRCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
TE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2Vzcykg
Tm90IHByZWxvYWRpbmcgJyVzJyBiZWNhdXNlIGl0IGlzIG1hcmtlZCBhcyB0cmFuc2llbnQiLCBr
ZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgbV9ub3RQcmVsb2Fk
ZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMs
IGtleSwgZnJhbWVJRF0geworICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLmFkZChr
ZXksIG1ha2VVbmlxdWU8RXhwaXJpbmdFbnRyeT4oW3RoaXMsIGtleSwgZnJhbWVJRF0gewogICAg
ICAgICAgICAgICAgIGxvZ1NwZWN1bGF0aXZlTG9hZGluZ0RpYWdub3N0aWNNZXNzYWdlKG1fY2Fj
aGUubmV0d29ya1Byb2Nlc3MoKSwgZnJhbWVJRCwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjplbnRy
eVJpZ2h0bHlOb3RXYXJtZWRVcEtleSgpKTsKICAgICAgICAgICAgICAgICBtX25vdFByZWxvYWRl
ZEVudHJpZXMucmVtb3ZlKGtleSk7CiAgICAgICAgICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cAppbmRleCBiYmZjNjQ5ODkwZjk1Y2M3ZTA0Y2U4MmE0ZmUzMjk0NGRjMWFiMWYwLi44MDRjNDI5
OGNjM2UzYzI4MTRmZGJjMmJiYjZjYmVlNTc1ODRhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAK
QEAgLTI5MCw4ICsyOTAsOCBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICBMT0co
TmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vzcykgc3luY2hyb25pemluZyBjYWNo
ZSIpOwogCiAgICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byByZWNvcmRG
aWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwotICAgICAgICBhdXRv
IGJsb2JGaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAg
ICBhdXRvIHJlY29yZEZpbHRlciA9IG1ha2VVbmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAg
ICAgIGF1dG8gYmxvYkZpbHRlciA9IG1ha2VVbmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CiAKICAg
ICAgICAgLy8gTW9zdCBvZiB0aGUgZGlzayBzcGFjZSB1c2FnZSBpcyBpbiBibG9icyBpZiB3ZSBh
cmUgdXNpbmcgdGhlbS4gQXBwcm94aW1hdGUgcmVjb3JkcyBmaWxlIHNpemVzIHRvIGF2b2lkIGV4
cGVuc2l2ZSBzdGF0KCkgY2FsbHMuCiAgICAgICAgIHNpemVfdCByZWNvcmRzU2l6ZSA9IDA7CkBA
IC00ODksNyArNDg5LDcgQEAgdm9pZCBTdG9yYWdlOjpyZWFkUmVjb3JkKFJlYWRPcGVyYXRpb24m
IHJlYWRPcGVyYXRpb24sIGNvbnN0IERhdGEmIHJlY29yZERhdGEpCiAgICAgfQogCiAgICAgcmVh
ZE9wZXJhdGlvbi5leHBlY3RlZEJvZHlIYXNoID0gbWV0YURhdGEuYm9keUhhc2g7Ci0gICAgcmVh
ZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29y
ZD4oU3RvcmFnZTo6UmVjb3JkIHsKKyAgICByZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IG1h
a2VVbmlxdWU8U3RvcmFnZTo6UmVjb3JkPihTdG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRh
RGF0YS5rZXksCiAgICAgICAgIG1ldGFEYXRhLnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0
YSwKQEAgLTc1OCw3ICs3NTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCByZXRyaWV2ZUZy
b21NZW1vcnkoY29uc3QgVCYgb3BlcmF0aW9ucywgY29uc3QgS2V5JiBrZXksCiAgICAgICAgIGlm
IChvcGVyYXRpb24tPnJlY29yZC5rZXkgPT0ga2V5KSB7CiAgICAgICAgICAgICBMT0coTmV0d29y
a0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgZm91bmQgd3JpdGUgb3BlcmF0aW9uIGlu
IHByb2dyZXNzIik7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3JlY29y
ZCA9IG9wZXJhdGlvbi0+cmVjb3JkLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4ocmVjb3JkKSwgeyB9KTsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5pcXVlPFN0b3JhZ2U6OlJlY29y
ZD4ocmVjb3JkKSwgeyB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIFN0b3JhZ2U6OnJldHJpZXZl
KGNvbnN0IEtleSYga2V5LCB1bnNpZ25lZCBwcmlvcml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFu
ZAogICAgIGlmIChyZXRyaWV2ZUZyb21NZW1vcnkobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMsIGtl
eSwgY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlYWRP
cGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHJlYWRPcGVyYXRpb24gPSBtYWtl
VW5pcXVlPFJlYWRPcGVyYXRpb24+KCp0aGlzLCBrZXksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIAogICAgIHJlYWRPcGVyYXRpb24tPnRpbWluZ3Muc3RhcnRUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiAgICAgcmVhZE9wZXJhdGlvbi0+dGltaW5ncy5kaXNwYXRjaENvdW50QXRT
dGFydCA9IG1fcmVhZE9wZXJhdGlvbkRpc3BhdGNoQ291bnQ7CkBAIC04NzksNyArODc5LDcgQEAg
dm9pZCBTdG9yYWdlOjpzdG9yZShjb25zdCBSZWNvcmQmIHJlY29yZCwgTWFwcGVkQm9keUhhbmRs
ZXImJiBtYXBwZWRCb2R5SGFuZGxlciwKICAgICBpZiAoIW1fY2FwYWNpdHkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRl
T3BlcmF0aW9uPigqdGhpcywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gd3JpdGVPcGVyYXRpb24gPSBtYWtl
VW5pcXVlPFdyaXRlT3BlcmF0aW9uPigqdGhpcywgcmVjb3JkLCBXVEZNb3ZlKG1hcHBlZEJvZHlI
YW5kbGVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIG1fcGVuZGluZ1dyaXRl
T3BlcmF0aW9ucy5wcmVwZW5kKFdURk1vdmUod3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFk
ZCBrZXkgdG8gdGhlIGZpbHRlciBhbHJlYWR5IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRo
ZSBwZW5kaW5nIG9wZXJhdGlvbnMgdG9vLgpAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgU3RvcmFn
ZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBPcHRpb25TZXQ8VHJhdmVyc2VGbGFnPiBm
bGFncywgVHJhdmVyCiAgICAgQVNTRVJUKHRyYXZlcnNlSGFuZGxlcik7CiAgICAgLy8gQXZvaWQg
bm9uLXRocmVhZCBzYWZlIEZ1bmN0aW9uIGNvcGllcy4KIAotICAgIGF1dG8gdHJhdmVyc2VPcGVy
YXRpb25QdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0
aGlzKSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CisgICAgYXV0byB0
cmF2ZXJzZU9wZXJhdGlvblB0ciA9IG1ha2VVbmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VS
ZWYoKnRoaXMpLCB0eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKICAgICBh
dXRvJiB0cmF2ZXJzZU9wZXJhdGlvbiA9ICp0cmF2ZXJzZU9wZXJhdGlvblB0cjsKICAgICBtX2Fj
dGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQoV1RGTW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IDdiODg5MjI5
OTUzOWRiMzRjNWIzOTE0ZDNiMjE0Y2U4YjgxNDNiOTguLjYzYWQwNDA5ZmRkMjM2ZjZlM2MyY2Ez
MGU4N2U0YTdjMGEyOTU5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnku
Y3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0b3JhZ2U6OlJlY29yZCBTdWJyZXNvdXJjZXNFbnRyeTo6
ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291
cmNlc0VudHJ5PiBTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBT
dG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKIHsKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVu
dHJ5ID0gbWFrZVVuaXF1ZTxTdWJyZXNvdXJjZXNFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAg
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRh
dGEoKSwgc3RvcmFnZUVudHJ5LmhlYWRlci5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZW50cnktPm1fc3VicmVzb3VyY2VzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IGQ4YTA1OTQwZDcxOTdlYjMy
MjVhMzZiYzUxM2EyZGI2MTBkYjBjZDguLjcxMDRkMWY3NGNkNzAxY2JjZWNmYWI1N2QyNGViZmY4
ZGFlYmVkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtNzMsOCArNzMsOCBAQCBzdGF0aWMgY29uc3QgU2Vjb25k
cyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9Owogdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShj
b25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFt
X3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBt
X3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1ZTxQcmVm
ZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoYnVmZmVyKSkpOwor
ICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNN
YXA+KCk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25QcmVmZXRjaGVzLT5hZGQocmVx
dWVzdFVybCwgbWFrZVVuaXF1ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZXNwb25z
ZSksIFdURk1vdmUoYnVmZmVyKSkpOwogICAgIC8vIExpbWl0IHByZWZldGNoZXMgZm9yIHNhbWUg
dXJsIHRvIDEuCiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJu
OwpAQCAtODYsOSArODYsOSBAQCB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYg
cmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlcwogdm9pZCBQcmVmZXRj
aENhY2hlOjpzdG9yZVJlZGlyZWN0KGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlZGlyZWN0UmVxdWVzdCkKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0g
ICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50
cmllc01hcD4oKTsKKyAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJl
ZmV0Y2hFbnRyaWVzTWFwPigpOwogICAgIHJlZGlyZWN0UmVxdWVzdC5jbGVhclB1cnBvc2UoKTsK
LSAgICBtX3Nlc3Npb25QcmVmZXRjaGVzLT5zZXQocmVxdWVzdFVybCwgc3RkOjptYWtlX3VuaXF1
ZTxQcmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92
ZShyZWRpcmVjdFJlcXVlc3QpKSk7CisgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVl
c3RVcmwsIG1ha2VVbmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RS
ZXNwb25zZSksIFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0KSkpOwogICAgIG1fc2Vzc2lvbkV4cGly
YXRpb25MaXN0LmFwcGVuZChzdGQ6Om1ha2VfdHVwbGUocmVxdWVzdFVybCwgV2FsbFRpbWU6Om5v
dygpKSk7CiAgICAgaWYgKCFtX2V4cGlyYXRpb25UaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBt
X2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNob3QoZXhwaXJhdGlvblRpbWVvdXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRl
eCBhMTcxMGJhZTllNWE4ODUyNmNlZmEzYjM5YWE3ODhmYWFmMmNmYTBlLi5hMjUxNTIwYjMxZWFj
OTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFz
cyBQcmVmZXRjaENhY2hlIHsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBzdHJ1Y3QgRW50cnkg
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEVudHJ5
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggMDc3ZjE2ZmE2
NTA2NTJjNzg3YTZmMDMxNjA5MDkwMjY4ZWJiOGFjMC4uY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjVi
YmM4ZTRhNWU5OGExNWM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29j
b2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBOZXR3b3JrUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEo
KSBjb25zdApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3Jt
UHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogTmV0d29ya0hUVFBTVXBncmFkZUNo
ZWNrZXImIE5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiB7CiAg
ICAgaWYgKCFtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKQotICAgICAgICBtX25ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRl
Q2hlY2tlcj4oKTsKKyAgICAgICAgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IG1ha2VV
bmlxdWU8TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI+KCk7CiAgICAgcmV0dXJuICptX25ldHdv
cmtIVFRQU1VwZ3JhZGVDaGVja2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggNGE2MWRm
MTRkY2ZmMmU2YzNkMGUwOTBlZDNlNTFjYjYwMzE1ZTY0NC4uNDY4Njg5MzVjNmM2NDJjMjA0ODI4
OGZiZTM4NzkwM2MwMTI4MjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODAyLDcgKzgwMiw3
IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazoo
TlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tD
b2NvYT4gcHJvdGVjdGVkTmV0d29ya0RhdGFUYXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAg
ICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7
CiAgICAgICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2Vz
cygpLmRvd25sb2FkTWFuYWdlcigpOwotICAgICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRv
d25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dl
c3RlZEZpbGVuYW1lKCkpOworICAgICAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxXZWJL
aXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywg
X3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1l
KCkpOwogICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRv
RG93bmxvYWQoKmRvd25sb2FkKTsKICAgICAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAg
IGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdE
b3dubG9hZExvY2F0aW9uKCkpOwpAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgTmV0d29ya1Nlc3Np
b25Db2NvYTo6c2V0Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29h
OjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1l
dGVycykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdv
cmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFy
eSAqcHJveHlEaWN0aW9uYXJ5KGNvbnN0IFVSTCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBz
UHJveHkpCkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFz
az4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrUwogewog
ICAgIC8vIEZJWE1FOiBVc2UgcHJvdG9jb2wuCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldl
YlNvY2tldFRhc2s+IHRhc2sgPSBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgp
IHdlYlNvY2tldFRhc2tXaXRoUmVxdWVzdDogcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6
SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRh
c2spKTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdl
YlNvY2tldFRhc2smIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaAppbmRleCA5MzdlMjg3MzJiZTU3NDMyNjE2
OWQ4NTRkZjY0YzE1MTNlMmI2OGEzLi5mNmNkN2E5MjhiOTczODgxNmMzODlhOTU3YzhhOTFkZThj
MjViMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dl
YlNvY2tldFRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvV2ViU29ja2V0VGFza0NvY29hLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgTmV0d29ya1Nl
c3Npb247CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsKIAogY2xhc3MgV2ViU29ja2V0VGFz
ayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTb2NrZXRUYXNrPiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0
Q2hhbm5lbCYsIFJldGFpblB0cjxOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNrPiYmKTsKICAgICB+
V2ViU29ja2V0VGFzaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcAppbmRleCBiZTY4MDFmMzBjZGY0OTAwMjU0
YzIyNGI5YjExZmJkZjczZmUyZTMxLi41YmUxNzAyNjZmNDViOGJmNzJlZjU2YjEwMDg3Y2I1OWJi
NTZkYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya1Byb2Nlc3NDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
YWxsb3dTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IENlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBTdHJpbmcmIGhvc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKaW5kZXgg
ZDQ3MDlhNWU0YWM4YTJmYjZhY2ViNTZjNTdlYmYwYjVjNzQwZDQ1Ni4uZTE4YTQzOTBiMTg4YTI3
ZTkzMThjNTI0MDQ1NWYwNjRjZjZiZDY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaApAQCAtMzUsNyArMzUsNyBA
QCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkN1cmwgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24g
ewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNy
ZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFy
YW1ldGVycykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+
KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29y
a1Nlc3Npb25DdXJsKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMmJik7CiAgICAgfk5ldHdvcmtTZXNzaW9uQ3VybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc0lPUy5tbQppbmRleCAyMzc0NTI4OGEwNmQwMTE0NTkxOTY4YjUwODZkZWI1
ZjQ1YWEwYWM2Li5jOGI4NmM1MTExMzdlMzc0ZWMwYmUwYzBlYjViM2ZlYjRmMDliZDFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbQpAQCAtMzgsNyArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yKCkKIHsKICAgICBpZiAoIW1f
cGF5bWVudENvb3JkaW5hdG9yKQotICAgICAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAg
bV9wYXltZW50Q29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3BheW1lbnRDb29yZGluYXRvcjsKIH0KIApAQCAt
ODIsNyArODIsNyBAQCBjb25zdCBTdHJpbmcmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwYXltZW50Q29vcmRpbmF0b3JTb3VyY2VBcHBsaWNhdGlvbgogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JiBjb29yZGluYXRvciwgUEtQYXltZW50UmVxdWVzdCAqcmVxdWVzdCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvbkNvbnRy
b2xsZXI+KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXlt
ZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXI+KGNvb3JkaW5hdG9yLCByZXF1ZXN0KTsKIH0KIAog
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQWRk
TWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpT
dHJpbmdSZWZlcmVuY2UmLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
aW5kZXggZDQ2YzUwM2Q4MWU5ODM0ZTVkMmEyNTY2MGM4NzIzZWFlN2UxNzBlYy4uNGZhY2M4MjEz
ZWY4NTA1Y2Y5ZDU0OGIyM2M1NjZkZDNkMGJlMGFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAt
ODk3LDcgKzg5Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAg
IG1fZG93bmxvYWRPdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoR19PVVRQVVRfU1RSRUFNKG91dHB1
dFN0cmVhbS5sZWFrUmVmKCkpKTsKIAogICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IG1fc2Vz
c2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFnZXIoKTsKLSAgICBhdXRvIGRvd25s
b2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRp
bmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmls
ZW5hbWUoKSk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KGRvd25s
b2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lv
bklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgIGF1dG8qIGRvd25sb2FkUHRyID0gZG93
bmxvYWQuZ2V0KCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRU
YXNrKG1fcGVuZGluZ0Rvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBkb3dubG9h
ZFB0ci0+ZGlkQ3JlYXRlRGVzdGluYXRpb24obV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nl
c3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwCmluZGV4IDgzYzJmMjhlYTVjNzAzNGRhYTdkYjY0NjIxYjQ0NGVkZDVkOTZh
ZjkuLjdhNzQ4MWY3ZDQyNWYwMjMzN2EwYzEwYWRmOWQ2NTRmNzBlYzdkZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9y
cyhib29sIGlnbm9yZVRMU0Vycm9ycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKaW5kZXggMzBmYzhhNTM1NWQw
ODQ1MmFjMzYxYjFkY2VhOTdjODRmMzYwN2ZlZC4uNDA3MzYxZjAzNmU3OTg5MTc2N2Q4MDdmYmI2
M2M5MDQ0YjI2MGE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIE5ldHdvcmtTZXNzaW9uU291cDo6TmV0d29ya1Nlc3Npb25T
b3VwKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogTmV0d29ya1Nlc3Npb24obmV0d29ya1By
b2Nlc3MsIHBhcmFtZXRlcnMpCi0gICAgLCBtX25ldHdvcmtTZXNzaW9uKHN0ZDo6bWFrZV91bmlx
dWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCisgICAgLCBtX25ldHdvcmtTZXNz
aW9uKG1ha2VVbmlxdWU8U291cE5ldHdvcmtTZXNzaW9uPihtX3Nlc3Npb25JRCkpCiB7CiAgICAg
YXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKICAgICBBU1NF
UlQoc3RvcmFnZVNlc3Npb24pOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvblNvdXA6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0
d29ya1NvCiAgICAgcmVxdWVzdC51cGRhdGVTb3VwTWVzc2FnZShzb3VwTWVzc2FnZS5nZXQoKSwg
YmxvYlJlZ2lzdHJ5KCkpOwogICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoIndzcyIp
KQogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KHNvdXBNZXNzYWdlLmdldCgpLCAibmV0d29yay1l
dmVudCIsIEdfQ0FMTEJBQ0sod2ViU29ja2V0TWVzc2FnZU5ldHdvcmtFdmVudENhbGxiYWNrKSwg
bnVsbHB0cik7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0VGFzaz4oY2hh
bm5lbCwgc291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBzb3VwU2Vzc2lvbigpLCBz
b3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vz
c2lvblNvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vz
c2lvblNvdXAuaAppbmRleCBmOWVmNGJiNTQzMGJiZjczYjA0YTBlM2JlYzI0NzkyOGQ1OWU3MTZi
Li40NjZiMjc4MmJmOTNjNzcwNzBmNzk3ZGQzNjUyMzRjYzFkZTNmYjFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5o
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uU291cCBmaW5hbCA6IHB1Ymxp
YyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJv
Y2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5l
dHdvcmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwog
ICAgIH0KICAgICBOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25Tb3VwKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKaW5kZXggNmRkYzgxYTM2ZDg0OWNiYzI4
Mzc5M2I2MTcwNjdhMjdlMjlkOTFmMC4uODc0NTI1ZTM4Y2U3MDRlYmUxZGFhNzEwYmI1NWMwMWNj
MDU4ZWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogc3RydWN0IEFzeW5j
UmVhZERhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBBc3lu
Y1JlYWREYXRhKEdSZWZQdHI8R1Rhc2s+JiYgdGFzaywgdm9pZCogYnVmZmVyLCBnc2l6ZSBjb3Vu
dCkKICAgICAgICAgOiB0YXNrKFdURk1vdmUodGFzaykpCiAgICAgICAgICwgYnVmZmVyKGJ1ZmZl
cikKQEAgLTM5LDYgKzQwLDcgQEAgc3RydWN0IEFzeW5jUmVhZERhdGEgewogfTsKIAogc3RydWN0
IF9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGg7CiAgICAgdWlu
dDY0X3QgYnl0ZXNSZWNlaXZlZDsKICAgICB1aW50NjRfdCBieXRlc1JlYWQ7CkBAIC05OSw3ICsx
MDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5j
KEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIHZvaQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxB
c3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIsIGNvdW50KTsKKyAgICBzdHJlYW0t
PnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBtYWtlVW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1v
dmUodGFzayksIGJ1ZmZlciwgY291bnQpOwogfQogCiBzdGF0aWMgZ3NzaXplIHdlYmtpdFNvdXBS
ZXF1ZXN0SW5wdXRTdHJlYW1SZWFkRmluaXNoKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKaW5kZXggZGE4NzYx
MTA2NDgxZjk2YTlkNmEwMDAxODRjY2QyNDA3YjFmMjY1MC4uNWVmN2I0OGU0MjA4MzllZWY4MDA4
MTFiMGQ5NzQwZjQ0ZTAxZjBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbDsKIAogY2xhc3MgV2ViU29j
a2V0VGFzayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
U29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIFNvdXBTZXNzaW9uKiwgU291cE1lc3Nh
Z2UqLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICB+V2ViU29ja2V0VGFzaygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29j
a2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRDbGllbnQuaAppbmRleCA4ZjIwNWNlMDI5NzEzZDhiYTIxM2YxNDNiYTcxYmIxMTQ3
NTJkZWY1Li4yMmFiZGVjNjlkYjI0NWE0Y2Y5ODNmMjQ3YjM4ZjcyZDkwMGE2ZjViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRDbGllbnQuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtSVENQcm92aWRlcjsKIAogY2xhc3MgTGliV2ViUlRDU29ja2V0Q2xpZW50IGZp
bmFsIDogcHVibGljIHNpZ3Nsb3Q6Omhhc19zbG90czw+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBVRFAsIFNlcnZlclRDUCwg
Q2xpZW50VENQLCBTZXJ2ZXJDb25uZWN0aW9uVENQIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAK
aW5kZXggZTc4NjU2OGZmNTA1YTdiODcxNzg3MGRmNTdmYTU3ZDE1ZjVkNzc2My4uOTI2NjY4YzM4
ZmZmNzA4YWU1MDJmNThmZDQxNTI4ODAzZWM1NTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAK
QEAgLTY0LDYgKzY0LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjp1bnJlZ2lzdGVyTURO
U05hbWVzKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWUKIH0KIAogc3RydWN0IFBl
bmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgUGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QoUmVmPElQQzo6Q29ubmVjdGlv
bj4gY29ubmVjdGlvbiwgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgOiBjb25uZWN0aW9uKFdURk1vdmUo
Y29ubmVjdGlvbikpCiAgICAgICAgICwgcmVxdWVzdElkZW50aWZpZXIocmVxdWVzdElkZW50aWZp
ZXIpCkBAIC0xMzUsNyArMTM2LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rl
ck1ETlNOYW1lKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBQQUw6OlNlc3MKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsK
KyAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxQZW5kaW5nUmVnaXN0cmF0aW9u
UmVxdWVzdD4obWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgcmVxdWVzdElkZW50
aWZpZXIsIFdURk1vdmUobmFtZSksIHNlc3Npb25JRCk7CiAgICAgYXV0byogcmVjb3JkID0gJnBl
bmRpbmdSZXF1ZXN0LT5yZWNvcmQ7CiAgICAgYXV0byBlcnJvciA9IEROU1NlcnZpY2VSZWdpc3Rl
clJlY29yZChzZXJ2aWNlLAogICAgICAgICByZWNvcmQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKaW5kZXgg
MzUzZWFjOGNlMTFiNjkwNmVmYWRkMmZkMjcxOGI5N2FiNTJjZGE0ZC4uYWI3MDZkYzJlOTM0YTlh
N2VmOTkyNjg5Nzk3NGJkYzc1NGVhM2RmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcApAQCAtNDQsNyAr
NDQsNyBAQCB2b2lkIE5ldHdvcmtSVENNb25pdG9yOjpzdGFydFVwZGF0aW5nKCkKIHsKICAgICBt
X2lzU3RhcnRlZCA9IHRydWU7CiAgICAgbV9ydGNQcm92aWRlci5jYWxsT25SVENOZXR3b3JrVGhy
ZWFkKFt0aGlzXSgpIHsKLSAgICAgICAgbV9tYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6
OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAgICAgIG1fbWFuYWdlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKICAgICAg
ICAgbV9tYW5hZ2VyLT5TaWduYWxOZXR3b3Jrc0NoYW5nZWQuY29ubmVjdCh0aGlzLCAmTmV0d29y
a1JUQ01vbml0b3I6Om9uTmV0d29ya3NDaGFuZ2VkKTsKICAgICAgICAgbV9tYW5hZ2VyLT5TdGFy
dFVwZGF0aW5nKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAppbmRleCBhNWFjNTcyMTM3
OWRiM2QxYjI1ODc1NTg2MTAzMGJiYTRkYjllYjhlLi4xNWQ0NGQwYWQ5ZGIwZjNiMDU5OWUxYTMz
ZWZjZmRiODk2MWE2NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
TmV0d29ya1JUQ1Byb3ZpZGVyOjpOZXR3b3JrUlRDUHJvdmlkZXIoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24KICAgICA6IG1fY29ubmVjdGlvbigmY29ubmVjdGlvbikK
ICAgICAsIG1fcnRjTW9uaXRvcigqdGhpcykKICAgICAsIG1fcnRjTmV0d29ya1RocmVhZChjcmVh
dGVUaHJlYWQoKSkKLSAgICAsIG1fcGFja2V0U29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmPHJ0
Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PihtX3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkpKQor
ICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PihtX3J0Y05ldHdvcmtUaHJlYWQu
Z2V0KCkpKQogewogI2lmIGRlZmluZWQoTkRFQlVHKQogICAgIHJ0Yzo6TG9nTWVzc2FnZTo6TG9n
VG9EZWJ1ZyhydGM6OkxTX05PTkUpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgTmV0d29ya1JU
Q1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPHJ0Yzo6CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGFkZFNv
Y2tldChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4o
aWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgdHlwZSkpOworICAgIGFkZFNvY2tl
dChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmll
ciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgdHlwZSkpOwogfQogCiB2b2lkIE5ldHdvcmtSVENQ
cm92aWRlcjo6Y3JlYXRlVURQU29ja2V0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFJUQ05l
dHdvcms6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90
IG1heFBvcnQpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6Ondy
YXBOZXdUQ1BDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0MKIHsK
ICAgICBjYWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBpZGVudGlmaWVyLCBuZXdDb25uZWN0
aW9uU29ja2V0SWRlbnRpZmllcl0oKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFz
eW5jUGFja2V0U29ja2V0PiBzb2NrZXQgPSBtX3BlbmRpbmdJbmNvbWluZ1NvY2tldHMudGFrZShu
ZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllcik7Ci0gICAgICAgIGFkZFNvY2tldChpZGVudGlm
aWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwg
KnRoaXMsIFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2
ZXJDb25uZWN0aW9uVENQKSk7CisgICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBtYWtlVW5p
cXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29j
a2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQKSk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAK
aW5kZXggMzgzODJiMDlkNGZiM2JlMjY0Zjg5Yjc3ODQxYTQxZDdjMDhjYWMwNS4uYzVlZjZkOTlh
NTYwZGQxNDg4ZjE4NDk5NWFlOGE3YjE2ZDlhZDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIENvbm5lY3Rpb246
OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5
bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIC8vIEhh
bmQgb2ZmIGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVz
c2FnZSByZWNlaXZlci4KICAgICB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwpAQCAtMzg4LDcgKzM4OCw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZh
bGlkKCkKIAogc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNN
ZXNzYWdlRW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYg
c3luY1JlcXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVu
Y29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5h
bWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5zZXRJc1N5bmNN
ZXNzYWdlKHRydWUpOwogCiAgICAgLy8gRW5jb2RlIHRoZSBzeW5jIHJlcXVlc3QgSUQuCkBAIC03
NTYsNyArNzU2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhy
b3R0bGluZygpCiAgICAgaWYgKG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29t
aW5nTWVzc2FnZXMpOworICAgIG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlciA9IG1ha2VVbmlx
dWU8TWVzc2FnZXNUaHJvdHRsZXI+KCp0aGlzLCAmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWlu
Z01lc3NhZ2VzKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpwb3N0Q29ubmVjdGlvbkRpZENsb3Nl
T25Db25uZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIENvbm5lY3Rp
b246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNv
ZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRv
IHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJl
cGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gIklQQyIgJiYgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09ICJXcmFwcGVkQXN5bmNN
ZXNzYWdlRm9yVGVzdGluZyIpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2Rl
SXNBbGxvd2VkRm9yVGVzdGluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCmluZGV4IDIwZjVlYzViMjAyYmVjMmJkZjU4ZjAyMGViZGVlZjgzMTQ5MzExYmYuLmFkYzRh
YWQ5ODgxOGZhMDZhZmM2YmU4OTYxNDVkNTYzMTU4MzJkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTQzMyw3ICs0MzMsNyBAQCBib29sIENvbm5lY3Rpb246
OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5k
T3B0aW9uPgogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4
cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4o
VDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMo
KSk7CiAgICAgCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRP
cHRpb25zKTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5
bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdAogewog
ICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAot
ICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJO
YW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlv
bklEKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQo
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KG1lc3NhZ2UuYXJndW1lbnRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cAppbmRleCBjY2EwNzM5MGFkZWM0NDZkZTc0NjZjZjhlMTAxMjNjMjc5Mzg1MzUyLi5mZDUxNzAx
NzEyYjA2MjlkNDcyNTJkMDQwODk2YzY0ZmNiY2JiMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh3cmFwcGVkTWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4od3JhcHBlZE1lc3NhZ2Uu
ZGF0YSgpLCB3cmFwcGVkTWVzc2FnZS5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVu
dHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5kYXRh
KCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykp
OwogfQogCiBzdGF0aWMgaW5saW5lIGNvbnN0IHVpbnQ4X3QqIHJvdW5kVXBUb0FsaWdubWVudChj
b25zdCB1aW50OF90KiBwdHIsIHVuc2lnbmVkIGFsaWdubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA4NTQ1MmNkYTdlMDQ1ZTQ0NTVlMDdiOTNi
YWZjYTM1YjEwMjAwMTFlLi5hNzQ5YWFiODcwMDU0Y2ViNjkwZTVmMTRmNDA3NTYzZmZjZDBmOWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0xODIs
NyArMTgyLDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogICAgIH0KIAogICAgIHR5cGVuYW1l
IFQ6OkFzeW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5l
cklELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVy
PigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKKyAgICAgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5j
TWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKICAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsK
ICAgICAgICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBh
cmdzLi4uKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oCmluZGV4IDNkNmYzNDI4OTJiYzg4MzkwNjc4ZThjMzY0NjM5MTEwZGU0ZjU3MjYuLjc3MTQ0
OGE0NGQwODg2ZGQwMWJiMGMyZGU2NGRjOWE0Mjg2MjdhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVzc2Fn
ZVNlbmRlciB7CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFVOjppc1N5bmMsICJNZXNz
YWdlIGlzIHN5bmMhIik7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
KyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5h
bWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNz
YWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCAzNzAyYWNjN2Rm
NTFiZDg0NmI5M2FmNjRiZjA3MGE0YzEwMDM5MTlmLi44N2RkMjhmODA4Njc4MmNlMmEzZGY3OTBm
NGFjMGU2ZDc0OWRhYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Y29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIDogbV94cGNDb25uZWN0aW9uKHhwY0Nvbm5lY3Rpb24pCiAgICAgICAgICwgbV93YXRjaGRv
Z1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNo
ZG9nOjp3YXRjaGRvZ1RpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAg
ICAgLCBtX2Fzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNz
ZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJD
b25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6
QmFja2dyb3VuZCkpCisgICAgICAgICwgbV9hc3NlcnRpb24obWFrZVVuaXF1ZTxXZWJLaXQ6OlBy
b2Nlc3NBbmRVSUFzc2VydGlvbj4oeHBjX2Nvbm5lY3Rpb25fZ2V0X3BpZChtX3hwY0Nvbm5lY3Rp
b24uZ2V0KCkpLCAiQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2ciX3MsIFdlYktpdDo6QXNz
ZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpKQogI2VuZGlmCiAgICAgewogICAgICAgICBtX3dhdGNo
ZG9nVGltZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29s
IENvbm5lY3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAg
ICAgCiAgICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFp
bnMgYSBzZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgYXV0byBlbmNv
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0
aW9uIiwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQ
QyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIsIDApOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
TWFjaFBvcnQobV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKIAogICAg
ICAgICBpbml0aWFsaXplU2VuZFNvdXJjZSgpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVh
ZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWludDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGhlYWRlciArIDEpOwogICAgICAgICBzaXplX3QgYm9keVNpemUgPSBoZWFkZXIt
Pm1zZ2hfc2l6ZSAtIHNpemVvZihtYWNoX21zZ19oZWFkZXJfdCk7CiAKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4oYm9keSwgYm9keVNpemUsIG51bGxwdHIsIFZlY3Rv
cjxBdHRhY2htZW50PiB7IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPihi
b2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7CiAgICAgfQog
CiAgICAgYm9vbCBtZXNzYWdlQm9keUlzT09MID0gaGVhZGVyLT5tc2doX2lkID09IG91dE9mTGlu
ZUJvZHlNZXNzYWdlSUQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVy
KQogICAgICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihk
ZXNjcmlwdG9yLT5vdXRfb2ZfbGluZS5hZGRyZXNzKTsKICAgICAgICAgc2l6ZV90IG1lc3NhZ2VC
b2R5U2l6ZSA9IGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLnNpemU7CiAKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwg
W10oY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFtdKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgewogICAgICAgICAgICAgdm1fZGVh
bGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4o
YnVmZmVyKSwgbGVuZ3RoKTsKICAgICAgICAgfSwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAg
IH0KQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNy
ZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgdWludDhf
dCogbWVzc2FnZUJvZHkgPSBkZXNjcmlwdG9yRGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlT
aXplID0gaGVhZGVyLT5tc2doX3NpemUgLSAoZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihoZWFkZXIpKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERl
Y29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0
YWNobWVudHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwg
bWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIC8v
IFRoZSByZWNlaXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMgaW5jbHVkZSB0aGUgbWF4aW11
bSB0cmFpbGVyIHNpemUuCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNl
aXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24oc3RkOjptYWtlX3VuaXF1
ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKKyAgICBkZWNvZGVyLT5zZXRJbXBvcnRh
bmNlQXNzZXJ0aW9uKG1ha2VVbmlxdWU8SW1wb3J0YW5jZUFzc2VydGlvbj4oaGVhZGVyKSk7CiAj
ZW5kaWYKIAogICAgIGlmIChkZWNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIg
JiYgZGVjb2Rlci0+bWVzc2FnZU5hbWUoKSA9PSAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
CmluZGV4IDYzYjZiZTcyNzFlNDQ1ODgzOTUwNWFhOTE1ZTM4NzNmODUxNGRlZGQuLjc3YWY5YjI4
NTg0NTI2YmI3MGM3ZmZjOGUzMjU2YTNiYWExM2EyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yMTYsNyArMjE2LDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZv
LmlzQm9keU91dE9mTGluZSgpKQogICAgICAgICBtZXNzYWdlQm9keSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VCb2R5LT5kYXRhKCkpOwogCi0gICAgYXV0byBkZWNvZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9k
eVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIGF1dG8gZGVjb2Rl
ciA9IG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXpl
KCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIAogICAgIHByb2Nlc3NJbmNvbWlu
Z01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBib29sIENv
bm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJy
bm8gPT0gRVdPVUxEQkxPQ0spIHsKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIG1fcGVuZGlu
Z091dHB1dE1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91
dHB1dE1lc3NhZ2UpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ091dHB1dE1lc3NhZ2UgPSBtYWtl
VW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1lc3NhZ2UpKTsKICAgICAgICAgICAg
IG1fd3JpdGVTb2NrZXRNb25pdG9yLnN0YXJ0KG1fc29ja2V0LmdldCgpLCBHX0lPX09VVCwgbV9j
b25uZWN0aW9uUXVldWUtPnJ1bkxvb3AoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gKEdJT0NvbmRpdGlvbiBjb25kaXRpb24pIC0+IGdib29sZWFuIHsKICAgICAgICAg
ICAgICAgICBpZiAoY29uZGl0aW9uICYgR19JT19PVVQpIHsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG1fcGVuZGluZ091dHB1dE1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IDY0MGY0NTI5OWUzYjI2NmUwMjY5
Y2NjY2M5NDUyYjNiYTU3OWVmYjEuLjVhZGZkODJiZWNhNDZkYjAyNDQ3ZThiY2I2ZDM4NGMyYzAx
NTZhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlv
bldpbi5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhh
bmRsZXIoKQogICAgICAgICBpZiAoIW1fcmVhZEJ1ZmZlci5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIFdlIGhhdmUgYSBtZXNzYWdlLCBsZXQncyBkaXNwYXRjaCBpdC4KICAgICAgICAgICAg
IFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50cygwKTsKLSAgICAgICAgICAgIGF1dG8gZGVj
b2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9y
ZWFkQnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgICAg
ICAgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0
YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7
CiAgICAgICAgICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCmluZGV4IGRkMmI2NmE3Y2ExOTU5MWI2
ZWU2N2I4ZjI4NGZkMjU0YTM4Mjc4NWQuLjU2ODM3MjEzZGZiZWFlYjRkNTllOTNjM2Q0OWY2Yzdh
YzJmNTM0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaApAQCAtNDQsNiArNDQsNyBAQCB0eXBl
ZGVmIHN0cnVjdCBfR01vZHVsZSBHTW9kdWxlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE1vZHVsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTW9kdWxlKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNb2R1bGUoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVy
SG9zdGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3Rp
bmdDb250ZXh0Lm1tCmluZGV4IDgyMzJkYjRlYjU2ZWFjYjZmOGNlODU1NjY0YjhiNzgyYWI2NTBh
OTguLjdhZWU0N2VhYjk1ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0Y2Y0NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RkOjp1bmlxdWVfcHRyPExheWVySG9z
dGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWFj
aFNlbmRSaWdodCYgc2VydmVyUG9ydCkKIHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXll
ckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogCiAg
ICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKICAgICAgICAga0NBQ29udGV4dFBvcnROdW1i
ZXIgOiBAKHNlcnZlclBvcnQuc2VuZFJpZ2h0KCkpLApAQCAtNTIsNyArNTIsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRl
Rm9yUG9ydChjb25zdCBNYQogI2lmIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykK
IHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0
OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRl
eHRPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9z
dGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5
ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6
T3V0T2ZQcm9jZXNzOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQpAQCAtODIsNyArODIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5n
Q29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aQogI2lm
IFBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXll
ckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKCkK
IHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVy
SG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVu
aXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1f
bGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKICAgICBs
YXllckhvc3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IGNvbnRleHRXaXRoQ0dT
Q29ubmVjdGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9uczpAeyBrQ0FDb250ZXh0Q0lG
aWx0ZXJCZWhhdmlvciA6IEAiaWdub3JlIiB9XTsKICAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuaAppbmRleCA5N2UyZGYzNTNiMzY4MjM5MjlhMzFhZTk1N2ExZGRjZGMyMWMzN2Q2
Li5iOThjYTk0YmM5ZWZjMjNiMmVkODE4YTViNzg0MzM3MjMxN2U5YzY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC00
OSw3ICs0OSw4IEBAIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlByb2Nlc3NDb25u
ZWN0aW9uOwogc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKIAotY2xhc3MgUGx1Z2lu
Q29udHJvbGxlclByb3h5IDogUGx1Z2luQ29udHJvbGxlciB7CitjbGFzcyBQbHVnaW5Db250cm9s
bGVyUHJveHkgOiBwdWJsaWMgUGx1Z2luQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGx1Z2luQ29udHJvbGxlclByb3h5
KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dl
YlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMzY2Yjk4M2NjMGJlYTU4Mzg2M2E3Y2Q2MzMzZjk0
OGRmNzQ4NDQzNS4uY2U4MjY3ZDJlZTc4Y2FjYjNkZGEwYTliMzc1YmZhYWZjNjg2ZWU2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW4KIAogdm9p
ZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIGJvb2wmIHJlc3VsdCwgYm9v
bCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpCiB7Ci0g
ICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNv
bnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJhbWV0ZXJzKTsKKyAgICBhdXRvIHBsdWdp
bkNvbnRyb2xsZXJQcm94eSA9IG1ha2VVbmlxdWU8UGx1Z2luQ29udHJvbGxlclByb3h5Pih0aGlz
LCBjcmVhdGlvblBhcmFtZXRlcnMpOwogCiAgICAgUGx1Z2luQ29udHJvbGxlclByb3h5KiBwbHVn
aW5Db250cm9sbGVyUHJveHlQdHIgPSBwbHVnaW5Db250cm9sbGVyUHJveHkuZ2V0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRleCBiYmQ0MjNiY2Y1NzE1ZTRhZDcwYmY1MmRlZjhj
MmMzMGM0MWJmMGY2Li4zZTYxYmJkMDAwZTFmNGNkYjZjMmEzNmNhNGY3NWU5MDRmODM1Y2YyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFVSTCA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAgICAgewogICAgICAgICBB
U1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsK
LSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpVUkw+KCpi
YXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOworICAgICAgICBhdXRvIGFi
c29sdXRlVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVSTD4oKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdl
dCgpLCByZWxhdGl2ZVVSTCk7CiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBhYnNvbHV0ZVVS
TFN0cmluZyA9IGFic29sdXRlVVJMLT5zdHJpbmcoKTsKIAogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkxTdHJpbmcp
KTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgaWYgKG1fcGFyc2VkVVJMKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RG
OjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKKyAgICAgICAgbV9wYXJzZWRVUkwgPSBtYWtl
VW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgpLCBtX3N0cmluZyk7CiAgICAgfQogCiAgICAgV1RG
OjpTdHJpbmcgbV9zdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCmluZGV4IDI1OTI4NDdlMzQxYTNiNmY3
Mjg3NTRiZDc4OGE2NjUzZGQyMjE1YjAuLmQzZmY2MjFlYzBmNGExMGQ3NTY0ODdjYzIxNmY0OTVj
ZTg2ZDcyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1v
dGVPYmplY3RJbnZvY2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgUmVtb3Rl
T2JqZWN0SW52b2NhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlT2Jq
ZWN0SW52b2NhdGlvCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYmxvY2tTaWduYXR1cmUp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5tX3JlcGx5SW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbHlJbmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2ln
bmF0dXJlKSk7CisgICAgICAgIHJlc3VsdC5tX3JlcGx5SW5mbyA9IG1ha2VVbmlxdWU8UmVwbHlJ
bmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggNjVkYTllZmYwMWI0M2VhNTcxMDgwMmY2
YzQ2YTZkMDIwMjY1NjkzZS4uNDg5OTc2MjkzMmI3YWY2OTIyMWQwNTBhZjY3NDU4MzZmYzM4N2Iw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIC0gKGlkKV9pbml0V2l0
aFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSYpcGFnZQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBw
YWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVt
b3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBA
IC0xMTksNyArMTE5LDcgQEAgLSAoaWQpX2luaXRXaXRoV2ViUGFnZVByb3h5OihXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYpcGFnZQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsKKyAgICBfcmVt
b3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0
cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xNjAsNyArMTYwLDcg
QEAgLSAodm9pZClfc2VuZEludm9jYXRpb246KE5TSW52b2NhdGlvbiAqKWludm9jYXRpb24gaW50
ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnQKICAgICAgICAgaWYgKHN0cmNtcChbTlNNZXRob2RT
aWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUJsb2NrU2lnbmF0dXJlXS5tZXRo
b2RSZXR1cm5UeXBlLCAidiIpKQogICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlJldHVybiB2YWx1ZSBvZiBibG9jayBhcmd1
bWVudCBtdXN0IGJlICd2b2lkJy4gKCVzKSIsIHNlbF9nZXROYW1lKGludm9jYXRpb24uc2VsZWN0
b3IpXTsKIAotICAgICAgICByZXBseUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVt
b3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigp
LCByZXBseUJsb2NrU2lnbmF0dXJlKTsKKyAgICAgICAgcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlk
ZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0
aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0IHRyeSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlk
IG51bGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2ds
aWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9n
bGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggN2VkMTFlNmMxNzFlMjBiZTFlOWVh
ZGIzMDdlNzFmYzQ4YmZkZTg0OS4uZmFlZmVkMmRjYzgzOGVlOTU3MzkwNjVkYWM2M2YxMzU2M2Yw
ZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29u
dGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC05NCw3ICs5NCw3IEBAIFdlYktpdENvbnRleHRNZW51
SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRF
WFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwg
TlVMTCkpOwogCi0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRl
bSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEpOwogICAgIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgc3ViTWVudSA9IGl0ZW1EYXRhLnN1
Ym1lbnUoKTsKICAgICBpZiAoIXN1Yk1lbnUuaXNFbXB0eSgpKQogICAgICAgICB3ZWJraXRDb250
ZXh0TWVudUl0ZW1TZXRTdWJNZW51KGl0ZW0sIGFkb3B0R1JlZih3ZWJraXRDb250ZXh0TWVudUNy
ZWF0ZShzdWJNZW51KSkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRl
bSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyhHdGtBY3Rpb24qIGFjdGlvbikKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChHVEtfSVNfQUNUSU9OKGFjdGlvbiksIG51bGxwdHIpOwogCiAg
ICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVN
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwot
ICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVu
dUl0ZW1HbGliPihhY3Rpb24pOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1
ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9
CkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4
dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbihHQWN0aW9uKiBhY3Rpb24KICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbCghdGFyZ2V0IHx8IGdfdmFyaWFudF9pc19vZl90eXBlKHRhcmdldCwgZ19h
Y3Rpb25fZ2V0X3BhcmFtZXRlcl90eXBlKGFjdGlvbikpLCBudWxscHRyKTsKIAogICAgIFdlYktp
dENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVt
LT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xp
Yj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKKyAgICBpdGVtLT5w
cml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9u
LCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKIAogICAgIHJldHVybiBpdGVtOwog
fQpAQCAtMTk0LDcgKzE5NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRl
eHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbihXZWJLaXRDb250CiAKICAgICBXZWJL
aXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7CiAgICAgQ29u
dGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJs
ZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+
cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+
KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdlYmtp
dENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CisgICAgaXRlbS0+cHJpdi0+bWVu
dUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENv
bnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51QWN0
aW9uR2V0TGFiZWwoYWN0aW9uKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTIxNiw3ICsy
MTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9sYWJlbAogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAgIENvbnRleHRNZW51SXRlbVR5
cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVja2FibGUoYWN0aW9uKSA/IENo
ZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRD
b250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBTdHJpbmc6OmZyb21VVEY4KGxh
YmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRN
ZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFj
dGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpA
QCAtMjM5LDcgKzIzOSw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRf
bWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2NoYXIqIGxhCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NP
TlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRF
TSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1CYXNl
QXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKKyAgICBpdGVtLT5wcml2
LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oQWN0aW9uVHlw
ZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnLCBTdHJpbmc6OmZyb21VVEY4KGxh
YmVsKSk7CiAgICAgaXRlbS0+cHJpdi0+c3ViTWVudSA9IHN1Ym1lbnU7CiAgICAgd2Via2l0Q29u
dGV4dE1lbnVTZXRQYXJlbnRJdGVtKHN1Ym1lbnUsIGl0ZW0pOwogCkBAIC0yNTYsNyArMjU2LDcg
QEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dp
dGhfc3VibWVudShjb25zdCBnY2hhciogbGEKIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3Iodm9pZCkKIHsKICAgICBXZWJLaXRDb250
ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJp
di0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KFNl
cGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CisgICAg
aXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+
KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CiAK
ICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDVlZDE0M2E5OTg1
OTA0OTZjMzM3NmE1Njk4ODExNTNhNmEwMmIyOGMuLmYzM2NhYjMwNWZlZTEyNzRmYWE3YjIxODM4
ZTliYjdlZjc2YmJmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtNzIsNiArNzIsNyBAQCBj
bGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VTZW5kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eT4KICAgICAsIHB1YmxpYyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
Q2xpZW50IHsKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IDdhZDMzMzE0NTM5MTg4ODlmZDNiOTg5NjM4
NmE4YmVkMWY1MTlhMTQuLjM5MTRhNGMyMDE0YTlhNTRhNjM0ODhhNGU3NDM4MTljNmE4ZGIzYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNv
bnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAogICAgICAgICBBU1NFUlQodmlld0NvbnRyb2xsZXIp
OwogCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVz
ZW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI+KCpwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdD
b250cm9sbGVyKTsKKyAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXph
dGlvblByZXNlbnRlciA9IG1ha2VVbmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmll
d0NvbnRyb2xsZXIpOwogCiAgICAgICAgIEFTU0VSVCghcGF5bWVudENvb3JkaW5hdG9yUHJveHkt
Pm1fc2hlZXRXaW5kb3cpOwogICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVl
dFdpbmRvdyA9IFtOU1dpbmRvdyB3aW5kb3dXaXRoQ29udGVudFZpZXdDb250cm9sbGVyOnZpZXdD
b250cm9sbGVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXggODZlNzQ0YzEwOGRmNGNiY2Y1
ZDA0NzYwOWFjZjk2YzY4MjNkNmIxNi4uNGY4MzcwMjRlZTVmMzRmZmEwZTY5YmFmN2IzYmZjODgx
YTUyODAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAgLTU1LDYgKzU1LDcgQEAgZW51bSBj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIDogdWludDhfdDsKIHVzaW5n
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFs
Jik+OwogCiBjbGFzcyBBdXRoZW50aWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nl
c3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxBdXRoZW50aWNhdGlvbk1hbmFnZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdGlvbk1hbmFnZXIpOwog
cHVibGljOgogICAgIGV4cGxpY2l0IEF1dGhlbnRpY2F0aW9uTWFuYWdlcihOZXR3b3JrUHJvY2Vz
cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVu
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCmluZGV4IDU2YTc4M2EwYjIzYjI2YTIwYzViOGZhNGE1OWYxNTdhNGMwMzdiYjcu
LjJkNWQxYWZjMDgyN2E0MWEwYmQ4M2JiYWE4MGY3OGY2MTRmNWJkN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTM4
LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9u
SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIq
IHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGUgdHlwZSwgT3B0aW9uYWw8cGlkX3Q+IHBpZCA9
IFdURjo6bnVsbG9wdCkKICAgICB7CkBAIC0xNjAsNyArMTYxLDcgQEAgYXV0byBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFs
PEhhbmRsZT4KICAgICAgICAgcmV0dXJuIHt7IH19OwogCiAgICAgSGFuZGxlIGhhbmRsZTsKLSAg
ICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0
ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5k
YXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVu
c2lvbiA9IG1ha2VVbmlxdWU8U2FuZGJveEV4dGVuc2lvbkltcGw+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkp
OwogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCAxOGRjMmZiOGVkMTNkMTUzNDEyZWEzMGUyOTExMTc4
ZWFjZWZjNWFlLi43MDQzMGY0NDMxMmM4YTU2MmNlMTVmYzczMmY2OWQzODc2ZmU5YzJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0xMjUsNyArMTI1LDcg
QEAgVGV4dHVyZU1hcHBlckxheWVyJiB0ZXhtYXBMYXllcihOaWNvc2lhOjpDb21wb3NpdGlvbkxh
eWVyJiBjb21wb3NpdGlvbkxheWVyKQogewogICAgIGF1dG8mIGNvbXBvc2l0aW9uU3RhdGUgPSBj
b21wb3NpdGlvbkxheWVySW1wbChjb21wb3NpdGlvbkxheWVyKS5jb21wb3NpdGlvblN0YXRlKCk7
CiAgICAgaWYgKCFjb21wb3NpdGlvblN0YXRlLmxheWVyKSB7Ci0gICAgICAgIGNvbXBvc2l0aW9u
U3RhdGUubGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKKyAg
ICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckxh
eWVyPigpOwogICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyLT5zZXRJRChjb21wb3NpdGlv
bkxheWVyLmlkKCkpOwogICAgIH0KICAgICByZXR1cm4gKmNvbXBvc2l0aW9uU3RhdGUubGF5ZXI7
CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3Vy
ZVJvb3RMYXllcigpCiAgICAgaWYgKG1fcm9vdExheWVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Jvb3RMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOwor
ICAgIG1fcm9vdExheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CiAgICAg
bV9yb290TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOwogICAgIG1fcm9vdExheWVyLT5z
ZXREcmF3c0NvbnRlbnQoZmFsc2UpOwogICAgIG1fcm9vdExheWVyLT5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50M0QoMCwgMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggY2QzZTU3YzZiY2I5ZDhkYzFm
Zjk5Y2FkNTljNGUxM2ZmNjYwM2E2Yi4uYmNiMjM1OTc1YjEzM2QyZTI3Njc2ZDI4M2ZlODkxMzgx
YTBkNWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9U
aHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFJlZjxUaHJlYWRlZENvbXBv
c2l0b3I+IFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlKENsaWVudCYgY2xpZW50LCBUaHJlYWRl
ZERpc3BsCiBUaHJlYWRlZENvbXBvc2l0b3I6OlRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQmIGNs
aWVudCwgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OkNsaWVudCYgZGlzcGxheVJlZnJl
c2hNb25pdG9yQ2xpZW50LCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2NhbGVGYWN0b3IsIFRleHR1cmVNYXBwZXI6OlBhaW50
RmxhZ3MgcGFpbnRGbGFncykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fcGFpbnRG
bGFncyhwYWludEZsYWdzKQotICAgICwgbV9jb21wb3NpdGluZ1J1bkxvb3Aoc3RkOjptYWtlX3Vu
aXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+KFt0aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkK
KyAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKG1ha2VVbmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29w
PihbdGhpc10geyByZW5kZXJMYXllclRyZWUoKTsgfSkpCiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FX0RJU1BMQVlfTU9OSVRPUikKICAgICAsIG1fZGlzcGxheVJlZnJlc2hNb25pdG9y
KFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpjcmVhdGUoZGlzcGxheUlELCBkaXNwbGF5
UmVmcmVzaE1vbml0b3JDbGllbnQpKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKaW5kZXggMWEwNTQ3NTA3
ZWMxYzFhODEyNDcyYmI3ZWJkOWZhMGQ0YWQxM2E0OC4uMDdlOGJiYzliNWM5YzNjNmM5ZDhkNmMz
Yjk0NWU1MzkzMjdiODc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lu
cy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBO
UFZhcmlhbnREYXRhOwogY2xhc3MgUGx1Z2luOwogCiBjbGFzcyBOUE9iamVjdE1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCmluZGV4IDYxZTFm
OTQwMjUyMzg1ZGI4MDVlYzEyMmRmZjFjOWU0ZjFiNzI1NjMuLmQ0YjUyNGM4MjllYzY2NzIxZGYx
YTcwZDJkNTEzYWU0ZWIzZjNkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgTlBSZW1v
dGVPYmplY3RNYXA6Om5wT2JqZWN0UHJveHlEZXN0cm95ZWQoTlBPYmplY3QqIG5wT2JqZWN0KQog
dWludDY0X3QgTlBSZW1vdGVPYmplY3RNYXA6OnJlZ2lzdGVyTlBPYmplY3QoTlBPYmplY3QqIG5w
T2JqZWN0LCBQbHVnaW4qIHBsdWdpbikKIHsKICAgICB1aW50NjRfdCBucE9iamVjdElEID0gZ2Vu
ZXJhdGVOUE9iamVjdElEKCk7Ci0gICAgbV9yZWdpc3RlcmVkTlBPYmplY3RzLnNldChucE9iamVj
dElELCBzdGQ6Om1ha2VfdW5pcXVlPE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyPih0aGlzLCBwbHVn
aW4sIG5wT2JqZWN0SUQsIG5wT2JqZWN0KS5yZWxlYXNlKCkpOworICAgIG1fcmVnaXN0ZXJlZE5Q
T2JqZWN0cy5zZXQobnBPYmplY3RJRCwgbWFrZVVuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZl
cj4odGhpcywgcGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCkucmVsZWFzZSgpKTsKIAogICAg
IHJldHVybiBucE9iamVjdElEOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRleCA3
YjAyYjVlMTJmMzJjNzJkMzhmNTIwNDViYjZkNmEyM2I2MmFlMmUxLi4yNjFkN2E4OTY5MzA2YTg5
MjVjNGFiMzZlNDc5NDdiMzk2YzEyNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcApA
QCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyBib29sIG1vZHVsZU1peGVzR3RrU3ltYm9scyhNb2R1
bGUqIG1vZHVsZSkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6dHJ5TG9hZCgpCiB7Ci0g
ICAgbV9tb2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4obV9wbHVnaW5QYXRoKTsKKyAg
ICBtX21vZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihtX3BsdWdpblBhdGgpOwogICAgIGlmICgh
bV9tb2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IGVhMmJlOTMwOGNiYmU2ZGQ3ZWI4Y2YyYzU4OGM4ZmY2
MTllYTk5M2MuLjk1NTEzZjQ3OTgyZmQ2N2VlNWY5OGRkNzk5NmM4NTk4ZjFmNDYzZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIEVu
Y29kZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0g
TGF5ZXJDaGFuZ2UgewogICAgICAgICBOYW1lQ2hhbmdlZCAgICAgICAgICAgICAgICAgICAgID0g
MUxMVSA8PCAxLApAQCAtOTQsNiArOTUsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbiB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXllckNyZWF0aW9uUHJvcGVydGllcyB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTGF5ZXJDcmVh
dGlvblByb3BlcnRpZXMoKTsKIAogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBj
b25zdDsKQEAgLTEwOSw2ICsxMTEsNyBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
biB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBMYXllclByb3BlcnRpZXMgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVyUHJvcGVydGllcygpOwog
ICAgICAgICBMYXllclByb3BlcnRpZXMoY29uc3QgTGF5ZXJQcm9wZXJ0aWVzJiBvdGhlcik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCAxZjJkZTRkMDM3ZWEzZTgz
MDI4N2FiOThjYjJhOGYyMWM0ZWNlYTJlLi4wZDIyN2ZmYzFkOWM1NTU2YWFkOTJlN2VlMTU3NjVl
MTZiMzQ0MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xNTIs
MTMgKzE1MiwxMyBAQCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjpMYXllclByb3BlcnRpZXMoY29uc3QgTGF5ZXJQcm9wZXJ0aQogICAgIC8vIEZJWE1FOiBMYXll
clByb3BlcnRpZXMgc2hvdWxkbid0IGJlIGNvcHlhYmxlOyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OmNsb25lIHNob3VsZCBjb3B5IHRoZSByZWxldmFudCBwcm9wZXJ0aWVzLgogCiAgICAgaWYgKG90
aGVyLnRyYW5zZm9ybSkKLSAgICAgICAgdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnRyYW5zZm9ybSk7CisgICAgICAgIHRy
YW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhl
ci50cmFuc2Zvcm0pOwogCiAgICAgaWYgKG90aGVyLnN1YmxheWVyVHJhbnNmb3JtKQotICAgICAg
ICBzdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXllclRyYW5zZm9ybSk7CisgICAgICAgIHN1YmxheWVy
VHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90
aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKIAogICAgIGlmIChvdGhlci5maWx0ZXJzKQotICAgICAg
ICBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigq
b3RoZXIuZmlsdGVycyk7CisgICAgICAgIGZpbHRlcnMgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZp
bHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0ZXJzKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdApAQCAtMzU0LDcgKzM1NCw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFuc2Zvcm0pKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgcmVzdWx0LnRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CisgICAgICAg
IHJlc3VsdC50cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4Pih0cmFuc2Zvcm0pOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRp
ZXMgJiBTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpIHsKQEAgLTM2Miw3ICszNjIsNyBAQCBib29s
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3Jt
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQuc3VibGF5ZXJU
cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1bHQuc3VibGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOwogICAgIH0KIAog
ICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBIaWRkZW5DaGFuZ2VkKSB7CkBAIC00
MjUsNyArNDI1LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9w
ZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJvdW5kZWRSZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCi0gICAgICAgIHJlc3VsdC5zaGFwZVJvdW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CisgICAgICAgIHJlc3VsdC5z
aGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Pihy
b3VuZGVkUmVjdCk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAm
IFNoYXBlUGF0aENoYW5nZWQpIHsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBib29sIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzRnJvbnRCdWZmZXIpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaGFzRnJvbnRCdWZmZXIpIHsKLSAg
ICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZT4obnVsbHB0cik7CisgICAgICAgICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9
IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KG51bGxwdHIpOwogICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqYmFja2luZ1N0b3JlKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKQEAgLTQ4Niw3ICs0ODYsNyBAQCBib29sIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsCiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAm
IEZpbHRlcnNDaGFuZ2VkKSB7Ci0gICAgICAgIGF1dG8gZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKTsKKyAgICAgICAgYXV0byBmaWx0ZXJzID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigpOwogICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKCpmaWx0ZXJzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgcmVzdWx0LmZpbHRlcnMgPSBXVEZNb3ZlKGZpbHRlcnMpOwpAQCAtNjAyLDcgKzYwMiw3IEBA
IGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIFJlbW90ZUxheWVyVHJlZVRyCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5
ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPExheWVyUHJvcGVydGllcz4gbGF5ZXJQcm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxM
YXllclByb3BlcnRpZXM+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRp
ZXM+IGxheWVyUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8TGF5ZXJQcm9wZXJ0aWVzPigpOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpsYXllclByb3BlcnRpZXMpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggOTc4YzRiYmVkN2I1Y2Q5MWNhYWVjMTU0YmM4YmExNGJh
Yjc1MzQ2MS4uZTgyNmEzMGIxMmUyNGVjZjQzMGM2OWI3NmIxYTZmMjhmNWJiOThkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApA
QCAtNTIyLDcgKzUyMiw3IEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2Fj
dGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc05ld1Jvb3ROb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIG1f
c2Nyb2xsaW5nU3RhdGVUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+
KCk7CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUgPSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRl
VHJlZT4oKTsKIAogICAgIGJvb2wgaGFzQ2hhbmdlZFByb3BlcnRpZXM7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNDaGFuZ2VkUHJvcGVydGllcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKaW5kZXggYzczNDdjNzllNjY5
MzgzNzg1ZDA1ZDIyOWU0N2I3NDdjMWYwY2E1NS4uYjJjZDQ4NDY2NzdjZTk3ZGZhYzI4NTg0OTBj
MWVhNDM0Zjk2MjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1No
YXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
CiB7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2UgPSBjcmVhdGVDYWlyb1N1cmZh
Y2UoKTsKICAgICBSZWZQdHI8Y2Fpcm9fdD4gYml0bWFwQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJv
X2NyZWF0ZShpbWFnZS5nZXQoKSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1h
cENvbnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+
KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0Lmdl
dCgpKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRl
eCA5MmYxMDYyYjI5MGY3NzVkYjVhZTdlZDE5NTJhOWNhODU4YWIzMTIyLi4wMTZhYmJkOTkzZTE4
YTQ1YzAxYTdmMDQ5N2RjYzMxYTUzYjQzNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHQoKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAwLCBt
X3NpemUuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGJpdG1hcENvbnRleHQuZ2V0
KCksIDEsIC0xKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0PihiaXRtYXBDb250ZXh0LmdldCgpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6
OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcAppbmRleCA2MGY4ZjNj
YjczMjg5YjZiMGQyZjRjMzUxNDZmMWNmZWQ0MDM0YTgwLi4xMDAxZWUzZTUyOTJlZGNiNTM2Zjgy
MzMwM2MyYzc0YzJiMWU5Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4v
U2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dp
bi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHQoKQogewogICAgIG1fYml0bWFwID0gY3JlYXRlRGlyZWN0MkRTdXJmYWNlKCk7CiAgICAg
Q09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBiaXRtYXBDb250ZXh0ID0gRGlyZWN0MkQ6OmNyZWF0
ZVJlbmRlclRhcmdldEZyb21XSUNCaXRtYXAobV9iaXRtYXAuZ2V0KCkpOwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3Jl
YXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQ
b2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCmluZGV4IDI5OTU4MTA5NWRkMWQxYjE1YWZl
YWJiNGRhY2JlZDA1ZDJiZGQxMTQuLjU0NWE3YmU0ZDQ4MTk3MTMyOGQxYzNmNzlkMjcxZWQ5YTIx
ZjgzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRp
b25DbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIG5hbWVz
cGFjZSBBUEkgewogCiBjbGFzcyBBdXRvbWF0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BdXRvbWF0aW9uQ2xpZW50KCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50LmgKaW5kZXggMjhmYWY2ODcxOWE5ZDcyOGQ1MWI2Yzc3MmQ4NGUxN2I2
NDkwOTdjYS4uMmFlMmE1MDM0YzNhNDE3MWNjZjQ3N2I5Nzg1YjczYTZmMjRkYjgxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNz
aW9uQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgZW51bSBBdXRvbWF0aW9uU2Vzc2lvbkJyb3dz
aW5nQ29udGV4dE9wdGlvbnMgOiB1aW50MTZfdCB7CiB9OwogCiBjbGFzcyBBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBKYXZhU2NyaXB0RGlhbG9nVHlwZSB7CiAgICAgICAgIEFsZXJ0LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAppbmRl
eCBhZjEwOWMxZGY2NzAwZGMyM2UyZTMzMWIwYjUwZWZiY2ZmNDI4NjY3Li44MTZmNzFlMTI2NzBj
YjNkNjViMWU2MzI4MDNhNmI0MGVmN2RiZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaApAQCAtNDksNiArNDksNyBAQCBjbGFz
cyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQ29udGV4dE1lbnVDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkNvbnRleHRNZW51Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAppbmRleCAw
ZjhjYWI5NzMyOWYwOTU3ZjMyYjQ3YzI3NzgxZDFlNzg2ZmExNDdkLi44YjQ0YTNmNDU2YzUzMmFk
MzM4MDZlZjY5YjQ3ZWFkMDk0MWRmN2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0z
OCw2ICszOCw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIG5hbWVzcGFjZSBBUEkgewogCiBj
bGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCmluZGV4IDkyYjJkNjc1ZGZjYTJjYWZkYTIxMWIzZjcx
YzU3OThhZmQ0NWQ2MmEuLmI0ZTJhZGU3MjllYTY2ZDhkZGE4ZGQ1MDIxMThhZTRhYmRiMjE4NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xh
c3MgRGljdGlvbmFyeTsKIAogY2xhc3MgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SURvd25sb2FkQ2xpZW50LmgKaW5kZXggMDIzNzZlMWUxMTBkNDc2ZWIyYjkxODVlNGUyZmNkOGQ2
ZTEzMzJlMS4uYjJlYWNjOWI4MzI1OThiMTdhOTlkYmQ5ZDY3ZWYyNGU0NzNhZWQxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2
LDYgKzQ2LDcgQEAgZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsKIG5hbWVz
cGFjZSBBUEkgewogCiBjbGFzcyBEb3dubG9hZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RG93bmxvYWRDbGllbnQoKSB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKaW5kZXggZjMxMjNh
ZjE5NTE2NWE2NjlkNjY2ODMxOGI4MTJlOTMzNjVlNmRjMi4uNmQxZTNiMjExZmUwZGQ5NWE5NDg1
MDU4NDE3ZGI0ZGUwODI0MGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUZpbmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RmluZENsaWVudC5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVz
cGFjZSBBUEkgewogCiBjbGFzcyBGaW5kQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GaW5kQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50LmgKaW5kZXgg
YzZmNDU3MzQyZDExMTkwMWRjYTZkM2MzMDkwMzM3ZmVlN2ExZmVjMi4uZmFlMWRjZDNjZDY4ODM1
MDdlZmJlM2Q5NWQ1ZDZmNzJhMDM2OWRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEZpbmRNYXRjaGVzQ2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5G
aW5kTWF0Y2hlc0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUZvcm1DbGllbnQuaAppbmRleCA1YjBjNmNjYTI0ZWVmYzFhOTU4MTkxZTBlMjc5NGE0N2I0ZjU0
ZTdjLi5mMGNhMDYwMTExOTgwMmVkMzY5YjRkMDc4ZDgzYzg2MmE1MTYxMmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAg
bmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIEZvcm1DbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkZvcm1DbGll
bnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1
bGxzY3JlZW5DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2Ny
ZWVuQ2xpZW50LmgKaW5kZXggMTM3NTUyOWNkYTI1ZjI1Y2JiMTc5YmRjODk4OTE3MWM4OWVlODg1
Ny4uODk3NGNkMTMzOTQ3NzUwMjczZjQ1MGYwZTgzOTZjMGU2YjEzMjAzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCkBAIC0zMiw2
ICszMiw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBG
dWxsc2NyZWVuQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBlbnVtIFR5cGUgewogICAgICAgICBBUElUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmgKaW5kZXggNTI2NmJjMmNh
NTRjZjA5OWMyMzhjYWNjNjIxNDRjOTc5OWEwOTc5Ny4uN2M2ZjU2MjljYjYwZTUzYmM3Yjg1YWE4
ODg5ZjcyZTY4ZDdhNGMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEdlb2xvY2F0
aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfkdlb2xvY2F0aW9uUHJvdmlkZXIoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAppbmRleCA5ODFhOTg1YmJk
ZTVmMWNiNjVmOTZjYmIyMTM5ZmJjZjE5ZDdkY2U1Li5lMTIyZWUzZWRiMWM0MjE5ZDFkODQxOTkz
MjFhODAwM2Q1MmM4MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSFRUUENvb2tpZVN0b3JlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgSFRUUENvb2tp
ZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKIAogICAgIEFTU0VS
VCghbV9vYnNlcnZlZENvb2tpZU1hbmFnZXJQcm94eSk7CiAKLSAgICBtX2Nvb2tpZU1hbmFnZXJQ
cm94eU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlP
YnNlcnZlcj4oKnRoaXMpOworICAgIG1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXIgPSBtYWtl
VW5pcXVlPEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyPigqdGhpcyk7CiAKICAgICBh
dXRvKiBwb29sID0gbV9vd25pbmdEYXRhU3RvcmUtPnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFn
ZU9wZXJhdGlvbnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0
b3J5Q2xpZW50LmgKaW5kZXggZmNmNDYwNjFmNmJmYTZkY2I3NjBlMTJjNjYzM2I2YjQ1ZjE1NmRk
NC4uMTE4NGFhNDMyYzNiOWZmY2IxNWRhNWY4MjhlZjRhYzRmMWFkYjFlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCkBAIC0zNSw2ICszNSw3
IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNs
YXNzIEhpc3RvcnlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkhpc3RvcnlDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCmluZGV4IGVhOWViYTUw
ZTFlZmU4ZjAzMjFjNGRmZTNhNDQ2ZjBkY2JiNWQ4YzkuLmJlNDNhZWVjNTRmZjJkNGFiYjVhMjhm
ZjM2MzE0NWM0OTBjN2U4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJY29uRGF0YWJhc2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgV2ViSWNv
bkRhdGFiYXNlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEljb25EYXRhYmFzZUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNv
bkRhdGFiYXNlQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUljb25Mb2FkaW5nQ2xpZW50LmgKaW5kZXggNmY5ZTdhZjljOTgwOTIzM2I2YTU2NWVj
M2UzODBiZTBhYWNkNTY3ZS4uMmZlMzg2MjU5NDYzYmZiMzYyM2ViYmRiNGZlZjVmODM5MzZiMGQz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5n
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2FkaW5n
Q2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SWNvbkxvYWRpbmdDbGllbnQoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVu
ZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaAppbmRleCBjMzVlN2IzYWU0OTNkOWFjNjNjYjNhNGI1ODFmZTMyZmNiNDBhY2U4
Li45ZDQzNDg5YTJkNjI1N2NiMGNhZjkyMmIzZmIwOTMyOTVjZTliYjk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaApA
QCAtMzcsNiArMzcsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIG5hbWVzcGFjZSBBUEkgewog
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVDbGllbnQoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxl
Z2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgKaW5kZXggY2JiOWUwYTk3MTQ1YmQxN2RkZWY4ZTBi
YjE0YWY4YzM3NmRmYjM4OC4uZGI1ZDkwYzMxZjkyNzY5ZDMwM2EwMWFkNzhiZGE3ZmJkMWE0ZDAx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRl
eHRIaXN0b3J5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxl
Z2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgc3RydWN0IFdlYk5h
dmlnYXRpb25EYXRhU3RvcmU7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgfkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAppbmRleCAzNDhkNmJmNzcy
OTI3MmU4ZjJhYmFlYzM3NTVjMjBkZTU0MmQ2NDVkLi5iMmVhNDFkOWUyZjJlODFlMmM5ZWIzYjg3
NzkxZmMzZWY4YzNmMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxv
YWRlckNsaWVudC5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBP
YmplY3Q7CiAKIGNsYXNzIExvYWRlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9hZGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVj
dCopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50LmgKaW5kZXggYTZlMDE5Y2M0NTE4NjNhNDFhY2ZjOGJlYTdiZjMwMjg5NmIxYmI3My4u
Y2QyMmEyNjc2NDY4ZDE4MjM0YTYwODQyZmU5ZDkxNjcxYjIwYTg3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC03Myw2ICs3
Myw3IEBAIGNsYXNzIE5hdmlnYXRpb25SZXNwb25zZTsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3Mg
TmF2aWdhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+TmF2aWdhdGlvbkNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKaW5kZXggNWViZTQ0MDc0MmE3NjU0MWIx
ZDljY2YyOTk1YzlhOTVmZTg0ZDVhZC4uNmFlOGU3NTIwNWZmZmM4NjUyZjRmOWI4M2JiM2RlMzBl
ZTZjZmFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGlj
eUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGll
bnQuaApAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIAog
Y2xhc3MgUG9saWN5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Qb2xpY3lDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRleCBkOWRkMGRiNDY2Mzc3MjJiNjAyYjIwZGRkZjY3
MzgxMzVmNjQ2ZjYyLi43NzJkYTZlNWE4Njk3N2VjOGFlMmRjMDc1NDJkOGZjZjFlMTQ5NjFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtNzEsNiArNzEs
NyBAQCBjbGFzcyBPcGVuUGFuZWxQYXJhbWV0ZXJzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAK
IGNsYXNzIFVJQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5VSUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBkMGViMzFhZTE2OTAwNTc3MmE2YmVjMTQzN2MyYjQz
MGQwY2I0ZTZkLi5iMzI0YTI0MDRmYzAwYWU3OTg0NGZlZjkwN2QwNzBlMWQwMzAwNWU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTk1LDcgKzk1
LDcgQEAgdm9pZCBXS0NvbnRleHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNv
bnN0IFdLQ29udGV4dENsaWVudEJhc2UqIHdrQ2wKIAogdm9pZCBXS0NvbnRleHRTZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChj
b250ZXh0UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OldlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJL
aXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1
ZTxXZWJLaXQ6OldlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKIH0K
IAogdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVm
LCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xNTYsNyAr
MTU2LDcgQEAgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2wKICAgICB9OwogCiAgICAgV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wgPSAqV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZik7
Ci0gICAgcHJvY2Vzc1Bvb2wuc2V0SGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEhpc3Rv
cnlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgcHJvY2Vzc1Bvb2wuc2V0SGlzdG9yeUNsaWVudCht
YWtlVW5pcXVlPEhpc3RvcnlDbGllbnQ+KHdrQ2xpZW50KSk7CiAKICAgICBib29sIGFkZHNWaXNp
dGVkTGlua3MgPSBwcm9jZXNzUG9vbC5oaXN0b3J5Q2xpZW50KCkuYWRkc1Zpc2l0ZWRMaW5rcygp
OwogCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWQKICAgICAgICAg
fQogICAgIH07CiAKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4od2tDbGllbnQpKTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxE
b3dubG9hZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0
aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0
aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMTFiODM0YjRlZTJhOWE2
ODc2MjZjNzMyYmY1OGE0ODgyM2Y2MzM0YS4uODg4Yjc1YmM3Y2VjODlkMTZlMDdmNjE3ZTdiYjJj
ZTI5NzlmYTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtNDAsNyArNDAsNyBAQCBXS1R5cGVJRCBXS0dl
b2xvY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJT
ZXRQcm92aWRlcihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYs
IGNvbnN0IFdLR2VvbG9jYXRpb25Qcm92aWRlckJhc2UqIHdrUHJvdmlkZXIpCiB7Ci0gICAgdG9J
bXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZiktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8
V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOworICAgIHRvSW1wbChnZW9sb2Nh
dGlvbk1hbmFnZXJSZWYpLT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJv
dmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdlclByb3Zp
ZGVyRGlkQ2hhbmdlUG9zaXRpb24oV0tHZW9sb2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25N
YW5hZ2VyUmVmLCBXS0dlb2xvY2F0aW9uUG9zaXRpb25SZWYgcG9zaXRpb25SZWYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcAppbmRleCBiMjIzZDZmODdiZmE1ZTk2ZTNlNTBkYTJkZDc4ZmYwZDJkZDQxNmNlLi43Njky
Mzk5MGFiNWI5ZWEyMTM4NWYxZDM1NjllOGI1MGFhN2Y2NWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkK
IAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihXS05vdGlmaWNhdGlvbk1h
bmFnZXJSZWYgbWFuYWdlclJlZiwgY29uc3QgV0tOb3RpZmljYXRpb25Qcm92aWRlckJhc2UqIHdr
UHJvdmlkZXIpCiB7Ci0gICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5zZXRQcm92aWRlcihzdGQ6Om1h
a2VfdW5pcXVlPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CisgICAgdG9J
bXBsKG1hbmFnZXJSZWYpLT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAKIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJv
dmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2Vy
UmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCmluZGV4IDQ3ZWM3MjZiMGNlNDQwNTdmMDAyYjU0MGJlYTc2OGU0M2IxMGE4
ZDQuLjYxYTY5YjFmM2E2ZGE3NDk2YWQ0NzI2OTcwYjg1ZjJjOTExODEzZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtOTQ4LDcgKzk0OCw3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VDb250ZXh0TWVudUNsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xp
ZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGll
bnQobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBAIC05
NTcsNyArOTU3LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2wKIAogdm9pZCBXS1BhZ2VTZXRQ
YWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYlBh
Z2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJl
ZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KG1ha2VVbmlxdWU8V2ViUGFnZURpYWdub3N0
aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5k
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tD
bGllbnQpCkBAIC05OTUsNyArOTk1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2wKICAgICAg
ICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxGaW5kQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
c2V0RmluZENsaWVudChtYWtlVW5pcXVlPEZpbmRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTAzOCw3ICsxMDM4
LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0
b0ltcGwocGFnZVJlZiktPnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rmlu
ZE1hdGNoZXNDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5k
TWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEZpbmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVudCkpOwog
fQogCiB2b2lkIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAg
LTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1CiAKIHZvaWQgV0tQYWdl
U2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZvcm1DbGll
bnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50
KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMTk5LDcgKzEx
OTksNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAKICAgICBXZWJQYWdlUHJveHkqIHdlYlBh
Z2VQcm94eSA9IHRvSW1wbChwYWdlUmVmKTsKIAotICAgIGF1dG8gbG9hZGVyQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KTsKKyAgICBhdXRvIGxvYWRlckNs
aWVudCA9IG1ha2VVbmlxdWU8TG9hZGVyQ2xpZW50Pih3a0NsaWVudCk7CiAKICAgICAvLyBJdCB3
b3VsZCBiZSBuaWNlIHRvIGdldCByaWQgb2YgdGhpcyBjb2RlIGFuZCB0cmFuc2l0aW9uIGFsbCBj
bGllbnRzIHRvIHVzaW5nIGRpZExheW91dCBpbnN0ZWFkIG9mCiAgICAgLy8gZGlkRmlyc3RMYXlv
dXRJbkZyYW1lIGFuZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRJbkZyYW1lLiBJbiB0
aGUgbWVhbnRpbWUsIHRoaXMgaXMgcmVxdWlyZWQKQEAgLTEyODEsNyArMTI4MSw3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
UG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJl
ZiktPnNldFBvbGljeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBvbGljeUNsaWVudD4od2tDbGll
bnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFBvbGljeUNsaWVudChtYWtlVW5pcXVlPFBv
bGljeUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMDc1
LDcgKzIwNzUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICB9CiAgICAgfTsK
IAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxVSUNs
aWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJQ2xpZW50KG1ha2VV
bmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmln
YXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGll
bnRCYXNlKiB3a0NsaWVudCkKQEAgLTIyOTMsMTY0ICsyMjkzLDE2NiBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZp
Z2F0aW9uQ2xpZQogICAgIHdlYlBhZ2VQcm94eS0+c2V0TmF2aWdhdGlvbkNsaWVudChtYWtlVW5p
cXVlUmVmPE5hdmlnYXRpb25DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKLXZvaWQgV0tQYWdlU2V0
UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKLXsKLSAgICBjbGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVu
dDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIg
ewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgU3RhdGVDbGllbnQoY29uc3QgV0tQYWdl
U3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluaXRpYWxp
emUoY2xpZW50KTsKLSAgICAgICAgfQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgd2lsbENo
YW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9j
bGllbnQud2lsbENoYW5nZUlzTG9hZGluZykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci0gICAgICAgIH0KK2NsYXNzIFN0YXRlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6
Q2xpZW50PFdLUGFnZVN0YXRlQ2xpZW50QmFzZT4sIHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNl
cnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgU3RhdGVDbGllbnQoY29uc3QgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCisgICAg
eworICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CisgICAgfQorcHJpdmF0ZToKKyAgICB2b2lk
IHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Ns
aWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2NsaWVudC53aWxsQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGUKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2Fk
aW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENo
YW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZENoYW5nZUlzTG9hZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlSXNMb2FkaW5nKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0g
ICAgICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUo
KSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5n
ZVRpdGxlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2
b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQuZGlkQ2hhbmdlVGl0bGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50
LmRpZENoYW5nZVRpdGxlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAg
ICAgIHZvaWQgd2lsbENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTCkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQWN0aXZlVVJMKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VBY3Rp
dmVVUkwoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdl
QWN0aXZlVVJMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hh
bmdlQWN0aXZlVVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAg
IHZvaWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJMKG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVS
TCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZl
VVJMKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2ls
bENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUhhc09u
bHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAg
ICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUhhc09ubHlTZWN1
cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZv
aWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUhh
c09ubHlTZWN1cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0K
KyAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1
cmVDb250ZW50KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZv
aWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUVzdGlt
YXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2
b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdl
RXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUVz
dGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJy
aWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdv
QmFjaykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxs
Q2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAg
ICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2sp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdl
Q2FuR29CYWNrKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lk
IGRpZENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZENoYW5nZUNhbkdvQmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9j
bGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
fQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZCkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdl
Q2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2
b2lkIHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKCkg
b3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VD
YW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAg
ICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCisgICAgewor
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENoYW5nZU5ldHdv
cmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3Jr
UmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0K
KyAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0lu
UHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFu
Z2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
TmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZU5ldHdv
cmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNz
KG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbENo
YW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbykKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VD
ZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53
aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2NsaWVudC53aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3Zl
cnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0
aWZpY2F0ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJ
bmZvKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQogCi0gICAgICAgIHZvaWQgd2ls
bENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VX
ZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAg
IH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3Bv
bnNpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VX
ZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQog
Ci0gICAgICAgIHZvaWQgZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vz
c0lzUmVzcG9uc2l2ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2Ns
aWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci0gICAgICAgIH0KKyAgICB2b2lkIGRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNp
dmUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VXZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgfQogCi0gICAgICAgIHZvaWQgZGlkU3dhcFdlYlByb2Nlc3NlcygpIG92ZXJyaWRl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3Nl
cykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRTd2Fw
V2ViUHJvY2Vzc2VzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICB9
OworICAgIHZvaWQgZGlkU3dhcFdlYlByb2Nlc3NlcygpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICB9Cit9OworCit2b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1Bh
Z2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCit7CiAgICAgaWYgKGNs
aWVudCkKLSAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTdGF0ZUNsaWVudD4oY2xpZW50KSk7CisgICAgICAgIHRvSW1wbChwYWdl
KS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG1ha2VVbmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVu
dCkpOwogICAgIGVsc2UKICAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRlT2Jz
ZXJ2ZXIobnVsbHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCmluZGV4IGY3NjNhZjYwMDNkYTQ2NjczNjMxZTkx
ZWE4MWI4M2I1Yzk3YTA4N2QuLjM1ZWY5MjIxNTRlMTk2MzAwZTRiNmVlNzVkNGM5ODE3ODViYzNl
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQ
cml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1Bh
Z2VQcml2YXRlTWFjLm1tCkBAIC01Miw3ICs1Miw3IEBAIC0gKGlkKWluaXRXaXRoUGFnZTooUmVm
UHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiYmKXBhZ2UKICAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIF9wYWdlID0gV1RGTW92ZShwYWdlKTsKLSAgICBfb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmLCBAIlVSTCIpOworICAgIF9v
YnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYs
IEAiVVJMIik7CiAgICAgX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqX29ic2Vy
dmVyKTsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy93cGUvV0tWaWV3LmNwcAppbmRleCA3OGJiYTM5NjdiNjE5N2MwZThhN2MyM2FjM2RhOGNkMTMy
ZTdjNGJlLi45NjQwNmQwYWFmYmMzNTU1NjBiNWQzMTk3YTAwYzI1ZjU3NTlhM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcApAQCAtNjgsNSArNjgs
NSBAQCB2b2lkIFdLVmlld1NldFZpZXdDbGllbnQoV0tWaWV3UmVmIHZpZXcsIGNvbnN0IFdLVmll
d0NsaWVudEJhc2UqIGNsaWVudCkKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwodmll
dyktPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFZpZXdDbGllbnQ+KGNsaWVudCkpOworICAg
IHRvSW1wbCh2aWV3KS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8Vmlld0NsaWVudD4oY2xpZW50KSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCAyNjU1NTRmM2Q3ZjJkN2Fk
Mjk2ZTlmM2Y5ZmExMTM4OGI3OGZkNTY0Li40OTY3Nzg4YTEwNTdmYTg4MmEwYTAxYzhkYmY1MDAy
ZTkyMjZlYzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYwMiw3ICs2
MDIsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoUGFnZVJlZjooV0tQYWdlUmVmKXBhZ2VS
ZWYKIAogICAgIF9wYWdlID0gV2ViS2l0Ojp0b0ltcGwocGFnZVJlZik7CiAKLSAgICBfcGFnZUxv
YWRTdGF0ZU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVP
YnNlcnZlcj4oc2VsZik7CisgICAgX3BhZ2VMb2FkU3RhdGVPYnNlcnZlciA9IG1ha2VVbmlxdWU8
V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYpOwogICAgIF9wYWdlLT5wYWdlTG9h
ZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKl9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIpOwogCiAgICAgQVNT
RVJUKCFicm93c2luZ0NvbnRleHRDb250cm9sbGVyTWFwKCkuY29udGFpbnMoX3BhZ2UuZ2V0KCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBD
b29raWVTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBD
b29raWVTdG9yZS5tbQppbmRleCAxMzcyY2E0MTA2Yzc2ZTFkNjIzNWQ2MTRhZDVjMWU2YTU2ZWEw
NWExLi44MWQzNzAzYjBlZWE4MmU1ZTZjNjJmMzIyMmFjNGU2ODE5ZjZiM2E2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3Jl
Lm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgLSAodm9pZClhZGRPYnNlcnZlcjooaWQ8V0tIVFRQQ29v
a2llU3RvcmVPYnNlcnZlcj4pb2JzZXJ2ZXIKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQog
ICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPihvYnNlcnZlcik7CisgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4o
b2JzZXJ2ZXIpOwogICAgIF9jb29raWVTdG9yZS0+cmVnaXN0ZXJPYnNlcnZlcigqcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggYmFjZTVhYzdlYzAwYjE4OThhZDJkZjcyY2Ix
YjE5NDQ2N2RjZWM5ZC4uZWJhYzU2OGUzZGRiNjg3MGY4NWIwMTUwOGVjMjBmYWFiN2YyMDRkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KQEAgLTM3Myw3ICszNzMsNyBAQCAtIChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pX2Rv
d25sb2FkRGVsZWdhdGUKIC0gKHZvaWQpX3NldERvd25sb2FkRGVsZWdhdGU6KGlkIDxfV0tEb3du
bG9hZERlbGVnYXRlPilkb3dubG9hZERlbGVnYXRlCiB7CiAgICAgX2Rvd25sb2FkRGVsZWdhdGUg
PSBkb3dubG9hZERlbGVnYXRlOwotICAgIF9wcm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVnYXRl
KSk7CisgICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPFdlYktp
dDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsKIH0KIAogLSAoaWQgPF9XS0F1
dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQpAQCAtMzg0LDcgKzM4NCw3IEBA
IC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKIC0gKHZv
aWQpX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4pYXV0
b21hdGlvbkRlbGVnYXRlCiB7CiAgICAgX2F1dG9tYXRpb25EZWxlZ2F0ZSA9IGF1dG9tYXRpb25E
ZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxlZ2F0
ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVlPFdl
YktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0b21hdGlvbkRlbGVnYXRlKSk7CiB9CiAK
IC0gKHZvaWQpX3dhcm1Jbml0aWFsUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4
IDhiNmRmMjRmODk1MmQ4NGY2MDc1NDRjNmEzMWEyZGQxYjhhYTM1NWQuLmEwMGIyMDNjYzkwNTkz
MDFiZWNjNDYxZDYxYjQ2NzMyYjg1NjEyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAg
LTExOCw2ICsxMTgsNyBAQCAtICh2b2lkKXJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMKIH0KIAog
Y2xhc3MgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBXZWJLaXQ6
OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGUoV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIgKmNvbnRyb2xsZXIsIGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBoYW5kbGVyLCBOU1N0cmluZyAqbmFtZSkKICAgICAgICAgOiBtX2NvbnRyb2xsZXIoY29udHJv
bGxlcikKQEAgLTE0NSw3ICsxNDYsNyBAQCBwcml2YXRlOgogCiAtICh2b2lkKWFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhh
bmRsZXIgbmFtZTooTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUp
LCBuYW1lLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIGF1dG8g
aGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5p
cXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5k
bGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsK
ICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1l
c3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBu
YW1lXTsKIH0KQEAgLTIyOSw3ICsyMzAsNyBAQCAtICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVT
aGVldHNBc3NvY2lhdGVkV2l0aFVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250ZW50VwogCiAt
ICh2b2lkKV9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRs
ZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZSB1c2VyQ29udGVu
dFdvcmxkOihfV0tVc2VyQ29udGVudFdvcmxkICopdXNlckNvbnRlbnRXb3JsZAogewotICAgIGF1
dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1l
c3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVu
dFdvcmxkKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxm
LCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5f
dXNlckNvbnRlbnRXb3JsZCk7CiAgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkt
PmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVt
cHQgdG8gYWRkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUg
YWxyZWFkeSBleGlzdHMuIiwgbmFtZV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwMzkxYTE5OTJlMzUzMmRiZTVmMjFkYjY5MWRk
ODEwOGFhZTJhNjZjLi4wOGY0MmVjOGIxM2JmNzBiZDJiNmIzN2JjN2Q4MTU2ODIzZDZjNmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTc1Nyw3ICs3NTcsNyBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBfaW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1w
bD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2wsIHBhZ2VDb25maWd1cmF0aW9uLmNvcHlSZWYoKSk7
CisgICAgX2ltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYs
IHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJhdGlvbi5jb3B5UmVmKCkpOwogICAgIF9wYWdlID0g
Jl9pbXBsLT5wYWdlKCk7CiAKICAgICBfaW1wbC0+c2V0QXV0b21hdGljYWxseUFkanVzdHNDb250
ZW50SW5zZXRzKHRydWUpOwpAQCAtNzY5LDE0ICs3NjksMTQgQEAgLSAodm9pZClfaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlv
bgogCiAgICAgX3BhZ2UtPnNldEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQoY29u
ZmlndXJhdGlvbi5fYXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCk7CiAKLSAgICBf
bmF2aWdhdGlvblN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0
ZT4oc2VsZik7CisgICAgX25hdmlnYXRpb25TdGF0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpOYXZp
Z2F0aW9uU3RhdGU+KHNlbGYpOwogICAgIF9wYWdlLT5zZXROYXZpZ2F0aW9uQ2xpZW50KF9uYXZp
Z2F0aW9uU3RhdGUtPmNyZWF0ZU5hdmlnYXRpb25DbGllbnQoKSk7CiAKLSAgICBfdWlEZWxlZ2F0
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpVSURlbGVnYXRlPihzZWxmKTsKLSAgICBfcGFn
ZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RmluZENsaWVudD4oc2Vs
ZikpOwotICAgIF9wYWdlLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHNlbGYpKTsKKyAgICBfdWlEZWxl
Z2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpVSURlbGVnYXRlPihzZWxmKTsKKyAgICBfcGFnZS0+
c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RmluZENsaWVudD4oc2VsZikpOworICAg
IF9wYWdlLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ+KHNlbGYpKTsKIAotICAgIF9pY29uTG9hZGluZ0RlbGVnYXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Okljb25Mb2FkaW5nRGVsZWdhdGU+KHNlbGYpOwor
ICAgIF9pY29uTG9hZGluZ0RlbGVnYXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Okljb25Mb2FkaW5n
RGVsZWdhdGU+KHNlbGYpOwogCiAgICAgX3VzZVBsYXRmb3JtRmluZFVJID0gWUVTOwogCkBAIC0z
NDI1LDcgKzM0MjUsNyBAQCAtICh2b2lkKXNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzOihCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbgogICAgIF9hbGxvd3NCYWNr
Rm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9IGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzOwogCiAgICAgaWYgKGFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzICYm
ICFfZ2VzdHVyZUNvbnRyb2xsZXIpIHsKLSAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKl9wYWdlKTsKKyAg
ICAgICAgX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcj4oKl9wYWdlKTsKICAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyLT5pbnN0YWxs
U3dpcGVIYW5kbGVyKHNlbGYsIFtzZWxmIHNjcm9sbFZpZXddKTsKICAgICAgICAgaWYgKFdLV2Vi
VmlldyAqYWx0ZXJuYXRlV2ViVmlldyA9IFtfY29uZmlndXJhdGlvbiBfYWx0ZXJuYXRlV2ViVmll
d0Zvck5hdmlnYXRpb25HZXN0dXJlc10pCiAgICAgICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIt
PnNldEFsdGVybmF0ZUJhY2tGb3J3YXJkTGlzdFNvdXJjZVBhZ2UoYWx0ZXJuYXRlV2ViVmlldy0+
X3BhZ2UuZ2V0KCkpOwpAQCAtNTY3OCw3ICs1Njc4LDcgQEAgLSAodm9pZClfc2V0SW5wdXREZWxl
Z2F0ZTooaWQgPF9XS0lucHV0RGVsZWdhdGU+KWlucHV0RGVsZWdhdGUKICAgICB9OwogCiAgICAg
aWYgKGlucHV0RGVsZWdhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikpOworICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVu
dChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdl
LT5zZXRGb3JtQ2xpZW50KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCmluZGV4IDdhZDA3
M2I4Y2Q2ZGQ0MjAzZTFhNzYwNThmN2M3ZGYyYTlmOGFkN2IuLjJhZGVlYTc2MGM2OThiMThhZTU5
MWU1NzA1NzEzMjk1ZjI0YzU2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KQEAgLTcyLDcgKzcyLDcg
QEAgLSAoaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KWRlbGVnYXRlCiAtICh2b2lk
KXNldERlbGVnYXRlOihpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4pZGVsZWdhdGUK
IHsKICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBfc2Vzc2lvbi0+c2V0Q2xpZW50KGRl
bGVnYXRlID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
PihkZWxlZ2F0ZSkgOiBudWxscHRyKTsKKyAgICBfc2Vzc2lvbi0+c2V0Q2xpZW50KGRlbGVnYXRl
ID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihkZWxlZ2F0ZSkg
OiBudWxscHRyKTsKIH0KIAogLSAoTlNTdHJpbmcgKilzZXNzaW9uSWRlbnRpZmllcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCmluZGV4IGIzN2IwNTA1M2Yx
MjRhY2I3MGZkNmFkZTZkZjQyMGZlODI1ZDU0Y2YuLjBkZDQwOWE0M2RlNjUzMDBjOWYwY2M4NTQ0
N2FjMmY3MTNlYzk0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KQEAgLTM4LDYgKzM4LDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIF9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IGZpbmFsIDogcHVibGljIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudChfV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAqY29udHJvbGxlcikKICAgICAgICAgOiBtX2NvbnRy
b2xsZXIoY29udHJvbGxlcikKQEAgLTc1LDcgKzc2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHkgPSBXZWJL
aXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGUoKTsKLSAgICBtX3JlbW90ZUluc3Bl
Y3RvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpfV0tSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eUNsaWVudD4oc2VsZik7CisgICAgbV9yZW1vdGVJbnNwZWN0b3JDbGllbnQgPSBtYWtl
VW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQ+KHNlbGYpOwog
ICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNldENsaWVudChtX3JlbW90ZUluc3BlY3RvckNs
aWVudC5nZXQoKSk7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDhkMmY4OGFlMDAzMmEwZDkz
NDVlNjgwMGE5Nzg1OGI0MjhhNGQ2ZDkuLjA2ODcwZDIxZGVlN2NhNGY4OWRiOWUzNDJmNmYwZjVm
ZDNmNTRhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcApAQCAtMTY5MSw3ICsxNjkxLDcgQEAgaW5saW5lIHZvaWQgcmVhZHlTUUxp
dGVTdGF0ZW1lbnQoc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZVN0YXRlbWVudD4mIHN0YXRlbWVudCwg
U1EKICAgICAgICAgc3RhdGVtZW50ID0gbnVsbHB0cjsKICAgICB9CiAgICAgaWYgKCFzdGF0ZW1l
bnQpIHsKLSAgICAgICAgc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1l
bnQ+KGRiLCBzdHIpOworICAgICAgICBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRl
bWVudD4oZGIsIHN0cik7CiAgICAgICAgIGlmIChzdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0spCiAgICAgICAgICAgICBMT0dfRVJST1IoIlByZXBhcmluZyBzdGF0ZW1lbnQgJXMgZmFp
bGVkIiwgc3RyLmFzY2lpKCkuZGF0YSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5oCmluZGV4IGJhYmQ4YTk4MjlmYjgwZDE5ODUy
ZWM5NzRhZWVhNzBjZWUwYjkxNTguLjhhOGNhYmJkNTNjMWU2NWY3MGFkZDA4NWQ0ZjU1ZWEzMTAx
MTYwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBJY29uRGF0YWJhc2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgpID0g
ZGVmYXVsdDsKIApAQCAtNTgsNiArNTksNyBAQCBjbGFzcyBJY29uRGF0YWJhc2UgewogCiBwcml2
YXRlOgogICAgIGNsYXNzIEljb25TbmFwc2hvdCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgSWNvblNuYXBzaG90KCkgPSBkZWZhdWx0Owog
CkBAIC0xMTgsNiArMTIwLDcgQEAgY2xhc3MgSWNvbkRhdGFiYXNlIHsKICAgICB9OwogCiAgICAg
Y2xhc3MgUGFnZVVSTFNuYXBzaG90IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgcHVibGljOgogICAgICAgICBQYWdlVVJMU25hcHNob3QoKSA9IGRlZmF1bHQ7CiAKQEAg
LTE3Miw2ICsxNzUsNyBAQCBjbGFzcyBJY29uRGF0YWJhc2UgewogICAgIH07CiAKICAgICBjbGFz
cyBNYWluVGhyZWFkTm90aWZpZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBwdWJsaWM6CiAgICAgICAgIE1haW5UaHJlYWROb3RpZmllcigpCiAgICAgICAgICAgICA6
IG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWFpblRocmVhZE5vdGlmaWVyOjp0aW1l
ckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGQyYWY2NGJhZDg2YThhMzNmMTMz
NTQ3MjU4MWI3MDJlNDFhNjdlYzIuLjIxODY2MDQ1MTkyNzY5YmU2ZGZmODU5YTYzMjA0M2Q1MTM1
NjljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGlj
IGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogV0VCS0lUX0RFRklORV9UWVBF
KFdlYktpdEF1dG9tYXRpb25TZXNzaW9uLCB3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uLCBHX1RZ
UEVfT0JKRUNUKQogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChXZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKICAgICAgICAgOiBtX3Nlc3Npb24oc2Vzc2lv
bikKQEAgLTIyMyw3ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lv
bkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIHNlc3Npb24tPnByaXYtPnNlc3Np
b24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+
cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpmcm9tVVRGOChzZXNz
aW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKLSAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikp
OworICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENsaWVudChtYWtlVW5pcXVlPEF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEF1
dG9tYXRpb25TZXNzaW9uRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVu
dC5jcHAKaW5kZXggOTdlOTI1NjAxNzczN2I3NjY1YWNjOGViMmYzNThlYjJlYzU5MDBiOS4uMjg1
OGRmNmYzNGQ0ZmE2MjEyMDliZjFlYjFlMTA4ODVhZDA1ZTc1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xp
ZW50LmNwcApAQCAtNTYsNiArNTYsNiBAQCBjbGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbDog
cHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgewogCiB2b2lkIGF0dGFjaENvbnRleHRNZW51
Q2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmll
d0dldFBhZ2Uod2ViVmlldykuc2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxD
b250ZXh0TWVudUNsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdl
YlZpZXcpLnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+
KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5j
cHAKaW5kZXggZDMyYjU5YzU0NzY2N2E3ZWM4NzcxODEwNTJiZDFhNzQ5YzBkYmMxYy4uYTM3M2Iy
OTQ1NzE2NzkxYTJkNGMzMDdiZDVlMGE5MjljODE0MGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCkBAIC01Niw1ICs1Niw1IEBAIGNsYXNzIEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVuCiAKIHZvaWQgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250
ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4
dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2Vi
Q29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0
KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcApp
bmRleCBlYWQ0ZjIzNDk5MTY3MDRkMTdkMWYyMzA2NDA4OWY3YTFhMDQ1OTRmLi5lNzcxZGQ3MTg3
ZTU4NTlhZGJkNWEwMTZmOGNhOTM1ZDI4ZTg0YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC0x
MTgsNSArMTE4LDUgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpE
b3dubG9hZENsaWVudCB7CiAKIHZvaWQgYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2Vi
S2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJv
Y2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxE
b3dubG9hZENsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2Fk
Q2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMTgwODNl
NzY5N2E1MTM5OGYyZWUwOTRjZGIwNjhjMjA4MzdiMWZhLi45YjU4MThhOTgzNmYzNzYyZDg5NjIy
ZTM2MmMzZmM4YjJkM2ViZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTI2Nyw4ICsyNjcs
OCBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNl
KiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJL
aXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gZGF0YWJhc2UtPnByaXY7Ci0gICAgcHJp
di0+aWNvbkRhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Ci0gICAg
cHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJY29u
RGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbWFr
ZVVuaXF1ZTxJY29uRGF0YWJhc2U+KCk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CiAgICAg
SWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNlQ2xlYW51cCgpOwogICAgIHByaXYtPmljb25EYXRh
YmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRl
QnJvd3NpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNGY5ODBkNGVlMjU4YWNhYzQ1NTgz
MjNjYTdiZDcxY2NkZjNiZWViMS4uNzY3NWM5Y2IzYTVlZGFmODg2NGQxN2ExNzkyMTdjYjk0MjMz
NjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZpbmRDb250cm9sbGVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+Y29uc3Ry
dWN0ZWQob2JqZWN0KTsKIAogICAgIFdlYktpdEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxl
ciA9IFdFQktJVF9GSU5EX0NPTlRST0xMRVIob2JqZWN0KTsKLSAgICBnZXRQYWdlKGZpbmRDb250
cm9sbGVyKS5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4oZmluZENv
bnRyb2xsZXIpKTsKKyAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KG1h
a2VVbmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKIH0KIAogc3RhdGljIHZvaWQg
d2Via2l0RmluZENvbnRyb2xsZXJHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAppbmRl
eCAxMzRkMWM2Y2ViZTU2N2ZjNTRkOTcwZjg3NmJlMDI5MzFkMzI4MjJkLi5iYzY3YTM1N2RjMDc0
NDVhMzUyOGY4MGYwYWJkNzlkMDdjM2JjMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcApAQCAtNDgsNSArNDgsNSBA
QCBjbGFzcyBGb3JtQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Rm9ybUNsaWVudCB7CiAKIHZv
aWQgYXR0YWNoRm9ybUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAg
IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2Vi
Vmlldykuc2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDJlMTU5NDVkZmFkMjljMzE1NTBkMWFkM2M0
ZGQxNDk4YmU3YjcyMDQuLjhjYmE0MjJlZDVlMzhiZjg0Yzc2MDU5NGQ2Y2YwZjY1ODhjYmVhNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlclN0YXJ0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdl
ciogbWFuYWdlcikKICAgICB9CiAKICAgICBpZiAoIW1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92
aWRlcikgewotICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtYW5hZ2Vy
LT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblBy
b3ZpZGVyPigpOwogICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVu
YWJsZUhpZ2hBY2N1cmFjeShtYW5hZ2VyLT5wcml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAg
ICB9CiAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0o
R2VvbG9jYXRpb25Qb3NpdGlvbiYmIGNvcmVQb3NpdGlvbiwgT3B0aW9uYWw8Q1N0cmluZz4gZXJy
b3IpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtp
dEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZShXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcgogewogICAg
IGF1dG8qIG1hbmFnZXIgPSBXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFOQUdFUiwgbnVsbHB0cikpOwogICAgIG1hbmFnZXIt
PnByaXYtPm1hbmFnZXIgPSBwcm94eTsKLSAgICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtl
X3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyPihtYW5hZ2VyKSk7CisgICAgcHJveHktPnNldFBy
b3ZpZGVyKG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlcj4obWFuYWdlcikpOwogICAgIHJl
dHVybiBtYW5hZ2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKaW5kZXggYjhmMDFmYjI0
ZmYyNzY1NGMwYWQ2MDlhZGQzMjQxOTVlZTQxY2E1OS4uNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2Rl
YjI1ZmRhYTI3ZjY2YzUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQg
OiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdDbGllbnQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKICAgICAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKQEAgLTYxLDUgKzYy
LDUgQEAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0Ns
aWVudCB7CiAKIHZvaWQgYXR0YWNoSWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29u
TG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3
KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGll
bnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0
ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGE5M2ZmMjViMzlhMjkyNTYwMGQyYzRhZWNjZWNiYzc1
NzBkNWRmM2QuLjkyNjJhODRkZWNlMjViZjBiZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVu
ZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAgLTE3OSw1ICsxNzksNSBAQCBjbGFzcyBXZWJL
aXRJbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxl
Q2xpZW50IHsKIAogdm9pZCBhdHRhY2hJbmplY3RlZEJ1bmRsZUNsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0
V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xp
ZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCAyMzZlODFjMTM5MGIzZWMzYzE1
NDkxODY4NmJhZmE1ZTUzODY0Njg3Li41NTE2MzY0NDc3NTU3NDdiNzBhYzVlNzZiMWQxMDRkNjFj
MGI1Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBA
IFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJvCiAgICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobm90
aWZpY2F0aW9uTWFuYWdlcikKIHsKICAgICBBU1NFUlQobV9ub3RpZmljYXRpb25NYW5hZ2VyKTsK
LSAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXItPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8
Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlzKSk7CisgICAgbV9ub3RpZmljYXRpb25NYW5hZ2Vy
LT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPE5vdGlmaWNhdGlvblByb3ZpZGVyPigqdGhpcykpOwog
fQogCiBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6fldlYktpdE5vdGlmaWNhdGlvblByb3Zp
ZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IDllNThiY2IwYjFhYjMzZmFhZDk3
ZmNmODU5ODEyN2U2MTBhMTIzMzYuLjM2Yjc4MzQzODgwZDk2MDMwZTcyZmZhYTE1Mzc0OGVlNWIx
ZTNhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFz
cyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYktpdE5v
dGlmaWNhdGlvblByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkqLCBXZWJLaXRXZWJDb250ZXh0Kik7CiAgICAgfldlYktpdE5vdGlmaWNhdGlvblByb3Zp
ZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRV
SUNsaWVudC5jcHAKaW5kZXggNWJjZWY2OGY2NWQyMzE4OTgwY2Y5MWRhZTU5M2Q3NjY3MTQ4YTk4
OS4uODk2ZTEzZGFkOTdiZTdmZjc3NmMwM2JmNmU3ZDAyNzgyZTAzMjFjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcApAQCAt
MjI1LDYgKzIyNSw2IEBAIGNsYXNzIFVJQ2xpZW50IDogcHVibGljIEFQSTo6VUlDbGllbnQgewog
CiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0g
ICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0VUlDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxVSUNsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZp
ZXcpLnNldFVJQ2xpZW50KG1ha2VVbmlxdWU8VUlDbGllbnQ+KHdlYlZpZXcpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVz
ZXJDb250ZW50TWFuYWdlci5jcHAKaW5kZXggNDhiMzhlYWMwOGQ5MTJjOTYzOWVmNTUwOTRiMTBm
MWZmYWQxZDlmOS4uMjU1ZThlNWE2NzkyNzY0ODMzZDM3ZGFmZjlmNTc5MGYwODU5NjY1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRl
bnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBAIC0xODIsNiArMTgyLDcgQEAgdm9pZCB3ZWJraXRf
dXNlcl9jb250ZW50X21hbmFnZXJfcmVtb3ZlX2FsbF9zY3JpcHRzKFdlYktpdFVzZXJDb250ZW50
TWFuYWdlciogbWEKIH0KIAogY2xhc3MgU2NyaXB0TWVzc2FnZUNsaWVudEd0ayBmaW5hbCA6IHB1
YmxpYyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNzYWdlQ2xpZW50R3RrKFdlYktpdFVz
ZXJDb250ZW50TWFuYWdlciogbWFuYWdlciwgY29uc3QgY2hhciogaGFuZGxlck5hbWUpCiAgICAg
ICAgIDogbV9oYW5kbGVyTmFtZShnX3F1YXJrX2Zyb21fc3RyaW5nKGhhbmRsZXJOYW1lKSkKQEAg
LTIzOCw3ICsyMzksNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVn
aXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcihXZWJLaXRVc2VyQwogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKG5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3Ry
aW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgp
KTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNj
cmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5h
bWUpLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIHJldHVybiBt
YW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApAQCAtMjg4LDcgKzI4OSw3IEBAIGdib29sZWFu
IHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5k
bGVyX2luX3dvcmxkKFdlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod29ybGROYW1lLCBGQUxT
RSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAg
ICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSks
IHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgICAgIFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPiht
YW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRX
b3JsZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKaW5kZXggYWQ4M2RiODIzZDM3ZDIwZjUxM2IwMTIzY2UyNzRhMmJiZjQ3MTc4
Mi4uOGM2ODk4Mjk1MzlmNDIyMzhiMzA3ZjU1NTYwOGE1YzUwMDJkY2Y0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
QEAgLTE5OCw2ICsxOTgsNyBAQCBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7
IDAsIH07CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIGNsYXNzIFdlYktpdEF1dG9t
YXRpb25DbGllbnQgZmluYWwgOiBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJL
aXRBdXRvbWF0aW9uQ2xpZW50KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIDog
bV93ZWJDb250ZXh0KGNvbnRleHQpCkBAIC0zNjcsOSArMzY4LDkgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
VG9Db250ZXh0KHdlYkNvbnRleHQpOwogCiAgICAgcHJpdi0+Z2VvbG9jYXRpb25NYW5hZ2VyID0g
YWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZShwcml2LT5wcm9jZXNzUG9v
bC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSkpOwotICAgIHByaXYt
Pm5vdGlmaWNhdGlvblByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXROb3RpZmljYXRp
b25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5PigpLCB3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92
aWRlciA9IG1ha2VVbmlxdWU8V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYtPnByb2Nl
c3NQb29sLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSwgd2ViQ29u
dGV4dCk7CiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAg
ICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4od2ViQ29udGV4dCk7CisgICAgcHJpdi0+
cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyID0gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXI+KHdlYkNvbnRleHQpOwogI2VuZGlmCiB9CiAKQEAgLTY3OCw3ICs2
NzksNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGdib29sZQogICAgICAgICAgICAgZ193YXJuaW5nKCJO
b3QgZW5hYmxpbmcgYXV0b21hdGlvbiBvbiBXZWJLaXRXZWJDb250ZXh0IGJlY2F1c2UgdGhlcmUn
cyBhbm90aGVyIGNvbnRleHQgd2l0aCBhdXRvbWF0aW9uIGVuYWJsZWQsIG9ubHkgb25lIGlzIGFs
bG93ZWQiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0
LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRBdXRvbWF0
aW9uQ2xpZW50Pihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlvbkNs
aWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0QXV0b21hdGlvbkNsaWVudD4oY29udGV4dCk7CiAgICAg
fSBlbHNlCiAgICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBudWxscHRy
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dFdlYlZpZXcuY3BwCmluZGV4IGIyMzlhYzRlMTllNjNkMzNhODY5ZGVmYjY2ZmMzYzBiNDUwMGI3
ODUuLjc0MzBjM2ZjZmQ1NGM0NmVmYTY0ZTEyZmQ5N2RlNWE5MzI5OGE0ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0y
MDEsNiArMjAxLDcgQEAgY2xhc3MgUGFnZUxvYWRTdGF0ZU9ic2VydmVyOwogI2lmIFBMQVRGT1JN
KFdQRSkKIHN0YXRpYyB1bnNpZ25lZCBmcmFtZURpc3BsYXlDYWxsYmFja0lEOwogc3RydWN0IEZy
YW1lRGlzcGxheWVkQ2FsbGJhY2sgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICBGcmFtZURpc3BsYXllZENhbGxiYWNrKFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJh
Y2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhID0gbnVsbHB0ciwgR0Rlc3Ryb3lOb3RpZnkg
ZGVzdHJveU5vdGlmeUZ1bmN0aW9uID0gbnVsbHB0cikKICAgICAgICAgOiBpZCgrK2ZyYW1lRGlz
cGxheUNhbGxiYWNrSUQpCiAgICAgICAgICwgY2FsbGJhY2soY2FsbGJhY2spCkBAIC0yMjcsNiAr
MjI4LDcgQEAgc3RydWN0IEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sgewogI2VuZGlmIC8vIFBMQVRG
T1JNKFdQRSkKIAogc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CisgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIH5fV2ViS2l0V2ViVmlld1ByaXZhdGUoKQogICAg
IHsKICAgICAgICAgLy8gRm9yIG1vZGFsIGRpYWxvZ3MsIG1ha2Ugc3VyZSB0aGUgbWFpbiBsb29w
IGlzIHN0b3BwZWQgd2hlbiBmaW5hbGl6aW5nIHRoZSB3ZWJWaWV3LgpAQCAtMzI2LDYgKzMyOCw3
IEBAIHZvaWQgd2Via2l0V2ViVmlld0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogfQogCiBjbGFzcyBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgZmluYWwgOiBwdWJs
aWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQpAQCAtMzk5LDYgKzQwMiw3IEBAIGNs
YXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlciBmaW5hbCA6IHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpP
YnNlcnZlciB7CiAKICNpZiBQTEFURk9STShXUEUpCiBjbGFzcyBXZWJWaWV3Q2xpZW50IGZpbmFs
IDogcHVibGljIEFQSTo6Vmlld0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViVmlld0NsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQpAQCAtNzI1LDcgKzcyOSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAg
ICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJpdi0+Y29udGV4dC5nZXQo
KSwgd2ViVmlldywgcHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBwcml2LT5yZWxhdGVk
Vmlldyk7CiAKLSAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VM
b2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CisgICAgcHJpdi0+bG9hZE9ic2VydmVyID0gbWFr
ZVVuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOwogICAgIGdldFBhZ2Uod2Vi
VmlldykucGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpwcml2LT5sb2FkT2JzZXJ2ZXIpOwog
CiAgICAgLy8gVGhlIHJlbGF0ZWQgdmlldyBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGUgY29uc3Ry
dWN0aW9uLgpAQCAtNzQxLDcgKzc0NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25z
dHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdQRSkKLSAg
ICBwcml2LT52aWV3LT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJWaWV3Q2xpZW50Pih3
ZWJWaWV3KSk7CisgICAgcHJpdi0+dmlldy0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViVmlld0Ns
aWVudD4od2ViVmlldykpOwogI2VuZGlmCiAKICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGFmdGVy
IGF0dGFjaFVJQ2xpZW50VG9WaWV3KCkgYmVjYXVzZSBXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50
KCkgY2FsbHMgc2V0Q2FuUnVuTW9kYWwoKSB3aXRoIHRydWUuCkBAIC0zNzAxLDYgKzM3MDUsNyBA
QCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqCiB9CiAKIHN0cnVjdCBWaWV3U2F2ZUFzeW5jRGF0YSB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFJlZlB0cjxBUEk6OkRh
dGE+IHdlYkRhdGE7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGYwOWQ2
YzdlOTIwNjgzYTc1NjY1Mjc2OTY3ZTc0N2NjNmNlZWI0ODEuLjA2YjNiODM2MDY1ZDlmNjZhMDc5
OGEyMDk1NTEzY2E4NjhiMzFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC02NSw3ICs2NSw3IEBAIFBhZ2VDbGllbnRJ
bXBsOjpQYWdlQ2xpZW50SW1wbChHdGtXaWRnZXQqIHZpZXdXaWRnZXQpCiAvLyBQYWdlQ2xpZW50
J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJv
eHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRf
V0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCp3ZWJraXRXZWJWaWV3
QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSksIHByb2Nlc3Mp
OwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdl
YkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwCmluZGV4IDMxZTA5NzNmZTEwMDNjNmVh
NjUyMzA2MWE2N2M5NDlkNTNlYmQ2YjcuLjJkMWMyY2IzNjhhOTkzMzE2OTc0MjQ2YTBlZDU5OWMy
OGRjYWU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RW1vamlDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2ppU2VjdGlvbnMoV2ViS2l0RW1vamlDaG9vc2VyKiBj
aG9vc2VyLCBHdAogICAgICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIg
PSBudWxscHRyOwogICAgIH07CiAKLSAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25z
VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrVGltZXI+KFdURk1vdmUocG9wdWxhdGVT
ZWN0aW9ucykpOworICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9IG1h
a2VVbmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RGTW92ZShwb3B1bGF0ZVNlY3Rpb25zKSk7CiAgICAg
Y2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zZXRQcmlvcml0eShHX1BSSU9S
SVRZX0RFRkFVTFRfSURMRSk7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1Rp
bWVyLT5zZXROYW1lKCJbV2ViS2l0RW1vamlDaG9vc2VyXSBwb3B1bGF0ZSBzZWN0aW9ucyB0aW1l
ciIpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c3RhcnRSZXBl
YXRpbmcoeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cAppbmRleCAwZjY3NDg2NDUyY2QxZmE4N2E4Mjg2MmU3ZTYwNTczNGRmYzM1OTY4Li41YmE2MTBl
N2Q5YTQ0ZDA0NzM4MzgxZTIzZDA0MGJkYTkyYzNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJ
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFNjcmlwdE1lc3NhZ2VD
bGllbnQgZmluYWwgOiBwdWJsaWMgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2NyaXB0TWVzc2FnZUNs
aWVudChSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXImIGluc3BlY3RvclByb3RvY29sSGFu
ZGxlcikKICAgICAgICAgOiBtX2luc3BlY3RvclByb3RvY29sSGFuZGxlcihpbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIpCkBAIC0xMDUsMTMgKzEwNiwxMyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1
ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXNl
cl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1c2VyQ29udGVudE1hbmFnZXJS
ZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJDb250ZW50TWFuYWdlcik7CiAg
ICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGF1
dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJD
b250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVu
dD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3Js
ZCgpKTsKICAgICAgICAgd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVyKGhhbmRsZXIuZ2V0KCkpOwogICAgICAgICBnX29iamVjdF93ZWFrX3JlZihHX09CSkVDVCh1
c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVycHJldF9jYXN0PEdXZWFrTm90aWZ5Pih1c2VyQ29u
dGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlzKTsKICAgICB9CiAKICAgICBhdXRvKiBjbGllbnQg
PSBtX2luc3BlY3RvckNsaWVudHMuZW5zdXJlKHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgW3Ro
aXMsICZyZXF1ZXN0VVJMXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90
ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVz
dFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJl
cXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7CiAKICAgICBHU3RyaW5nKiBodG1sID0gZ19zdHJpbmdfbmV3KApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCmlu
ZGV4IDBmMDE3MTFlNzk2MWU4YjAwYzVlNTc0ZDI4ODUwZDA1YjI0MWY2ZWMuLjgwZDIwYWE3NjAz
YmFkYWI5MDBmZTRiZDE1OTBhYWQzOWIzMGUyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKQEAgLTI4NCw2ICsy
ODQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2luc3BlY3Rvcl9jbGFzc19pbml0KFdlYktp
dFdlYkluc3BlY3RvckNsYXNzKiBmaW5kQ2xhc3MpCiB9CiAKIGNsYXNzIFdlYktpdEluc3BlY3Rv
ckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJJbnNwZWN0b3JQcm94eUNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViS2l0SW5zcGVj
dG9yQ2xpZW50KFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yKQogICAgICAgICA6IG1faW5z
cGVjdG9yKGluc3BlY3RvcikKQEAgLTM2MCw3ICszNjEsNyBAQCBXZWJLaXRXZWJJbnNwZWN0b3Iq
IHdlYmtpdFdlYkluc3BlY3RvckNyZWF0ZShXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9y
KQogewogICAgIFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQ
RUNUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIE5VTEwpKTsKICAg
ICBpbnNwZWN0b3ItPnByaXYtPndlYkluc3BlY3RvciA9IHdlYkluc3BlY3RvcjsKLSAgICB3ZWJJ
bnNwZWN0b3ItPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluc3BlY3RvckNsaWVu
dD4oaW5zcGVjdG9yKSk7CisgICAgd2ViSW5zcGVjdG9yLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOwogICAgIHJldHVybiBpbnNwZWN0b3I7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKaW5kZXggMWI5ZGQ4ZDFmNDYwMjE0ZjVhNzcyNjcyYzJmYjY1MzcwYjUy
MGM1ZS4uODhiM2NmNDNiZmU2OGVlOTdjNzMxYjc2NGQ0NDk5MGE3YmZjNWE4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKQEAgLTU2Niw3ICs1NjYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlz
dCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS50YXJnZXRMaXN0KCkp
OwogCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVX
X0JBU0Uob2JqZWN0KS0+cHJpdjsKLSAgICBwcml2LT5wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlld1dpZGdldCk7CisgICAgcHJpdi0+cGFnZUNsaWVudCA9
IG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXdXaWRnZXQpOwogICAgIHByaXYtPmRpYWxv
ZyA9IG51bGxwdHI7CiB9CiAKQEAgLTEyMjAsNyArMTIyMCw3IEBAIEdlc3R1cmVDb250cm9sbGVy
JiB3ZWJraXRXZWJWaWV3QmFzZUdlc3R1cmVDb250cm9sbGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jh
c2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgcHJp
di0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlc3R1cmVDb250cm9sbGVy
PihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEdlc3R1cmVD
b250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOworICAgICAgICBwcml2LT5nZXN0dXJlQ29udHJvbGxl
ciA9IG1ha2VVbmlxdWU8R2VzdHVyZUNvbnRyb2xsZXI+KEdUS19XSURHRVQod2ViVmlld0Jhc2Up
LCBtYWtlVW5pcXVlPFRvdWNoR2VzdHVyZUNvbnRyb2xsZXI+KHdlYlZpZXdCYXNlKSk7CiAgICAg
cmV0dXJuICpwcml2LT5nZXN0dXJlQ29udHJvbGxlcjsKIH0KIApAQCAtMTUwMSw3ICsxNTAxLDcg
QEAgRHJhZ0FuZERyb3BIYW5kbGVyJiB3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxl
cihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAoIXByaXYtPmRyYWdBbmREcm9w
SGFuZGxlcikKLSAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOworICAgICAgICBwcml2
LT5kcmFnQW5kRHJvcEhhbmRsZXIgPSBtYWtlVW5pcXVlPERyYWdBbmREcm9wSGFuZGxlcj4oKnBy
aXYtPnBhZ2VQcm94eSk7CiAgICAgcmV0dXJuICpwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXI7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE3MTMsNyArMTcxMyw3IEBAIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYmtpdFdlYlZpZXdCYXNlCiAgICAgaWYgKHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxl
cikKICAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyLT5jb25uZWN0VG9Qcm9jZXNz
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpwcml2LT5wYWdl
UHJveHkpOworICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKICAgICAg
ICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyLT5zZXRTd2lwZUdlc3R1cmVFbmFibGVkKHBy
aXYtPmlzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZUVuYWJsZWQpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggMmNhYjJlMDUzODZk
NDJiMzcxZjQ0MDZhYjcxYTdmNjU5MzBmN2Q3Ny4uMTQ2MDNkNWFmZWJhZjZkZWUwMTE5Nzk1Nzcw
Mzg4MzQ5ZDRlN2IzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KQEAgLTg5NSw2ICs4OTUsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xp
ZW50CiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBjbGFz
cyBJY29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBs
aWNpdCBJY29uTG9hZGluZ0NsaWVudChXS1ZpZXcgKndrVmlldykKICAgICAgICAgICAgIDogbV93
a1ZpZXcod2tWaWV3KQpAQCAtOTMyLDcgKzkzMyw3IEBAIC0gKHZvaWQpbWF5YmVJbnN0YWxsSWNv
bkxvYWRpbmdDbGllbnQKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAog
ICAgIGlmIChbc2VsZiByZXNwb25kc1RvU2VsZWN0b3I6SWNvbkxvYWRpbmdDbGllbnQ6OmRlbGVn
YXRlU2VsZWN0b3IoKV0pCi0gICAgICAgIF9kYXRhLT5faW1wbC0+cGFnZSgpLnNldEljb25Mb2Fk
aW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHNlbGYpKTsKKyAg
ICAgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCkuc2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1
ZTxJY29uTG9hZGluZ0NsaWVudD4oc2VsZikpOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Jilwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4m
Jiljb25maWd1cmF0aW9uCkBAIC05NDQsNyArOTQ1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYKICAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKICAgICBfZGF0YSA9IFtbV0tW
aWV3RGF0YSBhbGxvY10gaW5pdF07Ci0gICAgX2RhdGEtPl9pbXBsID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBudWxscHRyLCBwcm9jZXNzUG9vbCwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgX2RhdGEtPl9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6
OldlYlZpZXdJbXBsPihzZWxmLCBudWxscHRyLCBwcm9jZXNzUG9vbCwgV1RGTW92ZShjb25maWd1
cmF0aW9uKSk7CiAKICAgICBbc2VsZiBtYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudF07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmgKaW5k
ZXggMjE5OTFmOGRhZjMxYjQxYjE1NjVmZmY5ODY1ZGU5OTM4ZmI4YTBkZi4uNjRjYTJmY2I1YTg1
MTI3ZjViNDE0NzFlY2U2ZWE4ZjQ0NmNlMDUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgVmll
dzsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBWaWV3Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5WaWV3Q2xpZW50KCkgPSBkZWZh
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVu
dEltcGwuY3BwCmluZGV4IDg1MTI5YTU0ODdjOWZmYmVkNTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMu
LmUyMDhhNWM1NWQ3NTg4NTczZGZmNDM2MDMzNzdlZjhkMTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVu
dEltcGwoV0tXUEU6OlZpZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fc2Ny
b2xsR2VzdHVyZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJv
bGxlcj4oKSkKKyAgICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTY3Jv
bGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKIHsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0
dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6Omhvc3RGaWxlRGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0Fy
ZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdl
KCksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJl
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0
dXJlQ29udHJvbGxlci5oCmluZGV4IDljOWY2ZTllM2IxOGI0MmY1M2Y3MmY4ZWI1NWE0ZTY3NTVk
YjQ3YTIuLjNmNjMyNTEyMWQ4MjhlMzU4YWQxNWI3NmM0ZDVjZGM0ODM3NWRjMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVD
b250cm9sbGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBTY3JvbGxHZXN0dXJlQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoKSA9IGRlZmF1bHQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCmluZGV4IGJlNTBmMTI3
NGU4YzFmYTQ5MTA5YWEyODU1YjhiYjQxNTcxNzA0NGYuLjEyZTMyZmFkNDAwMjhjNzdlNTcwMzA5
Mjg0OTg0NDBkMDMwY2UwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
UEVWaWV3LmNwcApAQCAtNDIsOCArNDIsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogbmFt
ZXNwYWNlIFdLV1BFIHsKIAogVmlldzo6VmlldyhzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFj
a2VuZCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgYmFzZUNvbmZpZ3VyYXRpb24pCi0g
ICAgOiBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Vmlld0NsaWVudD4oKSkKLSAgICAs
IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisg
ICAgOiBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6Vmlld0NsaWVudD4oKSkKKyAgICAsIG1fcGFn
ZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCiAgICAgLCBtX3NpemUg
eyA4MDAsIDYwMCB9CiAgICAgLCBtX3ZpZXdTdGF0ZUZsYWdzIHsgV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6V2luZG93SXNBY3RpdmUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzRm9jdXNlZCwg
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpJc0luV2luZG93IH0KICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQpAQCAtMTg0LDcgKzE4NCw3
IEBAIFZpZXc6On5WaWV3KCkKIHZvaWQgVmlldzo6c2V0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OlZpZXdDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBt
X2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpOworICAgICAgICBt
X2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAg
ICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKaW5kZXggZTFkYzg1N2ZmOTk1ZWQwY2U2
YTg1MzY1OWNjNWIxMzU2MWNiMzY2Yy4uYjRmMjdiNmQzNGUyNDJiYTU1MzVhYjViMmU0ZWNlNTMx
NWQwOWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9X
UEVRdFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BF
UXRWaWV3LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2Fk
Q2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQgZXZlbnQsCiAK
ICAgICBpZiAoc3RhdHVzU2V0KSB7CiAgICAgICAgIFdQRVF0Vmlld0xvYWRSZXF1ZXN0UHJpdmF0
ZSBsb2FkUmVxdWVzdFByaXZhdGUodmlldy0+dXJsKCksIGxvYWRTdGF0dXMsICIiKTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IHN0
ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVl
c3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUp
OwogICAgICAgICBRX0VNSVQgdmlldy0+bG9hZGluZ0NoYW5nZWQobG9hZFJlcXVlc3QuZ2V0KCkp
OwogICAgIH0KIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFdQRVF0Vmlldzo6bm90aWZ5TG9h
ZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0CiAg
ICAgICAgIGxvYWRTdGF0dXMgPSBXUEVRdFZpZXc6OkxvYWRTdGF0dXM6OkxvYWRGYWlsZWRTdGF0
dXM7CiAKICAgICBXUEVRdFZpZXdMb2FkUmVxdWVzdFByaXZhdGUgbG9hZFJlcXVlc3RQcml2YXRl
KFFVcmwoUVN0cmluZyhmYWlsaW5nVVJJKSksIGxvYWRTdGF0dXMsIGVycm9yLT5tZXNzYWdlKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRl
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0
ID0gbWFrZVVuaXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsK
ICAgICBRX0VNSVQgdmlldy0+bG9hZGluZ0NoYW5nZWQobG9hZFJlcXVlc3QuZ2V0KCkpOwogfQog
CkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIHZvaWQganNBc3luY1JlYWR5Q2FsbGJhY2soR09i
amVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIKICovCiB2b2lkIFdQ
RVF0Vmlldzo6cnVuSmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFFKU1Zh
bHVlJiBjYWxsYmFjaykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SmF2YXNjcmlwdENhbGxiYWNr
RGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4oY2Fs
bGJhY2ssIFFQb2ludGVyPFdQRVF0Vmlldz4odGhpcykpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxK
YXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gbWFrZVVuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJh
Y2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BFUXRWaWV3Pih0aGlzKSk7CiAgICAgd2Via2l0
X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KG1fd2ViVmlldy5nZXQoKSwgc2NyaXB0LnRvVXRmOCgp
LmNvbnN0RGF0YSgpLCBudWxscHRyLCBqc0FzeW5jUmVhZHlDYWxsYmFjaywgZGF0YS5yZWxlYXNl
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0
L1dQRVF0Vmlld0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9x
dC9XUEVRdFZpZXdCYWNrZW5kLmNwcAppbmRleCBhODUyNmNlZDAyMGY2MzQ0ZTcyZmJjYzNhYTQ0
OWMyZGQzYWJkMWY5Li4xM2ZkMzdhZWZmMmI2NTM1ZDU0ZjMxNGM0MTZlMWNiODY4ZTNlODI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRW
aWV3QmFja2VuZC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmll
d0JhY2tlbmQ+IFdQRVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZShjb25zdCBRU2l6ZUYmIHNpemUsIFEK
ICAgICBpZiAoIWVnbENvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxheSwg
ZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V1BFUXRW
aWV3QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxheSwgZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7
CiB9CiAKIFdQRVF0Vmlld0JhY2tlbmQ6OldQRVF0Vmlld0JhY2tlbmQoY29uc3QgUVNpemVGJiBz
aXplLCBFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgZWdsQ29udGV4dCwgUVBvaW50ZXI8
UU9wZW5HTENvbnRleHQ+IGNvbnRleHQsIFFQb2ludGVyPFdQRVF0Vmlldz4gdmlldykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCmluZGV4
IDQyMDhlOGYyMmUwYWE0ZWRkODViNTIyNTkwNGMyZGM0OTliMDVlOTYuLjk0OTM3YjAwMTk0NjI1
MzYyZjY0NGNhNzcwNTA4ZDBkYWE2NzQzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NM
QVNTIFVJVmlldzsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBcHBsaWNhdGlvblN0YXRl
VHJhY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFwcGxpY2F0aW9u
U3RhdGVUcmFja2VyKFVJVmlldyAqLCBTRUwgZGlkRW50ZXJCYWNrZ3JvdW5kU2VsZWN0b3IsIFNF
TCBkaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZFNlbGVjdG9yLCBT
RUwgd2lsbEVudGVyRm9yZWdyb3VuZFNlbGVjdG9yKTsKICAgICB+QXBwbGljYXRpb25TdGF0ZVRy
YWNrZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggZTMzNTQzYjdiZGExZDU5M2YzMDQ1
M2FlNGQ2OWJmMjVkZTc0MGNiZS4uYWI5ZDQ4NDNmZjc1MDM4OTIxNzM0YWNlMzQ0MWYxZDE1NzU4
MDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTczLDExICs3MywxMSBAQCBzdGF0aWMg
Y29uc3QgU2Vjb25kcyBkZWZhdWx0UGFnZUxvYWRUaW1lb3V0ID0gMzAwX3M7CiBzdGF0aWMgY29u
c3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSBkZWZh
dWx0UGFnZUxvYWRTdHJhdGVneSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBh
Z2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDsKIAogV2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9t
YXRpb25TZXNzaW9uKCkKLSAgICA6IG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkKKyAgICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRl
bmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZG9t
YWluRGlzcGF0Y2hlcihBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2JhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fZG9tYWluTm90aWZpZXIoc3RkOjptYWtlX3Vu
aXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZG9tYWluTm90aWZpZXIobWFrZVVuaXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRj
aGVyPihtX2Zyb250ZW5kUm91dGVyKSkKICAgICAsIG1fbG9hZFRpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJldlYkF1dG9tYXRpb25TZXNzaW9uOjpsb2FkVGltZXJGaXJlZCkKIHsKICNpZiBF
TkFCTEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA2YjA5YmFkYjhkMGNlYmFiZjJjNjlmNjAw
OWIxYmQxZDIzYzA5ZTU4Li41M2IzNzcwN2U4N2M1MWRjNGFlOWQ2MzliMWQ0ZjMyNjM4MDY4YjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
aApAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQm
JiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiB7CiAgICAgQ09N
UElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0
byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFt
ZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VV
bmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5h
dGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAg
ICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9u
Q2xpZW50LmgKaW5kZXggMTBhOGU0MjQxM2IyOWFmZmI2Mzc3ZDg0YTA5YmU1MTFiZDI1MWQ1Yy4u
ZGU0MGZjOGYzMTc2OTc1YjE1MmM0ZWZhYTQwMTU3Yzk0ZjJmYTlmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
CkBAIC0zNiw2ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXV0b21hdGlv
blNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
QXV0b21hdGlvblNlc3Npb25DbGllbnQoaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRp
bmdEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdE
ZWxlZ2F0ZS5oCmluZGV4IGIwMTFkZDNhNzIzOTczMjA1Y2M2ZGY0Y2M2NmE2NzkwNmMwMjliMGQu
LjA3NDM3OTA0ZjFlNDIzMGIzMTU4MmE5ZGY0MmMyM2MxNGQ2MDVhZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKQEAgLTM3
LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJY29uTG9hZGluZ0RlbGVn
YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBJY29uTG9hZGluZ0RlbGVnYXRlKFdLV2ViVmlldyAqKTsKICAgICB+SWNvbkxvYWRpbmdEZWxl
Z2F0ZSgpOwpAQCAtNDgsNiArNDksNyBAQCBjbGFzcyBJY29uTG9hZGluZ0RlbGVnYXRlIHsKIAog
cHJpdmF0ZToKICAgICBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25M
b2FkaW5nQ2xpZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgogICAgICAgICBleHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChJY29uTG9hZGluZ0RlbGVn
YXRlJik7CiAgICAgICAgIH5JY29uTG9hZGluZ0NsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0KaW5kZXggYTM0NGRm
ZjljZTBkNTM1Y2EzMGRiMmJlYjViY2JkN2MwZDc0Y2ZiNC4uMTYzZmI5NTJlZTBlYTliNzFhM2Q0
OWQzZGQ5N2NlMDA0M2NjNjhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCkBAIC00NCw3ICs0NCw3IEBAIEljb25Mb2Fk
aW5nRGVsZWdhdGU6On5JY29uTG9hZGluZ0RlbGVnYXRlKCkKIAogc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SWNvbkxvYWRpbmdDbGllbnQ+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmNyZWF0ZUljb25Mb2Fk
aW5nQ2xpZW50KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0Ns
aWVudD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50Pigq
dGhpcyk7CiB9CiAKIFJldGFpblB0cjxpZCA8X1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZT4gPiBJY29u
TG9hZGluZ0RlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBhNTFhMjIzNjIzODQxNTFhYjExZDQ4OTQzNjlmOGExODU4
MDA2N2RhLi5mNTEzN2Y5Y2M3MzE2Mzg4ZTYxZGUxMDc3M2ZmMzQyODU2MjUwNTk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTc4LDEzICs3OCwx
MyBAQCBVSURlbGVnYXRlOjp+VUlEZWxlZ2F0ZSgpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4gVUlEZWxlZ2F0ZTo6Y3Jl
YXRlQ29udGV4dE1lbnVDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENv
bnRleHRNZW51Q2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGV4dE1l
bnVDbGllbnQ+KCp0aGlzKTsKIH0KICNlbmRpZgogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNs
aWVudD4gVUlEZWxlZ2F0ZTo6Y3JlYXRlVUlDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFVJQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VUlDbGll
bnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxXS1VJRGVsZWdhdGU+ID4gVUlEZWxlZ2F0
ZTo6ZGVsZWdhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCA0OGMyYjJiNGUw
NjEwNjkyNzJhZWI4Yjk0YTIzNGVhYTkyNmFmNzZkLi45MWNmOTQ4MGM3NTE4Y2Q5YmIxN2U5ZmNh
NGU5MTZkMGIwNzNiMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcApAQCAtNDUsNiAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBj
bGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpTb3VyY2VQcm94eSA6IHB1YmxpYyBS
ZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciwgcHVibGljIFNoYXJlZFJpbmdCdWZmZXJTdG9y
YWdlOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFNvdXJjZVByb3h5KHVpbnQ2NF90IGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24sIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSkKICAgICAgICAgOiBtX2lkKGlk
KQpAQCAtMTY4LDcgKzE2OSw3IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6
Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpCiAgICAgICAgIHNv
dXJjZS0+c2V0SXNSZW1vdGUodHJ1ZSk7CiAgICAgICAgIHNldHRpbmdzID0gc291cmNlLT5zZXR0
aW5ncygpOwogICAgICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZCkpOwotICAgICAg
ICBtX3Byb3hpZXMuYWRkKGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKm1f
cHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc291cmNlKSkpOworICAgICAgICBtX3Byb3hp
ZXMuYWRkKGlkLCBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKm1fcHJvY2Vzcy5jb25uZWN0
aW9uKCksIFdURk1vdmUoc291cmNlKSkpOwogICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29u
c3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdlKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdWNjZWVkZWQsIGludmFsaWRDb25zdHJhaW50cywgV1RGTW92ZShzZXR0
aW5ncykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oCmluZGV4IDljYTZmYTM1MzQ5NjAxODAzZGY1
ZDNkMWIyYWJhMzE2NTU3NDBjMzkuLjliZGRiOTkwOWRmN2U4ZmVmMWU1NDgwNmNiZTZiYzVjNDBj
ZmM1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3Mg
U2hhcmVkTWVtb3J5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBjbGFzcyBVc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eShXZWJQcm9jZXNzUHJveHkmKTsKICAgICB+VXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggMzA3MGQ1NzQ0M2ZkZjcxOTYwODYwMzBl
M2U2MzE0MWUwNjc4NTgyNi4uZTVlMzJkMmZhMmEwODYwNDE3YzZjZjgwZDdiY2U1OWI5YTczOWFl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplKCkKICAgICBpZiAoIVtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxl
ciJdKQogICAgICAgICBpbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7CiAKLSAgICBzZXRM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpOworICAgIHNldExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudD4oKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTE0LDcgKzUxNCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0RGlzcGxheUxpbmsoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCB1bnNpZ25lZCBvYnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9Ci0gICAgYXV0byBkaXNwbGF5TGluayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxh
eUxpbms+KGRpc3BsYXlJRCk7CisgICAgYXV0byBkaXNwbGF5TGluayA9IG1ha2VVbmlxdWU8RGlz
cGxheUxpbms+KGRpc3BsYXlJRCk7CiAgICAgZGlzcGxheUxpbmstPmFkZE9ic2VydmVyKGNvbm5l
Y3Rpb24sIG9ic2VydmVySUQpOwogICAgIG1fZGlzcGxheUxpbmtzLmFwcGVuZChXVEZNb3ZlKGRp
c3BsYXlMaW5rKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDVjMjFjYTc1YTE4MjljNTBmMWQ4MmY1Nzc3
OGI0ZTg2ZTY5ZDcwZWEuLmIxZWM4NDZiN2I0NjA1NDhjZTBmODZkN2E1ZDExN2E2NzY3OGM0ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBy
b2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCkK
ICAgICBhdXRvIGJhY2tncm91bmRBY3Rpdml0eVRpbWVvdXRIYW5kbGVyID0gW2FjdGl2aXR5VG9r
ZW4gPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpXSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgLSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRl
ZCgpIC0gbGFtYmRhLCBiYWNrZ3JvdW5kIGFjdGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdl
dCgpKTsKICAgICB9OwotICAgIG1fdW5leHBlY3RlZEFjdGl2aXR5VGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXI+KFdURk1vdmUoYmFja2dyb3Vu
ZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1bmV4cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7Cisg
ICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1lciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RGVmZXJy
YWJsZU9uZVNob3RUaW1lcj4oV1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxl
ciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0aW9uKTsKICAgICBjb21wbGV0aW9uKCk7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggY2FiMDU1MDlmYjZkMDJiYjQzZTg4ZDhkNjU0ODlmZmI3MjJmZTgwMi4uOGRmNGRhN2IzMjA4
MDk0NmRmNzFjOTI4MjE2NTNmNmVhOTQwNzU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEzMTUsNyArMTMxNSw3IEBAIHN0YXRpYyBOU1Ry
YWNraW5nQXJlYU9wdGlvbnMgdHJhY2tpbmdBcmVhT3B0aW9ucygpCiAKIFdlYlZpZXdJbXBsOjpX
ZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBsRGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcg
Km91dGVyV2ViVmlldywgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogICAgIDogbV92aWV3KHZpZXcpCi0gICAg
LCBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlldywgb3V0
ZXJXZWJWaWV3KSkKKyAgICAsIG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBs
Pih2aWV3LCBvdXRlcldlYlZpZXcpKQogICAgICwgbV9wYWdlKHByb2Nlc3NQb29sLmNyZWF0ZVdl
YlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpCiAgICAgLCBtX25l
ZWRzVmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcyhtX3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1
Z2luc0VuYWJsZWQoKSkKICAgICAsIG1faW50cmluc2ljQ29udGVudFNpemUoQ0dTaXplTWFrZShO
U1ZpZXdOb0ludHJpbnNpY01ldHJpYywgTlNWaWV3Tm9JbnRyaW5zaWNNZXRyaWMpKQpAQCAtMTM1
Myw3ICsxMzUzLDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0lt
cGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWIKICAgICB2aWV3LmxheWVyQ29u
dGVudHNQbGFjZW1lbnQgPSBOU1ZpZXdMYXllckNvbnRlbnRzUGxhY2VtZW50VG9wTGVmdDsKIAog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KHZpZXcpKTsKKyAg
ICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3Jl
ZW5DbGllbnQ+KHZpZXcpKTsKICNlbmRpZgogCiAgICAgV2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3Rp
Y3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMTcxMSw5ICsxNzExLDkgQEAgQ0dTaXplIFdlYlZpZXdJ
bXBsOjpmaXhlZExheW91dFNpemUoKSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJh
d2luZ0FyZWFQcm94eT4gV2ViVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzKQogewogICAgIGlmIChbW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OkAiV2ViS2l0MlVzZVJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhIl0gYm9vbFZhbHVlXSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4obV9w
YWdlLCBwcm9jZXNzKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9j
ZXNzKTsKIH0KIAogYm9vbCBXZWJWaWV3SW1wbDo6aXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nKCkg
Y29uc3QKQEAgLTMzNTYsNyArMzM1Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByZWZlcmVuY2Vz
RGlkQ2hhbmdlKCkKIHZvaWQgV2ViVmlld0ltcGw6OnNldFRleHRJbmRpY2F0b3IoV2ViQ29yZTo6
VGV4dEluZGljYXRvciYgdGV4dEluZGljYXRvciwgV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRv
d0xpZmV0aW1lIGxpZmV0aW1lKQogewogICAgIGlmICghbV90ZXh0SW5kaWNhdG9yV2luZG93KQot
ICAgICAgICBtX3RleHRJbmRpY2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JXaW5kb3c+KG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSk7CisgICAgICAg
IG1fdGV4dEluZGljYXRvcldpbmRvdyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRv
cldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxlYXNlZCgpKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91
bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyA9IFtbbV92aWV3IHdpbmRvd10gY29udmVydFJl
Y3RUb1NjcmVlbjpbbV92aWV3IGNvbnZlcnRSZWN0OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5n
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIHRvVmlldzpuaWxdXTsKICAgICBtX3RleHRJbmRp
Y2F0b3JXaW5kb3ctPnNldFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvciwgTlNSZWN0VG9DR1Jl
Y3QodGV4dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMpLCBsaWZldGltZSk7CkBAIC00
MzU4LDcgKzQzNTgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzYXZlQmFja0ZvcndhcmRTbmFwc2hv
dEZvckl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIFZpZXdHZXN0dXJlQ29udHJv
bGxlciYgV2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1cmVDb250cm9sbGVyKCkKIHsKICAgICBpZiAo
IW1fZ2VzdHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIG1fZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4obV9wYWdlKTsKKyAgICAgICAgbV9n
ZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3Bh
Z2UpOwogICAgIHJldHVybiAqbV9nZXN0dXJlQ29udHJvbGxlcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcApp
bmRleCA4ZWFjZDkxYTFlNmFlNDg1NjVjOWU1OGNjZGExMGYzZWE0NDRjMjc2Li42MjY0ZGRiN2Y3
OTBjMmZjY2NkZjQxMGRmNmUyYzkzMzdiNjVkMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMjQwLDcg
KzI0MCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29y
cG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8mIHVwCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbV9iYWNraW5nU3RvcmUpCi0gICAgICAgIG1fYmFja2luZ1N0b3JlID0gc3RkOjptYWtl
X3VuaXF1ZTxCYWNraW5nU3RvcmU+KHVwZGF0ZUluZm8udmlld1NpemUsIHVwZGF0ZUluZm8uZGV2
aWNlU2NhbGVGYWN0b3IsIG1fd2ViUGFnZVByb3h5KTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUg
PSBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5m
by5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOwogCiAgICAgbV9iYWNraW5nU3Rv
cmUtPmluY29ycG9yYXRlVXBkYXRlKHVwZGF0ZUluZm8pOwogCkBAIC00NDIsNyArNDQyLDcgQEAg
dm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6ZGlzcGF0Y2hBZnRlckVu
c3VyaW5nRHJhd2luZyhXVEY6OkZ1bmMKICAgICB9CiAKICAgICBpZiAoIW1fZHJhd2luZ01vbml0
b3IpCi0gICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJv
eHkpOworICAgICAgICBtX2RyYXdpbmdNb25pdG9yID0gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJhd2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsK
ICAgICBtX2RyYXdpbmdNb25pdG9yLT5zdGFydChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UuY3BwCmluZGV4IGEyZDAzODZhY2Y1ZDhhZDUzNWM3OTEyYTg4NmNiZDBmMDA1NDc4Njgu
LjZhYTI0N2JkODc3MDIxNTg4MjQ3MTZhNjY1ZWUxYjc4Njk2YTZhNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTE3
OCw3ICsxNzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhh
c2hTYWx0Rm9yT3JpZ2luPiBEZXZpY2VJZEhhc2hTYWx0U3RvcgogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGhhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3Vu
aXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUo
KSksIFdURk1vdmUocGFyZW50U2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRl
dmljZUlkSGFzaFNhbHQpKTsKKyAgICBhdXRvIGhhc2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1
ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSks
IFdURk1vdmUocGFyZW50U2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRldmlj
ZUlkSGFzaFNhbHQpKTsKIAogICAgIGhhc2hTYWx0Rm9yT3JpZ2luLT5sYXN0VGltZVVzZWQgPSBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFzdFRpbWVVc2VkKTsKIApAQCAtMjE5LDcgKzIxOSw3
IEBAIHZvaWQgRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2Fs
dEZvck9yaWdpbkNhbGwoU2VjdXJpdHlPcmlnCiAKICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFz
aFNhbHQgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBuZXdIYXNoU2FsdEZv
ck9yaWdpbiA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoZG9j
dW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHBhcmVudE9yaWdpbiksIFdURk1vdmUoZGV2aWNlSWRIYXNo
U2FsdCkpOworICAgICAgICBhdXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1ZTxI
YXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50
T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CiAKICAgICAgICAgcmV0dXJuIG5l
d0hhc2hTYWx0Rm9yT3JpZ2luOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcApp
bmRleCA2M2E0OWI1NjdkYjhkYTUzZjU3OTlhNTAzNDRmMzEyNTFmNWU5Njg0Li5kYzVhZGYxYTNl
NGI5NGFhMDE0YjQzMGVmYTY2ZGUwOWY5NWNhN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCkBAIC04OCwxMSAr
ODgsMTEgQEAgRG93bmxvYWRQcm94eSYgRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQ
cm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wKIAogICAgIGlmIChtX2Rvd25sb2Fkcy5z
aXplKCkgPT0gMSAmJiBtX3Nob3VsZFRha2VBc3NlcnRpb24pIHsKICAgICAgICAgQVNTRVJUKCFt
X2Rvd25sb2FkVUlBc3NlcnRpb24pOwotICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwg
IldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5n
KTsKKyAgICAgICAgbV9kb3dubG9hZFVJQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNz
ZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAKICAgICAgICAgQVNTRVJUKCFtX2Rv
d25sb2FkTmV0d29ya2luZ0Fzc2VydGlvbik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJv
Y2Vzcyk7Ci0gICAgICAgIG1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
ICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2lu
Zyk7CisgICAgICAgIG1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQ
cm9jZXNzQXNzZXJ0aW9uPihtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQg
ZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAKICAg
ICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nlc3MgdG9vayAnV2Vi
S2l0IGRvd25sb2FkcycgYXNzZXJ0aW9ucyBmb3IgVUlQcm9jZXNzIGFuZCBOZXR3b3JrUHJvY2Vz
cyIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApp
bmRleCAzZGVmNWQ3OWYwN2NiOTE0MGI4MjU2MmRiOWY2ZjJiYzZkMGY3MmY2Li41NjA2YzUxMTY1
MzRmNDNjZmM4MDZkNTExZDQxZWQ5OGNmYjI1MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eSA6IHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJvdGVjdGVkIElQQzo6TWVzc2FnZVNlbmRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RHJhd2luZ0FyZWFQcm94eSk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZWNhYWMzMDFiNGJk
ZjQ2ZjJjODljZGRlNzFkMTkzMjU0NTE0ZjY0MC4uZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIyM2Q1
NGI5ODJhZWNmZDEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBh
ZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2Ft
ZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBVSUdhbWVw
YWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5lY3RlZEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxQbGF0
Zm9ybUdhbWVwYWQKICAgICBmb3IgKGF1dG8qIGdhbWVwYWQgOiBpbml0aWFsR2FtZXBhZHMpIHsK
ICAgICAgICAgaWYgKCFnYW1lcGFkKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1f
Z2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFVJR2FtZXBhZD4o
KmdhbWVwYWQpOworICAgICAgICBtX2dhbWVwYWRzW2dhbWVwYWQtPmluZGV4KCldID0gbWFrZVVu
aXF1ZTxVSUdhbWVwYWQ+KCpnYW1lcGFkKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHBvb2wg
OiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMpCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBV
SUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBh
ZCYgZ2FtZXBhZCkKICAgICAgICAgbV9nYW1lcGFkcy5ncm93KGdhbWVwYWQuaW5kZXgoKSArIDEp
OwogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRzW2dhbWVwYWQuaW5kZXgoKV0pOwotICAgIG1fZ2Ft
ZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPihnYW1l
cGFkKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWQuaW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2Ft
ZXBhZD4oZ2FtZXBhZCk7CiAKICAgICBzY2hlZHVsZUdhbWVwYWRTdGF0ZVN5bmMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NV
c2FnZVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdy
YXBoaWNzVXNhZ2VTYW1wbGVyLmgKaW5kZXggN2Q1NmIwYTI0NjNkZWRmMTY2OTU4YzI4ZmZiNzVh
YTBlMmNlNTFmMS4uZTZiYzBhNDUwNTY1ZWUyZWZhMWJkMDVhMmE3NTYxMTFhMTVkOThjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NV
c2FnZVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFu
Y2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKIGNsYXNzIEhpZ2hQZXJmb3JtYW5jZUdyYXBo
aWNzVXNhZ2VTYW1wbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihXZWJQcm9j
ZXNzUG9vbCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5NGZhZjZiOWRlMjYyMDFkODRkMjZmZjgz
OTMzZjgyMjljMDVkNmI5Li4yNzdjYTA0NGU0MDdiMDdiYzRhZjU4ZjIyMjE3Y2I2YjY4NDI4YWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQoYm9vbCBiYWNrZ3JvdW5kKQogRG93bmxv
YWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBpZiAoIW1fZG93bmxvYWRQ
cm94eU1hcCkKLSAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxE
b3dubG9hZFByb3h5TWFwPigqdGhpcyk7CisgICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IG1h
a2VVbmlxdWU8RG93bmxvYWRQcm94eU1hcD4oKnRoaXMpOwogCiAgICAgcmV0dXJuIG1fZG93bmxv
YWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJl
cXVlc3QpOwogfQpAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UK
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGFrZVVwbG9hZEFzc2VydGlvbigpCiB7CiAgICAg
QVNTRVJUKCFtX3VwbG9hZEFzc2VydGlvbik7Ci0gICAgbV91cGxvYWRBc3NlcnRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJL
aXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAg
IG1fdXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNz
SWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhclVwbG9h
ZEFzc2VydGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDQzMzU0NWMwZTMzZmFhZWVkOWRlYmIzNGY2YjIw
Y2ZjYWU1ZTk1YzguLjU5NWIzZWU0MTVjZGY3MDQ2MDljNTM2YzkwYWJhMjU5NzE3ZDQ2N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCkBAIC03MCw2ICs3MCw3IEBAIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5Owogc3RydWN0IFdlYnNpdGVEYXRhOwogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc1Byb3h5
IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHJpdmF0ZSBQcm9jZXNzVGhy
b3R0bGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlZ2lz
dHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgVG9w
RnJhbWVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCAyYWFmZjFlYzJhNjU0OTBkODg1NDM5OTZi
ZjgxMDJjMmQ0OWM1MDQyLi40N2EzZTliMjNiYTEyNjUxOThiNjBlZGRmNmM0ZGQ5ODZmY2QyMDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC01NiwxNCAr
NTYsMTQgQEAgUmVmPFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4gV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1AKIAogV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nl
c3NQb29sKQogICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBt
X3Byb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKSkK
KyAgICAsIG1fcHJvdmlkZXIobWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigp
KQogewogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7
CiAgICAgaWYgKCFwcm92aWRlcikgewotICAgICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtX3Byb3ZpZGVyID0g
bWFrZVVuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggZWM2NGJjOWUx
NjJjYjdjYTFlNzUzN2U5MzMxZDRmMTM5NTg3ZWM0MS4uNmNmNWUxNGVhNTY5ZjIzZGE4NDc1NDA5
NmNhNTExNDUzYzI5OGI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MTY4LDYgKzE2OCw3IEBAIHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90Owog
I2VuZGlmCiAKIGNsYXNzIFBhZ2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZUNs
aWVudD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgflBhZ2VDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCmluZGV4IDAxYTdkYTdiODkx
YTkwMDY2YzkwZTg0MjljNjU2YmQ3MDBiMTY2YmQuLmVhNDM5MjdkNDhkNzUyYmViNjcyODA5NDk5
YzlhZDBiZmUwN2JjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFj
dGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xh
c3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKIGNsYXNzIFBlckFjdGl2
aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoV2Vi
UHJvY2Vzc1Bvb2wmKTsKICAgICB+UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblBy
b2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGY2ZjQ3OWIxZTAzOTJmMzIyMTYwYTY0
OTRhZWM2MmUwYTA2Nzk2ZGQuLjg0MzY5ZDMzNDQwN2NmYmMyZTgzYWE4MjdjNWNjMGU1ZGI5MTIy
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGEKICNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgYm9vbCBwbHVn
aW5SZXF1aXJlc0d0azIoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihwbHVnaW5Q
YXRoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlPiBtb2R1bGUgPSBtYWtlVW5pcXVlPE1v
ZHVsZT4ocGx1Z2luUGF0aCk7CiAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiBtb2R1bGUtPmZ1bmN0aW9uUG9pbnRlcjxncG9pbnRlcj4o
Imd0a19vYmplY3RfZ2V0X3R5cGUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vz
c1Rocm90dGxlci5jcHAKaW5kZXggMDBhOTkxODg2MTQ4NzM5MzhhNmNiNGFiZDk5MTRiYzg2Mjk0
NWNmNy4uNGNlMjYyZTlkY2JiNGIxYjBmZjBhZDVkYjk3ZWI5N2YzNjA3Mzc1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKQEAgLTEwMyw5ICsxMDMs
OSBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RUb1Byb2Nlc3MoUHJvY2Vzc0lE
IHBpZCkKIAogICAgIG1fc3VzcGVuZFRpbWVyLnN0b3AoKTsKICAgICBpZiAobV9zaG91bGRUYWtl
VUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKQotICAgICAgICBtX2Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5
Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVl
PFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywg
YXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2Fzc2VydGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0
eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CisgICAgICAgIG1fYXNzZXJ0aW9uID0gbWFrZVVuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3Nl
cnRpb25TdGF0ZSgpKTsKICAgICBtX3Byb2Nlc3MuZGlkU2V0QXNzZXJ0aW9uU3RhdGUoYXNzZXJ0
aW9uU3RhdGUoKSk7CiAgICAgbV9hc3NlcnRpb24tPnNldENsaWVudCgqdGhpcyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDYwZjAy
YzYxMGZjZDk4ODMwNjM5YzU3YjNlOWQ2MWZmMWZkNTI1ZmQuLjI3NGFiZDMwMjljMDA3NzMzOWRm
ZTM3NDhmZjMwNjk3YzliNDhiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMDcsNyArMTA3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcykKICAgICA6IERyYXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlUmVt
b3RlTGF5ZXJUcmVlLCB3ZWJQYWdlUHJveHksIHByb2Nlc3MpCi0gICAgLCBtX3JlbW90ZUxheWVy
VHJlZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcykpCisg
ICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3QobWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0
PigqdGhpcykpCiB7CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBwb29sIHN1cmZhY2VzIGluIHRoZSBVSSBwcm9jZXNzLgpAQCAtMzc2LDcgKzM3Niw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6dXBkYXRlRGVidWdJbmRpY2F0b3Io
SW50U2l6ZSBjb250ZW50c1NpemUsCiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKCkKIHsKLSAgICBtX2RlYnVnSW5kaWNhdG9y
TGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRo
aXMpOworICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gbWFrZVVuaXF1ZTxSZW1v
dGVMYXllclRyZWVIb3N0PigqdGhpcyk7CiAgICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhv
c3QtPnNldElzRGVidWdMYXllclRyZWVIb3N0KHRydWUpOwogCiAgICAgbV90aWxlTWFwSG9zdExh
eWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW0KaW5kZXggMzAwMjVkNDI5OWYzYmNhMDQ4NWQzMDRkODMzNTgxNzYxMGJhNTBiZC4u
OGE0ZTUwNDgxN2ViYzEyNWNlODk4YzFjMjkxZDlhNmU0ZDVmNTgyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3Qu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZUhvc3QubW0KQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZUhv
c3Q6OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNy
ZQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhv
c3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0
aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykKIHsKICAgICBhdXRvIG1ha2VXaXRoTGF5ZXIgPSBb
Jl0gKFJldGFpblB0cjxDQUxheWVyPiBsYXllcikgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUo
bGF5ZXIpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4o
cHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CiAgICAgfTsKICAgICBhdXRvIG1h
a2VBZG9wdGluZ0xheWVyID0gWyZdIChDQUxheWVyKiBsYXllcikgewogICAgICAgICByZXR1cm4g
bWFrZVdpdGhMYXllcihhZG9wdE5TKGxheWVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1t
CmluZGV4IGU4OGJiYzYwOGQ0ZmIwNTgzODRkMjliMjY5ODE1OTJlZGE4MTRlYmEuLjRmZDRlYTI2
OWU4Y2MxYmRmZmIyZWIyNTk3ZDRmNzUwZDg0MjQwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVO
b2RlLm1tCkBAIC03Myw3ICs3Myw3IEBAIFJlbW90ZUxheWVyVHJlZU5vZGU6On5SZW1vdGVMYXll
clRyZWVOb2RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVM
YXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCkKIHsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbGF5
ZXIgPSBhZG9wdE5TKFtbV0tQbGFpblJlbW90ZUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92
ZShsYXllcikpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KGxh
eWVySUQsIFdURk1vdmUobGF5ZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVOb2RlOjpk
ZXRhY2hGcm9tUGFyZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVT
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaAppbmRleCBjMjc4MWRjOGFkYTM0MzM5Zjc5ZWQ4NWE3
ZTNlOWZmNzY1MjIyNTI4Li4yOWRmZWZlNmNiNzJjMTIwYTYxY2MyMmQwZDNiYTY0YTZkOTQ0MjYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YS5oCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTsKIAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVl
U2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSYpOwogICAgIH5SZW1vdGVMYXllclRyZWVTY3Jv
bGxpbmdQZXJmb3JtYW5jZURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcm94eS5oCmluZGV4IDg2ZDBkZWZjNjk2NWU0ZmE2YmExMTY0NzYxYmM5YWM3MTk4
YzcyZTYuLjFhNzY5NDNmMjQ1YmUxY2Q4MjJmMTk2MTNjZGQzNWY1NDBhOTRjZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApAQCAtNDksNiArNDks
NyBAQCBjbGFzcyBSZW1vdGVTY3JvbGxpbmdUcmVlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBj
bGFzcyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRy
ZWVIb3N0SU9TLm1tCmluZGV4IDYyOWE5YzY1MGQ0M2MwZDU2MWM4MTkzM2JhMGQxNGU4ZDMzZWE0
NDQuLjBjMTI2YWU2YWY3NWU0MTM4YWZkMDA4NjgzOTU2NjI5ZmY3MDAyMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJU
cmVlSG9zdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGlj
IFJldGFpblB0cjxVSVZpZXc+IGNyZWF0ZVJlbW90ZVZpZXcocGlkX3QgcGlkLCB1aW50MzJfdCBj
b250ZXh0SUQpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5
ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okxh
eWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIGF1dG8gbWFrZVdpdGhW
aWV3ID0gWyZdIChSZXRhaW5QdHI8VUlWaWV3PiB2aWV3KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RG
TW92ZSh2aWV3KSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5v
ZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZSh2aWV3KSk7CiAgICAgfTsKICAgICBhdXRv
IG1ha2VBZG9wdGluZ1ZpZXcgPSBbJl0gKFVJVmlldyogdmlldykgewogICAgICAgICByZXR1cm4g
bWFrZVdpdGhWaWV3KGFkb3B0TlModmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlUmVtb3RlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCmluZGV4IDgx
YTJlYjlhNjM1ZDU5ODQxNjAwZjc4MzUyMDRhYzg0YmQ2ZDVjMjguLmI4OTA2ODFlOWU3YTUxM2Jh
MzQzNjdjZWYzOTg5YmUzYjE5ZDljYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KQEAgLTY3LDcg
KzY3LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFMKIAogICAgIGlmIChzdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFp
bmVyTGF5ZXIpKSB7CiAgICAgICAgIGlmIChzY3JvbGxDb250YWluZXJMYXllcigpKQotICAgICAg
ICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2Ny
b2xsaW5nTm9kZURlbGVnYXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TPigqdGhpcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fc2Nyb2xs
aW5nTm9kZURlbGVnYXRlID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KaW5kZXggYjU2
ZTJlYTY0ZGE1MjAzMWRmYWYxMjhlYzI0OGNkMTVjNzEwMDkyNi4uZDBiZGQzYzU3ZGJiY2JlZjA3
MGU4NTFhZmUwNGVlZTZhYWI1N2Q5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQpAQCAtNDMsNyArNDMsNyBA
QCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUz4gU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUwogCiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCBu
b2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHNjcm9sbGlu
Z1RyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpKQorICAg
ICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUobWFrZVVuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKaW5kZXggNjQ4
OWE4ZTc0NDJkN2IxNzA1Mjk1YjYyZWViNWMwMjVjN2E5YjMzYS4uZTYzN2Q2MTUzMjVkMzgwY2U5
MmQwN2EyYjEyMTkxM2ZmMTgxZGQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKQEAgLTQ4LDYgKzQ4LDcgQEAg
Y2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyA6IHB1YmxpYyBXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJik7
CiAgICAgflNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IDMyYTFlMzNhYTg1NjdjMGI2MTYyZTA2NzgzY2YzNzZj
ZjYxOTA3ZTIuLjIzM2ZmZDAyMWU2MzhiZjE4OGY4ZGNhYmQ3NzljNzQ1Mjk0MzcyOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyhTY3JvbGxpbmdUcmVlJiB0cmVlLCBT
Y3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWModHJlZSwgbm9kZVR5cGUsIG5vZGVJ
RCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWlyTWFj
PigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFpck1h
Yz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1v
dGVNYWMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAppbmRleCBkODk2
MGNlYzMwZTQzMzE5YWEwMjdkOWEyMWZjZWZjODM3NjM1MDQzLi5iNmNhM2NiYmE4MDgwN2FmN2I5
ZjY5OWJlOWIxYjJhYTljZGMxYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVS
ZW1vdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1v
dGVNYWM+IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ04KIAogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZVJlbW90ZU1hYyhTY3JvbGxpbmdUcmVlJiB0cmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9k
ZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBu
b2RlSUQpCi0gICAgLCBtX3Njcm9sbGVyUGFpcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGVyUGFp
ck1hYz4oKnRoaXMpKQorICAgICwgbV9zY3JvbGxlclBhaXIobWFrZVVuaXF1ZTxTY3JvbGxlclBh
aXJNYWM+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5
c3RlbVByZXZpZXdDb250cm9sbGVyLmgKaW5kZXggZjI2MWY1MjY4MTUyZDBmZGRiNjg1NTFhODYw
MTUyZTQxNjdkMGFlYy4uMmI5MGUxYjg5YzBhYTVlZWVhZjA1NGRlNDI4ZGVlZDQwZTYzYThiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVBy
b3h5OwogCiBjbGFzcyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIoV2ViUGFnZVByb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmluZGV4
IGY1MDVlMjgwYzQ0MjkwYTgwM2RiZGI2OGM5OGVlYTYzMGIxYzliYjYuLjg2OGI1NGU3OTJhZjJh
YmQ5ODZiYzg2NjAwNWNiMTJmNDU2ODI0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eQogICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgogeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOwogICAgIH5Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2Uu
bW0KaW5kZXggOWVhZTE4ZWRkNWY0ZDJkYzVkZjM4ZTk2ZDA1MDUwOTNiY2E5YjM5OC4uYWJkMGU3
ZTcyOTQ3OTEyOGNiNmFmZmY3ZjIxODEyNjNlNGRhOTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2
aWNlLm1tCkBAIC05Miw3ICs5Miw3IEBAIFVuaXF1ZVJlZjxIaWRDb25uZWN0aW9uPiBIaWRTZXJ2
aWNlOjpjcmVhdGVIaWRDb25uZWN0aW9uKElPSElERGV2aWNlUmVmIGRldmljZSkKIAogdm9pZCBI
aWRTZXJ2aWNlOjpkZXZpY2VBZGRlZChJT0hJRERldmljZVJlZiBkZXZpY2UpCiB7Ci0gICAgYXV0
byBkcml2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN0YXBIaWREcml2ZXI+KGNyZWF0ZUhpZENvbm5l
Y3Rpb24oZGV2aWNlKSk7CisgICAgYXV0byBkcml2ZXIgPSBtYWtlVW5pcXVlPEN0YXBIaWREcml2
ZXI+KGNyZWF0ZUhpZENvbm5lY3Rpb24oZGV2aWNlKSk7CiAgICAgLy8gR2V0IGF1dGhlbnRpY2F0
b3IgaW5mbyBmcm9tIHRoZSBkZXZpY2UuCiAgICAgZHJpdmVyLT50cmFuc2FjdChlbmNvZGVFbXB0
eUF1dGhlbnRpY2F0b3JSZXF1ZXN0KEN0YXBSZXF1ZXN0Q29tbWFuZDo6a0F1dGhlbnRpY2F0b3JH
ZXRJbmZvKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwdHIgPSBkcml2ZXIuZ2V0
KCldKFZlY3Rvcjx1aW50OF90PiYmIHJlc3BvbnNlKSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHkuaAppbmRleCA4NWNlNjkwNjExMTQ0MmJjNjc5Y2M3YTc3NWI4NjgyZGQxNTcyOGM5
Li5mODUyYmVkMjEzMGI0N2MyZjdkZDI5OGFkMzU2YWVhYzg3YzAyNjg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKQEAgLTQ0LDYgKzQ0
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkpOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IDk5ZDZlYTMzNDE1M2VjZjQ5ZDQ1ODRjNzQzZGM2ODE2ODg0MTU1MjAu
Ljg0NmE1YWEyN2RmYWIzZDI3NGNmZmE0ODczODYxZjI1ODdkMTdmZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29s
KiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQot
ICAgICwgbV9wcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRl
cj4oKSkKKyAgICAsIG1fcHJvdmlkZXIobWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlk
ZXI+KCkpCiB7CiAgICAgV2ViQ29udGV4dFN1cHBsZW1lbnQ6OnByb2Nlc3NQb29sKCktPmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOwogfQpAQCAtNTQsNyArNTQsNyBAQCBXZWJHZW9sb2Nh
dGlvbk1hbmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQbwogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlk
ZXIoc3RkOjp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikK
IHsKICAgICBpZiAoIXByb3ZpZGVyKQotICAgICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBt
YWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICBlbHNlCiAgICAgICAg
IG1fcHJvdmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCmluZGV4IDJj
ZGNkMTc2NTI5OWZlNzc2NDliYWJmOWRlM2U3NGU4YjBmMDBlMzcuLjMzNjRiY2JjYzkxMTg0YTZi
YTc1NDFlZjkwYjBmOTYwNGNkZTRkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcApAQCAtMTAyLDcgKzEwMiw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjp1cGRhdGVQbGF5YmFja0F0dHJp
YnV0ZXNGcm9tTWVkaWFTdGF0ZShXZWJQYWdlCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNN
YW5hZ2VyOjpzZXRGb2N1c2VkTWVkaWFFbGVtZW50KFdlYlBhZ2VQcm94eSYgcHJveHksIHVpbnQ2
NF90IGVsZW1lbnRJRCkKIHsKLSAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElEKTsKKyAgICBtX2Zv
Y3VzZWRNZWRpYUVsZW1lbnQgPSBtYWtlVW5pcXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94
eSwgZWxlbWVudElEKTsKIH0KIAogdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNs
ZWFyRm9jdXNlZE1lZGlhRWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5h
dmlnYXRpb25TdGF0ZS5oCmluZGV4IDllYjlkMjhhZGRkNWI1YjAwNmQ1MGIwOGEzZDc0ZmI2OWQx
NjIzOTIuLjE2YTc1OWFjOGExZmYzMTQ2MDViMDk0NmZmYzVhYTY1ODE4ZTA3NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oCkBAIC00NSw2ICs0NSw3
IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiAK
IGNsYXNzIFdlYk5hdmlnYXRpb25TdGF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViTmF2aWdhdGlvblN0YXRlKCk7CiAgICAgfldlYk5h
dmlnYXRpb25TdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaAppbmRleCA2NTI5ODJhODEyYTllZmJlZjUyMWE2YTk4
OTlmYTRiZWU1ZmFmMzRjLi4xYjI5Zjc5ZGRmYWVhMDdiOWU3MjQ5YmQ3NzIzODRlZWJmNTMwZmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50IDogcHVi
bGljIEFQSTo6Q2xpZW50PFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZT4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpP
YmplY3QqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxBUEk6Ok9iamVjdD4pPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBjNGI5MmM4M2NmZWEyOWIzMWVkYmIzNGFhODQwMjViYTVjOGIwM2I3Li5iZGE1OWNkODA1
MTU3NjQ2YjMwOGQyZmQyMzZmM2QxMTgyNzFlMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlcihXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5k
Um91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3Bh
dGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiB7Ci0gICAgYXV0byB0
YXJnZXRBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50
PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKKyAg
ICBhdXRvIHRhcmdldEFnZW50ID0gbWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdl
bnQ+KG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwog
CiAgICAgbV90YXJnZXRBZ2VudCA9IHRhcmdldEFnZW50LmdldCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzMjYzMWM0NTBlYjI2ZDc1NDU0NjhiNzI2
YzE1YTQ0OTg1Yzk5OGE5Li5kYTVkMTJjYTI1NGNmNTExYmMxMjE3NmFhMGUyNzAyZWQ1ODk3ZDJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM5NywxNSAr
Mzk3LDE1IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24o
V1RGTW92ZShjb25maWd1cmF0aW9uKSkKICAgICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5p
cXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudCht
YWtlVW5pcXVlUmVmPEFQSTo6SGlzdG9yeUNsaWVudD4oKSkKLSAgICAsIG1faWNvbkxvYWRpbmdD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpKQotICAgICwg
bV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpKQotICAgICwg
bV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCkpCi0gICAgLCBtX2Zp
bmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCkpCi0gICAgLCBtX2Zp
bmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4o
KSkKKyAgICAsIG1faWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5n
Q2xpZW50PigpKQorICAgICwgbV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50
PigpKQorICAgICwgbV91aUNsaWVudChtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCkpCisgICAg
LCBtX2ZpbmRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCkpCisgICAgLCBtX2Zp
bmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKSkKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpKQorICAgICwgbV9jb250ZXh0TWVu
dUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAg
ICAsIG1fbmF2aWdhdGlvblN0YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViTmF2aWdhdGlvblN0YXRl
PigpKQorICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUobWFrZVVuaXF1ZTxXZWJOYXZpZ2F0aW9uU3Rh
dGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKICAgICAsIG1fcGFnZUdyb3VwKCptX2Nv
bmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQogICAgICwgbV9wcmVmZXJlbmNlcygqbV9jb25maWd1
cmF0aW9uLT5wcmVmZXJlbmNlcygpKQpAQCAtNDE2LDcgKzQxNiw3IEBAIFdlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcywgUGFnCiAgICAgLCBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IHsgbV9jb25m
aWd1cmF0aW9uLT5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpIH0KICAgICAsIG1fdHJl
YXRzU0hBMUNlcnRpZmljYXRlc0FzSW5zZWN1cmUobV9jb25maWd1cmF0aW9uLT50cmVhdHNTSEEx
U2lnbmVkQ2VydGlmaWNhdGVzQXNJbnNlY3VyZSgpKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKLSAgICAsIG1fZnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNj
cmVlbkNsaWVudD4oKSkKKyAgICAsIG1fZnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6
RnVsbHNjcmVlbkNsaWVudD4oKSkKICNlbmRpZgogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcigqdGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKCp0aGlzKQpAQCAtNDM1LDkgKzQzNSw5IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgUGFnCiAjZW5kaWYKICAgICAsIG1fcGFnZUxvYWRTdGF0ZSgqdGhpcykKICAgICAsIG1fY29u
ZmlndXJhdGlvblByZWZlcmVuY2VWYWx1ZXMobV9jb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlVmFs
dWVzKCkpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShzdGQ6
Om1ha2VfdW5pcXVlPFdlYlBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCisgICAgLCBtX2luc3BlY3Rv
ckRlYnVnZ2FibGUobWFrZVVuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQogI2VuZGlm
CiAgICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJldlYlBhZ2VQcm94eTo6cmVzZXRSZWNlbnRDcmFzaENvdW50KQogewpAQCAtNDc3LDcgKzQ3
Nyw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQs
IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVy
OjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpBY3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNdIHsK
KyAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxSdW5Mb29w
T2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3du
UnVuTG9vcE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CiAgICAgICAgIHRo
aXMtPmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpOwogICAgIH0pOwogI2VuZGlmCkBAIC02
MDEsNyArNjAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBvbGljeUNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+JiYgcG9saWN5Q2wKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNs
aWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGllbnQpIHsKLSAgICAgICAgbV9mb3JtQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CisgICAgICAgIG1fZm9ybUNsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNsaWVudD4mJiBmb3JtQ2xpZW50KQogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiYmIHVp
Q2xpZW50KQogewogICAgIGlmICghdWlDbGllbnQpIHsKLSAgICAgICAgbV91aUNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKTsKKyAgICAgICAgbV91aUNsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpVSUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NjI4LDcgKzYyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4mCiB7CiAgICAgYm9vbCBoYXND
bGllbnQgPSBpY29uTG9hZGluZ0NsaWVudC5nZXQoKTsKICAgICBpZiAoIWljb25Mb2FkaW5nQ2xp
ZW50KQotICAgICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
Okljb25Mb2FkaW5nQ2xpZW50PigpOworICAgICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9p
Y29uTG9hZGluZ0NsaWVudCA9IFdURk1vdmUoaWNvbkxvYWRpbmdDbGllbnQpOwogCkBAIC02NTAs
NyArNjUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihz
dGQ6OnVuaXF1ZV9wdHI8UGFnZUxvYWRTdGF0ZTo6T2JzZXIKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+JiYgZmluZENsaWVu
dCkKIHsKICAgICBpZiAoIWZpbmRDbGllbnQpIHsKLSAgICAgICAgbV9maW5kQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CisgICAgICAgIG1fZmluZENsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtNjYwLDcgKzY2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5k
TWF0Y2hlc0NsaWVudD4mJiBmaW5kTWF0Y2hlc0NsaWVudCkKIHsKICAgICBpZiAoIWZpbmRNYXRj
aGVzQ2xpZW50KSB7Ci0gICAgICAgIG1fZmluZE1hdGNoZXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CisgICAgICAgIG1fZmluZE1hdGNoZXNDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RGlhZ25vc3RpY0xvZwog
dm9pZCBXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkNvbnRleHRNZW51Q2xpZW50PiYmIGNvbnRleHRNZW51Q2xpZW50KQogewogICAgIGlmICgh
Y29udGV4dE1lbnVDbGllbnQpIHsKLSAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICAgICAgbV9jb250ZXh0
TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjkxLDcgKzY5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dEJhc2UqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2luamVjdGVkQnVuZGxlQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7Cisg
ICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50PigpOwogICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQtPmluaXRpYWxpemUoY2xp
ZW50KTsKIH0KIApAQCAtNzc2LDcgKzc3Niw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5k
Q3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAg
ICAgfQogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJv
Y2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIGF1dG8g
c3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhp
cywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdV
bnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOworICAgIGF1dG8gc3VzcGVu
ZGVkUGFnZSA9IG1ha2VVbmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNz
LmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5n
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOwogCiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywg
IldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBw
cm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCkudG9V
SW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygp
IDogMCk7CiAKQEAgLTg0OSw3ICs4NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNo
VG9SdW5uaW5nUHJvY2VzcygpCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgQVNT
RVJUKCFtX2Z1bGxTY3JlZW5NYW5hZ2VyKTsKLSAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PigqdGhpcywgcGFnZUNsaWVu
dCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSk7CisgICAgbV9mdWxsU2NyZWVuTWFu
YWdlciA9IG1ha2VVbmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VD
bGllbnQoKS5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkpOwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgSEFWRShBVktJVCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBBU1NFUlQoIW1fcGxheWJhY2tTZXNz
aW9uTWFuYWdlcik7CkBAIC04NjAsMjIgKzg2MCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
QXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgIEFT
U0VSVCghbV9wYXltZW50Q29vcmRpbmF0b3IpOwotICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAg
IG1fcGF5bWVudENvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgQVNT
RVJUKCFtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyKTsKLSAgICBtX3N5c3RlbVByZXZpZXdDb250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMp
OworICAgIG1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyPigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAg
ICAgQVNTRVJUKCFtX2NyZWRlbnRpYWxzTWVzc2VuZ2VyKTsKLSAgICBtX2NyZWRlbnRpYWxzTWVz
c2VuZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eT4oKnRoaXMpOworICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBtYWtlVW5pcXVlPFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEhBVkUo
UEVOQ0lMS0lUKQogICAgIEFTU0VSVCghbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlcik7Ci0gICAg
bV9lZGl0YWJsZUltYWdlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gbWFr
ZVVuaXF1ZTxFZGl0YWJsZUltYWdlQ29udHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiB9CiAKQEAg
LTk0Myw3ICs5NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhd2luZ0FyZWEoc3RkOjp1
bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+JiYgZHJhd2luZ0FyZQogCiAjaWYgRU5BQkxFKEFT
WU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fZHJhd2luZ0FyZWEt
PnR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUpIHsKLSAgICAgICAgbV9z
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRo
aXMpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8vIE9uIGlPUywgbWFpbiBm
cmFtZSBzY3JvbGxzIGFyZSBzZW50IGluIHRlcm1zIG9mIHZpc2libGUgcmVjdCB1cGRhdGVzLgog
ICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHktPnNldFByb3BhZ2F0ZXNNYWluRnJh
bWVTY3JvbGxzKGZhbHNlKTsKQEAgLTEwMDYsMTcgKzEwMDYsMTcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNsb3NlKCkKICAgICBtX2xvYWRlckNsaWVudCA9IG51bGxwdHI7CiAgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCk7CiAgICAg
bV9wb2xpY3lDbGllbnQgPSBudWxscHRyOwotICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7Ci0gICAgbV91aUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKTsKLSAgICBtX2ZpbmRDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKLSAgICBtX2ZpbmRNYXRjaGVzQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOworICAgIG1f
aWNvbkxvYWRpbmdDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7
CisgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CisgICAg
bV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpVSUNsaWVudD4oKTsKKyAgICBtX2ZpbmRDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKKyAgICBtX2ZpbmRNYXRjaGVzQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOwogICAgIG1fZGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQgPSBudWxscHRyOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQot
ICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1l
bnVDbGllbnQ+KCk7CisgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpD
b250ZXh0TWVudUNsaWVudD4oKTsKICNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVl
bkNsaWVudD4oKTsKKyAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RnVs
bHNjcmVlbkNsaWVudD4oKTsKICNlbmRpZgogCiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
LnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9yUGFnZSgqdGhpcyk7CkBAIC0xMjI2LDcgKzEyMjYs
NyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7IH0pOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0g
bV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRp
b25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKG1ha2VVbmlxdWU8QVBJOjpTdWJzdGl0
dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2Vy
RGF0YSkpOwogICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlS
ZWYoKSwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2Vy
RGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0LCBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KQEAg
LTI0MTUsNyArMjQxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgYXV0byBjb2FsZXNjZWRXaGVlbEV2ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CisgICAgYXV0byBjb2FsZXNjZWRXaGVlbEV2ZW50ID0g
bWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CiAgICAgY29hbGVzY2Vk
V2hlZWxFdmVudC0+YXBwZW5kKGV2ZW50KTsKICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVs
RXZlbnRzLmFwcGVuZChXVEZNb3ZlKGNvYWxlc2NlZFdoZWVsRXZlbnQpKTsKICAgICBzZW5kV2hl
ZWxFdmVudChldmVudCk7CkBAIC0yNDIzLDcgKzI0MjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpCiB7Ci0gICAgYXV0
byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJX
aGVlbEV2ZW50Pj4oKTsKKyAgICBhdXRvIG5leHRDb2FsZXNjZWRFdmVudCA9IG1ha2VVbmlxdWU8
VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOwogICAgIFdlYldoZWVsRXZlbnQgbmV4dFdo
ZWVsRXZlbnQgPSBjb2FsZXNjZWRXaGVlbEV2ZW50KG1fd2hlZWxFdmVudFF1ZXVlLCAqbmV4dENv
YWxlc2NlZEV2ZW50LmdldCgpKTsKICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRz
LmFwcGVuZChXVEZNb3ZlKG5leHRDb2FsZXNjZWRFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50
KG5leHRXaGVlbEV2ZW50KTsKQEAgLTI5ODQsNyArMjk4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBzCiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBtX3Byb3Zpc2lvbmFsUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJv
eHk+KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJv
eHkpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0
SXNSZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQpOworICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92
aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIG5ld1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1
c3BlbmRlZFBhZ2VQcm94eSksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24u
Y3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCk7CiAKICAgICBpZiAoYXV0byogaXRlbSA9IG5h
dmlnYXRpb24udGFyZ2V0SXRlbSgpKSB7CiAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVBy
b3h5ICVwIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVz
IiwgdGhpcywgaXRlbS0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CkBAIC01NzAyLDcgKzU3MDIsNyBA
QCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6OmZ1bGxTY3JlZW5NYW5h
Z2VyKCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50
KSB7Ci0gICAgICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpG
dWxsc2NyZWVuQ2xpZW50PigpOworICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNzQzNiw3ICs3NDM2LDcgQEAgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkmIFdlYlBhZ2VQcm94eTo6dXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKICAgICBpZiAobV91
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIpCiAgICAgICAgIHJldHVybiAqbV91c2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiAKLSAgICBtX3VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk+KCp0aGlzKTsKKyAgICBtX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlciA9IG1ha2VVbmlxdWU8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOwogfQogCkBAIC04MTQyLDcgKzgxNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQgPSBlbmFibGVkOwogCiAg
ICAgaWYgKG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQgJiYgIW1fc2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhKQotICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VE
YXRhPihkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqbV9kcmF3aW5n
QXJlYSkpOworICAgICAgICBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IG1ha2VVbmlxdWU8
UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhPihkb3duY2FzdDxSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqbV9kcmF3aW5nQXJlYSkpOwogICAgIGVsc2UgaWYg
KCFtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkKQogICAgICAgICBtX3Nj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YSA9IG51bGxwdHI7CiB9CkBAIC05MTg5LDcgKzkxODksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTcGVlY2hTeW50aGVzaXplcigpCiBXZWJQYWdlUHJv
eHk6OlNwZWVjaFN5bnRoZXNpc0RhdGEmIFdlYlBhZ2VQcm94eTo6c3BlZWNoU3ludGhlc2lzRGF0
YSgpCiB7CiAgICAgaWYgKCFtX3NwZWVjaFN5bnRoZXNpc0RhdGEpCi0gICAgICAgIG1fc3BlZWNo
U3ludGhlc2lzRGF0YSA9IFNwZWVjaFN5bnRoZXNpc0RhdGEgeyBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyIH07CisgICAgICAgIG1fc3BlZWNoU3ludGhlc2lzRGF0YSA9IFNw
ZWVjaFN5bnRoZXNpc0RhdGEgeyBtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+
KHRoaXMpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAg
ICAgcmV0dXJuICptX3NwZWVjaFN5bnRoZXNpc0RhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjQzODNjYWY4OGYzNzI3MmNmOTQ3N2I2NDAzOWNlOWVm
NWM5NDlhMS4uMTdiZjVmYTliZTE3ZTYzODVjMjNiYjg3NDVhMWI1ZDNhYzc4Y2YzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM0Nyw4ICszNDcsNyBAQCB0eXBl
ZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1
aW50MzJfdD4gVG91Y2hlc0NhbAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+Jj4gU2VsZWN0aW9uUmVjdHNDYWxsYmFjazsKIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mPiBGb2N1
c2VkRWxlbWVudEluZm9ybWF0aW9uQ2FsbGJhY2s7CiBzdHJ1Y3QgRWxlbWVudERpZEZvY3VzQXJn
dW1lbnRzIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKKyAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
biBpbmZvcm1hdGlvbjsKICAgICBib29sIHVzZXJJc0ludGVyYWN0aW5nOwogICAgIGJvb2wgYmx1
clByZXZpb3VzTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUu
Y3BwCmluZGV4IDhiZGY4Y2Y4Mzg4Y2RjN2JmYWNmZjJiN2U2MDVkMGE4MThkYWFjNjQuLjk2MmYz
YmVkMmQ4MjU2OWEwN2RkNGU5Y2RhYjhmY2M3MjExOWY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFdlYlBy
b2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciA9IGdlbmVyYXRlQWRkUmVxdWVzdElkZW50aWZpZXIoKTsKLSAgICBtX3BlbmRpbmdB
ZGRSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVk
UHJvY2Vzcz4ocHJvY2Vzcy5jb3B5UmVmKCkpKTsKKyAgICBtX3BlbmRpbmdBZGRSZXF1ZXN0cy5h
ZGQocmVxdWVzdElkZW50aWZpZXIsIG1ha2VVbmlxdWU8Q2FjaGVkUHJvY2Vzcz4ocHJvY2Vzcy5j
b3B5UmVmKCkpKTsKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gV2Vi
UHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSgpOiBDaGVja2luZyBpZiBwcm9jZXNz
ICVpIGlzIHJlc3BvbnNpdmUgYmVmb3JlIGNhY2hpbmcgaXQuLi4iLCB0aGlzLCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBwcm9jZXNzLT5pc1Jlc3BvbnNpdmUoW3RoaXMsIHBy
b2Nlc3NQb29sID0gbWFrZVJlZihwcm9jZXNzLT5wcm9jZXNzUG9vbCgpKSwgcmVxdWVzdElkZW50
aWZpZXJdKGJvb2wgaXNSZXNwb25zaXZlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKaW5kZXggMzYzNjdmMDA0Y2YxZTIxNjVkMjdiNmFlOGU2ZmNiNWRjNmY5
MTM4Yy4uODE5NjVhZjdjYThiMDMyMzNmZjRmODU2NDE0ZGRiZDE0ZDk5NDAxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjMzLDE1ICsyMzMsMTUg
QEAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBnbG9i
YWxVUkxTY2hlbWVzV2l0aEN1c3RvbVByb3QKIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9v
bChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICA6IG1f
Y29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLmNvcHkoKSkKICAgICAsIG1fZGVmYXVsdFBhZ2VH
cm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQotICAgICwgbV9pbmplY3RlZEJ1bmRsZUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCi0gICAgLCBt
X2F1dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
KCkpCi0gICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9h
ZENsaWVudD4oKSkKLSAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCi0gICAgLCBtX2N1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50PigpKQorICAgICwgbV9pbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+KCkpCisgICAgLCBtX2F1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1
ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkpCisgICAgLCBtX2Rvd25sb2FkQ2xpZW50KG1ha2VV
bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKSkKKyAgICAsIG1faGlzdG9yeUNsaWVudChtYWtl
VW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCisgICAgLCBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PigpKQogICAgICwgbV92aXNpdGVkTGlua1N0b3JlKFZpc2l0ZWRMaW5rU3RvcmU6
OmNyZWF0ZSgpKQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAsIG1faGlnaFBlcmZvcm1hbmNlR3Jh
cGhpY3NVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3VuaXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGlj
c1VzYWdlU2FtcGxlcj4oKnRoaXMpKQotICAgICwgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcj4o
KnRoaXMpKQorICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihtYWtl
VW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPigqdGhpcykpCisgICAg
LCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fYWx3YXlzUnVu
c0F0QmFja2dyb3VuZFByaW9yaXR5KG1fY29uZmlndXJhdGlvbi0+YWx3YXlzUnVuc0F0QmFja2dy
b3VuZFByaW9yaXR5KCkpCiAgICAgLCBtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24o
bV9jb25maWd1cmF0aW9uLT5zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKCkpCkBAIC0z
NjQsNyArMzY0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNsaWVudChjb25z
dCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJ
bmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZUNs
aWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1faW5qZWN0ZWRC
dW5kbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+
KCk7CisgICAgICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2luamVjdGVkQnVuZGxl
Q2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KGNvbnN0IFdLQ29udGV4dENv
bm5lY3Rpb25DbGllbnRCCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiYmIGhpc3RvcnlD
bGllbnQpCiB7CiAgICAgaWYgKCFoaXN0b3J5Q2xpZW50KQotICAgICAgICBtX2hpc3RvcnlDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7
CisgICAgICAgIG1faGlzdG9yeUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1faGlzdG9yeUNsaWVudCA9IFdU
Rk1vdmUoaGlzdG9yeUNsaWVudCk7CiB9CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250
ZXh0SGlzdG9yeUMKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGRvd25sb2FkQ2xpZW50KQogewogICAg
IGlmICghZG93bmxvYWRDbGllbnQpCi0gICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCk7CisgICAgICAgIG1fZG93bmxvYWRDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAg
ICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGTW92ZShkb3dubG9hZENsaWVudCk7CiB9CkBAIC0zOTMs
NyArMzkzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgZG8KIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVu
dD4mJiBhdXRvbWF0aW9uQ2xpZW50KQogewogICAgIGlmICghYXV0b21hdGlvbkNsaWVudCkKLSAg
ICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRp
b25DbGllbnQ+KCk7CisgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpBdXRvbWF0aW9uQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9hdXRvbWF0aW9uQ2xp
ZW50ID0gV1RGTW92ZShhdXRvbWF0aW9uQ2xpZW50KTsKIH0KQEAgLTQwMiw3ICs0MDIsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6QwogewogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RP
Q09MX01BTkFHRVIpCiAgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCi0gICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKKyAgICAgICAgbV9jdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
PSBXVEZNb3ZlKGN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCk7CiAjZW5kaWYKQEAgLTQ5Miw3
ICs0OTIsNyBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgICAgICByZXR1cm4gKm1fbmV0
d29ya1Byb2Nlc3M7CiAgICAgfQogCi0gICAgYXV0byBuZXR3b3JrUHJvY2VzcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya1Byb2Nlc3NQcm94eT4oKnRoaXMpOworICAgIGF1dG8gbmV0d29ya1By
b2Nlc3MgPSBtYWtlVW5pcXVlPE5ldHdvcmtQcm9jZXNzUHJveHk+KCp0aGlzKTsKIAogICAgIE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKQEAgLTI1MTUsNyAr
MjUxNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRp
b24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21hCiAgICAgICAgIG1fcHJld2FybUluZm9y
bWF0aW9uUGVyUmVnaXN0cmFibGVEb21haW4ucmVtb3ZlKG1fcHJld2FybUluZm9ybWF0aW9uUGVy
UmVnaXN0cmFibGVEb21haW4ucmFuZG9tKCkpOwogCiAgICAgYXV0byYgdmFsdWUgPSBtX3ByZXdh
cm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLmVuc3VyZShyZWdpc3RyYWJsZURvbWFp
biwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpQcmV3YXJt
SW5mb3JtYXRpb24+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OlByZXdh
cm1JbmZvcm1hdGlvbj4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAqdmFsdWUg
PSBwcmV3YXJtSW5mb3JtYXRpb247CkBAIC0yNTYyLDEyICsyNTYyLDEyIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nl
c3NJRCkKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+dGFrZVVwbG9hZEFzc2VydGlvbigpOwog
ICAgICAgICAKICAgICAgICAgQVNTRVJUKCFtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbik7Ci0g
ICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgdXBsb2FkcyJfcywg
QXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX3VpUHJvY2Vz
c1VwbG9hZEFzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVu
dFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKICAgICB9CiAgICAgCiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nl
c1dpdGhVcGxvYWRzLmFkZChwcm9jZXNzSUQsIG51bGxwdHIpOwogICAgIEFTU0VSVChyZXN1bHQu
aXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktp
dCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25T
dGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNs
ZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQpAQCAt
MjYwNCwxMiArMjYwNCwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQ
bGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaQogICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIHBsYXlp
bmcgYXVkaWJsZSBtZWRpYSBpcyBub3cgb25lLiBUYWtpbmcgVUkgcHJvY2VzcyBhc3NlcnRpb24u
Iik7CiAKICAgICAgICAgQVNTRVJUKCFtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24p
OwotICAgICAgICBtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBN
ZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJl
YXNvbjo6TWVkaWFQbGF5YmFjayk7CisgICAgICAgIG1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fz
c2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJ
RCgpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3Vu
ZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKICAgICB9CiAKICAgICBhdXRvIHJl
c3VsdCA9IG1fcHJvY2Vzc2VzUGxheWluZ0F1ZGlibGVNZWRpYS5hZGQocHJvY2Vzc0lELCBudWxs
cHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0
YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOworICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3MsIEFzc2Vy
dGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJhY2spOwog
fQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NJc1BsYXlpbmdBdWRpYmxl
TWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTE2OTEzN2Y1Mzg5ZDMwYmI4
YjExYjNhOGUxZjUwY2E0M2FhMDZlZC4uMWUzY2RkZThmYmU4OGU4NWQ4MDI5ODc3OTdmODEyZWVj
NTI1YjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CkBAIC0xNTEsNyArMTUxLDcgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKgogICAgICwgbV92aXNp
YmxlUGFnZUNvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVCYWNrZ3JvdW5k
UmVzcG9uc2l2ZW5lc3NUaW1lcigpOyB9KQogICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKHdlYnNp
dGVEYXRhU3RvcmUpCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0gICAgLCBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkoc3RkOjptYWtlX3VuaXF1ZTxV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PigqdGhpcykpCisgICAgLCBtX3VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
PigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1faXNQcmV3YXJtZWQoaXNQcmV3YXJtZWQgPT0gSXNQ
cmV3YXJtZWQ6OlllcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAppbmRleCBlOWZjZjAwMTUz
OTk1ZGMxY2NlMTM1ZjhjMDkyZTkyZTY2ZGJmZjNhLi5kMGJiYTU2NGMyNzU4MmQ3ODI2ZTlmMmMy
MDYyMjM3MDIyNzI5NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCkBAIC0zNCw2ICszNCw3
IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vic2l0ZURhdGFTdG9yZUNsaWVudCgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWly
by5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5j
cHAKaW5kZXggMTgyOTRkMzdmZTQ5ZWVkNmQ2OWRmZmZmNWYyZjY1MDcwYjY2Y2Q5MC4uN2JkZDAz
ZDNjOGVjOGUwNjYyZTc3ZDAxODI1MGI1MDg4YzI2Y2ZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtNTQsMTIgKzU0
LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm8+IEJhY2tpbmdT
dG9yZTo6Y3JlYXRlQmFja2VuZCgpCiAgICAgICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ3RrX3dp
ZGdldF9nZXRfdmlzdWFsKG1fd2ViUGFnZVByb3h5LnZpZXdXaWRnZXQoKSk7CiAgICAgICAgIEdk
a1NjcmVlbiogc2NyZWVuID0gZ2RrX3Zpc3VhbF9nZXRfc2NyZWVuKHZpc3VhbCk7CiAgICAgICAg
IEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJlZERpc3BsYXkpLm5hdGl2
ZSgpID09IEdES19TQ1JFRU5fWERJU1BMQVkoc2NyZWVuKSk7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oR0RLX1dJTkRPV19YSUQo
Z2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oR0RLX1dJTkRPV19YSUQoZ2RrX3Nj
cmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCiAgICAgICAgICAgICBHREtfVklTVUFMX1hW
SVNVQUwodmlzdWFsKSwgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSwgbV9zaXplLCBtX2Rl
dmljZVNjYWxlRmFjdG9yKTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2Fs
ZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlQmFja2VuZENhaXJv
SW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBCYWNraW5nU3Rv
cmU6OnBhaW50KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5j
cHAKaW5kZXggYjg3NGZiMGZiMmUyYTdlN2VjMzZjYzQ0ZTM5ZDYyNDkwNmE0YzVmMS4uZjg4OGMw
ZjQ0NmM2MjcxMjdjODM3NWJlMGQ4MWE2YTNmMmMwOWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMjQ5
LDcgKzI0OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50Ojpjb25uZWN0aW9uQ2xvc2Vk
KCkKIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KHVpbnQ2NF90IGNvbm5lY3Rp
b25JRCwgdWludDY0X3QgdGFyZ2V0SUQpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2luc3Bl
Y3RvclByb3h5TWFwLmVuc3VyZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHRhcmdldElE
KSwgW3RoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SURdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRh
cmdldElEKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+
KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEKTsKICAgICB9KTsKICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnNo
b3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRl
ZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Fj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggMzgzMTAwMDU4ODk0ZGVjMGZi
N2I1MWNhYTA5YTIzOWQ3N2QwOGE4Yi4uODkzMjc5ZmJjZjU4YWVhZjJhZmQ2YjFhNDdjMWM3NmMy
M2Q4MmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTc5LDkgKzc5LDkgQEAg
Ym9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShPUEVOR0xfRVMpCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gc3Rk
OjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMg
PSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOwogI2Vs
c2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNp
b25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29u
dGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNp
b25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0g
MzIwKTsKICNlbmRpZgogICAgICAgICBpZiAoZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VT
X0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2Vf
ZXh0ZXJuYWwiKSkKICAgICAgICAgICAgIGdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWludGVy
cHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKaW5kZXggZTlhZTY1
NTJhN2EyZDg2MmM0YmQ0ZWUxMGVkMmVjMzZlOTJmODMxZC4uY2E2NTNlNWViYTcwYzk2MTU1ZmY3
NjQ4OGMzZWRmNDI4MWY4NTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBTZWxlY3Rpb25E
YXRhKiBEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdEYXRhU2VsZWN0aW9uKEdka0RyYWdDb250ZXh0
KiBjb250ZXh0LCBjbwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcm9wcGluZ0NvbnRleHQ+JiBkcm9w
cGluZ0NvbnRleHQgPSBtX2Ryb3BwaW5nQ29udGV4dHMuYWRkKGNvbnRleHQsIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWRyb3BwaW5nQ29udGV4dCkgewogICAgICAgICBHdGtX
aWRnZXQqIHdpZGdldCA9IG1fcGFnZS52aWV3V2lkZ2V0KCk7Ci0gICAgICAgIGRyb3BwaW5nQ29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RHJvcHBpbmdDb250ZXh0Pihjb250ZXh0LCBwb3NpdGlv
bik7CisgICAgICAgIGRyb3BwaW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8RHJvcHBpbmdDb250ZXh0
Pihjb250ZXh0LCBwb3NpdGlvbik7CiAgICAgICAgIFZlY3RvcjxHZGtBdG9tPiBhY2NlcHRhYmxl
VGFyZ2V0cyhQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS5kcm9wQXRvbXNGb3JDb250ZXh0
KHdpZGdldCwgZHJvcHBpbmdDb250ZXh0LT5nZGtDb250ZXh0KSk7CiAgICAgICAgIGRyb3BwaW5n
Q29udGV4dC0+cGVuZGluZ0RhdGFSZXF1ZXN0cyA9IGFjY2VwdGFibGVUYXJnZXRzLnNpemUoKTsK
ICAgICAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBhY2NlcHRhYmxlVGFyZ2V0cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaAppbmRleCA1MjU0
MjAzNzFmNjFiZDRiOGYzYzFhMzk5YjdiODI2MWI5OTRlYTEwLi41OTE0YjdlMGRmNTQzMWFjZjY2
MzcxMDNlNjg4MDQwNGVkNDQzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFNoYXJlYWJs
ZUJpdG1hcDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgRHJhZ0FuZERyb3BIYW5kbGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEcmFnQW5kRHJvcEhhbmRsZXIpOwogcHVibGljOgogICAgIERyYWdBbmREcm9wSGFuZGxlcihX
ZWJQYWdlUHJveHkmKTsKQEAgLTY0LDYgKzY1LDcgQEAgY2xhc3MgRHJhZ0FuZERyb3BIYW5kbGVy
IHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgRHJvcHBpbmdDb250ZXh0IHsKKyAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBEcm9wcGluZ0NvbnRleHQoR2Rr
RHJhZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pOwogCiAgICAg
ICAgIEdka0RyYWdDb250ZXh0KiBnZGtDb250ZXh0IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKaW5kZXggY2JlMzgw
YjI0MGQ5NjAxMTE3MjdiNzcwYTgyNWUwOWUwNTQ3YzllZC4uYzNkOTk3M2M3MGRjMjA4OWM2ODNk
NjVhOTEzZGEyOTRkNWZmZWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBAIC00MjAsOSArNDIwLDkgQEAgYm9vbCBXYXlsYW5k
Q29tcG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lm
IFVTRShPUEVOR0xfRVMpCi0gICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVT
PiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihu
dWxscHRyLCAgZmFsc2UpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xF
Uz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0
ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5H
TD4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51
bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVl
PEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNp
b24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAgaWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdM
X09FU19FR0xfaW1hZ2UiKSB8fCBnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2lt
YWdlX2V4dGVybmFsIikpCiAgICAgICAgIGdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQgPSByZWludGVy
cHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DPihlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgKaW5kZXgg
YmJmOTNjMjAyODZlZTZjNjYyOGE3MTgyYmFlZDQ1MmYyYmM4Zjc0Yy4uNTE0ZWNhNjg5YjY1MWNj
ZGZlZDYxMTg1MGQyYjE0YmMyZjRjNTk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmgKQEAgLTQxLDExICs0MSwxMyBA
QCBPQkpDX0NMQVNTIFdLRHJhd2luZ1ZpZXc7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0
IEVkaXRhYmxlSW1hZ2UgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICBSZXRhaW5QdHI8V0tEcmF3aW5nVmlldz4gZHJhd2luZ1ZpZXc7CiAgICAgU3RyaW5nIGF0dGFj
aG1lbnRJRDsKIH07CiAKIGNsYXNzIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyIDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9s
bGVyLm1tCmluZGV4IGMyMzQxMWMxZjA5YjAxMGE2NTI1NGIzNjlkZDMxNjlkMzFmMGMwZTAuLjYx
ZTg1OTRkNWI3YzQxYWFmOWZjODJjNjUzOGRiOWFkNzE4NTYzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KQEAg
LTU4LDcgKzU4LDcgQEAgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6On5FZGl0YWJsZUltYWdlQ29u
dHJvbGxlcigpCiBFZGl0YWJsZUltYWdlJiBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJl
RWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJl
ZGRlZFZpZXdJRCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZWRpdGFibGVJbWFnZXMuZW5zdXJl
KGVtYmVkZGVkVmlld0lELCBbJl0gewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJ
bWFnZT4gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2U+KCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPiBpbWFnZSA9IG1ha2VVbmlxdWU8RWRpdGFi
bGVJbWFnZT4oKTsKICAgICAgICAgaW1hZ2UtPmRyYXdpbmdWaWV3ID0gbV93ZWJQYWdlUHJveHkt
PnBhZ2VDbGllbnQoKS5jcmVhdGVEcmF3aW5nVmlldyhlbWJlZGRlZFZpZXdJRCk7CiAgICAgICAg
IHJldHVybiBpbWFnZTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmgKaW5kZXggYzZmNTBhYjExZjNkYjI2ZTMx
Y2MyMDQ0M2ExZTg0MmI3ZDgwMmY4ZC4uZWZjMzNkZTZmMmE4MjI1ZGZjNGUxYTM0M2MxOWMyMmVl
MWMzNDI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmll
d1VwZGF0ZURlZmVycmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0
Vmlld1VwZGF0ZURlZmVycmVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgT0JKQ19DTEFTUyBVSVZpZXc7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElu
cHV0Vmlld1VwZGF0ZURlZmVycmVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnB1dFZpZXdV
cGRhdGVEZWZlcnJlcihVSVZpZXcgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaAppbmRleCA3MjgwNzg4
NjM4MTJlODA5Y2RlMDk2ZWU4OWIxZjYwMjA1MGJjNGQxLi4wMjAxMTY3OWI3OTFmOGUwYWQxMWYx
YThmNTI3MzFhZmEzMDg1NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgKQEAgLTQwLDYgKzQwLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyKTsKIHB1YmxpYzoKICAgICBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyKFdLQ29udGVudFZpZXcgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5t
bQppbmRleCBkMDNhMTcyNmFiMzM0YTAwZTYwZmJjMDUwYjUwZTVjMzM3NWFmNzIwLi43ZjBmOTQ4
NGZkNzc3NGRkMTE1N2FlMjg4NWM5MGEzYmYyZWU3OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1Zp
ZXcubW0KQEAgLTY1LDcgKzY1LDcgQEAgLSAodm9pZClkaWRNb3ZlVG9XaW5kb3cKICAgICBpZiAo
IXNlbGYuX2NvbnRlbnRWaWV3LndpbmRvdyB8fCBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4oc2VsZiwgQHNlbGVjdG9y
KF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25E
aWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCksIEBzZWxlY3Rvcihf
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKSk7CisgICAgX2FwcGxpY2F0aW9uU3RhdGVU
cmFja2VyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxm
LCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9h
cHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwg
QHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpKTsKICAgICAKICAgICBp
ZiAoX2xhc3RPYnNlcnZlZFN0YXRlV2FzQmFja2dyb3VuZCAmJiAhW3NlbGYgaXNCYWNrZ3JvdW5k
XSkKICAgICAgICAgW3NlbGYgX2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZF07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDY4MTFlODdh
NGE0MjEwMDViZDk0YTdhYzIxNjU0M2VjYzAwYTc3ZmMuLjQzMWZhY2QxZTY4Mzk3ZWM4NTczOTFh
YjFjZjg4OGQzODQxNTdhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tCkBAIC0xNjcsNyArMTY3LDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21tb25J
bml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHIK
ICAgICBfcGFnZS0+c2V0RGVsZWdhdGVzU2Nyb2xsaW5nKHRydWUpOwogCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQotICAgIF9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pihfd2ViVmlldykpOworICAgIF9wYWdlLT5z
ZXRGdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pihf
d2ViVmlldykpOwogI2VuZGlmCiAKICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGF0aXN0
aWNzKCkud2tWaWV3Q291bnQrKzsKQEAgLTIzOSw3ICsyMzksNyBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nl
c3NQb29sJgogCiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgX3BhZ2VD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUNsaWVudEltcGw+KHNlbGYsIHdl
YlZpZXcpOworICAgIF9wYWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsPihzZWxmLCB3ZWJWaWV3KTsKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CiAKICAgICByZXR1
cm4gW3NlbGYgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOnByb2Nlc3NQb29s
IGNvbmZpZ3VyYXRpb246V1RGTW92ZShjb25maWd1cmF0aW9uKV07CkBAIC01NDEsNyArNTQxLDcg
QEAgLSAodm9pZClfd2ViVmlld0Rlc3Ryb3llZAogCiAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5PilfY3JlYXRlRHJhd2luZ0FyZWFQcm94eTooV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHkmKXByb2Nlc3MKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5PigqX3BhZ2UsIHByb2Nlc3MpOwogfQogCiAtICh2b2lkKV9wcm9jZXNzRGlkRXhpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KaW5kZXggZWYzYWU0NDNkYTY0ZDk1MTgyYjBlMjUwMDMxYjZhMTgyMGI0ZjQzNC4u
ZWY1MDZkYTRmNmRiNTgxOTJmNmQ3ZDY2YzkyZmYxYzEzZGM0YThhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC04MDYsNyArODA2LDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgCiAgICAg
X2FjdGlvblNoZWV0QXNzaXN0YW50ID0gYWRvcHROUyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQg
YWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7CiAgICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBz
ZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyPihzZWxm
KTsKKyAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0
OjpTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyPihzZWxmKTsKICAgICBfaXNFeHBlY3RpbmdG
YXN0U2luZ2xlVGFwQ29tbWl0ID0gTk87CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBO
TzsKICAgICBfaXNEb3VibGVUYXBQZW5kaW5nID0gTk87CkBAIC04MjEsNyArODIxLDcgQEAgLSAo
dm9pZClzZXR1cEludGVyYWN0aW9uCiAjZW5kaWYKIAogI2lmIEVOQUJMRShQTEFURk9STV9EUklW
RU5fVEVYVF9DSEVDS0lORykKLSAgICBfdGV4dENoZWNraW5nQ29udHJvbGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyPigqX3BhZ2UpOworICAgIF90
ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2luZ0Nv
bnRyb2xsZXI+KCpfcGFnZSk7CiAjZW5kaWYKIAogICAgIF9oYXNTZXRVcEludGVyYWN0aW9ucyA9
IFlFUzsKQEAgLTExOTYsNyArMTE5Niw3IEBAIC0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25kZXJG
b3JXZWJWaWV3CiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlmICghX2lucHV0Vmlld1VwZGF0
ZURlZmVycmVyKQotICAgICAgICBfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOworICAgICAgICBf
aW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXI+KHNlbGYpOwogCiAgICAgQk9PTCBkaWRCZWNvbWVGaXJzdFJlc3BvbmRlcjsK
ICAgICB7CkBAIC01MzExLDcgKzUzMTEsNyBAQCAtICh2b2lkKV9lbGVtZW50RGlkRm9jdXM6KGNv
bnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYpaW5mb3JtYXRpb24gdQogICAg
ICAgICAvLyBEZWZlciB2aWV3IHVwZGF0ZXMgdW50aWwgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9u
IHRvIGF2b2lkIGEgbm90aWNlYWJsZSBmbGFzaCB3aGVuIHN3aXRjaGluZyBmb2N1cwogICAgICAg
ICAvLyBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgcmVxdWlyZSB0aGUga2V5Ym9hcmQuCiAgICAgICAg
IGlmICghaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIpCi0gICAgICAgICAgICBpbnB1dFZpZXdVcGRh
dGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZl
cnJlcj4oc2VsZik7CisgICAgICAgICAgICBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CiAgICAgICAgIFtz
ZWxmIF9lbGVtZW50RGlkQmx1cl07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBiMDI4MjQ4OTIwMDNhMDQ5ODkyOWU3MDZh
NTkwNDU5YTRmODcxYWNkLi5jMDhmOTc4NmYwZWFhYjRhOTc1YmI1NjQ4Yzc0MjdjNTYzNmRiZTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
QEAgLTkxMiw3ICs5MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWxlbWVudERpZEZvY3VzKGNv
bnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mIGluZm9ybWF0aW9uLAogICAgIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MoKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKTsKICAgICBpZiAobV9lZGl0b3JTdGF0ZS5pc01pc3Np
bmdQb3N0TGF5b3V0RGF0YSkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBl
bGltaW5hdGUgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyBhbHRvZ2V0aGVyLCBp
biBmYXZvciBvZiBvbmx5IGRlZmVycmluZyBhY3Rpb25zIHRoYXQgYXJlIGRlcGVuZGVudCBvbiBw
b3N0LWxheW91dCBlZGl0b3Igc3RhdGUgaW5mb3JtYXRpb24uCi0gICAgICAgIG1fZGVmZXJyZWRF
bGVtZW50RGlkRm9jdXNBcmd1bWVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnREaWRGb2N1
c0FyZ3VtZW50cz4oRWxlbWVudERpZEZvY3VzQXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVzZXJJ
c0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNOb2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgdXNl
ckRhdGFPYmplY3QgfSk7CisgICAgICAgIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVu
dHMgPSBtYWtlVW5pcXVlPEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cz4oRWxlbWVudERpZEZvY3Vz
QXJndW1lbnRzIHsgaW5mb3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVyUHJldmlvdXNO
b2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgdXNlckRhdGFPYmplY3QgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKFJl
ZjxXCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gV2Vi
UGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgUEtQYXltZW50
UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJv
eHksIHBheW1lbnRSZXF1ZXN0KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyPihwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJl
cXVlc3QpOwogfQogCiBVSVZpZXdDb250cm9sbGVyICpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29y
ZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNj
cmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCmluZGV4IDhi
MTIzYjBhOTdjMDMwZTk0NTBmNWVkNGY4YzE3NGIzMjFiYjQwN2IuLjhmZjhhMGJmNDc1YjNmN2Iy
MzYyMjlmNDEyZTNmMzI2NmNmOTU5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250
cm9sbGVyLm1tCkBAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBXS0Z1bGxT
Y3JlZW5WaWV3Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29yZTo6
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVy
ICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IDgzNDM0ODg5Y2RjZjI0OWMx
YzI3OTFiZDA3YmZmZmEyMDFjZjQ4N2QuLmE5MTI5NTNlYzkxYzI3MzM2MjY3NjNkYWY5ZGEyNmIy
NDkzM2M2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVu
dEltcGwoTlNWaWV3KiB2aWV3LCBXS1dlYlZpZXcgKndlYlZpZXcpCiAgICAgOiBQYWdlQ2xpZW50
SW1wbENvY29hKHdlYlZpZXcpCiAgICAgLCBtX3ZpZXcodmlldykKICNpZiBVU0UoRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKLSAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpKQorICAgICwgbV9hbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI+KCkpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggNDNlOWY5
NjdiYzg5NzdmYmZmOGM4NjY4YTVjY2ExZjM4MjRjMDgwOS4uMzRhNjliYmUwYmIwZDE3NmI1NTFi
YWYyZDdhMzVjMWZhYWMwMzdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTU0LDYgKzU0
LDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50
ZXJ2YWwgPSAxOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCA6IFdlYkNvcmU6OlZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyICpwYXJl
bnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIApAQCAtMTUwLDcgKzE1MSw3IEBAIC0gKGlkKWlu
aXRXaXRoV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyB3ZWJWaWV3OihOU1ZpZXcgKil3ZWJWaWV3
IHBhZ2U6KFdlYktpdDo6CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogICAgIF9wYWdlID0gJnBh
Z2U7CiAKLSAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVu
dD4oKTsKKyAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4oKTsK
ICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LT5zZXRQYXJlbnQoc2VsZik7CiAKICAgICBbc2Vs
ZiB2aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQppbmRleCA2NjAzMTdjMmZiYzc5YjY4
YmI1YjczNDc2YTU4YmVmZWEwOWIwNmQzLi42OWQ5ZDllMmQ0NDQ4NDNkMTUyNzBmNTExN2Y3NzRj
ZDIzN2Q1ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0
RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRG
aW5kZXJDbGllbnQubW0KQEAgLTU1LDYgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgVGV4dEZpbmRlckZpbmRDbGllbnQgOiBwdWJs
aWMgQVBJOjpGaW5kTWF0Y2hlc0NsaWVudCwgcHVibGljIEFQSTo6RmluZENsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGV4dEZpbmRl
ckZpbmRDbGllbnQoV0tUZXh0RmluZGVyQ2xpZW50ICp0ZXh0RmluZGVyQ2xpZW50KQogICAgICAg
ICA6IG1fdGV4dEZpbmRlckNsaWVudCh0ZXh0RmluZGVyQ2xpZW50KQpAQCAtMTY4LDggKzE2OSw4
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdlYktpdDo6V2ViUGFnZVByb3h5Jilw
YWdlIHZpZXc6KE5TVmlldyAqKXZpZXcgdXNlCiAgICAgX3ZpZXcgPSB2aWV3OwogICAgIF91c2VQ
bGF0Zm9ybUZpbmRVSSA9IHVzZVBsYXRmb3JtRmluZFVJOwogICAgIAotICAgIF9wYWdlLT5zZXRG
aW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRD
bGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0Rmlu
ZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50Pihz
ZWxmKSk7CisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRG
aW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggZWQwZDVmZmU5NTg5Zjk1ZTQ0YTA3ZjIyMThlZDgyYzAwZjAxN2Q3ZS4uZTc0
YWRhYzFlNjVlYmU1Yzk5YjMxZDkwNjdhZTYxMTU4ZjM5ODdmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAK
QEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6ZGlkQ2xvc2Uo
Q29ubmVjdGlvbklEKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QoQ29ubmVj
dGlvbklEIGNvbm5lY3Rpb25JRCwgVGFyZ2V0SUQgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgdHlw
ZSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJlKHN0
ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlvbklE
LCB0YXJnZXRJRCwgJnR5cGVdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVt
b3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBlKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBj
b25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBlKTsKICAgICB9KTsKIAogICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
MWI2ZDljYzU0ZmM2MGI1M2U0NDAyNzFmMjMwOGU3YzBmNDdjODc0Yy4uYTg4MzNmNjI0ODdmOWE2
NzIxMDM5OWVjOWY4ZmY1ZTA5MjcxMmVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTg0LDExICs4NCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8qIGNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUo
cmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBbdGhpcywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJM
Lmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVz
dFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRo
aXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIAogICAgIC8vIFNldHVwIHRhcmdl
dCBwb3N0TWVzc2FnZSBsaXN0ZW5lcgotICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50Pigq
dGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkp
OworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFr
ZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVz
ZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIHBhZ2VQcm94eS5wYWdlR3JvdXAo
KS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFu
ZGxlci5nZXQoKSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGh0bWxCdWlsZGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKaW5k
ZXggYjY3ZDczYTRkYzQ4OGIzMWZkYzlhNDcyMTk2OTE0MDQyNzQ0ODgyNS4uNWQ1MGFlNTU0Njgw
YTZlOWUzZGEyY2U4NGJlNTY0ZDVjMzIzN2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3Jl
QmFja2VuZERpcmVjdDJEPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw+KG1f
c2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2lu
Z1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsK
IH0KIAogdm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJU
YXJnZXQsIGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d2luL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBjZDZmMDhmZjE4YmQ1NWMxNTU0NDYzZDRhNDBi
NTFlNDViMmVhYjlmLi4wMzA3YzRmOWYxNDNmODZkYzYyMDhiNDg0YmU4ZGI0MjJkYzBmNDE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdlYlZpZXcmIHZp
ZXcpCiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVf
cHRyPERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVBy
b3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKm1fdmlldy5wYWdlKCks
IHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNs
aWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggY2Q1MzUyZGY3
YWEwNGU2OWQ5YjBmOThlZDAwMWU1YzYzMzJmNzU5My4uNjdlNWU0YjI3YTNhZTgwYWI2NjhmNmMz
NDE3YzBmMGNlNmI3ZjA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cApAQCAtMjE4LDcgKzIxOCw3IEBAIGJvb2wgV2ViVmlldzo6cmVnaXN0ZXJXZWJWaWV3V2luZG93
Q2xhc3MoKQogfQogCiBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQYWdl
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYXJlbnRXaW5kb3cpCi0gICAgOiBt
X3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQorICAg
IDogbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKIHsKICAg
ICByZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKaW5kZXgg
YjZkNGEwNDIwZDVhNWRiZDY0NjA4M2FmNjc4ODA1MWJmNmNjNDdlMC4uZjJkNjJlYTk3OTBmODA3
YTY1YjVkM2U1OGY4MGI5N2YwNmFkYmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaApAQCAtNTEsNiAr
NTEsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiBjbGFzcyBXZWJQYWdlOwog
CiBjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3IgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2
YXRlIElQQzo6TWVzc2FnZVNlbmRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBl
eHBsaWNpdCBXZWJQYXltZW50Q29vcmRpbmF0b3IoV2ViUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKaW5k
ZXggNGY4MTBjY2YzOGVjZmEyYzk5ZWNiZGE4OWQwNDFjZWI4ZDIzMzNiOC4uYWFiMzQ1N2NlZDY0
YTVhOTEwY2RjNTYyYWNjMDExNTAwZDNjNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIHZvaWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0aWFsR2FtZXBhZHMoY29uc3Qg
VmVjdG9yPEdhbWVwYWREYXRhPiYgZ2FtZXBhZERhCiAgICAgICAgIGlmIChnYW1lcGFkRGF0YXNb
aV0uaXNOdWxsKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtX2dhbWVwYWRz
W2ldID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YXNbaV0pOworICAg
ICAgICBtX2dhbWVwYWRzW2ldID0gbWFrZVVuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0YXNb
aV0pOwogICAgICAgICBtX3Jhd0dhbWVwYWRzW2ldID0gbV9nYW1lcGFkc1tpXS5nZXQoKTsKICAg
ICB9CiB9CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgV2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFk
Q29ubmVjdGVkKGNvbnN0IEdhbWVwYWREYXRhJiBnYW1lcGFkRGF0YSkKIAogICAgIEFTU0VSVCgh
bV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSk7CiAKLSAgICBtX2dhbWVwYWRzW2dhbWVw
YWREYXRhLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0
YSk7CisgICAgbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IG1ha2VVbmlxdWU8V2Vi
R2FtZXBhZD4oZ2FtZXBhZERhdGEpOwogICAgIG1fcmF3R2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5k
ZXgoKV0gPSBtX2dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldLmdldCgpOwogCiAgICAgZm9y
IChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5oCmluZGV4IGZkNjUyM2Q2ZmE3ZDc1OTNkMWI4ZDNiMzJiYWI0
NjNhOTY4ZWFhMjguLjYzM2YyMmZkZmU0MjcyYjM5ZGUyNWVhMGU0YTBhMDRkN2NkZTZjYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0z
Nyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3Mg
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IDBi
YjRmMmI0MjFhM2VjMjI4NzU0ZTYzODI5ZDQxYWJiZTJlMDZmOGQuLmE2YzI4NzE2YWIxNjc4YWZk
ZDU3NGM5ZGY5ZmUyODY4NjM0NjMwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgY2xhc3MgV2ViUHJvY2VzczsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IFdlYkdlb2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcAppbmRleCBmM2VjNzIwODdjYTI4ODY3ZjU0ZDlkZjBmNTBkODcxMDJlMDE2ZmEy
Li5jYTg1ZDU4NWRjZjFiNzZlZjBiOGQxMWQ1OWFkNjYwNGFjM2YxODZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVHZXRUeXBlSUQoKQog
CiB2b2lkIFdLQnVuZGxlU2V0Q2xpZW50KFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVD
bGllbnRCYXNlICp3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5z
ZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50Pih3
a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnNldENsaWVudChtYWtl
VW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tCdW5kbGVTZXRTZXJ2aWNlV29ya2VyUHJveHlDcmVhdGlvbkNhbGxiYWNrKFdLQnVuZGxl
UmVmIGJ1bmRsZVJlZiwgdm9pZCAoKmNhbGxiYWNrKSh1aW50NjRfdCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCmluZGV4IGYxMmE1YmE3NzRkNmNjNjhkMDg0ZjFmNjAyMWNlYmYzODFhYTNh
NTguLmRjMDc1OGFkNzVhZjM2MWRmYmU4MTZlYjExM2Y0MWM3ZjA5ZDgxY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFn
ZUdldFR5cGVJRCgpCiB2b2lkIFdLQnVuZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudEJhc2UqIHdr
Q2xpZW50KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIFdlYktpdDo6dG9JbXBs
KHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGll
bnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250
ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVm
KTsKICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpAQCAtODYsMjIgKzg2LDIyIEBAIHZvaWQg
V0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYs
IFdLQnVuZGxlUGFnZUNvbnRlCiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnRCYXNlKiB3a0Ns
aWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQod2tDbGllbnQgPyBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Pigqd2tDbGllbnQpIDogc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBh
Z2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVudCA/IG1ha2VVbmlx
dWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkgOiBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7CiB9CiAKIHZv
aWQgV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tC
dW5kbGVQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBs
KHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2Vi
S2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5p
cXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsKIH0K
IAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBX
ZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+
KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFJlc291
cmNlTG9hZENsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJl
ZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VM
b2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxv
YWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5Q2xp
ZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllbnRCYXNl
KiB3a0NsaWVudCkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGlj
eUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZQog
CiB2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZVBhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBs
KHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6
OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQg
V0tCdW5kbGVQYWdlU2V0RnVsbFNjcmVlbkNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwg
V0tCdW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCmluZGV4IGViZDNlZjVmMjkzMDhjMTQxOTNhMTgx
YjdlMWU0YTQyNWZkMjFkZDIuLjY5ZjdhZjIyYjU2NzUwNGQ0ZjMxZjBkN2E3MGI4NzRlMDlmYTU1
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKQEAgLTU0LDYg
KzU0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZU92ZXJs
YXlBY2Nlc3NpYmlsaXR5Q2xpZW50QmFzZT4gewogfQogCiBjbGFzcyBQYWdlT3ZlcmxheUNsaWVu
dEltcGwgOiBBUEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZT4sIHB1Ymxp
YyBXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VPdmVybGF5Q2xpZW50SW1wbChXS0J1
bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZSogY2xpZW50KQogICAgIHsKQEAgLTIxNiw3ICsyMTcs
NyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VPdmVybGF5R2V0VHlwZUlEKCkKIAogV0tCdW5kbGVQ
YWdlT3ZlcmxheVJlZiBXS0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlKFdLQnVuZGxlUGFnZU92ZXJs
YXlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4od2tDbGllbnQpOworICAgIGF1dG8gY2xp
ZW50SW1wbCA9IG1ha2VVbmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7CiAg
ICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6OldlYlBhZ2VPdmVybGF5OjpjcmVhdGUoV1RGTW92ZShj
bGllbnRJbXBsKSkubGVha1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dL
QnVuZGxlUGFnZUJhbm5lck1hYy5tbQppbmRleCBhY2MzNWEyMWI1OWYxYWEzMWUzMzA1MWE2NmJj
MTMwNTk5NjY5OWQzLi5kNmZmZDFjY2MwNGE5M2E3YTA5ZDJiMzY1NTlhOGYwYzA5NTBmZjE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
bWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQpAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBjbGFzcyBQYWdlQmFubmVyQ2xpZW50SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFn
ZUJhbm5lckNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUJhbm5lcjo6Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlQmFubmVyQ2xp
ZW50SW1wbChXS0J1bmRsZVBhZ2VCYW5uZXJDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAt
MTAzLDcgKzEwNCw3IEBAIFdLQnVuZGxlUGFnZUJhbm5lclJlZiBXS0J1bmRsZVBhZ2VCYW5uZXJD
cmVhdGVCYW5uZXJXaXRoQ0FMYXllcihDQUxheWVyICpsYXllciwKICAgICBpZiAod2tDbGllbnQg
JiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXV0byBjbGll
bnRJbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VCYW5uZXJDbGllbnRJbXBsPih3
a0NsaWVudCk7CisgICAgYXV0byBjbGllbnRJbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VC
YW5uZXJDbGllbnRJbXBsPih3a0NsaWVudCk7CiAgICAgcmV0dXJuIHRvQVBJKCZXZWJLaXQ6OlBh
Z2VCYW5uZXI6OmNyZWF0ZShsYXllciwgaGVpZ2h0LCBjbGllbnRJbXBsLnJlbGVhc2UoKSkubGVh
a1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNw
cAppbmRleCA0MjEwMWY4YzgyY2IyYTU0ODNiYWU0ZGM4NDgwN2I0MTY1YTkyZDg2Li4yMmI0MGU0
MzliYmI2MDE1ZTE4YWE4YzI1NThlMGU2OTNmNWViMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHN0cnVjdCBET01PYmplY3RDYWNoZURhdGEgeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBET01PYmplY3RDYWNoZURhdGEoR09iamVjdCogd3JhcHBl
cikKICAgICAgICAgOiBvYmplY3Qod3JhcHBlcikKICAgICAgICAgLCBjYWNoZVJlZmVyZW5jZXMo
MSkKQEAgLTc3LDE1ICs3OCw4IEBAIHN0YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJN
YXAmIGRvbU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcnMoKQogICAgIHJldHVybiBtYXA7CiB9CiAK
LXN0YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0
Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKLXsKLSAgICBET01PYmpl
Y3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RDYWNo
ZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZmcmFtZSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5p
c05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXI+KGZyYW1lKTsKLSAgICByZXR1cm4gKnJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KIGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNl
cnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRE9NT2JqZWN0Q2FjaGVG
cmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKICAgICAgICAgOiBGcmFtZURlc3Ry
dWN0aW9uT2JzZXJ2ZXIoJmZyYW1lKQpAQCAtMTA1LDcgKzk5LDcgQEAgY2xhc3MgRE9NT2JqZWN0
Q2FjaGVGcmFtZU9ic2VydmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlv
bk9ic2VydmUKICAgICAgICAgaWYgKGRvbVdpbmRvdyAmJiAoIW1fZG9tV2luZG93T2JzZXJ2ZXIg
fHwgbV9kb21XaW5kb3dPYnNlcnZlci0+d2luZG93KCkgIT0gZG9tV2luZG93KSkgewogICAgICAg
ICAgICAgLy8gTmV3IERPTVdpbmRvdywgY2xlYXIgdGhlIGNhY2hlIGFuZCBjcmVhdGUgYSBuZXcg
RE9NV2luZG93T2JzZXJ2ZXIuCiAgICAgICAgICAgICBjbGVhcigpOwotICAgICAgICAgICAgbV9k
b21XaW5kb3dPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+KCpk
b21XaW5kb3csICp0aGlzKTsKKyAgICAgICAgICAgIG1fZG9tV2luZG93T2JzZXJ2ZXIgPSBtYWtl
VW5pcXVlPERPTVdpbmRvd09ic2VydmVyPigqZG9tV2luZG93LCAqdGhpcyk7CiAgICAgICAgIH0K
IAogICAgICAgICBtX29iamVjdHMuYXBwZW5kKCZkYXRhKTsKQEAgLTE5MSw2ICsxODUsMTQgQEAg
Y2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9NV2luZG93T2Jz
ZXJ2ZXI+IG1fZG9tV2luZG93T2JzZXJ2ZXI7CiB9OwogCitzdGF0aWMgRE9NT2JqZWN0Q2FjaGVG
cmFtZU9ic2VydmVyJiBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJD
b3JlOjpGcmFtZSYgZnJhbWUpCit7CisgICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFw
OjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygpLmFkZCgm
ZnJhbWUsIG51bGxwdHIpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyPihmcmFtZSk7CisgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworfQorCiB0
eXBlZGVmIEhhc2hNYXA8dm9pZCosIHN0ZDo6dW5pcXVlX3B0cjxET01PYmplY3RDYWNoZURhdGE+
PiBET01PYmplY3RNYXA7CiAKIHN0YXRpYyBET01PYmplY3RNYXAmIGRvbU9iamVjdHMoKQpAQCAt
MjE1LDcgKzIxNyw3IEBAIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dCh2b2lkKiBvYmplY3RIYW5k
bGUsIHZvaWQqIHdyYXBwZXIpCiB7CiAgICAgRE9NT2JqZWN0TWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gZG9tT2JqZWN0cygpLmFkZChvYmplY3RIYW5kbGUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4o
R19PQkpFQ1Qod3JhcHBlcikpOwogfQogCiB2b2lkIERPTU9iamVjdENhY2hlOjpwdXQoV2ViQ29y
ZTo6Tm9kZSogb2JqZWN0SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQpAQCAtMjI0LDcgKzIyNiw3IEBA
IHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5kbGUsIHZv
aWQqIHdyYXBwZXIpCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2Jq
ZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7
CiAgICAgaWYgKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IG9iamVjdEhhbmRsZS0+ZG9jdW1lbnQo
KS5mcmFtZSgpKQogICAgICAgICBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZl
cigqZnJhbWUpLmFkZE9iamVjdENhY2hlRGF0YSgqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5k
ZXggNGNjZWM2MmVmMGUxMTMxZmExM2Y3ZmIwNjBjODBlMDdlZTQyNTFhZi4uNGQ3NDJlNDA5YmJm
YzdjZmFiNDA4Y2Q2NTM4YWVmOWYyMjhmZDcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2Vi
S2l0RXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlhbGl6ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlLCBB
UEk6Ok9iamVjdCogdXNlCiAgICAgc2Nhbk1vZHVsZXMod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwg
bW9kdWxlUGF0aHMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5z
aXplKCk7ICsraSkgewotICAgICAgICBhdXRvIG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9k
dWxlPihtb2R1bGVQYXRoc1tpXSk7CisgICAgICAgIGF1dG8gbW9kdWxlID0gbWFrZVVuaXF1ZTxN
b2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKICAgICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbiht
b2R1bGUuZ2V0KCksIHVzZXJEYXRhLmdldCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdl
YkVkaXRvci5jcHAKaW5kZXggMDQwNzJlYjg2NGRiZTM1ZjgwZGZjODZhZDBlODgzYzNlOTljZTQ0
Zi4uY2NiNTFlMGQ5NjQwYzY2Zjg1OTZlNDc0MTcxNDA1OGU5MTM5NzY4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdl
YkVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0V2Vi
RWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIHsK
ICAgICBXZWJLaXRXZWJFZGl0b3IqIGVkaXRvciA9IFdFQktJVF9XRUJfRURJVE9SKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfRURJVE9SLCBudWxscHRyKSk7CiAgICAgZWRpdG9yLT5wcml2
LT53ZWJQYWdlID0gd2ViUGFnZTsKLSAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+
c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRWRpdG9y
Q2xpZW50PihlZGl0b3IpKTsKKyAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQYWdlKS0+c2V0
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQobWFrZVVuaXF1ZTxQYWdlRWRpdG9yQ2xpZW50Pihl
ZGl0b3IpKTsKICAgICByZXR1cm4gZWRpdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4IDRhMjNiZjU2MDEwN2MzMWYxYTRkZTJjOTYxMjk5
YTcwMTA4MTc1MDEuLmUzMDZlM2ZlZjI2MzFkNTQ2NjU1NzExNmU1ZTQ4N2QzNzFjNzg1NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBAIC0xOTYsNyAr
MTk2LDcgQEAgY2xhc3MgV2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQgZmluYWwgOiBw
dWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW4KIFdlYktpdFdlYkV4dGVuc2lvbiogd2Vi
a2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiB7CiAgICAgV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lPTihnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiwgTlVMTCkpOwotICAgIGJ1bmRsZS0+c2V0
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+
KGV4dGVuc2lvbikpOworICAgIGJ1bmRsZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViRXh0ZW5z
aW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4dGVuc2lvbikpOwogICAgIHJldHVybiBleHRlbnNp
b247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCBjZmM1MDMx
ZWQ2ZTRhMjk1NGZlMDJhMDNkYTg3YTE2MWNkMmQzMDgyLi5jOTIwNGIyMzk4MWQ3ZjE3YWQwNzNi
OWVkNDEyYTg3NzY4NWNlN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3Bw
CkBAIC05NSw2ICs5NSw3IEBAIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRXZWJQYWdlLCB3ZWJr
aXRfd2ViX3BhZ2UsIEdfVFlQRV9PQkpFQ1QpCiBzdGF0aWMgdm9pZCB3ZWJGcmFtZURlc3Ryb3ll
ZChXZWJGcmFtZSopOwogCiBjbGFzcyBXZWJLaXRGcmFtZVdyYXBwZXIgZmluYWw6IHB1YmxpYyBG
cmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYktpdEZyYW1lV3JhcHBlcihXZWJGcmFtZSYgd2ViRnJhbWUpCiAgICAg
ICAgIDogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKHdlYkZyYW1lLmNvcmVGcmFtZSgpKQpAQCAt
MTI4LDcgKzEyOSw3IEBAIHN0YXRpYyBXZWJLaXRGcmFtZSogd2Via2l0RnJhbWVHZXRPckNyZWF0
ZShXZWJGcmFtZSogd2ViRnJhbWUpCiAgICAgaWYgKHdyYXBwZXJQdHIpCiAgICAgICAgIHJldHVy
biB3cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dEZyYW1lV3JhcHBlcj4gd3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RnJhbWVXcmFw
cGVyPigqd2ViRnJhbWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+
IHdyYXBwZXIgPSBtYWtlVW5pcXVlPFdlYktpdEZyYW1lV3JhcHBlcj4oKndlYkZyYW1lKTsKICAg
ICB3cmFwcGVyUHRyID0gd3JhcHBlci5nZXQoKTsKICAgICB3ZWJGcmFtZU1hcCgpLnNldCh3ZWJG
cmFtZSwgV1RGTW92ZSh3cmFwcGVyKSk7CiAgICAgcmV0dXJuIHdyYXBwZXJQdHItPndlYmtpdEZy
YW1lKCk7CkBAIC02NzgsMTEgKzY3OSwxMSBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdl
Q3JlYXRlKFdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IFdFQktJ
VF9XRUJfUEFHRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1BBR0UsIE5VTEwpKTsKICAg
ICBwYWdlLT5wcml2LT53ZWJQYWdlID0gd2ViUGFnZTsKIAotICAgIHdlYlBhZ2UtPnNldEluamVj
dGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJlc291cmNl
TG9hZENsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VMb2FkZXJDbGllbnQ+KHBhZ2UpKTsKLSAg
ICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5q
ZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VVSUNsaWVudD4ocGFnZSkp
OwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5k
bGVSZXNvdXJjZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Pihw
YWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1h
a2VVbmlxdWU8UGFnZUxvYWRlckNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVj
dGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ29udGV4dE1lbnVDbGll
bnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1ha2VV
bmlxdWU8UGFnZVVJQ2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5k
bGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUZvcm1DbGllbnQ+KHBhZ2UpKTsKIAogICAgIHJl
dHVybiBwYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQppbmRl
eCA4MTA1NWNlN2ZkZWJhMzE4ZGFiMDY4MjYzNGM2YmQ4NGEzN2ZhZThjLi4wODRmMzAwNWQ2MTAz
ZDRlMjUwMzNjMjU2YzcwYzBlMDY0MDQxY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRl
eHRJdGVyYXRvci5tbQpAQCAtNDUsNyArNDUsNyBAQCAtIChpZClpbml0V2l0aFJhbmdlOihXS0RP
TVJhbmdlICopcmFuZ2UKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBfdGV4dEl0ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+
KFdlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFuZ2UpKTsKKyAgICBfdGV4dEl0ZXJhdG9yID0gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KFdlYktpdDo6dG9XZWJDb3JlUmFuZ2UocmFu
Z2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tCmluZGV4IDQ4ODAwYmIzMTc5MDY1ZTRlNzMyOTMwNjkwNTQ2ODBlNDM0YWYxZmYuLjQyMDIz
OTZhYmFmYWYzMGQ3MTg5YWViNjg1MDllYTI3MTcxYjk3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KQEAgLTU0NCw3ICs1NDQsNyBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdh
dGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVsZWdh
dAogICAgIH07CiAKICAgICBpZiAoZm9ybURlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0SW5q
ZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4oc2VsZikp
OworICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8
Rm9ybUNsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVk
QnVuZGxlRm9ybUNsaWVudChudWxscHRyKTsKIH0KQEAgLTY3Myw3ICs2NzMsNyBAQCAtICh2b2lk
KV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdh
dGU+KWVkaXRpbmdEZWxlZwogICAgIH07CiAKICAgICBpZiAoZWRpdGluZ0RlbGVnYXRlKQotICAg
ICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxDbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KG1ha2VVbmlxdWU8Q2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFn
ZS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQobnVsbHB0cik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAppbmRleCAyMGNlNTU5MTFkNzA2NTFjMzM1YTcwYWNmMjRlNWJkZmMyMWJkNjMxLi45
OTc5ZDYzODRkZmY1Yzk4MDU5MWYyOTA4M2M5MzcyOTYzNDRhOTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVk
QnVuZGxlOjpjcmVhdGUoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYQogSW5qZWN0
ZWRCdW5kbGU6OkluamVjdGVkQnVuZGxlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3BhdGgocGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBh
dGgpCiAgICAgLCBtX3BsYXRmb3JtQnVuZGxlKDApCi0gICAgLCBtX2NsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKSkKKyAgICAsIG1fY2xpZW50KG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpKQogewogfQogCkBAIC0xMTQs
NyArMTE0LDcgQEAgSW5qZWN0ZWRCdW5kbGU6On5JbmplY3RlZEJ1bmRsZSgpCiB2b2lkIEluamVj
dGVkQnVuZGxlOjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OkNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCk7CisgICAg
ICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCk7
CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAppbmRleCAwY2E1ZWE2ZDJhYmU1NzIxNTRkMjFiZWQwY2M5
YTA1M2U3ZDY2YzE4Li5iZmIzZDA0NTE0MzczNmMzMWRmOTg4YWIxYjAwZGU0MmI4NTMwODk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xhc3MgV2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
cihXZWJQcm9jZXNzJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmgKaW5kZXggZDdjNWM2ODM0NGI3MjczOGQ5NDk3ZGYwMTJjYTM3NmJiODQxODhkYS4u
YjBiZDUzNGNlMTlkNzM4NjFkODE3NmE4MjA1Y2RjZTYxOTVmZDA2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI+LCBwcml2YXRlIFdlYkNvcmU6Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBhZ2UmKTsKICAgICB+VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA3
MzM1Mjc2NTg3MWQ4MjU1YTIzZGI3YjU1ZTZkNDRlZTczMzkyMmQ3Li4yZTU3YWYyNDgzYmQzNmIz
ZGQ4NWU0ZWMxOGRkZTEwZjQ0MzZlODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTMyLDM4ICsxMzIsMTEg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kTWVzc2Fn
ZShUJiYgbWVzc2FnZSwgc2l6ZV90IGJ5dGUKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi1XZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQotewotICAgIGF1dG8gYnl0ZUxlbmd0aCA9IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMoKTsK
LSAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCi0gICAgICAgIHJl
dHVybiBTZW5kRmFpbDsKLQotICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0
cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX3BlbmRp
bmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2Fn
ZSkpOwotCi0gICAgcmV0dXJuIFNlbmRTdWNjZXNzOwotfQotCi1XZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYg
YmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKLXsK
LSAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCi0gICAgICAgIHJl
dHVybiBTZW5kRmFpbDsKLQotICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERh
dGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmlu
YXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgp
OwotICAgIGVsc2UKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8UGVuZGluZ01lc3NhZ2U+KGJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgp
KTsKLQotICAgIHJldHVybiBTZW5kU3VjY2VzczsKLX0KLQogY2xhc3MgQmxvYkxvYWRlciBmaW5h
bCA6IHB1YmxpYyBXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCbG9iTG9hZGVyKFdlYkNvcmU6OkRvY3Vt
ZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6QmxvYiYgYmxvYiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICA6IG1fbG9hZGVyKHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcj4oV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRl
cjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpKQorICAgICAgICA6IG1fbG9hZGVyKG1ha2VVbmlx
dWU8V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcj4oV2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6
UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpKQogICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgewogICAgICAgICBtX2xvYWRlci0+c3Rh
cnQoZG9jdW1lbnQsIGJsb2IpOwpAQCAtMjI2LDcgKzE5OSw3IEBAIGNsYXNzIFBlbmRpbmdNZXNz
YWdlIHsKIAogICAgIFBlbmRpbmdNZXNzYWdlKFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCwg
V2ViQ29yZTo6QmxvYiYgYmxvYiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogICAgICAgICA6IG1fdHlwZShUeXBlOjpCbG9iKQotICAgICAgICAsIG1fYmxv
YkxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2JMb2FkZXI+KGRvY3VtZW50LCBibG9iLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpCisgICAgICAgICwgbV9ibG9iTG9hZGVyKG1ha2VVbmlx
dWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJsb2IsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KSkKICAgICB7CiAgICAgfQogCkBAIC0yNDQsMTMgKzIxNyw0MCBAQCBjbGFzcyBQZW5kaW5nTWVz
c2FnZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKIH07
CiAKK1dlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5z
aXplSW5CeXRlcygpOworICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3Ro
KSkKKyAgICAgICAgcmV0dXJuIFNlbmRGYWlsOworCisgICAgaWYgKG1fcGVuZGluZ01lc3NhZ2Vz
LmlzRW1wdHkoKSkKKyAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRD
aGFubmVsOjpTZW5kU3RyaW5nIHsgbWVzc2FnZSB9LCBieXRlTGVuZ3RoKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdl
PihtZXNzYWdlKSk7CisKKyAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Cit9CisKK1dlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5
QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVu
Z3RoKQoreworICAgIGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKKyAg
ICAgICAgcmV0dXJuIFNlbmRGYWlsOworCisgICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1w
dHkoKSkKKyAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVs
OjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0
ZUxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFr
ZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4oYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCkpOworCisgICAgcmV0dXJuIFNlbmRTdWNjZXNzOworfQorCiBXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoV2ViQ29yZTo6QmxvYiYgYmxvYikKIHsK
ICAgICAvLyBBdm9pZCB0aGUgQmxvYiBxdWV1ZSBhbmQgbG9hZGluZyBmb3IgZW1wdHkgYmxvYnMu
CiAgICAgaWYgKCFibG9iLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHNlbmQoSlNDOjpBcnJheUJ1
ZmZlcjo6Y3JlYXRlKGJsb2Iuc2l6ZSgpLCAxKSwgMCwgMCk7CiAKLSAgICBtX3BlbmRpbmdNZXNz
YWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obV9kb2N1bWVudC5n
ZXQoKSwgYmxvYiwgW3RoaXNdIHsKKyAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVu
aXF1ZTxQZW5kaW5nTWVzc2FnZT4obV9kb2N1bWVudC5nZXQoKSwgYmxvYiwgW3RoaXNdIHsKICAg
ICAgICAgd2hpbGUgKCFtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGF1dG8mIG1lc3NhZ2UgPSBtX3BlbmRpbmdNZXNzYWdlcy5maXJzdCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcAppbmRleCAwOTRhYzcxZjdlNWVmZmFiNzQ4NWZjZWZjYWU1NDg5M2RiM2Uw
NTA2Li4zZDg5ZGQ3ZGU1MzQ2MWM0YjNhNjdmNDMxNWIwMmQ1MDY0YTllMWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgQXN5bmNSZXNvbHZlckZhY3RvcnkgOiBw
dWJsaWMgd2VicnRjOjpBc3luY1Jlc29sdmVyRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwcml2YXRlOgogICAgIHJ0Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogQ3Jl
YXRlKCkgZmluYWwKICAgICB7CkBAIC00Niw3ICs0Nyw3IEBAIGNsYXNzIEFzeW5jUmVzb2x2ZXJG
YWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6QXN5bmNSZXNvbHZlckZhY3RvcnkgewogCiBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRDUHJv
dmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZl
ciYgb2JzZXJ2ZXIsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSogc29ja2V0RmFjdG9yeSwgd2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3Vy
YXRpb24pCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQ
ZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2ViUlRD
TmV0d29yaygpLm1vbml0b3IoKSwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJhdGlv
biksIHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOworICAgIHJldHVy
biBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2JzZXJ2
ZXIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9yKCks
ICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBtYWtlVW5pcXVlPEFzeW5j
UmVzb2x2ZXJGYWN0b3J5PigpKTsKIH0KIAogdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6ZGlzYWJs
ZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKCkKQEAgLTY1LDYgKzY2LDcgQEAgdm9pZCBMaWJXZWJS
VENQcm92aWRlcjo6cmVnaXN0ZXJNRE5TTmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IGRvY3UKIH0KIAogY2xhc3MgUlRDU29ja2V0RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBy
dGM6OlBhY2tldFNvY2tldEZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFJUQ1NvY2tldEZhY3RvcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcmJiB1c2VyQWdlbnQpCiAgICAgICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQpAQCAt
MTAyLDcgKzEwNCw3IEBAIGNsYXNzIFJUQ1NvY2tldEZhY3RvcnkgZmluYWwgOiBwdWJsaWMgcnRj
OjpQYWNrZXRTb2NrZXRGYWN0b3J5IHsKIAogc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UGFja2V0U29j
a2V0RmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVNvY2tldEZhY3RvcnkoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcmJiB1c2VyQWdlbnQpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UlRDU29ja2V0RmFjdG9yeT4oc2Vzc2lvbklELCBXVEZNb3ZlKHVzZXJB
Z2VudCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJUQ1NvY2tldEZhY3Rvcnk+KHNlc3Npb25J
RCwgV1RGTW92ZSh1c2VyQWdlbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENSZXNvbHZlci5oCmluZGV4IDVkNjM4M2Y2YjUwNjUzYjVjNjcwNzA3MDVjNmMxMDI4NzBm
YTAyMzEuLjM5OTA2OTlkMDc3OGZlYjE3YjBjYThlNjA3ODE0MTA4YTVjMDBhZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNv
bHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENSZXNvbHZlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTGliV2ViUlRDU29ja2V0RmFjdG9yeTsKIAogY2xhc3MgTGliV2ViUlRDUmVzb2x2ZXIgZmlu
YWwgOiBwdWJsaWMgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENSZXNvbHZlcih1aW50NjRfdCBp
ZGVudGlmaWVyKSA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1NvY2tldEZhY3RvcnkuY3BwCmluZGV4IGY4YjdlZDIyOWM0ZjZmMmRjMDM2MTMyY2M5NmU0
MTFlZWNhNTcwMmUuLjIzNTgyZGU3NTliOTg0NWViN2ZlNDA2NDQzNjVlZmJjMTliNzVkMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3Rh
dGljIGlubGluZSBydGM6OlNvY2tldEFkZHJlc3MgcHJlcGFyZVNvY2tldEFkZHJlc3MoY29uc3Qg
cnRjOjpTb2NrZXRBZGRyZXNzJgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENT
b2NrZXRGYWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRy
ZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0LCBpbnQgb3B0
aW9ucykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29j
a2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6
VHlwZTo6U2VydmVyVENQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0
byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVT
b2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwgYWRkcmVz
cywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVu
dGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlm
aWVyID0gc29ja2V0LT5pZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVz
cyhhZGRyZXNzLCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1h
eFBvcnQsIG9wdGlvbnNdKCkgewpAQCAtNjYsNyArNjYsNyBAQCBydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2NrZXQoY29uc3Qg
cnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5Ojpj
cmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBhZGRyZXNzLCB1aW50MTZf
dCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRp
ZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRk
cmVzcygpKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Pigq
dGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6
VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2NrZXRzLnNldChz
b2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJl
YWQoW2lkZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9IHByZXBhcmVT
b2NrZXRBZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKSwg
bWluUG9ydCwgbWF4UG9ydF0oKSB7CkBAIC04MCw3ICs4MCw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRT
b2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6
OlNvY2tlCiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6
OmNyZWF0ZUNsaWVudFRjcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGxvY2FsQWRk
cmVzcywgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIHVzZXJBZ2VudCwgaW50IG9wdGlvbnMpCiB7Ci0gICAg
YXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsr
c191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OkNsaWVudFRD
UCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VV
bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIs
IExpYldlYlJUQ1NvY2tldDo6VHlwZTo6Q2xpZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFk
ZHJlc3MpOwogICAgIHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05O
RUNUSU5HKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQu
Z2V0KCkpOwogCkBAIC05Niw3ICs5Niw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldl
YlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUNsaWVudFRjcFNvY2tldChjb25zdCBydGM6CiAKIHJ0
Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZU5ld0Nv
bm5lY3Rpb25Tb2NrZXQoTGliV2ViUlRDU29ja2V0JiBzZXJ2ZXJTb2NrZXQsIHVpbnQ2NF90IG5l
d0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJl
bW90ZUFkZHJlc3MpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENT
b2NrZXQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5sb2NhbEFkZHJl
c3MoKSwgcmVtb3RlQWRkcmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldl
YlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENT
b2NrZXQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1AsIHNlcnZlclNvY2tldC5sb2NhbEFkZHJl
c3MoKSwgcmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENTb2Nr
ZXQ6OlNUQVRFX0NPTk5FQ1RFRCk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZp
ZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTGliV2ViUlRD
U29ja2V0RmFjdG9yeTo6ZGV0YWNoKExpYldlYlJUQ1NvY2tldCYgc29ja2V0KQogCiBydGM6OkFz
eW5jUmVzb2x2ZXJJbnRlcmZhY2UqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUFzeW5j
UmVzb2x2ZXIoKQogewotICAgIGF1dG8gcmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1Jlc29sdmVyPigrK3NfdW5pcXVlUmVzb2x2ZXJJZGVudGlmaWVyKTsKKyAgICBhdXRvIHJl
c29sdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytzX3VuaXF1ZVJlc29sdmVy
SWRlbnRpZmllcik7CiAgICAgYXV0byogcmVzb2x2ZXJQb2ludGVyID0gcmVzb2x2ZXIuZ2V0KCk7
CiAgICAgbV9yZXNvbHZlcnMuc2V0KHJlc29sdmVyUG9pbnRlci0+aWRlbnRpZmllcigpLCBXVEZN
b3ZlKHJlc29sdmVyKSk7CiAgICAgcmV0dXJuIHJlc29sdmVyUG9pbnRlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuaAppbmRleCAyZDFlODQyNDdiZDBhMzBjOTRkMWYyZWEzMDFkZDU1ZDAy
YTZlMDc2Li5iMjcxM2Y0NmMxZmMxM2M5ZjI3YmJlMzljYTVkYzUxODUwYjE4M2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIFdlYlBhZ2U7
CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIDogcHVi
bGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3Mu
Y3BwCmluZGV4IDE2YTFhN2Y4MzQ0NjA1M2YzM2Q2NTRlODMzMzIyOTUwZWU5OTRkNzIuLmQ3M2Yx
ZjE2Zjg5MDc2OWM3MmNjOWRkNDQwZDIyOTIxZmY1ZmZhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rp
b25Qcm90ZWN0b3IgewogICAgIGV4cGxpY2l0IFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yKE5l
dHNjYXBlUGx1Z2luKiBwbHVnaW4pCiAgICAgewogICAgICAgICBpZiAocGx1Z2luKQotICAgICAg
ICAgICAgbV9wcm90ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbkNvbnRyb2xsZXI6OlBs
dWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihwbHVnaW4pLT5j
b250cm9sbGVyKCkpOworICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBtYWtlVW5pcXVlPFBsdWdp
bkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNfY2FzdDxQbHVn
aW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpOwogICAgIH0KICAgICAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjlhM2M5M2YxMzI2ZmE0YzZmN2ZlYmY4YWIxYjJjYTRj
Nzc2YmMwZS4uNTlmNDgyNTFmMjg4NTRjNmQxNjgwYjFkNjRkZmFhNWE0N2M2ODEwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIHVpbnQzMl90IE5ldHNjYXBl
UGx1Z2luOjpzY2hlZHVsZVRpbWVyKHVuc2lnbmVkIGludGVydmFsLCBib29sIHJlcGVhdCwgdm9p
ZCAoKnRpCiAgICAgLy8gRklYTUU6IEhhbmRsZSB3cmFwcGluZyBhcm91bmQuCiAgICAgdW5zaWdu
ZWQgdGltZXJJRCA9ICsrbV9uZXh0VGltZXJJRDsKIAotICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1
bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBp
bnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogICAgIAogICAgIC8vIEZJWE1FOiBCYXNlZCBv
biB0aGUgcGx1Zy1pbiB2aXNpYmlsaXR5LCBmaWd1cmUgb3V0IGlmIHdlIHNob3VsZCB0aHJvdHRs
ZSB0aGUgdGltZXIsIG9yIGlmIHdlIHNob3VsZCBzdGFydCBpdCBhdCBhbGwuCiAgICAgdGltZXIt
PnN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBlMGFiYzJjN2I0MTI5OTMwMDJiYmFi
OGJkZmFiN2YyNjUxYWRjNTdmLi5iNmM3NmI2ZWQ3MTRjYWFhM2E0MWRkZTQxYzFkNmExMDRmYjdh
ZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTMwOCw2ICszMDgsNyBAQCBjbGFzcyBOZXRz
Y2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4gewogICAgIFZlY3Rvcjxib29sLCA4PiBtX3BvcHVw
RW5hYmxlZFN0YXRlczsKIAogICAgIGNsYXNzIFRpbWVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbWVyKTsKIAogICAg
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAwNDk2Mjhm
NWM2MjcwMmU0ZDVkNDExMTgyMDEyM2JhNWY0Yjk2NTI0Li5iZGFhMTQ0Nzg0MjI2OTVkNTBlYTg0
OGFhZmNjYmNlMTJkMmFkOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRh
dGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAobV90cmFuc2Zlck1v
ZGUgIT0gTlBfQVNGSUxFT05MWSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAg
ICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1aW50OF90
Pj4oKTsKKyAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8dWlu
dDhfdD4+KCk7CiAKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2VydmVDYXBhY2l0eShtX2Rl
bGl2ZXJ5RGF0YS0+c2l6ZSgpICsgbGVuZ3RoKTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPmFw
cGVuZChieXRlcywgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3Bw
CmluZGV4IDQ0ZDExYjU3YzNlYTZkNTE4YzE4ZDA0YjgyMmQyODZkNTNlOTY4Y2YuLjA3ZDU1NmMz
YjdmYzYzNzE5YzJhMjU1OWUwYWFkNmMyMjZjMDdjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmNwcApAQCAtMTM2LDEwICsxMzYsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPE5l
dHNjYXBlUGx1Z2luWDExPiBOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2lu
JiBwbHUKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAocGx1Z2luLmlzV2luZG93ZWQoKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdp
biwgZGlzcGxheSwgd2luZG93SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXRzY2Fw
ZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3Bs
YXkpOwogfQogCiBOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQ
bHVnaW4mIHBsdWdpbiwgRGlzcGxheSogZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1
Z2luWDExLmgKaW5kZXggNDFlOWI2YzlkODRjYWE0OTU4ZTM4NWI5ZWQ4MGZkZDdlMTFkY2E1Yi4u
MWY5ZmQ4N2ZhM2EzMGM5MzYwNDM4ZWQ1OTdkYzMyYzg5NTg3YWYxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBOZXRzY2FwZVBsdWdpbjsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5YMTEgZmluYWwg
OiBwdWJsaWMgTmV0c2NhcGVQbHVnaW5Vbml4IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDEx
PiBjcmVhdGUoTmV0c2NhcGVQbHVnaW4mKTsKICAgICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2Fw
ZVBsdWdpbiYsIERpc3BsYXkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCBhMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEz
M2I4MWRmZjRkMTc2YjM1Li5iNTcyYWEzYTUzNmQ0ODVjYjliODE3YTE2ZTAyYzMzMmM0YmMyMTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29u
dHJvbGxlci5oCkBAIC0xNTksNiArMTU5LDcgQEAgY2xhc3MgUGx1Z2luQ29udHJvbGxlciB7CiAK
ICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRlbGF5aW5nIGRlc3RydWN0aW9uIG9mIGEgcGx1Zy1p
bi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7CisgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUGx1Z2lu
RGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoUGx1Z2luQ29udHJvbGxlciogcGx1Z2luQ29udHJvbGxlcikK
ICAgICAgICAgICAgIDogbV9wbHVnaW5Db250cm9sbGVyKHBsdWdpbkNvbnRyb2xsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXgg
ZjM3YzJjYzI0ZTNkZDk3NjNmM2ViZGQ2MzJkOGJmZGI3NzE0NDM0Ny4uOWFiNTgzNzMwYjg5ZGJk
OTYwMWQ2NTIwZWY4ZjliMGJlMDA2ZGM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtOTUsNyArOTUsNyBAQCBib29sIFBsdWdp
blByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgbV9j
b25uZWN0aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlzKTsKIAogICAgIC8vIEFzayB0aGUgcGx1Zy1p
biBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4uCi0gICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+
KCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gbWFrZVVuaXF1ZTxQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7CiAKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMtPnBsdWdpbkluc3RhbmNlSUQgPSBtX3BsdWdpbkluc3RhbmNlSUQ7CiAgICAg
bV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT53aW5kb3dOUE9iamVjdElEID0gd2lu
ZG93TlBPYmplY3RJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCA3YWI4OTY2ZGI5MDVhZGQxMjM5NDgxNjUwYjE5ZGU0YTdlN2Qy
MjNmLi4xMTlkMmI5MGMyYjQ0MjMxZjI1Njk1N2U2MmRkY2E4ZjEzMGZjNzMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtODk4LDcg
Kzg5OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3JlYXRlV2Vi
RXZlbnQoTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgaWYgKGV2ZW50Lm1ldGFLZXkoKSkK
ICAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJFdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkpOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBl
dmVudC5idXR0b25zKCksIG1fcGx1Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVu
dC5vZmZzZXRYKCksIGV2ZW50Lm9mZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlvbigpLCAw
LCAwLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5idXR0b25z
KCksIG1fcGx1Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVudC5vZmZzZXRYKCks
IGV2ZW50Lm9mZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAwLCBjbGlj
a0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7CiB9CiAKIHZvaWQgUGx1Z2luVmll
dzo6aGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDZmYzA5YzRmNjViMjQ1YjYwYmY0ZDRmNTk3YTlmOTBhZDRkMGFhZjkuLmEx
ZmYwMzNiMjA0ZWFmYWRjODg4YTgyMDhhODlmNzlkYTAwYmNmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2aWNlV29y
a2VyQ29udAogCiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBtb3ZlZCBkaXJl
Y3RseSB0byBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uCiAgICAgLy8gSWYg
aXQgd2VyZW4ndCBmb3IgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50J3MgZGVwZW5kZW5j
ZSBvbiBXZWJEb2N1bWVudExvYWRlciwgdGhpcyBjb3VsZCBhbHJlYWR5IGhhcHBlbi4KLSAgICBh
dXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyRnJh
bWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQsIG1fcGFnZUlELCArK21fcHJldmlvdXNT
ZXJ2aWNlV29ya2VySUQsIGVmZmVjdGl2ZVVzZXJBZ2VudCk7CisgICAgYXV0byBmcmFtZUxvYWRl
ckNsaWVudCA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PigqdGhp
cywgc2Vzc2lvbklELCBtX3BhZ2VJRCwgKyttX3ByZXZpb3VzU2VydmljZVdvcmtlcklELCBlZmZl
Y3RpdmVVc2VyQWdlbnQpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1h
aW5GcmFtZSA9IGZyYW1lTG9hZGVyQ2xpZW50LmdldCgpOwogICAgIG1fbG9hZGVycy5hZGQoV1RG
TW92ZShmcmFtZUxvYWRlckNsaWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKaW5kZXggOTIwZGVkMDQwY2U1NjE4MzM5
OWY2YzkzYjgyZWIzNmRmNzMwNDk2YS4uOTMwZTQ2MTgxOWUxODZmNWE4MGQ4ZjY3MTZmYjExOGM0
ZGMwZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dPcmlnaW5UYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXT3JpZ2luVGFibGUuaApAQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNXT3JpZ2luVGFibGUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNXT3JpZ2luVGFibGUo
KSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCA0
ZGY2ZjAxOWU1NTg1NzU1MmM4NGRmYWI5MjUwYzQwMWE4NGNiODM1Li5mNGNmMjkxYTQwMTBiMWU3
YzI0MTY3ZDQ1NGI1NGVjNGI4NjRjNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENs
aWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFn
ZTsKIAogY2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UqKTsKICAg
ICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggM2M4NzJmNWFkZjM5YmVhY2QzYTcwNjY3YjI2ODlkMzhjOWIxMTEyZS4uNGQyNzQ3
Njg2MjBlNWE0NmViOTUwOGZkZTQ3YjU3MWU3OTZmMTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTc5Myw3ICs3OTMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLAogCiBzdGQ6OnVu
aXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nl
cihDb2xvckNob29zZXJDbGllbnQmIGNsaWVudCwgY29uc3QgQ29sb3ImIGluaXRpYWxDb2xvcikK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2Us
ICZjbGllbnQsIGluaXRpYWxDb2xvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29sb3JD
aG9vc2VyPigmbV9wYWdlLCAmY2xpZW50LCBpbml0aWFsQ29sb3IpOwogfQogCiAjZW5kaWYKQEAg
LTgwMiw3ICs4MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29sb3JDaG9vc2VyPiBXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbAogCiBzdGQ6OnVuaXF1ZV9w
dHI8RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcihEYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50JiBjbGllbnQpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
PigmbV9wYWdlLCAmY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAppbmRleCBjZWQzNmE2YzI1YjdlNGY4MzQ0YTU4OTk0MDA2NzkxZjdjYzkyNzZmLi5k
NDU1NmQ5ODdhMzY2ZDE4MTE0MDhhZDkwYmY3YTM0N2RkNTk4ZGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViQ2hyb21lQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNocm9tZUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21l
Q2xpZW50KFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCA2YzI5
YjRlMDgxMjZlN2NkNjY3OWNjNDcwMjM1YzU1NzRkZTUwZDJlLi5jMWM4OWNkOTllODdhZWU4NGVk
NTc0NmMyZTgxZjY0N2U4MmYxZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAt
MzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNz
IFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0
TWVudUNsaWVudChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgKaW5kZXggMWFkNGMzZGUyY2I3ZDM4ZTYyNjJjMTk3YWFiMjRjY2E2ZmVkYTgyMS4uYjI0
ZWNmNzZjNDU1MjRmNjBkODZhZWQ2ZmIxZWNmNmYwZjM5NDIxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBA
IC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xh
c3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMjY4
MTAyZmVhMWE3NzU3ZWQ3ZTE2ZGRlY2NlM2NhZDhlZTZiZDQzNS4uZDIyZDRjYjczZjI5NzNmNTY1
NWE4NzNlYmQyMmQ2YjAwNmFlMGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMzcsNiArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkVkaXRv
ckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1YmxpYyBXZWJD
b3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9w
YWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDMwZjVhZDZiNGJjMmE2
MzhkNjAzN2Y4ZWM5NzM4MDlkZjZlNTZiMTguLjM1YTMxZmMyYTM0NGIzMTI4NzMwNTA0YjdmZTdh
MTE1ZjAxMWI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCkBAIC0zMiw2ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViR2VvbG9j
YXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50
KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCmluZGV4IDdjZGFhY2QxZmMxZDQ2ZDY1ZWFkYzNmM2E2MTM0YWEzNTU4YTJkMTEu
LmQ2N2I2MmMwMmU2ODgzYjQ0ODY1ZmJhMTU4NTE2ZWEwY2JjYjVjNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlm
ICghbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50KQotICAgICAgICBtX3BhaW50SW5kaWNhdG9y
TGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVu
dD4oKnRoaXMpOworICAgICAgICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBtYWtlVW5p
cXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRoaXMpOwogCiAgICAgYXV0byBwYWlu
dExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3Jh
cGhpY3NMYXllckZhY3RvcnkoKSwgKm1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCk7CiAgICAg
CkBAIC0xNjIsOSArMTYyLDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHBhaW50TGF5ZXItPnNldEJhY2tncm91bmRD
b2xvcihDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAwLjJmKSk7CiAKICAgICBLZXlmcmFtZVZhbHVl
TGlzdCBmYWRlS2V5ZnJhbWVzKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICBmYWRlS2V5
ZnJhbWVzLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEp
KTsKKyAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFs
dWU+KDAsIDEpKTsKIAotICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8
RmxvYXRBbmltYXRpb25WYWx1ZT4oMC4yNSwgMCkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0
KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMC4yNSwgMCkpOwogICAgIAogICAgIGF1
dG8gb3BhY2l0eUFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CiAgICAgb3BhY2l0eUFu
aW1hdGlvbi0+c2V0RHVyYXRpb24oMC4yNSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
ZjVlY2M2NGM5MjNmMzg2YzUwZTdiNTI5NzdlZmMwOTllMGJjZmFkNi4uMjdjM2VlMTQyZTE2MTZl
NDM1ZjQ4ZDQxZjI3MjcxNWZlOGUwMzgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAt
NDIsNiArNDIsNyBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgUmVwYWludEluZGljYXRvckxheWVy
Q2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50LCBwcml2YXRlIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogZnJpZW5kIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JM
YXllckNsaWVudDsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViUGFnZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCA1MzNiZTg0
MGNhZDcxNDU1NWRhZjBhYTIwNzI4YTNjOTMzNTVjOWJlLi40YmIzN2ZkZDYwNzc3NGVkODA5YTk2
N2E3NzUxNWZiYWZiNmVmNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggMTYzN2FkMTA5N2Q3NjQ5ZTUw
ZGY3NGY1ZTA2MjI3MjcxZmFiODQ1YS4uMDBjYzBhMDhkOTI2MDRmZGRmYjVjYTYyZjZiODg1OTVj
MzFhYjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dChXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKaW5kZXggNzkwMDg0Y2U0OGQyMjZiMTBlNjY1
YjgyODQ0MzQ5ZmRhYWZmZWU0Ni4uNjlmMGFlODI3OTUwN2I3Mjk2NWY2NWMyMTY4NzNjNDgxYWRm
NGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcApAQCAtNDUsNyArNDUs
NyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OmFkZE92ZXJyaWRlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cgogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vdmVy
cmlkZXNNYXAuYWRkKHBhc3RlYm9hcmROYW1lLCBudWxscHRyKTsKIAogICAgIGlmIChhZGRSZXN1
bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxTdHJpbmcs
IFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3Ry
aW5nLCBWZWN0b3I8dWludDhfdD4+PigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1h
cDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBtYWtlVW5pcXVlPEhhc2hNYXA8
U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PigpOwogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gV1RGTW92ZSh0eXBlTWFwKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAppbmRl
eCBmNmUwMTQ5NTdlZGMyNzdkYjk4MzczMTI3ZWMxMDYzZTkzNTU4Y2I4Li5jZjkwYTVkZmNmZGE2
M2VjYjk4OTdjYzY2ZDBkNDgxMjk0NDgxM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2Vi
UGx1Z0luQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlBsdWdJbkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViUGx1Z0luQ2xpZW50
KFdlYlBhZ2UmKTsKICAgICB2aXJ0dWFsIH5XZWJQbHVnSW5DbGllbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
cm9ncmVzc1RyYWNrZXJDbGllbnQuaAppbmRleCA1ZGQ2NWJmYTBkNTBjY2ZkYjE0NjFmZWIzZmU1
MjQxZmNhYTBmYmE2Li42M2Q3NzRlNWE5NDI3YzczNWI1MjQ5MGJkMDFjZDc5YWI3NGExMGU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlckNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViUHJvZ3Jl
c3NUcmFja2VyQ2xpZW50KFdlYlBhZ2UmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQuaAppbmRleCBlYWQxN2QzMGYwNTkwZDc0NDY3MjA1NWNhZDc3ZDk1YzZkMGE0Nzcw
Li43YmQ4NzU5MDVhNjVjNzdkOTZjM2Y3ODg0MDAxODU4MmNmYWY3NmM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKICAgICAKIGNsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudChX
ZWJQYWdlJiBwYWdlKQogICAgICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVu
dC5oCmluZGV4IDEwOTMwNDUzY2U3OTdlZGQ5MGRlNzZmMDM1NGI5YTFkNDA2ZjJlNmUuLjY5NTIx
NzRiOTEyYzk3MWUzNTc4NmUyN2M0ODIyNWQyZmNhMTQwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xp
ZW50LmgKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdl
OwogCiBjbGFzcyBXZWJVc2VyTWVkaWFDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lZGlh
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJV
c2VyTWVkaWFDbGllbnQoV2ViUGFnZSYpOwogICAgIH5XZWJVc2VyTWVkaWFDbGllbnQoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgKaW5kZXggMDBhMWUyZThlMjYz
MzU2M2MzMDY5OThkZDE1YTIxOGI5NmQxNjUxMi4uMDc0MTNjZmM5Mzk4NWZlNWQ5OWU5NDA2OGYx
NjE1ZjRiMjQ0YzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5LmgK
QEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBj
bGFzcyBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFRleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eShXZWJQYWdlJik7CiAgICAgflRleHRDaGVja2luZ0NvbnRy
b2xsZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDljZmZjYzlhOWZkMmI2NDQ0
OTIyZjg1NGFkOTdkMWQzMzFlNzBiMGUuLmIyNDU4MWM5N2U3YTg4MTZmNDZhZjkzMTlhOTFlYTIx
YjcyYmQ2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lk
IERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShHcmFwaGljc0xheQogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRMYXll
ckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgfSBlbHNlIHsKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91
bmlxdWU8TGF5ZXJUcmVlSG9zdD4obV93ZWJQYWdlKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
ID0gbWFrZVVuaXF1ZTxMYXllclRyZWVIb3N0PihtX3dlYlBhZ2UpOwogI2Vsc2UKICAgICAgICAg
bV9sYXllclRyZWVIb3N0ID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmluZGV4IGMwNzM5NmYw
MmYxZmE2NWY0NWFjZWU3MmYxMzRmNGZiMmQ5ZTg5MDkuLjUzNThjZDY4NjNiMzIyNjk1OGVlMjc0
ZWZkMDMyYWQyMDA2NGRkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RHJhd2luZ0FyZWE+IERyYXdpbmdBcmVhOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3Qg
V2ViUGFnZQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uOgotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2ViUGFn
ZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbmRpZgogICAgIGNhc2Ug
RHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPih3
ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKICNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykgfHwg
VVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIGNhc2UgRHJhd2luZ0FyZWFUeXBlQ29vcmRpbmF0ZWRH
cmFwaGljczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPih3ZWJQYWdlLCBwYXJhbWV0
ZXJzKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKaW5kZXggMGYyNjQwM2ViYjcwYTgxMWIxOGU5ODc5NWUx
OWRlNzc0MGJlODM2MC4uMWE1MzVmMTdkOTdmNjY2ODM5NzI2OWE4NmUyODU3YjI5Yjk3MmEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsK
IAogY2xhc3MgRmluZENvbnRyb2xsZXIgOiBwcml2YXRlIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZpbmRDb250cm9sbGVyKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRleCA0NTJmNTNiY2VkYzAwNDdmNzMzZDFj
MzRiY2Q3NjUxMTkyY2I4YmU2Li40NmU4YWEwOTk4NjQ1YThjZTVkMmQ3Yjk1N2Y5OWFmZGMzOGY0
NjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbnN1cmVC
YWNraW5nU3RvcmUoKQogICAgIEFTU0VSVChtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNo
ZWQpOwogCiAgICAgaWYgKCFtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlKQotICAgICAgICBtX3By
b3BlcnRpZXMuYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllckJhY2tp
bmdTdG9yZT4odGhpcyk7CisgICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBtYWtl
VW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPih0aGlzKTsKIAogICAgIHVwZGF0ZUJhY2tp
bmdTdG9yZSgpOwogfQpAQCAtNTIxLDcgKzUyMSw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6dHJhbnNmb3JtKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFs
dWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJh
bnNmb3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMudHJhbnNmb3JtID0g
bWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOwogICAgIG1fcHJvcGVydGll
cy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlRyYW5z
Zm9ybUNoYW5nZWQpOwogfQogCkBAIC01MzIsNyArNTMyLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRy
aXggUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0CiAKIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7Ci0gICAgbV9wcm9wZXJ0aWVzLnN1YmxheWVyVHJh
bnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUpOwor
ICAgIG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3Jt
YXRpb25NYXRyaXg+KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFu
Z2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQp
OwogfQogCkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7Ci0gICAgbV9wcm9wZXJ0
aWVzLmZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KGZpbHRlcnMp
OworICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gbWFrZVVuaXF1ZTxGaWx0ZXJPcGVyYXRpb25z
PihmaWx0ZXJzKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpGaWx0ZXJzQ2hhbmdlZCk7CiB9CiAKQEAgLTgyNiw3ICs4
MjYsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUgogICAgIGlmIChtX3Byb3BlcnRpZXMuc2hh
cGVSb3VuZGVkUmVjdCAmJiAqbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPT0gcm91bmRl
ZFJlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRS
ZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7Cisg
ICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPEZsb2F0Um91bmRl
ZFJlY3Q+KHJvdW5kZWRSZWN0KTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFu
Z2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTaGFwZVJvdW5kZWRSZWN0Q2hhbmdlZCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZVRpbGVkQmFja2luZy5jcHAKaW5kZXggMWNiZDFiNGJhNzlhN2RmOWNlNTVlMDQyMWQ0
NGU2NWI0MDg4MjFjMi4uMDk5NTM2YjkzYzAxMWFjM2YyYTA3M2MzY2E0NjRmMDcyNjQ2OWNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJl
bW90ZVRpbGVkQmFja2luZy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6UGxhdGZvcm1DQUxh
eWVyUmVtb3RlVGlsZWRCYWNraW5nKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXll
ckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBlLCBvd25lciwgY29udGV4dCkKLSAgICAsIG1f
dGlsZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhpcykpCisg
ICAgLCBtX3RpbGVDb250cm9sbGVyKG1ha2VVbmlxdWU8VGlsZUNvbnRyb2xsZXI+KHRoaXMpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KaW5kZXggNWU1MGUwYmExZWYxMjQ2YzZhZTA4ZjI5ZDkyYTgzMGUwZGI0ZjIzNy4u
NDQ0NmYzNGQwNGNjZmJmYmViMzY5YmE0NGMzMjA2YmYwZGQyM2VjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNTgsNyAr
NTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBEcmF3aW5nQXJl
YShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFJ
ZGVudGlmaWVyLCB3ZWJQYWdlKQotICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCisgICAgLCBtX3Jl
bW90ZUxheWVyVHJlZUNvbnRleHQobWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVDb250ZXh0Pih3
ZWJQYWdlKSkKICAgICAsIG1fcm9vdExheWVyKEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGlj
c0xheWVyRmFjdG9yeSgpLCAqdGhpcykpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcigqdGhpcywg
JlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycykKIHsKQEAgLTQyMyw3ICs0
MjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6V2lsbENv
bW1pdExheWVyVHJlZShsYXllclRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSkpOwogCiAgICAg
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJl
ZSBtZXNzYWdlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsKLSAgICBh
dXRvIGNvbW1pdEVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5jb2Rlcj4oTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6cmVj
ZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpD
b21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIGF1
dG8gY29tbWl0RW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5h
bWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExh
eWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgY29tbWl0RW5j
b2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgLy8gRklYTUU6IE1vdmUg
YWxsIGJhY2tpbmcgc3RvcmUgZmx1c2hpbmcgbWFuYWdlbWVudCB0byBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggYWFk
ZTNkOWYxODQ0ZDdmMDVjMDkyMThkOGUyMDQ0ZDU4YTJmMDVmOC4uYjJiZGM0MWI3MjMzNmJiNmU0
ODQ5MGY3MzFiMjQ4NWQyNzA3ODJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApA
QCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNs
YXNzIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKFdlYlBhZ2UmKTsKICAgICB+Vmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3RvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCmluZGV4IDYwY2ZkOGQyYTE3NTRhN2FjZWQ1OGQ2MWRmMTdiZTRjMTQzMTM2OTQu
LmJkZDRiMzk1MjU0YTcxNjc2MzlhZWNkNzM4NjBlMDcyZDY5YzQyZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBA
QCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdl
KiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVh
dGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7Ci0gICAgYXV0byBmcmFtZSA9IGNyZWF0
ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKKyAgICBhdXRvIGZy
YW1lID0gY3JlYXRlKG1ha2VVbmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOwogICAgIHBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2Ut
PmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCAxMzM2NTcwZDkzYWE1MTEwNjk3ODU2MTE3MDI2MDg5M2I4YTNjZGI0Li5kYjMyZGE0ODEzOWUx
OWY3MTQyMTI1NjU0MGEyMTYzMjM0Y2M5MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzgzLDIxICszODMsMjEgQEAgV2ViUGFnZTo6V2Vi
UGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogICAgICwgbV90ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkobWFrZVVuaXF1
ZVJlZjxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk+KCp0aGlzKSkKICNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi0gICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
PigqdGhpcykpCisgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IobWFrZVVuaXF1
ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCiAjZWxpZiBFTkFCTEUoQUND
RVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQogICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0
KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1fc2V0Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENhblN0YXJ0TWVkaWFUaW1lckZpcmVkKQogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKSkK
KyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYKLSAgICAsIG1fZWRpdG9yQ2xpZW50
IHsgc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkg
fQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fbG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKLSAgICAsIG1fcmVzb3Vy
Y2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3Vy
Y2VMb2FkQ2xpZW50PigpKQotICAgICwgbV91aUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkKKyAgICAsIG1fZWRpdG9yQ2xpZW50IHsg
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkgfQorICAgICwg
bV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4o
KSkKKyAgICAsIG1fbG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UGFnZUxvYWRlckNsaWVudD4oKSkKKyAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpKQorICAgICwgbV91
aUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkK
ICAgICAsIG1fZmluZENvbnRyb2xsZXIobWFrZVVuaXF1ZVJlZjxGaW5kQ29udHJvbGxlcj4odGhp
cykpCi0gICAgLCBtX2luc3BlY3RvclRhcmdldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0
b3JUYXJnZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRy
b2xsZXI+KCp0aGlzKSkKICAgICAsIG1fdXNlckNvbnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xs
ZXJJRCkpCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgICwgbV9nZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcihtYWtlVW5pcXVlUmVmPEdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyPigqdGhpcykpCkBAIC00NjQsMjEgKzQ2NCwyMSBAQCBXZWJQYWdlOjpXZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGx1Z0luQ2xpZW50ID0gbmV3IFdlYlBs
dWdJbkNsaWVudCgqdGhpcyk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9y
TWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQo
KnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKnRoaXMpOwotICAg
IHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZp
Z3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFu
Y2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+
KCp0aGlzKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJH
TFN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlz
XShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkgeworICAgIHBhZ2VDb25maWd1cmF0
aW9uLndlYkdMU3RhdGVUcmFja2VyID0gbWFrZVVuaXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4oW3Ro
aXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSB7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKGlzVXNp
bmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkpOwogICAgIH0pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5zcGVlY2hTeW50aGVzaXND
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRoaXMp
OworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRoZXNpc0NsaWVudCA9IG1ha2VVbmlx
dWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMpOwor
ICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gbWFrZVVuaXF1
ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMpOwogI2VuZGlmCiAKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9ICZXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpAQCAtNDkzLDE0ICs0OTMsMTQgQEAg
V2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigqdGhpcyk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50ID0gbWFrZVVu
aXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxp
Y2F0aW9uTWFuaWZlc3QgPSBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYK
IAotICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbikpOworICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbikpOwogCiAgICAgLy8gU2V0IHRoZSBzZXNzaW9uSUQgKmJlZm9yZSogdXBkYXRp
bmcgdGhlIHByZWZlcmVuY2VzIGFzIHRoZSBwcml2YXRlQnJvd3NpbmdFbmFibGVkIHByZWZlcmVu
Y2VzIG1heSBuZWVkIHRvIG92ZXJyaWRlIGl0LgogICAgIGlmIChwYXJhbWV0ZXJzLnNlc3Npb25J
RC5pc1ZhbGlkKCkpCkBAIC04NTMsNyArODUzLDcgQEAgdWludDY0X3QgV2ViUGFnZTo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1
bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGllbnQpCiB7CiAgICAgaWYg
KCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+
KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVD
b250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1CiB2b2lkIFdl
YlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50KQogewogICAgIGlm
ICghZWRpdG9yQ2xpZW50KSB7Ci0gICAgICAgIG1fZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CisgICAgICAgIG1fZWRp
dG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkluamVjdGVkQnVuZGxlOgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+JiYgZm9y
bUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGllbnQpIHsKLSAgICAgICAgbV9mb3JtQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwor
ICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZv
cm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg4NCw3ICs4ODQsNyBA
QCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50KQogewogICAgIGlmICghbG9hZGVyQ2xpZW50
KSB7Ci0gICAgICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAgICAgICBtX2xvYWRlckNsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTA1LDcgKzkwNSw3IEBAIHZvaWQgV2ViUGFnZTo6
aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVBvbGljeUNs
aWVudEJhc2UqCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGll
bnQ+JiYgY2xpZW50KQogewogICAgIGlmICghbV9yZXNvdXJjZUxvYWRDbGllbnQpCi0gICAgICAg
IG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7
CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsKIH0KQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxl
UmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQgogdm9pZCBX
ZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+JiYgdWlDbGllbnQpCiB7CiAgICAgaWYgKCF1aUNs
aWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTQxMCwxNCArMTQxMCwxNCBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRN
ZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKICNlbmRpZgotICAgIG1f
ZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwotICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAg
IG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JD
bGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpGb3JtQ2xpZW50PigpOworICAgIG1fbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50
LmluaXRpYWxpemUoMCk7Ci0gICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKLSAgICBtX3Vp
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGll
bnQ+KCk7CisgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKKyAgICBtX3VpQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbkNsaWVudC5pbml0aWFsaXplKDApOwogI2Vu
ZGlmCkBAIC00Njk2LDcgKzQ2OTYsNyBAQCB2b2lkIFdlYlBhZ2U6OmJlZ2luUHJpbnRpbmcodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiAjZW5kaWYKIAogICAg
IGlmICghbV9wcmludENvbnRleHQpIHsKLSAgICAgICAgbV9wcmludENvbnRleHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKKyAgICAgICAgbV9wcmludENvbnRl
eHQgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKICAgICAgICAgbV9wYWdl
LT5kaXNwYXRjaEJlZm9yZVByaW50RXZlbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwCmluZGV4IDczNTY2YTEzMzg1ZGUzYWFjNjQ2ZmI5NDk2YmRkYWZjYjVhZjQ2YjYuLjMx
ZWZmMTFmN2FlMGEzZWI4Y2ZiYjZmZjJiM2RiYTUxNjI0YzFlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0
aW9uR3RrLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBAIGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3Rr
V2luMzIgZmluYWw6IHB1YmxpYyBXZWJQcmludE9wZXJhdGlvbkd0ayB7CiAjZW5kaWYKIAogc3Ry
dWN0IFByaW50UGFnZXNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgUHJpbnRQYWdlc0RhdGEoV2ViUHJpbnRPcGVyYXRpb25HdGsqIHByaW50T3BlcmF0aW9u
KQogICAgICAgICA6IHByaW50T3BlcmF0aW9uKHByaW50T3BlcmF0aW9uKQogICAgICAgICAsIHRv
dGFsUHJpbnRlZCgtMSkKQEAgLTcyNiw3ICs3MjcsNyBAQCB2b2lkIFdlYlByaW50T3BlcmF0aW9u
R3RrOjpwcmludChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGRvdWJsZSB4RFBJLCBkb3VibGUg
eQogewogICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7CiAKLSAgICBhdXRvIGRhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtl
VW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKICAgICBpZiAoIWRhdGEtPmlzVmFsaWQpIHsK
ICAgICAgICAgY2Fpcm9fc3VyZmFjZV9maW5pc2goc3VyZmFjZSk7CiAgICAgICAgIHByaW50RG9u
ZShpbnZhbGlkUGFnZVJhbmdlVG9QcmludChmcmFtZVVSTCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0K
aW5kZXggOWFiYjJhNzkyOTlkNTk2YjkxZTZlZjYxY2E0M2VmODYxOTBhOTA0OS4uOTM0MThhYjIx
ZDc0ZmM5NDU4YTAyMjRlNGNiNDhhNzM0MTc4MDlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAt
OTgsNyArOTgsNyBAQCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZy
YW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgIGlmICghdGV4dEluZGlj
YXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9maW5kSW5kaWNhdG9yT3Zlcmxh
eUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M+
KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOworICAgIG1fZmluZEluZGljYXRv
ck92ZXJsYXlDbGllbnQgPSBtYWtlVW5pcXVlPEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9T
PihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdldCgpKTsKICAgICBtX2ZpbmRJbmRpY2F0
b3JSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0SW5kaWNhdG9yLT5zZWxlY3Rpb25SZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzKCkpOwogICAgIG1fZmluZEluZGljYXRvck92ZXJsYXkgPSBQYWdl
T3ZlcmxheTo6Y3JlYXRlKCptX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50LCBQYWdlT3Zlcmxh
eTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnBh
Z2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheSgqbV9maW5kSW5kaWNhdG9y
T3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05vdEZhZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5
Q2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZElu
ZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaAppbmRleCA1MzViODRmYjY0MjlhOTdmMGM5OGE4ZWFj
MTg1ZDlkZjJlZTk0ODU0Li4wMTVlMzJkYjE4OTNlNmEwNjJkOWUzYTdjYTBkYzUyZTk0NmRkMGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZElu
ZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaApAQCAtMzQsNiArMzQs
NyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xp
ZW50SU9TIDogcHVibGljIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xp
ZW50SU9TKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgV2ViQ29yZTo6VGV4dEluZGljYXRvciogdGV4
dEluZGljYXRvcikKICAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKaW5kZXgg
OTA2ODdjOTc0YWNmMzNkODJiOGM2NGI5NDhlNmVlOWEzMGVlMmU5Yy4uMDZmY2M0NzE1OTNlYjc4
ZWRlYmZjYzYzZjg5NDRiM2RmYWU5ZGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCkBAIC04Myw3ICs4Myw3
IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNr
KCkKICAgICBpZiAoIW1faGFzU2VudE1lc3NhZ2UpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzc1Byb3h5OjpTdGFydERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCkpLCAw
KTsKICAgICAgICAgbV9oYXNTZW50TWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIG1fcnVuTG9vcE9i
c2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRy
eSwgW3RoaXNdKCkgeworICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVu
TG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKICAgICAgICAgICAgIHRo
aXMtPm1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3AgPSB0cnVlOwogICAgICAgICB9KTsK
ICAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxlKENGUnVuTG9vcEdldEN1cnJlbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZGY2MDAz
NjQ1OThmMTM0NjI5ZGFiNjI3MDZlYWY2ODYxZTVmZjMzZC4uNGNiM2RmOWFlYTUyOWVmZjUyNjMz
NmM4MWYxMzAyMDQ1YmEzZTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQpAQCAtODcsNyArODcsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgYwogICAgIFtt
X2hvc3RpbmdMYXllciBzZXRPcGFxdWU6WUVTXTsKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0R2Vv
bWV0cnlGbGlwcGVkOllFU107CiAKLSAgICBtX2xheWVyRmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJ
bmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNo
KSwgW3RoaXNdKCkgeworICAgIG1fbGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29w
T2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7
CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hSdW5Mb29wQ2FsbGJhY2soKTsKICAgICB9KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDdiNDhhMGY3MjQ2MmZm
ZTU3ZmU5MjA2Y2JjYzBjZjMzMWMzMjExZTEuLmM3MWNkNWYyNzRmZjYyMmM1ZDQzZjM1OWY2MTVm
ZDM3Y2YyZDY4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTE1NzMsNyArMTU3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxl
KFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgQVNTRVJUKCFt
X3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIpOwogICAgIG1fY291bnRPZlBhZ2Vz
RmFpbGluZ1RvTWFya1ZvbGF0aWxlID0gMDsKIAotICAgIG1fcGFnZU1hcmtpbmdMYXllcnNBc1Zv
bGF0aWxlQ291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0
aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKKyAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNW
b2xhdGlsZUNvdW50ZXIgPSBtYWtlVW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNv
dW50ZXI+KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoUmVmQ291bnRlckV2ZW50KSB7CiAgICAgICAgIGlmIChtX3BhZ2VNYXJraW5nTGF5ZXJz
QXNWb2xhdGlsZUNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE4
MzgsNyArMTgzOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wg
aGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2CiAKIHZvaWQgV2ViUHJvY2Vz
czo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eShjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVu
dGlmaWVyKQogewotICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOworICAgIG1f
YXV0b21hdGlvblNlc3Npb25Qcm94eSA9IG1ha2VVbmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lB
dXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKQEAgLTE4NzEsNyArMTg3MSw3IEBAIGJvb2wgV2ViUHJv
Y2Vzczo6aGFzVmlzaWJsZVdlYlBhZ2UoKSBjb25zdAogTGliV2ViUlRDTmV0d29yayYgV2ViUHJv
Y2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB7CiAgICAgaWYgKCFtX2xpYldlYlJUQ05ldHdvcmsp
Ci0gICAgICAgIG1fbGliV2ViUlRDTmV0d29yayA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
TmV0d29yaz4oKTsKKyAgICAgICAgbV9saWJXZWJSVENOZXR3b3JrID0gbWFrZVVuaXF1ZTxMaWJX
ZWJSVENOZXR3b3JrPigpOwogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQogCkBA
IC0xODgyLDcgKzE4ODIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlRwogICAgIC8vIGJ5IGNh
bGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5l
ZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAg
ICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nl
cy4KICAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNl
dENvbm5lY3Rpb24oc3RkOjptYWtlX3VuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQsIHBhZ2VJRCwgc3RvcmUpKTsKKyAgICBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCBwYWdl
SUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBkNGMwMWJh
YjFmOTNkYTkwODViMGYyMTk0Y2QzMjdkNDcxODY1MGIyLi4yZjRmYjUzMGFiY2VkN2VmYzczNzY0
MjIzMDlmZDMxODg3YTQ3YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
QEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAgICAgLCBQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXI6OkNsaWVudAogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlByb2Nlc3MmIHNpbmdsZXRvbigpOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUgPSBQcm9jZXNzVHlwZTo6V2Vi
Q29udGVudDsKQEAgLTE0Niw3ICsxNDcsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAg
IG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8
VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUo
KSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJ
UHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJD
b25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAyNzIwYjg2ZmNkMmZm
ZWU2MDIyZjVhZDVlZWQ1MGJjZjM2OTJkN2Y4Li45YWYwMGVlOGFhMGYxY2Q4NDBhODE3Mzc5MGZh
MDYyMzAwNDZmZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgY2xh
c3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXZpY2VUeXBlICE9IENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGU6OlVua25vd24pOwogICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpBdWRp
bykKLSAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVm
ZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRyKSk7Cisg
ICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVu
aXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOwogICAgIH0KIAogICAg
IH5Tb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAppbmRleCBiYWVkMGNkOWUwOWI0OWQyMjFlOTQwMThm
NjQ5ZmU2ZGJjZjkyNTE5Li5jMWQ0M2ZjYjNhZjU4NDE0NTNhZDM0MzRjN2NmOTNlYmZjOWU3ZWY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBDcm9zc1Byb2Nlc3NS
ZWFsdGltZUF1ZGlvU291cmNlOwogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xhc3MgVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OkF1ZGlvQ2FwdHVyZUZhY3RvcnksIHB1
YmxpYyBXZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxh
eUNhcHR1cmVGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNzJik7CiAgICAg
flVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBiNDdkMWQ4YWZhMDNmZWQzNmRlY2Fk
OTg5ZDcyZGJjNDE4NDg3ZjU5Li4zYjkwNmE4MGM1YWQ4ZjY5YmVmNzdmOWE4Yzc2NGFmODA5ZjQ5
NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NUYXNr
U3RhdGVEaWRDaGFuZ2UoUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpUYXNrU3RhdGUgdAogCiAg
ICAgLy8gV2Ugd2VyZSBhd2FrZW5lZCBmcm9tIHN1c3BlbnNpb24gdW5leHBlY3RlZGx5LiBOb3Rp
ZnkgdGhlIFdlYlByb2Nlc3NQcm94eSwgYnV0IHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBv
dXIgcGFyZW50IFBJRAogICAgIC8vIHRvIGVuc3VyZSB0aGF0IGl0IHRvbyBpcyBhd2FrZW5lZC4K
LSAgICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fz
c2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCksICJV
bmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kLCBBc3NlcnRp
b25SZWFzb246OkZpbmlzaFRhc2spOworICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0aW9uID0gbWFr
ZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1v
dGVQcm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0aW9uU3RhdGU6OkJh
Y2tncm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CiAgICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OlByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpLCBbdWlQcm9jZXNzQXNzZXJ0
aW9uID0gV1RGTW92ZSh1aVByb2Nlc3NBc3NlcnRpb24pXSB7IH0pOwogfQogI2VuZGlmCkBAIC02
MjAsNyArNjIwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BV
TW9uaXRvclVwZGF0ZVJlYXNvbiByZWFzb24pCiAgICAgfQogCiAgICAgaWYgKCFtX2NwdU1vbml0
b3IpIHsKLSAgICAgICAgbV9jcHVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDUFVNb25pdG9y
PihjcHVNb25pdG9yaW5nSW50ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2UpIHsKKyAgICAg
ICAgbV9jcHVNb25pdG9yID0gbWFrZVVuaXF1ZTxDUFVNb25pdG9yPihjcHVNb25pdG9yaW5nSW50
ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2UpIHsKICAgICAgICAgICAgIGlmIChtX3Byb2Nl
c3NUeXBlID09IFByb2Nlc3NUeXBlOjpTZXJ2aWNlV29ya2VyKQogICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gU2VydmljZSB3b3JrZXIg
cHJvY2VzcyBleGNlZWRlZCBDUFUgbGltaXQgb2YgJS4xZiUlICh3YXMgdXNpbmcgJS4xZiUlKSIs
IHRoaXMsIG1fY3B1TGltaXQudmFsdWUoKSAqIDEwMCwgY3B1VXNhZ2UgKiAxMDApOwogICAgICAg
ICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmNwcAppbmRleCAzNjkwOTVjZGFkMWQzNDcxMWEwNjc2ZDg3MzZhOTBlMTkzZTI5
MDVlLi4yMjhmNGEzNmQ0YjBmMjIyYzE3ODYwZDBiYzQ5OGMxZjllMDg5YTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBSZWY8U3RvcmFnZVN5bmNNYW5hZ2VyPiBTdG9yYWdlU3luY01hbmFnZXI6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB9CiAKIFN0b3JhZ2VTeW5jTWFuYWdlcjo6U3Rv
cmFnZVN5bmNNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCkKLSAgICA6IG1fdGhyZWFkKHN0ZDo6
bWFrZV91bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICA6IG1fdGhyZWFkKG1ha2VVbmlxdWU8
U3RvcmFnZVRocmVhZD4oKSkKICAgICAsIG1fcGF0aChwYXRoLmlzb2xhdGVkQ29weSgpKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggNDQzOTM4Mjk1ZjRlMWMyOWRkMDQ4NmI0MzFiYTdm
ZWEzNTI5ZDE2ZC4uOWM3NTE0ZTM0NjJjNGI0ZDhhODU2MDVlZDAyOWRiZDE5MjVkNmIxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNzUs
NyArNzUsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
IW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWQpOwotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAg
bV9xdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5j
dGlvbikpKTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQpAQCAtODcsNyAr
ODcsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAgICAgaWYgKCFtX3RocmVh
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKKyAgICBtX3F1ZXVlLmFwcGVuZChtYWtlVW5p
cXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10gewogICAgICAgICBwZXJmb3JtVGVybWluYXRl
KCk7CiAgICAgfSkpOwogICAgIG1fdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggYjkzNGQx
YTNiMWJhYTgzMWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2ZhMi4uODA2Y2IwOTk1ZDBhMDdjNzE4Mjcx
ZDIxMDUwNzAzOThjNDAzYmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFN0b3JhZ2VUcmFja2VyJiBTdG9y
YWdlVHJhY2tlcjo6dHJhY2tlcigpCiBTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIoY29u
c3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKICAgICA6IG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoc3Rv
cmFnZVBhdGguaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2NsaWVudCgwKQotICAgICwgbV90aHJl
YWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQorICAgICwgbV90aHJlYWQobWFr
ZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAs
IG1fbmVlZHNJbml0aWFsaXphdGlvbihmYWxzZSkKICAgICAsIG1fU3RvcmFnZURhdGFiYXNlSWRs
ZUludGVydmFsKGRlZmF1bHRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9y
YWdlU2Vzc2lvbk1hcC5jcHAKaW5kZXggNDNlYTQ1ZGFlODkyMDZjODI5YTUxNGQ0ZGE4ZTNkMWM5
N2NjMTI4NC4uODUxY2MxMDE3ZGVkMDBjMDZkNDZkMmM4NTlkNzAwMDBiNmQ3MmQ1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3RvcmFnZVNlc3Np
b24oY29uc3QgUAogV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCiB7CiAgICAgaWYgKCFkZWZhdWx0
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICAgICAgZGVmYXVsdE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIHJldHVy
biAqZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogfQogCkBAIC03NCw3ICs3NCw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCkKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNz
aW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQoKSkp
OwogICAgIH0KIAotICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3Jh
Z2UpKTsKKyAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtlVW5pcXVlPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZW5k
aWYKIH0KIApAQCAtMTAwLDExICsxMDAsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25N
YXA6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY28KICAg
ICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29w
eUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkp
KTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShz
dG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9y
YWdlKSk7CiAKICNlbGlmIFVTRShDVVJMKQogICAgIGdsb2JhbFNlc3Npb25NYXAoKS5lbnN1cmUo
c2Vzc2lvbklELCBbc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQp
OwogICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDE4
NzZiOTYwYjk0NzA4MTRjMzUwYmM1OTI2YTRjODFhZWRmMzkwMjMuLjdiODY5ODFhM2Y0OGU1MGY4
YjNjY2FjMzcwNjkxN2Q0YWYxZmRiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBA
IC0xNTksNSArMTU5LDUgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0b3JDbGkKICAgICAgICAgICAgIGRl
bGV0ZVNldHRpbmcobmFtZSk7CiAgICAgICAgIH0KICAgICB9OwotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1Mu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5oCmluZGV4IDNiMWE0NTA3MDc4ZmE0Y2MwNjhlNzQwMzAzMjIxMjM5YjJhZDcxMjMuLjE0
NTc3MjIyYTllMTNlNjNlNDkxZDZkM2I5MmNhMWJjODllN2NiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dElPUy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJXZWJDaHJvbWVDbGllbnQuaCIKIAog
Y2xhc3MgV2ViQ2hyb21lQ2xpZW50SU9TIGZpbmFsIDogcHVibGljIFdlYkNocm9tZUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xp
ZW50SU9TKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogV2ViQ2hyb21lQ2xpZW50KHdlYlZp
ZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCmluZGV4IDIxN2E0ZWQwYTg1YTZi
YjQxNGQzMTk0Y2I3YmZhZWZkZTAzNmQ0N2EuLmFmZTExYTgwYjlmMWM5Y2U3NmEzNTYyZmE2M2M0
NWJmNzFkMTFkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCkBAIC01Miw2
ICs1Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBzdGF0aWMgTG9jayB3ZWJGaXhlZFBvc2l0
aW9uQ29udGVudERhdGFMb2NrOwogCiBzdHJ1Y3QgVmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0
YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZpZXdwb3J0Q29u
c3RyYWluZWRMYXllckRhdGEoKQogICAgICAgICA6IG1fZW5jbG9zaW5nQWNjZWxlcmF0ZWRTY3Jv
bGxMYXllcihuaWwpCiAgICAgeyB9CkBAIC02Miw2ICs2Myw3IEBAIHN0cnVjdCBWaWV3cG9ydENv
bnN0cmFpbmVkTGF5ZXJEYXRhIHsKIHR5cGVkZWYgSGFzaE1hcDxSZXRhaW5QdHI8Q0FMYXllcj4s
IHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPj4gTGF5ZXJJbmZv
TWFwOwogCiBzdHJ1Y3QgV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnREYXRhKFdlYlZpZXcgKik7CiAgICAgfldlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YSgp
OwpAQCAtMTc4LDcgKzE4MCw3IEBAIC0gKHZvaWQpc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVy
czooV1RGOjpIYXNoTWFwPENBTGF5ZXIgKiwgc3RkOjp1bmlxdWVfcHRyPFdlCiAKICAgICBmb3Ig
KGF1dG8mIGxheWVyQW5kQ29uc3RyYWludHMgOiBsYXllck1hcCkgewogICAgICAgICBDQUxheWVy
KiBsYXllciA9IGxheWVyQW5kQ29uc3RyYWludHMua2V5OwotICAgICAgICBhdXRvIGxheWVyRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YT4oKTsKKyAg
ICAgICAgYXV0byBsYXllckRhdGEgPSBtYWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXll
ckRhdGE+KCk7CiAKICAgICAgICAgbGF5ZXJEYXRhLT5tX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Ny
b2xsTGF5ZXIgPSBzdGlja3lDb250YWluZXJzLmdldChsYXllcik7CiAgICAgICAgIGxheWVyRGF0
YS0+bV92aWV3cG9ydENvbnN0cmFpbnRzID0gV1RGTW92ZShsYXllckFuZENvbnN0cmFpbnRzLnZh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpp
bmRleCBhOGI2YTA0MzkzZWMwMDAxNDY1MzhkNGNmNjViZDY0MGM3NGJkOTAxLi41YWQ4MWI0YTNi
NDliNWQwNjM5MzY1NjgzYTFiY2Y1ZDU3ZWYzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgLSAoaWQpaW5p
dAogICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIF9lbnRyaWVzQnlEYXRlID0gc3RkOjpt
YWtlX3VuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOworICAgIF9lbnRyaWVzQnlEYXRlID0gbWFr
ZVVuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRl
eCBiNzM5NTkzNWU1MTBiZjNiN2YwYzQ4ZWRkNDM2YzU4YmJjNDgxZDhlLi44NmY5ZDNkNDIyMzg0
NmJjOTVjYmM5NTY0NWExY2E3MzIwYWZlMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTM0OCw3ICszNDgsNyBAQCAtIChp
ZClpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAog
ICAgICAgICBjb3JlKF9wcml2YXRlKS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKICAg
ICAKICAgICBpZiAoTlNBcnJheSAqcmVkaXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZv
cktleTpyZWRpcmVjdFVSTHNLZXldKSB7Ci0gICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byByZWRp
cmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBy
ZWRpcmVjdFVSTHNWZWN0b3ItPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW3JlZGlyZWN0VVJMcyBj
b3VudF0pOwogCiAgICAgICAgIGZvciAoaWQgcmVkaXJlY3RVUkwgaW4gcmVkaXJlY3RVUkxzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4IGUxN2M3ODgxYTUxN2YwYzM1
NWY4NzU2OWI2MGRhM2YyMTVhMWViYTcuLmY1ZTdmYmNmMTJlNDdmOTBkZWVmMWVhMmNmZWI3MTc0
MjY4ODBhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC00OTMsNyAr
NDkzLDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkobWFj
aF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGwKICAgICBpZiAoIWluc3RhbmNlUHJveHkp
CiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRD
dXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHk+KG9iamVjdElEKSk7CisgICAg
aW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmpl
Y3RJRCkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBA
QCBrZXJuX3JldHVybl90IFdLUENCb29sZWFuUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwg
dWludDMyX3QgcGx1Z2luSUQsIHVpbnQzMgogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAg
ICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKICAgICAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJy
ZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRD
dXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6Qm9vbGVhblJlcGx5PihyZXN1bHQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwog
fQogCkBAIC01MjgsNyArNTI4LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhbkFuZERhdGFS
ZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW5JRCwKICAgICAgICAg
cmV0dXJuIEtFUk5fRkFJTFVSRTsKIAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VsdCA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHRE
YXRhKSwgcmVzdWx0TGVuZ3RoKSk7Ci0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5
KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJldHVyblZhbHVlLCByZXN1bHQpKTsKKyAgICBpbnN0YW5j
ZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhbkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3Vs
dCkpOwogICAgIAogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CkBAIC01NDUsNyArNTQ1LDcg
QEAga2Vybl9yZXR1cm5fdCBXS1BDSW5zdGFudGlhdGVQbHVnaW5SZXBseShtYWNoX3BvcnRfdCBj
bGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW4KICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAg
ICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50
UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0
YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4ocmVuZGVyZXJUeXBlKSkpOworICAgIGluc3RhbmNlUHJv
eHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5OjpJbnN0YW50aWF0ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRl
eHRJRCwgc3RhdGljX2Nhc3Q8UmVuZGVyZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CiAgICAgcmV0
dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkuaAppbmRleCAxMGEwOGU5NTBhM2RjMGM5MzY3MWYxZmMxYzc0Yzk0Nzc5M2EwN2U4Li5lNTZh
MTAzYTI4YTc2MGY5Y2UwYjk3ZTcxZGQ2YjIzYTYwYzUzZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkuaApAQCAtMTcxLDYgKzE3MSw3IEBAIGNsYXNzIE5ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94CiAKICAgICAvLyBSZXBseSBzdHJ1Y3RzCiAgICAgc3RydWN0IFJlcGx5IHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBlbnVtIFR5cGUg
ewogICAgICAgICAgICAgSW5zdGFudGlhdGVQbHVnaW4sCiAgICAgICAgICAgICBHZXRTY3JpcHRh
YmxlTlBPYmplY3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCAyMDJjNmRlYWYxM2QwN2M2ZTNhNTY5OGIx
Y2RiNTlhMTliNWRhMDM5Li41MmJmN2JkMTJlNGUzNzEyZDMxNDc1ZTJhNTM5YTQyOGNmZjhmYTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94
eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW0KQEAgLTM2Miw3ICszNjIsNyBAQCBNZXRob2QqIFByb3h5SW5zdGFu
Y2U6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEg
bmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3
ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBhdXRvIG1hcEFkZFJlc3VsdCA9IG1fbWV0aG9kcy5h
ZGQobmFtZS5pbXBsKCksIG51bGxwdHIpOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRy
eSAmJiByZXBseS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3h5TWV0aG9kPihtZXRob2ROYW1lKTsKKyAgICAgICAg
bWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJveHlNZXRob2Q+KG1l
dGhvZE5hbWUpOwogCiAgICAgcmV0dXJuIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiB9CkBAIC0zOTcsNyArMzk3LDcgQEAgRmllbGQqIFByb3h5SW5zdGFuY2U6OmZpZWxkTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBBZGQgYSBuZXcgZW50cnkgdG8g
dGhlIG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVkIHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZv
clJlcGx5LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0gbV9maWVsZHMuYWRkKG5hbWUuaW1wbCgp
LCBudWxscHRyKTsKICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1f
cmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlmaWVyKTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CiAgICAg
cmV0dXJuIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA5YzcxYTNjYzkyM2YzM2QyZTBh
YjM5YTFiZjZiMTRiNDQzZTk0ZDRiLi5lZTE5YzU2N2MwMWZhMThjNWU4ZGM2MWIwOGM4OTRlNTIw
MDJkYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC02
MCw2ICs2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICAKIGNsYXNzIFNvZnR3YXJlQ0FSZW5kZXJlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU29mdHdhcmVDQVJlbmRlcmVyKHVpbnQzMl90
IGNvbnRleHRJRCkKICAgICAgICAgOiBtX2NvbnRleHQgeyBbQ0FDb250ZXh0IGxvY2FsQ29udGV4
dF0gfQpAQCAtMTY4LDcgKzE2OSw3IEBAIC0gKEJPT0wpY3JlYXRlUGx1Z2luCiAgICAgICAgIHJl
dHVybiBOTzsKIAogICAgIGlmIChfcHJveHktPnJlbmRlcmVyVHlwZSgpID09IFVzZVNvZnR3YXJl
UmVuZGVyZXIpCi0gICAgICAgIF9zb2Z0d2FyZVJlbmRlcmVyID0gc3RkOjptYWtlX3VuaXF1ZTxT
b2Z0d2FyZUNBUmVuZGVyZXI+KF9wcm94eS0+cmVuZGVyQ29udGV4dElEKCkpOworICAgICAgICBf
c29mdHdhcmVSZW5kZXJlciA9IG1ha2VVbmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHkt
PnJlbmRlckNvbnRleHRJRCgpKTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIGNyZWF0ZVBsdWdp
bkxheWVyXTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCmluZGV4IGY3YWVk
YmNlZDRkN2Y1YzRiYTNlOTZlMzU2MWNhN2YwYjI2NWM4YWMuLjhlYzFiZjc5ZWUzMmEyYWMxYmJj
ZjdhMjFlNzNlN2UxZTAxZGIxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQpA
QCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXI+IFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyOjpjcgogewogICAgIHN3aXRjaCAo
W3BsdWdpblZpZXcgZXZlbnRNb2RlbF0pIHsKICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNvY29hPihwbHVnaW5WaWV3KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmlldyk7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaAppbmRleCA3MDgzNzc2ZDI4YTc1
Y2ZiNTQyNTMzZDkwZjM3NzhlODVhYmNkMWQyLi5iYmQ5YzVkNTgyMWY4NWY2NWViYzhmNzc3ZWM2
NTUyMjlkNWU4OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
LmgiCiAKIGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EgOiBwdWJsaWMg
V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EoV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Kik7IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDAyZmYyMTg2ZGY4
NGE5YTkwZDdlOWMyNmMwNzYyNzllMzIyMTEzNzguLjE2MDY2M2U4NjFmNzEwZWJmZWQxZDc2ODU2
NWRkMjJhMTE0ZThlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xNjU1LDcgKzE2NTUsNyBAQCAt
ICh1aW50MzJfdClzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCBy
ZXBlYXQ6KE5QQm9vbClyZXBlYXQgdAogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBpZiAo
IXRpbWVycykKLSAgICAgICAgdGltZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPHVpbnQz
Ml90LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+Pj4oKTsKKyAgICAgICAgdGltZXJzID0g
bWFrZVVuaXF1ZTxIYXNoTWFwPHVpbnQzMl90LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+
Pj4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4qIHNsb3Q7CiAgICAgdWlu
dDMyX3QgdGltZXJJRDsKQEAgLTE2NjMsNyArMTY2Myw3IEBAIC0gKHVpbnQzMl90KXNjaGVkdWxl
VGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVydmFsIHJlcGVhdDooTlBCb29sKXJlcGVh
dCB0CiAgICAgICAgIHRpbWVySUQgPSArK2N1cnJlbnRUaW1lcklEOwogICAgIHdoaWxlICghdGlt
ZXJzLT5pc1ZhbGlkS2V5KHRpbWVySUQpIHx8ICooc2xvdCA9ICZ0aW1lcnMtPmFkZCh0aW1lcklE
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWUpKTsKIAotICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsdWdpblRpbWVyPihwbHVnaW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQs
IHRpbWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlxdWU8UGx1Z2luVGltZXI+KHBs
dWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKIAogICAgIGlmIChf
c2hvdWxkRmlyZVRpbWVycykKICAgICAgICAgdGltZXItPnN0YXJ0KF9pc0NvbXBsZXRlbHlPYnNj
dXJlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlTWFuYWdlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCmluZGV4IDcwNGNkMDk1ZTg4ZmUxYTIzODExODZj
NmJmZjEzMGZjOTAyMDQxZWIuLjU3ZmJiZmFkOWU2NGI3Njc4YWQzYWNjZTgwNzc4YmFjZjAzNzgx
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCkBAIC05NCwxMCArOTQsMTEgQEAgV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIH0KIAogY2xhc3Mg
RGlkTW9kaWZ5T3JpZ2luRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5h
Z2VyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogICAg
IHsKLSAgICAgICAgYXV0byBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWRNb2RpZnlPcmln
aW5EYXRhPihjbGllbnQsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY29udGV4dCA9IG1ha2VVbmlx
dWU8RGlkTW9kaWZ5T3JpZ2luRGF0YT4oY2xpZW50LCBvcmlnaW4pOwogICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KV0gewogICAgICAgICAgICAgY29u
dGV4dC0+Y2xpZW50LmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdpbik7CiAg
ICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCBhM2IxNTk4
ZWUzNTNkNjdlMjNhZjgwOTU4ZWI3Zjc1ZWIxNjdmNGQ4Li5jZDcyNjQyNjgyNWJhNzIyMTU1N2Uw
NTY2ZmE5MmVjMDgxMTE0NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApA
QCAtMzEsNiArMzEsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkFsdGVy
bmF0aXZlVGV4dENsaWVudChXZWJWaWV3Kik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA3
OGI1MzllMzcyYjg2NWM1OTRmYzA3NmY1YTFmYzg0YWFmZTk4YmYwLi4yNzE0MjdlMmQ0NmVlM2Ey
OTdkMDU0MDEyYTdhODVhYjhiM2UxYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
Y2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKGlkIHdlYkRvY3VtZW50VmlldykgOiBt
X3dlYkRvY3VtZW50Vmlldyh3ZWJEb2N1bWVudFZpZXcpIHsgfQogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAppbmRleCBmZGM0Y2M3ODE5NmZjYmNmMzI2MDJkMThlMjg5ZjA3YTExNTRjYzk1Li5jMGZiZGE5
YjJkYTFkZDQ1MTBmZmUwODliZjY4ZjVhNzY3ZGQ0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAt
NDEsNiArNDEsNyBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogLy8gYmFzZSBjbGFzcyBvZiB0
aGUgY29uY3JldGUgY2xhc3MsIFdlYkNocm9tZUNsaWVudElPUy4gQmVjYXVzZSBvZiB0aGF0LCB0
aGlzIGNsYXNzIGFuZAogLy8gbWFueSBvZiBpdHMgZnVuY3Rpb25zIGFyZSBub3QgbWFya2VkIGZp
bmFsLiBUaGF0IGlzIG1lc3N5IHdheSB0byBvcmdhbml6ZSB0aGluZ3MuCiBjbGFzcyBXZWJDaHJv
bWVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCAxODg1ZjAzMTMxMzViODE3YjMwZjk0NTc3
N2Q4ZTI0YjE1MzliZjkwLi5hN2Y2NmVlZWYzMDZhNjg2MDU0MjBlNzk4NzYyMDI1N2JlMDZiNmJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV2Vi
Q29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQKICAg
ICAsIHB1YmxpYyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAogI2VuZGlmCiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVDbGll
bnQoV2ViVmlldyAqd2ViVmlldyk7CiAgICAgdmlydHVhbCB+V2ViQ29udGV4dE1lbnVDbGllbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaAppbmRleCA4NDdhNzNiMTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0YTYzYmRk
MTJlLi4zMGRmM2Y3M2Q4NTBlYTc2OWM3MTM1MjIxZDJlODg2NWVhNjdlMDNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5oCkBAIC0zMCw2ICszMCw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0Ns
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCBmMDU5ZTA1OWUxMTg3YTNiYzViZDI0N2NjMjQxZjU5YWRkNDUwOTUwLi5i
NTEwNzg3ZDgwOWJjZjk3Yjc2ODllNzQwOTMyODM3NWFhMGIwYjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtNDUsNiArNDUsNyBAQAogQGNsYXNzIFdlYkVkaXRvclVuZG9UYXJnZXQ7CiAKIGNsYXNz
IFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1
YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdl
YkVkaXRvckNsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFdlYkVkaXRvckNsaWVudChXZWJWaWV3ICopOwogICAgIHZpcnR1YWwgfldlYkVkaXRvckNs
aWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAzZGQ1MGU3YjNiOWNmOTkz
MzQ5YzlhYmI0Y2I0OTc4MzdlZWMzNTNlLi45NDBiMGZmOTYzYTg1Y2U5ZDg4ZDdiYzU2ZmY2YjNl
ZWIyZTNkOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTA2Nyw3ICsxMDY3
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiBz
dGF0aWMgdm9pZCBhZGRSZWRpcmVjdFVSTChXZWJIaXN0b3J5SXRlbSAqaXRlbSwgY29uc3QgU3Ry
aW5nJiB1cmwpCiB7CiAgICAgaWYgKCFpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcykKLSAg
ICAgICAgaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxTdHJpbmc+PigpOworICAgICAgICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9
IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAKICAgICAvLyBPdXIgQVBJIGFsbG93cyB1
cyB0byBzdG9yZSBhbGwgdGhlIFVSTHMgaW4gdGhlIHJlZGlyZWN0IGNoYWluLCBidXQgZm9yCiAg
ICAgLy8gbm93IHdlIG9ubHkgaGF2ZSBhIHVzZSBmb3IgdGhlIGZpbmFsIFVSTC4KQEAgLTEzODAs
NyArMTM4MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZy
YW1lKQogewotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJp
dmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOworICAgIGNhY2hlZEZyYW1lLT5zZXRD
YWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cg
dGhpcyBmcmFtZSBpcyBnb2luZyB0byBiZSBjYWNoZWQuIFN0b3AgYWxsIHBsdWdpbnMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBmZmUyOTkzMTJlYjQ4MGJhZmI1ZjBlYWM0MzUyZjI0
M2Y5NmUwMGY3Li5mZmRiYWNmYzI3NDIxZThkMzU4ODhmMmNlNmIxODA3N2ExNmUzM2YwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2Nh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgR2VvbG9jYXRp
b25Qb3NpdGlvbjsKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyAq
KTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCmluZGV4IGJkN2Y2MmZjODVkYzk5YzM4NzE2ZjA3NjY2NDYzMTgyNTExYzU0
YTUuLjBjOTQ4YjNhZWY5ODc2MDk2MzAzNTFkNTlhYzc5MGIyYWJlYWRhN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDsKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IGZpbmFsIDog
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRl
bmRDaGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCAxYzAwODA5NzY5MmZmOWIwNzFmY2U1YWM0YTRi
NDY5MmQxMzdlZDk1Li43ZDNlNWVjOWU2MTVlMWQ0OGMzZDA1ZDcxYTU5YzQ1MWZlYjc2NmJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgRnJvbnRlbmRDaGFu
bmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3AKICAgICBbd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGll
bnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIu
Z2V0KCkgZnJvbnRlbmRXZWJWaWV3XSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywg
d2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJvbnRl
bmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQg
PSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZp
ZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zy
b250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKIAogICAgIFJldGFpblB0cjxX
ZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2Vi
SW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVu
ZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl0gc2V0
RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQuaAppbmRleCAxNWI0MTgwNDhlNGYxZDQ2MjRjMzAzZGNiYmZlZDE2OTc5NjQ0ODYxLi45
NGVkNjE4YWM3OGVlOGJjZjU3MTU1YzlhZGFiY2JkYWRmNjhjNzM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmlj
YXRpb25DbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vdGlm
aWNhdGlvbkNsaWVudChXZWJWaWV3ICopOwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVy
biBtX3dlYlZpZXc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5o
CmluZGV4IGEzZDZhZTYzNjM2NDdjNWYzMGNjNzlmYmQ2MzVmNjY0YmNhMDEyM2MuLmRjOWQxMWEz
NTg3ZWUwNGY1MDE1MWJlODhiYzVkNGIxNDhiY2RlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBJbnRQb2ludDsK
IH0KIAogY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmll
bnRhdGlvblByb3ZpZGVyTW9jay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KaW5kZXggMjUzNjQ4ZDhlODQ1OTEx
ZTJhZTI4YzBiYjg2M2NiNTdmN2MzMDAzOS4uMjc2ZDlmMTVlZjhmYTVlMWZlZDQzOGVkOWMxZDI1
OWE3ODU4MzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCkBAIC0z
Niw3ICszNiw3IEBAIC0gKGlkKWluaXQKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlm
ICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2NvcmUgPSBzdGQ6Om1ha2VfdW5p
cXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKKyAgICBtX2NvcmUgPSBtYWtlVW5p
cXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKICAgICByZXR1cm4gc2VsZjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYTkw
NjIyYzIwNzRlMGNkY2VjZWYyYzZjMWM4NDk0NWQ0ZTlkZmZhYi4uM2E5NGJiOTEwZDI1OWVmYWE4
OTFkNTI5ZTgwZDJiNWIwMDIwYjRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCkBAIC0zNzgsNyArMzc4LDcgQEAgLSAodm9pZClfYXR0YWNoU2NyaXB0
RGVidWdnZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9wcml2YXRlLT5zY3JpcHRE
ZWJ1Z2dlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVj
dCk7CisgICAgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gbWFrZVVuaXF1ZTxXZWJTY3JpcHRE
ZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAogLSAodm9pZClfZGV0YWNoU2NyaXB0RGVidWdn
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKaW5kZXggZGZhN2VmZDA2MDZhZGM0OWZlMjkx
ZDA1MjFkMTMyZTZlMTljNTA3My4uYTA3MmU4MTk1MjQ5MzlhZTBmMjJiYjk4MzZkM2FjNzA1ZDg1
NzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xh
c3MgUGFnZTsKIH0KIAogY2xhc3MgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciA6IHB1Ymxp
YyBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+IGNyZWF0ZShXZWJDb3JlOjpQYWdlJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlci5tbQppbmRleCA3MmMyMGM2OTNmZWNiYTk3MTA0NjM0MTY0MWNj
ZTExNDk0ZGU0YTY5Li42MDI0MDI5OTYyZWMzNGYwMGY0YWFkOTQzMmE3ZmM0MmJhMWQxNzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIHN0ZDo6
dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyOjpjcmVhdGUoV2ViQ29yZTo6UGFnZSYgcGFnZSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsK
IH0KIAogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6V2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlcihXZWJDb3JlOjpQYWdlJiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQppbmRleCAxYTcyNThiNDIzYTg0NTc4OTFl
NDE1ZTEwZDAwMjU2NzMwYWEyYmRlLi5lMzYzYjg1YjJiM2Q1YWUxNDczYzgzNzI3MTg1ODM0ZDUx
Nzg3YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRl
eHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRl
eHRJdGVyYXRvci5tbQpAQCAtNjksNyArNjksNyBAQCAtIChpZClpbml0V2l0aFJhbmdlOihET01S
YW5nZSAqKXJhbmdlCiAgICAgICAgIHJldHVybiBzZWxmOwogICAgIAogICAgIF9wcml2YXRlID0g
W1tXZWJUZXh0SXRlcmF0b3JQcml2YXRlIGFsbG9jXSBpbml0XTsKLSAgICBfcHJpdmF0ZS0+X3Rl
eHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihjb3Jl
KHJhbmdlKSk7CisgICAgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5nZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjhkOTcxMWU3
MGQ3NzQ1ZDdkMzliMWY5ZjU0MWExNjU0ZDY1OWM4Mi4uZmI3Y2YyZmFhZDY3YjQ5YzkzM2E2MjFl
MzI3OTEwZTEwODFhZWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9v
a1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpCiAtKHZvaWQpX2luamVjdE91dGxvb2tRdWlya3NT
Y3JpcHQKIHsKICAgICBzdGF0aWMgTlNTdHJpbmcgKm91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50
cyA9IGxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCk7Ci0gICAgX3ByaXZhdGUt
Pmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJT
Y3JpcHRXb3JsZCB3b3JsZF0pLCBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tR
dWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKSk7CisgICAgX3By
aXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3Jl
KFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tR
dWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKSk7CiAKIH0KICNl
bmRpZgpAQCAtMTQzOCw3ICsxNDM4LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICAgICBw
YWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRl
eHRNZW51Q2xpZW50KHNlbGYpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5hYmxlIHRoaXMg
b24gaU9TIGFzIHdlbGwuCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxm
KTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VV
bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KHNlbGYpOwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQoc2VsZik7CiAj
ZWxzZQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVD
bGllbnRJT1Moc2VsZik7CkBAIC00NjI4LDcgKzQ2MjgsNyBAQCArICh2b2lkKV9hZGRVc2VyU2Ny
aXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICop
d29ybAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdXNlclNj
cmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5n
VmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRp
bWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDog
SW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFt
ZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKKyAgICBhdXRv
IHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmlu
Z1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25U
aW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6
IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJh
bWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmll
d0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxk
KSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTQ2NTEsNyArNDY1MSw3IEBAICsgKHZv
aWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6
KFdlYlNjcmlwdFdvcmxkICopCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBzdHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291
cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5B
bGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKKyAg
ICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVy
bCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1l
cyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdH
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQoKmNvcmUod29y
bGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0K
IApAQCAtOTQwMiw3ICs5NDAyLDcgQEAgLSAoVmVjdG9yPFN0cmluZz4pX2RpY3RhdGlvbkFsdGVy
bmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dAogLSAoV2ViU2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXImKV9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcgogewogICAgIGlmICghX3By
aXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcikKLSAgICAgICAgX3ByaXZhdGUtPl9z
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOworICAgICAgICBfcHJpdmF0ZS0+X3NlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cj4oc2VsZik7CiAgICAgcmV0dXJuICpfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyOwogfQogI2VuZGlmCkBAIC05NDYxLDcgKzk0NjEsNyBAQCAtICh2b2lkKV9zZXRUZXh0SW5k
aWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yCiAtICh2b2lkKV9zZXRUZXh0SW5k
aWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTooVGV4dElu
ZGljYXRvcldpbmRvd0xpZmV0aW1lKWxpZmV0aW1lCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+dGV4
dEluZGljYXRvcldpbmRvdykKLSAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+KHNlbGYpOworICAgICAgICBf
cHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9IG1ha2VVbmlxdWU8VGV4dEluZGljYXRvcldp
bmRvdz4oc2VsZik7CiAKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRp
bmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpbc2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6
dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCldIHRv
VmlldzpuaWxdOwogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRl
cyA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOnRleHRCb3VuZGluZ1JlY3RJbldp
bmRvd0Nvb3JkaW5hdGVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdEYXRhLm1tCmluZGV4IDEwNjBjMmQ4NTRhZGEwZGNhZmIzMzU1OWM4MTFlNGVlNDk0Y2M2
ZTAuLjgyMzhhNGVjNWZlZTE2ODM2NGVkMTMwNGJjNzUxNWY1NTE3ZmU4OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQpAQCAtOTYsNyArOTYs
NyBAQCBMYXllckZsdXNoQ29udHJvbGxlcjo6TGF5ZXJGbHVzaENvbnRyb2xsZXIoV2ViVmlldyog
d2ViVmlldykKIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNj
aGVkdWxlcihMYXllckZsdXNoQ29udHJvbGxlciogZmx1c2hDb250cm9sbGVyKQogICAgIDogbV9m
bHVzaENvbnRyb2xsZXIoZmx1c2hDb250cm9sbGVyKQogewotICAgIG1fcnVuTG9vcE9ic2VydmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0
PENGSW5kZXg+KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVy
czo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihXZWJD
b3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gp
LCBbdGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hDYWxsYmFjaygpOwogICAgIH0p
OwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKGlkKWluaXQKICAgICBwbHVnaW5EYXRhYmFzZUNs
aWVudENvdW50Kys7CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBtX2Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+
KCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRleCA2NDZlNmFlZjkz
MmYxYzk5Mjk4NTM2YzgyZjJjOTU1YTcxYTE5MmNmLi5kZTUyYzg1ODY0MTQyOTJjM2M5N2VkYmU5
OTRhYmYxZDVmNzhkNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMTc2LDYgKzE3Niw3IEBAIHZvaWQgSFVE
U2xpZGVyOjpkcmFnKGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBzdGFydCkKIAogI2lmIFVT
RShDQSkKIGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50IDogcHVi
bGljIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGF5ZXJDbGllbnQoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlciogcGFyZW50KSA6IG1fcGFyZW50KHBhcmVudCkgeyB9CiAKQEAgLTI0NiwxMCArMjQ3LDEw
IEBAIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIo
KQogICAgICwgbV9tb3ZpbmdXaW5kb3coZmFsc2UpCiAgICAgLCBtX3RpbWVyKCp0aGlzLCAmRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKICNpZiBVU0UoQ0EpCi0gICAgLCBt
X2xheWVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQorICAgICwg
bV9sYXllckNsaWVudChtYWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKICAgICAsIG1fcm9v
dENoaWxkKFBsYXRmb3JtQ0FMYXllcldpbjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlTGF5ZXIsIG1fbGF5ZXJDbGllbnQuZ2V0KCkpKQogI2VuZGlmCi0gICAgLCBtX2Z1bGxzY3Jl
ZW5XaW5kb3coc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93PihzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhp
cykpKQorICAgICwgbV9mdWxsc2NyZWVuV2luZG93KG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbkNsaWVudCo+KHRoaXMpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCmluZGV4IGYxZGU4ZGQ3Y2NlNzg4N2Q2
YzgzY2IyODExNTYxM2VhODBiNTVkNzguLjEzOGMzZWM0ZTI2NGIxOGIyNzJlMjY3YzE2ODM3NTc2
YWJjODQxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVy
OwogfQogCiBjbGFzcyBIVURXaWRnZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEhVRFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSA6IG1f
cmVjdChyZWN0KSB7IH0KICAgICAKQEAgLTEwMSw2ICsxMDIsNyBAQCBjbGFzcyBIVURTbGlkZXIg
OiBwdWJsaWMgSFVEV2lkZ2V0IHsKIH07CiAKIGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIgOiBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKTsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
bk1lc3NhZ2VUaHJvdHRsZXJXaW4uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oCmluZGV4IDVmZDc2ZDQxNzgyNTI2MWQ0ZWQ1Mjhh
ODU0MWY2NjJhNGY3Zjg3ZjkuLjRiNzlmZTYyYmZkODQ1OTliMjRkYzJkOTVjNjhjNTFlMjE1MDNj
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWVz
c2FnZVRocm90dGxlcldpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBQbHVnaW5WaWV3OwogCiAgICAgc3RydWN0IFBsdWdpbk1lc3Nh
Z2UgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEhX
TkQgaFduZDsKICAgICAgICAgVUlOVCBtc2c7CiAgICAgICAgIFdQQVJBTSB3UGFyYW07CkBAIC00
NCw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAgICAgY2xhc3MgUGx1
Z2luTWVzc2FnZVRocm90dGxlcldpbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHB1YmxpYzoKICAgICAgICAgUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbihQbHVnaW5W
aWV3Kik7CiAgICAgICAgIH5QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKaW5kZXggYWJhNjNk
YWI4YjMxZTQ3YWJkODA4OGIzNzgzYTgwZWM1NGMxMDIxOC4uMGY2YmVlZmZhZDFkYzAxNWM4YTQ3
N2U3ZmJlNWM5YjZhYWZhZmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgUGx1Z2luU3Ry
ZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBj
b25zdCBjaGFyCiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkgewog
ICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4oKTsKKyAgICAgICAgICAgIG1fZGVsaXZl
cnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8Y2hhcj4+KCk7CiAKICAgICAgICAgaW50IG9sZFNp
emUgPSBtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpOwogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+cmVz
aXplKG9sZFNpemUgKyBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMjEzNjMxN2YyOTk5ZDVlMTM3NDlkZjM4ZTE5YThmNGQy
ZjI1YmQ2MC4uNTQ3MTZhMGJiMmIxZmFiNzVkODFkZTQyYWVlOTZlZWEyZjZiMTNlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC01MTAs
NyArNTEwLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJiBm
cmFtZUxvYWRSZXF1ZXN0LCBib29sIHNlbmROb3RpZmljYXQKICAgICB9IGVsc2UgaWYgKCFtX3Bh
cmVudEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkodXJsKSkK
ICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAKLSAgICBzY2hlZHVsZVJlcXVl
c3Qoc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVl
c3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNBbGxvd2VkKCkpKTsK
KyAgICBzY2hlZHVsZVJlcXVlc3QobWFrZVVuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZy
YW1lTG9hZFJlcXVlc3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNB
bGxvd2VkKCkpKTsKIAogICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDA1NzI4
ZjNlZDM3MjA1MDRhZjU1Zjk4NzdmODYyMWJkYzA1Y2U2MjIuLjUyMDQ1OTRhYjZmODRkNTcwMDA0
MGRmZDI5ODFjM2Y1NjNlZGZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFBsdWdpblZpZXc6
OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiAgICAgaWYgKG1lc3NhZ2UgPT0gV01fVVNFUiArIDEgJiYKICAgICAgICAgbV9wbHVn
aW4tPnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25lTWVz
c2FnZXMpKSB7CiAgICAgICAgIGlmICghbV9tZXNzYWdlVGhyb3R0bGVyKQotICAgICAgICAgICAg
bV9tZXNzYWdlVGhyb3R0bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5NZXNzYWdlVGhyb3R0
bGVyV2luPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IG1ha2VVbmlx
dWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CiAKICAgICAgICAgbV9tZXNzYWdl
VGhyb3R0bGVyLT5hcHBlbmRNZXNzYWdlKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA1MzBiNjllZDcxOWMyN2FjYzZiMDdlMzUx
NTkyMjFmNTUyNmM1MzA1Li4zYmY0NGQ4N2QxOGQ1ZjI3M2NkMjk1MzU2NzZiMjQwOGYyYzkxNGUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIDog
cHVibGljIFdlYkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShJ
V2ViRGF0YVNvdXJjZSogd2ViRGF0YVNvdXJjZSkgOiBtX3dlYkRhdGFTb3VyY2Uod2ViRGF0YVNv
dXJjZSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCmlu
ZGV4IGUzZWMzM2ZkNDk5N2EwMWEyMjVkNWUxY2Y5YjRmNGI2MmQ3N2UyMmQuLmM0MWY4NmUwNzNk
OGRjYjllNGE4YTUyOTRmMGQ2M2NjOTRlNTYzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQuaApAQCAtNDAsNiArNDAsNyBAQAogY2xhc3MgV2ViVmlldzsKIAog
Y2xhc3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgOiBwdWJsaWMgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KFdlYlZpZXcmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDRhNDliOTRiYmE1OGQwYzU0NjMzMjljM2Y2ZWYyM2U4
NDg4YjdhZjMuLjdiMjk5Y2VlMjVlY2QxMGJiYTYyMWM4NTgxYjA2YWUwNmM1YTFkMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1h
eEZpbGVQYXRoc0xpc3RTaXplID0gVVNIUlRfTUFYOwogV2ViQ2hyb21lQ2xpZW50OjpXZWJDaHJv
bWVDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICwgbV9ub3RpZmljYXRpb25zRGVsZWdhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlPih3ZWJWaWV3KSkK
KyAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKG1ha2VVbmlxdWU8V2ViRGVza3RvcE5vdGlm
aWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
aW5kZXggNDFkNWYwNmFlYWNiN2UxNDE3ZDRiNzAyNDAwNjBiYmU1N2Y2OTMwZi4uNzg3NTQzMjUz
ZDVkZmY0ZWM2NjhlYmU4OGYwODg1ZDBiYWRiNjU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM4
LDYgKzM4LDcgQEAgY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTsKIGludGVy
ZmFjZSBJV2ViVUlEZWxlZ2F0ZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmgKaW5kZXggYzlkZTQ5YjNjZDE0NTUxNzI4ZmIyZjlkOTZlZjQ5MGU5OTE1OGJk
NC4uZjQ4ZWU3MzBlZWY3MTk3OWU0ZDhkMmMzMjdlZDFiYTE3Yjk0ZmZhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFz
cyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4
dE1lbnVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlLmgKaW5kZXggODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4Njc3MjZhNzQ2
MDc3Mi4uNGNmZDEwMjY1ZDFkMDdhNTdmMDMwYTRlNmIxNTA2OWNiYmZiOTMzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlm
aWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAtNDEsNiArNDEsNyBA
QCBjbGFzcyBEb2N1bWVudDsKIH0KIAogY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxl
Z2F0ZSA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVs
ZWdhdGUoV2ViVmlldyogdmlldyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBiNTk4OTMzMjkxMDA5ZTI4
NTFlZDc1NDE1ZWM0YWEwZmU0MDNkNjExLi40NWUzY2E3Mjc1M2FkMWFjMTE1M2JlOTYxOTNmNmVk
NjIxZmY4OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiBjbGFzcyBXZWJWaWV3
OwogCiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQo
V2ViVmlldyopOwogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCBkYjYzNTJkNjM4MTZmN2M5YWVlZTlmNzQ0ZTQ4ZTM4MWU4NTZk
MmI1Li42OWQ3ZWQzZTBhYTMxZjEzYmVhNjRjZjBjMjc2NWUyNTRmYmY4ZTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBX
ZWJFZGl0b3JVbmRvVGFyZ2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRv
ckNsaWVudChXZWJWaWV3Kik7CiAgICAgfldlYkVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDhlMzU0YjcxY2RmZDJhNWY5YjhiMDExYTAzMjlkNzQyNGJj
OTBiYmMuLmQ0YjJmN2Y2M2U4NjA4NTkzOTM0NTJiZDYyZTEyODVkMmU4YWQ0N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTkzLDYgKzkzLDcgQEAgc3RhdGljIFdlYkRhdGFT
b3VyY2UqIGdldFdlYkRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIH0KIAogY2xh
c3MgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJpdmF0ZSgpIAogICAgICAgICA6IG1fcG9saWN5RnVuY3Rpb24obnVsbHB0cikK
QEAgLTEwNyw3ICsxMDgsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByaXZhdGUgewogfTsKIAogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiB3ZWJGcmFtZSkKLSAgICA6IG1fcG9saWN5TGlzdGVu
ZXJQcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+
KCkpCisgICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShtYWtlVW5pcXVlPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcml2YXRlPigpKQogICAgICwgbV93ZWJGcmFtZSh3ZWJGcmFtZSkKICAgICAs
IG1fbWFudWFsTG9hZGVyKDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNl
KSAKQEAgLTk3Myw3ICs5NzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbQogCiAgICAgQVNT
RVJUKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBjYWNoZWRGcmFtZS0+
ZG9jdW1lbnRMb2FkZXIoKSk7CiAKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4oc3Rh
dGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVGcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CisgICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0
YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBlYjk3NThiZDQyMTA3ZDJm
OWE4NTRlNGU2ODgxNjZhNmY1MTVmYjlmLi5iYmE5YzlmNDQ1MzU4ZDdjZTNlYTAzZjg5NjY0MWJk
NmU1ZTA0MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAg
Y2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdl
b2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNs
aWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDc1Njk1OTBj
MWIzY2YzODE2ZmM0MmEzNWJmM2Y2NmJmZDc4OTAyMjQuLmY4MGFlMDQ4YjgyZGJkYjIzNDY1NDY4
ZDkzM2M2MGE3MDk3MmM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTY5LDcg
KzE2OSw3IEBAIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7Ci0gICAgbV9m
cm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVu
ZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRl
RnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3Rl
ZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdl
YlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogICAgIG1fZnJvbnRl
bmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
bV9mcm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9IGZyb250ZW5k
SHduZDsKICAgICByZXR1cm4gdGhpczsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6aGlnaGxpZ2h0KCkKICAgICBib29sIGNyZWF0aW5nSGlnaGxpZ2h0ID0gIW1f
aGlnaGxpZ2h0OwogCiAgICAgaWYgKGNyZWF0aW5nSGlnaGxpZ2h0KQotICAgICAgICBtX2hpZ2hs
aWdodCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViTm9kZUhpZ2hsaWdodD4obV9pbnNwZWN0ZWRXZWJW
aWV3KTsKKyAgICAgICAgbV9oaWdobGlnaHQgPSBtYWtlVW5pcXVlPFdlYk5vZGVIaWdobGlnaHQ+
KG1faW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBpZiAobV9oaWdobGlnaHQtPmlzU2hvd2luZygp
KQogICAgICAgICBtX2hpZ2hsaWdodC0+dXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmlu
ZGV4IDk1YzlhZmE4NTAwMmE1NDMyNzBiN2NlNmIzODhjNzBkNDg5MTg1MTguLjBhNTE0ODM5MWJh
ZTEyNjBkZjY4NjZiMjg3MDdlNjYwODRlOTIzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBA
IC01MCw2ICs1MCw3IEBAIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBjbGFzcyBXZWJWaWV3Owog
CiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvckNs
aWVudChXZWJWaWV3Kik7CiAKQEAgLTk0LDYgKzk1LDcgQEAgY2xhc3MgV2ViSW5zcGVjdG9yQ2xp
ZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3Bl
Y3QKIH07CiAKIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwsIFdlYkNvcmU6OldpbmRvd01l
c3NhZ2VMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywg
SFdORCBpbnNwZWN0ZWRXZWJWaWV3SHduZCwgSFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0
cjxXZWJWaWV3PiYgZnJvdG5lbmRXZWJWaWV3LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdl
Ykluc3BlY3RvckNsaWVudCosIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4pOwogICAgIHZpcnR1
YWwgfldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCAyNDkzYzdiMGI3OWZjNGZkOGVjZWMw
ZWE5NjY3YzZlZTJhYzNhMDRhLi40NDU0MmExZGExMDNhYTQ0NzYzZTk0ZDRmYWJhODY0ZWQwMmZj
N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAKQEAgLTM1NSw2ICszNTUsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0SURC
UGVyT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogfQogCiBjbGFzcyBEaWRN
b2RpZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEaWRNb2RpZnlPcmlnaW5EYXRhKTsKIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNl
TWFuYWdlciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCAyN2FmMWJh
ZTY1M2VmZjAyZjY3MDRmN2UzOWFkMGUxYWM1MGFkNzBiLi44YWZiYTBmNmQ1M2FmZDU1NTg0NWMx
OTUzNmMyYTljMWVjNWYzN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIC8vIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJF
bGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQotICAgIDogbV9y
ZXN1bHQoc3RkOjptYWtlX3VuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQorICAgIDogbV9y
ZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0Nv
dW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWci
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBhODFj
MDBlNTZjNWRlMmFlYmMxMmFiOGI2ZGIxMWJjOTM0ZWJiYmRhLi5mYjg4ZTM5ZTdiNTZhYzMyZGNm
NWNmNTAxMWMzNTQ4MTcxYTZjM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeUl0ZW0uY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6
aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oX0luX29wdF8gdm9pZCogZGljdGlvbmEK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IHJlZGlyZWN0VVJMc1ZlY3RvcjsK
ICAgICBpZiAoQ0ZBcnJheVJlZiByZWRpcmVjdFVSTHNSZWYgPSBzdGF0aWNfY2FzdDxDRkFycmF5
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5UmVmLCByZWRpcmVjdFVSTHNLZXkp
KSkgewogICAgICAgICBDRkluZGV4IHNpemUgPSBDRkFycmF5R2V0Q291bnQocmVkaXJlY3RVUkxz
UmVmKTsKLSAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oc2l6ZSk7CisgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlx
dWU8VmVjdG9yPFN0cmluZz4+KHNpemUpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkg
PCBzaXplOyArK2kpCiAgICAgICAgICAgICAoKnJlZGlyZWN0VVJMc1ZlY3RvcilbaV0gPSBTdHJp
bmcoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVkaXJl
Y3RVUkxzUmVmLCBpKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIu
Y3BwCmluZGV4IDJmMWYyZjQ4MDdlYjljNGZlNzA4MzVkYjc4ZTM0YTM0YmNmZjM2ZDAuLmQ2NWRl
MTllZTk5YzQ1MTQ0NWRmYmYxYjEzNTlkYzJhOGJhMzhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DQUQzRFJlbmRlcmVyLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxE
M0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+IENBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9j
ZXNzaW5nCiAgICAgbWVtY3B5KG92ZXJsYXlRdWFkQnVmZmVyLCBvdmVybGF5UXVhZFZlcnRpY2Vz
LCBzaXplb2Yob3ZlcmxheVF1YWRWZXJ0aWNlcykpOwogICAgIG92ZXJsYXlRdWFkLT5VbmxvY2so
KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4
dD4oc2NlbmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RDNE
UG9zdFByb2Nlc3NpbmdDb250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKIH0KIAog
Ly8gRklYTUU6IDxyZGFyOi8vNjUwNzg1MT4gU2hhcmUgdGhpcyBjb2RlIHdpdGggQ29yZUFuaW1h
dGlvbidzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpD
b3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCmluZGV4IDY3ZDQ4MzUzYjAz
ZDcyZWE4YTljMjhhYjg3MGQ3NWRhMTFkODA4ZWMuLjQ3ZWFkZGE2NTYxMmU2MDUwZDJjMjhhY2U2
ZjRjOWFjZTljYmI1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCkBAIC00
Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXS1FDQSB7CiBjbGFzcyBJbWFnZTsKIAogY2xhc3MgRDNE
UG9zdFByb2Nlc3NpbmdDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQoY29uc3QgQ0NvbVB0cjxJRGlyZWN0
M0RUZXh0dXJlOT4mLCBjb25zdCBDQ29tUHRyPElEaXJlY3QzRFZlcnRleEJ1ZmZlcjk+Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaAppbmRleCBmOTc1NWJi
OGRhZWFhYjM5ZDM0MjJlZThmZWIwZjI0YzFiMzU0ZmVkLi5iMjY5NTQ5OWI4MjZiOTliODJlYWZh
ODQ1NDE4N2QxOWY2ZTA3ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJOb2RlSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhp
Z2hsaWdodC5oCkBAIC0zNSw2ICszNSw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJO
b2RlSGlnaGxpZ2h0IDogV2ViQ29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb2RlSGlnaGxpZ2h0KFdlYlZp
ZXcqKTsKICAgICB+V2ViTm9kZUhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggN2JkOTg4OTYxMTFjM2IzZmU2
ZmU1NGYwYTI0Nzk2NjA2YjIyYTc1Zi4uOTI1MzJkYmRjYTQxYjg1MzFlOTE2OGNkZGRlMzFiNTdh
N2Y0NTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0
aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRp
b25DZW50ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgT2JqZWN0T2JzZXJ2ZXJMaXN0
OjppdGVyYXRvciBPYnNlcnZlckxpc3RJdGVyYXRvcjsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IE9iamVjdE9ic2VydmVyTGlzdD4gTWFwcGVkT2JzZXJ2ZXJzOwogCiBzdHJ1Y3QgV2ViTm90aWZp
Y2F0aW9uQ2VudGVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIE1hcHBlZE9ic2VydmVycyBtX21hcHBlZE9ic2VydmVyczsKIH07CiAKQEAgLTUzLDcg
KzU0LDcgQEAgc3RydWN0IFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGUgewogSVdlYk5vdGlm
aWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjptX2RlZmF1bHRDZW50ZXIgPSAw
OwogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCi0gICAg
OiBkKHN0ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKKyAg
ICA6IGQobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAg
IGdDbGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRp
b25DZW50ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9u
Q2VudGVyLmgKaW5kZXggMzg5ZTk4YzdkOWZkY2EzMDMxNjAxNGY5ZjFkMWY2MjBhMzQ5ZWYyZi4u
ZjE0OTgxMjJkOGRlM2MzMzczMjU0NDhiZTM5MTQ0MjRlYzc2MDA1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgKQEAgLTMxLDYgKzMxLDcg
QEAKIHN0cnVjdCBXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlOwogCiBjbGFzcyBXZWJOb3Rp
ZmljYXRpb25DZW50ZXIgZmluYWwgOiBwdWJsaWMgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk5vdGlm
aWNhdGlvbkNlbnRlciogY3JlYXRlSW5zdGFuY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAppbmRleCA5NzYxNDhlMzNmNzQ0NmQ3YzM4NDk5NTlkNmNmNzNkZWY0OGY2N2ZmLi45
YTYxMDc5ZWJlNWQzOTBhM2VjNDlmY2NkMDg2NGQ5NzMxNjRhMjMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcApAQCAtMTg4MCw3ICsxODgwLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5k
bGVNb3VzZUV2ZW50KFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkK
ICAgICAgICAgbW91c2VFdmVudC5zZXRDbGlja0NvdW50KGdsb2JhbENsaWNrQ291bnQpOwogICAg
ICAgICBoYW5kbGVkID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZU1v
dmVkKG1vdXNlRXZlbnQpOwogICAgICAgICBpZiAoIW1fbW91c2VPdXRUcmFja2VyKSB7Ci0gICAg
ICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8VFJBQ0tNT1VTRUVW
RU5UPigpOworICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxUUkFDS01PVVNFRVZFTlQ+KCk7CiAgICAgICAgICAgICBtX21vdXNl
T3V0VHJhY2tlci0+Y2JTaXplID0gc2l6ZW9mKFRSQUNLTU9VU0VFVkVOVCk7CiAgICAgICAgICAg
ICBtX21vdXNlT3V0VHJhY2tlci0+ZHdGbGFncyA9IFRNRV9MRUFWRTsKICAgICAgICAgICAgIG1f
bW91c2VPdXRUcmFja2VyLT5od25kVHJhY2sgPSBtX3ZpZXdXaW5kb3c7CkBAIC02Nzk0LDcgKzY3
OTQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUoX0lu
XyBCU1RSIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYgKCFt
X2VtYmVkZGVkVmlld01JTUVUeXBlcykKLSAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgbV9lbWJlZGRl
ZFZpZXdNSU1FVHlwZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKIAogICAgIG1f
ZW1iZWRkZWRWaWV3TUlNRVR5cGVzLT5hZGQodG9TdHJpbmcobWltZVR5cGUpKTsKICAgICByZXR1
cm4gU19PSzsKQEAgLTY4OTQsNyArNjg5NCw3IEBAIHZvaWQgV2ViVmlldzo6ZW50ZXJWaWRlb0Z1
bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50CiAg
ICAgICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyKTsKICAgICB9CiAKLSAg
ICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI+KCk7CisgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyID0g
bWFrZVVuaXF1ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyPigpOwogICAgIG1fZnVsbFNjcmVl
blZpZGVvQ29udHJvbGxlci0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwogICAgIG1f
ZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYKQEAg
LTY5NDYsNyArNjk0Niw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXAo
X0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9j
YXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFr
ZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdo
aXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLAogICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QsIGJsYWNrbGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50
U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLAogICAg
ICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxs
RnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSk7CkBAIC02OTczLDcgKzY5NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJT
dHlsZVNoZWV0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0g
cmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7Ci0gICAgYXV0byBzdHls
ZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1
cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdW
ZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksCisgICAgYXV0byBzdHlsZVNoZWV0ID0g
bWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1Zl
Y3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0
LCBibGFja2xpc3RDb3VudCksCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdElu
QWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNl
clN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigp
LmFkZFVzZXJTdHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJ
bmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTcyMzcsNyAr
NzIzNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFj
Y2VsZXJhdGVkKQogICAgIH0KICNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBpZiAo
YWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAg
IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRl
ZDsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFw
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAppbmRleCBlZWNhNzM5ZDJiMzk0
ZTg2MDM1MWJhMWI0NjRkZTU0NzhiOWJiMTY3Li5kYjM2ZWI5ZGVkMmI5ZTBmNWY2ZWY0MGRiNmM2
OTkxOWE3MzA2ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAu
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaApAQCAtODIsNiArODIsNyBA
QCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUp
ID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0
ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwKIHR5
cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZE1hY3JvU2VtaWNvbG9uaWZpZXIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oCmluZGV4IGMwNDRkNzczYjg3OWE2NmRmYWRk
MmUyY2EzMTVlZWVhMzc2ZmZhNGEuLjNhYTFkMjA5NTFkYmYzMzY0ZTdkMTZkZDIzNjQzZDBjZDk3
ZjZmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMu
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKQEAgLTEyMyw2
ICsxMjMsNyBAQCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6
ZV90IHNpemUpID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBw
KSA9IGRlbGV0ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZh
dGU6IFwKIHR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1hY3JvU2VtaWNvbG9u
aWZpZXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDJhNTlhNzI1YTBkNzFjZTcwYzAxYjFhMDg3ODZiZmEyMmZmODQzMTcuLmRjNmFmNzAwNDA2
Y2UwZjdlMThiMjhlMjZlMTcxZmM4NTA0MmZjZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMTktMDgtMTQgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFr
ZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwOgorICAgICAgICAoYWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKToKKyAgICAg
ICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCk6CisgICAgICAgIChUZXN0UnVu
bmVyOjpydW5VSVNjcmlwdCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxl
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAg
ICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgIChldmVudFByZXNzZWRNb3VzZUJ1dHRv
bnNTd2l6emxlckZvclZpZXdBbmRFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L0RSVERhdGFPYmplY3QuY3BwOgorICAgICAgICAoRFJURGF0YU9iamVjdDo6U2V0RGF0YSk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAg
ICAgKEZyYW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAgICAgICAoRFJUVW5kb01hbmFnZXI6
OkRSVFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUpOgorICAg
ICAgICAoVUlEZWxlZ2F0ZTo6cmVzZXRVbmRvTWFuYWdlcik6CisgICAgICAgICogTWluaUJyb3dz
ZXIvd3BlL21haW4uY3BwOgorICAgICAgICAoY3JlYXRlVmlld0JhY2tlbmQpOgorICAgICAgICAo
bWFpbik6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250ZXh0Lmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhv
ZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1l
dGhvZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db3VudGVycy5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6cnVuSlNUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNpbmdFbnN1cmUpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdE1vdmluZ1VzaW5nQWRkKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0xvY2suY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuTG9ja1Rlc3Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VW5pcXVlUmVmLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDQVJpbmdCdWZmZXJUZXN0OjpTZXRVcCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVGVzdFZhbHVlKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3Bw
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNy
ZWF0ZVBhZ2UuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpXZWJLaXQyVXNlck1lc3NhZ2VSb3VuZFRyaXBUZXN0OjpT
ZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0MldpbGxMb2FkVGVzdDo6U2V0VXApOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFy
YW5jZUluQnVuZGxlX0J1bmRsZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkZvcmNlTGln
aHRBcHBlYXJhbmNlSW5CdW5kbGVUZXN0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHA6Cisg
ICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICh0ZXN0V2ViVmlld0F1dGhlbnRpY2F0
aW9uUHJveHlIVFRQUyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1dlYlByb2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NRE9NV2luZG93VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01ET01XaW5kb3dUZXN0
OjpjcmVhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRp
ZXNDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgIChhcHBs
eVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJz
KToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246
YWRkVG9XaW5kb3c6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViS2l0VGVzdFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250
T3B0aW9ucy5tbToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIGluaXRXaXRoRm9udE9wdGlv
bnM6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpkaWRDcmVhdGVQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
U3RyaW5nRnVuY3Rpb25zLmg6CisgICAgICAgIChXVFI6OnRvU1REKToKKyAgICAgICAgKFdUUjo6
dG9XVEZTdHJpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgor
ICAgICAgICAoV1RSOjpjcmVhdGVUZXN0VVJMKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnJ1blRlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVh
dGVXZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OnJ1blVJU2lkZVNjcmlwdCk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdUUjo6Z2V0
R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0
Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
UmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAgIChXVFI6OkV2ZW50U2Vu
ZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1v
dXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHA6Cisg
ICAgICAgIChXVFI6OndwZUtleVN5bUZvcktleVJlZik6CisgICAgICAgICogd3BlL2JhY2tlbmRz
L1ZpZXdCYWNrZW5kLmg6CisKIDIwMTktMDgtMTQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXShSRUdSRVNTSU9OOiByMjAwNDg3KTog
V2ViS2l0LlJlcXVlc3RBY3RpdmF0ZWRFbGVtZW50SW5mb0ZvclJvdGF0ZWRJbWFnZSBmYWlscyBv
biBpT1MgMTMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oCmluZGV4IGU3M2EyYzI3ZDE3NzIyZDEyNGQxNDI1MWI5MGI2NTUyMTA4NWEzMWMuLjFiZGYx
YzQzMGJjNTBiZTM4NGZhY2NlNTBkZmZhNTI4ZGE0ODU2YTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApAQCAtNDEsNiArNDEsNyBAQAogI2Vu
ZGlmCiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwogICAg
IH5BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cAppbmRleCA5MGM2NGMzNjE0Y2RjNDJkYjZmNDk0MmJkZTFhZDEzMGZkMWZkOWNiLi5kMmJmMmU4
MmFjZDY0NWM1NzhkNjJmYzZiNzBjODdiYmE5ZmU2Y2YzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmNwcApAQCAtMzYzLDExICszNjMsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgYWRkVVJM
VG9SZWRpcmVjdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW4K
ICAgICBBU1NFUlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3Ry
aW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShvcmlnaW4uZ2V0KCkpOwotICAgIGF1dG8gb3Jp
Z2luQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAg
IGF1dG8gb3JpZ2luQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hh
cltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKG9yaWdpbi5n
ZXQoKSwgb3JpZ2luQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIG1heExlbmd0
aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShkZXN0aW5hdGlvbi5nZXQoKSk7
Ci0gICAgYXV0byBkZXN0aW5hdGlvbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPiht
YXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmlu
Z0dldFVURjhDU3RyaW5nKGRlc3RpbmF0aW9uLmdldCgpLCBkZXN0aW5hdGlvbkJ1ZmZlci5nZXQo
KSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGlj
X2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0x
MzE4LDcgKzEzMTgsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRXaWxsU2VuZFJlcXVlc3RDbGVh
ckhlYWRlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKUwogICAgIEFTU0VSVCghKmV4
Y2VwdGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRG
OENTdHJpbmdTaXplKGhlYWRlci5nZXQoKSk7Ci0gICAgYXV0byBoZWFkZXJCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBoZWFkZXJCdWZm
ZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCAr
IDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaGVhZGVyLmdldCgpLCBoZWFkZXJCdWZm
ZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9
IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OwpAQCAtMjM5NCw3ICsyMzk0LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRQYWludEJy
b2tlbkltYWdlKGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkKIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbChKU1N0cmluZ1JlZiBjaGFubmVsKQogewogICAg
IHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY2hh
bm5lbCk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVu
Z3RoICsgMSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmco
Y2hhbm5lbCwgYnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFdlYkNvcmVUZXN0
U3VwcG9ydDo6c2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZSh7IGJ1ZmZlci5nZXQoKSB9KTsKQEAg
LTI0NjQsNyArMjQ2NCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHQoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHNjcmlwdCwgSlNWYWx1ZVJlCiAgICAgY2FjaGVUZXN0
UnVubmVyQ2FsbGJhY2soY2FsbGJhY2tJRCwgY2FsbGJhY2spOwogCiAgICAgaWYgKCFtX1VJU2Ny
aXB0Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdUUjo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fVUlTY3JpcHRDb250ZXh0
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V1RSOjpVSVNjcmlwdENvbnRleHQ+
KCp0aGlzKTsKIAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcoSlNTdHJpbmdHZXRDaGFyYWN0ZXJz
UHRyKHNjcmlwdCksIEpTU3RyaW5nR2V0TGVuZ3RoKHNjcmlwdCkpOwogICAgIG1fVUlTY3JpcHRD
b250ZXh0LT5ydW5VSVNjcmlwdChzY3JpcHRTdHJpbmcsIGNhbGxiYWNrSUQpOwpAQCAtMjUyMSw3
ICsyNTIxLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1dG8gZmlsZSA9
IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBudWxscHRyKSk7
CiAgICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gZmls
ZUJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oZmlsZUJ1
ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZp
bGVCdWZmZXIuZ2V0KCksIGZpbGVCdWZmZXJTaXplKTsKIAogICAgICAgICBtX29wZW5QYW5lbEZp
bGVzLnB1c2hfYmFjayhmaWxlQnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAyZTkzOTdmZjU5NDkyNTAwZmIwODY4NzFjOGFmN2M2
ZjE2NjlhYmY0Li4xMzA2OGNhZTAzNTMyYmQ4ZjI1ZmQ0YmRiYzUyNWY1MmM0MjAwYjlkIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xNTM1LDcgKzE1
MzUsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1l
KQogICAgIC8vIHRoZSByZXN1bHQgd2l0aG91dCBhbnkgY29udmVyc2lvbi4KICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nUmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpaW5uZXJUZXh0KSk7CiAgICAgc2l6ZV90IGJ1
ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nUmVmLmdl
dCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJT
aXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5n
R2V0VVRGOENTdHJpbmdOb25TdHJpY3Qoc3RyaW5nUmVmLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1
ZmZlclNpemUpOwogICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiJUBcbiIsIFN0cmluZzo6ZnJv
bVVURjhXaXRoTGF0aW4xRmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKS5j
cmVhdGVDRlN0cmluZygpLmdldCgpXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCA0NjFiZDNkZjNlYmIyNjAzYWMzMjE4
Mjg4MjE4ZGQ4ZjY5MTY4ZmZkLi4zYmUzMzIyMWQ2YjNlYmMzNTZkNTFlMzM0YTI0ZDkyOWFlMjUz
YTllIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQpAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2xh
c3NNZXRob2RTd2l6emxlcj4gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWCiB7
CiAgICAgaWYgKFt2aWV3IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAg
ICAgIHZpZXcgPSBbKFdlYkhUTUxWaWV3ICopdmlldyBfaGl0Vmlld0ZvckV2ZW50OmV2ZW50XTsK
LSAgICByZXR1cm4gIVt2aWV3IGlzS2luZE9mQ2xhc3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IHN0
ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2Vs
ZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxl
ZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpIDogTlVMTDsKKyAgICByZXR1cm4gIVt2aWV3IGlz
S2luZE9mQ2xhc3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RT
d2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykp
IDogTlVMTDsKIH0KIAogc3RhdGljIE5TVUludGVnZXIgc3dpenpsZWRFdmVudFByZXNzZWRNb3Vz
ZUJ1dHRvbnMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFP
YmplY3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCmlu
ZGV4IGVmMmQyZWZiODU5ZjRiOGEyMmYzMGM0NjdhY2UxZjhhYWQxNTdhNGQuLmNkZmU4YWNiNDY4
Yzc0ZDBhZTA4NGNmODc2ZDUzNGZmMWUzYmE1N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRFJURGF0YU9iamVjdC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgRk9STUFURVRDKiBjZlVybFdG
b3JtYXQoKQogfQogCiBjbGFzcyBXQ0VudW1Gb3JtYXRFdGMgZmluYWwgOiBwdWJsaWMgSUVudW1G
T1JNQVRFVEMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFdDRW51bUZvcm1hdEV0Yyhjb25zdCBWZWN0b3I8Rk9STUFURVRDPiYgZm9ybWF0cyk7
CiAgICAgZXhwbGljaXQgV0NFbnVtRm9ybWF0RXRjKGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Rk9STUFURVRDPj4mIGZvcm1hdHMpOwpAQCAtMjQ5LDcgKzI1MCw3IEBAIFNURE1FVEhPRElN
UCBEUlREYXRhT2JqZWN0OjpTZXREYXRhKF9Jbl8gRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBfSW5f
IFNUR01FRElVTSoKICAgICBpZiAoIXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAKLSAgICBhdXRvIGZvcm1hdGV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8
Rk9STUFURVRDPigpOworICAgIGF1dG8gZm9ybWF0ZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0s
IFN0Z01lZGl1bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVt
b3J5KGZvcm1hdGV0Yy5nZXQoKSwgc2l6ZW9mKEZPUk1BVEVUQykpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EUlREYXRhT2JqZWN0LmgKaW5kZXggYjk1MmIwODFhZmVhYTM5MTkyN2FkMmNhYjdk
ZDE4ZTg3OTMzNzQyMS4uMTZjNjQyMzA4ZTU0YzE1NWFlMzY0ZDI3MzAxYjI4MjUzOGZiZDU5NyAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5oCkBAIC00NSw2ICs0NSw3
IEBAIHN0cnVjdCBTdGdNZWRpdW1EZWxldGVyIHsKIH07CiAKIGNsYXNzIERSVERhdGFPYmplY3Qg
ZmluYWwgOiBwdWJsaWMgSURhdGFPYmplY3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHZvaWQgQ29weU1lZGl1bShTVEdNRURJVU0qIHBNZWREZXN0LCBTVEdN
RURJVU0qIHBNZWRTcmMsIEZPUk1BVEVUQyogcEZtdFNyYyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5o
CmluZGV4IDcwYmQ0NzBlM2RjYzBlNjMwZjZkNTFjMmVjYThiNDIzZGQzZjkzZDcuLjQ2ZDg0NWUz
MDI3OThjM2UzMjM4ZjJhYmQxNzU1N2ZkNGE1OWRkYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHdpbmRlZi5oPgogCiBjbGFzcyBEUlREZXNrdG9w
Tm90aWZpY2F0aW9uUHJlc2VudGVyIGZpbmFsIDogcHVibGljIElXZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREcm9wU291cmNlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRFJURHJvcFNvdXJjZS5oCmluZGV4IGQ5ZWU3ZDAxOTY1NjM2ZTEzMzE2ODc3Y2U5MzRi
YzRjNmQ3MDIxY2MuLjlhY2E0NjQzZmRjMjFhZTgxNTljNWVjNjlmZWRlYzY5Nzk5MWQwZjQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREcm9wU291cmNlLmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuaApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogY2xhc3MgRFJURHJvcFNvdXJjZSBmaW5hbCA6IHB1
YmxpYyBJRHJvcFNvdXJjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9J
bl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsgICAgICAgIAog
ICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHJhZ2dpbmdJbmZvLmggYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHJhZ2dpbmdJbmZvLmgKaW5kZXggMDJhZGFiMzYzNDYyNDhiMWRiYTY0Y2Nm
MGM2N2JkYWQ3N2QzNTlkYi4uMDkwN2Q1NDhkN2MzMDZjYzZmMTFhYzg2NGM5ZjRmYzBhMzllOGVk
YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RyYWdnaW5nSW5mby5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EcmFnZ2luZ0luZm8uaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgPG9iamlkbC5oPgogCiBjbGFzcyBEcmFnZ2luZ0luZm8geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERyYWdnaW5nSW5mbyhJRGF0YU9i
amVjdCogb2JqZWN0LCBJRHJvcFNvdXJjZSogc291cmNlKQogICAgICAgICA6IG1fb2JqZWN0KG9i
amVjdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdh
dGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuaAppbmRleCA0
ZjE3NjdjNmVlNGIyNTJiODg4ZTkwYTViZjlmNjA2ODc4ZTFjZGVmLi5iNTE3MzlmNWNkYTNiOWFi
NDA3Y2Q3MDk5NGI3OTZjMjRhZjUzNGMxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRWRpdGluZ0RlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Vk
aXRpbmdEZWxlZ2F0ZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViS2l0TGVnYWN5
L1dlYktpdC5oPgogCiBjbGFzcyBfX2RlY2xzcGVjKHV1aWQoIjI2NURDRDRCLTc5QzMtNDRhMi04
NEJDLTUxMUMzRURBQkQ2RiIpKSBFZGl0aW5nRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgSVdlYkVk
aXRpbmdEZWxlZ2F0ZTIsIHB1YmxpYyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEVkaXRpbmdEZWxlZ2F0ZSgpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5kZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2VuZGVyLmNwcAppbmRleCBhZGNiODQ3ZTM3
MmIzMmY3N2QyMGJlMzhhOWQ1Y2JkYWJmNTdmNWUxLi4zYWJiOTVkYzAzOTIwZjRlNzgyNGYwNjc4
MGU4MzFmMDVjNTA4ZGE0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRXZl
bnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVudFNlbmRlci5j
cHAKQEAgLTU5LDYgKzU5LDcgQEAgc3RhdGljIGludCB0aW1lT2Zmc2V0Owogc3RhdGljIFBPSU5U
IGxhc3RNb3VzZVBvc2l0aW9uOwogCiBzdHJ1Y3QgRGVsYXllZE1lc3NhZ2UgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBNU0cgbXNnOwogICAgIHVuc2lnbmVkIGRl
bGF5OwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWRE
ZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
Y3BwCmluZGV4IGM4MGRmMWJlNWYyZGU0N2QzYjgzMTYzN2VmNmU5ZmJjZDkzNGM4ZTYuLjExYzkz
MzliMTZkODA0ZDJjMjAxYzkzMjlmNGE4YzM1NDQyYTgzY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcApAQCAtNzIsOSArNzIsOSBAQCBzdHJp
bmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoSVdlYkZyYW1lKiB3ZWJGcmFtZSkK
IH0KIAogRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9hZERlbGVnYXRlKCkKLSAgICA6IG1fZ2ND
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8R0NDb250cm9sbGVyPigpKQotICAgICwgbV9hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyPigpKQotICAgICwgbV90ZXh0SW5wdXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4
dElucHV0Q29udHJvbGxlcj4oKSkKKyAgICA6IG1fZ2NDb250cm9sbGVyKG1ha2VVbmlxdWU8R0ND
b250cm9sbGVyPigpKQorICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihtYWtlVW5pcXVl
PEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPigpKQorICAgICwgbV90ZXh0SW5wdXRDb250cm9sbGVy
KG1ha2VVbmlxdWU8VGV4dElucHV0Q29udHJvbGxlcj4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmggYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaAppbmRleCAyY2UyZTlkMTU3NTc0ZTkx
YWJlNmExNDdlMjhjZTg1YTM2MjgxZGMyLi5mOGRmOGMzM2JmYTRhOTBlY2Q1M2Y5MTM4MTFmMDBh
YzE3MjAzOTE0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2Fk
RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwogY2xhc3Mg
R0NDb250cm9sbGVyOwogCiBjbGFzcyBGcmFtZUxvYWREZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViRnJh
bWVMb2FkRGVsZWdhdGUsIHB1YmxpYyBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMiwgcHVi
bGljIElXZWJOb3RpZmljYXRpb25PYnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgRnJhbWVMb2FkRGVsZWdhdGUoKTsKICAgICB2aXJ0dWFsIH5GcmFt
ZUxvYWREZWxlZ2F0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0hp
c3RvcnlEZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0hpc3RvcnlEZWxlZ2F0
ZS5oCmluZGV4IGJhNmExYWY0NzM2NGYxODljMDljNDY3NzdlYTMzMmM0OWNkMTkzM2UuLmFhZDE4
MTVkNmY5NDhiOGEyYTBkZDE0NWRhNWNmNzczZTIwMzA0NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxX
ZWJLaXRMZWdhY3kvV2ViS2l0Lmg+CiAKIGNsYXNzIEhpc3RvcnlEZWxlZ2F0ZSA6IHB1YmxpYyBJ
V2ViSGlzdG9yeURlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBIaXN0b3J5RGVsZWdhdGUoKTsKICAgICB2aXJ0dWFsIH5IaXN0b3J5RGVsZWdhdGUo
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9NRDUuaAppbmRleCBiOGViODkwYTRmODY3Y2RlMmJjYWIzOGNmYmVj
MGIwMWQ3YThjZTllLi40NGY5MmNhZWVkMzU4ZDRhYzM4MGUzNGJjNTczYjZjMjg2ODM2ODA0IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL01ENS5oCkBAIC0zMiw2ICszMiw3IEBACiB0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgVUxPTkc7CiAKIHN0cnVjdCBNRDVfQ1RYIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgVUxPTkcgaVsyXTsKICAgICBVTE9ORyBidWZbNF07CiAgICAgdW5z
aWduZWQgY2hhciBpbls2NF07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
UG9saWN5RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Qb2xpY3lEZWxlZ2F0
ZS5oCmluZGV4IGU5ODM4NjUwNzY1MjIwZWZmMjFiYzEwODk0ODdhYmQ5M2JmYTA2YTAuLjY5MzIy
MTQ1MzY3MWVmYmFhOTkxMzhlMjQyMTA4NGNmNTIyY2E5OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9Qb2xpY3lEZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9Qb2xpY3lEZWxlZ2F0ZS5oCkBAIC0zNCw2ICszNCw3IEBACiBjbGFzcyBUZXN0UnVu
bmVyOwogCiBjbGFzcyBQb2xpY3lEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBJV2ViUG9saWN5RGVs
ZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBvbGlj
eURlbGVnYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9h
ZERlbGVnYXRlLmgKaW5kZXggMTFhZWI3ODA4M2RiNTNjZDhlOWY1NTk1ZDgxOGMwNzg3MjUyZjk1
Yi4uZTE3YjVjNDQ4Y2QyYzcyMzgwYTQ4ZjU5Njc1NTc3NmY2YTIzNjBmMCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBjbGFzcyBSZXNvdXJjZUxvYWREZWxl
Z2F0ZSA6IHB1YmxpYyBJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUsIHB1YmxpYyBJV2ViUmVzb3Vy
Y2VMb2FkRGVsZWdhdGVQcml2YXRlMiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkRGVsZWdhdGUoKTsKICAgICB2aXJ0dWFsIH5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rl
eHRJbnB1dENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXh0SW5wdXRD
b250cm9sbGVyLmgKaW5kZXggMjVjMzQ4ZTgxMTBhZmUxMTdkZTRkOGM5NWM3MmJiYjUzNmY2MTRi
NS4uMjlmMDM4YmUyZGRiNTBlOWZhZTUzMGUxYzZkMTNjMWQ0NmY5OTc5MiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1RleHRJbnB1dENvbnRyb2xsZXIuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vVGV4dElucHV0Q29udHJvbGxlci5oCkBAIC0zNCw4ICszNCwx
MCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgogCiBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIG1ha2VXaW5kb3dPYmpl
Y3QoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVn
YXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAppbmRleCBm
MGFkYmNlNDc5NmZhYmY0ZjBkNDJiMjcxMTYzMzcwMWFjNzgxMzE0Li44ZjgyZjBkOTI2YzBhZDY5
NjEwMWE1YjEzNTRlN2U3MGY0Mzg0NDNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vVUlEZWxlZ2F0ZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVs
ZWdhdGUuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiB1c2luZyBzdGQ6OndzdHJpbmc7CiAKIGNsYXNz
IERSVFVuZG9PYmplY3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIERSVFVuZG9PYmplY3QoSVdlYlVuZG9UYXJnZXQqIHRhcmdldCwgQlNUUiBhY3Rpb25OYW1l
LCBJVW5rbm93biogb2JqKQogICAgICAgICA6IG1fdGFyZ2V0KHRhcmdldCkKQEAgLTcxLDYgKzcy
LDcgQEAgY2xhc3MgRFJUVW5kb09iamVjdCB7CiB9OwogCiBjbGFzcyBEUlRVbmRvU3RhY2sgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fdW5kb1ZlY3Rvci5pc0VtcHR5KCk7IH0KICAgICB2b2lkIGNsZWFy
KCkgeyBtX3VuZG9WZWN0b3IuY2xlYXIoKTsgfQpAQCAtODMsNiArODUsNyBAQCBjbGFzcyBEUlRV
bmRvU3RhY2sgewogfTsKIAogY2xhc3MgRFJUVW5kb01hbmFnZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERSVFVuZG9NYW5hZ2VyKCk7CiAKQEAgLTEwMSw4
ICsxMDQsOCBAQCBjbGFzcyBEUlRVbmRvTWFuYWdlciB7CiB9OwogCiBEUlRVbmRvTWFuYWdlcjo6
RFJUVW5kb01hbmFnZXIoKQotICAgIDogbV9yZWRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRV
bmRvU3RhY2s+KCkpCi0gICAgLCBtX3VuZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9T
dGFjaz4oKSkKKyAgICA6IG1fcmVkb1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigpKQor
ICAgICwgbV91bmRvU3RhY2sobWFrZVVuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCiB7CiB9CiAKQEAg
LTE0Niw3ICsxNDksNyBAQCB2b2lkIERSVFVuZG9NYW5hZ2VyOjp1bmRvKCkKIH0KIAogVUlEZWxl
Z2F0ZTo6VUlEZWxlZ2F0ZSgpCi0gICAgOiBtX3VuZG9NYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8
RFJUVW5kb01hbmFnZXI+KCkpCisgICAgOiBtX3VuZG9NYW5hZ2VyKG1ha2VVbmlxdWU8RFJUVW5k
b01hbmFnZXI+KCkpCiAgICAgLCBtX2Rlc2t0b3BOb3RpZmljYXRpb25zKG5ldyBEUlREZXNrdG9w
Tm90aWZpY2F0aW9uUHJlc2VudGVyKQogewogICAgIG1fZnJhbWUuYm90dG9tID0gMDsKQEAgLTE1
Nyw3ICsxNjAsNyBAQCBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkKIAogdm9pZCBVSURlbGVnYXRl
OjpyZXNldFVuZG9NYW5hZ2VyKCkKIHsKLSAgICBtX3VuZG9NYW5hZ2VyID0gc3RkOjptYWtlX3Vu
aXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKKyAgICBtX3VuZG9NYW5hZ2VyID0gbWFrZVVuaXF1ZTxE
UlRVbmRvTWFuYWdlcj4oKTsKIH0KIAogSFJFU1VMVCBVSURlbGVnYXRlOjpRdWVyeUludGVyZmFj
ZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmggYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5oCmluZGV4IDc4MjU4OTAzNzcwMDU1YWM5MjQ2NjE5
MWE1ZWI4ZGVmZjQyNTE0YmIuLmY0ZjhkNWQyNzYzOWNjYjc0NDc2YWNlY2YxNWYyNzFkYjBmYjZl
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaApAQCAtMzcsNiArMzcsNyBA
QCBjbGFzcyBEUlRVbmRvTWFuYWdlcjsKIGNsYXNzIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVz
ZW50ZXI7CiAKIGNsYXNzIFVJRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgSVdlYlVJRGVsZWdhdGUy
LCBJV2ViVUlEZWxlZ2F0ZVByaXZhdGUzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBVSURlbGVnYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmgKaW5kZXggNGUwMjBm
MTk2Y2QwMzNkNjFlZTBlNjI4ZjZhMWU1OWNhMWMzMzQ1OC4uMGI4NGQyZDQ1NDU1ODNkZTlmYzBk
ZWMxMmE0YWE4OGE2NTllZDE5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0LmgKQEAgLTY4LDYgKzY4LDcgQEAg
dHlwZWRlZiBlbnVtICB7CiB9IENhbGxiYWNrVHlwZTsKIAogY2xhc3MgVUlTY3JpcHRDb250ZXh0
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShVSVNjcmlwdENvbnRleHQpOwogcHVibGljOgogICAgIFVJU2NyaXB0Q29udGV4dChVSVNjcmlw
dENvbnRleHREZWxlZ2F0ZSYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9j
b2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29h
L0NsYXNzTWV0aG9kU3dpenpsZXIuaAppbmRleCAyOGRiMTBhNDc5OTYzMGM2NGM1NWQwNzg2YzAw
ZWUwOTQ4OTE0NWUyLi4zOWI0ZTVlYTcxODM2ODhjZGVjOWJlZmNjOTY0Y2U4OTNhNTQzZjA3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenps
ZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenps
ZXIuaApAQCAtMjYsOSArMjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8b2JqYy9y
dW50aW1lLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogY2xhc3MgQ2xhc3NNZXRob2RTd2l6emxlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xhc3NNZXRob2RTd2l6
emxlcik7CiBwdWJsaWM6CiAgICAgQ2xhc3NNZXRob2RTd2l6emxlcihDbGFzcywgU0VMLCBJTVAp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3RhbmNlTWV0aG9k
U3dpenpsZXIuaAppbmRleCBiOGEwYjBiMThkMTMxZWNjOTliMjZhMzkxYzg5MGY5ZjZjNmMwNzJl
Li42MjQ3NGQ3Y2Q5Nzc3OThjNWJiZWNhZjY1NmE2MjY0ODU1YWNmODliIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaAorKysg
Yi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaApA
QCAtMjYsOSArMjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8b2JqYy9ydW50aW1l
Lmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KIAogY2xhc3MgSW5zdGFuY2VNZXRob2RTd2l6emxlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zdGFuY2VNZXRob2RTd2l6
emxlcik7CiBwdWJsaWM6CiAgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlcihDbGFzcywgU0VMLCBJ
TVApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db3VudGVycy5oCmluZGV4IGY5ZWEyMjQwMjYxNTBkOGUxYWM2YmI3NjE1
YjZkZTM4OTBhZjY3MGUuLmFiNWM1MmY3NWQxYWM2YWY5NjBhYzE0Y2E3MGI1Y2I3NGZhMzYyODgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgKQEAgLTI3LDYgKzI3LDggQEAKICNpZm5kZWYgQ291bnRl
cnNfaAogI2RlZmluZSBDb3VudGVyc19oCiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
CiBzdHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0
aW9uQ291bnQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvcHlDb3VudDsKQEAgLTUwLDYgKzUyLDcg
QEAgc3RydWN0IENvcHlNb3ZlQ291bnRlciB7CiAKIAogc3RydWN0IENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXIgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBz
dGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGRl
c3RydWN0aW9uQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNj
cmlwdFRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKaW5k
ZXggMjEzNmU5OGQ4ZWJiODc1ZDU5N2ZjNmUwN2M3YjAxZWQ1Yjg0YWUxNi4uNmEyMzM2MzI5NDFh
Y2Y2MDcwNTk0OTQyNjQwMWIzMjczMzdjNzA4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2Ny
aXB0VGVzdC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQg
cnVuSlNUZXN0KGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIFdLUGEKICAg
ICBVdGlsOjpydW4oJmNvbnRleHQuZGlkRmluaXNoKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXpl
ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGNvbnRleHQuYWN0dWFsU3RyaW5n
LmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZm
ZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhjb250
ZXh0LmFjdHVhbFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICAK
ICAgICByZXR1cm4gY29tcGFyZUpTUmVzdWx0KHNjcmlwdCwgYnVmZmVyLmdldCgpLCBleHBlY3Rl
ZFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0
aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCmluZGV4
IDhmOGQ3NjhhNTNjMjc1MWEyNDNlMDU5NWUyYzBjMGY0NDVkZDk2YzguLmJiYmZmNzA5ZTY3ZDM1
OWI0ZTQ4MTcxZWQ3YzRjMjQwMDhhNTY3ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1VdGlsaXRpZXMuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFdLQ29udGV4dFJlZiBjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0TmFtZSwgV0tU
CiBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90IGJ1
ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4o
YnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENT
dHJpbmcoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBzdGQ6
OnN0cmluZyhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggYWQyYTczMmQ1MTk0N2JiYzdhZmM2NGUyN2Q0MjE1
Y2UzMjg3ZGRlZS4uMGMyN2E0NjE2NDVmYmExMmE1YzY5NWQ5MzI2NDMwNTI2YzRlZjEyOSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZu
ZGVmIFBsYXRmb3JtV2ViVmlld19oCiAjZGVmaW5lIFBsYXRmb3JtV2ViVmlld19oCiAKKyNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0dlb21ldHJ5Lmg+CiAjZW5kaWYKQEAgLTYzLDYgKzY1LDcgQEAgdHlwZWRlZiB1aW50
MzJfdCBXS0V2ZW50TW9kaWZpZXJzOwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFz
cyBQbGF0Zm9ybVdlYlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFBsYXRmb3JtV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmKTsK
ICAgICBleHBsaWNpdCBQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJl
ZiA9IDApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0
ZWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4
IDRiMTBjODZhMmFiNzMyZTFlYTYyNzQ4NGNjNzg5NDBmYjZjZDZlOTYuLjJhMDZmOGJhNWNhOWZl
YjQ5MmEzNTIyYzVjNjU1MDEzOGQyMjM3ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9FeHBlY3RlZC5jcHAKQEAgLTQwNyw2ICs0MDcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwg
ZGVzdHJ1Y3RvcnMpCiBzdGF0aWMgaW50IHNub3dmbGFrZXMgPSAwOwogc3RhdGljIGludCBtZWx0
ZWQgPSAwOwogc3RydWN0IHNub3dmbGFrZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0KCkgeyBzbm93Zmxha2VzID0gbWVsdGVkID0g
MDsgfQogICAgIHNub3dmbGFrZSgpIHsgKytzbm93Zmxha2VzOyB9CiAgICAgfnNub3dmbGFrZSgp
IHsgKyttZWx0ZWQ7IH0KQEAgLTQxNiw3ICs0MTcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5p
cXVlX3B0cikKIHsKICAgICAvLyBVbmlxdWUgc25vd2ZsYWtlcyBjYW5ub3QgYmUgY29waWVkLgog
ICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxz
bm93Zmxha2U+KCkpOworICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVl
PHNub3dmbGFrZT4oKSk7CiAgICAgICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAg
ICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7CiAgICAgfQpAQCAtNDI1LDcgKzQyNiw3IEBAIFRFU1Qo
V1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAg
IHsKLSAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93
Zmxha2U+KCkpOworICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNu
b3dmbGFrZT4oKSk7CiAgICAgICAgIFVuZXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFr
ZT4+IGMoV1RGTW92ZShzKSk7CiAgICAgICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAg
ICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7CkBAIC00NDYsNyArNDQ3LDcgQEAgVEVTVChXVEZf
RXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgfTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8
c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4sIGludD4gcyhzdGQ6Om1ha2VfdW5pcXVlPHNub3dm
bGFrZT4oKSk7CisgICAgICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBp
bnQ+IHMobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBwbG93KFdURk1vdmUocyku
dmFsdWUoKSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ1NCw3
ICs0NTUsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6
OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRy
PHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+
KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4g
cyhtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93
KFdURk1vdmUocykuZXJyb3IoKSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAx
KTsKQEAgLTQ2Miw3ICs0NjMsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAg
ICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0
ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlx
dWU8c25vd2ZsYWtlPigpKSk7CisgICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0
cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7
CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS5lcnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VR
KHNub3dmbGFrZXMsIDEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvSGFzaENvdW50ZWRTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aENvdW50ZWRTZXQuY3BwCmluZGV4IDg0ZGE1ZWMzZmZjMjQ4YWNkZDllMzYzMzAzOGM2OWRhZTg5
MTIwOTkuLjdiOGZhZjI4OGFiYzA3Y2ZhZjhiNTI3MTIzOGY3NmQwMTMwMTJlZTYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKQEAgLTI0
MSw3ICsyNDEsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5KQogCiAg
ICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVl
UHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGhh
c2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1
LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0y
NTksNyArMjU5LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleUluaXRp
YWxDb3VudCkKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4oKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAxMik7CiAK
ICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVj
dGlvbkNvdW50KTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwg
VW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8
c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5p
cXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikp
OwogCkBAIC0zMTIsNyArMzEyLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0
cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6
OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQ
dHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAK
QEAgLTMyMyw3ICszMjMsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5
X0dldFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9w
dHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7
CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMzNyw3
ICszMzcsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVz
aW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlx
dWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggMWUxNjNk
Mzg5OThlNmJhYmZmZjUzODQxM2NjYTI4YWE2ZDI5ODk4Mi4uYTgwY2E3NDk0YThmOWE3OTY3ZTFl
NDk0NmZlOGNjYTYzOWNiYjU4YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aE1hcC5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJL
ZXkpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9
IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBtYXAuYWRk
KFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTIzMCw3ICsyMzAsNyBA
QCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsK
ICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0
ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7
CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfQ29u
dGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50
PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50
Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yNTUsNyArMjU1LDcgQEAgVEVTVChXVEZf
SGFzaE1hcCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFw
PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0
ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI2OSw3
ICsyNjksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQ
b2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1h
cC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1Qo
V1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFz
aE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4g
bWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpLCAyKTsKIApAQCAtNTYzLDEyICs1NjMsMTIgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5z
dXJlX1VuaXF1ZVBvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVf
cHRyPHVuc2lnbmVkPj4gbWFwOwogICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAu
ZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDEpOyB9KTsK
KyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkPigxKTsgfSk7CiAgICAgICAgIEVY
UEVDVF9FUSgxdSwgKm1hcC5nZXQoMSkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1
bHQuaXRlcmF0b3ItPmtleSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQyID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkPigyKTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0MiA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8dW5zaWduZWQ+KDIpOyB9KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdl
dCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKmFkZFJlc3VsdDIuaXRlcmF0b3ItPnZhbHVl
LmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1bHQyLml0ZXJhdG9yLT5rZXkp
OwpAQCAtNTkwLDYgKzU5MCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9SZWZQdHIpCiB9
CiAKIGNsYXNzIE9iamVjdFdpdGhSZWZMb2dnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIE9iamVjdFdpdGhSZWZMb2dnZXIoUmVmPFJlZkxvZ2dlcj4mJiBs
b2dnZXIpCiAgICAgICAgIDogbV9sb2dnZXIoV1RGTW92ZShsb2dnZXIpKQpAQCAtNjA0LDcgKzYw
NSw3IEBAIHZvaWQgdGVzdE1vdmluZ1VzaW5nRW5zdXJlKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2Vy
KQogewogICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVm
TG9nZ2VyPj4gbWFwOwogICAgIAotICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7Cisg
ICAgbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9n
Z2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9KTsKIH0KIAogdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQo
UmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCkBAIC02MTIsNyArNjEzLDcgQEAgdm9pZCB0ZXN0TW92
aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgSGFzaE1hcDx1bnNpZ25l
ZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFdpdGhSZWZMb2dnZXI+PiBtYXA7CiAKICAgICBhdXRv
JiBzbG90ID0gbWFwLmFkZCgxLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgc2xvdCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsK
KyAgICBzbG90ID0gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dl
cikpOwogfQogCiBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfTGFtYmRhc0NhcHR1cmluZ0J5UmVm
ZXJlbmNlKQpAQCAtNjgzLDYgKzY4NCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFZhbHVlSXNEZXN0
cnVjdGVkT25SZW1vdmUpCiBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVE
ZXJlZikKIHsKICAgICBzdHJ1Y3QgRGVyZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAg
ICAgICAgewogICAgICAgICAgICAgKytjb3VudDsKQEAgLTY5Nyw3ICs2OTksNyBAQCBURVNUKFdU
Rl9IYXNoTWFwLCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVy
ZWZPYnNlcnZlciogb2JzZXJ2ZWRCdWNrZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1
dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0
byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hNYXA8
UmVmUHRyPERlcmVmT2JzZXJ2ZXI+LCBpbnQ+IG1hcDsKICAgICBtYXAuYWRkKGFkb3B0UmVmKG9i
c2VydmVyLmdldCgpKSwgNSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQu
Y3BwCmluZGV4IDcxZWNmZGRiODQyYjZiZDUxNjQxY2EwNWI2MTA4YWQ0OGY2MmJiN2QuLjg3MjY4
Yzc0ZjBjYjhmYzE0OWViZjYwYzg1ODhmY2VkMzU4MWEyMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgVEVTVChXVEZfSGFz
aFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8g
dW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwog
ICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMTQ0LDcg
KzE0NCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2lu
dGVyKQogewogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IHNldDsKIAotICAgIGF1
dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVl
UHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQq
IHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7
CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfQ29u
dGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50
Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxp
bnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RG
TW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTcxLDcgKzE3MSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQs
IFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6
dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0
byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0g
dW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAt
MTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9UYWtlVXNpbmdS
YXdQb2ludGVyKQogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRy
ID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTI4Myw2ICsyODMsNyBAQCBURVNUKFdURl9I
YXNoU2V0LCBDb3B5Q2FwYWNpdHlJc05vdE9uQm91bmRhcnkpCiBURVNUKFdURl9IYXNoU2V0LCBS
ZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKIHsKICAgICBzdHJ1Y3QgRGVyZWZPYnNlcnZlciB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTkVWRVJf
SU5MSU5FIHZvaWQgcmVmKCkKICAgICAgICAgewogICAgICAgICAgICAgKytjb3VudDsKQEAgLTI5
Nyw3ICsyOTgsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJl
ZikKICAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2ZWRCdWNrZXQgeyBudWxscHRy
IH07CiAgICAgfTsKIAotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVm
T2JzZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8RGVyZWZPYnNlcnZl
cj4oKTsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPERlcmVmT2JzZXJ2ZXI+PiBzZXQ7CiAgICAgc2V0
LmFkZChhZG9wdFJlZihvYnNlcnZlci5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCmluZGV4IDY1N2JlNDFkNjIwNzI0NDY3YTU1NDllMmFi
NWExOTQxYzRlMzczYzEuLmI3NzBhNWIyN2MxZDJiMDk1YTViYjU5ZDY1YWMzZjRkYzRlNGU2OGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAKQEAg
LTM4MCw3ICszODAsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAg
ICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5p
cXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92
ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIFRFU1QoV1RG
X0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBM
aXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVl
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVu
aXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00
MTAsNyArNDEwLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWlu
c1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50
Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUp
OworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChX
VEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00MjEsOSArNDIxLDkgQEAgVEVTVChXVEZfTGlzdEhh
c2hTZXQsIFVuaXF1ZVB0cktleV9JbnNlcnRCZWZvcmVVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAg
TGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1
ZVB0cldpdGgyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDIpOworICAgIGF1dG8gdW5pcXVlUHRy
V2l0aDIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDIpOwogICAgIGF1
dG8gcHRyV2l0aDIgPSB1bmlxdWVQdHJXaXRoMi5nZXQoKTsKLSAgICBhdXRvIHVuaXF1ZVB0cldp
dGg0ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDQpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDQpOwogICAgIGF1dG8gcHRy
V2l0aDQgPSB1bmlxdWVQdHJXaXRoNC5nZXQoKTsKIAogICAgIGxpc3QuYWRkKFdURk1vdmUodW5p
cXVlUHRyV2l0aDIpKTsKQEAgLTQzNSw3ICs0MzUsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwg
VW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRlcikKICAgICBBU1NFUlRfRVEo
cHRyV2l0aDQsIGxpc3QubGFzdCgpLmdldCgpKTsKICAgICBBU1NFUlRfRVEoNCwgKmxpc3QubGFz
dCgpLmdldCgpKTsKIAotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDMgPSBzdGQ6Om1ha2VfdW5pcXVl
PGludD4oMyk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPGludD4oMyk7CiAgICAgYXV0byBwdHJXaXRoMyA9IHVuaXF1ZVB0cldpdGgz
LmdldCgpOwogCiAgICAgbGlzdC5pbnNlcnRCZWZvcmUocHRyV2l0aDQsIFdURk1vdmUodW5pcXVl
UHRyV2l0aDMpKTsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5p
cXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIExpc3RIYXNoU2V0PHN0ZDo6
dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gbGlzdDsKIAotICAgIGF1
dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOwogICAgIGF1dG8qIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBs
aXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0xvY2suY3BwCmluZGV4IDJkY2NlZGNhZGNjNmMyMjI3M2RlYmMyMGYzZmY2NzdjODczMjkwMjcu
LjVmZDMxYmYxYzlhYmVjZmI4YWJlNzM1NjA4YTQ3YzU2MDQzMDQ3NzIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCkBAIC00Miw5ICs0Miw5IEBAIHN0cnVjdCBMb2NrSW5z
cGVjdG9yIHsKIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPgogdm9pZCBydW5Mb2NrVGVzdCh1
bnNpZ25lZCBudW1UaHJlYWRHcm91cHMsIHVuc2lnbmVkIG51bVRocmVhZHNQZXJHcm91cCwgdW5z
aWduZWQgd29ya1BlckNyaXRpY2FsU2VjdGlvbiwgdW5zaWduZWQgbnVtSXRlcmF0aW9ucykKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVl
PExvY2tUeXBlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJs
ZVtdPiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8ZG91YmxlW10+KG51bVRocmVhZEdyb3Vwcyk7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQ
ZXJHcm91cCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPExvY2tUeXBlW10+IGxvY2tzID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8TG9ja1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8ZG91YmxlW10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8ZG91YmxlW10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRz
UGVyR3JvdXApOwogCiAgICAgZm9yICh1bnNpZ25lZCB0aHJlYWRHcm91cEluZGV4ID0gbnVtVGhy
ZWFkR3JvdXBzOyB0aHJlYWRHcm91cEluZGV4LS07KSB7CiAgICAgICAgIHdvcmRzW3RocmVhZEdy
b3VwSW5kZXhdID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BhcmtpbmdMb3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xv
dC5jcHAKaW5kZXggNDUyZTIyNzcxZGMwNjRhZGFhZmU2MjBlYjMzZTgwMTMwZjc5ZjE5Ny4uZTAw
YTA5YjJhMTdhYTczNDg1NmU0MmMxMTQ1Y2JlNjA4NjNmMGEwNSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1
Y3QgU2luZ2xlTGF0Y2hUZXN0IHsKIAogdm9pZCBydW5QYXJraW5nVGVzdCh1bnNpZ25lZCBudW1M
YXRjaGVzLCB1bnNpZ25lZCBkZWxheSwgdW5zaWduZWQgbnVtVGhyZWFkcywgdW5zaWduZWQgbnVt
U2luZ2xlVW5wYXJrcykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+
IHRlc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxTaW5nbGVMYXRjaFRlc3RbXT4obnVtTGF0Y2hlcyk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNpbmdsZUxhdGNoVGVzdFtdPiB0ZXN0cyA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsK
IAogICAgIGZvciAodW5zaWduZWQgbGF0Y2hJbmRleCA9IG51bUxhdGNoZXM7IGxhdGNoSW5kZXgt
LTspCiAgICAgICAgIHRlc3RzW2xhdGNoSW5kZXhdLmluaXRpYWxpemUobnVtVGhyZWFkcyk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCmluZGV4IDA4MWRm
OWU0ZmMxZDI1MWQ4MTRiMjI2NGJkMmQwZTA1MmMwYmQ0MWYuLmY0ZWY5ODNiMWE5ZmJlODk4MDdj
NzVhYzI4ZmRiNjI2ZDlhOTZhMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1JlZkNvdW50ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1JlZkNvdW50ZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgVEVTVChXVEYsIFJlZkNvdW50ZXIp
CiBURVNUKFdURiwgUmVmQ291bnRlckRlbGV0ZUNvdW50ZXJXaXRoT3V0c3RhbmRpbmdUb2tlbnMp
CiB7CiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdENvdW50ZXI+IGNvdW50ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RDb3VudGVyPihbJl0oUmVmQ291bnRlckV2ZW50IGV2ZW50
KSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IG1ha2VV
bmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsKICAgICAgICAg
ICAgIGlmICghY291bnRlci0+dmFsdWUoKSkKICAgICAgICAgICAgICAgICBjb3VudGVyID0gbnVs
bHB0cjsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9VbmlxdWVSZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVl
UmVmLmNwcAppbmRleCA0ZDJiMjJhYTU0ZjhiMDI1NDgwZjU5ZTU2MWEzY2NlNzE1NTAyMzEyLi4x
YWZlM2U5Nzc5YmI4NDg4N2U5NDMwZGU0MTcyNmM3NDM4NTMyZmRjIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKQEAgLTMwLDggKzMwLDExIEBACiAKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKICAgICAKLWNsYXNzIEEgeyB9OworY2xhc3MgQSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cit9OwogY2xhc3MgQiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQihpbnQgYSwgaW50IGIsIGludCBjKQogICAg
ICAgICA6IGEoYSkKQEAgLTQzLDYgKzQ2LDcgQEAgY2xhc3MgQiB7CiAgICAgaW50IGM7CiB9Owog
Y2xhc3MgQyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQyhV
bmlxdWVSZWY8QT4mJiBhKQogICAgICAgICA6IGEoV1RGTW92ZShhKSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKaW5kZXggMGVmMWYxZGE0NGJhYzUxNTRmZmZkMzMy
MTM5NWU5ZjFlMmQyYTdjMi4uNTFlY2EwNzY4ZDJjY2UxYzlhMzI5NTU1MmQzNTAwOWZmNGZkNTZi
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKQEAgLTIxMiw3
ICsyMTIsNyBAQCBURVNUKFdURl9WYXJpYW50LCBDb25zdHJ1Y3RvckRlc3RydWN0b3IpCiAgICAg
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6VGVzdGluZ1Njb3BlIHNjb3BlOwogCiAgICAg
ewotICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICAgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVl
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgICAgIFZhcmlhbnQ8c3RkOjp1
bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IHYgPSBXVEZNb3Zl
KHVuaXF1ZVB0cik7CiAKICAgICAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1dlYWtQdHIuY3BwCmluZGV4IDE1MGI5Yjc2YzhhNTY1ZTM2NTU0ODM2ZTBiYmVjMDUwNWM3
ODQ4ZjIuLjdlNjMwNjkzZWVjNjA0MWEzNzUwNDRhZjk0OWQ4NzQ2YjY5NWNhNmIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCkBAIC01MCw2ICs1MCw3IEBAIHN0
cnVjdCBJbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW50PiB7CiB9OwogCiBjbGFzcyBCYXNl
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPEJhc2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBCYXNlKCkgeyB9CiAKQEAgLTU3OCwxMCArNTc5LDEwIEBAIFRF
U1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEo
d2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICBFWFBFQ1RfVFJVRShpbml0aWFs
Q2FwYWNpdHkgLyBtYXhMb2FkQ2FwKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXA7ICsraSkgewotICAgICAgICAgICAgYXV0byBv
YmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVj
dCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2Jq
ZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAg
ICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKSk7Cisg
ICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKG1ha2VVbmlxdWU8QmFzZT4oKSk7CiAgICAg
ICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIH0KICAgICAg
ICAgRVhQRUNUX0VRKHNfYmFzZVdlYWtSZWZlcmVuY2VzLCBvdGhlck9iamVjdHMuc2l6ZSgpKTsK
QEAgLTYxNSw3ICs2MTYsNyBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldEV4cGFuc2lv
bikKICAgICAgICAgRVhQRUNUX0VRKHdlYWtIYXNoU2V0LmNhcGFjaXR5KCksIDB1KTsKICAgICAg
ICAgdW5zaWduZWQgb2JqZWN0Q291bnQgPSBpbml0aWFsQ2FwYWNpdHkgKiAyOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7ICsraSkgewotICAgICAgICAgICAg
YXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRv
IG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFk
ZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7
CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7CkBAIC02NjcsMTAg
KzY2OCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVzRW1wdHkpCiAg
ICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBmaXJzdE9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVj
dCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpmaXJzdE9i
amVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJh
c2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAg
ICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFr
SGFzaFNldC5iZWdpbigpLmdldCgpID09IGZpcnN0T2JqZWN0LmdldCgpKTsKQEAgLTczNCw4ICs3
MzUsOCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogCiAgICAg
d2hpbGUgKDEpIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7Ci0gICAg
ICAgIGF1dG8gZmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7Ci0gICAgICAg
IGF1dG8gbGFzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0
byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBsYXN0T2Jq
ZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0
T2JqZWN0KTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpsYXN0T2JqZWN0KTsKICAgICAgICAg
aWYgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgIT0gZmlyc3RPYmplY3QuZ2V0KCkpCkBAIC03
NTksMTAgKzc2MCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXpl
KQogICAgIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7CiAgICAgICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzZT4+IG9iamVjdHM7Ci0gICAgICAgIGF1dG8gbm9u
Rmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgIGF1dG8gbm9u
Rmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFk
ZCgqbm9uRmlyc3RPYmplY3QpOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhdXRvIG9iamVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0g
bWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3Qp
OwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAg
fSB3aGlsZSAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSA9PSBub25GaXJzdE9iamVjdC5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5n
QnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZm
ZXIuY3BwCmluZGV4IDJhYWI2NWRkOGZkN2VmMDcwNTFmYjZmNzU2NzU4Y2RlNzAyZTA3YTEuLjgx
ZDdiYTI5MWFlOWY0YWI3Y2YyZTVmOWFhZDYyYzk0MjQzNTM2NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAg
ICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJp
bmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPENBUmluZ0J1ZmZlcj4oKTsKICAgICB9CiAKICAgICAvLyBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24oZG91YmxlIHNhbXBsZVJhdGUsIFVJbnQzMiBudW1DaGFubmVscywgUENN
Rm9ybWF0IGZvcm1hdCwgYm9vbCBpc0ludGVybGVhdmVkLCBzaXplX3QgY2FwYWNpdHkpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1
ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1
ZS5jcHAKaW5kZXggNzc4ZTYxNTVmMDZjYzEyODM5Nzk3NWYwNDU4NzEyYTJjNzEwNDBmYS4uZGNh
NDYzNjAyZTk2ZDYwYTA0NTEzODEyMWNiYmRjZWZiZWU5ZTVjMiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcApAQCAt
MzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBzdGF0aWMgdW5zaWduZWQg
ZGVsZXRpb25Db3VudDsKIAogY2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlIDogcHVi
bGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2Rl
KCkKICAgICB7CkBAIC01Miw3ICs1Myw3IEBAIGNsYXNzIENhbGN1bGF0aW9uRGVsZXRpb25UZXN0
Tm9kZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbk5vZGUgewogCiBzdGF0aWMgUmVm
PFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZVRlc3RWYWx1ZSgpCiB7Ci0gICAgYXV0
byBub2RlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGU+KCk7
CisgICAgYXV0byBub2RlID0gbWFrZVVuaXF1ZTxDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGU+
KCk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3Zl
KG5vZGUpLCBXZWJDb3JlOjpWYWx1ZVJhbmdlQWxsKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcAppbmRl
eCBmNThkYThhNDIwNzNlYzk5YmJlZTM0YTg1YmVjMzRjMDg1YzUyYTY0Li4wYzFhMDY5ZjEzYzM5
YzQwOWU1ZDVlMWIwM2E3ZTkyYmY5YjM2NmMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcApAQCAtNDgsMTAg
KzQ4LDEwIEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0U2l6ZSkKICAgICB1
aW50MzJfdCBjaGFubmVsSWQgPSAweDA1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
OwogCi0gICAgYXV0byBpbml0UGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBh
Y2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50
OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5pdFBhY2tldCA9IG1ha2VVbmlx
dWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJ
bml0LCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEo
NjR1LCBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpLnNpemUoKSk7CiAKLSAgICBhdXRv
IGNvbnRpbnVhdGlvblBhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlv
blBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRpbnVh
dGlvblBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5l
bElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsKICAgICBFWFBFQ1RfRVEoNjR1LCBjb250aW51YXRpb25Q
YWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKIH0KIApAQCAtNzAsNyArNzAsNyBA
QCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldERhdGEpCiAgICAgdWludDMyX3Qg
Y2hhbm5lbElkID0gMHhGNTA2MDcwODsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDEx
fTsKICAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6
a1dpbms7Ci0gICAgYXV0byBpbml0UGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5p
dFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXpl
KCkpOworICAgIGF1dG8gaW5pdFBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+
KGNoYW5uZWxJZCwgY21kLCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKICAg
ICBzaXplX3QgaW5kZXggPSAwOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZWQgPSBp
bml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpAQCAtOTQsNyArOTQsNyBAQCBURVNUKEZp
ZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldENvbnN0cnVjdG9ycykKICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBjbWQgPSBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7CiAgICAgc2l6ZV90IGxlbmd0aCA9IGRhdGEuc2l6ZSgp
OwotICAgIGF1dG8gb3JpZ1BhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNr
ZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5ndGgpOworICAgIGF1dG8gb3Jp
Z1BhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBX
VEZNb3ZlKGRhdGEpLCBsZW5ndGgpOwogCiAgICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KG9yaWdQYWNrZXQtPnBheWxvYWRMZW5ndGgoKSk7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IG9yaWdEYXRhID0gb3JpZ1BhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmlu
ZGV4IDFlZDEzMjhmODEzMDllMTJlMTM3MWNiM2FkZmU2YjBhOTc4M2VlYjYuLjIyODM4M2EwZjMw
YTliMTM5ZjZhYWY0M2Y5NWNlZGQ4MDkxNjZlNmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFRF
U1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVl
ID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25p
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RR
dWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewor
ICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgp
LCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5
cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRj
aCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9k
aWZpY2F0aW9uOgpAQCAtMTkwLDcgKzE5MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERl
dGVjdE11bHRpcGxlQ2hhbmdlcykKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpj
cmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCks
IFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRv
ciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29w
eVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAg
ICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAt
MjUwLDcgKzI1MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQog
CiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVl
Iik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0
ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxl
Q2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9u
aXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6
OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yODksNyArMjg5LDcgQEAgVEVTVF9G
KEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlQW5kVGhlbkRlbGV0ZSkKIAogICAgIGF1dG8g
dGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAg
YXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRo
KCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUg
dHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBG
aWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTM0Niw3ICszNDYsNyBAQCBURVNUX0YoRmlsZU1v
bml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQogCiAgICAgYXV0
byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAg
ICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBh
dGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlw
ZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVt
cEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxl
Q2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRleCA5MmQ4YTE5MmNhN2IyYTEwODE1NjU5
OTdiMGVhNWIxZjlhZWE4ZjY1Li4yMTllOTY2ZGJlYmFhODRkMzYwMjcyMmU5NTllMzJmNjRmYjRk
YjJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9D
b29raWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9D
b29raWVzLmNwcApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBDdXJsQ29va2llczogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogICAgIHsKICAgICAgICAgbV9jb29raWVEaXJlY3RvcnkgPSBGaWxlU3lz
dGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKIAotICAgICAgICBtX2Nvb2tpZUphciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsK
KyAgICAgICAgbV9jb29raWVKYXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvb2tpZUphckRCPihG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jb29raWVEaXJlY3RvcnksICJj
b29raWVkYi5zcWwiKSk7CiAgICAgICAgIG1fY29va2llSmFyLT5vcGVuKCk7CiAgICAgICAgIG1f
Y29va2llSmFyLT5zZXRBY2NlcHRQb2xpY3koQ29va2llQWNjZXB0UG9saWN5OjpBbHdheXMpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3Nl
RnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKaW5kZXggNWMwYWUzMzEzMjhiMzZiMGJh
NzBhMThkOTkzNjY5NDEyYWNhMjlhOS4uYjNiM2JjM2NmNDlkNzg1NDMwNTg0OWRkYTEyMTJmMTkz
MmEwZDIwZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xv
c2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
c3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVl
c3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsKICAgICBFWFBFQ1RfVFJVRShvcGVuZWRXZWJWaWV3
ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVkV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBvcGVuZWRXZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKICAg
ICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcAppbmRleCBhNGZi
YTEyN2M2ZTRkMDNlNjNkOWE4MTcyYTM5YjNjYjhiMTQ3MmM3Li43YmMzNTI0ZjJiZGI5ZGJkN2E0
MzVhM2NjNmFkMzgzMmU5NDRlZGQ1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGlj
IFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYg
dXJsUmVxdWVzdCwgV0tEaWMKIHsKICAgICBFWFBFQ1RfVFJVRShvcGVuZWRXZWJWaWV3ID09IG51
bGxwdHIpOwogCi0gICAgb3BlbmVkV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1X
ZWJWaWV3PihwYWdlKTsKKyAgICBvcGVuZWRXZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsKICAgICBtZW1z
ZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFu
ZEVuZEVkaXRpbmcuY3BwCmluZGV4IDBmN2ZkNDBhNjNlNWVjZjc4Yzk2OGRmODAzOGQxOTIyMWVk
YmY3ZDUuLmNkMTlkN2NkZTU4ODk2MjVmMTIyMTJmYzc1M2NmZDU1ZTI3OGQ5MjMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5k
RW5kRWRpdGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4
dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcApAQCAtOTcsNyArOTcsNyBAQCBzdHJ1Y3Qg
V2ViS2l0MlRleHRGaWVsZEJlZ2luQW5kRWRpdEVkaXRpbmdUZXN0IDogcHVibGljIDo6dGVzdGlu
Zzo6VGVzdCB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFk
b3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiVGV4dEZpZWxk
RGlkQmVnaW5BbmRFbmRFZGl0aW5nRXZlbnRzVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAg
d2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKICAg
ICAgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LT5wYWdlKCksIHRoaXMpOwogCiAgICAg
ICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcAppbmRleCBjN2IwMjUxYmZjZjIxYWE0YWJkMTE0Yzg1
NTA3OTI0MWQ2NjE3NGU5Li45ZGMzYTZkYTk5NTA5YzI3MTEyMWQ0YzNhNDUzMDg0ZmVlOTg5YmQ3
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2Fn
ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2Uu
Y3BwCkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFdlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRl
c3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgY29udGV4dCA9IGFkb3B0V0so
VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiVXNlck1lc3NhZ2VUZXN0
IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlz
KTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+
KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZp
ZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCmluZGV4IGVkOWYw
ZmZjNzAyNWFiMTJjYjUzOTY3ZjcyMDVmZjk2Yzg5YmU2OTkuLjUyZjE4ZGNlYjQyZDUxYWMwODM5
NWI2MjAwMWQ0YTk1NDBmNzQ1MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L1dpbGxMb2FkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9XaWxsTG9hZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgV2ViS2l0MldpbGxMb2Fk
VGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRX
SyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJXaWxsTG9hZFRlc3Qi
KSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMp
OwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4o
Y29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2Vi
Vmlldz4oY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UgPSBmYWxz
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9t
YWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5k
bGUubW0KaW5kZXggYWViYTFjMzQ4ZmJjNjZhMTcwZTUzOWUwYTcyODZhZWU5MTUzZTYwNC4uMjkx
YTQ3OGEyNzg0MjQyZGFkNDVhM2E4ZjE3MzkwNWQ3ZDNiMmYyMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5k
bGVfQnVuZGxlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9G
b3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQpAQCAtNzAsNyArNzAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5n
Q29weShzY3JpcHRDb250ZXh0LCByZXN1bHQsIG51bGxwdHIpKTsKIAogICAgICAgICBhdXRvIGJ1
ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUocmVzdWx0U3RyaW5n
LmdldCgpKTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
YnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4
Q1N0cmluZyhyZXN1bHRTdHJpbmcuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAK
ICAgICAgICAgV0tCdW5kbGVQYWdlU2V0VXNlRGFya0FwcGVhcmFuY2UobV9wYWdlLCB0cnVlKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0
aGVudGljYXRpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RBdXRoZW50aWNhdGlvbi5jcHAKaW5kZXggZDZjYzJmYjI0N2U1NjIwNjY5Nzc2MTBiMjU2Nzli
N2VkMWRjYzhiYS4uN2M4YzhiNTIxNTRhYzRlYjA5OGU2OTUxNzkwNjlhMDVlYmRjNjZhYyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50
aWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RBdXRoZW50aWNhdGlvbi5jcHAKQEAgLTI1Niw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0F1dGhlbnRpY2F0aW9uRW1wdHlSZWFsbShBdXRoZW50aWNhdGlvblRlc3QqIHRlc3Qs
IGdjb25zdAogfQogCiBjbGFzcyBUdW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFR1bm5lbChTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBt
ZXNzYWdlKQogICAgICAgICA6IG1fc2VydmVyKHNlcnZlcikKQEAgLTI5OSw3ICszMDAsNyBAQCBz
dGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdl
KiBtZXNzYWdlLCBjb25zdCBjaGFyKgogewogICAgIGlmIChtZXNzYWdlLT5tZXRob2QgPT0gU09V
UF9NRVRIT0RfQ09OTkVDVCkgewogICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHNvdXBfc2VydmVy
X2dldF9wb3J0KHNlcnZlciksID09LCBnUHJveHlTZXJ2ZXJQb3J0KTsKLSAgICAgICAgYXV0byB0
dW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFR1bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKKyAgICAg
ICAgYXV0byB0dW5uZWwgPSBtYWtlVW5pcXVlPFR1bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKICAg
ICAgICAgYXV0byogdHVubmVsUHRyID0gdHVubmVsLmdldCgpOwogICAgICAgICB0dW5uZWxQdHIt
PmNvbm5lY3QoW3R1bm5lbCA9IFdURk1vdmUodHVubmVsKV0oY29uc3QgY2hhciogZXJyb3JNZXNz
YWdlKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CkBAIC0zOTQsNyArMzk1LDcg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5KFByb3h5QXV0aGVu
dGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3QKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRo
ZW50aWNhdGlvblByb3h5SFRUUFMoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB7Ci0gICAgYXV0byBodHRwc1NlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOworICAgIGF1dG8g
aHR0cHNTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdFRlc3RTZXJ2ZXI+KFdlYktpdFRlc3RTZXJ2
ZXI6OlNlcnZlckhUVFBTKTsKICAgICBodHRwc1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsK
IAogICAgIHRlc3QtPmxvYWRVUkkoaHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9wcm94eS9h
dXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCmluZGV4IDdhNDRjYjA1Y2Q0YmMwMjdl
MTJkMTEwM2ZhZjZhMDA3YWM2ZjQwZjMuLmI2YjcyOGU0NWUwOWM1MWE2ZDZiYTk5YmY3MTdlMTk1
ZTlhMGUwYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9XZWJQcm9jZXNzVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9XZWJQcm9jZXNzVGVzdC5oCkBAIC0zMCw2ICszMCw3IEBACiAjZW5kaWYKIAogY2xhc3Mg
V2ViUHJvY2Vzc1Rlc3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHZpcnR1YWwgfldlYlByb2Nlc3NUZXN0KCkgeyB9CiAgICAgdmlydHVhbCBib29sIHJ1blRl
c3QoY29uc3QgY2hhciogdGVzdE5hbWUsIFdlYktpdFdlYlBhZ2UqKSA9IDA7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3Qu
Y3BwCmluZGV4IDEyNTYyNDE5NmE3MWM2ZDNhZDViY2RkMjlmMTQyYjg2YWJiOWZkMTEuLmU0MDAw
NzYzM2YyMzYyNDA1MjlkZjU0YWU4NjMyMDg3YmQzNjk1MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCkBA
IC0zMCw3ICszMCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBjbGlja2VkQ2FsbGJhY2soV2ViS2l0RE9N
RE9NV2luZG93KiwgV2ViS2l0RE9NRXZlbnQqLCBXZWJLaXRET01ECiAKIGNsYXNzIFdlYktpdERP
TURPTVdpbmRvd1Rlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQorICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmlx
dWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQogCiBwcml2YXRlOgogICAgIGd1aW50NjQg
d2ViUGFnZUZyb21BcmdzKEdWYXJpYW50KiBhcmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDhkMmVlOGFkMTZjYWQ2
Nzk1NjhlZDliNmQ3NWNlY2Q4MjE1MGZlZGIuLjM0OTBlZjFjZWI2ZjE3ODA1MDJmMGNkYzkxOWM5
NzFlMjkyYmU5MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZv
cm1VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRm
b3JtVXRpbGl0aWVzQ29jb2EubW0KQEAgLTM4LDcgKzM4LDcgQEAgc3RkOjpzdHJpbmcgdG9TVEQo
TlNTdHJpbmcgKnN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CiAKICAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IFtzdHJpbmcgbGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxj
aGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBOU1VJbnRlZ2VyIHN0cmlu
Z0xlbmd0aDsKICAgICBbc3RyaW5nIGdldEJ5dGVzOmJ1ZmZlci5nZXQoKSBtYXhMZW5ndGg6YnVm
ZmVyU2l6ZSB1c2VkTGVuZ3RoOiZzdHJpbmdMZW5ndGggZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2Rpbmcgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgcmVt
YWluaW5nUmFuZ2U6MF07CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3Ry
aW5nTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpp
bmRleCA1NDZjYTZlMjIyZDlmZWE4MWNlN2JlNGUyYzJkMzk4NWM1YjQ0ZjBmLi4yNDc1NzI4OThi
NmE4NzljN2EzNmI0ZmM2NWI5MTUzMzA0NzBmZmQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yOTQsNyArMjk0LDcgQEAgc3RhdGljIHZvaWQgYXBw
bHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVy
cygpCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBzd2l6
emxlcjsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHN3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rv
cih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJs
aWNSVEZEKSk7CisgICAgICAgIHN3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6
bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVu
dGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5
cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CiAgICAgfSk7
CiB9CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZToo
Q0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3Vu
ZCBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIGZpeGVkLgotICAgIF9zaGFy
ZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenps
ZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOworICAgIF9zaGFyZWRD
YWxsb3V0QmFyU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNh
bGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOwogICAgIF9pbnB1dFNlc3Npb25DaGFu
Z2VDb3VudCA9IDA7CiAgICAgYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVk
U3RyaW5nc1RvSXRlbVByb3ZpZGVycygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKaW5kZXggNjkwZjBh
Nzc1NmNmZTNhZmIwN2Q5MGJlZWZmMDk1NzhiMmZjNTVkZS4uMjgxNDUyN2YxOWI5NTRmODJhZWI4
N2JjMGU0YzhkYzBiOWE3ZjViNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaApAQCAtMjUsNiArMjUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogY2xhc3MgV2ViS2l0VGVzdFNlcnZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKICAgICBlbnVtIFNlcnZlck9w
dGlvbnMgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRp
b25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCmluZGV4
IDg2MjYzNTQ0MzM1YTdmNWQ5NzFiNWRjMGQyNTllNTVkYzBkNzNjNjYuLjRiZGU2YzUxMDBkMmJk
NmZlNGJiOTBmYWNiZTI1ZDMzOWE1MDU0YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0Rm9udE9wdGlvbnMubW0KQEAgLTg0LDcgKzg0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRm9udE9wdGlvbnM6KE5TRm9udE9wdGlvbnMgKilmb250T3B0aW9ucwogCiAgICAgX3NoYWRv
d09mZnNldCA9IENHU2l6ZVplcm87CiAgICAgX3NoYWRvd0JsdXJSYWRpdXMgPSAwOwotICAgIF9y
ZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RT
d2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3Rvcihz
aGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9u
c0ZvclRlc3RpbmcpKTsKKyAgICBfcmVwbGFjZUZvbnRPcHRpb25zU3dpenpsZXIgPSBtYWtlVW5p
cXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0aW9u
cyIpLCBAc2VsZWN0b3Ioc2hhcmVkRm9udE9wdGlvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4o
c2hhcmVkRm9udE9wdGlvbnNGb3JUZXN0aW5nKSk7CiAgICAgX2hhc1BlbmRpbmdTaGFkb3dDaGFu
Z2VzID0gTk87CiAgICAgX2hhc011bHRpcGxlRm9udHMgPSBOTzsKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAppbmRleCAxNTMyMjE4MjY5OWUwZWEzMDc1NGEwMjI2
YzNhN2I2Mjk1OTc2ZDAwLi4xMTM5OWIzOTBmZTkxNzBmNmM1MjUyNzVhYzIzNDU4MmRhZjc1MGY4
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaApAQCAtNTQsNiAr
NTQsNyBAQCBzdHJ1Y3QgV1RSRXZlbnRRdWV1ZUl0ZW07CiAjZW5kaWYKIAogY2xhc3MgRXZlbnRT
ZW5kZXJQcm94eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgRXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciopOwogICAgIH5FdmVudFNl
bmRlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0
aW9uUHJvdmlkZXJNb2NrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJv
dmlkZXJNb2NrLmgKaW5kZXggN2Q5NDVkNjdlYzY3NTBiZTcwNjQzNWEyYTZiM2M3NGQxYWQxNzQz
Yy4uMWVkNGFkZjliMzkzOTNhMzMzYWEzMjUxMDk3YjllM2FhNDJjYzM2YiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaApAQCAtMjcsMTAg
KzI3LDEyIEBACiAjZGVmaW5lIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrX2gKIAogI2luY2x1ZGUg
PFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIG5h
bWVzcGFjZSBXVFIgewogCiBjbGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR2VvbG9jYXRpb25Qcm92aWRlck1v
Y2soV0tDb250ZXh0UmVmKTsKICAgICB+R2VvbG9jYXRpb25Qcm92aWRlck1vY2soKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCBlMTIwN2ZjZWZiZDY5NjI2ZDg4YWQ4ZjZjZWRi
MGI1MjZiYjJkZTUzLi4yMmFjOTQ3NzM5NWIxOWU4ZGZjOGRmMTc5NGFkNDJlZDhmNTc2ZDkwIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2lmIFVTRShBVEspCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDFmOWQzZWZjOTY0ZmIxMzc3YmM2NjNjMDE2MGMzNGE4
OGIyMzI4YTYuLmM5YTUyYzE1Zjc3MDgzMDY4M2M4ZWZmNjg5NDI5YmQwYmMxZjU2NDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcApAQCAtNjEyLDYgKzYxMiw3IEBAIHZvaWQgRXZl
bnRTZW5kaW5nQ29udHJvbGxlcjo6bW9uaXRvcldoZWVsRXZlbnRzKCkKIH0KIAogc3RydWN0IFNj
cm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICBKU0NvbnRleHRSZWYgbV9jb250ZXh0OwogICAgIEpTT2JqZWN0UmVmIG1f
ZnVuY3Rpb247CiAKQEAgLTY0Nyw3ICs2NDgsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xs
ZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbAog
ICAgIAogICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3Qp
OwogCi0gICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhPihjb250ZXh0LCBmdW5jdGlvbkNhbGxi
YWNrT2JqZWN0KTsKKyAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBtYWtl
VW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2Fs
bGJhY2tPYmplY3QpOwogICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0ciA9
IHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEucmVsZWFzZSgpOwogICAgIGJvb2wgY2FsbGJh
Y2tXaWxsQmVDYWxsZWQgPSBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBs
ZXRpb25DYWxsYmFjayhwYWdlLCBleGVjdXRlQ2FsbGJhY2ssIHNjcm9sbENvbXBsZXRpb25DYWxs
YmFja0RhdGFQdHIpOwogICAgIGlmICghY2FsbGJhY2tXaWxsQmVDYWxsZWQpIHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggNzExNmNjOTgxNTY2OWQ5NDk0ZGJmOGRlNDhiYWVlY2Q2Mzc0YzM3Ni4uODNi
MmIzMGIxMzMyZWM3N2JmZWZjYzI5ZmRkMWEyZTQ4M2NiNWYyMyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
QEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlcgogdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKIHsKICAgICBib29s
IGlzTWFpblBhZ2UgPSBtX3BhZ2VzLmlzRW1wdHkoKTsKLSAgICBtX3BhZ2VzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEluamVjdGVkQnVuZGxlUGFnZT4ocGFnZSkpOworICAgIG1fcGFnZXMuYXBw
ZW5kKG1ha2VVbmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7CiAKICAgICBzZXRVcElu
amVjdGVkQnVuZGxlQ2xpZW50cyhwYWdlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKaW5kZXggNTlk
M2UxYjBkMDJlMjJjNTJmYTc2NTQzMzI5YzIzZjZiNjJhMzg5YS4uYjMyM2MyNTA0NGY1NTAzNjA3
NmY0OGVkZGQ0N2JjZWFhM2UyMGYxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCkBAIC0zNCw2ICsz
NCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBh
Z2UoV0tCdW5kbGVQYWdlUmVmKTsKICAgICB+SW5qZWN0ZWRCdW5kbGVQYWdlKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApp
bmRleCAxODYwZjE2OWU1MmFjMTI1OTNmYWVlMGU0NmUyZDA1MDQ4ZGExNmJkLi43MjA2YjA4MjUw
NjVhMDA3MzA3M2NhOGI1MDhkM2I0ZmEyMjM0MzY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIzOTEsNyArMjM5
MSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMoSlNWYWx1ZVJlZiBmaWxl
c1ZhbHVlKQogCiAgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHko
Y29udGV4dCwgZmlsZVZhbHVlLCBudWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxlQnVmZmVy
U2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgpKSArIDE7
Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxl
QnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmlu
Z0dldFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCksIGZpbGVCdWZmZXJT
aXplKTsKIAogICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShmaWxlVVJMcy5nZXQoKSwgYWRvcHRX
SyhXS1VSTENyZWF0ZVdpdGhCYXNlVVJMKG1fdGVzdFVSTC5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQo
KSkpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAK
aW5kZXggMGU1YzA3Y2E3MjliNmRmY2IzOGM4MDQyNmQzOTI0NGUzMmMwMDE3Yy4uMThlNTdkMmZj
ZjYyOTc2N2E3MzI5NzliYzJlZGM1N2FjZjEwOWNlMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTczMCw3ICs3MzAsNyBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBjb252ZXJ0VG9KU09iamVjdEFycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbQogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEph
dmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CiAKICAgICBzaXplX3QgZWxlbWVudENvdW50ID0g
Y2hpbGRyZW4uc2l6ZSgpOwotICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOworICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEpTVmFsdWVSZWZbXT4oZWxlbWVudENv
dW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgaSsrKQogICAg
ICAgICB2YWx1ZUVsZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNoaWxkcmVuW2ld
LT53cmFwcGVyQ2xhc3MoKSwgY2hpbGRyZW5baV0uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCBmNzRjYzJkMzkzZDUzMDVmZDM2NjViYjBlMGEz
NTUxODQ0NzMxMDlmLi5jYTRmZGJkNzIyMTVhZjQ4YmRhOTY3ZDViY2FiNDgxNTZiYWRjYzcxIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKyNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFkZWZpbmVkKEJVSUxE
SU5HX0dUS19fKQogI2luY2x1ZGUgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KQEAgLTY0LDYgKzY1
LDcgQEAgdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIFBsYXRmb3JtSW1hZ2U7CiBuYW1lc3BhY2Ug
V1RSIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9ybVdlYlZpZXco
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiosIGNvbnN0IFRlc3RPcHRpb25zJik7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaAppbmRleCBkYWYxNGNhNzA1NDg2YmZjMjA2NDMx
MjNkZTUwOTFiNzllNWQwMTMxLi5iYmExN2MyZWZmYjA5NjY1ZWZjMjhlZWI2OWU3MjMyOWIxZDY5
Yjc0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKQEAgLTczLDcg
KzczLDcgQEAgaW5saW5lIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0b0pTKGNvbnN0IFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKFdL
U3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0
TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXpl
X3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5n
ZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwg
c3RyaW5nTGVuZ3RoIC0gMSk7CiB9CkBAIC04Niw3ICs4Niw3IEBAIGlubGluZSBzdGQ6OnN0cmlu
ZyB0b1NURChjb25zdCBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4mIHN0cmluZykKIGlubGluZSBX
VEY6OlN0cmluZyB0b1dURlN0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90
IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsK
LSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsK
KyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJb
XT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRG
OENTdHJpbmdOb25TdHJpY3Qoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAg
IHJldHVybiBXVEY6OlN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2soYnVmZmVyLmdl
dCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggOGU3MzNiZWVkODBkNGEwNWUzNWUzYzBlZjMxMmMzOWVmNGRkMzM1
My4uODgxYjMwOWE3MjVjY2E4MGZmMzgxODJmMGNhNzkzOWFmZGYyYTAwNCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10p
CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBhZ2VHcm91cElkZW50aWZpZXIgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJLaXRUZXN0UnVubmVyUGFnZUdy
b3VwIikpOwogICAgIG1fcGFnZUdyb3VwLmFkb3B0KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50
aWZpZXIocGFnZUdyb3VwSWRlbnRpZmllci5nZXQoKSkpOwogCi0gICAgbV9ldmVudFNlbmRlclBy
b3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2
ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogfQog
CiBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6
Z2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9uczo6Q29udGV4dE9w
dGlvbnMmIG9wdGlvbnMpIGNvbnN0CkBAIC01MjEsNyArNTIxLDcgQEAgV0tSZXRhaW5QdHI8V0tQ
YWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3Vy
YXRpb24oY28KICAgICAgICAgbV9jb250ZXh0ID0gcGxhdGZvcm1BZGp1c3RDb250ZXh0KGFkb3B0
V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oY29udGV4dENvbmZpZ3VyYXRpb24u
Z2V0KCkpKS5nZXQoKSwgY29udGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpOwogICAgICAgICBtX2Nv
bnRleHRPcHRpb25zID0gb3B0aW9ucy5jb250ZXh0T3B0aW9uczsKIAotICAgICAgICBtX2dlb2xv
Y2F0aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2Nr
PihtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBtYWtl
VW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAg
ICAgIGlmIChjb25zdCBjaGFyKiBkdW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRl
c3RpbmcoKSkgewogICAgICAgICAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6
ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKQEAgLTk1Miw3ICs5NTIsNyBAQCBib29sIFRl
c3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRp
b25zJiBvcHRpb25zLCBSZQogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhbHNv
IGVuc3VyZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHBhZ2Ugb3Blbi4KIAogICAgIC8vIFJlc2V0
IHRoZSBFdmVudFNlbmRlciBmb3IgZWFjaCB0ZXN0LgotICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9
IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CisgICAgbV9ldmVudFNl
bmRlclByb3h5ID0gbWFrZVVuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKIAogICAgIC8v
IEZJWE1FOiBJcyB0aGlzIG5lZWRlZD8gTm90aGluZyBpbiBUZXN0Q29udHJvbGxlciBjaGFuZ2Vz
IHByZWZlcmVuY2VzIGR1cmluZyB0ZXN0cywgYW5kIGlmIHRoZXJlIGlzCiAgICAgLy8gc29tZSBv
dGhlciBjb2RlIGRvaW5nIHRoaXMsIGl0IHNob3VsZCBwcm9iYWJseSBiZSByZXNwb25zaWJsZSBm
b3IgY2xlYW51cCB0b28uCkBAIC0xMjM1LDExICsxMjM1LDExIEBAIHN0YXRpYyBXS1VSTFJlZiBj
cmVhdGVUZXN0VVJMKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxjaGFyW10+IGJ1ZmZlcjsKICAgICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsKLSAgICAgICAgYnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEp
OworICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFy
W10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOwogICAgICAgICBzdHJjcHkoYnVmZmVyLmdl
dCgpLCBmaWxlUHJlZml4KTsKICAgICAgICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSArIHByZWZpeExl
bmd0aCwgcGF0aE9yVVJMKTsKICAgICB9IGVsc2UgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgUEFUSF9NQVggKyBsZW5ndGggKyAyKTsg
Ly8gMSBmb3IgdGhlIHBhdGhTZXBhcmF0b3IKKyAgICAgICAgYnVmZmVyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxl
bmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFyYXRvcgogICAgICAgICBzdHJjcHkoYnVm
ZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKICAgICAgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmdldCgp
ICsgcHJlZml4TGVuZ3RoLCBQQVRIX01BWCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTE2
NDksNyArMTY0OSw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJ1blRlc3QoY29uc3QgY2hhciog
aW5wdXRMaW5lKQogICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3Qo
Y29tbWFuZCk7CiAKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwgPSBhZG9wdFdLKGNy
ZWF0ZVRlc3RVUkwoY29tbWFuZC5wYXRoT3JVUkwuY19zdHIoKSkpOwotICAgIG1fY3VycmVudElu
dm9jYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VSTC5nZXQoKSwg
b3B0aW9ucyk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IG1ha2VVbmlxdWU8VGVzdEludm9j
YXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChjb21tYW5kLnNob3VsZER1
bXBQaXhlbHMgfHwgbV9zaG91bGREdW1wUGl4ZWxzRm9yQWxsVGVzdHMpCiAgICAgICAgIG1fY3Vy
cmVudEludm9jYXRpb24tPnNldElzUGl4ZWxUZXN0KGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gp
OwpAQCAtMjk2MSw3ICsyOTYxLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxs
UnVuVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24s
IGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7Cisg
ICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0
aW9uLCBvcHRpb25zKTsKIH0KIAogUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VD
b25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25z
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAyOGFkMWVk
ODhhNjNmN2JkNmFmMWRkNTk5YWJmMjAwNjM0ODZlZmZiLi5hMzg2ZTliODJiNDVmYTUwOTM2NjBi
OTUxMDRhZTdjNmRmYmZjZDE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcApAQCAtMTY4NSw3ICsxNjg1LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6cnVuVUlT
aWRlU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCwgdW5zaWduZWQgc2NyaXB0Q2FsbGJhY2sKICAg
ICBtX3BlbmRpbmdVSVNjcmlwdEludm9jYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmICgh
bV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENvbnRl
eHQgPSBtYWtlVW5pcXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOwogICAgIAogICAgIG1fVUlT
Y3JpcHRDb250ZXh0LT5ydW5VSVNjcmlwdCh0b1dURlN0cmluZyhzY3JpcHQpLCBzY3JpcHRDYWxs
YmFja0lEKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCA3
ODgwZGQ4ZGY1NTJmYzlkODJiOTRkMWQyZjJkZGZkNmRmODJlYzJiLi44NWIxYjAyMDZlYjg5MjI2
ZTg2YzZiNDFhYjkzZTVkYjk1ZWJmZDkyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgVGVz
dEludm9jYXRpb24gZmluYWwgOiBwdWJsaWMgVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRlc3RJ
bnZvY2F0aW9uKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXN0SW52b2NhdGlvbihXS1VSTFJl
ZiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCAwZmJmOGVhNTIzZDM0OGQyNTZlY2M1
MjMwNDJkZWEwMmZlY2RkMWRjLi4wZWJmN2JmZDAwMzlmNGVmODA5MzJjMWViNTE5MmZmNTRlZTNj
NGEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9s
bGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQK
ICAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gX3NldEFwcGxpY2F0aW9uTWFuaWZlc3Q6W19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOnRleHQgbWFu
aWZlc3RVUkw6bmlsIGRvY3VtZW50VVJMOm5pbF1dOwogICAgIH0KIAotICAgIG1fbWFpbldlYlZp
ZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29waWVkQ29uZmlndXJhdGlv
bi5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZv
cm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKICAgICBmaW5p
c2hDcmVhdGluZ1BsYXRmb3JtV2ViVmlldyhtX21haW5XZWJWaWV3LmdldCgpLCBvcHRpb25zKTsK
IAogICAgIGlmIChvcHRpb25zLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUpCkBA
IC0yMjYsNyArMjI2LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0RGVmYXVsdENhbGVuZGFy
VHlwZShOU1N0cmluZyAqaWRlbnRpZmllcikKIHsKICAgICBtX292ZXJyaWRkZW5DYWxlbmRhcklk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGlmICghbV9jYWxlbmRhclN3aXp6bGVyKQotICAg
ICAgICBtX2NhbGVuZGFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dp
enpsZXI+KFtOU0NhbGVuZGFyIGNsYXNzXSwgQHNlbGVjdG9yKGN1cnJlbnRDYWxlbmRhciksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZENhbGVuZGFyKSk7CisgICAgICAgIG1fY2FsZW5k
YXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIg
Y2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHN3aXp6bGVkQ2FsZW5kYXIpKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRDb250
ZW50RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9F
dmVudFNlbmRlclByb3h5R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50
U2VuZGVyUHJveHlHdGsuY3BwCmluZGV4IGRlNTc4ZjczZmMzNmVjZDE1ODljOTlmOGRiZjhmY2Nj
Mzk4N2I0MmUuLmVmOWUzOGU3MjNiYWE5NWRmZmU3MGVjNWE4NzVjZmVjODRlMzI4NzcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CkBAIC0yNzEsNyArMjcxLDcgQEAgaW50IGdldEdES0tleVN5bUZvcktleVJlZihXS1N0cmluZ1Jl
ZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCBndWludCogbW9kaWZpZXIKICAgICAgICAgcmV0
dXJuIEdES19LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1h
eGltdW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJp
bmdHZXRVVEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAg
Y2hhciBjaGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCA2YTYxZGY4ZTM1ZDZmYTA4Yzhi
MTRjNTFhODIzYzYyZDA4MDVkNGQyLi5mM2M0MTdjN2ZiN2NhYTRkZTQ3NzdjN2E0OTRmNTNhZjMy
YTE4YmZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJv
bGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxl
cklPUy5tbQpAQCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
UmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0CiAKICAg
ICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmNsZWFyKCk7CiAgICAgaWYgKCFvcHRpb25zLnNo
b3VsZFByZXNlbnRQb3BvdmVycykgewotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdD
b250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRl
ZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3
Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKLSAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVy
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3Bv
dmVyQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0Omlu
VmlldzpwZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAg
ICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0
aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRW
aWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKKyAgICAgICAgbV9w
cmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9w
b3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3Bv
dmVyKSkpOwogICAgIH0KICAgICAKICAgICBCT09MIHNob3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRl
ciA9IE5POwpAQCAtMjY5LDkgKzI2OSw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEtleWJv
YXJkSW5wdXRNb2RlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICAgICBh
dXRvIGNvbnRyb2xsZXJDbGFzcyA9IFVJS2V5Ym9hcmRJbnB1dE1vZGVDb250cm9sbGVyLmNsYXNz
OwogICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnJlc2VydmVDYXBhY2l0eSgzKTsKLSAgICBtX2lu
cHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRN
b2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOwot
ICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJl
bnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1
cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNs
YXNzLCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihz
d2l6emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNo
ZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVy
Q2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVu
Y2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xs
ZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVy
cHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1v
ZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6
emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKICAgICBbVUlLZXli
b2FyZEltcGwuc2hhcmVkSW5zdGFuY2UgcHJlcGFyZUtleWJvYXJkSW5wdXRNb2RlRnJvbVByZWZl
cmVuY2VzOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L0V2ZW50U2VuZGVyUHJveHkubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNl
bmRlclByb3h5Lm1tCmluZGV4IGQxY2ZjNmEzMzIxZTAyOWM4YmE4MTE1ZjRhNmQ5MjA3ZjhlNzE4
NGYuLjg5Y2U0ZWYxMjZjMTVkOTJkY2Y3NjY1MGNlNmVlZjViODkyMzE3MmUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQpAQCAtMzI1LDcgKzMy
NSw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbk51
bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllCiAKICAgICBOU1ZpZXcgKnRhcmdldFZpZXcg
PSBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVz
dDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAg
ICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNz
ZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNz
ZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNT
d2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3Nd
LCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihz
d2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1
cnJlbnRFdmVudDpldmVudF07CiAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRG93bjpldmVudF07
CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC0zNTcsNyArMzU3LDcg
QEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMKICAgICAgICAgdGFyZ2V0VmlldyA9IG1fdGVzdENv
bnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwogCiAgICAgQVNTRVJUKHRh
cmdldFZpZXcpOwotICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNl
bGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenps
ZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNl
QnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVu
dCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6ZXZlbnRdOwog
ICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC01OTMsNyArNTkzLDcgQEAgdm9p
ZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCiAgICAg
Ly8gQWx3YXlzIHRhcmdldCBkcmFncyBhdCB0aGUgV0tXZWJWaWV3IHRvIGFsbG93IGZvciBkcmFn
LXNjcm9sbGluZyBvdXRzaWRlIHRoZSB2aWV3LgogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IGlz
RHJhZyA/IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIDog
W21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6
d2luZG93TG9jYXRpb25dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0
aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRv
bnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRv
bnMpKTsKKyAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1h
a2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3Io
cHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpl
dmVudF07CiAgICAgICAgIGlmIChpc0RyYWcpCiAgICAgICAgICAgICBbdGFyZ2V0VmlldyBtb3Vz
ZURyYWdnZWQ6ZXZlbnRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUv
RXZlbnRTZW5kZXJQcm94eVdQRS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVu
dFNlbmRlclByb3h5V1BFLmNwcAppbmRleCA0NjliZmFmMGU4Y2YyOTA3MzBiYWJmYTA3ODM2ZDg3
N2VjNzBlOGY1Li42OTZmNDU1NzU4OTZmZTgyNjY0ODdkMDk4ZThmZThlZTYxZTU0ZDU2IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNw
cApAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB1aW50MzJfdCB3cGVLZXlTeW1Gb3JLZXlSZWYo
V0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgdWludDMyCiAgICAgICAgIHJl
dHVybiBXUEVfS0VZX0YxMjsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRN
YXhpbXVtVVRGOENTdHJpbmdTaXplKGtleVJlZik7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIFdLU3Ry
aW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAg
IGNoYXIgY2hhckNvZGUgPSBidWZmZXIuZ2V0KClbMF07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376368</attachid>
            <date>2019-08-15 01:06:44 -0700</date>
            <delta_ts>2019-08-15 13:46:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190815010643.patch</filename>
            <type>text/plain</type>
            <size>1800960</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MTYxNzc1NzNhNjkyZGZkZmQyMjQzMTg0ZWVmODlkNWY3YjY4NDg2Li5mOTQ1ZWU0NGJjMjkxOGZi
OGIzMDEyMDc3OTE4MzZkNDc4Y2IwYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBB
aXIgZG9lcyBub3QgYXBwcm9wcmlhdGVseSBwcm9wYWdhdGUgQ29uc3RGbG9hdFZhbHVlIHRvIHN0
YWNrbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IGQyOGY1ZjNlODc4YTIyZWY5MmYzZTAyMzM4YjVmYjRkYzVjYWM0YTkuLjMz
NGU4NWU4MjY4MTI0OGViYjY2YjJiZWMwODM3M2RlZWMzNDA4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxs
b2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHA6CisgICAgICAgICogYmVuY2htYXJrcy9M
b2NrU3BlZWRUZXN0LmNwcDoKKyAgICAgICAgKiB3dGYvQ29uY3VycmVudFZlY3Rvci5oOgorICAg
ICAgICAqIHd0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdURjo6Q3Jv
c3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3ApOgorICAgICAgICAqIHd0Zi9GYXN0TWFs
bG9jLmg6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAgICAgIChXVEY6
OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9uLmg6CisgICAg
ICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAg
ICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICogd3RmL1N0ZExp
YkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAgKFdURjo6bWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9TdHJlYW1CdWZm
ZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHd0
Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAgICAgKiB3dGYv
Z2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0
ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorCiAyMDE5
LTA4LTE0ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUgc2hvdWxkIGxvZyBlcnJvciBzdGF0dXMgKDE3ODM0
NykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmNmM5MzgyN2E1ZjVlNDBjOGQ4NjgwNDVmN2ZlYTY2OWVlNDYxODBh
Li4wYjkxYTNjZjVhZmFiNTRmOTk0ODBhMzY3OTZhYjdkNWZhYzk0NjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTg4MCBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVz
IFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFu
aWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdFBh
cnNlcjo6bG9nRGV2ZWxvcGVyV2FybmluZyk6CisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJlYWNvbjo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Q2FjaGVzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxt
YW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
Q0RNOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETS5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjprZXlTeXN0ZW0gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpjbGllbnQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpzZXRDbGllbnQpOiBEZWxldGVk
LgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZh
dGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Q
cml2YXRlQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJpdmF0ZUNs
ZWFyS2V5OjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVy
Ojpsb2FkQmxvYik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OmZldGNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKiBNb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlR2VvbG9jYXRpb25U
byk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9sb2NhdGlvbjo6ZnJvbSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6ZnJvbSk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2Jq
ZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0
YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpnZXRPckNyZWF0ZVVuaXF1
ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpj
cmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2
ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OkluZGV4
VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Ok1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJlY29yZFZhbHVlQ2hhbmdlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0
b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJhc2VJbmZvKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6bWF5YmVPcGVuQ3Vyc29yKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6Om1heWJlT3BlbkN1
cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3Rp
bmdEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjYWNo
ZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJz
b3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNo
TmV4dFJlY29yZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
VHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFi
b3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
c3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0
YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6Om9wZW5E
YXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkRh
dGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpk
ZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6
cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmdldFJl
Y29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6Z2V0QWxsUmVj
b3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkN1cnNv
clN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNv
clN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHRE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJzaW9uQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmRlY29kZSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllczo6ZnJvbSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlja2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hhbm5lbEV2ZW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90
ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNvbGxl
Y3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNrZW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tlbmRGcm9tU2VuZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVSZWNlaXZlckJhY2tl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpj
cmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlTm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL05hdmlnYXRv
clN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JTdG9yYWdlUXVv
dGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90
YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhl
c2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJlUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvRGF0YSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpz
YW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9E
ZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjplcnJvckNhbGxiYWNr
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGlu
Z1Rhc2s6OmF1ZGlvQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VO
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1
YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6Omdl
dEZyZXF1ZW5jeVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFu
bmVsTWVyZ2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0
ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5u
ZWxTcGxpdHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlO
b2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNz
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJl
c3Nvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6aW5p
dGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9y
bWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpP
c2NpbGxhdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBhbm5lck5vZGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBl
cmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZUFuYWx5c2VyOjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
QW5hbHlzZXI6OnNldEZmdFNpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0
UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2Rl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJEU1BLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5l
bDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6
OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQ
cm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3Jl
YXRlS2VybmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29y
ZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2Fn
ZS5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcDoKKyAgICAg
ICAgKGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgor
ICAgICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbVNlcmlh
bGl6ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNj
aGVkdWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0YWJs
ZU5hbWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGluZ0RhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdEYXRhYmFzZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5z
YWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JXZWJEcml2ZXI6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L05hdmlnYXRv
ckdQVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHUFU6OmZyb20pOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNj
YWZmb2xkaW5nLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlJlbmRl
ckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5vZGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpDaGVj
a2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6cGFyc2VTZW1hbnRp
Yyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVCaW5h
cnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdI
YW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVldWVCbG9iRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y3JlYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFt
ZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVy
OjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OldlYlNvY2tldERl
ZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpXZWJTb2NrZXRJ
bmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c3RhcnRDYWNoaW5nQ29t
cHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcyk6CisgICAgICAgICogYW5pbWF0
aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnVw
ZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94
eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckds
b2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3Bl
QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2ZlckFycmF5QnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1ZN
Q2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJyaWRnZS9jL2NfY2xhc3MuY3BwOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRob2ROYW1lZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFtZWQgY29uc3QpOgorICAgICAgICAq
IGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19jbGFz
cy5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6bWV0aG9kTmFtZWQgY29u
c3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0NsYXNzOjpmaWVsZE5hbWVkIGNvbnN0
KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKiBjb250ZW50ZXh0
ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6Q29tYmluZWRVUkxGaWx0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21iaW5lZFVSTEZpbHRlcnM6OmFk
ZFBhdHRlcm4pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25z
QmFja2VuZC5oOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVDcnlwdG8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMpOgorICAgICAgICAqIGNzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluZUNhdGVnb3J5
KToKKyAgICAgICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkU2ltcGxlRGVmYXVsdFN0
eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250
RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKToKKyAgICAgICAgKiBjc3MvQ1NTR3JvdXBpbmdSdWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6Y3NzUnVsZXMgY29uc3Qp
OgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnNhdmVDYWNoZWRJbWFnZUZvclNpemUpOgor
ICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0Ojpjc3NSdWxlcyk6CisgICAgICAg
ICogY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DU1NQ
YWludFdvcmtsZXQ6OmZyb20pOgorICAgICAgICAqIGNzcy9ET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHk6OmZyb20pOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OkRvY3VtZW50UnVsZVNldHMpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNlckFnZW50TWVkaWFRdWVyeVN0eWxl
SWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6aW5p
dGlhbGl6ZVVzZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjptYWtlUnVsZVNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKToKKyAgICAgICAgKiBjc3Mv
RWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVD
b2xsZWN0b3I6OmNvbGxlY3RTbG90dGVkUHNldWRvRWxlbWVudFJ1bGVzRm9yU2xvdCk6CisgICAg
ICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlRm9udEZh
Y2VXaXRoQXJyYXlCdWZmZXIpOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTU09NKToKKyAgICAgICAgKiBjc3MvUnVsZUZlYXR1
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJl
cyk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6YWRkKToKKyAgICAgICAgKiBj
c3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRUb1J1bGVTZXQp
OgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3Ro
KToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRUZXh0U2hhZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Qm94U2hh
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNv
bnRlbnQpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVD
U1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xs
YmFjayk6CisgICAgICAgICogY3NzL21ha2Vwcm9wLnBsOgorICAgICAgICAoZ2VuZXJhdGVGaWxs
TGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlcik6CisgICAgICAgIChnZW5lcmF0ZUZpbGxM
YXllclByb3BlcnR5VmFsdWVTZXR0ZXIpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2Vy
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpDU1NQYXJzZXJJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OnBhcnNlUGFnZVNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVNZWRpYVJ1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1cHBvcnRzUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5ZnJhbWVzUnVsZSk6CisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFNlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0NsYXNzU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNl
bGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVj
dG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpwcmVwZW5k
VGFnU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hhcGVQYXRoKToKKyAgICAgICAgKiBj
c3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKToKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWU6OmVuc3VyZUJhY2t1cFF1ZXVlKToKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6aXRlbXMpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAqIGRvbS9EZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdmlkZURl
dmljZU9yaWVudGF0aW9uVG8pOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmJ1aWxkQWNjZXNzS2V5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpmb3JtQ29udHJvbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZl
cik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXhPYmplY3RDYWNoZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0UGFyc2luZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
dGV4dEF1dG9TaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZEFkZFdoZWVs
RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRBZGRUb3VjaEV2
ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkTG9nTWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJDU1NQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvbVRpbWVySG9sZGluZ1Rhbmsp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVl
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2
ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXIpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUp
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0SXNEZWZp
bmVkQ3VzdG9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnF1ZXVlVG9V
cGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNsYXNzTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpkYXRhc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEpOgorICAgICAgICAqIGRvbS9FdmVudExpc3Rl
bmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6Cisg
ICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRQYXRoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0aDo6YnVpbGRQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50UGF0aDo6RXZlbnRQYXRoKToKKyAgICAgICAgKiBkb20vRnVsbHNjcmVlbk1hbmFn
ZXIuaDoKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIpOgorICAg
ICAgICAqIGRvbS9LZXlib2FyZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWJvYXJk
RXZlbnQ6OktleWJvYXJkRXZlbnQpOgorICAgICAgICAqIGRvbS9NaWNyb3Rhc2tzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNaWNyb3Rhc2tRdWV1ZTo6dm0gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1ZXVlTXV0
YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUlmTmVlZGVkKToKKyAgICAgICAgKiBkb20vTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaCk6CisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bWF0ZXJpYWxpemVS
YXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1cmVFdmVudFRhcmdldERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKToKKyAg
ICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURh
dGE6OmVuc3VyZU5vZGVMaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmVu
c3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKiBkb20vUmFkaW9CdXR0b25Hcm91
cHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cHM6OmFkZEJ1dHRvbik6
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydFVuaGFuZGxlZFByb21pc2VS
ZWplY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5z
dXJlUmVqZWN0ZWRQcm9taXNlVHJhY2tlclNsb3cpOgorICAgICAgICAqIGRvbS9TZWxlY3RvclF1
ZXJ5LmNwcDoKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6
Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dS
b290OjphZGRTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjphZGRTbG90RWxlbWVudEJ5
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YXNzaWduVG9TbG90KToK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29w
ZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRkRWxlbWVudEJ5
SWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRkSW1hZ2VNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIGVkaXRpbmcvU2Vs
ZWN0aW9uUmVjdEdhdGhlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJlY3RH
YXRoZXJlcjo6Y2xlYXJBbmRDcmVhdGVOb3RpZmllcik6CisgICAgICAgICogZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0
Tm9kZSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAg
ICAoSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcik6CisgICAgICAgIChIVE1MQ29udmVydGVy
Q2FjaGVzOjpjb21wdXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0
aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5n
L21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dl
YkNvbnRlbnQpOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGxPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNG
aWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0pOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwpOgorICAg
ICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
RnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUGFnZTo6Q2FjaGVkUGFnZSk6CisgICAgICAgICogaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjphZGRJZkNh
Y2hlYWJsZSk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKToKKyAgICAgICAgKiBodG1sL0Zvcm1B
c3NvY2lhdGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1s
L0Zvcm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNhdmVkRm9ybVN0YXRlOjpk
ZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6Y3JlYXRlU2F2
ZWRGb3JtU3RhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OnRha2VT
dGF0ZUZvckZvcm1FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpyZWxMaXN0IGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQXJlYUVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNldElt
YWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBj
b25zdCk6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojpz
YW5kYm94KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXIpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxMaW5rRWxlbWVudDo6c2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtF
bGVtZW50OjpyZWxMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoSW5pdGlhbGl6YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2Up
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE91dHB1dEVsZW1lbnQ6
Omh0bWxGb3IpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVBZnRlclN0eWxl
UmVzb2x1dGlvbik6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvUHVibGljVVJMTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2VyOjpjcmVhdGUpOgorICAgICAg
ICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRh
dGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1l
c3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlZh
bGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSk6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0OjpEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdpbmdD
b250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9u
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmluaXRpYWxpemVO
ZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NTU1ByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByZWxvYWRTY2FubmVyOjplbWl0UnVs
ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxFbGVtZW50T3JG
aW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6
SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNl
cjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6
Omluc2VydCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjppbnNlcnRBYm92ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpwdXNoQ29tbW9uKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5Q
cmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpjcmVhdGVQcmVsb2FkUmVxdWVzdCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlKToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUp
OgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpwYXJzZXIpOgorICAgICAgICAq
IGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNr
Ojpsb2FkVGltZXJGaXJlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6OkNvbW1hbmRMaW5l
QVBJSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6OmNsZWFyQWxs
V3JhcHBlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRWRpdG9yOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RWRpdG9yOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlbW92ZUF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE91dGVySFRNTCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRNTCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRp
dG9yOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXROb2Rl
VmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01BZ2VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVQYWdlQWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFBhcnNlZFN0eWxlU2hlZXQ6OnNldFNvdXJjZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNl
RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRy
b2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudDo6SW5zcGVj
dG9yQ1BVUHJvZmlsZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5z
cGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNl
dFN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpz
ZXRTdHlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1
bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVs
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6SW5zcGVjdG9yQ2FudmFz
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZENh
bnZhc0FjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9N
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cik6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRh
YmFzZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JNZW1vcnlB
Z2VudDo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6SW5zcGVjdG9yTmV0d29ya0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvbnNvbGVBZ2VudDo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkhlYXBBZ2VudDo6V2ViSGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFn
ZW50OjpQYWdlUnVudGltZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2cpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRT
dGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpkaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0
U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ0Nv
bnRleHQpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmg6CisgICAg
ICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29s
bGVjdElubGluZUNvbnRlbnQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0
ZURpc3BsYXlSdW5zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVJdGVtLmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OkxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25CcmVha2FibGVTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZFRleHRDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRIYXJkTGluZUJyZWFrKToKKyAgICAgICAg
KiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmg6CisgICAgICAgICogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OnNwbGl0IGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCb3g6OkJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6ZW5zdXJl
UmFyZURhdGEpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91
dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVUYWJs
ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OnByaW50TGF5b3V0VHJlZUZv
ckxpdmVEb2N1bWVudHMpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0
ZVByZWZsaWdodFJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsb2FkQXBwbGljYXRpb25NYW5pZmVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNl
cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YWRkQXJjaGl2ZVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyk6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpGcmFtZUxv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRldGFjaENoaWxkcmVuKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTGlua0xvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50KToKKyAgICAgICAg
KiBsb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6
c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVy
OjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVQYWdlQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmg6CisgICAgICAgICogbG9hZGVyL1Byb2dy
ZXNzVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXI6OmluY3Jl
bWVudFByb2dyZXNzKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyOjpjaGVja0ZvckhlYWRDaGFy
c2V0KToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnNl
dEJvZHlEYXRhRnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y3JlYXRlSW1h
Z2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnBy
ZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNsZWFyUHJl
bG9hZHMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U6OmxvYWRS
ZXF1ZXN0ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2U6OmRvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmVuc3Vy
ZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRk
SW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpscnVMaXN0Rm9y
KToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvaW9zL1ByZXZpZXdMb2FkZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5p
dFdpdGhSZXNvdXJjZUxvYWRlcjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQ
cmV2aWV3TG9hZGVyIGNvbm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdl
YkNvcmU6OlByZXZpZXdMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzLmg6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNv
bnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVk
ZWQpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojppbml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92
ZXJsYXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAg
ICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0
aW9uUHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAg
ICAgICAqIHBhZ2UvUHJld2FybUluZm9ybWF0aW9uLmg6CisgICAgICAgICogcGFnZS9QcmludENv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWRE
ZXN0aW5hdGlvbnMpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1l
cik6CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
YWdlL1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1N1c3Bl
bmRhYmxlVGltZXIuaDoKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVT
aGVldCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBh
Z2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclZp
c2l0ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxsTGF5ZXJz
UHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9u
V3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3Rp
dmUpOgorICAgICAgICAqIHBhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oOgorICAgICAg
ICAqIHBhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaDoKKyAgICAgICAgKiBwYWdlL2xpbnV4
L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogcGFnZS9tYWMv
UGFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFNjaGVkdWxlUGFpcik6Cisg
ICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcik6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaDoKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxkKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVUcmVlOjpjb21taXQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlOjphcHBl
bmRDaGlsZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DUFVNb25pdG9yLmg6CisgICAg
ICAgICogcGxhdGZvcm0vRmlsZU1vbml0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OmJsZW5kTWl4ZWRUeXBlcyk6CisgICAgICAgICogcGxhdGZvcm0v
UmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNvbW1h
bmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxh
YmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsQW5p
bWF0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNu
YXBPZmZzZXRzSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpBdWRp
b0J1cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6Y29weVdpdGhHYWluRnJvbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVzOjpudW1iZXJPZkNoYW5uZWxzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQnVzOjpjaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVzOjpjaGFubmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVz
OjpsZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnNh
bXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnNl
dFNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OnJlc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpBdWRpb0J1cyk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6OkF1ZGlvQ2hhbm5lbCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0NoYW5uZWw6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0NoYW5uZWw6Om11dGFibGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQ2hhbm5lbDo6ZGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NoYW5uZWw6Onplcm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVs
OjpjbGVhclNpbGVudEZsYWcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFu
bmVsOjppc1NpbGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
QXVkaW9GSUZPLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZJRk86OmZyYW1lc0luRmlmbyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZJRk86OnVwZGF0ZUluZGV4
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVy
OjpyYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlcktlcm5lbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzQWN0aXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9CaXF1YWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Db25l
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRJbm5lckFuZ2xlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OmlubmVyQW5nbGUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0T3V0ZXJBbmdsZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRlckFuZ2xlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNldE91dGVyR2Fpbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpvdXRlckdhaW4gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OkRlbm9ybWFsRGlzYWJsZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6fkRlbm9ybWFsRGlzYWJsZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxEaXNhYmxlcjo6Zmx1c2hEZW5v
cm1hbEZsb2F0VG9aZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlz
YWJsZXI6OmdldENTUik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2Fi
bGVyOjpzZXRDU1IpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0RpcmVjdENv
bnZvbHZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bW9kZWwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldE1vZGVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3RhbmNlRWZmZWN0OjpzZXRSZWZEaXN0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6c2V0TWF4RGlzdGFuY2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldFJvbGxvZmZGYWN0b3IpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnJlZkRpc3RhbmNlIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjptYXhEaXN0YW5jZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6cm9sbG9mZkZh
Y3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRG93blNhbXBs
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6Om55cXVpc3QgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjp0YWlsVGlt
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6
OmxhdGVuY3lUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3ND
b21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6bGF0ZW5jeUZyYW1lcyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNhbXBsZVJhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVs
OjptZXRlcmluZ0dhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0VxdWFsUG93ZXJQYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVENvbnZvbHZlcjo6ZmZ0U2l6ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkZURnJhbWU6OmNyZWF0ZUludGVycG9sYXRlZEZyYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRh
YmFzZTo6bnVtYmVyT2ZBemltdXRocyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRG
RGF0YWJhc2U6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0
YWJhc2VMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRp
bmdTbGljZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OkhSVEZFbGV2YXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVsTGlzdEwpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6a2VybmVsTGlzdFIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6ZWxldmF0aW9uQW5nbGUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6bnVtYmVyT2ZBemltdXRo
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpzYW1w
bGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2Vy
bmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRG
UGFubmVyOjpmZnRTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQ
YW5uZXI6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUNo
YW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcik6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Jl
dmVyYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmI6OmluaXRpYWxpemUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjpp
bXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2
ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkVGltZUZyYW1lIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjppbnB1dEJ1ZmZlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OnVzZUJhY2tncm91bmRU
aHJlYWRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJD
b252b2x2ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFn
ZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlclN0YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXJTdGFn
ZTo6aW5wdXRSZWFkSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL1JldmVyYklucHV0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJJbnB1dEJ1
ZmZlcjo6d3JpdGVJbmRleCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vU2luY1Jlc2FtcGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpaZXJvUG9sZTo6WmVyb1BvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1Bv
bGU6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRaZXJv
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpzZXRQb2xlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjp6ZXJvIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpwb2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6bGlzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6Om9wZXJhdG9yIEF1ZGlvQnVmZmVyTGlzdCYg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0Ojpr
aW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6QXVkaW9TZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQ0FS
aW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1l
ckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUG93ZXJPYnNlcnZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5Q2xlYXJLZXk6OmNyZWF0ZUNETSk6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3Zp
ZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6R2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6
OmNvbnRyb2xsZXJEaWRDb25uZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFBy
b3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpEaWN0aW9uYXJ5Ojph
ZGQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dl
bmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpL
ZXllZERlY29kZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0OjpUZXh0TGF5b3V0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjplbnN1
cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0ZvckdseXBoIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2
ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3Bs
YXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUZvbnRzOjpH
bHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgorICAgICAgICAoV2ViQ29yZTo6
R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldFRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRy
YW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Ok1lZGlh
UGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRp
YUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnNlZWth
YmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9pbnRHcmFwaDo6ZmluZE9yQ3JlYXRlTm9kZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlZ2lvbjo6c2V0U2hhcGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpjb3B5U2hhcGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVnaW9uOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a1JlcHJlc2VudGF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Zl
bG9jaXR5RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dDNEQU5HTEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OmNyZWF0ZUNE
TSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVh
bWluZ1Bzc2hCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnBsYXRm
b3JtUGlja2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6
cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVk
aWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01ldGFkYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVJv
dGF0aW9uU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1U
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla2Fi
bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5l
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUlt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rv
bk9wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9yU2Nyb2xsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp0aWxlZFNjcm9sbGluZ0luZGljYXRvckxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21t
b25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRTaGFw
ZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJU
aWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGlsZWRCYWNraW5nTGF5ZXIgY3Jl
YXRlVGlsZUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJXaW46OlBs
YXRmb3JtQ0FMYXllcldpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dl
YlRpbGVkQmFja2luZ0xheWVyV2luLmNwcDoKKyAgICAgICAgKFdlYlRpbGVkQmFja2luZ0xheWVy
V2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6bV9wcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVj
aWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OklP
U3VyZmFjZTo6ZW5zdXJlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOgorICAgICAgICAoVGV4
dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9wZXJ0aWVzOjppc0lkZW50aXR5IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnRyYW5z
Zm9ybSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUOjpyb3RhdGlvblByb3BlcnRpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpyb3RhdGVkU2l6ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW06CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb246OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZm
ZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJl
VG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnB1c2hO
ZXh0SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OnBhcnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklT
T1N0cmluZ0JveDo6Y29udGVudHMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09WVFRDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6Ym94
VHlwZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpwcmVz
ZW50YXRpb25UaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZU
VEN1ZTo6ZHVyYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2Vi
VlRUQ3VlOjpzb3VyY2VJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09X
ZWJWVFRDdWU6OmlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZU
VEN1ZTo6b3JpZ2luYWxTdGFydFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SVNPV2ViVlRUQ3VlOjpzZXR0aW5ncyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJU09XZWJWVFRDdWU6OmN1ZVRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpjcmVhdGVVcGRhdGVTY29wZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpjcmVhdGVDb21tYW5kKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGlu
Z0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0NvbnRleHRDYWly
bzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5n
Q29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OkZvclJlY29yZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVN
YXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBw
ZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25M
YXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNvbXBvc2l0aW9u
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJl
TWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNv
c2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5
ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwu
Y3BwOgorICAgICAgICAoTmljb3NpYTo6SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6OmNy
ZWF0ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNo
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFwcGVkU3ltYm9s
TmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBo
aWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBs
YXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVy
ZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3Jl
YXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRl
T25Db21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGls
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3Rh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6OnNldExhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1TdGF0ZTo6c2V0U2Vjb25kYXJ5UXVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnVsbFNjcmVlbkNvbnRyb2xsZXI6OkZ1bGxTY3JlZW5Db250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5Db250cm9sbGVyOjplbnRlckZ1bGxTY3JlZW4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3Jl
YXRlRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjptX3ByaXZhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVXaW5kb3dzQml0bWFwKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVy
OjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
S0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JH
bG9iYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
RHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xpcGJvYXJkQ29u
dGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lU2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUNvbWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVscGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoR0lGRnJhbWVDb250ZXh0
OjpkZWNvZGUpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OmFkZEZyYW1lSWZOZWNlc3Nhcnkp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGls
ZUNhY2hlOjpMZWdhY3lUaWxlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5VGlsZUNh
Y2hlOjpjb21taXRTY2FsZUNoYW5nZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRp
bGVHcmlkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3RlclFM
UHJldmlld0NvbnZlcnRlcklmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUmVtb3Rl
Q29tbWFuZExpc3RlbmVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExp
c3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5k
TGlzdGVuZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1cmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyQXVk
aW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRp
b0RhdGE6OkdTdHJlYW1lckF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
U3RyZWFtZXJBdWRpb0RhdGE6OmdldFNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHU3RyZWFtZXJBdWRpb0RhdGE6OmdldEF1ZGlvSW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0
cmVhbVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRfbWVkaWFfc3RyZWFtX3Ny
Y19pbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6Om1fY2FwdHVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRl
VmlkZW9FbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFja2V0U29j
a2V0RmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5lY3Rpb25G
YWN0b3J5QW5kVGhyZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6
Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlk
ZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRl
RGVjb2RlckZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJHU3Ry
ZWFtZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVz
QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpjb252ZXJ0VG9ZVVYpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnJvdGF0ZVBp
eGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OmZpcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6Y3JlYXRlRGVj
b2RlVGFzayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbENh
Y2hlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpkaWRTZW5kQm9keURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6Y2Fu
UmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayBfcmVzdGFydF0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6c2VhcmNoQ29v
a2llcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6Y3JlYXRlUHJlcGFyZVN0YXRl
bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxD
b250ZXh0OjpDdXJsQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjp3aWxs
U2V0dXBTc2xDdHgpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6Y3JlYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6ZGVsZWdhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBj
YWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE5TUmVzb2x2
ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRTdG9yYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGVy
aXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQv
TG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9u
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
SUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNM
YXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0aW4xOjpyZWdpc3RlckNv
ZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJDb2RlY3Mp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVj
VVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVj
VXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVXNlckRlZmluZWQ6
OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS92ci9v
cGVudnIvVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS92ci9v
cGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VlJQ
bGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWUlBsYXRm
b3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAgICAgICogcGxhdGZvcm0vdnIv
b3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmg6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6OmNyZWF0ZVByZXBhcmVk
U3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6CisgICAgICAgICogcmVuZGVy
aW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmJ1aWxkUmVm
ZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBs
ZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5n
T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3Q6OmNvcHlU
b05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6
Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmpl
Y3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSk6
CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0ZUJhc2VsaW5lQWxpZ25tZW50
Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNvbXB1dGVG
bGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2VkVGVzdFJlc3VsdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFBsYWNlaG9sZGVyUnVuRm9y
SXNvbGF0ZWRJbmxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPdmVybGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdDb250
YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppbnNlcnRJbnRvVHJhY2tlZFJlbmRlcmVyTWFwcyk6CisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXA6OmFkZERlc2NlbmRhbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlQmxvY2tSYXJlRGF0YSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6bGF5b3V0TGluZUdyaWRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjplbnN1cmVMaW5lQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjptYXRlcmlhbGl6ZVJhcmVCbG9ja0Zsb3dEYXRhKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRyb2xTdGF0ZXNG
b3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNyZWF0ZUlubGluZUJv
eCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjplbnN1cmVDb250aW51YXRpb25DaGFp
bk5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VDb3VudGVyTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZy
YWdtZW50Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50Q29u
dGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFnbWVu
dGVkRmxvdzo6Y29udGFpbmluZ0ZyYWdtZW50TWFwKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6
OnB1c2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hWaWV3KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWF0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBv
c2l0aW9uc091dHNpZGVHcmlkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcklubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVOb3Jt
YWxGbG93TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29sbGVjdExheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVDbGlwUmVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFuY2VzdG9yQ2xpcHBpbmdTdGFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5Rmx1c2hCZWZvcmVEaXNwbGF5
UmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNv
b3JkaW5hdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllck1vZGVsT2JqZWN0OjpjcmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0
ZUlubGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRp
Q29sdW1uRmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGU6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFj
dGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWaWV3OjpyZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Vmlldzo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3Ip
OgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
b290SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRG
bG9hdCk6CisgICAgICAgICogcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdl
RGF0YTo6Y29sbGVjdEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25S
YW5nZURhdGE6OmFwcGx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29s
dmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRBdXRvU2l6aW5nOjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xp
bmUvTGluZUJyZWFrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBM
ZWFkaW5nV2hpdGVzcGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNo
YXBlTWFyZ2luSW50ZXJ2YWxzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlQ2lyY2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxs
aXBzZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVC
b3hTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2ljU2hhcGVQYXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL0NvbnRlbnREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpGaWxsTGF5ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9u
ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRh
OjpTaGFkb3dEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpT
dHlsZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0ltYWdlOjpSZW5kZXJTVkdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJ
bmxpbmVGbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4
dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmlt
aXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21F
bGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzOjpzZXRNYXJrZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNl
dE1hcmtlck1pZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVzb3VyY2VzOjpzZXRTdHJva2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3Vy
Y2VzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJl
c291cmNlc0Zyb21SZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0
cmljc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVy
Ojppbml0aWFsaXplTWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVHJlZVVwZGF0ZXI6OlJlbmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiByZXBsYXkvVXNl
cklucHV0QnJpZGdlLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6SW52YWxpZGF0b3I6OkludmFsaWRhdG9yKToKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
Y29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNDb250YWlucyBjb25z
dCk6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZSk6CisgICAgICAgICogc3ZnL1NWR0Rv
Y3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1
bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAg
ICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
U1ZHRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJl
RGF0YSk6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSk6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
Qnl0ZVN0cmVhbTo6Y29weSBjb25zdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGlt
ZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c2No
ZWR1bGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZERlY29yYXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZERlY29yYXRlZFByb3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RlY29y
YXRlZEVudW1lcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0Rl
Y29yYXRlZFByb3BlcnR5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZl
UHJvcGVydHlBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eUFuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVBy
b3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpmcm9tKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OkludGVybmFscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVu
YWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6c2V0UHJpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppbml0aWFsaXpl
TW9ja0NETSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKToK
KyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogdGVzdGluZy9MZWdhY3lN
b2NrQ0RNLmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiB0ZXN0aW5n
L01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiB0ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFdmVudFF1
ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5o
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
UnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
Ojpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29w
Ojpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVz
b3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZCk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlv
bnMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0
cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZSk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6
YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpT
V1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAg
ICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToKKyAgICAgICAg
KiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdvcmtsZXRz
L1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRDb25z
b2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxT
Y29wZTo6V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9i
YWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRTY3JpcHRDb250
cm9sbGVyOjppbml0U2NyaXB0V2l0aFN1YmNsYXNzKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3Jz
Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0Ojp1cGxvYWQpOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5j
cHA6CisgICAgICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhQYXRoOjpldmFsdWF0ZVByZWRpY2F0ZSk6CisgICAgICAgICogeG1sL1hTTFN0eWxlU2hlZXRM
aWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNo
ZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcik6CisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kU3RhcnRFbGVtZW50TlNDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRFbmRFbGVtZW50TlNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRDaGFyYWN0ZXJz
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kUHJv
Y2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kQ0RBVEFCbG9ja0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
bmRpbmdDYWxsYmFja3M6OmFwcGVuZENvbW1lbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRJbnRlcm5hbFN1YnNldENhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVycm9yQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCk6CisKIDIwMTktMDgtMTQg
IEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEVycm9y
IHRocm93biBkdXJpbmcgImFjY2VwdE5vZGUiIGxvb2t1cCBpcyBvdmVycmlkZGVuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCA2MGU3ZmI1NmM5NzA1ZTE5ZmM4OWJjOGE2YmQ0ZjQyM2VmMTYyNWJlLi5j
N2FhYThkMTQ2M2ExZWEyOTNhYjIzNDUzN2YyZjMzMzIzYTY2ZjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wu
Y3BwOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3RDb250ZXh0SW1wbDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChQQUw6OkNsb2Nr
OjpjcmVhdGUpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW06CisgICAgICAg
IChDbG9jazo6Y3JlYXRlKToKKwogMjAxOS0wOC0xNCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIG1hY09TIDwgMTAuMTMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZlci9D
aGFuZ2VMb2cKaW5kZXggMzU4ZjJiZjAwNWFlNjQ0ZDgxMjMyOGQ1ZGVkZTQxOWM4YmEwMWNmYi4u
M2IxOTI4ZTlhMzA5MzA1MGE1MTcwYjczNzA5MjZmOTZlODE1MGJiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVz
IFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6
OldlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIpOgorICAgICAgICAqIGdsaWIvU2Vz
c2lvbkhvc3RHbGliLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6OmxhdW5j
aEJyb3dzZXIpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VU
b0JhY2tlbmQpOgorCiAyMDE5LTA2LTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDU1NjcpOiBbR1RLXVtXUEVdIFsy
LjI1LjFdIFdlYktpdFdlYkRyaXZlciBnZXRzIGluc3RhbGxlZCBhcyBXZWJEcml2ZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNzA5ZjVjMzYyNTE0Mjg2ODk0NzNjOTk4YjM4ZmRhYWJiNTRhNjBjZC4uNjJiZjk5NWVh
N2I1MzhiNThmZmViNDdhOGMyNDBjYzY3Mzg3OGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2Mzgg
QEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxs
b2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzayk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZv
ck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3Rh
cnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29udmVydE5l
dHdvcmtMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6
cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFwOjphZGQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2
ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0Jsb2I6OmRvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hl
Y2tDT1JTUmVxdWVzdFdpdGhQcmVmbGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9h
ZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjplbnN1cmVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3
U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0
aWFsaXplUXVvdGFVc2Vycyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdG9y
YWdlUXVvdGFNYW5hZ2VyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6bV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjpzY2hlZHVsZURhdGFi
YXNlVXBkYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpDYWNoZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6Om1ha2VFbnRyeSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6dXBkYXRlKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6RW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxvYWQ6OnJlZ2lzdGVyU3VicmVzb3VyY2VMb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
OjpyZXRyaWV2ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJl
dmFsaWRhdGVTdWJyZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3luY2hyb25pemUpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJlYWRSZWNvcmQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnJldHJpZXZlRnJvbU1lbW9yeSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRjaENh
Y2hlOjpzdG9yZVJlZGlyZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3Jl
YXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6Om5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdv
cmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRCZWNvbWVEb3dubG9hZFRh
c2s6XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZVdlYlNvY2tldFRhc2sp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtT
ZXNzaW9uQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvcik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0
aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3du
bG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZh
dWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Nlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25T
b3VwOjpOZXR3b3JrU2Vzc2lvblNvdXApOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
blNvdXA6OmNyZWF0ZVdlYlNvY2tldFRhc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Nlc3Npb25Tb3VwLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcDoKKyAgICAgICAgKHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
V2ViU29ja2V0VGFza1NvdXAuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGli
V2ViUlRDU29ja2V0Q2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTUROU1JlZ2lz
dGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ01vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDTW9uaXRv
cjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6
TmV0d29ya1JUQ1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVy
OjpjcmVhdGVTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6Ondy
YXBOZXdUQ1BDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNz
YWdlRW5jb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVz
c2FnZXNUaHJvdHRsaW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5j
TWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRX
aXRoQXN5bmNSZXBseSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAg
ICAgICAoSVBDOjpEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmMp
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICogUGxh
dGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29ubmVj
dGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6OmNyZWF0ZU1l
c3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2
ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXgu
Y3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpy
ZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9Nb2R1bGUuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdp
bkhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2lu
SW50ZXJuYWwpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAgICAgIChBUEk6
OlVSTDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6VVJMOjpwYXJzZVVSTElmTmVjZXNzYXJ5IGNv
bnN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24u
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbToKKyAg
ICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFnZTpdKToKKyAg
ICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2luaXRXaXRoV2ViUGFnZVByb3h5Ol0p
OgorICAgICAgICAoLVtfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBfc2VuZEludm9jYXRpb246aW50
ZXJmYWNlOl0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0
ZW0uY3BwOgorICAgICAgICAod2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKToKKyAgICAgICAg
KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAgICAgICAod2Via2l0X2NvbnRleHRf
bWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24pOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVu
dV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbik6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uX3dpdGhfbGFiZWwpOgorICAgICAgICAod2Vi
a2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUpOgorICAgICAgICAod2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3IpOgorICAgICAgICAqIFNoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBs
ZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOgor
ICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaDoK
KyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6dGV4bWFwTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RMYXllcik6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3Np
dG9yKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5o
OgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TlBSZW1vdGVPYmplY3RNYXA6OnJlZ2lzdGVyTlBPYmplY3QpOgorICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQpOgorICAgICAgICAq
IFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAg
ICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQ
cm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWly
by5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6Cisg
ICAgICAgICogU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElHZW9sb2NhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElIVFRQ
Q29va2llU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpIVFRQQ29va2llU3RvcmU6OnJlZ2lzdGVy
T2JzZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldEluamVjdGVk
QnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQpOgorICAg
ICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS0dlb2xvY2F0aW9uTWFu
YWdlclNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRp
b25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFn
ZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQpOgor
ICAgICAgICAoV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KToKKyAgICAgICAgKFdLUGFn
ZVNldFBhZ2VGb3JtQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW06CisgICAgICAg
ICgtW1dLT2JzZXJ2YWJsZVBhZ2VTdGF0ZSBpbml0V2l0aFBhZ2U6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2V0Vmlld0NsaWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBfaW5pdFdp
dGhQYWdlUmVmOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW06CisgICAgICAgICgtW1dLSFRUUENvb2tpZVN0b3JlIGFkZE9ic2VydmVyOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAg
KC1bV0tQcm9jZXNzUG9vbCBfc2V0RG93bmxvYWREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tQ
cm9jZXNzUG9vbCBfc2V0QXV0b21hdGlvbkRlbGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm5hbWU6XSk6CisgICAg
ICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpu
YW1lOnVzZXJDb250ZW50V29ybGQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0QWxsb3dzQmFja0ZvcndhcmROYXZp
Z2F0aW9uR2VzdHVyZXM6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0
ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9u
Lm1tOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBzZXREZWxlZ2F0ZTpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciBpbml0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnJlYWR5U1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uQ29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hDb250ZXh0TWVudUNsaWVu
dFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnRUb0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRE
b3dubG9hZENsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5j
cHA6CisgICAgICAgICh3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAod2Via2l0
RmluZENvbnRyb2xsZXJDb25zdHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZvcm1DbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoRm9ybUNsaWVudFRvVmlldyk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5j
cHA6CisgICAgICAgICh3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHA6CisgICAgICAg
IChhdHRhY2hJY29uTG9hZGluZ0NsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaElu
amVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Tm90aWZp
Y2F0aW9uUHJvdmlkZXI6OldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNo
VUlDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXIpOgorICAgICAgICAod2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVj
dGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwOgorICAg
ICAgICAod2Via2l0RW1vamlDaG9vc2VyU2V0dXBFbW9qaVNlY3Rpb25zKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRs
ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rv
ci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJJbnNwZWN0b3JDcmVhdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VHZXN0dXJl
Q29udHJvbGxlcik6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxl
cik6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcg
bWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdKToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRX
aXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUv
UGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFn
ZUNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJh
d2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVy
ZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoK
KyAgICAgICAgKFdLV1BFOjpWaWV3OjpWaWV3KToKKyAgICAgICAgKFdLV1BFOjpWaWV3OjpzZXRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHA6Cisg
ICAgICAgIChXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAo
V1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3
OjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZp
ZXdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdQRVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGlu
Z0RlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlOjpjcmVh
dGVJY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNyZWF0ZUNvbnRleHRNZW51Q2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6Y3JlYXRlVUlDbGllbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y3JlYXRlTWVk
aWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnN0YXJ0RGlzcGxheUxpbmspOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNyZWF0ZURyYXdp
bmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0VGV4dEluZGlj
YXRvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbnN1cmVHZXN0dXJlQ29udHJv
bGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6ZGlzcGF0Y2hB
ZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL0RldmljZUlkSGFzaFNh
bHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6
OmdldERhdGFGcm9tRGVjb2RlciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFz
aFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmljZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxsKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9H
YW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VUlHYW1lcGFk
UHJvdmlkZXI6OnNldEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyk6CisgICAgICAgIChXZWJLaXQ6
OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dGFrZVVwbG9hZEFzc2VydGlvbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBsdWdpblJlcXVpcmVzR3RrMik6CisgICAgICAg
ICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9j
ZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0VG9Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVidWdJbmRpY2F0b3IpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYyk6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90
ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVN
YWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNl
Lm1tOgorICAgICAgICAoV2ViS2l0OjpIaWRTZXJ2aWNlOjpkZXZpY2VBZGRlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyOjpzZXRGb2N1c2VkTWVkaWFFbGVtZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6bV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRGaW5kQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
ZXRGaW5kTWF0Y2hlc0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldElu
amVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXREcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xv
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0
RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0QXV0
b21hdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fkcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9y
Q2xpZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0FuZERyb3BI
YW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9EcmFn
QW5kRHJvcEhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3Np
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OmluaXRpYWxpemVF
R0wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tOgorICAg
ICAgICAoV2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFn
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1t
OgorICAgICAgICAoLVtXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcgZGlkTW92ZVRvV2lu
ZG93XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpj
b25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGluaXRXaXRoRnJhbWU6
cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjp3ZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9jcmVhdGVEcmF3aW5nQXJlYVByb3h5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBiZWNvbWVGaXJz
dFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVu
dERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2aW91c05vZGU6YWN0aXZpdHlTdGF0
ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9j
dXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1
dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVl
bi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
UGFnZUNsaWVudEltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ciBpbml0V2l0aFdpbmRvdzp3ZWJWaWV3OnBhZ2U6XSk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XS1RleHRGaW5kZXJDbGllbnQubW06CisgICAgICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBp
bml0V2l0aFBhZ2U6dmlldzp1c2VQbGF0Zm9ybUZpbmRVSTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAg
ICAgKiBVSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YktpdDo6QmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
d2luL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNw
cDoKKyAgICAgICAgKFdLQnVuZGxlU2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBh
Z2VTZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRFZGl0b3JD
bGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudCk6CisgICAgICAgIChX
S0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNl
dFJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VP
dmVybGF5LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5l
ck1hYy5tbToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxh
eWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9E
T01PYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldE9yQ3JlYXRlRE9NT2JqZWN0
Q2FjaGVGcmFtZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRF
eHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFu
YWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViRWRpdG9yQ3Jl
YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYkV4dGVuc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFn
ZS5jcHA6CisgICAgICAgICh3ZWJraXRGcmFtZUdldE9yQ3JlYXRlKToKKyAgICAgICAgKHdlYmtp
dFdlYlBhZ2VDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3Ig
aW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAg
ICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZv
cm1EZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlOjpzZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVh
bS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRp
bmdNZXNzYWdlOjpQZW5kaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENo
YW5uZWw6OnNlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENQcm92aWRlcjo6Y3Jl
YXRlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENT
b2NrZXRGYWN0b3J5OjpjcmVhdGVTZXJ2ZXJUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpM
aWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVVZHBTb2NrZXQpOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQpOgorICAgICAg
ICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29j
a2V0KToKKyAgICAgICAgKFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQXN5
bmNSZXNvbHZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5EZXN0cnVj
dGlvblByb3RlY3Rvcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzY2hlZHVsZVRpbWVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudCBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246Omluc3RhbGxTZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dPcmlnaW5UYWJsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNs
aWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRP
dmVycmlkZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjph
ZGRPdmVycmlkZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVn
SW5DbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dy
ZXNzVHJhY2tlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVy
UmVtb3RlOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1D
QUxheWVyUmVtb3RlOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fdGV4dEF1dG9TaXppbmdBZGp1c3RtZW50VGltZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmJlZ2luUHJpbnRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJh
dGlvbkd0azo6cHJpbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENv
bnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjp1cGRhdGVG
aW5kSW5kaWNhdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRp
Y2F0b3JPdmVybGF5Q2xpZW50SU9TLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9EcmF3aW5nQXJlYU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYzo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjplbnN1cmVBdXRvbWF0aW9uU2Vzc2lvblByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlcjo6U291cmNlOjpTb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZSk6CisKIDIwMTktMDgtMTQgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG1fYmxvY2tSZWN0Rm9yVGV4
dFNlbGVjdGlvbiAoYWxvbmcgd2l0aCByZWxhdGVkIGNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmlu
ZGV4IGQ3YmZmY2JkMzdiZmUyMjcxNzA4YTYzMmEzMWY5NDdiZmJjM2MxMWYuLjc4MWJlNDUzYTIw
YzJmZjQwZTBiYTRkZWRkZTRjOTljOTg0ZTk0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTktMDgtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKiBT
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVh
ZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVybWluYXRl
KToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAgICAoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIwMTktMDgtMTQgIFJ5
YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjI0ODUyNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2Yv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggYzYzZWZh
YmE1ZDg4NjgzYmVmYmYxNjk1OGZmMWZlMDAwNGVhOWM2Yi4uMTk2OTRiZDExMTE2YTYwZmMxM2Iw
MzFjNDg3NmRlYWVjMmM4ZDdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFz
dC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVGcm9udGVuZFNldHRpbmdzKToKKwogMjAxOS0wOC0x
MCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUkVHUkVTU0lPTihyMjQ4NDU0KTogV0sxIGluc3BlY3RvciBmcm9udGVuZCBjbGllbnQg
ZG9lc24ndCBxdWV1ZSBtZXNzYWdlcyB0byB0aGUgZnJvbnRlbmQgYmVmb3JlIGl0J3MgbG9hZGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKaW5kZXggODViZmU3ZmU3YWE0YzNmN2ZjYmIyZDcy
OGRiNWRlYTdhZGFiYThmZi4uYmI1NDBjMWU1YWUyYTg3YzYwNzE0ZmI5YmM1MjI2YzllZTgwNDRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4
LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0g
QWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
aXhlZFBvc2l0aW9uQ29udGVudC5tbToKKyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRl
bnQgc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczpzdGlja3lDb250YWluZXJNYXA6XSk6CisK
IDIwMTktMDctMjkgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29udGVudENoYW5nZU9ic2VydmVyXSBkaWRGaW5pc2hDb250ZW50Q2hhbmdlT2JzZXJ2aW5nIHNo
b3VsZCBpbmNsdWRlIHRoZSB0eXBlIG9mIGNvbnRlbnQgY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCmluZGV4IDAyYTFjZTdiYTY4ZWJkZDJlN2ZiM2FiZjg0YzNkYjY4ZDc0ODVlNmUu
LjljZDM1MWM1YmVkNzZjMzI4MDlmZTRjYmI2M2E2MWQ0MmQwOWFkNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NiBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+
LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAg
ICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBpbml0XSk6CisgICAgICAgICogSGlzdG9yeS9XZWJI
aXN0b3J5SXRlbS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeUl0ZW0gaW5pdEZyb21EaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5Ib3N0UHJveHkubW06CisgICAgICAgIChXS1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVw
bHkpOgorICAgICAgICAoV0tQQ0Jvb2xlYW5SZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhbkFu
ZERhdGFSZXBseSk6CisgICAgICAgIChXS1BDSW5zdGFudGlhdGVQbHVnaW5SZXBseSk6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lmg6CisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6
UHJveHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQpOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3Rh
bmNlOjpmaWVsZE5hbWVkKToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dyBjcmVhdGVQbHVnaW5dKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyLm1tOgorICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNv
Y29hLmg6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAg
ICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOnJl
cGVhdDp0aW1lckZ1bmM6XSk6CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQubW06CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRo
cmVhZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbToKKyAgICAgICAgKGFkZFJlZGlyZWN0VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2Nh
bEZyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1v
Y2subW06CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJh
bWUgX2F0dGFjaFNjcmlwdERlYnVnZ2VyXSk6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyLm1tOgorICAgICAgICAoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbToKKyAgICAgICAg
KC1bV2ViVGV4dEl0ZXJhdG9yIGluaXRXaXRoUmFuZ2U6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0
XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFt
ZTpncm91cE5hbWU6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTY3JpcHRUb0dyb3Vw
OndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDppbmplY3Rpb25UaW1lOmluamVj
dGVkRnJhbWVzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRVc2VyU3R5bGVTaGVldFRvR3Jv
dXA6d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGVkRnJhbWVzOl0p
OgorICAgICAgICAoLVtXZWJWaWV3IF9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAg
ICAgICAoLVtXZWJWaWV3IF9zZXRUZXh0SW5kaWNhdG9yOndpdGhMaWZldGltZTpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoV2ViVmlld0xheWVyRmx1c2hT
Y2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKToKKyAgICAgICAgKC1bV2ViVmll
d1ByaXZhdGUgaW5pdF0pOgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNDYwMzBiYjYzYjQ2ZjJmOTI4NTNmMDQ5NzM2
MDk1ZjMzNDIxYWE1YS4uNmQ4OWMwM2M3OWJiOTVjNWNlNmIxZDVlMzkzZmUxYThlMTJlZDNmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTA4LTE0
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRk
IG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaDoK
KyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6bG9hZCk6CisgICAgICAgICog
UGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6
OnduZFByb2MpOgorICAgICAgICAqIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpXZWJDaHJvbWVDbGllbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JD
bGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6
aGlnaGxpZ2h0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHA6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVs
ZW1lbnRQcm9wZXJ0eUJhZyk6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgorICAgICAg
ICAoV2ViSGlzdG9yeUl0ZW06OmluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwOgorICAg
ICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNzaW5nQ29udGV4
dCk6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmg6
CisgICAgICAgICogV2ViTm9kZUhpZ2hsaWdodC5oOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlv
bkNlbnRlci5jcHA6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNh
dGlvbkNlbnRlcik6CisgICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmg6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAg
ICAgICAgKFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUpOgorICAgICAgICAo
V2ViVmlldzo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQpOgorICAgICAgICAo
V2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNl
clN0eWxlU2hlZXRUb0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXc6OnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmcpOgorCiAyMDE5LTA4LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNDg1MjYuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cK
aW5kZXggM2YwZmIyZTFjZWVhZWYwNjU5YzM0YzgyNzFiZWVjMTA4MjM3NTZlZC4uNmUwMWRhYmNm
ODAwNzA5OTM3MDFiODYxZDNkZDM4OGUwNmQxNjg3NCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE5LTA4LTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFs
bG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBibWFsbG9jL0lzb0hlYXAuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg6
CisKIDIwMTktMDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbYm1hbGxvY10gQWRkIElzb0hlYXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJc29IZWFwIHBh
Z2VzIGFyZSBub3QgYWxsb2NhdGluZyB0b28gbGFyZ2UgVkEKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKaW5kZXggMDdkNzA5YmExMmM4MmM4NTQ4MmQ3M2M3
MjM3N2Y1MTllN2ZjMmE1Yy4uZDBlNjI1MjgyYTg0ZjRmMzVlZWRlZDE5NWVkYjhkYzg5N2IxYTU3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKQEAg
LTU4LDcgKzU4LDcgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIHsKICAgICB2b2lkIHNl
dFByaXZhdGVQcm9wZXJ0eShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9wcml2
YXRlUHJvcGVydGllcykKLSAgICAgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTUHJpdmF0ZVByb3BlcnR5TWFwPigpOworICAgICAgICAgICAgbV9wcml2YXRl
UHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7CiAgICAgICAg
IG1fcHJpdmF0ZVByb3BlcnRpZXMtPnNldFByaXZhdGVQcm9wZXJ0eSh2bSwgb3duZXIsIHByb3Bl
cnR5TmFtZSwgdmFsdWUpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggYWUzYTZmZTNhY2Y5
YzZhODAzOTRlMWQ3MzRmYTMxN2Q5MDhmYWUyYy4uOWNhM2I0YmY0MDg1MDc1MGI4YmM0MTk0OWY3
NTA0MmIzNTcyMzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50PiogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojphc0NhbGxiYWNr
T2JqZWN0KEVuY28KIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OkpTQ2FsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogICAgIDogUGFyZW50KGV4ZWMt
PnZtKCksIHN0cnVjdHVyZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91
bmlxdWU8SlNDYWxsYmFja09iamVjdERhdGE+KGRhdGEsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxs
YmFja09iamVjdERhdGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwganND
bGFzcykpCiB7CiB9CiAKQEAgLTY3LDcgKzY3LDcgQEAgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUK
IHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2Fs
bGJhY2tPYmplY3QoVk0mIHZtLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgIDogUGFyZW50KHZtLCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2NhbGxiYWNrT2JqZWN0
RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihudWxscHRyLCBqc0Ns
YXNzKSkKKyAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKG1ha2VVbmlxdWU8SlNDYWxsYmFja09i
amVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3MpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NsYXNzUmVmLmNwcAppbmRleCBmMWM5ZDU3MDJhOGFhNjkwNDRkZmIyOTViNDcxZmNm
Y2JjODkwYjZiLi43ZWVjMmE5MGE0NGY4NjBiYWEyMjc2Yjk2ZDQ1ZjJiZDY4NjE3MDgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKQEAgLTU5LDIxICs1OSwyMSBA
QCBPcGFxdWVKU0NsYXNzOjpPcGFxdWVKU0NsYXNzKGNvbnN0IEpTQ2xhc3NEZWZpbml0aW9uKiBk
ZWZpbml0aW9uLCBPcGFxdWVKU0NsYXNzKgogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAog
ICAgIGlmIChjb25zdCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZSA9IGRlZmluaXRpb24tPnN0
YXRpY1ZhbHVlcykgewotICAgICAgICBtX3N0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY1ZhbHVl
cyA9IG1ha2VVbmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOwogICAgICAg
ICB3aGlsZSAoc3RhdGljVmFsdWUtPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZU5h
bWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0YXRpY1ZhbHVlLT5uYW1lKTsKICAgICAgICAgICAgIGlm
ICghdmFsdWVOYW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGljVmFsdWVzLT5z
ZXQodmFsdWVOYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5Pihz
dGF0aWNWYWx1ZS0+Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3RhdGlj
VmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOworICAgICAgICAgICAgICAgIG1fc3RhdGlj
VmFsdWVzLT5zZXQodmFsdWVOYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5
PihzdGF0aWNWYWx1ZS0+Z2V0UHJvcGVydHksIHN0YXRpY1ZhbHVlLT5zZXRQcm9wZXJ0eSwgc3Rh
dGljVmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOwogICAgICAgICAgICAgKytzdGF0aWNW
YWx1ZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChjb25zdCBKU1N0YXRpY0Z1bmN0aW9u
KiBzdGF0aWNGdW5jdGlvbiA9IGRlZmluaXRpb24tPnN0YXRpY0Z1bmN0aW9ucykgewotICAgICAg
ICBtX3N0YXRpY0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRp
Y0Z1bmN0aW9uc1RhYmxlPigpOworICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucyA9IG1ha2VVbmlx
dWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwogICAgICAgICB3aGlsZSAo
c3RhdGljRnVuY3Rpb24tPm5hbWUpIHsKICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUg
PSBTdHJpbmc6OmZyb21VVEY4KHN0YXRpY0Z1bmN0aW9uLT5uYW1lKTsKICAgICAgICAgICAgIGlm
ICghZnVuY3Rpb25OYW1lLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIG1fc3RhdGljRnVuY3Rp
b25zLT5zZXQoZnVuY3Rpb25OYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNGdW5j
dGlvbkVudHJ5PihzdGF0aWNGdW5jdGlvbi0+Y2FsbEFzRnVuY3Rpb24sIHN0YXRpY0Z1bmN0aW9u
LT5hdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChm
dW5jdGlvbk5hbWUuaW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRp
Y0Z1bmN0aW9uLT5jYWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsK
ICAgICAgICAgICAgICsrc3RhdGljRnVuY3Rpb247CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjgs
MjEgKzEyOCwyMSBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE6Ok9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YShKU0M6OlZNJiwgT3BhcXVlSlNDbGFzcyoganNDbAogICAgIDogbV9jbGFzcyhqc0Ns
YXNzKQogewogICAgIGlmIChqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcykgewotICAgICAgICBzdGF0
aWNWYWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJs
ZT4oKTsKKyAgICAgICAgc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3Rh
dGljVmFsdWVzVGFibGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJs
ZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNWYWx1ZXMtPmVuZCgpOwog
ICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZTo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgpKTsKICAgICAgICAgICAg
IFN0cmluZyB2YWx1ZU5hbWUgPSBpdC0+a2V5LT5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgICAg
IHN0YXRpY1ZhbHVlcy0+YWRkKHZhbHVlTmFtZS5pbXBsKCksIHN0ZDo6bWFrZV91bmlxdWU8U3Rh
dGljVmFsdWVFbnRyeT4oaXQtPnZhbHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9w
ZXJ0eSwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKKyAgICAgICAgICAgIHN0
YXRpY1ZhbHVlcy0+YWRkKHZhbHVlTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8U3RhdGljVmFsdWVF
bnRyeT4oaXQtPnZhbHVlLT5nZXRQcm9wZXJ0eSwgaXQtPnZhbHVlLT5zZXRQcm9wZXJ0eSwgaXQt
PnZhbHVlLT5hdHRyaWJ1dGVzLCB2YWx1ZU5hbWUpKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucykgewotICAgICAgICBzdGF0aWNGdW5jdGlv
bnMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4o
KTsKKyAgICAgICAgc3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3Rh
dGljRnVuY3Rpb25zVGFibGU+KCk7CiAgICAgICAgIE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlv
bnNUYWJsZTo6Y29uc3RfaXRlcmF0b3IgZW5kID0ganNDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMt
PmVuZCgpOwogICAgICAgICBmb3IgKE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZTo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5rZXktPmlzQXRvbSgp
KTsKLSAgICAgICAgICAgIHN0YXRpY0Z1bmN0aW9ucy0+YWRkKGl0LT5rZXktPmlzb2xhdGVkQ29w
eSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KGl0LT52YWx1ZS0+Y2Fs
bEFzRnVuY3Rpb24sIGl0LT52YWx1ZS0+YXR0cmlidXRlcykpOworICAgICAgICAgICAgc3RhdGlj
RnVuY3Rpb25zLT5hZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIG1ha2VVbmlxdWU8U3RhdGlj
RnVuY3Rpb25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRy
aWJ1dGVzKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgT3BhcXVl
SlNDbGFzc0NvbnRleHREYXRhJiBPcGFxdWVKU0NsYXNzOjpjb250ZXh0RGF0YShFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4m
IGNvbnRleHREYXRhID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vcGFxdWVKU0NsYXNz
RGF0YSgpLmFkZCh0aGlzLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFjb250
ZXh0RGF0YSkKLSAgICAgICAgY29udGV4dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUpT
Q2xhc3NDb250ZXh0RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CisgICAgICAgIGNvbnRleHREYXRh
ID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+KGV4ZWMtPnZtKCksIHRoaXMp
OwogICAgIHJldHVybiAqY29udGV4dERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKaW5kZXggZDll
ZTY3NDAzNDljZmVmZGZiY2MwZDMxMDk0ZjFmNGRlNWE1MmMxZS4uYmE0YTVhMTY2OTdhZjVmOGE5
NzIyZTU3NDY5ZTM5NGQ5NzkwNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgdm9pZCBKU0NvbnRleHRHcm91cEFkZE1hcmtpbmdDb25zdHJhaW50KEpTQ29udGV4dEdyb3Vw
UmVmIGdyb3VwLCBKU01hcmtpbmdDb25zdHIKICAgICAvLyBlbHNlIGdldHMgbWFya2VkLgogICAg
IENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkgPSBDb25zdHJhaW50Vm9sYXRpbGl0eTo6
R3JleWVkQnlNYXJraW5nOwogICAgIAotICAgIGF1dG8gY29uc3RyYWludCA9IHN0ZDo6bWFrZV91
bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KAorICAgIGF1dG8gY29uc3RyYWludCA9IG1h
a2VVbmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KAogICAgICAgICB0b0NTdHJpbmcoIkFt
YyIsIGNvbnN0cmFpbnRJbmRleCwgIigiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
Y29uc3RyYWludENhbGxiYWNrKSksICIpIiksCiAgICAgICAgIHRvQ1N0cmluZygiQVBJIE1hcmtp
bmcgQ29uc3RyYWludCAjIiwgY29uc3RyYWludEluZGV4LCAiICgiLCBSYXdQb2ludGVyKGJpdHdp
c2VfY2FzdDx2b2lkKj4oY29uc3RyYWludENhbGxiYWNrKSksICIsICIsIFJhd1BvaW50ZXIodXNl
ckRhdGEpLCAiKSIpLAogICAgICAgICBbY29uc3RyYWludENhbGxiYWNrLCB1c2VyRGF0YV0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KaW5kZXggZDQ2OWI3NWEzMWYw
ZWZjYTlkMDdhYmIwM2IwYmU2NjE2MWIzOTU2Ny4uNGI1OTkwNzNmZTc2YjQ4NjQ0MzY5OWFiZGNi
MzRjNDE2NGJjMmUzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dy
YXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0KQEAgLTYwNiw3ICs2MDYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhHbG9iYWxDb250
ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpY29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9u
c09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5T
UG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIG1fY2FjaGVkT2JqQ1dyYXBw
ZXJzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2
YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBdOwogCi0gICAgbV9jYWNoZWRKU1dy
YXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFp
bmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7CisgICAgbV9jYWNo
ZWRKU1dyYXBwZXJzID0gbWFrZVVuaXF1ZTxKU0M6OldlYWtHQ01hcDxfX3Vuc2FmZV91bnJldGFp
bmVkIGlkLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhjb250ZXh0KS0+dm0oKSk7CiAKICAgICBBU1NF
UlQoIXRvSlNHbG9iYWxPYmplY3QoY29udGV4dCktPndyYXBwZXJNYXAoKSk7CiAgICAgdG9KU0ds
b2JhbE9iamVjdChjb250ZXh0KS0+c2V0V3JhcHBlck1hcChzZWxmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IGVlOTMyODIx
ZWY3NGJkNjg5MWFlOGYyOWZhZDdiYmE1YWZlYTBjYmMuLjczY2I0MjcwNDM4MTgzMWU4MTlkOWQ5
NDNlYjllNTQ0MDMwOTZmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9P
YmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQpAQCAtMTk1LDE4ICsxOTUsMTggQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUludGVnZXIo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVu
dEludGVnZXI8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1l
bnRJbnRlZ2VyPFQ+PigpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAg
c3RhdGljIFJlc3VsdFR5cGUgdHlwZURvdWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50RG91YmxlPFQ+PigpOwogICAgIH0KIAogICAg
IHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRCb29sZWFuPigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50Qm9vbGVhbj4oKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlVm9pZCgpCkBAIC0yMTcsNyArMjE3LDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q2FsbGJhY2tBcmd1bWVudElkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRU
eXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpCkBAIC0y
MjgsMTkgKzIyOCwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICBpZiAoY2xzID09IFtKU1ZhbHVlIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRKU1ZhbHVlPigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEpTVmFsdWU+KCk7CiAgICAgICAgIGlm
IChjbHMgPT0gW05TU3RyaW5nIGNsYXNzXSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxiYWNrQXJndW1lbnROU1N0cmluZz4oKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU1N0cmluZz4oKTsKICAgICAgICAgaWYgKGNscyA9
PSBbTlNOdW1iZXIgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TTnVtYmVyPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsbGJhY2tBcmd1bWVudE5TTnVtYmVyPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0Rh
dGUgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tB
cmd1bWVudE5TRGF0ZT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNr
QXJndW1lbnROU0RhdGU+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TQXJyYXkgY2xhc3NdKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TQXJy
YXk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNB
cnJheT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNEaWN0aW9uYXJ5IGNsYXNzXSkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25h
cnk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNE
aWN0aW9uYXJ5PigpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNr
QXJndW1lbnRPZkNsYXNzPihjbHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFj
a0FyZ3VtZW50T2ZDbGFzcz4oY2xzKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0
eXBlQmxvY2soY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQpAQCAtMjUyLDcgKzI1Miw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIFN0cmluZ1JhbmdlIGNvcHkoYmVnaW4sIGVuZCk7CiAgICAg
ICAgIGlmIChOU0ludm9jYXRpb24gKmludm9jYXRpb24gPSB2YWx1ZVRvVHlwZUludm9jYXRpb25G
b3IoY29weSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0Fy
Z3VtZW50U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENhbGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9OwpAQCAtMzM1LDQ1ICszMzUsNDUgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlu
dGVnZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tS
ZXN1bHROdW1lcmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jl
c3VsdE51bWVyaWM8VD4+KCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlRG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOwogICAgIH0KIAogICAg
IHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCb29sKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0Qm9vbGVhbj4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRCb29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZXN1bHRUeXBlIHR5cGVWb2lkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENhbGxiYWNrUmVzdWx0Vm9pZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bGJhY2tSZXN1bHRWb2lkPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVJ
ZCgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3Vs
dElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdElkPigpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVPZkNsYXNzKGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxi
YWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0
SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJsb2NrKGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKikKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNr
UmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVN0cnVjdChj
b25zdCBjaGFyKiBiZWdpbiwgY29uc3QgY2hhciogZW5kKQogICAgIHsKICAgICAgICAgU3RyaW5n
UmFuZ2UgY29weShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2Nh
dGlvbiA9IHR5cGVUb1ZhbHVlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0PihpbnZvY2F0aW9uLCBjb3B5
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0U3RydWN0Pihp
bnZvY2F0aW9uLCBjb3B5KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfTsKQEAg
LTY2Miw3ICs2NjIsNyBAQCBzdGF0aWMgSlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25G
b3JJbnZvY2F0aW9uKEpTQ29udGV4dCAqY29udGV4dCwgTlNJbnZvYwogICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gdG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKICAgICBKU0M6
OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsK
LSAgICBhdXRvIGltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rp
b25JbXBsPihpbnZvY2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50
cyksIFdURk1vdmUocmVzdWx0KSk7CisgICAgYXV0byBpbXBsID0gbWFrZVVuaXF1ZTxKU0M6Ok9i
akNDYWxsYmFja0Z1bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywg
V1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIGNvbnN0IFN0cmluZyYg
bmFtZSA9IGltcGwtPm5hbWUoKTsKICAgICByZXR1cm4gdG9SZWYoSlNDOjpPYmpDQ2FsbGJhY2tG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG5hbWUsIFdU
Rk1vdmUoaW1wbCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NDb250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcAppbmRleCBlMDFlOTcwYzdmNTgwMzY1NjE4ZWYxZGFiODU1NDRkNzA0ZjliNDdh
Li43OGQ3NjU1ZmY4MDc3NjBkNDYwOGE2MTdlNTdjOTBmMTU0Mjc5OWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAgc3RhdGljIHZvaWQganNjQ29udGV4dFNldFZpcnR1YWxNYWNoaW5lKEpTQ0NvbnRleHQqIGNv
bnRleHQsIEdSZWZQdHI8SlNDVmlydHVhbE0KICAgICAgICAgICAgIHByaXYtPmpzQ29udGV4dCA9
IEpTUmV0YWluUHRyPEpTR2xvYmFsQ29udGV4dFJlZj4oQWRvcHQsIEpTR2xvYmFsQ29udGV4dENy
ZWF0ZUluR3JvdXAoanNjVmlydHVhbE1hY2hpbmVHZXRDb250ZXh0R3JvdXAocHJpdi0+dm0uZ2V0
KCkpLCBudWxscHRyKSk7CiAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRvSlNHbG9iYWxP
YmplY3QocHJpdi0+anNDb250ZXh0LmdldCgpKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3Qt
PndyYXBwZXJNYXAoKSkKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0V3JhcHBlck1hcChz
dGQ6Om1ha2VfdW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgpKSk7
CisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnNldFdyYXBwZXJNYXAobWFrZVVuaXF1ZTxKU0M6
OldyYXBwZXJNYXA+KHByaXYtPmpzQ29udGV4dC5nZXQoKSkpOwogICAgICAgICBqc2NWaXJ0dWFs
TWFjaGluZUFkZENvbnRleHQocHJpdi0+dm0uZ2V0KCksIGNvbnRleHQpOwogICAgIH0gZWxzZSBp
ZiAocHJpdi0+dm0pIHsKICAgICAgICAgQVNTRVJUKHByaXYtPmpzQ29udGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKaW5kZXggMTFi
YjdjMGI4NzM3ZGI2N2RkMTdkY2QyNGY3MDI5NDM0NDY5YTgwMy4uZjUyM2VhNDE5OWY4YWJkNzMy
Zjc3YjYyODE0MTIwMTM0YmI4YmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIFdyYXBwZXJNYXA6OldyYXBwZXJNYXAoSlNHbG9iYWxDb250ZXh0UmVmIGpzQ29udGV4
dCkKLSAgICA6IG1fY2FjaGVkSlNXcmFwcGVycyhzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vha0dD
TWFwPGdwb2ludGVyLCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKKyAg
ICA6IG1fY2FjaGVkSlNXcmFwcGVycyhtYWtlVW5pcXVlPEpTQzo6V2Vha0dDTWFwPGdwb2ludGVy
LCBKU0M6OkpTT2JqZWN0Pj4odG9KUyhqc0NvbnRleHQpLT52bSgpKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKaW5kZXggYTc1ZjU4
ZGMxNDZiM2I2NDk1Y2ViMTY3YWRmNGRhYmZmMDZiMGM4OS4uZGE0NzcwNTFmMzQ1ZTA3MTY4ZmM3
ZDA2ZTBjN2Y1MjYzMTE4NmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Qcm9iZVN0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgUGFnZSogU3RhY2s6OmVuc3Vy
ZVBhZ2VGb3Iodm9pZCogYWRkcmVzcykKICAgICBpZiAoTElLRUxZKGl0ICE9IG1fcGFnZXMuZW5k
KCkpKQogICAgICAgICBtX2xhc3RBY2Nlc3NlZFBhZ2UgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBwYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBw
YWdlID0gbWFrZVVuaXF1ZTxQYWdlPihiYXNlQWRkcmVzcyk7CiAgICAgICAgIGF1dG8gcmVzdWx0
ID0gbV9wYWdlcy5hZGQoYmFzZUFkZHJlc3MsIFdURk1vdmUocGFnZSkpOwogICAgICAgICBtX2xh
c3RBY2Nlc3NlZFBhZ2UgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggZGJhYTRjOTkwYWQ0
OGYwM2Y0YTc1MWM5ZTQwZjlmNmE2ZmYwNDgzOS4uM2NjNzVjMzRhNTEzZjJmNmZiNDk2MjFhZmE4
ODdhYmJlMjU5NDE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAKQEAgLTEyNDEsNyArMTI0MSw3IEBAIGNsYXNzIExvd2VyVG9BaXIgewogICAgIHZvaWQgcHJp
bnQoVmFsdWUqIG9yaWdpbiwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKICAgICAg
ICAgYXV0byBwcmludExpc3QgPSBQcmludGVyOjptYWtlUHJpbnRSZWNvcmRMaXN0KGFyZ3VtZW50
cy4uLik7Ci0gICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QWlyOjpQcmlu
dFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEFpcjo6UHJpbnRT
cGVjaWFsPihwcmludExpc3QpKSk7CisgICAgICAgIGF1dG8gcHJpbnRTcGVjaWFsID0gc3RhdGlj
X2Nhc3Q8QWlyOjpQcmludFNwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEFp
cjo6UHJpbnRTcGVjaWFsPihwcmludExpc3QpKSk7CiAgICAgICAgIEluc3QgaW5zdChBaXI6OlBh
dGNoLCBvcmlnaW4sIEFyZzo6c3BlY2lhbChwcmludFNwZWNpYWwpKTsKICAgICAgICAgUHJpbnRl
cjo6YXBwZW5kQWlyQXJncyhpbnN0LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMp
Li4uKTsKICAgICAgICAgYXBwZW5kKFdURk1vdmUoaW5zdCkpOwpAQCAtMTMwOCw3ICsxMzA4LDcg
QEAgY2xhc3MgTG93ZXJUb0FpciB7CiAgICAgewogICAgICAgICBpZiAoIWZpZWxkKSB7CiAgICAg
ICAgICAgICBmaWVsZCA9IHN0YXRpY19jYXN0PFQqPigKLSAgICAgICAgICAgICAgICBtX2NvZGUu
YWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pKSk7CisgICAgICAgICAgICAgICAgbV9jb2RlLmFkZFNwZWNpYWwobWFrZVVu
aXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKSkpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmaWVsZDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmNwcAppbmRleCBmZmNiMmQ0ZTI3MTQ0Mjk3MGU1NDY0MzY2NzBmN2YyOWRl
YjFhYjFjLi4yZWNjZGFjMDQ5ZTY4ZDExM2UyM2Y5N2YyNDM1M2E1ZDRhYWEzYjk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiBQcm9jZWR1cmU6OlByb2NlZHVyZSgpCiAgICAg
OiBtX2NmZyhuZXcgQ0ZHKCp0aGlzKSkKICAgICAsIG1fbGFzdFBoYXNlTmFtZSgiaW5pdGlhbCIp
Ci0gICAgLCBtX2J5cHJvZHVjdHMoc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigp
KQorICAgICwgbV9ieXByb2R1Y3RzKG1ha2VVbmlxdWU8T3BhcXVlQnlwcm9kdWN0cz4oKSkKICAg
ICAsIG1fY29kZShuZXcgQWlyOjpDb2RlKCp0aGlzKSkKIHsKICAgICBtX2NvZGUtPnNldE51bUVu
dHJ5cG9pbnRzKG1fbnVtRW50cnlwb2ludHMpOwpAQCAtMzExLDI4ICszMTEsMjggQEAgdm9pZCBQ
cm9jZWR1cmU6OmRlbGV0ZU9ycGhhbnMoKQogRG9taW5hdG9ycyYgUHJvY2VkdXJlOjpkb21pbmF0
b3JzKCkKIHsKICAgICBpZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0g
c3RkOjptYWtlX3VuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fZG9taW5hdG9y
cyA9IG1ha2VVbmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9kb21pbmF0
b3JzOwogfQogCiBOYXR1cmFsTG9vcHMmIFByb2NlZHVyZTo6bmF0dXJhbExvb3BzKCkKIHsKICAg
ICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgICAgIG1fbmF0dXJhbExvb3BzID0g
bWFrZVVuaXF1ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbmF0dXJhbExv
b3BzOwogfQogCiBCYWNrd2FyZHNDRkcmIFByb2NlZHVyZTo6YmFja3dhcmRzQ0ZHKCkKIHsKICAg
ICBpZiAoIW1fYmFja3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0g
bWFrZVVuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRz
Q0ZHOwogfQogCiBCYWNrd2FyZHNEb21pbmF0b3JzJiBQcm9jZWR1cmU6OmJhY2t3YXJkc0RvbWlu
YXRvcnMoKQogewogICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0b3JzKQotICAgICAgICBtX2Jh
Y2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+
KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNr
d2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRv
cnM7CiB9CiAKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkKiBQcm9jZWR1cmU6OmFkZERhdGFTZWN0
aW9uKHNpemVfdCBzaXplKQogewogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8RGF0YVNlY3Rpb24+KHNpemUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRh
U2VjdGlvbj4gZGF0YVNlY3Rpb24gPSBtYWtlVW5pcXVlPERhdGFTZWN0aW9uPihzaXplKTsKICAg
ICB2b2lkKiByZXN1bHQgPSBkYXRhU2VjdGlvbi0+ZGF0YSgpOwogICAgIG1fYnlwcm9kdWN0cy0+
YWRkKFdURk1vdmUoZGF0YVNlY3Rpb24pKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKaW5kZXggMzNmOGFiZmVmYmMxZjhmOTE2NTQ1
YTNiZGNhMTk2YjBjYzY2YzM5OC4uZDVkNjljMzBhNTk5MTc1ZjI4MTQ4MzYyODYzNmZjYjc3MDY4
MDE2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCkBAIC0xNzks
NyArMTc5LDcgQEAgQ0NhbGxTcGVjaWFsKiBDb2RlOjpjQ2FsbFNwZWNpYWwoKQogewogICAgIGlm
ICghbV9jQ2FsbFNwZWNpYWwpIHsKICAgICAgICAgbV9jQ2FsbFNwZWNpYWwgPSBzdGF0aWNfY2Fz
dDxDQ2FsbFNwZWNpYWwqPigKLSAgICAgICAgICAgIGFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1
ZTxDQ2FsbFNwZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIGFkZFNwZWNpYWwobWFrZVVuaXF1ZTxD
Q2FsbFNwZWNpYWw+KCkpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jQ2FsbFNwZWNpYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IGYzNmI5
YjJmZTY2ODE2MGI4ODk5YjBjNTBiMzE5N2Q3NTg4MjRmODAuLjk1Y2FhMDA0ZDhlYjM5MjMzMGUx
Y2NiYjYzOWE1Y2VlNzljYmM3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyR2VuZXJhdGUuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJh
dGlvbihDb2RlJiBjb2RlKQogICAgICAgICAgICAgZGF0YUxvZyhjb2RlKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzPihjb2RlKTsKKyAgICAgICAgY29k
ZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMgPSBtYWtlVW5pcXVlPEdlbmVyYXRlQW5k
QWxsb2NhdGVSZWdpc3RlcnM+KGNvZGUpOwogICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxv
Y2F0ZVJlZ2lzdGVycy0+cHJlcGFyZUZvckdlbmVyYXRpb24oKTsKIAogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcAppbmRleCBlZjE1NDRjMDdi
YjMyYTkwMzdmMmNiNzFlMTVlNzRhOWJlNjFiZjk0Li4zZGNhMjk2Nzg4YjAwMTA2OGUwMWY0MjNl
MTE2YzdjMmE0ZTdkYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L3Rlc3RhaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5j
cHAKQEAgLTkwLDcgKzkwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEIzOjpDb21waWxhdGlvbj4gY29t
cGlsZShCMzo6UHJvY2VkdXJlJiBwcm9jKQogICAgIGdlbmVyYXRlKHByb2MuY29kZSgpLCBqaXQp
OwogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIG51bGxwdHIpOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIz
Q29tcGlsYXRpb25QdHJUYWcsICJ0ZXN0YWlyIGNvbXBpbGF0aW9uIiksIHByb2MucmVsZWFzZUJ5
cHJvZHVjdHMoKSk7CiB9CiAKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgdGVzdEludmFsaWRh
dGVDYWNoZWRUZW1wUmVnaXN0ZXJzKCkKICAgICByb290LT5hcHBlbmQoTW92ZSwgbnVsbHB0ciwg
QXJnOjpiaWdJbW0oYml0d2lzZV9jYXN0PGludHB0cl90PigmdGhpbmdzKSksIGJhc2UpOwogCiAg
ICAgQjM6OkJhc2ljQmxvY2sqIHBhdGNoUG9pbnQxUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAg
ICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChz
dGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6
U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxC
Mzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgLy8gSW4gUGF0Y2hwb2ludCwgTG9hZCB0
aGluZ3NbMF0gLT4gdG1wLiBUaGlzIHdpbGwgbWF0ZXJpYWxpemUgdGhlIGFkZHJlc3MgaW4geDE3
IChkYXRhTWVtb3J5UmVnaXN0ZXIpLgogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQxID0gcGF0Y2hQb2ludDFSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0xOTMwLDcgKzE5MzAsNyBAQCB2b2lkIHRl
c3RBcmd1bWVudFJlZ1Bpbm5lZCgpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpT
cGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5p
cXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0
Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2lu
dFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBl
bmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7
CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDIoKQogICAg
IEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdp
c3RlcihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwg
PSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRT
cGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpC
YXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+
KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgdm9p
ZCB0ZXN0QXJndW1lbnRSZWdQaW5uZWQzKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6
YXJndW1lbnRHUFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpB
aXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFr
ZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFs
KiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRj
aHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5h
ZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3Qt
PmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdp
bigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCBjZTUzOGFiNDgyM2NhYmIxMjM0
MDc1Y2M4ZmNkNzgwMTUyOGEwYTI3Li4xYzA3MGQxNzllZDM5YmY2ZGRmMDFlM2JiMzNjYjY0OWMz
ZmI3MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC0xODksNyArMTg5LDcgQEAg
ZXh0ZXJuIExvY2sgY3Jhc2hMb2NrOwogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlv
bj4gY29tcGlsZVByb2MoUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsID0g
T3B0aW9uczo6ZGVmYXVsdEIzT3B0TGV2ZWwoKSkKIHsKICAgICBwcm9jZWR1cmUuc2V0T3B0TGV2
ZWwob3B0TGV2ZWwpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPihC
Mzo6Y29tcGlsZShwcm9jZWR1cmUpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb21waWxhdGlv
bj4oQjM6OmNvbXBpbGUocHJvY2VkdXJlKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAppbmRleCBjMTA4NTlhY2VkM2RiNzhiNjY0OTc2YTA4YjhlNWI0OGQ2NTJi
MmYzLi43N2ZiNjVkYTBiN2EwNmM3ZDY1OGJhYmRiNGU1MTA4YTc5MTdlZWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCkBAIC04NTMsNyArODUz
LDcgQEAgdm9pZCBBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZXJhdGlvblN0YXRl
JiBzdGF0ZSkKICAgICAgICAgICAgIHN0YXRlLnNldFNwaWxsU3RhdGVGb3JKU0dldHRlclNldHRl
cihzcGlsbFN0YXRlKTsKIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFjY2Vzcy5jYWxs
TGlua0luZm8oKSk7Ci0gICAgICAgICAgICBhY2Nlc3MubV9jYWxsTGlua0luZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxMaW5rSW5mbz4oKTsKKyAgICAgICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5r
SW5mbyA9IG1ha2VVbmlxdWU8Q2FsbExpbmtJbmZvPigpOwogCiAgICAgICAgICAgICAvLyBGSVhN
RTogSWYgd2UgZ2VuZXJhdGVkIGEgcG9seW1vcnBoaWMgY2FsbCBzdHViIHRoYXQganVtcGVkIGJh
Y2sgdG8gdGhlIGdldHRlcgogICAgICAgICAgICAgLy8gc3R1Yiwgd2hpY2ggdGhlbiBqdW1wZWQg
YmFjayB0byB0aGUgbWFpbiBjb2RlLCB0aGVuIHdlJ2QgaGF2ZSBhIHJlYWNoYWJpbGl0eQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0
UGFyYW1zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25p
cHBldFBhcmFtcy5jcHAKaW5kZXggMmJkOWZlNjUxOTlkMDdmMTczZTM4MzBkYzc0ZTQ2N2ViOWQ1
NDFmYy4uOTI1N2ZjMjI2NjUyOWY4NjEzN2Q1ZGFkOGM5MjQ5NzE4MzkwNDc0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBw
ZXRQYXJhbXMuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgU2xvd1BhdGhDYWxsR2VuZXJh
dG9yV2l0aEFyZ3VtZW50cyA6IHB1YmxpYyBBY2Nlc3NDYXNlU25pcHBldFBhcmFtczo6U2xvd1AK
ICAgICB2b2lkIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjphZGRTbG93UGF0aENhbGxJbXBsKEND
YWxsSGVscGVyczo6SnVtcExpc3QgZnJvbSwgQ0NhbGxIZWxwZXJzJiBqaXQsIE9wZXJhdGlvblR5
cGUgb3BlcmF0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdCwgc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz4g
YXJncykgXAogICAgIHsgXAogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHRvID0gaml0Lmxh
YmVsKCk7IFwKLSAgICAgICAgbV9nZW5lcmF0b3JzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNs
b3dQYXRoQ2FsbEdlbmVyYXRvcldpdGhBcmd1bWVudHM8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCwg
T3BlcmF0aW9uVHlwZSwgUmVzdWx0VHlwZSwgX19WQV9BUkdTX18+Pihmcm9tLCB0bywgb3BlcmF0
aW9uLCByZXN1bHQsIGFyZ3MpKTsgXAorICAgICAgICBtX2dlbmVyYXRvcnMuYXBwZW5kKG1ha2VV
bmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1
bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRv
LCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBcCiAgICAgfSBcCiAKIFNOSVBQRVRfU0xPV19Q
QVRIX0NBTExTKEpTQ19ERUZJTkVfQ0FMTF9PUEVSQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCAzM2Ji
MGMwNjYzNTM4MWU4OThmNjVhODc0ZjFmMzZhOGM5NDgyM2FmLi4xMGM2NWJiOWRkNzA5YTlhZjdh
YmE2Y2ViOGE5YjczNTk3NzE2NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNjUsMTUgKzY1LDE1IEBAIHZv
aWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9jayogY29kZUJsb2NrLCBjb25z
dCBJbnN0cnVjdGlvblN0cmVhbSYKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJh
c2ljIGJsb2Nrcy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMu
c2l6ZSgpICsgMik7CiAKLSAgICBhdXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29k
ZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7Ci0gICAgYXV0byBm
aXJzdEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2Rl
QmFzaWNCbG9jazo6RW50cnlCbG9jayk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2spOworICAgIGF1
dG8gZmlyc3RCbG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJh
c2ljQmxvY2s6OkVudHJ5QmxvY2spOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0
QmxvY2suZ2V0KCkpOwogCiAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZpcnN0QmxvY2suZ2V0KCk7CiAgICAgYXBwZW5k
QmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7CiAKLSAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2sp
OworICAgIGF1dG8gZXhpdCA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29k
ZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVh
ZGVyID0gZmFsc2U7CiAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgog
ICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwogICAgICAgICAvLyBJZiB0aGUgY3Vy
cmVudCBieXRlY29kZSBpcyBhIGp1bXAgdGFyZ2V0LCB0aGVuIGl0J3MgdGhlIGxlYWRlciBvZiBp
dHMgb3duIGJhc2ljIGJsb2NrLgogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBq
dW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7
Ci0gICAgICAgICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJh
c2ljQmxvY2s+KGluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBtYWtl
VW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgY3Vy
cmVudCA9IG5ld0Jsb2NrLmdldCgpOwogICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShu
ZXdCbG9jaykpOwogICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAKaW5kZXggZDhkYWMxNTg1
ZmFiMmI5OThjMWU1ZDg4NzUyYmExMmRmNmRhZGJkZS4uMzkzZjE4MjRlNDFhNGJlYjUxNGM2MmE2
OTZmMzNhODM3MjQ5NWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6
dmlzaXRXZWFrKFZNJiB2bSkKIAogdm9pZCBDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURh
dGEoY29uc3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEmIHNodWZmbGVEYXRhKQogewotICAgIG1fZnJh
bWVTaHVmZmxlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNo
dWZmbGVEYXRhKTsKKyAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFt
ZVNodWZmbGVEYXRhPihzaHVmZmxlRGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBlZjFjYWJm
YTcxOGIwODBkN2YzZTg2MzdmOWY5NGY2MDU4NmVlNGU4Li4zOWEyM2I0YzdmNDdkOGZjZTVlMzBl
ZWNhNTUwZTc3ZGFkMzE1ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFs
aXplTExJbnRJbmxpbmVDYWNoZXMoKQogQ29kZUJsb2NrOjpKSVREYXRhJiBDb2RlQmxvY2s6OmVu
c3VyZUpJVERhdGFTbG93KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiB7CiAgICAgQVNTRVJU
KCFtX2ppdERhdGEpOwotICAgIG1faml0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGF0YT4o
KTsKKyAgICBtX2ppdERhdGEgPSBtYWtlVW5pcXVlPEpJVERhdGE+KCk7CiAgICAgcmV0dXJuICpt
X2ppdERhdGE7CiB9CiAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6
cmFyZUNhc2VQcm9maWxlQ291bnRGb3JCeXRlY29kZU9mZnNldChjb25zdCBDb25jdXJyZW50SlNM
b2NrCiB2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNldCBj
YWxsZWVTYXZlUmVnaXN0ZXJzKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsKLSAgICBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0g
c3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVy
cyk7CisgICAgZW5zdXJlSklURGF0YShsb2NrZXIpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IG1h
a2VVbmlxdWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KGNhbGxlZVNhdmVSZWdpc3RlcnMpOwogfQog
CiB2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8
UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyQXRPZmZzZXRMaXN0KQpAQCAtMTc5MCw3ICsx
NzkwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KGNvbnN0IE9wQ2F0Y2gKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bVBhcmFtZXRlcnMoKTsgKytpKQogICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKIAotICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXpl
KCkpOworICAgIGF1dG8gcHJvZmlsZXMgPSBtYWtlVW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHByb2Zp
bGVzLT5tX3NpemUgPT0gbGl2ZU9wZXJhbmRzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKICAgICAgICAgcHJvZmlsZXMtPm1fYnVm
ZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA4NzA2OGJhNjVkZDg1
YzIzZmJlNGE0OTBlOTc0YTcyODFmMjU2MDRjLi4zMTQzOGUwYWM1MDY5YjI3NDk2OTg4ODZhYjEx
MjAwNzZiY2I3M2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCkBAIC05NDMsNyArOTQzLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7CiAgICAgICAgIGlm
ICghbV9yYXJlRGF0YSkgewotICAgICAgICAgICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgICAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1
ZTxSYXJlRGF0YT4oKTsKICAgICAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IC8vIG1f
Y2F0Y2hQcm9maWxlcyBjYW4gYmUgdG91Y2hlZCBmcm9tIGNvbXBpbGVyIHRocmVhZHMuCiAgICAg
ICAgICAgICBtX3JhcmVEYXRhID0gV1RGTW92ZShyYXJlRGF0YSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCmluZGV4
IDJkOTQzMWNmMGIxNDRmYTNhMmMyMjFhNjZlOTQwNzBjNzc1MGUwZTAuLmIxYTAxZmZhNGQ5MzQ4
ZmVjYjI0Yzk2ODhiYzgwMDUyZjkzODg2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBib29sIEV4
aXRQcm9maWxlOjphZGQoQ29kZUJsb2NrKiBvd25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYg
c2l0ZSkKICAgICAvLyBJZiB3ZSd2ZSBuZXZlciBzZWVuIGFueSBmcmVxdWVudCBleGl0cyB0aGVu
IGNyZWF0ZSB0aGUgbGlzdCBhbmQgcHV0IHRoaXMgc2l0ZQogICAgIC8vIGludG8gaXQuCiAgICAg
aWYgKCFwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMpIHsKLSAgICAgICAgcHJvZmlsZS5tX2Zy
ZXF1ZW50RXhpdFNpdGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0
ZT4+KCk7CisgICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcyA9IG1ha2VVbmlxdWU8
VmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+PigpOwogICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRF
eGl0U2l0ZXMtPmFwcGVuZChzaXRlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrLmNwcAppbmRleCA0ZjQ4YTFkNmM5ODcyMmU1YWMyZWNlODdlNTA0
MDIzMmY5YTVkNmIxLi40ZmIxMTU3MzAwM2I1MmVmZDlhODY2ZmIzYmRmNzc1MDk4Y2VmYWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZShDb2RlQmxvY2sq
LCBDb2RlQmxvY2sqLAogVmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4mIERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjazo6ZW5zdXJlRGVmZXJyZWRTb3VyY2VEdW1wKCkKIHsKICAgICBpZiAoIW1f
ZGVmZXJyZWRTb3VyY2VEdW1wKQotICAgICAgICBtX2RlZmVycmVkU291cmNlRHVtcCA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPERlZmVycmVkU291cmNlRHVtcD4+KCk7CisgICAgICAgIG1fZGVm
ZXJyZWRTb3VyY2VEdW1wID0gbWFrZVVuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPj4o
KTsKICAgICByZXR1cm4gKm1fZGVmZXJyZWRTb3VyY2VEdW1wOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggZGI5YWQxNjBh
YzI4MTMwZjM5ODQxZmYzYmZlYjMyYjY4M2RkZWFkNi4uZGY0ZDc3Y2UzZjYzYjUyMDA3NTU0NGM0
MWExNmNiMjMxZDdkZmE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkdldHRlcjogewotICAgICAgICAgICAgICAgICAgICBjYWxs
TGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAgICAg
ICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4o
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0g
YWNjZXNzLmFzPEdldHRlclNldHRlckFjY2Vzc0Nhc2U+KCkuY2FsbExpbmtJbmZvKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICpjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRC
bG9jaywgKmNhbGxMaW5rSW5mbywgY2FsbEV4aXRTaXRlRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAppbmRleCBmYzFmNDYwZGU5
NjU0MWQ4ZmEwOTljYmI0NWYyMzA5YzJhMzMzODBmLi5lZDhkNDkzZjdlZTZmMWRhMmI5MDlhZDU3
YzYyNzcxODEzYzJkNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkVmFyaWFudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgR2V0QnlJZFZhcmlhbnQmIEdl
dEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0oY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKQogICAg
IG1fY3VzdG9tQWNjZXNzb3JHZXR0ZXIgPSBvdGhlci5tX2N1c3RvbUFjY2Vzc29yR2V0dGVyOwog
ICAgIG1fZG9tQXR0cmlidXRlID0gb3RoZXIubV9kb21BdHRyaWJ1dGU7CiAgICAgaWYgKG90aGVy
Lm1fY2FsbExpbmtTdGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAg
IG1fY2FsbExpbmtTdGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9j
YWxsTGlua1N0YXR1cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVs
bHB0cjsKICAgICByZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAppbmRleCAwOTI5ZDZm
YjQxMjY3NGVkN2YyMDQwNDVmYjQyNWViN2QzOGQzYzkzLi42ZWViMTQ1YjMzNzk2NjJhZjFjMTUw
MDE5MDc2NzI3YTM5ZWUyYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUqIENvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZUhvbGRlcjo6YWRkKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIGNvbnN0IExh
enlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpCiB7CiAgICAgaWYgKCFtX2RhdGEpCi0gICAg
ICAgIG1fZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGU6Okxp
c3Q+KCk7CisgICAgICAgIG1fZGF0YSA9IG1ha2VVbmlxdWU8TGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGU6Okxpc3Q+KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2RhdGEtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobV9kYXRhLT5hdChpKS5r
ZXkoKSA9PSBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seVByb3RvQWNjZXNzQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5UHJvdG9BY2Nlc3NDaGFpbi5oCmluZGV4IGI0OWU0ZTI0MmU1MmYwODEzMTVlNDhmYjFlMWJj
YzI5N2U1MjhhZTAuLmExZWNiOTRkZDBkMTg2NzA4NjM1MmY1MmI1YjU4YzMxOTNlZWNmZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3ND
aGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nl
c3NDaGFpbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFBvbHlQcm90b0FjY2Vzc0NoYWluIHsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gY2xvbmUoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+
KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9seVByb3RvQWNjZXNzQ2hhaW4+
KCp0aGlzKTsKICAgICB9CiAKICAgICBjb25zdCBWZWN0b3I8U3RydWN0dXJlKj4mIGNoYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGFpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggMjJmNDU1ODE0Yjg0YWY0ZmU3
NGNhZjIzNDAxZDMwYWRhZGFlNWM2ZS4uM2IzMDIzMzlmMDM1MGRhYzQyOGYzZjA0Y2M3MzUyYTNh
ZTUyMWI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eW1vcnBoaWNBY2Nlc3MuY3BwCkBAIC02MTYsNyArNjE2LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJl
c3VsdCBQb2x5bW9ycGhpY0FjY2Vzczo6cmVnZW5lcmF0ZSgKICAgICBtX3N0dWJSb3V0aW5lID0g
Y3JlYXRlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0sIGNvZGVCbG9jaywgZG9lc0NhbGxzLCBjZWxs
c1RvTWFyaywgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5kbGVycywgY2FsbFNpdGVJbmRl
eEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKICAgICBtX3dhdGNocG9pbnRzID0gV1RGTW92ZShzdGF0
ZS53YXRjaHBvaW50cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNlcy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxXcml0
ZUJhcnJpZXI8SlNDZWxsPj4+KFdURk1vdmUoc3RhdGUud2Vha1JlZmVyZW5jZXMpKTsKKyAgICAg
ICAgbV93ZWFrUmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOwogICAgIGlmIChQb2x5bW9ycGhp
Y0FjY2Vzc0ludGVybmFsOjp2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmc6ICIs
IGNvZGUuY29kZSgpLCAiXG4iKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCBjMmQ5NTMyMGNlYmQ1NmRiZGM5M2VlYmQ2
YzMxNDBhN2RmN2NjMjA5Li5kNjQyYmNjZmU3OTc2NmM1Mjc5YmJjODEwODcwMWViN2Y4NTgyNGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNh
c2UgQ29tcGxleEdldFN0YXR1czo6SW5saW5lYWJsZTogewogICAgICAgICAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+IGNhbGxMaW5rU3RhdHVzID0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8
R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgKmNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2Fs
bExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCmluZGV4IDVkNmIyOTA0NWNhNjc1YzU2ZmE3
MWQ1NDc1YTExNWIyZGY2ZjNjNWUuLjcyYzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZlNjM2MmY3MmU2
YzBhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
VmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRW
YXJpYW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBQdXRCeUlkVmFyaWFudCYgUHV0QnlJZFZhcmlh
bnQ6Om9wZXJhdG9yPShjb25zdCBQdXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jb25kaXRp
b25TZXQgPSBvdGhlci5tX2NvbmRpdGlvblNldDsKICAgICBtX29mZnNldCA9IG90aGVyLm1fb2Zm
c2V0OwogICAgIGlmIChvdGhlci5tX2NhbGxMaW5rU3RhdHVzKQotICAgICAgICBtX2NhbGxMaW5r
U3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKm90aGVyLm1fY2FsbExp
bmtTdGF0dXMpOworICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbWFrZVVuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oKm90aGVyLm1fY2FsbExpbmtTdGF0dXMpOwogICAgIGVsc2UKICAgICAgICAgbV9j
YWxsTGlua1N0YXR1cyA9IG51bGxwdHI7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IDk2
ZDIyZWNmYTBhNGM3NTZlZGZmNjFmMDAxM2Y3MjU4ZTdkM2ZiZDUuLjUzZjIwOGJjYWRlZDNkZWEy
ZGVlMThhMGU4OTYwNWM0OTBhMTk1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVjb3Jk
ZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCiAK
IENhbGxMaW5rU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyhjb25z
dCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgc3RhdHVzKQog
ewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4o
c3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+
KHN0YXR1cyk7CiAgICAgQ2FsbExpbmtTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsK
ICAgICBjYWxscy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0
dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUzLDcgKzUzLDcgQEAgQ2FsbExpbmtT
dGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4KIAogR2V0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0
QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3Rh
dHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdl
dEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEdl
dEJ5SWRTdGF0dXM+KHN0YXR1cyk7CiAgICAgR2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVz
UHRyLmdldCgpOwogICAgIGdldHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdU
Rk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02MSw3ICs2MSw3IEBA
IEdldEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbiwKICAgICAKIFB1dEJ5SWRTdGF0dXMqIFJlY29yZGVkU3Rh
dHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29u
c3QgUHV0QnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxQdXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0g
bWFrZVVuaXF1ZTxQdXRCeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIFB1dEJ5SWRTdGF0dXMqIHJl
c3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihj
b2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
NjksNyArNjksNyBAQCBQdXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlk
U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sCiAKIEluQnlJZFN0YXR1cyogUmVj
b3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIGNvbnN0IEluQnlJZFN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQ
dHIgPSBtYWtlVW5pcXVlPEluQnlJZFN0YXR1cz4oc3RhdHVzKTsKICAgICBJbkJ5SWRTdGF0dXMq
IHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKICAgICBpbnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNs
ZWFyaW5nV2F0Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKaW5kZXggMzBhMWYwNTUyNTllM2RlZDFh
NzE2OGVlMzUyNmY3MmMwODRiZWU1YS4uZmNjMjkxMTgwMjQ0ZTBiMzIyOWUyZmQ3NjMwMDdiZTc5
YTg3NDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KiBXYXRjaHBvaW50c09uU3Ry
dWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZQogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSkKIHsKICAgICBpZiAo
IWhvbGRlclJlZikKLSAgICAgICAgaG9sZGVyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxXYXRjaHBv
aW50c09uU3RydWN0dXJlU3R1YkluZm8+KGNvZGVCbG9jaywgc3R1YkluZm8pOworICAgICAgICBo
b2xkZXJSZWYgPSBtYWtlVW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29k
ZUJsb2NrLCBzdHViSW5mbyk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYt
Pm1fY29kZUJsb2NrID09IGNvZGVCbG9jayk7CiAgICAgICAgIEFTU0VSVChob2xkZXJSZWYtPm1f
c3R1YkluZm8gPT0gc3R1YkluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggNzIyMmQ0ODJhZDFlNWUyODZjZWY1
OWQ0ZmYxZTFmNWViMDcxMDc4ZC4uNDkxOTVkMTU3MjFkMmNkYTRmNzQ4YWU4ZGJlMmFmMDA5YTI4
YTdhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3Vs
dCBTdHJ1Y3R1cmVTdHViSW5mbzo6YWRkQWNjZXNzQ2FzZSgKICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFBvbHltb3JwaGljQWNjZXNzPiBhY2Nlc3MgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBvbHltb3JwaGljQWNjZXNzPigpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBv
bHltb3JwaGljQWNjZXNzPiBhY2Nlc3MgPSBtYWtlVW5pcXVlPFBvbHltb3JwaGljQWNjZXNzPigp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vz
c0Nhc2U+LCAyPiBhY2Nlc3NDYXNlczsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggZTAwNmQx
NmI5YjhhMGZjMzBmMDQzM2NkZTYwMmVjYzNiMTY4ZDQyZS4uMmM5YTBiMzAxZWIwOThlMTE1ZWYx
ZTM2YjEyN2JlMjllM2FiZGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00MTQsNyArNDE0LDcgQEAgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzJiBVbmxpbmtlZENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Ns
b3coQ29kZUJsb2NrKiBjb2QKICAgICAgICAgaWYgKCFtX2xpdmVuZXNzKSB7CiAgICAgICAgICAg
ICAvLyBUaGVyZSBpcyBhIGNoYW5jZSB0d28gY29tcGlsZXIgdGhyZWFkcyByYWNlZCB0byB0aGUg
c2xvdyBwYXRoLgogICAgICAgICAgICAgLy8gR3JhYmJpbmcgdGhlIGxvY2sgYWJvdmUgZGVmZW5k
cyBhZ2FpbnN0IGNvbXB1dGluZyBsaXZlbmVzcyB0d2ljZS4KLSAgICAgICAgICAgIG1fbGl2ZW5l
c3MgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oY29kZUJsb2Nr
KTsKKyAgICAgICAgICAgIG1fbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcz4oY29kZUJsb2NrKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNDM3
MDk1MTllYjYxNmUyNjUxMDZlZjFkNTUyOTYxN2Q2NDVjOWJjOS4uNTEyNTM2YzBkNDQ4NTdhNGNh
NzZlODEzZmUxNDgwM2E5NzNmZmE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQwMiw3ICs0MDIsNyBAQCBjbGFzcyBV
bmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgaWYgKCFt
X3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGxvY2tEdXJpbmdNYXJraW5n
KCpoZWFwKCksIGNlbGxMb2NrKCkpOwotICAgICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1
ZTxSYXJlRGF0YT4oKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKaW5kZXggZmJlYzlmNzJjYTJmZDFhMThiYWNiMDczZTY4NzI1NGI3MGI5ZWJlMS4uNDlkOWQy
ZmQzZTZmZTlmYjRiNTI3ZjY3N2FiZDViZDRhNTEyMjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6ZGVjb2RlQ2FjaGVkQ29kZUJsb2NrcyhWTSYgdm0pCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6UmFyZURhdGEmIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0
YVNsb3coKQogewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgbV9yYXJlRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8
UmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICptX3JhcmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggZTk3Njg2YWEzZWRjZGQ4ZDNmOWI1N2M0YTZkMTIzYmFjOWNiMzk4Ny4uMTc4YTYxZGY2OTEz
M2FmZGNjMTI3MjhjYmZkOTZlYjM5ZjQyYWViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDAxLDcgKzQw
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGJlZm9yZSA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOwogCiAgICAgICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0g
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlR2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUdlbmVyYXRvcj4odm0sIG5vZGUsIHVubGlua2VkQ29kZUJsb2NrLCBjb2RlR2VuZXJhdGlv
bk1vZGUsIGVudmlyb25tZW50KTsKKyAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3Ig
PSBtYWtlVW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxv
Y2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOwogICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBieXRlY29kZUdlbmVyYXRvci0+Z2VuZXJhdGUoKTsKIAogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OnJlcG9ydEJ5dGVjb2RlQ29tcGlsZVRpbWVzKCkpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IGJjZDcyZWEwOWY1Zjcx
N2E2NWY2NWQ3ZDJlZmMxNzVlMDIzZTY5OTAuLmViYWJiNTlkNDM1OWE5ZTM2NGYyY2EzYWY2YWZk
MGVmZDAzOTBiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5o
CkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFZNOwogdHlwZWRlZiBFeGVjU3RhdGUgQ2FsbEZyYW1l
OwogCiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVidWdnZXIoVk0mKTsKICAgICB2aXJ0dWFsIH5E
ZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGYyMGEzNTdlY2I3M2FhN2VmZTRjYjEw
N2QxY2NiN2U5ZGM5MDAzMzkuLjI3NjU2OTI2YThkMjlkMjdlYmVlYWE5ZmZkY2EyMDNjYzI1ZmEw
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTU4LDcgKzU4LDcgQEAgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OkFic3RyYWN0SW50ZXJwcmV0ZXIoR3JhcGgmIGdyYXBo
LCBBYnN0cmEKICAgICAsIG1fc3RhdGUoc3RhdGUpCiB7CiAgICAgaWYgKG1fZ3JhcGgubV9mb3Jt
ID09IFNTQSkKLSAgICAgICAgbV9waGlDaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGhpQ2hp
bGRyZW4+KG1fZ3JhcGgpOworICAgICAgICBtX3BoaUNoaWxkcmVuID0gbWFrZVVuaXF1ZTxQaGlD
aGlsZHJlbj4obV9ncmFwaCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVU
eXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA1YjBjODdmZmVl
NTJiMmE5ZTUwMTFlNWJmOGM3MWMwMTI5NDJlZmQwLi5lNjgzYTgyMWIyMmJjZmU1NmIzOWVmNDFh
MTFmMWMyZGRiZDY2MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApA
QCAtNzQsNyArNzQsNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwg
bV9wbGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKCkpCiAgICAg
LCBtX3Byb2ZpbGVkQmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX3Nz
YUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNTQUNGRz4oKnRoaXMpKQorICAgICwgbV9zc2FDRkcobWFr
ZVVuaXF1ZTxTU0FDRkc+KCp0aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAg
ICwgbV9maXhwb2ludFN0YXRlKEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdp
c3RyYXRpb25TdGF0ZShIYXZlTm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtODYsOCArODYsOCBA
QCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgIAogICAgIG1faGFzRGVidWdn
ZXJFbmFibGVkID0gbV9wcm9maWxlZEJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNv
ZGVzKCkgfHwgT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwogICAg
IAotICAgIG1faW5kZXhpbmdDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0luZGV4aW5nPigq
dGhpcyk7Ci0gICAgbV9hYnN0cmFjdFZhbHVlc0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxGbG93
TWFwPEFic3RyYWN0VmFsdWU+PigqdGhpcyk7CisgICAgbV9pbmRleGluZ0NhY2hlID0gbWFrZVVu
aXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlzKTsKKyAgICBtX2Fic3RyYWN0VmFsdWVzQ2FjaGUgPSBt
YWtlVW5pcXVlPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0aGlzKTsKIAogICAgIHJlZ2lzdGVy
U3RydWN0dXJlKHZtLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSk7CiAgICAgdGhpcy0+c3RyaW5n
U3RydWN0dXJlID0gcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsK
QEAgLTEwOTcsNyArMTA5Nyw3IEBAIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBHcmFwaDo6bGl2ZW5l
c3NGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUxp
dmVuZXNzLmVuZCgpKQogICAgICAgICByZXR1cm4gKml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVuZXNzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxs
Qnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBtYWtlVW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVu
ZXNzPigpOwogICAgIGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVGdWxsTGl2
ZW5lc3MoY29kZUJsb2NrLCAqbGl2ZW5lc3MpOwogICAgIEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBy
ZXN1bHQgPSAqbGl2ZW5lc3M7CiAgICAgbV9ieXRlY29kZUxpdmVuZXNzLmFkZChjb2RlQmxvY2ss
IFdURk1vdmUobGl2ZW5lc3MpKTsKQEAgLTExMTUsNyArMTExNSw3IEBAIEJ5dGVjb2RlS2lsbHMm
IEdyYXBoOjpraWxsc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBpZiAoaXRlciAhPSBt
X2J5dGVjb2RlS2lsbHMuZW5kKCkpCiAgICAgICAgIHJldHVybiAqaXRlci0+dmFsdWU7CiAgICAg
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUtpbGxzPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxz
PiBraWxscyA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKICAgICBjb2RlQmxvY2stPmxp
dmVuZXNzQW5hbHlzaXMoKS5jb21wdXRlS2lsbHMoY29kZUJsb2NrLCAqa2lsbHMpOwogICAgIEJ5
dGVjb2RlS2lsbHMmIHJlc3VsdCA9ICpraWxsczsKICAgICBtX2J5dGVjb2RlS2lsbHMuYWRkKGNv
ZGVCbG9jaywgV1RGTW92ZShraWxscykpOwpAQCAtMTU1Myw3ICsxNTUzLDcgQEAgQ1BTQ0ZHJiBH
cmFwaDo6ZW5zdXJlQ1BTQ0ZHKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NB
ICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fY3BzQ0ZHKQotICAgICAgICBt
X2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fY3Bz
Q0ZHID0gbWFrZVVuaXF1ZTxDUFNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzQ0ZHOwog
fQogCkBAIC0xNTYxLDcgKzE1NjEsNyBAQCBDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BT
RG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9p
c0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX2Nwc0RvbWluYXRvcnMpCi0gICAgICAgIG1f
Y3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOwor
ICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlz
KTsKICAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKIH0KIApAQCAtMTU2OSw3ICsxNTY5LDcg
QEAgU1NBRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAg
aWYgKCFtX3NzYURvbWluYXRvcnMpCi0gICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1NBRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX3NzYURvbWluYXRvcnMg
PSBtYWtlVW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhRG9t
aW5hdG9yczsKIH0KIApAQCAtMTU3OCw3ICsxNTc4LDcgQEAgQ1BTTmF0dXJhbExvb3BzJiBHcmFw
aDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0g
U1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7
CiAgICAgaWYgKCFtX2Nwc05hdHVyYWxMb29wcykKLSAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX2Nw
c05hdHVyYWxMb29wcyA9IG1ha2VVbmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2Nwc05hdHVyYWxMb29wczsKIH0KIApAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgU1NB
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKICAgICBSRUxFQVNF
X0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAg
aWYgKCFtX3NzYU5hdHVyYWxMb29wcykKLSAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgICAgICBtX3NzYU5hdHVy
YWxMb29wcyA9IG1ha2VVbmlxdWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX3NzYU5hdHVyYWxMb29wczsKIH0KIApAQCAtMTU5Niw3ICsxNTk2LDcgQEAgQmFja3dhcmRz
Q0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKCkKICAgICAvLyBXZSBjb3VsZCBlYXNpbHkg
cmVsYXggdGhpcyBpbiB0aGUgZnV0dXJlIHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0b2RheSwgaXQn
cyBvbmx5IHVzZWQgaW4gU1NBLgogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAK
ICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZHKQotICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6
bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dhcmRzQ0ZH
ID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dh
cmRzQ0ZHOwogfQogCkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBH
cmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
bV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAg
IG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5h
dG9ycz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVl
PEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9t
aW5hdG9yczsKIH0KIApAQCAtMTYxMiw3ICsxNjEyLDcgQEAgQ29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXMmIEdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFs
ZW5jZUFuYWx5c2lzKQotICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOworICAgICAg
ICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbWFrZVVuaXF1ZTxDb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZhbGVuY2VB
bmFseXNpczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAppbmRleCA2MzkwNDNlOWUyN2ZiZTBlMGI5MmFiNDZhNjY5YmUxNDEwNTAzMzcwLi5mMmI2
NjQwMmUzYWQwZTcyZGZjZTA1YjY1YWYzZmM5MjZkMDA5ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtNTcsNyArNTcsNyBAQCBKSVRDb21w
aWxlcjo6SklUQ29tcGlsZXIoR3JhcGgmIGRmZykKICAgICAsIG1fcGNUb0NvZGVPcmlnaW5NYXBC
dWlsZGVyKGRmZy5tX3ZtKQogewogICAgIGlmIChVTkxJS0VMWShzaG91bGREdW1wRGlzYXNzZW1i
bHkoKSB8fCBtX2dyYXBoLm1fdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyKSkKLSAgICAgICAgbV9k
aXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKKyAgICAg
ICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPERpc2Fzc2VtYmxlcj4oZGZnKTsKICNpZiBF
TkFCTEUoRlRMX0pJVCkKICAgICBtX2ppdENvZGUtPnRpZXJVcEluTG9vcEhpZXJhcmNoeSA9IFdU
Rk1vdmUobV9ncmFwaC5tX3BsYW4udGllclVwSW5Mb29wSGllcmFyY2h5KCkpOwogICAgIGZvciAo
dW5zaWduZWQgdGllclVwQnl0ZWNvZGUgOiBtX2dyYXBoLm1fcGxhbi50aWVyVXBBbmRPU1JFbnRl
ckJ5dGVjb2RlcygpKQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6Omxpbmso
TGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdp
bk1hcEJ1aWxkZXIuZGlkQnVpbGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQ
Q1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZN
b3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOworICAgICAgICBt
X2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdp
bk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsK
IH0KIAogc3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDb21waWxlciYgaml0
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHN0YWNrT3ZlcmZsb3cpCkBAIC0zNjMsNyArMzYz
LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKICAgICBzZXRTdGFydE9mQ29kZSgp
OwogICAgIGNvbXBpbGVFbnRyeSgpOwotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlx
dWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKIAogICAgIC8vIFBsYW50IGEgY2hlY2sgdGhhdCBz
dWZmaWNpZW50IHNwYWNlIGlzIGF2YWlsYWJsZSBpbiB0aGUgSlNTdGFjay4KICAgICBKdW1wTGlz
dCBzdGFja092ZXJmbG93OwpAQCAtNDAyLDkgKzQwMiw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGUoKQogICAgIG1fc3BlY3VsYXRpdmUtPmNyZWF0ZU9TUkVudHJpZXMoKTsKICAgICBzZXRF
bmRPZkNvZGUoKTsKIAotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlu
a0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAg
IGF1dG8gbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJs
b2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWls
VG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6
Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKKyAgICAgICAg
bV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPiht
X2dyYXBoLm1fcGxhbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtNDE2LDcg
KzQxNiw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAgICAgZGlzYXNzZW1ibGUo
KmxpbmtCdWZmZXIpOwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFr
ZV91bmlxdWU8SklURmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIo
bWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRD
b2RlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlcikpKTsKIH0KIApAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgY29t
cGlsZUVudHJ5RXhlY3V0aW9uRmxhZygpOwogCiAgICAgLy8gPT09IEZ1bmN0aW9uIGJvZHkgY29k
ZSBnZW5lcmF0aW9uID09PQotICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
ZWN1bGF0aXZlSklUPigqdGhpcyk7CisgICAgbV9zcGVjdWxhdGl2ZSA9IG1ha2VVbmlxdWU8U3Bl
Y3VsYXRpdmVKSVQ+KCp0aGlzKTsKICAgICBjb21waWxlQm9keSgpOwogICAgIHNldEVuZE9mTWFp
blBhdGgoKTsKIApAQCAtNTA3LDkgKzUwNyw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVG
dW5jdGlvbigpCiAgICAgc2V0RW5kT2ZDb2RlKCk7CiAKICAgICAvLyA9PT0gTGluayA9PT0KLSAg
ICBhdXRvIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBt
X2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIg
PSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRp
b25DYW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewot
ICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNl
dEZpbmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBsaW5rKCpsaW5rQnVmZmVyKTsKQEAgLTUyNSw3
ICs1MjUsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogCiAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrID0gbGlua0J1
ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihhcml0eUNoZWNrKTsKIAotICAgIG1fZ3Jh
cGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisg
ICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigK
ICAgICAgICAgbV9ncmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZN
b3ZlKGxpbmtCdWZmZXIpLCB3aXRoQXJpdHlDaGVjaykpOwogfQogCkBAIC01NTAsNyArNTUwLDcg
QEAgdm9pZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGUqIG5vZGUp
CiAgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogCiAgICAgaWYgKCFtX2dyYXBoLm1fZG91Ymxl
Q29uc3RhbnRzKQotICAgICAgICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gc3RkOjptYWtl
X3VuaXF1ZTxCYWc8ZG91YmxlPj4oKTsKKyAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50
cyA9IG1ha2VVbmlxdWU8QmFnPGRvdWJsZT4+KCk7CiAKICAgICBkb3VibGUqIGFkZHJlc3NJbkNv
bnN0YW50UG9vbCA9IG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMtPmFkZCgpOwogICAgICphZGRy
ZXNzSW5Db25zdGFudFBvb2wgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAppbmRleCBiYjgwMDI3NGRkY2I2
MzAzNDc4MzczN2UzOGFkMWU2MWU5YzVlYTA0Li5hOTQ0MDQ3NDU5MjUyMTg0NWJhMzE4ODM3YjEz
YjlmNGEzMTdlZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xp
dmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIExpdmVu
ZXNzQW5hbHlzaXNQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICwgbV9saXZlQXRUYWls
KG1fZ3JhcGgpCiAgICAgewogICAgICAgICBtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+cmVjb21w
dXRlKCk7Ci0gICAgICAgIG1fd29ya3NldCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya3NldD4obV9n
cmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51bUluZGljZXMoKSk7CisgICAgICAgIG1fd29ya3NldCA9
IG1ha2VVbmlxdWU8V29ya3NldD4obV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPm51bUluZGljZXMo
KSk7CiAgICAgfQogCiAgICAgYm9vbCBydW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAKaW5kZXggMzRhY2JjMWZlMjJmYjc3ZjM1ODBkYTM2Nzk5YzgyMTRiZWJjOWQ2Mi4uYjY5
NDlhYTAzNWMxMmZhNzQ5ZDU4MGNjN2MyYWVjY2E4ZDkyYzE2OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25Q
YXRoIFBsYW46OmNvbXBpbGVJblRocmVhZEltcGwoKQogICAgIGlmIChtX21vZGUgPT0gRlRMRm9y
T1NSRW50cnlNb2RlKSB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gcGVyZm9ybU9TUkVudHJ5cG9p
bnRDcmVhdGlvbihkZmcpOwogICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgbV9m
aW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAg
ICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMp
OwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIFJVTl9Q
SEFTRShwZXJmb3JtQ1BTUmV0aHJlYWRpbmcpOwpAQCAtMzk4LDcgKzM5OCw3IEBAIFBsYW46OkNv
bXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBjYXNlIEZUTEZv
ck9TUkVudHJ5TW9kZTogewogI2lmIEVOQUJMRShGVExfSklUKQogICAgICAgICBpZiAoRlRMOjpj
YW5Db21waWxlKGRmZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2Zp
bmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAg
ICAgICAgICBtX2ZpbmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7
CiAgICAgICAgICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00
NzgsNyArNDc4LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocmVh
ZEltcGwoKQogICAgICAgICBSVU5fUEhBU0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6OkNhbm5v
dENvbXBpbGUpIHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
YWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVu
aXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0
aDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUNvbnZlcnNpb25QaGFzZS5jcHAKaW5kZXggODcxNTk1YjFmZjI1OWJlZTQ0YzcxY2UwM2Q3ZDhl
OGJkNjQzNjUzNy4uNTM0ZDY0YjUzOGZhMTgwYWY0OGU4OWQ0ZjgyNjAyZmI0NWM5MjFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNl
LmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGNsYXNzIFNTQUNvbnZlcnNpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRUYWlsLmNsZWFyKCk7CiAg
ICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9j
ay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7Ci0gICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CisgICAgICAgICAgICBibG9j
ay0+c3NhID0gbWFrZVVuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAg
IH0KIAogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnRyeXBvaW50SW5kZXhUb0FyZ3VtZW50
c0Jsb2NrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQ
YXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2Vu
ZXJhdG9yLmgKaW5kZXggN2NmNDI1MjFhNjIxMTc4ZmY4NTEyYWZmOWZmZmEzMjUyMDAyMjRkNi4u
Y2RjZGFhNjBkODk4YTNiNjZkN2IyOThmNjY4MThjNzlkYzQ4Yzg1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMTkzLDcgKzE5
Myw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
Q2FsbCgKICAgICBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1Jl
cXVpcmVtZW50IHJlcXVpcmVtZW50LAogICAgIFJlc3VsdFR5cGUgcmVzdWx0LCBBcmd1bWVudHMu
Li4gYXJndW1lbnRzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxSZXN1bHRB
bmRBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1
bHRUeXBlLCBBcmd1bWVudHMuLi4+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsUmVzdWx0
QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVz
dWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oCiAgICAgICAgIGZyb20sIGppdCwgZnVuY3Rpb24sIHNw
aWxsTW9kZSwgcmVxdWlyZW1lbnQsIHJlc3VsdCwgYXJndW1lbnRzLi4uKTsKIH0KIApAQCAtMjM5
LDcgKzIzOSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEp1bXBUeXBlLCB0eXBlbmFtZSBEZXN0aW5h
dGlvblR5cGUsIHR5cGVuYW1lIFNvdXJjZVR5cGUsIHVuc2lnCiBpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiAgICAgSnVtcFR5cGUgZnJvbSwg
U3BlY3VsYXRpdmVKSVQqIGppdCwgU291cmNlVHlwZSBzb3VyY2VbbnVtYmVyT2ZBc3NpZ25tZW50
c10sIERlc3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlvbltudW1iZXJPZkFzc2lnbm1lbnRzXSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxK
dW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCBudW1iZXJPZkFzc2lnbm1lbnRz
Pj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVt
cFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgbnVtYmVyT2ZBc3NpZ25tZW50cz4+
KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uLCBzb3VyY2UpOwogfQogCkBAIC0yNDks
NyArMjQ5LDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGhNb3ZlKAogewogICAgIFNvdXJjZVR5cGUgc291cmNlQXJyYXlbMV0gPSB7IHNvdXJjZSB9
OwogICAgIERlc3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlvbkFycmF5WzFdID0geyBkZXN0aW5hdGlv
biB9OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJh
dG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDE+PigKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGlu
YXRpb25UeXBlLCBTb3VyY2VUeXBlLCAxPj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRp
b25BcnJheSwgc291cmNlQXJyYXkpOwogfQogCkBAIC0yNTksNyArMjU5LDcgQEAgaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogewogICAgIFNv
dXJjZVR5cGUgc291cmNlQXJyYXlbMl0gPSB7IHNvdXJjZTEsIHNvdXJjZTIgfTsKICAgICBEZXN0
aW5hdGlvblR5cGUgZGVzdGluYXRpb25BcnJheVsyXSA9IHsgZGVzdGluYXRpb24xLCBkZXN0aW5h
dGlvbjIgfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdl
bmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAyPj4oCisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERl
c3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMj4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3Rp
bmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAyMDdhOWI2OWI0ODg1NWI1NmIxZjgz
NzIwNjUxYzJiYzc2ZTM4ZjllLi43MGU3MDVkNzg0OTMyZDlkM2ZjMjcyNDkxMzJlZmQzZTNlNWQ2
NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlCiAgICAgLy8g
SSB3YW50IGEgc2xvdyBwYXRoIHRoYXQgYWxzbyBsb2FkcyBvdXQgdGhlIHN0b3JhZ2UgcG9pbnRl
ciwgYW5kIHRoYXQncwogICAgIC8vIHdoYXQgdGhpcyBjdXN0b20gQ2FsbEFycmF5QWxsb2NhdG9y
U2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBsb3QKICAgICAvLyBvZiB3b3JrIGZv
ciBhIHZlcnkgc21hbGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4gOi0vCi0gICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdl
bmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uTmV3UmF3T2JqZWN0LCByZXN1bHRHUFIsIHN0b3JhZ2VHUFIsCiAgICAgICAgIHN0cnVj
dHVyZSwgdmVjdG9yTGVuZ3RoKSk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjphcnJheWlmeShOb2RlKiBub2RlLCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3Bl
cnR5UmVnKQogICAgICAgICBzbG93UGF0aC5hcHBlbmQoanVtcFNsb3dGb3JVbndhbnRlZEFycmF5
TW9kZSh0ZW1wR1BSLCBub2RlLT5hcnJheU1vZGUoKSkpOwogICAgIH0KICAgICAKLSAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0
b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8QXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBub2RlLCBiYXNlUmVnLCBwcm9w
ZXJ0eVJlZywgdGVtcEdQUiwgc3RydWN0dXJlR1BSKSk7CiAgICAgCiAgICAgbm9SZXN1bHQobV9j
dXJyZW50Tm9kZSk7CkBAIC0yMjQyLDEwICsyMjQyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAg
aWYgKHByb3RvdHlwZUNoYWluSXNTYW5lKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5
VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
bWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAg
ICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpLCBiYXNl
UmVnLCBwcm9wZXJ0eVJlZykpOwogI2Vsc2UKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHN0ZDo6bWFrZV91bmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+
KAorICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5n
R2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMs
IHRoaXMsIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ1JlZywgc2NyYXRjaFJlZyksCiAgICAgICAgICAg
ICAgICAgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbmRpZgpAQCAtNzYxOSw3ICs3NjE5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2Rl
KiBub2RlKQogICAgICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVE
aXJlY3RBcmd1bWVudHMsIHJlc3VsdEdQUiwgc3RydWN0dXJlLAogICAgICAgICAgICAgICAgIGtu
b3duTGVuZ3RoLCBtaW5DYXBhY2l0eSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gZ2Vu
ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1Bh
dGhHZW5lcmF0b3I+KAorICAgICAgICBhdXRvIGdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Q2FsbENy
ZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dQ
YXRoLCB0aGlzLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwgbGVuZ3RoR1BSLCBtaW5DYXBhY2l0eSk7
CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoZ2VuZXJhdG9yKSk7CiAgICAg
fQpAQCAtODQzOSw3ICs4NDM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5
U2xpY2UoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuanVt
cCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVT
aXplU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtl
VW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6
ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3Jh
Z2VSZXN1bHRHUFIpKTsKICAgICB9CiAKQEAgLTkxMzUsNyArOTEzNSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRTdHJ1Y3R1cmVDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgY2VsbEdQUiwg
R1BSUmVnIHRlbXBHCiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFI7CiAgICAgICAgIAogICAg
ICAgICBpZiAodGVtcEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7Ci0gICAgICAgICAgICBzdHJ1Y3R1
cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CisgICAgICAgICAgICBz
dHJ1Y3R1cmUgPSBtYWtlVW5pcXVlPEdQUlRlbXBvcmFyeT4odGhpcyk7CiAgICAgICAgICAgICBz
dHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUtPmdwcigpOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIHN0cnVjdHVyZUdQUiA9IHRlbXBHUFI7CkBAIC0xMzE3Niw3ICsxMzE3Niw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjCiAKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkp
OwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlB
bGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6
ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwKICAgICAgICAg
c2hvdWxkQ29udmVydExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlID8gbV9qaXQuZ3JhcGgoKS5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVjdHVyZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggZmEzOTZmNGYxOTJhOGJiNGFlZjk5ZDAzNzE5MjRhMmEz
OGM2NDVlOC4uYmE2MTI4ZWZlOWJiMzY4ZmUzYjA2NjIzYjUxZWUzZWVhZDNjNGZkMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTk1LDggKzk1LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIFBoYXNlTW9kZTo6R2xv
YmFsOiB7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgu
bV9mb3JtID09IFNTQSk7CiAKLSAgICAgICAgICAgIG1fc3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluUGxhY2VBYnN0cmFjdFN0YXRlPihtX2dyYXBoKTsKLSAgICAgICAgICAgIG1faW50ZXJwcmV0
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFic3RyYWN0SW50ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0
U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0ZSk7CisgICAgICAgICAgICBtX3N0YXRlID0gbWFrZVVu
aXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7CisgICAgICAgICAgICBtX2ludGVy
cHJldGVyID0gbWFrZVVuaXF1ZTxBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0
YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2lz
Q29udmVyZ2VkID0gZmFsc2U7CiAgICAgICAgICAgICAKQEAgLTEwNyw4ICsxMDcsOCBAQCBjbGFz
cyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAvLyB0b3dhcmRzIGJlbGlldmluZyB0aGF0IGFsbCBub2RlcyBuZWVkIGJhcnJpZXJzLiAiTmVl
ZGluZyBhIGJhcnJpZXIiIGlzIGxpa2UKICAgICAgICAgICAgIC8vIHNheWluZyB0aGF0IHRoZSBu
b2RlIGlzIGluIGEgcGFzdCBlcG9jaC4gIk5vdCBuZWVkaW5nIGEgYmFycmllciIgaXMgbGlrZSBz
YXlpbmcKICAgICAgICAgICAgIC8vIHRoYXQgdGhlIG5vZGUgaXMgaW4gdGhlIGN1cnJlbnQgZXBv
Y2guCi0gICAgICAgICAgICBtX3N0YXRlQXRIZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja01h
cDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOwotICAgICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9
IHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAg
ICAgICAgICAgIG1fc3RhdGVBdEhlYWQgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9k
ZSo+Pj4obV9ncmFwaCk7CisgICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gbWFrZVVuaXF1ZTxC
bG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBCbG9ja0xpc3QgcG9zdE9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblBvc3RPcmRlcigpOwog
ICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dv
cmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCmlu
ZGV4IGU2YzIyMjFlZTMwMTU0NGM3MmE5Y2U4MzVmOTgwZmYzNmYwMjRiN2QuLjhmOTMwMzRiMGM2
ZjkwYmE2NmY0YmY1YzUzYmUxYjRmMGZiYTc0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgY2xhc3MgV29ya2xpc3Q6OlRo
cmVhZEJvZHkgOiBwdWJsaWMgQXV0b21hdGljVGhyZWFkIHsKICAgICAgICAgaWYgKG1fcmVsYXRp
dmVQcmlvcml0eSkKICAgICAgICAgICAgIFRocmVhZDo6Y3VycmVudCgpLmNoYW5nZVByaW9yaXR5
KG1fcmVsYXRpdmVQcmlvcml0eSk7CiAgICAgICAgIAotICAgICAgICBtX2NvbXBpbGF0aW9uU2Nv
cGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7CisgICAgICAgIG1fY29t
cGlsYXRpb25TY29wZSA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb25TY29wZT4oKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCB0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgb3Zl
cnJpZGUKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFdvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbih1
bnNpZ25lZCBudW1iZXJPZlRocmVhZHMsIGludCByZWxhdGl2ZVByaW9yaXR5KQogCiB2b2lkIFdv
cmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgaW50
IHJlbGF0aXZlUHJpb3JpdHkpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZERhdGE+KHRoaXMpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaHJlYWREYXRhPiBkYXRhID0gbWFrZVVuaXF1ZTxUaHJlYWREYXRhPih0aGlzKTsKICAg
ICBkYXRhLT5tX3RocmVhZCA9IGFkb3B0UmVmKG5ldyBUaHJlYWRCb2R5KGxvY2tlciwgKnRoaXMs
ICpkYXRhLCBtX2xvY2ssIG1fcGxhbkVucXVldWVkLmNvcHlSZWYoKSwgcmVsYXRpdmVQcmlvcml0
eSkpOwogICAgIG1fdGhyZWFkcy5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXgg
MTliMTE1YzlmZGQ2N2NiYzhhZTEwOWM2NDQ1NzQyOGJhM2FkZmE1My4uMDBiZGE2NTcyNzljZjdh
OTlkYmFiMTQ5YjA5YzcwM2Q2OGIzNWJlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIEFz
eW5jaHJvbm91c0Rpc2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkKIHZvaWQg
ZGlzYXNzZW1ibGVBc3luY2hyb25vdXNseSgKICAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxEaXNhc3NlbWJseVB0clRhZz4mIGNvZGVSZWYsIHNp
emVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERp
c2Fzc2VtYmx5VGFzaz4gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1ibHlUYXNrPigp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBtYWtlVW5pcXVl
PERpc2Fzc2VtYmx5VGFzaz4oKTsKICAgICB0YXNrLT5oZWFkZXIgPSBzdHJkdXAoaGVhZGVyLmRh
dGEoKSk7IC8vIFl1Y2shIFdlIG5lZWQgdGhpcyBiZWNhdXNlIENTdHJpbmcgZG9lcyByYWN5IHJl
ZmNvdW50aW5nLgogICAgIHRhc2stPmNvZGVSZWYgPSBjb2RlUmVmOwogICAgIHRhc2stPnNpemUg
PSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3Bw
CmluZGV4IDkwYWUyZjRmZTA2YTE1MmNhZTU3ODVlMmMwM2M5OTliNjgzMmJjMWIuLmVjODBlYTY3
YjI1NmY4OTE4ZDQ4ODNhOGM1MmI4ZjM3OTU4M2FiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKQEAgLTE1NywxMSArMTU3LDExIEBAIGNvbnN0
IEFic3RyYWN0SGVhcCYgSW5kZXhlZEFic3RyYWN0SGVhcDo6YXRTbG93KHB0cmRpZmZfdCBpbmRl
eCkKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPj0gbV9zbWFsbEluZGlj
ZXMuc2l6ZSgpKTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoIW1fbGFyZ2VJbmRpY2VzKSkKLSAg
ICAgICAgbV9sYXJnZUluZGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE1hcFR5cGU+KCk7CisgICAg
ICAgIG1fbGFyZ2VJbmRpY2VzID0gbWFrZVVuaXF1ZTxNYXBUeXBlPigpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFic3RyYWN0SGVhcD4mIGZpZWxkID0gbV9sYXJnZUluZGljZXMtPmFkZChpbmRl
eCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghZmllbGQpIHsKLSAgICAgICAg
ZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFic3RyYWN0SGVhcD4oKTsKKyAgICAgICAgZmllbGQg
PSBtYWtlVW5pcXVlPEFic3RyYWN0SGVhcD4oKTsKICAgICAgICAgaW5pdGlhbGl6ZSgqZmllbGQs
IGluZGV4KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tcGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3Bw
CmluZGV4IDVkMDRiNzJmMDQ4MzFkMDYzMDIzMDRkMWViN2U0OTI5ZDQ4MDQyN2YuLjQ2MzVjYzk2
ZjkxMDkxZjczZjA4ZDFmNzUyYjA0N2QxMDUzYmZiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUm
IHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIFZNJiB2bSA9
IGdyYXBoLm1fdm07CiAKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCi0gICAgICAg
IHN0YXRlLnByb2MtPmNvZGUoKS5zZXREaXNhc3NlbWJsZXIoc3RkOjptYWtlX3VuaXF1ZTxCMzo6
QWlyOjpEaXNhc3NlbWJsZXI+KCkpOworICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlz
YXNzZW1ibGVyKG1ha2VVbmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKIAogICAgIHsK
ICAgICAgICAgR3JhcGhTYWZlcG9pbnQgc2FmZXBvaW50KHN0YXRlLmdyYXBoLCBzYWZlcG9pbnRS
ZXN1bHQpOwpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZl
cG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiByZWdpc3Rlck9mZnNldHMg
PQotICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5w
cm9jLT5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CisgICAgICAgIG1ha2VVbmlx
dWU8UmVnaXN0ZXJBdE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0
T2Zmc2V0TGlzdCgpKTsKICAgICBpZiAoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkpCiAgICAgICAg
IGRhdGFMb2coIlVud2luZCBpbmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxv
Y2ssIEpJVFR5cGU6OkZUTEpJVCksICI6ICIsICpyZWdpc3Rlck9mZnNldHMsICJcbiIpOwogICAg
IGNvZGVCbG9jay0+c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhXVEZNb3ZlKHJlZ2lzdGVyT2Zmc2V0
cykpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVw
b2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxp
bmsoY2FsbCwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsb29rdXBFeGNlcHRpb25IYW5k
bGVyKSk7CiAgICAgICAgIH0pOwogCi0gICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25DYW5GYWlsKTsKKyAgICBzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIg
PSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOwogCiAgICAgaWYgKHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+ZGlk
RmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1
ZTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9p
bnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgIAogICAgIEIzOjpQQ1RvT3JpZ2luTWFw
IG9yaWdpbk1hcCA9IHN0YXRlLnByb2MtPnJlbGVhc2VQQ1RvT3JpZ2luTWFwKCk7CiAgICAgaWYg
KHZtLnNob3VsZEJ1aWxkZXJQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKSkKLSAgICAgICAgY29kZUJs
b2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2lu
TWFwPihQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpz
dGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsKKyAgICAgICAgY29kZUJsb2NrLT5z
ZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihQQ1RvQ29k
ZU9yaWdpbk1hcEJ1aWxkZXIodm0sIFdURk1vdmUob3JpZ2luTWFwKSksICpzdGF0ZS5maW5hbGl6
ZXItPmIzQ29kZUxpbmtCdWZmZXIpKTsKIAogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQ
dHJUYWc+IGxhYmVsID0gc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyLT5sb2NhdGlv
bk9mPEpTRW50cnlQdHJUYWc+KHN0YXRlLnByb2MtPmVudHJ5cG9pbnRMYWJlbCgwKSk7CiAgICAg
c3RhdGUuZ2VuZXJhdGVkRnVuY3Rpb24gPSBsYWJlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEZhaWwuY3BwCmluZGV4IDE2NTMzNTA5Y2QwYjQ4MmM3NGJjYTY3MzE4NzYzZjJlMGYwOWRkZjEu
LmMzZjkzMzkyZjI2ZTZmYzk1ZjljMmNjNTkyOWVkMzRjNmJjMzBjMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExGYWlsLmNwcApAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
REZHOwogCiB2b2lkIGZhaWwoU3RhdGUmIHN0YXRlKQogewotICAgIHN0YXRlLmdyYXBoLm1fcGxh
bi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0YXRlLmdy
YXBoLm1fcGxhbikpOworICAgIHN0YXRlLmdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVu
aXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KHN0YXRlLmdyYXBoLm1fcGxhbikpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6RlRMCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExpbmsuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAppbmRl
eCAwODU0MDU2ZWM3ZDE2MmIxMWNkYzIxY2Q3OGZlMTUxN2Y3YWNmM2ViLi45NWRiNjk2MWU4ZTkw
NzcwY2Q2ZTU1NjczMDIyYjQ0NzYzYjU4MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAg
ICAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICAgICAgbWFpblBhdGhK
dW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7CiAKLSAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOworICAgICAgICAgICAgbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4o
aml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICBpZiAo
bGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICAgICAgICAgIHN0YXRl
LmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5
MSw3ICsxOTEsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQudW50YWdS
ZXR1cm5BZGRyZXNzKCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAg
PSBqaXQuanVtcCgpOwogICAgICAgICAKLSAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7
CisgICAgICAgIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJs
b2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICBpZiAobGlua0J1ZmZlci0+ZGlk
RmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9
IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWYxYmE0YmY5MGE4ZmQwYmEyNTAyYzY0N2UyYzE3
MTQxMjJkZTdkNC4uMDliMzQyNzNjYmI3Y2FiNDRjZDg2M2U5OWIyODU5MGU4N2M5NGIxMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTUw
ODAsNyArMTUwODAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZ2VuZXJhdG9ySnVtcCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFn
Pih2bS0+Z2V0Q1RJU3R1YihsYXp5U2xvd1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExhenlTbG93UGF0aD4gbGF6eVNsb3dQ
YXRoID0gc3RkOjptYWtlX3VuaXF1ZTxMYXp5U2xvd1BhdGg+KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0
aCA9IG1ha2VVbmlxdWU8TGF6eVNsb3dQYXRoPigpOwogCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbGlua2VkUGF0Y2hhYmxlSnVtcCA9IENvZGVMb2NhdGlvbkp1bXA8SlNJ
bnRlcm5hbFB0clRhZz4obGlua0J1ZmZlci5sb2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KHBh
dGNoYWJsZUp1bXApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcAppbmRl
eCA2NTNlYzZmNjk2MDQ5Yjc1MmFjMjRhNzc5MzEwZDRhZDk3YmIwM2RiLi40YTQ4NGZhNmQ0NjQz
MGQ3MWU1NzAwOGJmMWU5OWY2YzI1Yjg0ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFN0YXRlLmNwcApAQCAtNjAsMTAgKzYwLDEwIEBAIFN0YXRlOjpTdGF0ZShHcmFwaCYgZ3JhcGgp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGdyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIo
c3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxhbikpOworICAgIGdyYXBo
Lm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KGdyYXBoLm1fcGxh
bikpOwogICAgIGZpbmFsaXplciA9IHN0YXRpY19jYXN0PEpJVEZpbmFsaXplcio+KGdyYXBoLm1f
cGxhbi5maW5hbGl6ZXIoKSk7CiAKLSAgICBwcm9jID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZWR1
cmU+KCk7CisgICAgcHJvYyA9IG1ha2VVbmlxdWU8UHJvY2VkdXJlPigpOwogCiAgICAgcHJvYy0+
c2V0T3JpZ2luUHJpbnRlcigKICAgICAgICAgW10gKFByaW50U3RyZWFtJiBvdXQsIEIzOjpPcmln
aW4gb3JpZ2luKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21w
bGV0ZVN1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwCmluZGV4IDIyZDdmZDY1ZDVhMTc1NWI1YjJkM2I3OGRkYTU1YzBkMDA3ZTFjY2Iu
LjAyMWIwY2RiOWRmYWMxOGIzNjg2NDI4YTk4MjNmMjgxMTBiYjc5ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBz
aXplKQogICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBCbG9ja0RpcmVjdG9yeS9Mb2NhbEFsbG9j
YXRvciBmb3IgIiwgbV9uYW1lLCAiLCAiLCBhdHRyaWJ1dGVzKCksICIsICIsIHNpemVDbGFzcywg
Ii5cbiIpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVl
RGlyZWN0b3J5ID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9z
cGFjZS5oZWFwKCksIHNpemVDbGFzcyk7CisgICAgICAgIG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rv
cnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3MpOwogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJl
Y3RvcnkgPSB1bmlxdWVEaXJlY3RvcnkuZ2V0KCk7CiAgICAgbV9kaXJlY3Rvcmllcy5hcHBlbmQo
V1RGTW92ZSh1bmlxdWVEaXJlY3RvcnkpKTsKICAgICAKQEAgLTg4LDcgKzg4LDcgQEAgQWxsb2Nh
dG9yIENvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAg
bV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9yeShsb2NrZXIsIGRpcmVjdG9yeSk7CiAgICAgCiAgICAg
c3RkOjp1bmlxdWVfcHRyPExvY2FsQWxsb2NhdG9yPiB1bmlxdWVMb2NhbEFsbG9jYXRvciA9Ci0g
ICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CisgICAg
ICAgIG1ha2VVbmlxdWU8TG9jYWxBbGxvY2F0b3I+KGRpcmVjdG9yeSk7CiAgICAgTG9jYWxBbGxv
Y2F0b3IqIGxvY2FsQWxsb2NhdG9yID0gdW5pcXVlTG9jYWxBbGxvY2F0b3IuZ2V0KCk7CiAgICAg
bV9sb2NhbEFsbG9jYXRvcnMuYXBwZW5kKFdURk1vdmUodW5pcXVlTG9jYWxBbGxvY2F0b3IpKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggYTAxYjVhMmI0YWVmZDNl
NTI5Njk3N2E1YzgzODQwNDJlNWEyOTU2YS4uOTcxOTllMTg2ZGU3MmQ3NzI3OTczNWM5ZDNjOTk0
MGM4NWM0OGFmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTI4OSwxNSAr
Mjg5LDE1IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
bWF4RWRlblNpemUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9tYXhIZWFwU2l6ZShtX21p
bkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCi0gICAgLCBtX21hY2hp
bmVUaHJlYWRzKHN0ZDo6bWFrZV91bmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCi0gICAgLCBtX2Nv
bGxlY3RvclNsb3RWaXNpdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAi
QyIpKQotICAgICwgbV9tdXRhdG9yU2xvdFZpc2l0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTbG90Vmlz
aXRvcj4oKnRoaXMsICJNIikpCi0gICAgLCBtX211dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3Vu
aXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fcmFjZU1hcmtTdGFjayhzdGQ6Om1ha2Vf
dW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQotICAgICwgbV9jb25zdHJhaW50U2V0KHN0ZDo6bWFr
ZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnRTZXQ+KCp0aGlzKSkKKyAgICAsIG1fbWFjaGluZVRo
cmVhZHMobWFrZVVuaXF1ZTxNYWNoaW5lVGhyZWFkcz4oKSkKKyAgICAsIG1fY29sbGVjdG9yU2xv
dFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCisgICAgLCBtX211
dGF0b3JTbG90VmlzaXRvcihtYWtlVW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKKyAg
ICAsIG1fbXV0YXRvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAg
ICwgbV9yYWNlTWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBt
X2NvbnN0cmFpbnRTZXQobWFrZVVuaXF1ZTxNYXJraW5nQ29uc3RyYWludFNldD4oKnRoaXMpKQog
ICAgICwgbV9oYW5kbGVTZXQodm0pCi0gICAgLCBtX2NvZGVCbG9ja3Moc3RkOjptYWtlX3VuaXF1
ZTxDb2RlQmxvY2tTZXQ+KCkpCi0gICAgLCBtX2ppdFN0dWJSb3V0aW5lcyhzdGQ6Om1ha2VfdW5p
cXVlPEpJVFN0dWJSb3V0aW5lU2V0PigpKQorICAgICwgbV9jb2RlQmxvY2tzKG1ha2VVbmlxdWU8
Q29kZUJsb2NrU2V0PigpKQorICAgICwgbV9qaXRTdHViUm91dGluZXMobWFrZVVuaXF1ZTxKSVRT
dHViUm91dGluZVNldD4oKSkKICAgICAsIG1fdm0odm0pCiAgICAgLy8gV2Ugc2VlZCB3aXRoIDEw
bXMgc28gdGhhdCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlIGRvZXNuJ3QgY29udGlu
dW91c2x5IAogICAgIC8vIHNjaGVkdWxlIHRoZSB0aW1lciBpZiB3ZSd2ZSBuZXZlciBkb25lIGEg
Y29sbGVjdGlvbi4KQEAgLTMwNSw4ICszMDUsOCBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxs
YmFjazo6dHJ5Q3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9zd2VlcGVyKGFkb3B0UmVm
KCpuZXcgSW5jcmVtZW50YWxTd2VlcGVyKHRoaXMpKSkKICAgICAsIG1fc3RvcElmTmVjZXNzYXJ5
VGltZXIoYWRvcHRSZWYoKm5ldyBTdG9wSWZOZWNlc3NhcnlUaW1lcih2bSkpKQotICAgICwgbV9z
aGFyZWRDb2xsZWN0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4o
KSkKLSAgICAsIG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtT
dGFja0FycmF5PigpKQorICAgICwgbV9zaGFyZWRDb2xsZWN0b3JNYXJrU3RhY2sobWFrZVVuaXF1
ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fc2hhcmVkTXV0YXRvck1hcmtTdGFjayhtYWtl
VW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQogICAgICwgbV9oZWxwZXJDbGllbnQoJmhlYXBIZWxw
ZXJQb29sKCkpCiAgICAgLCBtX3RocmVhZExvY2soQm94PExvY2s+OjpjcmVhdGUoKSkKICAgICAs
IG1fdGhyZWFkQ29uZGl0aW9uKEF1dG9tYXRpY1RocmVhZENvbmRpdGlvbjo6Y3JlYXRlKCkpCkBA
IC0zMTQsNyArMzE0LDcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIG1fd29ybGRTdGF0ZS5zdG9yZSgwKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIG51
bWJlck9mUGFyYWxsZWxUaHJlYWRzID0gaGVhcEhlbHBlclBvb2woKS5udW1iZXJPZlRocmVhZHMo
KTsgaSA8IG51bWJlck9mUGFyYWxsZWxUaHJlYWRzOyArK2kpIHsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90VmlzaXRv
cj4oKnRoaXMsIHRvQ1N0cmluZygiUCIsIGkgKyAxKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9IG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0
b0NTdHJpbmcoIlAiLCBpICsgMSkpOwogICAgICAgICBpZiAoT3B0aW9uczo6b3B0aW1pemVQYXJh
bGxlbFNsb3RWaXNpdG9yc0ZvclN0b3BwZWRNdXRhdG9yKCkpCiAgICAgICAgICAgICB2aXNpdG9y
LT5vcHRpbWl6ZUZvclN0b3BwZWRNdXRhdG9yKCk7CiAgICAgICAgIG1fYXZhaWxhYmxlUGFyYWxs
ZWxTbG90VmlzaXRvcnMuYXBwZW5kKHZpc2l0b3IuZ2V0KCkpOwpAQCAtMzIzLDE3ICszMjMsMTcg
QEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIAogICAgIGlmIChP
cHRpb25zOjp1c2VDb25jdXJyZW50R0MoKSkgewogICAgICAgICBpZiAoT3B0aW9uczo6dXNlU3Rv
Y2hhc3RpY011dGF0b3JTY2hlZHVsZXIoKSkKLSAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMp
OworICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFN0b2NoYXN0aWNTcGFjZVRp
bWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
c2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigq
dGhpcyk7CisgICAgICAgICAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8U3BhY2VUaW1lTXV0
YXRvclNjaGVkdWxlcj4oKnRoaXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIHNpbXVs
YXRlIHR1cm5pbmcgb2ZmIGNvbmN1cnJlbnQgR0MgYnkgbWFraW5nIHRoZSBzY2hlZHVsZXIgc2F5
IHRoYXQgdGhlIHdvcmxkCiAgICAgICAgIC8vIHNob3VsZCBhbHdheXMgYmUgc3RvcHBlZCB3aGVu
IHRoZSBjb2xsZWN0b3IgaXMgcnVubmluZy4KLSAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0YXRvclNjaGVkdWxlcj4oKTsKKyAg
ICAgICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFN5bmNocm9ub3VzU3RvcFRoZVdvcmxkTXV0
YXRvclNjaGVkdWxlcj4oKTsKICAgICB9CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmlmeUhl
YXAoKSkKLSAgICAgICAgbV92ZXJpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFZlcmlmaWVy
Pih0aGlzLCBPcHRpb25zOjpudW1iZXJPZkdDQ3ljbGVzVG9SZWNvcmRGb3JWZXJpZmljYXRpb24o
KSk7CisgICAgICAgIG1fdmVyaWZpZXIgPSBtYWtlVW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywg
T3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uKCkpOwogICAg
IAogICAgIG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11dGF0b3Io
KTsKIApAQCAtODk5LDcgKzg5OSw3IEBAIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmplY3RDb3Vu
dCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVj
dFR5cGVDb3VudHMoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAg
IGZvckVhY2hQcm90ZWN0ZWRDZWxsKAogICAgICAgICBbJl0gKEpTQ2VsbCogY2VsbCkgewogICAg
ICAgICAgICAgcmVjb3JkVHlwZSgqdm0oKSwgKnJlc3VsdCwgY2VsbCk7CkBAIC05MDksNyArOTA5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0
VHlwZUNvdW50cygpCiAKIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6Om9iamVj
dFR5cGVDb3VudHMoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZUNvdW50U2V0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxUeXBlQ291bnRTZXQ+IHJlc3VsdCA9IG1ha2VVbmlxdWU8VHlwZUNvdW50U2V0PigpOwogICAg
IEhlYXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZSgqdGhpcyk7CiAgICAgbV9vYmplY3RT
cGFjZS5mb3JFYWNoTGl2ZUNlbGwoCiAgICAgICAgIGl0ZXJhdGlvblNjb3BlLApAQCAtMjg1Niw3
ICsyODU2LDcgQEAgdm9pZCBIZWFwOjphZGRDb3JlQ29uc3RyYWludHMoKQogICAgICAgICB9LAog
ICAgICAgICBDb25zdHJhaW50Vm9sYXRpbGl0eTo6U2VsZG9tR3JleWVkKTsKICAgICAKLSAgICBt
X2NvbnN0cmFpbnRTZXQtPmFkZChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25z
dHJhaW50PigqdGhpcykpOworICAgIG1fY29uc3RyYWludFNldC0+YWRkKG1ha2VVbmlxdWU8TWFy
a1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+KCp0aGlzKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWRkTWFy
a2luZ0NvbnN0cmFpbnQoc3RkOjp1bmlxdWVfcHRyPE1hcmtpbmdDb25zdHJhaW50PiBjb25zdHJh
aW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKaW5kZXggNWI2OWNk
NWUzNWY2MmI1MDY2M2E5Y2JkYzczOTRkMWJkNjdhZDFkOC4uZTFlYjZjNzgzM2Q0ODU4NzFhOWM1
MzNjZmQ0NzMxYzc1ZjliMTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5s
aW5lcy5oCkBAIC0yMTcsNyArMjE3LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVjcmVtZW50RGVm
ZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKQogaW5saW5lIEhhc2hTZXQ8TWFya2VkQXJndW1lbnRC
dWZmZXIqPiYgSGVhcDo6bWFya0xpc3RTZXQoKQogewogICAgIGlmICghbV9tYXJrTGlzdFNldCkK
LSAgICAgICAgbV9tYXJrTGlzdFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxNYXJrZWRB
cmd1bWVudEJ1ZmZlcio+PigpOworICAgICAgICBtX21hcmtMaXN0U2V0ID0gbWFrZVVuaXF1ZTxI
YXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7CiAgICAgcmV0dXJuICptX21hcmtMaXN0
U2V0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25h
cHNob3RCdWlsZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hv
dEJ1aWxkZXIuY3BwCmluZGV4IDViOWFjODlkYWJmMDRhMDYxNGRjMTBmYmJhZjE2YzBmNGE0OTlm
N2UuLjJkMmJjOGZiOWIyN2ZlOWY5YjFiNWJlNTRjYjc1MWY4M2UwZDNkMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwCkBAIC02
NSw3ICs2NSw3IEBAIHZvaWQgSGVhcFNuYXBzaG90QnVpbGRlcjo6YnVpbGRTbmFwc2hvdCgpCiAK
ICAgICBQcmV2ZW50Q29sbGVjdGlvblNjb3BlIHByZXZlbnRDb2xsZWN0aW9uU2NvcGUobV9wcm9m
aWxlci52bSgpLmhlYXApOwogCi0gICAgbV9zbmFwc2hvdCA9IHN0ZDo6bWFrZV91bmlxdWU8SGVh
cFNuYXBzaG90PihtX3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKKyAgICBtX3NuYXBz
aG90ID0gbWFrZVVuaXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIubW9zdFJlY2VudFNuYXBz
aG90KCkpOwogICAgIHsKICAgICAgICAgbV9wcm9maWxlci5zZXRBY3RpdmVTbmFwc2hvdEJ1aWxk
ZXIodGhpcyk7CiAgICAgICAgIG1fcHJvZmlsZXIudm0oKS5oZWFwLmNvbGxlY3ROb3coU3luYywg
Q29sbGVjdGlvblNjb3BlOjpGdWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2Vs
bFNldC5jcHAKaW5kZXggYjhlNDMwMTkxZTZiMWRjMjlhYTVjMGYxMGNkZDZlOWJiMTk4ZmRhOS4u
N2MyZWQyNDAyZmQ3MzAxZmMwOTlhOGRmYjVkM2MzMzZhZWFkMTEwZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgTkVWRVJfSU5M
SU5FIEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4qIElzb0NlbGxTZXQ6OmFkZFNs
b3coc2l6ZV90IGJsb2MKICAgICBhdXRvJiBiaXRzUHRyUmVmID0gbV9iaXRzW2Jsb2NrSW5kZXhd
OwogICAgIGF1dG8qIGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgIGlmICghYml0cykgewot
ICAgICAgICBiaXRzUHRyUmVmID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXA8TWFya2VkQmxvY2s6
OmF0b21zUGVyQmxvY2s+PigpOworICAgICAgICBiaXRzUHRyUmVmID0gbWFrZVVuaXF1ZTxCaXRt
YXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+PigpOwogICAgICAgICBiaXRzID0gYml0c1B0
clJlZi5nZXQoKTsKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICAgICAgbV9i
bG9ja3NXaXRoQml0c1tibG9ja0luZGV4XSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5jcHAKaW5kZXggZDUxMDAwZWJhODdmMzFkZTQ4MWJlZDA4YTVmMmZl
ZDhhNjM5ZmY5OS4uY2QzZTdlNTYxNTQ1NjZkY2Y4YzE1MTYzYTE1YjcyZjI3NjhmMjkzMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcApAQCAtMzksNyArMzks
NyBAQCBJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBI
ZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgcwogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBt
X2RpcmVjdG9yeSgmaGVhcCwgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjph
dG9tU2l6ZT4oc2l6ZSkpCiAgICAgLCBtX2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9yeSkKLSAg
ICAsIG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPElzb0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Io
bWFrZVVuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQogewogICAgIGluaXRpYWxp
emUoaGVhcENlbGxUeXBlLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNl
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5j
cHAKaW5kZXggYjNhYmQyYzUyMjRmY2UzZTVjZTEyYzRmMTYzZWQ0ODIzZGFlNjk4ZS4uMTc4MGMw
OGE0NzBmMjc2MjMxNjM3ZWY2ODExN2M5YTRlMzJjMWQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcApAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjpkaWRTdGFydE1hcmtpbmcoKQogCiB2b2lk
IE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQoQ1N0cmluZyBhYmJyZXZpYXRlZE5hbWUsIENTdHJp
bmcgbmFtZSwgOjpGdW5jdGlvbjx2b2lkKFNsb3RWaXNpdG9yJik+IGZ1bmN0aW9uLCBDb25zdHJh
aW50Vm9sYXRpbGl0eSB2b2xhdGlsaXR5LCBDb25zdHJhaW50Q29uY3VycmVuY3kgY29uY3VycmVu
Y3ksIENvbnN0cmFpbnRQYXJhbGxlbGlzbSBwYXJhbGxlbGlzbSkKIHsKLSAgICBhZGQoc3RkOjpt
YWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5h
bWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSwgY29uY3Vy
cmVuY3ksIHBhcmFsbGVsaXNtKSk7CisgICAgYWRkKG1ha2VVbmlxdWU8U2ltcGxlTWFya2luZ0Nv
bnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92
ZShmdW5jdGlvbiksIHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOwogfQog
CiB2b2lkIE1hcmtpbmdDb25zdHJhaW50U2V0OjphZGQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dC5jcHAKaW5kZXggODJiZTNiYmI0NGNiNmM1Nzc2YjhlY2Y3ZmEwYzk0MGQ1ZDVhNTgyNS4uNTNh
OTFhMjNjMWQ4OTI5MThlZTQyOTQxYTY1ZjUyNzg2N2Q0MzM0YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25z
b2xlQ2xpZW50LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29s
ZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzcwog
CiAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNT
dHJpbmcobWVzc2FnZSk7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUo
c3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQ
SSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYykpOworICAg
IG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBX
VEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQ6OmNvdW50KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAg
LTkxLDcgKzkxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUo
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgICAgICAgICAgaWYgKGV4
aXN0aW5nVGl0bGUgPT0gdGl0bGUpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBh
biBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAg
IFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJl
YWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVh
ZHkgZXhpc3RzIik7Ci0gICAgICAgICAgICAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
d2FybmluZykpOworICAgICAgICAgICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTExOSw3ICsxMTksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmls
ZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bAogCiAgICAgLy8gRklYTUU6
IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICBTdHJp
bmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1h
a2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAg
bV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2Zp
bGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgIG1fY29uc29sZUFn
ZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVD
bGllbnQ6OnN0YXJ0Q29uc29sZVByb2ZpbGUoKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEV4ZWNTdGF0ZSosIFJlZjxTY3Jp
cHRBcmd1bWVudHM+JiYpCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6d2FyblVu
aW1wbGVtZW50ZWQoY29uc3QgU3RyaW5nJiBtZXRob2QpCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2Ug
PSBtZXRob2QgKyAiIGlzIGN1cnJlbnRseSBpZ25vcmVkIGluIEphdmFTY3JpcHQgY29udGV4dCBp
bnNwZWN0aW9uLiI7Ci0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKSk7CisgICAg
bV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCBtZXNzYWdlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ZGE1MmVm
ZDEzYzQ5MWNjYWU2Mzk1ZTA3NGM0NjQ0ZTcwY2MwYTcuLmJkYmQzMWQ2MzEyYjJjMDU2ZDdjNDc4
MTVkYzYxNWQxMjI2ZDkyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyKEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBtX2dsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5p
cXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVkU2NyaXB0SG9zdDo6Y3Jl
YXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxJbmplY3Rl
ZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAg
ICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCiAgICAgLCBtX3Nj
cmlwdERlYnVnU2VydmVyKGdsb2JhbE9iamVjdCkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJv
bnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQpAQCAtNzEsMTEgKzcxLDExIEBAIEpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKEpT
R2xvYmFsT2JqCiB7CiAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKIAotICAg
IGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDb25zb2xlQWdl
bnQ+KGNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3JDb25zb2xlQWdlbnQ+KGNvbnRleHQpOwogICAgIG1fY29uc29sZUFnZW50ID0gY29uc29sZUFn
ZW50LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkpOwog
Ci0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ+KG1fY29uc29sZUFnZW50KTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtl
VW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwogCiAg
ICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiB9CkBAIC0yMDAsNyArMjAwLDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQSUV4Y2VwdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2UKICAgICAgICAgICAgIENvbnNvbGVDbGllbnQ6OnByaW50
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgU3RyaW5nKCksIDAsIDApOwogICAgIH0KIAot
ICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAg
IG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvck1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogfQogCiBDb25zb2xl
Q2xpZW50KiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbnNvbGVDbGllbnQo
KSBjb25zdApAQCAtMjgwLDcgKzI4MCw3IEBAIEluc3BlY3RvckFnZW50JiBKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAo
IW1faW5zcGVjdG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRl
eHQoKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQWdlbnQ+KGNvbnRleHQpOworICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oY29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdl
bnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1v
dmUoaW5zcGVjdG9yQWdlbnQpKTsKICAgICB9CkBAIC0yOTEsNyArMjkxLDcgQEAgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVE
ZWJ1Z2dlckFnZW50KCkKIHsKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudCkgewogICAgICAgICBh
dXRvIGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRlYnVnZ2VyQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4
dCwgbV9jb25zb2xlQWdlbnQpOworICAgICAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5p
cXVlPEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudD4oY29udGV4dCwgbV9jb25zb2xlQWdlbnQp
OwogICAgICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBkZWJ1Z2dlckFnZW50LmdldCgpOwogICAgICAg
ICBtX2NvbnNvbGVDbGllbnQtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQobV9kZWJ1Z2dlckFn
ZW50KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwpA
QCAtMzI3LDIwICszMjcsMjAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xs
ZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKIAot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGlt
ZUFnZW50Pihjb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9i
YWxPYmplY3RSdW50aW1lQWdlbnQ+KGNvbnRleHQpKTsKIAogICAgIGVuc3VyZURlYnVnZ2VyQWdl
bnQoKTsKIAotICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBzY3Jp
cHRQcm9maWxlckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50Pihjb250ZXh0KTsKICAgICBtX2NvbnNvbGVDbGllbnQtPnNldEluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAgICAgbV9hZ2VudHMu
YXBwZW5kKFdURk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBoZWFw
QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4dCk7Cisg
ICAgYXV0byBoZWFwQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckhlYXBBZ2VudD4oY29udGV4
dCk7CiAgICAgaWYgKG1fY29uc29sZUFnZW50KQogICAgICAgICBtX2NvbnNvbGVBZ2VudC0+c2V0
SW5zcGVjdG9ySGVhcEFnZW50KGhlYXBBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURk1vdmUoaGVhcEFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdEF1ZGl0QWdlbnQ+KGNvbnRleHQpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggYzBiNWM5
YWFkMThjMDhjZWRkYzM2OTY2YmYwNDY4NTE0MTc2MjY0My4uNDE3ZTc3NWZiODAyNDljMDQwMzEz
N2E4Mjc4MjEzNzMyN2QzMzJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApAQCAtNDAsNyArNDAsNyBA
QCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChB
Z2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkluc3BlY3Rv
ciJfcykKICAgICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKLSAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDdlZGJjODA2NjBmMzZkNmE4MWFh
OTFmYjhmYTNmZGRkZWRhZTZmMjYuLjVkMjRjNjllNmJmNDVkNzJmYjBiZGE1M2I0YzQ1NzU5ODYx
M2NiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtNDUsNyArNDUsNyBA
QCBzdGF0aWMgY29uc3QgaW50IGV4cGlyZUNvbnNvbGVNZXNzYWdlc1N0ZXAgPSAxMDsKIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6SW5zcGVjdG9yQ29uc29sZUFnZW50KEFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ29uc29sZSJfcykKICAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKG1ha2VVbmlxdWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENvbnNvbGVCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAt
MTQwLDcgKzE0MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlCiAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9u
dGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJp
bmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgd2FybmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkp
OworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShl
eGVjLCAxKSkpOwogICAgIH0KIH0KIApAQCAtMTU5LDE0ICsxNTksMTQgQEAgdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbCwKICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBG
SVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAg
ICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBk
b2VzIG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VU
eXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxs
U3RhY2spKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQt
PnZhbHVlOwogICAgIFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3Rh
cnRUaW1lOwogICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMi
KTsKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3Nh
Z2VMZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxs
U3RhY2spKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNz
YWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY2Fs
bFN0YWNrKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTE4NCwxNCArMTg0
LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5k
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9y
IGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1l
ciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdh
cm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xl
KG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92
ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNU
aW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9u
aWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcobGFiZWwsICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxp
c2Vjb25kcygpLCAzKSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxT
dGFjaykpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3Nh
Z2VMZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogCiAgICAgbV90
aW1lcy5yZW1vdmUoaXQpOwogfQpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50Ojpjb3VudChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJl
bCkKICAgICAvLyBGSVhNRTogV2ViIEluc3BlY3RvciBzaG91bGQgaGF2ZSBhIGJldHRlciBVSSBm
b3IgY291bnRlcnMsIGJ1dCBmb3Igbm93IHdlIGp1c3QgbG9nIGFuIHVwZGF0ZWQgY291bnRlciB2
YWx1ZS4KIAogICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSk7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtl
VW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFn
ZW50Ojpjb3VudFJlc2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVs
KQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJl
c2V0KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsCiAgICAgaWYgKGl0
ID09IG1fY291bnRzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8g
dGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0g
bWFrZVN0cmluZygiQ291bnRlciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAg
ICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhl
YywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNv
bGUoZXhlYywgMSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlNWYyNDgyYTNjYWEwOGFhODE2NDVmYThjNzljNTI5YmE0
MzgwZDBhLi4yNWYxZDNlNzI4MWM2YjBmYjgzMzBmZjEzNzg3MzY0M2ViYzYwZWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgU3Ry
aW5nIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50
QWN0aW9uJiBhY3RpbwogCiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
RGVidWdnZXIiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVl
PERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGNvbnRleHQuZW52aXJvbm1l
bnQuc2NyaXB0RGVidWdTZXJ2ZXIoKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNv
bnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKaW5k
ZXggYjUzNWZmNjE5MmFhY2VmYzc5YjRmNmNkOTNkZjEyMDFhMzcxNDhhYy4uNTgyYzM1ZDM2N2Rm
ZTFlNGY3ZGM0ZTlhNTY4NGRjYTJhNGUzYjRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSW5zcGVjdG9ySGVhcEFn
ZW50OjpJbnNwZWN0b3JIZWFwQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKCJIZWFwIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIo
Y29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihzdGQ6Om1ha2VfdW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxIZWFwRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoSGVhcEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1l
bnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4
IDU2ZmMxYjc5OGRhMGVlZWVhMDIzMzFlZDUyNTRhOTUwMjEwMDU4NzQuLmNiYWQ4MWQ2OTk0NDBh
NzMzYjBhZjA0MTY5NGE4NmNhOWU2ZThlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlw
dFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
U2NyaXB0UHJvZmlsZXIiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8U2NyaXB0UHJv
ZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihTY3JpcHRQcm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2Vudmlyb25tZW50
KGNvbnRleHQuZW52aXJvbm1lbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKaW5k
ZXggM2FjYTQxMDUxMGZlNTAwZjA1YmZiYWFjNDY3ZmZkYWNjYjIxYzUyNC4uOTM1MDY4YzdhZTEx
OTcxMDU0NGMxZjc2Nzk4MjJkZmI2NmU1NmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50
LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9y
VGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KEZyb250ZW5kUm91dGVyJiBmcm9udGVu
ZFJvdXRlciwgQmFja2VuZERpc3BhdGNoZXImIGJhY2tlbmREaXNwYXRjaGVyKQogICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKCJUYXJnZXQiX3MpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIp
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxUYXJnZXRGcm9udGVuZERp
c3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoVGFy
Z2V0QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAppbmRleCBlMzI5
YTNiNDNjZDYwOTY1ZDlmNzc4NWE0ODIyMDExYWIzNjZmYTUzLi45YjNmMzc5ZDVlNWE0OTBkYmUz
NzVjNzJhYzk5ZmE3MjBiOWFjY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmIGUKIAog
dm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9jb25z
b2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6
TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSwgMCkpOworICAgIG1f
Y29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3Nh
Z2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Okxv
ZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2Vu
dC5jcHAKaW5kZXggMTQ1ZDA1MTZiOGUzOTY4ODc4ZDkyY2I1OTRhYTU5OWJhZmEzOWQzMi4uM2I3
YzNlMjFkMzFjMWMyZjViNmQxYmEwYzE2ZjQ4ODgzZTZjZjMxNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0UnVudGltZUFnZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50KEpTQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGlt
ZUFnZW50KGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5p
cXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNo
ZXIoUnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiAgICAgLCBtX2dsb2JhbE9iamVjdChjb250ZXh0Lmluc3BlY3RlZEdsb2Jh
bE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQuY3BwCmluZGV4IDcxMDE2NjhhOTdjODc0NDgxMmY0NjU2ZjE2ZTBiN2RkNTk0
ZjFhNjAuLmNjOTY0MDA1Njc5ZGJmY2Q0ZmUwMjkwNmJjOTNjMjNiMmM4MmVjY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApA
QCAtMTQ0LDExICsxNDQsMTEgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRlQ2xpZW50KFBsYXRmb3JtU29ja2UKIAogICAgIFNvY2tl
dDo6c2V0dXAoc29ja2V0KTsKIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8U29ja2V0OjpDb25uZWN0aW9uPigpOworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlx
dWU8U29ja2V0OjpDb25uZWN0aW9uPigpOwogCiAgICAgY29ubmVjdGlvbi0+cG9sbCA9IFNvY2tl
dDo6cHJlcGFyZVBvbGxpbmcoc29ja2V0KTsKICAgICBjb25uZWN0aW9uLT5zb2NrZXQgPSBzb2Nr
ZXQ7Ci0gICAgY29ubmVjdGlvbi0+cGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUGFy
c2VyPihpZCwgU29ja2V0OjpCdWZmZXJTaXplKTsKKyAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBt
YWtlVW5pcXVlPE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwogICAgIGNv
bm5lY3Rpb24tPnBhcnNlci0+c2V0RGlkUGFyc2VNZXNzYWdlTGlzdGVuZXIoW3RoaXNdKENvbm5l
Y3Rpb25JRCBpZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgewogICAgICAgICBpZiAobV9pbnNw
ZWN0b3JDbGllbnQpCiAgICAgICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+ZGlkUmVjZWl2ZVdl
Ykluc3BlY3RvckV2ZW50KGlkLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKaW5kZXggNzBmMmQ3YTQ4MTM0NzBm
ODEzNzMyYjNiOTc3YjViNzNhNDE5NjBiNS4uMzIwNDAwZmQ1YjNjZGIyYzRiMTVkYmRjOTMwNDZi
YmZkMDBjYWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUg
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+IGNyZWF0ZShSZW1vdGVJ
bnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQsIGNvbnN0IGNoYXIqIG5h
bWUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVu
dCwgbmFtZSk7CiAgICAgfQogCiAgICAgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQoUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCosIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2Vu
ZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQppbmRleCA2NmY5ZmQyZGM0
NzBkMjFmNGRlNTdkZTgyOGMxNTk0NDU2NzEyM2JiLi5mYTUwNmE2MWU5OWIzOWE4NzQ2ZTBjZTVi
ZTBkNmFiYzBiMGE0ZTk0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0
b3JfdGVtcGxhdGVzLnB5CkBAIC0xMzgsOCArMTM4LDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvclRl
bXBsYXRlczoKICAgICBbXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgcmVsZWFzZV07CiAg
ICAgXyR7dmFyaWFibGVOYW1lUHJlZml4fUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0g
ICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVj
dG9yJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1C
YWNrZW5kRGlzcGF0Y2hlcj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5h
dGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywgKl9j
b250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxl
ci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwv
ZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2Rl
ZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDg4NDJjOWViNjk3
NTZjZTYxNDdlYzRjMmQ5N2JmNzJjN2YzNTIyM2EuLmUwNzJmYWIyMjEyOWNhZjY0YTIyZjY0ZWYz
NGUxZTA4YWZhNzI4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZv
cm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29u
LXJlc3VsdApAQCAtNzcxLDggKzc3MSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAg
ICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29ya0hhbmRsZXIgPSBbaGFu
ZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsK
LSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0
ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VV
bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Cisg
ICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERp
c3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURp
c3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFs
dGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5
bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRy
aWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggYTcxNGZiMTMxODMyOTNkMTgzMmZjNTgxZTZjNTMzNzg2
ODAyZDU3Mi4uYzBlMTczMzdmZDRhNzk4ODMwZTg1ZDI5ZTg1ZDhlZDMwMjBjYTc5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTEx
ODksOCArMTE4OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kYXRhYmFz
ZUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVyIHJldGFp
bl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9i
akNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRv
IGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRl
RGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8
T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1
dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50
PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRl
cm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlv
bmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggNTNi
ZDU1M2I3YmE3NGRkZDI5ZTI1NTFjYzBiODRmYTQzMDcxNGNhZS4uYWVkMDdiNzVlOGI4ODhkZDU5
MzM5MGFmYTIxZDJjODkwZGRmYzU4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Nv
bW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApA
QCAtMTA2OCw4ICsxMDY4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2Rh
dGFiYXNlSGFuZGxlciByZWxlYXNlXTsKICAgICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIg
cmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAg
IGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNo
YWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVu
aXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Cisg
ICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3Zl
KGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFi
aWxpdHkuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0
CmluZGV4IDY3OGM2YWFhODVhY2EzODQyNDhiOTkyOTAzNGNjZjA5NDExOGRlZTcuLjFhZGNiZDNm
ZDJhY2I5Y2ExNDYxYzMwOGU0NWM0OTJlYzNlMDMyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFp
bi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0
eS5qc29uLXJlc3VsdApAQCAtNzgyLDggKzc4Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAgICAgW19kb21haW5BSGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWluQUhhbmRsZXIg
PSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5BQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURv
bWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5BIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxl
cik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFj
a2VuZERpc3BhdGNoZXI+PigiRG9tYWluQSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKQEAgLTgwMCw4ICs4MDAsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZG9tYWluQkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2Rv
bWFpbkJIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkJCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQkJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVEb21haW5CQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQiJfcywgKl9jb250
cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5CQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwg
V1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4
dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRleCBmNmM1
ZWRjY2I5Mjg1YWY0OGM2ZGViOTg0MjJhNzIzNmI4NzAyZDRlLi5hM2UyN2RmMzhjZWFmYmIzYzQ1
MWUxM2I2MTE5ZTJlNTRjM2QyYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFy
eWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12
YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKQEAgLTEwMzksOCArMTAzOSw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07
CiAgICAgX25ldHdvcmsxSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdv
cmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdv
cmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQg
PSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEi
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2Nv
bnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQog
CkBAIC0xMDU3LDggKzEwNTcsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
bmV0d29yazNIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrM0hhbmRsZXIgPSBbaGFuZGxl
ciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0g
ICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNC
YWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFs
dGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtl
VW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsK
KyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudDxOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyPj4oIk5ldHdvcmszIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1v
dmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCBlYzBjMTBi
NGRiNDZiM2JjMDgzODZmZmI3M2NmZmY5OTA4NmJmMDY0Li5hYmZiNmUxNTM3MzZlN2Q0NmJjZGIw
Y2JmMzU3OWIzZWJkMDljNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtODE1LDggKzgxNSw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19jb21tYW5kRG9tYWluSGFuZGxl
ciByZWxlYXNlXTsKICAgICBfY29tbWFuZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBh
dXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudDxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmRE
b21haW5CYWNrZW5kRGlzcGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIs
IFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0
Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBB
bHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFpbiJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29u
dHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5q
c29uLXJlc3VsdAppbmRleCAzMGU4MmM1YTE3NjYyOGNlYmJkYmIwZmM0MTBlZTk2YzhhNDhkYzQ5
Li42YmRlZmYxODc5N2MxNjk1YTgxZmIxNTY0MDZkZTM5YzlmODgxN2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0
CkBAIC03OTgsOCArNzk4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25l
dHdvcmsxSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVyID0gW2hhbmRsZXIg
cmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAg
IGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNo
YWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFj
a2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVu
aXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Cisg
ICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0
ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3Zl
KGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1t
YWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3Jt
Lmpzb24tcmVzdWx0CmluZGV4IDg4NDJjOWViNjk3NTZjZTYxNDdlYzRjMmQ5N2JmNzJjN2YzNTIy
M2EuLmUwNzJmYWIyMjEyOWNhZjY0YTIyZjY0ZWYzNGUxZTA4YWZhNzI4NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZp
bml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtNzcxLDggKzc3MSw4IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNl
XTsKICAgICBfbmV0d29ya0hhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29y
a0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3Jr
Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1
dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1h
a2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRj
aGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9j
b250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxl
ci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA4MzQyZTVmYzVlZmNhMjg0OWRmZDEyZGI3YWE0YWI0
OTgyYjYxZmU4Li5lZjkwNjY5NDMwYmIxMjZlNjg5YmJjN2JmZmE5YmIwZjU0NDczM2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgfQog
CiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IChtX3ZtLT5t
X3BlckJ5dGVjb2RlUHJvZmlsZXIgJiYgT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclBy
b2ZpbGVyKCkpKSkKLSAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJ
VERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2spOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1h
a2VVbmlxdWU8SklURGlzYXNzZW1ibGVyPihtX2NvZGVCbG9jayk7CiAgICAgaWYgKFVOTElLRUxZ
KG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikpIHsKICAgICAgICAgbV9jb21waWxhdGlvbiA9
IGFkb3B0UmVmKAogICAgICAgICAgICAgbmV3IFByb2ZpbGVyOjpDb21waWxhdGlvbigKQEAgLTkw
MSw3ICs5MDEsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogICAgIH0KIAogICAg
IGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkKLSAgICAg
ICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlxdWU8UENU
b0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRj
aEJ1ZmZlcikpOworICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFr
ZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVp
bGRlciksIHBhdGNoQnVmZmVyKSk7CiAgICAgCiAgICAgQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBy
ZXN1bHQgPSBGSU5BTElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwgSlNFbnRyeVB0clRh
ZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCAxNmJmNzBkODAx
NzQ0MjMwNTAyYTJkOGIxOTdjZDQwMWM4MDI0ZjM4Li41YmRmODMwNDY1MDQzOTk0ZTExYmFmZmVk
NTJiYjc4NWMxYmEwYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3Bw
CkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogSklUVGh1bmtzOjpKSVRUaHVu
a3MoKQotICAgIDogbV9ob3N0RnVuY3Rpb25TdHViTWFwKHN0ZDo6bWFrZV91bmlxdWU8SG9zdEZ1
bmN0aW9uU3R1Yk1hcD4oKSkKKyAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChtYWtlVW5pcXVl
PEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCmluZGV4IGUzODhmYjBlNjI3MDhiMzRlY2I5NzFlOTQ2YjQ2YjE5M2M0Y2FlM2Iu
LjhmOWE4NjRlNGZlODYyNmExZmVmYzBjMzA3YzllNDY1NjYyZjVhOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9pZCBsaW5rUG9s
eW1vcnBoaWNDYWxsKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsRnJhbWVTaHVmZmxlcj4gZnJh
bWVTaHVmZmxlcjsKICAgICBpZiAoY2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSkgewog
ICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKSk7Ci0gICAgICAgIGZyYW1l
U2h1ZmZsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAq
Y2FsbExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSk7CisgICAgICAgIGZyYW1lU2h1ZmZsZXIg
PSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZmbGVyPihzdHViSml0LCAqY2FsbExpbmtJbmZvLmZy
YW1lU2h1ZmZsZURhdGEoKSk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgLy8gV2Ug
d291bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbCwgYW5k
IHdlIGNhbgogICAgICAgICAvLyB1c2UgdGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIgdGhpcyBidXlz
IHVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBjNjgxN2UwNDVmNTY3ZTllZDNhMGU1OTU3ZDI1
ZTYzNzk4NTY1ZmFlLi41YWIwMGVmN2ZlNTkzMWY3NDYyNGZlN2MxZjFiMGFjNDY3MWMwMjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjk2OSw3ICsyOTY5LDcgQEAgaW50IHJ1bkpTQyhjb25z
dCBDb21tYW5kTGluZSYgb3B0aW9ucywgYm9vbCBpc1dvcmtlciwgY29uc3QgRnVuYyYgZnVuYykK
ICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKICAgICAgICAgaWYgKG9wdGlvbnMu
bV9wcm9maWxlICYmICF2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpCi0gICAgICAgICAgICB2bS5t
X3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFz
ZT4odm0pOworICAgICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gbWFrZVVuaXF1
ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZtKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QgPSBHbG9i
YWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpz
TnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50cyk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0
UmVtb3RlRGVidWdnaW5nRW5hYmxlZChvcHRpb25zLm1fZW5hYmxlUmVtb3RlRGVidWdnaW5nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmOGRiZTcxOTZmMTEx
NzE2ZDBhNThmN2Y1N2UzZjhmNjdiN2EyYWNmLi5hMTY0ZmQ5MDNmMzZlOTQyMGE3MzY0ZWY0Mjdj
NmMyZmZlMzIyY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0xNDAsNyArMTQwLDcgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgICwgbV9pbW1lZGlh
dGVQYXJlbnRBbGxvd3NGdW5jdGlvbkRlY2xhcmF0aW9uSW5TdGF0ZW1lbnQoZmFsc2UpCiAgICAg
LCBtX2RlYnVnZ2VyUGFyc2VEYXRhKGRlYnVnZ2VyUGFyc2VEYXRhKQogewotICAgIG1fbGV4ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2Rl
KTsKKyAgICBtX2xleGVyID0gbWFrZVVuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwg
c2NyaXB0TW9kZSk7CiAgICAgbV9sZXhlci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5h
KTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZSA9IHNvdXJjZS5maXJzdExpbmUoKS5vbmVC
YXNlZEludCgpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldCA9IHNvdXJjZS5z
dGFydE9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNjlh
YTBiYzE5MGFmNjc4M2Q4OTI4YzM1OWFhM2IxMGJiMWZiZDg3My4uMGE1ZWRlNGI4NDI1Y2ZkMWIz
MTdjNzZjNTFlYTczNzgxNzgwYjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICB2b2lkIHB1c2hMYWJl
bChjb25zdCBJZGVudGlmaWVyKiBsYWJlbCwgYm9vbCBpc0xvb3ApCiAgICAgewogICAgICAgICBp
ZiAoIW1fbGFiZWxzKQotICAgICAgICAgICAgbV9sYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExh
YmVsU3RhY2s+KCk7CisgICAgICAgICAgICBtX2xhYmVscyA9IG1ha2VVbmlxdWU8TGFiZWxTdGFj
az4oKTsKICAgICAgICAgbV9sYWJlbHMtPmFwcGVuZChTY29wZUxhYmVsSW5mbyB7IGxhYmVsLT5p
bXBsKCksIGlzTG9vcCB9KTsKICAgICB9CiAKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3Im
IGVycm9yLCBjb25zdCBJCiAgICAgICAgIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IG1f
bGV4ZXItPmN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKICAgICAgICAgZW5kTG9jYXRpb24uc3Rh
cnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCk7CiAgICAgICAgIHVuc2lnbmVkIGVu
ZENvbHVtbiA9IGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0IC0gZW5kTG9jYXRpb24ubGluZVN0YXJ0
T2Zmc2V0OwotICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlZE5vZGU+KG1f
cGFyc2VyQXJlbmEsCisgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8UGFyc2VkTm9kZT4obV9w
YXJzZXJBcmVuYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRMb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29sdW1uLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IGRmMTdiZTUzNjYzZTdj
YjdiNzBjNDg3NzBmOWEwNTI5Y2YzM2E3ZWUuLjQxMDAwNmQ5Mjc1MWNlOTZiOTJjYjk2MjU2MzVl
YTdjZjc4ZWM0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmgKQEAgLTE4MCw3ICsxODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWRlbnRpZmll
ckFyZW5hJiBpZGVudGlmaWVyQXJlbmEoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkgKCFtX2lkZW50aWZpZXJBcmVuYSkpCi0gICAgICAgICAgICAgICAgbV9pZGVudGlmaWVy
QXJlbmEgPSBzdGQ6Om1ha2VfdW5pcXVlPElkZW50aWZpZXJBcmVuYT4oKTsKKyAgICAgICAgICAg
ICAgICBtX2lkZW50aWZpZXJBcmVuYSA9IG1ha2VVbmlxdWU8SWRlbnRpZmllckFyZW5hPigpOwog
ICAgICAgICAgICAgcmV0dXJuICptX2lkZW50aWZpZXJBcmVuYTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlv
bi5jcHAKaW5kZXggMDUwMzJiNWQxMzEwOGMwZWI2MjBlOWRhZTgyMGNlZjdhYzc1MzE4Yy4uMzU3
MTFiNWZhNjQyNjllNjc3NGFiNzBlMjFkZDUwMjUxNjljOGVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcApAQCAt
NzksNyArNzksNyBAQCBFeGVjdXRpb25Db3VudGVyKiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291
bnRlckZvcihjb25zdCBPcmlnaW5TdGFjayYgb3JpZ2luKQogewogICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeGVjdXRpb25Db3VudGVyPiYgY291bnRlciA9IG1fY291bnRlcnMuYWRkKG9yaWdpbiwgbnVs
bHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghY291bnRlcikKLSAgICAgICAgY291bnRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKKyAgICAgICAgY291bnRl
ciA9IG1ha2VVbmlxdWU8RXhlY3V0aW9uQ291bnRlcj4oKTsKIAogICAgIHJldHVybiBjb3VudGVy
LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDcw
YzcxNDczMzI0NDQwODA3ODc5MzQwMTk4NjY3M2M5N2UxZWE4M2QuLmE2NGRlM2ZkZDY2MjU1MThh
YzVkMTI2Y2VhYzc4YjZmMjEyNWE0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNr
RnJhbWU+PiBnZXRTdGFja1RyYWNlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iagogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHNpemVfdCBmcmFtZXNUb1NraXAgPSB1c2VDdXJy
ZW50RnJhbWUgPyAwIDogMTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+
PiBzdGFja1RyYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IG1ha2VV
bmlxdWU8VmVjdG9yPFN0YWNrRnJhbWU+PigpOwogICAgIHZtLmludGVycHJldGVyLT5nZXRTdGFj
a1RyYWNlKG9iaiwgKnN0YWNrVHJhY2UsIGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2JqZWN0LT5zdGFj
a1RyYWNlTGltaXQoKS52YWx1ZSgpKTsKICAgICBpZiAoIXN0YWNrVHJhY2UtPmlzRW1wdHkoKSkK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjID09IHZtLnRvcENhbGxGcmFtZSB8fCBl
eGVjLT5pc0dsb2JhbEV4ZWMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA0MzllMjA5YjBhNWY4ZmI4MjliNzkx
OTc1NzQ4OGM0MTU2MzQyNzNmLi5lZjJlODMwODc0MWI4ODUyZTU2MjMyNmY5NjI1N2M5ZDAyOTM1
ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiBGdW5jdGlvbkV4ZWN1dGFibGU6OlJh
cmVEYXRhJiBGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAg
QVNTRVJUKCFtX3JhcmVEYXRhKTsKLSAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxSYXJlRGF0YT4oKTsKKyAgICBhdXRvIHJhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4o
KTsKICAgICByYXJlRGF0YS0+bV9saW5lQ291bnQgPSBsaW5lQ291bnQoKTsKICAgICByYXJlRGF0
YS0+bV9lbmRDb2x1bW4gPSBlbmRDb2x1bW4oKTsKICAgICByYXJlRGF0YS0+bV9wYXJhbWV0ZXJz
U3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCA0NjIzNjQxYzU5OGUz
ZWJiNWZiYTZiYzAyMzcyNjRlNTA1MmZkMTc5Li41MmIyOGIxM2M3ZTJlMjVkMjFiYmJhYjNhZDMx
ZDViNmJjMGNkZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0
YTo6QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgZmluYWwgOiBwdWJsaWMgV2F0
Y2gKIGlubGluZSBXYXRjaHBvaW50KiBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVBbGxvY2F0aW9u
UHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWhhc0Fs
bG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkpOwotICAgIG1fYWxsb2NhdGlvblBy
b2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsbG9jYXRpb25Qcm9m
aWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0aGlzKTsKKyAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xl
YXJpbmdXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0
Y2hwb2ludD4odGhpcyk7CiAgICAgcmV0dXJuIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dh
dGNocG9pbnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxYTU3ZWYzZGNmZTkxOWU3MGIzN2ZhN2UzNDg1NGEx
M2U5MDUzZmFlLi5jYzg3NzY3ZjEwOGJjYzQ4M2IzMTVmMTEyZmE5YzUzNDdmNTIwMTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC00NzcsOCArNDc3LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAg
bV9kZWJ1Z2dlciA9IDA7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX2lu
c3BlY3RvckNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcyk7Ci0gICAgbV9pbnNwZWN0b3JEZWJ1Z2dh
YmxlID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsK
KyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6SlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JEZWJ1
Z2dhYmxlID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+KCp0aGlzKTsKICAg
ICBtX2luc3BlY3RvckRlYnVnZ2FibGUtPmluaXQoKTsKICAgICBtX2NvbnNvbGVDbGllbnQgPSBt
X2luc3BlY3RvckNvbnRyb2xsZXItPmNvbnNvbGVDbGllbnQoKTsKICNlbmRpZgpAQCAtMTE0NSw1
NyArMTE0NSw1NyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENv
bnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogCiAgICAgewogICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2lu
dChhcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAg
ICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAg
ICAgICBtX2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywg
Y29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBt
X2FycmF5SXRlcmF0b3JQcm90b3R5cGVOZXh0LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewog
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZl
V2F0Y2hwb2ludCh0aGlzLT5hcnJheVByb3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJv
bEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9h
cnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9hcnJheVByb3RvdHlw
ZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewog
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZl
V2F0Y2hwb2ludChtYXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0
KTsKLSAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKKyAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKICAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5p
bnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
biBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQo
KSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fbWFwUHJv
dG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhp
cywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAg
bV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAg
ICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAg
ICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChzZXRJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9w
ZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5l
eHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5l
eHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3Nl
dFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0g
ICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBt
YWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdh
dGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnQpOwogICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+
aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3N0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwor
ICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5p
cXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9p
bnQpOwogICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmlu
c3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nUHJvdG90eXBlLmdl
dCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zdHJp
bmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9i
amVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+
Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwor
ICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VV
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludCk7CiAgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBl
LmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnNldCk7Ci0gICAgICAgIG1fbWFwUHJvdG90eXBl
U2V0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9t
YXBTZXRXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOwogICAg
ICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAog
ICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1l
cy0+YWRkKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOworICAgICAg
ICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc2V0QWRkV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0
Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBjYXBp
dGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVy
ZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICB0aGlzLT5zeW1ib2xQcm90b3R5cGUoKTsKIAog
ICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZl
V2F0Y2hwb2ludChudW1iZXJQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcp
OwotICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQp
OworICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOwogICAg
ICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAg
ICAgICAgIG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0
PEpTRnVuY3Rpb24qPihudW1iZXJQcm90b3R5cGUtPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+dG9TdHJpbmcpKSk7CiAgICAgfQpAQCAtMTkzMiwxMCArMTkzMiwxMCBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludC5pc0Jl
aW5nV2F0Y2hlZCgpKTsKICAgICBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQudG91Y2godm0sICJT
ZXQgdXAgYXJyYXkgc3BlY2llcyB3YXRjaHBvaW50LiIpOwogCi0gICAgbV9hcnJheVByb3RvdHlw
ZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0
cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlQ
cm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25z
dHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKICAgICBtX2FycmF5
UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKIAotICAgIG1fYXJy
YXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhp
cywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2Fy
cmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNw
ZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheUNv
bnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAwNDdjMTY2NTNl
NzFiMWE4MDZiZDlmYzdkNTY2NDNhNWY5ODhmMTFlLi44NDUzNWNhNWM2MDBjZWNiZDhiNDc4ZjY1
YjUzY2QwN2UzNmE4MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTUyMSw3ICs1MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICB7CiAgICAgICAgIGlmICht
X3JhcmVEYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVE
YXRhID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdFJhcmVEYXRhPigpOwogICAgIH0KICAgICAg
ICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1J1bkxvb3BUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxv
b3BUaW1lci5jcHAKaW5kZXggMWFmMDAzNjUzY2I4YzNkZTY0M2Y4YzQ5MTI3YWJiM2U1NTEzZDVh
ZC4uMzI3ZmVkMDZjNjdhNWJmMTEyNTFmOWY0ZGVkODM5ZTcwMzNjOGFiOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcApAQCAtODcsNyAr
ODcsNyBAQCB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpQZXJWTURhdGE6OnNldFJ1bkxv
b3AoTWFuYWdlciogbWFuYWdlciwgQ0ZSdW5Mb29wUgogI2Vsc2UKIEpTUnVuTG9vcFRpbWVyOjpN
YW5hZ2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YShNYW5hZ2VyJiBtYW5hZ2VyKQogICAgIDogcnVu
TG9vcCgmUnVuTG9vcDo6Y3VycmVudCgpKQotICAgICwgdGltZXIoc3RkOjptYWtlX3VuaXF1ZTxS
dW5Mb29wOjpUaW1lcjxNYW5hZ2VyPj4oKnJ1bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZUNhbGxiYWNrKSkKKyAgICAsIHRpbWVyKG1ha2VVbmlx
dWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9v
cFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCiB7CiAjaWYgVVNFKEdMSUJf
RVZFTlRfTE9PUCkKICAgICB0aW1lci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5
OjpKYXZhc2NyaXB0VGltZXIpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIEpTUnVuTG9vcFRpbWVyOjpN
YW5hZ2VyJiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6c2hhcmVkKCkKIAogdm9pZCBKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6cmVnaXN0ZXJWTShWTSYgdm0pCiB7Ci0gICAgYXV0byBkYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtl
VW5pcXVlPFBlclZNRGF0YT4oKnRoaXMpOwogI2lmIFVTRShDRikKICAgICBkYXRhLT5zZXRSdW5M
b29wKHRoaXMsIHZtLnJ1bkxvb3AoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCmluZGV4IDVmMDc4ZDJhNTA5
ZDJiNDQyMDBmN2E0YWYzODgxMjQ2Y2IyZDU4YTcuLjUyOTAyMGRmMGYxZGMyYTI4NmY4MDBhYmFk
OWQ3ZWI3ZDNmOGVlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaApAQCAtNDQ4LDcgKzQ0OCw3IEBAIGlubGluZSBQcm9w
ZXJ0eU9mZnNldCBQcm9wZXJ0eVRhYmxlOjpnZXREZWxldGVkT2Zmc2V0KCkKIGlubGluZSB2b2lk
IFByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQoUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQog
ewogICAgIGlmICghbV9kZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKKyAgICAgICAgbV9k
ZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKTsKICAg
ICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBlbmQob2Zmc2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcAppbmRleCA1OWVjNDFjNDlhZTgy
ZjQ3ZjY5ODY4MDZkZDYxNDM5NDRhNDJiNWQ2Li5iMWJiNjc5MTk5MjY1YWZjYmNjYzgzNjU2ZDhk
NTZmYzViNGEzNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVRhYmxlLmNwcApAQCAtODMsNyArODMsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRh
YmxlKFZNJiB2bSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiAgICAgLy8gQ29weSB0aGUg
bV9kZWxldGVkT2Zmc2V0cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3Ro
ZXJEZWxldGVkT2Zmc2V0cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYg
KG90aGVyRGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsK
KyAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zm
c2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOwogfQogCiBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0
eVRhYmxlKFZNJiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRh
YmxlJiBvdGhlcikKQEAgLTEwNyw3ICsxMDcsNyBAQCBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRh
YmxlKFZNJiB2bSwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYgog
ICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRz
LmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRP
ZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJE
ZWxldGVkT2Zmc2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZl
Y3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogdm9pZCBQ
cm9wZXJ0eVRhYmxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDA3MWIxZjY2MzE1Y2UzYWU4ZGNmZTE3NWZmNjM2NmY1
YzYzMmFmZmMuLjcwZTU5M2Q1M2ViZGQ4MWQ4YzA4MTNhMjk3NzBlOTQwY2UwNDExM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBA
IHZvaWQgUmVnRXhwOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKICAgICBtX251bVN1YnBhdHRl
cm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zOwogICAgIGlmICghcGF0dGVybi5tX2NhcHR1
cmVHcm91cE5hbWVzLmlzRW1wdHkoKSB8fCAhcGF0dGVybi5tX25hbWVkR3JvdXBUb1BhcmVuSW5k
ZXguaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJh
cmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsK
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9jYXB0dXJlR3JvdXBOYW1lcy5zd2FwKHBhdHRlcm4ubV9j
YXB0dXJlR3JvdXBOYW1lcyk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fbmFtZWRHcm91cFRvUGFy
ZW5JbmRleC5zd2FwKHBhdHRlcm4ubV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4KTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDM5Y2RkOTExNmUwMjdlM2Ri
NjA0MGRiZDhmZTUyNzBkMmU5OTVkOGQuLmU4ZGE4NTI2ZTdjN2U4MWZiZWE3NWM4ODk4ODE2MWI5
YWY4OTE3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0xNjQs
NyArMTY0LDcgQEAgY2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgWWFy
cjo6WWFyckNvZGVCbG9jayYgZW5zdXJlUmVnRXhwSklUQ29kZSgpCiAgICAgewogICAgICAgICBp
ZiAoIW1fcmVnRXhwSklUQ29kZSkKLSAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZSA9IHN0ZDo6
bWFrZV91bmlxdWU8WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKKyAgICAgICAgICAgIG1fcmVnRXhw
SklUQ29kZSA9IG1ha2VVbmlxdWU8WWFycjo6WWFyckNvZGVCbG9jaz4oKTsKICAgICAgICAgcmV0
dXJuICptX3JlZ0V4cEpJVENvZGUuZ2V0KCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4IDIzN2Q3
ZGU2ODhkZDIwNzY1MDIwMTIxNmNkMGQ1NDY4MGM0OTZlYWEuLmVlNmUxOGNlZmRiZTc5ZjRiYzJl
YjIxOTdmZjUzOTEwNGUxZjc5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgYXV0byBTY3Jp
cHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcEltcGwoc3RkOjp1bmlxdWVfcHRy
PFRlbXBsYXRlT2JqZWMKIHsKICAgICBpZiAoZGVzdCkKICAgICAgICAgcmV0dXJuICpkZXN0Owot
ICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUZW1wbGF0ZU9iamVjdE1hcD4oKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+KCk7CiAgICAg
V1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICBkZXN0ID0gV1RGTW92ZShyZXN1bHQpOwogICAg
IHJldHVybiAqZGVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCmluZGV4IDI5M2M0NjQ3MmU3NDg5NDFjYTljYzJhZGFjMTZhM2QyZGM1ZGVlZWMuLjAxY2Qy
YmQ1NDdmZTAyYjUwNDdhNmQ0NWIzYzhhZDZmZDUyYmRiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtODU2LDcgKzg1Niw3IEBAIFdhdGNocG9p
bnRTZXQqIFN0cnVjdHVyZTo6ZW5zdXJlUHJvcGVydHlSZXBsYWNlbWVudFdhdGNocG9pbnRTZXQo
Vk0mIHZtLCBQcm9wZXJ0CiAgICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpcy0+
cmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNl
dHMpIHsKICAgICAgICAgcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cyA9Ci0g
ICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRhOjpQcm9wZXJ0eVdh
dGNocG9pbnRNYXA+KCk7CisgICAgICAgICAgICBtYWtlVW5pcXVlPFN0cnVjdHVyZVJhcmVEYXRh
OjpQcm9wZXJ0eVdhdGNocG9pbnRNYXA+KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7CiAgICAgfQogICAgIGF1dG8gcmVzdWx0ID0gcmFyZURhdGEtPm1fcmVwbGFjZW1lbnRXYXRj
aHBvaW50U2V0cy0+YWRkKG9mZnNldCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKaW5kZXggOTlhOGQ5ZjdkYWFj
MjE3ZTRjODFlN2U3MTI2ZTljMDJiMzc0ZWQzZi4uZDNjZjE4M2IwZjZkN2M0ODk4ODAwYWI2OGVl
NDhjZDEyOGY3ZmUyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZVJhcmVEYXRhLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU3RydWN0dXJl
UmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0s
IFN0cnVjdHVyCiAgICAgQVNTRVJUKGNvbmRpdGlvblNldC5zdHJ1Y3R1cmVzRW5zdXJlVmFsaWRp
dHkoKSk7CiAgICAgZm9yIChPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gOiBjb25k
aXRpb25TZXQpIHsKICAgICAgICAgaWYgKGNvbmRpdGlvbi5jb25kaXRpb24oKS5raW5kKCkgPT0g
UHJvcGVydHlDb25kaXRpb246OlByZXNlbmNlKSB7Ci0gICAgICAgICAgICBtX29iamVjdFRvU3Ry
aW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2Jq
ZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2
Q29uZGl0aW9uLCB0aGlzKTsKKyAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUlu
ZmVycmVkVmFsdWVXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOwog
ICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9p
bnQtPmluc3RhbGwodm0pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fb2JqZWN0VG9T
dHJpbmdBZGFwdGl2ZVdhdGNocG9pbnRTZXQuYWRkKGNvbmRpdGlvbiwgdGhpcyktPmluc3RhbGwo
dm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmlu
ZGV4IDM5MmYyMTdjMTRlZmFlYjU0NWJmMGQ0Zjc3OTBjMTEyNzkzMmJjODUuLmE0YTg3MGZjMWZj
YWQzNWM0Mzk1ZjEwOWIyMmE5OWM0MjBkNzQxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBjb25zdCBTeW1i
b2xUYWJsZTo6TG9jYWxUb0VudHJ5VmVjJiBTeW1ib2xUYWJsZTo6bG9jYWxUb0VudHJ5KGNvbnN0
IENvbmN1cnJlbnRKUwogICAgICAgICAgICAgICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBvZmZz
ZXQuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSArIDEpOwogICAgICAgICB9CiAgICAgCi0gICAgICAg
IG1fbG9jYWxUb0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUs
IG51bGxwdHIpOworICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IG1ha2VVbmlxdWU8TG9jYWxUb0Vu
dHJ5VmVjPihzaXplLCBudWxscHRyKTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fbWFw
KSB7CiAgICAgICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFsdWUudmFyT2Zmc2V0
KCk7CiAgICAgICAgICAgICBpZiAob2Zmc2V0LmlzU2NvcGUoKSkKQEAgLTE1OSw3ICsxNTksNyBA
QCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAg
ICAgcmVzdWx0LT5tX2FyZ3VtZW50cy5zZXQodm0sIHJlc3VsdCwgYXJndW1lbnRzKTsKICAgICAK
ICAgICBpZiAobV9yYXJlRGF0YSkgewotICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgIHJlc3VsdC0+bV9y
YXJlRGF0YSA9IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgICAgICB7
CiAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3VuaXF1ZUlETWFwLmJlZ2lu
KCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBTeW1ib2xUYWJsZTo6cHJlcGFyZUZvclR5cGVQ
cm9maWxpbmcoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKICAgICBpZiAobV9yYXJlRGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3lt
Ym9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xU
YWJsZVJhcmVEYXRhPigpOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX21hcC5iZWdpbigpLCBl
bmQgPSBtX21hcC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBtX3JhcmVE
YXRhLT5tX3VuaXF1ZUlETWFwLnNldChpdGVyLT5rZXksIFR5cGVQcm9maWxlck5lZWRzVW5pcXVl
SURHZW5lcmF0aW9uKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBDb2RlQmxvY2sqIFN5bWJvbFRhYmxl
OjpyYXJlRGF0YUNvZGVCbG9jaygpCiB2b2lkIFN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVC
bG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAg
ICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7
CisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7
CiAKICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fY29kZUJsb2NrKTsKICAgICBtX3JhcmVEYXRh
LT5tX2NvZGVCbG9jay5zZXQoKmNvZGVCbG9jay0+dm0oKSwgdGhpcywgY29kZUJsb2NrKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKaW5kZXggNDEwZWI2ZDVhZTE2
ZjM2MDIyNmRiMzgyM2Y3ZWU4MjhlY2NhYjM4My4uNDFhY2E5ZDNkNGQ5YjhhNTZhZTY4NTIzMGU4
ZDY2NzUyYWMwZDAyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5j
cHAKQEAgLTM2Miw3ICszNjIsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFz
aCgpCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcHJvdG8tPnByb3BlcnR5SGFzaCgpKTsKICAg
ICB9CiAKLSAgICBtX3Byb3BlcnR5SGFzaCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RyaW5nPihidWls
ZGVyLnRvU3RyaW5nKCkpOworICAgIG1fcHJvcGVydHlIYXNoID0gbWFrZVVuaXF1ZTxTdHJpbmc+
KGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgcmV0dXJuICptX3Byb3BlcnR5SGFzaDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDRlMmQwZDMyNGEyNGUyMzJjZDE5
NTM4OTJlZDhiMGEzM2IwYjA1ZWUuLmI3MDkyYzA4ZWY3MmIwZWNhODlmZjBiNWM0YmUxYWU1OWFh
MWRiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI1MiwxOCArMjUy
LDE4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
cnVuTG9vcChDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCiAjZW5kaWYgLy8gVVNFKENGKQogICAgICwg
aGVhcCh0aGlzLCBoZWFwVHlwZSkKLSAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3Ioc3RkOjptYWtl
X3VuaXF1ZTxGYXN0TWFsbG9jQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAgICAsIHByaW1p
dGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVt
b3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAsIGpzVmFsdWVHaWdhY2Fn
ZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQotICAgICwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlKHN0ZDo6
bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3Ry
dWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCi0gICAgLCBpbW11dGFibGVCdXR0ZXJmbHlI
ZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVz
KERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50ZXJpb3JQb2lu
dGVycykpKQotICAgICwgY2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxs
VHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkpT
Q2VsbCkpKQotICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5p
cXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENl
bGw6OkpTQ2VsbCkpKQotICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8
SlNTdHJpbmdIZWFwQ2VsbFR5cGU+KCkpCi0gICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4o
KSkKKyAgICAsIGZhc3RNYWxsb2NBbGxvY2F0b3IobWFrZVVuaXF1ZTxGYXN0TWFsbG9jQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yKG1h
a2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6UHJpbWl0
aXZlKSkKKyAgICAsIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdl
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OkpTVmFsdWUpKQorICAgICwgYXV4aWxp
YXJ5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhE
b2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSkpCisgICAgLCBpbW11
dGFibGVCdXR0ZXJmbHlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxB
dHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGxXaXRoSW50
ZXJpb3JQb2ludGVycykpKQorICAgICwgY2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBD
ZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6
OkpTQ2VsbCkpKQorICAgICwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZShtYWtlVW5pcXVl
PEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoTmVlZHNEZXN0cnVjdGlvbiwgSGVhcENlbGw6
OkpTQ2VsbCkpKQorICAgICwgc3RyaW5nSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNTdHJpbmdI
ZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBkZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUobWFr
ZVVuaXF1ZTxKU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZT4oKSkKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCi0gICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShzdGQ6
Om1ha2VfdW5pcXVlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCi0gICAg
LCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8V2ViQXNz
ZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5Q29kZUJsb2Nr
SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNXZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlw
ZT4oKSkKKyAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxX
ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlPigpKQogI2VuZGlmCiAgICAgLCBwcmltaXRp
dmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJQcmltaXRpdmUgR2lnYWNhZ2UgQXV4aWxpYXJ5Iiwg
aGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9j
YXRvci5nZXQoKSkgLy8gSGFzaDoweDNlN2NkNzYyCiAgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZSgiSlNWYWx1ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlI
ZWFwQ2VsbFR5cGUuZ2V0KCksIGpzVmFsdWVHaWdhY2FnZUFsbG9jYXRvci5nZXQoKSkgLy8gSGFz
aDoweDI0MWU5NDYKQEAgLTI5Niw3ICsyOTYsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2F0b21TdHJpbmdUYWJsZSh2bVR5cGUgPT0gRGVmYXVs
dCA/IFRocmVhZDo6Y3VycmVudCgpLmF0b21TdHJpbmdUYWJsZSgpIDogbmV3IEF0b21TdHJpbmdU
YWJsZSkKICAgICAsIHByb3BlcnR5TmFtZXMobnVsbHB0cikKICAgICAsIGVtcHR5TGlzdChuZXcg
QXJnTGlzdCkKLSAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGlu
ZUpJVChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZVN0YXRzPigpKQorICAgICwgbWFjaGluZUNvZGVC
eXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKG1ha2VVbmlxdWU8U2ltcGxlU3RhdHM+
KCkpCiAgICAgLCBjdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbk1hcCgqdGhpcykKICAgICAsIHN0
cmluZ0NhY2hlKCp0aGlzKQogICAgICwgc3ltYm9sSW1wbFRvU3ltYm9sTWFwKCp0aGlzKQpAQCAt
MzEyLDggKzMxMiw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICAsIG1faW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCkKICNlbmRpZgogICAgICwgbV9zdGFj
a1BvaW50ZXJBdFZNRW50cnkoMCkKLSAgICAsIG1fY29kZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8
Q29kZUNhY2hlPigpKQotICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMoc3RkOjptYWtlX3VuaXF1
ZTxCdWlsdGluRXhlY3V0YWJsZXM+KCp0aGlzKSkKKyAgICAsIG1fY29kZUNhY2hlKG1ha2VVbmlx
dWU8Q29kZUNhY2hlPigpKQorICAgICwgbV9idWlsdGluRXhlY3V0YWJsZXMobWFrZVVuaXF1ZTxC
dWlsdGluRXhlY3V0YWJsZXM+KCp0aGlzKSkKICAgICAsIG1fdHlwZVByb2ZpbGVyRW5hYmxlZENv
dW50KDApCiAgICAgLCBtX3ByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZChJc1dhdGNoZWQpCiAgICAg
LCBtX2NvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVkQ291bnQoMCkKQEAgLTQwNyw3ICs0MDcsNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgTExJbnQ6OkRh
dGE6OnBlcmZvcm1Bc3NlcnRpb25zKCp0aGlzKTsKICAgICAKICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6dXNlUHJvZmlsZXIoKSkpIHsKLSAgICAgICAgbV9wZXJCeXRlY29kZVByb2ZpbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlzKTsKKyAgICAgICAgbV9w
ZXJCeXRlY29kZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KCp0aGlz
KTsKIAogICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBwYXRoT3V0OwogICAgICAgICBjb25zdCBj
aGFyKiBwcm9maWxlclBhdGggPSBnZXRlbnYoIkpTQ19QUk9GSUxFUl9QQVRIIik7CkBAIC00MjMs
NyArNDIzLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
IC8vIHdvbid0IHVzZSB0aGlzLgogICAgIG1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJl
ZihuZXcgU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CiAKLSAgICBtX2J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnk+KCp0aGlzKTsKKyAgICBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkgPSBtYWtlVW5pcXVl
PEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+KCp0aGlzKTsKIAogICAgIGlmIChPcHRpb25zOjp1
c2VUeXBlUHJvZmlsZXIoKSkKICAgICAgICAgZW5hYmxlVHlwZVByb2ZpbGVyKCk7CkBAIC00NDIs
OSArNDQyLDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2Vu
ZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIAogICAgIGlmIChPcHRpb25zOjp1c2VS
YW5kb21pemluZ0Z1enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50KHN0ZDo6bWFr
ZV91bmlxdWU8UmFuZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgc2V0RnV6
emVyQWdlbnQobWFrZVVuaXF1ZTxSYW5kb21pemluZ0Z1enplckFnZW50PigqdGhpcykpOwogICAg
IGVsc2UgaWYgKE9wdGlvbnM6OnVzZURvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudCgpKQotICAg
ICAgICBzZXRGdXp6ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6
ZXJBZ2VudD4oKnRoaXMpKTsKKyAgICAgICAgc2V0RnV6emVyQWdlbnQobWFrZVVuaXF1ZTxEb3Vi
bGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAKICAgICBpZiAoT3B0aW9uczo6YWx3
YXlzR2VuZXJhdGVQQ1RvQ29kZU9yaWdpbk1hcCgpKQogICAgICAgICBzZXRTaG91bGRCdWlsZFBD
VG9Db2RlT3JpZ2luTWFwcGluZygpOwpAQCAtNDU3LDkgKzQ1Nyw5IEBAIFZNOjpWTShWTVR5cGUg
dm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IGFueSBzdHVicyB0aGF0IHRoZSBKSVQgaXMgZ29pbmcgdG8gdXNlIGFyZSBpbml0
aWFsaXplZCBpbiBub24tY29tcGlsYXRpb24gdGhyZWFkcy4KICAgICBpZiAoY2FuVXNlSklUKCkp
IHsKLSAgICAgICAgaml0U3R1YnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpJVFRodW5rcz4oKTsKKyAg
ICAgICAgaml0U3R1YnMgPSBtYWtlVW5pcXVlPEpJVFRodW5rcz4oKTsKICNpZiBFTkFCTEUoRlRM
X0pJVCkKLSAgICAgICAgZnRsVGh1bmtzID0gc3RkOjptYWtlX3VuaXF1ZTxGVEw6OlRodW5rcz4o
KTsKKyAgICAgICAgZnRsVGh1bmtzID0gbWFrZVVuaXF1ZTxGVEw6OlRodW5rcz4oKTsKICNlbmRp
ZiAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1w
b2xpbmVGb3IoQ29kZUZvckNhbGwpOwogICAgICAgICBnZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJh
bXBvbGluZUZvcihDb2RlRm9yQ29uc3RydWN0KTsKQEAgLTYxOSw3ICs2MTksNyBAQCBXYXRjaGRv
ZyYgVk06OmVuc3VyZVdhdGNoZG9nKCkKIEhlYXBQcm9maWxlciYgVk06OmVuc3VyZUhlYXBQcm9m
aWxlcigpCiB7CiAgICAgaWYgKCFtX2hlYXBQcm9maWxlcikKLSAgICAgICAgbV9oZWFwUHJvZmls
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhlYXBQcm9maWxlcj4oKnRoaXMpOworICAgICAgICBtX2hl
YXBQcm9maWxlciA9IG1ha2VVbmlxdWU8SGVhcFByb2ZpbGVyPigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX2hlYXBQcm9maWxlcjsKIH0KIApAQCAtMTA0MSw4ICsxMDQxLDggQEAgc3RhdGljIGJvb2wg
ZGlzYWJsZVByb2ZpbGVyV2l0aFJlc3BlY3RUb0NvdW50KHVuc2lnbmVkJiBjb3VudGVyLCBjb25z
dCBGdW5jJiBkb0QKIGJvb2wgVk06OmVuYWJsZVR5cGVQcm9maWxlcigpCiB7CiAgICAgYXV0byBl
bmFibGVUeXBlUHJvZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5tX3R5cGVQcm9m
aWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyPigpOwotICAgICAgICB0aGlzLT5t
X3R5cGVQcm9maWxlckxvZyA9IHN0ZDo6bWFrZV91bmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhp
cyk7CisgICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gbWFrZVVuaXF1ZTxUeXBlUHJvZmls
ZXI+KCk7CisgICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gbWFrZVVuaXF1ZTxUeXBl
UHJvZmlsZXJMb2c+KCp0aGlzKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2ZpbGVy
V2l0aFJlc3BlY3RUb0NvdW50KG1fdHlwZVByb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVUeXBl
UHJvZmlsZXIpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgYm9vbCBWTTo6ZGlzYWJsZVR5cGVQcm9m
aWxlcigpCiBib29sIFZNOjplbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCkKIHsKICAgICBhdXRv
IGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIgPSBbdGhpc10gKCkgewotICAgICAgICB0aGlzLT5t
X2NvbnRyb2xGbG93UHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xGbG93UHJvZmls
ZXI+KCk7CisgICAgICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9IG1ha2VVbmlxdWU8
Q29udHJvbEZsb3dQcm9maWxlcj4oKTsKICAgICB9OwogCiAgICAgcmV0dXJuIGVuYWJsZVByb2Zp
bGVyV2l0aFJlc3BlY3RUb0NvdW50KG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudCwg
ZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcik7CkBAIC0xMDg3LDcgKzEwODcsNyBAQCB2b2lkIFZN
OjpkdW1wVHlwZVByb2ZpbGVyRGF0YSgpCiAKIHZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKIHsKLSAgICBt
X21pY3JvdGFza1F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0aGlz
LCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKSk7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5h
cHBlbmQobWFrZVVuaXF1ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92
ZSh0YXNrKSkpOwogfQogCiB2b2lkIFZNOjpkcmFpbk1pY3JvdGFza3MoKQpAQCAtMTIzMCwxNCAr
MTIzMCwxNCBAQCB2b2lkIFZNOjplbnN1cmVTaGFkb3dDaGlja2VuKCkKIHsKICAgICBpZiAobV9z
aGFkb3dDaGlja2VuKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zaGFkb3dDaGlja2VuID0gc3Rk
OjptYWtlX3VuaXF1ZTxTaGFkb3dDaGlja2VuPigpOworICAgIG1fc2hhZG93Q2hpY2tlbiA9IG1h
a2VVbmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKIH0KIAogI2RlZmluZSBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cobmFtZSwgaGVhcENlbGxUeXBlLCB0eXBlKSBcCiAgICAg
SXNvU3Vic3BhY2UqIFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQo
IW1fIyNuYW1lKTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAor
ICAgICAgICBhdXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNF
X0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAg
ICAgcmV0dXJuIG1fIyNuYW1lLmdldCgpOyBcCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b25TcGFjZSwgY2VsbEhlYQogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAg
ICB7IFwKICAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhl
YXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8U3Bh
Y2VBbmRTZXQ+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwK
ICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdU
Rk1vdmUoc3BhY2UpOyBcCiAgICAgICAgIHJldHVybiAmbV8jI25hbWUtPnNwYWNlOyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRl
eCAyNGYxOGFkMDJkZTJmZWY5MDA5MzQ0ODY0MzBjOThmZTk0OTQyNGVmLi41MzM5M2NiMjU4Zjc0
MmM2YWNmZGRlYWVjNmM3MTc1NjQ0ZDc5NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBjbGFz
cyBBaXJJUkdlbmVyYXRvciB7CiAgICAgdm9pZCBlbWl0UGF0Y2hwb2ludChCYXNpY0Jsb2NrKiBi
YXNpY0Jsb2NrLCBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCwgVG1wIHJlc3VsdCwgVmVjdG9y
PENvbnN0cmFpbmVkVG1wLCBpbmxpbmVTaXplPiYmIGFyZ3MpCiAgICAgewogICAgICAgICBpZiAo
IW1fcGF0Y2hwb2ludFNwZWNpYWwpCi0gICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0g
c3RhdGljX2Nhc3Q8QjM6OlBhdGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3Rk
OjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpKTsKKyAgICAgICAgICAgIG1f
cGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNwZWNpYWwqPiht
X2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSkpOwog
CiAgICAgICAgIEluc3QgaW5zdChQYXRjaCwgcGF0Y2gsIEFyZzo6c3BlY2lhbChtX3BhdGNocG9p
bnRTcGVjaWFsKSk7CiAgICAgICAgIEluc3QgcmVzdWx0TW92OwpAQCAtNDg3LDcgKzQ4Nyw3IEBA
IGNsYXNzIEFpcklSR2VuZXJhdG9yIHsKIAogICAgICAgICAvLyBGSVhNRTogTWFrZSBhIGhhc2ht
YXAgb2YgdGhlc2UuCiAgICAgICAgIEIzOjpDaGVja1NwZWNpYWw6OktleSBrZXkoYnJhbmNoKTsK
LSAgICAgICAgQjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpDaGVj
a1NwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDaGVja1Nw
ZWNpYWw+KGtleSkpKTsKKyAgICAgICAgQjM6OkNoZWNrU3BlY2lhbCogc3BlY2lhbCA9IHN0YXRp
Y19jYXN0PEIzOjpDaGVja1NwZWNpYWwqPihtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIz
OjpDaGVja1NwZWNpYWw+KGtleSkpKTsKIAogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBu
ZWVkIGZvciBkdW1teSB2YWx1ZXMKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NDA0MApAQCAtMjEzOSwxMCArMjEzOSwxMCBAQCBhdXRvIEFpcklS
R2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBCMzo6T3JpZ2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVl
X3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29tcGls
YXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9u
U3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUs
IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMs
IGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0
aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVy
bmFsRnVuY3Rpb24+KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBv
aW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAgY29tcGlsYXRp
b25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBl
cnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IG1h
a2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50
cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAgQjM6OlByb2Nl
ZHVyZSBwcm9jZWR1cmU7CiAgICAgQ29kZSYgY29kZSA9IHByb2NlZHVyZS5jb2RlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXgg
MjA5NDE3N2VkNmYxODNhYjRkODYyZWMyMjY3ZDMwZjI4YjdkZTViNi4uMTU4ZGY5ZmE5ZjBjOWY3
MjFhYzI5Mjc3ODE4OGRjZjI4ZTcwN2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMTU1MSwxMCArMTU1MSwxMCBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6Om9yaWdpbigpIC0+IE9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1
ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0
aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0
YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBW
ZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBj
b25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCBDb21waWxhdGlv
bk1vZGUgY29tcGlsYXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3Vu
dCogdGllclVwLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAg
IGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAg
IGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29t
cGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q0NhbGxIZWxwZXJzPigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJ
VCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29u
dGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsK
KyAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPEND
YWxsSGVscGVycz4oKTsKIAogICAgIFByb2NlZHVyZSBwcm9jZWR1cmU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCBmOTg1ZDUyM2MyZTkzZjNiZDIz
ZmI3YzU3MTJiNTg2OGNjMTZhNjg1Li41MDZkZjRiZWZkMGQ1NjQxODQ0Y2U1Mjc5NTExNWY2MTI4
NzE2MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBA
IC0zMTUsNyArMzE1LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExv
Y2tlciYgbG9ja2VyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25J
bmRleF0tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21w
aWxhdGlvbj4oCisgICAgICAgICAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnNbZnVuY3Rp
b25JbmRleF0tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxh
dGlvbj4oCiAgICAgICAgICAgICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjND
b21waWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAl
cyIsIGZ1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBt
YWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1h
dGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRh
KCkpLAogICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRC
eXByb2R1Y3RzKSk7CiAgICAgICAgICAgICB9CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBCQlFQ
bGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZW1i
ZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIGVtYmVkZGVy
VG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlx
dWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgICAgICAgICAgICAgRklOQUxJWkVfQ09ERShs
aW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiRW1iZWRkZXItPldlYkFzc2VtYmx5IGVu
dHJ5cG9pbnRbJWldICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4
U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRl
eFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShj
b250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCBjNTEzZmQyZjUw
ZWQ2ZmIxN2MzMzg1ZWYyOTA1Mjc4MTczOTIxMDM3Li4wZDdhMDNjMzYxMjljZDFkZTJjNTRmZmNk
NTAyOTViNTZjNWI4OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1Bs
YW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVm
Zm9ydCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG9tZ0VudHJ5cG9pbnQuY29tcGls
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCisgICAgb21nRW50cnlw
b2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAg
RklOQUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2ViQXNzZW1i
bHkgT01HIGZ1bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgbV9mdW5jdGlvbkluZGV4LCBzaWduYXR1
cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5j
dGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVu
Y3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgV1RGTW92ZShjb250
ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVdvcmtsaXN0LmNwcAppbmRleCAzNmQ3NGMxNGIxOGM3MDdiODEyYTA0ODdmOTFl
MjljMzg1MzkxZGUyLi42NjBmOTU2NTczOGIxMGEzMGYzZTdjYzgxOGEzMmM4NTg3ODIxMjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKQEAgLTIxMCw3
ICsyMTAsNyBAQCBXb3JrbGlzdDo6V29ya2xpc3QoKQogICAgIG1fdGhyZWFkcy5yZXNlcnZlQ2Fw
YWNpdHkobnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHMpOwogICAgIExvY2tIb2xkZXIgbG9ja2Vy
KCptX2xvY2spOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNvbXBpbGF0
aW9uVGhyZWFkczsgaSsrKQotICAgICAgICBtX3RocmVhZHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8V29ya2xpc3Q6OlRocmVhZD4obG9ja2VyLCAqdGhpcykpOworICAgICAgICBt
X3RocmVhZHMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8V29ya2xpc3Q6OlRocmVhZD4obG9j
a2VyLCAqdGhpcykpOwogfQogCiBXb3JrbGlzdDo6fldvcmtsaXN0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAppbmRleCA1ZGQ0NTFiZWE4NGQ1OTBiYmYwZmNi
MDc2ZTI2ZmZkM2NjN2I4MWFjLi43MzUyMjAyODkzN2M2ZGFjMWZjNDczYzdlNGNkYzY0OTU4Y2U4
ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBAIC00
Niw3ICs0Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGVKU1Rv
V2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21wCiB7CiAgICAgQ0NhbGxIZWxwZXJz
JiBqaXQgPSAqY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVDsKIAotICAg
IGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAg
IGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogICAgIGppdC5l
bWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogCiAgICAgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFzIGNv
ZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDdmMDMzZmVjMWMzNjlhOTQyM2IzM2NmOGViMzMzNGM1MWNlMDgwOGIuLmM0Yjc3Y2FkYmU1ZWVh
NTczZWM4NTJiOTVlZjZhNzg5YjgyODUzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckludGVycHJldGVyLmNwcApAQCAtMTcwNiw3ICsxNzA2LDcgQEAgY2xhc3MgQnl0
ZUNvbXBpbGVyIHsKICAgICAgICAgICAgIGR1bXBEaXNqdW5jdGlvbihtX2JvZHlEaXNqdW5jdGlv
bi5nZXQoKSk7CiAjZW5kaWYKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBhcmVudGhlc2Vz
SW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24pLCBtX2FsbFBh
cmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwogICAgIH0KIAogICAg
IHZvaWQgY2hlY2tJbnB1dCh1bnNpZ25lZCBjb3VudCkKQEAgLTE5MjYsNyArMTkyNiw3IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCA9IHBhcmVu
dGhlc2VzQmVnaW4uYXRvbS5zdWJwYXR0ZXJuSWQ7CiAKICAgICAgICAgdW5zaWduZWQgbnVtU3Vi
cGF0dGVybnMgPSBsYXN0U3VicGF0dGVybklkIC0gc3VicGF0dGVybklkICsgMTsKLSAgICAgICAg
YXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVu
Y3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKKyAgICAgICAgYXV0byBwYXJl
bnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBh
dHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKIAogICAgICAgICB1bnNpZ25lZCBmaXJzdFRlcm1JblBh
cmVudGhlc2VzID0gYmVnaW5UZXJtICsgMTsKICAgICAgICAgcGFyZW50aGVzZXNEaXNqdW5jdGlv
bi0+dGVybXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbmRUZXJtIC0gZmlyc3RUZXJtSW5QYXJl
bnRoZXNlcyArIDIpOwpAQCAtMTk5Nyw3ICsxOTk3LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsK
IAogICAgIHZvaWQgcmVnZXhCZWdpbih1bnNpZ25lZCBudW1TdWJwYXR0ZXJucywgdW5zaWduZWQg
Y2FsbEZyYW1lU2l6ZSwgYm9vbCBvbmNlVGhyb3VnaCkKICAgICB7Ci0gICAgICAgIG1fYm9keURp
c2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRl
cm5zLCBjYWxsRnJhbWVTaXplKTsKKyAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBtYWtlVW5p
cXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwogICAg
ICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtOjpCb2R5QWx0ZXJu
YXRpdmVCZWdpbihvbmNlVGhyb3VnaCkpOwogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVy
bXNbMF0uZnJhbWVMb2NhdGlvbiA9IDA7CiAgICAgICAgIG1fY3VycmVudEFsdGVybmF0aXZlSW5k
ZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCA0MTJjNmU0
YTZjYmVhYzg5MzIxYjBhZTc4MGZkZDc2YTA2MTliZTJkLi5mNjZhODJlNTc1MWFkZGEzMjllZGVl
ZjcwYWQ5MjY5ZDExZWQyYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNw
cApAQCAtMzg5OSw3ICszODk5LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6ZHVtcFJl
Z0V4cERpc2Fzc2VtYmx5KCkpKQotICAgICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFlhcnJEaXNhc3NlbWJsZXI+KHRoaXMpOworICAgICAgICAgICAgbV9kaXNhc3Nl
bWJsZXIgPSBtYWtlVW5pcXVlPFlhcnJEaXNhc3NlbWJsZXI+KHRoaXMpOwogCiAgICAgICAgIGlm
IChtX2Rpc2Fzc2VtYmxlcikKICAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRTdGFydE9m
Q29kZShsYWJlbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNw
cAppbmRleCA0OWY3N2Y2OWM2ODVjNjUyMDNkZjNmMDM0YzkwZDE4NzdjOTJkYzliLi5mY2M1MWIy
NzdmNTAxMTAzYjdjNjViYmQzM2E1Y2E0MTBkODFjMGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgY2xhc3MgQ2hhcmFj
dGVyQ2xhc3NDb25zdHJ1Y3RvciB7CiAgICAgewogICAgICAgICBjb2FsZXNjZVRhYmxlcygpOwog
Ci0gICAgICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3Rl
ckNsYXNzPigpOworICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFy
YWN0ZXJDbGFzcz4oKTsKIAogICAgICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9tYXRjaGVzLnN3YXAo
bV9tYXRjaGVzKTsKICAgICAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzLnN3YXAobV9yYW5n
ZXMpOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3Igewog
ICAgICAgICAsIG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3RvcihwYXR0ZXJuLmlnbm9yZUNhc2Uo
KSwgcGF0dGVybi51bmljb2RlKCkgPyBDYW5vbmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2Fs
TW9kZTo6VUNTMikKICAgICAgICAgLCBtX3N0YWNrTGltaXQoc3RhY2tMaW1pdCkKICAgICB7Ci0g
ICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigp
OworICAgICAgICBhdXRvIGJvZHkgPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsK
ICAgICAgICAgbV9wYXR0ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CiAgICAgICAgIG1fYWx0ZXJu
YXRpdmUgPSBib2R5LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9k
aXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoYm9keSkpOwpAQCAtNDU2LDcgKzQ1Niw3IEBAIGNs
YXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICBtX3BhdHRlcm4ucmVzZXRGb3JS
ZXBhcnNpbmcoKTsKICAgICAgICAgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnJlc2V0KCk7
CiAKLSAgICAgICAgYXV0byBib2R5ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rp
b24+KCk7CisgICAgICAgIGF1dG8gYm9keSA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9u
PigpOwogICAgICAgICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9keS5nZXQoKTsKICAgICAgICAgbV9h
bHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVy
bi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShib2R5KSk7CkBAIC02MDgsNyArNjA4LDcg
QEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgQVNTRVJUKCFvcHRHcm91cE5hbWUpOwogCi0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNE
aXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVy
bmF0aXZlKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1
ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0
aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhl
c2VzU3VicGF0dGVybiwgc3VicGF0dGVybklkLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgp
LCBjYXB0dXJlLCBmYWxzZSkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNE
aXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlz
anVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKHBhcmVudGhlc2VzRGlzanVuY3Rpb24pKTsKQEAgLTYx
Niw3ICs2MTYsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKIAogICAgIHZvaWQg
YXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbihib29sIGludmVydCA9IGZhbHNlKQogICAg
IHsKLSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRvIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRl
cm5hdGl2ZSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5U
ZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFzc2VydGlvbiwgbV9wYXR0ZXJuLm1f
bnVtU3VicGF0dGVybnMgKyAxLCBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLmdldCgpLCBmYWxzZSwg
aW52ZXJ0KSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9u
LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX2ludmVydFBhcmVudGhldGljYWxBc3Nl
cnRpb24gPSBpbnZlcnQ7CkBAIC03MDcsNyArNzA3LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25z
dHJ1Y3RvciB7CiAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlID0g
ZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzW2FsdF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAo
IWZpbHRlclN0YXJ0c1dpdGhCT0wgfHwgIWFsdGVybmF0aXZlLT5tX3N0YXJ0c1dpdGhCT0wpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIW5ld0Rpc2p1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIG5ld0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+
KCk7CisgICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0
ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgICAgICAgICAgICAgIG5ld0Rpc2p1bmN0aW9uLT5t
X3BhcmVudCA9IGRpc2p1bmN0aW9uLT5tX3BhcmVudDsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBuZXdBbHRlcm5hdGl2ZSA9IG5ld0Rpc2p1
bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgpOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBZ
YXJyUGF0dGVybjo6ZHVtcFBhdHRlcm4oUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3RyaW5nJiBw
YXR0ZXJuU3RyaW5nKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IGFueWNoYXJD
cmVhdGUoKQogewotICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENo
YXJhY3RlckNsYXNzPigpOworICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENo
YXJhY3RlckNsYXNzPigpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5hcHBlbmQoQ2hh
cmFjdGVyUmFuZ2UoMHgwMCwgMHg3ZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlc1Vu
aWNvZGUuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MDA4MCwgMHgxMGZmZmYpKTsKICAgICBjaGFy
YWN0ZXJDbGFzcy0+bV9jaGFyYWN0ZXJXaWR0aHMgPSBDaGFyYWN0ZXJDbGFzc1dpZHRoczo6SGFz
Qm90aEJNUEFuZE5vbkJNUDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJQYXR0ZXJuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5o
CmluZGV4IDBiN2RiMmViYThhZDUyZGVkMmI1ZjdlNjdlNTQ1YjhjMTZjOTQ1YzcuLjdlODJjODU1
YTg3OGU2YzE4MGVkNTIxZjFmN2FkNDhkOGMxZmJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhdHRlcm4uaApAQCAtMzQxLDcgKzM0MSw3IEBAIHN0cnVjdCBQYXR0ZXJuRGlz
anVuY3Rpb24gewogICAgIAogICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogYWRkTmV3QWx0ZXJuYXRp
dmUoKQogICAgIHsKLSAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8UGF0dGVybkFsdGVybmF0aXZlPih0aGlzKSk7CisgICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFw
cGVuZChtYWtlVW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOwogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8UGF0dGVybkFsdGVybmF0aXZlKj4obV9hbHRlcm5hdGl2ZXMubGFzdCgp
LmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L2NyZWF0ZV9yZWdleF90YWJsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVf
cmVnZXhfdGFibGVzCmluZGV4IGMxZjlmOTlkZTA5MWNlY2IyZTFkYjU1YzM4ZmEzNjAzMTFlZTM3
ZjQuLjY5Y2Q4ODg2NTc4NTRjZDU0NDVmODYzZTIyZDU1ZmZiOWM0MGVmZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwpAQCAtOTUsMTEgKzk1
LDExIEBAIGZvciBuYW1lLCBjbGFzc2VzIGluIHR5cGVzLml0ZW1zKCk6CiAgICAgZnVuY3Rpb24g
Kz0gKCJ7XG4iKQogICAgIGlmIGVtaXRUYWJsZXMgYW5kIGNsYXNzZXNbIlVzZVRhYmxlIl06CiAg
ICAgICAgIGlmICJJbnZlcnNlIiBpbiBjbGFzc2VzOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0g
KCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xh
c3M+KF8lc0RhdGEsIHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQorICAgICAgICAg
ICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hh
cmFjdGVyQ2xhc3M+KF8lc0RhdGEsIHRydWUpO1xuIiAlIChjbGFzc2VzWyJJbnZlcnNlIl0pKQog
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0
ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZhbHNl
KTtcbiIgJSAobmFtZSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJh
Y3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xu
IiAlIChuYW1lKSkKICAgICBlbHNlOgotICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNo
YXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCisg
ICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVl
PENoYXJhY3RlckNsYXNzPigpO1xuIikKICAgICBoYXNCTVBDaGFyYWN0ZXJzID0gRmFsc2UKICAg
ICBoYXNOb25CTVBDaGFyYWN0ZXJzID0gRmFsc2UKICAgICBmb3IgKG1pbiwgbWF4KSBpbiByYW5n
ZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJV
bmljb2RlUHJvcGVydHlUYWJsZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5l
cmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkKaW5kZXggZjlmZWY0NjhkMmI1ZGRhNmFh
ZWVhYjBiM2ZjMDU4Y2QzZWVjZWFjMS4uNTI2ZmI2ZTdhYzNhMjI3YTZkNDNjYmJlZmQyNzAyZDFh
MGM1NGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZ
YXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQpAQCAtNTI5LDcgKzUyOSw3
IEBAIGRlZiBkdW1wTWF0Y2hEYXRhKHNlbGYsIGZpbGUsIHZhbHVlc1BlckxpbmUsIGRhdGFMaXN0
LCBmb3JtYXR0ZXIpOgogICAgIGRlZiBkdW1wKHNlbGYsIGZpbGUsIGNvbW1hQWZ0ZXIpOgogICAg
ICAgICBmaWxlLndyaXRlKCJzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiB7
fSgpXG57e1xuIi5mb3JtYXQoc2VsZi5nZXRDcmVhdGVGdW5jTmFtZSgpKSkKICAgICAgICAgZmls
ZS53cml0ZSgiICAgIC8vIE5hbWUgPSB7fSwgbnVtYmVyIG9mIGNvZGVQb2ludHM6IHt9XG4iLmZv
cm1hdChzZWxmLm5hbWUsIHNlbGYuY29kZVBvaW50Q291bnQpKQotICAgICAgICBmaWxlLndyaXRl
KCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xh
c3M+KFxuIikKKyAgICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBt
YWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPihcbiIpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAg
ICAgc3RkOjppbml0aWFsaXplcl9saXN0PFVDaGFyMzI+KCIpCiAgICAgICAgIHNlbGYuZHVtcE1h
dGNoRGF0YShmaWxlLCA4LCBzZWxmLm1hdGNoZXMsIGxhbWJkYSBmaWxlLCBtYXRjaDogKGZpbGUu
d3JpdGUoInswOjA9IzR4fSIuZm9ybWF0KG1hdGNoKSkpKQogICAgICAgICBmaWxlLndyaXRlKCIp
LFxuIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0
LmNwcCBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcAppbmRleCBj
YzcwN2RlM2ZmNGVjMTM4Y2ZhNDZhYjRjOGUxM2FiYjY1OTNjYmExLi44Yzk3YzFhMjQxYjcyOWFm
OGYzMWYzNTljN2Y1MTc3YTYzNDA5ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFy
a3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAKKysrIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tG
YWlybmVzc1Rlc3QuY3BwCkBAIC02MSw4ICs2MSw4IEBAIHN0cnVjdCBCZW5jaG1hcmsgewogICAg
IHN0YXRpYyB2b2lkIHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKICAgICAgICAgTG9ja1R5
cGUgbG9jazsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkW10+IGNvdW50cyA9IHN0
ZDo6bWFrZV91bmlxdWU8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQ
dHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2ln
bmVkW10+IGNvdW50cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVk
W10+KG51bVRocmVhZHMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5b
XT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJl
YWQ+W10+KG51bVRocmVhZHMpOwogICAgIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2lu
ZyA9IHRydWU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1Nw
ZWVkVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKaW5k
ZXggZjE1NjUwZDRjOWM4ZmE2NzcwZjg5MTJmMDlkZmUzOTI5MTMwN2MzNC4uYmU3YWJhMzkwZWI1
M2UzNTgxZTM2ZjRhOGI5NTAwZDBlMjk5Zjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5j
aG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2Nr
U3BlZWRUZXN0LmNwcApAQCAtNzQsOSArNzQsOSBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hh
ciogbmFtZSkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2Nr
VHlwZT5bXT4gbG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPExvY2tUeXBlPltd
PihudW1UaHJlYWRHcm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8
ZG91YmxlPltdPiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8V2l0aFBhZGRpbmc8ZG91YmxlPltd
PihudW1UaHJlYWRHcm91cHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVh
ZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhy
ZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3VwKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPihudW1UaHJlYWRHcm91cHMpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8ZG91YmxlPltdPiB3b3JkcyA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhy
ZWFkR3JvdXBzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRo
cmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltd
PihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAgICAgIHZvbGF0
aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q29uY3VycmVudFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCmlu
ZGV4IDBiNTQxYjhjNzNkMGY1OTg2NTFiZjk1ZTc2OTNiODA3Yzk5OWY3OGEuLjg4NGVkNzMyMzM3
NjFhMjlmYjQ5NmYwYWQwOTg5Njc1NDVlNzAzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NvbmN1cnJlbnRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9y
LmgKQEAgLTI1NCw3ICsyNTQsNyBAQCBjbGFzcyBDb25jdXJyZW50VmVjdG9yIGZpbmFsIHsKICAg
ICB2b2lkIGFsbG9jYXRlU2VnbWVudCgpCiAgICAgewogICAgICAgICBtX3NlZ21lbnRzLmdyb3co
bV9udW1TZWdtZW50cyArIDEpOwotICAgICAgICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10g
PSBzdGQ6Om1ha2VfdW5pcXVlPFNlZ21lbnQ+KCk7CisgICAgICAgIG1fc2VnbWVudHNbbV9udW1T
ZWdtZW50cysrXSA9IG1ha2VVbmlxdWU8U2VnbWVudD4oKTsKICAgICB9CiAKICAgICBzaXplX3Qg
bV9zaXplIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNr
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApp
bmRleCA4M2MyMDc1MWY4NWY0ZTRkMjAxNTYxNDQxY2E4MzE0MWNiNWMzN2ZmLi5jNjNjMDU1YTBh
MDM0MWRmNmE1YWYyNzBhNGFjY2I4ZDU3ZDc4NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1Ro
cmVhZFRhc2tIYW5kbGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENyb3NzVGhyZWFkVGFz
a0hhbmRsZXI6OnRhc2tSdW5Mb29wKCkKIAogICAgIHdoaWxlICghbV90YXNrUXVldWUuaXNLaWxs
ZWQoKSkgewogICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2RyYWlu
ZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0gQXV0b2Ry
YWluZWRQb29sRm9yUnVuTG9vcDo6VXNlKSA/IHN0ZDo6bWFrZV91bmlxdWU8QXV0b2RyYWluZWRQ
b29sPigpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5l
ZFBvb2w+IGF1dG9kcmFpbmVkUG9vbCA9IChtX3VzZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJh
aW5lZFBvb2xGb3JSdW5Mb29wOjpVc2UpID8gbWFrZVVuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkg
OiBudWxscHRyOwogCiAgICAgICAgICAgICBtX3Rhc2tRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBl
cmZvcm1UYXNrKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RN
YWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCBlZmVmYjNhMzEzM2U4
M2Y2NDMzNmZkMmVjMmRhNTJhNTQ4MzJlNjIxLi45NWI2NzU5NzJkMzEwZTNkZGJkNDEzZDRhOGY4
ZDEyODhmMjBmYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysr
IGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0zMDEsOSArMzAxLDExIEBAIHVzaW5n
IFdURjo6ZmFzdEFsaWduZWRGcmVlOwogI2RlZmluZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBc
CiBwdWJsaWM6IFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKK3R5cGVkZWYg
aW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBfX3Ro
aXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCiAKICNkZWZpbmUgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEIFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9J
TVBMIFwKK3R5cGVkZWYgaW50IF9fZmFzdEFsbG9jYXRlZENsYXNzOyBcCiB0eXBlZGVmIGludCBf
X3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVBy
aW50U3RyZWFtLmNwcAppbmRleCAzZTI1M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFlZmM3Y2E3OWI2
NGVhLi43MDc0YzAzYWJhZjhmY2YzOTc3ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVQcmludFN0cmVhbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZp
bGVQcmludFN0cmVhbT4gRmlsZVByaW50U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1l
LCBjb24KICAgICBpZiAoIWZpbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxGaWxlUHJpbnRTdHJlYW0+KGZpbGUpOwogfQogCiB2b2lkIEZpbGVQcmludFN0
cmVhbTo6dnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlv
bi5oCmluZGV4IDA1ZTM2OTc4MjViYzNkMzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4M2UuLjBiNzk1
ODY3NDgwZmQwMzIyNDEyNDU0ZTdkMGFmODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtNjcs
MTEgKzY3LDExIEBAIGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwh
KHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9u
PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVl
KSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5
cGU+CiAgICAgRnVuY3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9j
YWxsYWJsZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxD
YWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQorICAgICAg
ICA6IG1fY2FsbGFibGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8
Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19m
dW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+
Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0gICAgICAgIDog
bV9jYWxsYWJsZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBl
cjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CisgICAgICAgIDog
bV9jYWxsYWJsZVdyYXBwZXIobWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5j
dGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CiAKICAgICBPdXQgb3BlcmF0
b3IoKShJbi4uLiBpbikgY29uc3QKICAgICB7CkBAIC04NCwxNCArODQsMTQgQEAgY2xhc3MgRnVu
Y3Rpb248T3V0KEluLi4uKT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwg
Y2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJs
ZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Bv
aW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZl
cmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJh
dG9yPShDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKICAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVX
cmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJs
ZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIG1fY2FsbGFi
bGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5
cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CiAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZh
bHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5j
dGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0o
RnVuY3Rpb25UeXBlIGYpCiAgICAgewotICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIElu
Li4uPj4oV1RGTW92ZShmKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1
ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZN
b3ZlKGYpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRl
eCAzYjFlOTUzMDNkZTU0MDUxNDNmYjU2M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQwNzdmODRmMDJh
MWZhMWMxYmUwMzRhODZlYjM1MGQ2ZDdmNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9I
YXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNTg4LDEwICs1
ODgsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNp
ZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKLSAg
ICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211
dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRT
X1BFUl9UQUJMRQotICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkK
KyAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CiAg
ICAgfQpAQCAtMTMzNCwxMCArMTMzNCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBt
X2RlbGV0ZWRDb3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAg
LCBtX2l0ZXJhdG9ycyhudWxscHRyKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1
ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlm
CiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCisgICAgICAgICwgbV9zdGF0
cyhtYWtlVW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXplKCk7CkBAIC0xMzgyLDcgKzEz
ODIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUo
SGFzaFRhYmxlJiYgb3RoZXIpCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAg
ICA6IG1faXRlcmF0b3JzKG51bGxwdHIpCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5p
cXVlPExvY2s+KCkpCisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5k
aWYKICAgICB7CiAgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDllODcyMGY2ZDlhNzk4MGI5NWU1
YjEzYzVlNjU1YzM4OTQ5MzA0YjUuLjUzNzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUwZDZhMThjNWQ5
ZmVjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjks
NyArNjksNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9k
aWNNZW1vcnlNb25pdG9yKGJvb2wgdXNlKQogICAgIH0KIAogICAgIGlmICh1c2UpIHsKLSAgICAg
ICAgbV9tZWFzdXJlbWVudFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CisgICAgICAgIG1fbWVhc3VyZW1l
bnRUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Pj4oUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJl
bWVudFRpbWVyRmlyZWQpOwogICAgICAgICBtX21lYXN1cmVtZW50VGltZXItPnN0YXJ0UmVwZWF0
aW5nKDMwX3MpOwogICAgIH0gZWxzZQogICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlmMTljM2MxZmMx
ZmRjNTdhYjRkNGFiLi5kZWY4MzQwZTNjOGFjYzg1ODZkYTRmMDBiYjhlOWRjNTZlMDEzZWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtNTY1LDYgKzU2NSwyNCBAQCBjb25zdGV4cHIgc2l6ZV90
IGNseih1aW50MzJfdCB2YWx1ZSwgWmVyb1N0YXR1cyBtaWdodEJlWmVybyA9IFplcm9TdGF0dXM6
Ok1heUJlWgogCiB9IC8vIG5hbWVzcGFjZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8p
IG1ha2VVbmlxdWUoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8dHlwZW5hbWUgVDo6X19mYXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgorQUxXQVlTX0lOTElORSBk
ZWNsdHlwZShhdXRvKSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4g
YXJncykKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZGVmaW5lIFdURk1v
dmUodmFsdWUpIHN0ZDo6bW92ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCiAKIHVz
aW5nIFdURjo6S0I7CkBAIC01ODUsMyArNjAzLDUgQEAgdXNpbmcgV1RGOjptZXJnZURlZHVwbGlj
YXRlZFNvcnRlZDsKIHVzaW5nIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjsKIHVzaW5nIFdURjo6
c2FmZUNhc3Q7CiB1c2luZyBXVEY6OnRyeUJpbmFyeVNlYXJjaDsKK3VzaW5nIFdURjo6bWFrZVVu
aXF1ZTsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL1N0
cmVhbUJ1ZmZlci5oCmluZGV4IDI2YmJjOGZkNjdhNDkzNDYzMjIxZDYxOTYxOGViN2M2NDY4NjQw
MzAuLmNhMzNmODY3ZDM4YjU3NTkyMDE0MWQ1MjNjMzA3YWFlN2M4MjBiNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0cmVh
bUJ1ZmZlci5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFN0cmVhbUJ1ZmZlciB7CiAgICAgICAg
IG1fc2l6ZSArPSBzaXplOwogICAgICAgICB3aGlsZSAoc2l6ZSkgewogICAgICAgICAgICAgaWYg
KCFtX2J1ZmZlci5zaXplKCkgfHwgbV9idWZmZXIubGFzdCgpLT5zaXplKCkgPT0gQmxvY2tTaXpl
KQotICAgICAgICAgICAgICAgIG1fYnVmZmVyLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJsb2Nr
PigpKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQobWFrZVVuaXF1ZTxCbG9jaz4o
KSk7CiAgICAgICAgICAgICBzaXplX3QgYXBwZW5kU2l6ZSA9IHN0ZDo6bWluKEJsb2NrU2l6ZSAt
IG1fYnVmZmVyLmxhc3QoKS0+c2l6ZSgpLCBzaXplKTsKICAgICAgICAgICAgIG1fYnVmZmVyLmxh
c3QoKS0+YXBwZW5kKGRhdGEsIGFwcGVuZFNpemUpOwogICAgICAgICAgICAgZGF0YSArPSBhcHBl
bmRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9VbmlxdWVSZWYuaAppbmRleCA3M2U5ZGZlYzA2ZmQ3ODdmM2IwNmIzZGM5ZGE2NWE1
NTA0ZDFjMDI5Li42NTkxMjUxYjg2MjdkZjM2Y2YyZWI5Zjc0NzkzZWY0ODljYTFlOTU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9V
bmlxdWVSZWYuaApAQCAtMzMsMTEgKzMzLDE4IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVlUmVmOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFz
cy4uLiBBcmdzPgotVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCitV
bmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4u
IGFyZ3MpCiB7CiAgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+
CitVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK3sKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0ZWRDbGFzcywg
aW50Pjo6dmFsdWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogY2xhc3MgVW5pcXVlUmVmIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzcwLDcgQEAgY2xh
c3MgVW5pcXVlUmVmIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VD4gbW92ZVRvVW5pcXVlUHRyKCkg
eyByZXR1cm4gV1RGTW92ZShtX3JlZik7IH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJn
cyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5p
cXVlUmVmPFU+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLik7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gZnJpZW5kIGNsYXNzIFVuaXF1ZVJlZjsKIAogICAgIFVu
aXF1ZVJlZihUJiBvdGhlcikKQEAgLTc5LDMgKzg2LDQgQEAgY2xhc3MgVW5pcXVlUmVmIHsKIAog
dXNpbmcgV1RGOjpVbmlxdWVSZWY7CiB1c2luZyBXVEY6Om1ha2VVbmlxdWVSZWY7Cit1c2luZyBX
VEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcAppbmRleCA1ZTViYThhYmViZGJkNDliYmI4MzdkZDRjNGZkNjliZDZmZmMz
NjFmLi5mYjIxMWQwYTI5NjFkZmMxNmFhNmUyMWEyMWE5NzRkZmYxNTI2OTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9nbGliL1J1bkxvb3BHTGliLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgUnVuTG9vcDo6
ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGR1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24pCiAgICAgZ19zb3VyY2Vfc2V0X25hbWUoc291cmNlLmdldCgpLCAiW1dlYktpdF0gUnVuTG9v
cCBkaXNwYXRjaEFmdGVyIik7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUoc291cmNlLmdl
dCgpLCBnX2dldF9tb25vdG9uaWNfdGltZSgpICsgZHVyYXRpb24ubWljcm9zZWNvbmRzQXM8Z2lu
dDY0PigpKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGF0Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVu
Y3Rpb24pKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRl
eHQgPSBtYWtlVW5pcXVlPERpc3BhdGNoQWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7
CiAgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKHNvdXJjZS5nZXQoKSwgW10oZ3BvaW50ZXIgdXNl
ckRhdGEpIC0+IGdib29sZWFuIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0
ZXJDb250ZXh0PiBjb250ZXh0KHN0YXRpY19jYXN0PERpc3BhdGNoQWZ0ZXJDb250ZXh0Kj4odXNl
ckRhdGEpKTsKICAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCmluZGV4IGRjYmEwNjA4MmM1ZjY2ZTMxOWExNWVlNTk3ZmM2NDk3NjZiMDVlNmMu
LjViZjRlNmQwMWRlODQzZWQyODc4ODNlYTNhMDNlODQ5NDkzYmVjZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIGNsYXNzIFN0cmluZ1ZpZXc6Okdy
YXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsIHsKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBo
ZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdW
aWV3LCB1bnNpZ25lZCBpbmRleCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEltcGw+
KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25h
bDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8
SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9w
dGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1h
bmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5p
ZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBmZGI4Y2UyOTJkNzM4ZGE0
MjAzOGFhOTY1YWYzYWNhMTc4YTgwY2ViLi44ZGM3NmZhMmU1OWVhNjdlMDIxNzM4YzMxMWEzNTc3
ZjRkMzZlNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIu
Y3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9n
TWFuaWZlc3RQcm9wZXJ0eUludmFsaWRVUkwoY29uc3QgU3RyaW5nJiBwcm9wCiB2b2lkIEFwcGxp
Y2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewogICAgIGlmIChtX2NvbnNvbGVDb250ZXh0KQotICAgICAgICBtX2NvbnNvbGVD
b250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KEpTQzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6
OkxvZywgSlNDOjpNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBw
bGljYXRpb24gbWFuaWZlc3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1l
c3NhZ2UpKSk7CisgICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNlOjpP
dGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywg
bWFrZVN0cmluZygiUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZlc3RV
Ukwuc3RyaW5nKCksICI6ICJfcywgbWVzc2FnZSkpKTsKIH0KIAogVVJMIEFwcGxpY2F0aW9uTWFu
aWZlc3RQYXJzZXI6OnBhcnNlU3RhcnRVUkwoY29uc3QgSlNPTjo6T2JqZWN0JiBtYW5pZmVzdCwg
Y29uc3QgVVJMJiBkb2N1bWVudFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCmluZGV4IDliZmE1Zjk0OTk0YjA1NDUwNmI4MjZhMzE0
YjgyNTgyN2VhNDFhZGIuLjdlNGY3OTQ3MWUyYzU5ZmU3MWMxNDgxMzJmNGI1NTFkOGZmYzc5MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29u
LmNwcApAQCAtNTIsNyArNTIsNyBAQCBOYXZpZ2F0b3JCZWFjb24qIE5hdmlnYXRvckJlYWNvbjo6
ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yQmVhY29uKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZu
YXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JCZWFj
b24+KG5hdmlnYXRvcik7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8
TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0b3IpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAppbmRleCA1ZWQxZjVjY2E2NDFl
YjA0ZWMwZTBhMGNlMDZjODM3MjQ1NjhhMmZmLi42MTUzOTQzMGRmYjk2MTZmZDI4OGZlZDkyY2I5
NDRmZjQ0NmIwMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TVdpbmRvd0NhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01X
aW5kb3dDYWNoZXMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIERPTVdpbmRvd0NhY2hlcyogRE9NV2lu
ZG93Q2FjaGVzOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIGF1dG8qIHN1cHBsZW1l
bnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dDYWNoZXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46
OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93
Q2FjaGVzPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PERPTVdpbmRvd0NhY2hlcz4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKaW5kZXggMDY1
NmJlZjBiMTcxOGUzM2RiYzdmYTBlZTYwYzU3ZDQ4ZTM4ZDRlOC4uNTExOGE0ODg1MGYyNDJkMDQ0
ZDNiNDBmZjBlM2IyM2JiOTZlMjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMqIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzOjpmcm9t
KFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGVDYWNoZXMqPihTdXBwbGVtZW50PFdvcmtlckdsb2Jh
bFNjb3BlPjo6ZnJvbSgmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBs
ZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxX
b3JrZXJHbG9iYWxTY29wZUNhY2hlcz4oc2NvcGUpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1l
bnQgPSBtYWtlVW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJnNj
b3BlLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05h
dmlnYXRvckNyZWRlbnRpYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlh
bG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCmluZGV4IDcxZjQzOGNmNzg2Yzc2
ZDdiNTg3MjE1NTk3NjY4YjYyMzYxYjU5OTMuLjExODFiZDk4NWEyMmJhNDkzZjgzNjMxZDdlNDFm
ZWU4NzliNTZiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlh
bG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBOYXZpZ2F0b3JDcmVkZW50aWFs
czo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JDcmVkZW50aWFs
cyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckNyZWRlbnRpYWxzKj4oU3VwcGxl
bWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdmlnYXRvckNyZWRlbnRpYWxzPigpOworICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckNyZWRlbnRpYWxzPigpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRv
ciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5jcHAKaW5kZXggYjZmZDY4ZDY3MmVkZTM4Nzc4YzE1YzZmZWFhZjQ2YjQ1NWU1
YTFjZC4uNzVlZGI2YTkzNjM4ODBlNTg3YzM1NzU2YjE0ZGVjOWY5YjQ1ZTY5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEK
ICAgICAgICAgYXV0byBzeXN0ZW1JRCA9IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveDo6cGVla1N5c3RlbUlEKHZpZXcsIG9mZnNldCk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVB
TUlOR19DRU5DX0lOSVREQVRBKQogICAgICAgICBpZiAoc3lzdGVtSUQgPT0gSVNPRmFpclBsYXlT
dHJlYW1pbmdQc3NoQm94OjpmYWlyUGxheVN5c3RlbUlEKCkpIHsKLSAgICAgICAgICAgIGF1dG8g
ZnBzUHNzaCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94Pigp
OworICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gbWFrZVVuaXF1ZTxJU09GYWlyUGxheVN0cmVh
bWluZ1Bzc2hCb3g+KCk7CiAgICAgICAgICAgICBpZiAoIWZwc1Bzc2gtPnJlYWQodmlldywgb2Zm
c2V0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAg
cHNzaEJveGVzLmFwcGVuZChXVEZNb3ZlKGZwc1Bzc2gpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBP
cHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveD4+PiBJbml0RGF0YQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHN5c3Rl
bUlEKTsKICNlbmRpZgotICAgICAgICBhdXRvIHBzc2hCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPElT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKKyAgICAgICAgYXV0byBwc3No
Qm94ID0gbWFrZVVuaXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+KCk7
CiAgICAgICAgIGlmICghcHNzaEJveC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggODI2Mjg5M2Zl
MGFmOTk5MTRlZDM5ZTk2MGNmMTBhNzUzNDA3MDViNi4uODM3ZGYxMjNhZTU5NmYzNTM3YzkxNTI3
MDNlM2QyNzFiMzQ2ZWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCkBAIC02MSwxNSArNjEsMTUg
QEAgc3RydWN0IENETUZhY3Rvcnkgewogc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5Kj4mIGluc3Rh
bGxlZENETUZhY3RvcmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRl
c3Ryb3llZChWZWN0b3I8Q0RNRmFjdG9yeSo+IHsKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10o
TGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q0RNUHJpdmF0
ZUNsZWFyS2V5PihjZG0pOyB9LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0q
IGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7
IH0sCiAgICAgICAgICAgICBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lz
dGVtLCBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5
cGUpLAogCiAgICAgICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMuIGh0
dHA6Ly93ZWJraXQub3JnL2IvMTA5MzE4LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMyMAotICAg
ICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1G
YWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVN
ZWRpYVBsYXllcj4oY2RtKTsgfSwKICAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVBsYXllcjo6
c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0
ZW1BbmRNaW1lVHlwZSksCiAKICNpZiAoSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKSB8fCBIQVZF
KEFWU1RSRUFNU0VTU0lPTikpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgICAgIG5ldyBD
RE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0
b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM+KGNkbSk7IH0sCiAgICAgICAgICAgICBDRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAjZW5kaWYKICAgICB9KTsKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNPiBMZWdhY3lDRE06OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtl
eVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TGVnYWN5Q0RNPihrZXlTeXN0ZW0pOworICAgIHJldHVybiBtYWtlVW5pcXVlPExl
Z2FjeUNETT4oa2V5U3lzdGVtKTsKIH0KIAogTGVnYWN5Q0RNOjpMZWdhY3lDRE0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCmluZGV4IDQ1OGVjNTNiNDMzN2IxNzEwNTU2
ZjhhMTdiNGVmMDFlZmNlMTU2NGUuLmZiNWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1ZmUwYTVlODk2
NDA2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCkBAIC01MCw3ICs1MCw4IEBAIGNsYXNzIExlZ2FjeUNE
TUNsaWVudCB7CiAgICAgdmlydHVhbCBSZWZQdHI8TWVkaWFQbGF5ZXI+IGNkbU1lZGlhUGxheWVy
KGNvbnN0IExlZ2FjeUNETSopIGNvbnN0ID0gMDsKIH07CiAKLWNsYXNzIExlZ2FjeUNETSB7Citj
bGFzcyBMZWdhY3lDRE0gZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IExlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaAppbmRleCAwYThkNTRlNWM1NjVmMzQ1MDg1NjJj
NWE4YzFlMDAzNWFmMTRhNzRmLi5mMjQ5NzA3MmU3ODU3NjBjNTllMjMwMzkzNGZiN2Y5Y2M0Nzcy
ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCkBAIC0zNSw2ICszNSw3IEBAIGNs
YXNzIExlZ2FjeUNETVNlc3Npb247CiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OwogCiBj
bGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBDRE1Qcml2YXRlSW50ZXJmYWNlKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1
YWwgfkNETVByaXZhdGVJbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xl
YXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAppbmRleCBjOTMxNmRmZDhhYmI0MDU0OTJmNTU1
ZWIzZDFiM2QwOTE3Y2VmZjUwLi4zYThjMDBmNTIzMWY1MmE2ZTg5ZDE4M2QxNTExYzNhYzg3NzNh
MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRz
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbihMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q0RNU2Vzc2lvbkNsZWFyS2V5PihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENE
TVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFy
S2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1TZXNzaW9uQ2xlYXJLZXkuaAppbmRleCAyZjdiMDM1MzllZjhlYTQ3NGUyMzZkMDVkOWUx
N2ZlYzQ4NGU2MjdlLi5iYzc3N2YwY2JjOGNlN2I4OWU5NDNiOGE2M2U0ZTZlODI4OWIzOGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9M
ZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaApAQCAtMzMsNyAr
MzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENETVNlc3Npb25DbGVhcktl
eSA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKK2NsYXNzIENETVNlc3Npb25DbGVhcktleSBm
aW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudCopOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25DbGVhcktleSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBhZGRjNTQ4OTZi
OGE0NDM4Y2ZiZmQwNjU4MGFkYmM4NjBhODFmODY0Li5kYjYzOTBlN2Y5OTI1OTc3Yjg3Y2EwMDll
ZGFiZDUxY2RiNjY3MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6
OmxvYWRCbG9iKGNvbnN0IEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikK
ICAgICB9CiAKICAgICBtX2Jsb2JMb2FkZXIuZW1wbGFjZSgqdGhpcyk7Ci0gICAgbV9ibG9iTG9h
ZGVyLT5sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVy
LCBjb25zdW1lcik7CisgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNo
TG9hZGVyPigqbV9ibG9iTG9hZGVyLCBjb25zdW1lcik7CiAKICAgICBtX2Jsb2JMb2FkZXItPmxv
YWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CiAgICAgaWYgKCFt
X2Jsb2JMb2FkZXItPmxvYWRlci0+aXNTdGFydGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGNkMzQ1ZWI5ZWMzNDBjMzZlMGYw
YTZlZWQ4MmRkOTg4YjRmOTdkMzkuLjk0MDEzY2Y0ZWE2NTIzOGQ4M2I5YjRjODFkYjdkMTgxNjUz
MjQ3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0CiAKICAgICBy
ZXNwb25zZS0+YWRkQWJvcnRTdGVwcyhyZXF1ZXN0LnNpZ25hbCgpKTsKIAotICAgIHJlc3BvbnNl
LT5tX2JvZHlMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEJvZHlMb2FkZXI+KHJlc3BvbnNlLmdl
dCgpLCBXVEZNb3ZlKHJlc3BvbnNlQ2FsbGJhY2spKTsKKyAgICByZXNwb25zZS0+bV9ib2R5TG9h
ZGVyID0gbWFrZVVuaXF1ZTxCb2R5TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RGTW92ZShyZXNw
b25zZUNhbGxiYWNrKSk7CiAgICAgaWYgKCFyZXNwb25zZS0+bV9ib2R5TG9hZGVyLT5zdGFydChj
b250ZXh0LCByZXF1ZXN0KSkKICAgICAgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG51bGxw
dHI7CiB9CkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogYm9vbCBG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgbV9sb2FkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVzcG9uc2UubV9ib2R5LT5j
b25zdW1lcigpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlz
LCAmbV9yZXNwb25zZS5tX2JvZHktPmNvbnN1bWVyKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChj
b250ZXh0LCByZXF1ZXN0KTsKICAgICByZXR1cm4gbV9sb2FkZXItPmlzU3RhcnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVw
YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQu
Y3BwCmluZGV4IDYxMDIwODk5Y2JjNGE3ZTQzM2IxNTFkY2NhZWJmZTkwNzY0ZDNlMmQuLjg1MGQy
MmRlMjg1YmIzMzVkMjJlOGMyZTI1M2I3YWI2ZTBjNjAzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgTmF2aWdhdG9yR2FtZXBhZCogTmF2aWdhdG9yR2FtZXBhZDo6ZnJvbShOYXZpZ2F0b3Iq
IG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JHYW1lcGFkKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8TmF2aWdhdG9yR2FtZXBhZCo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZp
Z2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFk
PigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdh
bWVwYWQ+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAg
ICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1
cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYjA5ZmMzNDMz
YmJmYmI3MjhmMzE1YzE1MzNhNmYyYzllNGZjMDA3MS4uY2Q4MDcwYjIwN2RiOGEzNDQwMjZjZmY2
MTA1Yjg1ZWUxOWJjNTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTU1LDcgKzE1
NSw3IEBAIGNvbnN0IGNoYXIqIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUo
KQogdm9pZCBwcm92aWRlR2VvbG9jYXRpb25UbyhQYWdlKiBwYWdlLCBHZW9sb2NhdGlvbkNsaWVu
dCYgY2xpZW50KQogewogICAgIEFTU0VSVChwYWdlKTsKLSAgICBTdXBwbGVtZW50PFBhZ2U+Ojpw
cm92aWRlVG8ocGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBz
dGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNsaWVudCkpOwor
ICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Db250cm9sbGVyPigq
cGFnZSwgY2xpZW50KSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2Vv
bG9jYXRpb24uY3BwCmluZGV4IGIzNGY0OWE2NzFkODVmNTE0MmI4YmFmMGY1MmJhOTkxYWM0MzU5
ZGMuLjM1ZGZiZjhmM2YyNTY5YzAxMzUzNTY2MzAwZjViNzgzN2RlMjhmYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2Vv
bG9jYXRpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBOYXZp
Z2F0b3JHZW9sb2NhdGlvbjo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvcikKIHsKICAgICBOYXZp
Z2F0b3JHZW9sb2NhdGlvbiogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdlb2xv
Y2F0aW9uKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHZW9sb2NhdGlvbj4obmF2aWdhdG9y
KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHZW9s
b2NhdGlvbj4obmF2aWdhdG9yKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcApp
bmRleCBjNzIwM2E5YTg2NDA5NzA1MGQzZGMwMDc5MmY3YTZiNTgxZmFhMjVlLi41ZTlkOTc5NjZi
ZmRlNThlNjYwOTlhNTA5ZTYxOGI4NGMxOGQwNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgRE9NV2luZG93SW5kZXhlZERhdGFiYXNlKiBET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2U6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93
SW5kZXhlZERhdGFiYXNlKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93SW5kZXhl
ZERhdGFiYXNlKj4oU3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93
KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2U+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZN
b3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZjQzMDkwYzRkY2MzZWRlNWUy
N2QxYWE0NDM4NDQ0N2Q4NDljNjQwYi4uOWE3ODEyNzg0NjNlZDBhNGEwYWRkZDNmN2RiMGM1NjU2
OTYyYjljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcApAQCAtNTE3LDcgKzUxNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJJ
bmRleD4+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKICAg
ICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAi
RmFpbGVkIHRvIGV4ZWN1dGUgJ2luZGV4JyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgc3BlY2lm
aWVkIGluZGV4IHdhcyBub3QgZm91bmQuIl9zIH07CiAKLSAgICBhdXRvIGluZGV4ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0
aGlzKTsKKyAgICBhdXRvIGluZGV4ID0gbWFrZVVuaXF1ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKIAogICAgIFJlZjxJREJJbmRleD4gcmVmZXJl
bmNlZEluZGV4IHsgKmluZGV4IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBmYTJjZDdlYWQwOWI2MDU1MjViOGNi
NDQxZWY3MDAxZDgzMzUwMTAwLi40MjI0M2ZiYTU3MzEyOTU0MTg4OTRhMzIwNDNlODllMGIyYzFh
NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9iamVj
dFN0b3JlPj4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWMK
ICAgICBpZiAoIWluZm8gfHwgKCFmb3VuZCAmJiAhaXNWZXJzaW9uQ2hhbmdlKCkpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdv
YmplY3RTdG9yZScgb24gJ0lEQlRyYW5zYWN0aW9uJzogVGhlIHNwZWNpZmllZCBvYmplY3Qgc3Rv
cmUgd2FzIG5vdCBmb3VuZC4iX3MgfTsKIAotICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5m
bywgKnRoaXMpOworICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElEQk9iamVjdFN0
b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwogICAgIGF1dG8q
IHJhd09iamVjdFN0b3JlID0gb2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2Jq
ZWN0U3RvcmVzLnNldChvYmplY3RTdG9yZU5hbWUsIFdURk1vdmUob2JqZWN0U3RvcmUpKTsKIApA
QCAtNjY3LDcgKzY2Nyw3IEBAIFJlZjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246OmNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYKIAogICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIobV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVMb2NrKTsKIAotICAgIGF1dG8gb2Jq
ZWN0U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9yZSA9IG1ha2VV
bmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0
aGlzKTsKICAgICBhdXRvKiByYXdPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwogICAg
IG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jlcy5zZXQoaW5mby5uYW1lKCksIFdURk1vdmUob2JqZWN0
U3RvcmUpKTsKIApAQCAtNzU1LDcgKzc1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJJbmRleD4g
SURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yCiAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmNyZWF0ZUluZGV4T25TZXJ2ZXIob3BlcmF0aW9uLCBpbmZv
KTsKICAgICB9KSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJJbmRleD4oKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmpl
Y3RTdG9yZSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4T25TZXJ2ZXIo
SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJJbmRl
eEluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKaW5k
ZXggYTQ4NTAzYjRkMmQ4MDQyOTQ2ODRhNjVhNjVlYmQ2NGYyMzNjZDdiOS4uOWI3NTc3NDkyMWI0
NjUwNmY1ODNkZTdmZWM0MjUwZTg1NGFjZTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5k
ZXhlZERhdGFiYXNlLmNwcApAQCAtNTksNyArNTksNyBAQCBXb3JrZXJHbG9iYWxTY29wZUluZGV4
ZWREYXRhYmFzZSogV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20oV29ya2Vy
RwogICAgICAgICBpZiAoIWNvbm5lY3Rpb25Qcm94eSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29y
a2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblByb3h5KTsK
KyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxTY29w
ZUluZGV4ZWREYXRhYmFzZT4oc2NvcGUsICpjb25uZWN0aW9uUHJveHkpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZzY29wZSwg
c3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA5NDhjZjc0NjYzYWU2OWM4MmRhNDQ0ZTA5
MzQ3M2RkODU2ZDRkZTkzLi4zNzcxMWRjMTAzZGI2YzlhOWI4MTNkYmM5ZGY3OTliN2UyNmE2ZDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBS
ZWY8SURCQ29ubmVjdGlvblRvU2VydmVyPiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZShJ
REJDb25uZWN0aW9uVG9TZXJ2ZXJEZQogCiBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcihJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZSYgZGVsZWdhdGUpCiAg
ICAgOiBtX2RlbGVnYXRlKG1ha2VXZWFrUHRyKGRlbGVnYXRlKSkKLSAgICAsIG1fcHJveHkoc3Rk
OjptYWtlX3VuaXF1ZTxJREJDb25uZWN0aW9uUHJveHk+KCp0aGlzKSkKKyAgICAsIG1fcHJveHko
bWFrZVVuaXF1ZTxJREJDb25uZWN0aW9uUHJveHk+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3Bl
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFu
c2FjdGlvbk9wZXJhdGlvbi5jcHAKaW5kZXggMjc1M2ZkMGMyNDU3YjljMDlkOWQ4OWU0Zjc2MmI0
NzlmOGI0NDBiMS4uOGUxZGUwNmQ3MWU4ZjBiMjIzZDY4NmU1ZTFhOGEyMjA5Yjc0Mzg0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFRyYW5zYWN0
aW9uT3BlcmF0aW9uOjpUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24sIElEQlJlcXVlCiAgICAgaWYgKG1faW5kZXhJZGVudGlmaWVyKQogICAgICAgICBtX2lu
ZGV4UmVjb3JkVHlwZSA9IHJlcXVlc3QucmVxdWVzdGVkSW5kZXhSZWNvcmRUeXBlKCk7CiAgICAg
aWYgKGF1dG8qIGN1cnNvciA9IHJlcXVlc3QucGVuZGluZ0N1cnNvcigpKQotICAgICAgICBtX2N1
cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
Y3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVy
ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+aW5mbygpLmlkZW50
aWZpZXIoKSk7CiAKICAgICBtX2lkYlJlcXVlc3QgPSAmcmVxdWVzdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5k
ZXggODliZmU3OTNkN2RiYjVjZTczMTE0NzllZjY5NTBiOWNmZDE3Y2UwOC4uM2JiNmRhY2E2OGQ3
YzBmNTNhZDg3ZTlkMWRmMThhM2ZmZTRhOTFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTEyMyw3ICsxMjMs
NyBAQCBVbmlxdWVJREJEYXRhYmFzZSYgSURCU2VydmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRh
dGFiYXNlKGNvbnN0IElEQkRhdGFiYXNlSWRlbgogCiAgICAgYXV0byB1bmlxdWVJREJEYXRhYmFz
ZSA9IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwogICAg
IGlmICh1bmlxdWVJREJEYXRhYmFzZS5pc05ld0VudHJ5KQotICAgICAgICB1bmlxdWVJREJEYXRh
YmFzZS5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXF1ZUlEQkRhdGFiYXNl
PigqdGhpcywgaWRlbnRpZmllcik7CisgICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9y
LT52YWx1ZSA9IG1ha2VVbmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVy
KTsKIAogICAgIHJldHVybiAqdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlOwogfQpA
QCAtMTM1LDcgKzEzNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3RvcmU+IElEQlNl
cnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiAgICAgaWYgKG1fZGF0
YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlKGlkZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9k
YXRhYmFzZURpcmVjdG9yeVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIs
IG1fcGVyT3JpZ2luUXVvdGEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCBtX2JhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyLCBtX3Blck9yaWdpblF1b3RhKTsK
IH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEpCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBJREJTZXJ2ZXI6OlF1b3RhVXNl
cjo6aW5pdGlhbGl6ZVNwYWNlVXNlZCh1aW50NjRfdCBzcGFjZVVzZWQpCiBJREJTZXJ2ZXI6OlF1
b3RhVXNlciYgSURCU2VydmVyOjplbnN1cmVRdW90YVVzZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4pCiB7CiAgICAgcmV0dXJuICptX3F1b3RhVXNlcnMuZW5zdXJlKG9yaWdpbiwgW3RoaXMs
ICZvcmlnaW5dIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VyPigq
dGhpcywgbV9xdW90YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9y
aWdpbiB7IG9yaWdpbiB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGFVc2VyPigq
dGhpcywgbV9xdW90YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9y
aWdpbiB7IG9yaWdpbiB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFs
dWVTdG9yZS5jcHAKaW5kZXggNjk4M2M5ZDdlYWZmNTYxNjcyMDRkOTUyZjFmMjI2N2JiNDBjYTRi
YS4uOGQ5MjFkOGVmZTZiYTg0MGEzMGQ2MWRmZGM2YTcyMWU4MjhhNDNhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFs
dWVTdG9yZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSURCRXJyb3IgSW5kZXhWYWx1ZVN0b3JlOjph
ZGRSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYgaW5kZXhLZXksIGNvbnN0IElEQktleURhdGEKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yKENvbnN0cmFpbnRFcnJvcik7CiAKICAgICBpZiAocmVzdWx0
LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluZGV4VmFsdWVFbnRyeT4obV91bmlxdWUpOworICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKIAogICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZEtleSh2YWx1ZUtleSk7CiAgICAgbV9vcmRlcmVk
S2V5cy5pbnNlcnQoaW5kZXhLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbi5jcHAKaW5kZXggNDdjYzQyZmQyNmQ2NDczYzY0MTkyN2U5OTJkNGVjNmU4ZDdi
ZjhlZS4uNWU3MTQ0OTc4NGEwZGEwNzY3Nzg5YThkZWRjNTIyNjg5ZjRkOGRjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3
IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24+IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUo
TWVtb3J5SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQlRyYW5zYWN0aW9u
SW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsK
IH0KIAogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mIGluZm8pCkBAIC01Miw3ICs1Miw3IEBAIE1lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihNZW1vcnlJREJCYWNr
aW5nU3RvCiAgICAgICAgIElEQkRhdGFiYXNlSW5mbyBpbmZvOwogICAgICAgICBhdXRvIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUuZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oaW5mbyk7CiAgICAg
ICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgICAgICAg
ICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGlu
Zm8pOwogICAgIH0KIH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb246OnJlY29yZFZhbHVlQ2hhbmdlZChNZW1vcnlPYmplY3RTdG9yZSYgb2Jq
ZWN0CiAKICAgICBhdXRvIG9yaWdpbmFsQWRkUmVzdWx0ID0gbV9vcmlnaW5hbFZhbHVlcy5hZGQo
Jm9iamVjdFN0b3JlLCBudWxscHRyKTsKICAgICBpZiAob3JpZ2luYWxBZGRSZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKIAogICAgIGF1dG8qIG1h
cCA9IG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA3ZDE0MmIwMDUwYWI2MDg4MWUzODdiZThjMTk4
OTQ3YWM2ZThkZDgxLi5jZmZlMzMzN2Y3OTQ0OGI4YzIxM2RiYmU1ZmEzNWI0ZDNhNzBmMmY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0
aWMgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCiBz
dGQ6OnVuaXF1ZV9wdHI8TWVtb3J5SURCQmFja2luZ1N0b3JlPiBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihpZGVudGlm
aWVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50
aWZpZXIpOwogfQogCiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9y
ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCkBAIC02MSw3ICs2MSw3
IEBAIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6fk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpID0gZGVm
YXVsdDsKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRh
YmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogewogICAgIGlmICghbV9kYXRhYmFzZUlu
Zm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CisgICAgICAgIG1fZGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFz
ZU5hbWUoKSwgMCk7CiAKICAgICBpbmZvID0gKm1fZGF0YWJhc2VJbmZvOwogICAgIHJldHVybiBJ
REJFcnJvciB7IH07CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgTWVtb3J5SURCQmFja2luZ1N0b3Jl
OjpzZXREYXRhYmFzZUluZm8oY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogICAgIC8vIEl0
IGlzIG5vdCB2YWxpZCB0byBkaXJlY3RseSBzZXQgZGF0YWJhc2UgaW5mbyBvbiBhIGJhY2tpbmcg
c3RvcmUgdGhhdCBoYXNuJ3QgYWxyZWFkeSBzZXQgaXRzIG93biBkYXRhYmFzZSBpbmZvLgogICAg
IEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CiAKLSAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICBtX2RhdGFiYXNlSW5mbyA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKIH0KIAogSURCRXJyb3IgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYg
aW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SW5kZXguY3BwCmluZGV4IDQ5ZGRjYTZiZDQwZDI5ZDQyZTM4Yjg1MTMxYzg5ZmRm
ZTdkNDc5MmQuLjg1OTVkYmI4ZjRhN2VlM2QxOTFlMzFmYjYxMGIwNDk3NWI4NzQ2MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRl
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUluZGV4LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIElEQkVycm9yIE1lbW9yeUluZGV4OjpwdXRJ
bmRleEtleShjb25zdCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgY29uc3QgSW5kZXhLZXkmIGluCiAg
ICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUluZGV4Ojpwcm92aXNpb25hbFB1dEluZGV4S2V5Iik7
CiAKICAgICBpZiAoIW1fcmVjb3JkcykgewotICAgICAgICBtX3JlY29yZHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluZGV4VmFsdWVTdG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKKyAgICAgICAgbV9yZWNv
cmRzID0gbWFrZVVuaXF1ZTxJbmRleFZhbHVlU3RvcmU+KG1faW5mby51bmlxdWUoKSk7CiAgICAg
ICAgIG5vdGlmeUN1cnNvcnNPZkFsbFJlY29yZHNDaGFuZ2VkKCk7CiAgICAgfQogCkBAIC0yNTks
NyArMjU5LDcgQEAgTWVtb3J5SW5kZXhDdXJzb3IqIE1lbW9yeUluZGV4OjptYXliZU9wZW5DdXJz
b3IoY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7CisgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0
aGlzLCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggZWQ2ZWJhOTI3ZjFmNGY2YjljMzA2OGY2
YjVkODhkZTI5OTcyNjdlYi4uNWI0NGE3Mzg3OGM5ZmRkN2ExZTA1YTk1Yjc2NTdlYmU2MzYzNTE1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0yNTksOCArMjU5LDggQEAgSURCRXJy
b3IgTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24KIAogICAgIGlmICghbV9rZXlWYWx1ZVN0b3JlKSB7CiAgICAgICAg
IEFTU0VSVCghbV9vcmRlcmVkS2V5cyk7Ci0gICAgICAgIG1fa2V5VmFsdWVTdG9yZSA9IHN0ZDo6
bWFrZV91bmlxdWU8S2V5VmFsdWVNYXA+KCk7Ci0gICAgICAgIG1fb3JkZXJlZEtleXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQktleURhdGFTZXQ+KCk7CisgICAgICAgIG1fa2V5VmFsdWVTdG9yZSA9
IG1ha2VVbmlxdWU8S2V5VmFsdWVNYXA+KCk7CisgICAgICAgIG1fb3JkZXJlZEtleXMgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxJREJLZXlEYXRhU2V0PigpOwogICAgIH0KIAog
ICAgIGF1dG8gbWFwUmVzdWx0ID0gbV9rZXlWYWx1ZVN0b3JlLT5zZXQoa2V5RGF0YSwgdmFsdWUu
ZGF0YSgpKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvciogTWVt
b3J5T2JqZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJDdXJzb3JJbmZvJgogICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5T2JqZWN0U3Rv
cmVDdXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4oKnRoaXMsIGluZm8pOwogICAgIHJldHVy
biByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCmluZGV4IGJmYmQwOWRiYjlhNzFkM2M0MWE5ZGY2YTc3OTRlZWRlNTgxYWJk
NzAuLmRhYTRhMTliZDgzOTZmMzgxOWU2OWRjOTk1Njc2ZTMzOWVhZGQyMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02MjQsNyArNjI0LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVBbmRQb3B1
bGF0ZUluaXRpYWwKICAgICB9CiAKICAgICAvLyBUaGlzIGluaXRpYWwgZGF0YWJhc2UgaW5mbyBt
YXRjaGVzIHRoZSBkZWZhdWx0IHZhbHVlcyB3ZSBqdXN0IHB1dCBpbnRvIHRoZSBtZXRhZGF0YSBk
YXRhYmFzZS4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1f
aWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURC
RGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJh
Y3RFeGlzdGluZ0RhdGFiYXNlSW5mbygpCkBAIC02NTksNyArNjU5LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3Rp
bmdEYXRhYmFzZUkKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gZGF0YWJhc2VJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VW
ZXJzaW9uKTsKKyAgICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJ
bmZvPihkYXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7CiAKICAgICB7CiAgICAgICAgIFNR
TGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsICJTRUxFQ1QgaWQsIG5hbWUsIGtleVBhdGgs
IGF1dG9JbmMsIG1heEluZGV4SUQgRlJPTSBPYmplY3RTdG9yZUluZm87Il9zKTsKQEAgLTgyMSw3
ICs4MjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNo
RGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbwogCiAgICAgU3RyaW5nIGRiRmlsZW5h
bWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7CiAKLSAgICBtX3NxbGl0ZURCID0gc3RkOjptYWtlX3Vu
aXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKKyAgICBtX3NxbGl0ZURCID0gbWFrZVVuaXF1ZTxTUUxp
dGVEYXRhYmFzZT4oKTsKICAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4oZGJGaWxlbmFtZSkpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0
aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgY2xvc2VTUUxpdGVE
QigpOwpAQCAtOTMxLDExICs5MzEsMTEgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBlc3RhYmxpc2gg
dHJhbnNhY3Rpb24gaWRlbnRpZmllciB0aGF0IGFscmVhZHkgZXhpc3RzIl9zIH07CiAgICAgfQog
Ci0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRl
SURCVHJhbnNhY3Rpb24+KCp0aGlzLCBpbmZvKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJUcmFuc2FjdGlvbj4oKnRoaXMsIGluZm8pOwogCiAg
ICAgYXV0byBlcnJvciA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmJlZ2luKCptX3NxbGl0
ZURCKTsKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkgJiYgaW5mby5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7Ci0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm9CZWZvcmVWZXJzaW9uQ2hhbmdlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KCptX2RhdGFiYXNlSW5mbyk7CisgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVW
ZXJzaW9uQ2hhbmdlID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX2RhdGFiYXNlSW5m
byk7CiAKICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9zcWxpdGVEQiwgIlVQREFURSBJ
REJEYXRhYmFzZUluZm8gU0VUIHZhbHVlID0gPyB3aGVyZSBrZXkgPSAnRGF0YWJhc2VWZXJzaW9u
JzsiX3MpOwogICAgICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKQEAgLTI2NjIs
NyArMjY2Miw3IEBAIFNRTGl0ZVN0YXRlbWVudCogU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjYWNo
ZWRTdGF0ZW1lbnQoU1FMaXRlSURCQmFja2luZ1N0b3JlOjpTCiAgICAgfQogCiAgICAgaWYgKG1f
c3FsaXRlREIpIHsKLSAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVf
dD4oc3FsKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIs
IHN0YXRlbWVudCk7CisgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNxbCldID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0
ZW1lbnQpOwogICAgICAgICBpZiAobV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVf
dD4oc3FsKV0tPnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBtX2NhY2hlZFN0
YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IG51bGxwdHI7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcAppbmRleCBmODQwNWE3OThhMzY4MTBkYzU3NmFmMWU3M2JjYWY1MzEw
MjM3YmFmLi5jNmIzZmQ5NTNhMGQ1M2FjMTU2OGUyODQ4Y2JjNzhhMTJmMTk1NzU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vy
c29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQ3Vyc29yLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IHBy
ZWZldGNoTGltaXQgPSA4OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxp
dGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
biwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7CisgICAgYXV0
byBjdXJzb3IgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIGluZm8p
OwogCiAgICAgaWYgKCFjdXJzb3ItPmVzdGFibGlzaFN0YXRlbWVudCgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTU5LDcgKzU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1
cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJUcmFuc2FjdGkKIAog
c3RkOjp1bmlxdWVfcHRyPFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNy
ZWF0ZUJhY2tpbmdTdG9yZUN1cnNvcihTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24s
IGNvbnN0IHVpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IHVpbnQ2NF90IGluZGV4SUQsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCiB7Ci0gICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQsIGlu
ZGV4SUQsIHJhbmdlKTsKKyAgICBhdXRvIGN1cnNvciA9IG1ha2VVbmlxdWU8U1FMaXRlSURCQ3Vy
c29yPih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFuZ2UpOwogCiAgICAg
aWYgKCFjdXJzb3ItPmVzdGFibGlzaFN0YXRlbWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTE5OSw3ICsxOTksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRl
U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogICAgIEFTU0VSVCghbV9jdXJyZW50VXBwZXJL
ZXkuaXNOdWxsKCkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlv
bigpKTsKIAotICAgIG1fc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1l
bnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNlKCksIHNxbCk7
CisgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV90cmFuc2Fj
dGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsKIAogICAgIGlmICht
X3N0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAocHJlcGFyZS9pZCkgLSAnJXMnIiwg
bV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKS5sYXN0RXJyb3JN
c2coKSk7CkBAIC00NjQsNyArNDY0LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBT
UUxpdGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBl
OjpLZXlBbmRWYWx1ZSkKLSAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
a2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CisgICAgICAgICAgICByZWNvcmQu
cmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEuZGF0
YSgpLCBrZXlEYXRhLnNpemUoKSwgcmVjb3JkLnJlY29yZC5wcmltYXJ5S2V5KSkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgdmFsdWUgZGF0YSBmcm9tIGRh
dGFiYXNlIHdoaWxlIGFkdmFuY2luZyBpbmRleCBjdXJzb3IiKTsKQEAgLTQ4Niw3ICs0ODYsNyBA
QCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxG
ZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0gU1FMSVRF
X1JPVykgewogICAgICAgICAgICAgb2JqZWN0U3RvcmVTdGF0ZW1lbnQuZ2V0Q29sdW1uQmxvYkFz
VmVjdG9yKDAsIGtleURhdGEpOwotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShrZXlEYXRhKSkpOworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VV
bmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlE
YXRhKSkpOwogICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTUUxJVEVfRE9ORSkgewogICAg
ICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjb3JkIHdlJ3JlIHRyeWluZyB0
byByZXRyaWV2ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIG9iamVjdCBzdG9yZS4KICAgICAg
ICAgICAgIC8vIFNraXAgb3ZlciBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IGE2YTNjNWZmZjMzODBjMjVlZjczNjFlNjg4YmVmMzZjMDYxNWZjODMuLmQyMTJkZTJiNmI4
OGFmZmUwYTM1YjBmZDBmZDMzZmM4NjdjZWNiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0
aW9uLmNwcApAQCAtNTgsNyArNTgsNyBAQCBJREJFcnJvciBTUUxpdGVJREJUcmFuc2FjdGlvbjo6
YmVnaW4oU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQogewogICAgIEFTU0VSVCghbV9zcWxpdGVU
cmFuc2FjdGlvbik7CiAKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxTUUxpdGVUcmFuc2FjdGlvbj4oZGF0YWJhc2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb25Nb2RlOjpSZWFkb25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlx
dWU8U1FMaXRlVHJhbnNhY3Rpb24+KGRhdGFiYXNlLCBtX2luZm8ubW9kZSgpID09IElEQlRyYW5z
YWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24tPmJlZ2luKCk7
CiAKICAgICBpZiAobV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKaW5kZXggNzMwNDk3NDQyMGZmNDZmZGYyZWE5Njc5YjZkNWI1YjdlNjli
ZmRlYy4uNTdiNzdjMDEyNThmZDVkNDlmNzA1OGZlYmJkNTg1Mzc0M2MyZGI3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKHVpbnQ2NF90IGRlbGV0ZWRWZXJzaW9uKQogICAg
IC8vIHdlIHdvbid0IGhhdmUgYSBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvLiBJbiB0
aGF0IGNhc2UsIHdlJ2xsIG1hbnVmYWN0dXJlIG9uZSB1c2luZyB0aGUKICAgICAvLyBwYXNzZWQg
aW4gZGVsZXRlZFZlcnNpb24gYXJndW1lbnQuCiAgICAgaWYgKCFtX21vc3RSZWNlbnREZWxldGVk
RGF0YWJhc2VJbmZvKQotICAgICAgICBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5h
bWUoKSwgZGVsZXRlZFZlcnNpb24pOworICAgICAgICBtX21vc3RSZWNlbnREZWxldGVkRGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFz
ZU5hbWUoKSwgZGVsZXRlZFZlcnNpb24pOwogCiAgICAgaWYgKG1fY3VycmVudE9wZW5EQlJlcXVl
c3QpIHsKICAgICAgICAgbV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+bm90aWZ5RGlkRGVsZXRlRGF0
YWJhc2UoKm1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8pOwpAQCAtNzg1LDcgKzc4NSw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURC
RGF0YWJhc2VJbmZvJiBpbmZvLCBjb25zdCBJCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFj
a2luZ1N0b3JlIik7CiAgICAgCi0gICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAgbV9iYWNraW5nU3RvcmVPcGVuRXJyb3IgPSBl
cnJvcjsKIAogICAgIEFTU0VSVChtX2lzT3BlbmluZ0JhY2tpbmdTdG9yZSk7CkBAIC0xNzQ5LDcg
KzE3NDksNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2Fj
dGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsCiAgICAgICAgIEFTU0VSVChtX3ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbiA9PSB0cmFuc2FjdGlvbik7CiAgICAgICAgIEFTU0VSVCghbV92
ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25uZWN0aW9uIHx8ICZtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbi0+ZGF0YWJhc2VDb25uZWN0aW9uKCkgPT0gbV92ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25u
ZWN0aW9uKTsKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmln
aW5hbERhdGFiYXNlSW5mbygpKTsKLSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmln
aW5hbERhdGFiYXNlSW5mbygpKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oKm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERh
dGFiYXNlSW5mbygpKTsKICAgICB9CiAKICAgICBJREJFcnJvciByZXN1bHQgPSB0cmFuc2FjdGlv
bi0+c3RhdGUoKSA9PSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRl
ZCA/IHRyYW5zYWN0aW9uLT5yZXN1bHQoKSA6IGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmluZGV4IGYxN2E0ZTU1MjNmYjVmNjFiMDI2YTA5MTQ3
ZjgxNDFkNWI2NDEzOWEuLjg1NDBjYTc4NmQ1NzM1OGQ5ODJjNzNlNjQ2MGY3ZjhmMGE4ODM0NTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm4KICAgICBBU1NFUlQoZGF0YWJhc2Up
OwogCiAgICAgaWYgKG1fdHJhbnNhY3Rpb25JbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1v
ZGU6OlZlcnNpb25jaGFuZ2UpCi0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2UtPmluZm8oKSk7CisgICAgICAg
IG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0
YWJhc2UtPmluZm8oKSk7CiAKICAgICBpZiAoYXV0byogc2VydmVyID0gbV9kYXRhYmFzZUNvbm5l
Y3Rpb24tPnNlcnZlcigpKQogICAgICAgICBzZXJ2ZXItPnJlZ2lzdGVyVHJhbnNhY3Rpb24oKnRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlcXVlc3REYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKaW5kZXggYjEwZDg0MDk5YjI1MjhlNmY3M2MyOGIxNTA0
YThhOTMyNGQwYjIxYS4uMjE2NDE2YWZhMTFjZjI1NWQzNmRlZmIzZWZmMzZlZmFmMTk1NzEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVxdWVzdERhdGEuY3BwCkBAIC00MCw3ICs0MCw3IEBAIElEQlJlcXVlc3REYXRhOjpJ
REJSZXF1ZXN0RGF0YSgpCiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByb3h5LCBjb25zdCBJREJP
cGVuREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIDogbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cihjb25uZWN0aW9uUHJveHkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1f
cmVxdWVzdElkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KGNvbm5lY3Rpb25Qcm94eSwgcmVxdWVzdCkpCisgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG1h
a2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3Qp
KQogICAgICwgbV9kYXRhYmFzZUlkZW50aWZpZXIocmVxdWVzdC5kYXRhYmFzZUlkZW50aWZpZXIo
KSkKICAgICAsIG1fcmVxdWVzdGVkVmVyc2lvbihyZXF1ZXN0LnZlcnNpb24oKSkKICAgICAsIG1f
cmVxdWVzdFR5cGUocmVxdWVzdC5yZXF1ZXN0VHlwZSgpKQpAQCAtNDksOCArNDksOCBAQCBJREJS
ZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
UHJveHkmIGNvbm5lY3Rpb25QcgogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoSURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgIDogbV9zZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcihvcGVyYXRpb24udHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLmNv
bm5lY3Rpb25Qcm94eSgpLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkpCi0gICAgLCBtX3Jl
cXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihv
cGVyYXRpb24uaWRlbnRpZmllcigpKSkKLSAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKHN0
ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rp
b25JZGVudGlmaWVyKCkpKQorICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCisgICAgLCBtX3Ry
YW5zYWN0aW9uSWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4ob3Bl
cmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKICAgICAsIG1fb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKG9wZXJhdGlvbi5vYmplY3RTdG9yZUlkZW50aWZpZXIoKSkKICAgICAsIG1faW5kZXhJ
ZGVudGlmaWVyKG9wZXJhdGlvbi5pbmRleElkZW50aWZpZXIoKSkKIHsKQEAgLTU4LDcgKzU4LDcg
QEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbikKICAgICAgICAgbV9pbmRleFJlY29yZFR5cGUgPSBvcGVyYXRp
b24uaW5kZXhSZWNvcmRUeXBlKCk7CiAKICAgICBpZiAob3BlcmF0aW9uLmN1cnNvcklkZW50aWZp
ZXIoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KCpvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKTsKKyAgICAg
ICAgbV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KCpvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKTsKIH0KIAogSURCUmVxdWVzdERhdGE6OklE
QlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKQEAgLTcxLDExICs3MSwx
MSBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEm
IG90aGVyKQogICAgICwgbV9yZXF1ZXN0VHlwZShvdGhlci5tX3JlcXVlc3RUeXBlKQogewogICAg
IGlmIChvdGhlci5tX3JlcXVlc3RJZGVudGlmaWVyKQotICAgICAgICBtX3JlcXVlc3RJZGVudGlm
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3Jl
cXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IG1ha2VVbmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CiAg
ICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKQotICAgICAgICBtX3RyYW5zYWN0
aW9uSWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigq
b3RoZXIubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBtX3RyYW5zYWN0aW9uSWRl
bnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3RoZXIubV90cmFu
c2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX2N1cnNvcklkZW50aWZpZXIpCi0g
ICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jdXJzb3JJ
ZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1
cnNvcklkZW50aWZpZXIpOwogfQogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29u
c3QgSURCUmVxdWVzdERhdGEmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTEwMiwxMSArMTAy
LDExIEBAIHZvaWQgSURCUmVxdWVzdERhdGE6Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXF1ZXN0
RGF0YSYgc291cmNlLCBJREJSZXF1ZXN0RGF0YSYKICAgICAgICAgZGVzdGluYXRpb24ubV9kYXRh
YmFzZUlkZW50aWZpZXIgPSBzb3VyY2UubV9kYXRhYmFzZUlkZW50aWZpZXItPmlzb2xhdGVkQ29w
eSgpOwogCiAgICAgaWYgKHNvdXJjZS5tX3JlcXVlc3RJZGVudGlmaWVyKQotICAgICAgICBkZXN0
aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIGRlc3Rp
bmF0aW9uLm1fcmVxdWVzdElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRp
Zmllcj4oKnNvdXJjZS5tX3JlcXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAoc291cmNlLm1fdHJh
bnNhY3Rpb25JZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRl
bnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNl
Lm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90cmFuc2Fj
dGlvbklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJj
ZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKHNvdXJjZS5tX2N1cnNvcklkZW50
aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fY3Vyc29ySWRlbnRpZmll
cik7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAK
IHVpbnQ2NF90IElEQlJlcXVlc3REYXRhOjpzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4IDQ1Y2ZmYWVhNjAzYTUzYjU5OTA0YzhiMTRiN2ExZGVm
N2QyNWYzMTAuLjQwOGI0ZTQ2Mjg3MzM3YjlhYzM0NGFmYmY0NjkxNTg2OGU4MGYzNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXF1ZXN0RGF0YS5oCkBAIC0xNTYsNyArMTU2LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
IChoYXNPYmplY3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRp
Zmllcj4gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9
IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBy
ZXF1ZXN0Lm1fcmVxdWVzdElkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xNjUsNyAr
MTY1LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fdHJhbnNhY3Rpb25JZGVu
dGlmaWVyID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgSURCUmVx
dWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlm
aWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmVxdWVzdC5tX2N1cnNvcklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVzdWx0RGF0YS5jcHAKaW5kZXggYTg5NDU0ZTZlNjNmNmViN2NiNTAzOGI5YzkzMmZhMjE4
NjMzZWRjNi4uNGNiZDVkOWJkZjBhODUyM2JmN2Y1MmFjNWJjNWNiNGI3ZWQxMDQ3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXN1bHREYXRhLmNwcApAQCAtNTcsMTUgKzU3LDE1IEBAIElEQlJlc3VsdERhdGE6OklEQlJlc3Vs
dERhdGEoY29uc3QgSURCUmVzdWx0RGF0YSYgb3RoZXIpCiAgICAgLCBtX3Jlc3VsdEludGVnZXIo
b3RoZXIubV9yZXN1bHRJbnRlZ2VyKQogewogICAgIGlmIChvdGhlci5tX2RhdGFiYXNlSW5mbykK
LSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oKm90aGVyLm1fZGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm90aGVyLm1fZGF0YWJhc2VJbmZvKTsKICAgICBpZiAo
b3RoZXIubV90cmFuc2FjdGlvbkluZm8pCi0gICAgICAgIG1fdHJhbnNhY3Rpb25JbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpvdGhlci5tX3RyYW5zYWN0aW9uSW5m
byk7CisgICAgICAgIG1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCpvdGhlci5tX3RyYW5zYWN0aW9uSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fcmVzdWx0
S2V5KQotICAgICAgICBtX3Jlc3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4o
Km90aGVyLm1fcmVzdWx0S2V5KTsKKyAgICAgICAgbV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElE
QktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtleSk7CiAgICAgaWYgKG90aGVyLm1fZ2V0UmVzdWx0
KQotICAgICAgICBtX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigq
b3RoZXIubV9nZXRSZXN1bHQpOworICAgICAgICBtX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURC
R2V0UmVzdWx0Pigqb3RoZXIubV9nZXRSZXN1bHQpOwogICAgIGlmIChvdGhlci5tX2dldEFsbFJl
c3VsdCkKLSAgICAgICAgbV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFs
bFJlc3VsdD4oKm90aGVyLm1fZ2V0QWxsUmVzdWx0KTsKKyAgICAgICAgbV9nZXRBbGxSZXN1bHQg
PSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKm90aGVyLm1fZ2V0QWxsUmVzdWx0KTsKIH0K
IAogSURCUmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiB0aGF0
LCBJc29sYXRlZENvcHlUYWcpCkBAIC04NywxNSArODcsMTUgQEAgdm9pZCBJREJSZXN1bHREYXRh
Ojppc29sYXRlZENvcHkoY29uc3QgSURCUmVzdWx0RGF0YSYgc291cmNlLCBJREJSZXN1bHREYXRh
JiBkZXMKICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEludGVnZXIgPSBzb3VyY2UubV9yZXN1bHRJ
bnRlZ2VyOwogCiAgICAgaWYgKHNvdXJjZS5tX2RhdGFiYXNlSW5mbykKLSAgICAgICAgZGVzdGlu
YXRpb24ubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
KnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwor
ICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqc291cmNlLm1fZGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVk
Q29weSk7CiAgICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSW5mbykKLSAgICAgICAgZGVzdGlu
YXRpb24ubV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9u
SW5mbz4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29s
YXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VV
bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvLCBJREJU
cmFuc2FjdGlvbkluZm86Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX3Jlc3VsdEtl
eSkKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QktleURhdGE+KCpzb3VyY2UubV9yZXN1bHRLZXksIElEQktleURhdGE6Oklzb2xhdGVkQ29weSk7
CisgICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRh
Pigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJLZXlEYXRhOjpJc29sYXRlZENvcHkpOwogICAgIGlm
IChzb3VyY2UubV9nZXRSZXN1bHQpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2UubV9nZXRSZXN1bHQsIElEQkdl
dFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9nZXRSZXN1bHQg
PSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0UmVz
dWx0OjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV9nZXRBbGxSZXN1bHQpCi0gICAg
ICAgIGRlc3RpbmF0aW9uLm1fZ2V0QWxsUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRB
bGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxSZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0
ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVl
PElEQkdldEFsbFJlc3VsdD4oKnNvdXJjZS5tX2dldEFsbFJlc3VsdCwgSURCR2V0QWxsUmVzdWx0
OjpJc29sYXRlZENvcHkpOwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmVycm9y
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElE
QkVycm9yJiBlcnJvcikKQEAgLTExMSw3ICsxMTEsNyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3Vs
dERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZQogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICBy
ZXN1bHQubV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlU3VjY2VzczsKICAgICBy
ZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlm
aWVyKCk7Ci0gICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKKyAgICByZXN1bHQu
bV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlvbi5k
YXRhYmFzZSgpLT5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyMSwxNSAr
MTIxLDE1IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFk
ZU5lZWRlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAgSURCUmVzdWx0RGF0YSByZXN1
bHQgeyByZXF1ZXN0SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRU
eXBlOjpPcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5pZGVu
dGlmaWVyKCk7Ci0gICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJEYXRhYmFzZUluZm8+KHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNl
KCktPmluZm8oKSk7Ci0gICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KHRyYW5zYWN0aW9uLmluZm8oKSk7CisgICAgcmVzdWx0
Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KHRyYW5zYWN0aW9u
LmRhdGFiYXNlQ29ubmVjdGlvbigpLmRhdGFiYXNlKCktPmluZm8oKSk7CisgICAgcmVzdWx0Lm1f
dHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KHRyYW5zYWN0
aW9uLmluZm8oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJS
ZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCRGF0YWJhc2VJbmZvJiBpbmZvKQogewog
ICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHtJREJSZXN1bHRUeXBlOjpEZWxldGVEYXRhYmFzZVN1
Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIHJlc3VsdC5tX2Rh
dGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0xNzEsMjEgKzE3MSwyMSBAQCBJREJSZXN1bHREYXRhIElEQlJl
c3VsdERhdGE6OnJlbmFtZUluZGV4U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcQogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpwdXRPckFkZFN1Y2Nlc3MoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0
YSYgcmVzdWx0S2V5KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlw
ZTo6UHV0T3JBZGRTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX3Jl
c3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKKyAgICBy
ZXN1bHQubV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KHJlc3VsdEtleSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRS
ZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEg
cmVzdWx0IHsgSURCUmVzdWx0VHlwZTo6R2V0UmVjb3JkU3VjY2VzcywgcmVxdWVzdElkZW50aWZp
ZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJl
c3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElE
QkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1
bHREYXRhIElEQlJlc3VsdERhdGE6OmdldEFsbFJlY29yZHNTdWNjZXNzKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlc3VsdCYg
Z2V0QWxsUmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0VHlw
ZTo6R2V0QWxsUmVjb3Jkc1N1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0
Lm1fZ2V0QWxsUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KGdldEFs
bFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRB
bGxSZXN1bHQ+KGdldEFsbFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjA0
LDE0ICsyMDQsMTQgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpkZWxldGVSZWNvcmRT
dWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmUKIElEQlJlc3VsdERhdGEgSURC
UmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAg
ICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpPcGVuQ3Vyc29yU3VjY2Vz
cywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1
bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNj
ZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsg
SURCUmVzdWx0VHlwZTo6SXRlcmF0ZUN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07
Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+
KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRS
ZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgK
aW5kZXggNzE3YjNlMmRlNTNiMzUzZmViNmRkNzU1MDBhMGU1ZTY4Yzk0N2EzZi4uNjIwNjJhMWUy
OTVmN2I1OTgxNTg5NWI1N2JlYzAwOGU1YjE4NzZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCkBAIC0xODQs
NyArMTg0LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0
YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhh
c09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZv
ID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNv
ZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKKyAgICAgICAgYXV0
byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IFdURk1vdmUob2JqZWN0KTsK
QEAgLTIwMiw3ICsyMDIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJS
ZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJLZXlEYXRhPigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCS2V5
RGF0YT4oKTsKICAgICAgICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7CiAgICAgICAg
IGRlY29kZXIgPj4gb3B0aW9uYWw7CiAgICAgICAgIGlmICghb3B0aW9uYWwpCkBAIC0yMTQsNyAr
MjE0LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4g
SURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09i
amVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVz
dWx0PigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gV1RGTW92ZShv
YmplY3QpOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgq
b2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3Vs
dC5tX2dldEFsbFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5m
by5jcHAKaW5kZXggOTgzYzFjMTFjOTliNDViNmNlNTQ0ZGZjYWMwMzdlNGM3MzcyOTVjMy4uNGZi
OTk5MTlmNjdkNWY3YzlhYmMxMDllMmUzMDAwY2NlNGM0NDA5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0
aW9uSW5mby5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvIElEQlRyYW5z
YWN0aW9uSW5mbzo6dmVyc2lvbkNoYW5nZShjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3QKICAg
ICBJREJUcmFuc2FjdGlvbkluZm8gcmVzdWx0KChJREJSZXNvdXJjZUlkZW50aWZpZXIoY29ubmVj
dGlvbikpKTsKICAgICByZXN1bHQubV9tb2RlID0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9u
Y2hhbmdlOwogICAgIHJlc3VsdC5tX25ld1ZlcnNpb24gPSBuZXdWZXJzaW9uOwotICAgIHJlc3Vs
dC5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KG9yaWdpbmFsRGF0YWJhc2VJbmZvKTsKKyAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNl
SW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNjcsNyArNjcsNyBAQCBJREJUcmFuc2FjdGlv
bkluZm86OklEQlRyYW5zYWN0aW9uSW5mbyhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8p
CiAgICAgLCBtX29iamVjdFN0b3JlcyhpbmZvLm1fb2JqZWN0U3RvcmVzKQogewogICAgIGlmIChp
bmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pCi0gICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKmluZm8ubV9vcmlnaW5hbERh
dGFiYXNlSW5mbyk7CisgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oKmluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyk7CiB9CiAKIElE
QlRyYW5zYWN0aW9uSW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9u
SW5mbyYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uSW5mbzo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgc291
cmNlLCBJREJUcmFucwogICAgICAgICBkZXN0aW5hdGlvbi5tX29iamVjdFN0b3Jlcy51bmNoZWNr
ZWRBcHBlbmQob2JqZWN0U3RvcmUuaXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgaWYgKHNvdXJjZS5t
X29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX29yaWdpbmFsRGF0
YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9v
cmlnaW5hbERhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOworICAg
ICAgICBkZXN0aW5hdGlvbi5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KCpzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbywgSURCRGF0YWJhc2VJ
bmZvOjpJc29sYXRlZENvcHkpOwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0
aW9uSW5mby5oCmluZGV4IDkzMGQ4MDIzNjE4MjMyYWJmNmMwODFkZjIxMjk1OGZmNjJhNTU1ZWQu
LjdiOTQ3N2U4ZWM1NTRjOTEzZDJhNDhiZTU1OGUxNjMzZDkzZmNlOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNh
Y3Rpb25JbmZvLmgKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIElEQlRyYW5zYWN0aW9uSW5mbzo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4g
b2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggODdiMWFkY2Q5NjY2MjA2ZWM5NzE2NjAzNjJiNDBlNWFk
N2Q4MDFkMS4uYzk2ODk0NDRmZDIyNDAyY2VkMjExM2IzYmZhMGI5YTUyNmM2NzNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lE
QlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPEluUHJvY2Vzc0lE
QlNlcnZlcj4gSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb24KIFN0b3JhZ2VRdW90YU1hbmFnZXIqIEluUHJvY2Vzc0lEQlNlcnZlcjo6cXVvdGFN
YW5hZ2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQogewogICAgIHJldHVybiBtX3F1b3Rh
TWFuYWdlcnMuZW5zdXJlKG9yaWdpbiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVv
dGEoKSwgW10odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qg
c3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihTdG9yYWdlUXVvdGFNYW5hZ2VyOjpkZWZhdWx0UXVvdGEo
KSwgW10odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3Bh
Y2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgewogICAgICAgICAgICAgY2FsbGJhY2socXVvdGEg
KyBjdXJyZW50U3BhY2UgKyBzcGFjZUluY3JlYXNlKTsKICAgICAgICAgfSk7CiAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBmODcyNTc0ZTg1YzI0MDg3NzJiMWQxMWEyZThiY2I2ZGQ2MGRhMjk3Li5h
MzFiYWRiNTRhYzk4MWUwZTNiYWRhZmUyMDk4NzgyOWQzZjc0MDM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVz
L05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBOYXZpZ2F0
b3JNZWRpYUNhcGFiaWxpdGllcyYgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM6OmZyb20oTmF2
aWdhdG9yJiBuYXZpZ2F0bwogewogICAgIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzKiBzdXBw
bGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMqPihTdXBwbGVt
ZW50PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzPigpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzPigpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggNTBkMGJiMGIxZWQ1M2E0
MzI0NThkOWZiNzEzNTcwYWUwZWNhMGQwNi4uYjk3NDM0YzRlNjI0NWQ3M2NjZjJkNjI1YTBhMWIw
M2UxMjkwY2JkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNldE1vY2tNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJgogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1v
Y2smIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6Om1vY2tQaWNrZXIoKQogewogICAgIGlmICghbV9w
aWNrZXJPdmVycmlkZSkKLSAgICAgICAgbV9waWNrZXJPdmVycmlkZSA9IHN0ZDo6bWFrZV91bmlx
dWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0aGlzKTsKKyAgICAgICAgbV9waWNr
ZXJPdmVycmlkZSA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2s+KCp0
aGlzKTsKIAogICAgIHJldHVybiAqbV9waWNrZXJPdmVycmlkZS5nZXQoKTsKIH0KQEAgLTE0NSw3
ICsxNDUsNyBAQCB1aW50NjRfdCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1Rh
cmdldFBpY2tlckNsaWVudChXZWJNZWRpYVNlc3Npb25NYQogCiAgICAgTE9HKE1lZGlhLCAiV2Vi
TWVkaWFTZXNzaW9uTWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoJXAgKyAl
bGx1KSIsICZjbGllbnQsIGNvbnRleHRJZCk7CiAKLSAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPENsaWVudFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOworICAgIG1f
Y2xpZW50U3RhdGUuYXBwZW5kKG1ha2VVbmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4
dElkKSk7CiAKICAgICBpZiAobV9leHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSB8fCBtX3Bs
YXliYWNrVGFyZ2V0KQogICAgICAgICBzY2hlZHVsZURlbGF5ZWRUYXNrKEluaXRpYWxDb25maWd1
cmF0aW9uVGFzayB8IFRhcmdldENsaWVudHNDb25maWd1cmF0aW9uVGFzayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGQ0
MTdhMTIxNjkxMTEyMTVkNTQyMjkxZTAzYzU5ZDVkNmU3ZWIzZjQuLjdjYmM2YTEzMzUxZTBkMzJj
ZTI1NWE5YmFkY2I5NzQ0ZGFmNGQ0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xNzgsOSArMTc4LDkgQEAgTWVkaWFU
aW1lIE1lZGlhU291cmNlOjpjdXJyZW50VGltZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogewogICAgIGlm
IChtX2J1ZmZlcmVkICYmIG1fYWN0aXZlU291cmNlQnVmZmVycy0+bGVuZ3RoKCkgJiYgc3RkOjph
bGxfb2YobV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5iZWdpbigpLCBtX2FjdGl2ZVNvdXJjZUJ1ZmZl
cnMtPmVuZCgpLCBbXShhdXRvJiBidWZmZXIpIHsgcmV0dXJuICFidWZmZXItPmlzQnVmZmVyZWRE
aXJ0eSgpOyB9KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCi0gICAgbV9idWZmZXJlZCA9IHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIG1fYnVmZmVyZWQgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6ICpt
X2FjdGl2ZVNvdXJjZUJ1ZmZlcnMpCiAgICAgICAgIHNvdXJjZUJ1ZmZlci0+c2V0QnVmZmVyZWRE
aXJ0eShmYWxzZSk7CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogCiAgICAgLy8gMS4g
SWYgYWN0aXZlU291cmNlQnVmZmVycy5sZW5ndGggZXF1YWxzIDAgdGhlbiByZXR1cm4gYW4gZW1w
dHkgVGltZVJhbmdlcyBvYmplY3QgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmIChhY3Rp
dmVSYW5nZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyAyLiBMZXQgYWN0aXZl
IHJhbmdlcyBiZSB0aGUgcmFuZ2VzIHJldHVybmVkIGJ5IGJ1ZmZlcmVkIGZvciBlYWNoIFNvdXJj
ZUJ1ZmZlciBvYmplY3QgaW4gYWN0aXZlU291cmNlQnVmZmVycy4KICAgICAvLyAzLiBMZXQgaGln
aGVzdCBlbmQgdGltZSBiZSB0aGUgbGFyZ2VzdCByYW5nZSBlbmQgdGltZSBpbiB0aGUgYWN0aXZl
IHJhbmdlcy4KQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1l
UmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogCiAgICAgLy8gUmV0dXJuIGFu
IGVtcHR5IHJhbmdlIGlmIGFsbCByYW5nZXMgYXJlIGVtcHR5LgogICAgIGlmICghaGlnaGVzdEVu
ZFRpbWUpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KCptX2J1ZmZlcmVkKTsKIAogICAgIC8vIDQuIExldCBpbnRlcnNlY3Rpb24gcmFuZ2Vz
IGVxdWFsIGEgVGltZVJhbmdlIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdlIGZyb20g
MCB0byBoaWdoZXN0IGVuZCB0aW1lLgogICAgIG1fYnVmZmVyZWQtPmFkZChNZWRpYVRpbWU6Onpl
cm9UaW1lKCksIGhpZ2hlc3RFbmRUaW1lKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAog
ICAgICAgICBtX2J1ZmZlcmVkLT5pbnRlcnNlY3RXaXRoKHNvdXJjZVJhbmdlcyk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZm
ZXJlZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZm
ZXJlZCk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6OnNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1l
JiB0aW1lKQpAQCAtMzQ0LDcgKzM0NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNl
OjpzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCiAKICAgICAv
LyBTZXQgbGl2ZSBzZWVrYWJsZSByYW5nZSB0byBiZSBhIG5ldyBub3JtYWxpemVkIFRpbWVSYW5n
ZXMgb2JqZWN0IGNvbnRhaW5pbmcgYSBzaW5nbGUgcmFuZ2UKICAgICAvLyB3aG9zZSBzdGFydCBw
b3NpdGlvbiBpcyBzdGFydCBhbmQgZW5kIHBvc2l0aW9uIGlzIGVuZC4KLSAgICBtX2xpdmVTZWVr
YWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNy
ZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7
CisgICAgbV9saXZlU2Vla2FibGUgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91
YmxlKGVuZCkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApp
bmRleCBlNDE4Mjc4MzhkNjJjYTM4ZmMzYmYzYmU3OGY4ZjRhYThhZTUyNTk2Li43YjM1OGY1ZTBk
ZTQyZmIyMjY4ZDM2OTAzZTU4ZGI1ZWI3OGU5MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3Bw
CkBAIC01MSw3ICs1MSw3IEBAIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogTmF2aWdhdG9yTWVkaWFE
ZXZpY2VzOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvck1lZGlh
RGV2aWNlcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlhRGV2aWNlcyo+
KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkp
KTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93
KCkpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvck1l
ZGlhRGV2aWNlcz4obmF2aWdhdG9yLT53aW5kb3coKSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBu
ZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVt
ZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVy
LmNwcAppbmRleCA4ZDdlNjNjYzYwNmQ2ZGExOWZiZGIxMmRlNTRmYjg1NWZkZjYyYzk5Li4xNGRm
MTE2MWRhZTY4Y2M0NmNiNDllYWFlMjFmNWVmOTg5ZTJhY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgVXNlck1lZGlhQ29udHJvbGxlcjo6flVzZXJNZWRpYUNvbnRy
b2xsZXIoKQogCiB2b2lkIHByb3ZpZGVVc2VyTWVkaWFUbyhQYWdlKiBwYWdlLCBVc2VyTWVkaWFD
bGllbnQqIGNsaWVudCkKIHsKLSAgICBVc2VyTWVkaWFDb250cm9sbGVyOjpwcm92aWRlVG8ocGFn
ZSwgVXNlck1lZGlhQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1
ZTxVc2VyTWVkaWFDb250cm9sbGVyPihjbGllbnQpKTsKKyAgICBVc2VyTWVkaWFDb250cm9sbGVy
Ojpwcm92aWRlVG8ocGFnZSwgVXNlck1lZGlhQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwg
bWFrZVVuaXF1ZTxVc2VyTWVkaWFDb250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIGlzU2VjdXJlKERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGFh
YTQwMDAyMDczNjVmZmNiZTUyODEyOGUyOGNlMDJmNmM2MDdjZGQuLmM5ODViYzE5YTMxZDAxMTQ1
NjVhYmFiYTVmMDYwZWU1MGRhNjExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCBSZWY8UlRDRGF0YUNo
YW5uZWxFdmVudD4gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpjaGFubmVsRXZlbnQoU2Ny
aXB0RXhlY3V0aQogICAgIGluaXQubmVnb3RpYXRlZCA9IGRhdGFDaGFubmVsLT5uZWdvdGlhdGVk
KCk7CiAgICAgaW5pdC5pZCA9IGRhdGFDaGFubmVsLT5pZCgpOwogCi0gICAgYXV0byBoYW5kbGVy
ID0gIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3Zl
KGRhdGFDaGFubmVsKSk7CisgICAgYXV0byBoYW5kbGVyID0gIG1ha2VVbmlxdWU8TGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGRhdGFDaGFubmVsKSk7CiAgICAgYXV0byBjaGFu
bmVsID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKGhhbmRsZXIpLCBm
cm9tU3RkU3RyaW5nKGxhYmVsKSwgV1RGTW92ZShpbml0KSk7CiAKICAgICByZXR1cm4gUlRDRGF0
YUNoYW5uZWxFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhY2hhbm5lbEV2ZW50LCBFdmVu
dDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUoY2hhbm5l
bCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAppbmRleCBk
ZWYxZjkxZWVlOWVkNmVjNzhkMTNjNjllYzQzNDhmMGFhNjhkMzY3Li5kMWE3NGI4NTcxYmVlN2Vl
NWU5YzMxNjJlY2EyZjRkNmZmNDFlNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFF
bmRwb2ludDo6YWRkUmVtb3RlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwUmVj
ZWl2CiAgICAgfQogICAgIH0KIAotICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkp
OworICAgIHJlY2VpdmVyLT5zZXRCYWNrZW5kKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1JlY2VpdmVyKSkpOwogICAgIGF1dG8mIHRyYWNrID0gcmVj
ZWl2ZXItPnRyYWNrKCk7CiAgICAgYWRkUGVuZGluZ1RyYWNrRXZlbnQocmVjZWl2ZXIucmVsZWFz
ZU5vbk51bGwoKSwgdHJhY2ssIHJ0Y1N0cmVhbXMsIG51bGxwdHIpOwogfQpAQCAtNDc4LDcgKzQ3
OCw3IEBAIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygp
CiAgICAgICAgIGlmICghc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVy
KSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgIH0KIH0KIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgTGliV2ViUlRDTWVk
aWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRw
VHJhbnNjCiAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIG5l
d1RyYW5zY2VpdmVyID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2
ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1v
dmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8m
IG5ld1RyYW5zY2VpdmVyID0gbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNj
ZWl2ZXIobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUo
cnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgYWRkUGVu
ZGluZ1RyYWNrRXZlbnQobWFrZVJlZihuZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpKSwgbmV3VHJh
bnNjZWl2ZXIucmVjZWl2ZXIoKS50cmFjaygpLCBydGNSZWNlaXZlci0+c3RyZWFtcygpLCBtYWtl
UmVmKG5ld1RyYW5zY2VpdmVyKSk7CiB9CkBAIC01MzQsNyArNTM0LDcgQEAgT3B0aW9uYWw8TGli
V2ViUlRDTWVkaWFFbmRwb2ludDo6QmFja2VuZHM+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNy
ZWF0ZVRyYW5zY2UKICAgICBpZiAoIXJlc3VsdC5vaygpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCi0gICAgYXV0byB0cmFuc2NlaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92ZVZhbHVlKCkpOworICAgIGF1dG8g
dHJhbnNjZWl2ZXIgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4o
cmVzdWx0Lk1vdmVWYWx1ZSgpKTsKICAgICByZXR1cm4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
QmFja2VuZHMgeyB0cmFuc2NlaXZlci0+Y3JlYXRlU2VuZGVyQmFja2VuZChtX3BlZXJDb25uZWN0
aW9uQmFja2VuZCwgV1RGTW92ZShzb3VyY2UpKSwgdHJhbnNjZWl2ZXItPmNyZWF0ZVJlY2VpdmVy
QmFja2VuZCgpLCBXVEZNb3ZlKHRyYW5zY2VpdmVyKSB9OwogfQogCkBAIC01ODUsNyArNTg1LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4gTGliV2Vi
UlRDTWVkaWFFbmRwb2ludDo6dHJhbnNjZWkKIHsKICAgICBmb3IgKGF1dG8mIHRyYW5zY2VpdmVy
IDogbV9iYWNrZW5kLT5HZXRUcmFuc2NlaXZlcnMoKSkgewogICAgICAgICBpZiAodHJhbnNjZWl2
ZXItPnNlbmRlcigpLmdldCgpID09IGJhY2tlbmQucnRjU2VuZGVyKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0
Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2Nl
aXZlcikpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2NlaXZlcklu
dGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBA
IC02NTQsNyArNjU0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4g
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlRGF0YUNoYW5uZWwKIHsKICAgICBhdXRvIGlu
aXQgPSBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmZyb21SVENEYXRhQ2hhbm5lbEluaXQo
b3B0aW9ucyk7CiAgICAgYXV0byBjaGFubmVsID0gbV9iYWNrZW5kLT5DcmVhdGVEYXRhQ2hhbm5l
bChsYWJlbC51dGY4KCkuZGF0YSgpLCAmaW5pdCk7Ci0gICAgcmV0dXJuIGNoYW5uZWwgPyBzdGQ6
Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFubmVs
KSkgOiBudWxscHRyOworICAgIHJldHVybiBjaGFubmVsID8gbWFrZVVuaXF1ZTxMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKIH0KIAogdm9p
ZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpPbkRhdGFDaGFubmVsKHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OkRhdGFDaGFubmVsSW50ZXJmYWNlPiBkYXRhQ2hhbm5lbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIw
N2YxNWU2NDU3YjlkZmNhYzFjMzM5ZWEzOWZlYTFkNzc4NTlkOGIuLmZjOTFjY2QwYmJkMWZkYmJh
NzY0MmU3MDRmMzdmZTg1Y2M3MmZkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gY3JlYXRlTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZQogCiAgICAgcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5zZXRFbmFi
bGVXZWJSVENFbmNyeXB0aW9uKHBhZ2UtPnNldHRpbmdzKCkud2ViUlRDRW5jcnlwdGlvbkVuYWJs
ZWQoKSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ+KHBlZXJDb25uZWN0aW9uLCBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+KHBl
ZXJDb25uZWN0aW9uLCBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpKTsKIH0KIAogQ3JlYXRlUGVl
ckNvbm5lY3Rpb25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRl
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOwpAQCAtMzExLDcgKzMxMSw3IEBAIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6VmlkZW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OnZpCiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJl
Y2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0
cik7CiAKLSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tl
bmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRy
KTsKICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENS
dHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgInZpZGVvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFj
a2VuZCkpLCByZWNlaXZlci5jb3B5UmVmKCksIG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5k
aXNhYmxlU2VuZGluZ0RpcmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNj
ZWl2ZXIoV1RGTW92ZSh0cmFuc2NlaXZlcikpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6QXVkaW9SZWNlaXZlciBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmF1CiAgICAgYXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U6OmNyZWF0ZShudWxscHRyLCBXVEZNb3ZlKHRyYWNrSWQpKTsKICAgICBhdXRvIHJlY2Vp
dmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2Uoc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0cik7
CiAKLSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQg
PSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsK
ICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShSVENSdHBT
ZW5kZXI6OmNyZWF0ZSgqdGhpcywgImF1ZGlvIl9zLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFja2Vu
ZCkpLCByZWNlaXZlci5jb3B5UmVmKCksIG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNh
YmxlU2VuZGluZ0RpcmVjdGlvbigpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2
ZXIoV1RGTW92ZSh0cmFuc2NlaXZlcikpOwpAQCAtNDAwLDcgKzQwMCw3IEBAIHN0YXRpYyBpbmxp
bmUgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gZmluZEV4aXN0aW5nU2VuZGVyKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8UlRDUnRwCiBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaywgVmVj
dG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcykKIHsKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkgewot
ICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNr
ZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0
cik7CiAgICAgICAgIGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soKnNlbmRlckJhY2tlbmQsIHRy
YWNrLCBtZWRpYVN0cmVhbUlkcykpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiVW5hYmxlIHRvIGFkZCB0cmFjayJfcyB9OwogCkBAIC00MzgsNyArNDM4LDcgQEAg
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZDo6YWRkVHJhY2soTWVkaWFTdHIKICAgICAgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQg
PSB0cmFjay5raW5kKCk7CiAgICAgICAgIFN0cmluZyB0cmFja0lkID0gY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpOwogCi0gICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgICAg
ICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5k
ZXI6OmNyZWF0ZSgqdGhpcywgbWFrZVJlZih0cmFjayksIFZlY3RvcjxTdHJpbmc+IHsgbWVkaWFT
dHJlYW1JZHMgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgICAgIGF1dG8gcmVjZWl2
ZXIgPSBjcmVhdGVSZWNlaXZlcih0cmFja0tpbmQsIHRyYWNrSWQpOwogICAgICAgICBhdXRvIHRy
YW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciks
IFdURk1vdmUocmVjZWl2ZXIpLCBudWxscHRyKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCBFeGNlcHRp
b25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmFkZFRyYW5zY2VpdgogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRk
VW5pZmllZFBsYW5UcmFuc2NlaXZlcihTdHJpbmcgeyB0cmFja0tpbmQgfSwgaW5pdCk7CiAKLSAg
ICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtl
VW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBh
dXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBTdHJpbmcodHJhY2tL
aW5kKSwgVmVjdG9yPFN0cmluZz4oKSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgcmV0
dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoV1RGTW92ZShuZXdTZW5kZXIpLCBpbml0LCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIHRyYWNrS2luZCk7CiB9CkBAIC00ODIsNyArNDgyLDcg
QEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFjayksIGluaXQpOwog
Ci0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0g
bWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAg
ICAgYXV0byYgYmFja2VuZCA9ICpzZW5kZXJCYWNrZW5kOwogICAgIGF1dG8gc2VuZGVyID0gUlRD
UnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIHRyYWNrLmNvcHlSZWYoKSwgVmVjdG9yPFN0cmluZz4o
KSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFj
ayhiYWNrZW5kLCB0cmFjaywgVmVjdG9yPFN0cmluZz4geyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKaW5kZXggNjg1MGU2YTg1ZTkwMjRiYjEx
NDViNmI5NDIyOWMwZjYxNDJkZjdhYS4uNmFlZWExMzM4OTJkMjA2M2YwMzUzOWI4ZWVjNGRiOWJj
ZTY0ZDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6
OnNldFBhcmFtZXRlcnMoY29uc3QgUlRDUnRwU2VuZFBhcmFtZXRlcnMmIHBhcmFtZQogCiBzdGQ6
OnVuaXF1ZV9wdHI8UlRDRFRNRlNlbmRlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQ6OmNyZWF0ZURUTUZCYWNrZW5kKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIoKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRj
U2VuZGVyLT5HZXREdG1mU2VuZGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCBlYjg3MWViN2RiMDM4ODRmNGNjN2UwYWRlZjY4NzgyZTFjMDk3MmQ3Li41YzBkN2U5
NWUyZmQxMmUzZjg0ZjE3Y2ZiZWI2ZDg2N2E1MWYyZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZl
ckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTM1LDEyICszNSwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBS
ZWNlaXZlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlUmVj
ZWl2ZXJCYWNrZW5kKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENS
dHBSZWNlaXZlckJhY2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFuc2Nl
aXZlci0+cmVjZWl2ZXIoKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmNyZWF0ZVNlbmRlckJh
Y2tlbmQoTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBiYWNrZW5kLCBMaWJXZWJSVENS
dHBTZW5kZXJCYWNrZW5kOjpTb3VyY2UmJiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oYmFja2VuZCwgbV9ydGNUcmFuc2Nl
aXZlci0+c2VuZGVyKCksIFdURk1vdmUoc291cmNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oYmFja2VuZCwgbV9ydGNUcmFuc2NlaXZlci0+c2Vu
ZGVyKCksIFdURk1vdmUoc291cmNlKSk7CiB9CiAKIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9u
IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6ZGlyZWN0aW9uKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5j
cHAKaW5kZXggMGMzMjhmYWU0NDIzNTk5MjUzMzA3MmM4NWQ2YjMyZmRjNmMxMzgzOC4uMGViYWZm
ODlmZmJjNTAwM2UyNDYxYmFkZWU1MjAzOTExNzFjYmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb24KICAgICAsIG1fYm9keShvcHRpb25zLmJv
ZHkpCiAgICAgLCBtX3RhZyhvcHRpb25zLnRhZykKICAgICAsIG1fc3RhdGUoSWRsZSkKLSAgICAs
IG1fdGFza1RpbWVyKHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3coKTsg
fSkpCisgICAgLCBtX3Rhc2tUaW1lcihtYWtlVW5pcXVlPFRpbWVyPihbdGhpc10gKCkgeyBzaG93
KCk7IH0pKQogewogICAgIGlmICghb3B0aW9ucy5pY29uLmlzRW1wdHkoKSkgewogICAgICAgICBh
dXRvIGljb25VUkwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTChvcHRpb25zLmljb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGE2MjAzNTM5M2M3ZmIzZjZkZGYwMWM1Yzg5ZDc0
ZjNiNWVkZDJkNDQuLmQ0OGYyMDVhOWUyNDE0ZTA3ZDcyMmY5MDMyNWE3YzM2NGQ0ODk0MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgY2hh
ciogTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKQogCiB2b2lkIHByb3Zp
ZGVOb3RpZmljYXRpb24oUGFnZSogcGFnZSwgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnQpCiB7
Ci0gICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0
aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CisgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6cHJv
dmlkZVRvKHBhZ2UsIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1h
a2VVbmlxdWU8Tm90aWZpY2F0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
RE9NV2luZG93UXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5k
b3dRdW90YS5jcHAKaW5kZXggMDNmZTllMzg2NzhmNDA1MDczMjU1MDljMjAzODY3YzljZjgyMGZm
MS4uYzk4Yzk5ODZkZWQ2Y2QyMDU0MjYxNzIxNWY2NTM2Y2U1OGYyNzk1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgRE9NV2luZG93UXVvdGEqIERPTVdpbmRvd1F1b3RhOjpmcm9tKERPTVdpbmRvdyogd2lu
ZG93KQogewogICAgIERPTVdpbmRvd1F1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9N
V2luZG93UXVvdGEqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVt
ZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93UXVvdGE+KHdpbmRvdyk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93UXVvdGE+KHdpbmRv
dyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmln
YXRvclN0b3JhZ2VRdW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmln
YXRvclN0b3JhZ2VRdW90YS5jcHAKaW5kZXggN2JhMWQzZDRiMzY5NDQwYzY0ZTE3ZGQyMGNhOTQ1
MzhiOGFkOWI3NC4uN2EwODA0NTk1Njk4M2EzMWY2ZDgzNGVmN2VhNzcyZmE2NjczNmE2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVv
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhLmNwcApAQCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JTdG9yYWdlUXVvdGEqIE5hdmln
YXRvclN0b3JhZ2VRdW90YTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZp
Z2F0b3JTdG9yYWdlUXVvdGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JTdG9y
YWdlUXVvdGEqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVt
ZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cp
OworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvclN0b3Jh
Z2VRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1v
dmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA5
NWMzZTQzNjQ3MzE2MmE1MGQ2MWI1Y2U3NTE2NWVlNjhiMjFiNzI3Li4xYTFjODQ3ZGM0OTdkYzY0
ODQ1ZjU2ZWNlNTkyNjNhNDI2YWY2MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSogV29ya2VyTmF2aWdhdG9y
U3RvcmFnZVF1b3RhOjpmcm9tKFdvcmtlck5hdmlnYXRvcioKIHsKICAgICBXb3JrZXJOYXZpZ2F0
b3JTdG9yYWdlUXVvdGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JT
dG9yYWdlUXVvdGEqPihTdXBwbGVtZW50PFdvcmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVu
dCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNp
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50
aGVzaXMuY3BwCmluZGV4IDM3OTU2NTI2ZmJmMjg2OTBlY2YwMzk5NTJjNTJmNmUwNDQ2YmNiNGMu
Ljk2OWMyMzdmN2M4MTU1MTUzZGUwNzFlYzk2YTYxYTRhNDYyZDNmOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhl
c2lzLmNwcApAQCAtNTUsNyArNTUsNyBAQCBET01XaW5kb3dTcGVlY2hTeW50aGVzaXMqIERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01X
aW5kb3dTcGVlY2hTeW50aGVzaXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dT
cGVlY2hTeW50aGVzaXMqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3
aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRv
d1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBs
ZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IDcyYjU2M2U0YmJmN2RjZTAz
ZmEzMDg4MGQyZmE3NzBiODk4NjkzYTQuLmU3YjYyYTFhMTdiZDk2YTlmNWExM2ZkMDllNzQ5YWI0
YmNlMTk4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6dm9p
Y2VzRGlkQ2hhbmdlKCkKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXImIFNwZWVjaFN5bnRoZXNp
czo6ZW5zdXJlUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpCiB7CiAgICAgaWYgKCFtX3BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIpCi0gICAgICAgIG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyk7Cisg
ICAgICAgIG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciA9IG1ha2VVbmlxdWU8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcj4odGhpcyk7CiAgICAgcmV0dXJuICptX3BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggNjJmNjhlYzY2M2E4MDIxMmM2ZjNhZjdiODVl
MjNjNmI0Zjc0MmEwYS4uMmY1NDI3MmFjNWMwMWQwYTIzMGU1YzBkZjA0NTI0YWZiMmE0ZTIzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlv
RGVjb2Rlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVj
b2RlQXN5bmMoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmEKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPERlY29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVS
YXRlLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwor
ICAgIGF1dG8gZGVjb2RpbmdUYXNrID0gbWFrZVVuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1vdmUo
YXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spKTsKICAgICBtX3F1ZXVlLmFwcGVuZChXVEZNb3ZlKGRlY29kaW5nVGFz
aykpOyAvLyBub3RlIHRoYXQgb3duZXJzaGlwIG9mIHRoZSB0YXNrIGlzIGVmZmVjdGl2ZWx5IHRh
a2VuIGJ5IHRoZSBxdWV1ZS4KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4IGJjMDBlYjlmODdkMWJjZDU4Y2JmNzQ5
YjdkYTdjNDkzY2Y3ZTg4NzYuLmNmOTI2OWMzMDQ0YzQzMjJkNzQ0ZDA2MjlkZGEwZmE4OTQ5M2Vj
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVk
aW9EZWNvZGVyLmgKQEAgLTQyLDcgKzQyLDggQEAgY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsK
IC8vIEFzeW5jQXVkaW9EZWNvZGVyIGFzeW5jaHJvbm91c2x5IGRlY29kZXMgYXVkaW8gZmlsZSBk
YXRhIGZyb20gYW4gQXJyYXlCdWZmZXIgaW4gYSB3b3JrZXIgdGhyZWFkLgogLy8gVXBvbiBzdWNj
ZXNzZnVsIGRlY29kaW5nLCBhIGNvbXBsZXRpb24gY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIHdp
dGggdGhlIGRlY29kZWQgUENNIGRhdGEgaW4gYW4gQXVkaW9CdWZmZXIuCiAKLWNsYXNzIEFzeW5j
QXVkaW9EZWNvZGVyIHsKK2NsYXNzIEFzeW5jQXVkaW9EZWNvZGVyIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY0F1ZGlv
RGVjb2Rlcik7CiBwdWJsaWM6CiAgICAgQXN5bmNBdWRpb0RlY29kZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZS5jcHAKaW5kZXggYmE4YzI1NWFlN2Q3ZGE3M2JjOWZmNjU1NDNmMWUzN2JjOTU0MDRiMy4u
MGZiNTViMDhmMGMxYTJiZTJkMDcwYzRlMGQ4ZDhmNDY3ZTM0NmE3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZS5jcHAKQEAgLTQwLDggKzQwLDggQEAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2EKICAgICA6
IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVU
eXBlQmFzaWNJbnNwZWN0b3IpOwotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3VudCkpOworICAgIGFkZElucHV0KG1ha2VV
bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxB
dWRpb05vZGVPdXRwdXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3VudCkpOwogfQogCiAvLyBXZSBv
dmVycmlkZSBwdWxsSW5wdXRzKCkgYXMgYW4gb3B0aW1pemF0aW9uIGFsbG93aW5nIHRoaXMgbm9k
ZSB0byB0YWtlIGFkdmFudGFnZSBvZiBpbi1wbGFjZSBwcm9jZXNzaW5nLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmNwcAppbmRleCBiYzE4OWMwOGNiZWZjN2MxOTYwNjQ2NmMwNzY4YjhmYTYzNGIxNmFiLi4w
YjlmMWNlZDg3NDViNWQ5OThkYzM4ZDYzNmU3OTBhYmZiZTZlOTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmNwcApAQCAtNDIsOCArNDIsOCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewotICAgIGFkZElucHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICAvLyBUaGUgc3ViY2xhc3MgbXVz
dCBjcmVhdGUgbV9wcm9jZXNzb3IuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggNDBhYzMyYzVj
NTVjM2QzMmQwZTE0YjZhN2QyMmIyNDY3MzkwZjRiZi4uMjUxMGM0MGE3ZjYxMjNkNGM3ZmMyZDY0
MGE5MGI0ZjBhOThlNmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZQogICAgIG1fcGxheWJhY2tSYXRlID0gQXVkaW9QYXJhbTo6
Y3JlYXRlKGNvbnRleHQsICJwbGF5YmFja1JhdGUiLCAxLjAsIC1NYXhSYXRlLCBNYXhSYXRlKTsK
IAogICAgIC8vIERlZmF1bHQgdG8gbW9uby4gIEEgY2FsbCB0byBzZXRCdWZmZXIoKSB3aWxsIHNl
dCB0aGUgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscyB0byB0aGF0IG9mIHRoZSBidWZmZXIuCi0g
ICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAK
ICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggOTk1NmMxNTg2MjE4OWM3MTQyOWNiY2ZkNjAwNDJm
MDBjOThiYWVmNi4uZDRjZGI3NjU4YzBmMzViNWZjOWEyMmNlODk4YmNiMmI5OWVlNGRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBk
b2N1bWVudCkKICAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCiAj
ZW5kaWYKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUo
KnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50
UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVu
dFF1ZXVlPigqdGhpcykpCiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0
IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBuYXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQg
YXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGlu
IGNsZWFyIG1ldGhvZC4KQEAgLTE2Niw3ICsxNjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dAogI2VuZGlmCiAgICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFT
ZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVu
dFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAs
IG1fZXZlbnRRdWV1ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiB7CiAg
ICAgY29uc3RydWN0Q29tbW9uKCk7CiAKQEAgLTQzMiw3ICs0MzIsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8QXVkaW9CdWZmZXI+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYg
YXJyYXlCdWZmZQogdm9pZCBBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlC
dWZmZXI+JiYgYXVkaW9EYXRhLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNz
Q2FsbGJhY2ssIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCiB7
CiAgICAgaWYgKCFtX2F1ZGlvRGVjb2RlcikKLSAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigpOworICAgICAgICBtX2F1ZGlvRGVjb2Rl
ciA9IG1ha2VVbmlxdWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7CiAgICAgbV9hdWRpb0RlY29kZXIt
PmRlY29kZUFzeW5jKFdURk1vdmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSgpLCBXVEZNb3ZlKHN1
Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwCmluZGV4IDk3NTg4NzU0NzQ3ZTE1MjQ4MTg5ZjQ5NzBjNmQzM2UzYzZhZTFlMTEuLmQ5YWJi
OTc3N2E5ZDI1ZWVhZjI0MmZmNGZmZmM1ZWM1ZWY0ODZjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhCiAgICAgLCBtX211dGVkKGZh
bHNlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVzdGluYXRpb24pOwotICAgIGFkZElu
cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRJbnB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiB9CiAKIEF1ZGlvRGVzdGluYXRp
b25Ob2RlOjp+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5kZXggMTYzNzNjZTkzNzhk
MzIyZmRkOWMyNTNmOWM3NmQ5NjNlNjEzY2QzYi4uNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4
YjYzNmFiMmQ3NTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIEJpcXVhZEZpbHRlck5v
ZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmlxdWFkRmlsdGVyKTsKIAogICAgIC8vIElu
aXRpYWxseSBzZXR1cCBhcyBsb3dwYXNzIGZpbHRlci4KLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6
bWFrZV91bmlxdWU8QmlxdWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxz
ZSk7CisgICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4
dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2UpOwogfQogCiBCaXF1YWRGaWx0ZXJUeXBlIEJpcXVhZEZp
bHRlck5vZGU6OnR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCmluZGV4IDBlNGUzNjg1YjgyY2U0NzdlYzRlNTg1
NDdmMTZhZDhiNzBmYzc5MDQuLmU4NGI5ODAzNTY3MGZiMWRjYzMyNzA5NjYzZDJiMzkwNTUyZTY1
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFBy
b2Nlc3Nvci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgQmlxdWFkUHJvY2Vzc29yOjp+QmlxdWFkUHJv
Y2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBCaXF1YWRQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFk
RFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+
KHRoaXMpOwogfQogCiB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6Y2hlY2tGb3JEaXJ0eUNvZWZmaWNp
ZW50cygpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1
ZW5jeVJlc3BvbnNlKGludCBuRnJlcXVlbmNpZXMsIGNvbnN0IGZsb2F0KiBmcmVxdWUKICAgICAv
LyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIHRoZSBwcm9jZXNzaW5nIHJ1bm5pbmcgaW4gdGhl
IGF1ZGlvCiAgICAgLy8gdGhyZWFkIG9uIHRoZSBtYWluIGtlcm5lbHMuCiAgICAgCi0gICAgYXV0
byByZXNwb25zZUtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlz
KTsKKyAgICBhdXRvIHJlc3BvbnNlS2VybmVsID0gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+
KHRoaXMpOwogCiAgICAgcmVzcG9uc2VLZXJuZWwtPmdldEZyZXF1ZW5jeVJlc3BvbnNlKG5GcmVx
dWVuY2llcywgZnJlcXVlbmN5SHosIG1hZ1Jlc3BvbnNlLCBwaGFzZVJlc3BvbnNlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9k
ZS5jcHAKaW5kZXggMjBiOGRhMTllNWY0MzljZmU1NDU1ZjAxZGMyOTA4NzQ0NmIyM2MwOC4uZGY1
MGYyNjg3MzY4YWE1YzMyOTU0MTQ4MTUwNzc3YTAyOTE3MzJkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTU5
LDkgKzU5LDkgQEAgQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW4KIAogICAgIC8vIENyZWF0ZSB0aGUg
cmVxdWVzdGVkIG51bWJlciBvZiBpbnB1dHMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mSW5wdXRzOyArK2kpCi0gICAgICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOwogCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9k
ZS5jcHAKaW5kZXggNDYzNTQ5OGMwMzRjNTkzMGI0ZThmMjIwODZlMTRiMmI0YmQyOTExNy4uODJm
NjlhMDRmOTk5MjYxZDU4YzE1MmJmYzYwMmEzNjYwOTYwOTFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBA
IC01MCwxMSArNTAsMTEgQEAgQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUKIHsKICAgICBzZXROb2Rl
VHlwZShOb2RlVHlwZUNoYW5uZWxTcGxpdHRlcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxB
dWRpb05vZGVJbnB1dD4odGhpcykpOwogCiAgICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVtYmVyIG9m
IG91dHB1dHMgKGFibGUgdG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBm
ZWQgdG8gYW4gaW5wdXQpLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91
dHB1dHM7ICsraSkKLSAgICAgICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CisgICAgICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IDIz
ODJkYWJjYzljOTkyN2NhYzMxZDMyNzVmMjIwM2NjOGY1OGEwOTMuLmUzNjY3N2NmZDc0NWU4YmJl
MDJkYTNkYzRkZDdiYTFmMWE1M2RkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAtNTIsOCArNTIsOCBAQCBDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNvbnZvbHZlcik7CiAKLSAgICBhZGRJbnB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkSW5w
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtl
VW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVjaWZp
YyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CkBAIC0xNDYs
NyArMTQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKEF1
ZGlvQnVmZmVyKiBidWZmZXIpCiAKICAgICAvLyBDcmVhdGUgdGhlIHJldmVyYiB3aXRoIHRoZSBn
aXZlbiBpbXB1bHNlIHJlc3BvbnNlLgogICAgIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMgPSAh
Y29udGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKTsKLSAgICBhdXRvIHJldmVyYiA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1Np
emVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFs
aXplKTsKKyAgICBhdXRvIHJldmVyYiA9IG1ha2VVbmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0
KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNl
QmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFsaXplKTsKIAogICAgIHsKICAgICAgICAgLy8gU3lu
Y2hyb25pemUgd2l0aCBwcm9jZXNzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggNDI2NWEwMDc0OWVhZmZmNmE5ZTFiOWQxZGRhNjBkNGRi
NzAyOGIwMy4uODFiZDdkMTliMjdlNzQxYjUwZjZmODRlNTFmN2NlMjU1NzgwMmI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBpbmxpbmUgRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RAogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURl
bGF5KTsKLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlQcm9jZXNzb3I+
KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CisgICAgbV9wcm9jZXNzb3Ig
PSBtYWtlVW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhE
ZWxheVRpbWUpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gRGVsYXlOb2RlOjpj
cmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4
RGVsYXlUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmNwcAppbmRleCBhNzViYTZiN2M5MmU3NDQ0YzY1NjA4ZThhZTE4ZjlkNTAwMDI2
YTA0Li4xMDM2NmVmNmVhZmI2YzQ0ZGIxOTEyNzFhOTk1ZDllNmQyYWNiYTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBEZWxheVByb2Nlc3Nvcjo6fkRlbGF5UHJvY2Vzc29yKCkKIAogc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWxheURTUEtlcm5lbD4odGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCBhYTBlNGE4MDExOWViZWQ5
ZGQzNjk2YjNmYTEzMDVkZGYzMmJkMDUyLi4xNDA5NmQ4ZjBjNTk2YTUyOTcxNjY2ZWY4MjY3YTAy
M2ZkYjQ0YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgRHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXAKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29t
cHJlc3Nvcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOworICAgIGFkZElucHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSk7
CiAKICAgICBtX3RocmVzaG9sZCA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAidGhyZXNo
b2xkIiwgLTI0LCAtMTAwLCAwKTsKICAgICBtX2tuZWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29u
dGV4dCwgImtuZWUiLCAzMCwgMCwgNDApOwpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGU6OmluaXRpYWxpemUoKQogICAgICAgICByZXR1cm47CiAKICAgICBBdWRp
b05vZGU6OmluaXRpYWxpemUoKTsgICAgCi0gICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPER5bmFtaWNzQ29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBtYWtlVW5p
cXVlPER5bmFtaWNzQ29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRw
dXRDaGFubmVscyk7CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6dW5pbml0aWFs
aXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKaW5k
ZXggNmM5NGE1MjNjM2IyYTAyMTJiMmE1NGExYTljOGYwMjZiYmQxZGI1Zi4uMjU3ZGYyZWNlMjMz
OGNiY2JhYjllZDA1MTIzM2M2NGIxYzU3ZjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9HYWluTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgR2Fpbk5vZGU6OkdhaW5O
b2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIAogICAgIG1fZ2Fp
biA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiIsIDEuMCwgMC4wLCAxLjApOwog
Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwot
ICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkp
OworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBh
ZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGlu
aXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAzODFhZTcy
Nzk0ZmIwZTdmZWE2MzMxYWJkMzNiMjBjMTU4NDVmZjliLi45MTJlNmViMjMyMTQ1NjQzZDZmZGFm
YmMxMWU5Njc2NGMzZDJmNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwKICAgICBzZXROb2RlVHlwZShOb2Rl
VHlwZU1lZGlhRWxlbWVudEF1ZGlvU291cmNlKTsKIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVv
LiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gd2hhdCB0aGUgbWVkaWEgZWxlbWVudCAu
c3JjIGlzIHNldCB0by4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRw
dXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgZmxvYXQgc291cmMKIAogICAgICAgICBpZiAoc291cmNlU2FtcGxlUmF0ZSAh
PSBzYW1wbGVSYXRlKCkpIHsKICAgICAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJj
ZVNhbXBsZVJhdGUgLyBzYW1wbGVSYXRlKCk7Ci0gICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJl
c2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZh
Y3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2Ft
cGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVt
YmVyT2ZDaGFubmVscyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBCeXBhc3Mg
cmVzYW1wbGluZy4KICAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggNWIyYTUwMGRkMjk0ZDEwNTU4YmM3
YTA4Y2Y3NzE2ZTQyNmI1YzJhYy4uZTQzZjU0NDhiYzI2Yjg2YWY2OTNkMDA5OTk1YzY3MzRmNjk1
NWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgTWUKICAgICBhdWRpb1NvdXJjZVByb3ZpZGVyLT5zZXRDbGllbnQo
dGhpcyk7CiAgICAgCiAgICAgLy8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdl
IGRlcGVuZGluZyBvbiB0aGUgZm9ybWF0IG9mIHRoZSBNZWRpYVN0cmVhbSdzIGF1ZGlvIHRyYWNr
LgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MikpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikp
OwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZs
b2F0IHNvdXJjZQogICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUg
LyBzYW1wbGVSYXRlOwotICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFu
bmVscyk7CisgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0
aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICB9
CiAKICAgICBtX3NvdXJjZU51bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApp
bmRleCA1YjUwMjliZmJjZTc3YWQ1YjZjM2M4ODMyNjBkYjlkZWZkZjYxMDRiLi5hOTljZWFhZDZi
NWMyMWUwOWRkMjI1M2MyYWNmMzA0NTU0NzUzZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBP
c2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQogICAgIHNldFR5cGUobV90eXBlKTsKIAogICAgIC8vIEFuIG9zY2lsbGF0
b3IgaXMgYWx3YXlzIG1vbm8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBmNjQ3NDY5ZTIzNTVl
YjNhMGMwOWIzYjA4NTJiZmJlYzZlNDhkMjhkLi41MWM2OTkxNmZmZGU3MGY1ZTY4MGFhOTI3Y2Vm
ZWY3Y2E3MzJjM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAKQEAgLTU4LDggKzU4LDggQEAgUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgLy8gTG9hZCB0aGUgSFJU
RiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9jayB0aGUgSmF2YXNjcmlw
dCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2UuCiAgICAgbV9ocnRmRGF0
YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFuZExvYWRBc3luY2hyb25v
dXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKIAotICAgIGFkZElucHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRJbnB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICAvLyBOb2RlLXNwZWNpZmljIGRl
ZmF1bHQgbWl4aW5nIHJ1bGVzLgogICAgIG1fY2hhbm5lbENvdW50ID0gMjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcAppbmRleCBiYjJhMDdk
MjM1NGViYWY5NGQwMDQ2NWE0YjQxZDg2MDU1NTk5ODZiLi5lYzlhMTdjNGY1NmViOTk2NmRjMTc2
MjdlOTM0MDViYTFmZDQ4YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBQZXJpb2RpY1dh
dmU6OmNyZWF0ZUJhbmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiByZWFsRGF0YSwgY29uc3Qg
ZmxvYXQqIGkKICAgICAgICAgcmVhbFBbMF0gPSAwOwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUg
YmFuZC1saW1pdGVkIHRhYmxlLgotICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7Cisg
ICAgICAgIG1fYmFuZExpbWl0ZWRUYWJsZXMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFy
cmF5PihtX3BlcmlvZGljV2F2ZVNpemUpKTsKIAogICAgICAgICAvLyBBcHBseSBhbiBpbnZlcnNl
IEZGVCB0byBnZW5lcmF0ZSB0aGUgdGltZS1kb21haW4gdGFibGUgZGF0YS4KICAgICAgICAgZmxv
YXQqIGRhdGEgPSBtX2JhbmRMaW1pdGVkVGFibGVzW3JhbmdlSW5kZXhdLT5kYXRhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNw
cAppbmRleCAzYjYyODFkMWU4NDNlZDI5OWNmNjE1M2M3MzI3OTcwNzQxODA2Nzc4Li44MDIzNzM0
MDdmNzVkNDdlMjU5ZWI2MDU2MzgwZjYzNWYxM2FjZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgUmVhbHRpbWVBbmFseXNlcjo6UmVhbHRpbWVBbmFseXNlcigpCiAgICAgLCBtX21pbkRl
Y2liZWxzKERlZmF1bHRNaW5EZWNpYmVscykKICAgICAsIG1fbWF4RGVjaWJlbHMoRGVmYXVsdE1h
eERlY2liZWxzKQogewotICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZU
RnJhbWU+KERlZmF1bHRGRlRTaXplKTsKKyAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVl
PEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CiB9CiAKIFJlYWx0aW1lQW5hbHlzZXI6On5SZWFs
dGltZUFuYWx5c2VyKCkgPSBkZWZhdWx0OwpAQCAtODMsNyArODMsNyBAQCBib29sIFJlYWx0aW1l
QW5hbHlzZXI6OnNldEZmdFNpemUoc2l6ZV90IHNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChtX2ZmdFNpemUgIT0gc2l6ZSkgewotICAgICAgICBtX2FuYWx5c2lzRnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihzaXplKTsKKyAgICAgICAgbV9hbmFseXNpc0Zy
YW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7CiAgICAgICAgIC8vIG1fbWFnbml0dWRl
QnVmZmVyIGhhcyBzaXplID0gZmZ0U2l6ZSAvIDIgYmVjYXVzZSBpdCBjb250YWlucyBmbG9hdHMg
cmVkdWNlZCBmcm9tIGNvbXBsZXggdmFsdWVzIGluIG1fYW5hbHlzaXNGcmFtZS4KICAgICAgICAg
bV9tYWduaXR1ZGVCdWZmZXIuYWxsb2NhdGUoc2l6ZSAvIDIpOwogICAgICAgICBtX2ZmdFNpemUg
PSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2Ny
aXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggZDU5ZGVjZjk5NTE2ZjZkMDFhZjljMWQ5ZmRiZjFk
MGIxMDE5ZTQwZi4uZDViM2FmYmYyNzEwMTQ1MTQ5NGIxODkzNzc2OGI2MDVmNmEzYjQ3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwCkBAIC02OCw4ICs2OCw4IEBAIFNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlw
dFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiAg
ICAgQVNTRVJUKG51bWJlck9mSW5wdXRDaGFubmVscyA8PSBBdWRpb0NvbnRleHQ6Om1heE51bWJl
ck9mQ2hhbm5lbHMoKSk7CiAKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUphdmFTY3JpcHQpOwot
ICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAg
ICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlu
cHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BL
ZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcAppbmRleCA0MTBkMWRhZjVjODk1NDAwOWZmMDYzNmE4MjkwMGJmOTRhZjRmOGYx
Li5mM2QyMTIyZGY1MWM0ZjFhMjkyMjRlNjkzYWI0OTViYmMyYjkzOGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5j
cHAKQEAgLTQ5LDEyICs0OSwxMiBAQCB2b2lkIFdhdmVTaGFwZXJEU1BLZXJuZWw6OmxhenlJbml0
aWFsaXplT3ZlcnNhbXBsaW5nKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
aWYgKCFtX3RlbXBCdWZmZXIpIHsKLSAgICAgICAgbV90ZW1wQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV90
ZW1wQnVmZmVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdR
dWFudHVtICogNCk7Ci0gICAgICAgIG1fdXBTYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0pOwotICAgICAgICBtX2Rvd25TYW1wbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAgICAgICBt
X3VwU2FtcGxlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1
bSAqIDIpOwotICAgICAgICBtX2Rvd25TYW1wbGVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKKyAgICAgICAgbV90ZW1wQnVmZmVyID0gbWFr
ZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAg
bV90ZW1wQnVmZmVyMiA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFu
dHVtICogNCk7CisgICAgICAgIG1fdXBTYW1wbGVyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJl
bmRlcmluZ1F1YW50dW0pOworICAgICAgICBtX2Rvd25TYW1wbGVyID0gbWFrZVVuaXF1ZTxEb3du
U2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX3VwU2FtcGxlcjIgPSBt
YWtlVW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX2Rv
d25TYW1wbGVyMiA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiA0
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggODQ4Njk5M2YyMTA4NGNjYzYxY2NkODBiMmMxODdlMDhj
MTU1ZmQwMS4uNmU3ZThkZDFjOWMxOWZhM2M4NWUzZDlkODU1YWI5ZjQ1Nzg1Yjc5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgV2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNv
bnRleHQuc2FtcGxlUmF0ZSgpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBl
cik7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNz
b3I+KGNvbnRleHQuc2FtcGxlUmF0ZSgpLCAxKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlx
dWU8V2F2ZVNoYXBlclByb2Nlc3Nvcj4oY29udGV4dC5zYW1wbGVSYXRlKCksIDEpOwogCiAgICAg
aW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKaW5kZXggMjg5YzM5ZjVmM2Y5ZjdhNzllOWE1
YjZhNmQ4MzE1YjU5MWY0MzJkYS4uYmZlNWUwZTQ3ZmI4NGEyOGM2M2M2ZTI4YjMyZTBmYzExZTVj
NjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdhdmVTaGFwZXJQcm9jZXNz
b3I6On5XYXZlU2hhcGVyUHJvY2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2Vy
bmVsPiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFdhdmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB2b2lkIFdhdmVTaGFw
ZXJQcm9jZXNzb3I6OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3IuaAppbmRleCBiMWM0OWRiNTIzYjkzNmIwYTRlYzIyMTA0MWI3N2RhN2NjMTQ3OGZkLi4yMGQ2
MDY5NzI0Mjg5NzM3Nzk4MmI4NGVlNzNkNGRhNjM0ZWQ4ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9uczsKIHVzaW5nIENyZWRlbnRpYWxQcm9taXNlID0gRE9NUHJvbWlzZURlZmVycmVkPElETE51
bGxhYmxlPElETEludGVyZmFjZTxCYXNpY0NyZWRlbnRpYWw+Pj47CiAKIGNsYXNzIEF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKTsKIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Ioc3RkOjp1
bmlxdWVfcHRyPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudD4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNw
cAppbmRleCA4YzNkMTM0NmM0MDMwY2ZiM2Q4Mjc3MzdhMGExNWYzZjFjYjliYWQ3Li4xYjkxMmQ5
OGQ5ZjA0ZjMwNzRhMWI4ZTFhNjI2MDFhNDJmYWYzNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKQEAgLTE1
MCw5ICsxNTAsOSBAQCBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UodWludDMyX3QgY2hh
bm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZCB0eXBlLCBjbwogICAgIHVpbnQ4X3Qgc2VxdWVu
Y2UgPSAwOwogCiAgICAgc2l6ZV90IHBvcyA9IGRhdGEuc2l6ZSgpID4ga0hpZEluaXRQYWNrZXRE
YXRhU2l6ZSA/IGtIaWRJbml0UGFja2V0RGF0YVNpemUgOiBkYXRhLnNpemUoKTsKLSAgICBtX3Bh
Y2tldHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJ
ZCwgdHlwZSwgZ2V0SW5pdFBhY2tldERhdGEoZGF0YSksIGRhdGEuc2l6ZSgpKSk7CisgICAgbV9w
YWNrZXRzLmFwcGVuZChtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5
cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBkYXRhLnNpemUoKSkpOwogICAgIGZvciAoOyBw
b3MgPCBkYXRhLnNpemUoKTsgcG9zICs9IGtIaWRDb250aW51YXRpb25QYWNrZXREYXRhU2l6ZSkK
LSAgICAgICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51
YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0
RGF0YShkYXRhLCBwb3MpKSk7CisgICAgICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxG
aWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRp
bnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOwogfQogCiBGaWRvSGlkTWVzc2FnZTo6Rmlk
b0hpZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBpbml0UGFja2V0
LCBzaXplX3QgcmVtYWluaW5nU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAppbmRleCA1NWI3YjJkNzE1MzZhMjM1
NDkxM2FlMzZlOWZiOTFlZjAwYThmMDgzLi4yNmI4MGFhOGE1ZjEzOTYzYzc2OGU3ZTkyM2JiYWFi
MmI4N2I1ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRmlkb0hpZFBhY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxGaWRvSGlkSW5pdFBhY2tldD4gRmlkb0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxp
emVkRGF0YShjCiAgICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CiAgICAgZGF0YS5h
cHBlbmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNvbW1hbmQs
IFdURk1vdmUoZGF0YSksIHBheWxvYWRTaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRv
SGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2Fk
U2l6ZSk7CiB9CiAKIC8vIFUyRiBJbml0aWFsaXphdGlvbiBwYWNrZXQgaXMgZGVmaW5lZCBhczoK
QEAgLTEyMyw3ICsxMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZENvbnRpbnVhdGlvblBh
Y2tldD4gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbQogICAgIGF1dG8gZGF0
YSA9IFZlY3Rvcjx1aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4o
KSArIGluZGV4LCBkYXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRv
SGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFu
bmVsSWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAogLy8gVTJGIENvbnRpbnVhdGlv
biBwYWNrZXQgaXMgZGVmaW5lZCBhczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggMDIxNDVkMGNjMmU4YzllYWRiMGM4ODI5NDFiODU5
ZmMwYWU4MDUyZC4uNWI2NGEwODc0NmFmODA4MGNkMmU3MjUwM2ZhMDBkM2M5NDlmYjAwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAg
LTI1MCw3ICsyNTAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZTo6b3BlbkFuZFZlcmlm
eVZlcnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBy
ZXN1bHQ7Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9wZW5UYXNr
PigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVzdWx0KTsK
KyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRW
ZXJzaW9uSW5OZXdEYXRhYmFzZSwgc3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5z
Y2hlZHVsZUltbWVkaWF0ZVRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndh
aXRGb3JUYXNrQ29tcGxldGlvbigpOwogCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEYXRhYmFz
ZTo6Y2xvc2UoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyZWFkLnNjaGVkdWxl
SW1tZWRpYXRlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlQ2xvc2VUYXNrPigqdGhpcywg
c3luY2hyb25pemVyKSk7CisgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhtYWtlVW5p
cXVlPERhdGFiYXNlQ2xvc2VUYXNrPigqdGhpcywgc3luY2hyb25pemVyKSk7CiAKICAgICAvLyBG
SVhNRTogaU9TIGRlcGVuZHMgb24gdGhpcyBmdW5jdGlvbiBibG9ja2luZyB1bnRpbCB0aGUgZGF0
YWJhc2UgaXMgY2xvc2VkIGFzIHBhcnQKICAgICAvLyBvZiBjbG9zaW5nIGFsbCBvcGVuIGRhdGFi
YXNlcyBmcm9tIGEgcHJvY2VzcyBhc3NlcnRpb24gZXhwaXJhdGlvbiBoYW5kbGVyLgpAQCAtNTMy
LDcgKzUzMiw3IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgIG1f
dHJhbnNhY3Rpb25JblByb2dyZXNzID0gdHJ1ZTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBt
X3RyYW5zYWN0aW9uUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtl
X3VuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOwor
ICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1v
dmUodHJhbnNhY3Rpb24pKTsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJh
c2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0
YXNrLT50cmFuc2FjdGlvbigpKTsKICAgICBkYXRhYmFzZVRocmVhZCgpLnNjaGVkdWxlVGFzayhX
VEZNb3ZlKHRhc2spKTsKIH0KQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hl
ZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAg
YXV0byYgdGhyZWFkID0gZGF0YWJhc2VUaHJlYWQoKTsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6
bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CisgICAg
YXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oJnRyYW5zYWN0
aW9uKTsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlv
blRhc2sgJXAgZm9yIHRoZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKICAgICB0
aHJlYWQuc2NoZWR1bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQpAQCAtNzYzLDcgKzc2Myw3IEBA
IFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKICAgICBpZiAodGhyZWFkLnRl
cm1pbmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogCi0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRhYmxlTmFtZXNU
YXNrPigqdGhpcywgc3luY2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VV
bmlxdWU8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0
KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwogICAg
IHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAz
YmFiZDQ5NTY2ZjE0YTFiM2MwZDNiMTdiZjRjN2YzMmM1ZTNkNWY3Li5kNjQ5N2MzOTdmYTQ3NDI4
NTllMDU4NjIyMzZlZGVlNDNkNGVmMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMzksNyArMzksNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBEYXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQoKQot
ICAgIDogbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8U1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvcj4oKSkKKyAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihtYWtl
VW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCiB7CiAgICAgbV9zZWxmUmVmID0g
dGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBkOGRkY2M1OTg1NTE1NzZkMmEyYzEwZjQyZTRhZDEy
YTgyNTliNTE5Li5jMjhhOTZmNDU4MzllZjU0ZGFmMWY5OWExYWQ1OGQ3ZWNkNGE2NzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9w
ZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJh
c2VNYXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCiAgICAgaWYgKCFtX29wZW5EYXRh
YmFzZU1hcCkKLSAgICAgICAgbV9vcGVuRGF0YWJhc2VNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERh
dGFiYXNlT3JpZ2luTWFwPigpOworICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9IG1ha2VVbmlx
dWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CiAKICAgICBhdXRvIG9yaWdpbiA9IGRhdGFiYXNlLnNl
Y3VyaXR5T3JpZ2luKCk7CiAKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6cmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgYwogICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9pZCBt
YWtpbmcgYW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAgYXV0
byogbmFtZVNldCA9IG1fYmVpbmdDcmVhdGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZVNl
dCkgewotICAgICAgICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoQ291bnRl
ZFNldDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxIYXNo
Q291bnRlZFNldDxTdHJpbmc+PigpOwogICAgICAgICBuYW1lU2V0ID0gb3duZWRTZXQuZ2V0KCk7
CiAgICAgICAgIG1fYmVpbmdDcmVhdGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIFdURk1v
dmUob3duZWRTZXQpKTsKICAgICB9CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIERhdGFiYXNl
VHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgYwogICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBh
dm9pZCBtYWtpbmcgYW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAg
ICAgYXV0byogbmFtZVNldCA9IG1fYmVpbmdEZWxldGVkLmdldChvcmlnaW4pOwogICAgIGlmICgh
bmFtZVNldCkgewotICAgICAgICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNo
U2V0PFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8gb3duZWRTZXQgPSBtYWtlVW5pcXVlPEhhc2hT
ZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFtZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAg
ICBtX2JlaW5nRGVsZXRlZC5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVk
U2V0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50LmgKaW5kZXggODVmMWI2MzVjM2U0OWIzZmUxYTgxZjk0ODc4MjQ4MGUxZGU0
OGZiNS4uOGE1NGEzNjY3YTA3YWFjZTAzYTk2MGZiMjU2NGY3ZWJkZjNiZDk5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oCkBAIC00
NCw2ICs0NCw3IEBAIGNsYXNzIFNRTFJlc3VsdFNldDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQmFj
a2VuZDsKIAogY2xhc3MgU1FMU3RhdGVtZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBTUUxTdGF0ZW1lbnQoRGF0YWJhc2UmLCBjb25zdCBTdHJpbmcmLCBW
ZWN0b3I8U1FMVmFsdWU+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4mJiwgUmVmUHRy
PFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+JiYsIGludCBwZXJtaXNzaW9ucyk7CiAgICAgflNR
TFN0YXRlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCAyMGQ2OTczNDc3NGRiZmJmMzBiZDhmMzljZTRj
NTk1NzIxNGU5MDBjLi40Y2IwNDFlNDUyYzgwZjVmNTliYjI3MjFlYWI4ZWMxYThmNjE4MzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uLmNwcApAQCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2Fj
dGlvbjo6ZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYQogICAg
IGVsc2UgaWYgKG1fcmVhZE9ubHkpCiAgICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0
aG9yaXplcjo6UmVhZE9ubHlNYXNrOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMu
dmFsdWVPcihWZWN0b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtl
VW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMu
dmFsdWVPcihWZWN0b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7CiAKICAgICBpZiAobV9kYXRhYmFzZS0+ZGVs
ZXRlZCgpKQogICAgICAgICBzdGF0ZW1lbnQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKCk7CkBA
IC0yMzQsNyArMjM0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5k
UHJlZmxpZ2h0KCkKICAgICB9CiAKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwot
ICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5zYWN0
aW9uPihtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLCBtX3JlYWRPbmx5KTsKKyAgICBtX3Nx
bGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFz
ZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9yZWFkT25seSk7CiAKICAgICBtX2RhdGFiYXNlLT5yZXNl
dERlbGV0ZXMoKTsKICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZl
ci5jcHAKaW5kZXggNzlhYTU2MTgxZmZlZjNhYjFhOTJhYTU3ZmVjZGI2ZmJhNTllNmYwYi4uMTI5
ZDg2ZmZjZmJkMTU3YTgwYjAxOTJlM2I0OTk3MTMzYmViNzgwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIE5hdmlnYXRvcldlYkRyaXZlciogTmF2aWdhdG9yV2ViRHJpdmVyOjpm
cm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvcldlYkRyaXZlciogc3Vw
cGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYkRyaXZlcio+KFN1cHBsZW1lbnQ8TmF2
aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxOYXZpZ2F0b3JXZWJEcml2ZXI+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKaW5kZXggODhhOTc4MDQ0YmMxZTcw
ODkzMzU2NWRjNjJkMGEzMTQ2YjM4YjQyNi4uMzc2ZDE1NWNhOWIyZjVkMmE0YWIxODUyYzc3NmQ5
YzE4ZjJlNTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2
aWdhdG9yR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0
b3JHUFUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIE5hdmlnYXRvckdQVSogTmF2aWdhdG9yR1BVOjpm
cm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdQVSogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJv
bShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JH
UFU+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9y
R1BVPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAg
ICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaApp
bmRleCAxYjM0MjUwNGQ2OTU1MDhmMDgxNmNjYjU1ODJmNWJkOWFhNzYxYTZiLi41ZjU3ZWYxMTc3
NTMxYTBhYzNkOTYwZGViMWQ0Mzg3MTFhNGYwNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJh
dGlvbkRlZmluaXRpb24uaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBFbnVtZXJhdGlvbkRlZmlu
aXRpb24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKIAogICAgIGJvb2wgYWRkKEVudW1lcmF0
aW9uTWVtYmVyJiYgbWVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJl
cnMuYWRkKG1lbWJlci5uYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8RW51bWVyYXRpb25NZW1iZXI+
KFdURk1vdmUobWVtYmVyKSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQo
bWVtYmVyLm5hbWUoKSwgbWFrZVVuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1i
ZXIpKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlh
YmxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaAppbmRleCBlOTJkYWExNmVmNTNjMDExMTU0N2E5
ZThjZDc5YTNlODM1Mjc3MWNiLi5mYTg2NTUxZTM4ZDI0OTBmYjQwYTZlYzI4MDA1YTQ3MTFlZTAz
MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCkBAIC00OCw2ICs0OCw3
IEBAIGNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gZmluYWwgewogLy8gRmluYWwgYmVjYXVzZSB3
ZSBtYWRlIHRoZSBkZXN0cnVjdG9yIG5vbi12aXJ0dWFsLgogcHVibGljOgogICAgIHN0cnVjdCBS
YXJlRGF0YSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgUmFyZURhdGEoUXVhbGlmaWVycyYmIHF1YWxpZmllcnNBcmd1bWVudCwgc3RkOjp1bmlxdWVf
cHRyPFNlbWFudGljPiYmIHNlbWFudGljQXJndW1lbnQpCiAgICAgICAgICAgICA6IHF1YWxpZmll
cnMoV1RGTW92ZShxdWFsaWZpZXJzQXJndW1lbnQpKQogICAgICAgICAgICAgLCBzZW1hbnRpYyhX
VEZNb3ZlKHNlbWFudGljQXJndW1lbnQpKQpAQCAtNjQsNyArNjUsNyBAQCBjbGFzcyBWYXJpYWJs
ZURlY2xhcmF0aW9uIGZpbmFsIHsKICAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAg
ICB7CiAgICAgICAgIGlmIChzZW1hbnRpYyB8fCAhcXVhbGlmaWVycy5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oV1RGTW92ZShx
dWFsaWZpZXJzKSwgV1RGTW92ZShzZW1hbnRpYykpOworICAgICAgICAgICAgbV9yYXJlRGF0YSA9
IG1ha2VVbmlxdWU8UmFyZURhdGE+KFdURk1vdmUocXVhbGlmaWVycyksIFdURk1vdmUoc2VtYW50
aWMpKTsKICAgICB9CiAKICAgICB+VmFyaWFibGVEZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RW50cnlQb2ludFNjYWZmb2xkaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCmluZGV4IDBlMzFmZmJkZTBi
MTQ4NmY2YzZmNjVlMjBlYjYzOGFlODgxYjg3ZjguLmNiY2M0ODRiNjgyNTBjMGFhMDliNTk5NDNh
ZGM3OWU4MTAwOTI3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRp
bmcuaApAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgTWV0YWwgewogY2xhc3MgVHlwZU5hbWVy
OwogCiBjbGFzcyBFbnRyeVBvaW50U2NhZmZvbGRpbmcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkVudHJ5UG9pbnRTY2FmZm9sZGluZygpID0g
ZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAppbmRleCA4MjU0OGI4
YzZlYTBiZTViYmE4MmQ4OTc3NzZkNzQ2MzIxMGQ5OGU2Li41MTljNzgyYmUyZmM2YWYyYWNhZDFk
YmI4OGY5YWIxYTU4NDc2NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApA
QCAtNzU3LDkgKzc1Nyw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+
IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50CiAgICAgICAgIHJldHVy
biB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICB9OwogICAgIGlmICgmZnVu
Y3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXIpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4o
ZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRT
ZW1hbnRpY3MudmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3Mu
dmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4o
ZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRT
ZW1hbnRpY3MudmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3Mu
dmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7
CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdt
ZW50U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGcmFnbWVudEVudHJ5
UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlw
ZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMs
IG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwg
V1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0
Y2hlZENvbG9yQXR0YWNobWVudHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGcmFnbWVu
dEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3Ms
IG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50
SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xh
eW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRp
Y3MubWF0Y2hlZENvbG9yQXR0YWNobWVudHMpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBA
IC03ODMsNyArNzgzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4g
Q29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW4KICAgICAgICAgcmV0dXJu
IHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIH07CiAgICAgaWYgKCZmdW5j
dGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnNoYWRlcikKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rp
b25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRp
Y3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5
b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRp
b24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBv
aW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMVHlwZU5hbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMVHlwZU5hbWVyLmNwcAppbmRleCAxODViYTBiMDg4YTVjZWQ0YzViNjYzNmZhOTQ0
MmMwMDM0MGRkMDJhLi40MGI2MmMzN2RiZTI1ODBlMjNkNTkwYzA5MWViYjQxN2NhOWI4MDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TFR5cGVOYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCkBAIC0yNzIsMTkgKzI3MiwxOSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QmFzZVR5cGVOYW1lTm9kZT4gVHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZShBU1Q6OlVu
bmFtZWRUeXBlJiB1bgogICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2Fz
ZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8m
IHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBl
KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVmZXJlbmNlVHlwZU5hbWVOb2Rl
PihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRU
eXBlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+
KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5
cGUoKSk7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjog
ewogICAgICAgICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+
KHVubmFtZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5
cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5h
ZGRyZXNzU3BhY2UoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBvaW50ZXJUeXBlTmFt
ZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVz
c1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5
UmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0
PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVy
YXRlTmV4dFR5cGVOYW1lKCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJl
bnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3Bh
Y2UoKSk7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsK
ICAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFt
ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5v
ZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRz
KCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50
LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CiAgICAg
fQogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2Vy
LmNwcAppbmRleCA5MDFjNjEwMjAzZWVmZjQ2OTA1YThkNmFmMzQ0ODBiOTQ0NTA1YzAyLi4zZGVj
MDYzMDNjYTc5NTY0OWNmODdhNGY1MzAwNzZkNzdiOGQ4OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTk3MCwx
NCArOTcwLDE0IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
JiB2YXJpYWJsZURlY2xhcmF0aW9uKQogCiB2b2lkIENoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlw
ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB1bm5h
bWVkVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRW
YWx1ZSgpKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lv
biwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkp
OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVu
aXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOwogICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgZXhwcmVzc2lvbi5z
ZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CiB9CiAKIHZvaWQgQ2hl
Y2tlcjo6YXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZT4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UsIEFTVDo6VHlwZUFu
bm90YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8
UmVzb2x2aW5nVHlwZT4oV1RGTW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKKyAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVz
b2x2aW5nVHlwZT4oV1RGTW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJlc3Np
b24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwogfQpAQCAtOTg1
LDEwICs5ODUsMTAgQEAgdm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYg
ZXhwcmVzc2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXIKIHZvaWQgQ2hlY2tlcjo6Zm9y
d2FyZFR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZXNvbHZpbmdUeXBlJiByZXNv
bHZpbmdUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdo
dFZhbHVlKCkpCiB7CiAgICAgcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5n
VHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlw
ZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNv
cHlSZWYoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwogICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBy
ZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNz
aW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsK
KyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtl
VW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9KSk7CiAgICAg
ZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5j
cHAKaW5kZXggMDE2MTE0YTYxMGUxMTAwZWZlNjk3MmNhMmEyMzUzMjdjMTUyZTdhYi4uNWU0OWYw
M2EzYjM4MjZkMWZlN2NiM2E1NTg3OTY3NjY1NzY5ZmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApAQCAtNzQwLDE5ICs3
NDAsMTkgQEAgYXV0byBQYXJzZXI6OnBhcnNlU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxzdGQ6OnVu
aXF1ZV9wdHI8QVNUOjpTZW1hbnRpYz4sIEVycm9yPgogICAgIHN3aXRjaCAodG9rZW4tPnR5cGUp
IHsKICAgICBjYXNlIFRva2VuOjpUeXBlOjpBdHRyaWJ1dGU6IHsKICAgICAgICAgUEFSU0UocmVz
dWx0LCBTdGFnZUluT3V0U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5p
cXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7
IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAg
ICAgY2FzZSBUb2tlbjo6VHlwZTo6U3BlY2lhbGl6ZWQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3Vs
dCwgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3Rk
OjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAg
ICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07
CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlJlZ2lzdGVyOiAgewogICAgICAgICBQQVJT
RShyZXN1bHQsIFJlc291cmNlU2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2Vf
dW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVy
biB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9
CiAgICAgZGVmYXVsdDogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBCdWlsdEluU2VtYW50aWMp
OwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1v
dmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRp
Yz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZpbmdUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApp
bmRleCA1NTljZThiYTkzYjI5ZDUxN2ZhNzczZjZhNWY1MjdkZGY0YTg1YjAxLi40NTcwMGNlZDhm
ZDM0NDljNGRhNDk1OWY3MWE0MDJhYTAyZDZlNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaApAQCAtNzQs
NiArNzQsNyBAQCBjbGFzcyBSZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiB7CiAvLyBJdCBleGlzdHMgc28gd2UgY2FuIG1h
a2Ugc3VyZSB0aGF0IHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yIGRvZXMgdGhlIHJpZ2h0IHRoaW5n
LgogLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgx
NTggVGhpcyB3cmFwcGVyIG1pZ2h0IG5vdCBiZSBuZWNlc3NhcnkuCiBjbGFzcyBSZXNvbHZpbmdU
eXBlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvbHZp
bmdUeXBlKCkKICAgICAgICAgOiBtX2lubmVyKFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyZW5j
ZT4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5h
dmlnYXRvckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZp
Z2F0b3JHUFUuY3BwCmluZGV4IGJmOTBmNmMzNjA1NDhkNTJjOGZkOGVlZWM3NTNjNzhkOGZhOWJm
MWMuLmQ5NTIyMzA1YWRhMWVlOTcxZjE2NTI4ZGUwNjYwNGJiNmE5NmIwZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcApA
QCAtMzgsNyArMzgsNyBAQCBXb3JrZXJOYXZpZ2F0b3JHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6
ZnJvbShXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBXb3JrZXJOYXZpZ2F0b3JH
UFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JHUFUqPihTdXBwbGVt
ZW50PFdvcmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V29ya2VyTmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3Vw
cGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0
b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5k
ZXggZWQ1YTNjYzgzNGZlMTlkNDg4OGI4NTU1MDRiYTE1NWQ0ODNmYzQwNy4uYzFiYWM4NmQzYWIy
YjBkOTEzZmNlNzQyMTQzMWE5NDQ1OWVlZDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lk
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQoKQog
CiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVj
dCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBw
ZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAg
ICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7
CiAgICAgfSkpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiAgICAgfSkpOwpAQCAtMTc1LDcgKzE3NSw3
IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNl
aXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4m
JiBiaW5hcnlEYXRhKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZCht
YWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBpZiAobV9jbGllbnQp
CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5h
cnlEYXRhKSk7CiAgICAgfSkpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8
dWludDhfCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBidWZmZXJlZEFtb3VudCkKIHsKLSAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJl
ZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3Mu
YXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0pKTsK
QEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYgogCiB2b2lkIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNo
YWtlKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
ICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xv
c2luZ0hhbmRzaGFrZSgpOwogICAgIH0pKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNo
YWtlKCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtl
Q29tcGxldGlvbiwgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7
Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2Rl
LCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVu
aGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwg
cmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0
aW9uLCBjb2RlLCByZWFzb24pOwogICAgICAgICB9KSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2ln
bmVkIHVuaGFuZGxlZEJ1ZmZlcmUKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewotICAgIG1fcGVuZGluZ1Rh
c2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwogICAgIH0pKTsK
QEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKCkKIHsKLSAgICBtX3BlbmRp
bmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50
KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKICAgICB9KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggNjA3MTQ0MDkyNGZiMmNlNjdmNTM0MDYyZDc5ZThlM2IwNGVlMWM1MC4uYTA3
YTg3NjNhZmI5NjliNDIwNzBiYzQ5YTg2MjM5Yjc4M2Q2ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAt
OTcsNyArOTcsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENo
YW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMJiByZXF1ZXN0ZWRVUgogICAgIG1fYWxsb3dDb29raWVz
ID0gdmFsaWRhdGVkVVJMLT5hcmVDb29raWVzQWxsb3dlZDsKICAgICBTdHJpbmcgdXNlckFnZW50
ID0gbV9kb2N1bWVudC0+dXNlckFnZW50KG1fZG9jdW1lbnQtPnVybCgpKTsKICAgICBTdHJpbmcg
Y2xpZW50T3JpZ2luID0gbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwot
ICAgIG1faGFuZHNoYWtlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZh
bGlkYXRlZFVSTC0+dXJsLCBwcm90b2NvbCwgdXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxs
b3dDb29raWVzKTsKKyAgICBtX2hhbmRzaGFrZSA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SGFuZHNo
YWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwgY2xpZW50T3JpZ2lu
LCBtX2FsbG93Q29va2llcyk7CiAgICAgbV9oYW5kc2hha2UtPnJlc2V0KCk7CiAgICAgaWYgKG1f
ZGVmbGF0ZUZyYW1lci5jYW5EZWZsYXRlKCkpCiAgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRl
bnNpb25Qcm9jZXNzb3IobV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3Nvcigp
KTsKQEAgLTcwMyw3ICs3MDMsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFt
ZSgpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmlu
ZyYgc3RyaW5nKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBP
dXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1
ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFt
ZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZVRleHQ7CiAg
ICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlwZVN0cmluZzsKICAgICBmcmFtZS0+
c3RyaW5nRGF0YSA9IHN0cmluZzsKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFdlYlNvY2tldENo
YW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENv
ZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCht
X291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAg
ICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRv
IGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0g
b3BDb2RlOwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7CiAg
ICAgZnJhbWUtPnZlY3RvckRhdGEucmVzaXplKGRhdGFMZW5ndGgpOwpAQCAtNzI1LDcgKzcyNSw3
IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1l
OjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVl
dWVCbG9iRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIEJsb2ImIGJsb2IpCiB7
CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVR
dWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1l
PigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZy
YW1lLT5vcENvZGUgPSBvcENvZGU7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1l
VHlwZUJsb2I7CiAgICAgZnJhbWUtPmJsb2JEYXRhID0gJmJsb2I7CkBAIC03NjMsNyArNzYzLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAg
ICAgICAgICAgICAgICByZWYoKTsgLy8gV2lsbCBiZSBkZXJlZmVkIGFmdGVyIGRpZEZpbmlzaExv
YWRpbmcoKSBvciBkaWRGYWlsKCkuCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2Jsb2JMb2Fk
ZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZS0+YmxvYkRhdGEpOwotICAgICAgICAg
ICAgICAgIG1fYmxvYkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4o
RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpOworICAgICAgICAgICAg
ICAgIG1fYmxvYkxvYWRlciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRl
ckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpOwogICAgICAgICAgICAgICAgIG1fYmxv
YkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJTdGFydGVkOwogICAgICAgICAgICAgICAgIG1fYmxv
YkxvYWRlci0+c3RhcnQobV9kb2N1bWVudC5nZXQoKSwgKmZyYW1lLT5ibG9iRGF0YSk7CiAgICAg
ICAgICAgICAgICAgbV9vdXRnb2luZ0ZyYW1lUXVldWUucHJlcGVuZChXVEZNb3ZlKGZyYW1lKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZUZyYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKaW5kZXggZjJmYTYyMDljMDQ4ZjUxNTE4YTI1ZWVjMTNh
ZWYyNTY0YzlmNGU3Yi4uZWUzM2VhMGZlNWNmMWQ1YmY3OWEyZGEwNjcwN2I3M2NkM2E3OGM5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVGcmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFdlYlNvY2tldERl
ZmxhdGVGcmFtZXI6OldlYlNvY2tldERlZmxhdGVGcmFtZXIoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVh
dGVFeHRlbnNpb25Qcm9jZXNzb3IoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKIH0KIAogYm9vbCBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKQEAgLTE3MCw4ICsxNzAsOCBA
QCBib29sIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUoKSBjb25zdAogI2lmIFVT
RShaTElCKQogdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3
aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVyTW9kZSBtb2RlKQog
ewotICAgIG1fZGVmbGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3
aW5kb3dCaXRzLCBtb2RlKTsKLSAgICBtX2luZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJT
b2NrZXRJbmZsYXRlcj4oKTsKKyAgICBtX2RlZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRE
ZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7CisgICAgbV9pbmZsYXRlciA9IG1ha2VVbmlxdWU8
V2ViU29ja2V0SW5mbGF0ZXI+KCk7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5pbml0aWFsaXplKCkg
fHwgIW1faW5mbGF0ZXItPmluaXRpYWxpemUoKSkgewogICAgICAgICBtX2RlZmxhdGVyID0gbnVs
bHB0cjsKICAgICAgICAgbV9pbmZsYXRlciA9IG51bGxwdHI7CkBAIC0xODQsNyArMTg0LDcgQEAg
dm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRz
LCBXZWJTb2NrZXREZWZsYXRlcjo6Q28KIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9s
ZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFt
ZSkKIHsKICNpZiBVU0UoWkxJQikKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVl
PERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJT
b2NrZXRGcmFtZTo6aXNOb25Db250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgfHwgIWZyYW1lLnBh
eWxvYWRMZW5ndGgpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYgKCFtX2RlZmxhdGVy
LT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9kZWZs
YXRlci0+ZmluaXNoKCkpIHsKQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVm
bGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShXZWJTb2Nr
ZXRGcgogICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBtX2RlZmxhdGVyLT5zaXplKCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKICNlbHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0
ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3Vs
dEhvbGRlcj4odGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXREZWZsYXRlQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRl
KFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtl
VW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpICYm
IGZyYW1lLmNvbXByZXNzKSB7CiAgICAgICAgIHJlc3VsdC0+ZmFpbCgiQ29tcHJlc3NlZCBiaXQg
bXVzdCBiZSAwIGlmIG5vIG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24iKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCmluZGV4IDFkNmYxNzgyMmM4MDUyODFi
NzBhNDE2MjBkY2RlZTZhZDJhYjg4OWMuLjRhNDg2NWY4NDk0ZDA2MTNlYWMzMjFhNTk0ZjhiYWUx
OTk5NmJiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXREZWZsYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBXZWJTb2NrZXREZWZs
YXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1v
ZGUgY29udGV4dAogewogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPj0gOCk7CiAgICAgQVNTRVJU
KG1fd2luZG93Qml0cyA8PSAxNSk7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpf
c3RyZWFtPigpOworICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8el9zdHJlYW0+KCk7CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9z
dHJlYW0pKTsKIH0KIApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6
OnJlc2V0KCkKIFdlYlNvY2tldEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcihpbnQgd2luZG93
Qml0cykKICAgICA6IG1fd2luZG93Qml0cyh3aW5kb3dCaXRzKQogewotICAgIG1fc3RyZWFtID0g
c3RkOjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5n
ZXQoKSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk5NDA3M2VhYTVlOGIyMzBkMWM4YjAwYzE2YzU5NjQz
ZTk3ODQyNjguLmRjNmY2NjBmZDM4OGNlZmZhZjBlYmVmNmU2NjBlNmI2OTViYjYzMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzYxLDcgKzM2MSw3
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRo
cmVhZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0CiAKICAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94
eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHsKICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssCi0gICAgICAgIFtjbGllbnRXcmFwcGVy
ID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250
ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFw
cGVyLmNvcHlSZWYoKSwgJmxvYWRlclByb3h5LCBwZWVyID0gbWFrZVVuaXF1ZTxQZWVyPihjbGll
bnRXcmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZN
b3ZlKHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
ewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xv
YmFsU2NvcGUoKSk7CiAgICAgICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+ZmFpbGVkV2ViU29j
a2V0Q2hhbm5lbENyZWF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiBCcmlkZ2U6Omlu
aXRpYWxpemUoKSBxdWl0dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBtYWluVGhyZWFkRGVz
dHJveSgpIHRvIGRlbGV0ZSB0aGUgcGVlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKaW5kZXggZDk3YjVjMmE4NWE5ZDIzMjhmOTg0MGY0NGQz
ZDFlOTYzMmM4MmQ5ZS4uNzc2YzQzYWVjMGI5YjViZGVhZGMzZGQ4OTEyNmFjZWQ2YmE3NTE2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgTmF2aWdhdG9yV2ViVlIqIE5hdmlnYXRvcldlYlZSOjpmcm9tKE5h
dmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvcldlYlZSKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8TmF2aWdhdG9yV2ViVlIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0g
ICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2Vi
VlI+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9y
V2ViVlI+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAg
ICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1
cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAppbmRleCBiYzIzZDU5
Y2MzMTIzN2IxNDk3YTc2YWNjNTlkM2VhZjVkMmI1ODQwLi42Y2E2N2YzOTFhMzFmY2QzODY5MjU1
YjIxZjJmY2I3ZjNmYmY5YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKQEAgLTc5LDcg
Kzc5LDcgQEAgc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHRJbXBsIDogcHVibGljIENyeXB0b0Rp
Z2VzdENvbnRleHQgewogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RD
b250ZXh0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENy
eXB0b0RpZ2VzdENvbnRleHRJbXBsPigpOwogICAgIH0KIAogICAgIENyeXB0b0RpZ2VzdENvbnRl
eHRJbXBsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2Nr
R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMu
Y3BwCmluZGV4IDMxNTMxNjgwODA3YjcyZDVlZjkzODA5MTRlN2FlMjQwYWQ5ZDAzOTcuLmU1M2Ux
OTViMzVmNDk4Zjc5NTI1MTUxZWJjMmFjZWI1ZmFmY2QyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgUEFMIHsKIAogc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2xvY2tHZW5lcmljPigpOwogfQogCiBDbG9ja0dlbmVyaWM6OkNsb2NrR2Vu
ZXJpYygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xv
Y2tDTS5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCmlu
ZGV4IGM2ODkzMjE1ZjA2YjBjNjc0ZDU0NjA4MzNiMWE0ZDUxY2MzMmI2MTQuLjllMDcxYjc4MTRl
NDRmZTAwNDQyZTY2YzcyMGIyYmZiMzEzMDY5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBjb25zdCBp
bnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAwOwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+
IENsb2NrOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENsb2NrQ00+
KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2xvY2tDTT4oKTsKIH0KIAogQ2xvY2tDTTo6Q2xv
Y2tDTSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCBjYWNhYjg1NjhjODYxMTJkOWNkZmVmYzMwOTAyNmFkOWM4MTUzM2U1Li5iMzVmYzE1
NjQzN2YxY2EwOWQ2NDIyYmQ1OWM3MTMzZmFjMmM2MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE1NzUsNyArMTU3NSw3IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmli
dXRlc1VudGlsVHJlZU11dGF0ZXMoKQogewogICAgIGlmICghbV9jb21wdXRlZE9iamVjdEF0dHJp
YnV0ZUNhY2hlKQotICAgICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsKKyAgICAgICAg
bV9jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlID0gbWFrZVVuaXF1ZTxBWENvbXB1dGVkT2Jq
ZWN0QXR0cmlidXRlQ2FjaGU+KCk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hp
bmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmNwcAppbmRleCBlZGZkYmIwYTA2ZmQ2ZWRhMjUwNDhiOTcxOWI5ZWYxYmE5ZTEz
NDQzLi5lNmRlYTk2MTFmOWI0ODgwYTVhMTliOWFkMWUxYmRlNzFjMTg0Nzg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZv
aWQgV2ViQW5pbWF0aW9uOjp1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWsgZGlkU2VlaywgU3lu
Y2hyb25vdXNseU5vdGlmeSBzeW5jCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHN5bmNo
cm9ub3VzbHkgbm90aWZ5IGlzIGZhbHNlLCBxdWV1ZSBhIG1pY3JvdGFzayB0byBydW4gZmluaXNo
IG5vdGlmaWNhdGlvbiBzdGVwcyBmb3IgYW5pbWF0aW9uIHVubGVzcyB0aGVyZQogICAgICAgICAg
ICAgLy8gaXMgYWxyZWFkeSBhIG1pY3JvdGFzayBxdWV1ZWQgdG8gcnVuIHRob3NlIHN0ZXBzIGZv
ciBhbmltYXRpb24uCiAgICAgICAgICAgICBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90
YXNrUGVuZGluZyA9IHRydWU7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVh
ZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNr
UXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKICAgICAgICAgICAg
ICAgICBpZiAobV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcpIHsKICAg
ICAgICAgICAgICAgICAgICAgbV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRp
bmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgZmluaXNoTm90aWZpY2F0aW9uU3RlcHMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKaW5kZXgg
N2RhNDZhNjE1MDRlZjI0ODE1YTY5NGRmYmExMmMyOGIxZWY0ZmU2Ni4uNjIxYjg5MDUxYmI0OGRi
MDMwMWVhODA0N2M3YWZlZmZiNjhjZGU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NUHJvbWlzZVByb3h5LmgKQEAgLTYwLDYgKzYwLDcgQEAgY2xhc3MgRE9NUHJvbWlzZVBy
b3h5IHsKIAogdGVtcGxhdGU8PgogY2xhc3MgRE9NUHJvbWlzZVByb3h5PElETFZvaWQ+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01Qcm9taXNlUHJveHko
KSA9IGRlZmF1bHQ7CiAgICAgfkRPTVByb21pc2VQcm94eSgpID0gZGVmYXVsdDsKQEAgLTg0LDYg
Kzg1LDcgQEAgY2xhc3MgRE9NUHJvbWlzZVByb3h5PElETFZvaWQ+IHsKIC8vIEZvbnRGYWNlIGFu
ZCBGb250RmFjZVNldC4KIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiBjbGFzcyBET01Qcm9t
aXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB1c2luZyBSZXNvbHZlQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHR5
cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgKCk+OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0dDQ29udHJvbGxlci5oCmluZGV4IDBjZTQ1OTUwYzUzOTFmNjA2OTZmZDQwZDg5ZDky
N2RhMzg2YTg3ZDMuLjZjZWRkNzY2NDVlYzRmNWJmNDYwOTMyYjZhNmQxNzMzN2FkODE0MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oCkBAIC0zMyw2ICszMyw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdDQ29udHJvbGxlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0NDb250cm9s
bGVyKTsKICAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxHQ0NvbnRyb2xsZXI+
OwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAKaW5kZXggZGIwYzFkYzc2ZjhhMjg5NzA0NWVlMmNmYzkxOTIzZDU4ZGYxYjZmOS4uYzVj
NDcwNjFiZmFjYTFmY2E3MjhiZTI3YjBhMmI0YTlmMGIzMDI1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAg
dm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0
JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3IKICAgICBKU0RPTVdpbmRvd0Jhc2UmIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UmPihvYmplY3QpOwogCiAgICAgYXV0byBjYWxs
YmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRh
c2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2Fs
bGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNP
YmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZl
RE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwg
KnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmNwcAppbmRleCA2Mjk1ZjU4NGNmZThhMTcyOWRkZjZiMThkNzc1NDlmZDQ0YzlhMGJlLi5k
YjVlNzczNDkwYmVkZmJmM2UwYzEwY2YyM2QwYTM2YzhhM2JkYTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTYsMTEg
KzU2LDExIEBAIEV2ZW50VGFyZ2V0KiBKU0V2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQoVk0mIHZtLCBK
U1ZhbHVlIHZhbHVlKQogc3RkOjp1bmlxdWVfcHRyPEpTRXZlbnRUYXJnZXRXcmFwcGVyPiBqc0V2
ZW50VGFyZ2V0Q2FzdChWTSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIGlmIChhdXRv
KiB0YXJnZXQgPSBqc0R5bmFtaWNDYXN0PEpTRXZlbnRUYXJnZXQqPih2bSwgdGhpc1ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRh
cmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNF
dmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKICAgICBpZiAo
YXV0byogd2luZG93ID0gdG9KU0RPTVdpbmRvdyh2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBl
ZCgpLCAqd2luZG93KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdy
YXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKICAgICBpZiAoYXV0byogc2NvcGUg
PSB0b0pTV29ya2VyR2xvYmFsU2NvcGUodm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAq
c2NvcGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4o
c2NvcGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwCmluZGV4IGQ4MzE2MDRjYmFlYjg3ZjA3ZDEyZWFkZGE0YmYwNTMxYTcwYmI0MDIuLjli
ZDY2NDQ2MDE3MDU0OTVhOTRlN2IzZmFkZjA0OGYzYzdiMDQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAg
LTEzNSw3ICsxMzUsNyBAQCB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tU
b0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SgogCiAgICAgYXV0byBjYWxs
YmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRh
c2spKTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0
byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNr
Pihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSgpIG11dGFibGUgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1ZTxB
Y3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250
ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
Y2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMTE0ZmYzYzhhNWRmMDM5
MDI4M2IxYTY3Y2U2MDhkN2Y0MjQ2ZTdjMi4uMzVjY2Q0OTYzNWUwNjExOTRlOTcyOTNlNzEyZjdh
YTM3MmM0OWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zMzAwLDcgKzMzMDAsNyBAQCBzdGF0aWMgRXhjZXB0
aW9uT3I8c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4+IHRyYW5zZmVy
QXJyYXlCdWZmZQogICAgIGlmIChhcnJheUJ1ZmZlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gY29udGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CisgICAgYXV0byBjb250
ZW50cyA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1ZmZlcnMu
c2l6ZSgpKTsKIAogICAgIEhhc2hTZXQ8SlNDOjpBcnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CiAgICAg
Zm9yIChzaXplX3QgYXJyYXlCdWZmZXJJbmRleCA9IDA7IGFycmF5QnVmZmVySW5kZXggPCBhcnJh
eUJ1ZmZlcnMuc2l6ZSgpOyBhcnJheUJ1ZmZlckluZGV4KyspIHsKQEAgLTM0NTEsNyArMzQ1MSw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
IFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gbWFrZVVuaXF1ZTxBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpz
ZXJpYWxpemUoJnN0YXRlLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdl
Qml0bWFwcywKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIHdhc21Nb2R1bGVzLCAK
QEAgLTM0NjksNyArMzQ2OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBi
bG9iVVJMcywgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBj
b250ZXh0ID09IFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1v
dmUoc2hhcmVkQnVmZmVycykgOiBudWxscHRyLCBXVEZNb3ZlKGltYWdlQnVmZmVycykKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgICAgICAgICAgLCBzdGQ6Om1ha2VfdW5pcXVlPFdh
c21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCisgICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVl
PFdhc21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCiAjZW5kaWYKICAgICAgICAgICAgICAgICAp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKaW5kZXggNWM0NjYyOTRiZWU1NmMyMWJmMGY2M2QxNWIwZjhkZjBmMjdhM2EwZS4u
NGY0YjBjZjNiN2VlY2RkZDA3ODcwMjU1MjA4ODk1ZTQ1ZmEyYTA3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTE2NCw3
ICsxNjQsNyBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBBU1NFUlQoYXJyYXlMZW5ndGgpOwogCi0gICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKKyAg
ICBhdXRvIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PigpOwogICAgIHdoaWxlIChhcnJheUxlbmd0aC0tKSB7CiAgICAgICAgIHVu
c2lnbmVkIGJ1ZmZlclNpemU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6
ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGll
bnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERh
dGEuY3BwCmluZGV4IDI0NmY2NGE5ZjYzMjJiNTg3MGNiYjY4MmVkYjJkNGVkYjk1M2VjN2MuLjNi
MTEyNTJhZTY0Y2FmMmU0ZmU3MzllMzFlZTEwOTk1NGQ1NmE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIHZvaWQgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChWTSogdm0pCiAgICAg
SlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBuZXcgSlNWTUNsaWVudERhdGEoKnZtKTsKICAg
ICB2bS0+Y2xpZW50RGF0YSA9IGNsaWVudERhdGE7IC8vIH5WTSBkZWxldGVzIHRoaXMgcG9pbnRl
ci4KICAgICAKLSAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChzdGQ6Om1ha2VfdW5p
cXVlPERPTUdDT3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOworICAgIHZtLT5o
ZWFwLmFkZE1hcmtpbmdDb25zdHJhaW50KG1ha2VVbmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50
Pigqdm0sICpjbGllbnREYXRhKSk7CiAgICAgICAgIAogICAgIGNsaWVudERhdGEtPm1fbm9ybWFs
V29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZSgqdm0sIHRydWUpOwogICAgIHZtLT5tX3R5
cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFdlYkNvcmVUeXBlZEFycmF5Q29udHJv
bGxlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2Ny
aXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTZhNzZjNDk1MjlhNGJiODcxY2I2NmNhM2FkNzVhMmQ3
NmE4MDY1NS4uZDIzOTg1N2FhM2JkZGU5ZmViOWNiODc0MGZjZjVkNjQ5ZTM1MGRiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6Omlu
aXRTY3JpcHQoKQogICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFs
T2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09i
amVjdChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3Zt
KSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKIAotICAg
IG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4o
Km1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8
V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKaW5kZXggMjljODE4NjgzNmVh
MDU0MTFlOGYxZWQ2NDFjMDU3MGNlODE3NjgxNS4uYWE1NmUyZmRlODU1NzdhY2Y5YzA0NzRjODk4
NzdmNGUwZDVjNTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFz
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgTWV0aG9kKiBDQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGlu
c3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmpl
Y3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzTWV0aG9kICYm
IG1faXNhLT5oYXNNZXRob2Qob2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBtZXRob2QgPSBz
dGQ6Om1ha2VfdW5pcXVlPENNZXRob2Q+KGlkZW50KTsKKyAgICAgICAgYXV0byBtZXRob2QgPSBt
YWtlVW5pcXVlPENNZXRob2Q+KGlkZW50KTsKICAgICAgICAgQ01ldGhvZCogcmV0ID0gbWV0aG9k
LmdldCgpOwogICAgICAgICBtX21ldGhvZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhv
ZCkpOwogICAgICAgICByZXR1cm4gcmV0OwpAQCAtMTAzLDcgKzEwMyw3IEBAIEZpZWxkKiBDQ2xh
c3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3Rh
bmNlKSBjb25zdAogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0
IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2Jq
ZWN0KCk7CiAgICAgaWYgKG1faXNhLT5oYXNQcm9wZXJ0eSAmJiBtX2lzYS0+aGFzUHJvcGVydHko
b2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBmaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0Zp
ZWxkPihpZGVudCk7CisgICAgICAgIGF1dG8gZmllbGQgPSBtYWtlVW5pcXVlPENGaWVsZD4oaWRl
bnQpOwogICAgICAgICBDRmllbGQqIHJldCA9IGZpZWxkLmdldCgpOwogICAgICAgICBtX2ZpZWxk
cy5zZXQobmFtZS5pbXBsKCksIFdURk1vdmUoZmllbGQpKTsKICAgICAgICAgcmV0dXJuIHJldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvanNjL0JyaWRnZUpTQy5oCmluZGV4IGYyZjYyMDgyYTgwOGExOWYx
MGE1ZDkzNWQ5MjJiNzczYzEyMjFjMjguLjA0Y2RkY2QyNGNhYTgyOWMzMmU1NmVjMjczYWZiZDM1
MWYyNTRlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlND
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaApAQCAtNDksNiAr
NDksNyBAQCBjbGFzcyBSb290T2JqZWN0OwogY2xhc3MgUnVudGltZU9iamVjdDsKIAogY2xhc3Mg
RmllbGQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1
YWwgSlNWYWx1ZSB2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSop
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTdGF0
ZSosIGNvbnN0IEluc3RhbmNlKiwgSlNWYWx1ZSkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfY2xhc3MubW0KaW5kZXggYjg2Zjc1MWEwYTcxMzhiZTAwNzc2YTc4Y2Jj
MmE2ZDQ1ZGQzNzUwMi4uYTNkOGQzMmYyOGRkODA1OGE0YWI0NDI3Mzk1MzQ0MDc0ZjI2Yzc1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCkBAIC0xMzQsNyArMTM0
LDcgQEAgTWV0aG9kKiBPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEluc3RhbmNlKikgY29uc3QKICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3Ro
aXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yU2VsZWN0b3I6b2JqY01ldGhvZFNlbGVjdG9yXTsKIAog
ICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJp
ZGdlIE5TU3RyaW5nKiltZXRob2ROYW1lLmdldCgpXSkgfHwgIXN0cmNtcChvYmpjTWV0aG9kU2Vs
ZWN0b3JOYW1lLCBidWZmZXIuZGF0YSgpKSkgewotICAgICAgICAgICAgICAgIGF1dG8gbWV0aG9k
ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3MsIG9iamNNZXRob2RTZWxl
Y3Rvcik7CisgICAgICAgICAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPE9iamNNZXRo
b2Q+KHRoaXNDbGFzcywgb2JqY01ldGhvZFNlbGVjdG9yKTsKICAgICAgICAgICAgICAgICBtZXRo
b2RQdHIgPSBtZXRob2QuZ2V0KCk7CiAgICAgICAgICAgICAgICAgbV9tZXRob2RDYWNoZS5hZGQo
bmFtZS5pbXBsKCksIFdURk1vdmUobWV0aG9kKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xODksNyArMTg5LDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAgICAg
ICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5OlVURjhLZXlOYW1l
XTsKIAogICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6
KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgfHwgW2tleU5hbWUgaXNFcXVh
bDooX19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB7Ci0gICAgICAgICAgICAg
ICAgYXV0byBuZXdGaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY0ZpZWxkPigoX19icmlkZ2Ug
Q0ZTdHJpbmdSZWYpa2V5TmFtZSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IG1h
a2VVbmlxdWU8T2JqY0ZpZWxkPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpa2V5TmFtZSk7CiAgICAg
ICAgICAgICAgICAgZmllbGQgPSBuZXdGaWVsZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtX2Zp
ZWxkQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yMjAsNyArMjIwLDcgQEAgRmllbGQqIE9iamNDbGFzczo6ZmllbGRO
YW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnMK
ICAgICAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFt
ZUZvcktleTpvYmpjSXZhck5hbWVdOwogCiAgICAgICAgICAgICAgICAgaWYgKChtYXBwZWROYW1l
ICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5TU3RyaW5nICopZmllbGROYW1lLmdl
dCgpXSkgfHwgIXN0cmNtcChvYmpjSXZhck5hbWUsIGpzTmFtZS5kYXRhKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4o
b2JqY0lWYXIpOworICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gbWFrZVVuaXF1
ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPSBuZXdG
aWVsZC5nZXQoKTsKICAgICAgICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmlt
cGwoKSwgV1RGTW92ZShuZXdGaWVsZCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCBlMDhiMDQ4ZTNi
NTY4NDI5OGNkZWZkOTNlYjkxODgzODkxNTZmNDM4Li4zYjkzZTE4NzgzODU0YzI0NDQ2ZTFjZmE1
NzU4NDY2ZjBmMGE3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAg
aWYgKFt0YXJnZXRPYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnZva2VVbmRl
ZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KV0pewogICAgICAgICBPYmpj
Q2xhc3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+
Z2V0Q2xhc3MoKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxsYmFj
a01ldGhvZChzdGQ6Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBz
ZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6
KSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2Qo
bWFrZVVuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tl
VW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKICAgICAgICAg
Y29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09i
amVjdEltcCo+KGV4ZWMtPmpzQ2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKICAgICAgICAgZmFs
bGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2UtPmludm9rZU9iamNN
ZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKaW5kZXggODNk
NDRlMDY3ZmJkZjU0N2Y2Yzg4YjY3YTM2ZWI1M2Y2OTE0NjZlZS4uZjE3MWE1ODIwM2Y5OGFmMTU1
NDc4MGUwNTE5ZTA0YTFlNTNhMGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCkBAIC0xMzUsNyArMTM1LDcg
QEAgdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OnByaW50KCkgY29uc3QKICNlbmRpZgogCiBDb21i
aW5lZFVSTEZpbHRlcnM6OkNvbWJpbmVkVVJMRmlsdGVycygpCi0gICAgOiBtX3ByZWZpeFRyZWVS
b290KHN0ZDo6bWFrZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKKyAgICA6IG1fcHJlZml4
VHJlZVJvb3QobWFrZVVuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpKQogewogfQogCkBAIC0yMDks
NyArMjA5LDcgQEAgdm9pZCBDb21iaW5lZFVSTEZpbHRlcnM6OmFkZFBhdHRlcm4odWludDY0X3Qg
YWN0aW9uSWQsIGNvbnN0IFZlY3RvcjxUZXJtPiYgcGF0dGUKICAgICAgICAgaWYgKG5leHRFbnRy
eUluZGV4ICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAgICAgICBsYXN0UHJlZml4VHJlZSA9IGxh
c3RQcmVmaXhUcmVlLT5lZGdlc1tuZXh0RW50cnlJbmRleF0uY2hpbGQuZ2V0KCk7CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFwcGVuZChQcmVmaXhU
cmVlRWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgc3RkOjptYWtlX3VuaXF1ZTxQcmVm
aXhUcmVlVmVydGV4PigpfSkpOworICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUtPmVkZ2VzLmFw
cGVuZChQcmVmaXhUcmVlRWRnZSh7bV9hbHBoYWJldC5pbnRlcm5lZCh0ZXJtKSwgbWFrZVVuaXF1
ZTxQcmVmaXhUcmVlVmVydGV4PigpfSkpOwogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBs
YXN0UHJlZml4VHJlZS0+ZWRnZXMubGFzdCgpLmNoaWxkLmdldCgpOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRleCA4YzdlM2Y3ZDdmMWUwZDU1YWFkODkzNGFiYmE1
YWE3MGZiOGY4NWNmLi43N2ZlYjYwYzUwYmM4YTRmMjRiMjc2OTZhZDExMGQxZWRhNzQyODA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAtNDksNiArNDksNyBAQCBzdHJ1Y3QgUmVzb3VyY2VM
b2FkSW5mbzsKIC8vIDEpIEl0IHN0b3JlcyB0aGUgcnVsZXMgZm9yIGVhY2ggY29udGVudCBleHRl
bnNpb24uCiAvLyAyKSBJdCBwcm92aWRlcyBBUElzIGZvciB0aGUgV2ViQ29yZSBpbnRlcmZhY2Vz
IHRvIHVzZSB0aG9zZSBydWxlcyBlZmZpY2llbnRseS4KIGNsYXNzIENvbnRlbnRFeHRlbnNpb25z
QmFja2VuZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8g
LSBSdWxlIG1hbmFnZW1lbnQgaW50ZXJmYWNlLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHVwcGVyIGxh
eWVyLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IDk2ZTJkNjM0
Yjg5M2IzOTkzMDRhOGIyYjI4NWU2MWY0ZTQ2OWRjMGMuLmIyYTlhNzgzNTIyNzcyODNmOTVkODQ5
ZDAzYjE1NmZjZGM3MjFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0
bGVDcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
CkBAIC0xMTUsMzEgKzExNSwzMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2Ug
T3BlcmF0aW9uczo6RGVjcnlwdDoKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6Ci0g
ICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDogewogICAgICAgICAgICAg
YXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFy
YW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzoKICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOiB7CiAgICAgICAgICAg
ICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0NiY0Nm
YlBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0Nm
YlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RS
OiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0Fs
Z29yaXRobUFlc0N0clBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfR0NNOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENy
eXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE1MSw3ICsxNTEsNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3Yx
XzU6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOiB7CiAgICAgICAgICAgICBhdXRvIHBh
cmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihzdGF0
ZSwgdmFsdWUuZ2V0KCkpOwpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5
cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwog
ICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFz
ZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UlNBX1BTUzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlv
bmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGlu
Z0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1
bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xODAsNyAr
MTgwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlNIQV8zODQ6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzUxMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VV
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5
cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NT
MV92MV81OiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENy
eXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0
aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4
Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNl
RXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRl
bnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNo
ZWRLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yMTMs
NyArMjEzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0g
Y29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwgdmFs
dWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOworICAg
ICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsKQEAgLTIyMywxNCArMjIzLDE0IEBAIHN0
YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVh
c2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJ
ZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAg
ICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0
KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI0
OSw3ICsyNDksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogCiAgICAgICAgICAgICBhdXRv
IHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQ
YXJhbXM+KHN0YXRlLCBuZXdWYWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZl
UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9B
bGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RG
OiB7CkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAg
ICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFy
YW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhr
ZGZQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0
b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjogewpA
QCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBp
ZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5o
YXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQ
YXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIEV4Y2VwdGlv
bk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXpl
Q3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkltcG9ydEtleToKICAgICAgICAgc3dpdGNo
ICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQg
PSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FT
U0FfUEtDUzFfdjFfNToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FfUFNTOgpAQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAg
ICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAg
IHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6QUVTX0NUUjoKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgRXhjZXB0
aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxp
emVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19H
Q006CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9
IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHN0YXRlLCB2
YWx1ZS5nZXQoKSk7CkBAIC0zMDcsMTkgKzMwNywxOSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9B
bAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAg
ICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRv
QWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6RUNEU0E6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNE
SDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9B
bGdvcml0aG1FY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJy
b3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtE
RjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBP
cGVyYXRpb25zOjpVbndyYXBLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAt
MzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFt
cyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4oc3RhdGUs
IHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4
Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFy
YW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0zNTQsMTIgKzM1NCwxMiBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVy
Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBo
YXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtNTIwLDE2ICs1MjAsMTYgQEAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcm9zc1Ro
cmVhZENvcHlJbXBvcnRQYXJhbXMoY28KIHsKICAgICBzd2l0Y2ggKGltcG9ydFBhcmFtcy5wYXJh
bWV0ZXJzQ2xhc3MoKSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xh
c3M6Ok5vbmU6IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOwogICAgICAgICByZXN1bHQtPmlkZW50aWZp
ZXIgPSBpbXBvcnRQYXJhbXMuaWRlbnRpZmllcjsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6RWNLZXlQYXJh
bXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5
UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJh
bXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtRWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0
aG1FY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyczo6Q2xhc3M6OkhtYWNLZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShk
b3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNy
b3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBv
cnRQYXJhbXMpKSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6
UnNhSGFzaGVkSW1wb3J0UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3du
Y2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1w
b3J0UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFz
aGVkSW1wb3J0UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGRiY2NjOTAwZjMzNzQ4Y2Qy
MDY3ZjYwY2IyOTBjMGJkNjAwNjU1MzMuLmE0MmY1NjRmODFmZTFmMGVhMDk0NDNkMWYxMDUzYzFj
M2NkMGNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAK
QEAgLTIxNywxMiArMjE3LDEyIEBAIGNsYXNzIENTU0NhbGNQcmltaXRpdmVWYWx1ZSBmaW5hbCA6
IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChj
YXRlZ29yeSgpKSB7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyOgot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+
KG1fdmFsdWUtPmZsb2F0VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKICAgICAgICAgY2Fz
ZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVM
ZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1
ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkp
OwogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6CiAgICAgICAgIGNh
c2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudExlbmd0aDogewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZl
cnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252
ZXJzaW9uRGF0YSkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Np
b25MZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8
IFBlcmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAgICAgICB9CiAgICAgICAg
IC8vIE9ubHkgdHlwZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVuZ3RoIGV4cHJlc3Npb24g
Y2FuIGJlIGNvbnZlcnRlZAogICAgICAgICAvLyB0byBhIENhbGNFeHByZXNzaW9uTm9kZS4gQ2Fs
Y3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudE51bWJlciBtYWtlcyBubyBzZW5zZSBhcyBhIExlbmd0
aC4KQEAgLTUyMCw3ICs1MjAsNyBAQCBjbGFzcyBDU1NDYWxjT3BlcmF0aW9uIGZpbmFsIDogcHVi
bGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICBub2Rlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShub2RlKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25P
cGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJh
dG9yKTsKICAgICB9CiAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBmaW5hbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAppbmRleCBjNDRjZWJj
NTEyMGVkODMyNmQ5YTFiMmE2NTZiOTM2N2I2ZTE5MTI4Li5lNWFlOGI3N2E1MTRmMDljM2I0OTQ0
MWI1NjJmNWMyYTFlYzc1MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0
eWxlU2hlZXRzLmNwcApAQCAtMTY3LDExICsxNjcsMTEgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVT
aGVldHM6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICAgICAgc2ltcGxlRGVmYXVsdFN0eWxl
U2hlZXQgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghZGVmYXVsdFN0
eWxlKTsKLSAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxl
U2V0PigpLnJlbGVhc2UoKTsKKyAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1
ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwotICAgIGRlZmF1bHRQcmludFN0eWxl
ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5
bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQcmludFN0
eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICBtZWRpYVF1ZXJ5U3R5
bGVTaGVldCA9ICZTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFVB
U2hlZXRNb2RlKSkubGVha1JlZigpOwogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCkBAIC0x
OTAsMTAgKzE5MCwxMCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURl
ZmF1bHRTdHlsZSgpCiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwogICAgIEFTU0VSVCghc2lt
cGxlRGVmYXVsdFN0eWxlU2hlZXQpOwogCi0gICAgZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVl
PFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIC8vIFRoZXJlIGFyZSBubyBtZWRpYS1zcGVjaWZp
YyBydWxlcyBpbiB0aGUgc2ltcGxlIGRlZmF1bHQgc3R5bGUuCiAgICAgZGVmYXVsdFByaW50U3R5
bGUgPSBkZWZhdWx0U3R5bGU7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBtYWtl
VW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hl
ZXQgPSBwYXJzZVVBU2hlZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwgc3RybGVuKHNpbXBs
ZVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KCpzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuY3BwCmluZGV4IDc3MDliNWRlYWZiZmU5ZjlhYjExYWMwNzdjNjE5ZDc5NGQx
NjQyZjIuLjY0NmMxNGExMWFjNjQ1Yjk5MjYxNDlmMjllOTgwMGM0YzcyNjdiY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgQ1NTRm9udEZh
Y2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNy
Y0xpc3QsIERvCiAgICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0Zv
bnQgfHwgKHNldHRpbmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJs
ZWQoKSk7CiAgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9y
dGVkRm9ybWF0KCkgJiYgZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoQ2FjaGVkRm9u
dCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwgZm91bmRTVkdGb250LCBp
c0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAgICAgICAgICAgICAg
ICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZh
Y2UsIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAgICAgICAgICAgICAgIHNv
dXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291
cmNlKCksIGNhY2hlZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRG
YWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxlbWVudCk7CisgICAgICAg
ICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRl
bS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwogCiAgICAgICAgIGlmIChz
b3VyY2UpCiAgICAgICAgICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggMDVlM2EzZjZlMjFiYzky
ODE3ODU1NjlhMTRhYTUwZmY1MmU0YTI3MC4uMThlODM0ZDY5MGE2ZWI1MTAxZGM5MGM4ZGU1ZGI1
ZTdhMWIwYzVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0xMTks
NyArMTE5LDcgQEAgdm9pZCBDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JG
YW1pbHlSZWdpc3RlcmVkKGNvbnN0IFN0cmluZyYgZmFtaWwKICAgICAgICAgZmFtaWx5TGlzdC0+
YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhbWlseVZhbHVlKGZh
bWlseU5hbWUpKTsKICAgICAgICAgZmFjZS0+c2V0RmFtaWxpZXMoZmFtaWx5TGlzdC5nZXQoKSk7
CiAgICAgICAgIGZhY2UtPnNldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMoaXRlbSk7Ci0gICAg
ICAgIGZhY2UtPmFkb3B0U291cmNlKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+
KGZhY2UuZ2V0KCksIGZhbWlseU5hbWUpKTsKKyAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2UobWFr
ZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOwogICAg
ICAgICBBU1NFUlQoIWZhY2UtPmNvbXB1dGVGYWlsdXJlU3RhdGUoKSk7CiAgICAgICAgIGZhY2Vz
LmFwcGVuZChXVEZNb3ZlKGZhY2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGlu
Z1J1bGUuY3BwCmluZGV4IGRlNmYzOWQzZjVkODczMWQ5OWU1ZWIzYzk2OGUyOWFkMWVhY2JmZTYu
LmM2YzVjMzk1NDBhNWM1MDVjZGY0ZDU5Yzc0NmMzOTE4NWM5ZTAzYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQ1NTUnVsZSogQ1NT
R3JvdXBpbmdSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENT
U0dyb3VwaW5nUnVsZTo6Y3NzUnVsZXMoKSBjb25zdAogewogICAgIGlmICghbV9ydWxlTGlzdENT
U09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91
bmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3Jv
dXBpbmdSdWxlJj4oKnRoaXMpKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1h
a2VVbmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NT
R3JvdXBpbmdSdWxlJj4oKnRoaXMpKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NPTVdyYXBw
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cAppbmRleCBmZmRkM2QwYWE2NTdmMjVlYWYzMWQ1NzBjNTg2OGVkNTMwOWUyZWZkLi41NTUxZjJj
NjkxN2QwMzMwNzI2YWNkZjgxMDkxYTkxZmFiNGUwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgR2VuZXJh
dGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZEltYWdlRm9yU2l6ZShGbG9h
dFNpemUgc2l6ZSkKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdl
Rm9yU2l6ZShGbG9hdFNpemUgc2l6ZSwgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKQogewogICAgIEFT
U0VSVCghbV9pbWFnZXMuY29udGFpbnMoc2l6ZSkpOwotICAgIG1faW1hZ2VzLmFkZChzaXplLCBz
dGQ6Om1ha2VfdW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2Up
KTsKKyAgICBtX2ltYWdlcy5hZGQoc2l6ZSwgbWFrZVVuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFn
ZT4oKnRoaXMsIHNpemUsIGltYWdlKSk7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZTo6ZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUgc2l6ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCBjOTA5ODMyZGEwZTUxOTAyNTM1MTNhMzk4
MzE5MWE3YzJmMzkzMDA1Li42ZjFlYjMzODZkOWZiYzcyZDQ0Mzc4NWQxZDE5YzRkZDhjNWMzN2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0yMjAsNyArMjIw
LDcgQEAgQ1NTS2V5ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKCkKIHsK
ICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NP
TVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNS
dWxlPj4oKnRoaXMpOworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1
ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmNwcAppbmRleCA0ODBhODk4NTIzN2FkYTkwYTExNzhlMGIyNzllMGU2NjgwN2UzMzQxLi5jODhk
MWVkYzkzYjdhNmM4M2YyMTc3YmFjNzY3ZjliNzgyZWU3NThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBD
U1NTdHlsZVNoZWV0Ojpjc3NSdWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0g
ICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlU2hl
ZXRDU1NSdWxlTGlzdD4odGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBt
YWtlVW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CiAgICAgcmV0dXJuIG1fcnVs
ZUxpc3RDU1NPTVdyYXBwZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1Bh
aW50V29ya2xldC5jcHAKaW5kZXggNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0
YzA3MC4uOTE0YmRlNGEyZGU5YWEyMTA2YzAxMDYzYjgwOGQ5Y2E0ZmZmNmRiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRE9N
Q1NTUGFpbnRXb3JrbGV0KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNl
JiBjc3MpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1BhaW50
V29ya2xldCo+KFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVt
ZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3MpOworICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1BhaW50V29ya2xldD4o
Y3NzKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbygmY3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0
b21Qcm9wZXJ0eS5jcHAKaW5kZXggN2VjZDkzZDdkYzNkNDMyZWFmODJiYzk1NmU2MWQ0ODlhNTEw
NjI1Yi4uMGRmNmFhZTk2ZjBlMWM3MGIzNzU1NjE2NDllZTM1ZDI4ZWI0YzM5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcApA
QCAtODQsNyArODQsNyBAQCBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5KiBET01DU1NSZWdp
c3RlckN1c3RvbVByb3BlcnR5Ojpmcm9tKERPTUNTU05hbWVzcGFjZQogewogICAgIGF1dG8qIHN1
cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Kj4oU3Vw
cGxlbWVudDxET01DU1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1lKCkpKTsK
ICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJv
cGVydHk+KGNzcyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwog
ICAgICAgICBwcm92aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50
UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCmlu
ZGV4IGQ4NTk2ZmQxYjI0NTlkZTA3ZTFjODk5Y2MwNzlmYzE5ODUxMTY1ZTkuLjgyYjdmY2MzMGU1
ODI3NDk5MjAyZTI4YjgzMDg2Y2YwZmE0NGFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1l
bnRSdWxlU2V0cy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBEb2N1bWVudFJ1bGVTZXRzOjpz
X2lzSW52YWxpZGF0aW5nU3R5bGVXaXRoUnVsZVNldHMgeyBmYWxzZSB9OwogRG9jdW1lbnRSdWxl
U2V0czo6RG9jdW1lbnRSdWxlU2V0cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAg
IDogbV9zdHlsZVJlc29sdmVyKHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgbV9hdXRob3JTdHlsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFrZVVu
aXF1ZTxSdWxlU2V0PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9G
aXQoKTsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OnVwZGF0
ZVVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZUlmTmVlZGVkKCkgY29uc3QKIAogICAgIC8vIE1lZGlh
IHF1ZXJpZXMgb24gdXNlciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRlZCBpbiBkb2N1bWVu
dCBjb250ZXh0LiBUaGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4gdGhpcyByZXNwZWN0
LgogICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFR
dWVyeUV2YWx1YXRvcigpOwotICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0g
bWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlLT5h
ZGRSdWxlc0Zyb21TaGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRpYVF1ZXJ5U3R5bGVT
aGVldCwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAKICAgICAvLyBW
aWV3cG9ydCBkZXBlbmRlbnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBpbmVmZmljaWVudCB0
byBhbGxvdyBvbiBVQSBzaGVldC4KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVT
ZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKIHsKICAgICBhdXRvJiBleHRlbnNpb25TdHlsZVNo
ZWV0cyA9IG1fc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hlZXRzKCk7
CiAgICAgYXV0byYgbWVkaWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1
ZXJ5RXZhbHVhdG9yKCk7Ci0gICAgYXV0byB0ZW1wVXNlclN0eWxlID0gc3RkOjptYWtlX3VuaXF1
ZTxSdWxlU2V0PigpOworICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNl
dD4oKTsKICAgICBpZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0
eWxlU2hlZXRzLnBhZ2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVs
ZXNGcm9tU2hlZXQocGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbWVkaWFRdWVyeUV2YWx1YXRv
ciwgJm1fc3R5bGVSZXNvbHZlcik7CiAgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0
cyhleHRlbnNpb25TdHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLCAqdGVtcFVz
ZXJTdHlsZSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29sdmVyKTsKQEAgLTExOCw3
ICsxMTgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNv
bnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogICAgIHNpemVfdCBzaXplID0gcnVsZXMu
c2l6ZSgpOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0
byBydWxlU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8gcnVsZVNl
dCA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkKICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBydWxlc1tp
XS5zZWxlY3RvckluZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgcnVsZVNl
dC0+c2hyaW5rVG9GaXQoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVz
KQogdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2lz
QXV0aG9yU3R5bGVEZWZpbmVkID0gdHJ1ZTsKLSAgICBtX2F1dGhvclN0eWxlID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVT
ZXQ+KCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwogfQog
CkBAIC0xOTUsMTIgKzE5NSwxMiBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJgogICAgICAgICAg
ICAgYXV0byBhcnJheUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpmZWF0dXJlLm1hdGNo
RWxlbWVudCk7CiAgICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50QXJyYXlb
YXJyYXlJbmRleF07CiAgICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCi0gICAgICAgICAgICAgICAg
cnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICAgICAgICAgICAgICBy
dWxlU2V0ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgICAgICAgICAgcnVsZVNldC0+YWRk
UnVsZShmZWF0dXJlLnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rv
ckxpc3RJbmRleCk7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3Rv
cikKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2FycmF5SW5kZXhd
LmFwcGVuZChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAgfQotICAgICAg
ICBhdXRvIGludmFsaWRhdGlvblJ1bGVTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8SW52
YWxpZGF0aW9uUnVsZVNldD4+KCk7CisgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMg
PSBtYWtlVW5pcXVlPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKTsgKytpKSB7CiAg
ICAgICAgICAgICBpZiAobWF0Y2hFbGVtZW50QXJyYXlbaV0pCiAgICAgICAgICAgICAgICAgaW52
YWxpZGF0aW9uUnVsZVNldHMtPmFwcGVuZCh7IHN0YXRpY19jYXN0PE1hdGNoRWxlbWVudD4oaSks
IFdURk1vdmUobWF0Y2hFbGVtZW50QXJyYXlbaV0pLCBXVEZNb3ZlKGludmFsaWRhdGlvblNlbGVj
dG9yQXJyYXlbaV0pIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRS
dWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5jcHAKaW5kZXggMDVkMzg1YTU1OGM0OGM0OGVlOGRhOTBmNmExOGNiNGU3NWE2YTk1YS4uMDVi
NDU3ZmQ2ODIwYzY3ZjBlMGZiZTkzMDg3YjhjZWYwODI5ZWJhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6
Y29sbGVjdFNsb3R0ZWRQc2UKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBydWxlRGF0YVZlY3RvciA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CisgICAgYXV0byBydWxlRGF0YVZlY3Rv
ciA9IG1ha2VVbmlxdWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZURhdGFW
ZWN0b3ItPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkUnVsZXMuc2l6ZSgpKTsKICAg
ICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMpCiAgICAgICAgIHJ1bGVE
YXRhVmVjdG9yLT51bmNoZWNrZWRBcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuY3BwCmluZGV4IDIxMjI0NWRlZGNhZmY5NTZhZDQ0MTA3YjllYjQ0Y2I0MTMy
OGFhZGIuLmUxYjFhZjIwZmIxMWFlM2RmZWUxOTJjYWM5MmU2MmNkZWE1NTdkYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBib29sIHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NTRm9udEZhY2Um
IGZvbnRGYWNlLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJWaWV3KQog
ewotICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4o
Zm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVy
VmlldykpOworICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4o
Zm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVy
VmlldykpOwogICAgIGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzYjIwZDQxMzMzNzUzM2Q2Y2IzYzU4Y2Iz
ZDEwNGYwZjA0YjVlNjE5Li5lMWUxZDcyMTIxMWU2ZGUwMWE4YTg2ZTBkNDBkODUyODk5N2IzNTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01W
YWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENT
CiAgICAgLy8gVGhlIG1hcCBpcyBoZXJlIHRvIG1haW50YWluIHRoZSBvYmplY3QgaWRlbnRpdHkg
b2YgdGhlIENTU1ZhbHVlcyBvdmVyIG11bHRpcGxlIGludm9jYXRpb25zLgogICAgIC8vIEZJWE1F
OiBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgaWRlbnRpdHkgaXMgbm90IGltcG9ydGFudCBmb3Igd2Vi
IGNvbXBhdGliaWxpdHkgYW5kIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZC4KICAgICBpZiAo
IW1fY3Nzb21WYWx1ZVdyYXBwZXJzKQotICAgICAgICBtX2Nzc29tVmFsdWVXcmFwcGVycyA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRlZENTU09N
VmFsdWU+Pj4oKTsKKyAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEhh
c2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CiAgICAg
CiAgICAgYXV0byYgY2xvbmVkVmFsdWUgPSBtX2Nzc29tVmFsdWVXcmFwcGVycy0+YWRkKGludGVy
bmFsVmFsdWUsIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+KCkpLml0ZXJhdG9yLT52YWx1
ZTsKICAgICBpZiAoY2xvbmVkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRl
eCBkZmZkYTZmNTFkZjk1NGQyMDZmMDNkMGM3MzU2MGRkYTM5MmQxNDMwLi40NGVlYjFkNzAyZDJm
OWRjYjZiMTJiNTUyNzgxNTY3ZmQwMGQyZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5j
cHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVy
ZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogCiAgICAgZm9yIChhdXRvJiBuYW1lQW5kTWF0
Y2ggOiBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1
cmUobmFtZUFuZE1hdGNoLmZpcnN0LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3Rvcklu
ZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQp
KTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0
KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVBbmRNYXRjaC5maXJz
dCk7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1
cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0byogc2VsZWN0b3IgPSBz
ZWxlY3RvckFuZE1hdGNoLmZpcnN0OwogICAgICAgICBhdXRvIG1hdGNoRWxlbWVudCA9IHNlbGVj
dG9yQW5kTWF0Y2guc2Vjb25kOwogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoc2VsZWN0
b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIFtd
IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVy
ZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+
PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxl
RGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JM
aXN0SW5kZXgoKSwgbWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOwogICAgICAgICBpZiAobWF0Y2hF
bGVtZW50ID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXNBZmZl
Y3RpbmdIb3N0LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBAQCB2b2lkIFJ1bGVGZWF0dXJl
U2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIHVuY29tbW9uQXR0cmli
dXRlUnVsZXMuYXBwZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogICAg
IGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxlcykgewogICAgICAgICBj
bGFzc1J1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQog
ICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5i
ZWdpbigpLCBvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CiAKICAgICBmb3IgKGF1
dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLmF0dHJpYnV0ZVJ1bGVzKSB7CiAgICAgICAgIGF0dHJp
YnV0ZVJ1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQog
ICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5n
SG9zdC5iZWdpbigpLCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5jcHAKaW5kZXggZmE2YjkxMjAyMTNlYzU0YmI2NTkwM2NmYWU2NjliZDQ2NmZi
YjAyNy4uM2JiYmJmZWJjYTAwOTk3ODJhZjM5ODFlYjg2NzM2Y2U2ODAzNmVkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxl
U2V0KGNvbnN0IEF0b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURh
CiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFydWxlcykKLSAgICAgICAgcnVsZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1bGVEYXRhVmVjdG9yPigpOworICAgICAgICBydWxlcyA9IG1ha2VVbmlx
dWU8UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZXMtPmFwcGVuZChydWxlRGF0YSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA2OWFmNTU4
MTU2NTRiZTMyMGYxYTlmZDcxYTc3NjY3ZDkyOTNmYTk3Li44ODc3NWFkN2JhOGFhNTkwYWQ3YmY3
MmEzN2QzYjVmNjViNWQyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oCkBAIC0zNDgsOSArMzQ4LDkgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgKICAg
ICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3Ro
KQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3Ro
czsKICAgICBsZW5ndGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51
bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVu
Z3RoKDEwMCwgUGVyY2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0g
c3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhz
KSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQo
bWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsK
KyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVu
Z3RoPihsZW5ndGgpKTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9w
ZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAg
cmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVl
UmFuZ2VBbGwpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmlu
ZGV4IDlhMTkxZDE3ZGQ4ZTNlZGNjMWMxMzBjMjY1OTBlMGNhNmY0ZTM2YTMuLmM1YzJiZjVkMGY1
ZmM3OTEwYWZmMTYyNTk5OTBjNDM4NjYwYzE0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmgKQEAgLTgxMyw3ICs4MTMsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZh
bHVlKCpzaGFkb3dWYWx1ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9y
ID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICBhdXRvIHNoYWRvd0Rh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBz
cHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRv
dywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAg
ICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkp
LCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtp
dEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQp
OwogICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQogICAgICAg
ICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93
RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3Qg
dGhlIGZpcnN0IGVudHJ5CiAgICAgICAgIGVsc2UKQEAgLTgyOSw3ICs4MjksNyBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3coU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbAogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5oZXJpdFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT50ZXh0U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT50ZXh0U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29s
dmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dFNoYWRvdyhTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC04NDQsNyArODQ0LDcgQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxCb3hTaGFkb3coU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseUluaGVyaXRCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsK
LSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPmJveFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigq
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKKyAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVu
dFN0eWxlKCktPmJveFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNv
bHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQm94U2hhZG93KFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEzNTksNyArMTM1OSw3IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxl
SWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAo
bGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHls
ZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1Zh
bHVlRGlzYyk7Ci0gICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
dW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwg
Y291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBt
YWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlz
dFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CiAgICAgICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsK
ICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDRjZjZjNmY3YWI3ZGY5ZmMwNDMzNGJiZThk
ZDA1YTNiNTU5ZTkzNWMuLjE5Y2IwMzNkNzBiYjVhODk2ODY1NTcyNzU1Yjk2Yjk3NzA1MWNiNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0xNTMwLDcgKzE1MzAs
NyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVD
U1NTdHlsZURlY2xhcmF0aW9uKCkKICAgICAgICAgQVNTRVJUKCFtX2Nzc29tV3JhcHBlci0+cGFy
ZW50RWxlbWVudCgpKTsKICAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0g
ICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbj4oKnRoaXMpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVuaXF1ZTxQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3Nzb21X
cmFwcGVyOwogfQogCkBAIC0xNTQwLDcgKzE1NDAsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0
eQogICAgICAgICBBU1NFUlQobV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSA9PSAmcGFy
ZW50RWxlbWVudCk7CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQotICAg
IG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0
aW9uPigqdGhpcywgcGFyZW50RWxlbWVudCk7CisgICAgbV9jc3NvbVdyYXBwZXIgPSBtYWtlVW5p
cXVlPElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKICAg
ICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKaW5kZXggM2E1MmMzNjE5OWE3OWEyNWUwOWMwMWQ4ZmEwYzUwYWVmZjY4MmJiNS4uZGU0
ZGE1ZjU1MTI5OTA5MzFkYTg2YzVjN2U4M2JjYjEwMTgwOGJjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcApAQCAtMTcxNSw3ICsxNzE1LDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2Fz
Y2FkZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xs
YmFjaygKICAgICAgICAgaWYgKGF1dGhvclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIGF1
dGhvclJvbGxiYWNrOwogCi0gICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2soc3RkOjptYWtl
X3VuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKKyAg
ICAgICAgYXV0byBuZXdBdXRob3JSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGll
cz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCBy
b2xsYmFjayBjYXNjYWRlIGNvbnRhaW5zIFVBIHJ1bGVzIGFuZCB1c2VyIHJ1bGVzIGJ1dCBubyBh
dXRob3IgcnVsZXMuCiAgICAgICAgIG5ld0F1dGhvclJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVz
KG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0
LnJhbmdlcy5sYXN0VUFSdWxlLCBmYWxzZSk7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBTdHlsZVJl
c29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVy
dGllc0ZvclJvbGxiYWNrKAogICAgICAgICBpZiAodXNlclJvbGxiYWNrKQogICAgICAgICAgICAg
cmV0dXJuIHVzZXJSb2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhzdGQ6
Om1ha2VfdW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkp
OworICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVy
dGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lh
bCByb2xsYmFjayBjYXNjYWRlIGNvbnRhaW5zIG9ubHkgVUEgcnVsZXMuCiAgICAgICAgIG5ld1Vz
ZXJSb2xsYmFjay0+YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFu
Z2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNv
cmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDk5N2M0YzAzNjdkZDVkMGQ2NDVkNWVkZjUxZWVjNGJm
YjBjMzIxMDUuLjAyYTM2ZWZlMDVkM2NjOWZlOTdkZDVjMGUyNTkzYWU3OWZkNmMyYzYgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvbWFrZXByb3AucGwKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5
ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiRmlsbExheWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiZm9yIChhdXRvKiBwYXJlbnQgPSAmc3R5bGVSZXNvbHZlci5w
YXJlbnRTdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBwYXJlbnQg
JiYgcGFyZW50LT4iIC4gJHRlc3RGdW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50LT5uZXh0
KCkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmICghY2hpbGQp
IHtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0No
aWxkLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVy
VHlwZSgkbmFtZSkgLiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAg
ICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4oIiAuIGdl
dEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgfVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgY2hpbGQtPiIgLiAkc2V0dGVyIC4gIihwYXJlbnQtPiIgLiAkZ2V0dGVy
IC4gIigpKTtcbiI7CkBAIC04MzcsNyArODM3LDcgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJv
cGVydHlWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIC8v
IFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxh
eWVycyBhcyBuZWVkZWQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBm
b3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkge1xuIjsKICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIGlmICghY2hpbGQpIHtcbiI7Ci0g
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+
c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUo
JG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAg
ICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExheWVyPigiIC4gZ2V0
RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIiAgICAgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIH1cbiI7CiAgICRzZXR0ZXJDb250
ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlTWFwKCktPiIgLiBn
ZXRGaWxsTGF5ZXJNYXBmdW5jdGlvbigkbmFtZSkgLiAiKCIgLiAkQ1NTUHJvcGVydHlJZCAuICIs
ICpjaGlsZCwgaXRlbSk7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
SW1wbC5jcHAKaW5kZXggNjdjZmRmNTZkNjI1MDUzYTAxMTE5OTJkNzExZjhjOGZmZGI5NWRjMi4u
ZDc1ZTRmYzkyYzc3YjA3YjFlNTNkYWQzMzg3ZTU1MWEzOTBjMjViOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1Bh
cnNlckltcGw6OkNTU1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBzdHJpCiAgICAgLCBtX3N0eWxlU2hlZXQoc3R5bGVTaGVldCkKICAgICAs
IG1fb2JzZXJ2ZXJXcmFwcGVyKHdyYXBwZXIpCiB7Ci0gICAgbV90b2tlbml6ZXIgPSB3cmFwcGVy
ID8gc3RkOjptYWtlX3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogc3Rk
OjptYWtlX3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CisgICAgbV90b2tlbml6ZXIgPSB3
cmFwcGVyID8gbWFrZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogbWFr
ZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CiAgICAgaWYgKGNvbnRleHQuZGVmZXJyZWRD
U1NQYXJzZXJFbmFibGVkICYmICF3cmFwcGVyICYmIHN0eWxlU2hlZXQgJiYgcnVsZVBhcnNpbmcg
PT0gQ1NTUGFyc2VyOjpSdWxlUGFyc2luZzo6RGVmZXJyZWQpCiAgICAgICAgIG1fZGVmZXJyZWRQ
YXJzZXIgPSBDU1NEZWZlcnJlZFBhcnNlcjo6Y3JlYXRlKGNvbnRleHQsIHN0cmluZywgKnN0eWxl
U2hlZXQpOwogfQpAQCAtMjgyLDkgKzI4Miw5IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJzZXJJ
bXBsOjpwYXJzZVBhZ2VTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsCiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yOwogICAgIGlm
ICghdHlwZVNlbGVjdG9yLmlzTnVsbCgpICYmIHBzZXVkby5pc051bGwoKSkKLSAgICAgICAgc2Vs
ZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1l
KG51bGxBdG9tKCksIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgp
KSk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oUXVh
bGlmaWVkTmFtZShudWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1bHRO
YW1lc3BhY2UoKSkpOwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1
ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgaWYgKCFwc2V1ZG8uaXNOdWxsKCkpIHsK
ICAgICAgICAgICAgIHNlbGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9y
PihDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IocHNldWRvKSk7CiAg
ICAgICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9yLT5tYXRjaCgpICE9IENTU1NlbGVj
dG9yOjpQYWdlUHNldWRvQ2xhc3MpCkBAIC01MzUsNyArNTM1LDcgQEAgUmVmUHRyPFN0eWxlUnVs
ZU5hbWVzcGFjZT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU5hbWVzcGFjZVJ1bGUoQ1NTUGFyc2Vy
VG9rZW5SYW4KIFJlZlB0cjxTdHlsZVJ1bGVNZWRpYT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU1l
ZGlhUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2Ug
YmxvY2spCiB7CiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHls
ZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChw
cmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVs
bCgpLCAgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ss
ICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6Y3Jl
YXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRpYVF1
ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgbWFrZVVuaXF1
ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7
CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKIApAQCAtNTYzLDcg
KzU2Myw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVTdXBwb3J0cz4gQ1NTUGFyc2VySW1wbDo6Y29uc3Vt
ZVN1cHBvcnRzUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlCiAgICAgICAgIHJldHVybiBudWxscHRy
OyAvLyBQYXJzZSBlcnJvciwgaW52YWxpZCBAc3VwcG9ydHMgY29uZGl0aW9uCiAKICAgICBpZiAo
bV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVh
dGUocHJlbHVkZS5zZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBzdGQ6
Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJy
ZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJl
bHVkZS5zZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBtYWtlVW5pcXVl
PERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsK
IAogICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBl
ci0+b2JzZXJ2ZXIoKS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpTdXBwb3J0cywgbV9vYnNl
cnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBS
ZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5ZnJhbWVz
UnVsZShib29sIHdlYmtpdFByZWZpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2Ug
ZXJyb3I7IGV4cGVjdGVkIGlkZW50IHRva2VuIGluIEBrZXlmcmFtZXMgaGVhZGVyCiAKICAgICBp
ZiAobV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6
Y3JlYXRlKG5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+
KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlS2V5
ZnJhbWVzOjpjcmVhdGUobmFtZSwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlz
dD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBw
ZXIpIHsKICAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVh
ZGVyKFN0eWxlUnVsZTo6S2V5ZnJhbWVzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZzZXQo
cmFuZ2VDb3B5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlclNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2Vs
ZWN0b3IuY3BwCmluZGV4IDRkYmVmNDA1OGM3MTYyY2Q5NjQ2ZWE3NjRkY2JiOWJiY2YzMWU0NTku
LmEwODcwZDM3NjJjZWE0MmY1YjVlYWJkMDVlYTc0NGYyZDlkNmIzNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6
OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKFN0CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOworICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVj
dG9yPigpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6
UGFnZVBzZXVkb0NsYXNzKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UGFnZVBzZXVk
b1R5cGUocHNldWRvVHlwZSk7CiAgICAgcmV0dXJuIHNlbGVjdG9yOwpAQCAtNjMsNyArNjMsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpw
YXJzZVBzZXVkb0VsZW1lbnRTZWxlY3RvcgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2Vs
ZWN0b3I+KCk7CisgICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0
b3I+KCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQ
c2V1ZG9FbGVtZW50KTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVu
dFR5cGUocHNldWRvVHlwZSk7CiAgICAgQXRvbVN0cmluZyBuYW1lOwpAQCAtODQsMTMgKzg0LDEz
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6
OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3RvcihTCiB7CiAgICAgYXV0byBwc2V1ZG9UeXBlID0gcGFy
c2VQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50U3RyaW5nKHBzZXVkb1R5cGVTdHJp
bmcpOwogICAgIGlmIChwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzICE9IENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzc1Vua25vd24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKICAgICAgICAgc2VsZWN0b3ItPm1f
c2VsZWN0b3ItPnNldFBzZXVkb0NsYXNzVHlwZShwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzKTsKICAg
ICAgICAgcmV0dXJuIHNlbGVjdG9yOwogICAgIH0KICAgICBpZiAocHNldWRvVHlwZS5jb21wYXRp
YmlsaXR5UHNldWRvRWxlbWVudCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd24p
IHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2Vs
ZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNl
bGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0
UHNldWRvRWxlbWVudFR5cGUocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCk7
CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRWYWx1ZShwc2V1ZG9UeXBlU3RyaW5n
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwpAQCAtMTAwLDEyICsxMDAsMTIgQEAgc3RkOjp1
bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1
ZG9DbGFzc1NlbGVjdG9yKFMKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVj
dG9yKCkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkK
KyAgICA6IG1fc2VsZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKIHsKIH0KIAogQ1NT
UGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z1FOYW1lKQotICAgIDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0
YWdRTmFtZSkpCisgICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FO
YW1lKSkKIHsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIENTU1BhcnNlclNlbGVjdG9yOjp+Q1NT
UGFyc2VyU2VsZWN0b3IoKQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9y
VmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiYmIHNlbGVj
dG9yVmVjdG9yKQogewotICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChzdGQ6Om1ha2Vf
dW5pcXVlPENTU1NlbGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsKKyAgICBt
X3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxpc3QobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdU
Rk1vdmUoc2VsZWN0b3JWZWN0b3IpKSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnNl
dExhbmdBcmd1bWVudExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9tU3RyaW5nPj4gYXJn
dW1lbnRMaXN0KQpAQCAtMjA5LDEyICsyMDksMTIgQEAgdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6
YXBwZW5kVGFnSGlzdG9yeShDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3IgcmVsYXRpb24sIHMK
IAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ1FOYW1lLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKIHsKLSAgICBh
dXRvIHNlY29uZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAg
YXV0byBzZWNvbmQgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlY29u
ZC0+bV9zZWxlY3RvciA9IFdURk1vdmUobV9zZWxlY3Rvcik7CiAgICAgc2Vjb25kLT5tX3RhZ0hp
c3RvcnkgPSBXVEZNb3ZlKG1fdGFnSGlzdG9yeSk7CiAgICAgbV90YWdIaXN0b3J5ID0gV1RGTW92
ZShzZWNvbmQpOwogCi0gICAgbV9zZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0
b3I+KHRhZ1FOYW1lLCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOworICAgIG1fc2VsZWN0b3IgPSBt
YWtlVW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsK
ICAgICBtX3NlbGVjdG9yLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CmluZGV4IDQ4OGU2MDIzZjIwMDI0YWZmZWY4NjE3YTUxNGM0MDliZjQ5ZDFlZjMuLjcwOGVjNzc3
M2MxOGQ2ZTA4ZTAwMWNhZmEzZDI4YzgwZDlmODcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBz
dGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncwogICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gU3Ry
aW5nVG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gYnl0ZVN0
cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CisgICAgYXV0byBi
eXRlU3RyZWFtID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBpZiAoIWJ1
aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCksICpieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5n
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4IDZiM2FjYzg1ZTZmYzVlNWNiYjk1
YWI5ZmUxYTZjN2NhOWVmODEwNDcuLmYzMzIzYjIyNmI0YjAxMDBjOTgzYzQ4NjYzNzVmMWU2NTdi
MTczOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJz
ZXIuY3BwCkBAIC01NjQsNyArNTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPiBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyhDU1NQYXJzZXJUb2sKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhbmc6IHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBDU1MgU2VsZWN0b3JzIExldmVsIDQgYWxsb3dzIDpsYW5nKCotZm9v
KQotICAgICAgICAgICAgYXV0byBhcmd1bWVudExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxBdG9tU3RyaW5nPj4oKTsKKyAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gbWFrZVVu
aXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+KCk7CiAgICAgICAgICAgICBpZiAoIWNvbnN1bWVMYW5n
QXJndW1lbnRMaXN0KGFyZ3VtZW50TGlzdCwgYmxvY2spKQogICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICAgICAgc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RG
TW92ZShhcmd1bWVudExpc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUuY3BwCmluZGV4IDllYjVkN2U0OWY1NmExZTk4ZDFmYmI5YjIzZTZl
YTcyZTIyNjE1OGYuLjg4MTE3ZjE5ZTRiMjZiYTI1YmZmMjVhODU1OTE3MzJiYjdhM2U3ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNw
cApAQCAtMzM0LDcgKzMzNCw3IEBAIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjpFbGVtZW50
UXVldWUmIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVCYWNrCiB7CiAgICAgaWYg
KCFzX3Byb2Nlc3NpbmdCYWNrdXBFbGVtZW50UXVldWUpIHsKICAgICAgICAgc19wcm9jZXNzaW5n
QmFja3VwRWxlbWVudFF1ZXVlID0gdHJ1ZTsKLSAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5U
aHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJhY2t1cEVsZW1lbnRRdWV1ZU1p
Y3JvdGFzaz4oKSk7CisgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5h
cHBlbmQobWFrZVVuaXF1ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOwogICAgIH0K
ICAgICByZXR1cm4gYmFja3VwRWxlbWVudFF1ZXVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuY3BwCmluZGV4IGU3OTNmMjBkOTMxYmY4NGM4NWZhYjlhZDI0ZjgzZmU4YTQ4YTJmMWQu
LmQzYWY3MGZiOGJhMzM2YmZhNjE4YmY5YzEyNTZiMTA3ZDlkMjVhYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6
OmRpZEFkZEZpbGVUb0l0ZW1MaXN0KCkKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNm
ZXI6Oml0ZW1zKCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAg
IG1faXRlbUxpc3QgPSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2l0ZW1MaXN0OwogfQogCkBAIC00MTYsNyArNDE2LDcgQEAgYm9vbCBEYXRh
VHJhbnNmZXI6Omhhc1N0cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFJlZjxEYXRh
VHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0bWxU
ZXh0KQogewotICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFz
dGVib2FyZD4oKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3Rl
Ym9hcmQ+KCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBs
YWluVGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRt
bFRleHQpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwg
U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRFdmVu
dCkpOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFJlZjxEYXRhVHJhbnNm
ZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRh
VHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVl
PFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAgIGF1dG8g
ZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3Jl
TW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRy
YWdBbmREcm9wRGF0YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0g
ZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0
YVRyYW5zZmVyOwogfQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXRE
cmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgaW50IHgsIGludCB5KQogICAgIG1fZHJhZ0ltYWdl
ID0gaW1hZ2U7CiAgICAgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIGlmICghbV9kcmFnSW1h
Z2VMb2FkZXIpCi0gICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVy
ID0gbWFrZVVuaXF1ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOwogICAgICAgICBtX2RyYWdJbWFn
ZUxvYWRlci0+c3RhcnRMb2FkaW5nKG1fZHJhZ0ltYWdlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMzM2
MjIzMTA4MWIxM2Y3MmRjMThkYWM1ZjM5MDdhNWU3YzE3YjBiZi4uZjIxMTMxZmY4Mjc4MjFkYzc0
ZTg1MGE5OGYxYmIyMzA5OWUwMjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIERl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChQYWdlKiBwYWdlKQogCiB2b2lk
IHByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRvKFBhZ2UmIHBhZ2UsIERldmljZU9yaWVudGF0aW9u
Q2xpZW50JiBjbGllbnQpCiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpwcm92
aWRlVG8oJnBhZ2UsIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUo
KSwgc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkp
OworICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8RGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTJiMTQ0ZDU2N2Q3OTY2MmU5OGY3
NGJjNTFlOTI0MTE2Y2M2ZDU2Zi4uZWIwYjk3NDU1NWFkMjUzOTJlODA2NjVhNmNkMTE1MTkyNmZl
N2YyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjEsMTkgKzUyMSwxOSBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9j
dW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9xdWlya3MobWFrZVVuaXF1ZVJlZjxRdWlya3M+
KCp0aGlzKSkKICAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIobV9mcmFtZSA/IFJlZjxDYWNo
ZWRSZXNvdXJjZUxvYWRlcj4obV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSkgOiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRl
KG51bGxwdHIpKQogICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNpb24p
Ci0gICAgLCBtX3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlz
KSkKLSAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVldHMoc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNp
b25TdHlsZVNoZWV0cz4oKnRoaXMpKQotICAgICwgbV92aXNpdGVkTGlua1N0YXRlKHN0ZDo6bWFr
ZV91bmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQotICAgICwgbV9tYXJrZXJzKHN0ZDo6
bWFrZV91bmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3N0
eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fZXh0ZW5z
aW9uU3R5bGVTaGVldHMobWFrZVVuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4oKnRoaXMpKQor
ICAgICwgbV92aXNpdGVkTGlua1N0YXRlKG1ha2VVbmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRo
aXMpKQorICAgICwgbV9tYXJrZXJzKG1ha2VVbmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
PigqdGhpcykpCiAgICAgLCBtX3N0eWxlUmVjYWxjVGltZXIoW3RoaXNdIHsgdXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOyB9KQogICAgICwgbV9kb2N1bWVudENyZWF0aW9uVGltZShNb25vdG9uaWNUaW1l
Ojpub3coKSkKLSAgICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVu
bmVyPigqdGhpcykpCi0gICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlw
dE1vZHVsZUxvYWRlcj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxT
Y3JpcHRSdW5uZXI+KCp0aGlzKSkKKyAgICAsIG1fbW9kdWxlTG9hZGVyKG1ha2VVbmlxdWU8U2Ny
aXB0TW9kdWxlTG9hZGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBtX2FwcGx5
UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdY
U0xUcmFuc2Zvcm1zVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV94bWxWZXJzaW9uKCIxLjAi
X3MpCi0gICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAoc3RkOjptYWtlX3VuaXF1ZTxDb25zdGFu
dFByb3BlcnR5TWFwPigqdGhpcykpCisgICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAobWFrZVVu
aXF1ZTxDb25zdGFudFByb3BlcnR5TWFwPigqdGhpcykpCiAgICAgLCBtX2RvY3VtZW50Q2xhc3Nl
cyhkb2N1bWVudENsYXNzZXMpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQpAQCAtNTQ1LDEwICs1NDUsMTAgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3Nlcywg
dW5zaWcKICNlbmRpZgogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1l
bnQ6OmxvYWRFdmVudERlbGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCi0gICAgLCBtX2Rldmlj
ZU1vdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVy
PigqbV9kZXZpY2VNb3Rpb25DbGllbnQpKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TPigpKQotICAgICwg
bV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KSkKKyAgICAsIG1f
ZGV2aWNlTW90aW9uQ2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQor
ICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ29u
dHJvbGxlcj4oKm1fZGV2aWNlTW90aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRp
b25DbGllbnQobWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkKKyAgICAs
IG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCiAjZW5kaWYKICAgICAs
IG1fcGVuZGluZ1Rhc2tzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJG
aXJlZCkKICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRoaXMsICZEb2N1
bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKQEAgLTc1OCw3ICs3NTgs
NyBAQCBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZvckFjY2Vzc0tleShjb25zdCBTdHJpbmcm
IGtleSkKIAogdm9pZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlDYWNoZSgpCiB7Ci0gICAgbV9h
Y2Nlc3NLZXlDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQq
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PihbdGhpc10geworICAgIG1fYWNjZXNzS2V5Q2Fj
aGUgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPj4oW3RoaXNdIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDog
Y29tcG9zZWRUcmVlRGVzY2VuZGFudHMoKnRoaXMpKSB7CiAgICAgICAgICAgICBpZiAoIWlzPEVs
ZW1lbnQ+KG5vZGUpKQpAQCAtNzgzLDcgKzc4Myw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVl
cnkmPiBEb2N1bWVudDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVj
CiAgICAgaWYgKHNlbGVjdG9yU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CiAgICAgaWYgKCFtX3NlbGVjdG9yUXVlcnlDYWNoZSkKLSAg
ICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVl
cnlDYWNoZT4oKTsKKyAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBtYWtlVW5pcXVlPFNl
bGVjdG9yUXVlcnlDYWNoZT4oKTsKICAgICByZXR1cm4gbV9zZWxlY3RvclF1ZXJ5Q2FjaGUtPmFk
ZChzZWxlY3RvclN0cmluZywgKnRoaXMpOwogfQogCkBAIC04NDgsNyArODQ4LDcgQEAgdm9pZCBE
b2N1bWVudDo6cmVzZXRBY3RpdmVMaW5rQ29sb3IoKQogRE9NSW1wbGVtZW50YXRpb24mIERvY3Vt
ZW50OjppbXBsZW1lbnRhdGlvbigpCiB7CiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uKQotICAg
ICAgICBtX2ltcGxlbWVudGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxET01JbXBsZW1lbnRhdGlv
bj4oKnRoaXMpOworICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gbWFrZVVuaXF1ZTxET01JbXBs
ZW1lbnRhdGlvbj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pbXBsZW1lbnRhdGlvbjsKIH0KIApA
QCAtMTc2Myw3ICsxNzYzLDcgQEAgTm9kZTo6Tm9kZVR5cGUgRG9jdW1lbnQ6Om5vZGVUeXBlKCkg
Y29uc3QKIEZvcm1Db250cm9sbGVyJiBEb2N1bWVudDo6Zm9ybUNvbnRyb2xsZXIoKQogewogICAg
IGlmICghbV9mb3JtQ29udHJvbGxlcikKLSAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Rm9ybUNvbnRyb2xsZXI+KCk7CisgICAgICAgIG1fZm9ybUNvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPEZvcm1Db250cm9sbGVyPigpOwogICAgIHJldHVybiAqbV9mb3JtQ29udHJv
bGxlcjsKIH0KIApAQCAtMTk4OCw3ICsxOTg4LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4
dFJlbmRlcmVyKFRleHQmIHRleHQsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWRUZXh0LCB1bnMK
ICAgICBBU1NFUlQoIW1faW5SZW5kZXJUcmVlVXBkYXRlKTsKICAgICBTZXRGb3JTY29wZTxib29s
PiBpblJlbmRlclRyZWVVcGRhdGUobV9pblJlbmRlclRyZWVVcGRhdGUsIHRydWUpOwogCi0gICAg
YXV0byB0ZXh0VXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7
CisgICAgYXV0byB0ZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7
CiAgICAgdGV4dFVwZGF0ZS0+YWRkVGV4dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRUZXh0LCBs
ZW5ndGhPZlJlcGxhY2VkVGV4dCwgV1RGOjpudWxsb3B0IH0pOwogCiAgICAgUmVuZGVyVHJlZVVw
ZGF0ZXIgcmVuZGVyVHJlZVVwZGF0ZXIoKnRoaXMpOwpAQCAtMjI3MCw3ICsyMjcwLDcgQEAgdm9p
ZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50
U2l6ZSYgcGFnZVNpemUsIGludCYKIFN0eWxlUmVzb2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpCiB7CiAgICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1Ry
ZWVTdHlsZVJlc29sdmVyKQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CisgICAgICAgIG1f
dXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2
ZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2
ZXI7CiB9CiAKQEAgLTI2NzMsNyArMjY3Myw3IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3VtZW50Ojph
eE9iamVjdENhY2hlKCkgY29uc3QKIAogICAgIEFTU0VSVCgmdG9wRG9jdW1lbnQgPT0gdGhpcyB8
fCAhbV9heE9iamVjdENhY2hlKTsKICAgICBpZiAoIXRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNo
ZSkgewotICAgICAgICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFYT2JqZWN0Q2FjaGU+KHRvcERvY3VtZW50KTsKKyAgICAgICAgdG9wRG9jdW1lbnQubV9h
eE9iamVjdENhY2hlID0gbWFrZVVuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CiAg
ICAgICAgIGhhc0V2ZXJDcmVhdGVkQW5BWE9iamVjdENhY2hlID0gdHJ1ZTsKICAgICB9CiAgICAg
cmV0dXJuIHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZS5nZXQoKTsKQEAgLTMwMzcsNyArMzAz
Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFBhcnNpbmcoYm9vbCBiKQogICAgIG1fYlBhcnNpbmcg
PSBiOwogCiAgICAgaWYgKG1fYlBhcnNpbmcgJiYgIW1fc2hhcmVkT2JqZWN0UG9vbCkKLSAgICAg
ICAgbV9zaGFyZWRPYmplY3RQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFNoYXJlZE9i
amVjdFBvb2w+KCk7CisgICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IG1ha2VVbmlxdWU8RG9j
dW1lbnRTaGFyZWRPYmplY3RQb29sPigpOwogCiAgICAgaWYgKCFtX2JQYXJzaW5nICYmIHZpZXco
KSAmJiAhdmlldygpLT5uZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3KCktPmZpcmVMYXlvdXRS
ZWxhdGVkTWlsZXN0b25lc0lmTmVlZGVkKCk7CkBAIC01NTY3LDcgKzU1NjcsNyBAQCBjb25zdCBT
VkdEb2N1bWVudEV4dGVuc2lvbnMqIERvY3VtZW50OjpzdmdFeHRlbnNpb25zKCkKIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucyYgRG9jdW1lbnQ6OmFjY2Vzc1NWR0V4dGVuc2lvbnMoKQogewogICAgIGlm
ICghbV9zdmdFeHRlbnNpb25zKQotICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOworICAgICAgICBtX3N2Z0V4dGVu
c2lvbnMgPSBtYWtlVW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOwogICAgIHJl
dHVybiAqbV9zdmdFeHRlbnNpb25zOwogfQogCkBAIC01NzcyLDcgKzU3NzIsNyBAQCB2b2lkIERv
Y3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIg
dmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAgICAgIHNl
dENvb2tpZVVSTChVUkwoeyB9LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5
T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZVVuaXF1ZSgpKSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6
Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmlu
ZygpIH0sICp0aGlzKSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0
aGlzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3OTEsNyArNTc5MSw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICBpc1NlY3VyaXR5T3Jp
Z2luVW5pcXVlID0gZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCku
dGFpbnRpbmcoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlOwogCiAgICAg
c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShpc1Nl
Y3VyaXR5T3JpZ2luVW5pcXVlID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpIDogU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xp
Y3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0s
ICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVu
dFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogCiAgICAgU3RyaW5nIG92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKICAgICBpZiAoIW92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5LmlzTnVsbCgpKQpAQCAtNjAyOSw3ICs2MDI5LDcgQEAgU3RyaW5nIERv
Y3VtZW50OjpuYW1lRm9yQ1NTQ2FudmFzRWxlbWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYg
Y2FudmFzRWxlbWVudCkKIFRleHRBdXRvU2l6aW5nJiBEb2N1bWVudDo6dGV4dEF1dG9TaXppbmco
KQogewogICAgIGlmICghbV90ZXh0QXV0b1NpemluZykKLSAgICAgICAgbV90ZXh0QXV0b1Npemlu
ZyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7CisgICAgICAgIG1fdGV4dEF1
dG9TaXppbmcgPSBtYWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwogICAgIHJldHVybiAqbV90
ZXh0QXV0b1NpemluZzsKIH0KICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAt
NjM5Niw3ICs2Mzk2LDcgQEAgdm9pZCBEb2N1bWVudDo6d2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdl
ZCgpCiB2b2lkIERvY3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcihOb2RlJiBub2RlKQog
ewogICAgIGlmICghbV93aGVlbEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV93aGVlbEV2ZW50VGFy
Z2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAgIG1fd2hl
ZWxFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAgICAgbV93
aGVlbEV2ZW50VGFyZ2V0cy0+YWRkKCZub2RlKTsKIApAQCAtNjQ1Niw3ICs2NDU2LDcgQEAgdm9p
ZCBEb2N1bWVudDo6ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoTm9kZSYgaGFuZGxlcikKIHsKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmICghbV90b3VjaEV2ZW50VGFyZ2V0cykKLSAg
ICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRT
ZXQ+KCk7CisgICAgICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFy
Z2V0U2V0PigpOwogCiAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cy0+YWRkKCZoYW5kbGVyKTsKIApA
QCAtODA0NCw3ICs4MDQ0LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkTG9nTWVzc2FnZShjb25zdCBX
VEZMb2dDaGFubmVsJiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgVmUKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IG1lc3NhZ2VMZXZlbEZyb21X
VEZMb2dMZXZlbChsZXZlbCk7Ci0gICAgICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6
OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhlY1N0
YXRlKGZyYW1lKCkpKTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBtZXNz
YWdlTGV2ZWwsIFdURk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUo
KSkpOwogCiAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogICAg
IH0pOwpAQCAtODA3OSw3ICs4MDc5LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdAogCiBib29s
IERvY3VtZW50OjpyZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eSYmIHByb3ApCiB7Ci0gICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChw
cm9wLm5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5PihX
VEZNb3ZlKHByb3ApKSkuaXNOZXdFbnRyeTsKKyAgICByZXR1cm4gbV9DU1NSZWdpc3RlcmVkUHJv
cGVydHlTZXQuYWRkKHByb3AubmFtZSwgbWFrZVVuaXF1ZTxDU1NSZWdpc3RlcmVkQ3VzdG9tUHJv
cGVydHk+KFdURk1vdmUocHJvcCkpKS5pc05ld0VudHJ5OwogfQogCiB2b2lkIERvY3VtZW50Ojpk
ZXRhY2hGcm9tRnJhbWUoKQpAQCAtODE3Myw3ICs4MTczLDcgQEAgRGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb24KICAgICAgICAgcmV0dXJuIHRvcERvY3VtZW50KCkuZGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDb250cm9sbGVyKCk7CiAKICAgICBpZiAoIW1fZGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKQotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uQWNjZXNzQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRp
b25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CisgICAgICAgIG1fZGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmll
bnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOwogfQogCkBAIC04MjA0
LDcgKzgyMDQsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZUZv
ck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWY8UGFpbnRXbwogQ29udGVudENoYW5nZU9ic2Vy
dmVyJiBEb2N1bWVudDo6Y29udGVudENoYW5nZU9ic2VydmVyKCkKIHsKICAgICBpZiAoIW1fY29u
dGVudENoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CisgICAgICAgIG1f
Y29udGVudENoYW5nZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udGVudENoYW5nZU9ic2VydmVyOyAKIH0KIApAQCAt
ODIxMiw3ICs4MjEyLDcgQEAgRE9NVGltZXJIb2xkaW5nVGFuayYgRG9jdW1lbnQ6OmRvbVRpbWVy
SG9sZGluZ1RhbmsoKQogewogICAgIGlmIChtX2RvbVRpbWVySG9sZGluZ1RhbmspCiAgICAgICAg
IHJldHVybiAqbV9kb21UaW1lckhvbGRpbmdUYW5rOwotICAgIG1fZG9tVGltZXJIb2xkaW5nVGFu
ayA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4oKTsKKyAgICBtX2RvbVRp
bWVySG9sZGluZ1RhbmsgPSBtYWtlVW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7CiAgICAg
cmV0dXJuICptX2RvbVRpbWVySG9sZGluZ1Rhbms7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggMGY1MzhiZmEwNWRiY2VmM2U4YTZmOGU2NmM5ODBmZDNkOTdjZWU5Ni4uYWI1ODA0MjU0OGNl
NmE0NGY2NTg0Y2Y5MjBiNzE5MGVhZGQ1MjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEy
ODQsNyArMTI4NCw3IEBAIGNsYXNzIERvY3VtZW50CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9j
dW1lbnRQYXJzZXJZaWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4o
KnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEb2N1bWVudFBhcnNlcllpZWxkVG9r
ZW4+KCp0aGlzKTsKICAgICB9CiAKICAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4o
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAppbmRleCAwMWM3Zjk2ZTAyZTllYmQ1ODg1M2Zi
NWRiMWM0Yjg4MjFlMmY5NzI4Li4wMzcwM2I2MmJjNjUwNTU3OGIzODliOTk5MzhhNGRhYWI2ZDc2
YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtNTks
NyArNTksNyBAQCBjbGFzcyBEb2N1bWVudEV2ZW50UXVldWU6OlRpbWVyIGZpbmFsIDogcHVibGlj
IFN1c3BlbmRhYmxlVGltZXIgewogCiBEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRR
dWV1ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAg
ICwgbV9wZW5kaW5nRXZlbnRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcykpCisg
ICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzKSkKICAgICAs
IG1faXNDbG9zZWQoZmFsc2UpCiB7CiAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3VzcGVuZElm
TmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCmluZGV4IDcyOTFkNGFkZWU5ZjQxNzdmZGJmZWZlZWZkZGYyNjcwNTRhOWM0ZjAuLmU3
NjQxYWY2MjE4YmYxM2FiMGUzYzY4OTIwMjBkZTg4OWM0ZTkwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcg
QEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihOb2RlJiBub2RlLCBj
b25zdCBEb2N1bWVudE1hcmtlciYgbmV3TWEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFya2VyTGlz
dD4mIGxpc3QgPSBtX21hcmtlcnMuYWRkKCZub2RlLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAKICAgICBpZiAoIWxpc3QpIHsKLSAgICAgICAgbGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8TWFy
a2VyTGlzdD4oKTsKKyAgICAgICAgbGlzdCA9IG1ha2VVbmlxdWU8TWFya2VyTGlzdD4oKTsKICAg
ICAgICAgbGlzdC0+YXBwZW5kKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIobmV3TWFya2VyKSk7CiAg
ICAgfSBlbHNlIGlmIChzaG91bGRJbnNlcnRBc1NlcGFyYXRlTWFya2VyKG5ld01hcmtlcikpIHsK
ICAgICAgICAgLy8gV2UgZG9uJ3QgbWVyZ2UgZGljdGF0aW9uIG1hcmtlcnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4IDgxZWZiMTBkNWU3NmVk
YjZmNmQzODM1MzAwNTFkMjljMzg4ZWFmZGIuLjg1NWEyYTA2NTZmNzFiNDVlZThkNGZmZjI4NGE1
MzUzNzlhMzg3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nl
c3MuY3BwCkBAIC00OCw3ICs0OCw3IEBAIERvY3VtZW50U3RvcmFnZUFjY2VzcyogRG9jdW1lbnRT
dG9yYWdlQWNjZXNzOjpmcm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvKiBzdXBw
bGVtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNzKj4oU3VwcGxlbWVudDxE
b2N1bWVudD46OmZyb20oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFz
dXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRl
VG8oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsK
ICAgICB9CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAg
ICAgYm9vbCBzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2FzR3JhbnRlZCA9PSBTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZDo6WWVzIHx8IHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93bjo6Tm87CiAKICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNlckdlc3R1
cmUpIHsKLSAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBt
YWtlV2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6
bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3Vt
ZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgewogICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7
CiAgICAgICAgICAgICB9KSk7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJl
KSB7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RG
TW92ZShkb2N1bWVudFJlZmVyZW5jZSldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVl
OjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9j
dW1lbnRSZWZlcmVuY2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgewogICAgICAg
ICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQog
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2Vz
dHVyZSgpOwogICAgICAgICAgICAgfSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgRG9jdW1l
bnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3Jh
cnlUaW1lVXNlckdlc3R1cmUoKQogewotICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUs
ICZtX2RvY3VtZW50KTsKKyAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gbWFrZVVuaXF1ZTxV
c2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7
CiB9CiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpjb25zdW1lVGVtcG9yYXJ5VGltZVVz
ZXJHZXN0dXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0NTE2MWM5Y2EyMGJhZDY5MzMw
MDUxZDA5YTU1ZjBhZmE1NTg2Y2M2Li5lZWIxZjM0MjlkNjRlZmM0ZGIwYjEzMGQxMzdmMzE2ZTM1
MGQwZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00NzcsNyArNDc3LDcgQEAgTmFtZWRO
b2RlTWFwJiBFbGVtZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICBpZiAoTmFtZWROb2RlTWFw
KiBhdHRyaWJ1dGVNYXAgPSByYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKSkKICAgICAgICAgcmV0dXJu
ICphdHRyaWJ1dGVNYXA7CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAoc3RkOjptYWtl
X3VuaXF1ZTxOYW1lZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOworICAg
IHJhcmVEYXRhLnNldEF0dHJpYnV0ZU1hcChtYWtlVW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3Rf
Y2FzdDxFbGVtZW50Jj4oKnRoaXMpKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5hdHRyaWJ1dGVN
YXAoKTsKIH0KIApAQCAtMjMwNyw3ICsyMzA3LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJc0RlZmlu
ZWRDdXN0b21FbGVtZW50KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVyZmEK
ICAgICBzZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7CiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVs
ZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZSgpKQotICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0ZDo6bWFr
ZV91bmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsK
KyAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5pcXVlPEN1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAgaW52YWxp
ZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKCp0aGlzKTsKIH0KQEAgLTIzNDQsNyArMjM0NCw3IEBA
IHZvaWQgRWxlbWVudDo6ZW5xdWV1ZVRvVXBncmFkZShKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Um
IGVsZW1lbnRJbnRlcmZhY2UpCiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpOwogICAgIGJvb2wgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSA9IGRhdGEuY3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUoKTsKICAgICBpZiAoIWFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUp
Ci0gICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3Vu
aXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAg
ICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9t
RWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKICAgICBkYXRhLmN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlKCktPmVucXVldWVFbGVtZW50VXBncmFkZSgqdGhpcywgYWxy
ZWFkeVNjaGVkdWxlZFRvVXBncmFkZSk7CiB9CiAKQEAgLTM0ODAsNyArMzQ4MCw3IEBAIERPTVRv
a2VuTGlzdCYgRWxlbWVudDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIGRh
dGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY2xhc3NMaXN0KCkp
Ci0gICAgICAgIGRhdGEuc2V0Q2xhc3NMaXN0KHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0
PigqdGhpcywgSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsKKyAgICAgICAgZGF0YS5zZXRDbGFzc0xp
c3QobWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikp
OwogICAgIHJldHVybiAqZGF0YS5jbGFzc0xpc3QoKTsKIH0KIApAQCAtMzQ4OCw3ICszNDg4LDcg
QEAgRGF0YXNldERPTVN0cmluZ01hcCYgRWxlbWVudDo6ZGF0YXNldCgpCiB7CiAgICAgRWxlbWVu
dFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRh
LmRhdGFzZXQoKSkKLSAgICAgICAgZGF0YS5zZXREYXRhc2V0KHN0ZDo6bWFrZV91bmlxdWU8RGF0
YXNldERPTVN0cmluZ01hcD4oKnRoaXMpKTsKKyAgICAgICAgZGF0YS5zZXREYXRhc2V0KG1ha2VV
bmlxdWU8RGF0YXNldERPTVN0cmluZ01hcD4oKnRoaXMpKTsKICAgICByZXR1cm4gKmRhdGEuZGF0
YXNldCgpOwogfQogCkBAIC0zNjMyLDcgKzM2MzIsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlckRh
dGEmIEVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0
byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRh
LmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNl
Y3Rpb25PYnNlcnZlckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRh
dGE+KCkpOworICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEobWFr
ZVVuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURh
dGEuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKQEAgLTM2NTgsNyArMzY1OCw3IEBA
IFJlc2l6ZU9ic2VydmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlUmVzaXplT2JzZXJ2ZXJEYXRhKCkK
IHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlm
ICghcmFyZURhdGEucmVzaXplT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRhLnNldFJl
c2l6ZU9ic2VydmVyRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0YT4oKSk7
CisgICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YShtYWtlVW5pcXVlPFJlc2l6
ZU9ic2VydmVyRGF0YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRh
dGEoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJN
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IGQ5
ZTY2MzQ5Y2JkYmEwYmI4MWQyYWNmYmZkYzBkNDMzNzhjNjU4ZGIuLjBiMDlkMDgyYzM2ZWRkZDg0
YjljZGU5ODgyNTI3MmRiNWY5NmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5l
ck1hcC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpcwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvIGxpc3RlbmVycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKTsKKyAgICBhdXRvIGxpc3RlbmVycyA9IG1h
a2VVbmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKTsKICAgICBsaXN0ZW5lcnMtPnVuY2hlY2tl
ZEFwcGVuZChSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUobGlzdGVuZXIp
LCBvcHRpb25zKSk7CiAgICAgbV9lbnRyaWVzLmFwcGVuZCh7IGV2ZW50VHlwZSwgV1RGTW92ZShs
aXN0ZW5lcnMpIH0pOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5k
ZXggOWU5MzA4YmI1ZGExNDYxZTM1OGUzY2M2MmZlYWZkY2ZjZDBjYzdhZC4uNWI2YWI2ODc1NWI2
MWJmZTJkNGE2OGJjYmU3NTI0ZmQwZGRhYmI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBA
IC0zMzksMTMgKzMzOSwxMyBAQCBzdHJ1Y3QgRXZlbnROYW1lcyB7CiAgICAgRE9NX0VWRU5UX05B
TUVTX0ZPUl9FQUNIKERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKQogI3VuZGVmIERPTV9FVkVOVF9O
QU1FU19ERUNMQVJFCiAKLSAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBz
dGQ6Om1ha2VfdW5pcXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgorICAg
IC8vIEZJWE1FOiBUaGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIG1ha2VVbmlxdWUgYmVsb3cgZG9l
cyBub3Qgd29yayBpbiB3aW5kb3dzIHBvcnQuCiAgICAgLy8KICAgICAvLyB0ZW1wbGF0ZTxjbGFz
cyBULCBjbGFzcy4uLiBBcmdzPgotICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVf
aWY8VD46Ol9TaW5nbGVfb2JqZWN0IHN0ZDo6bWFrZV91bmlxdWUoQXJncyYmLi4uKTsKKyAgICAv
LyBmcmllbmQgdHlwZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBtYWtl
VW5pcXVlKEFyZ3MmJi4uLik7CiAgICAgLy8KICAgICAvLyBUaGlzIGNyZWF0ZSBmdW5jdGlvbiBz
aG91bGQgYmUgZGVsZXRlZCBsYXRlciBhbmQgaXMgb25seSBmb3Iga2VlcGluZyBFdmVudE5hbWVz
IGFzIHByaXZhdGUuCi0gICAgLy8gc3RkOjptYWtlX3VuaXF1ZSBzaG91bGQgYmUgdXNlZCBpbnN0
ZWFkLgorICAgIC8vIG1ha2VVbmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KICAgICAvLwog
ICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxF
dmVudE5hbWVzPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3Bw
CmluZGV4IGRiMTQyOGQxZDQyNjA1OGNiNjViMWViNmZhY2EyM2RiOTg5MjgyYmQuLmEwYWQwYWQ3
YzQ4MjY5MmU2MzhlNTcyODBmMWEyOTI0N2FjZWMxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGgu
Y3BwCkBAIC0xMTUsMTcgKzExNSwxNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUm
IG9yaWdpbmFsVGFyZ2V0LCBFdmVudCYgZXZlbnQpCiB7CiAgICAgdXNpbmcgTWFrZUV2ZW50Q29u
dGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+ICgqKShOb2RlJiwgRXZlbnRUYXJn
ZXQqLCBFdmVudFRhcmdldCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgTWFrZUV2ZW50
Q29udGV4dCBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBj
dXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgp
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwg
Y3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwg
Y2xvc2VkU2hhZG93RGVwdGgpOwogICAgIH07CiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KGV2ZW50
KSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKSkgewogICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0g
W10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCog
dGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENv
bnRleHQ+IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1
c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dE
ZXB0aCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENv
bnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwog
ICAgICAgICB9OwogICAgIH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChpczxU
b3VjaEV2ZW50PihldmVudCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2Rl
JiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwg
aW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4o
bm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRh
cmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2Vu
ZGlmCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBv
cmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
dGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pigqbm9kZSku
ZG9tV2luZG93KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJn
ZXQsIGNsb3NlZFNoYWRvd0RlcHRoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YXRoLmFwcGVuZChtYWtlVW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3cs
ICp0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA4LDcgKzMwOCw3
IEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIHRhcmdldHMp
CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBOb2RlKiBvcmlnaW4gPSAqdGFyZ2V0
cy5iZWdpbigpOwogICAgICAgICBpZiAoIXRhcmdldC0+aXNDbG9zZWRTaGFkb3dIaWRkZW4oKm9y
aWdpbikpCi0gICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRD
b250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CisgICAgICAgICAgICBtX3BhdGgu
YXBwZW5kKG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAw
KSk7CiAgICAgfQogfQogCkBAIC0zMTcsNyArMzE3LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgo
Y29uc3QgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4mIHRhcmdldHMpCiAgICAgZm9yIChhdXRvKiB0YXJn
ZXQgOiB0YXJnZXRzKSB7CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBBU1NFUlQo
IWlzPE5vZGU+KHRhcmdldCkpOwotICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8RXZlbnRDb250ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsK
KyAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwg
dGFyZ2V0LCAqdGFyZ2V0cy5iZWdpbigpLCAwKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9GdWxsc2NyZWVuTWFuYWdlci5oCmluZGV4IGVkZDljYTI4ZWE0OTNhYzdjOTRjOGJkZTI4NWIx
NjY2YzM4ODI1NTkuLmE3MGJjYWVjY2M4Nzk1YTRmNGJhNDI2ZTI1MTNkZmY3YTBmNzRiMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFuYWdlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIFJlbmRlclRyZWVCdWlsZGVyOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIEZ1bGxz
Y3JlZW5NYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBGdWxsc2NyZWVuTWFuYWdlcihEb2N1bWVudCYpOwogICAgIH5GdWxsc2NyZWVuTWFuYWdlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcApp
bmRleCBiM2EwNmU0N2IwNzAwZjdjNDdkM2Q5YWVmMzNmNDQzNzI0ZTBjNTVlLi45NDBlZmNhZWQ4
MzA5MWMyNTgzZmE5ZTMzNmVmM2Q3OGM1NGFhM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQCB2b2lkIElk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeTo6YWRkT2JzZXJ2ZXIoY29uc3QgQXRvbVN0cmluZyYgaWQs
IElkVGFyZ2V0T2JzZXJ2ZQogICAgIAogICAgIElkVG9PYnNlcnZlclNldE1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fcmVnaXN0cnkuYWRkKGlkLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYnNlcnZlclNldD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8T2JzZXJ2ZXJTZXQ+KCk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5hZGQob2JzZXJ2ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tl
eWJvYXJkRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCmlu
ZGV4IDdlN2EzNDc5N2I4NjI5ZjYyZjdmNzg2YWIxNGM1YzZmNWJkOTBiMTQuLmNlODU2YmI1NWQ1
YmQ5OWU2NmY1MGNiNTViMGJlNDc5MGUwOTg0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9LZXlib2FyZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRF
dmVudC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgaW5saW5lIEtleWJvYXJkRXZlbnQ6OktleWJvYXJk
RXZlbnQoKSA9IGRlZmF1bHQ7CiBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudChj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGtleSwgUmVmUHRyPFdpbmRvd1Byb3h5PiYmIHZp
ZXcpCiAgICAgOiBVSUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZUZvcktleWJvYXJkRXZlbnRU
eXBlKGtleS50eXBlKCkpLCBDYW5CdWJibGU6OlllcywgSXNDYW5jZWxhYmxlOjpZZXMsIElzQ29t
cG9zZWQ6OlllcywKICAgICAgICAga2V5LnRpbWVzdGFtcCgpLmFwcHJveGltYXRlTW9ub3Rvbmlj
VGltZSgpLCB2aWV3LmNvcHlSZWYoKSwgMCwga2V5Lm1vZGlmaWVycygpLCBJc1RydXN0ZWQ6Olll
cykKLSAgICAsIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ+KGtleSkpCisgICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50
KG1ha2VVbmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQogI2lmIEVOQUJMRShLRVlC
T0FSRF9LRVlfQVRUUklCVVRFKQogICAgICwgbV9rZXkoa2V5LmtleSgpKQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01pY3JvdGFza3MuaAppbmRleCBiNjMxODQxNTBmNWEzOTE0MjUyYjg0MmVkOWQwN2RlYWFm
NmI0MDM2Li5iYTcyMmExMWM3MGZjYTgwODMyZTY0Yzg1MjdlZTQ2YjljMzQ3Njg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NaWNyb3Rhc2tzLmgKQEAgLTY5LDcgKzY5LDggQEAgY2xhc3MgVm9pZE1pY3JvdGFzayBm
aW5hbCA6IHB1YmxpYyBNaWNyb3Rhc2sgewogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlv
bjsKIH07CiAKLWNsYXNzIE1pY3JvdGFza1F1ZXVlIHsKK2NsYXNzIE1pY3JvdGFza1F1ZXVlIGZp
bmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgTmV2ZXJEZXN0
cm95ZWQ8TWljcm90YXNrUXVldWU+OwogICAgIGZyaWVuZCBjbGFzcyBNaWNyb3Rhc2s7CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggNjZjNWVhMGI5
ZDYzNDU0NDM4MTJmYjEzMWZmZTVkYmU2Y2ExZGRmMy4uMTkzZjI3ODA1YTVhZWQ0YjYwNmU5Y2Vl
YTNhOWEzNWQ4YjFlOTkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNw
cApAQCAtMTc1LDcgKzE3NSw3IEBAIHN0YXRpYyB2b2lkIHF1ZXVlTXV0YXRpb25PYnNlcnZlckNv
bXBvdW5kTWljcm90YXNrKCkKICAgICBpZiAobXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90
YXNrUXVldWVkRmxhZykKICAgICAgICAgcmV0dXJuOwogICAgIG11dGF0aW9uT2JzZXJ2ZXJDb21w
b3VuZE1pY3JvdGFza1F1ZXVlZEZsYWcgPSB0cnVlOwotICAgIE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWlj
cm90YXNrPigpKTsKKyAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5k
KG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlck1pY3JvdGFzaz4oKSk7CiB9CiAKIHZvaWQgTXV0
YXRpb25PYnNlcnZlcjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFJlZjxNdXRhdGlvblJlY29yZD4m
JiBtdXRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ckludGVyZXN0R3JvdXAuY3BwCmluZGV4IDUyZGE2MWY3NGYxZjU3YWY2ODU0OWYzNjY1NjMwNmQ4
ZDE3MDNjNzkuLjAyNzZlNDJiZTViZDgzZmY0MmE3OTM1NmJkZTljZTczNjA5OWNiZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA+IE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcgogICAgIGlmIChv
YnNlcnZlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3Zl
KG9ic2VydmVycyksIG9sZFZhbHVlRmxhZyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TXV0YXRp
b25PYnNlcnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFn
KTsKIH0KIAogYm9vbCBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6aXNPbGRWYWx1ZVJl
cXVlc3RlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggYzhmYzAxMDY3MjQ1ZTRlMzYxOTdhMmY2ZDRkMWU0
NTc1NDdiYmM4YS4uZTVjNmRkMTZhNGRiNjA5YmE1MjczYTQ3YWY3ZmE2ODI2NjJhMmM0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246
Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKE5vZGUmIG5vZGUpCiAgICAgbV9vYnNlcnZl
ci0+c2V0SGFzVHJhbnNpZW50UmVnaXN0cmF0aW9uKCk7CiAKICAgICBpZiAoIW1fdHJhbnNpZW50
UmVnaXN0cmF0aW9uTm9kZXMpIHsKLSAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7Cisg
ICAgICAgIG1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8
R0NSZWFjaGFibGVSZWY8Tm9kZT4+PigpOwogCiAgICAgICAgIEFTU0VSVCghbV9ub2RlS2VwdEFs
aXZlKTsKICAgICAgICAgbV9ub2RlS2VwdEFsaXZlID0gJm1fbm9kZTsgLy8gQmFsYW5jZWQgaW4g
dGFrZVRyYW5zaWVudFJlZ2lzdHJhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzZkNGVhOWQ3
MzBhOTIzNzJhOWY4ZTdhNmQ4ZjY3ZDAwZmQzZGJmNS4uY2FiZjFlYjU4YzljMjNjYWQ4ODViZDAx
ZGYxMjJiNjUxYWUwMmJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzk4LDkgKzM5OCw5IEBAIHZv
aWQgTm9kZTo6bWF0ZXJpYWxpemVSYXJlRGF0YSgpCiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRh
OwogICAgIGlmIChpczxFbGVtZW50PigqdGhpcykpCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEVsZW1lbnRSYXJlRGF0YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1f
cmVuZGVyZXIpKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEgPSBtYWtlVW5pcXVlPEVsZW1lbnRS
YXJlRGF0YT4oZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4obV9kYXRhLm1fcmVuZGVyZXIpKS5yZWxl
YXNlKCk7CiAgICAgZWxzZQotICAgICAgICBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlUmFy
ZURhdGE+KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxlYXNlKCk7CisgICAgICAgIGRhdGEgPSBtYWtl
VW5pcXVlPE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsKICAgICBB
U1NFUlQoZGF0YSk7CiAKICAgICBtX2RhdGEubV9yYXJlRGF0YSA9IGRhdGE7CkBAIC0yMjE1LDcg
KzIyMTUsNyBAQCBFdmVudFRhcmdldERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
CiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfZXZlbnRUYXJnZXREYXRhTWFwTG9jayk7
CiAgICAgc2V0SGFzRXZlbnRUYXJnZXREYXRhKHRydWUpOwotICAgIHJldHVybiAqZXZlbnRUYXJn
ZXREYXRhTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXREYXRhPigp
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQo
dGhpcywgbWFrZVVuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsKIH0K
IAogdm9pZCBOb2RlOjpjbGVhckV2ZW50VGFyZ2V0RGF0YSgpCkBAIC0yMjg3LDcgKzIyODcsNyBA
QCB2b2lkIE5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyJiBv
YnNlcnZlciwgTXV0YXRpb25PYnNlcnZlcgogICAgIH0KIAogICAgIGlmICghcmVnaXN0cmF0aW9u
KSB7Ci0gICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmls
dGVyKSk7CisgICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmlsdGVy
KSk7CiAgICAgICAgIHJlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJ5Lmxhc3QoKS5nZXQoKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCA3NjkwZDU5OWZjYTdkYzk5Y2I0OWUx
NjBmYmUyYWZhZGRmMDBjZGY0Li43NjZkNjdmM2Y2ZDYyOWFmMDg5NDJhZGMyM2UyYzIyYzI5ZjNl
NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yODEsNyArMjgxLDcgQEAgY2xh
c3MgTm9kZVJhcmVEYXRhIDogcHVibGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVMaXN0
c05vZGVEYXRhJiBlbnN1cmVOb2RlTGlzdHMoKQogICAgIHsKICAgICAgICAgaWYgKCFtX25vZGVM
aXN0cykKLSAgICAgICAgICAgIG1fbm9kZUxpc3RzID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTGlz
dHNOb2RlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fbm9kZUxpc3RzID0gbWFrZVVuaXF1ZTxOb2Rl
TGlzdHNOb2RlRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICptX25vZGVMaXN0czsKICAgICB9CiAK
QEAgLTI4OSw3ICsyODksNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVE
YXRhQmFzZSB7CiAgICAgTm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhJiBlbnN1cmVNdXRhdGlvbk9i
c2VydmVyRGF0YSgpCiAgICAgewogICAgICAgICBpZiAoIW1fbXV0YXRpb25PYnNlcnZlckRhdGEp
Ci0gICAgICAgICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxO
b2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CisgICAgICAgICAgICBtX211dGF0aW9uT2JzZXJ2
ZXJEYXRhID0gbWFrZVVuaXF1ZTxOb2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CiAgICAgICAg
IHJldHVybiAqbV9tdXRhdGlvbk9ic2VydmVyRGF0YTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCmluZGV4IDUzMzdjNThjZGZiYmFhYjIzMDE4NDUwMjYz
OGRjNjM0NDlmNzk2YWMuLjYxYmJjNGVkZmY5MzRhNjQ0NmVhMjU2NzU1NjYzZmQ1NDY4NzdlM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcApAQCAtMTk4LDExICsx
OTgsMTEgQEAgdm9pZCBSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKEhUTUxJbnB1dEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9uYW1lVG9Hcm91cE1h
cCkKLSAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8TmFtZVRvR3Jv
dXBNYXA+KCk7CisgICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBtYWtlVW5pcXVlPE5hbWVUb0dy
b3VwTWFwPigpOwogCiAgICAgYXV0byYgZ3JvdXAgPSBtX25hbWVUb0dyb3VwTWFwLT5hZGQoZWxl
bWVudC5uYW1lKCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFn
cm91cCkKLSAgICAgICAgZ3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+
KCk7CisgICAgICAgIGdyb3VwID0gbWFrZVVuaXF1ZTxSYWRpb0J1dHRvbkdyb3VwPigpOwogICAg
IGdyb3VwLT5hZGQoZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBjODI1YTdlZGVlNmJiMmQ1ZjUxNmM2ZDNlNmVhNzQx
MGU2ZWNjNzU2Li4wNGFmZTlkNzhhZDBiZDEwMjhhNjcwM2MwZmMzZDRmNjUzYjEzZGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zNzks
OCArMzc5LDggQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNlcHRpb24o
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW4KIHsKICAgICBpZiAobV9pbkRpc3Bh
dGNoRXJyb3JFdmVudCkgewogICAgICAgICBpZiAoIW1fcGVuZGluZ0V4Y2VwdGlvbnMpCi0gICAg
ICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsKLSAgICAgICAgbV9wZW5kaW5nRXhj
ZXB0aW9ucy0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJyb3JN
ZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShjYWxs
U3RhY2spKSk7CisgICAgICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFeGNlcHRpb24+Pj4oKTsKKyAgICAgICAgbV9w
ZW5kaW5nRXhjZXB0aW9ucy0+YXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ0V4Y2VwdGlvbj4oZXJy
b3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgV1RGTW92ZShj
YWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxNCw5ICs0MTQsOSBA
QCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydFVuaGFuZGxlZFByb21pc2VSZWpl
Y3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246ICIsIHJlc3VsdE1lc3NhZ2UpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwog
ICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOwog
ICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOwogICAgIGFkZENv
bnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQogCkBAIC01MDksNyArNTA5LDcgQEAg
UmVqZWN0ZWRQcm9taXNlVHJhY2tlciYgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJlUmVq
ZWN0ZWRQcm9taXNlVHJhY2tlclNsb3cKICAgICAvLyBXaGVuIGluaXRpYWxpemluZyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0LCB2bSgpIGlzIG5vdCByZWFkeS4KIAogICAgIEFTU0VSVCghbV9yZWpl
Y3RlZFByb21pc2VUcmFja2VyKTsKLSAgICBtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlamVjdGVkUHJvbWlzZVRyYWNrZXI+KCp0aGlzLCB2bSgpKTsKKyAgICBt
X3JlamVjdGVkUHJvbWlzZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFJlamVjdGVkUHJvbWlzZVRyYWNr
ZXI+KCp0aGlzLCB2bSgpKTsKICAgICByZXR1cm4gKm1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlci5n
ZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCmluZGV4IDU1ZGMyYzg3
YTRhYzIwMmQ3MWFkZGE2NmQ1OTZiNWZlYTBiYzg4NTYuLjIxMDljZTRhMjI4YzNlN2JhODdhNGJh
NTJiMmRiMjgyMzYwODcxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rv
clF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKQEAg
LTYzMyw3ICs2MzMsNyBAQCBFeGNlcHRpb25PcjxTZWxlY3RvclF1ZXJ5Jj4gU2VsZWN0b3JRdWVy
eUNhY2hlOjphZGQoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIERvYwogICAgIGlmIChtX2VudHJp
ZXMuc2l6ZSgpID09IG1heGltdW1TZWxlY3RvclF1ZXJ5Q2FjaGVTaXplKQogICAgICAgICBtX2Vu
dHJpZXMucmVtb3ZlKG1fZW50cmllcy5yYW5kb20oKSk7CiAKLSAgICByZXR1cm4gKm1fZW50cmll
cy5hZGQoc2VsZWN0b3JzLCBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUo
c2VsZWN0b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gKm1fZW50cmllcy5h
ZGQoc2VsZWN0b3JzLCBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURk1vdmUoc2VsZWN0b3JM
aXN0KSkpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CmluZGV4IDY5NjNiNjgzNzlkODhmMjdhODRlMmYxZGE2NTE1MzgxODA1YjI5M2MuLjY3ODZjMGQy
MWUxYjJjMmE1Nzg1MWJkMDg1MTY0YzFhMWU5MmM5OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYg
ZG9jdW1lbnQsIFNoYWRvd1Jvb3RNb2RlIHR5cGUpCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRv
Y3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVu
dCkKICAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlx
dWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxT
dHlsZTo6U2NvcGU+KCp0aGlzKSkKIHsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCBTaGFkb3dSb290
OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFNsb3RBc3Np
Z25tZW50PiYmIHNsbwogICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hh
ZG93Um9vdCkKICAgICAsIFRyZWVTY29wZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUo
U2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKLSAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2Vf
dW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3BlKG1ha2VVbmlx
dWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCiAgICAgLCBtX3Nsb3RBc3NpZ25tZW50KFdURk1vdmUo
c2xvdEFzc2lnbm1lbnQpKQogewogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU2hhZG93Um9v
dDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3VtZW50KERvY3VtZW50JiBuZXdEb2N1bWVudCkKICAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFwYXJlbnRUcmVlU2Nv
cGUoKSB8fCAmcGFyZW50VHJlZVNjb3BlKCktPmRvY3VtZW50U2NvcGUoKSA9PSAmbmV3RG9jdW1l
bnQpOwogCiAgICAgLy8gU3R5bGUgc2NvcGVzIGFyZSBkb2N1bWVudCBzcGVjaWZpYy4KLSAgICBt
X3N0eWxlU2NvcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpOworICAg
IG1fc3R5bGVTY29wZSA9IG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CiAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigmbV9zdHlsZVNjb3BlLT5kb2N1
bWVudCgpID09ICZuZXdEb2N1bWVudCk7CiB9CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNo
YWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIEhU
TUxTbG90RWxlbWVudCYgcwogewogICAgIEFTU0VSVCgmc2xvdC5yb290Tm9kZSgpID09IHRoaXMp
OwogICAgIGlmICghbV9zbG90QXNzaWdubWVudCkKLSAgICAgICAgbV9zbG90QXNzaWdubWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8U2xvdEFzc2lnbm1lbnQ+KCk7CisgICAgICAgIG1fc2xvdEFzc2ln
bm1lbnQgPSBtYWtlVW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOwogCiAgICAgcmV0dXJuIG1fc2xv
dEFzc2lnbm1lbnQtPmFkZFNsb3RFbGVtZW50QnlOYW1lKG5hbWUsIHNsb3QsICp0aGlzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCmluZGV4IGE0MTlkZGE1MjhhY2NiZGE2
ZGU5ZGRmMWE1NDg2NGNmZGY5MTYwZWYuLjQ1YzA4ZWEzNmFmZTEzOTdiZTBlY2JmYjI5ZTIyOGVj
ZDBjOTkwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcApAQCAtMTIwLDcg
KzEyMCw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlbWVuCiAgICAgICAgIC8vIHRvIGF2b2lkIGFs
d2F5cyBoYXZpbmcgYSB2ZWN0b3Igb2YgYWxsIGNoaWxkIG5vZGVzIG9mIGEgc2hhZG93IGhvc3Qu
CiAgICAgICAgIGlmIChzbG90TmFtZSA9PSBkZWZhdWx0U2xvdE5hbWUoKSkKICAgICAgICAgICAg
IG1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTbG90PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwog
ICAgIH0pOwogICAgIGF1dG8mIHNsb3QgPSAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAg
ICBib29sIG5lZWRzU2xvdGNoYW5nZUV2ZW50ID0gc2hhZG93Um9vdC5zaG91bGRGaXJlU2xvdGNo
YW5nZUV2ZW50KCkgJiYgaGFzQXNzaWduZWROb2RlcyhzaGFkb3dSb290LCBzbG90KTsKQEAgLTQx
MCw3ICs0MTAsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QoTm9kZSYgY2hp
bGQsIGNvbnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lKQogICAgIH0KIAogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9zbG90cy5lbnN1cmUoc2xvdE5hbWUsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2xvdD4oKTsK
ICAgICB9KTsKICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hc3NpZ25lZE5vZGVzLmFw
cGVuZCgmY2hpbGQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29w
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCAyZjI4NzBkMTY2
OWQ0NGJjNjE4NGE3MmVjNjNlYjMyM2Y1MjdkMzlmLi41MzFhY2RmNGRkNjU2OGUwZjQ2MjFlYjUw
ZDg5ZGVlNDY3ZDU1YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBUcmVlU2NvcGU6OlRyZWVTY29wZShTaGFkb3dSb290JiBzaGFkb3dSb290LCBEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKHNoYWRvd1Jvb3QpCiAgICAgLCBtX2RvY3Vt
ZW50U2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3BhcmVudFRyZWVTY29wZSgmZG9jdW1lbnQpCi0g
ICAgLCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVlPElkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KG1h
a2VVbmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewogICAgIHNoYWRvd1Jvb3Qu
c2V0VHJlZVNjb3BlKCp0aGlzKTsKIH0KQEAgLTczLDcgKzczLDcgQEAgVHJlZVNjb3BlOjpUcmVl
U2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShkb2N1bWVudCkKICAg
ICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKG51
bGxwdHIpCi0gICAgLCBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeShzdGQ6Om1ha2VfdW5pcXVl
PElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKKyAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5KG1ha2VVbmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQogewogICAgIGRv
Y3VtZW50LnNldFRyZWVTY29wZSgqdGhpcyk7CiB9CkBAIC0xNDEsNyArMTQxLDcgQEAgY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiogVHJlZVNjb3BlOjpnZXRBbGxFbGVtZW50c0J5SWQoY29uc3QgQXRv
bVN0cmluZyYgZWxlbWVudEkKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZChjb25zdCBB
dG9tU3RyaW5nSW1wbCYgZWxlbWVudElkLCBFbGVtZW50JiBlbGVtZW50LCBib29sIG5vdGlmeU9i
c2VydmVycykKIHsKICAgICBpZiAoIW1fZWxlbWVudHNCeUlkKQotICAgICAgICBtX2VsZW1lbnRz
QnlJZCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAg
bV9lbGVtZW50c0J5SWQgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAg
bV9lbGVtZW50c0J5SWQtPmFkZChlbGVtZW50SWQsIGVsZW1lbnQsICp0aGlzKTsKICAgICBpZiAo
bm90aWZ5T2JzZXJ2ZXJzKQogICAgICAgICBtX2lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS0+bm90
aWZ5T2JzZXJ2ZXJzKGVsZW1lbnRJZCk7CkBAIC0xNjgsNyArMTY4LDcgQEAgRWxlbWVudCogVHJl
ZVNjb3BlOjpnZXRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2
b2lkIFRyZWVTY29wZTo6YWRkRWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFt
ZSwgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1fZWxlbWVudHNCeU5hbWUpCi0gICAg
ICAgIG1fZWxlbWVudHNCeU5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRN
YXA+KCk7CisgICAgICAgIG1fZWxlbWVudHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9y
ZGVyZWRNYXA+KCk7CiAgICAgbV9lbGVtZW50c0J5TmFtZS0+YWRkKG5hbWUsIGVsZW1lbnQsICp0
aGlzKTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgVHJlZVNjb3BlOjphZGRJbWFnZU1h
cChIVE1MTWFwRWxlbWVudCYgaW1hZ2VNYXApCiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKCFtX2ltYWdlTWFwc0J5TmFtZSkKLSAgICAgICAgbV9pbWFnZU1hcHNCeU5h
bWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1f
aW1hZ2VNYXBzQnlOYW1lID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAg
IG1faW1hZ2VNYXBzQnlOYW1lLT5hZGQoKm5hbWUsIGltYWdlTWFwLCAqdGhpcyk7CiB9CiAKQEAg
LTI2Myw3ICsyNjMsNyBAQCBIVE1MTWFwRWxlbWVudCogVHJlZVNjb3BlOjpnZXRJbWFnZU1hcChj
b25zdCBBdG9tU3RyaW5nJiBuYW1lKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlRWxl
bWVudEJ5VXNlbWFwKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBIVE1MSW1hZ2VFbGVtZW50
JiBlbGVtZW50KQogewogICAgIGlmICghbV9pbWFnZXNCeVVzZW1hcCkKLSAgICAgICAgbV9pbWFn
ZXNCeVVzZW1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAg
ICAgICAgbV9pbWFnZXNCeVVzZW1hcCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4o
KTsKICAgICByZXR1cm4gbV9pbWFnZXNCeVVzZW1hcC0+YWRkKG5hbWUsIGVsZW1lbnQsICp0aGlz
KTsKIH0KIApAQCAtMzAwLDcgKzMwMCw3IEBAIEhUTUxMYWJlbEVsZW1lbnQqIFRyZWVTY29wZTo6
bGFiZWxFbGVtZW50Rm9ySWQoY29uc3QgQXRvbVN0cmluZyYgZm9yQXR0cmlidXRlVmFsCiAKICAg
ICBpZiAoIW1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUpIHsKICAgICAgICAgLy8gUG9wdWxhdGUgdGhl
IG1hcCBvbiBmaXJzdCBhY2Nlc3MuCi0gICAgICAgIG1fbGFiZWxzQnlGb3JBdHRyaWJ1dGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CisgICAgICAgIG1fbGFiZWxz
QnlGb3JBdHRyaWJ1dGUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAKICAg
ICAgICAgZm9yIChhdXRvJiBsYWJlbCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxMYWJlbEVsZW1l
bnQ+KG1fcm9vdE5vZGUpKSB7CiAgICAgICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBmb3JWYWx1
ZSA9IGxhYmVsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9yQXR0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKaW5kZXggZGRhNDkw
YjEzY2RjMmRkYjgzZmIxZmM4ZmZhYjA5ZGYwMDg4ZDgyYy4uNDI2ODE5NmY4OTJhZjMwNTUxMDNj
NDg3MmZlOGVjYmRkNWYxMWFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBTdHlsZWRFbGVtZW50Owog
Y2xhc3MgVGV4dDsKIAogY2xhc3MgQWNjZXNzaWJpbGl0eVVuZG9SZXBsYWNlZFRleHQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlVbmRv
UmVwbGFjZWRUZXh0KCkgeyB9CiAgICAgdm9pZCBjb25maWd1cmVSYW5nZURlbGV0ZWRCeVJlYXBw
bHlXaXRoU3RhcnRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDc5MzQyYzQ5Nzc1M2Q5YTE1MjZlMDU1NTQ5ZmM3Nzk3
MjE0YmY2ZTQuLjg5MWMxMjg4YzZlMzE0YWNjYWU5YjYyNzE5NzgxODgxZTc0MmRjMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM4MCwxMiArMzgwLDEyIEBAIHN0YXRpYyBSZWY8
RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9hcmRFdmVudChEb2N1bWVu
dCYgZG9jdW1lbnQsCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVu
dEtpbmQ6OkNvcHk6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkN1dDoKLSAgICAgICAg
cmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRh
VHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bh
c3RlYm9hcmQ+KCkpOworICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGUsIG1h
a2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtp
bmQ6OlBhc3RlQXNQbGFpblRleHQ6CiAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpKSB7CiAgICAg
ICAgICAgICBhdXRvIHBsYWluVGV4dFR5cGUgPSAidGV4dC9wbGFpbiJfczsKICAgICAgICAgICAg
IGF1dG8gcGxhaW5UZXh0ID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCktPnJl
YWRTdHJpbmcocGxhaW5UZXh0VHlwZSk7Ci0gICAgICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CisgICAgICAgICAgICBhdXRvIHBh
c3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgICAgICAgICBw
YXN0ZWJvYXJkLT53cml0ZVN0cmluZyhwbGFpblRleHRUeXBlLCBwbGFpblRleHQpOwogICAgICAg
ICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50
LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1vdmUocGFzdGVib2FyZCkp
OwogICAgICAgICB9CkBAIC0zOTYsMTAgKzM5NiwxMCBAQCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zl
cj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50
LAogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5OgogICAgIGNhc2UgQ2xp
cGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDdXQ6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6
OkJlZm9yZVBhc3RlOgotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5
QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBzdGQ6
Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgICAgICByZXR1cm4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3Rv
cmVNb2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZh
bGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgIHJldHVybiBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVy
OjpTdG9yZU1vZGU6OkludmFsaWQsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiB9
CiAKIC8vIFJldHVybnMgd2hldGhlciBjYWxsZXIgc2hvdWxkIGNvbnRpbnVlIHdpdGggInRoZSBk
ZWZhdWx0IHByb2Nlc3NpbmciLCB3aGljaCBpcyB0aGUgc2FtZSBhcwpAQCAtMTE4Myw5ICsxMTgz
LDkgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoRWRpdENvbW1hbmRDb21wb3NpdGlv
biYgY29tcG9zaXRpb24pCiAKIEVkaXRvcjo6RWRpdG9yKEZyYW1lJiBmcmFtZSkKICAgICA6IG1f
ZnJhbWUoZnJhbWUpCi0gICAgLCBtX2tpbGxSaW5nKHN0ZDo6bWFrZV91bmlxdWU8UEFMOjpLaWxs
UmluZz4oKSkKLSAgICAsIG1fc3BlbGxDaGVja2VyKHN0ZDo6bWFrZV91bmlxdWU8U3BlbGxDaGVj
a2VyPihmcmFtZSkpCi0gICAgLCBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIoc3RkOjptYWtl
X3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPihmcmFtZSkpCisgICAgLCBtX2tpbGxS
aW5nKG1ha2VVbmlxdWU8UEFMOjpLaWxsUmluZz4oKSkKKyAgICAsIG1fc3BlbGxDaGVja2VyKG1h
a2VVbmlxdWU8U3BlbGxDaGVja2VyPihmcmFtZSkpCisgICAgLCBtX2FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIobWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPihmcmFtZSkpCiAg
ICAgLCBtX2VkaXRvclVJVXBkYXRlVGltZXIoKnRoaXMsICZFZGl0b3I6OmVkaXRvclVJVXBkYXRl
VGltZXJGaXJlZCkKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV90ZWxlcGhvbmVOdW1iZXJEZXRlY3Rpb25VcGRh
dGVUaW1lcigqdGhpcywgJkVkaXRvcjo6c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCmluZGV4IDBkZGMxNWJkYzBkMzA0ZjQ1NDNhMDU5NjJiYzZjYzc2NDVmNTQ3OTQuLjJjMjAy
OGNjNjNjMWI5MzhiYzY2ZmY0YmVhNTg5OTI1OGU5YTRhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xNjMxLDcgKzE2
MzEsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjp1cGRhdGVOb2Rlc0luc2VydGVk
KE5vZGUgKm5vZGUpCiBSZXBsYWNlbWVudEZyYWdtZW50KiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6ZW5zdXJlUmVwbGFjZW1lbnRGcmFnbWVudCgpCiB7CiAgICAgaWYgKCFtX3JlcGxhY2VtZW50
RnJhZ21lbnQpCi0gICAgICAgIG1fcmVwbGFjZW1lbnRGcmFnbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVwbGFjZW1lbnRGcmFnbWVudD4obV9kb2N1bWVudEZyYWdtZW50LmdldCgpLCBlbmRpbmdT
ZWxlY3Rpb24oKSk7CisgICAgICAgIG1fcmVwbGFjZW1lbnRGcmFnbWVudCA9IG1ha2VVbmlxdWU8
UmVwbGFjZW1lbnRGcmFnbWVudD4obV9kb2N1bWVudEZyYWdtZW50LmdldCgpLCBlbmRpbmdTZWxl
Y3Rpb24oKSk7CiAgICAgcmV0dXJuIG1fcmVwbGFjZW1lbnRGcmFnbWVudC5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCmlu
ZGV4IDNiNDA2ODhjYjRkYTY1NmIzNDQ1ODdjMDg4ODYzNmMwYWIxNTY2Y2YuLmY5YjY0YzVjOGM4
OTZiZjMyMjYzMDg3MDlmMjZhYTY2N2UxZWQ5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Tm90aWZpZXI+IFNlbGVjdGlvblJlY3RH
YXRoZXJlcjo6Y2xlYXJBbmQKICAgICBtX2dhcFJlY3RzLmNsZWFyKCk7CiAgICAgbV9pc1RleHRP
bmx5ID0gdHJ1ZTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWVyPigqdGhp
cyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Tm90aWZpZXI+KCp0aGlzKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmlu
ZGV4IDE4OTZlMWEyMjgxYzFhOWIwNDZlOGVmYWNkOTExOWFmNWUyNzdkNTYuLmYxZDE5YzEwMTE0
YzFhOTg1YjhiNDI2ZmE2OGZkYjgxMjJhNjBjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKQEAgLTY1MCw3ICs2NTAsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFu
ZGxlVGV4dE5vZGUoKQogICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IChtX25vZGUgPT0g
bV9lbmRDb250YWluZXIpID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6IHJl
bmRlcmVyVGV4dC5sZW5ndGgoKTsKICAgICAgICAgaWYgKCFtX2Zsb3dSdW5SZXNvbHZlckNhY2hl
IHx8ICZtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5mbG93KCkgIT0gJmJsb2NrRmxvdykgewogICAg
ICAgICAgICAgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cgPSBtX2Zsb3dSdW5S
ZXNvbHZlckNhY2hlID8gMCA6IHRleHROb2RlT2Zmc2V0SW5GbG93KHRleHROb2RlKTsKLSAgICAg
ICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZUxp
bmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQpOworICAgICAgICAgICAg
bV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IG1ha2VVbmlxdWU8U2ltcGxlTGluZUxheW91dDo6UnVu
UmVzb2x2ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7CiAgICAgICAgIH0KICAgICAgICAgLy8gU2tp
cCB0byBtX29mZnNldCBwb3NpdGlvbi4KICAgICAgICAgYXV0byByYW5nZSA9IG1fZmxvd1J1blJl
c29sdmVyQ2FjaGUtPnJhbmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDBhODNhYzA5NTkyNzRjMDc4
MGQ1ZDdiMzg1ZjAxOWMwZTg2ZTNjNzQuLjljZjg2YTRhMTVmMWM3YzZmMDI4MTU1NjQ3YWZhMDA1
OWFlM2I2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KQEAgLTM4MCw3ICszODAsNyBAQCBIVE1MQ29udmVydGVyOjpIVE1MQ29udmVydGVyKGNv
bnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKICAgICBfZmxhZ3MucmVh
Y2hlZFN0YXJ0ID0gZmFsc2U7CiAgICAgX2ZsYWdzLnJlYWNoZWRFbmQgPSBmYWxzZTsKICAgICAK
LSAgICBfY2FjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVzPigpOwor
ICAgIF9jYWNoZXMgPSBtYWtlVW5pcXVlPEhUTUxDb252ZXJ0ZXJDYWNoZXM+KCk7CiB9CiAKIEhU
TUxDb252ZXJ0ZXI6On5IVE1MQ29udmVydGVyKCkKQEAgLTU1MSw3ICs1NTEsNyBAQCBSZWZQdHI8
Q1NTVmFsdWU+IEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVs
ZW1lbnQoRWxlbWVudCYgZQogCiAgICAgYXV0byByZXN1bHQgPSBtX2NvbXB1dGVkU3R5bGVzLmFk
ZCgmZWxlbWVudCwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wdXRlZFN0eWxl
RXh0cmFjdG9yPigmZWxlbWVudCwgdHJ1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+KCZlbGVtZW50LCB0cnVlKTsK
ICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yJiBjb21wdXRlZFN0eWxlID0gKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CiAgICAgcmV0dXJuIGNvbXB1dGVkU3R5bGUucHJvcGVydHlWYWx1ZShwcm9w
ZXJ0eUlkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKaW5kZXggMjU3N2Q1YTc2OTY4MTYyMmY1ZDBhN2I2
M2ZmNGQwOWQ4OGM5NWRjMS4uMjljNWE4ZGE3ZWUzMjU1NjEyNjU2OTA1NGUzMDIyMjhhNTMwMTgx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgT0JKQ19DTEFTUyBOU1ZpZXc7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyKCkgeyB9CiAgICAgLy8gUmV0dXJucyBhIGNvbnRleHQgSUQuCkBA
IC01Miw2ICs1Myw3IEBAIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciB7CiAgICAg
dm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAKICAgICBjbGFzcyBBbGVybmF0aXZlVGV4dENv
bnRleHRDb250cm9sbGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgogICAgICAgICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyKCkgeyB9CiAg
ICAgICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8TlNUZXh0QWx0
ZXJuYXRpdmVzPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGZiNDM3MTYzMDNh
ZTI1YjgxOTI5MmQyNzFjYTJjYWU2ODRiOWMwMmUuLmMzYzhmOGIzMjRiZmVjZGNlOWU1YzRlYjE5
YjViNzQ2MDg5MjhjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTE3OCw3ICsx
NzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJD
b250ZW50KCkKIHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRp
b25XaXRoRW1wdHlDbGllbnRzKCk7CiAgICAgCi0gICAgYXV0byBwYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgYXV0byBwYWdlID0g
bWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgcGFnZS0+
c2V0SXNGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgpOwogICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0
TWVkaWFFbmFibGVkKGZhbHNlKTsKICAgICBwYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJs
ZWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmlu
ZGV4IGEwOTVlZWFlOWIyYTc5N2JkYWJhZTM0OTQwZmRjNmEzY2UzMDQyNGIuLmQ1ODExMmZmOWJk
ZjZjZDdkMTk4NTUyZDg2Njk5MWY4NWI3YTFjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAKQEAgLTk0LDExICs5NCwxMSBAQCBzdGF0aWMgdm9pZCBjYWxs
T25GaWxlVGhyZWFkKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rpb24pCiAgICAgICAgIH0pOwog
ICAgIH0pOwogCi0gICAgcXVldWUuZ2V0KCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rp
b248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgcXVldWUuZ2V0KCkuYXBwZW5k
KG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAK
IEFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVu
dCkKLSAgICA6IG1faW50ZXJuYWxzKHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxzPihjbGllbnQp
KQorICAgIDogbV9pbnRlcm5hbHMobWFrZVVuaXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuY3BwCmluZGV4IDlhZDNkYTllZmZmMGYzYTcwN2EwNjAxZjc4NjAxZDVkODY4MjU4ZjUuLjk5
YTdiNWM2Zjk4N2ExNGJhMTkwOTQ1ODk4N2FlODRlY2ZjNGYwODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEZpbGVSZWFkZXI6OnJlYWRJbnRlcm5hbChCbG9iJiBibG9iLCBGaWxlUmVhZGVyTG9hZGVyOjpS
ZWFkVHlwCiAgICAgbV9zdGF0ZSA9IExPQURJTkc7CiAgICAgbV9lcnJvciA9IG51bGxwdHI7CiAK
LSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4obV9yZWFk
VHlwZSwgc3RhdGljX2Nhc3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsKKyAgICBt
X2xvYWRlciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRlcj4obV9yZWFkVHlwZSwgc3RhdGlj
X2Nhc3Q8RmlsZVJlYWRlckxvYWRlckNsaWVudCo+KHRoaXMpKTsKICAgICBtX2xvYWRlci0+c2V0
RW5jb2RpbmcobV9lbmNvZGluZyk7CiAgICAgbV9sb2FkZXItPnNldERhdGFUeXBlKG1fYmxvYi0+
dHlwZSgpKTsKICAgICBtX2xvYWRlci0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBi
bG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNmFlNTUyY2Jj
ZWZiYTM1YWY1NDk0YWQ4MGExNDczMWQwMGFjYTNkMS4uNWM4ZjE4ZTNkYWIwZWIyNTk3YWQ1ZTgy
MjEzOWJkODhmZjMyNGUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAK
QEAgLTE2Myw3ICsxNjMsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUmIGZyYW1l
KQogCiAgICAgLy8gQ3JlYXRlIHRoZSBDYWNoZWRGcmFtZXMgZm9yIGFsbCBGcmFtZXMgaW4gdGhl
IEZyYW1lVHJlZS4KICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1lLnRyZWUoKS5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKLSAgICAg
ICAgbV9jaGlsZEZyYW1lcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRGcmFtZT4oKmNo
aWxkKSk7CisgICAgICAgIG1fY2hpbGRGcmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8Q2FjaGVkRnJh
bWU+KCpjaGlsZCkpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC0+ZG9tV2luZG93
KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9jdW1lbnQtPmZyYW1lKCkpOwpAQCAtMTcyLDcg
KzE3Miw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAgICAgLy8g
QWN0aXZlIERPTSBvYmplY3RzIG11c3QgYmUgc3VzcGVuZGVkIGJlZm9yZSB3ZSBjYWNoZSB0aGUg
ZnJhbWUgc2NyaXB0IGRhdGEuCiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZChSZWFzb25Gb3JTdXNw
ZW5zaW9uOjpQYWdlQ2FjaGUpOwogCi0gICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4oZnJhbWUpOworICAgIG1fY2FjaGVk
RnJhbWVTY3JpcHREYXRhID0gbWFrZVVuaXF1ZTxTY3JpcHRDYWNoZWRGcmFtZURhdGE+KGZyYW1l
KTsKIAogICAgIG1fZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5zdXNwZW5kRm9yUGFnZUNhY2hlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCmluZGV4IDA2ODZhZThmZWNlNDRm
MWVmNjkwZTVmOGY2YWJlODQ2MTQ2M2RmN2QuLjk3NDdhNDA0MDE2YWM4NjhkMmY3Nzk2ZTUzMzA0
MzZmZmE1ODc0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcApAQCAtNTYs
NyArNTYsNyBAQCBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0Nv
dW50ZXIsIGNhY2hlZFBhZ2VDb3VudGVyLCAoIkNhY2hlZAogQ2FjaGVkUGFnZTo6Q2FjaGVkUGFn
ZShQYWdlJiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2V4cGlyYXRpb25UaW1l
KE1vbm90b25pY1RpbWU6Om5vdygpICsgU2Vjb25kcyhwYWdlLnNldHRpbmdzKCkuYmFja0Zvcndh
cmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbCgpKSkKLSAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKHN0
ZDo6bWFrZV91bmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2UubWFpbkZyYW1lKCkpKQorICAgICwgbV9j
YWNoZWRNYWluRnJhbWUobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkp
CiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGNhY2hlZFBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4IDAwMjk2NTU4OTJkMTU0Y2I1MDQz
ZTFkYTIyODI1ODc5ZjYzZWRkZTUuLjNiYTI0YjlkZTJlOTk0MTk2YTBkZjkyZmMzNjYzY2VlYTVi
ZjRiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTQ3OCw3ICs0Nzgs
NyBAQCBib29sIFBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBh
Z2UqIHBhZ2UpCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBmaXJlIGFueSBKUyBldmVu
dHMgaW4gdGhpcyBzY29wZS4KICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5U
aHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCi0gICAgICAgIGl0ZW0ubV9jYWNoZWRQYWdl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7CisgICAgICAgIGl0ZW0ubV9j
YWNoZWRQYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRQYWdlPigqcGFnZSk7CiAgICAgICAgIGl0ZW0u
bV9wcnVuaW5nUmVhc29uID0gUHJ1bmluZ1JlYXNvbjo6Tm9uZTsKICAgICAgICAgbV9pdGVtcy5h
ZGQoJml0ZW0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4
IDdhOTkxZjE3YjAzZDgzZTkwNWY3ZDNlMDYwN2JmNTJhOTliODBlNDUuLmIxNGQzMTAxNThiNjQ1
ZmU4Njk5ZjdmOTlmNDE4NThiZDU1YWUyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVxdWVzdElj
b24oY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgICAgICBtX2ZpbGVJY29uTG9hZGVy
LT5pbnZhbGlkYXRlKCk7CiAKICAgICBGaWxlSWNvbkxvYWRlckNsaWVudCYgY2xpZW50ID0gKnRo
aXM7Ci0gICAgbV9maWxlSWNvbkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZUljb25Mb2Fk
ZXI+KGNsaWVudCk7CisgICAgbV9maWxlSWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8RmlsZUljb25M
b2FkZXI+KGNsaWVudCk7CiAKICAgICBjaHJvbWUtPmxvYWRJY29uRm9yRmlsZXMocGF0aHMsICpt
X2ZpbGVJY29uTG9hZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUFzc29jaWF0ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0
ZWRFbGVtZW50LmNwcAppbmRleCA4MDZlNWYzZGFlYmUyOTRlMzMwMjMwZGZhNWVkZThjOTJkNThj
MzE4Li4xN2MwMjdjZmRmYTFiYjQzYjY0NWVlNjJkNThjOGFjMzIwNmQ4NzY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC0yNzksNyArMjc5
LDcgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0
IFN0cmluZyYgZXJyb3IpCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVzZXRGb3JtQXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGFzSFRNTEVsZW1lbnQoKS5pc0Nvbm5lY3RlZCgpKTsKLSAgICBtX2Zvcm1BdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUF0dHJpYnV0ZVRhcmdldE9i
c2VydmVyPihhc0hUTUxFbGVtZW50KCkuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihm
b3JtQXR0ciksICp0aGlzKTsKKyAgICBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1h
a2VVbmlxdWU8Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhc0hUTUxFbGVtZW50KCkuYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JtQXR0ciksICp0aGlzKTsKIH0KIAogdm9p
ZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVUYXJnZXRDaGFuZ2VkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggZWE1YjA5YWFhMDhkYjI3Mzk2
MWI5NTM0MjJmMDNkZDdhZDZlNDY3MS4uZDBlMDNmNTZjYjA2M2UyN2YxMTM0MGEyNzEzZDRmOTYx
YjVhZTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTIwMCw3
ICsyMDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2F2ZWRGb3JtU3RhdGU+IFNhdmVkRm9ybVN0YXRl
OjpkZXNlcmlhbGl6ZShjb25zdCBWZWN0b3I8U3RyaW5nPgogICAgIHNpemVfdCBpdGVtQ291bnQg
PSBzdGF0ZVZlY3RvcltpbmRleCsrXS50b1VJbnQoKTsKICAgICBpZiAoIWl0ZW1Db3VudCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBzYXZlZEZvcm1TdGF0ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CisgICAgYXV0byBzYXZlZEZvcm1TdGF0ZSA9IG1h
a2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CiAgICAgd2hpbGUgKGl0ZW1Db3VudC0tKSB7CiAg
ICAgICAgIGlmIChpbmRleCArIDEgPj0gc3RhdGVWZWN0b3Iuc2l6ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0zNjUsMTMgKzM2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGZvcm1T
dGF0ZVNpZ25hdHVyZSgpCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUNvbnRyb2xsZXI6OlNhdmVkRm9y
bVN0YXRlTWFwPiBGb3JtQ29udHJvbGxlcjo6Y3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29uc3Qg
Rm9ybUVsZW1lbnRMaXN0SGFzaFNldCYgY29udHJvbExpc3QpCiB7CiAgICAgRm9ybUtleUdlbmVy
YXRvciBrZXlHZW5lcmF0b3I7Ci0gICAgYXV0byBzdGF0ZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8
U2F2ZWRGb3JtU3RhdGVNYXA+KCk7CisgICAgYXV0byBzdGF0ZU1hcCA9IG1ha2VVbmlxdWU8U2F2
ZWRGb3JtU3RhdGVNYXA+KCk7CiAgICAgZm9yIChhdXRvJiBjb250cm9sIDogY29udHJvbExpc3Qp
IHsKICAgICAgICAgaWYgKCFjb250cm9sLT5zaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9s
U3RhdGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhdXRvJiBmb3JtU3RhdGUg
PSBzdGF0ZU1hcC0+YWRkKGtleUdlbmVyYXRvci5mb3JtS2V5KCpjb250cm9sKS5pbXBsKCksIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgaWYgKCFmb3JtU3RhdGUpCi0gICAgICAg
ICAgICBmb3JtU3RhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOworICAg
ICAgICAgICAgZm9ybVN0YXRlID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAgICAg
ICAgZm9ybVN0YXRlLT5hcHBlbmRDb250cm9sU3RhdGUoY29udHJvbC0+bmFtZSgpLCBjb250cm9s
LT50eXBlKCksIGNvbnRyb2wtPnNhdmVGb3JtQ29udHJvbFN0YXRlKCkpOwogICAgIH0KICAgICBy
ZXR1cm4gc3RhdGVNYXA7CkBAIC00MDMsNyArNDAzLDcgQEAgRm9ybUNvbnRyb2xTdGF0ZSBGb3Jt
Q29udHJvbGxlcjo6dGFrZVN0YXRlRm9yRm9ybUVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm9s
RWwKICAgICBpZiAobV9zYXZlZEZvcm1TdGF0ZU1hcC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBGb3JtQ29udHJvbFN0YXRlKCk7CiAgICAgaWYgKCFtX2Zvcm1LZXlHZW5lcmF0b3IpCi0gICAg
ICAgIG1fZm9ybUtleUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUtleUdlbmVyYXRv
cj4oKTsKKyAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yID0gbWFrZVVuaXF1ZTxGb3JtS2V5R2Vu
ZXJhdG9yPigpOwogICAgIFNhdmVkRm9ybVN0YXRlTWFwOjppdGVyYXRvciBpdCA9IG1fc2F2ZWRG
b3JtU3RhdGVNYXAuZmluZChtX2Zvcm1LZXlHZW5lcmF0b3ItPmZvcm1LZXkoY29udHJvbCkuaW1w
bCgpKTsKICAgICBpZiAoaXQgPT0gbV9zYXZlZEZvcm1TdGF0ZU1hcC5lbmQoKSkKICAgICAgICAg
cmV0dXJuIEZvcm1Db250cm9sU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAKaW5kZXggMTA0N2M1OGVlYzM1MzZlM2QzOTkzYTdiNmU1ODYyNWIwMTU5NTJm
MS4uZWI5YmQwNjg1ZDU5MmVhNjkyMzEzYWQ0MTZjMjdkN2YyODI2MWY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCBib29s
IEhUTUxBbmNob3JFbGVtZW50OjpoYXNSZWwoUmVsYXRpb24gcmVsYXRpb24pIGNvbnN0CiBET01U
b2tlbkxpc3QmIEhUTUxBbmNob3JFbGVtZW50OjpyZWxMaXN0KCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcmVsTGlzdCkgewotICAgICAgICBtX3JlbExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRv
a2VuTGlzdD4oY29uc3RfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCY+KCp0aGlzKSwgSFRNTE5hbWVz
OjpyZWxBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9y
ZWxMaXN0ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nhc3Q8SFRNTEFuY2hvckVs
ZW1lbnQmPigqdGhpcyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdW
aWV3IHRva2VuKSB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgICAgICAgICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJub3JlZmVycmVyIikgfHwgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm5vb3BlbmVyIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0b2tlbiwgImFyIik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
Y3BwCmluZGV4IGFjMDc1OGRlODNiMDQ4ODJhNWQ4OTIyZmQ0MDU1NDhlZjk1NmRjYTIuLjQ5YWJm
YTVmNzBhN2FiOTdkNzNlMmM4MmI3NjdiMDUzNTFhZGVmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBIVE1MQXJlYUVsZW1l
bnQ6OmludmFsaWRhdGVDYWNoZWRSZWdpb24oKQogYm9vbCBIVE1MQXJlYUVsZW1lbnQ6Om1hcE1v
dXNlRXZlbnQoTGF5b3V0UG9pbnQgbG9jYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNpemUsIEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBpZiAobV9sYXN0U2l6ZSAhPSBzaXplKSB7Ci0g
ICAgICAgIG1fcmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYXRoPihnZXRSZWdpb24oc2l6ZSkp
OworICAgICAgICBtX3JlZ2lvbiA9IG1ha2VVbmlxdWU8UGF0aD4oZ2V0UmVnaW9uKHNpemUpKTsK
ICAgICAgICAgbV9sYXN0U2l6ZSA9IHNpemU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDA3NzE1Y2JiNTA5NTRhNjI2MzZjOTMzMDVhNzY1
MzM1OWQxZTZmNmIuLjIwMTRlZmU3NWNlYzQ2MGUzNzkxZTM2M2Y1NjI4ZTUwMDFiOGRjZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC05NTIsNyArOTUy
LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikgY28KICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0
KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXModHJ1ZSk7CiAgICAgbV9pbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoZGVmYXVsdEludGVycG9sYXRp
b25RdWFsaXR5KTsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tu
ZXNzKDEpOwotICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgbV9j
b250ZXh0U3RhdGVTYXZlciA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcj4o
bV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2so
SFRNTEVsZW1lbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKSk7CiAgICAgSFRNTEVs
ZW1lbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVt
b3J5QWxsb2NhdGVkKG1lbW9yeUNvc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCmluZGV4IDk3NmM4ZTBhOWEwNmE5YjgzZDZjYTk0MWJkNWRkMzdiOWYzMzg1YzUuLjMy
ODE3NmI2OWU4Y2QxYmYyMmQ0ZTc2MzI3ZTlmMjkyOTY4YWI0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBIVE1MQ29sbGVj
dGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAgIGlmIChoYXNOYW1lZEVs
ZW1lbnRDYWNoZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGNhY2hlID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CisgICAgYXV0byBjYWNo
ZSA9IG1ha2VVbmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwogCiAgICAgdW5z
aWduZWQgc2l6ZSA9IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRl
eCBmMTU3ODc0ZTZkNTM0ZTNmNjEzNGU0YTVkZjRmNTFiZTJmNjdhMzFhLi42MGRkMWZiMjUyMDM4
NjBkM2Q5MmE3YTVhY2IzMzFjMmFiMDRiNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwCkBAIC04OCw3ICs4OCw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIERl
dGFpbHNTbG90QXNzaWdubWVudDo6c2xvdE5hbWVGb3JIb3N0Q2hpbGQoY29uc3QgTm9kZSYgY2hp
bGQpCiBSZWY8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAg
YXV0byBkZXRhaWxzID0gYWRvcHRSZWYoKm5ldyBIVE1MRGV0YWlsc0VsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpKTsKLSAgICBkZXRhaWxzLT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0
ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWxzU2xvdEFzc2lnbm1lbnQ+KCkpKTsK
KyAgICBkZXRhaWxzLT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwg
bWFrZVVuaXF1ZTxEZXRhaWxzU2xvdEFzc2lnbm1lbnQ+KCkpKTsKICAgICByZXR1cm4gZGV0YWls
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggZDg4OTNiMWYwOTQ5ZWYxMDJlMjlkMDNjNTg5NjdjNGRkNGYzZmQ1YS4uZTE1MzE2
YTE5ZWVmYjQ3N2UzZjM2N2M4MGY3YzNjMWEyYTYzNGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAgdm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2Uo
KQogICAgIGlmIChyZW5kZXJlcigpICYmIHdpbGxWYWxpZGF0ZSgpKQogICAgICAgICBtZXNzYWdl
ID0gdmFsaWRhdGlvbk1lc3NhZ2UoKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBpZiAoIW1fdmFs
aWRhdGlvbk1lc3NhZ2UpCi0gICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0aGlzKTsKKyAgICAgICAgbV92YWxpZGF0aW9uTWVz
c2FnZSA9IG1ha2VVbmlxdWU8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMpOwogICAgIG1fdmFsaWRh
dGlvbk1lc3NhZ2UtPnVwZGF0ZVZhbGlkYXRpb25NZXNzYWdlKG1lc3NhZ2UpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmlu
ZGV4IDZlYzIyZDc3NDlmMmY3OGJkMzFlZjc3ZWE2MzYwNzNiNzFjNTlmZjIuLmEyYjAwZThmODE2
ZGExYzIyMWIxYzM2NmVhNmU2ODljM2IxYzY4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
dm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUo
KSBjb25zdAogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVt
ZW50Q2FjaGU+KCk7CisgICAgYXV0byBjYWNoZSA9IG1ha2VVbmlxdWU8Q29sbGVjdGlvbk5hbWVk
RWxlbWVudENhY2hlPigpOwogCiAgICAgSGFzaFNldDxBdG9tU3RyaW5nSW1wbCo+IGZvdW5kSW5w
dXRFbGVtZW50czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4
IGM3NmQ0OTNhNjJjZWQ4MzA4ODAxYjZiMDFkMzMyMWUwYTMzM2Y1MWQuLjQzNWQ5NTE0ZGQyOWRk
ZDFmNmRmYjFkMTY5ZTM0N2UzMTVhMzAxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6YWRk
VG9QYXN0TmFtZXNNYXAoRm9ybU5hbWVkSXRlbSogaXRlbSwgY29uc3QgQXRvbVN0cmluZyYgcAog
ICAgIGlmIChwYXN0TmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1f
cGFzdE5hbWVzTWFwKQotICAgICAgICBtX3Bhc3ROYW1lc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFzdE5hbWVzTWFwPigpOworICAgICAgICBtX3Bhc3ROYW1lc01hcCA9IG1ha2VVbmlxdWU8UGFz
dE5hbWVzTWFwPigpOwogICAgIG1fcGFzdE5hbWVzTWFwLT5zZXQocGFzdE5hbWUuaW1wbCgpLCBp
dGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRl
eCAwMmQ3ZDRlNGZiZTg2ZjUyNzBmNTg0YjZhOGRlYjliZTQ2Zjk3YWE5Li5iMWM4MjFkZDliYWJh
MmEyMGNiMjllMWMxY2ZkOTBkNzFmZWM1OGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCBSZWY8SFRNTElGcmFtZUVsZW1lbnQ+
IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RAogRE9NVG9rZW5MaXN0JiBIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCgpCiB7CiAgICAgaWYg
KCFtX3NhbmRib3gpIHsKLSAgICAgICAgbV9zYW5kYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxET01U
b2tlbkxpc3Q+KCp0aGlzLCBzYW5kYm94QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRv
a2VuKSB7CisgICAgICAgIG1fc2FuZGJveCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhp
cywgc2FuZGJveEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogICAgICAg
ICAgICAgcmV0dXJuIFNlY3VyaXR5Q29udGV4dDo6aXNTdXBwb3J0ZWRTYW5kYm94UG9saWN5KHRv
a2VuKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKaW5kZXggMGMyNWNkZDgwZDVmOGE3NzBhMWQ5NzAwNTc4NDdhODljNTY4M2RiZC4u
Mzc2YzUyMTk2NGUwZjcxYjZmZDljMjE3MmQ2MjAxYzI5MjU3YTFiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVmPEhUTUxJ
bnB1dEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2MKIEhUTUxJbWFnZUxvYWRlciYgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJl
SW1hZ2VMb2FkZXIoKQogewogICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgbV9pbWFn
ZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAg
ICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9pbWFnZUxvYWRlcjsKIH0KIApAQCAtMTY0MSw3ICsxNjQxLDcgQEAgUmVm
UHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IEhUTUxJbnB1dEVsZW1lbnQ6OmRhdGFMaXN0KCkgY29u
c3QKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2
ZXIoKQogewogICAgIGlmIChpc0Nvbm5lY3RlZCgpKQotICAgICAgICBtX2xpc3RBdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyPihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7Cisg
ICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbWFrZVVuaXF1ZTxMaXN0QXR0
cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGlz
dEF0dHIpLCB0aGlzKTsKICAgICBlbHNlCiAgICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9i
c2VydmVyID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAppbmRleCBiODYzNGNhZGFmYTE4YTBhMjdjY2Y3MjhmOWJiZjU2Y2I3Zjc4ZDE2Li5mNmE3YmM4
MDI0ZmZhNWU0YmQ3MWY2OWEyN2M5N2M4YzkzNmJiNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBIVE1MTGlua0VsZW1l
bnQ6OnN0eWxlU2hlZXRJc0xvYWRpbmcoKSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MTGlua0Vs
ZW1lbnQ6OnNpemVzKCkKIHsKICAgICBpZiAoIW1fc2l6ZXMpCi0gICAgICAgIG1fc2l6ZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNpemVzQXR0cik7CisgICAgICAg
IG1fc2l6ZXMgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNpemVzQXR0cik7CiAg
ICAgcmV0dXJuICptX3NpemVzOwogfQogCkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBIVE1MTGlu
a0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KExpbmtFdmVudFNlbmRlciogZXZlbnRTZW5k
ZXIpCiBET01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCgpCiB7CiAgICAgaWYg
KCFtX3JlbExpc3QpIAotICAgICAgICBtX3JlbExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRv
a2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmIGRvY3VtZW50
LCBTdHJpbmdWaWV3IHRva2VuKSB7CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlxdWU8RE9N
VG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYgZG9jdW1l
bnQsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICAgICAgICAgICAgIHJldHVybiBMaW5rUmVsQXR0cmli
dXRlOjppc1N1cHBvcnRlZChkb2N1bWVudCwgdG9rZW4pOwogICAgICAgICB9KTsKICAgICByZXR1
cm4gKm1fcmVsTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IGI1NWM0NjkwNjFkY2MwNGYyYTExOWEyNTUzOGVmMDgyZmU2ZTQzNTUuLmY2NGZlOTJiNmI3
ZDAxYzQ5NGI1N2E3NjVlMmE1NWI2NGIzZjA0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhU
TUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoSW5pdGlhbGl6YXRpb24oKQogewot
ICAgIG1fbWVkaWFTZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYUVsZW1lbnRTZXNzaW9u
PigqdGhpcyk7CisgICAgbV9tZWRpYVNlc3Npb24gPSBtYWtlVW5pcXVlPE1lZGlhRWxlbWVudFNl
c3Npb24+KCp0aGlzKTsKIAogICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0
aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4p
OwogICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVu
dFNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhKTsKQEAgLTMwMjcsNyArMzAy
Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVk
aWFUaW1lJiBpblRpbWUsIGNvbnN0IE1lZGlhVGltCiAKICAgICAvLyA1IC0gSWYgdGhlIHNlZWsg
d2FzIGluIHJlc3BvbnNlIHRvIGEgRE9NIG1ldGhvZCBjYWxsIG9yIHNldHRpbmcgb2YgYW4gSURM
IGF0dHJpYnV0ZSwgdGhlbiBjb250aW51ZQogICAgIC8vIHRoZSBzY3JpcHQuIFRoZSByZW1haW5k
ZXIgb2YgdGhlc2Ugc3RlcHMgbXVzdCBiZSBydW4gYXN5bmNocm9ub3VzbHkuCi0gICAgbV9wZW5k
aW5nU2VlayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRp
dmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKKyAgICBtX3BlbmRpbmdTZWVrID0gbWFr
ZVVuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRp
dmVUb2xlcmFuY2UpOwogICAgIGlmIChmcm9tRE9NKSB7CiAgICAgICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIsICJlbnF1ZXVpbmcgc2VlayBmcm9tICIsIG5vdywgIiB0byAiLCB0aW1lKTsKICAg
ICAgICAgbV9zZWVrVGFza1F1ZXVlLnNjaGVkdWxlVGFzayhzdGQ6OmJpbmQoJkhUTUxNZWRpYUVs
ZW1lbnQ6OnNlZWtUYXNrLCB0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IDYxMjQ1NDFmN2NmNTRhMTEwYTVlNDg2ZTQyYzcxY2QyYTJlZmExOTMuLjJjNmVj
MDU4ZTRjOTUyMTMxYzBlYTA4ZTA4YTdlYTk0MzU4MDY1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC05OTAsNiArOTkwLDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxl
bWVudAogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCiAgICAgc3RydWN0IFBlbmRp
bmdTZWVrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBQZW5kaW5nU2Vlayhjb25zdCBNZWRpYVRpbWUmIG5vdywgY29uc3QgTWVkaWFUaW1lJiB0YXJn
ZXRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVG9sZXJhbmNlLCBjb25zdCBNZWRpYVRp
bWUmIHBvc2l0aXZlVG9sZXJhbmNlKQogICAgICAgICAgICAgOiBub3cobm93KQogICAgICAgICAg
ICAgLCB0YXJnZXRUaW1lKHRhcmdldFRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuY3BwCmluZGV4IGRkNGZhMmQ3MGU0ZjQzZjQyYjgyMjJkMzdkNDQxOGYxYTEzMWVk
ODcuLjU2YjcyMDZhZTNiZThmMTBhODgxNGFlOWFmYWM2MmJmZWI1NjA5YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBIVE1MT3V0cHV0RWxlbWVudDo6c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiBET01Ub2tlbkxpc3QmIEhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKCkKIHsKICAgICBpZiAo
IW1fdG9rZW5zKQotICAgICAgICBtX3Rva2VucyA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5M
aXN0PigqdGhpcywgZm9yQXR0cik7CisgICAgICAgIG1fdG9rZW5zID0gbWFrZVVuaXF1ZTxET01U
b2tlbkxpc3Q+KCp0aGlzLCBmb3JBdHRyKTsKICAgICByZXR1cm4gKm1fdG9rZW5zOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBk
ZGE5NDQ5ZDU3YWQ0MjA4NTg2MjdkZWQzZmRkOTE4MTMyMTVmZTJiLi41Yjk5ZDU1NTUzMDQ5NzA5
M2M2YmNhOTk1ODdjN2EyZjcyNTU5MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZUFmdGVyU3R5bGVSZXNvbHV0aW9uKCkKICAgICBpZiAocmVu
ZGVyZXIoKSAmJiAhdXNlRmFsbGJhY2tDb250ZW50KCkpIHsKICAgICAgICAgaWYgKGlzSW1hZ2VU
eXBlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlz
KTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VM
b2FkZXI+KCp0aGlzKTsKICAgICAgICAgICAgIGlmIChtX25lZWRzSW1hZ2VSZWxvYWQpCiAgICAg
ICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZp
b3VzRXJyb3IoKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1
bW1hcnlFbGVtZW50LmNwcAppbmRleCAxMGJjMDlmZjA5OWM4ODhiMjI2MjY5MzkwYjhlMWY4YmU0
Y2UzOTY3Li5iMDQ5MzliOWMyZDcyNzAyMTM3OWM1YTRkZDM0MDQ3ZDgxMmFkOTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IGNsYXNzIFN1bW1hcnlTbG90RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTbG90QXNzaWdubWVudCB7
CiBSZWY8SFRNTFN1bW1hcnlFbGVtZW50PiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgUmVm
PEhUTUxTdW1tYXJ5RWxlbWVudD4gc3VtbWFyeSA9IGFkb3B0UmVmKCpuZXcgSFRNTFN1bW1hcnlF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgc3VtbWFyeS0+YWRkU2hhZG93Um9vdChT
aGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8U3VtbWFyeVNsb3RF
bGVtZW50PigpKSk7CisgICAgc3VtbWFyeS0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVh
dGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8U3VtbWFyeVNsb3RFbGVtZW50PigpKSk7CiAgICAgcmV0
dXJuIHN1bW1hcnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CmluZGV4IGE1ZTc1YWFmZjUyZGRmOWY1NzU0NWJhMDY3ZWVjNzg5ODg4ZGQ5YWIuLjY3ZmYyMTI1
MmYxYjhlODMxMGExZDdjYmIyMzJlYThjNzM5MzhhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1l
bnQ6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgdXBkYXRlRGlzcGxheVN0YXRlKCk7CiAgICAg
aWYgKHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpKSB7CiAgICAgICAgIGlmICghbV9pbWFnZUxv
YWRlcikKLSAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJ
bWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlx
dWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0
ZUZyb21FbGVtZW50KCk7CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+aW1hZ2VSZXNvdXJjZSgpLnNldENhY2hlZElt
YWdlKG1faW1hZ2VMb2FkZXItPmltYWdlKCkpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluCiAKICAgICAgICAgaWYgKHNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgp
KSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICAgICAgbV9p
bWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7Cisg
ICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVy
PigqdGhpcyk7CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudEln
bm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1
YmxpY1VSTE1hbmFnZXIuY3BwCmluZGV4IDdiZWJjN2ExMGNjYmVkNTNjZmU4Y2FmOGEwN2M3OGU2
YzU3OWQ2NGYuLmI2NjhkYTFmMzIxNGRiZjliOTE2MWVmYTgzMjU2Yzk1Y2E4MjExZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQdWJsaWNVUkxNYW5hZ2VyPiBQ
dWJsaWNVUkxNYW5hZ2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
IHsKLSAgICBhdXRvIHB1YmxpY1VSTE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1YmxpY1VS
TE1hbmFnZXI+KGNvbnRleHQpOworICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9IG1ha2VVbmlx
dWU8UHVibGljVVJMTWFuYWdlcj4oY29udGV4dCk7CiAgICAgcHVibGljVVJMTWFuYWdlci0+c3Vz
cGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHB1YmxpY1VSTE1hbmFnZXI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmluZGV4IDhhZjczYThhMDA1NDk4MGFk
MTc5MDY5NTZhODQzMmE2ZjljZGIxNGIuLmY1ZGFiMGY0MmYyZDA1M2U3MDNjNmM1NzIzY2ExNjAz
NzFkMWEyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3Nh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCkBA
IC0xMTUsOSArMTE1LDkgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7CiAgICAg
bV9tZXNzYWdlID0gbWVzc2FnZTsKICAgICBpZiAoIW1fYnViYmxlKQotICAgICAgICBtX3RpbWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVp
bGRCdWJibGVUcmVlKTsKKyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlz
LCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7CiAgICAgZWxzZQotICAgICAg
ICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVz
c2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIpOworICAgICAgICBtX3RpbWVyID0gbWFr
ZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFu
ZFN0YXJ0VGltZXIpOwogICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCkBAIC0x
NDMsNyArMTQzLDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURPTUFuZFN0
YXJ0VGltZXIoKQogICAgIGlmIChtYWduaWZpY2F0aW9uIDw9IDApCiAgICAgICAgIG1fdGltZXIg
PSBudWxscHRyOwogICAgIGVsc2UgewotICAgICAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7Cisg
ICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNz
YWdlOjpkZWxldGVCdWJibGVUcmVlKTsKICAgICAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KHN0
ZDo6bWF4KDVfcywgMV9tcyAqIHN0YXRpY19jYXN0PGRvdWJsZT4obV9tZXNzYWdlLmxlbmd0aCgp
KSAqIG1hZ25pZmljYXRpb24pKTsKICAgICB9CiB9CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBW
YWxpZGF0aW9uTWVzc2FnZTo6cmVxdWVzdFRvSGlkZU1lc3NhZ2UoKQogICAgIH0KIAogICAgIC8v
IFdlIG11c3Qgbm90IG1vZGlmeSB0aGUgRE9NIHRyZWUgaW4gdGhpcyBjb250ZXh0IGJ5IHRoZSBz
YW1lIHJlYXNvbiBhcyBzZXRNZXNzYWdlKCkuCi0gICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwor
ICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdl
OjpkZWxldGVCdWJibGVUcmVlKTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCBiMTY3Nzg0NDI4YzNiZmU5ZTZmMTZhNzc4NDBk
M2YzYmI5NzA1Yjk2Li41M2M5YzU2NjA0MjdjNDg2ZTMyYWJjMGMyZDY1NGNjYzU2YzAyOGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtOTksNyArOTksNyBAQCBzdHJ1Y3QgRGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dCB7CiAKICAgICBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0KGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBjbGlwKQogICAg
ICAgICA6IGNvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgZGlzcGxheUxpc3QsIHN0YXRlLCBjbGlwLCBBZmZpbmVU
cmFuc2Zvcm0oKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6
UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgZGlzcGxheUxpc3QsIHN0YXRlLCBjbGlwLCBB
ZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgICAgIH0pCiAgICAgewogICAgIH0KQEAgLTIxMTgsNyAr
MjExOCw3IEBAIEdyYXBoaWNzQ29udGV4dCogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZHJhd2luZ0NvbnRleHQoKSBjb25zdAogewogICAgIGlmIChVTkxJS0VMWShtX3VzZXNEaXNwbGF5
TGlzdERyYXdpbmcpKSB7CiAgICAgICAgIGlmICghbV9yZWNvcmRpbmdDb250ZXh0KQotICAgICAg
ICAgICAgbV9yZWNvcmRpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdERy
YXdpbmdDb250ZXh0PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dDo6emVybygpLCBjYW52YXNCYXNlKCkuc2l6ZSgpKSk7CisgICAgICAgICAgICBtX3JlY29yZGlu
Z0NvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdyYXBoaWNz
Q29udGV4dFN0YXRlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2Uo
KS5zaXplKCkpKTsKICAgICAgICAgcmV0dXJuICZtX3JlY29yZGluZ0NvbnRleHQtPmNvbnRleHQ7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDYzMTE5MTc1NzBmMmRiMjg1OTRjYmIzNDkwMjQ2OTk3
YjU4M2ZiZTAuLmNkNDcyMTI2MWIyZTAyMmI1NTI1ZGQzZDNjYTU0NjlmOWMwYjNlYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0xMzU5LDcgKzEzNTksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICNkZWZpbmUgRU5B
QkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwgbmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkg
XAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBc
CiAgICAgICAgIGlmICghdmFyaWFibGUpIHsgXAotICAgICAgICAgICAgdmFyaWFibGUgPSAoY2Fu
RW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAorICAg
ICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMp
IDogbnVsbHB0cjsgXAogICAgICAgICAgICAgaWYgKHZhcmlhYmxlICE9IG51bGxwdHIpIFwKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lv
bigqdGhpcywgbmFtZSk7IFwKICAgICAgICAgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlMDZiZjk5ZDU5MTU5
NjM5ODBhNjExYzMyYTgzOWUyOTdmMTI4MDQ1Li5lNWZkZTcwMzM3NDU2YTMxZTE1NzFlZTEwZjNm
ZDI2NDJkYjAzNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBXZWJHTEV4dGVuc2lv
biogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1l
KQogI2RlZmluZSBFTkFCTEVfSUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJh
bCwgY2FuRW5hYmxlKSBcCiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgbmFt
ZUxpdGVyYWwpKSB7IFwKICAgICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAgICAgICAgICB2
YXJpYWJsZSA9IChjYW5FbmFibGUpID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigqdGhpcykgOiBu
dWxscHRyOyBcCisgICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gbWFrZVVuaXF1
ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0g
bnVsbHB0cikgXAogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKQEAgLTEzMiw3ICsx
MzIsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVy
ZUxPRCA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1
cmVfbG9kIl9zKTsKLSAgICAgICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KCp0aGlzKTsKKyAgICAgICAgICAgICAg
ICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBtYWtlVW5pcXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+
KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVu
YWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTE1OSw3ICsxNTksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgICAgIG1fd2ViZ2xE
cmF3QnVmZmVycyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19i
dWZmZXJzIl9zKTsKLSAgICAgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX3dl
YmdsRHJhd0J1ZmZlcnMgPSBtYWtlVW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KCp0aGlzKTsKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEVuYWJsZUV4dGVuc2lv
bigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE3MSw3ICsxNzEs
NyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJh
eXMgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2Fy
cmF5cyJfcyk7Ci0gICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IHN0ZDo6
bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRBcnJheXM+KCp0aGlzKTsKKyAgICAgICAgICAgICAg
ICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gbWFrZVVuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5
cz4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAppbmRleCAzZWNlN2VlYjc0MmZhZGI2ZmUxOGIzM2ViNWE2MTM5Y2VkNDFi
YTU2Li5kMTY2ZmIyMzkwNzZkMzYyNjVkOTZjNjQ1ZjA3MTg3NWFjODJiYjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcApAQCAtNzk5LDggKzc5OSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6aW5pdGlhbGl6ZU5ld0NvbnRleHQoKQogICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwg
Y2FudmFzU2l6ZS53aWR0aCgpLCBjYW52YXNTaXplLmhlaWdodCgpKTsKICAgICBtX2NvbnRleHQt
PnNjaXNzb3IoMCwgMCwgY2FudmFzU2l6ZS53aWR0aCgpLCBjYW52YXNTaXplLmhlaWdodCgpKTsK
IAotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhzdGQ6Om1ha2VfdW5pcXVl
PFdlYkdMUmVuZGVyaW5nQ29udGV4dExvc3RDYWxsYmFjaz4odGhpcykpOwotICAgIG1fY29udGV4
dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmlu
Z0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjaz4odGhpcykpOworICAgIG1fY29udGV4dC0+c2V0
Q29udGV4dExvc3RDYWxsYmFjayhtYWtlVW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dExvc3RD
YWxsYmFjaz4odGhpcykpOworICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2so
bWFrZVVuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRFcnJvck1lc3NhZ2VDYWxsYmFjaz4odGhp
cykpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MoKQpA
QCAtMTU3OSw3ICsxNTc5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21w
aWxlU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNj
cmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0
YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSk7CiAKICAgICAgICAgZm9yIChhdXRvJiBl
cnJvciA6IGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5zcGxpdCgnXG4nKSkKLSAgICAgICAgICAg
IGNhbnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2Fn
ZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3IsIHN0YWNr
VHJhY2UuY29weVJlZigpKSk7CisgICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50KCkuYWRkQ29u
c29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
ICJXZWJHTDogIiArIGVycm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkpOwogICAgIH0KIH0KIApA
QCAtNTgwOCw5ICs1ODA4LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwcmlu
dFRvQ29uc29sZShNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYKICAgICAvLyBFcnJv
ciBtZXNzYWdlcyBjYW4gb2NjdXIgZHVyaW5nIGZ1bmN0aW9uIGNhbGxzLCBzbyBzaG93IHN0YWNr
IHRyYWNlcyBmb3IgdGhlbS4KICAgICBpZiAobGV2ZWwgPT0gTWVzc2FnZUxldmVsOjpFcnJvcikg
ewogICAgICAgICBSZWY8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJ
bnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRl
KCkpOwotICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6
TG9nLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CisgICAgICAgIGNvbnNv
bGVNZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBXVEZN
b3ZlKHN0YWNrVHJhY2UpKTsKICAgICB9IGVsc2UKLSAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UpOworICAgICAgICBj
b25zb2xlTWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSk7
CiAKICAgICBhdXRvKiBjYW52YXMgPSBodG1sQ2FudmFzKCk7CiAgICAgaWYgKGNhbnZhcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAppbmRl
eCBlODU5MGNjYzY5NzI4YWYzOTMwMWQzYWU4ZDg5ODhmNWMxNWE0YjJhLi5hZWZlNDU3ZjRlZmYw
NDM2NTc2M2NiMjZmNzE3ODQ2M2UzMmUxZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBD
U1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUoKQogICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIFVSTCBiYXNlRWxlbWVudFVSTDsgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIHBhc3NlZCBpbiBmcm9tIHRoZSBIVE1MUHJlbG9hZFNjYW5uZXIgdmlhIHNjYW4oKTogd2l0
aG91dCBpdCB3ZSB3aWxsIGdldCByZWxhdGl2ZSBVUkxzIHdyb25nLgogICAgICAgICAgICAgLy8g
RklYTUU6IFNob3VsZCB0aGlzIGJlIGluY2x1ZGluZyB0aGUgY2hhcnNldCBpbiB0aGUgcHJlbG9h
ZCByZXF1ZXN0PwotICAgICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNv
dXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1
bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpKTsKKyAgICAgICAgICAg
IG1fcmVxdWVzdHMtPmFwcGVuZChtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIiwgdXJs
LCBiYXNlRWxlbWVudFVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQsIFN0
cmluZygpLCBQcmVsb2FkUmVxdWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xpY3k6
OkVtcHR5U3RyaW5nKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9zdGF0ZSA9IEluaXRpYWw7CiAg
ICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShydWxlLCAiY2hhcnNl
dCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCmluZGV4IDUxYmFlNGMyMWNmOTQwZGNkOGM2ZDMyMGJjNGRiZDY2MjZiZTdkOWYu
LjlhYzQ0NGVmMGE2NzFmOGE0NzY5OTU3YWUzMjIyYmQ4ZDEwMDdkOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTUw
Myw3ICs1MDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRh
dGE+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRQogICAgIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSogZWxlbWVudEludGVyZmFjZSA9IG51bGxwdHI7CiAgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UodG9rZW4sICZlbGVtZW50SW50ZXJmYWNlKTsKICAgICBpZiAoVU5MSUtFTFkoZWxlbWVudElu
dGVyZmFjZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRD
b25zdHJ1Y3Rpb25EYXRhPigqZWxlbWVudEludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBXVEZNb3Zl
KHRva2VuLmF0dHJpYnV0ZXMoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXN0b21F
bGVtZW50Q29uc3RydWN0aW9uRGF0YT4oKmVsZW1lbnRJbnRlcmZhY2UsIHRva2VuLm5hbWUoKSwg
V1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVzKCkpKTsKICAgICBhdHRhY2hMYXRlcihjdXJyZW50Tm9k
ZSgpLCAqZWxlbWVudCk7CiAgICAgbV9vcGVuRWxlbWVudHMucHVzaChIVE1MU3RhY2tJdGVtOjpj
cmVhdGUoZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHRva2VuKSkpOwogICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5jcHAKaW5kZXggNGZmNGUyYjg3ODhhOTE5YmY0MmQxN2FkOWZkNjUxYjliMDNh
ZDE5Yi4uZGQ5ZWEwNGM2ZjUwMGM4NjRiOGM5NGMxOTM4Mzc4NzdhZmZkZTVjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC01
MywxMSArNTMsMTEgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRN
TERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1
bWVudCkKICAgICAsIG1fb3B0aW9ucyhkb2N1bWVudCkKICAgICAsIG1fdG9rZW5pemVyKG1fb3B0
aW9ucykKLSAgICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFNjcmlwdFJ1
bm5lcj4oZG9jdW1lbnQsIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0Jj4oKnRoaXMp
KSkKLSAgICAsIG1fdHJlZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+
KCp0aGlzLCBkb2N1bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQotICAg
ICwgbV9wYXJzZXJTY2hlZHVsZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MUGFyc2VyU2NoZWR1bGVy
PigqdGhpcykpCisgICAgLCBtX3NjcmlwdFJ1bm5lcihtYWtlVW5pcXVlPEhUTUxTY3JpcHRSdW5u
ZXI+KGRvY3VtZW50LCBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVubmVySG9zdCY+KCp0aGlzKSkp
CisgICAgLCBtX3RyZWVCdWlsZGVyKG1ha2VVbmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywg
ZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAsIG1fcGFy
c2VyU2NoZWR1bGVyKG1ha2VVbmlxdWU8SFRNTFBhcnNlclNjaGVkdWxlcj4oKnRoaXMpKQogICAg
ICwgbV94c3NBdWRpdG9yRGVsZWdhdGUoZG9jdW1lbnQpCi0gICAgLCBtX3ByZWxvYWRlcihzdGQ6
Om1ha2VfdW5pcXVlPEhUTUxSZXNvdXJjZVByZWxvYWRlcj4oZG9jdW1lbnQpKQorICAgICwgbV9w
cmVsb2FkZXIobWFrZVVuaXF1ZTxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+KGRvY3VtZW50KSkKIHsK
IH0KIApAQCAtNzAsNyArNzAsNyBAQCBpbmxpbmUgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9j
dW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVsZW1lbgogICAgIDogU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCksIHJhd1BvbGljeSkKICAg
ICAsIG1fb3B0aW9ucyhmcmFnbWVudC5kb2N1bWVudCgpKQogICAgICwgbV90b2tlbml6ZXIobV9v
cHRpb25zKQotICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUcmVlQnVp
bGRlcj4oKnRoaXMsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGlj
eSgpLCBtX29wdGlvbnMpKQorICAgICwgbV90cmVlQnVpbGRlcihtYWtlVW5pcXVlPEhUTUxUcmVl
QnVpbGRlcj4oKnRoaXMsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBv
bGljeSgpLCBtX29wdGlvbnMpKQogICAgICwgbV94c3NBdWRpdG9yRGVsZWdhdGUoZnJhZ21lbnQu
ZG9jdW1lbnQoKSkKIHsKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLWh0bWwtZnJhZ21lbnRzCkBAIC0zMTUsNyArMzE1LDcg
QEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2Rl
IG1vZGUpCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICBBU1NFUlQo
bV90b2tlbml6ZXIuaXNJbkRhdGFTdGF0ZSgpKTsKICAgICAgICAgaWYgKCFtX3ByZWxvYWRTY2Fu
bmVyKSB7Ci0gICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxI
VE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50
KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9
IG1ha2VVbmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVy
bCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgICAgIG1fcHJl
bG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKG1faW5wdXQuY3VycmVudCgpKTsKICAgICAgICAgfQog
ICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkp
OwpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoU2Vn
bWVudGVkU3RyaW5nJiYgc291cmNlKQogICAgICAgICAvLyBDaGVjayB0aGUgZG9jdW1lbnQud3Jp
dGUoKSBvdXRwdXQgd2l0aCBhIHNlcGFyYXRlIHByZWxvYWQgc2Nhbm5lciBhcwogICAgICAgICAv
LyB0aGUgbWFpbiBzY2FubmVyIGNhbid0IGRlYWwgd2l0aCBpbnNlcnRpb25zLgogICAgICAgICBp
ZiAoIW1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIpCi0gICAgICAgICAgICBtX2luc2VydGlvblBy
ZWxvYWRTY2FubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0
aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkp
OworICAgICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IG1ha2VVbmlxdWU8SFRN
TFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgp
LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5l
ci0+YXBwZW5kVG9FbmQoc291cmNlKTsKICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5l
ci0+c2NhbigqbV9wcmVsb2FkZXIsICpkb2N1bWVudCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwCmluZGV4IDMwYzViNDZkZjEw
M2RiZGY2ZjRiN2NlNDA5Y2MzYWExNmM1NDYwMTIuLjZlZjE3MTJiOWQ2M2I3MWFjYjdjMTY5ZjYy
YjQ5YzgyZjMxMDU4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxFbGVtZW50U3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxF
bGVtZW50U3RhY2suY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBIVE1MRWxlbWVudFN0YWNr
OjppbnNlcnRBYm92ZShSZWY8SFRNTFN0YWNrSXRlbT4mJiBpdGVtLCBFbGVtZW50UmVjb3JkJiBy
ZWMKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICsrbV9zdGFja0RlcHRoOwotICAg
ICAgICByZWNvcmRBYm92ZS0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSZWNvcmQ+
KFdURk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSk7CisgICAgICAgIHJl
Y29yZEFib3ZlLT5zZXROZXh0KG1ha2VVbmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVt
KSwgcmVjb3JkQWJvdmUtPnJlbGVhc2VOZXh0KCkpKTsKICAgICAgICAgcmVjb3JkQWJvdmUtPm5l
eHQoKS0+ZWxlbWVudCgpLmJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC01MzMsNyArNTMzLDcgQEAgdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwdXNoQ29t
bW9uKFJlZjxIVE1MU3RhY2tJdGVtPiYmIGl0ZW0pCiAgICAgQVNTRVJUKG1fcm9vdE5vZGUpOwog
CiAgICAgKyttX3N0YWNrRGVwdGg7Ci0gICAgbV90b3AgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1l
bnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdURk1vdmUobV90b3ApKTsKKyAgICBtX3RvcCA9IG1h
a2VVbmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShtX3RvcCkpOwog
fQogCiB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcENvbW1vbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCA1M2ExNzJkMzNh
ZmNkYThmZjg4ZDM0NGQ5YzBlZjA5MDNjZGVjYzkyLi4zM2Q3YjNiYjA4YjY1MmQwY2Q2OWJjZWRm
MWY4NjA2MzFhZmFhMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBUb2tlblByZWxv
YWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXIgewogICAgICAgICBpZiAoIUxpbmtMb2FkZXI6Omlz
U3VwcG9ydGVkVHlwZSh0eXBlLnZhbHVlKCksIG1fdHlwZUF0dHJpYnV0ZSkpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JGb3IobV90YWdJZCksIG1fdXJsVG9Mb2FkLCBw
cmVkaWN0ZWRCYXNlVVJMLCB0eXBlLnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1dGUsIG1fbW9kdWxl
U2NyaXB0LCBtX3JlZmVycmVyUG9saWN5KTsKKyAgICAgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVu
aXF1ZTxQcmVsb2FkUmVxdWVzdD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBtX3VybFRvTG9hZCwg
cHJlZGljdGVkQmFzZVVSTCwgdHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0cmlidXRlLCBtX21vZHVs
ZVNjcmlwdCwgbV9yZWZlcnJlclBvbGljeSk7CiAgICAgICAgIHJlcXVlc3QtPnNldENyb3NzT3Jp
Z2luTW9kZShtX2Nyb3NzT3JpZ2luTW9kZSk7CiAgICAgICAgIHJlcXVlc3QtPnNldE5vbmNlKG1f
bm9uY2VBdHRyaWJ1dGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCmlu
ZGV4IGY3MWIyMWQyNzg5NWU1NzhhYjQ3ZjVjZjU0MDI1ODNlMzYxMjFkMDIuLjNmNzQ2ZGM2ZDY2
N2M0MzcxMWI2OGQwOWI0MjAyZDIzZmYwYzA4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oCkBAIC0yMDksNyArMjA5LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpi
ZWdpbkRPQ1RZUEUoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gVW5pbml0aWFsaXplZCk7CiAg
ICAgbV90eXBlID0gRE9DVFlQRTsKLSAgICBtX2RvY3R5cGVEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxEb2N0eXBlRGF0YT4oKTsKKyAgICBtX2RvY3R5cGVEYXRhID0gbWFrZVVuaXF1ZTxEb2N0eXBl
RGF0YT4oKTsKIH0KIAogaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUoVUNoYXIg
Y2hhcmFjdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRl
eCBhYzZlNzk0NDMwMDcwMzY0MjFlYjE2ZGY4M2E5MGQzZDI3NzJmODU2Li4wNjFkOTU2N2I3ODRk
OWIwYmFjZjNmNmRiOWNkZTVhODA2YjAxYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxYU1NJ
bmZvPiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25zdCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJl
cXVlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYm9vbCBkaWRCbG9ja0VudGlyZVBh
Z2UgPSBtX3hzc1Byb3RlY3Rpb24gPT0gWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uOjpCbG9ja0Vu
YWJsZWQ7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8WFNTSW5mbz4obV9kb2N1bWVudFVS
TCwgZGlkQmxvY2tFbnRpcmVQYWdlLCBtX2RpZFNlbmRWYWxpZFhTU1Byb3RlY3Rpb25IZWFkZXIp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFhTU0luZm8+KG1fZG9jdW1lbnRVUkwsIGRpZEJsb2Nr
RW50aXJlUGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQcm90ZWN0aW9uSGVhZGVyKTsKIH0KIAogYm9v
bCBYU1NBdWRpdG9yOjpmaWx0ZXJTdGFydFRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYg
cmVxdWVzdCkKQEAgLTcxMiw3ICs3MTIsNyBAQCBTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+KiBY
U1NBdWRpdG9yOjpkZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlKCkKICAgICBjb25zdCB1bnNpZ25l
ZCBzdWZmaXhUcmVlRGVwdGggPSA1OwogCiAgICAgaWYgKCFtX2RlY29kZWRIVFRQQm9keVN1ZmZp
eFRyZWUgJiYgbV9kZWNvZGVkSFRUUEJvZHkubGVuZ3RoKCkgPj0gbWluaW11bUxlbmd0aEZvclN1
ZmZpeFRyZWUpCi0gICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3VmZml4VHJlZTxBU0NJSUNvZGVib29rPj4obV9kZWNvZGVkSFRUUEJvZHksIHN1
ZmZpeFRyZWVEZXB0aCk7CisgICAgICAgIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSA9IG1h
a2VVbmlxdWU8U3VmZml4VHJlZTxBU0NJSUNvZGVib29rPj4obV9kZWNvZGVkSFRUUEJvZHksIHN1
ZmZpeFRyZWVEZXB0aCk7CiAgICAgcmV0dXJuIG1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZS5n
ZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggM2E2MzdkYWVmMDEyNGUyZTRlZDMzNmI2NjM3
NTJkMDAyMmI1YmUwMS4uZDU2NmJjYzc5NGFhNzI0YWJlNjBhMDgwYTNmMmNmOTUxZjQ1MzdjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgUmVuZGVyVGV4dENvbnRyb2xJbm5l
ckJsb2NrKiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlbmRlcmVyKCkgY29uc3QKIE9w
dGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSogc2hhZG93
SG9zdFN0eWxlKQogewogICAgIGF1dG8gc3R5bGUgPSBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudD4oKnNoYWRvd0hvc3QoKSkuY3JlYXRlSW5uZXJUZXh0U3R5bGUoKnNoYWRvd0hv
c3RTdHlsZSk7Ci0gICAgcmV0dXJuIEVsZW1lbnRTdHlsZShzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOworICAgIHJldHVybiBFbGVtZW50U3R5bGUobWFrZVVu
aXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHlsZSkpKTsKIH0KIAogLy8gTUFSSzogVGV4dENv
bnRyb2xQbGFjZWhvbGRlckVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCmluZGV4IGU0MDIwMGE5YTdhMjI1ZGRmZDg3
NDRkOGM5M2JkZTY5MDk2NDcwMDkuLjQ5MzRkNzI5YzE5OGQwODA1OWFjOGM5ZjBiMTc0YTk1ZTc2
ZjcyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5l
cmljVGV4dFRyYWNrLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElu
YmFuZEdlbmVyaWNUZXh0VHJhY2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmIGN1ZSkKIFdlYlZU
VFBhcnNlciYgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cGFyc2VyKCkKIHsKICAgICBpZiAoIW1f
d2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dlYlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBtYWtlVW5p
cXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyks
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICptX3dlYlZUVFBhcnNlcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRU
ZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0
VHJhY2suY3BwCmluZGV4IDg1NWJiMjM5MjdlYjEwYTM1YTU5ZDEyYmUwZDIzNWE3M2NhYmMxMGUu
LjEwZmFhMTJmOTBiNDYwYjUwNTZmMjU2N2NjMmQ5ODEyN2Q4ZmFhODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKQEAgLTU0
LDcgKzU0LDcgQEAgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjp+SW5iYW5kV2ViVlRUVGV4dFRyYWNr
KCkgPSBkZWZhdWx0OwogV2ViVlRUUGFyc2VyJiBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNl
cigpCiB7CiAgICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAgICAgICAgbV93ZWJWVFRQYXJzZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2Vy
Q2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fd2Vi
VlRUUGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBh
cnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVy
biAqbV93ZWJWVFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9M
b2FkYWJsZVRleHRUcmFjay5jcHAKaW5kZXggOGYyOWM3ZjE2NzlhMGZhMjkxOGRlY2ZhNTEzZTJk
ODAyNzFhMzVlMi4uN2ExZTFiYzQ2OTFiMjExNjg4YzNjZjVkYTYxOWFjNjFkYmQ2ZmUwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAg
LTg0LDcgKzg0LDcgQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQoKQog
ICAgIC8vIDQuIERvd25sb2FkOiBJZiBVUkwgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcsIHBlcmZv
cm0gYSBwb3RlbnRpYWxseSBDT1JTLWVuYWJsZWQgZmV0Y2ggb2YgVVJMLCB3aXRoIHRoZQogICAg
IC8vIG1vZGUgYmVpbmcgdGhlIHN0YXRlIG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgY3Jvc3Nvcmln
aW4gY29udGVudCBhdHRyaWJ1dGUsIHRoZSBvcmlnaW4gYmVpbmcgdGhlCiAgICAgLy8gb3JpZ2lu
IG9mIHRoZSBtZWRpYSBlbGVtZW50J3MgRG9jdW1lbnQsIGFuZCB0aGUgZGVmYXVsdCBvcmlnaW4g
YmVoYXZpb3VyIHNldCB0byBmYWlsLgotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0VHJhY2tMb2FkZXI+KHN0YXRpY19jYXN0PFRleHRUcmFja0xvYWRlckNsaWVudCY+KCp0aGlz
KSwgc3RhdGljX2Nhc3Q8U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KCZtX3RyYWNrRWxlbWVudC0+
ZG9jdW1lbnQoKSkpOworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxUZXh0VHJhY2tMb2FkZXI+
KHN0YXRpY19jYXN0PFRleHRUcmFja0xvYWRlckNsaWVudCY+KCp0aGlzKSwgc3RhdGljX2Nhc3Q8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KCZtX3RyYWNrRWxlbWVudC0+ZG9jdW1lbnQoKSkpOwog
ICAgIGlmICghbV9sb2FkZXItPmxvYWQobV91cmwsICptX3RyYWNrRWxlbWVudCkpCiAgICAgICAg
IG1fdHJhY2tFbGVtZW50LT5kaWRDb21wbGV0ZUxvYWQoSFRNTFRyYWNrRWxlbWVudDo6RmFpbHVy
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVB
UElIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3Qu
Y3BwCmluZGV4IDAzMTA4MGUxYWI2NmQzMmNjOWMwNzE3OGYwMmY5MzUyM2JjNzA2YjAuLjkwMjli
OTJkOGI4M2YyZDdiZWQ2ZDhlNTQ1NzZjMGExNjhjYTUyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJl
ZjxDb21tYW5kTGluZUFQSUhvc3Q+IENvbW1hbmRMaW5lQVBJSG9zdDo6Y3JlYXRlKCkKIH0KIAog
Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QoKQotICAgIDogbV9pbnNwZWN0
ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKSkKKyAgICA6IG1f
aW5zcGVjdGVkT2JqZWN0KG1ha2VVbmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCkpCiB7CiB9CiAK
QEAgLTE5Niw3ICsxOTYsNyBAQCBKU1ZhbHVlIENvbW1hbmRMaW5lQVBJSG9zdDo6d3JhcHBlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogdm9pZCBDb21tYW5k
TGluZUFQSUhvc3Q6OmNsZWFyQWxsV3JhcHBlcnMoKQogewogICAgIG1fd3JhcHBlcnMuY2xlYXJB
bGxXcmFwcGVycygpOwotICAgIG1faW5zcGVjdGVkT2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0YWJsZU9iamVjdD4oKTsKKyAgICBtX2luc3BlY3RlZE9iamVjdCA9IG1ha2VVbmlxdWU8
SW5zcGVjdGFibGVPYmplY3Q+KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKaW5kZXggNmMzMWU0OThlNDM0ZDMwMGIwZjFj
NmVhYjg0MzQ2Nzc2Y2YwYTJmYy4uODM4OTA4ZGM5MzZlZmE2YmEyNmM3OTE2NzE0NGRiN2RlOWUy
YWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTg5LDcgKzg5
LDcgQEAgY2xhc3MgRE9NRWRpdG9yOjpJbnNlcnRCZWZvcmVBY3Rpb24gZmluYWwgOiBwdWJsaWMg
SW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwZXJmb3Jt
KCkgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPnBhcmVudE5vZGUoKSkgewotICAg
ICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQ2hp
bGRBY3Rpb24+KCptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlKTsKKyAgICAgICAgICAgIG1f
cmVtb3ZlQ2hpbGRBY3Rpb24gPSBtYWtlVW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2Rl
LT5wYXJlbnROb2RlKCksIG1fbm9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVt
b3ZlQ2hpbGRBY3Rpb24tPnBlcmZvcm0oKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCk7CkBAIC0zODUsMjcgKzM4NSwyNyBAQCBET01FZGl0b3I6On5ET01FZGl0b3IoKSA9IGRlZmF1
bHQ7CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5zZXJ0QmVmb3JlKE5vZGUmIHBh
cmVudE5vZGUsIFJlZjxOb2RlPiYmIG5vZGUsIE5vZGUqIGFuY2hvck5vZGUpCiB7Ci0gICAgcmV0
dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8SW5zZXJ0QmVmb3JlQWN0aW9u
PihwYXJlbnROb2RlLCBXVEZNb3ZlKG5vZGUpLCBhbmNob3JOb2RlKSk7CisgICAgcmV0dXJuIG1f
aGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8SW5zZXJ0QmVmb3JlQWN0aW9uPihwYXJlbnROb2Rl
LCBXVEZNb3ZlKG5vZGUpLCBhbmNob3JOb2RlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERP
TUVkaXRvcjo6cmVtb3ZlQ2hpbGQoTm9kZSYgcGFyZW50Tm9kZSwgTm9kZSYgbm9kZSkKIHsKLSAg
ICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFj
dGlvbj4ocGFyZW50Tm9kZSwgbm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybSht
YWtlVW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPihwYXJlbnROb2RlLCBub2RlKSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0QXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
bV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRBdHRyaWJ1dGVBY3Rpb24+KGVs
ZW1lbnQsIG5hbWUsIHZhbHVlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VV
bmlxdWU8U2V0QXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpOwogfQogCiBF
eGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUF0dHJpYnV0ZShFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3Jt
KHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lKSk7
CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVtb3ZlQXR0cmlidXRl
QWN0aW9uPihlbGVtZW50LCBuYW1lKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRv
cjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSomIG5l
d05vZGUpCiB7Ci0gICAgYXV0byBhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNldE91dGVySFRN
TEFjdGlvbj4obm9kZSwgaHRtbCk7CisgICAgYXV0byBhY3Rpb24gPSBtYWtlVW5pcXVlPFNldE91
dGVySFRNTEFjdGlvbj4obm9kZSwgaHRtbCk7CiAgICAgYXV0byYgcmF3QWN0aW9uID0gKmFjdGlv
bjsKICAgICBhdXRvIHJlc3VsdCA9IG1faGlzdG9yeS5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSk7
CiAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC00MTUsMjIgKzQxNSwyMiBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25z
dCBTdHJpbmcmIGh0bWwsIE5vZGUqJgogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6Omlu
c2VydEFkamFjZW50SFRNTChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHdoZXJlLCBj
b25zdCBTdHJpbmcmIGh0bWwpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6
bWFrZV91bmlxdWU8SW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uPihlbGVtZW50LCB3aGVyZSwgaHRt
bCkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPEluc2VydEFkamFj
ZW50SFRNTEFjdGlvbj4oZWxlbWVudCwgd2hlcmUsIGh0bWwpKTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gRE9NRWRpdG9yOjpyZXBsYWNlV2hvbGVUZXh0KFRleHQmIHRleHROb2RlLCBjb25zdCBT
dHJpbmcmIHRleHQpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91
bmlxdWU8UmVwbGFjZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKKyAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0
ZXh0Tm9kZSwgdGV4dCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlcGxh
Y2VDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiBuZXdOb2RlLCBOb2RlJiBvbGRO
b2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJl
cGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobmV3Tm9kZSksIG9sZE5v
ZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZXBsYWNlQ2hp
bGROb2RlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5ld05vZGUpLCBvbGROb2RlKSk7CiB9
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKE5vZGUmIG5vZGUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0
ZDo6bWFrZV91bmlxdWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSkpOworICAgIHJl
dHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlvbj4obm9k
ZSwgdmFsdWUpKTsKIH0KIAogc3RhdGljIGJvb2wgcG9wdWxhdGVFcnJvclN0cmluZyhFeGNlcHRp
b25Pcjx2b2lkPiYmIHJlc3VsdCwgRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCAyMGRhMzQzMGMxNWM4
NTUxNDg1YzU3MzhjNTQ3ZmEwYzM0MzFhMWJhLi4yZTlkNzU1NjU1YzgzZWY4ODE1OTZhYWQyMGM5
NmUxMGU2ODgyNmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBw
b3J0LmNwcApAQCAtNDAyLDcgKzQwMiw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmluZ1RvU0hBMShT
SEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRyPERPTVBh
dGNoU3VwcG9ydDo6RGlnZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChOb2RlJiBu
b2RlLCBVbnVzZWROb2Rlc01hcCogdW51c2VkTm9kZXNNYXApCiB7Ci0gICAgYXV0byBkaWdlc3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPERpZ2VzdD4oKTsKKyAgICBhdXRvIGRpZ2VzdCA9IG1ha2VVbmlx
dWU8RGlnZXN0PigpOwogICAgIGRpZ2VzdC0+bm9kZSA9ICZub2RlOwogICAgIFNIQTEgc2hhMTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IDUyMDM3MDZiNTNiMzJiMGJhNGYwZWQ0ZDRiYTQwMGI2Yzc5YjVlMTUuLjYzZmYzYWI2
MjNhNDQ2Y2Q2MjBlZTQ3ZTM5MjA1NWNlYTUxYTg3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50
KQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0
ZSgqdGhpcykpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVl
PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6
Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0
ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQog
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJv
bnRlbmRSb3V0ZXIuY29weVJlZigpKSkKLSAgICAsIG1fb3ZlcmxheShzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCisgICAgLCBtX292ZXJs
YXkobWFrZVVuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQog
ICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKICAgICAsIG1f
c2NyaXB0RGVidWdTZXJ2ZXIocGFnZSkKICAgICAsIG1fcGFnZShwYWdlKQpAQCAtMTA2LDcgKzEw
Niw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFn
ZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAKICAgICBhdXRvIHBhZ2VDb250ZXh0ID0g
cGFnZUFnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVB
Z2VudCA9IG1ha2VVbmlxdWU8UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5nZXQo
KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9CkBAIC0x
NTMsMzcgKzE1MywzNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2Vu
dHMoKQogICAgIGVuc3VyZUluc3BlY3RvckFnZW50KCk7CiAgICAgZW5zdXJlUGFnZUFnZW50KCk7
CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VSdW50
aW1lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAKLSAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBk
ZWJ1Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQp
OwogICAgIGF1dG8gZGVidWdnZXJBZ2VudFB0ciA9IGRlYnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAg
bV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQpKTsK
LSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4o
cGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlTmV0d29y
a0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPElu
c3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCkpOwogICAgIGVuc3VyZURPTUFnZW50KCk7Ci0g
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudD4ocGFnZUNvbnRleHQsIGRlYnVnZ2VyQWdlbnRQdHIpKTsKLSAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2VyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9h
Z2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Pihw
YWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1h
a2VVbmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIGRlYnVnZ2Vy
QWdlbnRQdHIpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1h
a2VVbmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yV29ya2VyQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYKIAotICAg
IGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gc2NyaXB0UHJvZmls
ZXJBZ2VudFB0ciA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4ocGFn
ZUNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yU2NyaXB0
UHJvZmlsZXJBZ2VudChzY3JpcHRQcm9maWxlckFnZW50UHRyLmdldCgpKTsKICAgICBtX2FnZW50
cy5hcHBlbmQoV1RGTW92ZShzY3JpcHRQcm9maWxlckFnZW50UHRyKSk7CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfVVNBR0UpCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQ1BVUHJvZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rv
ck1lbW9yeUFnZW50PihwYWdlQ29udGV4dCkpOwogI2VuZGlmCi0gICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNvbnRleHQp
KTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDYW52YXNB
Z2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZUF1ZGl0QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250
ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yVGltZWxpbmVB
Z2VudD4ocGFnZUNvbnRleHQpKTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3Qg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0KCkpCiAgICAgICAg
IGNvbW1hbmRMaW5lQVBJSG9zdC0+aW5pdChtX2luc3RydW1lbnRpbmdBZ2VudHMuY29weVJlZigp
KTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBJbnNwZWN0b3JBZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkg
ewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAg
ICBhdXRvIGluc3BlY3RvckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4o
cGFnZUNvbnRleHQpOworICAgICAgICBhdXRvIGluc3BlY3RvckFnZW50ID0gbWFrZVVuaXF1ZTxJ
bnNwZWN0b3JBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgICAgICBtX2luc3BlY3RvckFnZW50ID0g
aW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yQWdlbnQobV9pbnNwZWN0b3JBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVu
ZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CkBAIC00MzMsNyArNDMzLDcgQEAgSW5zcGVjdG9y
RE9NQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURPTUFnZW50KCkKIHsKICAgICBp
ZiAoIW1faW5zcGVjdG9yRE9NQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBh
Z2VBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBkb21BZ2VudCA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yRE9NQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXkuZ2V0KCkpOworICAg
ICAgICBhdXRvIGRvbUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNv
bnRleHQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAgICAgIG1faW5zcGVjdG9yRE9NQWdlbnQgPSBk
b21BZ2VudC5nZXQoKTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZG9tQWdlbnQp
KTsKICAgICB9CkBAIC00NDQsNyArNDQ0LDcgQEAgSW5zcGVjdG9yUGFnZUFnZW50JiBJbnNwZWN0
b3JDb250cm9sbGVyOjplbnN1cmVQYWdlQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JQ
YWdlQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQo
KTsKLSAgICAgICAgYXV0byBwYWdlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclBh
Z2VBZ2VudD4ocGFnZUNvbnRleHQsIG1faW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkp
OworICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50
PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAg
ICAgIG1faW5zcGVjdG9yUGFnZUFnZW50ID0gcGFnZUFnZW50LmdldCgpOwogICAgICAgICBtX2Fn
ZW50cy5hcHBlbmQoV1RGTW92ZShwYWdlQWdlbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRl
eCAyOGVlNzI3YTM2ZDY2Y2UyMTA5Njk3ODMxYWUwYThhYWM0MjM4NTc1Li42YzFiNTFhZGVlOWEz
ODQyNjMzMzhmNDVkODg4NGE2ZDljMzdlYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTUwLDYgKzUw
LDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCA6IHB1YmxpYyBJbnNwZWN0
b3JGcm9udGVuZENsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2V0dGluZ3MgeworICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFNldHRpbmdzKCkgPSBkZWZhdWx0
OwogICAgICAgICB2aXJ0dWFsIH5TZXR0aW5ncygpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAppbmRleCAwMGQ1ZjE4NTJjZWJhMjcw
YzNhZjgxYzEzMjA5MDA1ZGE3YjExOGE4Li5jODEwM2RkN2RiYjgzMjBlYWIyZTZhZDVlMzJjMmQ1
MmQ3MmIwNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rv
cnkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rvckhpc3Rv
cnk6OnBlcmZvcm0oc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4gYWN0aW9uKQogCiB2b2lkIEluc3Bl
Y3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJsZVN0YXRlKCkKIHsKLSAgICBwZXJmb3JtKHN0ZDo6bWFr
ZV91bmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCkpOworICAgIHBlcmZvcm0obWFrZVVuaXF1ZTxV
bmRvYWJsZVN0YXRlTWFyaz4oKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rvckhp
c3Rvcnk6OnVuZG8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCmluZGV4IDE0OTVmMzllMmE0NWUzYzcyYTk2MTRhZmY1NzllNjRkZGY1NWMw
YjUuLmRiZTU1NTNmMDEyMTczNGE5NjU5MTM4NDZhYWQ0NmJmMjc3OTczZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIFBhcnNlZFN0eWxlU2hlZXQ6OnNldFNvdXJjZURhdGEoc3RkOjp1bmlx
dWVfcHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4gc291cmNlRAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9zb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxp
c3Q+KCk7CisgICAgbV9zb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+
KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiB0byByZXRh
aW4gdGhlIG9yaWdpbmFsIGZsYXQgc291cmNlRGF0YSBzdHJ1Y3R1cmUKICAgICAvLyBjb250YWlu
aW5nIG9ubHkgc3R5bGUgcnVsZXMsIGV2ZW4gdGhvdWdoIENTU1BhcnNlciBub3cgcHJvdmlkZXMg
dGhlIGZ1bGwgcnVsZSBzb3VyY2UgZGF0YSB0cmVlLgpAQCAtMTMyMCw3ICsxMzIwLDcgQEAgYm9v
bCBJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYXV0byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpj
cmVhdGUoKTsKLSAgICBhdXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CisgICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9
IG1ha2VVbmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwogICAgIAogICAgIENTU1BhcnNlckNv
bnRleHQgY29udGV4dChwYXJzZXJDb250ZXh0Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVTaGVldC0+
b3duZXJEb2N1bWVudCgpKSk7CiAgICAgU3R5bGVTaGVldEhhbmRsZXIgaGFuZGxlcihtX3BhcnNl
ZFN0eWxlU2hlZXQtPnRleHQoKSwgbV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpLCBy
dWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkM2I3NTlmMjljY2YxYWUxODAyODBk
NWUxNzM2NzBkMjljNGY4Y2MxLi5mZDdjYWQzMDc2N2U3NzViMTY3NWVjNDU0ZWY3YTA4YmIwMzZk
NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpy
ZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZwogewog
ICAgIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0byByZXNv
dXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2Fk
ZXJJZCk7CisgICAgYXV0byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291cmNlRGF0YT4o
cmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5cGUpOwog
ICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RGTW92ZShy
ZXNvdXJjZURhdGEpKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0
cmluZwogewogICAgIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAg
YXV0byByZXNvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVz
dElkLCBsb2FkZXJJZCk7CisgICAgYXV0byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291
cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRDYWNo
ZWRSZXNvdXJjZSgmY2FjaGVkUmVzb3VyY2UpOwogICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURh
dGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RGTW92ZShyZXNvdXJjZURhdGEpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNw
cAppbmRleCA0MzUxZTg3MmE5ZTVhMzY0NzI5ZjViNGZiMjYyMTZjNzMzMDJjOGRkLi4zNjRhZWE3
ZDRiNWQ5MTE3OTMyNzVkNjQ2ZjI5NWU2N2JmMGVlZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckluc3BlY3RvckNv
bnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRp
bmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihz
dGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVj
dGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIo
bWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNj
cmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0
ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZXhlY3V0aW9u
U3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCkBAIC02OSw3ICs2OSw3IEBAIFdvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsCiAKICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENv
bnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0g
bWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5nZXQoKSk7
CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9CkBAIC0xMDUs
NyArMTA1LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQoKQogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5yZXNldCgpOwogICAgIG1fZXhlY3V0aW9u
U3RvcHdhdGNoLT5zdGFydCgpOwogCi0gICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNjb3Bl
KTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9u
dGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fZnJvbnRlbmRSb3V0ZXIt
PmNvbm5lY3RGcm9udGVuZCgqbV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7CiAgICAgbV9hZ2Vu
dHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdldCgpLCAm
bV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CkBAIC0xNjQsMTggKzE2NCwxOCBAQCB2b2lk
IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogCiAgICAgYXV0
byB3b3JrZXJDb250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdv
cmtlckNvbnRleHQpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihtX3dvcmtlckdsb2JhbFNjb3BlKSkgewotICAgICAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyQWdlbnQ+KHdv
cmtlckNvbnRleHQpKTsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyTmV0d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAg
ICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtl
ckNvbnRleHQpKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNvbnRleHQp
KTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJBdWRpdEFnZW50
Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V2ViSGVh
cEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8
V29ya2VyRGVidWdnZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPFdvcmtlckF1ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAogICAgIGlm
IChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29t
bWFuZExpbmVBUElIb3N0KCkpCiAgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+aW5pdChtX2lu
c3RydW1lbnRpbmdBZ2VudHMuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcAppbmRleCBhOGQzYzg5OWMzMjgwYTI4ZTY3MzJjZjg4YWI4NGQwMDBkNDVlZDJkLi5m
ZGYwNDRjNTc5YjM2OGMzMjA1MWI2NWRjNDQwZTM4N2Y2MDE4ZmI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoIkFwcGxpY2F0aW9uQ2FjaGUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25D
YWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNo
ZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2lu
c3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2Vu
dC5jcHAKaW5kZXggY2Y5NGNhODA5NmZmNTcxZDc0ZDc3M2IxZjAwMjc1MDU0YzBjZTFmOS4uMTE2
MjRlMjQwOTQ2NGZjMWUxZTY1YTY5OThkYmQxYjA2ODJmMGIyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVy
QWdlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQoUGFn
ZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ1BVUHJv
ZmlsZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpDUFVQcm9maWxl
ckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDRiNjk5NDVlYzcwNjdmOTY0M2U0ODA3MzAzNDg0MjY4
NmQ2MTlmYjguLjQ0ZTljNWFiZWI0Yzk2NmFiYWVhOTQ0YTQwZDVlMDNkNDcyZDExZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NBZ2Vu
dDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYgcnVsZSkKIAogSW5zcGVjdG9yQ1NTQWdlbnQ6Oklu
c3BlY3RvckNTU0FnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rv
ckFnZW50QmFzZSgiQ1NTIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
c3RkOjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDU1NGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpKQogewogfQpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IGRvbUFn
ZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVNoZWV0VGV4
dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkpOworICAgIGF1dG8gcmVzdWx0ID0g
ZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0
QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CiAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9F
cnJvclN0cmluZyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKIH0KQEAgLTY0Niw3ICs2NDYs
NyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6
Om1ha2VfdW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29t
cG91bmRJZCwgdGV4dCkpOworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0
b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0
eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0
b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1
bGVTZWxlY3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+
aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0aW9u
PihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOworICAgIGF1dG8g
cGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxT
ZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNl
bGVjdG9yKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAg
ICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3Jt
UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTc1Nyw3ICs3
NTcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgYXV0byBhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3Bl
Y3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VVbmlxdWU8
QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOwogICAgIGF1dG8m
IHJhd0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQt
Pmhpc3RvcnkoKS0+cGVyZm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmIChwZXJmb3JtUmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDliZTA2MTE5ZmIzMjE5
NzAwNzI5NzIyZDgzNmE4MTZiMjVmMWMwMTUuLjBlNTBjNzViYTQ4NzUxNTU2ZTQxMmRjYjk3YWQx
OTY2OTY1YTk5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52
YXNBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJDYW52YXMiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNhbnZhc0JhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikK
ICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCkBAIC00MzYsNyAr
NDM2LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKENh
bnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmQKICAgICBpZiAoIWluc3BlY3RvckNhbnZh
cy0+Y3VycmVudEZyYW1lSGFzRGF0YSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jb250ZXh0KCkuY2FudmFzQmFzZSgpLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICAgICAgYXV0byYgcXVldWUgPSBNaWNy
b3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCk7Ci0gICAgICAgICAgICBxdWV1ZS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUsICpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0gaW5zcGVj
dG9yQ2FudmFzLmNvcHlSZWYoKV0geworICAgICAgICAgICAgcXVldWUuYXBwZW5kKG1ha2VVbmlx
dWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgWyYsIHByb3RlY3RlZEluc3BlY3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5
UmVmKCldIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IHByb3Rl
Y3RlZEluc3BlY3RvckNhbnZhcy0+Y2FudmFzRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChjYW52YXNFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihjYW52YXNFbGVtZW50LT5kb2N1
bWVudCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXgg
NmMxOTZlMGNjNjgyYjQ0MjU2YzdkZGFhZTA5MGFhMGFhZDU1MzE3ZC4uZjBhMjhjMTMzMWM1YmIz
MDg4ZDUzZTcyNDNkYmFmNGVlYjYzZTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBA
QCBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoRXhjZXB0aW9uJiYgZXhj
ZXB0aW9uKQogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBhZ2VBZ2VudENv
bnRleHQmIGNvbnRleHQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoIkRPTSJfcywgY29udGV4dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtl
VW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01CYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAg
ICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fb3Zlcmxh
eShvdmVybGF5KQpAQCAtMzAxLDggKzMwMSw4IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVj
dG9yRE9NQWdlbnQoKQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKQogewotICAgIG1faGlzdG9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9ySGlzdG9yeT4oKTsKLSAgICBtX2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRp
dG9yPigqbV9oaXN0b3J5KTsKKyAgICBtX2hpc3RvcnkgPSBtYWtlVW5pcXVlPEluc3BlY3Rvckhp
c3Rvcnk+KCk7CisgICAgbV9kb21FZGl0b3IgPSBtYWtlVW5pcXVlPERPTUVkaXRvcj4oKm1faGlz
dG9yeSk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NQWdlbnQo
dGhpcyk7CiAgICAgbV9kb2N1bWVudCA9IG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKS5kb2N1
bWVudCgpOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICBOb2RlKiBwYXJlbnQg
PSBpbm5lclBhcmVudE5vZGUobm9kZSk7CiAgICAgICAgIGlmICghcGFyZW50KSB7CiAgICAgICAg
ICAgICAvLyBOb2RlIGJlaW5nIHB1c2hlZCBpcyBkZXRhY2hlZCAtPiBwdXNoIHN1YnRyZWUgcm9v
dC4KLSAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlVG9JZE1h
cD4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gbWFrZVVuaXF1ZTxOb2RlVG9JZE1hcD4o
KTsKICAgICAgICAgICAgIGRhbmdsaW5nTWFwID0gbmV3TWFwLmdldCgpOwogICAgICAgICAgICAg
bV9kYW5nbGluZ05vZGVUb0lkTWFwcy5hcHBlbmQobmV3TWFwLnJlbGVhc2UoKSk7CiAgICAgICAg
ICAgICBhdXRvIGNoaWxkcmVuID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006Ok5vZGU+OjpjcmVhdGUoKTsKQEAgLTExNzcsNyArMTE3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxIaWdobGlnaHRDb25maWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9t
SW5zcGVjdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGln
aGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAg
YXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAg
ICBib29sIHNob3dJbmZvID0gZmFsc2U7IC8vIERlZmF1bHQ6IGZhbHNlIChkbyBub3Qgc2hvdyBh
IHRvb2x0aXApLgogICAgIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbigic2hv
d0luZm8iLCBzaG93SW5mbyk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHNob3dJ
bmZvOwpAQCAtMTE5NiwxMyArMTE5NiwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJ
bnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYQogCiB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nJiwgaW50IHgs
IGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3Is
IGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29v
cmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+
KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgYXV0byBxdWFkID0gbWFrZVVu
aXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgaW5u
ZXJIaWdobGlnaHRRdWFkKFdURk1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBh
Z2VDb29yZGluYXRlcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1
YWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYgcXVhZEFycmF5
LCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVD
b2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gcXVhZCA9
IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigpOworICAgIGF1dG8gcXVhZCA9IG1ha2VVbmlx
dWU8RmxvYXRRdWFkPigpOwogICAgIGlmICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVhZC5nZXQo
KSkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBRdWFkIGZvcm1hdCJfczsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OkFy
cmEKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5p
cXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0
IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0
ZXMpCiB7Ci0gICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hs
aWdodENvbmZpZz4oKTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGln
aGxpZ2h0Q29uZmlnPigpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29s
b3IoY29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNv
bG9yKG91dGxpbmVDb2xvcik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT51c2VQYWdlQ29vcmRpbmF0
ZXMgPSB1c2VQYWdlQ29vcmRpbmF0ZXMgPyAqdXNlUGFnZUNvb3JkaW5hdGVzIDogZmFsc2U7CkBA
IC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFt
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZgogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIGF1dG8gaGln
aGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAg
ICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7
CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMgc2hv
dyB0b29sdGlwcyBmb3IgZnJhbWVzLgogICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQg
PSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0
bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKQEAgLTEzOTgsNyArMTM5OCw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIG1faW5zcGVjdGVkTm9kZSA9IG5vZGU7CiAKICAgICBp
ZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyJj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmNvbW1hbmRMaW5lQVBJSG9zdCgp
KQotICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOworICAgICAgICBjb21tYW5kTGluZUFQ
SUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9k
ZSkpOwogCiAgICAgbV9zdXBwcmVzc0V2ZW50TGlzdGVuZXJDaGFuZ2VkRXZlbnQgPSBmYWxzZTsK
IH0KQEAgLTIzMTQsNyArMjMxNCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFs
aWRhdGVTdHlsZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrKQotICAgICAgICBtX3JldmFsaWRhdGVTdHls
ZUF0dHJUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNr
Pih0aGlzKTsKKyAgICAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IG1ha2VVbmlxdWU8
UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7CiAgICAgbV9yZXZhbGlkYXRlU3R5
bGVBdHRyVGFzay0+c2NoZWR1bGVGb3IoJmVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAKaW5kZXggZTk3MWE5OWY3MDUyNGQ4MzE4MWFlNzE1ZDgyNjU4ODExZmUwODgwOC4uODFm
MTRkYzE3YmZhMDQ3NDdlM2QyM2U0NTNmNWU0YWY4ZDA5ZmQ4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChQYWdlQWdl
bnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET01TdG9yYWdl
Il9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAg
ICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwCmluZGV4IGIzN2E1NjBjZTgwNzY4YzY2NDQwODUxNWZiMDU1MTI2MTY1YmVkODIuLjM1
OGE4NTY1MTJlYTRkNzE5NjMzMmEyMDY5OTBkZTMyNTAwNDEwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlk
T3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIAogSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRhdGFiYXNlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRl
bmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCBlMWUw
ODJlNDFhZDJkNTI0ZjU3ZWYxMDY0MDI4ODc2MTE1NjgyNGI5Li5iNTk4MmNlZTM3ZTM3NDQ3MDUz
OTQ2YmNmNGM0MzRiNDMxZWY5YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDgsNyAr
NDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJMYXllclRyZWUiX3MsIGNvbnRleHQpCi0gICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TGF5ZXJUcmVl
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERp
c3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDI5
Yzc2ZDBjN2ZlYTkyMmMyYTNkOTk0MTRjOTg2ZWE4ZDI4ZDc3YjUuLjI4MzI5NTFmNTM4MDEyMWZh
NDUyYmZhOGQ0NzBmNGQzNWU3ODliMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJ
bnNwZWN0b3JNZW1vcnlBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5z
cGVjdG9yQWdlbnRCYXNlKCJNZW1vcnkiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok1l
bW9yeUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwg
dGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggM2U0ZTk2ZWIyMzFhMDU0YjIxMjEy
NDdiYzJjYjA5MTY1ZjAyNjViMy4uNWQwODE2MzgwY2RjNjZjN2Q3OTYwYzEyZDM0OGEwZmJmM2Y3
YjExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgY2xhc3MgSW5z
cGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50IHsKIAogSW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JOZXR3b3JrQWdl
bnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJO
ZXR3b3JrIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJv
bnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0g
ICAgLCBtX3Jlc291cmNlc0RhdGEoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0
YT4oKSkKKyAgICAsIG1fcmVzb3VyY2VzRGF0YShtYWtlVW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNE
YXRhPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMzI5ZTFiMGM1YWQ5MmZiNDUxZGYxNzY3
MzNhZTJhZTM1OGZiNDkzNy4uYzY0MWE2YTA0ODQxOTMyNjhlMjllOTBmZjAxMjZhYjkxMWM5MzBk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcApAQCAtMzMzLDcgKzMzMyw3IEBAIERvY3VtZW50TG9hZGVyKiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluCiAKIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KFBhZ2VBZ2VudENv
bnRleHQmIGNvbnRleHQsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JPdmVybGF5
KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJQYWdlIl9zLCBjb250ZXh0KQot
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlBh
Z2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVj
dGVkUGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4
IDNhMzYxZTkxZTZmMmRlYjAwNDJlMThhN2M2NGM3YjUxNmY5YjgwYzUuLjMwZDg2Yzc0NjNjNDdm
NWIzYWQyYjM4Y2Y1ZGUyNDlkNDRlYjlhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtODcs
NyArODcsNyBAQCBzdGF0aWMgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKIAogSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChQYWdlQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUaW1lbGluZSJfcywgY29udGV4
dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFn
ZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNr
RGVwdGgpCiAgICAgLy8gRklYTUU6IEFic3RyYWN0IGF3YXkgcGxhdGZvcm0tc3BlY2lmaWMgY29k
ZSBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3NDggaXMg
Zml4ZWQuCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihS
dW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lQmVn
aW4pLCBbdGhpc10oKSB7CisgICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1
bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxs
S25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgewogICAg
ICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigp
LmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhD
YWxsU3RhY2tEZXB0aCkKICAgICAgICAgbV9ydW5Mb29wTmVzdGluZ0xldmVsKys7CiAgICAgfSk7
CiAKLSAgICBtX2ZyYW1lU3RvcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2Jz
ZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVu
TG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7CisgICAgbV9mcmFtZVN0
b3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRklu
ZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZy
YW1lRW5kKSwgW3RoaXNdKCkgewogICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9u
bWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0
RnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAgICAgICAg
ICAgICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVudGlu
Z0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAg
ICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVk
IFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0
bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgICAgICBjb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICAgICAgICAgICAgICBjb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgd2FybmluZykpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmIHRpdGwKICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNl
bmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3Ry
aW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3QiX3MgOiBt
YWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAg
ICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlBy
b2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICBjb25z
b2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApp
bmRleCA5MTYxZDg0M2NkMzhlNGQ5NjYxMjZhY2RkMzZlODNkZDE4ZjUxMDAyLi4xZTM5OGVkZDFh
OWVhM2VmMjZiZTA5ZWMwM2Q2YzZjMmNkMzk4ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMzYs
NyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JXb3JrZXJB
Z2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiV29ya2VyIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3Bh
dGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNw
cAppbmRleCAyZWVkMWNlNjBiMzAyMmFkOTgyNGZhNjI4YTM1ZGRjNTQ0NDk2MGQ5Li5jMjA5NGI5
OTJkMzU0MTYwZjE3ZWUyOGY2NDEwYTc5M2RjZGU5ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID49IDQwMCkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZh
aWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVz
IG9mICIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICIgKCIsIHJlc3BvbnNlLmh0dHBTdGF0
dXNUZXh0KCksICcpJyk7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5n
KCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAgICAgIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0
d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgcmVz
cG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7
CiAgICAgfQogfQogCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRG
YWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBSZXNvCiAg
ICAgICAgIG1lc3NhZ2UuYXBwZW5kKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAg
IH0KIAotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAsIDAs
IG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVycm9y
LmZhaWxpbmdVUkwoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9XZWJIZWFwQWdlbnQuY3BwCmluZGV4IGJiNWQxYmVjNmM2MzIyMzliZWU2NDYzNDM3YWVm
ZWQxMmJhNDcxZDUuLjA5Y2I2ZjQ2NjZhYjRjOTFjYmVlMmQwZmNmZGQ0YmE2YTYxYTEzM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAK
QEAgLTQxLDYgKzQxLDcgQEAgc3RydWN0IEdhcmJhZ2VDb2xsZWN0aW9uRGF0YSB7CiB9OwogCiBj
bGFzcyBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNr
KFdlYkhlYXBBZ2VudCYpOwogICAgIHZvaWQgYWRkR2FyYmFnZUNvbGxlY3Rpb24oR2FyYmFnZUNv
bGxlY3Rpb25EYXRhJiYpOwpAQCAtOTYsNyArOTcsNyBAQCB2b2lkIFNlbmRHYXJiYWdlQ29sbGVj
dGlvbkV2ZW50c1Rhc2s6OnRpbWVyRmlyZWQoKQogV2ViSGVhcEFnZW50OjpXZWJIZWFwQWdlbnQo
V2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9ySGVhcEFnZW50KGNvbnRl
eHQpCiAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdl
bnRzKQotICAgICwgbV9zZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKHN0ZDo6bWFrZV91
bmlxdWU8U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzaz4oKnRoaXMpKQorICAgICwgbV9z
ZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKG1ha2VVbmlxdWU8U2VuZEdhcmJhZ2VDb2xs
ZWN0aW9uRXZlbnRzVGFzaz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
NWVhZmI2YTMyODQ2ZTcwMDE1M2FjODI2ODFiN2JlNTBkM2FmZTQ4Yy4uODk4NWJjOTQ1ZmU3NWUw
ZTg1MWEzNmRlMzU4NGFiMDQ3MWMwZmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtNTcsNyAr
NTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBQYWdlUnVudGltZUFnZW50OjpQ
YWdlUnVudGltZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQoY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpSdW50aW1lQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAg
ICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCiAg
ICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1
Z2dlckFnZW50LmNwcAppbmRleCBiMjBjYmJjOTUwNzAyODExYjY1ODlhYzFkZmJkNTczMzkxOTNk
MzM3Li44MDgyZWUzMWVlYzYwYTJmNjAzMjlkYmFiZDRkOTg0MmY2YTU1ZmZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCBXb3JrZXJEZWJ1Z2dlckFnZW50
Ojp+V29ya2VyRGVidWdnZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dl
ckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdl
KHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2Fs
bFN0YWNrKCZzdGF0ZSkpKTsKKyAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNz
YWdlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
VHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0
YWNrKCZzdGF0ZSkpKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50
KiBleGVjdXRpb25Db250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcApp
bmRleCBiZDlkNGNhZGVmYjJmYWExZjJlMGIyNTc5NTVhZDUxMjRlMTc5NGVlLi4xZjNmYWJhMzEy
NmYyZTliMzZiODRkMTNlNzNiZjFmZGEzMTc1NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlv
dXRTdGF0ZS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBMYXlvdXRTdGF0ZTo6bGF5b3V0Rm9y
bWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IEJveCYgbGF5b3V0Um9vdCkKIERpc3BsYXk6OkJv
eCYgTGF5b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0CiB7CiAgICAgcmV0dXJuICptX2xheW91dFRvRGlzcGxheUJveC5lbnN1cmUoJmxh
eW91dEJveCwgWyZsYXlvdXRCb3hdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5bGUoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPERpc3BsYXk6OkJveD4obGF5b3V0Qm94LnN0eWxlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIH0KIApAQCAtMTQwLDEzICsxNDAsMTMgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRT
dGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24K
ICAgICAgICAgICAgIC8vIHNob3VsZCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGNvbnRlbnQgaW5z
aWRlLgogICAgICAgICAgICAgLy8gPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQiPjwvZGl2PjxkaXYg
c3R5bGU9Im92ZXJmbG93OiBoaWRkZW4iPiA8LSBpcyBhIG5vbi1pbnRydXNpdmUgZmxvYXQsIGJl
Y2F1c2Ugb3ZlcmZsb3c6IGhpZGRlbiB0cmlnZ2VycyBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250
ZXh0LjwvZGl2PgogICAgICAgICAgICAgaWYgKGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlz
LCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywg
Zm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CiAKICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdGhl
IGZvcm1hdHRpbmcgY29udGV4dCBpbmhlcml0cyB0aGUgZmxvYXRzIGZyb20gdGhlIHBhcmVudCBm
b3JtYXR0aW5nIGNvbnRleHQuCiAgICAgICAgICAgICAvLyBGaW5kIHRoZSBmb3JtYXR0aW5nIHN0
YXRlIGluIHdoaWNoIHRoaXMgZm9ybWF0dGluZyByb290IGxpdmVzLCBub3QgdGhlIG9uZSBpdCBj
cmVhdGVzIGFuZCB1c2UgaXRzIGZsb2F0aW5nIHN0YXRlLgogICAgICAgICAgICAgYXV0byYgcGFy
ZW50Rm9ybWF0dGluZ1N0YXRlID0gY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jv
b3RJZk5lZWRlZChmb3JtYXR0aW5nUm9vdC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7IAogICAg
ICAgICAgICAgYXV0byYgcGFyZW50RmxvYXRpbmdTdGF0ZSA9IHBhcmVudEZvcm1hdHRpbmdTdGF0
ZS5mbG9hdGluZ1N0YXRlKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJ
bmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50Rmxv
YXRpbmdTdGF0ZSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQog
CkBAIC0xNTQsNyArMTU0LDcgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRl
Rm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgcmV0
dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwgWyZdIHsKIAog
ICAgICAgICAgICAgLy8gQmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3RhYmxpc2hl
cyBhIG5ldyBmbG9hdGluZyBzdGF0ZS4KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZv
cm1hdHRpbmdSb290KSwgKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qmxv
Y2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGlu
Z1Jvb3QpLCAqdGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAg
LTE2Miw3ICsxNjIsNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3Jt
YXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICByZXR1cm4g
Km1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0gewogCiAgICAg
ICAgICAgICAvLyBUYWJsZSBmb3JtYXR0aW5nIGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEg
bmV3IGZsb2F0aW5nIHN0YXRlIC1hbmQgaXQgc3RheXMgZW1wdHkuCi0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6
Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUo
KnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgfQogCkBAIC0xNzQsMTggKzE3NCwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0
dGluZ0NvbnRleHQ+IExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBC
bwogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5n
Q29udGV4dCgpKTsKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5n
U3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdT
dGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250ZXh0Pihm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4
dFJvb3QsIGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdHRp
bmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAg
ICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dE9ubHkoKSk7CiAgICAgICAgIGF1dG8mIGJsb2NrRm9ybWF0dGluZ1N0YXRlID0g
ZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZv
cm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdD
b250ZXh0Um9vdCwgYmxvY2tGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2Nr
Rm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290
LmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGF1dG8mIHRh
YmxlRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8VGFibGVGb3JtYXR0aW5nU3RhdGU+KGNyZWF0
ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRl
eHRSb290KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9ybWF0dGlu
Z0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5nU3RhdGUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBDUkFT
SCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgK
aW5kZXggN2FlM2I0MDlkNzYxMTZmMmU5ZDEzY2MzMWViNmU1NjA2M2IxMDc2Zi4uNzk5MTYyNzU3
NDAxODNmMzUzZjVhZmQ1YjE1MjJlNTY1M2ZjODk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCkBAIC0zNiw3ICszNiw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKIAogc3RydWN0IFJ1biB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0cnVjdCBUZXh0Q29udGV4dCB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFRleHRDb250ZXh0KHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYTFjZDZkNmYxYjdlYjkwZmNj
NzkwNWUzMWU5ZjA0ZmUzYmY4MjYwYi4uNTA4ZDY2MTI5ZDE0ODdjNGU4NDQwOTM5M2RhMzM0MDkx
OWVhN2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjgxLDcg
KzI4MSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250
ZW50KCkgY29uc3QKICAgICAgICAgICAgIGlmICghdHJlYXRBc0lubGluZUNvbnRhaW5lcihsYXlv
dXRCb3gpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgc3RhcnQgb2YgYW4gaW5saW5lIGNvbnRhaW5lciAoZS5nLiA8c3Bhbj4pLgotICAgICAgICAg
ICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJ
dGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0YXJ0KSk7CisgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0
ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyU3RhcnQpKTsKICAgICAg
ICAgICAgIGF1dG8mIGNvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KTsK
ICAgICAgICAgICAgIGlmICghY29udGFpbmVyLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjkyLDE3ICsyOTIsMTcgQEAgdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQoKSBjb25zdAogICAgICAgICAg
ICAgYXV0byYgbGF5b3V0Qm94ID0gKmxheW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAgICAgICAg
ICAvLyBUaGlzIGlzIHRoZSBlbmQgb2YgYW4gaW5saW5lIGNvbnRhaW5lciAoZS5nLiA8L3NwYW4+
KS4KICAgICAgICAgICAgIGlmICh0cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJveCkpCi0g
ICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3Vu
aXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVu
ZCkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VV
bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJF
bmQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0xpbmVCcmVha0JveCgpKQot
ICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91
bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJy
ZWFrKSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFr
ZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5l
QnJlYWspKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRp
b25lZCgpKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0
ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpG
bG9hdCkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1h
a2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpGbG9hdCkp
OwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC5p
c0lubGluZUxldmVsQm94KCkpOwogICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaGFzVGV4
dENvbnRlbnQoKSkKICAgICAgICAgICAgICAgICAgICAgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFu
ZEFwcGVuZFRleHRJdGVtcyhmb3JtYXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKSwgbGF5b3V0Qm94
KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdT
dGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94
LCBJbmxpbmVJdGVtOjpUeXBlOjpCb3gpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkJveCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
YXV0byogbmV4dFNpYmxpbmcgPSBsYXlvdXRCb3gubmV4dEluRmxvd09yRmxvYXRpbmdTaWJsaW5n
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQu
Y3BwCmluZGV4IGY3NDFkZTQ4OWU5NDI0NjFkNzY5MmUyZTQwNDE1OTM4M2IwYzgxNjAuLjBhMjEz
MDIxM2YxMjRlZWI1ZjdmNzExMmU4ODZkNzEyYzUzMWRhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGlu
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBA
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxh
eVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldFRvcExl
ZnQobG9naWNhbFJlY3QudG9wTGVmdCgpKTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0Q29u
dGVudEJveFdpZHRoKGxvZ2ljYWxSZWN0LndpZHRoKCkpOwogICAgICAgICAgICAgZGlzcGxheUJv
eC5zZXRDb250ZW50Qm94SGVpZ2h0KGxvZ2ljYWxSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpS
dW4+KGxvZ2ljYWxSZWN0KSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5l
UnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGlu
ZTo6Q29udGVuCiAgICAgICAgICAgICAgICAgdG9wTGVmdCArPSBHZW9tZXRyeTo6aW5GbG93UG9z
aXRpb25lZFBvc2l0aW9uT2Zmc2V0KGxheW91dFN0YXRlKCksIGxheW91dEJveCk7CiAgICAgICAg
ICAgICBkaXNwbGF5Qm94LnNldFRvcExlZnQodG9wTGVmdCk7CiAgICAgICAgICAgICBsaW5lQm94
UmVjdC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgoKSk7Ci0gICAgICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6
UnVuPihsb2dpY2FsUmVjdCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGlu
ZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExp
bmU6OkNvbnRlbgogICAgICAgICAgICAgYXV0byBwcmV2aW91c1J1bkNhbkJlRXh0ZW5kZWQgPSBw
cmV2aW91c0xpbmVSdW4gJiYgcHJldmlvdXNMaW5lUnVuLT50ZXh0Q29udGV4dCgpID8gcHJldmlv
dXNMaW5lUnVuLT50ZXh0Q29udGV4dCgpLT5jYW5CZUV4dGVuZGVkIDogZmFsc2U7CiAgICAgICAg
ICAgICBhdXRvIHJlcXVpcmVzTmV3UnVuID0gIWluZGV4IHx8ICFwcmV2aW91c1J1bkNhbkJlRXh0
ZW5kZWQgfHwgJmxheW91dEJveCAhPSAmcHJldmlvdXNMaW5lUnVuLT5sYXlvdXRCb3goKTsKICAg
ICAgICAgICAgIGlmIChyZXF1aXJlc05ld1J1bikKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5n
U3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2Fs
UmVjdCwgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5zdGFydCwgdGV4
dENvbnRleHQtPmxlbmd0aCB9KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZElubGluZVJ1bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QsIERpc3BsYXk6
OlJ1bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29udGV4dC0+c3RhcnQsIHRleHRDb250ZXh0LT5sZW5n
dGggfSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byYgbGFzdERp
c3BsYXlSdW4gPSBmb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpLmxhc3QoKTsKICAgICAgICAg
ICAgICAgICBsYXN0RGlzcGxheVJ1bi0+ZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0Lndp
ZHRoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lSXRlbS5oCmluZGV4IGIwMDEzYjZlZDU2M2JjYmY4MjgxMzkxMzQxZjJkZDU2MTVlYzUz
ZWYuLjc5MDYxOTY4MWU2NzUyZDI4NzI0OTM4NjIyZTNhNzRiZTAzM2ZmMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKQEAg
LTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAK
IGNsYXNzIElubGluZUl0ZW0gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW5saW5lSXRlbT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlw
ZSB7IFRleHQsIEhhcmRMaW5lQnJlYWssIEJveCwgRmxvYXQsIENvbnRhaW5lclN0YXJ0LCBDb250
YWluZXJFbmQgfTsKICAgICBJbmxpbmVJdGVtKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZS5jcHAKaW5kZXggNGYyMGE2ZmYxZDcwY2UzNDliZGUwZWJlZGZlOGY4MGEzNWU4NWEyOC4u
ZWQ2NTIwNWI3ZGI5OWIwZjZhYjEwZjNlZWVhYTA3YzQ0NmI3ZjhkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAKQEAg
LTU0LDcgKzU0LDcgQEAgTGluZTo6Q29udGVudDo6UnVuOjpSdW4oY29uc3QgSW5saW5lSXRlbSYg
aW5saW5lSXRlbSwgY29uc3QgVGV4dENvbnRleHQmIHRleHRDb24KIAogTGluZTo6TGluZShjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50cyYgaW5p
dGlhbENvbnN0cmFpbnRzLCBTa2lwVmVydGljYWxBbGlnbWVudCBza2lwVmVydGljYWxBbGlnbWVu
dCkKICAgICA6IG1fbGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpCi0gICAgLCBtX2NvbnRlbnQoc3Rk
OjptYWtlX3VuaXF1ZTxMaW5lOjpDb250ZW50PigpKQorICAgICwgbV9jb250ZW50KG1ha2VVbmlx
dWU8TGluZTo6Q29udGVudD4oKSkKICAgICAsIG1fbG9naWNhbFRvcExlZnQoaW5pdGlhbENvbnN0
cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0KQogICAgICwgbV9iYXNlbGluZSh7IGluaXRpYWxDb25zdHJh
aW50cy5oZWlnaHRBbmRCYXNlbGluZS5iYXNlbGluZU9mZnNldCwgaW5pdGlhbENvbnN0cmFpbnRz
LmhlaWdodEFuZEJhc2VsaW5lLmhlaWdodCAtIGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRC
YXNlbGluZS5iYXNlbGluZU9mZnNldCB9KQogICAgICwgbV9pbml0aWFsU3RydXQoaW5pdGlhbENv
bnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLnN0cnV0KQpAQCAtMjEzLDcgKzIxMyw3IEBAIHZv
aWQgTGluZTo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQg
bG9naWNhbFdpZHRoKQogCiB2b2lkIExpbmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKGNvbnN0
IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2ljYWxSZWN0
KQogewotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRl
bnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMo
KS5hcHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0
KSk7CiAgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IGxvZ2ljYWxSZWN0LndpZHRoKCk7CiB9
CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50KGNvbnN0
IElubGluZVRleHRJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIH0KIAog
ICAgIGF1dG8gdGV4dENvbnRleHQgPSBDb250ZW50OjpSdW46OlRleHRDb250ZXh0IHsgaW5saW5l
SXRlbS5zdGFydCgpLCBpbmxpbmVJdGVtLmlzQ29sbGFwc2VkKCkgPyAxIDogaW5saW5lSXRlbS5s
ZW5ndGgoKSwgaXNDb21wbGV0ZWx5Q29sbGFwc2VkLCBpbmxpbmVJdGVtLmlzV2hpdGVzcGFjZSgp
LCBjYW5CZUV4dGVuZGVkIH07Ci0gICAgYXV0byBsaW5lSXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCB0ZXh0Q29udGV4dCwgbG9naWNhbFJlY3QpOworICAg
IGF1dG8gbGluZUl0ZW0gPSBtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgdGV4
dENvbnRleHQsIGxvZ2ljYWxSZWN0KTsKICAgICBpZiAoaXNUcmltbWFibGUgJiYgIWlzQ29tcGxl
dGVseUNvbGxhcHNlZCkKICAgICAgICAgbV90cmltbWFibGVDb250ZW50LmFkZChsaW5lSXRlbS5n
ZXQoKSk7CiAKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZE5vblJlcGxhY2Vk
SW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbAogICAg
ICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQoaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5l
SXRlbSkpOwogICAgIH0KIAotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2Nv
bnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0s
IGxvZ2ljYWxSZWN0KSk7CiAgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IChsb2dpY2FsV2lk
dGggKyBob3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgaG9yaXpvbnRhbE1hcmdpbi5lbmQpOwogICAg
IG1fdHJpbW1hYmxlQ29udGVudC5jbGVhcigpOwogfQpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQg
TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayhjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQog
ICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSwgeyB9KTsKICAg
ICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgfQotICAg
IG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4o
aW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQo
bWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiB9CiAK
IHZvaWQgTGluZTo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGluZUl0ZW0m
IGlubGluZUl0ZW0sIExheW91dFVuaXQgcnVuSGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCmluZGV4IGZhZjA1NDc1M2Qz
NzIyYWJjMDFkOGE3M2Y0Nzk5MzQ5YmNiMWFhMTEuLjczN2EwN2IwMzJhZjZmZjExOTkwOTZmN2Ez
NzU3NTdlNmRhOWYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKQEAgLTUyLDggKzUyLDEwIEBAIGNsYXNzIExpbmUgewog
ICAgIExpbmUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMmLCBT
a2lwVmVydGljYWxBbGlnbWVudCk7CiAKICAgICBjbGFzcyBDb250ZW50IHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBzdHJ1Y3QgUnVuIHsK
KyAgICAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgICAg
IHN0cnVjdCBUZXh0Q29udGV4dCB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgc3RhcnQgeyAw
IH07CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0u
Y3BwCmluZGV4IGYxMzA4OWE3MDhmM2ZlM2ZmOWI3N2Y3MjA5NmNkYTQyZWYzNmUyMjIuLjVlNmMy
NTZkYjBiMzA5YWFmMWUyNTgyMWYwZTFlMThlNTY0NTJmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4
dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogewogICAgIGF1dG8gdGV4
dCA9IGlubGluZUJveC50ZXh0Q29udGVudCgpOwogICAgIGlmICghdGV4dC5sZW5ndGgoKSkKLSAg
ICAgICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
VGV4dEl0ZW0+KGlubGluZUJveCwgMCwgMCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHJldHVy
biBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVC
b3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVCb3gu
c3R5bGUoKTsKICAgICBhdXRvIHByZXNlcnZlTmV3bGluZSA9IHN0eWxlLnByZXNlcnZlTmV3bGlu
ZSgpOwpAQCAtOTksMjAgKzk5LDIwIEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFw
cGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QKICAgICB3aGls
ZSAoY3VycmVudFBvc2l0aW9uIDwgdGV4dC5sZW5ndGgoKSkgewogICAgICAgICAvLyBTb2Z0IGxp
bmVicmVhaz8KICAgICAgICAgaWYgKGlzU29mdExpbmVCcmVhayh0ZXh0W2N1cnJlbnRQb3NpdGlv
bl0sIHByZXNlcnZlTmV3bGluZSkpIHsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0
aW9uLCAxLCB0cnVlLCBmYWxzZSkpOworICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQo
bWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIDEs
IHRydWUsIGZhbHNlKSk7CiAgICAgICAgICAgICArK2N1cnJlbnRQb3NpdGlvbjsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc1doaXRlc3BhY2VDaGFyYWN0
ZXIodGV4dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7CiAgICAgICAgICAg
ICBhdXRvIGxlbmd0aCA9IG1vdmVUb05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odGV4dCwgY3Vy
cmVudFBvc2l0aW9uLCBwcmVzZXJ2ZU5ld2xpbmUpOwogICAgICAgICAgICAgYXV0byBpc0NvbGxh
cHNlZCA9IGNvbGxhcHNlV2hpdGVTcGFjZSAmJiBsZW5ndGggPiAxOwotICAgICAgICAgICAgaW5s
aW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5l
Qm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgdHJ1ZSwgaXNDb2xsYXBzZWQpKTsKKyAgICAg
ICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlu
bGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFwc2VkKSk7CiAg
ICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gbGVuZ3RoOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGxlbmd0aCA9IG1vdmVUb05leHRCcmVha2Fi
bGVQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVCcmVha0l0ZXJhdG9yLCBzdHlsZSk7Ci0g
ICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0
ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIGZhbHNlLCBmYWxzZSkpOwor
ICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihp
bmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsKICAgICAg
ICAgY3VycmVudFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICB9CiB9CkBAIC0xMzAsNyArMTMwLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRJdGVtPiBJbmxpbmVUZXh0SXRlbTo6c3BsaXQo
dW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgdW4KIHsKICAgICBSRUxFQVNFX0FTU0VSVChzcGxpdFBv
c2l0aW9uID49IHRoaXMtPnN0YXJ0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNwbGl0UG9zaXRp
b24gKyBsZW5ndGggPD0gZW5kKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGlu
ZVRleHRJdGVtPihsYXlvdXRCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1doaXRlc3Bh
Y2UoKSwgaXNDb2xsYXBzZWQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0
ZW0+KGxheW91dEJveCgpLCBzcGxpdFBvc2l0aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFjZSgpLCBp
c0NvbGxhcHNlZCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5jcHAKaW5kZXggODA4NGUyYmI2OWU4YzkyYWFhOWI3YmU2ZDhhMTRiNzc5
NTI5MTIwMy4uM2JhZjllYWExZmJhOTJjNzBmNGM2YzczMjk1YjEzOGIzMWJjNWI5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCkBAIC00NSw3
ICs0NSw3IEBAIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVz
LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsCiAgICAgLCBtX2hhc1JhcmVEYXRhKGZh
bHNlKQogewogICAgIGlmIChpc1JlcGxhY2VkKCkpCi0gICAgICAgIGVuc3VyZVJhcmVEYXRhKCku
cmVwbGFjZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CisgICAgICAgIGVu
c3VyZVJhcmVEYXRhKCkucmVwbGFjZWQgPSBtYWtlVW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CiB9
CiAKIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5k
ZXJTdHlsZSYmIHN0eWxlKQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGNvbnN0IEJveDo6Qm94UmFyZURh
dGEmIEJveDo6cmFyZURhdGEoKSBjb25zdAogQm94OjpCb3hSYXJlRGF0YSYgQm94OjplbnN1cmVS
YXJlRGF0YSgpCiB7CiAgICAgc2V0SGFzUmFyZURhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpyYXJl
RGF0YU1hcCgpLmVuc3VyZSh0aGlzLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveFJh
cmVEYXRhPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpyYXJlRGF0YU1hcCgp
LmVuc3VyZSh0aGlzLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlPEJveFJhcmVEYXRhPigpOyB9KS5p
dGVyYXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgQm94OjpyZW1vdmVSYXJlRGF0YSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHAKaW5kZXggYWIyODRlYTA5OWI4ZmEzZmZhNzI3NGUwNmU0Y2VjY2FmODQ3NDMwNy4uZjJhZmNh
YmQwYTM4MWM2ZDVjOGRhMzlkMzQ2ZTFhZWEzM2Q0N2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMTMw
LDI1ICsxMzAsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxh
eW91dEJveChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICBpZiAoaXM8UmVuZGVy
VGV4dD4oY2hpbGRSZW5kZXJlcikpIHsKICAgICAgICAgLy8gRklYTUU6IENsZWFybHkgdGhlcmUg
bXVzdCBiZSBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhpcy4KICAgICAgICAgaWYgKHBhcmVudFJl
bmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAg
ICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94Pihkb3duY2FzdDxSZW5k
ZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNsb25l
KHBhcmVudFJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0g
bWFrZVVuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdp
bmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlx
dWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQo
KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVu
ZGVyZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkpOworICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5k
ZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdp
dGhEaXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsK
ICAgICAgICAgcmV0dXJuIGNoaWxkTGF5b3V0Qm94OwogICAgIH0KIAogICAgIGF1dG8mIHJlbmRl
cmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGRSZW5kZXJlcik7CiAgICAgYXV0byBk
aXNwbGF5VHlwZSA9IHJlbmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpOwogICAgIGlmIChpczxSZW5k
ZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0
dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkp
OwogCiAgICAgaWYgKGlzPFJlbmRlclRhYmxlPihyZW5kZXJlcikpIHsKICAgICAgICAgLy8gQ29u
c3RydWN0IHRoZSBwcmluY2lwYWwgdGFibGUgd3JhcHBlciBib3ggKGFuZCBub3QgdGhlIHRhYmxl
IGJveCBpdHNlbGYpLgotICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFi
bGVXcmFwcGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7Cisg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVu
dEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZVdyYXBwZXJCb3ggfSwgUmVuZGVy
U3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICB9IGVsc2UgaWYgKGlzPFJlbmRl
clJlcGxhY2VkPihyZW5kZXJlcikpIHsKICAgICAgICAgaWYgKGRpc3BsYXlUeXBlID09IERpc3Bs
YXlUeXBlOjpCbG9jaykKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3Vu
aXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25l
KHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25l
KHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICAvLyBGSVhN
RTogV2UgZG9uJ3QgeWV0IHN1cHBvcnQgYWxsIHJlcGxhY2VkIGVsZW1lbnRzIGFuZCB0aGlzIGlz
IHRlbXBvcmFyeSBhbnl3YXkuCiAgICAgICAgIGlmIChjaGlsZExheW91dEJveC0+cmVwbGFjZWQo
KSkKICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpLT5zZXRJbnRyaW5zaWNT
aXplKGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihyZW5kZXJlcikuaW50cmluc2ljU2l6ZSgpKTsK
QEAgLTE2MywxOCArMTYzLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpj
cmVhdGVMYXlvdXRCb3goY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAgICAgICAg
ICAgICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHlsZSgp
KTsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VG9wKHsgb2Zmc2V0LT5oZWlnaHQoKSwgRml4
ZWQgfSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldExlZnQoeyBvZmZzZXQtPndpZHRoKCks
IEZpeGVkIH0pOwotICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZSgqc3R5
bGUpKTsKKyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFp
bmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7CiAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0
eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVsc2Ug
aWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAgICAgICBjaGls
ZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAg
ICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0
cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7
CiAgICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9j
aykKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWlu
ZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRl
cmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxD
b250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25l
KHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlz
cGxheVR5cGU6OlRhYmxlQ2FwdGlvbiB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVDZWxsKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9u
ZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VV
bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxl
OjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5
cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxh
eVR5cGU6OlRhYmxlSGVhZGVyR3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRh
YmxlRm9vdGVyR3JvdXAKICAgICAgICAgICAgIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBl
OjpUYWJsZVJvdyB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91
cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW4pIHsKLSAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRB
dHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkp
KTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVs
ZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0
eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVN
RU5URURfWUVUKCk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMjEwLDcgKzIxMCw3IEBA
IHZvaWQgVHJlZUJ1aWxkZXI6OmNyZWF0ZVRhYmxlU3RydWN0dXJlKGNvbnN0IFJlbmRlclRhYmxl
JiB0YWJsZVJlbmRlcmVyLCBDb250YWluCiAgICAgICAgIHRhYmxlQ2hpbGQgPSB0YWJsZUNoaWxk
LT5uZXh0U2libGluZygpOwogICAgIH0KIAotICAgIGF1dG8gdGFibGVCb3ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5
cGU6OlRhYmxlQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZSh0YWJsZVJlbmRlcmVyLnN0eWxlKCkp
KTsKKyAgICBhdXRvIHRhYmxlQm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVu
dEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJTdHlsZTo6
Y2xvbmUodGFibGVSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgYXBwZW5kQ2hpbGQodGFibGVXcmFw
cGVyQm94LCAqdGFibGVCb3gpOwogICAgIHdoaWxlICh0YWJsZUNoaWxkKSB7CiAgICAgICAgIFRy
ZWVCdWlsZGVyOjpjcmVhdGVTdWJUcmVlKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0YWJsZUNo
aWxkKSwgKnRhYmxlQm94KTsKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIHByaW50TGF5b3V0VHJl
ZUZvckxpdmVEb2N1bWVudHMoKQogICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5kIGEgd2F5
IHRvIG91dHB1dCBnZW9tZXRyeSB3aXRob3V0IGxheW91dCBjb250ZXh0LgogICAgICAgICBhdXRv
JiByZW5kZXJWaWV3ID0gKmRvY3VtZW50LT5yZW5kZXJWaWV3KCk7CiAgICAgICAgIGF1dG8gaW5p
dGlhbENvbnRhaW5pbmdCbG9jayA9IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRUcmVlKHJlbmRl
clZpZXcpOwotICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxMYXlv
dXQ6OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CisgICAgICAgIGF1dG8g
bGF5b3V0U3RhdGUgPSBtYWtlVW5pcXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCppbml0aWFsQ29u
dGFpbmluZ0Jsb2NrKTsKICAgICAgICAgbGF5b3V0U3RhdGUtPnNldFF1aXJrc01vZGUocmVuZGVy
Vmlldy5kb2N1bWVudCgpLmluTGltaXRlZFF1aXJrc01vZGUoKSA/IExheW91dFN0YXRlOjpRdWly
a3NNb2RlOjpMaW1pdGVkIDogKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSA/
IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpZZXMgOiBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6
Tm8pKTsKICAgICAgICAgbGF5b3V0U3RhdGUtPnVwZGF0ZUxheW91dCgpOwogICAgICAgICBzaG93
TGF5b3V0VHJlZSgqaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgbGF5b3V0U3RhdGUuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdy
aWQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQu
Y3BwCmluZGV4IGM3YWUzZTU4MTBkNjAyZjY1ZWI3MDAyZmZlOWM1MmJmYzVjMDAwYTUuLmI0NWYw
NWU1NTkzOGU1NDY0ZmIyMjE5Yjg2NzJmZGUxZWI1YTY1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHAKQEAgLTc4LDEzICs3
OCwxMyBAQCB2b2lkIFRhYmxlR3JpZDo6YXBwZW5kQ2VsbChjb25zdCBCb3gmIHRhYmxlQ2VsbEJv
eCkKICAgICAgICAgICAgIGluaXRpYWxTbG90UG9zaXRpb24ubW92ZSgxLCAwKTsKICAgICAgICAg
fQogICAgIH0KLSAgICBhdXRvIGNlbGxJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxDZWxsSW5mbz4o
dGFibGVDZWxsQm94LCBpbml0aWFsU2xvdFBvc2l0aW9uLCBDZWxsU2l6ZSB7IHJvd1NwYW4sIGNv
bHVtblNwYW4gfSk7CisgICAgYXV0byBjZWxsSW5mbyA9IG1ha2VVbmlxdWU8Q2VsbEluZm8+KHRh
YmxlQ2VsbEJveCwgaW5pdGlhbFNsb3RQb3NpdGlvbiwgQ2VsbFNpemUgeyByb3dTcGFuLCBjb2x1
bW5TcGFuIH0pOwogICAgIC8vIFJvdyBhbmQgY29sdW1uIHNwYW5uZXJzIGNyZWF0ZSBhZGRpdGlv
bmFsIHNsb3RzLgogICAgIGZvciAoaW50IHJvdyA9IDE7IHJvdyA8PSByb3dTcGFuOyArK3Jvdykg
ewogICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAxOyBjb2x1bW4gPD0gY29sdW1uU3BhbjsgKytj
b2x1bW4pIHsKICAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBTbG90UG9zaXRpb24geyBpbml0
aWFsU2xvdFBvc2l0aW9uLngoKSArIHJvdyAtIDEsIGluaXRpYWxTbG90UG9zaXRpb24ueSgpICsg
Y29sdW1uIC0gMSB9OwogICAgICAgICAgICAgQVNTRVJUKCFtX3Nsb3RNYXAuY29udGFpbnMocG9z
aXRpb24pKTsKLSAgICAgICAgICAgIG1fc2xvdE1hcC5hZGQocG9zaXRpb24sIHN0ZDo6bWFrZV91
bmlxdWU8U2xvdEluZm8+KCpjZWxsSW5mbykpOworICAgICAgICAgICAgbV9zbG90TWFwLmFkZChw
b3NpdGlvbiwgbWFrZVVuaXF1ZTxTbG90SW5mbz4oKmNlbGxJbmZvKSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgbV9jZWxsTGlzdC5hZGQoV1RGTW92ZShjZWxsSW5mbykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmgKaW5kZXggYmJiMjcz
Njc3NDE3ZjkzYjgxM2IwMzM3MDNiYzlkZjdjMTI1MWQ4Ny4uYTQ2ODUxOTlhZTRhNjE2YmVhNjM4
NDIxMzQ5NzJjMGYyMzNlYzRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3Rh
YmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFRhYmxlR3Jp
ZCB7CiAgICAgdXNpbmcgU2xvdFBvc2l0aW9uID0gSW50UG9pbnQ7CiAgICAgdXNpbmcgQ2VsbFNp
emUgPSBJbnRTaXplOwogICAgIHN0cnVjdCBDZWxsSW5mbyA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxDZWxsSW5mbz4geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIENlbGxJbmZvKGNvbnN0IEJveCYgdGFibGVDZWxsQm94LCBTbG90UG9zaXRpb24sIENl
bGxTaXplKTsKIAogICAgICAgICBjb25zdCBCb3gmIHRhYmxlQ2VsbEJveDsKQEAgLTYwLDYgKzYx
LDcgQEAgY2xhc3MgVGFibGVHcmlkIHsKIAogICAgIHVzaW5nIFNsb3RMb2dpY2FsU2l6ZSA9IExh
eW91dFNpemU7CiAgICAgc3RydWN0IFNsb3RJbmZvIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBTbG90SW5mbygpID0gZGVmYXVsdDsKICAgICAgICAg
U2xvdEluZm8oQ2VsbEluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwCmluZGV4IDUxZDc3ZTRhZjFkYmRkZjA0NWE5MmMxYzhhZDNiOTllYWNlYjk3YjUuLmI0OThh
MjI0YjE5MGM2Y2U4NDRlYjlkZDdlYjliN2ExMDVkNzZkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZShEb2N1bWVudExvYWRlciYgZG9jdW1l
bnRMb2EKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oV1RGTW92ZShm
aWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRG
aWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKIH0KIAogQ29udGVudEZp
bHRlcjo6Q29udGVudEZpbHRlcihDb250YWluZXImJiBjb250ZW50RmlsdGVycywgRG9jdW1lbnRM
b2FkZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBkMGQ1NGI5N2VhZTcyMDQyNmY5NjFjOGRh
ZTg5NWUyMDM2OWNlZGNjLi5jNGNlNWY1NTIxNzBiM2NmYzhiODQxYjU5YTUxMGZkNzVhYTgzZmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgdmFsaWRhdGVQcmVmbGlnaHRSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAg
aWYgKCFwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2UsIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBzZWN1cml0eU9yaWdpbiwgZXJyb3JEZXNjcmlwdGlvbikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAg
IGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
SXRlbT4oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogICAgIGlmICghcmVzdWx0LT5wYXJzZShy
ZXNwb25zZSkKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmlnaW5NZXRob2QocmVx
dWVzdC5odHRwTWV0aG9kKCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlcnJvckRlc2NyaXB0
aW9uKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09yaWdpbkhlYWRlcnMocmVxdWVz
dC5odHRwSGVhZGVyRmllbGRzKCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlcnJvckRlc2Ny
aXB0aW9uKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
ZGUwOWU3MDM5OWNjNzQ3ZTg4NzM2OTc4MzcyNGU2ZGFhOWZjNzg4Yi4uMDQ1NWNhZmM1OWZmN2I2
ZWExZjlhMmNkMzkzMWE2OWU5ZjY5NDQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZUQK
ICAgICAsIG1fb3JpZ2luYWxTdWJzdGl0dXRlRGF0YVdhc1ZhbGlkKHN1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lcigqdGhpcywg
JkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQpCiAg
ICAgLCBtX2RhdGFMb2FkVGltZXIoKnRoaXMsICZEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3Rp
dHV0ZURhdGFMb2FkTm93KQotICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChzdGQ6Om1ha2Vf
dW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCisgICAgLCBtX2FwcGxpY2F0aW9u
Q2FjaGVIb3N0KG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKSkKIHsKIH0K
IApAQCAtMTMzNiw3ICsxMzM2LDcgQEAgdWludDY0X3QgRG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBs
aWNhdGlvbk1hbmlmZXN0KCkKICAgICBpZiAobWFuaWZlc3RVUkwuaXNFbXB0eSgpIHx8ICFtYW5p
ZmVzdFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXV0byBtYW5pZmVz
dExvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcj4oKnRo
aXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CisgICAgYXV0byBtYW5pZmVzdExvYWRl
ciA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExvYWRlcj4oKnRoaXMsIG1hbmlmZXN0
VVJMLCB1c2VDcmVkZW50aWFscyk7CiAgICAgYXV0byogcmF3TWFuaWZlc3RMb2FkZXIgPSBtYW5p
ZmVzdExvYWRlci5nZXQoKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBuZXh0Q2FsbGJhY2tJRCsr
OwogICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuc2V0KFdURk1vdmUobWFuaWZlc3RM
b2FkZXIpLCBjYWxsYmFja0lEKTsKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnNldEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYgYXJjaGl2ZSkKIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYgYXJjaGl2ZSkKIHsKICAgICBp
ZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAgICAgbV9hcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
PigpOworICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFy
Y2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLT5hZGRBbGxSZXNvdXJjZXMoYXJjaGl2ZSk7CiB9CiAKQEAgLTE0MzYsNyArMTQzNiw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYgYXJj
aGl2ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2
ZVJlc291cmNlPiYmIHJlc291cmNlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CisgICAgICAgIG1fYXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4o
KTsKICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFkZFJlc291cmNlKFdURk1vdmUo
cmVzb3VyY2UpKTsKIH0KIApAQCAtMTk2Myw3ICsxOTYzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgICAgICAv
LyBJZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBieSBjbGVhcmluZyBtX3JlcXVlc3QsIGl0J3MgcG9z
c2libGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVIb3N0CiAgICAgICAgIC8vIGlzIG5vdyBpbiBhIHN0
YXRlIHdoZXJlIHN0YXJ0aW5nIGFuIGVtcHR5IGxvYWQgd2lsbCBiZSBpbmNvbnNpc3RlbnQuIFJl
cGxhY2UgaXQgd2l0aAogICAgICAgICAvLyBhIG5ldyBBcHBsaWNhdGlvbkNhY2hlSG9zdC4KLSAg
ICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRp
b25DYWNoZUhvc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IG1h
a2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsKICAgICAgICAgbWF5YmVMb2Fk
RW1wdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMjIsNyArMjEyMiw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgdWludDY0X3QgbG9hZElkZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IGljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVy
bCk7CisgICAgYXV0byBpY29uTG9hZGVyID0gbWFrZVVuaXF1ZTxJY29uTG9hZGVyPigqdGhpcywg
aWNvbi51cmwpOwogICAgIGF1dG8qIHJhd0ljb25Mb2FkZXIgPSBpY29uTG9hZGVyLmdldCgpOwog
ICAgIG1faWNvbkxvYWRlcnMuc2V0KFdURk1vdmUoaWNvbkxvYWRlciksIG5ld0NhbGxiYWNrSUQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IGM0NTBjMDg3MGMw
ZGI5MDAyYjkwNGM3YjZjYmNlNGM5NjkwMmM2ZGMuLmFjYTM0NTI5ODViNzMxMTliY2IyM2M0M2Jh
MjNlZWZiNzVhN2EzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC01ODIsNyArNTgyLDcgQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKCkKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlQcm9ncmVzc1Ry
YWNrZXJDbGllbnQ+IGR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50OwogICAgIHBhZ2VDb25maWd1
cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9ICZkdW1teVByb2dyZXNzVHJhY2tlckNsaWVu
dC5nZXQoKTsKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigpOworICAg
IHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxF
bXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigpOwogCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
YXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRl
KHsgfSwgeyB9KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyID0gYWRv
cHRSZWYoKm5ldyBFbXB0eURhdGFiYXNlUHJvdmlkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggZTBmNDYxNDhmMmRmYWE4N2Y2YjI0MjYzN2Q1MDg5MTg1MjBhNjBh
Mi4uODNiZWIyNzE3ZDMzN2MzNDFjMDE1ZWNmNDZkNGYzNzNlMDhiMTUzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNzAsMTAgKzI3MCwxMCBAQCBjbGFzcyBGcmFt
ZUxvYWRlcjo6RnJhbWVQcm9ncmVzc1RyYWNrZXIgewogRnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVy
KEZyYW1lJiBmcmFtZSwgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fZnJhbWUo
ZnJhbWUpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3BvbGljeUNoZWNrZXIoc3Rk
OjptYWtlX3VuaXF1ZTxQb2xpY3lDaGVja2VyPihmcmFtZSkpCi0gICAgLCBtX2hpc3Rvcnkoc3Rk
OjptYWtlX3VuaXF1ZTxIaXN0b3J5Q29udHJvbGxlcj4oZnJhbWUpKQorICAgICwgbV9wb2xpY3lD
aGVja2VyKG1ha2VVbmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQorICAgICwgbV9oaXN0b3J5
KG1ha2VVbmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAsIG1fbm90aWZpZXIo
ZnJhbWUpCi0gICAgLCBtX3N1YmZyYW1lTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8U3ViZnJhbWVM
b2FkZXI+KGZyYW1lKSkKKyAgICAsIG1fc3ViZnJhbWVMb2FkZXIobWFrZVVuaXF1ZTxTdWJmcmFt
ZUxvYWRlcj4oZnJhbWUpKQogICAgICwgbV9taXhlZENvbnRlbnRDaGVja2VyKGZyYW1lKQogICAg
ICwgbV9zdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAgLCBtX2xvYWRUeXBlKEZyYW1l
TG9hZFR5cGU6OlN0YW5kYXJkKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmluaXQoKQogICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhGcmFtZUxvYWRlclN0YXRlTWFj
aGluZTo6RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KTsKIAogICAgIG1fbmV0d29ya2lu
Z0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwotICAgIG1fcHJv
Z3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9m
cmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5pcXVlPEZyYW1lUHJvZ3Jlc3NU
cmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNp
emVkRG9jdW1lbnQoY29uc3QgVVJMJikKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQogICAgIG1fbmVlZHND
bGVhciA9IHRydWU7CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0ID0gbV9jbGllbnQuY3JlYXRl
TmV0d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNzVHJhY2tlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOworICAgIG1fcHJvZ3Jlc3NUcmFj
a2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCkBAIC0yNjc4LDcg
KzI2NzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbigpCiAgICAgLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJvd3NpbmctdGhlLXdlYi5odG1s
I25hdmlnYXRlCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdmlnYXRpb25EaXNhYmxlcj4gbmF2aWdh
dGlvbkRpc2FibGVyOwogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIG5h
dmlnYXRpb25EaXNhYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdGlvbkRpc2FibGVyPigm
bV9mcmFtZSk7CisgICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9IG1ha2VVbmlxdWU8TmF2aWdh
dGlvbkRpc2FibGVyPigmbV9mcmFtZSk7CiAKICAgICAvLyBBbnkgc3ViZnJhbWUgaW5zZXJ0ZWQg
YnkgdW5sb2FkIGV2ZW50IGhhbmRsZXJzIGV4ZWN1dGVkIGluIHRoZSBsb29wIGJlbG93IHdpbGwg
bm90IGdldCB1bmxvYWRlZAogICAgIC8vIGJlY2F1c2Ugd2UgY3JlYXRlIGEgY29weSBvZiB0aGUg
c3ViZnJhbWVzIGxpc3QgYmVmb3JlIGxvb3BpbmcuIFRoZXJlZm9yZSwgaXQgd291bGQgYmUgdW5z
YWZlIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDhlM2E0NmI1MTBhOTk4
MGMyYWZiODBhMzQ0OGE0OTg5ZWFjMTllMTkuLjVmZmY2N2Q5NDJlYmU5MWUwM2E1Mjk2ZTZlOWRh
MjRkYjNiN2NjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC05Niw2ICs5
Niw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNSZWxvYWQoRnJhbWVMb2FkVHlwZSk7CiB1c2lu
ZyBDb250ZW50UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IFdURjo6RnVuY3Rpb248dm9pZChQb2xp
Y3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+OwogCiBjbGFzcyBGcmFtZUxvYWRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RnJhbWVMb2FkZXIpOwogcHVibGljOgogICAgIEZyYW1lTG9hZGVyKEZyYW1lJiwgRnJhbWVMb2Fk
ZXJDbGllbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBjZGY2NDk1
MjZmZTNkMWYzMzI4ZDZlMzZjMjAxMDg3YzMxZjE2NTViLi40MDhjNTM2NDI5ZTNiMDg3Nzk4ZWI5
N2U3Njg2NGNjOTQ4NjY2N2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlu
a0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBA
IC0xNDIsMjIgKzE0MiwyMiBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVz
b3VyY2VDbGllbnQ+IGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbgogewogICAgIHN3aXRj
aCAocmVzb3VyY2UudHlwZSgpKSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SW1h
Z2VSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRJ
bWFnZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNvdXJj
ZSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZEltYWdlUmVzb3VyY2VD
bGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNlKSk7CiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6U2NyaXB0OgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2Fz
dDxDYWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExp
bmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFNj
cmlwdD4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHls
ZVNoZWV0OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZFN0eWxl
UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVz
b3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRTdHlsZVJlc291
cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hlZXQ+KHJlc291cmNl
KSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlOgotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZEZvbnRSZXNvdXJjZUNsaWVudD4o
bG9hZGVyLCBkb3duY2FzdDxDYWNoZWRGb250PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxMaW5rUHJlbG9hZEZvbnRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2Fz
dDxDYWNoZWRGb250PihyZXNvdXJjZSkpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpUZXh0VHJhY2tSZXNvdXJjZToKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxv
YWRlciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBk
b3duY2FzdDxDYWNoZWRUZXh0VHJhY2s+KHJlc291cmNlKSk7CiAjZW5kaWYKICAgICBjYXNlIENh
Y2hlZFJlc291cmNlOjpUeXBlOjpNZWRpYVJlc291cmNlOgogICAgICAgICBBU1NFUlQoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5tZWRpYVByZWxvYWRpbmdFbmFibGVk
KCkpOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBl
OjpSYXdSZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxv
YWRSYXdSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4o
cmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRSYXdSZXNv
dXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRSYXdSZXNvdXJjZT4ocmVzb3VyY2Up
KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2U6CiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SWNvbjoKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCmluZGV4IDAyY2M3ZDEyMGNh
NGJjZmYzNTI1YzhmNzQ5Y2M0MTgwZmU2ZDQ1ZTIuLjhhZTRiMzFiOGI2OWY5OGQwMWFkYTc4ODk5
YTk4YmQxMWRkNDI3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uRGlzYWJsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2Fi
bGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmF2
aWdhdGlvbkRpc2FibGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBOYXZpZ2F0aW9uRGlzYWJsZXIoRnJhbWUqIGZyYW1lKQogICAgICAgICA6IG1fZnJhbWUo
ZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAK
aW5kZXggNTU4Yzc4MDQ5NTdlYzg4Mjg4MThlZjU2MTliZjk4M2QzZjk0MGE1NS4uM2MyYzI1MmFh
NTFiOTY5Mjk1ZWNmMTQ4MTI1NGEzMjQwZWM0MmE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgTmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChEb2N1bWVudCYgaW5pdGlhdGluZ0Rv
Y3VtZW50LCBkb3VibGUKICAgICAvLyBXZSB3YW50IGEgbmV3IGJhY2svZm9yd2FyZCBsaXN0IGl0
ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91dCBpcyA+IDEgc2Vjb25kLgogICAgIGlmICghbV9yZWRp
cmVjdCB8fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxheSgpKSB7CiAgICAgICAgIGF1dG8gbG9j
a0JhY2tGb3J3YXJkTGlzdCA9IGRlbGF5IDw9IDEgPyBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMg
OiBMb2NrQmFja0ZvcndhcmRMaXN0OjpObzsKLSAgICAgICAgc2NoZWR1bGUoc3RkOjptYWtlX3Vu
aXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3VtZW50LCBkZWxheSwgJm1fZnJh
bWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBs
b2NrQmFja0ZvcndhcmRMaXN0KSk7CisgICAgICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1
bGVkUmVkaXJlY3Q+KGluaXRpYXRpbmdEb2N1bWVudCwgZGVsYXksICZtX2ZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3
YXJkTGlzdCkpOwogICAgIH0KIH0KIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgTmF2aWdhdGlv
blNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShEb2N1bWVudCYgaW5pdGlhdGluZ0Rv
Y3VtZW50LCBTCiAgICAgLy8gVGhpcyBtYXkgaGFwcGVuIHdoZW4gYSBmcmFtZSBjaGFuZ2VzIHRo
ZSBsb2NhdGlvbiBvZiBhbm90aGVyIGZyYW1lLgogICAgIGJvb2wgZHVyaW5nTG9hZCA9ICFsb2Fk
ZXIuc3RhdGVNYWNoaW5lKCkuY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCk7CiAKLSAg
ICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlPihpbml0
aWF0aW5nRG9jdW1lbnQsICZzZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgbG9ja0hpc3Rv
cnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRMb2NhdGlvbkNoYW5n
ZT4oaW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVmZXJyZXIsIGxv
Y2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxl
Rm9ybVN1Ym1pc3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3Npb24pCkBAIC00Njgs
NyArNDY4LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNz
aW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW8KICAgICAgICAgbG9ja0JhY2tGb3J3
YXJkTGlzdCA9IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllczsKICAgICB9CiAgICAgCi0gICAgc2No
ZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lvbj4oV1RGTW92ZShz
dWJtaXNzaW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOworICAgIHNjaGVk
dWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24+KFdURk1vdmUoc3VibWlzc2lv
biksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpKTsKIH0KIAogdm9pZCBOYXZpZ2F0
aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2goRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVu
dCkKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxl
UmVmcmVzaChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50KQogICAgIGlmICh1cmwuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNj
aGVkdWxlZFJlZnJlc2g+KGluaXRpYXRpbmdEb2N1bWVudCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIo
KSkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGlu
Z0RvY3VtZW50LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1f
ZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlv
blNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCkBAIC00OTgs
MTMgKzQ5OCwxMyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5h
dmlnYXRpb24oaW50IHN0ZXBzKQogICAgIH0KIAogICAgIC8vIEluIGFsbCBvdGhlciBjYXNlcywg
c2NoZWR1bGUgdGhlIGhpc3RvcnkgdHJhdmVyc2FsIHRvIG9jY3VyIGFzeW5jaHJvbm91c2x5Lgot
ICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24+
KHN0ZXBzKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdh
dGlvbj4oc3RlcHMpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVBh
Z2VCbG9jayhEb2N1bWVudCYgb3JpZ2luRG9jdW1lbnQpCiB7CiAgICAgaWYgKHNob3VsZFNjaGVk
dWxlTmF2aWdhdGlvbigpKQotICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVk
dWxlZFBhZ2VCbG9jaz4ob3JpZ2luRG9jdW1lbnQpKTsKKyAgICAgICAgc2NoZWR1bGUobWFrZVVu
aXF1ZTxTY2hlZHVsZWRQYWdlQmxvY2s+KG9yaWdpbkRvY3VtZW50KSk7CiB9CiAKIHZvaWQgTmF2
aWdhdGlvblNjaGVkdWxlcjo6dGltZXJGaXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuaAppbmRleCBhMmRkYWNlMjhmMDdjMzkxZmUyNGUxOTE4ZDI1NGE1
MDAyZmFiNDc2Li45N2MyM2IxNTA5MmJmMzkzYjMxZDIwYzhmMzRkMjU3NzI2MzFjYzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgKQEAgLTQ2LDYgKzQ2
LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBlbnVtIGNsYXNzIE5ld0xvYWRJblByb2dyZXNz
IDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICAKIGNsYXNzIE5hdmlnYXRpb25TY2hlZHVsZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IE5hdmln
YXRpb25TY2hlZHVsZXIoRnJhbWUmKTsKICAgICB+TmF2aWdhdGlvblNjaGVkdWxlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAppbmRleCBlMTdhOWRjNzJkZTAz
N2M5NjM0YmMxY2M5M2MyYzFhNzdhODZiZmEzLi4yODE3YTc2NjY0NTdiMjM5NzNhNjhmY2Y3YmMw
MTgwYzEyYmY1Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NU
cmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNw
cApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9n
cmVzcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlCiAKICAgICBhdXRv
JiBpdGVtID0gbV9wcm9ncmVzc0l0ZW1zLmFkZChpZGVudGlmaWVyLCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgaWYgKCFpdGVtKSB7Ci0gICAgICAgIGl0ZW0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFByb2dyZXNzSXRlbT4oZXN0aW1hdGVkTGVuZ3RoKTsKKyAgICAgICAgaXRlbSA9IG1ha2VV
bmlxdWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0ZWRMZW5ndGgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAK
aW5kZXggZWE1ZGJmYmFhYjIwYmZkNDNkZWFjZjFlNzc2MTFjMzQzM2FiYWI4My4uODI0NmJiMDcw
NmNkMGMwNzFmODk5NjI4OTg2YTViYTUxYzQ4YjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtNTM1LDcgKzUzNSw3IEBAIGJvb2wgVGV4
dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuLCBib29sCiAgICAgaWYgKG1fY29udGVudFR5cGUgPT0gWE1MKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIG1fY2hhcnNldFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRN
TE1ldGFDaGFyc2V0UGFyc2VyPigpOworICAgIG1fY2hhcnNldFBhcnNlciA9IG1ha2VVbmlxdWU8
SFRNTE1ldGFDaGFyc2V0UGFyc2VyPigpOwogICAgIHJldHVybiBjaGVja0Zvck1ldGFDaGFyc2V0
KGRhdGEsIGxlbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5j
cHAKaW5kZXggY2E5ZTZjNDM0M2Q3NDAxMDU1M2E5ZTEwZmE2NTYzZWU1MjM5MWJiZS4uZmE5MjZl
YTA2MmFkZmYyMDU3MGM4YTM2OTEyNDY3MmI5ZWY1NjZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBUZXh0VHJhY2tM
b2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2N1ZVBhcnNlcikKLSAgICAgICAgbV9jdWVQYXJzZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2Vy
Q2xpZW50Kj4odGhpcyksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIG1fY3Vl
UGFyc2VyID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNl
ckNsaWVudCo+KHRoaXMpLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgd2hpbGUg
KG1fcGFyc2VPZmZzZXQgPCBidWZmZXItPnNpemUoKSkgewogICAgICAgICBhdXRvIGRhdGEgPSBi
dWZmZXItPmdldFNvbWVEYXRhKG1fcGFyc2VPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGExMjYzZTJmMDQ1NzRiNGYw
ZWU3M2MwNGU4YjYyZjVjODA3MmE3NTguLjc3NTMyZjg2MTM0ZTA0M2FkMzdkM2Y1OTk5OGE2ZjU3
YTQyNDE3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTExNSwxMSArMTE1LDExIEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVu
CiAgICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKICAgICBhdXRvIHNlY3VyaXR5
T3JpZ2luQ29weSA9IHNlY3VyaXR5T3JpZ2luLT5pc29sYXRlZENvcHkoKTsKLSAgICBhdXRvIGNv
bnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0
eVBvbGljeT4oZ2xvYmFsU2NvcGUudXJsKCkuaXNvbGF0ZWRDb3B5KCkpOworICAgIGF1dG8gY29u
dGVudFNlY3VyaXR5UG9saWN5Q29weSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
PihnbG9iYWxTY29wZS51cmwoKS5pc29sYXRlZENvcHkoKSk7CiAgICAgY29udGVudFNlY3VyaXR5
UG9saWN5Q29weS0+Y29weVN0YXRlRnJvbShjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogICAgIGNv
bnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlVcGdyYWRlSW5zZWN1cmVSZXF1ZXN0U3RhdGVG
cm9tKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpOwogCi0gICAgYXV0byBvcHRpb25zQ29weSA9IHN0
ZDo6bWFrZV91bmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMsIHJlcXVlc3QuaHR0cFJl
ZmVycmVyKCkuaXNOdWxsKCkgPyBvdXRnb2luZ1JlZmVycmVyIDogcmVxdWVzdC5odHRwUmVmZXJy
ZXIoKSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpKTsKKyAgICBhdXRvIG9wdGlvbnNDb3B5
ID0gbWFrZVVuaXF1ZTxMb2FkZXJUYXNrT3B0aW9ucz4ob3B0aW9ucywgcmVxdWVzdC5odHRwUmVm
ZXJyZXIoKS5pc051bGwoKSA/IG91dGdvaW5nUmVmZXJyZXIgOiByZXF1ZXN0Lmh0dHBSZWZlcnJl
cigpLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luQ29weSkpOwogCiAgICAgLy8gQWxsIGxvYWRzIHN0
YXJ0IG91dCBhcyBEb2N1bWVudC4gSW5zaWRlIFdvcmtlclRocmVhZGFibGVMb2FkZXIgd2UgdXBn
cmFkZSB0aGlzIHRvIGEgV29ya2VyIGxvYWQuCiAgICAgQVNTRVJUKG9wdGlvbnNDb3B5LT5vcHRp
b25zLmluaXRpYXRvckNvbnRleHQgPT0gSW5pdGlhdG9yQ29udGV4dDo6RG9jdW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcAppbmRleCBmOTdlYjAwNDI1YmQyOWIzY2I2YmNiMzQ1ZmJmZDY1MjI0MDhmOGNlLi5iYmE5
MTA0MTkxNTRlY2Y0M2MxMjJlMmQ5MGNmODY0NTU5N2E5OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNDIz
LDcgKzQyMyw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoTm9kZSYgbm9kZSwgV1RGOjpGdW5jdGlvbjxib29sCiAgICAgLy8gYnV0IHdlIGNhbiBh
cHByb3hpbWF0ZSB0aGF0IGJ5IGNoZWNraW5nIGlmIHNjcmlwdGluZyBpcyBlbmFibGVkIHJpZ2h0
IG5vdy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFF1YWxpZmllZE5hbWU+PiB0YWdOYW1l
c1RvRmlsdGVyOwogICAgIGlmIChmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPnNldHRp
bmdzKCkuaXNTY3JpcHRFbmFibGVkKCkpIHsKLSAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFF1YWxpZmllZE5hbWU+PigpOworICAgICAgICB0YWdOYW1l
c1RvRmlsdGVyID0gbWFrZVVuaXF1ZTxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+KCk7CiAgICAgICAg
IHRhZ05hbWVzVG9GaWx0ZXItPmFwcGVuZChIVE1MTmFtZXM6Om5vc2NyaXB0VGFnKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDgz
NjhhOTU3MDVlMzE5MmQxZjgxN2ZmMmVjZDY4MzdlM2Y5ZTEzNWQuLmVmOTNiMzUxZTc5MWQ1Mjdk
YWU4MGY4N2M1MjVhN2RjMTRlN2U0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnNl
dEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIG1f
aW1hZ2VPYnNlcnZlci0+Y2FjaGVkSW1hZ2VzKCkuYWRkKHRoaXMpOwogCiAgICAgaWYgKG1faW1h
Z2UgJiYgaXM8U1ZHSW1hZ2U+KCptX2ltYWdlKSkKLSAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2lt
YWdlKSk7CisgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDYWNo
ZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOwogfQogCiB2b2lkIENhY2hlZEltYWdl
OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKQEAgLTM1Nyw3ICsz
NTcsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y3JlYXRlSW1hZ2UoKQogCiAgICAgaWYg
KG1faW1hZ2UpIHsKICAgICAgICAgaWYgKGlzPFNWR0ltYWdlPigqbV9pbWFnZSkpCi0gICAgICAg
ICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZk
b3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAgICAgICAgIG1fc3ZnSW1hZ2VDYWNo
ZSA9IG1ha2VVbmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFn
ZSkpOwogCiAgICAgICAgIC8vIFNlbmQgcXVldWVkIGNvbnRhaW5lciBzaXplIHJlcXVlc3RzLgog
ICAgICAgICBpZiAobV9pbWFnZS0+dXNlc0NvbnRhaW5lclNpemUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggYmU2MTgz
YWJmYTU5ZDVjOGUxNjJmZWMxZDY1NTI0NTIzYWRlMjc4Yy4uZjlhNzVmMzU0NTI3NjkwMmE5ZTRh
NWMzNWI2YWM2YjFmMTUwYzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZXNvdXIKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoV1RG
TW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICBlbHNlIHsKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChSZWRpcmVjdFBhaXIocmVx
dWVzdCwgcmVzcG9uc2UpKTsKLSAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50cyksIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92ZShyZXF1ZXN0KSwg
c3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNwb25z
ZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICBpdGVyYXRl
Q2xpZW50cyhDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dD4obV9jbGllbnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRo
aXMpLCBXVEZNb3ZlKHJlcXVlc3QpLCBtYWtlVW5pcXVlPFJlc291cmNlUmVzcG9uc2U+KHJlc3Bv
bnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJl
cXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAppbmRleCBlNDMwZTQ0N2FjNDk0NjM2Yzk4NGU3NGQ0MGI5MWU2NWNkZWJiNTBiLi4wNTY3
ZDFkNWRlOGM2ZjEzZTE4Njg0NGFlZDc1NTc1Y2YxN2UxNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTU0Niw3ICs1NDYsNyBAQCBi
b29sIENhY2hlZFJlc291cmNlOjphZGRDbGllbnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCYg
Y2xpZW50KQogICAgICAgICAvLyBUaGVyZWZvcmUsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IHNl
bmRpbmcgY2FsbGJhY2tzIG9uIGEgY2FjaGUgaGl0IGxpa2Ugb3RoZXIgQ2FjaGVkUmVzb3VyY2Vz
LAogICAgICAgICAvLyB3ZSBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZCBlbnN1cmUgd2UgbmV2
ZXIgZmluaXNoIHN5bmNocm9ub3VzbHkuCiAgICAgICAgIEFTU0VSVCghbV9jbGllbnRzQXdhaXRp
bmdDYWxsYmFjay5jb250YWlucygmY2xpZW50KSk7Ci0gICAgICAgIG1fY2xpZW50c0F3YWl0aW5n
Q2FsbGJhY2suYWRkKCZjbGllbnQsIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2s+KCp0aGlzLCBj
bGllbnQpKTsKKyAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoJmNsaWVudCwg
bWFrZVVuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsIGNsaWVudCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCmluZGV4IDIyOWExNDJkNjQ0MTNjZWJhZWZhYzUyNzEwYmIyYmY4ZGRlZGY3YmUuLjJmZmUy
YjQxODc5OTdlZWZkZDQxNWUwZWRiZTgwMmRjMTcyY2FlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0zODEsOSArMzgxLDcgQEAgY2xhc3Mg
Q2FjaGVkUmVzb3VyY2UgewogfTsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNrIHsK
LSNpZiAhQ09NUElMRVIoTVNWQykKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSNlbmRp
ZgogcHVibGljOgogICAgIENhbGxiYWNrKENhY2hlZFJlc291cmNlJiwgQ2FjaGVkUmVzb3VyY2VD
bGllbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODQzYTlkMWY5ZDZjODVmMTAwMGEyYzQwZjE5NjRiNDdh
MmViMWM3YS4uYjM0YjhmZDM1YzEwNzdhNTQ1MmFiYjM0MzIzNjFiNGNjM2QxMWM5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC03OTEsNyArNzkxLDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAgICAvLyBF
bnRyeSBwb2ludCB0byBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaC4K
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBvcmlnaW5hbFJlcXVlc3Q7CiAg
ICAgaWYgKENhY2hlZFJlc291cmNlOjpzaG91bGRVc2VQaW5nTG9hZCh0eXBlKSB8fCByZXF1ZXN0
Lm9wdGlvbnMoKS5kZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0
eVN0cmluZykgewotICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
c291cmNlUmVxdWVzdD4ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgICAgIG9yaWdp
bmFsUmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihyZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBSZWZlcnJlcigp
OwogICAgICAgICBvcmlnaW5hbFJlcXVlc3QtPmNsZWFySFRUUE9yaWdpbigpOwogICAgIH0KQEAg
LTEzOTEsNyArMTM5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsCiAgICAgICAgIHJlc291
cmNlVmFsdWUtPmluY3JlYXNlUHJlbG9hZENvdW50KCk7CiAKICAgICAgICAgaWYgKCFtX3ByZWxv
YWRzKQotICAgICAgICAgICAgbV9wcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hT
ZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBtYWtlVW5p
cXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgIG1fcHJlbG9hZHMt
PmFkZChyZXNvdXJjZVZhbHVlLmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNlOwpA
QCAtMTQzMyw3ICsxNDMzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVs
b2FkcyhDbGVhclByZWxvYWRzTW9kZSBtb2RlKQogICAgICAgICBBU1NFUlQocmVzb3VyY2UpOwog
ICAgICAgICBpZiAobW9kZSA9PSBDbGVhclByZWxvYWRzTW9kZTo6Q2xlYXJTcGVjdWxhdGl2ZVBy
ZWxvYWRzICYmIHJlc291cmNlLT5pc0xpbmtQcmVsb2FkKCkpIHsKICAgICAgICAgICAgIGlmICgh
cmVtYWluaW5nTGlua1ByZWxvYWRzKQotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xpbmtQcmVs
b2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsK
KyAgICAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RI
YXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJl
bG9hZHMtPmFkZChyZXNvdXJjZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UuaAppbmRleCA3MGNiMWFmYTRjZjFkM2E2ZTY0MmE4YWU5ZGI4NDQ4Zjg0ZDE0
YmQ2Li4yMmFlNzJkOGZmNWVmNzI5YTE2NGM3NmE0ZmRiYjBlNDlkNzFmNGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZl
cmVuY2UuaApAQCAtMzUsNyArMzUsOCBAQCBjbGFzcyBDYWNoZWRTVkdEb2N1bWVudDsKIGNsYXNz
IENhY2hlZFJlc291cmNlTG9hZGVyOwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAot
Y2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgOiBwdWJsaWMgQ2FjaGVkU1ZHRG9jdW1l
bnRDbGllbnQgeworY2xhc3MgQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgZmluYWwgOiBwdWJs
aWMgQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKGNvbnN0IFN0cmluZyYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBk
M2I4MDUxNDIzYzNmYzUyNGJkOGI2ZjU1ZjM1YTZhYzIyMzBiMjAyLi4zZGVhZDQ2YzFkNGQ3OGNm
N2NkZjAzYWZmY2JlZjM5Mjc4MjYzYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgYXV0byBNZW1vcnlDYWNoZTo6ZW5z
dXJlU2Vzc2lvblJlc291cmNlTWFwKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gQ2FjaGVk
UmUKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzVmFsaWQoKSk7CiAgICAgYXV0byYgbWFwID0gbV9z
ZXNzaW9uUmVzb3VyY2VzLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIW1hcCkKLSAgICAgICAgbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNv
dXJjZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZU1hcD4o
KTsKICAgICByZXR1cm4gKm1hcDsKIH0KIApAQCAtMjE2LDcgKzIxNiw3IEBAIGJvb2wgTWVtb3J5
Q2FjaGU6OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciYmIGltYWdlLCBjb25zdCBVUkwm
IHVybCwgY29uc3QKICAgICByZW1vdmVJbWFnZUZyb21DYWNoZSh1cmwsIGRvbWFpbkZvckNhY2hl
UGFydGl0aW9uKTsgLy8gUmVtb3ZlIGNhY2hlIGVudHJ5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgog
CiAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShpbWFn
ZSksIG51bGxwdHIpOwotICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
Y2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigpLCBzZXNzaW9uSUQsIGNvb2tpZUphciwg
ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSBtYWtlVW5p
cXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLnB0cigpLCBzZXNzaW9uSUQsIGNvb2tp
ZUphciwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwogCiAgICAgY2FjaGVkSW1hZ2UtPmFkZENs
aWVudChkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5zZXREZWNv
ZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CkBAIC00NzMsNyArNDczLDcgQEAg
YXV0byBNZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcihDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpIC0+
IExSVUxpc3QmCiAKICAgICBtX2FsbFJlc291cmNlcy5yZXNlcnZlQ2FwYWNpdHkocXVldWVJbmRl
eCArIDEpOwogICAgIHdoaWxlIChtX2FsbFJlc291cmNlcy5zaXplKCkgPD0gcXVldWVJbmRleCkK
LSAgICAgICAgbV9hbGxSZXNvdXJjZXMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
TFJVTGlzdD4oKSk7CisgICAgICAgIG1fYWxsUmVzb3VyY2VzLnVuY2hlY2tlZEFwcGVuZChtYWtl
VW5pcXVlPExSVUxpc3Q+KCkpOwogICAgIHJldHVybiAqbV9hbGxSZXNvdXJjZXNbcXVldWVJbmRl
eF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKaW5kZXgg
NjE4ZTk0Mjk1MDE3ZGMzYjgzMDM2NWMxMTY3NjE1MzhiMWRiNjIzOC4uMTUwM2Q3OGUzYWY1OTk0
OTU0YjMzYzJhODA4NGY0ZmVhNjMwMDcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9Q
cmV2aWV3TG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUHJldmlld0xvYWRlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0xvYWRl
cik7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBj
cmVhdGUoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KaW5kZXggZjZiODIyMTc5MTZjYWQ5
NWJmZTk2MGJiM2UzNzg0YTI3MGE5YmE2Ny4uYzVjYTVjMjVmMTFiNGQ4YTljYTkzZWZjODg5MDk5
MDdmNmI3NjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3
TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5t
bQpAQCAtODYsNyArODYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXNvdXJjZUxvYWRl
cjooUmVzb3VyY2VMb2FkZXImKXJlc291cmNlTG9hZGVyIHJlc291cmNlUgogCiAgICAgX3Jlc291
cmNlTG9hZGVyID0gbWFrZVdlYWtQdHIocmVzb3VyY2VMb2FkZXIpOwogICAgIF9yZXNwb25zZSA9
IHJlc291cmNlUmVzcG9uc2U7Ci0gICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJl
dmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKKyAgICBfY29udmVydGVyID0gbWFrZVVu
aXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UpOwogICAgIF9idWZmZXJlZERh
dGFBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9z
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+
c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmll
dygpOwogCkBAIC0yNDYsNyArMjQ2LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICB9
CiAKICAgICBfY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9
IHJldGFpblB0cihzZWxmKV0gKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2Nv
bnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3Bv
bnNlLCBwYXNzd29yZCk7CisgICAgICAgIF9jb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdD
b252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOwogICAgICAgICBbX2NvbnZlcnRl
ci0+cGxhdGZvcm1Db252ZXJ0ZXIoKSBhcHBlbmREYXRhQXJyYXk6X2J1ZmZlcmVkRGF0YUFycmF5
LmdldCgpXTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgZmluaXNo
ZWRBcHBlbmRpbmdEYXRhXTsKICAgICB9KTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBQcmV2aWV3TG9h
ZGVyOjp+UHJldmlld0xvYWRlcigpCiBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gUHJl
dmlld0xvYWRlcjo6Y3JlYXRlKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBw
b3J0c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKIH0KIAogYm9vbCBQcmV2
aWV3TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oCmluZGV4IGU2YWRi
NjdkYTk0ODY4NjI2ZmUyMDZmZjE2ZTY0ZGRhY2UyNzAxZmUuLjYxM2U3ODkyYjQxMGYzYjJhNDk0
ZWNmYjY4MDAwYWFjMGRjNjYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIFRleHRUcmFja0xpc3Q7CiBz
dHJ1Y3QgTWVkaWFTZWxlY3Rpb25PcHRpb247CiAKIGNsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENhcHRpb25V
c2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwJik7CiAgICAgdmlydHVhbCB+Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCmluZGV4IGM0NzljYTFmOWNiMDdkNGFjN2I0YjlmYjIyODUxZjBjOTk0YjE3MTQuLjRjY2Rh
YjA0YjdiM2Y1NTM0Y2VjYzJhMTllYzBhNGJjYjdhYjE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6bWF5YmVDcmVh
dGVDb250ZXh0TWVudShFdmVudAogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGV4dE1lbnU+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGV4dE1l
bnU+KCk7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29udGV4dE1lbnUo
RXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApp
bmRleCBmNjNkYWE3ZjYzNDcyNTU4ODczZGIzYjU4M2JjMjUxMmExNzc1MjdhLi5jZGM3NGY2ZGUw
OWU5M2RlOWFhYjkyMzU2ZWYyZmJmNDRkZDJkMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtODgsNyArODgsNyBAQCBjbGFzcyBNb3VzZVdoZWVsUmVn
aW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5IHsKIAogYm9vbCBNb3VzZVdo
ZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIHsKLSAgICBhdXRvIHJlZ2lvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgIGF1dG8gcmVnaW9uID0gbWFrZVVuaXF1ZTxS
ZWdpb24+KCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBGcmFtZSogZnJhbWUgPSAmbV9wYWdlLm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
CiAgICAgICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNDhjMDczNDc3MGViMTEwYzFjNWQ4NDUz
ZGQwODc5OTJlNTY0OWExZS4uZDIwYjk4YzQxNWVlYzgyNzZmODkwMGYyNGM2N2E5N2YxMDFkMGEw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzg1LDcgKzM4NSw3IEBA
IEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkKICNpZiBQTEFURk9STShN
QUMpCiAgICAgLCBtX3BlbmRpbmdNb21lbnR1bVdoZWVsRXZlbnRzVGltZXIoKnRoaXMsICZFdmVu
dEhhbmRsZXI6OmNsZWFyTGF0Y2hlZFN0YXRlKQogI2VuZGlmCi0gICAgLCBtX2F1dG9zY3JvbGxD
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+KCkpCisgICAg
LCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKG1ha2VVbmlxdWU8QXV0b3Njcm9sbENvbnRyb2xsZXI+
KCkpCiAjaWYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgICwgbV9mYWtlTW91c2VNb3Zl
RXZlbnRUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJG
aXJlZCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDIzMzcyOTQyYjM3
NjNkOTI5M2QyNjViMzVhY2MxNTI1ZTM0Y2MwMGYuLmE1ZTVlZGUwYjRiNzQ3ZTQ3OTRkYzc5NDA2
YWVmY2NiYjM4NWRkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyOTEsNyAr
MTI5MSw3IEBAIFJlbmRlckJveCogRnJhbWVWaWV3OjplbWJlZGRlZENvbnRlbnRCb3goKSBjb25z
dAogdm9pZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRk
ZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogewogICAgIGlmICghbV9lbWJlZGRlZE9iamVjdHNU
b1VwZGF0ZSkKLSAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKKyAgICAgICAgbV9l
bWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IG1ha2VVbmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1i
ZWRkZWRPYmplY3QqPj4oKTsKIAogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCA9
IGVtYmVkZGVkT2JqZWN0LmZyYW1lT3duZXJFbGVtZW50KCk7CiAgICAgaWYgKGlzPEhUTUxPYmpl
Y3RFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSkgewpA
QCAtMTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIGJvb2wgaGFkU2xvd1JlcGFpbnRPYmplY3Rz
ID0gaGFzU2xvd1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBpZiAoIW1fc2xvd1JlcGFpbnRPYmpl
Y3RzKQotICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFz
aFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CisgICAgICAgIG1fc2xvd1JlcGFpbnRPYmpl
Y3RzID0gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVsZW1lbnQqPj4oKTsKIAogICAg
IG1fc2xvd1JlcGFpbnRPYmplY3RzLT5hZGQoJnJlbmRlcmVyKTsKICAgICBpZiAoaGFkU2xvd1Jl
cGFpbnRPYmplY3RzKQpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92
ZVNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogdm9pZCBGcmFtZVZp
ZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
b2JqZWN0KQogewogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKLSAgICAg
ICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKKyAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0cyA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKIAog
ICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+Y29udGFpbnMob2JqZWN0KSkg
ewogICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5hZGQob2JqZWN0KTsKQEAg
LTQ4NjYsNyArNDg2Niw3IEBAIFN0cmluZyBGcmFtZVZpZXc6OnRyYWNrZWRSZXBhaW50UmVjdHNB
c1RleHQoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6OmFkZFNjcm9sbGFibGVBcmVhKFNjcm9sbGFi
bGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWFzKQot
ICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsYWJsZUFy
ZWFTZXQ+KCk7CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0gbWFrZVVuaXF1ZTxTY3JvbGxh
YmxlQXJlYVNldD4oKTsKICAgICAKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYXMtPmFkZChzY3Jv
bGxhYmxlQXJlYSkuaXNOZXdFbnRyeSkgewogICAgICAgICBzY3JvbGxhYmxlQXJlYVNldENoYW5n
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3Bw
CmluZGV4IDczMDk4ZjFmYTFmMTA3MWU2MWZjZDNhYTY1MzUzMzBkM2U4OWJmNTkuLmU4NThjOTJj
YmY4YzMxYTMyMWJmMzgwMDk3YWJhNTVmMTU3MDAwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtNTk2LDE0ICs1OTYsMTQgQEAgdm9p
ZCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUoUmVuZGVyRWxlbWVudCYg
cm9vdCkKICAgICBBU1NFUlQoIW1fcGFpbnRPZmZzZXRDYWNoZURpc2FibGVDb3VudCk7CiAgICAg
QVNTRVJUKCFsYXlvdXRTdGF0ZSgpKTsKIAotICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9vdCkpOworICAgIG1fbGF5b3V0
U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9vdCkpOwog
fQogCiBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZUZvclBhZ2lu
YXRpb25JZk5lZWRlZChSZW5kZXJCbG9ja0Zsb3cmIGxheW91dFJvb3QpCiB7CiAgICAgaWYgKGxh
eW91dFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2xheW91dFN0YXRlU3Rh
Y2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KGxheW91dFJvb3Qs
IFJlbmRlckxheW91dFN0YXRlOjpJc1BhZ2luYXRlZDo6WWVzKSk7CisgICAgbV9sYXlvdXRTdGF0
ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihsYXlvdXRSb290LCBS
ZW5kZXJMYXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOwogICAgIHJldHVybiB0cnVlOwog
fQogICAgIApAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6
cHVzaExheW91dFN0YXRlKFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFNpCiAgICAg
YXV0byogbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgIGlmICghbGF5b3V0
U3RhdGUgfHwgIW5lZWRzRnVsbFJlcGFpbnQoKSB8fCBsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQo
KSB8fCByZW5kZXJlci5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpCiAgICAgICAgIHx8IGxheW91
dFN0YXRlLT5saW5lR3JpZCgpIHx8IChyZW5kZXJlci5zdHlsZSgpLmxpbmVHcmlkKCkgIT0gUmVu
ZGVyU3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpICYmIHJlbmRlcmVyLmlzUmVuZGVyQmxvY2tGbG93
KCkpKSB7Ci0gICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwgb2Zmc2V0
LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOworICAgICAgICBtX2xheW91dFN0YXRl
U3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KG1fbGF5b3V0U3RhdGVT
dGFjaywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFnZUhlaWdodENoYW5nZWQpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCmluZGV4IDhjM2M1MmEwNzM1MjI3OTBjZDBjNGE2MGRj
MDVlNjE0MTJjMTlhZTkuLjUyMjdlNDJhYzA5NmNlNjkyNWQ3ZWM2YTE4ZTUxOTI1ZDJlMDA2YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBA
IFNlcnZpY2VXb3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6OnNlcnZpY2VXb3JrZXIoKQog
ewogICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNl
cnZpY2VXb3JrZXJFbmFibGVkKCkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVy
KQotICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNl
cnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMpOwor
ICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMpOwogICAgIHJldHVy
biAqbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA0
ZDRhNDljNzMxYTRjYWY0NmVkZTYxMTU3N2NiMzllNmJmZmYwYTIyLi5iODIwZTQ5ZDM2NmQ3MTY5
MjVhOTczZTJiMjhjOWI1ODJhZjk5NzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTIxMSwyNiAr
MjExLDI2IEBAIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+
IHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpCiB9CiAKIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3Vy
YXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2hyb21lKHN0ZDo6bWFrZV91bmlx
dWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCkpCi0gICAg
LCBtX2RyYWdDYXJldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEcmFnQ2FyZXRDb250cm9s
bGVyPigpKQorICAgIDogbV9jaHJvbWUobWFrZVVuaXF1ZTxDaHJvbWU+KCp0aGlzLCAqcGFnZUNv
bmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKKyAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlciht
YWtlVW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKLSAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEcmFnQ29udHJvbGxl
cj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkKKyAgICAsIG1fZHJhZ0Nv
bnRyb2xsZXIobWFrZVVuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJh
dGlvbi5kcmFnQ2xpZW50KSkKICNlbmRpZgotICAgICwgbV9mb2N1c0NvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdlSW5pdGlhbEFjdGl2aXR5U3Rh
dGUoKSkpCisgICAgLCBtX2ZvY3VzQ29udHJvbGxlcihtYWtlVW5pcXVlPEZvY3VzQ29udHJvbGxl
cj4oKnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkKICNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
Q29udGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRN
ZW51Q2xpZW50KSkKKyAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKG1ha2VVbmlxdWU8Q29u
dGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51
Q2xpZW50KSkKICNlbmRpZgotICAgICwgbV91c2VySW5wdXRCcmlkZ2Uoc3RkOjptYWtlX3VuaXF1
ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdlQ29uZmlndXJh
dGlvbi5pbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV91c2VySW5wdXRCcmlkZ2UobWFrZVVuaXF1
ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlciht
YWtlVW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdlQ29uZmlndXJhdGlvbi5p
bnNwZWN0b3JDbGllbnQpKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKLSAgICAsIG1fcG9p
bnRlckNhcHR1cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckNhcHR1cmVDb250
cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJDYXB0dXJlQ29udHJvbGxlcihtYWtlVW5p
cXVlPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAjaWYgRU5BQkxF
KFBPSU5URVJfTE9DSykKLSAgICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJMb2Nr
Q29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4oKnRoaXMpKQogI2Vu
ZGlmCiAgICAgLCBtX3NldHRpbmdzKFNldHRpbmdzOjpjcmVhdGUodGhpcykpCi0gICAgLCBtX3By
b2dyZXNzKHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigqcGFnZUNvbmZpZ3VyYXRp
b24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKLSAgICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVy
KHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQorICAgICwgbV9wcm9ncmVzcyht
YWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJh
Y2tlckNsaWVudCkpCisgICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihtYWtlVW5pcXVlPEJh
Y2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFj
a0ZvcndhcmRDbGllbnQpKSkKICAgICAsIG1fbWFpbkZyYW1lKEZyYW1lOjpjcmVhdGUodGhpcywg
bnVsbHB0ciwgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lKSkKICAg
ICAsIG1fZWRpdG9yQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xpZW50
KSkKICAgICAsIG1fcGx1Z0luQ2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCkK
QEAgLTI1MCw5ICsyNTAsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgLCBtX2RvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRp
bWVyKCp0aGlzLCAmUGFnZTo6ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXJG
aXJlZCkKICAgICAsIG1fYWN0aXZpdHlTdGF0ZShwYWdlSW5pdGlhbEFjdGl2aXR5U3RhdGUoKSkK
ICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDb25maWd1cmF0aW9uLmFsdGVybmF0
aXZlVGV4dENsaWVudCkKLSAgICAsIG1fY29uc29sZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VDb25zb2xlQ2xpZW50PigqdGhpcykpCisgICAgLCBtX2NvbnNvbGVDbGllbnQobWFrZVVuaXF1
ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVn
Z2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFBh
Z2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fc29ja2V0UHJvdmlkZXIoV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlcikpCiAgICAgLCBtX2Nvb2tpZUph
cihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvb2tpZUphcikpCkBAIC0yNjgsMTYgKzI2OCwx
NiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAg
ICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGltZXIoKnRoaXMsICZQYWdlOjpw
bGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1f
aXNVdGlsaXR5UGFnZShpc1V0aWxpdHlQYWdlQ2hyb21lQ2xpZW50KGNocm9tZSgpLmNsaWVudCgp
KSkKLSAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/IG51bGxwdHIg
OiBzdGQ6Om1ha2VfdW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQotICAgICwgbV9s
b3dQb3dlck1vZGVOb3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVy
PihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2Vy
Q2hhbmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQotICAgICwgbV9wZXJmb3JtYW5jZUxv
Z2dpbmcoc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+KCp0aGlzKSkKKyAgICAs
IG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/IG51bGxwdHIgOiBtYWtlVW5p
cXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQorICAgICwgbV9sb3dQb3dlck1vZGVOb3Rp
ZmllcihtYWtlVW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bv
d2VyTW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlzTG93UG93ZXJNb2Rl
RW5hYmxlZCk7IH0pKQorICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmcobWFrZVVuaXF1ZTxQZXJm
b3JtYW5jZUxvZ2dpbmc+KCp0aGlzKSkKICNpZiBQTEFURk9STShNQUMpICYmIChFTkFCTEUoU0VS
VklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSkKLSAg
ICAsIG1fc2VydmljZXNPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2VydmljZXNPdmVybGF5Q29udHJv
bGxlcihtYWtlVW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNlbmRp
ZgogICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXIoV2hlZWxFdmVudERlbHRhRmls
dGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BhZ2VPdmVybGF5
Q29udHJvbGxlcihtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogI2lm
IEVOQUJMRShBUFBMRV9QQVkpCi0gICAgLCBtX3BheW1lbnRDb29yZGluYXRvcihzdGQ6Om1ha2Vf
dW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29y
ZGluYXRvckNsaWVudCkpCisgICAgLCBtX3BheW1lbnRDb29yZGluYXRvcihtYWtlVW5pcXVlPFBh
eW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNs
aWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgICwgbV9hdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3IobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50KSkp
CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBQYWdlOjppbml0R3JvdXAoKQogewogICAgIEFTU0VS
VCghbV9zaW5nbGVQYWdlR3JvdXApOwogICAgIEFTU0VSVCghbV9ncm91cCk7Ci0gICAgbV9zaW5n
bGVQYWdlR3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VHcm91cD4oKnRoaXMpOworICAgIG1f
c2luZ2xlUGFnZUdyb3VwID0gbWFrZVVuaXF1ZTxQYWdlR3JvdXA+KCp0aGlzKTsKICAgICBtX2dy
b3VwID0gbV9zaW5nbGVQYWdlR3JvdXAuZ2V0KCk7CiB9CiAKQEAgLTI2NTQsNyArMjY1NCw3IEBA
IHZvaWQgUGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKGJvb2wgdmlzaWJsZSkK
ICAgICB9CiAKICAgICBpZiAoIW1fcmVzb3VyY2VVc2FnZU92ZXJsYXkgJiYgbV9zZXR0aW5ncy0+
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkKLSAgICAgICAgbV9yZXNvdXJjZVVzYWdl
T3ZlcmxheSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+KCp0aGlzKTsK
KyAgICAgICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VVc2Fn
ZU92ZXJsYXk+KCp0aGlzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bnNvbGVDbGllbnQuY3BwCmluZGV4IDE4OTFlOTU5YjM3OGEzODMyZDRjYzFmOGY0OGE4Y2ZkNjhk
OTc4MjkuLjRlNDgwYzBjMjBlNDBjMmI5NmQ0YzNlY2E5ZmE0MzVlMmI5YWVmMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBAIC0xNjEsOSArMTYxLDkgQEAg
dm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb24KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKIAogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1l
c3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJj
ZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFz
ZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2cs
IGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2
ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3RlZExpbmVOdW1iZXIsIHN1Z2dl
c3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVz
c2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNz
YWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVk
TGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZp
ZXIpOwogCiAgICAgYWRkTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KQEAgLTE3NCw3ICsx
NzQsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsK
ICAgICBib29sIGdvdE1lc3NhZ2UgPSBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmlu
ZyhtZXNzYWdlVGV4dCk7CiAKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUs
IGxldmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhlYyk7CisgICAgYXV0
byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdl
U291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIGFyZ3VtZW50cy5j
b3B5UmVmKCksIGV4ZWMpOwogCiAgICAgU3RyaW5nIHVybCA9IG1lc3NhZ2UtPnVybCgpOwogICAg
IHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5lKCk7CkBAIC0zODksNyArMzg5LDcg
QEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkYXRh
VVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkNvdWxkIG5vdCBjYXB0dXJl
IHNjcmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOworICAgICAgICAgICAgYWRkTWVz
c2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkNv
dWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzk5LDcgKzM5OSw3IEBAIHZv
aWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBS
ZWY8U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgZm9yIChzaXplX3QgaSA9ICghdGFyZ2V0ID8gMCA6
IDEpOyBpIDwgYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsraSkKICAgICAgICAgYWRqdXN0
ZWRBcmd1bWVudHMuYXBwZW5kKHsgc3RhdGUtPnZtKCksIGFyZ3VtZW50cy0+YXJndW1lbnRBdChp
KSB9KTsKICAgICBhcmd1bWVudHMgPSBTY3JpcHRBcmd1bWVudHM6OmNyZWF0ZSgqc3RhdGUsIFdU
Rk1vdmUoYWRqdXN0ZWRBcmd1bWVudHMpKTsKLSAgICBhZGRNZXNzYWdlKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywgZGF0YVVSTCwgV1RGTW92ZShh
cmd1bWVudHMpKSk7CisgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwg
TWVzc2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJndW1lbnRzKSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggOTE5
MzYwNDVjMmZhZjc2Y2FjNWUyYzY5ZTYyMzNmMmNlMzBiZjliMS4uMTI4YzE4ZjE0YjkwOGU3MWJj
N2NlZmIzOTYyMDdmZWJiYzAwZjJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAt
MTE2LDkgKzExNiw5IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMmIFBhZ2VHcm91cDo6Y2FwdGlv
blByZWZlcmVuY2VzKCkKIHsKICAgICBpZiAoIW1fY2FwdGlvblByZWZlcmVuY2VzKSB7CiAjaWYg
UExBVEZPUk0oTUFDKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLKQotICAg
ICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0aW9uUHJlZmVyZW5jZXMg
PSBtYWtlVW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGPigqdGhpcyk7CiAjZWxz
ZQotICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FwdGlv
blVzZXJQcmVmZXJlbmNlcz4oKnRoaXMpOworICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9
IG1ha2VVbmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRoaXMpOwogI2VuZGlmCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4IDZjMTViM2ZhYTgzZjVjYWUw
ZDkxNzZkMDBjOGFmYzE1Yjc2NjkzMTYuLmNiYmFjMjFkNDAwNWIxYjBlMTE4MDIyZjdhYTE0YThi
Y2ZlZDg1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCkBAIC0yNjUsNyArMjY1
LDcgQEAgdm9pZCBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsVGltZXJGaXJl
ZCgpCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhjb25zdCBTdHJpbmcmIG1h
cmtOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGlt
aW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9
IG1fdXNlclRpbWluZy0+bWFyayhtYXJrTmFtZSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKQEAgLTI3OSwxNCArMjc5LDE0IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNl
OjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB2b2lkIFBlcmZvcm1hbmNlOjpjbGVhck1h
cmtzKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0g
ICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMp
OworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsK
ICAgICBtX3VzZXJUaW1pbmctPmNsZWFyTWFya3MobWFya05hbWUpOwogfQogCiBFeGNlcHRpb25P
cjx2b2lkPiBQZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lLCBj
b25zdCBTdHJpbmcmIHN0YXJ0TWFyaywgY29uc3QgU3RyaW5nJiBlbmRNYXJrKQogewogICAgIGlm
ICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxV
c2VyVGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IG1fdXNlclRpbWluZy0+bWVh
c3VyZShtZWFzdXJlTmFtZSwgc3RhcnRNYXJrLCBlbmRNYXJrKTsKICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQpAQCAtMzAwLDcgKzMwMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZv
cm1hbmNlOjptZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYK
IHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFt
ZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3Rk
OjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9
IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRpbWluZy0+Y2xlYXJN
ZWFzdXJlcyhtZWFzdXJlTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUHJld2FybUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZv
cm1hdGlvbi5oCmluZGV4IDk5YTQzNzJlNTRkODQwMjliYWZiZjliOGY3YTU4MjAwMWZhNjNhMWIu
LjE2YmNmMDQzOTBhMTcwZjNkZTc4MjY1MGMyZmMyNTIyY2Y1MDU0YTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUHJld2FybUluZm9ybWF0aW9uIHsK
KyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRm9udENhY2hlOjpQcmV3
YXJtSW5mb3JtYXRpb24gZm9udENhY2hlOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCmluZGV4IDAzNzBmMjg4N2Y2NWI1N2IzY2Q4OTdlNGZjNjllOGEyZWZiODc1ZGYuLjQ0Mjkx
YWVmYTM3YzhhN2E4NDQ4YmVjMzlhZWVhYzI0MzllYzQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1By
aW50Q29udGV4dC5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6b3V0
cHV0TGlua2VkRGVzdGluYXRpb25zKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBE
bwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbGlua2VkRGVzdGluYXRpb25zKSB7Ci0g
ICAgICAgIG1fbGlua2VkRGVzdGluYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0
cmluZywgUmVmPEVsZW1lbnQ+Pj4oKTsKKyAgICAgICAgbV9saW5rZWREZXN0aW5hdGlvbnMgPSBt
YWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxlbWVudD4+PigpOwogICAgICAgICBjb2xs
ZWN0TGlua2VkRGVzdGluYXRpb25zKGRvY3VtZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcAppbmRleCA1NmEwMTFjNGNl
ZTk5Nzg5OTAxZmFkMzYzMDJiZTEwYzM0NTY2NTI3Li4zYjg4MWRmYmIxNzE3ZjRlNDExYTZjNTM0
NDU5NWZiZDNhYjQzMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdV
cGRhdGVTY2hlZHVsZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyOjppc1NjaGVkdWxlZCgpIGNvbnN0CiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlcjo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAgIEFTU0VSVCghaXNTY2hlZHVs
ZWQoKSk7Ci0gICAgbV9yZWZyZXNoVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhp
cywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CisgICAg
bV9yZWZyZXNoVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CiAgICAgbV9yZWZyZXNoVGltZXItPnN0
YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlci5oCmluZGV4IGZhZGU2MmZjNzg3ZWU0ODk3OWFmNmRkODI2NjI3Nzk4
MDRkMzc1MTcuLjZmMDYwODE3ODI2ZWM1NmM2ZWU4YTVmOGNkMzk0NGVjMmQ0MTkwZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaApAQCAtNDIs
NyArNDIsNyBAQCBjbGFzcyBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIKIHB1YmxpYzoKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4gY3JlYXRlKFBh
Z2UmIHBhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXI+KHBhZ2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXI+KHBhZ2UpOwogICAgIH0KIAogICAgIFJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcihQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6
ZU9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKaW5kZXgg
OTViMWM4YjViZTgzZDg5YjI0OTc5ZWFlZDliOWQ0ZTkwZDNmNGY4Ny4uZWVlYmY5YjllNjFiZDU4
OGZkM2JhOTlmYWIxNTAxOTFjYzhmNjcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZXNpemVPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2
ZXIuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiAK
IHN0cnVjdCBSZXNpemVPYnNlcnZlckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICBWZWN0b3I8V2Vha1B0cjxSZXNpemVPYnNlcnZlcj4+IG9ic2VydmVyczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNDIzNDE4Mjgw
ZWEyZWUzYzliZmRmYzkxY2QxMjdiOTY4ZWIxZTFiZi4uMGRlYjA2NDE0OGY5NzI2Y2QzOGI0MTAw
NWQ1MjI5NzI2MGMxYzY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAK
QEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwogICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIob3JpZ2luQWNjZXNzTWFwTG9jayk7CiAgICAgT3JpZ2luQWNjZXNzTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gb3JpZ2luQWNjZXNzTWFwKCkuYWRkKHNvdXJjZVN0cmluZywgbnVs
bHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+KCk7Cisg
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9yaWdpbkFjY2Vzc1do
aXRlTGlzdD4oKTsKIAogICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5
KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5B
Y2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zLCBPcmlnaW5BY2Nlc3NFbnRyeTo6VHJlYXRJ
UEFkZHJlc3NBc0lQQWRkcmVzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5nc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCmlu
ZGV4IGI2ODQ4OTZmMzk4ODQ2MjU0YTE3OTdhZGNkZWQ2NjY2MDVlODVkNWMuLjI3ZWVhNmMwYWI5
MzhlYmM4Zjk2NWRhY2I4MjAzMTE0NDMxNjBiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
QmFzZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgbGF5b3V0U2No
ZWR1bGVUaHJlc2hvbGQgPSAyNTBfbXM7CiAKIFNldHRpbmdzQmFzZTo6U2V0dGluZ3NCYXNlKFBh
Z2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UobnVsbHB0cikKLSAgICAsIG1fZm9udEdlbmVyaWNGYW1p
bGllcyhzdGQ6Om1ha2VfdW5pcXVlPEZvbnRHZW5lcmljRmFtaWxpZXM+KCkpCisgICAgLCBtX2Zv
bnRHZW5lcmljRmFtaWxpZXMobWFrZVVuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQogICAg
ICwgbV9sYXlvdXRJbnRlcnZhbChsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCkKICAgICAsIG1fbWlu
aW11bURPTVRpbWVySW50ZXJ2YWwoRE9NVGltZXI6OmRlZmF1bHRNaW5pbXVtSW50ZXJ2YWwoKSkK
ICAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcigqdGhpcywgJlNldHRpbmdzQmFz
ZTo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3Bl
bmRhYmxlVGltZXIuaAppbmRleCA1NTg0NDM0MDc4MzQ2ZmI5YjU3YTZlYTU5YWZjZTI3YTYyNDBi
NTVhLi4zYzNkNDllMDU4YWIxMzE3NDdlYjQ5YmIwYzkzYTBmZDI5NDUxOGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTdXNwZW5kYWJsZVRpbWVyIDogcHJpdmF0ZSBUaW1lckJhc2Us
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IFN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOwogICAgIHZpcnR1YWwgflN1c3BlbmRhYmxlVGltZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBiOWNlOThjYzZjYTVjMjQ1
NmNkYjk0ZjVkYzQxYjRkMmI1MGU5OGY2Li42NTIzMTFkN2E1NWY1NTA3YTA1YWE0M2I2MmM4MDIw
ODcyMmRiYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpmb3JF
YWNoVXNlck1lc3NhZ2VIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgVXNlck1lCiAKIHZvaWQg
VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29y
bGQsIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0PiB1c2VyU2NyaXB0KQogewotICAgIGF1dG8m
IHNjcmlwdHNJbldvcmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFs
dWU7CisgICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29y
bGQsIFsmXSB7IHJldHVybiBtYWtlVW5pcXVlPFVzZXJTY3JpcHRWZWN0b3I+KCk7IH0pLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclNjcmlw
dCkpOwogfQogCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6
OnJlbW92ZVVzZXJTY3JpcHRzKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAKIHZvaWQgVXNlckNv
bnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChET01XcmFwcGVyV29ybGQmIHdvcmxk
LCBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0LCBVc2VyU3R5
bGVJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAgYXV0byYgc3R5bGVTaGVldHNJ
bldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1
ZTsKKyAgICBhdXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1
cmUoJndvcmxkLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldFZlY3Rvcj4o
KTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5kKFdU
Rk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIAogICAgIGlmIChpbmplY3Rpb25UaW1lID09IEluamVj
dEluRXhpc3RpbmdEb2N1bWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1do
ZWVsRXZlbnREZWx0YUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRE
ZWx0YUZpbHRlci5jcHAKaW5kZXggZjI1OWFlYjFhMGE5ZTVjZTdhMTM0ZjBkMTI2OWVjMzE0Yzlh
OWMzMS4uMzA0ZDk0YTc1YmYzNjFkOGRkNDZmNmFmZmFmZTMxYzNlZjgyYTQ0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcApAQCAtNDMsOSArNDMs
OSBAQCBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6On5XaGVlbEV2ZW50RGVsdGFGaWx0ZXIoKSA9IGRl
ZmF1bHQ7CiBzdGQ6OnVuaXF1ZV9wdHI8V2hlZWxFdmVudERlbHRhRmlsdGVyPiBXaGVlbEV2ZW50
RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdoZWVsRXZlbnREZWx0YUZpbHRlck1hYz4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CiAjZWxzZQotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0
aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMTQ0NjYzY2FlOTU5NzljZmNjN2M0YTIyNDJlMWQxNjFk
NjEwMjkyNS4uMTNjMzFmNTc2NGI3YjIyNGEyYjdlYTU1YWUzM2E2YjM5ODZiOTZkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjphbmltYXRpb25XaWxsQmVSZW1vdmVkKEFuaW1hdGlvbkJhc2UmIGFuaW1hdAog
fQogCiBDU1NBbmltYXRpb25Db250cm9sbGVyOjpDU1NBbmltYXRpb25Db250cm9sbGVyKEZyYW1l
JiBmcmFtZSkKLSAgICA6IG1fZGF0YShzdGQ6Om1ha2VfdW5pcXVlPENTU0FuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlPihmcmFtZSkpCisgICAgOiBtX2RhdGEobWFrZVVuaXF1ZTxDU1NBbmltYXRp
b25Db250cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNzRl
ZWRjOTk2NmU5ZjgxYWNiOTk2Y2YzNzY5ODNkYWI2ODU1NDBjNi4uYmFlYjI0NzY1NzE2NzM3Yjg0
YTFjYzhmMTlkZTAxNzNmMzY3ZTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTE3LDkgKzExNyw5IEBA
IHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25z
dCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpCiB7CiAgICAgQVNTRVJUKGZyb20gJiYgdG8pOwogICAg
IGlmIChmcm9tLT5zdHlsZSgpICE9IHRvLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqdG8pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
aGFkb3dEYXRhPigqdG8pOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0
YT4oYmxlbmQoZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChmcm9tLT5sb2NhdGlvbigpLCB0
by0+bG9jYXRpb24oKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5yYWRpdXMoKSwg
dG8tPnJhZGl1cygpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kKGZyb20tPnNwcmVhZCgpLCB0
by0+c3ByZWFkKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20tPnN0
eWxlKCksIHRvLT5zdHlsZSgpLCBwcm9ncmVzcyksCkBAIC05NzQsMTUgKzk3NCwxNSBAQCBjbGFz
cyBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvciA6IHB1YmxpYyBBbmltYXRpb25Q
cm9wZXJ0eVdyYXBwZXJCYXNlCiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29s
b3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVy
KSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAg
ICAgICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3Qs
IHZvaWQgKFJlbmRlclN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAg
ICAgOiBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFw
cGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwg
c2V0dGVyKSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJv
cGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQor
ICAgICAgICAsIG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9w
LCBnZXR0ZXIsIHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVl
PFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVy
KSkKICAgICB7CiAgICAgfQogICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9y
KENTU1Byb3BlcnR5SUQgcHJvcCwgTWF5YmVJbnZhbGlkQ29sb3JUYWcsIGNvbnN0IENvbG9yJiAo
UmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVy
KShjb25zdCBDb2xvciYpLAogICAgICAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqdmlz
aXRlZEdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0dGVyKShj
b25zdCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UocHJv
cCkKLSAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJN
YXliZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAgICAgICAsIG1fdmlz
aXRlZFdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRD
b2xvcj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCisgICAgICAgICwgbV93
cmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3As
IGdldHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKG1ha2VVbmlxdWU8
UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZp
c2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUmVuZGVy
U3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKSBjb25zdCBvdmVycmlkZQpAQCAtMTIyOSwx
OSArMTIyOSwxOSBAQCBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFu
aW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UgewogICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAgICAgICAgICAgIG1fZmlsbExh
eWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblBy
b3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXll
cjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXll
cjo6c2V0QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKKyAgICAgICAgICAgIG1fZmls
bExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3Bl
cnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6
c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6
c2V0QmFja2dyb3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6Ci0gICAgICAgICAgICBtX2ZpbGxMYXll
clByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9w
ZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6
OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFlPcmlnaW4sICZGaWxsTGF5ZXI6
OnNldEJhY2tncm91bmRZT3JpZ2luLCBFZGdlOjpCb3R0b20pOworICAgICAgICAgICAgbV9maWxs
TGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVy
dHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpz
ZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpz
ZXRCYWNrZ3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tTaXplOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJv
cGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgp
OworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZp
bGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6
OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgICAgICAg
ICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVy
U3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAm
RmlsbExheWVyOjpzZXRJbWFnZSk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3Jh
cHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJv
cGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc3
MCw3ICsxNzcwLDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0
eUFuaW1hdGlvbldyYXBwZXJNYXAoKQogICAgICAgICAgICAgbG9uZ2hhbmRXcmFwcGVycy51bmNo
ZWNrZWRBcHBlbmQobV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJbmRleF0uZ2V0KCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92
ZShsb25naGFuZFdyYXBwZXJzKSkpOworICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVj
a2VkQXBwZW5kKG1ha2VVbmlxdWU8U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eUlE
LCBXVEZNb3ZlKGxvbmdoYW5kV3JhcHBlcnMpKSk7CiAgICAgICAgIGluZGV4RnJvbVByb3BlcnR5
SUQocHJvcGVydHlJRCkgPSBhbmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQgKyBpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwCmluZGV4IDcwNDdlODNkZTc4NWRiODFiNmQ5OTBhOTQ4MzdiYTcxZDcyODI5YTAu
LjhmMGY2YmY1M2IwM2UwOGY3MDMzMTY2ZWI4Yzc0ZDZiZjk3MjgzNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMjM4LDcg
KzIzOCw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNv
bnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiB2b2lkIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6dXBkYXRlU291cmNlU2VsZihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmln
aW4pCiB7CiAgICAgbV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2Nv
bCgpOwotICAgIG1fc2VsZlNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2lu
Lmhvc3QoKSwgc2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFs
c2UpOworICAgIG1fc2VsZlNvdXJjZSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlPigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3Qo
KSwgc2VjdXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOwog
fQogCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaAppbmRleCBhOGYxZDRmMGJkZTE0ZjE0Yjg4YWEz
OTQwZWRkOGM4OTYyNjFlM2RlLi5iYmQ5MTg5ZTI0ODM0ZGFjYzhkN2JhZTE1Y2M1ODE2Y2EzMjBj
ZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmUuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogCiBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZShjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiBkaXJlY3RpdmVMaXN0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIDogbV9uYW1lKG5hbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCmluZGV4IGRkYmQ4Y2RlMjc4MGU5MmRiYTIwZTBh
YmQ5OWNmMDQ5ODQzZjRjNGQuLmMwMTU2ZGRmMDFjOTQ3ZTUwNGI1NjlkMGE0MTE2OThjNTU4ZjNl
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Q29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdChDb250ZW50U2UKIAogc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q+IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNy
ZWF0ZShDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSwgY29uc3QgU3RyaW5nJiBoZWFkZXIs
IENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUgdHlwZSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpQb2xpY3lGcm9tIGZyb20pCiB7Ci0gICAgYXV0byBkaXJlY3RpdmVzID0gc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pihwb2xpY3ksIHR5cGUp
OworICAgIGF1dG8gZGlyZWN0aXZlcyA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsKICAgICBkaXJlY3RpdmVzLT5wYXJzZShoZWFk
ZXIsIGZyb20pOwogCiAgICAgaWYgKCFjaGVja0V2YWwoZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGly
ZWN0aXZlKGRpcmVjdGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKSkpIHsKQEAgLTQ1Miw3ICs0NTIs
NyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVj
dGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgogICAgICAgICBtX3BvbGljeS5yZXBvcnREdXBs
aWNhdGVEaXJlY3RpdmUobmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZGlyZWN0
aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1BEaXJlY3RpdmVUeXBlPigqdGhpcywgbmFtZSwgdmFs
dWUpOworICAgIGRpcmVjdGl2ZSA9IG1ha2VVbmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMs
IG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjphcHBseVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHNhbmRib3hQb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250
ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFu
Z2VPYnNlcnZlci5oCmluZGV4IDFjMmI0ZDA4ZTZkYjI0MzA1MjkxYTFlYTFjODZlYjYzNmUzZjM1
MjYuLjg0OTQ4NDI2NGU5MTczMGY3YTY5MDk4ZGYzZDdkYWQxNDkyZGNlYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oCkBAIC00NCw2ICs0
NCw3IEBAIGNsYXNzIERPTVRpbWVyOwogY2xhc3MgRWxlbWVudDsKIAogY2xhc3MgQ29udGVudENo
YW5nZU9ic2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENvbnRlbnRDaGFuZ2VPYnNlcnZl
cj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRlbnRD
aGFuZ2VPYnNlcnZlcihEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9E
T01UaW1lckhvbGRpbmdUYW5rLmgKaW5kZXggYjYyMTg0ZmUxNzk0MmRhOTQ4NTlhODAyY2VmZGU3
NmUyNDJkM2U0Yy4uYmJmNzk0NWFhYTQ5OWE3NmI3ZTEyYWIzYzc1ZDU5NDQyMWU0NWVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaApAQCAtMzUs
NiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01UaW1lcjsKIAogY2xhc3Mg
RE9NVGltZXJIb2xkaW5nVGFuayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRE9NVGltZXJIb2xkaW5nVGFuaygpOwogICAgIH5ET01UaW1lckhvbGRpbmdUYW5r
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VP
dmVybGF5TGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdl
T3ZlcmxheUxpbnV4LmNwcAppbmRleCA0ZmRmNzU2YzAyMTk4ODUzM2IyZjEyNTVjOTFhNGVjYzkx
NDg0ZmE0Li5jMDdiMTI3NjljZDA0YmE3YjMxZjg4YzQ2YTlmMDZiNmFkNmI0OWQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgc3RhdGljIFN0cmluZyBnY1RpbWVyU3RyaW5nKE1v
bm90b25pY1RpbWUgdGltZXJGaXJlRGF0ZSwgTW9ub3RvbmljVGltZSBub3cpCiBzdGF0aWMgY29u
c3QgZmxvYXQgZ0ZvbnRTaXplID0gMTQ7CiAKIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFp
bnRlciBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIo
UmVzb3VyY2VVc2FnZU92ZXJsYXkmIG92ZXJsYXkpCiAgICAgICAgIDogbV9vdmVybGF5KG92ZXJs
YXkpCkBAIC0xMzIsNyArMTMzLDcgQEAgY2xhc3MgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVy
IGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewogCiB2b2lkIFJlc291cmNlVXNh
Z2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotICAgIG1fb3ZlcmxheVBhaW50ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlcj4oKnRoaXMpOwor
ICAgIG1fb3ZlcmxheVBhaW50ZXIgPSBtYWtlVW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5UGFp
bnRlcj4oKnRoaXMpOwogICAgIG1fcGFpbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShv
dmVybGF5KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9yeSgp
LCAqbV9vdmVybGF5UGFpbnRlcik7CiAgICAgbV9wYWludExheWVyLT5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50M0QoKSk7CiAgICAgbV9wYWludExheWVyLT5zZXRTaXplKHsgbm9ybWFsV2lkdGgs
IG5vcm1hbEhlaWdodCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1Bh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1tCmluZGV4IGQ3YWRm
ZmQ3MmY5ZmE4ZmU5N2FmY2RhMDcxOGQ4M2M2ZTA5MDg1MGMuLjA4NjNhZDI2NzI1ZDY1NTQ3NTJi
N2FjMjE0OGVlZDFjNmRmYzIzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L1BhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQpAQCAt
OTAsNyArOTAsNyBAQCB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiB2b2lkIFBhZ2U6
OmFkZFNjaGVkdWxlUGFpcihSZWY8U2NoZWR1bGVQYWlyPiYmIHBhaXIpCiB7CiAgICAgaWYgKCFt
X3NjaGVkdWxlZFJ1bkxvb3BQYWlycykKLSAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CisgICAgICAgIG1fc2No
ZWR1bGVkUnVuTG9vcFBhaXJzID0gbWFrZVVuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOwog
ICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5hZGQocGFpci5wdHIoKSk7CiAKICAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4
dEluZGljYXRvcldpbmRvdy5oCmluZGV4IGRjZGQ5NTA0OGJkOTU4YWE3NDQwYTBmYzNkOWJjZTdk
ZjJmNTQ4MGYuLjY0NzVjZTVlYmM5MDdhZTE4ODBhZjE3MWMwNzM2ZmYzZWNiNTAyNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKQEAgLTUyLDYg
KzUyLDcgQEAgZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9u
IDogdWludDhfdCB7CiAjaWYgUExBVEZPUk0oTUFDKQogCiBjbGFzcyBUZXh0SW5kaWNhdG9yV2lu
ZG93IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShUZXh0SW5kaWNhdG9yV2luZG93KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCAzMDZjZmVkMTljZTZkMDBiNjJhODUyNDk3MDAyOGI4MDQ1ZmFkODIzLi4wMGFmMzk0
NzhkYzc1ZjcwMjljMjQ4NDU0ZWYwMWFiMGM2YzdkMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqIHBhZ2UpCiAgICAgOiBT
Y3JvbGxpbmdDb29yZGluYXRvcihwYWdlKQogICAgICwgbV91cGRhdGVOb2RlU2Nyb2xsUG9zaXRp
b25UaW1lcigqdGhpcywgJkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBv
c2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmlyZWQpCi0gICAgLCBtX3Njcm9sbGluZ1N0YXRl
VHJlZShzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhpcykpCisgICAgLCBt
X3Njcm9sbGluZ1N0YXRlVHJlZShtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhpcykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bFNuYXBPZmZzZXRzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmgKaW5kZXggNjNiZDk2MzhiNjNhMWExMWNhNDBmMzY3MjEyOWY3MTQx
MGM2ZmYyZS4uM2FiNjQwNjgyNjRjNTA0MDhiYWI0ZWUzOGQyY2NkNGE2NDFjNzg2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJ
bmZvLmgKQEAgLTM3LDYgKzM3LDcgQEAgc3RydWN0IFNjcm9sbE9mZnNldFJhbmdlIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKKyAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVmVjdG9yPFQ+IGhvcml6b250YWxT
bmFwT2Zmc2V0czsKICAgICBWZWN0b3I8VD4gdmVydGljYWxTbmFwT2Zmc2V0czsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvci5jcHAKaW5kZXggNzY0MGQ1NWQ5NmEzZjA5NTliOTMxZWYwNDMzZWMxNWZh
MjA3ZGJkNC4uYzg5MGY5ZWJhMDA0Y2E4NzgwMTQxYjg1Y2VlZTAwNTU2MmUyZTQ0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuY3BwCkBAIC03MSw3ICs3MSw3IEBAIEZsb2F0U2l6ZSBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkKIAogc3Rk
Ojp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQs
IGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxW
ZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNl
dCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3cG9ydFNpemUsIGNvbnRlbnRT
aXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAK
IHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Ny
b2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKaW5kZXgg
YmU5OWQwZWU2YTNmMDc4OWZjNGQ3ZGM2OTI4ODViNTI0MDA0MzgwMi4uMjFjMzExY2Q4OWI3OTQw
ODRhODQ5MGQ1ZmM5YmE1NWE5M2I5YWViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTM5
LDYgKzM5LDcgQEAgY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIAogY2xhc3Mg
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRT
aXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZs
b2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQ
b2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0
IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCmluZGV4IDk2ODJkMmMxYmNlZTM3
NTcxM2MzNDZkM2UzM2NkNGRjMTM1YWZjNzguLmJlNTdjOWI4NjlkMGNjNTIzODZiMDA0NmE1MDdk
MzRjODQwYzgxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVOb2RlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU2Nyb2xsaW5n
U3RhdGVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9k
ZSkKICAgICBjaGlsZE5vZGUtPnNldFBhcmVudCh0aGlzKTsKIAogICAgIGlmICghbV9jaGlsZHJl
bikKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxT
Y3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKKyAgICAgICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8
VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5h
cHBlbmQoV1RGTW92ZShjaGlsZE5vZGUpKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ2hpbGRO
b2Rlcyk7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6Omlu
c2VydENoaWxkKFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+JiYgY2hpbGROb2RlLCBzaXplX3QKIAog
ICAgIGlmICghbV9jaGlsZHJlbikgewogICAgICAgICBBU1NFUlQoIWluZGV4KTsKLSAgICAgICAg
bV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdTdGF0
ZU5vZGU+Pj4oKTsKKyAgICAgICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0
cjxTY3JvbGxpbmdTdGF0ZU5vZGU+Pj4oKTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBtX2No
aWxkcmVuLT5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCmluZGV4IGY2MWUyOGUwZWM1MDMwMTJiMzcyZmIyNTU2
OWE4Y2I3ZGQ1M2FhNzAuLjcxNTdlMTY4NjBmNDljOTFkZGEzNWJiYzRlYWZlOTgxOWVhY2JlNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
VHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVUcmVlLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdT
dGF0ZVRyZWU+IFNjcm9sbGluZ1N0YXRlVHJlZTo6Y29tbWl0KExheWVyUmVwcmVzZW50YXRpCiAg
ICAgfQogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBjbG9uZXMgYW5kIHJlc2V0cyB0aGUgY3VycmVu
dCBzdGF0ZSB0cmVlLCBidXQgbGVhdmVzIHRoZSB0cmVlIHN0cnVjdHVyZSBpbnRhY3QuCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsaW5nU3RhdGVUcmVlPiB0cmVlU3RhdGVDbG9uZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5n
U3RhdGVUcmVlPigpOwogICAgIHRyZWVTdGF0ZUNsb25lLT5zZXRQcmVmZXJyZWRMYXllclJlcHJl
c2VudGF0aW9uKHByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24pOwogCiAgICAgaWYgKG1fcm9v
dFN0YXRlTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVOb2RlLmNwcAppbmRleCBlYTc0ZTJjYTQyNDI5YThlMmJlOWY5YTM3OWUzNjdkYTRk
ZGRhM2QxLi43Mjk2MTVhNjlmMDEyMjYzMTUxNDdlY2ZkYjU1MjhiMDE5OWYzODYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxkKFJl
ZjxTY3JvbGxpbmdUcmVlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQYXJl
bnQodGhpcyk7CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIG1fY2hpbGRyZW4gPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsKKyAg
ICAgICAgbV9jaGlsZHJlbiA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdUcmVl
Tm9kZT4+PigpOwogICAgIG1fY2hpbGRyZW4tPmFwcGVuZChXVEZNb3ZlKGNoaWxkTm9kZSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQppbmRleCAxYzdhYjc2YTE1
MWU2MzUwZDhiNjE0YzM2ZDA1YmNlNjVjNmM5NTg0Li5iNDNlYTk5NWZhZjZiNDcwMzM1ZmJmMDdh
MjA4NmE2YjM1ZjcwZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0K
QEAgLTM2LDcgKzM2LDcgQEAgc3RhdGljIGJvb2wgZ0VuYWJsZVBsYXRmb3JtTW9tZW50dW1TY3Jv
bGxpbmdQcmVkaWN0aW9uID0gdHJ1ZTsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM+KHZpZXdwb3J0U2l6
ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9j
aXR5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWM+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0
YSwgaW5pdGlhbFZlbG9jaXR5KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sIGVu
YWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKaW5kZXggNzFlNDNkM2YzYjk0
NjEwNjA4Y2JmMTFkYjUxMTViY2JlYzA1NDg5MC4uMDg4ZGY1NDNlMDQ3OTExN2M4MzdhZmUyMjNi
YmNjNTUxNDg4YTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9u
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaApAQCAtMzMs
NiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDUFVNb25pdG9yIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBFeGNlZWRlZENQ
VUxpbWl0SGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChkb3VibGUpPjsKICAgICBXRUJDT1JF
X0VYUE9SVCBDUFVNb25pdG9yKFNlY29uZHMgY2hlY2tJbnRlcnZhbCwgRXhjZWVkZWRDUFVMaW1p
dEhhbmRsZXImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9u
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaAppbmRleCBlNjBm
NzcxM2Y2MmJiMjU2MmE4NDI4ODhjN2ZjNjI5ZjJjNTQ3ZjMzLi42YjI4OGUxZTE3ZTQ0OGJiODZm
YjllY2UyOWNjOWU1YmRiOWRkOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9y
LmgKQEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsZU1v
bml0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0g
Y2xhc3MgRmlsZUNoYW5nZVR5cGUgeyBNb2RpZmljYXRpb24sIFJlbW92YWwgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5jcHAKaW5kZXggNGZmOTgwNGVhZWMxMzA2YjI2OGEyNDVmMjc3MWEx
MTJlMjhkMmExZS4uM2ZjNDMxYTQ3NDYxZDhjNDQzZGI0YjYyMmQ2ZWE5MDYzNGRhMGYyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCkBAIC0yODgsOSArMjg4LDkgQEAgTGVuZ3RoIGNv
bnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAv
LyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsK
ICAgICBsZW5ndGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3Ro
KDEwMCwgUGVyY2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwg
Q2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFr
ZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAg
ICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3Ro
PihsZW5ndGgpKTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJh
dGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0
dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFu
Z2VBbGwpKTsKIH0KIApAQCAtMzAyLDcgKzMwMiw3IEBAIHN0YXRpYyBMZW5ndGggYmxlbmRNaXhl
ZFR5cGVzKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dy
CiAgICAgaWYgKHByb2dyZXNzID49IDEuMCkKICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAK
LSAgICBhdXRvIGJsZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVu
Z3RoPihmcm9tLCB0bywgcHJvZ3Jlc3MpOworICAgIGF1dG8gYmxlbmQgPSBtYWtlVW5pcXVlPENh
bGNFeHByZXNzaW9uQmxlbmRMZW5ndGg+KGZyb20sIHRvLCBwcm9ncmVzcyk7CiAgICAgcmV0dXJu
IExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFu
Z2VBbGwpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3Rl
Q29tbWFuZExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1h
bmRMaXN0ZW5lci5jcHAKaW5kZXggNTUyYjEyZjZjMWU4Y2RhNmZmZWE2NDc4NjkyMjI5ZWE5M2Vk
MTdjYS4uOGUzNWUzMDRjMWU3MjU3YmM2NGM2YWQxMGVkZGU5NjQyMDRlNjU4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCkBAIC0z
MSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAoIVBMQVRGT1JNKElPU19GQU1J
TFkpICYmICFQTEFURk9STShNQUMpKSB8fCAhSEFWRShNRURJQV9QTEFZRVIpCiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0
ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXI+KGNsaWVudCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihjbGllbnQpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKaW5kZXggMmU1ZjYzYmNl
ZjJiZmRmY2ZmOTIxNmQ5ODZiMGY0MzYwYzY4MGI0MS4uYjdjMWQyNGViNDllNWE1NWY2OTFmMDZj
ZTllMWQ4MGIyMWJjY2FkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
aW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIFNjcm9sbGFi
bGVBcmVhOwogCiBjbGFzcyBTY3JvbGxBbmltYXRpb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbigpIHsgfTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxh
cml0eSwgZmxvYXQgLyogc3RlcCAqLywgZmxvYXQgLyogbXVsdGlwbGllciAqLykgeyByZXR1cm4g
dHJ1ZTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRl
eCBkOTE1NGQ5MzUxYTJmMzM2NmRkZDA1ZmU2MGZkZWJiOWMxYTFlNzM4Li5mOGVkYzg4MmQ3ZjM2
MDAyZTE5ODUxMGQ4MWI4ZWIzNGFhNTAwN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNpZiAhRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYmICFQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxB
bmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmlu
ZGV4IGM2MmFkODM0ZTZiMzgwOGUxZWNkYThiYTEzMTJkM2Q5NTcwNWU5NmEuLjk2ZDBmMzAwYjM0
MThlNjA4MjFkYTJkYTJhNjQxODljNGRlZTBiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgU2Nyb2xsQW5pbWF0b3ImIFNj
cm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Njcm9s
bEFuaW1hdG9yKSB7CiAgICAgICAgIGlmICh1c2VzTW9ja1Njcm9sbEFuaW1hdG9yKCkpIHsKLSAg
ICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1h
dG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0aGlzKSwgW3RoaXNdKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgeworICAgICAgICAgICAgbV9zY3JvbGxBbmltYXRvciA9IG1ha2VV
bmlxdWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25zdF9jYXN0PFNjcm9sbGFibGVBcmVhJj4oKnRo
aXMpLCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CiAgICAgICAgICAgICAgICAgbG9n
TW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShtZXNzYWdlKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICB9IGVsc2UKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIFNjcm9sbGFibGVBcmVhOjpoYXNM
YXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0
VW5pdD4mIFNjcm9sbGFibGVBcmVhOjplbnN1cmVTbmFwT2Zmc2V0c0luZm8oKQogewogICAgIGlm
ICghbV9zbmFwT2Zmc2V0c0luZm8pCi0gICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gc3RkOjpt
YWtlX3VuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+KCk7CisgICAgICAg
IG1fc25hcE9mZnNldHNJbmZvID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5
b3V0VW5pdD4+KCk7CiAgICAgcmV0dXJuICptX3NuYXBPZmZzZXRzSW5mbzsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKaW5kZXggNzJiMDA0NTEzMTQy
YzhmNGU5NWRmMjI4MThjM2RkYzE4MGFhZWNlZC4uMGQ3NGIxNmU1OTI1OThhYjgzYjBjOGMwZWI1
NGI0NDZkZmQzOGQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVu
VGVybWluYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5h
dGlvbi5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAg
ICAgY2xhc3MgU3VkZGVuVGVybWluYXRpb25EaXNhYmxlciB7CisgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdWRkZW5UZXJtaW5h
dGlvbkRpc2FibGVyKTsKICAgICBwdWJsaWM6CiAgICAgICAgIFN1ZGRlblRlcm1pbmF0aW9uRGlz
YWJsZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApp
bmRleCBhMjgwMTBlY2ZlNWEzNjdhZDlkMGIyOWEyMDA1NjNhMGY1NjFkNTYwLi4yN2E3MzY0MTZi
YTA0YzA1M2MyZTc3ZGIyYzU1ODE0NDQwZDJmMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtNDAsMTQgKzQwLDE0IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEoKQotICAgIDog
bV9jYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKKyAgICA6IG1fY2FjaGVkUmVzb3VyY2VSZXF1
ZXN0SW5pdGlhdG9ycyhtYWtlVW5pcXVlPENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnM+
KCkpCiAgICAgLCBtX2V2ZW50TmFtZXMoRXZlbnROYW1lczo6Y3JlYXRlKCkpCi0gICAgLCBtX3Ro
cmVhZFRpbWVycyhzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZFRpbWVycz4oKSkKLSAgICAsIG1fcXVh
bGlmaWVkTmFtZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8UXVhbGlmaWVkTmFtZUNhY2hlPigpKQor
ICAgICwgbV90aHJlYWRUaW1lcnMobWFrZVVuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCisgICAgLCBt
X3F1YWxpZmllZE5hbWVDYWNoZShtYWtlVW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkKICNp
Zm5kZWYgTkRFQlVHCiAgICAgLCBtX2lzTWFpblRocmVhZChpc01haW5UaHJlYWQoKSkKICNlbmRp
ZgotICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1Uoc3RkOjptYWtlX3VuaXF1ZTxJQ1VDb252ZXJ0
ZXJXcmFwcGVyPigpKQorICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1UobWFrZVVuaXF1ZTxJQ1VD
b252ZXJ0ZXJXcmFwcGVyPigpKQogewogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igd2lsbCBoYXZl
IGJlZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgYmVpbmcgY2FsbGVkIG9uCiAg
ICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHRocmVh
ZCAtIHRoaXMgbWFrZXMgdGhpcyBhIGNvbnZlbmllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQnVzLmNwcAppbmRleCAyZjg5MmQ2YjE5YWJhNDIzMGU5MjRjNzYxODczOGZj
NmNiNDhmN2VjLi5lNzBkNDZkMGI5ZjI0MDdmOTA4NTQ4ZmE4ZjJlOThjOWRhNDU2M2I3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIEF1ZGlvQnVzOjpBdWRpb0J1cyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3Qg
bGVuZ3RoLCBib29sIGFsbG9jYXRlKQogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgYXV0byBjaGFubmVsID0gYWxsb2NhdGUg
PyBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9DaGFubmVsPihudWxscHRyLCBsZW5ndGgpOworICAgICAgICBhdXRvIGNoYW5uZWwg
PSBhbGxvY2F0ZSA/IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihsZW5ndGgpIDogbWFrZVVuaXF1
ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0aCk7CiAgICAgICAgIG1fY2hhbm5lbHMudW5j
aGVja2VkQXBwZW5kKFdURk1vdmUoY2hhbm5lbCkpOwogICAgIH0KIApAQCAtNDg5LDcgKzQ4OSw3
IEBAIHZvaWQgQXVkaW9CdXM6OmNvcHlXaXRoR2FpbkZyb20oY29uc3QgQXVkaW9CdXMgJnNvdXJj
ZUJ1cywgZmxvYXQqIGxhc3RNaXhHYWluLCBmCiAKICAgICBpZiAoZnJhbWVzVG9EZXppcHBlcikg
ewogICAgICAgICBpZiAoIW1fZGV6aXBwZXJHYWluVmFsdWVzLmdldCgpIHx8IG1fZGV6aXBwZXJH
YWluVmFsdWVzLT5zaXplKCkgPCBmcmFtZXNUb0RlemlwcGVyKQotICAgICAgICAgICAgbV9kZXpp
cHBlckdhaW5WYWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZnJhbWVz
VG9EZXppcHBlcik7CisgICAgICAgICAgICBtX2RlemlwcGVyR2FpblZhbHVlcyA9IG1ha2VVbmlx
dWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0RlemlwcGVyKTsKIAogICAgICAgICBmbG9hdCog
Z2FpblZhbHVlcyA9IG1fZGV6aXBwZXJHYWluVmFsdWVzLT5kYXRhKCk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXNUb0RlemlwcGVyOyArK2kpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCmluZGV4IDIxNzNkYzkzODNlNGEzM2MxYjU5MzQ3
NjVhMWU1YjEwNzQ2ZjAzYTEuLmJiYjNkMmFjZDIyYzU3MmJjOTIzYTQ4YjFmNzBhZjg1NGMwY2Iw
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaApAQCAtNDAsNyAr
NDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBbiBBdWRpb0J1cyByZXByZXNlbnRzIGEg
Y29sbGVjdGlvbiBvZiBvbmUgb3IgbW9yZSBBdWRpb0NoYW5uZWxzLgogLy8gVGhlIGRhdGEgbGF5
b3V0IGlzICJwbGFuYXIiIGFzIG9wcG9zZWQgdG8gImludGVybGVhdmVkIi4KIC8vIEFuIEF1ZGlv
QnVzIHdpdGggb25lIGNoYW5uZWwgaXMgbW9ubywgYW4gQXVkaW9CdXMgd2l0aCB0d28gY2hhbm5l
bHMgaXMgc3RlcmVvLCBldGMuCi1jbGFzcyBBdWRpb0J1cyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxBdWRpb0J1cz4geworY2xhc3MgQXVkaW9CdXMgZmluYWwgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8QXVkaW9CdXM+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRp
b0J1cyk7CiBwdWJsaWM6CiAgICAgZW51bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQ2hhbm5lbC5oCmluZGV4IGJiYzEzNTdhM2Q1M2YwNTQ4Zjg4NzhlNTg3ZGI3ZDZk
ZDFjNGZhZDguLjdiOTg5M2QzOGFjNDE3NDUzMTc0MWI3NzI0YzZmZjJhYmQwMWRmOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCkBAIC0zNyw3ICsz
Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQW4gQXVkaW9DaGFubmVsIHJlcHJlc2Vu
dHMgYSBidWZmZXIgb2Ygbm9uLWludGVybGVhdmVkIGZsb2F0aW5nLXBvaW50IGF1ZGlvIHNhbXBs
ZXMuCiAvLyBUaGUgUENNIHNhbXBsZXMgYXJlIG5vcm1hbGx5IGFzc3VtZWQgdG8gYmUgaW4gYSBu
b21pbmFsIHJhbmdlIC0xLjAgLT4gKzEuMAotY2xhc3MgQXVkaW9DaGFubmVsIHsKK2NsYXNzIEF1
ZGlvQ2hhbm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXVkaW9DaGFubmVsKTsKIHB1YmxpYzoKICAgICAvLyBNZW1vcnkg
Y2FuIGJlIGV4dGVybmFsbHkgcmVmZXJlbmNlZCwgb3IgY2FuIGJlIGludGVybmFsbHkgYWxsb2Nh
dGVkIHdpdGggYW4gQXVkaW9GbG9hdEFycmF5LgpAQCAtNTYsNyArNTcsNyBAQCBjbGFzcyBBdWRp
b0NoYW5uZWwgewogICAgICAgICAsIG1fcmF3UG9pbnRlcigwKQogICAgICAgICAsIG1fc2lsZW50
KHRydWUpCiAgICAgewotICAgICAgICBtX21lbUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9GbG9hdEFycmF5PihsZW5ndGgpOworICAgICAgICBtX21lbUJ1ZmZlciA9IG1ha2VVbmlxdWU8
QXVkaW9GbG9hdEFycmF5PihsZW5ndGgpOwogICAgIH0KIAogICAgIC8vIEEgImJsYW5rIiBhdWRp
byBjaGFubmVsIC0tIG11c3QgY2FsbCBzZXQoKSBiZWZvcmUgaXQncyB1c2VmdWwuLi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgKaW5kZXggNzVjOWFiZDc0OTRkMzU4
MjJmODJhY2U3Y2NkMGQ4NTY4NjExZDdlYS4uMGY0MzhkZDdkMGZhNTlmYjY0NGQ0ZGY1NzJmNTU5
ZmQ2NjMwOGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9GSUZPLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GSUZPLmgK
QEAgLTMzLDcgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0ZJ
Rk8geworY2xhc3MgQXVkaW9GSUZPIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBGSUZPIGxhcmdlIGVub3VnaCB0byBob2xkIHxm
aWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVsc3wgY2hhbm5lbHMu
CiAgICAgQXVkaW9GSUZPKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBmaWZvTGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVs
bEZJRk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8uaApp
bmRleCBiZmJlOTgzYTU3NWE0NTRhYWMyYjBjM2NiZTQ1NzVlZmFmNmI3OGQ3Li5kNzQ4ZmE0MTM4
NzM3OWRiMzk1YmVhZTY1Zjg4MmJhMjU4ZTlmYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIHRoZSBGSUZPIHdpbGwgYXNrIHRoZSBwcm92aWRlciBmb3IgbW9yZSBkYXRh
IHdoZW4gbmVjZXNzYXJ5IHRvIGZ1bGZpbGwgYSByZXF1ZXN0LiBDb250cmFzdCB0aGlzCiAvLyB3
aXRoIGEgInB1c2giIEZJRk8sIHdoZXJlIHRoZSBzZW5kZXIgcHVzaGVzIGRhdGEgdG8gdGhlIEZJ
Rk8gd2hpY2ggd2lsbCBpdHNlbGYgcHVzaCB0aGUgZGF0YSB0bwogLy8gdGhlIHJlY2VpdmVyIHdo
ZW4gdGhlIEZJRk8gaXMgZnVsbC4KLWNsYXNzIEF1ZGlvUHVsbEZJRk8geworY2xhc3MgQXVkaW9Q
dWxsRklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgLy8gQ3JlYXRlIGEgRklGTyB0aGF0IGdldHMgZGF0YSBmcm9tIHxwcm92aWRlcnwuIFRoZSBG
SUZPIHdpbGwgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQKICAgICAvLyB8Zmlmb0xlbmd0aHwgZnJh
bWVzIG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLiBUaGUgQXVkaW9Tb3Vy
Y2VQcm92aWRlciB3aWxsIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Jlc2FtcGxlci5jcHAKaW5kZXggODY5MDZiYTUxMjQ3NTg2OTJjNjgzZTJiYzkwMzgzNTAx
ZWFiOGZkOS4uMjg0YzA1NDk0MzI1OTM0NGVhY2UzMjQxOGFkYTliODMwM2RhMmU0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcApAQCAt
MzksNyArMzksNyBAQCBjb25zdCBkb3VibGUgQXVkaW9SZXNhbXBsZXI6Ok1heFJhdGUgPSA4LjA7
CiBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIoKQogICAgIDogbV9yYXRlKDEuMCkKIHsK
LSAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJu
ZWw+KHRoaXMpKTsKKyAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBs
ZXJLZXJuZWw+KHRoaXMpKTsKICAgICBtX3NvdXJjZUJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwg
MCwgZmFsc2UpOwogfQogCkBAIC00Nyw3ICs0Nyw3IEBAIEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jl
c2FtcGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgIDogbV9yYXRlKDEuMCkKIHsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAg
ICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJu
ZWw+KHRoaXMpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVz
YW1wbGVyS2VybmVsPih0aGlzKSk7CiAKICAgICBtX3NvdXJjZUJ1cyA9IEF1ZGlvQnVzOjpjcmVh
dGUobnVtYmVyT2ZDaGFubmVscywgMCwgZmFsc2UpOwogfQpAQCAtNjEsNyArNjEsNyBAQCB2b2lk
IEF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzKQogICAgIC8vIEZpcnN0IGRlYWwgd2l0aCBhZGRpbmcgb3IgcmVtb3Zpbmcga2VybmVscy4K
ICAgICBpZiAobnVtYmVyT2ZDaGFubmVscyA+IGN1cnJlbnRTaXplKSB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGN1cnJlbnRTaXplOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAg
ICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVy
S2VybmVsPih0aGlzKSk7CisgICAgICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8
QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9rZXJu
ZWxzLnJlc2l6ZShudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKaW5kZXggZDExZmE5M2ViYWFjYmQ4ZTU2Yjk4ZGEz
Mzc1ZmFlMTQwNjhlM2JjOS4uMjAxNmJhZmY3Yzg4ZGYxOGFmNWQzNTJjMzAxZjVmZjQzNzY4OWY3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5o
CkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBhdWRpbyBzdHJl
YW0gbWF5IGJlIHNpbmdsZSBvciBtdWx0aS1jaGFubmVsLgogLy8gVGhlIGRlZmF1bHQgY29uc3Ry
dWN0b3IgZGVmYXVsdHMgdG8gc2luZ2xlLWNoYW5uZWwgKG1vbm8pLgogCi1jbGFzcyBBdWRpb1Jl
c2FtcGxlciB7CitjbGFzcyBBdWRpb1Jlc2FtcGxlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXVkaW9SZXNhbXBsZXIoKTsKICAgICBBdWRpb1Jl
c2FtcGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCmluZGV4IDk5ZDg3N2Ji
N2NkNjhkYmIwNTM2NzdhMDk3Y2Q0ZTBlYWM4M2I3ODIuLjhhYzJiYWE0MmM1ODdhMzQ4NWQ1MzQw
MjNhZGVlMjRmODgzMjZlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaApAQCAtMzQsNyArMzQsOSBAQCBjbGFzcyBBdWRp
b1Jlc2FtcGxlcjsKIC8vIEF1ZGlvUmVzYW1wbGVyS2VybmVsIGRvZXMgcmVzYW1wbGluZyBvbiBh
IHNpbmdsZSBtb25vIGNoYW5uZWwuCiAvLyBJdCB1c2VzIGEgc2ltcGxlIGxpbmVhciBpbnRlcnBv
bGF0aW9uIGZvciBnb29kIHBlcmZvcm1hbmNlLgogCi1jbGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5l
bCB7CitjbGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5lbCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9SZXNhbXBsZXJLZXJu
ZWwpOwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1wbGVyS2VybmVsKEF1ZGlvUmVzYW1wbGVyKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmlu
ZGV4IDVjMWJmMmEzMTczNDJlYTNlNTI5MmE3OTdlOGU2NmUxYThkYTM5N2MuLmI1ZmI1ODA2NDhm
OWNmOGVjNGYxODZmYWZhNDhlMTNmZGNmMmY1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtNTAsNiArNTAsNyBAQCBib29sIEF1ZGlv
U2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAKICNpZiAhUExBVEZPUk0oQ09D
T0EpCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKaW5kZXggMTdkYTgxYjNiNzVkN2E1YWFi
ODIxNDg2YjdjMWUzM2YxYThkZjQ2OS4uZTcwMDgyMmZmMWZlZWJkNzgyOWFlYzc1MGNjZTQwYTYw
YjkyNTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9T
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmgKQEAgLTQ0LDcgKzQ0LDggQEAgZW51bSBjbGFzcyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50
OF90IHsKICAgICBMb25nRm9ybVZpZGVvCiB9OwogCi1jbGFzcyBBdWRpb1Nlc3Npb24geworY2xh
c3MgQXVkaW9TZXNzaW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Nlc3Npb24pOwogcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBBdWRpb1Nlc3Npb24mIHNoYXJlZFNlc3Npb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKaW5kZXggYmI3MjFhMjNhN2ZjYzc3NGI2MDkzZTRl
YTkwOGM2MGU4OTA4MTA3Yy4uNzEzNDk0YzkxNGQzMzc4NjQzZTI5YTgwYmMzOWU3NzM2NmRmMTgy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKQEAgLTQxLDYgKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gICAgbG93cGFzcywgaGlnaHBhc3MsIHNoZWx2aW5n
LCBwYXJhbWV0ZXJpYywgbm90Y2gsIGFsbHBhc3MsIC4uLgogCiBjbGFzcyBCaXF1YWQgZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAogICAgIEJpcXVhZCgp
OwogICAgIH5CaXF1YWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0NvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaAppbmRleCBk
ODFjMDVkYzY4ZTZlMmZhMjFkMjQ1ZGQxMzdiNGYxNzhhMjEyMGI0Li5hN2FjYTNhNGM1NGQyNzRi
M2FhM2Q0MGFkOWQxNDNlYmRmYzQ1ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9Db25lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29u
ZS5oCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQ29uZSBnYWlu
IGlzIGRlZmluZWQgYWNjb3JkaW5nIHRvIHRoZSBPcGVuQUwgc3BlY2lmaWNhdGlvbgogCi1jbGFz
cyBDb25lRWZmZWN0IHsKK2NsYXNzIENvbmVFZmZlY3QgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbmVFZmZlY3QoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCmluZGV4IDZlOWY0ZTAx
ZGFlNmQ0NWQwMjExMWQ1ZDViMTI4ZWYzODg2YjIyNDIuLmUwYjNlZmQ4MGY3OGZmYWEzMDY1NzMz
MjMxNDcwMmRjNzNhMmYwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EZW5vcm1hbERpc2FibGVyLmgKQEAgLTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0RFTk9STUFMCi1jbGFzcyBEZW5vcm1hbERpc2FibGVy
IHsKK2NsYXNzIERlbm9ybWFsRGlzYWJsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIERlbm9ybWFsRGlzYWJsZXIoKQogICAgICAgICAgICAgOiBt
X3NhdmVkQ1NSKDApCkBAIC0xMDMsNyArMTA0LDggQEAgY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7
CiAKICNlbHNlCiAvLyBGSVhNRTogYWRkIGltcGxlbWVudGF0aW9ucyBmb3Igb3RoZXIgYXJjaGl0
ZWN0dXJlcyBhbmQgY29tcGlsZXJzCi1jbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKK2NsYXNzIERl
bm9ybWFsRGlzYWJsZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIERlbm9ybWFsRGlzYWJsZXIoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaAppbmRleCA2ZjJmYWY0MGU2MWJmNmUzMmE0
ZjQ5OTk3NjVjOWUxYmI1MTk0MWE4Li41YzhkODY2YzE2NTVjYzM5MWE4MjVkM2IyMzc4OGJmNDBj
Nzg5YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RD
b252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252
b2x2ZXIuaApAQCAtMzAsMTAgKzMwLDEzIEBACiAjZGVmaW5lIERpcmVjdENvbnZvbHZlcl9oCiAK
ICNpbmNsdWRlICJBdWRpb0FycmF5LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGlyZWN0Q29udm9sdmVyIHsKK2NsYXNzIERp
cmVjdENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRGlyZWN0Q29udm9sdmVyKTsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBEaXJlY3RDb252b2x2ZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgKaW5kZXggOTFkMzQ5Yjk3ZTYyNzczMzJkNzYz
MWE4ODQ0MjZiMTY2OGRjZjI4My4uYjNlYjc3OTczY2ZhNDc5NWYxNTA1MzY5YjdlNGIyZjg5ZmZi
NmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCkBAIC00MCw3
ICs0MCw4IEBAIGVudW0gY2xhc3MgRGlzdGFuY2VNb2RlbFR5cGUgewogICAgIEV4cG9uZW50aWFs
CiB9OwogCi1jbGFzcyBEaXN0YW5jZUVmZmVjdCB7CitjbGFzcyBEaXN0YW5jZUVmZmVjdCBmaW5h
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGlzdGFuY2VF
ZmZlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93
blNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgK
aW5kZXggZjRiNDIwMTdlZTc2MjdjYWQ2NTZiZmY0NTdhYWU5ODk0ODAxNGJmMi4uOTU3MGI4OTFj
OTdmZmE5MTFhMDExMzQwMDNiNGZkY2I1Zjc2ZjkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gRG93blNhbXBsZXIgZG93bi1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5
IGEgZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBEb3duU2FtcGxlciB7CitjbGFzcyBEb3duU2FtcGxl
ciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgRG93blNhbXBsZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IGIy
NTUxOGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIuLjUxMzc5OWE4NTEyZjQyN2I0
ZTRiOGQ5YjI5NDVhOTRkMzQ5MTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMjcxLDggKzI3MSw4IEBAIHZv
aWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMpCiAgICAgbV9wcmVGaWx0ZXJQYWNrcy5jbGVhcigpOwogICAgIG1fcG9zdEZp
bHRlclBhY2tzLmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
Q2hhbm5lbHM7ICsraSkgewotICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwotICAgICAgICBtX3Bvc3RGaWx0ZXJQ
YWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAg
ICAgICAgbV9wcmVGaWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBh
Y2s0PigpKTsKKyAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVy
b1BvbGVGaWx0ZXJQYWNrND4oKSk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VDaGFubmVscyA9IG1h
a2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRleCBl
ZjhjMDkzYTFiOTY1MzIyOWQ3OTlmMWE2YjI5MmFmYWRiZGFiYWQxLi44MjJjOTMxZjM4Y2UwZWM4
ZGM2MjgyZjBmOGMzNDNhZjY3N2Y5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtNDMsOCArNDMsOSBAQCBjbGFzcyBB
dWRpb0J1czsKIC8vIG9mIHRoZSBsb3VkZXN0IHBhcnRzIG9mIHRoZSBzaWduYWwgYW5kIHJhaXNl
cyB0aGUgdm9sdW1lIG9mIHRoZSBzb2Z0ZXN0IHBhcnRzLAogLy8gbWFraW5nIHRoZSBzb3VuZCBy
aWNoZXIsIGZ1bGxlciwgYW5kIG1vcmUgY29udHJvbGxlZC4KIAotY2xhc3MgRHluYW1pY3NDb21w
cmVzc29yIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3NvciBmaW5hbCB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHluYW1pY3NDb21wcmVz
c29yKTsKIHB1YmxpYzoKICAgICBlbnVtIHsKICAgICAgICAgUGFyYW1UaHJlc2hvbGQsCkBAIC05
NSw5ICs5NiwxMCBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgewogICAgIGZsb2F0IG1fbGFz
dEFuY2hvcjsKICAgICBmbG9hdCBtX2xhc3RGaWx0ZXJTdGFnZUdhaW47CiAKLSAgICB0eXBlZGVm
IHN0cnVjdCB7CisgICAgc3RydWN0IFplcm9Qb2xlRmlsdGVyUGFjazQgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFplcm9Qb2xlIGZpbHRlcnNbNF07
Ci0gICAgfSBaZXJvUG9sZUZpbHRlclBhY2s0OworICAgIH07CiAKICAgICAvLyBQZXItY2hhbm5l
bCBlbXBoYXNpcyBmaWx0ZXJzLgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVG
aWx0ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCA3
MzRiMDY2Y2RhNDhiYzJjN2E3OWVkZjUwN2QwNmMwNTZjNzBhMDkwLi5hZmVkYjdiNGNkMGE1YTYx
ZDFhOWZlMjc4YzM0MDM4M2Y5OGUyMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTc2LDcg
Kzc2LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hhbm5l
bHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKIAogICAgIG1fcHJlRGVsYXlCdWZmZXJzLmNs
ZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsr
aSkKLSAgICAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9GbG9hdEFycmF5PihNYXhQcmVEZWxheUZyYW1lcykpOworICAgICAgICBtX3ByZURlbGF5QnVm
ZmVycy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVz
KSk7CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXRQcmVEZWxheVRpbWUo
ZmxvYXQgcHJlRGVsYXlUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAppbmRleCBiN2JjZWEyZmFmZDg5OTZj
YTUyOGIwYjVkYWI0OWNiODg5NThkY2M0Li5lMTFmNDdiYWFmMGJjNmM1ZDBjYTdlM2Q3MjAwODI2
MzlkMjcwYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5h
bWljc0NvbXByZXNzb3JLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaApAQCAtMzUsNyArMzUsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCB7CitjbGFzcyBE
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9h
dCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCmluZGV4IDhjZjU5OTE3
OTVmM2YxZjYzZTI4MWQ5ZTE2YWNhZjNkN2E1N2E1ZGEuLjRlNDYzYjEyODFhN2ZhM2JiMzk3YTZi
MDY1Y2UwMzNjY2JmOWFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9FcXVhbFBvd2VyUGFubmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAvLyBDb21tb24gdHlwZSBvZiBzdGVyZW8gcGFubmVyIGFzIGZvdW5kIGluIG5vcm1hbCBh
dWRpbyBtaXhpbmcgZXF1aXBtZW50LgogCi1jbGFzcyBFcXVhbFBvd2VyUGFubmVyIDogcHVibGlj
IFBhbm5lciB7CitjbGFzcyBFcXVhbFBvd2VyUGFubmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9s
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAppbmRl
eCA0NTQyYjZmYjI1Nzg1NDk1YWIyMDZhYmMzYzkwYzc1YmMyZjE2ZWEwLi4zODYyMjdmMTk3MDRh
ZmQ3OTJlMzY2MjJiZGRhOWMxYWNlYTc1MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9GRlRDb252b2x2ZXIuaApAQCAtMzQsNyArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEZGVENvbnZvbHZlciB7CitjbGFzcyBGRlRDb252b2x2ZXIgZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEZGVENvbnZvbHZlcik7CiBwdWJsaWM6CiAgICAgLy8gZmZ0U2l6ZSBtdXN0IGJlIGEgcG93ZXIg
b2YgdHdvCiAgICAgRkZUQ29udm9sdmVyKHNpemVfdCBmZnRTaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAppbmRleCA0YzAyYjY5OTJiMDYzODNiODAzNTcz
Nzg3OGRiZjY1YTI2ZmI5YzMxLi40YzE1MjA2N2Q0NGFjNGI4NTQxOTIxYWFlZDI5NTk4MmI5Njkz
NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCkBAIC01
NCw3ICs1NCw3IEBAIHZvaWQgRkZURnJhbWU6OmRvUGFkZGVkRkZUKGNvbnN0IGZsb2F0KiBkYXRh
LCBzaXplX3QgZGF0YVNpemUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGRlRGcmFtZT4gRkZURnJhbWU6
OmNyZWF0ZUludGVycG9sYXRlZEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZG
VEZyYW1lJiBmcmFtZTIsIGRvdWJsZSB4KQogewotICAgIGF1dG8gbmV3RnJhbWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ZyYW1l
ID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CiAKICAgICBuZXdGcmFt
ZS0+aW50ZXJwb2xhdGVGcmVxdWVuY3lDb21wb25lbnRzKGZyYW1lMSwgZnJhbWUyLCB4KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAppbmRleCA3NTdi
Y2ZhNGI2YWVmZDcwZWJhZTg2NTQ4NzI1ZmE0MDYyOWM2ZTllLi5hNTE5MzQ5ODE1MDQ1MjZkNmZj
NjRkNDViOTc5MGIzNzgxMDNhNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRGF0YWJhc2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEhSVEZLZXJuZWw7CiAKLWNsYXNzIEhSVEZEYXRhYmFzZSB7CitjbGFzcyBIUlRGRGF0
YWJhc2UgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEhSVEZEYXRhYmFzZSk7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBmNDViZTg0
N2NlNzEwZGNlZGEyZTBlYzEwNmI3NWJmMjY4NTc4OWNkLi5hNDc0YTcwYzQwODUyYWUyZTFmOWY1
OGE0OWEwMDAzNjE1ODBiMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIUlRG
RGF0YWJhc2VMb2FkZXI6OmxvYWQoKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IGlmICghbV9ocnRmRGF0YWJhc2UuZ2V0KCkpIHsKICAgICAgICAgLy8gTG9hZCB0aGUgZGVmYXVs
dCBIUlRGIGRhdGFiYXNlLgotICAgICAgICBtX2hydGZEYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CisgICAgICAgIG1faHJ0ZkRh
dGFiYXNlID0gbWFrZVVuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZh
dGlvbi5jcHAKaW5kZXggYzg0YWI5NzUxYTE0NTk4OWEwMzc3ZmFkMWY0YTc1ZThmMTdlMmIyNC4u
NjA1MjMyY2QxYTk5YzkyMzNkOWFkMTA0OWJhMzA3ZTIxNzczOGZjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKQEAgLTI0NCw4ICsyNDQs
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRl
Rm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1YgogICAgIGlmICghaXNFbGV2YXRpb25Hb29kKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9
IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7
Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+
KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlx
dWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJu
ZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRo
cyk7CiAKICAgICAvLyBMb2FkIGNvbnZvbHV0aW9uIGtlcm5lbHMgZnJvbSBIUlRGIGZpbGVzLgog
ICAgIGludCBpbnRlcnBvbGF0ZWRJbmRleCA9IDA7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3Qo
Y29uc3QgU3RyaW5nJiBzdWIKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92
ZShrZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVs
TGlzdFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SFJU
RkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhS
VEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24xLCBIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9u
MiwgZmxvYXQgeCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAgLTI4NSw4ICsyODUsOCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0
aW5nU2xpY2VzKEhSVEZFbAogICAgICAgICAKICAgICBBU1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEu
MCk7CiAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktl
cm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9
IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7
CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJl
ck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJU
Rktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICBIUlRGS2VybmVsTGlz
dCoga2VybmVsTGlzdEwxID0gaHJ0ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RMKCk7CiAgICAgSFJU
Rktlcm5lbExpc3QqIGtlcm5lbExpc3RSMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0Uigp
OwpAQCAtMzAyLDcgKzMwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRG
RWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgLy8gSW50
ZXJwb2xhdGUgZWxldmF0aW9uIGFuZ2xlLgogICAgIGRvdWJsZSBhbmdsZSA9ICgxLjAgLSB4KSAq
IGhydGZFbGV2YXRpb24xLT5lbGV2YXRpb25BbmdsZSgpICsgeCAqIGhydGZFbGV2YXRpb24yLT5l
bGV2YXRpb25BbmdsZSgpOwogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZF
bGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3Rh
dGljX2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RS
KSwgc3RhdGljX2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJhdGUpOwogfQogCiB2b2lkIEhSVEZF
bGV2YXRpb246OmdldEtlcm5lbHNGcm9tQXppbXV0aChkb3VibGUgYXppbXV0aEJsZW5kLCB1bnNp
Z25lZCBhemltdXRoSW5kZXgsIEhSVEZLZXJuZWwqICZrZXJuZWxMLCBIUlRGS2VybmVsKiAma2Vy
bmVsUiwgZG91YmxlJiBmcmFtZURlbGF5TCwgZG91YmxlJiBmcmFtZURlbGF5UikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAppbmRleCAyYTk1OTA0NTUy
MTg0M2ExNTE2MmVjYzhlMzIxMTczOWUwNzA1M2Y3Li5lZjc1MmMzYzAxYmUzOWVjZGI3ZWY2NGRm
NDM5MDkyNjZkNmVkOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5oCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
SFJURkVsZXZhdGlvbiBjb250YWlucyBhbGwgb2YgdGhlIEhSVEZLZXJuZWxzIChvbmUgbGVmdCBl
YXIgYW5kIG9uZSByaWdodCBlYXIgcGVyIGF6aW11dGggYW5nbGUpIGZvciBhIHBhcnRpY3VsYXIg
ZWxldmF0aW9uLgogCi1jbGFzcyBIUlRGRWxldmF0aW9uIHsKK2NsYXNzIEhSVEZFbGV2YXRpb24g
ZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEhSVEZFbGV2YXRpb24pOwogcHVibGljOgogICAgIEhSVEZFbGV2YXRpb24oc3RkOjp1
bmlxdWVfcHRyPEhSVEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0TCwgc3RkOjp1bmlxdWVfcHRyPEhS
VEZLZXJuZWxMaXN0PiBrZXJuZWxMaXN0UiwgaW50IGVsZXZhdGlvbiwgZmxvYXQgc2FtcGxlUmF0
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKaW5kZXgg
ZWRmNmM2MGQwZGI4MTRkOTRjMGY3MWI2MzA2ZTQzODI2NTNhYTRjNy4uMzc1NTIxNmFlMjg3YTcx
Yzc0MjkyOWE1M2M5NTkwOTZkYjFkYmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURktlcm5lbC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSFJURktlcm5lbDo6SFJURktl
cm5lbChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRTaXplLCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mZnRGcmFtZSA9IHN0ZDo6bWFrZV91bmlx
dWU8RkZURnJhbWU+KGZmdFNpemUpOworICAgIG1fZmZ0RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZy
YW1lPihmZnRTaXplKTsKICAgICBtX2ZmdEZyYW1lLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9u
c2UsIHRydW5jYXRlZFJlc3BvbnNlTGVuZ3RoKTsKIH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHNp
emVfdCBIUlRGS2VybmVsOjpmZnRTaXplKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
Q2hhbm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKCkKIHsKLSAgICBhdXRv
IGNoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKKyAg
ICBhdXRvIGNoYW5uZWwgPSBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4oZmZ0U2l6ZSgpKTsKICAg
ICBGRlRGcmFtZSBmZnRGcmFtZSgqbV9mZnRGcmFtZSk7CiAKICAgICAvLyBBZGQgbGVhZGluZyBk
ZWxheSBiYWNrIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURlBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5o
CmluZGV4IGJmNWVlZmFhNWU0YzZkMmJmMTdhOTkwMDMwNzQxNjVjNmU0MzNhZDcuLmNhYWE0NDFm
MWQxNGVhMzZmNWU5NjhhZDhhNzdkMGI3YTYwZGQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBIUlRGUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBIUlRG
UGFubmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSFJU
RlBhbm5lcihmbG9hdCBzYW1wbGVSYXRlLCBIUlRGRGF0YWJhc2VMb2FkZXIqKTsKICAgICB2aXJ0
dWFsIH5IUlRGUGFubmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAppbmRleCBiYmJmMTY0NDYyMDc2MzllMzVj
Zjc5NTY0ODI4MjYzZDNlOTM3M2FlLi41YmY5YWI5NWQwMTU3NTAwODE1ZDYxMzFhYjFkODk3NDFi
ZTFmZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgTXVsdGlDaGFubmVsUmVz
YW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91YmxlIHNjYWxlRmFjdG9yLCB1bnNpZ25l
ZCBudW1iZXIKIHsKICAgICAvLyBDcmVhdGUgZWFjaCBjaGFubmVsJ3MgcmVzYW1wbGVyLgogICAg
IGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbEluZGV4IDwgbnVtYmVyT2ZD
aGFubmVsczsgKytjaGFubmVsSW5kZXgpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOworICAgICAgICBtX2tlcm5l
bHMuYXBwZW5kKG1ha2VVbmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKIH0KIAog
dm9pZCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6OnByb2Nlc3MoQXVkaW9Tb3VyY2VQcm92aWRlciog
cHJvdmlkZXIsIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJl
c2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmgKaW5kZXggNDQxNzU0NzYwNTgzZDI4MDM0YTQ1YjNiZDhhNjE4OGQ0NjVhMmYzNi4u
NjE0NmU5MjVjMDZhMmRkYTc2Y2I0MTJmMGNjMWUwYTI0NmFjODBkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmgKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKICAg
ICAKLWNsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciB7CitjbGFzcyBNdWx0aUNoYW5uZWxSZXNh
bXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOiAgIAog
ICAgIGV4cGxpY2l0IE11bHRpQ2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bh
bm5lci5jcHAKaW5kZXggYWM3Mjg2YWM5YTA2MGI3NTM0Y2IyZWRlOTIxZDZjYmQ3N2E5N2E4OC4u
NDBiOWQwMWRjMTg0Yjk2ZDVkZjNhYjliN2Y0MDk0NjNhOTc4MzRkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCkBAIC00MywxMSArNDMsMTEgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhbm5lcj4gUGFubmVyOjpjcmVhdGUoUGFubmluZ01vZGVsVHlwZSBtb2RlbCwgZmxv
YXQgc2FtcGxlUmF0ZSwKIAogICAgIHN3aXRjaCAobW9kZWwpIHsKICAgICBjYXNlIFBhbm5pbmdN
b2RlbFR5cGU6OkVxdWFscG93ZXI6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8
RXF1YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CisgICAgICAgIHBhbm5lciA9IG1ha2VVbmlx
dWU8RXF1YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGOgotICAgICAgICBwYW5uZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKKyAgICAgICAg
cGFubmVyID0gbWFrZVVuaXF1ZTxIUlRGUGFubmVyPihzYW1wbGVSYXRlLCBkYXRhYmFzZUxvYWRl
cik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmgKaW5kZXggY2RhNzJlOGFiM2M0Y2RjMGE4Njhm
YWFjNGYwNWNlNjFjNDQ0MDJkMC4uNDYzNWE2NzMzZWNjM2YzYTA3NTAyZmM3YTc1MDE3M2UzM2Ux
MWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1B
dWRpb0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1
ZGlvRGF0YS5oCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFBsYXRmb3JtQXVkaW9EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUF1ZGlvRGF0YSgpID0gZGVmYXVsdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24u
Y3BwCmluZGV4IGUwMjM5NGFhNWIxNDljZDE1OTY5MTJhMjU2ODFmZjVlYTQ0YWQ4ZDIuLmM4YmQ2
NGE0MWJmNjEyZTg5ZTNjMjE0ZmEyMmRjYzU5OTQ4ZTU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTEw
OSw3ICsxMDksNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1NZWRpYVNlc3Npb24+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogUGxhdGZvcm1NZWRpYVNlc3Np
b246OlBsYXRmb3JtTWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAppbmRleCAzMDQzZmM4
YTA0ZGYwZDc3YzEwYWEwMzc5YmQyNmEzOWQ0NmNlNmJhLi44YTY3NTVjNTRhZDAwYTNhODEwMTg3
NDIxNjJjY2QwNzRkZTEwZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
Yi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFJldmVyYjo6aW5pdGlhbGl6ZShBdWRpb0J1
cyogaW1wdWxzZVJlc3BvbnNlQnVmZmVyLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUmVzcG9uc2VDaGFubmVsczsgKytpKSB7CiAgICAgICAg
IEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCA9IGltcHVsc2VSZXNwb25zZUJ1ZmZlci0+Y2hhbm5lbChp
KTsKIAotICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJi
Q29udm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZvbHZl
clJlbmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcykpOworICAgICAgICBtX2NvbnZvbHZl
cnMuYXBwZW5kKG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGlj
ZVNpemUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhy
ZWFkcykpOwogCiAgICAgICAgIGNvbnZvbHZlclJlbmRlclBoYXNlICs9IHJlbmRlclNsaWNlU2l6
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCmluZGV4IDNlMjU3
NmIzNTc1N2RiYTI0NzBjOGViN2RhM2MxN2JlZWJiZmRjZWQuLjIzNGUzMWRhZWJiZDRkZGFhMzZh
MWU5MDUzMTFlYjk5MjJmYWE2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
Yi5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQnVzOwogICAgIAogLy8gTXVsdGktY2hh
bm5lbCBjb252b2x1dGlvbiByZXZlcmIgd2l0aCBjaGFubmVsIG1hdHJpeGluZyAtIG9uZSBvciBt
b3JlIFJldmVyYkNvbnZvbHZlciBvYmplY3RzIGFyZSB1c2VkIGludGVybmFsbHkuCiAKLWNsYXNz
IFJldmVyYiB7CitjbGFzcyBSZXZlcmIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGVudW0geyBNYXhGcmFtZVNpemUgPSAyNTYgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVm
ZmVyLmgKaW5kZXggNTEyYjZhZGUzNDFhMjg1Njk3MmVlM2Y3YmNiMjExNjZiYjcyMWExZi4uYTYy
ODM1ZjljMGQ3ZDc0M2M5ZTkyN2NlZGUyZDZhMWRhNDU1ODQxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgK
QEAgLTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gUmV2ZXJiQWNjdW11bGF0
aW9uQnVmZmVyIGlzIGEgY2lyY3VsYXIgZGVsYXkgYnVmZmVyIHdpdGggb25lIGNsaWVudCByZWFk
aW5nIGZyb20gaXQgYW5kIG11bHRpcGxlIGNsaWVudHMKIC8vIHdyaXRpbmcvYWNjdW11bGF0aW5n
IHRvIGl0IGF0IGRpZmZlcmVudCBkZWxheSBvZmZzZXRzIGZyb20gdGhlIHJlYWQgcG9zaXRpb24u
ICBUaGUgcmVhZCBvcGVyYXRpb24gd2lsbCB6ZXJvIHRoZSBtZW1vcnkKIC8vIGp1c3QgcmVhZCBm
cm9tIHRoZSBidWZmZXIsIHNvIGl0IHdpbGwgYmUgcmVhZHkgZm9yIGFjY3VtdWxhdGlvbiB0aGUg
bmV4dCB0aW1lIGFyb3VuZC4KLWNsYXNzIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciB7CitjbGFz
cyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcihz
aXplX3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlci5jcHAKaW5kZXggMTQ1ZGY4MWUyYTZiYTJjMmRhYTliYjQxZTZiNWNhYmFm
Mzg1ZjkxYy4uYTljOTM1YzFhMjg1YWIxMzYyZDhmZjFkZjhjZWJhNWE3ZTVhYTc3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCkBA
IC05NCw3ICs5NCw3IEBAIFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hh
bm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xpCiAKICAgICAgICAgYm9vbCB1
c2VEaXJlY3RDb252b2x2ZXIgPSAhc3RhZ2VPZmZzZXQ7CiAKLSAgICAgICAgYXV0byBzdGFnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+KHJlc3BvbnNlLCB0b3RhbFJl
c3BvbnNlTGVuZ3RoLCByZXZlcmJUb3RhbExhdGVuY3ksIHN0YWdlT2Zmc2V0LCBzdGFnZVNpemUs
IGZmdFNpemUsIHJlbmRlclBoYXNlLCByZW5kZXJTbGljZVNpemUsICZtX2FjY3VtdWxhdGlvbkJ1
ZmZlciwgdXNlRGlyZWN0Q29udm9sdmVyKTsKKyAgICAgICAgYXV0byBzdGFnZSA9IG1ha2VVbmlx
dWU8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+KHJlc3BvbnNlLCB0b3RhbFJlc3BvbnNlTGVuZ3RoLCBy
ZXZlcmJUb3RhbExhdGVuY3ksIHN0YWdlT2Zmc2V0LCBzdGFnZVNpemUsIGZmdFNpemUsIHJlbmRl
clBoYXNlLCByZW5kZXJTbGljZVNpemUsICZtX2FjY3VtdWxhdGlvbkJ1ZmZlciwgdXNlRGlyZWN0
Q29udm9sdmVyKTsKIAogICAgICAgICBib29sIGlzQmFja2dyb3VuZFN0YWdlID0gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKaW5k
ZXggNWI4MTllMWEzZTZmNGZiMWY4ZGIwYzU5Njk3MjYyYWFjMDljNmJkZS4uMzIwMGI0NWVhOGRm
N2MyMWNlNmZhMzdlMDhiYjI3OTFmOGFlNWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKQEAgLTQzLDggKzQzLDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0NoYW5uZWw7CiAKLWNsYXNzIFJldmVyYkNvbnZvbHZl
ciB7CitjbGFzcyBSZXZlcmJDb252b2x2ZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJldmVyYkNvbnZvbHZlcik7CiBwdWJs
aWM6CiAgICAgLy8gbWF4RkZUU2l6ZSBjYW4gYmUgYWRqdXN0ZWQgKGZyb20gc2F5IDIwNDggdG8g
MzI3NjgpIGRlcGVuZGluZyBvbiBob3cgbXVjaCBwcmVjaXNpb24gaXMgbmVjZXNzYXJ5LgogICAg
IC8vIEZvciBjZXJ0YWluIHR3ZWFreSBkZS1jb252b2x2aW5nIGFwcGxpY2F0aW9ucyB0aGUgcGhh
c2UgZXJyb3JzIGFkZCB1cCBxdWlja2x5IGFuZCBsZWFkIHRvIG5vbi1zZW5zaWNhbCByZXN1bHRz
IHdpdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlclN0YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlclN0YWdlLmNwcAppbmRleCAwZmRlNDIxYWYyZjgyZmQ0ODc0ZDk0ZjZhZjFkNjM0NzIz
OWM2NTZlLi40ZmY5NTNiMjYwNDkxN2QzNDUyMDM5NDA1YjY1ZGUyYmQ1YTFlYWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3Rh
Z2UuY3BwCkBAIC01NSwxNiArNTUsMTYgQEAgUmV2ZXJiQ29udm9sdmVyU3RhZ2U6OlJldmVyYkNv
bnZvbHZlclN0YWdlKGNvbnN0IGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCwKICAgICBB
U1NFUlQoYWNjdW11bGF0aW9uQnVmZmVyKTsKIAogICAgIGlmICghbV9kaXJlY3RNb2RlKSB7Ci0g
ICAgICAgIG1fZmZ0S2VybmVsID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7
CisgICAgICAgIG1fZmZ0S2VybmVsID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CiAg
ICAgICAgIG1fZmZ0S2VybmVsLT5kb1BhZGRlZEZGVChpbXB1bHNlUmVzcG9uc2UgKyBzdGFnZU9m
ZnNldCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2ZmdENvbnZvbHZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RkZUQ29udm9sdmVyPihmZnRTaXplKTsKKyAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBt
YWtlVW5pcXVlPEZGVENvbnZvbHZlcj4oZmZ0U2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
QVNTRVJUKCFzdGFnZU9mZnNldCk7CiAgICAgICAgIEFTU0VSVChzdGFnZUxlbmd0aCA8PSBmZnRT
aXplIC8gMik7CiAKLSAgICAgICAgbV9kaXJlY3RLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIpOworICAgICAgICBtX2RpcmVjdEtlcm5lbCA9IG1h
a2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihmZnRTaXplIC8gMik7CiAgICAgICAgIG1fZGlyZWN0
S2VybmVsLT5jb3B5VG9SYW5nZShpbXB1bHNlUmVzcG9uc2UsIDAsIHN0YWdlTGVuZ3RoKTsKLSAg
ICAgICAgbV9kaXJlY3RDb252b2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERpcmVjdENvbnZvbHZl
cj4ocmVuZGVyU2xpY2VTaXplKTsKKyAgICAgICAgbV9kaXJlY3RDb252b2x2ZXIgPSBtYWtlVW5p
cXVlPERpcmVjdENvbnZvbHZlcj4ocmVuZGVyU2xpY2VTaXplKTsKICAgICB9CiAgICAgbV90ZW1w
b3JhcnlCdWZmZXIuYWxsb2NhdGUocmVuZGVyU2xpY2VTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgKaW5kZXggYTA0
OTA5NzAzNDBhYjNiMzM2MDBiMDg5ZTU5ODQ3NGZiM2Q0NTVlNi4uM2MwM2JlMzQxYjNiN2Q2NDYy
MWRjODAzODE2NjkzNjBmNGRiNGM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNz
IERpcmVjdENvbnZvbHZlcjsKICAgICAKIC8vIEEgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgcmVwcmVz
ZW50cyB0aGUgY29udm9sdXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgc3ViLXNlY3Rpb24gb2YgYSBs
YXJnZSBpbXB1bHNlIHJlc3BvbnNlLgogLy8gSXQgaW5jb3Jwb3JhdGVzIGEgZGVsYXkgbGluZSB0
byBhY2NvdW50IGZvciB0aGUgb2Zmc2V0IG9mIHRoZSBzdWItc2VjdGlvbiB3aXRoaW4gdGhlIGxh
cmdlciBpbXB1bHNlIHJlc3BvbnNlLgotY2xhc3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgeworY2xh
c3MgUmV2ZXJiQ29udm9sdmVyU3RhZ2UgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIC8vIHJlbmRlclBoYXNlIGlzIHVzZWZ1bCB0byBrbm93IHNvIHRo
YXQgd2UgY2FuIG1hbmlwdWxhdGUgdGhlIHByZSB2ZXJzdXMgcG9zdCBkZWxheSBzbyB0aGF0IHN0
YWdlcyB3aWxsIHBlcmZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYklucHV0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJJbnB1dEJ1ZmZlci5oCmluZGV4IGJiMDZlNGVlZDYzM2YwZTdjNjgyZTIwZTRlNmE1NzJh
YTFmYWE5NjYuLmFmOWVkMDBkNzMzZTg0MmI2ZWQzYTY0NzQ4NTQyMGQzYzc2Nzc1MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaApA
QCAtMzQsNyArMzQsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBSZXZlcmJJbnB1dEJ1
ZmZlciBpcyB1c2VkIHRvIGJ1ZmZlciBpbnB1dCBzYW1wbGVzIGZvciBkZWZlcnJlZCBwcm9jZXNz
aW5nIGJ5IHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMuCi1jbGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciB7
CitjbGFzcyBSZXZlcmJJbnB1dEJ1ZmZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmV2ZXJiSW5wdXRCdWZmZXIoc2l6ZV90IGxl
bmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNS
ZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIu
aAppbmRleCAyZmNkODlmN2VjYTM3NTg1ODYzMWE5YjI3NjVhMTBkMjAxYjM0MWM3Li5jMTMyZjVk
OTc2MmM3NTY2YjIzMjVjMDY0YjI4ZGU4YjZlMzkwMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gU2luY1Jlc2FtcGxlciBpcyBhIGhpZ2gtcXVhbGl0eSBzYW1wbGUt
cmF0ZSBjb252ZXJ0ZXIuCiAKLWNsYXNzIFNpbmNSZXNhbXBsZXIgeworY2xhc3MgU2luY1Jlc2Ft
cGxlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAg
ICAgLy8gc2NhbGVGYWN0b3IgPT0gc291cmNlU2FtcGxlUmF0ZSAvIGRlc3RpbmF0aW9uU2FtcGxl
UmF0ZQogICAgIC8vIGtlcm5lbFNpemUgY2FuIGJlIGFkanVzdGVkIGZvciBxdWFsaXR5IChoaWdo
ZXIgaXMgYmV0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
VXBTYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaApp
bmRleCAyNjZiY2FmOTgwZDcyNmZhMmY2MzdjZmU5M2E1ZDRjMzhiMjRlZTA2Li42NzVlZTRhZDBj
NDQ2N2NkMWRkNmQxZDUxNjExZTc3Yjk4YzRjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9VcFNhbXBsZXIuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIFVwU2FtcGxlciB1cC1zYW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9y
IG9mIDJ4LgogCi1jbGFzcyBVcFNhbXBsZXIgeworY2xhc3MgVXBTYW1wbGVyIGZpbmFsIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVcFNhbXBs
ZXIoc2l6ZV90IGlucHV0QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9a
ZXJvUG9sZS5oCmluZGV4IDgzMWRlOTA5M2IwMDU2MTZiNGJkNzdlYTdiMDc3OGMzN2RhYTdiNmUu
LjAyZmZhY2Q1ZWFjYTdjZTI3NTg5MmJlOGQ2NDM5NGM3MzNkYzdkMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaApAQCAtMzMsNyArMzMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIFplcm9Qb2xlIGlzIGEgc2ltcGxlIGZpbHRlciB3aXRoIG9uZSB6ZXJv
IGFuZCBvbmUgcG9sZS4KIAotY2xhc3MgWmVyb1BvbGUgeworY2xhc3MgWmVyb1BvbGUgZmluYWwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFplcm9Qb2xlKCkK
ICAgICAgICAgOiBtX3plcm8oMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKaW5kZXggODZiNjVhMjI1M2FmMWFl
YjJhMWNhOWNhYTM2Njc4NmNkN2Q2NTUyMC4uOGE3ZTdhMDNhYzMzYTRlNTVjNDNjMzFhZWM2Mzdi
MTg5Y2IxYzdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiAKLWNsYXNzIFdl
YkF1ZGlvQnVmZmVyTGlzdCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CitjbGFzcyBXZWJB
dWRpb0J1ZmZlckxpc3QgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgewogcHVibGlj
OgogICAgIFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBXZWJBdWRpb0J1ZmZlckxpc3QoY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgdWludDMyX3Qgc2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IDViZjhmZGE2YjI5MTJiMThmMTE5MGRjYmU3
MDgyYmY2ODRiZWU5OGYuLjFhNTQ5NWZkNzY0ZDljM2NjNmVkYjU4MWZhNDgwZWFlYWQxNDU5YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTYyLDcgKzYy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246
OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
JXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBz
YW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246
OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggOGFmODc3ZWMyYzRj
YTBhYmQzMDc0ODM1ZjU0YjM0YWViZjA0MzNhMi4uNGJkZTdlNDFlMmI2NDM3Y2QwZmY3MjVlNGQw
NzlkNjhmODllN2RjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAtODAsNyArODAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1
ZGlvSU9DYWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIp
CiAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVm
KSAtIHVuaGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVS
YXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Np
b25JT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9u
SU9TLm1tCmluZGV4IGRjNmM4YmNjZTM2OWQwNmFlZGM4ZmQzMzNjNzM4YzBiZTk1NzVkZDQuLjYz
OTgyNDBiYmQ4ZDk2NzMwMmRmN2U5ZWNmZjQwNzUwMmRhNmUyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtNTks
NiArNTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKEF1ZGlvU2Vzc2lvbjo6
Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogI2VuZGlmCiAKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEF1ZGlvU2Vz
c2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKik7CiAgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5
cGUgbV9jYXRlZ29yeU92ZXJyaWRlOwpAQCAtNzEsNyArNzIsNyBAQCBBdWRpb1Nlc3Npb25Qcml2
YXRlOjpBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiopCiB9CiAKIEF1ZGlvU2Vzc2lv
bjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
U2Vzc2lvblByaXZhdGU+KHRoaXMpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9T
ZXNzaW9uUHJpdmF0ZT4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCA3NjRh
MzQ3Zjk4MjllMWU4NDc1YmQyZWExMjgwYWExNzUwMjZlY2ZjLi45ZmU2NGJhYWE0Nzg0ZmVjZGFi
M2Q2ZGRiNWUyNzgzODFlMWUwNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpj
cmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1
LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ss
IHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBs
ZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggNzdkNDMxNjU2Njk5MGU5MDFiOTIwYmY3
NzhkOTY5ZTlmMThmMTg4YS4uNDFhZmUzOWYyMzJhZTU4ODA4NjBmMDg0ZDU1NmNiNGE1ZDhhZTI1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Ft
cGxlRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgT1NTdGF0dXMgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mIGYKIHsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAot
ICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uPihmb3JtYXQpOworICAgIG1faW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOwogICAgIGlmIChtX291dHB1dERlc2Ny
aXB0aW9uKQogICAgICAgICByZXR1cm4gc2V0dXBDb252ZXJ0ZXIoKTsKIApAQCAtMTIwLDkgKzEy
MCw5IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0T3V0cHV0Rm9ybWF0KGNv
bnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYKICAgICBBU1NFUlQobV9pbnB1dERlc2NyaXB0
aW9uKTsKICAgICBBU1NFUlQoZm9ybWF0LnNhbXBsZVJhdGUoKSA+PSAwKTsKIAotICAgIG1fb3V0
cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4oZm9ybWF0KTsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKCFtX3JpbmdCdWZmZXIpCi0gICAg
ICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAg
ICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKIAogICAgIG1f
cmluZ0J1ZmZlci0+YWxsb2NhdGUoZm9ybWF0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fbWF4aW11
bVNhbXBsZUNvdW50KSk7CiAgICAgbV9zY3JhdGNoQnVmZmVyID0gQXVkaW9TYW1wbGVCdWZmZXJM
aXN0OjpjcmVhdGUobV9vdXRwdXREZXNjcmlwdGlvbi0+c3RyZWFtRGVzY3JpcHRpb24oKSwgbV9t
YXhpbXVtU2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAppbmRleCA3ZjZlZjlkMzNkYjFmYjQ3ZTdjZjE0
YzU5MDRhNDYxMTJiMTUyMjMyLi5jYzA0ZjBiZTMwOTc0OThiODM2NmU5MjQyMDczZWNlM2UxOTc1
YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
ZXNzaW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TZXNzaW9uTWFjLmNwcApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2
YXRlIHsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0
ZShzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KGlzTXV0ZWQoKSkpCisgICAg
OiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FS
aW5nQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FSaW5nQnVm
ZmVyLmgKaW5kZXggMThhMjZhYjZkYzVjOGRkMDEyNTJkYjA2NDZkNGY1YjliNDdiNmZmNS4uMDRh
Y2VmYzhkYWFkNzEzMjhhNGRkZmFiYmQwNGFmOWVjZDhlYjk1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmluZ0J1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaApAQCAtMzksNiArMzksNyBA
QCB0eXBlZGVmIHN0cnVjdCBBdWRpb0J1ZmZlckxpc3QgQXVkaW9CdWZmZXJMaXN0OwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQVJpbmdCdWZmZXJTdG9y
YWdlKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBhbGxvY2F0ZShzaXplX3QpID0gMDsK
QEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CiAgICAgdmlydHVh
bCB2b2lkKiBkYXRhKCkgPSAwOwogfTsKIAotY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rv
ciA6IHB1YmxpYyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKK2NsYXNzIENBUmluZ0J1ZmZlclN0b3Jh
Z2VWZWN0b3IgZmluYWwgOiBwdWJsaWMgQ0FSaW5nQnVmZmVyU3RvcmFnZSB7CiBwdWJsaWM6CiAg
ICAgfkNBUmluZ0J1ZmZlclN0b3JhZ2VWZWN0b3IoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAppbmRleCBiOTgwM2JmYTAyMzI0
MzU3YzBkZmUwNDczMTNkMmMzZWMzMDRjYjkyLi43YTQ3ZjU2MDhiYmI2ZGU5ZDM3NzNiMTdlOThl
NDc2NGEyNDIyMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZERlY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNv
ZGVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1
bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtl
eWVkRGVjb2RlckNGPihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERl
Y29kZXJDRj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckNGOjpLZXllZERlY29kZXJD
Rihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCAxYTYyN2VhMDBiOTJjYmFhNmNmN2Mz
NTVkNWU0NDVlYzQ4NjFhNDEyLi40NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQy
MTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3Bw
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRy
PEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJDRj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxL
ZXllZEVuY29kZXJDRj4oKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9u
YXJ5UmVmPiBjcmVhdGVEaWN0aW9uYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAppbmRleCBiNjg5MjI4MDVlNWQz
NzNkZTdmMGFlZDc4OTA4MjVhY2NjYzEyMDM5Li4wN2E0NWNhZDc4YjZkNDM3ZmFhODQyNTI2OTlj
MGQ0ODZkNzhlZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWlu
VGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
TWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lk
IHNldHVwUG93ZXJPYnNlcnZlcigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dl
ck9ic2VydmVyKiBwb3dlck9ic2VydmVyOwogICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAg
ICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFy
dFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CisgICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRTaGFyZWRUaW1lcikucmVsZWFzZSgpOwogI2VsaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBzdGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGlj
YXRpb25Ob3RpZmljYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNh
dGlvbk5vdGlmaWNhdGlvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCAxMmFi
MzIxY2I0NzcyYmU3MDAxNTAwZjE5NmY3OGI2ZWJlNWUyYmQ1Li4wNWM1NTI0ZGVmYzc3NzYxMWRm
NzVmNDliMTkxZDdmZDY5ZjQ1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAt
NjUsNyArNjUsNyBAQCBib29sIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjplbmFibGVk
KCkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6aW5pdGlhbGl6ZShjb25zdCBVUkwqIHVybCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggYWUwYmQyMDljY2Q2ZjMxN2M5MTkzMjVh
MTZhMThhOTljZDE1NzJlNC4uMGQyYTYyMTg2YjVhNTRlMmI4NTFmZjk2ZDUyODEwMWY4NDY2ZjQw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5k
bGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGU4MzY5
YzZlNTAxNmUyM2NmODczYjk1MzdkMmFmYjRmMGJjNjg1MjIuLjhmZTM4YWQwY2NlMmZkNTQyZDI5
NzAxN2ZkYTJkMWNiMzU1Yjc3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgU2Nyb2xs
Q29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywg
Y29uc3QgVmVjdG9yCiAgICAgICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+KCk7CisgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRl
ID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsKICAgICB9CiAKICAgICBp
ZiAoc25hcFBvaW50cy5pc0VtcHR5KCkgJiYgbV9zY3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRz
Rm9yQXhpcyhvdGhlclNjcm9sbEV2ZW50QXhpcyhheGlzKSkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDUwM2Y5N2I5MjAxOGRhODdjMjQ4ODkxYjIyNjc5YWJi
NzAwNWIzMDAuLjk2Yzg1MTI5MzVhYjliNjk4ZTg5ODU1MTYzYmI2ZDIyYWM5YjgyZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9yeUNsZWFyS2V5OjpjcmVhdGVDRE0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZQogI2Vsc2UKICAgICBBU1NFUlQoc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lz
dGVtKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlQ2xl
YXJLZXk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOwog
fQogCiBib29sIENETUZhY3RvcnlDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCBkNDczMDRjOTVi
MjZlZjIwNGY1ZGE0YWRjYmI4YTA4NjRkZTE4YmIzLi4wYjkxMDY0OWNhNGE0N2E5MTVkNTQ4Yzlk
OTRhZmZmMzM1MzU5MjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTQwLDYgKzQw
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNRmFjdG9yeUNsZWFyS2V5IGZp
bmFsIDogcHVibGljIENETUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBDRE1GYWN0b3J5Q2xlYXJLZXkmIHNpbmdsZXRvbigpOwogCkBA
IC01NCw2ICs1NSw3IEBAIGNsYXNzIENETUZhY3RvcnlDbGVhcktleSBmaW5hbCA6IHB1YmxpYyBD
RE1GYWN0b3J5IHsKIH07CiAKIGNsYXNzIENETVByaXZhdGVDbGVhcktleSBmaW5hbCA6IHB1Ymxp
YyBDRE1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBDRE1Qcml2YXRlQ2xlYXJLZXkoKTsKICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlQ2xlYXJLZXko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2Ft
ZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCmluZGV4IGY3MjBj
ZmQzMzQzZjliYWQzM2E0OTE5YTc4Zjg2NmY5ZDg2MmEwYWQuLjVhNmViNDA0MzllZjU5MDU3MmE3
YzI5ZWZjMzM4ZDkyZjIzOWM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQ
cm92aWRlci5tbQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdhbWVDb250cm9sbGVyR2FtZXBhZFBy
b3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIgKmNvbnRyb2xsZQogICAg
IExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29udHJvbGxlciAl
cCBhZGRlZCIsIGNvbnRyb2xsZXIpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5l
d2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgYXV0byBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1
ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKKyAgICBhdXRvIGdh
bWVwYWQgPSBtYWtlVW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJvbGxlciwgaW5k
ZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAg
IG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKaW5kZXggMTVmMDRjNzA4ZTkwMDdiYjRk
YWRlZTU0MzVjMzU3ZjAyZjUzMWM5My4uYTI1MjM0ZmI4NzVhNzUxYzYzYzM3YmE2YTVjZWU3ZDQ1
MzRkNWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWQuaApAQCAtMzYsNiArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgSElER2FtZXBhZEVsZW1lbnQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICBISURHYW1lcGFkRWxlbWVudChkb3VibGUgdGhlTWluLCBkb3VibGUgdGhlTWF4LCBJ
T0hJREVsZW1lbnRSZWYgZWxlbWVudCkKICAgICAgICAgOiBtaW4odGhlTWluKQogICAgICAgICAs
IG1heCh0aGVNYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCA1NzQzOTFiNWMxMTFhMzJiZTkx
MjVjYTZjZTA2MDBmNWQ2MzgyMjU3Li42ZDE0YjZiMjE2MTBiODZjZTRjMDAxM2U1MDkxMWI4OGY5
NWUxYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhJ
REdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAg
IExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFByb3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmlj
ZSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2Uo
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91
bmlxdWU8SElER2FtZXBhZD4oZGV2aWNlLCBpbmRleCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhJ
REdhbWVwYWQ+IGdhbWVwYWQgPSBtYWtlVW5pcXVlPEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgp
OwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1f
Z2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAppbmRleCBhNGEzMGI1
MmFiZTQ4YWY4NTBkYzdjNzQ3YTNiY2RlMWQ1MWZkYTVmLi4wZTU5NzIzMjFiNWY3M2Y1NzJiZDc5
NjU4ODExZjAwM2E5NWVkNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xh
c3MgS2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlvbmFyeSB7CiAgICAgdXNpbmcgTm9kZSA9IFZh
cmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBib29sLCB1aW50MzJfdCwgdWludDY0X3QsIGludDMyX3Qs
IGludDY0X3QsIGZsb2F0LCBkb3VibGUsIFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERpY3Rpb25h
cnk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+PjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRk
KGtleSwgc3RkOjptYWtlX3VuaXF1ZTxOb2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0K
KyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChr
ZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAgTm9k
ZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7IHJldHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KIAog
cHJpdmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGJvb2wgcmVhZFNpbXBsZVZhbHVlKFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIsIEtleWVkRGVjb2RlckdlbmUKIAogc3Rk
Ojp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJHZW5l
cmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KQpAQCAtODYsNyArODYsNyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5l
cmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIEtleWVkRW5jb2Rlckdl
bmVyaWM6OlR5cGUgdHlwZTsKICAgICBTdHJpbmcga2V5OwogCi0gICAgbV9yb290RGljdGlvbmFy
eSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAgICBtX3Jvb3REaWN0aW9uYXJ5
ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVu
ZChtX3Jvb3REaWN0aW9uYXJ5LmdldCgpKTsKIAogICAgIGJvb2wgb2sgPSB0cnVlOwpAQCAtMTQ0
LDcgKzE0NCw3IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICBpZiAoIW9rKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byogY3VycmVudERpY3RpbmFyeSA9
IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFy
eSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3
RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICAgICAgICAgIG1fZGlj
dGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAgICAgIGN1
cnJlbnREaWN0aW5hcnktPmFkZChrZXksIFdURk1vdmUobmV3RGljdGlvbmFyeSkpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xNTYsMTMgKzE1NiwxMyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpL
ZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAg
ICAgICAgICAgb2sgPSByZWFkU3RyaW5nKGRlY29kZXIsIGtleSk7CiAgICAgICAgICAgICBpZiAo
IW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9
IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0g
bWFrZVVuaXF1ZTxBcnJheT4oKTsKICAgICAgICAgICAgIG1fYXJyYXlTdGFjay5hcHBlbmQobmV3
QXJyYXkuZ2V0KCkpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQo
a2V5LCBXVEZNb3ZlKG5ld0FycmF5KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50
OiB7Ci0gICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERp
Y3Rpb25hcnk+KCk7CisgICAgICAgICAgICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVl
PERpY3Rpb25hcnk+KCk7CiAgICAgICAgICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3
RGljdGlvbmFyeS5nZXQoKSk7CiAgICAgICAgICAgICBtX2FycmF5U3RhY2subGFzdCgpLT5hcHBl
bmQoV1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
Y3BwCmluZGV4IDJmODQxMDQ3NDYzOTU1OGYyOTVlODFhNTE3MTlhODczNGIzMmQ1OGEuLjIxY2Mx
ZWJlNGE5MDFhMTNjNzQ0MDNkYzAxY2YyZmM4MTgxMzAxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXll
ZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJpYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxL
ZXllZEVuY29kZXJHZW5lcmljPigpOwogfQogCiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVu
Y29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCA3YWU2
NWM1YThkMzA5ZTNkZWVmNTNjZThjZjFlMzAyNDI2ZDI3YzE0Li4yMDhhZjdiODQ3OWVjYWVmNTUz
MGNjYzU1N2I3MzZlYmFiY2JjYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCkBAIC00NCwxNCArNDQs
MTQgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc2Nyb2xsQ2FwdHVyZVRocmVzaG9sZCB7IDE1MF9t
cyB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpj
cmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEp
OwogfQogCiBTY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3Jv
bGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxh
YmxlQXJlYSkKICAgICAsIG1fb3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAm
U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJl
ZCkKIHsKLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFu
aW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9z
aXRpb24pIHsKKyAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRp
b24pIHsKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICAgICAgICAgaWYgKG1fc21vb3Ro
QW5pbWF0aW9uKQogICAgICAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3Np
dGlvbihwb3NpdGlvbik7CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24oKQogICAgIGlmIChtX3Ntb290aEFu
aW1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9j
dXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX3Nt
b290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9s
bGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlv
bikgewogICAgICAgICB1cGRhdGVQb3NpdGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2Rl
ckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGli
LmNwcAppbmRleCBlN2RkMTkxNDA0MTcxOTY4ZjkwZDZmZWEzMzU0ZTE0Y2VmNmY1NTY3Li4zNjFl
OWRmMzI0NWJlNTY1YjBlMmE0MWRmMThiMjZmZmJjNzE5Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBL
ZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7
CiB9CiAKIEtleWVkRGVjb2RlckdsaWI6OktleWVkRGVjb2RlckdsaWIoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3NDA0YmNiZDQ0OWFhNDkyMWI4Y2UyYjdlMDE4NDQ5
NTAxMDZmNjgwLi43MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8
S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckdsaWI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
S2V5ZWRFbmNvZGVyR2xpYj4oKTsKIH0KIAogS2V5ZWRFbmNvZGVyR2xpYjo6S2V5ZWRFbmNvZGVy
R2xpYigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKaW5kZXggZjFjOTBlNTk4ODkzYWRhODM0NzlmYzdiMzgzYTkwYTUzNWJmMmE5OS4uYjJi
ZDQ3Y2IxNjE0Y2RhZTVkODllZWExN2I0MmM0Nzg2YmMyZDliMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNsZWFyVGltZXIoKQogdm9pZCBCaXRtYXBJbWFnZTo6c3Rh
cnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewogICAgIEFTU0VSVCghbV9mcmFtZVRpbWVyKTsKLSAg
ICBtX2ZyYW1lVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcElt
YWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKKyAgICBtX2ZyYW1lVGltZXIgPSBtYWtlVW5pcXVlPFRp
bWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKICAgICBtX2ZyYW1l
VGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9CiAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2RlY29kaW5n
Q2FsbGJhY2tzKQotICAgICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+KCk7CisgICAgICAgIG1fZGVjb2RpbmdDYWxs
YmFja3MgPSBtYWtlVW5pcXVlPFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4oKTsKIAogICAg
IG1fZGVjb2RpbmdDYWxsYmFja3MtPmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCmluZGV4IDBkMzU1NjE4OTcwZmIyNzdmNzJlNzg5OTBlM2Y0ZjJhMjE2ZmJj
NjkuLjM1M2ZjYTY2MDEzMjY0YjAyNDYyYTU3MTIyNGQwNWExODFkOTY4OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBUZXh0TGF5b3V0IHsKICAgICBUZXh0
TGF5b3V0KFJlbmRlclRleHQmIHRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB4
UG9zKQogICAgICAgICA6IG1fZm9udChmb250KQogICAgICAgICAsIG1fcnVuKGNvbnN0cnVjdFRl
eHRSdW4odGV4dCwgeFBvcykpCi0gICAgICAgICwgbV9jb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8Q29tcGxleFRleHRDb250cm9sbGVyPihtX2ZvbnQsIG1fcnVuLCB0cnVlKSkKKyAgICAgICAg
LCBtX2NvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb21wbGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwg
bV9ydW4sIHRydWUpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCA3MjA0NTNkOWYwNDZkNzlmNDhhMDliODFhZjcw
MDBmNGRlM2JlMDI1Li5jZWZkOGQ0MjI0NGQwNmZjYjgyNGJlNWUzYjczNDE5Y2Q0OThhNGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCkBAIC02
Myw2ICs2Myw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50U2l6ZTsKIAogY2xhc3MgRmxv
YXRQb2ludCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmxv
YXRQb2ludCgpIHsgfQogICAgIEZsb2F0UG9pbnQoZmxvYXQgeCwgZmxvYXQgeSkgOiBtX3goeCks
IG1feSh5KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5k
ZXggMTg0YjQ0YjA3YTQxMjIxNmI5ZWM1OTg0MjJmMDc4N2YwZTZjN2FlYi4uZTBiNDlmMjQ3YzIw
MDliZGQ1ZjFkMGM4ZWJhN2FkNmM3ZWI4Y2JkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKQEAgLTM5NCw3ICszOTQsNyBAQCBHbHlwaERhdGEgRm9udDo6Z2x5
cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKSBjb25zdAogYXV0byBGb250Ojpl
bnN1cmVEZXJpdmVkRm9udERhdGEoKSBjb25zdCAtPiBEZXJpdmVkRm9udHMmCiB7CiAgICAgaWYg
KCFtX2Rlcml2ZWRGb250RGF0YSkKLSAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPERlcml2ZWRGb250cz4oKTsKKyAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBt
YWtlVW5pcXVlPERlcml2ZWRGb250cz4oKTsKICAgICByZXR1cm4gKm1fZGVyaXZlZEZvbnREYXRh
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggMmU1OGJk
NjllYmI1MzkxZTAzNmQyOGMyNzAyYzFmNDUwNTA4YjMxMi4uNTQ0YjBiNzExOGFiMmY5MDgwNzQ5
ZTQ0MWU1MTQ5ZjA1MThmMmUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaApAQCAtMjY5LDkgKzI2OSw3IEBAIGNsYXNzIEZvbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxG
b250PiB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBEZXJpdmVkRm9udHMgewotI2lmICFDT01QSUxF
UihNU1ZDKQotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSNlbmRpZgorICAgICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogCiAgICAgICAg
IFJlZlB0cjxGb250PiBzbWFsbENhcHNGb250OwpAQCAtMzQ1LDcgKzM0Myw3IEBAIEFMV0FZU19J
TkxJTkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAog
CiAgICAgYm91bmRzID0gcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChnbHlwaCk7CiAgICAgaWYgKCFt
X2dseXBoVG9Cb3VuZHNNYXApCi0gICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7CisgICAgICAgIG1fZ2x5cGhU
b0JvdW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7CiAg
ICAgbV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRyaWNzRm9yR2x5cGgoZ2x5cGgsIGJvdW5kcyk7
CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDBhNjJhMjc1YmM2OTJlZjM5OTExNDBlMDI4ZjU4MDA0
MjFkMGM3MTEuLjM3MDliNDFlYjJiN2JkMGJmN2IxMDJhYzVkYmVmZTJmNzc3M2FmMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMjQ0
LDcgKzI0NCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBs
YXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvCiAgICAgICAgICAgICAgICAgaXQg
PSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5maW5kKGtleSk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGl0ICE9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgpLmVuZCgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpCi0gICAgICAgICAgICAgICAg
ICAgIGl0LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQ
bGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaXQtPnZh
bHVlID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZvckFs
dGVybmF0ZU5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDcyNzRk
YjBkYjMyYjNiNDFiM2UwZTFiMWVkMGZiMmFlYThiMzZhM2IuLjY0ODE4ZjRiNTE1NWQ0MmJmYWM4
MWI2MWY0YjVmOWNkZWE1NDUyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgUmVmPEZv
bnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2FzY2Fk
ZURlc2NyaXB0aQogICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Zm9u
dHMuZ2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRy
eT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250U2Vs
ZWN0b3IpKSk7CisgICAgbmV3RW50cnkgPSBtYWtlVW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRy
eT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGTW92ZShmb250U2Vs
ZWN0b3IpKSk7CiAgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGdseXBocyA9IG5ld0VudHJ5LT5m
b250cy5nZXQoKTsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQcnVu
ZUludGVydmFsID0gNTA7CkBAIC0zMjYsOSArMzI2LDkgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihH
cmEKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBk
aXNwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Pigp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlM
aXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CiAgICAgR3JhcGhp
Y3NDb250ZXh0IHJlY29yZGluZ0NvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxp
c3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0
OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlzcGxheUxpc3QsIGNvbnRleHQuc3Rh
dGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsICpkaXNw
bGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkp
OwogICAgIH0pOwogICAgIAogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChzdGFydFgsIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVG
b250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZv
bnRzLmNwcAppbmRleCBkYjc0MzAyZTlkYWE0ZWI1MmMwY2UwODFmZDU2MDUyNzk1NzhmYmY0Li4x
MmFjODM3ZmNkMjQ2NWY5ZjgxZGViMDY4N2FhNzc2ZDVlYTA2NDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcApAQCAt
ODQsNyArODQsNyBAQCB2b2lkIEZvbnRDYXNjYWRlRm9udHM6OkdseXBoUGFnZUNhY2hlRW50cnk6
OnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYQogewogICAgIEFTU0VSVCghZ2x5
cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlcikuZ2x5cGgpOwogICAgIGlmICghbV9taXhlZEZv
bnQpIHsKLSAgICAgICAgbV9taXhlZEZvbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1peGVkRm9udEds
eXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKKyAgICAgICAgbV9taXhlZEZvbnQgPSBtYWtl
VW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKICAgICAgICAg
bV9zaW5nbGVGb250ID0gbnVsbHB0cjsKICAgICB9CiAgICAgbV9taXhlZEZvbnQtPnNldEdseXBo
RGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGdseXBoRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDI1OWU5NzUz
M2NhZWRjZmMxNDVmZjdhYjQyOGVhMTY5ZjY0YjE1OTQuLjc5ZTJmNTM4OGM0NmU1ODkyMzAxNjFj
NDc0NTI1NDE5MjQ3ZTgyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCB0ZW1wbGF0ZTxj
bGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NNYXA8VD46OkdseXBoTWV0cmljc1BhZ2UmIEds
eXBoTWV0cmljc01hcAogICAgIH0KIAogICAgIGlmICghbV9wYWdlcykKLSAgICAgICAgbV9wYWdl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1l
dHJpY3NQYWdlPj4+KCk7CisgICAgICAgIG1fcGFnZXMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8aW50
LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+PigpOwogCiAgICAgYXV0byYgcGFn
ZSA9IG1fcGFnZXMtPmVuc3VyZShwYWdlTnVtYmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVua25vd25NZXRyaWNzKCkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygpKTsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuICpwYWdlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0
MDhjZmI3ZDFlMmRiOThmN2FkYzgzYmJjMzNiODFiOWFmMTIxYjBjLi40NDdkN2UzZTM1NDc2MmU4
MGI4ZjI3YTk1MjYyMzIyNzliNWY5MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTU3LDYgKzU1Nyw3IEBAIGNsYXNz
IEdyYXBoaWNzQ29udGV4dCB7CiAgICAgYm9vbCBzaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKCkg
Y29uc3Q7CiAKICAgICBjbGFzcyBXaW5kb3dzQml0bWFwIHsKKyAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbmRvd3NCaXRtYXAp
OwogICAgIHB1YmxpYzoKICAgICAgICAgV2luZG93c0JpdG1hcChIREMsIGNvbnN0IEludFNpemUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggMWI0MjI4NmRkZjQ2NWMwZTJiMTI0ZDhhZmRm
MGY3Y2Q2NDc3Y2JiNy4uZTMzZjhmYmU3Mzg5MmUzNGI4ZGVmODM2ZDQ2ZjVjNzBjNzljNjFkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQml0bWFwVGV4dHVyZUdMOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCosIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSk7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCmluZGV4IDBiYWQ0ZTcwNjM0MjE5OTg2ODk0NDkyZGZlNmY2MWQzMTc4ODE5ZDMuLmI4NzMx
OTRlZTI0NjAxZmU0ZTA3MTQ3YWE3MWVhMzA1ODdhODRhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTMw
LDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0
SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoR3JhcGhpY3NDb250ZXh0SW1wbCk7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0
SW1wbChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTRhYWMxZGY4MzU2YmRiMTBkZjdkMDg2ZmFj
ZTI2YzFlMzcxODMyNi4uNmNkMDBjMjY1NzBkOWRiM2I5ZmFhN2UyMDIzYWYxYTVlN2U2M2EwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXI6OnN1cHBvcnRzQ29u
dGVudHNUaWxpbmcoKQogI2VuZGlmCiAKIC8vIFNpbmdsZXRvbiBjbGllbnQgdXNlZCBmb3IgbGF5
ZXJzIG9uIHdoaWNoIGNsZWFyQ2xpZW50IGhhcyBiZWVuIGNhbGxlZC4KLWNsYXNzIEVtcHR5R3Jh
cGhpY3NMYXllckNsaWVudCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKK2NsYXNzIEVt
cHR5R3JhcGhpY3NMYXllckNsaWVudCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgRW1w
dHlHcmFwaGljc0xheWVyQ2xpZW50JiBzaW5nbGV0b24oKTsKQEAgLTM0Myw3ICszNDMsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbWF0cml4KQogICAgIGlmIChtX3RyYW5zZm9ybSkKICAgICAgICAgKm1fdHJhbnNmb3JtID0g
bWF0cml4OwogICAgIGVsc2UKLSAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAgICBtX3RyYW5zZm9ybSA9IG1h
a2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBHcmFwaGljc0xheWVyOjpjaGlsZHJlblRyYW5zZm9ybSgpIGNvbnN0
CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogICAgIGlmIChtX2NoaWxk
cmVuVHJhbnNmb3JtKQogICAgICAgICAqbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1hdHJpeDsKICAg
ICBlbHNlCi0gICAgICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAgICBtX2NoaWxkcmVuVHJhbnNmb3Jt
ID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKIH0KIAogdm9pZCBH
cmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYgbGF5ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgK
aW5kZXggMDA5ZDQ4Njg5NWQ1Njg2MjU0MDExZGY1NjAwYTcyMTEyNDMwZTYyZi4uN2ExZmVhYWM3
OWU3OGJhODhmY2FkY2I4NWUzMjk5ZmQ3OWEwMDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIGNs
YXNzIEZsb2F0QW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVl
PigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+
KCp0aGlzKTsKICAgICB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWU7IH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSA6
IHB1YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9u
VmFsdWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQog
CiAgICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWUmIG90aGVyKQpAQCAtMTYzLDcgKzE2Myw3IEBAIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVl
IDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRp
b25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAg
ICBGaWx0ZXJBbmltYXRpb25WYWx1ZShjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgb3RoZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggOGVjZjMz
Zjg5OGI3NDQ5MTFmNzA1YTE0OWZmNzg4YjY3YjZkOTRlZi4uMzk5OTY3MmI5ZjU4OTMyODZjZjMy
ZGIxY2M2YjgwYTMzMTgyYWRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgSW1hZ2U6OmNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljCiB2
b2lkIEltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KCkKIHsKICAgICBpZiAoIW1f
YW5pbWF0aW9uU3RhcnRUaW1lcikKLSAgICAgICAgbV9hbmltYXRpb25TdGFydFRpbWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3RhcnRBbmltYXRpb24pOworICAg
ICAgICBtX2FuaW1hdGlvblN0YXJ0VGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJklt
YWdlOjpzdGFydEFuaW1hdGlvbik7CiAgICAgaWYgKG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+aXNB
Y3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+c3Rh
cnRPbmVTaG90KDBfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9MZWdhY3lDRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9MZWdhY3lDRE1TZXNzaW9uLmgKaW5kZXggYmU3Njc2MGY4ZTM1NjVkNDI2NzJiMDA1YTk2ZGNk
YjdmYTRiMmQ2OS4uMjVlNzlhNmRjMGE1YjIxOTNhNzJhMjI3YWFjYTE3NzNhN2UzYzI4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Np
b24uaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0OwogICAg
IHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9u
VVJMKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKaW5kZXggNzU3ZjA5NTY3ZGM1ZGZkZjViZTAyNjM5NjM5ZDFlZmVjNzE4YzBkYi4u
YWJlODY5NDE5NGZmN2MxNzUxMDBiNjk4ODA0YTEyNDBiZDYyYzg0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIGNsYXNzIE51bGxNZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gMDsgfQotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1l
UmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZv
cm1UaW1lUmFuZ2VzPigpOyB9CiAKICAgICBkb3VibGUgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1v
ZGlmaWVkVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGl2ZVVw
ZGF0ZUludGVydmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQpAQCAtMzU1LDcgKzM1NSw3
IEBAIFJlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXllckNsaWVu
dCYgY2xpZW50KQogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiBj
bGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxvYWRUaW1lcigqdGhp
cywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQotICAgICwgbV9wcml2YXRlKHN0ZDo6
bWFrZV91bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3ByaXZh
dGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKIHsKIH0KIApAQCAt
NTExLDcgKzUxMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5l
KGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICNlbmRpZgogICAgICAgICBtX3By
aXZhdGUtPmxvYWQobV91cmwuc3RyaW5nKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcHJp
dmF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcyk7Cisg
ICAgICAgIG1fcHJpdmF0ZSA9IG1ha2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhp
cyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCh0aGlzKTsKICAg
ICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCh0aGlzKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oCmluZGV4IDAwZDg1YTQ5OTY0MmIzZjUyMzdiMzBiZmY1ZjRlNmI0MjkxMzBl
Y2QuLjFkMmZjMDA5MjA0YThjMDI1NTQxYjJhMmQ3YzVmMGQwYmU1Yzk5Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CkBAIC0xMjksNyArMTI5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsK
ICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpID09
IE1lZGlhVGltZTo6emVyb1RpbWUoKSA/IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFu
Z2VzPigpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGlt
ZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9CisgICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpID8gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7IH0KICAg
ICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAg
ICB2aXJ0dWFsIE1lZGlhVGltZSBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtYXhUaW1lU2Vla2FibGUoKSk7IH0KICAgICB2
aXJ0dWFsIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCmlu
ZGV4IDNlNjg4MDU1YmRjYzBiMTBlNDE2MGNmMTQwZDRmYWNlOTIzMjBhNjUuLjVhZDkzMzQ5YmZi
NDBkYTRmZjMwOGFkYTk4NDk3ZmMzNzVlMTA4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEZs
b2F0UG9pbnRHcmFwaDo6Tm9kZSogRmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2RlKEZs
b2F0UG9pbnQgcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gdGVzdE5vZGUuZ2V0KCk7CiAgICAg
fQogCi0gICAgbV9hbGxOb2Rlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFBvaW50R3Jh
cGg6Ok5vZGU+KHBvaW50KSk7CisgICAgbV9hbGxOb2Rlcy5hcHBlbmQobWFrZVVuaXF1ZTxGbG9h
dFBvaW50R3JhcGg6Ok5vZGU+KHBvaW50KSk7CiAgICAgcmV0dXJuIG1fYWxsTm9kZXMubGFzdCgp
LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNw
cAppbmRleCA5ZGNlZTg3NjE2MjVjMDE0ODhiNGQ5MGQxYWYyMmUzNTQzNWQ0YTVlLi42YTcwMWMx
YTEyODk3OWQ0Yzk0OGIxYTdiYWI1NjhmMTAyNDdjZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIFJlZ2lv
bjo6c2V0U2hhcGUoU2hhcGUmJiBzaGFwZSkKICAgICB9CiAKICAgICBpZiAoIW1fc2hhcGUpCi0g
ICAgICAgIG1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBlKSk7
CisgICAgICAgIG1fc2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBlKSk7CiAg
ICAgZWxzZQogICAgICAgICAqbV9zaGFwZSA9IFdURk1vdmUoc2hhcGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCA3OTYzM2ZkYjZhZGYzNGZmZmVl
OGY4MjY3NDgzYjhjZmY1Y2UxZjNjLi5iYzM5YzMwMDAwZWE4YjZiNWE5ZTYwY2YyYmM1YWUxODY2
NjRiNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaApAQCAt
OTEsNiArOTEsNyBAQCBjbGFzcyBSZWdpb24gewogICAgIH07CiAKICAgICBjbGFzcyBTaGFwZSB7
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
U2hhcGUoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFNoYXBlKGNvbnN0IEludFJlY3QmKTsKQEAgLTE0
OCw3ICsxNDksNyBAQCBjbGFzcyBSZWdpb24gewogICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNoYXBlJiwgY29uc3QgU2hhcGUmKTsKICAgICB9OwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPFNoYXBlPiBjb3B5U2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlID8gc3RkOjpt
YWtlX3VuaXF1ZTxTaGFwZT4oKm1fc2hhcGUpIDogbnVsbHB0cjsgfQorICAgIHN0ZDo6dW5pcXVl
X3B0cjxTaGFwZT4gY29weVNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IG1ha2VVbmlx
dWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7IH0KICAgICB2b2lkIHNldFNoYXBlKFNoYXBl
JiYpOwogCiAgICAgSW50UmVjdCBtX2JvdW5kczsKQEAgLTI4OSw3ICsyOTAsNyBAQCBPcHRpb25h
bDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGRlY29k
ZXIgPj4gc2hhcGU7CiAgICAgICAgIGlmICghc2hhcGUpCiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgICAgICByZWdpb24ubV9zaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hh
cGU+KFdURk1vdmUoKnNoYXBlKSk7CisgICAgICAgIHJlZ2lvbi5tX3NoYXBlID0gbWFrZVVuaXF1
ZTxTaGFwZT4oV1RGTW92ZSgqc2hhcGUpKTsKICAgICB9CiAKICAgICByZXR1cm4geyByZWdpb24g
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFj
a1JlcHJlc2VudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcAppbmRleCAxZTRlN2ZhYzM2YzdjMzBhNjU2ZjFlZmQw
MGFhY2U2ZDRjOTVjZWRhLi42OTM5ZjkxN2FlNmZhYjEzZWMxYzkxZDRhYTgxNTU2NmE5MTcwZGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tS
ZXByZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIE51bGxU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbiA6IHB1YmxpYyBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbiB7
CiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVw
cmVzZW50YXRpb246OmNyZWF0ZShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WZWxvY2l0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9j
aXR5RGF0YS5oCmluZGV4IDdhZWI3NTliMzRiMThhMWU4NDY4M2YyOWM2MTZhNmNkYjAyNTc0ZDgu
LjZhMDZjYzZlYmEzNGI5NTlkMmYxODYwMjI5ZTFmMmYzOGZmMzE5MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCkBAIC02NSw2ICs2NSw3
IEBAIHN0cnVjdCBWZWxvY2l0eURhdGEgIHsKIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFZlbG9jaXR5RGF0YSYpOwogCiBjbGFzcyBIaXN0
b3JpY2FsVmVsb2NpdHlEYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBIaXN0b3JpY2FsVmVsb2NpdHlEYXRhKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQz
REFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBo
aWNzQ29udGV4dDNEQU5HTEUuY3BwCmluZGV4IDc3YTNlMThjMWM2YzJlMjdkZDYzYWUyOTZmNmVj
OWExZWEyZmFlMWYuLjYxMjYwZTljODNkYzRhNTUyODU3MWM5OWQ0YTI3MDViMTZjYTRlMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dDNEQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5z
aW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFt
X2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0
ZW5zaW9uczNEQU5HTEU+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0
ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNEQU5HTEU+KHRoaXMsIGlzR0xFUzJDb21w
bGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCmluZGV4IGE5ZWNkMzIxMzZkYTg3NzAy
ZjQ3OGFmY2Q4YWNjOGViOTdjMjM5NDAuLjk5ZGRkZDhmODUwMjczMDNiYjhhNzYzZWNhYzJiODY5
ODgyZmE5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGwuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakM7CiAKIGNsYXNzIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwoQVZQbGF5ZXJJdGVtVHJhY2sqKTsKICAgICBleHBsaWNp
dCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWQXNzZXRUcmFjayopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IDVjZDc3NzJhYzJl
ZTFjZWE5MDEwZTgzMzcxZWE2YWFlZjdmMDY5NTguLjZiM2M5MjJlNmFlYmU1OTIwYWU2NWU1N2Fm
MDVlZGU0YWQwMzc0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakMubW0KQEAgLTMxMywxMiArMzEzLDEyIEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakM6OnByZXBhcmUoQ01JdGVtQ291bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0
cmVhCiB7CiAgICAgQVNTRVJUKG1heEZyYW1lcyA+PSAwKTsKIAotICAgIG1fdGFwRGVzY3JpcHRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nl
c3NpbmdGb3JtYXQpOworICAgIG1fdGFwRGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCpwcm9jZXNzaW5nRm9y
bWF0KTsKICAgICBpbnQgbnVtYmVyT2ZDaGFubmVscyA9IHByb2Nlc3NpbmdGb3JtYXQtPm1DaGFu
bmVsc1BlckZyYW1lOwogICAgIGRvdWJsZSBzYW1wbGVSYXRlID0gcHJvY2Vzc2luZ0Zvcm1hdC0+
bVNhbXBsZVJhdGU7CiAgICAgQVNTRVJUKHNhbXBsZVJhdGUgPj0gMCk7CiAKLSAgICBtX291dHB1
dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24+KCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsKICAgICBtX291dHB1dERl
c2NyaXB0aW9uLT5tU2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CiAgICAgbV9vdXRwdXREZXNjcmlw
dGlvbi0+bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOwogICAgIG1fb3V0cHV0RGVz
Y3JpcHRpb24tPm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNr
ZWQ7CkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6
cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEKICAgICAvLyBN
YWtlIHRoZSByaW5nYnVmZmVyIGxhcmdlIGVub3VnaCB0byBzdG9yZSBhdCBsZWFzdCB0d28gY2Fs
bGJhY2tzIHdvcnRoIG9mIGF1ZGlvLCBvciAxcywgd2hpY2hldmVyIGlzIGxhcmdlci4KICAgICBz
aXplX3QgY2FwYWNpdHkgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxzaXplX3Q+KDIgKiBtYXhGcmFt
ZXMpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGtSaW5nQnVmZmVyRHVyYXRpb24gKiBzYW1wbGVSYXRl
KSk7CiAKLSAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4o
KTsKKyAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKICAgICBt
X3JpbmdCdWZmZXItPmFsbG9jYXRlKENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbigqcHJvY2Vzc2lu
Z0Zvcm1hdCksIGNhcGFjaXR5KTsKIAogICAgIC8vIEF1ZGlvQnVmZmVyTGlzdCBpcyBhIHZhcmlh
YmxlLWxlbmd0aCBzdHJ1Y3QsIHNvIGNyZWF0ZSBvbiB0aGUgaGVhcCB3aXRoIGEgZ2VuZXJpYyBu
ZXcoKSBvcGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
aW5kZXggMzYxYTk5MmYwYzQ2NTBjZjJiOTYyOGE2NDJlOTdiNWRiYTBlMmEzYy4uNGZjNjc4N2Rk
OGQ5MDdjYWQ2YTI3N2YzOWIxZWQzMmVkNjc5YTZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC0yMzQsNyArMjM0LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PENETVByaXZhdGU+IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6Y3JlYXRlQ0RNKGNvbnN0
IFN0cmluZyYKICAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZz4oKTsKIH0KIAogYm9vbCBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1p
bmc6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCA4OTE4ZTgwZTBjMzkwZDdlOGRhY2Ex
OTAzOTQ3OWEwZDBmNjk1YWQ4Li41Mzg2OTY5Zjk0OTc2ZjM4MzY4MDE4NzQxYmFmZDEyNTUxZTI4
Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtMzUsNiAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRm91ckNDOwogCiBjbGFzcyBDRE1G
YWN0b3J5RmFpclBsYXlTdHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIENETUZhY3RvcnlG
YWlyUGxheVN0cmVhbWluZyYgc2luZ2xldG9uKCk7CiAKQEAgLTQ5LDYgKzUwLDcgQEAgY2xhc3Mg
Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENETUZhY3Rvcnkgewog
fTsKIAogY2xhc3MgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDogcHVibGljIENE
TVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZygpOwogICAgIHZpcnR1YWwgfkNETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKaW5kZXggNGE1MGViNDFhNTgzNjgzZjY2YTY3NjIyOTU0NmM1ODAxYjIw
YjU4OC4uZDgxYmNhMzU0OTAzOTE4YTFiZGEwYWRkZDk1OGQ1OTQzZjcwMWIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zNyw2
ICszNyw3IEBAIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakM7CiAKIGNsYXNzIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgOiBwdWJsaWMgQ0RN
UHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhMZWdhY3lDRE0qIGNk
bSkKICAgICAgICAgOiBtX2NkbShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjYzA4YTlhM2I1MWNiZjdhYjE5NzQyMDJh
OThiMTY5ZGI0M2MxMDEuLjBjZDAxMjlhM2NkOWVhZjg2M2FkNDc4OTgzODUwMzFkOGI3NmVmNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCkBAIC0xNDcsMTAgKzE0NywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lv
bj4gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbihMZQogI2VuZGlm
CiAgICAgCiAgICAgaWYgKHNob3VsZFVzZUFWQ29udGVudEtleVNlc3Npb24gJiYgQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHNlc3Npb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBh
cmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwg
KnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMp
LCBwYXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7CiAgICAgZWxzZQog
I2lmIEhBVkUoQVZTVFJFQU1TRVNTSU9OKQotICAgICAgICBzZXNzaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUo
KS5wcm90b2NvbHMpLCAqdGhpcywgY2xpZW50KTsKKyAgICAgICAgc2Vzc2lvbiA9IG1ha2VVbmlx
dWU8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCku
cHJvdG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CiAjZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNz
aEJveC5oCmluZGV4IGU0NjAxNDgzMDVjZWVkMWI1NjQ4NDE5OTZjYjlmYzM0Y2RjM2FiNTIuLjE0
N2MzNzlmMTI3MDY4MmU1NWZkMjE1Y2UyM2EzOWVhMTI0OTVhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVh
bWluZ1Bzc2hCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKQEAgLTMwLDcgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0luZm9Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJm
cHNpIjsgfQogCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nSW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKICAgICBGb3VyQ0MgbV9z
Y2hlbWU7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tl
eVJlcXVlc3RJbmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJ
U09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyBy
ZXR1cm4gImZrcmkiOyB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94
IHsKICAgICBLZXlJRCBtX2tleUlEOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggZmluYWwgOiBwdWJs
aWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyBy
ZXR1cm4gImZrYWkiOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlBc3NldElkQm94IDogcHVibGljIElTT0JveCB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IG1fZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0Zh
aXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IGZpbmFsIDogcHVi
bGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsg
cmV0dXJuICJma2N4IjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhOyB9CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAg
IFZlY3Rvcjx1aW50OF90PiBtX2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09G
YWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IGZp
bmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBl
TmFtZSgpIHsgcmV0dXJuICJma3ZsIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiB2ZXJz
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbnM7IH0KQEAgLTg4LDcgKzg4LDcgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6
IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBtX3ZlcnNpb25zOwogfTsKIAot
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IDog
cHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWlu
Z0tleVJlcXVlc3RCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2siOyB9CiAKQEAgLTEwNiw3ICsx
MDYsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVl
c3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBPcHRpb25hbDxJU09GYWlyUGxheVN0cmVhbWlu
Z0tleVZlcnNpb25MaXN0Qm94PiBtX3ZlcnNpb25MaXN0OwogfTsKIAotY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCA6IHB1YmxpYyBJU09Cb3ggewor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCBmaW5h
bCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5h
bWUoKSB7IHJldHVybiAiZnBzZCI7IH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94
IHsKICAgICBWZWN0b3I8SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94PiBtX3JlcXVl
c3RzOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3No
Qm94IDogcHVibGljIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggZmluYWwgOiBwdWJs
aWMgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBmYWlyUGxheVN5c3RlbUlEKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAK
aW5kZXggODU3ZjMxZjI3NzJmNDA4MWZiYTYzOGY4MTBjMTE0OTQyODU4Yjk0Yi4uNTljZjhiYTIx
MzE2YjMwN2MwNTAyM2VkNTZkOWIzOWQyNTYxN2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM4NCw3ICszODQs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgYwogICAgIGlmICghbV9jYWNoZWRMb2FkZWRUaW1l
UmFuZ2VzKQogICAgICAgICBtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMgPSBwbGF0Zm9ybUJ1ZmZl
cmVkVGltZVJhbmdlcygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpOwogfQog
CiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjptYXhNZWRpYVRpbWVT
ZWVrYWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFu
YWdlck1hYy5jcHAKaW5kZXggMzk1Y2U3ODJlOGM1ODA0NTk2MTYyNDY5ODBmMzNlYWRmMDNiNzhi
Mi4uNWY1YjZmNjk1MmI0OTNhOTg4N2JhZmM3ZjMwYjdiZWU3MzM0MTVlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAtNDksNyArNDks
NyBAQCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp+V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1h
YygpID0gZGVmYXVsdDsKIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXImIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnBsYXRmb3JtUGlja2VyKCkKIHsKICAgICBpZiAoIW1fdGFy
Z2V0UGlja2VyKQotICAgICAgICBtX3RhcmdldFBpY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRoaXMpOworICAgICAgICBtX3RhcmdldFBpY2tl
ciA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRoaXMpOwogCiAg
ICAgcmV0dXJuICptX3RhcmdldFBpY2tlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaAppbmRleCA3NjA4YTAxNzI2M2IzMDQ0NGNh
YmU1MzVmZGE0NGM5OWZmYWYxMWYyLi5kNjE2N2I4NzY4OTk5ZGMwNDk0NzUzODIwZDlhMmJjN2Jl
ZDA2NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRp
b25DRi5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogCiBjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0YgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGll
bnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYWYwYTdjYzc3YmYyOTJjZGZkNjZhYmM2ZTdm
NjNhNTA5MDBhYWQ2Ny4uM2I3MGU3NjYzOWU1OTQwYWYxZjJiMWQ1YmYyNjczYWUzMmRlY2ExMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC05OCw2ICs5OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7
CiBjbGFzcyBMYXllckNsaWVudDsKIAogY2xhc3MgQVZGV3JhcHBlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQVZGV3JhcHBlcihNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRiopOwogICAgIH5BVkZXcmFwcGVyKCk7CkBAIC0yMTMsNiArMjE0LDcg
QEAgY2xhc3MgQVZGV3JhcHBlciB7CiB1aW50cHRyX3QgQVZGV3JhcHBlcjo6c19uZXh0QVZGV3Jh
cHBlck9iamVjdElEOwogCiBjbGFzcyBMYXllckNsaWVudCA6IHB1YmxpYyBQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExh
eWVyQ2xpZW50KEFWRldyYXBwZXIqIHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHsgfQogICAg
IHZpcnR1YWwgfkxheWVyQ2xpZW50KCkgeyBtX3BhcmVudCA9IDA7IH0KQEAgLTM0Myw3ICszNDUs
NyBAQCBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxMb2FkZXJEZWxlZ2F0ZVF1ZXVlKCkK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJs
ZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRj4ocGxheWVy
KTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJu
IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0s
CiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCBz
dXBwb3J0c0tleVN5c3RlbSk7CiB9CiAKQEAgLTY3Miw3ICs2NzQsNyBAQCBzdGF0aWMgYm9vbCB0
aW1lUmFuZ2VJc1ZhbGlkQW5kTm90RW1wdHkoQ01UaW1lIHN0YXJ0LCBDTVRpbWUgZHVyYXRpb24p
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0g
ICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7CiAKICAgICBpZiAoIWF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1
cm4gdGltZVJhbmdlczsKQEAgLTExMzcsNyArMTEzOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdh
Y3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlU2Vz
c2lvCiAgICAgaWYgKCFrZXlTeXN0ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25B
VkZvdW5kYXRpb25DRj4oKnRoaXMsIGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsKIH0KIAogI2VsaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC0xNjQxLDYgKzE2NDMsNyBAQCB2b2lkIEFWRldy
YXBwZXI6OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2soQVZDRlBsYXllclJlZiwgQ01UaW1l
IGNtVGltZSwgdm9pZAogfQogCiBzdHJ1Y3QgTm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhIHsKKyAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBtX3Byb3BlcnR5TmFtZTsKICAgICB2b2lkKiBtX2NvbnRleHQ7CiAKQEAgLTE3MDgsNyAr
MTcxMSw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmlj
YXRpb25DZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDCiAgICAgTE9HKE1lZGlhLCAiQVZGV3Jh
cHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soaWY9JWQpICVzIiwgcmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KG9ic2VydmVyKSwgbm90aWZpY2F0aW9uTmFtZSk7CiAjZW5kaWYKIAotICAgIGF1
dG8gbm90aWZpY2F0aW9uRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uQ2FsbGJh
Y2tEYXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbkRh
dGEgPSBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4ocHJvcGVydHlOYW1lLCBv
YnNlcnZlcik7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIG5vdGlmaWNhdGlvbkRhdGEucmVsZWFzZSgpLCBwcm9jZXNzTm90aWZpY2F0aW9uKTsKIH0K
QEAgLTE3ODUsNiArMTc4OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6c2Vla1RvVGltZShjb25zdCBN
ZWRpYVRpbWUmIHRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlCiAKICNpZiBIQVZF
KEFWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApICYmIEhBVkUoQVZGT1VOREFUSU9O
X0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQpCiBzdHJ1Y3QgTGVnaWJsZU91dHB1dERhdGEgeworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gbV9hdHRyaWJ1dGVkU3RyaW5nczsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbV9zYW1w
bGVzOwogICAgIE1lZGlhVGltZSBtX3RpbWU7CkBAIC0xODMzLDcgKzE4MzcsNyBAQCB2b2lkIEFW
RldyYXBwZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBBVkNGUGxheWVy
SXRlbUxlZ2libGVPdXRwdQogCiAgICAgQVNTRVJUKGxlZ2libGVPdXRwdXQgPT0gc2VsZi0+bV9s
ZWdpYmxlT3V0cHV0KTsKIAotICAgIGF1dG8gbGVnaWJsZU91dHB1dERhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExlZ2libGVPdXRwdXREYXRhPihhdHRyaWJ1dGVkU3RyaW5ncywgbmF0aXZlU2FtcGxl
QnVmZmVycywgUEFMOjp0b01lZGlhVGltZShpdGVtVGltZSksIGNvbnRleHQpOworICAgIGF1dG8g
bGVnaWJsZU91dHB1dERhdGEgPSBtYWtlVW5pcXVlPExlZ2libGVPdXRwdXREYXRhPihhdHRyaWJ1
dGVkU3RyaW5ncywgbmF0aXZlU2FtcGxlQnVmZmVycywgUEFMOjp0b01lZGlhVGltZShpdGVtVGlt
ZSksIGNvbnRleHQpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBsZWdpYmxlT3V0cHV0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NDdWUpOwogfQpAQCAt
MTg0MSw2ICsxODQ1LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2so
dm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxlT3V0cHUKIAogI2lmIEhBVkUoQVZG
T1VOREFUSU9OX0xPQURFUl9ERUxFR0FURSkKIHN0cnVjdCBMb2FkUmVxdWVzdERhdGEgeworICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZXRhaW5QdHI8QVZDRkFzc2V0
UmVzb3VyY2VMb2FkaW5nUmVxdWVzdFJlZj4gbV9yZXF1ZXN0OwogICAgIHZvaWQqIG1fY29udGV4
dDsKIApAQCAtMTkyNiw3ICsxOTMxLDcgQEAgQm9vbGVhbiBBVkZXcmFwcGVyOjpyZXNvdXJjZUxv
YWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJjZShBVkNGQXMKIAogICAg
IExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlcXVlc3RlZFJlc291cmNlKCVwKSIsIHNlbGYpOwogCi0gICAgYXV0byBsb2FkUmVxdWVz
dERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9hZGluZ1JlcXVlc3Qs
IGNvbnRleHQpOworICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0gbWFrZVVuaXF1ZTxMb2FkUmVx
dWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5j
X2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbG9hZFJlcXVlc3REYXRhLnJlbGVhc2UoKSwg
cHJvY2Vzc1Nob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk7CiAKQEAgLTE5NTMsNyArMTk1
OCw3IEBAIFBsYXRmb3JtTGF5ZXIqIEFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIoKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIC8vIENyZWF0ZSBhIFBsYXRmb3JtQ0FMYXllciBzbyB3ZSBjYW4g
cmVzaXplIHRoZSB2aWRlbyBsYXllciB0byBtYXRjaCB0aGUgZWxlbWVudCBzaXplLgotICAgIG1f
bGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKTsKKyAgICBt
X2xheWVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CiAgICAgaWYgKCFt
X2xheWVyQ2xpZW50KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGUxNGFmMWEyN2YyNmJk
MWFkNjAyODYwNGE1NzUyZjBkZjlhOGRmNTIuLjdkZTE0YzI1NzFmN2QzOGVlY2JiMzQ4ZmRhM2M3
NGE0M2RlYjgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMubW0KQEAgLTMzLDEzICszMywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhB
VlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxB
VlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAg
IDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0
aW9uKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KG9wdGlvbikpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC01OSw3
ICs1OSw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNG
cm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRl
bVRyYWNrKEFWUGxheWVySXRlbVRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwg
PSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNl
dFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtNjksMTQgKzY5LDE0IEBAIEFWUGxheWVy
SXRlbVRyYWNrKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnBsYXllckl0ZW1UcmFjaygpCiB9
CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKEFW
QXNzZXRUcmFjayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJv
bVRyYWNrKCk7CiB9CiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRy
YWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1
ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0
aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgQVZBc3NldFRyYWNrKiBBdWRp
b1RyYWNrUHJpdmF0ZUFWRk9iakM6OmFzc2V0VHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2
YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24oTWVkaWFTZWxlY3Rpb25PcHRpb25B
VkZPYmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9t
VHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCmluZGV4IGVjMGQwZWRkYmY3
M2JlZWRhNjcxN2I3YTUxOGM3MzIxMjYwOTVhZTIuLmRmNTIyNmE0ZWEwMzZlNTZmYTI1MzlhNjI3
NjJhMjM4YWU3MGUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKQEAgLTM0LDcgKzM0
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFj
ayogdHJhY2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2lt
cGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisg
ICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykp
CiAgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCk7CkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykK
IHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgK
aW5kZXggMjJhYWZlYzdiODM0MjdiODEzMGE3YzA0M2Y4ZjY3MjA4MzRjY2E0Ny4uNWQ4ZTI1MDc0
NzBiYzdhNDk5OTU1Yzk4MWIxNzZmZjQ0NGZiYzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0zOSw3ICszOSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzsKIAotY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgOiBwdWJsaWMgTGVn
YWN5Q0RNU2Vzc2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDPiB7CitjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyBmaW5hbCA6IHB1Ymxp
YyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDKiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5D
RE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDI0YjJhMTdkOTc3ZWJi
ZjA1MzM1MGM1NWQ5ZDQwOWE2MTI3OTYzOGYuLjM5ZWE4ZTUxMTM2MzJhZTc0YmY1MzY0YThkMWIw
MjY5NzIyMWFhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIAogY2xhc3MgQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQyA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFr
UHRyPENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKENETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMmLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAg
dmlydHVhbCB+Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggNTQ4MjBkMjI1MTk3ZGI3Zjli
ZTczZjRmYmQyY2VjODc4ZjlhODAwOC4uMzI2ZGFkYmIxN2QwODkxMTcwZWI3NTQ1M2I2MzQ4ZDdm
ZTgzOTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpyZWFkVHJh
Y2tNZXRhZGF0YSgpCiAgICAgICAgIHx8ICFtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zv
cm0oKQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT50cmFuc2Zvcm0oKS52YWx1
ZSgpICE9IGZpbmFsVHJhbnNmb3JtCiAgICAgICAgIHx8IG1faW1hZ2VSb3RhdGlvblNlc3Npb24t
PnNpemUoKSAhPSBzaXplKQotICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3Jt
KSwgc2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25W
VDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKKyAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vz
c2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRy
YW5zZm9ybSksIHNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25T
ZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CiAKICAgICBtX3NpemUgPSBleHBh
bmRlZEludFNpemUobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+cm90YXRlZFNpemUoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA1Y2QyMjQwM2FhMmMyZWY2MjJlMzAwZDAwNzQxZmMw
YzMzMzliZjM2Li43ZmMwMThhZTU4ZWFmNTI1NjBkZWU2YjM0YTFhOTdjZTdkMDFkMjE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYQogICAgIGlmICghaXNBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKKyAgICBy
ZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAg
Z2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xl
YXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3Rl
bSk7CiAgICAgQVNTRVJUKEFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWls
YWJsZSgpKTsKIH0KQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJgog
CiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgOiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24ocGxheWVyKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1h
bmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigp
KQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogICAgICwgbV92aWRlb0Z1bGxzY3JlZW5HcmF2
aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3QpCiAgICAgLCBtX29iamNP
YnNlcnZlcihhZG9wdE5TKFtbV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgYWxsb2NdIGluaXRXaXRo
UGxheWVyOm1ha2VXZWFrUHRyKCp0aGlzKV0pKQogICAgICwgbV92aWRlb0ZyYW1lSGFzRHJhd24o
ZmFsc2UpCkBAIC0xMzM3LDcgKzEzMzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnNldFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBh
dXRvIHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
KyAgICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
IAogICAgIGlmICghbV9hdlBsYXllckl0ZW0pCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwpA
QCAtMTg5Miw3ICsxODkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVSb3RhdGlvblNlc3Npb24oKQogICAgICAgICAmJiBtX2ltYWdlUm90YXRpb25T
ZXNzaW9uLT5zaXplKCkgPT0gbmF0dXJhbFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
aW1hZ2VSb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNz
aW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4ZWxGb3Jt
YXRUeXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJs
ZTo6WWVzKTsKKyAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtD
VlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFn
ZUNvbXBhdGlibGU6Olllcyk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0yMjE2
LDcgKzIyMTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVw
ZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAjZWxzZQogICAgICAgICBOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZXMgPSBuaWw7CiAjZW5kaWYKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZv
cm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZv
cm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKQEAgLTIyNjUsNyArMjI2NSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoCiAgICAgc2l6
ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0
KCkpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1Rl
eHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29u
dGV4dCk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1Rl
eHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJuIG1fdmlkZW9UZXh0dXJlQ29w
aWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwg
d2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQpAQCAt
MjMzMCw3ICsyMzMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3MKIHsKICAgICBpZiAoIWtl
eVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGF1dG8gc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakM+KHRoaXMsIGNsaWVudCk7CisgICAgYXV0byBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsKICAgICBtX3Nlc3Npb24gPSBt
YWtlV2Vha1B0cigqc2Vzc2lvbik7CiAgICAgcmV0dXJuIFdURk1vdmUoc2Vzc2lvbik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDczOTZlNWIxYjQzMTE5OGU1ZTYwZDhmY2QwNjM1
OWJiMjdjZjQ5ZjcuLmExZGQwZjkwOTFmYjI4NjQ2OGRiZTBhZTEwY2U4YjNjMTQyYzBiZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0yNjgsNiArMjY4LDcgQEAgY2xhc3MgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDCiAgICAgZnJpZW5kIGNsYXNzIE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakM7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1NlZWsgeworICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdTZWVrKGNvbnN0
IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9s
ZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCkKICAgICAgICAgICAgIDogdGFy
Z2V0VGltZSh0YXJnZXRUaW1lKQogICAgICAgICAgICAgLCBuZWdhdGl2ZVRocmVzaG9sZChuZWdh
dGl2ZVRocmVzaG9sZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBmMTk1MTU2ZDhj
ZjIyNTZmNjBmOWY1NTMyNDEyOWU4NTIzZDlkMzhiLi45YzBhZWY2MTlhZGMyYTMxOGYwZGI3ZDJl
Mzg2N2MyMWRmYzMxZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMzcsNyAr
MTM3LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTWVkaWEKICAgICAsIG1fcGxheWluZygwKQogICAg
ICwgbV9zZWVraW5nKGZhbHNlKQogICAgICwgbV9sb2FkaW5nUHJvZ3Jlc3NlZChmYWxzZSkKLSAg
ICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkK
ICAgICAsIG1fZWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcihFZmZlY3RpdmVSYXRlQ2hhbmdl
ZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMsIFttX3N5bmNocm9uaXplciB0aW1lYmFzZV0pKQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5tZWRpYVBsYXll
ckxvZ2dlcigpKQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0CiAg
ICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIo
W10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRTdXBwb3J0
ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAgICBBU1NFUlQoQVZBc3NldE1J
TUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAtNDM3LDcgKzQz
Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrV2l0
aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIHRpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgInRpbWUgPSAiLCB0aW1lLCAiLCBuZWdhdGl2ZVRocmVzaG9sZCA9ICIsIG5lZ2F0aXZlVGhy
ZXNob2xkLCAiLCBwb3NpdGl2ZVRocmVzaG9sZCA9ICIsIHBvc2l0aXZlVGhyZXNob2xkKTsKIAog
ICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ1NlZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9s
ZCk7CisgICAgbV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KHRpbWUsIG5l
Z2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBpZiAobV9zZWVrVGlt
ZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9zZWVrVGltZXIuc3RvcCgpOwpAQCAtNTQzLDcgKzU0
Myw3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2Vla2Fi
bGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVr
YWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25z
dApAQCAtNTU4LDcgKzU1OCw3IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRl
ID8gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBt
X21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKIAog
ICAgIGlmICghbV9yZ2JDb25mb3JtZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGVzID0gQHsg
KF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAo
a0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfTsKLSAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcmdiQ29uZm9ybWVyID0gbWFrZVVuaXF1
ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJp
YnV0ZXMpOwogICAgIH0KIAogICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3JtZXItPmNyZWF0
ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKQEAgLTY0OSw3
ICs2NDksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAgIHNpemVfdCBoZWlnaHQgPSBD
VlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAogICAgIGlm
ICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOworICAgICAg
ICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyQ1Y+
KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weUltYWdl
VG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQs
IG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3Jt
YXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQppbmRleCBjYTNiMTEzNTUyYjM4ODVjOTk5NzdkYWUyYTIxZWExNjU3N2VkYTgwLi45
ZGVlZTQ2ZjJjYTI0NTI5NTNkZjVjYTg4YmI2OWY4MThlN2U0ZTYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCkBAIC0xODMsNyArMTgzLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWEK
ICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRv
cHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRX
aXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3JlYXRlKCkpCi0g
ICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkp
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlh
UGxheWVyTG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxheWVyLT5tZWRpYVBsYXll
ckxvZ0lkZW50aWZpZXIoKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMo
KQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlZ2lzdGVyTWVk
aWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2
YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAg
ICAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTA1NCwxMiArMTA1
NCwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
VHJhY2tzKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpi
dWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMTA3
Myw3ICsxMDczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFt
X2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9pbWFnZVBhaW50
ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBl
XzMyQkdSQSkgfSk7CisgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVy
ID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9u
YXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRU
eXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCiAgICAgQVNTRVJUKG1f
aW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKTsKICAgICBpZiAoIW1faW1hZ2VQYWlu
dGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpD
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKaW5kZXggYzg3MWM1OTQ4MzU1MDg1NzE4MmM3
YTI0ZDU1MzRiODVhNWQ0ZWY3ZS4uMjk0ODNiYTVlOThkOTVmYThlNWVjOWE2YTEwYmY2NDFhYWUz
NTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuY3BwCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5
ZXJJdGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZU
cmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zy
b21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1h
a2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0
UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlv
bikKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KG9wdGlvbikpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPihvcHRpb24pKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpA
QCAtNjYsNyArNjYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9w
ZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBs
YXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0g
c3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAg
bV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAg
ICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTc3LDcgKzc3LDcgQEAgQVZQ
bGF5ZXJJdGVtVHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVySXRlbVRyYWNr
KCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3Nl
dFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJh
Y2soKTsKIH0KIApAQCAtODgsNyArODgsNyBAQCBBVkFzc2V0VHJhY2sqIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQzo6YXNzZXRUcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpD
OjpzZXRNZWRpYVNlbGVjdG9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0
aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZmNjMjQ5NmExMzVhYTRmNzNhOGZlNTQ4
ZDE0ZTBjODAwMDRhZDFiMC4uOTc1NmNmZmFmZDhjM2Y2ZmUzYjQ3YTIzMzM3MWI3NGRlYzk4ZDA2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2ssIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3Vu
aXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFr
ZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiAgICAgLCBtX3BhcmVu
dChwYXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCiAgICAgLCBtX3NlbGVjdGVkKGZhbHNlKQpA
QCAtNTYsNyArNTYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0g
ICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0
cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
Pih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwCmluZGV4IDE3MWYyNzcyYzk0YTY5Y2RhNzM0OTNjYzljOGM3ODc4YjAwMTA4ZGQuLjg3NjUz
NDQ1MjAyNGU2MTY1MTQxN2EwNGEwZDk0NTA1OGE5NTQwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAt
MTYzNiwxMiArMTYzNiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJzaXZlQ29tbWl0
Q2hhbmdlcyhDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAgIGlmICh1c2Vz
RGlzcGxheUxpc3REcmF3aW5nKCkgJiYgbV9kcmF3c0NvbnRlbnQgJiYgKCFtX2hhc0V2ZXJQYWlu
dGVkIHx8IGhhZERpcnR5UmVjdHMpKSB7CiAgICAgICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3Bl
KERpc3BsYXlMaXN0UmVjb3JkU3RhcnQsIERpc3BsYXlMaXN0UmVjb3JkRW5kKTsKIAotICAgICAg
ICBtX2Rpc3BsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q+KCk7CisgICAgICAgIG1fZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdD4oKTsKICAgICAgICAgCiAgICAgICAgIEZsb2F0UmVjdCBpbml0aWFsQ2xpcChi
b3VuZHNPcmlnaW4oKSwgc2l6ZSgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4
dChbJl0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlM
aXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3Jt
KCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVy
Pihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgaW5pdGlh
bENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHBhaW50R3Jh
cGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUo
KSkpOwogICAgIH0KQEAgLTI4NjcsNyArMjg2Nyw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpp
c1J1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb24oKSBjb25zdAogdm9pZCBHcmFwaGljc0xheWVyQ0E6
OmVuc3VyZUxheWVyQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlvbnMpCi0gICAg
ICAgIG1fYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOwor
ICAgICAgICBtX2FuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPExheWVyQW5pbWF0aW9ucz4oKTsKIH0K
IAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxhdGZvcm1DQUFu
aW1hdGlvbiYgY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIFNlY29uZHMgdGltZU9m
ZnNldCkKQEAgLTM5MDMsNyArMzkwMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjplbnN1cmVD
bG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+CiAgICAg
Y29udGVudHNMYXllciA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fbGF5ZXJDbG9uZXMpCi0gICAg
ICAgIG1fbGF5ZXJDbG9uZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xvbmVzPigpOworICAg
ICAgICBtX2xheWVyQ2xvbmVzID0gbWFrZVVuaXF1ZTxMYXllckNsb25lcz4oKTsKIAogICAgIHBy
aW1hcnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdldCgpLCBtX2xh
eWVyQ2xvbmVzLT5wcmltYXJ5TGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwogICAgIHN0cnVjdHVy
YWxMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxMYXllci5nZXQo
KSwgbV9sYXllckNsb25lcy0+c3RydWN0dXJhbExheWVyQ2xvbmVzLCBjbG9uZUxldmVsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKaW5kZXggM2FjNGMxZTMyYTE1NDhkNThjNjkxMTE3Y2M2OWEyOWM0ZGNmMGUxYS4uYzRi
MmM5YzM0NzA4MGE2YjdjOTZkNjcwMmY0YTRkOGEzMGM3ZjZiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTE1
Nyw2ICsxNTcsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXll
ciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgRmxvYXRTaXplIHBpeGVsQWxp
Z25tZW50T2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9waXhlbEFsaWdubWVudE9m
ZnNldDsgfQogCiAgICAgc3RydWN0IENvbW1pdFN0YXRlIHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB1bnNpZ25lZCB0cmVlRGVwdGggeyAwIH07CiAg
ICAgICAgIHVuc2lnbmVkIHRvdGFsQmFja2Ryb3BGaWx0ZXJBcmVhIHsgMCB9OwogICAgICAgICBi
b29sIGFuY2VzdG9ySGFkQ2hhbmdlcyB7IGZhbHNlIH07CkBAIC0zMDksNiArMzEwLDcgQEAgY2xh
c3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQgewogICAgIHR5cGVkZWYgdW5zaWduZWQgQ29tcHV0ZVZpc2libGVSZWN0
RmxhZ3M7CiAgICAgCiAgICAgc3RydWN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzIHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBGbG9hdFJlY3Qgdmlz
aWJsZVJlY3Q7CiAgICAgICAgIEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3Q7CiAgICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGFuaW1hdGluZ1RyYW5zZm9ybTsKQEAgLTMyOCw2ICszMzAsNyBAQCBj
bGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRm
b3JtQ0FMYXllckNsaWVudCB7CiAKICAgICAvLyBVc2VkIHRvIHRyYWNrIHRoZSBwYXRoIGRvd24g
dGhlIHRyZWUgZm9yIHJlcGxpY2EgbGF5ZXJzLgogICAgIHN0cnVjdCBSZXBsaWNhU3RhdGUgewor
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgbWF4UmVwbGljYURlcHRoID0gMTY7CiAgICAgICAgIGVudW0gUmVwbGljYUJy
YW5jaFR5cGUgeyBDaGlsZEJyYW5jaCA9IDAsIFJlcGxpY2FCcmFuY2ggPSAxIH07CiAgICAgICAg
IFJlcGxpY2FTdGF0ZShSZXBsaWNhQnJhbmNoVHlwZSBmaXJzdEJyYW5jaCkKQEAgLTU3OSw2ICs1
ODIsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVi
bGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAKICAgICAvLyBSZWZlcmVuY2VzIHRvIGNsb25l
cyBvZiBvdXIgbGF5ZXJzLCBmb3IgcmVwbGljYXRlZCBsYXllcnMuCiAgICAgc3RydWN0IExheWVy
Q2xvbmVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBMYXllck1hcCBwcmltYXJ5TGF5ZXJDbG9uZXM7CiAgICAgICAgIExheWVyTWFwIHN0cnVjdHVy
YWxMYXllckNsb25lczsKICAgICAgICAgTGF5ZXJNYXAgY29udGVudHNMYXllckNsb25lczsKQEAg
LTYwOCw2ICs2MTIsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NM
YXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgVmVjdG9yPEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+PiBBbmltYXRpb25zVG9Q
cm9jZXNzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3Bl
cnR5QW5pbWF0aW9uPj4gQW5pbWF0aW9uc01hcDsKICAgICBzdHJ1Y3QgTGF5ZXJBbmltYXRpb25z
IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBWZWN0
b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4gdW5jb21pdHRlZEFuaW1hdGlvbnM7CiAgICAgICAg
IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXAgYW5pbWF0aW9uc1RvUHJvY2VzczsKICAgICAgICAgQW5p
bWF0aW9uc01hcCBydW5uaW5nQW5pbWF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAppbmRleCA0ZDY0YzJjNGIx
OWIzMWI4MDU0YzFiYzQxYWMwMjI1NzNiZWZmNTYyLi4zMDVlZmQzMzNiZDYxMWM2ZWY1ZTRjMWIy
NjIyODg3NTI1NmYyNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBU
aWxlQ29udHJvbGxlcjo6em9vbWVkT3V0VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKQogVGls
ZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBsYXRmb3Jt
TGF5ZXIpCiAgICAgOiBtX3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQogICAgICwg
bV9kZXZpY2VTY2FsZUZhY3Rvcihvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXll
ckRldmljZVNjYWxlRmFjdG9yKCkpCi0gICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8
VGlsZUdyaWQ+KCp0aGlzKSkKKyAgICAsIG1fdGlsZUdyaWQobWFrZVVuaXF1ZTxUaWxlR3JpZD4o
KnRoaXMpKQogICAgICwgbV90aWxlUmV2YWxpZGF0aW9uVGltZXIoKnRoaXMsICZUaWxlQ29udHJv
bGxlcjo6dGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX3RpbGVTaXplQ2hhbmdl
VGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVNpemVDaGFuZ2VUaW1lckZpcmVkLCB0
aWxlU2l6ZVVwZGF0ZURlbGF5KQogICAgICwgbV9tYXJnaW5FZGdlcyhmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSkKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRD
b250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQogICAgIGlmIChtX3pvb21lZE91dENvbnRlbnRzU2Nh
bGUgJiYgbV96b29tZWRPdXRDb250ZW50c1NjYWxlID09IHRpbGVHcmlkKCkuc2NhbGUoKSAmJiB0
aWxlR3JpZCgpLnNjYWxlKCkgIT0gc2NhbGUgJiYgIW1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2Nh
bGVGYWN0b3IpIHsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZCA9IFdURk1vdmUobV90aWxl
R3JpZCk7CiAgICAgICAgIG1fem9vbWVkT3V0VGlsZUdyaWQtPnNldElzWm9vbWVkT3V0VGlsZUdy
aWQodHJ1ZSk7Ci0gICAgICAgIG1fdGlsZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlk
PigqdGhpcyk7CisgICAgICAgIG1fdGlsZUdyaWQgPSBtYWtlVW5pcXVlPFRpbGVHcmlkPigqdGhp
cyk7CiAgICAgICAgIHRpbGVHcmlkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTUwMCw3ICs1MDAs
NyBAQCBGbG9hdFJlY3QgVGlsZUNvbnRyb2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JT
Y3JvbGxpbmcoY29uc3QgRmxvYXRSZWN0JiBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGlmICghbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhKQotICAgICAgICAgICAgbV9oaXN0b3Jp
Y2FsVmVsb2NpdHlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlEYXRh
PigpOworICAgICAgICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhID0gbWFrZVVuaXF1ZTxI
aXN0b3JpY2FsVmVsb2NpdHlEYXRhPigpOwogCiAgICAgICAgIG1fdmVsb2NpdHkgPSBtX2hpc3Rv
cmljYWxWZWxvY2l0eURhdGEtPnZlbG9jaXR5Rm9yTmV3RGF0YShzY3JvbGxPZmZzZXQsIGNvbnRl
bnRzU2NhbGUsIE1vbm90b25pY1RpbWU6Om5vdygpKTsKICAgICB9OwpAQCAtNjg1LDcgKzY4NSw3
IEBAIEludFJlY3QgVGlsZUNvbnRyb2xsZXI6OnRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdAogUGxh
dGZvcm1DQUxheWVyKiBUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXll
cigpCiB7CiAgICAgaWYgKCFtX2NvdmVyYWdlTWFwKQotICAgICAgICBtX2NvdmVyYWdlTWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9jb3Zl
cmFnZU1hcCA9IG1ha2VVbmlxdWU8VGlsZUNvdmVyYWdlTWFwPigqdGhpcyk7CiAKICAgICByZXR1
cm4gJm1fY292ZXJhZ2VNYXAtPmxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLm1tCmluZGV4IGE0ODUyM2NmNTE3NmIzMWYyYWNjNDk4NGIyZWNkOGUyYzg3NGY2MDcuLjM2
YWMyZjc4NGIwMDZmZjljNzAzZjQxZTdiZmY2ODdhMWFhNGM2NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRm
b3JtQ0FMYXllckNvY29hLm1tCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJDb2NvYTo6Y29tbW9uSW5pdCgpCiAgICAgICAgIFdlYlRpbGVkQmFja2luZ0xheWVyKiB0aWxl
ZEJhY2tpbmdMYXllciA9IHN0YXRpY19jYXN0PFdlYlRpbGVkQmFja2luZ0xheWVyKj4obV9sYXll
ci5nZXQoKSk7CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IFt0aWxl
ZEJhY2tpbmdMYXllciBjcmVhdGVUaWxlQ29udHJvbGxlcjp0aGlzXTsKIAotICAgICAgICBtX2N1
c3RvbVN1YmxheWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGls
ZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXll
cnMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250
YWluZXJMYXllcnMoKSk7CiAgICAgfQogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpA
QCAtOTQ3LDcgKzk0Nyw3IEBAIEZsb2F0Um91bmRlZFJlY3QgUGxhdGZvcm1DQUxheWVyQ29jb2E6
OnNoYXBlUm91bmRlZFJlY3QoKSBjb25zdAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0
U2hhcGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCkKIHsK
ICAgICBBU1NFUlQobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlU2hhcGVMYXllcik7Ci0gICAgbV9z
aGFwZVJvdW5kZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3Vu
ZGVkUmVjdCk7CisgICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5k
ZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
ICAgICBQYXRoIHNoYXBlUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL2NvY29hL1dlYlRpbGVkQmFja2luZ0xheWVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KaW5k
ZXggYzE5MWYzOTFjNjQ1NzJjYzk5NTVhNDdjNmNiN2I5MDA3ODY3MjYzOS4uYjNlMjFmNjQwYWU5
MWEwZDFmNTkzODQ2YTg1MGZlYzIyZmE3OGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5n
TGF5ZXIubW0KQEAgLTYyLDcgKzYyLDcgQEAgLSAoaWQpaW5pdFdpdGhMYXllcjooaWQpbGF5ZXIK
IC0gKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyKiljcmVhdGVUaWxlQ29udHJvbGxlcjooV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyKilyb290TGF5ZXIKIHsKICAgICBBU1NFUlQoIV90aWxlQ29udHJv
bGxlcik7Ci0gICAgX3RpbGVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpU
aWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKKyAgICBfdGlsZUNvbnRyb2xsZXIgPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOwogICAgIHJldHVybiBfdGls
ZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXgg
MTVkNGU0NmIwNmM3NmMxN2YzNDA1MTM5YzZjOTc5YzEwMTdiMzY5Ni4uZDZhN2MxNjhmMGU0NDFm
ZDdkMjkwZmM0ZmUzMTM2MGM1ODVkNTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAK
QEAgLTE1Miw3ICsxNTIsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldp
bihMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyKiBsYXllcgogICAgIGlmICh1c2Vz
VGlsZWRCYWNraW5nTGF5ZXIoKSkgewogICAgICAgICBpbnRlcm4gPSBuZXcgV2ViVGlsZWRCYWNr
aW5nTGF5ZXJXaW4odGhpcyk7CiAgICAgICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4qPihpbnRlcm4pLT5j
cmVhdGVUaWxlQ29udHJvbGxlcih0aGlzKTsKLSAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250
YWluZXJMYXllcnMoKSk7CisgICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOwog
ICAgIH0gZWxzZQogICAgICAgICBpbnRlcm4gPSBuZXcgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IDIy
NGQ4YmJlZWQzOTkyYWVlZmM5MzJhMWJlZTgwZGM2M2ZjYTJmOGIuLmM1YTczZThkM2FlOWJiNDlh
OTZiZTI3ZjUzMjdlMDZjMDYyMTRmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVy
V2luLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46
OnNldEJvcmRlckNvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIFRpbGVDb250cm9sbGVyKiBXZWJU
aWxlZEJhY2tpbmdMYXllcldpbjo6Y3JlYXRlVGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVy
KiByb290TGF5ZXIpCiB7CiAgICAgQVNTRVJUKCFtX3RpbGVDb250cm9sbGVyKTsKLSAgICBtX3Rp
bGVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVy
KTsKKyAgICBtX3RpbGVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9v
dExheWVyKTsKICAgICByZXR1cm4gbV90aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGMzMWNjNmUzOGJhNTk5YzlmYjgyNmFhMDM5NzZi
MjA1MWNjMTE1YmUuLjE4ZjM0MDUwYWE5ZTNiNzQzNGE2MjdhMDc3Y2QyY2NmMmY5OWM5ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTQxLDYgKzQxLDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dl
ZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIAogc3RydWN0IEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgogICAgIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA1MGI3ZDljMjNjMDFhYmZjM2EwNTE3OGMxMDUy
NTEwNzBmMTVkNmRiLi4wNGYyYTlmZjU0NjlhYTViYTI0ZDE0OTU2NTRiNjBmMGJjNDNkMmFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFw
aGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRleHRdKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBwbGF0Zm9ybUNv
bnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsKIH0KIApAQCAt
NTQsMTQgKzU0LDE0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3Rv
cnkgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFtjYWlyb0Nv
bnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0
LCBjYWlyb0NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBjYWlyb0NvbnRleHQpOwogICAgICAgICB9KTsKIH0K
IAogR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9LCBB
ZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1Db250
ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVu
aXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkK
IHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJp
dmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4
dC5jcigpKTsKQEAgLTY5LDkgKzY5LDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGEKIAogR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjYWlyb190KiBjYWlyb0NvbnRleHQpCiAgICAgOiBHcmFwaGljc0Nv
bnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCi0g
ICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250
ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCisgICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KG1h
a2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCiAgICAgLCBtX3Bs
YXRmb3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShz
dGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9y
bUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRl
eHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJp
dmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGVDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAppbmRleCA5OWUxODNjYzcw
NTYwM2QyMzRlOGU4ZWQ5ZmQ2NjlkNTk2ZmJlZWEyLi4wODM3MjVkNmZkMzgzMjYwN2FhNzYxZmY5
ZjY4MzU5MDY2NGM5ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZUNhaXJvLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgOiBwbGF0
Zm9ybUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAx
Mzc0MTVmM2VhYmY1MzIxZmMzNWNhYzIwZTFlMTI3ODRkNzUyMjMzLi5lMDFlNjBiOWVlZTdiYTE4
Mzk3YTYzZWY0YTE3NjY3ZmZkYzRhNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1
LDcgKzE2NSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkK
ICAgICAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94
eSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94
eS5sb2NrKCkpOwotICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRl
eHR1cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOwor
ICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4
dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOwogICAgICAgICAgICAgfTsKICNp
ZiBVU0UoTklDT1NJQSkKICAgICAgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8Tmljb3NpYTo6
Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5pbXBsKCkpLnBy
b3h5KCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAKICAg
ICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9kYXRhLm1fc3Vy
ZmFjZS5nZXQoKSkpOwogICAgIG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRDcihjci5nZXQo
KSk7Ci0gICAgbV9kYXRhLm1fY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250
ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1fcGxh
dGZvcm1Db250ZXh0KSk7CisgICAgbV9kYXRhLm1fY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9kYXRh
Lm1fcGxhdGZvcm1Db250ZXh0KSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4
dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9y
bUNvbnRleHRDYWlyby5oCmluZGV4IDgwZWM3MjU4YjY0MjFmYmY5OGIzZWI1NTEzZDBjZWFmYmU3
YWRmZGMuLjk5YzgyZTJlNmU5OTMxYzhmZWE5ZGUyMTVkMGYzNmM3MTljMzg5N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4
dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxh
dGZvcm1Db250ZXh0Q2Fpcm8uaApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgU2hhZG93U3RhdGU7
CiAvLyBjb2RlIGZyb20gdGhlIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dC4K
IAogY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm8geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtQ29udGV4dENhaXJvKTsKIHB1
YmxpYzoKICAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyhjYWlyb190Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4
IDgwYjVkNGZiZDI3MmRlZTQzNWI1Y2U3YzA4NGVlMzU5YTUwMWVkNjQuLmQzNWZmMGVmZjk3MTk1
MGVlZDFlM2ZkMDI2YmNkYTllYWZhMzRlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xODcsNyArMTg3LDcg
QEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDR0NvbG9yU3AKICAgICAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9kYXRhLmNv
bnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKICAg
ICB9CiAKICAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHAKaW5kZXggNzE4OGU0MzdkMmM4ODY3MjZkM2QzZjRkZWI0MWJmMjVjYjA2YjM4
MC4uZmY3ZmM2NjM2OGJkMmM2NjBjNDhjMTA2NzQ1ZjliYTg5YjNkZGY1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcApAQCAtMTM3MSw3ICsxMzcxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQ
bGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGUKIAogICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29tcHV0
ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24pLmJvbGRPYmxp
cXVlUGFpcigpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0
YT4oZm9udC5nZXQoKSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9u
dERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQo
KSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0JvbGQs
IHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVz
Y3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9k
ZSgpKTsKIH0KIAogdHlwZWRlZiBIYXNoU2V0PFJldGFpblB0cjxDVEZvbnRSZWY+LCBXVEY6OlJl
dGFpblB0ck9iamVjdEhhc2g8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmplY3RIYXNoVHJh
aXRzPENURm9udFJlZj4+IEZhbGxiYWNrRGVkdXBTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCmluZGV4IDFjZTBjOTQ3ZTE3ZTlhNjhlZWFkM2E0
ZDU3YjU5ZDhmYTE2Y2VmMjkuLjBkZTkzNGE3YjM4NDEwMGVlYjc2ZDc3ZjQ1NmExODJmYmJhYmNl
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3Bw
CkBAIC0xMTIsNyArMTEyLDcgQEAgRm9udFJhbmdlcyBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNv
cmVUZXh0Ojpmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KIAogICAgICAgICBh
dXRvIFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlT
eW50aGVzaXMoZm9udEZvclN5bnRoZXNpc0NvbXB1dGF0aW9uLmdldCgpLCBmb250RGVzY3JpcHRp
b24pLmJvbGRPYmxpcXVlUGFpcigpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNlLCBzeW50aGV0aWNPYmxp
cXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRo
VmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZh
bHNlLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9u
dERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmlu
Z01vZGUoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKGZvbnRQbGF0
Zm9ybURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KaW5kZXggZmVlYWNkNGQz
MjY2MDVmMDQyOTFjZTljMzFlZWNiYmU5Y2IyMmI5Mi4uMmMzY2FjMGFhYTA1NjNhZjFlZDRiMzM5
Mzg2OTg5ODMyMjA1N2M4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCkBAIC05
Miw2ICs5Miw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzdGF0dXNDaGVja1RocmVzaG9sZCA9
IDU7CiAvLyBGSVhNRTogVGhpcyBjbGFzcyBpcyBjdXJyZW50bHkgZW1wdHkgb24gTWFjLCBidXQg
d2lsbCBnZXQgcG9wdWxhdGVkIGFzCiAvLyB0aGUgcmVzdHJ1Y3R1cmluZyBpbiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MDMgaXMgZG9uZQogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqKSB7IH0K
ICAgICAKQEAgLTE4MSw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQo
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcgogCiBHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1
dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRy
cyhhdHRycykKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU+KHRoaXMpKQogewogI2lmICFVU0UoQU5HTEUpCiAjaWYgVVNFKE9QRU5H
TF9FUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQppbmRleCA1YzczM2UzYmFkMWU5ZDNkMjVjMWVkNTdmNWFjZGZmZjNhNGNiOTlm
Li4zODc1ZmNmZDMwNmRmODZkMzQ3NGVlMTg2MGJhNTkwYTNhOGJjMTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC0z
MjYsNyArMzI2LDcgQEAgR3JhcGhpY3NDb250ZXh0JiBJT1N1cmZhY2U6OmVuc3VyZUdyYXBoaWNz
Q29udGV4dCgpCiAgICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm4gKm1f
Z3JhcGhpY3NDb250ZXh0OwogCi0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOworICAgIG1fZ3Jh
cGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGVuc3VyZVBsYXRmb3Jt
Q29udGV4dCgpKTsKICAgICBtX2dyYXBoaWNzQ29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRl
eHQodHJ1ZSk7CiAKICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggNmU2MGViZjFmZmE2NTkwZjZmMzRl
NTI4YTNlMzM1ODMxOGI1ZWJkZi4uMjc4NzQ2ODE2NmZlZjFiNWY2NDYyMWZlYjViYjVlNTBkOWQ2
ZGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCkBAIC0x
MDgsNyArMTA4LDcgQEAgQGVuZAogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50
YXRpb24+IFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7CiB9CiAKIFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2E6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaAppbmRl
eCBhZGM5N2FkYzFmYTI0NTgwOTkwMDNjM2RlOWMwYWEzOGQ4NzYxODdkLi42MDAxYmI3MGExMDA0
MTc0NDEwOTIxMzZmM2ZlNWI2MTc2MmNiMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCkBA
IC0zNiw3ICszNiw4IEBAIHR5cGVkZWYgc3RydWN0IF9fQ1ZQaXhlbEJ1ZmZlclBvb2wqIENWUGl4
ZWxCdWZmZXJQb29sUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdlUm90
YXRpb25TZXNzaW9uVlQgeworY2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCBmaW5hbCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IFJvdGF0aW9u
UHJvcGVydGllcyB7CiAgICAgICAgIGJvb2wgZmxpcFggeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25m
b3JtZXJDVi5oCmluZGV4IGRkMTM1NjllMDgxYTFiMzk5ZGNiYWJmM2Y1ZTg4MzdmODRjMmFiNGUu
LmNkNWI2ZmNjMDBkNzc0NjRlNmU2YmU3NDYzMTFlMTNkMGQyN2UzMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNv
bmZvcm1lckNWLmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAq
Q1ZQaXhlbEJ1ZmZlclJlZjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGl4ZWxCdWZm
ZXJDb25mb3JtZXJDViB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVihDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyk7CiAg
ICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNvbnZlcnQoQ1ZQaXhlbEJ1ZmZlclJlZik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJl
Q2FjaGVDVi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNh
Y2hlQ1YuaAppbmRleCA4MWFiMmY5MjRkYWYyNmNkYTIyYzVlMjAwNzc2YzIxODAyMDIzYTNiLi5j
OWZmNDE5ZDQzYmU0NWY0MDQ0MDMwNDBhZGQ4YzRkMDQ0MDJiYTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CiAKIGNsYXNzIFRleHR1cmVDYWNoZUNWIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRleHR1cmVD
YWNoZUNWPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlQ2FjaGVDVj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4
dDNEJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L1RleHR1cmVDYWNoZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
VGV4dHVyZUNhY2hlQ1YubW0KaW5kZXggNTc3ZWMyODQ2MzkyYTcyMTVkOTk4YWEzMTBkM2Q4ZDYz
M2Y1ZjFlYy4uOWYxZjY2YjNiZDU5ZjU5YjFhZDNjYjcwNWM4NTY1NDQyMjdlYzM5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1Yu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hl
Q1YubW0KQEAgLTUwLDcgKzUwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVDYWNoZUNWPiBU
ZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXgKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBSZXRhaW5QdHI8VGV4dHVyZUNhY2hlVHlwZT4gc3Ryb25n
Q2FjaGUgPSBhZG9wdENGKGNhY2hlKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0cm9uZ0NhY2hlKSk7
CiB9CiAKIFRleHR1cmVDYWNoZUNWOjpUZXh0dXJlQ2FjaGVDVihHcmFwaGljc0NvbnRleHQzRCYg
Y29udGV4dCwgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+JiYgY2FjaGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJD
Vi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29w
aWVyQ1YuaAppbmRleCA0M2E5NmRjMTQzNjU4NGFmYTc3MTg3OGIxOTdmMmE5NTQ3ZGNjY2VlLi45
ZDM5MmVhMDU4YjM2MDA4Y2E1NjljYTQ0ZmQ3MTI4ODNiMGQ2ZjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGll
ckNWLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVy
ZUNhY2hlQ1Y7CiAKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckNWIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBWaWRlb1RleHR1cmVDb3BpZXJDVihHcmFwaGlj
c0NvbnRleHQzRCYpOwogICAgIH5WaWRlb1RleHR1cmVDb3BpZXJDVigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDhmZWFhMmY1ZDc1MzI4ZTQzNmJmOWQ4
OGI4ZGMwNWJhYzFjMmUxZjMuLmM1NjFmNWY5ZWFiOTk2MjExYThiMjIyMTk3NzZkNjhmMzllMTY0
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiBSZXBsYXllcjo6cmVwbGF5KGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdD4gcmVwbGF5TGlzdDsKICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0
KSkKLSAgICAgICAgcmVwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q+KCk7
CisgICAgICAgIHJlcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0PigpOwogCiAgICAg
c2l6ZV90IG51bUl0ZW1zID0gbV9kaXNwbGF5TGlzdC5pdGVtQ291bnQoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bUl0ZW1zOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApp
bmRleCA1NTdiOGUwMDg2MmQ2YWJjNTgwNGI0MTQzMjEwMDgwYTgzNTE2ZDFlLi4zMGJiNDhjYzhm
MGM0OTU0NDhhYjY1ZjY4MTE3MmNjYzZiY2E1MzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3Bw
CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpsb2FkRXh0
ZXJuYWxEb2N1bWVudElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAoIVNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJlZmVyZW5jZShtX3Vy
bCwgKmNhY2hlZFJlc291cmNlTG9hZGVyLmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKKyAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlID0gbWFrZVVuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91cmwpOwog
ICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UtPmxvYWQoY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIsIG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggNjU2
M2M4YmZlZWIzNWJhNTMyN2Y0ODk2MWVkNjIxZmUzZDUzYWE0MS4uNzFhNGFiMmY0ODI1ZjFhNTQz
MTkxODAzNGIzNTMxZWNkYThhMGYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApA
QCAtNDU1LDcgKzQ1NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250
Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgICAgICAgICBG
Y1BhdHRlcm5BZGRTdHJpbmcocmVzdWx0UGF0dGVybi5nZXQoKSwgRkNfRk9OVF9WQVJJQVRJT05T
LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjgqPih2YXJpYW50cy51dGY4KCkuZGF0YSgp
KSk7CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQYXR0ZXJuLmdldCgp
LCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRXaWR0aCwgc3ludGhl
dGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkp
OworICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihm
b250RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1
dGVkUGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlx
dWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKICAgICAvLyBWZXJpZnkgdGhhdCB0
aGlzIGZvbnQgaGFzIGFuIGVuY29kaW5nIGNvbXBhdGlibGUgd2l0aCBGb250Y29uZmlnLiBGb250
Y29uZmlnIGN1cnJlbnRseQogICAgIC8vIHN1cHBvcnRzIHRocmVlIGVuY29kaW5ncyBpbiBGY0Zy
ZWVUeXBlQ2hhckluZGV4OiBVbmljb2RlLCBTeW1ib2wgYW5kIEFwcGxlUm9tYW4uCiAgICAgLy8g
SWYgdGhpcyBmb250IGRvZXNuJ3QgaGF2ZSBvbmUgb2YgdGhlc2UgdGhyZWUgZW5jb2RpbmdzLCBk
b24ndCBzZWxlY3QgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcAppbmRleCAxMzc2NWY0M2RhODY2OGQyZGU4MmU2NzFkODE4MGQ2ODQ0Mjg0
M2IwLi41ODk0M2QyYTkwZGZjNTUwMWYyZGNhYThlY2YwZTkwZTFhYzdmNzBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTEzMCw3
ICsxMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIEZUX0ZhY2UgZnJlZVR5cGVG
YWNlOwogICAgIGlmIChGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBGVF9CeXRlKj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCksIDAsICZmcmVl
VHlwZUZhY2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNl
LCBidWZmZXIpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9y
bWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IDg2OTgxMzY0NTEzYjhlNmYwZDdiMmRkYTVi
YjhkMWY4NzJlN2Y1NzYuLjcxZmRhMGQ5MjRjZDI1NWRiM2VmMTA3N2Y5ZTEwNzgxNGUyNDNkZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5j
cHAKQEAgLTk1LDcgKzk1LDcgQEAgUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaW50IHcKICAgICAgICAgbnVt
VGlsZXMgPSAwOwogICAgIH0KIAotICAgIGF1dG8gdGV4dHVyZUlkcyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPHVuc2lnbmVkPj4obnVtVGlsZXMpOworICAgIGF1dG8gdGV4dHVyZUlkcyA9IG1h
a2VVbmlxdWU8VmVjdG9yPHVuc2lnbmVkPj4obnVtVGlsZXMpOwogICAgIHRleHR1cmVJZHMtPmZp
bGwoMCwgbnVtVGlsZXMpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlczsgaSsr
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmlu
ZGV4IDRhOWZkZWMzZWM1OTEyY2UyNWIxZTZiMjViOTE0NGZhOGY0MGM3ZDAuLmFiMzdlZTA0MWVi
MjhjM2M4MmYzNWFmMzYzY2NlZGI5YjQyYjE0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYXIgcmVnaXMKIHsKICAgICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpp
bml0aWFsaXplRGVidWdDYXRlZ29yeSgpOwogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAg
ICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4ocGxheWVyKTsgfSwKKyAgICAgICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3Vw
cG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3Vw
cG9ydHNLZXlTeXN0ZW0pOwogICAgIH0KIH0KQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZl
c1BpdGNoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5n
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRp
bWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKICAgICBpZiAobV9l
cnJvck9jY3VyZWQgfHwgaXNMaXZlU3RyZWFtKCkpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2Vz
OwogCkBAIC0yMzc2LDcgKzIzNzYsNyBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmF1ZGlvU2luaygpIGNvbnN0CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6ZW5zdXJlQXVkaW9Tb3VyY2VQcm92aWRlcigpCiB7CiAgICAgaWYgKCFtX2F1ZGlvU291
cmNlUHJvdmlkZXIpCi0gICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKKyAgICAgICAgbV9hdWRpb1Nv
dXJjZVByb3ZpZGVyID0gbWFrZVVuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigp
OwogfQogCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmF1ZGlvU291cmNlUHJvdmlkZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGM1NzhlZWU2ZDU1ZGQ0YjQzMDdjZDQyYmIw
MGNjZjQ3NjI5N2JiMzMuLmIwMmUyOGVkY2Q0MDdmZGZmOGNiZWE3OGFkMWE2ZTdiMGM3YjU4YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKQEAgLTcxMCwxOSArNzEwLDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKQogICAgICAgICAgICAgaWYgKCFwcm94
eS5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFw
cGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOworICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxH
c3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3Ms
ICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOwogCiAgICAgICAgICAgICBHTHVpbnQgdGV4dHVy
ZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlcjsKICAgICAg
ICAgICAgIGlmICh0ZXh0dXJlSUQpIHsKLSAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJ
RCwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJRCwgZnJhbWVIb2xkZXIt
PnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsK
ICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRl
cihXVEZNb3ZlKGZyYW1lSG9sZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIGxheWVyQnVmZmVyID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVyKGZyYW1lSG9sZGVy
LT5zaXplKCksIEdMX0RPTlRfQ0FSRSk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFs
YXllckJ1ZmZlcikpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFw
VGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPnJlc2V0KGZyYW1lSG9sZGVyLT5zaXplKCks
IGZyYW1lSG9sZGVyLT5oYXNBbHBoYUNoYW5uZWwoKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRz
QWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwotICAgICAgICAgICAgICAgICAgICBsYXll
ckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+KFdURk1vdmUodGV4dHVyZSkpOworICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9
IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4
dHVyZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmcmFtZUhvbGRlci0+
dXBkYXRlVGV4dHVyZShsYXllckJ1ZmZlci0+dGV4dHVyZUdMKCkpOwogICAgICAgICAgICAgICAg
IGxheWVyQnVmZmVyLT5zZXRFeHRyYUZsYWdzKG1fdGV4dHVyZU1hcHBlckZsYWdzIHwgKGZyYW1l
SG9sZGVyLT5oYXNBbHBoYUNoYW5uZWwoKSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQg
OiAwKSk7CkBAIC05MTIsNyArOTEyLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKICAgICBp
ZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBt
X3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVv
RnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVy
PihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCiAgICAgYXV0
byB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJl
SUQpCkBAIC05MjMsNyArOTIzLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3MKICAgICAgICAg
c2l6ZSA9IHNpemUudHJhbnNwb3NlZFNpemUoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVD
b3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxW
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRf
RkxBRyk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1Rl
eHR1cmVDb3BpZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7
CiAKICAgICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdl
dCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIGZsaXBZLCBtX3ZpZGVvU291
cmNlT3JpZW50YXRpb24pOwogfQpAQCAtOTM5LDcgKzkzOSw3IEBAIE5hdGl2ZUltYWdlUHRyIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUo
KQogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZy
YW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBs
ZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9G
cmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsK
IAogICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlm
ICghdGV4dHVyZUlEKQpAQCAtOTUzLDcgKzk1Myw3IEBAIE5hdGl2ZUltYWdlUHRyIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogICAg
IGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVy
ZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVS
VF9GTEFHKTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVv
VGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFH
KTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZSh0ZXh0dXJlSUQsIHNpemUsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBmYWxzZSwgbV92aWRlb1NvdXJj
ZU9yaWVudGF0aW9uKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTI1LDYgKzExMjUs
NyBAQCBzdGF0aWMgdm9pZCBzZXRSZWN0YW5nbGVUb1ZpZGVvU2luayhHc3RFbGVtZW50KiB2aWRl
b1NpbmssIGNvbnN0IEludFJlY3QmIHJlY3QpCiB9CiAKIGNsYXNzIEdTdHJlYW1lckhvbGVQdW5j
aENsaWVudCA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6SG9sZVB1
bmNoQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBH
U3RyZWFtZXJIb2xlUHVuY2hDbGllbnQoR1JlZlB0cjxHc3RFbGVtZW50PiYmIHZpZGVvU2luaykg
OiBtX3ZpZGVvU2luayhXVEZNb3ZlKHZpZGVvU2luaykpIHsgfTsKICAgICB2b2lkIHNldFZpZGVv
UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmIHJlY3QpIGZpbmFsIHsgc2V0UmVjdGFuZ2xlVG9WaWRl
b1NpbmsobV92aWRlb1NpbmsuZ2V0KCksIHJlY3QpOyB9CkBAIC0xMTQ3LDggKzExNDgsOCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVm
ZmVyKCkKICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHBy
b3h5KQogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2Nr
KCkpOwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RC
bGVuZCwgR0xfRE9OVF9DQVJFKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHU3RyZWFt
ZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8R1N0
cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQoKSk7CisgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVm
ZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9z
aXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOworICAg
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4gaG9sZVB1
bmNoQ2xpZW50ID0gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+KG1fdmlkZW9T
aW5rLmdldCgpKTsKICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRIb2xlUHVuY2hDbGllbnQo
V1RGTW92ZShob2xlUHVuY2hDbGllbnQpKTsKICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVm
ZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IDdhZTdlY2VkNmU5ZjZi
YjY1NTMzYjdkODkwMzAyMzdjY2NkZmZlNjYuLmUyNjA0YzRhZTNiMDU5Y2UxZmI2ZTA0ZDU2OGYx
YTgzNmEyMzA0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuaApAQCAtOTcsNyArOTcsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSwgcHVibAog
I2VuZGlmCiAjZW5kaWYKIHsKLQorICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaAppbmRleCA1MWZkOWIyNWIwYjg0
MzdjODQ5MTI1M2U2ZjAyMWU2NTdkMDNhODE3Li41YzU2ZWMzNDE4ODgzMzQ1Nzg4ZmEwYjU0OWE5
ODAzMjdkM2U3YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lci5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OwogY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIAogY2xhc3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0
cmVhbWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIENvbG9yQ29udmVyc2lvbiB7CiAgICAgICAgIENvbnZlcnRCR1JBVG9SR0JBLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA5NzNmNGQ0ZjAw
MzIzNTZmMTc3ZWJkN2ZjNGI5ZTk0YTUyOTJmOTVhLi45ODEwYzI1N2IzNzc2ZmZkOGQ0MjEyZTk2
OTRiZTkyYjI1OTczNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtNTAsNiArNTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICNkZWZp
bmUgTE9XX1FVRVVFX0ZBQ1RPUl9USFJFU0hPTEQgMC4yCiAKIGNsYXNzIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOwogcHVibGljOgogICAgIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyosIFJlc291cmNlUmVxdWVzdCYmKTsK
QEAgLTYzMiw3ICs2MzMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjTWFrZVJlcXVl
c3QoR3N0QmFzZVNyYyogYmFzZVNyYywgYm9vbCBub3RpZnlBc3luY0NvbQogICAgICAgICAgICAg
bG9hZE9wdGlvbnMgfD0gUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpC
dWZmZXJEYXRhOwogICAgICAgICBwcml2LT5yZXNvdXJjZSA9IHByaXYtPmxvYWRlci0+cmVxdWVz
dFJlc291cmNlKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgbG9hZE9wdGlvbnMpOwogICAgICAg
ICBpZiAocHJpdi0+cmVzb3VyY2UpIHsKLSAgICAgICAgICAgIHByaXYtPnJlc291cmNlLT5zZXRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4ocHJv
dGVjdG9yLmdldCgpLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpKTsKKyAgICAgICAgICAgIHBy
aXYtPnJlc291cmNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudD4ocHJvdGVjdG9yLmdldCgpLCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpKTsKICAg
ICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocHJvdGVjdG9yLmdldCgpLCAiU3RhcnRlZCByZXF1
ZXN0Iik7CiAgICAgICAgICAgICBpZiAobm90aWZ5QXN5bmNDb21wbGV0aW9uKQogICAgICAgICAg
ICAgICAgIGdzdF9iYXNlX3NyY19zdGFydF9jb21wbGV0ZShHU1RfQkFTRV9TUkMoc3JjKSwgR1NU
X0ZMT1dfT0spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDRlOWQxOWQ4NTI3ZDY5NjIwY2Y1YWE5NDEwNzM2Mjgz
ODFiM2M5ZjAuLmU2ODgwZDk4ZTdmY2FkMWQwNTNmODRlZDM4YTZmZDgxOThkZTdiODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmUKICAgICBpbml0
aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpOwogICAgIEdTVF9ERUJV
R19DQVRFR09SWV9JTklUKHdlYmtpdF9tc2VfZGVidWcsICJ3ZWJraXRtc2UiLCAwLCAiV2ViS2l0
IE1TRSBtZWRpYSBwbGF5ZXIiKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICBy
ZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U+KHBsYXllcik7IH0sCisgICAgICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1
cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1
cHBvcnRzS2V5U3lzdGVtKTsKICAgICB9CiB9CkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnNldFJhdGUoZmxvYXQpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
YnVmZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNv
dXJjZS0+YnVmZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OworICAgIHJldHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKSA6
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRTo6c291cmNlU2V0dXAoR3N0RWxlbWVudCogc291cmNlRWxlbWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5j
aC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKaW5k
ZXggMTE3MjQ1ODQxMGU5YTE0NTNiNjM1YjBmOGQ5MWI5ZmI0YTY5NmM1OC4uMGYwOGMxOWRiZGJl
NjliMDZmN2I3NTUzZjhhYjQ5N2Q0N2UzNzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlh
UGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2g6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVyKCkKICAgICAgICAg
W3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICB7
CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXll
ckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9D
QVJFKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQs
IEdMX0RPTlRfQ0FSRSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3Zl
KGxheWVyQnVmZmVyKSk7CiAgICAgICAgIH07CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6c3VwcG9ydHNU
eXBlKGNvbnN0IE1lZGlhRQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9N
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaAppbmRleCBmMGQw
NGQ0YzYzZDkzMTIwYmNlODA1YWI4ZmVhMjg3YTAxZTA0NDJhLi44YmY3MjEzMTg4MTljNDAyNjdi
NzIxZmE5YjgyYWMxY2Q5MjZmOWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBD
CiAgICAgLCBwdWJsaWMgUGxhdGZvcm1MYXllcgogI2VuZGlmCiB7Ci0KKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2go
TWVkaWFQbGF5ZXIqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoKCk7CkBAIC03
OSw3ICs3OSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCA6IHB1YmxpYyBN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDCiAgICAgTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXll
cjo6RW1wdHk7IH07CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpIYXZlTWV0YWRhdGE7IH07CiAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CiAKICAgICBi
b29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKaW5kZXgg
ZTFhM2E4NjYzMTQ3NWNhYjdhOWIxNzFiNDA2MmQzOTNkODkwZTYwNi4uZWNmODk2OTNkYTMzODUy
MDEyZTc1MDIxMTI5OTgwOTllYzhkYWMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBEYXRhVmlldzsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPQm94IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JU09Cb3go
KSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKaW5kZXggNzBiYjg2MTEzMTZlNjg1
Yjc2Yjc4ODM4YjVlZDA2MDM3NmI5YjFhOS4uMTg4M2JhNDdiZGYzYTUyYWZiMmZmN2QwZGQ1Y2Q5
ZGNkN2NkZDg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09PcmlnaW5hbEZv
cm1hdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPT3JpZ2lu
YWxGb3JtYXRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Rm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZybWEiOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5m
b0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVj
dGlvblNjaGVtZUluZm9Cb3guY3BwCmluZGV4IGQ4ZDc0MDFhNzU2MDA0NmM5OGFmZjhjYjExZWIy
ZTcyMjNjOTgxY2UuLmJkZmRiZGM5NmNmMGUxYjUwYTcyODU4Mjg4YzliMmY0NzRmN2QwZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcApAQCAtNTMsNyArNTMsNyBAQCBi
b29sIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5z
aWduZWQmIG9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG9wdGlvbmFs
Qm94VHlwZS52YWx1ZSgpLmZpcnN0ID09IElTT1NjaGVtZVR5cGVCb3g6OmJveFR5cGVOYW1lKCkp
IHsKLSAgICAgICAgbV9zY2hlbWVUeXBlQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVU
eXBlQm94PigpOworICAgICAgICBtX3NjaGVtZVR5cGVCb3ggPSBtYWtlVW5pcXVlPElTT1NjaGVt
ZVR5cGVCb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVUeXBlQm94LT5yZWFkKHZpZXcsIGxv
Y2FsT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjgsNyArNjgsNyBA
QCBib29sIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywg
dW5zaWduZWQmIG9mZnNldCkKICAgICB9CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVl
KCkuZmlyc3QgPT0gSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OmJveFR5cGVOYW1lKCkpIHsKLSAg
ICAgICAgbV9zY2hlbWVJbmZvcm1hdGlvbkJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1l
SW5mb3JtYXRpb25Cb3g+KCk7CisgICAgICAgIG1fc2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBtYWtl
VW5pcXVlPElTT1NjaGVtZUluZm9ybWF0aW9uQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1l
SW5mb3JtYXRpb25Cb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCmluZGV4IGYzN2I3
NjI0OWQ4ZTAwZmExN2EwNTU5MjllNzc2Njg1MTM3MzMzNjYuLjhlNTY3M2UwNTE2YTY1MDE0ZjVj
ZDQ5ZjYxYWE3Yjc1MzhkMmNhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5o
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElTT1NjaGVtZVR5
cGVCb3g7CiBjbGFzcyBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDsKIAotY2xhc3MgV0VCQ09SRV9F
WFBPUlQgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94IGZpbmFsIDogcHVibGlj
IElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0
dXJuICJzaW5mIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcAppbmRleCBiNGYy
NzdhNjg0N2NjMjBkNGZjOWQ2MjZmOWNhY2M3NDMwYWRhZjcwLi5jODNjNGZmN2IzOGFiZjFhZTIy
ZmZlNWU3MmM3YTFmODZhMDhlYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UoRGF0
YVZpZXcmIHZpZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIGlmIChsb2NhbE9mZnNldCAr
IHNjaGVtZVNwZWNpZmljQm94VHlwZS52YWx1ZSgpLnNlY29uZCA+IG9mZnNldCArIG1fc2l6ZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX3NjaGVtZVNwZWNpZmljRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94PigpOworICAgICAgICBt
X3NjaGVtZVNwZWNpZmljRGF0YSA9IG1ha2VVbmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94Pigp
OwogICAgICAgICBpZiAoIW1fc2NoZW1lU3BlY2lmaWNEYXRhLT5yZWFkKHZpZXcsIGxvY2FsT2Zm
c2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1h
dGlvbkJveC5oCmluZGV4IDllZGIxODc4YTliYTkxOWJlYjE5ZDdiNjIyM2Q5ZTdlNDY0ZjY4NTgu
LmU4ZWMwYzRjNjliNzRlODMzNDQ5ODk0MWYyNGVlZTQxMGYyY2RkNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJ
bmZvcm1hdGlvbkJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3ggOiBwdWJsaWMg
SVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT1NjaGVtZUluZm9ybWF0aW9uQm94IGZp
bmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBl
TmFtZSgpIHsgcmV0dXJuICJzY2hpIjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaAppbmRleCA2MTk2MTAzOWY0
OGNmMmJjNmVlN2I4ODQ4MDczYzgzNzZlNTgzMTMwLi40YjhmMjYzMzc1MGY4YWRmOTBiYzI3YzJk
MGNmMTRlZjk4MmMxNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVUeXBlQm94
IDogcHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1lVHlw
ZUJveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91
ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNjaG0iOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25Cb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0VuY3J5cHRpb25C
b3guaAppbmRleCBmNGVmZTI4MTA1MWUzYzdiMjlkYmVmNzhlNDRkYTNiMDM4NzgwM2YzLi40N2Zh
NDk3MjQ2YzcxNWJlMWQyY2VmOWIwZWE4N2RkN2Y3OWVmNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlv
bkJveC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNyeXB0aW9uQm94IDogcHVibGljIElTT0Z1bGxCb3gg
eworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPVHJhY2tFbmNyeXB0aW9uQm94IGZpbmFsIDogcHVi
bGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUo
KSB7IHJldHVybiAidGVuYyI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcAppbmRleCA5ZWM0MDg5NGYxZTI4YTA1YTIxNGNiMzIz
NTE0ZjdiMTM5NTVkMjg0Li40YjUxNmVlOGRkN2Y3ZDIzN2U4ZDYyNzI3OTdiMDMyZGQxZjVhY2M1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRU
Q3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRU
Q3VlLmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBKU0M6OkRhdGFWaWV3OwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIElTT1N0cmluZ0JveCA6IHB1YmxpYyBJU09Cb3ggeworY2xh
c3MgSVNPU3RyaW5nQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBjb250ZW50cygpIHsgcmV0dXJuIG1fY29udGVudHM7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCmluZGV4IGE2MTYw
YjY2YWU5NDY4MjA2NzdhZDI5MzRiMTgxZGViOTNjYzRmNDkuLmFlMjNiZWZmZmVkNjRhNmRlMjg5
MTc2ZTQxNTEwMTFmMDY3Yzk4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8gTiBieXRlcyA6IEN1ZVRpbWVCb3ggOiBib3ggOiBvcHRpb25hbAogLy8gTiBieXRl
cyA6IEN1ZVNldHRpbmdzQm94IDogYm94IDogb3B0aW9uYWwKIC8vIE4gYnl0ZXMgOiBDdWVQYXls
b2FkQm94IDogYm94IDogcmVxdWlyZWQKLWNsYXNzIElTT1dlYlZUVEN1ZSA6IHB1YmxpYyBJU09C
b3ggeworY2xhc3MgSVNPV2ViVlRUQ3VlIGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6
CiAgICAgSVNPV2ViVlRUQ3VlKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0aW9uVGltZSwgY29u
c3QgTWVkaWFUaW1lJiBkdXJhdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApp
bmRleCAzMjdlYmY2MDYyNTkwOWZiZTJjNWI2YmQ1MTk4YWNhMTlhNDVkNGE0Li41MDc5MzhiZTEx
MDVjZjQyNjA0NTU5MTNiMGM1ZTk5ZDRmNTRmOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250RGVzY3JpcHRvci5nZXQoKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkp
OwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0
IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKaW5k
ZXggODNmNzc2Njc5ZTE4OWM2ZmNlNGVmODYyNTdiMDA1ZDExMzc0ZTIyZC4uNmYyMTViMjdhYWQ5
NmMzZmE5YzIwN2YzMjBlZjllMzJiNDNiN2NjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGlu
Z09wZXJhdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBOaWNvc2lhIHsKIHN0cnVj
dCBQYWludGluZ09wZXJhdGlvblJlcGxheSB7IH07CiAKIHN0cnVjdCBQYWludGluZ09wZXJhdGlv
biB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHZpcnR1YWwgflBh
aW50aW5nT3BlcmF0aW9uKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBh
aW50aW5nT3BlcmF0aW9uUmVwbGF5JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFdURjo6
VGV4dFN0cmVhbSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAK
aW5kZXggMTA5YzJjNTc3Njc5YTEyMTRhYTZlYTEwMWM2ZjQ4MGZiYTJlYzYwMS4uNWJlZTYxM2Zj
ZjZiNDZhMDdjNjI4ZTU4MDE2ZjQ5YmI5MDIxYjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2Nl
bmVJbnRlZ3JhdGlvbi5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTY2VuZUludGVncmF0aW9u
OjpyZXF1ZXN0VXBkYXRlKCkKIAogc3RkOjp1bmlxdWVfcHRyPFNjZW5lSW50ZWdyYXRpb246OlVw
ZGF0ZVNjb3BlPiBTY2VuZUludGVncmF0aW9uOjpjcmVhdGVVcGRhdGVTY29wZSgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxVcGRhdGVTY29wZT4obWFrZVJlZigqdGhpcykpOwogfQogCiBT
Y2VuZUludGVncmF0aW9uOjpDbGllbnQ6On5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4
IDJiMWFlY2YwZDFiN2U2YTM0MWJmOTRiZmZhZWQyMjBmMWE0NTg2MzguLjUwZTBjM2M3ZDk3Njgy
NmJhN2JiODE4NWQxZWUxNDIxMjlhZGEwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGF1
dG8gY3JlYXRlQ29tbWFuZChBcmdzJiYuLi4gYXJndW1lbnRzKSAtPiBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfYmFzZV9vZjxPcGVyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogYXV0byBjcmVhdGVD
b21tYW5kKCkgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8T3BlcmF0aW9uRGF0
YTw+LCBUPjo6dmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxQYWludGluZ09wZXJhdGlvbj4+CiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxU
PigpOwogfQogCiBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpDYWlyb09wZXJhdGlvblJlY29yZGVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGFpbnRpbmdPcGVyYXRpb25zJiBjb21tYW5kTGlz
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJv
LmNwcAppbmRleCAwYzhhNjcwZTNhMGEzNjMwN2UzZjI5OWVjZGEwMjU1MmZkNzc0ZWQxLi5iMzUw
OGQ1MTdiMjRlNDc1YzA4YWY0OGIzM2U0MzFmZDI3OTIwNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0Nv
bnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCkBAIC03MCw4ICs3MCw4
IEBAIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGFpbnRpbmcoQnVmZmVy
JiBidWZmZXIpCiAgICAgICAgIH0pOwogCiAgICAgbV9jYWlyby5jb250ZXh0ID0gYWRvcHRSZWYo
Y2Fpcm9fY3JlYXRlKG1fY2Fpcm8uc3VyZmFjZS5nZXQoKSkpOwotICAgIG1fcGxhdGZvcm1Db250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4obV9j
YWlyby5jb250ZXh0LmdldCgpKTsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CisgICAgbV9wbGF0
Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvPiht
X2NhaXJvLmNvbnRleHQuZ2V0KCkpOworICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6Y3JlYXRlRmFjdG9yeSgqbV9wbGF0Zm9ybUNvbnRleHQpKTsKIH0KIAogUGFpbnRpbmdD
b250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjp+Rm9yUGFpbnRpbmcoKQpAQCAtMTA0LDEwICsxMDQs
MTAgQEAgdm9pZCBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OnJlcGxheShjb25z
dCBQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW4KIAogUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZv
clJlY29yZGluZzo6Rm9yUmVjb3JkaW5nKFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbmdPcGVy
YXRpb25zKQogewotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ+KAorICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KAogICAgICAgICBbJnBhaW50aW5nT3BlcmF0aW9u
c10oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihjb250
ZXh0LCBwYWludGluZ09wZXJhdGlvbnMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRpbmdPcGVyYXRpb25zKTsKICAg
ICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGQ0YzliNjA1YjRjZDI4
ZTM0OGVmZDg1MzM1MDM4YjU4YzlhNGRkZmEuLjhlMzc5MGY3YWI1NGY2YjNkOTU2ZjMwNzA0YzQy
OWMyYWNkYzMxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzcsNyArMzcsNyBAQCBh
dXRvIEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFj
dG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXShCYWNraW5nU3RvcmUmKSB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVUZXh0dXJl
TWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9y
ZVRleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwu
aAppbmRleCBlYWQ0OTc3NmU1MGEyM2NmZDUwMTRhN2U5NjQzMGIzZGUxMjRkYjBhLi5kNDM2ZjIw
YzMxNjFjMDU1NGE1YWEyMmEzOTMwYTk5NWVlYzM1YTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3Jl
VGV4dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaApA
QCAtNDEsNiArNDEsNyBAQAogbmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBCYWNraW5nU3Rv
cmVUZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBCYWNraW5nU3RvcmU6OkltcGwsIHB1
YmxpYyBXZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21w
b3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDM4ZmRkOTNkYTZiMTM4ODMx
NDA1OTE2NTNjZGYyOWUwN2RlMzIzOTYuLjc1NjkyYzdjNGE3YmZkYjE4NzFkZjE4MDJlMzg3NzUz
NmI2MTU1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3
IEBAIGF1dG8gQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5
KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXSh1aW50NjRf
dCwgQ29tcG9zaXRpb25MYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKICAg
ICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlcklt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaAppbmRleCA2NTU1YmZiMDgw
MjYxZThhMzA5NWJkZTQ4M2EwNjFiYjU0MjE0NTc0Li41MzBhNjc1MTAxNzI2ZWEyODcyOGM1M2Q4
ODhkYmRlZjdhYWU3OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC00MCw2ICs0
MCw3IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAog
Y2xhc3MgQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsIGZpbmFsIDogcHVibGljIENv
bXBvc2l0aW9uTGF5ZXI6OkltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbC5jcHAKaW5kZXggNTYxNzI4YjVlZjFmNDBkODBjNTM1OTkyNjcxMDY2YWQ4NzQ4MTlhNy4u
MmZiMGVjOTU5MTVhZWIwYmEwOTZmODBiYzY5MGQyZjNiMjg0OGM0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRl
bnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGF1dG8gQ29udGVudExheWVyVGV4dHVyZU1hcHBl
ckltcGw6OmNyZWF0ZUZhY3RvcnkoQ2xpZW50JiBjbGllbnQpIC0+IEZhY3RvcnkKIHsKICAgICBy
ZXR1cm4gRmFjdG9yeSgKICAgICAgICAgWyZjbGllbnRdKENvbnRlbnRMYXllciYpIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsPihjbGllbnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGw+KGNsaWVudCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbC5oCmluZGV4IGVmOTZhNjA4MzE2MmRlNDFjMjdkZTRiZjM1N2I4YTRmY2FmOGQ5Y2YuLmIw
MTA1YjczYWMyMjY0ZjU3Y2E3YjdlNTAzZWNmNzBkYTUyN2RhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIENvbnRlbnRMYXllclRleHR1cmVNYXBw
ZXJJbXBsIGZpbmFsIDogcHVibGljIENvbnRlbnRMYXllcjo6SW1wbCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCmluZGV4IDUyZWM3MGI2ODFm
N2JjNTYzYTY3NDc1NDM2MjM4NzZiMDMxMzlhOWIuLjlhOWJkNDY4M2IyNjc0MmFmZWNiMTQ5MWY2
MTQ0ZjJhNzhjNTk1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3Bw
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgR0MzRExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkK
ICAgICAgICAgYXV0byYgcHJveHkgPSBkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0
dXJlTWFwcGVySW1wbD4obV9jb250ZW50TGF5ZXItPmltcGwoKSkucHJveHkoKTsKIAogICAgICAg
ICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5sb2NrKCkpOwotICAgICAgICBwcm94eS5wdXNoTmV4
dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2Nv
bnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIHByb3h5LnB1c2hOZXh0QnVm
ZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4
dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2lu
dGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2NvbnRleHQubWFya0xheWVyQ29t
cG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oCmluZGV4IDMyZGI5
ZGQzN2E2ZjBkOWZhOGQ0ZDE4OGViMThmOGFlMTQ3NWEwMGIuLjlmNTQ0NWJiZTExODNjZTc0ODU1
OTNjYmJiZjE2NTBlZGNjZTQzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVy
LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgR0xDb250ZXh0OwogbmFtZXNwYWNlIE5pY29zaWEg
ewogCiBjbGFzcyBHQzNETGF5ZXIgOiBwdWJsaWMgQ29udGVudExheWVyVGV4dHVyZU1hcHBlcklt
cGw6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
R0MzRExheWVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEJiwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAgICB2aXJ0dWFsIH5HQzNETGF5ZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVy
ZU1hcHBlckltcGwuY3BwCmluZGV4IGEyYWUzNGEzMTMyN2U4NzE1NjU0MTQ2ZDE4Zjc3YzdhNjdm
MjQyMTYuLmQzNTNjOGJlMWI1YmZhMTE2YjZjYjg1MjA5NzAyNzdjYzkzMjQ1Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1
cmVNYXBwZXJJbXBsLmNwcApAQCAtMzcsNyArMzcsNyBAQCBhdXRvIEltYWdlQmFja2luZ1RleHR1
cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBG
YWN0b3J5KAogICAgICAgICBbXShJbWFnZUJhY2tpbmcmKSB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigp
OwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaAppbmRleCAxYTYyM2FmYTQwOTNi
MjJhYzIwZDEzYjMyOTM2MDgzYWNiMDhlYTgwLi40OWIxZTliMmVjMDM1NTJhMGJkNjEyMGFlNzdi
OGU2OTRhOTQ2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFz
cyBJbWFnZTsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgSW1hZ2VCYWNraW5nVGV4dHVy
ZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgSW1hZ2VCYWNraW5nOjpJbXBsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgRmFjdG9yeSBjcmVhdGVG
YWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaAppbmRleCA3YzYx
NGZiNDAzMzU4ZWE0MDQ1NmQ4NDYyY2Y4ZGM1YmMzYTRlYjE5Li4xNDcyMTc5MDc3MjdjYWVlYTI3
ZWY2OGEwNjljYzA1MzEwODIwZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1v
bi5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV4dGVu
c2lvbnMzRE9wZW5HTENvbW1vbiA6IHB1YmxpYyBFeHRlbnNpb25zM0QgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnMzRE9wZW5H
TENvbW1vbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBl
Njg0OGZjZWNhNDFlOTczNmYyYTM4MTdhOWZkMDNjZWJhZTNhYzExLi5iOTYzNjNiNTUxOTM1NmM4
Y2RmNDY1NDM2MzI2ZWQwNmNlY2VkODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVh
ckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9l
eHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlz
R0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0
ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAq
bV9leHRlbnNpb25zOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAppbmRleCBiMjRkZjAzNWUyODhlMWViMmY4YWY5ZjdhYjkxZDc3OWQw
YWNhNDllLi4yYTBlNWI3NmU0ZDZiYWI3MGU5MGIyZjNkMjhlYjQzYzA3ZjQyNTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTY1Niw3ICs2
NTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQogICAgIEFOR0xFUmVzb3VyY2VzLkhhc2hGdW5jdGlvbiA9IG5hbWVIYXNo
Rm9yU2hhZGVyOwogCiAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgIG5h
bWVIYXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7
CisgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhh
c2g+KCk7CiAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFwRm9y
U2hhZGVycy5nZXQoKSk7CiAgICAgbV9jb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNvdXJj
ZXMpOwogCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om1h
cHBlZFN5bWJvbE5hbWUoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBBTkdMRVNoYWRlcgogICAg
ICAgICAvLyBBdHRyaWJ1dGVzIGFyZSBhIHNwZWNpYWwgY2FzZTogdGhleSBtYXkgYmUgcmVxdWVz
dGVkIGJlZm9yZSBhbnkgc2hhZGVycyBoYXZlIGJlZW4gY29tcGlsZWQsCiAgICAgICAgIC8vIGFu
ZCBhcmVuJ3QgZXZlbiByZXF1aXJlZCB0byBiZSB1c2VkIGluIGFueSBzaGFkZXIgcHJvZ3JhbS4K
ICAgICAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgICAgICBuYW1lSGFz
aE1hcEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAg
ICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gbWFrZVVuaXF1ZTxTaGFkZXJOYW1lSGFz
aD4oKTsKICAgICAgICAgc2V0Q3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyKG5hbWVIYXNoTWFw
Rm9yU2hhZGVycy5nZXQoKSk7CiAKICAgICAgICAgYXV0byBnZW5lcmF0ZWROYW1lID0gZ2VuZXJh
dGVIYXNoZWROYW1lKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMu
Y3BwCmluZGV4IDI0MzA0NmQ5ODlhZDczOGY3YzlmNzE0OTU1NjdjOTZiYjM0YzU2NDEuLjcwYTIw
ZDUwYzM1MjFhNjEyM2U2ZWZhZjFmNDc2OGY2NDk1Y2RlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9u
cykKLSAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RP
cGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25z
ID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFu
dCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KICNlbmRpZgpAQCAtMjcxLDcgKzI3
MSw3IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZShHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGlj
c0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdp
bmRvdyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSwgR3JhcGhp
Y3NDb250ZXh0M0QqIHNoYXJlZENvbnRleHQpCiAgICAgOiBtX2F0dHJzKGF0dHJpYnV0ZXMpCiAg
ICAgLCBtX2NvbXBpbGVyKGlzR0xFUzJDb21wbGlhbnQoKSA/IFNIX0VTU0xfT1VUUFVUIDogU0hf
R0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQorICAgICwg
bV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5k
ZXJTdHlsZSkpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29u
dGV4dCk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGVkNmNjZjE5NGJiZWUxZTAwZmQ0Mzlm
NjFhNmRlNjJlNDAzMDJlYTMuLjhmZDNhZDRmNzJkNzY0YmQ5NWQyMjBmNTgxZWQyYjc5NjI4ODNj
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3Bw
CkBAIC0xMDYsOSArMTA2LDkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNE
KEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3MKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsKICNpZiBVU0UoTklDT1NJ
QSkKLSAgICBtX25pY29zaWFMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8Tmljb3NpYTo6R0MzRExh
eWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOworICAgIG1fbmljb3NpYUxheWVyID0gbWFrZVVuaXF1
ZTxOaWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAjZWxzZQotICAgIG1f
dGV4bWFwTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1M
YXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX3RleG1hcExheWVyID0gbWFrZVVuaXF1
ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CiAj
ZW5kaWYKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMzI1LDEwICszMjUsMTAgQEAg
RXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiAgICAgaWYg
KCFtX2V4dGVuc2lvbnMpIHsKICNpZiBVU0UoT1BFTkdMX0VTKQogICAgICAgICAvLyBnbEdldFN0
cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KLSAgICAgICAgbV9leHRlbnNpb25zID0g
c3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKKyAg
ICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhp
cywgIGZhbHNlKTsKICNlbHNlCiAgICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2Ug
dGhlIENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KLSAg
ICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+
KHRoaXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICAgICAg
bV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIEdMQ29u
dGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgIH0KICAgICBy
ZXR1cm4gKm1fZXh0ZW5zaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxh
dGZvcm1MYXllci5jcHAKaW5kZXggMTRmMWRiZjE4ZDkxYjM5MDc1ZTJkNTBmMjE0OWI3NzZiYmMx
NzQ5My4uNjYzMjMxNTY5NWJhMjFjMjY3ZDE1NTkzMmViYTkxNDdmYjY2YWUwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
QzNEUGxhdGZvcm1MYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQoKQogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihtX3BsYXRmb3JtTGF5
ZXJQcm94eS0+bG9jaygpKTsKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0
QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29u
dGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJv
eHktPnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3Ms
IG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKICAgICB9CiAKICAgICBtX2NvbnRl
eHQubWFya0xheWVyQ29tcG9zaXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5oCmluZGV4IDhiNjAyMTRhYmE5YjgzY2ExOTMwZjEzNWM3NTM0OGIyNjZm
ZTVjYWMuLmU2ZjA5Yzg3OTg1NDg2MzJlZTRiMGFhNWE1NjMwNjE1YTI0YTM3ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0MzRFBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgKQEAgLTMyLDYgKzMyLDcg
QEAgY2xhc3MgR0xDb250ZXh0OwogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eTsKIAogY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyIDogcHVibGljIFBsYXRm
b3JtTGF5ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFRl
eHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcihHcmFwaGljc0NvbnRleHQzRCYsIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckdDM0RQ
bGF0Zm9ybUxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDk3NGI4NTc4Yjg4YWE2
NDM1MDkxZThiMGMzOGJiMmRiNzEwZWYxMDIuLmEyZjc1ODY2ZTMyM2I4ZmRiYTQzYTAwN2Q0NDdh
YWE0NjU3NmJmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAg
VGV4dHVyZU1hcHBlckdMOjpUZXh0dXJlTWFwcGVyR0woKQogCiAgICAgbV9kYXRhID0gbmV3IFRl
eHR1cmVNYXBwZXJHTERhdGEocGxhdGZvcm1Db250ZXh0KTsKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCi0gICAgbV90ZXh0dXJlUG9vbCA9IHN0ZDo6bWFrZV91bmlxdWU8Qml0bWFwVGV4dHVy
ZVBvb2w+KG1fY29udGV4dEF0dHJpYnV0ZXMpOworICAgIG1fdGV4dHVyZVBvb2wgPSBtYWtlVW5p
cXVlPEJpdG1hcFRleHR1cmVQb29sPihtX2NvbnRleHRBdHRyaWJ1dGVzKTsKICNlbmRpZgogfQog
CkBAIC03OTAsNyArNzkwLDcgQEAgUmVmPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6
Y3JlYXRlVGV4dHVyZShHTGludCBpbnRlcm5hbEZvcm1hdCkKIAogc3RkOjp1bmlxdWVfcHRyPFRl
eHR1cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJHTD4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyR0w+KCk7CiB9CiAKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCA3YWZkZjMw
YTA1YmNhNTM5N2I4MDE4YmZlYmQ4OWUwZTFkYTUwMzMzLi5lMTFhMGJiMjdiODEwYzJkNTI3NmIy
YTliMGM1MDlmODg5NTA2NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmYKICAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJl
TWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0
ZXh0dXJlLT5yZXNldChtX3NpemUpOwogICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+
KHRleHR1cmUuZ2V0KCkpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4oV1RGTW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSwgbV9l
eHRyYUZsYWdzKTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHkuY3BwCmluZGV4IGM3MTRmNmQ3OGMxY2YxYTYxZDRkZmY2YjQyMDUy
MWIwMmVjZDdjNTAuLjM3OTM2NzVhYzhkNmIzYzMyYTNiMzE4MTkzZTQ5YTdiMzdkYzQ4ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKQEAg
LTcxLDggKzcxLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3Rp
dmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY28KICAgICBpZiAobV90YXJnZXRM
YXllciAmJiBtX2N1cnJlbnRCdWZmZXIpCiAgICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRl
bnRzTGF5ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsKIAotICAgIG1fcmVsZWFzZVVudXNlZEJ1
ZmZlcnNUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7
Ci0gICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpj
dXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3Np
dG9yVGhyZWFkVXBkYXRlVGltZXJGaXJlZCk7CisgICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1Rp
bWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKTsKKyAgICBtX2NvbXBv
c2l0b3JUaHJlYWRVcGRhdGVUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1l
ckZpcmVkKTsKIAogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgbV9jb21wb3NpdG9yVGhy
ZWFkVXBkYXRlVGltZXItPnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6Q29tcG9z
aXRpbmdUaHJlYWRVcGRhdGVUaW1lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDM2N2Q4YTUzY2YzNzBkMjIwMmQ2
ZjM0MDFjZGNiM2EwMmZmNDJjMmIuLmQ0NzU3MTBiYTBjZGRmYmNkYmRhMGM2OGNlMzBiODFlZmFh
ZDY5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCkBAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCkKIAogICAgIC8vIEVuc3VyZSB0aGUgVGls
ZWRCYWNraW5nU3RvcmUgb2JqZWN0LCBhbmQgZW5mb3JjZSBhIGNvbXBsZXRlIHJlcGFpbnQgaWYg
aXQncyBub3QgYmVlbiBwcmVzZW50IHlldC4KICAgICBpZiAoIWxheWVyU3RhdGUubWFpbkJhY2tp
bmdTdG9yZSkgewotICAgICAgICBsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRpbGVkQmFja2luZ1N0b3JlPihpbXBsLCBlZmZlY3RpdmVDb250ZW50c1NjYWxl
KCkpOworICAgICAgICBsYXllclN0YXRlLm1haW5CYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFRp
bGVkQmFja2luZ1N0b3JlPihpbXBsLCBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOwogICAgICAg
ICBtX3BlbmRpbmdWaXNpYmxlUmVjdEFkanVzdG1lbnQgPSB0cnVlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1RpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9UaWxlLmgKaW5kZXggMmMyNGUwODRlMzI5NmE0N2UwOWU5NjEwZDc0OGQ2YTg4ZmU0OTY1
Ni4uZmJjMjQ1YmUxZTUwMzg1M2M3MzJmMDFlNWEzNGU1NTg0YTViM2MzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVGlsZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRp
bGVkQmFja2luZ1N0b3JlOwogCiBjbGFzcyBUaWxlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludFBvaW50IENvb3JkaW5hdGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDNiZTQzMTFk
ZWFhMDI0OTdjN2VkMWNkY2ExMzQ1YmE1YTY4MDMxMDkuLjRhNjk3ODIyZTRkZTJjZGI4YjY2Zjgx
ZDQwNGQ4ZGJlODJiNDk4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFj
a2luZ1N0b3JlLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZVRpbGVzKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBJbnRSZWN0JiBz
CiAgICAgdW5zaWduZWQgdGlsZXNUb0NyZWF0ZUNvdW50ID0gdGlsZXNUb0NyZWF0ZS5zaXplKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IHRpbGVzVG9DcmVhdGVDb3VudDsgKytuKSB7
CiAgICAgICAgIFRpbGU6OkNvb3JkaW5hdGUgY29vcmRpbmF0ZSA9IHRpbGVzVG9DcmVhdGVbbl07
Ci0gICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIHN0ZDo6bWFrZV91bmlxdWU8VGlsZT4o
KnRoaXMsIGNvb3JkaW5hdGUpKTsKKyAgICAgICAgbV90aWxlcy5hZGQoY29vcmRpbmF0ZSwgbWFr
ZVVuaXF1ZTxUaWxlPigqdGhpcywgY29vcmRpbmF0ZSkpOwogICAgIH0KICAgICByZXF1aXJlZFRp
bGVDb3VudCAtPSB0aWxlc1RvQ3JlYXRlQ291bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5j
cHAKaW5kZXggYzg4ZTliZWY5ZDY2Y2EyYjU1MDE4YzkwZjRiMGE0MjhiNDY4MmVmOC4uNGVhZjAw
MTEyMGM0N2ZmY2U1NWFiNGRmYTkyMTgzY2U4YjMxOTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1T
dGF0ZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgVHJhbnNmb3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRl
OjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUmIG90aGVyKQogICAgIGlmIChtX21hcFF1
YWQpIHsKICAgICAgICAgbV9sYXN0UGxhbmFyUXVhZCA9IG90aGVyLm1fbGFzdFBsYW5hclF1YWQ7
CiAgICAgICAgIGlmIChvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKQotICAgICAgICAg
ICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFk
Pigqb3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CisgICAgICAgICAgICBtX2xhc3RQ
bGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpvdGhlci5tX2xhc3RQ
bGFuYXJTZWNvbmRhcnlRdWFkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7CiAgICAgfQpAQCAtNTAsNyArNTAsNyBAQCBUcmFu
c2Zvcm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPShjb25zdCBUcmFuc2Zvcm1TdGF0
ZSYgb3RoZXIpCiAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG51bGxwdHI7CiAKICAgICBp
ZiAob3RoZXIubV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkKLSAgICAgICAgbV9hY2N1bXVsYXRlZFRy
YW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5t
X2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9
IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5tX2FjY3VtdWxhdGVkVHJh
bnNmb3JtKTsKICAgICAgICAgCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMTI5LDEyICsxMjks
MTIgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybUZyb21Db24KICAgICAvLyBJZiB3ZSBoYXZlIGFuIGFjY3Vt
dWxhdGVkIHRyYW5zZm9ybSBmcm9tIGxhc3QgdGltZSwgbXVsdGlwbHkgaW4gdGhpcyB0cmFuc2Zv
cm0KICAgICBpZiAobV9hY2N1bXVsYXRlZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAobV9kaXJl
Y3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCi0gICAgICAgICAgICBtX2FjY3VtdWxh
dGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJh
bnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKKyAgICAgICAg
ICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyICogKm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tdWx0aXBs
eSh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKICAgICB9IGVsc2UgaWYgKGFjY3VtdWxhdGUgPT0g
QWNjdW11bGF0ZVRyYW5zZm9ybSkgewogICAgICAgICAvLyBNYWtlIG9uZSBpZiB3ZSBzdGFydGVk
IHRvIGFjY3VtdWxhdGUKLSAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwor
ICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfQogICAgIAogICAgIGlmIChh
Y2N1bXVsYXRlID09IEZsYXR0ZW5UcmFuc2Zvcm0pIHsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lk
IFRyYW5zZm9ybVN0YXRlOjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZChjb25zdCBGbG9hdFF1
YWQqIHF1YWQpCiAgICAgLy8gTWFwIHRoZSBxdWFkIGJhY2sgdGhyb3VnaCBhbnkgdHJhbnNmb3Jt
IG9yIG9mZnNldCBiYWNrIGludG8gdGhlIGxhc3QgZmxhdHRlbmluZyBjb29yZGluYXRlIHNwYWNl
LgogICAgIEZsb2F0UXVhZCBiYWNrTWFwcGVkUXVhZCgqcXVhZCk7CiAgICAgbWFwUXVhZChiYWNr
TWFwcGVkUXVhZCwgaW52ZXJzZURpcmVjdGlvbigpKTsKLSAgICBtX2xhc3RQbGFuYXJTZWNvbmRh
cnlRdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KGJhY2tNYXBwZWRRdWFkKTsKKyAg
ICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KGJhY2tN
YXBwZWRRdWFkKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwUXVhZChGbG9hdFF1YWQm
IHF1YWQsIFRyYW5zZm9ybURpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHdhc0NsYW1wZWQpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKaW5kZXggMTA4NjM3NDAwYTIwZmEyZjA5ZGY2YWQ0
MzkzM2NhN2RhMTdmNDg2MS4uYjYyNTgzNmE1Y2UyMjViZjQ3ZjMzMGMwOGMyOWQ4Yzc1NjUyZWU3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBUcmFu
c2Zvcm1TdGF0ZSB7CiAgICAgICAgIC8vIFdlIG11c3QgYmUgaW4gYSBmbGF0dGVuZWQgc3RhdGUg
KG5vIGFjY3VtdWxhdGVkIG9mZnNldCkgd2hlbiBzZXR0aW5nIHRoaXMgc2Vjb25kYXJ5IHF1YWQu
CiAgICAgICAgIEFTU0VSVChtX2FjY3VtdWxhdGVkT2Zmc2V0ID09IExheW91dFNpemUoKSk7CiAg
ICAgICAgIGlmIChxdWFkKQotICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9
IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CisgICAgICAgICAgICBtX2xhc3RQ
bGFuYXJTZWNvbmRhcnlRdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCpxdWFkKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG51bGxwdHI7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENhY2hlV2luLmNwcAppbmRleCBkMzFhMjU3OWZiMWUxYzc5NDI1ZDAyOTA1ZWJlYmM4OGQx
NGFkZDUwLi44Zjc3MDI3NWRlNjk5NTY4Yzg1MTVhZWEwZjJjZmEwZTUyMDU2NzI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcApAQCAtNjQyLDcgKzY0Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRh
PiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgYm9v
bCBzeW50aGVzaXplQm9sZCA9IGlzR0RJRm9udFdlaWdodEJvbGQod2VpZ2h0KSAmJiAhaXNHRElG
b250V2VpZ2h0Qm9sZChsb2dGb250LmxmV2VpZ2h0KTsKICAgICBib29sIHN5bnRoZXNpemVJdGFs
aWMgPSBpc0l0YWxpYyhmb250RGVzY3JpcHRpb24uaXRhbGljKCkpICYmICFsb2dGb250LmxmSXRh
bGljOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURh
dGE+KFdURk1vdmUoaGZvbnQpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwg
c3ludGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJdGFsaWMsIHVzZUdESSk7CisgICAgYXV0byByZXN1
bHQgPSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KFdURk1vdmUoaGZvbnQpLCBmb250RGVz
Y3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhlc2l6ZUJvbGQsIHN5bnRoZXNpemVJ
dGFsaWMsIHVzZUdESSk7CiAKICNpZiBVU0UoQ0cpCiAgICAgYm9vbCBmb250Q3JlYXRpb25GYWls
ZWQgPSAhcmVzdWx0LT5jZ0ZvbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRl
eCAzODdhMjM5ZjgyOWMyZDc4MDljMmM5NmQzZmUxMjRkZWUxNGJkM2Q3Li42NDg0ODVhYzI2Y2Iy
Mzc1Y2Y2NTc0ZjgxZmY0Y2Q2NTY3MmM1MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKICAgICBmb250
UmVmZXJlbmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAg
IGlmICghZm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwg
Zm9udE5hbWUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCmluZGV4IDE5MDQ0OTAwNDVmNGU3ZTdmN2RiODFkOTVmMGE2YTI0MmJkNTQ4Mzgu
LmVhYjgwNmU0MmMwNjJkNTU5Nzg5OTQ1MmVmZTc0NzRlNTk5ZjkyZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaApAQCAtNDEsNiArNDEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBG
b250RmVhdHVyZVNldHRpbmdzOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSk7CiBwdWJsaWM6CiAgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShIQU5ETEUgZm9udFJlZmVyZW5jZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCBhYjdjNzkwZDYwZjJlOGY3NGFmMDNjMDZh
Y2ZjNzJjOGUzOWMyMmQ5Li5lZWVhZmViZDkzM2NhOWM3OGRkMDUxNDEzZDIzMzQ0Y2E4NTNiMDEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtOTEsNyArOTEs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGlmICghZm9udFJlZmVyZW5jZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5h
bWUpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNv
bnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKaW5kZXggYjk1MzU1
MDNjMzA2YzUwMWFhMzkzZjMxZmZkOTI4ODVlZGU5YmRlZi4uY2M3YWQzZWMzMTBiYWZmOWYyZDUz
MTNlYTM3ZWJiNjY3Yzc5ZDRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCkBAIC00Myw2
ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBpbnQga0Z1bGxTY3Jl
ZW5BbmltYXRpb25EdXJhdGlvbiA9IDUwMDsgLy8gbWlsbGlzZWNvbmRzIAogCiBjbGFzcyBGdWxs
U2NyZWVuQ29udHJvbGxlcjo6UHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVGdWxs
c2NyZWVuQ2xpZW50ICB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgUHJpdmF0ZShGdWxsU2NyZWVuQ29udHJvbGxlciogY29udHJvbGxlciwgRnVsbFNjcmVlbkNv
bnRyb2xsZXJDbGllbnQqIGNsaWVudCkgCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xs
ZXIpCkBAIC0xMDMsNyArMTA0LDcgQEAgTFJFU1VMVCBGdWxsU2NyZWVuQ29udHJvbGxlcjo6UHJp
dmF0ZTo6ZnVsbHNjcmVlbkNsaWVudFduZFByb2MoSFdORCBod25kLCBVSU5UIG0KIH0KIAogRnVs
bFNjcmVlbkNvbnRyb2xsZXI6OkZ1bGxTY3JlZW5Db250cm9sbGVyKEZ1bGxTY3JlZW5Db250cm9s
bGVyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxQcml2
YXRlPih0aGlzLCBjbGllbnQpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8UHJpdmF0ZT4o
dGhpcywgY2xpZW50KSkKIHsKICAgICBBU1NFUlRfQVJHKGNsaWVudCwgY2xpZW50KTsKIH0KQEAg
LTEzMSwxMyArMTMyLDEzIEBAIHZvaWQgRnVsbFNjcmVlbkNvbnRyb2xsZXI6OmVudGVyRnVsbFNj
cmVlbigpCiAgICAgbV9wcml2YXRlLT5tX29yaWdpbmFsRnJhbWUgPSBvcmlnaW5hbEZyYW1lOwog
CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdyk7Ci0gICAgbV9wcml2
YXRlLT5tX2JhY2tncm91bmRXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgbV9wcml2YXRlLT5t
X2JhY2tncm91bmRXaW5kb3cgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3Jl
ZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRX
aW5kb3ctPmNyZWF0ZVdpbmRvdygwKTsKICAgICA6OkFuaW1hdGVXaW5kb3cobV9wcml2YXRlLT5t
X2JhY2tncm91bmRXaW5kb3ctPmh3bmQoKSwga0Z1bGxTY3JlZW5BbmltYXRpb25EdXJhdGlvbiwg
QVdfQkxFTkQgfCBBV19BQ1RJVkFURSk7CiAKICAgICBtX3ByaXZhdGUtPm1fY2xpZW50LT5mdWxs
U2NyZWVuQ2xpZW50V2lsbEVudGVyRnVsbFNjcmVlbigpOwogICAgIEFTU0VSVCghbV9wcml2YXRl
LT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93
ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93Piht
X3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93ID0gbWFr
ZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0
KCkpOwogICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyk7CiAgICAgbV9w
cml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3ctPmNyZWF0ZVdpbmRvdygwKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENh
aXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDYWlyb1dpbi5jcHAKaW5kZXggMTA2N2I5NjA5M2RiMmVkNTkxYTIxYTMxZDlkMDI1
NmRjMTI5M2U4OS4uZjE0NDI1NzJjYzZkMWQ1NGJiZWU1OGJkYmMzNmVkZjc3NGFhYmI2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dENhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGRjLCBib29sIGhhc0FscGhhKQogCiAgICAg
Y2Fpcm9fdCogY3IgPSBjcmVhdGVDYWlyb0NvbnRleHRXaXRoSERDKGRjLCBoYXNBbHBoYSk7CiAK
LSAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7CisgICAgbV9kYXRhID0gbmV3IEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dENh
aXJvPihjcikpOwogICAgIG1fZGF0YS0+cGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4
dFByaXZhdGUobV9kYXRhKTsKICAgICBtX2RhdGEtPm1faGRjID0gZGM7CiAgICAgaWYgKHBsYXRm
b3JtQ29udGV4dCgpLT5jcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRl
eCBjMmJhZmFmOTZhMTYwNzA4MGI3NjMzOTUyNjYyZTc2Nzc2MTRiMDBjLi45NmM4MjgxYWY0YjIy
YzY2ODZhY2IxNGM1ZTgyYzFkNjliOTBkZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3Qy
RC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQo
SERDIGhkYywgSUQyRDFEQ1JlbmRlclRhcmdldCoqIHJlbmRlclRhcmdldCwgUkUKIAogICAgICgq
cmVuZGVyVGFyZ2V0KS0+QmluZERDKGhkYywgJnJlY3QpOwogCi0gICAgYXV0byBvd25lZFBsYXRm
b3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KCpy
ZW5kZXJUYXJnZXQpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFyZ2V0KTsKICAgICBtX2RhdGEgPSBu
ZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1vdmUob3duZWRQbGF0Zm9ybUNv
bnRleHQpLCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBtX2Rh
dGEtPm1faGRjID0gaGRjOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGhkYywgYm9vbCBoYXNBbHBoYSkKICAgICBpZiAoIVNVQ0NF
RURFRChocikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJn
ZXQuZ2V0KCkpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQuZ2V0KCkpOwogICAgIG1fZGF0YSA9
IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShvd25lZFBsYXRmb3Jt
Q29udGV4dCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogICAgIG1f
ZGF0YS0+bV9oZGMgPSBoZGM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5j
cHAKaW5kZXggYmQ3NmVmYmJhOWQwZTg5N2QzZDI4OGU4NWU4ZDI0NDRjYzRmOGY0ZS4uMWViYjVi
MDlkMzg1MzdjMDE5MjIwYjk0N2RjYWQ5NDRkOGUxMDExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpH
cmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNy
ZWF0ZUYKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFj
dG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250
ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsKIH0KIApAQCAtNTUsMTQgKzU1LDE0
IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6
R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFtyZW5kZXJUYXJnZXRdKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCByZW5kZXJU
YXJnZXQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJEPihjb250ZXh0LCByZW5kZXJUYXJnZXQpOwogICAgICAgICB9KTsKIH0KIAogR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1D
b250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3QgeyB9
LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1D
b250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRt
YXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtl
VW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQs
IEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkp
CiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3By
aXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRl
eHQpOwpAQCAtNzAsOSArNzAsOSBAQCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OkdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQmIGNvbnRleAogCiBHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAgICAg
OiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5z
Zm9ybSB7IH0pCi0gICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldCkpCisgICAgLCBtX293bmVkUGxh
dGZvcm1Db250ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRh
cmdldCkpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVy
aW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGlj
c0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpKQogewogICAg
IG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdl
dCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dFdpbi5jcHAKaW5kZXggNWJkZTRjZWRmNTE2YTkxNzlhNmQzZDNiM2UzM2QxMzRl
ZDVhYjUxMS4uMWQ4MDQyMGNmN2VjNmNkNzc1YTYyYmFlYTIyZjk5MDYwN2ViNGNiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dFdpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpXaW5k
b3dzQml0bWFwOjp+V2luZG93c0JpdG1hcCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ6OldpbmRvd3NCaXRtYXA+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlV2luZG93c0JpdG1h
cChjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdp
bmRvd3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFdpbmRvd3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRp
cmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcAppbmRleCAwNmMxNzQ1NzlhNGJjMTMwOTFmMzRiNTc5NGFhYTkyOTkz
YmJiYTI0Li4zNWE5ZmY2MTEzNTFjMzNjNzE3NGQ5MmExZmRjZjQ0NzBlODFhODg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJl
Y3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGlyZWN0MkQuY3BwCkBAIC0xMTIsOCArMTEyLDggQEAgSW1hZ2VCdWZmZXI6OkltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xv
clNwYWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm90ZTogVGhpcyBwbGFjZXMgdGhlIGJp
dG1hcGNvbnRleHQgaW50byBhIGxvY2tlZCBzdGF0ZSBiZWNhdXNlIG9mIHRoZSBCZWdpbkRyYXcg
Y2FsbCBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAgbV9kYXRhLnBsYXRmb3JtQ29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KGJpdG1hcENvbnRleHQuZ2V0
KCkpOwotICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRl
eHQ+KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFw
UmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CisgICAgbV9kYXRhLnBsYXRmb3JtQ29u
dGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KGJpdG1hcENvbnRleHQu
Z2V0KCkpOworICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+
KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVu
ZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCmluZGV4IGUw
NjYzMTBhMGFjYTcxYmQ5YWM4MWRkMTZiYTBkYjE1YTdkNTExZDUuLmQyODUzOGExNTgyMjhiMmM4
OWUxODNjNzM5MTRlMTJiOGExODkxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZUZ1bGxzY3JlZW5XaW5kb3cuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVGdWxsc2NyZWVuQ2xpZW50IHsKIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUZ1
bGxzY3JlZW5XaW5kb3cgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbkNsaWVudCopOwogICAgIH5NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3Bw
CmluZGV4IDU4MzhlYzE1N2EyYzdiNzE2M2I3MTY4MmE0ZWI4YzgwMzRlOTYzMjEuLjZkNjRhZTlh
NmUzYTQxN2ZiMTRmMTIxNjZmNjhkM2M5YTU1MjY2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC04Miw3ICs4Miw3IEBAIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbigpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlz
QXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIp
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+
KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBl
LCAwLCAwLCAwLCAwKTsKICAgICB9CiB9CkBAIC0zMDEsNyArMzAxLDcgQEAgZmxvYXQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjptYXhUaW1lU2Vla2FibGUoKSBjb25zdAogCiBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgY29uc3QKIHsgCi0gICAgYXV0byByYW5nZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHJhbmdlcyA9IG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGlmIChtX3ByZXNlbnRlciAmJiBt
X3ByZXNlbnRlci0+bWF4VGltZUxvYWRlZCgpID4gMCkKICAgICAgICAgcmFuZ2VzLT5hZGQoTWVk
aWFUaW1lOjp6ZXJvVGltZSgpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV9wcmVzZW50
ZXItPm1heFRpbWVMb2FkZWQoKSkpOwogICAgIHJldHVybiByYW5nZXM7CkBAIC04ODgsNyArODg4
LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRlb1ByZXNl
bnRlcjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXIoTWUKICAgICBtX3NvdXJjZVJlY3QuYm90dG9tID0g
MTsKICAgICBtX3NvdXJjZVJlY3QucmlnaHQgPSAxOwogCi0gICAgbV9wcmVzZW50ZXJFbmdpbmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPERpcmVjdDNEUHJlc2VudGVyPigpOworICAgIG1fcHJlc2VudGVy
RW5naW5lID0gbWFrZVVuaXF1ZTxEaXJlY3QzRFByZXNlbnRlcj4oKTsKICAgICBpZiAoIW1fcHJl
c2VudGVyRW5naW5lKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb24uaAppbmRleCA5MGU5YjcyMTU3MDhhYzJhMmVmZjdkNGE2YWRl
MTQ3ZWVlMjg4NDY2Li5hMjE2NjExMGIzODAwZjE3NjQ3MTY1YzJkMDJhMGRhOWVhOTUxMDJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oCkBAIC00Nyw2
ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2UsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oTWVkaWFQbGF5ZXIqKTsKICAgICB+
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKCk7CkBAIC0xNjgsNiArMTY5LDcgQEAg
Y2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1l
ZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICB9OwogCiAgICAgY2xhc3MgQXN5bmNDYWxsYmFj
ayA6IHB1YmxpYyBJTUZBc3luY0NhbGxiYWNrLCBwdWJsaWMgTWVkaWFQbGF5ZXJMaXN0ZW5lciB7
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAg
QXN5bmNDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24qLCBib29sIGV2
ZW50KTsKICAgICAgICAgfkFzeW5jQ2FsbGJhY2soKTsKQEAgLTE5MSw2ICsxOTMsNyBAQCBjbGFz
cyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYQogICAgIHR5cGVkZWYgRGVxdWU8Q09NUHRyPElNRlNhbXBsZT4+
IFZpZGVvU2FtcGxlTGlzdDsKIAogICAgIGNsYXNzIFZpZGVvU2FtcGxlUG9vbCB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVmlkZW9TYW1w
bGVQb29sKCkgPSBkZWZhdWx0OwogICAgICAgICB2aXJ0dWFsIH5WaWRlb1NhbXBsZVBvb2woKSA9
IGRlZmF1bHQ7CkBAIC0yMTIsNiArMjE1LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAg
ICBjbGFzcyBEaXJlY3QzRFByZXNlbnRlcjsKIAogICAgIGNsYXNzIFZpZGVvU2NoZWR1bGVyIHsK
KyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBW
aWRlb1NjaGVkdWxlcigpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVhbCB+VmlkZW9TY2hlZHVs
ZXIoKSA9IGRlZmF1bHQ7CkBAIC0yNTcsNiArMjYxLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmEKICAgICB9OwogCiAgICAgY2xhc3MgRGlyZWN0M0RQcmVzZW50ZXIgeworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIERpcmVjdDNEUHJlc2Vu
dGVyKCk7CiAgICAgICAgIH5EaXJlY3QzRFByZXNlbnRlcigpOwpAQCAtMzE5LDYgKzMyNCw3IEBA
IGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgICAgICwgcHVibGljIElNRlZpZGVvRGlzcGxh
eUNvbnRyb2wKICAgICAgICAgLCBwdWJsaWMgSU1GQXN5bmNDYWxsYmFjawogICAgICAgICAsIHB1
YmxpYyBNZWRpYVBsYXllckxpc3RlbmVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgogICAgICAgICBDdXN0b21WaWRlb1ByZXNlbnRlcihNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24qKTsKICAgICAgICAgfkN1c3RvbVZpZGVvUHJlc2VudGVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCmluZGV4IDZmYmUyYjVlZDc1YWIzYmEwNGUz
MDI1NDljY2ViOTE2MWFmNWMwMTMuLjE5MDU0MGUwMzNkOWI3Y2M4YzU0YjhiMWJlZjc3NjkyYmQ1
Zjk0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Q
bGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oCkBAIC00NSw2ICs0NSw3IEBAIHN0
cnVjdCBTaGFkb3dTdGF0ZTsKIH0KIAogY2xhc3MgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEKTsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRChJRDJEMVJlbmRlclRhcmdldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAKaW5kZXggMzM3ZmFmMzc4ZGE3
OTU1YmVhNjEwYWVjOTA3NTc5NjZkNmM0ODIwMC4uOWQ3ZDkyZThlYWQ5NmExYmJkZmJkMWQ5MmRj
OTY2MjFjNmM0MmY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENBSW1hZ2VRdWV1ZVJl
Zj4gbV9pbWFnZVF1ZXVlOwogfTsKQEAgLTUwLDEzICs1MSwxMyBAQCBzdGF0aWMgdm9pZCBXS0NB
SW1hZ2VRdWV1ZVJlbGVhc2UoQ0FJbWFnZVF1ZXVlUmVmIGlxKQogfQogCiBXS0NBSW1hZ2VRdWV1
ZTo6V0tDQUltYWdlUXVldWUodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMy
X3QgY2FwYWNpdHkpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VR
dWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1
ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBhZG9wdENGKHdr
Q0FJbWFnZVF1ZXVlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIGNhcGFjaXR5KSk7CiB9CiAKIFdLQ0FJ
bWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZShjb25zdCBXS0NBSW1hZ2VRdWV1ZSYgbykKLSAgICA6
IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKKyAg
ICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKIHsKICAg
ICBtX3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IG8ubV9wcml2YXRlLT5tX2ltYWdlUXVldWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXgg
NzFhMDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NC4uNDIyNTJkMzRiNTRmZTZj
MmMyNmI1MjJjNjYwZTg2MmYwNTZlZjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDMsMjQgKzQzLDI0IEBAIGVudW0gQ2xpcGJvYXJk
RGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0
ZWJvYXJkPigiQ0xJUEJPQVJEIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4o
IkNMSVBCT0FSRCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQYXN0ZWJvYXJkPigiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3Rl
Ym9hcmQ+KCJQUklNQVJZIik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRh
OjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9u
RGF0YTo6Y3JlYXRlKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVi
b2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewog
ICAgIEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVs
cGVyLmNwcAppbmRleCA0OTAzNzFhZDg5ZWYyZTc5NmUzNDAxYWFjMWRiYjgwNmVhOTY2ZWIwLi5h
ZjhmZjM0MjQ2YmM5NzJmMWE1ZmY3MzdmOTkyOTgwOWZiNjY5YjBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC0yNjYsNiArMjY2
LDcgQEAgVmVjdG9yPEdka0F0b20+IFBhc3RlYm9hcmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRl
eHQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWcKIHN0YXRpYyBTZWxlY3Rpb25EYXRhKiBzZXR0
aW5nQ2xpcGJvYXJkU2VsZWN0aW9uOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIENsaXBib2FyZFNldERhdGEoU2Vs
ZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBzZWxlY3Rpb25D
bGVhcmVkQ2FsbGJhY2spCiAgICAgICAgIDogc2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pCiAgICAg
ICAgICwgc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKFdURk1vdmUoc2VsZWN0aW9uQ2xlYXJlZENh
bGxiYWNrKSkKQEAgLTMwMCw3ICszMDEsNyBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRl
Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IFNlbAogCiAg
ICAgaWYgKG51bWJlck9mVGFyZ2V0cyA+IDAgJiYgdGFibGUpIHsKICAgICAgICAgU2V0Rm9yU2Nv
cGU8U2VsZWN0aW9uRGF0YSo+IGNoYW5nZShzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBjb25z
dF9jYXN0PFNlbGVjdGlvbkRhdGEqPigmc2VsZWN0aW9uKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxl
Y3Rpb24sIFdURk1vdmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKKyAgICAgICAgYXV0byBk
YXRhID0gbWFrZVVuaXF1ZTxDbGlwYm9hcmRTZXREYXRhPigqc2V0dGluZ0NsaXBib2FyZFNlbGVj
dGlvbiwgV1RGTW92ZShwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOwogICAgICAgICBpZiAoZ3Rr
X2NsaXBib2FyZF9zZXRfd2l0aF9kYXRhKGNsaXBib2FyZCwgdGFibGUsIG51bWJlck9mVGFyZ2V0
cywgZ2V0Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgY2xlYXJDbGlwYm9hcmRDb250ZW50c0Nh
bGxiYWNrLCBkYXRhLmdldCgpKSkgewogICAgICAgICAgICAgZ3RrX2NsaXBib2FyZF9zZXRfY2Fu
X3N0b3JlKGNsaXBib2FyZCwgbnVsbHB0ciwgMCk7CiAgICAgICAgICAgICAvLyBXaGVuIGd0a19j
bGlwYm9hcmRfc2V0X3dpdGhfZGF0YSgpIHN1Y2NlZWRzIGNsZWFyQ2xpcGJvYXJkQ29udGVudHND
YWxsYmFjayB0YWtlcyB0aGUgb3duZXJzaGlwIG9mIGRhdGEsIHNvIHdlIGxlYWsgaXQgaGVyZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3Bw
CmluZGV4IGJkY2M5OWU4NTlkNDk3NTA3OGZmM2M1ZTJlYmMzODVkOWI5NWI5NTIuLjczZTA3NThh
NmVkZDFlMTkzMjMxMDgzZjg5YTdlN2ZkZjIwZDEzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcApAQCAtMzUsMjAgKzM1LDIwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZUdhZGdldD4gUmVuZGVyVGhlbWVHYWRnZXQ6OmNy
ZWF0ZShjb25zdCBSZW5kZXJUaGVtZUdhCiB7CiAgICAgc3dpdGNoIChpbmZvLnR5cGUpIHsKICAg
ICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpHZW5lcmljOgotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5n
cywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUdhZGdl
dD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhl
bWVHYWRnZXQ6OlR5cGU6OlRleHRGaWVsZDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyVGhlbWVUZXh0RmllbGRHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBv
c2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUZXh0RmllbGRH
YWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRl
clRoZW1lR2FkZ2V0OjpUeXBlOjpSYWRpbzoKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpU
eXBlOjpDaGVjazoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVU
b2dnbGVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVHYWRnZXQ+KGluZm8sIHBhcmVudCwg
c2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpB
cnJvdzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVBcnJvd0dh
ZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUFycm93R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdz
LCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6SWNvbjoKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uR2FkZ2V0PihpbmZv
LCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24p
OwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlNjcm9sbGJhcjoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8s
IHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVTY3JvbGxiYXJHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0
aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBw
YXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lQnV0dG9uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcAppbmRleCAwNWQxMmRkOWVhZmJl
ZjAyYTQ1OWNhNTI3NjQxN2E1YjliMGU4OTc2Li5jYTZlZDkxOGE1MDMzZTI5NzZkYjg0ZDg5YzIw
NDg4NzAwZjAyYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVu
ZGVyVGhlbWVXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZVdpZGdldC5jcHAKQEAgLTQyLDQ5ICs0Miw0OSBAQCBSZW5kZXJUaGVtZVdpZGdldCYg
UmVuZGVyVGhlbWVXaWRnZXQ6OmdldE9yQ3JlYXRlKFR5cGUgd2lkZ2V0VHlwZSkKICAgICBhdXRv
IGFkZFJlc3VsdCA9IHdpZGdldE1hcCgpLmVuc3VyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4od2lk
Z2V0VHlwZSksIFt3aWRnZXRUeXBlXSgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJUaGVtZVdp
ZGdldD4gewogICAgICAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHsKICAgICAgICAgY2FzZSBSZW5k
ZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJSaWdodDoKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5U
QVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5U
QVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGljYWxTY3JvbGxiYXJMZWZ0Ogot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+
KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1
bGwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5U
QVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJU
aGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CiAgICAgICAgIGNhc2UgUmVu
ZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTY3JvbGxiYXI6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFU
SU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5U
QVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwogICAg
ICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRv
clJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVT
Y3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6
Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJU
aGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9s
bGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6
VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JMZWZ0OgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJU
SUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVT
Y3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwg
UmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvciwgUmVuZGVyVGhlbWVTY3JvbGxi
YXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lk
Z2V0OjpUeXBlOjpIb3Jpem9udGFsU2Nyb2xsSW5kaWNhdG9yOgotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9I
T1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5U
QVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkNoZWNrQnV0dG9uOgotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+
KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVC
dXR0b246OlR5cGU6OkNoZWNrKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlw
ZTo6UmFkaW9CdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OlJhZGlv
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9u
PihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6UmFkaW8pOwogICAgICAgICBjYXNlIFJl
bmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpCdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6
Ok5vKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihS
ZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6Tm8pOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpCdXR0b25EZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZ
ZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJl
bmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpZZXMpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpDb21ib0JveDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lQ29tYm9Cb3g+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW5kZXJUaGVtZUNvbWJvQm94PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0
OjpUeXBlOjpFbnRyeToKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lRW50cnk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZUVudHJ5PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTZWxlY3Rl
ZEVudHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVF
bnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PihSZW5kZXJUaGVtZUVudHJ5OjpTZWxlY3Rl
ZDo6WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VhcmNoRW50
cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNlYXJj
aEVudHJ5PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTZWFy
Y2hFbnRyeT4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U3BpbkJ1
dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU3Bp
bkJ1dHRvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU3Bp
bkJ1dHRvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6VmVydGlj
YWxTbGlkZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVt
ZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9udGFsU2xpZGVyOgot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdU
S19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CiAgICAgICAg
IGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlByb2dyZXNzQmFyOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhl
bWVQcm9ncmVzc0Jhcjo6TW9kZTo6RGV0ZXJtaW5hdGUpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6
TW9kZTo6RGV0ZXJtaW5hdGUpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpJbmRldGVybWluYXRlUHJvZ3Jlc3NCYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpN
b2RlOjpJbmRldGVybWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkluZGV0ZXJt
aW5hdGUpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpMaXN0VmlldzoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lTGlzdFZpZXc+
KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3Pigp
OwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpJY29uOgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVJY29uPigpOwogICAgICAgICBjYXNlIFJl
bmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpXaW5kb3c6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lV2luZG93PigpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzOSw3ICsxMzksNyBA
QCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6UmVuZGVyVGhlbWVTY3JvbGxiYXIoR3RrT3JpZW50YXRp
b24gb3JpZW50YXRpb24sIE1vZGUgbW9kZQogICAgIGluZm8udHlwZSA9IFJlbmRlclRoZW1lR2Fk
Z2V0OjpUeXBlOjpHZW5lcmljOwogICAgIGluZm8ubmFtZSA9ICJjb250ZW50cyI7CiAgICAgaW5m
by5jbGFzc0xpc3QuY2xlYXIoKTsKLSAgICBtX2NvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGls
ZHJlbiwgbV9zY3JvbGxiYXIuZ2V0KCkpOworICAgIG1fY29udGVudHMgPSBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIGNoaWxk
cmVuLCBtX3Njcm9sbGJhci5nZXQoKSk7CiAgICAgaW5mby5uYW1lID0gInNsaWRlciI7CiAgICAg
bV9zbGlkZXIgPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGluZm8sIG1fY29udGVudHMtPmNo
aWxkKG1fdHJvdWdoUG9zaXRpb24pKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBSZW5kZXJUaGVt
ZUNvbWJvQm94OjpSZW5kZXJUaGVtZUNvbWJvQm94KCkKICAgICB9OwogICAgIGluZm8ubmFtZSA9
ICJib3giOwogICAgIGluZm8uY2xhc3NMaXN0ID0geyAiaG9yaXpvbnRhbCIsICJsaW5rZWQiIH07
Ci0gICAgbV9ib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZv
LCBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgY2hpbGRyZW4sIG1fY29tYm9Cb3guZ2V0KCkp
OworICAgIG1fYm94ID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RL
X09SSUVOVEFUSU9OX0hPUklaT05UQUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKICAg
ICBSZW5kZXJUaGVtZUdhZGdldCogYnV0dG9uID0gbV9ib3gtPmNoaWxkKDApOwogICAgIGluZm8u
Y2xhc3NMaXN0LnJlbW92ZUxhc3QoKTsKICAgICBtX2J1dHRvbkJveCA9IFJlbmRlclRoZW1lR2Fk
Z2V0OjpjcmVhdGUoaW5mbywgYnV0dG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggODQwN2MxMTAxZGRkNmRiNmUzNzhkZWZjYjNhYjgyNmJmNzI2NDU0ZC4uNzg2OTdlYjAwMDBm
N2Y3YjgyYTdkMGVjZjVmOTg1YTFlOTI4OWMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5j
cHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBCTVBJbWFnZURlY29kZXI6OmRlY29kZUhlbHBlcihi
b29sIG9ubHlTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fcmVhZGVy
KSB7Ci0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4o
dGhpcywgbV9kZWNvZGVkT2Zmc2V0LCBpbWdEYXRhT2Zmc2V0LCBmYWxzZSk7CisgICAgICAgIG1f
cmVhZGVyID0gbWFrZVVuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgbV9kZWNvZGVkT2Zmc2V0
LCBpbWdEYXRhT2Zmc2V0LCBmYWxzZSk7CiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0
YS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IDdiYTdl
ZDkxMDFjZTI1YTliZjZlMjMxMDg3YmYwYmMxMTRjYzIyZDYuLjRmMzQ4N2UzMzQ3NjQwNTQ3NGNm
ODZiNWM2MDZkMmMxOTg4YzdjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0z
MzQsNyArMzM0LDcgQEAgdm9pZCBHSUZJbWFnZURlY29kZXI6OmRlY29kZSh1bnNpZ25lZCBoYWx0
QXRGcmFtZSwgR0lGUXVlcnkgcXVlcnksIGJvb2wgYWxsRGF0YVIKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8R0lGSW1hZ2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8
R0lGSW1hZ2VSZWFkZXI+KHRoaXMpOwogICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEu
Z2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggMWNjYTVlNTll
ZWIzNTFiMDU4YTIxZGIxMzRmNjQzNzkxZTUwNzdjYS4uZDc3MTg2ZWE5NzM5YmRmYjJjNTYyMjhl
ZTRjZjVlODgyOGQ4ODU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMjEsNyAr
MzIxLDcgQEAgYm9vbCBHSUZGcmFtZUNvbnRleHQ6OmRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBXZWJDb3JlOjoKICAgICAgICAgaWYgKCFpc0RhdGFTaXpl
RGVmaW5lZCgpIHx8ICFpc0hlYWRlckRlZmluZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgICAgIG1fbHp3Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R0lGTFpXQ29udGV4
dD4oY2xpZW50LCB0aGlzKTsKKyAgICAgICAgbV9sendDb250ZXh0ID0gbWFrZVVuaXF1ZTxHSUZM
WldDb250ZXh0PihjbGllbnQsIHRoaXMpOwogICAgICAgICBpZiAoIW1fbHp3Q29udGV4dC0+cHJl
cGFyZVRvRGVjb2RlKCkpIHsKICAgICAgICAgICAgIG1fbHp3Q29udGV4dCA9IG51bGxwdHI7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03ODYsNyArNzg2LDcgQEAgdm9pZCBHSUZJbWFn
ZVJlYWRlcjo6c2V0UmVtYWluaW5nQnl0ZXMoc2l6ZV90IHJlbWFpbmluZ0J5dGVzKQogdm9pZCBH
SUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1fZnJhbWVz
LmlzRW1wdHkoKSB8fCBtX2ZyYW1lcy5sYXN0KCktPmlzQ29tcGxldGUoKSkKLSAgICAgICAgbV9m
cmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8R0lGRnJhbWVDb250ZXh0PihtX2ZyYW1lcy5z
aXplKCkpKTsKKyAgICAgICAgbV9mcmFtZXMuYXBwZW5kKG1ha2VVbmlxdWU8R0lGRnJhbWVDb250
ZXh0PihtX2ZyYW1lcy5zaXplKCkpKTsKIH0KIAogLy8gRklYTUU6IE1vdmUgdGhpcyBtZXRob2Qg
dG8gY2xvc2UgdG8gZG9MWlcoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTg3
MGJiMTYwYjg0OTQ4ZjBiNTlkZTQ1MTE2MzZiYTRjMGYzOGYyZS4uZmY2YTFjODdhZTZmMDViNDlj
Y2MxMjhhYmUwNWMzMDNkNmVlYmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTE5NSw3ICsxOTUsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRleChzaXpl
X3QgaW5kZXgpCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGhhdmUgYWxyZWFkeSBzaXplZCBt
X2ZyYW1lQnVmZmVyQ2FjaGUgYmVmb3JlIHRoaXMsIGFuZAogICAgICAgICAgICAgLy8gd2UgbXVz
dCBub3QgcmVzaXplIGl0IGFnYWluIGxhdGVyIChzZWUgY2F1dGlvbiBpbiBmcmFtZUNvdW50KCkp
LgogICAgICAgICAgICAgQVNTRVJUKG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCkgPT0gbV9kaXJF
bnRyaWVzLnNpemUoKSk7Ci0gICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gc3RkOjpt
YWtlX3VuaXF1ZTxCTVBJbWFnZVJlYWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwg
MCwgdHJ1ZSk7CisgICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdID0gbWFrZVVuaXF1ZTxC
TVBJbWFnZVJlYWRlcj4odGhpcywgZGlyRW50cnkubV9pbWFnZU9mZnNldCwgMCwgdHJ1ZSk7CiAg
ICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAg
ICAgICAgICAgICBtX2JtcFJlYWRlcnNbaW5kZXhdLT5zZXRCdWZmZXIoJm1fZnJhbWVCdWZmZXJD
YWNoZVtpbmRleF0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCBlYmZlNDUzMGY3MTg1MzA3MmUzYTUzZDJmY2M2NjBlN2EwOTZjZjQzLi4wYzA1NDliNWEz
ZWUwNGFmMjljYTdkNjA2MDM1ZmNmZTYxNzQ4NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29k
ZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpQRUdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxK
UEVHSW1hZ2VSZWFkZXI+KHRoaXMpOwogCiAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVjb2RlIHRo
ZSBpbWFnZSBidXQgd2UndmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRhLCBkZWNvZGluZwogICAgIC8v
IGhhcyBmYWlsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGMxOGEzOWI1OTEz
M2EzMThmMTUxMDU4MWU4ZjkxZWJkZDc2ODc5YWIuLjYyY2I5YjIyYTAxZjI2ZTlmMmNkNDFkZWEz
ODFiMzYzNjg5N2VlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC01NTYsNyAr
NTU2LDcgQEAgdm9pZCBQTkdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCB1bnNp
Z25lZCBoYWx0QXRGcmFtZSwgYm9vbCBhbGxEYXRhUmUKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFtX3JlYWRlcikKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBOR0lt
YWdlUmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPFBOR0ltYWdl
UmVhZGVyPih0aGlzKTsKIAogICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2Ug
YnV0IHdlJ3ZlIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFp
bGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVD
YWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0K
aW5kZXggMjA5Zjg4ZjQ3YTNiN2NkYzAxNDNkZTkyZTI0YmFkZGY5NjY0YjVmNC4uY2FlM2RjZjE2
NDc5NmNlZWNiNjhiMjQ0OGYxMTMzYzEwZWM5YzIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCkBAIC02OSw3ICs2OSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIExlZ2FjeVRpbGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKFdBS1dpbmRvdyog
d2luZG93KQogICAgIDogbV93aW5kb3cod2luZG93KQogICAgICwgbV90b21ic3RvbmUoYWRvcHRO
UyhbW0xlZ2FjeVRpbGVDYWNoZVRvbWJzdG9uZSBhbGxvY10gaW5pdF0pKQotICAgICwgbV96b29t
ZWRPdXRUaWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90
aWxlU2l6ZSkpCisgICAgLCBtX3pvb21lZE91dFRpbGVHcmlkKG1ha2VVbmlxdWU8TGVnYWN5VGls
ZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKSkKICAgICAsIG1fdGlsZUNyZWF0aW9uVGltZXIoKnRo
aXMsICZMZWdhY3lUaWxlQ2FjaGU6OnRpbGVDcmVhdGlvblRpbWVyRmlyZWQpCiB7CiAgICAgW2hv
c3RMYXllcigpIGluc2VydFN1YmxheWVyOm1fem9vbWVkT3V0VGlsZUdyaWQtPnRpbGVIb3N0TGF5
ZXIoKSBhdEluZGV4OjBdOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgTGVnYWN5VGlsZUNhY2hl
Ojpjb21taXRTY2FsZUNoYW5nZSgpCiAKICAgICBpZiAobV9jdXJyZW50U2NhbGUgIT0gbV96b29t
ZWRPdXRUaWxlR3JpZC0+c2NhbGUoKSkgewogICAgICAgICBpZiAoIW1fem9vbWVkSW5UaWxlR3Jp
ZCkgewotICAgICAgICAgICAgbV96b29tZWRJblRpbGVHcmlkID0gc3RkOjptYWtlX3VuaXF1ZTxM
ZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpOworICAgICAgICAgICAgbV96b29tZWRJ
blRpbGVHcmlkID0gbWFrZVVuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUp
OwogICAgICAgICAgICAgW2hvc3RMYXllcigpIGFkZFN1YmxheWVyOm1fem9vbWVkSW5UaWxlR3Jp
ZC0+dGlsZUhvc3RMYXllcigpXTsKICAgICAgICAgICAgIGhvc3RMYXllclNpemVDaGFuZ2VkKCk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdh
Y3lUaWxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlk
LmgKaW5kZXggNjY0N2VjM2EzNmQxNTg3ODY5NGYwN2QwMmIxZmIxZThjMzUwZDUzZi4uMzBlZjlm
YzMxYzg3ZjExYmZhZmU0Y2E2YTllYTgxMjRkNWZjM2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgTGVnYWN5VGlsZUdyaWRUaWxlOwogCiBjbGFzcyBMZWdhY3lUaWxl
R3JpZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBJbnRQb2ludCBUaWxlSW5kZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KaW5kZXggMTkxYWM3Njk2MjE1MTIxNTNkYmRjYjA3OGRkNjZmNDY1NTNi
YzIxZC4uMDI3MWI5M2U3MDVjZTJjNDJkNjMyZmUyZGIyOWFhNDZlODM2ZDIzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY2LDEyICs2Niwx
MiBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBv
aW50JikKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckRyYWdBbmREcm9wKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PigiZGF0YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGFzdGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29u
c3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCkpOwogfQogCiAjZW5kaWYK
QEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0
cmluZyYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVG
b3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9h
cmQ+KGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
YXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CiB9CiAKIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQppbmRleCBhOWQ5ZTQ3MTA1MDE3ZDY0ZDgy
ZTM3YzhhYTMxY2U2NDY5MDI1Njg1Li5jMmI1YTBiMDhiZGY3NWU4YzAxY2Q5YmQyZDUxYzMxNDkz
MDVmMzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29r
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KQEAgLTg0
LDcgKzg0LDcgQEAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVnaXN0ZXJRTFByZXZpZXdDb252
ZXJ0ZXJJZk5lZWRlZChOU1VSTCAqdXJsLCBOU1N0cmluZwogICAgIGlmIChbUUxQcmV2aWV3R2V0
U3VwcG9ydGVkTUlNRVR5cGVzU2V0KCkgY29udGFpbnNPYmplY3Q6dXBkYXRlZE1JTUVUeXBlLmdl
dCgpXSkgewogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHV0aSA9IGFkb3B0TlMoUEFMOjpz
b2Z0TGlua19RdWlja0xvb2tfUUxUeXBlQ29weVVUSUZvclVSTEFuZE1pbWVUeXBlKHVybCwgdXBk
YXRlZE1JTUVUeXBlLmdldCgpKSk7CiAKLSAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQoKSk7CisgICAgICAgIGF1
dG8gY29udmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0
KCkpOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcHJldmlld1JlcXVlc3QgPSBjb252ZXJ0ZXIt
PnByZXZpZXdSZXF1ZXN0KCk7CiAKICAgICAgICAgLy8gV2UgdXNlIFtyZXF1ZXN0IFVSTF0gaGVy
ZSBpbnN0ZWFkIG9mIHVybCBzaW5jZSBpdCB3aWxsIGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQppbmRleCAxMDdj
NzdjNzUzZWFiN2Q5MmRhMjk0ODdjYTZmNjVmODA3MDQ4MjEzLi42ZDljY2UxNWI4NzRmMTVmMTU0
ODc1ZWEwZWU2YjlmMTAzNWE4MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KQEAgLTQ1LDcgKzQ1LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3Rl
bmVyOjpjcmVhdGUoUmVtb3RlQ29tbWEKICAgICBpZiAoIU1lZGlhUGxheWVyTGlicmFyeSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcklPUz4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CiB9CiAKIFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcklPUzo6UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNs
aWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFu
aW1hdG9ySU9TLm1tCmluZGV4IDAxZjBhOWJiMjBhMjQ4YjY5OTg4NTY0NzBhZWUzNzRhOThjZmE1
MWMuLmVkNjMyZWE1ZTNmNTU5N2U5ZDc2ZmQyZTU1Njk1NjFmZTZjNGMyMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5p
bWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9ySU9TPihz
Y3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+
KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JJT1M6OlNjcm9sbEFuaW1hdG9y
SU9TKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCAwNTQzZWQ1ZTlm
YzlmY2ZlM2JiYWE0MDM1NWU0MDcyZjlmM2MzZjQwLi5mOGE2MWVjNzBjMGMxYTRjZDM3N2YwZTdj
ZDY3NmVmYjlkZTViYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3
cGUvUGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGli
d3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2Fy
ZD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigpOwogfQogCiBQYXN0ZWJv
YXJkOjpQYXN0ZWJvYXJkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KaW5kZXggNTE1MjBkY2JiZWE1OTIxODVjMzI2NzAyY2JhNjlmZTg4YjRkNGRkZS4u
OGViMTVjZjg4NTJkOTg1NzQ0N2UwNTljMzhhY2FlYmEyMzQxNWQwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTEwMCw3ICsxMDAsNyBAQCBQ
YXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwcm9taQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PihOU0dlbmVyYWxQYm9hcmQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5T
R2VuZXJhbFBib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9
CiAKQEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oTlNEcmFnUGJvYXJkKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRy
YWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0
YS5maWxlTmFtZXMoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0Rh
dGEucGFzdGVib2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlz
dGVuZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExp
c3RlbmVyTWFjLm1tCmluZGV4IDA1Y2MwODk1N2UxZDUwMTI0ZGQ2MzJlMmE0Yzg5MjEyOTg5Njk2
MTEuLjFhYTJjZDgwMTMyZjJjMjFlZTM4YjlmZmJkYjgzMzczYmJmNGMxOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yy5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRl
KFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+KGNsaWVudCk7CiB9CiAKIHZv
aWQgUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjOjp1cGRhdGVTdXBwb3J0ZWRDb21tYW5kcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5k
ZXggYTgzMTc1MTIyZWMyZTRiNmI2ZGU1MWJlNmRmNTI2NGI0MWExZjhjNC4uNjg2MGUzM2MzYTNi
MjE1NjMwNWZiMzFhZjQyN2RjNDkwMjM1ODdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtNjk3LDcgKzY5Nyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxB
bmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvck1hYz4oc2Nyb2xsYWJsZUFyZWEp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yTWFjPihzY3JvbGxhYmxlQXJl
YSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yTWFjOjpTY3JvbGxBbmltYXRvck1hYyhTY3JvbGxhYmxl
QXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bC5jcHAKaW5kZXggMWI5ZGM1MzQ1Yjg4MWViMzZkOTZmY2UzNTgyZGYwZTU0YTEzODViYS4uZTI0
NDViYzgyM2Y4NmUwNTViMGU1Nzg3N2Q2Y2Y1MzFhNGZmY2M5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGw6OmNyZWF0ZQogICAgIGlmICghd3JpdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4o
d3JpdGVyLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoYXVkaW9UcmFja0lkKSwgV1RGTW92ZSh2
aWRlb1RyYWNrSWQpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCks
IFdURk1vdmUodmlkZW9UcmFja0lkKSk7CiB9CiAKIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bDo6TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsKFJlZjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcj4mJiB3cml0ZXIsIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCwgU3RyaW5nJiYgdmlkZW9UcmFj
a0lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKaW5kZXggZDRhZGIxNTJi
ZDRiYWVmN2VmN2JmMDU1ZjZkOWE4M2Q4NjdlNjdlYi4uYTIyZjU3MWJjNTE2MTFmNjE3NDQ5MTA0
Y2Y1ZmM4NjBlNTJlOWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5o
CkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFt
UHJpdmF0ZTsKIAogY2xhc3MgTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsIGZpbmFsIDogcHVi
bGljIE1lZGlhUmVjb3JkZXJQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbD4gY3JlYXRlKGNvbnN0IE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGRiOTRm
ZGFmODNhOGFiZDY3YWZjZmQ2ZWEzNjlmYWE4OWM0NmMzZTIuLjU5YWIzODQwZmQ3MzZjYTE0NTAx
NmM3ZjY2MGVjYTNiMDkwMzI0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC05MSwxNCArOTEsMTQgQEAgQXVkaW9DYXB0dXJl
RmFjdG9yeSYgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkKIAogR1N0cmVh
bWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoR1N0cmVh
bWVyQ2FwdHVyZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRp
bWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nIHsg
ZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgpIH0sIFdURk1v
dmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1l
ckF1ZGlvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0
cmVhbWVyQXVkaW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVy
RGVidWcoKTsKIH0KIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYm
IGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpBdWRpbywgV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSksIFdURk1vdmUo
aGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckF1
ZGlvQ2FwdHVyZXI+KCkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyQXVk
aW9DYXB0dXJlcj4oKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJBdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaAppbmRleCA5NTNmM2E4YTBlNGY2YTA2MmI5
Yjk0YThmNDE1MWE0OWYxYTQzMDFkLi4zNDE1NDkyNTFlZDU3MWI3NWVmNWQwYzJkZWRmMWU3N2I3
NTIzNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIEdTdHJlYW1lckF1ZGlvRGF0YSA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7
CitjbGFzcyBHU3RyZWFtZXJBdWRpb0RhdGEgZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0Rh
dGEgewogcHVibGljOgogICAgIEdTdHJlYW1lckF1ZGlvRGF0YShHUmVmUHRyPEdzdFNhbXBsZT4m
JiBzYW1wbGUsIEdzdEF1ZGlvSW5mbyBpbmZvKQogICAgICAgICA6IG1fc2FtcGxlKFdURk1vdmUo
c2FtcGxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKaW5kZXggYmJlNWFlNzM5
NTRhZTUzY2MyMTY1NzkzZWMwOTZhODg3OTJhZDRmMi4uZjkyYTZhOWIxMjYxMTAwZjE5MzQ1ZjRl
Y2EyMTk0YmZlMWI4YTNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgKQEAg
LTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyQ2Fw
dHVyZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJl
YW1lckNhcHR1cmVyKEdTdHJlYW1lckNhcHR1cmVEZXZpY2UsIEdSZWZQdHI8R3N0Q2Fwcz4pOwog
ICAgIEdTdHJlYW1lckNhcHR1cmVyKGNvbnN0IGNoYXIqIHNvdXJjZUZhY3RvcnksIEdSZWZQdHI8
R3N0Q2Fwcz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNv
dXJjZS5jcHAKaW5kZXggYjNhZjM1YWY4MjQ4OGRkNGNmODIxY2QzZWVhZTYzZDljZjFhY2Q4NC4u
ZjNlNTE4NmJmNjY4NzgxZWZiMTM5NWZlODUxYjM0MzIzYzQyYTNkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlh
U3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0xMDcsNiArMTA3
LDcgQEAgR3N0U3RyZWFtKiB3ZWJraXRNZWRpYVN0cmVhbU5ldyhNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSogdHJhY2spCiAKIGNsYXNzIFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcgogICAg
IDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViS2l0TWVkaWFTdHJl
YW1UcmFja09ic2VydmVyKCkgeyB9OwogICAgIFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZl
cihXZWJLaXRNZWRpYVN0cmVhbVNyYyogc3JjKQpAQCAtMTQzLDYgKzE0NCw3IEBAIGNsYXNzIFdl
YktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcgogCiBjbGFzcyBXZWJLaXRNZWRpYVN0cmVhbU9i
c2VydmVyCiAgICAgOiBwdWJsaWMgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViS2l0TWVk
aWFTdHJlYW1PYnNlcnZlcigpIHsgfTsKICAgICBXZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyKFdl
YktpdE1lZGlhU3RyZWFtU3JjKiBzcmMpCkBAIC0zNTEsOCArMzUzLDggQEAgc3RhdGljIHZvaWQg
d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfY2xhc3NfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyY0Ns
YXNzKiBrbGFzcykKIAogc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdChX
ZWJLaXRNZWRpYVN0cmVhbVNyYyogc2VsZikKIHsKLSAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNr
T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZl
cj4oc2VsZik7Ci0gICAgc2VsZi0+bWVkaWFTdHJlYW1PYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcj4oc2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJl
YW1UcmFja09ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2
ZXI+KHNlbGYpOworICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdl
YktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOwogICAgIHNlbGYtPmZsb3dDb21iaW5lciA9
IGdzdF9mbG93X2NvbWJpbmVyX25ldygpOwogICAgIHNlbGYtPmZpcnN0QXVkaW9CdWZmZXJQdHMg
PSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICAgIHNlbGYtPmZpcnN0RnJhbWVQdHMgPSBHU1RfQ0xP
Q0tfVElNRV9OT05FOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlLmNwcAppbmRleCBlNWQ5YjBlMDI3NmVkZGE1ZGJkNTIwYmMxMGYzNTE4MGQwMTVk
NjliLi45N2JlMWYxMmZiYjIyZGMzNThjOTljODM5Zjk4MWYxNjU2YThlMTI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTI3
LDE0ICsxMjcsMTQgQEAgRGlzcGxheUNhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJWaWRlb0NhcHR1
cmVTb3VyY2U6OmRpc3BsYXlGYWN0b3J5KCkKIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
OjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYm
IG5hbWUsIFN0cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciAqc291cmNlX2ZhY3RvcnkpCiAg
ICAgOiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92
ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91
bmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQorICAgICwgbV9j
YXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5
KSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyVmlk
ZW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2Fw
dHVyZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVWaWRl
b0NhcHR1cmVTb3VyY2UoU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7
IGRldmljZS5sYWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihz
dGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBt
X2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsK
ICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29k
ZXJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oCmluZGV4IGU0ZDUwOGUzMTc5YWM0N2Jm
MWQxMGY0ZjI4N2M1NDdiYzI1NjAwMmEuLmVmZGEyOWJlMzk3MThiYmE3OTEzNDE4Y2M3M2ViOWFk
MzY4NGY4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRGVjb2Rl
ckZhY3RvcnkuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6VmlkZW9EZWNv
ZGVyRmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeSgpOwogICAgIHN0YXRpYyBib29sIG5ld1NvdXJj
ZShTdHJpbmcgdHJhY2tJZCwgR3N0RWxlbWVudCAqc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0Vu
Y29kZXJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA2OTk1YzYwMmNi
MTc0NDdmYTc0MWQzOWQ0NDk0YzM1NjFkYzFiYjgyLi44MzU4MWU4NWEzOTYyZDk3ZTAxNzQzYjEw
ZTU2Y2VhYTE1MWNlZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZp
ZGVvRW5jb2RlckZhY3RvcnkuY3BwCkBAIC02MCw2ICs2MCw3IEBAIEdTVF9ERUJVR19DQVRFR09S
WSh3ZWJraXRfd2VicnRjZW5jX2RlYnVnKTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
R1N0cmVhbWVyVmlkZW9FbmNvZGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRlb0Vu
Y29kZXIoY29uc3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYpCiAgICAgICAgIDogbV9maXJzdEZy
YW1lUHRzKEdTVF9DTE9DS19USU1FX05PTkUpCkBAIC01MTIsMTQgKzUxMywxNCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXI+IEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rv
cnk6OkNyZWF0ZVZpZGVvRQogICAgICAgICBnX29iamVjdF9nZXQod2VicnRjZW5jb2Rlci5nZXQo
KSwgImVuY29kZXIiLCAmZW5jb2Rlci5vdXRQdHIoKSwgTlVMTCk7CiAKICAgICAgICAgaWYgKGVu
Y29kZXIpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWUDhF
bmNvZGVyPihmb3JtYXQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVy
VlA4RW5jb2Rlcj4oZm9ybWF0KTsKIAogICAgICAgICBHU1RfSU5GTygiVXNpbmcgVlA4IEVuY29k
ZXIgZnJvbSBMaWJXZWJSVEMuIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHdl
YnJ0Yzo6TGlidnB4VnA4RW5jb2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPHdlYnJ0Yzo6TGlidnB4VnA4RW5jb2Rlcj4oKTsKICAgICB9CiAK
ICAgICBpZiAoZm9ybWF0Lm5hbWUgPT0gY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckgyNjRFbmNvZGVyPihmb3JtYXQpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsK
IAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFt
ZXJWaWRlb0VuY29kZXJGYWN0b3J5LmgKaW5kZXggNzk2YTIwZjk0NWUzYTk1MTk4ZWNlMTBmZTcw
ZDliNTJmNzIzM2QxMS4uMTQ4M2EyYjIwYjM1MTVjNzFiN2EwYzdhNTIyNjI2ZTlmZjUzOTIwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5o
CkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1l
clZpZGVvRW5jb2RlckZhY3RvcnkgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXJG
YWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3Ry
ZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKaW5kZXggZGM2ZjhmM2ZiMDU3ZmI1NDBkOTBjMDAyMjY4
YTk5Nzc0NDEwMjc3Zi4uNGEwNjFmY2M5NTNiMTNkNTgzYmFlNTU0NTE1NWJjZTA4ZGY4ZjlkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKQEAg
LTQwLDYgKzQwLDcgQEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kIGZpbmFsIDogcHVibGlj
IFJUQ0RUTUZTZW5kZXJCYWNrZW5kLCBwcml2YXRlIHdlYnJ0Yzo6RHRtZlNlbmRlck9ic2VydmVy
SW50ZXJmYWNlLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tl
bmQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpE
dG1mU2VuZGVySW50ZXJmYWNlPiYmKTsKICAgICB+TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDIwN2FiNzhhOWEy
YmJlNDBhMGVkNGRhNjk1NjlhZWRiMTIyOTllMjAuLjc0NTMzYzVmYTRkZjBkNGU1YTY0ZDc1Y2U2
MjdiMzI0MmM0NmI4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApA
QCAtNzksOSArNzksMTAgQEAgc3RhdGljIGlubGluZSBydGM6OlNvY2tldEFkZHJlc3MgcHJlcGFy
ZVNvY2tldEFkZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJgogfQogCiBjbGFzcyBCYXNp
Y1BhY2tldFNvY2tldEZhY3RvcnkgOiBwdWJsaWMgcnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rv
cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0
IEJhc2ljUGFja2V0U29ja2V0RmFjdG9yeShydGM6OlRocmVhZCYgbmV0d29ya1RocmVhZCkKLSAg
ICAgICAgOiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0U29j
a2V0RmFjdG9yeT4oJm5ldHdvcmtUaHJlYWQpKQorICAgICAgICA6IG1fc29ja2V0RmFjdG9yeSht
YWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeT4oJm5ldHdvcmtUaHJlYWQpKQogICAgIHsKICAgICB9CiAKQEAgLTE3OSw3ICsxODAs
NyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFk
cyhQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaAogICAgIHJlc3VsdCA9IGZhY3RvcnlBbmRUaHJl
YWRzLnNpZ25hbGluZ1RocmVhZC0+U3RhcnQoKTsKICAgICBBU1NFUlQocmVzdWx0KTsKIAotICAg
IGZhY3RvcnlBbmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENBdWRpb01vZHVsZT4oKTsKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0Rldmlj
ZU1vZHVsZSA9IG1ha2VVbmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgc3RhdGljRmFjdG9yeUFu
ZFRocmVhZHMoKQpAQCAtMjg4LDEwICsyODksMTAgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUK
ICAgICBhdXRvJiBmYWN0b3J5QW5kVGhyZWFkcyA9IGdldFN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRz
KG1fdXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwogCiAgICAgaWYgKCFmYWN0b3J5
QW5kVGhyZWFkcy5uZXR3b3JrTWFuYWdlcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0
d29ya01hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4o
KTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CiAKICAg
ICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkpCi0gICAgICAgIGZh
Y3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
c2ljUGFja2V0U29ja2V0RmFjdG9yeT4oKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQp
OworICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gbWFrZVVu
aXF1ZTxCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3Jr
VGhyZWFkKTsKICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LT5zZXRE
aXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMobV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVj
dGlvbnMpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCAqZmFj
dG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIsICpmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRT
b2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBudWxscHRyKTsKQEAgLTMxNCw3
ICszMTUsNyBAQCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVy
ZmFjZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4gcG9ydEFsbG9jYXRvcjsKICAgICBmYWN0b3J5
QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBb
Jl0oKSB7Ci0gICAgICAgIGF1dG8gYmFzaWNQb3J0QWxsb2NhdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNv
Y2tldEZhY3RvcnkpOworICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4oJm5l
dHdvcmtNYW5hZ2VyLCAmcGFja2V0U29ja2V0RmFjdG9yeSk7CiAgICAgICAgIGlmICghbV9lbmFi
bGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKQogICAgICAgICAgICAgYmFzaWNQb3J0
QWxsb2NhdG9yLT5zZXRfZmxhZ3MoYmFzaWNQb3J0QWxsb2NhdG9yLT5mbGFncygpIHwgY3JpY2tl
dDo6UE9SVEFMTE9DQVRPUl9ESVNBQkxFX0FEQVBURVJfRU5VTUVSQVRJT04pOwogICAgICAgICBw
b3J0QWxsb2NhdG9yID0gV1RGTW92ZShiYXNpY1BvcnRBbGxvY2F0b3IpOwpAQCAtMzM1LDcgKzMz
Niw3IEBAIHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImIExpYldlYlJUQ1Byb3ZpZGVyOjpj
ZXJ0aWZpY2F0ZUdlbmVyYXRvcigpCiB7CiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBn
ZXRTdGF0aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2Vy
dmVyKTsKICAgICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yKQot
ICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMu
c2lnbmFsaW5nVGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdl
dCgpKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJh
dG9yPihmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRU
aHJlYWRzLm5ldHdvcmtUaHJlYWQuZ2V0KCkpOwogCiAgICAgcmV0dXJuICpmYWN0b3J5QW5kVGhy
ZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyLmgKaW5kZXggYmRmMDkwMDQwYzkwNjU3ZjQ5ZjBjZTRhZTI4MDc3MzhhMWU4YmU3OS4uN2Fh
OGRlMmViM2E0YzU1NWUwOWE2MGQ3ZDdjM2FkODMxOWIxMThkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTY0LDYgKzY0LDcgQEAgc3RydWN0IFJUQ1J0cENhcGFiaWxp
dGllczsKIGVudW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBsZW1lbnRlZCwgQmFk
UGFyYW1ldGVyLCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgTGliV2ViUlRDUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGNyZWF0ZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAppbmRleCA3NzJh
Mzk1ZjBjYmI0M2U3MzA3NTBjY2I5NjM2MTYxY2FhMzQxYzYzLi5kM2MzODM5NWMwNzdmMzQ2MDRi
NWJiMGY0YjQzYWUxMTAwY2RmMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlckNvY29hLmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeTsK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJv
dmlkZXJDb2NvYSA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlciB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpID0gZGVm
YXVsdDsKICAgICB+TGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKaW5kZXggMTVlMmE4Nzg5YzA3ZmIw
ZDBhZWM2ZjZjMjBmN2JiMTdmYThkYjdkMi4uNWI4MjczYjA4NTE5NmZmZDMwZTRkN2E3ZjY1NTEw
YmVjMDgwMzE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJH
U3RyZWFtZXIuY3BwCkBAIC00NCwxMiArNDQsMTIgQEAgYm9vbCBMaWJXZWJSVENQcm92aWRlcjo6
d2ViUlRDQXZhaWxhYmxlKCkKIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVy
RmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJG
YWN0b3J5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRGVjb2RlckZh
Y3Rvcnk+KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rv
cnk+IExpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9y
eT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5
PigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCmluZGV4IDgyY2JjYjFjNjZkMzJlYTE4
Y2RlYjE2NzkzOGQ2OGQzYjEyZTQxOWEuLmY3ZDg1ZGM2MGE2MWE4MTQ2ZGJhMGQwM2U1NWQ3NTc2
MmZlOTBmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3Ry
ZWFtQ29jb2EuY3BwCkBAIC0xODgsOCArMTg4LDggQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtQ29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHMK
ICAgICAgICAgaWYgKCFyZW1vdGVJT1VuaXQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2Ny
aXB0aW9uKTsKKyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX291dHB1dERl
c2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERl
c2NyaXB0aW9uKTsKIAogICAgICAgICBtX2RhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3Vy
Y2U6OmNyZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAyLCBzdHJlYW1UcmFjaygpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGU4ZTNkMzQ4
NmRhNDNhYWMxZGQ1NGI3OGU2YjRkZjRkYzk4MTY3OTAuLjYxMWFjMTZiOWVjYjg2ODk4YTM3MjY0
NzFjNzYyMDcxMmZiOWIzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VN
YWMubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
OjpyZWNvbmZpZ3VyZSgpCiAgICAgY29uc3QgYm9vbCBpc05vbkludGVybGVhdmVkID0gdHJ1ZTsK
ICAgICBGaWxsT3V0QVNCREZvckxQQ00obV9zdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUoKSwgY2hh
bm5lbENvdW50LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGJpdHNQZXJCeXRlICogYnl0
ZXNQZXJGbG9hdCwgaXNGbG9hdCwgaXNCaWdFbmRpYW4sIGlzTm9uSW50ZXJsZWF2ZWQpOwogCi0g
ICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlz
dD4obV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lICogbV9tYXhp
bWl1bUZyYW1lQ291bnQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJB
dWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJG
cmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKIAogICAgIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYgZm9ybWF0RGVzY3JpcHRpb247CiAgICAgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRl
KE5VTEwsICZtX3N0cmVhbUZvcm1hdCwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdERl
c2NyaXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYS5tbQppbmRleCBmOWRjNGE4NDdmNGEzNTVkOWNjZmY0Y2RlMDMwOGQwZDVjNWM0NDU2Li4z
ODhkNzFlMjRiMjVlYmY2ZDc3ODgxNGZkZDBhOTY2M2IxNzA1NDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC00Niw3ICs0Niw3IEBA
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VD
b2NvYTo6Y29udmVydFRvWVVWKENWUGl4CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
aWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKQotICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9y
bWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4
ZWxGb3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7CisgICAg
ICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9y
bWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICop
a0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZv
cm1hdCgpKSB9KTsKIAogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5jb252ZXJ0
KHBpeGVsQnVmZmVyKTsKIH0KQEAgLTc1LDcgKzc1LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZl
cigKICAgICAgICAgSW50U2l6ZSBzaXplID0geyAoaW50KUNWUGl4ZWxCdWZmZXJHZXRXaWR0aChw
aXhlbEJ1ZmZlcikgLCAoaW50KUNWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpIH07
CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS5y
b3RhdGUocm90YXRpb25Ub0FuZ2xlKHJvdGF0aW9uKSk7Ci0gICAgICAgIG1fcm90YXRpb25TZXNz
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKHRy
YW5zZm9ybSksIHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZm
ZXIpLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7Cisg
ICAgICAgIG1fcm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUPihXVEZNb3ZlKHRyYW5zZm9ybSksIHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1h
dFR5cGUocGl4ZWxCdWZmZXIpLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21w
YXRpYmxlOjpObyk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5yb3Rh
dGUocGl4ZWxCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCmluZGV4IDhlMjlkN2I4MWEx
NzNkZmE1MzcwNWZhMWU2MmM5ZTg4M2M0Zjk1MDIuLmQ0NzY5ZDY5ZTRhZjA0NzBkNjJjZTkwYjc1
NDQwZTI4Mjc2OWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKQEAgLTM1LDYgKzM1LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1vY2sgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2spOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrKE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVudCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhh
bmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2suaAppbmRleCAzYzZkZTFjNGViZTRlYzc0NzM1NDBhZWNjYjg5NzYyYjE5NTU1
Y2Q0Li4xMzg4YWQwNTEzMTA4YjJlYjkyZWMyYmJlMjg5MzM2NTJlOTlhMDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ck1vY2suaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBS
VENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlciwgcHVibGljIFRpbWVyRXZlbnRCYXNlZE1vY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29uc3QgU3Ry
aW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCmluZGV4IDJmMWZiNTVlZTY3MWYy
ZjIyOGZjNTE1MWQwZGQ2OWNmOGVjNjk1Y2IuLjJjN2M0MWJkNjk2ZmYxZjliYWIzODM4MWE0YjU4
Mzg1NjhiMThhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRD
Tm90aWZpZXJzTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENO
b3RpZmllcnNNb2NrLmNwcApAQCAtOTgsNyArOTgsNyBAQCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlm
aWVyOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aQogCiB2b2lkIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OmZpcmUoKQogewotICAgIG1fY2xp
ZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChzdGQ6Om1ha2VfdW5pcXVlPFJUQ0RhdGFDaGFu
bmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNoYW5u
ZWxJbml0KCkpKTsKKyAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwobWFrZVVu
aXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9j
ayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERhdGFDaGFubmVsU3RhdGVOb3RpZmll
cjo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCog
Y2xpZW50LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA1NTk5MzM4MmIzYTFkYzM2ZDgzNTZiNjFiMjVj
NzAwMmUwNzM0N2ZlLi4zODdhMjFkYWY0NTUyMzk2OGFlZTRmNzk0MTlkM2Q4Yjg4NjkwZDdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtNDAsNyAr
NDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBNZWRpYVBsYXllciBFbmlnbmUgU3VwcG9y
dAogdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdIChNZWRp
YVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICByZWdpc3Ry
YXIoW10gKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAgICAg
ICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogfQogCkBAIC0xNjYsNyArMTY2LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICBpZiAobV9tZWRpYVNvdXJjZVByaXZhdGUpCiAgICAg
ICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wgTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2U6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXgg
Y2M2N2NlNjg4ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5ZTNjMjhmOC4uOTA1MTQzMTYyMWE4YzEw
OGE2ZWYwZjUxZWI2MGY3NzRhZmNjMGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMTU5LDkgKzE1OSw5
IEBAIEJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291cmNlSGFuZGxlKEJsb2JEYXRhKiBibG9i
RGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLCBtX2FzeW5jIHsgYXN5bmMgfQogewog
ICAgIGlmIChtX2FzeW5jKQotICAgICAgICBtX2FzeW5jU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1
ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgbV9hc3luY1N0cmVhbSA9IG1ha2VV
bmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmVh
bSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVN0cmVhbT4oKTsKKyAgICAgICAgbV9zdHJlYW0gPSBt
YWtlVW5pcXVlPEZpbGVTdHJlYW0+KCk7CiB9CiAKIEJsb2JSZXNvdXJjZUhhbmRsZTo6fkJsb2JS
ZXNvdXJjZUhhbmRsZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggODExMmI5NzNlZWY1NGVkN2E1Yzdh
NTE0Y2YxMDJhYzk5MWU3NjUzMy4uYjU0MWY2MmVlMDA1MjAzNjJjMTU1N2Y3Y2E0OTY0YTIzN2I4
NzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBEZWNvZGluZ1Jlc3VsdERpc3Bh
dGNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVjb2RpbmdSZXN1bHREaXNwYQog
CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGNyZWF0ZURlY29kZVRhc2soY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYgc2NoZWR1bGVDb250ZXh0LCBEZWNv
ZGVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERlY29kZVRhc2s+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29k
ZVRhc2s+KAogICAgICAgICB1cmwuc3RyaW5nKCksCiAgICAgICAgIHNjaGVkdWxlQ29udGV4dCwK
ICAgICAgICAgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAppbmRleCBhOTg0M2Y1MGU1
YTQzNDAzZDhmNTJmMGE5NjdmOTAyNzg2NWU4ZDU2Li44ZGFlYzU0YTEzNDJkYWI1OWMzNWNjNDky
N2EwMGZlNjIyOTQ5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCkBAIC0zNyw2ICszNyw3IEBAIFdFQkNPUkVfRVhQT1JU
IGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldlYktpdEludGVybmFsOyAvLyBV
c2VkIGZvciBlCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZXJyb3JE
b21haW5XZWJLaXRTZXJ2aWNlV29ya2VyOyAvLyBVc2VkIGZvciBlcnJvcnMgdGhhdCBoYXBwZW4g
d2hlbiBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBhIHNlcnZpY2Ugd29ya2VyLgogCiBjbGFzcyBS
ZXNvdXJjZUVycm9yQmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmNwcAppbmRleCAzMGMyN2Y1NzZhMTc3ZTZiNmFiMTk0NzQwYTdkOTAyNWI2NTlmY2FkLi42YTMx
ZTNlNTI3ZjhlYzkyZDZmNjJiOTZjZGQ4MTk0NDE0YjU1YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtNzQsNyArNzQs
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRl
cihjb25zdCBBdG9tU3RyaW5nJiBwcm90b2NvbAogfQogCiBSZXNvdXJjZUhhbmRsZTo6UmVzb3Vy
Y2VIYW5kbGUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCwgYm9vbCBkZWZlcnNMb2Fk
aW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdT
bmlmZikKLSAgICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUhhbmRsZUludGVybmFsPih0
aGlzLCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRl
bnRTbmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSksIHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmKSkKKyAgICA6IGQobWFrZVVuaXF1ZTxSZXNvdXJjZUhhbmRsZUlu
dGVybmFsPih0aGlzLCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNo
b3VsZENvbnRlbnRTbmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSks
IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKSkKIHsKICAgICBpZiAoIXJlcXVlc3QudXJsKCku
aXNWYWxpZCgpKSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBkYWQ5MDEwZjk1NzBlYmM1
Njc2MzM1NDNmZDFmYzUwMmY4NDY5Yjk5Li43MTNiNGRmYjMwYjJhZmRmYmVhZmY0ZWU1MzcwYTI1
NDZmYWQzYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTE2OSw3
ICsxNjksNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbgogICAgIH07CiAKICAgICBpZiAobV9t
ZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2Fn
ZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmsp
KSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwog
ICAgIG1fc2VtYXBob3JlLndhaXQoKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVSZXNwb25zZQogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1f
bWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihX
VEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsK
QEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgIH07CiAgICAg
CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAg
ICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4o
V1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZN
b3ZlKHdvcmspKTsKIH0KQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmco
KQogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRp
ZEZhaWwoQ0ZFcnJvclJlZgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAg
ICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFr
ZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzExLDcgKzMxMSw3
IEBAIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNz
YWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1
ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7
CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAg
IG1fc2VtYXBob3JlLndhaXQoKTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVD
aGFsbGVuZwogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVz
c2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6
ZGlkU2VuZEJvZHlEYXRhKENGCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAg
ICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZCht
YWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zODAsNyArMzgw
LDcgQEAgQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm8KICAgICB9OwogICAgIAogICAgIGlmIChtX21l
c3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdl
UXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykp
KTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAg
ICAgbV9zZW1hcGhvcmUud2FpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGM5YjUz
ZTMxMmFkODU1NzZkMzY2ZWY0ZGM1Mzc0MzkxZmU4YzY5MGMuLmJhNTVmMDA0OGI4ZTRkZGM1YjA3
MzRkOTkzZGM5YjEzYjhjYjJiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTUyMyw3
ICs1MjMsNyBAQCAtICh2b2lkKV9yZXN0YXJ0CiAKICAgICBfcmVzb3VyY2UgPSBzZWxmLnNlc3Np
b24ubG9hZGVyLnJlcXVlc3RSZXNvdXJjZShzZWxmLm9yaWdpbmFsUmVxdWVzdCwgUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOwogICAgIGlm
IChfcmVzb3VyY2UpCi0gICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9y
ZXNvdXJjZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
Q2xpZW50PihzZWxmKSk7CiB9CiAKIC0gKHZvaWQpX2NhbmNlbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYTQ1YTVm
NGU0YTAyOGZlNmU3ZjJkZmI3NWVjMmM4YWVjOTNlZDJiYi4uMTAxNjI0ZjI5MDBhOTRjYzdkMWE4
OTk4OTY3NmQ2YjQ1YWI3ZmEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgT3B0aW9u
YWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QKICAgICAgICAgIkFORCAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4g
R0xPQiA/KSkgIlwKICAgICAgICAgIk9SREVSIEJZIGxlbmd0aChwYXRoKSBERVNDLCBsYXN0dXBk
YXRlZCI7CiAKLSAgICBhdXRvIHBzdG10ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1l
bnQ+KG1fZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0byBwc3RtdCA9IG1ha2VVbmlxdWU8U1FMaXRl
U3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGlmICghcHN0bXQpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKQEAgLTU2Niw3ICs1NjYsNyBAQCBib29sIENvb2tpZUphckRC
OjpkZWxldGVBbGxDb29raWVzKCkKIAogdm9pZCBDb29raWVKYXJEQjo6Y3JlYXRlUHJlcGFyZVN0
YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8g
c3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7
CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwogICAgIEFTU0VSVChyZXQgPT0g
U1FMSVRFX09LKTsKICAgICBtX3N0YXRlbWVudHMuYWRkKHNxbCwgV1RGTW92ZShzdGF0ZW1lbnQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckRCLmgKaW5kZXggMGMwM2U5ZDY5MmM3ZjZkYzYxMzA4NmZmMjU1YzIwZTVjNmJiZTllOS4uMjY4
N2FlNzRmYjlkOTk0Mjk3MmJlZGNhYzZhYjliMTE1OWE3ZTUwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTQxLDYgKzQx
LDcgQEAgZW51bSBjbGFzcyBDb29raWVBY2NlcHRQb2xpY3kgewogfTsKIAogY2xhc3MgQ29va2ll
SmFyREIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENvb2tpZUphckRCKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCAxMTAyN2NlM2Iz
Y2Y2Mzg4Zjk5NTRhYWY0OWM0OTAzZmU5M2ZkZmY1Li44Y2UxMTQzODQ4ZmIyMzE4YmExOTkwZWFk
MThlMTVmMzdkODQzNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDdXJsQ2FjaGVFbnRyeSB7Ci0KKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVy
bCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyaW5nJiBjYWNoZURpcik7CiAgICAgfkN1
cmxDYWNoZUVudHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggZmE1YzhkMmQyMWI2MjczODE1
ZDAyM2E0ZjIwNDU1MDE2ZTk2MzhhZi4uZTJiNGI1ZGZiZGE2MmEzYzBjYjZiZjkxODFiYmQ2OGZk
N2E0YTA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgLS1lbmQ7IC8vIExhc3QgbGluZSBp
cyBlbXB0eQogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IGl0
LT5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtl
X3VuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKKyAgICAg
ICAgYXV0byBjYWNoZUVudHJ5ID0gbWFrZVVuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxs
cHRyLCBtX2NhY2hlRGlyKTsKIAogICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAm
JiBjYWNoZUVudHJ5LT5lbnRyeVNpemUoKSA8IG1fc3RvcmFnZVNpemVMaW1pdCkgewogICAgICAg
ICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CkBA
IC0yMTMsNyArMjEzLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUmIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYKIAogICAgICAgICBpbnZh
bGlkYXRlQ2FjaGVFbnRyeSh1cmwpOyAvLyBJbnZhbGlkYXRlIGV4aXN0aW5nIGVudHJ5IG9uIDIw
MAogCi0gICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hl
RW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9
IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CiAgICAg
ICAgIGJvb2wgY2FjaGVhYmxlID0gY2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVz
cG9uc2UpOwogICAgICAgICBpZiAoY2FjaGVhYmxlKSB7CiAgICAgICAgICAgICBjYWNoZUVudHJ5
LT5zZXRJc0xvYWRpbmcodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3ZDE3MjE3YzJlNDQyYWM2ZjNkZThj
NGI2MGE5NTI2YzlmNjU4NDJhLi43YjA0ZmEyNmE0MmFiOTc4YWUwN2JkMzFmMGU2OTE1NTFiYmM0
NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ29udGV4dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBDdXJsQ29udGV4dDo6Q3VybENvbnRl
eHQoKQogICAgIGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+KCJXRUJLSVRf
Q1VSTF9NQVhfSE9TVF9DT05ORUNUSU9OUyIpKQogICAgICAgICBtYXhIb3N0Q29ubmVjdGlvbnMg
PSAqdmFsdWU7CiAKLSAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlcXVl
c3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29u
bmVjdGlvbnMpOworICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxDdXJsUmVxdWVzdFNjaGVk
dWxlcj4obWF4Q29ubmVjdHMsIG1heFRvdGFsQ29ubmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9u
cyk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0gZW52VmFyLmRlZmluZWQoIkRF
QlVHX0NVUkwiKTsKQEAgLTMzNiw3ICszMzYsNyBAQCBDVVJMY29kZSBDdXJsSGFuZGxlOjp3aWxs
U2V0dXBTc2xDdHgodm9pZCogc3NsQ3R4KQogICAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9C
WV9DQUxMQkFDSzsKIAogICAgIGlmICghbV9zc2xWZXJpZmllcikKLSAgICAgICAgbV9zc2xWZXJp
ZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOworICAgICAg
ICBtX3NzbFZlcmlmaWVyID0gbWFrZVVuaXF1ZTxDdXJsU1NMVmVyaWZpZXI+KHNzbEN0eCk7CiAK
ICAgICByZXR1cm4gQ1VSTEVfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oCmluZGV4IDdkMDYwNjhjZDlkMWFlYmVlNDJkMzg1
OTRhYmQwOTRiOTAxMTQ0NDQuLmE0ZjhjMDI4Mjc2N2IwYjQ4NzcwYTA0OGVlODUyZjE2NmUwN2E3
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5oCkBAIC0xNDcsNiArMTQ3LDcgQEAgY2xhc3MgQ3VybENvbnRleHQgOiBwdWJsaWMg
Q3VybEdsb2JhbCB7CiAvLyBDdXJsTXVsdGlIYW5kbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgQ3VybE11bHRpSGFuZGxlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsTXVsdGlI
YW5kbGUpOwogCiBwdWJsaWM6CkBAIC0yMDIsNiArMjAzLDcgQEAgY2xhc3MgSFRUUEhlYWRlck1h
cDsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIAogY2xhc3MgQ3VybEhhbmRsZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybEhh
bmRsZSk7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKaW5kZXggOWZjNjZlYzAyMGUy
OTk2ZDM4ZDA2MGFkNzhkMzZmMTE0YWU0ODFjNi4uNzg1ZDZjYjhlNmRjOGZhZmU4ZTgxMGRmYmZk
ZjRjZTc2MmY0YjM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAg
Y29uc3QgVmVjdG9yPGNoYXI+KiBDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1fcG9zdERhdGEpCi0gICAgICAgIG1f
cG9zdERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+Zmxh
dHRlbigpKTsKKyAgICAgICAgbV9wb3N0RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPGNoYXI+Piht
X2Zvcm1EYXRhLT5mbGF0dGVuKCkpOwogCiAgICAgcmV0dXJuIG1fcG9zdERhdGEuZ2V0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYThiYjhkODFhN2FiZDcxNzQzYmQzOTVkY2M4
NjYzMTc5ZmRlMmQ1NS4uY2NkYmIyODIzOWYyMmMzNjM2Y2FjMTRiMDc4NWQ2ZjU1YWIyZjViYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Q3VybE11bHRpcGFydEhhbmRsZT4gQ3VybE11bHRpcGFydEhhbmRsZTo6Y3JlYXRlSWZOZWVk
ZWQoQ3VybE11bAogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50
LCAqYm91bmRhcnkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+
KGNsaWVudCwgKmJvdW5kYXJ5KTsKIH0KIAogT3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpleHRyYWN0Qm91bmRhcnkoY29uc3QgQ3VybFJlc3BvbnNlJiByZXNwb25zZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5oCmluZGV4IDgwNGM3NDQ2YzQ1M2I2NzE1Zjg4NWU5YWZjMjczODg1OGUy
Njg3MWEuLjcyMGM2OTgwZWRkM2RhZTNlMTJjNjNmMDhiNjNjNmY4OTZlNTMzMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Q3VybE11bHRpcGFydEhhbmRsZT4gY3JlYXRlSWZOZWVkZWQoQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudCYsIGNvbnN0IEN1cmxSZXNwb25zZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAwNzAzNGJiNjJkN2Ji
ZTY0MGQ0ZjgwMWM0ZTE4NDIyM2RmMjQxM2RjLi5iMmEyMmRhMjJkNmMwMTU1NTA3NTk5NWY2Yjgz
MDg2ZmVhODFmZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0OjpjYWxsQ2xpZW50KEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3QmLCBDdXJsUmVxdWVzdENs
aWVudCYpPiYmCiB2b2lkIEN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQoRnVuY3Rpb248dm9p
ZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh0YXNrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogICAgIGVsc2UgaWYgKGlzTWFpblRocmVh
ZCgpKQogICAgICAgICB0YXNrKCk7CiAgICAgZWxzZQpAQCAtMjA1LDcgKzIwNSw3IEBAIENVUkwq
IEN1cmxSZXF1ZXN0OjpzZXR1cFRyYW5zZmVyKCkKICAgICBhdXRvIGh0dHBIZWFkZXJGaWVsZHMg
PSBtX3JlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwogICAgIGFwcGVuZEFjY2VwdExhbmd1YWdl
SGVhZGVyKGh0dHBIZWFkZXJGaWVsZHMpOwogCi0gICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtl
X3VuaXF1ZTxDdXJsSGFuZGxlPigpOworICAgIG1fY3VybEhhbmRsZSA9IG1ha2VVbmlxdWU8Q3Vy
bEhhbmRsZT4oKTsKIAogICAgIG1fY3VybEhhbmRsZS0+c2V0VXJsKG1fcmVxdWVzdC51cmwoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDkxODM3YWY5ZjNlNDc3M2I1YzcxYzFj
MjYwZGI5NmY1ODZiMjExYWYuLjNhYTVmNTJkYjYyN2FiYjBlY2NhZjI5MjEzZGNlMTJmYmM2ZmJj
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQg
Q3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3VybE11bHRpSGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFuZGxlID0gbWFrZVVuaXF1ZTxD
dXJsTXVsdGlIYW5kbGU+KCk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heENvbm5lY3Rz
KG1fbWF4Q29ubmVjdHMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhUb3RhbENvbm5l
Y3Rpb25zKG1fbWF4VG90YWxDb25uZWN0aW9ucyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNl
dE1heEhvc3RDb25uZWN0aW9ucyhtX21heEhvc3RDb25uZWN0aW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVk
dWxlci5oCmluZGV4IGNhM2JiYTgxMzQ0MGJmZjZlODAzMTI2NDA5NzZjYzM4OGE3NDg2NGYuLjRi
OTVjMGQxOWFkOTA0MmQyYWM3MGVkNGIxMzNmOGQxZDBjNjMyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVk
dWxlci5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxS
ZXF1ZXN0U2NoZWR1bGVyQ2xpZW50OwogCiBjbGFzcyBDdXJsUmVxdWVzdFNjaGVkdWxlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Vy
bFJlcXVlc3RTY2hlZHVsZXIpOwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxDdXJsUmVxdWVz
dFNjaGVkdWxlcj47CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFNTTFZlcmlmaWVyLmgKaW5kZXggNDUyZjcwNWY5Y2I4ZmUyOTE5
Y2YyODU2ZGVlOGQwYWQxYTgxNGYxYS4uM2I1OWNiMWY4NjM2NTQ4ODFkNDZlNjViYmU5NTU0ZTlm
NjYzNDM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xWZXJpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU1NMVmVyaWZpZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDdXJsU1NMVmVyaWZpZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxTU0xWZXJpZmllcik7CiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBTU0xDZXJ0aWZpY2F0ZUZsYWdzIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHAKaW5kZXggNDdiMzc4M2U2NDYyOWE5MmVlOGRhNDBiZDQ3OTcwYzc5NmVhNTQ4Ni4uNzA3ZDBh
NjYzYTcxODZkYjEwNTA0ZGRjMjg2NmI3Njk3N2QzNGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBSZWY8Q3VybFJlcXVlc3Q+IFJlc291cmNlSGFuZGxlOjpj
cmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZQogQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUqIFJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSgpCiB7CiAgICAgaWYg
KCFkLT5tX2RlbGVnYXRlKQotICAgICAgICBkLT5tX2RlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1
ZTxDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOworICAgICAgICBkLT5tX2RlbGVn
YXRlID0gbWFrZVVuaXF1ZTxDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOwogCiAg
ICAgcmV0dXJuIGQtPm1fZGVsZWdhdGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcAppbmRleCBhMzY3ZmRhNjJhNmQyMTJhNDk1NWU2ODg5YzY1NzIwYzllZmFm
MjFiLi4xM2E4MzJjMjY2OWI0Y2U4Y2JlYmYzMTM0YmEwODlkOTAyZGZhOTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGw6OnN0b3BUaHJlYWQoKQogdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpjYWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7CisgICAgbV90YXNr
UXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkp
OwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmV4ZWN1dGVUYXNrcygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVy
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVy
dGVyLmgKaW5kZXggNWEwNmYyZWY4OWVmNWMyMWJlMTU3YzcxZGExNDE5ZWM4NDgwOWVmNy4uNzY1
NDNhZDE2YzE0OTQ4NTg4MjI5OTFmMzA1ZmY3YTMzZTE3YWU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAt
MzYsNiArMzYsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogCiBjbGFzcyBQcmV2aWV3Q29udmVydGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmV2aWV3Q29udmVydGVyKTsKIHB1Ymxp
YzoKICAgICBQcmV2aWV3Q29udmVydGVyKGlkIGRlbGVnYXRlLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXgg
ZGUwYjdlMWYxODdiNTA3NjVhOWQxN2MyZWM0ZWM4MDMzZDgzZjM0MS4uZjEwZWI2MjVlYTA4MTMw
MjkyNzgwN2NlYzFlMmZmNmU3M2YyNGMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtNjEsNyArNjEs
NyBAQCAtICh2b2lkKWNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDooRnVuY3Rpb248dm9pZCgpPiYm
KWZ1bmN0aW9uCiB7CiAgICAgLy8gU3luYyB4aHIgdXNlcyB0aGUgbWVzc2FnZSBxdWV1ZS4KICAg
ICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlvbikp
KTsKKyAgICAgICAgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogCiAgICAgLy8gVGhpcyBpcyB0aGUg
Y29tbW9uIGNhc2UuCiAgICAgaWYgKCFzY2hlZHVsZWRXaXRoQ3VzdG9tUnVuTG9vcE1vZGUobV9z
Y2hlZHVsZWRQYWlycykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKaW5kZXggNGJiMzBhODcxZGU1
NzAzOWI3YjcxOTM0ZmVjMzc2M2E1YTRhODJkOS4uZDRiYTRlOTUwNDE1YmI0MDZiYWJjMDFiNmQy
MGM2NmQ0Zjg0YjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApAQCAtMTg2LDcgKzE4Niw3
IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lLCB1aW50NjRfdCBpZGVudGlmaWVyLCBECiAKICAgICBnX29iamVjdF9zZXRfZGF0YShHX09C
SkVDVChhZGRyZXNzLmdldCgpKSwgImlkZW50aWZpZXIiLCBHVUlOVF9UT19QT0lOVEVSKGlkZW50
aWZpZXIpKTsKIAotICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlm
aWVyLCBzdGQ6Om1ha2VfdW5pcXVlPEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNvbXBsZXRpb25BbmRD
YW5jZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoY2FuY2Vs
bGFibGUpKSk7CisgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuYWRkKGlkZW50aWZp
ZXIsIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEROU1Jlc29sdmVRdWV1ZVNvdXA6
OkNvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IFdURk1vdmUoY2FuY2VsbGFibGUpKSk7CiB9CiAKIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6
c3RvcFJlc29sdmUodWludDY0X3QgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcAppbmRleCBlNGM4YjBmMTNlNmQwODlhNTg5MmFhN2FlMGE5YjgyMTU4NWJiOWE0
Li5iZDA2MmY3MjhmMTZmNzAwYzQ2ODAzYmM4MzllYzBiYzU1NzhlMzI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdv
cmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgc3RhdGljIGNvbnN0
IGNoYXIqIGF1dGhUeXBlRnJvbVByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lKFBy
b3RlY3Rpb25TcGEKIH0KIAogc3RydWN0IFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhIHsKKyAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgU2VjcmV0U2VydmljZVNlYXJjaERh
dGEoR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9pZCAoQ3JlZGVudGlhbCYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBjYW5jZWxsYWJsZShjYW5jZWxsYWJs
ZSkKICAgICAgICAgLCBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKQEAgLTE3Myw3ICsxNzQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3Jl
ZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uUwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTZWNyZXRT
ZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhPihj
YW5jZWxsYWJsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIHNlY3JldF9zZXJ2
aWNlX3NlYXJjaChudWxscHRyLCBTRUNSRVRfU0NIRU1BX0NPTVBBVF9ORVRXT1JLLCBhdHRyaWJ1
dGVzLmdldCgpLAogICAgICAgICBzdGF0aWNfY2FzdDxTZWNyZXRTZWFyY2hGbGFncz4oU0VDUkVU
X1NFQVJDSF9VTkxPQ0sgfCBTRUNSRVRfU0VBUkNIX0xPQURfU0VDUkVUUyksIGNhbmNlbGxhYmxl
LAogICAgICAgICBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9p
bnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29s
dmVyLmgKaW5kZXggMTBmZWNiYzQxOTQ3OTVmMzJkMWNhN2U3NjA5YWM0ZmYyMDkyY2QyMy4uYWFm
ZWQzZGU3OWI5OWFhYzQ3NjljNzZiNTVmNmMxY2JiNjYxYjhmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBC
aWRpUmVzb2x2ZXJCYXNlPEl0ZXJhdG9yLCBSdW4sIERlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bklu
dGVybmFsKCkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmRPZmZzZXQgPj0gc3RhcnRPZmZz
ZXQpCi0gICAgICAgICAgICBtX3J1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8UnVuPihz
dGFydE9mZnNldCwgZW5kT2Zmc2V0ICsgMSwgY29udGV4dCgpLCBtX2RpcmVjdGlvbikpOworICAg
ICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKIAogICAgICAgICBtX2Vvci5p
bmNyZW1lbnQoKTsKICAgICAgICAgbV9zb3IgPSBtX2VvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTG9jYWxlSUNVLmNwcAppbmRleCA1OWUxZmM3MmEyYmYyOTY5NDVhODZmODU1MmI4
NjM3NmE5ZWE1ODZkLi4yYzhjY2U3MzA4OGZhNWFkMGNmNTk1OWNjZTRmOTY5MWJmMzU3YTA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBpY3U7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExv
Y2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIH0KIAogTG9jYWxlSUNVOjpMb2NhbGVJQ1UoY29uc3QgY2hhciogbG9jYWxlKQpA
QCAtMTYzLDIyICsxNjMsMjIgQEAgc3RhdGljIFN0cmluZyBnZXREYXRlRm9ybWF0UGF0dGVybihj
b25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkKIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3Ry
aW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCogZGF0
ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwg
aW50MzJfdCBzaXplKQogewogICAgIGlmICghZGF0ZUZvcm1hdCkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGlmICh1ZGF0X2NvdW50U3ltYm9scyhkYXRlRm9y
bWF0LCB0eXBlKSAhPSBzdGFydEluZGV4ICsgc2l6ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZl
Y3RvcjxTdHJpbmc+PigpOwogCi0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3Ry
aW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShzaXplKTsKICAgICBmb3IgKGlu
dDMyX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CiAgICAgICAgIGludDMyX3QgbGVuZ3RoID0gdWRhdF9nZXRTeW1ib2xz
KGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCAwLCAwLCAmc3RhdHVzKTsKICAgICAg
ICAgaWYgKHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4g
YnVmZmVyKGxlbmd0aCk7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAg
dWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCBidWZmZXIu
ZGF0YSgpLCBsZW5ndGgsICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAg
ICBsYWJlbHMtPmFwcGVuZChTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSkpOwogICAgIH0K
ICAgICByZXR1cm4gV1RGTW92ZShsYWJlbHMpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25z
dCBVRGF0ZUZvcm1hdCoKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4g
Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscygpCiB7Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShXVEZfQVJS
QVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSk7ICsraSkKICAgICAgICAg
bGFiZWxzLT5hcHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ldKTsKQEAgLTIwOCw3ICsyMDgsNyBA
QCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjptb250aExhYmVscygpCiAKIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVs
cygpCiB7Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+
PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAg
ICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiQU0iKTsK
ICAgICBsYWJlbHMtPmFwcGVuZCgiUE0iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0xvY2FsZU5vbmUuY3BwCmluZGV4IGJiNmIyNmJhNTljYjM2Yjk4OWI3ZTZmNTg2MzBjN2E3YjNi
NTZlYTcuLjc4MTVhNDc4ZTAyOTc0NTU5NjU3NmMyZGVkMjIxMTkzNmFhOTZhMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtNTcsNyArNTcsNyBA
QCBjbGFzcyBMb2NhbGVOb25lIDogcHVibGljIExvY2FsZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxM
b2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPExvY2FsZU5vbmU+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9j
YWxlTm9uZT4oKTsKIH0KIAogTG9jYWxlTm9uZTo6fkxvY2FsZU5vbmUoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKaW5kZXggZjhl
MTY3MDg0OWE5NTg5OGExNDU3YmM5OGRhOTFlNGJkZTc4NGM3OS4uZTVmMjgxNjZjNmRkMzRiYzUz
NTA5YjZhMDAyMGE4ODg5MDdjMmNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjSUNVLmNwcApAQCAtMTU2LDQzICsxNTYsNDMgQEAgdm9pZCBUZXh0Q29kZWNJ
Q1U6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiAgICAgICAg
IC8vIGh0dHA6Ly9kZW1vLmljdS1wcm9qZWN0Lm9yZy9pY3UtYmluL2NvbnZleHAKICAgICAgICAg
aWYgKCFzdHJjbXAobmFtZSwgIndpbmRvd3MtODc0IikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJh
cihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtODc0LTIwMDAiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAw
Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ3aW5kb3dzLTk0OSIpKSB7CiAgICAgICAgICAgICBy
ZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OS0yMDAwIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05
NDktMjAwMCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtY3lyaWxsaWMiKSkgewogICAg
ICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEwLjIiKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJt
YWNvcy03XzMtMTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtZ3JlZWsiKSkgewog
ICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8yLTEwLjQi
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUs
ICJtYWNvcy02XzItMTAuNCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtY2VudHJhbGV1
cnJvbWFuIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1h
Y29zLTI5LTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29k
ZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1h
Yy10dXJraXNoIikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwg
Im1hY29zLTM1LTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0
Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJF
VUMtS1IiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2lu
ZG93cy05NDkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJ
Q1U+KG5hbWUsICJ3aW5kb3dzLTk0OSIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgVGV4dENvZGVjSUNV
OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICBj
b25zdCBjaGFyKiBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lID0gdWNudl9nZXRDYW5vbmljYWxOYW1l
KG5hbWUsICJJQU5BIiwgJmVycm9yKTsKICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikp
OwogICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWVd
IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFt
ZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWUpOwogICAgICAgICB9
KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0xhdGluMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y0xhdGluMS5jcHAKaW5kZXggOTMxNDUzMzI4YTZmNjY5NDg1ZWUwMWY4YTRlMmNlZGU1MDI2Nzdm
Zi4uOTJjNjYxM2NiMWZjYzBlMzA4YTczYzM1MGE5ZTA3ZWY3NzM0NjJmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApAQCAtOTMsNyAr
OTMsNyBAQCB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29k
aW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0
ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIo
IndpbmRvd3MtMTI1MiIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4
dENvZGVjTGF0aW4xPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNMYXRp
bjE+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKaW5kZXggMTc2NWJmNzkyMTU5NzViMTU3Yzhi
M2Y3NGM1NTcyYzQ3MWUyMTE0MS4uYzhiNTU4YzhjYTJkM2FmZDMwMjE0YmNmYzM3YTE0NTc3NTZh
MTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNS
ZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNSZXBsYWNlbWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBUZXh0Q29kZWNSZXBsYWNl
bWVudDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3Ry
YXIKIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1Jl
Z2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJyZXBsYWNlbWVudCIsIFtdIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjUmVwbGFjZW1lbnQ+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VURjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRG
MTYuY3BwCmluZGV4IGJlMDA2NTY0NDY0OGZjZTBjMzc5ZDNjNzQzZWUyMjdlYTllZGE2ZjQuLjkw
YzQ0NzVkMDIwYjlmNDcxYjViZTc3YzNjYWFjMGZkYzk4Y2JhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCkBAIC01NCwxMCArNTQsMTAg
QEAgdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFt
ZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRDb2RlY1VURjE2OjpyZWdpc3RlckNvZGVj
cyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigiVVRGLTE2
TEUiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjE2
Pih0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjVVRGMTY+KHRydWUp
OwogICAgIH0pOwogICAgIHJlZ2lzdHJhcigiVVRGLTE2QkUiLCBbXSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjE2PihmYWxzZSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2PihmYWxzZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCmluZGV4IGEzZGFk
NGU5ZDE2Mzc2ODYzMDg4YjE5NzEwZjgzOWRiYmZmZWE4ZGQuLmUxZDBhNTNjNzE3YWFlNzM5OTM5
ZjUxYzRkMzI5MzQ1YWY4OWNhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVVRGOC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEY4LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFRleHRDb2RlY1VURjg6
OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQog
dm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVn
aXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigiVVRGLTgiLCBbXSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjg+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFRleHRDb2RlY1VURjg+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKaW5kZXggMjk2YzQ2
OWYxNjlmYjkxMWRjOGRiZDdhNjQ3ZWE1NjQxZTJmZmUxOS4uNDhhZGJhOWQ0YjFhN2E5YTY1OGFl
ZjlkZmFkZjg1YWRkZTlkY2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBU
ZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJl
Z2lzdHJhciByZWdpc3RyYXIKIHZvaWQgVGV4dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29k
ZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ4LXVz
ZXItZGVmaW5lZCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
ZGVjVXNlckRlZmluZWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1Vz
ZXJEZWZpbmVkPigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5kZXggYTUxN2JlMzQxZjZhYzRiZThlODkzY2ZhZDdjMjI4
ODQ1ZDZhODI4MC4uMmIzZDAzYTM4YTVkMjAxYmI2ZGNiOGViZTQ0ZjQ2ZmVlZmM2N2UwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtNjcs
NyArNjcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTG9jYWxlPiBkZXRlcm1pbmVMb2NhbGUoY29u
c3QgU3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3Jl
YXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUu
c3RyaW5nKCkpLmdldCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+
IGNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKE5TTG9jYWxlKiBsb2NhbGUsIE5TQ2FsZW5kYXIqIGNh
bGVuZGFyLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSBkYXRlU3R5bGUsIE5TRGF0ZUZvcm1hdHRlclN0
eWxlIHRpbWVTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
d2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCmluZGV4IDZhMTYwZGVjY2ZjOTI2YWVmMzdkZTIzZTk3ZjYyZThmNWM2NzkwNmEu
LmFhMDBhNGFkNmY1YjU5OTgyYjZiNDc3MzE3MWM4YmM3YzAzMzkwMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNzgsNyArNzgsNyBA
QCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcm
IGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVXaW4+KExDSURG
cm9tTG9jYWxlKGxvY2FsZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZVdpbj4oTENJ
REZyb21Mb2NhbGUobG9jYWxlKSk7CiB9CiAKIGlubGluZSBMb2NhbGVXaW46OkxvY2FsZVdpbihM
Q0lEIGxjaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9U
ZXh0Q29kZWNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENv
ZGVjV2luLmNwcAppbmRleCBhZjQ2OTEzOTA4MWU4MGMxMjA3YjgyYzk3ZmRmYTNjNzcyMWE2NTEx
Li4yY2ViNDc1ZTVmYWViYjY3MGM3NDE0NDc1YTQ3MjkyNDk1MmRjYTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKQEAgLTEzMSw3
ICsxMzEsNyBAQCBzdGF0aWMgVUlOVCBnZXRDb2RlUGFnZShjb25zdCBjaGFyKiBuYW1lKQogCiBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjV2luKGNvbnN0IFRl
eHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZvaWQqKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjV2luPihnZXRDb2RlUGFnZShlbmNvZGluZy5u
YW1lKCkpKTsKIH0KIAogVGV4dENvZGVjV2luOjpUZXh0Q29kZWNXaW4oVUlOVCBjb2RlUGFnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3Jt
RGlzcGxheU9wZW5WUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxh
dGZvcm1EaXNwbGF5T3BlblZSLmgKaW5kZXggZGQ2YWU3MzYwNDY3OWYxODhlMDFlMTEwZTRmZWJl
NTkzZDUzN2YxYi4uZjcxYmQ5ZjBkNTg5Y2MyZjgzOWIwNjdjMjNlYzhjYjUxODEwNjhkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNw
bGF5T3BlblZSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxh
dGZvcm1EaXNwbGF5T3BlblZSLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIgOiBwdWJsaWMgVlJQbGF0Zm9ybURp
c3BsYXkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSKHZyOjpJVlJTeXN0ZW0qLCB2cjo6SVZSQ2hhcGVy
b25lKiwgdnI6OklWUkNvbXBvc2l0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKaW5k
ZXggZDFkYzY3MzY4NmY2NTFlM2UwMzI5MWI3YzAyYzMxYjBjMTY5YmJjMi4uZTdjZjcxMzdlMzNh
YTU1YmY3ZTU4NWVlMTY0ZTY3M2QzYWFlZWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3Bw
CkBAIC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5W
Uj4gVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSgpCiAgICAgaWYgKCF2cjo6VlJfSXNS
dW50aW1lSW5zdGFsbGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+KCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+KCk7CiB9CiAKIFZSUGxhdGZvcm1N
YW5hZ2VyT3BlblZSOjp+VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIoKQpAQCAtNzgsNyArNzgsNyBA
QCBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IFZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSOjpnZXRWUkRpc3BsYXlzKCkKIAogICAgIFZlY3RvcjxXZWFrUHRyPFZSUGxhdGZvcm1EaXNw
bGF5Pj4gZGlzcGxheXM7CiAgICAgaWYgKCFtX2Rpc3BsYXkpCi0gICAgICAgIG1fZGlzcGxheSA9
IHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI+KG1fc3lzdGVtLCBjaGFw
ZXJvbmUsIGNvbXBvc2l0b3IpOworICAgICAgICBtX2Rpc3BsYXkgPSBtYWtlVW5pcXVlPFZSUGxh
dGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVyb25lLCBjb21wb3NpdG9yKTsKICAg
ICBkaXNwbGF5cy5hcHBlbmQobWFrZVdlYWtQdHIoKm1fZGlzcGxheSkpOwogICAgIHJldHVybiBk
aXNwbGF5czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52
ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIv
b3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKaW5kZXggNmE0Mzg3Y2MzMDgxNWUwMGMz
NDE2Yzg5NjZhZDI5ZDRiNzNmNzBkOS4uNmE3ODIzYmM3Yjk1ZWQ0MGRjZWNkZjBmNTczM2UxNmQ4
NDQ1YWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZS
UGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIv
b3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI7CiAKIGNsYXNzIFZS
UGxhdGZvcm1NYW5hZ2VyT3BlblZSIDogcHVibGljIFZSUGxhdGZvcm1NYW5hZ2VyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPiBjcmVhdGUoKTsKICAgICBleHBsaWNpdCBWUlBs
YXRmb3JtTWFuYWdlck9wZW5WUigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBhYmFkZGM3ZmJjYTIzNTllZmY1Yjk4MTFj
MTk1ZjZiNWFiYzFiYTgzLi4xNjk3ODU1ZmU3MmY2MzdlNjVhZDQ3NzcyYWZhNjFjNzQ3MTkyNDQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBA
IC05Myw3ICs5Myw3IEBAIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25lcldu
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAg
IGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICBh
dXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiAgICAgQ09NUHRyPElE
YXRhT2JqZWN0PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENsaXBi
b2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0gMDsKQEAgLTEw
NiwxNiArMTA2LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0YU9i
amVjdDsKICAgICBXQ0RhdGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKIH0K
IAogLy8gc3RhdGljCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChk
cmFnRGF0YS5wbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgLy8gRklY
TUU6IFNob3VsZCBhZGQgYSBjb25zdCBvdmVybG9hZCBvZiBkcmFnRGF0YU1hcCBzbyB3ZSBkb24n
dCBuZWVkIGEgY29uc3RfY2FzdCBoZXJlLgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2FzdDxEcmFnRGF0YSY+
KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCAxOTY0OWM1NjZj
ZmNmNWY0MjQzMDlkMWQ4ZDEwMGIwYjRmZjc3MGE4Li42ZjdmNGJhMTY2MGI0ZjdhOTc3MjEyYzg1
NjNhNDNjNjY1ZTMwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
ZWFyY2hQb3B1cE1lbnVEQi5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQgU2VhcmNoUG9wdXBN
ZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wgaWdub3JlRXJy
b3IpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IFNlYXJjaFBvcHVwTWVudURC
OjpjcmVhdGVQcmVwYXJlZFN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRv
IHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNl
LCBzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+
KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gU1FMSVRFX09LKTsKICAgICByZXR1cm4gc3Rh
dGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApp
bmRleCBkYmY5OWE0NWNlNzAzYTlkODU3YTBlNjAxOWQ2ODA2ZGQxMWZhMTdiLi4yNDEwMDNhMTAw
MzFhM2Q3ZTZkN2FhMWUyNGE0OWNiOTg5ODIwY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFNURE1FVEhPRElN
UCBXQ0RhdGFPYmplY3Q6OlNldERhdGEoRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBTVEdNRURJVU0q
IHBtZWRpdW0sIEJPCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0byBmZXRjID0gc3RkOjptYWtlX3VuaXF1ZTxGT1JN
QVRFVEM+KCk7CisgICAgYXV0byBmZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0Z01lZGl1
bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5KGZldGMu
Z2V0KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5jcHAKaW5kZXggYzAwNGZjOWU3MDRhNmFkMzIzNDlmYjgyNGNkYzVkZGQwMzYwMWI1Yy4uNDc5
ODFhZTY5OTFkYzY0OTE1MjBmYzgyNDMyZWNjNDk1ODY0NDNmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBGaQogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogCi0gICAgYXV0byBi
dWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlvdXNFZmZl
Y3QpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnBy
ZXZpb3VzRWZmZWN0KTsKICAgICBtX3NvdXJjZUFscGhhID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJ
ZChTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpKTsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0RWxl
bWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cz4oKmZpbHRlcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21w
bGV4TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVM
YXlvdXQuY3BwCmluZGV4IDAxMzM3ODdkOWQzMDYyYjFjYTc5YjE2MDc5NjNmMjBjMTA3MWVkNTMu
LmJkM2M5YmVlODcyOTg2ZWM2MWIxYTMwYTA0OTViOGMwYTI2ZmQ2MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcApAQCAtODIsNyArODIsNyBA
QCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIs
IElubGluZUl0ZXJhdG9yIGl0ZXIpCiAKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4g
Y3JlYXRlUnVuKGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0JiBvYmosIElubGluZUJp
ZGlSZXNvbHZlciYgcmVzb2x2ZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qmlk
aVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaWRpUnVuPihzdGFydCwgZW5kLCBvYmosIHJlc29s
dmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogfQogCiB2b2lkIENvbXBsZXhMaW5lTGF5
b3V0OjphcHBlbmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBpbnQg
c3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJl
c29sdmVyKQpAQCAtMTMwLDEyICsxMzAsMTIgQEAgdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBw
ZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXIKIHN0
ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9v
dElubGluZUJveCgpCiB7CiAgICAgaWYgKGlzPFJlbmRlclNWR1RleHQ+KG1fZmxvdykpIHsKLSAg
ICAgICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25j
YXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOworICAgICAgICBhdXRvIGJveCA9IG1ha2VVbmlx
dWU8U1ZHUm9vdElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSk7CiAg
ICAgICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0dXJu
IGJveDsKICAgICB9CiAgICAgICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJvb3RJ
bmxpbmVCb3g+KG1fZmxvdyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4o
bV9mbG93KTsKIH0KIAogUm9vdElubGluZUJveCogQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZUFu
ZEFwcGVuZFJvb3RJbmxpbmVCb3goKQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW5saW5lIEJpZGlS
dW4qIENvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlzdDxC
aWRpUnVuPiYgYmkKICAgICAgICAgd2hpbGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNlQ29u
dGV4dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBiYXNlQ29udGV4dCA9IHBhcmVudDsKIAotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJh
aWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IG1ha2VV
bmlxdWU8QmlkaVJ1bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFp
bGluZ1NwYWNlUnVuLT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFMKTsK
ICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAgICAgICAg
dHJhaWxpbmdTcGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuLmdldCgpOwogICAgICAgICBpZiAoZGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKQEAgLTE2MTcsNyArMTYxNyw3IEBAIHZvaWQg
Q29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZChMaW5lTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlKQogICAgICAgICBpZiAobGF5b3V0U3RhdGUuY2hlY2tGb3JGbG9hdHNGcm9t
TGFzdExpbmUoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21WaXN1YWxPdmVyZmxv
dyA9IGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygpOwogICAgICAg
ICAgICAgTGF5b3V0VW5pdCBib3R0b21MYXlvdXRPdmVyZmxvdyA9IGxhc3RSb290Qm94KCktPmxv
Z2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdygpOwotICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7
CisgICAgICAgICAgICBhdXRvIG5ld0xpbmVCb3ggPSBtYWtlVW5pcXVlPFRyYWlsaW5nRmxvYXRz
Um9vdElubGluZUJveD4obV9mbG93KTsKICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdGbG9hdHNM
aW5lQm94ID0gbmV3TGluZUJveC5nZXQoKTsKICAgICAgICAgICAgIG1fbGluZUJveGVzLmFwcGVu
ZExpbmVCb3goV1RGTW92ZShuZXdMaW5lQm94KSk7CiAgICAgICAgICAgICB0cmFpbGluZ0Zsb2F0
c0xpbmVCb3gtPnNldENvbnN0cnVjdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
bG9hdGluZ09iamVjdHMuY3BwCmluZGV4IDRjZGQxMzljNDg3NTE2ZWEwZTdiMTIxM2I3MDNiZDM0
MjdhYjAxOGMuLmE2YzY0ODE4YzQ5NzQ1NjA5MGY2NjIzYzMwNGI1ZDYyNzcwN2FlNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC03NSw3ICs3
NSw3IEBAIEZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gmIHJlbmRlcmVy
LCBUeXBlIHR5cGUsIGNvbnN0IExheW91dFJlY3QmCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGlu
Z09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyKQogewot
ICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVy
ZXIpOworICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVy
ZXIpOwogICAgIG9iamVjdC0+c2V0U2hvdWxkUGFpbnQoIXJlbmRlcmVyLmhhc1NlbGZQYWludGlu
Z0xheWVyKCkpOyAvLyBJZiBhIGxheWVyIGV4aXN0cywgdGhlIGZsb2F0IHdpbGwgcGFpbnQgaXRz
ZWxmLiBPdGhlcndpc2Ugc29tZW9uZSBlbHNlIHdpbGwuCiAgICAgb2JqZWN0LT5zZXRJc0Rlc2Nl
bmRhbnQodHJ1ZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVy
Qm94JiByZW5kZXJlcikKIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGlu
Z09iamVjdDo6Y29weVRvTmV3Q29udGFpbmVyKExheW91dFNpemUgb2Zmc2V0LCBib29sIHNob3Vs
ZFBhaW50LCBib29sIGlzRGVzY2VuZGFudCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZy
YW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdp
bk9mZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZyYW1l
UmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdpbk9m
ZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQoKSBjb25z
dAogewotICAgIGF1dG8gY2xvbmVPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2Jq
ZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9mZnNldCwgbV9z
aG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOworICAgIGF1dG8gY2xvbmVPYmplY3QgPSBtYWtl
VW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBt
X21hcmdpbk9mZnNldCwgbV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOwogICAgIGNsb25l
T2JqZWN0LT5tX3BhZ2luYXRpb25TdHJ1dCA9IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIGNsb25l
T2JqZWN0LT5tX2lzUGxhY2VkID0gbV9pc1BsYWNlZDsKICAgICByZXR1cm4gY2xvbmVPYmplY3Q7
CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQbGFjZWRG
bG9hdHNUcmVlKCkKICAgICBpZiAobV9zZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0
VHJlZT4oKTsKKyAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2Jq
ZWN0VHJlZT4oKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NldC5iZWdpbigpLCBlbmQgPSBtX3Nl
dC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9h
dGluZ09iamVjdCA9IGl0LT5nZXQoKTsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5pc1Bs
YWNlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IGM3MmQwMWQ4MWM3ZDcxNjYx
NTc5ZTNiYTAxODMwZTQyOWQzMGY2ODguLjFlOTExYWU2MGE2MTI2ODlhNDk3ZmYyZDViN2YwZDUw
Yjg3ZTI5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFy
ZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYQogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWlu
Z1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgp
IDogbV9ncmlkWzBdLnNpemUoKTsKICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRP
ZlZhcnlpbmdUcmFja0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgIGlmIChp
c0VtcHR5QXJlYUVub3VnaChyb3dTcGFuLCBjb2x1bW5TcGFuKSkgewotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdyaWRBcmVhPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRBcmVh
PihHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJ
bmRleCArIHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9j
b2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3Jp
ZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXgg
KyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1u
SW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CiAgICAgICAgICAgICAvLyBBZHZh
bmNlIHRoZSBpdGVyYXRvciB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdlIHdvdWxk
IHJldHVybiB0aGUgc2FtZSBncmlkIGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAgICAgICsr
dmFyeWluZ1RyYWNrSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAppbmRleCA1
ZmMzMjgxNTNhNmQ4YmZjNDg4M2JhNTEyMWNjYTBiZjZmMmU5OWQwLi42NjA5MDk4ZjljODcwNDY4
ODExNDE4YWIxNzgyOTQxN2JlZTJkMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQg
R3JpZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQoSXRl
bVBvc2l0aW9uIHByZWZlcmVuCiAKICAgICAvLyBMb29raW5nIGZvciBhIGNvbXBhdGlibGUgYmFz
ZWxpbmUtc2hhcmluZyBncm91cC4KICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2VsaW5l
Q29udGV4dD4oY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CisgICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEJhc2VsaW5lQ29udGV4dD4oY2hp
bGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1
dG8qIGNvbnRleHQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgICAgICBj
b250ZXh0LT51cGRhdGVTaGFyZWRHcm91cChjaGlsZCwgcHJlZmVyZW5jZSwgYXNjZW50LCBkZXNj
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Npemlu
Z0FsZ29yaXRobS5jcHAKaW5kZXggYWRkZWRjNDI4YjFmMmZkYjM1MDNlODEyNjI2Yjk3NjkzYTNl
N2I1Zi4uYjJiMDExYmRmNzQ5MWIzNWFiMWRiYjdhYzZiMjYzOTYxNzIxY2NhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHAKQEAgLTY4MSw3ICs2ODEsNyBAQCBkb3VibGUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpj
b21wdXRlRmxleEZhY3RvclVuaXRTaXplKGNvbnN0IFZlY3RvcjxHcmlkVHJhYwogICAgICAgICAg
ICAgbGVmdE92ZXJTcGFjZSAtPSBiYXNlU2l6ZTsKICAgICAgICAgICAgIGZsZXhGYWN0b3JTdW0g
LT0gZmxleEZhY3RvcjsKICAgICAgICAgICAgIGlmICghdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJs
ZSkKLSAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gc3RkOjptYWtl
X3VuaXF1ZTxUcmFja0luZGV4U2V0PigpOworICAgICAgICAgICAgICAgIHRyYWNrc1RvVHJlYXRB
c0luZmxleGlibGUgPSBtYWtlVW5pcXVlPFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAgICB0
cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlLT5hZGQoaW5kZXgpOwogICAgICAgICAgICAgdmFsaWRG
bGV4RmFjdG9yVW5pdCA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMjYwLDEwICsxMjYwLDEwIEBA
IHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cChHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lCiAgICAgbV9zaXppbmdPcGVyYXRpb24gPSBzaXppbmdP
cGVyYXRpb247CiAgICAgc3dpdGNoIChtX3NpemluZ09wZXJhdGlvbikgewogICAgIGNhc2UgSW50
cmluc2ljU2l6ZUNvbXB1dGF0aW9uOgotICAgICAgICBtX3N0cmF0ZWd5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kg
PSBtYWtlVW5pcXVlPEluZGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBUcmFja1NpemluZzoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKKyAgICAgICAgbV9zdHJhdGVn
eSA9IG1ha2VVbmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAK
aW5kZXggNzNiMzY1NDc2NzE0MGEwMzcwZTRkNTY5NTZlNTRmMjY3NGI1OGIzNi4uYjNjNDAwNzkw
MmRmNjA0ODYyYTVhYzdjMjk5OGNiYWQ3M2YxMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtOTYsNyArOTYsNyBAQCBIaXRUZXN0UmVzdWx0OjpI
aXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pc092ZXJX
aWRnZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2Rl
U2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQg
PSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+
KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNl
ZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5v
ZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIH0KIAogSGl0
VGVzdFJlc3VsdDo6fkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7CkBAIC0xMTMsNyArMTEzLDcg
QEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIG90aGVyKQogICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7
CiAKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0IGhpdCB0ZXN0
LgotICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3Vs
dCA/IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3Vs
dCkgOiBudWxscHRyOworICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJh
c2VkVGVzdFJlc3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVz
dFJlc3VsdCkgOiBudWxscHRyOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjkwLDE0ICs2
OTAsMTQgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYg
b3RoZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXEKIGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5v
ZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQoKSBjb25zdAogewogICAg
IGlmICghbV9saXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVz
dFJlc3VsdCA9IG1ha2VVbmlxdWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2Vk
VGVzdFJlc3VsdDsKIH0KIAogSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJlc3VsdDo6
bXV0YWJsZUxpc3RCYXNlZFRlc3RSZXN1bHQoKQogewogICAgIGlmICghbV9saXN0QmFzZWRUZXN0
UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG1ha2VVbmlxdWU8
Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3VsdDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggMzMyZjI4NTMxZDM4OGNm
ZTJjM2Q1OGE5NGMzZjI2MTdkY2I5MTY2Ni4uMTBhMTk0MzZiNGJhYzY1NjI5MDZiMjQxYTcwZDFk
NTg1MjAwMDJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBA
IC00Miw2ICs0Miw3IEBAIGNsYXNzIFNjcm9sbGJhcjsKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dy
ZXNzIHsgU3RvcCwgQ29udGludWUgfTsKIAogY2xhc3MgSGl0VGVzdFJlc3VsdCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxS
ZWZQdHI8Tm9kZT4+IE5vZGVTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0
ZXJhdG9yLmgKaW5kZXggNDNjNjUzODc2Y2Y5ODRhNjJiNmZjOTI5NDVkM2RkNjkwY2EzZWRiOS4u
MTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhjb25zdCBJbmxpbmVJdGVy
YXRvciYgaXRlcikKIC8vIG9mIEJpZGlSZXNvbHZlciB3aGljaCBrbm93cyBub3RoaW5nIGFib3V0
IFJlbmRlck9iamVjdHMuCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGxhY2Vob2xkZXJSdW5Gb3JJ
c29sYXRlZElubGluZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBSZW5kZXJPYmplY3Qm
IG9iaiwgdW5zaWduZWQgcG9zLCBSZW5kZXJFbGVtZW50JiByb290KQogewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4o
cG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0gbWFrZVVuaXF1ZTxCaWRpUnVu
Pihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKICAg
ICAvLyBGSVhNRTogaXNvbGF0ZWRSdW5zKCkgY291bGQgYmUgYSBoYXNoIG9mIG9iamVjdC0+cnVu
IGFuZCB0aGVuIHdlIGNvdWxkIGNoZWFwbHkKICAgICAvLyBBU1NFUlQgaGVyZSB0aGF0IHdlIGRp
ZG4ndCBjcmVhdGUgbXVsdGlwbGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgaW5saW5lLgogICAgIHJl
c29sdmVyLnNldFdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlvbkZvcklzb2xhdGVkUnVuKCpp
c29sYXRlZFJ1biwgcmVzb2x2ZXIud2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSgpLmN1cnJlbnRU
cmFuc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVy
T3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFw
LmNwcAppbmRleCAyODVhYTVmOWZlOWJhZTdkZmM4NTI4YzI0YzFkNTU2N2Q0MTI5ZmYzLi45NmFm
OTVhNDU1Njk1MGU4MTI2Yjk1MzczNTM0ZDQ3NmRhZTM1NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVjdExpc3QmIHJl
Y3RMaXN0KQogLy8gQ2hlY2tpbmcgZm9yIG92ZXJsYXAgaW52b2x2ZXMgZmluZGluZyB0aGUgbm9k
ZSBmb3IgdGhlIGNsaXBwaW5nIGxheWVyIGVuY2xvc2luZyB0aGUgZ2l2ZW4gbGF5ZXIgKG9yIHRo
ZSByb290KSwKIC8vIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgYm91bmRzIG9mIGVhcmxpZXIg
c2libGluZ3MuCiBjbGFzcyBPdmVybGFwTWFwQ29udGFpbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPdmVybGFwTWFwQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckxheWVyJiByb290TGF5ZXIpCiAgICAgICAgIDogbV9yb290U2NvcGUocm9vdExheWVyKQpAQCAt
Mjk2LDcgKzI5Nyw3IEBAIGJvb2wgTGF5ZXJPdmVybGFwTWFwOjpvdmVybGFwc0xheWVycyhjb25z
dCBSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IExheW91dFJlY3QmCiAKIHZvaWQgTGF5ZXJPdmVy
bGFwTWFwOjpwdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKQogewotICAgIG1fb3ZlcmxhcFN0YWNr
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1fcm9vdExheWVy
KSk7CisgICAgbV9vdmVybGFwU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8T3ZlcmxhcE1hcENvbnRh
aW5lcj4obV9yb290TGF5ZXIpKTsKIH0KIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnBvcENvbXBv
c2l0aW5nQ29udGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IDRkYmEzZjFjNDEwNWFmYjBlOGU0Yzc2YTdjZmNiOWU1ZmZmNzE4NTQuLjAwMTkyNTg4
MmU1MDI4YzhhMjA5OWI0YmJkZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIGluc2Vy
dEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJl
bmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50SGVp
Z2h0RGVzY2VuZGFudHNNYXAtPmVuc3VyZSgmY29udGFpbmVyLCBbXSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRk
KCZkZXNjZW5kYW50KS5pc05ld0VudHJ5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lk
IGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWlu
ZXIsIFJlbmRlckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGNvbnRhaW5lclNldCA9IHBlcmNl
bnRIZWlnaHRDb250YWluZXJNYXAtPmVuc3VyZSgmZGVzY2VuZGFudCwgW10gewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIWNvbnRhaW5lclNldC0+Y29u
dGFpbnMoJmNvbnRhaW5lcikpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFBvc2l0aW9uZWRE
ZXNjZW5kYW50c01hcCB7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvJiBkZXNjZW5kYW50cyA9
IG1fZGVzY2VuZGFudHNNYXAuZW5zdXJlKCZjb250YWluaW5nQmxvY2ssIFtdIHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hT
ZXQ+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICBib29sIGlzTmV3
RW50cnkgPSBtb3ZlRGVzY2VuZGFudFRvRW5kID09IE1vdmVEZXNjZW5kYW50VG9FbmQ6OlllcyA/
IGRlc2NlbmRhbnRzLT5hcHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5p
c05ld0VudHJ5CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGlubGluZSBVcGRhdGVTY3JvbGxJ
bmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbiogY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnQKIHZv
aWQgUmVuZGVyQmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b24oKQogewogICAgIGlmICghdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25T
dGFjaygpKQotICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0
YWNrKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7
CisgICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9
IG1ha2VVbmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKICAgICBpZiAodXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkgfHwg
Y3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCktPnZpZXcgIT0g
JnZpZXcoKSkKICAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25T
dGFjaygpLT5hcHBlbmQoVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24odmll
dygpKSk7CiAgICAgKytjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b24oKS0+bmVzdGVkQ291bnQ7CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIFJlbmRlckJsb2Nr
UmFyZURhdGEmIGVuc3VyZUJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQog
ICAgIAogICAgIGF1dG8mIHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0YSkKLSAgICAgICAgcmFyZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CisgICAgICAgIHJh
cmVEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOwogICAgIHJldHVybiAq
cmFyZURhdGEuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggN2YxZTYzOTcwNjNiZTRmOGRmOWI1N2YxNzVkNmUyNmU3OGVmYjEz
NC4uYjg2NDJkMTcyMDNiZDRiZjI1YmRlMTcxZjk4NzBhZjdkNWE0M2E3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBA
QCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZQogICAgIG1fc2ltcGxlTGluZUxheW91dCA9IG51bGxw
dHI7CiAKICAgICBpZiAoIW1fY29tcGxleExpbmVMYXlvdXQpCi0gICAgICAgIG1fY29tcGxleExp
bmVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7Cisg
ICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0
PigqdGhpcyk7CiAKICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0LT5sYXlvdXRMaW5lQm94ZXMocmVs
YXlvdXRDaGlsZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsK
IH0KQEAgLTIwMTksNyArMjAxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5l
R3JpZEJveCgpCiAgICAgCiAgICAgc2V0TGluZUdyaWRCb3goMCk7CiAKLSAgICBhdXRvIGxpbmVH
cmlkQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PigqdGhpcyk7CisgICAgYXV0
byBsaW5lR3JpZEJveCA9IG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMpOwogICAgIGxp
bmVHcmlkQm94LT5zZXRIYXNUZXh0Q2hpbGRyZW4oKTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhlIGxp
bmUgYXNjZW50L2Rlc2NlbnQgYWN0dWFsbHkgYmUgaG9ub3JlZCBpbiBxdWlya3MgbW9kZS4KICAg
ICBsaW5lR3JpZEJveC0+c2V0Q29uc3RydWN0ZWQoKTsKICAgICBHbHlwaE92ZXJmbG93QW5kRmFs
bGJhY2tGb250c01hcCB0ZXh0Qm94RGF0YU1hcDsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiByb290
QmxvY2ssIGNvbnN0IFBhaW50CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGlu
Z09iamVjdHMoKQogewotICAgIG1fZmxvYXRpbmdPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxG
bG9hdGluZ09iamVjdHM+KCp0aGlzKTsKKyAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IG1ha2VVbmlx
dWU8RmxvYXRpbmdPYmplY3RzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpy
ZW1vdmVGbG9hdGluZ09iamVjdHMoKQpAQCAtMzY3Nyw3ICszNjc3LDcgQEAgdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VS
VCghbV9jb21wbGV4TGluZUxheW91dCk7Ci0gICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICBtX2NvbXBsZXhMaW5l
TGF5b3V0ID0gbWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAgaWYg
KFNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvckxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVM
aW5lTGF5b3V0KSkgewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hU
cmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KTsKQEAgLTM3MzUsNyArMzczNSw3IEBAIFJl
bmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIFJlbmRlckJsb2NrRmxvdzo6
ZW5zdXJlUmFyZUJsb2NrRmxvd0RhCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVS
YXJlQmxvY2tGbG93RGF0YSgpCiB7CiAgICAgQVNTRVJUKCFoYXNSYXJlQmxvY2tGbG93RGF0YSgp
KTsKLSAgICBtX3JhcmVCbG9ja0Zsb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9j
a0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CisgICAgbV9yYXJlQmxvY2tG
bG93RGF0YSA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJl
RGF0YT4oKnRoaXMpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZGIzYTZkYThmMWEzMjE1MzcwMGU3MzQx
N2QxMGY2YTQ4MTMwODM1Zi4uOTY3N2RhZTljZmUyOGIxZGMzOTA1YzNhODJiMDZlYzZlY2RjZGM0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTExOCw3ICsxMTgs
NyBAQCBzdGF0aWMgQ29udHJvbFN0YXRlc1JlbmRlcmVyTWFwJiBjb250cm9sU3RhdGVzUmVuZGVy
ZXJNYXAoKQogc3RhdGljIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihj
b25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogewogICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVu
ZGVyZXJNYXAoKS5lbnN1cmUoJnJlbmRlcmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENv
bnRyb2xTdGF0ZXM+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCkBAIC0y
MTIyLDcgKzIxMjIsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5l
cihSZW5kZXJFbGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91dAogCiBzdGQ6OnVuaXF1ZV9w
dHI8SW5saW5lRWxlbWVudEJveD4gUmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3goKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVu
ZGVyQm94OjpkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBiY2JhN2I0MTY4
NWEzZjQxMjBjMWVlYTU0NjEwMmY4MzZkNTZhYTI2Li45MDFjNDExMGUxYzU2YmE2MGE0ZGQzYmE3
YjkzZmFhZjYwNDFjYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI1MzgsNyArMjUzOCw3IEBAIGF1dG8gUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSgpIC0+IENvbnRpbnVhdGlv
bkNoYWluTm9kCiB7CiAgICAgc2V0SGFzQ29udGludWF0aW9uQ2hhaW5Ob2RlKHRydWUpOwogICAg
IHJldHVybiAqY29udGludWF0aW9uQ2hhaW5Ob2RlTWFwKCkuZW5zdXJlKHRoaXMsIFsmXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRo
aXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0
aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAyMjEwNDQzNGU0NWQ2Yzk4NDc2ZmZkMjlhYjU1
MGJkNjJhYzQwOGZlLi5jMWUwM2YwOTdlZjU5YWQ1YTE2YjE5NGM5YzA1ZDY0OWY3ZmYxNWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0zMTIsNyAr
MzEyLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICBpZiAocGxhY2UucGFyZW50KQog
ICAgICAgICBwbGFjZS5wYXJlbnQtPmluc2VydEFmdGVyKG5ld05vZGUsIHBsYWNlLnByZXZpb3Vz
U2libGluZy5nZXQoKSwgaWRlbnRpZmllcik7CiAKLSAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIHN0
ZDo6bWFrZV91bmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRp
ZmllciwgbmV3Tm9kZS5jb3B5UmVmKCkpOworICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgbWFrZVVu
aXF1ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdO
b2RlLmNvcHlSZWYoKSk7CiAgICAgcmVuZGVyZXIuc2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7
CiAKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcAppbmRleCA1MWE5ZTQ2ODQzNDRk
MjYzN2QwNGE5MWZiNTlhM2NkNmVmOGYwNmVkLi43ZjZjYWJjMDU5MTIxMDgxYzRkNzI4NjAyMTli
ZDRiOWM4NWI5NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhZ21lbnRDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFnbWVudENvbnRhaW5lci5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJCb3hGcmFn
bWVudEluZm8qIFJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudElu
Zm8oY29uc3QgUgogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50
SW5mby5hZGQoYm94LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9n
aWNhbExlZnRJbnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJ
bnNldCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJh
Z21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gsIG1h
a2VVbmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2Fs
UmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVl
OwogICAgIHJldHVybiBib3hJbmZvLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAppbmRleCA0NGY1NjM1YmE1M2FlM2Y3
ZTk0ZDdhYzhlNDk2NzM5MGY1OGMyZTU2Li44NDZkZDNhMDJhYTg2YWFmNzE1YzA5NGU4YzM1MGMx
NjZhODY3YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
Z21lbnRlZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFn
bWVudGVkRmxvdy5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIFJlbmRlckZyYWdtZW50Q29udGFp
bmVyKiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y3VycmVudEZyYWdtZW50KCkgY29uc3QKIENvbnRh
aW5pbmdGcmFnbWVudE1hcCYgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVu
dE1hcCgpCiB7CiAgICAgaWYgKCFtX2xpbmVUb0ZyYWdtZW50TWFwKQotICAgICAgICBtX2xpbmVU
b0ZyYWdtZW50TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+KCk7
CisgICAgICAgIG1fbGluZVRvRnJhZ21lbnRNYXAgPSBtYWtlVW5pcXVlPENvbnRhaW5pbmdGcmFn
bWVudE1hcD4oKTsKIAogICAgIHJldHVybiAqbV9saW5lVG9GcmFnbWVudE1hcC5nZXQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4
IGI5MDQ1ZTY3OTA4NzNhYmY4MWE5MGRmYTViYmIxMTA5M2M2NzdiMDIuLjUyYzc5MGQ0ZTU3ODli
MTc4ZTI2YzhhYmQ4YmE3YjEzY2M1OTE1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVuZGVy
R2VvbWV0cnlNYXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NCiAgICAgCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9t
YXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xh
dGlvbigpKQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5p
cXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKICAgICBlbHNlCiAgICAgICAgIHN0ZXAubV9v
ZmZzZXQgPSBMYXlvdXRTaXplKHQuZSgpLCB0LmYoKSk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2
b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBj
b25zdCBMYXlvdXRTaXplJiBzY3JvbAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9
IG1fbWFwcGluZ1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0ID0gc2Ny
b2xsT2Zmc2V0OwogICAgIGlmICh0KQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjpt
YWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOworICAgICAgICBzdGVwLm1fdHJh
bnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwogICAgIAogICAg
IHN0ZXBJbnNlcnRlZChzdGVwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcAppbmRleCBlMzVhMmMxMzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0Y2NjOWQwZjM0OTdmLi40OWFk
MDM1NTUzNzM0MjI1ZjFkZGQ2MzNiNDJjMTM4MzJjY2VmYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JB
dXRvUmVwZWEKICAgICB1bnNpZ25lZCBsYXN0QXV0b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVw
ZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBlYXRUcmFja3MoZGlyZWN0aW9uKTsKIAogICAgIGlmICgh
Z3JpZC5oYXNHcmlkSXRlbXMoKSkgewotICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgIGVtcHR5VHJhY2tJ
bmRleGVzID0gbWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCB0cmFja0luZGV4ID0gZmlyc3RBdXRvUmVwZWF0VHJhY2s7IHRyYWNrSW5kZXgg
PCBsYXN0QXV0b1JlcGVhdFRyYWNrOyArK3RyYWNrSW5kZXgpCiAgICAgICAgICAgICBlbXB0eVRy
YWNrSW5kZXhlcy0+YWRkKHRyYWNrSW5kZXgpOwogICAgIH0gZWxzZSB7CkBAIC01NTIsNyArNTUy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpj
b21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBp
dGVyYXRvcihncmlkLCBkaXJlY3Rpb24sIHRyYWNrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFp
dGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgewogICAgICAgICAgICAgICAgIGlmICghZW1wdHlUcmFj
a0luZGV4ZXMpCi0gICAgICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwog
ICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTczMiw3ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0
aW9uc091dAogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51
bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFu
U2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShn
cmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9z
aXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NE
aXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0
aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlv
bnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3Jp
ZEFyZWE+KHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Q
b3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwog
fQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQo
R3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODkxM2U3NmM5
ZDYxYzlkMjU0MTk5MGE5MDFiN2IwMjk0ZTQ4YWFkYy4uZjUxZTJmZWIzN2UxZmNmMGZkMGU3OTFh
ZTY0ZjAzZWU4OGEyYTdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVu
ZGVySW1hZ2U6OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5
bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxS
YXRpbykKICAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRT
aXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShz
dHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0
eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9p
bWFnZURldmljZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0
ZUFsdFRleHQoKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2Uo
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bAog
CiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQo
ZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3Vy
Y2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxl
SW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJj
ZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5k
ZXJJbWFnZVJlc291cmNlPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCmluZGV4IDlkOGE2NTkzNGJhM2ZkMjU0NzRjMzljOTFmZWVjNDNhYTBjOWY5
ZjUuLjE1MzI1Y2RhMTY5MDY3YTU2OTFiODg1YThkZmRjN2FhOTAzNjQwNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2
b2lkIFJlbmRlcklubGluZTo6ZGVsZXRlTGluZXMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5l
Rmxvd0JveD4gUmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8SW5saW5lRmxvd0JveD4oKnRoaXMpOwogfQogCiBJbmxpbmVGbG93Qm94KiBSZW5k
ZXJJbmxpbmU6OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZjlmMGQwZDRjZWU2NmMxZjQzZGU1MzJiNjEw
MDUzMmJmYjYxNTA4Yy4uMTg1NDY4NzA1MTZlNGQwZmQ1ZTJiMDI4ZGViM2JjNDBjZTZjOGJmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03MDAsNyArNzAw
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgICAgICAv
LyBJZ25vcmUgbm9uLW92ZXJmbG93IGxheWVycyBhbmQgcmVmbGVjdGlvbnMuCiAgICAgICAgIGlm
IChjaGlsZC0+aXNOb3JtYWxGbG93T25seSgpICYmICFpc1JlZmxlY3Rpb25MYXllcigqY2hpbGQp
KSB7CiAgICAgICAgICAgICBpZiAoIW1fbm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICAgICAgICAg
bV9ub3JtYWxGbG93TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+
KCk7CisgICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9y
PFJlbmRlckxheWVyKj4+KCk7CiAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0LT5hcHBlbmQo
Y2hpbGQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yCiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93
T25seSgpKSB7CiAgICAgICAgIGF1dG8mIGxheWVyTGlzdCA9ICh6SW5kZXgoKSA+PSAwKSA/IHBv
c2l0aXZlWk9yZGVyTGlzdCA6IG5lZ2F0aXZlWk9yZGVyTGlzdDsKICAgICAgICAgaWYgKCFsYXll
ckxpc3QpCi0gICAgICAgICAgICBsYXllckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxS
ZW5kZXJMYXllcio+PigpOworICAgICAgICAgICAgbGF5ZXJMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0
b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAgbGF5ZXJMaXN0LT5hcHBlbmQodGhpcyk7CiAg
ICAgfQogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFu
c2Zvcm0oKQogICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3RyYW5zZm9ybTsKICAgICBpZiAo
aGFzVHJhbnNmb3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNmb3Jt
KQotICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0
aW9uTWF0cml4PigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3RyYW5zZm9y
bSA9IG51bGxwdHI7CiAgICAgICAgIApAQCAtNTUyNyw3ICs1NTI3LDcgQEAgUmVmPENsaXBSZWN0
cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBj
bGlwUmVjdHNDb24KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2NsaXBSZWN0c0NhY2hlKQotICAg
ICAgICBtX2NsaXBSZWN0c0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNoZT4o
KTsKKyAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2FjaGU+
KCk7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9v
dFtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyOwogICAgIG1fY2xp
cFJlY3RzQ2FjaGUtPm1fc2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJl
Y3RzQ29udGV4dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeTsKQEAgLTYxMDUsNyArNjEw
NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKENsaXBSZWN0c1R5cGUgdHlw
ZVRvQ2xlYXIpCiBSZW5kZXJMYXllckJhY2tpbmcqIFJlbmRlckxheWVyOjplbnN1cmVCYWNraW5n
KCkKIHsKICAgICBpZiAoIW1fYmFja2luZykgewotICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOworICAgICAgICBtX2JhY2tpbmcg
PSBtYWtlVW5pcXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOwogICAgICAgICBjb21wb3Np
dG9yKCkubGF5ZXJCZWNhbWVDb21wb3NpdGVkKCp0aGlzKTsKIAogICAgICAgICB1cGRhdGVGaWx0
ZXJQYWludGluZ1N0cmF0ZWd5KCk7CkBAIC02NTIzLDcgKzY1MjMsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZQogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNIVE1MTWFycXVlZSgpICYmIHJlbmRl
cmVyKCkuc3R5bGUoKS5tYXJxdWVlQmVoYXZpb3IoKSAhPSBNYXJxdWVlQmVoYXZpb3I6Ok5vbmUg
JiYgcmVuZGVyZXIoKS5pc0JveCgpKSB7CiAgICAgICAgIGlmICghbV9tYXJxdWVlKQotICAgICAg
ICAgICAgbV9tYXJxdWVlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsK
KyAgICAgICAgICAgIG1fbWFycXVlZSA9IG1ha2VVbmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7
CiAgICAgICAgIG1fbWFycXVlZS0+dXBkYXRlTWFycXVlZVN0eWxlKCk7CiAgICAgfSBlbHNlIGlm
IChtX21hcnF1ZWUpCiAgICAgICAgIG1fbWFycXVlZSA9IG51bGxwdHI7CkBAIC02NzM1LDcgKzY3
MzUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjplbnN1cmVMYXllckZpbHRlcnMoKQogICAgIGlmICht
X2ZpbHRlcnMpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX2ZpbHRlcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOworICAgIG1fZmlsdGVycyA9IG1h
a2VVbmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5
ZXI6OmNsZWFyTGF5ZXJGaWx0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMjJlZDZkZDdjMDI1MmIxOTUzZGUzYmUxNTM5NzFi
MTI5YWUxYzc0Yi4uMTIxZDEyZjI2OWY5MGQxM2M2Y2NkZDA5N2I5MjJlM2FkYWNlMjZmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTE2MjcsNyArMTYyNyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3Rv
ckNsaXBwaW5nU3RhY2soVmVjdG9yPENvbXBvc2l0ZWRDbGlwRGF0YT4mCiAgICAgfQogICAgIAog
ICAgIGlmICghbV9hbmNlc3RvckNsaXBwaW5nU3RhY2spIHsKLSAgICAgICAgbV9hbmNlc3RvckNs
aXBwaW5nU3RhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNr
PihXVEZNb3ZlKGNsaXBwaW5nRGF0YSkpOworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFj
ayA9IG1ha2VVbmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBp
bmdEYXRhKSk7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8
ICJsYXllciAiIDw8ICZtX293bmluZ0xheWVyIDw8ICIgYW5jZXN0b3JDbGlwcGluZ1N0YWNrICIg
PDwgKm1fYW5jZXN0b3JDbGlwcGluZ1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMzE3OCwxNyArMzE3OCwxNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRB
bmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbQogICAgICAg
ICAKICAgICAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkg
PT0gMTsKICAgICAgICAgaWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1l
KSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9y
bSkpCi0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCks
IHRmKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRm
KSk7CiAKICAgICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkg
fHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkK
LSAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CisgICAg
ICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFs
dWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgo
aGFzRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNv
bnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVj
dG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtl
eWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0ZikpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmlu
c2VydChtYWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUt
PmZpbHRlcigpLCB0ZikpOwogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICAgICAg
aWYgKChoYXNCYWNrZHJvcEZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJl
bnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0
ZXIpKQotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91
bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BG
aWx0ZXIoKSwgdGYpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydCht
YWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tk
cm9wRmlsdGVyKCksIHRmKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTMyNDMsOCArMzI0Myw4IEBA
IGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZz
ZXQsIENTU1Byb3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogb3BhY2l0
eUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5
KTsKICAgICAgICAgaWYgKG9wYWNpdHlBbmltICYmICFvcGFjaXR5QW5pbS0+aXNFbXB0eU9yWmVy
b0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0
b3IoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5p
bnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGlu
Z09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVj
dG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBv
c2l0aW5nT3BhY2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5
VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0
aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlW
ZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRp
bmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAgIC8vIFRoZSBib3hT
aXplIHBhcmFtIGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNh
biBvbmx5IHJ1biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJl
LgogICAgICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlW
ZWN0b3IsIEZsb2F0U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9u
TmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkg
ewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkg
aXMgdmlzaWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9w
YWNpdHkuCkBAIC0zMjU4LDggKzMyNTgsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAg
ICAgICBjb25zdCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9u
Rm9yUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAgICAgICBpZiAodHJhbnNmb3Jt
QW5pbSAmJiAhdHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAg
ICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5
VHJhbnNmb3JtKTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtl
X3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0o
KSkpOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVl
PFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOworICAg
ICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFu
c2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEs
IHRvU3R5bGUtPnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVy
LT5hZGRBbmltYXRpb24odHJhbnNmb3JtVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJCb3go
KS0+Ym9yZGVyQm94UmVjdCgpKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6
OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pLCB0
aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3Jy
ZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNl
dCB0aGUgZmluYWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgq
dG9TdHlsZSk7CkBAIC0zMjcyLDggKzMyNzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6
c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3Blcgog
ICAgICAgICBjb25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9u
Rm9yUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAm
JiAhZmlsdGVyQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtl
eWZyYW1lVmFsdWVMaXN0IGZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5RmlsdGVyKTsKLSAg
ICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmlt
YXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOwotICAgICAgICAgICAgZmlsdGVy
VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0
b1N0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtl
VW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7Cisg
ICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9u
VmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGlj
c0xheWVyLT5hZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgZmlsdGVyQW5p
bSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9w
ZXJ0eUZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJl
IHRoYXQgdGhlIGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVu
ZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlRmls
dGVycygqdG9TdHlsZSk7CkBAIC0zMjg3LDggKzMyODcsOCBAQCBib29sIFJlbmRlckxheWVyQmFj
a2luZzo6c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcgogICAgICAgICBjb25zdCBBbmltYXRpb24qIGJhY2tkcm9wRmlsdGVyQW5pbSA9IHRvU3R5
bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVy
KTsKICAgICAgICAgaWYgKGJhY2tkcm9wRmlsdGVyQW5pbSAmJiAhYmFja2Ryb3BGaWx0ZXJBbmlt
LT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxp
c3QgYmFja2Ryb3BGaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmls
dGVyKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2Vf
dW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVy
KCkpKTsKLSAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2Vf
dW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigp
KSk7CisgICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxG
aWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7Cisg
ICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwogICAgICAgICAg
ICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGJhY2tkcm9wRmlsdGVyVmVjdG9y
LCBGbG9hdFNpemUoKSwgYmFja2Ryb3BGaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRp
b25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIp
LCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBj
b3JyZWN0IGJhY2tkcm9wIGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRz
LCBhbHNvIHNldCB0aGUgZmluYWwgYmFja2Ryb3AgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVw
ZGF0ZUJhY2tkcm9wRmlsdGVycygqdG9TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGFiZTRkNGQ2NzVhMjIxODZl
MmVhODlkNDEyZmZhODE1MzhjNWM5MjkuLjMyMTIyOWQ2ZjIzY2ZhZTY2YTA1YTUyODA4ZGQwYjBj
YmE4YzE0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpSZW5kZXJMYXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYgcmVuZGVyVmlldykKIHsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGxh
dGZvcm1XaWRnZXQoKSkKLSAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9y
PihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKKyAg
ICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxMZWdh
Y3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50
KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKICNlbmRpZgogfQogCkBAIC02MTIsNyArNjEy
LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxh
eVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllcioKIHsKICAgICBpZiAoIW1fbGF5ZXJVcGRhdGVy
KSB7CiAgICAgICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9IHBhZ2UoKS5jaHJvbWUo
KS5kaXNwbGF5SUQoKTsKLSAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKKyAgICAgICAgbV9sYXll
clVwZGF0ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxh
eUlEKTsKICAgICB9CiAgICAgCiAgICAgbV9sYXllclVwZGF0ZXItPnNjaGVkdWxlVXBkYXRlKCk7
CkBAIC00NzkyLDcgKzQ3OTIsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29v
cmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogCiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBjb25zdHJhaW50czsKICAgICAg
ICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpIHsKLSAgICAg
ICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWlu
dHMoKmxheWVyKSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8U3RpY2t5
UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3
cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOwogICAgICAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIq
IGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlm
IChjb21wb3NpdG9yLmlzQXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5ZXIoKmxheWVyLCAmZW5jbG9z
aW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIpICYmIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVy
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVy
LT5pc0NvbXBvc2l0ZWQoKSk7CkBAIC00ODAwLDcgKzQ4MDAsNyBAQCB2b2lkIExlZ2FjeVdlYktp
dFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5l
ZExheWVycwogICAgICAgICAgICAgICAgIHN0aWNreUNvbnRhaW5lck1hcC5hZGQobGF5ZXItPmJh
Y2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGVuY2xvc2luZ1RvdWNo
U2Nyb2xsYWJsZUxheWVyLT5iYWNraW5nKCktPnNjcm9sbENvbnRhaW5lckxheWVyKCktPnBsYXRm
b3JtTGF5ZXIoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXItPnJl
bmRlcmVyKCkuaXNGaXhlZFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0g
c3RkOjptYWtlX3VuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9z
aXRvci5jb21wdXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAgICAg
ICAgY29uc3RyYWludHMgPSBtYWtlVW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggYmY2NDVjZDQxYjg5
MTIxMmQ3ZjVhMzAzODZlZjljYTU0YmZhNDYwMi4uOGRkMDM5YmFmZGE2MzUzOGNlMzIxM2RjMzEz
NTYwZmFhOGE0YmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHN0YXRpYyBjb25zdGV4cHIgT3B0
aW9uU2V0PFNjcm9sbENvb3JkaW5hdGlvblJvbGU+IGFsbFNjcm9sbENvb3JkaW5hdGlvblJvbGVz
KCkKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBMZWdhY3lXZWJLaXRTY3JvbGxp
bmdMYXllckNvb3JkaW5hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yKENocm9tZUNsaWVu
dCYgY2hyb21lQ2xpZW50LCBib29sIGNvb3JkaW5hdGVWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJz
KQogICAgICAgICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAppbmRleCA0Yjg2
ZmUyYWQxNzVkY2U4NmFkMzg1MmJkZmMxNTJmZDEzMDhkNDVlLi4xMjhjOTZkYWUwYjMxMDA2Y2Ey
NWQ1YTU2YzcyMGJjODkwZDM0ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKCkKIHZvaWQgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6Y3JlYXRlTGF5ZXIoKQogewogICAgIEFTU0VSVCghbV9sYXllcik7Ci0gICAgbV9s
YXllciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKKyAgICBtX2xheWVy
ID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllcj4oKnRoaXMpOwogICAgIHNldEhhc0xheWVyKHRydWUp
OwogICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYmM1NTI3YjhjNDZhNGRlMDY2
ZjY5ZTVhMzEwYzg4NjgxOTZmYzIzYS4uMWFhZTA5ZDAwYjI2ZWEzY2FkZWE4NjcyZTI3NzkyOWJm
ZDE3YTYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVC
cmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHAKQEAgLTg5LDcgKzg5LDcgQEAgaW50IFJlbmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwKIAogc3RkOjp1bmlx
dWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJlbmRlckxpbmVCcmVhazo6Y3JlYXRlSW5saW5lQm94
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhp
cyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOwogfQog
CiB2b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0SW5saW5lQm94V3JhcHBlcihJbmxpbmVFbGVtZW50
Qm94KiBpbmxpbmVCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDliYjlhNTM5ZDY2NDJkZjkwMDI2YTc4MmFmOGNmODRk
YzQ5ZGEyYTkuLjQxMDNkYWQ0ODQ0ZGQyNGEzMDJhNzMyYWYyMjE5YWM5MDAwMWNiYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJNdWx0
aUNvbHVtbkZsb3cpOwogCiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1u
RmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5k
ZXJGcmFnbWVudGVkRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3NwYW5u
ZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxTcGFubmVyTWFwPigpKQorICAgICwgbV9zcGFubmVyTWFw
KG1ha2VVbmlxdWU8U3Bhbm5lck1hcD4oKSkKICAgICAsIG1fbGFzdFNldFdvcmtlZE9uKG51bGxw
dHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCiAgICAgLCBtX2NvbHVtbldpZHRoKDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDRkYTNiZDczNzcxYmEx
NzE5MGVhYzM1ZGE2MzhlMjQzZjE5MDI5MDcuLjBiZjUxOTNkZTQ4NDQ1YmNjNjc3ZTkxNGU4YWQz
ZGY4MWNlYjgyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CkBAIC0xODkzLDcgKzE4OTMsNyBAQCBjb25zdCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJh
cmVEYXRhJiBSZW5kZXJPYmplY3Q6OnJhcmVEYXRhKCkgY29uc3QKIFJlbmRlck9iamVjdDo6UmVu
ZGVyT2JqZWN0UmFyZURhdGEmIFJlbmRlck9iamVjdDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAg
IHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUo
dGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4o
KTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUo
dGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4oKTsgfSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlUmFyZURhdGEo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVk
UGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5jcHAKaW5kZXggNmQ1NmI1ZWNhMmM2YjI3NjhhZmJiMmQ0Y2ZmMGFjMDg4MmU5ZmRjNi4u
MGRmZTI4Mjc2NGY0MDhiNjIwYmVmNWQ5ZjU4ZTg4YTZjYzc2YzA4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC01
Myw3ICs1Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbik7CiAKIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
KQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCi0g
ICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291
cmNlPigpKQorICAgICwgbV9zbmFwc2hvdFJlc291cmNlKG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZT4oKSkKIHsKICAgICBtX3NuYXBzaG90UmVzb3VyY2UtPmluaXRpYWxpemUoKnRoaXMp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMTg2Y2E4
NzBlZDEwOTEzZDU4Yjg1NDllYjk2ZGUzMzZlMzQ1NTM1OS4uZTkxYTEzMzcxOTkxMmQxOGZhNTVl
MzZkODM1NTg4NTdjMmQxOGIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBSZW5kZXJUYWJsZTo6c3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICAg
ICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1MyIHNwZWMsIHlvdSBvbmx5IHVzZSBmaXhlZCB0YWJs
ZSBsYXlvdXQgaWYgYW4KICAgICAgICAgLy8gZXhwbGljaXQgd2lkdGggaXMgc3BlY2lmaWVkIG9u
IHRoZSB0YWJsZS4gIEF1dG8gd2lkdGggaW1wbGllcyBhdXRvIHRhYmxlIGxheW91dC4KICAgICAg
ICAgaWYgKHN0eWxlKCkudGFibGVMYXlvdXQoKSA9PSBUYWJsZUxheW91dFR5cGU6OkZpeGVkICYm
ICFzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpKQotICAgICAgICAgICAgbV90YWJsZUxh
eW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CisgICAgICAg
ICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxGaXhlZFRhYmxlTGF5b3V0Pih0aGlzKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlx
dWU8QXV0b1RhYmxlTGF5b3V0Pih0aGlzKTsKKyAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBt
YWtlVW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CiAgICAgfQogCiAgICAgLy8gSWYgYm9y
ZGVyIHdhcyBjaGFuZ2VkLCBpbnZhbGlkYXRlIGNvbGxhcHNlZCBib3JkZXJzIGNhY2hlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGFhZDBjMTQ3ZjExZDM5YjNh
ZDE2Y2FkZGMxNTNjMzIyZTkyZDdhMGEuLmI2MzA1ZGU1ZjYzMTZjNGRiMjYwYTc5OWNkMTE2YmJk
MWFlNTQ0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEz
MTEsNyArMTMxMSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxs
TGF5b3V0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4dDo6Y3Jl
YXRlVGV4dEJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEJv
eD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlzKTsK
IH0KIAogdm9pZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lVGV4dEJveCYgdGV4
dEJveCkKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlS
ZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwCiAgICAg
ICAgIHJldHVybjsKICAgICBhdXRvJiBzZWN1cmVUZXh0VGltZXIgPSBzZWN1cmVUZXh0VGltZXJz
KCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNlY3VyZVRl
eHRUaW1lcikKLSAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxTZWN1
cmVUZXh0VGltZXI+KCp0aGlzKTsKKyAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gbWFrZVVuaXF1
ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKICAgICBzZWN1cmVUZXh0VGltZXItPnJlc3RhcnQo
b2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYzE0NDUxYTE4ZWVhN2E1NzFhMjc3Nzg5OGE3OWNjOGI0
M2ZmMzE0Mi4uNWZlYzY3OGM2YmI1ZGYwZTQ5MjJiMDEyYzNmMjY4ZGJhYjRhN2I2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHZv
aWQgUmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYgcmVw
YWludFJlY3QpIGNvbnN0CiAgICAgLy8gRklYTUU6IE1heWJlIHRoZXJlIHNob3VsZCBiZSBhIHJl
Z2lvbiB0eXBlIHRoYXQgZG9lcyB0aGlzIGF1dG9tYXRpY2FsbHkuCiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUgPSAxNiAqIDE2OwogICAgIGlm
IChtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Z3JpZFNpemUoKSA+IG1heGltdW1SZXBhaW50
UmVnaW9uR3JpZFNpemUpCi0gICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMo
KSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gbWFrZVVuaXF1ZTxSZWdp
b24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMoKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyVmlldzo6Zmx1c2hBY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24oKSBjb25zdApAQCAtNzI0LDcg
KzcyNCw3IEBAIGJvb2wgUmVuZGVyVmlldzo6dXNlc0NvbXBvc2l0aW5nKCkgY29uc3QKIFJlbmRl
ckxheWVyQ29tcG9zaXRvciYgUmVuZGVyVmlldzo6Y29tcG9zaXRvcigpCiB7CiAgICAgaWYgKCFt
X2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29tcG9zaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CisgICAgICAgIG1fY29tcG9zaXRvciA9IG1ha2VV
bmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fY29t
cG9zaXRvcjsKIH0KQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bAog
SW1hZ2VRdWFsaXR5Q29udHJvbGxlciYgUmVuZGVyVmlldzo6aW1hZ2VRdWFsaXR5Q29udHJvbGxl
cigpCiB7CiAgICAgaWYgKCFtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIpCi0gICAgICAgIG1faW1h
Z2VRdWFsaXR5Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VRdWFsaXR5Q29udHJv
bGxlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBtYWtlVW5p
cXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1hZ2VR
dWFsaXR5Q29udHJvbGxlcjsKIH0KIApAQCAtODM0LDcgKzgzNCw3IEBAIFJlbmRlclZpZXc6OlJl
cGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKFJlbmRlclZp
ZXcqIHZpZXcpCiAKICAgICBtX3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRSZWdpb24gPSAhIXJvb3RS
ZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbjsKICAgICBpZiAoIW1fd2FzQWNj
dW11bGF0aW5nUmVwYWludFJlZ2lvbikKLSAgICAgICAgcm9vdFJlbmRlclZpZXctPm1fYWNjdW11
bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KCk7CisgICAgICAg
IHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8
UmVnaW9uPigpOwogICAgIG1fcm9vdFZpZXcgPSBtYWtlV2Vha1B0cigqcm9vdFJlbmRlclZpZXcp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXgg
ZmRjZDU5YzUyYzVmMzI4ZjUyMDlmMDBjMWY4ZDgxNmFkYzVmNzY2OC4uNDQ1NTg0MWFmMzJmZjE1
MjUyY2ZhMjhlZDhhNjljM2U0OWYxZjMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIGZsb2F0IFJvb3RJbmxpbmVCb3g6
OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsICBib29sIGx0ciwg
ZmxvCiAgICAgICAgIGdFbGxpcHNpc0JveE1hcCA9IG5ldyBFbGxpcHNpc0JveE1hcCgpOwogCiAg
ICAgQVNTRVJUKCFoYXNFbGxpcHNpc0JveCgpKTsKLSAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdF
bGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RWxsaXBzaXNCb3g+KGJs
b2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3gg
PyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAh
cHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKKyAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRo
aXMsIG1ha2VVbmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhp
cywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgp
IDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFs
KCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICBzZXRIYXNFbGxpcHNp
c0JveCh0cnVlKTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBhbiBSVEwgdmVyc2lvbiBvZiB0
aGlzPwogICAgIGlmIChsdHIgJiYgKHgoKSArIGxvZ2ljYWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0
aCkgPD0gYmxvY2tSaWdodEVkZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5oCmluZGV4IDdkZjI4Mjg4YTRkNTVjMmM3ZDI2YWQ0YmMwMTc2ZDBiNzYxNzgzNjQuLjI0
N2U1NWMwNjllOWZlODgxY2FmNGJmYmMyYjRhZWYxOWUzNjE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFJvb3RJ
bmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxvd0JveCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJv
b3RJbmxpbmVCb3g+CiAgICAgICAgIGlmIChtX2Zsb2F0cykKICAgICAgICAgICAgIG1fZmxvYXRz
LT5hcHBlbmQobWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9mbG9hdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENsZWFuTGluZUZsb2F0TGlzdD4oMSwg
bWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKKyAgICAgICAgICAgIG1fZmxvYXRzID0gbWFrZVVu
aXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAg
ICAgfQogCiAgICAgdm9pZCByZW1vdmVGbG9hdChSZW5kZXJCb3gmIGZsb2F0aW5nQm94KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAppbmRleCBl
YzVlNzM1NmE2NGQxMjQ5ZGRhMTE0N2U4YmJhMzFmNDc5MGI0YmYyLi5iOWJhZDBhMDlmMjliZjdh
ZGM5ZDMzM2Y0ZTgxMWMzZWExYjkzZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApAQCAtMTMxLDEzICsxMzEsMTMgQEAgc3RhdGljIFNl
bGVjdGlvbkRhdGEgY29sbGVjdChjb25zdCBTZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRleHQmIHNl
bGVjdGlvbiwgYm9vbAogICAgIHdoaWxlIChzdGFydCAmJiBzdGFydCAhPSBzdG9wKSB7CiAgICAg
ICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKnN0YXJ0LCBzZWxlY3Rpb24pKSB7
CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5l
IGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAg
ICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwgc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKKyAgICAgICAgICAg
IG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJT
ZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKICAgICAgICAgICAgIGlmIChyZXBhaW50RGlm
ZmVyZW5jZSkgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byogYmxvY2sgPSBjb250YWluaW5n
QmxvY2tCZWxvd1ZpZXcoKnN0YXJ0KTsgYmxvY2s7IGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVs
b3dWaWV3KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgYmxvY2tJbmZvID0g
b2xkU2VsZWN0aW9uRGF0YS5ibG9ja3MuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpibG9jayk7CisgICAgICAgICAgICAg
ICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigq
YmxvY2spOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MjEzLDEzICsyMTMsMTMgQEAgSW50UmVjdCBTZWxlY3Rpb25SYW5nZURhdGE6OmNvbGxlY3RCb3Vu
ZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQgY2xpcFRvVmlzaWJsZUNvbnQKICAgICAgICAgaWYgKChz
dGFydC0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0
LnN0YXJ0KCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQogICAgICAgICAg
ICAgJiYgc3RhcnQtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25O
b25lKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGlu
ZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2Vs
bC4KLSAgICAgICAgICAgIHJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9W
aXNpYmxlQ29udGVudDo6WWVzKSk7CisgICAgICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBt
YWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRl
bnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOwogICAgICAgICAgICAgYXV0byogYmxv
Y2sgPSBzdGFydC0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGlsZSAoYmxvY2sg
JiYgIWlzPFJlbmRlclZpZXc+KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IHJlbmRlcmVycy5hZGQoYmxv
Y2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJ
bmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0lu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpibG9jaywgY2xpcFRv
VmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olllcyk7CisgICAgICAgICAg
ICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ss
IGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOwogICAg
ICAgICAgICAgICAgIGJsb2NrID0gYmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURh
dGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tS
ZXAKICAgICBzZWxlY3Rpb25JdGVyYXRvciA9IFNlbGVjdGlvbkl0ZXJhdG9yKHNlbGVjdGlvblN0
YXJ0KTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvblN0YXJ0OyBj
dXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmVyICE9IHNlbGVjdGlvbkVuZDsgY3VycmVu
dFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAgIGlmIChpc1Zh
bGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKmN1cnJlbnRSZW5kZXJlciwgbV9zZWxlY3Rpb25Db250
ZXh0KSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+
IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpj
dXJyZW50UmVuZGVyZXIsIHRydWUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlv
bkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRS
T0xTKQogICAgICAgICAgICAgZm9yIChhdXRvJiByZWN0IDogc2VsZWN0aW9uSW5mby0+Y29sbGVj
dGVkU2VsZWN0aW9uUmVjdHMoKSkKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRo
ZXJlci5hZGRSZWN0KHNlbGVjdGlvbkluZm8tPnJlcGFpbnRDb250YWluZXIoKSwgcmVjdCk7CkBA
IC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENv
bnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tSZXAKICAgICAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0g
bmV3U2VsZWN0ZWRCbG9ja3MuYWRkKGNvbnRhaW5pbmdCbG9jaywgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgICAg
ICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNv
bnRhaW5pbmdCbG9jayk7CiAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrID0gY29udGFp
bmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9M
UykKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRHYXBSZWN0cyhi
bG9ja0luZm8tPnJlcGFpbnRDb250YWluZXIoKSwgYmxvY2tJbmZvLT5yZWN0cygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCA4Yzc2NmU2
ZGUyYzc0YWQwMzc5NzMzMzFmYzdmNWE0NzQ5MDE1YjhlLi5jMzYyZjRlNTdiMDBmOWNlMzlhNzNl
Y2U4MTFjMmM4MzJkNjUwYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwCkBAIC05OTcsNyArOTk3LDcgQEAgTGF5b3V0OjpMYXlvdXQoY29uc3Qg
UnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3VudCwgY29uc3QgUmVuZGVyQmxv
Y2sKIGNvbnN0IFJ1blJlc29sdmVyJiBMYXlvdXQ6OnJ1blJlc29sdmVyKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fcnVuUmVzb2x2ZXIpCi0gICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7CisgICAgICAg
IG1fcnVuUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRl
cmVyLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3J1blJlc29sdmVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAK
aW5kZXggMWJmOThlNGVlYjQzYmEyMmNkYTRlNmY1ZDNiYzJhNWY5ZmM0YjRiNy4uMDYyNWIxNmJk
NTQzMTk3M2VkMzFkZTk5OGFlZDg4OWIwMTJiYTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMTAyLDcg
KzEwMiw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29u
c3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2hhZG93RGF0YT4gZGVidWdTaGFkb3cgPSBudWxscHRyOwogICAgIGlmIChmbG93LnNldHRpbmdz
KCkuc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkgewotICAgICAgICBkZWJ1
Z1NoYWRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoMCwgMCksIDEw
LCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3IoMCwgMjU1LCAwLCAyMDApKTsK
KyAgICAgICAgZGVidWdTaGFkb3cgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAs
IDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwg
MjAwKSk7CiAgICAgICAgIHRleHRQYWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRvdy5nZXQoKSk7
CiAgICAgfQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBnZW5lcmF0ZUxpbmVCb3hUcmVlKFJl
bmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiAgICAgICAgIEJpZGlS
dW5MaXN0PEJpZGlSdW4+IGJpZGlSdW5zOwogICAgICAgICBmb3IgKGF1dG8gaXQgPSByYW5nZS5i
ZWdpbigpOyBpdCAhPSByYW5nZS5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgYXV0byBydW4g
PSAqaXQ7Ci0gICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxC
aWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5k
ZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9f
UklHSFQpKTsKKyAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlS
dW4+KHJ1bi5sb2NhbFN0YXJ0KCksIHJ1bi5sb2NhbEVuZCgpLCBjb25zdF9jYXN0PFJlbmRlck9i
amVjdCY+KHJ1bi5yZW5kZXJlcigpKSwgYmlkaUNvbnRleHQucHRyKCksIFVfTEVGVF9UT19SSUdI
VCkpOwogICAgICAgICB9CiAKICAgICAgICAgTGluZUluZm8gbGluZUluZm87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAppbmRleCAzYmExMzBkNDU1OWQ3Mjky
ZDg5MWY1NTNjZjE0ODBmODY2YmIyYmFkLi40YjQzZTZhY2JlMGVlZGFmNGVhZjRkMmU1ZDVhNDQ2
MzkwNjA1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9T
aXppbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5j
cHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFRleHRBdXRvU2l6aW5nOjphZGRUZXh0Tm9kZShU
ZXh0JiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXplKQogICAgIExPRyhUZXh0QXV0b3NpemluZywg
IiBhZGRBdXRvU2l6ZWROb2RlICVwIGNhbmRpZGF0ZVNpemU9JWYiLCAmbm9kZSwgY2FuZGlkYXRl
U2l6ZSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RleHROb2Rlcy5hZGQ8VGV4dEF1dG9TaXpp
bmdIYXNoVHJhbnNsYXRvcj4obm9kZS5yZW5kZXJlcigpLT5zdHlsZSgpLCBudWxscHRyKTsKICAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7CisgICAgICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nVmFs
dWU+KCk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkVGV4dE5vZGUobm9kZSwg
Y2FuZGlkYXRlU2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVCcmVha2VyLmNwcAppbmRleCAyYjFjMWZhMDNjYTFjNTc1NjkwMjc3YTVlODEyODcxMDEwZDQ0
NjdlLi5kMTE2NjE1YTcyNmM1YTBhOTQzZDliOWY2ZTA5NDBiOTVlNjkwOTE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCkBAIC02Miw3ICs2Miw3
IEBAIHZvaWQgTGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZShJbmxpbmVCaWRpUmVz
b2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYKICAgICAgICAgaWYgKG9iamVjdC5pc091dE9mRmxv
d1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25zKG1fYmxvY2ss
IGRvd25jYXN0PFJlbmRlckJveD4ob2JqZWN0KSwgd2lkdGguc2hvdWxkSW5kZW50VGV4dCgpKTsK
ICAgICAgICAgICAgIGlmIChvYmplY3Quc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5
cGUoKSkgewotICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMoKS5hcHBlbmRSdW4oc3RkOjpt
YWtlX3VuaXF1ZTxCaWRpUnVuPigwLCAxLCBvYmplY3QsIHJlc29sdmVyLmNvbnRleHQoKSwgcmVz
b2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVu
KG1ha2VVbmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJl
c29sdmVyLmRpcigpKSk7CiAgICAgICAgICAgICAgICAgbGluZUluZm8uaW5jcmVtZW50UnVuc0Zy
b21MZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYg
KG9iamVjdC5pc0Zsb2F0aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuY3BwCmluZGV4IDRiMTU5N2U5ZjIxYzljZDRiMmYwZDg4MzQ3NDQ3NzVm
MWQ4YmRlMDEuLmQ1MjA5MmI2OGVkOGUyYzhmZGE1MTVjOTBjZDUyMjM1NmQ2NTVjMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC03
Niw3ICs3Niw3IEBAIEludFNoYXBlSW50ZXJ2YWwgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6Omlu
dGVydmFsQXQoaW50IHkpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZh
bHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50
IHNoYXBlTWFyZ2luKSBjb25zdAogewogICAgIGludCBtYXJnaW5JbnRlcnZhbHNTaXplID0gKG9m
ZnNldCgpID4gc2hhcGVNYXJnaW4pID8gc2l6ZSgpIDogc2l6ZSgpIC0gb2Zmc2V0KCkgKiAyICsg
c2hhcGVNYXJnaW4gKiAyOwotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0
ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJn
aW4sIG9mZnNldCgpKSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBl
SW50ZXJ2YWxzPihtYXJnaW5JbnRlcnZhbHNTaXplLCBzdGQ6Om1heChzaGFwZU1hcmdpbiwgb2Zm
c2V0KCkpKTsKICAgICBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvciBtYXJnaW5JbnRlcnZhbEdlbmVy
YXRvcihzaGFwZU1hcmdpbik7CiAKICAgICBmb3IgKGludCB5ID0gYm91bmRzKCkueSgpOyB5IDwg
Ym91bmRzKCkubWF4WSgpOyArK3kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAKaW5kZXggMzAyMzFhMGJlMWJiYzYzZTRiZTNkMjUwNTEyYmVkM2QxOTU5NDA5OS4u
ZjVlZmVmZGQzMmIzMDU0N2FkYmQ4ZWIwOGY1NGU2M2IwMjQwZmQ5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTQ2LDI0ICs0NiwyNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVJbnNldFNo
YXBlKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGJvdW5kcykKIHsKICAgICBBU1NFUlQoYm91bmRz
LnJlY3QoKS53aWR0aCgpID49IDAgJiYgYm91bmRzLnJlY3QoKS5oZWlnaHQoKSA+PSAwKTsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBmbG9h
dCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMs
IGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRp
dXMsIHJhZGl1cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY3RhbmdsZVNoYXBlPihGbG9h
dFJlY3QoY2VudGVyLngoKSAtIHJhZGl1cywgY2VudGVyLnkoKSAtIHJhZGl1cywgcmFkaXVzKjIs
IHJhZGl1cyoyKSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSk7CiB9CiAKIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShjb25zdCBGbG9hdFBvaW50JiBj
ZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiB7CiAgICAgQVNTRVJUKHJhZGlpLndpZHRo
KCkgPj0gMCAmJiByYWRpaS5oZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgp
LCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVp
Z2h0KCkqMiksIHJhZGlpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4o
RmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWku
aGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKIH0K
IAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlUG9seWdvblNoYXBlKHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVs
ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2x5Z29uU2hhcGU+KFdURk1vdmUo
dmVydGljZXMpLCBmaWxsUnVsZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9seWdvblNoYXBl
PihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOwogfQogCiBzdGF0aWMgaW5saW5lIEZsb2F0
UmVjdCBwaHlzaWNhbFJlY3RUb0xvZ2ljYWwoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBs
b2dpY2FsQm94SGVpZ2h0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKQEAgLTEyOCw3ICsxMjgs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNp
Y1NoYXBlJiBiYXNpY1NoYXBlLCBjb25zdCBMYQogICAgICAgICBjb25zdCBWZWN0b3I8TGVuZ3Ro
PiYgdmFsdWVzID0gcG9seWdvbi52YWx1ZXMoKTsKICAgICAgICAgc2l6ZV90IHZhbHVlc1NpemUg
PSB2YWx1ZXMuc2l6ZSgpOwogICAgICAgICBBU1NFUlQoISh2YWx1ZXNTaXplICUgMikpOwotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzID0gbWFrZVVuaXF1
ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7IGkgKz0gMikgewogICAgICAgICAgICAgRmxvYXRQ
b2ludCB2ZXJ0ZXgoCiAgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aCh2YWx1ZXMu
YXQoaSksIGJveFdpZHRoKSwKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hh
cGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9s
ZCwgYwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChpbWFnZVIpOwog
ICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwotICAgIGF1
dG8gaW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFy
Z2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKKyAgICBhdXRvIGludGVydmFscyA9
IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1t
YXJnaW5SZWN0LnkoKSk7CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3Vs
ZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VS
ZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAKQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZs
b2F0IHRocmVzaG9sZCwgYwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byByYXN0ZXJTaGFw
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGU+KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFy
Z2luUmVjdC5zaXplKCkpOworICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVlPFJhc3Rl
clNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKICAgICByYXN0
ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHJhc3RlclNoYXBlLT5t
X21hcmdpbiA9IG1hcmdpbjsKICAgICByZXR1cm4gcmFzdGVyU2hhcGU7CkBAIC0yMzAsNyArMjMw
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlQm94U2hhcGUoY29uc3Qg
Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBXcmkKIAogICAgIEZsb2F0UmVjdCByZWN0KDAsIDAs
IHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgpLCByb3VuZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkp
OwogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmRzKHJlY3QsIHJvdW5kZWRSZWN0LnJhZGlpKCkp
OwotICAgIGF1dG8gc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJveFNoYXBlPihib3VuZHMpOwor
ICAgIGF1dG8gc2hhcGUgPSBtYWtlVW5pcXVlPEJveFNoYXBlPihib3VuZHMpOwogICAgIHNoYXBl
LT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgc2hhcGUtPm1fbWFyZ2luID0gbWFy
Z2luOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
T3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oCmluZGV4IGNkOTRmODljMDJiMGI4YzEzNTE5NDU3ZTQ0ZDBkZGFmNmQ4N2YxZmEu
Ljk0ODQzMTcxOTQ3YzAyMzA5YWI3ZjRmYjFiOTdjMjYzODgyZWUzNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBAIC0xMTMs
NyArMTEzLDcgQEAgY2xhc3MgU2hhcGVPdXRzaWRlSW5mbyBmaW5hbCB7CiAgICAgICAgIEluZm9N
YXAmIGluZm9NYXAgPSBTaGFwZU91dHNpZGVJbmZvOjppbmZvTWFwKCk7CiAgICAgICAgIGlmIChT
aGFwZU91dHNpZGVJbmZvKiBpbmZvID0gaW5mb01hcC5nZXQoJmtleSkpCiAgICAgICAgICAgICBy
ZXR1cm4gKmluZm87Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQoJmtleSwgc3Rk
OjptYWtlX3VuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBpbmZvTWFwLmFkZCgma2V5LCBtYWtlVW5pcXVlPFNoYXBlT3V0c2lkZUluZm8+KGtleSkp
OwogICAgICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogICAgIHN0
YXRpYyB2b2lkIHJlbW92ZUluZm8oY29uc3QgUmVuZGVyQm94JiBrZXkpIHsgaW5mb01hcCgpLnJl
bW92ZSgma2V5KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1No
YXBlcy5jcHAKaW5kZXggMGM5OGY5MTY2ZjdlMTUyOTcwM2JjZGIyYzhjODNjYzgwYmI3YmYyNC4u
NzQ0YzkwYjhmYjNmNTI3NjhhNTM4ZDIxMzU4MzYyY2E2MzQ4MjdlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0zNTgsNyArMzU4LDcg
QEAgUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVQYXRoOjpibGVuZChjb25zdCBCYXNpY1NoYXBl
JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGMKIAogICAgIGF1dG8mIGZyb21QYXRoID0gZG93bmNh
c3Q8QmFzaWNTaGFwZVBhdGg+KGZyb20pOwogCi0gICAgYXV0byByZXN1bHRpbmdQYXRoQnl0ZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOworICAgIGF1dG8gcmVzdWx0
aW5nUGF0aEJ5dGVzID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBidWls
ZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oKmZyb21QYXRoLm1fYnl0ZVN0cmVhbSwgKm1fYnl0
ZVN0cmVhbSwgKnJlc3VsdGluZ1BhdGhCeXRlcywgcHJvZ3Jlc3MpOwogCiAgICAgYXV0byByZXN1
bHQgPSBCYXNpY1NoYXBlUGF0aDo6Y3JlYXRlKFdURk1vdmUocmVzdWx0aW5nUGF0aEJ5dGVzKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCmluZGV4IGU3
YmIwNjE2NTAyZDk5ZDZkYjQzOTJiYjQ2OGE5YWI0NjljZTQ5NGEuLjJjMTJkZDliNDBkZDQwYjNj
MGJmNjc0OTMyMmFlMmIwZmQxZTA3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Db250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db250ZW50RGF0YS5oCkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIEltYWdlQ29udGVudERh
dGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmpl
Y3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVy
bmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKKyAgICAgICAgYXV0
byBpbWFnZSA9IG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4obV9pbWFnZS5jb3B5UmVmKCkp
OwogICAgICAgICBpbWFnZS0+c2V0QWx0VGV4dChhbHRUZXh0KCkpOwogICAgICAgICByZXR1cm4g
aW1hZ2U7CiAgICAgfQpAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNzIFRleHRDb250ZW50RGF0YSBm
aW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJl
bmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNs
b25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRD
b250ZW50RGF0YT4obV90ZXh0KTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4g
Y2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvbnRl
bnREYXRhPihtX3RleHQpOyB9CiAKICAgICBTdHJpbmcgbV90ZXh0OwogfTsKQEAgLTE2MSw3ICsx
NjEsNyBAQCBjbGFzcyBDb3VudGVyQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERh
dGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihE
b2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oc3RkOjpt
YWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4obWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4o
Y291bnRlcigpKSk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50
PiBtX2NvdW50ZXI7CkBAIC0xOTAsNyArMTkwLDcgQEAgY2xhc3MgUXVvdGVDb250ZW50RGF0YSBm
aW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJl
bmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVy
U3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNs
b25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFF1b3Rl
Q29udGVudERhdGE+KHF1b3RlKCkpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRh
PiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxRdW90ZUNv
bnRlbnREYXRhPihxdW90ZSgpKTsgfQogCiAgICAgUXVvdGVUeXBlIG1fcXVvdGU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAppbmRleCBmM2Q5MWRj
OGRiYzhkOWU0NmM2MDFiOTU4NDNiOWE5NTJmM2IyZDFkLi4zMDAxNGQwNGY3MGZiOTE4MTc0Mjg3
NjAzZmRlYWI3MjM5NTYxNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsbExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RmlsbExheWVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCBGaWxsTGF5ZXI6OkZpbGxMYXllcihGaWxs
TGF5ZXJUeXBlIHR5cGUpCiB9CiAKIEZpbGxMYXllcjo6RmlsbExheWVyKGNvbnN0IEZpbGxMYXll
ciYgbykKLSAgICA6IG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVy
Pigqby5tX25leHQpIDogbnVsbHB0cikKKyAgICA6IG1fbmV4dChvLm1fbmV4dCA/IG1ha2VVbmlx
dWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKICAgICAsIG1faW1hZ2Uoby5tX2lt
YWdlKQogICAgICwgbV94UG9zaXRpb24oby5tX3hQb3NpdGlvbikKICAgICAsIG1feVBvc2l0aW9u
KG8ubV95UG9zaXRpb24pCkBAIC0xMTcsNyArMTE3LDcgQEAgRmlsbExheWVyOjp+RmlsbExheWVy
KCkKIAogRmlsbExheWVyJiBGaWxsTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBGaWxsTGF5ZXImIG8p
CiB7Ci0gICAgbV9uZXh0ID0gby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4o
Km8ubV9uZXh0KSA6IG51bGxwdHI7CisgICAgbV9uZXh0ID0gby5tX25leHQgPyBtYWtlVW5pcXVl
PEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CiAKICAgICBtX2ltYWdlID0gby5tX2lt
YWdlOwogICAgIG1feFBvc2l0aW9uID0gby5tX3hQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDI0OWJhNDdlNTg0M2VjYzYy
ZTZmZDRmMjZhZjFjZjUzOGExNjNmOWMuLmZiNDNjMjBlNWNlOTllY2UxOWY0NTJmZDlmODc5NjRk
ODE0YmI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjbG9u
ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKIH0KIAogUmVu
ZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29u
c3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBEaXNwbGF5VHlwZSBkaXNwbGF5KQpAQCAtNDA5
LDcgKzQwOSw3IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5
bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwc2V1CiAgICAgUmVuZGVyU3R5bGUqIHJl
c3VsdCA9IHBzZXVkby5nZXQoKTsKIAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMpCi0g
ICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQc2V1ZG9TdHls
ZUNhY2hlPigpOworICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IG1ha2VVbmlxdWU8UHNl
dWRvU3R5bGVDYWNoZT4oKTsKIAogICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzLT5hcHBlbmQoV1RG
TW92ZShwc2V1ZG8pKTsKIApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6
YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBh
dXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKICAgICBpZiAoIWRh
dGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykKLSAgICAgICAgZGF0YS5jdXN0b21QYWlu
dFdhdGNoZWRQcm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7
CisgICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8
SGFzaFNldDxTdHJpbmc+PigpOwogICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGll
cy0+YWRkKG5hbWUpOwogfQogCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCB2b2lkIFJlbmRlclN0eWxl
OjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlLCBib29sIGFkZCkKIHsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2Vf
dW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkpLCBhZGQpOwor
ICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNl
Tm9uTnVsbCgpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQpCkBAIC0xMzEwLDEzICsxMzEwLDEzIEBAIHZvaWQg
UmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQog
ICAgIGlmIChhZGQgJiYgZGF0YS5jb250ZW50KSB7CiAgICAgICAgIGF1dG8mIGxhc3QgPSBsYXN0
Q29udGVudCgqZGF0YS5jb250ZW50KTsKICAgICAgICAgaWYgKCFpczxUZXh0Q29udGVudERhdGE+
KGxhc3QpKQotICAgICAgICAgICAgbGFzdC5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
bnRlbnREYXRhPihzdHJpbmcpKTsKKyAgICAgICAgICAgIGxhc3Quc2V0TmV4dChtYWtlVW5pcXVl
PFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
YXV0byYgdGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KGxhc3QpOwogICAg
ICAgICAgICAgdGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVudC50ZXh0KCkgKyBzdHJpbmcp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YS5jb250ZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7CisgICAgICAgIGRhdGEuY29udGVu
dCA9IG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOwogICAgICAgICBhdXRvJiBh
bHRUZXh0ID0gZGF0YS5hbHRUZXh0OwogICAgICAgICBpZiAoIWFsdFRleHQuaXNOdWxsKCkpCiAg
ICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0VGV4dCk7CkBAIC0xMzI3LDEy
ICsxMzI3LDEyIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1bmlxdWVfcHRy
PENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKIHsKICAgICBpZiAoIWNvdW50ZXIp
CiAgICAgICAgIHJldHVybjsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRl
ckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1h
a2VVbmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsKIH0K
IAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChRdW90ZVR5cGUgcXVvdGUsIGJvb2wgYWRk
KQogewotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihx
dW90ZSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPFF1b3RlQ29udGVudERhdGE+
KHF1b3RlKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudEFsdFRleHQo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBDb3VudGVyRGlyZWN0
aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKQogewogICAgIGF1
dG8mIG1hcCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY291bnRlckRpcmVjdGl2
ZXM7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRl
ckRpcmVjdGl2ZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFrZVVuaXF1ZTxDb3VudGVyRGlyZWN0
aXZlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0xNjcxLDE0ICsxNjcxLDE0IEBA
IHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIEFuaW1hdGlvbkxpc3QmIFJl
bmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucykKLSAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0
PigpOworICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMg
PSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5hbmltYXRpb25zOwogfQogCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6
ZW5zdXJlVHJhbnNpdGlvbnMoKQogewogICAgIGlmICghbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS50cmFuc2l0aW9ucykKLSAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS50cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAg
ICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IG1ha2VV
bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERh
dGEtPnRyYW5zaXRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCmluZGV4IDIwYjJhODExNGIwYzhlOWViZDQ4
MjcwNzlhOTgyMGYyZWMwZGNkYzIuLjZlMzdjZjhmYjhhYmE1NWVjMzMwYTk2MDMzYThhOTU0Yzdj
YjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5k
ZXJTdHlsZURlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdS
ZW5kZXJTdHlsZURlZnMuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgU3R5bGVTaGFkb3dTVkdEYXRh
OjpTdHlsZVNoYWRvd1NWR0RhdGEoKQogCiBpbmxpbmUgU3R5bGVTaGFkb3dTVkdEYXRhOjpTdHls
ZVNoYWRvd1NWR0RhdGEoY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJiBvdGhlcikKICAgICA6IFJl
ZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPigpCi0gICAgLCBzaGFkb3cob3RoZXIuc2hhZG93
ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIp
CisgICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqb3Ro
ZXIuc2hhZG93KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TaGFkb3dEYXRhLmNwcAppbmRleCAzZDYxYzk0YzAxNjYxNjA4NThkYWJkODQwOWZj
NDA4NjcwZTUwMWNhLi5jMTdlYWY4NTliMGJmYWE3ZGFiYzAwOGQ0ZTc0MGZjNjMwYTRiODM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCkBAIC0z
Myw3ICszMyw3IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEoY29uc3QgU2hhZG93RGF0YSYgbykK
ICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQogICAgICwgbV9zdHlsZShvLm1fc3R5bGUpCiAgICAg
LCBtX2lzV2Via2l0Qm94U2hhZG93KG8ubV9pc1dlYmtpdEJveFNoYWRvdykKLSAgICAsIG1fbmV4
dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8ubV9uZXh0KSA6IG51
bGxwdHIpCisgICAgLCBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpv
Lm1fbmV4dCkgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggYWQyY2Jk
OTU3ZWVmODI1NjBjZmIzNTJlOWY1MGIzOWU2MzNhMjZmZi4uOTZkYmJhMDA3ZTZhNjRhN2Q2OTdh
MjlhMjFkNjIxYWQ0NDc1NGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtMTcyLDcgKzE3Miw3
IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRh
KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCB2aXNpdGVkTGlua1RleHRFbXBoYXNp
c0NvbG9yKG8udmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcikKICAgICAsIGNhcmV0Q29sb3Io
by5jYXJldENvbG9yKQogICAgICwgdmlzaXRlZExpbmtDYXJldENvbG9yKG8udmlzaXRlZExpbmtD
YXJldENvbG9yKQotICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBzdGQ6Om1ha2VfdW5p
cXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIHRleHRTaGFk
b3coby50ZXh0U2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hhZG93KSA6
IG51bGxwdHIpCiAgICAgLCBjdXJzb3JEYXRhKG8uY3Vyc29yRGF0YSkKICAgICAsIGluZGVudChv
LmluZGVudCkKICAgICAsIGVmZmVjdGl2ZVpvb20oby5lZmZlY3RpdmVab29tKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuY3BwCmluZGV4IDZmYmIyYjdiMGMzZWIwM2U4NjlhMWVhYWM5MTYxMTE5YzljNjFl
OWIuLmJkZDAxOTE1YWEyNzhkZDZhNjY0OGZmNGMzZmJkYjNmY2NkMTQyYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5jcHAKQEAgLTEzOSwxMyArMTM5LDEzIEBAIGlubGluZSBTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5v
bkluCiAgICAgLCBzY3JvbGxTbmFwQXJlYShvLnNjcm9sbFNuYXBBcmVhKQogI2VuZGlmCiAgICAg
LCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xvbmUoKSA6IG51bGxwdHIpCi0gICAg
LCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVzID8gc3RkOjptYWtlX3VuaXF1
ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigqby5jb3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRyKQor
ICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IG1ha2VVbmlxdWU8
Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKICAg
ICAsIGFsdFRleHQoby5hbHRUZXh0KQotICAgICwgYm94U2hhZG93KG8uYm94U2hhZG93ID8gc3Rk
OjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5ib3hTaGFkb3cpIDogbnVsbHB0cikKKyAgICAs
IGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hh
ZG93KSA6IG51bGxwdHIpCiAgICAgLCB3aWxsQ2hhbmdlKG8ud2lsbENoYW5nZSkKICAgICAsIGJv
eFJlZmxlY3Qoby5ib3hSZWZsZWN0KQotICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBz
dGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikK
LSAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1h
dGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCisgICAgLCBhbmltYXRpb25zKG8u
YW5pbWF0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8uYW5pbWF0aW9ucykgOiBu
dWxscHRyKQorICAgICwgdHJhbnNpdGlvbnMoby50cmFuc2l0aW9ucyA/IG1ha2VVbmlxdWU8QW5p
bWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMpIDogbnVsbHB0cikKICAgICAsIG1hc2soby5tYXNr
KQogICAgICwgbWFza0JveEltYWdlKG8ubWFza0JveEltYWdlKQogICAgICwgcGFnZVNpemUoby5w
YWdlU2l6ZSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAg
ICwganVzdGlmeUl0ZW1zKG8uanVzdGlmeUl0ZW1zKQogICAgICwganVzdGlmeVNlbGYoby5qdXN0
aWZ5U2VsZikKICAgICAsIGN1c3RvbVByb3BlcnRpZXMoby5jdXN0b21Qcm9wZXJ0aWVzKQotICAg
ICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3Bl
cnRpZXMgPyBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRX
YXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQorICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJv
cGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBtYWtlVW5pcXVlPEhhc2hT
ZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQog
I2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICAsIHRvdWNoQWN0aW9ucyhvLnRvdWNoQWN0
aW9ucykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcAppbmRleCAyYzZmMzE3OGVlYjI2YzdiMmMwZDk1YWUxMDhiN2VmY2M2ZTIyYzRl
Li4yNGNkZTRiZDYxZTcxNGMyMzIzYjllNWNkMmNmMjY5ZTI4NDVmOWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtNTAsNyArNTAs
NyBAQCBSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVl
KQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQotICAgICwgbV9pbWFnZVJlc291
cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1h
Z2VSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiAgICAgaW1h
Z2VSZXNvdXJjZSgpLmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDNjMzEwNTZkMWNhYjFmZWEx
MDQ5MDc4MGQwMGM4ZGNkMmM3OTgwNjguLmJhMWNkMDUyZGFkYWExY2UxODQxYzdjMjNjYWYzM2Zh
YTRlMzQ3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJ
bmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWwKIAog
c3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+IFJlbmRlclNWR0lubGluZTo6Y3JlYXRlSW5s
aW5lRmxvd0JveCgpCiB7Ci0gICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0lubGlu
ZUZsb3dCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZHSW5saW5lRmxv
d0JveD4oKnRoaXMpOwogICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAg
ICByZXR1cm4gYm94OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggNjdlNmY5ODk3ZDI3NzQ0ZmQ0MTMzZmYyNzY3
MTRjNGU5ZGE2NjViMC4uZGJmNDkwM2Y4OWY0ZGM5MmVkZmYzMDUzOTI1ODY5ZjMyZTJkOTljMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZVRleHQuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUKIAog
c3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0
ZVRleHRCb3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVU
ZXh0Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZVRleHRC
b3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAg
cmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMWIzZWYyNGNjOTJkMjA1MmEzNGFh
ZDIwODgyMzMwZTFhMTIzYjg0Zi4uMWFkMjY0OTY0NjcwOWMyM2YwZGI5Y2ZhZTRiODYzYzI0N2Iz
NjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2
ZXMoU1ZHRmkKICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3ggPSBmaWx0ZXIudGFyZ2V0
Qm91bmRpbmdCb3goKTsKIAogICAgIC8vIEFkZCBlZmZlY3RzIHRvIHRoZSBidWlsZGVyCi0gICAg
YXV0byBidWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VH
cmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxT
VkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CiAgICAgYnVp
bGRlci0+c2V0UHJpbWl0aXZlVW5pdHMoZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCkp
OwogICAgIGJ1aWxkZXItPnNldFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsK
ICAgICAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIEFscmVhZHkgYnVpbHQsIG9yIHdlJ3JlIGluIGEgY3ljbGUsIG9y
IHdlJ3JlIG1hcmtlZCBmb3IgcmVtb3ZhbC4gUmVnYXJkbGVzcywganVzdCBkbyBub3RoaW5nIG1v
cmUgbm93LgogICAgIH0KIAotICAgIGF1dG8gZmlsdGVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
RmlsdGVyRGF0YT4oKTsKKyAgICBhdXRvIGZpbHRlckRhdGEgPSBtYWtlVW5pcXVlPEZpbHRlckRh
dGE+KCk7CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gcmVuZGVyZXIub2JqZWN0
Qm91bmRpbmdCb3goKTsKIAogICAgIGZpbHRlckRhdGEtPmJvdW5kYXJpZXMgPSBTVkdMZW5ndGhD
b250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlckVsZW1lbnQ+KCZmaWx0ZXJFbGVtZW50
KCksIGZpbHRlckVsZW1lbnQoKS5maWx0ZXJVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcAppbmRleCBkOGFkMDgwNDY2YzVjNmQ5ZWVjZjA3OGNkZmY2NDI2YzYx
NGEwY2UyLi41NTJjZTVhMzNhODA2MmU2YmVlMGIwNGFlM2YxNjBmMDk5ZWI1MmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bgogCiAgICAgYXV0byYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5hZGQoJnJlbmRlcmVy
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFncmFkaWVudERhdGEpCi0gICAg
ICAgIGdyYWRpZW50RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhZGllbnREYXRhPigpOworICAg
ICAgICBncmFkaWVudERhdGEgPSBtYWtlVW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKIAogICAgIGJv
b2wgaXNQYWludGluZ1RleHQgPSByZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3Vy
Y2VNb2RlOjpBcHBseVRvVGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggYWE1NzY1ZWQzNzli
NmFiMWI5NDQ3MjZmNWI1ZWU0NTQzODNjNDY0ZS4uNGM4MTliOWJjNTVkYzJiZmE4MmZiYmMwOTdm
NjM3NTg1YjViMTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgY29uc3QgUmVuZGUKIAogICAgIGJvb2wgbWlzc2luZ01hc2tlckRhdGEgPSAhbV9tYXNr
ZXIuY29udGFpbnMoJnJlbmRlcmVyKTsKICAgICBpZiAobWlzc2luZ01hc2tlckRhdGEpCi0gICAg
ICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8TWFza2VyRGF0YT4o
KSk7CisgICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIG1ha2VVbmlxdWU8TWFza2VyRGF0
YT4oKSk7CiAKICAgICBNYXNrZXJEYXRhKiBtYXNrZXJEYXRhID0gbV9tYXNrZXIuZ2V0KCZyZW5k
ZXJlcik7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVT
eXN0ZW0ocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCmluZGV4IDI5ZThlN2MyNDc1NjU4NzkyZWU0ZWQ0
ZWQwODIwZmFlZWM5YmRjMGMuLmRmMDE3YmExYmZjMGNjZjdhZWE5M2EzYmIyZjdmYzc4OGY2OTZj
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBzdHJ1Y3QgTWFza2VyRGF0YSB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gbWFza0ltYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGNjMmNiZmNmMGZlOWE1
OWVjZTE1ZjUyZjM1NzJkYjU5ZDE2MzIwZDYuLjMxYmM1ZjE5MzFiZGFlNTBhYWM2NjEzNTlmYzBh
MjZmMTc4NTg2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBQYXR0
ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIE9wdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEJ1
aWxkIHBhdHRlcm4uCi0gICAgYXV0byBwYXR0ZXJuRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0
dGVybkRhdGE+KCk7CisgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRh
dGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVk
SW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBh
dHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDM0YjBhZTc1YmRjMDA1NjU3NmQ1MTM4MDE4
NWVmZTZiYzcyYzcwNmUuLjZhNjcxMThmZjFiMjU4YjMwM2M5NTYzODU5M2Y0NzRlZTg5YmJlNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3Bw
CkBAIC03OSw3ICs3OSw3IEBAIFJlbmRlclNWR1NoYXBlOjp+UmVuZGVyU1ZHU2hhcGUoKSA9IGRl
ZmF1bHQ7CiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKQog
ewotICAgIG1fcGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGljc0Vs
ZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CisgICAgbV9wYXRoID0gbWFrZVVuaXF1ZTxQYXRo
PihwYXRoRnJvbUdyYXBoaWNzRWxlbWVudCgmZ3JhcGhpY3NFbGVtZW50KCkpKTsKICAgICBwcm9j
ZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKICAgICBtX2ZpbGxCb3VuZGluZ0JveCA9IGNhbGN1bGF0
ZU9iamVjdEJvdW5kaW5nQm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlcy5jcHAKaW5kZXggYmY3ODY0NDNkZGQ2MGQ2MjFiY2Q1NzliODc3MGVkY2Q5MWQy
OWZhOS4uOWM3MzdjYWZmOGI5Mjc2Y2M0MTA2MDJmNTc5YTlmMzY0ZTVhMDhiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcApAQCAtNTA4LDcgKzUw
OCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlciogY2xpcHBlcikKICAgICBBU1NFUlQoY2xpcHBlci0+cmVzb3VyY2VUeXBlKCkgPT0gQ2xp
cHBlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEp
Ci0gICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENs
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOworICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKIAogICAgIG1fY2xp
cHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIgPSBjbGlwcGVyOwogICAgIHJldHVybiB0cnVl
OwpAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIoUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKICAgICBBU1NFUlQoZmlsdGVyLT5yZXNvdXJjZVR5
cGUoKSA9PSBGaWx0ZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJN
YXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmls
dGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAK
ICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSBmaWx0ZXI7CiAgICAgcmV0
dXJuIHRydWU7CkBAIC01NTAsNyArNTUwLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtl
clN0YXJ0KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJTdGFydCkKICAgICBBU1NFUlQo
bWFya2VyU3RhcnQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAg
ICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1h
cmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0ID0gbWFya2VyU3Rh
cnQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NzEsNyArNTcxLDcgQEAgYm9vbCBTVkdSZXNvdXJj
ZXM6OnNldE1hcmtlck1pZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyTWlkKQogICAg
IEFTU0VSVChtYXJrZXJNaWQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7
CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5p
cXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9IG1hcmtl
ck1pZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBib29sIFNWR1Jlc291
cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJFbmQpCiAg
ICAgQVNTRVJUKG1hcmtlckVuZC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBl
KTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPE1hcmtlckRhdGE+KCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9IG1ha2VV
bmlxdWU8TWFya2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID0gbWFy
a2VyRW5kOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgU1ZHUmVz
b3VyY2VzOjpzZXRNYXNrZXIoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlcikKICAgICBB
U1NFUlQobWFza2VyLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUpOwogCiAg
ICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4o
KTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBl
ckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5t
YXNrZXIgPSBtYXNrZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MzYsNyArNjM2LDcgQEAgYm9v
bCBTVkdSZXNvdXJjZXM6OnNldEZpbGwoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIGZpbGwp
CiAgICAgICAgICAgIHx8IGZpbGwtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50UmVz
b3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9maWxs
U3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAgICAg
IG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAg
bV9maWxsU3Ryb2tlRGF0YS0+ZmlsbCA9IGZpbGw7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02NTks
NyArNjU5LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldFN0cm9rZShSZW5kZXJTVkdSZXNvdXJj
ZUNvbnRhaW5lciogc3Ryb2tlKQogICAgICAgICAgICB8fCBzdHJva2UtPnJlc291cmNlVHlwZSgp
ID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tl
RGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0
cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxT
dHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlID0gc3Ryb2tlOwog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCAxOTE5NWFhMWRhYmM2NmU0YjM1NjU5NzJlYzkxZjg5
NDc3ZjQwMzliLi4xZWViNzhmNTdiM2ViYjMxYjRjZGU4ZTUzMDJkZGUwOWUwNDhjMGJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNw
cApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjphZGRSZXNvdXJjZXNG
cm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0CiAgICAgQVNTRVJUKCFt
X2NhY2hlLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogCiAgICAgLy8gQnVpbGQgYSBsaXN0IG9mIGFs
bCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXNzZWQgUmVuZGVyT2JqZWN0Ci0gICAg
YXV0byBuZXdSZXNvdXJjZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKKyAg
ICBhdXRvIG5ld1Jlc291cmNlcyA9IG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2VzPigpOwogICAgIGlm
ICghbmV3UmVzb3VyY2VzLT5idWlsZENhY2hlZFJlc291cmNlcyhyZW5kZXJlciwgc3R5bGUpKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCAzMjQxMDI1ODRjMWYxMTNkMGVlZDMz
MjE0YTY3ZjU1MzRhYjBmNTlhLi44MTBhMGI4ODBhOGFhNGRhZTAyZmFiNDQ2YTk0MWVkZDljNWE3
MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRy
aWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBTVkdUZXh0TWV0cmlj
c0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZH
SW5saW4KICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQogICAgICAgICBtX3NpbXBsZVdpZHRoSXRl
cmF0b3IgPSBudWxscHRyOwogICAgIGVsc2UKLSAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4pOwor
ICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdpZHRoSXRlcmF0b3I+
KCZzY2FsZWRGb250LCBtX3J1bik7CiB9CiAKIHN0cnVjdCBNZWFzdXJlVGV4dERhdGEgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVp
bGRlci5jcHAKaW5kZXggZDM3YmVlOGNiY2U1NTYxNTExYjI0ZTM2NGUxYWY2NGFhZDdhYTc1ZC4u
ZTZiMjczMjBkOTJmZTg1NmQ4Mzc0MTA4ZWQ5NTQyZTA5MWVlYWY0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3Bw
CkBAIC0xMjIsMjIgKzEyMiwyMiBAQCBzdGF0aWMgdm9pZCBnZXRJbmxpbmVSdW4oUmVuZGVyT2Jq
ZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBib3VuZGFyeSwgUmVuZGVyT2JqZQogCiBSZW5kZXJU
cmVlQnVpbGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIoUmVuZGVyVmlldyYgdmlldykKICAgICA6IG1f
dmlldyh2aWV3KQotICAgICwgbV9maXJzdExldHRlckJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxG
aXJzdExldHRlcj4oKnRoaXMpKQotICAgICwgbV9saXN0QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVl
PExpc3Q+KCp0aGlzKSkKLSAgICAsIG1fbXVsdGlDb2x1bW5CdWlsZGVyKHN0ZDo6bWFrZV91bmlx
dWU8TXVsdGlDb2x1bW4+KCp0aGlzKSkKLSAgICAsIG1fdGFibGVCdWlsZGVyKHN0ZDo6bWFrZV91
bmlxdWU8VGFibGU+KCp0aGlzKSkKLSAgICAsIG1fcnVieUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1
ZTxSdWJ5PigqdGhpcykpCi0gICAgLCBtX2Zvcm1Db250cm9sc0J1aWxkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxGb3JtQ29udHJvbHM+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tCdWlsZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8QmxvY2s+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tGbG93QnVpbGRlcihzdGQ6Om1h
a2VfdW5pcXVlPEJsb2NrRmxvdz4oKnRoaXMpKQotICAgICwgbV9pbmxpbmVCdWlsZGVyKHN0ZDo6
bWFrZV91bmlxdWU8SW5saW5lPigqdGhpcykpCi0gICAgLCBtX3N2Z0J1aWxkZXIoc3RkOjptYWtl
X3VuaXF1ZTxTVkc+KCp0aGlzKSkKKyAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKG1ha2VVbmlx
dWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKKyAgICAsIG1fbGlzdEJ1aWxkZXIobWFrZVVuaXF1ZTxM
aXN0PigqdGhpcykpCisgICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihtYWtlVW5pcXVlPE11bHRp
Q29sdW1uPigqdGhpcykpCisgICAgLCBtX3RhYmxlQnVpbGRlcihtYWtlVW5pcXVlPFRhYmxlPigq
dGhpcykpCisgICAgLCBtX3J1YnlCdWlsZGVyKG1ha2VVbmlxdWU8UnVieT4oKnRoaXMpKQorICAg
ICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKG1ha2VVbmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhpcykp
CisgICAgLCBtX2Jsb2NrQnVpbGRlcihtYWtlVW5pcXVlPEJsb2NrPigqdGhpcykpCisgICAgLCBt
X2Jsb2NrRmxvd0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKKyAgICAsIG1f
aW5saW5lQnVpbGRlcihtYWtlVW5pcXVlPElubGluZT4oKnRoaXMpKQorICAgICwgbV9zdmdCdWls
ZGVyKG1ha2VVbmlxdWU8U1ZHPigqdGhpcykpCiAjaWYgRU5BQkxFKE1BVEhNTCkKLSAgICAsIG1f
bWF0aE1MQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE1hdGhNTD4oKnRoaXMpKQorICAgICwgbV9t
YXRoTUxCdWlsZGVyKG1ha2VVbmlxdWU8TWF0aE1MPigqdGhpcykpCiAjZW5kaWYKLSAgICAsIG1f
Y29udGludWF0aW9uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMp
KQorICAgICwgbV9jb250aW51YXRpb25CdWlsZGVyKG1ha2VVbmlxdWU8Q29udGludWF0aW9uPigq
dGhpcykpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICwgbV9mdWxsU2NyZWVuQnVp
bGRlcihzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxTY3JlZW4+KCp0aGlzKSkKKyAgICAsIG1fZnVsbFNj
cmVlbkJ1aWxkZXIobWFrZVVuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCiAjZW5kaWYKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVCghc19jdXJyZW50IHx8ICZtX3ZpZXcgIT0gJnNfY3VycmVudC0+bV92
aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDlhOThkMjVjMzJiOTM2NGI0NmE2YWVjZmMzY2ZmZGM2
YzQ2NmY0ZDIuLmI5ZDIwN2Y3ZGZkMzI0NmZlMDMwODZjODRjYTIwMWJjYjdiOTE5YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQ
YXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKgogCiBS
ZW5kZXJUcmVlVXBkYXRlcjo6UmVuZGVyVHJlZVVwZGF0ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQog
ICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChzdGQ6
Om1ha2VfdW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkKKyAgICAsIG1fZ2VuZXJhdGVk
Q29udGVudChtYWtlVW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkKICAgICAsIG1fYnVp
bGRlcihyZW5kZXJWaWV3KCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBs
YXkvVXNlcklucHV0QnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJp
ZGdlLmgKaW5kZXggN2ZlN2Y2ODczMjA0MTBlZjA0ODM4N2Q0ODFmOTI3YjEyYzIzODNhYy4uYjlj
NzJlYjg4MGU5YmI4NzU5OGY0MTQ0MDc3ZDAyMzAxNjY2NWI4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
cGxheS9Vc2VySW5wdXRCcmlkZ2UuaApAQCAtNDksNiArNDksNyBAQCBlbnVtIGNsYXNzIElucHV0
U291cmNlIHsKIH07CiAKIGNsYXNzIFVzZXJJbnB1dEJyaWRnZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVXNlcklucHV0QnJpZGdlKTsK
IHB1YmxpYzoKICAgICBVc2VySW5wdXRCcmlkZ2UoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUludmFsaWRhdG9yLmNwcAppbmRleCBkYWUxMWNiMmY2Mjg5OTE4NDUzYTEyODA5YWU0
M2I4MTI0YjZiMTJiLi42ZDY5NWE2NjBkMGU0ZTA0NWEyNmRhYmUzMzMxZWNhMjZmYWQyZWJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcApAQCAtNzgsNyArNzgs
NyBAQCBzdGF0aWMgYm9vbCBzaG91bGREaXJ0eUFsbFN0eWxlKGNvbnN0IFZlY3RvcjxTdHlsZVNo
ZWV0Q29udGVudHMqPiYgc2hlZXRzKQogfQogCiBJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IoY29u
c3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50cyo+JiBzaGVldHMsIGNvbnN0IE1lZGlhUXVlcnlF
dmFsdWF0b3ImIG1lZGlhUXVlcnlFdmFsdWF0b3IpCi0gICAgOiBtX293bmVkUnVsZVNldChzdGQ6
Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkpCisgICAgOiBtX293bmVkUnVsZVNldChtYWtlVW5pcXVl
PFJ1bGVTZXQ+KCkpCiAgICAgLCBtX3J1bGVTZXQoKm1fb3duZWRSdWxlU2V0KQogICAgICwgbV9k
aXJ0aWVzQWxsU3R5bGUoc2hvdWxkRGlydHlBbGxTdHlsZShzaGVldHMpKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCmluZGV4IDRkODE0OGI0ZTMxZDc0ZDZhMGE1MTc1
NGRlZTVlYWI4MDc1OWFiYWEuLjA2MmQ1OTY0ZDc3ZWM1ZGI4M2IzZjQxYWNiYWE4N2VmY2U5OGRk
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4gY29tbWl0UmVsYXRpb25zVG9SZW5kZXJT
dHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnMKIAogICAgIGF1dG8gYXBwZW5kU3R5bGVSZWxh
dGlvbiA9IFsmcmVtYWluaW5nUmVsYXRpb25zXSAoY29uc3QgUmVsYXRpb24mIHJlbGF0aW9uKSB7
CiAgICAgICAgIGlmICghcmVtYWluaW5nUmVsYXRpb25zKQotICAgICAgICAgICAgcmVtYWluaW5n
UmVsYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxSZWxhdGlvbnM+KCk7CisgICAgICAgICAgICBy
ZW1haW5pbmdSZWxhdGlvbnMgPSBtYWtlVW5pcXVlPFJlbGF0aW9ucz4oKTsKICAgICAgICAgcmVt
YWluaW5nUmVsYXRpb25zLT5hcHBlbmQocmVsYXRpb24pOwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggOWYwZDFhZDc0OTBiZmVhYjI0MDdjZTdiYzg4YjA5NTEx
NmQwYjIyMi4uZGNiNjViYzA5YzM0Nzc5YjYzYTI5MzI0ZTI0ZDM3MmJmYzZhMjNkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgU3R5bGVSZXNvbHZl
ciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKICAgICAgICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHls
ZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9yZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8U3R5bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7CisgICAgICAgIG1fcmVzb2x2ZXIgPSBtYWtl
VW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOwogCiAgICAgICAgIGlmICghbV9zaGFk
b3dSb290KSB7CiAgICAgICAgICAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxkU3Rh
cnRlZCgpOwpAQCAtNTYzLDcgKzU2Myw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4+IFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0Zvckluc3BlY3RvcigpCiBib29sIFNjb3Bl
OjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKGNvbnN0IENTU1N0eWxlU2hlZXQqIHNoZWV0KSBj
b25zdAogewogICAgIGlmICghbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0
TG9va3VwKSB7Ci0gICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFz
dExvb2t1cCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4+
KCk7CisgICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1
cCA9IG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4+KCk7CiAgICAgICAg
IGZvciAoYXV0byYgYWN0aXZlU3R5bGVTaGVldCA6IG1fYWN0aXZlU3R5bGVTaGVldHMpCiAgICAg
ICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAtPmFk
ZChhY3RpdmVTdHlsZVNoZWV0LmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggODQ2YTIzMWFkMmIxOGI1ZDdmMjk0OTAxNmQwOWYy
MjNkZDY5ZTg4Yi4uYTAwZjRmZTBmNGNjYjUyZGQ4MzFhOTRlMjZhNTg2NGU1YzFiNzkyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtNTQ4LDcgKzU0
OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZSgpCiAK
ICAgICBtX2RpZFNlZVBlbmRpbmdTdHlsZXNoZWV0ID0gbV9kb2N1bWVudC5zdHlsZVNjb3BlKCku
aGFzUGVuZGluZ1NoZWV0c0JlZm9yZUJvZHkoKTsKIAotICAgIG1fdXBkYXRlID0gc3RkOjptYWtl
X3VuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOworICAgIG1fdXBkYXRlID0gbWFrZVVuaXF1ZTxV
cGRhdGU+KG1fZG9jdW1lbnQpOwogICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoYWRvcHRSZWYoKm5l
dyBTY29wZShtX2RvY3VtZW50KSkpOwogICAgIG1fcGFyZW50U3RhY2suYXBwZW5kKFBhcmVudCht
X2RvY3VtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAKaW5kZXggYmM1MTQzNGIwYjJiOGUwYmY3N2U1N2E0YTc2ZTRkNGJjZWVlOTk2NS4uMjVm
Mzg2M2QwNzk1NGFjOGQ2YTYzZTY4NjRhMWYwNzZiMGQ1MWFlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5z
aW9ucyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAg
ICwgbV9yZXNvdXJjZXNDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlc0NhY2hlPigp
KQorICAgICwgbV9yZXNvdXJjZXNDYWNoZShtYWtlVW5pcXVlPFNWR1Jlc291cmNlc0NhY2hlPigp
KQogICAgICwgbV9hcmVBbmltYXRpb25zUGF1c2VkKCFkb2N1bWVudC5wYWdlKCkgfHwgIWRvY3Vt
ZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkpCiB7CiB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBT
VkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5n
JiBpZCwgRWxlbWVudCYgZWwKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUmVzb3VyY2Vz
LmFkZChpZCwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRWxlbWVudHM+
KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFBlbmRpbmdF
bGVtZW50cz4oKTsKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQoJmVsZW1lbnQpOwog
CiAgICAgZWxlbWVudC5zZXRIYXNQZW5kaW5nUmVzb3VyY2VzKCk7CkBAIC0yNzksNyArMjc5LDcg
QEAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c2V0T2ZFbGVt
ZW50c1JlZmVyZW5jaW5nVGFyZ2V0KFNWR0UKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjph
ZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxlbWVudCYgcmVmZXJlbmNpbmdFbGVtZW50
LCBTVkdFbGVtZW50JiByZWZlcmVuY2VkRWxlbWVudCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1f
ZWxlbWVudERlcGVuZGVuY2llcy5lbnN1cmUoJnJlZmVyZW5jZWRFbGVtZW50LCBbJnJlZmVyZW5j
aW5nRWxlbWVudF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFNW
R0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVu
Y2luZ0VsZW1lbnQgfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8U1ZHRWxl
bWVudCo+PihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZHRWxlbWVudCo+IHsgJnJlZmVyZW5jaW5n
RWxlbWVudCB9KTsKICAgICB9KTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQoJnJlZmVyZW5jaW5nRWxlbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYTgwOTZkZGFkYTgxZWFkNmE3YTFlYTMyNGNkODUw
NjdmNWMwYjI4Yi4uZTRkZTNiNzQ5ZjBhMDAzOWJjNWM0Y2ZjZDA4ZTE5Mzk2Y2Q2NTYyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBORVZF
Ul9JTkxJTkUgSGFzaE1hcDxBdG9tU3RyaW5nSW1wbCosIENTU1Byb3BlcnR5SUQ+IGNyZWF0ZUF0
dHJpYnV0ZU5hbWVUCiBTVkdFbGVtZW50OjpTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFN0eWxlZEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIENyZWF0ZVNWR0VsZW1lbnQpCiAgICAgLCBTVkdMYW5nU3BhY2UodGhpcykK
LSAgICAsIG1fcHJvcGVydHlBbmltYXRvckZhY3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxTVkdQcm9w
ZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKKyAgICAsIG1fcHJvcGVydHlBbmltYXRvckZhY3Rvcnko
bWFrZVVuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKIHsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtd
IHsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OndpbGxSZWNhbGNTdHlsZShT
dHlsZTo6Q2hhbmdlIGNoYW5nZSkKIFNWR0VsZW1lbnRSYXJlRGF0YSYgU1ZHRWxlbWVudDo6ZW5z
dXJlU1ZHUmFyZURhdGEoKQogewogICAgIGlmICghbV9zdmdSYXJlRGF0YSkKLSAgICAgICAgbV9z
dmdSYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOworICAg
ICAgICBtX3N2Z1JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTVkdFbGVtZW50UmFyZURhdGE+KCk7CiAg
ICAgcmV0dXJuICptX3N2Z1JhcmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuY3BwCmluZGV4IGE3NTg5MGYzMTgwNDY4ZDE1MjRiZWU4NTQzNTlkMDM1NmVi
NTIyMmQuLjgwZWM3ZmM4NjI5MmI2M2JiYmE4NTFlMTFlMTA2ZmExNTJmOTE0NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
QWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9y
bSgpIGNvbnN0CiBBZmZpbmVUcmFuc2Zvcm0qIFNWR0dyYXBoaWNzRWxlbWVudDo6c3VwcGxlbWVu
dGFsVHJhbnNmb3JtKCkKIHsKICAgICBpZiAoIW1fc3VwcGxlbWVudGFsVHJhbnNmb3JtKQotICAg
ICAgICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8QWZmaW5lVHJh
bnNmb3JtPigpOworICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8
QWZmaW5lVHJhbnNmb3JtPigpOwogICAgIHJldHVybiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5n
ZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAppbmRleCA2ZjBh
Y2FjZjE5ZWU4NTBkYjRlNjkxMGQzZTgzZDI2NDk0ZDY3ZWIwLi40MzRkOTFlYjNkZjhhZDg3OWY4
MzlhNDg5NjY4Njc4MGI0MDlmMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEJ5dGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJl
YW0uaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbSB7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGNvcHkoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsKICAg
ICB9CiAKICAgICBEYXRhSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVn
aW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGlt
ZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29u
dGFpbmVyLmNwcAppbmRleCBlMDQyM2NlOTgxNWZhMGYyNTU2M2EzYjU0MzE0MDg2YWMzNTZmZjQ0
Li4zZWI1N2FkMmYyMWRmYTY0YjliMTE4MDFmNDI3MjgzNjAyYjc1YjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcApAQCAtNjQs
NyArNjQsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzY2hlZHVsZShTVkdTTUlMRWxlbWVu
dCogYW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0YXJnZXQsCiAgICAgRWxlbWVudEF0dHJpYnV0ZVBh
aXIga2V5KHRhcmdldCwgYXR0cmlidXRlTmFtZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1h
dGlvbnNWZWN0b3I+JiBzY2hlZHVsZWQgPSBtX3NjaGVkdWxlZEFuaW1hdGlvbnMuYWRkKGtleSwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2NoZWR1bGVkKQotICAgICAgICBz
Y2hlZHVsZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbnNWZWN0b3I+KCk7CisgICAgICAg
IHNjaGVkdWxlZCA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uc1ZlY3Rvcj4oKTsKICAgICBBU1NFUlQo
IXNjaGVkdWxlZC0+Y29udGFpbnMoYW5pbWF0aW9uKSk7CiAgICAgc2NoZWR1bGVkLT5hcHBlbmQo
YW5pbWF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5k
ZXggODA5YWZmNWQ4ODUzNzEyMDcyYWQ4NzE1NjczNWU5MzBmOWJhMzVjZC4uNWM1NmI2OTk5NWJj
OTJmNGNhODgxZTJiOTFlOWYzN2ZmNWMzOGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZH
SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiAgICAgaWYgKGFsbERh
dGFSZWNlaXZlZCkgewogICAgICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZp
Z3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCk7Ci0gICAgICAgIG1fY2hyb21lQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhpcyk7CisgICAgICAgIG1fY2hy
b21lQ2xpZW50ID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhpcyk7CiAgICAg
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIFNWRyBlbmRzIHVwIGxvYWRpbmcgaXRzZWxm
LCB3ZSBtaWdodCBsZWFrIHRoZSB3b3JsZC4KQEAgLTQ2Niw3ICs0NjYsNyBAQCBFbmNvZGVkRGF0
YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAg
ICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgYW4gaXNzdWUgd2hlbiBTVkdJbWFnZSB3aWxsIGJlIGFi
bGUgdG8gbG9hZCBvdGhlcgogICAgICAgICAvLyBTVkdJbWFnZSBvYmplY3RzLCBidXQgd2UncmUg
c2FmZSBub3csIGJlY2F1c2UgU1ZHSW1hZ2UgY2FuIG9ubHkgYmUKICAgICAgICAgLy8gbG9hZGVk
IGJ5IGEgdG9wLWxldmVsIGRvY3VtZW50LgotICAgICAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICAgICAgbV9wYWdlID0g
bWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgICAgIG1f
cGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2Ut
PnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0
dGluZ3MoKS5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKaW5kZXggZDk3MDMw
MmFkZjg2NTg1NTA5YzY1MDhkNTA0OTUyYTI1NTMyMzYyYi4uYzc3YWUwOGJhYzY1YzNjMmNmYzg5
NzRmYTMzZTc2NDYwY2U5N2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFz
cyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50OwogCiBjbGFzcyBTVkdGaWx0
ZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEhhc2hTZXQ8RmlsdGVyRWZmZWN0Kj4gRmlsdGVyRWZmZWN0U2V0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFBy
b3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5LmgKaW5kZXggZTVlZmFhZWE3MTExYmM2Yzk1N2Q5NzJkNzQ1NDhkZTkyZDhh
MTMzZS4uY2ViYWEzNjNiZjUyN2JiYjM4ZTU2N2QzZTNkNDJiZjg0MzEwMmE3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9w
ZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVj
b3JhdGVkUHJvcGVydHkuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZERlY29y
YXRlZFByb3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHkgewogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSA9IFNWR0Fu
aW1hdGVkRGVjb3JhdGVkUHJvcGVydHk+CiAgICAgc3RhdGljIFJlZjxBbmltYXRlZFByb3BlcnR5
PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBzdGQ6Om1h
a2VfdW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+
PigpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGVkUHJvcGVydHkoY29u
dGV4dEVsZW1lbnQsIG1ha2VVbmlxdWU8RGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGUs
IFByb3BlcnR5VHlwZT4+KCkpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9w
ZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERlY29yYXRl
ZFByb3BlcnR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDI4ODc0MWIxMjkw
NWNiODUxNDMwNTQwOTBjNGUyYzkxMzliMzViZjMuLmQwNzM3YWNiYTMzMWZlMTIzNDdiODM0ZmY3
YWEzMDEwMGFkMTU2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTUwLDcg
KzUwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmkKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0
byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1h
dGVkQW5nbGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0Fu
aW1hdGVkQm9vbGVhbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQm9vbGVhbkFu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
VkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkRW51bWVyYXRpb25B
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8CiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFu
aW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IgZmlu
YWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0EKIAogICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
QW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2Vy
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZExlbmd0aEFu
aW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgog
CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdBbmltYXRlZExlbmd0aD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNB
ZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMK
IAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUg
YW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9v
bCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3Ro
TW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTcyLDcgKzE3Miw3IEBAIGNsYXNzIFNWR0Fu
aW1hdGVkTnVtYmVyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG9yPFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVk
LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlz
QWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTg5LDcgKzE4OSw3
IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51
bWJlckxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckxpc3RBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZH
QW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQog
ICAgIAogcHJpdmF0ZToKQEAgLTIwNiw3ICsyMDYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBhdGhT
ZWdMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
PAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdD4mIGFuaW1hdGVkLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIyNCw3ICsy
MjQsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVgogcHVibGljOgogICAgIHN0YXRpYyBhdXRv
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0
ZWRQb2ludExpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
VkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
ICAgICAKIHByaXZhdGU6CkBAIC0yNDMsNyArMjQzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRPcmll
bnRUeXBlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
PFMKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yNjIsNyArMjYy
LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpbz4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yODEsNyArMjgxLDcg
QEAgY2xhc3MgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW0KIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRSZWN0PiYgYW5p
bWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5OCw3ICsyOTgs
NyBAQCBjbGFzcyBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0Fu
aW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRT
dHJpbmc+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRl
ZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTMzOCw3ICszMzgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRv
ciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0bwogcHVibGljOgogICAg
IHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBS
ZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBp
c0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFp
ckFuaW1hdG9ySW1wbC5oCmluZGV4IDRlZGEzNGM5YjE4ODhmZmQ2ZDNkNjYzMmNmMGNmNmQzM2E2
ZmE5ZTEuLjM5N2ZmMDkxNTk0MDBkMzNjMDUyYjExZDgyOGNiOGUzN2IzYzgwNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWly
QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBT
VkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVBhaXJBbmltYQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1h
dGVkMSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwg
YW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVPcmllbnRB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWEKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkSW50
ZWdlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTYsNyArMTU2LDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVBhaXJBbmltYXQKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYg
YW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwg
YW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0
ZUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVB
bmltYXRvci5oCmluZGV4IDY0YTY1YjE4NjJmZmI5Njk2MDNjNzE1NjA3YjU0NGY1NTZlMDA4M2Eu
LjAyMmVkZWRhODIxYjUzMzU1YjNmZGQzOTU4ZjI0MzY4MDE5YWFkN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaApAQCAt
NTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIENhbGNNb2RlIDogdWludDhfdCB7CiB9OwogCiBjbGFz
cyBTVkdBdHRyaWJ1dGVBbmltYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgU1ZHQXR0cmlidXRlQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKICAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1l
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbi5oCmluZGV4IDI2NGMzNmI2OTA3NGNjZjNlMmUyOWQyNjc3MjFjZjUzNzQ1NzAzMTEu
LmEzNWUyNTBhOWIxNTFmOWU4OTdmODVmNjM2N2MzODdkYmIzY2E1NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24u
aApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbiA6IHB1Ymxp
YyBTVkdEZWNvcmF0ZWRQcmltaXRpdmU8RGVjb3JhdGlvblR5cGUsIEVudQogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBFbnVtVHlwZSYgdmFsdWUpCiAgICAgewogICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8RGVjb3JhdGlvblR5cGU+Ojp2YWx1ZSwgIkRlY29yYXRp
b25UeXBlIGZvcm0gZW51bSBzaG91bGQgYmUgaW50ZWdyYWwuIik7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0aW9uPih2YWx1ZSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0aW9uPih2YWx1ZSk7CiAgICAg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHRGVjb3JhdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0RlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTRhYjAzNzBiOTQ3OWU1NTUwYmJiMTEwODczNDIz
NTMxMTY2NTA3MC4uYWIxNGYzY2JlNWE3ZmMyMGUxMzBmZGE5YmQ0ODc5N2RkZGQzZTg0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVy
dHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcm9w
ZXJ0eS5oCkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgRGVjb3JhdGlvblR5cGU+CiBjbGFzcyBTVkdEZWNvcmF0ZWRQcm9wZXJ0eSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHRGVjb3JhdGVkUHJv
cGVydHkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+U1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXggNDEyMTcyMjBiZGZjZmVmZjY3
YzE2MDkxM2FkMTRkNmI5OWJhMTQyYy4uNjhiMmUwYjExMzdhZGU4ZDM3ZjgwZTBlMjk4YjVkZTI0
ZDAxYTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJp
bWl0aXZlUHJvcGVydHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFz
cyBTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yIDogcHVibGljIFNWR1Byb3BlcnR5QW5pbWF0
b3I8QW5pbWF0aW9uRnVuY3RpbwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVy
dHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wg
aXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUHJpbWl0aXZl
UHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAg
ICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5
LmgKaW5kZXggYWQ1MGQ0MjM2Mjk2OTQyZDFkYzg3MThhMmRhOGU2YWRmOGQxYmNjYi4uNWUzMDE4
ZjVhNDAyYTljN2YxMjlkNDFkNDE5YWM1ZTk0OWZlZTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5o
CkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSgpID0gZGVmYXVsdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1h
dG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0
eUFuaW1hdG9ySW1wbC5oCmluZGV4IDExODg4NmM0ZjhiYjcyMzZhNDQ2ZmZhZDAzODY5ZmYwYjBk
Y2RlOTUuLmZkM2RjOTYwZmZhN2QzMTI5MDEzN2Q0NTJjZGUxYTI4NzlhN2VkYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRv
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3Bl
cnR5QW5pbWF0b3JJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHTGVuZ3RoQW5pbWF0
b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yPFNWR0xlbmd0aCwgU1ZH
QW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVP
dGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAg
dm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmlt
YXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVy
dHlMaXN0QW5pbWF0b3JJbXBsLmgKaW5kZXggNWVlOGFjM2QwZjRlMTJjNjJhNWVmYzAwZmY1M2I1
OTBlNDAwZjM2OC4uYWU5NGUyOWVkNGI4NjEzYjk5Y2Q5NzQ4NmVkMGIwNjI4MjZjMDJkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxp
c3RBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNW
R0xlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5TGlzdEFu
aW1hdG9yPFNWR0xlbmd0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUo
cHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVu
Z3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVP
dGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50
KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAK
aW5kZXggYzExMzFkMjViMzg4YmJhODM2NjUzZDI5NzA4ZTZhNWJiZTRiZGZjNC4uMjQzNzg5YmI5
ZDI3OWE2ZTg1M2UwODY0NGI2NGJlZTg1MWU1ZWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC0yMzEsNiArMjMxLDcgQEAgdm9pZCBJbnRlcm5h
bFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyYgc2V0dGluZ3MpCiB9CiAKIGNs
YXNzIEludGVybmFsU2V0dGluZ3NXcmFwcGVyIDogcHVibGljIFN1cHBsZW1lbnQ8UGFnZT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEludGVy
bmFsU2V0dGluZ3NXcmFwcGVyKFBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9pbnRlcm5hbFNldHRp
bmdzKEludGVybmFsU2V0dGluZ3M6OmNyZWF0ZShwYWdlKSkgeyB9CkBAIC0yNTIsNyArMjUzLDcg
QEAgY29uc3QgY2hhciogSW50ZXJuYWxTZXR0aW5nczo6c3VwcGxlbWVudE5hbWUoKQogSW50ZXJu
YWxTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShQYWdlKiBwYWdlKQogewogICAgIGlm
ICghU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSkKLSAgICAg
ICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCksIHN0
ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2UpKTsKKyAgICAgICAg
U3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCksIG1ha2VV
bmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2UpKTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBh
Z2UsIHN1cHBsZW1lbnROYW1lKCkpKS0+aW50ZXJuYWxTZXR0aW5ncygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTE3OGI0OTY4NTg3NTUxYmYwNzA0ZDgzMDIw
NTYyZGQxMmRmNGViYi4uNjJlNzM0OWExY2ExNjYyZDA2MmM2MDc5Mzg5MmZjNzBmZjYwNTgxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIGNs
YXNzIEluc3BlY3RvclN0dWJGcm9udGVuZCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLCBwdWJsaWMKIH07CiAKIEluc3BlY3RvclN0dWJGcm9udGVuZDo6SW5zcGVj
dG9yU3R1YkZyb250ZW5kKFBhZ2UmIGluc3BlY3RlZFBhZ2UsIFJlZlB0cjxET01XaW5kb3c+JiYg
ZnJvbnRlbmRXaW5kb3cpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNw
ZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50
KCktPnBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
OjpTZXR0aW5ncz4oKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmluc3Bl
Y3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQo
KS0+cGFnZSgpLCBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRp
bmdzPigpKQogICAgICwgbV9mcm9udGVuZFdpbmRvdyhmcm9udGVuZFdpbmRvdy5jb3B5UmVmKCkp
CiB7CiAgICAgQVNTRVJUX0FSRyhmcm9udGVuZFdpbmRvdywgZnJvbnRlbmRXaW5kb3cpOwpAQCAt
NTY3LDcgKzU2Nyw3IEBAIEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lICYmIGZy
YW1lLT5wYWdlKCkgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgYXV0byBtb2Nr
UGF5bWVudENvb3JkaW5hdG9yID0gbmV3IE1vY2tQYXltZW50Q29vcmRpbmF0b3IoKmZyYW1lLT5w
YWdlKCkpOwotICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9y
KSk7CisgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1lbnRDb29yZGluYXRvcihtYWtlVW5p
cXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50Q29vcmRpbmF0b3IpKTsKICAgICB9
CiAjZW5kaWYKIH0KQEAgLTE0MTcsNyArMTQxNyw3IEBAIHZvaWQgSW50ZXJuYWxzOjplbmFibGVN
b2NrU3BlZWNoU3ludGhlc2l6ZXIoKQogICAgIGlmICghc3ludGhlc2lzKQogICAgICAgICByZXR1
cm47CiAKLSAgICBzeW50aGVzaXMtPnNldFBsYXRmb3JtU3ludGhlc2l6ZXIoc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4oc3ludGhlc2lzKSk7CisgICAgc3lu
dGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOwogfQogCiAjZW5kaWYKQEAgLTI0ODksNyArMjQ4
OSw3IEBAIFJlZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JG
cm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBhdXRvKiBpbnNwZWN0ZWRQYWdlID0gY29u
dGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBhdXRvKiB3aW5kb3cgPSBpbnNw
ZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICBhdXRv
IGZyb250ZW5kV2luZG93UHJveHkgPSB3aW5kb3ctPm9wZW4oKndpbmRvdywgKndpbmRvdywgdXJs
LCAiIiwgIiIpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIG1faW5zcGVjdG9yRnJvbnRlbmQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclN0dWJGcm9udGVuZD4oKmluc3BlY3RlZFBhZ2Us
IGRvd25jYXN0PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5kb3dQcm94eS0+d2luZG93KCkpKTsKKyAg
ICBtX2luc3BlY3RvckZyb250ZW5kID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+
KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHkt
PndpbmRvdygpKSk7CiAgICAgcmV0dXJuIGZyb250ZW5kV2luZG93UHJveHk7CiB9CiAKQEAgLTMw
MDksNyArMzAwOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0Vmlld0V4cG9z
ZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmCiAKIHZvaWQgSW50ZXJuYWxz
OjpzZXRQcmludGluZyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgcHJpbnRDb250ZXh0
Rm9yVGVzdGluZygpID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+KGZyYW1lKCkpOwor
ICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IG1ha2VVbmlxdWU8UHJpbnRDb250ZXh0Pihm
cmFtZSgpKTsKICAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCktPmJlZ2luKHdpZHRoLCBoZWln
aHQpOwogfQogCkBAIC0zNDQ4LDcgKzM0NDgsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxlQXV0
b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiB2b2lkIElu
dGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0oKQogewotICAgIExlZ2FjeUNETTo6cmVnaXN0ZXJD
RE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxM
ZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAorICAgIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5
KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lNb2NrQ0RNPihj
ZG0pOyB9LAogICAgICAgICBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5
TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk7CiB9CiAKQEAgLTQyNDEsNyAr
NDI0MSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1pY3JvVGFzayhpbnQgdGVzdE51bWJlcikK
ICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG1pY3JvdGFz
ayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFz
a1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1lbnQsIHRlc3ROdW1i
ZXJdKCkgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFj
a01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqZG9jdW1lbnQs
IFtkb2N1bWVudCwgdGVzdE51bWJlcl0oKSB7CiAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWFrZVN0cmlu
ZygiTWljcm9UYXNrICMiLCB0ZXN0TnVtYmVyLCAiIGhhcyBydW4uIikpOwogICAgIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAppbmRleCA2NDI4N2QyMzlhZjU3
M2U5MjAzZDI1ODQzMWIyNzNjN2I4NzQ5MDA2Li42MDI3MmQzNDk3ZjRiODY1Y2RiMDM3MGZlNDFk
M2Q2ZmJkZThiN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1v
Y2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAK
QEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9ja0NETVNl
c3Npb24gOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVu
dCopOwogICAgIHZpcnR1YWwgfk1vY2tDRE1TZXNzaW9uKCkgPSBkZWZhdWx0OwpAQCAtNzMsNyAr
NzQsNyBAQCBib29sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeU1v
Y2tDRE06OmNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE1TZXNzaW9uPihjbGllbnQpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE1TZXNzaW9uPihjbGllbnQpOwogfQogCiBzdGF0aWMg
VWludDhBcnJheSogaW5pdERhdGFQcmVmaXgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9MZWdhY3lNb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1v
Y2tDRE0uaAppbmRleCAyNGI5YjgwMDhjNGY1MTliNGE2NjZlYzZkMTUyNWFjNjJlYzFjMzBhLi5i
OTNhZWI5M2ZmNjMyOWU1MTU0N2MxM2ZmNzZhNjkyZWU2YTcxODZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBMZWdhY3lDRE07CiAKIGNsYXNzIExlZ2FjeU1vY2tDRE0gOiBwdWJsaWMgQ0RN
UHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgTGVnYWN5TW9ja0NETShMZWdhY3lDRE0qIGNkbSkKICAgICAgICAgOiBt
X2NkbShjZG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4
IDU2Nzk2ZWU5MDBiYmYzYjZjYzA1Y2Y2YTIyOTZlZmQ0M2I5ZWY3YjYuLmNlNWQ4ZjdkNmJkZjM4
YjU5MjIwOTMwMmE2ZTZkNzFiMzY5NjYzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6
c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYgdHlwZXMpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxDRE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIo
KnRoaXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0cigqdGhp
cykpOwogfQogCiBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3Rv
cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggMzM5NmNkMDJh
ZDAyZGQxNGU5MmYxNTc5ZTI3NTE2ZTZiYzNmNDI5OC4uMzk5MDliOTMwM2E5NGM5MzY4ZWFhMGY2
MjVmNGI2N2U1MjUwNTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
aApAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIE1vY2tDRE1GYWN0b3J5IDogcHVibGljIFJlZkNv
dW50ZWQ8TW9ja0NETUZhY3Rvcnk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8CiB9OwogCiBjbGFz
cyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2Nr
Q0RNPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NE
TShXZWFrUHRyPE1vY2tDRE1GYWN0b3J5Pik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTExODFkYWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2
NGQxY2Q4YTE4Ny4uNzc4YTkxOGE2YjkwNzU1Y2I4NmQzYWFhNzRmNzliM2U2MThkNGM5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgYm9vbCBNb2NrQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQgTW9ja0NvbnRl
bnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBkM2FjNWQ4N2QxOWUyYTg1MzYx
YzExNTcyY2YzMTFmMGM4M2IyNDViLi5kNDBkZWQxZGExMTk4Y2FhMzQ1OWQ2NzdlMWZlODRmNWJm
Yjk0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJv
dmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRl
ci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpzZXRNb2Nr
R2FtZXBhZERldGFpbHModW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgZ2EKICAgICBpZiAo
bV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0pCiAgICAgICAgIG1fbW9ja0dhbWVwYWRWZWN0b3Jb
aW5kZXhdLT51cGRhdGVEZXRhaWxzKGdhbWVwYWRJRCwgYXhpc0NvdW50LCBidXR0b25Db3VudCk7
CiAgICAgZWxzZQotICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9u
Q291bnQpOworICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XSA9IG1ha2VVbmlxdWU8
TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwog
fQogCiBib29sIE1vY2tHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3RNb2NrR2FtZXBhZCh1bnNpZ25l
ZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29s
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQu
Y3BwCmluZGV4IGRiZTkwNzNkNmFkZWJmYzUwMTU5Y2MyZWRiYjIyODNjY2QxN2JhODUuLjhmMTY0
N2MxZjMyMjUxODE2YzdjZjA4OTYxODJhZTM0MjM1YzUxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lk
IFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBl
IHR5cGUsIE1lc3NhZ2VMZXZlbAogewogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1
bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBt
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUo
YXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CiAgICAgbV93b3JrZXJH
bG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKaW5kZXggZjQzYmQyYTdh
NjA1OTM3MjdhZDBhNmE5MWRlY2Q2ZWJlYzcyMjY4OC4uNjkwM2JlNWVjMjVmYjkxZWZmNzc3NmU0
NDc2YWQ0ZWEyYmNlNzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50
UXVldWUuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFdvcmtlckV2ZW50UXVldWU6On5Xb3JrZXJFdmVu
dFF1ZXVlKCkKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyCiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRXZlbnREaXNwYXRjaGVy
KFJlZlB0cjxFdmVudD4mJiBldmVudCwgV29ya2VyRXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSkKICAg
ICAgICAgOiBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQpAQCAtODQsNyArODUsNyBAQCBib29sIFdv
cmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8qIGV2ZW50UHRyID0gZXZlbnQucHRyKCk7Ci0gICAg
YXV0byBldmVudERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4o
V1RGTW92ZShldmVudCksICp0aGlzKTsKKyAgICBhdXRvIGV2ZW50RGlzcGF0Y2hlciA9IG1ha2VV
bmlxdWU8RXZlbnREaXNwYXRjaGVyPihXVEZNb3ZlKGV2ZW50KSwgKnRoaXMpOwogICAgIG1fZXZl
bnREaXNwYXRjaGVyTWFwLmFkZChldmVudFB0ciwgZXZlbnREaXNwYXRjaGVyLmdldCgpKTsKICAg
ICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQucG9zdFRhc2soW2V2ZW50RGlzcGF0Y2hlciA9IFdU
Rk1vdmUoZXZlbnREaXNwYXRjaGVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGV2ZW50RGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJFdmVudFF1ZXVlLmgKaW5kZXggNjExNWVmNGExMzY1MmE2ZWFkMTBhZjM3Y2ZiNDk0Mjgy
MGMzY2IyYi4uZDg5NzNkNWJjYWUxN2I5NTUwMDQ0YzdlODAxNjA1Yjk5ZDU0OWFkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xh
c3MgV29ya2VyRXZlbnRRdWV1ZSBmaW5hbCA6IHB1YmxpYyBFdmVudFF1ZXVlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXb3JrZXJFdmVudFF1
ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJFdmVudFF1
ZXVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmlu
ZGV4IDdiYTZlZGI1MjA4ZjIyYzNmOGYxNmRlMjlkODI1Yjc3MWY2YzNlOWUuLmIxN2Q2NjM2M2Fj
MzU4MGU3YTM0NDAwODFhMmY3YzYzYTA3Mzg3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02Miw5ICs2Miw5IEBAIFdvcmtlckdsb2JhbFNj
b3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIG9yaWdpCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fdXNlckFn
ZW50KHVzZXJBZ2VudCkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkKLSAgICAsIG1fc2NyaXB0KHN0
ZDo6bWFrZV91bmlxdWU8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4odGhpcykpCi0gICAgLCBtX2lu
c3BlY3RvckNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyPigqdGhpcykpCi0gICAgLCBtX21pY3JvdGFza1F1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8TWlj
cm90YXNrUXVldWU+KG1fc2NyaXB0LT52bSgpKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8
V29ya2VyU2NyaXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBt
X21pY3JvdGFza1F1ZXVlKG1ha2VVbmlxdWU8TWljcm90YXNrUXVldWU+KG1fc2NyaXB0LT52bSgp
KSkKICAgICAsIG1faXNPbmxpbmUoaXNPbmxpbmUpCiAgICAgLCBtX3Nob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeShzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3kpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCkBAIC04Niw3ICs4Niw3IEBA
IFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgUmVm
PFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpCiAgICAgICAgIG9yaWdpbi0+Z3JhbnRTdG9yYWdlQWNj
ZXNzRnJvbUZpbGVVUkxzUXVpcmsoKTsKIAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNl
Y3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShvcmlnaW4pKSk7Ci0gICAgc2V0Q29u
dGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5
PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeSht
YWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsK
IH0KIAogV29ya2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCkBAIC0zNjIsOSAr
MzYyLDkgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChjYWxsU3RhY2spCi0g
ICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3Rh
Y2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdl
ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VU
eXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCks
IHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6
OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9n
LCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6YWRkTWVzc2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXgg
YTc1YzAxNTZjNTllMzhkZDk5OWQ2Y2VjMWRkZWVkZTIzYmUxODdiMy4uNGU5ZjUxOWFlZmVkZDI1
Zjg4M2Y2M2FjYTBhNDc4OWZmMDI3ZTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV29ya2VyR2xvYmFs
U2NvcGVQcm94eSYgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6Y3JlYXRlKFdvcmtlciYgd29ya2Vy
KQogCiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkoV29ya2VyJiB3
b3JrZXJPYmplY3QpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQod29ya2VyT2JqZWN0
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faW5zcGVjdG9yUHJveHkoc3RkOjpt
YWtlX3VuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2VyT2JqZWN0LmlkZW50aWZpZXIo
KSkpCisgICAgLCBtX2luc3BlY3RvclByb3h5KG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yUHJv
eHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQogICAgICwgbV93b3JrZXJPYmplY3QoJndv
cmtlck9iamVjdCkKIHsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KSAmJiBpc01haW5UaHJlYWQoKSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydAogICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CiAg
ICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7Cisg
ICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYm
IHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBiY2Q5
NGU2YWMwNDAzYWNkNmE1NGJhYzQxZmFiNDFlNWJmNTUyN2RhLi5iZmFjOTU5MmRmYWE3OTIxMDA2
NWIzNDU5YmQyMjE2MTk1Nzg0ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVu
TG9vcC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgTW9kZVByZWRpY2F0ZSB7CiB9OwogCiBX
b3JrZXJSdW5Mb29wOjpXb3JrZXJSdW5Mb29wKCkKLSAgICA6IG1fc2hhcmVkVGltZXIoc3RkOjpt
YWtlX3VuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKKyAgICA6IG1fc2hhcmVkVGltZXIobWFr
ZVVuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKIHsKIH0KIApAQCAtMjUwLDEyICsyNTAsMTIg
QEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYgdGFzaykKIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIHsKLSAgICBtX21lc3NhZ2VRdWV1
ZS5hcHBlbmRBbmRLaWxsKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVm
YXVsdE1vZGUoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwobWFrZVVuaXF1
ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKSk7CiB9CiAKIHZvaWQgV29ya2Vy
UnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgbW9kZSkpOworICAgIG1fbWVzc2Fn
ZVF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsKIH0K
IAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0RGVidWdnZXJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCmluZGV4IDE5OTEyZjAyNzVmZWExOTQ4MDU0MmEwNzA5NzVkY2IwYzdkMjgw
MzUuLjIyOGYzZDE3ZmYwMDIyZTYyZTYzNjQ1MzJkNTU2Yjk1MDdhMDE4ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dAogCiAgICAgQVNTRVJUKHNjcmlwdFJlcXVlc3Qu
aHR0cE1ldGhvZCgpID09ICJHRVQiKTsKIAotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihXVEZNb3ZlKHNjcmlwdFJlcXVlc3QpKTsKKyAgICBhdXRv
IHJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92ZShzY3JpcHRSZXF1
ZXN0KSk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBjb25zdCBVUkwmIFdvcmtlclNjcmlwdExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25z
dAogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6
OmNyZWF0ZVJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIp
CiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+
KG1fdXJsKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4o
bV91cmwpOwogICAgIHJlcXVlc3QtPnNldEhUVFBNZXRob2QoIkdFVCJfcyk7CiAgICAgcmVxdWVz
dC0+c2V0SW5pdGlhdG9ySWRlbnRpZmllcihpbml0aWF0b3JJZGVudGlmaWVyKTsKICAgICByZXR1
cm4gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAx
Zjc1NjE4NmEyMGYwMTY5ZTQ3ODQzOTUxYmVlMzY4N2UwMDI0ZmJhLi4zYzM4NThiZGE5YjQ0YjU3
ZmFkYjM5ZWZhMmUwYTBmM2EzMDQxMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQo
Y29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW4KICAg
ICAsIG1fd29ya2VyRGVidWdnZXJQcm94eSh3b3JrZXJEZWJ1Z2dlclByb3h5KQogICAgICwgbV93
b3JrZXJSZXBvcnRpbmdQcm94eSh3b3JrZXJSZXBvcnRpbmdQcm94eSkKICAgICAsIG1fcnVudGlt
ZUZsYWdzKHJ1bnRpbWVGbGFncykKLSAgICAsIG1fc3RhcnR1cERhdGEoc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0VVJMLCBuYW1lLCBpZGVudGlmaWVyLCB1
c2VyQWdlbnQsIGlzT25saW5lLCBzb3VyY2VDb2RlLCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5LCB0b3BPcmlnaW4sIHRpbWVPcmlnaW4sIHNlc3Npb25JRCkpCisgICAgLCBtX3N0
YXJ0dXBEYXRhKG1ha2VVbmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNjcmlwdFVSTCwg
bmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgc291cmNlQ29kZSwgc3RhcnRN
b2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNz
aW9uSUQpKQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgICwgbV9pZGJDb25uZWN0
aW9uUHJveHkoY29ubmVjdGlvblByb3h5KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXgg
YjJkMjYxNWExMjYzZDE2MjY2MTgyMDA0NjQ4ZjkwZWRhNjkyMDZiNS4uNTljNzFjNGQxNDc2Mjdj
ZmQ5ZDMxYTQ1ZWFiY2NjZGFlMTAzZTc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRlcmVmRXZlbnRUYXJnZXQoKQog
YXV0byBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSgpIC0+IFJlYWR5UHJvbWlzZSYKIHsK
ICAgICBpZiAoIW1fcmVhZHlQcm9taXNlKSB7Ci0gICAgICAgIG1fcmVhZHlQcm9taXNlID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZWFkeVByb21pc2U+KCk7CisgICAgICAgIG1fcmVhZHlQcm9taXNlID0g
bWFrZVVuaXF1ZTxSZWFkeVByb21pc2U+KCk7CiAKICAgICAgICAgaWYgKG1faXNTdG9wcGVkIHx8
ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxh
dGl2ZVNjcmlwdFVSTCwgY28KICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlw
ZTo6UmVnaXN0ZXI7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gb3B0aW9uczsK
IAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRo
aXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpv
YihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBX
VEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVt
b3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZQog
CiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZVJlZ2lzdHJhdGlv
bjogVW5yZWdpc3RlcmluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRh
dGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVs
ZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxT
ZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRh
KSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlv
bihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwg
UmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYg
c2NvcGVVUkwsIGNvbnN0IFVSTCYKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVwZGF0aW5nIHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6
ICUiIFBSSXU2NCwgam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIAotICAgIHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYj4o
KnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVs
ZUpvYihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c2NoZWR1bGVKb2Ioc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYgam9iKQpAQCAt
MjY5LDcgKzI2OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0
aW9uKGNvbnN0IFN0cmluZyYgY2xpZW50VVJMLCBSZWY8RGVmZXJyCiAgICAgfQogCiAgICAgdWlu
dDY0X3QgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyID0gKyttX2xhc3RQZW5kaW5nUHJvbWlzZUlk
ZW50aWZpZXI7Ci0gICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMp
KTsKKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4o
V1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwogICAgIG1fcGVu
ZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGlu
Z1Byb21pc2UpKTsKIAogICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0
SWRlbnRpZmllcigpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAg
ICAgfQogCiAgICAgdWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyID0gKyttX2xhc3RQ
ZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpKTsKKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQ
ZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cykpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIs
IFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKIAogICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIg
PSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggN2FjOWM5ODM4
M2IwNGI2ZWI4OWM5OWYyMjA4ODVlNzY3Mzk3NmMzZi4uM2JkNmI5YjA2ZTU3Mzc2NjViNThmOTY5
ZTI5M2QwZmVkNjJjM2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0xMzksNiArMTM5LDcgQEAgY2xh
c3MgU2VydmljZVdvcmtlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgQWMKICNlbmRpZgogCiAgICAgc3RydWN0IFBlbmRpbmdQcm9taXNl
IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5k
aW5nUHJvbWlzZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlZjxQZW5kaW5nQWN0
aXZpdHk8U2VydmljZVdvcmtlckNvbnRhaW5lcj4+JiYgcGVuZGluZ0FjdGl2aXR5KQogICAgICAg
ICAgICAgOiBwcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCiAgICAgICAgICAgICAsIHBlbmRpbmdB
Y3Rpdml0eShXVEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmlu
ZGV4IGVkYmM4ZjkxZWU0MzQ2MmE1MDQ5ZTg4YzFjZWY1ZWZhNzYyYzk4ZmYuLmNiNWMyMjFmYzk0
ODhkN2MwMDcyOTgzYTE1Nzg5NWRjYThjNmNlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBA
IC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vjb24KIAogICAgIHNlcnZpY2VX
b3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKIAotICAgIG1fcGVuZGluZ1Nl
cnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVudGlmaWVyLCBzdGQ6Om1ha2Vf
dW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVy
LCB0aW1lb3V0KSk7CisgICAgbV9wZW5kaW5nU2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVz
dHMuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVx
dWVzdD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQpKTsKIAogICAgIGF1dG8mIHRocmVhZCA9
IHNlcnZpY2VXb3JrZXItPnRocmVhZCgpOwogICAgIHRocmVhZC5zdG9wKFt0aGlzLCBpZGVudGlm
aWVyLCBzZXJ2aWNlV29ya2VyID0gV1RGTW92ZShzZXJ2aWNlV29ya2VyKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGM2MTczNjEzY2FjYjU1ZDY5MDU4YmUy
YzdlMmE1ZmJkODUyOWM3NzYuLjllNzI4YzNhN2FmYTQ2Yzk0OWNkY2JlMGQ2ZmViMDRhOTUzMWNj
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMTE0LDcgKzEx
NCw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgYWxsU2VydmljZVdvcmtlclRocmVh
ZFByb3hpZXMoKS5hZGQodGhpcyk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAg
ICBtX3JlbW90ZURlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJEZWJ1
Z2dhYmxlPigqdGhpcywgZGF0YSk7CisgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlID0gbWFrZVVuaXF1
ZTxTZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEpOwogICAgIG1fcmVtb3RlRGVi
dWdnYWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCh0cnVlKTsKICAgICBtX3JlbW90ZURl
YnVnZ2FibGUtPmluaXQoKTsKICNlbmRpZgpAQCAtMTY4LDcgKzE2OCw3IEBAIFJlZjxDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3Rv
cmFnZUNvbm5lY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGZXRjaExvYWRlcj4gU2VydmljZVdvcmtl
clRocmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiBjbGllbnQs
IGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsKLSAgICBhdXRvIGxvYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RmV0Y2hMb2FkZXI+KGNsaWVudCwgbnVsbHB0cik7CisgICAgYXV0byBsb2FkZXIgPSBtYWtl
VW5pcXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOwogICAgIGxvYWRlci0+c3RhcnRM
b2FkaW5nQmxvYlVSTChtX2RvY3VtZW50LCBibG9iVVJMKTsKICAgICBpZiAoIWxvYWRlci0+aXNT
dGFydGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAppbmRleCAxZGQzNDEzNzRjNDQ0NWEzNDk3MzJkNDRmZGVkMTU0Nzc0ODFjMGI0Li45MmNi
YTA4NWQzYWNmNmEyOTNmMDZiNTVkZjQ1ZjRkZmM3OTNmYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkKIAogICAgIFNR
TGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRGlyZWN0b3J5RXhpc3RzKG1fZGF0YWJhc2VE
aXJlY3RvcnkpOwogCi0gICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0
YWJhc2U+KCk7CisgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7
CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuKGZ1bGxGaWxlbmFtZSkpIHsKICAgICAgICAgZXJy
b3JNZXNzYWdlID0gIkZhaWxlZCB0byBvcGVuIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSI7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKaW5kZXggZmU1Y2M4NTllNjVhNmUzMmE3OGI1Mjg5NzVhMTMyZTc0YmYx
Nzg3ZS4uOTMyNmEzYmFjNjU5YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAg
LTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUo
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICAvLyBQYWdlcyBzaG91bGQgbm90
IGhhdmUgYmVlbiBhYmxlIHRvIG1ha2UgYSBuZXcgcmVnaXN0cmF0aW9uIHRvIHRoaXMga2V5IHdo
aWxlIHRoZSBpbXBvcnQgd2FzIHN0aWxsIHRha2luZyBwbGFjZS4KICAgICBBU1NFUlQoIW1fcmVn
aXN0cmF0aW9ucy5jb250YWlucyhkYXRhLnJlZ2lzdHJhdGlvbi5rZXkpKTsKIAotICAgIGF1dG8g
cmVnaXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRo
aXMsIGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2Fj
aGUsIGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CisgICAgYXV0
byByZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywg
ZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwg
ZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKICAgICByZWdpc3Ry
YXRpb24tPnNldExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1l
KTsKICAgICBhdXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKICAgICBh
ZGRSZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKQEAgLTMwNCw3ICszMDQsNyBA
QCBTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3Rv
cmUsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbgogewogICAgIEFTU0VSVCghcmVnaXN0cmF0aW9uRGF0
YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwog
ICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgbV9yZWdpc3RyYXRp
b25TdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0cmF0aW9uU3RvcmU+KCp0aGlzLCBXVEZN
b3ZlKHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5KSk7CisgICAgICAgIG1fcmVnaXN0cmF0
aW9uU3RvcmUgPSBtYWtlVW5pcXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92ZShy
ZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOwogICAgIGVsc2UKICAgICAgICAgcmVnaXN0
cmF0aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwogCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBT
V1NlcnZlcjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAg
IC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQgam9iLgogCiAgICAgYXV0byYg
am9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCks
IFt0aGlzLCAmam9iRGF0YV0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTV1Nl
cnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lz
dHJhdGlvbktleSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBqb2JRdWV1ZS5l
bnF1ZXVlSm9iKGpvYkRhdGEpOwpAQCAtODIwLDcgKzgyMCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3Jp
Z2luLCBTCiAKICAgICBpZiAoY2xpZW50SWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAg
IEFTU0VSVCghaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIpOwot
ICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9t
YWluLCB0aGlzXSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29y
a2Vyc1RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oW2NsaWVudE9yaWdpbiwgY2xpZW50UmVnaXN0
cmFibGVEb21haW4sIHRoaXNdIHsKICAgICAgICAgICAgIFZlY3RvcjxTV1NlcnZlcldvcmtlcio+
IHdvcmtlcnNUb1Rlcm1pbmF0ZTsKICAgICAgICAgICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9y
dW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAod29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPm9yaWdpbigpID09IGNsaWVudE9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDhiNjhiNzBmMDFkMjUyNzhhZjUzOGFiY2U5MTRi
OGM3YzY4YWI4MzcuLmRjYWY1YThhNzEwZjc5NDQ2NDdkZTNjZDVlOTgwNjM5OWE4ZmQ1MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJK
b2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JR
dWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAg
ICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0VXBkYXRlVmlhQ2FjaGUoam9iLnJlZ2lzdHJhdGlv
bk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUpOwogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogRm91bmQgcmVnaXN0
cmF0aW9uICVsbHUgZm9yIGpvYiAlcyBidXQgaXQgbmVlZHMgdXBkYXRpbmciLCB0aGlzLCByZWdp
c3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIG5l
d1JlZ2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1f
c2VydmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRl
VmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CisgICAgICAgIGF1dG8gbmV3
UmVnaXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIs
IG1fcmVnaXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNo
ZSwgam9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJMKTsKICAgICAgICAgbV9zZXJ2ZXIuYWRkUmVn
aXN0cmF0aW9uKFdURk1vdmUobmV3UmVnaXN0cmF0aW9uKSk7CiAKICAgICAgICAgUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6
IE5vIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiBmb3Igam9iICVzLCBjb25zdHJ1Y3RpbmcgYSBuZXcg
b25lLiIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwCmluZGV4IDJiN2EyZmUzZmJiNThkNGM0ZWUzOGZjMDRiNTM2YTNlNGUwYzc3ZTcu
LjNiZTc1N2UwMmFlMTlkNzU5MGVjMDdiM2ZhNGNiZTdkNjNjZTgxZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEz
NSw3ICsxMzUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
cmVnaXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiAgICAgICAgIFJlZlB0cjxKU0NT
U1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NT
UGFpbnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9iYWxPYmplY3QpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH0pOwogCi0gICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50
LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1
dEFyZ3VtZW50cykpOworICAgICAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IG1ha2VVbmlxdWU8
UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxl
YXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1
bWVudHMpKTsKICAgICAgICAgcGFpbnREZWZpbml0aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUo
cGFpbnREZWZpbml0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA5NmNmMTg1MGIwY2FlM2FhZTk2MDdk
YjEzNDE2NzM1OGI2NzFjMWQ5Li42NGZjNzhlZWU3ODgwZWQ5YmVkY2ZjMmE3MDEyY2E2ZWMzY2Ux
YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUg
OiBwdWJsaWMgV29ya2xldEdsb2JhbFNjb3BlIHsKIAogICAgIC8vIEFsbCBwYWludCBkZWZpbml0
aW9ucyBtdXN0IGJlIGRlc3Ryb3llZCBiZWZvcmUgdGhlIHZtIGlzIGRlc3Ryb3llZCwgYmVjYXVz
ZSBvdGhlcndpc2UgdGhleSB3aWxsIHBvaW50IHRvIGZyZWVkIG1lbW9yeS4KICAgICBzdHJ1Y3Qg
UGFpbnREZWZpbml0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBhaW50RGVmaW5pdGlvbj4g
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBhaW50
RGVmaW5pdGlvbihjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWludENv
bnN0cnVjdG9yLCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBpbnB1
dFByb3BlcnRpZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1bWVudHMpOwogCiAgICAgICAg
IGNvbnN0IEF0b21TdHJpbmcgbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXRDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4ZThhMmE0Y2EyM2UyYjkzZGExMzRhZmI1MmQw
ZTk1NzZjNDAyMTU5Li4zZjA5MjU2M2JkNTJhYzRhNGJiZWRhNDE1YzIzN2EyZDFkZmRhZGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlCiB7CiAgICAgU3RyaW5n
IG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1l
c3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVs
LCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKKyAgICBhdXRvIG1lc3Nh
Z2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMp
LCBleGVjKTsKICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZN
b3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAKaW5kZXggNGJiNzg4ZWE2M2NkNmJiZGM1MzI1ODdlMDUxMGQ1MzI1MjYw
NmZmYS4uY2VmODJmN2I0MTFkMjE4YzczM2Q2NmZhOWRiYTJkOTMxMjVhZTgyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrbGV0R2xvYmFsU2NvcGUpOwog
V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50
LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKICAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIo
ZG9jdW1lbnQpKQogICAgICwgbV9zZXNzaW9uSUQobV9kb2N1bWVudC0+c2Vzc2lvbklEKCkpCi0g
ICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0
aGlzKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+
KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgp
KQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkp
CkBAIC02Miw3ICs2Miw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3Bl
KERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvCiAgICAgQVNTRVJUKGRv
Y3VtZW50LnBhZ2UoKSk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9y
aWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlSZWYoKSkpOwotICAgIHNldENvbnRl
bnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4o
VVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9s
aWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX2NvZGUudXJsKCkg
fSwgKnRoaXMpKTsKIH0KIAogV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3Bl
KCkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29s
ZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lcwogewogICAgIGlm
ICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBt
ZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkp
OworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVz
c2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7CiB9CiAKIHZvaWQgV29ya2xl
dEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVx
dWVzdElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMWNlZTllYjM0MjFjZDk5YTU2Yzg4NjBiOGVjZGQ0
NTk2ZjgwZDJkZS4uNzEzMzkwMGYxNzFlZWY0MTU2NzNkNGU5MGQ1Y2Y3N2NmZWJjMmJiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Omlu
aXRTY3JpcHRXaXRoU3ViY2xhc3MoKQogICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdy
YXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAg
ICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90
eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3Bl
V3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmts
ZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIG1fY29uc29sZUNs
aWVudCA9IG1ha2VVbmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxT
Y29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50
KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxFcnJvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAppbmRleCBi
MDIxY2NlMTUzYzMxOTI5NTBhMmJmNzdkODA5YTI4NDdhYjBmMGMxLi5hNjMyN2I5ZGZmMWI3NmJi
NTgyYzYzNjAzODE1MjQyOGM3MWFhODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBY
TUxFcnJvcnMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFhNTEVycm9ycyhEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCA4ZTQ0MjRlZjI0NmEzNmE0ZGI4MTNjMzA2Y2IzMjFmYTRmZWEyNTEzLi4z
NjViNTE1NmM0M2Y5YTEwMGIyODlhMmI3YWIzNDU0NjEyNzNjNDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBTdHJpbmcgWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlVVJMKCkgY29uc3QKIFhNTEh0dHBSZXF1ZXN0VXBsb2FkJiBYTUxIdHRw
UmVxdWVzdDo6dXBsb2FkKCkKIHsKICAgICBpZiAoIW1fdXBsb2FkKQotICAgICAgICBtX3VwbG9h
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+KCp0aGlzKTsKKyAgICAg
ICAgbV91cGxvYWQgPSBtYWtlVW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3VwbG9hZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5j
cHAKaW5kZXggYWQ3ZTEzYzhhMTk0YWQ1NmQ2MjM0MjAwMDE3Y2JhNzdmZTgwYjc0Mi4uYTkyNDQw
OWVlNDZjNTNlNzNiMjdhNDlhMTllZmU5Njk3MjE2NzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhGdW5jdGlvbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1do
aXRlc3BhY2UoVUNoYXIgYykKICAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMg
PT0gJ1xyJyB8fCBjID09ICdcdCc7CiB9CiAKLSNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFU
T1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlv
biMjU3VmZml4KCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQor
I2RlZmluZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihTdWZmaXgpIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNTdWZmaXgoKSB7IHJldHVybiBtYWtlVW5p
cXVlPEZ1biMjU3VmZml4PigpOyB9CiAKIGNsYXNzIEludGVydmFsIHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4IDA0NjE1YzNkNWYwMzEzMTA2OTM4ZmFh
MDVmYjM5Yzk5Y2UxMjNiNWMuLmMxYmJjNTRlYjgzMDE2OTExOWM4NjgzMWE0ZjJhNmU3YzAwNDU2
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcApAQCAtMjYzLDcgKzI2Myw3
IEBAIGJvb2wgZXZhbHVhdGVQcmVkaWNhdGUoY29uc3QgRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikK
IAogICAgIC8vIGZvb1szXSBtZWFucyBmb29bcG9zaXRpb24oKT0zXQogICAgIGlmIChyZXN1bHQu
aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVu
Y3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBzdGQ6Om1ha2VfdW5pcXVlPE51bWJlcj4ocmVz
dWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOworICAgICAgICByZXR1cm4g
RXFUZXN0T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlvbjo6Y3JlYXRlKCJwb3NpdGlvbiJfcyks
IG1ha2VVbmlxdWU8TnVtYmVyPihyZXN1bHQudG9OdW1iZXIoKSkpLmV2YWx1YXRlKCkudG9Cb29s
ZWFuKCk7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbigpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggZWMyYzZhZTA0NTlhMDY5MjU2
YTY2MmY3MmM4NzI2N2ZlYTFhNDViZC4uNjMwNGU5MjgxMWE5MzRmN2RlNzRjOGM5NGIyYjY5YzAw
NGVhNDk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4
c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3Bw
CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldHMo
KQogCiB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZikKIHsKLSAgICBhdXRvIGNoaWxkUnVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8WFNMSW1wb3J0UnVs
ZT4odGhpcywgaHJlZik7CisgICAgYXV0byBjaGlsZFJ1bGUgPSBtYWtlVW5pcXVlPFhTTEltcG9y
dFJ1bGU+KHRoaXMsIGhyZWYpOwogICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkUnVsZS5yZWxl
YXNlKCkpOwogICAgIG1fY2hpbGRyZW4ubGFzdCgpLT5sb2FkU2hlZXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZTAyNGVm
YjU2YmY2NTJiOTBhOWExZDRmODEzMDY0OTE4MzBkOGUwZi4uNzA0ODg5MmE1YWEwZWY5YTU1ZmJk
MjQwOGNkMTc5MTRkMDJhOWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjphcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5wdXRTb3VyY2UpCiB2b2lkIFhN
TERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBj
b25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24gcG9zaXRpb24pCiB7CiAgICAgaWYgKCFtX3htbEVy
cm9ycykKLSAgICAgICAgbV94bWxFcnJvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFhNTEVycm9ycz4o
KmRvY3VtZW50KCkpOworICAgICAgICBtX3htbEVycm9ycyA9IG1ha2VVbmlxdWU8WE1MRXJyb3Jz
PigqZG9jdW1lbnQoKSk7CiAgICAgbV94bWxFcnJvcnMtPmhhbmRsZUVycm9yKHR5cGUsIG0sIHBv
c2l0aW9uKTsKICAgICBpZiAodHlwZSAhPSBYTUxFcnJvcnM6Ondhcm5pbmcpCiAgICAgICAgIG1f
c2F3RXJyb3IgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGI5MzEwMWI4YWFjNDgzOWEzOWJiNTRi
MmI4OWRlODk4Yzc5Yjc1YWIuLmI5OWIzMDg5NzM4NTUwOWViYWIwNDUyMTM5NzUzOWIwNzBjZWU3
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNr
cyB7CiBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKGNvbnN0
IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciogeG1sUHJlZml4LCBjb25zdCB4
bWxDaGFyKiB4bWxVUkksIGludCBudW1OYW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyKiogbmFtZXNw
YWNlcywgaW50IG51bUF0dHJpYnV0ZXMsIGludCBudW1EZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIq
KiBhdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91
bmlxdWU8UGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigpOwogCiAg
ICAgICAgIGNhbGxiYWNrLT54bWxMb2NhbE5hbWUgPSB4bWxTdHJkdXAoeG1sTG9jYWxOYW1lKTsK
ICAgICAgICAgY2FsbGJhY2stPnhtbFByZWZpeCA9IHhtbFN0cmR1cCh4bWxQcmVmaXgpOwpAQCAt
MTIyLDEyICsxMjIsMTIgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFw
cGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKCkKICAgICB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4oKSk7Cisg
ICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50TlND
YWxsYmFjaz4oKSk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2so
Y29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s+KCk7CisgICAgICAg
IGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s+KCk7
CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAgIGNh
bGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxi
YWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKGNv
bnN0IHhtbENoYXIqIHRhcmdldCwgY29uc3QgeG1sQ2hhciogZGF0YSkKICAgICB7Ci0gICAgICAg
IGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25DYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVu
ZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNr
LT50YXJnZXQgPSB4bWxTdHJkdXAodGFyZ2V0KTsKICAgICAgICAgY2FsbGJhY2stPmRhdGEgPSB4
bWxTdHJkdXAoZGF0YSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNr
cyB7CiAKICAgICB2b2lkIGFwcGVuZENEQVRBQmxvY2tDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBz
LCBpbnQgbGVuKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9
IG1ha2VVbmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxs
YmFjay0+cyA9IHhtbFN0cm5kdXAocywgbGVuKTsKICAgICAgICAgY2FsbGJhY2stPmxlbiA9IGxl
bjsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZv
aWQgYXBwZW5kQ29tbWVudENhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMpCiAgICAgewotICAgICAg
ICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNr
PigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ29tbWVudENh
bGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RyZHVwKHMpOwogCkBAIC0x
NjYsNyArMTY2LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVu
ZEludGVybmFsU3Vic2V0Q2FsbGJhY2soY29uc3QgeG1sQ2hhciogbmFtZSwgY29uc3QgeG1sQ2hh
ciogZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciogc3lzdGVtSUQpCiAgICAgewotICAgICAgICBh
dXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxs
YmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0ludGVy
bmFsU3Vic2V0Q2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPm5hbWUgPSB4bWxTdHJk
dXAobmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbElEID0geG1sU3RyZHVwKGV4dGVy
bmFsSUQpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAg
ICAgdm9pZCBhcHBlbmRFcnJvckNhbGxiYWNrKFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNv
bnN0IHhtbENoYXIqIG1lc3NhZ2UsIE9yZGluYWxOdW1iZXIgbGluZU51bWJlciwgT3JkaW5hbE51
bWJlciBjb2x1bW5OdW1iZXIpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjpt
YWtlX3VuaXF1ZTxQZW5kaW5nRXJyb3JDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFj
ayA9IG1ha2VVbmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJh
Y2stPm1lc3NhZ2UgPSB4bWxTdHJkdXAobWVzc2FnZSk7CiAgICAgICAgIGNhbGxiYWNrLT50eXBl
ID0gdHlwZTsKQEAgLTE5Nyw2ICsxOTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAog
cHJpdmF0ZToKICAgICBzdHJ1Y3QgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nQ2FsbGJhY2so
KSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTERvY3VtZW50UGFyc2Vy
KiBwYXJzZXIpID0gMDsKICAgICB9OwpAQCAtNTY0LDcgKzU2NSw3IEBAIGJvb2wgWE1MRG9jdW1l
bnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24pCiBYTUxE
b2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBGcmFt
ZVZpZXcqIGZyYW1lVmlldykKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVu
dCkKICAgICAsIG1fdmlldyhmcmFtZVZpZXcpCi0gICAgLCBtX3BlbmRpbmdDYWxsYmFja3Moc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAgICwgbV9wZW5kaW5nQ2FsbGJh
Y2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUo
JmRvY3VtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVs
b3dSYW5nZVBvc2l0aW9uKCkpCiB7CkBAIC01NzIsNyArNTczLDcgQEAgWE1MRG9jdW1lbnRQYXJz
ZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpCiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZy
YWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVudCwgUGFyc2VyQ29udGVudFBv
bGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KGZyYWdtZW50LmRvY3VtZW50KCksIHBhcnNlckNvbnRlbnRQb2xpY3kpCi0gICAgLCBtX3BlbmRp
bmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAgICwg
bV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAs
IG1fY3VycmVudE5vZGUoJmZyYWdtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRl
eHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3BhcnNpbmdGcmFnbWVu
dCh0cnVlKQpAQCAtMTMyOCw3ICsxMzI5LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9F
bmQoKQogICAgICAgICB4bWxUcmVlVmlld2VyLnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygp
OwogICAgIH0gZWxzZSBpZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsKICAgICAgICAgeG1sRG9jUHRy
IGRvYyA9IHhtbERvY1B0ckZvclN0cmluZyhkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLnRvU3RyaW5nKCksIGRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNl
KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2MpKTsKKyAgICAgICAgZG9jdW1l
bnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKG1ha2VVbmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2Mp
KTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUg
ZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IFhTTCBzdHlsZXNoZWV0
cy4KICAgICAgICAgZG9jdW1lbnQoKS0+YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc05vd0lmU2No
ZWR1bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2Uu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCAwNWJjOTUz
ZjdmMGRkYzc4N2IxZTYzMDQ4NzY5NmMyMDg1OWNhZTBmLi5kNjllMTQ5OTJkNTg2NzUxY2EwNDM0
MjYzNjJhNmY0MWMyNjk5ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZl
clNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAK
QEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dz
ZXIoVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vz
c2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7CisgICAgYXV0byBzZXNzaW9u
SG9zdCA9IG1ha2VVbmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3Qo
KSk7CiAgICAgYXV0byogc2Vzc2lvbkhvc3RQdHIgPSBzZXNzaW9uSG9zdC5nZXQoKTsKICAgICBz
ZXNzaW9uSG9zdFB0ci0+Y29ubmVjdFRvQnJvd3NlcihbdGhpcywgY2FwYWJpbGl0aWVzTGlzdCA9
IFdURk1vdmUoY2FwYWJpbGl0aWVzTGlzdCksIHNlc3Npb25Ib3N0ID0gV1RGTW92ZShzZXNzaW9u
SG9zdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9w
dGlvbmFsPFN0cmluZz4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwIGIvU291
cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKaW5kZXggN2EyMGI4OTQxYWZm
NzJhODUyYjc2ZjVjNTUxMDYyNjU0Nzc0YTFjYy4uMTc3YWE1NGYyMjI5N2FjMzE2MTRkMzUzYmU5
ZjNhNzlkMWFhYjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25I
b3N0R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5j
cHAKQEAgLTExMyw2ICsxMTMsNyBAQCBib29sIFNlc3Npb25Ib3N0Ojppc0Nvbm5lY3RlZCgpIGNv
bnN0CiB9CiAKIHN0cnVjdCBDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQ29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YShT
ZXNzaW9uSG9zdCogc2Vzc2lvbkhvc3QsIEdVbmlxdWVQdHI8Y2hhcj4mJiBkYnVzQWRkcmVzcywg
R0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5n
PiBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogc2Vzc2lvbkhvc3Qoc2Vz
c2lvbkhvc3QpCiAgICAgICAgICwgZGJ1c0FkZHJlc3MoV1RGTW92ZShkYnVzQWRkcmVzcykpCkBA
IC0xNzMsNyArMTc0LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3NlcihGdW5jdGlv
bjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21wbGUKICAgICB9LCB0aGlzKTsK
IAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGJ1c0FkZHJlc3MoZ19zdHJkdXBfcHJpbnRmKCJ0Y3A6
aG9zdD0lcyxwb3J0PSV1IiwgIjEyNy4wLjAuMSIsIHBvcnQpKTsKLSAgICBjb25uZWN0VG9Ccm93
c2VyKHN0ZDo6bWFrZV91bmlxdWU8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4odGhpcywgV1RG
TW92ZShkYnVzQWRkcmVzcyksIG1fY2FuY2VsbGFibGUuZ2V0KCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKSk7CisgICAgY29ubmVjdFRvQnJvd3NlcihtYWtlVW5pcXVlPENvbm5lY3RUb0Jy
b3dzZXJBc3luY0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxl
LmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQogCiB2b2lkIFNlc3Npb25I
b3N0Ojpjb25uZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0VG9Ccm93c2VyQXN5
bmNEYXRhPiYmIGRhdGEpCkBAIC0zNzEsNiArMzcyLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0
SUQKIH0KIAogc3RydWN0IE1lc3NhZ2VDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgbG9uZyBtZXNzYWdlSUQ7CiAgICAgU2Vzc2lvbkhvc3QqIGhvc3Q7
CiB9OwpAQCAtMzgxLDcgKzM4Myw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdlVG9C
YWNrZW5kKGxvbmcgbWVzc2FnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJU
KG1fY29ubmVjdGlvbklEKTsKICAgICBBU1NFUlQobV90YXJnZXQuaWQpOwogCi0gICAgYXV0byBt
ZXNzYWdlQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZUNvbnRleHQ+KE1lc3NhZ2VD
b250ZXh0IHsgbWVzc2FnZUlELCB0aGlzIH0pOworICAgIGF1dG8gbWVzc2FnZUNvbnRleHQgPSBt
YWtlVW5pcXVlPE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4dCB7IG1lc3NhZ2VJRCwgdGhp
cyB9KTsKICAgICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fZGJ1c0Nvbm5lY3Rpb24uZ2V0KCks
IG51bGxwdHIsCiAgICAgICAgIElOU1BFQ1RPUl9EQlVTX09CSkVDVF9QQVRILAogICAgICAgICBJ
TlNQRUNUT1JfREJVU19JTlRFUkZBQ0UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCmluZGV4IGI2MmYxMmUxODJm
MjFlYjhkNTEwNzRjYjI1NGQ3YjIxMmUwY2VkMTkuLmI0NDVlN2E2NWE0OGQwNzQ4YmQ3ZTkyMDVh
MzQ0MGY3ZjFhOTU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAyZTI5NmIy
OWY0M2E0ZmM4OGU3MDA5MzI0YTVlMjNiMGJlOWNkNTFjLi45MzAzZDJhZGMxNWVmNmZiMzEwYjZm
YjE2ZDA3MGNjODUzZmRjM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3Jp
bmdEaXNrKCkKICAgICBpZiAocmVzb3VyY2VMb2dQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+
KHJlc291cmNlTG9nUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
eworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJjZUxv
Z1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNz
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhp
c10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9maWxlTW9uaXRv
ciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHN0b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5
UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmICh0eXBlID09IEZpbGVN
b25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbCkgewogICAgICAgICAgICAgLy8gRGlyZWN0
b3J5IHdhcyByZW1vdmVkIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCmluZGV4IDRjMDMzZTM1M2Q0ZjMwOGY3Zjc2MDAxMmNh
OTYyOTYzMDNjMTA3MzAuLjcxZjM0YmZhM2Q2YzJiNTI3NjE2ODk0NGVlMzM0YzczZGFmNTAzMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlOwogCiAvLyBDYW4gb25seSBiZSBjb25zdHJ1Y3RlZCAvIGRlc3Ryb3llZCAv
IHVzZWQgZnJvbSB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGlj
IHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUmLCBXb3JrUXVldWUmLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQ
YXRoKTsKICAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNzBhY2JkY2U5NmY2
NWNmODNhOTQ2MzdkM2ZiOGQxZTliMjY1NTNkZC4uYTBjZWY2ZjMxYjQ5NjYyZTVmOTIwM2NjZjhi
MTkwODdlMzBlODRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtNzcsNiArNzcsNyBAQCBlbnVtIGNsYXNzIE9wZXJhdGluZ0RhdGVzV2luZG93IDogYm9v
bCB7IExvbmcsIFNob3J0IH07CiAKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNl
ZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3Rh
dGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICB1c2luZyBSZWdp
c3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA4YzIxMTU3Y2M3ZjY5
MTdiYTk3MDg5ZTM2ZjE2OWQ4NmNmOGI4YWIwLi5hMWMwN2YzNmE2ZjhmZmZjZDc2MDM4ZGQ2Y2Vh
Y2JjYTY0N2ViMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcApAQCAtMTU5LDE1ICsxNTksMTUgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG4K
ICAgICAKICAgICBwb3N0VGFzayhbdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3RdIHsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuaXNJVFBEYXRhYmFzZUVuYWJsZWQoKSkgewotICAgICAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCi0gICAgICAgICAgICBhdXRv
IG1lbW9yeVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCk7Ci0gICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1f
c3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAg
ICAgICAgIGF1dG8gbWVtb3J5U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9j
YWxob3N0KTsKKyAgICAgICAgICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gbWFrZVVuaXF1ZTxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9z
dGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCiAgICAg
ICAgICAgICBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1f
c3RhdGlzdGljc1N0b3JlLmdldCgpKS5wb3B1bGF0ZUZyb21NZW1vcnlTdG9yZSgqbWVtb3J5U3Rv
cmUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMs
IG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAgICAg
IG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
ZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywg
bV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgICAgICAgICAg
bV9wZXJzaXN0ZW50U3RvcmFnZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU+KCptX3N0YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FKDE5MzI5
Nyk6IFRoaXMgc2hvdWxkIGJlIHJldmlzZWQgYWZ0ZXIgdGhlIFVJUHJvY2VzcyB2ZXJzaW9uIGdv
ZXMgYXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oCmluZGV4IDYwNWFlZjNlNmVlOTUwZjM5NDgzZmNkOGNjNGQ4
ZTY1OGUwMmNmMGMuLmJiZTM5ODQ3NTJiZTE0NjA1MGQ1MDM1NzEzNzE1NTBmYjJjYjYzYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyIDogcHVibGljIE5ldHdv
cmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb29r
aWVNYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBXZWJDb29raWVNYW5hZ2VyKE5ldHdvcmtQcm9jZXNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3Rv
Y29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCmlu
ZGV4IGRjNzllZWJjZjE4ZGJmNjdiNDY0YzM1ODYxMGZiM2NlN2NmZTkwY2MuLmY5MGYwZmNiNDE5
MDI0YjhhOTVmNTc3MGM5Yjc5OTdiNTc4NGIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIE5ldHdv
cmtQcm9jZXNzOwogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBj
bGFzcyBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CkBAIC03OCw2ICs3OSw3IEBAIGNsYXNzIExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1
YmxpYyBJUEM6CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICBzdHJ1Y3QgV2ViU291cFJlcXVl
c3RBc3luY0RhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdSZWZQdHI8R1Rhc2s+JiYsIFdlYktpdFNv
dXBSZXF1ZXN0R2VuZXJpYyopOwogICAgICAgICB+V2ViU291cFJlcXVlc3RBc3luY0RhdGEoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyU291cC5jcHAKaW5kZXggMmM0ZDJmZjk0ODA5YzQyYTYxMTY3M2I1ZmI1Y2FkYmZh
NTkxNjA0ZS4uYzliMGMzYjIxNTdhZDhhZWJlNzQ2ZjRmMzlmYjVlZmNkNzVlNzE1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclNvdXAuY3BwCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sUmVxdWVz
dENsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGllbnQKICAg
ICAgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXIpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgYXV0byBjdXN0b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5h
ZGRDdXN0b21Qcm90b2NvbChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlcjo6V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KFdURk1vdmUodGFzayksIHJlcXVlc3QpKTsK
KyAgICAgICAgYXV0byBjdXN0b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5h
ZGRDdXN0b21Qcm90b2NvbChtYWtlVW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6
V2ViU291cFJlcXVlc3RBc3luY0RhdGE+KFdURk1vdmUodGFzayksIHJlcXVlc3QpKTsKICAgICAg
ICAgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5zdGFydExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwg
d2Via2l0U291cFJlcXVlc3RHZW5lcmljR2V0UmVxdWVzdChyZXF1ZXN0KSk7CiAgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGY0ZDc1ZDlkZDMxODIwMDQ0OWEyYWIyZTU4ZTg4NjMx
MjBjNzc3NDQuLjUwN2Y0ZjZmZmMzZDQwNjljMTM3ODI2NTI3NWM2NjA2NTRiNGM4MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6
c3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxv
YQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IGNsaWVudCgpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVlc3Qu
dXJsKCkpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CiAKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRk
KGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGlu
Z0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1f
Y2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFy
YW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtT
ZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLCBzdWdnZXN0ZWROYW1lKSk7CiB9CiAK
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9h
ZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJiBkb3dubG9hZCkKQEAg
LTkwLDcgKzkwLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHcKIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmIG5ldHdvcmtMb2FkLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiBibG9iRmlsZVJlZmVyZW5jZXMsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwot
ICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQ
ZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxv
YWRzKCksIFdURk1vdmUobmV0d29ya0xvYWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
ZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICBtX3BlbmRpbmdEb3dubG9hZHMu
YWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNl
KSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9u
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29s
IGFsbG93T3ZlcndyaXRlKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2Vy
OjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93
bmxvCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZWxzZQot
ICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93
bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVu
aXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CiAK
ICAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpOwogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxv
YWRJRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYXAuY3BwCmluZGV4IGE4ODRhY2IyOTVkNDJjZTkzZTIxYmFjNDMzMDg0ZDdi
YmM0MzNlNjUuLmFlM2NhN2UwZTRlZTdlYzg1ZGVhMmUzMDllMWQzYzIwYjc0OTY1MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hcC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRG93bmxvYWRNYXA6OkRvd25sb2FkTWFwVHlwZTo6
QWRkUmVzdWx0IERvd25sb2FkTWFwOjphZGQoRG93bmxvYWRJRCBkb3dubG9hZElELAogICAgIGF1
dG8gcmVzdWx0ID0gbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQp
KTsKICAgICBpZiAobV9kb3dubG9hZHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgQVNTRVJUKCFt
X2Rvd25sb2FkQXNzZXJ0aW9uKTsKLSAgICAgICAgbV9kb3dubG9hZEFzc2VydGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0cGlkKCksICJXZWJLaXQgZG93bmxvYWRz
Il9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fZG93
bmxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAi
V2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcp
OwogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlRvb2sgJ1dlYktpdCBk
b3dubG9hZHMnIGFzc2VydGlvbiBpbiBOZXR3b3JrUHJvY2VzcyIpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5jcHAKaW5kZXggYTI3ODI4ZDdhOGJkODRhN2FlMzc3MTY4Njc4NjkxYzc2N2YyNzk2
ZC4uNTkxMjNmMmM0OGYxYzFlNDE3OWJiMWQ1YmNlMTU3MGM2Yjc1NGU5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIFBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKElQQzo6
Q29ubmVjdGlvbiogcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24sIE5ldHdvcmtMb2FkUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgTmV0d29ya1Nlc3Npb24mIG5l
dHdvcmtTZXNzaW9uLCBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnksIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKLSAgICA6IG1fbmV0d29ya0xvYWQoc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQorICAgIDogbV9uZXR3b3JrTG9hZChtYWtlVW5pcXVlPE5l
dHdvcmtMb2FkPigqdGhpcywgYmxvYlJlZ2lzdHJ5LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBuZXR3
b3JrU2Vzc2lvbikpCiAgICAgLCBtX3BhcmVudFByb2Nlc3NDb25uZWN0aW9uKHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKQogewogICAgIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMg
PSBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBv
bGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IDFmMTAwNGUxYjViY2QzOWQ4YjEyMmRmOGM2ZGE0OGQxMzdjNGJlNjEuLjMwMWRi
ZTM3ODMwMTY3OTJhYzEzNWQzMGU2OTgxMjBiYTAyMGIwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC05MDMsNyArOTAzLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIHNl
cnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwot
ICAgIGF1dG8gY29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uPihtX25ldHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lv
bklEKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVj
dGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Np
b25JRCk7CiAgICAgCiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKTsKICAgICBMT0coU2Vy
dmljZVdvcmtlciwgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1Nl
cnZlckNvbm5lY3Rpb24gLSAlcyIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKaW5kZXgg
NDQ0MjBmZjVmZjIyOTliZTM3NTRjZTM3Y2RkYzdlZTYxNjJlMTkzMS4uNTQzNTI4MjhlNjg3MjFh
ZjBiYWRlMGMwMjc1YmUyZjA5NWExNjYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6Y29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kKFVzZXJDb250ZW50Q29udHJvbGwKIHZvaWQgTmV0d29ya0Nv
bnRlbnRSdWxlTGlzdE1hbmFnZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMoVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4mJiBjb250ZW50UnVsZUxpc3RzKQogewogICAg
IGF1dG8mIGJhY2tlbmQgPSAqbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5zdXJlKGlkZW50
aWZpZXIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNp
b25zQmFja2VuZD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBmb3IgKGF1dG8m
JiBjb250ZW50UnVsZUxpc3QgOiBjb250ZW50UnVsZUxpc3RzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAppbmRleCA4NTZj
YTFmMDk1ZTEwM2M1NDJhZDRlNDMwMDBiY2I3MGZmMWZiMzA3Li44YTZjNWExZjIxOGQzYzlhYjIx
MDRkZjA5NDY5MmNjM2Y2NTUyMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJXZWJLaXRCbG9i
UmVzb3VyY2UiOwogCiBOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnksIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mIGZpbGVSZWZlcmVuY2Vz
KQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlLCBmYWxzZSwgZmFsc2UpCi0gICAgLCBtX3N0cmVh
bShzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpKQorICAgICwgbV9zdHJl
YW0obWFrZVVuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKICAgICAsIG1fZmlsZVJlZmVy
ZW5jZXMoZmlsZVJlZmVyZW5jZXMpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKHNlc3Npb24ubmV0
d29ya1Byb2Nlc3MoKSkKIHsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0Jsb2I6OmRvd25sb2FkKCkKICAgICB9CiAKICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBt
X25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKTsKLSAgICBhdXRvIGRvd25sb2FkID0g
c3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3du
bG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFu
YWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCks
IHN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgIGF1dG8qIGRvd25sb2FkUHRyID0gZG93bmxvYWQu
Z2V0KCk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKG1f
cGVuZGluZ0Rvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBkb3dubG9hZFB0ci0+
ZGlkQ3JlYXRlRGVzdGluYXRpb24obV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIuY3BwCmluZGV4IGY2NTQyOTU4YjQ3MTAzZDM4MWY4Y2M1MzcwZDlkNmI1OTRkYzEx
NmMuLjE5MzI2ZjJmNDdkYzlmNGY2MjI4YTRjOWFhODRmNmM5ZmFhYmI3M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBtX2RhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZT4oKTsKKyAgICAgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgICAgIGJvb2wgaXNEYXRhYmFzZU9wZW4gPSBtX2Rh
dGFiYXNlLT5vcGVuKHBhdGgsIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpPcGVuTW9kZTo6UmVh
ZE9ubHkpOwogICAgICAgICBpZiAoIWlzRGF0YWJhc2VPcGVuKSB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCkBAIC04MCw3ICs4MCw3IEBAIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlcigpCiAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSB1c2luZyBhIHdv
cmtlclF1ZXVlLCB0aGUgc2VxdWVudGlhbCBkaXNwYXRjaCBibG9ja3MgbWF5IGJlIGNhbGxlZCBi
eSBkaWZmZXJlbnQgdGhyZWFkcy4KICAgICAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZVRocmVhZGlu
Z0NoZWNrcygpOwogCi0gICAgICAgIG1fc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KCptX2RhdGFiYXNlLCBodHRwc1VwZ3JhZGVDaGVja2VyUXVl
cnkpOworICAgICAgICBtX3N0YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsKICAgICAgICAg
aW50IGlzU3RhdGVtZW50UHJlcGFyZWQgPSAobV9zdGF0ZW1lbnQtPnByZXBhcmUoKSA9PSBTUUxJ
VEVfT0spOwogICAgICAgICBBU1NFUlQoaXNTdGF0ZW1lbnRQcmVwYXJlZCk7CiAgICAgICAgIGlm
ICghaXNTdGF0ZW1lbnRQcmVwYXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaAppbmRleCBkY2Q0NmE2MDFi
ZTYzMDk4NmZjMmFlMGMxYzk2NTU4Yzk1OTIyMDhhLi41MWQyMDMxNGVhYTQ5ZTk2YTQxYTU3Y2U4
ZDQyMjI2YmJmYjA3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNs
YXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKICAgICB+TmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHAKaW5kZXggOTEwN2ZlYzFlMzRkYjQ0ODgxNjIyODY4NjIyYzhmYmViNWIzODgzYy4uZWU4MGFj
NmVhMWE3Nzk3NzNhMDcxMGUxNzg4NzA2Mzc2N2M1MTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIE5l
dHdvcmtMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZXNwb25zZUNvbXBsZQogICAgIH0KIAogICAgIGlmIChtX2xvYWRUaHJvdHRsZUxhdGVuY3kg
PiAwX3MpIHsKLSAgICAgICAgbV90aHJvdHRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VGhyb3R0bGU+
KCp0aGlzLCBtX2xvYWRUaHJvdHRsZUxhdGVuY3ksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fdGhyb3R0bGUgPSBtYWtlVW5pcXVlPFRo
cm90dGxlPigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5j
cHAKaW5kZXggNDA5NzE0ZDY2NzI2YTg0NzRhZmYyOWExNjA4MTdmMjQ3OTY3YjAxNi4uZTFhZTAw
YmQ5ZDk1NDc3NzgxNzQzOTg1ZGYwNzNhOGIxY2QyNTM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtNDEzLDcgKzQx
Myw3IEBAIHZvaWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZs
aWdodChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0CiAgICAgICAgIG1fZnJhbWVJRCwKICAgICAg
ICAgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeQogICAgIH07Ci0gICAgbV9jb3JzUHJlZmxpZ2h0
Q2hlY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPiht
X25ldHdvcmtQcm9jZXNzLmdldCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX3Nob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVl
c3QpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgaXNSZWRpcmVjdGVkID0gaXNSZWRpcmVj
dGVkKCldKGF1dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tl
ciA9IG1ha2VVbmlxdWU8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9j
ZXNzLmdldCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcywgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKSwgaXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1dG8m
JiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNoZWNr
Q09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0IC0gbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdp
dGhQcmVmbGlnaHQgcHJlZmxpZ2h0IGNvbXBsZXRlLCBzdWNjZXNzOiAlZCBmb3JSZWRpcmVjdD8g
JWQiLCBlcnJvci5pc051bGwoKSwgaXNSZWRpcmVjdGVkKTsKIAogICAgICAgICBpZiAoIWVycm9y
LmlzTnVsbCgpKSB7CkBAIC00NDYsNyArNDQ2LDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBO
ZXR3b3JrTG9hZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpCiB7CiAgICAgaWYgKCFt
X2NvbnRlbnRTZWN1cml0eVBvbGljeSAmJiBtX2NzcFJlc3BvbnNlSGVhZGVycykgewogICAgICAg
ICAvLyBGSVhNRTogUGFzcyB0aGUgVVJMIG9mIHRoZSBwcm90ZWN0ZWQgcmVzb3VyY2UgaW5zdGVh
ZCBvZiBpdHMgb3JpZ2luLgotICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBVUkwgeyB9LCBtX29yaWdp
bi0+dG9TdHJpbmcoKSB9KTsKKyAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBtYWtl
VW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRv
U3RyaW5nKCkgfSk7CiAgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5LT5kaWRSZWNlaXZl
SGVhZGVycygqbV9jc3BSZXNwb25zZUhlYWRlcnMsIFN0cmluZyB7IG1fcmVmZXJyZXIgfSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRQYXJzaW5nRXJyb3JzOjpObyk7CiAgICAgfQogICAg
IHJldHVybiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZTgyMGIyOWMyMGY1MTlm
YjVlM2RkODhhOGJlZjY0NjU0MDY4NmIwYi4uNGRjODI1NjQ2YjJiZjc3ZmJjYTkxN2M5NWMyN2I0
ZTQ2ZjU1YjU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTUwMyw5ICs1MDMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9w
dENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgc2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24p
LCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShj
b29raWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCi0gICAgbV9kZWZh
dWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwor
ICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKICNlbmRpZgogfQogCkBAIC01MzUsOSArNTM1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
ZW5zdXJlU2Vzc2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJp
bmcKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNz
aW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24u
Z2V0KCkpKTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9y
YWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklE
LCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZWxp
ZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOworICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oc2Vzc2lvbklEKTsKICNlbmRpZgogfQogCkBAIC0yNDUzLDcgKzI0NTMsNyBAQCBTV1Nl
cnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm90LCB0aGVuIHdoZXJlIGRpZCB0aGlz
IFBBTDo6U2Vzc2lvbklEIGNvbWUgZnJvbT8KICAgICAgICAgQVNTRVJUKHNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpIHx8ICFwYXRoLmlzRW1wdHkoKSk7CiAgICAgICAgIAotICAgICAgICBhdXRvIHZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdp
blN0b3JlPigpLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQpOworICAgICAgICBhdXRvIHZhbHVl
ID0gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigp
LCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQpOwogICAgICAgICBpZiAobV9zaG91bGREaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KQogICAgICAgICAgICAgdmFsdWUt
PmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKICAgICAgICAg
cmV0dXJuIHZhbHVlOwpAQCAtMjU2NSw2ICsyNTY1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVu
dE8KIH0KIAogY2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6U3RvcmFnZVF1b3RhVXNlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgUXVvdGFVc2VySW5pdGlhbGl6ZXIoU3RvcmFnZVF1b3RhTWFuYWdl
ciYgbWFuYWdlcikKICAgICAgICAgOiBtX21hbmFnZXIobWFrZVdlYWtQdHIobWFuYWdlcikpCkBA
IC0yNTk5LDcgKzI2MDAsNyBAQCBjbGFzcyBRdW90YVVzZXJJbml0aWFsaXplciBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFVc2VyIHsKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
aW5pdGlhbGl6ZVF1b3RhVXNlcnMoU3RvcmFnZVF1b3RhTWFuYWdlciYgbWFuYWdlciwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyksIHNlc3Npb25JRCwgb3JpZ2luLCB1c2VyID0gc3RkOjptYWtlX3VuaXF1ZTxRdW90YVVzZXJJ
bml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQsIG9y
aWdpbiwgdXNlciA9IG1ha2VVbmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6ZXI+KG1hbmFnZXIpXSgp
IG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB0aGlzLT5pZGJTZXJ2ZXIoc2Vzc2lvbklEKS5pbml0aWFsaXplUXVvdGFVc2VyKG9y
aWdpbik7CkBAIC0yNjEzLDcgKzI2MTQsNyBAQCBTdG9yYWdlUXVvdGFNYW5hZ2VyJiBOZXR3b3Jr
UHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAg
ICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcnMgeyB9OwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKICAgICByZXR1cm4gKnN0b3JhZ2VRdW90YU1hbmFnZXJzLm1hbmFnZXJzUGVyT3JpZ2lu
KCkuZW5zdXJlKG9yaWdpbiwgW3RoaXMsICZzdG9yYWdlUXVvdGFNYW5hZ2Vycywgc2Vzc2lvbklE
LCAmb3JpZ2luXSB7Ci0gICAgICAgIGF1dG8gbWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3Rv
cmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFuYWdlcnMuZGVmYXVsdFF1b3RhKG9yaWdp
biksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1
cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgeworICAg
ICAgICBhdXRvIG1hbmFnZXIgPSBtYWtlVW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KHN0b3Jh
Z2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBbdGhpcywgc2Vzc2lvbklELCBv
cmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNw
YWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAgICAgIHRoaXMtPnJlcXVlc3RT
dG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIHF1b3RhLCBjdXJyZW50U3BhY2UsIHNwYWNl
SW5jcmVhc2UsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgfSk7CiAgICAgICAgIGluaXRp
YWxpemVRdW90YVVzZXJzKCptYW5hZ2VyLCBzZXNzaW9uSUQsIG9yaWdpbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMWJlYjdiNjVkYjYz
MGMzYjMyOGJiMTVjZmMzYjMxMTZiNGI5OTRkNi4uYTk1YTJkZTc5ZWFkZGQ0ODA5NDM0NGJmN2Nh
MjY2Y2RiM2Y3NmQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaApAQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzIDogcHVi
bGljIEF1eGlsaWFyeVByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQsCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAgICB7
Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFr
ZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxl
bWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIHZvaWQgcmVt
b3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NzgyZWYxNWYzZGVlZTVhZjRlYWVmMDVjZGY2MDM2
YWU3ZTZkMmZiLi44YzMzZmI4NjBhZDdhNzg3MzZlNGI4ZmJhZGYyMGM3NzU1MzI5ZTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXIKIAog
ICAgIGlmIChzeW5jaHJvbm91c1JlcGx5IHx8IHBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQ
UmVzcG9uc2VBY2Nlc3MgfHwgcGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSkgewogICAgICAg
ICBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSA9IGlzTWFpbkZy
YW1lTG9hZCgpID8gTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZTo6TWFpbkZyYW1lIDogTmV0
d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZTo6T3RoZXI7Ci0gICAgICAgIG1fbmV0d29ya0xvYWRD
aGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24u
bmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnMgfSwg
bV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1
ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFt
ZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGlj
eSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVycy5pc0hUVFBT
VXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpLCBy
ZXF1ZXN0TG9hZFR5cGUpOworICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IG1ha2VVbmlx
dWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZldGNo
T3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBIVFRQSGVh
ZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9w
YXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5
UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0
dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKICAgICAg
ICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgICAgICBtX25l
dHdvcmtMb2FkQ2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyB7IG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMudmFs
dWUoKSB9KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTE5LDcgKzExOSw3
IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAjZW5kaWYKICAgICB9CiAgICAgaWYgKHN5bmNo
cm9ub3VzUmVwbHkpCi0gICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7Cisg
ICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IG1ha2VVbmlxdWU8U3luY2hyb25vdXNMb2Fk
RGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7CiB9CiAKIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6fk5ldHdvcmtSZXNvdXJjZUxvYWRlcigpCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMg
PSBuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2Iob3JpZ2luYWxSZXF1
ZXN0KCkudXJsKCkpOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KTsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRo
aXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyks
ICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29y
a0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1Ymxp
Y31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlw
dGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDUwNmU3ZmYwOGZiYzlhNzY0ZWE4MzAzMDk0YjZkMzA2
NzRhM2YzYTQuLjMzNWIxOWJmYjA5MDUwYTdmYmFkMzMzODQ3YjFjNGY1MmNjYzYwN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTY1LDYg
KzY1LDcgQEAgY2xhc3MgQ2FjaGU7CiB9CiAKIGNsYXNzIE5ldHdvcmtTZXNzaW9uIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lv
bj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMmJik7CiAgICAgdmlydHVhbCB+TmV0d29ya1Nlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMDRl
M2QwMjUyMjBkZTRjNDNjNzM2MmRhMTQxZGYzMmJhMjAzMGZhZi4uNTkxODg1NzU3YTg0NzUxYzgz
MThmN2JlNWQyNzVhN2YxMWM1YTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hh
bm5lbD4gTmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlk
ZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtT
b2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVj
dGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKTsKICAgICBpZiAoIXJlc3VsdC0+bV9z
b2NrZXQpIHsKICAgICAgICAgcmVzdWx0LT5kaWRDbG9zZSgwLCAiQ2Fubm90IGNyZWF0ZSBhIHdl
YiBzb2NrZXQgdGFzayJfcyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCmluZGV4IDY3
MmIzNzgxYTRkNGEzNGI5YzFlMWUyNDE1YmQ0OTEwZTc3OWVkNzEuLjlkZjlhYWNkY2IzMzJlMDQx
ZGI2OWJkMDY4MTAyMjljZjhiYjRlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3Mg
TmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIAogY2xhc3MgTmV0d29ya1Nv
Y2tldENoYW5uZWwgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENoYW5uZWw+IGNyZWF0ZShOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBpZGVu
dGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcAppbmRleCBkOTBjY2NhOTgwYThlZmZjMmQ0ZjM4ZjVlM2Y2YmMwYWEyYzJlNTQ2Li4y
YzY0MjdlNjQ4MjJjZWY1ZDFhODEyMDI1ZWZkNmM4NTQ1NDFjZTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApAQCAtNTMsNyArNTMsNyBA
QCBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBOZXR3b3JrTG9hZFBhcmFtZQogICAgIH0KIAogICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpOwotICAgIG1fbmV0
d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2Fk
ID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1l
dGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNo
b3QoNjAwMDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0
VGFzay5oCmluZGV4IDNhNTlmZmE2YTFhMDhkNjNkZTViZmY1OWUzZjY5NDZmMGU0MDhlYjQuLjA0
Nzk5MjA4OTZkYTI1N2ZjNTg2NDUxNjBjMDAwOWQxNjRjZTVmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0VGFzayB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB1aW50NjRfdCBUYXNrSWRlbnRpZmll
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggYmY1MTU3OGZiMTQ3ZGRk
Yzg3ZTY2ZDkwYTVlZGQwMmE0Y2Q3MjY5My4uY2M4Nzg0ZDQyODNhNjI1ZmMwZTFkOWVmYWE1Mjcw
NTIzYWM3MTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0yNDUsNyAr
MjQ1LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0
ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9kaXNhYmxlU3VkZGVuVGVybWluYXRp
b25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSkKLSAgICAgICAgbV9kaXNhYmxlU3VkZGVuVGVy
bWluYXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3Vk
ZGVuVGVybWluYXRpb25EaXNhYmxlcj4oKTsKKyAgICAgICAgbV9kaXNhYmxlU3VkZGVuVGVybWlu
YXRpb25XaGlsZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSA9IG1ha2VVbmlxdWU8U3VkZGVuVGVybWlu
YXRpb25EaXNhYmxlcj4oKTsKIAogICAgIG1fZGlkU2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSA9IHRy
dWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAppbmRleCAzZTlkMTdkNjAyZDM0MTc3MDMzYzkzMzhiNGJiZTZkYTBiYWJhOGE0
Li5iMDgzZDVkMzJhNTFlNjFkYTQzNzZkZjk0NDZlZjExMTRlYTZiZjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC04
NCwxNyArODQsMTcgQEAgQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgUmVmPFN0b3JhZ2U+JiYgc3RvcmFnZSwgT3B0aW9uU2V0PEMKIHsKICNpZiBFTkFCTEUoTkVU
V09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKG9wdGlvbnMuY29u
dGFpbnMoQ2FjaGVPcHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKSkgewotICAgICAgICBt
X2xvd1Bvd2VyTW9kZU5vdGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpMb3dQb3dl
ck1vZGVOb3RpZmllcj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7CisgICAg
ICAgIG1fbG93UG93ZXJNb2RlTm90aWZpZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2Vy
TW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKICAgICAg
ICAgICAgIEFTU0VSVChXVEY6OlJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgIGlmIChp
c0xvd1Bvd2VyTW9kZUVuYWJsZWQpCiAgICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKTsKLSAgICAgICAgICAgICAgICBtX3NwZWN1
bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRp
dmVMb2FkTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMs
IG1fc3RvcmFnZS5nZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBp
ZiAoIW1fbG93UG93ZXJNb2RlTm90aWZpZXItPmlzTG93UG93ZXJNb2RlRW5hYmxlZCgpKQotICAg
ICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAg
IG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFu
YWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM3NSwx
MiArMzc1LDEyIEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0cmlldmVDb21wbGV0
aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAgCiBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2Us
IFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVh
ZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCBy
ZXNwb25zZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVx
dWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RW
YXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Np
b24oKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBD
YWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2Us
IHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhu
ZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25z
ZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCks
IHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVz
dEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVz
dCwgcmVzcG9uc2UpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6
OnVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSA9IGV4aXN0aW5nRW50cnkucmVzcG9u
c2UoKTsKICAgICBXZWJDb3JlOjp1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlv
bihyZXNwb25zZSwgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIAotICAgIGF1dG8gdXBkYXRlRW50cnkg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihleGlzdGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwg
ZXhpc3RpbmdFbnRyeS5idWZmZXIoKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVh
ZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJl
cXVlc3QsIHJlc3BvbnNlKSk7CisgICAgYXV0byB1cGRhdGVFbnRyeSA9IG1ha2VVbmlxdWU8RW50
cnk+KGV4aXN0aW5nRW50cnkua2V5KCksIHJlc3BvbnNlLCBleGlzdGluZ0VudHJ5LmJ1ZmZlcigp
LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCku
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UpKTsKICAg
ICBhdXRvIHVwZGF0ZVJlY29yZCA9IHVwZGF0ZUVudHJ5LT5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQo
KTsKIAogICAgIG1fc3RvcmFnZS0+c3RvcmUodXBkYXRlUmVjb3JkLCB7IH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcAppbmRleCA3YWUxYzJmZTdkY2U2MDdiOWY4YTUzZDk5YTFiZDc5ODUzOTliY2YxLi4xZjQx
NDRhOGZhZTg3YmY1ZmM1YzgzZWQ5MDJiNmZmMDhhMDY0YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApA
QCAtMTA5LDcgKzEwOSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdl
UmVjb3JkKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKIHsKLSAgICBh
dXRvIGVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oc3RvcmFnZUVudHJ5KTsKKyAgICBh
dXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwg
c3RvcmFnZUVudHJ5LmhlYWRlci5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50
cnktPm1fcmVzcG9uc2UpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4
IDk0YjYwNjhhMGRmZWQ3NDJmYWZmZGU1NzY4ODcwNWFlN2E0NjIwMWIuLmJiOTdjN2EzZjI3NjE3
NmQwOWZmNDgzNWIyZjNiOTdlZjJlNThmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxv
YWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICBw
YXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6
RG9Ob3RTbmlmZkNvbnRlbnQ7CiAgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmlu
Z1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKICAgICBwYXJh
bWV0ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKLSAgICBtX25ldHdvcmtMb2FkID0g
c3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFy
YW1ldGVycyksICpjYWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpKTsKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVu
aXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpj
YWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpKTsKIH0KIAogU3BlY3VsYXRpdmVMb2FkOjp+U3BlY3VsYXRpdmVMb2Fk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCmluZGV4
IDFjZDZiNDkyZjgxYTVhODFkMjRjYTc5MTA4ZGE2YjE5ZTBjMDAzZjEuLjU3ZThlNzU5OWIxY2Nh
NjViMjZlMDZlYzM4NzJlZTJkZDk0OWRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIFNwZWN1bGF0
aXZlTG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxvYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5k
aW5nRnJhbWVMCiAgICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNlTG9hZChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgc3VicmVzb3VyY2VLZXkpCiAgICAgewogICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBtX3N1YnJlc291cmNlTG9h
ZHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U3VicmVzb3VyY2VMb2FkPihyZXF1ZXN0LCBzdWJy
ZXNvdXJjZUtleSkpOworICAgICAgICBtX3N1YnJlc291cmNlTG9hZHMuYXBwZW5kKG1ha2VVbmlx
dWU8U3VicmVzb3VyY2VMb2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkpOwogICAgICAgICBt
X2xvYWRIeXN0ZXJlc2lzQWN0aXZpdHkuaW1wdWxzZSgpOwogICAgIH0KIApAQCAtMzU1LDcgKzM1
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUoY29uc3QgS2V5JiBz
dG9yYWdlS2V5LCBSZXRyaWV2ZUNvbXBsZXRpb25ICiAgICAgQVNTRVJUKG1fcGVuZGluZ1ByZWxv
YWRzLmNvbnRhaW5zKHN0b3JhZ2VLZXkpKTsKICAgICAvLyBGSVhNRTogVGhpcyBicmVha3MgaW5j
cmVtZW50YWwgbG9hZGluZyB3aGVuIHRoZSByZXZhbGlkYXRpb24gaXMgbm90IHN1Y2Nlc3NmdWwu
CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXRyaWV2ZVJlcXVlc3RzLmVuc3VyZShz
dG9yYWdlS2V5LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxS
ZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+PigpOwogICAgIH0pOwogICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQ
cmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb24KICAgICBBU1NF
UlQoZW50cnkpOwogICAgIEFTU0VSVCghZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKICAgICBh
dXRvIGtleSA9IGVudHJ5LT5rZXkoKTsKLSAgICBtX3ByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwg
c3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkZWRFbnRyeT4oV1RGTW92ZShlbnRyeSksIFdURk1vdmUo
cmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlzLCBrZXksIGZyYW1lSURdIHsKKyAgICBtX3ByZWxv
YWRlZEVudHJpZXMuYWRkKGtleSwgbWFrZVVuaXF1ZTxQcmVsb2FkZWRFbnRyeT4oV1RGTW92ZShl
bnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlzLCBrZXksIGZyYW1lSURd
IHsKICAgICAgICAgYXV0byBwcmVsb2FkZWRFbnRyeSA9IG1fcHJlbG9hZGVkRW50cmllcy50YWtl
KGtleSk7CiAgICAgICAgIEFTU0VSVChwcmVsb2FkZWRFbnRyeSk7CiAgICAgICAgIGlmIChwcmVs
b2FkZWRFbnRyeS0+d2FzUmV2YWxpZGF0ZWQoKSkKQEAgLTQ0OSw3ICs0NDksNyBAQCBib29sIFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMoY29uc3QgS2V5JiBr
ZXksIEVudHJ5KiBlbnRyeQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8m
IGNvbXBsZXRpb25IYW5kbGVyIDogKmNvbXBsZXRpb25IYW5kbGVycykKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZW50cnkgPyBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PigqZW50cnkpIDogbnVs
bHB0cik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVudHJ5ID8gbWFrZVVuaXF1ZTxFbnRy
eT4oKmVudHJ5KSA6IG51bGxwdHIpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00NjgsNyAr
NDY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3Vy
Y2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXMKIAogICAgIExPRyhOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFNwZWN1bGF0aXZlbHkgcmV2
YWxpZGF0aW5nICclcyc6Iiwga2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKIAotICAg
IGF1dG8gcmV2YWxpZGF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4obV9j
YWNoZSwgZnJhbWVJRCwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgV1RGTW92ZShlbnRyeSksIFt0aGlz
LCBrZXksIHJldmFsaWRhdGlvblJlcXVlc3QsIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gcmV2YWxpZGF0ZWRFbnRyeSkgeworICAgIGF1dG8gcmV2YWxpZGF0b3IgPSBtYWtlVW5pcXVl
PFNwZWN1bGF0aXZlTG9hZD4obV9jYWNoZSwgZnJhbWVJRCwgcmV2YWxpZGF0aW9uUmVxdWVzdCwg
V1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlvblJlcXVlc3QsIGZyYW1lSURd
KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgewogICAgICAgICBBU1NF
UlQoIXJldmFsaWRhdGVkRW50cnkgfHwgIXJldmFsaWRhdGVkRW50cnktPm5lZWRzVmFsaWRhdGlv
bigpKTsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8IHJldmFsaWRhdGVkRW50
cnktPmtleSgpID09IGtleSk7CiAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29uc3QgR2xvYmFsRnJh
bWVJRCYgZgogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwgc3VicmVzb3VyY2VJbmZvLCBm
cmFtZUlEKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOb3QgcHJlbG9hZGluZyAnJXMn
IGJlY2F1c2UgaXQgaXMgbWFya2VkIGFzIHRyYW5zaWVudCIsIGtleS5pZGVudGlmaWVyKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwg
c3RkOjptYWtlX3VuaXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywga2V5LCBmcmFtZUlEXSB7Cisg
ICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgbWFrZVVuaXF1ZTxFeHBp
cmluZ0VudHJ5PihbdGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAgICAgICAgICAgICAgbG9nU3Bl
Y3VsYXRpdmVMb2FkaW5nRGlhZ25vc3RpY01lc3NhZ2UobV9jYWNoZS5uZXR3b3JrUHJvY2Vzcygp
LCBmcmFtZUlELCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5UmlnaHRseU5vdFdhcm1lZFVw
S2V5KCkpOwogICAgICAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5yZW1vdmUoa2V5
KTsKICAgICAgICAgICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGJiZmM2NDk4OTBm
OTVjYzdlMDRjZTgyYTRmZTMyOTQ0ZGMxYWIxZjAuLjgwNGM0Mjk4Y2MzZTNjMjgxNGZkYmMyYmJi
NmNiZWU1NzU4NGFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMjkwLDggKzI5MCw4IEBA
IHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdl
LCAiKE5ldHdvcmtQcm9jZXNzKSBzeW5jaHJvbml6aW5nIGNhY2hlIik7CiAKICAgICBiYWNrZ3Jv
dW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldICgpIG11dGFibGUgewotICAgICAgICBhdXRvIHJlY29yZEZpbHRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7Ci0gICAgICAgIGF1dG8gYmxvYkZpbHRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1dG8gcmVjb3JkRmlsdGVy
ID0gbWFrZVVuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAgYXV0byBibG9iRmlsdGVy
ID0gbWFrZVVuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKIAogICAgICAgICAvLyBNb3N0IG9mIHRo
ZSBkaXNrIHNwYWNlIHVzYWdlIGlzIGluIGJsb2JzIGlmIHdlIGFyZSB1c2luZyB0aGVtLiBBcHBy
b3hpbWF0ZSByZWNvcmRzIGZpbGUgc2l6ZXMgdG8gYXZvaWQgZXhwZW5zaXZlIHN0YXQoKSBjYWxs
cy4KICAgICAgICAgc2l6ZV90IHJlY29yZHNTaXplID0gMDsKQEAgLTQ4OSw3ICs0ODksNyBAQCB2
b2lkIFN0b3JhZ2U6OnJlYWRSZWNvcmQoUmVhZE9wZXJhdGlvbiYgcmVhZE9wZXJhdGlvbiwgY29u
c3QgRGF0YSYgcmVjb3JkRGF0YSkKICAgICB9CiAKICAgICByZWFkT3BlcmF0aW9uLmV4cGVjdGVk
Qm9keUhhc2ggPSBtZXRhRGF0YS5ib2R5SGFzaDsKLSAgICByZWFkT3BlcmF0aW9uLnJlc3VsdFJl
Y29yZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihTdG9yYWdlOjpSZWNvcmQg
eworICAgIHJlYWRPcGVyYXRpb24ucmVzdWx0UmVjb3JkID0gbWFrZVVuaXF1ZTxTdG9yYWdlOjpS
ZWNvcmQ+KFN0b3JhZ2U6OlJlY29yZCB7CiAgICAgICAgIG1ldGFEYXRhLmtleSwKICAgICAgICAg
bWV0YURhdGEudGltZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRhLApAQCAtNzU4LDcgKzc1OCw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIHJldHJpZXZlRnJvbU1lbW9yeShjb25zdCBUJiBv
cGVyYXRpb25zLCBjb25zdCBLZXkmIGtleSwKICAgICAgICAgaWYgKG9wZXJhdGlvbi0+cmVjb3Jk
LmtleSA9PSBrZXkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5l
dHdvcmtQcm9jZXNzKSBmb3VuZCB3cml0ZSBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MiKTsKICAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcmVjb3JkID0gb3BlcmF0aW9uLT5yZWNv
cmQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bWFrZV91bmlx
dWU8U3RvcmFnZTo6UmVjb3JkPihyZWNvcmQpLCB7IH0pOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmlxdWU8U3RvcmFnZTo6UmVjb3JkPihyZWNvcmQpLCB7IH0pOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAt
ODYyLDcgKzg2Miw3IEBAIHZvaWQgU3RvcmFnZTo6cmV0cmlldmUoY29uc3QgS2V5JiBrZXksIHVu
c2lnbmVkIHByaW9yaXR5LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kCiAgICAgaWYgKHJldHJpZXZl
RnJvbU1lbW9yeShtX2FjdGl2ZVdyaXRlT3BlcmF0aW9ucywga2V5LCBjb21wbGV0aW9uSGFuZGxl
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVhZE9wZXJhdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVhZE9wZXJhdGlvbj4oKnRoaXMsIGtleSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIGF1dG8gcmVhZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8UmVhZE9wZXJhdGlv
bj4oKnRoaXMsIGtleSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgcmVhZE9w
ZXJhdGlvbi0+dGltaW5ncy5zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBy
ZWFkT3BlcmF0aW9uLT50aW1pbmdzLmRpc3BhdGNoQ291bnRBdFN0YXJ0ID0gbV9yZWFkT3BlcmF0
aW9uRGlzcGF0Y2hDb3VudDsKQEAgLTg3OSw3ICs4NzksNyBAQCB2b2lkIFN0b3JhZ2U6OnN0b3Jl
KGNvbnN0IFJlY29yZCYgcmVjb3JkLCBNYXBwZWRCb2R5SGFuZGxlciYmIG1hcHBlZEJvZHlIYW5k
bGVyLAogICAgIGlmICghbV9jYXBhY2l0eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB3
cml0ZU9wZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVPcGVyYXRpb24+KCp0aGlzLCBy
ZWNvcmQsIFdURk1vdmUobWFwcGVkQm9keUhhbmRsZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8V3JpdGVPcGVyYXRp
b24+KCp0aGlzLCByZWNvcmQsIFdURk1vdmUobWFwcGVkQm9keUhhbmRsZXIpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgbV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLnByZXBlbmQo
V1RGTW92ZSh3cml0ZU9wZXJhdGlvbikpOwogCiAgICAgLy8gQWRkIGtleSB0byB0aGUgZmlsdGVy
IGFscmVhZHkgaGVyZSBhcyB3ZSBkbyBsb29rdXBzIGZyb20gdGhlIHBlbmRpbmcgb3BlcmF0aW9u
cyB0b28uCkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBT
dHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICBB
U1NFUlQodHJhdmVyc2VIYW5kbGVyKTsKICAgICAvLyBBdm9pZCBub24tdGhyZWFkIHNhZmUgRnVu
Y3Rpb24gY29waWVzLgogCi0gICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHJhdmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRoaXMpLCB0eXBlLCBmbGFncywg
V1RGTW92ZSh0cmF2ZXJzZUhhbmRsZXIpKTsKKyAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRy
ID0gbWFrZVVuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhpcyksIHR5cGUsIGZs
YWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikpOwogICAgIGF1dG8mIHRyYXZlcnNlT3BlcmF0
aW9uID0gKnRyYXZlcnNlT3BlcmF0aW9uUHRyOwogICAgIG1fYWN0aXZlVHJhdmVyc2VPcGVyYXRp
b25zLmFkZChXVEZNb3ZlKHRyYXZlcnNlT3BlcmF0aW9uUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2Vz
RW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXggN2I4ODkyMjk5NTM5ZGIzNGM1YjM5MTRkM2Iy
MTRjZThiODE0M2I5OC4uNjNhZDA0MDlmZGQyMzZmNmUzYzJjYTMwZTg3ZTRhN2MwYTI5NTkwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKQEAgLTkzLDcgKzkzLDcg
QEAgU3RvcmFnZTo6UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNv
cmQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IFN1YnJlc291
cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3Rv
cmFnZUVudHJ5KQogewotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291
cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOworICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPFN1
YnJlc291cmNlc0VudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnku
aGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRyeS0+bV9zdWJyZXNv
dXJjZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Q
cmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5jcHAKaW5kZXggZDhhMDU5NDBkNzE5N2ViMzIyNWEzNmJjNTEzYTJkYjYxMGRi
MGNkOC4uNzEwNGQxZjc0Y2Q3MDFjYmNlY2ZhYjU3ZDI0ZWJmZjhkYWViZWRiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3Bw
CkBAIC03Myw4ICs3Myw4IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGlyYXRpb25UaW1lb3V0
IHsgNV9zIH07CiB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVy
bCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMp
Ci0gICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNo
RW50cmllc01hcD4oKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvblByZWZldGNoZXMt
PmFkZChyZXF1ZXN0VXJsLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihX
VEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIG1fc2Vzc2lvblBy
ZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKKyAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fc2Vzc2lvblByZWZldGNoZXMtPmFkZChyZXF1ZXN0VXJsLCBtYWtlVW5pcXVl
PFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShidWZmZXIp
KSk7CiAgICAgLy8gTGltaXQgcHJlZmV0Y2hlcyBmb3Igc2FtZSB1cmwgdG8gMS4KICAgICBpZiAo
IWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CkBAIC04Niw5ICs4Niw5IEBA
IHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlUmVkaXJl
Y3QoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0
KQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKLSAgICAgICAgbV9zZXNzaW9uUHJl
ZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOworICAgICAg
ICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7
CiAgICAgcmVkaXJlY3RSZXF1ZXN0LmNsZWFyUHVycG9zZSgpOwotICAgIG1fc2Vzc2lvblByZWZl
dGNoZXMtPnNldChyZXF1ZXN0VXJsLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoQ2FjaGU6OkVu
dHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCkp
KTsKKyAgICBtX3Nlc3Npb25QcmVmZXRjaGVzLT5zZXQocmVxdWVzdFVybCwgbWFrZVVuaXF1ZTxQ
cmVmZXRjaENhY2hlOjpFbnRyeT4oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShy
ZWRpcmVjdFJlcXVlc3QpKSk7CiAgICAgbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3QuYXBwZW5kKHN0
ZDo6bWFrZV90dXBsZShyZXF1ZXN0VXJsLCBXYWxsVGltZTo6bm93KCkpKTsKICAgICBpZiAoIW1f
ZXhwaXJhdGlvblRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fZXhwaXJhdGlvblRpbWVyLnN0
YXJ0T25lU2hvdChleHBpcmF0aW9uVGltZW91dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4IGExNzEwYmFlOWU1YTg4NTI2
Y2VmYTNiMzlhYTc4OGZhYWYyY2ZhMGUuLmEyNTE1MjBiMzFlYWM5MjFjMjJkMzExNTFkNmQyMzFh
MWJlZDEzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIFByZWZldGNoQ2FjaGUgewog
ICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIHN0cnVjdCBFbnRyeSB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICAgICAgRW50
cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Byb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Byb2Nlc3NDb2NvYS5tbQppbmRleCAwNzdmMTZmYTY1MDY1MmM3ODdhNmYwMzE2MDkw
OTAyNjhlYmI4YWMwLi5jY2UyNmFjZmIwNGNmNzA3NGU3NjNmNWJiYzhlNGE1ZTk4YTE1YzlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJv
Y2Vzc0MKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4g
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdv
cmtQcm9jZXNzOjpzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CkBAIC0yNzYsNyAr
Mjc2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlv
blRvRm9yZWdyb3VuZCgpCiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciYgTmV0d29ya1Byb2Nl
c3M6Om5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKIHsKICAgICBpZiAoIW1fbmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIpCi0gICAgICAgIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyPigpOworICAgICAg
ICBtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrSFRUUFNV
cGdyYWRlQ2hlY2tlcj4oKTsKICAgICByZXR1cm4gKm1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA0YTYxZGYxNGRjZmYyZTZjM2QwZTA5MGVk
M2U1MWNiNjAzMTVlNjQ0Li40Njg2ODkzNWM2YzY0MmMyMDQ4Mjg4ZmJlMzg3OTAzYzAxMjgyMDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC04MDIsNyArODAyLDcgQEAgLSAodm9pZClVUkxTZXNz
aW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFz
ayAqKWRhdGEKICAgICAgICAgUmVmPE5ldHdvcmtEYXRhVGFza0NvY29hPiBwcm90ZWN0ZWROZXR3
b3JrRGF0YVRhc2soKm5ldHdvcmtEYXRhVGFzayk7CiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9
IG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsKICAgICAgICAgYXV0byYgZG93
bmxvYWRNYW5hZ2VyID0gX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2Vy
KCk7Ci0gICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93
bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lv
bi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7Cisg
ICAgICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25s
b2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklE
KCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgICAgIG5ldHdv
cmtEYXRhVGFzay0+dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZCgqZG93bmxvYWQp
OwogICAgICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2st
PnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0
ZURlc3RpbmF0aW9uKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7
CkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERhdGFD
b25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lv
bkNvY29hPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Db2NvYT4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUo
cGFyYW1ldGVycykpOwogfQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwcm94eURpY3Rpb25hcnko
Y29uc3QgVVJMJiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eSkKQEAgLTEzMjEsNyAr
MTMyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTCiB7CiAgICAgLy8gRklYTUU6IFVzZSBw
cm90b2NvbC4KICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzaz4gdGFzayA9
IFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuZ2V0KCkgd2ViU29ja2V0VGFza1dpdGhS
ZXF1ZXN0OiByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGlj
eTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlNvY2tldFRhc2s+KGNoYW5uZWwsIFdURk1vdmUodGFzaykpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIFdURk1vdmUodGFzaykpOwogfQogCiB2b2lkIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OmFkZFdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYgdGFzaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0
VGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tl
dFRhc2tDb2NvYS5oCmluZGV4IDkzN2UyODczMmJlNTc0MzI2MTY5ZDg1NGRmNjRjMTUxM2UyYjY4
YTMuLmY2Y2Q3YTkyOGI5NzM4ODE2YzM4OWE5NTdjOGE5MWRlOGMyNWIyNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29j
b2EuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIE5ldHdv
cmtTb2NrZXRDaGFubmVsOwogCiBjbGFzcyBXZWJTb2NrZXRUYXNrIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFdlYlNvY2tldFRhc2s+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgUmV0YWluUHRy
PE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+JiYpOwogICAgIH5XZWJTb2NrZXRUYXNrKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nl
c3NDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJv
Y2Vzc0N1cmwuY3BwCmluZGV4IGJlNjgwMWYzMGNkZjQ5MDAyNTRjMjI0YjliMTFmYmRmNzNmZTJl
MzEuLjViZTE3MDI2NmY0NWI4YmY3MmVmNTZiMTAwODdjYjU5YmI1NmRiYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1
cmwuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNz
OjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphbGxvd1NwZWNpZmljSFRUUFND
ZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8s
IGNvbnN0IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAppbmRleCBkNDcwOWE1ZTRhYzhhMmZiNmFj
ZWI1NmM1N2ViZjBiNWM3NDBkNDU2Li5lMThhNDM5MGIxODhhMjdlOTMxOGM1MjQwNDU1ZjA2NGNm
NmJkNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya1Nlc3Npb25DdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtTZXNzaW9uQ3VybC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIE5ldHdvcmtTZXNz
aW9uQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNz
JiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Nl
c3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0d29ya1Byb2Nlc3MsIFdU
Rk1vdmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vzc2lvbkN1cmwoTmV0d29y
a1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB+TmV0
d29ya1Nlc3Npb25DdXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1t
CmluZGV4IDIzNzQ1Mjg4YTA2ZDAxMTQ1OTE5NjhiNTA4NmRlYjVmNDVhYTBhYzYuLmM4Yjg2YzUx
MTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpwYXltZW50Q29vcmRpbmF0b3IoKQogewogICAgIGlmICghbV9wYXltZW50Q29vcmRpbmF0b3Ip
Ci0gICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3BheW1lbnRDb29yZGluYXRv
ciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICAgICBy
ZXR1cm4gKm1fcGF5bWVudENvb3JkaW5hdG9yOwogfQogCkBAIC04Miw3ICs4Miw3IEBAIGNvbnN0
IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRv
clNvdXJjZUFwcGxpY2F0aW9uCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGlu
YXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIGNv
b3JkaW5hdG9yLCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3Is
IHJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29u
dHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNzYWdlUmVjZWl2ZXIoV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmluZ1JlZmVyZW5jZSYsIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBkNDZjNTAzZDgxZTk4
MzRlNWQyYTI1NjYwYzg3MjNlYWU3ZTE3MGVjLi40ZmFjYzgyMTNlZjg1MDVjZjlkNTQ4YjIzYzU2
NmRkM2QwYmUwYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC04OTcsNyArODk3LDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAgbV9kb3dubG9hZE91dHB1dFN0
cmVhbSA9IGFkb3B0R1JlZihHX09VVFBVVF9TVFJFQU0ob3V0cHV0U3RyZWFtLmxlYWtSZWYoKSkp
OwogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9zZXNzaW9uLT5uZXR3b3JrUHJvY2Vz
cygpLmRvd25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5p
cXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlz
LCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICBhdXRv
IGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRp
bmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmls
ZW5hbWUoKSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9hZC5nZXQoKTsKICAgICBk
b3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5nRG93bmxv
YWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0
aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXgg
ODNjMmYyOGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFmOS4uN2E3NDgxZjdkNDI1ZjAy
MzM3YTBjMTBhZGY5ZDY1NGY3MGVjN2RkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTEzMyw3ICsx
MzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJv
Y2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVE
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJy
b3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCAzMGZjOGE1MzU1ZDA4NDUyYWMzNjFiMWRjZWE5N2M4
NGYzNjA3ZmVkLi40MDczNjFmMDM2ZTc5ODkxNzY3ZDgwN2ZiYjYzYzkwNDRiMjYwYTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25T
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nl
c3Npb25Tb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAoTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycykK
LSAgICAsIG1fbmV0d29ya1Nlc3Npb24oc3RkOjptYWtlX3VuaXF1ZTxTb3VwTmV0d29ya1Nlc3Np
b24+KG1fc2Vzc2lvbklEKSkKKyAgICAsIG1fbmV0d29ya1Nlc3Npb24obWFrZVVuaXF1ZTxTb3Vw
TmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKIHsKICAgICBhdXRvKiBzdG9yYWdlU2Vzc2lv
biA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIEFTU0VSVChzdG9yYWdlU2Vzc2lvbik7
CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdv
cmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU28KICAgICByZXF1ZXN0
LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpLCBibG9iUmVnaXN0cnkoKSk7CiAg
ICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygid3NzIikpCiAgICAgICAgIGdfc2lnbmFs
X2Nvbm5lY3Qoc291cE1lc3NhZ2UuZ2V0KCksICJuZXR3b3JrLWV2ZW50IiwgR19DQUxMQkFDSyh3
ZWJTb2NrZXRNZXNzYWdlTmV0d29ya0V2ZW50Q2FsbGJhY2spLCBudWxscHRyKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBzb3VwU2Vzc2lvbigp
LCBzb3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdl
YlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdlLmdldCgpLCBw
cm90b2NvbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCmluZGV4IGY5
ZWY0YmI1NDMwYmJmNzNiMDRhMGUzYmVjMjQ3OTI4ZDU5ZTcxNmIuLjQ2NmIyNzgyYmY5M2M3NzA3
MGY3OTdkZDM2NTIzNGNjMWRlM2ZiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgTmV0d29ya1Nlc3Npb25Tb3VwIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVh
dGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25Tb3VwPihu
ZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgfQogICAgIE5ldHdvcmtT
ZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvblNvdXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElu
cHV0U3RyZWFtLmNwcAppbmRleCA2ZGRjODFhMzZkODQ5Y2JjMjgzNzkzYjYxNzA2N2EyN2UyOWQ5
MWYwLi44NzQ1MjVlMzhjZTcwNGViZTFkYWE3MTBiYjU1YzAxY2MwNThlYWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktp
dFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiBzdHJ1Y3QgQXN5bmNSZWFkRGF0YSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEFzeW5jUmVhZERhdGEoR1JlZlB0cjxH
VGFzaz4mJiB0YXNrLCB2b2lkKiBidWZmZXIsIGdzaXplIGNvdW50KQogICAgICAgICA6IHRhc2so
V1RGTW92ZSh0YXNrKSkKICAgICAgICAgLCBidWZmZXIoYnVmZmVyKQpAQCAtMzksNiArNDAsNyBA
QCBzdHJ1Y3QgQXN5bmNSZWFkRGF0YSB7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgdWludDY0X3QgY29udGVudExlbmd0aDsKICAgICB1aW50NjRfdCBieXRlc1JlY2VpdmVk
OwogICAgIHVpbnQ2NF90IGJ5dGVzUmVhZDsKQEAgLTk5LDcgKzEwMSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMoR0lucHV0U3RyZWFtKiBpbnB1
dFN0cmVhbSwgdm9pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdHJlYW0tPnByaXYt
PnBlbmRpbmdBc3luY1JlYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1v
dmUodGFzayksIGJ1ZmZlciwgY291bnQpOworICAgIHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5j
UmVhZCA9IG1ha2VVbmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVmZmVyLCBj
b3VudCk7CiB9CiAKIHN0YXRpYyBnc3NpemUgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJl
YWRGaW5pc2goR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IEdFcnJvcioqIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBkYTg3NjExMDY0ODFmOTZhOWQ2YTAwMDE4
NGNjZDI0MDdiMWYyNjUwLi41ZWY3YjQ4ZTQyMDgzOWVlZjgwMDgxMWIwZDk3NDBmNDRlMDFmMGFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29j
a2V0VGFza1NvdXAuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IE5ldHdvcmtTb2NrZXRDaGFubmVsOwogCiBjbGFzcyBXZWJTb2NrZXRUYXNrIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJTb2NrZXRUYXNrKE5ldHdvcmtT
b2NrZXRDaGFubmVsJiwgU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSosIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpOwogICAgIH5XZWJTb2NrZXRUYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCmlu
ZGV4IDhmMjA1Y2UwMjk3MTNkOGJhMjEzZjE0M2JhNzFiYjExNDc1MmRlZjUuLjIyYWJkZWM2OWRi
MjQ1YTRjZjk4M2YyNDdiMzhmNzJkOTAwYTZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oCkBA
IC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1JUQ1Byb3Zp
ZGVyOwogCiBjbGFzcyBMaWJXZWJSVENTb2NrZXRDbGllbnQgZmluYWwgOiBwdWJsaWMgc2lnc2xv
dDo6aGFzX3Nsb3RzPD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGVudW0gY2xhc3MgVHlwZSB7IFVEUCwgU2VydmVyVENQLCBDbGllbnRUQ1AsIFNlcnZlckNv
bm5lY3Rpb25UQ1AgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAppbmRleCBlNzg2NTY4ZmY1MDVh
N2I4NzE3ODcwZGY1N2ZhNTdkMTVmNWQ3NzYzLi45MjY2NjhjMzhmZmY3MDhhZTUwMmY1OGZkNDE1
Mjg4MDNlYzU1NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApAQCAtNjQsNiArNjQsNyBAQCB2
b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9j
dW1lbnRJZGVudGlmaWVyIGRvY3VtZQogfQogCiBzdHJ1Y3QgUGVuZGluZ1JlZ2lzdHJhdGlvblJl
cXVlc3QgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBQZW5kaW5n
UmVnaXN0cmF0aW9uUmVxdWVzdChSZWY8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uLCB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nJiYgbmFtZSwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogICAgICAgICA6IGNvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAg
ICAgLCByZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0SWRlbnRpZmllcikKQEAgLTEzNSw3ICsxMzYs
NyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUodWludDY0X3Qg
cmVxdWVzdElkZW50aWZpZXIsIFBBTDo6U2VzcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBwZW5kaW5nUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1JlZ2lzdHJh
dGlvblJlcXVlc3Q+KG1ha2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJ
ZGVudGlmaWVyLCBXVEZNb3ZlKG5hbWUpLCBzZXNzaW9uSUQpOworICAgIGF1dG8gcGVuZGluZ1Jl
cXVlc3QgPSBtYWtlVW5pcXVlPFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVmKG1f
Y29ubmVjdGlvbi5jb25uZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShuYW1l
KSwgc2Vzc2lvbklEKTsKICAgICBhdXRvKiByZWNvcmQgPSAmcGVuZGluZ1JlcXVlc3QtPnJlY29y
ZDsKICAgICBhdXRvIGVycm9yID0gRE5TU2VydmljZVJlZ2lzdGVyUmVjb3JkKHNlcnZpY2UsCiAg
ICAgICAgIHJlY29yZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcAppbmRleCAzNTNlYWM4Y2UxMWI2OTA2ZWZh
ZGQyZmQyNzE4Yjk3YWI1MmNkYTRkLi5hYjcwNmRjMmU5MzRhOWE3ZWY5OTI2ODk3OTc0YmRjNzU0
ZWEzZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgTmV0d29y
a1JUQ01vbml0b3I6OnN0YXJ0VXBkYXRpbmcoKQogewogICAgIG1faXNTdGFydGVkID0gdHJ1ZTsK
ICAgICBtX3J0Y1Byb3ZpZGVyLmNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdKCkgewotICAg
ICAgICBtX21hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdl
cj4oKTsKKyAgICAgICAgbV9tYW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8cnRjOjpCYXNpY05ldHdvcmtNYW5hZ2VyPigpOwogICAgICAgICBtX21hbmFnZXItPlNpZ25h
bE5ldHdvcmtzQ2hhbmdlZC5jb25uZWN0KHRoaXMsICZOZXR3b3JrUlRDTW9uaXRvcjo6b25OZXR3
b3Jrc0NoYW5nZWQpOwogICAgICAgICBtX21hbmFnZXItPlN0YXJ0VXBkYXRpbmcoKTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUHJvdmlkZXIuY3BwCmluZGV4IGE1YWM1NzIxMzc5ZGIzZDFiMjU4NzU1ODYxMDMw
YmJhNGRiOWViOGUuLjE1ZDQ0ZDBhZDlkYjBmM2IwNTk5ZTFhMzNlZmNmZGI4OTYxYTY1ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCBOZXR3b3JrUlRDUHJvdmlkZXI6
Ok5ldHdvcmtSVENQcm92aWRlcihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGlvbgogICAgIDogbV9jb25uZWN0aW9uKCZjb25uZWN0aW9uKQogICAgICwgbV9ydGNNb25pdG9y
KCp0aGlzKQogICAgICwgbV9ydGNOZXR3b3JrVGhyZWFkKGNyZWF0ZVRocmVhZCgpKQotICAgICwg
bV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tl
dEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCisgICAgLCBtX3BhY2tldFNvY2tl
dEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1Bh
Y2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCiB7CiAjaWYgZGVm
aW5lZChOREVCVUcpCiAgICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfTk9O
RSk7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNv
Y2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjoKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0
ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywg
V1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CisgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VV
bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShz
b2NrZXQpLCB0eXBlKSk7CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBT
b2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgUlRDTmV0d29yazo6U29ja2V0QWRkcmVz
cyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCkKQEAgLTE1Myw3
ICsxNTMsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6d3JhcE5ld1RDUENvbm5lY3Rpb24o
dWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3QgbmV3QwogewogICAgIGNhbGxPblJUQ05ldHdv
cmtUaHJlYWQoW3RoaXMsIGlkZW50aWZpZXIsIG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVy
XSgpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNv
Y2tldCA9IG1fcGVuZGluZ0luY29taW5nU29ja2V0cy50YWtlKG5ld0Nvbm5lY3Rpb25Tb2NrZXRJ
ZGVudGlmaWVyKTsKLSAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2Nr
ZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsK
KyAgICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0
Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2Nr
ZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCAzODM4MmIwOWQ0ZmIz
YmUyNjRmODliNzc4NDFhNDFkN2MwOGNhYzA1Li5jNWVmNmQ5OWE1NjBkZDE0ODhmMTg0OTk1YWU4
YTdiMTZkOWFkMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNw
cApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVN
ZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAg
YXV0byByZXBseUVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3Nh
Z2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVj
b2RlciBhbmQgZW5jb2RlciB0byB0aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAg
IHdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRl
Y29kZXIsIHJlcGx5RW5jb2Rlcik7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBDb25uZWN0aW9u
OjptYXJrQ3VycmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8RW5jb2Rlcj4gQ29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKQogewot
ICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2Vp
dmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9
IG1ha2VVbmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRl
c3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPnNldElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAg
ICAvLyBFbmNvZGUgdGhlIHN5bmMgcmVxdWVzdCBJRC4KQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lk
IENvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKCkKICAgICBpZiAo
bV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lu
Y29taW5nTWVzc2FnZXNUaHJvdHRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VzVGhyb3R0
bGVyPigqdGhpcywgJkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk7CisgICAg
bV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyID0gbWFrZVVuaXF1ZTxNZXNzYWdlc1Rocm90dGxl
cj4oKnRoaXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMpOwogfQogCiB2
b2lkIENvbm5lY3Rpb246OnBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWUoKQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVz
c2FnZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byByZXBseUVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01l
c3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElE
KTsKIAogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gIldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIikg
ewogICAgICAgICBpZiAoIW1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5n
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggMjBmNWVjNWIy
MDJiZWMyYmRmNThmMDIwZWJkZWVmODMxNDkzMTFiZi4uYWRjNGFhZDk4ODE4ZmEwNmFmYzZiZTg5
NjE0NWQ1NjMxNTgzMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aApAQCAtNDMzLDcgKzQzMyw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+CiB7CiAgICAgQ09N
UElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0
byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwg
VDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVl
PEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwog
ICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKICAgICAKICAgICByZXR1
cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtNDQ4LDcg
KzQ0OCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdl
LCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90CiB7CiAgICAgQ09NUElMRV9BU1NFUlQo
IVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6
OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90
IGxpc3RlbmVySUQgPSBuZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVu
Y29kZShsaXN0ZW5lcklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IGNjYTA3MzkwYWRl
YzQ0NmRlNzQ2NmNmOGUxMDEyM2MyNzkzODUzNTIuLmZkNTE3MDE3MTJiMDYyOWQ0NzI1MmQwNDA4
OTZjNjRmY2JjYmIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBA
IC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IERlY29kZXI6OnVud3Jh
cEZvclRlc3RpbmcoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdy
YXBwZWRNZXNzYWdlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNz
YWdlLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPERlY29kZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEoKSwgd3JhcHBlZE1lc3NhZ2Uu
c2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgY29uc3QgdWludDhfdCogcm91bmRVcFRvQWxpZ25tZW50KGNvbnN0IHVpbnQ4X3QqIHB0ciwg
dW5zaWduZWQgYWxpZ25tZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVz
c2FnZS5oCmluZGV4IDg1NDUyY2RhN2UwNDVlNDQ1NWUwN2I5M2JhZmNhMzViMTAyMDAxMWUuLmE3
NDlhYWI4NzAwNTRjZWI2OTBlNWYxNGY0MDc1NjNmZmNkMGY5YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIGhh
bmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVy
LCBDKiBvYmplY3QsIE1GCiAgICAgfQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21w
bGV0aW9uSGFuZGxlciA9IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBt
YWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewotICAgICAgICBh
dXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6
YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtl
VW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCks
IDApOwogICAgICAgICAqZW5jb2RlciA8PCBsaXN0ZW5lcklEOwogICAgICAgICBUOjpzZW5kKFdU
Rk1vdmUoZW5jb2RlciksIFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggM2Q2ZjM0Mjg5
MmJjODgzOTA2NzhlOGMzNjQ2MzkxMTBkZTRmNTcyNi4uNzcxNDQ4YTQ0ZDA4ODZkZDAxYmIwYzJk
ZTY0ZGM5YTQyODYyN2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZXNzYWdlU2VuZGVyIHsKICAgICB7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoIVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAot
ICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFU6OnJlY2Vp
dmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRl
c3RpbmF0aW9uSUQpOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMo
KSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVy
KSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Y29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDM3MDJhY2M3ZGY1MWJkODQ2YjkzYWY2NGJmMDcw
YTRjMTAwMzkxOWYuLjg3ZGQyOGY4MDg2NzgyY2UyYTNkZjc5MGY0YWMwZTZkNzQ5ZGFiNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29j
b2EubW0KQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3hwY0Nvbm5lY3Rp
b24oeHBjQ29ubmVjdGlvbikKICAgICAgICAgLCBtX3dhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OndhdGNoZG9nVGltZXJG
aXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAsIG1fYXNzZXJ0aW9uKHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHhwY19jb25uZWN0
aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdldCgpKSwgIkNvbm5lY3Rpb25UZXJtaW5hdGlv
bldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kKSkKKyAgICAg
ICAgLCBtX2Fzc2VydGlvbihtYWtlVW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9u
Pih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJDb25uZWN0
aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dy
b3VuZCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNo
b3QoaW50ZXJ2YWwpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3Blbigp
CiAgICAgICAgIG1faXNDb25uZWN0ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gU2Vu
ZCB0aGUgaW5pdGlhbGl6ZSBtZXNzYWdlLCB3aGljaCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9y
IHRoZSBzZXJ2ZXIgdG8gdXNlLgotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsKKyAgICAgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25u
ZWN0aW9uIiwgMCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQ
b3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5k
U291cmNlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAg
ICAgICB1aW50OF90KiBib2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyICsg
MSk7CiAgICAgICAgIHNpemVfdCBib2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gc2l6ZW9m
KG1hY2hfbXNnX2hlYWRlcl90KTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxE
ZWNvZGVyPihib2R5LCBib2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KGJvZHksIGJvZHlTaXplLCBudWxs
cHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9KTsKICAgICB9CiAKICAgICBib29sIG1lc3NhZ2VC
b2R5SXNPT0wgPSBoZWFkZXItPm1zZ2hfaWQgPT0gb3V0T2ZMaW5lQm9keU1lc3NhZ2VJRDsKQEAg
LTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1l
c3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgICAgIHVpbnQ4X3Qq
IG1lc3NhZ2VCb2R5ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRlc2NyaXB0b3ItPm91dF9vZl9s
aW5lLmFkZHJlc3MpOwogICAgICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gZGVzY3JpcHRv
ci0+b3V0X29mX2xpbmUuc2l6ZTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxE
ZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBbXShjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBsZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rl
cj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgbGVuZ3RoKSB7CiAgICAgICAgICAgICB2bV9kZWFsbG9jYXRlKG1hY2hfdGFza19z
ZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PihidWZmZXIpLCBsZW5ndGgpOwog
ICAgICAgICB9LCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAgfQpAQCAtNDU4LDcgKzQ1OCw3
IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIo
bWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IGRl
c2NyaXB0b3JEYXRhOwogICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBoZWFkZXItPm1zZ2hf
c2l6ZSAtIChkZXNjcmlwdG9yRGF0YSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRl
cikpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHks
IG1lc3NhZ2VCb2R5U2l6ZSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51
bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVy
IHNpemUgc2hvdWxkIGFsd2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KQEAg
LTUyNiw3ICs1MjYsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRs
ZXIoKQogICAgICAgICByZXR1cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZGVjb2Rlci0+
c2V0SW1wb3J0YW5jZUFzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVlPEltcG9ydGFuY2VBc3NlcnRp
b24+KGhlYWRlcikpOworICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24obWFrZVVu
aXF1ZTxJbXBvcnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKICNlbmRpZgogCiAgICAgaWYgKGRl
Y29kZXItPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdl
TmFtZSgpID09ICJJbml0aWFsaXplQ29ubmVjdGlvbiIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjNiNmJlNzI3MWU0
NDU4ODM5NTA1YWE5MTVlMzg3M2Y4NTE0ZGVkZC4uNzdhZjliMjg1ODQ1MjZiYjcwYzdmZmM4ZTMy
NTZhM2JhYTEzYTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5p
eC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIENvbm5lY3Rpb246
OnByb2Nlc3NNZXNzYWdlKCkKICAgICBpZiAobWVzc2FnZUluZm8uaXNCb2R5T3V0T2ZMaW5lKCkp
CiAgICAgICAgIG1lc3NhZ2VCb2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob29sTWVz
c2FnZUJvZHktPmRhdGEoKSk7CiAKLSAgICBhdXRvIGRlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBX
VEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNv
ZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92
ZShhdHRhY2htZW50cykpOwogCiAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRl
Y29kZXIpKTsKIApAQCAtNDgyLDcgKzQ4Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1
dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFV09VTERCTE9DSykg
ewogI2lmIFVTRShHTElCKQotICAgICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOworICAg
ICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IG1ha2VVbmlxdWU8VW5peE1lc3NhZ2U+
KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOwogICAgICAgICAgICAgbV93cml0ZVNvY2tldE1vbml0
b3Iuc3RhcnQobV9zb2NrZXQuZ2V0KCksIEdfSU9fT1VULCBtX2Nvbm5lY3Rpb25RdWV1ZS0+cnVu
TG9vcCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoR0lPQ29uZGl0
aW9uIGNvbmRpdGlvbikgLT4gZ2Jvb2xlYW4gewogICAgICAgICAgICAgICAgIGlmIChjb25kaXRp
b24gJiBHX0lPX09VVCkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9wZW5kaW5nT3V0
cHV0TWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4v
Q29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVj
dGlvbldpbi5jcHAKaW5kZXggNjQwZjQ1Mjk5ZTNiMjY2ZTAyNjljY2NjYzk0NTJiM2JhNTc5ZWZi
MS4uNWFkZmQ4MmJlY2E0NmRiMDI0NDdlOGJjYjZkMzg0YzJjMDE1NmE2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMTQwLDcg
KzE0MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAgICAgICAgIGlm
ICghbV9yZWFkQnVmZmVyLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIG1l
c3NhZ2UsIGxldCdzIGRpc3BhdGNoIGl0LgogICAgICAgICAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+
IGF0dGFjaG1lbnRzKDApOwotICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBu
dWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgICAgICAgICBhdXRvIGRlY29kZXIg
PSBtYWtlVW5pcXVlPERlY29kZXI+KG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5z
aXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKICAgICAgICAgICAgIHByb2Nl
c3NJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vTW9kdWxlLmgKaW5kZXggZGQyYjY2YTdjYTE5NTkxYjZlZTY3YjhmMjg0ZmQyNTRhMzgy
Nzg1ZC4uNTY4MzcyMTNkZmJlYWViNGQ1OWU5M2MzZDQ5ZjZjN2FjMmY1MzRjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL01vZHVsZS5oCkBAIC00NCw2ICs0NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9HTW9kdWxl
IEdNb2R1bGU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTW9kdWxlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNb2R1bGUpOwog
cHVibGljOgogICAgIGV4cGxpY2l0IE1vZHVsZShjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KaW5kZXgg
ODIzMmRiNGViNTZlYWNiNmY4Y2U4NTU2NjRiOGI3ODJhYjY1MGE5OC4uN2FlZTQ3ZWFiOTVmNThh
NmI0MTc4NWMwZjRmZjdmMDJiMDRjZjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJI
b3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQ
b3J0KQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBt
YWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAKICAgICBOU0RpY3Rpb25hcnkgKm9w
dGlvbnMgPSBAewogICAgICAgICBrQ0FDb250ZXh0UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5z
ZW5kUmlnaHQoKSksCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3Rp
bmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hCiAj
aWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQogc3RkOjp1bmlxdWVfcHRyPExh
eWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFs
SG9zdGluZ1Byb2Nlc3MoY29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMp
CiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXll
ckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VV
bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5t
X2xheWVySG9zdGluZ01vZGUgPSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCkBAIC04Miw3
ICs4Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3Rp
bmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpCiAjaWYgUExBVEZPUk0oTUFDKQogc3Rk
Ojp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNy
ZWF0ZUZvckV4dGVybmFsUGx1Z2luSG9zdGluZ1Byb2Nlc3MoKQogewotICAgIGF1dG8gbGF5ZXJI
b3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsK
KyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0Nv
bnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0g
TGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQcm9jZXNzOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQt
Pm1fY29udGV4dCA9IFtDQUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9uOkNHU01haW5D
b25uZWN0aW9uSUQoKSBvcHRpb25zOkB7IGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJp
Z25vcmUiIH1dOwogICAgIHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IDk3
ZTJkZjM1M2IzNjgyMzkyOWEzMWFlOTU3YTFkZGNkYzIxYzM3ZDYuLmI5OGNhOTRiYzllZmMyM2Iy
ZWQ4MThhNWI3ODQzMzcyMzE3ZTljNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTQ5LDcgKzQ5LDggQEAgY2xhc3Mg
U2hhcmVhYmxlQml0bWFwOwogY2xhc3MgV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiBzdHJ1Y3QgUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOwogCi1jbGFzcyBQbHVnaW5Db250cm9sbGVyUHJveHkgOiBQ
bHVnaW5Db250cm9sbGVyIHsKK2NsYXNzIFBsdWdpbkNvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBQ
bHVnaW5Db250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQbHVnaW5Db250cm9sbGVyUHJveHkpOwogCiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNw
cAppbmRleCAzNjZiOTgzY2MwYmVhNTgzODYzYTdjZDYzMzNmOTQ4ZGY3NDg0NDM1Li5jZTgyNjdk
MmVlNzhjYWNiM2RkYTBhOWIzNzViZmFhZmM2ODZlZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTIxMiw3ICsy
MTIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbgogCiB2b2lkIFdlYlByb2Nlc3NDb25uZWN0
aW9uOjpjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMm
IGNyZWF0aW9uUGFyYW1ldGVycywgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRz
LCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCkKIHsKLSAgICBhdXRvIHBsdWdpbkNvbnRy
b2xsZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29udHJvbGxlclByb3h5Pih0aGlz
LCBjcmVhdGlvblBhcmFtZXRlcnMpOworICAgIGF1dG8gcGx1Z2luQ29udHJvbGxlclByb3h5ID0g
bWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJveHk+KHRoaXMsIGNyZWF0aW9uUGFyYW1ldGVy
cyk7CiAKICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBsdWdpbkNvbnRyb2xsZXJQcm94eVB0
ciA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVS
TC5oCmluZGV4IGJiZDQyM2JjZjU3MTVlNGFkNzBiZjUyZGVmOGMyYzMwYzQxYmYwZjYuLjNlNjFi
YmQwMDBlMWY0Y2RiNmMyYTM2Y2E0Zjc1ZTkwNGY4MzVjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJVVJMLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgVVJMIDogcHVibGljIE9iamVjdEltcGw8
T2JqZWN0OjpUeXBlOjpVUkw+IHsKICAgICB7CiAgICAgICAgIEFTU0VSVChiYXNlVVJMKTsKICAg
ICAgICAgYmFzZVVSTC0+cGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICBhdXRvIGFic29s
dXRlVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oKmJhc2VVUkwtPm1fcGFyc2VkVVJM
LmdldCgpLCByZWxhdGl2ZVVSTCk7CisgICAgICAgIGF1dG8gYWJzb2x1dGVVUkwgPSBtYWtlVW5p
cXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsK
ICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGFic29sdXRlVVJMU3RyaW5nID0gYWJzb2x1dGVV
UkwtPnN0cmluZygpOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFQSTo6VVJMKFdU
Rk1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOwpAQCAtMTIxLDcgKzEyMSw3
IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAg
ICAgewogICAgICAgICBpZiAobV9wYXJzZWRVUkwpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIG1fcGFyc2VkVVJMID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OlVSTD4oV1RGOjpVUkwoKSwg
bV9zdHJpbmcpOworICAgICAgICBtX3BhcnNlZFVSTCA9IG1ha2VVbmlxdWU8V1RGOjpVUkw+KFdU
Rjo6VVJMKCksIG1fc3RyaW5nKTsKICAgICB9CiAKICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJ
bnZvY2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVj
dEludm9jYXRpb24ubW0KaW5kZXggMjU5Mjg0N2UzNDFhM2I2ZjcyODc1NGJkNzg4YTY2NTNkZDIy
MTViMC4uZDNmZjYyMWVjMGY0YTEwZDc1NjQ4N2NjMjE2ZjQ5NWNlODZkNzJhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9j
YXRpb24ubW0KQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVPYmplY3RJbnZvY2F0aW8KICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShibG9ja1NpZ25hdHVyZSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0Lm1fcmVwbHlJbmZvID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1vdmUoYmxvY2tTaWduYXR1cmUpKTsKKyAgICAgICAg
cmVzdWx0Lm1fcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxSZXBseUluZm8+KHJlcGx5SUQsIFdURk1v
dmUoYmxvY2tTaWduYXR1cmUpKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQppbmRleCA2NWRhOWVmZjAxYjQzZWE1NzEwODAyZjZjNDZhNmQwMjAyNjU2OTNlLi40
ODk5NzYyOTMyYjdhZjY5MjIxZDA1MGFmNjc0NTgzNmZjMzg3YjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgLSAoaWQpX2luaXRXaXRoV2ViUGFnZTooV2ViS2l0OjpX
ZWJQYWdlJilwYWdlCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOworICAgIF9yZW1vdGVP
YmplY3RSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4o
c2VsZiwgcGFnZSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTExOSw3ICsxMTksNyBAQCAt
IChpZClfaW5pdFdpdGhXZWJQYWdlUHJveHk6KFdlYktpdDo6V2ViUGFnZVByb3h5JilwYWdlCiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3Rl
T2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOworICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9
IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTE2MCw3ICsxNjAsNyBAQCAtICh2b2lkKV9zZW5kSW52
b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiBpbnRlcmZhY2U6KF9XS1JlbW90ZU9i
amVjdEludAogICAgICAgICBpZiAoc3RyY21wKFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVX
aXRoT2JqQ1R5cGVzOnJlcGx5QmxvY2tTaWduYXR1cmVdLm1ldGhvZFJldHVyblR5cGUsICJ2Iikp
CiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRp
b24gZm9ybWF0OkAiUmV0dXJuIHZhbHVlIG9mIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgJ3ZvaWQn
LiAoJXMpIiwgc2VsX2dldE5hbWUoaW52b2NhdGlvbi5zZWxlY3RvcildOwogCi0gICAgICAgIHJl
cGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9u
OjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIHJlcGx5QmxvY2tTaWduYXR1
cmUpOworICAgICAgICByZXBseUluZm8gPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0
SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigpLCByZXBseUJs
b2NrU2lnbmF0dXJlKTsKIAogICAgICAgICAvLyBSZXBsYWNlIHRoZSBibG9jayBvYmplY3Qgc28g
d2Ugd29uJ3QgdHJ5IHRvIGVuY29kZSBpdC4KICAgICAgICAgaWQgbnVsbCA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVu
dUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1l
bnVJdGVtLmNwcAppbmRleCA3ZWQxMWU2YzE3MWUyMGJlMWU5ZWFkYjMwN2U3MWZjNDhiZmRlODQ5
Li5mYWVmZWQyZGNjODM4ZWU5NTczOTA2NWRhYzYzZjEzNTYzZjBkM2IwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRDb250ZXh0
TWVudUl0ZW1DcmVhdGUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYKIHsKICAgICBXZWJL
aXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBOVUxMKSk7CiAKLSAgICBpdGVt
LT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xp
Yj4oaXRlbURhdGEpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJD
b250ZXh0TWVudUl0ZW1HbGliPihpdGVtRGF0YSk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvbnRl
eHRNZW51SXRlbURhdGE+JiBzdWJNZW51ID0gaXRlbURhdGEuc3VibWVudSgpOwogICAgIGlmICgh
c3ViTWVudS5pc0VtcHR5KCkpCiAgICAgICAgIHdlYmtpdENvbnRleHRNZW51SXRlbVNldFN1Yk1l
bnUoaXRlbSwgYWRvcHRHUmVmKHdlYmtpdENvbnRleHRNZW51Q3JlYXRlKHN1Yk1lbnUpKSk7CkBA
IC0xNDAsNyArMTQwLDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fbmV3KEd0a0FjdGlvbiogYWN0aW9uKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KEdUS19JU19BQ1RJT04oYWN0aW9uKSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRDb250ZXh0TWVu
dUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVu
dUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbik7
CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRl
bUdsaWI+KGFjdGlvbik7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBA
QCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJv
bV9nYWN0aW9uKEdBY3Rpb24qIGFjdGlvbgogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCF0YXJn
ZXQgfHwgZ192YXJpYW50X2lzX29mX3R5cGUodGFyZ2V0LCBnX2FjdGlvbl9nZXRfcGFyYW1ldGVy
X3R5cGUoYWN0aW9uKSksIG51bGxwdHIpOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBp
dGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9D
T05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24sIFN0cmluZzo6
ZnJvbVVURjgobGFiZWwpLCB0YXJnZXQpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFr
ZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24sIFN0cmluZzo6ZnJvbVVURjgo
bGFiZWwpLCB0YXJnZXQpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0xOTQsNyArMTk0LDcg
QEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zy
b21fc3RvY2tfYWN0aW9uKFdlYktpdENvbnQKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSog
aXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
Q09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5
cGUgPSB3ZWJraXRDb250ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2Fi
bGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4
dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25H
ZXRMYWJlbChhY3Rpb24pKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8
V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRB
Y3Rpb25UYWcoYWN0aW9uKSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRMYWJlbChhY3Rpb24p
KTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMjE2LDcgKzIxNiw3IEBAIFdlYktpdENvbnRl
eHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlv
bl93aXRoX2xhYmVsCiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRf
Q09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9J
VEVNLCBudWxscHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29u
dGV4dE1lbnVBY3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6
IEFjdGlvblR5cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0
QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKKyAgICBpdGVtLT5w
cml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwg
d2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgU3RyaW5nOjpmcm9t
VVRGOChsYWJlbCkpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0yMzksNyArMjM5LDcgQEAg
V2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3dpdGhf
c3VibWVudShjb25zdCBnY2hhciogbGEKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBX
ZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAg
aXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRl
bUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZywgU3Ry
aW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVu
aXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1C
YXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKICAgICBpdGVtLT5w
cml2LT5zdWJNZW51ID0gc3VibWVudTsKICAgICB3ZWJraXRDb250ZXh0TWVudVNldFBhcmVudEl0
ZW0oc3VibWVudSwgaXRlbSk7CiAKQEAgLTI1Niw3ICsyNTYsNyBAQCBXZWJLaXRDb250ZXh0TWVu
dUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KGNvbnN0IGdj
aGFyKiBsYQogV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1f
bmV3X3NlcGFyYXRvcih2b2lkKQogewogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9
IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVY
VF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oU2VwYXJhdG9yVHlwZSwgQ29udGV4
dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRl
bSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oU2VwYXJhdG9yVHlwZSwgQ29u
dGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpKTsKIAogICAgIHJldHVybiBpdGVtOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggNWVkMTQzYTk5ODU5MDQ5NmMzMzc2YTU2OTg4MTE1
M2E2YTAyYjI4Yy4uZjMzY2FiMzA1ZmVlMTI3NGZhYTdiMjE4MzhlOWJiN2VmNzZiYmYyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oCkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5CiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PgogICAgICwgcHVi
bGljIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBDbGllbnQgewogICAgICAgICB2
aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
YWMubW0KaW5kZXggN2FkMzMzMTQ1MzkxODg4OWZkM2I5ODk2Mzg2YThiZWQxZjUxOWExNC4uMzkx
NGE0YzIwMTRhOWE1NGE2MzQ4OGE0ZTc0MzgxOWM2YThkYjNhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtNzksNyArNzksNyBAQCB2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGlu
Z1VSTAogCiAgICAgICAgIEFTU0VSVCh2aWV3Q29udHJvbGxlcik7CiAKLSAgICAgICAgcGF5bWVu
dENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29yZGlu
YXRvclByb3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmlld0NvbnRyb2xsZXIpOworICAgICAg
ICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbWFr
ZVVuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigqcGF5bWVudENvb3Jk
aW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJvbGxlcik7CiAKICAg
ICAgICAgQVNTRVJUKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyk7CiAg
ICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93ID0gW05TV2luZG93
IHdpbmRvd1dpdGhDb250ZW50Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuaAppbmRleCA4NmU3NDRjMTA4ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2
YjE2Li40ZjgzNzAyNGVlNWYzNGZmYTBlNjliYWY3YjNiZmM4ODFhNTI4MDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuaApAQCAtNTUsNiArNTUsNyBAQCBlbnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24gOiB1aW50OF90OwogdXNpbmcgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT47CiAKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEF1dGhlbnRpY2F0
aW9uTWFuYWdlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEF1dGhlbnRpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgQXV0aGVudGljYXRpb25NYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggNTZh
NzgzYTBiMjNiMjZhMjBjNWI4ZmE0YTU5ZjE1N2E0YzAzN2JiNy4uMmQ1ZDFhZmMwODI3YTQxYTBi
ZDgzYmJhYTgwZjc4ZjYxNGY1YmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNh
bmRib3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZSB0eXBlLCBPcHRpb25hbDxwaWRfdD4gcGlkID0gV1RGOjpudWxsb3B0KQogICAg
IHsKQEAgLTE2MCw3ICsxNjEsNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8SGFuZGxlPgogICAgICAgICBy
ZXR1cm4ge3sgfX07CiAKICAgICBIYW5kbGUgaGFuZGxlOwotICAgIGhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb25JbXBsPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVu
Y2Uuc2l6ZSgpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gbWFrZVVuaXF1ZTxT
YW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YVJl
ZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAgICAgcmV0dXJuIFdURk1v
dmUoaGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CmluZGV4IDE4ZGMyZmI4ZWQxM2QxNTM0MTJlYTMwZTI5MTExNzhlYWNlZmM1YWUuLjcwNDMwZjQ0
MzEyYzhhNTYyY2UxNWZjNzMyZjY5ZDM4NzZmZTljMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBUZXh0dXJlTWFwcGVyTGF5
ZXImIHRleG1hcExheWVyKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXImIGNvbXBvc2l0aW9uTGF5
ZXIpCiB7CiAgICAgYXV0byYgY29tcG9zaXRpb25TdGF0ZSA9IGNvbXBvc2l0aW9uTGF5ZXJJbXBs
KGNvbXBvc2l0aW9uTGF5ZXIpLmNvbXBvc2l0aW9uU3RhdGUoKTsKICAgICBpZiAoIWNvbXBvc2l0
aW9uU3RhdGUubGF5ZXIpIHsKLSAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXllciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOworICAgICAgICBjb21wb3NpdGlvblN0
YXRlLmxheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CiAgICAgICAgIGNv
bXBvc2l0aW9uU3RhdGUubGF5ZXItPnNldElEKGNvbXBvc2l0aW9uTGF5ZXIuaWQoKSk7CiAgICAg
fQogICAgIHJldHVybiAqY29tcG9zaXRpb25TdGF0ZS5sYXllcjsKQEAgLTQxOCw3ICs0MTgsNyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZW5zdXJlUm9vdExheWVyKCkKICAgICBp
ZiAobV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcm9vdExheWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAgbV9yb290TGF5ZXIgPSBt
YWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICBtX3Jvb3RMYXllci0+c2V0TWFz
a3NUb0JvdW5kcyhmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxz
ZSk7CiAgICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgwLCAwLCAw
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRD
b21wb3NpdG9yLmNwcAppbmRleCBjZDNlNTdjNmJjYjlkOGRjMWZmOTljYWQ1OWM0ZTEzZmY2NjAz
YTZiLi5iY2IyMzU5NzViMTMzZDJlMjc2NzZkMjgzZmU4OTEzODFhMGQ1ZDFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9z
aXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmPFRocmVhZGVkQ29tcG9zaXRvcj4gVGhyZWFkZWRDb21w
b3NpdG9yOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlzcGwKIFRocmVhZGVkQ29t
cG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCYgY2xpZW50LCBUaHJlYWRlZERpc3Bs
YXlSZWZyZXNoTW9uaXRvcjo6Q2xpZW50JiBkaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQsIFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBm
bG9hdCBzY2FsZUZhY3RvciwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBwYWludEZsYWdzKQog
ICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wYWludEZsYWdzKHBhaW50RmxhZ3MpCi0g
ICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChzdGQ6Om1ha2VfdW5pcXVlPENvbXBvc2l0aW5nUnVu
TG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQorICAgICwgbV9jb21wb3NpdGlu
Z1J1bkxvb3AobWFrZVVuaXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+KFt0aGlzXSB7IHJlbmRlckxh
eWVyVHJlZSgpOyB9KSkKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9N
T05JVE9SKQogICAgICwgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3IoVGhyZWFkZWREaXNwbGF5UmVm
cmVzaE1vbml0b3I6OmNyZWF0ZShkaXNwbGF5SUQsIGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVu
dCkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXIuaAppbmRleCAxYTA1NDc1MDdlYzFjMWE4MTI0NzJiYjdlYmQ5
ZmEwZDRhZDEzYTQ4Li4wN2U4YmJjOWI1YzljM2M2YzlkOGQ2YzNiOTQ1ZTUzOTMyN2I4NzVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIE5QVmFyaWFudERhdGE7CiBjbGFz
cyBQbHVnaW47CiAKIGNsYXNzIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlcik7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5kZXggNjFlMWY5NDAyNTIzODVkYjgwNWVjMTIy
ZGZmMWM5ZTRmMWI3MjU2My4uZDRiNTI0YzgyOWVjNjY3MjFkZjFhNzBkMmQ1MTNhZTRlYjNmM2Qy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVj
dE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVj
dE1hcC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBOUFJlbW90ZU9iamVjdE1hcDo6bnBPYmpl
Y3RQcm94eURlc3Ryb3llZChOUE9iamVjdCogbnBPYmplY3QpCiB1aW50NjRfdCBOUFJlbW90ZU9i
amVjdE1hcDo6cmVnaXN0ZXJOUE9iamVjdChOUE9iamVjdCogbnBPYmplY3QsIFBsdWdpbiogcGx1
Z2luKQogewogICAgIHVpbnQ2NF90IG5wT2JqZWN0SUQgPSBnZW5lcmF0ZU5QT2JqZWN0SUQoKTsK
LSAgICBtX3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIHN0ZDo6bWFrZV91bmlx
dWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBP
YmplY3QpLnJlbGVhc2UoKSk7CisgICAgbV9yZWdpc3RlcmVkTlBPYmplY3RzLnNldChucE9iamVj
dElELCBtYWtlVW5pcXVlPE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyPih0aGlzLCBwbHVnaW4sIG5w
T2JqZWN0SUQsIG5wT2JqZWN0KS5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0SUQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCmluZGV4IDdiMDJiNWUxMmYzMmM3MmQzOGY1
MjA0NWJiNmQ2YTIzYjYyYWUyZTEuLjI2MWQ3YTg5NjkzMDZhODkyNWM0YWIzNmU0Nzk0N2IzOTZj
MTI1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0yMDYsNyArMjA2LDcgQEAg
c3RhdGljIGJvb2wgbW9kdWxlTWl4ZXNHdGtTeW1ib2xzKE1vZHVsZSogbW9kdWxlKQogCiBib29s
IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKIHsKLSAgICBtX21vZHVsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8TW9kdWxlPihtX3BsdWdpblBhdGgpOworICAgIG1fbW9kdWxlID0gbWFrZVVu
aXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7CiAgICAgaWYgKCFtX21vZHVsZS0+bG9hZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgK
aW5kZXggZWEyYmU5MzA4Y2JiZTZkZDdlYjhjZjJjNTg4YzhmZjYxOWVhOTkzYy4uOTU1MTNmNDc5
ODJmZDY3ZWU1Zjk4ZGQ3OTk2Yzg1OThmMWY0NjNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgRW5jb2RlcjsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBMYXllckNoYW5nZSB7CiAgICAg
ICAgIE5hbWVDaGFuZ2VkICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDEsCkBAIC05NCw2
ICs5NSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKICAgICB9OwogCiAg
ICAgc3RydWN0IExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBMYXllckNyZWF0aW9uUHJvcGVydGllcygpOwog
CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwpAQCAtMTA5LDYgKzEx
MSw3IEBAIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKICAgICB9OwogCiAgICAg
c3RydWN0IExheWVyUHJvcGVydGllcyB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVzKCk7CiAgICAgICAgIExheWVyUHJvcGVy
dGllcyhjb25zdCBMYXllclByb3BlcnRpZXMmIG90aGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLm1tCmluZGV4IDFmMmRlNGQwMzdlYTNlODMwMjg3YWI5OGNiMmE4ZjIxYzRl
Y2VhMmUuLjBkMjI3ZmZjMWQ5YzU1NTZhYWQ5MmU3ZWUxNTc2NWUxNmIzNDQyZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTE1MiwxMyArMTUyLDEzIEBAIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyhj
b25zdCBMYXllclByb3BlcnRpCiAgICAgLy8gRklYTUU6IExheWVyUHJvcGVydGllcyBzaG91bGRu
J3QgYmUgY29weWFibGU7IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y2xvbmUgc2hvdWxkIGNvcHkg
dGhlIHJlbGV2YW50IHByb3BlcnRpZXMuCiAKICAgICBpZiAob3RoZXIudHJhbnNmb3JtKQotICAg
ICAgICB0cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKKyAgICAgICAgdHJhbnNmb3JtID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnRyYW5zZm9ybSk7CiAKICAg
ICBpZiAob3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pCi0gICAgICAgIHN1YmxheWVyVHJhbnNmb3Jt
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVy
LnN1YmxheWVyVHJhbnNmb3JtKTsKKyAgICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zv
cm0pOwogCiAgICAgaWYgKG90aGVyLmZpbHRlcnMpCi0gICAgICAgIGZpbHRlcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0ZXJzKTsKKyAg
ICAgICAgZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKm90
aGVyLmZpbHRlcnMpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXll
clByb3BlcnRpZXM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC0zNTQs
NyArMzU0LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0
aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAot
ICAgICAgICByZXN1bHQudHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAgcmVzdWx0LnRyYW5zZm9ybSA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CiAg
ICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIFN1YmxheWVyVHJhbnNm
b3JtQ2hhbmdlZCkgewpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFuc2Zvcm0pKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CisgICAg
ICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFu
Z2VkUHJvcGVydGllcyAmIEhpZGRlbkNoYW5nZWQpIHsKQEAgLTQyNSw3ICs0MjUsNyBAQCBib29s
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocm91bmRlZFJl
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgcmVzdWx0
LnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZsb2F0Um91bmRl
ZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJlY3QgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKICAgICB9
CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgU2hhcGVQYXRoQ2hhbmdlZCkg
ewpAQCAtNDcxLDcgKzQ3MSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okxh
eWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNGcm9udEJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGlmIChoYXNGcm9udEJ1ZmZlcikgewotICAgICAgICAgICAgYXV0byBiYWNr
aW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPihudWxs
cHRyKTsKKyAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVM
YXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKCpiYWNraW5nU3RvcmUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIApAQCAtNDg2LDcgKzQ4Niw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICB9
CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgRmlsdGVyc0NoYW5nZWQpIHsK
LSAgICAgICAgYXV0byBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zPigpOworICAgICAgICBhdXRvIGZpbHRlcnMgPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OkZpbHRlck9wZXJhdGlvbnM+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmZpbHRl
cnMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1bHQuZmlsdGVycyA9
IFdURk1vdmUoZmlsdGVycyk7CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJU
cmVlVHIKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJQcm9wZXJ0aWVz
PiBsYXllclByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyUHJvcGVydGllcz4oKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGllcz4gbGF5ZXJQcm9wZXJ0aWVz
ID0gbWFrZVVuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoKmxheWVyUHJvcGVydGllcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApp
bmRleCA5NzhjNGJiZWQ3YjVjZDkxY2FhZWMxNTRiYzhiYTE0YmFiNzUzNDYxLi5lODI2YTMwYjEy
ZTI0ZWNmNDMwYzY5Yjc2YjFhNmYyOGY1YmI5OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBAIC01MjIsNyArNTIyLDcgQEAg
Ym9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzTmV3Um9vdE5vZGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKKyAgICBtX3Njcm9sbGlu
Z1N0YXRlVHJlZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOwogCiAgICAgYm9v
bCBoYXNDaGFuZ2VkUHJvcGVydGllczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0NoYW5n
ZWRQcm9wZXJ0aWVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1No
YXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJl
YWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCBjNzM0N2M3OWU2NjkzODM3ODVkMDVkMjI5ZTQ3Yjc0
N2MxZjBjYTU1Li5iMmNkNDg0NjY3N2NlOTdkZmFjMjg1ODQ5MGMxZWE0MzRmOTYyOTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8u
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFNo
YXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBpbWFnZSA9IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOwogICAgIFJlZlB0cjxj
YWlyb190PiBiaXRtYXBDb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRlKGltYWdlLmdldCgp
KSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBT
aGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDkyZjEwNjJiMjkwZjc3NWRi
NWFlN2VkMTk1MmE5Y2E4NThhYjMxMjIuLjAxNmFiYmQ5OTNlMThhNDVjMDFhN2YwNDk3ZGNjMzFh
NTNiNDM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJp
dG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBD
Ry5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0
PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiAgICAgQ0dDb250ZXh0
VHJhbnNsYXRlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDAsIG1fc2l6ZS5oZWlnaHQoKSk7CiAg
ICAgQ0dDb250ZXh0U2NhbGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwgMSwgLTEpOwogCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihiaXRtYXBDb250ZXh0Lmdl
dCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGJpdG1hcENvbnRl
eHQuZ2V0KCkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEludFJlY3QmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9T
aGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hh
cmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCmluZGV4IDYwZjhmM2NiNzMyODliNmIwZDJmNGMzNTE0
NmYxY2ZlZDQwMzRhODAuLjEwMDFlZTNlNTI5MmVkY2I1MzZmODIzMzAzYzJjNzRjMmIxZTkyOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJl
Y3QyRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERp
cmVjdDJELmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250
ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7CiAgICAgbV9i
aXRtYXAgPSBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKTsKICAgICBDT01QdHI8SUQyRDFSZW5kZXJU
YXJnZXQ+IGJpdG1hcENvbnRleHQgPSBEaXJlY3QyRDo6Y3JlYXRlUmVuZGVyVGFyZ2V0RnJvbVdJ
Q0JpdG1hcChtX2JpdG1hcC5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3Jh
cGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZhY3Rvcnko
Yml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29u
dGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENv
bnRleHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0
JiBzcmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1
dG9tYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0
aW9uQ2xpZW50LmgKaW5kZXggMjk5NTgxMDk1ZGQxZDFiMTVhZmVhYmI0ZGFjYmVkMDVkMmJkZDEx
NC4uNTQ1YTdiZTRkNDgxOTcxMzI4ZDFjM2Y3OWQyNzFlZDlhMjFmODM5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCkBAIC0zNSw2
ICszNSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IEF1dG9tYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkF1dG9tYXRpb25DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApp
bmRleCAyOGZhZjY4NzE5YTlkNzI4ZDUxYjZjNzcyZDg0ZTE3YjY0OTA5N2NhLi4yYWUyYTUwMzRj
M2E0MTcxY2NmNDc3Yjk3ODViNzNhNmYyNGRiODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtNDEs
NiArNDEsNyBAQCBlbnVtIEF1dG9tYXRpb25TZXNzaW9uQnJvd3NpbmdDb250ZXh0T3B0aW9ucyA6
IHVpbnQxNl90IHsKIH07CiAKIGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEphdmFTY3Jp
cHREaWFsb2dUeXBlIHsKICAgICAgICAgQWxlcnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGFmMTA5YzFkZjY3MDBkYzIz
ZTJlMzMxYjBiNTBlZmJjZmY0Mjg2NjcuLjgxNmY3MWUxMjY3MGNiM2Q2NWIxZTYzMjgwM2E2YjQw
ZWY3ZGJmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZXh0TWVudUNsaWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5h
bWVzcGFjZSBBUEkgewogCiBjbGFzcyBDb250ZXh0TWVudUNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29udGV4dE1lbnVDbGllbnQo
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmluZGV4IDBmOGNhYjk3MzI5ZjA5NTdmMzJi
NDdjMjc3ODFkMWU3ODZmYTE0N2QuLjhiNDRhM2Y0NTZjNTMyYWQzMzgwNmVmNjliNDdlYWQwOTQx
ZGY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50LmgKaW5kZXggOTJiMmQ2NzVkZmNhMmNhZmRhMjExYjNmNzFjNTc5OGFmZDQ1ZDYyYS4uYjRl
MmFkZTcyOWVhNjZkOGRkYThkZDUwMjExOGFlNGFiZGIyMTg2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgK
QEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEaWN0aW9uYXJ5OwogCiBj
bGFzcyBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApp
bmRleCAwMjM3NmUxZTExMGQ0NzZlYjJiOTE4NWU0ZTJmY2Q4ZDZlMTMzMmUxLi5iMmVhY2M5Yjgz
MjU5OGIxN2E5OWRiZDlkNjdlZjI0ZTQ3M2FlZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApAQCAtNDYsNiArNDYsNyBAQCBlbnVtIGNs
YXNzIEFsbG93T3ZlcndyaXRlIHsgTm8sIFllcyB9OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IERvd25sb2FkQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaAppbmRleCBmMzEyM2FmMTk1MTY1YTY2OWQ2NjY4MzE4
YjgxMmU5MzM2NWU2ZGMyLi42ZDFlM2IyMTFmZTBkZDk1YTk0ODUwNTg0MTdkYjRkZTA4MjQwZDZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmgKQEAgLTM5
LDYgKzM5LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IEZpbmRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfkZpbmRDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZpbmRNYXRjaGVzQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaAppbmRleCBjNmY0NTczNDJkMTExOTAxZGNh
NmQzYzMwOTAzMzdmZWU3YTFmZWMyLi5mYWUxZGNkM2NkNjg4MzUwN2VmYmUzZDk1ZDVkNmY3MmEw
MzY5ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1h
dGNoZXNDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1h
dGNoZXNDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1l
c3BhY2UgQVBJIHsKIAogY2xhc3MgRmluZE1hdGNoZXNDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkZpbmRNYXRjaGVzQ2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oCmluZGV4
IDViMGM2Y2NhMjRlZWZjMWE5NTgxOTFlMGUyNzk0YTQ3YjRmNTRlN2MuLmYwY2EwNjAxMTE5ODAy
ZWQzNjliNGQwNzhkODNjODYyYTUxNjEyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUZvcm1DbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNs
YXNzIE9iamVjdDsKIAogY2xhc3MgRm9ybUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Rm9ybUNsaWVudCgpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaAppbmRleCAx
Mzc1NTI5Y2RhMjVmMjVjYmIxNzliZGM4OTg5MTcxYzg5ZWU4ODU3Li44OTc0Y2QxMzM5NDc3NTAy
NzNmNDUwZjBlODM5NmMwZTZiMTMyMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgV2Vi
UGFnZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEZ1bGxzY3JlZW5DbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAg
ICAgICAgIEFQSVR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJR2VvbG9jYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUdlb2xvY2F0aW9uUHJvdmlkZXIuaAppbmRleCA1MjY2YmMyY2E1NGNmMDk5YzIzOGNhY2M2MjE0
NGM5Nzk5YTA5Nzk3Li43YzZmNTYyOWNiNjBlNTNiYzdiODVhYTg4ODlmNzJlNjhkN2E0YzJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblBy
b3ZpZGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAgY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgR2VvbG9jYXRpb25Qcm92aWRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+R2VvbG9jYXRp
b25Qcm92aWRlcigpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuY3BwCmluZGV4IDk4MWE5ODViYmRlNWYxY2I2NWY5NmNiYjIxMzlm
YmNmMTlkN2RjZTUuLmUxMjJlZTNlZGIxYzQyMTlkMWQ4NDE5OTMyMWE4MDAzZDUyYzgyMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUu
Y3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBIVFRQQ29va2llU3RvcmU6OnJlZ2lzdGVyT2Jz
ZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKQogCiAgICAgQVNTRVJUKCFtX29ic2VydmVkQ29va2ll
TWFuYWdlclByb3h5KTsKIAotICAgIG1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyPigqdGhpcyk7Cisg
ICAgbV9jb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9IG1ha2VVbmlxdWU8QVBJV2ViQ29va2ll
TWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsKIAogICAgIGF1dG8qIHBvb2wgPSBtX293bmlu
Z0RhdGFTdG9yZS0+cHJvY2Vzc1Bvb2xGb3JDb29raWVTdG9yYWdlT3BlcmF0aW9ucygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaAppbmRleCBm
Y2Y0NjA2MWY2YmZhNmRjYjc2MGUxMmM2NjMzYjZiNDVmMTU2ZGQ0Li4xMTg0YWE0MzJjM2I5ZmZj
YjE1ZGE1ZjgyOGVmNGFjNGYxYWRiMWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgc3RydWN0IFdlYk5hdmln
YXRpb25EYXRhU3RvcmU7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSGlzdG9yeUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SGlz
dG9yeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKaW5kZXggZWE5ZWJhNTBlMWVmZThmMDMyMWM0ZGZlM2E0
NDZmMGRjYmI1ZDhjOS4uYmU0M2FlZWM1NGZmMmQ0YWJiNWEyOGZmMzYzMTQ1YzQ5MGM3ZTg1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VD
bGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CiBuYW1lc3Bh
Y2UgQVBJIHsKIAogY2xhc3MgSWNvbkRhdGFiYXNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JY29uRGF0YWJhc2VDbGllbnQoKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25Mb2Fk
aW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdD
bGllbnQuaAppbmRleCA2ZjllN2FmOWM5ODA5MjMzYjZhNTY1ZWMzZTM4MGJlMGFhY2Q1NjdlLi4y
ZmUzODYyNTk0NjNiZmIzNjIzZWJiZGI0ZmVmNWY4MzkzNmIwZDNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaApAQCAtMzcsNiAr
MzcsNyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIElj
b25Mb2FkaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5JY29uTG9hZGluZ0NsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IGMz
NWU3YjNhZTQ5M2Q5YWM2M2NiM2E0YjU4MWZlMzJmY2I0MGFjZTguLjlkNDM0ODlhMmQ2MjU3Y2Iw
Y2FmOTIyYjNmYjA5MzI5NWNlOWJiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGNs
YXNzIFdlYlByb2Nlc3NQb29sOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIEluamVjdGVkQnVu
ZGxlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQuaAppbmRleCBjYmI5ZTBhOTcxNDViZDE3ZGRlZjhlMGJiMTRhZjhjMzc2ZGZiMzg4Li5k
YjVkOTBjMzFmOTI3NjlkMzAzYTAxYWQ3OGJkYTdmYmQxYTRkMDE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsK
IG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5
Q29udGV4dEhpc3RvcnlDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUxvYWRlckNsaWVudC5oCmluZGV4IDM0OGQ2YmY3NzI5MjcyZThmMmFiYWVjMzc1NWMy
MGRlNTQyZDY0NWQuLmIyZWE0MWQ5ZTJmMmU4MWUyYzllYjNiODc3OTFmYzNlZjhjM2YwZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKQEAgLTUz
LDYgKzUzLDcgQEAgY2xhc3MgTmF2aWdhdGlvbjsKIGNsYXNzIE9iamVjdDsKIAogY2xhc3MgTG9h
ZGVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5Mb2FkZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCBhNmUw
MTljYzQ1MTg2M2E0MWFjZmM4YmVhN2JmMzAyODk2YjFiYjczLi5jZDIyYTI2NzY0NjhkMTgyMzRh
NjA4NDJmZTlkOTE2NzFiMjBhODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTczLDYgKzczLDcgQEAgY2xhc3MgTmF2aWdh
dGlvblJlc3BvbnNlOwogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5OYXZp
Z2F0aW9uQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQb2xpY3lDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
b2xpY3lDbGllbnQuaAppbmRleCA1ZWJlNDQwNzQyYTc2NTQxYjFkOWNjZjI5OTVjOWE5NWZlODRk
NWFkLi42YWU4ZTc1MjA1ZmZmYzg2NTJmNGY5YjgzYmIzZGUzMGVlNmNmYWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCkBAIC00Nyw2ICs0Nyw3
IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBQb2xpY3lDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflBv
bGljeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCmluZGV4IGQ5ZGQwZGI0NjYzNzcyMmI2MDJiMjBkZGRmNjczODEzNWY2NDZmNjIuLjc3MmRh
NmU1YTg2OTc3ZWM4YWUyZGMwNzU0MmQ4ZmNmMWUxNDk2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC03MSw2ICs3MSw3IEBAIGNsYXNzIE9wZW5QYW5l
bFBhcmFtZXRlcnM7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVUlDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflVJQ2xp
ZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
CmluZGV4IGQwZWIzMWFlMTY5MDA1NzcyYTZiZWMxNDM3YzJiNDMwZDBjYjRlNmQuLmIzMjRhMjQw
NGZjMDBhZTc5ODQ0ZmVmOTA3ZDA3MGUxZDAzMDA1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdLQ29udGV4
dFNldENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q2xpZW50
QmFzZSogd2tDbAogCiB2b2lkIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJh
c2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRS
ZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6V2ViQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNl
dEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEhp
c3RvcnlDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdLQ29u
dGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29u
dGV4dEhpc3RvcnlDbAogICAgIH07CiAKICAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCA9ICpXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKTsKLSAgICBwcm9jZXNzUG9vbC5z
ZXRIaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SGlzdG9yeUNsaWVudD4od2tDbGllbnQp
KTsKKyAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWU8SGlzdG9yeUNs
aWVudD4od2tDbGllbnQpKTsKIAogICAgIGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcyA9IHByb2Nlc3NQ
b29sLmhpc3RvcnlDbGllbnQoKS5hZGRzVmlzaXRlZExpbmtzKCk7CiAKQEAgLTI2Niw3ICsyNjYs
NyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBjb25zdCBXS0NvbnRleHREb3dubG9hZAogICAgICAgICB9CiAgICAgfTsKIAotICAgIFdl
YktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRl
eHRSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50Pih3a0Ns
aWVudCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKiB3a0Ns
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9j
YXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9j
YXRpb25NYW5hZ2VyLmNwcAppbmRleCAxMWI4MzRiNGVlMmE5YTY4NzYyNmM3MzJiZjU4YTQ4ODIz
ZjYzMzRhLi44ODhiNzViYzdjZWM4OWQxNmUwN2Y2MTdlN2JiMmNlMjk3OWZhNjIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdLVHlwZUlEIFdLR2VvbG9jYXRpb25NYW5hZ2VyR2V0
VHlwZUlEKCkKIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLR2VvbG9j
YXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgY29uc3QgV0tHZW9sb2NhdGlv
blByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKLSAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5h
Z2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3Zp
ZGVyPih3a1Byb3ZpZGVyKSk7CisgICAgdG9JbXBsKGdlb2xvY2F0aW9uTWFuYWdlclJlZiktPnNl
dFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikp
OwogfQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlv
bihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2NhdGlvbk1hbmFnZXJSZWYsIFdLR2VvbG9j
YXRpb25Qb3NpdGlvblJlZiBwb3NpdGlvblJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGIyMjNkNmY4
N2JmYTVlOTZlM2U1MGRhMmRkNzhmZjBkMmRkNDE2Y2UuLjc2OTIzOTkwYWI1YjllYTIxMzg1ZjFk
MzU2OWU4YjUwYWE3ZjY1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBXS1R5
cGVJRCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQogCiB2b2lkIFdLTm90aWZpY2F0
aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVm
LCBjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKLSAgICB0
b0ltcGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAgICB0b0ltcGwobWFuYWdlclJlZiktPnNl
dFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIp
KTsKIH0KIAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmlj
YXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlm
aWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXgg
NDdlYzcyNmIwY2U0NDA1N2YwMDJiNTQwYmVhNzY4ZTQzYjEwYThkNC4uNjFhNjliMWYzYTZkYTc0
OTZhZDQ3MjY5NzBiODVmMmM5MTE4MTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCkBAIC05NDgsNyArOTQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4
dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2wK
ICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRleHRNZW51
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7Cisg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPENvbnRl
eHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJl
Zik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKQEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlQ29udGV4dE1lbnVDbAogCiB2b2lkIFdLUGFnZVNldFBhZ2VEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZURpYWdub3N0aWNMb2dnaW5n
Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdr
Q2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTk5NSw3ICs5
OTUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbAogICAgICAgICB9CiAgICAgfTsKIAotICAg
IHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRDbGll
bnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kQ2xpZW50KG1ha2VV
bmlxdWU8RmluZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmlu
ZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVz
Q2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDM4LDcgKzEwMzgsNyBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmlu
ZE1hdGNoZXNDbAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0
RmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tD
bGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRNYXRjaGVzQ2xpZW50KG1ha2VV
bmlxdWU8RmluZE1hdGNoZXNDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZUluamVjdGVkQnUKIAogdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVudEJhc2UqIHdrQ2xpZW50KQog
ewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xp
ZW50KG1ha2VVbmlxdWU8V2ViRm9ybUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2Fk
ZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTExOTksNyArMTE5OSw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVy
Q2xpZW50QmFzZSoKIAogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5ID0gdG9JbXBsKHBh
Z2VSZWYpOwogCi0gICAgYXV0byBsb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRl
ckNsaWVudD4od2tDbGllbnQpOworICAgIGF1dG8gbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxM
b2FkZXJDbGllbnQ+KHdrQ2xpZW50KTsKIAogICAgIC8vIEl0IHdvdWxkIGJlIG5pY2UgdG8gZ2V0
IHJpZCBvZiB0aGlzIGNvZGUgYW5kIHRyYW5zaXRpb24gYWxsIGNsaWVudHMgdG8gdXNpbmcgZGlk
TGF5b3V0IGluc3RlYWQgb2YKICAgICAvLyBkaWRGaXJzdExheW91dEluRnJhbWUgYW5kIGRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUuIEluIHRoZSBtZWFudGltZSwgdGhpcyBp
cyByZXF1aXJlZApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgog
ICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50KG1ha2VVbmlxdWU8UG9saWN5Q2xpZW50Pih3a0NsaWVu
dCkpOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIwNzUsNyArMjA3NSw3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNs
aWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNsaWVudD4od2tD
bGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpA
QCAtMjI5MywxNjQgKzIyOTMsMTY2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgd2Vi
UGFnZVByb3h5LT5zZXROYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8TmF2aWdhdGlvbkNs
aWVudD4od2tDbGllbnQpKTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQ
YWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQotewotICAgIGNsYXNz
IFN0YXRlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFnZVN0YXRlQ2xpZW50
QmFzZT4sIHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7Ci0gICAgcHVibGljOgotICAg
ICAgICBleHBsaWNpdCBTdGF0ZUNsaWVudChjb25zdCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNs
aWVudCkKLSAgICAgICAgewotICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOwotICAgICAg
ICB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3Zl
cnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlSXNM
b2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50Lndp
bGxDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
Y2xhc3MgU3RhdGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVD
bGllbnRCYXNlPiwgcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTdGF0ZUNsaWVudChjb25z
dCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKKyAgICB7CisgICAgICAgIGluaXRpYWxp
emUoY2xpZW50KTsKKyAgICB9Citwcml2YXRlOgorICAgIHZvaWQgd2lsbENoYW5nZUlzTG9hZGlu
ZygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VJc0xv
YWRpbmcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VJ
c0xvYWRpbmcobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9p
ZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZykKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlSXNMb2FkaW5nKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmco
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LndpbGxDaGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC53aWxsQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQorICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQud2lsbENoYW5nZVRpdGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUo
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlVGl0bGUobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdl
QWN0aXZlVVJMKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC53aWxsQ2hhbmdlQWN0aXZlVVJMKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VBY3Rp
dmVVUkwoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZENoYW5nZUFjdGl2ZVVSTCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAg
ICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0aXZlVVJMKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwobV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3Vy
ZUNvbnRlbnQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50
LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUhh
c09ubHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5
U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9j
bGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdl
SGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUVzdGlt
YXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2ls
bENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2NsaWVudC53aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
RXN0aW1hdGVkUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQ
cm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdl
RXN0aW1hdGVkUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAg
ICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29CYWNrKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2sobV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUNh
bkdvQmFjaygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFu
Z2VDYW5Hb0JhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxD
aGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAg
ICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjaykKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2sobV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2FuR29CYWNr
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29C
YWNrKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5H
b0JhY2sobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3
aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUNhbkdv
Rm9yd2FyZCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFu
Z2VDYW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50Lndp
bGxDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAK
LSAgICAgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0Zv
cndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlk
Q2hhbmdlQ2FuR29Gb3J3YXJkKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGll
bnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVz
cygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3Mo
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5n
ZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0lu
UHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9p
ZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblBy
b2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLSAgICAgICAgfQorICAgIHZvaWQgZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVz
cygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZU5ldHdv
cmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xp
ZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MobV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZv
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlQ2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZpY2F0
ZUluZm8pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VD
ZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAg
ICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbykKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZp
Y2F0ZUluZm8obV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQg
ZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8obV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lz
UmVzcG9uc2l2ZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNp
dmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQorICAgIHZvaWQgd2lsbENo
YW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNp
dmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRD
aGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQor
ICAgIHZvaWQgZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nl
c3NJc1Jlc3BvbnNpdmUobV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICB9CiAKLSAgICAg
ICAgdm9pZCBkaWRTd2FwV2ViUHJvY2Vzc2VzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJvY2Vzc2VzKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMobV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgIH07CisgICAgdm9pZCBkaWRTd2Fw
V2ViUHJvY2Vzc2VzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlk
U3dhcFdlYlByb2Nlc3NlcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
ZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KK307
CisKK3ZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VT
dGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKK3sKICAgICBpZiAoY2xpZW50KQotICAgICAgICB0b0lt
cGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6Om1ha2VfdW5pcXVlPFN0YXRl
Q2xpZW50PihjbGllbnQpKTsKKyAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdlTG9hZFN0YXRl
T2JzZXJ2ZXIobWFrZVVuaXF1ZTxTdGF0ZUNsaWVudD4oY2xpZW50KSk7CiAgICAgZWxzZQogICAg
ICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihudWxscHRyKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZh
dGVNYWMubW0KaW5kZXggZjc2M2FmNjAwM2RhNDY2NzM2MzFlOTFlYTgxYjgzYjVjOTdhMDg3ZC4u
MzVlZjkyMjE1NGUxOTYzMDBlNGI2ZWU3NWQ0Yzk4MTc4NWJjM2UyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0KQEAg
LTUyLDcgKzUyLDcgQEAgLSAoaWQpaW5pdFdpdGhQYWdlOihSZWZQdHI8V2ViS2l0OjpXZWJQYWdl
UHJveHk+JiYpcGFnZQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX3BhZ2UgPSBXVEZNb3Zl
KHBhZ2UpOwotICAgIF9vYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlTG9h
ZFN0YXRlT2JzZXJ2ZXI+KHNlbGYsIEAiVVJMIik7CisgICAgX29ic2VydmVyID0gbWFrZVVuaXF1
ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsKICAgICBfcGFn
ZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfb2JzZXJ2ZXIpOwogCiAgICAgcmV0dXJu
IHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy93cGUvV0tW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCmlu
ZGV4IDc4YmJhMzk2N2I2MTk3YzBlOGE3YzIzYWMzZGE4Y2QxMzJlN2M0YmUuLjk2NDA2ZDBhYWZi
YzM1NTU2MGI1ZDMxOTdhMDBjMjVmNTc1OWEzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCkBAIC02OCw1ICs2OCw1IEBAIHZvaWQgV0tWaWV3U2V0
Vmlld0NsaWVudChXS1ZpZXdSZWYgdmlldywgY29uc3QgV0tWaWV3Q2xpZW50QmFzZSogY2xpZW50
KQogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbCh2aWV3KS0+c2V0Q2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8Vmlld0NsaWVudD4oY2xpZW50KSk7CisgICAgdG9JbXBsKHZpZXcpLT5zZXRD
bGllbnQobWFrZVVuaXF1ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLm1tCmluZGV4IDI2NTU1NGYzZDdmMmQ3YWQyOTZlOWYzZjlmYTExMzg4Yjc4
ZmQ1NjQuLjQ5Njc3ODhhMTA1N2ZhODgyYTBhMDFjOGRiZjUwMDJlOTIyNmVjMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjAyLDcgKzYwMiw3IEBAIC0gKGluc3RhbmNl
dHlwZSlfaW5pdFdpdGhQYWdlUmVmOihXS1BhZ2VSZWYpcGFnZVJlZgogCiAgICAgX3BhZ2UgPSBX
ZWJLaXQ6OnRvSW1wbChwYWdlUmVmKTsKIAotICAgIF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmKTsKKyAg
ICBfcGFnZUxvYWRTdGF0ZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcj4oc2VsZik7CiAgICAgX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZl
cigqX3BhZ2VMb2FkU3RhdGVPYnNlcnZlcik7CiAKICAgICBBU1NFUlQoIWJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJNYXAoKS5jb250YWlucyhfcGFnZS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4
IDEzNzJjYTQxMDZjNzZlMWQ2MjM1ZDYxNGFkNWMxZTZhNTZlYTA1YTEuLjgxZDM3MDNiMGVlYTgy
ZTVlNmM2MmYzMjIyYWM0ZTY4MTlmNmIzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTEwOCw3ICsxMDgs
NyBAQCAtICh2b2lkKWFkZE9ic2VydmVyOihpZDxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPilv
YnNlcnZlcgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdLSFRUUENvb2tp
ZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
bWFrZVVuaXF1ZTxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPihvYnNlcnZlcik7CiAgICAgX2Nv
b2tpZVN0b3JlLT5yZWdpc3Rlck9ic2VydmVyKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQppbmRleCBiYWNlNWFjN2VjMDBiMTg5OGFkMmRmNzJjYjFiMTk0NDY3ZGNlYzlkLi5lYmFj
NTY4ZTNkZGI2ODcwZjg1YjAxNTA4ZWMyMGZhYWI3ZjIwNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzczLDcgKzM3
Myw3IEBAIC0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxlZ2F0ZQogLSAo
dm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KWRvd25s
b2FkRGVsZWdhdGUKIHsKICAgICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2FkRGVsZWdhdGU7
Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bv
b2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpEb3dubG9hZENsaWVudD4o
ZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilf
YXV0b21hdGlvbkRlbGVnYXRlCkBAIC0zODQsNyArMzg0LDcgQEAgLSAoaWQgPF9XS0F1dG9tYXRp
b25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQogLSAodm9pZClfc2V0QXV0b21hdGlvbkRl
bGVnYXRlOihpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilhdXRvbWF0aW9uRGVsZWdhdGUKIHsK
ICAgICBfYXV0b21hdGlvbkRlbGVnYXRlID0gYXV0b21hdGlvbkRlbGVnYXRlOwotICAgIF9wcm9j
ZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXV0
b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0b21hdGlvbkRlbGVnYXRlKSk7CisgICAgX3Byb2Nlc3NQ
b29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xp
ZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKIH0KIAogLSAodm9pZClfd2FybUluaXRp
YWxQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXggOGI2ZGYyNGY4OTUyZDg0ZjYw
NzU0NGM2YTMxYTJkZDFiOGFhMzU1ZC4uYTAwYjIwM2NjOTA1OTMwMWJlY2M0NjFkNjFiNDY3MzJi
ODU2MTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtMTE4LDYgKzExOCw3IEBAIC0g
KHZvaWQpcmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cwogfQogCiBjbGFzcyBTY3JpcHRNZXNzYWdl
SGFuZGxlckRlbGVnYXRlIGZpbmFsIDogcHVibGljIFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZShXS1VzZXJDb250ZW50Q29udHJvbGxlciAq
Y29udHJvbGxlciwgaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIsIE5TU3RyaW5n
ICpuYW1lKQogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpAQCAtMTQ1LDcgKzE0
Niw3IEBAIHByaXZhdGU6CiAKIC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxX
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmlu
ZyAqKW5hbWUKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVn
YXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhh
bmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBB
UEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghX3VzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5n
ZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2Vw
dGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGgg
bmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpAQCAtMjI5LDcg
KzIzMCw3IEBAIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRo
VXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXCiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhh
bmRsZXIgbmFtZTooTlNTdHJpbmcgKiluYW1lIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250
ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUp
LCBuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIGF1dG8g
aGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5p
cXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5k
bGVyLCBuYW1lKSwgbmFtZSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsK
ICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1l
c3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBu
YW1lXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IDAzOTFhMTk5MmUzNTMyZGJlNWYyMWRiNjkxZGQ4MTA4YWFlMmE2NmMuLjA4ZjQy
ZWM4YjEzYmY3MGJkMmI2YjM3YmM3ZDgxNTY4MjNkNmM2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNzU3LDcgKzc1Nyw3IEBAIC0g
KHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqKWNvbmZpZ3VyYXRpb24KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIF9pbXBs
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9j
ZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsKKyAgICBfaW1wbCA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2wsIHBhZ2VD
b25maWd1cmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgX3BhZ2UgPSAmX2ltcGwtPnBhZ2UoKTsKIAog
ICAgIF9pbXBsLT5zZXRBdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHModHJ1ZSk7CkBA
IC03NjksMTQgKzc2OSwxNCBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246
KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAKICAgICBfcGFnZS0+c2V0
QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudChjb25maWd1cmF0aW9uLl9hcHBsaWNh
dGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KTsKIAotICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKKyAgICBfbmF2
aWdhdGlvblN0YXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7
CiAgICAgX3BhZ2UtPnNldE5hdmlnYXRpb25DbGllbnQoX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRl
TmF2aWdhdGlvbkNsaWVudCgpKTsKIAotICAgIF91aURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7Ci0gICAgX3BhZ2UtPnNl
dERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOworICAgIF91aURlbGVnYXRlID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOworICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7CisgICAgX3BhZ2UtPnNldERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dD4oc2VsZikpOwogCi0gICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7CisgICAgX2ljb25Mb2FkaW5nRGVs
ZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7CiAK
ICAgICBfdXNlUGxhdGZvcm1GaW5kVUkgPSBZRVM7CiAKQEAgLTM0MjUsNyArMzQyNSw3IEBAIC0g
KHZvaWQpc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6KEJPT0wpYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uCiAgICAgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzID0gYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7CiAKICAgICBpZiAo
YWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgJiYgIV9nZXN0dXJlQ29udHJvbGxl
cikgewotICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2UpOworICAgICAgICBfZ2VzdHVyZUNvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2Up
OwogICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmluc3RhbGxTd2lwZUhhbmRsZXIoc2VsZiwg
W3NlbGYgc2Nyb2xsVmlld10pOwogICAgICAgICBpZiAoV0tXZWJWaWV3ICphbHRlcm5hdGVXZWJW
aWV3ID0gW19jb25maWd1cmF0aW9uIF9hbHRlcm5hdGVXZWJWaWV3Rm9yTmF2aWdhdGlvbkdlc3R1
cmVzXSkKICAgICAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+c2V0QWx0ZXJuYXRlQmFja0Zv
cndhcmRMaXN0U291cmNlUGFnZShhbHRlcm5hdGVXZWJWaWV3LT5fcGFnZS5nZXQoKSk7CkBAIC01
Njc4LDcgKzU2NzgsNyBAQCAtICh2b2lkKV9zZXRJbnB1dERlbGVnYXRlOihpZCA8X1dLSW5wdXRE
ZWxlZ2F0ZT4paW5wdXREZWxlZ2F0ZQogICAgIH07CiAKICAgICBpZiAoaW5wdXREZWxlZ2F0ZSkK
LSAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50
PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNs
aWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobnVs
bHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0b21hdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KaW5kZXggN2FkMDczYjhjZDZkZDQyMDNlMWE3NjA1
OGY3YzdkZjJhOWY4YWQ3Yi4uMmFkZWVhNzYwYzY5OGIxOGFlNTkxZTU3MDU3MTMyOTVmMjRjNTZk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9t
YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpAQCAtNzIsNyArNzIsNyBAQCAtIChpZCA8X1dLQXV0b21h
dGlvblNlc3Npb25EZWxlZ2F0ZT4pZGVsZWdhdGUKIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxf
V0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQogewogICAgIF9kZWxlZ2F0ZSA9
IGRlbGVnYXRlOwotICAgIF9zZXNzaW9uLT5zZXRDbGllbnQoZGVsZWdhdGUgPyBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KGRlbGVnYXRlKSA6IG51bGxw
dHIpOworICAgIF9zZXNzaW9uLT5zZXRDbGllbnQoZGVsZWdhdGUgPyBtYWtlVW5pcXVlPFdlYktp
dDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KGRlbGVnYXRlKSA6IG51bGxwdHIpOwogfQogCiAt
IChOU1N0cmluZyAqKXNlc3Npb25JZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggYjM3YjA1MDUzZjEyNGFjYjcwZmQ2YWRlNmRmNDIw
ZmU4MjVkNTRjZi4uMGRkNDA5YTQzZGU2NTMwMGM5ZjBjYzg1NDQ3YWMyZjcxM2VjOTQ5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMzgsNiAr
MzgsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgX1dLUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlDbGllbnQgZmluYWwgOiBwdWJsaWMgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIF9XS1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50KF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyICpjb250cm9sbGVyKQogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQpA
QCAtNzUsNyArNzYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eSA9IFdlYktpdDo6UmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6OmNyZWF0ZSgpOwotICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxm
KTsKKyAgICBtX3JlbW90ZUluc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudD4oc2VsZik7CiAgICAgbV9yZW1vdGVJbnNwZWN0
b3JQcm94eS0+c2V0Q2xpZW50KG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50LmdldCgpKTsKIAogICAg
IHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKaW5kZXggOGQyZjg4YWUwMDMyYTBkOTM0NWU2ODAwYTk3ODU4YjQyOGE0
ZDZkOS4uMDY4NzBkMjFkZWU3Y2E0Zjg5ZGI5ZTM0MmY2ZjBmNWZkM2Y1NGE1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0x
NjkxLDcgKzE2OTEsNyBAQCBpbmxpbmUgdm9pZCByZWFkeVNRTGl0ZVN0YXRlbWVudChzdGQ6OnVu
aXF1ZV9wdHI8U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBTUQogICAgICAgICBzdGF0ZW1l
bnQgPSBudWxscHRyOwogICAgIH0KICAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAgICBzdGF0
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oZGIsIHN0cik7CisgICAg
ICAgIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYiwgc3RyKTsKICAg
ICAgICAgaWYgKHN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAg
IExPR19FUlJPUigiUHJlcGFyaW5nIHN0YXRlbWVudCAlcyBmYWlsZWQiLCBzdHIuYXNjaWkoKS5k
YXRhKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmgKaW5kZXggYmFiZDhhOTgyOWZiODBkMTk4NTJlYzk3NGFlZWE3MGNlZTBiOTE1
OC4uOGE4Y2FiYmQ1M2MxZTY1ZjcwYWRkMDg1ZDRmNTVlYTMxMDExNjA5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmgKQEAgLTQ0LDYgKzQ0
LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIElj
b25EYXRhYmFzZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SWNvbkRhdGFiYXNlQ2xpZW50KCkgPSBkZWZhdWx0OwogCkBAIC01OCw2
ICs1OSw3IEBAIGNsYXNzIEljb25EYXRhYmFzZSB7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgSWNv
blNuYXBzaG90IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGlj
OgogICAgICAgICBJY29uU25hcHNob3QoKSA9IGRlZmF1bHQ7CiAKQEAgLTExOCw2ICsxMjAsNyBA
QCBjbGFzcyBJY29uRGF0YWJhc2UgewogICAgIH07CiAKICAgICBjbGFzcyBQYWdlVVJMU25hcHNo
b3QgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFBhZ2VVUkxTbmFwc2hvdCgpID0gZGVmYXVsdDsKIApAQCAtMTcyLDYgKzE3NSw3IEBAIGNs
YXNzIEljb25EYXRhYmFzZSB7CiAgICAgfTsKIAogICAgIGNsYXNzIE1haW5UaHJlYWROb3RpZmll
ciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAg
ICAgTWFpblRocmVhZE5vdGlmaWVyKCkKICAgICAgICAgICAgIDogbV90aW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZNYWluVGhyZWFkTm90aWZpZXI6OnRpbWVyRmlyZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKaW5kZXggZDJhZjY0YmFkODZhOGEzM2YxMzM1NDcyNTgxYjcwMmU0MWE2N2Vj
Mi4uMjE4NjYwNDUxOTI3NjliZTZkZmY4NTlhNjMyMDQzZDUxMzU2OWMxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcApAQCAtNzAsNiArNzAsNyBAQCBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNU
X1NJR05BTF0gPSB7IDAsIH07CiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0QXV0b21hdGlvblNl
c3Npb24sIHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb24sIEdfVFlQRV9PQkpFQ1QpCiAKIGNsYXNz
IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6QXV0b21hdGlvblNl
c3Npb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50KFdlYktpdEF1dG9tYXRpb25TZXNzaW9u
KiBzZXNzaW9uKQogICAgICAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQpAQCAtMjIzLDcgKzIyNCw3
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQoR09iamVj
dCogb2JqZWN0KQogCiAgICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbiA9IGFkb3B0UmVmKG5ldyBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbigpKTsKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRT
ZXNzaW9uSWRlbnRpZmllcihTdHJpbmc6OmZyb21VVEY4KHNlc3Npb24tPnByaXYtPmlkLmRhdGEo
KSkpOwotICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7CisgICAgc2Vzc2lvbi0+cHJp
di0+c2Vzc2lvbi0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8QXV0b21hdGlvblNlc3Npb25DbGllbnQ+
KHNlc3Npb24pKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0QXV0b21hdGlvblNlc3Npb25EaXNw
b3NlKEdPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCA5N2U5MjU2
MDE3NzM3Yjc2NjVhY2M4ZWIyZjM1OGViMmVjNTkwMGI5Li4yODU4ZGY2ZjM0ZDRmYTYyMTIwOWJm
MWViMWUxMDg4NWFkMDVlNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC01Niw2ICs1
Niw2IEBAIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IGZpbmFsOiBwdWJsaWMgQVBJOjpDb250ZXh0
TWVudUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoQ29udGV4dE1lbnVDbGllbnRUb1ZpZXcoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5z
ZXRDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3
ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0Q29udGV4dE1l
bnVDbGllbnQobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2ViVmlldykpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAppbmRleCBkMzJiNTljNTQ3
NjY3YTdlYzg3NzE4MTA1MmJkMWE3NDljMGRiYzFjLi5hMzczYjI5NDU3MTY3OTFhMmQ0YzMwN2Jk
NWUwYTkyOWM4MTQwYTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5jcHAKQEAgLTU2LDUgKzU2LDUgQEAgY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
IGZpbmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW4KIAogdm9pZCBh
dHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4
dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2Vi
Q29udGV4dCkuc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pih3ZWJDb250ZXh0KSk7CisgICAgd2Vi
a2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldExlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudChtYWtlVW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dD4od2ViQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCmluZGV4IGVhZDRmMjM0OTkxNjcw
NGQxN2QxZjIzMDY0MDg5ZjdhMWEwNDU5NGYuLmU3NzFkZDcxODdlNTg1OWFkYmQ1YTAxNmY4Y2E5
MzVkMjhlODRhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKQEAgLTExOCw1ICsxMTgsNSBAQCBjbGFz
cyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKIAog
dm9pZCBhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJD
b250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0
KS5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkQ2xpZW50Pih3ZWJD
b250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQp
LnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdlYkNvbnRleHQp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDIxODA4M2U3Njk3YTUxMzk4ZjJlZTA5NGNk
YjA2OGMyMDgzN2IxZmEuLjliNTgxOGE5ODM2ZjM3NjJkODk2MjJlMzYyYzNmYzhiMmQzZWJmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjY3LDggKzI2Nyw4IEBAIHZvaWQgd2Via2l0RmF2
aWNvbkRhdGFiYXNlT3BlbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBT
dHJpbmcmIHBhCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYktpdEZhdmljb25EYXRhYmFzZVBy
aXZhdGUqIHByaXYgPSBkYXRhYmFzZS0+cHJpdjsKLSAgICBwcml2LT5pY29uRGF0YWJhc2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEljb25EYXRhYmFzZT4oKTsKLSAgICBwcml2LT5pY29uRGF0YWJhc2Ut
PnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEljb25EYXRhYmFzZUNsaWVudD4oZGF0
YWJhc2UpKTsKKyAgICBwcml2LT5pY29uRGF0YWJhc2UgPSBtYWtlVW5pcXVlPEljb25EYXRhYmFz
ZT4oKTsKKyAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldENsaWVudChtYWtlVW5pcXVlPFdlYktp
dEljb25EYXRhYmFzZUNsaWVudD4oZGF0YWJhc2UpKTsKICAgICBJY29uRGF0YWJhc2U6OmRlbGF5
RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRFbmFibGVkKHRy
dWUpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChX
ZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250
cm9sbGVyLmNwcAppbmRleCA0Zjk4MGQ0ZWUyNThhY2FjNDU1ODMyM2NhN2JkNzFjY2RmM2JlZWIx
Li43Njc1YzljYjNhNWVkYWY4ODY0ZDE3YTE3OTIxN2NiOTQyMzM2NWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xs
ZXIuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RmluZENvbnRyb2xs
ZXJDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X2ZpbmRfY29udHJvbGxlcl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwogCiAg
ICAgV2ViS2l0RmluZENvbnRyb2xsZXIqIGZpbmRDb250cm9sbGVyID0gV0VCS0lUX0ZJTkRfQ09O
VFJPTExFUihvYmplY3QpOwotICAgIGdldFBhZ2UoZmluZENvbnRyb2xsZXIpLnNldEZpbmRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxGaW5kQ2xpZW50PihmaW5kQ29udHJvbGxlcikpOworICAgIGdl
dFBhZ2UoZmluZENvbnRyb2xsZXIpLnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxGaW5kQ2xpZW50
PihmaW5kQ29udHJvbGxlcikpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRGaW5kQ29udHJvbGxl
ckdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVl
LCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwCmluZGV4IDEzNGQxYzZjZWJlNTY3ZmM1
NGQ5NzBmODc2YmUwMjkzMWQzMjgyMmQuLmJjNjdhMzU3ZGMwNzQ0NWEzNTI4ZjgwZjBhYmQ3OWQw
N2MzYmMwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEZvcm1DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZvcm1DbGllbnQuY3BwCkBAIC00OCw1ICs0OCw1IEBAIGNsYXNzIEZvcm1DbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpGb3JtQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hGb3JtQ2xpZW50
VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBh
Z2Uod2ViVmlldykuc2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHdl
YlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRGb3JtQ2xpZW50
KG1ha2VVbmlxdWU8Rm9ybUNsaWVudD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdl
ci5jcHAKaW5kZXggMmUxNTk0NWRmYWQyOWMzMTU1MGQxYWQzYzRkZDE0OThiZTdiNzIwNC4uOGNi
YTQyMmVkNWUzOGJmODRjNzYwNTk0ZDZjZjBmNjU4OGNiZWE1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1h
bmFnZXIuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0R2VvbG9jYXRp
b25NYW5hZ2VyU3RhcnQoV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiBtYW5hZ2VyKQogICAgIH0K
IAogICAgIGlmICghbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyKSB7Ci0gICAgICAgIG1h
bmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvY2x1ZUdl
b2xvY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92
aWRlciA9IG1ha2VVbmlxdWU8R2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgICAg
IG1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlci0+c2V0RW5hYmxlSGlnaEFjY3VyYWN5KG1h
bmFnZXItPnByaXYtPmhpZ2hBY2N1cmFjeUVuYWJsZWQpOwogICAgIH0KICAgICBtYW5hZ2VyLT5w
cml2LT5nZW9jbHVlUHJvdmlkZXItPnN0YXJ0KFttYW5hZ2VyXShHZW9sb2NhdGlvblBvc2l0aW9u
JiYgY29yZVBvc2l0aW9uLCBPcHRpb25hbDxDU3RyaW5nPiBlcnJvcikgewpAQCAtMzEyLDcgKzMx
Miw3IEBAIFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogd2Via2l0R2VvbG9jYXRpb25NYW5hZ2Vy
Q3JlYXRlKFdlYkdlb2xvY2F0aW9uTWFuYWdlclByCiB7CiAgICAgYXV0byogbWFuYWdlciA9IFdF
QktJVF9HRU9MT0NBVElPTl9NQU5BR0VSKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9HRU9MT0NB
VElPTl9NQU5BR0VSLCBudWxscHRyKSk7CiAgICAgbWFuYWdlci0+cHJpdi0+bWFuYWdlciA9IHBy
b3h5OwotICAgIHByb3h5LT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9u
UHJvdmlkZXI+KG1hbmFnZXIpKTsKKyAgICBwcm94eS0+c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxH
ZW9sb2NhdGlvblByb3ZpZGVyPihtYW5hZ2VyKSk7CiAgICAgcmV0dXJuIG1hbmFnZXI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25M
b2FkaW5nQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEljb25Mb2FkaW5nQ2xpZW50LmNwcAppbmRleCBiOGYwMWZiMjRmZjI3NjU0YzBhZDYwOWFkZDMy
NDE5NWVlNDFjYTU5Li42NWZkN2M2OTkyMzg4MDExNTU4YzY3ZGViMjVmZGFhMjdmNjZjNTIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9h
ZGluZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogCiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25M
b2FkaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBJY29uTG9hZGluZ0NsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAg
ICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQpAQCAtNjEsNSArNjIsNSBAQCBjbGFzcyBJY29uTG9h
ZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKIAogdm9pZCBhdHRh
Y2hJY29uTG9hZGluZ0NsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAg
IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJW
aWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEljb25M
b2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAK
aW5kZXggYTkzZmYyNWIzOWEyOTI1NjAwZDJjNGFlY2NlY2JjNzU3MGQ1ZGYzZC4uOTI2MmE4NGRl
Y2UyNWJmMGJkZjVjNTliNDhkMDAyNTg1MmYzNmJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xp
ZW50LmNwcApAQCAtMTc5LDUgKzE3OSw1IEBAIGNsYXNzIFdlYktpdEluamVjdGVkQnVuZGxlQ2xp
ZW50IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQgewogCiB2b2lkIGF0
dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNv
bnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQp
LnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SW5qZWN0ZWRC
dW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vz
c1Bvb2wod2ViQ29udGV4dCkuc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1ZTxXZWJL
aXRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2ViQ29udGV4dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuY3BwCmluZGV4IDIzNmU4MWMxMzkwYjNlYzNjMTU0OTE4Njg2YmFmYTVlNTM4NjQ2
ODcuLjU1MTYzNjQ0Nzc1NTc0N2I3MGFjNWU3NmIxZDEwNGQ2MWMwYjVjYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3Zp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgV2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXI6OldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm8KICAgICAsIG1fbm90aWZpY2F0aW9uTWFuYWdlcihub3RpZmljYXRpb25NYW5hZ2VyKQog
ewogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbk1hbmFnZXIpOwotICAgIG1fbm90aWZpY2F0aW9u
TWFuYWdlci0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25Qcm92aWRl
cj4oKnRoaXMpKTsKKyAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXItPnNldFByb3ZpZGVyKG1ha2VV
bmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlzKSk7CiB9CiAKIFdlYktpdE5vdGlmaWNh
dGlvblByb3ZpZGVyOjp+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyLmgKaW5kZXggOWU1OGJjYjBiMWFiMzNmYWFkOTdmY2Y4NTk4MTI3ZTYxMGExMjMz
Ni4uMzZiNzgzNDM4ODBkOTYwMzBlNzJmZmFhMTUzNzQ4ZWU1YjFlM2E4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmlj
YXRpb25Qcm92aWRlci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYktpdE5vdGlm
aWNhdGlvblByb3ZpZGVyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSosIFdlYktpdFdlYkNv
bnRleHQqKTsKICAgICB+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCA1
YmNlZjY4ZjY1ZDIzMTg5ODBjZjkxZGFlNTkzZDc2NjcxNDhhOTg5Li44OTZlMTNkYWQ5N2JlN2Zm
Nzc2YzAzYmY2ZTdkMDI3ODJlMDMyMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMjUsNiArMjI1LDYgQEAgY2xh
c3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoVUlDbGll
bnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0
UGFnZSh3ZWJWaWV3KS5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50Pih3ZWJW
aWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0VUlDbGllbnQobWFr
ZVVuaXF1ZTxVSUNsaWVudD4od2ViVmlldykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNw
cAppbmRleCA0OGIzOGVhYzA4ZDkxMmM5NjM5ZWY1NTA5NGIxMGYxZmZhZDFkOWY5Li4yNTVlOGU1
YTY3OTI3NjQ4MzNkMzdkYWZmOWY1NzkwZjA4NTk2NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAKQEAgLTE4Miw2ICsxODIsNyBAQCB2b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9yZW1vdmVfYWxsX3NjcmlwdHMoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtYQogfQogCiBj
bGFzcyBTY3JpcHRNZXNzYWdlQ2xpZW50R3RrIGZpbmFsIDogcHVibGljIFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFNjcmlwdE1lc3NhZ2VDbGllbnRHdGsoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBt
YW5hZ2VyLCBjb25zdCBjaGFyKiBoYW5kbGVyTmFtZSkKICAgICAgICAgOiBtX2hhbmRsZXJOYW1l
KGdfcXVhcmtfZnJvbV9zdHJpbmcoaGFuZGxlck5hbWUpKQpAQCAtMjM4LDcgKzIzOSw3IEBAIGdi
b29sZWFuIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2Fn
ZV9oYW5kbGVyKFdlYktpdFVzZXJDCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwobmFtZSwgRkFM
U0UpOwogCiAgICAgUmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0KLSAgICAg
ICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUp
LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAgICBXZWJTY3Jp
cHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0
az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRl
bnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJD
b250ZW50Q29udHJvbGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0
KCkpOwogfQogCkBAIC0yODgsNyArMjg5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3VzZXJfY29udGVu
dF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQoV2UKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbCh3b3JsZE5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPiht
YW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRX
b3JsZCh3b3JsZE5hbWUpKTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0
ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJp
bmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOwog
ICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBh
ZDgzZGI4MjNkMzdkMjBmNTEzYjAxMjNjZTI3NGEyYmJmNDcxNzgyLi44YzY4OTgyOTUzOWY0MjIz
OGIzMDdmNTU1NjA4YTVjNTAwMmRjZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTk4LDYgKzE5OCw3IEBA
IHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogY2xhc3MgV2ViS2l0QXV0b21hdGlvbkNsaWVudCBmaW5hbCA6
IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYktpdEF1dG9tYXRpb25DbGllbnQo
V2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKICAgICAgICAgOiBtX3dlYkNvbnRleHQoY29udGV4
dCkKQEAgLTM2Nyw5ICszNjgsOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQod2ViQ29udGV4
dCk7CiAKICAgICBwcml2LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0R2Vv
bG9jYXRpb25NYW5hZ2VyQ3JlYXRlKHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5PigpKSk7Ci0gICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5w
cm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdl
YkNvbnRleHQpOworICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0gbWFrZVVuaXF1ZTxX
ZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250ZXh0KTsKICNpZiBQTEFURk9S
TShHVEspICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIHByaXYtPnJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4o
d2ViQ29udGV4dCk7CiAjZW5kaWYKIH0KIApAQCAtNjc4LDcgKzY3OSw3IEBAIHZvaWQgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29u
dGV4dCwgZ2Jvb2xlCiAgICAgICAgICAgICBnX3dhcm5pbmcoIk5vdCBlbmFibGluZyBhdXRvbWF0
aW9uIG9uIFdlYktpdFdlYkNvbnRleHQgYmVjYXVzZSB0aGVyZSdzIGFub3RoZXIgY29udGV4dCB3
aXRoIGF1dG9tYXRpb24gZW5hYmxlZCwgb25seSBvbmUgaXMgYWxsb3dlZCIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25D
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQp
OworICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxX
ZWJLaXRBdXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKICAgICB9IGVsc2UKICAgICAgICAgY29u
dGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXgg
YjIzOWFjNGUxOWU2M2QzM2E4NjlkZWZiNjZmYzNjMGI0NTAwYjc4NS4uNzQzMGMzZmNmZDU0YzQ2
ZWZhNjRlMTJmZDk3ZGU1YTkzMjk4YTQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIwMSw2ICsyMDEsNyBAQCBjbGFz
cyBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI7CiAjaWYgUExBVEZPUk0oV1BFKQogc3RhdGljIHVuc2ln
bmVkIGZyYW1lRGlzcGxheUNhbGxiYWNrSUQ7CiBzdHJ1Y3QgRnJhbWVEaXNwbGF5ZWRDYWxsYmFj
ayB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEZyYW1lRGlzcGxh
eWVkQ2FsbGJhY2soV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50
ZXIgdXNlckRhdGEgPSBudWxscHRyLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5RnVuY3Rp
b24gPSBudWxscHRyKQogICAgICAgICA6IGlkKCsrZnJhbWVEaXNwbGF5Q2FsbGJhY2tJRCkKICAg
ICAgICAgLCBjYWxsYmFjayhjYWxsYmFjaykKQEAgLTIyNyw2ICsyMjgsNyBAQCBzdHJ1Y3QgRnJh
bWVEaXNwbGF5ZWRDYWxsYmFjayB7CiAjZW5kaWYgLy8gUExBVEZPUk0oV1BFKQogCiBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXdQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgfl9XZWJLaXRXZWJWaWV3UHJpdmF0ZSgpCiAgICAgewogICAgICAgICAvLyBGb3Ig
bW9kYWwgZGlhbG9ncywgbWFrZSBzdXJlIHRoZSBtYWluIGxvb3AgaXMgc3RvcHBlZCB3aGVuIGZp
bmFsaXppbmcgdGhlIHdlYlZpZXcuCkBAIC0zMjYsNiArMzI4LDcgQEAgdm9pZCB3ZWJraXRXZWJW
aWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIGNs
YXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlciBmaW5hbCA6IHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpP
YnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUGFn
ZUxvYWRTdGF0ZU9ic2VydmVyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogbV93
ZWJWaWV3KHdlYlZpZXcpCkBAIC0zOTksNiArNDAyLDcgQEAgY2xhc3MgUGFnZUxvYWRTdGF0ZU9i
c2VydmVyIGZpbmFsIDogcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKIAogI2lmIFBM
QVRGT1JNKFdQRSkKIGNsYXNzIFdlYlZpZXdDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpWaWV3
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXZWJWaWV3Q2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogbV93
ZWJWaWV3KHdlYlZpZXcpCkBAIC03MjUsNyArNzI5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIHdlYmtpdFdlYkNvbnRleHRD
cmVhdGVQYWdlRm9yV2ViVmlldyhwcml2LT5jb250ZXh0LmdldCgpLCB3ZWJWaWV3LCBwcml2LT51
c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHByaXYtPnJlbGF0ZWRWaWV3KTsKIAotICAgIHByaXYt
PmxvYWRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3
ZWJWaWV3KTsKKyAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcj4od2ViVmlldyk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5wYWdlTG9hZFN0YXRl
KCkuYWRkT2JzZXJ2ZXIoKnByaXYtPmxvYWRPYnNlcnZlcik7CiAKICAgICAvLyBUaGUgcmVsYXRl
ZCB2aWV3IGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24uCkBAIC03NDEsNyAr
NzQ1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKEdPYmplY3QqIG9i
amVjdCkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1BFKQotICAgIHByaXYtPnZpZXctPnNldENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYlZpZXdDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICBwcml2
LT52aWV3LT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJWaWV3Q2xpZW50Pih3ZWJWaWV3KSk7CiAj
ZW5kaWYKIAogICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgYWZ0ZXIgYXR0YWNoVUlDbGllbnRUb1Zp
ZXcoKSBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQoKSBjYWxscyBzZXRDYW5SdW5N
b2RhbCgpIHdpdGggdHJ1ZS4KQEAgLTM3MDEsNiArMzcwNSw3IEBAIGdib29sZWFuIHdlYmtpdF93
ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3Qg
Y2hhcioKIH0KIAogc3RydWN0IFZpZXdTYXZlQXN5bmNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gd2ViRGF0YTsKICAgICBH
UmVmUHRyPEdGaWxlPiBmaWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggZjA5ZDZjN2U5MjA2ODNhNzU2NjUyNzY5
NjdlNzQ3Y2M2Y2VlYjQ4MS4uMDZiM2I4MzYwNjVkOWY2NmEwNzk4YTIwOTU1MTNjYTg2OGIzMWM1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBs
KEd0a1dpZGdldCogdmlld1dpZGdldCkKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVu
Y3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6
OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmll
d1dpZGdldCkpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRf
V0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNs
aWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVt
b2ppQ2hvb3Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVt
b2ppQ2hvb3Nlci5jcHAKaW5kZXggMzFlMDk3M2ZlMTAwM2M2ZWE2NTIzMDYxYTY3Yzk0OWQ1M2Vi
ZDZiNy4uMmQxYzJjYjM2OGE5OTMzMTY5NzQyNDZhMGVkNTk5YzI4ZGNhZTZjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2Vy
LmNwcApAQCAtNTE5LDcgKzUxOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEVtb2ppQ2hvb3NlclNl
dHVwRW1vamlTZWN0aW9ucyhXZWJLaXRFbW9qaUNob29zZXIqIGNob29zZXIsIEd0CiAgICAgICAg
IGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9IG51bGxwdHI7CiAgICAgfTsK
IAotICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RGTW92ZShwb3B1bGF0ZVNlY3Rpb25zKSk7CisgICAgY2hv
b3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbWFrZVVuaXF1ZTxDYWxsYmFja1Rp
bWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsKICAgICBjaG9vc2VyLT5wcml2LT5wb3B1
bGF0ZVNlY3Rpb25zVGltZXItPnNldFByaW9yaXR5KEdfUFJJT1JJVFlfREVGQVVMVF9JRExFKTsK
ICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnNldE5hbWUoIltXZWJL
aXRFbW9qaUNob29zZXJdIHBvcHVsYXRlIHNlY3Rpb25zIHRpbWVyIik7CiAgICAgY2hvb3Nlci0+
cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zdGFydFJlcGVhdGluZyh7IH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IDBmNjc0ODY0NTJj
ZDFmYTg3YTgyODYyZTdlNjA1NzM0ZGZjMzU5NjguLjViYTYxMGU3ZDlhNDRkMDQ3MzgzODFlMjNk
MDQwYmRhOTJjM2ZjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgU2NyaXB0TWVzc2FnZUNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3JpcHRNZXNzYWdlQ2xpZW50KFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlciYgaW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKQogICAgICAgICA6IG1f
aW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKGluc3BlY3RvclByb3RvY29sSGFuZGxlcikKQEAgLTEw
NSwxMyArMTA2LDEzIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5k
bGVSZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlCiAgICAgYXV0byogdXNlckNv
bnRlbnRNYW5hZ2VyID0gd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3
ZWJWaWV3KTsKICAgICBhdXRvIHVzZXJDb250ZW50TWFuYWdlclJlc3VsdCA9IG1fdXNlckNvbnRl
bnRNYW5hZ2Vycy5hZGQodXNlckNvbnRlbnRNYW5hZ2VyKTsKICAgICBpZiAodXNlckNvbnRlbnRN
YW5hZ2VyUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgYXV0byBoYW5kbGVyID0gV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VD
bGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CisgICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
OjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0
b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgICAgICB3ZWJr
aXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29u
dGVudE1hbmFnZXIpLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7
CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfcmVmKEdfT0JKRUNUKHVzZXJDb250ZW50TWFuYWdlciks
IHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KHVzZXJDb250ZW50TWFuYWdlckRlc3Ryb3ll
ZCksIHRoaXMpOwogICAgIH0KIAogICAgIGF1dG8qIGNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50
cy5lbnN1cmUocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBbdGhpcywgJnJlcXVlc3RVUkxdIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50Pihy
ZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgp
LCAqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVu
dD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFs
dWUoKSwgKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIAogICAgIEdTdHJp
bmcqIGh0bWwgPSBnX3N0cmluZ19uZXcoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKaW5kZXggMGYwMTcxMWU3OTYxZThi
MDBjNWU1NzRkMjg4NTBkMDViMjQxZjZlYy4uODBkMjBhYTc2MDNiYWRhYjkwMGZlNGJkMTU5MGFh
ZDM5YjMwZTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcApAQCAtMjg0LDYgKzI4NCw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2NsYXNzX2luaXQoV2ViS2l0V2ViSW5zcGVjdG9yQ2xhc3Mq
IGZpbmRDbGFzcykKIH0KIAogY2xhc3MgV2ViS2l0SW5zcGVjdG9yQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYkluc3BlY3RvclByb3h5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJLaXRJbnNwZWN0b3JDbGllbnQoV2ViS2l0V2Vi
SW5zcGVjdG9yKiBpbnNwZWN0b3IpCiAgICAgICAgIDogbV9pbnNwZWN0b3IoaW5zcGVjdG9yKQpA
QCAtMzYwLDcgKzM2MSw3IEBAIFdlYktpdFdlYkluc3BlY3Rvciogd2Via2l0V2ViSW5zcGVjdG9y
Q3JlYXRlKFdlYkluc3BlY3RvclByb3h5KiB3ZWJJbnNwZWN0b3IpCiB7CiAgICAgV2ViS2l0V2Vi
SW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBXRUJLSVRfV0VCX0lOU1BFQ1RPUihnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfV0VCX0lOU1BFQ1RPUiwgTlVMTCkpOwogICAgIGluc3BlY3Rvci0+cHJpdi0+
d2ViSW5zcGVjdG9yID0gd2ViSW5zcGVjdG9yOwotICAgIHdlYkluc3BlY3Rvci0+c2V0Q2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50PihpbnNwZWN0b3IpKTsKKyAg
ICB3ZWJJbnNwZWN0b3ItPnNldENsaWVudChtYWtlVW5pcXVlPFdlYktpdEluc3BlY3RvckNsaWVu
dD4oaW5zcGVjdG9yKSk7CiAgICAgcmV0dXJuIGluc3BlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRl
eCAxYjlkZDhkMWY0NjAyMTRmNWE3NzI2NzJjMmZiNjUzNzBiNTIwYzVlLi44OGIzY2Y0M2JmZTY4
ZWU5N2M3MzFiNzY0ZDQ0OTkwYTdiZmM1YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTY2LDcgKzU2Niw3
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogICAgIGd0a19kcmFnX2Rlc3Rfc2V0X3RhcmdldF9saXN0KHZpZXdXaWRnZXQsIFBhc3Rl
Ym9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLnRhcmdldExpc3QoKSk7CiAKICAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShvYmplY3QpLT5wcml2
OwotICAgIHByaXYtPnBhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBs
Pih2aWV3V2lkZ2V0KTsKKyAgICBwcml2LT5wYWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxQYWdlQ2xp
ZW50SW1wbD4odmlld1dpZGdldCk7CiAgICAgcHJpdi0+ZGlhbG9nID0gbnVsbHB0cjsKIH0KIApA
QCAtMTIyMCw3ICsxMjIwLDcgQEAgR2VzdHVyZUNvbnRyb2xsZXImIHdlYmtpdFdlYlZpZXdCYXNl
R2VzdHVyZUNvbnRyb2xsZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcKIHsKICAgICBXZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAo
IXByaXYtPmdlc3R1cmVDb250cm9sbGVyKQotICAgICAgICBwcml2LT5nZXN0dXJlQ29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VzdHVyZUNvbnRyb2xsZXI+KEdUS19XSURHRVQod2ViVmll
d0Jhc2UpLCBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoR2VzdHVyZUNvbnRyb2xsZXI+KHdlYlZpZXdC
YXNlKSk7CisgICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxHZXN0
dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSksIG1ha2VVbmlxdWU8VG91Y2hH
ZXN0dXJlQ29udHJvbGxlcj4od2ViVmlld0Jhc2UpKTsKICAgICByZXR1cm4gKnByaXYtPmdlc3R1
cmVDb250cm9sbGVyOwogfQogCkBAIC0xNTAxLDcgKzE1MDEsNyBAQCBEcmFnQW5kRHJvcEhhbmRs
ZXImIHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5kbGVyKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaQogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdC
YXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyKQotICAgICAgICBw
cml2LT5kcmFnQW5kRHJvcEhhbmRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYWdBbmREcm9wSGFu
ZGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CisgICAgICAgIHByaXYtPmRyYWdBbmREcm9wSGFuZGxl
ciA9IG1ha2VVbmlxdWU8RHJhZ0FuZERyb3BIYW5kbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKICAg
ICByZXR1cm4gKnByaXYtPmRyYWdBbmREcm9wSGFuZGxlcjsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
RFJBR19TVVBQT1JUKQpAQCAtMTcxMyw3ICsxNzEzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jh
c2UKICAgICBpZiAocHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyKQogICAgICAgICBwcml2LT52
aWV3R2VzdHVyZUNvbnRyb2xsZXItPmNvbm5lY3RUb1Byb2Nlc3MoKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CisgICAgICAgIHBy
aXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAgICAgICBwcml2LT52aWV3R2VzdHVy
ZUNvbnRyb2xsZXItPnNldFN3aXBlR2VzdHVyZUVuYWJsZWQocHJpdi0+aXNCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlRW5hYmxlZCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAyY2FiMmUwNTM4NmQ0MmIzNzFmNDQwNmFiNzFhN2Y2
NTkzMGY3ZDc3Li4xNDYwM2Q1YWZlYmFmNmRlZTAxMTk3OTU3NzAzODgzNDlkNGU3YjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtODk1LDYgKzg5NSw3
IEBAIC0gKHZvaWQpbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnQKIHsKICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50
IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xp
ZW50KFdLVmlldyAqd2tWaWV3KQogICAgICAgICAgICAgOiBtX3drVmlldyh3a1ZpZXcpCkBAIC05
MzIsNyArOTMzLDcgQEAgLSAodm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgaWYgKFtzZWxmIHJlc3Bv
bmRzVG9TZWxlY3RvcjpJY29uTG9hZGluZ0NsaWVudDo6ZGVsZWdhdGVTZWxlY3RvcigpXSkKLSAg
ICAgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCkuc2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oc2VsZikpOworICAgICAgICBfZGF0YS0+X2ltcGwt
PnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50
PihzZWxmKSk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZp
Z3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24KQEAg
LTk0NCw3ICs5NDUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIHByb2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJgogICAgIFdlYktpdDo6SW5p
dGlhbGl6ZVdlYktpdDIoKTsKIAogICAgIF9kYXRhID0gW1tXS1ZpZXdEYXRhIGFsbG9jXSBpbml0
XTsKLSAgICBfZGF0YS0+X2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmlld0lt
cGw+KHNlbGYsIG51bGxwdHIsIHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsK
KyAgICBfZGF0YS0+X2ltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYs
IG51bGxwdHIsIHByb2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIAogICAgIFtz
ZWxmIG1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50XTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAppbmRleCAyMTk5MWY4ZGFmMzFiNDFi
MTU2NWZmZjk4NjVkZTk5MzhmYjhhMGRmLi42NGNhMmZjYjVhODUxMjdmNWI0MTQ3MWVjZTZlYThm
NDQ2Y2UwNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQ
SVZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZp
ZXdDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBWaWV3OwogbmFtZXNwYWNlIEFQSSB7
CiAKIGNsYXNzIFZpZXdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgflZpZXdDbGllbnQoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggODUx
MjlhNTQ4N2M5ZmZiZWQ1NjY0NmNjMTBkZDE4ODNjOTg3NTZkMy4uZTIwOGE1YzU1ZDc1ODg1NzNk
ZmY0MzYwMzM3N2VmOGQxNjM1ODVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChXS1dQRTo6VmlldyYg
dmlldykKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxl
cihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEdlc3R1cmVDb250cm9sbGVyPigpKQorICAgICwgbV9z
Y3JvbGxHZXN0dXJlQ29udHJvbGxlcihtYWtlVW5pcXVlPFNjcm9sbEdlc3R1cmVDb250cm9sbGVy
PigpKQogewogfQogCkBAIC02Myw3ICs2Myw3IEBAIElQQzo6QXR0YWNobWVudCBQYWdlQ2xpZW50
SW1wbDo6aG9zdEZpbGVEZXNjcmlwdG9yKCkKIAogc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVh
UHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4obV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KG1f
dmlldy5wYWdlKCksIHByb2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3
TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgKaW5k
ZXggOWM5ZjZlOWUzYjE4YjQyZjUzZjcyZjhlYjU1YTRlNjc1NWRiNDdhMi4uM2Y2MzI1MTIxZDgy
OGUzNThhZDE1Yjc2YzRkNWNkYzQ4Mzc1ZGMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNjcm9sbEdlc3R1cmVDb250
cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTY3Jv
bGxHZXN0dXJlQ29udHJvbGxlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkxMDlhYTI4NTVi
OGJiNDE1NzE3MDQ0Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQwMzBjZTA0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC00Miw4
ICs0Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tXUEUgewogCiBW
aWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xpZW50KG1ha2VV
bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8
UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAwIH0KICAgICAs
IG1fdmlld1N0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2
ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgfQogICAg
ICwgbV9iYWNrZW5kKGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6flZpZXcoKQog
dm9pZCBWaWV3OjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0NsaWVudD4mJiBj
bGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1
ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudCA9IFdURk1v
dmUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvcXQvV1BFUXRWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQv
V1BFUXRWaWV3LmNwcAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1YjEzNTYxY2Iz
NjZjLi5iNGYyN2I2ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCkBAIC0xNTAs
NyArMTUwLDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2soV2Vi
S2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChzdGF0dXNTZXQp
IHsKICAgICAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1ZXN0UHJpdmF0
ZSh2aWV3LT51cmwoKSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVR
dFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BF
UXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAgIFFfRU1JVCB2
aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQogfQpAQCAtMTY2
LDcgKzE2Niw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2soV2Vi
S2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9hZFN0YXR1cyA9
IFdQRVF0Vmlldzo6TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAgIFdQRVF0Vmll
d0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3RyaW5nKGZhaWxp
bmdVUkkpKSwgbG9hZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQ
RVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0
Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1JVCB2aWV3LT5s
b2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBA
QCBzdGF0aWMgdm9pZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3OjpydW5KYXZhU2Ny
aXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxiYWNrKQogewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BF
UXRWaWV3Pih0aGlzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRDYWxsYmFja0Rh
dGE+IGRhdGEgPSBtYWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNrLCBR
UG9pbnRlcjxXUEVRdFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFz
Y3JpcHQobV93ZWJWaWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRhKCksIG51bGxw
dHIsIGpzQXN5bmNSZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQu
Y3BwCmluZGV4IGE4NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQxZjkuLjEzZmQz
N2FlZmYyYjY1MzVkNTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcApAQCAt
NjUsNyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4gV1BFUXRWaWV3
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICghZWdsQ29udGV4
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0
LCB2aWV3KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBl
Z2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BFUXRWaWV3QmFj
a2VuZDo6V1BFUXRWaWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERpc3BsYXkgZGlz
cGxheSwgRUdMQ29udGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29udGV4dD4gY29u
dGV4dCwgUVBvaW50ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgKaW5kZXggNDIwOGU4ZjIyZTBhYTRlZGQ4
NWI1MjI1OTA0YzJkYzQ5OWIwNWU5Ni4uOTQ5MzdiMDAxOTQ2MjUzNjJmNjQ0Y2E3NzA1MDhkMGRh
YTY3NDMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0
YXRlVHJhY2tlci5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1MgVUlWaWV3OwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPEFwcGxpY2F0aW9uU3RhdGVUcmFja2VyPiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIoVUlWaWV3
ICosIFNFTCBkaWRFbnRlckJhY2tncm91bmRTZWxlY3RvciwgU0VMIGRpZEZpbmlzaFNuYXBzaG90
dGluZ0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kU2VsZWN0b3IsIFNFTCB3aWxsRW50ZXJGb3JlZ3Jv
dW5kU2VsZWN0b3IpOwogICAgIH5BcHBsaWNhdGlvblN0YXRlVHJhY2tlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcAppbmRleCBlMzM1NDNiN2JkYTFkNTkzZjMwNDUzYWU0ZDY5YmYyNWRlNzQwY2Jl
Li5hYjlkNDg0M2ZmNzUwMzg5MjE3MzRhY2UzNDQxZjFkMTU3NTgwNmQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcApAQCAtNzMsMTEgKzczLDExIEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1
bHRQYWdlTG9hZFRpbWVvdXQgPSAzMDBfczsKIHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9y
bWFsOwogCiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAg
IDogbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
PigpKQorICAgIDogbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50PigpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9m
cm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9t
YXRpb25CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
KQotICAgICwgbV9kb21haW5Ob3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9u
dGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmll
cihtYWtlVW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21h
dGlvblNlc3Npb246OmxvYWRUaW1lckZpcmVkKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNU
SU9OU19BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQ
cm94eS5oCmluZGV4IDZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUz
YjM3NzA3ZTg3YzUxZGM0YWU5ZDYzOWIxZDRmMzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcg
QEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDwKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNT
eW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPElQQzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVz
dGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+
KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29k
ZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2Fn
ZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAxMGE4
ZTQyNDEzYjI5YWZmYjYzNzdkODRhMDliZTUxMWJkMjUxZDVjLi5kZTQwZmM4ZjMxNzY5NzViMTUy
YzRlZmFhNDAxNTdjOTRmMmZhOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5h
bCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudChpZCA8X1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYjAx
MWRkM2E3MjM5NzMyMDVjYzZkZjRjYzY2YTY3OTA2YzAyOWIwZC4uMDc0Mzc5MDRmMWU0MjMwYjMx
NTgyYTlkZjQyYzIzYzE0ZDYwNWFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdh
dGUoV0tXZWJWaWV3ICopOwogICAgIH5JY29uTG9hZGluZ0RlbGVnYXRlKCk7CkBAIC00OCw2ICs0
OSw3IEBAIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgewogCiBwcml2YXRlOgogICAgIGNsYXNz
IEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxp
Y2l0IEljb25Mb2FkaW5nQ2xpZW50KEljb25Mb2FkaW5nRGVsZWdhdGUmKTsKICAgICAgICAgfklj
b25Mb2FkaW5nQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQppbmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIyYmVi
NWJjYmQ3YzBkNzRjZmI0Li4xNjNmYjk1MmVlMGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2OGY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0Rl
bGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fkljb25M
b2FkaW5nRGVsZWdhdGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVu
dD4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWlu
UHRyPGlkIDxfV0tJY29uTG9hZGluZ0RlbGVnYXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmRl
bGVnYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmlu
ZGV4IGE1MWEyMjM2MjM4NDE1MWFiMTFkNDg5NDM2OWY4YTE4NTgwMDY3ZGEuLmY1MTM3ZjljYzcz
MTYzODhlNjFkZTEwNzczZmYzNDI4NTYyNTA1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtNzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6On5V
SURlbGVnYXRlKCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkNvbnRleHRNZW51Q2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVu
dCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOwog
fQogI2VuZGlmCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRlOjpj
cmVhdGVVSUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+
KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQogCiBS
ZXRhaW5QdHI8aWQgPFdLVUlEZWxlZ2F0ZT4gPiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDQ4YzJiMmI0ZTA2MTA2OTI3MmFlYjhiOTRhMjM0
ZWFhOTI2YWY3NmQuLjkxY2Y5NDgwYzc1MThjZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5IDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2U6
Ok9ic2VydmVyLCBwdWJsaWMgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OkNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU291cmNlUHJveHkodWludDY0
X3QgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUmVmPFJlYWx0aW1lTWVk
aWFTb3VyY2U+JiYgc291cmNlKQogICAgICAgICA6IG1faWQoaWQpCkBAIC0xNjgsNyArMTY5LDcg
QEAgdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZv
ckNhcHR1cmVEZXZpY2VXaXRoQ29uc3RyYWkKICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0
cnVlKTsKICAgICAgICAgc2V0dGluZ3MgPSBzb3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFT
U0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQs
IHN0ZDo6bWFrZV91bmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24o
KSwgV1RGTW92ZShzb3VyY2UpKSk7CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlx
dWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3Vy
Y2UpKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUo
c291cmNlT3JFcnJvci5lcnJvck1lc3NhZ2UpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nl
ZWRlZCwgaW52YWxpZENvbnN0cmFpbnRzLCBXVEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmgKaW5kZXggOWNhNmZhMzUzNDk2MDE4MDNkZjVkM2QxYjJhYmEzMTY1NTc0MGMz
OS4uOWJkZGI5OTA5ZGY3ZThmZWYxZTU0ODA2Y2JlNmJjNWM0MGNmYzU4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBTaGFyZWRNZW1vcnk7CiBjbGFz
cyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkg
OiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
KFdlYlByb2Nlc3NQcm94eSYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQppbmRleCAzMDcwZDU3NDQzZmRmNzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5l
NWUzMmQyZmEyYTA4NjA0MTdjNmNmODBkN2JjZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEz
NSw3ICsxMzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQog
ICAgIGlmICghW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktl
eTpAIldlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3Rh
bGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKTsKIAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudD4oKSk7CisgICAgc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1h
a2VVbmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6c3RhcnREaXNwbGF5TGluayhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2ln
bmVkIG9ic2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRv
IGRpc3BsYXlMaW5rID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsK
KyAgICBhdXRvIGRpc3BsYXlMaW5rID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlE
KTsKICAgICBkaXNwbGF5TGluay0+YWRkT2JzZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7
CiAgICAgbV9kaXNwbGF5TGlua3MuYXBwZW5kKFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0KaW5kZXggNWMyMWNhNzVhMTgyOWM1MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFl
Yzg0NmI3YjQ2MDU0OGNlMGY4NmQ3YTVkMTE3YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIw
NSw3ICsyMDUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRs
eVVuc3VzcGVuZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3Vu
ZEFjdGl2aXR5VGltZW91dEhhbmRsZXIgPSBbYWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsK
ICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tn
cm91bmQgYWN0aXZpdHkgdGltZWQgb3V0Iiwgd2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAg
bV91bmV4cGVjdGVkQWN0aXZpdHlUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVm
ZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFu
ZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rp
dml0eVRpbWVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihX
VEZNb3ZlKGJhY2tncm91bmRBY3Rpdml0eVRpbWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2
aXR5RHVyYXRpb24pOwogICAgIGNvbXBsZXRpb24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBjYWIwNTUwOWZiNmQwMmJi
NDNlODhkOGQ2NTQ4OWZmYjcyMmZlODAyLi44ZGY0ZGE3YjMyMDgwOTQ2ZGY3MWM5MjgyMTY1M2Y2
ZWE5NDA3NTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQpAQCAtMTMxNSw3ICsxMzE1LDcgQEAgc3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0
cmFja2luZ0FyZWFPcHRpb25zKCkKIAogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8
V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQ
cm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNv
bmZpZ3VyYXRpb24pCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwg
bV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmll
dykpCiAgICAgLCBtX3BhZ2UocHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50
LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSkKICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRv
d0Nvb3JkaW5hdGVzKG1fcGFnZS0+cHJlZmVyZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAg
ICwgbV9pbnRyaW5zaWNDb250ZW50U2l6ZShDR1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0
cmljLCBOU1ZpZXdOb0ludHJpbnNpY01ldHJpYykpCkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwoTlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywg
V0tXZWJWaWV3ICpvdXRlcldlYgogICAgIHZpZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5T
Vmlld0xheWVyQ29udGVudHNQbGFjZW1lbnRUb3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQotICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNj
cmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwog
I2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7
CkBAIC0xNzExLDkgKzE3MTEsOSBAQCBDR1NpemUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6
ZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJW
aWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mp
CiB7CiAgICAgaWYgKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmpl
Y3RGb3JLZXk6QCJXZWJLaXQyVXNlUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFs
dWVdKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdl
YlZpZXdJbXBsOjppc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcoKSBjb25zdApAQCAtMzM1Niw3ICsz
MzU2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0VGV4dEluZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0
SW5kaWNhdG9yLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUp
CiB7CiAgICAgaWYgKCFtX3RleHRJbmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGlj
YXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRv
dz4obV92aWV3LmdldEF1dG9yZWxlYXNlZCgpKTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2lu
ZG93ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0
QXV0b3JlbGVhc2VkKCkpOwogCiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNv
b3JkaW5hdGVzID0gW1ttX3ZpZXcgd2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcg
Y29udmVydFJlY3Q6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzKCkgdG9WaWV3Om5pbF1dOwogICAgIG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4
dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBOU1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0
SW5TY3JlZW5Db29yZGluYXRlcyksIGxpZmV0aW1lKTsKQEAgLTQzNTgsNyArNDM1OCw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNhdmVCYWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiBpdGVtKQogVmlld0dlc3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6
ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxl
cikKLSAgICAgICAgbV9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dl
c3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOworICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0g
bWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICpt
X2dlc3R1cmVDb250cm9sbGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0
ODU2NWM5ZTU4Y2NkYTEwZjNlYTQ0NGMyNzYuLjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJj
OTMzN2I2NWQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3Qg
VXBkYXRlSW5mbyYgdXAKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9y
ZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9y
ZT4odXBkYXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93
ZWJQYWdlUHJveHkpOworICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2lu
Z1N0b3JlPih1cGRhdGVJbmZvLnZpZXdTaXplLCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9y
LCBtX3dlYlBhZ2VQcm94eSk7CiAKICAgICBtX2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRh
dGUodXBkYXRlSW5mbyk7CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6
RnVuYwogICAgIH0KIAogICAgIGlmICghbV9kcmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3
aW5nTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M6OkRyYXdpbmdNb25pdG9yPihtX3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJh
d2luZ01vbml0b3IgPSBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzOjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0
b3ItPnN0YXJ0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJk
MDM4NmFjZjVkOGFkNTM1Yzc5MTJhODg2Y2JkMGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgy
NDcxNmE2NjVlZTFiNzg2OTZhNmE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERl
dmljZUlkSGFzaFNhbHRTdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3Jp
Z2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRT
ZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwor
ICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2lu
PihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1
cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAg
ICAgaGFzaFNhbHRGb3JPcmlnaW4tPmxhc3RUaW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhsYXN0VGltZVVzZWQpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1
cml0eU9yaWcKIAogICAgICAgICBTdHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9T
dHJpbmcoKTsKIAotICAgICAgICBhdXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1v
dmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1
dG8gbmV3SGFzaFNhbHRGb3JPcmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihX
VEZNb3ZlKGRvY3VtZW50T3JpZ2luKSwgV1RGTW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRl
dmljZUlkSGFzaFNhbHQpKTsKIAogICAgICAgICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRh
NTNmNTc5OWE1MDM0NGYzMTI1MWY1ZTk2ODQuLmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZk
ZTA5Zjk1Y2E3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKQEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFBy
b3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29s
JiBwcm9jZXNzUG9vbAogCiAgICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hv
dWxkVGFrZUFzc2VydGlvbikgewogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlv
bik7Ci0gICAgICAgIG1fZG93bmxvYWRVSUFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJv
Y2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJf
cywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25s
b2FkVUlBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQ
cm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKIAogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNz
ZXJ0aW9uKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9k
b3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMi
X3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3du
bG9hZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3Nl
cnRpb25zIGZvciBVSVByb2Nlc3MgYW5kIE5ldHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDNkZWY1ZDc5ZjA3Y2I5
MTQwYjgyNTYyZGI5ZjZmMmJjNmQwZjcyZjYuLjU2MDZjNTExNjUzNGY0M2NmYzgwNmQ1MTFkNDFl
ZDk4Y2ZiMjUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vz
c1Byb3h5OwogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyLCBwcm90ZWN0ZWQgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmF3aW5nQXJlYVByb3h5KTsK
IAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9V
SUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJ
R2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBlY2FhYzMwMWI0YmRmNDZmMmM4OWNkZGU3MWQxOTMy
NTQ1MTRmNjQwLi5mNGI3YmVhNjU4NTA5OTFlOTQ5NGE2MjIzZDU0Yjk4MmFlY2ZkMTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3Zp
ZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpzZXRJbml0
aWFsQ29ubmVjdGVkR2FtZXBhZHMoY29uc3QgVmVjdG9yPFBsYXRmb3JtR2FtZXBhZAogICAgIGZv
ciAoYXV0byogZ2FtZXBhZCA6IGluaXRpYWxHYW1lcGFkcykgewogICAgICAgICBpZiAoIWdhbWVw
YWQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5p
bmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPigqZ2FtZXBhZCk7CisgICAgICAg
IG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oKmdh
bWVwYWQpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcG9vbCA6IG1fcHJvY2Vzc1Bvb2xzVXNp
bmdHYW1lcGFkcykKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3ZpZGVyOjpw
bGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1lcGFkKQogICAgICAg
ICBtX2dhbWVwYWRzLmdyb3coZ2FtZXBhZC5pbmRleCgpICsgMSk7CiAKICAgICBBU1NFUlQoIW1f
Z2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7Ci0gICAgbV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4
KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVwYWQpOworICAgIG1fZ2FtZXBh
ZHNbZ2FtZXBhZC5pbmRleCgpXSA9IG1ha2VVbmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKIAog
ICAgIHNjaGVkdWxlR2FtZXBhZFN0YXRlU3luYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIu
aAppbmRleCA3ZDU2YjBhMjQ2M2RlZGYxNjY5NThjMjhmZmI3NWFhMGUyY2U1MWYxLi5lNmJjMGE0
NTA1NjVlZTJlZmExYmQwNWEyYTc1NjExMWExNWQ5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1w
bGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKIAogY2xhc3MgSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZ2hQ
ZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDk0ZmFmNmI5ZGUyNjIwMWQ4NGQyNmZmODM5MzNmODIyOWMwNWQ2YjkuLjI3
N2NhMDQ0ZTQwN2IwN2JjNGFmNThmMjIyMTdjYjZiNjg0MjhhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3ludGhlc2l6ZUFw
cElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpCiBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KQogewogICAgIGlmICghbV9kb3dubG9hZFByb3h5TWFwKQotICAgICAgICBt
X2Rvd25sb2FkUHJveHlNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0
aGlzKTsKKyAgICAgICAgbV9kb3dubG9hZFByb3h5TWFwID0gbWFrZVVuaXF1ZTxEb3dubG9hZFBy
b3h5TWFwPigqdGhpcyk7CiAKICAgICByZXR1cm4gbV9kb3dubG9hZFByb3h5TWFwLT5jcmVhdGVE
b3dubG9hZFByb3h5KG1fcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCk7CiB9CkBAIC0xMjEx
LDcgKzEyMTEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3Bh
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZQogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0YWtlVXBsb2FkQXNzZXJ0aW9uKCkKIHsKICAgICBBU1NFUlQoIW1fdXBsb2FkQXNz
ZXJ0aW9uKTsKLSAgICBtX3VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vz
c0Fzc2VydGlvbj4ocHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgbV91cGxvYWRBc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJL
aXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyVXBsb2FkQXNzZXJ0aW9uKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKaW5kZXggNDMzNTQ1YzBlMzNmYWFlZWQ5ZGViYjM0ZjZiMjBjZmNhZTVlOTVjOC4uNTk1YjNl
ZTQxNWNkZjcwNDYwOWM1MzZjOTBhYmEyNTk3MTdkNDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTcwLDYg
KzcwLDcgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vi
c2l0ZURhdGE7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCmluZGV4IDJhYWZmMWVjMmE2NTQ5MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIuLjQ3
YTNlOWIyM2JhMTI2NTE5OGI2MGVkZGY2YzRkZDk4NmZjZDIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTU2LDE0ICs1NiwxNCBAQCBSZWY8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJQcm9jZXNzUAogCiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJD
b250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtl
X3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlciht
YWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiB9CiAKIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpOb3RpZmljYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVy
KSB7Ci0gICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0
aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6Tm90
aWZpY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlYzY0YmM5ZTE2MmNiN2NhMWU3NTM3ZTkzMzFk
NGYxMzk1ODdlYzQxLi42Y2Y1ZTE0ZWE1NjlmMjNkYTg0NzU0MDk2Y2E1MTE0NTNjMjk4YjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgdXNp
bmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7CiAjZW5kaWYKIAogY2xhc3MgUGFn
ZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWdlQ2xpZW50PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUNsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRl
Q1BVVXNhZ2VTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKaW5kZXggMDFhN2RhN2I4OTFhOTAwNjZjOTBlODQyOWM2NTZi
ZDcwMGIxNjZiZC4uZWE0MzkyN2Q0OGQ3NTJiZWI2NzI4MDk0OTljOWFkMGJmZTA3YmM1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVD
UFVVc2FnZVNhbXBsZXIuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBj
bGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihXZWJQcm9jZXNzUG9vbCYpOwogICAg
IH5QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKaW5kZXggZjZmNDc5YjFlMDM5MmYzMjIxNjBhNjQ5NGFlYzYyZTBhMDY3OTZkZC4u
ODQzNjlkMzM0NDA3Y2ZiYzJlODNhYTgyN2M1Y2MwZTVkYjkxMjJlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94
eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25Q
YQogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyBib29sIHBsdWdpblJlcXVpcmVzR3RrMihjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9k
dWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KHBsdWdpblBhdGgpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsK
ICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIG1vZHVsZS0+ZnVuY3Rpb25Qb2ludGVyPGdwb2ludGVyPigiZ3RrX29iamVjdF9nZXRfdHlw
ZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRl
eCAwMGE5OTE4ODYxNDg3MzkzOGE2Y2I0YWJkOTkxNGJjODYyOTQ1Y2Y3Li40Y2UyNjJlOWRjYmI0
YjFiMGZmMGFkNWRiOTdlYjk3ZjM2MDczNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgUHJvY2Vzc1Ro
cm90dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2VzcyhQcm9jZXNzSUQgcGlkKQogCiAgICAgbV9zdXNw
ZW5kVGltZXIuc3RvcCgpOwogICAgIGlmIChtX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRp
b24pCi0gICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQW5kVUlB
c3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRl
KCkpOworICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0
aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fYXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNz
QXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0
ZSgpKTsKKyAgICAgICAgbV9hc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+
KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkpOwogICAg
IG1fcHJvY2Vzcy5kaWRTZXRBc3NlcnRpb25TdGF0ZShhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBt
X2Fzc2VydGlvbi0+c2V0Q2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggNjBmMDJjNjEwZmNkOTg4MzA2MzljNTdi
M2U5ZDYxZmYxZmQ1MjVmZC4uMjc0YWJkMzAyOWMwMDc3MzM5ZGZlMzc0OGZmMzA2OTdjOWI0OGI0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0K
QEAgLTEwNyw3ICsxMDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShX
ZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAg
IDogRHJhd2luZ0FyZWFQcm94eShEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUsIHdlYlBh
Z2VQcm94eSwgcHJvY2VzcykKLSAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlSG9zdChzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJU
cmVlSG9zdChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKSkKIHsKICNpZiBI
QVZFKElPU1VSRkFDRSkKICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBvb2wgc3VyZmFjZXMgaW4g
dGhlIFVJIHByb2Nlc3MuCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Ojp1cGRhdGVEZWJ1Z0luZGljYXRvcihJbnRTaXplIGNvbnRlbnRzU2l6
ZSwKIAogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojppbml0aWFsaXplRGVi
dWdJbmRpY2F0b3IoKQogewotICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcyk7CisgICAgbV9kZWJ1Z0lu
ZGljYXRvckxheWVyVHJlZUhvc3QgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0
aGlzKTsKICAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdC0+c2V0SXNEZWJ1Z0xheWVy
VHJlZUhvc3QodHJ1ZSk7CiAKICAgICBtX3RpbGVNYXBIb3N0TGF5ZXIgPSBhZG9wdE5TKFtbQ0FM
YXllciBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCAzMDAy
NWQ0Mjk5ZjNiY2EwNDg1ZDMwNGQ4MzM1ODE3NjEwYmE1MGJkLi44YTRlNTA0ODE3ZWJjMTI1Y2U4
OThjMWMyOTFkOWE2ZTRkNWY1ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAt
MjUyLDcgKzI1Miw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlTGF5ZXIoY29u
c3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlCiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWFrZU5vZGUoY29uc3Qg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJiBwcm9w
ZXJ0aWVzKQogewogICAgIGF1dG8gbWFrZVdpdGhMYXllciA9IFsmXSAoUmV0YWluUHRyPENBTGF5
ZXI+IGxheWVyKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
VHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQs
IFdURk1vdmUobGF5ZXIpKTsKICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nTGF5ZXIgPSBb
Jl0gKENBTGF5ZXIqIGxheWVyKSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aExheWVyKGFkb3B0
TlMobGF5ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KaW5kZXggZTg4YmJjNjA4ZDRm
YjA1ODM4NGQyOWIyNjk4MTU5MmVkYTgxNGViYS4uNGZkNGVhMjY5ZThjYzFiZGZmYjJlYjI1OTdk
NGY3NTBkODQyNDA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KQEAgLTczLDcgKzcz
LDcgQEAgUmVtb3RlTGF5ZXJUcmVlTm9kZTo6flJlbW90ZUxheWVyVHJlZU5vZGUoKQogc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0
ZVdpdGhQbGFpbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBs
YXllcklEKQogewogICAgIFJldGFpblB0cjxDQUxheWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1Bs
YWluUmVtb3RlTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW1vdGVMYXllclRyZWVOb2RlPihsYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXll
cikpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZU5vZGU6OmRldGFjaEZyb21QYXJlbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YS5oCmluZGV4IGMyNzgxZGM4YWRhMzQzMzlmNzllZDg1YTdlM2U5ZmY3NjUyMjI1MjguLjI5
ZGZlZmU2Y2I3MmMxMjBhNjFjYzIyZDBkM2JhNjRhNmQ5NDQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKQEAgLTMz
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5OwogCiBjbGFzcyBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YShSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Jik7CiAgICAgflJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0
YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKaW5k
ZXggODZkMGRlZmM2OTY1ZTRmYTZiYTExNjQ3NjFiYzlhYzcxOThjNzJlNi4uMWE3Njk0M2YyNDVi
ZTFjZDgyMmYxOTYxM2NkZDM1ZjU0MGE5NGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFJlbW90ZVNj
cm9sbGluZ1RyZWU7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yUHJveHkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkpOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoV2ViUGFn
ZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXgg
NjI5YTljNjUwZDQzYzBkNTYxYzgxOTMzYmEwZDE0ZThkMzNlYTQ0NC4uMGMxMjZhZTZhZjc1ZTQx
MzhhZmQwMDg2ODM5NTY2MjlmZjcwMDIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJU
cmVlSG9zdElPUy5tbQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4g
Y3JlYXRlUmVtb3RlVmlldyhwaWRfdCBwaWQsIHVpbnQzMl90IGNvbnRleHRJRCkKIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9k
ZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRp
ZXMmIHByb3BlcnRpZXMpCiB7CiAgICAgYXV0byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0
cjxVSVZpZXc+IHZpZXcpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXll
cklELCBXVEZNb3ZlKHZpZXcpKTsKICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9
IFsmXSAoVUlWaWV3KiB2aWV3KSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHRO
Uyh2aWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KaW5kZXggODFhMmViOWE2MzVkNTk4NDE2MDBm
NzgzNTIwNGFjODRiZDZkNWMyOC4uYjg5MDY4MWU5ZTdhNTEzYmEzNDM2N2NlZjM5ODliZTNiMTlk
OWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hp
bGRyZW4oY29uc3QgUwogCiAgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAg
ICAgaWYgKHNjcm9sbENvbnRhaW5lckxheWVyKCkpCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05v
ZGVEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUz4oKnRoaXMpOworICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUg
PSBtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlz
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBu
dWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQppbmRleCBiNTZlMmVhNjRkYTUyMDMxZGZhZjEy
OGVjMjQ4Y2QxNWM3MTAwOTI2Li5kMGJkZDNjNTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFhYjU3
ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TLm1tCkBAIC00Myw3ICs0Myw3IEBAIFJlZjxTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Ny
b2xsaW5nVHJlZSwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAg
ICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGluZ05vZGVE
ZWxlZ2F0ZShtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+
KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCA2NDg5YThlNzQ0MmQ3YjE3MDUyOTVi
NjJlZWI1YzAyNWM3YTliMzNhLi5lNjM3ZDYxNTMyNWQzODBjZTkyZDA3YTJiMTIxOTEzZmYxODFk
ZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIDogcHVibGljIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmKTsKICAgICB+U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAK
aW5kZXggMzJhMWUzM2FhODU2N2MwYjYxNjJlMDY3ODNjZjM3NmNmNjE5MDdlMi4uMjMzZmZkMDIx
ZTYzOGJmMTg4ZjhkY2FiZDc3OWM3NDUyOTQzNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3Bw
CkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5v
ZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYyh0cmVlLCBub2RlVHlwZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxl
clBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKKyAgICAsIG1f
c2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCmluZGV4IGQ4OTYwY2VjMzBlNDMzMTlhYTAyN2Q5
YTIxZmNlZmM4Mzc2MzUwNDMuLmI2Y2EzY2JiYTgwODA3YWY3YjlmNjk5YmU5YjFiMmFhOWNkYzFj
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9t
YWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApAQCAtNDEsNyArNDEsNyBAQCBSZWY8
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYz4gU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTgogCiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNj
cm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Ny
b2xsZXJQYWlyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCisgICAg
LCBtX3Njcm9sbGVyUGFpcihtYWtlVW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xs
ZXIuaAppbmRleCBmMjYxZjUyNjgxNTJkMGZkZGI2ODU1MWE4NjAxNTJlNDE2N2QwYWVjLi4yYjkw
ZTFiODljMGFhNWVlZWFmMDU0ZGU0MjhkZWVkNDBlNjNhOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKQEAgLTQzLDYgKzQzLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFN5c3Rl
bVByZXZpZXdDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihXZWJQYWdlUHJveHkmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKaW5kZXggZjUwNWUyODBjNDQyOTBhODAz
ZGJkYjY4Yzk4ZWVhNjMwYjFjOWJiNi4uODY4YjU0ZTc5MmFmMmFiZDk4NmJjODY2MDA1Y2IxMmY0
NTY4MjQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCkBAIC00OCw2ICs0OCw3
IEBAIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5CiAgICAgLCBw
cml2YXRlIExvZ2dlckhlbHBlcgogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkoV2ViUGFnZVByb3h5Jik7CiAgICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQppbmRleCA5ZWFlMThlZGQ1
ZjRkMmRjNWRmMzhlOTZkMDUwNTA5M2JjYTliMzk4Li5hYmQwZTdlNzI5NDc5MTI4Y2I2YWZmZjdm
MjE4MTI2M2U0ZGE5ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KQEAgLTkyLDcgKzky
LDcgQEAgVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+IEhpZFNlcnZpY2U6OmNyZWF0ZUhpZENvbm5l
Y3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogCiB2b2lkIEhpZFNlcnZpY2U6OmRldmljZUFk
ZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsKLSAgICBhdXRvIGRyaXZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKKyAg
ICBhdXRvIGRyaXZlciA9IG1ha2VVbmlxdWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVj
dGlvbihkZXZpY2UpKTsKICAgICAvLyBHZXQgYXV0aGVudGljYXRvciBpbmZvIGZyb20gdGhlIGRl
dmljZS4KICAgICBkcml2ZXItPnRyYW5zYWN0KGVuY29kZUVtcHR5QXV0aGVudGljYXRvclJlcXVl
c3QoQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVudGljYXRvckdldEluZm8pLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyksIHB0ciA9IGRyaXZlci5nZXQoKV0oVmVjdG9yPHVpbnQ4X3Q+
JiYgcmVzcG9uc2UpIHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDg1
Y2U2OTA2MTExNDQyYmM2NzljYzdhNzc1Yjg2ODJkZDE1NzI4YzkuLmY4NTJiZWQyMTMwYjQ3YzJm
N2RkMjk4YWQzNTZhZWFjODdjMDI2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yUHJveHkuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eSk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOTlk
NmVhMzM0MTUzZWNmNDlkNDU4NGM3NDNkYzY4MTY4ODQxNTUyMC4uODQ2YTVhYTI3ZGZhYjNkMjc0
Y2ZmYTQ4NzM4NjFmMjU4N2QxN2ZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNDYsNyArNDYsNyBAQCBS
ZWY8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
OjpjcmVhdGUoV2ViUHJvY2Vzc1BvbwogCiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQogICAg
IDogV2ViQ29udGV4dFN1cHBsZW1lbnQocHJvY2Vzc1Bvb2wpCi0gICAgLCBtX3Byb3ZpZGVyKHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92
aWRlcihtYWtlVW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKIHsKICAgICBXZWJD
b250ZXh0U3VwcGxlbWVudDo6cHJvY2Vzc1Bvb2woKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAq
dGhpcyk7CiB9CkBAIC01NCw3ICs1NCw3IEBAIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1BvCiB2b2lk
IFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQogewogICAgIGlmICghcHJvdmlk
ZXIpCi0gICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6R2VvbG9jYXRp
b25Qcm92aWRlcj4oKTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpHZW9s
b2NhdGlvblByb3ZpZGVyPigpOwogICAgIGVsc2UKICAgICAgICAgbV9wcm92aWRlciA9IFdURk1v
dmUocHJvdmlkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKaW5kZXggMmNkY2QxNzY1Mjk5ZmU3NzY0OWJh
YmY5ZGUzZTc0ZThiMGYwMGUzNy4uMzM2NGJjYmNjOTExODRhNmJhNzU0MWVmOTBiMGY5NjA0Y2Rl
NGRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBXZWJNZWRpYVNl
c3Npb25Gb2N1c01hbmFnZXI6OnVwZGF0ZVBsYXliYWNrQXR0cmlidXRlc0Zyb21NZWRpYVN0YXRl
KFdlYlBhZ2UKIAogdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OnNldEZvY3VzZWRN
ZWRpYUVsZW1lbnQoV2ViUGFnZVByb3h5JiBwcm94eSwgdWludDY0X3QgZWxlbWVudElEKQogewot
ICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9jdXNlZE1lZGlh
RWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOworICAgIG1fZm9jdXNlZE1lZGlhRWxlbWVudCA9
IG1ha2VVbmlxdWU8Rm9jdXNlZE1lZGlhRWxlbWVudD4oJnByb3h5LCBlbGVtZW50SUQpOwogfQog
CiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6Y2xlYXJGb2N1c2VkTWVkaWFFbGVt
ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25T
dGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKaW5k
ZXggOWViOWQyOGFkZGQ1YjViMDA2ZDUwYjA4YTNkNzRmYjY5ZDE2MjM5Mi4uMTZhNzU5YWM4YTFm
ZjMxNDYwNWIwOTQ2ZmZjNWFhNjU4MThlMDc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2ViUGFnZVBy
b3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIAogY2xhc3MgV2ViTmF2aWdhdGlv
blN0YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXZWJOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICB+V2ViTmF2aWdhdGlvblN0YXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudC5oCmluZGV4IDY1Mjk4MmE4MTJhOWVmYmVmNTIxYTZhOTg5OWZhNGJlZTVmYWYzNGMuLjFi
MjlmNzlkZGZhZWEwN2I5ZTcyNDliZDc3MjM4NGVlYmY1MzBmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCkBAIC00
Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBj
bGFzcyBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCopOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJv
eHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM0YjkyYzgzY2ZlYTI5
YjMxZWRiYjM0YWE4NDAyNWJhNWM4YjAzYjcuLmJkYTU5Y2Q4MDUxNTc2NDZiMzA4ZDJmZDIzNmYz
ZDExODI3MWUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYg
cGFnZSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQog
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJv
bnRlbmRSb3V0ZXIuY29weVJlZigpKSkKIHsKLSAgICBhdXRvIHRhcmdldEFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdlbnQ+KG1fZnJvbnRlbmRSb3V0ZXIu
Z2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOworICAgIGF1dG8gdGFyZ2V0QWdlbnQg
PSBtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRl
ci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiAKICAgICBtX3RhcmdldEFnZW50
ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDMyNjMxYzQ1MGViMjZkNzU0NTQ2OGI3MjZjMTVhNDQ5ODVjOTk4YTkuLmRh
NWQxMmNhMjU0Y2Y1MTFiYzEyMTc2YWEwZTI3MDJlZDU4OTdkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzk3LDE1ICszOTcsMTUgQEAgV2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzLCBQYWcKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0
aW9uQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpI
aXN0b3J5Q2xpZW50PigpKQotICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCkpCi0gICAgLCBtX2Zvcm1DbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKLSAgICAsIG1fZmluZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKLSAgICAsIG1fZmluZE1hdGNoZXNDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpKQorICAgICwgbV9pY29uTG9h
ZGluZ0NsaWVudChtYWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCkpCisgICAgLCBt
X2Zvcm1DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCisgICAgLCBtX3VpQ2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKKyAgICAsIG1fZmluZENsaWVudChtYWtl
VW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKKyAgICAsIG1fZmluZE1hdGNoZXNDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpKQogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQotICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29u
dGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKICNlbmRpZgotICAgICwgbV9uYXZpZ2F0aW9uU3Rh
dGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkpCisgICAgLCBtX25hdmln
YXRpb25TdGF0ZShtYWtlVW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKICAgICAsIG1fcHJv
Y2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAoKm1fY29uZmlndXJhdGlvbi0+cGFnZUdy
b3VwKCkpCiAgICAgLCBtX3ByZWZlcmVuY2VzKCptX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2Vz
KCkpCkBAIC00MTYsNyArNDE2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICAgICAsIG1f
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgeyBtX2NvbmZpZ3VyYXRpb24tPm92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5KCkgfQogICAgICwgbV90cmVhdHNTSEExQ2VydGlmaWNhdGVz
QXNJbnNlY3VyZShtX2NvbmZpZ3VyYXRpb24tPnRyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNB
c0luc2VjdXJlKCkpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICwgbV9mdWxsc2Ny
ZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpKQorICAg
ICwgbV9mdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50Pigp
KQogI2VuZGlmCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCp0
aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMp
CkBAIC00MzUsOSArNDM1LDkgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICNlbmRpZgogICAg
ICwgbV9wYWdlTG9hZFN0YXRlKCp0aGlzKQogICAgICwgbV9jb25maWd1cmF0aW9uUHJlZmVyZW5j
ZVZhbHVlcyhtX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKSkKLSAgICAsIG1faW5z
cGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVuaXF1ZTxXZWJQ
YWdlSW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVD
VE9SKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFn
ZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJsZShtYWtlVW5p
cXVlPFdlYlBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNl
bnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5Ojpy
ZXNldFJlY2VudENyYXNoQ291bnQpCiB7CkBAIC00NzcsNyArNDc3LDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBQYWcKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVy
PihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BP
cmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10geworICAgIG1fYWN0aXZpdHlTdGF0
ZUNoYW5nZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nh
c3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpBY3Rp
dml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNdIHsKICAgICAgICAgdGhpcy0+ZGlzcGF0Y2hBY3Rpdml0
eVN0YXRlQ2hhbmdlKCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UG9saWN5Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGlj
eUNsaWVudD4mJiBwb2xpY3lDbAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNsaWVudD4mJiBmb3JtQ2xpZW50KQogewogICAgIGlmICgh
Zm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYxMSw3ICs2MTEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYgdWlDbGllbnQpCiB7CiAgICAgaWYg
KCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OlVJQ2xpZW50PigpOworICAgICAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlVJQ2xp
ZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MjgsNyArNjI4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
Okljb25Mb2FkaW5nQ2xpZW50PiYKIHsKICAgICBib29sIGhhc0NsaWVudCA9IGljb25Mb2FkaW5n
Q2xpZW50LmdldCgpOwogICAgIGlmICghaWNvbkxvYWRpbmdDbGllbnQpCi0gICAgICAgIG1faWNv
bkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+
KCk7CisgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SWNvbkxv
YWRpbmdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0g
V1RGTW92ZShpY29uTG9hZGluZ0NsaWVudCk7CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6dW5pcXVlX3B0cjxQYWdl
TG9hZFN0YXRlOjpPYnNlcgogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50KQogewogICAgIGlmICghZmlu
ZENsaWVudCkgewotICAgICAgICBtX2ZpbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
RmluZENsaWVudD4oKTsKKyAgICAgICAgbV9maW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZp
bmRDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC02NjAsNyArNjYw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50KQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRN
YXRjaGVzQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PiYmIGZp
bmRNYXRjaGVzQ2xpZW50KQogewogICAgIGlmICghZmluZE1hdGNoZXNDbGllbnQpIHsKLSAgICAg
ICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kTWF0Y2hl
c0NsaWVudD4oKTsKKyAgICAgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjc2
LDcgKzY3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEaWFnbm9zdGljTG9nCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGll
bnQ+JiYgY29udGV4dE1lbnVDbGllbnQpCiB7CiAgICAgaWYgKCFjb250ZXh0TWVudUNsaWVudCkg
ewotICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNv
bnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEluamVjdGVkQnVuZGxl
Q2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSoKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKKyAgICBtX2luamVjdGVkQnVuZGxl
Q2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KCk7CiAgICAg
bV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+aW5pdGlhbGl6ZShjbGllbnQpOwogfQogCkBAIC03NzYs
NyArNzc2LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2li
bGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICB9CiAKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9z
c2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgYXV0byBzdXNwZW5kZWRQYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJl
ZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSk7CisgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gbWFrZVVuaXF1
ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZy
YW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSk7CiAKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBS
SXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNr
L2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQ
YWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJv
bUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKIApAQCAtODQ5LDcg
Kzg0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkK
IAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBBU1NFUlQoIW1fZnVsbFNjcmVlbk1h
bmFnZXIpOwotICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFn
ZXJQcm94eUNsaWVudCgpKTsKKyAgICBtX2Z1bGxTY3JlZW5NYW5hZ2VyID0gbWFrZVVuaXF1ZTxX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PigqdGhpcywgcGFnZUNsaWVudCgpLmZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlDbGllbnQoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBIQVZFKEFWS0lUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFU
SU9OX01PREUpKQogICAgIEFTU0VSVCghbV9wbGF5YmFja1Nlc3Npb25NYW5hZ2VyKTsKQEAgLTg2
MCwyMiArODYwLDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9j
ZXNzKCkKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAgICAgQVNTRVJUKCFtX3BheW1lbnRDb29y
ZGluYXRvcik7Ci0gICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAgbV9wYXltZW50Q29vcmRpbmF0
b3IgPSBtYWtlVW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjZW5k
aWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBBU1NFUlQoIW1fc3lzdGVtUHJldmll
d0NvbnRyb2xsZXIpOwotICAgIG1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN5c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9zeXN0ZW1QcmV2
aWV3Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlz
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKICAgICBBU1NFUlQoIW1fY3JlZGVu
dGlhbHNNZXNzZW5nZXIpOwotICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAgbV9j
cmVkZW50aWFsc01lc3NlbmdlciA9IG1ha2VVbmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgSEFWRShQRU5DSUxLSVQpCiAgICAgQVNT
RVJUKCFtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyKTsKLSAgICBtX2VkaXRhYmxlSW1hZ2VDb250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFZGl0YWJsZUltYWdlQ29udHJvbGxlcj4oKnRoaXMp
OworICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyPigqdGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtOTQzLDcgKzk0Myw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXREcmF3aW5nQXJlYShzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0Fy
ZWFQcm94eT4mJiBkcmF3aW5nQXJlCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQ
TEFURk9STShDT0NPQSkKICAgICBpZiAobV9kcmF3aW5nQXJlYS0+dHlwZSgpID09IERyYXdpbmdB
cmVhVHlwZVJlbW90ZUxheWVyVHJlZSkgewotICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+
KCp0aGlzKTsKKyAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclByb3h5ID0gbWFrZVVuaXF1
ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5PigqdGhpcyk7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgLy8gT24gaU9TLCBtYWluIGZyYW1lIHNjcm9sbHMgYXJlIHNl
bnQgaW4gdGVybXMgb2YgdmlzaWJsZSByZWN0IHVwZGF0ZXMuCiAgICAgICAgIG1fc2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eS0+c2V0UHJvcGFnYXRlc01haW5GcmFtZVNjcm9sbHMoZmFsc2UpOwpA
QCAtMTAwNiwxNyArMTAwNiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1f
bG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX25hdmlnYXRpb25DbGllbnQgPSBtYWtlVW5p
cXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKTsKICAgICBtX3BvbGljeUNsaWVudCA9IG51
bGxwdHI7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
Y29uTG9hZGluZ0NsaWVudD4oKTsKLSAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6Rm9ybUNsaWVudD4oKTsKLSAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OlVJQ2xpZW50PigpOwotICAgIG1fZmluZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpGaW5kQ2xpZW50PigpOwotICAgIG1fZmluZE1hdGNoZXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CisgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKKyAgICBtX2Zvcm1DbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAgICBtX3VpQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgIG1fZmluZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpGaW5kQ2xpZW50PigpOworICAgIG1fZmluZE1hdGNoZXNDbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CiAgICAgbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9
IG51bGxwdHI7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICBt
X2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50Pigp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fZnVsbHNjcmVlbkNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOworICAgIG1f
ZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwog
I2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVtb3ZlQWxsU3VzcGVuZGVk
UGFnZXNGb3JQYWdlKCp0aGlzKTsKQEAgLTEyMjYsNyArMTIyNiw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQ
cm9jZXNzKHsgfSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+
Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpTdWJzdGl0dXRl
RGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0
YSkpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2Fk
RGF0YU5hdmlnYXRpb24obWFrZVVuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZlY3Rv
cigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhKSk7CiAgICAgbG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBk
YXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQpAQCAtMjQxNSw3ICsyNDE1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxF
dmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGNvYWxlc2Nl
ZFdoZWVsRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50
Pj4oKTsKKyAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxO
YXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBjb2FsZXNjZWRXaGVlbEV2ZW50LT5hcHBlbmQo
ZXZlbnQpOwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1v
dmUoY29hbGVzY2VkV2hlZWxFdmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KGV2ZW50KTsKQEAg
LTI0MjMsNyArMjQyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJv
Y2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50KCkKIHsKLSAgICBhdXRvIG5leHRDb2FsZXNjZWRFdmVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOworICAg
IGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hl
ZWxFdmVudD4+KCk7CiAgICAgV2ViV2hlZWxFdmVudCBuZXh0V2hlZWxFdmVudCA9IGNvYWxlc2Nl
ZFdoZWVsRXZlbnQobV93aGVlbEV2ZW50UXVldWUsICpuZXh0Q29hbGVzY2VkRXZlbnQuZ2V0KCkp
OwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUobmV4
dENvYWxlc2NlZEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQobmV4dFdoZWVsRXZlbnQpOwpA
QCAtMjk4NCw3ICsyOTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKICAgICAgICAgbV9w
cm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwogICAgIH0KIAotICAgIG1fcHJvdmlzaW9uYWxQYWdl
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIG5ld1Byb2Nl
c3MuY29weVJlZigpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2VQcm94eSksIG5hdmlnYXRpb24ubmF2
aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCksIG5hdmln
YXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCk7Cisg
ICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5Pigq
dGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3VzcGVuZGVkUGFnZVByb3h5KSwg
bmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVk
aXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50KTsKIAogICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi50YXJnZXRJdGVt
KCkpIHsKICAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgY29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLT51cmwo
KS51dGY4KCkuZGF0YSgpKTsKQEAgLTU3MDIsNyArNTcwMiw3IEBAIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6ZnVsbFNjcmVlbk1hbmFnZXIoKQogdm9pZCBXZWJQYWdl
UHJveHk6OnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RnVsbHNjcmVl
bkNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpIHsKLSAgICAgICAgbV9mdWxs
c2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7
CisgICAgICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGdWxsc2NyZWVu
Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NDM2LDcgKzc0MzYsNyBA
QCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVByb3h5Ojp1
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogICAgIGlmIChtX3VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlcikKICAgICAgICAgcmV0dXJuICptX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjsKIAotICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyID0g
c3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4o
KnRoaXMpOworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyID0gbWFrZVVu
aXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eT4oKnRoaXMpOwogICAg
IHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI7CiB9CiAKQEAgLTgx
NDIsNyArODE0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURh
dGFDb2xsZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zY3JvbGxQZXJmb3JtYW5j
ZURhdGFDb2xsZWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CiAKICAgICBpZiAobV9zY3JvbGxQZXJm
b3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCAmJiAhbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURh
dGEpCi0gICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+KGRvd25jYXN0PFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdBcmVhKSk7CisgICAgICAgIG1f
c2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVTY3Jv
bGxpbmdQZXJmb3JtYW5jZURhdGE+KGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk+KCptX2RyYXdpbmdBcmVhKSk7CiAgICAgZWxzZSBpZiAoIW1fc2Nyb2xsUGVyZm9ybWFu
Y2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQpCiAgICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VE
YXRhID0gbnVsbHB0cjsKIH0KQEAgLTkxODksNyArOTE4OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXNldFNwZWVjaFN5bnRoZXNpemVyKCkKIFdlYlBhZ2VQcm94eTo6U3BlZWNoU3ludGhlc2lz
RGF0YSYgV2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVzaXNEYXRhKCkKIHsKICAgICBpZiAoIW1f
c3BlZWNoU3ludGhlc2lzRGF0YSkKLSAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3Bl
ZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIg
fTsKKyAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7
IG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICByZXR1cm4gKm1fc3BlZWNo
U3ludGhlc2lzRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCBiNDM4M2NhZjg4ZjM3MjcyY2Y5NDc3YjY0MDM5Y2U5ZWY1Yzk0OWExLi4xN2JmNWZhOWJl
MTdlNjM4NWMyM2JiODc0NWExYjVkM2FjNzhjZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMzQ3LDggKzM0Nyw3IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90PiBUb3VjaGVzQ2Fs
CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9u
UmVjdD4mPiBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
Y29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiY+IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b25DYWxsYmFjazsKIHN0cnVjdCBFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgewotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgorICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uIGluZm9ybWF0aW9uOwogICAg
IGJvb2wgdXNlcklzSW50ZXJhY3Rpbmc7CiAgICAgYm9vbCBibHVyUHJldmlvdXNOb2RlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXggOGJkZjhjZjgz
ODhjZGM3YmZhY2ZmMmI3ZTYwNWQwYTgxOGRhYWM2NC4uOTYyZjNiZWQyZDgyNTY5YTA3ZGQ0ZTlj
ZGFiOGZjYzcyMTE5ZjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
Q2FjaGUuY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9j
ZXNzSWZQb3NzaWJsZShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gZ2VuZXJhdGVB
ZGRSZXF1ZXN0SWRlbnRpZmllcigpOwotICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1
ZXN0SWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNv
cHlSZWYoKSkpOworICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmll
ciwgbWFrZVVuaXF1ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOwogCiAgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OmFkZFBy
b2Nlc3NJZlBvc3NpYmxlKCk6IENoZWNraW5nIGlmIHByb2Nlc3MgJWkgaXMgcmVzcG9uc2l2ZSBi
ZWZvcmUgY2FjaGluZyBpdC4uLiIsIHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkp
OwogICAgIHByb2Nlc3MtPmlzUmVzcG9uc2l2ZShbdGhpcywgcHJvY2Vzc1Bvb2wgPSBtYWtlUmVm
KHByb2Nlc3MtPnByb2Nlc3NQb29sKCkpLCByZXF1ZXN0SWRlbnRpZmllcl0oYm9vbCBpc1Jlc3Bv
bnNpdmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCAzNjM2N2YwMDRjZjFlMjE2NWQyN2I2YWU4ZTZmY2I1ZGM2ZjkxMzhjLi44MTk2NWFmN2NhOGIw
MzIzM2ZmNGY4NTY0MTRkZGJkMTRkOTk0MDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0yMzMsMTUgKzIzMywxNSBAQCBzdGF0aWMgSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3Vz
dG9tUHJvdAogV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24uY29weSgpKQogICAgICwgbV9kZWZhdWx0UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6
Y3JlYXRlKCkpCi0gICAgLCBtX2luamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKLSAgICAsIG1fYXV0b21hdGlvbkNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKLSAgICAsIG1fZG93bmxv
YWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQotICAgICwg
bV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudD4oKSkKLSAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisgICAgLCBtX2lu
amVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4o
KSkKKyAgICAsIG1fYXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNs
aWVudD4oKSkKKyAgICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkRvd25sb2Fk
Q2xpZW50PigpKQorICAgICwgbV9oaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpMZWdhY3lD
b250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCiAgICAg
LCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihz
dGQ6Om1ha2VfdW5pcXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPigqdGhp
cykpCi0gICAgLCBtX3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykpCisgICAgLCBtX2hp
Z2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8SGlnaFBlcmZvcm1h
bmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1fcGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlcihtYWtlVW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXI+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3Jp
dHkobV9jb25maWd1cmF0aW9uLT5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkoKSkKICAg
ICAsIG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbihtX2NvbmZpZ3VyYXRpb24tPnNo
b3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24oKSkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29udGV4dENsaWVudEJh
c2UqIGNsaWVudCkKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PiYmIGNsaWVudCkKIHsK
ICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKKyAgICAgICAgbV9pbmpl
Y3RlZEJ1bmRsZUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4o
KTsKICAgICBlbHNlCiAgICAgICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBXVEZNb3ZlKGNs
aWVudCk7CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEIKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+JiYgaGlzdG9yeUNsaWVudCkKIHsKICAgICBpZiAo
IWhpc3RvcnlDbGllbnQpCi0gICAgICAgIG1faGlzdG9yeUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKTsKKyAgICAgICAgbV9oaXN0b3J5
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOwog
ICAgIGVsc2UKICAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gV1RGTW92ZShoaXN0b3J5Q2xpZW50
KTsKIH0KQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Qwogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93
bmxvYWRDbGllbnQ+JiYgZG93bmxvYWRDbGllbnQpCiB7CiAgICAgaWYgKCFkb3dubG9hZENsaWVu
dCkKLSAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3du
bG9hZENsaWVudD4oKTsKKyAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpEb3dubG9hZENsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQg
PSBXVEZNb3ZlKGRvd25sb2FkQ2xpZW50KTsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3du
bG9hZENsaWVudD4mJiBkbwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmIGF1dG9tYXRpb25DbGll
bnQpCiB7CiAgICAgaWYgKCFhdXRvbWF0aW9uQ2xpZW50KQotICAgICAgICBtX2F1dG9tYXRpb25D
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKKyAgICAg
ICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
KCk7CiAgICAgZWxzZQogICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBXVEZNb3ZlKGF1dG9t
YXRpb25DbGllbnQpOwogfQpAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpDCiB7CiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICAgICBp
ZiAoIWN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCkKLSAgICAgICAgbV9jdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PigpOworICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CiAgICAgZWxzZQog
ICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KTsKICNlbmRpZgpAQCAtNDkyLDcgKzQ5Miw3IEBAIE5ldHdvcmtQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRl
RGF0YVN0b3JlKiB3aXRoCiAgICAgICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKICAgICB9
CiAKLSAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUHJv
Y2Vzc1Byb3h5PigqdGhpcyk7CisgICAgYXV0byBuZXR3b3JrUHJvY2VzcyA9IG1ha2VVbmlxdWU8
TmV0d29ya1Byb2Nlc3NQcm94eT4oKnRoaXMpOwogCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIApAQCAtMjUxNSw3ICsyNTE1LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWEKICAgICAgICAgbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJs
ZURvbWFpbi5yZW1vdmUobV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5y
YW5kb20oKSk7CiAKICAgICBhdXRvJiB2YWx1ZSA9IG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVn
aXN0cmFibGVEb21haW4uZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbj4oKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICp2YWx1ZSA9IHByZXdhcm1JbmZvcm1hdGlv
bjsKQEAgLTI1NjIsMTIgKzI1NjIsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJv
Y2Vzc0hhc1VwbG9hZHMoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQogICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT50YWtlVXBsb2FkQXNzZXJ0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBB
U1NFUlQoIW1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NV
cGxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1
cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5i
b3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uID0g
bWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJL
aXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogICAg
IH0KICAgICAKICAgICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc2VzV2l0aFVwbG9hZHMuYWRkKHBy
b2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9u
Pihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2Vy
dGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3
b3JraW5nKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSGFzVXBs
b2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCkBAIC0yNjA0LDEyICsyNjA0LDEyIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NJc1BsYXlpbmdBdWRpYmxlTWVkaWEo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiVGhlIG51bWJlciBvZiBwcm9jZXNzZXMgcGxheWluZyBhdWRpYmxlIG1lZGlhIGlz
IG5vdyBvbmUuIFRha2luZyBVSSBwcm9jZXNzIGFzc2VydGlvbi4iKTsKIAogICAgICAgICBBU1NF
UlQoIW1fdWlQcm9jZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbik7Ci0gICAgICAgIG1fdWlQcm9j
ZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2Vy
dGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBB
c3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNr
KTsKKyAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gbWFrZVVuaXF1
ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEg
UGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246
Ok1lZGlhUGxheWJhY2spOwogICAgIH0KIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNQ
bGF5aW5nQXVkaWJsZU1lZGlhLmFkZChwcm9jZXNzSUQsIG51bGxwdHIpOwogICAgIEFTU0VSVChy
ZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
IldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFz
c2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91
bmQsIEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmNsZWFyV2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCBlMTY5MTM3ZjUzODlkMzBiYjhiMTFiM2E4ZTFmNTBjYTQzYWEw
NmVkLi4xZTNjZGRlOGZiZTg4ZTg1ZDgwMjk4Nzc5N2Y4MTJlZWM1MjViMzIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBA
QCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAgICAgLCBtX3Zpc2libGVQYWdlQ291bnRlcihbdGhp
c10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVy
KCk7IH0pCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUod2Vic2l0ZURhdGFTdG9yZSkKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICAsIG1fdXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHk+KCp0aGlzKSkKKyAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eSht
YWtlVW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0aGlzKSkKICNlbmRpZgog
ICAgICwgbV9pc1ByZXdhcm1lZChpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IGU5ZmNmMDAxNTM5OTVkYzFjY2UxMzVmOGMwOTJl
OTJlNjZkYmZmM2EuLmQwYmJhNTY0YzI3NTgyZDc4MjZlOWYyYzIwNjIyMzcwMjI3Mjk1M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgc3RydWN0IFNlY3VyaXR5
T3JpZ2luRGF0YTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3Jl
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5XZWJzaXRlRGF0YVN0b3JlQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCAxODI5NGQzN2Zl
NDllZWQ2ZDY5ZGZmZmY1ZjJmNjUwNzBiNjZjZDkwLi43YmRkMDNkM2M4ZWM4ZTA2NjJlNzdkMDE4
MjUwYjUwODhjMjZjZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWly
by9CYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fp
cm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC01NCwxMiArNTQsMTIgQEAgc3RkOjp1bmlxdWVf
cHRyPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlybz4gQmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5k
KCkKICAgICAgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBndGtfd2lkZ2V0X2dldF92aXN1YWwobV93
ZWJQYWdlUHJveHkudmlld1dpZGdldCgpKTsKICAgICAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBn
ZGtfdmlzdWFsX2dldF9zY3JlZW4odmlzdWFsKTsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheVgxMT4oc2hhcmVkRGlzcGxheSkubmF0aXZlKCkgPT0gR0RLX1NDUkVFTl9Y
RElTUExBWShzY3JlZW4pKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvWDExPihHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290
X3dpbmRvdyhzY3JlZW4pKSwKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3Jl
QmFja2VuZENhaXJvWDExPihHREtfV0lORE9XX1hJRChnZGtfc2NyZWVuX2dldF9yb290X3dpbmRv
dyhzY3JlZW4pKSwKICAgICAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLCBnZGtf
dmlzdWFsX2dldF9kZXB0aCh2aXN1YWwpLCBtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwog
ICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3Jl
QmFja2VuZENhaXJvSW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsPihtX3NpemUsIG1fZGV2
aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoY2Fpcm9fdCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBiODc0ZmIwZmIy
ZTJhN2U3ZWMzNmNjNDRlMzlkNjI0OTA2YTRjNWYxLi5mODg4YzBmNDQ2YzYyNzEyN2M4Mzc1YmUw
ZDgxYTZhM2YyYzA5ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBS
ZW1vdGVJbnNwZWN0b3JDbGllbnQ6OmNvbm5lY3Rpb25DbG9zZWQoKQogdm9pZCBSZW1vdGVJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3QodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJn
ZXRJRCkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJl
KHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlv
bklELCB0YXJnZXRJRF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJ
bnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25J
RCwgdGFyZ2V0SUQpOwogICAgIH0pOwogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsK
ICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c2hvdygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kLmNwcAppbmRleCAzODMxMDAwNTg4OTRkZWMwZmI3YjUxY2FhMDlhMjM5ZDc3ZDA4
YThiLi44OTMyNzlmYmNmNThhZWFmMmFmZDZiMWE0N2MxYzc2YzIzZDgyYmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kLmNwcApAQCAtNzksOSArNzksOSBAQCBib29sIEFjY2VsZXJhdGVkQmFj
a2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMoKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4
dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVu
c2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxzZQotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZl
cnNpb24oKSA+PSAzMjApOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3Bl
bkdMPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0
ciwgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOwogI2VuZGlmCiAgICAg
ICAgIGlmIChnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikgfHwgZ2xF
eHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQogICAgICAg
ICAgICAgZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJ
TUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdl
VGFyZ2V0VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAppbmRleCBlOWFlNjU1MmE3YTJkODYyYzRiZDRlZTEw
ZWQyZWMzNmU5MmY4MzFkLi5jYTY1M2U1ZWJhNzBjOTYxNTVmZjc2NDg4YzNlZGY0MjgxZjg1NzEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5k
bGVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIFNlbGVjdGlvbkRhdGEqIERyYWdBbmREcm9wSGFu
ZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24oR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAg
c3RkOjp1bmlxdWVfcHRyPERyb3BwaW5nQ29udGV4dD4mIGRyb3BwaW5nQ29udGV4dCA9IG1fZHJv
cHBpbmdDb250ZXh0cy5hZGQoY29udGV4dCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAg
IGlmICghZHJvcHBpbmdDb250ZXh0KSB7CiAgICAgICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gbV9w
YWdlLnZpZXdXaWRnZXQoKTsKLSAgICAgICAgZHJvcHBpbmdDb250ZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxEcm9wcGluZ0NvbnRleHQ+KGNvbnRleHQsIHBvc2l0aW9uKTsKKyAgICAgICAgZHJvcHBp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEcm9wcGluZ0NvbnRleHQ+KGNvbnRleHQsIHBvc2l0aW9u
KTsKICAgICAgICAgVmVjdG9yPEdka0F0b20+IGFjY2VwdGFibGVUYXJnZXRzKFBhc3RlYm9hcmRI
ZWxwZXI6OnNpbmdsZXRvbigpLmRyb3BBdG9tc0ZvckNvbnRleHQod2lkZ2V0LCBkcm9wcGluZ0Nv
bnRleHQtPmdka0NvbnRleHQpKTsKICAgICAgICAgZHJvcHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0
YVJlcXVlc3RzID0gYWNjZXB0YWJsZVRhcmdldHMuc2l6ZSgpOwogICAgICAgICBmb3IgKGF1dG8m
IHRhcmdldCA6IGFjY2VwdGFibGVUYXJnZXRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCmluZGV4IDUyNTQyMDM3MWY2MWJkNGI4ZjNjMWEz
OTliN2I4MjYxYjk5NGVhMTAuLjU5MTRiN2UwZGY1NDMxYWNmNjYzNzEwM2U2ODgwNDA0ZWQ0NDNm
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5k
bGVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgV2Vi
UGFnZVByb3h5OwogCiBjbGFzcyBEcmFnQW5kRHJvcEhhbmRsZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYWdBbmREcm9wSGFuZGxl
cik7CiBwdWJsaWM6CiAgICAgRHJhZ0FuZERyb3BIYW5kbGVyKFdlYlBhZ2VQcm94eSYpOwpAQCAt
NjQsNiArNjUsNyBAQCBjbGFzcyBEcmFnQW5kRHJvcEhhbmRsZXIgewogCiBwcml2YXRlOgogICAg
IHN0cnVjdCBEcm9wcGluZ0NvbnRleHQgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIERyb3BwaW5nQ29udGV4dChHZGtEcmFnQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7CiAKICAgICAgICAgR2RrRHJhZ0NvbnRleHQq
IGdka0NvbnRleHQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCBjYmUzODBiMjQwZDk2MDExMTcyN2I3NzBh
ODI1ZTA5ZTA1NDdjOWVkLi5jM2Q5OTczYzcwZGMyMDg5YzY4M2Q2NWE5MTNkYTI5NGQ1ZmZlYmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRv
ci5jcHAKQEAgLTQyMCw5ICs0MjAsOSBAQCBib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFs
aXplRUdMKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKE9QRU5HTF9FUykKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0
ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4dGVuc2lvbnMgPSBt
YWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFsc2UpOwogI2Vsc2UK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4dGVuc2lvbnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwgR0xDb250ZXh0Ojpj
dXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNp
b25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdM
PihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5k
aWYKICAgICBpZiAoZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZSIpIHx8
IGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKICAg
ICAgICAgZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xFR0xJ
TUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEVHTEltYWdl
VGFyZ2V0VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAppbmRleCBiYmY5M2MyMDI4NmVlNmM2NjI4
YTcxODJiYWVkNDUyZjJiYzhmNzRjLi41MTRlY2E2ODliNjUxY2NkZmVkNjExODUwZDJiMTRiYzJm
NGM1OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIuaApAQCAtNDEsMTEgKzQxLDEzIEBAIE9CSkNfQ0xBU1MgV0tEcmF3
aW5nVmlldzsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgRWRpdGFibGVJbWFnZSB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFJldGFpblB0cjxXS0RyYXdp
bmdWaWV3PiBkcmF3aW5nVmlldzsKICAgICBTdHJpbmcgYXR0YWNobWVudElEOwogfTsKIAogY2xh
c3MgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShFZGl0YWJsZUltYWdlQ29udHJvbGxlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KaW5kZXggYzIzNDEx
YzFmMDliMDEwYTY1MjU0YjM2OWRkMzE2OWQzMWYwYzBlMC4uNjFlODU5NGQ1YjdjNDFhYWY5ZmM4
MmM2NTM4ZGI5YWQ3MTg1NjM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQpAQCAtNTgsNyArNTgsNyBAQCBFZGl0
YWJsZUltYWdlQ29udHJvbGxlcjo6fkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKCkKIEVkaXRhYmxl
SW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjplbnN1cmVFZGl0YWJsZUltYWdlKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmlld0lEKQogewogICAg
IGF1dG8gcmVzdWx0ID0gbV9lZGl0YWJsZUltYWdlcy5lbnN1cmUoZW1iZWRkZWRWaWV3SUQsIFsm
XSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0YWJsZUltYWdlPiBpbWFnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVk
aXRhYmxlSW1hZ2U+IGltYWdlID0gbWFrZVVuaXF1ZTxFZGl0YWJsZUltYWdlPigpOwogICAgICAg
ICBpbWFnZS0+ZHJhd2luZ1ZpZXcgPSBtX3dlYlBhZ2VQcm94eS0+cGFnZUNsaWVudCgpLmNyZWF0
ZURyYXdpbmdWaWV3KGVtYmVkZGVkVmlld0lEKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0lucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXIuaAppbmRleCBjNmY1MGFiMTFmM2RiMjZlMzFjYzIwNDQzYTFlODQyYjdkODAy
ZjhkLi5lZmMzM2RlNmYyYTgyMjVkZmM0ZTFhMzQzYzE5YzIyZWUxYzM0MjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIu
aApAQCAtMzMsNiArMzMsNyBAQCBPQkpDX0NMQVNTIFVJVmlldzsKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBJbnB1dFZpZXdVcGRhdGVEZWZlcnJlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5wdXRWaWV3VXBkYXRlRGVmZXJy
ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IElucHV0Vmlld1VwZGF0ZURlZmVycmVyKFVJVmll
dyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IDcyODA3ODg2MzgxMmU4MDljZGUwOTZlZTg5
YjFmNjAyMDUwYmM0ZDEuLjAyMDExNjc5Yjc5MWY4ZTBhZDExZjFhOGY1MjczMWFmYTMwODU3MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXIpOwogcHVibGljOgogICAgIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIoV0tD
b250ZW50VmlldyAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCmluZGV4IGQwM2ExNzI2YWIz
MzRhMDBlNjBmYmMwNTBiNTBlNWMzMzc1YWY3MjAuLjdmMGY5NDg0ZmQ3Nzc0ZGQxMTU3YWUyODg1
YzkwYTNiZjJlZTc5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQpAQCAtNjUsNyArNjUs
NyBAQCAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogICAgIGlmICghc2VsZi5fY29udGVudFZpZXcu
d2luZG93IHx8IF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkFw
cGxpY2F0aW9uU3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGlu
Z0FmdGVyRW50ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmQpKTsKKyAgICBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgPSBtYWtlVW5pcXVl
PFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNlbGYsIEBzZWxlY3RvcihfYXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmluaXNo
U25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOwogICAgIAogICAgIGlmIChfbGFzdE9ic2VydmVkU3Rh
dGVXYXNCYWNrZ3JvdW5kICYmICFbc2VsZiBpc0JhY2tncm91bmRdKQogICAgICAgICBbc2VsZiBf
YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggNjgxMWU4N2E0YTQyMTAwNWJkOTRhN2FjMjE2
NTQzZWNjMDBhNzdmYy4uNDMxZmFjZDFlNjgzOTdlYzg1NzM5MWFiMWNmODg4ZDM4NDE1N2E0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTE2
Nyw3ICsxNjcsNyBAQCAtIChpbnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFBy
b2Nlc3NQb29sOihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcgogICAgIF9wYWdlLT5zZXREZWxl
Z2F0ZXNTY3JvbGxpbmcodHJ1ZSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAg
X3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZ1bGxz
Y3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7CisgICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQo
bWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7CiAjZW5kaWYK
IAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsr
OwpAQCAtMjM5LDcgKzIzOSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1Jl
Y3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAKICAgICBXZWJL
aXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CisgICAgX3BhZ2VD
bGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcp
OwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5p
dGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pXTsKQEAgLTU0MSw3ICs1NDEsNyBAQCAtICh2b2lkKV93ZWJWaWV3
RGVzdHJveWVkCiAKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+
KV9jcmVhdGVEcmF3aW5nQXJlYVByb3h5OihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eSYpcHJvY2Vz
cwogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vz
cyk7CiB9CiAKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBlZjNh
ZTQ0M2RhNjRkOTUxODJiMGUyNTAwMzFiNmExODIwYjRmNDM0Li5lZjUwNmRhNGY2ZGI1ODE5MmY2
ZDdkNjZjOTJmZjFjMTNkYzRhOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTgwNiw3ICs4MDYsNyBA
QCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICAgICAKICAgICBfYWN0aW9uU2hlZXRBc3Npc3Rh
bnQgPSBhZG9wdE5TKFtbV0tBY3Rpb25TaGVldEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3
OnNlbGZdKTsKICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50IHNldERlbGVnYXRlOnNlbGZdOwot
ICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJL
aXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOworICAgIF9zbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXI+KHNlbGYpOwogICAgIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQg
PSBOTzsKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POwogICAgIF9pc0RvdWJsZVRh
cFBlbmRpbmcgPSBOTzsKQEAgLTgyMSw3ICs4MjEsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rp
b24KICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RSSVZFTl9URVhUX0NIRUNLSU5HKQot
ICAgIF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRl
eHRDaGVja2luZ0NvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAgX3RleHRDaGVja2luZ0NvbnRyb2xs
ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlcj4oKl9wYWdlKTsK
ICNlbmRpZgogCiAgICAgX2hhc1NldFVwSW50ZXJhY3Rpb25zID0gWUVTOwpAQCAtMTE5Niw3ICsx
MTk2LDcgQEAgLSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXcKICAgICAgICAg
cmV0dXJuIE5POwogCiAgICAgaWYgKCFfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIpCi0gICAgICAg
IF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbnB1
dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CisgICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZl
cnJlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7
CiAKICAgICBCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVyOwogICAgIHsKQEAgLTUzMTEsNyAr
NTMxMSw3IEBAIC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1CiAgICAgICAgIC8vIERlZmVyIHZpZXcg
dXBkYXRlcyB1bnRpbCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgYSBub3RpY2Vh
YmxlIGZsYXNoIHdoZW4gc3dpdGNoaW5nIGZvY3VzCiAgICAgICAgIC8vIGJldHdlZW4gZWxlbWVu
dHMgdGhhdCByZXF1aXJlIHRoZSBrZXlib2FyZC4KICAgICAgICAgaWYgKCFpbnB1dFZpZXdVcGRh
dGVEZWZlcnJlcikKLSAgICAgICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKKyAgICAg
ICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OklucHV0
Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKICAgICAgICAgW3NlbGYgX2VsZW1lbnREaWRCbHVy
XTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCmluZGV4IGIwMjgyNDg5MjAwM2EwNDk4OTI5ZTcwNmE1OTA0NTlhNGY4NzFhY2QuLmMw
OGY5Nzg2ZjBlYWFiNGE5NzViYjU2NDhjNzQyN2M1NjM2ZGJlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtOTEyLDcgKzkxMiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMoY29uc3QgRm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbiYgaW5mb3JtYXRpb24sCiAgICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhT2JqZWN0
ID0gcHJvY2VzcygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpOwogICAgIGlmIChtX2VkaXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIGVsaW1pbmF0ZSBtX2RlZmVycmVk
RWxlbWVudERpZEZvY3VzQXJndW1lbnRzIGFsdG9nZXRoZXIsIGluIGZhdm9yIG9mIG9ubHkgZGVm
ZXJyaW5nIGFjdGlvbnMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIHBvc3QtbGF5b3V0IGVkaXRvciBz
dGF0ZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3Vt
ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50
RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQ
cmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKKyAg
ICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IG1ha2VVbmlxdWU8RWxl
bWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1h
dGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVD
aGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTI1OCw3ICsxMjU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAogc3RkOjp1bmlxdWVf
cHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBXZWJQYWdlUHJveHk6OnBheW1lbnRD
b29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmIHBheW1lbnRDb29yZGluYXRvclByb3h5LCBQS1BheW1lbnRSZXF1ZXN0ICpwYXltZW50UmVx
dWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyPihwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3Qp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI+KHBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdCk7CiB9CiAKIFVJVmll
d0NvbnRyb2xsZXIgKldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1Zp
ZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZp
ZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4v
V0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KaW5kZXggOGIxMjNiMGE5N2MwMzBlOTQ1MGY1
ZWQ0ZjhjMTc0YjMyMWJiNDA3Yi4uOGZmOGEwYmY0NzViM2Y3YjIzNjIyOWY0MTJlM2YzMjY2Y2Y5
NTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4v
V0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KQEAgLTg4LDYg
Kzg4LDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVy
VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgKnBhcmVudCkgeyBtX3BhcmVu
dCA9IHBhcmVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KaW5kZXggODM0MzQ4ODljZGNmMjQ5YzFjMjc5MWJkMDdiZmZmYTIwMWNm
NDg3ZC4uYTkxMjk1M2VjOTFjMjczMzYyNjc2M2RhZjlkYTI2YjI0OTMzYzZkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtMTA4
LDcgKzEwOCw3IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChOU1ZpZXcqIHZpZXcs
IFdLV2ViVmlldyAqd2ViVmlldykKICAgICA6IFBhZ2VDbGllbnRJbXBsQ29jb2Eod2ViVmlldykK
ICAgICAsIG1fdmlldyh2aWV3KQogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAg
ICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJv
bGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSkKICNlbmRpZgog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCA0M2U5Zjk2N2JjODk3N2ZiZmY4Yzg2Njhh
NWNjYTFmMzgyNGMwODA5Li4zNGE2OWJiZTBiYjBkMTc2YjU1MWJhZjJkN2EzNWMxZmFhYzAzN2E3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtNTQsNiArNTQsNyBAQCBzdGF0aWMgY29uc3Qg
TlNUaW1lSW50ZXJ2YWwgRGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCA9IDE7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50IDogV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQgc2V0UGFy
ZW50KFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBh
cmVudDsgfQogCkBAIC0xNTAsNyArMTUxLDcgQEAgLSAoaWQpaW5pdFdpdGhXaW5kb3c6KE5TV2lu
ZG93ICopd2luZG93IHdlYlZpZXc6KE5TVmlldyAqKXdlYlZpZXcgcGFnZTooV2ViS2l0OjoKICAg
ICBfd2ViVmlldyA9IHdlYlZpZXc7CiAgICAgX3BhZ2UgPSAmcGFnZTsKIAotICAgIF92aWRlb0Z1
bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PigpOworICAgIF92aWRlb0Z1
bGxzY3JlZW5DbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PigpOwogICAgIF92aWRlb0Z1bGxzY3Jl
ZW5DbGllbnQtPnNldFBhcmVudChzZWxmKTsKIAogICAgIFtzZWxmIHZpZGVvQ29udHJvbHNNYW5h
Z2VyRGlkQ2hhbmdlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S1RleHRGaW5kZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0
RmluZGVyQ2xpZW50Lm1tCmluZGV4IDY2MDMxN2MyZmJjNzliNjhiYjViNzM0NzZhNThiZWZlYTA5
YjA2ZDMuLjY5ZDlkOWUyZDQ0NDg0M2QxNTI3MGY1MTE3Zjc3NGNkMjM3ZDVkYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAt
NTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBjbGFzcyBUZXh0RmluZGVyRmluZENsaWVudCA6IHB1YmxpYyBBUEk6OkZpbmRNYXRjaGVz
Q2xpZW50LCBwdWJsaWMgQVBJOjpGaW5kQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0RmluZGVyRmluZENsaWVudChXS1RleHRG
aW5kZXJDbGllbnQgKnRleHRGaW5kZXJDbGllbnQpCiAgICAgICAgIDogbV90ZXh0RmluZGVyQ2xp
ZW50KHRleHRGaW5kZXJDbGllbnQpCkBAIC0xNjgsOCArMTY5LDggQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoUGFnZTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICop
dmlldyB1c2UKICAgICBfdmlldyA9IHZpZXc7CiAgICAgX3VzZVBsYXRmb3JtRmluZFVJID0gdXNl
UGxhdGZvcm1GaW5kVUk7CiAgICAgCi0gICAgX3BhZ2UtPnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOwotICAg
IF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVy
RmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChtYWtl
VW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+
c2V0RmluZENsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNl
bGYpKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlZDBkNWZm
ZTk1ODlmOTVlNDRhMDdmMjIxOGVkODJjMDBmMDE3ZDdlLi5lNzRhZGFjMWU2NWViZTVjOTliMzFk
OTA2N2FlNjExNThmMzk4N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpkaWRDbG9zZShDb25uZWN0aW9uSUQpCiB2b2lk
IFJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdChDb25uZWN0aW9uSUQgY29ubmVjdGlvbklE
LCBUYXJnZXRJRCB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29ubmVj
dGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCAmdHlwZV0g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4o
KnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0
SUQsIHR5cGUpOwogICAgIH0pOwogCiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCAxYjZkOWNjNTRmYzYwYjUzZTQ0
MDI3MWYyMzA4ZTdjMGY0N2M4NzRjLi5hODgzM2Y2MjQ4N2Y5YTY3MjEwMzk5ZWM5ZjhmZjVlMDky
NzEyZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtODQsMTEgKzg0
LDExIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0
VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94eSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQ
b3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRh
KCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCku
ZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0
b3ItPnZhbHVlLmdldCgpOwogCiAgICAgLy8gU2V0dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3Rl
bmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShz
dGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIs
IEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVy
ID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3Nh
Z2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9y
bWFsV29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50Q29udHJv
bGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIAogICAg
IFN0cmluZ0J1aWxkZXIgaHRtbEJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcAppbmRleCBiNjdkNzNhNGRjNDg4YjMx
ZmRjOWE0NzIxOTY5MTQwNDI3NDQ4ODI1Li41ZDUwYWU1NTQ2ODBhNmU5ZTNkYTJjZTg0YmU1NjRk
NWMzMjM3ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2lu
Z1N0b3JlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNr
aW5nU3RvcmVEaXJlY3QyRC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQ+IEJh
Y2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QmFja2luZ1N0b3JlQmFja2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxl
RmFjdG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0
MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdT
dG9yZTo6cGFpbnQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwu
Y3BwCmluZGV4IGNkNmYwOGZmMThiZDU1YzE1NTQ0NjNkNGE0MGI1MWU0NWIyZWFiOWYuLjAzMDdj
NGY5ZjE0M2Y4NmRjNjIwOGI0ODRiZThkYjQyMmRjMGY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDYsNyArNDYsNyBAQCBQYWdl
Q2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV2ViVmlldyYgdmlldykKIC8vIFBhZ2VDbGllbnQn
cyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94
eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzPigqbV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3Zp
ZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05l
ZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCBjZDUzNTJkZjdhYTA0ZTY5ZDliMGY5OGVkMDAx
ZTVjNjMzMmY3NTkzLi42N2U1ZTRiMjdhM2FlODBhYjY2OGY2YzM0MTdjMGYwY2U2YjdmMDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yMTgsNyArMjE4LDcg
QEAgYm9vbCBXZWJWaWV3OjpyZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpCiB9CiAKIFdlYlZp
ZXc6OldlYlZpZXcoUkVDVCByZWN0LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uLCBIV05EIHBhcmVudFdpbmRvdykKLSAgICA6IG1fcGFnZUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCisgICAgOiBtX3BhZ2VDbGllbnQobWFr
ZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQogewogICAgIHJlZ2lzdGVyV2ViVmlld1dp
bmRvd0NsYXNzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuaAppbmRleCBiNmQ0YTA0MjBkNWE1ZGJkNjQ2
MDgzYWY2Nzg4MDUxYmY2Y2M0N2UwLi5mMmQ2MmVhOTc5MGY4MDdhNjViNWQzZTU4ZjgwYjk3ZjA2
YWRiZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBheW1lbnRD
b29yZGluYXRvciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2Vu
ZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBmcmllbmQg
Y2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOwogICAgIGV4cGxpY2l0IFdlYlBheW1lbnRD
b29yZGluYXRvcihXZWJQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCA0ZjgxMGNjZjM4ZWNmYTJj
OTllY2JkYTg5ZDA0MWNlYjhkMjMzM2I4Li5hYWIzNDU3Y2VkNjRhNWE5MTBjZGM1NjJhY2MwMTE1
MDBkM2M2Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9X
ZWJHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1l
cGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJHYW1l
cGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFkcyhjb25zdCBWZWN0b3I8R2FtZXBhZERhdGE+
JiBnYW1lcGFkRGEKICAgICAgICAgaWYgKGdhbWVwYWREYXRhc1tpXS5pc051bGwoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fZ2FtZXBhZHNbaV0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7CisgICAgICAgIG1fZ2FtZXBhZHNbaV0g
PSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7CiAgICAgICAgIG1fcmF3
R2FtZXBhZHNbaV0gPSBtX2dhbWVwYWRzW2ldLmdldCgpOwogICAgIH0KIH0KQEAgLTc2LDcgKzc2
LDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRDb25uZWN0ZWQoY29uc3QgR2Ft
ZXBhZERhdGEmIGdhbWVwYWREYXRhKQogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRzW2dhbWVwYWRE
YXRhLmluZGV4KCldKTsKIAotICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhKTsKKyAgICBtX2dhbWVwYWRz
W2dhbWVwYWREYXRhLmluZGV4KCldID0gbWFrZVVuaXF1ZTxXZWJHYW1lcGFkPihnYW1lcGFkRGF0
YSk7CiAgICAgbV9yYXdHYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IG1fZ2FtZXBhZHNb
Z2FtZXBhZERhdGEuaW5kZXgoKV0uZ2V0KCk7CiAKICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1f
Y2xpZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgKaW5kZXggZmQ2NTIzZDZmYTdkNzU5M2QxYjhkM2IzMmJhYjQ2M2E5NjhlYWEyOC4uNjMzZjIy
ZmRmZTQyNzJiMzlkZTI1ZWEwZTRhMGEwNGQ3Y2RlNmNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoV2ViUGFn
ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9j
YXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKaW5kZXggMGJiNGYyYjQyMWEzZWMyMjg3NTRl
NjM4MjlkNDFhYmJlMmUwNmY4ZC4uYTZjMjg3MTZhYjE2NzhhZmRkNTc0YzlkZjlmZTI4Njg2MzQ2
MzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBX
ZWJQcm9jZXNzOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
IDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYkdlb2xvY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyKFdlYlByb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGYz
ZWM3MjA4N2NhMjg4NjdmNTRkOWRmMGY1MGQ4NzEwMmUwMTZmYTIuLmNhODVkNTg1ZGNmMWI3NmVm
MGI4ZDExZDU5YWQ2NjA0YWMzZjE4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZUdldFR5cGVJRCgpCiAKIHZvaWQgV0tCdW5kbGVTZXRD
bGllbnQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZUNsaWVudEJhc2UgKndrQ2xpZW50
KQogewotICAgIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZiktPnNldENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2Vi
S2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVNldFNlcnZp
Y2VXb3JrZXJQcm94eUNyZWF0aW9uQ2FsbGJhY2soV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCB2b2lk
ICgqY2FsbGJhY2spKHVpbnQ2NF90KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXgg
ZjEyYTViYTc3NGQ2Y2M2OGQwODRmMWY2MDIxY2ViZjM4MWFhM2E1OC4uZGMwNzU4YWQ3NWFmMzYx
ZGZiZTgxNmViMTEzZjQxYzdmMDlkODFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkKIHZvaWQg
V0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYs
IFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVj
dGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6
dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGll
bnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJB
TSh3a0NsaWVudCk7CkBAIC04NiwyMiArODYsMjIgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250
ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGUK
IAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktp
dDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVu
dCA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQ+KCp3a0NsaWVudCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVk
aXRvckNsaWVudD4oKSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xpZW50ID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudD4oKndrQ2xpZW50KSA6IG1ha2VVbmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRG
b3JtQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50
QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVj
dGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlRm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVm
KS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFn
ZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VS
ZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudD4od2tDbGllbnQpKTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+KHdrQ2xp
ZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnRCYXNlKiB3
a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5k
bGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1w
bChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQobWFrZVVuaXF1
ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQp
KTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTEx
LDcgKzExMSw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VQb2xpY3lDbGllCiAKIHZvaWQgV0tCdW5kbGVQYWdl
U2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVVJQ2xpZW50
QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVj
dGVkQnVuZGxlVUlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5z
ZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGdWxs
U2NyZWVuQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGdWxsU2Ny
ZWVuQ2xpZW50QmFzZSogd2tDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3Zl
cmxheS5jcHAKaW5kZXggZWJkM2VmNWYyOTMwOGMxNDE5M2ExODFiN2UxZTRhNDI1ZmQyMWRkMi4u
NjlmN2FmMjJiNTY3NTA0ZDRmMzFmMGQ3YTcwYjg3NGUwOWZhNTVhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcApAQCAtNTQsNiArNTQsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlT3ZlcmxheUFjY2Vzc2liaWxpdHlDbGll
bnRCYXNlPiB7CiB9CiAKIGNsYXNzIFBhZ2VPdmVybGF5Q2xpZW50SW1wbCA6IEFQSTo6Q2xpZW50
PFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlPiwgcHVibGljIFdlYktpdDo6V2ViUGFnZU92
ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgUGFnZU92ZXJsYXlDbGllbnRJbXBsKFdLQnVuZGxlUGFnZU92ZXJsYXlDbGll
bnRCYXNlKiBjbGllbnQpCiAgICAgewpAQCAtMjE2LDcgKzIxNyw3IEBAIFdLVHlwZUlEIFdLQnVu
ZGxlUGFnZU92ZXJsYXlHZXRUeXBlSUQoKQogCiBXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIFdLQnVu
ZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEJhc2UqIHdrQ2xp
ZW50KQogewotICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJs
YXlDbGllbnRJbXBsPih3a0NsaWVudCk7CisgICAgYXV0byBjbGllbnRJbXBsID0gbWFrZVVuaXF1
ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldl
YktpdDo6V2ViUGFnZU92ZXJsYXk6OmNyZWF0ZShXVEZNb3ZlKGNsaWVudEltcGwpKS5sZWFrUmVm
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFj
Lm1tCmluZGV4IGFjYzM1YTIxYjU5ZjFhYTMxZTMzMDUxYTY2YmMxMzA1OTk2Njk5ZDMuLmQ2ZmZk
MWNjYzA0YTkzYTdhMDlkMmIzNjU1OWE4ZjBjMDk1MGZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFu
bmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFBhZ2VCYW5u
ZXJDbGllbnRJbXBsIDogQVBJOjpDbGllbnQ8V0tCdW5kbGVQYWdlQmFubmVyQ2xpZW50QmFzZT4s
IHB1YmxpYyBQYWdlQmFubmVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VCYW5uZXJDbGllbnRJbXBsKFdLQnVuZGxlUGFn
ZUJhbm5lckNsaWVudEJhc2UqIGNsaWVudCkKICAgICB7CkBAIC0xMDMsNyArMTA0LDcgQEAgV0tC
dW5kbGVQYWdlQmFubmVyUmVmIFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxh
eWVyKENBTGF5ZXIgKmxheWVyLAogICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lv
bikKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKKyAgICBhdXRv
IGNsaWVudEltcGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+KHdr
Q2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6UGFnZUJhbm5lcjo6Y3JlYXRlKGxh
eWVyLCBoZWlnaHQsIGNsaWVudEltcGwucmVsZWFzZSgpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
RE9NL0RPTU9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDQyMTAxZjhjODJj
YjJhNTQ4M2JhZTRkYzg0ODA3YjQxNjVhOTJkODYuLjIyYjQwZTQzOWJiYjYwMTVlMThhYThjMjU1
OGUwZTY5M2Y1ZWIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2Fj
aGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IERP
TU9iamVjdENhY2hlRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIERPTU9iamVjdENhY2hlRGF0YShHT2JqZWN0KiB3cmFwcGVyKQogICAgICAgICA6IG9iamVj
dCh3cmFwcGVyKQogICAgICAgICAsIGNhY2hlUmVmZXJlbmNlcygxKQpAQCAtNzcsMTUgKzc4LDgg
QEAgc3RhdGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlck1hcCYgZG9tT2JqZWN0Q2FjaGVG
cmFtZU9ic2VydmVycygpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotc3RhdGljIERPTU9iamVjdENh
Y2hlRnJhbWVPYnNlcnZlciYgZ2V0T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIo
V2ViQ29yZTo6RnJhbWUmIGZyYW1lKQotewotICAgIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZl
ck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcnMoKS5h
ZGQoJmZyYW1lLCBudWxscHRyKTsKLSAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTU9iamVjdENhY2hl
RnJhbWVPYnNlcnZlcj4oZnJhbWUpOwotICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZTsKLX0KLQogY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyIGZpbmFsOiBwdWJsaWMg
V2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIoV2ViQ29y
ZTo6RnJhbWUmIGZyYW1lKQogICAgICAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcigmZnJh
bWUpCkBAIC0xMDUsNyArOTksNyBAQCBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIg
ZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZQogICAgICAgICBp
ZiAoZG9tV2luZG93ICYmICghbV9kb21XaW5kb3dPYnNlcnZlciB8fCBtX2RvbVdpbmRvd09ic2Vy
dmVyLT53aW5kb3coKSAhPSBkb21XaW5kb3cpKSB7CiAgICAgICAgICAgICAvLyBOZXcgRE9NV2lu
ZG93LCBjbGVhciB0aGUgY2FjaGUgYW5kIGNyZWF0ZSBhIG5ldyBET01XaW5kb3dPYnNlcnZlci4K
ICAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOwor
ICAgICAgICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IG1ha2VVbmlxdWU8RE9NV2luZG93T2Jz
ZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fb2JqZWN0
cy5hcHBlbmQoJmRhdGEpOwpAQCAtMTkxLDYgKzE4NSwxNCBAQCBjbGFzcyBET01PYmplY3RDYWNo
ZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01XaW5kb3dPYnNlcnZlcj4gbV9kb21XaW5kb3dP
YnNlcnZlcjsKIH07CiAKK3N0YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9y
Q3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkK
K3sKKyAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZmcmFtZSwgbnVsbHB0cik7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXI+KGZyYW1lKTsKKyAgICBy
ZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDx2b2lk
Kiwgc3RkOjp1bmlxdWVfcHRyPERPTU9iamVjdENhY2hlRGF0YT4+IERPTU9iamVjdE1hcDsKIAog
c3RhdGljIERPTU9iamVjdE1hcCYgZG9tT2JqZWN0cygpCkBAIC0yMTUsNyArMjE3LDcgQEAgdm9p
ZCBET01PYmplY3RDYWNoZTo6cHV0KHZvaWQqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikK
IHsKICAgICBET01PYmplY3RNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RzKCkuYWRk
KG9iamVjdEhhbmRsZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RD
YWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7
CiB9CiAKIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5k
bGUsIHZvaWQqIHdyYXBwZXIpCkBAIC0yMjQsNyArMjI2LDcgQEAgdm9pZCBET01PYmplY3RDYWNo
ZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikKICAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JK
RUNUKHdyYXBwZXIpKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxE
T01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKICAgICBpZiAoV2ViQ29yZTo6
RnJhbWUqIGZyYW1lID0gb2JqZWN0SGFuZGxlLT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAg
IGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKCpmcmFtZSkuYWRkT2JqZWN0
Q2FjaGVEYXRhKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNp
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCA0Y2NlYzYyZWYwZTExMzFm
YTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmLi40ZDc0MmU0MDliYmZjN2NmYWI0MDhjZDY1MzhhZWY5
ZjIyOGZkNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1h
bmFnZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJLaXRFeHRlbnNpb25NYW5hZ2Vy
Ojppbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIEFQSTo6T2JqZWN0KiB1c2UKICAg
ICBzY2FuTW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBtb2R1bGVQYXRocyk7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ld
KTsKKyAgICAgICAgYXV0byBtb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0aHNb
aV0pOwogICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGlmIChpbml0aWFsaXplV2ViRXh0ZW5zaW9uKG1vZHVsZS5nZXQoKSwgdXNlckRh
dGEuZ2V0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAppbmRleCAw
NDA3MmViODY0ZGJlMzVmODBkZmM4NmFkMGU4ODNjM2U5OWNlNDRmLi5jY2I1MWUwZDk2NDBjNjZm
ODU5NmU0NzQxNzE0MDU4ZTkxMzk3Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RWRpdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRXZWJFZGl0b3IqIHdlYmtpdFdlYkVk
aXRvckNyZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIFdlYktpdFdlYkVkaXRv
ciogZWRpdG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9FRElUT1IsIG51bGxwdHIpKTsKICAgICBlZGl0b3ItPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdl
OwotICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOwor
ICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudChtYWtlVW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOwogICAgIHJldHVy
biBlZGl0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5j
cHAKaW5kZXggNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5NjEyOTlhNzAxMDgxNzUwMS4uZTMwNmUz
ZmVmMjYzMWQ1NDY2NTU3MTE2ZTVlNDg3ZDM3MWM3ODU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBXZWJF
eHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkluamVjdGVk
QnVuZGxlOjpDbGllbgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVh
dGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4
dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfRVhURU5TSU9OLCBOVUxMKSk7Ci0gICAgYnVuZGxlLT5zZXRDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7CisgICAg
YnVuZGxlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNs
aWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGNmYzUwMzFlZDZlNGEyOTU0ZmUwMmEwM2Rh
ODdhMTYxY2QyZDMwODIuLmM5MjA0YjIzOTgxZDdmMTdhZDA3M2I5ZWQ0MTJhODc3Njg1Y2U3ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTk1LDYgKzk1LDcgQEAg
V0VCS0lUX0RFRklORV9UWVBFKFdlYktpdFdlYlBhZ2UsIHdlYmtpdF93ZWJfcGFnZSwgR19UWVBF
X09CSkVDVCkKIHN0YXRpYyB2b2lkIHdlYkZyYW1lRGVzdHJveWVkKFdlYkZyYW1lKik7CiAKIGNs
YXNzIFdlYktpdEZyYW1lV3JhcHBlciBmaW5hbDogcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViS2l0
RnJhbWVXcmFwcGVyKFdlYkZyYW1lJiB3ZWJGcmFtZSkKICAgICAgICAgOiBGcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZXIod2ViRnJhbWUuY29yZUZyYW1lKCkpCkBAIC0xMjgsNyArMTI5LDcgQEAgc3Rh
dGljIFdlYktpdEZyYW1lKiB3ZWJraXRGcmFtZUdldE9yQ3JlYXRlKFdlYkZyYW1lKiB3ZWJGcmFt
ZSkKICAgICBpZiAod3JhcHBlclB0cikKICAgICAgICAgcmV0dXJuIHdyYXBwZXJQdHItPndlYmtp
dEZyYW1lKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdEZyYW1lV3JhcHBlcj4gd3JhcHBlciA9IG1ha2VVbmlx
dWU8V2ViS2l0RnJhbWVXcmFwcGVyPigqd2ViRnJhbWUpOwogICAgIHdyYXBwZXJQdHIgPSB3cmFw
cGVyLmdldCgpOwogICAgIHdlYkZyYW1lTWFwKCkuc2V0KHdlYkZyYW1lLCBXVEZNb3ZlKHdyYXBw
ZXIpKTsKICAgICByZXR1cm4gd3JhcHBlclB0ci0+d2Via2l0RnJhbWUoKTsKQEAgLTY3OCwxMSAr
Njc5LDExIEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2Vi
UGFnZSkKICAgICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfUEFHRSwgTlVMTCkpOwogICAgIHBhZ2UtPnByaXYtPndlYlBh
Z2UgPSB3ZWJQYWdlOwogCi0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxv
YWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlUmVzb3VyY2VMb2FkQ2xpZW50PihwYWdlKSk7
Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZUxvYWRlckNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVj
dGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29udGV4dE1l
bnVDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVVJQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0
SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUZvcm1DbGllbnQ+
KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVu
dChtYWtlVW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxQYWdlTG9hZGVy
Q2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVu
dUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb250ZXh0TWVudUNsaWVudD4ocGFnZSkpOworICAgIHdl
YlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQobWFrZVVuaXF1ZTxQYWdlVUlDbGllbnQ+
KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVu
aXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFnZSkpOwogCiAgICAgcmV0dXJuIHBhZ2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTVRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCmluZGV4IDgxMDU1Y2U3ZmRlYmEzMThk
YWIwNjgyNjM0YzZiZDg0YTM3ZmFlOGMuLjA4NGYzMDA1ZDYxMDNkNGUyNTAzM2MyNTZjNzBjMGUw
NjQwNDFjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCkBAIC00
NSw3ICs0NSw3IEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KFdLRE9NUmFuZ2UgKilyYW5nZQogICAg
IGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF90ZXh0SXRlcmF0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oV2ViS2l0Ojp0b1dlYkNvcmVS
YW5nZShyYW5nZSkpOworICAgIF90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRl
eHRJdGVyYXRvcj4oV2ViS2l0Ojp0b1dlYkNvcmVSYW5nZShyYW5nZSkpOwogICAgIHJldHVybiBz
ZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggNDg4MDBiYjMx
NzkwNjVlNGU3MzI5MzA2OTA1NDY4MGU0MzRhZjFmZi4uNDIwMjM5NmFiYWZhZjMwZDcxODlhZWI2
ODUwOWVhMjcxNzFiOTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAt
NTQ0LDcgKzU0NCw3IEBAIC0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vz
c1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZhdGU+KWZvcm1EZWxlZ2F0CiAgICAgfTsKIAogICAgIGlm
IChmb3JtRGVsZWdhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5z
ZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7
CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG51
bGxwdHIpOwogfQpAQCAtNjczLDcgKzY3Myw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0
ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAg
ICAgfTsKIAogICAgIGlmIChlZGl0aW5nRGVsZWdhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENsaWVudD4oc2VsZikpOwor
ICAgICAgICBfcGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQobWFrZVVuaXF1ZTxD
bGllbnQ+KHNlbGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDIwY2U1
NTkxMWQ3MDY1MWMzMzVhNzBhY2YyNGU1YmRmYzIxYmQ2MzEuLjk5NzlkNjM4NGRmZjVjOTgwNTkx
ZjI5MDgzYzkzNzI5NjM0NGE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTAzLDcgKzEw
Myw3IEBAIFJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiBJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRC
dW5kbGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAg
ICA6IG1fcGF0aChwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCkKICAgICAsIG1fcGxhdGZv
cm1CdW5kbGUoMCkKLSAgICAsIG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6Q2xpZW50PigpKQorICAgICwgbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpDbGllbnQ+KCkpCiB7CiB9CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBJbmplY3Rl
ZEJ1bmRsZTo6fkluamVjdGVkQnVuZGxlKCkKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PiYmIGNsaWVudCkK
IHsKICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9jbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKTsKKyAgICAgICAgbV9jbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAg
IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5oCmluZGV4IDBjYTVlYTZkMmFiZTU3MjE1NGQyMWJlZDBjYzlhMDUzZTdkNjZjMTguLmJmYjNk
MDQ1MTQzNzM2YzMxZGY5ODhhYjFiMDBkZTQyYjg1MzA4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyIDogcHVibGljIFdl
YlByb2Nlc3NTdXBwbGVtZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKTsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyKFdlYlByb2Nlc3MmKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
ZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAppbmRleCBkN2M1
YzY4MzQ0YjcyNzM4ZDk0OTdkZjAxMmNhMzc2YmI4NDE4OGRhLi5iMGJkNTM0Y2UxOWQ3Mzg2MWQ4
MTc2YTgyMDVjZGNlNjE5NWZkMDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlci5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViUGFnZTsKIAogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcj4s
IHByaXZhdGUgV2ViQ29yZTo6TWVkaWFDYW5TdGFydExpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoV2ViUGFnZSYpOwogICAgIH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDczMzUyNzY1ODcxZDgyNTVhMjNk
YjdiNTVlNmQ0NGVlNzMzOTIyZDcuLjJlNTdhZjI0ODNiZDM2YjNkZDg1ZTRlYzE4ZGRlMTBmNDQz
NmU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMzIsMzggKzEzMiwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRNZXNzYWdlKFQmJiBtZXNzYWdlLCBzaXpl
X3QgYnl0ZQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgYXV0
byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOwotICAgIGlmICghaW5jcmVhc2VC
dWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFNlbmRGYWlsOwotCi0g
ICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2VuZE1lc3NhZ2Uo
TWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgbWVzc2FnZSB9LCBi
eXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdlKSk7Ci0KLSAgICByZXR1cm4g
U2VuZFN1Y2Nlc3M7Ci19Ci0KLVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQotewotICAgIGlmICghaW5jcmVhc2VC
dWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFNlbmRGYWlsOwotCi0g
ICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2VuZE1lc3NhZ2Uo
TWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVy
ZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBi
eXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAg
ICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nTWVzc2Fn
ZT4oYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwotCi0gICAgcmV0dXJuIFNl
bmRTdWNjZXNzOwotfQotCiBjbGFzcyBCbG9iTG9hZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEJsb2JMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJD
b3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgIDogbV9sb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGaWxl
UmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZl
ciwgdGhpcykpCisgICAgICAgIDogbV9sb2FkZXIobWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWxlUmVh
ZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwg
dGhpcykpCiAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkKICAgICB7CiAgICAgICAgIG1fbG9hZGVyLT5zdGFydChkb2N1bWVudCwgYmxvYik7
CkBAIC0yMjYsNyArMTk5LDcgQEAgY2xhc3MgUGVuZGluZ01lc3NhZ2UgewogCiAgICAgUGVuZGlu
Z01lc3NhZ2UoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJDb3JlOjpCbG9iJiBibG9i
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAg
IDogbV90eXBlKFR5cGU6OkJsb2IpCi0gICAgICAgICwgbV9ibG9iTG9hZGVyKHN0ZDo6bWFrZV91
bmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJsb2IsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKSkKKyAgICAgICAgLCBtX2Jsb2JMb2FkZXIobWFrZVVuaXF1ZTxCbG9iTG9hZGVyPihkb2N1
bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKQogICAgIHsKICAgICB9CiAK
QEAgLTI0NCwxMyArMjE3LDQwIEBAIGNsYXNzIFBlbmRpbmdNZXNzYWdlIHsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogfTsKIAorV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJbkJ5dGVzKCk7CisgICAg
aWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAgICAgICByZXR1cm4g
U2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAg
ICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcg
eyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9wZW5kaW5nTWVz
c2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1lc3NhZ2UpKTsKKworICAg
IHJldHVybiBTZW5kU3VjY2VzczsKK30KKworV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJpbmFyeURhdGEs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCit7CisgICAgaWYgKCFp
bmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAgICAgICByZXR1cm4gU2VuZEZh
aWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICBzZW5k
TWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpE
YXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0
YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKKyAgICBlbHNl
CisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNz
YWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CisKKyAgICByZXR1cm4g
U2VuZFN1Y2Nlc3M7Cit9CisKIFdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChXZWJDb3JlOjpCbG9iJiBibG9iKQogewogICAgIC8vIEF2b2lkIHRoZSBC
bG9iIHF1ZXVlIGFuZCBsb2FkaW5nIGZvciBlbXB0eSBibG9icy4KICAgICBpZiAoIWJsb2Iuc2l6
ZSgpKQogICAgICAgICByZXR1cm4gc2VuZChKU0M6OkFycmF5QnVmZmVyOjpjcmVhdGUoYmxvYi5z
aXplKCksIDEpLCAwLCAwKTsKIAotICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9iLCBbdGhpc10g
eworICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdl
PihtX2RvY3VtZW50LmdldCgpLCBibG9iLCBbdGhpc10gewogICAgICAgICB3aGlsZSAoIW1fcGVu
ZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0byYgbWVzc2FnZSA9IG1f
cGVuZGluZ01lc3NhZ2VzLmZpcnN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4
IDA5NGFjNzFmN2U1ZWZmYWI3NDg1ZmNlZmNhZTU0ODkzZGIzZTA1MDYuLjNkODlkZDdkZTUzNDYx
YzRiM2E2N2Y0MzE1YjAyZDUwNjRhOWUxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApA
QCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1YmxpYyB3ZWJydGM6OkFzeW5j
UmVzb2x2ZXJGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHByaXZhdGU6
CiAgICAgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlKiBDcmVhdGUoKSBmaW5hbAogICAgIHsK
QEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgQXN5bmNSZXNvbHZlckZhY3RvcnkgOiBwdWJsaWMgd2Vi
cnRjOjpBc3luY1Jlc29sdmVyRmFjdG9yeSB7CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6
OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNv
bm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQ
YWNrZXRTb2NrZXRGYWN0b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2Vy
dmVyLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigp
LCAqc29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc3RkOjptYWtlX3VuaXF1
ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4oKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJU
Q1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkubGliV2ViUlRDTmV0d29yaygpLm1vbml0b3IoKSwgKnNvY2tldEZhY3RvcnksIFdU
Rk1vdmUoY29uZmlndXJhdGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkp
OwogfQogCiB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVj
dGlvbnMoKQpAQCAtNjUsNiArNjYsNyBAQCB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpyZWdpc3Rl
ck1ETlNOYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZG9jdQogfQogCiBj
bGFzcyBSVENTb2NrZXRGYWN0b3J5IGZpbmFsIDogcHVibGljIHJ0Yzo6UGFja2V0U29ja2V0RmFj
dG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUlRDU29j
a2V0RmFjdG9yeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIHVzZXJBZ2VudCkK
ICAgICAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCkBAIC0xMDIsNyArMTA0LDcgQEAgY2xh
c3MgUlRDU29ja2V0RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBydGM6OlBhY2tldFNvY2tldEZhY3Rv
cnkgewogCiBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5PiBMaWJXZWJS
VENQcm92aWRlcjo6Y3JlYXRlU29ja2V0RmFjdG9yeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSVENT
b2NrZXRGYWN0b3J5PihzZXNzaW9uSUQsIFdURk1vdmUodXNlckFnZW50KSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UlRDU29ja2V0RmFjdG9yeT4oc2Vzc2lvbklELCBXVEZNb3ZlKHVzZXJBZ2Vu
dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKaW5k
ZXggNWQ2MzgzZjZiNTA2NTNiNWM2NzA3MDcwNWM2YzEwMjg3MGZhMDIzMS4uMzk5MDY5OWQwNzc4
ZmViMTdiMGNhOGU2MDc4MTQxMDhhNWMwMGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmgKQEAg
LTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBMaWJXZWJSVENTb2NrZXRG
YWN0b3J5OwogCiBjbGFzcyBMaWJXZWJSVENSZXNvbHZlciBmaW5hbCA6IHB1YmxpYyBydGM6OkFz
eW5jUmVzb2x2ZXJJbnRlcmZhY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIExpYldlYlJUQ1Jlc29sdmVyKHVpbnQ2NF90IGlkZW50aWZpZXIpIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5j
cHAKaW5kZXggZjhiN2VkMjI5YzRmNmYyZGMwMzYxMzJjYzk2ZTQxMWVlY2E1NzAyZS4uMjM1ODJk
ZTc1OWI5ODQ1ZWI3ZmU0MDY0NDM2NWVmYmMxOWI3NWQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXRGYWN0b3J5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29j
a2V0QWRkcmVzcyBwcmVwYXJlU29ja2V0QWRkcmVzcyhjb25zdCBydGM6OlNvY2tldEFkZHJlc3Mm
CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0
ZVNlcnZlclRjcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQx
Nl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8g
c29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5p
cXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFk
ZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExp
YldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyVENQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJl
c3MoKSk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0Lmdl
dCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50
aWZpZXIoKSwgYWRkcmVzcyA9IHByZXBhcmVTb2NrZXRBZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJs
ZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKSwgbWluUG9ydCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7
CkBAIC02Niw3ICs2Niw3IEBAIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldChjb25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQ
YWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVVkcFNvY2tldChjb25z
dCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90
IG1heFBvcnQpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2Nr
ZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8g
c29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29j
a2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6
U29ja2V0QWRkcmVzcygpKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigp
LCBzb2NrZXQuZ2V0KCkpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNv
Y2tldC0+aWRlbnRpZmllcigpLCBhZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVz
cywgbV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0XSgp
IHsKQEAgLTgwLDcgKzgwLDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29j
a2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2UKIAogcnRjOjpBc3lu
Y1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50VGNwU29j
a2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgbG9jYWxBZGRyZXNzLCBjb25zdCBydGM6OlNv
Y2tldEFkZHJlc3MmIHJlbW90ZUFkZHJlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3Ry
aW5nJiYgdXNlckFnZW50LCBpbnQgb3B0aW9ucykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50
aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6Q2xpZW50VENQLCBsb2NhbEFkZHJlc3MsIHJl
bW90ZUFkZHJlc3MpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2Nr
ZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpU
eXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywgcmVtb3RlQWRkcmVzcyk7CiAgICAgc29ja2V0
LT5zZXRTdGF0ZShMaWJXZWJSVENTb2NrZXQ6OlNUQVRFX0NPTk5FQ1RJTkcpOwogICAgIG1fc29j
a2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKQEAgLTk2LDcg
Kzk2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6
Y3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3luY1BhY2tldFNvY2tl
dCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlTmV3Q29ubmVjdGlvblNvY2tldChMaWJX
ZWJSVENTb2NrZXQmIHNlcnZlclNvY2tldCwgdWludDY0X3QgbmV3Q29ubmVjdGlvblNvY2tldElk
ZW50aWZpZXIsIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgcmVtb3RlQWRkcmVzcykKIHsKLSAg
ICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywg
KytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVy
Q29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0LmxvY2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNz
KTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywg
KytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVy
Q29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0LmxvY2FsQWRkcmVzcygpLCByZW1vdGVBZGRyZXNz
KTsKICAgICBzb2NrZXQtPnNldFN0YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVEVE
KTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkp
OwogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpkZXRh
Y2goTGliV2ViUlRDU29ja2V0JiBzb2NrZXQpCiAKIHJ0Yzo6QXN5bmNSZXNvbHZlckludGVyZmFj
ZSogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQXN5bmNSZXNvbHZlcigpCiB7Ci0gICAg
YXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191
bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOworICAgIGF1dG8gcmVzb2x2ZXIgPSBtYWtlVW5pcXVl
PExpYldlYlJUQ1Jlc29sdmVyPigrK3NfdW5pcXVlUmVzb2x2ZXJJZGVudGlmaWVyKTsKICAgICBh
dXRvKiByZXNvbHZlclBvaW50ZXIgPSByZXNvbHZlci5nZXQoKTsKICAgICBtX3Jlc29sdmVycy5z
ZXQocmVzb2x2ZXJQb2ludGVyLT5pZGVudGlmaWVyKCksIFdURk1vdmUocmVzb2x2ZXIpKTsKICAg
ICByZXR1cm4gcmVzb2x2ZXJQb2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmlu
ZGV4IDJkMWU4NDI0N2JkMGEzMGM5NGQxZjJlYTMwMWRkNTVkMDJhNmUwNzYuLmIyNzEzZjQ2YzFm
YzEzYzlmMjdiYmUzOWNhNWRjNTE4NTBiMTgzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFdlYlByb2Nlc3M7
CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBs
ZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViTm90aWZpY2F0aW9uTWFuYWdl
cik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9j
ZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggMTZhMWE3Zjgz
NDQ2MDUzZjMzZDY1NGU4MzMzMjI5NTBlZTk5NGQ3Mi4uZDczZjFmMTZmODkwNzY5YzcyY2M5ZGQ0
NDBkMjI5MjFmZjVmZmE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApA
QCAtNTgsNyArNTgsNyBAQCBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7CiAgICAg
ZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoTmV0c2NhcGVQbHVnaW4qIHBsdWdp
bikKICAgICB7CiAgICAgICAgIGlmIChwbHVnaW4pCi0gICAgICAgICAgICBtX3Byb3RlY3RvciA9
IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90
ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CisgICAg
ICAgICAgICBtX3Byb3RlY3RvciA9IG1ha2VVbmlxdWU8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2lu
RGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRy
b2xsZXIoKSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApp
bmRleCA2OWEzYzkzZjEzMjZmYTRjNmY3ZmViZjhhYjFiMmNhNGM3NzZiYzBlLi41OWY0ODI1MWYy
ODg1NGM2ZDE2ODBiMWQ2NGRmYWE1YTQ3YzY4MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CkBAIC0zNTAsNyArMzUwLDcgQEAgdWludDMyX3QgTmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGlt
ZXIodW5zaWduZWQgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCB2b2lkICgqdGkKICAgICAvLyBGSVhN
RTogSGFuZGxlIHdyYXBwaW5nIGFyb3VuZC4KICAgICB1bnNpZ25lZCB0aW1lcklEID0gKyttX25l
eHRUaW1lcklEOwogCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KHRo
aXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CisgICAgYXV0byB0aW1l
ciA9IG1ha2VVbmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRp
bWVyRnVuYyk7CiAgICAgCiAgICAgLy8gRklYTUU6IEJhc2VkIG9uIHRoZSBwbHVnLWluIHZpc2li
aWxpdHksIGZpZ3VyZSBvdXQgaWYgd2Ugc2hvdWxkIHRocm90dGxlIHRoZSB0aW1lciwgb3IgaWYg
d2Ugc2hvdWxkIHN0YXJ0IGl0IGF0IGFsbC4KICAgICB0aW1lci0+c3RhcnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCmluZGV4IGUwYWJjMmM3YjQxMjk5MzAwMmJiYWI4YmRmYWI3ZjI2NTFhZGM1N2Yu
LmI2Yzc2YjZlZDcxNGNhYWEzYTQxZGRlNDFjMWQ2YTEwNGZiN2FlYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaApAQCAtMzA4LDYgKzMwOCw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGlj
IFBsdWdpbiB7CiAgICAgVmVjdG9yPGJvb2wsIDg+IG1fcG9wdXBFbmFibGVkU3RhdGVzOwogCiAg
ICAgY2xhc3MgVGltZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGltZXIpOwogCiAgICAgcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IDA0OTYyOGY1YzYyNzAyZTRkNWQ0MTExODIw
MTIzYmE1ZjRiOTY1MjQuLmJkYWExNDQ3ODQyMjY5NWQ1MGVhODQ4YWFmY2NiY2UxMmQyYWQ5MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBA
QCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YShjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkKIAogICAgIGlmIChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZ
KSB7CiAgICAgICAgIGlmICghbV9kZWxpdmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHVpbnQ4X3Q+PigpOworICAgICAgICAgICAg
bV9kZWxpdmVyeURhdGEgPSBtYWtlVW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4oKTsKIAogICAgICAg
ICBtX2RlbGl2ZXJ5RGF0YS0+cmVzZXJ2ZUNhcGFjaXR5KG1fZGVsaXZlcnlEYXRhLT5zaXplKCkg
KyBsZW5ndGgpOwogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggNDRkMTFiNTdjM2Vh
NmQ1MThjMThkMDRiODIyZDI4NmQ1M2U5NjhjZi4uMDdkNTU2YzNiN2ZjNjM3MTljMmEyNTU5ZTBh
YWQ2YzIyNmMwN2NhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCkBA
IC0xMzYsMTAgKzEzNiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQbHVnaW5YMTE+IE5l
dHNjYXBlUGx1Z2luWDExOjpjcmVhdGUoTmV0c2NhcGVQbHVnaW4mIHBsdQogCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIGlmIChwbHVnaW4uaXNXaW5kb3dlZCgpKQotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJ
RCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4s
IGRpc3BsYXksIHdpbmRvd0lEKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxheSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxheSk7CiB9CiAKIE5ldHNjYXBl
UGx1Z2luWDExOjpOZXRzY2FwZVBsdWdpblgxMShOZXRzY2FwZVBsdWdpbiYgcGx1Z2luLCBEaXNw
bGF5KiBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaAppbmRleCA0MWU5
YjZjOWQ4NGNhYTQ5NThlMzg1YjllZDgwZmRkN2UxMWRjYTViLi4xZjlmZDg3ZmEzYTMwYzkzNjA0
MzhlZDU5N2RjMzJjODk1ODdhZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEu
aApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHNjYXBlUGx1
Z2luOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdpblgxMSBmaW5hbCA6IHB1YmxpYyBOZXRzY2FwZVBs
dWdpblVuaXggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0c2NhcGVQbHVnaW5YMTE+IGNyZWF0ZShOZXRzY2FwZVBs
dWdpbiYpOwogICAgIE5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiwgRGlzcGxheSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJv
bGxlci5oCmluZGV4IGExZjgwN2UxZTU1MDcyM2VmZWVhMTc3MTMzYjgxZGZmNGQxNzZiMzUuLmI1
NzJhYTNhNTM2ZDQ4NWNiOWI4MTdhMTZlMDJjMzMyYzRiYzIxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTE1OSw2
ICsxNTksNyBAQCBjbGFzcyBQbHVnaW5Db250cm9sbGVyIHsKIAogICAgIC8vIEhlbHBlciBjbGFz
cyBmb3IgZGVsYXlpbmcgZGVzdHJ1Y3Rpb24gb2YgYSBwbHVnLWluLgogICAgIGNsYXNzIFBsdWdp
bkRlc3RydWN0aW9uUHJvdGVjdG9yIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rv
cihQbHVnaW5Db250cm9sbGVyKiBwbHVnaW5Db250cm9sbGVyKQogICAgICAgICAgICAgOiBtX3Bs
dWdpbkNvbnRyb2xsZXIocGx1Z2luQ29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBmMzdjMmNjMjRlM2RkOTc2M2Yz
ZWJkZDYzMmQ4YmZkYjc3MTQ0MzQ3Li45YWI1ODM3MzBiODlkYmQ5NjAxZDY1MjBlZjhmOWIwYmUw
MDZkYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFBsdWdp
blByb3h5KHRoaXMpOwogCiAgICAgLy8gQXNrIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRl
IGEgcGx1Zy1pbi4KLSAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKKyAgICBtX3BlbmRpbmdQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBtYWtlVW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1l
dGVycz4oKTsKIAogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGx1Z2lu
SW5zdGFuY2VJRCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMtPndpbmRvd05QT2JqZWN0SUQgPSB3aW5kb3dOUE9iamVjdElEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4
IDdhYjg5NjZkYjkwNWFkZDEyMzk0ODE2NTBiMTlkZTRhN2U3ZDIyM2YuLjExOWQyYjkwYzJiNDQy
MzFmMjU2OTU3ZTYyZGRjYThmMTMwZmM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC04OTgsNyArODk4LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFdlYkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50JiBl
dmVudCkgY29uc3QKICAgICBpZiAoZXZlbnQubWV0YUtleSgpKQogICAgICAgICBtb2RpZmllcnMu
YWRkKFdlYkV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9w
bHVnaW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQu
b2Zmc2V0WSgpKSksIGV2ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQs
IG1vZGlmaWVycywgV2FsbFRpbWUgeyB9LCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJN
b3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZl
cnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSks
IGV2ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywg
V2FsbFRpbWUgeyB9LCAwKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChFdmVu
dCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmZjMDlj
NGY2NWIyNDViNjBiZjRkNGY1OTdhOWY5MGFkNGQwYWFmOS4uYTFmZjAzM2IyMDRlYWZhZGM4ODhh
ODIwOGE4OWY3OWRhMDBiY2Y5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
Omluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250CiAKICAgICAvLyBG
SVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIG1vdmVkIGRpcmVjdGx5IHRvIFdlYkNvcmU6OlNX
Q29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24KICAgICAvLyBJZiBpdCB3ZXJlbid0IGZvciBTZXJ2
aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQncyBkZXBlbmRlbmNlIG9uIFdlYkRvY3VtZW50TG9h
ZGVyLCB0aGlzIGNvdWxkIGFscmVhZHkgaGFwcGVuLgotICAgIGF1dG8gZnJhbWVMb2FkZXJDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4oKnRo
aXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsICsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCwgZWZm
ZWN0aXZlVXNlckFnZW50KTsKKyAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1
ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQsIG1fcGFn
ZUlELCArK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQsIGVmZmVjdGl2ZVVzZXJBZ2VudCk7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gZnJhbWVMb2Fk
ZXJDbGllbnQuZ2V0KCk7CiAgICAgbV9sb2FkZXJzLmFkZChXVEZNb3ZlKGZyYW1lTG9hZGVyQ2xp
ZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXT3JpZ2luVGFibGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
T3JpZ2luVGFibGUuaAppbmRleCA5MjBkZWQwNDBjZTU2MTgzMzk5ZjZjOTNiODJlYjM2ZGY3MzA0
OTZhLi45MzBlNDYxODE5ZTE4NmY1YTgwZDhmNjcxNmZiMTE4YzRkYzBlYTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCkBA
IC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgV2ViU1dPcmlnaW5UYWJsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU1dPcmlnaW5UYWJsZSgpID0gZGVmYXVsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IDRkZjZmMDE5ZTU1ODU3NTUyYzg0
ZGZhYjkyNTBjNDAxYTg0Y2I4MzUuLmY0Y2YyOTFhNDAxMGIxZTdjMjQxNjdkNDU0YjU0ZWM0Yjg2
NGM0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMyLDYgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJBbHRl
cm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfldlYkFsdGVy
bmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAzYzg3MmY1YWRm
MzliZWFjZDNhNzA2NjdiMjY4OWQzOGM5YjExMTJlLi40ZDI3NDc2ODYyMGU1YTQ2ZWI5NTA4ZmRl
NDdiNTcxZTc5NmYxNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzkzLDcgKzc5Myw3
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29z
ZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVu
dCYgY2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwgaW5pdGlhbENv
bG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZtX3BhZ2UsICZj
bGllbnQsIGluaXRpYWxDb2xvcik7CiB9CiAKICNlbmRpZgpAQCAtODAyLDcgKzgwMiw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JD
aG9vc2VyKENvbG9yQ2hvb3NlckNsCiAKIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
KERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2UsICZjbGllbnQp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1f
cGFnZSwgJmNsaWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGNlZDM2
YTZjMjViN2U0ZjgzNDRhNTg5OTQwMDY3OTFmN2NjOTI3NmYuLmQ0NTU2ZDk4N2EzNjZkMTgxMTQw
OGFkOTBiZjdhMzQ3ZGQ1OThkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcg
QEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJDaHJvbWVDbGll
bnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViUGFnZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDZjMjliNGUwODEyNmU3Y2Q2Njc5Y2M0
NzAyMzVjNTU3NGRlNTBkMmUuLmMxYzg5Y2Q5OWU4N2FlZTg0ZWQ1NzQ2YzJlODFmNjQ3ZTgyZjFm
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGll
bnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCAxYWQ0YzNk
ZTJjYjdkMzhlNjI2MmMxOTdhYWIyNGNjYTZmZWRhODIxLi5iMjRlY2Y3NmM0NTUyNGY2MGQ4NmFl
ZDZmYjFlY2Y2ZjBmMzk0MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJEcmFnQ2xpZW50IDog
cHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBt
X3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAyNjgxMDJmZWExYTc3NTdlZDdlMTZk
ZGVjY2UzY2FkOGVlNmJkNDM1Li5kMjJkNGNiNzNmMjk3M2Y1NjU1YTg3M2ViZDIyZDZiMDA2YWUw
ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0
b3JDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMzBmNWFkNmI0YmMyYTYzOGQ2MDM3ZjhlYzk3MzgwOWRm
NmU1NmIxOC4uMzVhMzFmYzJhMzQ0YjMxMjg3MzA1MDRiN2ZlN2ExMTVmMDExYjg4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYgcGFnZSkKICAg
ICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggN2Nk
YWFjZDFmYzFkNDZkNjVlYWRjM2YzYTYxMzRhYTM1NThhMmQxMS4uZDY3YjYyYzAyZTY4ODNiNDQ4
NjVmYmExNTg1MTZlYTBjYmNiNWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAg
LTE1MSw3ICsxNTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfQogCiAgICAgaWYgKCFtX3BhaW50SW5kaWNhdG9y
TGF5ZXJDbGllbnQpCi0gICAgICAgIG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7CisgICAgICAg
IG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IG1ha2VVbmlxdWU8UmVwYWludEluZGljYXRv
ckxheWVyQ2xpZW50PigqdGhpcyk7CiAKICAgICBhdXRvIHBhaW50TGF5ZXIgPSBHcmFwaGljc0xh
eWVyOjpjcmVhdGUobV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgp
LCAqbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50KTsKICAgICAKQEAgLTE2Miw5ICsxNjIsOSBA
QCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiAgICAgcGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKDEuMGYsIDAu
MGYsIDAuMGYsIDAuMmYpKTsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZhZGVLZXlmcmFtZXMo
QW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6
bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOworICAgIGZhZGVLZXlmcmFt
ZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOwogCi0gICAg
ZmFkZUtleWZyYW1lcy5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVl
PigwLjI1LCAwKSk7CisgICAgZmFkZUtleWZyYW1lcy5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFu
aW1hdGlvblZhbHVlPigwLjI1LCAwKSk7CiAgICAgCiAgICAgYXV0byBvcGFjaXR5QW5pbWF0aW9u
ID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKICAgICBvcGFjaXR5QW5pbWF0aW9uLT5zZXREdXJhdGlv
bigwLjI1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBmNWVjYzY0YzkyM2YzODZjNTBl
N2I1Mjk3N2VmYzA5OWUwYmNmYWQ2Li4yN2MzZWUxNDJlMTYxNmU0MzVmNDhkNDFmMjcyNzE1ZmU4
ZTAzODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiAKIGNsYXNzIFdl
Ykluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHByaXZh
dGUgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBmcmllbmQgY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogcHVibGlj
OgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IDUzM2JlODQwY2FkNzE0NTU1ZGFmMGFhMjA3
MjhhM2M5MzM1NWM5YmUuLjRiYjM3ZmRkNjA3Nzc0ZWQ4MDlhOTY3YTc3NTE1ZmJhZmI2ZWY2YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0zMiw2
ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmlj
YXRpb25DbGllbnQuaAppbmRleCAxNjM3YWQxMDk3ZDc2NDllNTBkZjc0ZjVlMDYyMjcyNzFmYWI4
NDVhLi4wMGNjMGEwOGQ5MjYwNGZkZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50IDogcHVibGlj
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgV2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlBhZ2UqKTsKICAgICB2
aXJ0dWFsIH5XZWJOb3RpZmljYXRpb25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3Zl
cnJpZGVzLmNwcAppbmRleCA3OTAwODRjZTQ4ZDIyNmIxMGU2NjViODI4NDQzNDlmZGFhZmZlZTQ2
Li42OWYwYWU4Mjc5NTA3YjcyOTY1ZjY1YzIxNjg3M2M0ODFhZGY0ZDYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJy
aWRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgV2ViUGFzdGVi
b2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX292ZXJyaWRlc01hcC5hZGQocGFzdGVi
b2FyZE5hbWUsIG51bGxwdHIpOwogCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVpbnQ4X3Q+Pj4g
dHlwZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90
Pj4+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVp
bnQ4X3Q+Pj4gdHlwZU1hcCA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50
OF90Pj4+KCk7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKHR5
cGVNYXApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCmluZGV4IGY2ZTAxNDk1N2VkYzI3N2Ri
OTgzNzMxMjdlYzEwNjNlOTM1NThjYjguLmNmOTBhNWRmY2ZkYTYzZWNiOTg5N2NjNjZkMGQ0ODEy
OTQ0ODEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbHVnSW5DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQbHVnSW5DbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6UGx1Z0luQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQbHVnSW5DbGllbnQoV2ViUGFnZSYpOwogICAgIHZp
cnR1YWwgfldlYlBsdWdJbkNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5oCmluZGV4IDVkZDY1YmZhMGQ1MGNjZmRiMTQ2MWZlYjNmZTUyNDFmY2FhMGZiYTYuLjYzZDc3
NGU1YTk0MjdjNzM1YjUyNDkwYmQwMWNkNzlhYjc0YTEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jl
c3NUcmFja2VyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQgOiBwdWJsaWMg
V2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQoV2Vi
UGFnZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCmluZGV4IGVh
ZDE3ZDMwZjA1OTBkNzQ0NjcyMDU1Y2FkNzdkOTVjNmQwYTQ3NzAuLjdiZDg3NTkwNWE2NWM3N2Q5
NmMzZjc4ODQwMDE4NTgyY2ZhZjc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xp
ZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdl
OwogICAgIAogY2xhc3MgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpc0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAg
ICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKaW5kZXggMTA5MzA0NTNj
ZTc5N2VkZDkwZGU3NmYwMzU0YjlhMWQ0MDZmMmU2ZS4uNjk1MjE3NGI5MTJjOTcxZTM1Nzg2ZTI3
YzQ4MjI1ZDJmY2ExNDAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAtMjksNiArMjks
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlVzZXJN
ZWRpYUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlVzZXJNZWRpYUNsaWVudChXZWJQ
YWdlJik7CiAgICAgfldlYlVzZXJNZWRpYUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHkuaAppbmRleCAwMGExZTJlOGUyNjMzNTYzYzMwNjk5OGRkMTVhMjE4
Yjk2ZDE2NTEyLi4wNzQxM2NmYzkzOTg1ZmU1ZDk5ZTk0MDY4ZjE2MTVmNGIyNDRjNjE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaApAQCAtNDcsNiArNDcsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFRleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nQ29udHJvbGxlclBy
b3h5KFdlYlBhZ2UmKTsKICAgICB+VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKaW5kZXggOWNmZmNjOWE5ZmQyYjY0NDQ5MjJmODU0YWQ5N2QxZDMzMWU3
MGIwZS4uYjI0NTgxYzk3ZTdhODgxNmY0NmFmOTMxOWE5MWVhMjFiNzJiZDY2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKEdyYXBoaWNzTGF5
CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5h
YmxlZCh0cnVlKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
LSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllclRyZWVIb3N0
PihtX3dlYlBhZ2UpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBtYWtlVW5pcXVlPExheWVy
VHJlZUhvc3Q+KG1fd2ViUGFnZSk7CiAjZWxzZQogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBu
dWxscHRyOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggYzA3Mzk2ZjAyZjFmYTY1ZjQ1YWNlZTcyZjEz
NGY0ZmIyZDllODkwOS4uNTM1OGNkNjg2M2IzMjI2OTU4ZWUyNzRlZmQwMzJhZDIwMDY0ZGQ2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNw
cApAQCAtNTAsMTMgKzUwLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYT4gRHJhd2lu
Z0FyZWE6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY2FzZSBEcmF3aW5nQXJl
YVR5cGVUaWxlZENvcmVBbmltYXRpb246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdl
YlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlmCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVSZW1v
dGVMYXllclRyZWU6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMp
OwogI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIp
CiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVDb29yZGluYXRlZEdyYXBoaWNzOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdl
YlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlmCiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaAppbmRleCAwZjI2NDAzZWJiNzBhODExYjE4ZTk4Nzk1ZTE5ZGU3NzQwYmU4MzYwLi4xYTUz
NWYxN2Q5N2Y2NjY4Mzk3MjY5YTg2ZTI4NTdiMjliOTcyYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBGaW5kQ29udHJv
bGxlciA6IHByaXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmluZENvbnRyb2xs
ZXIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuY3BwCmluZGV4IDQ1MmY1M2JjZWRjMDA0N2Y3MzNkMWMzNGJjZDc2NTExOTJjYjhiZTYu
LjQ2ZThhYTA5OTg2NDVhOGNlNWQyZDdiOTU3Zjk5YWZkYzM4ZjQ2ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0yMjAsNyArMjIwLDcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9yZSgpCiAgICAg
QVNTRVJUKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCk7CiAKICAgICBpZiAoIW1f
cHJvcGVydGllcy5iYWNraW5nU3RvcmUpCi0gICAgICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3Rv
cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPih0aGlzKTsKKyAg
ICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU+KHRoaXMpOwogCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiB9CkBAIC01
MjEsNyArNTIxLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Ojp0cmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0VHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKLSAgICBtX3Byb3Bl
cnRpZXMudHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
dmFsdWUpOworICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9y
bWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hh
bmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VHJhbnNmb3JtQ2hhbmdlZCk7CiB9CiAK
QEAgLTUzMiw3ICs1MzIsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2
YWx1ZSkKIHsKLSAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAgbV9wcm9wZXJ0aWVzLnN1
YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odmFsdWUp
OwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OlN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCk7CiB9CiAKQEAgLTczOCw3ICs3
MzgsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0T3BhY2l0eShmbG9hdCB2YWx1
ZSkKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBtX3Byb3BlcnRpZXMuZmlsdGVycyA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CisgICAgbV9wcm9wZXJ0aWVz
LmZpbHRlcnMgPSBtYWtlVW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KGZpbHRlcnMpOwogICAgIG1f
cHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkZpbHRlcnNDaGFuZ2VkKTsKIH0KIApAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJvdW5kZWRSCiAgICAgaWYgKG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ICYmICpt
X3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9PSByb3VuZGVkUmVjdCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICBtX3Byb3BlcnRpZXMuc2hh
cGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3Qp
OwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OlNoYXBlUm91bmRlZFJlY3RDaGFuZ2VkKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5n
LmNwcAppbmRleCAxY2JkMWI0YmE3OWE3ZGY5Y2U1NWUwNDIxZDQ0ZTY1YjQwODgyMWMyLi4wOTk1
MzZiOTNjMDExYWMzZjJhMDczYzNjYTQ2NGYwNzI2NDY5Y2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlVGlsZWRCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNw
cApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUGxhdGZvcm1D
QUxheWVyUmVtb3RlVGlsZWRCYWNraW5nOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tp
bmcoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKICAgICA6IFBsYXRmb3JtQ0FMYXllclJlbW90
ZShsYXllclR5cGUsIG93bmVyLCBjb250ZXh0KQotICAgICwgbV90aWxlQ29udHJvbGxlcihzdGQ6
Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fdGlsZUNvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA1ZTUw
ZTBiYTFlZjEyNDZjNmFlMDhmMjlkOTJhODMwZTBkYjRmMjM3Li40NDQ2ZjM0ZDA0Y2NmYmZiZWIz
NjliYTQ0YzMyMDZiZjBkZDIzZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC01OCw3ICs1OCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZVJl
bW90ZUxheWVyVHJlZSwgcGFyYW1ldGVycy5kcmF3aW5nQXJlYUlkZW50aWZpZXIsIHdlYlBhZ2Up
Ci0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVM
YXllclRyZWVDb250ZXh0Pih3ZWJQYWdlKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4
dChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+KHdlYlBhZ2UpKQogICAgICwgbV9y
b290TGF5ZXIoR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0
aGlzKSkKICAgICAsIG1fbGF5ZXJGbHVzaFRpbWVyKCp0aGlzLCAmUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OmZsdXNoTGF5ZXJzKQogewpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVy
VHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpKSk7CiAKICAgICBNZXNzYWdlczo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2UobGF5ZXJUcmFu
c2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwotICAgIGF1dG8gY29tbWl0RW5jb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5hbWUoKSwgTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZTo6bmFt
ZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBjb21taXRFbmNvZGVyID0g
bWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1f
aWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBjb21taXRFbmNvZGVyLT5lbmNvZGUobWVzc2Fn
ZS5hcmd1bWVudHMoKSk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwgYmFja2luZyBzdG9yZSBm
bHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCBhYWRlM2Q5ZjE4NDRkN2YwNWMwOTIx
OGQ4ZTIwNDRkNThhMmYwNWY4Li5iMmJkYzQxYjcyMzM2YmI2ZTQ4NDkwZjczMWIyNDg1ZDI3MDc4
MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC00MCw2ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3RvciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IoV2ViUGFnZSYpOwogICAgIH5WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNjBj
ZmQ4ZDJhMTc1NGE3YWNlZDU4ZDYxZGYxN2JlNGMxNDMxMzY5NC4uYmRkNGIzOTUyNTRhNzE2NzYz
OWFlY2Q3Mzg2MGUwNzJkNjljNDJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIFJlZjxXZWJGcmFtZT4gV2Vi
RnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZy
YW1lKiBjCiAKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2Uq
IHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCkKIHsKLSAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8
V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOworICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUobWFrZVVu
aXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CiAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAg
ICBhdXRvIGNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJF
bGVtZW50LCBmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDEzMzY1NzBkOTNhYTUxMTA2
OTc4NTYxMTcwMjYwODkzYjhhM2NkYjQuLmRiMzJkYTQ4MTM5ZTE5ZjcxNDIxMjU2NTQwYTIxNjMy
MzRjYzkxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0zODMsMjEgKzM4MywyMSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgLCBt
X3RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eShtYWtlVW5pcXVlUmVmPFRleHRDaGVja2luZ0Nv
bnRyb2xsZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBM
QVRGT1JNKEdUSykKLSAgICAsIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihzdGQ6Om1h
a2VfdW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I+KCp0aGlzKSkKKyAgICAsIG1f
dmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihtYWtlVW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I+KCp0aGlzKSkKICNlbGlmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFU
Rk9STShHVEspCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlPYmplY3QobnVsbHB0cikKICNlbmRpZgog
ICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2Vi
UGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpKQorICAgICwgbV9jb250ZXh0TWVu
dUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNs
aWVudD4oKSkKICNlbmRpZgotICAgICwgbV9lZGl0b3JDbGllbnQgeyBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSB9Ci0gICAgLCBtX2Zvcm1DbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpKQot
ICAgICwgbV9sb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlTG9hZGVyQ2xpZW50PigpKQotICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCkpCi0g
ICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZVVJQ2xpZW50PigpKQorICAgICwgbV9lZGl0b3JDbGllbnQgeyBtYWtlVW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSB9CisgICAgLCBtX2Zvcm1DbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpKQorICAgICwgbV9sb2FkZXJD
bGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50Pigp
KQorICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCkpCisgICAgLCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpKQogICAgICwgbV9maW5kQ29udHJv
bGxlcihtYWtlVW5pcXVlUmVmPEZpbmRDb250cm9sbGVyPih0aGlzKSkKLSAgICAsIG1faW5zcGVj
dG9yVGFyZ2V0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJn
ZXRDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvclRhcmdldENvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRoaXMpKQogICAg
ICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRP
ckNyZWF0ZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEKSkKICNpZiBFTkFCTEUo
R0VPTE9DQVRJT04pCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KG1ha2VVbmlxdWVSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+KCp0aGlz
KSkKQEAgLTQ2NCwyMSArNDY0LDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQgPSBuZXcgV2ViUGx1Z0luQ2xpZW50KCp0aGlzKTsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBuZXcgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50ID0gbmV3IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudCgqdGhpcyk7Ci0gICAgcGFnZUNv
bmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24u
cGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQZXJmb3JtYW5j
ZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCp0
aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQgPSBt
YWtlVW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4oKnRoaXMpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkdMU3RhdGVUcmFja2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4oW3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQ
ZXJmb3JtYW5jZVdlYkdMKSB7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViR0xTdGF0ZVRyYWNr
ZXIgPSBtYWtlVW5pcXVlPFdlYkdMU3RhdGVUcmFja2VyPihbdGhpc10oYm9vbCBpc1VzaW5nSGln
aFBlcmZvcm1hbmNlV2ViR0wpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZXRJc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0woaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdl
YkdMKSk7CiAgICAgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRoZXNpc0NsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3Vy
YXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQ+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcGFn
ZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50PigqdGhpcyk7CiAjZW5kaWYKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlID0gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlKCk7CkBAIC00OTMsMTQgKzQ5MywxNCBAQCBXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgcGFnZUNvbmZpZ3VyYXRp
b24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5h
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcj4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25NYW5pZmVzdCA9IHBh
cmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgogCi0gICAgbV9wYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgbV9w
YWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAg
ICAvLyBTZXQgdGhlIHNlc3Npb25JRCAqYmVmb3JlKiB1cGRhdGluZyB0aGUgcHJlZmVyZW5jZXMg
YXMgdGhlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgcHJlZmVyZW5jZXMgbWF5IG5lZWQgdG8gb3Zl
cnJpZGUgaXQuCiAgICAgaWYgKHBhcmFtZXRlcnMuc2Vzc2lvbklELmlzVmFsaWQoKSkKQEAgLTg1
Myw3ICs4NTMsNyBAQCB1aW50NjRfdCBXZWJQYWdlOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNs
aWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50
KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICAgICAgbV9jb250
ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRl
eHRNZW51Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NjQsNyArODY0
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnUKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVk
aXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQpCiB7CiAgICAgaWYgKCFlZGl0b3JDbGllbnQpIHsK
LSAgICAgICAgbV9lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OkVkaXRvckNsaWVudD4oKTsKKyAgICAgICAgbV9lZGl0b3JDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6CiB2
b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4mJiBmb3JtQ2xpZW50KQogewogICAgIGlm
ICghZm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7CisgICAgICAgIG1fZm9ybUNsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtODg0LDcgKzg4NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVu
ZGxlOjpGCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4mJiBs
b2FkZXJDbGllbnQpCiB7CiAgICAgaWYgKCFsb2FkZXJDbGllbnQpIHsKLSAgICAgICAgbV9sb2Fk
ZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2Fk
ZXJDbGllbnQ+KCk7CisgICAgICAgIG1fbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRC
dW5kbGVQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50QmFzZSoKIHZvaWQgV2Vi
UGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4mJiBjbGllbnQpCiB7CiAg
ICAgaWYgKCFtX3Jlc291cmNlTG9hZENsaWVudCkKLSAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENs
aWVudD4oKTsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAg
IG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpAQCAtOTEzLDcgKzkx
Myw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVk
QnVuZGxlVUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VV
SUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7Ci0gICAgICAgIG1f
dWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNs
aWVudD4oKTsKKyAgICAgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZVVJQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNDEw
LDE0ICsxNDEwLDE0IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAg
bV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZUNvbnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCi0gICAgbV9lZGl0b3JDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKLSAgICBt
X2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1D
bGllbnQ+KCk7Ci0gICAgbV9sb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CisgICAgbV9lZGl0b3JDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKKyAgICBtX2Zv
cm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7
CisgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgbV9wb2xpY3lDbGllbnQuaW5pdGlhbGl6ZSgwKTsKLSAg
ICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwotICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKKyAgICBtX3Jlc291
cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VM
b2FkQ2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAg
bV9mdWxsU2NyZWVuQ2xpZW50LmluaXRpYWxpemUoMCk7CiAjZW5kaWYKQEAgLTQ2OTYsNyArNDY5
Niw3IEBAIHZvaWQgV2ViUGFnZTo6YmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbykKICNlbmRpZgogCiAgICAgaWYgKCFtX3ByaW50Q29udGV4
dCkgewotICAgICAgICBtX3ByaW50Q29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250
ZXh0Pihjb3JlRnJhbWUpOworICAgICAgICBtX3ByaW50Q29udGV4dCA9IG1ha2VVbmlxdWU8UHJp
bnRDb250ZXh0Pihjb3JlRnJhbWUpOwogICAgICAgICBtX3BhZ2UtPmRpc3BhdGNoQmVmb3JlUHJp
bnRFdmVudCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggNzM1NjZh
MTMzODVkZTNhYWM2NDZmYjk0OTZiZGRhZmNiNWFmNDZiNi4uMzFlZmYxMWY3YWUwYTNlYjhjZmJi
NmZmMmIzZGJhNTE2MjRjMWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCkBAIC0yMTMs
NiArMjEzLDcgQEAgY2xhc3MgV2ViUHJpbnRPcGVyYXRpb25HdGtXaW4zMiBmaW5hbDogcHVibGlj
IFdlYlByaW50T3BlcmF0aW9uR3RrIHsKICNlbmRpZgogCiBzdHJ1Y3QgUHJpbnRQYWdlc0RhdGEg
eworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBQcmludFBhZ2VzRGF0
YShXZWJQcmludE9wZXJhdGlvbkd0ayogcHJpbnRPcGVyYXRpb24pCiAgICAgICAgIDogcHJpbnRP
cGVyYXRpb24ocHJpbnRPcGVyYXRpb24pCiAgICAgICAgICwgdG90YWxQcmludGVkKC0xKQpAQCAt
NzI2LDcgKzcyNyw3IEBAIHZvaWQgV2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50KGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSwgZG91YmxlIHhEUEksIGRvdWJsZSB5CiB7CiAgICAgQVNTRVJUKG1f
cHJpbnRDb250ZXh0KTsKIAotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRQ
YWdlc0RhdGE+KHRoaXMpOworICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UHJpbnRQYWdlc0Rh
dGE+KHRoaXMpOwogICAgIGlmICghZGF0YS0+aXNWYWxpZCkgewogICAgICAgICBjYWlyb19zdXJm
YWNlX2ZpbmlzaChzdXJmYWNlKTsKICAgICAgICAgcHJpbnREb25lKGludmFsaWRQYWdlUmFuZ2VU
b1ByaW50KGZyYW1lVVJMKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCA5YWJiMmE3OTI5OWQ1
OTZiOTFlNmVmNjFjYTQzZWY4NjE5MGE5MDQ5Li45MzQxOGFiMjFkNzRmYzk0NThhMDIyNGU0Y2I0
OGE3MzQxNzgwOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wg
RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IoRnJhbWUmIHNlbGVjdGVkRnJhbWUs
IGJvb2wgaXNTaG93aW5nT3ZlCiAgICAgaWYgKCF0ZXh0SW5kaWNhdG9yKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUz4oc2VsZWN0ZWRGcmFtZSwgdGV4
dEluZGljYXRvci5nZXQoKSk7CisgICAgbV9maW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudCA9IG1h
a2VVbmlxdWU8RmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M+KHNlbGVjdGVkRnJhbWUsIHRl
eHRJbmRpY2F0b3IuZ2V0KCkpOwogICAgIG1fZmluZEluZGljYXRvclJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KHRleHRJbmRpY2F0b3ItPnNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMo
KSk7CiAgICAgbV9maW5kSW5kaWNhdG9yT3ZlcmxheSA9IFBhZ2VPdmVybGF5OjpjcmVhdGUoKm1f
ZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQsIFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9j
dW1lbnQpOwogICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVy
KCkuaW5zdGFsbFBhZ2VPdmVybGF5KCptX2ZpbmRJbmRpY2F0b3JPdmVybGF5LCBQYWdlT3Zlcmxh
eTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVu
dElPUy5oCmluZGV4IDUzNWI4NGZiNjQyOWE5N2YwYzk4YThlYWMxODVkOWRmMmVlOTQ4NTQuLjAx
NWUzMmRiMTg5M2U2YTA2MmQ5ZTNhN2NhMGRjNTJlOTQ2ZGQwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVu
dElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1MgOiBwdWJsaWMgV2Vi
Q29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1MoV2ViQ29yZTo6RnJh
bWUmIGZyYW1lLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yKiB0ZXh0SW5kaWNhdG9yKQogICAgICAg
ICA6IG1fZnJhbWUoZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcAppbmRleCA5MDY4N2M5NzRhY2YzM2Q4MmI4
YzY0Yjk0OGU2ZWU5YTMwZWUyZTljLi4wNmZjYzQ3MTU5M2ViNzhlZGViZmNjNjNmODk0NGIzZGZh
ZTlkYWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
RHJhd2luZ0FyZWFNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBEaXNwbGF5UmVm
cmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQogICAgIGlmICghbV9oYXNT
ZW50TWVzc2FnZSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlz
cGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSksIDApOwogICAgICAgICBtX2hhc1Nl
bnRNZXNzYWdlID0gdHJ1ZTsKLSAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7CisgICAg
ICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1
bkxvb3BFbnRyeSwgW3RoaXNdKCkgewogICAgICAgICAgICAgdGhpcy0+bV9maXJzdENhbGxiYWNr
SW5DdXJyZW50UnVubG9vcCA9IHRydWU7CiAgICAgICAgIH0pOwogICAgICAgICBtX3J1bkxvb3BP
YnNlcnZlci0+c2NoZWR1bGUoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBkZjYwMDM2NDU5OGYxMzQ2MjlkYWI2Mjcw
NmVhZjY4NjFlNWZmMzNkLi40Y2IzZGY5YWVhNTI5ZWZmNTI2MzM2YzgxZjEzMDIwNDViYTNlMGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC04Nyw3ICs4
Nyw3IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjCiAgICAgW21faG9zdGluZ0xheWVyIHNldE9w
YXF1ZTpZRVNdOwogICAgIFttX2hvc3RpbmdMYXllciBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsK
IAotICAgIG1fbGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2
ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CisgICAg
bV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpSdW5Mb29w
T2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3du
UnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKICAgICAgICAgdGhpcy0+bGF5
ZXJGbHVzaFJ1bkxvb3BDYWxsYmFjaygpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggN2I0OGEwZjcyNDYyZmZlNTdmZTkyMDZjYmNjMGNmMzMx
YzMyMTFlMS4uYzcxY2Q1ZjI3NGZmNjIyYzVkNDNmMzU5ZjYxNWZkMzdjZjJkNjg2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTU3Myw3ICsxNTczLDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjptYXJrQWxsTGF5ZXJzVm9sYXRpbGUoV1RGOjpGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW4KICAgICBBU1NFUlQoIW1fcGFnZU1hcmtpbmdMYXllcnNB
c1ZvbGF0aWxlQ291bnRlcik7CiAgICAgbV9jb3VudE9mUGFnZXNGYWlsaW5nVG9NYXJrVm9sYXRp
bGUgPSAwOwogCi0gICAgbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyPihbdGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZkNvdW50
ZXJFdmVudCkgeworICAgIG1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlciA9IG1h
a2VVbmlxdWU8UGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZWZDb3VudGVyRXZl
bnQpIHsKICAgICAgICAgaWYgKG1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlci0+
dmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTgzOCw3ICsxODM4LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpzZXRFbmFibGVkU2VydmljZXMoYm9vbCBoYXNJbWFnZVNlcnZpY2VzLCBi
b29sIGhhc1NlbGVjdGlvblNlcnYKIAogdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVBdXRvbWF0aW9u
U2Vzc2lvblByb3h5KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZpZXIpCiB7Ci0gICAgbV9h
dXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5PihzZXNzaW9uSWRlbnRpZmllcik7CisgICAgbV9hdXRvbWF0aW9uU2Vzc2lvblBy
b3h5ID0gbWFrZVVuaXF1ZTxXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5PihzZXNzaW9uSWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveUF1dG9tYXRpb25TZXNzaW9uUHJv
eHkoKQpAQCAtMTg3MSw3ICsxODcxLDcgQEAgYm9vbCBXZWJQcm9jZXNzOjpoYXNWaXNpYmxlV2Vi
UGFnZSgpIGNvbnN0CiBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3
b3JrKCkKIHsKICAgICBpZiAoIW1fbGliV2ViUlRDTmV0d29yaykKLSAgICAgICAgbV9saWJXZWJS
VENOZXR3b3JrID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENOZXR3b3JrPigpOworICAgICAg
ICBtX2xpYldlYlJUQ05ldHdvcmsgPSBtYWtlVW5pcXVlPExpYldlYlJUQ05ldHdvcms+KCk7CiAg
ICAgcmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAKQEAgLTE4ODIsNyArMTg4Miw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1l
IHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQogICAgIC8vIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgogICAgIGF1dG8mIGlwY0Nv
bm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7
Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihzdGQ6Om1h
a2VfdW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBw
YWdlR3JvdXBJRCwgcGFnZUlELCBzdG9yZSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQsIHBhZ2VJRCwgc3RvcmUpKTsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGQ0YzAxYmFiMWY5M2RhOTA4NWIwZjIxOTRj
ZDMyN2Q0NzE4NjUwYjIuLjJmNGZiNTMwYWJjZWQ3ZWZjNzM3NjQyMjMwOWZkMzE4ODdhNDdiMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTMzLDYgKzEzMyw3IEBA
IGNsYXNzIFdlYlByb2Nlc3MKICAgICAsIFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlcjo6Q2xpZW50
CiAjZW5kaWYKIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dGF0aWMgV2ViUHJvY2VzcyYgc2luZ2xldG9uKCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBQcm9j
ZXNzVHlwZSBwcm9jZXNzVHlwZSA9IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50OwpAQCAtMTQ2LDcg
KzE0Nyw3IEBAIGNsYXNzIFdlYlByb2Nlc3MKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
ICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQo
VDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPigqdGhpcykpOworICAgICAg
ICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFQ+KCp0
aGlzKSk7CiAgICAgfQogCiAgICAgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKiB3ZWJDb25uZWN0
aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbm5lY3Rpb24uZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDI3MjBiODZmY2QyZmZlZTYwMjJmNWFkNWVlZDUwYmNm
MzY5MmQ3ZjguLjlhZjAwZWU4YWEwZjFjZDg0MGE4MTczNzkwZmEwNjIzMDA0NmZkZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLmNwcApAQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlcjo6U291cmNlIDogcHVibGljIFJlYWx0aW1lTWVkaWFTb3VyY2UgewogICAgIHsKICAg
ICAgICAgQVNTRVJUKGRldmljZVR5cGUgIT0gQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6VW5r
bm93bik7CiAgICAgICAgIGlmICh0eXBlID09IFR5cGU6OkF1ZGlvKQotICAgICAgICAgICAgbV9y
aW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8
U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKTsKKyAgICAgICAgICAgIG1fcmluZ0J1
ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlPihudWxscHRyKSk7CiAgICAgfQogCiAgICAgflNvdXJjZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlci5oCmluZGV4IGJhZWQwY2Q5ZTA5YjQ5ZDIyMWU5NDAxOGY2NDlmZTZkYmNmOTI1MTkuLmMx
ZDQzZmNiM2FmNTg0MTQ1M2FkMzQzNGM3Y2Y5M2ViZmM5ZTdlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5o
CkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIENyb3NzUHJvY2Vzc1JlYWx0aW1lQXVkaW9Tb3VyY2U7
CiBjbGFzcyBXZWJQcm9jZXNzOwogCiBjbGFzcyBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlciA6IHB1
YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
dWJsaWMgV2ViQ29yZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSwgcHVibGljIFdlYkNvcmU6OlZpZGVv
Q2FwdHVyZUZhY3RvcnksIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5Q2FwdHVyZUZhY3Rvcnkgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyKFdlYlByb2Nlc3MmKTsKICAgICB+VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCmluZGV4IGI0N2QxZDhhZmEwM2ZlZDM2ZGVjYWQ5ODlkNzJkYmM0MTg0ODdmNTku
LjNiOTA2YTgwYzVhZDhmNjliZWY3N2Y5YThjNzY0YWY4MDlmNDk1NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMzEwLDcg
KzMxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZShQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OlRhc2tTdGF0ZSB0CiAKICAgICAvLyBXZSB3ZXJlIGF3YWtl
bmVkIGZyb20gc3VzcGVuc2lvbiB1bmV4cGVjdGVkbHkuIE5vdGlmeSB0aGUgV2ViUHJvY2Vzc1By
b3h5LCBidXQgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIG9uIG91ciBwYXJlbnQgUElECiAgICAg
Ly8gdG8gZW5zdXJlIHRoYXQgaXQgdG9vIGlzIGF3YWtlbmVkLgotICAgIGF1dG8gdWlQcm9jZXNz
QXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVk
IiwgQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFz
ayk7CisgICAgYXV0byB1aVByb2Nlc3NBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5l
eHBlY3RlZGx5IHJlc3VtZWQiLCBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9u
UmVhc29uOjpGaW5pc2hUYXNrKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UHJvY2Vzc1dhc1VuZXhw
ZWN0ZWRseVVuc3VzcGVuZGVkKCksIFt1aVByb2Nlc3NBc3NlcnRpb24gPSBXVEZNb3ZlKHVpUHJv
Y2Vzc0Fzc2VydGlvbildIHsgfSk7CiB9CiAjZW5kaWYKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lk
IFdlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29u
IHJlYXNvbikKICAgICB9CiAKICAgICBpZiAoIW1fY3B1TW9uaXRvcikgewotICAgICAgICBtX2Nw
dU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENQVU1vbml0b3I+KGNwdU1vbml0b3JpbmdJbnRl
cnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2FnZSkgeworICAgICAgICBtX2NwdU1vbml0b3IgPSBt
YWtlVW5pcXVlPENQVU1vbml0b3I+KGNwdU1vbml0b3JpbmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJs
ZSBjcHVVc2FnZSkgewogICAgICAgICAgICAgaWYgKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5
cGU6OlNlcnZpY2VXb3JrZXIpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGVy
Zm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGV4Y2VlZGVkIENQ
VSBsaW1pdCBvZiAlLjFmJSUgKHdhcyB1c2luZyAlLjFmJSUpIiwgdGhpcywgbV9jcHVMaW1pdC52
YWx1ZSgpICogMTAwLCBjcHVVc2FnZSAqIDEwMCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4
IDM2OTA5NWNkYWQxZDM0NzExYTA2NzZkODczNmE5MGUxOTNlMjkwNWUuLjIyOGY0YTM2ZDRiMGYy
MjJjMTc4NjBkMGJjNDk4YzFmOWUwODlhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlZjxT
dG9yYWdlU3luY01hbmFnZXI+IFN0b3JhZ2VTeW5jTWFuYWdlcjo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIH0KIAogU3RvcmFnZVN5bmNNYW5hZ2VyOjpTdG9yYWdlU3luY01hbmFnZXIoY29u
c3QgU3RyaW5nJiBwYXRoKQotICAgIDogbV90aHJlYWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdl
VGhyZWFkPigpKQorICAgIDogbV90aHJlYWQobWFrZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQog
ICAgICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRDb3B5KCkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNw
cAppbmRleCA0NDM5MzgyOTVmNGUxYzI5ZGQwNDg2YjQzMWJhN2ZlYTM1MjlkMTZkLi45Yzc1MTRl
MzQ2MmM0YjRkOGE4NTYwNWVkMDI5ZGJkMTkyNWQ2YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU3Rv
cmFnZVRocmVhZDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9xdWV1ZS5raWxsZWQoKSAm
JiBtX3RocmVhZCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlv
bjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChtYWtl
VW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogfQogCiB2b2lk
IFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU3RvcmFn
ZVRocmVhZDo6dGVybWluYXRlKCkKICAgICBpZiAoIW1fdGhyZWFkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+
PihbdGhpc10geworICAgIG1fcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAo
KT4+KFt0aGlzXSB7CiAgICAgICAgIHBlcmZvcm1UZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAg
bV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCBiOTM0ZDFhM2IxYmFhODMxYWRkZjNhYmU1
ZTA3NzBhYjFjZjc3ZmEyLi44MDZjYjA5OTVkMGEwN2M3MTgyNzFkMjEwNTA3MDM5OGM0MDNiYzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
QEAgLTk4LDcgKzk4LDcgQEAgU3RvcmFnZVRyYWNrZXImIFN0b3JhZ2VUcmFja2VyOjp0cmFja2Vy
KCkKIFN0b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQ
YXRoKQogICAgIDogbV9zdG9yYWdlRGlyZWN0b3J5UGF0aChzdG9yYWdlUGF0aC5pc29sYXRlZENv
cHkoKSkKICAgICAsIG1fY2xpZW50KDApCi0gICAgLCBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVl
PFN0b3JhZ2VUaHJlYWQ+KCkpCisgICAgLCBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJl
YWQ+KCkpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAgICwgbV9uZWVkc0luaXRpYWxpemF0
aW9uKGZhbHNlKQogICAgICwgbV9TdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZGVmYXVsdFN0
b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApp
bmRleCA0M2VhNDVkYWU4OTIwNmM4MjlhNTE0ZDRkYThlM2QxYzk3Y2MxMjg0Li44NTFjYzEwMTdk
ZWQwMGMwNmQ0NmQyYzg1OWQ3MDAwMGI2ZDcyZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25N
YXAuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzdG9yYWdlU2Vzc2lvbihjb25zdCBQCiBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkKIHsKICAgICBpZiAoIWRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24oKSkKLSAgICAgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCkgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCk7CiB9CiAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQogICAgICAgICAgICAgY29v
a2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFn
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgZGVm
YXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGRlZmF1bHRO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNl
c3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKICNlbmRpZgogfQogCkBAIC0xMDAsMTEg
KzEwMCwxMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjbwogICAgICAgICAgICAgY29va2llU3Rv
cmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RG
TW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1v
dmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKIAogI2VsaWYgVVNF
KENVUkwpCiAgICAgZ2xvYmFsU2Vzc2lvbk1hcCgpLmVuc3VyZShzZXNzaW9uSUQsIFtzZXNzaW9u
SURdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CiAgICAgfSk7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKaW5kZXggMTg3NmI5NjBiOTQ3MDgxNGMzNTBi
YzU5MjZhNGM4MWFlZGYzOTAyMy4uN2I4Njk4MWEzZjQ4ZTUwZjhiM2NjYWMzNzA2OTE3ZDRhZjFm
ZGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTE1OSw1ICsxNTksNSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0
dGluZ3M+IFdlYkluc3BlY3RvckNsaQogICAgICAgICAgICAgZGVsZXRlU2V0dGluZyhuYW1lKTsK
ICAgICAgICAgfQogICAgIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
RnJvbnRlbmRTZXR0aW5nc0NGPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEluc3BlY3RvckZy
b250ZW5kU2V0dGluZ3NDRj4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKaW5kZXggM2IxYTQ1
MDcwNzhmYTRjYzA2OGU3NDAzMDMyMjEyMzliMmFkNzEyMy4uMTQ1NzcyMjJhOWUxM2U2M2U0OTFk
NmQzYjkyY2ExYmM4OWU3Y2IwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbXBvcnQgIldlYkNocm9tZUNsaWVudC5oIgogCiBjbGFzcyBXZWJDaHJvbWVDbGll
bnRJT1MgZmluYWwgOiBwdWJsaWMgV2ViQ2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnRJT1MoV2ViVmlldyogd2Vi
VmlldykKICAgICAgICAgOiBXZWJDaHJvbWVDbGllbnQod2ViVmlldykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQ
b3NpdGlvbkNvbnRlbnQubW0KaW5kZXggMjE3YTRlZDBhODVhNmJiNDE0ZDMxOTRjYjdiZmFlZmRl
MDM2ZDQ3YS4uYWZlMTFhODBiOWYxYzljZTc2YTM1NjJmYTYzYzQ1YmY3MWQxMWQ5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3Np
dGlvbkNvbnRlbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KQEAgLTUyLDYgKzUyLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIHN0YXRpYyBMb2NrIHdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YUxvY2s7
CiAKIHN0cnVjdCBWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YSgp
CiAgICAgICAgIDogbV9lbmNsb3NpbmdBY2NlbGVyYXRlZFNjcm9sbExheWVyKG5pbCkKICAgICB7
IH0KQEAgLTYyLDYgKzYzLDcgQEAgc3RydWN0IFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGEg
ewogdHlwZWRlZiBIYXNoTWFwPFJldGFpblB0cjxDQUxheWVyPiwgc3RkOjp1bmlxdWVfcHRyPFZp
ZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+PiBMYXllckluZm9NYXA7CiAKIHN0cnVjdCBXZWJG
aXhlZFBvc2l0aW9uQ29udGVudERhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJGaXhlZFBvc2l0aW9uQ29udGVudERhdGEoV2ViVmlldyAq
KTsKICAgICB+V2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhKCk7CkBAIC0xNzgsNyArMTgwLDcg
QEAgLSAodm9pZClzZXRWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzOihXVEY6Okhhc2hNYXA8Q0FM
YXllciAqLCBzdGQ6OnVuaXF1ZV9wdHI8V2UKIAogICAgIGZvciAoYXV0byYgbGF5ZXJBbmRDb25z
dHJhaW50cyA6IGxheWVyTWFwKSB7CiAgICAgICAgIENBTGF5ZXIqIGxheWVyID0gbGF5ZXJBbmRD
b25zdHJhaW50cy5rZXk7Ci0gICAgICAgIGF1dG8gbGF5ZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPigpOworICAgICAgICBhdXRvIGxheWVyRGF0
YSA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YT4oKTsKIAogICAgICAg
ICBsYXllckRhdGEtPm1fZW5jbG9zaW5nQWNjZWxlcmF0ZWRTY3JvbGxMYXllciA9IHN0aWNreUNv
bnRhaW5lcnMuZ2V0KGxheWVyKTsKICAgICAgICAgbGF5ZXJEYXRhLT5tX3ZpZXdwb3J0Q29uc3Ry
YWludHMgPSBXVEZNb3ZlKGxheWVyQW5kQ29uc3RyYWludHMudmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCmluZGV4IGE4YjZhMDQzOTNlYzAw
MDE0NjUzOGQ0Y2Y2NWJkNjQwYzc0YmQ5MDEuLjVhZDgxYjRhM2I0OWI1ZDA2MzkzNjU2ODNhMWJj
ZjVkNTdlZjM4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3Rvcnkv
V2ViSGlzdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnkubW0KQEAgLTEzMyw3ICsxMzMsNyBAQCAtIChpZClpbml0CiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgCiAgICAgX2VudHJpZXNCeVVSTCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF07Ci0gICAgX2VudHJpZXNCeURhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGVUb0Vu
dHJpZXNNYXA+KCk7CisgICAgX2VudHJpZXNCeURhdGUgPSBtYWtlVW5pcXVlPERhdGVUb0VudHJp
ZXNNYXA+KCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmluZGV4IGI3Mzk1OTM1ZTUxMGJmM2I3
ZjBjNDhlZGQ0MzZjNThiYmM0ODFkOGUuLjg2ZjlkM2Q0MjIzODQ2YmM5NWNiYzk1NjQ1YTFjYTcz
MjBhZmUxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJI
aXN0b3J5SXRlbS5tbQpAQCAtMzQ4LDcgKzM0OCw3IEBAIC0gKGlkKWluaXRGcm9tRGljdGlvbmFy
eVJlcHJlc2VudGF0aW9uOihOU0RpY3Rpb25hcnkgKilkaWN0CiAgICAgICAgIGNvcmUoX3ByaXZh
dGUpLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOwogICAgIAogICAgIGlmIChOU0FycmF5
ICpyZWRpcmVjdFVSTHMgPSBbZGljdCBfd2Via2l0X2FycmF5Rm9yS2V5OnJlZGlyZWN0VVJMc0tl
eV0pIHsKLSAgICAgICAgYXV0byByZWRpcmVjdFVSTHNWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBhdXRvIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1h
a2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3Rvci0+
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbcmVkaXJlY3RVUkxzIGNvdW50XSk7CiAKICAgICAgICAg
Zm9yIChpZCByZWRpcmVjdFVSTCBpbiByZWRpcmVjdFVSTHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0UHJveHkubW0KaW5kZXggZTE3Yzc4ODFhNTE3ZjBjMzU1Zjg3NTY5YjYwZGEzZjIxNWEx
ZWJhNy4uZjVlN2ZiY2YxMmU0N2Y5MGRlZWYxZWEyY2ZlYjcxNzQyNjg4MGFjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5I
b3N0UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCBrZXJuX3JldHVy
bl90IFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0
LCB1aW50MzJfdCBwbAogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIEtF
Uk5fRkFJTFVSRTsKIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0
SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpHZXRTY3Jp
cHRhYmxlTlBPYmplY3RSZXBseT4ob2JqZWN0SUQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRD
dXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHk+KG9iamVjdElEKSk7CiAgICAgcmV0dXJu
IEtFUk5fU1VDQ0VTUzsKIH0KIApAQCAtNTA5LDcgKzUwOSw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQ
Q0Jvb2xlYW5SZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW5JRCwg
dWludDMyCiAgICAgaWYgKCFpbnN0YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlM
VVJFOwogICAgIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQs
IHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuUmVw
bHk+KHJlc3VsdCkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0
SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpCb29sZWFuUmVwbHk+
KHJlc3VsdCkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAKQEAgLTUyOCw3ICs1Mjgs
NyBAQCBrZXJuX3JldHVybl90IFdLUENCb29sZWFuQW5kRGF0YVJlcGx5KG1hY2hfcG9ydF90IGNs
aWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELAogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJF
OwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVzdWx0ID0gYWRvcHRDRihDRkRhdGFDcmVh
dGUoMCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KHJlc3VsdERhdGEpLCByZXN1bHRMZW5ndGgp
KTsKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhbkFuZERhdGFSZXBs
eT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRS
ZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpC
b29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwgcmVzdWx0KSk7CiAgICAgCiAgICAgcmV0
dXJuIEtFUk5fU1VDQ0VTUzsKIH0KQEAgLTU0NSw3ICs1NDUsNyBAQCBrZXJuX3JldHVybl90IFdL
UENJbnN0YW50aWF0ZVBsdWdpblJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90
IHBsdWdpbgogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJ
TFVSRTsKIAotICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0
ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpJbnN0YW50aWF0ZVBs
dWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJRCwgc3RhdGljX2Nhc3Q8UmVuZGVyZXJU
eXBlPihyZW5kZXJlclR5cGUpKSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5
KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Okluc3Rh
bnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwgcmVuZGVyQ29udGV4dElELCBzdGF0aWNfY2FzdDxS
ZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCmluZGV4IDEwYTA4ZTk1
MGEzZGMwYzkzNjcxZjFmYzFjNzRjOTQ3NzkzYTA3ZTguLmU1NmExMDNhMjhhNzYwZjljZTBiOTdl
NzFkZDZiMjNhNjBjNTNlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5oCkBAIC0xNzEsNiArMTcxLDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
IDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3gKIAogICAgIC8v
IFJlcGx5IHN0cnVjdHMKICAgICBzdHJ1Y3QgUmVwbHkgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGVudW0gVHlwZSB7CiAgICAgICAgICAgICBJbnN0
YW50aWF0ZVBsdWdpbiwKICAgICAgICAgICAgIEdldFNjcmlwdGFibGVOUE9iamVjdCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFu
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3Rh
bmNlLm1tCmluZGV4IDIwMmM2ZGVhZjEzZDA3YzZlM2E1Njk4YjFjZGI1OWExOWI1ZGEwMzkuLjUy
YmY3YmQxMmU0ZTM3MTJkMzE0NzVlMmE1MzlhNDI4Y2ZmOGZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpA
QCAtMzYyLDcgKzM2Miw3IEBAIE1ldGhvZCogUHJveHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQoUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1h
cCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVkIHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5
LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0gbV9tZXRob2RzLmFkZChuYW1lLmltcGwoKSwgbnVs
bHB0cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3Vs
dCkKLSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJveHlNZXRob2Q+KG1ldGhvZE5hbWUpOworICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eU1ldGhvZD4obWV0aG9kTmFtZSk7CiAKICAgICBy
ZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KQEAgLTM5Nyw3ICsz
OTcsNyBAQCBGaWVsZCogUHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBl
bnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBt
YXBBZGRSZXN1bHQgPSBtX2ZpZWxkcy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIpOwogICAgIGlm
IChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiByZXBseS0+bV9yZXN1bHQpCi0gICAgICAgIG1h
cEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3h5RmllbGQ+
KGlkZW50aWZpZXIpOworICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxQcm94eUZpZWxkPihpZGVudGlmaWVyKTsKICAgICByZXR1cm4gbWFwQWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCmluZGV4IDljNzFhM2NjOTIzZjMzZDJlMGFiMzlhMWJmNmIxNGI0NDNlOTRk
NGIuLmVlMTljNTY3YzAxZmExOGM1ZThkYzYxYjA4Yzg5NGU1MjAwMmRhYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTYwLDYgKzYwLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAogY2xhc3MgU29mdHdh
cmVDQVJlbmRlcmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTb2Z0d2FyZUNBUmVuZGVyZXIodWludDMyX3QgY29udGV4dElEKQogICAgICAg
ICA6IG1fY29udGV4dCB7IFtDQUNvbnRleHQgbG9jYWxDb250ZXh0XSB9CkBAIC0xNjgsNyArMTY5
LDcgQEAgLSAoQk9PTCljcmVhdGVQbHVnaW4KICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgaWYg
KF9wcm94eS0+cmVuZGVyZXJUeXBlKCkgPT0gVXNlU29mdHdhcmVSZW5kZXJlcikKLSAgICAgICAg
X3NvZnR3YXJlUmVuZGVyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNvZnR3YXJlQ0FSZW5kZXJlcj4o
X3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CisgICAgICAgIF9zb2Z0d2FyZVJlbmRlcmVyID0g
bWFrZVVuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+KF9wcm94eS0+cmVuZGVyQ29udGV4dElEKCkp
OwogICAgIGVsc2UKICAgICAgICAgW3NlbGYgY3JlYXRlUGx1Z2luTGF5ZXJdOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
bkV2ZW50SGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KaW5kZXggZjdhZWRiY2VkNGQ3ZjVjNGJhM2U5NmUz
NTYxY2E3ZjBiMjY1YzhhYy4uOGVjMWJmNzllZTMyYTJhYzFiYmNmN2EyMWU3M2U3ZTFlMDFkYjFk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpbkV2ZW50SGFuZGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCkBAIC0zNSw3ICszNSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcj4gV2ViTmV0c2NhcGVQ
bHVnaW5FdmVudEhhbmRsZXI6OmNyCiB7CiAgICAgc3dpdGNoIChbcGx1Z2luVmlldyBldmVudE1v
ZGVsXSkgewogICAgIGNhc2UgTlBFdmVudE1vZGVsQ29jb2E6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdpblZp
ZXcpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNvY29hPihwbHVnaW5WaWV3KTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29j
b2EuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXJDb2NvYS5oCmluZGV4IDcwODM3NzZkMjhhNzVjZmI1NDI1MzNkOTBmMzc3OGU4
NWFiY2QxZDIuLmJiZDljNWQ1ODIxZjg1ZjY1ZWJjOGY3NzdlYzY1NTIyOWQ1ZTg5ZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5F
dmVudEhhbmRsZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIuaCIKIAogY2xhc3MgV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYSA6IHB1YmxpYyBXZWJOZXRzY2FwZVBsdWdpbkV2
ZW50SGFuZGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYShXZWJOZXRzY2FwZVBsdWdpblZpZXcq
KTsgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMDJmZjIxODZkZjg0YTlhOTBkN2U5YzI2YzA3NjI3
OWUzMjIxMTM3OC4uMTYwNjYzZTg2MWY3MTBlYmZlZDFkNzY4NTY1ZGQyMmExMTRlOGUxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcubW0KQEAgLTE2NTUsNyArMTY1NSw3IEBAIC0gKHVpbnQzMl90KXNjaGVkdWxl
VGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVydmFsIHJlcGVhdDooTlBCb29sKXJlcGVh
dCB0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIGlmICghdGltZXJzKQotICAgICAgICB0
aW1lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0
cjxQbHVnaW5UaW1lcj4+PigpOworICAgICAgICB0aW1lcnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8
dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4+PigpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBsdWdpblRpbWVyPiogc2xvdDsKICAgICB1aW50MzJfdCB0aW1lcklEOwpAQCAt
MTY2Myw3ICsxNjYzLDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoo
dWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0IHQKICAgICAgICAgdGltZXJJ
RCA9ICsrY3VycmVudFRpbWVySUQ7CiAgICAgd2hpbGUgKCF0aW1lcnMtPmlzVmFsaWRLZXkodGlt
ZXJJRCkgfHwgKihzbG90ID0gJnRpbWVycy0+YWRkKHRpbWVySUQsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZSkpOwogCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luVGlt
ZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKKyAgICBh
dXRvIHRpbWVyID0gbWFrZVVuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1Z2luLCB0aW1lcklELCBpbnRl
cnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogCiAgICAgaWYgKF9zaG91bGRGaXJlVGltZXJzKQog
ICAgICAgICB0aW1lci0+c3RhcnQoX2lzQ29tcGxldGVseU9ic2N1cmVkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQubW0KaW5kZXggNzA0Y2QwOTVlODhmZTFhMjM4MTE4NmM2YmZmMTMwZmM5MDIwNDFlYi4u
NTdmYmJmYWQ5ZTY0Yjc2NzhhZDNhY2NlODA3NzhiYWNmMDM3ODFiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQubW0KQEAgLTk0LDEwICs5NCwxMSBAQCBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6On5X
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKQogfQogCiBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRh
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQmIGNsaWVudCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiAgICAgewotICAgICAgICBhdXRvIGNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlmeU9yaWdpbkRhdGE+KGNsaWVudCwgb3Jp
Z2luKTsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaWRNb2RpZnlPcmlnaW5E
YXRhPihjbGllbnQsIG9yaWdpbik7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQg
PSBXVEZNb3ZlKGNvbnRleHQpXSB7CiAgICAgICAgICAgICBjb250ZXh0LT5jbGllbnQuZGlzcGF0
Y2hEaWRNb2RpZnlPcmlnaW4oY29udGV4dC0+b3JpZ2luKTsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2
ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IGEzYjE1OThlZTM1M2Q2N2UyM2FmODA5NThl
YjdmNzVlYjE2N2Y0ZDguLmNkNzI2NDI2ODI1YmE3MjIxNTU3ZTA1NjZmYTkyZWMwODExMTQ1YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFs
dGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiBA
Y2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdl
YlZpZXcqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCmluZGV4IDc4YjUzOWUzNzJiODY1YzU5NGZj
MDc2ZjVhMWZjODRhYWZlOThiZjAuLjI3MTQyN2UyZDQ2ZWUzYTI5N2QwNTQwMTJhN2E4NWFiOGIz
ZTFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaApAQCAtMzIsNiAr
MzIsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBjbGFzcyBXZWJDYWNoZWRGcmFt
ZVBsYXRmb3JtRGF0YSA6IHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEoaWQgd2ViRG9jdW1lbnRWaWV3KSA6IG1fd2ViRG9jdW1lbnRWaWV3KHdl
YkRvY3VtZW50VmlldykgeyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGZkYzRjYzc4MTk2
ZmNiY2YzMjYwMmQxOGUyODlmMDdhMTE1NGNjOTUuLmMwZmJkYTliMmRhMWRkNDUxMGZmZTA4OWJm
NjhmNWE3NjdkZDQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNz
IEhUTUxJbWFnZUVsZW1lbnQ7CiAvLyBiYXNlIGNsYXNzIG9mIHRoZSBjb25jcmV0ZSBjbGFzcywg
V2ViQ2hyb21lQ2xpZW50SU9TLiBCZWNhdXNlIG9mIHRoYXQsIHRoaXMgY2xhc3MgYW5kCiAvLyBt
YW55IG9mIGl0cyBmdW5jdGlvbnMgYXJlIG5vdCBtYXJrZWQgZmluYWwuIFRoYXQgaXMgbWVzc3kg
d2F5IHRvIG9yZ2FuaXplIHRoaW5ncy4KIGNsYXNzIFdlYkNocm9tZUNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oCmluZGV4IDE4ODVmMDMxMzEzNWI4MTdiMzBmOTQ1Nzc3ZDhlMjRiMTUzOWJmOTAuLmE3
ZjY2ZWVlZjMwNmE2ODYwNTQyMGU3OTg3NjIwMjU3YmUwNmI2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudAogICAgICwgcHVibGljIFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ2xpZW50CiAjZW5kaWYKIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVudChXZWJWaWV3ICp3ZWJWaWV3
KTsKICAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudUNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4
IDg0N2E3M2IxN2E0NjE3YmQ1NGE4ZDI4YTkyM2MxZDRhNjNiZGQxMmUuLjMwZGYzZjczZDg1MGVh
NzY5YzcxMzUyMjFkMmU4ODY1ZWE2N2UwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTMwLDYgKzMwLDcg
QEAKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGYwNTll
MDU5ZTExODdhM2JjNWJkMjQ3Y2MyNDFmNTlhZGQ0NTA5NTAuLmI1MTA3ODdkODA5YmNmOTdiNzY4
OWU3NDA5MzI4Mzc1YWEwYjBiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC00NSw2ICs0NSw3IEBA
CiBAY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRD
aGVja2VyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViRWRpdG9yQ2xpZW50PiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50
KFdlYlZpZXcgKik7CiAgICAgdmlydHVhbCB+V2ViRWRpdG9yQ2xpZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDNkZDUwZTdiM2I5Y2Y5OTMzNDljOWFiYjRjYjQ5NzgzN2Vl
YzM1M2UuLjk0MGIwZmY5NjNhODVjZTlkODhkN2JjNTZmZjZiM2VlYjJlM2Q5MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDY3LDcgKzEwNjcsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKIHN0YXRpYyB2b2lkIGFkZFJlZGly
ZWN0VVJMKFdlYkhpc3RvcnlJdGVtICppdGVtLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBp
ZiAoIWl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzKQotICAgICAgICBpdGVtLT5fcHJpdmF0
ZS0+X3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7Cisg
ICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oKTsKIAogICAgIC8vIE91ciBBUEkgYWxsb3dzIHVzIHRvIHN0b3JlIGFsbCB0aGUg
VVJMcyBpbiB0aGUgcmVkaXJlY3QgY2hhaW4sIGJ1dCBmb3IKICAgICAvLyBub3cgd2Ugb25seSBo
YXZlIGEgdXNlIGZvciB0aGUgZmluYWwgVVJMLgpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1E
YXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbWUpCiB7Ci0gICAgY2FjaGVk
RnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcu
ZG9jdW1lbnRWaWV3KSk7CisgICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9w
cml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGlzIGZyYW1lIGlzIGdvaW5n
IHRvIGJlIGNhY2hlZC4gU3RvcCBhbGwgcGx1Z2lucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CmluZGV4IGZmZTI5OTMxMmViNDgwYmFmYjVmMGVhYzQzNTJmMjQzZjk2ZTAwZjcuLmZmZGJhY2Zj
Mjc0MjFlOGQzNTg4OGYyY2U2YjE4MDc3YTE2ZTMzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogQGNsYXNz
IFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3ICopOwogICAgIFdlYlZpZXcgKndl
YlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
YmQ3ZjYyZmM4NWRjOTljMzg3MTZmMDc2NjY0NjMxODI1MTFjNTRhNS4uMGM5NDhiM2FlZjk4NzYw
OTYzMDM1MWQ1OWFjNzkwYjJhYmVhZGE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUx
LDYgKzUxLDcgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkluc3BlY3Rv
ckNsaWVudChXZWJWaWV3ICppbnNwZWN0ZWRXZWJWaWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tCmluZGV4IDFjMDA4MDk3NjkyZmY5YjA3MWZjZTVhYzRhNGI0NjkyZDEzN2VkOTUuLjdkM2U1
ZWM5ZTYxNWUxZDQ4YzNkMDVkNzFhNTljNDUxZmViNzY2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW0KQEAgLTEwOSw3ICsxMDksNyBAQCBGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNs
aWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcAogICAgIFt3
aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVudDp0aGlzXTsKIAogICAgIG1f
ZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5nZXQoKSBmcm9udGVuZFdlYlZp
ZXddKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdl
dCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250
ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG1ha2VVbmlxdWU8V2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgd2luZG93Q29udHJvbGxl
ci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVG
cm9udGVuZFNldHRpbmdzKCkpOwogCiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvckZyb250ZW5k
PiB3ZWJJbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0TlMoW1tXZWJJbnNwZWN0b3JGcm9udGVuZCBh
bGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDptX2Zyb250ZW5kQ2xpZW50LmdldCgpXSk7CiAg
ICAgW1ttX2luc3BlY3RlZFdlYlZpZXcgaW5zcGVjdG9yXSBzZXRGcm9udGVuZDp3ZWJJbnNwZWN0
b3JGcm9udGVuZC5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDE1YjQx
ODA0OGU0ZjFkNDYyNGMzMDNkY2JiZmVkMTY5Nzk2NDQ4NjEuLjk0ZWQ2MThhYzc4ZWU4YmNmNTcx
NTVjOWFkYWJjYmRhZGY2OGM3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0z
Niw2ICszNiw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xp
ZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlZp
ZXcgKik7CiAgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0dXJuIG1fd2ViVmlldzsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgKaW5kZXggYTNkNmFlNjM2MzY0
N2M1ZjMwY2M3OWZiZDYzNWY2NjRiY2EwMTIzYy4uZGM5ZDExYTM1ODdlZTA0ZjUwMTUxYmU4OGJj
NWQ0YjE0OGJjZGU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
ci5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIEludFBvaW50OwogfQogCiBjbGFzcyBXZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlciA6IHB1YmxpYyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXIoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlv
blByb3ZpZGVyTW9jay5tbQppbmRleCAyNTM2NDhkOGU4NDU5MTFlMmFlMjhjMGJiODYzY2I1N2Y3
YzMwMDM5Li4yNzZkOWYxNWVmOGZhNWUxZmVkNDM4ZWQ5YzFkMjU5YTc4NTgzNTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9u
UHJvdmlkZXJNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KQEAgLTM2LDcgKzM2LDcgQEAgLSAoaWQp
aW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIG1fY29yZSA9IHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrPigpOworICAgIG1fY29yZSA9IG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrPigpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBhOTA2MjJjMjA3NGUwY2RjZWNlZjJj
NmMxYzg0OTQ1ZDRlOWRmZmFiLi4zYTk0YmI5MTBkMjU5ZWZhYTg5MWQ1MjllODBkMmI1YjAwMjBi
NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAg
LTM3OCw3ICszNzgsNyBAQCAtICh2b2lkKV9hdHRhY2hTY3JpcHREZWJ1Z2dlcgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0KTsKKyAgICBfcHJpdmF0ZS0+
c2NyaXB0RGVidWdnZXIgPSBtYWtlVW5pcXVlPFdlYlNjcmlwdERlYnVnZ2VyPihnbG9iYWxPYmpl
Y3QpOwogfQogCiAtICh2b2lkKV9kZXRhY2hTY3JpcHREZWJ1Z2dlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXIuaAppbmRleCBkZmE3ZWZkMDYwNmFkYzQ5ZmUyOTFkMDUyMWQxMzJlNmUxOWM1MDcz
Li5hMDcyZTgxOTUyNDkzOWFlMGYyMmJiOTgzNmQzYWM3MDVkODU3OTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBQYWdlOwogfQogCiBjbGFz
cyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIDogcHVibGljIFdlYkNvcmU6OldlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlcj4gY3JlYXRlKFdlYkNvcmU6OlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
Lm1tCmluZGV4IDcyYzIwYzY5M2ZlY2JhOTcxMDQ2MzQxNjQxY2NlMTE0OTRkZTRhNjkuLjYwMjQw
Mjk5NjJlYzM0ZjAwZjRhYWQ5NDMyYTdmYzQyYmExZDE3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXIubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXI+IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OmNyZWF0
ZShXZWJDb3JlOjpQYWdlJiBwYWdlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBhZ2UpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI+KHBhZ2UpOwogfQogCiBXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyOjpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyKFdlYkNvcmU6OlBh
Z2UmIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlRleHRJdGVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4
dEl0ZXJhdG9yLm1tCmluZGV4IDFhNzI1OGI0MjNhODQ1Nzg5MWU0MTVlMTBkMDAyNTY3MzBhYTJi
ZGUuLmUzNjNiODViMmIzZDVhZTE0NzNjODM3MjcxODU4MzRkNTE3ODdiMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCkBAIC02
OSw3ICs2OSw3IEBAIC0gKGlkKWluaXRXaXRoUmFuZ2U6KERPTVJhbmdlICopcmFuZ2UKICAgICAg
ICAgcmV0dXJuIHNlbGY7CiAgICAgCiAgICAgX3ByaXZhdGUgPSBbW1dlYlRleHRJdGVyYXRvclBy
aXZhdGUgYWxsb2NdIGluaXRdOwotICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SXRlcmF0b3I+KGNvcmUocmFuZ2UpKTsKKyAgICBfcHJp
dmF0ZS0+X3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihj
b3JlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiOGQ5NzExZTcwZDc3NDVkN2QzOWIxZjlmNTQx
YTE2NTRkNjU5YzgyLi5mYjdjZjJmYWFkNjdiNDljOTMzYTYyMWUzMjc5MTBlMTA4MWFlZjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMjI0LDcg
KzEyMjQsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENv
bnRlbnRzKCkKIC0odm9pZClfaW5qZWN0T3V0bG9va1F1aXJrc1NjcmlwdAogewogICAgIHN0YXRp
YyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzID0gbGVha091dGxvb2tRdWly
a3NVc2VyU2NyaXB0Q29udGVudHMoKTsKLSAgICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSks
IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4ob3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRz
LCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0QXREb2N1
bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKKyAgICBfcHJpdmF0ZS0+Z3JvdXAtPnVzZXJD
b250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUoW1dlYlNjcmlwdFdvcmxkIHdv
cmxkXSksIG1ha2VVbmlxdWU8VXNlclNjcmlwdD4ob3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRz
LCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0QXREb2N1
bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpKTsKIAogfQogI2VuZGlmCkBAIC0xNDM4LDcgKzE0
MzgsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6KE5TU3Ry
aW5nICopZnJhbWVOYW1lIGdyb3VwTmFtZTooTlNTdAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNo
cm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZik7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQoc2VsZik7
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBlbmFibGUgdGhpcyBvbiBpT1MgYXMgd2VsbC4KLSAg
ICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KHNlbGYpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJWYWxpZGF0aW9u
TWVzc2FnZUNsaWVudD4oc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xp
ZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxmKTsKICNlbHNlCiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudElPUyhzZWxmKTsKQEAg
LTQ2MjgsNyArNDYyOCw3IEBAICsgKHZvaWQpX2FkZFVzZXJTY3JpcHRUb0dyb3VwOihOU1N0cmlu
ZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKil3b3JsCiAgICAgaWYgKCF3b3Js
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1c2VyU2NyaXB0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwg
dG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERv
Y3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5k
LCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJh
bWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgIGF1dG8gdXNlclNjcmlwdCA9IG1ha2VV
bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCks
IHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXRE
b2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVu
ZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZy
YW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHVzZXJTY3Jp
cHQpKTsKIH0KIApAQCAtNDY1MSw3ICs0NjUxLDcgQEAgKyAodm9pZClfYWRkVXNlclN0eWxlU2hl
ZXRUb0dyb3VwOihOU1N0cmluZyAqKWdyb3VwTmFtZSB3b3JsZDooV2ViU2NyaXB0V29ybGQgKikK
ICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHN0eWxlU2hlZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdW
ZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFt
ZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdElu
VG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAgIGF1dG8gc3R5bGVTaGVldCA9
IG1ha2VVbmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3
aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyA9PSBX
ZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFt
ZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCgqY29yZSh3b3JsZCksIFdURk1vdmUoc3R5bGVT
aGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogfQogCkBAIC05NDAyLDcgKzk0MDIs
NyBAQCAtIChWZWN0b3I8U3RyaW5nPilfZGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClk
aWN0YXRpb25Db250ZXh0CiAtIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciYpX3NlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+X3NlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyKQotICAgICAgICBfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4o
c2VsZik7CisgICAgICAgIF9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgPSBt
YWtlVW5pcXVlPFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyPihzZWxmKTsKICAgICByZXR1
cm4gKl9wcml2YXRlLT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiB9CiAjZW5kaWYKQEAg
LTk0NjEsNyArOTQ2MSw3IEBAIC0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3I6KFRleHRJbmRpY2F0
b3ImKXRleHRJbmRpY2F0b3IKIC0gKHZvaWQpX3NldFRleHRJbmRpY2F0b3I6KFRleHRJbmRpY2F0
b3ImKXRleHRJbmRpY2F0b3Igd2l0aExpZmV0aW1lOihUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRp
bWUpbGlmZXRpbWUKIHsKICAgICBpZiAoIV9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93KQot
ICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8
VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CisgICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNh
dG9yV2luZG93ID0gbWFrZVVuaXF1ZTxUZXh0SW5kaWNhdG9yV2luZG93PihzZWxmKTsKIAogICAg
IE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcyA9IFtzZWxmIGNvbnZl
cnRSZWN0OltzZWxmIF9jb252ZXJ0UmVjdEZyb21Sb290Vmlldzp0ZXh0SW5kaWNhdG9yLnRleHRC
b3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKV0gdG9WaWV3Om5pbF07CiAgICAgTlNS
ZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW3NlbGYud2luZG93IGNv
bnZlcnRSZWN0VG9TY3JlZW46dGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXNdOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXgg
MTA2MGMyZDg1NGFkYTBkY2FmYjMzNTU5YzgxMWU0ZWU0OTRjYzZlMC4uODIzOGE0ZWM1ZmVlMTY4
MzY0ZWQxMzA0YmM3NTE1ZjU1MTdmZTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCkBAIC05Niw3ICs5Niw3IEBAIExheWVyRmx1c2hDb250
cm9sbGVyOjpMYXllckZsdXNoQ29udHJvbGxlcihXZWJWaWV3KiB3ZWJWaWV3KQogV2ViVmlld0xh
eWVyRmx1c2hTY2hlZHVsZXI6OldlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyKExheWVyRmx1c2hD
b250cm9sbGVyKiBmbHVzaENvbnRyb2xsZXIpCiAgICAgOiBtX2ZsdXNoQ29udHJvbGxlcihmbHVz
aENvbnRyb2xsZXIpCiB7Ci0gICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oV2ViQ29yZTo6
UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3Ro
aXNdKCkgeworICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpSdW5M
b29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZl
cjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKICAgICAg
ICAgdGhpcy0+bGF5ZXJGbHVzaENhbGxiYWNrKCk7CiAgICAgfSk7CiB9CkBAIC0yMDgsNyArMjA4
LDcgQEAgLSAoaWQpaW5pdAogICAgIHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQrKzsKIAogI2lm
IFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXI+KCk7CisgICAgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKTsKICNlbmRpZgogCiAgICAg
cmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDY0NmU2YWVmOTMyZjFjOTkyOTg1MzZjODJmMmM5
NTVhNzFhMTkyY2YuLmRlNTJjODU4NjQxNDI5MmMzYzk3ZWRiZTk5NGFiZjFkNWY3OGQ1YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwCkBAIC0xNzYsNiArMTc2LDcgQEAgdm9pZCBIVURTbGlkZXI6OmRyYWcoY29uc3Qg
SW50UG9pbnQmIHBvaW50LCBib29sIHN0YXJ0KQogCiAjaWYgVVNFKENBKQogY2xhc3MgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBMYXllckNsaWVudChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBwYXJlbnQpIDogbV9w
YXJlbnQocGFyZW50KSB7IH0KIApAQCAtMjQ2LDEwICsyNDcsMTAgQEAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpCiAgICAgLCBtX21vdmluZ1dp
bmRvdyhmYWxzZSkKICAgICAsIG1fdGltZXIoKnRoaXMsICZGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjp0aW1lckZpcmVkKQogI2lmIFVTRShDQSkKLSAgICAsIG1fbGF5ZXJDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcykpCisgICAgLCBtX2xheWVyQ2xpZW50KG1ha2VV
bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQogICAgICwgbV9yb290Q2hpbGQoUGxhdGZvcm1DQUxh
eWVyV2luOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllciwgbV9sYXllckNs
aWVudC5nZXQoKSkpCiAjZW5kaWYKLSAgICAsIG1fZnVsbHNjcmVlbldpbmRvdyhzdGQ6Om1ha2Vf
dW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqPih0aGlzKSkpCisgICAgLCBtX2Z1bGxz
Y3JlZW5XaW5kb3cobWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
PihzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhpcykp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmgKaW5kZXggZjFkZThkZDdjY2U3ODg3ZDZjODNjYjI4MTE1NjEzZWE4MGI1
NWQ3OC4uMTM4YzNlYzRlMjY0YjE4YjI3MmUyNjdjMTY4Mzc1NzZhYmM4NDExMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaApA
QCAtNDIsNiArNDIsNyBAQCBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiB9CiAKIGNsYXNzIEhVRFdp
ZGdldCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgSFVEV2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpIDogbV9yZWN0KHJlY3QpIHsgfQogICAg
IApAQCAtMTAxLDYgKzEwMiw3IEBAIGNsYXNzIEhVRFNsaWRlciA6IHB1YmxpYyBIVURXaWRnZXQg
ewogfTsKIAogY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciA6IFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIp
OwogcHVibGljOgogICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWVzc2FnZVRocm90dGxlcldp
bi5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0
bGVyV2luLmgKaW5kZXggNWZkNzZkNDE3ODI1MjYxZDRlZDUyOGE4NTQxZjY2MmE0ZjdmODdmOS4u
NGI3OWZlNjJiZmQ4NDU5OWIyNGRjMmQ5NWM2OGM1MWUyMTUwM2MzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0
bGVyV2luLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IFBsdWdpblZpZXc7CiAKICAgICBzdHJ1Y3QgUGx1Z2luTWVzc2FnZSB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgSFdORCBoV25kOwogICAgICAgICBV
SU5UIG1zZzsKICAgICAgICAgV1BBUkFNIHdQYXJhbTsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIH07CiAKICAgICBjbGFzcyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVy
V2luIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAg
ICAgICBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luKFBsdWdpblZpZXcqKTsKICAgICAgICAgflBs
dWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCBhYmE2M2RhYjhiMzFlNDdhYmQ4MDg4YjM3
ODNhODBlYzU0YzEwMjE4Li4wZjZiZWVmZmFkMWRjMDE1YzhhNDc3ZTdmYmU1YzliNmFhZmFmZjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0u
Y3BwCkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVEYXRh
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIKIAogICAgIGlm
IChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7CiAgICAgICAgIGlmICghbV9kZWxp
dmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPGNoYXI+PigpOworICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBtYWtlVW5pcXVl
PFZlY3RvcjxjaGFyPj4oKTsKIAogICAgICAgICBpbnQgb2xkU2l6ZSA9IG1fZGVsaXZlcnlEYXRh
LT5zaXplKCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5yZXNpemUob2xkU2l6ZSArIGxlbmd0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCAyMTM2MzE3ZjI5OTlkNWUxMzc0OWRmMzhlMTlhOGY0ZDJmMjViZDYwLi41NDcxNmEwYmIy
YjFmYWI3NWQ4MWRlNDJhZWU5NmVlYTJmNmIxM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTUxMCw3ICs1MTAsNyBAQCBOUEVycm9y
IFBsdWdpblZpZXc6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVlc3QsIGJv
b2wgc2VuZE5vdGlmaWNhdAogICAgIH0gZWxzZSBpZiAoIW1fcGFyZW50RnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1cmwpKQogICAgICAgICByZXR1cm4gTlBF
UlJfR0VORVJJQ19FUlJPUjsKIAotICAgIHNjaGVkdWxlUmVxdWVzdChzdGQ6Om1ha2VfdW5pcXVl
PFBsdWdpblJlcXVlc3Q+KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHNlbmROb3RpZmljYXRp
b24sIG5vdGlmeURhdGEsIGFyZVBvcHVwc0FsbG93ZWQoKSkpOworICAgIHNjaGVkdWxlUmVxdWVz
dChtYWtlVW5pcXVlPFBsdWdpblJlcXVlc3Q+KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHNl
bmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEsIGFyZVBvcHVwc0FsbG93ZWQoKSkpOwogCiAgICAg
cmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMDU3MjhmM2VkMzcyMDUwNGFmNTVmOTg3
N2Y4NjIxYmRjMDVjZTYyMi4uNTIwNDU5NGFiNmY4NGQ1NzAwMDQwZGZkMjk4MWMzZjU2M2VkZmYz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdX
aW4uY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgUGx1Z2luVmlldzo6d25kUHJvYyhIV05EIGhXbmQs
IFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBpZiAobWVz
c2FnZSA9PSBXTV9VU0VSICsgMSAmJgogICAgICAgICBtX3BsdWdpbi0+cXVpcmtzKCkuY29udGFp
bnMoUGx1Z2luUXVpcmtUaHJvdHRsZVdNVXNlclBsdXNPbmVNZXNzYWdlcykpIHsKICAgICAgICAg
aWYgKCFtX21lc3NhZ2VUaHJvdHRsZXIpCi0gICAgICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4+KHRoaXMpOworICAg
ICAgICAgICAgbV9tZXNzYWdlVGhyb3R0bGVyID0gbWFrZVVuaXF1ZTxQbHVnaW5NZXNzYWdlVGhy
b3R0bGVyV2luPih0aGlzKTsKIAogICAgICAgICBtX21lc3NhZ2VUaHJvdHRsZXItPmFwcGVuZE1l
c3NhZ2UoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0pOwogICAgICAgICByZXR1cm4gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YS5oCmluZGV4IDUzMGI2OWVkNzE5YzI3YWNjNmIwN2UzNTE1OTIyMWY1NTI2YzUzMDUuLjNi
ZjQ0ZDg3ZDE4ZDVmMjczY2QyOTUzNTY3NmIyNDA4ZjJjOTE0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaD4K
IAogY2xhc3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKElXZWJEYXRhU291cmNlKiB3ZWJE
YXRhU291cmNlKSA6IG1fd2ViRGF0YVNvdXJjZSh3ZWJEYXRhU291cmNlKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXggZTNlYzMzZmQ0OTk3YTAx
YTIyNWQ1ZTFjZjliNGY0YjYyZDc3ZTIyZC4uYzQxZjg2ZTA3M2Q4ZGNiOWU0YThhNTI5NGYwZDYz
Y2M5NGU1NjNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5o
CkBAIC00MCw2ICs0MCw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2ViVmlldyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
aW5kZXggNGE0OWI5NGJiYTU4ZDBjNTQ2MzMyOWMzZjZlZjIzZTg0ODhiN2FmMy4uN2IyOTljZWUy
NWVjZDEwYmJhNjIxYzg1ODFiMDZhZTA2YzVhMWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RmlsZVBhdGhzTGlzdFNpemUg
PSBVU0hSVF9NQVg7CiBXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNsaWVudChXZWJWaWV3KiB3
ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCi0gICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkRl
c2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZpZXcpKQorICAgICwgbV9ub3RpZmljYXRp
b25zRGVsZWdhdGUobWFrZVVuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlPih3
ZWJWaWV3KSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA0MWQ1ZjA2YWVhY2I3
ZTE0MTdkNGI3MDI0MDA2MGJiZTU3ZjY5MzBmLi43ODc1NDMyNTNkNWRmZjRlYzY2OGViZTg4ZjA4
ODVkMGJhZGI2NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBX
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOwogaW50ZXJmYWNlIElXZWJVSURlbGVnYXRl
OwogCiBjbGFzcyBXZWJDaHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJD
aHJvbWVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBj
OWRlNDliM2NkMTQ1NTE3MjhmYjJmOWQ5NmVmNDkwZTk5MTU4YmQ0Li5mNDhlZTczMGVlZjcxOTc5
ZTRkOGQyYzMyN2VkMWJhMTdiOTRmZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAg
LTMwLDYgKzMwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51Q2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDb250ZXh0TWVudUNsaWVudChXZWJWaWV3
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAppbmRl
eCA4Mjk2YzhjY2I2ODg3ZDM0NTQ4ZDVhNjRjNjg2NzcyNmE3NDYwNzcyLi40Y2ZkMTAyNjVkMWQw
N2E1N2YwMzBhNGU2YjE1MDY5Y2JiZmI5MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5v
dGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIERvY3VtZW50Owog
fQogCiBjbGFzcyBXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIDogcHVibGljIFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZShXZWJWaWV3KiB2aWV3
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oCmluZGV4IGI1OTg5MzMyOTEwMDllMjg1MWVkNzU0MTVlYzRhYTBmZTQw
M2Q2MTEuLjQ1ZTNjYTcyNzUzYWQxYWMxMTUzYmU5NjE5M2Y2ZWQ2MjFmZjg5ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkRyYWdD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJWaWV3Kik7CiAgICAgdmly
dHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJveWVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4
IGRiNjM1MmQ2MzgxNmY3YzlhZWVlOWY3NDRlNDhlMzgxZTg1NmQyYjUuLjY5ZDdlZDNlMGFhMzFm
MTNiZWE2NGNmMGMyNzY1ZTI1NGZiZjhlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0zNSw2ICsz
NSw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYkVkaXRvclVuZG9UYXJnZXQ7
CiAKIGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JD
bGllbnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlZpZXcqKTsK
ICAgICB+V2ViRWRpdG9yQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggOGUzNTRiNzFjZGZkMmE1ZjliOGIwMTFhMDMyOWQ3NDI0YmM5MGJiYy4uZDRiMmY3ZjYzZTg2
MDg1OTM5MzQ1MmJkNjJlMTI4NWQyZThhZDQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtOTMsNiArOTMsNyBAQCBzdGF0aWMgV2ViRGF0YVNvdXJjZSogZ2V0V2ViRGF0YVNv
dXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogfQogCiBjbGFzcyBXZWJGcmFtZUxvYWRlckNs
aWVudDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlKCkg
CiAgICAgICAgIDogbV9wb2xpY3lGdW5jdGlvbihudWxscHRyKQpAQCAtMTA3LDcgKzEwOCw3IEBA
IGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0
ZSB7CiB9OwogCiBXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQoV2Vi
RnJhbWUqIHdlYkZyYW1lKQotICAgIDogbV9wb2xpY3lMaXN0ZW5lclByaXZhdGUoc3RkOjptYWtl
X3VuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJpdmF0ZT4oKSkKKyAgICA6IG1fcG9saWN5
TGlzdGVuZXJQcml2YXRlKG1ha2VVbmlxdWU8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+
KCkpCiAgICAgLCBtX3dlYkZyYW1lKHdlYkZyYW1lKQogICAgICwgbV9tYW51YWxMb2FkZXIoMCkK
ICAgICAsIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpIApAQCAtOTczLDcgKzk3NCw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZy
YW1lKENhY2hlZEZyYW1lKiBjYWNoZWRGcmFtCiAKICAgICBBU1NFUlQoY29yZUZyYW1lLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpID09IGNhY2hlZEZyYW1lLT5kb2N1bWVudExvYWRlcigpKTsK
IAotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihzdGF0aWNfY2FzdDxJV2ViRGF0YVNv
dXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKSkpKTsKKyAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEobWFr
ZVVuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFT
b3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSkpKSk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5oCmluZGV4IGViOTc1OGJkNDIxMDdkMmY5YTg1NGU0ZTY4ODE2NmE2ZjUx
NWZiOWYuLmJiYTljOWY0NDUzNThkN2NlM2VhMDNmODk2NjQxYmQ2ZTVlMDQwZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
R2VvbG9jYXRpb25DbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBv
c2l0aW9uOwogY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdlYkdlb2xvY2F0aW9uQ2xpZW50KFdlYlZpZXcqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNzU2OTU5MGMxYjNjZjM4MTZmYzQyYTM1YmYz
ZjY2YmZkNzg5MDIyNC4uZjgwYWUwNDhiODJkYmRiMjM0NjU0NjhkOTMzYzYwYTcwOTcyYzdmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHIKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9
IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJW
aWV3LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJW
aWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkp
OworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJv
bnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNy
ZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50Lmdl
dCgpKTsKICAgICBtX2Zyb250ZW5kSGFuZGxlID0gZnJvbnRlbmRId25kOwogICAgIHJldHVybiB0
aGlzOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGln
aHQoKQogICAgIGJvb2wgY3JlYXRpbmdIaWdobGlnaHQgPSAhbV9oaWdobGlnaHQ7CiAKICAgICBp
ZiAoY3JlYXRpbmdIaWdobGlnaHQpCi0gICAgICAgIG1faGlnaGxpZ2h0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3BlY3RlZFdlYlZpZXcpOworICAgICAgICBtX2hp
Z2hsaWdodCA9IG1ha2VVbmlxdWU8V2ViTm9kZUhpZ2hsaWdodD4obV9pbnNwZWN0ZWRXZWJWaWV3
KTsKIAogICAgIGlmIChtX2hpZ2hsaWdodC0+aXNTaG93aW5nKCkpCiAgICAgICAgIG1faGlnaGxp
Z2h0LT51cGRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggOTVjOWFmYTg1MDAyYTU0
MzI3MGI3Y2U2YjM4OGM3MGQ0ODkxODUxOC4uMGE1MTQ4MzkxYmFlMTI2MGRmNjg2NmIyODcwN2U2
NjA4NGU5MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xh
c3MgV2ViTm9kZUhpZ2hsaWdodDsKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkluc3BlY3Rv
ckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqKTsKIApA
QCAtOTQsNiArOTUsNyBAQCBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdAogfTsKIAogY2xhc3MgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbCwgV2ViQ29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBIV05EIGluc3BlY3RlZFdlYlZp
ZXdId25kLCBIV05EIGZyb250ZW5kSHduZCwgY29uc3QgQ09NUHRyPFdlYlZpZXc+JiBmcm90bmVu
ZFdlYlZpZXcsIEhXTkQgZnJvbnRlbmRXZWJWaWV3SHduZCwgV2ViSW5zcGVjdG9yQ2xpZW50Kiwg
c3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPik7CiAgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1h
bmFnZXIuY3BwCmluZGV4IDI0OTNjN2IwYjc5ZmM0ZmQ4ZWNlYzBlYTk2NjdjNmVlMmFjM2EwNGEu
LjQ0NTQyYTFkYTEwM2FhNDQ3NjNlOTRkNGZhYmE4NjRlZDAyZmM3ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMzU1LDYgKzM1NSw3
IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRJREJQZXJPcmlnaW5RdW90YSh1bnNp
Z25lZCBsb25nIGxvbmcgcXVvdGEpCiB9CiAKIGNsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERp
ZE1vZGlmeU9yaWdpbkRhdGEpOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9N
YWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlciogZGF0YWJhc2VNYW5hZ2VyLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5
YWQwZTFhYzUwYWQ3MGIuLjhhZmJhMGY2ZDUzYWZkNTU1ODQ1YzE5NTM2YzJhOWMxZWM1ZjM3ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJh
Zy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFn
LmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gV2Vi
RWxlbWVudFByb3BlcnR5QmFnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhj
b25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCi0gICAgOiBtX3Jlc3VsdChzdGQ6Om1ha2VfdW5p
cXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCisgICAgOiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhp
dFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IGE4MWMwMGU1NmM1ZGUyYWViYzEyYWI4
YjZkYjExYmM5MzRlYmJiZGEuLmZiODhlMzllN2I1NmFjMzJkY2Y1Y2Y1MDExYzM1NDgxNzFhNmMz
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbihfSW5fb3B0XyB2b2lkKiBkaWN0aW9uYQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8U3RyaW5nPj4gcmVkaXJlY3RVUkxzVmVjdG9yOwogICAgIGlmIChDRkFycmF5UmVm
IHJlZGlyZWN0VVJMc1JlZiA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGRpY3Rpb25hcnlSZWYsIHJlZGlyZWN0VVJMc0tleSkpKSB7CiAgICAgICAgIENGSW5k
ZXggc2l6ZSA9IENGQXJyYXlHZXRDb3VudChyZWRpcmVjdFVSTHNSZWYpOwotICAgICAgICByZWRp
cmVjdFVSTHNWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PihzaXplKTsK
KyAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4o
c2l6ZSk7CiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAg
ICAgICAgICgqcmVkaXJlY3RVUkxzVmVjdG9yKVtpXSA9IFN0cmluZyhzdGF0aWNfY2FzdDxDRlN0
cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZWRpcmVjdFVSTHNSZWYsIGkpKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5kZXggMmYxZjJmNDgw
N2ViOWM0ZmU3MDgzNWRiNzhlMzRhMzRiY2ZmMzZkMC4uZDY1ZGUxOWVlOTljNDUxNDQ1ZGZiZjFi
MTM1OWRjMmE4YmEzOGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3Bw
CkBAIC0yMjQsNyArMjI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEQzRFBvc3RQcm9jZXNzaW5nQ29u
dGV4dD4gQ0FEM0RSZW5kZXJlcjo6Y3JlYXRlRDNEUG9zdFByb2Nlc3NpbmcKICAgICBtZW1jcHko
b3ZlcmxheVF1YWRCdWZmZXIsIG92ZXJsYXlRdWFkVmVydGljZXMsIHNpemVvZihvdmVybGF5UXVh
ZFZlcnRpY2VzKSk7CiAgICAgb3ZlcmxheVF1YWQtPlVubG9jaygpOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0PihzY2VuZVRleHR1cmUsIG92
ZXJsYXlRdWFkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRl
eHQ+KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1YWQpOwogfQogCiAvLyBGSVhNRTogPHJkYXI6Ly82
NTA3ODUxPiBTaGFyZSB0aGlzIGNvZGUgd2l0aCBDb3JlQW5pbWF0aW9uJ3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RS
ZW5kZXJlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0
aW9ucy9DQUQzRFJlbmRlcmVyLmgKaW5kZXggNjdkNDgzNTNiMDNkNzJlYThhOWMyOGFiODcwZDc1
ZGExMWQ4MDhlYy4uNDdlYWRkYTY1NjEyZTYwNTBkMmMyOGFjZTZmNGM5YWNlOWNiYjUzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9u
cy9DQUQzRFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNw
YWNlIFdLUUNBIHsKIGNsYXNzIEltYWdlOwogCiBjbGFzcyBEM0RQb3N0UHJvY2Vzc2luZ0NvbnRl
eHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEQzRFBvc3RQ
cm9jZXNzaW5nQ29udGV4dChjb25zdCBDQ29tUHRyPElEaXJlY3QzRFRleHR1cmU5PiYsIGNvbnN0
IENDb21QdHI8SURpcmVjdDNEVmVydGV4QnVmZmVyOT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhpZ2hsaWdodC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViTm9kZUhpZ2hsaWdodC5oCmluZGV4IGY5NzU1YmI4ZGFlYWFiMzlkMzQyMmVlOGZl
YjBmMjRjMWIzNTRmZWQuLmIyNjk1NDk5YjgyNmI5OWI4MmVhZmE4NDU0MTg3ZDE5ZjZlMDdmMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmgKQEAgLTM1LDYg
KzM1LDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQgOiBXZWJD
b3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdlYk5vZGVIaWdobGlnaHQoV2ViVmlldyopOwogICAgIH5XZWJOb2Rl
SGlnaGxpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0
aW9uQ2VudGVyLmNwcAppbmRleCA3YmQ5ODg5NjExMWMzYjNmZTZmZTU0ZjBhMjQ3OTY2MDZiMjJh
NzVmLi45MjUzMmRiZGNhNDFiODUzMWU5MTY4Y2RkZGUzMWI1N2E3ZjQ1NmI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAgdHlwZWRlZiBPYmplY3RPYnNlcnZlckxpc3Q6Oml0ZXJhdG9yIE9ic2VydmVy
TGlzdEl0ZXJhdG9yOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgT2JqZWN0T2JzZXJ2ZXJMaXN0
PiBNYXBwZWRPYnNlcnZlcnM7CiAKIHN0cnVjdCBXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgTWFwcGVkT2JzZXJ2
ZXJzIG1fbWFwcGVkT2JzZXJ2ZXJzOwogfTsKIApAQCAtNTMsNyArNTQsNyBAQCBzdHJ1Y3QgV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZSB7CiBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJO
b3RpZmljYXRpb25DZW50ZXI6Om1fZGVmYXVsdENlbnRlciA9IDA7CiAKIFdlYk5vdGlmaWNhdGlv
bkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKLSAgICA6IGQoc3RkOjptYWtlX3VuaXF1
ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQorICAgIDogZChtYWtlVW5pcXVlPFdl
Yk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuaAppbmRleCAzODll
OThjN2Q5ZmRjYTMwMzE2MDE0ZjlmMWQxZjYyMGEzNDllZjJmLi5mMTQ5ODEyMmQ4ZGUzYzMzNzMy
NTQ0OGJlMzkxNDQyNGVjNzYwMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJOb3RpZmljYXRpb25DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJOb3RpZmljYXRpb25DZW50ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogc3RydWN0IFdlYk5vdGlm
aWNhdGlvbkNlbnRlclByaXZhdGU7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNlbnRlciBmaW5h
bCA6IHB1YmxpYyBJV2ViTm90aWZpY2F0aW9uQ2VudGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBjcmVh
dGVJbnN0YW5jZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDk3NjE0
OGUzM2Y3NDQ2ZDdjMzg0OTk1OWQ2Y2Y3M2RlZjQ4ZjY3ZmYuLjlhNjEwNzllYmU1ZDM5MGEzZWM0
OWZjY2QwODY0ZDk3MzE2NGEyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBA
IC0xODgwLDcgKzE4ODAsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBt
ZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgICAgICBtb3VzZUV2ZW50
LnNldENsaWNrQ291bnQoZ2xvYmFsQ2xpY2tDb3VudCk7CiAgICAgICAgIGhhbmRsZWQgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLm1vdXNlTW92ZWQobW91c2VFdmVudCk7CiAg
ICAgICAgIGlmICghbV9tb3VzZU91dFRyYWNrZXIpIHsKLSAgICAgICAgICAgIG1fbW91c2VPdXRU
cmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxUUkFDS01PVVNFRVZFTlQ+KCk7CisgICAgICAgICAg
ICBtX21vdXNlT3V0VHJhY2tlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFRS
QUNLTU9VU0VFVkVOVD4oKTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5jYlNpemUg
PSBzaXplb2YoVFJBQ0tNT1VTRUVWRU5UKTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2Vy
LT5kd0ZsYWdzID0gVE1FX0xFQVZFOwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXItPmh3
bmRUcmFjayA9IG1fdmlld1dpbmRvdzsKQEAgLTY3OTQsNyArNjc5NCw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6cmVnaXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlwZShfSW5fIEJTVFIgbWltZVR5cGUpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBpZiAoIW1fZW1iZWRkZWRWaWV3TUlNRVR5
cGVzKQotICAgICAgICBtX2VtYmVkZGVkVmlld01JTUVUeXBlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBtX2VtYmVkZGVkVmlld01JTUVUeXBlcyA9IG1h
a2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogCiAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlw
ZXMtPmFkZCh0b1N0cmluZyhtaW1lVHlwZSkpOwogICAgIHJldHVybiBTX09LOwpAQCAtNjg5NCw3
ICs2ODk0LDcgQEAgdm9pZCBXZWJWaWV3OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudChIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQKICAgICAgICAgQVNTRVJUKCFtX2Z1
bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwogICAgIH0KIAotICAgIG1fZnVsbFNjcmVlblZpZGVv
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcj4o
KTsKKyAgICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI+KCk7CiAgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5z
ZXRWaWRlb0VsZW1lbnQoJnZpZGVvRWxlbWVudCk7CiAgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250
cm9sbGVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKICNlbmRpZgpAQCAtNjk0Niw3ICs2OTQ2LDcgQEAg
SFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1l
LCBfSW5fb3B0XyBJV2ViU2NyaXB0V28KICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAg
IFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQq
PihpV29ybGQpOwotICAgIGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNj
cmlwdD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRl
bGlzdENvdW50KSwKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+
KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RD
b3VudCksCiAgICAgICAgIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQp
LCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9j
dW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgIGluamVjdGVkRnJhbWVz
ID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRv
cEZyYW1lT25seSk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRV
c2VyU2NyaXB0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKQEAgLTY5NzMs
NyArNjk3Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9J
bl8gQlNUUiBncm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0PFdl
YlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9y
KHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJs
YWNrbGlzdENvdW50KSwKKyAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHls
ZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hp
dGVsaXN0Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwK
ICAgICAgICAgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJ
bkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwog
ICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQo
d29ybGQtPndvcmxkKCksIFdURk1vdmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1
bWVudHMpOwogICAgIHJldHVybiBTX09LOwpAQCAtNzIzNyw3ICs3MjM3LDcgQEAgdm9pZCBXZWJW
aWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGJvb2wgYWNjZWxlcmF0ZWQpCiAgICAgfQog
I2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCkKLSAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9
IG1ha2VVbmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKICAgICBt
X2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJhdGVkOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvSGVhcC5oCmluZGV4IGVlY2E3MzlkMmIzOTRlODYwMzUxYmExYjQ2NGRlNTQ3
OGI5YmIxNjcuLmRiMzZlYjlkZWQyYjllMGY1ZjZlZjQwZGI2YzY5OTE5YTczMDZkOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvSGVhcC5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzogXAogICAgIFwK
ICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2
b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApID0gZGVsZXRlOyBcCit0eXBlZGVmIGludCBf
X2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJpdmF0ZTogXAogdHlwZWRlZiBpbnQgX19tYWtlQmlz
b01hbGxvY2VkTWFjcm9TZW1pY29sb25pZmllcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hl
YXBJbmxpbmVzLmgKaW5kZXggYzA0NGQ3NzNiODc5YTY2ZGZhZGQyZTJjYTMxNWVlZWEzNzZmZmE0
YS4uM2FhMWQyMDk1MWRiZjMzNjRlN2QxNmRkMjM2NDNkMGNkOTdmNmY0YyAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaApAQCAtMTIzLDYgKzEyMyw3IEBAIHB1YmxpYzog
XAogICAgIFwKICAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7
IFwKICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIHApID0gZGVsZXRlOyBcCit0eXBl
ZGVmIGludCBfX2Zhc3RBbGxvY2F0ZWRDbGFzczsgXAogcHJpdmF0ZTogXAogdHlwZWRlZiBpbnQg
X19tYWtlQmlzb01hbGxvY2VkSW5saW5lTWFjcm9TZW1pY29sb25pZmllcgogCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmE1OWE3MjVhMGQ3MWNl
NzBjMDFiMWEwODc4NmJmYTIyZmY4NDMxNy4uZGM2YWY3MDA0MDZjZTBmN2UxOGIyOGUyNmUxNzFm
Yzg1MDQyZmNlNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAxOS0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBl
bnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAg
ICAgIChhZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2spOgorICAgICAgICAoc2V0V2lsbFNlbmRSZXF1
ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBY2N1bW11
bGF0ZUxvZ3NGb3JDaGFubmVsKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnJ1blVJU2NyaXB0KToK
KyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChkdW1wRnJhbWVzQXNU
ZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5tbToKKyAgICAgICAgKGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0Fu
ZEV2ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHA6
CisgICAgICAgIChEUlREYXRhT2JqZWN0OjpTZXREYXRhKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdh
dGU6OkZyYW1lTG9hZERlbGVnYXRlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVUlE
ZWxlZ2F0ZS5jcHA6CisgICAgICAgIChEUlRVbmRvTWFuYWdlcjo6RFJUVW5kb01hbmFnZXIpOgor
ICAgICAgICAoVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSk6CisgICAgICAgIChVSURlbGVnYXRlOjpy
ZXNldFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci93cGUvbWFpbi5jcHA6Cisg
ICAgICAgIChjcmVhdGVWaWV3QmFja2VuZCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBU
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaDoKKyAgICAg
ICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaDoKKyAgICAg
ICAgKiBUZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9KYXZhU2NyaXB0VGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KU1Rlc3Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
UGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhw
ZWN0ZWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1h
cC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnRlc3RNb3ZpbmdVc2luZ0Vuc3VyZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0
ZXN0TW92aW5nVXNpbmdBZGQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hh
c2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5Mb2NrVGVzdCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vh
a1B0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkNBUmluZ0J1ZmZlclRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjcmVhdGVUZXN0VmFsdWUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9y
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OldlYktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpXZWJLaXQyV2lsbExvYWRUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxl
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Rm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRs
ZVRlc3Q6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcDoKKyAgICAgICAgKHNlcnZlckNhbGxi
YWNrKToKKyAgICAgICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Qcm94eUhUVFBTKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKGFwcGx5V29ya2Fyb3VuZFRvQWxsb3dX
cml0aW5nQXR0cmlidXRlZFN0cmluZ3NUb0l0ZW1Qcm92aWRlcnMpOgorICAgICAgICAoLVtUZXN0
V0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjphZGRUb1dpbmRvdzpdKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmg6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOgorICAgICAg
ICAoLVtUZXN0Rm9udE9wdGlvbnMgaW5pdFdpdGhGb250T3B0aW9uczpdKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZENyZWF0ZVBhZ2UpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1X
ZWJWaWV3Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaDoK
KyAgICAgICAgKFdUUjo6dG9TVEQpOgorICAgICAgICAoV1RSOjp0b1dURlN0cmluZyk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OmNyZWF0
ZVRlc3RVUkwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cnVuVGVzdCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldERl
ZmF1bHRDYWxlbmRhclR5cGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50
U2VuZGVyUHJveHlHdGsuY3BwOgorICAgICAgICAoV1RSOjpnZXRHREtLZXlTeW1Gb3JLZXlSZWYp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEtleWJvYXJkSW5w
dXRNb2RlSWRlbnRpZmllcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRT
ZW5kZXJQcm94eS5tbToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3du
KToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCk6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdUUjo6d3BlS2V5
U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiB3cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuaDoKKwog
MjAxOS0wOC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdKFJFR1JFU1NJT046IHIyMDA0ODcpOiBXZWJLaXQuUmVxdWVzdEFjdGl2
YXRlZEVsZW1lbnRJbmZvRm9yUm90YXRlZEltYWdlIGZhaWxzIG9uIGlPUyAxMwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKaW5kZXggZTczYTJjMjdk
MTc3MjJkMTI0ZDE0MjUxYjkwYjY1NTIxMDg1YTMxYy4uMWJkZjFjNDMwYmM1MGJlMzg0ZmFjY2U1
MGRmZmE1MjhkYTQ4NTZhNSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oCkBAIC00MSw2ICs0MSw3IEBACiAjZW5kaWYKIAogY2xhc3MgQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CiAgICAgfkFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9HQ0NvbnRyb2xsZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxlci5oCmluZGV4IDc5Y2VhZmM5ZjJl
OWFlNzIyMTAxMzgwMDQyN2IxMzZkNWQ2YTJmM2MuLjY0MjQzODRkZjUzMGU4YzFmZGFlOGZiNjEz
MTFiZjBhZGM0YTZhOGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0dDQ29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxlci5oCkBAIC0zMCw4
ICszMCwxMCBAQAogI2RlZmluZSBHQ0NvbnRyb2xsZXJfaAogCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiBjbGFz
cyBHQ0NvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEdDQ29udHJvbGxlcigpOwogICAgIH5HQ0NvbnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdFJ1bm5lci5jcHAKaW5kZXggOTBjNjRjMzYxNGNkYzQyZGI2ZjQ5NDJiZGUxYWQxMzBmZDFm
ZDljYi4uZDJiZjJlODJhY2Q2NDVjNTc4ZDYyZmM2YjcwYzg3YmJhOWZlNmNmMyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTM2MywxMSArMzYzLDExIEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuCiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAogICAgIHNpemVfdCBtYXhM
ZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUob3JpZ2luLmdldCgpKTsK
LSAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5n
dGggKyAxKTsKKyAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0
cmluZyhvcmlnaW4uZ2V0KCksIG9yaWdpbkJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAK
ICAgICBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoZGVzdGlu
YXRpb24uZ2V0KCkpOwotICAgIGF1dG8gZGVzdGluYXRpb25CdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBkZXN0aW5hdGlvbkJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7
CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSwgZGVzdGluYXRp
b25CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCiAgICAgVGVzdFJ1bm5lciogY29udHJv
bGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOwpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0V2lsbFNl
bmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlMKICAg
ICBBU1NFUlQoISpleGNlcHRpb24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5n
R2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShoZWFkZXIuZ2V0KCkpOwotICAgIGF1dG8gaGVhZGVy
QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1
dG8gaGVhZGVyQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltd
PihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGhlYWRlci5nZXQo
KSwgaGVhZGVyQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFRlc3RSdW5uZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKQEAgLTIzOTQsNyArMjM5NCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UpCiB2b2lk
IFRlc3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoSlNTdHJpbmdSZWYgY2hh
bm5lbCkKIHsKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENT
dHJpbmdTaXplKGNoYW5uZWwpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxj
aGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dl
dFVURjhDU3RyaW5nKGNoYW5uZWwsIGJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAg
ICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoeyBidWZmZXIu
Z2V0KCkgfSk7CkBAIC0yNDY0LDcgKzI0NjQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJ1blVJU2Ny
aXB0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTVmFsdWVSZQog
ICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKGNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKIAogICAg
IGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXVFI6OlVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOworICAgICAgICBtX1VJ
U2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdUUjo6VUlT
Y3JpcHRDb250ZXh0PigqdGhpcyk7CiAKICAgICBTdHJpbmcgc2NyaXB0U3RyaW5nKEpTU3RyaW5n
R2V0Q2hhcmFjdGVyc1B0cihzY3JpcHQpLCBKU1N0cmluZ0dldExlbmd0aChzY3JpcHQpKTsKICAg
ICBtX1VJU2NyaXB0Q29udGV4dC0+cnVuVUlTY3JpcHQoc2NyaXB0U3RyaW5nLCBjYWxsYmFja0lE
KTsKQEAgLTI1MjEsNyArMjUyMSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmls
ZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZmlsZXNWYWx1ZSkKIAogICAgICAg
ICBhdXRvIGZpbGUgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGZpbGVWYWx1
ZSwgbnVsbHB0cikpOwogICAgICAgICBzaXplX3QgZmlsZUJ1ZmZlclNpemUgPSBKU1N0cmluZ0dl
dE1heGltdW1VVEY4Q1N0cmluZ1NpemUoZmlsZS5nZXQoKSkgKyAxOwotICAgICAgICBhdXRvIGZp
bGVCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUpOworICAg
ICAgICBhdXRvIGZpbGVCdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxj
aGFyW10+KGZpbGVCdWZmZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhm
aWxlLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpLCBmaWxlQnVmZmVyU2l6ZSk7CiAKICAgICAgICAg
bV9vcGVuUGFuZWxGaWxlcy5wdXNoX2JhY2soZmlsZUJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMmU5Mzk3ZmY1OTQ5MjUwMGZi
MDg2ODcxYzhhZjdjNmYxNjY5YWJmNC4uMTMwNjhjYWUwMzUzMmJkOGYyNWZkNGJkYmM1MjVmNTJj
NDIwMGI5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpA
QCAtMTUzNSw3ICsxNTM1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVzQXNUZXh0KFdl
YkZyYW1lICpmcmFtZSkKICAgICAvLyB0aGUgcmVzdWx0IHdpdGhvdXQgYW55IGNvbnZlcnNpb24u
CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZiA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKWlubmVyVGV4dCkpOwog
ICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXpl
KHN0cmluZ1JlZi5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNo
YXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5n
dGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KHN0cmluZ1JlZi5nZXQoKSwgYnVm
ZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIiVAXG4i
LCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGJ1ZmZlci5nZXQoKSwgc3RyaW5n
TGVuZ3RoIC0gMSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggNDYxYmQzZGYz
ZWJiMjYwM2FjMzIxODI4ODIxOGRkOGY2OTE2OGZmZC4uM2JlMzMyMjFkNmIzZWJjMzU2ZDUxZTMz
NGEyNGQ5MjlhZTI1M2E5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTU2OCw3ICs1NjgsNyBAQCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3
aXp6bGVyRm9yVgogewogICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBj
bGFzc11dKQogICAgICAgICB2aWV3ID0gWyhXZWJIVE1MVmlldyAqKXZpZXcgX2hpdFZpZXdGb3JF
dmVudDpldmVudF07Ci0gICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Njcm9sbGVy
IGNsYXNzXV0gPyBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50
IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0
PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5VTEw7CisgICAgcmV0
dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Njcm9sbGVyIGNsYXNzXV0gPyBtYWtlVW5pcXVl
PENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRN
b3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRN
b3VzZUJ1dHRvbnMpKSA6IE5VTEw7CiB9CiAKIHN0YXRpYyBOU1VJbnRlZ2VyIHN3aXp6bGVkRXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EUlREYXRhT2JqZWN0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRh
T2JqZWN0LmNwcAppbmRleCBlZjJkMmVmYjg1OWY0YjhhMjJmMzBjNDY3YWNlMWY4YWFkMTU3YTRk
Li5jZGZlOGFjYjQ2OGM3NGQwYWUwODRjZjg3NmQ1MzRmZjFlM2JhNTdjIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCkBAIC00OCw2ICs0OCw3IEBAIEZPUk1B
VEVUQyogY2ZVcmxXRm9ybWF0KCkKIH0KIAogY2xhc3MgV0NFbnVtRm9ybWF0RXRjIGZpbmFsIDog
cHVibGljIElFbnVtRk9STUFURVRDIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBXQ0VudW1Gb3JtYXRFdGMoY29uc3QgVmVjdG9yPEZPUk1BVEVU
Qz4mIGZvcm1hdHMpOwogICAgIGV4cGxpY2l0IFdDRW51bUZvcm1hdEV0Yyhjb25zdCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEZPUk1BVEVUQz4+JiBmb3JtYXRzKTsKQEAgLTI0OSw3ICsyNTAsNyBA
QCBTVERNRVRIT0RJTVAgRFJURGF0YU9iamVjdDo6U2V0RGF0YShfSW5fIEZPUk1BVEVUQyogcGZv
cm1hdGV0YywgX0luXyBTVEdNRURJVU0qCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVt
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0byBmb3JtYXRldGMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZPUk1BVEVUQz4oKTsKKyAgICBhdXRvIGZvcm1hdGV0YyA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1BVEVUQz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBwU3RnTWVkKG5ldyBTVEdNRURJVU0pOwog
CiAgICAgWmVyb01lbW9yeShmb3JtYXRldGMuZ2V0KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5oCmluZGV4IGI5NTJiMDgxYWZlYWEz
OTE5MjdhZDJjYWI3ZGQxOGU4NzkzMzc0MjEuLjE2YzY0MjMwOGU1NGMxNTVhZTM2NGQyNzMwMWIy
ODI1MzhmYmQ1OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRh
T2JqZWN0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuaApA
QCAtNDUsNiArNDUsNyBAQCBzdHJ1Y3QgU3RnTWVkaXVtRGVsZXRlciB7CiB9OwogCiBjbGFzcyBE
UlREYXRhT2JqZWN0IGZpbmFsIDogcHVibGljIElEYXRhT2JqZWN0IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIENvcHlNZWRpdW0oU1RHTUVESVVNKiBw
TWVkRGVzdCwgU1RHTUVESVVNKiBwTWVkU3JjLCBGT1JNQVRFVEMqIHBGbXRTcmMpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblBy
ZXNlbnRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRp
b25QcmVzZW50ZXIuaAppbmRleCA3MGJkNDcwZTNkY2MwZTYzMGY2ZDUxYzJlY2E4YjQyM2RkM2Y5
M2Q3Li40NmQ4NDVlMzAyNzk4YzNlMzIzOGYyYWJkMTc1NTdmZDRhNTlkZGE2IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9u
UHJlc2VudGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3aW5kZWYuaD4KIAogY2xh
c3MgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlciBmaW5hbCA6IHB1YmxpYyBJV2ViRGVz
a3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0RSVERyb3BTb3VyY2UuaAppbmRleCBkOWVlN2QwMTk2NTYzNmUx
MzMxNjg3N2NlOTM0YmM0YzZkNzAyMWNjLi45YWNhNDY0M2ZkYzIxYWU4MTU5YzVlYzY5ZmVkZWM2
OTc5OTFkMGY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNv
dXJjZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREcm9wU291cmNlLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKIGNsYXNzIERSVERyb3BTb3Vy
Y2UgZmluYWwgOiBwdWJsaWMgSURyb3BTb3VyY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCk7ICAgICAgICAKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RyYWdnaW5nSW5mby5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RyYWdnaW5nSW5mby5oCmluZGV4IDAyYWRhYjM2MzQ2
MjQ4YjFkYmE2NGNjZjBjNjdiZGFkNzdkMzU5ZGIuLjA5MDdkNTQ4ZDdjMzA2Y2M2ZjExYWM4NjRj
OWY0ZmMwYTM5ZThlZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EcmFn
Z2luZ0luZm8uaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHJhZ2dpbmdJbmZvLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxvYmppZGwuaD4KIAogY2xhc3MgRHJhZ2dpbmdJ
bmZvIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEcmFnZ2lu
Z0luZm8oSURhdGFPYmplY3QqIG9iamVjdCwgSURyb3BTb3VyY2UqIHNvdXJjZSkKICAgICAgICAg
OiBtX29iamVjdChvYmplY3QpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RWRpdGluZ0RlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRWRpdGluZ0RlbGVn
YXRlLmgKaW5kZXggNGYxNzY3YzZlZTRiMjUyYjg4OGU5MGE1YmY5ZjYwNjg3OGUxY2RlZi4uYjUx
NzM5ZjVjZGEzYjlhYjQwN2NkNzA5OTRiNzk2YzI0YWY1MzRjMSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
PFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KIAogY2xhc3MgX19kZWNsc3BlYyh1dWlkKCIyNjVEQ0Q0
Qi03OUMzLTQ0YTItODRCQy01MTFDM0VEQUJENkYiKSkgRWRpdGluZ0RlbGVnYXRlIGZpbmFsIDog
cHVibGljIElXZWJFZGl0aW5nRGVsZWdhdGUyLCBwdWJsaWMgSVdlYk5vdGlmaWNhdGlvbk9ic2Vy
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBFZGl0aW5n
RGVsZWdhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50
U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVudFNlbmRlci5jcHAKaW5k
ZXggYWRjYjg0N2UzNzJiMzJmNzdkMjBiZTM4YTlkNWNiZGFiZjU3ZjVlMS4uM2FiYjk1ZGMwMzky
MGY0ZTc4MjRmMDY3ODBlODMxZjA1YzUwOGRhNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0V2ZW50U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RXZlbnRTZW5kZXIuY3BwCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRpYyBpbnQgdGltZU9mZnNldDsK
IHN0YXRpYyBQT0lOVCBsYXN0TW91c2VQb3NpdGlvbjsKIAogc3RydWN0IERlbGF5ZWRNZXNzYWdl
IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgTVNHIG1zZzsKICAg
ICB1bnNpZ25lZCBkZWxheTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmNwcAppbmRleCBjODBkZjFiZTVmMmRlNDdkM2I4MzE2MzdlZjZlOWZiY2Q5
MzRjOGU2Li4xMWM5MzM5YjE2ZDgwNGQyYzIwMWM5MzI5ZjRhOGMzNTQ0MmE4M2NiIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTcyLDkg
KzcyLDkgQEAgc3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KElXZWJGcmFt
ZSogd2ViRnJhbWUpCiB9CiAKIEZyYW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSgp
Ci0gICAgOiBtX2djQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEdDQ29udHJvbGxlcj4oKSkK
LSAgICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcj4oKSkKLSAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCisgICAgOiBtX2djQ29udHJvbGxlciht
YWtlVW5pcXVlPEdDQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4oKSkKKyAgICAsIG1fdGV4dElu
cHV0Q29udHJvbGxlcihtYWtlVW5pcXVlPFRleHRJbnB1dENvbnRyb2xsZXI+KCkpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKaW5kZXggMmNl
MmU5ZDE1NzU3NGU5MWFiZTZhMTQ3ZTI4Y2U4NWEzNjI4MWRjMi4uZjhkZjhjMzNiZmE0YTkwZWNk
NTNmOTEzODExZjAwYWMxNzIwMzkxNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Zy
YW1lTG9hZERlbGVnYXRlLmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgVGV4dElucHV0Q29udHJv
bGxlcjsKIGNsYXNzIEdDQ29udHJvbGxlcjsKIAogY2xhc3MgRnJhbWVMb2FkRGVsZWdhdGUgOiBw
dWJsaWMgSVdlYkZyYW1lTG9hZERlbGVnYXRlLCBwdWJsaWMgSVdlYkZyYW1lTG9hZERlbGVnYXRl
UHJpdmF0ZTIsIHB1YmxpYyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZyYW1lTG9hZERlbGVnYXRlKCk7CiAgICAg
dmlydHVhbCB+RnJhbWVMb2FkRGVsZWdhdGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9I
aXN0b3J5RGVsZWdhdGUuaAppbmRleCBiYTZhMWFmNDczNjRmMTg5YzA5YzQ2Nzc3ZWEzMzJjNDlj
ZDE5MzNlLi5hYWQxODE1ZDZmOTQ4YjhhMmEwZGQxNDVkYTVjZjc3M2UyMDMwNDVkIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0hpc3RvcnlEZWxlZ2F0ZS5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSA8V2ViS2l0TGVnYWN5L1dlYktpdC5oPgogCiBjbGFzcyBIaXN0b3J5RGVsZWdh
dGUgOiBwdWJsaWMgSVdlYkhpc3RvcnlEZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgSGlzdG9yeURlbGVnYXRlKCk7CiAgICAgdmlydHVhbCB+SGlz
dG9yeURlbGVnYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmgKaW5kZXggYjhlYjg5MGE0Zjg2N2Nk
ZTJiY2FiMzhjZmJlYzBiMDFkN2E4Y2U5ZS4uNDRmOTJjYWVlZDM1OGQ0YWMzODBlMzRiYzU3M2I2
YzI4NjgzNjgwNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuaApAQCAtMzIsNiArMzIsNyBAQAogdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIFVMT05HOwogCiBzdHJ1Y3QgTUQ1X0NUWCB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFVMT05HIGlbMl07CiAgICAgVUxPTkcgYnVm
WzRdOwogICAgIHVuc2lnbmVkIGNoYXIgaW5bNjRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
UG9saWN5RGVsZWdhdGUuaAppbmRleCBlOTgzODY1MDc2NTIyMGVmZjIxYmMxMDg5NDg3YWJkOTNi
ZmEwNmEwLi42OTMyMjE0NTM2NzFlZmJhYTk5MTM4ZTI0MjEwODRjZjUyMmNhOThkIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUG9saWN5RGVsZWdhdGUuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vUG9saWN5RGVsZWdhdGUuaApAQCAtMzQsNiArMzQsNyBAQAog
Y2xhc3MgVGVzdFJ1bm5lcjsKIAogY2xhc3MgUG9saWN5RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMg
SVdlYlBvbGljeURlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBQb2xpY3lEZWxlZ2F0ZSgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oCmluZGV4IDExYWViNzgwODNkYjUzY2Q4ZTlmNTU5NWQ4
MThjMDc4NzI1MmY5NWIuLmUxN2I1YzQ0OGNkMmM3MjM4MGE0OGY1OTY3NTU3NzZmNmEyMzYwZjAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogY2xhc3MgUmVz
b3VyY2VMb2FkRGVsZWdhdGUgOiBwdWJsaWMgSVdlYlJlc291cmNlTG9hZERlbGVnYXRlLCBwdWJs
aWMgSVdlYlJlc291cmNlTG9hZERlbGVnYXRlUHJpdmF0ZTIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc291cmNlTG9hZERlbGVnYXRlKCk7CiAgICAgdmly
dHVhbCB+UmVzb3VyY2VMb2FkRGVsZWdhdGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9UZXh0SW5wdXRDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVGV4dElucHV0Q29udHJvbGxlci5oCmluZGV4IDI1YzM0OGU4MTEwYWZlMTE3ZGU0ZDhjOTVj
NzJiYmI1MzZmNjE0YjUuLjI5ZjAzOGJlMmRkYjUwZTlmYWU1MzBlMWM2ZDEzYzFkNDZmOTk3OTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXh0SW5wdXRDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1RleHRJbnB1dENvbnRyb2xsZXIuaApA
QCAtMzQsOCArMzQsMTAgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVSZWYuaD4KICNpbmNsdWRlIDx2ZWN0
b3I+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogY2xhc3MgVGV4dElucHV0Q29udHJv
bGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBt
YWtlV2luZG93T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vVUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0
ZS5jcHAKaW5kZXggZjBhZGJjZTQ3OTZmYWJmNGYwZDQyYjI3MTE2MzM3MDFhYzc4MTMxNC4uOGY4
MmYwZDkyNmMwYWQ2OTYxMDFhNWIxMzU0ZTdlNzBmNDM4NDQzZiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9VSURlbGVnYXRlLmNwcApAQCAtNDcsNiArNDcsNyBAQAogdXNpbmcgc3RkOjp3c3Ry
aW5nOwogCiBjbGFzcyBEUlRVbmRvT2JqZWN0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBEUlRVbmRvT2JqZWN0KElXZWJVbmRvVGFyZ2V0KiB0YXJnZXQsIEJT
VFIgYWN0aW9uTmFtZSwgSVVua25vd24qIG9iaikKICAgICAgICAgOiBtX3RhcmdldCh0YXJnZXQp
CkBAIC03MSw2ICs3Miw3IEBAIGNsYXNzIERSVFVuZG9PYmplY3QgewogfTsKIAogY2xhc3MgRFJU
VW5kb1N0YWNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3VuZG9WZWN0b3IuaXNFbXB0eSgpOyB9CiAg
ICAgdm9pZCBjbGVhcigpIHsgbV91bmRvVmVjdG9yLmNsZWFyKCk7IH0KQEAgLTgzLDYgKzg1LDcg
QEAgY2xhc3MgRFJUVW5kb1N0YWNrIHsKIH07CiAKIGNsYXNzIERSVFVuZG9NYW5hZ2VyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEUlRVbmRvTWFuYWdlcigp
OwogCkBAIC0xMDEsOCArMTA0LDggQEAgY2xhc3MgRFJUVW5kb01hbmFnZXIgewogfTsKIAogRFJU
VW5kb01hbmFnZXI6OkRSVFVuZG9NYW5hZ2VyKCkKLSAgICA6IG1fcmVkb1N0YWNrKHN0ZDo6bWFr
ZV91bmlxdWU8RFJUVW5kb1N0YWNrPigpKQotICAgICwgbV91bmRvU3RhY2soc3RkOjptYWtlX3Vu
aXF1ZTxEUlRVbmRvU3RhY2s+KCkpCisgICAgOiBtX3JlZG9TdGFjayhtYWtlVW5pcXVlPERSVFVu
ZG9TdGFjaz4oKSkKKyAgICAsIG1fdW5kb1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigp
KQogewogfQogCkBAIC0xNDYsNyArMTQ5LDcgQEAgdm9pZCBEUlRVbmRvTWFuYWdlcjo6dW5kbygp
CiB9CiAKIFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUoKQotICAgIDogbV91bmRvTWFuYWdlcihzdGQ6
Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpKQorICAgIDogbV91bmRvTWFuYWdlcihtYWtl
VW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpKQogICAgICwgbV9kZXNrdG9wTm90aWZpY2F0aW9ucyhu
ZXcgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcikKIHsKICAgICBtX2ZyYW1lLmJvdHRv
bSA9IDA7CkBAIC0xNTcsNyArMTYwLDcgQEAgVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCiAKIHZv
aWQgVUlEZWxlZ2F0ZTo6cmVzZXRVbmRvTWFuYWdlcigpCiB7Ci0gICAgbV91bmRvTWFuYWdlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb01hbmFnZXI+KCk7CisgICAgbV91bmRvTWFuYWdlciA9
IG1ha2VVbmlxdWU8RFJUVW5kb01hbmFnZXI+KCk7CiB9CiAKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuaAppbmRleCA3ODI1ODkwMzc3
MDA1NWFjOTI0NjYxOTFhNWViOGRlZmY0MjUxNGJiLi5mNGY4ZDVkMjc2MzljY2I3NDQ3NmFjZWNm
MTVmMjcxZGIwZmI2ZTRjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlE
ZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmgKQEAg
LTM3LDYgKzM3LDcgQEAgY2xhc3MgRFJUVW5kb01hbmFnZXI7CiBjbGFzcyBEUlREZXNrdG9wTm90
aWZpY2F0aW9uUHJlc2VudGVyOwogCiBjbGFzcyBVSURlbGVnYXRlIGZpbmFsIDogcHVibGljIElX
ZWJVSURlbGVnYXRlMiwgSVdlYlVJRGVsZWdhdGVQcml2YXRlMyB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVUlEZWxlZ2F0ZSgpOwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaCBi
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5o
CmluZGV4IDRlMDIwZjE5NmNkMDMzZDYxZWUwZTYyOGY2YTFlNTljYTFjMzM0NTguLjBiODRkMmQ0
NTQ1NTgzZGU5ZmMwZGVjMTJhNGFhODhhNjU5ZWQxOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCisrKyBiL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udGV4dC5oCkBAIC02
OCw2ICs2OCw3IEBAIHR5cGVkZWYgZW51bSAgewogfSBDYWxsYmFja1R5cGU7CiAKIGNsYXNzIFVJ
U2NyaXB0Q29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVUlTY3JpcHRDb250ZXh0KTsKIHB1YmxpYzoKICAgICBVSVNjcmlwdENv
bnRleHQoVUlTY3JpcHRDb250ZXh0RGVsZWdhdGUmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmgKaW5kZXggMjhkYjEwYTQ3OTk2MzBj
NjRjNTVkMDc4NmMwMGVlMDk0ODkxNDVlMi4uMzliNGU1ZWE3MTgzNjg4Y2RlYzliZWZjYzk2NGNl
ODkzYTU0M2YwNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFz
c01ldGhvZFN3aXp6bGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFz
c01ldGhvZFN3aXp6bGVyLmgKQEAgLTI2LDkgKzI2LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgPG9iamMvcnVudGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIGNsYXNzIENsYXNzTWV0aG9kU3dpenpsZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENs
YXNzTWV0aG9kU3dpenpsZXIpOwogcHVibGljOgogICAgIENsYXNzTWV0aG9kU3dpenpsZXIoQ2xh
c3MsIFNFTCwgSU1QKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2Ev
SW5zdGFuY2VNZXRob2RTd2l6emxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9J
bnN0YW5jZU1ldGhvZFN3aXp6bGVyLmgKaW5kZXggYjhhMGIwYjE4ZDEzMWVjYzk5YjI2YTM5MWM4
OTBmOWY2YzZjMDcyZS4uNjI0NzRkN2NkOTc3Nzk4YzViYmVjYWY2NTZhNjI2NDg1NWFjZjg5YiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1ldGhvZFN3
aXp6bGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyLmgKQEAgLTI2LDkgKzI2LDExIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PG9iamMvcnVudGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKIGNsYXNzIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Rh
bmNlTWV0aG9kU3dpenpsZXIpOwogcHVibGljOgogICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIo
Q2xhc3MsIFNFTCwgSU1QKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRl
cnMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaAppbmRleCBmOWVhMjI0MDI2MTUw
ZDhlMWFjNmJiNzYxNWI2ZGUzODkwYWY2NzBlLi5hYjVjNTJmNzVkMWFjNmFmOTYwYWMxNGNhNzBi
NWNiNzRmYTM2Mjg4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oCkBAIC0yNyw2ICsyNyw4IEBACiAj
aWZuZGVmIENvdW50ZXJzX2gKICNkZWZpbmUgQ291bnRlcnNfaAogCisjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KKwogc3RydWN0IENvcHlNb3ZlQ291bnRlciB7CiAgICAgc3RhdGljIHVuc2ln
bmVkIGNvbnN0cnVjdGlvbkNvdW50OwogICAgIHN0YXRpYyB1bnNpZ25lZCBjb3B5Q291bnQ7CkBA
IC01MCw2ICs1Miw3IEBAIHN0cnVjdCBDb3B5TW92ZUNvdW50ZXIgewogCiAKIHN0cnVjdCBDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkNvdW50OwogICAgIHN0YXRp
YyB1bnNpZ25lZCBkZXN0cnVjdGlvbkNvdW50OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlw
dFRlc3QuY3BwCmluZGV4IDIxMzZlOThkOGViYjg3NWQ1OTdmYzZlMDdjN2IwMWVkNWI4NGFlMTYu
LjZhMjMzNjMyOTQxYWNmNjA3MDU5NDk0MjY0MDFiMzI3MzM3YzcwODEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwCkBAIC03NSw3ICs3NSw3IEBAIDo6dGVzdGluZzo6QXNz
ZXJ0aW9uUmVzdWx0IHJ1bkpTVGVzdChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBXS1BhCiAgICAgVXRpbDo6cnVuKCZjb250ZXh0LmRpZEZpbmlzaCk7CiAKICAgICBzaXpl
X3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShjb250ZXh0
LmFjdHVhbFN0cmluZy5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIEpTU3RyaW5nR2V0VVRG
OENTdHJpbmcoY29udGV4dC5hY3R1YWxTdHJpbmcuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVy
U2l6ZSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbXBhcmVKU1Jlc3VsdChzY3JpcHQsIGJ1ZmZlci5n
ZXQoKSwgZXhwZWN0ZWRSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0
aWVzLmNwcAppbmRleCA4ZjhkNzY4YTUzYzI3NTFhMjQzZTA1OTVlMmMwYzBmNDQ1ZGQ5NmM4Li5i
YmJmZjcwOWU2N2QzNTliNGU0ODE3MWVkN2M0YzI0MDA4YTU2N2Y0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcApAQCAtNjksNyArNjksNyBAQCBXS0NvbnRleHRS
ZWYgY3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYg
dGVzdE5hbWUsIFdLVAogc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQogewog
ICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXpl
KHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVm
ZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0
cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAg
ICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGFkMmE3MzJkNTE5NDdiYmM3
YWZjNjRlMjdkNDIxNWNlMzI4N2RkZWUuLjBjMjdhNDYxNjQ1ZmJhMTJhNWM2OTVkOTMyNjQzMDUy
NmM0ZWYxMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiAr
MjYsOCBAQAogI2lmbmRlZiBQbGF0Zm9ybVdlYlZpZXdfaAogI2RlZmluZSBQbGF0Zm9ybVdlYlZp
ZXdfaAogCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKwogI2lmIFVTRShDRykKICNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgogI2VuZGlmCkBAIC02Myw2ICs2NSw3IEBA
IHR5cGVkZWYgdWludDMyX3QgV0tFdmVudE1vZGlmaWVyczsKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlQ29uZmln
dXJhdGlvblJlZik7CiAgICAgZXhwbGljaXQgUGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiwg
V0tQYWdlR3JvdXBSZWYgPSAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0V4cGVjdGVkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVj
dGVkLmNwcAppbmRleCA0YjEwYzg2YTJhYjczMmUxZWE2Mjc0ODRjYzc4OTQwZmI2Y2Q2ZTk2Li4y
YTA2ZjhiYTVjYTlmZWI0OTJhMzUyMmM1YzY1NTAxMzhkMjIzN2U1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCkBAIC00MDcsNiArNDA3LDcgQEAgVEVTVChX
VEZfRXhwZWN0ZWQsIGRlc3RydWN0b3JzKQogc3RhdGljIGludCBzbm93Zmxha2VzID0gMDsKIHN0
YXRpYyBpbnQgbWVsdGVkID0gMDsKIHN0cnVjdCBzbm93Zmxha2UgeworICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdm9pZCByZXNldCgpIHsgc25vd2ZsYWtl
cyA9IG1lbHRlZCA9IDA7IH0KICAgICBzbm93Zmxha2UoKSB7ICsrc25vd2ZsYWtlczsgfQogICAg
IH5zbm93Zmxha2UoKSB7ICsrbWVsdGVkOyB9CkBAIC00MTYsNyArNDE3LDcgQEAgVEVTVChXVEZf
RXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiB7CiAgICAgLy8gVW5pcXVlIHNub3dmbGFrZXMgY2Fubm90
IGJlIGNvcGllZC4KICAgICB7Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKHN0ZDo6
bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0
ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtl
cywgMSk7CiAgICAgICAgIEVYUEVDVF9FUShtZWx0ZWQsIDApOwogICAgIH0KQEAgLTQyNSw3ICs0
MjYsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJl
c2V0KCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFr
ZV91bmlxdWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQo
bWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBVbmV4cGVjdGVkPHN0ZDo6dW5pcXVl
X3B0cjxzbm93Zmxha2U+PiBjKFdURk1vdmUocykpOwogICAgICAgICBFWFBFQ1RfRVEoc25vd2Zs
YWtlcywgMSk7CiAgICAgICAgIEVYUEVDVF9FUShtZWx0ZWQsIDApOwpAQCAtNDQ2LDcgKzQ0Nyw3
IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIH07CiAKICAgICB7Ci0gICAg
ICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMoc3RkOjptYWtl
X3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
c25vd2ZsYWtlPiwgaW50PiBzKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAgcGxv
dyhXVEZNb3ZlKHMpLnZhbHVlKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywg
MSk7CkBAIC00NTQsNyArNDU1LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAg
ICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDxpbnQsIHN0
ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlx
dWU8c25vd2ZsYWtlPigpKSk7CisgICAgICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRy
PHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpKTsK
ICAgICAgICAgcGxvdyhXVEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEo
c25vd2ZsYWtlcywgMSk7CkBAIC00NjIsNyArNDYzLDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVu
aXF1ZV9wdHIpCiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBFeHBl
Y3RlZDx2b2lkLCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChz
dGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSkpOworICAgICAgICBFeHBlY3RlZDx2b2lkLCBz
dGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNu
b3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAgICAgfQog
ICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAppbmRleCA4NGRhNWVjM2ZmYzI0OGFjZGQ5ZTM2
MzMwMzhjNjlkYWU4OTEyMDk5Li43YjhmYWYyODhhYmMwN2NmYWY4YjUyNzEyMzhmNzZkMDEzMDEy
ZWU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRl
ZFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRT
ZXQuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1
ZVB0cktleSkKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4oKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAg
IEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9u
Q291bnQpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlx
dWVQdHJLZXlJbml0aWFsQ291bnQpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9w
dHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAg
YXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVl
UHRyKSwgMTIpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yOTgsNyArMjk4LDcgQEAgVEVTVChXVEZfSGFz
aENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhh
c2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAg
IGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5p
cXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBp
bnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92
ZSh1bmlxdWVQdHIpKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVk
U2V0LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENv
dW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0
byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCog
cHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVu
aXF1ZVB0cikpOwogCkBAIC0zMjMsNyArMzIzLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQs
IFVuaXF1ZVB0cktleV9HZXRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8
c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5p
cXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikp
OwogCkBAIC0zMzcsNyArMzM3LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0
cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVu
aXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0Owog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
ciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3Zl
KHVuaXF1ZVB0cikpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9IYXNoTWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3Bw
CmluZGV4IDFlMTYzZDM4OTk4ZTZiYWJmZmY1Mzg0MTNjY2EyOGFhNmQyOTg5ODIuLmE4MGNhNzQ5
NGE4ZjlhNzk2N2UxZTQ5NDZmZThjY2E2MzljYmI1OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hNYXAuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChXVEZfSGFzaE1h
cCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0
byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCiAgICAgRVhQRUNUX0VRKDF1
LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0y
MzAsNyArMjMwLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jh
d1BvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7
CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBh
dXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7
CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVu
aXF1ZVB0ciksIDIpOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5p
cXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8c3RkOjp1
bmlxdWVfcHRyPGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgp
OwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjU1LDcgKzI1NSw3
IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9HZXRVc2luZ1Jhd1BvaW50ZXIpCiB7
CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRv
IHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBw
dHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIp
OwogCkBAIC0yNjksNyArMjY5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X1Jl
bW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAg
IGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5n
ZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI4OSw3ICsy
ODksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfVGFrZVVzaW5nUmF3UG9pbnRl
cikKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0g
bWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRk
KFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTU2MywxMiArNTYzLDEyIEBAIFRFU1QoV1RG
X0hhc2hNYXAsIEVuc3VyZV9VbmlxdWVQb2ludGVyKQogewogICAgIEhhc2hNYXA8dW5zaWduZWQs
IHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZD4+IG1hcDsKICAgICB7Ci0gICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVuc2ln
bmVkPigxKTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmVuc3VyZSgxLCBbXSB7
IHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZD4oMSk7IH0p
OwogICAgICAgICBFWFBFQ1RfRVEoMXUsICptYXAuZ2V0KDEpKTsKICAgICAgICAgRVhQRUNUX0VR
KDF1LCAqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgxdSwgYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXkpOwogICAgICAgICBFWFBFQ1RfVFJVRShhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUo
MSwgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMik7IH0pOworICAgICAg
ICBhdXRvIGFkZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkPigyKTsgfSk7CiAgICAgICAgIEVYUEVDVF9F
USgxdSwgKm1hcC5nZXQoMSkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQyLml0
ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgYWRkUmVzdWx0Mi5p
dGVyYXRvci0+a2V5KTsKQEAgLTU5MCw2ICs1OTAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBFbnN1
cmVfUmVmUHRyKQogfQogCiBjbGFzcyBPYmplY3RXaXRoUmVmTG9nZ2VyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmplY3RXaXRoUmVmTG9nZ2VyKFJlZjxS
ZWZMb2dnZXI+JiYgbG9nZ2VyKQogICAgICAgICA6IG1fbG9nZ2VyKFdURk1vdmUobG9nZ2VyKSkK
QEAgLTYwNCw3ICs2MDUsNyBAQCB2b2lkIHRlc3RNb3ZpbmdVc2luZ0Vuc3VyZShSZWY8UmVmTG9n
Z2VyPiYmIGxvZ2dlcikKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8
T2JqZWN0V2l0aFJlZkxvZ2dlcj4+IG1hcDsKICAgICAKLSAgICBtYXAuZW5zdXJlKDEsIFsmXSB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1vdmUobG9n
Z2VyKSk7IH0pOworICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8T2Jq
ZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CiB9CiAKIHZvaWQgdGVzdE1v
dmluZ1VzaW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQpAQCAtNjEyLDcgKzYxMyw3IEBA
IHZvaWQgdGVzdE1vdmluZ1VzaW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogICAgIEhh
c2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFw
OwogCiAgICAgYXV0byYgc2xvdCA9IG1hcC5hZGQoMSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwotICAgIHNsb3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1v
dmUobG9nZ2VyKSk7CisgICAgc2xvdCA9IG1ha2VVbmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4o
V1RGTW92ZShsb2dnZXIpKTsKIH0KIAogVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX0xhbWJkYXND
YXB0dXJpbmdCeVJlZmVyZW5jZSkKQEAgLTY4Myw2ICs2ODQsNyBAQCBURVNUKFdURl9IYXNoTWFw
LCBWYWx1ZUlzRGVzdHJ1Y3RlZE9uUmVtb3ZlKQogVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyTm90
WmVyb2VkQmVmb3JlRGVyZWYpCiB7CiAgICAgc3RydWN0IERlcmVmT2JzZXJ2ZXIgeworICAgICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIE5FVkVSX0lOTElORSB2
b2lkIHJlZigpCiAgICAgICAgIHsKICAgICAgICAgICAgICsrY291bnQ7CkBAIC02OTcsNyArNjk5
LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiAgICAg
ICAgIGNvbnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2VydmVkQnVja2V0IHsgbnVsbHB0ciB9OwogICAg
IH07CiAKLSAgICBhdXRvIG9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJlZk9ic2VydmVy
PigpOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CiAK
ICAgICBIYXNoTWFwPFJlZlB0cjxEZXJlZk9ic2VydmVyPiwgaW50PiBtYXA7CiAgICAgbWFwLmFk
ZChhZG9wdFJlZihvYnNlcnZlci5nZXQoKSksIDUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoU2V0LmNwcAppbmRleCA3MWVjZmRkYjg0MmI2YmQ1MTY0MWNhMDViNjEwOGFkNDhm
NjJiYjdkLi44NzI2OGM3NGYwY2I4ZmMxNDllYmY2MGM4NTg4ZmNlZDM1ODFhMjA1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBA
IFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleSkKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlx
dWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcj4oKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBF
Q1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50
KTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfRmlu
ZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBz
ZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4o
NSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3Zl
KHVuaXF1ZVB0cikpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5p
cXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8c3RkOjp1
bmlxdWVfcHRyPGludD4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAg
ICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBURVNU
KFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAg
SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNl
dDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVl
UHRyKSk7CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJL
ZXlfVGFrZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBh
dXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0
KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0yODMsNiArMjgzLDcg
QEAgVEVTVChXVEZfSGFzaFNldCwgQ29weUNhcGFjaXR5SXNOb3RPbkJvdW5kYXJ5KQogVEVTVChX
VEZfSGFzaFNldCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiB7CiAgICAgc3RydWN0IERl
cmVmT2JzZXJ2ZXIgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIE5FVkVSX0lOTElORSB2b2lkIHJlZigpCiAgICAgICAgIHsKICAgICAgICAgICAgICsr
Y291bnQ7CkBAIC0yOTcsNyArMjk4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgUmVmUHRyTm90WmVy
b2VkQmVmb3JlRGVyZWYpCiAgICAgICAgIGNvbnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2VydmVkQnVj
a2V0IHsgbnVsbHB0ciB9OwogICAgIH07CiAKLSAgICBhdXRvIG9ic2VydmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxEZXJlZk9ic2VydmVyPigpOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBtYWtlVW5pcXVl
PERlcmVmT2JzZXJ2ZXI+KCk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxEZXJlZk9ic2VydmVyPj4g
c2V0OwogICAgIHNldC5hZGQoYWRvcHRSZWYob2JzZXJ2ZXIuZ2V0KCkpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcAppbmRleCA2NTdiZTQxZDYyMDcy
NDQ2N2E1NTQ5ZTJhYjVhMTk0MWM0ZTM3M2MxLi5iNzcwYTViMjdjMWQyYjA5NWE1YmI1OWQ2NWFj
M2Y0ZGM0ZTRlNjhlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9M
aXN0SGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhh
c2hTZXQuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1
ZVB0cktleSkKIAogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVl
UHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGxp
c3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTM5Niw3ICszOTYs
NyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50
ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAg
YXV0byBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHIpKTsKIApAQCAtNDEwLDcgKzQxMCw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQ
dHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1
bmlxdWVfcHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91
bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgYXV0byBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAg
ICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtNDIxLDkgKzQyMSw5IEBAIFRF
U1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfSW5zZXJ0QmVmb3JlVXNpbmdSYXdQb2lu
dGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0g
ICAgYXV0byB1bmlxdWVQdHJXaXRoMiA9IHN0ZDo6bWFrZV91bmlxdWU8aW50PigyKTsKKyAgICBh
dXRvIHVuaXF1ZVB0cldpdGgyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50
PigyKTsKICAgICBhdXRvIHB0cldpdGgyID0gdW5pcXVlUHRyV2l0aDIuZ2V0KCk7Ci0gICAgYXV0
byB1bmlxdWVQdHJXaXRoNCA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig0KTsKKyAgICBhdXRvIHVu
aXF1ZVB0cldpdGg0ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig0KTsK
ICAgICBhdXRvIHB0cldpdGg0ID0gdW5pcXVlUHRyV2l0aDQuZ2V0KCk7CiAKICAgICBsaXN0LmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0cldpdGgyKSk7CkBAIC00MzUsNyArNDM1LDcgQEAgVEVTVChXVEZf
TGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9JbnNlcnRCZWZvcmVVc2luZ1Jhd1BvaW50ZXIpCiAg
ICAgQVNTRVJUX0VRKHB0cldpdGg0LCBsaXN0Lmxhc3QoKS5nZXQoKSk7CiAgICAgQVNTRVJUX0VR
KDQsICpsaXN0Lmxhc3QoKS5nZXQoKSk7CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgzID0gc3Rk
OjptYWtlX3VuaXF1ZTxpbnQ+KDMpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDMgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDMpOwogICAgIGF1dG8gcHRyV2l0aDMgPSB1
bmlxdWVQdHJXaXRoMy5nZXQoKTsKIAogICAgIGxpc3QuaW5zZXJ0QmVmb3JlKHB0cldpdGg0LCBX
VEZNb3ZlKHVuaXF1ZVB0cldpdGgzKSk7CkBAIC00NjIsNyArNDYyLDcgQEAgVEVTVChXVEZfTGlz
dEhhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBMaXN0
SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGxp
c3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBhdXRvKiBwdHIgPSB1bmlxdWVQdHIu
Z2V0KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcAppbmRleCAyZGNjZWRjYWRjYzZjMjIyNzNkZWJjMjBmM2Zm
Njc3Yzg3MzI5MDI3Li41ZmQzMWJmMWM5YWJlY2ZiOGFiZTczNTYwOGE0N2M1NjA0MzA0NzcyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcApAQCAtNDIsOSArNDIsOSBAQCBz
dHJ1Y3QgTG9ja0luc3BlY3RvciB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KIHZvaWQg
cnVuTG9ja1Rlc3QodW5zaWduZWQgbnVtVGhyZWFkR3JvdXBzLCB1bnNpZ25lZCBudW1UaHJlYWRz
UGVyR3JvdXAsIHVuc2lnbmVkIHdvcmtQZXJDcml0aWNhbFNlY3Rpb24sIHVuc2lnbmVkIG51bUl0
ZXJhdGlvbnMpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExvY2tUeXBlW10+IGxvY2tzID0gc3Rk
OjptYWtlX3VuaXF1ZTxMb2NrVHlwZVtdPihudW1UaHJlYWRHcm91cHMpOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGRvdWJsZVtdPihudW1U
aHJlYWRHcm91cHMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJl
YWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMg
KiBudW1UaHJlYWRzUGVyR3JvdXApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NrVHlwZVtdPiBs
b2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPExvY2tUeXBlW10+KG51bVRo
cmVhZEdyb3Vwcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGRvdWJsZVtdPihudW1UaHJlYWRHcm91cHMpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBz
ICogbnVtVGhyZWFkc1Blckdyb3VwKTsKIAogICAgIGZvciAodW5zaWduZWQgdGhyZWFkR3JvdXBJ
bmRleCA9IG51bVRocmVhZEdyb3VwczsgdGhyZWFkR3JvdXBJbmRleC0tOykgewogICAgICAgICB3
b3Jkc1t0aHJlYWRHcm91cEluZGV4XSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1BhcmtpbmdMb3QuY3BwCmluZGV4IDQ1MmUyMjc3MWRjMDY0YWRhYWZlNjIwZWIzM2U4MDEz
MGY3OWYxOTcuLmUwMGEwOWIyYTE3YWE3MzQ4NTZlNDJjMTE0NWNiZTYwODYzZjBhMDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCkBAIC0xODIsNyAr
MTgyLDcgQEAgc3RydWN0IFNpbmdsZUxhdGNoVGVzdCB7CiAKIHZvaWQgcnVuUGFya2luZ1Rlc3Qo
dW5zaWduZWQgbnVtTGF0Y2hlcywgdW5zaWduZWQgZGVsYXksIHVuc2lnbmVkIG51bVRocmVhZHMs
IHVuc2lnbmVkIG51bVNpbmdsZVVucGFya3MpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNpbmds
ZUxhdGNoVGVzdFtdPiB0ZXN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8U2luZ2xlTGF0Y2hUZXN0W10+
KG51bUxhdGNoZXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRjaFRlc3RbXT4gdGVz
dHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxTaW5nbGVMYXRjaFRlc3RbXT4o
bnVtTGF0Y2hlcyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGxhdGNoSW5kZXggPSBudW1MYXRjaGVz
OyBsYXRjaEluZGV4LS07KQogICAgICAgICB0ZXN0c1tsYXRjaEluZGV4XS5pbml0aWFsaXplKG51
bVRocmVhZHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVm
Q291bnRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNw
cAppbmRleCAwODFkZjllNGZjMWQyNTFkODE0YjIyNjRiZDJkMGUwNTJjMGJkNDFmLi5mNGVmOTgz
YjFhOWZiZTg5ODA3Yzc1YWMyOGZkYjYyNmQ5YTk2YTExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIFRFU1QoV1RG
LCBSZWZDb3VudGVyKQogVEVTVChXVEYsIFJlZkNvdW50ZXJEZWxldGVDb3VudGVyV2l0aE91dHN0
YW5kaW5nVG9rZW5zKQogewogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RDb3Vu
dGVyPiBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0Q291bnRlcj4oWyZdKFJlZkNvdW50
ZXJFdmVudCBldmVudCkgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdENvdW50ZXI+IGNv
dW50ZXIgPSBtYWtlVW5pcXVlPFRlc3RDb3VudGVyPihbJl0oUmVmQ291bnRlckV2ZW50IGV2ZW50
KSB7CiAgICAgICAgICAgICBpZiAoIWNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
Y291bnRlciA9IG51bGxwdHI7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCmluZGV4IGY0MGVkYThiNGMzZDdlNmNjM2ZlNDExOTMz
Nzc1ZTAwNDMwMTcyYWIuLmE2ZjE1MTljMDAyMWRlNjk0NTBjODRiMGJiYjNiNmY1ZTI1MWI1NDIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHAKQEAg
LTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgdW5zaWduZWQgY291bnRUaHJlYWRHcm91cHMoVmVjdG9y
PFJlZjxUaHJlYWQ+PiYgdGhyZWFkcykKIAogVEVTVChXVEYsIFRocmVhZEdyb3VwUmVtb3ZlKQog
ewotICAgIGNvbnN0IHVuc2lnbmVkIE51bWJlck9mVGhyZWFkcyA9IDY0OworICAgIGNvbnN0IHVu
c2lnbmVkIE51bWJlck9mVGhyZWFkcyA9IDE2OwogCiAgICAgTG9jayBsb2NrOwogICAgIENvbmRp
dGlvbiB0aHJlYWRSdW5uaW5nQ29uZGl0aW9uOwpAQCAtMTc5LDggKzE3OSwxMSBAQCBURVNUKFdU
RiwgVGhyZWFkR3JvdXBSZW1vdmUpCiAKICAgICBFWFBFQ1RfRVEoMFUsIGNvdW50VGhyZWFkR3Jv
dXBzKHRocmVhZHMpKTsKIAotICAgIHRocmVhZFJ1bm5pbmcgPSBmYWxzZTsKLSAgICB0aHJlYWRS
dW5uaW5nQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhsb2NrKTsKKyAgICAgICAgdGhyZWFkUnVubmluZyA9IGZhbHNlOworICAgICAg
ICB0aHJlYWRSdW5uaW5nQ29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgIH0KICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZUaHJlYWRzOyBpKyspCiAgICAgICAgIHRocmVhZHNb
aV0tPndhaXRGb3JDb21wbGV0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVW5pcXVlUmVmLmNwcAppbmRleCA0ZDJiMjJhYTU0ZjhiMDI1NDgwZjU5ZTU2MWEzY2NlNzE1
NTAyMzEyLi4xYWZlM2U5Nzc5YmI4NDg4N2U5NDMwZGU0MTcyNmM3NDM4NTMyZmRjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKQEAgLTMwLDggKzMwLDEx
IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKICAgICAKLWNsYXNzIEEgeyB9OworY2xh
c3MgQSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Cit9OwogY2xhc3MgQiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQihpbnQgYSwgaW50IGIsIGlu
dCBjKQogICAgICAgICA6IGEoYSkKQEAgLTQzLDYgKzQ2LDcgQEAgY2xhc3MgQiB7CiAgICAgaW50
IGM7CiB9OwogY2xhc3MgQyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgQyhVbmlxdWVSZWY8QT4mJiBhKQogICAgICAgICA6IGEoV1RGTW92ZShhKSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKaW5kZXggMGVmMWYxZGE0NGJhYzUx
NTRmZmZkMzMyMTM5NWU5ZjFlMmQyYTdjMi4uNTFlY2EwNzY4ZDJjY2UxYzlhMzI5NTU1MmQzNTAw
OWZmNGZkNTZiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFy
aWFudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAK
QEAgLTIxMiw3ICsyMTIsNyBAQCBURVNUKFdURl9WYXJpYW50LCBDb25zdHJ1Y3RvckRlc3RydWN0
b3IpCiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6VGVzdGluZ1Njb3BlIHNjb3Bl
OwogCiAgICAgewotICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICAgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgICAgIFZhcmlh
bnQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IHYg
PSBXVEZNb3ZlKHVuaXF1ZVB0cik7CiAKICAgICAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCmluZGV4IDE1MGI5Yjc2YzhhNTY1ZTM2NTU0ODM2ZTBi
YmVjMDUwNWM3ODQ4ZjIuLjdlNjMwNjkzZWVjNjA0MWEzNzUwNDRhZjk0OWQ4NzQ2YjY5NWNhNmIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCkBAIC01MCw2ICs1
MCw3IEBAIHN0cnVjdCBJbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW50PiB7CiB9OwogCiBj
bGFzcyBCYXNlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEJhc2U+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCYXNlKCkgeyB9CiAKQEAgLTU3OCwxMCArNTc5
LDEwIEBAIFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBF
WFBFQ1RfRVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICBFWFBFQ1RfVFJV
RShpbml0aWFsQ2FwYWNpdHkgLyBtYXhMb2FkQ2FwKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXA7ICsraSkgewotICAgICAgICAg
ICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBh
dXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0
LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0
KSk7Ci0gICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmFz
ZT4oKSk7CisgICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKG1ha2VVbmlxdWU8QmFzZT4o
KSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAg
IH0KICAgICAgICAgRVhQRUNUX0VRKHNfYmFzZVdlYWtSZWZlcmVuY2VzLCBvdGhlck9iamVjdHMu
c2l6ZSgpKTsKQEAgLTYxNSw3ICs2MTYsNyBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNl
dEV4cGFuc2lvbikKICAgICAgICAgRVhQRUNUX0VRKHdlYWtIYXNoU2V0LmNhcGFjaXR5KCksIDB1
KTsKICAgICAgICAgdW5zaWduZWQgb2JqZWN0Q291bnQgPSBpbml0aWFsQ2FwYWNpdHkgKiAyOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7ICsraSkgewotICAg
ICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAg
ICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtI
YXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUo
b2JqZWN0KSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7CkBA
IC02NjcsMTAgKzY2OCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVz
RW1wdHkpCiAgICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAg
ICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0
byBmaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBm
aXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRk
KCpmaXJzdE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAg
ICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdo
aWxlICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IGZpcnN0T2JqZWN0LmdldCgpKTsKQEAg
LTczNCw4ICs3MzUsOCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXpl
KQogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hT
ZXQ7Ci0gICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7
Ci0gICAgICAgIGF1dG8gbGFzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAg
ICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0
byBsYXN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5h
ZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpsYXN0T2JqZWN0KTsK
ICAgICAgICAgaWYgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgIT0gZmlyc3RPYmplY3QuZ2V0
KCkpCkBAIC03NTksMTAgKzc2MCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENv
bXB1dGVTaXplKQogICAgIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7
CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzZT4+IG9iamVjdHM7Ci0gICAgICAg
IGF1dG8gbm9uRmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAg
IGF1dG8gbm9uRmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtI
YXNoU2V0LmFkZCgqbm9uRmlyc3RPYmplY3QpOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBh
dXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8g
b2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRk
KCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsK
ICAgICAgICAgfSB3aGlsZSAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSA9PSBub25GaXJzdE9i
amVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ0FSaW5nQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9D
QVJpbmdCdWZmZXIuY3BwCmluZGV4IDJhYWI2NWRkOGZkN2VmMDcwNTFmYjZmNzU2NzU4Y2RlNzAy
ZTA3YTEuLjgxZDdiYTI5MWFlOWY0YWI3Y2YyZTVmOWFhZDYyYzk0MjQzNTM2NzIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPENBUmluZ0J1ZmZlcj4oKTsKICAgICB9CiAKICAgICAvLyBD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oZG91YmxlIHNhbXBsZVJhdGUsIFVJbnQzMiBudW1DaGFu
bmVscywgUENNRm9ybWF0IGZvcm1hdCwgYm9vbCBpc0ludGVybGVhdmVkLCBzaXplX3QgY2FwYWNp
dHkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAKaW5kZXggNzc4ZTYxNTVmMDZjYzEyODM5Nzk3NWYwNDU4NzEyYTJjNzEw
NDBmYS4uZGNhNDYzNjAyZTk2ZDYwYTA0NTEzODEyMWNiYmRjZWZiZWU5ZTVjMiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVl
LmNwcApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBzdGF0aWMg
dW5zaWduZWQgZGVsZXRpb25Db3VudDsKIAogY2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3RO
b2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FsY3VsYXRpb25EZWxldGlv
blRlc3ROb2RlKCkKICAgICB7CkBAIC01Miw3ICs1Myw3IEBAIGNsYXNzIENhbGN1bGF0aW9uRGVs
ZXRpb25UZXN0Tm9kZSA6IHB1YmxpYyBXZWJDb3JlOjpDYWxjRXhwcmVzc2lvbk5vZGUgewogCiBz
dGF0aWMgUmVmPFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU+IGNyZWF0ZVRlc3RWYWx1ZSgpCiB7
Ci0gICAgYXV0byBub2RlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjdWxhdGlvbkRlbGV0aW9uVGVz
dE5vZGU+KCk7CisgICAgYXV0byBub2RlID0gbWFrZVVuaXF1ZTxDYWxjdWxhdGlvbkRlbGV0aW9u
VGVzdE5vZGU+KCk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0
ZShXVEZNb3ZlKG5vZGUpLCBXZWJDb3JlOjpWYWx1ZVJhbmdlQWxsKTsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0
LmNwcAppbmRleCBmNThkYThhNDIwNzNlYzk5YmJlZTM0YTg1YmVjMzRjMDg1YzUyYTY0Li4wYzFh
MDY5ZjEzYzM5YzQwOWU1ZDVlMWIwM2E3ZTkyYmY5YjM2NmMyIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcApA
QCAtNDgsMTAgKzQ4LDEwIEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0U2l6
ZSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweDA1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwogCi0gICAgYXV0byBpbml0UGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRv
SGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFZl
Y3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5pdFBhY2tldCA9
IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNv
bW1hbmQ6OmtJbml0LCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKICAgICBF
WFBFQ1RfRVEoNjR1LCBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpLnNpemUoKSk7CiAK
LSAgICBhdXRvIGNvbnRpbnVhdGlvblBhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENv
bnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRv
IGNvbnRpbnVhdGlvblBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tl
dD4oY2hhbm5lbElkLCAwLCBXVEZNb3ZlKGRhdGEpKTsKICAgICBFWFBFQ1RfRVEoNjR1LCBjb250
aW51YXRpb25QYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsKIH0KIApAQCAtNzAs
NyArNzAsNyBAQCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldERhdGEpCiAgICAg
dWludDMyX3QgY2hhbm5lbElkID0gMHhGNTA2MDcwODsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBjbWQgPSBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a1dpbms7Ci0gICAgYXV0byBpbml0UGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwg
ZGF0YS5zaXplKCkpOworICAgIGF1dG8gaW5pdFBhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZElu
aXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6
ZSgpKTsKICAgICBzaXplX3QgaW5kZXggPSAwOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlh
bGl6ZWQgPSBpbml0UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpAQCAtOTQsNyArOTQsNyBA
QCBURVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldENvbnN0cnVjdG9ycykKICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YSB7MTAsIDExfTsKICAgICBGaWRvSGlkRGV2aWNlQ29tbWFuZCBj
bWQgPSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms7CiAgICAgc2l6ZV90IGxlbmd0aCA9IGRh
dGEuc2l6ZSgpOwotICAgIGF1dG8gb3JpZ1BhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hp
ZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5ndGgpOworICAg
IGF1dG8gb3JpZ1BhY2tldCA9IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJ
ZCwgY21kLCBXVEZNb3ZlKGRhdGEpLCBsZW5ndGgpOwogCiAgICAgc2l6ZV90IHBheWxvYWRMZW5n
dGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG9yaWdQYWNrZXQtPnBheWxvYWRMZW5ndGgoKSk7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG9yaWdEYXRhID0gb3JpZ1BhY2tldC0+Z2V0U2VyaWFsaXplZERh
dGEoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxl
TW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0
b3IuY3BwCmluZGV4IDFlZDEzMjhmODEzMDllMTJlMTM3MWNiM2FkZmU2YjBhOTc4M2VlYjYuLjIy
ODM4M2EwZjMwYTliMTM5ZjZhYWY0M2Y5NWNlZGQ4MDkxNjZlNmEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZSkKIAogICAgIGF1dG8g
dGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAg
YXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRo
KCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUg
dHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBG
aWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMTkwLDcgKzE5MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRv
clRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdlcykKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29y
a1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5j
b3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1
dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0
UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsK
ICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlw
ZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0
aW9uOgpAQCAtMjUwLDcgKzI1MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERl
bGV0aW9uKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBX
b3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVN
b25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1
ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmls
ZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yODksNyArMjg5LDcg
QEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlQW5kVGhlbkRlbGV0ZSkKIAog
ICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIp
OwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVt
cEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0
b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6
OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgICAgY2FzZSBGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTM0Niw3ICszNDYsNyBAQCBURVNU
X0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQog
CiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVl
Iik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0
ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxl
Q2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9u
aXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRleCA5MmQ4YTE5MmNhN2Iy
YTEwODE1NjU5OTdiMGVhNWIxZjlhZWE4ZjY1Li4yMTllOTY2ZGJlYmFhODRkMzYwMjcyMmU5NTll
MzJmNjRmYjRkYjJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY3VybC9Db29raWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY3VybC9Db29raWVzLmNwcApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBDdXJsQ29va2llczog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHsKICAgICAgICAgbV9jb29raWVEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoKTsKIAotICAgICAgICBtX2Nv
b2tpZUphciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRi
LnNxbCIpKTsKKyAgICAgICAgbV9jb29raWVKYXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvb2tp
ZUphckRCPihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jb29raWVEaXJl
Y3RvcnksICJjb29raWVkYi5zcWwiKSk7CiAgICAgICAgIG1fY29va2llSmFyLT5vcGVuKCk7CiAg
ICAgICAgIG1fY29va2llSmFyLT5zZXRBY2NlcHRQb2xpY3koQ29va2llQWNjZXB0UG9saWN5OjpB
bHdheXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKaW5kZXggNWMwYWUzMzEz
MjhiMzZiMGJhNzBhMThkOTkzNjY5NDEyYWNhMjlhOS4uYjNiM2JjM2NmNDlkNzg1NDMwNTg0OWRk
YTEyMTJmMTkzMmEwZDIwZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBX
S1VSTFJlcXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsKICAgICBFWFBFQ1RfVFJVRShvcGVu
ZWRXZWJWaWV3ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVkV2ViVmlldyA9IHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBvcGVuZWRXZWJWaWV3ID0gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQYWdlVUlDbGllbnRWNSB1aUNs
aWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcApp
bmRleCBhNGZiYTEyN2M2ZTRkMDNlNjNkOWE4MTcyYTM5YjNjYjhiMTQ3MmM3Li43YmMzNTI0ZjJi
ZGI5ZGJkN2E0MzVhM2NjNmFkMzgzMmU5NDRlZGQ1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwCkBAIC0xMDMsNyArMTAzLDcg
QEAgc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJl
cXVlc3RSZWYgdXJsUmVxdWVzdCwgV0tEaWMKIHsKICAgICBFWFBFQ1RfVFJVRShvcGVuZWRXZWJW
aWV3ID09IG51bGxwdHIpOwogCi0gICAgb3BlbmVkV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKKyAgICBvcGVuZWRXZWJWaWV3ID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOwogCiAgICAgV0tQYWdlVUlDbGllbnRWNSB1aUNsaWVudDsK
ICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5k
RWRpdGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGRE
aWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCmluZGV4IDBmN2ZkNDBhNjNlNWVjZjc4Yzk2OGRmODAz
OGQxOTIyMWVkYmY3ZDUuLmNkMTlkN2NkZTU4ODk2MjVmMTIyMTJmYzc1M2NmZDU1ZTI3OGQ5MjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERp
ZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcApAQCAtOTcsNyArOTcsNyBA
QCBzdHJ1Y3QgV2ViS2l0MlRleHRGaWVsZEJlZ2luQW5kRWRpdEVkaXRpbmdUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29u
dGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgi
VGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nRXZlbnRzVGVzdCIpKTsKICAgICAgICAgc2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2Vi
VmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsK
KyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0Lmdl
dCgpKTsKICAgICAgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LT5wYWdlKCksIHRoaXMp
OwogCiAgICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcAppbmRleCBjN2IwMjUxYmZjZjIxYWE0
YWJkMTE0Yzg1NTA3OTI0MWQ2NjE3NGU5Li45ZGMzYTZkYTk5NTA5YzI3MTEyMWQ0YzNhNDUzMDg0
ZmVlOTg5YmQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9V
c2VyTWVzc2FnZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNl
ck1lc3NhZ2UuY3BwCkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFdlYktpdDJVc2VyTWVzc2FnZVJv
dW5kVHJpcFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgY29udGV4dCA9
IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiVXNlck1l
c3NhZ2VUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0Lmdl
dCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xp
ZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExv
YWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCmlu
ZGV4IGVkOWYwZmZjNzAyNWFiMTJjYjUzOTY3ZjcyMDVmZjk2Yzg5YmU2OTkuLjUyZjE4ZGNlYjQy
ZDUxYWMwODM5NWI2MjAwMWQ0YTk1NDBmNzQ1MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgY2xhc3MgV2ViS2l0
MldpbGxMb2FkVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0
ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJXaWxs
TG9hZFRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0
KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
V2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgZGlkUmVjZWl2ZU1lc3Nh
Z2UgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1
bmRsZV9CdW5kbGUubW0KaW5kZXggYWViYTFjMzQ4ZmJjNjZhMTcwZTUzOWUwYTcyODZhZWU5MTUz
ZTYwNC4uMjkxYTQ3OGEyNzg0MjQyZGFkNDVhM2E4ZjE3MzkwNWQ3ZDNiMmYyMSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJh
bmNlSW5CdW5kbGVfQnVuZGxlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQpAQCAtNzAsNyAr
NzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gYWRvcHQoSlNWYWx1
ZVRvU3RyaW5nQ29weShzY3JpcHRDb250ZXh0LCByZXN1bHQsIG51bGxwdHIpKTsKIAogICAgICAg
ICBhdXRvIGJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUocmVz
dWx0U3RyaW5nLmdldCgpKTsKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICAgICAgSlNTdHJp
bmdHZXRVVEY4Q1N0cmluZyhyZXN1bHRTdHJpbmcuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVy
U2l6ZSk7CiAKICAgICAgICAgV0tCdW5kbGVQYWdlU2V0VXNlRGFya0FwcGVhcmFuY2UobV9wYWdl
LCB0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0QXV0aGVudGljYXRpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKaW5kZXggZDZjYzJmYjI0N2U1NjIwNjY5Nzc2
MTBiMjU2NzliN2VkMWRjYzhiYS4uN2M4YzhiNTIxNTRhYzRlYjA5OGU2OTUxNzkwNjlhMDVlYmRj
NjZhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RBdXRoZW50aWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKQEAgLTI1Niw2ICsyNTYsNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uRW1wdHlSZWFsbShBdXRoZW50aWNhdGlvblRl
c3QqIHRlc3QsIGdjb25zdAogfQogCiBjbGFzcyBUdW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFR1bm5lbChTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICA6IG1fc2VydmVyKHNlcnZlcikKQEAgLTI5OSw3ICsz
MDAsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNv
dXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogewogICAgIGlmIChtZXNzYWdlLT5tZXRo
b2QgPT0gU09VUF9NRVRIT0RfQ09OTkVDVCkgewogICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHNv
dXBfc2VydmVyX2dldF9wb3J0KHNlcnZlciksID09LCBnUHJveHlTZXJ2ZXJQb3J0KTsKLSAgICAg
ICAgYXV0byB0dW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFR1bm5lbD4oc2VydmVyLCBtZXNzYWdl
KTsKKyAgICAgICAgYXV0byB0dW5uZWwgPSBtYWtlVW5pcXVlPFR1bm5lbD4oc2VydmVyLCBtZXNz
YWdlKTsKICAgICAgICAgYXV0byogdHVubmVsUHRyID0gdHVubmVsLmdldCgpOwogICAgICAgICB0
dW5uZWxQdHItPmNvbm5lY3QoW3R1bm5lbCA9IFdURk1vdmUodHVubmVsKV0oY29uc3QgY2hhciog
ZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CkBAIC0zOTQs
NyArMzk1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5KFBy
b3h5QXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3QKIAogc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRUUFMoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgYXV0byBodHRwc1NlcnZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOwor
ICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdFRlc3RTZXJ2ZXI+KFdlYktp
dFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFBTKTsKICAgICBodHRwc1NlcnZlci0+cnVuKHNlcnZlckNh
bGxiYWNrKTsKIAogICAgIHRlc3QtPmxvYWRVUkkoaHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii9wcm94eS9hdXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCmluZGV4IDdhNDRjYjA1
Y2Q0YmMwMjdlMTJkMTEwM2ZhZjZhMDA3YWM2ZjQwZjMuLmI2YjcyOGU0NWUwOWM1MWE2ZDZiYTk5
YmY3MTdlMTk1ZTlhMGUwYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCkBAIC0zMCw2ICszMCw3IEBACiAjZW5kaWYK
IAogY2xhc3MgV2ViUHJvY2Vzc1Rlc3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfldlYlByb2Nlc3NUZXN0KCkgeyB9CiAgICAgdmlydHVhbCBi
b29sIHJ1blRlc3QoY29uc3QgY2hhciogdGVzdE5hbWUsIFdlYktpdFdlYlBhZ2UqKSA9IDA7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5k
b3dUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdp
bmRvd1Rlc3QuY3BwCmluZGV4IDEyNTYyNDE5NmE3MWM2ZDNhZDViY2RkMjlmMTQyYjg2YWJiOWZk
MTEuLmU0MDAwNzYzM2YyMzYyNDA1MjlkZjU0YWU4NjMyMDg3YmQzNjk1MmYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rl
c3QuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBjbGlja2VkQ2FsbGJhY2so
V2ViS2l0RE9NRE9NV2luZG93KiwgV2ViS2l0RE9NRXZlbnQqLCBXZWJLaXRET01ECiAKIGNsYXNz
IFdlYktpdERPTURPTVdpbmRvd1Rlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQogCiBwcml2YXRlOgogICAg
IGd1aW50NjQgd2ViUGFnZUZyb21BcmdzKEdWYXJpYW50KiBhcmdzKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDhkMmVl
OGFkMTZjYWQ2Nzk1NjhlZDliNmQ3NWNlY2Q4MjE1MGZlZGIuLjM0OTBlZjFjZWI2ZjE3ODA1MDJm
MGNkYzkxOWM5NzFlMjkyYmU5MDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KQEAgLTM4LDcgKzM4LDcgQEAgc3RkOjpzdHJp
bmcgdG9TVEQoTlNTdHJpbmcgKnN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7
CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFtzdHJpbmcgbGVuZ3RoT2ZCeXRlc1VzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBOU1VJbnRl
Z2VyIHN0cmluZ0xlbmd0aDsKICAgICBbc3RyaW5nIGdldEJ5dGVzOmJ1ZmZlci5nZXQoKSBtYXhM
ZW5ndGg6YnVmZmVyU2l6ZSB1c2VkTGVuZ3RoOiZzdHJpbmdMZW5ndGggZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2Rpbmcgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVu
Z3RoXSkgcmVtYWluaW5nUmFuZ2U6MF07CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5n
ZXQoKSwgc3RyaW5nTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbQppbmRleCA1NDZjYTZlMjIyZDlmZWE4MWNlN2JlNGUyYzJkMzk4NWM1YjQ0ZjBmLi4y
NDc1NzI4OThiNmE4NzljN2EzNmI0ZmM2NWI5MTUzMzA0NzBmZmQwIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yOTQsNyArMjk0LDcgQEAgc3RhdGlj
IHZvaWQgYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRl
bVByb3ZpZGVycygpCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc01ldGhvZFN3aXp6
bGVyPiBzd2l6emxlcjsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAg
ICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHN3aXp6bGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3Ms
IEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldp
dGhvdXRQdWJsaWNSVEZEKSk7CisgICAgICAgIHN3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01l
dGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJs
ZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3
cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRp
bwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
d29ya2Fyb3VuZCBvbmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIGZpeGVkLgot
ICAgIF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0
aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91
dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOworICAg
IF9zaGFyZWRDYWxsb3V0QmFyU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenps
ZXI+KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOwogICAgIF9pbnB1dFNl
c3Npb25DaGFuZ2VDb3VudCA9IDA7CiAgICAgYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdB
dHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKaW5k
ZXggNjkwZjBhNzc1NmNmZTNhZmIwN2Q5MGJlZWZmMDk1NzhiMmZjNTVkZS4uMjgxNDUyN2YxOWI5
NTRmODJhZWI4N2JjMGU0YzhkYzBiOWE3ZjViNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaApAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogY2xhc3MgV2ViS2l0VGVzdFNl
cnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKICAgICBlbnVt
IFNlcnZlck9wdGlvbnMgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVz
dEZvbnRPcHRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25z
Lm1tCmluZGV4IDg2MjYzNTQ0MzM1YTdmNWQ5NzFiNWRjMGQyNTllNTVkYzBkNzNjNjYuLjRiZGU2
YzUxMDBkMmJkNmZlNGJiOTBmYWNiZTI1ZDMzOWE1MDU0YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KQEAgLTg0LDcgKzg0LDcgQEAgLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRm9udE9wdGlvbnM6KE5TRm9udE9wdGlvbnMgKilmb250T3B0aW9ucwogCiAg
ICAgX3NoYWRvd09mZnNldCA9IENHU2l6ZVplcm87CiAgICAgX3NoYWRvd0JsdXJSYWRpdXMgPSAw
OwotICAgIF9yZXBsYWNlRm9udE9wdGlvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xh
c3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBz
ZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRG
b250T3B0aW9uc0ZvclRlc3RpbmcpKTsKKyAgICBfcmVwbGFjZUZvbnRPcHRpb25zU3dpenpsZXIg
PSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNG
b250T3B0aW9ucyIpLCBAc2VsZWN0b3Ioc2hhcmVkRm9udE9wdGlvbnMpLCByZWludGVycHJldF9j
YXN0PElNUD4oc2hhcmVkRm9udE9wdGlvbnNGb3JUZXN0aW5nKSk7CiAgICAgX2hhc1BlbmRpbmdT
aGFkb3dDaGFuZ2VzID0gTk87CiAgICAgX2hhc011bHRpcGxlRm9udHMgPSBOTzsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5LmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaAppbmRleCAxNTMyMjE4MjY5OWUwZWEz
MDc1NGEwMjI2YzNhN2I2Mjk1OTc2ZDAwLi4xMTM5OWIzOTBmZTkxNzBmNmM1MjUyNzVhYzIzNDU4
MmRhZjc1MGY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaApA
QCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgV1RSRXZlbnRRdWV1ZUl0ZW07CiAjZW5kaWYKIAogY2xh
c3MgRXZlbnRTZW5kZXJQcm94eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgRXZlbnRTZW5kZXJQcm94eShUZXN0Q29udHJvbGxlciopOwogICAg
IH5FdmVudFNlbmRlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xv
Y2F0aW9uUHJvdmlkZXJNb2NrLmgKaW5kZXggN2Q5NDVkNjdlYzY3NTBiZTcwNjQzNWEyYTZiM2M3
NGQxYWQxNzQzYy4uMWVkNGFkZjliMzkzOTNhMzMzYWEzMjUxMDk3YjllM2FhNDJjYzM2YiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaApA
QCAtMjcsMTAgKzI3LDEyIEBACiAjZGVmaW5lIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrX2gKIAog
I2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR2VvbG9jYXRpb25Q
cm92aWRlck1vY2soV0tDb250ZXh0UmVmKTsKICAgICB+R2VvbG9jYXRpb25Qcm92aWRlck1vY2so
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCBlMTIwN2ZjZWZiZDY5NjI2ZDg4
YWQ4ZjZjZWRiMGI1MjZiYjJkZTUzLi4yMmFjOTQ3NzM5NWIxOWU4ZGZjOGRmMTc5NGFkNDJlZDhm
NTc2ZDkwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTV3JhcHBh
YmxlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2lmIFVTRShB
VEspCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDFmOWQzZWZjOTY0ZmIxMzc3YmM2NjNj
MDE2MGMzNGE4OGIyMzI4YTYuLmM5YTUyYzE1Zjc3MDgzMDY4M2M4ZWZmNjg5NDI5YmQwYmMxZjU2
NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZl
bnRTZW5kaW5nQ29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcApAQCAtNjEyLDYgKzYxMiw3IEBA
IHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW9uaXRvcldoZWVsRXZlbnRzKCkKIH0KIAog
c3RydWN0IFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBKU0NvbnRleHRSZWYgbV9jb250ZXh0OwogICAgIEpTT2Jq
ZWN0UmVmIG1fZnVuY3Rpb247CiAKQEAgLTY0Nyw3ICs2NDgsNyBAQCB2b2lkIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0
aW9uQ2FsbAogICAgIAogICAgIEpTVmFsdWVQcm90ZWN0KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJh
Y2tPYmplY3QpOwogCi0gICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhPihjb250ZXh0LCBmdW5j
dGlvbkNhbGxiYWNrT2JqZWN0KTsKKyAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0Rh
dGEgPSBtYWtlVW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1
bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNr
RGF0YVB0ciA9IHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEucmVsZWFzZSgpOwogICAgIGJv
b2wgY2FsbGJhY2tXaWxsQmVDYWxsZWQgPSBXS0J1bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJh
dGlvbkNvbXBsZXRpb25DYWxsYmFjayhwYWdlLCBleGVjdXRlQ2FsbGJhY2ssIHNjcm9sbENvbXBs
ZXRpb25DYWxsYmFja0RhdGFQdHIpOwogICAgIGlmICghY2FsbGJhY2tXaWxsQmVDYWxsZWQpIHsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKaW5kZXggNzExNmNjOTgxNTY2OWQ5NDk0ZGJmOGRlNDhiYWVlY2Q2Mzc0
YzM3Ni4uODNiMmIzMGIxMzMyZWM3N2JmZWZjYzI5ZmRkMWEyZTQ4M2NiNWYyMyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFs
aXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlcgogdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKIHsK
ICAgICBib29sIGlzTWFpblBhZ2UgPSBtX3BhZ2VzLmlzRW1wdHkoKTsKLSAgICBtX3BhZ2VzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkQnVuZGxlUGFnZT4ocGFnZSkpOworICAgIG1f
cGFnZXMuYXBwZW5kKG1ha2VVbmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7CiAKICAg
ICBzZXRVcEluamVjdGVkQnVuZGxlQ2xpZW50cyhwYWdlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgK
aW5kZXggNTlkM2UxYjBkMDJlMjJjNTJmYTc2NTQzMzI5YzIzZjZiNjJhMzg5YS4uYjMyM2MyNTA0
NGY1NTAzNjA3NmY0OGVkZGQ0N2JjZWFhM2UyMGYxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCkBA
IC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQ
YWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbmplY3Rl
ZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmKTsKICAgICB+SW5qZWN0ZWRCdW5kbGVQYWdlKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAppbmRleCAxODYwZjE2OWU1MmFjMTI1OTNmYWVlMGU0NmUyZDA1MDQ4ZGExNmJkLi43
MjA2YjA4MjUwNjVhMDA3MzA3M2NhOGI1MDhkM2I0ZmEyMjM0MzY4IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIz
OTEsNyArMjM5MSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMoSlNWYWx1
ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBudWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBm
aWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdl
dCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hh
cltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUpOwogICAgICAg
ICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCksIGZp
bGVCdWZmZXJTaXplKTsKIAogICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShmaWxlVVJMcy5nZXQo
KSwgYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhCYXNlVVJMKG1fdGVzdFVSTC5nZXQoKSwgZmlsZUJ1
ZmZlci5nZXQoKSkpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAKaW5kZXggMGU1YzA3Y2E3MjliNmRmY2IzOGM4MDQyNmQzOTI0NGUzMmMwMDE3Yy4u
MThlNTdkMmZjZjYyOTc2N2E3MzI5NzliYzJlZGM1N2FjZjEwOWNlMiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTczMCw3ICs3MzAsNyBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBjb252ZXJ0VG9KU09iamVjdEFycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbQogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVG
cmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CiAKICAgICBzaXplX3QgZWxlbWVu
dENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IHN0ZDo6
bWFrZV91bmlxdWU8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOworICAgIGF1dG8gdmFsdWVF
bGVtZW50cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEpTVmFsdWVSZWZbXT4o
ZWxlbWVudENvdW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsg
aSsrKQogICAgICAgICB2YWx1ZUVsZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNo
aWxkcmVuW2ldLT53cmFwcGVyQ2xhc3MoKSwgY2hpbGRyZW5baV0uZ2V0KCkpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCBmNzRjYzJkMzkzZDUzMDVmZDM2
NjViYjBlMGEzNTUxODQ0NzMxMDlmLi5jYTRmZGJkNzIyMTVhZjQ4YmRhOTY3ZDViY2FiNDgxNTZi
YWRjYzcxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmll
dy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKyNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFkZWZp
bmVkKEJVSUxESU5HX0dUS19fKQogI2luY2x1ZGUgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KQEAg
LTY0LDYgKzY1LDcgQEAgdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIFBsYXRmb3JtSW1hZ2U7CiBu
YW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBQbGF0Zm9y
bVdlYlZpZXcoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiosIGNvbnN0IFRlc3RPcHRpb25zJik7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaAppbmRleCBkYWYxNGNhNzA1NDg2
YmZjMjA2NDMxMjNkZTUwOTFiNzllNWQwMTMxLi5iYmExN2MyZWZmYjA5NjY1ZWZjMjhlZWI2OWU3
MjMyOWIxZDY5Yjc0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1
bmN0aW9ucy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgK
QEAgLTczLDcgKzczLDcgQEAgaW5saW5lIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0b0pTKGNv
bnN0IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIHN0ZDo6c3RyaW5n
IHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdL
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsK
ICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcs
IGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZl
ci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CkBAIC04Niw3ICs4Niw3IEBAIGlubGluZSBz
dGQ6OnN0cmluZyB0b1NURChjb25zdCBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4mIHN0cmluZykK
IGlubGluZSBXVEY6OlN0cmluZyB0b1dURlN0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUo
c3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZm
ZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3Ry
aW5nR2V0VVRGOENTdHJpbmdOb25TdHJpY3Qoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNp
emUpOwogICAgIHJldHVybiBXVEY6OlN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJhY2so
YnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOGU3MzNiZWVkODBkNGEwNWUzNWUzYzBlZjMxMmMz
OWVmNGRkMzM1My4uODgxYjMwOWE3MjVjY2E4MGZmMzgxODJmMGNhNzkzOWFmZGYyYTAwNCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ3OSw3ICs0Nzks
NyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFy
KiBhcmd2W10pCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHBhZ2VHcm91cElkZW50aWZp
ZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJXZWJLaXRUZXN0UnVu
bmVyUGFnZUdyb3VwIikpOwogICAgIG1fcGFnZUdyb3VwLmFkb3B0KFdLUGFnZUdyb3VwQ3JlYXRl
V2l0aElkZW50aWZpZXIocGFnZUdyb3VwSWRlbnRpZmllci5nZXQoKSkpOwogCi0gICAgbV9ldmVu
dFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsK
KyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRo
aXMpOwogfQogCiBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29u
dHJvbGxlcjo6Z2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9uczo6
Q29udGV4dE9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CkBAIC01MjEsNyArNTIxLDcgQEAgV0tSZXRh
aW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFn
ZUNvbmZpZ3VyYXRpb24oY28KICAgICAgICAgbV9jb250ZXh0ID0gcGxhdGZvcm1BZGp1c3RDb250
ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oY29udGV4dENvbmZp
Z3VyYXRpb24uZ2V0KCkpKS5nZXQoKSwgY29udGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpOwogICAg
ICAgICBtX2NvbnRleHRPcHRpb25zID0gb3B0aW9ucy5jb250ZXh0T3B0aW9uczsKIAotICAgICAg
ICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJv
dmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlk
ZXIgPSBtYWtlVW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkp
OwogCiAgICAgICAgIGlmIChjb25zdCBjaGFyKiBkdW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5
UGF0aEZvclRlc3RpbmcoKSkgewogICAgICAgICAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9
IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKQEAgLTk1Miw3ICs5NTIsNyBA
QCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0
IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNo
b3VsZCBhbHNvIGVuc3VyZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHBhZ2Ugb3Blbi4KIAogICAg
IC8vIFJlc2V0IHRoZSBFdmVudFNlbmRlciBmb3IgZWFjaCB0ZXN0LgotICAgIG1fZXZlbnRTZW5k
ZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CisgICAg
bV9ldmVudFNlbmRlclByb3h5ID0gbWFrZVVuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsK
IAogICAgIC8vIEZJWE1FOiBJcyB0aGlzIG5lZWRlZD8gTm90aGluZyBpbiBUZXN0Q29udHJvbGxl
ciBjaGFuZ2VzIHByZWZlcmVuY2VzIGR1cmluZyB0ZXN0cywgYW5kIGlmIHRoZXJlIGlzCiAgICAg
Ly8gc29tZSBvdGhlciBjb2RlIGRvaW5nIHRoaXMsIGl0IHNob3VsZCBwcm9iYWJseSBiZSByZXNw
b25zaWJsZSBmb3IgY2xlYW51cCB0b28uCkBAIC0xMjM1LDExICsxMjM1LDExIEBAIHN0YXRpYyBX
S1VSTFJlZiBjcmVhdGVUZXN0VVJMKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxjaGFyW10+IGJ1ZmZlcjsKICAgICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsKLSAg
ICAgICAgYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGxl
bmd0aCArIDEpOworICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOwogICAgICAgICBzdHJjcHko
YnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKICAgICAgICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSAr
IHByZWZpeExlbmd0aCwgcGF0aE9yVVJMKTsKICAgICB9IGVsc2UgewotICAgICAgICBidWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgUEFUSF9NQVggKyBsZW5n
dGggKyAyKTsgLy8gMSBmb3IgdGhlIHBhdGhTZXBhcmF0b3IKKyAgICAgICAgYnVmZmVyID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBQQVRI
X01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFyYXRvcgogICAgICAgICBz
dHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJlZml4KTsKICAgICAgICAgaWYgKCFnZXRjd2QoYnVm
ZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBQQVRIX01BWCkpCiAgICAgICAgICAgICByZXR1cm4g
MDsKQEAgLTE2NDksNyArMTY0OSw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJ1blRlc3QoY29u
c3QgY2hhciogaW5wdXRMaW5lKQogICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgPSB0ZXN0T3B0aW9u
c0ZvclRlc3QoY29tbWFuZCk7CiAKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwgPSBh
ZG9wdFdLKGNyZWF0ZVRlc3RVUkwoY29tbWFuZC5wYXRoT3JVUkwuY19zdHIoKSkpOwotICAgIG1f
Y3VycmVudEludm9jYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VS
TC5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IG1ha2VVbmlxdWU8
VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChjb21tYW5k
LnNob3VsZER1bXBQaXhlbHMgfHwgbV9zaG91bGREdW1wUGl4ZWxzRm9yQWxsVGVzdHMpCiAgICAg
ICAgIG1fY3VycmVudEludm9jYXRpb24tPnNldElzUGl4ZWxUZXN0KGNvbW1hbmQuZXhwZWN0ZWRQ
aXhlbEhhc2gpOwpAQCAtMjk2MSw3ICsyOTYxLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1XaWxsUnVuVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpCiAKIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZp
Z3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIG1fbWFpbldlYlZp
ZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0
aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihj
b25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0KIAogUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3
LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRl
eCAyOGFkMWVkODhhNjNmN2JkNmFmMWRkNTk5YWJmMjAwNjM0ODZlZmZiLi5hMzg2ZTliODJiNDVm
YTUwOTM2NjBiOTUxMDRhZTdjNmRmYmZjZDE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcApAQCAtMTY4NSw3ICsxNjg1LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlv
bjo6cnVuVUlTaWRlU2NyaXB0KFdLU3RyaW5nUmVmIHNjcmlwdCwgdW5zaWduZWQgc2NyaXB0Q2Fs
bGJhY2sKICAgICBtX3BlbmRpbmdVSVNjcmlwdEludm9jYXRpb25EYXRhID0gbnVsbHB0cjsKIAog
ICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQpCi0gICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNj
cmlwdENvbnRleHQgPSBtYWtlVW5pcXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOwogICAgIAog
ICAgIG1fVUlTY3JpcHRDb250ZXh0LT5ydW5VSVNjcmlwdCh0b1dURlN0cmluZyhzY3JpcHQpLCBz
Y3JpcHRDYWxsYmFja0lEKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aAppbmRleCA3ODgwZGQ4ZGY1NTJmYzlkODJiOTRkMWQyZjJkZGZkNmRmODJlYzJiLi44NWIxYjAy
MDZlYjg5MjI2ZTg2YzZiNDFhYjkzZTVkYjk1ZWJmZDkyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAog
Y2xhc3MgVGVzdEludm9jYXRpb24gZmluYWwgOiBwdWJsaWMgVUlTY3JpcHRDb250ZXh0RGVsZWdh
dGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRlc3RJbnZvY2F0aW9uKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXN0SW52b2NhdGlv
bihXS1VSTFJlZiwgY29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCAwZmJmOGVhNTIzZDM0
OGQyNTZlY2M1MjMwNDJkZWEwMmZlY2RkMWRjLi4wZWJmN2JmZDAwMzlmNGVmODA5MzJjMWViNTE5
MmZmNTRlZTNjNGEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0
IFRlc3RPcHQKICAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24gX3NldEFwcGxpY2F0aW9uTWFu
aWZlc3Q6W19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09O
OnRleHQgbWFuaWZlc3RVUkw6bmlsIGRvY3VtZW50VVJMOm5pbF1dOwogICAgIH0KIAotICAgIG1f
bWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29waWVkQ29u
ZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlx
dWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsK
ICAgICBmaW5pc2hDcmVhdGluZ1BsYXRmb3JtV2ViVmlldyhtX21haW5XZWJWaWV3LmdldCgpLCBv
cHRpb25zKTsKIAogICAgIGlmIChvcHRpb25zLnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFy
a01vZGUpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0RGVmYXVs
dENhbGVuZGFyVHlwZShOU1N0cmluZyAqaWRlbnRpZmllcikKIHsKICAgICBtX292ZXJyaWRkZW5D
YWxlbmRhcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGlmICghbV9jYWxlbmRhclN3aXp6
bGVyKQotICAgICAgICBtX2NhbGVuZGFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNz
TWV0aG9kU3dpenpsZXI+KFtOU0NhbGVuZGFyIGNsYXNzXSwgQHNlbGVjdG9yKGN1cnJlbnRDYWxl
bmRhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZENhbGVuZGFyKSk7CisgICAgICAg
IG1fY2FsZW5kYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05T
Q2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6
cmVzZXRDb250ZW50RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Z3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCmluZGV4IGRlNTc4ZjczZmMzNmVjZDE1ODljOTlm
OGRiZjhmY2NjMzk4N2I0MmUuLmVmOWUzOGU3MjNiYWE5NWRmZmU3MGVjNWE4NzVjZmVjODRlMzI4
NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJv
eHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJv
eHlHdGsuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgaW50IGdldEdES0tleVN5bUZvcktleVJlZihX
S1N0cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCBndWludCogbW9kaWZpZXIKICAg
ICAgICAgcmV0dXJuIEdES19LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAg
ICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6
ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCA2YTYxZGY4ZTM1
ZDZmYTA4YzhiMTRjNTFhODIzYzYyZDA4MDVkNGQyLi5mM2M0MTdjN2ZiN2NhYTRkZTQ3NzdjN2E0
OTRmNTNhZjMyYTE4YmZkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9U
ZXN0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0
Q29udHJvbGxlcklPUy5tbQpAQCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYg
b3B0CiAKICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmNsZWFyKCk7CiAgICAgaWYgKCFv
cHRpb25zLnNob3VsZFByZXNlbnRQb3BvdmVycykgewotICAgICAgICBtX3ByZXNlbnRQb3BvdmVy
U3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+
KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxl
cjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVBy
ZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKLSAgICAgICAgbV9wcmVzZW50UG9wb3Zl
clN3aXp6bGVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
PihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZy
b21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkp
OworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPElu
c3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9y
KHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKKyAg
ICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihw
cmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5p
bWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9s
bGVyT3JQb3BvdmVyKSkpOwogICAgIH0KICAgICAKICAgICBCT09MIHNob3VsZFJlc3RvcmVGaXJz
dFJlc3BvbmRlciA9IE5POwpAQCAtMjY5LDkgKzI2OSw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
CiAKICAgICBhdXRvIGNvbnRyb2xsZXJDbGFzcyA9IFVJS2V5Ym9hcmRJbnB1dE1vZGVDb250cm9s
bGVyLmNsYXNzOwogICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnJlc2VydmVDYXBhY2l0eSgzKTsK
LSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJy
ZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRN
b2RlKSkpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVj
dG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4o
c3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5j
aGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29u
dHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6
bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihj
b250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOworICAgIG1faW5wdXRNb2RlU3dp
enpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+
KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2Up
LCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAg
bV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VN
ZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2Rl
cyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKICAg
ICBbVUlLZXlib2FyZEltcGwuc2hhcmVkSW5zdGFuY2UgcHJlcGFyZUtleWJvYXJkSW5wdXRNb2Rl
RnJvbVByZWZlcmVuY2VzOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9FdmVudFNlbmRlclByb3h5Lm1tCmluZGV4IGQxY2ZjNmEzMzIxZTAyOWM4YmE4MTE1ZjRhNmQ5
MjA3ZjhlNzE4NGYuLjg5Y2U0ZWYxMjZjMTVkOTJkY2Y3NjY1MGNlNmVlZjViODkyMzE3MmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQpAQCAt
MzI1LDcgKzMyNSw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVk
IGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllCiAKICAgICBOU1ZpZXcgKnRh
cmdldFZpZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3
KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd11dOwogICAgIGlmICh0YXJnZXRWaWV3
KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVj
dG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRF
dmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3Vz
ZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZl
bnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwogICAgICAgICBbTlNB
cHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRG93
bjpldmVudF07CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC0zNTcs
NyArMzU3LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRv
bk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMKICAgICAgICAgdGFyZ2V0VmlldyA9
IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwogCiAgICAg
QVNTRVJUKHRhcmdldFZpZXcpOwotICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dp
enpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNs
YXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElN
UD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICBhdXRvIGV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVy
PihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6
ZXZlbnRdOwogICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC01OTMsNyArNTkz
LDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91Ymxl
IHkpCiAgICAgLy8gQWx3YXlzIHRhcmdldCBkcmFncyBhdCB0aGUgV0tXZWJWaWV3IHRvIGFsbG93
IGZvciBkcmFnLXNjcm9sbGluZyBvdXRzaWRlIHRoZSB2aWV3LgogICAgIE5TVmlldyAqdGFyZ2V0
VmlldyA9IGlzRHJhZyA/IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpIDogW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygp
IGhpdFRlc3Q6d2luZG93TG9jYXRpb25dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAg
IGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRN
b3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRN
b3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6
emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBA
c2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6
emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJl
bnRFdmVudDpldmVudF07CiAgICAgICAgIGlmIChpc0RyYWcpCiAgICAgICAgICAgICBbdGFyZ2V0
VmlldyBtb3VzZURyYWdnZWQ6ZXZlbnRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAppbmRleCA0NjliZmFmMGU4Y2YyOTA3MzBiYWJm
YTA3ODM2ZDg3N2VjNzBlOGY1Li42OTZmNDU1NzU4OTZmZTgyNjY0ODdkMDk4ZThmZThlZTYxZTU0
ZDU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclBy
b3h5V1BFLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclBy
b3h5V1BFLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB1aW50MzJfdCB3cGVLZXlTeW1G
b3JLZXlSZWYoV0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgdWludDMyCiAg
ICAgICAgIHJldHVybiBXUEVfS0VZX0YxMjsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tT
dHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGtleVJlZik7Ci0gICAgYXV0byBidWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwog
ICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNp
emUpOwogICAgIGNoYXIgY2hhckNvZGUgPSBidWZmZXIuZ2V0KClbMF07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376417</attachid>
            <date>2019-08-15 13:46:01 -0700</date>
            <delta_ts>2019-08-15 14:17:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200620-20190815134600.patch</filename>
            <type>text/plain</type>
            <size>1804973</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YzUxYmVkOWM3ZmQ5ZjMxNjRjNDE5NzJlZWJlNjNkODY5NWJhOGE2Li4zZTNiMWNjYzJlNDdhYTFj
ZmU3MGRmZTRiNmMwMDNkODBiNzE4OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTIgQEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJh
Y2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU0NhbGxi
YWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6SlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOgor
ICAgICAgICAoT3BhcXVlSlNDbGFzc0NvbnRleHREYXRhOjpPcGFxdWVKU0NsYXNzQ29udGV4dERh
dGEpOgorICAgICAgICAoT3BhcXVlSlNDbGFzczo6Y29udGV4dERhdGEpOgorICAgICAgICAqIEFQ
SS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHA6CisgICAgICAgIChKU0NvbnRleHRHcm91
cEFkZE1hcmtpbmdDb25zdHJhaW50KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAoLVtKU1dyYXBwZXJNYXAgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEFyZ3VtZW50VHlw
ZURlbGVnYXRlOjp0eXBlSW50ZWdlcik6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6
dHlwZURvdWJsZSk6CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgor
ICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChBcmd1bWVu
dFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdh
dGU6OnR5cGVTdHJ1Y3QpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlSW50ZWdl
cik6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVEb3VibGUpOgorICAgICAgICAo
UmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlQm9vbCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdh
dGU6OnR5cGVWb2lkKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUlkKToKKyAg
ICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZU9mQ2xhc3MpOgorICAgICAgICAoUmVzdWx0
VHlwZURlbGVnYXRlOjp0eXBlQmxvY2spOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlvbik6
CisgICAgICAgICogQVBJL2dsaWIvSlNDQ29udGV4dC5jcHA6CisgICAgICAgIChqc2NDb250ZXh0
U2V0VmlydHVhbE1hY2hpbmUpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3Bw
OgorICAgICAgICAoSlNDOjpXcmFwcGVyTWFwOjpXcmFwcGVyTWFwKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6ZW5zdXJl
UGFnZUZvcik6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9C
M1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OlByb2NlZHVyZSk6
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmRvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcpOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpiYWNrd2Fy
ZHNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rp
b24pOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6Q29kZTo6Y0NhbGxTcGVjaWFsKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAg
ICogYjMvYWlyL3Rlc3RhaXIuY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5oOgorICAgICAgICAo
Y29tcGlsZVByb2MpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpBY2Nlc3NDYXNlOjpnZW5lcmF0ZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0Fj
Y2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOgorICAgICAgICAoSlND
OjpDYWxsTGlua0luZm86OnNldEZyYW1lU2h1ZmZsZURhdGEpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNs
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENhbGxlZVNhdmVSZWdpc3RlcnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RXhp
dFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpl
bnN1cmVEZWZlcnJlZFNvdXJjZUR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiBieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHA6CisgICAgICAgIChKU0M6
OkNvbXByZXNzZWRMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUhvbGRlcjo6YWRkKToKKyAgICAgICAg
KiBieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oOgorICAgICAgICAoSlNDOjpQb2x5UHJv
dG9BY2Nlc3NDaGFpbjo6Y2xvbmUpOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6
CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6
OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRJbkJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJD
bGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0
dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
U3R1YkluZm86OmFkZEFjY2Vzc0Nhc2UpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6a2lsbHNGb3IpOgor
ICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDUFNDRkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlU1NBRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZVNTQU5h
dHVyYWxMb29wcyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpsaW5rKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KToKKyAg
ICAgICAgKiBkZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OnNsb3dQYXRoQ2FsbCk6CisgICAg
ICAgIChKU0M6OkRGRzo6c2xvd1BhdGhNb3ZlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcnJheWlm
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFsbG9jYXRlTmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpjcmVhdGVOZXdUaHJlYWQpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJs
ZUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjphdFNsb3cpOgorICAgICAgICAq
IGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMRmFpbC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6ZmFpbCk6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpsYXp5U2xvd1BhdGgpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JT
bG93KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFw
KToKKyAgICAgICAgKEpTQzo6SGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om9iamVjdFR5cGVDb3VudHMpOgorICAgICAgICAoSlNDOjpIZWFwOjph
ZGRDb3JlQ29uc3RyYWludHMpOgorICAgICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwU25h
cHNob3RCdWlsZGVyOjpidWlsZFNuYXBzaG90KToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjphZGRTbG93KToKKyAgICAgICAgKiBoZWFw
L0lzb1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNl
KToKKyAgICAgICAgKiBoZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6TWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZCk6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5Vbmlt
cGxlbWVudGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OnJlcG9ydEFQ
SUV4Y2VwdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0YXJ0VGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50
Ojpsb2dUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OnN0b3BUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6
OmNvdW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3Vu
dFJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudDo6
SW5zcGVjdG9ySGVhcEFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50OjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQ6Okluc3BlY3RvclRhcmdldEFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6Y3JlYXRl
Q2xpZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludC5oOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRp
b25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVtLXZh
bHVlcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToKKyAgICAg
ICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUVGh1bmtzOjpKSVRUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNw
cDoKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbCk6CisgICAgICAgICoganNjLmNw
cDoKKyAgICAgICAgKHJ1bkpTQyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnB1c2hMYWJlbCk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5h
Lmg6CisgICAgICAgIChKU0M6OlBhcnNlckFyZW5hOjppZGVudGlmaWVyQXJlbmEpOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpQcm9m
aWxlcjo6Q29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpnZXRTdGFja1RyYWNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
UmFyZURhdGEuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2Nh
dGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y3JlYXRlUmFyZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogcnVudGlt
ZS9KU1J1bkxvb3BUaW1lci5jcHA6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVyOjpNYW5h
Z2VyOjpQZXJWTURhdGE6OlBlclZNRGF0YSk6CisgICAgICAgIChKU0M6OkpTUnVuTG9vcFRpbWVy
OjpNYW5hZ2VyOjpyZWdpc3RlclZNKToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmNw
cDoKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVu
dGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjplbnN1cmVUZW1wbGF0ZU9iamVjdE1hcElt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjplbnN1cmVQcm9wZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldCk6CisgICAgICAg
ICogcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeSk6
CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgIChK
U0M6OlN5bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OlN5bWJvbFRhYmxlOjpzZXRSYXJlRGF0YUNvZGVCbG9jayk6CisgICAgICAgICogcnVudGltZS9U
eXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2hhcGU6OnByb3BlcnR5SGFzaCk6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAg
ICAgIChKU0M6OlZNOjplbnN1cmVIZWFwUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlVHlwZVByb2ZpbGVyKToKKyAgICAgICAgKEpTQzo6Vk06OmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6cXVldWVNaWNyb3Rhc2spOgorICAgICAgICAoSlND
OjpWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdFBhdGNo
cG9pbnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdENoZWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlQWlyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21w
aWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QkJRUGxhbjo6Y29tcGxldGUpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21X
b3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjpXb3JrbGlzdCk6Cisg
ICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0
ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlND
OjpZYXJyOjpCeXRlQ29tcGlsZXI6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6OnJlZ2V4QmVnaW4pOgorICAgICAgICAqIHlh
cnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBp
bGUpOgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJy
OjpDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yOjpjaGFyQ2xhc3MpOgorICAgICAgICAoSlNDOjpZ
YXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6cmVzZXRGb3JSZXBhcnNp
bmcpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFy
ZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVy
bkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKToKKyAgICAgICAg
KEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6YW55Y2hhckNyZWF0ZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorICAgICAgICAoSlNDOjpZYXJyOjpQYXR0ZXJuRGlzanVuY3Rpb246OmFkZE5ld0Fs
dGVybmF0aXZlKToKKyAgICAgICAgKiB5YXJyL2NyZWF0ZV9yZWdleF90YWJsZXM6CisgICAgICAg
ICogeWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHk6CisKIDIwMTktMDgt
MTUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIERh
dGVDb252ZXJzaW9uOjpmb3JtYXREYXRlVGltZSBpbmNvcnJlY3RseSBmb3JtYXRzIG5lZ2F0aXZl
IHllYXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IGEzODNkZGI1MjU5MDMwMjQ4NDgyN2JmNGJmYjRmMjk0NWE1ODVmNjIuLjU3
YWYxNmM1ZmUxODAzYjIyMWY2YjhkMWU0ZjIwN2RkMGQ5NGU3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUg
QEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxs
b2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgYFdURjo6bWFrZVVuaXF1ZTxUPmAgYW5kIGBXVEY6Om1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPFQ+YCBhcyBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBgc3Rk
OjptYWtlX3VuaXF1ZTxUPmAuCisgICAgICAgIGBXVEY6Om1ha2VVbmlxdWU8VD5gIGhhcyBvbmUg
YWRkaXRpb25hbCBgc3RhdGljX2Fzc2VydGAgY2hlY2sgd2hpY2ggZW5zdXJlcyBgVGAgRmFzdE1h
bGxvYyAvIElzb0hlYXAgYW5ub3RhdGVkLiBJZiBpdCBpcyBub3QsIHRoZQorICAgICAgICBjb21w
aWxlIGVycm9yIGhhcHBlbnMuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgSSB0cmllZCB1c2lu
ZyB0aGlzIGV2ZXJ5d2hlcmUgaW4gV2ViS2l0IGFzIG11Y2ggYXMgcG9zc2libGUuIEFuZCB3ZSBm
b3VuZCB0aGF0IHN1cnByaXNpbmdseSBtYW55IGNsYXNzZXMgYXJlIG1pc3NpbmcKKyAgICAgICAg
RmFzdE1hbGxvYyBhbm5vdGF0aW9uIGFuZCBhbGxvY2F0ZWQgZnJvbSBzeXN0ZW0tbWFsbG9jLiBV
c2luZyBXVEY6Om1ha2VVbmlxdWUgZW5mb3JjZXMgY2xhc3NlcyAvIHN0cnVjdHMgdG8gdXNlIEZh
c3RNYWxsb2MuCisKKyAgICAgICAgV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
ayBpcyBvZmZlcmVkIGZvciB0aGUgY29ybmVyIGNhc2VzLiBUaGlzIGlzIGlkZW50aWNhbCB0byBz
dGQ6Om1ha2VfdW5pcXVlLiBXZSB1c2UgdGhpcyBmb3IgY2xhc3NlcworICAgICAgICB0aGF0IGFy
ZSBvZmZlcmVkIGJ5IG5vbi1XZWJLaXQgY29kZSBiYXNlLCBsaWtlLCB6bGliLiBUaGlzIGNsZWFy
IG5hbWUgY2FuIG1ha2UgdXMgZWFzaWx5IGZpbmQgdGhpcyBhbGxvY2F0aW9uIGlzIGludGVudGlv
bmFsbHkgZG9uZQorICAgICAgICBieSBzeXN0ZW0tbWFsbG9jLgorCisgICAgICAgIFdlIGRvIG5v
dCB0YWtlIHRoZSBkaXJlY3Rpb24sIGBXVEY6Om1ha2VVbmlxdWVgIGF1dG9tYXRpY2FsbHkgYWxs
b2NhdGVzIEZhc3RNYWxsb2MgZXZlbiBpZiBGYXN0TWFsbG9jIGFubm90YXRpb24gaXMgbm90IGF0
dGFjaGVkLgorICAgICAgICBTaW5jZSBkZWZhdWx0IGRlbGV0ZXIgaXMgcGVyZm9ybWluZyBgZGVs
ZXRlYCBhbmQgdGhpcyBpcyBub3Qgd2hhdCB3ZSB3YW50IGZvciBGYXN0TWFsbG9jZWQgb25lcywg
d2UgbmVlZCB0byByZXR1cm4KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFQsIEZhc3RGcmVlRGVs
ZXRlcj4gZm9yIFQgaWYgVCBkb2VzIG5vdCBoYXZlIEZhc3RNYWxsb2MtYW5ub3RhdGlvbi4gQXV0
b21hdGljYWxseSBkb2luZyB0aGlzIHNvdW5kcyBhIGJpdCBkYW5nZXJvdXMuCisKKyAgICAgICAg
ICAgIGF1dG8gcG9pbnRlciA9IFdURjo6bWFrZVVuaXF1ZTxUPigpOworICAgICAgICAgICAgLy8g
U3VwZXIgZGFuZ2Vyb3VzLCBidXQgc29tZXRpbWVzIGl0IGlzIHJlcXVpcmVkLi4uCisgICAgICAg
ICAgICBhdXRvKiByYXdQb2ludGVyID0gcG9pbnRlci5yZWxlYXNlKCk7CisgICAgICAgICAgICAv
LyBQYXNzaW5nIHJhd1BvaW50ZXIgdG8gc29tZXdoZXJlLCBhbmQKKyAgICAgICAgICAgIGRlbGV0
ZSByYXdQb2ludGVyOworCisgICAgICAgIFRoZSBhYm92ZSBvbmUgYmVjb21lcyBpbnZhbGlkIGJl
Y2F1c2UgcG9pbnRlciBtYXkgc3RhcnQgcmVxdWlyaW5nIG5vbiBgZGVsZXRlYCBkZXN0cm95aW5n
IGZ1bmN0aW9uLgorICAgICAgICBJbiB0aGUgYWJvdmUgY2FzZSwgdGhlIGNvcnJlY3Qgd2F5IGJl
Y29tZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgcmF3UG9pbnRlci0+flQoKTsKKyAg
ICAgICAgICAgIGZhc3RGcmVlKHJhd1BvaW50ZXIpOworCisgICAgICAgIFRoaXMgbG9va3Mgbm9u
LWludHVpdGl2ZS4gQW5kIGhhdmluZyB0d28gd2F5cyB0byBkZXN0cm95aW5nIG9iamVjdHMgKGBk
ZWxldGVgIG9yIHRoZSBhYm92ZSBvbmUpIGNhbiBiZSBlcnJvci1wcm9uZS4KKyAgICAgICAgSWYg
d2UgaGF2ZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBmb3IgVCwgd2UgZG8gbm90IG5lZWQgdG8g
Y2FyZSBhYm91dCB0aGlzLiAibmV3IiBhbmQgImRlbGV0ZSIgb3BlcmF0b3JzIGFyZSBkZWZpbmVk
LCBhbmQgQysrIHdheSB3b3Jrcy4KKyAgICAgICAgVGhlIHNpbXBsZSBpbnZhcmlhbnQsICJtYWtl
VW5pcXVlIGp1c3QgZG9lcyBgbmV3YCBpbnRlcm5hbGx5LiBBbmQgYGRlbGV0ZWAgb3BlcmF0b3Ig
ZG9lcyBgZGVsZXRlYC4gZGVmYXVsdCBkZWxldGVyIGlzIGp1c3QgZG9pbmcgYGRlbGV0ZWAiLCBp
cyBrZXB0LgorCisgICAgICAgIFdoaWxlIHdlIG5lZWQgdG8gYW5ub3RhdGUgbWFueSBjbGFzc2Vz
IHdpdGggV1RGX01BS0VfRkFTVF9BTExPQ0FURUQsIGl0IGlzIG9uZSB0aW1lIGNvc3Qgd2hlbiB3
ZSBhZGQgYSBjbGFzcy4KKyAgICAgICAgQW5kLCBieSBpbnRyb2R1Y2luZyBgV1RGOjptYWtlVW5p
cXVlPD5gLCB3ZSBubyBsb25nZXIgZm9yZ2V0IGFkZGluZyB0aGlzLgorCisgICAgICAgICAgICBt
YWtlVW5pcXVlKC4uLikKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoVCBpcyBGYXN0TWFsbG9j
ZWQgb3IgSXNvSGVhcGVkKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlX3VuaXF1ZTxUPiguLi4p
CisKKyAgICAgICAgKiBiZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwOgorICAgICAgICAq
IGJlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHA6CisgICAgICAgICogd3RmL0NvbmN1cnJlbnRW
ZWN0b3IuaDoKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHA6CisgICAg
ICAgIChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnRhc2tSdW5Mb29wKToKKyAgICAgICAg
KiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAqIHd0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06Om9wZW4pOgorICAgICAgICAqIHd0Zi9GdW5j
dGlvbi5oOgorICAgICAgICAoV1RGOjpGdW5jdGlvbjxPdXQpOgorICAgICAgICAqIHd0Zi9IYXNo
VGFibGUuaDoKKyAgICAgICAgKFdURjo6S2V5VHJhaXRzPjo6SGFzaFRhYmxlKToKKyAgICAgICAg
KiB3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdURjo6TWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IpOgorICAgICAg
ICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZSk6CisgICAg
ICAgIChXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrKToKKyAgICAgICAgKiB3
dGYvU3RyZWFtQnVmZmVyLmg6CisgICAgICAgIChXVEY6OlN0cmVhbUJ1ZmZlcjo6YXBwZW5kKToK
KyAgICAgICAgKiB3dGYvVW5pcXVlUmVmLmg6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWZX
aXRob3V0RmFzdE1hbGxvY0NoZWNrKToKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZik6Cisg
ICAgICAgICogd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAg
ICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJh
dG9yKToKKwogMjAxOS0wOC0xNSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0ODQ0MC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBlODdmZGI1ZDAxNTljODkxYjMyZGU1N2JlYWM2OTQ4MDAzMzYwMzM3Li4zNmI5OTQ2YjJi
M2QwOGJmZGE3ZWE4ZDJkZTcyNjAyYzNlMjdjNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg4
NSBAQAorMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1h
bGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nRGV2
ZWxvcGVyV2FybmluZyk6CisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckJlYWNvbjo6ZnJvbSk6CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NV2luZG93Q2FjaGVzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL1dvcmtlckds
b2JhbFNjb3BlQ2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
Q2FjaGVzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05h
dmlnYXRvckNyZWRlbnRpYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckNyZWRl
bnRpYWxzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dFBzc2hCb3hlc0Zyb21DZW5jKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpjcmVhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oOgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjprZXlTeXN0ZW0gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpjbGllbnQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpzZXRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJL
ZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVh
dGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1TZXNzaW9uQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoUmVzcG9uc2U6OmZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2
aWdhdG9yR2FtZXBhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpm
cm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAg
ICogTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JHZW9sb2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20p
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5n
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1
b3RhVXNlcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6
YWRkUmVjb3JkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb246OnJlY29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVz
dGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpNZW1vcnlJbmRleDo6bWF5YmVPcGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlQW5kUG9wdWxhdGVJbml0aWFsRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUlu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXli
ZUNyZWF0ZUJhY2tpbmdTdG9yZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkN1cnNvcjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246
OmJlZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklE
QlJlc3VsdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRD
b3B5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nl
c3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFk
ZU5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFz
ZVN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNj
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkluZm86OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblBy
b2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNh
cGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3Zp
ZGVVc2VyTWVkaWFUbyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNj
ZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRl
VHJhbnNjZWl2ZXJCYWNrZW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50Ojp0cmFuc2NlaXZlckJhY2tlbmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6dmlkZW9SZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURU
TUZCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJC
YWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwcm92aWRlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVz
L3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1
b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgor
ICAgICAgICAqIE1vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6Cisg
ICAgICAgICogTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpczo6ZW5zdXJlUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpzYW1wbGVSYXRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNv
ZGluZ1Rhc2s6OnN1Y2Nlc3NDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
c3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjplcnJvckNhbGxiYWNrKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjpEZWNvZGluZ1Rhc2s6OmF1ZGlv
QnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJOb2Rl
OjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFBy
b2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0ZUtl
cm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5jeVJl
c3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9EZWxheU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5v
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHYWluTm9kZTo6R2Fpbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhbm5lck5vZGU6OlBhbm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2ZTo6
Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2VyOjpS
ZWFsdGltZUFuYWx5c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6OnNl
dEZmdFNpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9j
ZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRp
YWxpemVPdmVyc2FtcGxpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
ck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJO
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHA6CisgICAg
ICAgIChmaWRvOjpGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZp
ZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlk
bzo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxl
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNh
Y3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGluZ0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdEYXRhYmFzZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0
aW9uOjpleGVjdXRlU3FsKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVu
VHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZHJpdmVyL05h
dmlnYXRvcldlYkRyaXZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JXZWJEcml2
ZXI6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9s
ZGluZy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rp
b25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpSZW5kZXJGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmNyZWF0ZU5hbWVOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkNoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
Q2hlY2tlcjo6YXNzaWduVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tlcjo6
Zm9yd2FyZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlU2VtYW50aWMpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNo
YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBn
cmFkZVVSTCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lv
blByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpl
bmFibGVEZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6
OmRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6aW5m
bGF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0SW5mbGF0
ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JXZWJWUjo6ZnJvbSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0NvbXB1dGVk
T2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11dGF0ZXMpOgorICAgICAgICAqIGFuaW1hdGlvbi9X
ZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjp1cGRhdGVG
aW5pc2hlZFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dC
YXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVu
dFRhcmdldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0V2ZW50VGFyZ2V0Q2FzdCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRM
b29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZWNvZGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxX
b3JsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToK
KyAgICAgICAgKiBicmlkZ2UvYy9jX2NsYXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OkNDbGFzczo6bWV0aG9kTmFtZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0Ns
YXNzOjpmaWVsZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKiBicmlkZ2UvanNjL0JyaWRnZUpTQy5o
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6Ok9iamNDbGFzczo6ZmllbGROYW1lZCBjb25zdCk6CisgICAgICAgICogYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbE9iakNGYWxs
YmFja09iamVjdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb21iaW5lZFVS
TEZpbHRlcnM6OkNvbWJpbmVkVVJMRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6Q29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKToKKyAgICAgICAgKiBj
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaDoKKyAgICAgICAgKiBj
cnlwdG8vU3VidGxlQ3J5cHRvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZUNyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NUaHJlYWRDb3B5
SW1wb3J0UGFyYW1zKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6CisgICAgICAgICogY3NzL0NTU0Rl
ZmF1bHRTdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NEZWZhdWx0U3R5bGVT
aGVldHM6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0RlZmF1
bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6CisgICAgICAgICogY3NzL0NT
U0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjphcHBlbmRTb3Vy
Y2VzKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxvY2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJl
ZCk6CisgICAgICAgICogY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NLZXlmcmFtZXNSdWxlOjpjc3NSdWxl
cyk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMpOgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmts
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ1NTUGFpbnRXb3JrbGV0Ojpmcm9tKToKKyAg
ICAgICAgKiBjc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Ojpmcm9tKToKKyAgICAgICAgKiBj
c3MvRG9jdW1lbnRSdWxlU2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVT
ZXRzOjpEb2N1bWVudFJ1bGVTZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNl
dHM6OnVwZGF0ZVVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZUlmTmVlZGVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVJ1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRS
dWxlU2V0czo6cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVJbnZh
bGlkYXRpb25SdWxlU2V0cyk6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRl
ZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKToKKyAg
ICAgICAgKiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3JhcEZvckRlcHJlY2F0
ZWRDU1NPTSk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UnVsZUZlYXR1cmVTZXQ6OmFkZCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkVG9SdWxlU2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aCk6CisgICAgICAgICogY3NzL1N0eWxl
QnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVRleHRPckJveFNoYWRvd1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEJveFNoYWRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KToKKyAgICAgICAgKiBjc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3Bl
cnRpZXM6OmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TXV0
YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbik6Cisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2spOgorICAgICAgICAqIGNzcy9t
YWtlcHJvcC5wbDoKKyAgICAgICAgKGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJbmhlcml0VmFs
dWVTZXR0ZXIpOgorICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eVZhbHVlU2V0dGVy
KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VySW1wbDo6Q1NTUGFyc2VySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJJbXBsOjpjb25zdW1lTWVkaWFSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
ckltcGw6OmNvbnN1bWVTdXBwb3J0c1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
SW1wbDo6Y29uc3VtZUtleWZyYW1lc1J1bGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFy
c2VyU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnBh
cnNlUGFnZVBzZXVkb1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVj
dG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3RvclZlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVCYXNpY1NoYXBlUGF0aCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NTZWxlY3RvclBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZVBz
ZXVkbyk6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVCYWNrdXBR
dWV1ZSk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVHJhbnNmZXI6Oml0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9ySW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyYWdTdGFydEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6
c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRvKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpidWlsZEFjY2Vzc0tleUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBsZW1lbnRhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6Zm9ybUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6dXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmF4T2JqZWN0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldFBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFjY2Vzc1NWR0V4
dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRleHRBdXRvU2l6aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlZ2lzdGVyQ1NTUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y29udGVudENoYW5nZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVQYXJzZXJZaWVsZFRva2Vu
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRT
dG9yYWdlQWNjZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vz
czo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vz
czo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5xdWV1ZVRvVXBncmFkZSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpjbGFzc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGF0
YXNldCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVJbnRlcnNlY3Rpb25PYnNl
cnZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlUmVzaXplT2JzZXJ2
ZXJEYXRhKToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjphZGQpOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVz
Lmg6CisgICAgICAgICogZG9tL0V2ZW50UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFBhdGg6OmJ1aWxkUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6OkV2ZW50UGF0
aCk6CisgICAgICAgICogZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmg6CisgICAgICAgICogZG9tL0lk
VGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVyKToKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KToK
KyAgICAgICAgKiBkb20vTWljcm90YXNrcy5oOgorICAgICAgICAoV2ViQ29yZTo6TWljcm90YXNr
UXVldWU6OnZtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdWV1ZU11dGF0aW9uT2JzZXJ2ZXJDb21wb3VuZE1p
Y3JvdGFzayk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVh
dGVJZk5lZWRlZCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6b2Jz
ZXJ2ZWRTdWJ0cmVlTm9kZVdpbGxEZXRhY2gpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6Om1hdGVyaWFsaXplUmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcik6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjplbnN1cmVOb2RlTGlzdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjplbnN1cmVNdXRhdGlvbk9ic2VydmVyRGF0
YSk6CisgICAgICAgICogZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJhZGlvQnV0dG9uR3JvdXBzOjphZGRCdXR0b24pOgorICAgICAgICAqIGRvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpyZXBvcnRVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRyYWNr
ZXJTbG93KToKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6CisgICAgICAgICogZG9t
L1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93Um9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3RG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6YWRkU2xvdEVsZW1lbnRCeU5h
bWUpOgorICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xvdCk6CisgICAgICAgICogZG9tL1RyZWVTY29w
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVTY29wZTo6YWRkRWxlbWVudEJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OmFkZEltYWdlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRkSW1hZ2VF
bGVtZW50QnlVc2VtYXApOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpsYWJlbEVsZW1l
bnRGb3JJZCk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURhdGFU
cmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6RWRp
dG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNlbWVu
dEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kQ3JlYXRl
Tm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6OkhUTUxD
b252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29tcHV0ZWRTdHlsZVBy
b3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KToKKyAgICAgICAgKiBm
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxsT25GaWxl
VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6QXN5bmNGaWxlU3Ry
ZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6Cisg
ICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAqIGh0
bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpy
ZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0YXRlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQXJl
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OjptYXBNb3Vz
ZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29s
bGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Ojp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphZGRUb1Bh
c3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6CisgICAgICAgICogaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1sL0hU
TUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNp
emVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cmVsTGlzdCk6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAgKiBo
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAgICAq
IGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdW1t
YXJ5RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25NZXNz
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5k
U3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVxdWVz
dFRvSGlkZU1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dDo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xlKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjppbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVs
ZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRT
dGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFn
U2Nhbm5lcjo6Y3JlYXRlUHJlbG9hZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6
ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5u
ZXJUZXh0RWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNr
L0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2Vu
ZXJpY1RleHRUcmFjazo6cGFyc2VyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdlYlZU
VFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJhY2s6
OnBhcnNlcik6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6aW5z
ZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RWRpdG9yOjpzZXRPdXRlckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjppbnNl
cnRBZGphY2VudEhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNlV2hv
bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3Vw
cG9ydDo6Y3JlYXRlRGlnZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0
b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNy
ZWF0ZUxhenlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5zdXJlSW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZW5zdXJlRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6ZW5zdXJlUGFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJsZVN0
YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29y
a2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQ6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zy
b21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omhp
Z2hsaWdodFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVy
SGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldElu
c3BlY3RlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZElu
dmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQ
YWdlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
V29ya2VyQWdlbnQ6Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25zb2xl
QWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25zb2xl
QWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dlYkhl
YXBBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0
aW9uTG9nKToKKyAgICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5n
U3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBsYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50IGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAgICAq
IGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6
YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
OjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFw
cGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lTGluZS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06
OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiBs
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAgICAg
ICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6YXBwZW5kQ2VsbCk6CisgICAgICAgICogbGF5b3V0L3Rh
YmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAg
ICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExv
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9u
TWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hp
dmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hp
dmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5S
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMpOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6
CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oOgorICAgICAgICAqIGxvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25T
Y2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlv
blNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2Nr
KToKKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oOgorICAgICAgICAqIGxv
YWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFj
a2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tG
b3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAg
ICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFk
QnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2
ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50VG9TZXQpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpwcmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpjbGVhclByZWxvYWRzKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlOjpsb2FkUmVxdWVzdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpkb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAgICog
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNh
Y2hlOjplbnN1cmVTZXNzaW9uUmVzb3VyY2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
bHJ1TGlzdEZvcik6CisgICAgICAgICogbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoLVtXZWJQcmV2aWV3
TG9hZGVyIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6cmVzb3VyY2VSZXNwb25zZTpdKToKKyAgICAg
ICAgKC1bV2ViUHJldmlld0xvYWRlciBjb25uZWN0aW9uOmRpZEZhaWxXaXRoRXJyb3I6XSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQcmV2aWV3TG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6bWF5
YmVDcmVhdGVDb250ZXh0TWVudSk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVn
aW9uKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRWaWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlRm9yUGFnaW5h
dGlvbklmTmVlZGVkKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcik6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6aW5pdEdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFJlc291
cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSk6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5k
TGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3Qp
OgorICAgICAgICAqIHBhZ2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VH
cm91cDo6Y2FwdGlvblByZWZlcmVuY2VzKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjptYXJrKToKKyAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlOjpjbGVhck1hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1h
bmNlOjptZWFzdXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjpjbGVhck1lYXN1
cmVzKToKKyAgICAgICAgKiBwYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oOgorICAgICAgICAqIHBh
Z2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6b3V0
cHV0TGlua2VkRGVzdGluYXRpb25zKToKKyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6
OnN0YXJ0VGltZXIpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFnZS9SZXNpemVPYnNlcnZlci5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQ
b2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZSk6CisgICAgICAgICog
cGFnZS9TdXNwZW5kYWJsZVRpbWVyLmg6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRk
VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0FuaW1hdGlvbkNvbnRyb2xsZXI6OkNTU0FuaW1hdGlvbkNvbnRyb2xs
ZXIpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0
eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcjo6UHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVj
dGVkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyc1Byb3BlcnR5V3JhcHBlcjo6
RmlsbExheWVyc1Byb3BlcnR5V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eUFuaW1hdGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCk6Cisg
ICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZik6CisgICAgICAg
ICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmg6CisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c2V0
Q1NQRGlyZWN0aXZlKToKKyAgICAgICAgKiBwYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIu
aDoKKyAgICAgICAgKiBwYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmg6CisgICAgICAgICog
cGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAq
IHBhZ2UvbWFjL1BhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRTY2hlZHVs
ZVBhaXIpOgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5m
by5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlVHJlZTo6Y29tbWl0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
Tm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vQ1BVTW9uaXRv
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVNb25pdG9yLmg6CisgICAgICAgICogcGxhdGZv
cm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51
c0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpibGVuZE1peGVkVHlwZXMpOgorICAgICAgICAq
IHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6
OnNjcm9sbEFuaW1hdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVh
OjplbnN1cmVTbmFwT2Zmc2V0c0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL1N1ZGRlblRlcm1p
bmF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0J1czo6QXVkaW9CdXMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdXM6OmNvcHlXaXRoR2Fp
bkZyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1czo6bnVtYmVyT2ZDaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0J1czo6Y2hhbm5lbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1czo6Y2hhbm5lbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1czo6bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVzOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVzOjpzZXRTYW1wbGVSYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVzOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6QXVkaW9C
dXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpBdWRpb0NoYW5uZWwpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9DaGFubmVsOjpzZXQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9DaGFubmVsOjpsZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9DaGFubmVsOjptdXRhYmxlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6OmRhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9DaGFubmVsOjp6ZXJvKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQ2hhbm5lbDo6Y2xlYXJTaWxlbnRGbGFnKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ2hhbm5lbDo6aXNTaWxlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0F1ZGlvRklGTy5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GSUZPOjpmcmFt
ZXNJbkZpZm8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GSUZPOjp1
cGRhdGVJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxs
RklGTy5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcjo6Y29uZmlndXJlQ2hhbm5lbHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Jlc2FtcGxlcjo6cmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRp
b1Nlc3Npb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vQ29uZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6c2V0SW5uZXJBbmds
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0Ojppbm5lckFuZ2xlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZlY3Q6OnNldE91dGVyQW5n
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6b3V0ZXJBbmdsZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZmZWN0OjpzZXRPdXRlckdh
aW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVmZmVjdDo6b3V0ZXJHYWluIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpEZW5vcm1hbERpc2FibGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6On5EZW5vcm1h
bERpc2FibGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6
OmZsdXNoRGVub3JtYWxGbG9hdFRvWmVybyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
ZW5vcm1hbERpc2FibGVyOjpnZXRDU1IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVu
b3JtYWxEaXNhYmxlcjo6c2V0Q1NSKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9EaXJlY3RDb252b2x2ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6Om1vZGVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjpzZXRNb2RlbCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6c2V0UmVmRGlzdGFuY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldE1heERpc3RhbmNlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjpzZXRSb2xsb2ZmRmFjdG9yKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjpyZWZEaXN0YW5jZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bWF4RGlz
dGFuY2UgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6
OnJvbGxvZmZGYWN0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0Rvd25TYW1wbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNhbXBsZVJhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpueXF1
aXN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nv
cjo6dGFpbFRpbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3ND
b21wcmVzc29yOjpsYXRlbmN5VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OmxhdGVuY3lGcmFtZXMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzYW1w
bGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbDo6bWV0ZXJpbmdHYWluIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
RkZUQ29udm9sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGRlRDb252b2x2ZXI6OmZmdFNpemUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpjcmVhdGVJbnRlcnBvbGF0ZWRGcmFtZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpIUlRGRGF0YWJhc2U6Om51bWJlck9mQXppbXV0aHMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SFJURkRhdGFiYXNlOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9I
UlRGRWxldmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0
ZUZvclN1YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJ
bnRlcnBvbGF0aW5nU2xpY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpIUlRGRWxldmF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246Omtlcm5lbExpc3RMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246Omtlcm5lbExpc3RSKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmVsZXZhdGlvbkFuZ2xl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246Om51bWJl
ck9mQXppbXV0aHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZh
dGlvbjo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vSFJURktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2VybmVsOjpIUlRGS2Vy
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OmNyZWF0ZUltcHVsc2VSZXNwb25z
ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFJURlBhbm5lcjo6ZmZ0U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIUlRGUGFubmVyOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TXVsdGlDaGFubmVsUmVzYW1wbGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXI6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbml0aWFsaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJldmVyYjo6aW1wdWxzZVJlc3BvbnNlTGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcjo6cmVhZEluZGV4IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcjo6cmVhZFRpbWVG
cmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29u
dm9sdmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6aW1wdWxzZVJlc3BvbnNlTGVuZ3RoIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6aW5wdXRC
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp1c2VC
YWNrZ3JvdW5kVGhyZWFkcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29u
dm9sdmVyU3RhZ2U6OlJldmVyYkNvbnZvbHZlclN0YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29u
dm9sdmVyU3RhZ2U6OmlucHV0UmVhZEluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2
ZXJiSW5wdXRCdWZmZXI6OndyaXRlSW5kZXggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9V
cFNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6WmVyb1BvbGU6Olplcm9Qb2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Olplcm9Qb2xlOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9s
ZTo6c2V0WmVybyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6c2V0UG9s
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6emVybyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6cG9sZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb0J1ZmZlckxpc3Q6Omxpc3QgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0OjpvcGVyYXRvciBBdWRpb0J1
ZmZlckxpc3QmIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVm
ZmVyTGlzdDo6a2luZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Np
b25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZvcm1hdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdCk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0NBUmluZ0J1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRGVjb2Rl
ckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rlcik6CisgICAg
ICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFk
U2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBv
aW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9yeUNsZWFyS2V5OjpjcmVhdGVD
RE0pOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBh
ZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJ
REdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlk
ZXI6OmRldmljZUFkZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rl
ckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6RGlj
dGlvbmFyeTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5l
cmljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dExheW91dDo6
VGV4dExheW91dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6ZW5zdXJlRGVyaXZlZEZvbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojpib3VuZHNGb3JHbHlwaCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNj
YWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGVGb250czo6R2x5cGhQYWdlQ2FjaGVFbnRyeTo6c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDxUPjo6bG9jYXRlUGFnZVNsb3dDYXNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0
Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZFdp
dGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0
aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50R3JhcGg6OmZpbmRPckNy
ZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNoYXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6Y29weVNoYXBlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9WZWxvY2l0eURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5n
OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjcmVhdGVT
ZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFp
clBsYXlTdHJlYW1pbmdQc3NoQm94Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9u
TWFuYWdlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
TWFjOjpwbGF0Zm9ybVBpY2tlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0
ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxk
V2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFW
RldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVy
SXRlbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6
c2V0QXNzZXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpyZWFkVHJhY2tNZXRhZGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVSb3RhdGlvblNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrV2l0aFRvbGVyYW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJy
ZW50RnJhbWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1l
ZGlhU2VsZWN0b25PcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJBbmltYXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21L
ZXlmcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6YWRqdXN0VGlsZUNvdmVyYWdlUmVjdEZvclNjcm9s
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJ
bmRpY2F0b3JMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6Y29tbW9uSW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2Nv
YTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW06CisgICAgICAgICgtW1dlYlRpbGVkQmFja2lu
Z0xheWVyIGNyZWF0ZVRpbGVDb250cm9sbGVyOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxh
eWVyV2luOjpQbGF0Zm9ybUNBTGF5ZXJXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHA6CisgICAgICAgIChXZWJUaWxlZEJh
Y2tpbmdMYXllcldpbjo6Y3JlYXRlVGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KToKKyAg
ICAgICAgKFdlYkNvcmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAgIChX
ZWJDb3JlOjpJT1N1cmZhY2U6OmVuc3VyZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAg
ICAgICAgKFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9uVlQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVydGllczo6aXNJZGVudGl0
eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUOjp0cmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6cm90YXRpb25Qcm9wZXJ0aWVzIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnNpemUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6cm90YXRlZFNpemUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9y
bWVyQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ1Y6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpsb2FkRXh0ZXJuYWxEb2N1bWVudElmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVl
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjplbnN1cmVBdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
dXNoVGV4dHVyZVRvQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29w
aWVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6YnVmZmVyZWQgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVI
b2xlUHVuY2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1NjaGVtZUluZm9ybWF0aW9uQm94OjpwYXJzZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJU09TdHJpbmdCb3g6OmNvbnRlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmg6CisgICAgICAgIChXZWJDb3JlOjpJU09XZWJW
VFRDdWU6OmJveFR5cGVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZU
VEN1ZTo6cHJlc2VudGF0aW9uVGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6OmR1cmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OklTT1dlYlZUVEN1ZTo6c291cmNlSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SVNPV2ViVlRUQ3VlOjppZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJU09XZWJWVFRDdWU6Om9yaWdpbmFsU3RhcnRUaW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6c2V0dGluZ3MgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpjdWVUZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09wZXJhdGlvbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdy
YXRpb24uY3BwOgorICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBk
YXRlU2NvcGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRl
Q29tbWFuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdD
b250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lh
OjpQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3Rv
cmVUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNv
bXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxh
eWVyVGV4dHVyZU1hcHBlckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAg
ICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3Rv
cnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFD
b250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwOgorICAgICAgICAoTmljb3Np
YTo6R0MzRExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVN
YXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkltYWdlQmFja2luZ1RleHR1cmVNYXBw
ZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNp
b25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1h
cHBlZFN5bWJvbE5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVy
c0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
R0w6OlRleHR1cmVNYXBwZXJHTCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpw
bGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNsb25lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50QnVm
ZmVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1Rp
bGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGls
ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpvcGVy
YXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpzZXRMYXN0UGxhbmFyU2Vjb25k
YXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6OnNldFNlY29uZGFy
eVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5Db250cm9sbGVyOjpGdWxsU2NyZWVuQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJvbGxlcjo6ZW50ZXJG
dWxsU2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OkdyYXBo
aWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
SW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6bV9wcml2YXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlV2luZG93c0JpdG1hcCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFGb3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6YnVmZmVyZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpDdXN0b21WaWRl
b1ByZXNlbnRlcjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0tDQUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEhlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNs
aXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRn
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZVNjcm9sbGJhcjo6UmVuZGVyVGhlbWVTY3JvbGxiYXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVDb21ib0JveDo6UmVuZGVyVGhlbWVDb21ib0JveCk6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OmRlY29kZUhlbHBlcik6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKEdJRkZy
YW1lQ29udGV4dDo6ZGVjb2RlKToKKyAgICAgICAgKEdJRkltYWdlUmVhZGVyOjphZGRGcmFtZUlm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6ZGVjb2Rl
QXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6OmRlY29k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVRpbGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9MZWdhY3lUaWxlR3JpZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Ap
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAoV2ViQ29yZTo6
cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90
ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvU2Nyb2xs
QW5pbWF0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUmVt
b3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFu
ZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlQVZGSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9jYXB0
dXJlcik6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OkdT
dHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6R1N0
cmVhbWVyQXVkaW9EYXRhOjpHU3RyZWFtZXJBdWRpb0RhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9EYXRhOjpnZXRTYW1wbGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9EYXRhOjpnZXRBdWRpb0luZm8pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9EYXRhOjpraW5kIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2Fw
dHVyZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0X21lZGlh
X3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
U3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1cmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rv
cnk6OkNyZWF0ZVZpZGVvRW5jb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5OjpCYXNp
Y1BhY2tldFNvY2tldEZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZVBlZXJD
b25uZWN0aW9uRmFjdG9yeUFuZFRocmVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRD
UHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1Byb3ZpZGVyOjpjZXJ0aWZpY2F0ZUdlbmVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFt
ZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1By
b3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E6OmF1
ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29udmVydFRv
WVVWKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
Ojpyb3RhdGVQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9NZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDTm90aWZpZXJz
TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpm
aXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6
OmNyZWF0ZURlY29kZVRhc2spOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VF
cnJvckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2sgX3Jlc3RhcnRdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6
OnNlYXJjaENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyREI6OmNyZWF0ZVBy
ZXBhcmVTdGF0ZW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsQ29udGV4dDo6Q3VybENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhh
bmRsZTo6d2lsbFNldHVwU3NsQ3R4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1E
YXRhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0
UG9zdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6cnVuT25NYWluVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpzZXR1cFRyYW5zZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOl0pOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkROU1Jlc29sdmVRdWV1ZVNvdXA6OnJlc29sdmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bkludGVybmFsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L0xvY2FsZU5vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb2RlY0lDVTo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQv
VGV4dENvZGVjTGF0aW4xLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0xhdGluMTo6
cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFj
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lz
dGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjE2OjpyZWdpc3RlckNvZGVjcyk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb2RlY1VURjg6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1Vz
ZXJEZWZpbmVkOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbGU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dpbik6CisgICAgICAgICogcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZSLmg6CisgICAgICAgICogcGxh
dGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmdldFZSRGlzcGxheXMpOgorICAgICAgICAqIHBs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBv
cHVwTWVudURCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjpjcmVh
dGVQcmVwYXJlZFN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dDRGF0YU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXQ0RhdGFPYmplY3Q6OlNldERhdGEpOgorICAgICAg
ICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVy
OjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL0NvbXBsZXhMaW5l
TGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJ1bik6CisgICAgICAgIChXZWJD
b3JlOjpDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9vdElubGluZUJveCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGbG9hdGluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2Jq
ZWN0Ojpjb3B5VG9OZXdDb250YWluZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRp
bmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZs
b2F0aW5nT2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZsb2F0c1RyZWUpOgorICAgICAgICAqIHJlbmRl
cmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5
R3JpZEFyZWEpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGlu
ZUFsaWdubWVudENvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
Ojpjb21wdXRlRmxleEZhY3RvclVuaXRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
aWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2V0dXApOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RS
ZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bXV0YWJsZUxpc3RCYXNlZFRlc3RS
ZXN1bHQpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjphZGRQbGFjZWhv
bGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGF5ZXJPdmVy
bGFwTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT3ZlcmxhcE1hcDo6cHVzaENvbXBv
c2l0aW5nQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb25lZERlc2NlbmRhbnRzTWFwOjphZGREZXNjZW5kYW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxh
eW91dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUJsb2NrUmFyZURhdGEp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxpbmVDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVHcmlkQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxvYXRpbmdPYmplY3RzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlTGluZUJveGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0YSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjcmVh
dGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZW5zdXJlQ29udGlu
dWF0aW9uQ2hhaW5Ob2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5vZGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
cmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJhZ21lbnRJbmZvKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVudE1hcCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdl
b21ldHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpw
dXNoVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0b1JlcGVhdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRT
cGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpSZW5kZXJJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3gpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
dXBkYXRlTm9ybWFsRmxvd0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNv
bGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5nU3RhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OlJlbmRlckxheWVyQ29tcG9zaXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVm
b3JlRGlzcGxheVJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViS2l0U2Nyb2xs
aW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJy
ZWFrOjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtbkZsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93OjpS
ZW5kZXJNdWx0aUNvbHVtbkZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjplbnN1cmVSYXJlRGF0YSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojptb21lbnRhcmlseVJldmVhbExhc3RU
eXBlZENoYXJhY3Rlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y29tcG9zaXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWaWV3OjppbWFnZVF1YWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFj
Y3VtdWxhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJv
eDo6YXBwZW5kRmxvYXQpOgorICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3Rpb25SYW5nZURhdGE6OmNvbGxlY3RCb3VuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseSk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGF5b3V0
OjpydW5SZXNvbHZlciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6cGFp
bnRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmdlbmVyYXRlTGlu
ZUJveFRyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZzo6YWRkVGV4dE5vZGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVCcmVh
a2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6
OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnNldFNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNpcmNsZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUVsbGlwc2VTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb2x5Z29uU2hh
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6Y3JlYXRlQm94U2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlUGF0aDo6YmxlbmQgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpGaWxsTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Y2xvbmVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFkZENhY2hl
ZFBzZXVkb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphZGRDdXN0b21Q
YWludFdhdGNoUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJl
Y3RpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjplbnN1cmVUcmFuc2l0aW9ucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVNoYWRvd1NWR0RhdGE6OlN0eWxlU2hhZG93U1ZHRGF0YSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJp
dGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGlu
ZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6
OmNyZWF0ZVRleHRCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6
OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6dXBkYXRl
U2hhcGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jlc291cmNlczo6c2V0TWFya2VyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVz
b3VyY2VzOjpzZXRNYXJrZXJNaWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRNYXJrZXJFbmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRGaWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Jlc291cmNlczo6c2V0U3Ryb2tlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0Nh
Y2hlOjphZGRSZXNvdXJjZXNGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRy
aWNzQnVpbGRlcjo6aW5pdGlhbGl6ZU1lYXN1cmVtZW50V2l0aFRleHRSZW5kZXJlcik6CisgICAg
ICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRyZWVCdWlsZGVyOjpSZW5kZXJUcmVlQnVpbGRlcik6CisgICAgICAg
ICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpSZW5kZXJUcmVlVXBkYXRlcik6CisgICAgICAgICog
cmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlSW52YWxpZGF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkludmFsaWRhdG9yOjpJbnZhbGlkYXRv
cik6CisgICAgICAgICogc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OmNvbW1pdFJlbGF0aW9uc1RvUmVuZGVyU3R5bGUpOgorICAgICAgICAqIHN0eWxl
L1N0eWxlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZXNvbHZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmFjdGl2ZVN0eWxlU2hlZXRzQ29u
dGFpbnMgY29uc3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmUpOgorICAgICAgICAq
IHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJn
ZXQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OlNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6ZW5z
dXJlU1ZHUmFyZURhdGEpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdXBwbGVtZW50YWxUcmFuc2Zv
cm0pOgorICAgICAgICAqIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aEJ5dGVTdHJlYW06OmNvcHkgY29uc3QpOgorICAgICAgICAqIHN2Zy9hbmltYXRp
b24vU01JTFRpbWVDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250
YWluZXI6OnNjaGVkdWxlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ByaW1p
dGl2ZVByb3BlcnR5QW5pbWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMv
U1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6
ZnJvbSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3R1YkZyb250ZW5kOjpJbnNwZWN0b3JTdHViRnJvbnRlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OnNldFByaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
aW5pdGlhbGl6ZU1vY2tDRE0pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpxdWV1ZU1p
Y3JvVGFzayk6CisgICAgICAgICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHRlc3Rp
bmcvTGVnYWN5TW9ja0NETS5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6OmNyZWF0
ZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tHYW1lcGFkUHJvdmlkZXI6OnNldE1vY2tHYW1lcGFkRGV0YWlscyk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckV2
ZW50UXVldWUuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclJ1bkxvb3A6OldvcmtlclJ1bkxvb3ApOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6Omxv
YWRBc3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6
OmNyZWF0ZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlYWR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lz
dHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRS
ZWdpc3RyYXRpb25zKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRl
V29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVyKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcjo6U1dTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNjaGVkdWxl
Sm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVy
Sm9iKToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludCk6
CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAg
KiB3b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
bGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0
cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdFdpdGhTdWJjbGFzcyk6CisgICAgICAgICogeG1s
L1hNTEVycm9ycy5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6dXBsb2FkKToKKyAgICAgICAgKiB4bWwvWFBhdGhG
dW5jdGlvbnMuY3BwOgorICAgICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYUGF0aDo6ZXZhbHVhdGVQcmVkaWNhdGUpOgorICAgICAgICAqIHhtbC9YU0xT
dHlsZVNoZWV0TGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0Ojps
b2FkQ2hpbGRTaGVldCk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZFN0YXJ0RWxlbWVudE5TQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRW5kRWxlbWVu
dE5TQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5k
Q2hhcmFjdGVyc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6
OmFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENEQVRBQmxvY2tDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRDb21tZW50Q2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kSW50ZXJuYWxTdWJzZXRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRFcnJvckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBh
cnNlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQpOgorCiAy
MDE5LTA4LTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIERlYnVnIGJ1aWxkIGZpeCBhZnRlciByMjQ4NzMwLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
aW5kZXggNjBlN2ZiNTZjOTcwNWUxOWZjODliYzhhNmJkNGY0MjNlZjE2MjViZS4uMjRjYzJkODNi
Njk1NTUwOTg1MDBlNzViMGQzZDYwN2E5ZTExOTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcDoKKyAg
ICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw6OmNyZWF0ZSk6CisgICAgICAgICog
cGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwOgorICAgICAgICAoUEFMOjpDbG9jazo6Y3JlYXRl
KToKKyAgICAgICAgKiBwYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tOgorICAgICAgICAoQ2xvY2s6
OmNyZWF0ZSk6CisKIDIwMTktMDgtMTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9n
CmluZGV4IDM1OGYyYmYwMDVhZTY0NGQ4MTIzMjhkNWRlZGU0MTljOGJhMDFjZmIuLmIwMmJhNzIx
YWZmYmE3YjllN2JlNDYxN2IzZWNjMjU3MzBlMDg1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZh
c3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2
ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKToKKyAgICAgICAgKiBnbGliL1Nlc3Npb25Ib3N0
R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpsYXVuY2hCcm93c2Vy
KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5k
KToKKwogMjAxOS0wNi0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjQ1NTY3KTogW0dUS11bV1BFXSBbMi4yNS4xXSBX
ZWJLaXRXZWJEcml2ZXIgZ2V0cyBpbnN0YWxsZWQgYXMgV2ViRHJpdmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZk
NWVlN2EyNjZjOTFjZWM3NmZmNzMxOTYxMzU2YTAxM2E2ZWJkZmUuLjc2YjNmNTE0Yzk1MTdhZDAy
MDE5NDk3ZWNmNzMwMjQ4MDhjZmJkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQ2IEBACisyMDE5
LTA4LTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dU
Rl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2spOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0
aXN0aWNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9t
UHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
clNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9h
ZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURv
d25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hcDo6YWRkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVj
dGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdl
cjo6YWRkQ29udGVudFJ1bGVMaXN0cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6
Ok5ldHdvcmtEYXRhVGFza0Jsb2IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tC
bG9iOjpkb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBn
cmFkZUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1Jl
cXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRDaGVja2Vy
Ojpjb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5z
dXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZv
clNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1
b3RhVXNlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3Rh
TWFuYWdlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFkZFN1cHBsZW1lbnQpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Om1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nv
Y2tldENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6Q2FjaGUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlUmVkaXJlY3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnVwZGF0ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpyZWdpc3RlclN1YnJlc291cmNlTG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmll
dmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OmFkZFByZWxvYWRlZEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRl
U3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWFkUmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpyZXRyaWV2ZUZyb21NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Rv
cmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTdWJyZXNvdXJjZXNFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBy
ZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3Rv
cmVSZWRpcmVjdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1
bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lv
bkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkQmVjb21lRG93bmxvYWRUYXNrOl0pOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2EuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lv
biBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1
cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNl
bnRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtT
ZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6TmV0
d29ya1Nlc3Npb25Tb3VwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Tb3VwOjpj
cmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtUmVhZEFzeW5jKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tl
dFRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTURO
U1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya01ETlNSZWdpc3Rlcjo6cmVn
aXN0ZXJNRE5TTmFtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0
VXBkYXRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtS
VENQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRl
U29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQ
Q29ubmVjdGlvbik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1l
c3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29k
ZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhy
b3R0bGluZyk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2Up
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5j
UmVwbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQ
Qzo6RGVjb2Rlcjo6dW53cmFwRm9yVGVzdGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0hh
bmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKElQQzo6aGFuZGxlTWVzc2FnZUFzeW5jKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb25UZXJt
aW5hdGlvbldhdGNoZG9nOjpDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZyk6CisgICAgICAg
IChJUEM6OkNvbm5lY3Rpb246Om9wZW4pOgorICAgICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVj
b2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRs
ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3dp
bi9Db25uZWN0aW9uV2luLmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZEV2ZW50
SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vTW9kdWxlLmg6CisgICAgICAgICogUGxhdGZv
cm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9z
dGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3Rp
bmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5n
UHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFs
KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNy
ZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgt
W19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgt
W19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAg
ICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpd
KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoK
KyAgICAgICAgKHdlYmtpdENvbnRleHRNZW51SXRlbUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9uZXdfZnJvbV9nYWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfZnJvbV9zdG9ja19hY3Rpb24pOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250
ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFj
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAg
KiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisgICAgICAg
ICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnRleG1hcExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpUaHJlYWRlZENvbXBvc2l0b3I6OlRocmVhZGVkQ29tcG9zaXRvcik6Cisg
ICAgICAgICogU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAg
ICAgKiBTaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGll
czo6TGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6
CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAq
IFNoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQ29udGV4dE1lbnVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25s
b2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJRnVsbHNjcmVlbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJR2VvbG9j
YXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0
b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6SFRUUENvb2tpZVN0b3JlOjpyZWdpc3Rlck9ic2VydmVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElM
ZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNs
aWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdL
Q29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tH
ZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQ
cm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdl
Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAg
KFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdl
Rm9ybUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09i
c2VydmFibGVQYWdlU3RhdGUgaW5pdFdpdGhQYWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy93cGUvV0tWaWV3LmNwcDoKKyAgICAgICAgKFdLVmlld1NldFZpZXdDbGllbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJl
ZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1t
OgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9yZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJv
Y2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50
Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtX
S1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2Vy
Q29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAg
ICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24gc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5t
bToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpyZWFkeVNRTGl0ZVN0YXRlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRBdXRvbWF0aW9uU2Vzc2lv
bkNvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4
dE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoQ29udGV4dE1lbnVDbGllbnRUb1ZpZXcp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRD
bGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAg
ICAgICAod2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHdlYmtpdEZpbmRDb250
cm9sbGVyQ29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
b3JtQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEZvcm1DbGllbnRUb1ZpZXcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAg
ICAgICAod2Via2l0R2VvbG9jYXRpb25NYW5hZ2VyQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNo
SWNvbkxvYWRpbmdDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hJbmplY3RlZEJ1
bmRsZUNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdE5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaFVJQ2xpZW50
VG9WaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rl
cl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKToKKyAgICAgICAgKHdlYmtpdF91c2VyX2NvbnRlbnRf
bWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyX2luX3dvcmxkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3
ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0
X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcDoKKyAgICAgICAgKHdl
YmtpdEVtb2ppQ2hvb3NlclNldHVwRW1vamlTZWN0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwOgor
ICAgICAgICAod2Via2l0V2ViSW5zcGVjdG9yQ3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFz
ZUNvbnN0cnVjdGVkKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlR2VzdHVyZUNvbnRyb2xs
ZXIpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIpOgorICAg
ICAgICAod2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IG1heWJlSW5z
dGFsbEljb25Mb2FkaW5nQ2xpZW50XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1l
OnByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93
cGUvQVBJVmlld0NsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVh
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9s
bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHA6CisgICAgICAg
IChXS1dQRTo6Vmlldzo6Vmlldyk6CisgICAgICAgIChXS1dQRTo6Vmlldzo6c2V0Q2xpZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwOgorICAgICAgICAo
V1BFUXRWaWV3Ojpub3RpZnlMb2FkQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKFdQRVF0Vmll
dzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKToKKyAgICAgICAgKFdQRVF0Vmlldzo6cnVuSmF2
YVNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2Vu
ZC5jcHA6CisgICAgICAgIChXUEVRdFZpZXdCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRpb25TZXNzaW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRp
b25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxv
YWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNyZWF0ZVVJQ2xpZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNl
Rm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzdGFydERpc3BsYXlMaW5rKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFRleHRJbmRpY2F0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9yYXRlVXBkYXRlKToKKyAgICAgICAgKFdlYktp
dDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BhdGNoQWZ0ZXJFbnN1
cmluZ0RyYXdpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpnZXREYXRh
RnJvbURlY29kZXIgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZTo6Y29tcGxldGVEZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbCk6CisgICAgICAgICog
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvR2FtZXBhZC9V
SUdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVy
OjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMpOgorICAgICAgICAoV2ViS2l0OjpVSUdhbWVw
YWRQcm92aWRlcjo6cGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VVcGxvYWRBc3NlcnRpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6c2V0UHJvdmlkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3Bw
OgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5SZXF1aXJlc0d0azIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90
dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9T
Ojpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVt
b3RlTWFjOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAg
ICAgICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZv
Y3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFu
YWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5h
dmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6V2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6Om1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRJY29uTG9hZGluZ0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0RmluZENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RmluZE1h
dGNoZXNDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRN
ZW51Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJbmplY3RlZEJ1
bmRsZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQXR0
YWNoVG9SdW5uaW5nUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0
RHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZ1bGxzY3JlZW5DbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29s
bGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNwZWVjaFN5
bnRoZXNpc0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Oldl
YlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEluamVj
dGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEhp
c3RvcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxv
YWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlv
bkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fkcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJhY2tpbmdT
dG9yZTo6Y3JlYXRlQmFja2VuZCk6CisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50
OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlV2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVudHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvRHJh
Z0FuZERyb3BIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVy
OjpkcmFnRGF0YVNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJv
cEhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2F5bGFuZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0wpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tOgorICAgICAgICAo
V2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOgorICAg
ICAgICAoLVtXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcgZGlkTW92ZVRvV2luZG93XSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpjb25maWd1
cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vz
c1Bvb2w6Y29uZmlndXJhdGlvbjp3ZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9jcmVhdGVEcmF3aW5nQXJlYVByb3h5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVw
SW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBiZWNvbWVGaXJzdFJlc3Bv
bmRlckZvcldlYlZpZXddKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZv
Y3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5n
ZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6
YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1
bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6UGFnZUNs
aWVudEltcGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBpbml0
V2l0aFdpbmRvdzp3ZWJWaWV3OnBhZ2U6XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW06CisgICAgICAgICgtW1dLVGV4dEZpbmRlckNsaWVudCBpbml0V2l0
aFBhZ2U6dmlldzp1c2VQbGF0Zm9ybUZpbmRVSTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvc29j
a2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlu
c3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKiBV
SVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYktpdDo6
QmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1Bh
Z2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0
ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdh
bWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdhbWVwYWRzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdLQnVuZGxlU2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRD
b250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQp
OgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudCk6CisgICAgICAgIChXS0J1bmRs
ZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFJlc291
cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5t
bToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmpl
Y3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVG
cmFtZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNp
b25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJFZGl0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViRWRpdG9yQ3JlYXRlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4
dGVuc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHA6
CisgICAgICAgICh3ZWJraXRGcmFtZUdldE9yQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlBh
Z2VDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3IgaW5pdFdp
dGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAo
LVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlOjpJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpzZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdNZXNz
YWdlOjpQZW5kaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6
OnNlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRl
U29ja2V0RmFjdG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENSZXNvbHZlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDU29ja2V0RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6OkxpYldl
YlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVVkcFNvY2tldCk6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZUNsaWVudFRjcFNvY2tldCk6CisgICAgICAgIChX
ZWJLaXQ6OkxpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZU5ld0Nvbm5lY3Rpb25Tb2NrZXQp
OgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVBc3luY1Jl
c29sdmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkRlc3RydWN0aW9u
UHJvdGVjdG9yOjpQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rvcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW46OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luWDExOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50IGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V09yaWdpblRhYmxlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJB
bHRlcm5hdGl2ZVRleHRDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlQ29sb3JDaG9vc2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJy
aWRlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRPdmVycmlkZXM6OmFkZE92
ZXJyaWRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hTeW50aGVzaXNDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6
OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpj
cmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpl
bnN1cmVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnNldFNoYXBlUm91bmRlZFJlY3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nOjpQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpmbHVzaExheWVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bV90ZXh0QXV0b1NpemluZ0FkanVzdG1lbnRUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6YmVnaW5QcmludGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9u
R3RrOjpwcmludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJv
bGxlcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJ
bmRpY2F0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGljYXRv
ck92ZXJsYXlDbGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Ry
YXdpbmdBcmVhTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0
OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNWb2xhdGlsZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6YWRkU3VwcGxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2U6OlNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9j
ZXNzVGFza1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBk
YXRlQ1BVTW9uaXRvclN0YXRlKToKKwogMjAxOS0wOC0xNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3ZWIgc3RvcmFnZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCA2NmU1ZmEzYTJiY2QwMDg0ZmVlMDg0M2E2MzU2MDc1OGVm
MWYyNTg4Li44YzZhNWM2YjI5OGU2YThmZWFkNTY5OTVmM2YyN2FmMTBkNWY0YzAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA4LTE1ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4s
IHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFu
YWdlcik6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0b3Jh
Z2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJhY2tlcik6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcDoKKyAg
ICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbik6CisgICAgICAgIChOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmVuc3VyZVNlc3Npb24p
OgorCiAyMDE5LTA4LTE1ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFNvbWUgaW1wcm92ZW1lbnRzIG9uIHdlYiBzdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdl
TG9nCmluZGV4IGM2M2VmYWJhNWQ4ODY4M2JlZmJmMTY5NThmZjFmZTAwMDRlYTljNmIuLmI0ODAy
N2MwOTAyY2Y1MGNmYjY3NjRkNThjYzY3YzkxOGRmOTNjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2gg
ZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENG
LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJvbnRlbmRTZXR0aW5n
cyk6CisKIDIwMTktMDgtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI0ODQ1NCk6IFdLMSBpbnNwZWN0b3Ig
ZnJvbnRlbmQgY2xpZW50IGRvZXNuJ3QgcXVldWUgbWVzc2FnZXMgdG8gdGhlIGZyb250ZW5kIGJl
Zm9yZSBpdCdzIGxvYWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IDg1YmZlN2Zl
N2FhNGMzZjdmY2JiMmQ3MjhkYjVkZWE3YWRhYmE4ZmYuLjRjNDBlMDViYTgyNzg3YzVlZjg4ZTIz
MTQ3NmNhYTc2MzBkNzllMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFz
dC1hbGxvY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW06CisgICAgICAgICgtW1dlYkZp
eGVkUG9zaXRpb25Db250ZW50IHNldFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnM6c3RpY2t5Q29u
dGFpbmVyTWFwOl0pOgorCiAyMDE5LTA3LTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0NvbnRlbnRDaGFuZ2VPYnNlcnZlcl0gZGlkRmluaXNoQ29udGVudENo
YW5nZU9ic2VydmluZyBzaG91bGQgaW5jbHVkZSB0aGUgdHlwZSBvZiBjb250ZW50IGNoYW5nZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAzYmE0OTUwMzM5OTlhOTUzZTViYjZmOTkz
ZWE0ZDc0YWU1NDI4Y2E3Li4yMDg4ZTY3YjU0MzllZDFiMzAxM2NhOWZiYTcxZTMyZWVkMGIzZTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTktMDgt
MTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBB
ZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEhpc3RvcnkvV2Vi
SGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUgaW5pdF0pOgorICAgICAg
ICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlJdGVt
IGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tOgorICAgICAgICAoV0tQQ0dldFNjcmlw
dGFibGVOUE9iamVjdFJlcGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuUmVwbHkpOgorICAgICAg
ICAoV0tQQ0Jvb2xlYW5BbmREYXRhUmVwbHkpOgorICAgICAgICAoV0tQQ0luc3RhbnRpYXRlUGx1
Z2luUmVwbHkpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eS5oOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06Cisg
ICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Om1ldGhvZE5hbWVkKToKKyAgICAgICAgKFdl
YktpdDo6UHJveHlJbnN0YW5jZTo6ZmllbGROYW1lZCk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJIb3N0ZWRO
ZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1Z2luXSk6CisgICAgICAgICogUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXJDb2NvYS5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc2NoZWR1bGVUaW1l
cldpdGhJbnRlcnZhbDpyZXBlYXQ6dGltZXJGdW5jOl0pOgorICAgICAgICAqIFN0b3JhZ2UvV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6
ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkFsdGVy
bmF0aXZlVGV4dENsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChhZGRSZWRpcmVjdFVSTCk6CisgICAg
ICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Q2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9hdHRhY2hTY3JpcHREZWJ1Z2dlcl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oOgorICAgICAgICAqIFdlYlZpZXcv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbToKKyAgICAgICAgKFdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXI6OmNyZWF0ZSk6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0SXRlcmF0
b3IubW06CisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBpbml0V2l0aFJhbmdlOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfaW5qZWN0T3V0
bG9va1F1aXJrc1NjcmlwdF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXph
dGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRV
c2VyU2NyaXB0VG9Hcm91cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5q
ZWN0aW9uVGltZTppbmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNl
clN0eWxlU2hlZXRUb0dyb3VwOndvcmxkOnNvdXJjZTp1cmw6d2hpdGVsaXN0OmJsYWNrbGlzdDpp
bmplY3RlZEZyYW1lczpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0VGV4dEluZGljYXRvcjp3aXRoTGlm
ZXRpbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5tbToKKyAgICAgICAgKFdl
YlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcik6Cisg
ICAgICAgICgtW1dlYlZpZXdQcml2YXRlIGluaXRdKToKKwogMjAxOS0wOC0xNSAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIGltcHJvdmVtZW50cyBvbiB3
ZWIgc3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDFkNGZlYThkYWMzMTNm
ODRmN2JjMGY3MzIzNGE4ODRjMjkwZTZmZmEuLjgyMjljZjE5MmE0OGJjM2I3MWE0Njc0ZGY4ZjM0
OTA3ODVkMWMzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBA
QAorMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxv
Y2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKToKKyAgICAgICAgKiBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5NZXNzYWdlVGhy
b3R0bGVyV2luLmg6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmxvYWQp
OgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3Ojp3bmRQcm9jKToKKyAgICAgICAgKiBXZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRl
c2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFt
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKiBXZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoV2ViRWxlbWVudFByb3Bl
cnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcpOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVt
LmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNl
bnRhdGlvbik6CisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRl
cmVyLmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJv
Y2Vzc2luZ0NvbnRleHQpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FE
M0RSZW5kZXJlci5oOgorICAgICAgICAqIFdlYk5vZGVIaWdobGlnaHQuaDoKKyAgICAgICAgKiBX
ZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2VudGVy
OjpXZWJOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRl
ci5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlTW91
c2VFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmlld01JTUVUeXBl
KToKKyAgICAgICAgKFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAgICAgKFdl
YlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjpzZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKwogMjAxOS0wOC0xNSAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWx3YXlzIGNyZWF0ZSBhIERvY3VtZW50IHdpdGgg
YSB2YWxpZCBTZXNzaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBi
L1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCAzZjBmYjJlMWNlZWFlZjA2NTljMzRjODI3
MWJlZWMxMDgyMzc1NmVkLi5mM2U5OTY0YWEwYjIzYzI5M2Y3ZGNiMjM0ODkyMmZlODJlZDE0MWI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxs
b2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwg
d2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcC5oOgorICAgICAgICAq
IGJtYWxsb2MvSXNvSGVhcElubGluZXMuaDoKKwogMjAxOS0wNy0yNCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBBZGQgSXNvSGVhcCB0ZXN0
IHRvIGVuc3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0aW5nIHRvbyBsYXJn
ZSBWQQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRl
eCAwN2Q3MDliYTEyYzgyYzg1NDgyZDczYzcyMzc3ZjUxOWU3ZmMyYTVjLi5kMGU2MjUyODJhODRm
NGYzNWVlZGVkMTk1ZWRiOGRjODk3YjFhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgSlNDYWxsYmFj
a09iamVjdERhdGEgewogICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KFZNJiB2bSwgSlNDZWxs
KiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKCFtX3ByaXZhdGVQcm9wZXJ0aWVzKQotICAgICAgICAgICAgbV9w
cml2YXRlUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+
KCk7CisgICAgICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxKU1ByaXZh
dGVQcm9wZXJ0eU1hcD4oKTsKICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcy0+c2V0UHJpdmF0
ZVByb3BlcnR5KHZtLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaAppbmRleCBhZTNhNmZlM2FjZjljNmE4MDM5NGUxZDczNGZhMzE3ZDkwOGZhZTJjLi45
Y2EzYjRiZjQwODUwNzUwYjhiYzQxOTQ5Zjc1MDQyYjM1NzIzMWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAt
NTgsNyArNTgsNyBAQCBpbmxpbmUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OmFzQ2FsbGJhY2tPYmplY3QoRW5jbwogdGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIHZvaWQq
IGRhdGEpCiAgICAgOiBQYXJlbnQoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQotICAgICwgbV9jYWxs
YmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0
YSwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtlVW5pcXVlPEpTQ2Fs
bGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0NsYXNzKSkKIHsKIH0KIApAQCAtNjcsNyArNjcsNyBA
QCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChWTSYgdm0sIEpTQ2xhc3NSZWYg
anNDbGFzcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBQYXJlbnQodm0sIHN0cnVjdHVy
ZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxsYmFj
a09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVjdERh
dGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4obnVsbHB0ciwganNDbGFzcykpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCmluZGV4IGYxYzlk
NTcwMmE4YWE2OTA0NGRmYjI5NWI0NzFmY2ZjYmM4OTBiNmIuLjdlZWMyYTkwYTQ0Zjg2MGJhYTIy
NzZiOTZkNDVmMmJkNjg2MTcwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNz
UmVmLmNwcApAQCAtNTksMjEgKzU5LDIxIEBAIE9wYXF1ZUpTQ2xhc3M6Ok9wYXF1ZUpTQ2xhc3Mo
Y29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpTQ2xhc3MqCiAgICAg
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljVmFsdWUqIHN0
YXRpY1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGljVmFsdWVzKSB7Ci0gICAgICAgIG1fc3RhdGlj
VmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+
KCk7CisgICAgICAgIG1fc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3Rh
dGljVmFsdWVzVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNWYWx1ZS0+bmFtZSkgewog
ICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljVmFs
dWUtPm5hbWUpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZU5hbWUuaXNOdWxsKCkpCi0gICAgICAg
ICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3RhdGlj
VmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7
CisgICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBt
YWtlVW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3Rh
dGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1l
KSk7CiAgICAgICAgICAgICArK3N0YXRpY1ZhbHVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9uID0gZGVmaW5pdGlvbi0+
c3RhdGljRnVuY3Rpb25zKSB7Ci0gICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtl
X3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CisgICAgICAgIG1f
c3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25z
VGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNGdW5jdGlvbi0+bmFtZSkgewogICAgICAg
ICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljRnVuY3Rp
b24tPm5hbWUpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5jYWxs
QXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKKyAgICAgICAgICAgICAg
ICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8
U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0aW9uLCBzdGF0
aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOwogICAgICAgICAgICAgKytzdGF0aWNGdW5jdGlvbjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTEyOCwyMSArMTI4LDIxIEBAIE9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6Vk0mLCBPcGFxdWVKU0NsYXNz
KiBqc0NsCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xhc3MtPm1fc3Rh
dGljVmFsdWVzKSB7Ci0gICAgICAgIHN0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3Bh
cXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBzdGF0aWNWYWx1ZXMgPSBt
YWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKICAgICAgICAgT3Bh
cXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBqc0NsYXNz
LT5tX3N0YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFzc1N0YXRp
Y1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3RhdGljVmFsdWVz
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPmtl
eS0+aXNBdG9tKCkpOwogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IGl0LT5rZXktPmlz
b2xhdGVkQ29weSgpOwotICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVOYW1lLmlt
cGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFBy
b3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZh
bHVlTmFtZSkpOworICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVOYW1lLmltcGwo
KSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFByb3BlcnR5LCBp
dC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkp
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGljRnVuY3Rpb25z
KSB7Ci0gICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlND
bGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBt
YWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKICAgICAgICAg
T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBq
c0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlND
bGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1f
c3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAg
IEFTU0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwotICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25z
LT5hZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljRnVu
Y3Rpb25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1
dGVzKSk7CisgICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChpdC0+a2V5LT5pc29sYXRl
ZENvcHkoKSwgbWFrZVVuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihpdC0+dmFsdWUtPmNhbGxB
c0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTE1MSw3ICsxNTEsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIE9wYXF1ZUpTQ2xh
c3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPm9wYXF1ZUpTQ2xhc3NEYXRhKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICBjb250ZXh0RGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPihleGVjLT52bSgpLCB0
aGlzKTsKKyAgICAgICAgY29udGV4dERhdGEgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250
ZXh0RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CiAgICAgcmV0dXJuICpjb250ZXh0RGF0YTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJh
aW50UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0
cmFpbnRQcml2YXRlLmNwcAppbmRleCBkOWVlNjc0MDM0OWNmZWZkZmJjYzBkMzEwOTRmMWY0ZGU1
YTUyYzFlLi5iYTRhNWExNjY5N2FmNWY4YTk3MjJlNTc0NjllMzk0ZDk3OTA0MmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQ
cml2YXRlLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEpTQ29udGV4dEdyb3VwQWRkTWFya2lu
Z0NvbnN0cmFpbnQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTTWFya2luZ0NvbnN0cgogICAg
IC8vIGVsc2UgZ2V0cyBtYXJrZWQuCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0
eSA9IENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmc7CiAgICAgCi0gICAgYXV0
byBjb25zdHJhaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4o
CisgICAgYXV0byBjb25zdHJhaW50ID0gbWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWlu
dD4oCiAgICAgICAgIHRvQ1N0cmluZygiQW1jIiwgY29uc3RyYWludEluZGV4LCAiKCIsIFJhd1Bv
aW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2spKSwgIikiKSwKICAg
ICAgICAgdG9DU3RyaW5nKCJBUEkgTWFya2luZyBDb25zdHJhaW50ICMiLCBjb25zdHJhaW50SW5k
ZXgsICIgKCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJh
Y2spKSwgIiwgIiwgUmF3UG9pbnRlcih1c2VyRGF0YSksICIpIiksCiAgICAgICAgIFtjb25zdHJh
aW50Q2FsbGJhY2ssIHVzZXJEYXRhXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQppbmRleCBkNDY5Yjc1YTMxZjBlZmNhOWQwN2FiYjAzYjBiZTY2MTYxYjM5NTY3Li40
YjU5OTA3M2ZlNzZiNDg2NDQzNjk5YWJkY2IzNGM0MTY0YmMyZTNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZiljb250
ZXh0CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMgPSBOU1BvaW50
ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxp
dHk7CiAgICAgbV9jYWNoZWRPYmpDV3JhcHBlcnMgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRX
aXRoS2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNp
dHk6MF07CiAKLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6
V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNv
bnRleHQpLT52bSgpKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEpTQzo6
V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNv
bnRleHQpLT52bSgpKTsKIAogICAgIEFTU0VSVCghdG9KU0dsb2JhbE9iamVjdChjb250ZXh0KS0+
d3JhcHBlck1hcCgpKTsKICAgICB0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5zZXRXcmFwcGVy
TWFwKHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2Fs
bGJhY2tGdW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW0KaW5kZXggZWU5MzI4MjFlZjc0YmQ2ODkxYWU4ZjI5ZmFkN2JiYTVhZmVhMGNi
Yy4uNzNjYjQyNzA0MzgxODMxZTgxOWQ5ZDk0M2ViOWU1NDQwMzA5NmY4YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC0xOTUs
MTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlRG91YmxlKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRE
b3VibGU8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRE
b3VibGU8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJv
b2xlYW4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRCb29s
ZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lkKCkKQEAgLTIx
Nyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudElk
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SWQ+KCk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3QgY2hhciogYmVn
aW4sIGNvbnN0IGNoYXIqIGVuZCkKQEAgLTIyOCwxOSArMjI4LDE5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmIChjbHMgPT0gW0pTVmFsdWUgY2xh
c3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVu
dEpTVmFsdWU+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3Vt
ZW50SlNWYWx1ZT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNTdHJpbmcgY2xhc3NdKQotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TU3RyaW5n
PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TU3Ry
aW5nPigpOwogICAgICAgICBpZiAoY2xzID09IFtOU051bWJlciBjbGFzc10pCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7
CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGF0ZSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKICAgICAgICAgaWYg
KGNscyA9PSBbTlNBcnJheSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0FycmF5PigpOwogICAgICAgICBpZiAoY2xzID09IFtO
U0RpY3Rpb25hcnkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CiAKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMpOwogICAgIH0K
IAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciopCkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgU3RyaW5nUmFu
Z2UgY29weShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlv
biA9IHZhbHVlVG9UeXBlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4o
aW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH07CkBA
IC0zMzUsNDUgKzMzNSw0NSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRO
dW1lcmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51
bWVyaWM8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRCb29s
ZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdEJvb2xlYW4+
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lkPigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUg
dHlwZU9mQ2xhc3MoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVz
dWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlU3RydWN0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBl
bmQpCiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5KGJlZ2luLCBlbmQpOwogICAgICAg
ICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdHlwZVRvVmFsdWVJbnZvY2F0aW9uRm9y
KGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1
bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsbGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiB9OwpAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRpYyBKU09iamVj
dFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24oSlNDb250ZXh0ICpjb250ZXh0
LCBOU0ludm9jCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAgIGF1dG8gaW1wbCA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5cGUsIGluc3Rh
bmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBhdXRv
IGltcGwgPSBtYWtlVW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihpbnZvY2F0
aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUocmVz
dWx0KSk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gaW1wbC0+bmFtZSgpOwogICAgIHJldHVy
biB0b1JlZihKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgbmFtZSwgV1RGTW92ZShpbXBsKSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGUwMWU5NzBjN2Y1ODAz
NjU2MThlZjFkYWI4NTU0NGQ3MDRmOWI0N2EuLjc4ZDc2NTVmZjgwNzc2MGQ0NjA4YTYxN2U1N2M5
MGYxNTQyNzk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29u
dGV4dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBqc2NDb250ZXh0U2V0Vmly
dHVhbE1hY2hpbmUoSlNDQ29udGV4dCogY29udGV4dCwgR1JlZlB0cjxKU0NWaXJ0dWFsTQogICAg
ICAgICAgICAgcHJpdi0+anNDb250ZXh0ID0gSlNSZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVm
PihBZG9wdCwgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqc2NWaXJ0dWFsTWFjaGluZUdl
dENvbnRleHRHcm91cChwcml2LT52bS5nZXQoKSksIG51bGxwdHIpKTsKICAgICAgICAgYXV0byog
Z2xvYmFsT2JqZWN0ID0gdG9KU0dsb2JhbE9iamVjdChwcml2LT5qc0NvbnRleHQuZ2V0KCkpOwog
ICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+d3JhcHBlck1hcCgpKQotICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5zZXRXcmFwcGVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXcmFwcGVyTWFw
Pihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0
V3JhcHBlck1hcChtYWtlVW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anNDb250ZXh0Lmdl
dCgpKSk7CiAgICAgICAgIGpzY1ZpcnR1YWxNYWNoaW5lQWRkQ29udGV4dChwcml2LT52bS5nZXQo
KSwgY29udGV4dCk7CiAgICAgfSBlbHNlIGlmIChwcml2LT52bSkgewogICAgICAgICBBU1NFUlQo
cHJpdi0+anNDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NXcmFwcGVyTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NXcmFwcGVyTWFwLmNwcAppbmRleCAxMWJiN2MwYjg3MzdkYjY3ZGQxN2RjZDI0ZjcwMjk0MzQ0
NjlhODAzLi5mNTIzZWE0MTk5ZjhhYmQ3MzJmNzdiNjI4MTQxMjAxMzRiYjhiZWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwCkBAIC0z
Myw3ICszMyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogV3JhcHBlck1hcDo6V3JhcHBlck1hcChK
U0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0KQotICAgIDogbV9jYWNoZWRKU1dyYXBwZXJzKHN0
ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0
b0pTKGpzQ29udGV4dCktPnZtKCkpKQorICAgIDogbV9jYWNoZWRKU1dyYXBwZXJzKG1ha2VVbmlx
dWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGpzQ29udGV4
dCktPnZtKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Q
cm9iZVN0YWNrLmNwcAppbmRleCBhNzVmNThkYzE0NmIzYjY0OTVjZWIxNjdhZGY0ZGFiZmYwNmIw
Yzg5Li5kYTQ3NzA1MWYzNDVlMDcxNjhmYzdkMDZlMGM3ZjUyNjMxMTg2ZTYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKQEAgLTEzNCw3ICsx
MzQsNyBAQCBQYWdlKiBTdGFjazo6ZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNzKQogICAgIGlm
IChMSUtFTFkoaXQgIT0gbV9wYWdlcy5lbmQoKSkpCiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFn
ZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNzKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KGJhc2VBZGRy
ZXNzKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2VzLmFkZChiYXNlQWRkcmVzcywgV1RG
TW92ZShwYWdlKSk7CiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcAppbmRleCBkYmFhNGM5OTBhZDQ4ZjAzZjRhNzUxYzllNDBmOWY2YTZmZjA0ODM5Li4z
Y2M3NWMzNGE1MTNmMmY2ZmI0OTYyMWFmYTg4N2FiYmUyNTk0MTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTI0MSw3ICsxMjQxLDcgQEAgY2xhc3Mg
TG93ZXJUb0FpciB7CiAgICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9IFByaW50ZXI6Om1h
a2VQcmludFJlY29yZExpc3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0byBwcmludFNwZWNp
YWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0
ZDo6bWFrZV91bmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKKyAgICAgICAg
YXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29k
ZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsK
ICAgICAgICAgSW5zdCBpbnN0KEFpcjo6UGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50
U3BlY2lhbCkpOwogICAgICAgICBQcmludGVyOjphcHBlbmRBaXJBcmdzKGluc3QsIHN0ZDo6Zm9y
d2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBhcHBlbmQoV1RGTW92ZShp
bnN0KSk7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsKICAgICB7CiAg
ICAgICAgIGlmICghZmllbGQpIHsKICAgICAgICAgICAgIGZpZWxkID0gc3RhdGljX2Nhc3Q8VCo+
KAotICAgICAgICAgICAgICAgIG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8VD4o
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpKTsKKyAgICAgICAgICAgICAg
ICBtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+
KGFyZ3VtZW50cykuLi4pKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4IGZmY2IyZDRl
MjcxNDQyOTcwZTU0NjQzNjY3MGY3ZjI5ZGViMWFiMWMuLjJlY2NkYWMwNDllNjhkMTEzZTIzZjk3
ZjI0MzUzYTVkNGFhYTNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJl
LmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIFBy
b2NlZHVyZTo6UHJvY2VkdXJlKCkKICAgICA6IG1fY2ZnKG5ldyBDRkcoKnRoaXMpKQogICAgICwg
bV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKLSAgICAsIG1fYnlwcm9kdWN0cyhzdGQ6Om1ha2Vf
dW5pcXVlPE9wYXF1ZUJ5cHJvZHVjdHM+KCkpCisgICAgLCBtX2J5cHJvZHVjdHMobWFrZVVuaXF1
ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQogICAgICwgbV9jb2RlKG5ldyBBaXI6OkNvZGUoKnRoaXMp
KQogewogICAgIG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobV9udW1FbnRyeXBvaW50cyk7CkBA
IC0zMTEsMjggKzMxMSwyOCBAQCB2b2lkIFByb2NlZHVyZTo6ZGVsZXRlT3JwaGFucygpCiBEb21p
bmF0b3JzJiBQcm9jZWR1cmU6OmRvbWluYXRvcnMoKQogewogICAgIGlmICghbV9kb21pbmF0b3Jz
KQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWluYXRvcnM+KCp0
aGlzKTsKKyAgICAgICAgbV9kb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxEb21pbmF0b3JzPigqdGhp
cyk7CiAgICAgcmV0dXJuICptX2RvbWluYXRvcnM7CiB9CiAKIE5hdHVyYWxMb29wcyYgUHJvY2Vk
dXJlOjpuYXR1cmFsTG9vcHMoKQogewogICAgIGlmICghbV9uYXR1cmFsTG9vcHMpCi0gICAgICAg
IG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsK
KyAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJkc0NGRyYgUHJvY2Vk
dXJlOjpiYWNrd2FyZHNDRkcoKQogewogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCi0gICAgICAg
IG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsK
KyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKIEJhY2t3YXJkc0RvbWluYXRvcnMm
IFByb2NlZHVyZTo6YmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJk
c0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3YXJkc0Rv
bWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICBy
ZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIHZv
aWQqIFByb2NlZHVyZTo6YWRkRGF0YVNlY3Rpb24oc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFz
aXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVNl
Y3Rpb24+IGRhdGFTZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhU2VjdGlvbj4oc2l6ZSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IG1ha2VVbmlx
dWU8RGF0YVNlY3Rpb24+KHNpemUpOwogICAgIHZvaWQqIHJlc3VsdCA9IGRhdGFTZWN0aW9uLT5k
YXRhKCk7CiAgICAgbV9ieXByb2R1Y3RzLT5hZGQoV1RGTW92ZShkYXRhU2VjdGlvbikpOwogICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApp
bmRleCAzM2Y4YWJmZWZiYzFmOGY5MTY1NDVhM2JkY2ExOTZiMGNjNjZjMzk4Li5kNWQ2OWMzMGE1
OTkxNzVmMjgxNDgzNjI4NjM2ZmNiNzcwNjgwMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBDQ2FsbFNwZWNpYWwqIENvZGU6
OmNDYWxsU3BlY2lhbCgpCiB7CiAgICAgaWYgKCFtX2NDYWxsU3BlY2lhbCkgewogICAgICAgICBt
X2NDYWxsU3BlY2lhbCA9IHN0YXRpY19jYXN0PENDYWxsU3BlY2lhbCo+KAotICAgICAgICAgICAg
YWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOworICAgICAgICAg
ICAgYWRkU3BlY2lhbChtYWtlVW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwogICAgIH0KIAogICAg
IHJldHVybiBtX2NDYWxsU3BlY2lhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJHZW5lcmF0ZS5jcHAKaW5kZXggZjM2YjliMmZlNjY4MTYwYjg4OTliMGM1MGIzMTk3ZDc1ODgy
NGY4MC4uOTVjYWEwMDRkOGViMzkyMzMwZTFjY2JiNjM5YTVjZWU3OWNiYzc5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKQEAgLTEwMCw3ICsxMDAs
NyBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgICAgICAgICBk
YXRhTG9nKGNvZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxs
b2NhdGVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdp
c3RlcnM+KGNvZGUpOworICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVy
cyA9IG1ha2VVbmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4oY29kZSk7CiAgICAg
ICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzLT5wcmVwYXJlRm9yR2VuZXJh
dGlvbigpOwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rl
c3RhaXIuY3BwCmluZGV4IGVmMTU0NGMwN2JiMzJhOTAzN2YyY2I3MWUxNWU3NGE5YmU2MWJmOTQu
LjNkY2EyOTY3ODhiMDAxMDY4ZTAxZjQyM2UxMTZjN2MyYTRlN2RhNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBjb21waWxlKEIzOjpQcm9jZWR1cmUmIHByb2MpCiAgICAg
Z2VuZXJhdGUocHJvYy5jb2RlKCksIGppdCk7CiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGpp
dCwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRp
b24+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgIEZJ
TkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRlc3RhaXIgY29t
cGlsYXRpb24iKSwgcHJvYy5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIH0KIApAQCAtMTg1NSw3ICsx
ODU1LDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNhY2hlZFRlbXBSZWdpc3RlcnMoKQogICAgIHJv
b3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCBBcmc6OmJpZ0ltbShiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KCZ0aGluZ3MpKSwgYmFzZSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogcGF0Y2hQb2ludDFS
b290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRT
cGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRT
cGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNv
ZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAg
ICAvLyBJbiBQYXRjaHBvaW50LCBMb2FkIHRoaW5nc1swXSAtPiB0bXAuIFRoaXMgd2lsbCBtYXRl
cmlhbGl6ZSB0aGUgYWRkcmVzcyBpbiB4MTcgKGRhdGFNZW1vcnlSZWdpc3RlcikuCiAgICAgQjM6
OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDEgPSBwYXRjaFBvaW50MVJvb3QtPmFwcGVuZE5l
dzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAg
LTE5MzAsNyArMTkzMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkKCkKICAgICBHUFJS
ZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIo
cGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29k
ZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsK
KyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lh
bChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBCMzo6QmFzaWNC
bG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHZvaWQgdGVz
dEFyZ3VtZW50UmVnUGlubmVkMigpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3Vt
ZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpT
cGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5p
cXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0
Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2lu
dFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBl
bmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7
CkBAIC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDMoKQogICAg
IEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdp
c3RlcihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwg
PSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRT
cGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpC
YXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+
KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5o
CmluZGV4IGNlNTM4YWI0ODIzY2FiYjEyMzQwNzVjYzhmY2Q3ODAxNTI4YTBhMjcuLjFjMDcwZDE3
OWVkMzliZjZkZGYwMWUzYmIzM2NiNjQ5YzNmYjczNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmgKQEAgLTE4OSw3ICsxODksNyBAQCBleHRlcm4gTG9jayBjcmFzaExvY2s7CiBpbmxpbmUg
c3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjb21waWxlUHJvYyhQcm9jZWR1cmUmIHByb2Nl
ZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwgPSBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpKQog
ewogICAgIHByb2NlZHVyZS5zZXRPcHRMZXZlbChvcHRMZXZlbCk7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1cmUpKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGMxMDg1OWFjZWQz
ZGI3OGI2NjQ5NzZhMDhiOGU1YjQ4ZDY1MmIyZjMuLjc3ZmI2NWRhMGI3YTA2YzdkNjU4YmFiZGI0
ZTUxMDhhNzkxN2VlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5jcHAKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRl
SW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc3RhdGUuc2V0
U3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKHNwaWxsU3RhdGUpOwogCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVCghYWNjZXNzLmNhbGxMaW5rSW5mbygpKTsKLSAgICAgICAgICAgIGFjY2Vz
cy5tX2NhbGxMaW5rSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtJbmZvPigpOworICAg
ICAgICAgICAgYWNjZXNzLm1fY2FsbExpbmtJbmZvID0gbWFrZVVuaXF1ZTxDYWxsTGlua0luZm8+
KCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZW5lcmF0ZWQgYSBwb2x5bW9ycGhp
YyBjYWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0byB0aGUgZ2V0dGVyCiAgICAgICAgICAgICAv
LyBzdHViLCB3aGljaCB0aGVuIGp1bXBlZCBiYWNrIHRvIHRoZSBtYWluIGNvZGUsIHRoZW4gd2Un
ZCBoYXZlIGEgcmVhY2hhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAppbmRleCAyYmQ5ZmU2NTE5
OWQwN2YxNzNlMzgzMGRjNzRlNDY3ZWI5ZDU0MWZjLi45MjU3ZmMyMjY2NTI5Zjg2MTM3ZDVkYWQ4
YzkyNDk3MTgzOTA0NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVibGljIEFjY2Vz
c0Nhc2VTbmlwcGV0UGFyYW1zOjpTbG93UAogICAgIHZvaWQgQWNjZXNzQ2FzZVNuaXBwZXRQYXJh
bXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2Fs
bEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0
LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgdG8gPSBqaXQubGFiZWwoKTsgXAotICAgICAgICBtX2dlbmVyYXRvcnMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50
czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZB
X0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBcCisgICAgICAg
IG1fZ2VuZXJhdG9ycy5hcHBlbmQobWFrZVVuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRo
QXJndW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5
cGUsIF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwK
ICAgICB9IFwKIAogU05JUFBFVF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJB
VElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCmluZGV4IDMzYmIwYzA2NjM1MzgxZTg5OGY2NWE4NzRmMWYzNmE4Yzk0
ODIzYWYuLjEwYzY1YmI5ZGQ3MDlhOWFmN2FiYTZjZWI4YTliNzM1OTc3MTY0MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC02NSwxNSArNjUsMTUgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJ
bXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgIC8vIENy
ZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJl
c2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKIAotICAgIGF1dG8gZW50cnkg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjpFbnRyeUJsb2NrKTsKLSAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKKyAgICBh
dXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNC
bG9jazo6RW50cnlCbG9jayk7CisgICAgYXV0byBmaXJzdEJsb2NrID0gbWFrZVVuaXF1ZTxCeXRl
Y29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7CiAgICAgbGlu
a0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKICAgICBhcHBlbmRCbG9j
ayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmly
c3RCbG9jay5nZXQoKTsKICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsKIAot
ICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRl
Y29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CisgICAgYXV0byBleGl0ID0gbWFrZVVuaXF1ZTxC
eXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIAogICAg
IGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIApAQCAtODQsNyArODQsNyBA
QCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFs
c2U7CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEganVtcCB0YXJnZXQs
IHRoZW4gaXQncyB0aGUgbGVhZGVyIG9mIGl0cyBvd24gYmFzaWMgYmxvY2suCiAgICAgICAgIGlm
IChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwg
bmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKLSAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24pOworICAgICAg
ICAgICAgYXV0byBuZXdCbG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0
cnVjdGlvbik7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7CiAgICAgICAg
ICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVk
QmxvY2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcAppbmRleCBkOGRhYzE1ODVmYWIyYjk5OGMxZTVkODg3NTJiYTEyZGY2ZGFkYmRl
Li4zOTNmMTgyNGU0MWE0YmViNTE0YzYyYTY5NmYzM2E4MzcyNDk1Y2RkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMjY1LDcgKzI2
NSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogCiB2b2lkIENhbGxM
aW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYg
c2h1ZmZsZURhdGEpCiB7Ci0gICAgbV9mcmFtZVNodWZmbGVEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJhbWVTaHVmZmxl
RGF0YSA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IGVmMWNhYmZhNzE4YjA4MGQ3ZjNlODYzN2Y5Zjk0ZjYwNTg2ZWU0
ZTguLjM5YTIzYjRjN2Y0N2Q4ZmNlNWUzMGVlY2E1NTBlNzdkYWQzMTU4NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMzM3LDcgKzEzMzcs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiBDb2RlQmxv
Y2s6OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNsb3coY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJikKIHsKICAgICBBU1NFUlQoIW1faml0RGF0YSk7Ci0gICAgbV9qaXREYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxKSVREYXRhPigpOworICAgIG1faml0RGF0YSA9IG1ha2VVbmlxdWU8
SklURGF0YT4oKTsKICAgICByZXR1cm4gKm1faml0RGF0YTsKIH0KIApAQCAtMTU1MCw3ICsxNTUw
LDcgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2Rl
T2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2sKIHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVT
YXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7CiAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGVuc3VyZUpJVERhdGEobG9ja2Vy
KS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZz
ZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKKyAgICBlbnN1cmVKSVREYXRhKGxvY2tlciku
bV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4o
Y2FsbGVlU2F2ZVJlZ2lzdGVycyk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZl
UmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJB
dE9mZnNldExpc3QpCkBAIC0xNzkwLDcgKzE3OTAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZW5zdXJl
Q2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3coY29uc3QgT3BDYXRj
aAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kpCiAgICAgICAg
IGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOwogCi0g
ICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFu
ZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgYXV0byBwcm9maWxlcyA9IG1ha2VV
bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6
ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmlsZXMtPm1fc2l6ZTsgKytp
KQogICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9w
ZXJhbmRzW2ldLm9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCmluZGV4IDg3MDY4YmE2NWRkODVjMjNmYmU0YTQ5MGU5NzRhNzI4MWYyNTYwNGMuLjMx
NDM4ZTBhYzUwNjliMjc0OTY5ODg4NmFiMTEyMDA3NmJjYjczYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTk0Myw3ICs5NDMsNyBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7Ci0gICAgICAgICAgICBh
dXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgICAg
IGF1dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICAgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRjaFByb2ZpbGVzIGNhbiBiZSB0b3VjaGVkIGZy
b20gY29tcGlsZXIgdGhyZWFkcy4KICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEZNb3ZlKHJh
cmVEYXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5jcHAKaW5kZXggMmQ5NDMxY2YwYjE0NGZhM2EyYzIyMWE2NmU5NDA3
MGM3NzUwZTBlMC4uYjFhMDFmZmE0ZDkzNDhmZWNiMjRjOTY4OGJjODAwNTJmOTM4ODZhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVy
LCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgIC8vIElmIHdlJ3ZlIG5ldmVyIHNl
ZW4gYW55IGZyZXF1ZW50IGV4aXRzIHRoZW4gY3JlYXRlIHRoZSBsaXN0IGFuZCBwdXQgdGhpcyBz
aXRlCiAgICAgLy8gaW50byBpdC4KICAgICBpZiAoIXByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRl
cykgewotICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKKyAgICAgICAgcHJvZmlsZS5tX2ZyZXF1
ZW50RXhpdFNpdGVzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CiAg
ICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcy0+YXBwZW5kKHNpdGUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCmluZGV4IDRm
NDhhMWQ2Yzk4NzIyZTVhYzJlY2U4N2U1MDQwMjMyZjlhNWQ2YjEuLjRmYjExNTczMDAzYjUyZWZk
OWE4NjZmYjNiZGY3NzUwOThjZWZhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBA
IC01MCw3ICs1MCw3IEBAIHZvaWQgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxh
dGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvZGVCbG9jayosCiBWZWN0b3I8RGVmZXJyZWRT
b3VyY2VEdW1wPiYgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjplbnN1cmVEZWZlcnJlZFNv
dXJjZUR1bXAoKQogewogICAgIGlmICghbV9kZWZlcnJlZFNvdXJjZUR1bXApCi0gICAgICAgIG1f
ZGVmZXJyZWRTb3VyY2VEdW1wID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3Vy
Y2VEdW1wPj4oKTsKKyAgICAgICAgbV9kZWZlcnJlZFNvdXJjZUR1bXAgPSBtYWtlVW5pcXVlPFZl
Y3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+PigpOwogICAgIHJldHVybiAqbV9kZWZlcnJlZFNvdXJj
ZUR1bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAppbmRleCBkYjlhZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJiNjgzZGRlYWQ2
Li5kZjRkNzdjZTNmNjNiNTIwMDc1NTQ0YzQxYTE2Y2IyMzFkN2RmYTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC0yNDMsNyAr
MjQzLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9X
aXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6R2V0dGVyOiB7
Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxD
YWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBt
YWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoQ2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2Fz
ZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxMaW5r
U3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNp
dGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZh
cmlhbnQuY3BwCmluZGV4IGZjMWY0NjBkZTk2NTQxZDhmYTA5OWNiYjQ1ZjIzMDljMmEzMzM4MGYu
LmVkOGQ0OTNmN2VlNmYxZGEyYjkwOWFkNTdjNjI3NzE4MTNjMmQ2YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBHZXRCeUlkVmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBH
ZXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jdXN0b21BY2Nlc3NvckdldHRlciA9IG90aGVy
Lm1fY3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgbV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2Rv
bUF0dHJpYnV0ZTsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykKLSAgICAgICAgbV9j
YWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5t
X2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG1ha2VVbmlxdWU8
Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAgICBlbHNlCiAgICAg
ICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAqdGhpczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuY3BwCmluZGV4IDA5MjlkNmZiNDEyNjc0ZWQ3ZjIwNDA0NWZiNDI1ZWI3ZDM4ZDNj
OTMuLjZlZWIxNDViMzM3OTY2MmFmMWMxNTAwMTkwNzY3MjdhMzllZTJiZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29t
cHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCiAgICAgY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkK
IHsKICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKKyAgICAgICAgbV9kYXRhID0gbWFrZVVu
aXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKICAgICBlbHNlIHsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChtX2RhdGEtPmF0KGkpLmtleSgpID09IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKaW5kZXggYjQ5
ZTRlMjQyZTUyZjA4MTMxNWU0OGZiMWUxYmNjMjk3ZTUyOGFlMC4uYTFlY2I5NGRkMGQxODY3MDg2
MzUyZjUyYjViNThjMzE5M2VlY2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xh
c3MgUG9seVByb3RvQWNjZXNzQ2hhaW4gewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90
b0FjY2Vzc0NoYWluPiBjbG9uZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOwogICAgIH0KIAogICAgIGNvbnN0IFZl
Y3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cAppbmRleCAyMmY0NTU4MTRiODRhZjRmZTc0Y2FmMjM0MDFkMzBhZGFkYWU1YzZlLi4zYjMwMjMz
OWYwMzUwZGFjNDI4ZjNmMDRjYzczNTJhM2FlNTIxYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTYxNiw3ICs2
MTYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVy
YXRlKAogICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShjb2RlLCB2bSwg
Y29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2Vw
dGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwogICAgIG1f
d2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRl
LndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0
ZS53ZWFrUmVmZXJlbmNlcykpOworICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gbWFrZVVuaXF1
ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVu
Y2VzKSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAg
ICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCmluZGV4
IGMyZDk1MzIwY2ViZDU2ZGJkYzkzZWViZDZjMzE0MGE3ZGY3Y2MyMDkuLmQ2NDJiY2NmZTc5NzY2
YzUyNzliYmM4MTA4NzAxZWI3Zjg1ODI0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJbmxpbmVhYmxl
OiB7CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4g
Y2FsbExpbmtTdGF0dXMgPQotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1
ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VVbmlxdWU8
Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLmNhbGxM
aW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtTdGF0dXMgPSBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
b2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
aW5kZXggNWQ2YjI5MDQ1Y2E2NzVjNTZmYTcxZDU0NzVhMTE1YjJkZjZmM2M1ZS4uNzJjNmNhYzg0
ZmIyN2JjZjVlNDE3YzQ5NmU2MzYyZjcyZTZjMGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFB1
dEJ5SWRWYXJpYW50JiBQdXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IFB1dEJ5SWRWYXJp
YW50JiBvdGhlcikKICAgICBtX2NvbmRpdGlvblNldCA9IG90aGVyLm1fY29uZGl0aW9uU2V0Owog
ICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtT
dGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxM
aW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtT
dGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1
cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICBy
ZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVjb3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5jcHAKaW5kZXggOTZkMjJlY2ZhMGE0Yzc1NmVkZmY2MWYwMDEzZjcyNThl
N2QzZmJkNS4uNTNmMjA4YmNhZGVkM2RlYTJkZWUxOGEwZTg5NjA1YzQ5MGExOTViZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNw
cApAQCAtNDUsNyArNDUsNyBAQCBSZWNvcmRlZFN0YXR1c2VzOjpSZWNvcmRlZFN0YXR1c2VzKFJl
Y29yZGVkU3RhdHVzZXMmJiBvdGhlcikKIAogQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVz
ZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0
IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0g
bWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKICAgICBDYWxsTGlua1N0YXR1cyog
cmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGNhbGxzLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtNTMsNyArNTMsNyBAQCBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkQ2Fs
bExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogCiBHZXRCeUlkU3RhdHVz
KiBSZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1
c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRv
IHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKICAgICBHZXRC
eUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgZ2V0cy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTYxLDcgKzYxLDcgQEAgR2V0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAogICAgIAog
UHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0g
ICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1
cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1
cyk7CiAgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIHB1
dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkp
OwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw3ICs2OSw3IEBAIFB1dEJ5SWRTdGF0dXMqIFJl
Y29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9y
aWdpbiwKIAogSW5CeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRJbkJ5SWRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgSW5CeUlkU3RhdHVzJiBzdGF0dXMp
CiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluQnlJZFN0YXR1cz4o
c3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8SW5CeUlkU3RhdHVzPihz
dGF0dXMpOwogICAgIEluQnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAg
IGlucy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIp
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNw
cAppbmRleCAzMGExZjA1NTI1OWUzZGVkMWE3MTY4ZWUzNTI2ZjcyYzA4NGJlZTVhLi5mY2MyOTEx
ODAyNDRlMGIzMjI5ZTJmZDc2MzAwN2JlNzlhODc0MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQqIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNl
CiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiYga2V5KQogewogICAgIGlmICghaG9sZGVyUmVmKQotICAgICAgICBob2xkZXJSZWYg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJs
b2NrLCBzdHViSW5mbyk7CisgICAgICAgIGhvbGRlclJlZiA9IG1ha2VVbmlxdWU8V2F0Y2hwb2lu
dHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAgICBlbHNlIHsK
ICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9jb2RlQmxvY2sgPT0gY29kZUJsb2NrKTsKICAg
ICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9zdHViSW5mbyA9PSBzdHViSW5mbyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcApp
bmRleCA3MjIyZDQ4MmFkMWU1ZTI4NmNlZjU5ZDRmZjFlMWY1ZWIwNzEwNzhkLi40OTE5NWQxNTcy
MWQyY2RhNGY3NDhhZThkYmUyYWYwMDlhMjhhN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTE2MCw3ICsxNjAs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3ND
YXNlKAogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nl
c3M+IGFjY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CisgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2VzcyA9IG1ha2VV
bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOwogICAgICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAppbmRleCBlMDA2ZDE2YjliOGEwZmMzMGYwNDMzY2RlNjAyZWNjM2IxNjhk
NDJlLi4yYzlhMGIzMDFlYjA5OGUxMTVlZjFlMzZiMTI3YmUyOWUzYWJkYTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
QEAgLTQxNCw3ICs0MTQsNyBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIFVubGlua2VkQ29k
ZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxvY2sqIGNvZAogICAgICAgICBpZiAo
IW1fbGl2ZW5lc3MpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgY2hhbmNlIHR3byBjb21w
aWxlciB0aHJlYWRzIHJhY2VkIHRvIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAgICAvLyBHcmFi
YmluZyB0aGUgbG9jayBhYm92ZSBkZWZlbmRzIGFnYWluc3QgY29tcHV0aW5nIGxpdmVuZXNzIHR3
aWNlLgotICAgICAgICAgICAgbV9saXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOworICAgICAgICAgICAgbV9saXZlbmVzcyA9IG1h
a2VVbmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOwogICAgICAgICB9
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAppbmRleCA0MzcwOTUxOWViNjE2ZTI2NTEwNmVmMWQ1NTI5NjE3ZDY0
NWM5YmM5Li41MTI1MzZjMGQ0NDg1N2E0Y2E3NmU4MTNmZTE0ODAzYTk3M2ZmYTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApA
QCAtNDAyLDcgKzQwMiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcoKmhlYXAoKSwgY2VsbExvY2soKSk7Ci0gICAgICAg
ICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAg
ICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICB9CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBmYmVjOWY3MmNhMmZkMWExOGJhY2Iw
NzNlNjg3MjU0YjcwYjllYmUxLi40OWQ5ZDJmZDNlNmZlOWZiNGI1MjdmNjc3YWJkNWJkNGE1MTIy
NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lk
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJiB2
bSkKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3JhcmVE
YXRhKTsKLSAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAg
ICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByZXR1cm4gKm1fcmFy
ZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlOTc2ODZhYTNlZGNkZDhkM2Y5YjU3YzRhNmQx
MjNiYWM5Y2IzOTg3Li4xNzhhNjFkZjY5MTMzYWZkY2MxMjcyOGNiZmQ5NmViMzlmNDJhZWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERl
ZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5r
ZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAg
ICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+
KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9u
bWVudCk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJhdG9yLT5nZW5l
cmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNv
ZGVDb21waWxlVGltZXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmgKaW5kZXggYmNkNzJlYTA5ZjVmNzE3YTY1ZjY1ZDdkMmVmYzE3NWUwMjNlNjk5MC4uZWJh
YmI1OWQ0MzU5YTllMzY0ZjJjYTNhZjZhZmQwZWZkMDM5MGIzMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgVk07CiB0
eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERl
YnVnZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEZWJ1
Z2dlcihWTSYpOwogICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5k
ZXggZjIwYTM1N2VjYjczYWE3ZWZlNGNiMTA3ZDFjY2I3ZTlkYzkwMDMzOS4uMjc2NTY5MjZhOGQy
OWQyN2ViZWVhYTlmZmRjYTIwM2NjMjVmYTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNTgs
NyArNTgsNyBAQCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6QWJzdHJh
Y3RJbnRlcnByZXRlcihHcmFwaCYgZ3JhcGgsIEFic3RyYQogICAgICwgbV9zdGF0ZShzdGF0ZSkK
IHsKICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQotICAgICAgICBtX3BoaUNoaWxkcmVu
ID0gc3RkOjptYWtlX3VuaXF1ZTxQaGlDaGlsZHJlbj4obV9ncmFwaCk7CisgICAgICAgIG1fcGhp
Q2hpbGRyZW4gPSBtYWtlVW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCmluZGV4IDViMGM4N2ZmZWU1MmIyYTllNTAxMWU1YmY4YzcxYzAxMjk0MmVmZDAu
LmU2ODNhODIxYjIyYmNmZTU2YjM5ZWY0MWExMWYxYzJkZGJkNjYxNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC03NCw3ICs3NCw3IEBAIEdyYXBoOjpHcmFwaChW
TSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1fY29kZUJsb2Nr
KG1fcGxhbi5jb2RlQmxvY2soKSkKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2NvZGVCbG9jay0+
YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlxdWU8U1NBQ0ZHPigq
dGhpcykpCisgICAgLCBtX3NzYUNGRyhtYWtlVW5pcXVlPFNTQUNGRz4oKnRoaXMpKQogICAgICwg
bV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9p
bnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkUmVn
aXN0ZXJpbmcpCkBAIC04Niw4ICs4Niw4IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBs
YW4pCiAgICAgCiAgICAgbV9oYXNEZWJ1Z2dlckVuYWJsZWQgPSBtX3Byb2ZpbGVkQmxvY2stPndh
c0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSB8fCBPcHRpb25zOjpmb3JjZURlYnVnZ2Vy
Qnl0ZWNvZGVHZW5lcmF0aW9uKCk7CiAgICAgCi0gICAgbV9pbmRleGluZ0NhY2hlID0gc3RkOjpt
YWtlX3VuaXF1ZTxGbG93SW5kZXhpbmc+KCp0aGlzKTsKLSAgICBtX2Fic3RyYWN0VmFsdWVzQ2Fj
aGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+KCp0aGlzKTsKKyAg
ICBtX2luZGV4aW5nQ2FjaGUgPSBtYWtlVW5pcXVlPEZsb3dJbmRleGluZz4oKnRoaXMpOworICAg
IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVl
Pj4oKnRoaXMpOwogCiAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RydWN0dXJlU3RydWN0dXJl
LmdldCgpKTsKICAgICB0aGlzLT5zdHJpbmdTdHJ1Y3R1cmUgPSByZWdpc3RlclN0cnVjdHVyZSh2
bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgRnVsbEJ5dGVj
b2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAg
ICBpZiAoaXRlciAhPSBtX2J5dGVjb2RlTGl2ZW5lc3MuZW5kKCkpCiAgICAgICAgIHJldHVybiAq
aXRlci0+dmFsdWU7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVu
ZXNzPiBsaXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+KCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPiBsaXZlbmVzcyA9IG1h
a2VVbmlxdWU8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+KCk7CiAgICAgY29kZUJsb2NrLT5saXZlbmVz
c0FuYWx5c2lzKCkuY29tcHV0ZUZ1bGxMaXZlbmVzcyhjb2RlQmxvY2ssICpsaXZlbmVzcyk7CiAg
ICAgRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCA9ICpsaXZlbmVzczsKICAgICBtX2J5dGVj
b2RlTGl2ZW5lc3MuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShsaXZlbmVzcykpOwpAQCAtMTExNSw3
ICsxMTE1LDcgQEAgQnl0ZWNvZGVLaWxscyYgR3JhcGg6OmtpbGxzRm9yKENvZGVCbG9jayogY29k
ZUJsb2NrKQogICAgIGlmIChpdGVyICE9IG1fYnl0ZWNvZGVLaWxscy5lbmQoKSkKICAgICAgICAg
cmV0dXJuICppdGVyLT52YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVL
aWxscz4ga2lsbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+IGtpbGxzID0gbWFrZVVuaXF1ZTxCeXRlY29kZUtp
bGxzPigpOwogICAgIGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVLaWxscyhj
b2RlQmxvY2ssICpraWxscyk7CiAgICAgQnl0ZWNvZGVLaWxscyYgcmVzdWx0ID0gKmtpbGxzOwog
ICAgIG1fYnl0ZWNvZGVLaWxscy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGtpbGxzKSk7CkBAIC0x
NTUzLDcgKzE1NTMsNyBAQCBDUFNDRkcmIEdyYXBoOjplbnN1cmVDUFNDRkcoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwogICAg
IGlmICghbV9jcHNDRkcpCi0gICAgICAgIG1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFND
Rkc+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNDRkcgPSBtYWtlVW5pcXVlPENQU0NGRz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9jcHNDRkc7CiB9CiAKQEAgLTE1NjEsNyArMTU2MSw3IEBAIENQU0Rv
bWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1f
Y3BzRG9taW5hdG9ycykKLSAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1
ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IG1ha2VV
bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNEb21pbmF0b3Jz
OwogfQogCkBAIC0xNTY5LDcgKzE1NjksNyBAQCBTU0FEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJl
U1NBRG9taW5hdG9ycygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSB8fCBt
X2lzSW5TU0FDb252ZXJzaW9uKTsKICAgICBpZiAoIW1fc3NhRG9taW5hdG9ycykKLSAgICAgICAg
bV9zc2FEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7
CisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8U1NBRG9taW5hdG9ycz4oKnRo
aXMpOwogICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCkBAIC0xNTc4LDcgKzE1Nzgs
NyBAQCBDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9vcHMoKQogICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwog
ICAgIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fY3BzTmF0dXJhbExvb3BzKQot
ICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTTmF0dXJhbExv
b3BzPigqdGhpcyk7CisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxDUFNO
YXR1cmFsTG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExvb3BzOwogfQog
CkBAIC0xNTg3LDcgKzE1ODcsNyBAQCBTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FO
YXR1cmFsTG9vcHMoKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGVu
c3VyZVNTQURvbWluYXRvcnMoKTsKICAgICBpZiAoIW1fc3NhTmF0dXJhbExvb3BzKQotICAgICAg
ICBtX3NzYU5hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBTmF0dXJhbExvb3BzPigq
dGhpcyk7CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbWFrZVVuaXF1ZTxTU0FOYXR1cmFs
TG9vcHM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQogCkBAIC0x
NTk2LDcgKzE1OTYsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkco
KQogICAgIC8vIFdlIGNvdWxkIGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgdG8gd29y
ayBvdmVyIENQUywgYnV0IHRvZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EuCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9mb3JtID09IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCi0gICAg
ICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlz
KTsKKyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRo
aXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKQEAgLTE2MDQsNyArMTYwNCw3
IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3Jz
KCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFj
a3dhcmRzRG9taW5hdG9ycykKLSAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgICAgIG1fYmFja3dh
cmRzRG9taW5hdG9ycyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfQogCkBAIC0xNjEyLDcgKzE2MTIs
NyBAQCBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsK
ICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCi0gICAgICAgIG1fY29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xFcXVpdmFsZW5j
ZUFuYWx5c2lzPigqdGhpcyk7CisgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMg
PSBtYWtlVW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CiAgICAgcmV0
dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDYzOTA0M2U5ZTI3ZmJlMGUwYjky
YWI0NmE2NjliZTE0MTA1MDMzNzAuLmYyYjY2NDAyZTNhZDBlNzJkZmNlMDViNjVhZjNmYzkyNmQw
MDlkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIEpJVENvbXBpbGVyOjpKSVRDb21waWxlcihHcmFwaCYgZGZnKQog
ICAgICwgbV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIoZGZnLm1fdm0pCiB7CiAgICAgaWYgKFVO
TElLRUxZKHNob3VsZER1bXBEaXNhc3NlbWJseSgpIHx8IG1fZ3JhcGgubV92bS5tX3BlckJ5dGVj
b2RlUHJvZmlsZXIpKQotICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlzYXNzZW1ibGVyPihkZmcpOworICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8
RGlzYXNzZW1ibGVyPihkZmcpOwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIG1faml0Q29kZS0+
dGllclVwSW5Mb29wSGllcmFyY2h5ID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi50aWVyVXBJbkxv
b3BIaWVyYXJjaHkoKSk7CiAgICAgZm9yICh1bnNpZ25lZCB0aWVyVXBCeXRlY29kZSA6IG1fZ3Jh
cGgubV9wbGFuLnRpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzKCkpCkBAIC0zNDMsNyArMzQzLDcg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIH0K
IAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5kaWRCdWlsZE1hcHBpbmcoKSkK
LSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6bWFrZV91bmlx
dWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIp
LCBsaW5rQnVmZmVyKSk7CisgICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1h
cChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyKSwgbGlua0J1ZmZlcikpOwogfQogCiBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVy
Zmxvd0NoZWNrKEpJVENvbXBpbGVyJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc3Rh
Y2tPdmVyZmxvdykKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
KCkKIAogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7Ci0gICAgbV9z
cGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKKyAg
ICBtX3NwZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogCiAg
ICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlIGlu
IHRoZSBKU1N0YWNrLgogICAgIEp1bXBMaXN0IHN0YWNrT3ZlcmZsb3c7CkBAIC00MDIsOSArNDAy
LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgbV9zcGVjdWxhdGl2ZS0+Y3Jl
YXRlT1NSRW50cmllcygpOwogICAgIHNldEVuZE9mQ29kZSgpOwogCi0gICAgYXV0byBsaW5rQnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJ
VENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgYXV0byBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxM
aW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAg
ICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKLSAgICAgICAgbV9ncmFw
aC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPiht
X2dyYXBoLm1fcGxhbikpOworICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFr
ZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZSgpCiAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CiAKLSAgICBtX2dyYXBoLm1f
cGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAorICAgIG1f
Z3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEpJVEZpbmFsaXplcj4oCiAgICAg
ICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShs
aW5rQnVmZmVyKSkpOwogfQogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBjb21waWxlRW50cnlFeGVjdXRpb25GbGFnKCk7CiAKICAg
ICAvLyA9PT0gRnVuY3Rpb24gYm9keSBjb2RlIGdlbmVyYXRpb24gPT09Ci0gICAgbV9zcGVjdWxh
dGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKKyAgICBtX3Nw
ZWN1bGF0aXZlID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwogICAgIGNvbXBp
bGVCb2R5KCk7CiAgICAgc2V0RW5kT2ZNYWluUGF0aCgpOwogCkBAIC01MDcsOSArNTA3LDkgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBzZXRFbmRPZkNvZGUoKTsK
IAogICAgIC8vID09PSBMaW5rID09PQotICAgIGF1dG8gbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZh
aWwpOworICAgIGF1dG8gbGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oKnRoaXMs
IG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChsaW5rQnVmZmVy
LT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFs
aXplcihzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsK
KyAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmlu
YWxpemVyPihtX2dyYXBoLm1fcGxhbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGxp
bmsoKmxpbmtCdWZmZXIpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGVGdW5jdGlvbigpCiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4gd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+
KGFyaXR5Q2hlY2spOwogCi0gICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFr
ZV91bmlxdWU8SklURmluYWxpemVyPigKKyAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIo
bWFrZVVuaXF1ZTxKSVRGaW5hbGl6ZXI+KAogICAgICAgICBtX2dyYXBoLm1fcGxhbiwgbV9qaXRD
b2RlLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNr
KSk7CiB9CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09m
RG91YmxlQ29uc3RhbnQoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CiAK
ICAgICBpZiAoIW1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMpCi0gICAgICAgIG1fZ3JhcGgubV9k
b3VibGVDb25zdGFudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhZzxkb3VibGU+PigpOworICAgICAg
ICBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzID0gbWFrZVVuaXF1ZTxCYWc8ZG91YmxlPj4oKTsK
IAogICAgIGRvdWJsZSogYWRkcmVzc0luQ29uc3RhbnRQb29sID0gbV9ncmFwaC5tX2RvdWJsZUNv
bnN0YW50cy0+YWRkKCk7CiAgICAgKmFkZHJlc3NJbkNvbnN0YW50UG9vbCA9IHZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhh
c2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhh
c2UuY3BwCmluZGV4IGJiODAwMjc0ZGRjYjYzMDM0NzgzNzM3ZTM4YWQxZTYxZTljNWVhMDQuLmE5
NDQwNDc0NTkyNTIxODQ1YmEzMTg4MzdiMTNiOWY0YTMxN2VmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgY2xhc3MgTGl2ZW5lc3NBbmFseXNpc1BoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgLCBtX2xpdmVBdFRhaWwobV9ncmFwaCkKICAgICB7CiAgICAgICAgIG1fZ3Jh
cGgubV9pbmRleGluZ0NhY2hlLT5yZWNvbXB1dGUoKTsKLSAgICAgICAgbV93b3Jrc2V0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXb3Jrc2V0PihtX2dyYXBoLm1faW5kZXhpbmdDYWNoZS0+bnVtSW5kaWNl
cygpKTsKKyAgICAgICAgbV93b3Jrc2V0ID0gbWFrZVVuaXF1ZTxXb3Jrc2V0PihtX2dyYXBoLm1f
aW5kZXhpbmdDYWNoZS0+bnVtSW5kaWNlcygpKTsKICAgICB9CiAKICAgICBib29sIHJ1bigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCAzNGFjYmMxZmUyMmZiNzdmMzU4
MGRhMzY3OTljODIxNGJlYmM5ZDYyLi5iNjk0OWFhMDM1YzEyZmE3NDlkNTgwY2M3YzJhZWNjYThk
OTJjMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTI5Nyw3ICsy
OTcsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgp
CiAgICAgaWYgKG1fbW9kZSA9PSBGVExGb3JPU1JFbnRyeU1vZGUpIHsKICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBwZXJmb3JtT1NSRW50cnlwb2ludENyZWF0aW9uKGRmZyk7CiAgICAgICAgIGlmICgh
cmVzdWx0KSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8RmFp
bGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9IG1ha2VVbmlx
dWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gRmFpbFBhdGg7
CiAgICAgICAgIH0KICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1DUFNSZXRocmVhZGluZyk7CkBA
IC0zOTgsNyArMzk4LDcgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRo
cmVhZEltcGwoKQogICAgIGNhc2UgRlRMRm9yT1NSRW50cnlNb2RlOiB7CiAjaWYgRU5BQkxFKEZU
TF9KSVQpCiAgICAgICAgIGlmIChGVEw6OmNhbkNvbXBpbGUoZGZnKSA9PSBGVEw6OkNhbm5vdENv
bXBpbGUpIHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWls
ZWRGaW5hbGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1
ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsK
ICAgICAgICAgfQogICAgICAgICAKQEAgLTQ3OCw3ICs0NzgsNyBAQCBQbGFuOjpDb21waWxhdGlv
blBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgICAgIFJVTl9QSEFTRShwZXJm
b3JtV2F0Y2hwb2ludENvbGxlY3Rpb24pOwogICAgICAgICAKICAgICAgICAgaWYgKEZUTDo6Y2Fu
Q29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgewotICAgICAgICAgICAgbV9maW5h
bGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAg
ICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwog
ICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAppbmRleCA4NzE1
OTViMWZmMjU5YmVlNDRjNzFjZTAzZDdkOGU4YmQ2NDM2NTM3Li41MzRkNjRiNTM4ZmExODBhZjQ4
ZTg5ZDRmODI2MDJmYjQ1YzkyMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCkBAIC00NDgsNyArNDQ4LDcgQEAgY2xhc3Mg
U1NBQ29udmVyc2lvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJsb2NrLT52
YXJpYWJsZXNBdFRhaWwuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQu
Y2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKLSAgICAg
ICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+
KGJsb2NrKTsKKyAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBtYWtlVW5pcXVlPEJhc2ljQmxvY2s6
OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6
IGVudHJ5cG9pbnRJbmRleFRvQXJndW1lbnRzQmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCA3Y2Y0MjUyMWE2MjExNzhm
Zjg1MTJhZmY5ZmZmYTMyNTIwMDIyNGQ2Li5jZGNkYWE2MGQ4OThhM2I2NmQ3YjI5OGY2NjgxOGM3
OWRjNDhjODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQ
YXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0
aEdlbmVyYXRvci5oCkBAIC0xOTMsNyArMTkzLDcgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxT
bG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhDYWxsKAogICAgIFNwaWxsUmVnaXN0ZXJzTW9kZSBz
cGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQgcmVxdWlyZW1lbnQsCiAgICAgUmVz
dWx0VHlwZSByZXN1bHQsIEFyZ3VtZW50cy4uLiBhcmd1bWVudHMpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1
bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KAorICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxSZXN1bHRBbmRBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcjxK
dW1wVHlwZSwgRnVuY3Rpb25UeXBlLCBSZXN1bHRUeXBlLCBBcmd1bWVudHMuLi4+PigKICAgICAg
ICAgZnJvbSwgaml0LCBmdW5jdGlvbiwgc3BpbGxNb2RlLCByZXF1aXJlbWVudCwgcmVzdWx0LCBh
cmd1bWVudHMuLi4pOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
SnVtcFR5cGUsIHR5cGVuYW1lIERlc3RpbmF0aW9uVHlwZSwgdHlwZW5hbWUgU291cmNlVHlwZSwg
dW5zaWcKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
TW92ZSgKICAgICBKdW1wVHlwZSBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBTb3VyY2VUeXBl
IHNvdXJjZVtudW1iZXJPZkFzc2lnbm1lbnRzXSwgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0aW9u
W251bWJlck9mQXNzaWdubWVudHNdKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFz
c2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJj
ZVR5cGUsIG51bWJlck9mQXNzaWdubWVudHM+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3Np
Z25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VU
eXBlLCBudW1iZXJPZkFzc2lnbm1lbnRzPj4oCiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRp
b24sIHNvdXJjZSk7CiB9CiAKQEAgLTI0OSw3ICsyNDksNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291cmNlVHlwZSBz
b3VyY2VBcnJheVsxXSA9IHsgc291cmNlIH07CiAgICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0
aW9uQXJyYXlbMV0gPSB7IGRlc3RpbmF0aW9uIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwg
U291cmNlVHlwZSwgMT4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRo
R2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDE+PigKICAg
ICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKQEAg
LTI1OSw3ICsyNTksNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aE1vdmUoCiB7CiAgICAgU291cmNlVHlwZSBzb3VyY2VBcnJheVsyXSA9IHsgc291
cmNlMSwgc291cmNlMiB9OwogICAgIERlc3RpbmF0aW9uVHlwZSBkZXN0aW5hdGlvbkFycmF5WzJd
ID0geyBkZXN0aW5hdGlvbjEsIGRlc3RpbmF0aW9uMiB9OwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5
cGUsIFNvdXJjZVR5cGUsIDI+PigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBc3NpZ25pbmdTbG93
UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAyPj4o
CiAgICAgICAgIGZyb20sIGppdCwgZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IDIwN2E5YjY5YjQ4ODU1YjU2YjFmODM3MjA2NTFjMmJjNzZlMzhmOWUuLjcwZTcwNWQ3ODQ5
MzJkOWQzZmMyNzI0OTEzMmVmZDNlM2U1ZDY1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUKICAgICAvLyBJIHdhbnQgYSBzbG93IHBhdGggdGhhdCBhbHNvIGxv
YWRzIG91dCB0aGUgc3RvcmFnZSBwb2ludGVyLCBhbmQgdGhhdCdzCiAgICAgLy8gd2hhdCB0aGlz
IGN1c3RvbSBDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvciBnaXZlcyBtZS4gSXQn
cyBhIGxvdAogICAgIC8vIG9mIHdvcmsgZm9yIGEgdmVyeSBzbWFsbCBwaWVjZSBvZiBmdW5jdGlv
bmFsaXR5LiA6LS8KLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENh
bGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdSYXdPYmplY3QsIHJlc3VsdEdQUiwg
c3RvcmFnZUdQUiwKICAgICAgICAgc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpKTsKIApAQCAtODk5
LDcgKzg5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUqIG5vZGUsIEdQ
UlJlZyBiYXNlUmVnLCBHUFJSZWcgcHJvcGVydHlSZWcpCiAgICAgICAgIHNsb3dQYXRoLmFwcGVu
ZChqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUtPmFycmF5TW9kZSgp
KSk7CiAgICAgfQogICAgIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlx
dWU8QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
bWFrZVVuaXF1ZTxBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgc2xvd1BhdGgs
IHRoaXMsIG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB0ZW1wR1BSLCBzdHJ1Y3R1cmVHUFIp
KTsKICAgICAKICAgICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKQEAgLTIyNDIsMTAgKzIyNDIs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSog
bm9kZSkKICAgICAgICAgfQogICAgICAgICBpZiAocHJvdG90eXBlQ2hhaW5Jc1NhbmUpIHsKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjpt
YWtlX3VuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNs
b3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhpcywgSlNW
YWx1ZVJlZ3Moc2NyYXRjaFJlZyksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAjZWxzZQotICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxTYW5lU3RyaW5n
R2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihtYWtlVW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKICAg
ICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhpcywgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnUmVn
LCBzY3JhdGNoUmVnKSwKICAgICAgICAgICAgICAgICBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwog
I2VuZGlmCkBAIC03NjE5LDcgKzc2MTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZURpcmVjdEFyZ3VtZW50cywgcmVzdWx0R1BSLCBzdHJ1
Y3R1cmUsCiAgICAgICAgICAgICAgICAga25vd25MZW5ndGgsIG1pbkNhcGFjaXR5KSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxD
cmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAgIGF1dG8gZ2Vu
ZXJhdG9yID0gbWFrZVVuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3I+KAogICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHJlc3VsdEdQUiwgc3RydWN0dXJl
LCBsZW5ndGhHUFIsIG1pbkNhcGFjaXR5KTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
V1RGTW92ZShnZW5lcmF0b3IpKTsKICAgICB9CkBAIC04NDM5LDcgKzg0MzksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRo
VmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCisgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZh
cmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIs
IHRlbXBWYWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAgIH0KIApAQCAtOTEz
NSw3ICs5MTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0cnVjdHVyZUNoZWNrKE5v
ZGUqIG5vZGUsIEdQUlJlZyBjZWxsR1BSLCBHUFJSZWcgdGVtcEcKICAgICAgICAgR1BSUmVnIHN0
cnVjdHVyZUdQUjsKICAgICAgICAgCiAgICAgICAgIGlmICh0ZW1wR1BSID09IEludmFsaWRHUFJS
ZWcpIHsKLSAgICAgICAgICAgIHN0cnVjdHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8R1BSVGVtcG9y
YXJ5Pih0aGlzKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZSA9IG1ha2VVbmlxdWU8R1BSVGVtcG9y
YXJ5Pih0aGlzKTsKICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS0+Z3ByKCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gdGVtcEdQUjsKQEAg
LTEzMTc2LDcgKzEzMTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRl
TmV3QXJyYXlXaXRoU2l6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAogICAgIG1faml0
Lm11dGF0b3JGZW5jZSgqbV9qaXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
dGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0
aEdlbmVyYXRvcj4oCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJy
YXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwKICAg
ICAgICAgc3RydWN0dXJlLAogICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0
b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5
U3RvcmFnZSkpIDogc3RydWN0dXJlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCBmYTM5NmY0
ZjE5MmE4YmI0YWVmOTlkMDM3MTkyNGEyYTM4YzY0NWU4Li5iYTYxMjhlZmU5YmIzNjhmZTNiMDY2
MjNiNTFlZTNlZWFkM2M0ZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtOTUsOCArOTUs
OCBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgIGNhc2UgUGhhc2VNb2RlOjpHbG9iYWw6IHsKICAgICAgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKIAotICAgICAgICAgICAg
bV9zdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+KG1fZ3JhcGgp
OwotICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QWJzdHJhY3RJ
bnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0YXRlKTsKKyAg
ICAgICAgICAgIG1fc3RhdGUgPSBtYWtlVW5pcXVlPEluUGxhY2VBYnN0cmFjdFN0YXRlPihtX2dy
YXBoKTsKKyAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIgPSBtYWtlVW5pcXVlPEFic3RyYWN0SW50
ZXJwcmV0ZXI8SW5QbGFjZUFic3RyYWN0U3RhdGU+PihtX2dyYXBoLCAqbV9zdGF0ZSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG1faXNDb252ZXJnZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IApAQCAtMTA3LDggKzEwNyw4IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIC8vIHRvd2FyZHMgYmVsaWV2aW5nIHRoYXQgYWxs
IG5vZGVzIG5lZWQgYmFycmllcnMuICJOZWVkaW5nIGEgYmFycmllciIgaXMgbGlrZQogICAgICAg
ICAgICAgLy8gc2F5aW5nIHRoYXQgdGhlIG5vZGUgaXMgaW4gYSBwYXN0IGVwb2NoLiAiTm90IG5l
ZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlIHNheWluZwogICAgICAgICAgICAgLy8gdGhhdCB0aGUg
bm9kZSBpcyBpbiB0aGUgY3VycmVudCBlcG9jaC4KLSAgICAgICAgICAgIG1fc3RhdGVBdEhlYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFwaCk7Ci0g
ICAgICAgICAgICBtX3N0YXRlQXRUYWlsID0gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja01hcDxIYXNo
U2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0SGVhZCA9IG1ha2VV
bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKKyAgICAgICAgICAgIG1f
c3RhdGVBdFRhaWwgPSBtYWtlVW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFw
aCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJsb2NrTGlzdCBwb3N0T3JkZXIgPSBtX2dy
YXBoLmJsb2Nrc0luUG9zdE9yZGVyKCk7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggZTZjMjIyMWVlMzAxNTQ0YzcyYTljZTgzNWY5
ODBmZjM2ZjAyNGI3ZC4uOGY5MzAzNGIwYzZmOTBiYTY2ZjRiZjVjNTNiZTFiNGYwZmJhNzRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAgLTE1MCw3ICsx
NTAsNyBAQCBjbGFzcyBXb3JrbGlzdDo6VGhyZWFkQm9keSA6IHB1YmxpYyBBdXRvbWF0aWNUaHJl
YWQgewogICAgICAgICBpZiAobV9yZWxhdGl2ZVByaW9yaXR5KQogICAgICAgICAgICAgVGhyZWFk
OjpjdXJyZW50KCkuY2hhbmdlUHJpb3JpdHkobV9yZWxhdGl2ZVByaW9yaXR5KTsKICAgICAgICAg
Ci0gICAgICAgIG1fY29tcGlsYXRpb25TY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRp
b25TY29wZT4oKTsKKyAgICAgICAgbV9jb21waWxhdGlvblNjb3BlID0gbWFrZVVuaXF1ZTxDb21w
aWxhdGlvblNjb3BlPigpOwogICAgIH0KICAgICAKICAgICB2b2lkIHRocmVhZElzU3RvcHBpbmco
Y29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlkZQpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQg
V29ya2xpc3Q6OmZpbmlzaENyZWF0aW9uKHVuc2lnbmVkIG51bWJlck9mVGhyZWFkcywgaW50IHJl
bGF0aXZlUHJpb3JpdHkpCiAKIHZvaWQgV29ya2xpc3Q6OmNyZWF0ZU5ld1RocmVhZChjb25zdCBB
YnN0cmFjdExvY2tlciYgbG9ja2VyLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIHsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VGhyZWFkRGF0
YT4odGhpcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZERhdGE+IGRhdGEgPSBtYWtlVW5p
cXVlPFRocmVhZERhdGE+KHRoaXMpOwogICAgIGRhdGEtPm1fdGhyZWFkID0gYWRvcHRSZWYobmV3
IFRocmVhZEJvZHkobG9ja2VyLCAqdGhpcywgKmRhdGEsIG1fbG9jaywgbV9wbGFuRW5xdWV1ZWQu
Y29weVJlZigpLCByZWxhdGl2ZVByaW9yaXR5KSk7CiAgICAgbV90aHJlYWRzLmFwcGVuZChXVEZN
b3ZlKGRhdGEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJs
ZXIvRGlzYXNzZW1ibGVyLmNwcAppbmRleCAxOWIxMTVjOWZkZDY3Y2JjOGFlMTA5YzY0NDU3NDI4
YmEzYWRmYTUzLi4wMGJkYTY1NzI3OWNmN2E5OWRiYWIxNDliMDljNzAzZDY4YjM1YmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIu
Y3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgQXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyJiBhc3luY2hy
b25vdXNEaXNhc3NlbWJsZXIoKQogdm9pZCBkaXNhc3NlbWJsZUFzeW5jaHJvbm91c2x5KAogICAg
IGNvbnN0IENTdHJpbmcmIGhlYWRlciwgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPERpc2Fz
c2VtYmx5UHRyVGFnPiYgY29kZVJlZiwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCkK
IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrID0gc3RkOjptYWtl
X3VuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2Vt
Ymx5VGFzaz4gdGFzayA9IG1ha2VVbmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOwogICAgIHRhc2st
PmhlYWRlciA9IHN0cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVjayEgV2UgbmVlZCB0aGlzIGJl
Y2F1c2UgQ1N0cmluZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCiAgICAgdGFzay0+Y29kZVJlZiA9
IGNvZGVSZWY7CiAgICAgdGFzay0+c2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKaW5kZXggOTBhZTJmNGZlMDZhMTUyY2FlNTc4NWUy
YzAzYzk5OWI2ODMyYmMxYi4uZWM4MGVhNjdiMjU2Zjg5MThkNDg4M2E4YzUyYjhmMzc5NTgzYWJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcApA
QCAtMTU3LDExICsxNTcsMTEgQEAgY29uc3QgQWJzdHJhY3RIZWFwJiBJbmRleGVkQWJzdHJhY3RI
ZWFwOjphdFNsb3cocHRyZGlmZl90IGluZGV4KQogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGluZGV4KSA+PSBtX3NtYWxsSW5kaWNlcy5zaXplKCkpOwogICAgIAogICAgIGlmIChVTkxJ
S0VMWSghbV9sYXJnZUluZGljZXMpKQotICAgICAgICBtX2xhcmdlSW5kaWNlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWFwVHlwZT4oKTsKKyAgICAgICAgbV9sYXJnZUluZGljZXMgPSBtYWtlVW5pcXVl
PE1hcFR5cGU+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWJzdHJhY3RIZWFwPiYgZmllbGQg
PSBtX2xhcmdlSW5kaWNlcy0+YWRkKGluZGV4LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgaWYgKCFmaWVsZCkgewotICAgICAgICBmaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8QWJzdHJh
Y3RIZWFwPigpOworICAgICAgICBmaWVsZCA9IG1ha2VVbmlxdWU8QWJzdHJhY3RIZWFwPigpOwog
ICAgICAgICBpbml0aWFsaXplKCpmaWVsZCwgaW5kZXgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggNWQwNGI3MmYwNDgzMWQwNjMwMjMwNGQx
ZWI3ZTQ5MjlkNDgwNDI3Zi4uNDYzNWNjOTZmOTEwOTFmNzNmMDhkMWY3NTJiMDQ3ZDEwNTNiZmI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZl
cG9pbnRSZXN1bHQpCiAgICAgVk0mIHZtID0gZ3JhcGgubV92bTsKIAogICAgIGlmIChzaG91bGRE
dW1wRGlzYXNzZW1ibHkoKSkKLSAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNldERpc2Fzc2Vt
YmxlcihzdGQ6Om1ha2VfdW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CisgICAgICAg
IHN0YXRlLnByb2MtPmNvZGUoKS5zZXREaXNhc3NlbWJsZXIobWFrZVVuaXF1ZTxCMzo6QWlyOjpE
aXNhc3NlbWJsZXI+KCkpOwogCiAgICAgewogICAgICAgICBHcmFwaFNhZmVwb2ludCBzYWZlcG9p
bnQoc3RhdGUuZ3JhcGgsIHNhZmVwb2ludFJlc3VsdCk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
Y29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9m
ZnNldExpc3Q+IHJlZ2lzdGVyT2Zmc2V0cyA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8UmVn
aXN0ZXJBdE9mZnNldExpc3Q+KHN0YXRlLnByb2MtPmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0
TGlzdCgpKTsKKyAgICAgICAgbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oc3RhdGUu
cHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOwogICAgIGlmIChzaG91bGRE
dW1wRGlzYXNzZW1ibHkoKSkKICAgICAgICAgZGF0YUxvZygiVW53aW5kIGluZm8gZm9yICIsIENv
ZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklUVHlwZTo6RlRMSklUKSwgIjogIiwgKnJl
Z2lzdGVyT2Zmc2V0cywgIlxuIik7CiAgICAgY29kZUJsb2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0
ZXJzKFdURk1vdmUocmVnaXN0ZXJPZmZzZXRzKSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBj
b21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkK
ICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAKLSAgICBzdGF0
ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZm
ZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgIHN0YXRlLmZp
bmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IG1ha2VVbmlxdWU8TGlua0J1ZmZlcj4oaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAKICAgICBpZiAoc3RhdGUuZmluYWxp
emVyLT5iM0NvZGVMaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAgIHN0
YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgY29t
cGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVwb2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAg
ICAgCiAgICAgQjM6OlBDVG9PcmlnaW5NYXAgb3JpZ2luTWFwID0gc3RhdGUucHJvYy0+cmVsZWFz
ZVBDVG9PcmlnaW5NYXAoKTsKICAgICBpZiAodm0uc2hvdWxkQnVpbGRlclBDVG9Db2RlT3JpZ2lu
TWFwcGluZygpKQotICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKHN0ZDo6
bWFrZV91bmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2
bSwgV1RGTW92ZShvcmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZl
cikpOworICAgICAgICBjb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8
UENUb0NvZGVPcmlnaW5NYXA+KFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlcih2bSwgV1RGTW92ZShv
cmlnaW5NYXApKSwgKnN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlcikpOwogCiAgICAg
Q29kZUxvY2F0aW9uTGFiZWw8SlNFbnRyeVB0clRhZz4gbGFiZWwgPSBzdGF0ZS5maW5hbGl6ZXIt
PmIzQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oc3RhdGUucHJvYy0+
ZW50cnlwb2ludExhYmVsKDApKTsKICAgICBzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbiA9IGxhYmVs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKaW5kZXggMTY1MzM1MDljZDBiNDgy
Yzc0YmNhNjczMTg3NjNmMmUwZjA5ZGRmMS4uYzNmOTMzOTJmMjZlNmZjOTVmOWMyY2M1OTI5ZWQz
NGM2YmMzMGMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWls
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKIHZvaWQgZmFpbChTdGF0ZSYgc3RhdGUp
CiB7Ci0gICAgc3RhdGUuZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVl
PEZhaWxlZEZpbmFsaXplcj4oc3RhdGUuZ3JhcGgubV9wbGFuKSk7CisgICAgc3RhdGUuZ3JhcGgu
bV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oc3RhdGUuZ3Jh
cGgubV9wbGFuKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCmluZGV4IDA4NTQwNTZlYzdkMTYyYjExY2RjMjFjZDc4ZmUx
NTE3ZjdhY2YzZWIuLjk1ZGI2OTYxZThlOTA3NzBjZDZlNTU2NzMwMjJiNDQ3NjNiNTgwNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZv
aWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNz
KCk7CiAgICAgICAgICAgICBtYWluUGF0aEp1bXBzLmFwcGVuZChqaXQuanVtcCgpKTsKIAotICAg
ICAgICAgICAgbGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgICAgICBsaW5rQnVmZmVy
ID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25D
YW5GYWlsKTsKICAgICAgICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgp
KSB7CiAgICAgICAgICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgbGluayhTdGF0ZSYg
c3RhdGUpCiAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIG1haW5QYXRoSnVtcCA9IGppdC5qdW1wKCk7CiAgICAgICAgIAotICAgICAg
ICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgbGlua0J1ZmZlciA9IG1ha2VVbmlx
dWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAg
ICAgICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAgICAg
ICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBhZjFi
YTRiZjkwYThmZDBiYTI1MDJjNjQ3ZTJjMTcxNDEyMmRlN2Q0Li4wOWIzNDI3M2NiYjdjYWI0NGNk
ODYzZTk5YjI4NTkwZTg3Yzk0YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNTA4MCw3ICsxNTA4MCw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhn
ZW5lcmF0b3JKdW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUxv
Y2F0aW9uTGFiZWw8SklUVGh1bmtQdHJUYWc+KHZtLT5nZXRDVElTdHViKGxhenlTbG93UGF0aEdl
bmVyYXRpb25UaHVua0dlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGF6eVNsb3dQYXRoPiBsYXp5U2xvd1BhdGggPSBzdGQ6Om1ha2VfdW5pcXVlPExhenlTbG93
UGF0aD4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PExhenlTbG93UGF0aD4gbGF6eVNsb3dQYXRoID0gbWFrZVVuaXF1ZTxMYXp5U2xvd1BhdGg+KCk7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5rZWRQYXRjaGFibGVK
dW1wID0gQ29kZUxvY2F0aW9uSnVtcDxKU0ludGVybmFsUHRyVGFnPihsaW5rQnVmZmVyLmxvY2F0
aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2hhYmxlSnVtcCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMU3RhdGUuY3BwCmluZGV4IDY1M2VjNmY2OTYwNDliNzUyYWMyNGE3NzkzMTBk
NGFkOTdiYjAzZGIuLjRhNDg0ZmE2ZDQ2NDMwZDcxZTU3MDA4YmYxZTk5ZjZjMjViODQ4OTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCkBAIC02MCwxMCArNjAsMTAgQEAg
U3RhdGU6OlN0YXRlKEdyYXBoJiBncmFwaCkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
Z3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4o
Z3JhcGgubV9wbGFuKSk7CisgICAgZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVl
PEpJVEZpbmFsaXplcj4oZ3JhcGgubV9wbGFuKSk7CiAgICAgZmluYWxpemVyID0gc3RhdGljX2Nh
c3Q8SklURmluYWxpemVyKj4oZ3JhcGgubV9wbGFuLmZpbmFsaXplcigpKTsKIAotICAgIHByb2Mg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByb2NlZHVyZT4oKTsKKyAgICBwcm9jID0gbWFrZVVuaXF1ZTxQ
cm9jZWR1cmU+KCk7CiAKICAgICBwcm9jLT5zZXRPcmlnaW5QcmludGVyKAogICAgICAgICBbXSAo
UHJpbnRTdHJlYW0mIG91dCwgQjM6Ok9yaWdpbiBvcmlnaW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKaW5kZXggMjJkN2ZkNjVkNWExNzU1
YjViMmQzYjc4ZGRhNTVjMGQwMDdlMWNjYi4uMDIxYjBjZGI5ZGZhYzE4YjM2ODY0MjhhOTgyM2Yy
ODExMGJiNzlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxl
dGVTdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVT
dWJzcGFjZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6
OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5n
IEJsb2NrRGlyZWN0b3J5L0xvY2FsQWxsb2NhdG9yIGZvciAiLCBtX25hbWUsICIsICIsIGF0dHJp
YnV0ZXMoKSwgIiwgIiwgc2l6ZUNsYXNzLCAiLlxuIik7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVf
cHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlxdWVEaXJlY3RvcnkgPQotICAgICAgICBzdGQ6Om1ha2Vf
dW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKKyAgICAg
ICAgbWFrZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNpemVDbGFzcyk7
CiAgICAgQmxvY2tEaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9yeS5nZXQoKTsK
ICAgICBtX2RpcmVjdG9yaWVzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9yeSkpOwogICAg
IApAQCAtODgsNyArODgsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9y
Rm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICBtX3NwYWNlLmFkZEJsb2NrRGlyZWN0b3J5KGxvY2tl
ciwgZGlyZWN0b3J5KTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxBbGxvY2F0b3I+
IHVuaXF1ZUxvY2FsQWxsb2NhdG9yID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxMb2NhbEFs
bG9jYXRvcj4oZGlyZWN0b3J5KTsKKyAgICAgICAgbWFrZVVuaXF1ZTxMb2NhbEFsbG9jYXRvcj4o
ZGlyZWN0b3J5KTsKICAgICBMb2NhbEFsbG9jYXRvciogbG9jYWxBbGxvY2F0b3IgPSB1bmlxdWVM
b2NhbEFsbG9jYXRvci5nZXQoKTsKICAgICBtX2xvY2FsQWxsb2NhdG9ycy5hcHBlbmQoV1RGTW92
ZSh1bmlxdWVMb2NhbEFsbG9jYXRvcikpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAppbmRleCBhMDFiNWEyYjRhZWZkM2U1Mjk2OTc3YTVjODM4NDA0MmU1YTI5NTZhLi45NzE5
OWUxODZkZTcyZDc3Mjc5NzM1YzlkM2M5OTQwYzg1YzQ4YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcApAQCAtMjg5LDE1ICsyODksMTUgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9tYXhFZGVuU2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUp
CiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAsIG1fb2JqZWN0
U3BhY2UodGhpcykKLSAgICAsIG1fbWFjaGluZVRocmVhZHMoc3RkOjptYWtlX3VuaXF1ZTxNYWNo
aW5lVGhyZWFkcz4oKSkKLSAgICAsIG1fY29sbGVjdG9yU2xvdFZpc2l0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJDIikpCi0gICAgLCBtX211dGF0b3JTbG90VmlzaXRv
cihzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIk0iKSkKLSAgICAsIG1fbXV0
YXRvck1hcmtTdGFjayhzdGQ6Om1ha2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQotICAgICwg
bV9yYWNlTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAg
LCBtX2NvbnN0cmFpbnRTZXQoc3RkOjptYWtlX3VuaXF1ZTxNYXJraW5nQ29uc3RyYWludFNldD4o
KnRoaXMpKQorICAgICwgbV9tYWNoaW5lVGhyZWFkcyhtYWtlVW5pcXVlPE1hY2hpbmVUaHJlYWRz
PigpKQorICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihtYWtlVW5pcXVlPFNsb3RWaXNpdG9y
PigqdGhpcywgIkMiKSkKKyAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8U2xv
dFZpc2l0b3I+KCp0aGlzLCAiTSIpKQorICAgICwgbV9tdXRhdG9yTWFya1N0YWNrKG1ha2VVbmlx
dWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3JhY2VNYXJrU3RhY2sobWFrZVVuaXF1ZTxN
YXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fY29uc3RyYWludFNldChtYWtlVW5pcXVlPE1hcmtp
bmdDb25zdHJhaW50U2V0PigqdGhpcykpCiAgICAgLCBtX2hhbmRsZVNldCh2bSkKLSAgICAsIG1f
Y29kZUJsb2NrcyhzdGQ6Om1ha2VfdW5pcXVlPENvZGVCbG9ja1NldD4oKSkKLSAgICAsIG1faml0
U3R1YlJvdXRpbmVzKHN0ZDo6bWFrZV91bmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCisgICAg
LCBtX2NvZGVCbG9ja3MobWFrZVVuaXF1ZTxDb2RlQmxvY2tTZXQ+KCkpCisgICAgLCBtX2ppdFN0
dWJSb3V0aW5lcyhtYWtlVW5pcXVlPEpJVFN0dWJSb3V0aW5lU2V0PigpKQogICAgICwgbV92bSh2
bSkKICAgICAvLyBXZSBzZWVkIHdpdGggMTBtcyBzbyB0aGF0IEdDQWN0aXZpdHlDYWxsYmFjazo6
ZGlkQWxsb2NhdGUgZG9lc24ndCBjb250aW51b3VzbHkgCiAgICAgLy8gc2NoZWR1bGUgdGhlIHRp
bWVyIGlmIHdlJ3ZlIG5ldmVyIGRvbmUgYSBjb2xsZWN0aW9uLgpAQCAtMzA1LDggKzMwNSw4IEBA
IEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fZWRlbkFjdGl2
aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjp0cnlDcmVhdGVFZGVuVGltZXIodGhpcykp
CiAgICAgLCBtX3N3ZWVwZXIoYWRvcHRSZWYoKm5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIodGhpcykp
KQogICAgICwgbV9zdG9wSWZOZWNlc3NhcnlUaW1lcihhZG9wdFJlZigqbmV3IFN0b3BJZk5lY2Vz
c2FyeVRpbWVyKHZtKSkpCi0gICAgLCBtX3NoYXJlZENvbGxlY3Rvck1hcmtTdGFjayhzdGQ6Om1h
a2VfdW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQotICAgICwgbV9zaGFyZWRNdXRhdG9yTWFya1N0
YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3NoYXJlZENv
bGxlY3Rvck1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9z
aGFyZWRNdXRhdG9yTWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCiAgICAg
LCBtX2hlbHBlckNsaWVudCgmaGVhcEhlbHBlclBvb2woKSkKICAgICAsIG1fdGhyZWFkTG9jayhC
b3g8TG9jaz46OmNyZWF0ZSgpKQogICAgICwgbV90aHJlYWRDb25kaXRpb24oQXV0b21hdGljVGhy
ZWFkQ29uZGl0aW9uOjpjcmVhdGUoKSkKQEAgLTMxNCw3ICszMTQsNyBAQCBIZWFwOjpIZWFwKFZN
KiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgbV93b3JsZFN0YXRlLnN0b3JlKDApOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbnVtYmVyT2ZQYXJhbGxlbFRocmVhZHMgPSBoZWFwSGVs
cGVyUG9vbCgpLm51bWJlck9mVGhyZWFkcygpOyBpIDwgbnVtYmVyT2ZQYXJhbGxlbFRocmVhZHM7
ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEp
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RWaXNpdG9yPiB2aXNpdG9yID0gbWFrZVVu
aXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsIHRvQ1N0cmluZygiUCIsIGkgKyAxKSk7CiAgICAgICAg
IGlmIChPcHRpb25zOjpvcHRpbWl6ZVBhcmFsbGVsU2xvdFZpc2l0b3JzRm9yU3RvcHBlZE11dGF0
b3IoKSkKICAgICAgICAgICAgIHZpc2l0b3ItPm9wdGltaXplRm9yU3RvcHBlZE11dGF0b3IoKTsK
ICAgICAgICAgbV9hdmFpbGFibGVQYXJhbGxlbFNsb3RWaXNpdG9ycy5hcHBlbmQodmlzaXRvci5n
ZXQoKSk7CkBAIC0zMjMsMTcgKzMyMywxNyBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUg
aGVhcFR5cGUpCiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRHQygpKSB7CiAg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VTdG9jaGFzdGljTXV0YXRvclNjaGVkdWxlcigpKQotICAg
ICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0b2NoYXN0aWNTcGFjZVRp
bWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX3NjaGVkdWxlciA9IG1h
a2VVbmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
YWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVy
ID0gbWFrZVVuaXF1ZTxTcGFjZVRpbWVNdXRhdG9yU2NoZWR1bGVyPigqdGhpcyk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gV2Ugc2ltdWxhdGUgdHVybmluZyBvZmYgY29uY3VycmVudCBHQyBi
eSBtYWtpbmcgdGhlIHNjaGVkdWxlciBzYXkgdGhhdCB0aGUgd29ybGQKICAgICAgICAgLy8gc2hv
dWxkIGFsd2F5cyBiZSBzdG9wcGVkIHdoZW4gdGhlIGNvbGxlY3RvciBpcyBydW5uaW5nLgotICAg
ICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNTdG9wVGhlV29y
bGRNdXRhdG9yU2NoZWR1bGVyPigpOworICAgICAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8
U3luY2hyb25vdXNTdG9wVGhlV29ybGRNdXRhdG9yU2NoZWR1bGVyPigpOwogICAgIH0KICAgICAK
ICAgICBpZiAoT3B0aW9uczo6dmVyaWZ5SGVhcCgpKQotICAgICAgICBtX3ZlcmlmaWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxIZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0NDeWNs
ZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbigpKTsKKyAgICAgICAgbV92ZXJpZmllciA9IG1ha2VV
bmlxdWU8SGVhcFZlcmlmaWVyPih0aGlzLCBPcHRpb25zOjpudW1iZXJPZkdDQ3ljbGVzVG9SZWNv
cmRGb3JWZXJpZmljYXRpb24oKSk7CiAgICAgCiAgICAgbV9jb2xsZWN0b3JTbG90VmlzaXRvci0+
b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogCkBAIC04OTksNyArODk5LDcgQEAgc2l6ZV90
IEhlYXA6OnByb3RlY3RlZE9iamVjdENvdW50KCkKIAogc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3Vu
dFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlQ291bnRT
ZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gbWFrZVVu
aXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgZm9yRWFjaFByb3RlY3RlZENlbGwoCiAgICAgICAg
IFsmXSAoSlNDZWxsKiBjZWxsKSB7CiAgICAgICAgICAgICByZWNvcmRUeXBlKCp2bSgpLCAqcmVz
dWx0LCBjZWxsKTsKQEAgLTkwOSw3ICs5MDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50
U2V0PiBIZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIAogc3RkOjp1bmlxdWVfcHRy
PFR5cGVDb3VudFNldD4gSGVhcDo6b2JqZWN0VHlwZUNvdW50cygpCiB7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlQ291bnRT
ZXQ+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gcmVzdWx0ID0gbWFrZVVu
aXF1ZTxUeXBlQ291bnRTZXQ+KCk7CiAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNj
b3BlKCp0aGlzKTsKICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbCgKICAgICAgICAg
aXRlcmF0aW9uU2NvcGUsCkBAIC0yODU2LDcgKzI4NTYsNyBAQCB2b2lkIEhlYXA6OmFkZENvcmVD
b25zdHJhaW50cygpCiAgICAgICAgIH0sCiAgICAgICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5OjpT
ZWxkb21HcmV5ZWQpOwogICAgIAotICAgIG1fY29uc3RyYWludFNldC0+YWRkKHN0ZDo6bWFrZV91
bmlxdWU8TWFya1N0YWNrTWVyZ2luZ0NvbnN0cmFpbnQ+KCp0aGlzKSk7CisgICAgbV9jb25zdHJh
aW50U2V0LT5hZGQobWFrZVVuaXF1ZTxNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludD4oKnRoaXMp
KTsKIH0KIAogdm9pZCBIZWFwOjphZGRNYXJraW5nQ29uc3RyYWludChzdGQ6OnVuaXF1ZV9wdHI8
TWFya2luZ0NvbnN0cmFpbnQ+IGNvbnN0cmFpbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcElubGluZXMuaAppbmRleCA1YjY5Y2Q1ZTM1ZjYyYjUwNjYzYTljYmRjNzM5NGQxYmQ2N2Fk
MWQ4Li5lMWViNmM3ODMzZDQ4NTg3MWE5YzUzM2NmZDQ3MzFjNzVmOWIxMWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKQEAgLTIxNyw3ICsyMTcsNyBAQCBpbmxp
bmUgdm9pZCBIZWFwOjpkZWNyZW1lbnREZWZlcnJhbERlcHRoQW5kR0NJZk5lZWRlZCgpCiBpbmxp
bmUgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBIZWFwOjptYXJrTGlzdFNldCgpCiB7
CiAgICAgaWYgKCFtX21hcmtMaXN0U2V0KQotICAgICAgICBtX21hcmtMaXN0U2V0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+KCk7CisgICAgICAgIG1f
bWFya0xpc3RTZXQgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4o
KTsKICAgICByZXR1cm4gKm1fbWFya0xpc3RTZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5kZXggNWI5YWM4OWRhYmYw
NGEwNjE0ZGMxMGZiYmFmMTZjMGY0YTQ5OWY3ZS4uMmQyYmM4ZmI5YjI3ZmU5ZjliMWI1YmU1NGNi
NzUxZjgzZTBkM2QwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBIZWFwU25hcHNob3RC
dWlsZGVyOjpidWlsZFNuYXBzaG90KCkKIAogICAgIFByZXZlbnRDb2xsZWN0aW9uU2NvcGUgcHJl
dmVudENvbGxlY3Rpb25TY29wZShtX3Byb2ZpbGVyLnZtKCkuaGVhcCk7CiAKLSAgICBtX3NuYXBz
aG90ID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwU25hcHNob3Q+KG1fcHJvZmlsZXIubW9zdFJlY2Vu
dFNuYXBzaG90KCkpOworICAgIG1fc25hcHNob3QgPSBtYWtlVW5pcXVlPEhlYXBTbmFwc2hvdD4o
bV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNob3QoKSk7CiAgICAgewogICAgICAgICBtX3Byb2Zp
bGVyLnNldEFjdGl2ZVNuYXBzaG90QnVpbGRlcih0aGlzKTsKICAgICAgICAgbV9wcm9maWxlci52
bSgpLmhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAppbmRleCBiOGU0MzAxOTFlNmIxZGMy
OWFhNWMwZjEwY2RkNmU5YmIxOThmZGE5Li43YzJlZDI0MDJmZDczMDFmYzA5OWE4ZGZiNWQzYzMz
NmFlYWQxMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcApA
QCAtODcsNyArODcsNyBAQCBORVZFUl9JTkxJTkUgQml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1Bl
ckJsb2NrPiogSXNvQ2VsbFNldDo6YWRkU2xvdyhzaXplX3QgYmxvYwogICAgIGF1dG8mIGJpdHNQ
dHJSZWYgPSBtX2JpdHNbYmxvY2tJbmRleF07CiAgICAgYXV0byogYml0cyA9IGJpdHNQdHJSZWYu
Z2V0KCk7CiAgICAgaWYgKCFiaXRzKSB7Ci0gICAgICAgIGJpdHNQdHJSZWYgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4+KCk7CisgICAgICAgIGJp
dHNQdHJSZWYgPSBtYWtlVW5pcXVlPEJpdG1hcDxNYXJrZWRCbG9jazo6YXRvbXNQZXJCbG9jaz4+
KCk7CiAgICAgICAgIGJpdHMgPSBiaXRzUHRyUmVmLmdldCgpOwogICAgICAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOwogICAgICAgICBtX2Jsb2Nrc1dpdGhCaXRzW2Jsb2NrSW5kZXhdID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAppbmRleCBkNTEw
MDBlYmE4N2YzMWRlNDgxYmVkMDhhNWYyZmVkOGE2MzlmZjk5Li5jZDNlN2U1NjE1NDU2NmRjZjhj
MTUxNjNhMTViNzJmMjc2OGYyOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIElzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShD
U3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzCiAg
ICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fZGlyZWN0b3J5KCZoZWFwLCBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKICAgICAsIG1fbG9jYWxB
bGxvY2F0b3IoJm1fZGlyZWN0b3J5KQotICAgICwgbV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9y
KHN0ZDo6bWFrZV91bmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKKyAgICAsIG1f
aXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihtYWtlVW5pcXVlPElzb0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3I+KCkpCiB7CiAgICAgaW5pdGlhbGl6ZShoZWFwQ2VsbFR5cGUsIG1faXNvQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAppbmRleCBiM2FiZDJjNTIyNGZjZTNlNWNlMTJj
NGYxNjNlZDQ4MjNkYWU2OThlLi4xNzgwYzA4YTQ3MGYyNzYyMzE2MzdlZjY4MTE3YzlhNGUzMmMx
ZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3Ry
YWludFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0
cmFpbnRTZXQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6
OmRpZFN0YXJ0TWFya2luZygpCiAKIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFkZChDU3Ry
aW5nIGFiYnJldmlhdGVkTmFtZSwgQ1N0cmluZyBuYW1lLCA6OkZ1bmN0aW9uPHZvaWQoU2xvdFZp
c2l0b3ImKT4gZnVuY3Rpb24sIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHksIENvbnN0
cmFpbnRDb25jdXJyZW5jeSBjb25jdXJyZW5jeSwgQ29uc3RyYWludFBhcmFsbGVsaXNtIHBhcmFs
bGVsaXNtKQogewotICAgIGFkZChzdGQ6Om1ha2VfdW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJh
aW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdURk1vdmUobmFtZSksIFdURk1vdmUoZnVu
Y3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20pKTsKKyAgICBhZGQo
bWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oV1RGTW92ZShhYmJyZXZpYXRlZE5h
bWUpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgdm9sYXRpbGl0eSwgY29uY3Vy
cmVuY3ksIHBhcmFsbGVsaXNtKSk7CiB9CiAKIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRTZXQ6OmFk
ZCgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4MmJlM2JiYjQ0Y2I2YzU3NzZi
OGVjZjdmYTBjOTQwZDVkNWE1ODI1Li41M2E5MWEyM2MxZDg5MjkxOGVlNDI5NDFhNjVmNTI3ODY3
ZDQzMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZl
bChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzCiAKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBhcmd1
bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKLSAgICBtX2NvbnNvbGVB
Z2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92
ZShhcmd1bWVudHMpLCBleGVjKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQ
SSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYykpOwogfQog
CiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6Y291bnQoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIGxhYmVsKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYg
dGl0bGUpCiAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUaXRsZSA9PSB0aXRsZSkgewogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2Nh
bGl6YXRpb24/CiAgICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5
KCkgPyAiVW5uYW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0cmluZygiUHJv
ZmlsZSBcIiIsIHRpdGxlLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAgICAgICAgICBt
X2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmls
ZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgICAgICAgICAgbV9j
b25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlRW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJiB0aXRsCiAKICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBm
b3IgbG9jYWxpemF0aW9uPwogICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8g
Ik5vIHByb2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRpdGxlLCAi
XCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29u
c29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogfQogCiB2
b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c3RhcnRDb25zb2xlUHJvZmlsZSgpCkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnNjcmVl
bnNob3QoRXhlY1N0YXRlKiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKIHZvaWQgSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50Ojp3YXJuVW5pbXBsZW1lbnRlZChjb25zdCBTdHJpbmcmIG1ldGhv
ZCkKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ldGhvZCArICIgaXMgY3VycmVudGx5IGlnbm9y
ZWQgaW4gSmF2YVNjcmlwdCBjb250ZXh0IGluc3BlY3Rpb24uIjsKLSAgICBtX2NvbnNvbGVBZ2Vu
dC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIG1lc3NhZ2UpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29u
c29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1lc3NhZ2UpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKaW5kZXggYzhkYTUyZWZkMTNjNDkxY2NhZTYzOTVlMDc0YzQ2NDRlNzBjYzBh
Ny4uYmRiZDMxZDYzMTJiMmMwNTZkN2M0NzgxNWRjNjE1ZDEyMjZkOTI3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKLSAgICAsIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhp
cywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihtYWtlVW5pcXVlPEluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIEluamVjdGVk
U2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdh
dGNoOjpjcmVhdGUoKSkKICAgICAsIG1fc2NyaXB0RGVidWdTZXJ2ZXIoZ2xvYmFsT2JqZWN0KQog
ICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCkBAIC03MSwx
MSArNzEsMTEgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9i
amVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoKIHsKICAgICBhdXRvIGNvbnRleHQg
PSBqc0FnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4dCk7CisgICAgYXV0byBjb25zb2xl
QWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckNvbnNvbGVBZ2VudD4oY29udGV4dCk7CiAgICAg
bV9jb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnQuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURk1vdmUoY29uc29sZUFnZW50KSk7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudD4obV9jb25zb2xlQWdlbnQpOwor
ICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50PihtX2NvbnNvbGVBZ2VudCk7CiAKICAgICBtX2V4ZWN1dGlvblN0b3B3YXRjaC0+c3RhcnQo
KTsKIH0KQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6cmVwb3J0QVBJRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZQogICAgICAg
ICAgICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBT
dHJpbmcoKSwgMCwgMCk7CiAgICAgfQogCi0gICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
V1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0Nv
bnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgV1RGTW92ZShj
YWxsU3RhY2spKSk7CiB9CiAKIENvbnNvbGVDbGllbnQqIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29uc29sZUNsaWVudCgpIGNvbnN0CkBAIC0yODAsNyArMjgwLDcgQEAgSW5z
cGVjdG9yQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlSW5z
cGVjdG9yQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JBZ2VudCkgewogICAgICAgICBh
dXRvIGNvbnRleHQgPSBqc0FnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGluc3BlY3RvckFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBZ2VudD4oY29udGV4dCk7CisgICAgICAg
IGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0
KTsKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAg
ICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwogICAgIH0KQEAg
LTI5MSw3ICsyOTEsNyBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50JiBKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZURlYnVnZ2VyQWdlbnQoKQogewogICAgIGlmICghbV9k
ZWJ1Z2dlckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7
Ci0gICAgICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7CisgICAgICAgIGF1
dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50
Pihjb250ZXh0LCBtX2NvbnNvbGVBZ2VudCk7CiAgICAgICAgIG1fZGVidWdnZXJBZ2VudCA9IGRl
YnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fY29uc29sZUNsaWVudC0+c2V0SW5zcGVjdG9y
RGVidWdnZXJBZ2VudChtX2RlYnVnZ2VyQWdlbnQpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQo
V1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CkBAIC0zMjcsMjAgKzMyNywyMCBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAKICAgICBl
bnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ+KGNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4oY29udGV4dCkp
OwogCiAgICAgZW5zdXJlRGVidWdnZXJBZ2VudCgpOwogCi0gICAgYXV0byBzY3JpcHRQcm9maWxl
ckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
Pihjb250ZXh0KTsKKyAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtlVW5pcXVl
PEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRleHQpOwogICAgIG1fY29uc29sZUNs
aWVudC0+c2V0SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChzY3JpcHRQcm9maWxlckFnZW50
UHRyLmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShzY3JpcHRQcm9maWxlckFn
ZW50UHRyKSk7CiAKLSAgICBhdXRvIGhlYXBBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9ySGVhcEFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGhlYXBBZ2VudCA9IG1ha2VVbmlxdWU8
SW5zcGVjdG9ySGVhcEFnZW50Pihjb250ZXh0KTsKICAgICBpZiAobV9jb25zb2xlQWdlbnQpCiAg
ICAgICAgIG1fY29uc29sZUFnZW50LT5zZXRJbnNwZWN0b3JIZWFwQWdlbnQoaGVhcEFnZW50Lmdl
dCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShoZWFwQWdlbnQpKTsKIAotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0QXVkaXRBZ2VudD4o
Y29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0
QXVkaXRBZ2VudD4oY29udGV4dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFnZW50LmNwcAppbmRleCBjMGI1YzlhYWQxOGMwOGNlZGRjMzY5NjZiZjA0Njg1MTQxNzYy
NjQzLi40MTdlNzc1ZmI4MDI0OWMwNDAzMTM3YTgyNzgyMTM3MzI3ZDMzMmI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QWdlbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogSW5zcGVj
dG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiSW5zcGVjdG9yIl9zKQogICAgICwgbV9lbnZpcm9ubWVudChjb250
ZXh0LmVudmlyb25tZW50KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAK
aW5kZXggN2VkYmM4MDY2MGYzNmQ2YTgxYWE5MWZiOGZhM2ZkZGRlZGFlNmYyNi4uNWQyNGM2OWU2
YmY0NWQ3MmZiMGJkYTUzYjRjNDU3NTk4NjEzY2JjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xl
QWdlbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZXhwaXJlQ29uc29s
ZU1lc3NhZ2VzU3RlcCA9IDEwOwogSW5zcGVjdG9yQ29uc29sZUFnZW50OjpJbnNwZWN0b3JDb25z
b2xlQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KCJDb25zb2xlIl9zKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDb25zb2xlRnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3Bh
dGNoZXIoQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlz
cGF0Y2hlciwgdGhpcykpCiB7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnN0YXJ0VGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcmIGxhYmUKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIC8vIEZJWE1F
OiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAg
IFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGFscmVh
ZHkgZXhpc3RzIik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxs
U3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
bWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVT
Y3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgfQogfQogCkBAIC0xNTks
MTQgKzE1OSwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6bG9nVGltaW5nKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLAogICAgIGlmIChpdCA9PSBtX3Rp
bWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250
ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmlu
ZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcs
IFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTW9u
b3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25kcyBlbGFwc2VkID0g
TW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNl
ZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92
ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBhZGRNZXNzYWdlVG9Db25z
b2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1lc3NhZ2UsIFdURk1v
dmUoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcmIGxhYmVsKQpAQCAtMTg0LDE0ICsxODQsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwK
ICAgICBpZiAoaXQgPT0gbV90aW1lcy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBh
biBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcg
d2FybmluZyA9IG1ha2VTdHJpbmcoIlRpbWVyIFwiIiwgbGFiZWwsICJcIiBkb2VzIG5vdCBleGlz
dCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7Cisg
ICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lID0gaXQtPnZhbHVlOwogICAg
IFNlY29uZHMgZWxhcHNlZCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lOwogICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZyhsYWJlbCwgIjogIiwgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFdpZHRoKGVsYXBzZWQubWlsbGlzZWNvbmRzKCksIDMpLCAibXMiKTsKLSAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6RGVi
dWcsIG1lc3NhZ2UsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92
ZShjYWxsU3RhY2spKSk7CiAKICAgICBtX3RpbWVzLnJlbW92ZShpdCk7CiB9CkBAIC0yMjQsNyAr
MjI0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIC8vIEZJWE1FOiBXZWIgSW5zcGVjdG9y
IHNob3VsZCBoYXZlIGEgYmV0dGVyIFVJIGZvciBjb3VudGVycywgYnV0IGZvciBub3cgd2UganVz
dCBsb2cgYW4gdXBkYXRlZCBjb3VudGVyIHZhbHVlLgogCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKGxhYmVsLCAiOiAiLCByZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKLSAgICBhZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RGVidWcs
IG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKKyAg
ICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RGVidWcs
IG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbGFiZWwKICAgICBpZiAoaXQgPT0gbV9jb3VudHMuZW5kKCkpIHsKICAgICAgICAg
Ly8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8K
ICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJDb3VudGVyIFwiIiwgbGFiZWws
ICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6
bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1l
c3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgY3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGU1ZjI0ODJh
M2NhYTA4YWE4MTY0NWZhOGM3OWM1MjliYTQzODBkMGEuLjI1ZjFkM2U3MjgxYzZiMGZiODMzMGZm
MTM3ODczNjQzZWJjNjBlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHN0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0
aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvCiAKIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEZWJ1Z2dlciJfcykKLSAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVu
aXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fc2NyaXB0RGVi
dWdTZXJ2ZXIoY29udGV4dC5lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpKQogICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCBiNTM1ZmY2MTkyYWFjZWZjNzliNGY2Y2Q5M2Rm
MTIwMWEzNzE0OGFjLi41ODJjMzVkMzY3ZGZlMWU0ZjdkYzRlOWE1Njg0ZGNhMmE0ZTNiNGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiBJbnNwZWN0b3JIZWFwQWdlbnQ6Okluc3BlY3RvckhlYXBBZ2VudChBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkhlYXAiX3MpCiAgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SGVhcEZyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPEhlYXBGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihIZWFwQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fZW52
aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2Ny
aXB0UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggNTZmYzFiNzk4ZGEwZWVlZWEwMjMzMWVkNTI1NGE5
NTAyMTAwNTg3NC4uY2JhZDgxZDY5OTQ0MGE3MzNiMGFmMDQxNjk0YTg2Y2E5ZTZlOGVmMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
U2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQ6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQog
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJTY3JpcHRQcm9maWxlciJfcykKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UHJvZmlsZXJGcm9udGVuZERp
c3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIobWFrZVVuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFNjcmlwdFByb2Zp
bGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKSkKICAgICAsIG1fZW52aXJvbm1lbnQoY29udGV4dC5lbnZpcm9ubWVudCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRh
cmdldEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRhcmdldEFnZW50LmNwcAppbmRleCAzYWNhNDEwNTEwZmU1MDBmMDViZmJhYWM0Njdm
ZmRhY2NiMjFjNTI0Li45MzUwNjhjN2FlMTE5NzEwNTQ0YzFmNzY3OTgyMmRmYjY2ZTU2Yjg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JUYXJnZXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBJbnNwZWN0b3JUYXJnZXRBZ2VudDo6SW5zcGVjdG9yVGFyZ2V0QWdl
bnQoRnJvbnRlbmRSb3V0ZXImIGZyb250ZW5kUm91dGVyLCBCYWNrZW5kRGlzcGF0Y2hlciYgYmFj
a2VuZERpc3BhdGNoZXIpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRhcmdldCJfcykKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFyZ2V0RnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlciht
YWtlVW5pcXVlPFRhcmdldEZyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRSb3V0ZXIpKQogICAg
ICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihUYXJnZXRCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJh
Y2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IGUzMjlhM2I0M2NkNjA5NjVkOWY3Nzg1YTQ4MjIwMTFhYjM2
NmZhNTMuLjliM2YzNzlkNWU1YTQ5MGRiZTM3NWM3MmFjOTlmYTcyMGI5YWNjZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCBJ
bmplY3RlZFNjcmlwdCBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0
Rm9yRXZhbChFcnJvclN0cmluZyYgZQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxT
dGFjaygmc3RhdGUpLCAwKSk7CisgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VU
eXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3Rh
Y2soJnN0YXRlKSwgMCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0
UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAppbmRleCAxNDVkMDUxNmI4ZTM5Njg4Nzhk
OTJjYjU5NGFhNTk5YmFmYTM5ZDMyLi4zYjdjM2UyMWQzMWMxYzJmNWI2ZDFiYTBjMTZmNDg4ODNl
NmNmMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudDo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQoSlNBZ2VudENvbnRleHQmIGNvbnRl
eHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1lQWdlbnQoY29udGV4dCkKLSAgICAsIG1fZnJvbnRl
bmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtl
VW5pcXVlPFJ1bnRpbWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihSdW50aW1lQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1fZ2xvYmFsT2Jq
ZWN0KGNvbnRleHQuaW5zcGVjdGVkR2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXggNzEwMTY2OGE5
N2M4NzQ0ODEyZjQ2NTZmMTZlMGI3ZGQ1OTRmMWE2MC4uY2M5NjQwMDU2NzlkYmZjZDRmZTAyOTA2
YmM5M2MyM2IyYzgyZWNjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC0xNDQsMTEgKzE0NCwxMSBAQCBPcHRpb25hbDxD
b25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQo
UGxhdGZvcm1Tb2NrZQogCiAgICAgU29ja2V0OjpzZXR1cChzb2NrZXQpOwogCi0gICAgYXV0byBj
b25uZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+KCk7CisgICAg
YXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxTb2NrZXQ6OkNvbm5lY3Rpb24+KCk7CiAKICAg
ICBjb25uZWN0aW9uLT5wb2xsID0gU29ja2V0OjpwcmVwYXJlUG9sbGluZyhzb2NrZXQpOwogICAg
IGNvbm5lY3Rpb24tPnNvY2tldCA9IHNvY2tldDsKLSAgICBjb25uZWN0aW9uLT5wYXJzZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQYXJzZXI+KGlkLCBTb2NrZXQ6OkJ1ZmZlclNpemUpOwor
ICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IG1ha2VVbmlxdWU8TWVzc2FnZVBhcnNlcj4oaWQsIFNv
Y2tldDo6QnVmZmVyU2l6ZSk7CiAgICAgY29ubmVjdGlvbi0+cGFyc2VyLT5zZXREaWRQYXJzZU1l
c3NhZ2VMaXN0ZW5lcihbdGhpc10oQ29ubmVjdGlvbklEIGlkLCBWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSB7CiAgICAgICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKICAgICAgICAgICAgIG1faW5z
cGVjdG9yQ2xpZW50LT5kaWRSZWNlaXZlV2ViSW5zcGVjdG9yRXZlbnQoaWQsIFdURk1vdmUoZGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
c29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQuaAppbmRleCA3MGYyZDdhNDgxMzQ3MGY4MTM3MzJiM2I5NzdiNWI3M2E0MTk2MGI1Li4zMjA0
MDBmZDViM2NkYjJjNGIxNWRiZGM5MzA0NmJiZmQwMGNhZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludD4gY3JlYXRlKFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQqIGluc3Bl
Y3RvckNsaWVudCwgY29uc3QgY2hhciogbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PihpbnNwZWN0b3JDbGll
bnQsIG5hbWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludD4oaW5zcGVjdG9yQ2xpZW50LCBuYW1lKTsKICAgICB9CiAKICAgICBSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludChSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50Kiwg
Y29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVt
cGxhdGVzLnB5CmluZGV4IDY2ZjlmZDJkYzQ3MGQyMWY0ZGU1N2RlODI4YzE1OTQ0NTY3MTIzYmIu
LmZhNTA2YTYxZTk5YjM5YTg3NDZlMGNlNWJlMGQ2YWJjMGIwYTRlOTQgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKQEAgLTEzOCw4ICsxMzgs
OCBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzOgogICAgIFtfJHt2YXJpYWJsZU5hbWVQ
cmVmaXh9SGFuZGxlciByZWxlYXNlXTsKICAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxl
ciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNo
ZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
ciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7ZG9tYWluTmFt
ZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yJHtkb21h
aW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFn
ZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5hbWV9
QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hl
cj4+KCIke2RvbWFpbk5hbWV9Il9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0
ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1w
bGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNv
bi1yZXN1bHQKaW5kZXggODg0MmM5ZWI2OTc1NmNlNjE0N2VjNGMyZDk3YmY3MmM3ZjM1MjIzYS4u
ZTA3MmZhYjIyMTI5Y2FmNjRhMjJmNjRlZjM0ZTFlMDhhZmE3Mjg1YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9k
ZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRp
b25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC03NzEsOCArNzcxLDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmtIYW5kbGVyIHJlbGVhc2VdOwog
ICAgIF9uZXR3b3JrSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVy
bmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3Ms
ICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5h
cHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRleCBhNzE0ZmIx
MzE4MzI5M2QxODMyZmM1ODFlNmM1MzM3ODY4MDJkNTcyLi5jMGUxNzMzN2ZkNGE3OTg4MzBlODVk
MjllODVkOGVkMzAyMGNhNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5j
LWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0
dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTE4OSw4ICsxMTg5LDggQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsKICAgICBfZGF0YWJh
c2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0
Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29u
dHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlz
cGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0
ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9s
bGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBw
ZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29u
LXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdAppbmRleCA1M2JkNTUzYjdiYTc0ZGRkMjllMjU1MWNjMGI4NGZhNDMw
NzE0Y2FlLi5hZWQwN2I3NWU4Yjg4OGRkNTkzMzkwYWZhMjFkMmM4OTBkZGZjNTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0xMDY4LDggKzEwNjgsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9k
YXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2Nv
bnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVy
LT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFp
bi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKaW5kZXggNjc4YzZhYWE4NWFjYTM4NDI0OGI5OTI5
MDM0Y2NmMDk0MTE4ZGVlNy4uMWFkY2JkM2ZkMmFjYjljYTE0NjFjMzA4ZTQ1YzQ5MmVjM2UwMzI0
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CkBAIC03ODIsOCArNzgyLDgg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkFIYW5kbGVyIHJlbGVh
c2VdOwogICAgIF9kb21haW5BSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRv
IGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEb21h
aW5BQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFp
bkEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWlu
QUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
bWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5BQmFja2VuZERpc3Bh
dGNoZXIsIEFsdGVybmF0ZURvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5BIl9zLCAq
X2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9s
bGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApAQCAt
ODAwLDggKzgwMCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kb21haW5C
SGFuZGxlciByZWxlYXNlXTsKICAgICBfZG9tYWluQkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpD
SW5zcGVjdG9yRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFs
dGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2Vu
dDxEb21haW5CQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlzcGF0
Y2hlcj4+KCJEb21haW5CIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0
Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0lu
c3BlY3RvckRvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWlu
QkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5CQmFja2VuZERpc3BhdGNoZXI+Pigi
RG9tYWluQiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsK
ICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQt
c2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNp
emVzLmpzb24tcmVzdWx0CmluZGV4IGY2YzVlZGNjYjkyODVhZjQ4YzZkZWI5ODQyMmE3MjM2Yjg3
MDJkNGUuLmEzZTI3ZGYzOGNlYWZiYjNjNDUxZTEzYjYxMTllMmU1NGMzZDJhOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3Vs
dApAQCAtMTAzOSw4ICsxMDM5LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBb
X25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazFIYW5kbGVyID0gW2hhbmRs
ZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwot
ICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFr
ZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7
CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKQEAgLTEwNTcsOCArMTA1Nyw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrM0hhbmRsZXIgcmVsZWFzZV07CiAgICAg
X25ldHdvcmszSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrM0JhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmszIl9z
LCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8g
YWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtl
VW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2VuZERpc3BhdGNo
ZXIsIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazMiX3MsICpf
Y29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xs
ZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVz
Lmpzb24tcmVzdWx0CmluZGV4IGVjMGMxMGI0ZGI0NmIzYmMwODM4NmZmYjczY2ZmZjk5MDg2YmYw
NjQuLmFiZmI2ZTE1MzczNmU3ZDQ2YmNkYjBjYmYzNTc5YjNlYmQwOWM1ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpz
b24tcmVzdWx0CkBAIC04MTUsOCArODE1LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICBbX2NvbW1hbmREb21haW5IYW5kbGVyIHJlbGVhc2VdOwogICAgIF9jb21tYW5kRG9tYWlu
SGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERp
c3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPj4oIkNvbW1h
bmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9y
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVy
bmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNvbW1hbmREb21haW5CYWNrZW5kRGlz
cGF0Y2hlcj4+KCJDb21tYW5kRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1v
dmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9t
YWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9t
YWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDMwZTgyYzVhMTc2NjI4
Y2ViYmRiYjBmYzQxMGVlOTZjOGE0OGRjNDkuLjZiZGVmZjE4Nzk3YzE2OTVhODFmYjE1NjQwNmRl
MzljOWY4ODE3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0
dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgt
ZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTc5OCw4ICs3OTgsOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazFIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9u
ZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywg
Kl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFs
dGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
LCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2Nv
bnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVy
LT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9l
eHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVm
aW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggODg0MmM5ZWI2OTc1
NmNlNjE0N2VjNGMyZDk3YmY3MmM3ZjM1MjIzYS4uZTA3MmZhYjIyMTI5Y2FmNjRhMjJmNjRlZjM0
ZTFlMDhhZmE3Mjg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CkBAIC03NzEsOCArNzcxLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAg
ICBbX25ldHdvcmtIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrSGFuZGxlciA9IFtoYW5k
bGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwot
ICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0Jh
Y2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVu
aXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudDxOZXR3b3JrQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcj4+KCJOZXR3b3JrIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0
ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDgzNDJl
NWZjNWVmY2EyODQ5ZGZkMTJkYjdhYTRhYjQ5ODJiNjFmZTguLmVmOTA2Njk0MzBiYjEyNmU2ODli
YmM3YmZmYTliYjBmNTQ0NzMzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTY1
NCw3ICs2NTQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpbGF0
aW9uRWZmb3J0IGVmZm9ydCkKICAgICB9CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cERpc2Fzc2VtYmx5KCkgfHwgKG1fdm0tPm1fcGVyQnl0ZWNvZGVQcm9maWxlciAmJiBPcHRpb25z
OjpkaXNhc3NlbWJsZUJhc2VsaW5lRm9yUHJvZmlsZXIoKSkpKQotICAgICAgICBtX2Rpc2Fzc2Vt
YmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SklURGlzYXNzZW1ibGVyPihtX2NvZGVCbG9jayk7Cisg
ICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29k
ZUJsb2NrKTsKICAgICBpZiAoVU5MSUtFTFkobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKSkg
ewogICAgICAgICBtX2NvbXBpbGF0aW9uID0gYWRvcHRSZWYoCiAgICAgICAgICAgICBuZXcgUHJv
ZmlsZXI6OkNvbXBpbGF0aW9uKApAQCAtOTAxLDcgKzkwMSw3IEBAIENvbXBpbGF0aW9uUmVzdWx0
IEpJVDo6bGluaygpCiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVy
LmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmln
aW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9D
b2RlT3JpZ2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKSk7CisgICAgICAgIG1fY29kZUJsb2Nr
LT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZN
b3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsKICAgICAKICAg
ICBDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJlc3VsdCA9IEZJTkFMSVpFX0NPREUoCiAgICAgICAg
IHBhdGNoQnVmZmVyLCBKU0VudHJ5UHRyVGFnLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRU
aHVua3MuY3BwCmluZGV4IDE2YmY3MGQ4MDE3NDQyMzA1MDJhMmQ4YjE5N2NkNDAxYzgwMjRmMzgu
LjViZGY4MzA0NjUwNDM5OTRlMTFiYWZmZWQ1MmJiNzg1YzFiYTBhNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBKSVRUaHVua3M6OkpJVFRodW5rcygpCi0gICAgOiBtX2hvc3RGdW5jdGlvblN0dWJN
YXAoc3RkOjptYWtlX3VuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQorICAgIDogbV9ob3N0
RnVuY3Rpb25TdHViTWFwKG1ha2VVbmlxdWU8SG9zdEZ1bmN0aW9uU3R1Yk1hcD4oKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZTM4OGZiMGU2MjcwOGIz
NGVjYjk3MWU5NDZiNDZiMTkzYzRjYWUzYi4uOGY5YTg2NGU0ZmU4NjI2YTFmZWZjMGMzMDdjOWU0
NjU2NjJmNWE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC0xMDky
LDcgKzEwOTIsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgc3RkOjp1bmlxdWVf
cHRyPENhbGxGcmFtZVNodWZmbGVyPiBmcmFtZVNodWZmbGVyOwogICAgIGlmIChjYWxsTGlua0lu
Zm8uZnJhbWVTaHVmZmxlRGF0YSgpKSB7CiAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm8uaXNU
YWlsQ2FsbCgpKTsKLSAgICAgICAgZnJhbWVTaHVmZmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bEZyYW1lU2h1ZmZsZXI+KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgp
KTsKKyAgICAgICAgZnJhbWVTaHVmZmxlciA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZXI+
KHN0dWJKaXQsICpjYWxsTGlua0luZm8uZnJhbWVTaHVmZmxlRGF0YSgpKTsKICNpZiBVU0UoSlNW
QUxVRTMyXzY0KQogICAgICAgICAvLyBXZSB3b3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0
IHRoZSBjYWxsZWUgaXMgYSBjZWxsLCBhbmQgd2UgY2FuCiAgICAgICAgIC8vIHVzZSB0aGUgYWRk
aXRpb25hbCByZWdpc3RlciB0aGlzIGJ1eXMgdXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGM2
ODE3ZTA0NWY1NjdlOWVkM2EwZTU5NTdkMjVlNjM3OTg1NjVmYWUuLjVhYjAwZWY3ZmU1OTMxZjc0
NjI0ZmU3YzFmMWIwYWM0NjcxYzAyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yOTY5LDcg
KzI5NjksNyBAQCBpbnQgcnVuSlNDKGNvbnN0IENvbW1hbmRMaW5lJiBvcHRpb25zLCBib29sIGlz
V29ya2VyLCBjb25zdCBGdW5jJiBmdW5jKQogICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKIAogICAgICAgICBpZiAob3B0aW9ucy5tX3Byb2ZpbGUgJiYgIXZtLm1fcGVyQnl0ZWNvZGVQ
cm9maWxlcikKLSAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CisgICAgICAgICAgICB2bS5tX3BlckJ5
dGVjb2RlUHJvZmlsZXIgPSBtYWtlVW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4odm0pOwogCiAg
ICAgICAgIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBvcHRpb25zLm1fYXJndW1lbnRzKTsK
ICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKG9wdGlvbnMu
bV9lbmFibGVSZW1vdGVEZWJ1Z2dpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDczZDlhYWY5ZTIzZjNjYzRlNDIzMmM0YzVlOWY5ZmEwODc3YWU4NGUuLmU5
ZDJjZWZmNjVjYzg1MTFkNzU3YjA1MzE5N2M0ODNhYjk4ZGY0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBQYXJzZXI8TGV4ZXJU
eXBlPjo6UGFyc2VyKFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlCiAgICAgLCBtX2ltbWVkaWF0ZVBhcmVudEFsbG93c0Z1bmN0aW9uRGVjbGFyYXRp
b25JblN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fZGVidWdnZXJQYXJzZURhdGEoZGVidWdnZXJQ
YXJzZURhdGEpCiB7Ci0gICAgbV9sZXhlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGV4ZXJUeXBlPih2
bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOworICAgIG1fbGV4ZXIgPSBtYWtlVW5pcXVlPExl
eGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlLCBzY3JpcHRNb2RlKTsKICAgICBtX2xleGVyLT5zZXRD
b2RlKHNvdXJjZSwgJm1fcGFyc2VyQXJlbmEpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5l
ID0gc291cmNlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCk7CiAgICAgbV90b2tlbi5tX2xvY2F0
aW9uLnN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCA2OWFhMGJjMTkwYWY2NzgzZDg5MjhjMzU5YWEzYjEwYmIx
ZmJkODczLi4wYTVlZGU0Yjg0MjVjZmQxYjMxN2M3NmM1MWVhNzM3ODE3ODBiNTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1Y3Qg
U2NvcGUgewogICAgIHZvaWQgcHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXIqIGxhYmVsLCBib29s
IGlzTG9vcCkKICAgICB7CiAgICAgICAgIGlmICghbV9sYWJlbHMpCi0gICAgICAgICAgICBtX2xh
YmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8TGFiZWxTdGFjaz4oKTsKKyAgICAgICAgICAgIG1fbGFi
ZWxzID0gbWFrZVVuaXF1ZTxMYWJlbFN0YWNrPigpOwogICAgICAgICBtX2xhYmVscy0+YXBwZW5k
KFNjb3BlTGFiZWxJbmZvIHsgbGFiZWwtPmltcGwoKSwgaXNMb29wIH0pOwogICAgIH0KIApAQCAt
MTk0MSw3ICsxOTQxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICAgICAgZW5kTG9j
YXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgp
OwogICAgICAgICBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA9IG1fbGV4ZXItPmN1cnJlbnRPZmZz
ZXQoKTsKICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gZW5kTG9jYXRpb24uc3RhcnRPZmZz
ZXQgLSBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQ7Ci0gICAgICAgIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGFyc2VkTm9kZT4obV9wYXJzZXJBcmVuYSwKKyAgICAgICAgcmVzdWx0ID0g
bWFrZVVuaXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuZExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnRDb2x1bW4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFy
ZW5hLmgKaW5kZXggZGYxN2JlNTM2NjNlN2NiN2I3MGM0ODc3MGY5YTA1MjljZjMzYTdlZS4uNDEw
MDA2ZDkyNzUxY2U5NmI5MmNiOTYyNTYzNWVhN2NmNzhlYzRkOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAtMTgwLDcgKzE4MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyQXJlbmEmIGlkZW50aWZpZXJBcmVuYSgpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSAoIW1faWRlbnRpZmllckFyZW5hKSkKLSAg
ICAgICAgICAgICAgICBtX2lkZW50aWZpZXJBcmVuYSA9IHN0ZDo6bWFrZV91bmlxdWU8SWRlbnRp
ZmllckFyZW5hPigpOworICAgICAgICAgICAgICAgIG1faWRlbnRpZmllckFyZW5hID0gbWFrZVVu
aXF1ZTxJZGVudGlmaWVyQXJlbmE+KCk7CiAgICAgICAgICAgICByZXR1cm4gKm1faWRlbnRpZmll
ckFyZW5hOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAppbmRleCAwNTAzMmI1ZDEzMTA4YzBlYjYy
MGU5ZGFlODIwY2VmN2FjNzUzMThjLi4zNTcxMWI1ZmE2NDI2OWU2Nzc0YWI3MGUyMWRkNTAyNTE2
OWM4ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJDb21waWxhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyQ29tcGlsYXRpb24uY3BwCkBAIC03OSw3ICs3OSw3IEBAIEV4ZWN1dGlvbkNvdW50ZXIq
IENvbXBpbGF0aW9uOjpleGVjdXRpb25Db3VudGVyRm9yKGNvbnN0IE9yaWdpblN0YWNrJiBvcmln
aW4pCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4ZWN1dGlvbkNvdW50ZXI+JiBjb3VudGVyID0g
bV9jb3VudGVycy5hZGQob3JpZ2luLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYg
KCFjb3VudGVyKQotICAgICAgICBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFeGVjdXRpb25D
b3VudGVyPigpOworICAgICAgICBjb3VudGVyID0gbWFrZVVuaXF1ZTxFeGVjdXRpb25Db3VudGVy
PigpOwogCiAgICAgcmV0dXJuIGNvdW50ZXIuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKaW5kZXggNzBjNzE0NzMzMjQ0NDA4MDc4NzkzNDAxOTg2NjczYzk3
ZTFlYTgzZC4uYTY0ZGUzZmRkNjYyNTUxOGFjNWQxMjZjZWFjNzhiNmYyMTI1YTRmZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IGdldFN0YWNrVHJhY2UoRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIEpTT2JqCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgc2l6
ZV90IGZyYW1lc1RvU2tpcCA9IHVzZUN1cnJlbnRGcmFtZSA/IDAgOiAxOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNr
RnJhbWU+PiBzdGFja1RyYWNlID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RhY2tGcmFtZT4+KCk7CiAg
ICAgdm0uaW50ZXJwcmV0ZXItPmdldFN0YWNrVHJhY2Uob2JqLCAqc3RhY2tUcmFjZSwgZnJhbWVz
VG9Ta2lwLCBnbG9iYWxPYmplY3QtPnN0YWNrVHJhY2VMaW1pdCgpLnZhbHVlKCkpOwogICAgIGlm
ICghc3RhY2tUcmFjZS0+aXNFbXB0eSgpKQogICAgICAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4
ZWMgPT0gdm0udG9wQ2FsbEZyYW1lIHx8IGV4ZWMtPmlzR2xvYmFsRXhlYygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDQzOWUyMDliMGE1ZjhmYjgyOWI3OTE5NzU3NDg4YzQxNTYzNDI3M2YuLmVmMmU4MzA4NzQx
Yjg4NTJlNTYyMzI2Zjk2MjU3YzlkMDI5MzVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTEwLDcgKzExMCw3
IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29k
ZSgKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5z
dXJlUmFyZURhdGFTbG93KCkKIHsKICAgICBBU1NFUlQoIW1fcmFyZURhdGEpOwotICAgIGF1dG8g
cmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgIGF1dG8gcmFyZURh
dGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgIHJhcmVEYXRhLT5tX2xpbmVDb3VudCA9
IGxpbmVDb3VudCgpOwogICAgIHJhcmVEYXRhLT5tX2VuZENvbHVtbiA9IGVuZENvbHVtbigpOwog
ICAgIHJhcmVEYXRhLT5tX3BhcmFtZXRlcnNTdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydE9m
ZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5oCmluZGV4IDQ2MjM2NDFjNTk4ZTNlYmI1ZmJhNmJjMDIzNzI2NGU1MDUyZmQxNzkuLjUy
YjI4YjEzYzdlMmUyNWQyMWJiYmFiM2FkMzFkNWI2YmMwY2RlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKQEAgLTE1Niw3ICsxNTYs
NyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhOjpBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0
Y2hwb2ludCBmaW5hbCA6IHB1YmxpYyBXYXRjaAogaW5saW5lIFdhdGNocG9pbnQqIEZ1bmN0aW9u
UmFyZURhdGE6OmNyZWF0ZUFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50KCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghaGFzQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9p
bnQoKSk7Ci0gICAgbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+KHRoaXMpOwor
ICAgIG1fYWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQgPSBtYWtlVW5pcXVlPEFs
bG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50Pih0aGlzKTsKICAgICByZXR1cm4gbV9h
bGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDFhNTdl
ZjNkY2ZlOTE5ZTcwYjM3ZmE3ZTM0ODU0YTEzZTkwNTNmYWUuLmNjODc3NjdmMTA4YmNjNDgzYjMx
NWYxMTJmYTljNTM0N2Y1MjAxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ3Nyw4ICs0NzcsOCBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX2RlYnVnZ2VyID0gMDsKIAogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlz
KTsKLSAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZT4oKnRoaXMpOworICAgIG1faW5zcGVjdG9yQ29udHJvbGxlciA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI+KCp0
aGlzKTsKKyAgICBtX2luc3BlY3RvckRlYnVnZ2FibGUgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZT4oKnRoaXMpOwogICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZS0+aW5pdCgp
OwogICAgIG1fY29uc29sZUNsaWVudCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y29uc29sZUNs
aWVudCgpOwogI2VuZGlmCkBAIC0xMTQ1LDU3ICsxMTQ1LDU3IEBAIGNhcGl0YWxOYW1lICMjIENv
bnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0
YWxOYW1lCiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlv
biA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KGFycmF5SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5l
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRv
clByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5l
eHQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQtPmlu
c3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5UHJvdG90eXBl
KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX2FycmF5
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
dGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAg
ICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQp
OwogICAgICAgICBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0
YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1hcEl0ZXJhdG9yUHJvdG90eXBl
LCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90
eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21hcEl0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fbWFwSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX21hcEl0ZXJhdG9y
UHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KICAgICB7CiAgICAg
ICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRj
aHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sKTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwSXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHNldEl0
ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICBtX3Nl
dEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAg
ICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAg
ICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAg
IH0KICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNl
dHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVy
YXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1f
c2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFByb3RvdHlwZVN5
bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwg
bV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0UHJvdG90eXBl
U3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAg
ICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVX
YXRjaHBvaW50KG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlO
YW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJp
bmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wpOwotICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0
cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsK
ICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2
ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+c2V0
KTsKLSAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOworICAgICAgICBtX21h
cFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdl
QWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24s
IG1fbWFwU2V0V2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2lu
dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlw
ZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwotICAgICAgICBtX3NldFByb3RvdHlw
ZUFkZFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1f
c2V0QWRkV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9
IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsKICAg
ICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAK
QEAgLTEyMDYsNyArMTIwNiw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5h
bWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgIHRo
aXMtPnN5bWJvbFByb3RvdHlwZSgpOwogCiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
IGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3RvdHlwZSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZyk7Ci0gICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9T
dHJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBt
X251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9T
dHJpbmdXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX251bWJl
clRvU3RyaW5nV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgbV9udW1iZXJQcm90b1RvU3RyaW5nRnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclByb3RvdHlwZS0+
Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZykpKTsKICAgICB9CkBAIC0x
OTMyLDEwICsxOTMyLDEwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNw
ZWNpZXNXYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBSRUxFQVNFX0FTU0VSVCghbV9h
cnJheVNwZWNpZXNXYXRjaHBvaW50LmlzQmVpbmdXYXRjaGVkKCkpOwogICAgIG1fYXJyYXlTcGVj
aWVzV2F0Y2hwb2ludC50b3VjaCh2bSwgIlNldCB1cCBhcnJheSBzcGVjaWVzIHdhdGNocG9pbnQu
Iik7CiAKLSAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVz
V2F0Y2hwb2ludCk7CisgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9
IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5U3BlY2ll
c1dhdGNocG9pbnQpOwogICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQt
Pmluc3RhbGwodm0pOwogCi0gICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3Bl
Y2llc1dhdGNocG9pbnQpOworICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNX
YXRjaHBvaW50KTsKICAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5z
dGFsbCh2bSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDA0N2MxNjY1M2U3MWIxYTgwNmJkOWZjN2Q1NjY0M2E1Zjk4OGYxMWUu
Ljg0NTM1Y2E1YzYwMGNlY2JkOGI0NzhmNjViNTNjZDA3ZTM2YTgzOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTIxLDcgKzUyMSw3
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIHsKICAgICAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UmFy
ZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0
UmFyZURhdGE+KCk7CiAgICAgfQogICAgICAgICAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCAxYWYwMDM2NTNjYjhj
M2RlNjQzZjhjNDkxMjdhYmIzZTU1MTNkNWFkLi4zMjdmZWQwNmM2N2E1YmYxMTI1MWY5ZjRkZWQ4
MzllNzAzM2M4YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNS
dW5Mb29wVGltZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1h
bmFnZXI6OlBlclZNRGF0YTo6c2V0UnVuTG9vcChNYW5hZ2VyKiBtYW5hZ2VyLCBDRlJ1bkxvb3BS
CiAjZWxzZQogSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVyVk1EYXRhKE1h
bmFnZXImIG1hbmFnZXIpCiAgICAgOiBydW5Mb29wKCZSdW5Mb29wOjpjdXJyZW50KCkpCi0gICAg
LCB0aW1lcihzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PigqcnVuTG9v
cCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJh
Y2spKQorICAgICwgdGltZXIobWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNYW5hZ2VyPj4oKnJ1
bkxvb3AsICZtYW5hZ2VyLCAmSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVyRGlkRmlyZUNh
bGxiYWNrKSkKIHsKICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIHRpbWVyLT5zZXRQcmlv
cml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkphdmFzY3JpcHRUaW1lcik7CkBAIC0xNzIsNyAr
MTcyLDcgQEAgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXImIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2Vy
OjpzaGFyZWQoKQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjpyZWdpc3RlclZNKFZN
JiB2bSkKIHsKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlclZNRGF0YT4oKnRo
aXMpOworICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8UGVyVk1EYXRhPigqdGhpcyk7CiAjaWYg
VVNFKENGKQogICAgIGRhdGEtPnNldFJ1bkxvb3AodGhpcywgdm0ucnVuTG9vcCgpKTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBI
YXNoVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFz
aFRhYmxlLmgKaW5kZXggNWYwNzhkMmE1MDlkMmI0NDIwMGY3YTRhZjM4ODEyNDZjYjJkNThhNy4u
NTI5MDIwZGYwZjFkYzJhMjg2ZjgwMGFiYWQ5ZDdlYjdkM2Y4ZWU5NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCkBAIC00
NDgsNyArNDQ4LDcgQEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFByb3BlcnR5VGFibGU6OmdldERl
bGV0ZWRPZmZzZXQoKQogaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNl
dChQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFtX2RlbGV0ZWRPZmZzZXRzKQot
ICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVy
dHlPZmZzZXQ+PigpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFrZVVuaXF1ZTxWZWN0
b3I8UHJvcGVydHlPZmZzZXQ+PigpOwogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZz
ZXQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFi
bGUuY3BwCmluZGV4IDU5ZWM0MWM0OWFlODJmNDdmNjk4NjgwNmRkNjE0Mzk0NGE0MmI1ZDYuLmIx
YmI2NzkxOTkyNjVhZmNiY2NjODM2NTZkOGQ1NmZjNWI0YTM1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCBjb25zdCBQcm9wZXJ0eVRhYmxl
JiBvdGhlcikKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KICAgICBW
ZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxl
dGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAg
bV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0
Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CiB9
CiAKIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25lZCBpbml0aWFs
Q2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQpAQCAtMTA3LDcgKzEwNyw3IEBA
IFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoVk0mIHZtLCB1bnNpZ25lZCBpbml0aWFsQ2Fw
YWNpdHksIGNvbnN0IFByb3BlcnR5VGFiCiAgICAgLy8gQ29weSB0aGUgbV9kZWxldGVkT2Zmc2V0
cyB2ZWN0b3IuCiAgICAgVmVjdG9yPFByb3BlcnR5T2Zmc2V0Piogb3RoZXJEZWxldGVkT2Zmc2V0
cyA9IG90aGVyLm1fZGVsZXRlZE9mZnNldHMuZ2V0KCk7CiAgICAgaWYgKG90aGVyRGVsZXRlZE9m
ZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKKyAgICAgICAgbV9kZWxl
dGVkT2Zmc2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90aGVyRGVs
ZXRlZE9mZnNldHMpOwogfQogCiB2b2lkIFByb3BlcnR5VGFibGU6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggMDcxYjFm
NjYzMTVjZTNhZThkY2ZlMTc1ZmY2MzY2ZjVjNjMyYWZmYy4uNzBlNTkzZDUzZWJkZDgxZDhjMDgx
M2EyOTc3MGU5NDBjZTA0MTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZWdFeHA6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKIAogICAgIG1fbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3VicGF0dGVybnM7
CiAgICAgaWYgKCFwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMuaXNFbXB0eSgpIHx8ICFwYXR0
ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9yYXJl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURhdGEg
PSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICBtX3JhcmVEYXRhLT5tX2NhcHR1cmVH
cm91cE5hbWVzLnN3YXAocGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzKTsKICAgICAgICAgbV9y
YXJlRGF0YS0+bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LnN3YXAocGF0dGVybi5tX25hbWVkR3Jv
dXBUb1BhcmVuSW5kZXgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmgKaW5kZXggMzljZGQ5MTE2ZTAyN2UzZGI2MDQwZGJkOGZlNTI3MGQyZTk5NWQ4ZC4uZThkYTg1
MjZlN2M3ZTgxZmJlYTc1Yzg4OTg4MTYxYjlhZjg5MTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBjbGFzcyBSZWdFeHAgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBlbnN1cmVSZWdFeHBK
SVRDb2RlKCkKICAgICB7CiAgICAgICAgIGlmICghbV9yZWdFeHBKSVRDb2RlKQotICAgICAgICAg
ICAgbV9yZWdFeHBKSVRDb2RlID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyOjpZYXJyQ29kZUJsb2Nr
PigpOworICAgICAgICAgICAgbV9yZWdFeHBKSVRDb2RlID0gbWFrZVVuaXF1ZTxZYXJyOjpZYXJy
Q29kZUJsb2NrPigpOwogICAgICAgICByZXR1cm4gKm1fcmVnRXhwSklUQ29kZS5nZXQoKTsKICAg
ICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
cmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5jcHAKaW5kZXggMjM3ZDdkZTY4OGRkMjA3NjUwMjAxMjE2Y2QwZDU0NjgwYzQ5
NmVhYS4uZWU2ZTE4Y2VmZGJlNzlmNGJjMmViMjE5N2ZmNTM5MTA0ZTFmNzk5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKQEAg
LTQ2OSw3ICs0NjksNyBAQCBhdXRvIFNjcmlwdEV4ZWN1dGFibGU6OmVuc3VyZVRlbXBsYXRlT2Jq
ZWN0TWFwSW1wbChzdGQ6OnVuaXF1ZV9wdHI8VGVtcGxhdGVPYmplYwogewogICAgIGlmIChkZXN0
KQogICAgICAgICByZXR1cm4gKmRlc3Q7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRlbXBsYXRlT2JqZWN0TWFwPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxU
ZW1wbGF0ZU9iamVjdE1hcD4oKTsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIGRl
c3QgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuICpkZXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMjkzYzQ2NDcyZTc0ODk0MWNhOWNj
MmFkYWMxNmEzZDJkYzVkZWVlYy4uMDFjZDJiZDU0N2ZlMDJiNTA0N2E2ZDQ1YjNjOGFkNmZkNTJi
ZGI0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBA
IC04NTYsNyArODU2LDcgQEAgV2F0Y2hwb2ludFNldCogU3RydWN0dXJlOjplbnN1cmVQcm9wZXJ0
eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChWTSYgdm0sIFByb3BlcnQKICAgICBTdHJ1Y3R1cmVS
YXJlRGF0YSogcmFyZURhdGEgPSB0aGlzLT5yYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEt
Pm1fcmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0cykgewogICAgICAgICByYXJlRGF0YS0+bV9yZXBs
YWNlbWVudFdhdGNocG9pbnRTZXRzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8U3Ry
dWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1hcD4oKTsKKyAgICAgICAgICAgIG1h
a2VVbmlxdWU8U3RydWN0dXJlUmFyZURhdGE6OlByb3BlcnR5V2F0Y2hwb2ludE1hcD4oKTsKICAg
ICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICB9CiAgICAgYXV0byByZXN1bHQgPSBy
YXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzLT5hZGQob2Zmc2V0LCBudWxscHRy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVE
YXRhLmNwcAppbmRleCA5OWE4ZDlmN2RhYWMyMTdlNGM4MWU3ZTcxMjZlOWMwMmIzNzRlZDNmLi5k
M2NmMTgzYjBmNmQ3YzQ4OTg4MDBhYjY4ZWU0OGNkMTI4ZjdmZTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCkBAIC0xNDAs
NyArMTQwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6c2V0T2JqZWN0VG9TdHJpbmdWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgU3RydWN0dXIKICAgICBBU1NFUlQoY29uZGl0aW9u
U2V0LnN0cnVjdHVyZXNFbnN1cmVWYWxpZGl0eSgpKTsKICAgICBmb3IgKE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA6IGNvbmRpdGlvblNldCkgewogICAgICAgICBpZiAoY29uZGl0
aW9uLmNvbmRpdGlvbigpLmtpbmQoKSA9PSBQcm9wZXJ0eUNvbmRpdGlvbjo6UHJlc2VuY2UpIHsK
LSAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludD4oZXF1aXZDb25kaXRpb24sIHRoaXMpOworICAgICAgICAgICAg
bV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQgPSBtYWtlVW5p
cXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CiAgICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRh
cHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlV2F0Y2hwb2ludFNldC5hZGQo
Y29uZGl0aW9uLCB0aGlzKS0+aW5zdGFsbCh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggMzkyZjIxN2MxNGVmYWViNTQ1YmYwZDRmNzc5
MGMxMTI3OTMyYmM4NS4uYTRhODcwZmMxZmNhZDM1YzQzOTVmMTA5YjIyYTk5YzQyMGQ3NDEwMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAt
MTE4LDcgKzExOCw3IEBAIGNvbnN0IFN5bWJvbFRhYmxlOjpMb2NhbFRvRW50cnlWZWMmIFN5bWJv
bFRhYmxlOjpsb2NhbFRvRW50cnkoY29uc3QgQ29uY3VycmVudEpTCiAgICAgICAgICAgICAgICAg
c2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG9mZnNldC5zY29wZU9mZnNldCgpLm9mZnNldCgpICsgMSk7
CiAgICAgICAgIH0KICAgICAKLSAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CisgICAgICAgIG1fbG9jYWxUb0Vu
dHJ5ID0gbWFrZVVuaXF1ZTxMb2NhbFRvRW50cnlWZWM+KHNpemUsIG51bGxwdHIpOwogICAgICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogbV9tYXApIHsKICAgICAgICAgICAgIFZhck9mZnNldCBvZmZz
ZXQgPSBlbnRyeS52YWx1ZS52YXJPZmZzZXQoKTsKICAgICAgICAgICAgIGlmIChvZmZzZXQuaXNT
Y29wZSgpKQpAQCAtMTU5LDcgKzE1OSw3IEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xv
bmVTY29wZVBhcnQoVk0mIHZtKQogICAgICAgICByZXN1bHQtPm1fYXJndW1lbnRzLnNldCh2bSwg
cmVzdWx0LCBhcmd1bWVudHMpOwogICAgIAogICAgIGlmIChtX3JhcmVEYXRhKSB7Ci0gICAgICAg
IHJlc3VsdC0+bV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0
YT4oKTsKKyAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJs
ZVJhcmVEYXRhPigpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fcmFy
ZURhdGEtPm1fdW5pcXVlSURNYXAuYmVnaW4oKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFN5
bWJvbFRhYmxlOjpwcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImKQogICAgIGlmIChtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JhcmVE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAgIG1fcmFy
ZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICBmb3IgKGF1
dG8gaXRlciA9IG1fbWFwLmJlZ2luKCksIGVuZCA9IG1fbWFwLmVuZCgpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fdW5pcXVlSURNYXAuc2V0KGl0ZXItPmtl
eSwgVHlwZVByb2ZpbGVyTmVlZHNVbmlxdWVJREdlbmVyYXRpb24pOwpAQCAtMjEwLDcgKzIxMCw3
IEBAIENvZGVCbG9jayogU3ltYm9sVGFibGU6OnJhcmVEYXRhQ29kZUJsb2NrKCkKIHZvaWQgU3lt
Ym9sVGFibGU6OnNldFJhcmVEYXRhQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrKQogewog
ICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlx
dWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIEFTU0VSVCghbV9yYXJlRGF0YS0+bV9j
b2RlQmxvY2spOwogICAgIG1fcmFyZURhdGEtPm1fY29kZUJsb2NrLnNldCgqY29kZUJsb2NrLT52
bSgpLCB0aGlzLCBjb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVHlwZVNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
U2V0LmNwcAppbmRleCA0MTBlYjZkNWFlMTZmMzYwMjI2ZGIzODIzZjdlZTgyOGVjY2FiMzgzLi40
MWFjYTlkM2Q0ZDliOGE1NmFlNjg1MjMwZThkNjY3NTJhYzBkMDI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIFN0cmluZyBT
dHJ1Y3R1cmVTaGFwZTo6cHJvcGVydHlIYXNoKCkKICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9w
cm90by0+cHJvcGVydHlIYXNoKCkpOwogICAgIH0KIAotICAgIG1fcHJvcGVydHlIYXNoID0gc3Rk
OjptYWtlX3VuaXF1ZTxTdHJpbmc+KGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgbV9wcm9wZXJ0
eUhhc2ggPSBtYWtlVW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsKICAgICByZXR1
cm4gKm1fcHJvcGVydHlIYXNoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
aW5kZXggNGUyZDBkMzI0YTI0ZTIzMmNkMTk1Mzg5MmVkOGIwYTMzYjBiMDVlZS4uYjcwOTJjMDhl
ZjcyYjBlY2E4OWZmMGI1YzRiZTFhZTU5YWExZGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcApAQCAtMjUyLDE4ICsyNTIsMTggQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9ydW5Mb29wKENGUnVuTG9vcEdldEN1cnJlbnQoKSkK
ICNlbmRpZiAvLyBVU0UoQ0YpCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBUeXBlKQotICAgICwgZmFz
dE1hbGxvY0FsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yPigpKQotICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtl
X3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRp
dmUpKQotICAgICwganNWYWx1ZUdpZ2FjYWdlQWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8R2ln
YWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2FnZTo6SlNWYWx1ZSkpCi0gICAgLCBh
dXhpbGlhcnlIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxB
dHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpBdXhpbGlhcnkpKSkK
LSAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhl
YXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENl
bGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCi0gICAgLCBjZWxsSGVhcENlbGxUeXBl
KHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVl
ZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBkZXN0cnVjdGlibGVDZWxs
SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRl
cyhOZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCi0gICAgLCBzdHJpbmdIZWFw
Q2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4oKSkKLSAgICAs
IGRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlPigpKQorICAgICwgZmFzdE1hbGxvY0FsbG9jYXRvciht
YWtlVW5pcXVlPEZhc3RNYWxsb2NBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgcHJp
bWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3I+KEdpZ2FjYWdlOjpQcmltaXRpdmUpKQorICAgICwganNWYWx1ZUdpZ2FjYWdlQWxs
b2NhdG9yKG1ha2VVbmlxdWU8R2lnYWNhZ2VBbGlnbmVkTWVtb3J5QWxsb2NhdG9yPihHaWdhY2Fn
ZTo6SlNWYWx1ZSkpCisgICAgLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFw
Q2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxs
OjpBdXhpbGlhcnkpKSkKKyAgICAsIGltbXV0YWJsZUJ1dHRlcmZseUhlYXBDZWxsVHlwZShtYWtl
VW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlv
biwgSGVhcENlbGw6OkpTQ2VsbFdpdGhJbnRlcmlvclBvaW50ZXJzKSkpCisgICAgLCBjZWxsSGVh
cENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90
TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBkZXN0cnVjdGlibGVD
ZWxsSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhO
ZWVkc0Rlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsKSkpCisgICAgLCBzdHJpbmdIZWFwQ2Vs
bFR5cGUobWFrZVVuaXF1ZTxKU1N0cmluZ0hlYXBDZWxsVHlwZT4oKSkKKyAgICAsIGRlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlPigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAsIHdlYkFzc2VtYmx5
Q29kZUJsb2NrSGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNXZWJBc3NlbWJseUNvZGVC
bG9ja0hlYXBDZWxsVHlwZT4oKSkKLSAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5
cGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlPigpKQor
ICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlPigpKQorICAgICwgd2ViQXNzZW1ibHlGdW5jdGlv
bkhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU+
KCkpCiAjZW5kaWYKICAgICAsIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIlByaW1p
dGl2ZSBHaWdhY2FnZSBBdXhpbGlhcnkiLCBoZWFwLCBhdXhpbGlhcnlIZWFwQ2VsbFR5cGUuZ2V0
KCksIHByaW1pdGl2ZUdpZ2FjYWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4M2U3Y2Q3NjIK
ICAgICAsIGpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCJKU1ZhbHVlIEdpZ2FjYWdlIEF1
eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwganNWYWx1ZUdpZ2Fj
YWdlQWxsb2NhdG9yLmdldCgpKSAvLyBIYXNoOjB4MjQxZTk0NgpAQCAtMjk2LDcgKzI5Niw3IEBA
IFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fYXRvbVN0
cmluZ1RhYmxlKHZtVHlwZSA9PSBEZWZhdWx0ID8gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmlu
Z1RhYmxlKCkgOiBuZXcgQXRvbVN0cmluZ1RhYmxlKQogICAgICwgcHJvcGVydHlOYW1lcyhudWxs
cHRyKQogICAgICwgZW1wdHlMaXN0KG5ldyBBcmdMaXN0KQotICAgICwgbWFjaGluZUNvZGVCeXRl
c1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklUKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlU3Rh
dHM+KCkpCisgICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVK
SVQobWFrZVVuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKICAgICAsIGN1c3RvbUdldHRlclNldHRlckZ1
bmN0aW9uTWFwKCp0aGlzKQogICAgICwgc3RyaW5nQ2FjaGUoKnRoaXMpCiAgICAgLCBzeW1ib2xJ
bXBsVG9TeW1ib2xNYXAoKnRoaXMpCkBAIC0zMTIsOCArMzEyLDggQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pbml0aWFsaXppbmdPYmplY3RDbGFz
cygwKQogI2VuZGlmCiAgICAgLCBtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeSgwKQotICAgICwgbV9j
b2RlQ2FjaGUoc3RkOjptYWtlX3VuaXF1ZTxDb2RlQ2FjaGU+KCkpCi0gICAgLCBtX2J1aWx0aW5F
eGVjdXRhYmxlcyhzdGQ6Om1ha2VfdW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRoaXMpKQor
ICAgICwgbV9jb2RlQ2FjaGUobWFrZVVuaXF1ZTxDb2RlQ2FjaGU+KCkpCisgICAgLCBtX2J1aWx0
aW5FeGVjdXRhYmxlcyhtYWtlVW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRoaXMpKQogICAg
ICwgbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQoMCkKICAgICAsIG1fcHJpbWl0aXZlR2lnYWNh
Z2VFbmFibGVkKElzV2F0Y2hlZCkKICAgICAsIG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRD
b3VudCgwKQpAQCAtNDA3LDcgKzQwNyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICBMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoKnRoaXMpOwog
ICAgIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VQcm9maWxlcigpKSkgewotICAgICAg
ICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRh
YmFzZT4oKnRoaXMpOworICAgICAgICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBtYWtlVW5pcXVl
PFByb2ZpbGVyOjpEYXRhYmFzZT4oKnRoaXMpOwogCiAgICAgICAgIFN0cmluZ1ByaW50U3RyZWFt
IHBhdGhPdXQ7CiAgICAgICAgIGNvbnN0IGNoYXIqIHByb2ZpbGVyUGF0aCA9IGdldGVudigiSlND
X1BST0ZJTEVSX1BBVEgiKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMuCiAgICAgbV90eXBl
ZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxl
cigpKTsKIAotICAgIG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeT4oKnRoaXMpOworICAgIG1fYnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeSA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeT4oKnRo
aXMpOwogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVR5cGVQcm9maWxlcigpKQogICAgICAgICBlbmFi
bGVUeXBlUHJvZmlsZXIoKTsKQEAgLTQ0Miw5ICs0NDIsOSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVS
KQogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVJhbmRvbWl6aW5nRnV6emVyQWdlbnQoKSkKLSAgICAg
ICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxSYW5kb21pemluZ0Z1enplckFnZW50
PigqdGhpcykpOworICAgICAgICBzZXRGdXp6ZXJBZ2VudChtYWtlVW5pcXVlPFJhbmRvbWl6aW5n
RnV6emVyQWdlbnQ+KCp0aGlzKSk7CiAgICAgZWxzZSBpZiAoT3B0aW9uczo6dXNlRG91YmxlUHJl
ZGljdGlvbkZ1enplckFnZW50KCkpCi0gICAgICAgIHNldEZ1enplckFnZW50KHN0ZDo6bWFrZV91
bmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOworICAgICAgICBzZXRG
dXp6ZXJBZ2VudChtYWtlVW5pcXVlPERvdWJsZVByZWRpY3Rpb25GdXp6ZXJBZ2VudD4oKnRoaXMp
KTsKIAogICAgIGlmIChPcHRpb25zOjphbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3JpZ2luTWFwKCkp
CiAgICAgICAgIHNldFNob3VsZEJ1aWxkUENUb0NvZGVPcmlnaW5NYXBwaW5nKCk7CkBAIC00NTcs
OSArNDU3LDkgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2lm
IEVOQUJMRShKSVQpCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55IHN0dWJzIHRoYXQgdGhlIEpJ
VCBpcyBnb2luZyB0byB1c2UgYXJlIGluaXRpYWxpemVkIGluIG5vbi1jb21waWxhdGlvbiB0aHJl
YWRzLgogICAgIGlmIChjYW5Vc2VKSVQoKSkgewotICAgICAgICBqaXRTdHVicyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SklUVGh1bmtzPigpOworICAgICAgICBqaXRTdHVicyA9IG1ha2VVbmlxdWU8SklU
VGh1bmtzPigpOwogI2lmIEVOQUJMRShGVExfSklUKQotICAgICAgICBmdGxUaHVua3MgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZUTDo6VGh1bmtzPigpOworICAgICAgICBmdGxUaHVua3MgPSBtYWtlVW5p
cXVlPEZUTDo6VGh1bmtzPigpOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgICAgICBn
ZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlRm9yQ2FsbCk7CiAgICAgICAg
IGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDb25zdHJ1Y3QpOwpA
QCAtNjE5LDcgKzYxOSw3IEBAIFdhdGNoZG9nJiBWTTo6ZW5zdXJlV2F0Y2hkb2coKQogSGVhcFBy
b2ZpbGVyJiBWTTo6ZW5zdXJlSGVhcFByb2ZpbGVyKCkKIHsKICAgICBpZiAoIW1faGVhcFByb2Zp
bGVyKQotICAgICAgICBtX2hlYXBQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SGVhcFByb2Zp
bGVyPigqdGhpcyk7CisgICAgICAgIG1faGVhcFByb2ZpbGVyID0gbWFrZVVuaXF1ZTxIZWFwUHJv
ZmlsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faGVhcFByb2ZpbGVyOwogfQogCkBAIC0xMDQx
LDggKzEwNDEsOCBAQCBzdGF0aWMgYm9vbCBkaXNhYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291
bnQodW5zaWduZWQmIGNvdW50ZXIsIGNvbnN0IEZ1bmMmIGRvRAogYm9vbCBWTTo6ZW5hYmxlVHlw
ZVByb2ZpbGVyKCkKIHsKICAgICBhdXRvIGVuYWJsZVR5cGVQcm9maWxlciA9IFt0aGlzXSAoKSB7
Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxUeXBlUHJv
ZmlsZXI+KCk7Ci0gICAgICAgIHRoaXMtPm1fdHlwZVByb2ZpbGVyTG9nID0gc3RkOjptYWtlX3Vu
aXF1ZTxUeXBlUHJvZmlsZXJMb2c+KCp0aGlzKTsKKyAgICAgICAgdGhpcy0+bV90eXBlUHJvZmls
ZXIgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+bV90eXBlUHJv
ZmlsZXJMb2cgPSBtYWtlVW5pcXVlPFR5cGVQcm9maWxlckxvZz4oKnRoaXMpOwogICAgIH07CiAK
ICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQobV90eXBlUHJvZmls
ZXJFbmFibGVkQ291bnQsIGVuYWJsZVR5cGVQcm9maWxlcik7CkBAIC0xMDYxLDcgKzEwNjEsNyBA
QCBib29sIFZNOjpkaXNhYmxlVHlwZVByb2ZpbGVyKCkKIGJvb2wgVk06OmVuYWJsZUNvbnRyb2xG
bG93UHJvZmlsZXIoKQogewogICAgIGF1dG8gZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlciA9IFt0
aGlzXSAoKSB7Ci0gICAgICAgIHRoaXMtPm1fY29udHJvbEZsb3dQcm9maWxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udHJvbEZsb3dQcm9maWxlcj4oKTsKKyAgICAgICAgdGhpcy0+bV9jb250cm9s
Rmxvd1Byb2ZpbGVyID0gbWFrZVVuaXF1ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigpOwogICAgIH07
CiAKICAgICByZXR1cm4gZW5hYmxlUHJvZmlsZXJXaXRoUmVzcGVjdFRvQ291bnQobV9jb250cm9s
Rmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50LCBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKTsKQEAg
LTEwODcsNyArMTA4Nyw3IEBAIHZvaWQgVk06OmR1bXBUeXBlUHJvZmlsZXJEYXRhKCkKIAogdm9p
ZCBWTTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPE1p
Y3JvdGFzaz4mJiB0YXNrKQogewotICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZnbG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykp
KTsKKyAgICBtX21pY3JvdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFF1ZXVlZFRhc2s+KCp0
aGlzLCAmZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQgVk06OmRyYWlu
TWljcm90YXNrcygpCkBAIC0xMjMwLDE0ICsxMjMwLDE0IEBAIHZvaWQgVk06OmVuc3VyZVNoYWRv
d0NoaWNrZW4oKQogewogICAgIGlmIChtX3NoYWRvd0NoaWNrZW4pCiAgICAgICAgIHJldHVybjsK
LSAgICBtX3NoYWRvd0NoaWNrZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7
CisgICAgbV9zaGFkb3dDaGlja2VuID0gbWFrZVVuaXF1ZTxTaGFkb3dDaGlja2VuPigpOwogfQog
CiAjZGVmaW5lIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhuYW1lLCBo
ZWFwQ2VsbFR5cGUsIHR5cGUpIFwKICAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBc
CiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3Bh
Y2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFw
LCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUp
OyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAgICAgICAgbV8jI25hbWUg
PSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gbV8jI25hbWUuZ2V0KCk7IFwKQEAg
LTEyNjgsNyArMTI2OCw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh3ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblNwYWNlLCBjZWxsSGVhCiAgICAgSXNvU3Vic3Bh
Y2UqIFZNOjpuYW1lIyNTbG93KCkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQoIW1fIyNuYW1l
KTsgXAotICAgICAgICBhdXRvIHNwYWNlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGFjZUFuZFNldD4g
SVNPX1NVQlNQQUNFX0lOSVQoaGVhcCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAorICAgICAgICBh
dXRvIHNwYWNlID0gbWFrZVVuaXF1ZTxTcGFjZUFuZFNldD4gSVNPX1NVQlNQQUNFX0lOSVQoaGVh
cCwgaGVhcENlbGxUeXBlLCB0eXBlKTsgXAogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OyBcCiAgICAgICAgIG1fIyNuYW1lID0gV1RGTW92ZShzcGFjZSk7IFwKICAgICAgICAgcmV0dXJu
ICZtXyMjbmFtZS0+c3BhY2U7IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDI0ZjE4YWQwMmRlMmZlZjkwMDkzNDQ4NjQzMGM5
OGZlOTQ5NDI0ZWYuLjUzMzkzY2IyNThmNzQyYzZhY2ZkZGVhZWM2YzcxNzU2NDRkNzk0MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNw
cApAQCAtNDE3LDcgKzQxNyw3IEBAIGNsYXNzIEFpcklSR2VuZXJhdG9yIHsKICAgICB2b2lkIGVt
aXRQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJhc2ljQmxvY2ssIEIzOjpQYXRjaHBvaW50VmFsdWUq
IHBhdGNoLCBUbXAgcmVzdWx0LCBWZWN0b3I8Q29uc3RyYWluZWRUbXAsIGlubGluZVNpemU+JiYg
YXJncykKICAgICB7CiAgICAgICAgIGlmICghbV9wYXRjaHBvaW50U3BlY2lhbCkKLSAgICAgICAg
ICAgIG1fcGF0Y2hwb2ludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6UGF0Y2hwb2ludFNwZWNp
YWwqPihtX2NvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3Bl
Y2lhbD4oKSkpOworICAgICAgICAgICAgbV9wYXRjaHBvaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0
PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6
OlBhdGNocG9pbnRTcGVjaWFsPigpKSk7CiAKICAgICAgICAgSW5zdCBpbnN0KFBhdGNoLCBwYXRj
aCwgQXJnOjpzcGVjaWFsKG1fcGF0Y2hwb2ludFNwZWNpYWwpKTsKICAgICAgICAgSW5zdCByZXN1
bHRNb3Y7CkBAIC00ODcsNyArNDg3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3IgewogCiAgICAg
ICAgIC8vIEZJWE1FOiBNYWtlIGEgaGFzaG1hcCBvZiB0aGVzZS4KICAgICAgICAgQjM6OkNoZWNr
U3BlY2lhbDo6S2V5IGtleShicmFuY2gpOwotICAgICAgICBCMzo6Q2hlY2tTcGVjaWFsKiBzcGVj
aWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0
ZDo6bWFrZV91bmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkpOworICAgICAgICBCMzo6Q2hl
Y2tTcGVjaWFsKiBzcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OkNoZWNrU3BlY2lhbCo+KG1fY29k
ZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OkNoZWNrU3BlY2lhbD4oa2V5KSkpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgZm9yIGR1bW15IHZhbHVlcwogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDQwCkBAIC0yMTM5
LDEwICsyMTM5LDEwIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6Om9yaWdpbigpIC0+IEIzOjpPcmln
aW4KIAogRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+
IHBhcnNlQW5kQ29tcGlsZUFpcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4
dCwgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+
JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8s
IE1lbW9yeU1vZGUgbW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVwQ291bnQqIHRp
ZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIAotICAgIGNvbXBpbGF0
aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxs
SGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQu
ZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAg
Y29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhl
bHBlcnM+KCk7CiAKICAgICBCMzo6UHJvY2VkdXJlIHByb2NlZHVyZTsKICAgICBDb2RlJiBjb2Rl
ID0gcHJvY2VkdXJlLmNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAyMDk0MTc3ZWQ2ZjE4M2FiNGQ4NjJlYzIyNjdkMzBm
MjhiN2RlNWI2Li4xNThkZjlmYTlmMGM5ZjcyMWFjMjkyNzc4MTg4ZGNmMjhlNzA3ZmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBA
IC0xNTUxLDEwICsxNTUxLDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4gT3Jp
Z2luCiAKIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5n
PiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQs
IGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYg
dW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBN
ZW1vcnlNb2RlIG1vZGUsIENvbXBpbGF0aW9uTW9kZSBjb21waWxhdGlvbk1vZGUsIHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0
aHJvd1dhc21FeGNlcHRpb24pCiB7Ci0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVy
bmFsRnVuY3Rpb24+KCk7CiAKLSAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBv
aW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7Ci0gICAgY29tcGlsYXRp
b25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gc3RkOjptYWtlX3VuaXF1ZTxDQ2FsbEhlbHBl
cnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IG1h
a2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50
cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogCiAgICAgUHJvY2VkdXJl
IHByb2NlZHVyZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3Bw
CmluZGV4IGY5ODVkNTIzYzJlOTNmM2JkMjNmYjdjNTcxMmI1ODY4Y2MxNmE2ODUuLjUwNmRmNGJl
ZmQwZDU2NDE4NDRjZTUyNzk1MTE1ZjYxMjg3MTYxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIEJCUVBsYW46
OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBtX3dhc21J
bnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAgICAgICAgICAgICBtX3dh
c21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XS0+ZW50cnlwb2ludC5jb21waWxhdGlv
biA9IG1ha2VVbmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKICAgICAgICAgICAgICAgICAgICAgRklO
QUxJWkVfQ09ERShsaW5rQnVmZmVyLCBCM0NvbXBpbGF0aW9uUHRyVGFnLCAiV2ViQXNzZW1ibHkg
QkJRIGZ1bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRv
U3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25J
bmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9u
SW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAgICAgICAgICAgIFdURk1v
dmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKICAgICAgICAgICAgIH0KQEAg
LTMyNyw3ICszMjcsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiBsb2NrZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24tPmVu
dHJ5cG9pbnQuY29tcGlsYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEIzOjpDb21waWxhdGlvbj4o
CisgICAgICAgICAgICAgICAgZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9uLT5lbnRyeXBv
aW50LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICAg
ICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcs
ICJFbWJlZGRlci0+V2ViQXNzZW1ibHkgZW50cnlwb2ludFslaV0gJXMgbmFtZSAlcyIsIGZ1bmN0
aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5n
KEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFt
ZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLAogICAg
ICAgICAgICAgICAgICAgICBXVEZNb3ZlKGNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50Qnlwcm9k
dWN0cykpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9N
R1BsYW4uY3BwCmluZGV4IGM1MTNmZDJmNTBlZDZmYjE3YzMzODVlZjI5MDUyNzgxNzM5MjEwMzcu
LjBkN2EwM2MzNjEyOWNkMWRlMmM1NGZmY2Q1MDI5NWI1NmM1Yjg5OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBP
TUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgb21nRW50cnlwb2ludC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNv
bXBpbGF0aW9uPigKKyAgICBvbWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxC
Mzo6Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29t
cGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBPTUcgZnVuY3Rpb25bJWldICVzIG5hbWUgJXMi
LCBtX2Z1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBt
YWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1h
dGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRh
KCkpLAogICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCmluZGV4IDM2
ZDc0YzE0YjE4YzcwN2I4MTJhMDQ4N2Y5MWUyOWMzODUzOTFkZTIuLjY2MGY5NTY1NzM4YjEwYTMw
ZjNlN2NjODE4YTMyYzg1ODc4MjEyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVdvcmtsaXN0LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIFdvcmtsaXN0OjpXb3JrbGlzdCgp
CiAgICAgbV90aHJlYWRzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkNvbXBpbGF0aW9uVGhyZWFk
cyk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzOyBpKyspCi0gICAgICAgIG1fdGhy
ZWFkcy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGlzdDo6VGhyZWFkPihs
b2NrZXIsICp0aGlzKSk7CisgICAgICAgIG1fdGhyZWFkcy51bmNoZWNrZWRBcHBlbmQobWFrZVVu
aXF1ZTxXb3JrbGlzdDo6VGhyZWFkPihsb2NrZXIsICp0aGlzKSk7CiB9CiAKIFdvcmtsaXN0Ojp+
V29ya2xpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNU
b1dhc20uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCmlu
ZGV4IDVkZDQ1MWJlYTg0ZDU5MGJiZjBmY2IwNzZlMjZmZmQzY2M3YjgxYWMuLjczNTIyMDI4OTM3
YzZkYWMxZmM0NzNjN2U0Y2RjNjQ5NThjZThlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1RvV2FzbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElu
dGVybmFsRnVuY3Rpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQm
IGNvbXAKIHsKICAgICBDQ2FsbEhlbHBlcnMmIGppdCA9ICpjb21waWxhdGlvbkNvbnRleHQuZW1i
ZWRkZXJFbnRyeXBvaW50SklUOwogCi0gICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEludGVybmFsRnVuY3Rpb24+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEludGVy
bmFsRnVuY3Rpb24+KCk7CiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAKICAgICAv
LyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXggN2YwMzNmZWMxYzM2OWE5NDIzYjMzY2Y4ZWIzMzM0
YzUxY2UwODA4Yi4uYzRiNzdjYWRiZTVlZWE1NzNlYzg1MmI5NWVmNmE3ODliODI4NTM2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC0x
NzA2LDcgKzE3MDYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICAgICAgZHVtcERp
c2p1bmN0aW9uKG1fYm9keURpc2p1bmN0aW9uLmdldCgpKTsKICNlbmRpZgogCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4oV1RGTW92ZShtX2JvZHlEaXNq
dW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRlcm4sIGFsbG9jYXRvciwgbG9j
ayk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJ5dGVjb2RlUGF0dGVybj4oV1RGTW92ZSht
X2JvZHlEaXNqdW5jdGlvbiksIG1fYWxsUGFyZW50aGVzZXNJbmZvLCBtX3BhdHRlcm4sIGFsbG9j
YXRvciwgbG9jayk7CiAgICAgfQogCiAgICAgdm9pZCBjaGVja0lucHV0KHVuc2lnbmVkIGNvdW50
KQpAQCAtMTkyNiw3ICsxOTI2LDcgQEAgY2xhc3MgQnl0ZUNvbXBpbGVyIHsKICAgICAgICAgdW5z
aWduZWQgc3VicGF0dGVybklkID0gcGFyZW50aGVzZXNCZWdpbi5hdG9tLnN1YnBhdHRlcm5JZDsK
IAogICAgICAgICB1bnNpZ25lZCBudW1TdWJwYXR0ZXJucyA9IGxhc3RTdWJwYXR0ZXJuSWQgLSBz
dWJwYXR0ZXJuSWQgKyAxOwotICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFt
ZVNpemUpOworICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBtYWtlVW5pcXVl
PEJ5dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOwogCiAgICAg
ICAgIHVuc2lnbmVkIGZpcnN0VGVybUluUGFyZW50aGVzZXMgPSBiZWdpblRlcm0gKyAxOwogICAg
ICAgICBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT50ZXJtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGVuZFRlcm0gLSBmaXJzdFRlcm1JblBhcmVudGhlc2VzICsgMik7CkBAIC0xOTk3LDcgKzE5OTcs
NyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogCiAgICAgdm9pZCByZWdleEJlZ2luKHVuc2lnbmVk
IG51bVN1YnBhdHRlcm5zLCB1bnNpZ25lZCBjYWxsRnJhbWVTaXplLCBib29sIG9uY2VUaHJvdWdo
KQogICAgIHsKLSAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVEaXNqdW5jdGlvbj4obnVtU3VicGF0dGVybnMsIGNhbGxGcmFtZVNpemUpOworICAgICAgICBt
X2JvZHlEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0
ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5h
cHBlbmQoQnl0ZVRlcm06OkJvZHlBbHRlcm5hdGl2ZUJlZ2luKG9uY2VUaHJvdWdoKSk7CiAgICAg
ICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtc1swXS5mcmFtZUxvY2F0aW9uID0gMDsKICAgICAg
ICAgbV9jdXJyZW50QWx0ZXJuYXRpdmVJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwCmluZGV4IDQxMmM2ZTRhNmNiZWFjODkzMjFiMGFlNzgwZmRkNzZhMDYxOWJl
MmQuLmY2NmE4MmU1NzUxYWRkYTMyOWVkZWVmNzBhZDkyNjlkMTFlZDJiOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC0zODk5LDcgKzM4OTksNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVy
IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wRGlzYXNz
ZW1ibHkoKSB8fCBPcHRpb25zOjpkdW1wUmVnRXhwRGlzYXNzZW1ibHkoKSkpCi0gICAgICAgICAg
ICBtX2Rpc2Fzc2VtYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8WWFyckRpc2Fzc2VtYmxlcj4odGhp
cyk7CisgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlciA9IG1ha2VVbmlxdWU8WWFyckRpc2Fzc2Vt
Ymxlcj4odGhpcyk7CiAKICAgICAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICAgICAg
bV9kaXNhc3NlbWJsZXItPnNldFN0YXJ0T2ZDb2RlKGxhYmVsKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IDQ5Zjc3ZjY5YzY4NWM2NTIwM2RmM2Yw
MzRjOTBkMTg3N2M5MmRjOWIuLmZjYzUxYjI3N2Y1MDExMDNiN2M2NWJiZDMzYTVjYTQxMGQ4MWMw
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKQEAgLTI0
MCw3ICsyNDAsNyBAQCBjbGFzcyBDaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yIHsKICAgICB7CiAg
ICAgICAgIGNvYWxlc2NlVGFibGVzKCk7CiAKLSAgICAgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAgICAgIGF1dG8gY2hhcmFj
dGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPigpOwogCiAgICAgICAgIGNoYXJh
Y3RlckNsYXNzLT5tX21hdGNoZXMuc3dhcChtX21hdGNoZXMpOwogICAgICAgICBjaGFyYWN0ZXJD
bGFzcy0+bV9yYW5nZXMuc3dhcChtX3Jhbmdlcyk7CkBAIC00NDEsNyArNDQxLDcgQEAgY2xhc3Mg
WWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAgICAgICAgICwgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0
cnVjdG9yKHBhdHRlcm4uaWdub3JlQ2FzZSgpLCBwYXR0ZXJuLnVuaWNvZGUoKSA/IENhbm9uaWNh
bE1vZGU6OlVuaWNvZGUgOiBDYW5vbmljYWxNb2RlOjpVQ1MyKQogICAgICAgICAsIG1fc3RhY2tM
aW1pdChzdGFja0xpbWl0KQogICAgIHsKLSAgICAgICAgYXV0byBib2R5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CisgICAgICAgIGF1dG8gYm9keSA9IG1ha2VVbmlx
dWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9k
eS5nZXQoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0FsdGVybmF0aXZl
KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShib2R5
KSk7CkBAIC00NTYsNyArNDU2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAg
ICAgICAgIG1fcGF0dGVybi5yZXNldEZvclJlcGFyc2luZygpOwogICAgICAgICBtX2NoYXJhY3Rl
ckNsYXNzQ29uc3RydWN0b3IucmVzZXQoKTsKIAotICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5ID0gbWFr
ZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkg
PSBib2R5LmdldCgpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJu
YXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3Zl
KGJvZHkpKTsKQEAgLTYwOCw3ICs2MDgsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9y
IHsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBBU1NFUlQoIW9wdEdyb3VwTmFtZSk7CiAK
LSAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOworICAgICAgICBhdXRvIHBhcmVudGhl
c2VzRGlzanVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5h
dGl2ZSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5kKFBhdHRlcm5UZXJt
KFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJuSWQsIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGZhbHNlKSk7CiAgICAgICAgIG1f
YWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdBbHRlcm5hdGl2ZSgp
OwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUocGFyZW50
aGVzZXNEaXNqdW5jdGlvbikpOwpAQCAtNjE2LDcgKzYxNiw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJu
Q29uc3RydWN0b3IgewogCiAgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2lu
KGJvb2wgaW52ZXJ0ID0gZmFsc2UpCiAgICAgewotICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlz
anVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5h
dGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8
UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKICAgICAgICAgbV9hbHRlcm5hdGl2
ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uLCBtX3BhdHRlcm4ubV9udW1TdWJwYXR0ZXJucyArIDEsIHBhcmVudGhlc2Vz
RGlzanVuY3Rpb24uZ2V0KCksIGZhbHNlLCBpbnZlcnQpKTsKICAgICAgICAgbV9hbHRlcm5hdGl2
ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgICAg
IG1faW52ZXJ0UGFyZW50aGV0aWNhbEFzc2VydGlvbiA9IGludmVydDsKQEAgLTcwNyw3ICs3MDcs
NyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgICAgIFBhdHRlcm5B
bHRlcm5hdGl2ZSogYWx0ZXJuYXRpdmUgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXNbYWx0
XS5nZXQoKTsKICAgICAgICAgICAgIGlmICghZmlsdGVyU3RhcnRzV2l0aEJPTCB8fCAhYWx0ZXJu
YXRpdmUtPm1fc3RhcnRzV2l0aEJPTCkgewogICAgICAgICAgICAgICAgIGlmICghbmV3RGlzanVu
Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3RGlz
anVuY3Rpb24gPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgICAg
ICAgICAgICAgbmV3RGlzanVuY3Rpb24tPm1fcGFyZW50ID0gZGlzanVuY3Rpb24tPm1fcGFyZW50
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUq
IG5ld0FsdGVybmF0aXZlID0gbmV3RGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CkBA
IC0xNDczLDcgKzE0NzMsNyBAQCB2b2lkIFlhcnJQYXR0ZXJuOjpkdW1wUGF0dGVybihQcmludFN0
cmVhbSYgb3V0LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxDaGFyYWN0ZXJDbGFzcz4gYW55Y2hhckNyZWF0ZSgpCiB7Ci0gICAgYXV0byBjaGFyYWN0ZXJD
bGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CisgICAgYXV0byBjaGFy
YWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAgICAgY2hhcmFjdGVy
Q2xhc3MtPm1fcmFuZ2VzLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwLCAweDdmKSk7CiAgICAg
Y2hhcmFjdGVyQ2xhc3MtPm1fcmFuZ2VzVW5pY29kZS5hcHBlbmQoQ2hhcmFjdGVyUmFuZ2UoMHgw
MDgwLCAweDEwZmZmZikpOwogICAgIGNoYXJhY3RlckNsYXNzLT5tX2NoYXJhY3RlcldpZHRocyA9
IENoYXJhY3RlckNsYXNzV2lkdGhzOjpIYXNCb3RoQk1QQW5kTm9uQk1QOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKaW5kZXggMGI3ZGIyZWJhOGFkNTJkZWQyYjVmN2U2
N2U1NDViOGMxNmM5NDVjNy4uN2U4MmM4NTVhODc4ZTZjMTgwZWQ1MjFmMWY3YWQ0OGQ4YzFmYmFj
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCkBAIC0zNDEsNyAr
MzQxLDcgQEAgc3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbiB7CiAgICAgCiAgICAgUGF0dGVybkFs
dGVybmF0aXZlKiBhZGROZXdBbHRlcm5hdGl2ZSgpCiAgICAgewotICAgICAgICBtX2FsdGVybmF0
aXZlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+KHRoaXMpKTsK
KyAgICAgICAgbV9hbHRlcm5hdGl2ZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGF0dGVybkFsdGVybmF0
aXZlPih0aGlzKSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQYXR0ZXJuQWx0ZXJuYXRp
dmUqPihtX2FsdGVybmF0aXZlcy5sYXN0KCkuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKaW5kZXggYzFmOWY5OWRlMDkx
Y2VjYjJlMWRiNTVjMzhmYTM2MDMxMWVlMzdmNC4uNjljZDg4ODY1Nzg1NGNkNTQ0NWY4NjNlMjJk
NTVmZmI5YzQwZWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3Jl
YXRlX3JlZ2V4X3RhYmxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVf
cmVnZXhfdGFibGVzCkBAIC05NSwxMSArOTUsMTEgQEAgZm9yIG5hbWUsIGNsYXNzZXMgaW4gdHlw
ZXMuaXRlbXMoKToKICAgICBmdW5jdGlvbiArPSAoIntcbiIpCiAgICAgaWYgZW1pdFRhYmxlcyBh
bmQgY2xhc3Nlc1siVXNlVGFibGUiXToKICAgICAgICAgaWYgIkludmVyc2UiIGluIGNsYXNzZXM6
Ci0gICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3Rk
OjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgdHJ1ZSk7XG4iICUgKGNsYXNz
ZXNbIkludmVyc2UiXSkpCisgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJh
Y3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXyVzRGF0YSwgdHJ1ZSk7XG4i
ICUgKGNsYXNzZXNbIkludmVyc2UiXSkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmdW5j
dGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFy
YWN0ZXJDbGFzcz4oXyVzRGF0YSwgZmFsc2UpO1xuIiAlIChuYW1lKSkKKyAgICAgICAgICAgIGZ1
bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3Rl
ckNsYXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQogICAgIGVsc2U6Ci0gICAgICAg
IGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVl
PENoYXJhY3RlckNsYXNzPigpO1xuIikKKyAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBj
aGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7XG4iKQogICAgIGhh
c0JNUENoYXJhY3RlcnMgPSBGYWxzZQogICAgIGhhc05vbkJNUENoYXJhY3RlcnMgPSBGYWxzZQog
ICAgIGZvciAobWluLCBtYXgpIGluIHJhbmdlczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5w
eQppbmRleCBmOWZlZjQ2OGQyYjVkZGE2YWFlZWFiMGIzZmMwNThjZDNlZWNlYWMxLi41MjZmYjZl
N2FjM2EyMjdhNmQ0M2NiYmVmZDI3MDJkMWEwYzU0Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5
VGFibGVzLnB5CkBAIC01MjksNyArNTI5LDcgQEAgZGVmIGR1bXBNYXRjaERhdGEoc2VsZiwgZmls
ZSwgdmFsdWVzUGVyTGluZSwgZGF0YUxpc3QsIGZvcm1hdHRlcik6CiAgICAgZGVmIGR1bXAoc2Vs
ZiwgZmlsZSwgY29tbWFBZnRlcik6CiAgICAgICAgIGZpbGUud3JpdGUoInN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8Q2hhcmFjdGVyQ2xhc3M+IHt9KClcbnt7XG4iLmZvcm1hdChzZWxmLmdldENyZWF0
ZUZ1bmNOYW1lKCkpKQogICAgICAgICBmaWxlLndyaXRlKCIgICAgLy8gTmFtZSA9IHt9LCBudW1i
ZXIgb2YgY29kZVBvaW50czoge31cbiIuZm9ybWF0KHNlbGYubmFtZSwgc2VsZi5jb2RlUG9pbnRD
b3VudCkpCi0gICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3Rk
OjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQorICAgICAgICBmaWxlLndyaXRlKCIg
ICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KFxuIikK
ICAgICAgICAgZmlsZS53cml0ZSgiICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VUNoYXIz
Mj4oIikKICAgICAgICAgc2VsZi5kdW1wTWF0Y2hEYXRhKGZpbGUsIDgsIHNlbGYubWF0Y2hlcywg
bGFtYmRhIGZpbGUsIG1hdGNoOiAoZmlsZS53cml0ZSgiezA6MD0jNHh9Ii5mb3JtYXQobWF0Y2gp
KSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiksXG4iKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9i
ZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xv
Y2tGYWlybmVzc1Rlc3QuY3BwCmluZGV4IGNjNzA3ZGUzZmY0ZWMxMzhjZmE0NmFiNGM4ZTEzYWJi
NjU5M2NiYTEuLjhjOTdjMWEyNDFiNzI5YWY4ZjMxZjM1OWM3ZjUxNzdhNjM0MDlkYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcAorKysgYi9T
b3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAKQEAgLTYxLDggKzYxLDgg
QEAgc3RydWN0IEJlbmNobWFyayB7CiAgICAgc3RhdGljIHZvaWQgcnVuKGNvbnN0IGNoYXIqIG5h
bWUpCiAgICAgewogICAgICAgICBMb2NrVHlwZSBsb2NrOwotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8dW5zaWduZWRbXT4gY291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZFtdPihudW1U
aHJlYWRzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVh
ZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZHMpOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWRbXT4gY291bnRzID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWRbXT4obnVtVGhyZWFkcyk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CiAgICAgCiAgICAg
ICAgIHZvbGF0aWxlIGJvb2wga2VlcEdvaW5nID0gdHJ1ZTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcCBiL1NvdXJjZS9XVEYvYmVuY2ht
YXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAppbmRleCBmMTU2NTBkNGM5YzhmYTY3NzBmODkxMmYwOWRm
ZTM5MjkxMzA3YzM0Li5iZTdhYmEzOTBlYjUzZTM1ODFlMzZmNGE4Yjk1MDBkMGUyOTlmOTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKKysrIGIv
U291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCkBAIC03NCw5ICs3NCw5IEBA
IHN0cnVjdCBCZW5jaG1hcmsgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPgogICAg
IHN0YXRpYyB2b2lkIHJ1bihjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFdpdGhQYWRkaW5nPExvY2tUeXBlPltdPiBsb2NrcyA9IHN0ZDo6bWFrZV91bmlx
dWU8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxkb3VibGU+W10+IHdvcmRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxXaXRoUGFkZGluZzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1
ZTxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXAp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+IGxvY2tz
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2l0aFBhZGRpbmc8TG9ja1R5cGU+
W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGlu
Zzxkb3VibGU+W10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V2l0
aFBhZGRpbmc8ZG91YmxlPltdPihudW1UaHJlYWRHcm91cHMpOworICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQ
ZXJHcm91cCk7CiAKICAgICAgICAgdm9sYXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0cnVlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmggYi9Tb3VyY2UvV1RG
L3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKaW5kZXggMGI1NDFiOGM3M2QwZjU5ODY1MWJmOTVlNzY5
M2I4MDdjOTk5Zjc4YS4uODg0ZWQ3MzIzMzc2MWEyOWZiNDk2ZjBhZDA5ODk2NzU0NWU3MDM0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaApAQCAtMjU0LDcgKzI1NCw3IEBAIGNsYXNzIENv
bmN1cnJlbnRWZWN0b3IgZmluYWwgewogICAgIHZvaWQgYWxsb2NhdGVTZWdtZW50KCkKICAgICB7
CiAgICAgICAgIG1fc2VnbWVudHMuZ3JvdyhtX251bVNlZ21lbnRzICsgMSk7Ci0gICAgICAgIG1f
c2VnbWVudHNbbV9udW1TZWdtZW50cysrXSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VnbWVudD4oKTsK
KyAgICAgICAgbV9zZWdtZW50c1ttX251bVNlZ21lbnRzKytdID0gbWFrZVVuaXF1ZTxTZWdtZW50
PigpOwogICAgIH0KIAogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Ny
b3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCmluZGV4IDgzYzIwNzUxZjg1ZjRlNGQyMDE1NjE0NDFj
YTgzMTQxY2I1YzM3ZmYuLmM2M2MwNTVhMGEwMzQxZGY2YTVhZjI3MGE0YWNjYjhkNTdkNzg0M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCkBAIC03Myw3ICs3
Myw3IEBAIHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3AoKQogCiAgICAg
d2hpbGUgKCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKSB7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdXRvZHJhaW5lZFBvb2w+IGF1dG9kcmFpbmVkUG9vbCA9IChtX3Vz
ZUF1dG9kcmFpbmVkUG9vbCA9PSBBdXRvZHJhaW5lZFBvb2xGb3JSdW5Mb29wOjpVc2UpID8gc3Rk
OjptYWtlX3VuaXF1ZTxBdXRvZHJhaW5lZFBvb2w+KCkgOiBudWxscHRyOworICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29sID0gKG1fdXNl
QXV0b2RyYWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVzZSkgPyBtYWtl
VW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CiAKICAgICAgICAgICAgIG1fdGFz
a1F1ZXVlLndhaXRGb3JNZXNzYWdlKCkucGVyZm9ybVRhc2soKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93dGYvRmFzdE1h
bGxvYy5oCmluZGV4IGVmZWZiM2EzMTMzZTgzZjY0MzM2ZmQyZWMyZGE1MmE1NDgzMmU2MjEuLjk1
YjY3NTk3MmQzMTBlM2RkYmQ0MTNkNGE4ZjhkMTI4OGYyMGZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgK
QEAgLTMwMSw5ICszMDEsMTEgQEAgdXNpbmcgV1RGOjpmYXN0QWxpZ25lZEZyZWU7CiAjZGVmaW5l
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIFwKIHB1YmxpYzogXAogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHBy
aXZhdGU6IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJU
aGlzTWFjcm8KIAogI2RlZmluZSBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQgXAogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX0lNUEwgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2Nh
dGVkQ2xhc3M7IFwKIHR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0
ZXJUaGlzTWFjcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCmluZGV4IDNlMjUzY2YyYWMy
MTljYzg1NTg0ZDQyYzQ1MWVmYzdjYTc5YjY0ZWEuLjcwNzRjMDNhYmFmOGZjZjM5NzdmMmIxMWFi
OWMzZDZlMzgxNjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVByaW50U3RyZWFtPiBGaWxlUHJpbnRTdHJlYW06
Om9wZW4oY29uc3QgY2hhciogZmlsZW5hbWUsIGNvbgogICAgIGlmICghZmlsZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWxlUHJpbnRT
dHJlYW0+KGZpbGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpbGVQcmludFN0cmVhbT4oZmls
ZSk7CiB9CiAKIHZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1h
dCwgdmFfbGlzdCBhcmdMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24u
aCBiL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKaW5kZXggMDVlMzY5NzgyNWJjM2QzNDlmNDhk
NjhjMzJhNjg2MjI1NWZiNTgzZS4uMGI3OTU4Njc0ODBmZDAzMjI0MTI0NTRlN2QwYWY4MzM4ZDZl
M2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GdW5jdGlvbi5oCkBAIC02NywxMSArNjcsMTEgQEAgY2xhc3MgRnVuY3Rpb248T3V0
KEluLi4uKT4gewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCEoc3RkOjppc19wb2ludGVyPENhbGxhYmxlVHlwZT46
OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxD
YWxsYWJsZVR5cGU+Ojp0eXBlPjo6dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxD
YWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbihDYWxsYWJsZVR5cGUm
JiBjYWxsYWJsZSkKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVl
PERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1v
dmUoY2FsbGFibGUpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIobWFrZVVuaXF1
ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZN
b3ZlKGNhbGxhYmxlKSkpIHsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBl
LCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxGdW5jdGlv
blR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3Bv
aW50ZXI8RnVuY3Rpb25UeXBlPjo6dHlwZT46OnZhbHVlPjo6dHlwZT4KICAgICBGdW5jdGlvbihG
dW5jdGlvblR5cGUgZikKLSAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihzdGQ6Om1ha2VfdW5p
cXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdU
Rk1vdmUoZikpKSB7IH0KKyAgICAgICAgOiBtX2NhbGxhYmxlV3JhcHBlcihtYWtlVW5pcXVlPERl
dGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUo
ZikpKSB7IH0KIAogICAgIE91dCBvcGVyYXRvcigpKEluLi4uIGluKSBjb25zdAogICAgIHsKQEAg
LTg0LDE0ICs4NCwxNCBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4pPiB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PCEoc3RkOjppc19wb2ludGVyPENhbGxhYmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rp
b248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0eXBlPjo6dmFs
dWUpICYmIHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6
dHlwZT4KICAgICBGdW5jdGlvbiYgb3BlcmF0b3I9KENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQog
ICAgIHsKLSAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERldGFp
bDo6Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoY2Fs
bGFibGUpKTsKKyAgICAgICAgbV9jYWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVlPERldGFpbDo6
Q2FsbGFibGVXcmFwcGVyPENhbGxhYmxlVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoY2FsbGFi
bGUpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+
CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShGdW5jdGlvblR5cGUgZikKICAgICB7Ci0gICAgICAg
IG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3Jh
cHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKKyAgICAgICAgbV9j
YWxsYWJsZVdyYXBwZXIgPSBtYWtlVW5pcXVlPERldGFpbDo6Q2FsbGFibGVXcmFwcGVyPEZ1bmN0
aW9uVHlwZSwgT3V0LCBJbi4uLj4+KFdURk1vdmUoZikpOwogICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDNiMWU5NTMwM2RlNTQwNTE0M2ZiNTYzY2NiODA0
N2U1YWNlYWQwYjMuLmE0ZDA3N2Y4NGYwMmExZmExYzFiZTAzNGE4NmViMzUwZDZkN2Y0OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0hhc2hUYWJsZS5oCkBAIC01ODgsMTAgKzU4OCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAg
ICAgICAgLCBtX2l0ZXJhdG9ycygwKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1
ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlm
CiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigpKQorICAgICAgICAsIG1fc3RhdHMobWFrZVVuaXF1ZTxT
dGF0cz4oKSkKICNlbmRpZgogICAgIHsKICAgICB9CkBAIC0xMzM0LDEwICsxMzM0LDEwIEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICAsIG1fZGVsZXRlZENvdW50KDApCiAjaWYgQ0hFQ0tfSEFT
SFRBQkxFX0lURVJBVE9SUwogICAgICAgICAsIG1faXRlcmF0b3JzKG51bGxwdHIpCi0gICAgICAg
ICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwgbV9tdXRleCht
YWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJf
VEFCTEUKLSAgICAgICAgLCBtX3N0YXRzKHN0ZDo6bWFrZV91bmlxdWU8U3RhdHM+KCpvdGhlci5t
X3N0YXRzKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCpvdGhlci5tX3N0
YXRzKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgdW5zaWduZWQgb3RoZXJLZXlDb3VudCA9IG90
aGVyLnNpemUoKTsKQEAgLTEzODIsNyArMTM4Miw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIGlu
bGluZSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46Okhhc2hUYWJsZShIYXNoVGFibGUmJiBvdGhlcikKICNpZiBDSEVDS19I
QVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgIDogbV9pdGVyYXRvcnMobnVsbHB0cikKLSAgICAg
ICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4
KG1ha2VVbmlxdWU8TG9jaz4oKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgb3RoZXIuaW52YWxp
ZGF0ZUl0ZXJhdG9ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAK
aW5kZXggOWU4NzIwZjZkOWE3OTgwYjk1ZTViMTNjNWU2NTVjMzg5NDkzMDRiNS4uNTM3OWMwYTRk
NWM4YzZmMzY3ZDkxNjk2ZTBkNmExOGM1ZDlmZWMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpzZXRTaG91bGRVc2VQZXJpb2RpY01lbW9yeU1vbml0b3IoYm9vbCB1c2UpCiAgICAg
fQogCiAgICAgaWYgKHVzZSkgewotICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4+KFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bWVhc3VyZW1lbnRUaW1lckZp
cmVkKTsKKyAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpU
aW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CiAgICAgICAgIG1fbWVh
c3VyZW1lbnRUaW1lci0+c3RhcnRSZXBlYXRpbmcoMzBfcyk7CiAgICAgfSBlbHNlCiAgICAgICAg
IG1fbWVhc3VyZW1lbnRUaW1lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4IGFm
NjVlMDhjYTg4MDI0MGVhOWYxOWMzYzFmYzFmZGM1N2FiNGQ0YWIuLmRlZjgzNDBlM2M4YWNjODU4
NmRhNGYwMGJiOGU5ZGM1NmUwMTNlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC01NjUsNiAr
NTY1LDI0IEBAIGNvbnN0ZXhwciBzaXplX3QgY2x6KHVpbnQzMl90IHZhbHVlLCBaZXJvU3RhdHVz
IG1pZ2h0QmVaZXJvID0gWmVyb1N0YXR1czo6TWF5QmVaCiAKIH0gLy8gbmFtZXNwYWNlIHN0ZAog
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4KK0FM
V0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZShBcmdzJiYuLi4gYXJncykKK3sK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjpfX2Zhc3RBbGxvY2F0
ZWRDbGFzcywgaW50Pjo6dmFsdWUpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFQ+KHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNz
Li4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQoreworICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKICNkZWZpbmUgV1RGTW92ZSh2YWx1ZSkgc3RkOjptb3ZlPFdURjo6Q2hlY2tN
b3ZlUGFyYW1ldGVyPih2YWx1ZSkKIAogdXNpbmcgV1RGOjpLQjsKQEAgLTU4NSwzICs2MDMsNSBA
QCB1c2luZyBXVEY6Om1lcmdlRGVkdXBsaWNhdGVkU29ydGVkOwogdXNpbmcgV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mOwogdXNpbmcgV1RGOjpzYWZlQ2FzdDsKIHVzaW5nIFdURjo6dHJ5QmluYXJ5
U2VhcmNoOwordXNpbmcgV1RGOjptYWtlVW5pcXVlOwordXNpbmcgV1RGOjptYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1
ZmZlci5oIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKaW5kZXggMjZiYmM4ZmQ2N2E0
OTM0NjMyMjFkNjE5NjE4ZWI3YzY0Njg2NDAzMC4uY2EzM2Y4NjdkMzhiNTc1OTIwMTQxZDUyM2Mz
MDdhYWU3YzgyMGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xh
c3MgU3RyZWFtQnVmZmVyIHsKICAgICAgICAgbV9zaXplICs9IHNpemU7CiAgICAgICAgIHdoaWxl
IChzaXplKSB7CiAgICAgICAgICAgICBpZiAoIW1fYnVmZmVyLnNpemUoKSB8fCBtX2J1ZmZlci5s
YXN0KCktPnNpemUoKSA9PSBCbG9ja1NpemUpCi0gICAgICAgICAgICAgICAgbV9idWZmZXIuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCkpOworICAgICAgICAgICAgICAgIG1fYnVmZmVy
LmFwcGVuZChtYWtlVW5pcXVlPEJsb2NrPigpKTsKICAgICAgICAgICAgIHNpemVfdCBhcHBlbmRT
aXplID0gc3RkOjptaW4oQmxvY2tTaXplIC0gbV9idWZmZXIubGFzdCgpLT5zaXplKCksIHNpemUp
OwogICAgICAgICAgICAgbV9idWZmZXIubGFzdCgpLT5hcHBlbmQoZGF0YSwgYXBwZW5kU2l6ZSk7
CiAgICAgICAgICAgICBkYXRhICs9IGFwcGVuZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9VbmlxdWVSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCmluZGV4IDczZTlk
ZmVjMDZmZDc4N2YzYjA2YjNkYzlkYTY1YTU1MDRkMWMwMjkuLjY1OTEyNTFiODYyN2RmMzZjZjJl
YjlmNzQ3OTNlZjQ4OWNhMWU5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJl
Zi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCkBAIC0zMywxMSArMzMsMTggQEAg
bmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBVbmlxdWVSZWY7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+Ci1VbmlxdWVSZWY8VD4gbWFrZVVu
aXF1ZVJlZihBcmdzJiYuLi4gYXJncykKK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmV2l0aG91
dEZhc3RNYWxsb2NDaGVjayhBcmdzJiYuLi4gYXJncykKIHsKICAgICByZXR1cm4gVW5pcXVlUmVm
PFQ+KCpuZXcgVChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KK1VuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmKEFy
Z3MmJi4uLiBhcmdzKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVuYW1l
IFQ6Ol9fZmFzdEFsbG9jYXRlZENsYXNzLCBpbnQ+Ojp2YWx1ZSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBVbmlxdWVSZWYgewogcHVi
bGljOgpAQCAtNjMsNyArNzAsNyBAQCBjbGFzcyBVbmlxdWVSZWYgewogICAgIHN0ZDo6dW5pcXVl
X3B0cjxUPiBtb3ZlVG9VbmlxdWVQdHIoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVmKTsgfQogCiBw
cml2YXRlOgotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlx
dWVSZWY8VT4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOworICAgIHRlbXBsYXRlPGNsYXNzIFUs
IGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZldpdGhvdXRG
YXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQg
Y2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5pcXVlUmVmKFQmIG90aGVyKQpAQCAtNzksMyArODYs
NCBAQCBjbGFzcyBVbmlxdWVSZWYgewogCiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5nIFdU
Rjo6bWFrZVVuaXF1ZVJlZjsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCmluZGV4IDVlNWJhOGFiZWJk
YmQ0OWJiYjgzN2RkNGM0ZmQ2OWJkNmZmYzM2MWYuLmZiMjExZDBhMjk2MWRmYzE2YWE2ZTIxYTIx
YTk3NGRmZjE1MjY5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdM
aWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24s
IEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3Vy
Y2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKICAgICBnX3NvdXJj
ZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190aW1lKCkgKyBk
dXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwYXRj
aEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGF0Y2hBZnRlckNv
bnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2soc291
cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQoc3RhdGljX2Nhc3Q8
RGlzcGF0Y2hBZnRlckNvbnRleHQqPih1c2VyRGF0YSkpOwogICAgICAgICBjb250ZXh0LT5kaXNw
YXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZGNiYTA2MDgyYzVmNjZl
MzE5YTE1ZWU1OTdmYzY0OTc2NmIwNWU2Yy4uNWJmNGU2ZDAxZGU4NDNlZDI4Nzg4M2VhM2EwM2U4
NDk0OTNiZWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0xNzksNyArMTc5
LDcgQEAgY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGwg
ewogfTsKIAogU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9y
KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQotICAgIDogbV9p
bXBsKHN0ZDo6bWFrZV91bmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwo
KSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkp
CisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3Lmlz
TnVsbCgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGlu
ZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIu
Y3BwCmluZGV4IGZkYjhjZTI5MmQ3MzhkYTQyMDM4YWE5NjVhZjNhY2ExNzhhODBjZWIuLjhkYzc2
ZmEyZTU5ZWE2N2UwMjE3MzhjMzExYTM1NzdmNGQzNmU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBBcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFByb3BlcnR5SW52YWxpZFVSTChjb25z
dCBTdHJpbmcmIHByb3AKIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nRGV2ZWxv
cGVyV2FybmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1fY29uc29sZUNv
bnRleHQpCi0gICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNl
OjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZl
c3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVzc2FnZSkpKTsKKyAgICAgICAgbV9jb25zb2xlQ29u
dGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2csIEpT
Qzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0aW9u
IG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5zdHJpbmcoKSwgIjogIl9zLCBtZXNzYWdlKSkp
OwogfQogCiBVUkwgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VTdGFydFVSTChjb25z
dCBKU09OOjpPYmplY3QmIG1hbmlmZXN0LCBjb25zdCBVUkwmIGRvY3VtZW50VVJMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXgg
OWJmYTVmOTQ5OTRiMDU0NTA2YjgyNmEzMTRiODI1ODI3ZWE0MWFkYi4uN2U0Zjc5NDcxZTJjNTlm
ZTcxYzE0ODEzMmY0YjU1MWQ4ZmZjNzkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC01Miw3ICs1Miw3IEBAIE5hdmlnYXRv
ckJlYWNvbiogTmF2aWdhdG9yQmVhY29uOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewog
ICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JCZWFjb24qPihTdXBw
bGVtZW50PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKKyAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmlnYXRvcik7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRl
VG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5k
b3dDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNo
ZXMuY3BwCmluZGV4IDVlZDFmNWNjYTY0MWViMDRlYzBlMGEwY2UwNmM4MzcyNDU2OGEyZmYuLjYx
NTM5NDMwZGZiOTYxNmZkMjg4ZmVkOTJjYjk0NGZmNDQ2YjAxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRE9NV2luZG93Q2FjaGVzKiBET01XaW5kb3dDYWNoZXM6OmZyb20oRE9NV2luZG93KiB3aW5k
b3cpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd0NhY2hl
cyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkp
KTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CisgICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5kb3cpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxT
Y29wZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2Jh
bFNjb3BlQ2FjaGVzLmNwcAppbmRleCAwNjU2YmVmMGIxNzE4ZTMzZGJjN2ZhMGVlNjBjNTdkNDhl
MzhkNGU4Li41MTE4YTQ4ODUwZjI0MmQwNDRkM2I0MGZmMGUzYjIzYmI5NmUyOGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3Bl
Q2FjaGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcyogV29y
a2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20oV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQogewog
ICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZUNhY2hl
cyo+KFN1cHBsZW1lbnQ8V29ya2VyR2xvYmFsU2NvcGU+Ojpmcm9tKCZzY29wZSwgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7
CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyR2xvYmFsU2Nv
cGVDYWNoZXM+KHNjb3BlKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7CiAgICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUo
bmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFs
cy5jcHAKaW5kZXggNzFmNDM4Y2Y3ODZjNzZkN2I1ODcyMTU1OTc2NjhiNjIzNjFiNTk5My4uMTE4
MWJkOTg1YTIyYmE0OTNmODM2MzFkN2U0MWZlZTg3OWI1NmIzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9O
YXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTmF2aWdhdG9yQ3JlZGVu
dGlhbHMqIE5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQog
ewogICAgIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yQ3JlZGVudGlhbHMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yQ3JlZGVudGlhbHM+
KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yQ3Jl
ZGVudGlhbHM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwog
ICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5l
d1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCBiNmZkNjhkNjcy
ZWRlMzg3NzhjMTVjNmZlYWFmNDZiNDU1ZTVhMWNkLi43NWVkYjZhOTM2Mzg4MGU1ODdjMzU3NTZi
MTRkZWM5ZjliNDVlNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBA
QCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgICAgICBhdXRvIHN5c3RlbUlEID0gSVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVrU3lzdGVtSUQodmlldywgb2Zmc2V0
KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgICAgIGlm
IChzeXN0ZW1JRCA9PSBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6OmZhaXJQbGF5U3lzdGVt
SUQoKSkgewotICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gc3RkOjptYWtlX3VuaXF1ZTxJU09G
YWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CisgICAgICAgICAgICBhdXRvIGZwc1Bzc2ggPSBt
YWtlVW5pcXVlPElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveD4oKTsKICAgICAgICAgICAgIGlm
ICghZnBzUHNzaC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBwc3NoQm94ZXMuYXBwZW5kKFdURk1vdmUoZnBzUHNz
aCkpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhCiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0oc3lzdGVtSUQpOwogI2VuZGlmCi0gICAgICAgIGF1dG8gcHNz
aEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94PigpOworICAgICAgICBhdXRvIHBzc2hCb3ggPSBtYWtlVW5pcXVlPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKICAgICAgICAgaWYgKCFwc3NoQm94LT5yZWFkKHZp
ZXcsIG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNLmNwcAppbmRleCA4MjYyODkzZmUwYWY5OTkxNGVkMzllOTYwY2YxMGE3NTM0MDcwNWI2
Li44MzdkZjEyM2FlNTk2ZjM1MzdjOTE1MjcwM2UzZDI3MWIzNDZlYjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2Fj
eUNETS5jcHAKQEAgLTYxLDE1ICs2MSwxNSBAQCBzdHJ1Y3QgQ0RNRmFjdG9yeSB7CiBzdGF0aWMg
VmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCkKIHsKICAgICBzdGF0
aWMgYXV0byBjZG1zID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxDRE1GYWN0b3J5Kj4gewot
ICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCisgICAgICAgIG5l
dyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPExlZ2Fj
eUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKICAgICAgICAgICAgIExlZ2FjeUNETVByaXZh
dGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6
c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICAgICAgICAgLy8gRklYTUU6IGluaXRp
YWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMTgsIGh0dHA6
Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNE
TSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXllcj4o
Y2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0
dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LAogICAgICAgICAg
ICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1l
ZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogI2lmIChIQVZFKEFW
Q09OVEVOVEtFWVNFU1NJT04pIHx8IEhBVkUoQVZTVFJFQU1TRVNTSU9OKSkgJiYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2Rt
KTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJu
IG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2RtKTsgfSwKICAgICAg
ICAgICAgIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtLCBD
RE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBl
KSwKICNlbmRpZgogICAgIH0pOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxM
ZWdhY3lDRE0+IExlZ2FjeUNETTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAg
IGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3RlbSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNPihrZXlTeXN0ZW0pOwogfQogCiBMZWdh
Y3lDRE06OkxlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgK
aW5kZXggNDU4ZWM1M2I0MzM3YjE3MTA1NTZmOGExN2I0ZWYwMWVmY2UxNTY0ZS4uZmI1ZGExZjE2
ZGEwMmVjODRjMzQ3N2QzNTVmZTBhNWU4OTY0MDZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgKQEAgLTUw
LDcgKzUwLDggQEAgY2xhc3MgTGVnYWN5Q0RNQ2xpZW50IHsKICAgICB2aXJ0dWFsIFJlZlB0cjxN
ZWRpYVBsYXllcj4gY2RtTWVkaWFQbGF5ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29uc3QgPSAwOwog
fTsKIAotY2xhc3MgTGVnYWN5Q0RNIHsKK2NsYXNzIExlZ2FjeUNETSBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5Q0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCmlu
ZGV4IDBhOGQ1NGU1YzU2NWYzNDUwODU2MmM1YThjMWUwMDM1YWYxNGE3NGYuLmYyNDk3MDcyZTc4
NTc2MGM1OWUyMzAzOTM0ZmI3ZjljYzQ3NzJkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2
YXRlLmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKIGNsYXNzIExl
Z2FjeUNETVNlc3Npb25DbGllbnQ7CiAKIGNsYXNzIENETVByaXZhdGVJbnRlcmZhY2UgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVByaXZhdGVJbnRlcmZh
Y2UoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUludGVyZmFjZSgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCmlu
ZGV4IGM5MzE2ZGZkOGFiYjQwNTQ5MmY1NTVlYjNkMWIzZDA5MTdjZWZmNTAuLjNhOGMwMGY1MjMx
ZjUyYTZlODlkMTgzZDE1MTFjM2FjODc3M2ExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIExlZ2FjeUNE
TVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5Q0RNUHJpdmF0ZUNs
ZWFyS2V5OjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkNsZWFyS2V5PihjbGllbnQpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCmluZGV4IDJm
N2IwMzUzOWVmOGVhNDc0ZTIzNmQwNWQ5ZTE3ZmVjNDg0ZTYyN2UuLmJjNzc3ZjBjYmM4Y2U3Yjg5
ZTk0M2I4YTYzZTRlNmU4Mjg5YjM4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNl
c3Npb25DbGVhcktleS5oCkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IDogcHVibGljIExlZ2FjeUNETVNlc3Npb24gewor
Y2xhc3MgQ0RNU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25D
bGVhcktleShMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lv
bkNsZWFyS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCmluZGV4IGFkZGM1NDg5NmI4YTQ0MzhjZmJmZDA2NTgwYWRiYzg2MGE4MWY4NjQu
LmRiNjM5MGU3Zjk5MjU5NzdiODdjYTAwOWVkYWJkNTFjZGI2NjczMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yNDQsNyArMjQ0
LDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0
Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgIH0KIAogICAgIG1fYmxvYkxvYWRlci5lbXBs
YWNlKCp0aGlzKTsKLSAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKKyAgICBtX2Jsb2JMb2FkZXIt
PmxvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVy
KTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
aW5kZXggY2QzNDVlYjllYzM0MGMzNmUwZjBhNmVlZDgyZGQ5ODhiNGY5N2QzOS4uOTQwMTNjZjRl
YTY1MjM4ZDgzYjliNGM4MWRiN2QxODE2NTMyNDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRj
aFJlcXVlc3QmIHJlcXVlc3QKIAogICAgIHJlc3BvbnNlLT5hZGRBYm9ydFN0ZXBzKHJlcXVlc3Qu
c2lnbmFsKCkpOwogCi0gICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Qm9keUxvYWRlcj4ocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykp
OworICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBtYWtlVW5pcXVlPEJvZHlMb2FkZXI+KHJl
c3BvbnNlLmdldCgpLCBXVEZNb3ZlKHJlc3BvbnNlQ2FsbGJhY2spKTsKICAgICBpZiAoIXJlc3Bv
bnNlLT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpKQogICAgICAgICByZXNw
b25zZS0+bV9ib2R5TG9hZGVyID0gbnVsbHB0cjsKIH0KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKQogCiBib29sIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0
aGlzLCAmbV9yZXNwb25zZS5tX2JvZHktPmNvbnN1bWVyKCkpOworICAgIG1fbG9hZGVyID0gbWFr
ZVVuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIo
KSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwogICAgIHJldHVybiBt
X2xvYWRlci0+aXNTdGFydGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKaW5kZXggNjEwMjA4OTljYmM0YTdlNDMzYjE1
MWRjY2FlYmZlOTA3NjRkM2UyZC4uODUwZDIyZGUyODViYjMzNWQyMmU4YzJlMjUzYjdhYjZlMGM2
MDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRv
ckdhbWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0
b3JHYW1lcGFkLmNwcApAQCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JHYW1lcGFkKiBOYXZpZ2F0
b3JHYW1lcGFkOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdh
bWVwYWQqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHYW1lcGFkKj4oU3VwcGxl
bWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9
IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcAppbmRleCBiMDlmYzM0MzNiYmZiYjcyOGYzMTVjMTUzM2E2ZjJjOWU0ZmMwMDcx
Li5jZDgwNzBiMjA3ZGI4YTM0NDAyNmNmZjYxMDViODVlZTE5YmM1MjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgY29uc3QgY2hhciogR2VvbG9jYXRpb25D
b250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBh
Z2UqIHBhZ2UsIEdlb2xvY2F0aW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKHBhZ2Up
OwotICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Db250
cm9sbGVyPigqcGFnZSwgY2xpZW50KSk7CisgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRv
KHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1
ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKIH0KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKaW5kZXggYjM0ZjQ5YTY3MWQ4
NWY1MTQyYjhiYWYwZjUyYmE5OTFhYzQzNTlkYy4uMzVkZmJmOGYzZjI1NjljMDEzNTM1NjYzMDBm
NWI3ODM3ZGUyOGZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
TmF2aWdhdG9yR2VvbG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpmcm9tKE5hdmlnYXRv
ciYgbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8TmF2aWdhdG9yR2VvbG9jYXRpb24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46
OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmln
YXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZp
Z2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01X
aW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGM3MjAzYTlhODY0MDk3MDUwZDNkYzAwNzky
ZjdhNmI1ODFmYWEyNWUuLjVlOWQ5Nzk2NmJmZGU1OGU2NjA5OWE1MDllNjE4Yjg0YzE4ZDA1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
RE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2UqIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6ZnJvbShET01XaW5kb3cq
IHdpbmRvdykKIHsKICAgICBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqPihTdXBwbGVtZW50PERPTVdpbmRv
dz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50
KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2lu
ZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93KTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5k
b3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cAppbmRleCBmNDMwOTBjNGRjYzNlZGU1ZTI3ZDFhYTQ0Mzg0NDQ3ZDg0OWM2NDBiLi45YTc4MTI3
ODQ2M2VkMGE0YTBhZGRkM2Y3ZGIwYzU2NTY5NjJiOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC01MTcsNyArNTE3
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNv
bnN0IFN0cmluZyYgaW5kZXhOYW1lKQogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnaW5kZXgnIG9uICdJ
REJPYmplY3RTdG9yZSc6IFRoZSBzcGVjaWZpZWQgaW5kZXggd2FzIG5vdCBmb3VuZC4iX3MgfTsK
IAotICAgIGF1dG8gaW5kZXggPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOworICAgIGF1dG8gaW5kZXggPSBtYWtlVW5p
cXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwog
CiAgICAgUmVmPElEQkluZGV4PiByZWZlcmVuY2VkSW5kZXggeyAqaW5kZXggfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IGZhMmNkN2VhZDA5YjYwNTUyNWI4Y2I0NDFlZjcwMDFkODMzNTAxMDAuLjQyMjQzZmJhNTcz
MTI5NTQxODg5NGEzMjA0M2U4OWUwYjJjMWE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE3OSw3ICsxNzksNyBA
QCBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplYwogICAgIGlmICghaW5mbyB8fCAoIWZvdW5kICYmICFp
c1ZlcnNpb25DaGFuZ2UoKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVy
cm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29iamVjdFN0b3JlJyBvbiAnSURCVHJhbnNhY3Rpb24n
OiBUaGUgc3BlY2lmaWVkIG9iamVjdCBzdG9yZSB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAg
YXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9y
ZSA9IG1ha2VVbmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
ICppbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZS5n
ZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KG9iamVjdFN0b3JlTmFtZSwg
V1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC02NjcsNyArNjY3LDcgQEAgUmVmPElEQk9iamVj
dFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJgogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3JlZmVyZW5jZWRPYmplY3RT
dG9yZUxvY2spOwogCi0gICAgYXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
T2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0aGlzKTsKKyAg
ICBhdXRvIG9iamVjdFN0b3JlID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJhd09iamVjdFN0b3Jl
ID0gb2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChp
bmZvLm5hbWUoKSwgV1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC03NTUsNyArNzU1LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURC
T2JqZWN0U3RvcmUmIG9iamVjdFN0b3IKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3JlYXRlSW5k
ZXhPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwogICAgIH0pKTsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBv
YmplY3RTdG9yZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0b3JlKTsKIH0KIAogdm9pZCBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
JiBvcGVyYXRpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNj
b3BlSW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBhNDg1MDNiNGQyZDgwNDI5NDY4NGE2NWE2NWVi
ZDY0ZjIzM2NkN2I5Li45Yjc1Nzc0OTIxYjQ2NTA2ZjU4M2RlN2ZlYzQyNTBlODU0YWNlNTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxT
Y29wZUluZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKiBXb3JrZXJHbG9iYWxTY29wZUlu
ZGV4ZWREYXRhYmFzZTo6ZnJvbShXb3JrZXJHCiAgICAgICAgIGlmICghY29ubmVjdGlvblByb3h5
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBuZXdTdXBwbGVt
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZT4o
c2NvcGUsICpjb25uZWN0aW9uUHJveHkpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwgKmNvbm5l
Y3Rpb25Qcm94eSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwog
ICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1
cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4
IDk0OGNmNzQ2NjNhZTY5YzgyZGE0NDRlMDkzNDczZGQ4NTZkNGRlOTMuLjM3NzExZGMxMDNkYjZj
OWE5YjgxM2RiYzlkZjc5OWI3ZTI2YTZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IElEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlCiAKIElEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6SURCQ29ubmVjdGlvblRvU2VydmVyKElEQkNvbm5lY3Rpb25Ub1Nl
cnZlckRlbGVnYXRlJiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUobWFrZVdlYWtQdHIoZGVs
ZWdhdGUpKQotICAgICwgbV9wcm94eShzdGQ6Om1ha2VfdW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94
eT4oKnRoaXMpKQorICAgICwgbV9wcm94eShtYWtlVW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94eT4o
KnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCAyNzUz
ZmQwYzI0NTdiOWMwOWQ5ZDg5ZTRmNzYyYjQ3OWY4YjQ0MGIxLi44ZTFkZTA2ZDcxZThmMGIyMjNk
Njg2ZTVlMWE4YTIyMDliNzQzODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAK
QEAgLTQyLDcgKzQyLDcgQEAgVHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0
aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICBpZiAobV9pbmRl
eElkZW50aWZpZXIpCiAgICAgICAgIG1faW5kZXhSZWNvcmRUeXBlID0gcmVxdWVzdC5yZXF1ZXN0
ZWRJbmRleFJlY29yZFR5cGUoKTsKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5k
aW5nQ3Vyc29yKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwor
ICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRp
Zmllcj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKIAogICAgIG1faWRiUmVxdWVzdCA9
ICZyZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCA4OWJmZTc5M2Q3ZGJiNWNlNzMxMTQ3OWVmNjk1
MGI5Y2ZkMTdjZTA4Li4zYmI2ZGFjYTY4ZDdjMGY1M2FkODdlOWQxZGYxOGEzZmZlNGE5MWM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTZXJ2
ZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVuCiAK
ICAgICBhdXRvIHVuaXF1ZUlEQkRhdGFiYXNlID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC5hZGQo
aWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAgaWYgKHVuaXF1ZUlEQkRhdGFiYXNlLmlzTmV3RW50
cnkpCi0gICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKKyAgICAgICAg
dW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxVbmlxdWVJREJE
YXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOwogCiAgICAgcmV0dXJuICp1bmlxdWVJREJEYXRh
YmFzZS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3Qg
SURCRGF0YWJhc2UKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmllcik7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1f
c2Vzc2lvbklELCBpZGVudGlmaWVyLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9iYWNraW5n
U3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciwgbV9wZXJPcmlnaW5RdW90YSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmll
ciwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhh
bmRsZXIsIG1fcGVyT3JpZ2luUXVvdGEpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6b3BlbkRhdGFi
YXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKQEAgLTc2MSw3ICs3NjEsNyBA
QCB2b2lkIElEQlNlcnZlcjo6UXVvdGFVc2VyOjppbml0aWFsaXplU3BhY2VVc2VkKHVpbnQ2NF90
IHNwYWNlVXNlZCkKIElEQlNlcnZlcjo6UXVvdGFVc2VyJiBJREJTZXJ2ZXI6OmVuc3VyZVF1b3Rh
VXNlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICByZXR1cm4gKm1fcXVvdGFV
c2Vycy5lbnN1cmUob3JpZ2luLCBbdGhpcywgJm9yaWdpbl0gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxRdW90YVVzZXI+KCp0aGlzLCBtX3F1b3RhTWFuYWdlckdldHRlcihtX3Nl
c3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50T3JpZ2luIHsgb3JpZ2luIH0pOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxRdW90YVVzZXI+KCp0aGlzLCBtX3F1b3RhTWFuYWdlckdldHRlcihtX3Nl
c3Npb25JRCwgb3JpZ2luKSwgQ2xpZW50T3JpZ2luIHsgb3JpZ2luIH0pOwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAppbmRleCA2OTgzYzlkN2VhZmY1
NjE2NzIwNGQ5NTJmMWYyMjY3YmI0MGNhNGJhLi44ZDkyMWQ4ZWZlNmJhODQwYTMwZDYxZGZkYzZh
NzIxZTgyOGE0M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0b3JlLmNwcApAQCAtOTIsNyArOTIsNyBAQCBJ
REJFcnJvciBJbmRleFZhbHVlU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJLZXlEYXRhJiBpbmRl
eEtleSwgY29uc3QgSURCS2V5RGF0YQogICAgICAgICByZXR1cm4gSURCRXJyb3IoQ29uc3RyYWlu
dEVycm9yKTsKIAogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZXhWYWx1ZUVudHJ5PihtX3VuaXF1
ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEluZGV4VmFs
dWVFbnRyeT4obV91bmlxdWUpOwogCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkS2V5
KHZhbHVlS2V5KTsKICAgICBtX29yZGVyZWRLZXlzLmluc2VydChpbmRleEtleSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcAppbmRleCA0N2NjNDJmZDI2
ZDY0NzNjNjQxOTI3ZTk5MmQ0ZWM2ZThkN2JmOGVlLi41ZTcxNDQ5Nzg0YTBkYTA3Njc3ODlhOGRl
ZGM1MjI2ODlmNGQ4ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKIHN0
ZDo6dW5pcXVlX3B0cjxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4gTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246OmNyZWF0ZShNZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdT
dG9yZSwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPihiYWNraW5nU3RvcmUs
IGluZm8pOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uPihiYWNraW5nU3RvcmUsIGluZm8pOwogfQogCiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oTWVtb3J5SURCQmFja2luZ1N0b3Jl
JiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKQEAgLTUyLDcg
KzUyLDcgQEAgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG8KICAgICAgICAgSURCRGF0YWJhc2VJbmZv
IGluZm87CiAgICAgICAgIGF1dG8gZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS5nZXRPckVzdGFibGlz
aERhdGFiYXNlSW5mbyhpbmZvKTsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAg
ICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPihpbmZvKTsKKyAgICAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiAgICAgfQogfQogCkBAIC0xOTUsNyArMTk1
LDcgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFu
Z2VkKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3QKIAogICAgIGF1dG8gb3JpZ2luYWxBZGRSZXN1
bHQgPSBtX29yaWdpbmFsVmFsdWVzLmFkZCgmb2JqZWN0U3RvcmUsIG51bGxwdHIpOwogICAgIGlm
IChvcmlnaW5hbEFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBvcmlnaW5hbEFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtleVZhbHVlTWFwPigpOworICAg
ICAgICBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEtleVZh
bHVlTWFwPigpOwogCiAgICAgYXV0byogbWFwID0gb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDdk
MTQyYjAwNTBhYjYwODgxZTM4N2JlOGMxOTg5NDdhYzZlOGRkODEuLmNmZmUzMzM3Zjc5NDQ4Yjhj
MjEzZGJiZTVmYTM1YjRkM2E3MGYyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUu
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1
ZSA9IDB4MjAwMDAwMDAwMDAwMDA7CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5n
U3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZW1v
cnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1l
bW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7CiB9CiAKIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllcikKQEAgLTYxLDcgKzYxLDcgQEAgTWVtb3J5SURCQmFja2luZ1N0b3JlOjp+TWVt
b3J5SURCQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0OwogSURCRXJyb3IgTWVtb3J5SURCQmFja2lu
Z1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8p
CiB7CiAgICAgaWYgKCFtX2RhdGFiYXNlSW5mbykKLSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFt
ZSgpLCAwKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKIAogICAgIGluZm8gPSAqbV9k
YXRhYmFzZUluZm87CiAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKQEAgLTcyLDcgKzcyLDcgQEAg
dm9pZCBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnNldERhdGFiYXNlSW5mbyhjb25zdCBJREJEYXRh
YmFzZUluZm8mIGluZm8pCiAgICAgLy8gSXQgaXMgbm90IHZhbGlkIHRvIGRpcmVjdGx5IHNldCBk
YXRhYmFzZSBpbmZvIG9uIGEgYmFja2luZyBzdG9yZSB0aGF0IGhhc24ndCBhbHJlYWR5IHNldCBp
dHMgb3duIGRhdGFiYXNlIGluZm8uCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKIAotICAg
IG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8p
OworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8p
OwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24o
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKaW5kZXggNDlkZGNh
NmJkNDBkMjlkNDJlMzhiODUxMzFjODlmZGZlN2Q0NzkyZC4uODU5NWRiYjhmNGE3ZWUzZDE5MWUz
MWZiNjEwYjA0OTc1Yjg3NDYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAg
SURCRXJyb3IgTWVtb3J5SW5kZXg6OnB1dEluZGV4S2V5KGNvbnN0IElEQktleURhdGEmIHZhbHVl
S2V5LCBjb25zdCBJbmRleEtleSYgaW4KICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SW5kZXg6
OnByb3Zpc2lvbmFsUHV0SW5kZXhLZXkiKTsKIAogICAgIGlmICghbV9yZWNvcmRzKSB7Ci0gICAg
ICAgIG1fcmVjb3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2luZm8u
dW5pcXVlKCkpOworICAgICAgICBtX3JlY29yZHMgPSBtYWtlVW5pcXVlPEluZGV4VmFsdWVTdG9y
ZT4obV9pbmZvLnVuaXF1ZSgpKTsKICAgICAgICAgbm90aWZ5Q3Vyc29yc09mQWxsUmVjb3Jkc0No
YW5nZWQoKTsKICAgICB9CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBNZW1vcnlJbmRleEN1cnNvciog
TWVtb3J5SW5kZXg6Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQog
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5SW5kZXhD
dXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8pOwogICAgIHJldHVybiByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRl
eCBlZDZlYmE5MjdmMWY0ZjZiOWMzMDY4ZjZiNWQ4OGRlMjk5NzI2N2ViLi41YjQ0YTczODc4Yzlm
ZGQ3YTFlMDVhOTViNzY1N2ViZTYzNjM1MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAK
QEAgLTI1OSw4ICsyNTksOCBAQCBJREJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3Jk
KE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbgogCiAgICAgaWYgKCFt
X2tleVZhbHVlU3RvcmUpIHsKICAgICAgICAgQVNTRVJUKCFtX29yZGVyZWRLZXlzKTsKLSAgICAg
ICAgbV9rZXlWYWx1ZVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKLSAg
ICAgICAgbV9vcmRlcmVkS2V5cyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YVNldD4oKTsK
KyAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gbWFrZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKKyAg
ICAgICAgbV9vcmRlcmVkS2V5cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPElE
QktleURhdGFTZXQ+KCk7CiAgICAgfQogCiAgICAgYXV0byBtYXBSZXN1bHQgPSBtX2tleVZhbHVl
U3RvcmUtPnNldChrZXlEYXRhLCB2YWx1ZS5kYXRhKCkpOwpAQCAtNDk3LDcgKzQ5Nyw3IEBAIE1l
bW9yeU9iamVjdFN0b3JlQ3Vyc29yKiBNZW1vcnlPYmplY3RTdG9yZTo6bWF5YmVPcGVuQ3Vyc29y
KGNvbnN0IElEQkN1cnNvckluZm8mCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4oKnRoaXMsIGluZm8pOworICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29y
PigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYmZiZDA5ZGJiOWE3
MWQzYzQxYTlkZjZhNzc5NGVlZGU1ODFhYmQ3MC4uZGFhNGExOWJkODM5NmYzODE5ZTY5ZGM5OTU2
NzZlMzM5ZWFkZDIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTYy
NCw3ICs2MjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbAogICAgIH0KIAogICAgIC8vIFRo
aXMgaW5pdGlhbCBkYXRhYmFzZSBpbmZvIG1hdGNoZXMgdGhlIGRlZmF1bHQgdmFsdWVzIHdlIGp1
c3QgcHV0IGludG8gdGhlIG1ldGFkYXRhIGRhdGFiYXNlLgotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRh
YmFzZU5hbWUoKSwgMCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKCkKQEAgLTY1
OSw3ICs2NTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYXV0byBkYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOworICAgIGF1dG8gZGF0YWJhc2VJbmZv
ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VWZXJz
aW9uKTsKIAogICAgIHsKICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9zcWxpdGVEQiwg
IlNFTEVDVCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYywgbWF4SW5kZXhJRCBGUk9NIE9iamVj
dFN0b3JlSW5mbzsiX3MpOwpAQCAtODIxLDcgKzgyMSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBp
bmZvCiAKICAgICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKIAotICAg
IG1fc3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAgIG1f
c3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9zcWxp
dGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBv
cGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CkBAIC05MzEsMTEgKzkzMSwxMSBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGVzdGFibGlzaCB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIHRoYXQgYWxy
ZWFkeSBleGlzdHMiX3MgfTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJUcmFuc2FjdGlvbj4oKnRoaXMsIGluZm8pOwor
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQlRyYW5z
YWN0aW9uPigqdGhpcywgaW5mbyk7CiAKICAgICBhdXRvIGVycm9yID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS0+YmVnaW4oKm1fc3FsaXRlREIpOwogICAgIGlmIChlcnJvci5pc051bGwoKSAm
JiBpbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKLSAg
ICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9v
cmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2UgPSBtYWtlVW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJbmZvKTsKIAogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQg
c3FsKCptX3NxbGl0ZURCLCAiVVBEQVRFIElEQkRhdGFiYXNlSW5mbyBTRVQgdmFsdWUgPSA/IHdo
ZXJlIGtleSA9ICdEYXRhYmFzZVZlcnNpb24nOyJfcyk7CiAgICAgICAgIGlmIChzcWwucHJlcGFy
ZSgpICE9IFNRTElURV9PSwpAQCAtMjY2Miw3ICsyNjYyLDcgQEAgU1FMaXRlU3RhdGVtZW50KiBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmNhY2hlZFN0YXRlbWVudChTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OlMKICAgICB9CiAKICAgICBpZiAobV9zcWxpdGVEQikgewotICAgICAgICBtX2NhY2hlZFN0
YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FM
aXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKKyAgICAgICAgbV9jYWNoZWRT
dGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBtYWtlVW5pcXVlPFNRTGl0ZVN0
YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0YXRlbWVudCk7CiAgICAgICAgIGlmIChtX2NhY2hlZFN0
YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXS0+cHJlcGFyZSgpICE9IFNRTElURV9P
SykKICAgICAgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNx
bCldID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IGY4NDA1YTc5
OGEzNjgxMGRjNTc2YWYxZTczYmNhZjUzMTAyMzdiYWYuLmM2YjNmZDk1M2EwZDUzYWMxNTY4ZTI4
NDhjYmM3OGExMmYxOTU3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC00Niw3ICs0Niw3
IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZmV0Y2hMaW1pdCA9IDg7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FMaXRl
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQog
ewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRy
YW5zYWN0aW9uLCBpbmZvKTsKKyAgICBhdXRvIGN1cnNvciA9IG1ha2VVbmlxdWU8U1FMaXRlSURC
Q3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7CiAKICAgICBpZiAoIWN1cnNvci0+ZXN0YWJsaXNo
U3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTksNyArNTksNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3Jl
YXRlKFNRTGl0ZUlEQlRyYW5zYWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29y
PiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlQmFja2luZ1N0b3JlQ3Vyc29yKFNRTGl0ZUlE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgdWludDY0X3Qgb2JqZWN0U3RvcmVJRCwg
Y29uc3QgdWludDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsK
LSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFuZ2UpOworICAgIGF1dG8gY3Vyc29y
ID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlE
LCBpbmRleElELCByYW5nZSk7CiAKICAgICBpZiAoIWN1cnNvci0+ZXN0YWJsaXNoU3RhdGVtZW50
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk5LDcgKzE5OSw3IEBAIGJvb2wgU1FM
aXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiAg
ICAgQVNTRVJUKCFtX2N1cnJlbnRVcHBlcktleS5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fdHJh
bnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCkpOwogCi0gICAgbV9zdGF0ZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNh
Y3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsKKyAgICBtX3N0YXRlbWVudCA9IG1ha2VVbmlxdWU8
U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRh
YmFzZSgpLCBzcWwpOwogCiAgICAgaWYgKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRF
X09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVt
ZW50IChwcmVwYXJlL2lkKSAtICclcyciLCBtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlv
bigpLT5kYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCBTUUxp
dGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5l
eHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY3Vyc29yVHlw
ZSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZhbHVlKQotICAgICAgICAgICAgcmVj
b3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVE
YXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBh
dGhzKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZh
bHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9i
VVJMcywgYmxvYkZpbGVQYXRocyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFkZXNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpLCByZWNvcmQucmVj
b3JkLnByaW1hcnlLZXkpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNl
cmlhbGl6ZSB2YWx1ZSBkYXRhIGZyb20gZGF0YWJhc2Ugd2hpbGUgYWR2YW5jaW5nIGluZGV4IGN1
cnNvciIpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQg
U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAKICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBvYmplY3RTdG9y
ZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5RGF0YSk7Ci0gICAgICAgICAg
ICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJWYWx1ZT4oVGhyZWFk
U2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSk7CisgICAgICAgICAgICBy
ZWNvcmQucmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0ID09IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0
IHRoZSByZWNvcmQgd2UncmUgdHJ5aW5nIHRvIHJldHJpZXZlIGhhcyBiZWVuIHJlbW92ZWQgZnJv
bSB0aGUgb2JqZWN0IHN0b3JlLgogICAgICAgICAgICAgLy8gU2tpcCBvdmVyIGl0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYTZhM2M1ZmZmMzM4MGMyNWVmNzM2MWU2ODhi
ZWYzNmMwNjE1ZmM4My4uZDIxMmRlMmI2Yjg4YWZmZTBhMzViMGZkMGZkMzNmYzg2N2NlY2JkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpiZWdpbihTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2Up
CiB7CiAgICAgQVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKIAotICAgIG1fc3FsaXRlVHJh
bnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihkYXRhYmFzZSwg
bV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKKyAgICBtX3Nx
bGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4oZGF0YWJhc2Us
IG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgbV9z
cWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4oKTsKIAogICAgIGlmIChtX3NxbGl0ZVRyYW5zYWN0aW9u
LT5pblByb2dyZXNzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCA3MzA0OTc0NDIw
ZmY0NmZkZjJlYTk2NzliNmQ1YjViN2U2OWJmZGVjLi41N2I3N2MwMTI1OGZkNWQ0OWY3MDU4ZmVi
YmQ1ODUzNzQzYzJkYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTQzNCw3ICs0
MzQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVCYWNraW5nU3RvcmUodWlu
dDY0X3QgZGVsZXRlZFZlcnNpb24pCiAgICAgLy8gd2Ugd29uJ3QgaGF2ZSBhIG1fbW9zdFJlY2Vu
dERlbGV0ZWREYXRhYmFzZUluZm8uIEluIHRoYXQgY2FzZSwgd2UnbGwgbWFudWZhY3R1cmUgb25l
IHVzaW5nIHRoZQogICAgIC8vIHBhc3NlZCBpbiBkZWxldGVkVmVyc2lvbiBhcmd1bWVudC4KICAg
ICBpZiAoIW1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8pCi0gICAgICAgIG1fbW9zdFJl
Y2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBkZWxldGVkVmVyc2lvbik7CisgICAgICAg
IG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBkZWxldGVkVmVyc2lvbik7CiAKICAg
ICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdCkgewogICAgICAgICBtX2N1cnJlbnRPcGVuREJS
ZXF1ZXN0LT5ub3RpZnlEaWREZWxldGVEYXRhYmFzZSgqbV9tb3N0UmVjZW50RGVsZXRlZERhdGFi
YXNlSW5mbyk7CkBAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
T3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8sIGNvbnN0IEkKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5p
cXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUiKTsKICAgICAKLSAgICBtX2RhdGFi
YXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICBt
X2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICBt
X2JhY2tpbmdTdG9yZU9wZW5FcnJvciA9IGVycm9yOwogCiAgICAgQVNTRVJUKG1faXNPcGVuaW5n
QmFja2luZ1N0b3JlKTsKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID09IHRyYW5zYWN0
aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24g
fHwgJm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5kYXRhYmFzZUNvbm5lY3Rpb24oKSA9PSBt
X3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24pOwogICAgICAgICBBU1NFUlQobV92ZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwotICAgICAgICBt
X2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOworICAgICAgICBt
X2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwogICAgIH0KIAogICAgIElE
QkVycm9yIHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkID8gdHJhbnNhY3Rpb24tPnJlc3VsdCgpIDogZXJy
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
ZjE3YTRlNTUyM2ZiNWY2MWIwMjZhMDkxNDdmODE0MWQ1YjY0MTM5YS4uODU0MGNhNzg2ZDU3MzU4
ZDk4MmM3M2U2NDYwZjdmOGYwYTg4MzQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNTEsNyArNTEsNyBAQCBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubgogICAgIEFTU0VSVChkYXRhYmFzZSk7CiAKICAgICBpZiAobV90cmFuc2FjdGlvbkluZm8u
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkKLSAgICAgICAgbV9v
cmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihk
YXRhYmFzZS0+aW5mbygpKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VV
bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygpKTsKIAogICAgIGlmIChhdXRv
KiBzZXJ2ZXIgPSBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+c2VydmVyKCkpCiAgICAgICAgIHNlcnZl
ci0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAppbmRleCBi
MTBkODQwOTliMjUyOGU2ZjczYzI4YjE1MDRhOGE5MzI0ZDBiMjFhLi4yMTY0MTZhZmExMWNmMjU1
ZDM2ZGVmYjNlZmYzNmVmYWYxOTU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKCkKIAogSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBj
b25uZWN0aW9uUHJveHksIGNvbnN0IElEQk9wZW5EQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgOiBt
X3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25Qcm94eS5zZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5p
cXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVjdGlvblByb3h5LCByZXF1ZXN0KSkKKyAg
ICAsIG1fcmVxdWVzdElkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KGNvbm5lY3Rpb25Qcm94eSwgcmVxdWVzdCkpCiAgICAgLCBtX2RhdGFiYXNlSWRlbnRpZmllcihy
ZXF1ZXN0LmRhdGFiYXNlSWRlbnRpZmllcigpKQogICAgICwgbV9yZXF1ZXN0ZWRWZXJzaW9uKHJl
cXVlc3QudmVyc2lvbigpKQogICAgICwgbV9yZXF1ZXN0VHlwZShyZXF1ZXN0LnJlcXVlc3RUeXBl
KCkpCkBAIC00OSw4ICs0OSw4IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25z
dCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByCiAKIElEQlJlcXVl
c3REYXRhOjpJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBv
cGVyYXRpb24pCiAgICAgOiBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKG9wZXJhdGlvbi50
cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkuY29ubmVjdGlvblByb3h5KCkuc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIoKSkKLSAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpKQotICAgICwg
bV90cmFuc2FjdGlvbklkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50
aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgLCBtX3JlcXVl
c3RJZGVudGlmaWVyKG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24u
aWRlbnRpZmllcigpKSkKKyAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
KQogICAgICwgbV9vYmplY3RTdG9yZUlkZW50aWZpZXIob3BlcmF0aW9uLm9iamVjdFN0b3JlSWRl
bnRpZmllcigpKQogICAgICwgbV9pbmRleElkZW50aWZpZXIob3BlcmF0aW9uLmluZGV4SWRlbnRp
ZmllcigpKQogewpAQCAtNTgsNyArNTgsNyBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERh
dGEoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgICAgICBt
X2luZGV4UmVjb3JkVHlwZSA9IG9wZXJhdGlvbi5pbmRleFJlY29yZFR5cGUoKTsKIAogICAgIGlm
IChvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKQotICAgICAgICBtX2N1cnNvcklkZW50aWZp
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlvbi5j
dXJzb3JJZGVudGlmaWVyKCkpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5p
cXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkp
OwogfQogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERh
dGEmIG90aGVyKQpAQCAtNzEsMTEgKzcxLDExIEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0
RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgb3RoZXIpCiAgICAgLCBtX3JlcXVlc3RUeXBlKG90
aGVyLm1fcmVxdWVzdFR5cGUpCiB7CiAgICAgaWYgKG90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIp
Ci0gICAgICAgIG1fcmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291
cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtX3Jl
cXVlc3RJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhl
ci5tX3JlcXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIubV90cmFuc2FjdGlvbklkZW50
aWZpZXIpCi0gICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7
CisgICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKG90
aGVyLm1fY3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1cnNvcklkZW50
aWZpZXIpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291
cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAKIElEQlJlcXVl
c3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgdGhhdCwgSXNvbGF0
ZWRDb3B5VGFnKQpAQCAtMTAyLDExICsxMDIsMTEgQEAgdm9pZCBJREJSZXF1ZXN0RGF0YTo6aXNv
bGF0ZWRDb3B5KGNvbnN0IElEQlJlcXVlc3REYXRhJiBzb3VyY2UsIElEQlJlcXVlc3REYXRhJgog
ICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSWRlbnRpZmllciA9IHNvdXJjZS5tX2RhdGFi
YXNlSWRlbnRpZmllci0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBpZiAoc291cmNlLm1fcmVxdWVz
dElkZW50aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVxdWVzdElkZW50aWZpZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3JlcXVlc3RJ
ZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IG1h
a2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50aWZp
ZXIpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIGRl
c3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAg
ICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAg
ICBpZiAoc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9j
dXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+
KCpzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9jdXJz
b3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2Uu
bV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogdWludDY0X3QgSURCUmVxdWVzdERhdGE6OnNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKaW5kZXggNDVjZmZh
ZWE2MDNhNTNiNTk5MDRjOGIxNGI3YTFkZWY3ZDI1ZjMxMC4uNDA4YjRlNDYyODczMzdiOWFjMzQ0
YWZiZjQ2OTE1ODY4ZTgwZjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKQEAgLTE1Niw3ICsxNTYsNyBA
QCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJl
c291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9yZXF1ZXN0SWRlbnRpZmllciA9IFdU
Rk1vdmUob2JqZWN0KTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVu
dGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0
ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHJlcXVlc3QubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0x
NzQsNyArMTc0LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFz
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVz
b3VyY2VJZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3Qp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fY3Vyc29ySWRl
bnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAppbmRleCBhODk0NTRl
NmU2M2Y2ZWI3Y2I1MDM4YjljOTMyZmEyMTg2MzNlZGM2Li40Y2JkNWQ5YmRmMGE4NTIzYmY3ZjUy
YWM1YmM1Y2I0YjdlZDEwNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC01NywxNSArNTcsMTUg
QEAgSURCUmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiBvdGhl
cikKICAgICAsIG1fcmVzdWx0SW50ZWdlcihvdGhlci5tX3Jlc3VsdEludGVnZXIpCiB7CiAgICAg
aWYgKG90aGVyLm1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIubV9kYXRhYmFzZUluZm8pOworICAg
ICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIu
bV9kYXRhYmFzZUluZm8pOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSW5mbykKLSAgICAg
ICAgbV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5m
bz4oKm90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbkluZm8g
PSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90aGVyLm1fdHJhbnNhY3Rpb25JbmZv
KTsKICAgICBpZiAob3RoZXIubV9yZXN1bHRLZXkpCi0gICAgICAgIG1fcmVzdWx0S2V5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOworICAgICAgICBt
X3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKm90aGVyLm1fcmVzdWx0S2V5KTsK
ICAgICBpZiAob3RoZXIubV9nZXRSZXN1bHQpCi0gICAgICAgIG1fZ2V0UmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3VsdCk7CisgICAgICAgIG1f
Z2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3VsdCk7
CiAgICAgaWYgKG90aGVyLm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBtX2dldEFsbFJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqb3RoZXIubV9nZXRBbGxSZXN1bHQp
OworICAgICAgICBtX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigq
b3RoZXIubV9nZXRBbGxSZXN1bHQpOwogfQogCiBJREJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRh
KGNvbnN0IElEQlJlc3VsdERhdGEmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTg3LDE1ICs4
NywxNSBAQCB2b2lkIElEQlJlc3VsdERhdGE6Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXN1bHRE
YXRhJiBzb3VyY2UsIElEQlJlc3VsdERhdGEmIGRlcwogICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0
SW50ZWdlciA9IHNvdXJjZS5tX3Jlc3VsdEludGVnZXI7CiAKICAgICBpZiAoc291cmNlLm1fZGF0
YWJhc2VJbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fZGF0YWJhc2VJbmZvLCBJREJEYXRh
YmFzZUluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJ
bmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8s
IElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fdHJhbnNh
Y3Rpb25JbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqc291cmNlLm1fdHJhbnNhY3Rpb25JbmZv
LCBJREJUcmFuc2FjdGlvbkluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9u
Lm1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3Vy
Y2UubV90cmFuc2FjdGlvbkluZm8sIElEQlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsK
ICAgICBpZiAoc291cmNlLm1fcmVzdWx0S2V5KQotICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3Vs
dEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwg
SURCS2V5RGF0YTo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRL
ZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCpzb3VyY2UubV9yZXN1bHRLZXksIElEQktleURh
dGE6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX2dldFJlc3VsdCkKLSAgICAgICAg
ZGVzdGluYXRpb24ubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4o
KnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0UmVzdWx0OjpJc29sYXRlZENvcHkpOworICAgICAg
ICBkZXN0aW5hdGlvbi5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigqc291
cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNv
dXJjZS5tX2dldEFsbFJlc3VsdCkKLSAgICAgICAgZGVzdGluYXRpb24ubV9nZXRBbGxSZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKnNvdXJjZS5tX2dldEFsbFJlc3Vs
dCwgSURCR2V0QWxsUmVzdWx0OjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5t
X2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0
QWxsUmVzdWx0LCBJREJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiB9CiAKIElEQlJlc3Vs
dERhdGEgSURCUmVzdWx0RGF0YTo6ZXJyb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQpAQCAtMTExLDcgKzExMSw3
IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vzcyhjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlCiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBy
ZXF1ZXN0SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRUeXBlOjpP
cGVuRGF0YWJhc2VTdWNjZXNzOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUlu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlvbi5kYXRhYmFz
ZSgpLT5pbmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURC
RGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCktPmluZm8oKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMTIxLDE1ICsxMjEsMTUgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1
bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmkKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVlc3RJZGVudGlmaWVyIH07CiAgICAg
cmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQ7
CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9u
LmRhdGFiYXNlQ29ubmVjdGlvbigpLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQubV9kYXRhYmFz
ZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0
YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5mbygpKTsKLSAgICByZXN1bHQubV90cmFu
c2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4odHJhbnNh
Y3Rpb24uaW5mbygpKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2Uo
KS0+aW5mbygpKTsKKyAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElE
QlRyYW5zYWN0aW9uSW5mbz4odHJhbnNhY3Rpb24uaW5mbygpKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFiYXNlU3VjY2Vz
cyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJ
REJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQge0lEQlJl
c3VsdFR5cGU6OkRlbGV0ZURhdGFiYXNlU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAg
ICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oaW5mbyk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KGluZm8pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3MSwyMSArMTcx
LDIxIEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cmVuYW1lSW5kZXhTdWNjZXNzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERh
dGE6OnB1dE9yQWRkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiByZXN1bHRLZXkpCiB7CiAgICAgSURCUmVzdWx0
RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpQdXRPckFkZFN1Y2Nlc3MsIHJlcXVlc3RJZGVu
dGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJL
ZXlEYXRhPihyZXN1bHRLZXkpOworICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8
SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1
bHREYXRhIElEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1
bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRSZWNv
cmRTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5t
X2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0QWxsUmVj
b3Jkc1N1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgSURCR2V0QWxsUmVzdWx0JiBnZXRBbGxSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0
RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcywgcmVxdWVz
dElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRBbGxS
ZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMDQsMTQgKzIwNCwxNCBAQCBJREJSZXN1bHREYXRhIElE
QlJlc3VsdERhdGE6OmRlbGV0ZVJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZQogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vzcyhj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJH
ZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJl
c3VsdFR5cGU6Ok9wZW5DdXJzb3JTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJl
c3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1
bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pihn
ZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVz
dWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAg
ICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29yU3Vj
Y2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRS
ZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAppbmRleCA3MTdiM2UyZGU1M2IzNTNmZWI2ZGQ3NTUw
MGEwZTVlNjhjOTQ3YTNmLi42MjA2MmExZTI5NWY3YjU5ODE1ODk1YjU3YmVjMDA4ZTViMTg3NmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
UmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXN1bHREYXRhLmgKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIGF1dG8gb2Jq
ZWN0ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
ICAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xOTMsNyAr
MTkzLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4g
SURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09i
amVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNh
Y3Rpb25JbmZvPigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCVHJhbnNh
Y3Rpb25JbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fdHJhbnNhY3Rp
b25JbmZvID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0
byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCk7CisgICAgICAgIGF1dG8g
b2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigpOwogICAgICAgICBPcHRpb25hbDxJREJL
ZXlEYXRhPiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsKICAgICAgICAg
aWYgKCFvcHRpb25hbCkKQEAgLTIxNCw3ICsyMTQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0g
bWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Km9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1
bHQubV9nZXRSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMjMsNyArMjIzLDcgQEAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0
YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAg
ICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOwor
ICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gV1RGTW92ZShvYmpl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlRyYW5zYWN0aW9uSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAppbmRleCA5ODNjMWMxMWM5OWI0NWI2Y2U1
NDRkZmNhYzAzN2U0YzczNzI5NWMzLi40ZmI5OTkxOWY2N2Q1ZjdjOWFiYzEwOWUyZTMwMDBjY2U0
YzQ0MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcApAQCAtNTUsNyArNTUsNyBAQCBJ
REJUcmFuc2FjdGlvbkluZm8gSURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJzaW9uQ2hhbmdlKGNvbnN0
IElEQlNlcnZlcjo6SURCQ29ubmVjdAogICAgIElEQlRyYW5zYWN0aW9uSW5mbyByZXN1bHQoKElE
QlJlc291cmNlSWRlbnRpZmllcihjb25uZWN0aW9uKSkpOwogICAgIHJlc3VsdC5tX21vZGUgPSBJ
REJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2U7CiAgICAgcmVzdWx0Lm1fbmV3VmVyc2lv
biA9IG5ld1ZlcnNpb247Ci0gICAgcmVzdWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAg
IHJlc3VsdC5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KG9yaWdpbmFsRGF0YWJhc2VJbmZvKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02
Nyw3ICs2Nyw3IEBAIElEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0
IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAsIG1fb2JqZWN0U3RvcmVzKGluZm8ubV9v
YmplY3RTdG9yZXMpCiB7CiAgICAgaWYgKGluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAg
ICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9vcmlnaW5h
bERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqaW5mby5tX29yaWdp
bmFsRGF0YWJhc2VJbmZvKTsKIH0KIAogSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlv
bkluZm8oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiB0aGF0LCBJc29sYXRlZENvcHlUYWcpCkBA
IC05MSw3ICs5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25JbmZvOjppc29sYXRlZENvcHkoY29u
c3QgSURCVHJhbnNhY3Rpb25JbmZvJiBzb3VyY2UsIElEQlRyYW5zCiAgICAgICAgIGRlc3RpbmF0
aW9uLm1fb2JqZWN0U3RvcmVzLnVuY2hlY2tlZEFwcGVuZChvYmplY3RTdG9yZS5pc29sYXRlZENv
cHkoKSk7CiAKICAgICBpZiAoc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pCi0gICAgICAg
IGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0YWJhc2VJbmZvLCBJREJEYXRhYmFz
ZUluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFs
RGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CiB9CiAKICNpZiAh
TE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKaW5kZXggOTMwZDgwMjM2MTgyMzJh
YmY2YzA4MWRmMjEyOTU4ZmY2MmE1NTVlZC4uN2I5NDc3ZThlYzU1NGM5MTNkMmE0OGJlNTU4ZTE2
MzNkOTNmY2U5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaApAQCAtMTE5LDcgKzExOSw3IEBA
IGJvb2wgSURCVHJhbnNhY3Rpb25JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCVHJh
bnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFz
T2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG9iamVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0g
V1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCA4N2IxYWRj
ZDk2NjYyMDZlYzk3MTY2MDM2MmI0MGU1YWQ3ZDgwMWQxLi5jOTY4OTQ0NGZkMjI0MDJjZWQyMTEz
YjNiZmEwYjlhNTI2YzY3M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtNjEs
NyArNjEsNyBAQCBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNy
ZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogU3RvcmFnZVF1b3RhTWFuYWdlciog
SW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmln
aW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0b3Jh
Z2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0
X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0b3JhZ2VR
dW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3Qg
Y3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAg
ICAgICAgICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2Up
OwogICAgICAgICB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRp
ZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY4NzI1NzRlODVjMjQwODc3
MmIxZDExYTJlOGJjYjZkZDYwZGEyOTcuLmEzMWJhZGI1NGFjOTgxZTBlM2JhZGFmZTIwOTg3ODI5
ZDNmNzQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmls
aXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBAIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzJiBOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllczo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvCiB7CiAgICAgTmF2aWdh
dG9yTWVkaWFDYXBhYmlsaXRpZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllcyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFDYXBhYmls
aXRpZXM+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdh
dG9yTWVkaWFDYXBhYmlsaXRpZXM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUo
KSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2Vy
LmNwcAppbmRleCA1MGQwYmIwYjFlZDUzYTQzMjQ1OGQ5ZmI3MTM1NzBhZTBlY2EwZDA2Li5iOTc0
MzRjNGU2MjQ1ZDczY2NmMmQ2MjVhMGExYjAzZTEyOTBjYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmCiBN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9j
a1BpY2tlcigpCiB7CiAgICAgaWYgKCFtX3BpY2tlck92ZXJyaWRlKQotICAgICAgICBtX3BpY2tl
ck92ZXJyaWRlID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
az4oKnRoaXMpOworICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX3BpY2tlck92
ZXJyaWRlLmdldCgpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHVpbnQ2NF90IFdlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lv
bk1hCiAKICAgICBMT0coTWVkaWEsICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFj
a1RhcmdldFBpY2tlckNsaWVudCglcCArICVsbHUpIiwgJmNsaWVudCwgY29udGV4dElkKTsKIAot
ICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50U3RhdGU+KGNs
aWVudCwgY29udGV4dElkKSk7CisgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVuaXF1ZTxD
bGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCiAgICAgICAgIHNjaGVkdWxl
RGVsYXllZFRhc2soSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0Q2xpZW50c0NvbmZp
Z3VyYXRpb25UYXNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZDQxN2ExMjE2OTExMTIxNWQ1NDIyOTFlMDNjNTlkNWQ2
ZTdlYjNmNC4uN2NiYzZhMTMzNTFlMGQzMmNlMjU1YTliYWRjYjk3NDRkYWY0ZDQ0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAK
QEAgLTE3OCw5ICsxNzgsOSBAQCBNZWRpYVRpbWUgTWVkaWFTb3VyY2U6OmN1cnJlbnRUaW1lKCkg
Y29uc3QKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpi
dWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYnVmZmVyZWQgJiYgbV9hY3RpdmVTb3VyY2VC
dWZmZXJzLT5sZW5ndGgoKSAmJiBzdGQ6OmFsbF9vZihtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmJl
Z2luKCksIG1fYWN0aXZlU291cmNlQnVmZmVycy0+ZW5kKCksIFtdKGF1dG8mIGJ1ZmZlcikgeyBy
ZXR1cm4gIWJ1ZmZlci0+aXNCdWZmZXJlZERpcnR5KCk7IH0pKQotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKLSAg
ICBtX2J1ZmZlcmVkID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7Cisg
ICAgbV9idWZmZXJlZCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGZv
ciAoYXV0byYgc291cmNlQnVmZmVyIDogKm1fYWN0aXZlU291cmNlQnVmZmVycykKICAgICAgICAg
c291cmNlQnVmZmVyLT5zZXRCdWZmZXJlZERpcnR5KGZhbHNlKTsKIApAQCAtMTkwLDcgKzE5MCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZm
ZXJlZCgpIGNvbnN0CiAKICAgICAvLyAxLiBJZiBhY3RpdmVTb3VyY2VCdWZmZXJzLmxlbmd0aCBl
cXVhbHMgMCB0aGVuIHJldHVybiBhbiBlbXB0eSBUaW1lUmFuZ2VzIG9iamVjdCBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCiAgICAgaWYgKGFjdGl2ZVJhbmdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVk
KTsKIAogICAgIC8vIDIuIExldCBhY3RpdmUgcmFuZ2VzIGJlIHRoZSByYW5nZXMgcmV0dXJuZWQg
YnkgYnVmZmVyZWQgZm9yIGVhY2ggU291cmNlQnVmZmVyIG9iamVjdCBpbiBhY3RpdmVTb3VyY2VC
dWZmZXJzLgogICAgIC8vIDMuIExldCBoaWdoZXN0IGVuZCB0aW1lIGJlIHRoZSBsYXJnZXN0IHJh
bmdlIGVuZCB0aW1lIGluIHRoZSBhY3RpdmUgcmFuZ2VzLgpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgp
IGNvbnN0CiAKICAgICAvLyBSZXR1cm4gYW4gZW1wdHkgcmFuZ2UgaWYgYWxsIHJhbmdlcyBhcmUg
ZW1wdHkuCiAgICAgaWYgKCFoaWdoZXN0RW5kVGltZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCiAgICAgLy8g
NC4gTGV0IGludGVyc2VjdGlvbiByYW5nZXMgZXF1YWwgYSBUaW1lUmFuZ2Ugb2JqZWN0IGNvbnRh
aW5pbmcgYSBzaW5nbGUgcmFuZ2UgZnJvbSAwIHRvIGhpZ2hlc3QgZW5kIHRpbWUuCiAgICAgbV9i
dWZmZXJlZC0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgaGlnaGVzdEVuZFRpbWUpOwpAQCAt
MjIxLDcgKzIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlh
U291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgICAgIG1fYnVmZmVyZWQtPmludGVyc2VjdFdp
dGgoc291cmNlUmFuZ2VzKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZTo6
c2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCkBAIC0zNDQsNyArMzQ0LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OnNldExpdmVTZWVrYWJsZVJhbmdlKGRvdWJsZSBz
dGFydCwgZG91YmxlIGVuZCkKIAogICAgIC8vIFNldCBsaXZlIHNlZWthYmxlIHJhbmdlIHRvIGJl
IGEgbmV3IG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgY29udGFpbmluZyBhIHNpbmdsZSBy
YW5nZQogICAgIC8vIHdob3NlIHN0YXJ0IHBvc2l0aW9uIGlzIHN0YXJ0IGFuZCBlbmQgcG9zaXRp
b24gaXMgZW5kLgotICAgIG1fbGl2ZVNlZWthYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGlt
ZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKKyAgICBtX2xpdmVTZWVrYWJsZSA9IG1ha2VVbmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQp
LCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7CiAKICAgICByZXR1cm4geyB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JNZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCmluZGV4IGU0MTgyNzgzOGQ2MmNhMzhmYzNiZjNiZTc4
ZjhmNGFhOGFlNTI1OTYuLjdiMzU4ZjVlMGRlNDJmYjIyNjhkMzY5MDNlNThkYjVlYjc4ZTkwZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgTmF2aWdhdG9yTWVk
aWFEZXZpY2VzKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0
b3IpCiB7CiAgICAgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nh
c3Q8TmF2aWdhdG9yTWVkaWFEZXZpY2VzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5h
dmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvck1lZGlh
RGV2aWNlcz4obmF2aWdhdG9yLT53aW5kb3coKSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3ItPndpbmRvdygp
KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHBy
b3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVu
dCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDhkN2U2M2NjNjA2ZDZkYTE5ZmJk
YjEyZGU1NGZiODU1ZmRmNjJjOTkuLjE0ZGYxMTYxZGFlNjhjYzQ2Y2I0OWVhYWUyMWY1ZWY5ODll
MmFjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBVc2VyTWVkaWFD
b250cm9sbGVyOjp+VXNlck1lZGlhQ29udHJvbGxlcigpCiAKIHZvaWQgcHJvdmlkZVVzZXJNZWRp
YVRvKFBhZ2UqIHBhZ2UsIFVzZXJNZWRpYUNsaWVudCogY2xpZW50KQogewotICAgIFVzZXJNZWRp
YUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFDb250cm9sbGVyOjpzdXBwbGVt
ZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xsZXI+KGNsaWVudCkp
OworICAgIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFDb250
cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xsZXI+
KGNsaWVudCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTZWN1cmUoRG9jdW1lbnRMb2Fk
ZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAKaW5kZXggYWFhNDAwMDIwNzM2NWZmY2JlNTI4MTI4ZTI4Y2UwMmY2
YzYwN2NkZC4uYzk4NWJjMTlhMzFkMDExNDU2NWFiYWJhNWYwNjBlZTUwZGE2MTE0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC02
OSw3ICs2OSw3IEBAIFJlZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXI6OmNoYW5uZWxFdmVudChTY3JpcHRFeGVjdXRpCiAgICAgaW5pdC5uZWdvdGlhdGVk
ID0gZGF0YUNoYW5uZWwtPm5lZ290aWF0ZWQoKTsKICAgICBpbml0LmlkID0gZGF0YUNoYW5uZWwt
PmlkKCk7CiAKLSAgICBhdXRvIGhhbmRsZXIgPSAgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5uZWwpKTsKKyAgICBhdXRvIGhhbmRs
ZXIgPSAgbWFrZVVuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0
YUNoYW5uZWwpKTsKICAgICBhdXRvIGNoYW5uZWwgPSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKGNv
bnRleHQsIFdURk1vdmUoaGFuZGxlciksIGZyb21TdGRTdHJpbmcobGFiZWwpLCBXVEZNb3ZlKGlu
aXQpKTsKIAogICAgIHJldHVybiBSVENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmRhdGFjaGFubmVsRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObywgV1RGTW92ZShjaGFubmVsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGRlZjFmOTFlZWU5ZWQ2ZWM3OGQxM2M2OWVjNDM0OGYw
YWE2OGQzNjcuLmQxYTc0Yjg1NzFiZWU3ZWU1ZTljMzE2MmVjYTJmNGQ2ZmY0MWU0NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0zOTcsNyArMzk3
LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXYKICAgICB9CiAgICAgfQogCi0gICAgcmVjZWl2
ZXItPnNldEJhY2tlbmQoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CisgICAgcmVjZWl2ZXItPnNldEJhY2tlbmQobWFr
ZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIp
KSk7CiAgICAgYXV0byYgdHJhY2sgPSByZWNlaXZlci0+dHJhY2soKTsKICAgICBhZGRQZW5kaW5n
VHJhY2tFdmVudChyZWNlaXZlci5yZWxlYXNlTm9uTnVsbCgpLCB0cmFjaywgcnRjU3RyZWFtcywg
bnVsbHB0cik7CiB9CkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBv
aW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKCkKICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3Rl
VHJhbnNjZWl2ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtl
VW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2Nl
aXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogfQogCkBAIC00OTksNyAr
NDk5LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFuc2NlaXZlcihydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2MKICAgICBpZiAoIXNvdXJjZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25uZWN0
aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFz
ZU5vbk51bGwoKSk7CiAKICAgICBhZGRQZW5kaW5nVHJhY2tFdmVudChtYWtlUmVmKG5ld1RyYW5z
Y2VpdmVyLnJlY2VpdmVyKCkpLCBuZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpLnRyYWNrKCksIHJ0
Y1JlY2VpdmVyLT5zdHJlYW1zKCksIG1ha2VSZWYobmV3VHJhbnNjZWl2ZXIpKTsKIH0KQEAgLTUz
NCw3ICs1MzQsNyBAQCBPcHRpb25hbDxMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcz4g
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZQogICAgIGlmICghcmVzdWx0Lm9r
KCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHRyYW5zY2VpdmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJlc3Vs
dC5Nb3ZlVmFsdWUoKSk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IG1ha2VVbmlxdWU8TGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92ZVZhbHVlKCkpOwogICAgIHJldHVy
biBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcyB7IHRyYW5zY2VpdmVyLT5jcmVhdGVT
ZW5kZXJCYWNrZW5kKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLCBXVEZNb3ZlKHNvdXJjZSkpLCB0
cmFuc2NlaXZlci0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCksIFdURk1vdmUodHJhbnNjZWl2ZXIp
IH07CiB9CiAKQEAgLTU4NSw3ICs1ODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaQogewog
ICAgIGZvciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX2JhY2tlbmQtPkdldFRyYW5zY2VpdmVycygp
KSB7CiAgICAgICAgIGlmICh0cmFuc2NlaXZlci0+c2VuZGVyKCkuZ2V0KCkgPT0gYmFja2VuZC5y
dGNTZW5kZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJh
bnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0Yzo6c2NvcGVkX3JlZnB0
cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2NlaXZlcikpOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTY1NCw3ICs2NTQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVE
YXRhQ2hhbm5lbAogewogICAgIGF1dG8gaW5pdCA9IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
cjo6ZnJvbVJUQ0RhdGFDaGFubmVsSW5pdChvcHRpb25zKTsKICAgICBhdXRvIGNoYW5uZWwgPSBt
X2JhY2tlbmQtPkNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLnV0ZjgoKS5kYXRhKCksICZpbml0KTsK
LSAgICByZXR1cm4gY2hhbm5lbCA/IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGNoYW5u
ZWwgPyBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFu
bmVsKSkgOiBudWxscHRyOwogfQogCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uRGF0
YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+
IGRhdGFDaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjA3ZjE1ZTY0NTdiOWRmY2FjMWMzMzllYTM5ZmVhMWQ3
Nzg1OWQ4Yi4uZmM5MWNjZDBiYmQxZmRiYmE3NjQyZTcwNGYzN2ZlODVjYzcyZmQ1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25C
YWNrZW5kPiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlCiAKICAgICBwYWdlLT5s
aWJXZWJSVENQcm92aWRlcigpLnNldEVuYWJsZVdlYlJUQ0VuY3J5cHRpb24ocGFnZS0+c2V0dGlu
Z3MoKS53ZWJSVENFbmNyeXB0aW9uRW5hYmxlZCgpKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24sIHBh
Z2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24sIHBhZ2UtPmxpYldlYlJUQ1By
b3ZpZGVyKCkpOwogfQogCiBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7
CkBAIC0zMTEsNyArMzExLDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpWaWRl
b1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmkKICAgICBhdXRvIHNv
dXJjZSA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1v
dmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJj
ZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxw
dHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENS
dHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAidmlkZW8i
X3MsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVs
bHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAg
bV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBA
IC0zMzQsNyArMzM0LDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRpb1Jl
Y2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXUKICAgICBhdXRvIHNvdXJj
ZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUo
dHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShz
b3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0
ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIp
OworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBU
cmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAiYXVkaW8iX3Ms
IHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0
cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgbV9w
ZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBAIC00
MDAsNyArNDAwLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8UlRDUnRwU2VuZGVyPiBmaW5kRXhp
c3RpbmdTZW5kZXIoY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHAKIEV4Y2VwdGlvbk9yPFJlZjxS
VENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1l
ZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzKQog
ewogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJU
Q1VuaWZpZWRQbGFuRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0
ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIp
OworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFtX2VuZHBvaW50LT5h
ZGRUcmFjaygqc2VuZGVyQmFja2VuZCwgdHJhY2ssIG1lZGlhU3RyZWFtSWRzKSkKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9z
IH07CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4g
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cgogICAgICAg
ICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLmtpbmQoKTsKICAgICAgICAgU3RyaW5n
IHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBz
ZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
PigqdGhpcywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBh
dXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBtYWtlUmVmKHRyYWNr
KSwgVmVjdG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tl
bmQpKTsKICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYWNrS2luZCwg
dHJhY2tJZCk7CiAgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6
Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShyZWNlaXZlciksIG51bGxwdHIpOwpA
QCAtNDcyLDcgKzQ3Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5FbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFN0cmluZyB7
IHRyYWNrS2luZCB9LCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpj
cmVhdGUoKnRoaXMsIFN0cmluZyh0cmFja0tpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3Zl
KHNlbmRlckJhY2tlbmQpKTsKICAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihXVEZN
b3ZlKG5ld1NlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgdHJhY2tL
aW5kKTsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNj
ZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdgogICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZp
ZWRQbGFuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRkVW5pZmllZFBsYW5UcmFuc2NlaXZl
cihXVEZNb3ZlKHRyYWNrKSwgaW5pdCk7CiAKLSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsK
KyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJh
Y2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvJiBiYWNrZW5kID0gKnNlbmRlckJhY2tl
bmQ7CiAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgdHJhY2su
Y29weVJlZigpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAg
ICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKGJhY2tlbmQsIHRyYWNrLCBWZWN0b3I8U3RyaW5n
PiB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cAppbmRleCA2ODUwZTZhODVlOTAyNGJiMTE0NWI2Yjk0MjI5YzBmNjE0MmRmN2FhLi42YWVlYTEz
Mzg5MmQyMDYzZjAzNTM5YjhlZWM0ZGI5YmNlNjRkN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQg
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBTZW5k
UGFyYW1ldGVycyYgcGFyYW1lCiAKIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVyQmFja2Vu
ZD4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRNRkJhY2tlbmQoKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPihtX3J0
Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJS
VENEVE1GU2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IGViODcxZWI3ZGIwMzg4NGY0Y2M3ZTBh
ZGVmNjg3ODJlMWMwOTcyZDcuLjVjMGQ3ZTk1ZTJmZDEyZTNmODRmMTdjZmJlYjZkODY3YTUxZjJl
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rk
Ojp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVSZWNlaXZlckJhY2tlbmQoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFuc2Nl
aXZlci0+cmVjZWl2ZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5yZWNlaXZlcigpKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFRyYW5zY2Vp
dmVyQmFja2VuZDo6Y3JlYXRlU2VuZGVyQmFja2VuZChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQmIGJhY2tlbmQsIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OlNvdXJjZSYmIHNvdXJj
ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPihiYWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3VyY2Up
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPihiYWNr
ZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3VyY2UpKTsKIH0KIAog
UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
OjpkaXJlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAwYzMyOGZhZTQ0MjM1OTkyNTMzMDcy
Yzg1ZDZiMzJmZGM2YzEzODM4Li4wZWJhZmY4OWZmYmM1MDAzZTI0NjFiYWRlZTUyMDM5MTE3MWNi
ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlv
bgogICAgICwgbV9ib2R5KG9wdGlvbnMuYm9keSkKICAgICAsIG1fdGFnKG9wdGlvbnMudGFnKQog
ICAgICwgbV9zdGF0ZShJZGxlKQotICAgICwgbV90YXNrVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxU
aW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKKyAgICAsIG1fdGFza1RpbWVyKG1ha2VVbmlx
dWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3coKTsgfSkpCiB7CiAgICAgaWYgKCFvcHRpb25zLmlj
b24uaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gaWNvblVSTCA9IGRvY3VtZW50LmNvbXBsZXRl
VVJMKG9wdGlvbnMuaWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYTYy
MDM1MzkzYzdmYjNmNmRkZjAxYzVjODlkNzRmM2I1ZWRkMmQ0NC4uZDQ4ZjIwNWE5ZTI0MTRlMDdk
NzIyZjkwMzI1YTdjMzY0ZDQ4OTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcApA
QCAtNTgsNyArNTgsNyBAQCBjb25zdCBjaGFyKiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBw
bGVtZW50TmFtZSgpCiAKIHZvaWQgcHJvdmlkZU5vdGlmaWNhdGlvbihQYWdlKiBwYWdlLCBOb3Rp
ZmljYXRpb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpw
cm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwg
c3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKKyAgICBO
b3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxOb3RpZmljYXRpb25Db250cm9sbGVy
PihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcAppbmRleCAwM2ZlOWUzODY3OGY0
MDUwNzMyNTUwOWMyMDM4NjdjOWNmODIwZmYxLi5jOThjOTk4NmRlZDZjZDIwNTQyNjE3MjE1ZjY1
MzZjZTU4ZjI3OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RP
TVdpbmRvd1F1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdp
bmRvd1F1b3RhLmNwcApAQCAtNTcsNyArNTcsNyBAQCBET01XaW5kb3dRdW90YSogRE9NV2luZG93
UXVvdGE6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93UXVvdGEqIHN1
cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dRdW90YSo+KFN1cHBsZW1lbnQ8RE9NV2lu
ZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1l
bnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01X
aW5kb3dRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVu
aXF1ZTxET01XaW5kb3dRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1
cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA3YmEx
ZDNkNGIzNjk0NDBjNjRlMTdkZDIwY2E5NDUzOGI4YWQ5Yjc0Li43YTA4MDQ1OTU2OTgzYTMxZjZk
ODM0ZWY3ZWE3NzJmYTY2NzM2YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5h
dmlnYXRvclN0b3JhZ2VRdW90YSogTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKE5hdmlnYXRv
ciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3VwcGxlbWVudCA9
IHN0YXRpY19jYXN0PE5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9y
Pjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1l
bnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZp
Z2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IG1ha2VVbmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRv
ciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9y
YWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0
b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDk1YzNlNDM2NDczMTYyYTUwZDYxYjVjZTc1MTY1ZWU2
OGIyMWI3MjcuLjFhMWM4NDdkYzQ5N2RjNjQ4NDVmNTZlY2U1OTI2M2E0MjZhZjYzMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFn
ZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmln
YXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV29ya2VyTmF2aWdhdG9yU3Rv
cmFnZVF1b3RhKiBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oV29ya2VyTmF2aWdh
dG9yKgogewogICAgIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3VwcGxlbWVudCA9IHN0
YXRpY19jYXN0PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8V29ya2Vy
TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAo
IXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3
aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAg
ICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggMzc5NTY1MjZmYmYyODY5
MGVjZjAzOTk1MmM1MmY2ZTA0NDZiY2I0Yy4uOTY5YzIzN2Y3YzgxNTUxNTNkZTA3MWVjOTZhNjFh
NGE0NjJkM2Y5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpmcm9tKERPTVdp
bmRvdyogd2luZG93KQogewogICAgIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyo+KFN1cHBsZW1lbnQ8RE9N
V2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBs
ZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3aW5kb3cpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRv
KHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5j
cHAKaW5kZXggNzJiNTYzZTRiYmY3ZGNlMDNmYTMwODgwZDJmYTc3MGI4OTg2OTNhNC4uZTdiNjJh
MWExN2JkOTZhOWY1YTEzZmQwOWU3NDlhYjRiY2UxOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC03Myw3ICs3Myw3IEBA
IHZvaWQgU3BlZWNoU3ludGhlc2lzOjp2b2ljZXNEaWRDaGFuZ2UoKQogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplciYgU3BlZWNoU3ludGhlc2lzOjplbnN1cmVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyKCkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcikKLSAgICAgICAg
bV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKKyAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKICAgICBy
ZXR1cm4gKm1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCA2
MmY2OGVjNjYzYTgwMjEyYzZmM2FmN2I4NWUyM2M2YjRmNzQyYTBhLi4yZjU0MjcyYWM1YzAxZDBh
MjMwZTVjMGRmMDQ1MjRhZmIyYTRlMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2
b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyhSZWY8QXJyYXlCdWZmZXI+JiYgYXVk
aW9EYXRhLCBmbG9hdCBzYW1wbGVSYQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
LSAgICBhdXRvIGRlY29kaW5nVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2RpbmdUYXNrPihX
VEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwg
V1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CisgICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBtYWtlVW5p
cXVlPERlY29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogICAgIG1fcXVldWUu
YXBwZW5kKFdURk1vdmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5vdGUgdGhhdCBvd25lcnNoaXAgb2Yg
dGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1ZXVlLgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKaW5k
ZXggYmMwMGViOWY4N2QxYmNkNThjYmY3NDliN2RhN2M0OTNjZjdlODg3Ni4uY2Y5MjY5YzMwNDRj
NDMyMmQ3NDRkMDYyOWRkYTBmYTg5NDkzZWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaApAQCAtNDIsNyArNDIsOCBAQCBj
bGFzcyBBdWRpb0J1ZmZlckNhbGxiYWNrOwogLy8gQXN5bmNBdWRpb0RlY29kZXIgYXN5bmNocm9u
b3VzbHkgZGVjb2RlcyBhdWRpbyBmaWxlIGRhdGEgZnJvbSBhbiBBcnJheUJ1ZmZlciBpbiBhIHdv
cmtlciB0aHJlYWQuCiAvLyBVcG9uIHN1Y2Nlc3NmdWwgZGVjb2RpbmcsIGEgY29tcGxldGlvbiBj
YWxsYmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUgZGVjb2RlZCBQQ00gZGF0YSBpbiBhbiBB
dWRpb0J1ZmZlci4KIAotY2xhc3MgQXN5bmNBdWRpb0RlY29kZXIgeworY2xhc3MgQXN5bmNBdWRp
b0RlY29kZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFzeW5jQXVkaW9EZWNvZGVyKTsKIHB1YmxpYzoKICAgICBBc3luY0F1
ZGlvRGVjb2RlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAppbmRleCBiYThjMjU1YWU3ZDdkYTcz
YmM5ZmY2NTU0M2YxZTM3YmM5NTQwNGIzLi4wZmI1NWIwOGYwYzFhMmJlMmQwNzBjNGUwZDhkOGY0
NjdlMzQ2YTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcApAQCAtNDAsOCArNDAsOCBAQCBBdWRp
b0Jhc2ljSW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCYXNpY0luc3BlY3Rvcik7Ci0gICAgYWRkSW5w
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgb3V0cHV0Q2hhbm5lbENv
dW50KSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwor
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgb3V0cHV0Q2hh
bm5lbENvdW50KSk7CiB9CiAKIC8vIFdlIG92ZXJyaWRlIHB1bGxJbnB1dHMoKSBhcyBhbiBvcHRp
bWl6YXRpb24gYWxsb3dpbmcgdGhpcyBub2RlIHRvIHRha2UgYWR2YW50YWdlIG9mIGluLXBsYWNl
IHByb2Nlc3NpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGJjMTg5YzA4Y2JlZmM3YzE5
NjA2NDY2YzA3NjhiOGZhNjM0YjE2YWIuLjBiOWYxY2VkODc0NWI1ZDk5OGRjMzhkNjM2ZTc5MGFi
ZmJlNmU5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCkBAIC00Miw4ICs0Miw4IEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiBBdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpCiB7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgMSkpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMp
KTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsK
IAogICAgIC8vIFRoZSBzdWJjbGFzcyBtdXN0IGNyZWF0ZSBtX3Byb2Nlc3Nvci4KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmNwcAppbmRleCA0MGFjMzJjNWM1NWMzZDMyZDBlMTRiNmE3ZDIyYjI0NjczOTBmNGJm
Li4yNTEwYzQwYTdmNjEyM2Q0YzdmYzJkNjQwYTkwYjRmMGE5OGU2ZjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlCiAgICAgbV9w
bGF5YmFja1JhdGUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInBsYXliYWNrUmF0ZSIs
IDEuMCwgLU1heFJhdGUsIE1heFJhdGUpOwogCiAgICAgLy8gRGVmYXVsdCB0byBtb25vLiAgQSBj
YWxsIHRvIHNldEJ1ZmZlcigpIHdpbGwgc2V0IHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxz
IHRvIHRoYXQgb2YgdGhlIGJ1ZmZlci4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5OTU2
YzE1ODYyMTg5YzcxNDI5Y2JjZmQ2MDA0MmYwMGM5OGJhZWY2Li5kNGNkYjc2NThjMGYzNWI1ZmM5
YTIyY2U4OThiY2IyYjk5ZWU0ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQXVkaW9Db250ZXh0
OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9sb2dJZGVudGlmaWVy
KHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUoc3Rk
OjptYWtlX3VuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQorICAgICwgbV9ldmVudFF1
ZXVlKG1ha2VVbmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKIHsKICAgICAvLyBBY2Nv
cmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmln
YXRlLgogICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5n
IGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0aG9kLgpAQCAtMTY2LDcgKzE2Niw3
IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90CiAjZW5kaWYKICAgICAsIG1faXNPZmZsaW5lQ29u
dGV4dCh0cnVlKQogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNy
ZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmlj
RXZlbnRRdWV1ZT4oKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8R2VuZXJp
Y0V2ZW50UXVldWU+KCp0aGlzKSkKIHsKICAgICBjb25zdHJ1Y3RDb21tb24oKTsKIApAQCAtNDMy
LDcgKzQzMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IEF1ZGlvQ29udGV4dDo6
Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlCiB2b2lkIEF1ZGlvQ29udGV4dDo6
ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKIHsKICAgICBpZiAoIW1fYXVkaW9EZWNvZGVyKQotICAg
ICAgICBtX2F1ZGlvRGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNBdWRpb0RlY29kZXI+
KCk7CisgICAgICAgIG1fYXVkaW9EZWNvZGVyID0gbWFrZVVuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rl
cj4oKTsKICAgICBtX2F1ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEp
LCBzYW1wbGVSYXRlKCksIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNh
bGxiYWNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggOTc1ODg3NTQ3NDdlMTUyNDgxODlm
NDk3MGM2ZDMzZTNjNmFlMWUxMS4uZDlhYmI5Nzc3YTlkMjVlZWFmMjQyZmY0ZmZmYzVlYzVlZjQ4
NmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQXVkaW9EZXN0aW5hdGlv
bk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmEKICAgICAsIG1fbXV0ZWQoZmFsc2UpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5
cGVEZXN0aW5hdGlvbik7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJ
bnB1dD4odGhpcykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRo
aXMpKTsKIH0KIAogQXVkaW9EZXN0aW5hdGlvbk5vZGU6On5BdWRpb0Rlc3RpbmF0aW9uTm9kZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRl
ck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJO
b2RlLmNwcAppbmRleCAxNjM3M2NlOTM3OGQzMjJmZGQ5YzI1M2Y5Yzc2ZDk2M2U2MTNjZDNiLi40
YTgyNTVlNmYwYWYwNzY3MTM4ZTQ2ODk4ZjhiNjM2YWIyZDc1NmU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVC
aXF1YWRGaWx0ZXIpOwogCiAgICAgLy8gSW5pdGlhbGx5IHNldHVwIGFzIGxvd3Bhc3MgZmlsdGVy
LgotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxCaXF1YWRQcm9jZXNzb3I+KGNv
bnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlx
dWU8QmlxdWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxzZSk7CiB9CiAK
IEJpcXVhZEZpbHRlclR5cGUgQmlxdWFkRmlsdGVyTm9kZTo6dHlwZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKaW5k
ZXggMGU0ZTM2ODViODJjZTQ3N2VjNGU1ODU0N2YxNmFkOGI3MGZjNzkwNC4uZTg0Yjk4MDM1Njcw
ZmIxZGNjMzI3MDk2NjNkMmIzOTA1NTJlNjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtNjIsNyArNjIsNyBAQCBC
aXF1YWRQcm9jZXNzb3I6On5CaXF1YWRQcm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9EU1BLZXJuZWw+IEJpcXVhZFByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiB9CiAKIHZvaWQgQmlxdWFkUHJvY2Vz
c29yOjpjaGVja0ZvckRpcnR5Q29lZmZpY2llbnRzKCkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lk
IEJpcXVhZFByb2Nlc3Nvcjo6Z2V0RnJlcXVlbmN5UmVzcG9uc2UoaW50IG5GcmVxdWVuY2llcywg
Y29uc3QgZmxvYXQqIGZyZXF1ZQogICAgIC8vIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggdGhl
IHByb2Nlc3NpbmcgcnVubmluZyBpbiB0aGUgYXVkaW8KICAgICAvLyB0aHJlYWQgb24gdGhlIG1h
aW4ga2VybmVscy4KICAgICAKLSAgICBhdXRvIHJlc3BvbnNlS2VybmVsID0gc3RkOjptYWtlX3Vu
aXF1ZTxCaXF1YWREU1BLZXJuZWw+KHRoaXMpOworICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBt
YWtlVW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CiAKICAgICByZXNwb25zZUtlcm5lbC0+
Z2V0RnJlcXVlbmN5UmVzcG9uc2UobkZyZXF1ZW5jaWVzLCBmcmVxdWVuY3lIeiwgbWFnUmVzcG9u
c2UsIHBoYXNlUmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAppbmRleCAyMGI4ZGExOWU1ZjQzOWNmZTU0
NTVmMDFkYzI5MDg3NDQ2YjIzYzA4Li5kZjUwZjI2ODczNjhhYTVjMzI5NTQxNDgxNTA3NzdhMDI5
MTczMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0No
YW5uZWxNZXJnZXJOb2RlLmNwcApAQCAtNTksOSArNTksOSBAQCBDaGFubmVsTWVyZ2VyTm9kZTo6
Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bgogCiAgICAgLy8gQ3JlYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlucHV0cy4KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkKLSAgICAgICAg
YWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgICAg
ICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiAKLSAgICBhZGRP
dXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBh
ZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAg
ICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA0NjM1NDk4YzAzNGM1OTMwYjRl
OGYyMjA4NmUxNGIyYjRiZDI5MTE3Li44MmY2OWEwNGY5OTkyNjFkNThjMTUyYmZjNjAyYTM2NjA5
NjA5MWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxTcGxpdHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKQEAgLTUwLDExICs1MCwxMSBAQCBDaGFubmVsU3BsaXR0
ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNwbGl0dGVyKTsK
IAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsK
KyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiAKICAgICAv
LyBDcmVhdGUgYSBmaXhlZCBudW1iZXIgb2Ygb3V0cHV0cyAoYWJsZSB0byBoYW5kbGUgdGhlIG1h
eGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIGZlZCB0byBhbiBpbnB1dCkuCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQotICAgICAgICBhZGRPdXRwdXQo
c3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICAgICAgYWRk
T3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAgICAgCiAgICAg
aW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Db252b2x2ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5jcHAKaW5kZXggMjM4MmRhYmNjOWM5OTI3Y2FjMzFkMzI3NWYyMjAzY2M4
ZjU4YTA5My4uZTM2Njc3Y2ZkNzQ1ZThiYmUwMmRhM2RjNGRkN2JhMWYxYTUzZGQ0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBA
IC01Miw4ICs1Miw4IEBAIENvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBl
Q29udm9sdmVyKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5w
dXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRw
dXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0
aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAy
KSk7CiAKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgogICAgIG1f
Y2hhbm5lbENvdW50ID0gMjsKQEAgLTE0Niw3ICsxNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBD
b252b2x2ZXJOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIqIGJ1ZmZlcikKIAogICAgIC8vIENy
ZWF0ZSB0aGUgcmV2ZXJiIHdpdGggdGhlIGdpdmVuIGltcHVsc2UgcmVzcG9uc2UuCiAgICAgYm9v
bCB1c2VCYWNrZ3JvdW5kVGhyZWFkcyA9ICFjb250ZXh0KCkuaXNPZmZsaW5lQ29udGV4dCgpOwot
ICAgIGF1dG8gcmV2ZXJiID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmI+KGJ1ZmZlckJ1cy5nZXQo
KSwgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzLCBNYXhGRlRTaXplLCAyLCB1c2VC
YWNrZ3JvdW5kVGhyZWFkcywgbV9ub3JtYWxpemUpOworICAgIGF1dG8gcmV2ZXJiID0gbWFrZVVu
aXF1ZTxSZXZlcmI+KGJ1ZmZlckJ1cy5nZXQoKSwgQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUlu
RnJhbWVzLCBNYXhGRlRTaXplLCAyLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcywgbV9ub3JtYWxpemUp
OwogCiAgICAgewogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRoIHByb2Nlc3MoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAppbmRleCA0MjY1YTAw
NzQ5ZWFmZmY2YTllMWI5ZDFkZGE2MGQ0ZGI3MDI4YjAzLi44MWJkN2QxOWIyN2U3NDFiNTBmNmY4
NGU1MWY3Y2UyNTU3ODAyYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWxheU5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGlubGluZSBEZWxheU5vZGU6OkRlbGF5
Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhE
CiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewog
ICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjpt
YWtlX3VuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVs
YXlUaW1lKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNv
bnRleHQsIHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJl
ZjxEZWxheU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCmluZGV4IGE3NWJhNmI3Yzky
ZTc0NDRjNjU2MDhlOGFlMThmOWQ1MDAwMjZhMDQuLjEwMzY2ZWY2ZWFmYjZjNDRkYjE5MTI3MWE5
OTVkOWU2ZDJhY2JhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIERlbGF5UHJvY2Vzc29yOjp+
RGVsYXlQcm9jZXNzb3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IERlbGF5
UHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PERlbGF5RFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWxheURTUEtl
cm5lbD4odGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUu
Y3BwCmluZGV4IGFhMGU0YTgwMTE5ZWJlZDlkZDM2OTZiM2ZhMTMwNWRkZjMyYmQwNTIuLjE0MDk2
ZDhmMGM1OTZhNTI5NzE2NjZlZjgyNjdhMDIzZmRiNDRiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNw
cApAQCAtNDYsOCArNDYsOCBAQCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcAogewogICAgIHNldE5v
ZGVUeXBlKE5vZGVUeXBlRHluYW1pY3NDb21wcmVzc29yKTsKIAotICAgIGFkZElucHV0KHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJPZk91dHB1dENo
YW5uZWxzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykp
OworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVs
dE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKIAogICAgIG1fdGhyZXNob2xkID0gQXVkaW9QYXJh
bTo6Y3JlYXRlKGNvbnRleHQsICJ0aHJlc2hvbGQiLCAtMjQsIC0xMDAsIDApOwogICAgIG1fa25l
ZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAia25lZSIsIDMwLCAwLCA0MCk7CkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOyAgICAKLSAgICBt
X2R5bmFtaWNzQ29tcHJlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8RHluYW1pY3NDb21wcmVzc29y
PihzYW1wbGVSYXRlKCksIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBtX2R5
bmFtaWNzQ29tcHJlc3NvciA9IG1ha2VVbmlxdWU8RHluYW1pY3NDb21wcmVzc29yPihzYW1wbGVS
YXRlKCksIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIH0KIAogdm9pZCBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlOjp1bmluaXRpYWxpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCA2Yzk0YTUyM2MzYjJhMDIxMmIyYTU0YTFhOWM4
ZjAyNmJiZDFkYjVmLi4yNTdkZjJlY2UyMzM4Y2JjYmFiOWVkMDUxMjMzYzY0YjFjNTdmMjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcApAQCAtNDYs
OCArNDYsOCBAQCBHYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQogCiAgICAgbV9nYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQs
ICJnYWluIiwgMS4wLCAwLjAsIDEuMCk7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91
dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuY3BwCmluZGV4IDM4MWFlNzI3OTRmYjBlN2ZlYTYzMzFhYmQzM2IyMGMxNTg0NWZm
OWIuLjkxMmU2ZWIyMzIxNDU2NDNkNmZkYWZiYzExZTk2NzY0YzNkMmY1ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LAogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2UpOwog
CiAgICAgLy8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdlIGRlcGVuZGluZyBv
biB3aGF0IHRoZSBtZWRpYSBlbGVtZW50IC5zcmMgaXMgc2V0IHRvLgotICAgIGFkZE91dHB1dChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFkZE91dHB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgaW5pdGlhbGl6
ZSgpOwogfQpAQCAtODksNyArODksNyBAQCB2b2lkIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyYwogCiAgICAg
ICAgIGlmIChzb3VyY2VTYW1wbGVSYXRlICE9IHNhbXBsZVJhdGUoKSkgewogICAgICAgICAgICAg
ZG91YmxlIHNjYWxlRmFjdG9yID0gc291cmNlU2FtcGxlUmF0ZSAvIHNhbXBsZVJhdGUoKTsKLSAg
ICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNdWx0
aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAg
ICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0aUNoYW5uZWxS
ZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIEJ5cGFzcyByZXNhbXBsaW5nLgogICAgICAgICAgICAgbV9tdWx0
aUNoYW5uZWxSZXNhbXBsZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApp
bmRleCA1YjJhNTAwZGQyOTRkMTA1NThiYzdhMDhjZjc3MTZlNDI2YjVjMmFjLi5lNDNmNTQ0OGJj
MjZiODZhZjY5M2QwMDk5OTVjNjczNGY2OTU1ZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZQogICAgIGF1ZGlv
U291cmNlUHJvdmlkZXItPnNldENsaWVudCh0aGlzKTsKICAgICAKICAgICAvLyBEZWZhdWx0IHRv
IHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSBmb3JtYXQgb2YgdGhl
IE1lZGlhU3RyZWFtJ3MgYXVkaW8gdHJhY2suCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8
QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CkBAIC05
Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmNlCiAgICAgICAgIG1fbXVsdGlDaGFu
bmVsUmVzYW1wbGVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKICAgICAgICAgZG91YmxlIHNjYWxl
RmFjdG9yID0gc291cmNlU2FtcGxlUmF0ZSAvIHNhbXBsZVJhdGU7Ci0gICAgICAgIG1fbXVsdGlD
aGFubmVsUmVzYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNdWx0aUNoYW5uZWxSZXNhbXBsZXI+
KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9tdWx0aUNoYW5uZWxS
ZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3Is
IG51bWJlck9mQ2hhbm5lbHMpOwogICAgIH0KIAogICAgIG1fc291cmNlTnVtYmVyT2ZDaGFubmVs
cyA9IG51bWJlck9mQ2hhbm5lbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDViNTAyOWJmYmNlNzdhZDViNmMzYzg4MzI2
MGRiOWRlZmRmNjEwNGIuLmE5OWNlYWFkNmI1YzIxZTA5ZGQyMjUzYzJhY2YzMDQ1NTQ3NTNlN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIE9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgc2V0VHlwZShtX3R5
cGUpOwogCiAgICAgLy8gQW4gb3NjaWxsYXRvciBpcyBhbHdheXMgbW9uby4KLSAgICBhZGRPdXRw
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRP
dXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGluaXRp
YWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5v
ZGUuY3BwCmluZGV4IGY2NDc0NjllMjM1NWViM2EwYzA5YjNiMDg1MmJmYmVjNmU0OGQyOGQuLjUx
YzY5OTE2ZmZkZTcwZjVlNjgwYWE5MjdjZWZlZjdjYTczMmMzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtNTgsOCArNTgsOCBAQCBQ
YW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICAvLyBMb2FkIHRoZSBIUlRGIGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5IHNvIHdl
IGRvbid0IGJsb2NrIHRoZSBKYXZhc2NyaXB0IHRocmVhZCB3aGlsZSBjcmVhdGluZyB0aGUgSFJU
RiBkYXRhYmFzZS4KICAgICBtX2hydGZEYXRhYmFzZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRl
cjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoY29udGV4dC5zYW1wbGVS
YXRlKCkpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4o
dGhpcywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMp
KTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsK
IAogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFu
bmVsQ291bnQgPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9QZXJpb2RpY1dhdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJp
b2RpY1dhdmUuY3BwCmluZGV4IGJiMmEwN2QyMzU0ZWJhZjk0ZDAwNDY1YTRiNDFkODYwNTU1OTk4
NmIuLmVjOWExN2M0ZjU2ZWI5OTY2ZGMxNzYyN2U5MzQwNWJhMWZkNDhjNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKQEAgLTE5Miw3
ICsxOTIsNyBAQCB2b2lkIFBlcmlvZGljV2F2ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMoY29u
c3QgZmxvYXQqIHJlYWxEYXRhLCBjb25zdCBmbG9hdCogaQogICAgICAgICByZWFsUFswXSA9IDA7
CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBiYW5kLWxpbWl0ZWQgdGFibGUuCi0gICAgICAgIG1f
YmFuZExpbWl0ZWRUYWJsZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5
PihtX3BlcmlvZGljV2F2ZVNpemUpKTsKKyAgICAgICAgbV9iYW5kTGltaXRlZFRhYmxlcy5hcHBl
bmQobWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVyaW9kaWNXYXZlU2l6ZSkpOwogCiAg
ICAgICAgIC8vIEFwcGx5IGFuIGludmVyc2UgRkZUIHRvIGdlbmVyYXRlIHRoZSB0aW1lLWRvbWFp
biB0YWJsZSBkYXRhLgogICAgICAgICBmbG9hdCogZGF0YSA9IG1fYmFuZExpbWl0ZWRUYWJsZXNb
cmFuZ2VJbmRleF0tPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCmluZGV4IDNiNjI4MWQxZTg0M2VkMjk5Y2Y2MTUz
YzczMjc5NzA3NDE4MDY3NzguLjgwMjM3MzQwN2Y3NWQ0N2UyNTllYjYwNTYzODBmNjM1ZjEzYWNl
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVB
bmFseXNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGlt
ZUFuYWx5c2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBSZWFsdGltZUFuYWx5c2VyOjpSZWFsdGlt
ZUFuYWx5c2VyKCkKICAgICAsIG1fbWluRGVjaWJlbHMoRGVmYXVsdE1pbkRlY2liZWxzKQogICAg
ICwgbV9tYXhEZWNpYmVscyhEZWZhdWx0TWF4RGVjaWJlbHMpCiB7Ci0gICAgbV9hbmFseXNpc0Zy
YW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOworICAgIG1f
YW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KERlZmF1bHRGRlRTaXplKTsKIH0K
IAogUmVhbHRpbWVBbmFseXNlcjo6flJlYWx0aW1lQW5hbHlzZXIoKSA9IGRlZmF1bHQ7CkBAIC04
Myw3ICs4Myw3IEBAIGJvb2wgUmVhbHRpbWVBbmFseXNlcjo6c2V0RmZ0U2l6ZShzaXplX3Qgc2l6
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fZmZ0U2l6ZSAhPSBzaXplKSB7
Ci0gICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KHNp
emUpOworICAgICAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihzaXpl
KTsKICAgICAgICAgLy8gbV9tYWduaXR1ZGVCdWZmZXIgaGFzIHNpemUgPSBmZnRTaXplIC8gMiBi
ZWNhdXNlIGl0IGNvbnRhaW5zIGZsb2F0cyByZWR1Y2VkIGZyb20gY29tcGxleCB2YWx1ZXMgaW4g
bV9hbmFseXNpc0ZyYW1lLgogICAgICAgICBtX21hZ25pdHVkZUJ1ZmZlci5hbGxvY2F0ZShzaXpl
IC8gMik7CiAgICAgICAgIG1fZmZ0U2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCBkNTlk
ZWNmOTk1MTZmNmQwMWFmOWMxZDlmZGJmMWQwYjEwMTllNDBmLi5kNWIzYWZiZjI3MTAxNDUxNDk0
YjE4OTM3NzY4YjYwNWY2YTNiNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTY4LDggKzY4LDggQEAg
U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUKICAgICBBU1NFUlQobnVtYmVyT2ZJbnB1dENoYW5uZWxz
IDw9IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKTsKIAogICAgIHNldE5vZGVU
eXBlKE5vZGVUeXBlSmF2YVNjcmlwdCk7Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOworICAgIGFkZElu
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsK
IAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCmluZGV4IDQxMGQxZGFmNWM4OTU0
MDA5ZmYwNjM2YTgyOTAwYmY5NGFmNGY4ZjEuLmYzZDIxMjJkZjUxYzRmMWEyOTIyNGU2OTNhYjQ5
NWJiYzJiOTM4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcApAQCAtNDksMTIgKzQ5LDEyIEBAIHZvaWQgV2F2
ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUluaXRpYWxpemVPdmVyc2FtcGxpbmcoKQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fdGVtcEJ1ZmZlcikgewotICAgICAgICBt
X3RlbXBCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5n
UXVhbnR1bSAqIDIpOwotICAgICAgICBtX3RlbXBCdWZmZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKLSAgICAgICAgbV91cFNhbXBs
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSk7Ci0gICAg
ICAgIG1fZG93blNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJp
bmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fdXBTYW1wbGVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8
VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fZG93blNhbXBsZXIy
ID0gc3RkOjptYWtlX3VuaXF1ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwor
ICAgICAgICBtX3RlbXBCdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVy
aW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX3RlbXBCdWZmZXIyID0gbWFrZVVuaXF1ZTxBdWRp
b0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKKyAgICAgICAgbV91cFNhbXBsZXIg
PSBtYWtlVW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSk7CisgICAgICAgIG1fZG93
blNhbXBsZXIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogMik7
CisgICAgICAgIG1fdXBTYW1wbGVyMiA9IG1ha2VVbmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdR
dWFudHVtICogMik7CisgICAgICAgIG1fZG93blNhbXBsZXIyID0gbWFrZVVuaXF1ZTxEb3duU2Ft
cGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAppbmRleCA4NDg2OTkz
ZjIxMDg0Y2NjNjFjY2Q4MGIyYzE4N2UwOGMxNTVmZDAxLi42ZTdlOGRkMWM5YzE5ZmEzYzg1ZTNk
OWQ4NTVhYjlmNDU3ODViNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBXYXZlU2hhcGVyTm9k
ZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQogICAgIDogQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiB7CiAgICAgc2V0
Tm9kZVR5cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2F2ZVNoYXBlclByb2Nlc3Nvcj4oY29udGV4dC5zYW1wbGVSYXRlKCksIDEpOwor
ICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0
LnNhbXBsZVJhdGUoKSwgMSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApp
bmRleCAyODljMzlmNWYzZjlmN2E3OWU5YTViNmE2ZDgzMTViNTkxZjQzMmRhLi5iZmU1ZTBlNDdm
Yjg0YTI4YzYzYzZlMjhiMzJlMGZjMTFlNWM2N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6fldhdmVTaGFwZXJQcm9jZXNzb3IoKQogCiBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IFdhdmVTaGFwZXJQcm9jZXNzb3I6OmNyZWF0
ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2F2ZVNoYXBlckRTUEtl
cm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2F2ZVNoYXBlckRTUEtlcm5lbD4o
dGhpcyk7CiB9CiAKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQzMkFy
cmF5KiBjdXJ2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IGIxYzQ5ZGI1MjNiOTM2YjBhNGVj
MjIxMDQxYjc3ZGE3Y2MxNDc4ZmQuLjIwZDYwNjk3MjQyODk3Mzc3OTgyYjg0ZWU3M2Q0ZGE2MzRl
ZDhmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBzdHJ1Y3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwogdXNpbmcgQ3JlZGVudGlhbFByb21pc2Ug
PSBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPEJhc2ljQ3JlZGVu
dGlhbD4+PjsKIAogY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IpOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5h
dG9yQ2xpZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCmluZGV4IDhjM2QxMzQ2YzQwMzBjZmIzZDgyNzcz
N2EwYTE1ZjNmMWNiOWJhZDcuLjFiOTEyZDk4ZDlmMDRmMzA3NGExYjhlMWE2MjYwMWE0MmZhZjM1
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRv
SGlkTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0ZpZG9IaWRNZXNzYWdlLmNwcApAQCAtMTUwLDkgKzE1MCw5IEBAIEZpZG9IaWRNZXNzYWdlOjpG
aWRvSGlkTWVzc2FnZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kIHR5
cGUsIGNvCiAgICAgdWludDhfdCBzZXF1ZW5jZSA9IDA7CiAKICAgICBzaXplX3QgcG9zID0gZGF0
YS5zaXplKCkgPiBrSGlkSW5pdFBhY2tldERhdGFTaXplID8ga0hpZEluaXRQYWNrZXREYXRhU2l6
ZSA6IGRhdGEuc2l6ZSgpOwotICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxG
aWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRh
KSwgZGF0YS5zaXplKCkpKTsKKyAgICBtX3BhY2tldHMuYXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hp
ZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgdHlwZSwgZ2V0SW5pdFBhY2tldERhdGEoZGF0YSksIGRh
dGEuc2l6ZSgpKSk7CiAgICAgZm9yICg7IHBvcyA8IGRhdGEuc2l6ZSgpOyBwb3MgKz0ga0hpZENv
bnRpbnVhdGlvblBhY2tldERhdGFTaXplKQotICAgICAgICBtX3BhY2tldHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5j
ZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKKyAgICAgICAgbV9w
YWNrZXRzLmFwcGVuZChtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5u
ZWxJZCwgc2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0RGF0YShkYXRhLCBwb3MpKSk7
CiB9CiAKIEZpZG9IaWRNZXNzYWdlOjpGaWRvSGlkTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Rmlk
b0hpZEluaXRQYWNrZXQ+IGluaXRQYWNrZXQsIHNpemVfdCByZW1haW5pbmdTaXplKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQu
Y3BwCmluZGV4IDU1YjdiMmQ3MTUzNmEyMzU0OTEzYWUzNmU5ZmI5MWVmMDBhOGYwODMuLjI2Yjgw
YWE4YTVmMTM5NjNjNzY4ZTdlOTIzYmJhYWIyYjg3YjVlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKQEAgLTcw
LDcgKzcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBGaWRvSGlkSW5p
dFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGMKICAgICBhdXRvIGRhdGEgPSBWZWN0
b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRl
eCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQ
YWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNvbW1h
bmQsIFdURk1vdmUoZGF0YSksIHBheWxvYWRTaXplKTsKIH0KIAogLy8gVTJGIEluaXRpYWxpemF0
aW9uIHBhY2tldCBpcyBkZWZpbmVkIGFzOgpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PiBGaWRvSGlkQ29udGludWF0aW9uUGFja2V0
OjpjcmVhdGVGcm9tCiAgICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CiAgICAgZGF0
YS5hcHBlbmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJ
ZCwgc2VxdWVuY2UsIFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEZpZG9I
aWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UsIFdURk1vdmUoZGF0YSkp
OwogfQogCiAvLyBVMkYgQ29udGludWF0aW9uIHBhY2tldCBpcyBkZWZpbmVkIGFzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCAwMjE0
NWQwY2MyZThjOWVhZGIwYzg4Mjk0MWI4NTlmYzBhZTgwNTJkLi41YjY0YTA4NzQ2YWY4MDgwY2Qy
ZTcyNTAzZmEwMGQzYzk0OWZiMDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IERhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25Jbk5ld0Rh
dGFiYXNlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
IAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlc3VsdDsKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1h
a2VfdW5pcXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFz
ZSwgc3luY2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0
YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5jaHJvbml6
ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhXVEZNb3ZlKHRh
c2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiAKQEAgLTI3
Myw3ICsyNzMsNyBAQCB2b2lkIERhdGFiYXNlOjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKHN0ZDo6bWFrZV91bmlxdWU8
RGF0YWJhc2VDbG9zZVRhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIpKTsKKyAgICB0aHJlYWQuc2No
ZWR1bGVJbW1lZGlhdGVUYXNrKG1ha2VVbmlxdWU8RGF0YWJhc2VDbG9zZVRhc2s+KCp0aGlzLCBz
eW5jaHJvbml6ZXIpKTsKIAogICAgIC8vIEZJWE1FOiBpT1MgZGVwZW5kcyBvbiB0aGlzIGZ1bmN0
aW9uIGJsb2NraW5nIHVudGlsIHRoZSBkYXRhYmFzZSBpcyBjbG9zZWQgYXMgcGFydAogICAgIC8v
IG9mIGNsb3NpbmcgYWxsIG9wZW4gZGF0YWJhc2VzIGZyb20gYSBwcm9jZXNzIGFzc2VydGlvbiBl
eHBpcmF0aW9uIGhhbmRsZXIuCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBEYXRhYmFzZTo6c2No
ZWR1bGVUcmFuc2FjdGlvbigpCiAgICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwog
CiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25RdWV1ZS50YWtlRmlyc3QoKTsK
LSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNr
PihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRh
YmFzZVRyYW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOwogICAgIExPRyhTdG9y
YWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdHJhbnNh
Y3Rpb24gJXBcbiIsIHRhc2suZ2V0KCksIHRhc2stPnRyYW5zYWN0aW9uKCkpOwogICAgIGRhdGFi
YXNlVGhyZWFkKCkuc2NoZWR1bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQpAQCAtNTQxLDcgKzU0
MSw3IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKFNRTFRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBhdXRvJiB0aHJlYWQgPSBkYXRhYmFzZVRocmVhZCgp
OwogCi0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9u
VGFzaz4oJnRyYW5zYWN0aW9uKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNl
VHJhbnNhY3Rpb25UYXNrPigmdHJhbnNhY3Rpb24pOwogICAgIExPRyhTdG9yYWdlQVBJLCAiU2No
ZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRyYW5zYWN0aW9uIHN0
ZXBcbiIsIHRhc2suZ2V0KCkpOwogICAgIHRocmVhZC5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNr
KSk7CiB9CkBAIC03NjMsNyArNzYzLDcgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnRhYmxl
TmFtZXMoKQogICAgIGlmICh0aHJlYWQudGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5bmNocm9uaXpl
cikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIsIHJlc3Vs
dCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRhYmxlTmFtZXNUYXNrPigq
dGhpcywgc3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0
ZVRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxl
dGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuY3BwCmluZGV4IDNiYWJkNDk1NjZmMTRhMWIzYzBkM2IxN2JmNGM3ZjMy
YzVlM2Q1ZjcuLmQ2NDk3YzM5N2ZhNDc0Mjg1OWUwNTg2MjIzNmVkZWU0M2Q0ZWYzOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJl
YWQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERhdGFiYXNl
VGhyZWFkOjpEYXRhYmFzZVRocmVhZCgpCi0gICAgOiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3Io
c3RkOjptYWtlX3VuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQorICAgIDogbV90
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKG1ha2VVbmlxdWU8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
cj4oKSkKIHsKICAgICBtX3NlbGZSZWYgPSB0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGQ4ZGRj
YzU5ODU1MTU3NmQyYTJjMTBmNDJlNGFkMTJhODI1OWI1MTkuLmMyOGE5NmY0NTgzOWVmNTRkYWYx
Zjk5YTFhZDU4ZDdlY2Q0YTY3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTU0OSw3ICs1NDksNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkK
ICAgICBMb2NrSG9sZGVyIG9wZW5EYXRhYmFzZU1hcExvY2sobV9vcGVuRGF0YWJhc2VNYXBHdWFy
ZCk7CiAKICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlTWFwKQotICAgICAgICBtX29wZW5EYXRhYmFz
ZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcmlnaW5NYXA+KCk7CisgICAgICAgIG1f
b3BlbkRhdGFiYXNlTWFwID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKIAogICAg
IGF1dG8gb3JpZ2luID0gZGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW4oKTsKIApAQCAtOTU2LDcgKzk1
Niw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGluZ0RhdGFiYXNlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjCiAgICAgLy8gV2UgZG9uJ3QgdXNlIEhhc2hN
YXA6OmVuc3VyZSBoZXJlIHRvIGF2b2lkIG1ha2luZyBhbiBpc29sYXRlZCBjb3B5IG9mIHRoZSBv
cmlnaW4gZXZlcnkgdGltZS4KICAgICBhdXRvKiBuYW1lU2V0ID0gbV9iZWluZ0NyZWF0ZWQuZ2V0
KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lU2V0KSB7Ci0gICAgICAgIGF1dG8gb3duZWRTZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hDb3VudGVkU2V0PFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8g
b3duZWRTZXQgPSBtYWtlVW5pcXVlPEhhc2hDb3VudGVkU2V0PFN0cmluZz4+KCk7CiAgICAgICAg
IG5hbWVTZXQgPSBvd25lZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0NyZWF0ZWQuYWRkKG9y
aWdpbi5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KQEAgLTEwMDIs
NyArMTAwMiw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZWNvcmREZWxldGluZ0RhdGFiYXNl
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjCiAgICAgLy8gV2UgZG9uJ3QgdXNl
IEhhc2hNYXA6OmVuc3VyZSBoZXJlIHRvIGF2b2lkIG1ha2luZyBhbiBpc29sYXRlZCBjb3B5IG9m
IHRoZSBvcmlnaW4gZXZlcnkgdGltZS4KICAgICBhdXRvKiBuYW1lU2V0ID0gbV9iZWluZ0RlbGV0
ZWQuZ2V0KG9yaWdpbik7CiAgICAgaWYgKCFuYW1lU2V0KSB7Ci0gICAgICAgIGF1dG8gb3duZWRT
ZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBv
d25lZFNldCA9IG1ha2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgICAgICBuYW1lU2V0
ID0gb3duZWRTZXQuZ2V0KCk7CiAgICAgICAgIG1fYmVpbmdEZWxldGVkLmFkZChvcmlnaW4uaXNv
bGF0ZWRDb3B5KCksIFdURk1vdmUob3duZWRTZXQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaAppbmRleCA4NWYxYjYzNWMz
ZTQ5YjNmZTFhODFmOTQ4NzgyNDgwZTFkZTQ4ZmI1Li44YTU0YTM2NjdhMDdhYWNlMDNhOTYwZmIy
NTY0ZjdlYmRmM2JkOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMU3RhdGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgU1FMUmVzdWx0U2V0
OwogY2xhc3MgU1FMVHJhbnNhY3Rpb25CYWNrZW5kOwogCiBjbGFzcyBTUUxTdGF0ZW1lbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNRTFN0YXRlbWVudChE
YXRhYmFzZSYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTUUxWYWx1ZT4mJiwgUmVmUHRyPFNRTFN0
YXRlbWVudENhbGxiYWNrPiYmLCBSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4mJiwg
aW50IHBlcm1pc3Npb25zKTsKICAgICB+U1FMU3RhdGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4IDIw
ZDY5NzM0Nzc0ZGJmYmYzMGJkOGYzOWNlNGM1OTU3MjE0ZTkwMGMuLjRjYjA0MWU0NTJjODBmNWY1
OWJiMjcyMWVhYjhlYzFhOGY2MTgzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC04Myw3ICs4Myw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYg
c3FsU3RhdGVtZW50LCBPcHRpb25hCiAgICAgZWxzZSBpZiAobV9yZWFkT25seSkKICAgICAgICAg
cGVybWlzc2lvbnMgfD0gRGF0YWJhc2VBdXRob3JpemVyOjpSZWFkT25seU1hc2s7CiAKLSAgICBh
dXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNl
LCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwg
V1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsK
KyAgICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNl
LCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwg
V1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsK
IAogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkpCiAgICAgICAgIHN0YXRlbWVudC0+c2V0
RGF0YWJhc2VEZWxldGVkRXJyb3IoKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFNRTFRyYW5z
YWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogICAgIH0KIAogICAgIEFTU0VS
VCghbV9zcWxpdGVUcmFuc2FjdGlvbik7Ci0gICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNl
KCksIG1fcmVhZE9ubHkpOworICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNR
TGl0ZVRyYW5zYWN0aW9uPihtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLCBtX3JlYWRPbmx5
KTsKIAogICAgIG1fZGF0YWJhc2UtPnJlc2V0RGVsZXRlcygpOwogICAgIG1fZGF0YWJhc2UtPmRp
c2FibGVBdXRob3JpemVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAppbmRleCA3OWFhNTYxODFmZmVmM2FiMWE5
MmFhNTdmZWNkYjZmYmE1OWU2ZjBiLi4xMjlkODZmZmNmYmQxNTdhODBiMDE5MmUzYjQ5OTcxMzNi
ZWI3ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZp
Z2F0b3JXZWJEcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVy
L05hdmlnYXRvcldlYkRyaXZlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTmF2aWdhdG9yV2ViRHJp
dmVyKiBOYXZpZ2F0b3JXZWJEcml2ZXI6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAg
ICAgTmF2aWdhdG9yV2ViRHJpdmVyKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9y
V2ViRHJpdmVyKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxl
bWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JXZWJEcml2ZXI+KCk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZp
Z2F0b3JHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BV
LmNwcAppbmRleCA4OGE5NzgwNDRiYzFlNzA4OTMzNTY1ZGM2MmQwYTMxNDZiMzhiNDI2Li4zNzZk
MTU1Y2E5YjJmNWQyYTRhYjE4NTJjNzc2ZDljMThmMmU1MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgTmF2
aWdhdG9yR1BVKiBOYXZpZ2F0b3JHUFU6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAg
ICAgTmF2aWdhdG9yR1BVKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yR1BVKj4o
U3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkp
OwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVt
ZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHUFU+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBu
ZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVt
ZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRl
ZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCmluZGV4IDFiMzQyNTA0ZDY5NTUwOGYwODE2Y2NiNTU4
MmY1YmQ5YWE3NjFhNmIuLjVmNTdlZjExNzc1MzFhMGFjM2Q5NjBkZWIxZDQzODcxMWE0ZjA1YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBAIC02Myw3ICs2Myw3
IEBAIGNsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbiBmaW5hbCA6IHB1YmxpYyBOYW1lZFR5cGUg
ewogCiAgICAgYm9vbCBhZGQoRW51bWVyYXRpb25NZW1iZXImJiBtZW1iZXIpCiAgICAgewotICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVtYmVyLm5hbWUoKSwgc3RkOjptYWtl
X3VuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIpKSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBtYWtlVW5pcXVlPEVudW1l
cmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5p
c05ld0VudHJ5OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCmlu
ZGV4IGU5MmRhYTE2ZWY1M2MwMTExNTQ3YTllOGNkNzlhM2U4MzUyNzcxY2IuLmZhODY1NTFlMzhk
MjQ5MGZiNDBhNmVjMjgwMDVhNDcxMWVlMDMwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURl
Y2xhcmF0aW9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgVmFyaWFibGVEZWNsYXJhdGlvbiBm
aW5hbCB7CiAvLyBGaW5hbCBiZWNhdXNlIHdlIG1hZGUgdGhlIGRlc3RydWN0b3Igbm9uLXZpcnR1
YWwuCiBwdWJsaWM6CiAgICAgc3RydWN0IFJhcmVEYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBSYXJlRGF0YShRdWFsaWZpZXJzJiYgcXVhbGlm
aWVyc0FyZ3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2VtYW50aWM+JiYgc2VtYW50aWNBcmd1bWVu
dCkKICAgICAgICAgICAgIDogcXVhbGlmaWVycyhXVEZNb3ZlKHF1YWxpZmllcnNBcmd1bWVudCkp
CiAgICAgICAgICAgICAsIHNlbWFudGljKFdURk1vdmUoc2VtYW50aWNBcmd1bWVudCkpCkBAIC02
NCw3ICs2NSw3IEBAIGNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gZmluYWwgewogICAgICAgICAs
IG1fbmFtZShXVEZNb3ZlKG5hbWUpKQogICAgIHsKICAgICAgICAgaWYgKHNlbWFudGljIHx8ICFx
dWFsaWZpZXJzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJhcmVEYXRhPihXVEZNb3ZlKHF1YWxpZmllcnMpLCBXVEZNb3ZlKHNlbWFudGljKSk7
CisgICAgICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oV1RGTW92ZShx
dWFsaWZpZXJzKSwgV1RGTW92ZShzZW1hbnRpYykpOwogICAgIH0KIAogICAgIH5WYXJpYWJsZURl
Y2xhcmF0aW9uKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZm
b2xkaW5nLmgKaW5kZXggMGUzMWZmYmRlMGIxNDg2ZjZjNmY2NWUyMGViNjM4YWU4ODFiODdmOC4u
Y2JjYzQ4NGI2ODI1MGMwYWEwOWI1OTk0M2FkYzc5ZTgxMDA5Mjc0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2Nh
ZmZvbGRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFj
ZSBNZXRhbCB7CiBjbGFzcyBUeXBlTmFtZXI7CiAKIGNsYXNzIEVudHJ5UG9pbnRTY2FmZm9sZGlu
ZyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
RW50cnlQb2ludFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rp
b25Xcml0ZXIuY3BwCmluZGV4IGU1MDBmNjExNWZhMDhhZjRlNGQzN2M2ZWRmMzRjMTI0ZDlkMmQw
Y2MuLmRhYjYwMmVjYTgwYjdjMDc1OTZhNzFjZTM5OWY3ZmIyN2E2ZjE3ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25X
cml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC03NDgsOSArNzQ4LDkgQEAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4gUmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
OjpjcmVhdGVFbnQKICAgICAgICAgcmV0dXJuIHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSgpOwogICAgIH07CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2Vt
YW50aWNzLnZlcnRleFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVy
dGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2lj
cywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50
SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlv
dXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNz
Lm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVy
dGV4RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2lj
cywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50
SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlv
dXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNz
Lm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9
PSBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmlu
aXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFn
bWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hh
ZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFt
ZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPEZyYWdtZW50RW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlv
bkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGlj
cy5mcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdt
ZW50U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlh
YmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkQ29sb3JBdHRhY2htZW50cyk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTc3NCw3ICs3NzQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBDb21wdXRlRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVy
OjpjcmVhdGVFbgogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1l
KCk7CiAgICAgfTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1h
bnRpY3Muc2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21wdXRlRW50
cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRpb24sIG1faW50cmluc2ljcywgbV90
eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBvaW50SXRlbXMsIG1fbWF0Y2hlZFNl
bWFudGljcy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFi
bGVOYW1lKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXB1dGVFbnRyeVBvaW50U2Nh
ZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwg
bV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnJl
c291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCmluZGV4IDE4
NWJhMGIwODhhNWNlZDRjNWI2NjM2ZmE5NDQyYzAwMzQwZGQwMmEuLjQwYjYyYzM3ZGJlMjU4MGUy
M2Q1OTBjMDkxZWJiNDE3Y2E5YjgwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKQEAgLTI3
MiwxOSArMjcyLDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxCYXNlVHlwZU5hbWVOb2RlPiBUeXBlTmFt
ZXI6OmNyZWF0ZU5hbWVOb2RlKEFTVDo6VW5uYW1lZFR5cGUmIHVuCiAgICAgc3dpdGNoICh1bm5h
bWVkVHlwZS5raW5kKCkpIHsKICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlR5cGVS
ZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6
VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUo
KSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgp
LCB0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVu
bmFtZWRUeXBlOjpLaW5kOjpQb2ludGVyOiB7CiAgICAgICAgIGF1dG8mIHBvaW50ZXJUeXBlID0g
ZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4
dFR5cGVOYW1lKCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UG9pbnRlclR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBl
TmFtZSgpLCBwb2ludGVyVHlwZS5hZGRyZXNzU3BhY2UoKSk7CiAgICAgfQogICAgIGNhc2UgQVNU
OjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXlSZWZlcmVuY2U6IHsKICAgICAgICAgYXV0byYgYXJy
YXlSZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFt
ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlSZWZlcmVuY2VU
eXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlSZWZlcmVu
Y2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlS
ZWZlcmVuY2VUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJy
YXlSZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVu
bmFtZWRUeXBlOjpLaW5kOjpBcnJheTogewogICAgICAgICBhdXRvJiBhcnJheVR5cGUgPSBkb3du
Y2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFt
ZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5
VHlwZS5udW1FbGVtZW50cygpKTsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCmluZGV4IDkwMWM2MTAyMDNlZWZmNDY5MDVh
OGQ2YWYzNDQ4MGI5NDQ1MDVjMDIuLjNkZWMwNjMwM2NhNzk1NjQ5Y2Y4N2E0ZjUzMDA3NmQ3N2I4
ZDg5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xDaGVja2VyLmNwcApAQCAtOTcwLDE0ICs5NzAsMTQgQEAgdm9pZCBDaGVja2VyOjp2aXNp
dChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCiAKIHZvaWQg
Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwg
UmVmPEFTVDo6VW5uYW1lZFR5cGU+IHVubmFtZWRUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5
cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQg
PSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5
cGU+KFdURk1vdmUodW5uYW1lZFR5cGUpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVN
YXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUodW5u
YW1lZFR5cGUpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFu
bm90YXRpb24pKTsKIH0KIAogdm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lv
biYgZXhwcmVzc2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiByZXNvbHZhYmxl
VHlwZVJlZmVyZW5jZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6
UmlnaHRWYWx1ZSgpKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhw
cmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29sdmFi
bGVUeXBlUmVmZXJlbmNlKSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgm
ZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHJlc29sdmFibGVU
eXBlUmVmZXJlbmNlKSkpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiAgICAgZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5
cGVBbm5vdGF0aW9uKSk7CiB9CkBAIC05ODUsMTAgKzk4NSwxMCBAQCB2b2lkIENoZWNrZXI6OmFz
c2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5
cGVSZWZlcgogdm9pZCBDaGVja2VyOjpmb3J3YXJkVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJl
c3Npb24sIFJlc29sdmluZ1R5cGUmIHJlc29sdmluZ1R5cGUsIEFTVDo6VHlwZUFubm90YXRpb24g
dHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKICAgICByZXNvbHZpbmdUeXBl
LnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFJlZjxBU1Q6OlVubmFtZWRUeXBlPiYgcmVzdWx0
KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwg
c3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CisgICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1
ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfSwgWyZdKFJlZlB0cjxS
ZXNvbHZhYmxlVHlwZVJlZmVyZW5jZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5n
VHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlw
ZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNv
cHlSZWYoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwogICAgIH0pKTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdU
Rk1vdmUodHlwZUFubm90YXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAppbmRleCAwMTYxMTRhNjEwZTExMDBlZmU2OTcy
Y2EyYTIzNTMyN2MxNTJlN2FiLi41ZTQ5ZjAzYTNiMzgyNmQxZmU3Y2IzYTU1ODc5Njc2NjU3Njlm
YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQYXJzZXIuY3BwCkBAIC03NDAsMTkgKzc0MCwxOSBAQCBhdXRvIFBhcnNlcjo6cGFyc2VTZW1h
bnRpYygpIC0+IEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxBU1Q6OlNlbWFudGljPiwgRXJyb3I+
CiAgICAgc3dpdGNoICh0b2tlbi0+dHlwZSkgewogICAgIGNhc2UgVG9rZW46OlR5cGU6OkF0dHJp
YnV0ZTogewogICAgICAgICBQQVJTRShyZXN1bHQsIFN0YWdlSW5PdXRTZW1hbnRpYyk7Ci0gICAg
ICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVz
dWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZN
b3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpTcGVjaWFsaXpl
ZDogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50
aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdU
Rk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1h
bnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6
UmVnaXN0ZXI6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgUmVzb3VyY2VTZW1hbnRpYyk7Ci0g
ICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgq
cmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihX
VEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBkZWZhdWx0OiAgewogICAgICAgICBQQVJT
RShyZXN1bHQsIEJ1aWx0SW5TZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91
bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJu
IHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFJlc29sdmluZ1R5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCmluZGV4IDU1OWNlOGJhOTNiMjlkNTE3ZmE3NzNmNmE1
ZjUyN2RkZjRhODViMDEuLjQ1NzAwY2VkOGZkMzQ0OWM0ZGE0OTU5ZjcxYTQwMmFhMDJkNmU0M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVz
b2x2aW5nVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUmVzb2x2aW5nVHlwZS5oCkBAIC03NCw2ICs3NCw3IEBAIGNsYXNzIFJlc29sdmFibGVUeXBl
UmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHsK
IC8vIEl0IGV4aXN0cyBzbyB3ZSBjYW4gbWFrZSBzdXJlIHRoYXQgdGhlIGRlZmF1bHQgY29uc3Ry
dWN0b3IgZG9lcyB0aGUgcmlnaHQgdGhpbmcuCiAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODE1OCBUaGlzIHdyYXBwZXIgbWlnaHQgbm90IGJlIG5l
Y2Vzc2FyeS4KIGNsYXNzIFJlc29sdmluZ1R5cGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFJlc29sdmluZ1R5cGUoKQogICAgICAgICA6IG1faW5uZXIoUmVm
UHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKaW5kZXggYmY5MGY2YzM2MDU0
OGQ1MmM4ZmQ4ZWVlYzc1M2M3OGQ4ZmE5YmYxYy4uZDk1MjIzMDVhZGExZWU5NzFmMTY1MjhkZTA2
NjA0YmI2YTk2YjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V29ya2VyTmF2aWdhdG9yR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdvcmtlck5hdmlnYXRv
ckdQVSogV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKFdvcmtlck5hdmlnYXRvciogbmF2aWdhdG9y
KQogewogICAgIFdvcmtlck5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdv
cmtlck5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9yPjo6ZnJvbShuYXZp
Z2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JH
UFU+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyTmF2
aWdhdG9yR1BVPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsK
ICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShu
ZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCBlZDVhM2NjODM0ZmUxOWQ0ODg4Yjg1NTUwNGJh
MTU1ZDQ4M2ZjNDA3Li5jMWJhYzg2ZDNhYjJiMGQ5MTNmY2U3NDIxNDMxYTk0NDU5ZWVkMmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNw
cApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpjbGVhckNsaWVudCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKICAgICB9KSk7CkBAIC0xNjQsNyArMTY0LDcgQEAg
dm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3Qo
KQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGVuZGluZ1Rhc2tz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBtZXNzYWdlLmlz
b2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdU
YXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVzc2FnZS5pc29s
YXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2Ns
aWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsK
ICAgICB9KSk7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWUKIAog
dm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVC
aW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiB7Ci0gICAgbV9wZW5kaW5n
VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYmluYXJ5RGF0YSA9IFdU
Rk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7Cisg
ICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYmluYXJ5RGF0
YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9KSk7CkBAIC0xODYsNyAr
MTg2LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF8KIAogdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVk
IGJ1ZmZlcmVkQW1vdW50KQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBi
dWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmICht
X2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJlZEFtb3VudChi
dWZmZXJlZEFtb3VudCk7CiAgICAgfSkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3Vu
dCh1bnNpZ25lZCBiCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiAgICAgfSkpOwpAQCAt
MjA4LDcgKzIwOCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VDb21wbGV0
aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2lu
Z0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29sYXRlZENvcHko
KV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5k
KG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdI
YW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7CiAgICAgICAgIH0p
KTsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZQogCiB2b2lkIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VF
cnJvcigpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3Mu
YXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
TWVzc2FnZUVycm9yKCk7CiAgICAgfSkpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9y
KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVw
Z3JhZGVVUkwoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rh
c2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkVXBn
cmFkZVVSTCgpOwogICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2MDcxNDQwOTI0ZmIyY2U2N2Y1
MzQwNjJkNzllOGUzYjA0ZWUxYzUwLi5hMDdhODc2M2FmYjk2OWI0MjA3MGJjNDlhODYyMzliNzgz
ZDZlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFdlYlNvY2tldENoYW5uZWw6
OkNvbm5lY3RTdGF0dXMgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwmIHJlcXVl
c3RlZFVSCiAgICAgbV9hbGxvd0Nvb2tpZXMgPSB2YWxpZGF0ZWRVUkwtPmFyZUNvb2tpZXNBbGxv
d2VkOwogICAgIFN0cmluZyB1c2VyQWdlbnQgPSBtX2RvY3VtZW50LT51c2VyQWdlbnQobV9kb2N1
bWVudC0+dXJsKCkpOwogICAgIFN0cmluZyBjbGllbnRPcmlnaW4gPSBtX2RvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0gICAgbV9oYW5kc2hha2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2Vy
QWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOworICAgIG1faGFuZHNoYWtlID0g
bWFrZVVuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJsLCBwcm90b2Nv
bCwgdXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29raWVzKTsKICAgICBtX2hhbmRz
aGFrZS0+cmVzZXQoKTsKICAgICBpZiAobV9kZWZsYXRlRnJhbWVyLmNhbkRlZmxhdGUoKSkKICAg
ICAgICAgbV9oYW5kc2hha2UtPmFkZEV4dGVuc2lvblByb2Nlc3NvcihtX2RlZmxhdGVGcmFtZXIu
Y3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkpOwpAQCAtNzAzLDcgKzcwMyw3IEBAIGJvb2wgV2Vi
U29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5x
dWV1ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fb3V0
Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAgIGF1
dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8gZnJh
bWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBXZWJT
b2NrZXRGcmFtZTo6T3BDb2RlVGV4dDsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJh
bWVUeXBlU3RyaW5nOwogICAgIGZyYW1lLT5zdHJpbmdEYXRhID0gc3RyaW5nOwpAQCAtNzEzLDcg
KzcxMyw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFtZShjb25zdCBD
U3RyaW5nJiBzdHJpbmcpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZShX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91
dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1l
PigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBvcENvZGU7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9
IFF1ZXVlZEZyYW1lVHlwZVZlY3RvcjsKICAgICBmcmFtZS0+dmVjdG9yRGF0YS5yZXNpemUoZGF0
YUxlbmd0aCk7CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1
ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIKIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BD
b2RlIG9wQ29kZSwgQmxvYiYgYmxvYikKIHsKICAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVl
dWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBmcmFtZSA9IHN0
ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlx
dWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFt
ZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBlQmxvYjsKICAgICBmcmFtZS0+YmxvYkRhdGEg
PSAmYmxvYjsKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICAgICAgICAgIHJlZigpOyAvLyBXaWxsIGJl
IGRlcmVmZWQgYWZ0ZXIgZGlkRmluaXNoTG9hZGluZygpIG9yIGRpZEZhaWwoKS4KICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1fYmxvYkxvYWRlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGZy
YW1lLT5ibG9iRGF0YSk7Ci0gICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1
ZmZlciwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gbWFrZVVuaXF1ZTxG
aWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1ZmZlciwgdGhp
cyk7CiAgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyU3RhdHVzID0gQmxvYkxvYWRlclN0YXJ0
ZWQ7CiAgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyLT5zdGFydChtX2RvY3VtZW50LmdldCgp
LCAqZnJhbWUtPmJsb2JEYXRhKTsKICAgICAgICAgICAgICAgICBtX291dGdvaW5nRnJhbWVRdWV1
ZS5wcmVwZW5kKFdURk1vdmUoZnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAppbmRleCBm
MmZhNjIwOWMwNDhmNTE1MThhMjVlZWMxM2FlZjI1NjRjOWY0ZTdiLi5lZTMzZWEwZmU1Y2YxZDVi
Zjc5YTJkYTA2NzA3YjczY2QzYTc4YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCkBAIC0x
NTUsNyArMTU1LDcgQEAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0RGVmbGF0ZUZy
YW1lcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+IFdl
YlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPih0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJh
bWU+KHRoaXMpOwogfQogCiBib29sIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUo
KSBjb25zdApAQCAtMTcwLDggKzE3MCw4IEBAIGJvb2wgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6
Y2FuRGVmbGF0ZSgpIGNvbnN0CiAjaWYgVVNFKFpMSUIpCiB2b2lkIFdlYlNvY2tldERlZmxhdGVG
cmFtZXI6OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpD
b250ZXh0VGFrZU92ZXJNb2RlIG1vZGUpCiB7Ci0gICAgbV9kZWZsYXRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOwotICAgIG1faW5mbGF0
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOworICAgIG1fZGVmbGF0
ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5kb3dCaXRzLCBtb2RlKTsKKyAg
ICBtX2luZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4oKTsKICAgICBpZiAo
IW1fZGVmbGF0ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5pdGlhbGl6ZSgpKSB7
CiAgICAgICAgIG1fZGVmbGF0ZXIgPSBudWxscHRyOwogICAgICAgICBtX2luZmxhdGVyID0gbnVs
bHB0cjsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmVu
YWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpDbwogc3RkOjp1
bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmRl
ZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewogI2lmIFVTRShaTElCKQotICAgIGF1dG8g
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CiAg
ICAgaWYgKCFlbmFibGVkKCkgfHwgIVdlYlNvY2tldEZyYW1lOjppc05vbkNvbnRyb2xPcENvZGUo
ZnJhbWUub3BDb2RlKSB8fCAhZnJhbWUucGF5bG9hZExlbmd0aCkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICBpZiAoIW1fZGVmbGF0ZXItPmFkZEJ5dGVzKGZyYW1lLnBheWxvYWQsIGZyYW1l
LnBheWxvYWRMZW5ndGgpIHx8ICFtX2RlZmxhdGVyLT5maW5pc2goKSkgewpAQCAtMTk2LDcgKzE5
Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyCiAgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9
IG1fZGVmbGF0ZXItPnNpemUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICNlbmRpZgogfQogCkBA
IC0yMTAsNyArMjEwLDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxh
dGVDb250ZXh0KCkKIAogc3RkOjp1bmlxdWVfcHRyPEluZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNv
Y2tldERlZmxhdGVGcmFtZXI6OmluZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewotICAg
IGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmZsYXRlUmVzdWx0SG9sZGVyPih0aGlz
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4odGhp
cyk7CiAgICAgaWYgKCFlbmFibGVkKCkgJiYgZnJhbWUuY29tcHJlc3MpIHsKICAgICAgICAgcmVz
dWx0LT5mYWlsKCJDb21wcmVzc2VkIGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3RpYXRlZCBkZWZs
YXRlLWZyYW1lIGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5j
cHAKaW5kZXggMWQ2ZjE3ODIyYzgwNTI4MWI3MGE0MTYyMGRjZGVlNmFkMmFiODg5Yy4uNGE0ODY1
Zjg0OTRkMDYxM2VhYzMyMWE1OTRmOGJhZTE5OTk2YmIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIFdlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRlcihpbnQgd2lu
ZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSBjb250ZXh0CiB7CiAgICAgQVNTRVJUKG1fd2lu
ZG93Qml0cyA+PSA4KTsKICAgICBBU1NFUlQobV93aW5kb3dCaXRzIDw9IDE1KTsKLSAgICBtX3N0
cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9zdHJlYW0gPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAgICBtZW1zZXQobV9z
dHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlcjo6cmVzZXQoKQogV2ViU29ja2V0SW5mbGF0ZXI6Oldl
YlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dCaXRzKQogICAgIDogbV93aW5kb3dCaXRzKHdpbmRv
d0JpdHMpCiB7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3RyZWFtPigpOwor
ICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8el9zdHJlYW0+
KCk7CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTk0MDcz
ZWFhNWU4YjIzMGQxYzhiMDBjMTZjNTk2NDNlOTc4NDI2OC4uZGM2ZjY2MGZkMzg4Y2VmZmFmMGVi
ZWY2ZTY2MGU2YjY5NWJiNjMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRFeGVjdXQKIAog
ICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFs
U2NvcGUoewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFz
aywKLSAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgJmxv
YWRlclByb3h5LCBwZWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNv
cHlSZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVy
KSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBb
Y2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVyUHJveHksIHBl
ZXIgPSBtYWtlVW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigpLCBsb2FkZXJQcm94
eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgICAgIGlmIChj
bGllbnRXcmFwcGVyLT5mYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFybGllciwgd2Ug
bmVlZCB0byBraWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBwZWVyLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcAppbmRleCBk
OTdiNWMyYTg1YTlkMjMyOGY5ODQwZjQ0ZDNkMWU5NjMyYzgyZDllLi43NzZjNDNhZWMwYjliNWJk
ZWFkYzNkZDg5MTI2YWNlZDZiYTc1MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcApAQCAtOTQsNyArOTQsNyBAQCBOYXZpZ2F0b3JXZWJW
UiogTmF2aWdhdG9yV2ViVlI6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2
aWdhdG9yV2ViVlIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJWUio+KFN1
cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsK
ICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVt
ZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9
IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNT
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2Vz
dE9wZW5TU0wuY3BwCmluZGV4IGJjMjNkNTljYzMxMjM3YjE0OTdhNzZhY2M1OWQzZWFmNWQyYjU4
NDAuLjZjYTY3ZjM5MWEzMWZjZDM4NjkyNTViMjFmMmZjYjdmM2ZiZjliYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNT
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9E
aWdlc3RPcGVuU1NMLmNwcApAQCAtNzksNyArNzksNyBAQCBzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29u
dGV4dEltcGwgOiBwdWJsaWMgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CiAKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IGNyZWF0ZSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1wbD4oKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw+KCk7CiAgICAg
fQogCiAgICAgQ3J5cHRvRGlnZXN0Q29udGV4dEltcGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKaW5kZXggMzE1MzE2ODA4MDdiNzJkNWVmOTM4
MDkxNGU3YWUyNDBhZDlkMDM5Ny4uZTUzZTE5NWIzNWY0OThmNzk1MjUxNTFlYmMyYWNlYjVmYWZj
ZDI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5l
cmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMu
Y3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBQQUwgewogCiBzdGQ6OnVuaXF1ZV9wdHI8
Q2xvY2s+IENsb2NrOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENs
b2NrR2VuZXJpYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7CiB9
CiAKIENsb2NrR2VuZXJpYzo6Q2xvY2tHZW5lcmljKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0KaW5kZXggYzY4OTMyMTVmMDZiMGM2NzRkNTQ2MDgzM2Ix
YTRkNTFjYzMyYjYxNC4uOWUwNzFiNzgxNGU0NGZlMDA0NDJlNjZjNzIwYjJiZmIzMTMwNjlhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0KQEAgLTM5
LDcgKzM5LDcgQEAgc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9IDEwMDA7
CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4gQ2xvY2s6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tDTT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDbG9j
a0NNPigpOwogfQogCiBDbG9ja0NNOjpDbG9ja0NNKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGNhY2FiODU2OGM4NjExMmQ5Y2RmZWZj
MzA5MDI2YWQ5YzgxNTMzZTUuLmIzNWZjMTU2NDM3ZjFjYTA5ZDY0MjJiZDU5YzcxMzNmYWMyYzYw
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cApAQCAtMTU3NSw3ICsxNTc1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0ln
bm9yZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RhcnRD
YWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcygpCiB7CiAgICAg
aWYgKCFtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUpCi0gICAgICAgIG1fY29tcHV0ZWRP
YmplY3RBdHRyaWJ1dGVDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8QVhDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZUNhY2hlPigpOworICAgICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUg
PSBtYWtlVW5pcXVlPEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsKIH0KIAogdm9p
ZCBBWE9iamVjdENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGVkZmRiYjBhMDZm
ZDZlZGEyNTA0OGI5NzE5YjllZjFiYTllMTM0NDMuLmU2ZGVhOTYxMWY5YjQ4ODBhNWExOWI5YWQx
ZTFiZGU3MWMxODQ3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJB
bmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24u
Y3BwCkBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVk
U3RhdGUoRGlkU2VlayBkaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90aWZ5IHN5bmMKICAgICAgICAg
ICAgIC8vIE90aGVyd2lzZSwgaWYgc3luY2hyb25vdXNseSBub3RpZnkgaXMgZmFsc2UsIHF1ZXVl
IGEgbWljcm90YXNrIHRvIHJ1biBmaW5pc2ggbm90aWZpY2F0aW9uIHN0ZXBzIGZvciBhbmltYXRp
b24gdW5sZXNzIHRoZXJlCiAgICAgICAgICAgICAvLyBpcyBhbHJlYWR5IGEgbWljcm90YXNrIHF1
ZXVlZCB0byBydW4gdGhvc2Ugc3RlcHMgZm9yIGFuaW1hdGlvbi4KICAgICAgICAgICAgIG1fZmlu
aXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gdHJ1ZTsKLSAgICAgICAgICAg
IE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
KSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5k
KG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChtX2ZpbmlzaE5vdGlmaWNhdGlvblN0
ZXBzTWljcm90YXNrUGVuZGluZykgewogICAgICAgICAgICAgICAgICAgICBtX2ZpbmlzaE5vdGlm
aWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICBmaW5pc2hOb3RpZmljYXRpb25TdGVwcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01Qcm9taXNlUHJveHkuaAppbmRleCA3ZGE0NmE2MTUwNGVmMjQ4MTVhNjk0ZGZiYTEyYzI4
YjFlZjRmZTY2Li42MjFiODkwNTFiYjQ4ZGIwMzAxZWE4MDQ3YzdhZmVmZmI2OGNkZTZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaApAQCAtNjAsNiAr
NjAsNyBAQCBjbGFzcyBET01Qcm9taXNlUHJveHkgewogCiB0ZW1wbGF0ZTw+CiBjbGFzcyBET01Q
cm9taXNlUHJveHk8SURMVm9pZD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIERPTVByb21pc2VQcm94eSgpID0gZGVmYXVsdDsKICAgICB+RE9NUHJvbWlzZVBy
b3h5KCkgPSBkZWZhdWx0OwpAQCAtODQsNiArODUsNyBAQCBjbGFzcyBET01Qcm9taXNlUHJveHk8
SURMVm9pZD4gewogLy8gRm9udEZhY2UgYW5kIEZvbnRGYWNlU2V0LgogdGVtcGxhdGU8dHlwZW5h
bWUgSURMVHlwZT4KIGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2sgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlc29sdmVD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSAo
KT47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgKaW5kZXggMGNl
NDU5NTBjNTM5MWY2MDY5NmZkNDBkODlkOTI3ZGEzODZhODdkMy4uNmNlZGQ3NjY0NWVjNGY1YmY0
NjA5MzJiNmE2ZDE3MzM3YWQ4MTQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvR0NDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0ND
b250cm9sbGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgR0NDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShHQ0NvbnRyb2xsZXIpOwogICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5l
dmVyRGVzdHJveWVkPEdDQ29udHJvbGxlcj47CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCBkYjBjMWRjNzZmOGEyODk3MDQ1
ZWUyY2ZjOTE5MjNkNThkZjFiNmY5Li5jNWM0NzA2MWJmYWNhMWZjYTcyOGJlMjdiMGEyYjRhOWYw
YjMwMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNr
VG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEpTQzo6TWljcgogICAgIEpT
RE9NV2luZG93QmFzZSYgdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93QmFzZSY+
KG9iamVjdCk7CiAKICAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3Rk
OjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6
Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgIGF1dG8gbWlj
cm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNr
UXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqdGhpc09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAg
ICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwCmluZGV4IDYyOTVmNTg0Y2ZlOGExNzI5
ZGRmNmIxOGQ3NzU0OWZkNDRjOWEwYmUuLmRiNWU3NzM0OTBiZWRmYmYzZTBjMTBjZjIzZDBhMzZj
OGEzYmRhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRU
YXJnZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRU
YXJnZXRDdXN0b20uY3BwCkBAIC01NiwxMSArNTYsMTEgQEAgRXZlbnRUYXJnZXQqIEpTRXZlbnRU
YXJnZXQ6OnRvV3JhcHBlZChWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiBzdGQ6OnVuaXF1ZV9wdHI8
SlNFdmVudFRhcmdldFdyYXBwZXI+IGpzRXZlbnRUYXJnZXRDYXN0KFZNJiB2bSwgSlNWYWx1ZSB0
aGlzVmFsdWUpCiB7CiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGpzRHluYW1pY0Nhc3Q8SlNFdmVu
dFRhcmdldCo+KHZtLCB0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFwcGVkKCksICp0YXJnZXQpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4odGFyZ2V0LT53cmFw
cGVkKCksICp0YXJnZXQpOwogICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93KHZt
LCB0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFy
Z2V0V3JhcHBlcj4od2luZG93LT53cmFwcGVkKCksICp3aW5kb3cpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4od2luZG93LT53cmFwcGVkKCksICp3aW5k
b3cpOwogICAgIGlmIChhdXRvKiBzY29wZSA9IHRvSlNXb3JrZXJHbG9iYWxTY29wZSh2bSwgdGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRhcmdldFdy
YXBwZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggZDgzMTYwNGNiYWViODdmMDdk
MTJlYWRkYTRiZjA1MzFhNzBiYjQwMi4uOWJkNjY0NDYwMTcwNTQ5NWE5NGU3YjNmYWRmMDQ4ZjNj
N2IwNDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSlNXb3JrZXJH
bG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmpl
Y3QsIFJlZjxKCiAKICAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwogICAgIGF1dG8mIGNvbnRleHQgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29u
dGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0
byBtaWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250
ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNvbnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAppbmRleCAxMTRmZjNjOGE1ZGYwMzkwMjgzYjFhNjdjZTYwOGQ3ZjQyNDZlN2MyLi4zNWNj
ZDQ5NjM1ZTA2MTE5NGU5NzI5M2U3MTJmN2FhMzcyYzQ5YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTMzMDAs
NyArMzMwMCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5Pj4gdHJhbnNmZXJBcnJheUJ1ZmZlCiAgICAgaWYgKGFycmF5QnVmZmVy
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjb250ZW50
cyA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PihhcnJheUJ1ZmZl
cnMuc2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRlbnRzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXplKCkpOwogCiAgICAgSGFzaFNldDxKU0M6OkFy
cmF5QnVmZmVyKj4gdmlzaXRlZDsKICAgICBmb3IgKHNpemVfdCBhcnJheUJ1ZmZlckluZGV4ID0g
MDsgYXJyYXlCdWZmZXJJbmRleCA8IGFycmF5QnVmZmVycy5zaXplKCk7IGFycmF5QnVmZmVySW5k
ZXgrKykgewpAQCAtMzQ1MSw3ICszNDUxLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV2FzbU1vZHVsZUFycmF5IHdhc21Nb2R1bGVzOwog
I2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hh
cmVkQnVmZmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pigp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1
ZmZlcnMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICBhdXRv
IGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmc3RhdGUsIHZhbHVlLCBtZXNzYWdl
UG9ydHMsIGFycmF5QnVmZmVycywgaW1hZ2VCaXRtYXBzLAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICAgICAgd2FzbU1vZHVsZXMsIApAQCAtMzQ2OSw3ICszNDY5LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSYKIAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JVUkxzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQgPT0gU2VyaWFsaXphdGlvbkNvbnRleHQ6
OldvcmtlclBvc3RNZXNzYWdlID8gV1RGTW92ZShzaGFyZWRCdWZmZXJzKSA6IG51bGxwdHIsIFdU
Rk1vdmUoaW1hZ2VCdWZmZXJzKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgICAg
ICAgICAsIHN0ZDo6bWFrZV91bmlxdWU8V2FzbU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykKKyAg
ICAgICAgICAgICAgICAsIG1ha2VVbmlxdWU8V2FzbU1vZHVsZUFycmF5Pih3YXNtTW9kdWxlcykK
ICNlbmRpZgogICAgICAgICAgICAgICAgICkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA1YzQ2NjI5NGJlZTU2YzIx
YmYwZjYzZDE1YjBmOGRmMGYyN2EzYTBlLi40ZjRiMGNmM2I3ZWVjZGRkMDc4NzAyNTUyMDg4OTVl
NDVmYTJhMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaApAQCAtMTY0LDcgKzE2NCw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFTU0VSVChhcnJheUxlbmd0aCk7CiAKLSAg
ICBhdXRvIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PigpOworICAgIGF1dG8gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
ID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgd2hpbGUgKGFy
cmF5TGVuZ3RoLS0pIHsKICAgICAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZTsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShidWZmZXJTaXplKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKaW5kZXggMjQ2ZjY0YTlmNjMyMmI1ODcw
Y2JiNjgyZWRiMmQ0ZWRiOTUzZWM3Yy4uM2IxMTI1MmFlNjRjYWYyZTRmZTczOWUzMWVlMTA5OTU0
ZDU2YTU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpT
Q2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpT
Q2xpZW50RGF0YS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBKU1ZNQ2xpZW50RGF0YTo6aW5p
dE5vcm1hbFdvcmxkKFZNKiB2bSkKICAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IG5l
dyBKU1ZNQ2xpZW50RGF0YSgqdm0pOwogICAgIHZtLT5jbGllbnREYXRhID0gY2xpZW50RGF0YTsg
Ly8gflZNIGRlbGV0ZXMgdGhpcyBwb2ludGVyLgogICAgIAotICAgIHZtLT5oZWFwLmFkZE1hcmtp
bmdDb25zdHJhaW50KHN0ZDo6bWFrZV91bmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0s
ICpjbGllbnREYXRhKSk7CisgICAgdm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFpbnQobWFrZVVu
aXF1ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERhdGEpKTsKICAgICAgICAg
CiAgICAgY2xpZW50RGF0YS0+bV9ub3JtYWxXb3JsZCA9IERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRl
KCp2bSwgdHJ1ZSk7CiAgICAgdm0tPm1fdHlwZWRBcnJheUNvbnRyb2xsZXIgPSBhZG9wdFJlZihu
ZXcgV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAxNmE3NmM0
OTUyOWE0YmI4NzFjYjY2Y2EzYWQ3NWEyZDc2YTgwNjU1Li5kMjM5ODU3YWEzYmRkZTlmZWI5Y2I4
NzQwZmNmNWQ2NDllMzUwZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpCiAgICAgQVNTRVJUKG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVy
LT5nZXRQcm90b3R5cGVEaXJlY3QoKm1fdm0pKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV93b3JrZXJHbG9iYWxTY29wZSk7CisgICAgbV9j
b25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQ2xpZW50PigqbV93b3JrZXJH
bG9iYWxTY29wZSk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnNldENvbnNvbGVD
bGllbnQobV9jb25zb2xlQ2xpZW50LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2Ns
YXNzLmNwcAppbmRleCAyOWM4MTg2ODM2ZWEwNTQxMWU4ZjFlZDY0MWMwNTcwY2U4MTc2ODE1Li5h
YTU2ZTJmZGU4NTU3N2FjZjljMDQ3NGM4OTg3N2Y0ZTBkNWM1MTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2NsYXNzLmNwcApAQCAtODEsNyArODEsNyBAQCBNZXRob2QqIENDbGFzczo6bWV0aG9k
TmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25z
dAogICAgIGNvbnN0IENJbnN0YW5jZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5j
ZSo+KGluc3RhbmNlKTsKICAgICBOUE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAg
ICAgaWYgKG1faXNhLT5oYXNNZXRob2QgJiYgbV9pc2EtPmhhc01ldGhvZChvYmosIGlkZW50KSkg
ewotICAgICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q01ldGhvZD4oaWRlbnQp
OworICAgICAgICBhdXRvIG1ldGhvZCA9IG1ha2VVbmlxdWU8Q01ldGhvZD4oaWRlbnQpOwogICAg
ICAgICBDTWV0aG9kKiByZXQgPSBtZXRob2QuZ2V0KCk7CiAgICAgICAgIG1fbWV0aG9kcy5zZXQo
bmFtZS5pbXBsKCksIFdURk1vdmUobWV0aG9kKSk7CiAgICAgICAgIHJldHVybiByZXQ7CkBAIC0x
MDMsNyArMTAzLDcgQEAgRmllbGQqIENDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29uc3QgQ0luc3RhbmNl
KiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5Q
T2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9pc2EtPmhhc1Byb3Bl
cnR5ICYmIG1faXNhLT5oYXNQcm9wZXJ0eShvYmosIGlkZW50KSkgewotICAgICAgICBhdXRvIGZp
ZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxDRmllbGQ+KGlkZW50KTsKKyAgICAgICAgYXV0byBmaWVs
ZCA9IG1ha2VVbmlxdWU8Q0ZpZWxkPihpZGVudCk7CiAgICAgICAgIENGaWVsZCogcmV0ID0gZmll
bGQuZ2V0KCk7CiAgICAgICAgIG1fZmllbGRzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShmaWVs
ZCkpOwogICAgICAgICByZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2pzYy9CcmlkZ2VKU0MuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlND
LmgKaW5kZXggZjJmNjIwODJhODA4YTE5ZjEwYTVkOTM1ZDkyMmI3NzNjMTIyMWMyOC4uMDRjZGRj
ZDI0Y2FhODI5YzMyZTU2ZWMyNzNhZmJkMzUxZjI1NGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
anNjL0JyaWRnZUpTQy5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFJvb3RPYmplY3Q7CiBjbGFz
cyBSdW50aW1lT2JqZWN0OwogCiBjbGFzcyBGaWVsZCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4
ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
ZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiwgY29uc3QgSW5zdGFuY2UqLCBKU1ZhbHVlKSBj
b25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2Ns
YXNzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQppbmRleCBi
ODZmNzUxYTBhNzEzOGJlMDA3NzZhNzhjYmMyYTZkNDVkZDM3NTAyLi5hM2Q4ZDMyZjI4ZGQ4MDU4
YTRhYjQ0MjczOTUzNDQwNzRmMjZjNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2NsYXNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfY2xhc3MubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCBNZXRob2QqIE9iamNDbGFzczo6bWV0aG9k
TmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdAogICAgICAg
ICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3Rv
cjpvYmpjTWV0aG9kU2VsZWN0b3JdOwogCiAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYg
W21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcqKW1ldGhvZE5hbWUuZ2V0KCld
KSB8fCAhc3RyY21wKG9iamNNZXRob2RTZWxlY3Rvck5hbWUsIGJ1ZmZlci5kYXRhKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+
KHRoaXNDbGFzcywgb2JqY01ldGhvZFNlbGVjdG9yKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1l
dGhvZCA9IG1ha2VVbmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0
b3IpOwogICAgICAgICAgICAgICAgIG1ldGhvZFB0ciA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAg
ICAgICAgICBtX21ldGhvZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShtZXRob2QpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE4OSw3ICsxODksNyBAQCBGaWVsZCogT2JqY0Ns
YXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0
YW5jZSkgY29ucwogICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNj
cmlwdE5hbWVGb3JLZXk6VVRGOEtleU5hbWVdOwogCiAgICAgICAgICAgICBpZiAoKG1hcHBlZE5h
bWUgJiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUu
Z2V0KCldKSB8fCBba2V5TmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFt
ZS5nZXQoKV0pIHsKLSAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilrZXlOYW1lKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIG5ld0ZpZWxkID0gbWFrZVVuaXF1ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBD
RlN0cmluZ1JlZilrZXlOYW1lKTsKICAgICAgICAgICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdl
dCgpOwogICAgICAgICAgICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1v
dmUobmV3RmllbGQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyMCw3ICsyMjAsNyBA
QCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEluc3RhbmNlKiBpbnN0YW5jZSkgY29ucwogICAgICAgICAgICAgICAgICAgICBtYXBwZWROYW1l
ID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5Om9iamNJdmFyTmFtZV07CiAKICAgICAg
ICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlk
Z2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB8fCAhc3RyY21wKG9iamNJdmFyTmFtZSwg
anNOYW1lLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqY0ZpZWxkPihvYmpjSVZhcik7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOwogICAgICAg
ICAgICAgICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdldCgpOwogICAgICAgICAgICAgICAgICAg
ICBtX2ZpZWxkQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCmluZGV4IGUwOGIwNDhlM2I1Njg0Mjk4Y2RlZmQ5M2ViOTE4ODM4OTE1NmY0Mzgu
LjNiOTNlMTg3ODM4NTRjMjQ0NDZlMWNmYTU3NTg0NjZmMGYwYTdmNDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBpZiAoW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFy
Z3VtZW50czopXSl7CiAgICAgICAgIE9iamNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8
T2JqY0NsYXNzKj4ob2JqY0luc3RhbmNlLT5nZXRDbGFzcygpKTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9kKHN0ZDo6bWFrZV91bmlxdWU8T2JqY01l
dGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZy
b21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChtYWtlVW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFz
cy0+aXNhKCksIEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0Ondp
dGhBcmd1bWVudHM6KSkpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0g
c3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+anNDYWxsZWUoKSktPnBy
b3BlcnR5TmFtZSgpOwogICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUo
bmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9
IG9iamNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5l
ZFVSTEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmlu
ZWRVUkxGaWx0ZXJzLmNwcAppbmRleCA4M2Q0NGUwNjdmYmRmNTQ3ZjZjODhiNjdhMzZlYjUzZjY5
MTQ2NmVlLi5mMTcxYTU4MjAzZjk4YWYxNTU0NzgwZTA1MTllMDRhMWU1M2EwYmQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmls
dGVycy5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6cHJp
bnQoKSBjb25zdAogI2VuZGlmCiAKIENvbWJpbmVkVVJMRmlsdGVyczo6Q29tYmluZWRVUkxGaWx0
ZXJzKCkKLSAgICA6IG1fcHJlZml4VHJlZVJvb3Qoc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVl
VmVydGV4PigpKQorICAgIDogbV9wcmVmaXhUcmVlUm9vdChtYWtlVW5pcXVlPFByZWZpeFRyZWVW
ZXJ0ZXg+KCkpCiB7CiB9CiAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIENvbWJpbmVkVVJMRmls
dGVyczo6YWRkUGF0dGVybih1aW50NjRfdCBhY3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBw
YXR0ZQogICAgICAgICBpZiAobmV4dEVudHJ5SW5kZXggIT0gV1RGOjpub3RGb3VuZCkKICAgICAg
ICAgICAgIGxhc3RQcmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUtPmVkZ2VzW25leHRFbnRyeUlu
ZGV4XS5jaGlsZC5nZXQoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBsYXN0UHJlZml4
VHJlZS0+ZWRnZXMuYXBwZW5kKFByZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0LmludGVybmVkKHRl
cm0pLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCl9KSk7CisgICAgICAgICAg
ICBsYXN0UHJlZml4VHJlZS0+ZWRnZXMuYXBwZW5kKFByZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0
LmludGVybmVkKHRlcm0pLCBtYWtlVW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCl9KSk7CiAgICAg
ICAgICAgICBsYXN0UHJlZml4VHJlZSA9IGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5sYXN0KCkuY2hp
bGQuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCmluZGV4IDhj
N2UzZjdkN2YxZTBkNTVhYWQ4OTM0YWJiYTVhYTcwZmI4Zjg1Y2YuLjc3ZmViNjBjNTBiYzhhNGYy
NGIyNzY5NmFkMTEwZDFlZGE3NDI4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC00OSw2
ICs0OSw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOwogLy8gMSkgSXQgc3RvcmVzIHRoZSBy
dWxlcyBmb3IgZWFjaCBjb250ZW50IGV4dGVuc2lvbi4KIC8vIDIpIEl0IHByb3ZpZGVzIEFQSXMg
Zm9yIHRoZSBXZWJDb3JlIGludGVyZmFjZXMgdG8gdXNlIHRob3NlIHJ1bGVzIGVmZmljaWVudGx5
LgogY2xhc3MgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyAtIFJ1bGUgbWFuYWdlbWVudCBpbnRlcmZhY2UuIFRo
aXMgY2FuIGJlIHVzZWQgYnkgdXBwZXIgbGF5ZXIuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRs
ZUNyeXB0by5jcHAKaW5kZXggOTZlMmQ2MzRiODkzYjM5OTMwNGE4YjJiMjg1ZTYxZjRlNDY5ZGMw
Yy4uYjJhOWE3ODM1MjI3NzI4M2Y5NWQ4NDlkMDNiMTU2ZmNkYzcyMWRlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKQEAgLTExNSwzMSArMTE1LDMxIEBAIHN0YXRpYyBF
eGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5v
cm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpEZWNyeXB0OgogICAgICAgICBz
d2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6UlNBRVNfUEtDUzFfdjFfNToKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlJTQV9PQUVQOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5
PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpBRVNfQ0JDOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkFFU19DRkI6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25h
cnk8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAg
cmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQYXJhbXM+KHBhcmFt
cyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0g
Y29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihzdGF0ZSwgdmFs
dWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOworICAg
ICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXM+
KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006IHsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihzdGF0
ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
RXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNHY21Q
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBk
ZWZhdWx0OgpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAg
ICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpITUFDOgotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNE
U0E6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRv
QWxnb3JpdGhtRWNkc2FQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CkBAIC0xNjAsMTMgKzE2
MCwxMyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVu
dGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRp
Zmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZp
ZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJl
c3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZHNh
UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOiB7CiAgICAgICAgICAgICBh
dXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFt
cz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4o
cGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGht
UnNhUHNzUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgZGVmYXVsdDoKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9B
bAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6CiAgICAg
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKQEAgLTE5MSw3ICsx
OTEsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6IHsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihz
dGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJl
c3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihw
YXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1S
c2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81
OgpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAg
ICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFt
cy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwot
ICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FI
YXNoZWRLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4ocGFyYW1zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6QUVTX0NUUjoKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlw
dG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19LVzogewog
ICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0
aG1BZXNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0p
OwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1B
ZXNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzog
ewpAQCAtMjIzLDE0ICsyMjMsMTQgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAg
ICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFy
YW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUht
YWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNB
OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREg6IHsKICAgICAg
ICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNL
ZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAg
ICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBkZWZhdWx0OgpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNy
eXB0b0FsCiAKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5
cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4oc3RhdGUsIG5ld1ZhbHVlKTsKICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6IHsKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBu
b3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhj
ZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRp
Zmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6UEJLREYyOiB7CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFs
aXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlv
bigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIu
cmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI3OSw3
ICsyNzksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6
SW1wb3J0S2V5OgogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNToKLSAgICAgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6CkBAIC0yOTAsNyArMjkwLDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNF
eGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFz
ZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElk
ZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1z
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFz
aGVkSW1wb3J0UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOgpAQCAtMjk4
LDcgKzI5OCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkFFU19LVzoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsK
ICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3Jp
dGhtSG1hY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKQEAgLTMwNywxOSArMzA3LDE5
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZp
ZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVy
LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9
IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMp
OworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5
UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9
IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFs
dWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihw
YXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlBCS0RGMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIEV4
Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9y
bWFsaXplQ3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OlVud3JhcEtleToKICAgICAgICAg
c3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkFFU19LVzoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIEV4Y2VwdGlv
bk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXpl
Q3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6
IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxn
b3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhN
QUM6IHsKQEAgLTM1NCwxMiArMzU0LDEyIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAg
ICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAg
IHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1
ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpI
S0RGOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
IH07CkBAIC01MjAsMTYgKzUyMCwxNiBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+IGNyb3NzVGhyZWFkQ29weUltcG9ydFBhcmFtcyhjbwogewogICAg
IHN3aXRjaCAoaW1wb3J0UGFyYW1zLnBhcmFtZXRlcnNDbGFzcygpKSB7CiAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6Tm9uZTogewotICAgICAgICBhdXRvIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oKTsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7
CiAgICAgICAgIHJlc3VsdC0+aWRlbnRpZmllciA9IGltcG9ydFBhcmFtcy5pZGVudGlmaWVyOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBjYXNlIENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM6OkNsYXNzOjpFY0tleVBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRD
b3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6SG1hY0tleVBhcmFt
czoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tl
eVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQ
YXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobUhtYWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpSc2FIYXNoZWRJbXBvcnRQYXJhbXM6Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBh
cmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZElt
cG9ydFBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3du
Y2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykp
KTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5j
cHAKaW5kZXggZGJjY2M5MDBmMzM3NDhjZDIwNjdmNjBjYjI5MGMwYmQ2MDA2NTUzMy4uYTQyZjU2
NGY4MWZlMWYwZWEwOTQ0M2QxZjEwNTNjMWMzY2QwY2YzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMjE3LDEyICsyMTcsMTIgQEAgY2xhc3MgQ1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7
CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNhdGVnb3J5KCkpIHsKICAgICAgICAgY2FzZSBDYWxj
dWxhdGlvbkNhdGVnb3J5OjpOdW1iZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxjRXhwcmVzc2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5m
bG9hdFZhbHVlKCkpOwogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0aDoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3Ro
PihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBX
ZWJDb3JlOjpGaXhlZCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJl
c3Npb25MZW5ndGg+KExlbmd0aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJz
aW9uRGF0YSksIFdlYkNvcmU6OkZpeGVkKSk7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRl
Z29yeTo6UGVyY2VudDoKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50
TGVuZ3RoOiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVz
c2lvbkxlbmd0aD4obV92YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9u
IHwgUGVyY2VudENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obV92YWx1ZS0+Y29udmVydFRvTGVu
Z3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24+KGNvbnZlcnNpb25E
YXRhKSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gT25seSB0eXBlcyB0aGF0IGNvdWxkIGJlIHBh
cnQgb2YgYSBMZW5ndGggZXhwcmVzc2lvbiBjYW4gYmUgY29udmVydGVkCiAgICAgICAgIC8vIHRv
IGEgQ2FsY0V4cHJlc3Npb25Ob2RlLiBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50TnVtYmVy
IG1ha2VzIG5vIHNlbnNlIGFzIGEgTGVuZ3RoLgpAQCAtNTIwLDcgKzUyMCw3IEBAIGNsYXNzIENT
U0NhbGNPcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIG5vZGVzLnVuY2hlY2tl
ZEFwcGVuZChXVEZNb3ZlKG5vZGUpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShub2RlcyksIG1fb3Bl
cmF0b3IpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlv
bj4oV1RGTW92ZShub2RlcyksIG1fb3BlcmF0b3IpOwogICAgIH0KIAogICAgIGRvdWJsZSBkb3Vi
bGVWYWx1ZSgpIGNvbnN0IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RGVmYXVsdFN0eWxlU2hlZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5
bGVTaGVldHMuY3BwCmluZGV4IGM0NGNlYmM1MTIwZWQ4MzI2ZDlhMWIyYTY1NmI5MzY3YjZlMTkx
MjguLmU1YWU4Yjc3YTUxNGYwOWMzYjQ5NDQxYjU2MmY1YzJhMWVjNzUxNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCkBAIC0xNjcsMTEgKzE2Nywx
MSBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQog
ICAgICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwotICAgICAgICBkZWZhdWx0UXVpcmtzU3R5
bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgICAgICBkZWZh
dWx0UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIH0K
IAotICAgIGRlZmF1bHRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKS5yZWxlYXNl
KCk7Ci0gICAgZGVmYXVsdFByaW50U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCku
cmVsZWFzZSgpOworICAgIGRlZmF1bHRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxl
YXNlKCk7CisgICAgZGVmYXVsdFByaW50U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVs
ZWFzZSgpOwogICAgIG1lZGlhUXVlcnlTdHlsZVNoZWV0ID0gJlN0eWxlU2hlZXRDb250ZW50czo6
Y3JlYXRlKENTU1BhcnNlckNvbnRleHQoVUFTaGVldE1vZGUpKS5sZWFrUmVmKCk7CiAKICAgICAv
LyBTdHJpY3QtbW9kZSBydWxlcy4KQEAgLTE5MCwxMCArMTkwLDEwIEBAIHZvaWQgQ1NTRGVmYXVs
dFN0eWxlU2hlZXRzOjpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKICAgICBBU1NFUlQoIWRlZmF1
bHRTdHlsZSk7CiAgICAgQVNTRVJUKCFzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCk7CiAKLSAgICBk
ZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAg
IGRlZmF1bHRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAgICAgLy8g
VGhlcmUgYXJlIG5vIG1lZGlhLXNwZWNpZmljIHJ1bGVzIGluIHRoZSBzaW1wbGUgZGVmYXVsdCBz
dHlsZS4KICAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IGRlZmF1bHRTdHlsZTsKLSAgICBkZWZhdWx0
UXVpcmtzU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAg
IGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNlKCk7CiAK
ICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChzaW1wbGVVc2VyQWdl
bnRTdHlsZVNoZWV0LCBzdHJsZW4oc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgIGRl
ZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKnNpbXBsZURlZmF1bHRTdHlsZVNoZWV0LCBz
Y3JlZW5FdmFsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5kZXggNzcwOWI1ZGVh
ZmJmZTlmOWFiMTFhYzA3N2M2MTlkNzk0ZDE2NDJmMi4uNjQ2YzE0YTExYWM2NDViOTkyNjE0OWYy
OWU5ODAwYzRjNzI2N2JjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC03Nywx
MCArNzcsMTAgQEAgdm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYg
Zm9udEZhY2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgRG8KICAgICAgICAgICAgIGJvb2wgYWxs
b3dEb3dubG9hZGluZyA9IGZvdW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmRv
d25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCgpKTsKICAgICAgICAgICAgIGlmIChhbGxvd0Rv
d25sb2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBkb2N1bWVudCkgewogICAg
ICAgICAgICAgICAgIGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRlbS5jYWNoZWRGb250
KGRvY3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNo
YWRvd1RyZWUpKQotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBjYWNoZWRGb250
KTsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNv
dXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1
ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgbnVsbHB0ciwg
Zm9udEZhY2VFbGVtZW50KTsKKyAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9u
dEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNl
RWxlbWVudCk7CiAKICAgICAgICAgaWYgKHNvdXJjZSkKICAgICAgICAgICAgIGZvbnRGYWNlLmFk
b3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0
LmNwcAppbmRleCAwNWUzYTNmNmUyMWJjOTI4MTc4NTU2OWExNGFhNTBmZjUyZTRhMjcwLi4xOGU4
MzRkNjkwYTZlYjUxMDFkYzkwYzhkZTVkYjVlN2ExYjBjNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNldC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0
OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29uc3QgU3RyaW5nJiBm
YW1pbAogICAgICAgICBmYW1pbHlMaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVGb250RmFtaWx5VmFsdWUoZmFtaWx5TmFtZSkpOwogICAgICAgICBmYWNlLT5zZXRG
YW1pbGllcyhmYW1pbHlMaXN0LmdldCgpKTsKICAgICAgICAgZmFjZS0+c2V0Rm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllcyhpdGVtKTsKLSAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2Uoc3RkOjptYWtl
X3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOworICAg
ICAgICBmYWNlLT5hZG9wdFNvdXJjZShtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmYWNl
LmdldCgpLCBmYW1pbHlOYW1lKSk7CiAgICAgICAgIEFTU0VSVCghZmFjZS0+Y29tcHV0ZUZhaWx1
cmVTdGF0ZSgpKTsKICAgICAgICAgZmFjZXMuYXBwZW5kKFdURk1vdmUoZmFjZSkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKaW5kZXggZGU2ZjM5ZDNmNWQ4NzMx
ZDk5ZTVlYjNjOTY4ZTI5YWQxZWFjYmZlNi4uYzZjNWMzOTU0MGE1YzUwNWNkZjRkNTljNzQ2YzM5
MTg1YzllMDNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKQEAgLTE0
MCw3ICsxNDAsNyBAQCBDU1NSdWxlKiBDU1NHcm91cGluZ1J1bGU6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0CiBDU1NSdWxlTGlzdCYgQ1NTR3JvdXBpbmdSdWxlOjpjc3NSdWxlcygpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAgICBtX3J1bGVMaXN0
Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTR3JvdXBp
bmdSdWxlPj4oY29uc3RfY2FzdDxDU1NHcm91cGluZ1J1bGUmPigqdGhpcykpOworICAgICAgICBt
X3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTR3Jv
dXBpbmdSdWxlPj4oY29uc3RfY2FzdDxDU1NHcm91cGluZ1J1bGUmPigqdGhpcykpOwogICAgIHJl
dHVybiAqbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IGZmZGQzZDBhYTY1N2YyNWVhZjMxZDU3
MGM1ODY4ZWQ1MzA5ZTJlZmQuLjU1NTFmMmM2OTE3ZDAzMzA3MjZhY2RmODEwOTFhOTFmYWI0ZTBi
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAK
QEAgLTExMCw3ICsxMTAsNyBAQCBHZW5lcmF0ZWRJbWFnZSogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplKQogdm9pZCBDU1NJbWFnZUdlbmVy
YXRvclZhbHVlOjpzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplLCBHZW5lcmF0
ZWRJbWFnZSYgaW1hZ2UpCiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlcy5jb250YWlucyhzaXplKSk7
Ci0gICAgbV9pbWFnZXMuYWRkKHNpemUsIHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkR2VuZXJhdGVk
SW1hZ2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOworICAgIG1faW1hZ2VzLmFkZChzaXplLCBtYWtl
VW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKIH0KIAog
dm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpldmljdENhY2hlZEdlbmVyYXRlZEltYWdlKEZs
b2F0U2l6ZSBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1l
c1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4
IGM5MDk4MzJkYTBlNTE5MDI1MzUxM2EzOTgzMTkxYTdjMmYzOTMwMDUuLjZmMWViMzM4NmQ5ZmJj
NzJkNDQzNzg1ZDFkMTljNGRkOGM1YzM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBDU1NLZXlmcmFtZVJ1bGUqIENTU0tleWZy
YW1lc1J1bGU6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiBDU1NSdWxlTGlzdCYgQ1NTS2V5
ZnJhbWVzUnVsZTo6Y3NzUnVsZXMoKQogewogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBl
cikKLSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2
ZUNTU1J1bGVMaXN0PENTU0tleWZyYW1lc1J1bGU+PigqdGhpcyk7CisgICAgICAgIG1fcnVsZUxp
c3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNS
dWxlPj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDQ4MGE4OTg1MjM3YWRhOTBhMTE3
OGUwYjI3OWUwZTY2ODA3ZTMzNDEuLmM4OGQxZWRjOTNiN2E2YzgzZjIxNzdiYWM3NjdmOWI3ODJl
ZTc1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMyOSw3ICszMjks
NyBAQCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKCkKICAgICBp
ZiAoIWNhbkFjY2Vzc1J1bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICgh
bV9ydWxlTGlzdENTU09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9
IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVTaGVldENTU1J1bGVMaXN0Pih0aGlzKTsKKyAgICAgICAg
bV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8U3R5bGVTaGVldENTU1J1bGVMaXN0
Pih0aGlzKTsKICAgICByZXR1cm4gbV9ydWxlTGlzdENTU09NV3JhcHBlci5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAppbmRleCA2NWEyZmRmOGRm
YWNiNGQ3ZjcxZDc2MWNiMjE2NmIxYTkyODRjMDcwLi45MTRiZGU0YTJkZTlhYTIxMDZjMDEwNjNi
ODA4ZDljYTRmZmY2ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFp
bnRXb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0
LmNwcApAQCAtNDUsNyArNDUsNyBAQCBET01DU1NQYWludFdvcmtsZXQqIERPTUNTU1BhaW50V29y
a2xldDo6ZnJvbShET01DU1NOYW1lc3BhY2UmIGNzcykKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50
ID0gc3RhdGljX2Nhc3Q8RE9NQ1NTUGFpbnRXb3JrbGV0Kj4oU3VwcGxlbWVudDxET01DU1NOYW1l
c3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1l
bnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01D
U1NQYWludFdvcmtsZXQ+KGNzcyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3MpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3
U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZjc3MsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAppbmRleCA3ZWNkOTNkN2Rj
M2Q0MzJlYWY4MmJjOTU2ZTYxZDQ4OWE1MTA2MjViLi4wZGY2YWFlOTZmMGUxYzcwYjM3NTU2MTY0
OWVlMzVkMjhlYjRjMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVn
aXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1Jl
Z2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCkBAIC04NCw3ICs4NCw3IEBAIERPTUNTU1JlZ2lzdGVy
Q3VzdG9tUHJvcGVydHkqIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OmZyb20oRE9NQ1NT
TmFtZXNwYWNlCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1Jl
Z2lzdGVyQ3VzdG9tUHJvcGVydHkqPihTdXBwbGVtZW50PERPTUNTU05hbWVzcGFjZT46OmZyb20o
JmNzcywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3Vz
dG9tUHJvcGVydHk+KGNzcyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlx
dWU8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eT4oY3NzKTsKICAgICAgICAgc3VwcGxlbWVu
dCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmY3NzLCBzdXBwbGVt
ZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKaW5kZXggZDg1OTZmZDFiMjQ1OWRlMDdlMWM4OTljYzA3
OWZjMTk4NTExNjVlOS4uODJiN2ZjYzMwZTU4Mjc0OTkyMDJlMjhiODMwODZjZjBmYTQ0YWM1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBib29sIERvY3VtZW50UnVsZVNldHM6OnNfaXNJbnZhbGlkYXRpbmdTdHlsZVdpdGhSdWxlU2V0
cyB7IGZhbHNlIH07CiBEb2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiAgICAgOiBtX3N0eWxlUmVzb2x2ZXIoc3R5bGVSZXNvbHZl
cikKIHsKLSAgICBtX2F1dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOwor
ICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV9hdXRob3JT
dHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC03OCw3ICs3OCw3IEBAIHZv
aWQgRG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNlckFnZW50TWVkaWFRdWVyeVN0eWxlSWZOZWVk
ZWQoKSBjb25zdAogCiAgICAgLy8gTWVkaWEgcXVlcmllcyBvbiB1c2VyIGFnZW50IHNoZWV0IG5l
ZWQgdG8gZXZhbHVhdGVkIGluIGRvY3VtZW50IGNvbnRleHQuIFRoZXkgYmVoYXZlIGxpa2UgYXV0
aG9yIHNoZWV0cyBpbiB0aGlzIHJlc3BlY3QuCiAgICAgYXV0byYgbWVkaWFRdWVyeUV2YWx1YXRv
ciA9IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7Ci0gICAgbV91c2VyQWdl
bnRNZWRpYVF1ZXJ5U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV91
c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV91
c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpDU1NEZWZhdWx0U3R5
bGVTaGVldHM6Om1lZGlhUXVlcnlTdHlsZVNoZWV0LCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCAmbV9z
dHlsZVJlc29sdmVyKTsKIAogICAgIC8vIFZpZXdwb3J0IGRlcGVuZGVudCBxdWVyaWVzIGFyZSBj
dXJyZW50bHkgdG9vIGluZWZmaWNpZW50IHRvIGFsbG93IG9uIFVBIHNoZWV0LgpAQCAtOTYsNyAr
OTYsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5bGUoKQogewog
ICAgIGF1dG8mIGV4dGVuc2lvblN0eWxlU2hlZXRzID0gbV9zdHlsZVJlc29sdmVyLmRvY3VtZW50
KCkuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKTsKICAgICBhdXRvJiBtZWRpYVF1ZXJ5RXZhbHVhdG9y
ID0gbV9zdHlsZVJlc29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3IoKTsKLSAgICBhdXRvIHRlbXBV
c2VyU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgYXV0byB0ZW1wVXNl
clN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBw
YWdlVXNlclNoZWV0ID0gZXh0ZW5zaW9uU3R5bGVTaGVldHMucGFnZVVzZXJTaGVldCgpKQogICAg
ICAgICB0ZW1wVXNlclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYWdlVXNlclNoZWV0LT5jb250
ZW50cygpLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCAmbV9zdHlsZVJlc29sdmVyKTsKICAgICBjb2xs
ZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGV4dGVuc2lvblN0eWxlU2hlZXRzLmluamVjdGVk
VXNlclN0eWxlU2hlZXRzKCksICp0ZW1wVXNlclN0eWxlLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCBt
X3N0eWxlUmVzb2x2ZXIpOwpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMp
CiAgICAgc2l6ZV90IHNpemUgPSBydWxlcy5zaXplKCk7CiAgICAgaWYgKCFzaXplKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHJ1bGVTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bGVTZXQ+KCk7CisgICAgYXV0byBydWxlU2V0ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBydWxlU2V0LT5hZGRS
dWxlKHJ1bGVzW2ldLnJ1bGUsIHJ1bGVzW2ldLnNlbGVjdG9ySW5kZXgsIHJ1bGVzW2ldLnNlbGVj
dG9yTGlzdEluZGV4KTsKICAgICBydWxlU2V0LT5zaHJpbmtUb0ZpdCgpOwpAQCAtMTI4LDcgKzEy
OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3Qg
VmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMpCiB2b2lkIERvY3VtZW50UnVsZVNldHM6OnJlc2V0
QXV0aG9yU3R5bGUoKQogewogICAgIG1faXNBdXRob3JTdHlsZURlZmluZWQgPSB0cnVlOwotICAg
IG1fYXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgbV9hdXRo
b3JTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX2F1dGhvclN0eWxlLT5kaXNh
YmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAKQEAgLTE5NSwxMiArMTk1LDEyIEBAIHN0YXRpYyBW
ZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNv
bnN0IEF0b21TdHJpbmcmCiAgICAgICAgICAgICBhdXRvIGFycmF5SW5kZXggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oKmZlYXR1cmUubWF0Y2hFbGVtZW50KTsKICAgICAgICAgICAgIGF1dG8mIHJ1
bGVTZXQgPSBtYXRjaEVsZW1lbnRBcnJheVthcnJheUluZGV4XTsKICAgICAgICAgICAgIGlmICgh
cnVsZVNldCkKLSAgICAgICAgICAgICAgICBydWxlU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxl
U2V0PigpOworICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7
CiAgICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKGZlYXR1cmUucnVsZSwgZmVhdHVyZS5zZWxl
Y3RvckluZGV4LCBmZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICAgICAgICAgIGlmIChm
ZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKQogICAgICAgICAgICAgICAgIGludmFsaWRhdGlv
blNlbGVjdG9yQXJyYXlbYXJyYXlJbmRleF0uYXBwZW5kKGZlYXR1cmUuaW52YWxpZGF0aW9uU2Vs
ZWN0b3IpOwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKKyAgICAgICAg
YXV0byBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9yPEludmFsaWRhdGlv
blJ1bGVTZXQ+PigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0Y2hFbGVt
ZW50QXJyYXkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChtYXRjaEVsZW1lbnRBcnJh
eVtpXSkKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25SdWxlU2V0cy0+YXBwZW5kKHsgc3Rh
dGljX2Nhc3Q8TWF0Y2hFbGVtZW50PihpKSwgV1RGTW92ZShtYXRjaEVsZW1lbnRBcnJheVtpXSks
IFdURk1vdmUoaW52YWxpZGF0aW9uU2VsZWN0b3JBcnJheVtpXSkgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAppbmRleCAwNWQzODVhNTU4YzQ4YzQ4ZWU4
ZGE5MGY2YTE4Y2I0ZTc1YTZhOTVhLi4wNWI0NTdmZDY4MjBjNjdmMGUwZmJlOTMwODdiOGNlZjA4
MjllYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAK
QEAgLTI5MSw3ICsyOTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldDo6UnVsZURhdGFWZWN0
b3I+IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZQogICAgIGlmIChtX21h
dGNoZWRSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHJ1
bGVEYXRhVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0OjpSdWxlRGF0YVZlY3Rvcj4o
KTsKKyAgICBhdXRvIHJ1bGVEYXRhVmVjdG9yID0gbWFrZVVuaXF1ZTxSdWxlU2V0OjpSdWxlRGF0
YVZlY3Rvcj4oKTsKICAgICBydWxlRGF0YVZlY3Rvci0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X21hdGNoZWRSdWxlcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgbWF0Y2hlZFJ1bGUgOiBtX21h
dGNoZWRSdWxlcykKICAgICAgICAgcnVsZURhdGFWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCgqbWF0
Y2hlZFJ1bGUucnVsZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggMjEyMjQ1ZGVk
Y2FmZjk1NmFkNDQxMDdiOWViNDRjYjQxMzI4YWFkYi4uZTFiMWFmMjBmYjExYWUzZGZlZTE5MmNh
YzkyZTYyY2RlYTU1N2RjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgcG9wdWxhdGVGb250RmFjZVdp
dGhBcnJheUJ1ZmZlcihDU1NGb250RmFjZSYgZm9udEZhY2UsIFJlZjxKU0M6OkFycmF5QnVmZmVy
Vmlldz4mJiBhcnJheUJ1ZmZlclZpZXcpCiB7Ci0gICAgYXV0byBzb3VyY2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgU3RyaW5nKCksIG51bGxwdHIsIG51
bGxwdHIsIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CisgICAgYXV0byBzb3VyY2UgPSBtYWtl
VW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgU3RyaW5nKCksIG51bGxwdHIsIG51
bGxwdHIsIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgZm9udEZhY2UuYWRvcHRTb3Vy
Y2UoV1RGTW92ZShzb3VyY2UpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4
IDNiMjBkNDEzMzM3NTMzZDZjYjNjNThjYjNkMTA0ZjBmMDRiNWU2MTkuLmUxZTFkNzIxMjExZTZk
ZTAxYThhODZlMGQ0MGQ4NTI4OTk3YjM1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zMjksNyArMzI5LDcg
QEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb246OndyYXBGb3JEZXByZWNhdGVkQ1MKICAgICAvLyBUaGUgbWFwIGlzIGhlcmUgdG8gbWFp
bnRhaW4gdGhlIG9iamVjdCBpZGVudGl0eSBvZiB0aGUgQ1NTVmFsdWVzIG92ZXIgbXVsdGlwbGUg
aW52b2NhdGlvbnMuCiAgICAgLy8gRklYTUU6IEl0IGlzIGxpa2VseSB0aGF0IHRoZSBpZGVudGl0
eSBpcyBub3QgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eSBhbmQgdGhpcyBjb2RlIHNo
b3VsZCBiZSByZW1vdmVkLgogICAgIGlmICghbV9jc3NvbVZhbHVlV3JhcHBlcnMpCi0gICAgICAg
IG1fY3Nzb21WYWx1ZVdyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPENTU1ZhbHVl
KiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4+PigpOworICAgICAgICBtX2Nzc29tVmFs
dWVXcmFwcGVycyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVj
YXRlZENTU09NVmFsdWU+Pj4oKTsKICAgICAKICAgICBhdXRvJiBjbG9uZWRWYWx1ZSA9IG1fY3Nz
b21WYWx1ZVdyYXBwZXJzLT5hZGQoaW50ZXJuYWxWYWx1ZSwgV2Vha1B0cjxEZXByZWNhdGVkQ1NT
T01WYWx1ZT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmIChjbG9uZWRWYWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUnVsZUZlYXR1cmUuY3BwCmluZGV4IGRmZmRhNmY1MWRmOTU0ZDIwNmYwM2QwYzczNTYw
ZGRhMzkyZDE0MzAuLjQ0ZWViMWQ3MDJkMmY5ZGNiNmIxMmI1NTI3ODE1NjdmZDAwZDJlNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUnVs
ZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAK
ICAgICBmb3IgKGF1dG8mIG5hbWVBbmRNYXRjaCA6IHNlbGVjdG9yRmVhdHVyZXMuY2xhc3Nlcykg
ewogICAgICAgICBjbGFzc1J1bGVzLmVuc3VyZShuYW1lQW5kTWF0Y2guZmlyc3QsIFtdIHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwog
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5y
dWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5k
ZXgoKSwgbmFtZUFuZE1hdGNoLnNlY29uZCkpOwogICAgICAgICBpZiAobmFtZUFuZE1hdGNoLnNl
Y29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBjbGFzc2VzQWZmZWN0aW5n
SG9zdC5hZGQobmFtZUFuZE1hdGNoLmZpcnN0KTsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFJ1
bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQog
ICAgICAgICBhdXRvKiBzZWxlY3RvciA9IHNlbGVjdG9yQW5kTWF0Y2guZmlyc3Q7CiAgICAgICAg
IGF1dG8gbWF0Y2hFbGVtZW50ID0gc2VsZWN0b3JBbmRNYXRjaC5zZWNvbmQ7CiAgICAgICAgIGF0
dHJpYnV0ZVJ1bGVzLmVuc3VyZShzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgW10gewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURhdGEuc2VsZWN0b3JJ
bmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBtYXRjaEVsZW1lbnQsIHNlbGVj
dG9yKSk7CiAgICAgICAgIGlmIChtYXRjaEVsZW1lbnQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQog
ICAgICAgICAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKHNlbGVjdG9yLT5hdHRyaWJ1
dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKQEAgLTIwMSwxNCAr
MjAxLDE0IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYg
b3RoZXIpCiAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmRWZWN0b3Iob3RoZXIudW5j
b21tb25BdHRyaWJ1dGVSdWxlcyk7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZVBhaXIgOiBvdGhl
ci5jbGFzc1J1bGVzKSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5r
ZXksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxl
RmVhdHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZl
YXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5
VmFsdWVQYWlyLnZhbHVlKTsKICAgICB9CiAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG90
aGVyLmNsYXNzZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmNsYXNzZXNBZmZlY3RpbmdI
b3N0LmVuZCgpKTsKIAogICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuYXR0cmli
dXRlUnVsZXMpIHsKICAgICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKGtleVZhbHVlUGFpci5r
ZXksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxl
RmVhdHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZl
YXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZFZlY3Rvcigqa2V5
VmFsdWVQYWlyLnZhbHVlKTsKICAgICB9CiAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRk
KG90aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmF0dHJpYnV0ZXNB
ZmZlY3RpbmdIb3N0LmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxl
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRleCBmYTZiOTEyMDIx
M2VjNTRiYjY1OTAzY2ZhZTY2OWJkNDY2ZmJiMDI3Li4zYmJiYmZlYmNhMDA5OTc4MmFmMzk4MWVi
ODY3MzZjZTY4MDM2ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0xODIsNyArMTgyLDcg
QEAgdm9pZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoY29uc3QgQXRvbVN0cmluZyYga2V5LCBBdG9t
UnVsZU1hcCYgbWFwLCBjb25zdCBSdWxlRGEKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8mIHJ1
bGVzID0gbWFwLmFkZChrZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXJ1
bGVzKQotICAgICAgICBydWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZURhdGFWZWN0b3I+KCk7
CisgICAgICAgIHJ1bGVzID0gbWFrZVVuaXF1ZTxSdWxlRGF0YVZlY3Rvcj4oKTsKICAgICBydWxl
cy0+YXBwZW5kKHJ1bGVEYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRl
ckNvbnZlcnRlci5oCmluZGV4IDY5YWY1NTgxNTY1NGJlMzIwZjFhOWZkNzFhNzc2NjdkOTI5M2Zh
OTcuLjg4Nzc1YWQ3YmE4YWE1OTBhZDdiZjcyYTM3ZDNiNWY2NWI1ZDJkNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTM0OCw5ICszNDgsOSBAQCBp
bmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvMTAwUGVyY2VudE1p
bnVzTGVuZ3RoKGNvbnN0IExlbmd0aAogICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2FsYyBleHBy
ZXNzaW9uOiBjYWxjKDEwMCUgLSBsZW5ndGgpCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxD
YWxjRXhwcmVzc2lvbk5vZGU+PiBsZW5ndGhzOwogICAgIGxlbmd0aHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSgyKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOwotICAgIGxlbmd0
aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+
KGxlbmd0aCkpOwotICAgIGF1dG8gb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9u
T3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKKyAg
ICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3Ro
PihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1h
a2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOworICAgIGF1dG8gb3AgPSBt
YWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxj
T3BlcmF0b3I6OlN1YnRyYWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6
OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggOWExOTFkMTdkZDhlM2VkY2MxYzEzMGMyNjU5
MGUwY2E2ZjRlMzZhMy4uYzVjMmJmNWQwZjVmYzc5MTBhZmYxNjI1OTk5MGM0Mzg2NjBjMTQyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtODEzLDcgKzgxMyw3
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dW
YWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVz
b2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKnNoYWRvd1ZhbHVlLmNvbG9yKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmNvbG9y
KCk7Ci0gICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0
YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09
IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENv
bG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IG1ha2VVbmlxdWU8
U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHBy
b3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBj
b2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQ
cm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0
byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQpA
QCAtODI5LDcgKzgyOSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJ
bml0aWFsVGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sCiAKIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRvdyhTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyKQogewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNo
YWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSA/IHN0ZDo6bWFr
ZV91bmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNo
YWRvdygpKSA6IG51bGxwdHIpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNo
YWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSA/IG1ha2VVbmlx
dWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+dGV4dFNoYWRvdygp
KSA6IG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2
YWx1ZSkKQEAgLTg0NCw3ICs4NDQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5pdGlhbEJveFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdgogCiBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEJveFNoYWRvdyhTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
Qm94U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJv
eFNoYWRvdygpKSA6IG51bGxwdHIpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Qm94
U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93KCkgPyBtYWtlVW5p
cXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygp
KSA6IG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZh
bHVlKQpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlQ29udGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAgICAg
ICAgICAgQ1NTVmFsdWVJRCBsaXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxl
SWRlbnQoKTsKICAgICAgICAgICAgIGlmIChsaXN0U3R5bGVJZGVudCAhPSBDU1NWYWx1ZU5vbmUp
CiAgICAgICAgICAgICAgICAgbGlzdFN0eWxlVHlwZSA9IHN0YXRpY19jYXN0PExpc3RTdHlsZVR5
cGU+KGxpc3RTdHlsZUlkZW50IC0gQ1NTVmFsdWVEaXNjKTsKLSAgICAgICAgICAgIGF1dG8gY291
bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXJWYWx1ZS0+aWRl
bnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpKTsKKyAg
ICAgICAgICAgIGF1dG8gY291bnRlciA9IG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50
ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFy
YXRvcigpKTsKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudChX
VEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAg
ICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXgg
NGNmNmM2ZjdhYjdkZjlmYzA0MzM0YmJlOGRkMDVhM2I1NTllOTM1Yy4uMTljYjAzM2Q3MGJiNWE4
OTY4NjU1NzI3NTViOTZiOTc3MDUxY2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5jcHAKQEAgLTE1MzAsNyArMTUzMCw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24mIE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKQogICAgICAgICBB
U1NFUlQoIW1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVtZW50KCkpOwogICAgICAgICByZXR1cm4g
Km1fY3Nzb21XcmFwcGVyOwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcyk7CisgICAgbV9jc3Nv
bVdyYXBwZXIgPSBtYWtlVW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRo
aXMpOwogICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiB9CiAKQEAgLTE1NDAsNyArMTU0MCw3
IEBAIENTU1N0eWxlRGVjbGFyYXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlu
bGluZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5CiAgICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBl
ci0+cGFyZW50RWxlbWVudCgpID09ICZwYXJlbnRFbGVtZW50KTsKICAgICAgICAgcmV0dXJuICpt
X2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKKyAg
ICBtX2Nzc29tV3JhcHBlciA9IG1ha2VVbmlxdWU8SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbj4o
KnRoaXMsIHBhcmVudEVsZW1lbnQpOwogICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAzYTUyYzM2MTk5YTc5YTI1ZTA5
YzAxZDhmYTBjNTBhZWZmNjgyYmI1Li5kZTRkYTVmNTUxMjk5MDkzMWRhODZjNWM3ZTgzYmNiMTAx
ODA4YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNzE1LDcgKzE3
MTUsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6
OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKAogICAgICAgICBpZiAoYXV0aG9yUm9sbGJh
Y2spCiAgICAgICAgICAgICByZXR1cm4gYXV0aG9yUm9sbGJhY2s7CiAKLSAgICAgICAgYXV0byBu
ZXdBdXRob3JSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGly
ZWN0aW9uLCB3cml0aW5nTW9kZSkpOworICAgICAgICBhdXRvIG5ld0F1dGhvclJvbGxiYWNrKG1h
a2VVbmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CiAK
ICAgICAgICAgLy8gVGhpcyBzcGVjaWFsIHJvbGxiYWNrIGNhc2NhZGUgY29udGFpbnMgVUEgcnVs
ZXMgYW5kIHVzZXIgcnVsZXMgYnV0IG5vIGF1dGhvciBydWxlcy4KICAgICAgICAgbmV3QXV0aG9y
Um9sbGJhY2stPmFkZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdl
cy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUsIGZhbHNlKTsKQEAg
LTE3MzIsNyArMTczMiw3IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5
bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgICAgIGlmICh1
c2VyUm9sbGJhY2spCiAgICAgICAgICAgICByZXR1cm4gdXNlclJvbGxiYWNrOwogCi0gICAgICAg
IGF1dG8gbmV3VXNlclJvbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVz
PihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3VXNlclJvbGxiYWNr
KG1ha2VVbmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7
CiAKICAgICAgICAgLy8gVGhpcyBzcGVjaWFsIHJvbGxiYWNrIGNhc2NhZGUgY29udGFpbnMgb25s
eSBVQSBydWxlcy4KICAgICAgICAgbmV3VXNlclJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVzKG1h
dGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJh
bmdlcy5sYXN0VUFSdWxlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
bWFrZXByb3AucGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKaW5kZXggOTk3YzRj
MDM2N2RkNWQwZDY0NWQ1ZWRmNTFlZWM0YmZiMGMzMjEwNS4uMDJhMzZlZmUwNWQzY2M5ZmU5N2Rk
NWMwZTI1OTNhZTc5ZmQ2YzJjNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vw
cm9wLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbApAQCAtODExLDcgKzgx
MSw3IEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJpdFZhbHVlU2V0dGVyIHsK
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIqIHByZXZpb3VzQ2hpbGQg
PSBudWxscHRyO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJmb3IgKGF1dG8q
IHBhcmVudCA9ICZzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIgLiBnZXRMYXllcnNGdW5j
dGlvbigkbmFtZSkgLiAiKCk7IHBhcmVudCAmJiBwYXJlbnQtPiIgLiAkdGVzdEZ1bmN0aW9uIC4g
IigpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQoKSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgaWYgKCFjaGlsZCkge1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxG
aWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7CisgICRzZXR0
ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KG1h
a2VVbmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4i
OwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgY2hpbGQgPSBwcmV2aW91
c0NoaWxkLT5uZXh0KCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICB9
XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBjaGlsZC0+IiAuICRzZXR0
ZXIgLiAiKHBhcmVudC0+IiAuICRnZXR0ZXIgLiAiKCkpO1xuIjsKQEAgLTgzNyw3ICs4MzcsNyBA
QCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eVZhbHVlU2V0dGVyIHsKICAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIgICAgLy8gV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50
byBhIGxheWVyLCBjcmVhdGluZyBuZXcgbGF5ZXJzIGFzIG5lZWRlZC5cbiI7CiAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1Zh
bHVlTGlzdD4odmFsdWUpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAg
ICAgICAgaWYgKCFjaGlsZCkge1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExh
eWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOworICAkc2V0dGVyQ29u
dGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQobWFr
ZVVuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtcbiI7
CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgY2hpbGQgPSBwcmV2
aW91c0NoaWxkLT5uZXh0KCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAg
ICAgICAgfVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGVNYXAoKS0+IiAuIGdldEZpbGxMYXllck1hcGZ1bmN0aW9uKCRuYW1lKSAu
ICIoIiAuICRDU1NQcm9wZXJ0eUlkIC4gIiwgKmNoaWxkLCBpdGVtKTtcbiI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAppbmRleCA2N2NmZGY1NmQ2MjUwNTNh
MDExMTk5MmQ3MTFmOGM4ZmZkYjk1ZGMyLi5kNzVlNGZjOTJjNzdiMDdiMWU1M2RhZDMzODdlNTUx
YTM5MGMyNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgQ1NTUGFyc2VySW1wbDo6Q1NTUGFyc2VySW1wbChjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHN0cmkKICAgICAsIG1fc3R5
bGVTaGVldChzdHlsZVNoZWV0KQogICAgICwgbV9vYnNlcnZlcldyYXBwZXIod3JhcHBlcikKIHsK
LSAgICBtX3Rva2VuaXplciA9IHdyYXBwZXIgPyBzdGQ6Om1ha2VfdW5pcXVlPENTU1Rva2VuaXpl
cj4oc3RyaW5nLCAqd3JhcHBlcikgOiBzdGQ6Om1ha2VfdW5pcXVlPENTU1Rva2VuaXplcj4oc3Ry
aW5nKTsKKyAgICBtX3Rva2VuaXplciA9IHdyYXBwZXIgPyBtYWtlVW5pcXVlPENTU1Rva2VuaXpl
cj4oc3RyaW5nLCAqd3JhcHBlcikgOiBtYWtlVW5pcXVlPENTU1Rva2VuaXplcj4oc3RyaW5nKTsK
ICAgICBpZiAoY29udGV4dC5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgJiYgIXdyYXBwZXIgJiYg
c3R5bGVTaGVldCAmJiBydWxlUGFyc2luZyA9PSBDU1NQYXJzZXI6OlJ1bGVQYXJzaW5nOjpEZWZl
cnJlZCkKICAgICAgICAgbV9kZWZlcnJlZFBhcnNlciA9IENTU0RlZmVycmVkUGFyc2VyOjpjcmVh
dGUoY29udGV4dCwgc3RyaW5nLCAqc3R5bGVTaGVldCk7CiB9CkBAIC0yODIsOSArMjgyLDkgQEAg
Q1NTU2VsZWN0b3JMaXN0IENTU1BhcnNlckltcGw6OnBhcnNlUGFnZVNlbGVjdG9yKENTU1BhcnNl
clRva2VuUmFuZ2UgcmFuZ2UsIFN0eWwKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4gc2VsZWN0b3I7CiAgICAgaWYgKCF0eXBlU2VsZWN0b3IuaXNOdWxsKCkgJiYgcHNl
dWRvLmlzTnVsbCgpKQotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHls
ZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKKyAgICAgICAgc2VsZWN0b3IgPSBtYWtlVW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxl
Y3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAg
ICAgICAgc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAg
ICBpZiAoIXBzZXVkby5pc051bGwoKSkgewogICAgICAgICAgICAgc2VsZWN0b3IgPSBzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+KENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBhZ2VQ
c2V1ZG9TZWxlY3Rvcihwc2V1ZG8pKTsKICAgICAgICAgICAgIGlmICghc2VsZWN0b3IgfHwgc2Vs
ZWN0b3ItPm1hdGNoKCkgIT0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcykKQEAgLTUzNSw3
ICs1MzUsNyBAQCBSZWZQdHI8U3R5bGVSdWxlTmFtZXNwYWNlPiBDU1NQYXJzZXJJbXBsOjpjb25z
dW1lTmFtZXNwYWNlUnVsZShDU1NQYXJzZXJUb2tlblJhbgogUmVmUHRyPFN0eWxlUnVsZU1lZGlh
PiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lTWVkaWFSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJl
bHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBibG9jaykKIHsKICAgICBpZiAobV9kZWZlcnJlZFBh
cnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZU1lZGlhOjpjcmVhdGUoTWVkaWFRdWVyeVBh
cnNlcjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KHByZWx1ZGUsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0
KG1fY29udGV4dCkpLnJlbGVhc2VOb25OdWxsKCksICBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVk
U3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAg
cmV0dXJuIFN0eWxlUnVsZU1lZGlhOjpjcmVhdGUoTWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRp
YVF1ZXJ5U2V0KHByZWx1ZGUsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KG1fY29udGV4dCkpLnJl
bGVhc2VOb25OdWxsKCksICBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0Pihi
bG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+IHJ1bGVzOwogCkBAIC01NjMsNyArNTYzLDcgQEAgUmVmUHRyPFN0eWxlUnVsZVN1cHBv
cnRzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lU3VwcG9ydHNSdWxlKENTU1BhcnNlclRva2VuUmFu
Z2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vIFBhcnNlIGVycm9yLCBpbnZhbGlkIEBzdXBw
b3J0cyBjb25kaXRpb24KIAogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICByZXR1
cm4gU3R5bGVSdWxlU3VwcG9ydHM6OmNyZWF0ZShwcmVsdWRlLnNlcmlhbGl6ZSgpLnN0cmlwV2hp
dGVTcGFjZSgpLCBzdXBwb3J0ZWQsIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3Vw
UnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5
bGVSdWxlU3VwcG9ydHM6OmNyZWF0ZShwcmVsdWRlLnNlcmlhbGl6ZSgpLnN0cmlwV2hpdGVTcGFj
ZSgpLCBzdXBwb3J0ZWQsIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJs
b2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgaWYgKG1fb2JzZXJ2ZXJXcmFwcGVyKSB7
CiAgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUhlYWRlcihT
dHlsZVJ1bGU6OlN1cHBvcnRzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZzZXQocHJlbHVk
ZSkpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IENTU1Bh
cnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKGJvb2wgd2Via2l0UHJlZml4CiAgICAgICAg
IHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBlcnJvcjsgZXhwZWN0ZWQgaWRlbnQgdG9rZW4gaW4g
QGtleWZyYW1lcyBoZWFkZXIKIAogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQotICAgICAgICBy
ZXR1cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVhdGUobmFtZSwgc3RkOjptYWtlX3VuaXF1ZTxE
ZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7Cisg
ICAgICAgIHJldHVybiBTdHlsZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1lLCBtYWtlVW5pcXVl
PERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsK
IAogICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBl
ci0+b2JzZXJ2ZXIoKS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpLZXlmcmFtZXMsIG1fb2Jz
ZXJ2ZXJXcmFwcGVyLT5zdGFydE9mZnNldChyYW5nZUNvcHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAKaW5kZXggNGRiZWY0MDU4YzcxNjJj
ZDk2NDZlYTc2NGRjYmI5YmJjZjMxZTQ1OS4uYTA4NzBkMzc2MmNlYTQyZjViNWVhYmQwNWVhNzQ0
ZjJkOWQ2YjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJT
ZWxlY3Rvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNl
bGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IoU3QKICAg
ICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzZWxlY3RvciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWxlY3RvciA9
IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0
b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpOwogICAgIHNlbGVjdG9y
LT5tX3NlbGVjdG9yLT5zZXRQYWdlUHNldWRvVHlwZShwc2V1ZG9UeXBlKTsKICAgICByZXR1cm4g
c2VsZWN0b3I7CkBAIC02Myw3ICs2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFNlbGVjdG9yCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHNlbGVjdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlbGVjdG9yID0g
bWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rv
ci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwogICAgIHNlbGVjdG9yLT5t
X3NlbGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9UeXBlKTsKICAgICBBdG9tU3Ry
aW5nIG5hbWU7CkBAIC04NCwxMyArODQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNl
bGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yKFMKIHsK
ICAgICBhdXRvIHBzZXVkb1R5cGUgPSBwYXJzZVBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVs
ZW1lbnRTdHJpbmcocHNldWRvVHlwZVN0cmluZyk7CiAgICAgaWYgKHBzZXVkb1R5cGUucHNldWRv
Q2xhc3MgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVW5rbm93bikgewotICAgICAgICBhdXRv
IHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAg
ICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAg
ICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3MpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvQ2xhc3NUeXBlKHBz
ZXVkb1R5cGUucHNldWRvQ2xhc3MpOwogICAgICAgICByZXR1cm4gc2VsZWN0b3I7CiAgICAgfQog
ICAgIGlmIChwc2V1ZG9UeXBlLmNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50ICE9IENTU1NlbGVj
dG9yOjpQc2V1ZG9FbGVtZW50VW5rbm93bikgewotICAgICAgICBhdXRvIHNlbGVjdG9yID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAgICAgYXV0byBzZWxlY3Rv
ciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAgIHNlbGVjdG9yLT5t
X3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7CiAgICAgICAg
IHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9UeXBlLmNv
bXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50KTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3It
PnNldFZhbHVlKHBzZXVkb1R5cGVTdHJpbmcuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CkBA
IC0xMDAsMTIgKzEwMCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENT
U1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IoUwogfQogCiBDU1NQYXJz
ZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IoKQotICAgIDogbV9zZWxlY3RvcihzdGQ6Om1h
a2VfdW5pcXVlPENTU1NlbGVjdG9yPigpKQorICAgIDogbV9zZWxlY3RvcihtYWtlVW5pcXVlPENT
U1NlbGVjdG9yPigpKQogewogfQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0
b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUpCi0gICAgOiBtX3NlbGVjdG9yKHN0ZDo6
bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lKSkKKyAgICA6IG1fc2VsZWN0b3IobWFr
ZVVuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUpKQogewogfQogCkBAIC0xMjYsNyArMTI2LDcg
QEAgQ1NTUGFyc2VyU2VsZWN0b3I6On5DU1NQYXJzZXJTZWxlY3RvcigpCiAKIHZvaWQgQ1NTUGFy
c2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4+JiYgc2VsZWN0b3JWZWN0b3IpCiB7Ci0gICAgbV9zZWxlY3Rvci0+
c2V0U2VsZWN0b3JMaXN0KHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3JMaXN0PihXVEZNb3Zl
KHNlbGVjdG9yVmVjdG9yKSkpOworICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChtYWtl
VW5pcXVlPENTU1NlbGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsKIH0KIAog
dm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0TGFuZ0FyZ3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPEF0b21TdHJpbmc+PiBhcmd1bWVudExpc3QpCkBAIC0yMDksMTIgKzIwOSwxMiBA
QCB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphcHBlbmRUYWdIaXN0b3J5KENTU1BhcnNlclNlbGVj
dG9yQ29tYmluYXRvciByZWxhdGlvbiwgcwogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjpwcmVw
ZW5kVGFnU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIGJvb2wgdGFnSXNG
b3JOYW1lc3BhY2VSdWxlKQogewotICAgIGF1dG8gc2Vjb25kID0gc3RkOjptYWtlX3VuaXF1ZTxD
U1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlY29uZCA9IG1ha2VVbmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KCk7CiAgICAgc2Vjb25kLT5tX3NlbGVjdG9yID0gV1RGTW92ZShtX3NlbGVj
dG9yKTsKICAgICBzZWNvbmQtPm1fdGFnSGlzdG9yeSA9IFdURk1vdmUobV90YWdIaXN0b3J5KTsK
ICAgICBtX3RhZ0hpc3RvcnkgPSBXVEZNb3ZlKHNlY29uZCk7CiAKLSAgICBtX3NlbGVjdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lzRm9yTmFtZXNwYWNl
UnVsZSk7CisgICAgbV9zZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1l
LCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOwogICAgIG1fc2VsZWN0b3ItPnNldFJlbGF0aW9uKENT
U1NlbGVjdG9yOjpTdWJzZWxlY3Rvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggNDg4ZTYwMjNmMjAwMjRhZmZlZjg2MTdh
NTE0YzQwOWJmNDlkMWVmMy4uNzA4ZWM3NzczYzE4ZDZlMDhlMDAxY2FmYTNkMjhjODBkOWY4NzJm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5j
cHAKQEAgLTI0MzUsNyArMjQzNSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBhdGg+
IGNvbnN1bWVCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzCiAgICAgaWYg
KGFyZ3MucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tlbikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCi0gICAgYXV0byBieXRlU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRo
Qnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIGJ5dGVTdHJlYW0gPSBtYWtlVW5pcXVlPFNWR1BhdGhC
eXRlU3RyZWFtPigpOwogICAgIGlmICghYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmco
YXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKSwgKmJ5
dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAK
aW5kZXggNmIzYWNjODVlNmZjNWU1Y2JiOTVhYjlmZTFhNmM3Y2E5ZWY4MTA0Ny4uZjMzMjNiMjI2
YjRiMDEwMGM5ODNjNDg2NjM3NWYxZTY1N2IxNzM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKQEAgLTU2NCw3ICs1NjQsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1l
UHNldWRvKENTU1BhcnNlclRvawogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzTGFuZzogewogICAgICAgICAgICAgLy8gRklYTUU6IENTUyBTZWxlY3RvcnMg
TGV2ZWwgNCBhbGxvd3MgOmxhbmcoKi1mb28pCi0gICAgICAgICAgICBhdXRvIGFyZ3VtZW50TGlz
dCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEF0b21TdHJpbmc+PigpOworICAgICAgICAgICAg
YXV0byBhcmd1bWVudExpc3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5nPj4oKTsKICAg
ICAgICAgICAgIGlmICghY29uc3VtZUxhbmdBcmd1bWVudExpc3QoYXJndW1lbnRMaXN0LCBibG9j
aykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBzZWxlY3Rv
ci0+c2V0TGFuZ0FyZ3VtZW50TGlzdChXVEZNb3ZlKGFyZ3VtZW50TGlzdCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKaW5kZXggOWVi
NWQ3ZTQ5ZjU2YTFlOThkMWZiYjliMjNlNmVhNzJlMjI2MTU4Zi4uODgxMTdmMTllNGIyNmJhMjVi
ZmYyNWE4NTU5MTczMmJiN2EzZTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWU6OkVsZW1lbnRRdWV1ZSYgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWU6OmVuc3VyZUJhY2sKIHsKICAgICBpZiAoIXNfcHJvY2Vzc2luZ0JhY2t1cEVsZW1lbnRRdWV1
ZSkgewogICAgICAgICBzX3Byb2Nlc3NpbmdCYWNrdXBFbGVtZW50UXVldWUgPSB0cnVlOwotICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8QmFja3VwRWxlbWVudFF1ZXVlTWljcm90YXNrPigpKTsKKyAgICAgICAgTWljcm90YXNr
UXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPEJhY2t1cEVsZW1lbnRR
dWV1ZU1pY3JvdGFzaz4oKSk7CiAgICAgfQogICAgIHJldHVybiBiYWNrdXBFbGVtZW50UXVldWUo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggZTc5M2YyMGQ5MzFiZjg0
Yzg1ZmFiOWFkMjRmODNmZThhNDhhMmYxZC4uZDNhZjcwZmI4YmEzMzZiZmE2MThiZjljMTI1NmIx
MDdkOWQyNWFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTI5MCw3ICsy
OTAsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6ZGlkQWRkRmlsZVRvSXRlbUxpc3QoKQogRGF0YVRy
YW5zZmVySXRlbUxpc3QmIERhdGFUcmFuc2Zlcjo6aXRlbXMoKQogewogICAgIGlmICghbV9pdGVt
TGlzdCkKLSAgICAgICAgbV9pdGVtTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YVRyYW5zZmVy
SXRlbUxpc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9pdGVtTGlzdCA9IG1ha2VVbmlxdWU8RGF0YVRy
YW5zZmVySXRlbUxpc3Q+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faXRlbUxpc3Q7CiB9CiAKQEAg
LTQxNiw3ICs0MTYsNyBAQCBib29sIERhdGFUcmFuc2Zlcjo6aGFzU3RyaW5nT2ZUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkKIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JJbnB1dEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBwbGFp
blRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpCiB7Ci0gICAgYXV0byBwYXN0ZWJvYXJkID0g
c3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOworICAgIGF1dG8gcGFzdGVib2Fy
ZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKICAgICBwYXN0ZWJvYXJkLT53cml0
ZVN0cmluZygidGV4dC9wbGFpbiJfcywgcGxhaW5UZXh0KTsKICAgICBwYXN0ZWJvYXJkLT53cml0
ZVN0cmluZygidGV4dC9odG1sIl9zLCBodG1sVGV4dCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBh
c3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CkBAIC00NzEsNyArNDcxLDcgQEAgUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCkKIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFn
U3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgYXV0byBkYXRhVHJh
bnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpS
ZWFkV3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSwgVHlwZTo6RHJh
Z0FuZERyb3BEYXRhKSk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERh
dGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFkV3JpdGUsIG1ha2VVbmlxdWU8U3Rh
dGljUGFzdGVib2FyZD4oKSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiAgICAgZGF0YVRyYW5z
ZmVyLT5tX29yaWdpbklkZW50aWZpZXIgPSBkb2N1bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFz
dGVib2FyZCgpOwogICAgIHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CkBAIC01MDgsNyArNTA4LDcg
QEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBpbnQg
eCwgaW50IHkpCiAgICAgbV9kcmFnSW1hZ2UgPSBpbWFnZTsKICAgICBpZiAobV9kcmFnSW1hZ2Up
IHsKICAgICAgICAgaWYgKCFtX2RyYWdJbWFnZUxvYWRlcikKLSAgICAgICAgICAgIG1fZHJhZ0lt
YWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOworICAg
ICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPERyYWdJbWFnZUxvYWRlcj4o
dGhpcyk7CiAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyLT5zdGFydExvYWRpbmcobV9kcmFnSW1h
Z2UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyLmNwcAppbmRleCAzMzYyMjMxMDgxYjEzZjcyZGMxOGRhYzVmMzkwN2E1ZTdj
MTdiMGJmLi5mMjExMzFmZjgyNzgyMWRjNzRlODUwYTk4ZjFiYjIzMDk5ZTAyNzA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcApA
QCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjppc0Fj
dGl2ZUF0KFBhZ2UqIHBhZ2UpCiAKIHZvaWQgcHJvdmlkZURldmljZU9yaWVudGF0aW9uVG8oUGFn
ZSYgcGFnZSwgRGV2aWNlT3JpZW50YXRpb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICBEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbygmcGFnZSwgRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CisgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyOjpwcm92aWRlVG8oJnBhZ2UsIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxl
bWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVu
dCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCAwMTZkMDdhNjJmZTIwMDg1YmZhMGYwNjk2YzZlMWU0NjIxYzFmYzFlLi41YjQ1ODI5OTli
NjM1MzYwNDZhOWJiNzE3ODRiZmMxZDE2ZWRhNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTUyMSwxOSArNTIxLDE5IEBAIERvY3VtZW50OjpEb2N1bWVudChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnCiAgICAgLCBtX3F1
aXJrcyhtYWtlVW5pcXVlUmVmPFF1aXJrcz4oKnRoaXMpKQogICAgICwgbV9jYWNoZWRSZXNvdXJj
ZUxvYWRlcihtX2ZyYW1lID8gUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPihtX2ZyYW1lLT5sb2Fk
ZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpKSA6IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpjcmVhdGUobnVsbHB0cikpCiAgICAgLCBtX2RvbVRyZWVWZXJz
aW9uKCsrc19nbG9iYWxUcmVlVmVyc2lvbikKLSAgICAsIG1fc3R5bGVTY29wZShzdGQ6Om1ha2Vf
dW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQotICAgICwgbV9leHRlbnNpb25TdHlsZVNoZWV0
cyhzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvblN0eWxlU2hlZXRzPigqdGhpcykpCi0gICAgLCBt
X3Zpc2l0ZWRMaW5rU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxWaXNpdGVkTGlua1N0YXRlPigqdGhp
cykpCi0gICAgLCBtX21hcmtlcnMoc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29w
ZT4oKnRoaXMpKQorICAgICwgbV9leHRlbnNpb25TdHlsZVNoZWV0cyhtYWtlVW5pcXVlPEV4dGVu
c2lvblN0eWxlU2hlZXRzPigqdGhpcykpCisgICAgLCBtX3Zpc2l0ZWRMaW5rU3RhdGUobWFrZVVu
aXF1ZTxWaXNpdGVkTGlua1N0YXRlPigqdGhpcykpCisgICAgLCBtX21hcmtlcnMobWFrZVVuaXF1
ZTxEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fc3R5bGVSZWNhbGNU
aW1lcihbdGhpc10geyB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7IH0pCiAgICAgLCBtX2RvY3VtZW50
Q3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQotICAgICwgbV9zY3JpcHRSdW5uZXIo
c3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRSdW5uZXI+KCp0aGlzKSkKLSAgICAsIG1fbW9kdWxlTG9h
ZGVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TW9kdWxlTG9hZGVyPigqdGhpcykpCisgICAgLCBt
X3NjcmlwdFJ1bm5lcihtYWtlVW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQorICAgICwgbV9t
b2R1bGVMb2FkZXIobWFrZVVuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+KCp0aGlzKSkKICNpZiBF
TkFCTEUoWFNMVCkKICAgICAsIG1fYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc1RpbWVyKCp0aGlz
LCAmRG9jdW1lbnQ6OmFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lckZpcmVkKQogI2VuZGlm
CiAgICAgLCBtX3htbFZlcnNpb24oIjEuMCJfcykKLSAgICAsIG1fY29uc3RhbnRQcm9wZXJ0eU1h
cChzdGQ6Om1ha2VfdW5pcXVlPENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlzKSkKKyAgICAsIG1f
Y29uc3RhbnRQcm9wZXJ0eU1hcChtYWtlVW5pcXVlPENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlz
KSkKICAgICAsIG1fZG9jdW1lbnRDbGFzc2VzKGRvY3VtZW50Q2xhc3NlcykKICAgICAsIG1fZXZl
bnRRdWV1ZSgqdGhpcykKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC01NDUsMTAgKzU0
NSwxMCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZwogI2VuZGlmCiAgICAgLCBtX2xvYWRFdmVu
dERlbGF5VGltZXIoKnRoaXMsICZEb2N1bWVudDo6bG9hZEV2ZW50RGVsYXlUaW1lckZpcmVkKQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0g
ICAgLCBtX2RldmljZU1vdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERldmljZU1vdGlvbkNs
aWVudElPUz4oKSkKLSAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5p
cXVlPERldmljZU1vdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU1vdGlvbkNsaWVudCkpCi0gICAg
LCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50
YXRpb25DbGllbnRJT1M+KCkpCi0gICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQpKQorICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQobWFrZVVuaXF1ZTxE
ZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VNb3Rpb25DbGllbnQp
KQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChtYWtlVW5pcXVlPERldmljZU9yaWVu
dGF0aW9uQ2xpZW50SU9TPigpKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU9yaWVudGF0
aW9uQ2xpZW50KSkKICNlbmRpZgogICAgICwgbV9wZW5kaW5nVGFza3NUaW1lcigqdGhpcywgJkRv
Y3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKQogICAgICwgbV92aXN1YWxVcGRhdGVzU3Vw
cHJlc3Npb25UaW1lcigqdGhpcywgJkRvY3VtZW50Ojp2aXN1YWxVcGRhdGVzU3VwcHJlc3Npb25U
aW1lckZpcmVkKQpAQCAtNzY1LDcgKzc2NSw3IEBAIEVsZW1lbnQqIERvY3VtZW50OjplbGVtZW50
Rm9yQWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KQogCiB2b2lkIERvY3VtZW50OjpidWlsZEFj
Y2Vzc0tleUNhY2hlKCkKIHsKLSAgICBtX2FjY2Vzc0tleUNhY2hlID0gc3RkOjptYWtlX3VuaXF1
ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+KFt0
aGlzXSB7CisgICAgbV9hY2Nlc3NLZXlDYWNoZSA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcs
IEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PihbdGhpc10gewogICAgICAgICBI
YXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbWFwOwog
ICAgICAgICBmb3IgKGF1dG8mIG5vZGUgOiBjb21wb3NlZFRyZWVEZXNjZW5kYW50cygqdGhpcykp
IHsKICAgICAgICAgICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCkBAIC03OTAsNyArNzkwLDcg
QEAgRXhjZXB0aW9uT3I8U2VsZWN0b3JRdWVyeSY+IERvY3VtZW50OjpzZWxlY3RvclF1ZXJ5Rm9y
U3RyaW5nKGNvbnN0IFN0cmluZyYgc2VsZWMKICAgICBpZiAoc2VsZWN0b3JTdHJpbmcuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKICAgICBpZiAo
IW1fc2VsZWN0b3JRdWVyeUNhY2hlKQotICAgICAgICBtX3NlbGVjdG9yUXVlcnlDYWNoZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVyeUNhY2hlPigpOworICAgICAgICBtX3NlbGVjdG9y
UXVlcnlDYWNoZSA9IG1ha2VVbmlxdWU8U2VsZWN0b3JRdWVyeUNhY2hlPigpOwogICAgIHJldHVy
biBtX3NlbGVjdG9yUXVlcnlDYWNoZS0+YWRkKHNlbGVjdG9yU3RyaW5nLCAqdGhpcyk7CiB9CiAK
QEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2ZUxpbmtDb2xvcigp
CiBET01JbXBsZW1lbnRhdGlvbiYgRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkKIHsKICAgICBp
ZiAoIW1faW1wbGVtZW50YXRpb24pCi0gICAgICAgIG1faW1wbGVtZW50YXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPERPTUltcGxlbWVudGF0aW9uPigqdGhpcyk7CisgICAgICAgIG1faW1wbGVtZW50
YXRpb24gPSBtYWtlVW5pcXVlPERPTUltcGxlbWVudGF0aW9uPigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX2ltcGxlbWVudGF0aW9uOwogfQogCkBAIC0xNzcwLDcgKzE3NzAsNyBAQCBOb2RlOjpOb2Rl
VHlwZSBEb2N1bWVudDo6bm9kZVR5cGUoKSBjb25zdAogRm9ybUNvbnRyb2xsZXImIERvY3VtZW50
Ojpmb3JtQ29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2Zvcm1Db250cm9sbGVyKQotICAgICAg
ICBtX2Zvcm1Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ29udHJvbGxlcj4oKTsK
KyAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8Rm9ybUNvbnRyb2xsZXI+KCk7
CiAgICAgcmV0dXJuICptX2Zvcm1Db250cm9sbGVyOwogfQogCkBAIC0xOTk1LDcgKzE5OTUsNyBA
QCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dCwgdW5zaWduZWQg
b2Zmc2V0T2ZSZXBsYWNlZFRleHQsIHVucwogICAgIEFTU0VSVCghbV9pblJlbmRlclRyZWVVcGRh
dGUpOwogICAgIFNldEZvclNjb3BlPGJvb2w+IGluUmVuZGVyVHJlZVVwZGF0ZShtX2luUmVuZGVy
VHJlZVVwZGF0ZSwgdHJ1ZSk7CiAKLSAgICBhdXRvIHRleHRVcGRhdGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN0eWxlOjpVcGRhdGU+KCp0aGlzKTsKKyAgICBhdXRvIHRleHRVcGRhdGUgPSBtYWtlVW5p
cXVlPFN0eWxlOjpVcGRhdGU+KCp0aGlzKTsKICAgICB0ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQs
IHsgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0LCBXVEY6Om51bGxv
cHQgfSk7CiAKICAgICBSZW5kZXJUcmVlVXBkYXRlciByZW5kZXJUcmVlVXBkYXRlcigqdGhpcyk7
CkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJ
blBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogU3R5bGVSZXNv
bHZlciYgRG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKIHsKICAg
ICBpZiAoIW1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpCi0gICAgICAgIG1fdXNl
ckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlUmVz
b2x2ZXI+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZl
ciA9IG1ha2VVbmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2Vy
QWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcjsKIH0KIApAQCAtMjY4MCw3ICsyNjgwLDcgQEAg
QVhPYmplY3RDYWNoZSogRG9jdW1lbnQ6OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogCiAgICAgQVNT
RVJUKCZ0b3BEb2N1bWVudCA9PSB0aGlzIHx8ICFtX2F4T2JqZWN0Q2FjaGUpOwogICAgIGlmICgh
dG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlKSB7Ci0gICAgICAgIHRvcERvY3VtZW50Lm1fYXhP
YmplY3RDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8QVhPYmplY3RDYWNoZT4odG9wRG9jdW1lbnQp
OworICAgICAgICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBtYWtlVW5pcXVlPEFYT2Jq
ZWN0Q2FjaGU+KHRvcERvY3VtZW50KTsKICAgICAgICAgaGFzRXZlckNyZWF0ZWRBbkFYT2JqZWN0
Q2FjaGUgPSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gdG9wRG9jdW1lbnQubV9heE9iamVjdENh
Y2hlLmdldCgpOwpAQCAtMzA0NCw3ICszMDQ0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0UGFyc2lu
Zyhib29sIGIpCiAgICAgbV9iUGFyc2luZyA9IGI7CiAKICAgICBpZiAobV9iUGFyc2luZyAmJiAh
bV9zaGFyZWRPYmplY3RQb29sKQotICAgICAgICBtX3NoYXJlZE9iamVjdFBvb2wgPSBzdGQ6Om1h
a2VfdW5pcXVlPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4oKTsKKyAgICAgICAgbV9zaGFyZWRP
YmplY3RQb29sID0gbWFrZVVuaXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7CiAKICAg
ICBpZiAoIW1fYlBhcnNpbmcgJiYgdmlldygpICYmICF2aWV3KCktPm5lZWRzTGF5b3V0KCkpCiAg
ICAgICAgIHZpZXcoKS0+ZmlyZUxheW91dFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKQEAg
LTU1NzQsNyArNTU3NCw3IEBAIGNvbnN0IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogRG9jdW1lbnQ6
OnN2Z0V4dGVuc2lvbnMoKQogU1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBEb2N1bWVudDo6YWNjZXNz
U1ZHRXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX3N2Z0V4dGVuc2lvbnMpCi0gICAgICAgIG1f
c3ZnRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRG9jdW1lbnRFeHRlbnNpb25zPigq
dGhpcyk7CisgICAgICAgIG1fc3ZnRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8U1ZHRG9jdW1lbnRF
eHRlbnNpb25zPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3N2Z0V4dGVuc2lvbnM7CiB9CiAKQEAg
LTU3NzksNyArNTc3OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQog
ICAgICAgICAvLyBUaGlzIGNhbiBvY2N1ciB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3Jl
YXRlRG9jdW1lbnQoKS4KICAgICAgICAgc2V0Q29va2llVVJMKFVSTCh7IH0sIGVtcHR5U3RyaW5n
KCkpKTsKICAgICAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xp
Y3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsKLSAgICAgICAgc2V0
Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyB7IH0sIGVtcHR5U3RyaW5nKCkgfSwgKnRoaXMpKTsKKyAgICAgICAgc2V0Q29u
dGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwg
eyB7IH0sIGVtcHR5U3RyaW5nKCkgfSwgKnRoaXMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNTc5OCw3ICs1Nzk4LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4
dCgpCiAgICAgICAgIGlzU2VjdXJpdHlPcmlnaW5VbmlxdWUgPSBkb2N1bWVudExvYWRlciAmJiBk
b2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS50YWludGluZygpID09IFJlc291cmNlUmVzcG9uc2U6
OlRhaW50aW5nOjpPcGFxdWU7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0
eU9yaWdpblBvbGljeTo6Y3JlYXRlKGlzU2VjdXJpdHlPcmlnaW5VbmlxdWUgPyBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSkpOwot
ICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1
cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRDb250ZW50U2VjdXJp
dHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0s
ICp0aGlzKSk7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBt
X2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgp
OwogICAgIGlmICghb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kuaXNOdWxsKCkpCkBAIC02
MDM2LDcgKzYwMzYsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6Om5hbWVGb3JDU1NDYW52YXNFbGVtZW50
KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50KQogVGV4dEF1dG9TaXppbmcm
IERvY3VtZW50Ojp0ZXh0QXV0b1NpemluZygpCiB7CiAgICAgaWYgKCFtX3RleHRBdXRvU2l6aW5n
KQotICAgICAgICBtX3RleHRBdXRvU2l6aW5nID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0QXV0b1Np
emluZz4oKTsKKyAgICAgICAgbV90ZXh0QXV0b1NpemluZyA9IG1ha2VVbmlxdWU8VGV4dEF1dG9T
aXppbmc+KCk7CiAgICAgcmV0dXJuICptX3RleHRBdXRvU2l6aW5nOwogfQogI2VuZGlmIC8vIEVO
QUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC02NDAzLDcgKzY0MDMsNyBAQCB2b2lkIERvY3VtZW50
Ojp3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKCkKIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFdoZWVs
RXZlbnRIYW5kbGVyKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKCFtX3doZWVsRXZlbnRUYXJnZXRz
KQotICAgICAgICBtX3doZWVsRXZlbnRUYXJnZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRh
cmdldFNldD4oKTsKKyAgICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IG1ha2VVbmlxdWU8RXZl
bnRUYXJnZXRTZXQ+KCk7CiAKICAgICBtX3doZWVsRXZlbnRUYXJnZXRzLT5hZGQoJm5vZGUpOwog
CkBAIC02NDYzLDcgKzY0NjMsNyBAQCB2b2lkIERvY3VtZW50OjpkaWRBZGRUb3VjaEV2ZW50SGFu
ZGxlcihOb2RlJiBoYW5kbGVyKQogewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYg
KCFtX3RvdWNoRXZlbnRUYXJnZXRzKQotICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKKyAgICAgICAgbV90b3VjaEV2ZW50VGFy
Z2V0cyA9IG1ha2VVbmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CiAKICAgICBtX3RvdWNoRXZlbnRU
YXJnZXRzLT5hZGQoJmhhbmRsZXIpOwogCkBAIC04MDUxLDcgKzgwNTEsNyBAQCB2b2lkIERvY3Vt
ZW50OjpkaWRMb2dNZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xl
dmVsIGxldmVsLCBWZQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gbWVzc2Fn
ZUxldmVsID0gbWVzc2FnZUxldmVsRnJvbVdURkxvZ0xldmVsKGxldmVsKTsKLSAgICAgICAgYXV0
byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiht
ZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobG9n
TWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOworICAgICAgICBhdXRvIG1l
c3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3Vy
Y2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyks
IG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgpKSk7CiAKICAgICAgICAgYWRkQ29uc29sZU1lc3Nh
Z2UoV1RGTW92ZShtZXNzYWdlKSk7CiAgICAgfSk7CkBAIC04MDg2LDcgKzgwODYsNyBAQCBTdHJp
bmcgRG9jdW1lbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBr
ZXlTaXplSW5kZXgsIGNvbnN0CiAKIGJvb2wgRG9jdW1lbnQ6OnJlZ2lzdGVyQ1NTUHJvcGVydHko
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5JiYgcHJvcCkKIHsKLSAgICByZXR1cm4gbV9DU1NS
ZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRkKHByb3AubmFtZSwgc3RkOjptYWtlX3VuaXF1ZTxDU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1vdmUocHJvcCkpKS5pc05ld0VudHJ5OworICAg
IHJldHVybiBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0eVNldC5hZGQocHJvcC5uYW1lLCBtYWtlVW5p
cXVlPENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9wKSkpLmlzTmV3RW50
cnk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmRldGFjaEZyb21GcmFtZSgpCkBAIC04MTgwLDcgKzgx
ODAsNyBAQCBEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXImIERvY3Vt
ZW50OjpkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbgogICAgICAgICByZXR1cm4gdG9wRG9jdW1l
bnQoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIoKTsKIAogICAg
IGlmICghbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpCi0gICAg
ICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0
aGlzKTsKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xs
ZXIgPSBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxl
cj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vz
c0NvbnRyb2xsZXI7CiB9CiAKQEAgLTgyMTEsNyArODIxMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNl
dFBhaW50V29ya2xldEdsb2JhbFNjb3BlRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZjxQ
YWludFdvCiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXImIERvY3VtZW50Ojpjb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXIoKQogewogICAgIGlmICghbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIpCi0gICAgICAgIG1f
Y29udGVudENoYW5nZU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXI+KCp0aGlzKTsKKyAgICAgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250ZW50
Q2hhbmdlT2JzZXJ2ZXI7IAogfQogCkBAIC04MjE5LDcgKzgyMTksNyBAQCBET01UaW1lckhvbGRp
bmdUYW5rJiBEb2N1bWVudDo6ZG9tVGltZXJIb2xkaW5nVGFuaygpCiB7CiAgICAgaWYgKG1fZG9t
VGltZXJIb2xkaW5nVGFuaykKICAgICAgICAgcmV0dXJuICptX2RvbVRpbWVySG9sZGluZ1Rhbms7
Ci0gICAgbV9kb21UaW1lckhvbGRpbmdUYW5rID0gc3RkOjptYWtlX3VuaXF1ZTxET01UaW1lckhv
bGRpbmdUYW5rPigpOworICAgIG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IG1ha2VVbmlxdWU8RE9N
VGltZXJIb2xkaW5nVGFuaz4oKTsKICAgICByZXR1cm4gKm1fZG9tVGltZXJIb2xkaW5nVGFuazsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5ODU5MGMxMGU0ODM2NzdkYmJkMjBmOGIyNDMw
MzgzYTZhOTY4MmVkLi4xNjEyZTQyMGVjYTExYzRkYWQxMzVjZDkxMGZlNDU3NmVmZTcyYWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTI4NCw3ICsxMjg0LDcgQEAgY2xhc3MgRG9jdW1lbnQK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+IGNyZWF0ZVBh
cnNlcllpZWxkVG9rZW4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOwogICAgIH0KIAogICAgIGJvb2wg
aGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyWWllbGRU
b2tlbkNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVu
dFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmlu
ZGV4IDAxYzdmOTZlMDJlOWViZDU4ODUzZmI1ZGIxYzRiODgyMWUyZjk3MjguLjAzNzAzYjYyYmM2
NTA1NTc4YjM4OWI5OTkzOGE0ZGFhYjZkNzZjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEV2ZW50UXVldWUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIERvY3VtZW50RXZlbnRR
dWV1ZTo6VGltZXIgZmluYWwgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7CiAKIERvY3VtZW50
RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6
IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKHN0ZDo6bWFr
ZV91bmlxdWU8VGltZXI+KCp0aGlzKSkKKyAgICAsIG1fcGVuZGluZ0V2ZW50VGltZXIobWFrZVVu
aXF1ZTxUaW1lcj4oKnRoaXMpKQogICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKIHsKICAgICBtX3Bl
bmRpbmdFdmVudFRpbWVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggNzI5MWQ0YWRlZTlmNDE3N2Zk
YmZlZmVlZmRkZjI2NzA1NGE5YzRmMC4uZTc2NDFhZjYyMThiZjEzYWIwZTNjNjg5MjAyMGRlODg5
YzRlOTA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxl
cjo6YWRkTWFya2VyKE5vZGUmIG5vZGUsIGNvbnN0IERvY3VtZW50TWFya2VyJiBuZXdNYQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxNYXJrZXJMaXN0PiYgbGlzdCA9IG1fbWFya2Vycy5hZGQoJm5vZGUs
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGlmICghbGlzdCkgewotICAgICAgICBs
aXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJMaXN0PigpOworICAgICAgICBsaXN0ID0gbWFr
ZVVuaXF1ZTxNYXJrZXJMaXN0PigpOwogICAgICAgICBsaXN0LT5hcHBlbmQoUmVuZGVyZWREb2N1
bWVudE1hcmtlcihuZXdNYXJrZXIpKTsKICAgICB9IGVsc2UgaWYgKHNob3VsZEluc2VydEFzU2Vw
YXJhdGVNYXJrZXIobmV3TWFya2VyKSkgewogICAgICAgICAvLyBXZSBkb24ndCBtZXJnZSBkaWN0
YXRpb24gbWFya2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0
b3JhZ2VBY2Nlc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vz
cy5jcHAKaW5kZXggODFlZmIxMGQ1ZTc2ZWRiNmY2ZDM4MzUzMDA1MWQyOWMzODhlYWZkYi4uODU1
YTJhMDY1NmY3MWI0NWVlOGQ0ZmZmMjg0YTUzNTM3OWEzODc5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgRG9jdW1l
bnRTdG9yYWdlQWNjZXNzKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudFN0
b3JhZ2VBY2Nlc3MqPihTdXBwbGVtZW50PERvY3VtZW50Pjo6ZnJvbSgmZG9jdW1lbnQsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFN0b3JhZ2VBY2Nlc3M+KGRvY3Vt
ZW50KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M+KGRvY3VtZW50KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1l
bnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmZG9jdW1lbnQsIHN1cHBsZW1lbnROYW1lKCks
IFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lk
IERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICBib29sIHNob3VsZFByZXNlcnZlVXNlckdlc3R1
cmUgPSB3YXNHcmFudGVkID09IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgfHwgcHJvbXB0
V2FzU2hvd24gPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsKIAogICAgICAgICBp
ZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSkgewotICAgICAgICAgICAgTWljcm90YXNrUXVl
dWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFZvaWRNaWNyb3Rh
c2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVudCldICgpIHsKKyAg
ICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVu
aXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqZG9j
dW1lbnQpXSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1l
bnRSZWZlcmVuY2UuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5lbmFibGVU
ZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsKQEAgLTE5OSw3ICsx
OTksNyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVl
OjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNr
PihbZG9jdW1lbnRSZWZlcmVuY2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgewor
ICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtl
VW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdURk1vdmUoZG9jdW1l
bnRSZWZlcmVuY2UpXSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0g
ZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LT5j
b25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAgICB9KSk7CkBAIC0y
MDksNyArMjA5LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIAogdm9pZCBEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpCiB7Ci0gICAgbV90
ZW1wb3JhcnlVc2VyR2VzdHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlckdlc3R1cmVJbmRpY2F0
b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgJm1fZG9jdW1lbnQpOworICAgIG1fdGVtcG9yYXJ5
VXNlckdlc3R1cmUgPSBtYWtlVW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5n
VXNlckdlc3R1cmUsICZtX2RvY3VtZW50KTsKIH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6OmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IDQ1MTYxYzljYTIwYmFkNjkzMzAwNTFkMDlhNTVmMGFmYTU1ODZjYzYuLmVlYjFmMzQy
OWQ2NGVmYzRkYjBiMTMwZDEzN2YzMTZlMzUwZDBkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTQ3Nyw3ICs0NzcsNyBAQCBOYW1lZE5vZGVNYXAmIEVsZW1lbnQ6OmF0dHJpYnV0ZXMoKSBj
b25zdAogICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IHJhcmVEYXRhLmF0dHJp
YnV0ZU1hcCgpKQogICAgICAgICByZXR1cm4gKmF0dHJpYnV0ZU1hcDsKIAotICAgIHJhcmVEYXRh
LnNldEF0dHJpYnV0ZU1hcChzdGQ6Om1ha2VfdW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3RfY2Fz
dDxFbGVtZW50Jj4oKnRoaXMpKSk7CisgICAgcmFyZURhdGEuc2V0QXR0cmlidXRlTWFwKG1ha2VV
bmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVsZW1lbnQmPigqdGhpcykpKTsKICAgICBy
ZXR1cm4gKnJhcmVEYXRhLmF0dHJpYnV0ZU1hcCgpOwogfQogCkBAIC0yMzA3LDcgKzIzMDcsNyBA
QCB2b2lkIEVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYQogICAgIHNldEZsYWcoSXNDdXN0b21FbGVtZW50KTsK
ICAgICBhdXRvJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRh
LmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCkpCi0gICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25R
dWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1l
bnRJbnRlcmZhY2UpKTsKICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50U3RhdGUoKnRoaXMp
OwogfQpAQCAtMjM0NCw3ICsyMzQ0LDcgQEAgdm9pZCBFbGVtZW50OjplbnF1ZXVlVG9VcGdyYWRl
KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVyZmFjZSkKICAgICBhdXRvJiBk
YXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgYm9vbCBhbHJlYWR5U2NoZWR1bGVk
VG9VcGdyYWRlID0gZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpOwogICAgIGlmICgh
YWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSkKLSAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50
UmVhY3Rpb25RdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
PihlbGVtZW50SW50ZXJmYWNlKSk7CisgICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWUobWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudElu
dGVyZmFjZSkpOwogICAgIGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKS0+ZW5xdWV1
ZUVsZW1lbnRVcGdyYWRlKCp0aGlzLCBhbHJlYWR5U2NoZWR1bGVkVG9VcGdyYWRlKTsKIH0KIApA
QCAtMzQ4MCw3ICszNDgwLDcgQEAgRE9NVG9rZW5MaXN0JiBFbGVtZW50OjpjbGFzc0xpc3QoKQog
ewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwog
ICAgIGlmICghZGF0YS5jbGFzc0xpc3QoKSkKLSAgICAgICAgZGF0YS5zZXRDbGFzc0xpc3Qoc3Rk
OjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikp
OworICAgICAgICBkYXRhLnNldENsYXNzTGlzdChtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRo
aXMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CiAgICAgcmV0dXJuICpkYXRhLmNsYXNzTGlzdCgp
OwogfQogCkBAIC0zNDg4LDcgKzM0ODgsNyBAQCBEYXRhc2V0RE9NU3RyaW5nTWFwJiBFbGVtZW50
OjpkYXRhc2V0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVFbGVtZW50
UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuZGF0YXNldCgpKQotICAgICAgICBkYXRhLnNldERh
dGFzZXQoc3RkOjptYWtlX3VuaXF1ZTxEYXRhc2V0RE9NU3RyaW5nTWFwPigqdGhpcykpOworICAg
ICAgICBkYXRhLnNldERhdGFzZXQobWFrZVVuaXF1ZTxEYXRhc2V0RE9NU3RyaW5nTWFwPigqdGhp
cykpOwogICAgIHJldHVybiAqZGF0YS5kYXRhc2V0KCk7CiB9CiAKQEAgLTM2MzIsNyArMzYzMiw3
IEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlSW50ZXJzZWN0aW9u
T2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJl
RGF0YSgpOwogICAgIGlmICghcmFyZURhdGEuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCkpCi0g
ICAgICAgIHJhcmVEYXRhLnNldEludGVyc2VjdGlvbk9ic2VydmVyRGF0YShzdGQ6Om1ha2VfdW5p
cXVlPEludGVyc2VjdGlvbk9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJhcmVEYXRhLnNldElu
dGVyc2VjdGlvbk9ic2VydmVyRGF0YShtYWtlVW5pcXVlPEludGVyc2VjdGlvbk9ic2VydmVyRGF0
YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5pbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKTsK
IH0KIApAQCAtMzY1OCw3ICszNjU4LDcgQEAgUmVzaXplT2JzZXJ2ZXJEYXRhJiBFbGVtZW50Ojpl
bnN1cmVSZXNpemVPYnNlcnZlckRhdGEoKQogewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJl
RWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRhdGEo
KSkKLSAgICAgICAgcmFyZURhdGEuc2V0UmVzaXplT2JzZXJ2ZXJEYXRhKHN0ZDo6bWFrZV91bmlx
dWU8UmVzaXplT2JzZXJ2ZXJEYXRhPigpKTsKKyAgICAgICAgcmFyZURhdGEuc2V0UmVzaXplT2Jz
ZXJ2ZXJEYXRhKG1ha2VVbmlxdWU8UmVzaXplT2JzZXJ2ZXJEYXRhPigpKTsKICAgICByZXR1cm4g
KnJhcmVEYXRhLnJlc2l6ZU9ic2VydmVyRGF0YSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRMaXN0ZW5lck1hcC5jcHAKaW5kZXggZDllNjYzNDljYmRiYTBiYjgxZDJhY2ZiZmRjMGQ0MzM3
OGM2NThkYi4uMGIwOWQwODJjMzZlZGRkODRiOWNkZTk4ODI1MjcyZGI1Zjk2ZTViZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJv
b2wgRXZlbnRMaXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVm
PEV2ZW50TGlzdGVuZXI+JiYgbGlzCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IGF1dG8gbGlzdGVuZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudExpc3RlbmVyVmVjdG9yPigp
OworICAgIGF1dG8gbGlzdGVuZXJzID0gbWFrZVVuaXF1ZTxFdmVudExpc3RlbmVyVmVjdG9yPigp
OwogICAgIGxpc3RlbmVycy0+dW5jaGVja2VkQXBwZW5kKFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
OjpjcmVhdGUoV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpKTsKICAgICBtX2VudHJpZXMuYXBw
ZW5kKHsgZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVycykgfSk7CiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA5ZTkzMDhiYjVkYTE0NjFlMzU4ZTNjYzYyZmVh
ZmRjZmNkMGNjN2FkLi41YjZhYjY4NzU1YjYxYmZlMmQ0YTY4YmNiZTc1MjRmZDBkZGFiYjljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTMzOSwxMyArMzM5LDEzIEBAIHN0cnVjdCBFdmVu
dE5hbWVzIHsKICAgICBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0goRE9NX0VWRU5UX05BTUVTX0RF
Q0xBUkUpCiAjdW5kZWYgRE9NX0VWRU5UX05BTUVTX0RFQ0xBUkUKIAotICAgIC8vIEZJWE1FOiBU
aGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIHN0ZDo6bWFrZV91bmlxdWUgYmVsb3cgZG9lcyBub3Qg
d29yayBpbiB3aW5kb3dzIHBvcnQuCisgICAgLy8gRklYTUU6IFRoZSBmcmllbmQgZGVjbGFyYXRp
b24gdG8gbWFrZVVuaXF1ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdpbmRvd3MgcG9ydC4KICAg
ICAvLwogICAgIC8vIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFyZ3M+Ci0gICAgLy8gZnJp
ZW5kIHR5cGVuYW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3Qgc3RkOjptYWtl
X3VuaXF1ZShBcmdzJiYuLi4pOworICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVf
aWY8VD46Ol9TaW5nbGVfb2JqZWN0IG1ha2VVbmlxdWUoQXJncyYmLi4uKTsKICAgICAvLwogICAg
IC8vIFRoaXMgY3JlYXRlIGZ1bmN0aW9uIHNob3VsZCBiZSBkZWxldGVkIGxhdGVyIGFuZCBpcyBv
bmx5IGZvciBrZWVwaW5nIEV2ZW50TmFtZXMgYXMgcHJpdmF0ZS4KLSAgICAvLyBzdGQ6Om1ha2Vf
dW5pcXVlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisgICAgLy8gbWFrZVVuaXF1ZSBzaG91bGQg
YmUgdXNlZCBpbnN0ZWFkLgogICAgIC8vCiAgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEV2ZW50TmFtZXM+IGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKaW5kZXggZGIxNDI4ZDFkNDI2MDU4Y2I2NWIxZWI2
ZmFjYTIzZGI5ODkyODJiZC4uYTBhZDBhZDdjNDgyNjkyZTYzOGU1NzI4MGYxYTI5MjQ3YWNlYzE3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKQEAgLTExNSwxNyArMTE1LDE3IEBAIHZvaWQg
RXZlbnRQYXRoOjpidWlsZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkK
IHsKICAgICB1c2luZyBNYWtlRXZlbnRDb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29u
dGV4dD4gKCopKE5vZGUmLCBFdmVudFRhcmdldCosIEV2ZW50VGFyZ2V0KiwgaW50IGNsb3NlZFNo
YWRvd0RlcHRoKTsKICAgICBNYWtlRXZlbnRDb250ZXh0IG1ha2VFdmVudENvbnRleHQgPSBbXSAo
Tm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJn
ZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxFdmVudENvbnRleHQ+KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNo
YWRvd0RlcHRoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0Pigmbm9k
ZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgfTsKICAg
ICBpZiAoaXM8TW91c2VFdmVudD4oZXZlbnQpIHx8IGV2ZW50LmlzRm9jdXNFdmVudCgpKSB7CiAg
ICAgICAgIG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1
cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkg
LT4gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gewotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFy
Z2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFy
Z2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgaWYgKGlzPFRvdWNoRXZlbnQ+KGV2ZW50KSkgewogICAgICAgICBt
YWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFy
Z2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6
dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRvdWNoRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNs
b3NlZFNoYWRvd0RlcHRoKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRvdWNoRXZl
bnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRo
KTsKICAgICAgICAgfTsKICAgICB9CiAjZW5kaWYKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEV2
ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2V0LCBFdmVudCYgZXZlbnQpCiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAodGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpub2RlKS5kb21XaW5kb3coKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2luZG93RXZlbnRDb250
ZXh0Pigqbm9kZSwgKndpbmRvdywgKnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlxdWU8V2luZG93RXZl
bnRDb250ZXh0Pigqbm9kZSwgKndpbmRvdywgKnRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zMDgsNyArMzA4LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiYgdGFyZ2V0cykKICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAg
ICAgIE5vZGUqIG9yaWdpbiA9ICp0YXJnZXRzLmJlZ2luKCk7CiAgICAgICAgIGlmICghdGFyZ2V0
LT5pc0Nsb3NlZFNoYWRvd0hpZGRlbigqb3JpZ2luKSkKLSAgICAgICAgICAgIG1fcGF0aC5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KHRhcmdldCwgdGFyZ2V0LCBvcmlnaW4s
IDApKTsKKyAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxFdmVudENvbnRleHQ+
KHRhcmdldCwgdGFyZ2V0LCBvcmlnaW4sIDApKTsKICAgICB9CiB9CiAKQEAgLTMxNyw3ICszMTcs
NyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RXZlbnRUYXJnZXQqPiYgdGFy
Z2V0cykKICAgICBmb3IgKGF1dG8qIHRhcmdldCA6IHRhcmdldHMpIHsKICAgICAgICAgQVNTRVJU
KHRhcmdldCk7CiAgICAgICAgIEFTU0VSVCghaXM8Tm9kZT4odGFyZ2V0KSk7Ci0gICAgICAgIG1f
cGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KG51bGxwdHIsIHRhcmdl
dCwgKnRhcmdldHMuYmVnaW4oKSwgMCkpOworICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlx
dWU8RXZlbnRDb250ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9GdWxsc2NyZWVuTWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggZWRk
OWNhMjhlYTQ5M2FjN2M5NGM4YmRlMjg1YjE2NjZjMzg4MjU1OS4uYTcwYmNhZWNjYzg3OTVhNGY0
YmE0MjZlMjUxM2RmZjdhMGY3NGIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1
bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5h
Z2VyLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgUmVuZGVyVHJlZUJ1aWxkZXI7CiBjbGFzcyBS
ZW5kZXJTdHlsZTsKIAogY2xhc3MgRnVsbHNjcmVlbk1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZ1bGxzY3JlZW5NYW5hZ2VyKERvY3VtZW50Jik7
CiAgICAgfkZ1bGxzY3JlZW5NYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRh
cmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCmluZGV4IGIzYTA2ZTQ3YjA3MDBmN2M0N2QzZDlhZWYz
M2Y0NDM3MjRlMGM1NWUuLjk0MGVmY2FlZDgzMDkxYzI1ODNmYTllMzM2ZWYzZDc4YzU0YWEzZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNl
cnZlcihjb25zdCBBdG9tU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlCiAgICAgCiAgICAgSWRU
b09ic2VydmVyU2V0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9yZWdpc3RyeS5hZGQoaWQuaW1w
bCgpLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9ic2VydmVyU2V0PigpOworICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPYnNlcnZlclNldD4oKTsK
IAogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZChvYnNlcnZlcik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXggN2U3YTM0Nzk3Yjg2MjlmNjJmN2Y3ODZhYjE0
YzVjNmY1YmQ5MGIxNC4uY2U4NTZiYjU1ZDViZDk5ZTY2ZjUwY2I1NWIwYmU0NzkwZTA5ODQ1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcApAQCAtOTYsNyArOTYsNyBAQCBpbmxp
bmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIGlubGluZSBLZXli
b2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5
LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKICAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUo
ZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIENhbkJ1YmJsZTo6WWVz
LCBJc0NhbmNlbGFibGU6OlllcywgSXNDb21wb3NlZDo6WWVzLAogICAgICAgICBrZXkudGltZXN0
YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBrZXku
bW9kaWZpZXJzKCksIElzVHJ1c3RlZDo6WWVzKQotICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1F
dmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKKyAgICAs
IG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQobWFrZVVuaXF1ZTxQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ+KGtleSkpCiAjaWYgRU5BQkxFKEtFWUJPQVJEX0tFWV9BVFRSSUJVVEUpCiAgICAgLCBtX2tl
eShrZXkua2V5KCkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNy
b3Rhc2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCmluZGV4IGI2MzE4NDE1
MGY1YTM5MTQyNTJiODQyZWQ5ZDA3ZGVhYWY2YjQwMzYuLmJhNzIyYTExYzcwZmNhODA4MzJlNjRj
ODUyN2VlNDZiOWMzNDc2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rh
c2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaApAQCAtNjksNyArNjks
OCBAQCBjbGFzcyBWb2lkTWljcm90YXNrIGZpbmFsIDogcHVibGljIE1pY3JvdGFzayB7CiAgICAg
RnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOwogfTsKIAotY2xhc3MgTWljcm90YXNrUXVldWUg
eworY2xhc3MgTWljcm90YXNrUXVldWUgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxNaWNyb3Rhc2tRdWV1ZT47CiAgICAgZnJp
ZW5kIGNsYXNzIE1pY3JvdGFzazsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmNwcAppbmRleCA2NmM1ZWEwYjlkNjM0NTQ0MzgxMmZiMTMxZmZlNWRiZTZjYTFkZGYz
Li4xOTNmMjc4MDVhNWFlZDRiNjA2ZTljZWVhM2E5YTM1ZDhiMWU5OTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIHZv
aWQgcXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2soKQogICAgIGlmIChtdXRh
dGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnKQogICAgICAgICByZXR1cm47
CiAgICAgbXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVkRmxhZyA9IHRydWU7
Ci0gICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkpOworICAgIE1pY3JvdGFza1F1ZXVl
OjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWlj
cm90YXNrPigpKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1ZXVlTXV0YXRpb25S
ZWNvcmQoUmVmPE11dGF0aW9uUmVjb3JkPiYmIG11dGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggNTJkYTYx
Zjc0ZjFmNTdhZjY4NTQ5ZjM2NjU2MzA2ZDhkMTcwM2M3OS4uMDI3NmU0MmJlNWJkODNmZjQyYTc5
MzU2YmRlOWNlNzM2MDk5Y2JkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA6OmNyCiAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNl
cnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4oV1RGTW92
ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOwogfQogCiBib29sIE11dGF0aW9uT2JzZXJ2ZXJJ
bnRlcmVzdEdyb3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBjOGZj
MDEwNjcyNDVlNGUzNjE5N2EyZjZkNGQxZTQ1NzU0N2JiYzhhLi5lNWM2ZGQxNmE0ZGI2MDliYTUy
NzNhNDdhZjdmYTY4MjY2MmEyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6b2JzZXJ2ZWRTdWJ0cmVlTm9kZVdpbGxEZXRhY2go
Tm9kZSYgbm9kZSkKICAgICBtX29ic2VydmVyLT5zZXRIYXNUcmFuc2llbnRSZWdpc3RyYXRpb24o
KTsKIAogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcykgewotICAgICAgICBt
X3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PEdD
UmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKKyAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25O
b2RlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7CiAKICAg
ICAgICAgQVNTRVJUKCFtX25vZGVLZXB0QWxpdmUpOwogICAgICAgICBtX25vZGVLZXB0QWxpdmUg
PSAmbV9ub2RlOyAvLyBCYWxhbmNlZCBpbiB0YWtlVHJhbnNpZW50UmVnaXN0cmF0aW9ucy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCA3NmQ0ZWE5ZDczMGE5MjM3MmE5ZjhlN2E2ZDhmNjdkMDBmZDNkYmY1
Li5jYWJmMWViNThjOWMyM2NhZDg4NWJkMDFkZjEyMmI2NTFhZTAyYmQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC0zOTgsOSArMzk4LDkgQEAgdm9pZCBOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKCkK
IHsKICAgICBOb2RlUmFyZURhdGEqIGRhdGE7CiAgICAgaWYgKGlzPEVsZW1lbnQ+KCp0aGlzKSkK
LSAgICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2Fz
dDxSZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKKyAgICAgICAg
ZGF0YSA9IG1ha2VVbmlxdWU8RWxlbWVudFJhcmVEYXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50
PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVSYXJlRGF0YT4obV9kYXRhLm1fcmVuZGVyZXIpLnJlbGVh
c2UoKTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9y
ZW5kZXJlcikucmVsZWFzZSgpOwogICAgIEFTU0VSVChkYXRhKTsKIAogICAgIG1fZGF0YS5tX3Jh
cmVEYXRhID0gZGF0YTsKQEAgLTIyMTUsNyArMjIxNSw3IEBAIEV2ZW50VGFyZ2V0RGF0YSYgTm9k
ZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKIAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
c19ldmVudFRhcmdldERhdGFNYXBMb2NrKTsKICAgICBzZXRIYXNFdmVudFRhcmdldERhdGEodHJ1
ZSk7Ci0gICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5hZGQodGhpcywgc3RkOjptYWtl
X3VuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4g
KmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0RGF0
YT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIE5vZGU6OmNsZWFyRXZlbnRUYXJnZXRE
YXRhKCkKQEAgLTIyODcsNyArMjI4Nyw3IEBAIHZvaWQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9i
c2VydmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBNdXRhdGlvbk9ic2VydmVyCiAgICAg
fQogCiAgICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKLSAgICAgICAgcmVnaXN0cnkuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4ob2JzZXJ2ZXIsICp0
aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKKyAgICAgICAgcmVnaXN0cnkuYXBwZW5k
KG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4ob2JzZXJ2ZXIsICp0aGlz
LCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKICAgICAgICAgcmVnaXN0cmF0aW9uID0gcmVn
aXN0cnkubGFzdCgpLmdldCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmlu
ZGV4IDc2OTBkNTk5ZmNhN2RjOTljYjQ5ZTE2MGZiZTJhZmFkZGYwMGNkZjQuLjc2NmQ2N2YzZjZk
NjI5YWYwODk0MmFkYzIzZTJjMjJjMjlmM2U0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgKQEAgLTI4MSw3ICsyODEsNyBAQCBjbGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJh
cmVEYXRhQmFzZSB7CiAgICAgTm9kZUxpc3RzTm9kZURhdGEmIGVuc3VyZU5vZGVMaXN0cygpCiAg
ICAgewogICAgICAgICBpZiAoIW1fbm9kZUxpc3RzKQotICAgICAgICAgICAgbV9ub2RlTGlzdHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOworICAgICAgICAgICAgbV9u
b2RlTGlzdHMgPSBtYWtlVW5pcXVlPE5vZGVMaXN0c05vZGVEYXRhPigpOwogICAgICAgICByZXR1
cm4gKm1fbm9kZUxpc3RzOwogICAgIH0KIApAQCAtMjg5LDcgKzI4OSw3IEBAIGNsYXNzIE5vZGVS
YXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsKICAgICBOb2RlTXV0YXRpb25PYnNl
cnZlckRhdGEmIGVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkKICAgICB7CiAgICAgICAgIGlm
ICghbV9tdXRhdGlvbk9ic2VydmVyRGF0YSkKLSAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZl
ckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKKyAg
ICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBtYWtlVW5pcXVlPE5vZGVNdXRhdGlv
bk9ic2VydmVyRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICptX211dGF0aW9uT2JzZXJ2ZXJEYXRh
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3Jv
dXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKaW5kZXgg
NTMzN2M1OGNkZmJiYWFiMjMwMTg0NTAyNjM4ZGM2MzQ0OWY3OTZhYy4uNjFiYmM0ZWRmZjkzNGE2
NDQ2ZWEyNTY3NTU2NjNmZDU0Njg3N2UzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1JhZGlvQnV0dG9uR3JvdXBzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0
b25Hcm91cHMuY3BwCkBAIC0xOTgsMTEgKzE5OCwxMSBAQCB2b2lkIFJhZGlvQnV0dG9uR3JvdXBz
OjphZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQotICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKKyAgICAgICAgbV9uYW1lVG9Hcm91
cE1hcCA9IG1ha2VVbmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7CiAKICAgICBhdXRvJiBncm91cCA9
IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50Lm5hbWUoKS5pbXBsKCksIG51bGxwdHIpLml0
ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWdyb3VwKQotICAgICAgICBncm91cCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmFkaW9CdXR0b25Hcm91cD4oKTsKKyAgICAgICAgZ3JvdXAgPSBtYWtlVW5pcXVl
PFJhZGlvQnV0dG9uR3JvdXA+KCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGM4MjVh
N2VkZWU2YmIyZDVmNTE2YzZkM2U2ZWE3NDEwZTZlY2M3NTYuLjA0YWZlOWQ3OGFkMGJkMTAyOGE2
NzAzYzBmYzNkNGY2NTNiMTNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAKQEAgLTM3OSw4ICszNzksOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbgogewogICAgIGlmIChtX2luRGlzcGF0Y2hFcnJvckV2ZW50KSB7CiAgICAgICAgIGlmICgh
bV9wZW5kaW5nRXhjZXB0aW9ucykKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2VwdGlvbj4+
PigpOwotICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgICAgIG1fcGVuZGlu
Z0V4Y2VwdGlvbnMgPSBtYWtlVW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0V4
Y2VwdGlvbj4+PigpOworICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQobWFrZVVu
aXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDE0LDkgKzQxNCw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhCiAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlVuaGFuZGxlZCBQcm9taXNlIFJlamVj
dGlvbjogIiwgcmVzdWx0TWVzc2FnZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVz
c2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9y
TWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtZXNzYWdlID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjYWxs
U3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IGVycm9yTWVzc2FnZSk7CiAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7
CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBSZWplY3RlZFByb21pc2VUcmFja2VyJiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdwogICAgIC8v
IFdoZW4gaW5pdGlhbGl6aW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHZtKCkgaXMgbm90IHJl
YWR5LgogCiAgICAgQVNTRVJUKCFtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIpOwotICAgIG1fcmVq
ZWN0ZWRQcm9taXNlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJh
Y2tlcj4oKnRoaXMsIHZtKCkpOworICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IG1ha2VV
bmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOwogICAgIHJldHVybiAq
bV9yZWplY3RlZFByb21pc2VUcmFja2VyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0
b3JRdWVyeS5jcHAKaW5kZXggNTVkYzJjODdhNGFjMjAyZDcxYWRkYTY2ZDU5NmI1ZmVhMGJjODg1
Ni4uMjEwOWNlNGEyMjhjM2U3YmE4N2E0YmE1MmIyZGIyODIzNjA4NzEyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIEV4Y2VwdGlvbk9yPFNl
bGVjdG9yUXVlcnkmPiBTZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBTdHJpbmcmIHNlbGVj
dG9ycywgRG9jCiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbWF4aW11bVNlbGVjdG9yUXVl
cnlDYWNoZVNpemUpCiAgICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRyaWVzLnJhbmRvbSgp
KTsKIAotICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIHN0ZDo6bWFrZV91bmlx
dWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVl
OworICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIG1ha2VVbmlxdWU8U2VsZWN0
b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjk2M2I2ODM3OWQ4OGYyN2E4NGUyZjFk
YTY1MTUzODE4MDViMjkzYy4uNjc4NmMwZDIxZTFiMmMyYTU3ODUxYmQwODUxNjRjMWExZTkyYzk5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNTgsNyArNTgsNyBAQCBTaGFkb3dS
b290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93Um9vdE1vZGUgdHlwZSkK
ICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAg
LCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50KQogICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBt
X3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAs
IG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogewogfQogCkBA
IC02Nyw3ICs2Nyw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYgc2xvCiAgICAgOiBEb2N1bWVudEZy
YWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlz
LCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQotICAg
ICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisg
ICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKICAgICAs
IG1fc2xvdEFzc2lnbm1lbnQoV1RGTW92ZShzbG90QXNzaWdubWVudCkpCiB7CiB9CkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oIXBhcmVudFRyZWVTY29wZSgpIHx8ICZwYXJlbnRUcmVlU2NvcGUoKS0+ZG9j
dW1lbnRTY29wZSgpID09ICZuZXdEb2N1bWVudCk7CiAKICAgICAvLyBTdHlsZSBzY29wZXMgYXJl
IGRvY3VtZW50IHNwZWNpZmljLgotICAgIG1fc3R5bGVTY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8
U3R5bGU6OlNjb3BlPigqdGhpcyk7CisgICAgbV9zdHlsZVNjb3BlID0gbWFrZVVuaXF1ZTxTdHls
ZTo6U2NvcGU+KCp0aGlzKTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50KTsKIH0KIApA
QCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUo
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzCiB7CiAgICAgQVNTRVJU
KCZzbG90LnJvb3ROb2RlKCkgPT0gdGhpcyk7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50KQot
ICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90QXNzaWdubWVu
dD4oKTsKKyAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IG1ha2VVbmlxdWU8U2xvdEFzc2lnbm1l
bnQ+KCk7CiAKICAgICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+YWRkU2xvdEVsZW1lbnRCeU5h
bWUobmFtZSwgc2xvdCwgKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5j
cHAKaW5kZXggYTQxOWRkYTUyOGFjY2JkYTZkZTlkZGYxYTU0ODY0Y2ZkZjkxNjBlZi4uNDVjMDhl
YTM2YWZlMTM5N2JlMGVjYmZiMjllMjI4ZWNkMGM5OTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xv
dEFzc2lnbm1lbnQuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6
YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVt
ZW4KICAgICAgICAgLy8gdG8gYXZvaWQgYWx3YXlzIGhhdmluZyBhIHZlY3RvciBvZiBhbGwgY2hp
bGQgbm9kZXMgb2YgYSBzaGFkb3cgaG9zdC4KICAgICAgICAgaWYgKHNsb3ROYW1lID09IGRlZmF1
bHRTbG90TmFtZSgpKQogICAgICAgICAgICAgbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYXV0byYgc2xvdCA9ICphZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIGJvb2wgbmVlZHNTbG90Y2hhbmdlRXZlbnQgPSBz
aGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNBc3NpZ25lZE5vZGVz
KHNoYWRvd1Jvb3QsIHNsb3QpOwpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgU2xvdEFzc2lnbm1l
bnQ6OmFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWUp
CiAgICAgfQogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nsb3RzLmVuc3VyZShzbG90TmFtZSwg
W10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90PigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwogICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUtPmFzc2lnbmVkTm9kZXMuYXBwZW5kKCZjaGlsZCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuY3BwCmluZGV4IDJmMjg3MGQxNjY5ZDQ0YmM2MTg0YTcyZWM2M2ViMzIzZjUyN2QzOWYu
LjUzMWFjZGY0ZGQ2NTY4ZTBmNDYyMWViNTBkODlkZWU0NjdkNTVhMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFRyZWVTY29wZTo6VHJlZVNjb3BlKFNoYWRv
d1Jvb3QmIHNoYWRvd1Jvb3QsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUo
c2hhZG93Um9vdCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKICAgICAsIG1fcGFy
ZW50VHJlZVNjb3BlKCZkb2N1bWVudCkKLSAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQorICAgICwgbV9p
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0
cnk+KCkpCiB7CiAgICAgc2hhZG93Um9vdC5zZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtNzMs
NyArNzMsNyBAQCBUcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
OiBtX3Jvb3ROb2RlKGRvY3VtZW50KQogICAgICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQog
ICAgICwgbV9wYXJlbnRUcmVlU2NvcGUobnVsbHB0cikKLSAgICAsIG1faWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQor
ICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgZG9jdW1lbnQuc2V0VHJlZVNjb3BlKCp0aGlzKTsKIH0K
QEAgLTE0MSw3ICsxNDEsNyBAQCBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBUcmVlU2NvcGU6Omdl
dEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50SQogdm9pZCBUcmVlU2Nv
cGU6OmFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBlbGVtZW50SWQsIEVsZW1l
bnQmIGVsZW1lbnQsIGJvb2wgbm90aWZ5T2JzZXJ2ZXJzKQogewogICAgIGlmICghbV9lbGVtZW50
c0J5SWQpCi0gICAgICAgIG1fZWxlbWVudHNCeUlkID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2Nv
cGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IG1ha2VVbmlxdWU8VHJl
ZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlJZC0+YWRkKGVsZW1lbnRJZCwg
ZWxlbWVudCwgKnRoaXMpOwogICAgIGlmIChub3RpZnlPYnNlcnZlcnMpCiAgICAgICAgIG1faWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVudElkKTsKQEAgLTE2
OCw3ICsxNjgsNyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeU5hbWUoY29uc3Qg
QXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlOYW1l
KGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlm
ICghbV9lbGVtZW50c0J5TmFtZSkKLSAgICAgICAgbV9lbGVtZW50c0J5TmFtZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9lbGVtZW50c0J5TmFt
ZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlO
YW1lLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAg
dm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50JiBpbWFnZU1hcCkKICAg
ICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1faW1hZ2VNYXBzQnlOYW1l
KQotICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3Bl
T3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRy
ZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9pbWFnZU1hcHNCeU5hbWUtPmFkZCgqbmFtZSwg
aW1hZ2VNYXAsICp0aGlzKTsKIH0KIApAQCAtMjYzLDcgKzI2Myw3IEBAIEhUTUxNYXBFbGVtZW50
KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2
b2lkIFRyZWVTY29wZTo6YWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoY29uc3QgQXRvbVN0cmluZ0lt
cGwmIG5hbWUsIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2ltYWdl
c0J5VXNlbWFwKQotICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxU
cmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gbWFrZVVu
aXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIHJldHVybiBtX2ltYWdlc0J5VXNlbWFw
LT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgSFRN
TExhYmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJlbEVsZW1lbnRGb3JJZChjb25zdCBBdG9tU3Ry
aW5nJiBmb3JBdHRyaWJ1dGVWYWwKIAogICAgIGlmICghbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSkg
ewogICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgbWFwIG9uIGZpcnN0IGFjY2Vzcy4KLSAgICAgICAg
bV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJl
ZE1hcD4oKTsKKyAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8VHJl
ZVNjb3BlT3JkZXJlZE1hcD4oKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGxhYmVsIDogZGVzY2Vu
ZGFudHNPZlR5cGU8SFRNTExhYmVsRWxlbWVudD4obV9yb290Tm9kZSkpIHsKICAgICAgICAgICAg
IGNvbnN0IEF0b21TdHJpbmcmIGZvclZhbHVlID0gbGFiZWwuYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihmb3JBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaAppbmRleCBkZGE0OTBiMTNjZGMyZGRiODNmYjFmYzhmZmFiMDlkZjAwODhk
ODJjLi40MjY4MTk2Zjg5MmFmMzA1NTEwM2M0ODcyZmU4ZWNiZGQ1ZjExYWQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC00MSw2ICs0MSw3
IEBAIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiBjbGFzcyBUZXh0OwogCiBjbGFzcyBBY2Nlc3NpYmls
aXR5VW5kb1JlcGxhY2VkVGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQWNjZXNzaWJpbGl0eVVuZG9SZXBsYWNlZFRleHQoKSB7IH0KICAgICB2b2lkIGNv
bmZpZ3VyZVJhbmdlRGVsZXRlZEJ5UmVhcHBseVdpdGhTdGFydGluZ1NlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNzkzNDJj
NDk3NzUzZDlhMTUyNmUwNTU1NDlmYzc3OTcyMTRiZjZlNC4uODkxYzEyODhjNmUzMTRhY2NhZTli
NjI3MTk3ODE4ODFlNzQyZGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzgw
LDEyICszODAsMTIgQEAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2Zl
ckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCwKICAgICBzd2l0Y2ggKGtpbmQp
IHsKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6Q29weToKICAgICBjYXNlIENsaXBib2Fy
ZEV2ZW50S2luZDo6Q3V0OgotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JD
b3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkV3JpdGUs
IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CisgICAgICAgIHJldHVybiBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVy
OjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsK
ICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6UGFzdGVBc1BsYWluVGV4dDoKICAgICAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVi
b2FyZERhdGFFbmFibGVkKCkpIHsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0VHlwZSA9ICJ0
ZXh0L3BsYWluIl9zOwogICAgICAgICAgICAgYXV0byBwbGFpblRleHQgPSBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JDb3B5QW5kUGFzdGUoKS0+cmVhZFN0cmluZyhwbGFpblRleHRUeXBlKTsKLSAgICAg
ICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2Fy
ZD4oKTsKKyAgICAgICAgICAgIGF1dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFz
dGVib2FyZD4oKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmQtPndyaXRlU3RyaW5nKHBsYWluVGV4
dFR5cGUsIHBsYWluVGV4dCk7CiAgICAgICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFk
b25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSk7CiAgICAgICAgIH0KQEAgLTM5NiwxMCArMzk2LDEw
IEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9h
cmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6
OkJlZm9yZUNvcHk6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkJlZm9yZUN1dDoKICAg
ICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlUGFzdGU6Ci0gICAgICAgIHJldHVybiBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVy
OjpTdG9yZU1vZGU6OkludmFsaWQsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4o
KSk7CisgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShk
b2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIG1ha2VVbmlxdWU8U3Rh
dGljUGFzdGVib2FyZD4oKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0
YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFz
dGVib2FyZD4oKSk7CisgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBh
c3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1
ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKIH0KIAogLy8gUmV0dXJucyB3aGV0aGVyIGNhbGxlciBz
aG91bGQgY29udGludWUgd2l0aCAidGhlIGRlZmF1bHQgcHJvY2Vzc2luZyIsIHdoaWNoIGlzIHRo
ZSBzYW1lIGFzCkBAIC0xMTgzLDkgKzExODMsOSBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRp
dGluZyhFZGl0Q29tbWFuZENvbXBvc2l0aW9uJiBjb21wb3NpdGlvbikKIAogRWRpdG9yOjpFZGl0
b3IoRnJhbWUmIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKLSAgICAsIG1fa2lsbFJpbmco
c3RkOjptYWtlX3VuaXF1ZTxQQUw6OktpbGxSaW5nPigpKQotICAgICwgbV9zcGVsbENoZWNrZXIo
c3RkOjptYWtlX3VuaXF1ZTxTcGVsbENoZWNrZXI+KGZyYW1lKSkKLSAgICAsIG1fYWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI+KGZyYW1lKSkKKyAgICAsIG1fa2lsbFJpbmcobWFrZVVuaXF1ZTxQQUw6OktpbGxSaW5nPigp
KQorICAgICwgbV9zcGVsbENoZWNrZXIobWFrZVVuaXF1ZTxTcGVsbENoZWNrZXI+KGZyYW1lKSkK
KyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcihtYWtlVW5pcXVlPEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI+KGZyYW1lKSkKICAgICAsIG1fZWRpdG9yVUlVcGRhdGVUaW1lcigqdGhp
cywgJkVkaXRvcjo6ZWRpdG9yVUlVcGRhdGVUaW1lckZpcmVkKQogI2lmIEVOQUJMRShURUxFUEhP
TkVfTlVNQkVSX0RFVEVDVElPTikgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3Rl
bGVwaG9uZU51bWJlckRldGVjdGlvblVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjpzY2FuU2Vs
ZWN0aW9uRm9yVGVsZXBob25lTnVtYmVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggMGRkYzE1YmRjMGQzMDRmNDU0M2Ew
NTk2MmJjNmNjNzY0NWY1NDc5NC4uMmMyMDI4Y2M2M2MxYjkzOGJjNjZmZjRiZWE1ODk5MjU4ZTlh
NGE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAKQEAgLTE2MzEsNyArMTYzMSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OnVwZGF0ZU5vZGVzSW5zZXJ0ZWQoTm9kZSAqbm9kZSkKIFJlcGxhY2VtZW50RnJhZ21l
bnQqIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1cmVSZXBsYWNlbWVudEZyYWdtZW50KCkK
IHsKICAgICBpZiAoIW1fcmVwbGFjZW1lbnRGcmFnbWVudCkKLSAgICAgICAgbV9yZXBsYWNlbWVu
dEZyYWdtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlbWVudEZyYWdtZW50PihtX2RvY3Vt
ZW50RnJhZ21lbnQuZ2V0KCksIGVuZGluZ1NlbGVjdGlvbigpKTsKKyAgICAgICAgbV9yZXBsYWNl
bWVudEZyYWdtZW50ID0gbWFrZVVuaXF1ZTxSZXBsYWNlbWVudEZyYWdtZW50PihtX2RvY3VtZW50
RnJhZ21lbnQuZ2V0KCksIGVuZGluZ1NlbGVjdGlvbigpKTsKICAgICByZXR1cm4gbV9yZXBsYWNl
bWVudEZyYWdtZW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nl
bGVjdGlvblJlY3RHYXRoZXJlci5jcHAKaW5kZXggM2I0MDY4OGNiNGRhNjU2YjM0NDU4N2MwODg4
NjM2YzBhYjE1NjZjZi4uZjliNjRjNWM4Yzg5NmJmMzIyNjMwODcwOWYyNmFhNjY3ZTFlZDk4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNw
cApAQCAtODEsNyArODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VsZWN0aW9uUmVjdEdhdGhlcmVy
OjpOb3RpZmllcj4gU2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpjbGVhckFuZAogICAgIG1fZ2FwUmVj
dHMuY2xlYXIoKTsKICAgICBtX2lzVGV4dE9ubHkgPSB0cnVlOwogCi0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Tm90aWZpZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOb3Rp
Zmllcj4oKnRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggMTg5NmUxYTIyODFjMWE5YjA0NmU4ZWZhY2Q5
MTE5YWY1ZTI3N2Q1Ni4uZjFkMTljMTAxMTRjMWE5ODViOGI0MjZmYTY4ZmRiODEyMmE2MGM3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtNjUwLDcgKzY1MCw3
IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgIHVuc2lnbmVk
IGVuZFBvc2l0aW9uID0gKG1fbm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9lbmRPZmZzZXQpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICBp
ZiAoIW1fZmxvd1J1blJlc29sdmVyQ2FjaGUgfHwgJm1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPmZs
b3coKSAhPSAmYmxvY2tGbG93KSB7CiAgICAgICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4
dExlbmd0aEluRmxvdyA9IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPyAwIDogdGV4dE5vZGVPZmZz
ZXRJbkZsb3codGV4dE5vZGUpOwotICAgICAgICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9
IHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxv
dywgKmxheW91dCk7CisgICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gbWFrZVVu
aXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsK
ICAgICAgICAgfQogICAgICAgICAvLyBTa2lwIHRvIG1fb2Zmc2V0IHBvc2l0aW9uLgogICAgICAg
ICBhdXRvIHJhbmdlID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+cmFuZ2VGb3JSZW5kZXJlcihy
ZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0KaW5kZXggMGE4M2FjMDk1OTI3NGMwNzgwZDVkN2IzODVmMDE5YzBlODZlM2M3NC4uOWNmODZh
NGExNWYxYzdjNmYwMjgxNTU2NDdhZmEwMDU5YWUzYjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzgwLDcgKzM4MCw3IEBAIEhUTUxD
b252ZXJ0ZXI6OkhUTUxDb252ZXJ0ZXIoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3Np
dGlvbiYgZW5kKQogICAgIF9mbGFncy5yZWFjaGVkU3RhcnQgPSBmYWxzZTsKICAgICBfZmxhZ3Mu
cmVhY2hlZEVuZCA9IGZhbHNlOwogICAgIAotICAgIF9jYWNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhUTUxDb252ZXJ0ZXJDYWNoZXM+KCk7CisgICAgX2NhY2hlcyA9IG1ha2VVbmlxdWU8SFRNTENv
bnZlcnRlckNhY2hlcz4oKTsKIH0KIAogSFRNTENvbnZlcnRlcjo6fkhUTUxDb252ZXJ0ZXIoKQpA
QCAtNTUxLDcgKzU1MSw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gSFRNTENvbnZlcnRlckNhY2hlczo6
Y29tcHV0ZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudChFbGVtZW50JiBlCiAKICAgICBhdXRvIHJl
c3VsdCA9IG1fY29tcHV0ZWRTdHlsZXMuYWRkKCZlbGVtZW50LCBudWxscHRyKTsKICAgICBpZiAo
cmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+KCZlbGVtZW50LCB0cnVlKTsKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8Q29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcj4oJmVsZW1lbnQsIHRydWUpOwogICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3ImIGNv
bXB1dGVkU3R5bGUgPSAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKICAgICByZXR1cm4gY29tcHV0
ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHByb3BlcnR5SWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAppbmRl
eCAyNTc3ZDVhNzY5NjgxNjIyZjVkMGE3YjYzZmY0ZDA5ZDg4Yzk1ZGMxLi4yOWM1YThkYTdlZTMy
NTU2MTI2NTY5MDU0ZTMwMjIyOGE1MzAxODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaApAQCAtMzcsNiAr
MzcsNyBAQCBPQkpDX0NMQVNTIE5TVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIoKSB7IH0KICAgICAv
LyBSZXR1cm5zIGEgY29udGV4dCBJRC4KQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyIHsKICAgICB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZXMoKTsKIAog
ICAgIGNsYXNzIEFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRyb2xsZXIgeworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEFsZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXIoKSB7IH0KICAgICAgICAgdWludDY0X3QgYWRkQWx0ZXJuYXRpdmVz
KGNvbnN0IFJldGFpblB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKaW5kZXggZmI0MzcxNjMwM2FlMjViODE5MjkyZDI3MWNhMmNhZTY4NGI5YzAyZS4u
YzNjOGY4YjMyNGJmZWNkY2U5ZTVjNGViMTliNWI3NDYwODkyOGMzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBj
cmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogewogICAgIGF1dG8gcGFnZUNvbmZp
Z3VyYXRpb24gPSBwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKTsKICAgICAKLSAg
ICBhdXRvIHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24pKTsKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24pKTsKICAgICBwYWdlLT5zZXRJc0ZvclNhbml0aXppbmdXZWJDb250ZW50KCk7
CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2UpOwogICAgIHBhZ2Ut
PnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggYTA5NWVlYWU5YjJhNzk3YmRhYmFlMzQ5NDBm
ZGM2YTNjZTMwNDI0Yi4uZDU4MTEyZmY5YmRmNmNkN2QxOTg1NTJkODY2OTkxZjg1YjdhMWMzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtOTQsMTEg
Kzk0LDExIEBAIHN0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rpb248dm9pZCAoKT4m
JiBmdW5jdGlvbikKICAgICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBxdWV1ZS5nZXQoKS5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikp
KTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4o
V1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJl
YW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQotICAgIDogbV9pbnRlcm5hbHMoc3RkOjptYWtl
X3VuaXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkpCisgICAgOiBtX2ludGVybmFscyhtYWtlVW5pcXVl
PEludGVybmFscz4oY2xpZW50KSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggOWFkM2RhOWVmZmYwZjNhNzA3
YTA2MDFmNzg2MDFkNWQ4NjgyNThmNS4uOTlhN2I1YzZmOTg3YTE0YmExOTA5NDU4OTg3YWU4NGVj
ZmM0ZjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMzksNyAr
MTM5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmlsZVJlYWRlcjo6cmVhZEludGVybmFsKEJsb2Im
IGJsb2IsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXAKICAgICBtX3N0YXRlID0gTE9BRElORzsK
ICAgICBtX2Vycm9yID0gbnVsbHB0cjsKIAotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50Kj4odGhpcykpOworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVy
TG9hZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4o
dGhpcykpOwogICAgIG1fbG9hZGVyLT5zZXRFbmNvZGluZyhtX2VuY29kaW5nKTsKICAgICBtX2xv
YWRlci0+c2V0RGF0YVR5cGUobV9ibG9iLT50eXBlKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcAppbmRleCA2YWU1NTJjYmNlZmJhMzVhZjU0OTRhZDgwYTE0NzMxZDAwYWNhM2Qx
Li41YzhmMThlM2RhYjBlYjI1OTdhZDVlODIyMTM5YmQ4OGZmMzI0ZTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIENhY2hlZEZyYW1l
OjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAKICAgICAvLyBDcmVhdGUgdGhlIENhY2hlZEZy
YW1lcyBmb3IgYWxsIEZyYW1lcyBpbiB0aGUgRnJhbWVUcmVlLgogICAgIGZvciAoRnJhbWUqIGNo
aWxkID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS5uZXh0U2libGluZygpKQotICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKKyAgICAgICAgbV9jaGlsZEZyYW1lcy5h
cHBlbmQobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4oKmNoaWxkKSk7CiAKICAgICBSRUxFQVNFX0FT
U0VSVChtX2RvY3VtZW50LT5kb21XaW5kb3coKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1
bWVudC0+ZnJhbWUoKSk7CkBAIC0xNzIsNyArMTcyLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZy
YW1lKEZyYW1lJiBmcmFtZSkKICAgICAvLyBBY3RpdmUgRE9NIG9iamVjdHMgbXVzdCBiZSBzdXNw
ZW5kZWQgYmVmb3JlIHdlIGNhY2hlIHRoZSBmcmFtZSBzY3JpcHQgZGF0YS4KICAgICBtX2RvY3Vt
ZW50LT5zdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZSk7CiAKLSAgICBtX2Nh
Y2hlZEZyYW1lU2NyaXB0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0Q2FjaGVkRnJhbWVE
YXRhPihmcmFtZSk7CisgICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEgPSBtYWtlVW5pcXVlPFNj
cmlwdENhY2hlZEZyYW1lRGF0YT4oZnJhbWUpOwogCiAgICAgbV9kb2N1bWVudC0+ZG9tV2luZG93
KCktPnN1c3BlbmRGb3JQYWdlQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFn
ZS5jcHAKaW5kZXggMDY4NmFlOGZlY2U0NGYxZWY2OTBlNWY4ZjZhYmU4NDYxNDYzZGY3ZC4uOTc0
N2E0MDQwMTZhYzg2OGQyZjc3OTZlNTMzMDQzNmZmYTU4NzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC01Niw3ICs1Niw3IEBAIERFRklORV9ERUJVR19PTkxZX0dM
T0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgY2FjaGVkUGFnZUNvdW50ZXIsICgiQ2Fj
aGVkCiBDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFn
ZSkKICAgICAsIG1fZXhwaXJhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBTZWNvbmRz
KHBhZ2Uuc2V0dGluZ3MoKS5iYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsKCkpKQot
ICAgICwgbV9jYWNoZWRNYWluRnJhbWUoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRGcmFtZT4ocGFn
ZS5tYWluRnJhbWUoKSkpCisgICAgLCBtX2NhY2hlZE1haW5GcmFtZShtYWtlVW5pcXVlPENhY2hl
ZEZyYW1lPihwYWdlLm1haW5GcmFtZSgpKSkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2FjaGVk
UGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAK
aW5kZXggMDAyOTY1NTg5MmQxNTRjYjUwNDNlMWRhMjI4MjU4NzlmNjNlZGRlNS4uM2JhMjRiOWRl
MmU5OTQxOTZhMGRmOTJmYzM2NjNjZWVhNWJmNGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBAIGJvb2wgUGFnZUNhY2hlOjphZGRJZkNhY2hl
YWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKICAgICAgICAgLy8gTWFrZSBzdXJl
IHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgogICAgICAgICBTY3Jp
cHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAK
LSAgICAgICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFBhZ2U+
KCpwYWdlKTsKKyAgICAgICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBtYWtlVW5pcXVlPENhY2hlZFBh
Z2U+KCpwYWdlKTsKICAgICAgICAgaXRlbS5tX3BydW5pbmdSZWFzb24gPSBQcnVuaW5nUmVhc29u
OjpOb25lOwogICAgICAgICBtX2l0ZW1zLmFkZCgmaXRlbSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggN2E5OTFmMTdiMDNkODNlOTA1ZjdkM2UwNjA3YmY1
MmE5OWI4MGU0NS4uYjE0ZDMxMDE1OGI2NDVmZTg2OTlmN2Y5OWY0MTg1OGJkNTVhZTI4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9p
ZCBGaWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMp
CiAgICAgICAgIG1fZmlsZUljb25Mb2FkZXItPmludmFsaWRhdGUoKTsKIAogICAgIEZpbGVJY29u
TG9hZGVyQ2xpZW50JiBjbGllbnQgPSAqdGhpczsKLSAgICBtX2ZpbGVJY29uTG9hZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKKyAgICBtX2ZpbGVJY29uTG9h
ZGVyID0gbWFrZVVuaXF1ZTxGaWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKIAogICAgIGNocm9tZS0+
bG9hZEljb25Gb3JGaWxlcyhwYXRocywgKm1fZmlsZUljb25Mb2FkZXIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IDgwNmU1ZjNkYWVi
ZTI5NGUzMzAyMzBkZmE1ZWRlOGM5MmQ1OGMzMTguLjE3YzAyN2NmZGZhMWJiNDNiNjQ1ZWU2MmQ1
OGM4YWMzMjA2ZDg3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29j
aWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHZvaWQgRm9ybUFzc29j
aWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oYXNIVE1MRWxlbWVudCgpLmlzQ29ubmVj
dGVkKCkpOwotICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMpOworICAgIG1fZm9ybUF0
dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbWFrZVVuaXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZv
cm1BdHRyKSwgKnRoaXMpOwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0
dHJpYnV0ZVRhcmdldENoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNw
cAppbmRleCBlYTViMDlhYWEwOGRiMjczOTYxYjk1MzQyMmYwM2RkN2FkNmU0NjcxLi5kMGUwM2Y1
NmNiMDYzZTI3ZjExMzQwYTI3MTNkNGY5NjFiNWFlNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Db250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTYXZl
ZEZvcm1TdGF0ZT4gU2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJp
bmc+CiAgICAgc2l6ZV90IGl0ZW1Db3VudCA9IHN0YXRlVmVjdG9yW2luZGV4KytdLnRvVUludCgp
OwogICAgIGlmICghaXRlbUNvdW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IHNhdmVkRm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKKyAg
ICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAg
ICB3aGlsZSAoaXRlbUNvdW50LS0pIHsKICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSBzdGF0ZVZl
Y3Rvci5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2NSwxMyArMzY1
LDEzIEBAIHN0YXRpYyBTdHJpbmcgZm9ybVN0YXRlU2lnbmF0dXJlKCkKIHN0ZDo6dW5pcXVlX3B0
cjxGb3JtQ29udHJvbGxlcjo6U2F2ZWRGb3JtU3RhdGVNYXA+IEZvcm1Db250cm9sbGVyOjpjcmVh
dGVTYXZlZEZvcm1TdGF0ZU1hcChjb25zdCBGb3JtRWxlbWVudExpc3RIYXNoU2V0JiBjb250cm9s
TGlzdCkKIHsKICAgICBGb3JtS2V5R2VuZXJhdG9yIGtleUdlbmVyYXRvcjsKLSAgICBhdXRvIHN0
YXRlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4oKTsKKyAgICBhdXRv
IHN0YXRlTWFwID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4oKTsKICAgICBmb3IgKGF1
dG8mIGNvbnRyb2wgOiBjb250cm9sTGlzdCkgewogICAgICAgICBpZiAoIWNvbnRyb2wtPnNob3Vs
ZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGF1dG8mIGZvcm1TdGF0ZSA9IHN0YXRlTWFwLT5hZGQoa2V5R2VuZXJhdG9yLmZv
cm1LZXkoKmNvbnRyb2wpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAg
ICBpZiAoIWZvcm1TdGF0ZSkKLSAgICAgICAgICAgIGZvcm1TdGF0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2F2ZWRGb3JtU3RhdGU+KCk7CisgICAgICAgICAgICBmb3JtU3RhdGUgPSBtYWtlVW5pcXVl
PFNhdmVkRm9ybVN0YXRlPigpOwogICAgICAgICBmb3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0
ZShjb250cm9sLT5uYW1lKCksIGNvbnRyb2wtPnR5cGUoKSwgY29udHJvbC0+c2F2ZUZvcm1Db250
cm9sU3RhdGUoKSk7CiAgICAgfQogICAgIHJldHVybiBzdGF0ZU1hcDsKQEAgLTQwMyw3ICs0MDMs
NyBAQCBGb3JtQ29udHJvbFN0YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxl
bWVudChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbAogICAgIGlmIChtX3NhdmVkRm9ybVN0YXRlTWFw
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoKTsKICAgICBpZiAo
IW1fZm9ybUtleUdlbmVyYXRvcikKLSAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxGb3JtS2V5R2VuZXJhdG9yPigpOworICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0
b3IgPSBtYWtlVW5pcXVlPEZvcm1LZXlHZW5lcmF0b3I+KCk7CiAgICAgU2F2ZWRGb3JtU3RhdGVN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9zYXZlZEZvcm1TdGF0ZU1hcC5maW5kKG1fZm9ybUtleUdlbmVy
YXRvci0+Zm9ybUtleShjb250cm9sKS5pbXBsKCkpOwogICAgIGlmIChpdCA9PSBtX3NhdmVkRm9y
bVN0YXRlTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAxMDQ3YzU4ZWVjMzUz
NmUzZDM5OTNhN2I2ZTU4NjI1YjAxNTk1MmYxLi5lYjliZDA2ODVkNTkyZWE2OTIzMTNhZDQxNmMy
N2Q3ZjI4MjYxZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cApAQCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6Omhhc1JlbChSZWxh
dGlvbiByZWxhdGlvbikgY29uc3QKIERPTVRva2VuTGlzdCYgSFRNTEFuY2hvckVsZW1lbnQ6OnJl
bExpc3QoKSBjb25zdAogewogICAgIGlmICghbV9yZWxMaXN0KSB7Ci0gICAgICAgIG1fcmVsTGlz
dCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0PEhUTUxBbmNob3JF
bGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5n
VmlldyB0b2tlbikgeworICAgICAgICBtX3JlbExpc3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlz
dD4oY29uc3RfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCY+KCp0aGlzKSwgSFRNTE5hbWVzOjpyZWxB
dHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICNpZiBVU0UoU1lTVEVNX1BS
RVZJRVcpCiAgICAgICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwg
Im5vcmVmZXJyZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAibm9vcGVuZXIi
KSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAiYXIiKTsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggYWMwNzU4ZGU4M2IwNDg4MmE1ZDg5
MjJmZDQwNTU0OGVmOTU2ZGNhMi4uNDlhYmZhNWY3MGE3YWI5N2Q3M2UyYzgyYjc2N2IwNTM1MWFk
ZWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFJlZ2lvbigpCiBi
b29sIEhUTUxBcmVhRWxlbWVudDo6bWFwTW91c2VFdmVudChMYXlvdXRQb2ludCBsb2NhdGlvbiwg
Y29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlm
IChtX2xhc3RTaXplICE9IHNpemUpIHsKLSAgICAgICAgbV9yZWdpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7CisgICAgICAgIG1fcmVnaW9uID0gbWFrZVVuaXF1
ZTxQYXRoPihnZXRSZWdpb24oc2l6ZSkpOwogICAgICAgICBtX2xhc3RTaXplID0gc2l6ZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggMDc3
MTVjYmI1MDk1NGE2MjYzNmM5MzMwNWE3NjUzMzU5ZDFlNmY2Yi4uMjAxNGVmZTc1Y2VjNDYwZTM3
OTFlMzYzZjU2MjhlNTAwMWI4ZGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKQEAgLTk1Miw3ICs5NTIsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50Ojpz
ZXRJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKSBjbwog
ICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyh0
cnVlKTsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShkZWZhdWx0SW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIG1faW1hZ2VCdWZmZXIt
PmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7Ci0gICAgbV9jb250ZXh0U3RhdGVTYXZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcj4obV9pbWFnZUJ1
ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gbWFrZVVuaXF1ZTxH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhIVE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT52bSgpKTsKICAgICBIVE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQobWVtb3J5Q29zdCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggOTc2YzhlMGE5YTA2YTliODNk
NmNhOTQxYmQ1ZGQzN2I5ZjMzODVjNS4uMzI4MTc2YjY5ZThjZDFiZjIyZDRlNzYzMjdlOWYyOTI5
NjhhYjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTIwNSw3
ICsyMDUsNyBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgp
IGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1l
bnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRF
bGVtZW50Q2FjaGU+KCk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGYxNTc4NzRlNmQ1MzRlM2Y2MTM0ZTRhNWRmNGY1
MWJlMmY2N2EzMWEuLjYwZGQxZmIyNTIwMzg2MGQzZDkyYTdhNWFjYjMzMWMyYWIwNGI1OTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTg4LDcgKzg4
LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgRGV0YWlsc1Nsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZv
ckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkKIFJlZjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhU
TUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIGRldGFpbHMgPSBhZG9wdFJlZigqbmV3IEhU
TUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIGRldGFpbHMtPmFkZFNo
YWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERl
dGFpbHNTbG90QXNzaWdubWVudD4oKSkpOworICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hh
ZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlVW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVu
dD4oKSkpOwogICAgIHJldHVybiBkZXRhaWxzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBkODg5M2IxZjA5NDllZjEwMmUyOWQw
M2M1ODk2N2M0ZGQ0ZjNmZDVhLi5lMTUzMTZhMTllZWZiNDc3ZTNmMzY3YzgwZjdjM2MxYTJhNjM0
Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0
ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgd2lsbFZh
bGlkYXRlKCkpCiAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZSgpLnN0cmlwV2hp
dGVTcGFjZSgpOwogICAgIGlmICghbV92YWxpZGF0aW9uTWVzc2FnZSkKLSAgICAgICAgbV92YWxp
ZGF0aW9uTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMp
OworICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gbWFrZVVuaXF1ZTxWYWxpZGF0aW9uTWVz
c2FnZT4odGhpcyk7CiAgICAgbV92YWxpZGF0aW9uTWVzc2FnZS0+dXBkYXRlVmFsaWRhdGlvbk1l
c3NhZ2UobWVzc2FnZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggNmVjMjJkNzc0OWYyZjc4YmQzMWVmNzdlYTYz
NjA3M2I3MWM1OWZmMi4uYTJiMDBlOGY4MTZkYTFjMjIxYjFjMzY2ZWE2ZTY4OWMzYjFjNjhiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Ojp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVu
dENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0g
bWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKICAgICBIYXNoU2V0
PEF0b21TdHJpbmdJbXBsKj4gZm91bmRJbnB1dEVsZW1lbnRzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggYzc2ZDQ5M2E2MmNlZDgzMDg4MDFiNmIwMWQzMzIx
ZTBhMzMzZjUxZC4uNDM1ZDk1MTRkZDI5ZGRkMWY2ZGZiMWQxNjllMzQ3ZTMxNWEzMDE5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNzkxLDcgKzc5MSw3IEBA
IHZvaWQgSFRNTEZvcm1FbGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcChGb3JtTmFtZWRJdGVtKiBp
dGVtLCBjb25zdCBBdG9tU3RyaW5nJiBwCiAgICAgaWYgKHBhc3ROYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmICghbV9wYXN0TmFtZXNNYXApCi0gICAgICAgIG1fcGFzdE5h
bWVzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7CisgICAgICAgIG1fcGFz
dE5hbWVzTWFwID0gbWFrZVVuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7CiAgICAgbV9wYXN0TmFtZXNN
YXAtPnNldChwYXN0TmFtZS5pbXBsKCksIGl0ZW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDAyZDdkNGU0ZmJlODZmNTI3MGY1ODRiNmE4ZGVi
OWJlNDZmOTdhYTkuLmIxYzgyMWRkOWJhYmEyYTIwY2IyOWUxYzFjZmQ5MGQ3MWZlYzU4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3
IEBAIFJlZjxIVE1MSUZyYW1lRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiBET01Ub2tlbkxpc3QmIEhUTUxJRnJhbWVFbGVt
ZW50OjpzYW5kYm94KCkKIHsKICAgICBpZiAoIW1fc2FuZGJveCkgewotICAgICAgICBtX3NhbmRi
b3ggPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBb
XShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9zYW5kYm94ID0gbWFr
ZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzYW5kYm94QXR0ciwgW10oRG9jdW1lbnQmLCBT
dHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAgICByZXR1cm4gU2VjdXJpdHlDb250ZXh0Ojpp
c1N1cHBvcnRlZFNhbmRib3hQb2xpY3kodG9rZW4pOwogICAgICAgICB9KTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAwYzI1Y2RkODBkNWY4YTc3
MGExZDk3MDA1Nzg0N2E4OWM1NjgzZGJkLi4zNzZjNTIxOTY0ZTBmNzFiNmZkOWMyMTcyZDYyMDFj
MjkyNTdhMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAg
LTE0OCw3ICsxNDgsNyBAQCBSZWY8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogSFRNTEltYWdlTG9hZGVy
JiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxvYWRlcigpCiB7CiAgICAgaWYgKCFtX2lt
YWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1M
SW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8
SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQog
CkBAIC0xNjQxLDcgKzE2NDEsNyBAQCBSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gSFRNTElu
cHV0RWxlbWVudDo6ZGF0YUxpc3QoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNl
dExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkp
Ci0gICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24obGlzdEF0dHIpLCB0aGlzKTsKKyAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIgPSBtYWtlVW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRl
V2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0ciksIHRoaXMpOwogICAgIGVsc2UKICAgICAg
ICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGI4NjM0Y2FkYWZhMThhMGEyN2NjZjcy
OGY5YmJmNTZjYjdmNzhkMTYuLmY2YTdiYzgwMjRmZmE1ZTRiZDcxZjY5YTI3Yzk3YzhjOTM2YmI0
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0
ODEsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6c3R5bGVTaGVldElzTG9hZGluZygpIGNvbnN0
CiBET01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxlbWVudDo6c2l6ZXMoKQogewogICAgIGlmICghbV9z
aXplcykKLSAgICAgICAgbV9zaXplcyA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0Pigq
dGhpcywgc2l6ZXNBdHRyKTsKKyAgICAgICAgbV9zaXplcyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5M
aXN0PigqdGhpcywgc2l6ZXNBdHRyKTsKICAgICByZXR1cm4gKm1fc2l6ZXM7CiB9CiAKQEAgLTUy
Miw3ICs1MjIsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQo
TGlua0V2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVt
ZW50OjpyZWxMaXN0KCkKIHsKICAgICBpZiAoIW1fcmVsTGlzdCkgCi0gICAgICAgIG1fcmVsTGlz
dCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpyZWxB
dHRyLCBbXShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAg
bV9yZWxMaXN0ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJl
bEF0dHIsIFtdKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tlbikgewogICAgICAg
ICAgICAgcmV0dXJuIExpbmtSZWxBdHRyaWJ1dGU6OmlzU3VwcG9ydGVkKGRvY3VtZW50LCB0b2tl
bik7CiAgICAgICAgIH0pOwogICAgIHJldHVybiAqbV9yZWxMaXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYjU1YzQ2OTA2MWRjYzA0ZjJhMTE5YTI1NTM4
ZWYwODJmZTZlNDM1NS4uZjY0ZmU5MmI2YjdkMDFjNDk0YjU3YTc2NWUyYTU1YjY0YjNmMDQzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgx
LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpm
aW5pc2hJbml0aWFsaXphdGlvbigpCiB7Ci0gICAgbV9tZWRpYVNlc3Npb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1lZGlhRWxlbWVudFNlc3Npb24+KCp0aGlzKTsKKyAgICBtX21lZGlhU2Vzc2lvbiA9
IG1ha2VVbmlxdWU8TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOwogCiAgICAgbV9tZWRpYVNl
c3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWly
ZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7CiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2
aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9M
b2FkTWVkaWEpOwpAQCAtMzAyNyw3ICszMDI3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0K
IAogICAgIC8vIDUgLSBJZiB0aGUgc2VlayB3YXMgaW4gcmVzcG9uc2UgdG8gYSBET00gbWV0aG9k
IGNhbGwgb3Igc2V0dGluZyBvZiBhbiBJREwgYXR0cmlidXRlLCB0aGVuIGNvbnRpbnVlCiAgICAg
Ly8gdGhlIHNjcmlwdC4gVGhlIHJlbWFpbmRlciBvZiB0aGVzZSBzdGVwcyBtdXN0IGJlIHJ1biBh
c3luY2hyb25vdXNseS4KLSAgICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nU2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2Up
OworICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUs
IG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CiAgICAgaWYgKGZyb21ET00p
IHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImVucXVldWluZyBzZWVrIGZyb20g
Iiwgbm93LCAiIHRvICIsIHRpbWUpOwogICAgICAgICBtX3NlZWtUYXNrUXVldWUuc2NoZWR1bGVU
YXNrKHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjEyNDU0MWY3Y2Y1NGExMTBhNWU0
ODZlNDJjNzFjZDJhMmVmYTE5My4uMmM2ZWMwNThlNGM5NTIxMzFjMGVhMDhlMDhhN2VhOTQzNTgw
NjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk5MCw2ICs5
OTAsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50CiAgICAgUmVmUHRyPE1lZGlhRXJyb3I+IG1f
ZXJyb3I7CiAKICAgICBzdHJ1Y3QgUGVuZGluZ1NlZWsgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBlbmRpbmdTZWVrKGNvbnN0IE1lZGlhVGltZSYg
bm93LCBjb25zdCBNZWRpYVRpbWUmIHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRp
dmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUb2xlcmFuY2UpCiAgICAgICAg
ICAgICA6IG5vdyhub3cpCiAgICAgICAgICAgICAsIHRhcmdldFRpbWUodGFyZ2V0VGltZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggZGQ0ZmEyZDcwZTRm
NDNmNDJiODIyMmQzN2Q0NDE4ZjFhMTMxZWQ4Ny4uNTZiNzIwNmFlM2JlOGYxMGE4ODE0YWU5YWZh
YzYyYmZlYjU2MDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5j
cHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXREZWZhdWx0
VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIERPTVRva2VuTGlzdCYgSFRNTE91dHB1dEVsZW1l
bnQ6Omh0bWxGb3IoKQogewogICAgIGlmICghbV90b2tlbnMpCi0gICAgICAgIG1fdG9rZW5zID0g
c3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBmb3JBdHRyKTsKKyAgICAgICAg
bV90b2tlbnMgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOwogICAg
IHJldHVybiAqbV90b2tlbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGRkYTk0NDlkNTdhZDQyMDg1ODYyN2RlZDNmZGQ5MTgx
MzIxNWZlMmIuLjViOTlkNTU1NTMwNDk3MDkzYzZiY2E5OTU4N2M3YTJmNzI1NTkwOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjg3
LDcgKzI4Nyw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHls
ZVJlc29sdXRpb24oKQogICAgIGlmIChyZW5kZXJlcigpICYmICF1c2VGYWxsYmFja0NvbnRlbnQo
KSkgewogICAgICAgICBpZiAoaXNJbWFnZVR5cGUoKSkgewogICAgICAgICAgICAgaWYgKCFtX2lt
YWdlTG9hZGVyKQotICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2Fk
ZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgaWYg
KG1fbmVlZHNJbWFnZVJlbG9hZCkKICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRh
dGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IDEwYmMwOWZm
MDk5Yzg4OGIyMjYyNjkzOTBiOGUxZjhiZTRjZTM5NjcuLmIwNDkzOWI5YzJkNzI3MDIxMzc5YzVh
NGRkMzQwNDdkODEyYWQ5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1
bW1hcnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxl
bWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU3VtbWFyeVNsb3RFbGVtZW50IGZpbmFs
IDogcHVibGljIFNsb3RBc3NpZ25tZW50IHsKIFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IEhUTUxT
dW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWY8SFRNTFN1bW1hcnlFbGVtZW50PiBzdW1tYXJ5ID0g
YWRvcHRSZWYoKm5ldyBIVE1MU3VtbWFyeUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAg
ICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3Rk
OjptYWtlX3VuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsKKyAgICBzdW1tYXJ5LT5hZGRT
aGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVVuaXF1ZTxTdW1tYXJ5
U2xvdEVsZW1lbnQ+KCkpKTsKICAgICByZXR1cm4gc3VtbWFyeTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggYTVlNzVhYWZmNTJkZGY5ZjU3NTQ1YmEw
NjdlZWM3ODk4ODhkZDlhYi4uNjdmZjIxMjUyZjFiOGU4MzEwYTFkN2NiYjIzMmVhOGM3MzkzOGEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC05NCw3ICs5
NCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICB1
cGRhdGVEaXNwbGF5U3RhdGUoKTsKICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkp
IHsKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgbV9pbWFnZUxvYWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAg
ICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5p
bWFnZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CkBA
IC0xMjcsNyArMTI3LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW4KIAogICAgICAgICBpZiAo
c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxv
YWRlcikKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxI
VE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0g
bWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgICAgIG1faW1hZ2VM
b2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggN2JlYmM3
YTEwY2NiZWQ1M2NmZThjYWY4YTA3Yzc4ZTZjNTc5ZDY0Zi4uYjY2OGRhMWYzMjE0ZGJmOWI5MTYx
ZWZhODMyNTZjOTVjYTgyMTFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJs
aWNVUkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFn
ZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPFB1YmxpY1VSTE1hbmFnZXI+IFB1YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UHVibGljVVJMTWFuYWdlcj4oY29udGV4dCk7CisgICAgYXV0byBw
dWJsaWNVUkxNYW5hZ2VyID0gbWFrZVVuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsK
ICAgICBwdWJsaWNVUkxNYW5hZ2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcHVi
bGljVVJMTWFuYWdlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRh
dGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5j
cHAKaW5kZXggOGFmNzNhOGEwMDU0OTgwYWQxNzkwNjk1NmE4NDMyYTZmOWNkYjE0Yi4uZjVkYWIw
ZjQyZjJkMDUzZTcwM2M2YzU3MjNjYTE2MDM3MWQxYTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTExNSw5ICsxMTUsOSBAQCB2b2lkIFZhbGlkYXRp
b25NZXNzYWdlOjpzZXRNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQo
IW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOwogICAgIGlmICgh
bV9idWJibGUpCi0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhp
cywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVy
ID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJi
bGVUcmVlKTsKICAgICBlbHNlCi0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRp
bWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1l
cik7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRp
b25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7CiAgICAgbV90aW1lci0+c3Rh
cnRPbmVTaG90KDBfcyk7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFZhbGlkYXRpb25N
ZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcigpCiAgICAgaWYgKG1hZ25pZmljYXRp
b24gPD0gMCkKICAgICAgICAgbV90aW1lciA9IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAgICAg
IG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNz
YWdlOjpkZWxldGVCdWJibGVUcmVlKTsKKyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGlt
ZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgICAg
ICBtX3RpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoNV9zLCAxX21zICogc3RhdGljX2Nhc3Q8
ZG91YmxlPihtX21lc3NhZ2UubGVuZ3RoKCkpICogbWFnbmlmaWNhdGlvbikpOwogICAgIH0KIH0K
QEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRl
TWVzc2FnZSgpCiAgICAgfQogCiAgICAgLy8gV2UgbXVzdCBub3QgbW9kaWZ5IHRoZSBET00gdHJl
ZSBpbiB0aGlzIGNvbnRleHQgYnkgdGhlIHNhbWUgcmVhc29uIGFzIHNldE1lc3NhZ2UoKS4KLSAg
ICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVz
c2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CisgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+
KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgIG1fdGlt
ZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGIx
Njc3ODQ0MjhjM2JmZTllNmYxNmE3Nzg0MGQzZjNiYjk3MDViOTYuLjUzYzljNTY2MDQyN2M0ODZl
MzJhYmMwYzJkNjU0Y2NjNTZjMDI4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC05OSw3
ICs5OSw3IEBAIHN0cnVjdCBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0IHsKIAogICAgIERpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBj
b25zdCBGbG9hdFJlY3QmIGNsaXApCiAgICAgICAgIDogY29udGV4dChbJl0oR3JhcGhpY3NDb250
ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5
TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBk
aXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSkK
ICAgICB7CiAgICAgfQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAg
aWYgKFVOTElLRUxZKG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZykpIHsKICAgICAgICAgaWYgKCFt
X3JlY29yZGluZ0NvbnRleHQpCi0gICAgICAgICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dFN0
YXRlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkp
KTsKKyAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGxheUxp
c3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOwogICAgICAgICByZXR1cm4gJm1f
cmVjb3JkaW5nQ29udGV4dC0+Y29udGV4dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjMxMTkx
NzU3MGYyZGIyODU5NGNiYjM0OTAyNDY5OTdiNTgzZmJlMC4uY2Q0NzIxMjYxYjJlMDIyYjU1MjVk
ZDNkM2NhNTQ2OWY5YzBiM2VhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEzNTksNyArMTM1OSw3IEBAIFdl
YkdMRXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBuYW1lKQogI2RlZmluZSBFTkFCTEVfSUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxl
LCBuYW1lTGl0ZXJhbCwgY2FuRW5hYmxlKSBcCiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgbmFtZUxpdGVyYWwpKSB7IFwKICAgICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0g
ICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBl
PigqdGhpcykgOiBudWxscHRyOyBcCisgICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUp
ID8gbWFrZVVuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCiAgICAgICAgICAgICBpZiAo
dmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IGUwNmJmOTlkNTkxNTk2Mzk4MGE2MTFjMzJhODM5ZTI5N2YxMjgwNDUuLmU1
ZmRlNzAzMzc0NTZhMzFlMTU3MWVlMTBmM2ZkMjY0MmRiMDM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTE2
LDcgKzExNiw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQo
dHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZh
cmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1h
a2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxl
ID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAg
ICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBc
CiAgICAgICAgIH0gXApAQCAtMTMyLDcgKzEzMiw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAg
ICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVu
YWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwotICAgICAgICAgICAgICAgIG1f
ZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxP
RD4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG1ha2VV
bmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU5LDcgKzE1OSw3IEBAIFdlYkdMRXh0ZW5zaW9u
KiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVu
c3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwotICAgICAgICAgICAgICAgIG1f
d2ViZ2xEcmF3QnVmZmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRo
aXMpOworICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG1ha2VVbmlxdWU8V2Vi
R0xEcmF3QnVmZmVycz4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAg
ICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFi
bGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAgICAgICAgICAgICAgICBtX2Fu
Z2xlSW5zdGFuY2VkQXJyYXlzID0gc3RkOjptYWtlX3VuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5
cz4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBtYWtl
VW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDNlY2U3ZWViNzQy
ZmFkYjZmZTE4YjMzZWI1YTYxMzljZWQ0MWJhNTYuLmQxNjZmYjIzOTA3NmQzNjI2NWQ5NmM2NDVm
MDcxODc1YWM4MmJiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03OTksOCArNzk5LDggQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAg
bV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUu
aGVpZ2h0KCkpOwogICAgIG1fY29udGV4dC0+c2Npc3NvcigwLCAwLCBjYW52YXNTaXplLndpZHRo
KCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogCi0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9z
dENhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxi
YWNrPih0aGlzKSk7Ci0gICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhzdGQ6
Om1ha2VfdW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0
aGlzKSk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG1ha2VVbmlxdWU8
V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0
LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhtYWtlVW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4
dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6c2V0dXBGbGFncygpCkBAIC0xNTc5LDcgKzE1NzksNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikK
ICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5z
cGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgp
KTsKIAogICAgICAgICBmb3IgKGF1dG8mIGVycm9yIDogZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIp
LnNwbGl0KCdcbicpKQotICAgICAgICAgICAgY2FudmFzLT5kb2N1bWVudCgpLmFkZENvbnNvbGVN
ZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsKKyAgICAgICAgICAg
IGNhbnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3IsIHN0YWNrVHJhY2Uu
Y29weVJlZigpKSk7CiAgICAgfQogfQogCkBAIC01ODA4LDkgKzU4MDgsOSBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJgogICAgIC8vIEVycm9yIG1lc3NhZ2VzIGNhbiBvY2N1ciBkdXJpbmcgZnVu
Y3Rpb24gY2FsbHMsIHNvIHNob3cgc3RhY2sgdHJhY2VzIGZvciB0aGVtLgogICAgIGlmIChsZXZl
bCA9PSBNZXNzYWdlTGV2ZWw6OkVycm9yKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlw
dENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNr
KEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSk7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKHN0
YWNrVHJhY2UpKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6
OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOwogICAgIH0gZWxzZQot
ICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBs
ZXZlbCwgbWVzc2FnZSk7CisgICAgICAgIGNvbnNvbGVNZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VU
eXBlOjpMb2csIGxldmVsLCBtZXNzYWdlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52
YXMoKTsKICAgICBpZiAoY2FudmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
Q1NTUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGU4NTkwY2NjNjk3MjhhZjM5MzAxZDNhZThkODk4
OGY1YzE1YTRiMmEuLmFlZmU0NTdmNGVmZjA0MzY1NzYzY2IyNmY3MTc4NDYzZTMyZTFkN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAK
QEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAg
ICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50
VVJMOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVs
b2FkU2Nhbm5lciB2aWEgc2NhbigpOiB3aXRob3V0IGl0IHdlIHdpbGwgZ2V0IHJlbGF0aXZlIFVS
THMgd3JvbmcuCiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgaW5jbHVkaW5n
IHRoZSBjaGFyc2V0IGluIHRoZSBwcmVsb2FkIHJlcXVlc3Q/Ci0gICAgICAgICAgICBtX3JlcXVl
c3RzLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwg
YmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJp
bmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpF
bXB0eVN0cmluZykpOworICAgICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKG1ha2VVbmlxdWU8
UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVT
Y3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpKTsKICAgICAgICAgfQogICAg
ICAgICBtX3N0YXRlID0gSW5pdGlhbDsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHJ1bGUsICJjaGFyc2V0IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggNTFiYWU0YzIxY2Y5NDBk
Y2Q4YzZkMzIwYmM0ZGJkNjYyNmJlN2Q5Zi4uOWFjNDQ0ZWYwYTY3MWY4YTQ3Njk5NTdhZTMyMjJi
ZDhkMTAwN2Q5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNTAzLDcgKzUwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4gSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2Vy
dEhUTUxFCiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBlbGVtZW50SW50ZXJmYWNlID0g
bnVsbHB0cjsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50
T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSh0b2tlbiwgJmVsZW1lbnRJbnRlcmZhY2UpOwog
ICAgIGlmIChVTkxJS0VMWShlbGVtZW50SW50ZXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJm
YWNlLCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygpKSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPigqZWxlbWVu
dEludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBXVEZNb3ZlKHRva2VuLmF0dHJpYnV0ZXMoKSkpOwog
ICAgIGF0dGFjaExhdGVyKGN1cnJlbnROb2RlKCksICplbGVtZW50KTsKICAgICBtX29wZW5FbGVt
ZW50cy5wdXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0ZShlbGVtZW50LnJlbGVhc2VOb25OdWxsKCks
IFdURk1vdmUodG9rZW4pKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA0ZmY0ZTJiODc4
OGE5MTliZjQyZDE3YWQ5ZmQ2NTFiOWIwM2FkMTliLi5kZDllYTA0YzZmNTAwYzg2NGI4Yzk0YzE5
MzgzNzg3N2FmZmRlNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTUzLDExICs1MywxMSBAQCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwgbV9vcHRpb25zKGRvY3VtZW50
KQogICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zKQotICAgICwgbV9zY3JpcHRSdW5uZXIoc3Rk
OjptYWtlX3VuaXF1ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRN
TFNjcmlwdFJ1bm5lckhvc3QmPigqdGhpcykpKQotICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1h
a2VfdW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50
UG9saWN5KCksIG1fb3B0aW9ucykpCi0gICAgLCBtX3BhcnNlclNjaGVkdWxlcihzdGQ6Om1ha2Vf
dW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVy
KG1ha2VVbmlxdWU8SFRNTFNjcmlwdFJ1bm5lcj4oZG9jdW1lbnQsIHN0YXRpY19jYXN0PEhUTUxT
Y3JpcHRSdW5uZXJIb3N0Jj4oKnRoaXMpKSkKKyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1
ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBkb2N1bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgp
LCBtX29wdGlvbnMpKQorICAgICwgbV9wYXJzZXJTY2hlZHVsZXIobWFrZVVuaXF1ZTxIVE1MUGFy
c2VyU2NoZWR1bGVyPigqdGhpcykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShkb2N1bWVu
dCkKLSAgICAsIG1fcHJlbG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFJlc291cmNlUHJlbG9h
ZGVyPihkb2N1bWVudCkpCisgICAgLCBtX3ByZWxvYWRlcihtYWtlVW5pcXVlPEhUTUxSZXNvdXJj
ZVByZWxvYWRlcj4oZG9jdW1lbnQpKQogewogfQogCkBAIC03MCw3ICs3MCw3IEBAIGlubGluZSBI
VE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCwgRWxlbWVuCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQu
ZG9jdW1lbnQoKSwgcmF3UG9saWN5KQogICAgICwgbV9vcHRpb25zKGZyYWdtZW50LmRvY3VtZW50
KCkpCiAgICAgLCBtX3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0
ZDo6bWFrZV91bmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRF
bGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCisgICAgLCBtX3RyZWVC
dWlsZGVyKG1ha2VVbmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRl
eHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCiAgICAgLCBtX3hz
c0F1ZGl0b3JEZWxlZ2F0ZShmcmFnbWVudC5kb2N1bWVudCgpKQogewogICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctaHRtbC1m
cmFnbWVudHMKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVt
cFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKICAgICBpZiAoaXNXYWl0aW5nRm9yU2Ny
aXB0cygpKSB7CiAgICAgICAgIEFTU0VSVChtX3Rva2VuaXplci5pc0luRGF0YVN0YXRlKCkpOwog
ICAgICAgICBpZiAoIW1fcHJlbG9hZFNjYW5uZXIpIHsKLSAgICAgICAgICAgIG1fcHJlbG9hZFNj
YW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBk
b2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAg
ICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+
KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFj
dG9yKCkpOwogICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1
dC5jdXJyZW50KCkpOwogICAgICAgICB9CiAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4o
Km1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBIVE1M
RG9jdW1lbnRQYXJzZXI6Omluc2VydChTZWdtZW50ZWRTdHJpbmcmJiBzb3VyY2UpCiAgICAgICAg
IC8vIENoZWNrIHRoZSBkb2N1bWVudC53cml0ZSgpIG91dHB1dCB3aXRoIGEgc2VwYXJhdGUgcHJl
bG9hZCBzY2FubmVyIGFzCiAgICAgICAgIC8vIHRoZSBtYWluIHNjYW5uZXIgY2FuJ3QgZGVhbCB3
aXRoIGluc2VydGlvbnMuCiAgICAgICAgIGlmICghbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lcikK
LSAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1l
bnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAgICBtX2luc2VydGlvblByZWxv
YWRTY2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9j
dW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAg
ICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChzb3VyY2UpOwogICAgICAg
ICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxF
bGVtZW50U3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRT
dGFjay5jcHAKaW5kZXggMzBjNWI0NmRmMTAzZGJkZjZmNGI3Y2U0MDljYzNhYTE2YzU0NjAxMi4u
NmVmMTcxMmI5ZDYzYjcxYWNiN2MxNjlmNjJiNDljODJmMzEwNTgxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKQEAgLTMzOSw3ICszMzks
NyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6Omluc2VydEFib3ZlKFJlZjxIVE1MU3RhY2tJdGVt
PiYmIGl0ZW0sIEVsZW1lbnRSZWNvcmQmIHJlYwogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgKyttX3N0YWNrRGVwdGg7Ci0gICAgICAgIHJlY29yZEFib3ZlLT5zZXROZXh0KHN0ZDo6
bWFrZV91bmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgcmVjb3JkQWJvdmUtPnJl
bGVhc2VOZXh0KCkpKTsKKyAgICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQobWFrZVVuaXF1ZTxF
bGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkp
OwogICAgICAgICByZWNvcmRBYm92ZS0+bmV4dCgpLT5lbGVtZW50KCkuYmVnaW5QYXJzaW5nQ2hp
bGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lk
IEhUTUxFbGVtZW50U3RhY2s6OnB1c2hDb21tb24oUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSkK
ICAgICBBU1NFUlQobV9yb290Tm9kZSk7CiAKICAgICArK21fc3RhY2tEZXB0aDsKLSAgICBtX3Rv
cCA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92
ZShtX3RvcCkpOworICAgIG1fdG9wID0gbWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3Zl
KGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9w
Q29tbW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCmluZGV4IDUzYTE3MmQzM2FmY2RhOGZmODhkMzQ0ZDljMGVmMDkwM2NkZWNjOTIu
LjMzZDdiM2JiMDhiNjUyZDBjZDY5YmNlZGYxZjg2MDYzMWFmYWExNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTYxLDcg
KzE2MSw3IEBAIGNsYXNzIFRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lciB7CiAg
ICAgICAgIGlmICghTGlua0xvYWRlcjo6aXNTdXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgbV90
eXBlQXR0cmlidXRlKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1
dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZv
cihtX3RhZ0lkKSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwg
bV9tZWRpYUF0dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOworICAg
ICAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JG
b3IobV90YWdJZCksIG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCB0eXBlLnZhbHVlKCks
IG1fbWVkaWFBdHRyaWJ1dGUsIG1fbW9kdWxlU2NyaXB0LCBtX3JlZmVycmVyUG9saWN5KTsKICAg
ICAgICAgcmVxdWVzdC0+c2V0Q3Jvc3NPcmlnaW5Nb2RlKG1fY3Jvc3NPcmlnaW5Nb2RlKTsKICAg
ICAgICAgcmVxdWVzdC0+c2V0Tm9uY2UobV9ub25jZUF0dHJpYnV0ZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggZjcxYjIxZDI3ODk1ZTU3OGFiNDdmNWNmNTQw
MjU4M2UzNjEyMWQwMi4uM2Y3NDZkYzZkNjY3YzQzNzExYjY4ZDA5YjQyMDJkMjNmZjBjMDg4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTIwOSw3ICsyMDksNyBA
QCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9DVFlQRSgpCiB7CiAgICAgQVNTRVJUKG1f
dHlwZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBET0NUWVBFOwotICAgIG1fZG9j
dHlwZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3R5cGVEYXRhPigpOworICAgIG1fZG9jdHlw
ZURhdGEgPSBtYWtlVW5pcXVlPERvY3R5cGVEYXRhPigpOwogfQogCiBpbmxpbmUgdm9pZCBIVE1M
VG9rZW46OmJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGFjNmU3OTQ0MzAwNzAzNjQyMWViMTZkZjgzYTkw
ZDNkMjc3MmY4NTYuLjA2MWQ5NTY3Yjc4NGQ5YjBiYWNmM2Y2ZGI5Y2RlNWE4MDZiMDFjMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0zNzYsNyArMzc2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhTU0luZm8+IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNv
bnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBib29sIGRpZEJsb2NrRW50aXJlUGFnZSA9IG1feHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90
ZWN0aW9uRGlzcG9zaXRpb246OkJsb2NrRW5hYmxlZDsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2Vu
ZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8WFNTSW5m
bz4obV9kb2N1bWVudFVSTCwgZGlkQmxvY2tFbnRpcmVQYWdlLCBtX2RpZFNlbmRWYWxpZFhTU1By
b3RlY3Rpb25IZWFkZXIpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclN0YXJ0VG9rZW4o
Y29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzEyLDcgKzcxMiw3IEBAIFN1
ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4qIFhTU0F1ZGl0b3I6OmRlY29kZWRIVFRQQm9keVN1ZmZp
eFRyZWUoKQogICAgIGNvbnN0IHVuc2lnbmVkIHN1ZmZpeFRyZWVEZXB0aCA9IDU7CiAKICAgICBp
ZiAoIW1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSAmJiBtX2RlY29kZWRIVFRQQm9keS5sZW5n
dGgoKSA+PSBtaW5pbXVtTGVuZ3RoRm9yU3VmZml4VHJlZSkKLSAgICAgICAgbV9kZWNvZGVkSFRU
UEJvZHlTdWZmaXhUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJv
b2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4VHJlZURlcHRoKTsKKyAgICAgICAgbV9kZWNv
ZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0gbWFrZVVuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJv
b2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4VHJlZURlcHRoKTsKICAgICByZXR1cm4gbV9k
ZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAz
YTYzN2RhZWYwMTI0ZTJlNGVkMzM2YjY2Mzc1MmQwMDIyYjViZTAxLi5kNTY2YmNjNzk0YWE3MjRh
YmU2MGEwODBhM2YyY2Y5NTFmNDUzN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTE3NCw3ICsxNzQs
NyBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxl
bWVudDo6cmVuZGVyZXIoKSBjb25zdAogT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJv
bElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9
IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVh
dGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKLSAgICByZXR1cm4gRWxlbWVudFN0
eWxlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CisgICAg
cmV0dXJuIEVsZW1lbnRTdHlsZShtYWtlVW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxl
KSkpOwogfQogCiAvLyBNQVJLOiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAK
aW5kZXggZTQwMjAwYTlhN2EyMjVkZGZkODc0NGQ4YzkzYmRlNjkwOTY0NzAwOS4uNDkzNGQ3Mjlj
MTk4ZDA4MDU5YWM4YzlmMGIxNzRhOTVlNzZmNzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCkBAIC0xNzQsNyArMTc0
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlQ3Vl
KFRleHRUcmFja0N1ZSYgY3VlKQogV2ViVlRUUGFyc2VyJiBJbmJhbmRHZW5lcmljVGV4dFRyYWNr
OjpwYXJzZXIoKQogewogICAgIGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRU
UGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZU
VFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAg
ICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxX
ZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5kZXggODU1YmIyMzkyN2ViMTBh
MzVhNTlkMTJiZTBkMjM1YTczY2FiYzEwZS4uMTBmYWExMmY5MGI0NjBiNTA1NmYyNTY3Y2MyZDk4
MTI3ZDhmYWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRX
ZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
V2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6On5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKSA9IGRlZmF1bHQ7CiBXZWJWVFRQYXJzZXImIElu
YmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKCkKIHsKICAgICBpZiAoIW1fd2ViVlRUUGFyc2Vy
KQotICAgICAgICBtX3dlYlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2Vy
PihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBh
cnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICptX3dlYlZUVFBhcnNlcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCA4ZjI5
YzdmMTY3OWEwZmEyOTE4ZGVjZmE1MTNlMmQ4MDI3MWEzNWUyLi43YTFlMWJjNDY5MWIyMTE2ODhj
M2NmNWRhNjE5YWM2MWRiZDZmZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIExvYWRhYmxlVGV4
dFRyYWNrOjpsb2FkVGltZXJGaXJlZCgpCiAgICAgLy8gNC4gRG93bmxvYWQ6IElmIFVSTCBpcyBu
b3QgdGhlIGVtcHR5IHN0cmluZywgcGVyZm9ybSBhIHBvdGVudGlhbGx5IENPUlMtZW5hYmxlZCBm
ZXRjaCBvZiBVUkwsIHdpdGggdGhlCiAgICAgLy8gbW9kZSBiZWluZyB0aGUgc3RhdGUgb2YgdGhl
IG1lZGlhIGVsZW1lbnQncyBjcm9zc29yaWdpbiBjb250ZW50IGF0dHJpYnV0ZSwgdGhlIG9yaWdp
biBiZWluZyB0aGUKICAgICAvLyBvcmlnaW4gb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBEb2N1bWVu
dCwgYW5kIHRoZSBkZWZhdWx0IG9yaWdpbiBiZWhhdmlvdXIgc2V0IHRvIGZhaWwuCi0gICAgbV9s
b2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4
dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7CisgICAgbV9sb2FkZXIgPSBt
YWtlVW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xp
ZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJh
Y2tFbGVtZW50LT5kb2N1bWVudCgpKSk7CiAgICAgaWYgKCFtX2xvYWRlci0+bG9hZChtX3VybCwg
Km1fdHJhY2tFbGVtZW50KSkKICAgICAgICAgbV90cmFja0VsZW1lbnQtPmRpZENvbXBsZXRlTG9h
ZChIVE1MVHJhY2tFbGVtZW50OjpGYWlsdXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKaW5kZXggMDMxMDgwZTFhYjY2ZDMyY2M5YzA3
MTc4ZjAyZjkzNTIzYmM3MDZiMC4uOTAyOWI5MmQ4YjgzZjJkN2JlZDZkOGU1NDU3NmMwYTE2OGNh
NTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJ
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPENvbW1hbmRMaW5lQVBJSG9zdD4gQ29tbWFuZExp
bmVBUElIb3N0OjpjcmVhdGUoKQogfQogCiBDb21tYW5kTGluZUFQSUhvc3Q6OkNvbW1hbmRMaW5l
QVBJSG9zdCgpCi0gICAgOiBtX2luc3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RhYmxlT2JqZWN0PigpKQorICAgIDogbV9pbnNwZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNw
ZWN0YWJsZU9iamVjdD4oKSkKIHsKIH0KIApAQCAtMTk2LDcgKzE5Niw3IEBAIEpTVmFsdWUgQ29t
bWFuZExpbmVBUElIb3N0Ojp3cmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iCiB2b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycygp
CiB7CiAgICAgbV93cmFwcGVycy5jbGVhckFsbFdyYXBwZXJzKCk7Ci0gICAgbV9pbnNwZWN0ZWRP
YmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOworICAgIG1faW5z
cGVjdGVkT2JqZWN0ID0gbWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApp
bmRleCA2YzMxZTQ5OGU0MzRkMzAwYjBmMWM2ZWFiODQzNDY3NzZjZjBhMmZjLi44Mzg5MDhkYzkz
NmVmYTZiYTI2Yzc5MTY3MTQ0ZGI3ZGU5ZTJhZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NRWRpdG9yLmNwcApAQCAtODksNyArODksNyBAQCBjbGFzcyBET01FZGl0b3I6Okluc2VydEJl
Zm9yZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHBlcmZvcm0oKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKG1f
bm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgp
LCBtX25vZGUpOworICAgICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IG1ha2VVbmlxdWU8
UmVtb3ZlQ2hpbGRBY3Rpb24+KCptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlKTsKICAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9yZW1vdmVDaGlsZEFjdGlvbi0+cGVyZm9ybSgpOwogICAg
ICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKQEAgLTM4NSwyNyArMzg1LDI3IEBAIERPTUVk
aXRvcjo6fkRPTUVkaXRvcigpID0gZGVmYXVsdDsKIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRp
dG9yOjppbnNlcnRCZWZvcmUoTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYgbm9kZSwgTm9k
ZSogYW5jaG9yTm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtl
X3VuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFu
Y2hvck5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJbnNl
cnRCZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVDaGlsZChOb2RlJiBwYXJl
bnROb2RlLCBOb2RlJiBub2RlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6
Om1ha2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPihwYXJlbnROb2RlLCBub2RlKSk7CisgICAg
cmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBh
cmVudE5vZGUsIG5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRB
dHRyaWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5p
cXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwgdmFsdWUpKTsKKyAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRBdHRyaWJ1dGVBY3Rpb24+KGVsZW1l
bnQsIG5hbWUsIHZhbHVlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVt
b3ZlQXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAg
ICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVBdHRyaWJ1
dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0o
bWFrZVVuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29u
c3QgU3RyaW5nJiBodG1sLCBOb2RlKiYgbmV3Tm9kZSkKIHsKLSAgICBhdXRvIGFjdGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKKyAgICBhdXRv
IGFjdGlvbiA9IG1ha2VVbmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKICAg
ICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwogICAgIGF1dG8gcmVzdWx0ID0gbV9oaXN0b3J5
LnBlcmZvcm0oV1RGTW92ZShhY3Rpb24pKTsKICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKQEAgLTQxNSwyMiArNDE1LDIyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0
T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSomCiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5zZXJ0QWRqYWNlbnRIVE1MKEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCkKIHsKLSAgICByZXR1
cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxB
Y3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJm
b3JtKG1ha2VVbmlxdWU8SW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9uPihlbGVtZW50LCB3aGVyZSwg
aHRtbCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRl
eHQoVGV4dCYgdGV4dE5vZGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICByZXR1cm4gbV9o
aXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0
ZXh0Tm9kZSwgdGV4dCkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVl
PFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0KSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUsIFJlZjxO
b2RlPiYmIG5ld05vZGUsIE5vZGUmIG9sZE5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5w
ZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9k
ZSwgV1RGTW92ZShuZXdOb2RlKSwgb2xkTm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShtYWtlVW5pcXVlPFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1v
dmUobmV3Tm9kZSksIG9sZE5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9y
OjpzZXROb2RlVmFsdWUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXROb2RlVmFsdWVBY3Rp
b24+KG5vZGUsIHZhbHVlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlx
dWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSkpOwogfQogCiBzdGF0aWMgYm9vbCBw
b3B1bGF0ZUVycm9yU3RyaW5nKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0LCBFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBv
cnQuY3BwCmluZGV4IGNjNWUxMjNiNTQxYzlmMGQ0ZGY0YmE4ZTgyNzVmNTM1MmRkOWE5ZmYuLmYy
ZTU4NmZlNDMwYjhiY2U4MjFiZDdlMjdmM2VmN2ZjMjVhOTczNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3Rh
dGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0Y2hTdXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3Vw
cG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUmIG5vZGUsIFVudXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rl
c01hcCkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlnZXN0PigpOwor
ICAgIGF1dG8gZGlnZXN0ID0gbWFrZVVuaXF1ZTxEaWdlc3Q+KCk7CiAgICAgZGlnZXN0LT5ub2Rl
ID0gJm5vZGU7CiAgICAgU0hBMSBzaGExOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNTIwMzcwNmI1M2IzMmIwYmE0ZjBlZDRk
NGJhNDAwYjZjNzliNWUxNS4uNjNmZjNhYjYyM2E0NDZjZDYyMGVlNDdlMzkyMDU1Y2VhNTFhODc2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtOTMsMTAgKzkzLDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIElu
c3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVj
dG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMo
SW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhp
cywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdl
YkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihG
cm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQotICAgICwg
bV9vdmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVj
dG9yQ2xpZW50KSkKKyAgICAsIG1fb3ZlcmxheShtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+
KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9w
d2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihwYWdlKQogICAgICwg
bV9wYWdlKHBhZ2UpCkBAIC0xMDYsNyArMTA2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5z
cGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMK
IAogICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRv
IGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNv
bnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxQYWdlQ29uc29sZUFn
ZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25z
b2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZShjb25zb2xlQWdlbnQpKTsKIH0KQEAgLTE1MywzNyArMTUzLDM3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQo
KTsKICAgICBlbnN1cmVQYWdlQWdlbnQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMu
YXBwZW5kKG1ha2VVbmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAotICAg
IGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+
KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VE
ZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0g
ZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dl
ckFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTmV0
d29ya0FnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFw
cGVuZChtYWtlVW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7
CiAgICAgZW5zdXJlRE9NQWdlbnQoKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2Vu
dFB0cikpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsK
LSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2Vu
dD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0
b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQp
KTsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFn
ZUNvbnRleHQpKTsKICNlbmRpZgogCi0gICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4
dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5zZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdl
bnRQdHIuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVy
QWdlbnRQdHIpKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLSAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50PihwYWdlQ29u
dGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck1l
bW9yeUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMu
YXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAj
ZW5kaWYKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlSGVhcEFnZW50
PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VBdWRpdEFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckNhbnZhc0FnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZUhlYXBBZ2VudD4o
cGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlQXVkaXRB
Z2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNw
ZWN0b3JDYW52YXNBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihwYWdlQ29udGV4dCkpOwogCiAgICAgaWYg
KGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21t
YW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5z
dHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIEluc3BlY3Rv
ckFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAg
ICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBw
YWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgICAgIGF1dG8gaW5z
cGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CiAg
ICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQoKTsKICAgICAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JBZ2VudChtX2luc3BlY3RvckFnZW50
KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKQEAg
LTQzMyw3ICs0MzMsNyBAQCBJbnNwZWN0b3JET01BZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5zdXJlRE9NQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JET01BZ2VudCkgewogICAg
ICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRv
IGRvbUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRl
eHQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgICAgIGF1dG8gZG9tQWdlbnQgPSBtYWtlVW5pcXVl
PEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAg
ICAgbV9pbnNwZWN0b3JET01BZ2VudCA9IGRvbUFnZW50LmdldCgpOwogICAgICAgICBtX2FnZW50
cy5hcHBlbmQoV1RGTW92ZShkb21BZ2VudCkpOwogICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCBJ
bnNwZWN0b3JQYWdlQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCgp
CiB7CiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2VBZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VD
b250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0
b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgICAgIGF1dG8gcGFnZUFnZW50ID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVu
dCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JQYWdlQWdlbnQgPSBwYWdl
QWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHBhZ2VBZ2VudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4IDI4ZWU3MjdhMzZkNjZjZTIxMDk2OTc4MzFhZTBh
OGFhYzQyMzg1NzUuLjZjMWI1MWFkZWU5YTM4NDI2MzMzOGY0NWQ4ODg0YTZkOWMzN2VhODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsIDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTZXR0
aW5ncyB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAg
ICAgICAgU2V0dGluZ3MoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflNldHRpbmdzKCkg
PSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rvcnku
Y3BwCmluZGV4IDAwZDVmMTg1MmNlYmEyNzBjM2FmODFjMTMyMDkwMDVkYTdiMTE4YTguLmM4MTAz
ZGQ3ZGJiODMyMGVhYjJlNmFkNWUzMmMyZDUyZDcyYjA2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gSW5zcGVjdG9ySGlzdG9yeTo6cGVyZm9ybShzdGQ6OnVuaXF1ZV9wdHI8QWN0
aW9uPiBhY3Rpb24pCiAKIHZvaWQgSW5zcGVjdG9ySGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUo
KQogewotICAgIHBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7
CisgICAgcGVyZm9ybShtYWtlVW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigpKTsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gSW5zcGVjdG9ySGlzdG9yeTo6dW5kbygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggMTQ5NWYzOWUyYTQ1
ZTNjNzJhOTYxNGFmZjU3OWU2NGRkZjU1YzBiNS4uZGJlNTU1M2YwMTIxNzM0YTk2NTkxMzg0NmFh
ZDQ2YmYyNzc5NzNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUGFyc2VkU3R5bGVTaGVl
dDo6c2V0U291cmNlRGF0YShzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBzb3Vy
Y2VECiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3NvdXJjZURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKKyAgICBtX3NvdXJjZURhdGEgPSBtYWtl
VW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEg
dGVtcG9yYXJ5IHNvbHV0aW9uIHRvIHJldGFpbiB0aGUgb3JpZ2luYWwgZmxhdCBzb3VyY2VEYXRh
IHN0cnVjdHVyZQogICAgIC8vIGNvbnRhaW5pbmcgb25seSBzdHlsZSBydWxlcywgZXZlbiB0aG91
Z2ggQ1NTUGFyc2VyIG5vdyBwcm92aWRlcyB0aGUgZnVsbCBydWxlIHNvdXJjZSBkYXRhIHRyZWUu
CkBAIC0xMzIwLDcgKzEzMjAsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNv
dXJjZURhdGEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIG5ld1N0eWxlU2hl
ZXQgPSBTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOwotICAgIGF1dG8gcnVsZVNvdXJjZURh
dGFSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKKyAgICBh
dXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+
KCk7CiAgICAgCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRGb3JE
b2N1bWVudChtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHlsZVNo
ZWV0SGFuZGxlciBoYW5kbGVyKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VTdHls
ZVNoZWV0LT5vd25lckRvY3VtZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmlu
ZGV4IGQzYjc1OWYyOWNjZjFhZTE4MDI4MGQ1ZTE3MzY3MGQyOWM0ZjhjYzEuLmZkN2NhZDMwNzY3
ZTc3NWIxNjc1ZWM0NTRlZjdhMDhiYjAzNmQ1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgU3RyaW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJl
cXVlc3RJZCk7CiAKLSAgICBhdXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVz
b3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9
IG1ha2VVbmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNv
dXJjZURhdGEtPnNldFR5cGUodHlwZSk7CiAgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1h
cC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJlc291cmNlRGF0YSkpOwogfQpAQCAtMTQ1LDcgKzE0
NSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVx
dWVzdElkKHJlcXVlc3RJZCk7CiAKLSAgICBhdXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291
cmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsK
ICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKCZjYWNoZWRSZXNvdXJjZSk7CiAg
ICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJl
c291cmNlRGF0YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDQzNTFlODcyYTllNWEzNjQ3MjlmNWI0
ZmIyNjIxNmM3MzMwMmM4ZGQuLjM2NGFlYTdkNGI1ZDkxMTc5MzI3NWQ2NDZmMjk1ZTY3YmYwZWVl
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJv
bGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgOiBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAs
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFu
YWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9m
cm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5
UmVmKCkpKQogICAgICwgbV9leGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkK
QEAgLTY5LDcgKzY5LDcgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKIAogICAgIGF1dG8gd29y
a2VyQ29udGV4dCA9IHdvcmtlckFnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7
CisgICAgYXV0byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4o
d29ya2VyQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xl
QWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShj
b25zb2xlQWdlbnQpKTsKIH0KQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gt
PnJlc2V0KCk7CiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiAKLSAgICBtX2Zv
cndhcmRpbmdDaGFubmVsID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENo
YW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBt
YWtlVW5pcXVlPFdvcmtlclRvUGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29w
ZSk7CiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKCptX2ZvcndhcmRpbmdD
aGFubmVsLmdldCgpKTsKICAgICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
Jm1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0K
QEAgLTE2NCwxOCArMTY0LDE4IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3Jl
YXRlTGF6eUFnZW50cygpCiAKICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENv
bnRleHQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1
bnRpbWVBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5p
cXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2VyQ29udGV4dCkpOwogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29y
a2VyR2xvYmFsU2NvcGUpKSB7Ci0gICAgICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgICAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRl
eHQpKTsKKyAgICAgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckFn
ZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PFdvcmtlck5ldHdvcmtBZ2VudD4od29ya2VyQ29udGV4dCkpOwogICAgIH0KICNlbmRpZgogCi0g
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJD
b250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVi
dWdnZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFdvcmtlckF1ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxXZWJIZWFwQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBt
X2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250
ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyQXVkaXRBZ2VudD4o
d29ya2VyQ29udGV4dCkpOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAgY29t
bWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IGE4ZDNjODk5YzMyODBhMjhl
NjczMmNmODhhYjg0ZDAwMGQ0NWVkMmQuLmZkZjA0NGM1NzliMzY4YzMyMDUxYjY1ZGM0NDBlMzg3
ZjYwMThmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoUGFnZUFnZW50Q29u
dGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQXBwbGljYXRpb25DYWNo
ZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpBcHBs
aWNhdGlvbkNhY2hlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBh
Z2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcAppbmRleCBjZjk0Y2E4MDk2ZmY1NzFkNzRk
NzczYjFmMDAyNzUwNTRjMGNlMWY5Li4xMTYyNGUyNDA5NDY0ZmMxZTFlNjVhNjk5OGRiZDFiMDY4
MmYwYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudDo6SW5z
cGVjdG9yQ1BVUHJvZmlsZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKCJDUFVQcm9maWxlciJfcywgY29udGV4dCkKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVuZERp
c3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihJbnNwZWN0b3I6OkNQVVByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250
ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNGI2OTk0
NWVjNzA2N2Y5NjQzZTQ4MDczMDM0ODQyNjg2ZDYxOWZiOC4uNDRlOWM1YWJlYjRjOTY2YWJhZWE5
NDRhNDBkNWUwM2Q0NzJkMTFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBDU1NT
dHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShDU1NSdWxlJiBydWxl
KQogCiBJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDU1MiX3MsIGNvbnRleHQpCi0g
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPENTU0Zyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJv
dXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENTU0JhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CkBAIC02MjYsNyAr
NjI2LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1h
a2VfdW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0
ZXh0KSk7CisgICAgYXV0byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1h
a2VVbmlxdWU8U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRl
eHQpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBlcnJvclN0cmlu
ZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCkpOwogfQpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNl
dFN0eWxlVGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2Vu
dC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9u
PihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CisgICAgYXV0byBwZXJm
b3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0
eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkpOwog
ICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3Ry
aW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC02NzAsNyArNjcwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgSlNPTjo6T2IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
cGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3Vu
aXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5k
SWQsIHNlbGVjdG9yKSk7CisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3Rv
cnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9y
U3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpKTsKICAgICBpZiAocGVyZm9ybVJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFn
ZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hl
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOworICAg
IGF1dG8gYWN0aW9uID0gbWFrZVVuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNo
ZWV0LCBzZWxlY3Rvcik7CiAgICAgYXV0byYgcmF3QWN0aW9uID0gKmFjdGlvbjsKICAgICBhdXRv
IHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKFdURk1vdmUoYWN0
aW9uKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKaW5kZXggOWJlMDYxMTlmYjMyMTk3MDA3Mjk3MjJkODM2YTgxNmIyNWYxYzAxNS4uMGU1
MGM3NWJhNDg3NTE1NTZlNDEyZGNiOTdhZDE5NjY5NjVhOTk5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRl
eHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNhbnZhcyJfcywgY29udGV4dCkKLSAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDYW52YXNG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6Q2FudmFzQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRl
eHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQu
aW5zcGVjdGVkUGFnZSkKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpyZWNvcmRDYW52YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVu
ZAogICAgIGlmICghaW5zcGVjdG9yQ2FudmFzLT5jdXJyZW50RnJhbWVIYXNEYXRhKCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMt
PmNvbnRleHQoKS5jYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAg
ICAgICAgICBhdXRvJiBxdWV1ZSA9IE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKTsK
LSAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxi
YWNrTWljcm90YXNrPihxdWV1ZSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0
ZWRJbnNwZWN0b3JDYW52YXMgPSBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpXSB7CisgICAgICAg
ICAgICBxdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4o
cXVldWUsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2Fu
dmFzID0gaW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKV0gewogICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBjYW52YXNFbGVtZW50ID0gcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzLT5jYW52YXNFbGVt
ZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhc0VsZW1lbnQtPmlzRGVzY2Vu
ZGFudE9mKGNhbnZhc0VsZW1lbnQtPmRvY3VtZW50KCkpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA2YzE5NmUwY2M2ODJiNDQyNTZjN2RkYWFlMDkwYWEw
YWFkNTUzMTdkLi5mMGEyOGMxMzMxYzViYjMwODhkNTNlNzI0M2RiYWY0ZWViNjNlN2JkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9F
cnJvclN0cmluZyhFeGNlcHRpb24mJiBleGNlcHRpb24pCiBJbnNwZWN0b3JET01BZ2VudDo6SW5z
cGVjdG9yRE9NQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yT3Zlcmxh
eSogb3ZlcmxheSkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRE9NIl9zLCBjb250ZXh0KQog
ICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFn
ZXIpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERp
c3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0
Y2hlcihJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNw
ZWN0ZWRQYWdlKQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkpCkBAIC0zMDEsOCArMzAxLDggQEAg
SW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNwZWN0b3JET01BZ2VudCgpCiAKIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5k
Um91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9oaXN0b3J5
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpOwotICAgIG1fZG9tRWRpdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxET01FZGl0b3I+KCptX2hpc3RvcnkpOworICAgIG1faGlzdG9y
eSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsKKyAgICBtX2RvbUVkaXRvciA9IG1h
a2VVbmlxdWU8RE9NRWRpdG9yPigqbV9oaXN0b3J5KTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKICAgICBtX2RvY3VtZW50ID0gbV9pbnNw
ZWN0ZWRQYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CkBAIC02NTMsNyArNjUzLDcgQEAgaW50
IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1
c2gpCiAgICAgICAgIE5vZGUqIHBhcmVudCA9IGlubmVyUGFyZW50Tm9kZShub2RlKTsKICAgICAg
ICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICAgICAgIC8vIE5vZGUgYmVpbmcgcHVzaGVkIGlzIGRl
dGFjaGVkIC0+IHB1c2ggc3VidHJlZSByb290LgotICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5vZGVUb0lkTWFwPigpOworICAgICAgICAgICAgYXV0byBuZXdNYXAg
PSBtYWtlVW5pcXVlPE5vZGVUb0lkTWFwPigpOwogICAgICAgICAgICAgZGFuZ2xpbmdNYXAgPSBu
ZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVuZChu
ZXdNYXAucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwpAQCAtMTE3Nyw3
ICsxMTc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3IKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlx
dWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgIGJvb2wgc2hvd0luZm8gPSBmYWxzZTsgLy8gRGVm
YXVsdDogZmFsc2UgKGRvIG5vdCBzaG93IGEgdG9vbHRpcCkuCiAgICAgaGlnaGxpZ2h0SW5zcGVj
dG9yT2JqZWN0LT5nZXRCb29sZWFuKCJzaG93SW5mbyIsIHNob3dJbmZvKTsKICAgICBoaWdobGln
aHRDb25maWctPnNob3dJbmZvID0gc2hvd0luZm87CkBAIC0xMTk2LDEzICsxMTk2LDEzIEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGJvb2wgZW5hCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdo
dFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29s
b3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIHF1YWQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQp
KTsKKyAgICBhdXRvIHF1YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHks
IHdpZHRoLCBoZWlnaHQpKTsKICAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGTW92ZShxdWFkKSwg
Y29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IEpTT046OkFycmF5JiBxdWFkQXJyYXksIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNv
bnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRp
bmF0ZXMpCiB7Ci0gICAgYXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCk7
CisgICAgYXV0byBxdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCk7CiAgICAgaWYgKCFwYXJz
ZVF1YWQocXVhZEFycmF5LCBxdWFkLmdldCgpKSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJ
bnZhbGlkIFF1YWQgZm9ybWF0Il9zOwogICAgICAgICByZXR1cm47CkBAIC0xMjEyLDcgKzEyMTIs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgSlNPTjo6QXJyYQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpp
bm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNv
bnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZp
ZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxp
Z2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgaGlnaGxpZ2h0Q29uZmln
LT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKICAgICBoaWdobGln
aHRDb25maWctPnVzZVBhZ2VDb29yZGluYXRlcyA9IHVzZVBhZ2VDb29yZGluYXRlcyA/ICp1c2VQ
YWdlQ29vcmRpbmF0ZXMgOiBmYWxzZTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBmCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChmcmFtZS0+b3duZXJFbGVt
ZW50KCkpIHsKLSAgICAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtl
VW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93
SW5mbyA9IHRydWU7IC8vIEFsd2F5cyBzaG93IHRvb2x0aXBzIGZvciBmcmFtZXMuCiAgICAgICAg
IGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAgICAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3Ip
OwpAQCAtMTM5OCw3ICsxMzk4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVj
dGVkTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAgbV9pbnNw
ZWN0ZWROb2RlID0gbm9kZTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBz
dGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImPihtX2luamVjdGVkU2NyaXB0TWFu
YWdlcikuY29tbWFuZExpbmVBUElIb3N0KCkpCi0gICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+
YWRkSW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2Rl
KSk7CisgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KG1ha2VV
bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CiAKICAgICBtX3N1cHByZXNzRXZlbnRMaXN0
ZW5lckNoYW5nZWRFdmVudCA9IGZhbHNlOwogfQpAQCAtMjMxNCw3ICsyMzE0LDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sp
Ci0gICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
dmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KHRoaXMpOworICAgICAgICBtX3JldmFsaWRhdGVT
dHlsZUF0dHJUYXNrID0gbWFrZVVuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0
aGlzKTsKICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5zY2hlZHVsZUZvcigmZWxlbWVu
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCBlOTcxYTk5ZjcwNTI0ZDgzMTgx
YWU3MTVkODI2NTg4MTFmZTA4ODA4Li44MWYxNGRjMTdiZmEwNDc0N2UzZDIzZTQ1M2Y1ZTRhZjhk
MDlmZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNw
ZWN0b3JBZ2VudEJhc2UoIkRPTVN0b3JhZ2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5k
RGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6RE9NU3RvcmFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNw
ZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXggYjM3YTU2MGNlODA3NjhjNjY0
NDA4NTE1ZmIwNTUxMjYxNjViZWQ4Mi4uMzU4YTg1NjUxMmVhNGQ3MTk2MzMyYTIwNjk5MGRlMzI1
MDA0MTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNl
KQogCiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KFdlYkFn
ZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGF0YWJhc2Ui
X3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGUxZTA4MmU0MWFkMmQ1MjRmNTdlZjEwNjQwMjg4NzYxMTU2
ODI0YjkuLmI1OTgyY2VlMzdlMzc0NDcwNTM5NDZiY2Y0YzQzNGI0MzFlZjlhOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChX
ZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkxheWVy
VHJlZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJv
bnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OkxheWVyVHJlZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggMjljNzZkMGM3ZmVhOTIyYzJhM2Q5OTQxNGM5ODZlYThk
MjhkNzdiNS4uMjgzMjk1MWY1MzgwMTIxZmE0NTJiZmE4ZDQ3MGY0ZDM1ZTc4OWIxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogSW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KFBhZ2VBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIk1lbW9yeSJfcywgY29u
dGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TWVtb3J5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShj
b250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApp
bmRleCAzZTRlOTZlYjIzMWEwNTRiMjEyMTI0N2JjMmNiMDkxNjVmMDI2NWIzLi41ZDA4MTYzODBj
ZGM2NmM3ZDc5NjBjMTJkMzQ4YTBmYmYzZjdiMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0x
NzIsMTAgKzE3MiwxMCBAQCBjbGFzcyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGZp
bmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogCiBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6Okluc3BlY3Rvck5ldHdvcmtBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIk5ldHdvcmsiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hl
cj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKElu
c3BlY3Rvcjo6TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0
LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fcmVzb3VyY2VzRGF0YShzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQorICAgICwgbV9yZXNvdXJjZXNEYXRhKG1h
a2VVbmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRl
eCAzMjllMWIwYzVhZDkyZmI0NTFkZjE3NjczM2FlMmFlMzU4ZmI0OTM3Li5jNjQxYTZhMDQ4NDE5
MzI2OGUyOWU5MGZmMDEyNmFiOTExYzkzMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zMzMsNyArMzMz
LDcgQEAgRG9jdW1lbnRMb2FkZXIqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRM
b2FkZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNw
ZWN0b3JQYWdlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yQ2xpZW50
KiBjbGllbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIlBhZ2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2lu
c3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggM2EzNjFlOTFlNmYyZGViMDA0MmUxOGE3YzY0Yzdi
NTE2ZjliODBjNS4uMzBkODZjNzQ2M2M0N2Y1YjNhZDJiMzhjZjVkZTI0OWQ0NGViOWE1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYg
Y3VycmVudFJ1bkxvb3AoKQogCiBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIlRpbWVsaW5lIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6VGltZWxp
bmVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKQEAg
LTE5Myw3ICsxOTMsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3Rh
cnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKICAgICAvLyBGSVhNRTogQWJzdHJhY3Qg
YXdheSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0Mjc0OCBpcyBmaXhlZC4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2
ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9v
cE9yZGVyczo6SW5zcGVjdG9yRnJhbWVCZWdpbiksIFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3Rh
cnRPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRklu
ZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZy
YW1lQmVnaW4pLCBbdGhpc10oKSB7CiAgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vudmly
b25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50
ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgICAgICBtX3J1bkxv
b3BOZXN0aW5nTGV2ZWwrKzsKICAgICB9KTsKIAotICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVu
TG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCks
IFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3RvcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29w
T2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3du
UnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7CiAgICAgICAgIGlm
ICghbV90cmFja2luZyB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVz
ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29u
c29sZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5k
IGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0g
dGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1h
a2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1h
a2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNz
YWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlw
ZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTMxNiw3
ICszMTYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZShK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bAogICAgIGlmIChXZWJDb25zb2xlQWdl
bnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQo
KSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3Ig
bG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/
ICJObyBwcm9maWxlcyBleGlzdCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwg
IlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCB3YXJuaW5nKSk7CisgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZSht
YWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNz
YWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDkxNjFkODQzY2QzOGU0ZDk2NjEyNmFjZGQz
NmU4M2RkMThmNTEwMDIuLjFlMzk4ZWRkMWE5ZWEzZWYyNmJlMDllYzAzZDZjNmMyY2QzOThkZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIEluc3BlY3RvcldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChQYWdl
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJXb3JrZXIi
X3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpX
b3JrZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2UoY29u
dGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDJlZWQxY2U2MGIzMDIyYWQ5ODI0ZmE2
MjhhMzVkZGM1NDQ0OTYwZDkuLmMyMDk0Yjk5MmQzNTQxNjBmMTdlZTI4ZjY0MTBhNzkzZGNkZTlm
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29s
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNv
bGVBZ2VudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdAogCiAg
ICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7CiAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2
ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0dXMgb2YgIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSwgIiAoIiwgcmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSwgJyknKTsKLSAgICAgICAgYWRkTWVz
c2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNz
YWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50
aWZpZXIpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVs
bHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKICAgICB9CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAg
dm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IFJlc28KICAgICAgICAgbWVzc2FnZS5hcHBlbmQoZXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKSk7CiAgICAgfQogCi0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCks
IGVycm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsK
KyAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3Nh
Z2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1lc3NhZ2UudG9TdHJpbmcoKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCBy
ZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKaW5kZXggYmI1
ZDFiZWM2YzYzMjIzOWJlZTY0NjM0MzdhZWZlZDEyYmE0NzFkNS4uMDljYjZmNDY2NmFiNGM5MWNi
ZWUyZDBmY2ZkZDRiYTZhNjFhMTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcApAQCAtNDEsNiArNDEsNyBAQCBzdHJ1Y3QgR2FyYmFn
ZUNvbGxlY3Rpb25EYXRhIHsKIH07CiAKIGNsYXNzIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50
c1Rhc2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNlbmRH
YXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2soV2ViSGVhcEFnZW50Jik7CiAgICAgdm9pZCBhZGRH
YXJiYWdlQ29sbGVjdGlvbihHYXJiYWdlQ29sbGVjdGlvbkRhdGEmJik7CkBAIC05Niw3ICs5Nyw3
IEBAIHZvaWQgU2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzazo6dGltZXJGaXJlZCgpCiBX
ZWJIZWFwQWdlbnQ6OldlYkhlYXBBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAg
OiBJbnNwZWN0b3JIZWFwQWdlbnQoY29udGV4dCkKICAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50
cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX3NlbmRHYXJiYWdlQ29sbGVj
dGlvbkV2ZW50c1Rhc2soc3RkOjptYWtlX3VuaXF1ZTxTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVu
dHNUYXNrPigqdGhpcykpCisgICAgLCBtX3NlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2so
bWFrZVVuaXF1ZTxTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrPigqdGhpcykpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
UnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlUnVudGltZUFnZW50LmNwcAppbmRleCA1ZWFmYjZhMzI4NDZlNzAwMTUzYWM4MjY4MWI3YmU1
MGQzYWZlNDhjLi44OTg1YmM5NDVmZTc1ZTBlODUxYTM2ZGUzNTg0YWIwNDcxYzBmZGZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VS
dW50aW1lQWdlbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIFBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQoUGFnZUFnZW50Q29udGV4
dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9u
dGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlJ1bnRpbWVGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3I6OlJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFj
a2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRl
eHQuaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmlu
c3BlY3RlZFBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGIyMGNiYmM5NTA3
MDI4MTFiNjU4OWFjMWRmYmQ1NzMzOTE5M2QzMzcuLjgwODJlZTMxZWVjNjBhMmY2MDMyOWRiYWJk
NGQ5ODQyZjZhNTVmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIFdvcmtlckRlYnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFnZW50KCkgPSBkZWZh
dWx0OwogCiB2b2lkIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coRXhl
Y1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fd29ya2VyR2xv
YmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9n
LCBtZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSkpOworICAgIG1fd29ya2Vy
R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6TG9nLCBt
ZXNzYWdlLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2soJnN0YXRlKSkpOwogfQogCiBJbmplY3RlZFNj
cmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4IGJkOWQ0Y2FkZWZiMmZhYTFmMmUwYjI1Nzk1
NWFkNTEyNGUxNzk0ZWUuLjFmM2ZhYmEzMTI2ZjJlOWIzNmI4NGQxM2U3M2JmMWZkYTMxNzU0Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2
b2lkIExheW91dFN0YXRlOjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQm94
JiBsYXlvdXRSb290KQogRGlzcGxheTo6Qm94JiBMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxh
eW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKICAgICByZXR1cm4gKm1fbGF5
b3V0VG9EaXNwbGF5Qm94LmVuc3VyZSgmbGF5b3V0Qm94LCBbJmxheW91dEJveF0gewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpCb3g+KGxheW91dEJveC5zdHlsZSgp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheTo6Qm94PihsYXlvdXRCb3guc3R5
bGUoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCkBAIC0xNDAsMTMgKzE0MCwxMyBA
QCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JG
b3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICAgICAgLy8gc2hvdWxkIG5vdCBpbnRl
cmZlcmUgd2l0aCB0aGUgY29udGVudCBpbnNpZGUuCiAgICAgICAgICAgICAvLyA8ZGl2IHN0eWxl
PSJmbG9hdDogbGVmdCI+PC9kaXY+PGRpdiBzdHlsZT0ib3ZlcmZsb3c6IGhpZGRlbiI+IDwtIGlz
IGEgbm9uLWludHJ1c2l2ZSBmbG9hdCwgYmVjYXVzZSBvdmVyZmxvdzogaGlkZGVuIHRyaWdnZXJz
IG5ldyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuPC9kaXY+CiAgICAgICAgICAgICBpZiAoZm9y
bWF0dGluZ1Jvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihG
bG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOworICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxv
YXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKIAogICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgZm9ybWF0dGluZyBjb250ZXh0IGluaGVyaXRzIHRo
ZSBmbG9hdHMgZnJvbSB0aGUgcGFyZW50IGZvcm1hdHRpbmcgY29udGV4dC4KICAgICAgICAgICAg
IC8vIEZpbmQgdGhlIGZvcm1hdHRpbmcgc3RhdGUgaW4gd2hpY2ggdGhpcyBmb3JtYXR0aW5nIHJv
b3QgbGl2ZXMsIG5vdCB0aGUgb25lIGl0IGNyZWF0ZXMgYW5kIHVzZSBpdHMgZmxvYXRpbmcgc3Rh
dGUuCiAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGb3JtYXR0aW5nU3RhdGUgPSBjcmVhdGVGb3Jt
YXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdSb290LmZvcm1h
dHRpbmdDb250ZXh0Um9vdCgpKTsgCiAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGbG9hdGluZ1N0
YXRlID0gcGFyZW50Rm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKTsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50Rmxv
YXRpbmdTdGF0ZSwgKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRlLCAqdGhpcyk7CiAgICAgICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBGb3JtYXR0aW5n
U3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9v
dElmTmVlZGVkKGNvbgogICAgICAgICByZXR1cm4gKm1fZm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUo
JmZvcm1hdHRpbmdSb290LCBbJl0gewogCiAgICAgICAgICAgICAvLyBCbG9jayBmb3JtYXR0aW5n
IGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0aW5nIHN0YXRlLgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZsb2F0
aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0
ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKICAgICAgICAgfSkuaXRl
cmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIEZvcm1hdHRpbmdTdGF0
ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZO
ZWVkZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9y
bWF0dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIFRhYmxlIGZvcm1hdHRpbmcgY29u
dGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUgLWFuZCBpdCBzdGF5
cyBlbXB0eS4KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9ybWF0
dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwg
KnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nU3Rh
dGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7
CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE3NCwxOCArMTc0LDE4
IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gTGF5b3V0U3RhdGU6OmNyZWF0
ZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJvCiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0
Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIGlmIChmb3JtYXR0aW5n
Q29udGV4dFJvb3QuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAg
ICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChm
b3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaW5saW5lRm9y
bWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgaW5saW5lRm9ybWF0dGluZ1N0YXRlKTsK
ICAgICB9CiAKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tG
b3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJv
b3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0T25seSgpKTsKICAgICAgICAgYXV0
byYgYmxvY2tGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4o
Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChmb3JtYXR0aW5n
Q29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgYmxvY2tGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAg
IGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250
ZXh0KCkpIHsKICAgICAgICAgYXV0byYgdGFibGVGb3JtYXR0aW5nU3RhdGUgPSBkb3duY2FzdDxU
YWJsZUZvcm1hdHRpbmdTdGF0ZT4oY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jv
b3RJZk5lZWRlZChmb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VGFibGVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290
LCB0YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5n
U3RhdGUpOwogICAgIH0KIAogICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAppbmRleCA3YWUzYjQwOWQ3NjExNmYyZTlkMTNjYzMx
ZWI2ZTU2MDYzYjEwNzZmLi43OTkxNjI3NTc0MDE4M2YzNTNmNWFmZDViMTUyMmU1NjUzZmM4OTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgK
QEAgLTM2LDcgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXkg
ewogCiBzdHJ1Y3QgUnVuIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgc3RydWN0IFRleHRDb250ZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dENvbnRleHQodW5zaWduZWQgcG9zaXRp
b24sIHVuc2lnbmVkIGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAppbmRleCBhMWNkNmQ2ZjFiN2ViOTBmY2M3OTA1ZTMxZTlmMDRmZTNiZjgyNjBiLi41MDhkNjYx
MjlkMTQ4N2M0ZTg0NDA5MzkzZGEzMzQwOTE5ZWE3Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQoKSBjb25zdAogICAgICAgICAgICAgaWYgKCF0
cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJveCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFydCBvZiBhbiBpbmxpbmUgY29udGFpbmVy
IChlLmcuIDxzcGFuPikuCi0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRl
bShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlw
ZTo6Q29udGFpbmVyU3RhcnQpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxp
bmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBl
OjpDb250YWluZXJTdGFydCkpOwogICAgICAgICAgICAgYXV0byYgY29udGFpbmVyID0gZG93bmNh
c3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwogICAgICAgICAgICAgaWYgKCFjb250YWluZXIuaGFz
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTIs
MTcgKzI5MiwxNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5l
Q29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVl
dWUudGFrZUxhc3QoKTsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiBhbiBpbmxp
bmUgY29udGFpbmVyIChlLmcuIDwvc3Bhbj4pLgogICAgICAgICAgICAgaWYgKHRyZWF0QXNJbmxp
bmVDb250YWluZXIobGF5b3V0Qm94KSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUu
YWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5s
aW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVuZCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5
b3V0Qm94LmlzTGluZUJyZWFrQm94KCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRl
LmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWspKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0
aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwg
SW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhaykpOwogICAgICAgICAgICAgZWxzZSBpZiAo
bGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0
dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlv
dXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0
dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gs
IElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3goKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGxheW91dEJveC5oYXNUZXh0Q29udGVudCgpKQogICAgICAgICAgICAgICAgICAg
ICBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKGZvcm1hdHRpbmdTdGF0
ZS5pbmxpbmVJdGVtcygpLCBsYXlvdXRCb3gpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3Vu
aXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkJveCkpOworICAg
ICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVl
PElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9IGxheW91dEJveC5u
ZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5
b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKaW5kZXggZjc0MWRlNDg5ZTk0MjQ2MWQ3Njky
ZTJlNDA0MTU5MzgzYjBjODE2MC4uMGEyMTMwMjEzZjEyNGVlYjVmN2Y3MTEyZTg4NmQ3MTJjNTMx
ZGEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlv
dXQuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAg
ICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChsb2dpY2FsUmVjdC50b3BMZWZ0KCkpOwogICAg
ICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgobG9naWNhbFJlY3Qud2lkdGgo
KSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQobG9naWNhbFJl
Y3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihz
dGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxv
Z2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00MDcs
NyArNDA3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0Ojpj
cmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgICAgICB0b3BM
ZWZ0ICs9IEdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZzZXQobGF5b3V0U3Rh
dGUoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdCh0b3BM
ZWZ0KTsKICAgICAgICAgICAgIGxpbmVCb3hSZWN0LmV4cGFuZEhvcml6b250YWxseShsb2dpY2Fs
UmVjdC53aWR0aCgpKTsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4o
c3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CisgICAgICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihs
b2dpY2FsUmVjdCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQy
LDcgKzQ0Miw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6
Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAgICAgICBhdXRvIHBy
ZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCA9IHByZXZpb3VzTGluZVJ1biAmJiBwcmV2aW91c0xpbmVS
dW4tPnRleHRDb250ZXh0KCkgPyBwcmV2aW91c0xpbmVSdW4tPnRleHRDb250ZXh0KCktPmNhbkJl
RXh0ZW5kZWQgOiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gcmVxdWlyZXNOZXdSdW4gPSAhaW5k
ZXggfHwgIXByZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCB8fCAmbGF5b3V0Qm94ICE9ICZwcmV2aW91
c0xpbmVSdW4tPmxheW91dEJveCgpOwogICAgICAgICAgICAgaWYgKHJlcXVpcmVzTmV3UnVuKQot
ICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3Vu
aXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0
IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKKyAgICAgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6
UnVuPihsb2dpY2FsUmVjdCwgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0
LT5zdGFydCwgdGV4dENvbnRleHQtPmxlbmd0aCB9KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBhdXRvJiBsYXN0RGlzcGxheVJ1biA9IGZvcm1hdHRpbmdTdGF0ZS5pbmxp
bmVSdW5zKCkubGFzdCgpOwogICAgICAgICAgICAgICAgIGxhc3REaXNwbGF5UnVuLT5leHBhbmRI
b3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVJdGVtLmgKaW5kZXggYjAwMTNiNmVkNTYz
YmNiZjgyODEzOTEzNDFmMmRkNTYxNWVjNTNlZi4uNzkwNjE5NjgxZTY3NTJkMjg3MjQ5Mzg2MjJl
M2E3NGJlMDMzZmYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUl0ZW0uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgSW5saW5lSXRlbSA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxJbmxpbmVJdGVtPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgVGV4dCwgSGFyZExpbmVCcmVhaywgQm94LCBG
bG9hdCwgQ29udGFpbmVyU3RhcnQsIENvbnRhaW5lckVuZCB9OwogICAgIElubGluZUl0ZW0oY29u
c3QgQm94JiBsYXlvdXRCb3gsIFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAppbmRleCA0ZjIwYTZmZjFkNzBjZTM0
OWJkZTBlYmVkZmU4ZjgwYTM1ZTg1YTI4Li5lZDY1MjA1YjdkYjk5YjBmNmFiMTBmM2VlZWFhMDdj
NDQ2YjdmOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lLmNwcApAQCAtNTQsNyArNTQsNyBAQCBMaW5lOjpDb250ZW50OjpS
dW46OlJ1bihjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBUZXh0Q29udGV4dCYg
dGV4dENvbgogCiBMaW5lOjpMaW5lKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgSW5pdGlhbENvbnN0cmFpbnRzJiBpbml0aWFsQ29uc3RyYWludHMsIFNraXBWZXJ0aWNhbEFs
aWdtZW50IHNraXBWZXJ0aWNhbEFsaWdtZW50KQogICAgIDogbV9sYXlvdXRTdGF0ZShsYXlvdXRT
dGF0ZSkKLSAgICAsIG1fY29udGVudChzdGQ6Om1ha2VfdW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkp
CisgICAgLCBtX2NvbnRlbnQobWFrZVVuaXF1ZTxMaW5lOjpDb250ZW50PigpKQogICAgICwgbV9s
b2dpY2FsVG9wTGVmdChpbml0aWFsQ29uc3RyYWludHMubG9naWNhbFRvcExlZnQpCiAgICAgLCBt
X2Jhc2VsaW5lKHsgaW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5l
T2Zmc2V0LCBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuaGVpZ2h0IC0gaW5p
dGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmJhc2VsaW5lT2Zmc2V0IH0pCiAgICAg
LCBtX2luaXRpYWxTdHJ1dChpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuc3Ry
dXQpCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmQoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiAKIHZvaWQgTGluZTo6YXBw
ZW5kTm9uQnJlYWthYmxlU3BhY2UoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3Qg
RGlzcGxheTo6UmVjdCYgbG9naWNhbFJlY3QpCiB7Ci0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVj
dCkpOworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1
bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKICAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGgg
Kz0gbG9naWNhbFJlY3Qud2lkdGgoKTsKIH0KIApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgTGlu
ZTo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZUl0ZW0sIExh
eW91dFVuaXQgbG9naWNhCiAgICAgfQogCiAgICAgYXV0byB0ZXh0Q29udGV4dCA9IENvbnRlbnQ6
OlJ1bjo6VGV4dENvbnRleHQgeyBpbmxpbmVJdGVtLnN0YXJ0KCksIGlubGluZUl0ZW0uaXNDb2xs
YXBzZWQoKSA/IDEgOiBpbmxpbmVJdGVtLmxlbmd0aCgpLCBpc0NvbXBsZXRlbHlDb2xsYXBzZWQs
IGlubGluZUl0ZW0uaXNXaGl0ZXNwYWNlKCksIGNhbkJlRXh0ZW5kZWQgfTsKLSAgICBhdXRvIGxp
bmVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIHRleHRD
b250ZXh0LCBsb2dpY2FsUmVjdCk7CisgICAgYXV0byBsaW5lSXRlbSA9IG1ha2VVbmlxdWU8Q29u
dGVudDo6UnVuPihpbmxpbmVJdGVtLCB0ZXh0Q29udGV4dCwgbG9naWNhbFJlY3QpOwogICAgIGlm
IChpc1RyaW1tYWJsZSAmJiAhaXNDb21wbGV0ZWx5Q29sbGFwc2VkKQogICAgICAgICBtX3RyaW1t
YWJsZUNvbnRlbnQuYWRkKGxpbmVJdGVtLmdldCgpKTsKIApAQCAtMzAzLDcgKzMwMyw3IEBAIHZv
aWQgTGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgTGF5b3V0VW5pdCBsCiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChpbmxp
bmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKSk7CiAgICAgfQogCi0gICAgbV9jb250ZW50
LT5ydW5zKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVt
LCBsb2dpY2FsUmVjdCkpOworICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVl
PENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKICAgICBtX2NvbnRlbnRM
b2dpY2FsV2lkdGggKz0gKGxvZ2ljYWxXaWR0aCArIGhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBo
b3Jpem9udGFsTWFyZ2luLmVuZCk7CiAgICAgbV90cmltbWFibGVDb250ZW50LmNsZWFyKCk7CiB9
CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmRIYXJkTGluZUJyZWFrKGNvbnN0
IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhl
aWdodChpbmxpbmVJdGVtLCB7IH0pOwogICAgICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQobG9n
aWNhbEhlaWdodCgpKTsKICAgICB9Ci0gICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOworICAg
IG1fY29udGVudC0+cnVucygpLmFwcGVuZChtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5l
SXRlbSwgbG9naWNhbFJlY3QpKTsKIH0KIAogdm9pZCBMaW5lOjphZGp1c3RCYXNlbGluZUFuZExp
bmVIZWlnaHQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBydW5IZWln
aHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lLmgKaW5kZXggZmFmMDU0NzUzZDM3MjJhYmMwMWQ4YTczZjQ3OTkzNDliY2IxYWExMS4u
NzM3YTA3YjAzMmFmNmZmMTE5OTA5NmY3YTM3NTc1N2U2ZGE5ZjFiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApAQCAtNTIs
OCArNTIsMTAgQEAgY2xhc3MgTGluZSB7CiAgICAgTGluZShjb25zdCBMYXlvdXRTdGF0ZSYsIGNv
bnN0IEluaXRpYWxDb25zdHJhaW50cyYsIFNraXBWZXJ0aWNhbEFsaWdtZW50KTsKIAogICAgIGNs
YXNzIENvbnRlbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0cnVjdCBSdW4geworICAgICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICAgICAgc3RydWN0IFRleHRDb250ZXh0IHsKICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKaW5kZXggZjEzMDg5YTcwOGYzZmUzZmY5Yjc3
ZjcyMDk2Y2RhNDJlZjM2ZTIyMi4uNWU2YzI1NmRiMGIzMDlhYWYxZTI1ODIxZjBlMWUxOGU1NjQ1
MmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lVGV4dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZVRleHRJdGVtLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIElubGluZVRl
eHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRl
bnQsIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0ID0gaW5saW5lQm94LnRleHRDb250ZW50KCk7CiAg
ICAgaWYgKCF0ZXh0Lmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxz
ZSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlx
dWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgMCwgMCwgZmFsc2UsIGZhbHNlKSk7CiAKICAg
ICBhdXRvJiBzdHlsZSA9IGlubGluZUJveC5zdHlsZSgpOwogICAgIGF1dG8gcHJlc2VydmVOZXds
aW5lID0gc3R5bGUucHJlc2VydmVOZXdsaW5lKCk7CkBAIC05OSwyMCArOTksMjAgQEAgdm9pZCBJ
bmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxp
bmVDb250ZW50LCBjb25zdAogICAgIHdoaWxlIChjdXJyZW50UG9zaXRpb24gPCB0ZXh0Lmxlbmd0
aCgpKSB7CiAgICAgICAgIC8vIFNvZnQgbGluZWJyZWFrPwogICAgICAgICBpZiAoaXNTb2Z0TGlu
ZUJyZWFrKHRleHRbY3VycmVudFBvc2l0aW9uXSwgcHJlc2VydmVOZXdsaW5lKSkgewotICAgICAg
ICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRl
bT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIDEsIHRydWUsIGZhbHNlKSk7CisgICAgICAg
ICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxp
bmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFsc2UpKTsKICAgICAgICAgICAgICsr
Y3VycmVudFBvc2l0aW9uOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGlzV2hpdGVzcGFjZUNoYXJhY3Rlcih0ZXh0W2N1cnJlbnRQb3NpdGlvbl0sIHByZXNl
cnZlTmV3bGluZSkpIHsKICAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gbW92ZVRvTmV4dE5vbldo
aXRlc3BhY2VQb3NpdGlvbih0ZXh0LCBjdXJyZW50UG9zaXRpb24sIHByZXNlcnZlTmV3bGluZSk7
CiAgICAgICAgICAgICBhdXRvIGlzQ29sbGFwc2VkID0gY29sbGFwc2VXaGl0ZVNwYWNlICYmIGxl
bmd0aCA+IDE7Ci0gICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0
cnVlLCBpc0NvbGxhcHNlZCkpOworICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFr
ZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0
aCwgdHJ1ZSwgaXNDb2xsYXBzZWQpKTsKICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBs
ZW5ndGg7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
bGVuZ3RoID0gbW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbiwgbGlu
ZUJyZWFrSXRlcmF0b3IsIHN0eWxlKTsKLSAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24s
IGxlbmd0aCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1h
a2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5n
dGgsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gbGVuZ3RoOwog
ICAgIH0KIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEl0
ZW0+IElubGluZVRleHRJdGVtOjpzcGxpdCh1bnNpZ25lZCBzcGxpdFBvc2l0aW9uLCB1bgogewog
ICAgIFJFTEVBU0VfQVNTRVJUKHNwbGl0UG9zaXRpb24gPj0gdGhpcy0+c3RhcnQoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiArIGxlbmd0aCA8PSBlbmQoKSk7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGxheW91dEJveCgpLCBzcGxpdFBv
c2l0aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFjZSgpLCBpc0NvbGxhcHNlZCgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24s
IGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCA4MDg0ZTJi
YjY5ZThjOTJhYWE5YjdiZTZkOGExNGI3Nzk1MjkxMjAzLi4zYmFmOWVhYTFmYmE5MmM3MGY0YzZj
NzMyOTViMTM4YjMxYmM1YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgQm94OjpCb3goT3B0aW9uYWw8RWxl
bWVudEF0dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUsIEJhc2VUeXBl
RmwKICAgICAsIG1faGFzUmFyZURhdGEoZmFsc2UpCiB7CiAgICAgaWYgKGlzUmVwbGFjZWQoKSkK
LSAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5yZXBsYWNlZCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVw
bGFjZWQ+KCp0aGlzKTsKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5yZXBsYWNlZCA9IG1ha2VV
bmlxdWU8UmVwbGFjZWQ+KCp0aGlzKTsKIH0KIAogQm94OjpCb3goT3B0aW9uYWw8RWxlbWVudEF0
dHJpYnV0ZXM+IGF0dHJpYnV0ZXMsIFJlbmRlclN0eWxlJiYgc3R5bGUpCkBAIC00NDcsNyArNDQ3
LDcgQEAgY29uc3QgQm94OjpCb3hSYXJlRGF0YSYgQm94OjpyYXJlRGF0YSgpIGNvbnN0CiBCb3g6
OkJveFJhcmVEYXRhJiBCb3g6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNSYXJlRGF0
YSh0cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJuIG1ha2VV
bmlxdWU8Qm94UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAogdm9pZCBCb3g6
OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBhYjI4NGVhMDk5YjhmYTNmZmE3Mjc0
ZTA2ZTRjZWNjYWY4NDc0MzA3Li5mMmFmY2FiZDBhMzgxYzZkNWM4ZGEzOWQzNDZlMWFlYTMzZDQ3
YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0xMzAsMjUgKzEzMCwyNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBh
cmVudFJlbgogICAgIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAg
ICAvLyBGSVhNRTogQ2xlYXJseSB0aGVyZSBtdXN0IGJlIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0
aGlzLgogICAgICAgICBpZiAocGFyZW50UmVuZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6OklubGluZSkKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFs
VGV4dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOworICAg
ICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVy
VGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShw
YXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxk
TGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNo
aWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3Vz
U3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5s
aW5lKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3du
Y2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5
bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVuZGVyZXIuc3R5bGUo
KSwgRGlzcGxheVR5cGU6OklubGluZSkpOwogICAgICAgICByZXR1cm4gY2hpbGRMYXlvdXRCb3g7
CiAgICAgfQogCiAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pihj
aGlsZFJlbmRlcmVyKTsKICAgICBhdXRvIGRpc3BsYXlUeXBlID0gcmVuZGVyZXIuc3R5bGUoKS5k
aXNwbGF5KCk7CiAgICAgaWYgKGlzPFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpKQotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVy
KSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxl
OjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAKICAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJl
bmRlcmVyKSkgewogICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIHByaW5jaXBhbCB0YWJsZSB3cmFw
cGVyIGJveCAoYW5kIG5vdCB0aGUgdGFibGUgYm94IGl0c2VsZikuCi0gICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0
ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZVdyYXBwZXJCb3ggfSwgUmVuZGVyU3R5bGU6OmNs
b25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5p
cXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6
OlRhYmxlV3JhcHBlckJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkp
OwogICAgIH0gZWxzZSBpZiAoaXM8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKSkgewogICAgICAg
ICBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OkJsb2NrKQotICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAg
ICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94Pihl
bGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5z
dHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihl
bGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5z
dHlsZSgpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCB5ZXQgc3VwcG9ydCBhbGwgcmVw
bGFjZWQgZWxlbWVudHMgYW5kIHRoaXMgaXMgdGVtcG9yYXJ5IGFueXdheS4KICAgICAgICAgaWYg
KGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpKQogICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gt
PnJlcGxhY2VkKCktPnNldEludHJpbnNpY1NpemUoZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHJl
bmRlcmVyKS5pbnRyaW5zaWNTaXplKCkpOwpAQCAtMTYzLDE4ICsxNjMsMTggQEAgc3RkOjp1bmlx
dWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveChjb25zdCBSZW5kZXJFbGVt
ZW50JiBwYXJlbnRSZW4KICAgICAgICAgICAgICAgICBhdXRvIHN0eWxlID0gUmVuZGVyU3R5bGU6
OmNsb25lUHRyKHJlbmRlcmVyLnN0eWxlKCkpOwogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRU
b3AoeyBvZmZzZXQtPmhlaWdodCgpLCBGaXhlZCB9KTsKICAgICAgICAgICAgICAgICBzdHlsZS0+
c2V0TGVmdCh7IG9mZnNldC0+d2lkdGgoKSwgRml4ZWQgfSk7Ci0gICAgICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0
ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKCpzdHlsZSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVy
KSwgV1RGTW92ZSgqc3R5bGUpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
KyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihl
bGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5z
dHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6
OklubGluZSkKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25l
KHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6
OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUg
PT0gRGlzcGxheVR5cGU6OklubGluZUJsb2NrKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIp
LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBl
bHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDYXB0aW9uIHx8IGRpc3Bs
YXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNlbGwpIHsKLSAgICAgICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJl
bmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3dHcm91
cCB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVIZWFkZXJHcm91cCB8fCBkaXNw
bGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVGb290ZXJHcm91cAogICAgICAgICAgICAgfHwg
ZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlUm93IHx8IGRpc3BsYXlUeXBlID09IERp
c3BsYXlUeXBlOjpUYWJsZUNvbHVtbkdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBl
OjpUYWJsZUNvbHVtbikgewotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHls
ZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3gg
PSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5k
ZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgIHJldHVy
biB7IH07CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVT
dHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRhYmxlUmVuZGVyZXIsIENvbnRhaW4KICAgICAg
ICAgdGFibGVDaGlsZCA9IHRhYmxlQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogCi0gICAg
YXV0byB0YWJsZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRB
dHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNs
b25lKHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOworICAgIGF1dG8gdGFibGVCb3ggPSBtYWtlVW5p
cXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6
OlRhYmxlQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZSh0YWJsZVJlbmRlcmVyLnN0eWxlKCkpKTsK
ICAgICBhcHBlbmRDaGlsZCh0YWJsZVdyYXBwZXJCb3gsICp0YWJsZUJveCk7CiAgICAgd2hpbGUg
KHRhYmxlQ2hpbGQpIHsKICAgICAgICAgVHJlZUJ1aWxkZXI6OmNyZWF0ZVN1YlRyZWUoZG93bmNh
c3Q8UmVuZGVyRWxlbWVudD4oKnRhYmxlQ2hpbGQpLCAqdGFibGVCb3gpOwpAQCAtMzYxLDcgKzM2
MSw3IEBAIHZvaWQgcHJpbnRMYXlvdXRUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAgICAgICAgIC8v
IEZJWE1FOiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gb3V0cHV0IGdlb21ldHJ5IHdpdGhvdXQgbGF5
b3V0IGNvbnRleHQuCiAgICAgICAgIGF1dG8mIHJlbmRlclZpZXcgPSAqZG9jdW1lbnQtPnJlbmRl
clZpZXcoKTsKICAgICAgICAgYXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrID0gVHJlZUJ1aWxk
ZXI6OmNyZWF0ZUxheW91dFRyZWUocmVuZGVyVmlldyk7Ci0gICAgICAgIGF1dG8gbGF5b3V0U3Rh
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCppbml0aWFsQ29udGFp
bmluZ0Jsb2NrKTsKKyAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IG1ha2VVbmlxdWU8TGF5b3V0
OjpMYXlvdXRTdGF0ZT4oKmluaXRpYWxDb250YWluaW5nQmxvY2spOwogICAgICAgICBsYXlvdXRT
dGF0ZS0+c2V0UXVpcmtzTW9kZShyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5MaW1pdGVkUXVpcmtz
TW9kZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6OkxpbWl0ZWQgOiAocmVuZGVyVmlldy5k
b2N1bWVudCgpLmluUXVpcmtzTW9kZSgpID8gTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6OlllcyA6
IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpObykpOwogICAgICAgICBsYXlvdXRTdGF0ZS0+dXBk
YXRlTGF5b3V0KCk7CiAgICAgICAgIHNob3dMYXlvdXRUcmVlKCppbml0aWFsQ29udGFpbmluZ0Js
b2NrLCBsYXlvdXRTdGF0ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
dGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHAKaW5kZXggYzdhZTNlNTgxMGQ2MDJmNjVlYjcw
MDJmZmU5YzUyYmZjNWMwMDBhNS4uYjQ1ZjA1ZTU1OTM4ZTU0NjRmYjIyMTliODY3MmZkZTFlYjVh
NjU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9U
YWJsZUdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcv
VGFibGVHcmlkLmNwcApAQCAtNzgsMTMgKzc4LDEzIEBAIHZvaWQgVGFibGVHcmlkOjphcHBlbmRD
ZWxsKGNvbnN0IEJveCYgdGFibGVDZWxsQm94KQogICAgICAgICAgICAgaW5pdGlhbFNsb3RQb3Np
dGlvbi5tb3ZlKDEsIDApOwogICAgICAgICB9CiAgICAgfQotICAgIGF1dG8gY2VsbEluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPENlbGxJbmZvPih0YWJsZUNlbGxCb3gsIGluaXRpYWxTbG90UG9zaXRp
b24sIENlbGxTaXplIHsgcm93U3BhbiwgY29sdW1uU3BhbiB9KTsKKyAgICBhdXRvIGNlbGxJbmZv
ID0gbWFrZVVuaXF1ZTxDZWxsSW5mbz4odGFibGVDZWxsQm94LCBpbml0aWFsU2xvdFBvc2l0aW9u
LCBDZWxsU2l6ZSB7IHJvd1NwYW4sIGNvbHVtblNwYW4gfSk7CiAgICAgLy8gUm93IGFuZCBjb2x1
bW4gc3Bhbm5lcnMgY3JlYXRlIGFkZGl0aW9uYWwgc2xvdHMuCiAgICAgZm9yIChpbnQgcm93ID0g
MTsgcm93IDw9IHJvd1NwYW47ICsrcm93KSB7CiAgICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDE7
IGNvbHVtbiA8PSBjb2x1bW5TcGFuOyArK2NvbHVtbikgewogICAgICAgICAgICAgYXV0byBwb3Np
dGlvbiA9IFNsb3RQb3NpdGlvbiB7IGluaXRpYWxTbG90UG9zaXRpb24ueCgpICsgcm93IC0gMSwg
aW5pdGlhbFNsb3RQb3NpdGlvbi55KCkgKyBjb2x1bW4gLSAxIH07CiAgICAgICAgICAgICBBU1NF
UlQoIW1fc2xvdE1hcC5jb250YWlucyhwb3NpdGlvbikpOwotICAgICAgICAgICAgbV9zbG90TWFw
LmFkZChwb3NpdGlvbiwgc3RkOjptYWtlX3VuaXF1ZTxTbG90SW5mbz4oKmNlbGxJbmZvKSk7Cisg
ICAgICAgICAgICBtX3Nsb3RNYXAuYWRkKHBvc2l0aW9uLCBtYWtlVW5pcXVlPFNsb3RJbmZvPigq
Y2VsbEluZm8pKTsKICAgICAgICAgfQogICAgIH0KICAgICBtX2NlbGxMaXN0LmFkZChXVEZNb3Zl
KGNlbGxJbmZvKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3Jt
YXR0aW5nL1RhYmxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGlu
Zy9UYWJsZUdyaWQuaAppbmRleCBiYmIyNzM2Nzc0MTdmOTNiODEzYjAzMzcwM2JjOWRmN2MxMjUx
ZDg3Li5hNDY4NTE5OWFlNGE2MTZiZWE2Mzg0MjEzNDk3MmMwZjIzM2VjNGMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmgKQEAgLTQ5
LDYgKzQ5LDcgQEAgY2xhc3MgVGFibGVHcmlkIHsKICAgICB1c2luZyBTbG90UG9zaXRpb24gPSBJ
bnRQb2ludDsKICAgICB1c2luZyBDZWxsU2l6ZSA9IEludFNpemU7CiAgICAgc3RydWN0IENlbGxJ
bmZvIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENlbGxJbmZvPiB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgQ2VsbEluZm8oY29uc3QgQm94JiB0YWJs
ZUNlbGxCb3gsIFNsb3RQb3NpdGlvbiwgQ2VsbFNpemUpOwogCiAgICAgICAgIGNvbnN0IEJveCYg
dGFibGVDZWxsQm94OwpAQCAtNjAsNiArNjEsNyBAQCBjbGFzcyBUYWJsZUdyaWQgewogCiAgICAg
dXNpbmcgU2xvdExvZ2ljYWxTaXplID0gTGF5b3V0U2l6ZTsKICAgICBzdHJ1Y3QgU2xvdEluZm8g
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFNsb3RJ
bmZvKCkgPSBkZWZhdWx0OwogICAgICAgICBTbG90SW5mbyhDZWxsSW5mbyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTFkNzdlNGFmMWRiZGRmMDQ1YTky
YzFjOGFkM2I5OWVhY2ViOTdiNS4uYjQ5OGEyMjRiMTkwYzZjZTg0NGViOWRkN2ViOWI3YTEwNWQ3
NmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtNzgsNyAr
NzgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gQ29udGVudEZpbHRlcjo6Y3Jl
YXRlKERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYQogICAgIGlmIChmaWx0ZXJzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q29udGVudEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9jdW1l
bnRMb2FkZXIpOwogfQogCiBDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKENvbnRhaW5lciYm
IGNvbnRlbnRGaWx0ZXJzLCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4
IGQwZDU0Yjk3ZWFlNzIwNDI2Zjk2MWM4ZGFlODk1ZTIwMzY5Y2VkY2MuLmM0Y2U1ZjU1MjE3MGIz
Y2ZjOGI4NDFiNTlhNTEwZmQ3NWFhODNmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9v
bCB2YWxpZGF0ZVByZWZsaWdodFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhy
ZXNwb25zZSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNlY3VyaXR5T3JpZ2luLCBlcnJvckRl
c2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPihzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPENyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPihzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7
CiAgICAgaWYgKCFyZXN1bHQtPnBhcnNlKHJlc3BvbnNlKQogICAgICAgICB8fCAhcmVzdWx0LT5h
bGxvd3NDcm9zc09yaWdpbk1ldGhvZChyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIGVycm9yRGVzY3JpcHRpb24pCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93
c0Nyb3NzT3JpZ2luSGVhZGVycyhyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSwgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIGVycm9yRGVzY3JpcHRpb24pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBkZTA5ZTcwMzk5Y2M3NDdlODg3MzY5NzgzNzI0ZTZk
YWE5ZmM3ODhiLi4wNDU1Y2FmYzU5ZmY3YjZlYTFmOWEyY2QzOTMxYTY5ZTlmNjk0NDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE4OSw3ICsxODksNyBA
QCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRAogICAgICwgbV9vcmlnaW5hbFN1YnN0aXR1dGVEYXRh
V2FzVmFsaWQoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICwgbV9zdWJzdGl0dXRlUmVz
b3VyY2VEZWxpdmVyeVRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNv
dXJjZURlbGl2ZXJ5VGltZXJGaXJlZCkKICAgICAsIG1fZGF0YUxvYWRUaW1lcigqdGhpcywgJkRv
Y3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpCi0gICAgLCBtX2FwcGxp
Y2F0aW9uQ2FjaGVIb3N0KHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0
aGlzKSkKKyAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3QobWFrZVVuaXF1ZTxBcHBsaWNhdGlv
bkNhY2hlSG9zdD4oKnRoaXMpKQogewogfQogCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB1aW50NjRf
dCBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKQogICAgIGlmIChtYW5p
ZmVzdFVSTC5pc0VtcHR5KCkgfHwgIW1hbmlmZXN0VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRlbnRpYWxz
KTsKKyAgICBhdXRvIG1hbmlmZXN0TG9hZGVyID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVyPigqdGhpcywgbWFuaWZlc3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKICAgICBhdXRv
KiByYXdNYW5pZmVzdExvYWRlciA9IG1hbmlmZXN0TG9hZGVyLmdldCgpOwogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG5leHRDYWxsYmFja0lEKys7CiAgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVycy5zZXQoV1RGTW92ZShtYW5pZmVzdExvYWRlciksIGNhbGxiYWNrSUQpOwpAQCAtMTQyNyw3
ICsxNDI3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0QXJjaGl2ZShSZWY8QXJjaGl2ZT4m
JiBhcmNoaXZlKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhB
cmNoaXZlJiBhcmNoaXZlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
KQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CisgICAgICAgIG1fYXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKICAg
ICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFkZEFsbFJlc291cmNlcyhhcmNoaXZlKTsK
IH0KIApAQCAtMTQzNiw3ICsxNDM2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJj
aGl2ZVJlc291cmNlcyhBcmNoaXZlJiBhcmNoaXZlKQogdm9pZCBEb2N1bWVudExvYWRlcjo6YWRk
QXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgcmVzb3VyY2UpCiB7CiAgICAg
aWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIG1fYXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bj4oKTsKKyAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gbWFrZVVuaXF1ZTxB
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbi0+YWRkUmVzb3VyY2UoV1RGTW92ZShyZXNvdXJjZSkpOwogfQogCkBAIC0xOTYzLDcgKzE5
NjMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpsb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIC8vIElmIHRoZSBsb2FkIHdhcyBhYm9ydGVkIGJ5IGNs
ZWFyaW5nIG1fcmVxdWVzdCwgaXQncyBwb3NzaWJsZSB0aGUgQXBwbGljYXRpb25DYWNoZUhvc3QK
ICAgICAgICAgLy8gaXMgbm93IGluIGEgc3RhdGUgd2hlcmUgc3RhcnRpbmcgYW4gZW1wdHkgbG9h
ZCB3aWxsIGJlIGluY29uc2lzdGVudC4gUmVwbGFjZSBpdCB3aXRoCiAgICAgICAgIC8vIGEgbmV3
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0LgotICAgICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0g
c3RkOjptYWtlX3VuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpOworICAgICAgICBt
X2FwcGxpY2F0aW9uQ2FjaGVIb3N0ID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4o
KnRoaXMpOwogICAgICAgICBtYXliZUxvYWRFbXB0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMjEyMiw3ICsyMTIyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gaWNvbkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
SWNvbkxvYWRlcj4oKnRoaXMsIGljb24udXJsKTsKKyAgICBhdXRvIGljb25Mb2FkZXIgPSBtYWtl
VW5pcXVlPEljb25Mb2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CiAgICAgYXV0byogcmF3SWNvbkxv
YWRlciA9IGljb25Mb2FkZXIuZ2V0KCk7CiAgICAgbV9pY29uTG9hZGVycy5zZXQoV1RGTW92ZShp
Y29uTG9hZGVyKSwgbmV3Q2FsbGJhY2tJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKaW5kZXggMDQ1M2Q3ZTZkOWUzNjU2MDJhYzlhYmQ5OTliNGUyZmFiMTMyYWRiNC4u
OTM4MzQyZDA5MzUwMmVmYzY4OTA1YzZjMzRhOTgxN2JhZDU0MjFmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTU3OCw3ICs1NzgsNyBAQCBQYWdlQ29uZmlndXJh
dGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKQogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxFbXB0eVByb2dyZXNzVHJhY2tlckNsaWVudD4gZHVtbXlQcm9ncmVzc1RyYWNr
ZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0g
JmR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmdldCgpOwogCi0gICAgcGFnZUNvbmZpZ3VyYXRp
b24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEVtcHR5RGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQ+KCk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQgPSBtYWtlVW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7
CiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9IEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoeyB9LCB7IH0pOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IEVtcHR5RGF0YWJhc2VQcm92aWRl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBlMGY0NjE0OGYyZGZh
YTg3ZjZiMjQyNjM3ZDUwODkxODUyMGE2MGEyLi44M2JlYjI3MTdkMzM3YzM0MWMwMTVlY2Y0NmQ0
ZjM3M2UwOGIxNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTI3
MCwxMCArMjcwLDEwIEBAIGNsYXNzIEZyYW1lTG9hZGVyOjpGcmFtZVByb2dyZXNzVHJhY2tlciB7
CiBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUmIGZyYW1lLCBGcmFtZUxvYWRlckNsaWVu
dCYgY2xpZW50KQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkK
LSAgICAsIG1fcG9saWN5Q2hlY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFBvbGljeUNoZWNrZXI+KGZy
YW1lKSkKLSAgICAsIG1faGlzdG9yeShzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcnlDb250cm9sbGVy
PihmcmFtZSkpCisgICAgLCBtX3BvbGljeUNoZWNrZXIobWFrZVVuaXF1ZTxQb2xpY3lDaGVja2Vy
PihmcmFtZSkpCisgICAgLCBtX2hpc3RvcnkobWFrZVVuaXF1ZTxIaXN0b3J5Q29udHJvbGxlcj4o
ZnJhbWUpKQogICAgICwgbV9ub3RpZmllcihmcmFtZSkKLSAgICAsIG1fc3ViZnJhbWVMb2FkZXIo
c3RkOjptYWtlX3VuaXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUpKQorICAgICwgbV9zdWJmcmFt
ZUxvYWRlcihtYWtlVW5pcXVlPFN1YmZyYW1lTG9hZGVyPihmcmFtZSkpCiAgICAgLCBtX21peGVk
Q29udGVudENoZWNrZXIoZnJhbWUpCiAgICAgLCBtX3N0YXRlKEZyYW1lU3RhdGVQcm92aXNpb25h
bCkKICAgICAsIG1fbG9hZFR5cGUoRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQpCkBAIC0zMjEsNyAr
MzIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2
YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9j
dW1lbnQpOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LmNyZWF0ZU5ldHdv
cmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAgICBtX3Byb2dyZXNzVHJhY2tlciA9
IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBVUkwmKQpAQCAtMzQ2
LDcgKzM0Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50
KGNvbnN0IFVSTCYpCiAgICAgbV9uZWVkc0NsZWFyID0gdHJ1ZTsKIAogICAgIG1fbmV0d29ya2lu
Z0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwotICAgIG1fcHJv
Z3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4obV9m
cmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5pcXVlPEZyYW1lUHJvZ3Jlc3NU
cmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGlu
Zyhib29sIGRlZmVycykKQEAgLTI2NzgsNyArMjY3OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRl
dGFjaENoaWxkcmVuKCkKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwjbmF2aWdhdGUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmF2aWdhdGlvbkRpc2FibGVyPiBuYXZpZ2F0aW9uRGlzYWJsZXI7CiAgICAgaWYgKG1fZnJhbWUu
aXNNYWluRnJhbWUoKSkKLSAgICAgICAgbmF2aWdhdGlvbkRpc2FibGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsKKyAgICAgICAgbmF2aWdhdGlvbkRp
c2FibGVyID0gbWFrZVVuaXF1ZTxOYXZpZ2F0aW9uRGlzYWJsZXI+KCZtX2ZyYW1lKTsKIAogICAg
IC8vIEFueSBzdWJmcmFtZSBpbnNlcnRlZCBieSB1bmxvYWQgZXZlbnQgaGFuZGxlcnMgZXhlY3V0
ZWQgaW4gdGhlIGxvb3AgYmVsb3cgd2lsbCBub3QgZ2V0IHVubG9hZGVkCiAgICAgLy8gYmVjYXVz
ZSB3ZSBjcmVhdGUgYSBjb3B5IG9mIHRoZSBzdWJmcmFtZXMgbGlzdCBiZWZvcmUgbG9vcGluZy4g
VGhlcmVmb3JlLCBpdCB3b3VsZCBiZSB1bnNhZmUgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmgKaW5kZXggOGUzYTQ2YjUxMGE5OTgwYzJhZmI4MGEzNDQ4YTQ5ODllYWMxOWUxOS4uNWZm
ZjY3ZDk0MmViZTkxZTAzYTUyOTZlNmU5ZGEyNGRiM2I3Y2NiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKQEAgLTk2LDYgKzk2LDcgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Jl
bG9hZChGcmFtZUxvYWRUeXBlKTsKIHVzaW5nIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9u
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBvbGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVy
KT47CiAKIGNsYXNzIEZyYW1lTG9hZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZUxvYWRlcik7CiBwdWJsaWM6CiAgICAgRnJh
bWVMb2FkZXIoRnJhbWUmLCBGcmFtZUxvYWRlckNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtMb2FkZXIuY3BwCmluZGV4IGNkZjY0OTUyNmZlM2QxZjMzMjhkNmUzNmMyMDEwODdjMzFmMTY1
NWIuLjQwOGM1MzY0MjllM2IwODc3OThlYjk3ZTc2ODY0Y2M5NDg2NjY3YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTE0MiwyMiArMTQyLDIyIEBAIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gY3JlYXRlTGlua1ByZWxvYWRS
ZXNvdXJjZUNsaWVuCiB7CiAgICAgc3dpdGNoIChyZXNvdXJjZS50eXBlKCkpIHsKICAgICBjYXNl
IENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNlOgotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZEltYWdlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93
bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRJ
bWFnZT4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQ6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291
cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFNjcmlwdD4ocmVzb3VyY2UpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPExpbmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2Fz
dDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxMaW5rUHJlbG9hZFN0eWxlUmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2Fj
aGVkQ1NTU3R5bGVTaGVldD4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpU
eXBlOjpGb250UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQ
cmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJl
c291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRm9udFJlc291
cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlKSk7CiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlRleHRU
cmFja1Jlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9h
ZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRUZXh0VHJhY2s+
KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkRGVmYXVs
dFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3Vy
Y2UpKTsKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1lZGlhUmVzb3Vy
Y2U6CiAgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLm1lZGlhUHJlbG9hZGluZ0VuYWJsZWQoKSk7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlJhd1Jlc291cmNlOgotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRv
d25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENh
Y2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5
cGU6Ok1haW5SZXNvdXJjZToKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJY29uOgog
I2lmIEVOQUJMRShTVkdfRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkRpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRp
c2FibGVyLmgKaW5kZXggMDJjYzdkMTIwY2E0YmNmZjM1MjVjOGY3NDljYzQxODBmZTZkNDVlMi4u
OGFlNGIzMWI4YjY5Zjk4ZDAxYWRhNzg4OTlhOThiZDExZGQ0MjczZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBOYXZpZ2F0aW9uRGlzYWJsZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdmlnYXRpb25EaXNhYmxlcihGcmFtZSog
ZnJhbWUpCiAgICAgICAgIDogbV9mcmFtZShmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRleCA1NThjNzgwNDk1N2VjODgyODgxOGVmNTYx
OWJmOTgzZDNmOTQwYTU1Li4zYzJjMjUyYWE1MWI5NjkyOTVlY2YxNDgxMjU0YTMyNDBlYzQyYTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCkBA
IC0zOTcsNyArMzk3LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGly
ZWN0KERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIGRvdWJsZQogICAgIC8vIFdlIHdhbnQg
YSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlzID4g
MSBzZWNvbmQuCiAgICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJlY3QtPmRl
bGF5KCkpIHsKICAgICAgICAgYXV0byBsb2NrQmFja0ZvcndhcmRMaXN0ID0gZGVsYXkgPD0gMSA/
IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyA6IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vOwotICAg
ICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0aWF0
aW5nRG9jdW1lbnQsIGRlbGF5LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKKyAgICAgICAg
c2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3VtZW50
LCBkZWxheSwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2Nr
SGlzdG9yeTo6WWVzLCBsb2NrQmFja0ZvcndhcmRMaXN0KSk7CiAgICAgfQogfQogCkBAIC00NDUs
NyArNDQ1LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hh
bmdlKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQsIFMKICAgICAvLyBUaGlzIG1heSBoYXBw
ZW4gd2hlbiBhIGZyYW1lIGNoYW5nZXMgdGhlIGxvY2F0aW9uIG9mIGFub3RoZXIgZnJhbWUuCiAg
ICAgYm9vbCBkdXJpbmdMb2FkID0gIWxvYWRlci5zdGF0ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJz
dFJlYWxEb2N1bWVudExvYWQoKTsKIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2No
ZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGluaXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2lu
LCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5n
TG9hZCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5p
cXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZzZWN1cml0
eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3Qs
IGR1cmluZ0xvYWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQgTmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1pc3Np
b24+JiYgc3VibWlzc2lvbikKQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hl
ZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1p
c3NpbwogICAgICAgICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6
WWVzOwogICAgIH0KICAgICAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxl
ZEZvcm1TdWJtaXNzaW9uPihXVEZNb3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRMaXN0
LCBkdXJpbmdMb2FkKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRGb3JtU3Vi
bWlzc2lvbj4oV1RGTW92ZShzdWJtaXNzaW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5n
TG9hZCkpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChE
b2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgTmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKERvY3VtZW50JiBpbml0aWF0aW5nRG9j
dW1lbnQpCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNj
aGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGluZ0RvY3Vt
ZW50LCAmbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1fZnJhbWUu
bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxT
Y2hlZHVsZWRSZWZyZXNoPihpbml0aWF0aW5nRG9jdW1lbnQsICZtX2ZyYW1lLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIHVybCwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVy
KCkpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZp
Z2F0aW9uKGludCBzdGVwcykKQEAgLTQ5OCwxMyArNDk4LDEzIEBAIHZvaWQgTmF2aWdhdGlvblNj
aGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCiAgICAgfQogCiAg
ICAgLy8gSW4gYWxsIG90aGVyIGNhc2VzLCBzY2hlZHVsZSB0aGUgaGlzdG9yeSB0cmF2ZXJzYWwg
dG8gb2NjdXIgYXN5bmNocm9ub3VzbHkuCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxT
Y2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbj4oc3RlcHMpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5p
cXVlPFNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uPihzdGVwcykpOwogfQogCiB2b2lkIE5hdmln
YXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUGFnZUJsb2NrKERvY3VtZW50JiBvcmlnaW5Eb2N1bWVu
dCkKIHsKICAgICBpZiAoc2hvdWxkU2NoZWR1bGVOYXZpZ2F0aW9uKCkpCi0gICAgICAgIHNjaGVk
dWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkp
OworICAgICAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3JpZ2lu
RG9jdW1lbnQpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjp0aW1lckZpcmVkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oCmluZGV4IGEyZGRh
Y2UyOGYwN2MzOTFmZTI0ZTE5MThkMjU0YTUwMDJmYWI0NzYuLjk3YzIzYjE1MDkyYmYzOTNiMzFk
MjBjOGYzNGQyNTc3MjYzMWNjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGVu
dW0gY2xhc3MgTmV3TG9hZEluUHJvZ3Jlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIAogY2xh
c3MgTmF2aWdhdGlvblNjaGVkdWxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgTmF2aWdhdGlvblNjaGVkdWxlcihGcmFtZSYpOwogICAgIH5O
YXZpZ2F0aW9uU2NoZWR1bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UHJvZ3Jlc3NUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNr
ZXIuY3BwCmluZGV4IGUxN2E5ZGM3MmRlMDM3Yzk2MzRiYzFjYzkzYzJjMWE3N2E4NmJmYTMuLjI4
MTdhNzY2NjQ1N2IyMzk3M2E2OGZjZjdiYzAxODBjMTJiZjVjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBQcm9n
cmVzc1RyYWNrZXI6OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2UKIAogICAgIGF1dG8mIGl0ZW0gPSBtX3Byb2dyZXNzSXRlbXMuYWRkKGlk
ZW50aWZpZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWl0ZW0pIHsKLSAg
ICAgICAgaXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0ZWRMZW5n
dGgpOworICAgICAgICBpdGVtID0gbWFrZVVuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGltYXRlZExl
bmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCBlYTVkYmZiYWFiMjBiZmQ0M2RlYWNmMWU3
NzYxMWMzNDMzYWJhYjgzLi44MjQ2YmIwNzA2Y2QwYzA3MWY4OTk2Mjg5ODZhNWJhNTFjNDhiNjM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBA
IC01MzUsNyArNTM1LDcgQEAgYm9vbCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjaGVja0ZvckhlYWRD
aGFyc2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4sIGJvb2wKICAgICBpZiAobV9jb250
ZW50VHlwZSA9PSBYTUwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9jaGFyc2V0UGFy
c2VyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7CisgICAgbV9j
aGFyc2V0UGFyc2VyID0gbWFrZVVuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7CiAgICAg
cmV0dXJuIGNoZWNrRm9yTWV0YUNoYXJzZXQoZGF0YSwgbGVuKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCBjYTllNmM0MzQzZDc0MDEwNTUzYTll
MTBmYTY1NjNlZTUyMzkxYmJlLi5mYTkyNmVhMDYyYWRmZjIwNTcwYzhhMzY5MTI0NjcyYjllZjU2
NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtOTIs
NyArOTIsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fY3VlUGFy
c2VyKQotICAgICAgICBtX2N1ZVBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2Vy
PihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKKyAgICAgICAgbV9jdWVQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNl
cj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CiAKICAgICB3aGlsZSAobV9wYXJzZU9mZnNldCA8IGJ1ZmZlci0+c2l6ZSgp
KSB7CiAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEobV9wYXJzZU9mZnNl
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAKaW5kZXggYTEyNjNlMmYwNDU3NGI0ZjBlZTczYzA0ZThiNjJmNWM4MDcyYTc1OC4uNzc1MzJm
ODYxMzRlMDQzYWQzN2QzZjU5OTk4YTZmNTdhNDI0MTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTE1LDExICsxMTUsMTEg
QEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJy
aWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9s
aWN5KTsKIAogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5Db3B5ID0gc2VjdXJpdHlPcmlnaW4tPmlz
b2xhdGVkQ29weSgpOwotICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihnbG9iYWxTY29wZS51cmwoKS5pc29s
YXRlZENvcHkoKSk7CisgICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gbWFrZVVu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29w
eSgpKTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5U3RhdGVGcm9tKGNvbnRl
bnRTZWN1cml0eVBvbGljeSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVVw
Z3JhZGVJbnNlY3VyZVJlcXVlc3RTdGF0ZUZyb20oKmNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAK
LSAgICBhdXRvIG9wdGlvbnNDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJUYXNrT3B0aW9u
cz4ob3B0aW9ucywgcmVxdWVzdC5odHRwUmVmZXJyZXIoKS5pc051bGwoKSA/IG91dGdvaW5nUmVm
ZXJyZXIgOiByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luQ29w
eSkpOworICAgIGF1dG8gb3B0aW9uc0NvcHkgPSBtYWtlVW5pcXVlPExvYWRlclRhc2tPcHRpb25z
PihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8gb3V0Z29pbmdSZWZl
cnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5
KSk7CiAKICAgICAvLyBBbGwgbG9hZHMgc3RhcnQgb3V0IGFzIERvY3VtZW50LiBJbnNpZGUgV29y
a2VyVGhyZWFkYWJsZUxvYWRlciB3ZSB1cGdyYWRlIHRoaXMgdG8gYSBXb3JrZXIgbG9hZC4KICAg
ICBBU1NFUlQob3B0aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9PSBJbml0aWF0
b3JDb250ZXh0OjpEb2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGY5N2ViMDA0MjViZDI5YjNjYjZi
Y2IzNDVmYmZkNjUyMjQwOGY4Y2UuLmJiYTkxMDQxOTE1NGVjZjQzYzEyMmUyZDkwY2Y4NjQ1NTk3
YTk5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShOb2RlJiBub2RlLCBXVEY6OkZ1bmN0aW9u
PGJvb2wKICAgICAvLyBidXQgd2UgY2FuIGFwcHJveGltYXRlIHRoYXQgYnkgY2hlY2tpbmcgaWYg
c2NyaXB0aW5nIGlzIGVuYWJsZWQgcmlnaHQgbm93LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8UXVhbGlmaWVkTmFtZT4+IHRhZ05hbWVzVG9GaWx0ZXI7CiAgICAgaWYgKGZyYW1lLT5wYWdl
KCkgJiYgZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkgewotICAg
ICAgICB0YWdOYW1lc1RvRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UXVhbGlmaWVk
TmFtZT4+KCk7CisgICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBtYWtlVW5pcXVlPFZlY3RvcjxR
dWFsaWZpZWROYW1lPj4oKTsKICAgICAgICAgdGFnTmFtZXNUb0ZpbHRlci0+YXBwZW5kKEhUTUxO
YW1lczo6bm9zY3JpcHRUYWcpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggODM2OGE5NTcwNWUzMTkyZDFmODE3ZmYyZWNkNjgzN2Uz
ZjllMTM1ZC4uZWY5M2IzNTFlNzkxZDUyN2RhZTgwZjg3YzUyNWE3ZGMxNGU3ZTQyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0xMDUsNyArMTA1
LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKICAgICAgICAgbV9pbWFnZU9ic2VydmVyLT5jYWNoZWRJbWFnZXMoKS5h
ZGQodGhpcyk7CiAKICAgICBpZiAobV9pbWFnZSAmJiBpczxTVkdJbWFnZT4oKm1faW1hZ2UpKQot
ICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+
KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAgICAgbV9zdmdJbWFnZUNhY2hl
ID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdl
KSk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCYgY2xpZW50KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdl
OjpjcmVhdGVJbWFnZSgpCiAKICAgICBpZiAobV9pbWFnZSkgewogICAgICAgICBpZiAoaXM8U1ZH
SW1hZ2U+KCptX2ltYWdlKSkKLSAgICAgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOwor
ICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hlPigm
ZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CiAKICAgICAgICAgLy8gU2VuZCBxdWV1ZWQg
Y29udGFpbmVyIHNpemUgcmVxdWVzdHMuCiAgICAgICAgIGlmIChtX2ltYWdlLT51c2VzQ29udGFp
bmVyU2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAppbmRleCBiZTYxODNhYmZhNTlkNWM4ZTE2MmZlYzFkNjU1MjQ1MjNhZGUy
NzhjLi5mOWE3NWYzNTQ1Mjc2OTAyYTllNGE1YzM1YjZhYzZiMWYxNTBjMzA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTIw
OCw3ICsyMDgsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cgogICAgICAgICBDYWNoZWRSZXNv
dXJjZTo6cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UgewogICAgICAgICBtX3JlZGlyZWN0Q2hh
aW4uYXBwZW5kKFJlZGlyZWN0UGFpcihyZXF1ZXN0LCByZXNwb25zZSkpOwotICAgICAgICBpdGVy
YXRlQ2xpZW50cyhDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudD4obV9jbGllbnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
KHRoaXMpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVzcG9u
c2U+KHJlc3BvbnNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkg
bXV0YWJsZSB7CisgICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIG1ha2VVbmlx
dWU8UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIENhY2hlZFJlc291cmNlOjpy
ZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGU0MzBlNDQ3YWM0OTQ2MzZjOTg0
ZTc0ZDQwYjkxZTY1Y2RlYmI1MGIuLjA1NjdkMWQ1ZGU4YzZmMTNlMTg2ODQ0YWVkNzU1NzVjZjE3
ZTE3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcApAQCAtNTQ2LDcgKzU0Niw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRv
U2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIC8vIFRoZXJlZm9yZSwg
cmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgc2VuZGluZyBjYWxsYmFja3Mgb24gYSBjYWNoZSBoaXQg
bGlrZSBvdGhlciBDYWNoZWRSZXNvdXJjZXMsCiAgICAgICAgIC8vIHdlIHNjaGVkdWxlIHRoZSBj
YWxsYmFja3MgYW5kIGVuc3VyZSB3ZSBuZXZlciBmaW5pc2ggc3luY2hyb25vdXNseS4KICAgICAg
ICAgQVNTRVJUKCFtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmNvbnRhaW5zKCZjbGllbnQpKTsK
LSAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoJmNsaWVudCwgc3RkOjptYWtl
X3VuaXF1ZTxDYWxsYmFjaz4oKnRoaXMsIGNsaWVudCkpOworICAgICAgICBtX2NsaWVudHNBd2Fp
dGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50LCBtYWtlVW5pcXVlPENhbGxiYWNrPigqdGhpcywgY2xp
ZW50KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMjI5YTE0MmQ2NDQxM2NlYmFlZmFj
NTI3MTBiYjJiZjhkZGVkZjdiZS4uMmZmZTJiNDE4Nzk5N2VlZmRkNDE1ZTBlZGJlODAyZGMxNzJj
YWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
QEAgLTM4MSw5ICszODEsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZSB7CiB9OwogCiBjbGFzcyBD
YWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2sgewotI2lmICFDT01QSUxFUihNU1ZDKQogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotI2VuZGlmCiBwdWJsaWM6CiAgICAgQ2FsbGJhY2soQ2FjaGVk
UmVzb3VyY2UmLCBDYWNoZWRSZXNvdXJjZUNsaWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4NDNhOWQx
ZjlkNmM4NWYxMDAwYTJjNDBmMTk2NGI0N2EyZWIxYzdhLi5iMzRiOGZkMzVjMTA3N2E1NDUyYWJi
MzQzMjM2MWI0Y2MzZDExYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCBSZXNvdXJj
ZUVycm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmVxdQogICAgIC8vIEVudHJ5IHBvaW50IHRvIGh0dHBzOi8vZmV0Y2guc3Bl
Yy53aGF0d2cub3JnLyNtYWluLWZldGNoLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJl
cXVlc3Q+IG9yaWdpbmFsUmVxdWVzdDsKICAgICBpZiAoQ2FjaGVkUmVzb3VyY2U6OnNob3VsZFVz
ZVBpbmdMb2FkKHR5cGUpIHx8IHJlcXVlc3Qub3B0aW9ucygpLmRlc3RpbmF0aW9uID09IEZldGNo
T3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nKSB7Ci0gICAgICAgIG9yaWdpbmFsUmVx
dWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihyZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpKTsKKyAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJj
ZVJlcXVlc3Q+KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICBvcmlnaW5hbFJl
cXVlc3QtPmNsZWFySFRUUFJlZmVycmVyKCk7CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdC0+Y2xl
YXJIVFRQT3JpZ2luKCk7CiAgICAgfQpAQCAtMTM5MSw3ICsxMzkxLDcgQEAgUmVzb3VyY2VFcnJv
ck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPj4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnByZWwKICAgICAgICAgcmVzb3VyY2VWYWx1ZS0+aW5jcmVhc2VQcmVsb2FkQ291bnQo
KTsKIAogICAgICAgICBpZiAoIW1fcHJlbG9hZHMpCi0gICAgICAgICAgICBtX3ByZWxvYWRzID0g
c3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOworICAgICAg
ICAgICAgbV9wcmVsb2FkcyA9IG1ha2VVbmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2Uq
Pj4oKTsKICAgICAgICAgbV9wcmVsb2Fkcy0+YWRkKHJlc291cmNlVmFsdWUuZ2V0KCkpOwogICAg
IH0KICAgICByZXR1cm4gcmVzb3VyY2U7CkBAIC0xNDMzLDcgKzE0MzMsNyBAQCB2b2lkIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRzKENsZWFyUHJlbG9hZHNNb2RlIG1vZGUpCiAg
ICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CiAgICAgICAgIGlmIChtb2RlID09IENsZWFyUHJlbG9h
ZHNNb2RlOjpDbGVhclNwZWN1bGF0aXZlUHJlbG9hZHMgJiYgcmVzb3VyY2UtPmlzTGlua1ByZWxv
YWQoKSkgewogICAgICAgICAgICAgaWYgKCFyZW1haW5pbmdMaW5rUHJlbG9hZHMpCi0gICAgICAg
ICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFz
aFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOworICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xpbmtQ
cmVsb2FkcyA9IG1ha2VVbmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKICAg
ICAgICAgICAgIHJlbWFpbmluZ0xpbmtQcmVsb2Fkcy0+YWRkKHJlc291cmNlKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCmluZGV4IDcwY2IxYWZhNGNm
MWQzYTZlNjQyYThhZTlkYjg0NDhmODRkMTRiZDYuLjIyYWU3MmQ4ZmY1ZWY3MjlhMTY0Yzc2YTRm
ZGJiMGU0OWQ3MWY0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oCkBAIC0zNSw3ICszNSw4IEBAIGNsYXNz
IENhY2hlZFNWR0RvY3VtZW50OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBzdHJ1Y3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zOwogCi1jbGFzcyBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZSA6IHB1YmxpYyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCB7CitjbGFzcyBDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZSBmaW5hbCA6IHB1YmxpYyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGQzYjgwNTE0MjNjM2ZjNTI0YmQ4YjZmNTVmMzVhNmFj
MjIzMGIyMDIuLjNkZWFkNDZjMWQ0ZDc4Y2Y3Y2RmMDNhZmZjYmVmMzkyNzgyNjNjNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtODYsNyArODYs
NyBAQCBhdXRvIE1lbW9yeUNhY2hlOjplbnN1cmVTZXNzaW9uUmVzb3VyY2VNYXAoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiBDYWNoZWRSZQogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNWYWxp
ZCgpKTsKICAgICBhdXRvJiBtYXAgPSBtX3Nlc3Npb25SZXNvdXJjZXMuYWRkKHNlc3Npb25JRCwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghbWFwKQotICAgICAgICBtYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlTWFwPigpOworICAgICAgICBtYXAgPSBtYWtl
VW5pcXVlPENhY2hlZFJlc291cmNlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0y
MTYsNyArMjE2LDcgQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUlt
YWdlUHRyJiYgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgIHJlbW92ZUltYWdlRnJv
bUNhY2hlKHVybCwgZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAvLyBSZW1vdmUgY2FjaGUgZW50
cnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCiAKICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7Ci0gICAgYXV0byBjYWNoZWRJ
bWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRy
KCksIHNlc3Npb25JRCwgY29va2llSmFyLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAg
YXV0byBjYWNoZWRJbWFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1h
Z2UucHRyKCksIHNlc3Npb25JRCwgY29va2llSmFyLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7
CiAKICAgICBjYWNoZWRJbWFnZS0+YWRkQ2xpZW50KGR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7
CiAgICAgY2FjaGVkSW1hZ2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNvZGVkU2l6
ZSgpKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCBhdXRvIE1lbW9yeUNhY2hlOjpscnVMaXN0Rm9yKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkgLT4gTFJVTGlzdCYKIAogICAgIG1fYWxsUmVzb3VyY2Vz
LnJlc2VydmVDYXBhY2l0eShxdWV1ZUluZGV4ICsgMSk7CiAgICAgd2hpbGUgKG1fYWxsUmVzb3Vy
Y2VzLnNpemUoKSA8PSBxdWV1ZUluZGV4KQotICAgICAgICBtX2FsbFJlc291cmNlcy51bmNoZWNr
ZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxMUlVMaXN0PigpKTsKKyAgICAgICAgbV9hbGxSZXNv
dXJjZXMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8TFJVTGlzdD4oKSk7CiAgICAgcmV0dXJu
ICptX2FsbFJlc291cmNlc1txdWV1ZUluZGV4XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL1ByZXZpZXdMb2FkZXIuaAppbmRleCA2MThlOTQyOTUwMTdkYzNiODMwMzY1YzExNjc2MTUz
OGIxZGI2MjM4Li4xNTAzZDc4ZTNhZjU5OTQ5NTRiMzNjMmE4MDg0ZjRmZWE2MzAwNzA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaApAQCAtMzksNiArMzksNyBA
QCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQ
cmV2aWV3TG9hZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQcmV2aWV3TG9hZGVyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRl
ci5tbQppbmRleCBmNmI4MjIxNzkxNmNhZDk1YmZlOTYwYmIzZTM3ODRhMjcwYTliYTY3Li5jNWNh
NWMyNWYxMWI0ZDhhOWNhOTNlZmM4ODkwOTkwN2Y2Yjc2NjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLm1tCkBAIC04Niw3ICs4Niw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFJlc291cmNlTG9hZGVyOihSZXNvdXJjZUxvYWRlciYpcmVzb3VyY2VMb2Fk
ZXIgcmVzb3VyY2VSCiAKICAgICBfcmVzb3VyY2VMb2FkZXIgPSBtYWtlV2Vha1B0cihyZXNvdXJj
ZUxvYWRlcik7CiAgICAgX3Jlc3BvbnNlID0gcmVzb3VyY2VSZXNwb25zZTsKLSAgICBfY29udmVy
dGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2Up
OworICAgIF9jb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9y
ZXNwb25zZSk7CiAgICAgX2J1ZmZlcmVkRGF0YUFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CiAgICAgX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcg
PSByZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJl
Zm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCk7CiAKQEAgLTI0Niw3ICsyNDYsNyBAQCAtICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycgogICAgIH0KIAogICAgIF9jbGllbnQtPmRpZFJlcXVlc3RQYXNz
d29yZChbc2VsZiwgcmV0YWluZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoY29uc3QgU3RyaW5n
JiBwYXNzd29yZCkgewotICAgICAgICBfY29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2
aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UsIHBhc3N3b3JkKTsKKyAgICAgICAgX2NvbnZl
cnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBwYXNz
d29yZCk7CiAgICAgICAgIFtfY29udmVydGVyLT5wbGF0Zm9ybUNvbnZlcnRlcigpIGFwcGVuZERh
dGFBcnJheTpfYnVmZmVyZWREYXRhQXJyYXkuZ2V0KCldOwogICAgICAgICBbX2NvbnZlcnRlci0+
cGxhdGZvcm1Db252ZXJ0ZXIoKSBmaW5pc2hlZEFwcGVuZGluZ0RhdGFdOwogICAgIH0pOwpAQCAt
MjY4LDcgKzI2OCw3IEBAIFByZXZpZXdMb2FkZXI6On5QcmV2aWV3TG9hZGVyKCkKIHN0ZDo6dW5p
cXVlX3B0cjxQcmV2aWV3TG9hZGVyPiBQcmV2aWV3TG9hZGVyOjpjcmVhdGUoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNT
RVJUKFByZXZpZXdDb252ZXJ0ZXI6OnN1cHBvcnRzTUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUo
KSkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdMb2FkZXI+KGxvYWRlciwg
cmVzcG9uc2UpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFByZXZpZXdMb2FkZXI+KGxvYWRlciwg
cmVzcG9uc2UpOwogfQogCiBib29sIFByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNl
clByZWZlcmVuY2VzLmgKaW5kZXggZTZhZGI2N2RhOTQ4Njg2MjZmZTIwNmZmMTZlNjRkZGFjZTI3
MDFmZS4uNjEzZTc4OTJiNDEwZjNiMmE0OTRlY2ZiNjgwMDBhYWMwZGM2NjA4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKQEAgLTQwLDYgKzQwLDcg
QEAgY2xhc3MgVGV4dFRyYWNrTGlzdDsKIHN0cnVjdCBNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIAog
Y2xhc3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyhQYWdlR3JvdXAmKTsKICAg
ICB2aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVuY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzQ3OWNhMWY5Y2IwN2Q0YWM3YjRi
OWZiMjI4NTFmMGM5OTRiMTcxNC4uNGNjZGFiMDRiN2IzZjU1MzRjZWNjMmExOWVjMGE0YmNiN2Fi
MTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cApAQCAtMTgwLDcgKzE4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZXh0TWVudT4gQ29udGV4
dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51KEV2ZW50CiAgICAgfQogI2Vu
ZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudT4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudT4oKTsKIH0KIAogdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGY2M2RhYTdmNjM0NzI1NTg4NzNkYjNiNTgz
YmMyNTEyYTE3NzUyN2EuLmNkYzc0ZjZkZTA5ZTkzZGU5YWFiOTIzNTZlZjJmYmY0NGRkMmQzMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBAIC04OCw3ICs4
OCw3IEBAIGNsYXNzIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5IGZpbmFsIDogcHVibGljIFJlZ2lv
bk92ZXJsYXkgewogCiBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24o
KQogewotICAgIGF1dG8gcmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KCk7CisgICAg
YXV0byByZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICAKICAgICBmb3IgKGNvbnN0
IEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKCFmcmFtZS0+dmlldygpIHx8
ICFmcmFtZS0+ZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRl
eCA0OGMwNzM0NzcwZWIxMTBjMWM1ZDg0NTNkZDA4Nzk5MmU1NjQ5YTFlLi5kMjBiOThjNDE1ZWVj
ODI3NmY4OTAwZjI0YzY3YTk3ZjEwMWQwYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJh
bWUmIGZyYW1lKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGVuZGluZ01vbWVudHVtV2hl
ZWxFdmVudHNUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6Y2xlYXJMYXRjaGVkU3RhdGUpCiAj
ZW5kaWYKLSAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBdXRv
c2Nyb2xsQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIobWFrZVVu
aXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKICNpZiAhRU5BQkxFKElPU19UT1VDSF9FVkVO
VFMpCiAgICAgLCBtX2Zha2VNb3VzZU1vdmVFdmVudFRpbWVyKCp0aGlzLCAmRXZlbnRIYW5kbGVy
OjpmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggMjMzNzI5NDJiMzc2M2Q5MjkzZDI2NWIzNWFjYzE1MjVlMzRjYzAwZi4u
YTVlNWVkZTBiNGI3NDdlNDc5NGRjNzk0MDZhZWZjY2JiMzg1ZGQ2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtMTI5MSw3ICsxMjkxLDcgQEAgUmVuZGVyQm94KiBGcmFtZVZpZXc6
OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiB2b2lkIEZyYW1lVmlldzo6YWRkRW1iZWRkZWRP
YmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRkZWRPYmplY3QpCiB7CiAg
ICAgaWYgKCFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlKQotICAgICAgICBtX2VtYmVkZGVkT2Jq
ZWN0c1RvVXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRl
ZE9iamVjdCo+PigpOworICAgICAgICBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlID0gbWFrZVVu
aXF1ZTxMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+PigpOwogCiAgICAgSFRNTEZy
YW1lT3duZXJFbGVtZW50JiBlbGVtZW50ID0gZW1iZWRkZWRPYmplY3QuZnJhbWVPd25lckVsZW1l
bnQoKTsKICAgICBpZiAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxF
bWJlZEVsZW1lbnQ+KGVsZW1lbnQpKSB7CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAgICAg
Ym9vbCBoYWRTbG93UmVwYWludE9iamVjdHMgPSBoYXNTbG93UmVwYWludE9iamVjdHMoKTsKIAog
ICAgIGlmICghbV9zbG93UmVwYWludE9iamVjdHMpCi0gICAgICAgIG1fc2xvd1JlcGFpbnRPYmpl
Y3RzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVsZW1lbnQqPj4oKTsK
KyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3Qg
UmVuZGVyRWxlbWVudCo+PigpOwogCiAgICAgbV9zbG93UmVwYWludE9iamVjdHMtPmFkZCgmcmVu
ZGVyZXIpOwogICAgIGlmIChoYWRTbG93UmVwYWludE9iamVjdHMpCkBAIC0xNDYyLDcgKzE0NjIs
NyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIpCiB2b2lkIEZyYW1lVmlldzo6YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKCFtX3ZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKQotICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
ID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0PigpOworICAg
ICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gbWFrZVVuaXF1ZTxWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0U2V0PigpOwogCiAgICAgaWYgKCFtX3ZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzLT5jb250YWlucyhvYmplY3QpKSB7CiAgICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMtPmFkZChvYmplY3QpOwpAQCAtNDg2Niw3ICs0ODY2LDcgQEAgU3RyaW5nIEZyYW1l
Vmlldzo6dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0CiBib29sIEZyYW1lVmlldzo6
YWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQogewogICAg
IGlmICghbV9zY3JvbGxhYmxlQXJlYXMpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0gc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKKyAgICAgICAgbV9zY3JvbGxhYmxl
QXJlYXMgPSBtYWtlVW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOwogICAgIAogICAgIGlmICht
X3Njcm9sbGFibGVBcmVhcy0+YWRkKHNjcm9sbGFibGVBcmVhKS5pc05ld0VudHJ5KSB7CiAgICAg
ICAgIHNjcm9sbGFibGVBcmVhU2V0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKaW5kZXggNzMwOThmMWZhMWYxMDcxZTYxZmNkM2Fh
NjUzNTMzMGQzZTg5YmY1OS4uZTg1OGM5MmNiZjhjMzFhMzIxYmYzODAwOTdhYmE1NWYxNTcwMDBh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3Bw
CkBAIC01OTYsMTQgKzU5NiwxNCBAQCB2b2lkIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hM
YXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiByb290KQogICAgIEFTU0VSVCghbV9wYWludE9mZnNl
dENhY2hlRGlzYWJsZUNvdW50KTsKICAgICBBU1NFUlQoIWxheW91dFN0YXRlKCkpOwogCi0gICAg
bV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0
YXRlPihyb290KSk7CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJl
bmRlckxheW91dFN0YXRlPihyb290KSk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3TGF5b3V0Q29udGV4
dDo6cHVzaExheW91dFN0YXRlRm9yUGFnaW5hdGlvbklmTmVlZGVkKFJlbmRlckJsb2NrRmxvdyYg
bGF5b3V0Um9vdCkKIHsKICAgICBpZiAobGF5b3V0U3RhdGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0U3RhdGU6OklzUGFnaW5hdGVk
OjpZZXMpKTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVy
TGF5b3V0U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRlOjpJc1BhZ2luYXRlZDo6
WWVzKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCkBAIC02MTMsNyArNjEzLDcgQEAgYm9v
bCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUoUmVuZGVyQm94JiByZW5k
ZXJlciwgY29uc3QgTGF5b3V0U2kKICAgICBhdXRvKiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91
dFN0YXRlKCk7CiAgICAgaWYgKCFsYXlvdXRTdGF0ZSB8fCAhbmVlZHNGdWxsUmVwYWludCgpIHx8
IGxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpIHx8IHJlbmRlcmVyLmVuY2xvc2luZ0ZyYWdtZW50
ZWRGbG93KCkKICAgICAgICAgfHwgbGF5b3V0U3RhdGUtPmxpbmVHcmlkKCkgfHwgKHJlbmRlcmVy
LnN0eWxlKCkubGluZUdyaWQoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVHcmlkKCkgJiYg
cmVuZGVyZXIuaXNSZW5kZXJCbG9ja0Zsb3coKSkpIHsKLSAgICAgICAgbV9sYXlvdXRTdGF0ZVN0
YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihtX2xheW91dFN0
YXRlU3RhY2ssIHJlbmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VIZWlnaHRDaGFuZ2Vk
KSk7CisgICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJM
YXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVp
Z2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAKaW5kZXgg
OGMzYzUyYTA3MzUyMjc5MGNkMGM0YTYwZGMwNWU2MTQxMmMxOWFlOS4uNTIyN2U0MmFjMDk2Y2U2
OTI1ZDdlYzZhMThlNTE5MjVkMmUwMDZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJh
c2UuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lciYgTmF2aWdh
dG9yQmFzZTo6c2VydmljZVdvcmtlcigpCiB7CiAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKSk7CiAgICAgaWYg
KCFtX3NlcnZpY2VXb3JrZXJDb250YWluZXIpCi0gICAgICAgIG1fc2VydmljZVdvcmtlckNvbnRh
aW5lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5lcj4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CisgICAgICAgIG1fc2VydmljZVdvcmtlckNvbnRhaW5l
ciA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5lcj4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3NlcnZpY2VXb3JrZXJDb250YWluZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDM5NWQyZjAxMjMzY2I5ODllN2VmNTU1Y2M3MThiZTk0
ODk2NzEyZDkuLjNmNTgxODM5OTUyMjBhMzgzZjNmODc2OGE5YmY4MzRhM2YyZjM4MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtMjExLDI2ICsyMTEsMjYgQEAgc3RhdGljIGNvbnN0ZXhwciBPcHRp
b25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gcGFnZUluaXRpYWxBY3Rpdml0eVN0YXRlKCkKIH0K
IAogUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQotICAg
IDogbV9jaHJvbWUoc3RkOjptYWtlX3VuaXF1ZTxDaHJvbWU+KCp0aGlzLCAqcGFnZUNvbmZpZ3Vy
YXRpb24uY2hyb21lQ2xpZW50KSkKLSAgICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCisgICAgOiBtX2Nocm9tZShtYWtlVW5p
cXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQpKQorICAg
ICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8RHJhZ0NhcmV0Q29udHJvbGxlcj4o
KSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9kcmFnQ29udHJvbGxlcihzdGQ6
Om1ha2VfdW5pcXVlPERyYWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRy
YWdDbGllbnQpKQorICAgICwgbV9kcmFnQ29udHJvbGxlcihtYWtlVW5pcXVlPERyYWdDb250cm9s
bGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQogI2VuZGlmCi0gICAg
LCBtX2ZvY3VzQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzQ29udHJvbGxlcj4oKnRo
aXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkKKyAgICAsIG1fZm9jdXNDb250cm9sbGVy
KG1ha2VVbmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUluaXRpYWxBY3Rpdml0eVN0
YXRlKCkpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xsZXI+KCp0aGlzLCAq
cGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQorICAgICwgbV9jb250ZXh0TWVu
dUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xsZXI+KCp0aGlzLCAqcGFn
ZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQogI2VuZGlmCi0gICAgLCBtX3VzZXJJ
bnB1dEJyaWRnZShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJJbnB1dEJyaWRnZT4oKnRoaXMpKQotICAg
ICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29udHJv
bGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCkpCisgICAgLCBt
X3VzZXJJbnB1dEJyaWRnZShtYWtlVW5pcXVlPFVzZXJJbnB1dEJyaWRnZT4oKnRoaXMpKQorICAg
ICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ29udHJvbGxlcj4o
KnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCkpCiAjaWYgRU5BQkxFKFBP
SU5URVJfRVZFTlRTKQotICAgICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIoc3RkOjptYWtl
X3VuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcG9pbnRl
ckNhcHR1cmVDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckNhcHR1cmVDb250cm9sbGVyPigq
dGhpcykpCiAjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgICwgbV9wb2ludGVy
TG9ja0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyTG9ja0NvbnRyb2xsZXI+KCp0
aGlzKSkKKyAgICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckxv
Y2tDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fc2V0dGluZ3MoU2V0dGluZ3M6
OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcHJvZ3Jlc3Moc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVz
c1RyYWNrZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQpKQotICAg
ICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxCYWNrRm9yd2FyZENv
bnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xp
ZW50KSkpCisgICAgLCBtX3Byb2dyZXNzKG1ha2VVbmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigqcGFn
ZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKKyAgICAsIG1fYmFja0Zvcndh
cmRDb250cm9sbGVyKG1ha2VVbmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigqdGhpcywgV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQogICAgICwgbV9tYWlu
RnJhbWUoRnJhbWU6OmNyZWF0ZSh0aGlzLCBudWxscHRyLCBwYWdlQ29uZmlndXJhdGlvbi5sb2Fk
ZXJDbGllbnRGb3JNYWluRnJhbWUpKQogICAgICwgbV9lZGl0b3JDbGllbnQoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQpKQogICAgICwgbV9wbHVnSW5DbGllbnQocGFnZUNv
bmZpZ3VyYXRpb24ucGx1Z0luQ2xpZW50KQpAQCAtMjUwLDkgKzI1MCw5IEBAIFBhZ2U6OlBhZ2Uo
UGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fZG9tVGltZXJB
bGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQYWdlOjpkb21UaW1lckFsaWdu
bWVudEludGVydmFsSW5jcmVhc2VUaW1lckZpcmVkKQogICAgICwgbV9hY3Rpdml0eVN0YXRlKHBh
Z2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKQogICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQo
cGFnZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KQotICAgICwgbV9jb25zb2xl
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVDbGllbnQ+KCp0aGlzKSkKKyAgICAs
IG1fY29uc29sZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50PigqdGhpcykpCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUo
c3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0
b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKICNlbmRpZgog
ICAgICwgbV9zb2NrZXRQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnNvY2tldFBy
b3ZpZGVyKSkKICAgICAsIG1fY29va2llSmFyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uY29v
a2llSmFyKSkKQEAgLTI2OCwxNiArMjY4LDE2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRp
b24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fcGxheWJhY2tDb250cm9sc01hbmFnZXJV
cGRhdGVUaW1lcigqdGhpcywgJlBhZ2U6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGlt
ZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV9pc1V0aWxpdHlQYWdlKGlzVXRpbGl0eVBhZ2VDaHJv
bWVDbGllbnQoY2hyb21lKCkuY2xpZW50KCkpKQotICAgICwgbV9wZXJmb3JtYW5jZU1vbml0b3Io
aXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IHN0ZDo6bWFrZV91bmlxdWU8UGVyZm9ybWFuY2VN
b25pdG9yPigqdGhpcykpCi0gICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyKHN0ZDo6bWFrZV91
bmlxdWU8TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5h
YmxlZCkgeyBoYW5kbGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQb3dlck1vZGVFbmFibGVkKTsg
fSkpCi0gICAgLCBtX3BlcmZvcm1hbmNlTG9nZ2luZyhzdGQ6Om1ha2VfdW5pcXVlPFBlcmZvcm1h
bmNlTG9nZ2luZz4oKnRoaXMpKQorICAgICwgbV9wZXJmb3JtYW5jZU1vbml0b3IoaXNVdGlsaXR5
UGFnZSgpID8gbnVsbHB0ciA6IG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VNb25pdG9yPigqdGhpcykp
CisgICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyKG1ha2VVbmlxdWU8TG93UG93ZXJNb2RlTm90
aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeyBoYW5kbGVMb3dNb2Rl
UG93ZXJDaGFuZ2UoaXNMb3dQb3dlck1vZGVFbmFibGVkKTsgfSkpCisgICAgLCBtX3BlcmZvcm1h
bmNlTG9nZ2luZyhtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTG9nZ2luZz4oKnRoaXMpKQogI2lmIFBM
QVRGT1JNKE1BQykgJiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBI
T05FX05VTUJFUl9ERVRFQ1RJT04pKQotICAgICwgbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
KHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQorICAg
ICwgbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8U2VydmljZXNPdmVybGF5
Q29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3JlY2VudFdoZWVsRXZlbnREZWx0
YUZpbHRlcihXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpKQotICAgICwgbV9wYWdlT3Zl
cmxheUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xsZXI+KCp0
aGlzKSkKKyAgICAsIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8UGFnZU92ZXJs
YXlDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKLSAgICAsIG1fcGF5
bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqcGFn
ZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkKKyAgICAsIG1fcGF5bWVu
dENvb3JkaW5hdG9yKG1ha2VVbmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqcGFnZUNvbmZpZ3Vy
YXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkKICNlbmRpZgogI2lmIEVOQUJMRShXRUJf
QVVUSE4pCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JDb29yZGluYXRvcihtYWtlVW5pcXVlUmVmPEF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5hdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpKSkKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFBhZ2U6
OmluaXRHcm91cCgpCiB7CiAgICAgQVNTRVJUKCFtX3NpbmdsZVBhZ2VHcm91cCk7CiAgICAgQVNT
RVJUKCFtX2dyb3VwKTsKLSAgICBtX3NpbmdsZVBhZ2VHcm91cCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUdyb3VwPigqdGhpcyk7CisgICAgbV9zaW5nbGVQYWdlR3JvdXAgPSBtYWtlVW5pcXVlPFBh
Z2VHcm91cD4oKnRoaXMpOwogICAgIG1fZ3JvdXAgPSBtX3NpbmdsZVBhZ2VHcm91cC5nZXQoKTsK
IH0KIApAQCAtMjYzMyw3ICsyNjMzLDcgQEAgdm9pZCBQYWdlOjpzZXRSZXNvdXJjZVVzYWdlT3Zl
cmxheVZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIH0KIAogICAgIGlmICghbV9yZXNvdXJjZVVz
YWdlT3ZlcmxheSAmJiBtX3NldHRpbmdzLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgp
KQotICAgICAgICBtX3Jlc291cmNlVXNhZ2VPdmVybGF5ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNv
dXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMpOworICAgICAgICBtX3Jlc291cmNlVXNhZ2VPdmVybGF5
ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKaW5kZXggODI0NmFkYzFh
MTgwYjEzOGE4MDJjNTY0NTU0M2ZmYjJhM2VlMjg0YS4uODNhMjQwMzAwNDk0NWIxYWUwMjczMzcz
Y2FkN2VhOTkyNGU2Y2MxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVu
dC5jcHAKQEAgLTE2MSw5ICsxNjEsOSBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNz
YWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogCiAgICAg
aWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVz
c2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7
CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2su
cmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAg
bWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291
cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dlc3RlZFVSTCwg
c3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVz
dElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4
dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdnZXN0ZWRDb2x1bW5OdW1i
ZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICBhZGRNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6
Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBs
CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGJvb2wgZ290TWVzc2FnZSA9IGFyZ3VtZW50
cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKIAotICAgIGF1dG8gbWVz
c2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBhcmd1bWVudHMu
Y29weVJlZigpLCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVs
LCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhlYyk7CiAKICAgICBTdHJpbmcg
dXJsID0gbWVzc2FnZS0+dXJsKCk7CiAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IG1lc3NhZ2Ut
PmxpbmUoKTsKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3Jl
ZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJgogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGRhdGFVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBh
ZGRNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVz
c2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUgc2NyZWVuc2hvdCJfcywgV1RGTW92ZShhcmd1bWVu
dHMpKSk7CisgICAgICAgICAgICBhZGRNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdl
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUgc2NyZWVuc2hvdCJfcywg
V1RGTW92ZShhcmd1bWVudHMpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hv
dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYKICAgICBmb3Ig
KHNpemVfdCBpID0gKCF0YXJnZXQgPyAwIDogMSk7IGkgPCBhcmd1bWVudHMtPmFyZ3VtZW50Q291
bnQoKTsgKytpKQogICAgICAgICBhZGp1c3RlZEFyZ3VtZW50cy5hcHBlbmQoeyBzdGF0ZS0+dm0o
KSwgYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpIH0pOwogICAgIGFyZ3VtZW50cyA9IFNjcmlwdEFy
Z3VtZW50czo6Y3JlYXRlKCpzdGF0ZSwgV1RGTW92ZShhZGp1c3RlZEFyZ3VtZW50cykpOwotICAg
IGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2UsIE1lc3NhZ2VMZXZl
bDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICBhZGRNZXNzYWdlKG1h
a2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywgZGF0YVVSTCwgV1RG
TW92ZShhcmd1bWVudHMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmNwcAppbmRleCA5MTkzNjA0NWMyZmFmNzZjYWM1ZTJjNjllNjIzM2YyY2Uz
MGJmOWIxLi4xMjhjMThmMTRiOTA4ZTcxYmM3Y2VmYjM5NjIwN2ZlYmJjMDBmMmFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0xMTYsOSArMTE2LDkgQEAgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcyYgUGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMoKQogewogICAgIGlmICghbV9j
YXB0aW9uUHJlZmVyZW5jZXMpIHsKICNpZiBQTEFURk9STShNQUMpIHx8IEhBVkUoTUVESUFfQUND
RVNTSUJJTElUWV9GUkFNRVdPUkspCi0gICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRj4oKnRoaXMpOworICAg
ICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUY+KCp0aGlzKTsKICNlbHNlCi0gICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2Vz
ID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzPigqdGhpcyk7CisgICAg
ICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVu
Y2VzPigqdGhpcyk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5j
cHAKaW5kZXggNmMxNWIzZmFhODNmNWNhZTBkOTE3NmQwMGM4YWZjMTViNzY2OTMxNi4uY2JiYWMy
MWQ0MDA1YjFiMGUxMTgwMjJmN2FhMTRhOGJjZmVkODUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZS5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFBlcmZvcm1hbmNlOjpyZXNvdXJj
ZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZpcmVkKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1h
bmNlOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1p
bmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4o
KnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0
aGlzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5nLT5tYXJrKG1hcmtOYW1lKTsK
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMjc5LDE0ICsyNzksMTQgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkK
IHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWFya3MoY29uc3QgU3RyaW5nJiBtYXJrTmFtZSkKIHsK
ICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5nID0gc3RkOjptYWtl
X3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRpbWluZyA9IG1ha2VV
bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRpbWluZy0+Y2xlYXJNYXJrcyht
YXJrTmFtZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptZWFzdXJlKGNv
bnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYgc3RhcnRNYXJrLCBjb25zdCBT
dHJpbmcmIGVuZE1hcmspCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNl
clRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBt
X3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKIAogICAgIGF1dG8g
cmVzdWx0ID0gbV91c2VyVGltaW5nLT5tZWFzdXJlKG1lYXN1cmVOYW1lLCBzdGFydE1hcmssIGVu
ZE1hcmspOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0zMDAsNyArMzAwLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1lYXN1cmUoY29uc3QgU3RyaW5nJiBt
ZWFzdXJlTmFtZSwgY29uc3QgU3RyaW5nJgogdm9pZCBQZXJmb3JtYW5jZTo6Y2xlYXJNZWFzdXJl
cyhjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQot
ICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlz
KTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7
CiAgICAgbV91c2VyVGltaW5nLT5jbGVhck1lYXN1cmVzKG1lYXN1cmVOYW1lKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUHJld2FybUluZm9ybWF0aW9uLmgKaW5kZXggOTlhNDM3MmU1NGQ4NDAy
OWJhZmJmOWI4ZjdhNTgyMDAxZmE2M2ExYi4uMTZiY2YwNDM5MGExNzBmM2RlNzgyNjUwYzJmYzI1
MjJjZjUwNTRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3Jt
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCkBA
IC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBXRUJDT1JFX0VY
UE9SVCBQcmV3YXJtSW5mb3JtYXRpb24geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBGb250Q2FjaGU6OlByZXdhcm1JbmZvcm1hdGlvbiBmb250Q2FjaGU7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggMDM3MGYyODg3ZjY1YjU3YjNjZDg5
N2U0ZmM2OWU4YTJlZmI4NzVkZi4uNDQyOTFhZWZhMzdjOGE3YTg0NDhiZWMzOWFlZWFjMjQzOWVj
NDc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcApAQCAtMzIxLDcgKzMyMSw3
IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpvdXRwdXRMaW5rZWREZXN0aW5hdGlvbnMoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIERvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgh
bV9saW5rZWREZXN0aW5hdGlvbnMpIHsKLSAgICAgICAgbV9saW5rZWREZXN0aW5hdGlvbnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBSZWY8RWxlbWVudD4+PigpOworICAgICAg
ICBtX2xpbmtlZERlc3RpbmF0aW9ucyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIFJlZjxF
bGVtZW50Pj4+KCk7CiAgICAgICAgIGNvbGxlY3RMaW5rZWREZXN0aW5hdGlvbnMoZG9jdW1lbnQp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXIuY3BwCmluZGV4IDU2YTAxMWM0Y2VlOTk3ODk5MDFmYWQzNjMwMmJlMTBjMzQ1NjY1Mjcu
LjNiODgxZGZiYjE3MTdmNGU0MTFhNmM1MzQ0NTk1ZmJkM2FiNDMwNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgYm9vbCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmlzU2NoZWR1bGVkKCkgY29uc3QK
IHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzdGFydFRpbWVyKFNlY29uZHMgZGVsYXkp
CiB7CiAgICAgQVNTRVJUKCFpc1NjaGVkdWxlZCgpKTsKLSAgICBtX3JlZnJlc2hUaW1lciA9IHN0
ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpk
aXNwbGF5UmVmcmVzaEZpcmVkKTsKKyAgICBtX3JlZnJlc2hUaW1lciA9IG1ha2VVbmlxdWU8VGlt
ZXI+KCp0aGlzLCAmUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpkaXNwbGF5UmVmcmVzaEZpcmVk
KTsKICAgICBtX3JlZnJlc2hUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKaW5kZXggZmFkZTYy
ZmM3ODdlZTQ4OTc5YWY2ZGQ4MjY2Mjc3OTgwNGQzNzUxNy4uNmYwNjA4MTc4MjZlYzU2YzZlZThh
NWY4Y2QzOTQ0ZWMyZDQxOTBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcgogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyPiBjcmVhdGUoUGFnZSYgcGFnZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4ocGFnZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4ocGFnZSk7CiAg
ICAgfQogCiAgICAgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKFBhZ2UmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVzaXplT2JzZXJ2ZXIuaAppbmRleCA5NWIxYzhiNWJlODNkODliMjQ5NzllYWVkOWI5ZDRl
OTBkM2Y0Zjg3Li5lZWViZjliOWU2MWJkNTg4ZmQzYmE5OWZhYjE1MDE5MWNjOGY2NzBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRWxlbWVudDsKIAogc3RydWN0IFJlc2l6ZU9ic2VydmVyRGF0YSB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZlY3RvcjxXZWFrUHRyPFJl
c2l6ZU9ic2VydmVyPj4gb2JzZXJ2ZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmNwcAppbmRleCA0MjM0MTgyODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFlMWJm
Li4wZGViMDY0MTQ4Zjk3MjZjZDM4YjQxMDA1ZDUyMjk3MjYwYzFjNjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgU2VjdXJp
dHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBzb3VyY2VPCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2Nr
KTsKICAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NN
YXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50
cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9y
aWdpbkFjY2Vzc1doaXRlTGlzdD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1ha2VVbmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOwogCiAgICAgT3JpZ2luQWNjZXNz
V2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICBsaXN0
LT5hcHBlbmQoT3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRp
b25Eb21haW4sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zID8gT3JpZ2luQWNjZXNzRW50cnk6
OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpEaXNhbGxvd1N1YmRvbWFpbnMs
IE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVhdElQQWRkcmVzc0FzSVBBZGRyZXNzKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggYjY4NDg5NmYzOTg4NDYyNTRhMTc5N2FkY2Rl
ZDY2NjYwNWU4NWQ1Yy4uMjdlZWE2YzBhYjkzOGViYzhmOTY1ZGFjYjgyMDMxMTQ0MzE2MGI5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0
aWMgY29uc3QgU2Vjb25kcyBsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCA9IDI1MF9tczsKIAogU2V0
dGluZ3NCYXNlOjpTZXR0aW5nc0Jhc2UoUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShudWxscHRy
KQotICAgICwgbV9mb250R2VuZXJpY0ZhbWlsaWVzKHN0ZDo6bWFrZV91bmlxdWU8Rm9udEdlbmVy
aWNGYW1pbGllcz4oKSkKKyAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyhtYWtlVW5pcXVlPEZv
bnRHZW5lcmljRmFtaWxpZXM+KCkpCiAgICAgLCBtX2xheW91dEludGVydmFsKGxheW91dFNjaGVk
dWxlVGhyZXNob2xkKQogICAgICwgbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbChET01UaW1lcjo6
ZGVmYXVsdE1pbmltdW1JbnRlcnZhbCgpKQogICAgICwgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5n
c1RpbWVyKCp0aGlzLCAmU2V0dGluZ3NCYXNlOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmly
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCmluZGV4IDU1ODQ0MzQwNzgz
NDZmYjliNTdhNmVhNTlhZmNlMjdhNjI0MGI1NWEuLjNjM2Q0OWUwNThhYjEzMTc0N2ViNDliYjBj
OTNhMGZkMjk0NTE4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFi
bGVUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCkBA
IC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFN1c3BlbmRhYmxl
VGltZXIgOiBwcml2YXRlIFRpbWVyQmFzZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU3VzcGVuZGFi
bGVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+U3VzcGVuZGFi
bGVUaW1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCmluZGV4IGI5Y2U5OGNjNmNhNWMyNDU2Y2RiOTRmNWRjNDFiNGQyYjUwZTk4ZjYuLjY1MjMx
MWQ3YTU1ZjU1MDdhMDVhYTQzYjYyYzgwMjA4NzIyZGJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBV
c2VyQ29udGVudENvbnRyb2xsZXI6OmZvckVhY2hVc2VyTWVzc2FnZUhhbmRsZXIoRnVuY3Rpb248
dm9pZChjb25zdCBVc2VyTWUKIAogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJT
Y3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1bmlxdWVfcHRyPFVzZXJTY3JpcHQ+
IHVzZXJTY3JpcHQpCiB7Ci0gICAgYXV0byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRz
LmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHRW
ZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzY3JpcHRzSW5Xb3JsZCA9
IG1fdXNlclNjcmlwdHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8VXNl
clNjcmlwdFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHNjcmlwdHNJbldvcmxk
LT5hcHBlbmQoV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdHMoRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCkKIAogdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJTdHlsZVNo
ZWV0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU3R5bGVTaGVl
dD4gdXNlclN0eWxlU2hlZXQsIFVzZXJTdHlsZUluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkK
IHsKLSAgICBhdXRvJiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1
cmUoJndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldFZl
Y3Rvcj4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3Js
ZCA9IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVybiBtYWtlVW5p
cXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgc3R5
bGVTaGVldHNJbldvcmxkLT5hcHBlbmQoV1RGTW92ZSh1c2VyU3R5bGVTaGVldCkpOwogCiAgICAg
aWYgKGluamVjdGlvblRpbWUgPT0gSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcAppbmRleCBmMjU5YWViMWEw
YTllNWNlN2ExMzRmMGQxMjY5ZWMzMTRjOWE5YzMxLi4zMDRkOTRhNzViZjM2MWQ4ZGQ0NmY2YWZm
YWZlMzFjM2VmODJhNDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZl
bnREZWx0YUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVs
dGFGaWx0ZXIuY3BwCkBAIC00Myw5ICs0Myw5IEBAIFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6fldo
ZWVsRXZlbnREZWx0YUZpbHRlcigpID0gZGVmYXVsdDsKIHN0ZDo6dW5pcXVlX3B0cjxXaGVlbEV2
ZW50RGVsdGFGaWx0ZXI+IFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKCkKIHsKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2hlZWxFdmVudERlbHRh
RmlsdGVyTWFjPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdoZWVsRXZlbnREZWx0YUZpbHRl
ck1hYz4oKTsKICNlbHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNXaGVlbEV2
ZW50RGVsdGFGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFzaWNXaGVlbEV2ZW50
RGVsdGFGaWx0ZXI+KCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAxNDQ2NjNj
YWU5NTk3OWNmY2M3YzRhMjI0MmUxZDE2MWQ2MTAyOTI1Li4xM2MzMWY1NzY0YjdiMjI0YTJiN2Vh
NTVhZTMzYTZiMzk4NmI5NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBA
IHZvaWQgQ1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmFuaW1hdGlvbldpbGxCZVJlbW92
ZWQoQW5pbWF0aW9uQmFzZSYgYW5pbWF0CiB9CiAKIENTU0FuaW1hdGlvbkNvbnRyb2xsZXI6OkNT
U0FuaW1hdGlvbkNvbnRyb2xsZXIoRnJhbWUmIGZyYW1lKQotICAgIDogbV9kYXRhKHN0ZDo6bWFr
ZV91bmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+KGZyYW1lKSkKKyAgICA6IG1f
ZGF0YShtYWtlVW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPihmcmFtZSkpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3Bl
cnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3Bl
cnR5QW5pbWF0aW9uLmNwcAppbmRleCA3NGVlZGM5OTY2ZTlmODFhY2I5OTZjZjM3Njk4M2RhYjY4
NTU0MGM2Li5iYWViMjQ3NjU3MTY3MzdiODRhMWNjOGYxOWRlMDE3M2YzNjdlOTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRp
b24uY3BwCkBAIC0xMTcsOSArMTE3LDkgQEAgc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8
U2hhZG93RGF0YT4gYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGkKIHsKICAg
ICBBU1NFUlQoZnJvbSAmJiB0byk7CiAgICAgaWYgKGZyb20tPnN0eWxlKCkgIT0gdG8tPnN0eWxl
KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCp0byk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCp0byk7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChmcm9tLT5sb2NhdGlvbigpLCB0by0+
bG9jYXRpb24oKSwgcHJvZ3Jlc3MpLAorICAgIHJldHVybiBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+
KGJsZW5kKGZyb20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlvbigpLCBwcm9ncmVzcyksCiAgICAg
ICAgIGJsZW5kKGZyb20tPnJhZGl1cygpLCB0by0+cmFkaXVzKCksIHByb2dyZXNzKSwKICAgICAg
ICAgYmxlbmQoZnJvbS0+c3ByZWFkKCksIHRvLT5zcHJlYWQoKSwgcHJvZ3Jlc3MpLAogICAgICAg
ICBibGVuZEZ1bmMoYW5pbSwgZnJvbS0+c3R5bGUoKSwgdG8tPnN0eWxlKCksIHByb2dyZXNzKSwK
QEAgLTk3NCwxNSArOTc0LDE1IEBAIGNsYXNzIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3Rl
ZENvbG9yIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UKICAgICBQcm9wZXJ0
eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3AsIGNvbnN0IENv
bG9yJiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoq
c2V0dGVyKShjb25zdCBDb2xvciYpLAogICAgICAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxl
OjoqdmlzaXRlZEdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0
dGVyKShjb25zdCBDb2xvciYpKQogICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJh
c2UocHJvcCkKLSAgICAgICAgLCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdy
YXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAgICAgICAsIG1fdmlzaXRlZFdy
YXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRl
ZEdldHRlciwgdmlzaXRlZFNldHRlcikpCisgICAgICAgICwgbV93cmFwcGVyKG1ha2VVbmlxdWU8
UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKKyAgICAgICAgLCBt
X3Zpc2l0ZWRXcmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIHZp
c2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQogICAgIHsKICAgICB9CiAgICAgUHJvcGVydHlX
cmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJRCBwcm9wLCBNYXliZUludmFs
aWRDb2xvclRhZywgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwg
dm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IENvbG9yJiksCiAgICAgICAgIGNvbnN0
IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5k
ZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNvbnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0
aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQotICAgICAgICAsIG1fd3JhcHBlcihzdGQ6Om1h
a2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCBnZXR0ZXIs
IHNldHRlcikpCi0gICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFBy
b3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNp
dGVkU2V0dGVyKSkKKyAgICAgICAgLCBtX3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBw
ZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQorICAgICAgICAsIG1f
dmlzaXRlZFdyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xv
cj4ocHJvcCwgdmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAgewogICAgIH0KICAg
ICBib29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIp
IGNvbnN0IG92ZXJyaWRlCkBAIC0xMjI5LDE5ICsxMjI5LDE5IEBAIGNsYXNzIEZpbGxMYXllcnNQ
cm9wZXJ0eVdyYXBwZXIgOiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7CiAg
ICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblg6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b25YOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxM
YXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJh
Y2tncm91bmRYT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWE9yaWdpbiwgRWRnZTo6
UmlnaHQpOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5p
cXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXll
cjo6eFBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tn
cm91bmRYT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWE9yaWdpbiwgRWRnZTo6Umln
aHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb25ZOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5
ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNr
Z3JvdW5kWU9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFlPcmlnaW4sIEVkZ2U6OkJv
dHRvbSk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlx
dWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVy
Ojp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dy
b3VuZFlPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRZT3JpZ2luLCBFZGdlOjpCb3R0
b20pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplOgog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6Ci0gICAgICAgICAgICBtX2Zp
bGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyPExlbmd0aFNpemU+Pihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6c2l6ZUxlbmd0aCwg
JkZpbGxMYXllcjo6c2V0U2l6ZUxlbmd0aCk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3Bl
cnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8RmlsbExheWVyUHJvcGVydHlXcmFwcGVyPExlbmd0aFNp
emU+Pihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6c2l6ZUxlbmd0aCwgJkZpbGxMYXllcjo6c2V0U2l6
ZUxlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRJbWFnZToKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJTdHlsZUltYWdlUHJvcGVydHlXcmFwcGVyPihwcm9w
ZXJ0eSwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlKTsKKyAgICAgICAg
ICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJTdHls
ZUltYWdlUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxs
TGF5ZXI6OnNldEltYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzcwLDcgKzE3NzAsNyBAQCBDU1NQcm9wZXJ0eUFuaW1h
dGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCgpCiAgICAgICAg
ICAgICBsb25naGFuZFdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChtX3Byb3BlcnR5V3JhcHBlcnNb
d3JhcHBlckluZGV4XS5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX3Byb3BlcnR5V3Jh
cHBlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2hvcnRoYW5kUHJvcGVydHlX
cmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3ZlKGxvbmdoYW5kV3JhcHBlcnMpKSk7CisgICAgICAg
IG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxTaG9ydGhhbmRQ
cm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5SUQsIFdURk1vdmUobG9uZ2hhbmRXcmFwcGVycykpKTsK
ICAgICAgICAgaW5kZXhGcm9tUHJvcGVydHlJRChwcm9wZXJ0eUlEKSA9IGFuaW1hdGFibGVMb25n
aGFuZFByb3BlcnRpZXNDb3VudCArIGk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNzA0N2U4M2RlNzg1ZGI4
MWI2ZDk5MGE5NDgzN2JhNzFkNzI4MjlhMC4uOGYwZjZiZjUzYjAzZTA4ZjcwMzMxNjZlYjhjNzRk
NmJmOTcyODM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1
cmkKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBtX3NlbGZTb3VyY2VQcm90b2Nv
bCA9IHNlY3VyaXR5T3JpZ2luLnByb3RvY29sKCk7Ci0gICAgbV9zZWxmU291cmNlID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3NlbGZTb3Vy
Y2VQcm90b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdpbi5wb3J0KCks
IGVtcHR5U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CisgICAgbV9zZWxmU291cmNlID0gbWFrZVVu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2U+KCp0aGlzLCBtX3NlbGZTb3VyY2VQcm90
b2NvbCwgc2VjdXJpdHlPcmlnaW4uaG9zdCgpLCBzZWN1cml0eU9yaWdpbi5wb3J0KCksIGVtcHR5
U3RyaW5nKCksIGZhbHNlLCBmYWxzZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5
OjphcHBseVBvbGljeVRvU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCmlu
ZGV4IGE4ZjFkNGYwYmRlMTRmMTRiODhhYTM5NDBlZGQ4Yzg5NjI2MWUzZGUuLmJiZDkxODllMjQ4
MzRkYWNjOGQ3YmFlMTVjYzU4MTZjYTMyMGNmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCkBAIC0zMyw2
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3QmIGRpcmVjdGl2ZUxpc3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICAgICAgOiBtX25hbWUobmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKaW5k
ZXggZGRiZDhjZGUyNzgwZTkyZGJhMjBlMGFiZDk5Y2YwNDk4NDNmNGM0ZC4uYzAxNTZkZGYwMWM5
NDdlNTA0YjU2OWQwYTQxMTY5OGM1NThmM2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5j
cHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0KENvbnRlbnRTZQogCiBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4gQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKENvbnRlbnRTZWN1cml0eVBvbGljeSYgcG9s
aWN5LCBjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVHlw
ZSB0eXBlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlBvbGljeUZyb20gZnJvbSkKIHsKLSAgICBh
dXRvIGRpcmVjdGl2ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CisgICAgYXV0byBkaXJlY3RpdmVzID0gbWFrZVVu
aXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pihwb2xpY3ksIHR5cGUpOwog
ICAgIGRpcmVjdGl2ZXMtPnBhcnNlKGhlYWRlciwgZnJvbSk7CiAKICAgICBpZiAoIWNoZWNrRXZh
bChkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUoZGlyZWN0aXZlcy0+bV9zY3JpcHRTcmMu
Z2V0KCkpKSkgewpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6c2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uCiAg
ICAgICAgIG1fcG9saWN5LnJlcG9ydER1cGxpY2F0ZURpcmVjdGl2ZShuYW1lKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBkaXJlY3RpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPENTUERpcmVj
dGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2YWx1ZSk7CisgICAgZGlyZWN0aXZlID0gbWFrZVVuaXF1
ZTxDU1BEaXJlY3RpdmVUeXBlPigqdGhpcywgbmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFwcGx5U2FuZGJveFBvbGljeShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2FuZGJveFBvbGljeSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVyLmgKaW5kZXggMWMyYjRkMDhlNmRi
MjQzMDUyOTFhMWVhMWM4NmViNjM2ZTNmMzUyNi4uODQ5NDg0MjY0ZTkxNzMwZjdhNjkwOThkZjNk
N2RhZDE0OTJkY2ViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVu
dENoYW5nZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENo
YW5nZU9ic2VydmVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRE9NVGltZXI7CiBjbGFzcyBF
bGVtZW50OwogCiBjbGFzcyBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8Q29udGVudENoYW5nZU9ic2VydmVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQ29udGVudENoYW5nZU9ic2VydmVyKERvY3VtZW50Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaAppbmRleCBiNjIx
ODRmZTE3OTQyZGE5NDg1OWE4MDJjZWZkZTc2ZTI0MmQzZTRjLi5iYmY3OTQ1YWFhNDk5YTc2Yjdl
MTJhYjNjNzVkNTk0NDIxZTQ1ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lv
cy9ET01UaW1lckhvbGRpbmdUYW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9N
VGltZXJIb2xkaW5nVGFuay5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIERPTVRpbWVyOwogCiBjbGFzcyBET01UaW1lckhvbGRpbmdUYW5rIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01UaW1lckhvbGRpbmdUYW5rKCk7
CiAgICAgfkRPTVRpbWVySG9sZGluZ1RhbmsoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCmluZGV4IDRmZGY3NTZj
MDIxOTg4NTMzYjJmMTI1NWM5MWE0ZWNjOTE0ODRmYTQuLmMwN2IxMjc2OWNkMDRiYTdiMzFmODhj
NDZhOWYwNmI2YWQ2YjQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgv
UmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9s
aW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcApAQCAtNzAsNiArNzAsNyBAQCBzdGF0
aWMgU3RyaW5nIGdjVGltZXJTdHJpbmcoTW9ub3RvbmljVGltZSB0aW1lckZpcmVEYXRlLCBNb25v
dG9uaWNUaW1lIG5vdykKIHN0YXRpYyBjb25zdCBmbG9hdCBnRm9udFNpemUgPSAxNDsKIAogY2xh
c3MgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5
ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJl
c291cmNlVXNhZ2VPdmVybGF5UGFpbnRlcihSZXNvdXJjZVVzYWdlT3ZlcmxheSYgb3ZlcmxheSkK
ICAgICAgICAgOiBtX292ZXJsYXkob3ZlcmxheSkKQEAgLTEzMiw3ICsxMzMsNyBAQCBjbGFzcyBS
ZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmluYWwgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNs
aWVudCB7CiAKIHZvaWQgUmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5pdGlhbGl6ZSgp
CiB7Ci0gICAgbV9vdmVybGF5UGFpbnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VVc2Fn
ZU92ZXJsYXlQYWludGVyPigqdGhpcyk7CisgICAgbV9vdmVybGF5UGFpbnRlciA9IG1ha2VVbmlx
dWU8UmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyPigqdGhpcyk7CiAgICAgbV9wYWludExheWVy
ID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG92ZXJsYXkoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVu
dCgpLmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICptX292ZXJsYXlQYWludGVyKTsKICAgICBtX3Bh
aW50TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKICAgICBtX3BhaW50TGF5
ZXItPnNldFNpemUoeyBub3JtYWxXaWR0aCwgbm9ybWFsSGVpZ2h0IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1BhZ2VNYWMubW0KaW5kZXggZDdhZGZmZDcyZjlmYThmZTk3YWZjZGEwNzE4ZDgzYzZlMDkw
ODUwYy4uMDg2M2FkMjY3MjVkNjU1NDc1MmI3YWMyMTQ4ZWVkMWM2ZGZjMjNiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9QYWdlTWFjLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUGFnZTo6cGxhdGZv
cm1Jbml0aWFsaXplKCkKIHZvaWQgUGFnZTo6YWRkU2NoZWR1bGVQYWlyKFJlZjxTY2hlZHVsZVBh
aXI+JiYgcGFpcikKIHsKICAgICBpZiAoIW1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzKQotICAgICAg
ICBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVQYWly
SGFzaFNldD4oKTsKKyAgICAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMgPSBtYWtlVW5pcXVl
PFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7CiAgICAgbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMtPmFk
ZChwYWlyLnB0cigpKTsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fbWFpbkZyYW1lLmdl
dCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9yV2luZG93LmgKaW5kZXggZGNkZDk1
MDQ4YmQ5NThhYTc0NDBhMGZjM2Q5YmNlN2RmMmY1NDgwZi4uNjQ3NWNlNWViYzkwN2FlMTg4MGFm
MTcxYzA3MzZmZjNlY2I1MDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
VGV4dEluZGljYXRvcldpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJ
bmRpY2F0b3JXaW5kb3cuaApAQCAtNTIsNiArNTIsNyBAQCBlbnVtIGNsYXNzIFRleHRJbmRpY2F0
b3JXaW5kb3dEaXNtaXNzYWxBbmltYXRpb24gOiB1aW50OF90IHsKICNpZiBQTEFURk9STShNQUMp
CiAKIGNsYXNzIFRleHRJbmRpY2F0b3JXaW5kb3cgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRJbmRpY2F0b3JXaW5kb3cpOwogCiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDMwNmNmZWQxOWNlNmQwMGI2MmE4NTI0
OTcwMDI4YjgwNDVmYWQ4MjMuLjAwYWYzOTQ3OGRjNzVmNzAyOWMyNDg0NTRlZjAxYWIwYzZjN2Qx
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IoUGFnZSogcGFnZSkKICAgICA6IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpCiAgICAg
LCBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyKCp0aGlzLCAmQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsVGltZXJGaXJl
ZCkKLSAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5n
U3RhdGVUcmVlPih0aGlzKSkKKyAgICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlKG1ha2VVbmlxdWU8
U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCA2M2JkOTYz
OGI2M2ExYTExY2E0MGYzNjcyMTI5ZjcxNDEwYzZmZjJlLi4zYWI2NDA2ODI2NGM1MDQwOGJhYjRl
ZTM4ZDJjY2Q0YTY0MWM3ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3Qg
U2Nyb2xsT2Zmc2V0UmFuZ2UgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8geworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICBWZWN0b3I8VD4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIFZlY3RvcjxUPiB2ZXJ0
aWNhbFNuYXBPZmZzZXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAppbmRleCA3NjQwZDU1
ZDk2YTNmMDk1OWI5MzFlZjA0MzNlYzE1ZmEyMDdkYmQ0Li5jODkwZjllYmEwMDRjYTg3ODAxNDFi
ODVjZWVlMDA1NTYyZTJlNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgRmxvYXRTaXplIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6cHJlZGljdGVk
RGVzdGluYXRpb25PZmZzZXQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEs
IGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3cG9ydFNpemUs
IGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0
eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0
YSwgaW5pdGlhbFZlbG9jaXR5KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuaAppbmRleCBiZTk5ZDBlZTZhM2YwNzg5ZmM0ZDdkYzY5Mjg4NWI1
MjQwMDQzODAyLi4yMWMzMTFjZDg5Yjc5NDA4NGE4NDkwZDVmYzliYTU1YTkzYjlhZWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBGbG9hdFBvaW50Owog
Y2xhc3MgRmxvYXRTaXplOwogCiBjbGFzcyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Igewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5
KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUm
IGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9k
ZS5jcHAKaW5kZXggOTY4MmQyYzFiY2VlMzc1NzEzYzM0NmQzZTMzY2Q0ZGMxMzVhZmM3OC4uYmU1
N2M5Yjg2OWQwY2M1MjM4NmIwMDQ2YTUwN2QzNGM4NDBjODE2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVuZENoaWxkKFJlZjxTY3Jv
bGxpbmdTdGF0ZU5vZGU+JiYgY2hpbGROb2RlKQogICAgIGNoaWxkTm9kZS0+c2V0UGFyZW50KHRo
aXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOworICAgICAg
ICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9k
ZT4+PigpOwogICAgIG1fY2hpbGRyZW4tPmFwcGVuZChXVEZNb3ZlKGNoaWxkTm9kZSkpOwogICAg
IHNldFByb3BlcnR5Q2hhbmdlZChDaGlsZE5vZGVzKTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCB2
b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hpbGQoUmVmPFNjcm9sbGluZ1N0YXRlTm9k
ZT4mJiBjaGlsZE5vZGUsIHNpemVfdAogCiAgICAgaWYgKCFtX2NoaWxkcmVuKSB7CiAgICAgICAg
IEFTU0VSVCghaW5kZXgpOwotICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOworICAgICAgICBtX2NoaWxkcmVu
ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOwogICAg
IH0KIAogICAgIGlmIChpbmRleCA+IG1fY2hpbGRyZW4tPnNpemUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXgg
ZjYxZTI4ZTBlYzUwMzAxMmIzNzJmYjI1NTY5YThjYjdkZDUzYWE3MC4uNzE1N2UxNjg2MGY0OWM5
MWRkYTM1YmJjNGVhZmU5ODE5ZWFjYmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gU2Nyb2xsaW5nU3RhdGVUcmVlOjpj
b21taXQoTGF5ZXJSZXByZXNlbnRhdGkKICAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNs
b25lcyBhbmQgcmVzZXRzIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUsIGJ1dCBsZWF2ZXMgdGhlIHRy
ZWUgc3RydWN0dXJlIGludGFjdC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVU
cmVlPiB0cmVlU3RhdGVDbG9uZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVl
PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRyZWVTdGF0ZUNs
b25lID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CiAgICAgdHJlZVN0YXRlQ2xv
bmUtPnNldFByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24ocHJlZmVycmVkTGF5ZXJSZXByZXNl
bnRhdGlvbik7CiAKICAgICBpZiAobV9yb290U3RhdGVOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5vZGUuY3BwCmluZGV4IGVhNzRlMmNh
NDI0MjlhOGUyYmU5ZjlhMzc5ZTM2N2RhNGRkZGEzZDEuLjcyOTYxNWE2OWYwMTIyNjMxNTE0N2Vj
ZmRiNTUyOGIwMTk5ZjM4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1RyZWVOb2RlPiYmIGNoaWxkTm9k
ZSkKICAgICBjaGlsZE5vZGUtPnNldFBhcmVudCh0aGlzKTsKIAogICAgIGlmICghbV9jaGlsZHJl
bikKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxT
Y3JvbGxpbmdUcmVlTm9kZT4+PigpOworICAgICAgICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBw
ZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tCmluZGV4IDFjN2FiNzZhMTUxZTYzNTBkOGI2MTRjMzZkMDViY2U2NWM2Yzk1ODQu
LmI0M2VhOTk1ZmFmNmI0NzAzMzVmYmYwN2EyMDg2YTZiMzVmNzBlZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgYm9vbCBn
RW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSB0cnVlOwogCiBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZl
bG9jaXR5KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwg
aW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwg
aW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lk
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGlu
Z1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NQVU1v
bml0b3IuaAppbmRleCA3MWU0M2QzZjNiOTQ2MTA2MDhjYmYxMWRiNTExNWJjYmVjMDU0ODkwLi4w
ODhkZjU0M2UwNDc5MTE3YzgzN2FmZTIyM2JiY2M1NTE0ODhhN2Y2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ1BVTW9uaXRvci5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENQVU1vbml0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHVzaW5nIEV4Y2VlZGVkQ1BVTGltaXRIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2
b2lkKGRvdWJsZSk+OwogICAgIFdFQkNPUkVfRVhQT1JUIENQVU1vbml0b3IoU2Vjb25kcyBjaGVj
a0ludGVydmFsLCBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlTW9uaXRvci5oCmluZGV4IGU2MGY3NzEzZjYyYmIyNTYyYTg0Mjg4OGM3ZmM2MjlmMmM1
NDdmMzMuLjZiMjg4ZTFlMTdlNDQ4YmI4NmZiOWVjZTI5Y2M5ZTViZGI5ZGQ4ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZU1vbml0b3IuaApAQCAtNDIsNiArNDIsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGaWxlTW9uaXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBGaWxlQ2hhbmdlVHlwZSB7IE1vZGlmaWNh
dGlvbiwgUmVtb3ZhbCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCA0ZmY5
ODA0ZWFlYzEzMDZiMjY4YTI0NWYyNzcxYTExMmUyOGQyYTFlLi4zZmM0MzFhNDc0NjFkOGM0NDNk
YjRiNjIyZDZlYTkwNjM0ZGEwZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAg
LTI4OCw5ICsyODgsOSBAQCBMZW5ndGggY29udmVydFRvMTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNv
bnN0IExlbmd0aCYgbGVuZ3RoKQogICAgIC8vIFR1cm4gdGhpcyBpbnRvIGEgY2FsYyBleHByZXNz
aW9uOiBjYWxjKDEwMCUgLSBsZW5ndGgpCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDYWxj
RXhwcmVzc2lvbk5vZGU+PiBsZW5ndGhzOwogICAgIGxlbmd0aHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSgyKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENh
bGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOwotICAgIGxlbmd0aHMu
dW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxl
bmd0aCkpOwotICAgIGF1dG8gb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uT3Bl
cmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKKyAgICBs
ZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihM
ZW5ndGgoMTAwLCBQZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKG1ha2VV
bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOworICAgIGF1dG8gb3AgPSBtYWtl
VW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3Bl
cmF0b3I6OlN1YnRyYWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNy
ZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCkBAIC0zMDIsNyArMzAyLDcg
QEAgc3RhdGljIExlbmd0aCBibGVuZE1peGVkVHlwZXMoY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25z
dCBMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3IKICAgICBpZiAocHJvZ3Jlc3MgPj0gMS4wKQogICAg
ICAgICByZXR1cm4gdG87CiAgICAgICAgIAotICAgIGF1dG8gYmxlbmQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGg+KGZyb20sIHRvLCBwcm9ncmVzcyk7CisgICAg
YXV0byBibGVuZCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aD4oZnJvbSwg
dG8sIHByb2dyZXNzKTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFsdWU6OmNyZWF0
ZShXVEZNb3ZlKGJsZW5kKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAppbmRleCA1NTJiMTJmNmMx
ZThjZGE2ZmZlYTY0Nzg2OTIyMjllYTkzZWQxN2NhLi44ZTM1ZTMwNGMxZTcyNTdiYzY0YzZhZDEw
ZWRkZTk2NDIwNGU2NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZW1v
dGVDb21tYW5kTGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90
ZUNvbW1hbmRMaXN0ZW5lci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2lmICghUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykpIHx8ICFIQVZF
KE1FRElBX1BMQVlFUikKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVudCYg
Y2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lcj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVu
ZXI+KGNsaWVudCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb24uaAppbmRleCAyZTVmNjNiY2VmMmJmZGZjZmY5MjE2ZDk4NmIwZjQzNjBjNjgwYjQx
Li5iN2MxZDI0ZWI0OWU1YTU1ZjY5MWYwNmNlOWUxZDgwYjIxYmNjYWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBG
bG9hdFBvaW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKIGNsYXNzIFNjcm9sbEFuaW1hdGlv
biB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
U2Nyb2xsQW5pbWF0aW9uKCkgeyB9OwogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsYmFy
T3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCAvKiBzdGVwICovLCBmbG9hdCAv
KiBtdWx0aXBsaWVyICovKSB7IHJldHVybiB0cnVlOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGQ5MTU0ZDkzNTFhMmYzMzY2ZGRkMDVmZTYwZmRl
YmI5YzFhMWU3MzguLmY4ZWRjODgyZDdmMzYwMDJlMTk4NTEwZDgxYjhlYjM0YWE1MDA3YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFFTkFCTEUoU01PT1RIX1NDUk9MTElORykg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUMpCiBzdGQ6OnVuaXF1ZV9w
dHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFu
aW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5p
bWF0b3I+KHNjcm9sbGFibGVBcmVhKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggYzYyYWQ4MzRlNmIzODA4ZTFlY2RhOGJhMTMx
MmQzZDk1NzA1ZTk2YS4uOTZkMGYzMDBiMzQxOGU2MDgyMWRhMmRhMmE2NDE4OWM0ZGVlMGIzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtODAsNyAr
ODAsNyBAQCBTY3JvbGxBbmltYXRvciYgU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbEFuaW1hdG9yKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fc2Nyb2xsQW5pbWF0b3IpIHsKICAgICAgICAgaWYgKHVzZXNN
b2NrU2Nyb2xsQW5pbWF0b3IoKSkgewotICAgICAgICAgICAgbV9zY3JvbGxBbmltYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25zdF9jYXN0PFNjcm9sbGFibGVB
cmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7CisgICAgICAgICAg
ICBtX3Njcm9sbEFuaW1hdG9yID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvck1vY2s+KGNvbnN0
X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIHsKICAgICAgICAgICAgICAgICBsb2dNb2NrU2Nyb2xsQW5pbWF0b3JNZXNzYWdlKG1lc3Nh
Z2UpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZQpAQCAtNDM1LDcgKzQzNSw3IEBA
IGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhhc0xheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3QKIFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNu
YXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFtX3NuYXBPZmZzZXRzSW5mbykKLSAgICAgICAg
bV9zbmFwT2Zmc2V0c0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVl
PFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKICAgICByZXR1cm4gKm1fc25h
cE9mZnNldHNJbmZvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dWRkZW5UZXJtaW5hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWlu
YXRpb24uaAppbmRleCA3MmIwMDQ1MTMxNDJjOGY0ZTk1ZGYyMjgxOGMzZGRjMTgwYWFlY2VkLi4w
ZDc0YjE2ZTU5MjU5OGFiODNiMGM4YzBlYjU0YjQ0NmRmZDM4ZDMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBjbGFzcyBTdWRkZW5UZXJtaW5hdGlvbkRpc2Fi
bGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIpOwogICAgIHB1YmxpYzoKICAg
ICAgICAgU3VkZGVuVGVybWluYXRpb25EaXNhYmxlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IGEyODAxMGVjZmU1YTM2N2FkOWQwYjI5YTIw
MDU2M2EwZjU2MWQ1NjAuLjI3YTczNjQxNmJhMDRjMDUzYzJlNzdkYjJjNTU4MTQ0NDBkMmYwZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCkBAIC00
MCwxNCArNDAsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGhyZWFkR2xvYmFsRGF0YTo6
VGhyZWFkR2xvYmFsRGF0YSgpCi0gICAgOiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQor
ICAgIDogbV9jYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKG1ha2VVbmlxdWU8Q2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKICAgICAsIG1fZXZlbnROYW1lcyhFdmVudE5h
bWVzOjpjcmVhdGUoKSkKLSAgICAsIG1fdGhyZWFkVGltZXJzKHN0ZDo6bWFrZV91bmlxdWU8VGhy
ZWFkVGltZXJzPigpKQotICAgICwgbV9xdWFsaWZpZWROYW1lQ2FjaGUoc3RkOjptYWtlX3VuaXF1
ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCisgICAgLCBtX3RocmVhZFRpbWVycyhtYWtlVW5pcXVl
PFRocmVhZFRpbWVycz4oKSkKKyAgICAsIG1fcXVhbGlmaWVkTmFtZUNhY2hlKG1ha2VVbmlxdWU8
UXVhbGlmaWVkTmFtZUNhY2hlPigpKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1faXNNYWluVGhy
ZWFkKGlzTWFpblRocmVhZCgpKQogI2VuZGlmCi0gICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShz
dGQ6Om1ha2VfdW5pcXVlPElDVUNvbnZlcnRlcldyYXBwZXI+KCkpCisgICAgLCBtX2NhY2hlZENv
bnZlcnRlcklDVShtYWtlVW5pcXVlPElDVUNvbnZlcnRlcldyYXBwZXI+KCkpCiB7CiAgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciB3aWxsIGhhdmUgYmVlbiBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
IGJlZm9yZSBiZWluZyBjYWxsZWQgb24KICAgICAvLyBhbnkgb3RoZXIgdGhyZWFkLCBhbmQgaXMg
b25seSBjYWxsZWQgb25jZSBwZXIgdGhyZWFkIC0gdGhpcyBtYWtlcyB0aGlzIGEgY29udmVuaWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCmluZGV4IDJmODky
ZDZiMTlhYmE0MjMwZTkyNGM3NjE4NzM4ZmM2Y2I0OGY3ZWMuLmU3MGQ0NmQwYjlmMjQwN2Y5MDg1
NDhmYThmMmU5OGM5ZGE0NTYzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQnVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0J1cy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgQXVkaW9CdXM6OkF1ZGlvQnVzKHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBsZW5ndGgsIGJvb2wgYWxsb2NhdGUpCiAgICAgbV9j
aGFubmVscy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewotICAgICAg
ICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVs
PihsZW5ndGgpIDogc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0
aCk7CisgICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8gbWFrZVVuaXF1ZTxBdWRpb0No
YW5uZWw+KGxlbmd0aCkgOiBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obnVsbHB0ciwgbGVuZ3Ro
KTsKICAgICAgICAgbV9jaGFubmVscy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShjaGFubmVsKSk7
CiAgICAgfQogCkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBBdWRpb0J1czo6Y29weVdpdGhHYWlu
RnJvbShjb25zdCBBdWRpb0J1cyAmc291cmNlQnVzLCBmbG9hdCogbGFzdE1peEdhaW4sIGYKIAog
ICAgIGlmIChmcmFtZXNUb0RlemlwcGVyKSB7CiAgICAgICAgIGlmICghbV9kZXppcHBlckdhaW5W
YWx1ZXMuZ2V0KCkgfHwgbV9kZXppcHBlckdhaW5WYWx1ZXMtPnNpemUoKSA8IGZyYW1lc1RvRGV6
aXBwZXIpCi0gICAgICAgICAgICBtX2RlemlwcGVyR2FpblZhbHVlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0RlemlwcGVyKTsKKyAgICAgICAgICAgIG1fZGV6
aXBwZXJHYWluVmFsdWVzID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6
aXBwZXIpOwogCiAgICAgICAgIGZsb2F0KiBnYWluVmFsdWVzID0gbV9kZXppcHBlckdhaW5WYWx1
ZXMtPmRhdGEoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lc1RvRGV6
aXBwZXI7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9CdXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKaW5k
ZXggMjE3M2RjOTM4M2U0YTMzYzFiNTkzNDc2NWExZTViMTA3NDZmMDNhMS4uYmJiM2QyYWNkMjJj
NTcyYmM5MjNhNDhiMWY3MGFmODU0YzBjYjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IEFuIEF1ZGlvQnVzIHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIG9uZSBvciBtb3JlIEF1ZGlv
Q2hhbm5lbHMuCiAvLyBUaGUgZGF0YSBsYXlvdXQgaXMgInBsYW5hciIgYXMgb3Bwb3NlZCB0byAi
aW50ZXJsZWF2ZWQiLgogLy8gQW4gQXVkaW9CdXMgd2l0aCBvbmUgY2hhbm5lbCBpcyBtb25vLCBh
biBBdWRpb0J1cyB3aXRoIHR3byBjaGFubmVscyBpcyBzdGVyZW8sIGV0Yy4KLWNsYXNzIEF1ZGlv
QnVzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQnVzPiB7CitjbGFzcyBBdWRp
b0J1cyBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0J1cz4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvQnVzKTsKIHB1YmxpYzoKICAgICBlbnVtIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKaW5kZXggYmJjMTM1
N2EzZDUzZjA1NDhmODg3OGU1ODdkYjdkNmRkMWM0ZmFkOC4uN2I5ODkzZDM4YWM0MTc0NTMxNzQx
Yjc3MjRjNmZmMmFiZDAxZGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9DaGFubmVsLmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAv
LyBBbiBBdWRpb0NoYW5uZWwgcmVwcmVzZW50cyBhIGJ1ZmZlciBvZiBub24taW50ZXJsZWF2ZWQg
ZmxvYXRpbmctcG9pbnQgYXVkaW8gc2FtcGxlcy4KIC8vIFRoZSBQQ00gc2FtcGxlcyBhcmUgbm9y
bWFsbHkgYXNzdW1lZCB0byBiZSBpbiBhIG5vbWluYWwgcmFuZ2UgLTEuMCAtPiArMS4wCi1jbGFz
cyBBdWRpb0NoYW5uZWwgeworY2xhc3MgQXVkaW9DaGFubmVsIGZpbmFsIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb0NoYW5uZWwp
OwogcHVibGljOgogICAgIC8vIE1lbW9yeSBjYW4gYmUgZXh0ZXJuYWxseSByZWZlcmVuY2VkLCBv
ciBjYW4gYmUgaW50ZXJuYWxseSBhbGxvY2F0ZWQgd2l0aCBhbiBBdWRpb0Zsb2F0QXJyYXkuCkBA
IC01Niw3ICs1Nyw3IEBAIGNsYXNzIEF1ZGlvQ2hhbm5lbCB7CiAgICAgICAgICwgbV9yYXdQb2lu
dGVyKDApCiAgICAgICAgICwgbV9zaWxlbnQodHJ1ZSkKICAgICB7Ci0gICAgICAgIG1fbWVtQnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CisgICAgICAg
IG1fbWVtQnVmZmVyID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CiAgICAg
fQogCiAgICAgLy8gQSAiYmxhbmsiIGF1ZGlvIGNoYW5uZWwgLS0gbXVzdCBjYWxsIHNldCgpIGJl
Zm9yZSBpdCdzIHVzZWZ1bC4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9GSUZPLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJ
Rk8uaAppbmRleCA3NWM5YWJkNzQ5NGQzNTgyMmY4MmFjZTdjY2QwZDg1Njg2MTFkN2VhLi4wZjQz
OGRkN2QwZmE1OWZiNjQ0ZDRkZjU3MmY1NTlmZDY2MzA4YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaApAQCAtMzMsNyArMzMsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvRklGTyB7CitjbGFzcyBBdWRpb0ZJRk8gZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhIEZJ
Rk8gbGFyZ2UgZW5vdWdoIHRvIGhvbGQgfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxu
dW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4KICAgICBBdWRpb0ZJRk8odW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IGZpZm9MZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9QdWxsRklGTy5oCmluZGV4IGJmYmU5ODNhNTc1YTQ1NGFhYzJiMGMzY2Jl
NDU3NWVmYWY2Yjc4ZDcuLmQ3NDhmYTQxMzg3Mzc5ZGIzOTViZWFlNjVmODgyYmEyNThlOWZjMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHVsbEZJRk8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKQEAg
LTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gdGhlIEZJRk8gd2lsbCBhc2sg
dGhlIHByb3ZpZGVyIGZvciBtb3JlIGRhdGEgd2hlbiBuZWNlc3NhcnkgdG8gZnVsZmlsbCBhIHJl
cXVlc3QuIENvbnRyYXN0IHRoaXMKIC8vIHdpdGggYSAicHVzaCIgRklGTywgd2hlcmUgdGhlIHNl
bmRlciBwdXNoZXMgZGF0YSB0byB0aGUgRklGTyB3aGljaCB3aWxsIGl0c2VsZiBwdXNoIHRoZSBk
YXRhIHRvCiAvLyB0aGUgcmVjZWl2ZXIgd2hlbiB0aGUgRklGTyBpcyBmdWxsLgotY2xhc3MgQXVk
aW9QdWxsRklGTyB7CitjbGFzcyBBdWRpb1B1bGxGSUZPIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBGSUZPIHRoYXQgZ2V0cyBk
YXRhIGZyb20gfHByb3ZpZGVyfC4gVGhlIEZJRk8gd2lsbCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9s
ZAogICAgIC8vIHxmaWZvTGVuZ3RofCBmcmFtZXMgb2YgZGF0YSBvZiB8bnVtYmVyT2ZDaGFubmVs
c3wgY2hhbm5lbHMuIFRoZSBBdWRpb1NvdXJjZVByb3ZpZGVyIHdpbGwgYmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAppbmRleCA4NjkwNmJh
NTEyNDc1ODY5MmM2ODNlMmJjOTAzODM1MDFlYWI4ZmQ5Li4yODRjMDU0OTQzMjU5MzQ0ZWFjZTMy
NDE4YWRhOWI4MzAzZGEyZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIGNvbnN0IGRvdWJsZSBBdWRp
b1Jlc2FtcGxlcjo6TWF4UmF0ZSA9IDguMDsKIEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxl
cigpCiAgICAgOiBtX3JhdGUoMS4wKQogewotICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOworICAgIG1fa2VybmVscy5hcHBl
bmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwogICAgIG1fc291cmNl
QnVzID0gQXVkaW9CdXM6OmNyZWF0ZSgxLCAwLCBmYWxzZSk7CiB9CiAKQEAgLTQ3LDcgKzQ3LDcg
QEAgQXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMpCiAgICAgOiBtX3JhdGUoMS4wKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOworICAgICAgICBtX2tlcm5lbHMu
YXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKIAogICAgIG1f
c291cmNlQnVzID0gQXVkaW9CdXM6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCAwLCBmYWxzZSk7
CiB9CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgQXVkaW9SZXNhbXBsZXI6OmNvbmZpZ3VyZUNoYW5u
ZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLy8gRmlyc3QgZGVhbCB3aXRoIGFk
ZGluZyBvciByZW1vdmluZyBrZXJuZWxzLgogICAgIGlmIChudW1iZXJPZkNoYW5uZWxzID4gY3Vy
cmVudFNpemUpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY3VycmVudFNpemU7IGkgPCBu
dW1iZXJPZkNoYW5uZWxzOyArK2kpCi0gICAgICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICAgICAgICAgIG1f
a2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jlc2FtcGxlcktlcm5lbD4odGhpcykpOwog
ICAgIH0gZWxzZQogICAgICAgICBtX2tlcm5lbHMucmVzaXplKG51bWJlck9mQ2hhbm5lbHMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaAppbmRl
eCBkMTFmYTkzZWJhYWNiZDhlNTZiOThkYTMzNzVmYWUxNDA2OGUzYmM5Li4yMDE2YmFmZjdjODhk
ZjE4YWY1ZDM1MmMzMDFmNWZmNDM3Njg5ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogLy8gVGhlIGF1ZGlvIHN0cmVhbSBtYXkgYmUgc2luZ2xlIG9yIG11bHRpLWNoYW5u
ZWwuCiAvLyBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBkZWZhdWx0cyB0byBzaW5nbGUtY2hhbm5l
bCAobW9ubykuCiAKLWNsYXNzIEF1ZGlvUmVzYW1wbGVyIHsKK2NsYXNzIEF1ZGlvUmVzYW1wbGVy
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBdWRp
b1Jlc2FtcGxlcigpOwogICAgIEF1ZGlvUmVzYW1wbGVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNh
bXBsZXJLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1w
bGVyS2VybmVsLmgKaW5kZXggOTlkODc3YmI3Y2Q2OGRiYjA1MzY3N2EwOTdjZDRlMGVhYzgzYjc4
Mi4uOGFjMmJhYTQyYzU4N2EzNDg1ZDUzNDAyM2FkZWUyNGY4ODMyNmVmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oCkBA
IC0zNCw3ICszNCw5IEBAIGNsYXNzIEF1ZGlvUmVzYW1wbGVyOwogLy8gQXVkaW9SZXNhbXBsZXJL
ZXJuZWwgZG9lcyByZXNhbXBsaW5nIG9uIGEgc2luZ2xlIG1vbm8gY2hhbm5lbC4KIC8vIEl0IHVz
ZXMgYSBzaW1wbGUgbGluZWFyIGludGVycG9sYXRpb24gZm9yIGdvb2QgcGVyZm9ybWFuY2UuCiAK
LWNsYXNzIEF1ZGlvUmVzYW1wbGVyS2VybmVsIHsKK2NsYXNzIEF1ZGlvUmVzYW1wbGVyS2VybmVs
IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBdWRpb1Jlc2FtcGxlcktlcm5lbCk7CiBwdWJsaWM6CiAgICAgQXVkaW9SZXNhbXBs
ZXJLZXJuZWwoQXVkaW9SZXNhbXBsZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKaW5kZXggNWMxYmYyYTMxNzM0MmVhM2U1MjkyYTc5N2U4
ZTY2ZTFhOGRhMzk3Yy4uYjVmYjU4MDY0OGY5Y2Y4ZWM0ZjE4NmZhZmE0OGUxM2ZkY2YyZjU3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCkBA
IC01MCw2ICs1MCw3IEBAIGJvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZShib29sIGFj
dGl2ZSkKIAogI2lmICFQTEFURk9STShDT0NPQSkKIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogfTsKIAogQXVkaW9TZXNzaW9uOjpBdWRp
b1Nlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24u
aAppbmRleCAxN2RhODFiM2I3NWQ3YTVhYWI4MjE0ODZiN2MxZTMzZjFhOGRmNDY5Li5lNzAwODIy
ZmYxZmVlYmQ3ODI5YWVjNzUwY2NlNDBhNjBiOTI1NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNDQsNyArNDQsOCBAQCBlbnVtIGNsYXNz
IFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3QgewogICAgIExvbmdGb3JtVmlkZW8KIH07CiAK
LWNsYXNzIEF1ZGlvU2Vzc2lvbiB7CitjbGFzcyBBdWRpb1Nlc3Npb24gZmluYWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvU2Vz
c2lvbik7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEF1ZGlvU2Vzc2lvbiYg
c2hhcmVkU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQmlxdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9CaXF1YWQuaAppbmRl
eCBiYjcyMWEyM2E3ZmNjNzc0YjYwOTNlNGVhOTA4YzYwZTg5MDgxMDdjLi43MTM0OTRjOTE0ZDMz
Nzg2NDNlMjlhODBiYzM5ZTc3MzY2ZGYxODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9CaXF1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9CaXF1YWQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyAgICBs
b3dwYXNzLCBoaWdocGFzcywgc2hlbHZpbmcsIHBhcmFtZXRlcmljLCBub3RjaCwgYWxscGFzcywg
Li4uCiAKIGNsYXNzIEJpcXVhZCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6ICAgCiAgICAgQmlxdWFkKCk7CiAgICAgfkJpcXVhZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQ29uZS5oCmluZGV4IGQ4MWMwNWRjNjhlNmUyZmEyMWQyNDVkZDEzN2I0ZjE3
OGEyMTIwYjQuLmE3YWNhM2E0YzU0ZDI3NGIzYWEzZDQwYWQ5ZDE0M2ViZGZjNDVmY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKQEAgLTM1LDcgKzM1LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAvLyBDb25lIGdhaW4gaXMgZGVmaW5lZCBhY2NvcmRpbmcgdG8gdGhlIE9w
ZW5BTCBzcGVjaWZpY2F0aW9uCiAKLWNsYXNzIENvbmVFZmZlY3QgeworY2xhc3MgQ29uZUVmZmVj
dCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29u
ZUVmZmVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
ZW5vcm1hbERpc2FibGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1h
bERpc2FibGVyLmgKaW5kZXggNmU5ZjRlMDFkYWU2ZDQ1ZDAyMTExZDVkNWIxMjhlZjM4ODZiMjI0
Mi4uZTBiM2VmZDgwZjc4ZmZhYTMwNjU3MzMyMzE0NzAyZGM3M2EyZjAwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3JtYWxEaXNhYmxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaApAQCAtNDEsNyAr
NDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfREVOT1JN
QUwKLWNsYXNzIERlbm9ybWFsRGlzYWJsZXIgeworY2xhc3MgRGVub3JtYWxEaXNhYmxlciBmaW5h
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVub3JtYWxE
aXNhYmxlcigpCiAgICAgICAgICAgICA6IG1fc2F2ZWRDU1IoMCkKQEAgLTEwMyw3ICsxMDQsOCBA
QCBjbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKIAogI2Vsc2UKIC8vIEZJWE1FOiBhZGQgaW1wbGVt
ZW50YXRpb25zIGZvciBvdGhlciBhcmNoaXRlY3R1cmVzIGFuZCBjb21waWxlcnMKLWNsYXNzIERl
bm9ybWFsRGlzYWJsZXIgeworY2xhc3MgRGVub3JtYWxEaXNhYmxlciBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRGVub3JtYWxEaXNhYmxlcigpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5o
CmluZGV4IDZmMmZhZjQwZTYxYmY2ZTMyYTRmNDk5OTc2NWM5ZTFiYjUxOTQxYTguLjVjOGQ4NjZj
MTY1NWNjMzkxYTgyNWQzYjIzNzg4YmY0MGM3ODlhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oCkBAIC0zMCwxMCArMzAsMTMgQEAKICNk
ZWZpbmUgRGlyZWN0Q29udm9sdmVyX2gKIAogI2luY2x1ZGUgIkF1ZGlvQXJyYXkuaCIKKyNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBE
aXJlY3RDb252b2x2ZXIgeworY2xhc3MgRGlyZWN0Q29udm9sdmVyIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXJlY3RDb252
b2x2ZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IERpcmVjdENvbnZvbHZlcihzaXplX3QgaW5w
dXRCbG9ja1NpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EaXN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaApp
bmRleCA5MWQzNDliOTdlNjI3NzMzMmQ3NjMxYTg4NDQyNmIxNjY4ZGNmMjgzLi5iM2ViNzc5NzNj
ZmE0Nzk1ZjE1MDUzNjliN2U0YjJmODlmZmI2YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0Rpc3RhbmNlLmgKQEAgLTQwLDcgKzQwLDggQEAgZW51bSBjbGFzcyBEaXN0YW5jZU1v
ZGVsVHlwZSB7CiAgICAgRXhwb25lbnRpYWwKIH07CiAKLWNsYXNzIERpc3RhbmNlRWZmZWN0IHsK
K2NsYXNzIERpc3RhbmNlRWZmZWN0IGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBEaXN0YW5jZUVmZmVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaAppbmRleCBmNGI0MjAxN2VlNzYyN2NhZDY1NmJmZjQ1
N2FhZTk4OTQ4MDE0YmYyLi45NTcwYjg5MWM5N2ZmYTkxMWEwMTEzNDAwM2I0ZmRjYjVmNzZmOTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBEb3duU2FtcGxlciBkb3duLXNh
bXBsZXMgdGhlIHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCiAKLWNsYXNzIERvd25T
YW1wbGVyIHsKK2NsYXNzIERvd25TYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEb3duU2FtcGxlcihzaXplX3QgaW5wdXRC
bG9ja1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5jcHAKaW5kZXggYjI1NTE4ZDg4MGE4ZDJkOTk0YTc2OTZiOGZhZGE5ZTU1
NDhjMjllYi4uNTEzNzk5YTg1MTJmNDI3YjRlNGI4ZDliMjk0NWE5NGQzNDkxODc3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
Y3BwCkBAIC0yNzEsOCArMjcxLDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJl
ck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICBtX3ByZUZpbHRlclBh
Y2tzLmNsZWFyKCk7CiAgICAgbV9wb3N0RmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIG1fcHJl
RmlsdGVyUGFja3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4o
KSk7Ci0gICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFpl
cm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZCht
YWtlVW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBtX3Bvc3RGaWx0ZXJQ
YWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAgICB9CiAK
ICAgICBtX3NvdXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVt
YmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5oCmluZGV4IGVmOGMwOTNhMWI5NjUzMjI5ZDc5OWYxYTZiMjkyYWZh
ZGJkYWJhZDEuLjgyMmM5MzFmMzhjZTBlYzhkYzYyODJmMGY4YzM0M2FmNjc3Zjk4NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5o
CkBAIC00Myw4ICs0Myw5IEBAIGNsYXNzIEF1ZGlvQnVzOwogLy8gb2YgdGhlIGxvdWRlc3QgcGFy
dHMgb2YgdGhlIHNpZ25hbCBhbmQgcmFpc2VzIHRoZSB2b2x1bWUgb2YgdGhlIHNvZnRlc3QgcGFy
dHMsCiAvLyBtYWtpbmcgdGhlIHNvdW5kIHJpY2hlciwgZnVsbGVyLCBhbmQgbW9yZSBjb250cm9s
bGVkLgogCi1jbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgeworY2xhc3MgRHluYW1pY3NDb21wcmVz
c29yIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEeW5hbWljc0NvbXByZXNzb3IpOwogcHVibGljOgogICAgIGVudW0gewogICAg
ICAgICBQYXJhbVRocmVzaG9sZCwKQEAgLTk1LDkgKzk2LDEwIEBAIGNsYXNzIER5bmFtaWNzQ29t
cHJlc3NvciB7CiAgICAgZmxvYXQgbV9sYXN0QW5jaG9yOwogICAgIGZsb2F0IG1fbGFzdEZpbHRl
clN0YWdlR2FpbjsKIAotICAgIHR5cGVkZWYgc3RydWN0IHsKKyAgICBzdHJ1Y3QgWmVyb1BvbGVG
aWx0ZXJQYWNrNCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgWmVyb1BvbGUgZmlsdGVyc1s0XTsKLSAgICB9IFplcm9Qb2xlRmlsdGVyUGFjazQ7Cisg
ICAgfTsKIAogICAgIC8vIFBlci1jaGFubmVsIGVtcGhhc2lzIGZpbHRlcnMuCiAgICAgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4gbV9wcmVGaWx0ZXJQYWNrczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWwuY3BwCmluZGV4IDczNGIwNjZjZGE0OGJjMmM3YTc5ZWRmNTA3ZDA2YzA1
NmM3MGEwOTAuLmFmZWRiN2I0Y2QwYTVhNjFkMWE5ZmUyNzhjMzQwMzgzZjk4ZTIxYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yS2VybmVsLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbDo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQog
CiAgICAgbV9wcmVEZWxheUJ1ZmZlcnMuY2xlYXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICBtX3ByZURlbGF5QnVmZmVycy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVz
KSk7CisgICAgICAgIG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKIH0KIAogdm9pZCBEeW5hbWljc0NvbXByZXNz
b3JLZXJuZWw6OnNldFByZURlbGF5VGltZShmbG9hdCBwcmVEZWxheVRpbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bC5oCmluZGV4IGI3YmNlYTJmYWZkODk5NmNhNTI4YjBiNWRhYjQ5Y2I4ODk1OGRjYzQuLmUxMWY0
N2JhYWYwYmM2YzVkMGNhN2UzZDcyMDA4MjYzOWQyNzBjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oCkBA
IC0zNSw3ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRHluYW1pY3ND
b21wcmVzc29yS2VybmVsIHsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRHlu
YW1pY3NDb21wcmVzc29yS2VybmVsKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9F
cXVhbFBvd2VyUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBv
d2VyUGFubmVyLmgKaW5kZXggOGNmNTk5MTc5NWYzZjFmNjNlMjgxZDllMTZhY2FmM2Q3YTU3YTVk
YS4uNGU0NjNiMTI4MWE3ZmEzYmIzOTdhNmIwNjVjZTAzM2NjYmY5YWQyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaApAQCAtMzEsNyAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIENvbW1vbiB0eXBlIG9mIHN0ZXJlbyBw
YW5uZXIgYXMgZm91bmQgaW4gbm9ybWFsIGF1ZGlvIG1peGluZyBlcXVpcG1lbnQuCiAKLWNsYXNz
IEVxdWFsUG93ZXJQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKK2NsYXNzIEVxdWFsUG93ZXJQYW5u
ZXIgZmluYWwgOiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFcXVhbFBv
d2VyUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0ZGVENvbnZvbHZlci5oCmluZGV4IDQ1NDJiNmZiMjU3ODU0OTVhYjIwNmFiYzNjOTBj
NzViYzJmMTZlYTAuLjM4NjIyN2YxOTcwNGFmZDc5MmUzNjYyMmJkZGE5YzFhY2VhNzUxMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5oCkBAIC0zNCw3
ICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRkZUQ29udm9sdmVyIHsK
K2NsYXNzIEZGVENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRkZUQ29udm9sdmVyKTsKIHB1YmxpYzoKICAgICAv
LyBmZnRTaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28KICAgICBGRlRDb252b2x2ZXIoc2l6ZV90
IGZmdFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
RnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCmlu
ZGV4IDRjMDJiNjk5MmIwNjM4M2I4MDM1NzM3ODc4ZGJmNjVhMjZmYjljMzEuLjRjMTUyMDY3ZDQ0
YWM0Yjg1NDE5MjFhYWVkMjk1OTgyYjk2OTM3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBGRlRGcmFtZTo6ZG9Q
YWRkZWRGRlQoY29uc3QgZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIAogc3RkOjp1bmlx
dWVfcHRyPEZGVEZyYW1lPiBGRlRGcmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUoY29uc3Qg
RkZURnJhbWUmIGZyYW1lMSwgY29uc3QgRkZURnJhbWUmIGZyYW1lMiwgZG91YmxlIHgpCiB7Ci0g
ICAgYXV0byBuZXdGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZyYW1lMS5mZnRT
aXplKCkpOworICAgIGF1dG8gbmV3RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmcmFtZTEu
ZmZ0U2l6ZSgpKTsKIAogICAgIG5ld0ZyYW1lLT5pbnRlcnBvbGF0ZUZyZXF1ZW5jeUNvbXBvbmVu
dHMoZnJhbWUxLCBmcmFtZTIsIHgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZEYXRhYmFzZS5oCmluZGV4IDc1N2JjZmE0YjZhZWZkNzBlYmFlODY1NDg3MjVmYTQwNjI5
YzZlOWUuLmE1MTkzNDk4MTUwNDUyNmQ2ZmM2NGQ0NWI5NzkwYjM3ODEwM2E0NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5oCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJURktlcm5lbDsKIAotY2xhc3MgSFJU
RkRhdGFiYXNlIHsKK2NsYXNzIEhSVEZEYXRhYmFzZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkRhdGFiYXNlKTsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2VMb2FkZXIuY3BwCmluZGV4IGY0NWJlODQ3Y2U3MTBkY2VkYTJlMGVjMTA2Yjc1YmYyNjg1Nzg5
Y2QuLmE0NzRhNzBjNDA4NTJhZTJlMWY5ZjU4YTQ5YTAwMDM2MTU4MGIzMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcApA
QCAtODUsNyArODUsNyBAQCB2b2lkIEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZCgpCiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX2hydGZEYXRhYmFzZS5nZXQoKSkgewog
ICAgICAgICAvLyBMb2FkIHRoZSBkZWZhdWx0IEhSVEYgZGF0YWJhc2UuCi0gICAgICAgIG1faHJ0
ZkRhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRGF0YWJhc2U+KG1fZGF0YWJhc2VTYW1w
bGVSYXRlKTsKKyAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBtYWtlVW5pcXVlPEhSVEZEYXRhYmFz
ZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAppbmRleCBjODRhYjk3NTFhMTQ1OTg5
YTAzNzdmYWQxZjRhNzVlOGYxN2UyYjI0Li42MDUyMzJjZDFhOTljOTIzM2Q5YWQxMDQ5YmEzMDdl
MjE3NzM4ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RWxldmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcApAQCAtMjQ0LDggKzI0NCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0
aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViCiAg
ICAgaWYgKCFpc0VsZXZhdGlvbkdvb2QpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAKLSAgICBhdXRvIGtlcm5lbExpc3RMID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlz
dD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKLSAgICBhdXRvIGtlcm5lbExpc3RSID0gc3RkOjpt
YWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBh
dXRvIGtlcm5lbExpc3RMID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3Rh
bEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RSID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVs
TGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKIAogICAgIC8vIExvYWQgY29udm9sdXRpb24g
a2VybmVscyBmcm9tIEhSVEYgZmlsZXMuCiAgICAgaW50IGludGVycG9sYXRlZEluZGV4ID0gMDsK
QEAgLTI3NCw3ICsyNzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVs
ZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1YgogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+KFdU
Rk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgZWxldmF0aW9uLCBzYW1w
bGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtl
cm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVh
dGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjEsIEhS
VEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24yLCBmbG9hdCB4LCBmbG9hdCBzYW1wbGVSYXRlKQpA
QCAtMjg1LDggKzI4NSw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxl
dmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgICAgIAogICAg
IEFTU0VSVCh4ID49IDAuMCAmJiB4IDwgMS4wKTsKICAgICAKLSAgICBhdXRvIGtlcm5lbExpc3RM
ID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhz
KTsKLSAgICBhdXRvIGtlcm5lbExpc3RSID0gc3RkOjptYWtlX3VuaXF1ZTxIUlRGS2VybmVsTGlz
dD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtlcm5lbExpc3RMID0gbWFrZVVu
aXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11dGhzKTsKKyAgICBhdXRvIGtl
cm5lbExpc3RSID0gbWFrZVVuaXF1ZTxIUlRGS2VybmVsTGlzdD4oTnVtYmVyT2ZUb3RhbEF6aW11
dGhzKTsKIAogICAgIEhSVEZLZXJuZWxMaXN0KiBrZXJuZWxMaXN0TDEgPSBocnRmRWxldmF0aW9u
MS0+a2VybmVsTGlzdEwoKTsKICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdFIxID0gaHJ0
ZkVsZXZhdGlvbjEtPmtlcm5lbExpc3RSKCk7CkBAIC0zMDIsNyArMzAyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGlu
Z1NsaWNlcyhIUlRGRWwKICAgICAvLyBJbnRlcnBvbGF0ZSBlbGV2YXRpb24gYW5nbGUuCiAgICAg
ZG91YmxlIGFuZ2xlID0gKDEuMCAtIHgpICogaHJ0ZkVsZXZhdGlvbjEtPmVsZXZhdGlvbkFuZ2xl
KCkgKyB4ICogaHJ0ZkVsZXZhdGlvbjItPmVsZXZhdGlvbkFuZ2xlKCk7CiAgICAgCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCks
IFdURk1vdmUoa2VybmVsTGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xlKSwgc2FtcGxlUmF0
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxM
aXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBzdGF0aWNfY2FzdDxpbnQ+KGFuZ2xlKSwgc2Ft
cGxlUmF0ZSk7CiB9CiAKIHZvaWQgSFJURkVsZXZhdGlvbjo6Z2V0S2VybmVsc0Zyb21BemltdXRo
KGRvdWJsZSBhemltdXRoQmxlbmQsIHVuc2lnbmVkIGF6aW11dGhJbmRleCwgSFJURktlcm5lbCog
Jmtlcm5lbEwsIEhSVEZLZXJuZWwqICZrZXJuZWxSLCBkb3VibGUmIGZyYW1lRGVsYXlMLCBkb3Vi
bGUmIGZyYW1lRGVsYXlSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURkVsZXZhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVs
ZXZhdGlvbi5oCmluZGV4IDJhOTU5MDQ1NTIxODQzYTE1MTYyZWNjOGUzMjExNzM5ZTA3MDUzZjcu
LmVmNzUyYzNjMDFiZTM5ZWNkYjdlZjY0ZGY0MzkwOTI2NmQ2ZWQ5NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKQEAgLTM5LDcgKzM5LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBIUlRGRWxldmF0aW9uIGNvbnRhaW5zIGFsbCBvZiB0
aGUgSFJURktlcm5lbHMgKG9uZSBsZWZ0IGVhciBhbmQgb25lIHJpZ2h0IGVhciBwZXIgYXppbXV0
aCBhbmdsZSkgZm9yIGEgcGFydGljdWxhciBlbGV2YXRpb24uCiAKLWNsYXNzIEhSVEZFbGV2YXRp
b24geworY2xhc3MgSFJURkVsZXZhdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFJURkVsZXZhdGlvbik7CiBwdWJsaWM6
CiAgICAgSFJURkVsZXZhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtlcm5l
bExpc3RMLCBzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RSLCBpbnQg
ZWxldmF0aW9uLCBmbG9hdCBzYW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGS2VybmVsLmNwcAppbmRleCBlZGY2YzYwZDBkYjgxNGQ5NGMwZjcxYjYzMDZlNDM4
MjY1M2FhNGM3Li4zNzU1MjE2YWUyODdhNzFjNzQyOTI5YTUzYzk1OTA5NmRiMWRiYjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcApAQCAtOTIsNyAr
OTIsNyBAQCBIUlRGS2VybmVsOjpIUlRGS2VybmVsKEF1ZGlvQ2hhbm5lbCogY2hhbm5lbCwgc2l6
ZV90IGZmdFNpemUsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBt
X2ZmdEZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oZmZ0U2l6ZSk7CisgICAgbV9m
ZnRGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOwogICAgIG1fZmZ0RnJhbWUt
PmRvUGFkZGVkRkZUKGltcHVsc2VSZXNwb25zZSwgdHJ1bmNhdGVkUmVzcG9uc2VMZW5ndGgpOwog
fQogCkBAIC0xMDMsNyArMTAzLDcgQEAgc2l6ZV90IEhSVEZLZXJuZWw6OmZmdFNpemUoKSBjb25z
dAogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9DaGFubmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJbXB1
bHNlUmVzcG9uc2UoKQogewotICAgIGF1dG8gY2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9DaGFubmVsPihmZnRTaXplKCkpOworICAgIGF1dG8gY2hhbm5lbCA9IG1ha2VVbmlxdWU8QXVk
aW9DaGFubmVsPihmZnRTaXplKCkpOwogICAgIEZGVEZyYW1lIGZmdEZyYW1lKCptX2ZmdEZyYW1l
KTsKIAogICAgIC8vIEFkZCBsZWFkaW5nIGRlbGF5IGJhY2sgaW4uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmgKaW5kZXggYmY1ZWVmYWE1ZTRjNmQyYmYxN2E5OTAw
MzA3NDE2NWM2ZTQzM2FkNy4uY2FhYTQ0MWYxZDE0ZWEzNmY1ZTk2OGFkOGE3N2QwYjdhNjBkZDk5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaApAQCAtMzIs
NyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhSVEZQYW5uZXIgOiBw
dWJsaWMgUGFubmVyIHsKK2NsYXNzIEhSVEZQYW5uZXIgZmluYWwgOiBwdWJsaWMgUGFubmVyIHsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBIUlRGUGFubmVyKGZsb2F0IHNhbXBsZVJhdGUsIEhSVEZE
YXRhYmFzZUxvYWRlciopOwogICAgIHZpcnR1YWwgfkhSVEZQYW5uZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3Bw
CmluZGV4IGJiYmYxNjQ0NjIwNzYzOWUzNWNmNzk1NjQ4MjgyNjNkM2U5MzczYWUuLjViZjlhYjk1
ZDAxNTc1MDA4MTVkNjEzMWFiMWQ4OTc0MWJlMWZlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcApAQCAtOTcs
NyArOTcsNyBAQCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcihk
b3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlcgogewogICAgIC8vIENyZWF0ZSBlYWNo
IGNoYW5uZWwncyByZXNhbXBsZXIuCiAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAw
OyBjaGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkKLSAgICAg
ICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxl
RmFjdG9yKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxTaW5jUmVzYW1w
bGVyPihzY2FsZUZhY3RvcikpOwogfQogCiB2b2lkIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjo6cHJv
Y2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92aWRlciwgQXVkaW9CdXMqIGRlc3RpbmF0aW9u
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAppbmRleCA0NDE3NTQ3NjA1ODNkMjgw
MzRhNDViM2JkOGE2MTg4ZDQ2NWEyZjM2Li42MTQ2ZTkyNWMwNmEyZGRhNzZjYjQxMmYwY2MxZTBh
MjQ2YWM4MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0
aUNoYW5uZWxSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
dWx0aUNoYW5uZWxSZXNhbXBsZXIuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEF1ZGlvQnVzOwogICAgIAotY2xhc3MgTXVsdGlDaGFubmVsUmVzYW1wbGVy
IHsKK2NsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgCiAgICAgZXhwbGljaXQgTXVsdGlDaGFubmVsUmVzYW1w
bGVyKGRvdWJsZSBzY2FsZUZhY3RvciwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAppbmRleCBhYzcyODZhYzlhMDYwYjc1
MzRjYjJlZGU5MjFkNmNiZDc3YTk3YTg4Li40MGI5ZDAxZGMxODRiOTZkNWRmM2FiOWI3ZjQwOTQ2
M2E5NzgzNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5u
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKQEAg
LTQzLDExICs0MywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVyPiBQYW5uZXI6OmNyZWF0ZShQ
YW5uaW5nTW9kZWxUeXBlIG1vZGVsLCBmbG9hdCBzYW1wbGVSYXRlLAogCiAgICAgc3dpdGNoICht
b2RlbCkgewogICAgIGNhc2UgUGFubmluZ01vZGVsVHlwZTo6RXF1YWxwb3dlcjoKLSAgICAgICAg
cGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxFcXVhbFBvd2VyUGFubmVyPihzYW1wbGVSYXRlKTsK
KyAgICAgICAgcGFubmVyID0gbWFrZVVuaXF1ZTxFcXVhbFBvd2VyUGFubmVyPihzYW1wbGVSYXRl
KTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFBhbm5pbmdNb2RlbFR5cGU6OkhSVEY6Ci0g
ICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURlBhbm5lcj4oc2FtcGxlUmF0ZSwg
ZGF0YWJhc2VMb2FkZXIpOworICAgICAgICBwYW5uZXIgPSBtYWtlVW5pcXVlPEhSVEZQYW5uZXI+
KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1BdWRpb0RhdGEuaApp
bmRleCBjZGE3MmU4YWIzYzRjZGMwYTg2OGZhYWM0ZjA1Y2U2MWM0NDQwMmQwLi40NjM1YTY3MzNl
Y2MzZjNhMDc1MDJmYzdhNzUwMTczZTMzZTExZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmgKQEAgLTI4LDYgKzI4LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGEgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3JtQXVkaW9E
YXRhKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggZTAyMzk0YWE1YjE0OWNkMTU5Njkx
MmEyNTY4MWZmNWVhNDRhZDhkMi4uYzhiZDY0YTQxYmY2MTJlODllM2MyMTRmYTIyZGNjNTk5NDhl
NTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFN0cmluZyBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1h
bmRUeXBlCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGll
bnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQp
OwogfQogCiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmIuY3BwCmluZGV4IDMwNDNmYzhhMDRkZjBkNzdjMTBhYTAzNzliZDI2YTM5ZDQ2Y2U2
YmEuLjhhNjc1NWM1NGFkMDBhM2E4MTAxODc0MjE2MmNjZDA3NGRlMTBlMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQg
UmV2ZXJiOjppbml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1bHNlUmVzcG9uc2VCdWZmZXIsIHNpemVf
dCByZW5kZXJTbGljZVNpemUsCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1SZXNwb25z
ZUNoYW5uZWxzOyArK2kpIHsKICAgICAgICAgQXVkaW9DaGFubmVsKiBjaGFubmVsID0gaW1wdWxz
ZVJlc3BvbnNlQnVmZmVyLT5jaGFubmVsKGkpOwogCi0gICAgICAgIG1fY29udm9sdmVycy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNl
U2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2UsIHVzZUJhY2tncm91bmRUaHJl
YWRzKSk7CisgICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQobWFrZVVuaXF1ZTxSZXZlcmJDb252
b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVu
ZGVyUGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7CiAKICAgICAgICAgY29udm9sdmVyUmVu
ZGVyUGhhc2UgKz0gcmVuZGVyU2xpY2VTaXplOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiLmgKaW5kZXggM2UyNTc2YjM1NzU3ZGJhMjQ3MGM4ZWI3ZGEzYzE3YmVlYmJm
ZGNlZC4uMjM0ZTMxZGFlYmJkNGRkYWEzNmExZTkwNTMxMWViOTkyMmZhYTY3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVk
aW9CdXM7CiAgICAgCiAvLyBNdWx0aS1jaGFubmVsIGNvbnZvbHV0aW9uIHJldmVyYiB3aXRoIGNo
YW5uZWwgbWF0cml4aW5nIC0gb25lIG9yIG1vcmUgUmV2ZXJiQ29udm9sdmVyIG9iamVjdHMgYXJl
IHVzZWQgaW50ZXJuYWxseS4KIAotY2xhc3MgUmV2ZXJiIHsKK2NsYXNzIFJldmVyYiBmaW5hbCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSB7IE1heEZy
YW1lU2l6ZSA9IDI1NiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaAppbmRleCA1MTJiNmFkZTM0MWEyODU2OTcy
ZWUzZjdiY2IyMTE2NmJiNzIxYTFmLi5hNjI4MzVmOWMwZDdkNzQzYzllOTI3Y2VkZTJkNmExZGE0
NTU4NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJB
Y2N1bXVsYXRpb25CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIgaXMgYSBjaXJjdWxhciBkZWxheSBi
dWZmZXIgd2l0aCBvbmUgY2xpZW50IHJlYWRpbmcgZnJvbSBpdCBhbmQgbXVsdGlwbGUgY2xpZW50
cwogLy8gd3JpdGluZy9hY2N1bXVsYXRpbmcgdG8gaXQgYXQgZGlmZmVyZW50IGRlbGF5IG9mZnNl
dHMgZnJvbSB0aGUgcmVhZCBwb3NpdGlvbi4gIFRoZSByZWFkIG9wZXJhdGlvbiB3aWxsIHplcm8g
dGhlIG1lbW9yeQogLy8ganVzdCByZWFkIGZyb20gdGhlIGJ1ZmZlciwgc28gaXQgd2lsbCBiZSBy
ZWFkeSBmb3IgYWNjdW11bGF0aW9uIHRoZSBuZXh0IHRpbWUgYXJvdW5kLgotY2xhc3MgUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyIHsKK2NsYXNzIFJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciBmaW5h
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyKHNpemVfdCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCAxNDVkZjgx
ZTJhNmJhMmMyZGFhOWJiNDFlNmI1Y2FiYWYzODVmOTFjLi5hOWM5MzVjMWEyODVhYjEzNjJkOGZm
MWRmOGNlYmE1YTdlNWFhNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgUmV2ZXJiQ29udm9sdmVy
OjpSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCBy
ZW5kZXJTbGkKIAogICAgICAgICBib29sIHVzZURpcmVjdENvbnZvbHZlciA9ICFzdGFnZU9mZnNl
dDsKIAotICAgICAgICBhdXRvIHN0YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2
ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5ndGgsIHJldmVyYlRvdGFsTGF0ZW5j
eSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2UsIHJlbmRlclNs
aWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1c2VEaXJlY3RDb252b2x2ZXIpOworICAg
ICAgICBhdXRvIHN0YWdlID0gbWFrZVVuaXF1ZTxSZXZlcmJDb252b2x2ZXJTdGFnZT4ocmVzcG9u
c2UsIHRvdGFsUmVzcG9uc2VMZW5ndGgsIHJldmVyYlRvdGFsTGF0ZW5jeSwgc3RhZ2VPZmZzZXQs
IHN0YWdlU2l6ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2UsIHJlbmRlclNsaWNlU2l6ZSwgJm1fYWNj
dW11bGF0aW9uQnVmZmVyLCB1c2VEaXJlY3RDb252b2x2ZXIpOwogCiAgICAgICAgIGJvb2wgaXNC
YWNrZ3JvdW5kU3RhZ2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXIuaAppbmRleCA1YjgxOWUxYTNlNmY0ZmIxZjhkYjBjNTk2OTcy
NjJhYWMwOWM2YmRlLi4zMjAwYjQ1ZWE4ZGY3YzIxY2U2ZmEzN2UwOGJiMjc5MWY4YWU1ZjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaApA
QCAtNDMsOCArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ2hhbm5l
bDsKIAotY2xhc3MgUmV2ZXJiQ29udm9sdmVyIHsKK2NsYXNzIFJldmVyYkNvbnZvbHZlciBmaW5h
bCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmV2ZXJiQ29udm9sdmVyKTsKIHB1YmxpYzoKICAgICAvLyBtYXhGRlRTaXplIGNhbiBiZSBh
ZGp1c3RlZCAoZnJvbSBzYXkgMjA0OCB0byAzMjc2OCkgZGVwZW5kaW5nIG9uIGhvdyBtdWNoIHBy
ZWNpc2lvbiBpcyBuZWNlc3NhcnkuCiAgICAgLy8gRm9yIGNlcnRhaW4gdHdlYWt5IGRlLWNvbnZv
bHZpbmcgYXBwbGljYXRpb25zIHRoZSBwaGFzZSBlcnJvcnMgYWRkIHVwIHF1aWNrbHkgYW5kIGxl
YWQgdG8gbm9uLXNlbnNpY2FsIHJlc3VsdHMgd2l0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCmluZGV4IDBmZGU0MjFh
ZjJmODJmZDQ4NzRkOTRmNmFmMWQ2MzQ3MjM5YzY1NmUuLjRmZjk1M2IyNjA0OTE3ZDM0NTIwMzk0
MDViNjVkZTJiZDVhMWVhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKQEAgLTU1LDE2ICs1NSwxNiBAQCBSZXZl
cmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UoY29uc3QgZmxvYXQqIGltcHVs
c2VSZXNwb25zZSwgc2l6ZV90LAogICAgIEFTU0VSVChhY2N1bXVsYXRpb25CdWZmZXIpOwogCiAg
ICAgaWYgKCFtX2RpcmVjdE1vZGUpIHsKLSAgICAgICAgbV9mZnRLZXJuZWwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKKyAgICAgICAgbV9mZnRLZXJuZWwgPSBtYWtlVW5p
cXVlPEZGVEZyYW1lPihmZnRTaXplKTsKICAgICAgICAgbV9mZnRLZXJuZWwtPmRvUGFkZGVkRkZU
KGltcHVsc2VSZXNwb25zZSArIHN0YWdlT2Zmc2V0LCBzdGFnZUxlbmd0aCk7Ci0gICAgICAgIG1f
ZmZ0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRDb252b2x2ZXI+KGZmdFNpemUpOwor
ICAgICAgICBtX2ZmdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RkZUQ29udm9sdmVyPihmZnRTaXpl
KTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIXN0YWdlT2Zmc2V0KTsKICAgICAgICAg
QVNTRVJUKHN0YWdlTGVuZ3RoIDw9IGZmdFNpemUgLyAyKTsKIAotICAgICAgICBtX2RpcmVjdEtl
cm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihmZnRTaXplIC8gMik7Cisg
ICAgICAgIG1fZGlyZWN0S2VybmVsID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZmdFNp
emUgLyAyKTsKICAgICAgICAgbV9kaXJlY3RLZXJuZWwtPmNvcHlUb1JhbmdlKGltcHVsc2VSZXNw
b25zZSwgMCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RGlyZWN0Q29udm9sdmVyPihyZW5kZXJTbGljZVNpemUpOworICAgICAgICBt
X2RpcmVjdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RGlyZWN0Q29udm9sdmVyPihyZW5kZXJTbGlj
ZVNpemUpOwogICAgIH0KICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hbGxvY2F0ZShyZW5kZXJTbGlj
ZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXJTdGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
Q29udm9sdmVyU3RhZ2UuaAppbmRleCBhMDQ5MDk3MDM0MGFiM2IzMzYwMGIwODllNTk4NDc0ZmIz
ZDQ1NWU2Li4zYzAzYmUzNDFiM2I3ZDY0NjIxZGM4MDM4MTY2OTM2MGY0ZGI0YzlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdl
LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRGlyZWN0Q29udm9sdmVyOwogICAgIAogLy8gQSBS
ZXZlcmJDb252b2x2ZXJTdGFnZSByZXByZXNlbnRzIHRoZSBjb252b2x1dGlvbiBhc3NvY2lhdGVk
IHdpdGggYSBzdWItc2VjdGlvbiBvZiBhIGxhcmdlIGltcHVsc2UgcmVzcG9uc2UuCiAvLyBJdCBp
bmNvcnBvcmF0ZXMgYSBkZWxheSBsaW5lIHRvIGFjY291bnQgZm9yIHRoZSBvZmZzZXQgb2YgdGhl
IHN1Yi1zZWN0aW9uIHdpdGhpbiB0aGUgbGFyZ2VyIGltcHVsc2UgcmVzcG9uc2UuCi1jbGFzcyBS
ZXZlcmJDb252b2x2ZXJTdGFnZSB7CitjbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSBmaW5hbCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gcmVuZGVyUGhh
c2UgaXMgdXNlZnVsIHRvIGtub3cgc28gdGhhdCB3ZSBjYW4gbWFuaXB1bGF0ZSB0aGUgcHJlIHZl
cnN1cyBwb3N0IGRlbGF5IHNvIHRoYXQgc3RhZ2VzIHdpbGwgcGVyZm9ybQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKaW5kZXggYmIwNmU0
ZWVkNjMzZjBlN2M2ODJlMjBlNGU2YTU3MmFhMWZhYTk2Ni4uYWY5ZWQwMGQ3MzNlODQyYjZlZDNh
NjQ3NDg1NDIwZDNjNzY3NzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCkBAIC0zNCw3ICszNCw4IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIC8vIFJldmVyYklucHV0QnVmZmVyIGlzIHVzZWQgdG8gYnVmZmVyIGlucHV0IHNh
bXBsZXMgZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcgYnkgdGhlIGJhY2tncm91bmQgdGhyZWFkcy4K
LWNsYXNzIFJldmVyYklucHV0QnVmZmVyIHsKK2NsYXNzIFJldmVyYklucHV0QnVmZmVyIGZpbmFs
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBS
ZXZlcmJJbnB1dEJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCmluZGV4IDJmY2Q4OWY3ZWNhMzc1ODU4NjMxYTli
Mjc2NWExMGQyMDFiMzQxYzcuLmMxMzJmNWQ5NzYyYzc1NjZiMjMyNWMwNjRiMjhkZThiNmUzOTAx
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmgK
QEAgLTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTaW5jUmVzYW1wbGVy
IGlzIGEgaGlnaC1xdWFsaXR5IHNhbXBsZS1yYXRlIGNvbnZlcnRlci4KIAotY2xhc3MgU2luY1Jl
c2FtcGxlciB7CitjbGFzcyBTaW5jUmVzYW1wbGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICAvLyBzY2FsZUZhY3RvciA9PSBzb3VyY2VTYW1w
bGVSYXRlIC8gZGVzdGluYXRpb25TYW1wbGVSYXRlCiAgICAgLy8ga2VybmVsU2l6ZSBjYW4gYmUg
YWRqdXN0ZWQgZm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBiZXR0ZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCmluZGV4IDI2NmJjYWY5ODBkNzI2ZmEyZjYzN2NmZTkz
YTVkNGMzOGIyNGVlMDYuLjY3NWVlNGFkMGM0NDY3Y2QxZGQ2ZDFkNTE2MTFlNzdiOThjNGM2M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVXBTYW1wbGVyIHVwLXNhbXBsZXMgdGhl
IHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCiAKLWNsYXNzIFVwU2FtcGxlciB7Citj
bGFzcyBVcFNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFVwU2FtcGxlcihzaXplX3QgaW5wdXRCbG9ja1NpemUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKaW5kZXggODMxZGU5MDkzYjAwNTYx
NmI0YmQ3N2VhN2IwNzc4YzM3ZGFhN2I2ZS4uMDJmZmFjZDVlYWNhN2NlMjc1ODkyYmU4ZDY0Mzk0
YzczM2RjN2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVy
b1BvbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oCkBA
IC0zMyw3ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gWmVyb1BvbGUgaXMgYSBz
aW1wbGUgZmlsdGVyIHdpdGggb25lIHplcm8gYW5kIG9uZSBwb2xlLgogCi1jbGFzcyBaZXJvUG9s
ZSB7CitjbGFzcyBaZXJvUG9sZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgWmVyb1BvbGUoKQogICAgICAgICA6IG1femVybygwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9CdWZmZXJMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxp
c3QuaAppbmRleCA4NmI2NWEyMjUzYWYxYWViMmExY2E5Y2FhMzY2Nzg2Y2Q3ZDY1NTIwLi44YTdl
N2EwM2FjMzNhNGU1NWM0M2MzMWFlYzYzN2IxODljYjFjN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3QuaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbjsKIAotY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0IDogcHVibGljIFBsYXRm
b3JtQXVkaW9EYXRhIHsKK2NsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdCBmaW5hbCA6IHB1YmxpYyBQ
bGF0Zm9ybUF1ZGlvRGF0YSB7CiBwdWJsaWM6CiAgICAgV2ViQXVkaW9CdWZmZXJMaXN0KGNvbnN0
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFdlYkF1ZGlv
QnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50MzJfdCBzYW1w
bGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXgg
NWJmOGZkYTZiMjkxMmIxOGYxMTkwZGNiZTcwODJiZjY4NGJlZTk4Zi4uMWE1NDk1ZmQ3NjRkOWMz
Y2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EZXN0
aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYgY2FsbAog
ICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAgICAgIExPRyhNZWRpYSwg
IkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBvdXRwdXQg
Y2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0K
IAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9T
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9u
SU9TLmNwcAppbmRleCA4YWY4NzdlYzJjNGNhMGFiZDMwNzQ4MzVmNTRiMzRhZWJmMDQzM2EyLi40
YmRlN2U0MWUyYjY0MzdjZDBmZjcyNWU0ZDA3OWQ2OGY4OWU3ZGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1Mu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0
aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0
ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9TPihj
YWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5h
dGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3RpbmF0
aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggZGM2YzhiY2NlMzY5ZDA2YWVk
YzhmZDMzM2M3MzhjMGJlOTU3NWRkNC4uNjM5ODI0MGJiZDhkOTY3MzAyZGY3ZTllY2ZmNDA3NTAy
ZGE2ZTIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9TZXNzaW9uSU9TLm1tCkBAIC01OSw2ICs1OSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBj
YXRlZ29yeU5hbWUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiAjZW5kaWYK
IAogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKTsKICAg
ICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7CkBAIC03MSw3
ICs3Miw3IEBAIEF1ZGlvU2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9T
ZXNzaW9uKikKIH0KIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2
YXRlKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhpcykpCisgICAgOiBt
X3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0aGlzKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGlu
YXRpb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVz
dGluYXRpb25NYWMuY3BwCmluZGV4IDc2NGEzNDdmOTgyOWUxZTg0NzViZDJlYTEyODBhYTE3NTAy
NmVjZmMuLjlmZTY0YmFhYTQ3ODRmZWNkYWIzZDZkZGI1ZTI3ODM4MWUxZTA3MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5h
dGlvbk1hYy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGlu
YXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAg
ICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJB
dWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNo
YW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBz
YW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRp
b25NYWM+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRp
b0Rlc3RpbmF0aW9uTWFjPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlv
RGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRl
eCA3N2Q0MzE2NTY2OTkwZTkwMWI5MjBiZjc3OGQ5NjllOWYxOGYxODhhLi40MWFmZTM5ZjIzMmFl
NTg4MDg2MGYwODRkNTU2Y2I0YTVkOGFlMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTEw
OCw3ICsxMDgsNyBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9y
bWF0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZgogewogICAgIEFTU0VSVChmb3Jt
YXQuc2FtcGxlUmF0ZSgpID49IDApOwogCi0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CisgICAgbV9pbnB1
dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1h
dCk7CiAgICAgaWYgKG1fb3V0cHV0RGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBzZXR1cENv
bnZlcnRlcigpOwogCkBAIC0xMjAsOSArMTIwLDkgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpzZXRPdXRwdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJgog
ICAgIEFTU0VSVChtX2lucHV0RGVzY3JpcHRpb24pOwogICAgIEFTU0VSVChmb3JtYXQuc2FtcGxl
UmF0ZSgpID49IDApOwogCi0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3JtYXQpOworICAgIG1fb3V0cHV0RGVzY3Jp
cHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKICAg
ICBpZiAoIW1fcmluZ0J1ZmZlcikKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDQVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8
Q0FSaW5nQnVmZmVyPigpOwogCiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShmb3JtYXQsIHN0
YXRpY19jYXN0PHNpemVfdD4obV9tYXhpbXVtU2FtcGxlQ291bnQpKTsKICAgICBtX3NjcmF0Y2hC
dWZmZXIgPSBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZShtX291dHB1dERlc2NyaXB0aW9u
LT5zdHJlYW1EZXNjcmlwdGlvbigpLCBtX21heGltdW1TYW1wbGVDb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCmlu
ZGV4IDdmNmVmOWQzM2RiMWZiNDdlN2NmMTRjNTkwNGE0NjExMmIxNTIyMzIuLmNjMDRmMGJlMzA5
NzQ5OGI4MzY2ZTkyNDIwNzNlY2UzZTE5NzVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCkBAIC02Miw3ICs2Miw3
IEBAIGNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewogfTsKIAogQXVkaW9TZXNzaW9uOjpBdWRp
b1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TZXNzaW9u
UHJpdmF0ZT4oaXNNdXRlZCgpKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vz
c2lvblByaXZhdGU+KGlzTXV0ZWQoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAppbmRleCAxOGEyNmFiNmRjNWM4ZGQwMTI1
MmRiMDY0NmQ0ZjViOWI0N2I2ZmY1Li4wNGFjZWZjOGRhYWQ3MTMyOGE0ZGRmYWJiZDA0YWY5ZWNk
OGViOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQ0FS
aW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0NBUmlu
Z0J1ZmZlci5oCkBAIC0zOSw2ICszOSw3IEBAIHR5cGVkZWYgc3RydWN0IEF1ZGlvQnVmZmVyTGlz
dCBBdWRpb0J1ZmZlckxpc3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENBUmluZ0J1
ZmZlclN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfkNBUmluZ0J1ZmZlclN0b3JhZ2UoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2
b2lkIGFsbG9jYXRlKHNpemVfdCkgPSAwOwpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBDQVJpbmdC
dWZmZXJTdG9yYWdlIHsKICAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKSA9IDA7CiB9OwogCi1jbGFz
cyBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yIDogcHVibGljIENBUmluZ0J1ZmZlclN0b3JhZ2Ug
eworY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvciBmaW5hbCA6IHB1YmxpYyBDQVJpbmdC
dWZmZXJTdG9yYWdlIHsKIHB1YmxpYzoKICAgICB+Q0FSaW5nQnVmZmVyU3RvcmFnZVZlY3Rvcigp
ID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWREZWNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVy
Q0YuY3BwCmluZGV4IGI5ODAzYmZhMDIzMjQzNTdjMGRmZTA0NzMxM2QyYzNlYzMwNGNiOTIuLjdh
NDdmNTYwOGJiYjZkZTlkMzc3M2IxN2U5OGU0NzY0YTI0MjIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERl
Y29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyQ0Y+KGRhdGEsIHNpemUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckNGPihkYXRhLCBzaXplKTsKIH0KIAogS2V5
ZWREZWNvZGVyQ0Y6OktleWVkRGVjb2RlckNGKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmlu
ZGV4IDFhNjI3ZWEwMGI5MmNiYWE2Y2Y3YzM1NWQ1ZTQ0NWVjNDg2MWE0MTIuLjQ0NzNlYzI4ZDA0
YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVu
Y29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckNGPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2RlckNGPigpOwogfQogCiBzdGF0aWMg
UmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGNyZWF0ZURpY3Rpb25hcnkoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVy
Q0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVy
Q0YuY3BwCmluZGV4IGI2ODkyMjgwNWU1ZDM3M2RlN2YwYWVkNzg5MDgyNWFjY2NjMTIwMzkuLjA3
YTQ1Y2FkNzhiNmQ0MzdmYWE4NDI1MjY5OWMwZDQ4NmQ3OGVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgc2V0dXBQb3dlck9ic2VydmVyKCkKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgc3RhdGljIFBvd2VyT2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7CiAgICAg
aWYgKCFwb3dlck9ic2VydmVyKQotICAgICAgICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKKyAgICAg
ICAgcG93ZXJPYnNlcnZlciA9IG1ha2VVbmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJl
ZFRpbWVyKS5yZWxlYXNlKCk7CiAjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRp
YyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiA9IGZhbHNlOwogICAg
IGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9uTm90aWZpY2F0aW9uKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLm1tCmluZGV4IDEyYWIzMjFjYjQ3NzJiZTcwMDE1MDBmMTk2Zjc4YjZlYmU1
ZTJiZDUuLjA1YzU1MjRkZWZjNzc3NjExZGY3NWY0OWIxOTFkN2ZkNjlmNDU4NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVh
dGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpp
bml0aWFsaXplKGNvbnN0IFVSTCogdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRl
eCBhZTBiZDIwOWNjZDZmMzE3YzkxOTMyNWExNmExOGE5OWNkMTU3MmU0Li4wZDJhNjIxODZiNWE1
NGUyYjg1MWZmOTZkNTI4MTAxZjg0NjZmNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bQpAQCAtNTAsNyArNTAsNyBAQCBib29sIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpl
bmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
PiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcj4oKTsKIH0KIAog
c3RhdGljIGlubGluZSBib29sIGNhbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
U2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9s
bENvbnRyb2xsZXIubW0KaW5kZXggZTgzNjljNmU1MDE2ZTIzY2Y4NzNiOTUzN2QyYWZiNGYwYmM2
ODUyMi4uOGZlMzhhZDBjY2UyZmQ1NDJkMjk3MDE3ZmRhMmQxY2IzNTViNzcyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC02
MjAsNyArNjIwLDcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9p
bnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBWZWN0b3IKICAgICAgICAgaWYgKHNuYXBQ
b2ludHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fc2Nyb2xs
U25hcFN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsK
KyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlPigpOwogICAgIH0KIAogICAgIGlmIChzbmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBtX3Nj
cm9sbFNuYXBTdGF0ZS0+c25hcE9mZnNldHNGb3JBeGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlzKGF4
aXMpKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggNTAzZjk3
YjkyMDE4ZGE4N2MyNDg4OTFiMjI2NzlhYmI3MDA1YjMwMC4uOTZjODUxMjkzNWFiOWI2OThlODk4
NTUxNjNiYjZkMjJhYzliODJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAt
MzAzLDcgKzMwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBDRE1GYWN0b3J5Q2xl
YXJLZXk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlCiAjZWxzZQogICAgIEFTU0VS
VChzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKTsKICNlbmRpZgotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENETVByaXZhdGVDbGVhcktleT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CiB9CiAKIGJvb2wgQ0RNRmFjdG9yeUNsZWFyS2V5Ojpz
dXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5oCmluZGV4IGQ0NzMwNGM5NWIyNmVmMjA0ZjVkYTRhZGNiYjhhMDg2NGRlMThiYjMu
LjBiOTEwNjQ5Y2E0YTQ3YTkxNWQ1NDhjOWQ5NGFmZmYzMzUzNTkyNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDRE1GYWN0b3J5Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIENETUZhY3RvcnlD
bGVhcktleSYgc2luZ2xldG9uKCk7CiAKQEAgLTU0LDYgKzU1LDcgQEAgY2xhc3MgQ0RNRmFjdG9y
eUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUZhY3RvcnkgewogfTsKIAogY2xhc3MgQ0RNUHJp
dmF0ZUNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVByaXZhdGVDbGVhcktleSgpOwogICAgIHZp
cnR1YWwgfkNETVByaXZhdGVDbGVhcktleSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1l
cGFkUHJvdmlkZXIubW0KaW5kZXggZjcyMGNmZDMzNDNmOWJhZDMzYTQ5MTlhNzhmODY2ZjlkODYy
YTBhZC4uNWE2ZWI0MDQzOWVmNTkwNTcyYTdjMjllZmMzMzhkOTJmMjM5YzVlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2Nv
Y29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCkBAIC02MSw3ICs2MSw3IEBAIHZv
aWQgR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXI6OmNvbnRyb2xsZXJEaWRDb25uZWN0KEdD
Q29udHJvbGxlciAqY29udHJvbGxlCiAgICAgTE9HKEdhbWVwYWQsICJHYW1lQ29udHJvbGxlckdh
bWVwYWRQcm92aWRlciBjb250cm9sbGVyICVwIGFkZGVkIiwgY29udHJvbGxlcik7CiAKICAgICB1
bnNpZ25lZCBpbmRleCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBhdXRv
IGdhbWVwYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJv
bGxlciwgaW5kZXgpOworICAgIGF1dG8gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkPihjb250cm9sbGVyLCBpbmRleCk7CiAKICAgICBpZiAobV9nYW1lcGFkVmVjdG9y
LnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmdyb3coaW5kZXggKyAx
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdh
bWVwYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQu
aAppbmRleCAxNWYwNGM3MDhlOTAwN2JiNGRhZGVlNTQzNWMzNTdmMDJmNTMxYzkzLi5hMjUyMzRm
Yjg3NWE3NTFjNjNjMzdiYTZhNWNlZTdkNDUzNGQ1YTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCkBAIC0zNiw2ICszNiw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBISURHYW1lcGFkRWxlbWVudCB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEhJREdhbWVwYWRFbGVtZW50KGRvdWJs
ZSB0aGVNaW4sIGRvdWJsZSB0aGVNYXgsIElPSElERWxlbWVudFJlZiBlbGVtZW50KQogICAgICAg
ICA6IG1pbih0aGVNaW4pCiAgICAgICAgICwgbWF4KHRoZU1heCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3Bw
CmluZGV4IDU3NDM5MWI1YzExMWEzMmJlOTEyNWNhNmNlMDYwMGY1ZDYzODIyNTcuLjZkMTRiNmIy
MTYxMGI4NmNlNGMwMDEzZTUwOTExYjg4Zjk1ZTFhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcApA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZChJ
T0hJRERldmljZVJlZiBkZXZpY2UpCiAgICAgTE9HKEdhbWVwYWQsICJISURHYW1lcGFkUHJvdmlk
ZXIgZGV2aWNlICVwIGFkZGVkIiwgZGV2aWNlKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gaW5k
ZXhGb3JOZXdseUNvbm5lY3RlZERldmljZSgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxISURHYW1l
cGFkPiBnYW1lcGFkID0gc3RkOjptYWtlX3VuaXF1ZTxISURHYW1lcGFkPihkZXZpY2UsIGluZGV4
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SElER2FtZXBhZD4gZ2FtZXBhZCA9IG1ha2VVbmlxdWU8
SElER2FtZXBhZD4oZGV2aWNlLCBpbmRleCk7CiAKICAgICBpZiAobV9nYW1lcGFkVmVjdG9yLnNp
emUoKSA8PSBpbmRleCkKICAgICAgICAgbV9nYW1lcGFkVmVjdG9yLmdyb3coaW5kZXggKyAxKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVy
R2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2Rl
ckdlbmVyaWMuY3BwCmluZGV4IGE0YTMwYjUyYWJlNDhhZjg1MGRjN2M3NDdhM2JjZGUxZDUxZmRh
NWYuLjBlNTk3MjMyMWI1ZjczZjU3MmJkNzk2NTg4MTFmMDAzYTk1ZWQ0OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmlj
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBLZXllZERlY29kZXJHZW5lcmljOjpEaWN0aW9u
YXJ5IHsKICAgICB1c2luZyBOb2RlID0gVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIGJvb2wsIHVp
bnQzMl90LCB1aW50NjRfdCwgaW50MzJfdCwgaW50NjRfdCwgZmxvYXQsIGRvdWJsZSwgU3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+Owog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBr
ZXksIFQmJiB2YWx1ZSkgeyBtX21hcC5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPE5vZGU+KHN0
ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQorICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYga2V5
LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgbWFrZVVuaXF1ZTxOb2RlPihzdGQ6OmZvcndh
cmQ8VD4odmFsdWUpKSk7IH0KICAgICBOb2RlJiBnZXQoY29uc3QgU3RyaW5nJiBrZXkpIHsgcmV0
dXJuICptX21hcC5nZXQoa2V5KTsgfQogCiBwcml2YXRlOgpAQCAtNzcsNyArNzcsNyBAQCBzdGF0
aWMgYm9vbCByZWFkU2ltcGxlVmFsdWUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2Rl
ciwgS2V5ZWREZWNvZGVyR2VuZQogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXll
ZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwgc2l6
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWREZWNvZGVyR2VuZXJpYz4oZGF0YSwgc2l6
ZSk7CiB9CiAKIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCkBAIC04Niw3ICs4Niw3IEBAIEtleWVkRGVjb2Rl
ckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6VHlwZSB0eXBlOwogICAgIFN0cmluZyBr
ZXk7CiAKLSAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5
PigpOworICAgIG1fcm9vdERpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAg
ICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG1fcm9vdERpY3Rpb25hcnkuZ2V0KCkpOwogCiAg
ICAgYm9vbCBvayA9IHRydWU7CkBAIC0xNDQsNyArMTQ0LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJp
Yzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkK
ICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBhdXRvKiBjdXJyZW50RGljdGluYXJ5ID0gbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpOwotICAg
ICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWN0aW9uYXJ5
PigpOworICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9u
YXJ5PigpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBwZW5kKG5ld0RpY3Rpb25h
cnkuZ2V0KCkpOwogICAgICAgICAgICAgY3VycmVudERpY3RpbmFyeS0+YWRkKGtleSwgV1RGTW92
ZShuZXdEaWN0aW9uYXJ5KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NiwxMyArMTU2LDEz
IEBAIEtleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgICAgICBvayA9IHJlYWRTdHJpbmcoZGVjb2Rl
ciwga2V5KTsKICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheT4oKTsKKyAg
ICAgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5PigpOwogICAgICAgICAg
ICAgbV9hcnJheVN0YWNrLmFwcGVuZChuZXdBcnJheS5nZXQoKSk7CiAgICAgICAgICAgICBtX2Rp
Y3Rpb25hcnlTdGFjay5sYXN0KCktPmFkZChrZXksIFdURk1vdmUobmV3QXJyYXkpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6VHlwZTo6QmVnaW5BcnJheUVsZW1lbnQ6IHsKLSAgICAgICAgICAgIGF1dG8gbmV3RGljdGlv
bmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIGF1dG8g
bmV3RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICAgICAgICAgIG1f
ZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAgICAg
IG1fYXJyYXlTdGFjay5sYXN0KCktPmFwcGVuZChXVEZNb3ZlKG5ld0RpY3Rpb25hcnkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggMmY4NDEwNDc0NjM5NTU4ZjI5NWU4
MWE1MTcxOWE4NzM0YjMyZDU4YS4uMjFjYzFlYmU0YTkwMWExM2M3NDQwM2RjMDFjZjJmYzgxODEz
MDEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVy
KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmljPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRW5jb2RlckdlbmVyaWM+KCk7CiB9CiAKIHZv
aWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmlt
YXRvckdlbmVyaWMuY3BwCmluZGV4IDdhZTY1YzVhOGQzMDllM2RlZWY1M2NlOGNmMWUzMDI0MjZk
MjdjMTQuLjIwOGFmN2I4NDc5ZWNhZWY1NTMwY2NjNTU3YjczNmViYWJjYmNiOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9y
R2VuZXJpYy5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBzY3Jv
bGxDYXB0dXJlVGhyZXNob2xkIHsgMTUwX21zIH07CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxB
bmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJs
ZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JHZW5l
cmljPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0
b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6
U2Nyb2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKICAg
ICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQogICAgICwgbV9vdmVybGF5U2Nyb2xs
YmFyQW5pbWF0aW9uVGltZXIoKnRoaXMsICZTY3JvbGxBbmltYXRvckdlbmVyaWM6Om92ZXJsYXlT
Y3JvbGxiYXJBbmltYXRpb25UaW1lckZpcmVkKQogewotICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9zY3JvbGxhYmxlQXJl
YSwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgeworICAgIG1fa2luZXRpY0FuaW1hdGlv
biA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9zY3JvbGxhYmxlQXJlYSwg
W3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogI2lmIEVOQUJMRShTTU9PVEhfU0NST0xM
SU5HKQogICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgICAgICBtX3Ntb290
aEFuaW1hdGlvbi0+c2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uKTsKQEAgLTczLDcgKzczLDcg
QEAgdm9pZCBTY3JvbGxBbmltYXRvckdlbmVyaWM6OmVuc3VyZVNtb290aFNjcm9sbGluZ0FuaW1h
dGlvbigpCiAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Ntb290aEFuaW1hdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21v
b3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlvbiwgW3RoaXNdKEZsb2F0UG9p
bnQmJiBwb3NpdGlvbikgeworICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3Jv
bGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xsYWJsZUFyZWEsIG1fY3VycmVudFBvc2l0aW9uLCBb
dGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7CiAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKFdU
Rk1vdmUocG9zaXRpb24pKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCmluZGV4IGU3ZGQxOTE0MDQxNzE5NjhmOTBk
NmZlYTMzNTRlMTRjZWY2ZjU1NjcuLjM2MWU5ZGYzMjQ1YmU1NjViMGUyYTQxZGYxOGIyNmZmYmM3
MTljZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNv
ZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29k
ZXJHbGliLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxL
ZXllZERlY29kZXJHbGliPihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXll
ZERlY29kZXJHbGliPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyR2xpYjo6S2V5ZWRE
ZWNvZGVyR2xpYihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IDc0MDRi
Y2JkNDQ5YWE0OTIxYjhjZTJiN2UwMTg0NDk1MDEwNmY2ODAuLjcwZDI0YzExOTNmOGU1YzcwZDFk
Mzk4N2M1ZTAwOThjYjZjMDBiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5j
b2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2xpYj4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJHbGliPigpOwogfQogCiBLZXll
ZEVuY29kZXJHbGliOjpLZXllZEVuY29kZXJHbGliKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBmMWM5MGU1OTg4OTNhZGE4MzQ3
OWZjN2IzODNhOTBhNTM1YmYyYTk5Li5iMmJkNDdjYjE2MTRjZGFlNWQ4OWVlYTE3YjQyYzQ3ODZi
YzJkOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6Y2xlYXJUaW1l
cigpCiB2b2lkIEJpdG1hcEltYWdlOjpzdGFydFRpbWVyKFNlY29uZHMgZGVsYXkpCiB7CiAgICAg
QVNTRVJUKCFtX2ZyYW1lVGltZXIpOwotICAgIG1fZnJhbWVUaW1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8VGltZXI+KCp0aGlzLCAmQml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOworICAgIG1f
ZnJhbWVUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmQml0bWFwSW1hZ2U6OmFkdmFu
Y2VBbmltYXRpb24pOwogICAgIG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKIH0K
IApAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkK
IHZvaWQgQml0bWFwSW1hZ2U6OmRlY29kZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoIW1fZGVjb2RpbmdDYWxsYmFja3MpCi0gICAgICAgIG1fZGVjb2RpbmdD
YWxsYmFja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4o
KTsKKyAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZ1bmN0
aW9uPHZvaWQoKT4sIDE+PigpOwogCiAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcy0+YXBwZW5kKFdU
Rk1vdmUoY2FsbGJhY2spKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggMGQzNTU2MTg5NzBm
YjI3N2Y3MmU3ODk5MGUzZjRmMmEyMTZmYmM2OS4uMzUzZmNhNjYwMTMyNjRiMDI0NjJhNTcxMjI0
ZDA1YTE4MWQ5Njg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGNs
YXNzIFRleHRMYXlvdXQgewogICAgIFRleHRMYXlvdXQoUmVuZGVyVGV4dCYgdGV4dCwgY29uc3Qg
Rm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHhQb3MpCiAgICAgICAgIDogbV9mb250KGZvbnQpCiAg
ICAgICAgICwgbV9ydW4oY29uc3RydWN0VGV4dFJ1bih0ZXh0LCB4UG9zKSkKLSAgICAgICAgLCBt
X2NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4VGV4dENvbnRyb2xsZXI+KG1fZm9u
dCwgbV9ydW4sIHRydWUpKQorICAgICAgICAsIG1fY29udHJvbGxlcihtYWtlVW5pcXVlPENvbXBs
ZXhUZXh0Q29udHJvbGxlcj4obV9mb250LCBtX3J1biwgdHJ1ZSkpCiAgICAgewogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCmluZGV4IDcy
MDQ1M2Q5ZjA0NmQ3OWY0OGEwOWI4MWFmNzAwMGY0ZGUzYmUwMjUuLmNlZmQ4ZDQyMjQ0ZDA2ZmNi
ODI0YmU1ZTNiNzM0MTljZDQ5OGE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFBvaW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiBj
bGFzcyBJbnRTaXplOwogCiBjbGFzcyBGbG9hdFBvaW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBGbG9hdFBvaW50KCkgeyB9CiAgICAgRmxvYXRQb2ludChm
bG9hdCB4LCBmbG9hdCB5KSA6IG1feCh4KSwgbV95KHkpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCAxODRiNDRiMDdhNDEyMjE2YjllYzU5ODQyMmYw
Nzg3ZjBlNmM3YWViLi5lMGI0OWYyNDdjMjAwOWJkZDVmMWQwYzhlYmE3YWQ2YzdlYjhjYmRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtMzk0LDcgKzM5
NCw3IEBAIEdseXBoRGF0YSBGb250OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFy
YWN0ZXIpIGNvbnN0CiBhdXRvIEZvbnQ6OmVuc3VyZURlcml2ZWRGb250RGF0YSgpIGNvbnN0IC0+
IERlcml2ZWRGb250cyYKIHsKICAgICBpZiAoIW1fZGVyaXZlZEZvbnREYXRhKQotICAgICAgICBt
X2Rlcml2ZWRGb250RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZEZvbnRzPigpOworICAg
ICAgICBtX2Rlcml2ZWRGb250RGF0YSA9IG1ha2VVbmlxdWU8RGVyaXZlZEZvbnRzPigpOwogICAg
IHJldHVybiAqbV9kZXJpdmVkRm9udERhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAppbmRleCAyZTU4YmQ2OWViYjUzOTFlMDM2ZDI4YzI3MDJjMWY0NTA1MDhi
MzEyLi41NDRiMGI3MTE4YWIyZjkwODA3NDllNDQxZTUxNDlmMDUxOGYyZTE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0yNjksOSArMjY5LDcgQEAgY2xhc3Mg
Rm9udCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnQ+IHsKICNlbmRpZgogCiAgICAgc3RydWN0IERl
cml2ZWRGb250cyB7Ci0jaWYgIUNPTVBJTEVSKE1TVkMpCi0gICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotI2VuZGlmCisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAKICAgICAgICAgUmVmUHRyPEZvbnQ+IHNtYWxsQ2Fwc0ZvbnQ7CkBA
IC0zNDUsNyArMzQzLDcgQEAgQUxXQVlTX0lOTElORSBGbG9hdFJlY3QgRm9udDo6Ym91bmRzRm9y
R2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAKICAgICBib3VuZHMgPSBwbGF0Zm9ybUJvdW5kc0Zv
ckdseXBoKGdseXBoKTsKICAgICBpZiAoIW1fZ2x5cGhUb0JvdW5kc01hcCkKLSAgICAgICAgbV9n
bHlwaFRvQm91bmRzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxHbHlwaE1ldHJpY3NNYXA8RmxvYXRS
ZWN0Pj4oKTsKKyAgICAgICAgbV9nbHlwaFRvQm91bmRzTWFwID0gbWFrZVVuaXF1ZTxHbHlwaE1l
dHJpY3NNYXA8RmxvYXRSZWN0Pj4oKTsKICAgICBtX2dseXBoVG9Cb3VuZHNNYXAtPnNldE1ldHJp
Y3NGb3JHbHlwaChnbHlwaCwgYm91bmRzKTsKICAgICByZXR1cm4gYm91bmRzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMGE2MmEy
NzViYzY5MmVmMzk5MTE0MGUwMjhmNTgwMDQyMWQwYzcxMS4uMzcwOWI0MWViMmI3YmQwYmY3YjEw
MmFjNWRiZWZlMmY3NzczYWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgRm9udFBsYXRmb3JtRGF0YSog
Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm8KICAgICAgICAgICAgICAgICBpdCA9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgpLmZpbmQo
a2V5KTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXQgIT0gZm9udFBsYXRmb3JtRGF0YUNhY2hl
KCkuZW5kKCkpOwogICAgICAgICAgICAgICAgIGlmIChmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJu
YXRlTmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaXQtPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxGb250UGxhdGZvcm1EYXRhPigqZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBpdC0+dmFsdWUgPSBtYWtlVW5pcXVlPEZvbnRQbGF0Zm9ybURh
dGE+KCpmb250UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAKaW5kZXggNzI3NGRiMGRiMzJiM2I0MWIzZTBlMWIxZWQwZmIyYWVhOGIz
NmEzYi4uNjQ4MThmNGI1MTU1ZDQyYmZhYzgxYjYxZjRiNWY5Y2RlYTU0NTJkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjU0
LDcgKzI1NCw3IEBAIHN0YXRpYyBSZWY8Rm9udENhc2NhZGVGb250cz4gcmV0cmlldmVPckFkZENh
Y2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpCiAgICAgICAgIHJldHVybiBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5mb250cy5nZXQoKTsKIAogICAgIGF1dG8mIG5ld0VudHJ5
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICBuZXdFbnRyeSA9IHN0ZDo6bWFrZV91
bmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtleSksIEZvbnRDYXNjYWRlRm9u
dHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKKyAgICBuZXdFbnRyeSA9IG1ha2VV
bmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5PihXVEZNb3ZlKGtleSksIEZvbnRDYXNjYWRlRm9u
dHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKICAgICBSZWY8Rm9udENhc2NhZGVG
b250cz4gZ2x5cGhzID0gbmV3RW50cnktPmZvbnRzLmdldCgpOwogCiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHVucmVmZXJlbmNlZFBydW5lSW50ZXJ2YWwgPSA1MDsKQEAgLTMyNiw5ICszMjYs
OSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBGb250Q2FzY2Fk
ZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuKEdyYQogICAgIGlmIChnbHlwaEJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdD4oKTsKICAgICBHcmFwaGljc0NvbnRleHQgcmVjb3JkaW5nQ29udGV4dChbJl0o
R3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQs
ICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJhbnNm
b3JtKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+
KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0
UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgfSk7CiAgICAgCiAgICAgRmxvYXRQb2lu
dCBzdGFydFBvaW50KHN0YXJ0WCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCmluZGV4IGRiNzQzMDJlOWRhYTRlYjUy
YzBjZTA4MWZkNTYwNTI3OTU3OGZiZjQuLjEyYWM4MzdmY2QyNDY1ZjlmODFkZWIwNjg3YWE3NzZk
NWVhMDY0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgRm9udENhc2NhZGVG
b250czo6R2x5cGhQYWdlQ2FjaGVFbnRyeTo6c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFy
MzIgY2hhCiB7CiAgICAgQVNTRVJUKCFnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKS5n
bHlwaCk7CiAgICAgaWYgKCFtX21peGVkRm9udCkgewotICAgICAgICBtX21peGVkRm9udCA9IHN0
ZDo6bWFrZV91bmlxdWU8TWl4ZWRGb250R2x5cGhQYWdlPihtX3NpbmdsZUZvbnQuZ2V0KCkpOwor
ICAgICAgICBtX21peGVkRm9udCA9IG1ha2VVbmlxdWU8TWl4ZWRGb250R2x5cGhQYWdlPihtX3Np
bmdsZUZvbnQuZ2V0KCkpOwogICAgICAgICBtX3NpbmdsZUZvbnQgPSBudWxscHRyOwogICAgIH0K
ICAgICBtX21peGVkRm9udC0+c2V0R2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgZ2x5
cGhEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoTWV0cmljc01hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhN
ZXRyaWNzTWFwLmgKaW5kZXggMjU5ZTk3NTMzY2FlZGNmYzE0NWZmN2FiNDI4ZWExNjlmNjRiMTU5
NC4uNzllMmY1Mzg4YzQ2ZTU4OTIzMDE2MWM0NzQ1MjU0MTkyNDdlODJhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKQEAgLTEz
MCwxMCArMTMwLDEwIEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHR5cGVuYW1lIEdseXBoTWV0cmljc01h
cDxUPjo6R2x5cGhNZXRyaWNzUGFnZSYgR2x5cGhNZXRyaWNzTWFwCiAgICAgfQogCiAgICAgaWYg
KCFtX3BhZ2VzKQotICAgICAgICBtX3BhZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPGlu
dCwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4oKTsKKyAgICAgICAgbV9wYWdl
cyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQ
YWdlPj4+KCk7CiAKICAgICBhdXRvJiBwYWdlID0gbV9wYWdlcy0+ZW5zdXJlKHBhZ2VOdW1iZXIs
IFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4o
dW5rbm93bk1ldHJpY3MoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdseXBoTWV0cmlj
c1BhZ2U+KHVua25vd25NZXRyaWNzKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBy
ZXR1cm4gKnBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDQwOGNmYjdkMWUyZGI5OGY3YWRjODNiYmMzM2I4MWI5
YWYxMjFiMGMuLjQ0N2Q3ZTNlMzU0NzYyZTgwYjhmMjdhOTUyNjIzMjI3OWI1ZjkwOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CkBAIC01NTcsNiArNTU3LDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBib29sIHNo
b3VsZEluY2x1ZGVDaGlsZFdpbmRvd3MoKSBjb25zdDsKIAogICAgIGNsYXNzIFdpbmRvd3NCaXRt
YXAgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2luZG93c0JpdG1hcCk7CiAgICAgcHVibGljOgogICAgICAgICBXaW5kb3dz
Qml0bWFwKEhEQywgY29uc3QgSW50U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCAx
YjQyMjg2ZGRmNDY1YzBlMmIxMjRkOGFmZGYwZjdjZDY0NzdjYmI3Li5lMzNmOGZiZTczODkyZTM0
YjhkZWY4MzZkNDZmNWM3MGM3OWM2MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMjgs
NiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiAK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAgICB+R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggMGJhZDRlNzA2MzQyMTk5ODY4OTQ0
OTJkZmU2ZjYxZDMxNzg4MTlkMy4uYjg3MzE5NGVlMjQ2MDFmZTRlMDcxNDdhYTcxZWEzMDU4N2E4
NGE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRleHRJbXBsKTsKIHB1
YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHRJbXBsKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCA5
NGFhYzFkZjgzNTZiZGIxMGRmN2QwODZmYWNlMjZjMWUzNzE4MzI2Li42Y2QwMGMyNjU3MGQ5ZGIz
YjlmYWE3ZTIwMjNhZjFhNWU3ZTYzYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wg
R3JhcGhpY3NMYXllcjo6c3VwcG9ydHNDb250ZW50c1RpbGluZygpCiAjZW5kaWYKIAogLy8gU2lu
Z2xldG9uIGNsaWVudCB1c2VkIGZvciBsYXllcnMgb24gd2hpY2ggY2xlYXJDbGllbnQgaGFzIGJl
ZW4gY2FsbGVkLgotY2xhc3MgRW1wdHlHcmFwaGljc0xheWVyQ2xpZW50IDogcHVibGljIEdyYXBo
aWNzTGF5ZXJDbGllbnQgeworY2xhc3MgRW1wdHlHcmFwaGljc0xheWVyQ2xpZW50IGZpbmFsIDog
cHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHN0YXRpYyBFbXB0eUdyYXBoaWNzTGF5ZXJDbGllbnQmIHNpbmdsZXRv
bigpOwpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAgICAgaWYgKG1fdHJhbnNmb3Jt
KQogICAgICAgICAqbV90cmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQotICAgICAgICBtX3Ry
YW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7
CisgICAgICAgIG1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
bWF0cml4KTsKIH0KIAogY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIEdyYXBoaWNzTGF5ZXI6
OmNoaWxkcmVuVHJhbnNmb3JtKCkgY29uc3QKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtYXRyaXgpCiAgICAgaWYgKG1fY2hpbGRyZW5UcmFuc2Zvcm0pCiAgICAgICAgICptX2NoaWxk
cmVuVHJhbnNmb3JtID0gbWF0cml4OwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJlblRyYW5z
Zm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7Cisg
ICAgICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0
cml4PihtYXRyaXgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihSZWZQ
dHI8R3JhcGhpY3NMYXllcj4mJiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAwMDlkNDg2ODk1ZDU2ODYyNTQwMTFkZjU2
MDBhNzIxMTI0MzBlNjJmLi43YTFmZWFhYzc5ZTc4YmE4OGZjYWRjYjg1ZTMyOTlmZDc5YTAwNDNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRmxvYXRBbmltYXRpb25WYWx1ZSA6IHB1Ymxp
YyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+
IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIGZsb2F0IHZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQpAQCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNz
IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0
aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShj
b25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgb3RoZXIpCkBAIC0xNjMsNyArMTYzLDcgQEAg
Y2xhc3MgRmlsdGVyQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRl
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25W
YWx1ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25W
YWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIEZpbHRlckFuaW1hdGlvblZhbHVlKGNvbnN0IEZp
bHRlckFuaW1hdGlvblZhbHVlJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcAppbmRleCA4ZWNmMzNmODk4Yjc0NDkxMWY3MDVhMTQ5ZmY3ODhiNjdiNmQ5
NGVmLi4zOTk5NjcyYjlmNTg5MzI4NmNmMzJkYjFjYzZiODBhMzMxODJhZGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAg
dm9pZCBJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNX
aWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWMKIHZvaWQgSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5bmNo
cm9ub3VzbHkoKQogewogICAgIGlmICghbV9hbmltYXRpb25TdGFydFRpbWVyKQotICAgICAgICBt
X2FuaW1hdGlvblN0YXJ0VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJklt
YWdlOjpzdGFydEFuaW1hdGlvbik7CisgICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lciA9IG1h
a2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKTsKICAgICBpZiAo
bV9hbmltYXRpb25TdGFydFRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAgICAg
bV9hbmltYXRpb25TdGFydFRpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAppbmRleCBiZTc2
NzYwZjhlMzU2NWQ0MjY3MmIwMDVhOTZkY2RiN2ZhNGIyZDY5Li4yNWU3OWE2ZGMwYTViMjE5M2E3
MmEyMjdhYWNhMTc3M2E3ZTNjMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIExlZ2FjeUNETVNlc3Npb25DbGllbnQgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNlc3Np
b25DbGllbnQoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4
QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3NTdmMDk1NjdkYzVkZmRm
NWJlMDI2Mzk2MzlkMWVmZWM3MThjMGRiLi5hYmU4Njk0MTk0ZmY3YzE3NTEwMGI2OTg4MDRhMTI0
MGJkNjJjODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgY2xhc3MgTnVsbE1lZGlhUGxheWVyUHJp
dmF0ZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogCiAgICAg
ZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGRv
dWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH0KIAogICAgIGRvdWJs
ZSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gMDsgfQogICAgIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9CkBAIC0zNTUsNyArMzU1LDcgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXll
cjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiBNZWRpYVBsYXllcjo6TWVkaWFQ
bGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50KCZjbGllbnQp
CiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmly
ZWQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2
YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclBy
aXZhdGU+KHRoaXMpKQogewogfQogCkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBNZWRpYVBsYXll
cjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJy
ZW50KQogI2VuZGlmCiAgICAgICAgIG1fcHJpdmF0ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgbV9wcml2YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxOdWxsTWVk
aWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKKyAgICAgICAgbV9wcml2YXRlID0gbWFrZVVuaXF1ZTxO
dWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKICAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5
ZXJFbmdpbmVVcGRhdGVkKHRoaXMpOwogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllclJlc291
cmNlTm90U3VwcG9ydGVkKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMDBkODVhNDk5NjQy
YjNmNTIzN2IzMGJmZjVmNGU2YjQyOTEzMGVjZC4uMWQyZmMwMDkyMDRhOGMwMjU1NDFiMmEyZDdj
NWYwZDBiZTVjOTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBjbGFzcyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpID8gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSk7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2FibGUoKSA9PSBNZWRp
YVRpbWU6Onplcm9UaW1lKCkgPyBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKSA6IG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhN
ZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxl
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1heE1lZGlhVGlt
ZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1h
eFRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggM2U2ODgwNTViZGNjMGIxMGU0MTYwY2YxNDBk
NGZhY2U5MjMyMGE2NS4uNWFkOTMzNDliZmI0MGRhNGZmMzA4YWRhOTg0OTdmYzM3NWUxMDhhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGll
cy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRmxvYXRQb2ludEdyYXBoOjpOb2RlKiBGbG9hdFBvaW50
R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUoRmxvYXRQb2ludCBwb2ludCkKICAgICAgICAgICAgIHJl
dHVybiB0ZXN0Tm9kZS5nZXQoKTsKICAgICB9CiAKLSAgICBtX2FsbE5vZGVzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4ocG9pbnQpKTsKKyAgICBtX2FsbE5v
ZGVzLmFwcGVuZChtYWtlVW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4ocG9pbnQpKTsKICAg
ICByZXR1cm4gbV9hbGxOb2Rlcy5sYXN0KCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCmluZGV4IDlkY2VlODc2MTYyNWMwMTQ4OGI0ZDkw
ZDFhZjIyZTM1NDM1ZDRhNWUuLjZhNzAxYzFhMTI4OTc5ZDRjOTQ4YjFhN2JhYjU2OGYxMDI0N2Nm
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcApAQCAt
NjQ2LDcgKzY0Niw3IEBAIHZvaWQgUmVnaW9uOjpzZXRTaGFwZShTaGFwZSYmIHNoYXBlKQogICAg
IH0KIAogICAgIGlmICghbV9zaGFwZSkKLSAgICAgICAgbV9zaGFwZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKKyAgICAgICAgbV9zaGFwZSA9IG1ha2VVbmlxdWU8
U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKICAgICBlbHNlCiAgICAgICAgICptX3NoYXBlID0gV1RG
TW92ZShzaGFwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5o
CmluZGV4IDc5NjMzZmRiNmFkZjM0ZmZmZWU4ZjgyNjc0ODNiOGNmZjVjZTFmM2MuLmJjMzljMzAw
MDBlYThiNmI1YTllNjBjZjJiYzVhZTE4NjY2NGI2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5oCkBAIC05MSw2ICs5MSw3IEBAIGNsYXNzIFJlZ2lvbiB7CiAg
ICAgfTsKIAogICAgIGNsYXNzIFNoYXBlIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgogICAgICAgICBTaGFwZSgpID0gZGVmYXVsdDsKICAgICAgICAgU2hh
cGUoY29uc3QgSW50UmVjdCYpOwpAQCAtMTQ4LDcgKzE0OSw3IEBAIGNsYXNzIFJlZ2lvbiB7CiAg
ICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGUmLCBjb25zdCBTaGFwZSYp
OwogICAgIH07CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNvcHlTaGFwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhcGUgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPigqbV9zaGFwZSkgOiBu
dWxscHRyOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjb3B5U2hhcGUoKSBjb25zdCB7
IHJldHVybiBtX3NoYXBlID8gbWFrZVVuaXF1ZTxTaGFwZT4oKm1fc2hhcGUpIDogbnVsbHB0cjsg
fQogICAgIHZvaWQgc2V0U2hhcGUoU2hhcGUmJik7CiAKICAgICBJbnRSZWN0IG1fYm91bmRzOwpA
QCAtMjg5LDcgKzI5MCw3IEBAIE9wdGlvbmFsPFJlZ2lvbj4gUmVnaW9uOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICAgICAgZGVjb2RlciA+PiBzaGFwZTsKICAgICAgICAgaWYgKCFzaGFw
ZSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJlZ2lvbi5tX3No
YXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFwZT4oV1RGTW92ZSgqc2hhcGUpKTsKKyAgICAgICAg
cmVnaW9uLm1fc2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOwogICAg
IH0KIAogICAgIHJldHVybiB7IHJlZ2lvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCmluZGV4
IDFlNGU3ZmFjMzZjN2MzMGE2NTZmMWVmZDAwYWFjZTZkNGM5NWNlZGEuLjY5MzlmOTE3YWU2ZmFi
MTNlYzFjOTFkNGFhODE1NTY2YTkxNzBkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uIDogcHVibGlj
IFRleHRUcmFja1JlcHJlc2VudGF0aW9uIHsKIAogc3RkOjp1bmlxdWVfcHRyPFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uPiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ2xpZW50JikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOdWxs
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TnVsbFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uPigpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVsb2NpdHlEYXRhLmgKaW5kZXggN2FlYjc1OWIzNGIxOGEx
ZTg0NjgzZjI5YzYxNmE2Y2RiMDI1NzRkOC4uNmEwNmNjNmViYTM0Yjk1OWQyZjE4NjAyMjllMWYy
ZjM4ZmYzMTkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmVsb2NpdHlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmVs
b2NpdHlEYXRhLmgKQEAgLTY1LDYgKzY1LDcgQEAgc3RydWN0IFZlbG9jaXR5RGF0YSAgewogV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVmVs
b2NpdHlEYXRhJik7CiAKIGNsYXNzIEhpc3RvcmljYWxWZWxvY2l0eURhdGEgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEhpc3RvcmljYWxWZWxvY2l0eURhdGEo
KSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAKaW5kZXggNzdh
M2UxOGMxYzZjMmUyN2RkNjNhZTI5NmY2ZWM5YTFlYTJmYWUxZi4uNjEyNjBlOWM4M2RjNGE1NTI4
NTcxYzk5ZDRhMjcwNWIxNmNhNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5j
cHAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRo
KEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRF
eHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRlbnNp
b25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RBTkdMRT4odGhpcywgaXNHTEVTMkNv
bXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25z
M0RBTkdMRT4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5z
aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
LmgKaW5kZXggYTllY2QzMjEzNmRhODc3MDJmNDc4YWZjZDhhY2M4ZWI5N2MyMzk0MC4uOTlkZGRk
OGY4NTAyNzMwM2JiOGE3NjNlY2FjMmI4Njk4ODJmYTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQzsKIAogY2xhc3Mg
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbChBVlBsYXll
ckl0ZW1UcmFjayopOwogICAgIGV4cGxpY2l0IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwoQVZB
c3NldFRyYWNrKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW0KaW5kZXggNWNkNzc3MmFjMmVlMWNlYTkwMTBlODMzNzFlYTZhYWVmN2YwNjk1OC4u
NmIzYzkyMmU2YWViZTU5MjBhZTY1ZTU3YWYwNWVkZTRhZDAzNzQzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtMzEzLDEyICszMTMs
MTIgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3Vu
dCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEKIHsKICAgICBBU1NFUlQobWF4RnJhbWVzID49
IDApOwogCi0gICAgbV90YXBEZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zvcm1hdCk7CisgICAgbV90YXBEZXNjcmlw
dGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOwogICAgIGludCBudW1iZXJPZkNoYW5uZWxz
ID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bUNoYW5uZWxzUGVyRnJhbWU7CiAgICAgZG91YmxlIHNhbXBs
ZVJhdGUgPSBwcm9jZXNzaW5nRm9ybWF0LT5tU2FtcGxlUmF0ZTsKICAgICBBU1NFUlQoc2FtcGxl
UmF0ZSA+PSAwKTsKIAotICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsKKyAgICBtX291dHB1dERlc2NyaXB0aW9u
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2Ny
aXB0aW9uPigpOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1TYW1wbGVSYXRlID0gc2FtcGxl
UmF0ZTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRM
aW5lYXJQQ007CiAgICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUZvcm1hdEZsYWdzID0ga0F1ZGlv
Rm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZDsKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIEF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJlKENNSXRlbUNvdW50IG1heEZyYW1lcywg
Y29uc3QgQXVkaW9TdHJlYQogICAgIC8vIE1ha2UgdGhlIHJpbmdidWZmZXIgbGFyZ2UgZW5vdWdo
IHRvIHN0b3JlIGF0IGxlYXN0IHR3byBjYWxsYmFja3Mgd29ydGggb2YgYXVkaW8sIG9yIDFzLCB3
aGljaGV2ZXIgaXMgbGFyZ2VyLgogICAgIHNpemVfdCBjYXBhY2l0eSA9IHN0ZDo6bWF4KHN0YXRp
Y19jYXN0PHNpemVfdD4oMiAqIG1heEZyYW1lcyksIHN0YXRpY19jYXN0PHNpemVfdD4oa1JpbmdC
dWZmZXJEdXJhdGlvbiAqIHNhbXBsZVJhdGUpKTsKIAotICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlx
dWU8Q0FSaW5nQnVmZmVyPigpOwogICAgIG1fcmluZ0J1ZmZlci0+YWxsb2NhdGUoQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKCpwcm9jZXNzaW5nRm9ybWF0KSwgY2FwYWNpdHkpOwogCiAgICAgLy8g
QXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUtbGVuZ3RoIHN0cnVjdCwgc28gY3JlYXRlIG9u
IHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygpIG9wZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCAzNjFhOTkyZjBjNDY1MGNmMmI5NjI4YTY0
MmU5N2I1ZGJhMGUyYTNjLi40ZmM2Nzg3ZGQ4ZDkwN2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTIzNCw3
ICsyMzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9yeUZhaXJQbGF5
U3RyZWFtaW5nOjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJgogICAgIGlmICghc3VwcG9ydHNLZXlT
eXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc+KCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nPigpOwogfQogCiBib29s
IENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmlu
ZGV4IDg5MThlODBlMGMzOTBkN2U4ZGFjYTE5MDM5NDc5YTBkMGY2OTVhZDguLjUzODY5NjlmOTQ5
NzZmMzgzNjgwMTg3NDFiYWZkMTI1NTFlMjhiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0
cnVjdCBGb3VyQ0M7CiAKIGNsYXNzIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyBmaW5hbCA6
IHB1YmxpYyBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nJiBzaW5nbGV0b24oKTsK
IApAQCAtNDksNiArNTAsNyBAQCBjbGFzcyBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmcgZmlu
YWwgOiBwdWJsaWMgQ0RNRmFjdG9yeSB7CiB9OwogCiBjbGFzcyBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmcgZmluYWwgOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CiAg
ICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCA0YTUwZWI0MWE1
ODM2ODNmNjZhNjc2MjI5NTQ2YzU4MDFiMjBiNTg4Li5kODFiY2EzNTQ5MDM5MThhMWJkYTBhZGRk
OTU4ZDU5NDNmNzAxYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgTGVnYWN5Q0RNOwogY2xh
c3MgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzsKIAogY2xhc3MgQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQyA6IHB1YmxpYyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKExlZ2FjeUNETSogY2RtKQogICAgICAgICA6IG1fY2RtKGNkbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Q
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXgg
MmNjMDhhOWEzYjUxY2JmN2FiMTk3NDIwMmE5OGIxNjlkYjQzYzEwMS4uMGNkMDEyOWEzY2Q5ZWFm
ODYzYWQ0Nzg5ODM4NTAzMWQ4Yjc2ZWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTE0NywxMCArMTQ3LDEwIEBAIHN0ZDo6
dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpjcmVhdGVTZXNzaW9uKExlCiAjZW5kaWYKICAgICAKICAgICBpZiAoc2hvdWxkVXNlQVZDb250
ZW50S2V5U2Vzc2lvbiAmJiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6aXNBdmFpbGFi
bGUoKSkKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyksIHBh
cmFtZXRlcnMudmFsdWUoKS52ZXJzaW9uLCAqdGhpcywgY2xpZW50KTsKKyAgICAgICAgc2Vzc2lv
biA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24+KFdURk1vdmUocGFy
YW1ldGVycy52YWx1ZSgpLnByb3RvY29scyksIHBhcmFtZXRlcnMudmFsdWUoKS52ZXJzaW9uLCAq
dGhpcywgY2xpZW50KTsKICAgICBlbHNlCiAjaWYgSEFWRShBVlNUUkVBTVNFU1NJT04pCi0gICAg
ICAgIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVlN0cmVhbVNlc3Npb24+
KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29scyksICp0aGlzLCBjbGllbnQpOwor
ICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihX
VEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCAqdGhpcywgY2xpZW50KTsKICNl
bHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBsYXlTdHJlYW1p
bmdQc3NoQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94LmgKaW5kZXggZTQ2MDE0ODMwNWNlZWQxYjU2
NDg0MTk5NmNiOWZjMzRjZGMzYWI1Mi4uMTQ3YzM3OWYxMjcwNjgyZTU1ZmQyMTVjZTIzYTM5ZWEx
MjQ5NWFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bz
c2hCb3guaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0JveCA6IHB1YmxpYyBJU09G
dWxsQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0Jv
eCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckND
IGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZwc2kiOyB9CiAKQEAgLTQyLDcgKzQyLDcgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbmZvQm94IDogcHVibGljIElT
T0Z1bGxCb3ggewogICAgIEZvdXJDQyBtX3NjaGVtZTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQ
T1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEluZm9Cb3ggOiBwdWJsaWMgSVNPRnVs
bEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVl
c3RJbmZvQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGljOgogICAgIHN0YXRp
YyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmtyaSI7IH0KIApAQCAtNTUsNyArNTUs
NyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJ
bmZvQm94IDogcHVibGljIElTT0Z1bGxCb3ggewogICAgIEtleUlEIG1fa2V5SUQ7CiB9OwogCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggOiBw
dWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5n
S2V5QXNzZXRJZEJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3ggewogcHVibGljOgogICAgIHN0YXRp
YyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZmthaSI7IH0KICAgICBjb25zdCBWZWN0
b3I8dWludDhfdD4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpAQCAtNjYsNyArNjYs
NyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleUFzc2V0SWRC
b3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8dWludDhfdD4gbV9kYXRhOwogfTsKIAot
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IDog
cHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWlu
Z0tleUNvbnRleHRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrY3giOyB9CiAgICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KQEAgLTc3LDcgKzc3
LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlDb250ZXh0
Qm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZGF0YTsKIH07CiAK
LWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RC
b3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrdmwiOyB9CiAgICAg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+IHZlcnNpb25zKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9u
czsgfQpAQCAtODgsNyArODgsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IG1fdmVyc2lvbnM7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggOiBwdWJsaWMgSVNPQm94IHsKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCBmaW5hbCA6IHB1YmxpYyBJ
U09Cb3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVy
biAiZnBzayI7IH0KIApAQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElT
T0ZhaXJQbGF5U3RyZWFtaW5nS2V5UmVxdWVzdEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIE9w
dGlvbmFsPElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5VmVyc2lvbkxpc3RCb3g+IG1fdmVyc2lvbkxp
c3Q7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luaXRE
YXRhQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxh
eVN0cmVhbWluZ0luaXREYXRhQm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNkIjsgfQogCkBAIC0x
MjAsNyArMTIwLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJ
bml0RGF0YUJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3RvcjxJU09GYWlyUGxheVN0cmVh
bWluZ0tleVJlcXVlc3RCb3g+IG1fcmVxdWVzdHM7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9S
VCBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggOiBwdWJsaWMgSVNPUHJvdGVjdGlvblN5c3Rl
bVNwZWNpZmljSGVhZGVyQm94IHsKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nUHNzaEJveCBmaW5hbCA6IHB1YmxpYyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNI
ZWFkZXJCb3ggewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8dWludDhfdD4mIGZh
aXJQbGF5U3lzdGVtSUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA4NTdmMzFmMjc3MmY0MDgxZmJhNjM4Zjgx
MGMxMTQ5NDI4NThiOTRiLi41OWNmOGJhMjEzMTZiMzA3YzA1MDIzZWQ1NmQ5YjM5ZDI1NjE3ZjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6YnVmZmVyZWQoKSBjCiAg
ICAgaWYgKCFtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpCiAgICAgICAgIG1fY2FjaGVkTG9hZGVk
VGltZVJhbmdlcyA9IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCk7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hlZExvYWRlZFRpbWVS
YW5nZXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fY2Fj
aGVkTG9hZGVkVGltZVJhbmdlcyk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAppbmRleCAzOTVjZTc4MmU4YzU4
MDQ1OTYxNjI0Njk4MGYzM2VhZGYwM2I3OGIyLi41ZjViNmY2OTUyYjQ5M2E5ODg3YmFmYzdmMzBi
N2JlZTczMzQxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6
On5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjKCkgPSBkZWZhdWx0OwogV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1Q
aWNrZXIoKQogewogICAgIGlmICghbV90YXJnZXRQaWNrZXIpCi0gICAgICAgIG1fdGFyZ2V0UGlj
a2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjPigqdGhp
cyk7CisgICAgICAgIG1fdGFyZ2V0UGlja2VyID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTWFjPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fdGFyZ2V0UGlja2VyLmdldCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5o
CmluZGV4IDc2MDhhMDE3MjYzYjMwNDQ0Y2FiZTUzNWZkYTQ0Yzk5ZmZhZjExZjIuLmQ2MTY3Yjg3
Njg5OTlkYzA0OTQ3NTM4MjBkOWEyYmM3YmVkMDY0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y7CiAK
IGNsYXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25DRiBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1T
ZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YmIHBh
cmVudCwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBh
ZjBhN2NjNzdiZjI5MmNkZmQ2NmFiYzZlN2Y2M2E1MDkwMGFhZDY3Li4zYjcwZTc2NjM5ZTU5NDBh
ZjFmMmIxZDViZjI2NzNhZTMyZGVjYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTk4LDYgKzk4
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFBBTDsKIGNsYXNzIExheWVyQ2xpZW50OwogCiBjbGFzcyBB
VkZXcmFwcGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBB
VkZXcmFwcGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKik7CiAgICAgfkFWRldy
YXBwZXIoKTsKQEAgLTIxMyw2ICsyMTQsNyBAQCBjbGFzcyBBVkZXcmFwcGVyIHsKIHVpbnRwdHJf
dCBBVkZXcmFwcGVyOjpzX25leHRBVkZXcmFwcGVyT2JqZWN0SUQ7CiAKIGNsYXNzIExheWVyQ2xp
ZW50IDogcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGF5ZXJDbGllbnQoQVZGV3JhcHBlciogcGFyZW50KSA6
IG1fcGFyZW50KHBhcmVudCkgeyB9CiAgICAgdmlydHVhbCB+TGF5ZXJDbGllbnQoKSB7IG1fcGFy
ZW50ID0gMDsgfQpAQCAtMzQzLDcgKzM0NSw3IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGds
b2JhbExvYWRlckRlbGVnYXRlUXVldWUoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRp
YVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVk
aWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVz
LCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKIH0KIApAQCAtNjcy
LDcgKzY3NCw3IEBAIHN0YXRpYyBib29sIHRpbWVSYW5nZUlzVmFsaWRBbmROb3RFbXB0eShDTVRp
bWUgc3RhcnQsIENNVGltZSBkdXJhdGlvbikKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtQnVmZmVy
ZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtl
VW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIAogICAgIGlmICghYXZQbGF5ZXJJdGVtKG1f
YXZmV3JhcHBlcikpCiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwpAQCAtMTEzNyw3ICsxMTM5
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpjcmVhdGVTZXNzaW8KICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9y
dGVkKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+KCp0aGlzLCBj
bGllbnQpOwogfQogCiAjZWxpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTE2
NDEsNiArMTY0Myw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxs
YmFjayhBVkNGUGxheWVyUmVmLCBDTVRpbWUgY21UaW1lLCB2b2lkCiB9CiAKIHN0cnVjdCBOb3Rp
ZmljYXRpb25DYWxsYmFja0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1fcHJvcGVydHlOYW1lOwogICAgIHZvaWQq
IG1fY29udGV4dDsKIApAQCAtMTcwOCw3ICsxNzExLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpub3Rp
ZmljYXRpb25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIs
IEMKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhpZj0l
ZCkgJXMiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ob2JzZXJ2ZXIpLCBub3RpZmljYXRp
b25OYW1lKTsKICNlbmRpZgogCi0gICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIp
OworICAgIGF1dG8gbm90aWZpY2F0aW9uRGF0YSA9IG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9uQ2Fs
bGJhY2tEYXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKIAogICAgIGRpc3BhdGNoX2FzeW5j
X2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbm90aWZpY2F0aW9uRGF0YS5yZWxlYXNlKCks
IHByb2Nlc3NOb3RpZmljYXRpb24pOwogfQpAQCAtMTc4NSw2ICsxNzg4LDcgQEAgdm9pZCBBVkZX
cmFwcGVyOjpzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgTWVkaWFUaW1l
JiBuZWdhdGl2ZVRvbGUKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9H
Uk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKIHN0cnVj
dCBMZWdpYmxlT3V0cHV0RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX2F0dHJpYnV0ZWRTdHJpbmdzOwogICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBtX3NhbXBsZXM7CiAgICAgTWVkaWFUaW1lIG1fdGltZTsKQEAg
LTE4MzMsNyArMTgzNyw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNr
KHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1CiAKICAgICBBU1NFUlQo
bGVnaWJsZU91dHB1dCA9PSBzZWxmLT5tX2xlZ2libGVPdXRwdXQpOwogCi0gICAgYXV0byBsZWdp
YmxlT3V0cHV0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnaWJsZU91dHB1dERhdGE+KGF0dHJp
YnV0ZWRTdHJpbmdzLCBuYXRpdmVTYW1wbGVCdWZmZXJzLCBQQUw6OnRvTWVkaWFUaW1lKGl0ZW1U
aW1lKSwgY29udGV4dCk7CisgICAgYXV0byBsZWdpYmxlT3V0cHV0RGF0YSA9IG1ha2VVbmlxdWU8
TGVnaWJsZU91dHB1dERhdGE+KGF0dHJpYnV0ZWRTdHJpbmdzLCBuYXRpdmVTYW1wbGVCdWZmZXJz
LCBQQUw6OnRvTWVkaWFUaW1lKGl0ZW1UaW1lKSwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9h
c3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGxlZ2libGVPdXRwdXREYXRhLnJlbGVh
c2UoKSwgcHJvY2Vzc0N1ZSk7CiB9CkBAIC0xODQxLDYgKzE4NDUsNyBAQCB2b2lkIEFWRldyYXBw
ZXI6OmxlZ2libGVPdXRwdXRDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBBVkNGUGxheWVySXRlbUxl
Z2libGVPdXRwdQogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFKQogc3Ry
dWN0IExvYWRSZXF1ZXN0RGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFJldGFpblB0cjxBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UmVmPiBtX3Jl
cXVlc3Q7CiAgICAgdm9pZCogbV9jb250ZXh0OwogCkBAIC0xOTI2LDcgKzE5MzEsNyBAQCBCb29s
ZWFuIEFWRldyYXBwZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVl
c3RlZFJlc291cmNlKEFWQ0ZBcwogCiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cmVzb3Vy
Y2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoJXApIiwgc2Vs
Zik7CiAKLSAgICBhdXRvIGxvYWRSZXF1ZXN0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZFJl
cXVlc3REYXRhPihsb2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CisgICAgYXV0byBsb2FkUmVxdWVz
dERhdGEgPSBtYWtlVW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9hZGluZ1JlcXVlc3QsIGNvbnRl
eHQpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBs
b2FkUmVxdWVzdERhdGEucmVsZWFzZSgpLCBwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJl
c291cmNlKTsKIApAQCAtMTk1Myw3ICsxOTU4LDcgQEAgUGxhdGZvcm1MYXllciogQVZGV3JhcHBl
cjo6cGxhdGZvcm1MYXllcigpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gQ3JlYXRlIGEg
UGxhdGZvcm1DQUxheWVyIHNvIHdlIGNhbiByZXNpemUgdGhlIHZpZGVvIGxheWVyIHRvIG1hdGNo
IHRoZSBlbGVtZW50IHNpemUuCi0gICAgbV9sYXllckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
TGF5ZXJDbGllbnQ+KHRoaXMpOworICAgIG1fbGF5ZXJDbGllbnQgPSBtYWtlVW5pcXVlPExheWVy
Q2xpZW50Pih0aGlzKTsKICAgICBpZiAoIW1fbGF5ZXJDbGllbnQpCiAgICAgICAgIHJldHVybiAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggZTE0YWYxYTI3ZjI2YmQxYWQ2MDI4NjA0YTU3NTJmMGRmOWE4ZGY1Mi4uN2Rl
MTRjMjU3MWY3ZDM4ZWVjYmIzNDhmZGEzYzc0YTQzZGViODJhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzMsMTMgKzMz
LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNrKiB0cmFjaykKLSAgICA6
IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNr
KSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRy
YWNrKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoTWVkaWFTZWxlY3Rpb25P
cHRpb25BVkZPYmpDJiBvcHRpb24pCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKIHsKICAgICByZXNldFByb3BlcnRp
ZXNGcm9tVHJhY2soKTsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNr
KQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBA
IC02OSwxNCArNjksMTQgQEAgQVZQbGF5ZXJJdGVtVHJhY2sqIEF1ZGlvVHJhY2tQcml2YXRlQVZG
T2JqQzo6cGxheWVySXRlbVRyYWNrKCkKIH0KIAogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1w
bChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAg
ICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkK
IHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogdm9pZCBBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAg
ICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRy
YWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtODcsNyAr
ODcsNyBAQCBBVkFzc2V0VHJhY2sqIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6YXNzZXRUcmFj
aygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdGlvbk9w
dGlvbihNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKIHsKLSAgICBtX2ltcGwg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7Cisg
ICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24p
OwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5jcHAKaW5kZXggZWMwZDBlZGRiZjczYmVlZGE2NzE3YjdhNTE4YzczMjEyNjA5NWFlMi4u
ZGY1MjI2YTRlYTAzNmU1NmZhMjUzOWE2Mjc2MmEyMzhhZTcwZTBhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMqIHBhcmVudCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKICAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKICAg
ICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRU
cmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VV
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVy
dGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaAppbmRleCAyMmFhZmVjN2I4MzQyN2I4MTMwYTdjMDQz
ZjhmNjcyMDgzNGNjYTQ3Li41ZDhlMjUwNzQ3MGJjN2E0OTk5NTVjOTgxYjE3NmZmNDQ0ZmJjNmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRp
b25PYmpDLmgKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwogCi1jbGFzcyBDRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQyA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM+IHsKK2NsYXNzIENETVNlc3Npb25BVkZv
dW5kYXRpb25PYmpDIGZpbmFsIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24sIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIHBhcmVudCwgTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCopOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLmgKaW5kZXggMjRiMmExN2Q5NzdlYmJmMDUzMzUwYzU1ZDlkNDA5YTYxMjc5NjM4Zi4uMzll
YThlNTExMzYzMmFlNzRiZjUzNjRhOGQxYjAyNjk3MjIxYWE1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNDIs
NiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOwogCiBjbGFzcyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDIDogcHVibGlj
IExlZ2FjeUNETVNlc3Npb24sIHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9y
Q2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2Jq
Qz4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMoQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyYsIExlZ2Fj
eUNETVNlc3Npb25DbGllbnQqKTsKICAgICB2aXJ0dWFsIH5DRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bQppbmRleCA1NDgyMGQyMjUxOTdkYjdmOWJlNzNmNGZiZDJjZWM4NzhmOWE4MDA4Li4zMjZkYWRi
YjE3ZDA4OTExNzBlYjc1NDUzYjYzNDhkN2ZlODM5NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIElt
YWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01ldGFkYXRhKCkKICAgICAgICAgfHwgIW1faW1h
Z2VSb3RhdGlvblNlc3Npb24tPnRyYW5zZm9ybSgpCiAgICAgICAgIHx8IG1faW1hZ2VSb3RhdGlv
blNlc3Npb24tPnRyYW5zZm9ybSgpLnZhbHVlKCkgIT0gZmluYWxUcmFuc2Zvcm0KICAgICAgICAg
fHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+c2l6ZSgpICE9IHNpemUpCi0gICAgICAgIG1faW1h
Z2VSb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9u
VlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJC
R1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwor
ICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgc2l6ZSwga0NWUGl4ZWxGb3JtYXRU
eXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6
WWVzKTsKIAogICAgIG1fc2l6ZSA9IGV4cGFuZGVkSW50U2l6ZShtX2ltYWdlUm90YXRpb25TZXNz
aW9uLT5yb3RhdGVkU2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDVjZDIy
NDAzYWEyYzJlZjYyMmUzMDBkMDA3NDFmYzBjMzMzOWJmMzYuLjdmYzAxOGFlNThlYWY1MjU2MGRl
ZTZiMzRhMWE5N2NlN2QwMWQyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjc2LDcg
KzI3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhCiAgICAgaWYgKCFpc0F2YWlsYWJsZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+
KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBl
LCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAtMzY2LDcgKzM2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmCiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXIqIHBs
YXllcikKICAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbihwbGF5ZXIpCi0gICAg
LCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAg
ICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdCkKICAgICAsIG1fb2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3JlQVZGTW92
aWVPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhQbGF5ZXI6bWFrZVdlYWtQdHIoKnRoaXMpXSkpCiAg
ICAgLCBtX3ZpZGVvRnJhbWVIYXNEcmF3bihmYWxzZSkKQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0UHJlc2VydmVzUGl0Y2go
Ym9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRp
bWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSkKICAg
ICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CkBAIC0xODkyLDcgKzE4OTIsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbigpCiAg
ICAgICAgICYmIG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNpemUoKSA9PSBuYXR1cmFsU2l6ZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSks
IG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOworICAgIG1faW1hZ2VSb3RhdGlvblNl
c3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxU
cmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKIH0KIAogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKQEAgLTIyMTYsNyArMjIxNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkK
ICNlbHNlCiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IG5pbDsKICNlbmRpZgot
ICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwor
ICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0K
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMjI2NSw3ICsyMjY1LDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGgKICAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZlckdldEhl
aWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJl
Q29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8
VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVD
b3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CiAKICAg
ICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJl
KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBv
dXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0
aXBseUFscGhhLCBmbGlwWSk7CiB9CkBAIC0yMzMwLDcgKzIzMzAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y3JlYXRlU2VzcwogewogICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsKKyAgICBhdXRv
IHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0aGlzLCBj
bGllbnQpOwogICAgIG1fc2Vzc2lvbiA9IG1ha2VXZWFrUHRyKCpzZXNzaW9uKTsKICAgICByZXR1
cm4gV1RGTW92ZShzZXNzaW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggNzM5
NmU1YjFiNDMxMTk4ZTVlNjBkOGZjZDA2MzU5YmIyN2NmNDlmNy4uYTFkZDBmOTA5MWZiMjg2NDY4
ZGJlMGFlMTBjZThiM2MxNDJjMGJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTI2
OCw2ICsyNjgsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMK
ICAgICBmcmllbmQgY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzsKIAogICAgIHN0cnVj
dCBQZW5kaW5nU2VlayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgUGVuZGluZ1NlZWsoY29uc3QgTWVkaWFUaW1lJiB0YXJnZXRUaW1lLCBjb25zdCBN
ZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVGhy
ZXNob2xkKQogICAgICAgICAgICAgOiB0YXJnZXRUaW1lKHRhcmdldFRpbWUpCiAgICAgICAgICAg
ICAsIG5lZ2F0aXZlVGhyZXNob2xkKG5lZ2F0aXZlVGhyZXNob2xkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCmluZGV4IGYxOTUxNTZkOGNmMjI1NmY2MGY5ZjU1MzI0MTI5ZTg1MjNkOWQzOGIu
LjljMGFlZjYxOWFkYzJhMzE4ZjBkYjdkMmUzODY3YzIxZGZjMzFkZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhNZWRp
YQogICAgICwgbV9wbGF5aW5nKDApCiAgICAgLCBtX3NlZWtpbmcoZmFsc2UpCiAgICAgLCBtX2xv
YWRpbmdQcm9ncmVzc2VkKGZhbHNlKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFn
ZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQor
ICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogICAgICwgbV9lZmZlY3RpdmVSYXRlQ2hhbmdlZExp
c3RlbmVyKEVmZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcywgW21fc3lu
Y2hyb25pemVyIHRpbWViYXNlXSkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBt
X2xvZ2dlcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCkBAIC0yMDEsNyArMjAxLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFF
bmdpbmUoTWVkaWFFbmdpbmVSZWdpc3QKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4o
cGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1
cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXll
cik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAs
IDApOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFp
bGFibGUoKSk7CiB9CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYgdGkK
ICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidGltZSA9ICIsIHRpbWUsICIsIG5lZ2F0aXZl
VGhyZXNob2xkID0gIiwgbmVnYXRpdmVUaHJlc2hvbGQsICIsIHBvc2l0aXZlVGhyZXNob2xkID0g
IiwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgbV9zZWVraW5nID0gdHJ1ZTsKLSAgICBtX3Bl
bmRpbmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwgbmVnYXRpdmVU
aHJlc2hvbGQsIHBvc2l0aXZlVGhyZXNob2xkKTsKKyAgICBtX3BlbmRpbmdTZWVrID0gbWFrZVVu
aXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwgbmVnYXRpdmVUaHJlc2hvbGQsIHBvc2l0aXZlVGhyZXNo
b2xkKTsKIAogICAgIGlmIChtX3NlZWtUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3NlZWtU
aW1lci5zdG9wKCk7CkBAIC01NDMsNyArNTQzLDcgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWFkeVN0YXRlKCkgY29uc3QK
IAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBt
YXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkp
OwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpt
YXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CkBAIC01NTgsNyArNTU4LDcgQEAgTWVkaWFUaW1l
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bWluTWVkaWFUaW1lU2Vla2Fi
bGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVy
ZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVy
biBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5idWZmZXJlZCgp
IDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdApA
QCAtNjAyLDcgKzYwMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjp1cGRhdGVMYXN0SW1hZ2UoKQogCiAgICAgaWYgKCFtX3JnYkNvbmZvcm1lcikgewogICAg
ICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1
ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9Owot
ICAgICAgICBtX3JnYkNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25m
b3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKKyAgICAgICAg
bV9yZ2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAgICAgbV9sYXN0SW1h
Z2UgPSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9sYXN0UGl4
ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtNjQ5LDcgKzY0OSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUo
R3JhCiAgICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4
ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAg
ICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNv
cGllckNWPigqY29udGV4dCk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVu
aXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJuIG1fdmlk
ZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQaXhlbEJ1
ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxp
cFkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGNhM2IxMTM1NTJiMzg4NWM5
OTk3N2RhZTJhMjFlYTE2NTc3ZWRhODAuLjlkZWVlNDZmMmNhMjQ1Mjk1M2RmNWNhODhiYjY5Zjgx
OGU3ZTRlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTE4Myw3ICsxODMsNyBA
QCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYQogICAgIDogbV9wbGF5ZXIocGxheWVyKQogICAgICwg
bV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXND
aGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9jbG9j
ayhQQUw6OkNsb2NrOjpjcmVhdGUoKSkKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkK
KyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKICAgICAsIG1fbG9nSWRl
bnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQpAQCAtMjIwLDcgKzIy
MCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihb
XShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlw
ZXMsCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBt
YWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsg
fSwgZ2V0U3VwcG9ydGVkVHlwZXMsCiAgICAgICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAs
IDApOwogfQogCkBAIC0xMDU0LDEyICsxMDU0LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNl
ZWthYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2UoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9y
bWVyKQotICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFy
eVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlw
ZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKKyAgICAgICAgbV9pbWFnZVBh
aW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9y
bWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICop
a0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMy
QkdSQSkgfSk7CiAKICAgICBBU1NFUlQobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3Jt
ZXIpOwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcApp
bmRleCBjODcxYzU5NDgzNTUwODU3MTgyYzdhMjRkNTUzNGI4NWE1ZDRlZjdlLi4yOTQ4M2JhNWU5
OGQ5NWZhOGU1ZWM5YTZhMTBiZjY0MWFhZTM1NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKQEAgLTM0LDE5ICszNCwxOSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAgOiBtX2lt
cGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisg
ICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykp
CiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJhY2sp
Ci0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
Pih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJ
bXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKE1lZGlhU2Vs
ZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKKyAgICA6IG1faW1wbChtYWtl
VW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCiB7CiAgICAgcmVzZXRQ
cm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKEFWUGxheWVySXRlbVRyYWNr
ICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsK
IH0KIApAQCAtNzcsNyArNzcsNyBAQCBBVlBsYXllckl0ZW1UcmFjayogVmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAg
IG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwog
ICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC04OCw3ICs4OCw3IEBAIEFW
QXNzZXRUcmFjayogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjphc3NldFRyYWNrKCkKIAogdm9p
ZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0b25PcHRpb24oTWVkaWFT
ZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtl
X3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1faW1wbCA9
IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAgICByZXNl
dFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRl
eCBmY2MyNDk2YTEzNWFhNGY3M2E4ZmU1NDhkMTRlMGM4MDAwNGFkMWIwLi45NzU2Y2ZmYWZkOGMz
ZjZmZTNiNDdhMjMzMzcxYjc0ZGVjOThkMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpA
QCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMo
QVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCkK
LSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+
KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKSkKICAgICAsIG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fdHJhY2tJRCgtMSkK
ICAgICAsIG1fc2VsZWN0ZWQoZmFsc2UpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAK
IHZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2so
QVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVl
PEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNG
cm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMTcxZjI3NzJjOTRhNjljZGE3MzQ5
M2NjOWM4Yzc4NzhiMDAxMDhkZC4uODc2NTM0NDUyMDI0ZTYxNjUxNDE3YTA0YTBkOTQ1MDU4YTk1
NDAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNjM2LDEyICsxNjM2LDEyIEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKENvbW1pdFN0YXRlJiBjb21taXRTdGF0
ZSwgY29uc3QgVHJhCiAgICAgaWYgKHVzZXNEaXNwbGF5TGlzdERyYXdpbmcoKSAmJiBtX2RyYXdz
Q29udGVudCAmJiAoIW1faGFzRXZlclBhaW50ZWQgfHwgaGFkRGlydHlSZWN0cykpIHsKICAgICAg
ICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRGlzcGxheUxpc3RSZWNvcmRTdGFydCwgRGlzcGxh
eUxpc3RSZWNvcmRFbmQpOwogCi0gICAgICAgIG1fZGlzcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKKyAgICAgICAgbV9kaXNwbGF5TGlzdCA9
IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwogICAgICAgICAKICAgICAg
ICAgRmxvYXRSZWN0IGluaXRpYWxDbGlwKGJvdW5kc09yaWdpbigpLCBzaXplKCkpOwogCiAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNv
cmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIGlu
aXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlMaXN0LCBHcmFw
aGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAg
ICAgICB9KTsKICAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQpAQCAtMjg2Nyw3ICsyODY3LDcg
QEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbigpIGNv
bnN0CiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJBbmltYXRpb25zKCkKIHsKICAg
ICBpZiAoIW1fYW5pbWF0aW9ucykKLSAgICAgICAgbV9hbmltYXRpb25zID0gc3RkOjptYWtlX3Vu
aXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CisgICAgICAgIG1fYW5pbWF0aW9ucyA9IG1ha2VVbmlx
dWU8TGF5ZXJBbmltYXRpb25zPigpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5p
bWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uJiBjYUFuaW0sIEFuaW1hdGVkUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGlu
dCBzdWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KQpAQCAtMzkwMyw3ICszOTAzLDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJRCwgUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4KICAgICBjb250ZW50c0xheWVyID0gbnVsbHB0cjsKIAogICAg
IGlmICghbV9sYXllckNsb25lcykKLSAgICAgICAgbV9sYXllckNsb25lcyA9IHN0ZDo6bWFrZV91
bmlxdWU8TGF5ZXJDbG9uZXM+KCk7CisgICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBtYWtlVW5pcXVl
PExheWVyQ2xvbmVzPigpOwogCiAgICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNsb25lKGNs
b25lSUQsIG1fbGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMtPnByaW1hcnlMYXllckNsb25lcywg
Y2xvbmVMZXZlbCk7CiAgICAgc3RydWN0dXJhbExheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25l
SUQsIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLT5zdHJ1Y3R1cmFsTGF5
ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCAzYWM0YzFlMzJhMTU0OGQ1OGM2
OTExMTdjYzY5YTI5YzRkY2YwZTFhLi5jNGIyYzljMzQ3MDgwYTZiN2M5NmQ2NzAyZjRhNGQ4YTMw
YzdmNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5
ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50
IHsKICAgICBGbG9hdFNpemUgcGl4ZWxBbGlnbm1lbnRPZmZzZXQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0OyB9CiAKICAgICBzdHJ1Y3QgQ29tbWl0U3Rh
dGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHVu
c2lnbmVkIHRyZWVEZXB0aCB7IDAgfTsKICAgICAgICAgdW5zaWduZWQgdG90YWxCYWNrZHJvcEZp
bHRlckFyZWEgeyAwIH07CiAgICAgICAgIGJvb2wgYW5jZXN0b3JIYWRDaGFuZ2VzIHsgZmFsc2Ug
fTsKQEAgLTMwOSw2ICszMTAsNyBAQCBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiAgICAgdHlwZWRlZiB1
bnNpZ25lZCBDb21wdXRlVmlzaWJsZVJlY3RGbGFnczsKICAgICAKICAgICBzdHJ1Y3QgVmlzaWJs
ZUFuZENvdmVyYWdlUmVjdHMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdDsKICAgICAgICAgRmxvYXRSZWN0IGNv
dmVyYWdlUmVjdDsKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYW5pbWF0aW5nVHJhbnNm
b3JtOwpAQCAtMzI4LDYgKzMzMCw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBH
cmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIAogICAgIC8vIFVz
ZWQgdG8gdHJhY2sgdGhlIHBhdGggZG93biB0aGUgdHJlZSBmb3IgcmVwbGljYSBsYXllcnMuCiAg
ICAgc3RydWN0IFJlcGxpY2FTdGF0ZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhSZXBsaWNhRGVwdGggPSAx
NjsKICAgICAgICAgZW51bSBSZXBsaWNhQnJhbmNoVHlwZSB7IENoaWxkQnJhbmNoID0gMCwgUmVw
bGljYUJyYW5jaCA9IDEgfTsKICAgICAgICAgUmVwbGljYVN0YXRlKFJlcGxpY2FCcmFuY2hUeXBl
IGZpcnN0QnJhbmNoKQpAQCAtNTc5LDYgKzU4Miw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6
IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIAog
ICAgIC8vIFJlZmVyZW5jZXMgdG8gY2xvbmVzIG9mIG91ciBsYXllcnMsIGZvciByZXBsaWNhdGVk
IGxheWVycy4KICAgICBzdHJ1Y3QgTGF5ZXJDbG9uZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVyTWFwIHByaW1hcnlMYXllckNsb25lczsK
ICAgICAgICAgTGF5ZXJNYXAgc3RydWN0dXJhbExheWVyQ2xvbmVzOwogICAgICAgICBMYXllck1h
cCBjb250ZW50c0xheWVyQ2xvbmVzOwpAQCAtNjA4LDYgKzYxMiw3IEBAIGNsYXNzIEdyYXBoaWNz
TGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50IHsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8QW5pbWF0aW9uUHJvY2Vz
c2luZ0FjdGlvbj4+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+PiBBbmltYXRpb25zTWFwOwog
ICAgIHN0cnVjdCBMYXllckFuaW1hdGlvbnMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiB1bmNv
bWl0dGVkQW5pbWF0aW9uczsKICAgICAgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcCBhbmltYXRp
b25zVG9Qcm9jZXNzOwogICAgICAgICBBbmltYXRpb25zTWFwIHJ1bm5pbmdBbmltYXRpb25zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuY3BwCmluZGV4IDRkNjRjMmM0YjE5YjMxYjgwNTRjMWJjNDFhYzAyMjU3M2JlZmY1NjIu
LjMwNWVmZDMzM2JkNjExYzZlZjVlNGMxYjI2MjI4ODc1MjU2ZjI0ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAK
QEAgLTY2LDcgKzY2LDcgQEAgU3RyaW5nIFRpbGVDb250cm9sbGVyOjp6b29tZWRPdXRUaWxlR3Jp
ZENvbnRhaW5lckxheWVyTmFtZSgpCiBUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIoUGxh
dGZvcm1DQUxheWVyKiByb290UGxhdGZvcm1MYXllcikKICAgICA6IG1fdGlsZUNhY2hlTGF5ZXIo
cm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKG93bmluZ0dyYXBo
aWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSkKLSAgICAsIG1f
dGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQorICAgICwgbV90aWxl
R3JpZChtYWtlVW5pcXVlPFRpbGVHcmlkPigqdGhpcykpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRp
b25UaW1lcigqdGhpcywgJlRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJl
ZCkKICAgICAsIG1fdGlsZVNpemVDaGFuZ2VUaW1lcigqdGhpcywgJlRpbGVDb250cm9sbGVyOjp0
aWxlU2l6ZUNoYW5nZVRpbWVyRmlyZWQsIHRpbGVTaXplVXBkYXRlRGVsYXkpCiAgICAgLCBtX21h
cmdpbkVkZ2VzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQpAQCAtMTMyLDcgKzEzMiw3IEBA
IHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCiAgICAg
aWYgKG1fem9vbWVkT3V0Q29udGVudHNTY2FsZSAmJiBtX3pvb21lZE91dENvbnRlbnRzU2NhbGUg
PT0gdGlsZUdyaWQoKS5zY2FsZSgpICYmIHRpbGVHcmlkKCkuc2NhbGUoKSAhPSBzY2FsZSAmJiAh
bV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlTY2FsZUZhY3RvcikgewogICAgICAgICBtX3pvb21lZE91
dFRpbGVHcmlkID0gV1RGTW92ZShtX3RpbGVHcmlkKTsKICAgICAgICAgbV96b29tZWRPdXRUaWxl
R3JpZC0+c2V0SXNab29tZWRPdXRUaWxlR3JpZCh0cnVlKTsKLSAgICAgICAgbV90aWxlR3JpZCA9
IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKTsKKyAgICAgICAgbV90aWxlR3JpZCA9
IG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlzKTsKICAgICAgICAgdGlsZUdyaWRzQ2hhbmdlZCgp
OwogICAgIH0KIApAQCAtNTAwLDcgKzUwMCw3IEBAIEZsb2F0UmVjdCBUaWxlQ29udHJvbGxlcjo6
YWRqdXN0VGlsZUNvdmVyYWdlUmVjdEZvclNjcm9sbGluZyhjb25zdCBGbG9hdFJlY3QmIGNvCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFtX2hpc3RvcmljYWxWZWxvY2l0eURh
dGEpCi0gICAgICAgICAgICBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhpc3RvcmljYWxWZWxvY2l0eURhdGE+KCk7CisgICAgICAgICAgICBtX2hpc3RvcmljYWxW
ZWxvY2l0eURhdGEgPSBtYWtlVW5pcXVlPEhpc3RvcmljYWxWZWxvY2l0eURhdGE+KCk7CiAKICAg
ICAgICAgbV92ZWxvY2l0eSA9IG1faGlzdG9yaWNhbFZlbG9jaXR5RGF0YS0+dmVsb2NpdHlGb3JO
ZXdEYXRhKHNjcm9sbE9mZnNldCwgY29udGVudHNTY2FsZSwgTW9ub3RvbmljVGltZTo6bm93KCkp
OwogICAgIH07CkBAIC02ODUsNyArNjg1LDcgQEAgSW50UmVjdCBUaWxlQ29udHJvbGxlcjo6dGls
ZUNvdmVyYWdlUmVjdCgpIGNvbnN0CiBQbGF0Zm9ybUNBTGF5ZXIqIFRpbGVDb250cm9sbGVyOjp0
aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVyKCkKIHsKICAgICBpZiAoIW1fY292ZXJhZ2VNYXAp
Ci0gICAgICAgIG1fY292ZXJhZ2VNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb3ZlcmFnZU1h
cD4oKnRoaXMpOworICAgICAgICBtX2NvdmVyYWdlTWFwID0gbWFrZVVuaXF1ZTxUaWxlQ292ZXJh
Z2VNYXA+KCp0aGlzKTsKIAogICAgIHJldHVybiAmbV9jb3ZlcmFnZU1hcC0+bGF5ZXIoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1Bs
YXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KaW5kZXggYTQ4NTIzY2Y1MTc2YjMxZjJh
Y2M0OTg0YjJlY2Q4ZTJjODc0ZjYwNy4uMzZhYzJmNzg0YjAwNmZmOWM3MDNmNDFlN2JmZjY4N2Ex
YWE0YzY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTMxMyw3ICsz
MTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjb21tb25Jbml0KCkKICAgICAgICAg
V2ViVGlsZWRCYWNraW5nTGF5ZXIqIHRpbGVkQmFja2luZ0xheWVyID0gc3RhdGljX2Nhc3Q8V2Vi
VGlsZWRCYWNraW5nTGF5ZXIqPihtX2xheWVyLmdldCgpKTsKICAgICAgICAgVGlsZUNvbnRyb2xs
ZXIqIHRpbGVDb250cm9sbGVyID0gW3RpbGVkQmFja2luZ0xheWVyIGNyZWF0ZVRpbGVDb250cm9s
bGVyOnRoaXNdOwogCi0gICAgICAgIG1fY3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkp
OworICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1DQUxheWVy
TGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKICAgICB9CiAKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC05NDcsNyArOTQ3LDcgQEAgRmxvYXRSb3VuZGVk
UmVjdCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2hhcGVSb3VuZGVkUmVjdCgpIGNvbnN0CiB2b2lk
IFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91
bmRlZFJlY3QmIHJvdW5kZWRSZWN0KQogewogICAgIEFTU0VSVChtX2xheWVyVHlwZSA9PSBMYXll
clR5cGVTaGFwZUxheWVyKTsKLSAgICBtX3NoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICBtX3NoYXBlUm91bmRlZFJl
Y3QgPSBtYWtlVW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKIAogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIFBhdGggc2hhcGVQYXRoOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNr
aW5nTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9X
ZWJUaWxlZEJhY2tpbmdMYXllci5tbQppbmRleCBjMTkxZjM5MWM2NDU3MmNjOTk1NWE0N2M2Y2I3
YjkwMDc4NjcyNjM5Li5iM2UyMWY2NDBhZTkxYTBkMWY1OTM4NDZhODUwZmVjMjJmYTc4YTViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJU
aWxlZEJhY2tpbmdMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQpAQCAtNjIsNyArNjIsNyBAQCAtIChp
ZClpbml0V2l0aExheWVyOihpZClsYXllcgogLSAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXIqKWNy
ZWF0ZVRpbGVDb250cm9sbGVyOihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqKXJvb3RMYXllcgog
ewogICAgIEFTU0VSVCghX3RpbGVDb250cm9sbGVyKTsKLSAgICBfdGlsZUNvbnRyb2xsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOworICAg
IF90aWxlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI+KHJv
b3RMYXllcik7CiAgICAgcmV0dXJuIF90aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FM
YXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luLmNwcAppbmRleCAxNWQ0ZTQ2YjA2Yzc2YzE3ZjM0MDUxMzljNmM5Nzlj
MTAxN2IzNjk2Li5kNmE3YzE2OGYwZTQ0MWZkN2QyOTBmYzRmZTMxMzYwYzU4NWQ1Njg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIFBsYXRmb3JtQ0FM
YXllcldpbjo6UGxhdGZvcm1DQUxheWVyV2luKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3Jt
TGF5ZXIqIGxheWVyCiAgICAgaWYgKHVzZXNUaWxlZEJhY2tpbmdMYXllcigpKSB7CiAgICAgICAg
IGludGVybiA9IG5ldyBXZWJUaWxlZEJhY2tpbmdMYXllcldpbih0aGlzKTsKICAgICAgICAgVGls
ZUNvbnRyb2xsZXIqIHRpbGVDb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWJUaWxlZEJh
Y2tpbmdMYXllcldpbio+KGludGVybiktPmNyZWF0ZVRpbGVDb250cm9sbGVyKHRoaXMpOwotICAg
ICAgICBtX2N1c3RvbVN1YmxheWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVy
TGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0
b21TdWJsYXllcnMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9s
bGVyLT5jb250YWluZXJMYXllcnMoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGludGVybiA9IG5l
dyBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbCh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJh
Y2tpbmdMYXllcldpbi5jcHAKaW5kZXggMjI0ZDhiYmVlZDM5OTJhZWVmYzkzMmExYmVlODBkYzYz
ZmNhMmY4Yi4uYzVhNzNlOGQzYWU5YmI0OWE5NmJlMjdmNTMyN2UwNmMwNjIxNGZjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFj
a2luZ0xheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9p
ZCBXZWJUaWxlZEJhY2tpbmdMYXllcldpbjo6c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZh
bHVlKQogVGlsZUNvbnRyb2xsZXIqIFdlYlRpbGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVUaWxl
Q29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RMYXllcikKIHsKICAgICBBU1NFUlQoIW1f
dGlsZUNvbnRyb2xsZXIpOwotICAgIG1fdGlsZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOworICAgIG1fdGlsZUNvbnRyb2xsZXIgPSBtYWtl
VW5pcXVlPFRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOwogICAgIHJldHVybiBtX3RpbGVDb250
cm9sbGVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggYzMx
Y2M2ZTM4YmE1OTljOWZiODI2YWEwMzk3NmIyMDUxY2MxMTViZS4uMThmMzQwNTBhYTllM2I3NDM0
YTYyN2EwNzdjZDJjY2YyZjk5YzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApA
QCAtNDEsNiArNDEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNl
dHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRp
bmdzOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSk7CiBwdWJsaWM6CiAgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBTaGFy
ZWRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDUw
YjdkOWMyM2MwMWFiZmMzYTA1MTc4YzEwNTI1MTA3MGYxNWQ2ZGIuLjA0ZjJhOWZmNTQ2OWFhNWJh
MjRkMTQ5NTY1NGI2MGYwYmM0M2QyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmNwcApAQCAtNDUsNyArNDUsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4
dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAg
ICBbJnBsYXRmb3JtQ29udGV4dF0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4
dCk7CiAgICAgICAgIH0pOwogfQogCkBAIC01NCwxNCArNTQsMTQgQEAgR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNy
ZWF0ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBs
RmFjdG9yeSgKICAgICAgICAgW2NhaXJvQ29udGV4dF0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIGNhaXJvQ29udGV4dCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8+KGNvbnRleHQsIGNhaXJv
Q29udGV4dCk7CiAgICAgICAgIH0pOwogfQogCiBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86Okdy
YXBoaWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJbXBs
KGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCiAgICAgLCBtX3Bs
YXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtl
X3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0
KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdy
YXBoaWNzQ29udGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5
bmNDb250ZXh0KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpAQCAtNjksOSArNjksOSBAQCBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFBsYQogCiBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OkdyYXBoaWNz
Q29udGV4dEltcGxDYWlybyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNhaXJvX3QqIGNhaXJv
Q29udGV4dCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsg
fSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKLSAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQoc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4oY2Fpcm9Db250ZXh0KSkKKyAgICAs
IG1fb3duZWRQbGF0Zm9ybUNvbnRleHQobWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4o
Y2Fpcm9Db250ZXh0KSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KCptX293bmVkUGxhdGZvcm1D
b250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCisgICAgLCBtX3ByaXZhdGUobWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0
KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1f
cHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29u
dGV4dC5jcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGVDYWlyby5oCmluZGV4IDk5ZTE4M2NjNzA1NjAzZDIzNGU4ZThlZDlmZDY2OWQ1OTZmYmVlYTIu
LjA4MzcyNWQ2ZmQzODMyNjA3YWE3NjFmZjlmNjgzNTkwNjY0Yzk4MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZUNhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaApAQCAtNDUsNiArNDUs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0KQogICAgICAgICA6IHBsYXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDEzNzQxNWYzZWFiZjUzMjFmYzM1Y2FjMjBlMWUxMjc4
NGQ3NTIyMzMuLmUwMWU2MGI5ZWVlN2JhMTgzOTdhNjNlZjRhMTc2NjdmZmRjNGE0NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRh
dGE6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICAgICAgcHJv
eHkucHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6
OlNob3VsZEJsZW5kLCBHTF9SR0JBKSk7CisgICAgICAgICAgICAgICAgcHJveHkucHVzaE5leHRC
dWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb21w
b3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBHTF9S
R0JBKSk7CiAgICAgICAgICAgICB9OwogI2lmIFVTRShOSUNPU0lBKQogICAgICAgICBwcm94eU9w
ZXJhdGlvbihkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4o
bV9uaWNvc2lhTGF5ZXItPmltcGwoKSkucHJveHkoKSk7CkBAIC0zMDgsNyArMzA4LDcgQEAgSW1h
Z2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBDb2xvclNwYWMKIAogICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVm
KGNhaXJvX2NyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpKSk7CiAgICAgbV9kYXRhLm1fcGxh
dGZvcm1Db250ZXh0LnNldENyKGNyLmdldCgpKTsKLSAgICBtX2RhdGEubV9jb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
Y3JlYXRlRmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQpKTsKKyAgICBtX2RhdGEubV9j
b250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6Y3JlYXRlRmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQpKTsKICAgICBzdWNj
ZXNzID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKaW5kZXggODBlYzcyNThi
NjQyMWZiZjk4YjNlYjU1MTNkMGNlYWZiZTdhZGZkYy4uOTljODJlMmU2ZTk5MzFjOGZlYTlkZTIx
NWQwZjM2YzcxOWMzODk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCkBAIC00OCw2ICs0
OCw3IEBAIHN0cnVjdCBTaGFkb3dTdGF0ZTsKIC8vIGNvZGUgZnJvbSB0aGUgcGxhdGZvcm0taW5k
ZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0LgogCiBjbGFzcyBQbGF0Zm9ybUNvbnRleHRDYWlybyB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8pOwogcHVibGljOgogICAgIFBsYXRmb3JtQ29udGV4dENhaXJv
KGNhaXJvX3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggODBiNWQ0ZmJkMjcyZGVlNDM1YjVjZTdjMDg0ZWUz
NTlhNTAxZWQ2NC4uZDM1ZmYwZWZmOTcxOTUwZWVkMWUzZmQwMjZiY2RhOWVhZmEzNGU0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcAogICAg
ICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2Rh
dGEuY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQu
Z2V0KCkpOworICAgICAgICBtX2RhdGEuY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOwogICAgIH0KIAogICAgIGNvbnRleHQoKS5zY2FsZShGbG9h
dFNpemUoMSwgLTEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA3MTg4ZTQzN2QyYzg4
NjcyNmQzZDNmNGRlYjQxYmYyNWNiMDZiMzgwLi5mZjdmYzY2MzY4YmQyYzY2MGM0OGMxMDY3NDVm
OWJhODliM2RkZjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMzcxLDcgKzEzNzEs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVG
b250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogCiAgICAgYXV0byBbc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnQuZ2V0KCks
IGZvbnREZXNjcmlwdGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9u
dERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmlu
Z01vZGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5n
ZXQoKSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0
aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERl
c2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogfQogCiB0eXBlZGVmIEhhc2hTZXQ8UmV0
YWluUHRyPENURm9udFJlZj4sIFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaDxDVEZvbnRSZWY+LCBX
VEY6OlJldGFpblB0ck9iamVjdEhhc2hUcmFpdHM8Q1RGb250UmVmPj4gRmFsbGJhY2tEZWR1cFNl
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKaW5k
ZXggMWNlMGM5NDdlMTdlOWE2OGVlYWQzYTRkNTdiNTlkOGZhMTZjZWYyOS4uMGRlOTM0YTdiMzg0
MTAwZWViNzZkNzdmNDU2YTE4MmZiYmFiY2VjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWls
eVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBGb250UmFuZ2Vz
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmbwogCiAgICAgICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09i
bGlxdWVdID0gY29tcHV0ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250Rm9yU3ludGhlc2lzQ29tcHV0
YXRpb24uZ2V0KCksIGZvbnREZXNjcmlwdGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwg
c2l6ZSwgZmFsc2UsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlv
bigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0
UmVuZGVyaW5nTW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3Jt
RGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgZmFsc2UsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNj
cmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZv
bnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CiAKICAgICBBU1NFUlQoZm9udFBsYXRmb3JtRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0
M0RDb2NvYS5tbQppbmRleCBmZWVhY2Q0ZDMyNjYwNWYwNDI5MWNlOWMzMWVlY2JiZTljYjIyYjky
Li4yYzNjYWMwYWFhMDU2M2FmMWVkNGIzMzkzODY5ODk4MzIyMDU3YzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW0KQEAgLTkyLDYgKzkyLDcgQEAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHN0YXR1c0NoZWNrVGhyZXNob2xkID0gNTsKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIGlzIGN1
cnJlbnRseSBlbXB0eSBvbiBNYWMsIGJ1dCB3aWxsIGdldCBwb3B1bGF0ZWQgYXMKIC8vIHRoZSBy
ZXN0cnVjdHVyaW5nIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NjkwMyBpcyBkb25lCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZShHcmFwaGljc0NvbnRleHQzRCopIHsgfQogICAgIApAQCAtMTgxLDcgKzE4Miw3IEBAIHN0YXRp
YyB2b2lkIHNldEdQVUJ5UmVnaXN0cnlJRChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIGNvbnRl
eHRPYmosIENHTFBpeGVsRm9yCiAKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQz
RChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNo
YXJlZENvbnRleHQpCiAgICAgOiBtX2F0dHJzKGF0dHJzKQotICAgICwgbV9wcml2YXRlKHN0ZDo6
bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fcHJp
dmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCiB7CiAjaWYg
IVVTRShBTkdMRSkKICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDVjNzMzZTNiYWQxZTlk
M2QyNWMxZWQ1N2Y1YWNkZmZmM2E0Y2I5OWYuLjM4NzVmY2ZkMzA2ZGY4NmQzNDc0ZWUxODYwYmE1
OTBhM2E4YmMxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTMyNiw3ICszMjYsNyBAQCBHcmFwaGljc0NvbnRleHQm
IElPU3VyZmFjZTo6ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCkKICAgICBpZiAobV9ncmFwaGljc0Nv
bnRleHQpCiAgICAgICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CiAKLSAgICBtX2dyYXBo
aWNzQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0
Zm9ybUNvbnRleHQoKSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBo
aWNzQ29udGV4dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIG1fZ3JhcGhpY3NDb250
ZXh0LT5zZXRJc0FjY2VsZXJhdGVkQ29udGV4dCh0cnVlKTsKIAogICAgIHJldHVybiAqbV9ncmFw
aGljc0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQpp
bmRleCA2ZTYwZWJmMWZmYTY1OTBmNmYzNGU1MjhhM2UzMzU4MzE4YjVlYmRmLi4yNzg3NDY4MTY2
ZmVmMWI1ZjY0NjIxZmViNWJiNWU1MGQ5ZDZkYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2EubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBAZW5kCiAKIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50YXRpb246
OmNyZWF0ZShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVu
dCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYT4o
Y2xpZW50KTsKIH0KIAogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6VGV4dFRyYWNrUmVw
cmVzZW50YXRpb25Db2NvYShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3Rh
dGlvblNlc3Npb25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1h
Z2VSb3RhdGlvblNlc3Npb25WVC5oCmluZGV4IGFkYzk3YWRjMWZhMjQ1ODA5OTAwM2MzZGU5YzBh
YTM4ZDg3NjE4N2QuLjYwMDFiYjcwYTEwMDQxNzQ0MTA5MjEzNmYzZmU1YjYxNzYyY2IwY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRp
b25TZXNzaW9uVlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9J
bWFnZVJvdGF0aW9uU2Vzc2lvblZULmgKQEAgLTM2LDcgKzM2LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg
X19DVlBpeGVsQnVmZmVyUG9vbCogQ1ZQaXhlbEJ1ZmZlclBvb2xSZWY7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgSW1hZ2VSb3RhdGlvblNlc3Npb25WVCB7CitjbGFzcyBJbWFnZVJv
dGF0aW9uU2Vzc2lvblZUIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgUm90YXRpb25Qcm9wZXJ0aWVzIHsKICAgICAgICAgYm9vbCBmbGlw
WCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgKaW5kZXggZGQxMzU2OWUwODFhMWIz
OTlkY2JhYmYzZjVlODgzN2Y4NGMyYWI0ZS4uY2Q1YjZmY2MwMGQ3NzQ2NGU2ZTZiZTc0NjMxMWUx
M2QwZDI3ZTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaApAQCAtMzYsNiArMzYsNyBAQCB0
eXBlZGVmIHN0cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWKENGRGlj
dGlvbmFyeVJlZiBhdHRyaWJ1dGVzKTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4g
Y29udmVydChDVlBpeGVsQnVmZmVyUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5oCmluZGV4IDgxYWIyZjkyNGRhZjI2Y2Rh
MjJjNWUyMDA3NzZjMjE4MDIwMjNhM2IuLmM5ZmY0MTlkNDNiZTQ1ZjQwNDQwMzA0MGFkZDhjNGQw
NDQwMmJhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L1RleHR1cmVDYWNoZUNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvVGV4dHVyZUNhY2hlQ1YuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAogY2xhc3MgVGV4dHVyZUNhY2hlQ1YgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8VGV4dHVyZUNhY2hlQ1Y+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVDYWNo
ZUNWPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQppbmRleCA1NzdlYzI4
NDYzOTJhNzIxNWQ5OThhYTMxMGQzZDhkNjMzZjVmMWVjLi45ZjFmNjZiM2JkNTlmNTliMWFkM2Ni
NzA1Yzg1NjU0NDIyN2VjMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQpAQCAtNTAsNyArNTAsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IFRleHR1cmVDYWNoZUNWOjpjcmVhdGUoR3JhcGhpY3ND
b250ZXh0M0QmIGNvbnRleAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJldGFpblB0
cjxUZXh0dXJlQ2FjaGVUeXBlPiBzdHJvbmdDYWNoZSA9IGFkb3B0Q0YoY2FjaGUpOwotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0
cm9uZ0NhY2hlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZUNhY2hlQ1Y+KGNvbnRl
eHQsIFdURk1vdmUoc3Ryb25nQ2FjaGUpKTsKIH0KIAogVGV4dHVyZUNhY2hlQ1Y6OlRleHR1cmVD
YWNoZUNWKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0LCBSZXRhaW5QdHI8VGV4dHVyZUNhY2hl
VHlwZT4mJiBjYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCmluZGV4IDQzYTk2ZGMxNDM2NTg0YWZh
NzcxODc4YjE5N2YyYTk1NDdkY2NjZWUuLjlkMzkyZWEwNThiMzYwMDhjYTU2OWNhNDRmZDcxMjg4
M2IwZDZmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBUZXh0dXJlQ2FjaGVDVjsKIAogY2xhc3MgVmlkZW9UZXh0dXJl
Q29waWVyQ1YgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZp
ZGVvVGV4dHVyZUNvcGllckNWKEdyYXBoaWNzQ29udGV4dDNEJik7CiAgICAgflZpZGVvVGV4dHVy
ZUNvcGllckNWKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5k
ZXggOGZlYWEyZjVkNzUzMjhlNDM2YmY5ZDg4YjhkYzA1YmFjMWMyZTFmMy4uYzU2MWY1ZjllYWI5
OTYyMTFhOGIyMjIxOTc3NmQ2OGYzOWUxNjQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxh
eUxpc3Q+IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9v
bAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiByZXBsYXlMaXN0OwogICAgIGlm
IChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3QpKQotICAgICAgICByZXBsYXlMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKKyAgICAgICAgcmVwbGF5TGlzdCA9IG1ha2VVbmlx
dWU8RGlzcGxheUxpc3Q+KCk7CiAKICAgICBzaXplX3QgbnVtSXRlbXMgPSBtX2Rpc3BsYXlMaXN0
Lml0ZW1Db3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtSXRlbXM7ICsraSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCmluZGV4IDU1N2I4ZTAwODYyZDZhYmM1ODA0YjQxNDMy
MTAwODBhODM1MTZkMWUuLjMwYmI0OGNjOGYwYzQ5NTQ0OGFiNjVmNjgxMTcyY2NjNmJjYTUzNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb246OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVz
b3VyY2VMb2FkZXIKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghU1ZHVVJJUmVmZXJlbmNlOjpp
c0V4dGVybmFsVVJJUmVmZXJlbmNlKG1fdXJsLCAqY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1l
bnQoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91cmwpOwor
ICAgIG1fY2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlVW5pcXVlPENhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlPihtX3VybCk7CiAgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZS0+bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcAppbmRleCA2NTYzYzhiZmVlYjM1YmE1MzI3ZjQ4OTYxZWQ2MjFmZTNk
NTNhYTQxLi43MWE0YWIyZjQ4MjVmMWE1NDMxOTE4MDM0YjM1MzFlY2RhOGEwZjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVG
cmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC00NTUsNyArNDU1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGUKICAgICAgICAgICAgIEZjUGF0dGVybkFkZFN0cmluZyhyZXN1bHRQYXR0ZXJu
LmdldCgpLCBGQ19GT05UX1ZBUklBVElPTlMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFy
OCo+KHZhcmlhbnRzLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAjZW5kaWYKLSAgICBhdXRvIHBs
YXRmb3JtRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2Uu
Z2V0KCksIHJlc3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVs
U2l6ZSgpLCBmaXhlZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250
RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSk7CisgICAgYXV0byBwbGF0Zm9ybURhdGEgPSBtYWtl
VW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQYXR0ZXJuLmdl
dCgpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRXaWR0aCwgc3lu
dGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9u
KCkpOwogICAgIC8vIFZlcmlmeSB0aGF0IHRoaXMgZm9udCBoYXMgYW4gZW5jb2RpbmcgY29tcGF0
aWJsZSB3aXRoIEZvbnRjb25maWcuIEZvbnRjb25maWcgY3VycmVudGx5CiAgICAgLy8gc3VwcG9y
dHMgdGhyZWUgZW5jb2RpbmdzIGluIEZjRnJlZVR5cGVDaGFySW5kZXg6IFVuaWNvZGUsIFN5bWJv
bCBhbmQgQXBwbGVSb21hbi4KICAgICAvLyBJZiB0aGlzIGZvbnQgZG9lc24ndCBoYXZlIG9uZSBv
ZiB0aGVzZSB0aHJlZSBlbmNvZGluZ3MsIGRvbid0IHNlbGVjdCBpdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDEzNzY1ZjQzZGE4
NjY4ZDJkZTgyZTY3MWQ4MTgwZDY4NDQyODQzYjAuLjU4OTQzZDJhOTBkZmM1NTAxZjJkY2FhOGVj
ZjBlOTBlMWFjN2Y3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlCiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2U7CiAgICAgaWYgKEZUX05ld19NZW1vcnlfRmFj
ZShsaWJyYXJ5LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgp
KSwgYnVmZmVyLnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CiB9CiAKIGJvb2wgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXgg
ODY5ODEzNjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3Ni4uNzFmZGEwZDkyNGNkMjU1
ZGIzZWYxMDc3ZjllMTA3ODE0ZTI0M2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBSZWZQdHI8VGV4
dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQg
Zm9ybWF0LCBpbnQgdwogICAgICAgICBudW1UaWxlcyA9IDA7CiAgICAgfQogCi0gICAgYXV0byB0
ZXh0dXJlSWRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7
CisgICAgYXV0byB0ZXh0dXJlSWRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1U
aWxlcyk7CiAgICAgdGV4dHVyZUlkcy0+ZmlsbCgwLCBudW1UaWxlcyk7CiAKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bVRpbGVzOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNGE5ZmRlYzNlYzU5MTJjZTI1YjFlNmIyNWI5
MTQ0ZmE4ZjQwYzdkMC4uYWIzN2VlMDQxZWIyOGMzYzgyZjM1YWYzNjNjY2VkYjliNDJiMTQ5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTExNiw3ICsxMTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpcwogewogICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiAgICAg
aWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXll
cik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgfQogfQpAQCAt
MTE0MCw3ICsxMTQwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFBy
ZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBj
b25zdAogewotICAgIGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigpOwogICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8fCBpc0xpdmVTdHJlYW0oKSkK
ICAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CiAKQEAgLTIzNzYsNyArMjM3Niw3IEBAIEdzdEVs
ZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5rKCkgY29uc3QKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjplbnN1cmVBdWRpb1NvdXJjZVByb3ZpZGVy
KCkKIHsKICAgICBpZiAoIW1fYXVkaW9Tb3VyY2VQcm92aWRlcikKLSAgICAgICAgbV9hdWRpb1Nv
dXJjZVByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyPigpOworICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEF1ZGlv
U291cmNlUHJvdmlkZXJHU3RyZWFtZXI+KCk7CiB9CiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXgg
YzU3OGVlZTZkNTVkZDRiNDMwN2NkNDJiYjAwY2NmNDc2Mjk3YmIzMy4uYjAyZTI4ZWRjZDQwN2Zk
ZmY4Y2JlYTc4YWQxYTZlN2IwYzdiNThhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzEwLDE5ICs3MTAsMTkgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRv
cigpCiAgICAgICAgICAgICBpZiAoIXByb3h5LmlzQWN0aXZlKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRl
cj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1f
c2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVv
U2luayk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4g
ZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdl
dCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CiAK
ICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7
CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+IGxheWVyQnVmZmVyOwogICAgICAgICAgICAgaWYgKHRleHR1cmVJRCkgewotICAgICAg
ICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4odGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhv
bGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICAgICAgICAg
IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4odGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5z
ZXRVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKFdURk1vdmUoZnJhbWVIb2xkZXIpKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBwcm94eS5nZXRB
dmFpbGFibGVCdWZmZXIoZnJhbWVIb2xkZXItPnNpemUoKSwgR0xfRE9OVF9DQVJFKTsKICAgICAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWxheWVyQnVmZmVyKSkgewogICAgICAgICAgICAgICAg
ICAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVy
Q29udGV4dEF0dHJpYnV0ZXM6OmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+
cmVzZXQoZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgp
ID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7
Ci0gICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSk7CisgICAgICAg
ICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT51cGRhdGVUZXh0dXJlKGxheWVyQnVmZmVyLT50ZXh0
dXJlR0woKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldEV4dHJhRmxhZ3MobV90
ZXh0dXJlTWFwcGVyRmxhZ3MgfCAoZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgpID8gVGV4
dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljcwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRl
b0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFt
ZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtl
VW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBw
ZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0
dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJRCkKQEAgLTkyMyw3ICs5MjMsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmFwaGljcwogICAgICAgICBzaXplID0gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwog
CiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVD
b3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVY
VFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVD
b3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9D
T1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHKTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNv
cGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgc2l6ZSwg
b3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1h
dCwgdHlwZSwgZmxpcFksIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CkBAIC05MzksNyAr
OTM5LDcgQEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2Ft
cGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdz
dFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywg
dHJ1ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9s
ZGVyID0gbWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90
ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOwogCiAgICAgYXV0byB0ZXh0dXJlSUQgPSBmcmFtZUhv
bGRlci0+dGV4dHVyZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlSUQpCkBAIC05NTMsNyArOTUzLDcg
QEAgTmF0aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpCiAgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVy
ZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihU
RVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBtX3ZpZGVvVGV4dHVy
ZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJF
X0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNv
cGllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgc2l6ZSwg
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIGZhbHNlLCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTExMjUsNiArMTEyNSw3IEBAIHN0YXRpYyB2b2lkIHNldFJlY3RhbmdsZVRv
VmlkZW9TaW5rKEdzdEVsZW1lbnQqIHZpZGVvU2luaywgY29uc3QgSW50UmVjdCYgcmVjdCkKIH0K
IAogY2xhc3MgR1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50IDogcHVibGljIFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyOjpIb2xlUHVuY2hDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lckhvbGVQdW5jaENsaWVudChHUmVmUHRy
PEdzdEVsZW1lbnQ+JiYgdmlkZW9TaW5rKSA6IG1fdmlkZW9TaW5rKFdURk1vdmUodmlkZW9TaW5r
KSkgeyB9OwogICAgIHZvaWQgc2V0VmlkZW9SZWN0YW5nbGUoY29uc3QgSW50UmVjdCYgcmVjdCkg
ZmluYWwgeyBzZXRSZWN0YW5nbGVUb1ZpZGVvU2luayhtX3ZpZGVvU2luay5nZXQoKSwgcmVjdCk7
IH0KQEAgLTExNDcsOCArMTE0OCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExv
Y2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBU
ZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOwotICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4gaG9sZVB1bmNoQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+KG1fdmlkZW9T
aW5rLmdldCgpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90
QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVh
bWVySG9sZVB1bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBtYWtlVW5pcXVlPEdTdHJlYW1l
ckhvbGVQdW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOwogICAgICAgICAgICAgbGF5ZXJC
dWZmZXItPnNldEhvbGVQdW5jaENsaWVudChXVEZNb3ZlKGhvbGVQdW5jaENsaWVudCkpOwogICAg
ICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAg
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmgKaW5kZXggN2FlN2VjZWQ2ZTlmNmJiNjU1MzNiN2Q4OTAzMDIzN2NjY2RmZmU2Ni4uZTI2
MDRjNGFlM2IwNTljZTFmYjZlMDRkNTY4ZjFhODM2YTIzMDRhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC05Nyw3ICs5Nyw3IEBA
IGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsCiAjZW5kaWYKICNlbmRpZgogewotCisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZURl
YnVnQ2F0ZWdvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lci5oCmluZGV4IDUxZmQ5YjI1YjBiODQzN2M4NDkxMjUzZTZmMDIxZTY1N2QwM2E4MTcuLjVj
NTZlYzM0MTg4ODMzNDU3ODhmYTBiNTQ5YTk4MDMyN2QzZTdiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3Mg
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW07CiBjbGFzcyBJbWFnZU9yaWVudGF0aW9uOwogCiBj
bGFzcyBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgQ29sb3JDb252ZXJzaW9uIHsKICAgICAg
ICAgQ29udmVydEJHUkFUb1JHQkEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IDk3M2Y0ZDRmMDAzMjM1NmYxNzdlYmQ3ZmM0YjllOTRhNTI5MmY5NWEu
Ljk4MTBjMjU3YjM3NzZmZmQ4ZDQyMTJlOTY5NGJlOTJiMjU5NzM1MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC01MCw2ICs1MCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogI2RlZmluZSBMT1dfUVVFVUVfRkFDVE9SX1RIUkVTSE9MRCAw
LjIKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgZmluYWwgOiBwdWJsaWMg
UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dCk7CiBwdWJsaWM6CiAgICAgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQoV2ViS2l0V2Vi
U3JjKiwgUmVzb3VyY2VSZXF1ZXN0JiYpOwpAQCAtNjMyLDcgKzYzMyw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChHc3RCYXNlU3JjKiBiYXNlU3JjLCBib29sIG5v
dGlmeUFzeW5jQ29tCiAgICAgICAgICAgICBsb2FkT3B0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkJ1ZmZlckRhdGE7CiAgICAgICAgIHByaXYtPnJlc291
cmNlID0gcHJpdi0+bG9hZGVyLT5yZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0KHJlcXVl
c3QpLCBsb2FkT3B0aW9ucyk7CiAgICAgICAgIGlmIChwcml2LT5yZXNvdXJjZSkgewotICAgICAg
ICAgICAgcHJpdi0+cmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCksIFJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KSkpOworICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5p
cXVlPENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCksIFJlc291
cmNlUmVxdWVzdChyZXF1ZXN0KSkpOwogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwcm90
ZWN0b3IuZ2V0KCksICJTdGFydGVkIHJlcXVlc3QiKTsKICAgICAgICAgICAgIGlmIChub3RpZnlB
c3luY0NvbXBsZXRpb24pCiAgICAgICAgICAgICAgICAgZ3N0X2Jhc2Vfc3JjX3N0YXJ0X2NvbXBs
ZXRlKEdTVF9CQVNFX1NSQyhzcmMpLCBHU1RfRkxPV19PSyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggNGU5ZDE5
ZDg1MjdkNjk2MjBjZjVhYTk0MTA3MzYyODM4MWIzYzlmMC4uZTY4ODBkOThlN2ZjYWQxZDA1M2Y4
NGVkMzhhNmZkODE5OGRlN2I4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhciByZQogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktp
dEVsZW1lbnRzKCk7CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21zZV9kZWJ1
ZywgIndlYmtpdG1zZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIpOwogICAgIGlmIChp
c0F2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RT4ocGxheWVyKTsgfSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIp
IHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5
ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIH0KIH0KQEAg
LTQ1OSw3ICs0NTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c2V0
UmF0ZShmbG9hdCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fbWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpIDogc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UgPyBt
X21lZGlhU291cmNlLT5idWZmZXJlZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+
KCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzb3VyY2VTZXR1
cChHc3RFbGVtZW50KiBzb3VyY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5
ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAppbmRleCAxMTcyNDU4NDEwZTlhMTQ1M2I2MzViMGY4ZDkx
YjlmYjRhNjk2YzU4Li4wZjA4YzE5ZGJkYmU2OWIwNmY3Yjc1NTNmOGFiNDk3ZDQ3ZTM3N2E5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcApAQCAt
NzYsNyArNzYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRI
b2xlUHVuY2hCdWZmZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eSYgcHJveHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVy
KHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6
OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VV
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKICAgICAgICAgICAgIHBy
b3h5LnB1c2hOZXh0QnVmZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAgfTsKIApA
QCAtMTQxLDcgKzE0MSw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+
KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAog
ICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaC5oCmluZGV4IGYwZDA0ZDRjNjNkOTMxMjBiY2U4MDVhYjhmZWEyODdhMDFl
MDQ0MmEuLjhiZjcyMTMxODgxOWM0MDI2N2I3MjFmYTliODJhYzFjZDkyNmY5ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKQEAgLTQ0LDcgKzQ0LDcg
QEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIDogcHVibGljIE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZSwgcHVibGljIEMKICAgICAsIHB1YmxpYyBQbGF0Zm9ybUxheWVyCiAj
ZW5kaWYKIHsKLQorICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaChNZWRpYVBsYXllciopOwogICAgIH5NZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2goKTsKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlSG9sZVB1bmNoIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSwgcHVi
bGljIEMKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsgfTsKICAgICBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5ZXI6
OkhhdmVNZXRhZGF0YTsgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7IH07CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKTsgfTsKIAogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Cb3guaAppbmRleCBlMWEzYTg2NjMxNDc1Y2FiN2E5YjE3MWI0MDYyZDM5
M2Q4OTBlNjA2Li5lY2Y4OTY5M2RhMzM4NTIwMTJlNzUwMjExMjk5ODA5OWVjOGRhYzJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCkBAIC0zNiw2
ICszNiw3IEBAIGNsYXNzIERhdGFWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09Cb3ggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfklTT0JveCgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRC
b3guaAppbmRleCA3MGJiODYxMTMxNmU2ODViNzZiNzg4MzhiNWVkMDYwMzc2YjliMWE5Li4xODgz
YmE0N2JkZjNhNTJhZmIyZmY3ZDBkZDVjZDlkY2Q3Y2RkODcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPT3JpZ2luYWxGb3JtYXRC
b3guaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdF
QkNPUkVfRVhQT1JUIElTT09yaWdpbmFsRm9ybWF0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09PcmlnaW5hbEZvcm1hdEJveCBmaW5hbCA6IHB1YmxpYyBJU09C
b3ggewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAi
ZnJtYSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKaW5kZXggZDhk
NzQwMWE3NTYwMDQ2Yzk4YWZmOGNiMTFlYjJlNzIyM2M5ODFjZS4uYmRmZGJkYzk2Y2YwZTFiNTBh
NzI4NTgyODhjOWIyZjQ3NGY3ZDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9C
b3guY3BwCkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6
OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVlKCkuZmlyc3QgPT0gSVNPU2No
ZW1lVHlwZUJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZVR5cGVCb3ggPSBz
dGQ6Om1ha2VfdW5pcXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7CisgICAgICAgIG1fc2NoZW1lVHlw
ZUJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lVHlwZUJveD4oKTsKICAgICAgICAgaWYgKCFtX3Nj
aGVtZVR5cGVCb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9C
b3g6OnBhcnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgIH0KIAogICAg
IGlmIChvcHRpb25hbEJveFR5cGUudmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVJbmZvcm1hdGlv
bkJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKKyAgICAgICAgbV9z
Y2hlbWVJbmZvcm1hdGlvbkJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g+
KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVJbmZvcm1hdGlvbkJveC0+cmVhZCh2aWV3LCBsb2Nh
bE9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0Jv
eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25T
Y2hlbWVJbmZvQm94LmgKaW5kZXggZjM3Yjc2MjQ5ZDhlMDBmYTE3YTA1NTkyOWU3NzY2ODUxMzcz
MzM2Ni4uOGU1NjczZTA1MTZhNjUwMTRmNWNkNDlmNjFhYTdiNzUzOGQyY2FmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hl
bWVJbmZvQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSVNPU2NoZW1lVHlwZUJveDsKIGNsYXNzIElTT1NjaGVtZUluZm9ybWF0
aW9uQm94OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0Jv
eCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPUHJvdGVjdGlvblNj
aGVtZUluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Rm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNpbmYiOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5m
b3JtYXRpb25Cb3guY3BwCmluZGV4IGI0ZjI3N2E2ODQ3Y2MyMGQ0ZmM5ZDYyNmY5Y2FjYzc0MzBh
ZGFmNzAuLmM4M2M0ZmY3YjM4YWJmMWFlMjJmZmU1ZTcyYzdhMWY4NmEwOGViMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1h
dGlvbkJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcApAQCAtNDcsNyArNDcsNyBAQCBib29sIElTT1NjaGVt
ZUluZm9ybWF0aW9uQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkK
ICAgICAgICAgaWYgKGxvY2FsT2Zmc2V0ICsgc2NoZW1lU3BlY2lmaWNCb3hUeXBlLnZhbHVlKCku
c2Vjb25kID4gb2Zmc2V0ICsgbV9zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxJU09UcmFja0Vu
Y3J5cHRpb25Cb3g+KCk7CisgICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0gbWFrZVVuaXF1
ZTxJU09UcmFja0VuY3J5cHRpb25Cb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVTcGVjaWZp
Y0RhdGEtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKaW5kZXggOWVkYjE4NzhhOWJhOTE5
YmViMTlkN2I2MjIzZDllN2U0NjRmNjg1OC4uZThlYzBjNGM2OWI3NGU4MzM0NDk4OTQxZjI0ZWVl
NDEwZjJjZGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hl
bWVJbmZvcm1hdGlvbkJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNjaGkiOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVU
eXBlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1l
VHlwZUJveC5oCmluZGV4IDYxOTYxMDM5ZjQ4Y2YyYmM2ZWU3Yjg4NDgwNzNjODM3NmU1ODMxMzAu
LjRiOGYyNjMzNzUwZjhhZGY5MGJjMjdjMmQwY2YxNGVmOTgyYzE3M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3gu
aApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNP
UkVfRVhQT1JUIElTT1NjaGVtZVR5cGVCb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBJU09TY2hlbWVUeXBlQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3gg
ewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAic2No
bSI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1RyYWNrRW5jcnlwdGlvbkJveC5oCmluZGV4IGY0ZWZlMjgxMDUxZTNjN2IyOWRi
ZWY3OGU0NGRhM2IwMzg3ODAzZjMuLjQ3ZmE0OTcyNDZjNzE1YmUxZDJjZWY5YjBlYTg3ZGQ3Zjc5
ZWY1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09UcmFja0VuY3J5cHRpb25Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09UcmFja0VuY3J5cHRp
b25Cb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09UcmFj
a0VuY3J5cHRpb25Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJ0ZW5jIjsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCmluZGV4
IDllYzQwODk0ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQuLjRiNTE2ZWU4ZGQ3Zjdk
MjM3ZThkNjI3Mjc5N2IwMzJkZDFmNWFjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5n
IEpTQzo6RGF0YVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSVNPU3RyaW5n
Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09TdHJpbmdCb3ggZmluYWwgOiBwdWJsaWMg
SVNPQm94IHsKIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRzKCkgeyByZXR1cm4g
bV9jb250ZW50czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9p
c28vSVNPVlRUQ3VlLmgKaW5kZXggYTYxNjBiNjZhZTk0NjgyMDY3N2FkMjkzNGIxODFkZWI5M2Nj
NGY0OS4uYWUyM2JlZmZmZWQ2NGE2ZGUyODkxNzZlNDE1MTAxMWYwNjdjOTg5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOIGJ5dGVzIDogQ3VlVGltZUJveCA6
IGJveCA6IG9wdGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlU2V0dGluZ3NCb3ggOiBib3ggOiBvcHRp
b25hbAogLy8gTiBieXRlcyA6IEN1ZVBheWxvYWRCb3ggOiBib3ggOiByZXF1aXJlZAotY2xhc3Mg
SVNPV2ViVlRUQ3VlIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09XZWJWVFRDdWUgZmluYWwg
OiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBJU09XZWJWVFRDdWUoY29uc3QgTWVkaWFU
aW1lJiBwcmVzZW50YXRpb25UaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDMyN2ViZjYwNjI1OTA5ZmJlMmM1YjZiZDUx
OThhY2ExOWE0NWQ0YTQuLjUwNzkzOGJlMTEwNWNmNDI2MDQ1NTkxM2IwYzVlOTlkNGY1NGY5ZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnREZXNj
cmlwdG9yLmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPihmb250RGVzY3JpcHRvci5nZXQoKSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09w
ZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhUGFpbnRpbmdPcGVyYXRpb24uaAppbmRleCA4M2Y3NzY2NzllMTg5YzZmY2U0ZWY4NjI1N2Iw
MDVkMTEzNzRlMjJkLi42ZjIxNWIyN2FhZDk2YzNmYTljMjA3ZjMyMGVmOWUzMmI0M2I3Y2MyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29z
aWFQYWludGluZ09wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKQEAgLTQwLDYgKzQwLDcgQEAg
bmFtZXNwYWNlIE5pY29zaWEgewogc3RydWN0IFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5IHsgfTsK
IAogc3RydWN0IFBhaW50aW5nT3BlcmF0aW9uIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgdmlydHVhbCB+UGFpbnRpbmdPcGVyYXRpb24oKSA9IGRlZmF1bHQ7CiAg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRl
Z3JhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFTY2VuZUludGVncmF0aW9uLmNwcAppbmRleCAxMDljMmM1Nzc2NzlhMTIxNGFhNmVhMTAx
YzZmNDgwZmJhMmVjNjAxLi41YmVlNjEzZmNmNmI0NmEwN2M2MjhlNTgwMTZmNDliYjkwMjFiMWYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFTY2VuZUludGVncmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIFNjZW5lSW50ZWdyYXRpb246OnJlcXVlc3RVcGRhdGUoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNjZW5lSW50ZWdyYXRpb246OmNy
ZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGVT
Y29wZT4obWFrZVJlZigqdGhpcykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFVwZGF0ZVNjb3Bl
PihtYWtlUmVmKCp0aGlzKSk7CiB9CiAKIFNjZW5lSW50ZWdyYXRpb246OkNsaWVudDo6fkNsaWVu
dCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMmIxYWVjZjBkMWI3ZTZhMzQxYmY5NGJmZmFlZDIy
MGYxYTQ1ODYzOC4uNTBlMGMzYzdkOTc2ODI2YmE3YmI4MTg1ZDFlZTE0MjEyOWFkYTAyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYXV0byBjcmVhdGVDb21tYW5kKEFyZ3MmJi4uLiBhcmd1
bWVudHMpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXIKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBhdXRvIGNyZWF0ZUNvbW1hbmQoKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfYmFzZV9vZjxPcGVyYXRpb25EYXRhPD4sIFQ+Ojp2YWx1ZSwgc3RkOjp1bmlxdWVfcHRy
PFBhaW50aW5nT3BlcmF0aW9uPj4KIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFQ+KCk7CiB9CiAKIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQYWlu
dGluZ09wZXJhdGlvbnMmIGNvbW1hbmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDBjOGE2NzBlM2EwYTM2MzA3ZTNm
Mjk5ZWNkYTAyNTUyZmQ3NzRlZDEuLmIzNTA4ZDUxN2IyNGU0NzVjMDhhZjQ4YjMzZTQzMWZkMjc5
MjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRl
eHRDYWlyby5jcHAKQEAgLTcwLDggKzcwLDggQEAgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBh
aW50aW5nOjpGb3JQYWludGluZyhCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgfSk7CiAKICAgICBt
X2NhaXJvLmNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9jYWlyby5zdXJmYWNlLmdl
dCgpKSk7Ci0gICAgbV9wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
OlBsYXRmb3JtQ29udGV4dENhaXJvPihtX2NhaXJvLmNvbnRleHQuZ2V0KCkpOwotICAgIG1fZ3Jh
cGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSgqbV9wbGF0
Zm9ybUNvbnRleHQpKTsKKyAgICBtX3BsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4dC5nZXQoKSk7CisgICAgbV9n
cmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KCptX3BsYXRmb3Jt
Q29udGV4dCkpOwogfQogCiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6On5Gb3JQ
YWludGluZygpCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB2b2lkIFBhaW50aW5nQ29udGV4dENhaXJv
OjpGb3JQYWludGluZzo6cmVwbGF5KGNvbnN0IFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbgog
CiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcoUGFpbnRp
bmdPcGVyYXRpb25zJiBwYWludGluZ09wZXJhdGlvbnMpCiB7Ci0gICAgbV9ncmFwaGljc0NvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oCisgICAgbV9n
cmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oCiAg
ICAgICAgIFsmcGFpbnRpbmdPcGVyYXRpb25zXShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihjb250ZXh0
LCBwYWludGluZ09wZXJhdGlvbnMpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bC5jcHAKaW5kZXggZDRjOWI2MDViNGNkMjhlMzQ4ZWZkODUzMzUwMzhiNThjOWE0ZGRmYS4uOGUz
NzkwZjdhYjU0ZjZiM2Q5NTZmMzA3MDRjNDI5YzJhY2RjMzE2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlcklt
cGwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGF1dG8gQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlcklt
cGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAg
ICAgICAgIFtdKEJhY2tpbmdTdG9yZSYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNr
aW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oCmluZGV4IGVhZDQ5Nzc2ZTUwYTIzY2ZkNTAxNGE3
ZTk2NDMwYjNkZTEyNGRiMGEuLmQ0MzZmMjBjMzE2MWMwNTU0YTVhYTIyYTM5MzBhOTk1ZWVjMzVh
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5n
U3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgTmlj
b3NpYSB7CiAKIGNsYXNzIEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsIGZpbmFsIDogcHVi
bGljIEJhY2tpbmdTdG9yZTo6SW1wbCwgcHVibGljIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3Jl
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0
aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVy
VGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5j
cHAKaW5kZXggMzhmZGQ5M2RhNmIxMzg4MzE0MDU5MTY1M2NkZjI5ZTA3ZGUzMjM5Ni4uNzU2OTJj
N2M0YTdiZmRiMTg3MWRmMTgwMmUzODc3NTM2YjYxNTUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9u
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFw
cGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgYXV0byBDb21wb3NpdGlvbkxheWVyVGV4dHVy
ZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZh
Y3RvcnkoCiAgICAgICAgIFtdKHVpbnQ2NF90LCBDb21wb3NpdGlvbkxheWVyJikgewotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpb25MYXllclRleHR1cmVNYXBw
ZXJJbXBsPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcG9zaXRpb25MYXll
clRleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBv
c2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFw
cGVySW1wbC5oCmluZGV4IDY1NTViZmIwODAyNjFlOGEzMDk1YmRlNDgzYTA2MWJiNTQyMTQ1NzQu
LjUzMGE2NzUxMDE3MjZlYTI4NzI4YzUzZDg4OGRiZGVmN2FhZTc5OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21w
b3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1
cmVNYXBwZXJJbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgVGV4dHVyZU1hcHBlckxheWVy
OwogbmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1h
cHBlckltcGwgZmluYWwgOiBwdWJsaWMgQ29tcG9zaXRpb25MYXllcjo6SW1wbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRl
RmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCA1NjE3MjhiNWVmMWY0MGQ4
MGM1MzU5OTI2NzEwNjZhZDg3NDgxOWE3Li4yZmIwZWM5NTkxNWFlYjBiYTA5NmY4MGJjNjkwZDJm
M2IyODQ4YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgYXV0
byBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeShDbGllbnQmIGNs
aWVudCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbJmNsaWVu
dF0oQ29udGVudExheWVyJikgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KGNsaWVudCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50KTsKICAg
ICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmgKaW5kZXggZWY5NmE2MDgzMTYyZGU0MWMy
N2RlNGJmMzU3YjhhNGZjYWY4ZDljZi4uYjAxMDViNzNhYzIyNjRmNTdjYTdiN2U1MDNlY2Y3MGRh
NTI3ZGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xh
c3MgQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgQ29udGVudExh
eWVyOjpJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBj
bGFzcyBDbGllbnQgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RM
YXllci5jcHAKaW5kZXggNTJlYzcwYjY4MWY3YmM1NjNhNjc0NzU0MzYyMzg3NmIwMzEzOWE5Yi4u
OWE5YmQ0NjgzYjI2NzQyYWZlY2IxNDkxZjYxNDRmMmE3OGM1OTUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBHQzNETGF5
ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgICAgICBhdXRvJiBwcm94eSA9IGRvd25jYXN0
PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihtX2NvbnRlbnRMYXllci0+
aW1wbCgpKS5wcm94eSgpOwogCiAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2so
KSk7Ci0gICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJl
LCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29udGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsK
KyAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVT
aXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOwogICAgIH0KIAog
ICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0MzRExheWVyLmgKaW5kZXggMzJkYjlkZDM3YTZmMGQ5ZmE4ZDRkMTg4ZWIxOGY4YWUxNDc1
YTAwYi4uOWY1NDQ1YmJlMTE4M2NlNzQ4NTU5M2NiYmJmMTY1MGVkY2NlNDMyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUdDM0RMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBHTENv
bnRleHQ7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIEdDM0RMYXllciA6IHB1YmxpYyBD
b250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHQzNETGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0QmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUpOwogICAgIHZp
cnR1YWwgfkdDM0RMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKaW5kZXggYTJhZTM0YTMx
MzI3ZTg3MTU2NTQxNDZkMThmNzdjN2E2N2YyNDIxNi4uZDM1M2M4YmUxYjViZmExMTZiNmNiODUy
MDk3MDI3N2NjOTMyNDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zNyw3ICszNyw3
IEBAIGF1dG8gSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoKSAt
PiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAgICAgIFtdKEltYWdlQmFja2lu
ZyYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQmFja2luZ1Rl
eHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW1hZ2VC
YWNraW5nVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVy
SW1wbC5oCmluZGV4IDFhNjIzYWZhNDA5M2IyMmFjMjBkMTNiMzI5MzYwODNhY2IwOGVhODAuLjQ5
YjFlOWIyZWMwMzU1MmEwYmQ2MTIwYWU3N2I4ZTY5NGE5NDYxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJh
Y2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1w
bC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEltYWdlOwogbmFtZXNwYWNlIE5pY29zaWEgewog
CiBjbGFzcyBJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbCBmaW5hbCA6IHB1YmxpYyBJbWFn
ZUJhY2tpbmc6OkltcGwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1v
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMz
RE9wZW5HTENvbW1vbi5oCmluZGV4IDdjNjE0ZmI0MDMzNThlYTQwNDU2ZDg0NjJjZjhkYzViYzNh
NGViMTkuLjE0NzIxNzkwNzcyN2NhZWVhMjdlZjY4YTA2OWNjMDUzMTA4MjBkMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RP
cGVuR0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uIDogcHVibGljIEV4
dGVuc2lvbnMzRCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IGU2ODQ4ZmNlY2E0MWU5NzM2ZjJhMzgxN2E5ZmQwM2Nl
YmFlM2FjMTEuLmI5NjM2M2I1NTE5MzU2YzhjZGY0NjU0MzYzMjZlZDA2Y2VjZWQ4OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVu
c2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICgh
bV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4
dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9l
eHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xFUzJD
b21wbGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGIyNGRmMDM1
ZTI4OGUxZWIyZjhhZjlmN2FiOTFkNzc5ZDBhY2E0OWUuLjJhMGU1Yjc2ZTRkNmJhYjcwZTkwYjJm
M2QyOGViNDNjMDdmNDI1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcApAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgQU5HTEVSZXNvdXJj
ZXMuSGFzaEZ1bmN0aW9uID0gbmFtZUhhc2hGb3JTaGFkZXI7CiAKICAgICBpZiAoIW5hbWVIYXNo
TWFwRm9yU2hhZGVycykKLSAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJz
ID0gbWFrZVVuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKICAgICBzZXRDdXJyZW50TmFtZUhhc2hN
YXBGb3JTaGFkZXIobmFtZUhhc2hNYXBGb3JTaGFkZXJzLmdldCgpKTsKICAgICBtX2NvbXBpbGVy
LnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIFN0
cmluZyBHcmFwaGljc0NvbnRleHQzRDo6bWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIEFOR0xFU2hhZGVyCiAgICAgICAgIC8vIEF0dHJpYnV0ZXMgYXJlIGEgc3BlY2lh
bCBjYXNlOiB0aGV5IG1heSBiZSByZXF1ZXN0ZWQgYmVmb3JlIGFueSBzaGFkZXJzIGhhdmUgYmVl
biBjb21waWxlZCwKICAgICAgICAgLy8gYW5kIGFyZW4ndCBldmVuIHJlcXVpcmVkIHRvIGJlIHVz
ZWQgaW4gYW55IHNoYWRlciBwcm9ncmFtLgogICAgICAgICBpZiAoIW5hbWVIYXNoTWFwRm9yU2hh
ZGVycykKLSAgICAgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8U2hhZGVyTmFtZUhhc2g+KCk7CisgICAgICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMg
PSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwogICAgICAgICBzZXRDdXJyZW50TmFtZUhh
c2hNYXBGb3JTaGFkZXIobmFtZUhhc2hNYXBGb3JTaGFkZXJzLmdldCgpKTsKIAogICAgICAgICBh
dXRvIGdlbmVyYXRlZE5hbWUgPSBnZW5lcmF0ZUhhc2hlZE5hbWUobmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKaW5kZXggMjQzMDQ2ZDk4OWFkNzM4ZjdjOWY3
MTQ5NTU2N2M5NmJiMzRjNTY0MS4uNzBhMjBkNTBjMzUyMWE2MTIzZTZlZmFmMWY0NzY4ZjY0OTVj
ZGU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcApAQCAtMjQy
LDcgKzI0Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1w
ZiBkZXB0aCkKIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMo
KQogewogICAgIGlmICghbV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50
KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5H
TEVTPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25z
OwogfQogI2VuZGlmCkBAIC0yNzEsNyArMjcxLDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcwog
R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
clN0eWxlIHJlbmRlclN0eWxlLCBHcmFwaGljc0NvbnRleHQzRCogc2hhcmVkQ29udGV4dCkKICAg
ICA6IG1fYXR0cnMoYXR0cmlidXRlcykKICAgICAsIG1fY29tcGlsZXIoaXNHTEVTMkNvbXBsaWFu
dCgpID8gU0hfRVNTTF9PVVRQVVQgOiBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQotICAg
ICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0
aGlzLCByZW5kZXJTdHlsZSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKIHsKICAgICBBU1NFUlRfVU5VU0VE
KHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAKaW5k
ZXggZWQ2Y2NmMTk0YmJlZTFlMDBmZDQzOWY2MWE2ZGU2MmU0MDMwMmVhMy4uOGZkM2FkNGY3MmQ3
NjRiZDk1ZDIyMGY1ODFlZDJiNzk2Mjg4M2M5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAKQEAgLTEwNiw5ICsxMDYsOSBAQCBHcmFwaGljc0Nv
bnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXMsIEhvcwogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJl
ZENvbnRleHQpOwogI2lmIFVTRShOSUNPU0lBKQotICAgIG1fbmljb3NpYUxheWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxOaWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CisgICAg
bV9uaWNvc2lhTGF5ZXIgPSBtYWtlVW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRoaXMsIHJl
bmRlclN0eWxlKTsKICNlbHNlCi0gICAgbV90ZXhtYXBMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8
VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOworICAg
IG1fdGV4bWFwTGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKICNlbmRpZgogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CkBAIC0zMjUsMTAgKzMyNSwxMCBAQCBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRFeHRlbnNpb25zKCkKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykgewogI2lmIFVTRShPUEVO
R0xfRVMpCiAgICAgICAgIC8vIGdsR2V0U3RyaW5naSBpcyBub3QgYXZhaWxhYmxlIG9uIEdMRVMy
LgotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9w
ZW5HTEVTPih0aGlzLCAgZmFsc2UpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVl
PEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCAgZmFsc2UpOwogI2Vsc2UKICAgICAgICAgLy8g
RnJvbSBPcGVuR0wgMy4yIG9uIHdlIHVzZSB0aGUgQ29yZSBwcm9maWxlLCBhbmQgdGhlcmUgd2Ug
bXVzdCB1c2UgZ2xHZXRTdHJpbmdpLgotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50KCktPnZl
cnNpb24oKSA+PSAzMjApOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVu
c2lvbnMzRE9wZW5HTD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAz
MjApOwogI2VuZGlmCiAgICAgfQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
QzNEUGxhdGZvcm1MYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcAppbmRleCAxNGYxZGJmMThk
OTFiMzkwNzVlMmQ1MGYyMTQ5Yjc3NmJiYzE3NDkzLi42NjMyMzE1Njk1YmEyMWMyNjdkMTU1OTMy
ZWJhOTE0N2ZiNjZhZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0
Zm9ybUxheWVyLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHQzNEUGxh
dGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAKICAgICB7CiAgICAgICAgIExvY2tI
b2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOwotICAgICAgICBtX3Bs
YXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUs
IHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOwor
ICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRl
eHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1h
dCkpOwogICAgIH0KIAogICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgKaW5kZXggOGI2MDIxNGFi
YTliODNjYTE5MzBmMTM1Yzc1MzQ4YjI2NmZlNWNhYy4uZTZmMDljODc5ODU0ODYzMmVlNGIwYWE1
YTU2MzA2MTVhMjRhMzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRm
b3JtTGF5ZXIuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBHTENvbnRleHQ7CiBjbGFzcyBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyR0MzRFBs
YXRmb3JtTGF5ZXIgOiBwdWJsaWMgUGxhdGZvcm1MYXllciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKEdy
YXBoaWNzQ29udGV4dDNEJiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAgICB2
aXJ0dWFsIH5UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAKaW5kZXggOTc0Yjg1NzhiODhhYTY0MzUwOTFlOGIwYzM4YmIyZGI3MTBlZjEwMi4uYTJm
NzU4NjZlMzIzYjhmZGJhNDNhMDA3ZDQ0N2FhYTQ2NTc2YmZmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBUZXh0dXJlTWFwcGVyR0w6OlRleHR1cmVNYXBwZXJH
TCgpCiAKICAgICBtX2RhdGEgPSBuZXcgVGV4dHVyZU1hcHBlckdMRGF0YShwbGF0Zm9ybUNvbnRl
eHQpOwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBtX3RleHR1cmVQb29sID0gc3Rk
OjptYWtlX3VuaXF1ZTxCaXRtYXBUZXh0dXJlUG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7Cisg
ICAgbV90ZXh0dXJlUG9vbCA9IG1ha2VVbmlxdWU8Qml0bWFwVGV4dHVyZVBvb2w+KG1fY29udGV4
dEF0dHJpYnV0ZXMpOwogI2VuZGlmCiB9CiAKQEAgLTc5MCw3ICs3OTAsNyBAQCBSZWY8Qml0bWFw
VGV4dHVyZT4gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJlKEdMaW50IGludGVybmFsRm9y
bWF0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlcj4gVGV4dHVyZU1hcHBlcjo6cGxh
dGZvcm1DcmVhdGVBY2NlbGVyYXRlZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGV4dHVyZU1hcHBlckdMPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJH
TD4oKTsKIH0KIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCmluZGV4IDdhZmRmMzBhMDViY2E1Mzk3YjgwMThiZmViZDg5ZTBlMWRhNTAz
MzMuLmUxMWEwYmIyN2I4MTBjMmQ1Mjc2YjJhOWIwYzUwOWY4ODk1MDY2YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNjQsNyAr
NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZgogICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1h
cFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCks
IG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7CiAgICAgc3Rh
dGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5h
bFRleHR1cmUobV90ZXh0dXJlSUQpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxh
Z3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOwogfQogCiB2b2lkIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggYzcx
NGY2ZDc4YzFjZjFhNjFkNGRmZjZiNDIwNTIxYjAyZWNkN2M1MC4uMzc5MzY3NWFjOGQ2YjNjMzJh
M2IzMTgxOTNlNDlhN2IzN2RjNDg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtNzEsOCArNzEsOCBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3Np
dG9yKiBjbwogICAgIGlmIChtX3RhcmdldExheWVyICYmIG1fY3VycmVudEJ1ZmZlcikKICAgICAg
ICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNMYXllcihtX2N1cnJlbnRCdWZmZXIuZ2V0KCkp
OwogCi0gICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxS
dW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6
Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFz
ZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKTsKLSAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVU
aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk6OmNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKTsKKyAg
ICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRo
aXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVy
c1RpbWVyRmlyZWQpOworICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gbWFrZVVu
aXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVu
TG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6
Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyRmlyZWQpOwogCiAjaWYgVVNFKEdMSUJfRVZFTlRf
TE9PUCkKICAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lci0+c2V0UHJpb3JpdHkoUnVu
TG9vcFNvdXJjZVByaW9yaXR5OjpDb21wb3NpdGluZ1RocmVhZFVwZGF0ZVRpbWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
aW5kZXggMzY3ZDhhNTNjZjM3MGQyMjAyZDZmMzQwMWNkY2IzYTAyZmY0MmMyYi4uZDQ3NTcxMGJh
MGNkZGZiY2RiZGEwYzY4Y2UzMGI4MWVmYWFkNjljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTk4MSw3ICs5ODEs
NyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMo
KQogCiAgICAgLy8gRW5zdXJlIHRoZSBUaWxlZEJhY2tpbmdTdG9yZSBvYmplY3QsIGFuZCBlbmZv
cmNlIGEgY29tcGxldGUgcmVwYWludCBpZiBpdCdzIG5vdCBiZWVuIHByZXNlbnQgeWV0LgogICAg
IGlmICghbGF5ZXJTdGF0ZS5tYWluQmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIGxheWVyU3RhdGUu
bWFpbkJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRCYWNraW5nU3RvcmU+KGlt
cGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CisgICAgICAgIGxheWVyU3RhdGUubWFpbkJh
Y2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8VGlsZWRCYWNraW5nU3RvcmU+KGltcGwsIGVmZmVjdGl2
ZUNvbnRlbnRzU2NhbGUoKSk7CiAgICAgICAgIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVu
dCA9IHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaAppbmRleCAyYzI0ZTA4NGUzMjk2
YTQ3ZTA5ZTk2MTBkNzQ4ZDZhODhmZTQ5NjU2Li5mYmMyNDViZTFlNTAzODUzYzczMmYwMWU1YTM0
ZTU1ODRhNWIzYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGlsZWRCYWNraW5nU3RvcmU7CiAKIGNsYXNzIFRpbGUg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgSW50
UG9pbnQgQ29vcmRpbmF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggM2JlNDMxMWRlYWEwMjQ5N2M3ZWQxY2RjYTEzNDViYTVhNjgwMzEw
OS4uNGE2OTc4MjJlNGRlMmNkYjhiNjZmODFkNDA0ZDhkYmU4MmI0OTg3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVk
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0yMjAsNyArMjIwLDcg
QEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoY29uc3QgSW50UmVjdCYgdmlz
aWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIHMKICAgICB1bnNpZ25lZCB0aWxlc1RvQ3JlYXRlQ291
bnQgPSB0aWxlc1RvQ3JlYXRlLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwg
dGlsZXNUb0NyZWF0ZUNvdW50OyArK24pIHsKICAgICAgICAgVGlsZTo6Q29vcmRpbmF0ZSBjb29y
ZGluYXRlID0gdGlsZXNUb0NyZWF0ZVtuXTsKLSAgICAgICAgbV90aWxlcy5hZGQoY29vcmRpbmF0
ZSwgc3RkOjptYWtlX3VuaXF1ZTxUaWxlPigqdGhpcywgY29vcmRpbmF0ZSkpOworICAgICAgICBt
X3RpbGVzLmFkZChjb29yZGluYXRlLCBtYWtlVW5pcXVlPFRpbGU+KCp0aGlzLCBjb29yZGluYXRl
KSk7CiAgICAgfQogICAgIHJlcXVpcmVkVGlsZUNvdW50IC09IHRpbGVzVG9DcmVhdGVDb3VudDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCBjODhlOWJlZjlkNjZjYTJiNTUwMThj
OTBmNGIwYTQyOGI0NjgyZWY4Li40ZWFmMDAxMTIwYzQ3ZmZjZTU1YWI0ZGZhOTIxODNjZThiMzE5
NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBUcmFu
c2Zvcm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPShjb25zdCBUcmFuc2Zvcm1TdGF0
ZSYgb3RoZXIpCiAgICAgaWYgKG1fbWFwUXVhZCkgewogICAgICAgICBtX2xhc3RQbGFuYXJRdWFk
ID0gb3RoZXIubV9sYXN0UGxhbmFyUXVhZDsKICAgICAgICAgaWYgKG90aGVyLm1fbGFzdFBsYW5h
clNlY29uZGFyeVF1YWQpCi0gICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0g
c3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCpvdGhlci5tX2xhc3RQbGFuYXJTZWNvbmRhcnlR
dWFkKTsKKyAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBtYWtlVW5pcXVl
PEZsb2F0UXVhZD4oKm90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbnVsbHB0cjsKICAg
ICB9CkBAIC01MCw3ICs1MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6b3Bl
cmF0b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBtX2FjY3VtdWxhdGVkVHJh
bnNmb3JtID0gbnVsbHB0cjsKIAogICAgIGlmIChvdGhlci5tX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
KQotICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOworICAgICAg
ICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4oKm90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOwogICAgICAgICAKICAgICByZXR1cm4g
KnRoaXM7CiB9CkBAIC0xMjksMTIgKzEyOSwxMiBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjphcHBs
eVRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtRnJvbUNvbgog
ICAgIC8vIElmIHdlIGhhdmUgYW4gYWNjdW11bGF0ZWQgdHJhbnNmb3JtIGZyb20gbGFzdCB0aW1l
LCBtdWx0aXBseSBpbiB0aGlzIHRyYW5zZm9ybQogICAgIGlmIChtX2FjY3VtdWxhdGVkVHJhbnNm
b3JtKSB7CiAgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURpcmVjdGlv
bikKLSAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyICogKm1fYWNjdW11
bGF0ZWRUcmFuc2Zvcm0pOworICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1h
a2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIgKiAq
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYWNj
dW11bGF0ZWRUcmFuc2Zvcm0tPm11bHRpcGx5KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAg
IH0gZWxzZSBpZiAoYWNjdW11bGF0ZSA9PSBBY2N1bXVsYXRlVHJhbnNmb3JtKSB7CiAgICAgICAg
IC8vIE1ha2Ugb25lIGlmIHdlIHN0YXJ0ZWQgdG8gYWNjdW11bGF0ZQotICAgICAgICBtX2FjY3Vt
dWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4o
dHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0g
PSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVy
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKGFjY3VtdWxhdGUgPT0gRmxhdHRlblRyYW5zZm9ybSkg
ewpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OnNldExhc3RQbGFuYXJT
ZWNvbmRhcnlRdWFkKGNvbnN0IEZsb2F0UXVhZCogcXVhZCkKICAgICAvLyBNYXAgdGhlIHF1YWQg
YmFjayB0aHJvdWdoIGFueSB0cmFuc2Zvcm0gb3Igb2Zmc2V0IGJhY2sgaW50byB0aGUgbGFzdCBm
bGF0dGVuaW5nIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgRmxvYXRRdWFkIGJhY2tNYXBwZWRRdWFk
KCpxdWFkKTsKICAgICBtYXBRdWFkKGJhY2tNYXBwZWRRdWFkLCBpbnZlcnNlRGlyZWN0aW9uKCkp
OwotICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0
UXVhZD4oYmFja01hcHBlZFF1YWQpOworICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBt
YWtlVW5pcXVlPEZsb2F0UXVhZD4oYmFja01hcHBlZFF1YWQpOwogfQogCiB2b2lkIFRyYW5zZm9y
bVN0YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNmb3JtRGlyZWN0aW9uIGRpcmVj
dGlvbiwgYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaAppbmRl
eCAxMDg2Mzc0MDBhMjBmYTJmMDlkZjZhZDQzOTMzY2E3ZGExN2Y0ODYxLi5iNjI1ODM2YTVjZTIy
NWJmNDdmMzMwYzA4YzI5ZDhjNzU2NTJlZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCkBA
IC04NCw3ICs4NCw3IEBAIGNsYXNzIFRyYW5zZm9ybVN0YXRlIHsKICAgICAgICAgLy8gV2UgbXVz
dCBiZSBpbiBhIGZsYXR0ZW5lZCBzdGF0ZSAobm8gYWNjdW11bGF0ZWQgb2Zmc2V0KSB3aGVuIHNl
dHRpbmcgdGhpcyBzZWNvbmRhcnkgcXVhZC4KICAgICAgICAgQVNTRVJUKG1fYWNjdW11bGF0ZWRP
ZmZzZXQgPT0gTGF5b3V0U2l6ZSgpKTsKICAgICAgICAgaWYgKHF1YWQpCi0gICAgICAgICAgICBt
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCpx
dWFkKTsKKyAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBtYWtlVW5pcXVl
PEZsb2F0UXVhZD4oKnF1YWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2xhc3RQbGFu
YXJTZWNvbmRhcnlRdWFkID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IGQzMWEyNTc5
ZmIxZTFjNzk0MjVkMDI5MDVlYmViYzg4ZDE0YWRkNTAuLjhmNzcwMjc1ZGU2OTk1NjhjODUxNWFl
YTBmMmNmYTBlNTIwNTY3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC02NDIsNyArNjQyLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGUKICAgICBib29sIHN5bnRoZXNpemVCb2xkID0gaXNHRElGb250V2Vp
Z2h0Qm9sZCh3ZWlnaHQpICYmICFpc0dESUZvbnRXZWlnaHRCb2xkKGxvZ0ZvbnQubGZXZWlnaHQp
OwogICAgIGJvb2wgc3ludGhlc2l6ZUl0YWxpYyA9IGlzSXRhbGljKGZvbnREZXNjcmlwdGlvbi5p
dGFsaWMoKSkgJiYgIWxvZ0ZvbnQubGZJdGFsaWM7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oV1RGTW92ZShoZm9udCksIGZvbnREZXNjcmlw
dGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBzeW50aGVzaXplQm9sZCwgc3ludGhlc2l6ZUl0YWxp
YywgdXNlR0RJKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0
YT4oV1RGTW92ZShoZm9udCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBz
eW50aGVzaXplQm9sZCwgc3ludGhlc2l6ZUl0YWxpYywgdXNlR0RJKTsKIAogI2lmIFVTRShDRykK
ICAgICBib29sIGZvbnRDcmVhdGlvbkZhaWxlZCA9ICFyZXN1bHQtPmNnRm9udCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDM4N2EyMzlmODI5YzJkNzgwOWMyYzk2ZDNmZTEy
NGRlZTE0YmQzZDcuLjY0ODQ4NWFjMjZjYjIzNzVjZjY1NzRmODFmZjRjZDY1NjcyYzUwODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZQogICAgIGZvbnRSZWZlcmVuY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoYnVmZmVyLCBmb250TmFtZSk7CiAgICAgaWYgKCFmb250UmVmZXJlbmNlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOwogfQog
CiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmlu
ZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggMTkwNDQ5MDA0NWY0ZTdl
N2Y3ZGI4MWQ5NWYwYTZhMjQyYmQ1NDgzOC4uZWFiODA2ZTQyYzA2MmQ1NTk3ODk5NDUyZWZlNzQ3
NGU1OTlmOTJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC00MSw2ICs0MSw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVm
IEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CiAKIHN0cnVjdCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoK
ICAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEhBTkRMRSBmb250UmVmZXJlbmNlLCBjb25zdCBT
dHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4
IGFiN2M3OTBkNjBmMmU4Zjc0YWYwM2MwNmFjZmM3MmM4ZTM5YzIyZDkuLmVlZWFmZWJkOTMzY2E5
Yzc4ZGQwNTE0MTNkMjMzNDRjYTg1M2IwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhQ2Fpcm8uY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAg
ICAgaWYgKCFmb250UmVmZXJlbmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVu
Y2UsIGZvbnROYW1lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5D
b250cm9sbGVyLmNwcAppbmRleCBiOTUzNTUwM2MzMDZjNTAxYWEzOTNmMzFmZmQ5Mjg4NWVkZTli
ZGVmLi5jYzdhZDNlYzMxMGJhZmY5ZjJkNTMxM2VhMzdlYmI2NjdjNzlkNGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2Ny
ZWVuQ29udHJvbGxlci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RhdGljIGNvbnN0IGludCBrRnVsbFNjcmVlbkFuaW1hdGlvbkR1cmF0aW9uID0gNTAwOyAvLyBt
aWxsaXNlY29uZHMgCiAKIGNsYXNzIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpQcml2YXRlIDogcHVi
bGljIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQgIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQcml2YXRlKEZ1bGxTY3JlZW5Db250cm9sbGVy
KiBjb250cm9sbGVyLCBGdWxsU2NyZWVuQ29udHJvbGxlckNsaWVudCogY2xpZW50KSAKICAgICAg
ICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKQEAgLTEwMyw3ICsxMDQsNyBAQCBMUkVTVUxU
IEZ1bGxTY3JlZW5Db250cm9sbGVyOjpQcml2YXRlOjpmdWxsc2NyZWVuQ2xpZW50V25kUHJvYyhI
V05EIGh3bmQsIFVJTlQgbQogfQogCiBGdWxsU2NyZWVuQ29udHJvbGxlcjo6RnVsbFNjcmVlbkNv
bnRyb2xsZXIoRnVsbFNjcmVlbkNvbnRyb2xsZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fcHJp
dmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFByaXZhdGU+KHRoaXMsIGNsaWVudCkpCisgICAgOiBtX3By
aXZhdGUobWFrZVVuaXF1ZTxQcml2YXRlPih0aGlzLCBjbGllbnQpKQogewogICAgIEFTU0VSVF9B
UkcoY2xpZW50LCBjbGllbnQpOwogfQpAQCAtMTMxLDEzICsxMzIsMTMgQEAgdm9pZCBGdWxsU2Ny
ZWVuQ29udHJvbGxlcjo6ZW50ZXJGdWxsU2NyZWVuKCkKICAgICBtX3ByaXZhdGUtPm1fb3JpZ2lu
YWxGcmFtZSA9IG9yaWdpbmFsRnJhbWU7CiAKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS0+bV9iYWNr
Z3JvdW5kV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdyA9IHN0ZDo6
bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRl
LmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdyA9IG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKICAg
ICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdy0+Y3JlYXRlV2luZG93KDApOwogICAgIDo6
QW5pbWF0ZVdpbmRvdyhtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdy0+aHduZCgpLCBrRnVs
bFNjcmVlbkFuaW1hdGlvbkR1cmF0aW9uLCBBV19CTEVORCB8IEFXX0FDVElWQVRFKTsKIAogICAg
IG1fcHJpdmF0ZS0+bV9jbGllbnQtPmZ1bGxTY3JlZW5DbGllbnRXaWxsRW50ZXJGdWxsU2NyZWVu
KCk7CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdyk7Ci0gICAgbV9w
cml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgbV9wcml2YXRl
LT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZS0+bV9m
dWxsU2NyZWVuV2luZG93KTsKICAgICBtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldpbmRvdy0+Y3Jl
YXRlV2luZG93KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAppbmRleCAxMDY3
Yjk2MDkzZGIyZWQ1OTFhMjFhMzFkOWQwMjU2ZGMxMjkzZTg5Li5mMTQ0MjU3MmNjNmQxZDU0YmJl
ZTU4YmRiYzM2ZWRmNzc0YWFiYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAK
QEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChIREMg
ZGMsIGJvb2wgaGFzQWxwaGEpCiAKICAgICBjYWlyb190KiBjciA9IGNyZWF0ZUNhaXJvQ29udGV4
dFdpdGhIREMoZGMsIGhhc0FscGhhKTsKIAotICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHRDYWlybz4o
Y3IpKTsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKG1h
a2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7CiAgICAgbV9kYXRhLT5wbGF0Zm9y
bUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX2RhdGEpOwogICAgIG1fZGF0YS0+
bV9oZGMgPSBkYzsKICAgICBpZiAocGxhdGZvcm1Db250ZXh0KCktPmNyKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IGMyYmFmYWY5NmExNjA3MDgwYjc2MzM5NTI2NjJl
NzY3NzYxNGIwMGMuLjk2YzgyODFhZjRiMjJjNjY4NmFjYjE0YzVlODJjMWQ2OWI5MGRkNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtNjMsNyArNjMsNyBAQCBHcmFwaGlj
c0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMgaGRjLCBJRDJEMURDUmVuZGVyVGFyZ2V0Kiog
cmVuZGVyVGFyZ2V0LCBSRQogCiAgICAgKCpyZW5kZXJUYXJnZXQpLT5CaW5kREMoaGRjLCAmcmVj
dCk7CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7CisgICAgYXV0byBvd25lZFBs
YXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KCpyZW5k
ZXJUYXJnZXQpOwogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGUoV1RGTW92ZShvd25lZFBsYXRmb3JtQ29udGV4dCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRU
eXBlOjpHUFVNZW1vcnkpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7CiB9CkBAIC0xMjYsNyAr
MTI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChIREMgaGRjLCBib29s
IGhhc0FscGhhKQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldC5nZXQoKSk7CisgICAgYXV0byBvd25lZFBsYXRm
b3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRh
cmdldC5nZXQoKSk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwgQml0bWFwUmVuZGVyaW5nQ29udGV4
dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGhkYzsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBiZDc2ZWZiYmE5ZDBlODk3ZDNkMjg4
ZTg1ZThkMjQ0NGNjNGY4ZjRlLi4xZWJiNWIwOWQzODUzN2MwMTkyMjBiOTQ3ZGNhZDk0NGQ4ZTEw
MTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbJnBsYXRmb3JtQ29udGV4
dF0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQs
IHBsYXRmb3JtQ29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7CiAgICAgICAg
IH0pOwogfQogCkBAIC01NSwxNCArNTUsMTQgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0Nv
bnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUYKICAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAg
ICAgICAgW3JlbmRlclRhcmdldF0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ+KGNvbnRleHQsIHJlbmRlclRhcmdldCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHJlbmRlclRhcmdl
dCk7CiAgICAgICAgIH0pOwogfQogCiBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OkdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJ
bXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCiAgICAgLCBt
X3BsYXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250
ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1v
cnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJp
bmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRH
cmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5z
eW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CkBAIC03MCw5ICs3MCw5IEBAIEdyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4CiAKIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSUQyRDFSZW5kZXJU
YXJnZXQqIHJlbmRlclRhcmdldCkKICAgICA6IEdyYXBoaWNzQ29udGV4dEltcGwoY29udGV4dCwg
RmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKLSAgICAsIG1fb3duZWRQbGF0Zm9y
bUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVy
VGFyZ2V0KSkKKyAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQobWFrZVVuaXF1ZTxQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0
KCptX293bmVkUGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlx
dWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKKyAg
ICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4o
bV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4
dFR5cGU6OkdQVU1lbW9yeSkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3ND
b250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRl
eHQobV9wbGF0Zm9ybUNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAppbmRleCA1YmRlNGNl
ZGY1MTZhOTE3OWE2ZDNkM2IzZTMzZDEzNGVkNWFiNTExLi4xZDgwNDIwY2Y3ZWM2Y2Q3NzVhNjJi
YWVhMjJmOTkwNjA3ZWI0Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcApAQCAtOTUsNyArOTUs
NyBAQCBHcmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA6On5XaW5kb3dzQml0bWFwKCkKIAog
c3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDo6V2luZG93c0JpdG1hcD4gR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGVXaW5kb3dzQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2luZG93c0JpdG1hcD4obV9kYXRhLT5tX2hkYywgc2l6
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2luZG93c0JpdG1hcD4obV9kYXRhLT5tX2hkYywg
c2l6ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCmluZGV4IDA2YzE3NDU3
OWE0YmMxMzA5MWYzNGI1Nzk0YWFhOTI5OTNiYmJhMjQuLjM1YTlmZjYxMTM1MWMzM2M3MTc0ZDky
YTFmZGNmNDQ3MGU4MWE4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKQEAgLTExMiw4ICsx
MTIsOCBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBOb3RlOiBUaGlzIHBsYWNlcyB0aGUgYml0bWFwY29udGV4dCBpbnRvIGEgbG9ja2VkIHN0YXRl
IGJlY2F1c2Ugb2YgdGhlIEJlZ2luRHJhdyBjYWxsIGluIHRoZSBjb25zdHJ1Y3Rvci4KLSAgICBt
X2RhdGEucGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Ci0gICAgbV9kYXRhLmNvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRhLnBsYXRmb3JtQ29udGV4dC5nZXQo
KSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5
KTsKKyAgICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CisgICAgbV9kYXRhLmNvbnRleHQgPSBt
YWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRhLnBsYXRmb3JtQ29udGV4dC5nZXQoKSwg
R3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsK
IAogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93LmgKaW5kZXggZTA2NjMxMGEwYWNhNzFiZDlhYzgxZGQxNmJhMGRiMTVh
N2Q1MTFkNS4uZDI4NTM4YTE1ODIyOGIyYzg5ZTE4M2M3MzkxNGUxMmI4YTE4OTE2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5oCkBAIC00OCw2ICs0
OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQgewogfTsKIAog
Y2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdyhNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kik7CiAgICAgfk1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggNTgzOGVjMTU3YTJjN2I3MTYzYjcxNjgy
YTRlYjhjODAzNGU5NjMyMS4uNmQ2NGFlOWE2ZTNhNDE3ZmIxNGYxMjE2NmY2OGQzYzlhNTUyNjZk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAK
QEAgLTgyLDcgKzgyLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjp+TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFy
IHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3Ry
YXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1
cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogICAgIH0KIH0KQEAgLTMw
MSw3ICszMDEsNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om1h
eFRpbWVTZWVrYWJsZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6YnVmZmVyZWQoKSBjb25zdAog
eyAKLSAgICBhdXRvIHJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigpOworICAgIGF1dG8gcmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7
CiAgICAgaWYgKG1fcHJlc2VudGVyICYmIG1fcHJlc2VudGVyLT5tYXhUaW1lTG9hZGVkKCkgPiAw
KQogICAgICAgICByYW5nZXMtPmFkZChNZWRpYVRpbWU6Onplcm9UaW1lKCksIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZShtX3ByZXNlbnRlci0+bWF4VGltZUxvYWRlZCgpKSk7CiAgICAgcmV0
dXJuIHJhbmdlczsKQEAgLTg4OCw3ICs4ODgsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb246OkN1c3RvbVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcihNZQog
ICAgIG1fc291cmNlUmVjdC5ib3R0b20gPSAxOwogICAgIG1fc291cmNlUmVjdC5yaWdodCA9IDE7
CiAKLSAgICBtX3ByZXNlbnRlckVuZ2luZSA9IHN0ZDo6bWFrZV91bmlxdWU8RGlyZWN0M0RQcmVz
ZW50ZXI+KCk7CisgICAgbV9wcmVzZW50ZXJFbmdpbmUgPSBtYWtlVW5pcXVlPERpcmVjdDNEUHJl
c2VudGVyPigpOwogICAgIGlmICghbV9wcmVzZW50ZXJFbmdpbmUpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oCmluZGV4IDkw
ZTliNzIxNTcwOGFjMmEyZWZmN2Q0YTZhZGUxNDdlZWUyODg0NjYuLmEyMTY2MTEwYjM4MDBmMTc2
NDcxNjVjMmQwMmEwZGE5ZWE5NTEwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGlj
IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbihNZWRpYVBsYXllciopOwogICAgIH5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24oKTsKQEAgLTE2OCw2ICsxNjksNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZv
dW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYQogICAgIH07
CiAKICAgICBjbGFzcyBBc3luY0NhbGxiYWNrIDogcHVibGljIElNRkFzeW5jQ2FsbGJhY2ssIHB1
YmxpYyBNZWRpYVBsYXllckxpc3RlbmVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgogICAgICAgICBBc3luY0NhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbiosIGJvb2wgZXZlbnQpOwogICAgICAgICB+QXN5bmNDYWxsYmFjaygp
OwpAQCAtMTkxLDYgKzE5Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhCiAgICAgdHlwZWRl
ZiBEZXF1ZTxDT01QdHI8SU1GU2FtcGxlPj4gVmlkZW9TYW1wbGVMaXN0OwogCiAgICAgY2xhc3Mg
VmlkZW9TYW1wbGVQb29sIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
cHVibGljOgogICAgICAgICBWaWRlb1NhbXBsZVBvb2woKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZp
cnR1YWwgflZpZGVvU2FtcGxlUG9vbCgpID0gZGVmYXVsdDsKQEAgLTIxMiw2ICsyMTUsNyBAQCBj
bGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYQogICAgIGNsYXNzIERpcmVjdDNEUHJlc2VudGVyOwogCiAg
ICAgY2xhc3MgVmlkZW9TY2hlZHVsZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAgICAgICAgIFZpZGVvU2NoZWR1bGVyKCkgPSBkZWZhdWx0OwogICAg
ICAgICB2aXJ0dWFsIH5WaWRlb1NjaGVkdWxlcigpID0gZGVmYXVsdDsKQEAgLTI1Nyw2ICsyNjEs
NyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24gZmluYWwgOiBwdWJs
aWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYQogICAgIH07CiAKICAgICBjbGFzcyBEaXJlY3Qz
RFByZXNlbnRlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKICAgICAgICAgRGlyZWN0M0RQcmVzZW50ZXIoKTsKICAgICAgICAgfkRpcmVjdDNEUHJlc2Vu
dGVyKCk7CkBAIC0zMTksNiArMzI0LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICAg
ICAgLCBwdWJsaWMgSU1GVmlkZW9EaXNwbGF5Q29udHJvbAogICAgICAgICAsIHB1YmxpYyBJTUZB
c3luY0NhbGxiYWNrCiAgICAgICAgICwgcHVibGljIE1lZGlhUGxheWVyTGlzdGVuZXIgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEN1c3Rv
bVZpZGVvUHJlc2VudGVyKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiopOwogICAg
ICAgICB+Q3VzdG9tVmlkZW9QcmVzZW50ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmgK
aW5kZXggNmZiZTJiNWVkNzVhYjNiYTA0ZTMwMjU0OWNjZWI5MTYxYWY1YzAxMy4uMTkwNTQwZTAz
M2Q5YjdjYzhjNTRiOGIxYmVmNzc2OTJiZDVmOTQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVj
dDJELmgKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IFNoYWRvd1N0YXRlOwogfQogCiBjbGFzcyBQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQpOwogcHVibGlj
OgogICAgIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKElEMkQxUmVuZGVyVGFyZ2V0Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1
ZXVlLmNwcAppbmRleCAzMzdmYWYzNzhkYTc5NTViZWE2MTBhZWM5MDc1Nzk2NmQ2YzQ4MjAwLi45
ZDdkOTJlOGVhZDk2YTFiYmRmYmQxZDkyZGM5NjYyMWM2YzQyZjc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0tDQUltYWdl
UXVldWVQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBSZXRhaW5QdHI8Q0FJbWFnZVF1ZXVlUmVmPiBtX2ltYWdlUXVldWU7CiB9OwpAQCAtNTAsMTMg
KzUxLDEzIEBAIHN0YXRpYyB2b2lkIFdLQ0FJbWFnZVF1ZXVlUmVsZWFzZShDQUltYWdlUXVldWVS
ZWYgaXEpCiB9CiAKIFdLQ0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSh1aW50MzJfdCB3aWR0
aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBjYXBhY2l0eSkKLSAgICA6IG1fcHJpdmF0ZShz
dGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKKyAgICA6IG1fcHJpdmF0
ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKIHsKICAgICBtX3ByaXZhdGUt
Pm1faW1hZ2VRdWV1ZSA9IGFkb3B0Q0Yod2tDQUltYWdlUXVldWVDcmVhdGUod2lkdGgsIGhlaWdo
dCwgY2FwYWNpdHkpKTsKIH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKGNvbnN0
IFdLQ0FJbWFnZVF1ZXVlJiBvKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V0tD
QUltYWdlUXVldWVQcml2YXRlPigpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8V0tDQUlt
YWdlUXVldWVQcml2YXRlPigpKQogewogICAgIG1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlID0gby5t
X3ByaXZhdGUtPm1faW1hZ2VRdWV1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCA3MWEwMGEzMGMwZmFlZGQ5YjQwZWM0ZmZhZGYxNzg2
MzhmMjViODU0Li40MjI1MmQzNGI1NGZlNmMyYzI2YjUyMmM2NjBlODYyZjA1NmVmMDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC00Mywy
NCArNDMsMjQgQEAgZW51bSBDbGlwYm9hcmREYXRhVHlwZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiQ0xJUEJPQVJEIik7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJQUklNQVJZIik7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIlBSSU1BUlkiKTsKIH0KIAogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhOjpjcmVhdGUoKSk7CiB9CiAKIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0
YSgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEu
cGxhdGZvcm1EYXRhKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFn
RGF0YS5wbGF0Zm9ybURhdGEoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCmluZGV4IDQ5MDM3MWFkODllZjJlNzk2
ZTM0MDFhYWMxZGJiODA2ZWE5NjZlYjAuLmFmOGZmMzQyNDZiYzk3MmYxYTVmZjczN2Y5OTI5ODA5
ZmI2NjliMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEhlbHBlci5jcHAKQEAgLTI2Niw2ICsyNjYsNyBAQCBWZWN0b3I8R2RrQXRvbT4gUGFzdGVib2Fy
ZEhlbHBlcjo6ZHJvcEF0b21zRm9yQ29udGV4dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZwog
c3RhdGljIFNlbGVjdGlvbkRhdGEqIHNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb247CiAKIHN0cnVj
dCBDbGlwYm9hcmRTZXREYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgQ2xpcGJvYXJkU2V0RGF0YShTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykKICAgICAgICAgOiBzZWxl
Y3Rpb25EYXRhKHNlbGVjdGlvbikKICAgICAgICAgLCBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2so
V1RGTW92ZShzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2spKQpAQCAtMzAwLDcgKzMwMSw3IEBAIHZv
aWQgUGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQq
IGNsaXBib2FyZCwgY29uc3QgU2VsCiAKICAgICBpZiAobnVtYmVyT2ZUYXJnZXRzID4gMCAmJiB0
YWJsZSkgewogICAgICAgICBTZXRGb3JTY29wZTxTZWxlY3Rpb25EYXRhKj4gY2hhbmdlKHNldHRp
bmdDbGlwYm9hcmRTZWxlY3Rpb24sIGNvbnN0X2Nhc3Q8U2VsZWN0aW9uRGF0YSo+KCZzZWxlY3Rp
b24pKTsKLSAgICAgICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwYm9hcmRTZXRE
YXRhPigqc2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgV1RGTW92ZShwcmltYXJ5U2VsZWN0aW9u
Q2xlYXJlZCkpOworICAgICAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPENsaXBib2FyZFNldERh
dGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBXVEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25D
bGVhcmVkKSk7CiAgICAgICAgIGlmIChndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEoY2xpcGJv
YXJkLCB0YWJsZSwgbnVtYmVyT2ZUYXJnZXRzLCBnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNr
LCBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2ssIGRhdGEuZ2V0KCkpKSB7CiAgICAgICAg
ICAgICBndGtfY2xpcGJvYXJkX3NldF9jYW5fc3RvcmUoY2xpcGJvYXJkLCBudWxscHRyLCAwKTsK
ICAgICAgICAgICAgIC8vIFdoZW4gZ3RrX2NsaXBib2FyZF9zZXRfd2l0aF9kYXRhKCkgc3VjY2Vl
ZHMgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrIHRha2VzIHRoZSBvd25lcnNoaXAgb2Yg
ZGF0YSwgc28gd2UgbGVhayBpdCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUdhZGdldC5jcHAKaW5kZXggYmRjYzk5ZTg1OWQ0OTc1MDc4ZmYzYzVl
MmViYzM4NWQ5Yjk1Yjk1Mi4uNzNlMDc1OGE2ZWRkMWUxOTMyMzEwODNmODlhN2U3ZmRmMjBkMTM3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2Fk
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRn
ZXQuY3BwCkBAIC0zNSwyMCArMzUsMjAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRoZW1lR2Fk
Z2V0PiBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGNvbnN0IFJlbmRlclRoZW1lR2EKIHsKICAg
ICBzd2l0Y2ggKGluZm8udHlwZSkgewogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6
OkdlbmVyaWM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lR2Fk
Z2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3Np
dGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6VGV4dEZpZWxkOgotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRleHRGaWVsZEdhZGdldD4o
aW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZVRleHRGaWVsZEdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywg
cG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlJhZGlvOgogICAg
IGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkNoZWNrOgotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJs
aW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRv
Z2dsZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2Ug
UmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkFycm93OgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZUFycm93R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBw
b3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRn
ZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRo
ZW1lR2FkZ2V0OjpUeXBlOjpJY29uOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZUljb25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVJY29uR2FkZ2V0PihpbmZvLCBw
YXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6
VHlwZTo6U2Nyb2xsYmFyOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZVNjcm9sbGJhckdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhckdhZGdldD4oaW5m
bywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRn
ZXQ6OlR5cGU6OkJ1dHRvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVCdXR0b25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0b25HYWRnZXQ+KGluZm8sIHBh
cmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZVdpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRn
ZXQuY3BwCmluZGV4IDA1ZDEyZGQ5ZWFmYmVmMDJhNDU5Y2E1Mjc2NDE3YTViOWIwZTg5NzYuLmNh
NmVkOTE4YTUwMzNlMjk3NmRiODRkODljMjA0ODg3MDBmMDJiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcApAQCAtNDIsNDkgKzQy
LDQ5IEBAIFJlbmRlclRoZW1lV2lkZ2V0JiBSZW5kZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUo
VHlwZSB3aWRnZXRUeXBlKQogICAgIGF1dG8gYWRkUmVzdWx0ID0gd2lkZ2V0TWFwKCkuZW5zdXJl
KHN0YXRpY19jYXN0PHVuc2lnbmVkPih3aWRnZXRUeXBlKSwgW3dpZGdldFR5cGVdKCkgLT4gc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclRoZW1lV2lkZ2V0PiB7CiAgICAgICAgIHN3aXRjaCAod2lkZ2V0
VHlwZSkgewogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNj
cm9sbGJhclJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6Ok1vZGU6OkZ1bGwpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6Ok1vZGU6OkZ1bGwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpWZXJ0aWNhbFNjcm9sbGJhckxlZnQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5k
ZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRp
Y2FsUG9zaXRpb246OkxlZnQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6Ok1vZGU6OkZ1bGwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9u
OjpMZWZ0KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRh
bFNjcm9sbGJhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6Ok1vZGU6OkZ1bGwpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNj
cm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5
cGU6OlZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9yUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJ
Q0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05f
VkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAg
ICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvckxl
ZnQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9s
bGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9k
ZTo6SW5kaWNhdG9yLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVm
dCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4o
R1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5k
aWNhdG9yLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTY3JvbGxJbmRp
Y2F0b3I6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNj
cm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpNb2RlOjpJbmRpY2F0b3IpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVy
VGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNj
cm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6Q2hlY2tCdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6
OkNoZWNrKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xl
QnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6Q2hlY2spOwogICAgICAgICBj
YXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpSYWRpb0J1dHRvbjoKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVt
ZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6UmFkaW8pOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBl
OjpSYWRpbyk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkJ1dHRvbjoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihS
ZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6Tm8pOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkJ1dHRvbkRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVu
ZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Olllcyk7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkNvbWJvQm94OgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVDb21ib0JveD4oKTsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQ29tYm9Cb3g+KCk7CiAgICAg
ICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkVudHJ5OgotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6OlNlbGVjdGVkRW50cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PihSZW5kZXJUaGVtZUVudHJ5OjpTZWxlY3Rl
ZDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lRW50cnk+
KFJlbmRlclRoZW1lRW50cnk6OlNlbGVjdGVkOjpZZXMpOwogICAgICAgICBjYXNlIFJlbmRlclRo
ZW1lV2lkZ2V0OjpUeXBlOjpTZWFyY2hFbnRyeToKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+KCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNlYXJjaEVudHJ5PigpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpTcGluQnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTcGluQnV0dG9uPigpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTcGluQnV0dG9uPigpOwogICAgICAgICBjYXNlIFJlbmRl
clRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNsaWRlcjoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fVkVSVElD
QUwpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdU
S19PUklFTlRBVElPTl9WRVJUSUNBTCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6
OlR5cGU6Okhvcml6b250YWxTbGlkZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRB
VElPTl9IT1JJWk9OVEFMKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6
UHJvZ3Jlc3NCYXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpEZXRlcm1pbmF0
ZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFy
PihSZW5kZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpEZXRlcm1pbmF0ZSk7CiAgICAgICAgIGNh
c2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkluZGV0ZXJtaW5hdGVQcm9ncmVzc0JhcjoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+
KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkluZGV0ZXJtaW5hdGUpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQ
cm9ncmVzc0Jhcjo6TW9kZTo6SW5kZXRlcm1pbmF0ZSk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhl
bWVXaWRnZXQ6OlR5cGU6Okxpc3RWaWV3OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclRoZW1lTGlzdFZpZXc+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRn
ZXQ6OlR5cGU6Okljb246Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZUljb24+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZUljb24+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OldpbmRvdzoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lV2luZG93Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVXaW5kb3c+KCk7CiAg
ICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMTM5LDcgKzEzOSw3IEBAIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpSZW5kZXJU
aGVtZVNjcm9sbGJhcihHdGtPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgTW9kZSBtb2RlCiAgICAg
aW5mby50eXBlID0gUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkdlbmVyaWM7CiAgICAgaW5mby5u
YW1lID0gImNvbnRlbnRzIjsKICAgICBpbmZvLmNsYXNzTGlzdC5jbGVhcigpOwotICAgIG1fY29u
dGVudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtf
T1JJRU5UQVRJT05fVkVSVElDQUwsIGNoaWxkcmVuLCBtX3Njcm9sbGJhci5nZXQoKSk7CisgICAg
bV9jb250ZW50cyA9IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19P
UklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1fc2Nyb2xsYmFyLmdldCgpKTsKICAgICBp
bmZvLm5hbWUgPSAic2xpZGVyIjsKICAgICBtX3NsaWRlciA9IFJlbmRlclRoZW1lR2FkZ2V0Ojpj
cmVhdGUoaW5mbywgbV9jb250ZW50cy0+Y2hpbGQobV90cm91Z2hQb3NpdGlvbikpOwogfQpAQCAt
MTk3LDcgKzE5Nyw3IEBAIFJlbmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3go
KQogICAgIH07CiAgICAgaW5mby5uYW1lID0gImJveCI7CiAgICAgaW5mby5jbGFzc0xpc3QgPSB7
ICJob3Jpem9udGFsIiwgImxpbmtlZCIgfTsKLSAgICBtX2JveCA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBj
aGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CisgICAgbV9ib3ggPSBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgY2hpbGRy
ZW4sIG1fY29tYm9Cb3guZ2V0KCkpOwogICAgIFJlbmRlclRoZW1lR2FkZ2V0KiBidXR0b24gPSBt
X2JveC0+Y2hpbGQoMCk7CiAgICAgaW5mby5jbGFzc0xpc3QucmVtb3ZlTGFzdCgpOwogICAgIG1f
YnV0dG9uQm94ID0gUmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZShpbmZvLCBidXR0b24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4NDA3YzExMDFkZGQ2ZGI2ZTM3OGRlZmNiM2Fi
ODI2YmY3MjY0NTRkLi43ODY5N2ViMDAwMGY3ZjdiODJhN2QwZWNmNWY5ODVhMWU5Mjg5YzMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEJNUElt
YWdlRGVjb2Rlcjo6ZGVjb2RlSGVscGVyKGJvb2wgb25seVNpemUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmICghbV9yZWFkZXIpIHsKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlzLCBtX2RlY29kZWRPZmZzZXQsIGltZ0RhdGFP
ZmZzZXQsIGZhbHNlKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEJNUEltYWdlUmVh
ZGVyPih0aGlzLCBtX2RlY29kZWRPZmZzZXQsIGltZ0RhdGFPZmZzZXQsIGZhbHNlKTsKICAgICAg
ICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAKaW5kZXggN2JhN2VkOTEwMWNlMjVhOWJmNmUyMzEwODdiZjBiYzExNGNj
MjJkNi4uNGYzNDg3ZTMzNDc2NDA1NDc0Y2Y4NmI1YzYwNmQyYzE5ODhjN2NiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEdJRkltYWdlRGVj
b2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSwgYm9vbCBh
bGxEYXRhUgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmVhZGVyKSB7Ci0gICAgICAg
IG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHSUZJbWFnZVJlYWRlcj4odGhpcyk7CisgICAg
ICAgIG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxHSUZJbWFnZVJlYWRlcj4odGhpcyk7CiAgICAgICAg
IG1fcmVhZGVyLT5zZXREYXRhKG1fZGF0YS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
UmVhZGVyLmNwcAppbmRleCAxY2NhNWU1OWVlYjM1MWIwNThhMjFkYjEzNGY2NDM3OTFlNTA3N2Nh
Li5kNzcxODZlYTk3MzliZGZiMmM1NjIyOGVlNGNmNWU4ODI4ZDg4NTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZVJlYWRlci5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCBib29sIEdJRkZyYW1lQ29udGV4dDo6
ZGVjb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6
OgogICAgICAgICBpZiAoIWlzRGF0YVNpemVEZWZpbmVkKCkgfHwgIWlzSGVhZGVyRGVmaW5lZCgp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgbV9sendDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxHSUZMWldDb250ZXh0PihjbGllbnQsIHRoaXMpOworICAgICAgICBtX2x6
d0NvbnRleHQgPSBtYWtlVW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNsaWVudCwgdGhpcyk7CiAgICAg
ICAgIGlmICghbV9sendDb250ZXh0LT5wcmVwYXJlVG9EZWNvZGUoKSkgewogICAgICAgICAgICAg
bV9sendDb250ZXh0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc4
Niw3ICs3ODYsNyBAQCB2b2lkIEdJRkltYWdlUmVhZGVyOjpzZXRSZW1haW5pbmdCeXRlcyhzaXpl
X3QgcmVtYWluaW5nQnl0ZXMpCiB2b2lkIEdJRkltYWdlUmVhZGVyOjphZGRGcmFtZUlmTmVjZXNz
YXJ5KCkKIHsKICAgICBpZiAobV9mcmFtZXMuaXNFbXB0eSgpIHx8IG1fZnJhbWVzLmxhc3QoKS0+
aXNDb21wbGV0ZSgpKQotICAgICAgICBtX2ZyYW1lcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxH
SUZGcmFtZUNvbnRleHQ+KG1fZnJhbWVzLnNpemUoKSkpOworICAgICAgICBtX2ZyYW1lcy5hcHBl
bmQobWFrZVVuaXF1ZTxHSUZGcmFtZUNvbnRleHQ+KG1fZnJhbWVzLnNpemUoKSkpOwogfQogCiAv
LyBGSVhNRTogTW92ZSB0aGlzIG1ldGhvZCB0byBjbG9zZSB0byBkb0xaVygpLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCAxODcwYmIxNjBiODQ5NDhmMGI1OWRlNDUxMTYzNmJhNGMw
ZjM4ZjJlLi5mZjZhMWM4N2FlNmYwNWI0OWNjYzEyOGFiZTA1YzMwM2Q2ZWViYWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgSUNPSW1hZ2VE
ZWNvZGVyOjpkZWNvZGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICAgICAgICAgIC8vIFdlIG5l
ZWQgdG8gaGF2ZSBhbHJlYWR5IHNpemVkIG1fZnJhbWVCdWZmZXJDYWNoZSBiZWZvcmUgdGhpcywg
YW5kCiAgICAgICAgICAgICAvLyB3ZSBtdXN0IG5vdCByZXNpemUgaXQgYWdhaW4gbGF0ZXIgKHNl
ZSBjYXV0aW9uIGluIGZyYW1lQ291bnQoKSkuCiAgICAgICAgICAgICBBU1NFUlQobV9mcmFtZUJ1
ZmZlckNhY2hlLnNpemUoKSA9PSBtX2RpckVudHJpZXMuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1f
Ym1wUmVhZGVyc1tpbmRleF0gPSBzdGQ6Om1ha2VfdW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlz
LCBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0LCAwLCB0cnVlKTsKKyAgICAgICAgICAgIG1fYm1wUmVh
ZGVyc1tpbmRleF0gPSBtYWtlVW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlzLCBkaXJFbnRyeS5t
X2ltYWdlT2Zmc2V0LCAwLCB0cnVlKTsKICAgICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0t
PnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0t
PnNldEJ1ZmZlcigmbV9mcmFtZUJ1ZmZlckNhY2hlW2luZGV4XSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGViZmU0NTMwZjcxODUzMDcyZTNhNTNkMmZj
YzY2MGU3YTA5NmNmNDMuLjBjMDU0OWI1YTNlZTA0YWYyOWNhN2Q2MDYwMzVmY2ZlNjE3NDg1MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtNjUzLDcgKzY1Myw3IEBAIHZv
aWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmVhZGVyKQotICAgICAgICBt
X3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SlBFR0ltYWdlUmVhZGVyPih0aGlzKTsKKyAgICAg
ICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEpQRUdJbWFnZVJlYWRlcj4odGhpcyk7CiAKICAgICAv
LyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2ZSByZWNlaXZlZCBhbGwg
dGhlIGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzE4YTM5YjU5MTMzYTMxOGYxNTEwNTgxZThmOTFlYmRkNzY4NzlhYi4u
NjJjYjliMjJhMDFmMjZlOWYyY2Q0MWRlYTM4MWIzNjM2ODk3ZWU0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6
ZGVjb2RlKGJvb2wgb25seVNpemUsIHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBib29sIGFsbERhdGFS
ZQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmVhZGVyKQotICAgICAgICBtX3JlYWRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UE5HSW1hZ2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3Jl
YWRlciA9IG1ha2VVbmlxdWU8UE5HSW1hZ2VSZWFkZXI+KHRoaXMpOwogCiAgICAgLy8gSWYgd2Ug
Y291bGRuJ3QgZGVjb2RlIHRoZSBpbWFnZSBidXQgd2UndmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRh
LCBkZWNvZGluZwogICAgIC8vIGhhcyBmYWlsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbQppbmRleCAyMDlmODhmNDdhM2I3Y2RjMDE0M2RlOTJl
MjRiYWRkZjk2NjRiNWY0Li5jYWUzZGNmMTY0Nzk2Y2VlY2I2OGIyNDQ4ZjExMzNjMTBlYzljMjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0K
QEAgLTY5LDcgKzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTGVnYWN5VGlsZUNhY2hlOjpM
ZWdhY3lUaWxlQ2FjaGUoV0FLV2luZG93KiB3aW5kb3cpCiAgICAgOiBtX3dpbmRvdyh3aW5kb3cp
CiAgICAgLCBtX3RvbWJzdG9uZShhZG9wdE5TKFtbTGVnYWN5VGlsZUNhY2hlVG9tYnN0b25lIGFs
bG9jXSBpbml0XSkpCi0gICAgLCBtX3pvb21lZE91dFRpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8
TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKSkKKyAgICAsIG1fem9vbWVkT3V0VGls
ZUdyaWQobWFrZVVuaXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQogICAg
ICwgbV90aWxlQ3JlYXRpb25UaW1lcigqdGhpcywgJkxlZ2FjeVRpbGVDYWNoZTo6dGlsZUNyZWF0
aW9uVGltZXJGaXJlZCkKIHsKICAgICBbaG9zdExheWVyKCkgaW5zZXJ0U3VibGF5ZXI6bV96b29t
ZWRPdXRUaWxlR3JpZC0+dGlsZUhvc3RMYXllcigpIGF0SW5kZXg6MF07CkBAIC0yMzYsNyArMjM2
LDcgQEAgdm9pZCBMZWdhY3lUaWxlQ2FjaGU6OmNvbW1pdFNjYWxlQ2hhbmdlKCkKIAogICAgIGlm
IChtX2N1cnJlbnRTY2FsZSAhPSBtX3pvb21lZE91dFRpbGVHcmlkLT5zY2FsZSgpKSB7CiAgICAg
ICAgIGlmICghbV96b29tZWRJblRpbGVHcmlkKSB7Ci0gICAgICAgICAgICBtX3pvb21lZEluVGls
ZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6
ZSk7CisgICAgICAgICAgICBtX3pvb21lZEluVGlsZUdyaWQgPSBtYWtlVW5pcXVlPExlZ2FjeVRp
bGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSk7CiAgICAgICAgICAgICBbaG9zdExheWVyKCkgYWRk
U3VibGF5ZXI6bV96b29tZWRJblRpbGVHcmlkLT50aWxlSG9zdExheWVyKCldOwogICAgICAgICAg
ICAgaG9zdExheWVyU2l6ZUNoYW5nZWQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaAppbmRleCA2NjQ3ZWMzYTM2ZDE1ODc4Njk0ZjA3
ZDAyYjFmYjFlOGMzNTBkNTNmLi4zMGVmOWZjMzFjODdmMTFiZmFmZTRjYTZhOWVhODEyNGQ1ZmMz
YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdy
aWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUdyaWQuaApA
QCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lUaWxlR3Jp
ZFRpbGU7CiAKIGNsYXNzIExlZ2FjeVRpbGVHcmlkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEludFBvaW50IFRpbGVJbmRleDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAxOTFhYzc2OTYy
MTUxMjE1M2RiZGNiMDc4ZGQ2NmY0NjU1M2JjMjFkLi4wMjcxYjkzZTcwNWNlMmM0MmQ2MzJmZTJk
YjI5YWE0NmU4MzZkMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQpAQCAtNjYsMTIgKzY2LDEyIEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0lt
YWdlKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9hcmQi
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiZGF0YSBpbnRlcmFjdGlvbiBw
YXN0ZWJvYXJkIik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5h
bWUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVi
b2FyZE5hbWUoKSk7CiB9CiAKICNlbmRpZgpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKCkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KGNoYW5nZUNvdW50Rm9yUGFzdGVi
b2FyZCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2Vi
Q29udGVudCYgY29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1t
CmluZGV4IGE5ZDllNDcxMDUwMTdkNjRkODJlMzdjOGFhMzFjZTY0NjkwMjU2ODUuLmMyYjVhMGIw
OGJkZjc1ZThjMDFjZDliZDJkNTFjMzE0OTMwNWYzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtODQsNyArODQsNyBAQCBSZXRhaW5QdHI8TlNVUkxSZXF1
ZXN0PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklmTmVlZGVkKE5TVVJMICp1cmwsIE5TU3Ry
aW5nCiAgICAgaWYgKFtRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXQoKSBjb250YWlu
c09iamVjdDp1cGRhdGVkTUlNRVR5cGUuZ2V0KCldKSB7CiAgICAgICAgIFJldGFpblB0cjxOU1N0
cmluZz4gdXRpID0gYWRvcHROUyhQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFR5cGVDb3B5VVRJ
Rm9yVVJMQW5kTWltZVR5cGUodXJsLCB1cGRhdGVkTUlNRVR5cGUuZ2V0KCkpKTsKIAotICAgICAg
ICBhdXRvIGNvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oZGF0
YSwgdXRpLmdldCgpKTsKKyAgICAgICAgYXV0byBjb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZp
ZXdDb252ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQoKSk7CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCBw
cmV2aWV3UmVxdWVzdCA9IGNvbnZlcnRlci0+cHJldmlld1JlcXVlc3QoKTsKIAogICAgICAgICAv
LyBXZSB1c2UgW3JlcXVlc3QgVVJMXSBoZXJlIGluc3RlYWQgb2YgdXJsIHNpbmNlIGl0IHdpbGwg
YmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5k
TGlzdGVuZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFu
ZExpc3RlbmVySU9TLm1tCmluZGV4IDEwN2M3N2M3NTNlYWI3ZDkyZGEyOTQ4N2NhNmY2NWY4MDcw
NDgyMTMuLjZkOWNjZTE1Yjg3NGYxNWYxNTQ4NzVlYTBlZTZiOWYxMDM1YTgzNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
cklPUy5tbQpAQCAtNDUsNyArNDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExp
c3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYQogICAgIGlm
ICghTWVkaWFQbGF5ZXJMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TPihjbGllbnQp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUz4oY2xpZW50
KTsKIH0KIAogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJJ
T1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJT1MubW0KaW5kZXggMDFmMGE5YmIyMGEy
NDhiNjk5ODg1NjQ3MGFlZTM3NGE5OGNmYTUxYy4uZWQ2MzJlYTVlM2Y1NTk3ZTlkNzZmZDJlNTU2
OTU2MWZlNmM0YzIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3Jv
bGxBbmltYXRvcklPUy5tbQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShT
Y3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxB
bmltYXRvcklPUzo6U2Nyb2xsQW5pbWF0b3JJT1MoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9h
cmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRM
aWJXUEUuY3BwCmluZGV4IDA1NDNlZDVlOWZjOWZjZmUzYmJhYTQwMzU1ZTQwNzJmOWYzYzNmNDAu
LmY4YTYxZWM3MGMwYzFhNGNkMzc3ZjBlN2NkNjc2ZWZiOWRlNWJjOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
c3RlYm9hcmQ+KCk7CiB9CiAKIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA1MTUyMGRjYmJlYTU5MjE4
NWMzMjY3MDJjYmE2OWZlODhiNGQ0ZGRlLi44ZWIxNWNmODg1MmQ5ODU3NDQ3ZTA1OWMzOGFjYWVi
YTIzNDE1ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbQpAQCAtMTAwLDcgKzEwMCw3IEBAIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb21pCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkK
IHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2VuZXJhbFBib2FyZCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFsUGJvYXJkKTsKICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIApAQCAtMTA4LDEzICsxMDgsMTMgQEAgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgp
CiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0Fu
ZERyb3AoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oTlNEcmFnUGJvYXJkKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9hcmQpOwogICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdE
YXRhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRh
LnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5m
aWxlTmFtZXMoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJNYWMubW0KaW5kZXggMDVjYzA4OTU3ZTFk
NTAxMjRkZDYzMmUyYTRjODkyMTI5ODk2OTYxMS4uMWFhMmNkODAxMzJmMmMyMWVlMzhiOWZmYmRi
ODMzNzNiYmY0YzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Jl
bW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVt
b3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBj
bGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29tbWFuZExpc3Rl
bmVyTWFjPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0
ZW5lck1hYz4oY2xpZW50KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM6OnVw
ZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCBhODMxNzUxMjJlYzJlNGI2YjZkZTUxYmU2ZGY1
MjY0YjQxYTFmOGM0Li42ODYwZTMzYzNhM2IyMTU2MzA1ZmIzMWFmNDI3ZGM0OTAyMzU4N2FkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
CkBAIC02OTcsNyArNjk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9w
dHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFu
aW1hdG9yTWFjPihzY3JvbGxhYmxlQXJlYSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xs
QW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JNYWM6OlNj
cm9sbEFuaW1hdG9yTWFjKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAppbmRleCAxYjlkYzUzNDViODgxZWIzNmQ5
NmZjZTM1ODJkZjBlNTRhMTM4NWJhLi5lMjQ0NWJjODIzZjg2ZTA1NWIwZTU3ODc3ZDZjZjUzMWE0
ZmZjYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCkBAIC03
Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+
IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3JlYXRlCiAgICAgaWYgKCF3cml0ZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92
ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJZCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4od3JpdGVyLnJlbGVhc2VOb25OdWxs
KCksIFdURk1vdmUoYXVkaW9UcmFja0lkKSwgV1RGTW92ZSh2aWRlb1RyYWNrSWQpKTsKIH0KIAog
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwo
UmVmPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiYmIHdyaXRlciwgU3RyaW5nJiYgYXVkaW9U
cmFja0lkLCBTdHJpbmcmJiB2aWRlb1RyYWNrSWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUFWRkltcGwuaAppbmRleCBkNGFkYjE1MmJkNGJhZWY3ZWY3YmYwNTVmNmQ5YTgzZDg2N2U2N2Vi
Li5hMjJmNTcxYmM1MTYxMWY2MTc0NDkxMDRjZjVmYzg2MGU1MmU5YWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
QVZGSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogCiBjbGFzcyBNZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwgZmluYWwgOiBwdWJsaWMgTWVkaWFSZWNvcmRlclByaXZhdGUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJl
YW1Qcml2YXRlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2Fw
dHVyZVNvdXJjZS5jcHAKaW5kZXggZGI5NGZkYWY4M2E4YWJkNjdhZmNmZDZlYTM2OWZhYTg5YzQ2
YzNlMi4uNTlhYjM4NDBmZDczNmNhMTQ1MDE2YzdmNjYwZWNhM2IwOTAzMjQ4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTkx
LDE0ICs5MSwxNCBAQCBBdWRpb0NhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVT
b3VyY2U6OmZhY3RvcnkoKQogCiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1l
ckF1ZGlvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlIGRldmljZSwgU3RyaW5n
JiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgU3RyaW5n
IHsgZGV2aWNlLmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVy
KHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oZGV2aWNlKSkKKyAgICAs
IG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPihkZXZpY2UpKQog
ewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQogCiBHU3RyZWFtZXJBdWRpb0Nh
cHR1cmVTb3VyY2U6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJ
RCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZU1lZGlh
U291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBXVEZNb3ZlKGRldmljZUlE
KSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0
ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkKKyAgICAsIG1fY2FwdHVy
ZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPigpKQogewogICAgIGluaXRpYWxp
emVHU3RyZWFtZXJEZWJ1ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5o
CmluZGV4IDk1M2YzYThhMGU0ZjZhMDYyYjliOTRhOGY0MTUxYTQ5ZjFhNDMwMWQuLjM0MTU0OTI1
MWVkNTcxYjc1ZWY1ZDBjMmRlZGYxZTc3Yjc1MjM3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyQXVkaW9EYXRhLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVk
aW8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR1N0cmVhbWVyQXVkaW9EYXRhIDog
cHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKK2NsYXNzIEdTdHJlYW1lckF1ZGlvRGF0YSBmaW5h
bCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyQXVk
aW9EYXRhKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSwgR3N0QXVkaW9JbmZvIGluZm8pCiAg
ICAgICAgIDogbV9zYW1wbGUoV1RGTW92ZShzYW1wbGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
Q2FwdHVyZXIuaAppbmRleCBiYmU1YWU3Mzk1NGFlNTNjYzIxNjU3OTNlYzA5NmE4ODc5MmFkNGYy
Li5mOTJhNmE5YjEyNjExMDBmMTkzNDVmNGVjYTIxOTRiZmUxYjhhM2FmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2Fw
dHVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBHU3RyZWFtZXJDYXB0dXJlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyQ2FwdHVyZXIoR1N0cmVhbWVyQ2FwdHVyZURl
dmljZSwgR1JlZlB0cjxHc3RDYXBzPik7CiAgICAgR1N0cmVhbWVyQ2FwdHVyZXIoY29uc3QgY2hh
ciogc291cmNlRmFjdG9yeSwgR1JlZlB0cjxHc3RDYXBzPik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJl
YW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAppbmRleCA3ZjM5MmJmNjg0MjNhOWY1
ZDA3MTZhYzllZjZhYzVjNjRjODY5YmUwLi4wODNkNDQ3MjgzOWY5YmJjM2Y2OTQ2NmQxMWYzODQ5
MTM2NjdjNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVh
bVNvdXJjZS5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBHc3RTdHJlYW0qIHdlYmtpdE1lZGlhU3Ry
ZWFtTmV3KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB0cmFjaykKIAogY2xhc3MgV2ViS2l0TWVk
aWFTdHJlYW1UcmFja09ic2VydmVyCiAgICAgOiBwdWJsaWMgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5XZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIoKSB7IH07CiAgICAgV2Vi
S2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyKFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzcmMpCkBA
IC0xNDMsNiArMTQ0LDcgQEAgY2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyCiAK
IGNsYXNzIFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXIKICAgICA6IHB1YmxpYyBNZWRpYVN0cmVh
bVByaXZhdGU6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5XZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyKCkgeyB9OwogICAgIFdl
YktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXIoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNyYykKQEAgLTQz
Myw4ICs0MzUsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFfc3RyZWFtX3NyY19jbGFzc19p
bml0KFdlYktpdE1lZGlhU3RyZWFtU3JjQ2xhc3MqIGtsYXNzKQogCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfbWVkaWFfc3RyZWFtX3NyY19pbml0KFdlYktpdE1lZGlhU3RyZWFtU3JjKiBzZWxmKQogewot
ICAgIHNlbGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyPihzZWxmKTsKLSAgICBzZWxmLT5tZWRpYVN0cmVh
bU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyPihz
ZWxmKTsKKyAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdl
YktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4oc2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJl
YW1PYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1PYnNlcnZlcj4oc2VsZik7
CiAgICAgc2VsZi0+Zmxvd0NvbWJpbmVyID0gZ3N0X2Zsb3dfY29tYmluZXJfbmV3KCk7CiAgICAg
c2VsZi0+dmlkZW9TcmMucmVzZXQodHJ1ZSk7CiAgICAgc2VsZi0+YXVkaW9TcmMucmVzZXQoZmFs
c2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNl
LmNwcAppbmRleCBlNWQ5YjBlMDI3NmVkZGE1ZGJkNTIwYmMxMGYzNTE4MGQwMTVkNjliLi45N2Jl
MWYxMmZiYjIyZGMzNThjOTljODM5Zjk4MWYxNjU2YThlMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtMTI3LDE0ICsxMjcs
MTQgQEAgRGlzcGxheUNhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6
OmRpc3BsYXlGYWN0b3J5KCkKIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlOjpHU3RyZWFt
ZXJWaWRlb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUsIFN0
cmluZyYmIGhhc2hTYWx0LCBjb25zdCBnY2hhciAqc291cmNlX2ZhY3RvcnkpCiAgICAgOiBSZWFs
dGltZVZpZGVvQ2FwdHVyZVNvdXJjZShXVEZNb3ZlKGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwg
V1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0
cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQorICAgICwgbV9jYXB0dXJlciht
YWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKIHsKICAg
ICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyVmlkZW9DYXB0dXJl
U291cmNlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UoR1N0cmVhbWVyQ2FwdHVyZURldmlj
ZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVT
b3VyY2UoU3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5s
YWJlbCgpIH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2Vf
dW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVy
KG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0
aWFsaXplR1N0cmVhbWVyRGVidWcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVh
bWVyVmlkZW9EZWNvZGVyRmFjdG9yeS5oCmluZGV4IGU0ZDUwOGUzMTc5YWM0N2JmMWQxMGY0ZjI4
N2M1NDdiYzI1NjAwMmEuLmVmZGEyOWJlMzk3MThiYmE3OTEzNDE4Y2M3M2ViOWFkMzY4NGY4YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRGVjb2RlckZhY3Rvcnku
aApAQCAtMzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFt
ZXJWaWRlb0RlY29kZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9y
eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVy
VmlkZW9EZWNvZGVyRmFjdG9yeSgpOwogICAgIHN0YXRpYyBib29sIG5ld1NvdXJjZShTdHJpbmcg
dHJhY2tJZCwgR3N0RWxlbWVudCAqc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9H
U3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA2OTk1YzYwMmNiMTc0NDdmYTc0
MWQzOWQ0NDk0YzM1NjFkYzFiYjgyLi44MzU4MWU4NWEzOTYyZDk3ZTAxNzQzYjEwZTU2Y2VhYTE1
MWNlZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rl
ckZhY3RvcnkuY3BwCkBAIC02MCw2ICs2MCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRf
d2VicnRjZW5jX2RlYnVnKTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVy
VmlkZW9FbmNvZGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRlb0VuY29kZXIoY29u
c3Qgd2VicnRjOjpTZHBWaWRlb0Zvcm1hdCYpCiAgICAgICAgIDogbV9maXJzdEZyYW1lUHRzKEdT
VF9DTE9DS19USU1FX05PTkUpCkBAIC01MTIsMTQgKzUxMywxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
d2VicnRjOjpWaWRlb0VuY29kZXI+IEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk6OkNyZWF0
ZVZpZGVvRQogICAgICAgICBnX29iamVjdF9nZXQod2VicnRjZW5jb2Rlci5nZXQoKSwgImVuY29k
ZXIiLCAmZW5jb2Rlci5vdXRQdHIoKSwgTlVMTCk7CiAKICAgICAgICAgaWYgKGVuY29kZXIpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihm
b3JtYXQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rl
cj4oZm9ybWF0KTsKIAogICAgICAgICBHU1RfSU5GTygiVXNpbmcgVlA4IEVuY29kZXIgZnJvbSBM
aWJXZWJSVEMuIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHdlYnJ0Yzo6TGli
dnB4VnA4RW5jb2Rlcj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPHdlYnJ0Yzo6TGlidnB4VnA4RW5jb2Rlcj4oKTsKICAgICB9CiAKICAgICBpZiAo
Zm9ybWF0Lm5hbWUgPT0gY3JpY2tldDo6a0gyNjRDb2RlY05hbWUpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckgyNjRFbmNvZGVyPihmb3JtYXQpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0Vu
Y29kZXJGYWN0b3J5LmgKaW5kZXggNzk2YTIwZjk0NWUzYTk1MTk4ZWNlMTBmZTcwZDliNTJmNzIz
M2QxMS4uMTQ4M2EyYjIwYjM1MTVjNzFiN2EwYzdhNTIyNjI2ZTlmZjUzOTIwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1l
clZpZGVvRW5jb2RlckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oCkBAIC0yOCw2
ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3RvcnkgZmluYWwgOiBwdWJsaWMgd2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZT
ZW5kZXJCYWNrZW5kLmgKaW5kZXggZGM2ZjhmM2ZiMDU3ZmI1NDBkOTBjMDAyMjY4YTk5Nzc0NDEw
Mjc3Zi4uNGEwNjFmY2M5NTNiMTNkNTgzYmFlNTU0NTE1NWJjZTA4ZGY4ZjlkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RUTUZTZW5kZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmgKQEAgLTQwLDYgKzQw
LDcgQEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfRU5ECiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ0RUTUZT
ZW5kZXJCYWNrZW5kLCBwcml2YXRlIHdlYnJ0Yzo6RHRtZlNlbmRlck9ic2VydmVySW50ZXJmYWNl
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMaWJXZWJS
VENEVE1GU2VuZGVyQmFja2VuZChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEdG1mU2VuZGVy
SW50ZXJmYWNlPiYmKTsKICAgICB+TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmluZGV4IDIwN2FiNzhhOWEyYmJlNDBhMGVk
NGRhNjk1NjlhZWRiMTIyOTllMjAuLjc0NTMzYzVmYTRkZjBkNGU1YTY0ZDc1Y2U2MjdiMzI0MmM0
NmI4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcApAQCAtNzksOSAr
NzksMTAgQEAgc3RhdGljIGlubGluZSBydGM6OlNvY2tldEFkZHJlc3MgcHJlcGFyZVNvY2tldEFk
ZHJlc3MoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJgogfQogCiBjbGFzcyBCYXNpY1BhY2tldFNv
Y2tldEZhY3RvcnkgOiBwdWJsaWMgcnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEJhc2ljUGFj
a2V0U29ja2V0RmFjdG9yeShydGM6OlRocmVhZCYgbmV0d29ya1RocmVhZCkKLSAgICAgICAgOiBt
X3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9y
eT4oJm5ldHdvcmtUaHJlYWQpKQorICAgICAgICA6IG1fc29ja2V0RmFjdG9yeShtYWtlVW5pcXVl
UmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4o
Jm5ldHdvcmtUaHJlYWQpKQogICAgIHsKICAgICB9CiAKQEAgLTE3OSw3ICsxODAsNyBAQCBzdGF0
aWMgdm9pZCBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyhQZWVyQ29u
bmVjdGlvbkZhY3RvcnlBbmRUaAogICAgIHJlc3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25h
bGluZ1RocmVhZC0+U3RhcnQoKTsKICAgICBBU1NFUlQocmVzdWx0KTsKIAotICAgIGZhY3RvcnlB
bmRUaHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENB
dWRpb01vZHVsZT4oKTsKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9
IG1ha2VVbmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
UGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMo
KQpAQCAtMjg4LDEwICsyODksMTAgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKICAgICBhdXRv
JiBmYWN0b3J5QW5kVGhyZWFkcyA9IGdldFN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKG1fdXNlTmV0
d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFk
cy5uZXR3b3JrTWFuYWdlcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFn
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAg
ICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CiAKICAgICBpZiAoIWZh
Y3RvcnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkpCi0gICAgICAgIGZhY3RvcnlBbmRU
aHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljUGFja2V0
U29ja2V0RmFjdG9yeT4oKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQpOworICAgICAg
ICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gbWFrZVVuaXF1ZTxCYXNp
Y1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsK
ICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LT5zZXREaXNhYmxlTm9u
TG9jYWxob3N0Q29ubmVjdGlvbnMobV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpOwog
CiAgICAgcmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCAqZmFjdG9yeUFuZFRo
cmVhZHMubmV0d29ya01hbmFnZXIsICpmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0
b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBudWxscHRyKTsKQEAgLTMxNCw3ICszMTUsNyBA
QCBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGli
V2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6
OkJhc2ljUG9ydEFsbG9jYXRvcj4gcG9ydEFsbG9jYXRvcjsKICAgICBmYWN0b3J5QW5kVGhyZWFk
cy5zaWduYWxpbmdUaHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0oKSB7Ci0g
ICAgICAgIGF1dG8gYmFzaWNQb3J0QWxsb2NhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxjcmlja2V0
OjpCYXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3Rv
cnkpOworICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4oJm5ldHdvcmtNYW5h
Z2VyLCAmcGFja2V0U29ja2V0RmFjdG9yeSk7CiAgICAgICAgIGlmICghbV9lbmFibGVFbnVtZXJh
dGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKQogICAgICAgICAgICAgYmFzaWNQb3J0QWxsb2NhdG9y
LT5zZXRfZmxhZ3MoYmFzaWNQb3J0QWxsb2NhdG9yLT5mbGFncygpIHwgY3JpY2tldDo6UE9SVEFM
TE9DQVRPUl9ESVNBQkxFX0FEQVBURVJfRU5VTUVSQVRJT04pOwogICAgICAgICBwb3J0QWxsb2Nh
dG9yID0gV1RGTW92ZShiYXNpY1BvcnRBbGxvY2F0b3IpOwpAQCAtMzM1LDcgKzMzNiw3IEBAIHJ0
Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImIExpYldlYlJUQ1Byb3ZpZGVyOjpjZXJ0aWZpY2F0
ZUdlbmVyYXRvcigpCiB7CiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNG
YWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKICAg
ICBpZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yKQotICAgICAgICBm
YWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8
cnRjOjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5n
VGhyZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKKyAg
ICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yPihmYWN0
b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5l
dHdvcmtUaHJlYWQuZ2V0KCkpOwogCiAgICAgcmV0dXJuICpmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0
aWZpY2F0ZUdlbmVyYXRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5k
ZXggYmRmMDkwMDQwYzkwNjU3ZjQ5ZjBjZTRhZTI4MDc3MzhhMWU4YmU3OS4uN2FhOGRlMmViM2E0
YzU1NWUwOWE2MGQ3ZDdjM2FkODMxOWIxMThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmgKQEAgLTY0LDYgKzY0LDcgQEAgc3RydWN0IFJUQ1J0cENhcGFiaWxpdGllczsKIGVu
dW0gY2xhc3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBsZW1lbnRlZCwgQmFkUGFyYW1ldGVy
LCBETlNTRCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGli
V2ViUlRDUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGNyZWF0ZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAppbmRleCA3NzJhMzk1ZjBjYmI0
M2U3MzA3NTBjY2I5NjM2MTYxY2FhMzQxYzYzLi5kM2MzODM5NWMwNzdmMzQ2MDRiNWJiMGY0YjQz
YWUxMTAwY2RmMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29h
LmgKQEAgLTM3LDcgKzM3LDYgQEAgY2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeTsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXJDb2Nv
YSA6IHB1YmxpYyBMaWJXZWJSVENQcm92aWRlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgTGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpID0gZGVmYXVsdDsKICAg
ICB+TGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAKaW5kZXggMTVlMmE4Nzg5YzA3ZmIwZDBhZWM2ZjZj
MjBmN2JiMTdmYThkYjdkMi4uNWI4MjczYjA4NTE5NmZmZDMwZTRkN2E3ZjY1NTEwYmVjMDgwMzE2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIu
Y3BwCkBAIC00NCwxMiArNDQsMTIgQEAgYm9vbCBMaWJXZWJSVENQcm92aWRlcjo6d2ViUlRDQXZh
aWxhYmxlKCkKIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeT4g
TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KCkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5Pigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRGVjb2RlckZhY3Rvcnk+KCk7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3Rvcnk+IExpYldl
YlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5PigpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCmluZGV4IDgyY2JjYjFjNjZkMzJlYTE4Y2RlYjE2Nzkz
OGQ2OGQzYjEyZTQxOWEuLmY3ZDg1ZGM2MGE2MWE4MTQ2ZGJhMGQwM2U1NWQ3NTc2MmZlOTBmODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2Eu
Y3BwCkBAIC0xODgsOCArMTg4LDggQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFt
Q29jb2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHMKICAgICAgICAg
aWYgKCFyZW1vdGVJT1VuaXQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9pbnB1
dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+
KGlucHV0RGVzY3JpcHRpb24pOwotICAgICAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9uKTsK
KyAgICAgICAgbV9pbnB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24+KGlucHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX291dHB1dERlc2NyaXB0aW9u
ID0gbWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KG91dHB1dERlc2NyaXB0aW9u
KTsKIAogICAgICAgICBtX2RhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0
ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAyLCBzdHJlYW1UcmFjaygpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGU4ZTNkMzQ4NmRhNDNhYWMx
ZGQ1NGI3OGU2YjRkZjRkYzk4MTY3OTAuLjYxMWFjMTZiOWVjYjg2ODk4YTM3MjY0NzFjNzYyMDcx
MmZiOWIzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KQEAg
LTEzNCw3ICsxMzQsNyBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZWNvbmZp
Z3VyZSgpCiAgICAgY29uc3QgYm9vbCBpc05vbkludGVybGVhdmVkID0gdHJ1ZTsKICAgICBGaWxs
T3V0QVNCREZvckxQQ00obV9zdHJlYW1Gb3JtYXQsIHNhbXBsZVJhdGUoKSwgY2hhbm5lbENvdW50
LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9h
dCwgaXNGbG9hdCwgaXNCaWdFbmRpYW4sIGlzTm9uSW50ZXJsZWF2ZWQpOwogCi0gICAgbV9hdWRp
b0J1ZmZlckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4obV9zdHJl
YW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lICogbV9tYXhpbWl1bUZyYW1l
Q291bnQpOworICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJBdWRpb0J1ZmZl
ckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1f
bWF4aW1pdW1GcmFtZUNvdW50KTsKIAogICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0
RGVzY3JpcHRpb247CiAgICAgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKE5VTEwsICZt
X3N0cmVhbUZvcm1hdCwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdERlc2NyaXB0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpp
bmRleCBmOWRjNGE4NDdmNGEzNTVkOWNjZmY0Y2RlMDMwOGQwZDVjNWM0NDU2Li4zODhkNzFlMjRi
MjVlYmY2ZDc3ODgxNGZkZDBhOTY2M2IxNzA1NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCkBAIC00Niw3ICs0Niw3IEBAIFJldGFpblB0
cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29u
dmVydFRvWVVWKENWUGl4CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFtX3Bp
eGVsQnVmZmVyQ29uZm9ybWVyKQotICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9u
YXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3JtYXRU
eXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7CisgICAgICAgIG1fcGl4
ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxC
dWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgpKSB9
KTsKIAogICAgIHJldHVybiBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyLT5jb252ZXJ0KHBpeGVsQnVm
ZmVyKTsKIH0KQEAgLTc1LDcgKzc1LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcigKICAgICAg
ICAgSW50U2l6ZSBzaXplID0geyAoaW50KUNWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZl
cikgLCAoaW50KUNWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpIH07CiAgICAgICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS5yb3RhdGUocm90
YXRpb25Ub0FuZ2xlKHJvdGF0aW9uKSk7Ci0gICAgICAgIG1fcm90YXRpb25TZXNzaW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZNb3ZlKHRyYW5zZm9ybSks
IHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4ZWxCdWZmZXIpLCBJbWFn
ZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpObyk7CisgICAgICAgIG1f
cm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihXVEZN
b3ZlKHRyYW5zZm9ybSksIHNpemUsIENWUGl4ZWxCdWZmZXJHZXRQaXhlbEZvcm1hdFR5cGUocGl4
ZWxCdWZmZXIpLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpO
byk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fcm90YXRpb25TZXNzaW9uLT5yb3RhdGUocGl4ZWxC
dWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCmluZGV4IDhlMjlkN2I4MWExNzNkZmE1Mzcw
NWZhMWU2MmM5ZTg4M2M0Zjk1MDIuLmQ0NzY5ZDY5ZTRhZjA0NzBkNjJjZTkwYjc1NDQwZTI4Mjc2
OWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2sgZmlu
YWwgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2spOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNb2NrKE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1v
Y2suaAppbmRleCAzYzZkZTFjNGViZTRlYzc0NzM1NDBhZWNjYjg5NzYyYjE5NTU1Y2Q0Li4xMzg4
YWQwNTEzMTA4YjJlYjkyZWMyYmJlMjg5MzM2NTJlOTlhMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaApA
QCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSVENEYXRhQ2hh
bm5lbEhhbmRsZXJNb2NrIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVi
bGljIFRpbWVyRXZlbnRCYXNlZE1vY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29uc3QgU3RyaW5nJiwgY29u
c3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCmluZGV4IDJmMWZiNTVlZTY3MWYyZjIyOGZjNTE1
MWQwZGQ2OWNmOGVjNjk1Y2IuLjJjN2M0MWJkNjk2ZmYxZjliYWIzODM4MWE0YjU4Mzg1NjhiMThh
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJz
TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNN
b2NrLmNwcApAQCAtOTgsNyArOTgsNyBAQCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpSZW1v
dGVEYXRhQ2hhbm5lbE5vdGlmaWVyKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaQogCiB2b2lk
IFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OmZpcmUoKQogewotICAgIG1fY2xpZW50LT5kaWRB
ZGRSZW1vdGVEYXRhQ2hhbm5lbChzdGQ6Om1ha2VfdW5pcXVlPFJUQ0RhdGFDaGFubmVsSGFuZGxl
ck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIiwgUlRDRGF0YUNoYW5uZWxJbml0KCkp
KTsKKyAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0YUNoYW5uZWwobWFrZVVuaXF1ZTxSVENE
YXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0Rh
dGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERhdGFDaGFubmVsU3RhdGVOb3RpZmllcjo6RGF0YUNo
YW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogY2xpZW50LCBS
VENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlLmNwcAppbmRleCA1NTk5MzM4MmIzYTFkYzM2ZDgzNTZiNjFiMjVjNzAwMmUwNzM0
N2ZlLi4zODdhMjFkYWY0NTUyMzk2OGFlZTRmNzk0MTlkM2Q4Yjg4NjkwZDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBNZWRpYVBsYXllciBFbmlnbmUgU3VwcG9ydAogdm9pZCBN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVnaXN0cmFyKFtdIChNZWRpYVBsYXllciog
cGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKKyAgICByZWdpc3RyYXIoW10gKE1l
ZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAogICAgICAgICBzdXBwb3J0
c1R5cGUsIDAsIDAsIDAsIDApOwogfQogCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZl
cmVkKCkgY29uc3QKICAgICBpZiAobV9tZWRpYVNvdXJjZVByaXZhdGUpCiAgICAgICAgIHJldHVy
biBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wgTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggY2M2N2NlNjg4
ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5ZTNjMjhmOC4uOTA1MTQzMTYyMWE4YzEwOGE2ZWYwZjUx
ZWI2MGY3NzRhZmNjMGExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMTU5LDkgKzE1OSw5IEBAIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291cmNlSGFuZGxlKEJsb2JEYXRhKiBibG9iRGF0YSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLCBtX2FzeW5jIHsgYXN5bmMgfQogewogICAgIGlmICht
X2FzeW5jKQotICAgICAgICBtX2FzeW5jU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0Zp
bGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgbV9hc3luY1N0cmVhbSA9IG1ha2VVbmlxdWU8QXN5
bmNGaWxlU3RyZWFtPigqdGhpcyk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmVhbSA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsZVN0cmVhbT4oKTsKKyAgICAgICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVl
PEZpbGVTdHJlYW0+KCk7CiB9CiAKIEJsb2JSZXNvdXJjZUhhbmRsZTo6fkJsb2JSZXNvdXJjZUhh
bmRsZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggODExMmI5NzNlZWY1NGVkN2E1YzdhNTE0Y2YxMDJh
Yzk5MWU3NjUzMy4uYjU0MWY2MmVlMDA1MjAzNjJjMTU1N2Y3Y2E0OTY0YTIzN2I4NzQ5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5j
cHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVjb2RpbmdSZXN1bHREaXNwYQogCiBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGNyZWF0ZURlY29kZVRhc2soY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYgc2NoZWR1bGVDb250ZXh0LCBEZWNvZGVDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPERlY29kZVRhc2s+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZVRhc2s+KAog
ICAgICAgICB1cmwuc3RyaW5nKCksCiAgICAgICAgIHNjaGVkdWxlQ29udGV4dCwKICAgICAgICAg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAppbmRleCBhOTg0M2Y1MGU1YTQzNDAzZDhm
NTJmMGE5NjdmOTAyNzg2NWU4ZDU2Li44ZGFlYzU0YTEzNDJkYWI1OWMzNWNjNDkyN2EwMGZlNjIy
OTQ5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlRXJyb3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUVycm9yQmFzZS5oCkBAIC0zNyw2ICszNyw3IEBAIFdFQkNPUkVfRVhQT1JUIGV4dGVybiBj
b25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldlYktpdEludGVybmFsOyAvLyBVc2VkIGZvciBl
CiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciogY29uc3QgZXJyb3JEb21haW5XZWJL
aXRTZXJ2aWNlV29ya2VyOyAvLyBVc2VkIGZvciBlcnJvcnMgdGhhdCBoYXBwZW4gd2hlbiBsb2Fk
aW5nIGEgcmVzb3VyY2UgZnJvbSBhIHNlcnZpY2Ugd29ya2VyLgogCiBjbGFzcyBSZXNvdXJjZUVy
cm9yQmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRl
eCAzMGMyN2Y1NzZhMTc3ZTZiNmFiMTk0NzQwYTdkOTAyNWI2NTlmY2FkLi42YTMxZTNlNTI3Zjhl
YzkyZDZmNjJiOTZjZGQ4MTk0NDE0YjU1YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpyZWdpc3RlckJ1aWx0aW5TeW5jaHJvbm91c0xvYWRlcihjb25zdCBB
dG9tU3RyaW5nJiBwcm90b2NvbAogfQogCiBSZXNvdXJjZUhhbmRsZTo6UmVzb3VyY2VIYW5kbGUo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCwgYm9vbCBkZWZlcnNMb2FkaW5nLCBib29s
IHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZikKLSAg
ICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUhhbmRsZUludGVybmFsPih0aGlzLCBjb250
ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZiAm
JiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSksIHNob3VsZENvbnRlbnRFbmNv
ZGluZ1NuaWZmKSkKKyAgICA6IGQobWFrZVVuaXF1ZTxSZXNvdXJjZUhhbmRsZUludGVybmFsPih0
aGlzLCBjb250ZXh0LCByZXF1ZXN0LCBjbGllbnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRl
bnRTbmlmZiAmJiBzaG91bGRDb250ZW50U25pZmZVUkwocmVxdWVzdC51cmwoKSksIHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmKSkKIHsKICAgICBpZiAoIXJlcXVlc3QudXJsKCkuaXNWYWxpZCgp
KSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVyZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBkYWQ5MDEwZjk1NzBlYmM1Njc2MzM1NDNm
ZDFmYzUwMmY4NDY5Yjk5Li43MTNiNGRmYjMwYjJhZmRmYmVhZmY0ZWU1MzcwYTI1NDZmYWQzYTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTE2OSw3ICsxNjksNyBA
QCBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVl
dWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5h
cHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAg
ZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2Vt
YXBob3JlLndhaXQoKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25z
ZQogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1
ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdv
cmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlv
bjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBob3JlLndhaXQoKTsKQEAgLTIyNiw3
ICsyMjYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgIH07CiAgICAgCiAgICAgaWYg
KG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmsp
KTsKIH0KQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIH07
CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkp
OworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZhaWwoQ0ZF
cnJvclJlZgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVz
c2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZN
b3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzExLDcgKzMxMSw3IEBAIENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUp
Ci0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlv
bjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBl
bmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxz
ZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2VtYXBo
b3JlLndhaXQoKTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZwog
ICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVl
LT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmsp
KSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2
b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2VuZEJv
ZHlEYXRhKENGCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9t
ZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdU
Rk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVl
PEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0zODAsNyArMzgwLDcgQEAgQm9v
bGVhbiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlOjpjYW5SZXNwb25kVG9Qcm8KICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1
ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFw
cGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBl
bHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1h
cGhvcmUud2FpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGM5YjUzZTMxMmFkODU1
NzZkMzY2ZWY0ZGM1Mzc0MzkxZmU4YzY5MGMuLmJhNTVmMDA0OGI4ZTRkZGM1YjA3MzRkOTkzZGM5
YjEzYjhjYjJiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTUyMyw3ICs1MjMsNyBA
QCAtICh2b2lkKV9yZXN0YXJ0CiAKICAgICBfcmVzb3VyY2UgPSBzZWxmLnNlc3Npb24ubG9hZGVy
LnJlcXVlc3RSZXNvdXJjZShzZWxmLm9yaWdpbmFsUmVxdWVzdCwgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyOjpMb2FkT3B0aW9uOjpEaXNhbGxvd0NhY2hpbmcpOwogICAgIGlmIChfcmVzb3Vy
Y2UpCi0gICAgICAgIF9yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9yZXNvdXJjZS0+
c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Pihz
ZWxmKSk7CiB9CiAKIC0gKHZvaWQpX2NhbmNlbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggYTQ1YTVmNGU0YTAyOGZl
NmU3ZjJkZmI3NWVjMmM4YWVjOTNlZDJiYi4uMTAxNjI0ZjI5MDBhOTRjYzdkMWE4OTk4OTY3NmQ2
YjQ1YWI3ZmEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgT3B0aW9uYWw8VmVjdG9y
PENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QKICAgICAgICAgIkFORCAoKGRvbWFpbiA9ID8pIE9SIChkb21haW4gR0xPQiA/KSkg
IlwKICAgICAgICAgIk9SREVSIEJZIGxlbmd0aChwYXRoKSBERVNDLCBsYXN0dXBkYXRlZCI7CiAK
LSAgICBhdXRvIHBzdG10ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0
YWJhc2UsIHNxbCk7CisgICAgYXV0byBwc3RtdCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50
PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGlmICghcHN0bXQpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKQEAgLTU2Niw3ICs1NjYsNyBAQCBib29sIENvb2tpZUphckRCOjpkZWxldGVB
bGxDb29raWVzKCkKIAogdm9pZCBDb29raWVKYXJEQjo6Y3JlYXRlUHJlcGFyZVN0YXRlbWVudChj
b25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8gc3RhdGVtZW50
ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaW50
IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwogICAgIEFTU0VSVChyZXQgPT0gU1FMSVRFX09L
KTsKICAgICBtX3N0YXRlbWVudHMuYWRkKHNxbCwgV1RGTW92ZShzdGF0ZW1lbnQpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKaW5k
ZXggMGMwM2U5ZDY5MmM3ZjZkYzYxMzA4NmZmMjU1YzIwZTVjNmJiZTllOS4uMjY4N2FlNzRmYjlk
OTk0Mjk3MmJlZGNhYzZhYjliMTE1OWE3ZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKQEAgLTQxLDYgKzQxLDcgQEAgZW51
bSBjbGFzcyBDb29raWVBY2NlcHRQb2xpY3kgewogfTsKIAogY2xhc3MgQ29va2llSmFyREIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENv
b2tpZUphckRCKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaAppbmRleCAxMTAyN2NlM2IzY2Y2Mzg4Zjk5
NTRhYWY0OWM0OTAzZmU5M2ZkZmY1Li44Y2UxMTQzODQ4ZmIyMzE4YmExOTkwZWFkMThlMTVmMzdk
ODQzNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDdXJsQ2FjaGVFbnRyeSB7Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3Vy
Y2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyaW5nJiBjYWNoZURpcik7CiAgICAgfkN1cmxDYWNoZUVu
dHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXggZmE1YzhkMmQyMWI2MjczODE1ZDAyM2E0ZjIw
NDU1MDE2ZTk2MzhhZi4uZTJiNGI1ZGZiZGE2MmEzYzBjYjZiZjkxODFiYmQ2OGZkN2E0YTA4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgQ3VybENhY2hlTWFu
YWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgLS1lbmQ7IC8vIExhc3QgbGluZSBpcyBlbXB0eQog
ICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IGl0LT5zdHJpcFdo
aXRlU3BhY2UoKTsKLSAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxD
dXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKKyAgICAgICAgYXV0byBj
YWNoZUVudHJ5ID0gbWFrZVVuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2Nh
Y2hlRGlyKTsKIAogICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVu
dHJ5LT5lbnRyeVNpemUoKSA8IG1fc3RvcmFnZVNpemVMaW1pdCkgewogICAgICAgICAgICAgbV9j
dXJyZW50U3RvcmFnZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CkBAIC0yMTMsNyAr
MjEzLDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VIYW5kbGUmIGpvYiwgUmVzb3VyY2VSZXNwb25zZSYKIAogICAgICAgICBpbnZhbGlkYXRlQ2Fj
aGVFbnRyeSh1cmwpOyAvLyBJbnZhbGlkYXRlIGV4aXN0aW5nIGVudHJ5IG9uIDIwMAogCi0gICAg
ICAgIGF1dG8gY2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVy
bCwgJmpvYiwgbV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlx
dWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CiAgICAgICAgIGJvb2wg
Y2FjaGVhYmxlID0gY2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOwog
ICAgICAgICBpZiAoY2FjaGVhYmxlKSB7CiAgICAgICAgICAgICBjYWNoZUVudHJ5LT5zZXRJc0xv
YWRpbmcodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3ZDE3MjE3YzJlNDQyYWM2ZjNkZThjNGI2MGE5NTI2
YzlmNjU4NDJhLi43YjA0ZmEyNmE0MmFiOTc4YWUwN2JkMzFmMGU2OTE1NTFiYmM0NjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4
dC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBDdXJsQ29udGV4dDo6Q3VybENvbnRleHQoKQogICAg
IGlmIChhdXRvIHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+KCJXRUJLSVRfQ1VSTF9NQVhf
SE9TVF9DT05ORUNUSU9OUyIpKQogICAgICAgICBtYXhIb3N0Q29ubmVjdGlvbnMgPSAqdmFsdWU7
CiAKLSAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVs
ZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMp
OworICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxDdXJsUmVxdWVzdFNjaGVkdWxlcj4obWF4
Q29ubmVjdHMsIG1heFRvdGFsQ29ubmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9ucyk7CiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgbV92ZXJib3NlID0gZW52VmFyLmRlZmluZWQoIkRFQlVHX0NVUkwi
KTsKQEAgLTMzNiw3ICszMzYsNyBAQCBDVVJMY29kZSBDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xD
dHgodm9pZCogc3NsQ3R4KQogICAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFD
SzsKIAogICAgIGlmICghbV9zc2xWZXJpZmllcikKLSAgICAgICAgbV9zc2xWZXJpZmllciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOworICAgICAgICBtX3NzbFZl
cmlmaWVyID0gbWFrZVVuaXF1ZTxDdXJsU1NMVmVyaWZpZXI+KHNzbEN0eCk7CiAKICAgICByZXR1
cm4gQ1VSTEVfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5oCmluZGV4IDdkMDYwNjhjZDlkMWFlYmVlNDJkMzg1OTRhYmQwOTRi
OTAxMTQ0NDQuLmE0ZjhjMDI4Mjc2N2IwYjQ4NzcwYTA0OGVlODUyZjE2NmUwN2E3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5o
CkBAIC0xNDcsNiArMTQ3LDcgQEAgY2xhc3MgQ3VybENvbnRleHQgOiBwdWJsaWMgQ3VybEdsb2Jh
bCB7CiAvLyBDdXJsTXVsdGlIYW5kbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogY2xhc3MgQ3VybE11bHRpSGFuZGxlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsTXVsdGlIYW5kbGUpOwog
CiBwdWJsaWM6CkBAIC0yMDIsNiArMjAzLDcgQEAgY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNz
IE5ldHdvcmtMb2FkTWV0cmljczsKIAogY2xhc3MgQ3VybEhhbmRsZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybEhhbmRsZSk7CiAK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKaW5kZXggOWZjNjZlYzAyMGUyOTk2ZDM4ZDA2
MGFkNzhkMzZmMTE0YWU0ODFjNi4uNzg1ZDZjYjhlNmRjOGZhZmU4ZTgxMGRmYmZkZjRjZTc2MmY0
YjM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxGb3JtRGF0YVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgY29uc3QgVmVj
dG9yPGNoYXI+KiBDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW1fcG9zdERhdGEpCi0gICAgICAgIG1fcG9zdERhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+ZmxhdHRlbigpKTsK
KyAgICAgICAgbV9wb3N0RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPGNoYXI+PihtX2Zvcm1EYXRh
LT5mbGF0dGVuKCkpOwogCiAgICAgcmV0dXJuIG1fcG9zdERhdGEuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAKaW5kZXggYThiYjhkODFhN2FiZDcxNzQzYmQzOTVkY2M4NjYzMTc5ZmRl
MmQ1NS4uY2NkYmIyODIzOWYyMmMzNjM2Y2FjMTRiMDc4NWQ2ZjU1YWIyZjViYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3VybE11
bHRpcGFydEhhbmRsZT4gQ3VybE11bHRpcGFydEhhbmRsZTo6Y3JlYXRlSWZOZWVkZWQoQ3VybE11
bAogICAgIGlmICghYm91bmRhcnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAqYm91bmRh
cnkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwg
KmJvdW5kYXJ5KTsKIH0KIAogT3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpl
eHRyYWN0Qm91bmRhcnkoY29uc3QgQ3VybFJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5oCmluZGV4IDgwNGM3NDQ2YzQ1M2I2NzE1Zjg4NWU5YWZjMjczODg1OGUyNjg3MWEuLjcy
MGM2OTgwZWRkM2RhZTNlMTJjNjNmMDhiNjNjNmY4OTZlNTMzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3VybE11bHRp
cGFydEhhbmRsZT4gY3JlYXRlSWZOZWVkZWQoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNv
bnN0IEN1cmxSZXNwb25zZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAwNzAzNGJiNjJkN2JiZTY0MGQ0Zjgw
MWM0ZTE4NDIyM2RmMjQxM2RjLi5iMmEyMmRhMjJkNmMwMTU1NTA3NTk5NWY2YjgzMDg2ZmVhODFm
ZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjYWxs
Q2xpZW50KEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3QmLCBDdXJsUmVxdWVzdENsaWVudCYpPiYm
CiB2b2lkIEN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRh
c2spCiB7CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkp
OworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogICAgIGVsc2UgaWYgKGlzTWFpblRocmVhZCgpKQogICAg
ICAgICB0YXNrKCk7CiAgICAgZWxzZQpAQCAtMjA1LDcgKzIwNSw3IEBAIENVUkwqIEN1cmxSZXF1
ZXN0OjpzZXR1cFRyYW5zZmVyKCkKICAgICBhdXRvIGh0dHBIZWFkZXJGaWVsZHMgPSBtX3JlcXVl
c3QuaHR0cEhlYWRlckZpZWxkcygpOwogICAgIGFwcGVuZEFjY2VwdExhbmd1YWdlSGVhZGVyKGh0
dHBIZWFkZXJGaWVsZHMpOwogCi0gICAgbV9jdXJsSGFuZGxlID0gc3RkOjptYWtlX3VuaXF1ZTxD
dXJsSGFuZGxlPigpOworICAgIG1fY3VybEhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybEhhbmRsZT4o
KTsKIAogICAgIG1fY3VybEhhbmRsZS0+c2V0VXJsKG1fcmVxdWVzdC51cmwoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNj
aGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDkxODM3YWY5ZjNlNDc3M2I1YzcxYzFjMjYwZGI5NmY1
ODZiMjExYWYuLjNhYTVmNTJkYjYyN2FiYjBlY2NhZjI5MjEzZGNlMTJmYmM2ZmJjOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNj
aGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgQ3VybFJlcXVl
c3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CiAKLSAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybE11bHRp
SGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFuZGxlID0gbWFrZVVuaXF1ZTxDdXJsTXVsdGlI
YW5kbGU+KCk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heENvbm5lY3RzKG1fbWF4Q29u
bmVjdHMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhUb3RhbENvbm5lY3Rpb25zKG1f
bWF4VG90YWxDb25uZWN0aW9ucyk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1heEhvc3RD
b25uZWN0aW9ucyhtX21heEhvc3RDb25uZWN0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCmlu
ZGV4IGNhM2JiYTgxMzQ0MGJmZjZlODAzMTI2NDA5NzZjYzM4OGE3NDg2NGYuLjRiOTVjMGQxOWFk
OTA0MmQyYWM3MGVkNGIxMzNmOGQxZDBjNjMyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5oCkBA
IC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0U2No
ZWR1bGVyQ2xpZW50OwogCiBjbGFzcyBDdXJsUmVxdWVzdFNjaGVkdWxlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybFJlcXVlc3RT
Y2hlZHVsZXIpOwogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxDdXJsUmVxdWVzdFNjaGVkdWxl
cj47CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFNTTFZlcmlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFNTTFZlcmlmaWVyLmgKaW5kZXggNDUyZjcwNWY5Y2I4ZmUyOTE5Y2YyODU2ZGVl
OGQwYWQxYTgxNGYxYS4uM2I1OWNiMWY4NjM2NTQ4ODFkNDZlNjViYmU5NTU0ZTlmNjYzNDM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xW
ZXJpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
U1NMVmVyaWZpZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDdXJsU1NMVmVyaWZpZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxTU0xWZXJpZmllcik7CiBwdWJsaWM6CiAgICAgZW51
bSBjbGFzcyBTU0xDZXJ0aWZpY2F0ZUZsYWdzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXgg
NDdiMzc4M2U2NDYyOWE5MmVlOGRhNDBiZDQ3OTcwYzc5NmVhNTQ4Ni4uNzA3ZDBhNjYzYTcxODZk
YjEwNTA0ZGRjMjg2NmI3Njk3N2QzNGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTE2
Myw3ICsxNjMsNyBAQCBSZWY8Q3VybFJlcXVlc3Q+IFJlc291cmNlSGFuZGxlOjpjcmVhdGVDdXJs
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZQogQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUqIFJlc291cmNlSGFuZGxlOjpkZWxlZ2F0ZSgpCiB7CiAgICAgaWYgKCFkLT5tX2Rl
bGVnYXRlKQotICAgICAgICBkLT5tX2RlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOworICAgICAgICBkLT5tX2RlbGVnYXRlID0gbWFr
ZVVuaXF1ZTxDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZT4oKnRoaXMpOwogCiAgICAgcmV0dXJu
IGQtPm1fZGVsZWdhdGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJs
LmNwcAppbmRleCBhMzY3ZmRhNjJhNmQyMTJhNDk1NWU2ODg5YzY1NzIwYzllZmFmMjFiLi4xM2E4
MzJjMjY2OWI0Y2U4Y2JlYmYzMTM0YmEwODlkOTAyZGZhOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OnN0b3BUaHJlYWQoKQogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpj
YWxsT25Xb3JrZXJUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7CisgICAgbV90YXNrUXVldWUuYXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmV4ZWN1dGVUYXNrcygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKaW5k
ZXggNWEwNmYyZWY4OWVmNWMyMWJlMTU3YzcxZGExNDE5ZWM4NDgwOWVmNy4uNzY1NDNhZDE2YzE0
OTQ4NTg4MjI5OTFmMzA1ZmY3YTMzZTE3YWU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzYsNiArMzYs
NyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBj
bGFzcyBQcmV2aWV3Q29udmVydGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmV2aWV3Q29udmVydGVyKTsKIHB1YmxpYzoKICAgICBQ
cmV2aWV3Q29udmVydGVyKGlkIGRlbGVnYXRlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgU3RyaW5nJiBwYXNzd29yZCA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KaW5kZXggZGUwYjdlMWYx
ODdiNTA3NjVhOWQxN2MyZWM0ZWM4MDMzZDgzZjM0MS4uZjEwZWI2MjVlYTA4MTMwMjkyNzgwN2Nl
YzFlMmZmNmU3M2YyNGMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpAQCAtNjEsNyArNjEsNyBAQCAtICh2
b2lkKWNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDooRnVuY3Rpb248dm9pZCgpPiYmKWZ1bmN0aW9u
CiB7CiAgICAgLy8gU3luYyB4aHIgdXNlcyB0aGUgbWVzc2FnZSBxdWV1ZS4KICAgICBpZiAobV9t
ZXNzYWdlUXVldWUpCi0gICAgICAgIHJldHVybiBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICAg
ICAgcmV0dXJuIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogCiAgICAgLy8gVGhpcyBpcyB0aGUgY29tbW9uIGNh
c2UuCiAgICAgaWYgKCFzY2hlZHVsZWRXaXRoQ3VzdG9tUnVuTG9vcE1vZGUobV9zY2hlZHVsZWRQ
YWlycykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
RE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKaW5kZXggNGJiMzBhODcxZGU1NzAzOWI3Yjcx
OTM0ZmVjMzc2M2E1YTRhODJkOS4uZDRiYTRlOTUwNDE1YmI0MDZiYWJjMDFiNmQyMGM2NmQ0Zjg0
YjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0RO
U1Jlc29sdmVRdWV1ZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQg
RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBECiAKICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVChhZGRy
ZXNzLmdldCgpKSwgImlkZW50aWZpZXIiLCBHVUlOVF9UT19QT0lOVEVSKGlkZW50aWZpZXIpKTsK
IAotICAgIG1fY29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBzdGQ6
Om1ha2VfdW5pcXVlPEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNvbXBsZXRpb25BbmRDYW5jZWxIYW5k
bGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoY2FuY2VsbGFibGUpKSk7
CisgICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuYWRkKGlkZW50aWZpZXIsIG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEROU1Jlc29sdmVRdWV1ZVNvdXA6OkNvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycz4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUo
Y2FuY2VsbGFibGUpKSk7CiB9CiAKIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlU291cDo6c3RvcFJlc29s
dmUodWludDY0X3QgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAppbmRleCBlOTYxYzI4ODNiODYzMDEwNWRhN2Q3ODA3ZjNmYmJlMjYxYTIwNjEwLi4wYjFiN2Nm
ZjUxZjllYmUxMjk4MmUxNmVjNThmNmU4NjYzNDc0OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdl
U2Vzc2lvblNvdXAuY3BwCkBAIC0xMzQsNiArMTM0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGF1
dGhUeXBlRnJvbVByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lKFByb3RlY3Rpb25T
cGEKIH0KIAogc3RydWN0IFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgU2VjcmV0U2VydmljZVNlYXJjaERhdGEoR0NhbmNl
bGxhYmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9pZCAoQ3JlZGVudGlhbCYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBjYW5jZWxsYWJsZShjYW5jZWxsYWJsZSkKICAgICAg
ICAgLCBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKQEAgLTE3
Myw3ICsxNzQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZy
b21QZXJzaXN0ZW50U3RvcmFnZShjb25zdCBQcm90ZWN0aW9uUwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTZWNyZXRTZXJ2aWNlU2Vh
cmNoRGF0YT4oY2FuY2VsbGFibGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBh
dXRvIGRhdGEgPSBtYWtlVW5pcXVlPFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhPihjYW5jZWxsYWJs
ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIHNlY3JldF9zZXJ2aWNlX3NlYXJj
aChudWxscHRyLCBTRUNSRVRfU0NIRU1BX0NPTVBBVF9ORVRXT1JLLCBhdHRyaWJ1dGVzLmdldCgp
LAogICAgICAgICBzdGF0aWNfY2FzdDxTZWNyZXRTZWFyY2hGbGFncz4oU0VDUkVUX1NFQVJDSF9V
TkxPQ0sgfCBTRUNSRVRfU0VBUkNIX0xPQURfU0VDUkVUUyksIGNhbmNlbGxhYmxlLAogICAgICAg
ICBbXShHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2Vy
RGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVz
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKaW5k
ZXggMTBmZWNiYzQxOTQ3OTVmMzJkMWNhN2U3NjA5YWM0ZmYyMDkyY2QyMy4uYWFmZWQzZGU3OWI5
OWFhYzQ3NjljNzZiNTVmNmMxY2JiNjYxYjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBCaWRpUmVzb2x2
ZXJCYXNlPEl0ZXJhdG9yLCBSdW4sIERlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bkludGVybmFsKCkK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmRPZmZzZXQgPj0gc3RhcnRPZmZzZXQpCi0gICAg
ICAgICAgICBtX3J1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8UnVuPihzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0ICsgMSwgY29udGV4dCgpLCBtX2RpcmVjdGlvbikpOworICAgICAgICAgICAg
bV9ydW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAr
IDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKIAogICAgICAgICBtX2Vvci5pbmNyZW1lbnQo
KTsKICAgICAgICAgbV9zb3IgPSBtX2VvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TG9jYWxlSUNVLmNwcAppbmRleCA1OWUxZmM3MmEyYmYyOTY5NDVhODZmODU1MmI4NjM3NmE5ZWE1
ODZkLi4yYzhjY2U3MzA4OGZhNWFkMGNmNTk1OWNjZTRmOTY5MWJmMzU3YTA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBpY3U7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3Jl
YXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMb2NhbGVJQ1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IH0KIAogTG9jYWxlSUNVOjpMb2NhbGVJQ1UoY29uc3QgY2hhciogbG9jYWxlKQpAQCAtMTYzLDIy
ICsxNjMsMjIgQEAgc3RhdGljIFN0cmluZyBnZXREYXRlRm9ybWF0UGF0dGVybihjb25zdCBVRGF0
ZUZvcm1hdCogZGF0ZUZvcm1hdCkKIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9j
YWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwg
VURhdGVGb3JtYXRTeW1ib2xUeXBlIHR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBz
aXplKQogewogICAgIGlmICghZGF0ZUZvcm1hdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3Rv
cjxTdHJpbmc+PigpOwogICAgIGlmICh1ZGF0X2NvdW50U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBl
KSAhPSBzdGFydEluZGV4ICsgc2l6ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJp
bmc+PigpOwogCi0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJp
bmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsK
ICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShzaXplKTsKICAgICBmb3IgKGludDMyX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CiAgICAgICAgIGludDMyX3QgbGVuZ3RoID0gdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3Jt
YXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCAwLCAwLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKHN0
YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxl
bmd0aCk7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRT
eW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBs
ZW5ndGgsICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBsYWJlbHMt
PmFwcGVuZChTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSkpOwogICAgIH0KICAgICByZXR1
cm4gV1RGTW92ZShsYWJlbHMpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZv
cm1hdCoKIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlRmFs
bGJhY2tNb250aExhYmVscygpCiB7Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShXVEZfQVJSQVlfTEVOR1RI
KFdURjo6bW9udGhGdWxsTmFtZSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSk7ICsraSkKICAgICAgICAgbGFiZWxzLT5h
cHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ldKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgTG9jYWxlSUNVOjptb250aExhYmVscygpCiAKIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygpCiB7Ci0g
ICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAg
IGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMt
PnJlc2VydmVDYXBhY2l0eSgyKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiQU0iKTsKICAgICBsYWJl
bHMtPmFwcGVuZCgiUE0iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5v
bmUuY3BwCmluZGV4IGJiNmIyNmJhNTljYjM2Yjk4OWI3ZTZmNTg2MzBjN2E3YjNiNTZlYTcuLjc4
MTVhNDc4ZTAyOTc0NTU5NjU3NmMyZGVkMjIxMTkzNmFhOTZhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBM
b2NhbGVOb25lIDogcHVibGljIExvY2FsZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExv
Y2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExvY2FsZU5vbmU+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlTm9uZT4o
KTsKIH0KIAogTG9jYWxlTm9uZTo6fkxvY2FsZU5vbmUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKaW5kZXggZjhlMTY3MDg0OWE5
NTg5OGExNDU3YmM5OGRhOTFlNGJkZTc4NGM3OS4uZTVmMjgxNjZjNmRkMzRiYzUzNTA5YjZhMDAy
MGE4ODg5MDdjMmNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjSUNVLmNwcApAQCAtMTU2LDQzICsxNTYsNDMgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lz
dGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiAgICAgICAgIC8vIGh0dHA6
Ly9kZW1vLmljdS1wcm9qZWN0Lm9yZy9pY3UtYmluL2NvbnZleHAKICAgICAgICAgaWYgKCFzdHJj
bXAobmFtZSwgIndpbmRvd3MtODc0IikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBb
bmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2Rl
Y0lDVT4obmFtZSwgIndpbmRvd3MtODc0LTIwMDAiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlm
ICghc3RyY21wKG5hbWUsICJ3aW5kb3dzLTk0OSIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIo
bmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OS0yMDAwIik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDktMjAwMCIp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtY3lyaWxsaWMiKSkgewogICAgICAgICAgICAg
cmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtN18zLTEwLjIiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy03XzMt
MTAuMiIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtZ3JlZWsiKSkgewogICAgICAgICAg
ICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtNl8yLTEwLjQiKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy02
XzItMTAuNCIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAieC1tYWMtY2VudHJhbGV1cnJvbWFuIikp
IHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTI5LTEw
LjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5h
bWUsICJtYWNvcy0yOS0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy10dXJraXNo
IikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTM1
LTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+
KG5hbWUsICJtYWNvcy0zNS0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJFVUMtS1IiKSkg
ewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDki
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUs
ICJ3aW5kb3dzLTk0OSIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3Rl
ckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogICAgICAgICBjb25zdCBjaGFy
KiBjYW5vbmljYWxDb252ZXJ0ZXJOYW1lID0gdWNudl9nZXRDYW5vbmljYWxOYW1lKG5hbWUsICJJ
QU5BIiwgJmVycm9yKTsKICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOwogICAgICAg
ICByZWdpc3RyYXIobmFtZSwgW25hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWVdIHsKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgY2Fub25p
Y2FsQ29udmVydGVyTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29k
ZWNJQ1U+KG5hbWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWUpOwogICAgICAgICB9KTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xh
dGluMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5j
cHAKaW5kZXggOTMxNDUzMzI4YTZmNjY5NDg1ZWUwMWY4YTRlMmNlZGU1MDI2NzdmZi4uOTJjNjYx
M2NiMWZjYzBlMzA4YTczYzM1MGE5ZTA3ZWY3NzM0NjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2
b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJl
Z2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJDb2RlY3Mo
VGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIndpbmRvd3Mt
MTI1MiIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjTGF0
aW4xPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNMYXRpbjE+KCk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjUmVwbGFjZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNSZXBsYWNlbWVudC5jcHAKaW5kZXggMTc2NWJmNzkyMTU5NzViMTU3YzhiM2Y3NGM1NTcy
YzQ3MWUyMTE0MS4uYzhiNTU4YzhjYTJkM2FmZDMwMjE0YmNmYzM3YTE0NTc3NTZhMTNhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNl
bWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVn
aXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIKIHZvaWQg
VGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciBy
ZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJyZXBsYWNlbWVudCIsIFtdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjUmVwbGFjZW1lbnQ+KCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1JlcGxhY2VtZW50PigpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCmlu
ZGV4IGJlMDA2NTY0NDY0OGZjZTBjMzc5ZDNjNzQzZWUyMjdlYTllZGE2ZjQuLjkwYzQ0NzVkMDIw
YjlmNDcxYjViZTc3YzNjYWFjMGZkYzk4Y2JhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCkBAIC01NCwxMCArNTQsMTAgQEAgdm9pZCBU
ZXh0Q29kZWNVVEYxNjo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJh
ciByZWdpc3RyYXIpCiB2b2lkIFRleHRDb2RlY1VURjE2OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29k
ZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigiVVRGLTE2TEUiLCBbXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjVVRGMTY+KHRydWUpOwogICAgIH0p
OwogICAgIHJlZ2lzdHJhcigiVVRGLTE2QkUiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRDb2RlY1VURjE2PihmYWxzZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFRleHRDb2RlY1VURjE2PihmYWxzZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwCmluZGV4IGEzZGFkNGU5ZDE2Mzc2
ODYzMDg4YjE5NzEwZjgzOWRiYmZmZWE4ZGQuLmUxZDBhNTNjNzE3YWFlNzM5OTM5ZjUxYzRkMzI5
MzQ1YWY4OWNhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjVVRGOC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29k
ZWNVVEY4LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFRleHRDb2RlY1VURjg6OnJlZ2lzdGVy
RW5jb2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0
Q29kZWNVVEY4OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQog
ewogICAgIHJlZ2lzdHJhcigiVVRGLTgiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRDb2RlY1VURjg+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRD
b2RlY1VURjg+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKaW5kZXggMjk2YzQ2OWYxNjlmYjkx
MWRjOGRiZDdhNjQ3ZWE1NjQxZTJmZmUxOS4uNDhhZGJhOWQ0YjFhN2E5YTY1OGFlZjlkZmFkZjg1
YWRkZTlkY2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNVc2VyRGVmaW5lZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBUZXh0Q29kZWNV
c2VyRGVmaW5lZDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciBy
ZWdpc3RyYXIKIHZvaWQgVGV4dENvZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKFRleHRD
b2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ4LXVzZXItZGVmaW5l
ZCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVXNlckRl
ZmluZWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVk
PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9M
b2NhbGVNYWMubW0KaW5kZXggYTUxN2JlMzQxZjZhYzRiZThlODkzY2ZhZDdjMjI4ODQ1ZDZhODI4
MC4uMmIzZDAzYTM4YTVkMjAxYmI2ZGNiOGViZTQ0ZjQ2ZmVlZmM2N2UwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtNjcsNyArNjcsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TTG9jYWxlPiBkZXRlcm1pbmVMb2NhbGUoY29uc3QgU3RyaW5n
JiBsb2NhbGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0
IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2Nh
bGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkp
LmdldCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGNyZWF0ZURh
dGVUaW1lRm9ybWF0dGVyKE5TTG9jYWxlKiBsb2NhbGUsIE5TQ2FsZW5kYXIqIGNhbGVuZGFyLCBO
U0RhdGVGb3JtYXR0ZXJTdHlsZSBkYXRlU3R5bGUsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIHRpbWVT
dHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2Fs
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3Bw
CmluZGV4IDZhMTYwZGVjY2ZjOTI2YWVmMzdkZTIzZTk3ZjYyZThmNWM2NzkwNmEuLmFhMDBhNGFk
NmY1YjU5OTgyYjZiNDc3MzE3MWM4YmM3YzAzMzkwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMg
TENJRCBMQ0lERnJvbUxvY2FsZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxl
KGxvY2FsZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExvY2FsZVdpbj4oTENJREZyb21Mb2Nh
bGUobG9jYWxlKSk7CiB9CiAKIGlubGluZSBMb2NhbGVXaW46OkxvY2FsZVdpbihMQ0lEIGxjaWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNw
cAppbmRleCBhZjQ2OTEzOTA4MWU4MGMxMjA3YjgyYzk3ZmRmYTNjNzcyMWE2NTExLi4yY2ViNDc1
ZTVmYWViYjY3MGM3NDE0NDc1YTQ3MjkyNDk1MmRjYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKQEAgLTEzMSw3ICsxMzEsNyBA
QCBzdGF0aWMgVUlOVCBnZXRDb2RlUGFnZShjb25zdCBjaGFyKiBuYW1lKQogCiBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjV2luKGNvbnN0IFRleHRFbmNvZGlu
ZyYgZW5jb2RpbmcsIGNvbnN0IHZvaWQqKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRleHRDb2RlY1dpbj4oZ2V0Q29kZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8VGV4dENvZGVjV2luPihnZXRDb2RlUGFnZShlbmNvZGluZy5uYW1lKCkpKTsK
IH0KIAogVGV4dENvZGVjV2luOjpUZXh0Q29kZWNXaW4oVUlOVCBjb2RlUGFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9w
ZW5WUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNw
bGF5T3BlblZSLmgKaW5kZXggZGQ2YWU3MzYwNDY3OWYxODhlMDFlMTEwZTRmZWJlNTkzZDUzN2Yx
Yi4uZjcxYmQ5ZjBkNTg5Y2MyZjgzOWIwNjdjMjNlYzhjYjUxODEwNjhkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNwbGF5T3BlblZS
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1EaXNw
bGF5T3BlblZSLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIgOiBwdWJsaWMgVlJQbGF0Zm9ybURpc3BsYXkgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFZSUGxh
dGZvcm1EaXNwbGF5T3BlblZSKHZyOjpJVlJTeXN0ZW0qLCB2cjo6SVZSQ2hhcGVyb25lKiwgdnI6
OklWUkNvbXBvc2l0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKaW5kZXggZDFkYzY3
MzY4NmY2NTFlM2UwMzI5MWI3YzAyYzMxYjBjMTY5YmJjMi4uZTdjZjcxMzdlMzNhYTU1YmY3ZTU4
NWVlMTY0ZTY3M2QzYWFlZWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCkBAIC0zNSw3
ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4gVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSgpCiAgICAgaWYgKCF2cjo6VlJfSXNSdW50aW1lSW5z
dGFsbGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+KCk7CiB9CiAKIFZSUGxhdGZvcm1NYW5hZ2VyT3Bl
blZSOjp+VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIoKQpAQCAtNzgsNyArNzgsNyBAQCBWZWN0b3I8
V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpnZXRW
UkRpc3BsYXlzKCkKIAogICAgIFZlY3RvcjxXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gZGlz
cGxheXM7CiAgICAgaWYgKCFtX2Rpc3BsYXkpCi0gICAgICAgIG1fZGlzcGxheSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNv
bXBvc2l0b3IpOworICAgICAgICBtX2Rpc3BsYXkgPSBtYWtlVW5pcXVlPFZSUGxhdGZvcm1EaXNw
bGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVyb25lLCBjb21wb3NpdG9yKTsKICAgICBkaXNwbGF5
cy5hcHBlbmQobWFrZVdlYWtQdHIoKm1fZGlzcGxheSkpOwogICAgIHJldHVybiBkaXNwbGF5czsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtTWFuYWdlck9wZW5WUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZS
UGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKaW5kZXggNmE0Mzg3Y2MzMDgxNWUwMGMzNDE2Yzg5NjZh
ZDI5ZDRiNzNmNzBkOS4uNmE3ODIzYmM3Yjk1ZWQ0MGRjZWNkZjBmNTczM2UxNmQ4NDQ1YWE0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1N
YW5hZ2VyT3BlblZSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZS
UGxhdGZvcm1NYW5hZ2VyT3BlblZSLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlI7CiAKIGNsYXNzIFZSUGxhdGZvcm1N
YW5hZ2VyT3BlblZSIDogcHVibGljIFZSUGxhdGZvcm1NYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZSUGxh
dGZvcm1NYW5hZ2VyT3BlblZSPiBjcmVhdGUoKTsKICAgICBleHBsaWNpdCBWUlBsYXRmb3JtTWFu
YWdlck9wZW5WUigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAppbmRleCBhYmFkZGM3ZmJjYTIzNTllZmY1Yjk4MTFjMTk1ZjZiNWFi
YzFiYTgzLi4xNjk3ODU1ZmU3MmY2MzdlNjVhZDQ3NzcyYWZhNjFjNzQ3MTkyNDQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC05Myw3ICs5
Myw3IEBAIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25lclduZFByb2MoSFdO
RCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIGF1dG8gcGFz
dGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICBhdXRvIHBhc3Rl
Ym9hcmQgPSBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiAgICAgQ09NUHRyPElEYXRhT2JqZWN0
PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENsaXBib2FyZCgmY2xp
cGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0gMDsKQEAgLTEwNiwxNiArMTA2
LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCgpCiB7CiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0YU9iamVjdDsKICAg
ICBXQ0RhdGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKIH0KIAogLy8gc3Rh
dGljCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJh
Z0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFnRGF0YS5w
bGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2Fy
ZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
YXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgLy8gRklYTUU6IFNob3Vs
ZCBhZGQgYSBjb25zdCBvdmVybG9hZCBvZiBkcmFnRGF0YU1hcCBzbyB3ZSBkb24ndCBuZWVkIGEg
Y29uc3RfY2FzdCBoZXJlLgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+
KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2FzdDxEcmFnRGF0YSY+KGRyYWdEYXRh
KS5kcmFnRGF0YU1hcCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCAxOTY0OWM1NjZjZmNmNWY0MjQz
MDlkMWQ4ZDEwMGIwYjRmZjc3MGE4Li42ZjdmNGJhMTY2MGI0ZjdhOTc3MjEyYzg1NjNhNDNjNjY1
ZTMwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1
cE1lbnVEQi5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQgU2VhcmNoUG9wdXBNZW51REI6OmV4
ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wgaWdub3JlRXJyb3IpCiAKIHN0
ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IFNlYXJjaFBvcHVwTWVudURCOjpjcmVhdGVQ
cmVwYXJlZFN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRvIHN0YXRlbWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwor
ICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJh
c2UsIHNxbCk7CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwogICAgIEFTU0VS
VF9VTlVTRUQocmV0LCByZXQgPT0gU1FMSVRFX09LKTsKICAgICByZXR1cm4gc3RhdGVtZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAppbmRleCBkYmY5
OWE0NWNlNzAzYTlkODU3YTBlNjAxOWQ2ODA2ZGQxMWZhMTdiLi4yNDEwMDNhMTAwMzFhM2Q3ZTZk
N2FhMWUyNGE0OWNiOTg5ODIwY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vV0NEYXRhT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
V0NEYXRhT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFNURE1FVEhPRElNUCBXQ0RhdGFP
YmplY3Q6OlNldERhdGEoRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBTVEdNRURJVU0qIHBtZWRpdW0s
IEJPCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogCi0gICAgYXV0byBmZXRjID0gc3RkOjptYWtlX3VuaXF1ZTxGT1JNQVRFVEM+KCk7
CisgICAgYXV0byBmZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Rk9STUFU
RVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0Z01lZGl1bURlbGV0ZXI+
IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5KGZldGMuZ2V0KCksIHNp
emVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5k
ZXggYzAwNGZjOWU3MDRhNmFkMzIzNDlmYjgyNGNkYzVkZGQwMzYwMWI1Yy4uNDc5ODFhZTY5OTFk
YzY0OTE1MjBmYzgyNDMyZWNjNDk1ODY0NDNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NT
U0ZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NG
aWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBGaQog
CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogCi0gICAgYXV0byBidWlsZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlvdXNFZmZlY3QpOworICAg
IGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZm
ZWN0KTsKICAgICBtX3NvdXJjZUFscGhhID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChTb3VyY2VB
bHBoYTo6ZWZmZWN0TmFtZSgpKTsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0RWxlbWVudCA6IGNo
aWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oKmZpbHRl
cikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxh
eW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3Bw
CmluZGV4IDAxMzM3ODdkOWQzMDYyYjFjYTc5YjE2MDc5NjNmMjBjMTA3MWVkNTMuLmJkM2M5YmVl
ODcyOTg2ZWM2MWIxYTMwYTA0OTViOGMwYTI2ZmQ2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcApAQCAtODIsNyArODIsNyBAQCBzdGF0aWMg
dm9pZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIsIElubGluZUl0
ZXJhdG9yIGl0ZXIpCiAKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gY3JlYXRlUnVu
KGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0JiBvYmosIElubGluZUJpZGlSZXNvbHZl
ciYgcmVzb2x2ZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4oc3Rh
cnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxCaWRpUnVuPihzdGFydCwgZW5kLCBvYmosIHJlc29sdmVyLmNvbnRl
eHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogfQogCiB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjphcHBl
bmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBpbnQgc3RhcnQsIGlu
dCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQpA
QCAtMTMwLDEyICsxMzAsMTIgQEAgdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5kUnVuc0Zv
ck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXIKIHN0ZDo6dW5pcXVl
X3B0cjxSb290SW5saW5lQm94PiBDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9vdElubGluZUJv
eCgpCiB7CiAgICAgaWYgKGlzPFJlbmRlclNWR1RleHQ+KG1fZmxvdykpIHsKLSAgICAgICAgYXV0
byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25jYXN0PFJlbmRl
clNWR1RleHQ+KG1fZmxvdykpOworICAgICAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZHUm9v
dElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSk7CiAgICAgICAgIGJv
eC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0dXJuIGJveDsKICAg
ICB9CiAgICAgICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJvb3RJbmxpbmVCb3g+
KG1fZmxvdyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4obV9mbG93KTsK
IH0KIAogUm9vdElubGluZUJveCogQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZUFuZEFwcGVuZFJv
b3RJbmxpbmVCb3goKQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW5saW5lIEJpZGlSdW4qIENvbXBs
ZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYg
YmkKICAgICAgICAgd2hpbGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNlQ29udGV4dC0+cGFy
ZW50KCkpCiAgICAgICAgICAgICBiYXNlQ29udGV4dCA9IHBhcmVudDsKIAotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEJp
ZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFj
ZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IG1ha2VVbmlxdWU8Qmlk
aVJ1bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFpbGluZ1NwYWNl
UnVuLT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFMKTsKICAgICAgICAg
dHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAgICAgICAgdHJhaWxpbmdT
cGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuLmdldCgpOwogICAgICAgICBpZiAoZGlyZWN0aW9uID09
IFRleHREaXJlY3Rpb246OkxUUikKQEAgLTE2MTcsNyArMTYxNyw3IEBAIHZvaWQgQ29tcGxleExp
bmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZChMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlKQogICAgICAgICBpZiAobGF5b3V0U3RhdGUuY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUo
KSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21WaXN1YWxPdmVyZmxvdyA9IGxhc3RS
b290Qm94KCktPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygpOwogICAgICAgICAgICAgTGF5
b3V0VW5pdCBib3R0b21MYXlvdXRPdmVyZmxvdyA9IGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0
b21MYXlvdXRPdmVyZmxvdygpOwotICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CisgICAgICAg
ICAgICBhdXRvIG5ld0xpbmVCb3ggPSBtYWtlVW5pcXVlPFRyYWlsaW5nRmxvYXRzUm9vdElubGlu
ZUJveD4obV9mbG93KTsKICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdGbG9hdHNMaW5lQm94ID0g
bmV3TGluZUJveC5nZXQoKTsKICAgICAgICAgICAgIG1fbGluZUJveGVzLmFwcGVuZExpbmVCb3go
V1RGTW92ZShuZXdMaW5lQm94KSk7CiAgICAgICAgICAgICB0cmFpbGluZ0Zsb2F0c0xpbmVCb3gt
PnNldENvbnN0cnVjdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09i
amVjdHMuY3BwCmluZGV4IDRjZGQxMzljNDg3NTE2ZWEwZTdiMTIxM2I3MDNiZDM0MjdhYjAxOGMu
LmE2YzY0ODE4YzQ5NzQ1NjA5MGY2NjIzYzMwNGI1ZDYyNzcwN2FlNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC03NSw3ICs3NSw3IEBAIEZs
b2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gmIHJlbmRlcmVyLCBUeXBlIHR5
cGUsIGNvbnN0IExheW91dFJlY3QmCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4g
RmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyKQogewotICAgIGF1dG8g
b2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIpOworICAg
IGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIpOwogICAg
IG9iamVjdC0+c2V0U2hvdWxkUGFpbnQoIXJlbmRlcmVyLmhhc1NlbGZQYWludGluZ0xheWVyKCkp
OyAvLyBJZiBhIGxheWVyIGV4aXN0cywgdGhlIGZsb2F0IHdpbGwgcGFpbnQgaXRzZWxmLiBPdGhl
cndpc2Ugc29tZW9uZSBlbHNlIHdpbGwuCiAgICAgb2JqZWN0LT5zZXRJc0Rlc2NlbmRhbnQodHJ1
ZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVyQm94JiByZW5k
ZXJlcikKIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6
Y29weVRvTmV3Q29udGFpbmVyKExheW91dFNpemUgb2Zmc2V0LCBib29sIHNob3VsZFBhaW50LCBi
b29sIGlzRGVzY2VuZGFudCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxG
bG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZyYW1lUmVjdCgp
LmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdpbk9mZnNldCgp
LCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGbG9h
dGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZyYW1lUmVjdCgpLmxv
Y2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdpbk9mZnNldCgpLCBz
aG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5n
T2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQoKSBjb25zdAogewotICAg
IGF1dG8gY2xvbmVPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5k
ZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9mZnNldCwgbV9zaG91bGRQYWlu
dCwgbV9pc0Rlc2NlbmRhbnQpOworICAgIGF1dG8gY2xvbmVPYmplY3QgPSBtYWtlVW5pcXVlPEZs
b2F0aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9m
ZnNldCwgbV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOwogICAgIGNsb25lT2JqZWN0LT5t
X3BhZ2luYXRpb25TdHJ1dCA9IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIGNsb25lT2JqZWN0LT5t
X2lzUGxhY2VkID0gbV9pc1BsYWNlZDsKICAgICByZXR1cm4gY2xvbmVPYmplY3Q7CkBAIC0zNzIs
NyArMzcyLDcgQEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQbGFjZWRGbG9hdHNUcmVl
KCkKICAgICBpZiAobV9zZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bs
YWNlZEZsb2F0c1RyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0VHJlZT4oKTsK
KyAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0VHJlZT4o
KTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NldC5iZWdpbigpLCBlbmQgPSBtX3NldC5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVj
dCA9IGl0LT5nZXQoKTsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5pc1BsYWNlZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IGM3MmQwMWQ4MWM3ZDcxNjYxNTc5ZTNiYTAx
ODMwZTQyOWQzMGY2ODguLjFlOTExYWU2MGE2MTI2ODlhNDk3ZmYyZDViN2YwZDUwYjg3ZTI5NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWdu
ZWQgZml4ZWRUcmFja1NwYQogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5k
ZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlk
WzBdLnNpemUoKTsKICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRPZlZhcnlpbmdU
cmFja0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgIGlmIChpc0VtcHR5QXJl
YUVub3VnaChyb3dTcGFuLCBjb2x1bW5TcGFuKSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEdyaWRBcmVhPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRBcmVhPihHcmlkU3Bh
bjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCArIHJv
d1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1bW5JbmRl
eCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRy
YW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFu
KSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1f
Y29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CiAgICAgICAgICAgICAvLyBBZHZhbmNlIHRoZSBp
dGVyYXRvciB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdlIHdvdWxkIHJldHVybiB0
aGUgc2FtZSBncmlkIGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAgICAgICsrdmFyeWluZ1Ry
YWNrSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAppbmRleCA1ZmMzMjgxNTNh
NmQ4YmZjNDg4M2JhNTEyMWNjYTBiZjZmMmU5OWQwLi42NjA5MDk4ZjljODcwNDY4ODExNDE4YWIx
NzgyOTQxN2JlZTJkMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZEJhc2VsaW5lQWxpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZEJhc2VsaW5lQWxpZ25tZW50LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgR3JpZEJhc2Vs
aW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQoSXRlbVBvc2l0aW9u
IHByZWZlcmVuCiAKICAgICAvLyBMb29raW5nIGZvciBhIGNvbXBhdGlibGUgYmFzZWxpbmUtc2hh
cmluZyBncm91cC4KICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2VsaW5lQ29udGV4dD4o
Y2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CisgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEJhc2VsaW5lQ29udGV4dD4oY2hpbGQsIHByZWZl
cmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1dG8qIGNvbnRl
eHQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgICAgICBjb250ZXh0LT51
cGRhdGVTaGFyZWRHcm91cChjaGlsZCwgcHJlZmVyZW5jZSwgYXNjZW50LCBkZXNjZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRo
bS5jcHAKaW5kZXggYWRkZWRjNDI4YjFmMmZkYjM1MDNlODEyNjI2Yjk3NjkzYTNlN2I1Zi4uYjJi
MDExYmRmNzQ5MWIzNWFiMWRiYjdhYzZiMjYzOTYxNzIxY2NhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKQEAgLTY4
MSw3ICs2ODEsNyBAQCBkb3VibGUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxl
eEZhY3RvclVuaXRTaXplKGNvbnN0IFZlY3RvcjxHcmlkVHJhYwogICAgICAgICAgICAgbGVmdE92
ZXJTcGFjZSAtPSBiYXNlU2l6ZTsKICAgICAgICAgICAgIGZsZXhGYWN0b3JTdW0gLT0gZmxleEZh
Y3RvcjsKICAgICAgICAgICAgIGlmICghdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZSkKLSAgICAg
ICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxU
cmFja0luZGV4U2V0PigpOworICAgICAgICAgICAgICAgIHRyYWNrc1RvVHJlYXRBc0luZmxleGli
bGUgPSBtYWtlVW5pcXVlPFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAgICB0cmFja3NUb1Ry
ZWF0QXNJbmZsZXhpYmxlLT5hZGQoaW5kZXgpOwogICAgICAgICAgICAgdmFsaWRGbGV4RmFjdG9y
VW5pdCA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMjYwLDEwICsxMjYwLDEwIEBAIHZvaWQgR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uLCB1bnNpZ25lCiAgICAgbV9zaXppbmdPcGVyYXRpb24gPSBzaXppbmdPcGVyYXRpb247
CiAgICAgc3dpdGNoIChtX3NpemluZ09wZXJhdGlvbikgewogICAgIGNhc2UgSW50cmluc2ljU2l6
ZUNvbXB1dGF0aW9uOgotICAgICAgICBtX3N0cmF0ZWd5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRl
ZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5p
cXVlPEluZGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBUcmFja1NpemluZzoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8
RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKKyAgICAgICAgbV9zdHJhdGVneSA9IG1ha2VV
bmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggNzNi
MzY1NDc2NzE0MGEwMzcwZTRkNTY5NTZlNTRmMjY3NGI1OGIzNi4uYjNjNDAwNzkwMmRmNjA0ODYy
YTVhYzdjMjk5OGNiYWQ3M2YxMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcApAQCAtOTYsNyArOTYsNyBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVz
dWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pc092ZXJXaWRnZXQob3Ro
ZXIuaXNPdmVyV2lkZ2V0KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNh
c2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5t
X2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCpvdGhlci5t
X2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5vZGVTZXQ+KCpv
dGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIH0KIAogSGl0VGVzdFJlc3Vs
dDo6fkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7CkBAIC0xMTMsNyArMTEzLDcgQEAgSGl0VGVz
dFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90
aGVyKQogICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CiAKICAgICAv
LyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0IGhpdCB0ZXN0LgotICAgIG1f
bGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCA/IHN0ZDo6
bWFrZV91bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkgOiBudWxs
cHRyOworICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJl
c3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3VsdCkg
OiBudWxscHRyOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjkwLDE0ICs2OTAsMTQgQEAg
dm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIsIGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXEKIGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIEhp
dFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQoKSBjb25zdAogewogICAgIGlmICghbV9s
aXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9
IG1ha2VVbmlxdWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3Vs
dDsKIH0KIAogSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJlc3VsdDo6bXV0YWJsZUxp
c3RCYXNlZFRlc3RSZXN1bHQoKQogewogICAgIGlmICghbV9saXN0QmFzZWRUZXN0UmVzdWx0KQot
ICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+
KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG1ha2VVbmlxdWU8Tm9kZVNldD4o
KTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggMzMyZjI4NTMxZDM4OGNmZTJjM2Q1OGE5
NGMzZjI2MTdkY2I5MTY2Ni4uMTBhMTk0MzZiNGJhYzY1NjI5MDZiMjQxYTcwZDFkNTg1MjAwMDJm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC00Miw2ICs0
Miw3IEBAIGNsYXNzIFNjcm9sbGJhcjsKIGVudW0gY2xhc3MgSGl0VGVzdFByb2dyZXNzIHsgU3Rv
cCwgQ29udGludWUgfTsKIAogY2xhc3MgSGl0VGVzdFJlc3VsdCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8Tm9k
ZT4+IE5vZGVTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgK
aW5kZXggNDNjNjUzODc2Y2Y5ODRhNjJiNmZjOTI5NDVkM2RkNjkwY2EzZWRiOS4uMTVmZGU1NGRl
NWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhjb25zdCBJbmxpbmVJdGVyYXRvciYgaXRl
cikKIC8vIG9mIEJpZGlSZXNvbHZlciB3aGljaCBrbm93cyBub3RoaW5nIGFib3V0IFJlbmRlck9i
amVjdHMuCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElu
bGluZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBSZW5kZXJPYmplY3QmIG9iaiwgdW5z
aWduZWQgcG9zLCBSZW5kZXJFbGVtZW50JiByb290KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxC
aWRpUnVuPiBpc29sYXRlZFJ1biA9IHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocG9zLCBwb3Ms
IG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0gbWFrZVVuaXF1ZTxCaWRpUnVuPihwb3MsIHBv
cywgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKICAgICAvLyBGSVhN
RTogaXNvbGF0ZWRSdW5zKCkgY291bGQgYmUgYSBoYXNoIG9mIG9iamVjdC0+cnVuIGFuZCB0aGVu
IHdlIGNvdWxkIGNoZWFwbHkKICAgICAvLyBBU1NFUlQgaGVyZSB0aGF0IHdlIGRpZG4ndCBjcmVh
dGUgbXVsdGlwbGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgaW5saW5lLgogICAgIHJlc29sdmVyLnNl
dFdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlvbkZvcklzb2xhdGVkUnVuKCppc29sYXRlZFJ1
biwgcmVzb2x2ZXIud2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSgpLmN1cnJlbnRUcmFuc2l0aW9u
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyT3ZlcmxhcE1h
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAppbmRl
eCAyODVhYTVmOWZlOWJhZTdkZmM4NTI4YzI0YzFkNTU2N2Q0MTI5ZmYzLi45NmFmOTVhNDU1Njk1
MGU4MTI2Yjk1MzczNTM0ZDQ3NmRhZTM1NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtNzEsNiArNzEsNyBAQCBzdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVjdExpc3QmIHJlY3RMaXN0KQog
Ly8gQ2hlY2tpbmcgZm9yIG92ZXJsYXAgaW52b2x2ZXMgZmluZGluZyB0aGUgbm9kZSBmb3IgdGhl
IGNsaXBwaW5nIGxheWVyIGVuY2xvc2luZyB0aGUgZ2l2ZW4gbGF5ZXIgKG9yIHRoZSByb290KSwK
IC8vIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgYm91bmRzIG9mIGVhcmxpZXIgc2libGluZ3Mu
CiBjbGFzcyBPdmVybGFwTWFwQ29udGFpbmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBPdmVybGFwTWFwQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyJiBy
b290TGF5ZXIpCiAgICAgICAgIDogbV9yb290U2NvcGUocm9vdExheWVyKQpAQCAtMjk2LDcgKzI5
Nyw3IEBAIGJvb2wgTGF5ZXJPdmVybGFwTWFwOjpvdmVybGFwc0xheWVycyhjb25zdCBSZW5kZXJM
YXllciYgbGF5ZXIsIGNvbnN0IExheW91dFJlY3QmCiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpw
dXNoQ29tcG9zaXRpbmdDb250YWluZXIoKQogewotICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1fcm9vdExheWVyKSk7CisgICAg
bV9vdmVybGFwU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9y
b290TGF5ZXIpKTsKIH0KIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnBvcENvbXBvc2l0aW5nQ29u
dGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRk
YmEzZjFjNDEwNWFmYjBlOGU0Yzc2YTdjZmNiOWU1ZmZmNzE4NTQuLjAwMTkyNTg4MmU1MDI4Yzhh
MjA5OWI0YmJkZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFj
a2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAg
ICAgfQogICAgIAogICAgIGF1dG8mIGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50SGVpZ2h0RGVzY2Vu
ZGFudHNNYXAtPmVuc3VyZSgmY29udGFpbmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CiAKICAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKCZkZXNjZW5k
YW50KS5pc05ld0VudHJ5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIGluc2VydElu
dG9UcmFja2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRl
ckJvCiAgICAgfQogICAgIAogICAgIGF1dG8mIGNvbnRhaW5lclNldCA9IHBlcmNlbnRIZWlnaHRD
b250YWluZXJNYXAtPmVuc3VyZSgmZGVzY2VuZGFudCwgW10gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIWNvbnRhaW5lclNldC0+Y29udGFpbnMoJmNv
bnRhaW5lcikpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFBvc2l0aW9uZWREZXNjZW5kYW50
c01hcCB7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvJiBkZXNjZW5kYW50cyA9IG1fZGVzY2Vu
ZGFudHNNYXAuZW5zdXJlKCZjb250YWluaW5nQmxvY2ssIFtdIHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAg
ICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICBib29sIGlzTmV3RW50cnkgPSBt
b3ZlRGVzY2VuZGFudFRvRW5kID09IE1vdmVEZXNjZW5kYW50VG9FbmQ6OlllcyA/IGRlc2NlbmRh
bnRzLT5hcHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5
CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIGlubGluZSBVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJM
YXlvdXRUcmFuc2FjdGlvbiogY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnQKIHZvaWQgUmVuZGVy
QmxvY2s6OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKQogewog
ICAgIGlmICghdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpKQot
ICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBz
dGQ6Om1ha2VfdW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7CisgICAgICAg
IHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IG1ha2VVbmlx
dWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKICAgICBpZiAodXBkYXRlU2Nyb2xs
SW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkgfHwgY3VycmVudFVw
ZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCktPnZpZXcgIT0gJnZpZXcoKSkK
ICAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5h
cHBlbmQoVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24odmlldygpKSk7CiAg
ICAgKytjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+bmVz
dGVkQ291bnQ7CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEm
IGVuc3VyZUJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQogICAgIAogICAg
IGF1dG8mIHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0YSkKLSAgICAgICAgcmFyZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CisgICAgICAgIHJhcmVEYXRhID0g
bWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOwogICAgIHJldHVybiAqcmFyZURhdGEu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAKaW5kZXggN2YxZTYzOTcwNjNiZTRmOGRmOWI1N2YxNzVkNmUyNmU3OGVmYjEzNC4uYjg2NDJk
MTcyMDNiZDRiZjI1YmRlMTcxZjk4NzBhZjdkNWE0M2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFJl
bmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVu
LCBMYXlvdXRVbml0JiByZQogICAgIG1fc2ltcGxlTGluZUxheW91dCA9IG51bGxwdHI7CiAKICAg
ICBpZiAoIW1fY29tcGxleExpbmVMYXlvdXQpCi0gICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CisgICAgICAgIG1f
Y29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7
CiAKICAgICBtX2NvbXBsZXhMaW5lTGF5b3V0LT5sYXlvdXRMaW5lQm94ZXMocmVsYXlvdXRDaGls
ZHJlbiwgcmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKIH0KQEAgLTIw
MTksNyArMjAxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgp
CiAgICAgCiAgICAgc2V0TGluZUdyaWRCb3goMCk7CiAKLSAgICBhdXRvIGxpbmVHcmlkQm94ID0g
c3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PigqdGhpcyk7CisgICAgYXV0byBsaW5lR3Jp
ZEJveCA9IG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMpOwogICAgIGxpbmVHcmlkQm94
LT5zZXRIYXNUZXh0Q2hpbGRyZW4oKTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhlIGxpbmUgYXNjZW50
L2Rlc2NlbnQgYWN0dWFsbHkgYmUgaG9ub3JlZCBpbiBxdWlya3MgbW9kZS4KICAgICBsaW5lR3Jp
ZEJveC0+c2V0Q29uc3RydWN0ZWQoKTsKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcCB0ZXh0Qm94RGF0YU1hcDsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNv
bnN0IFBhaW50CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMo
KQogewotICAgIG1fZmxvYXRpbmdPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09i
amVjdHM+KCp0aGlzKTsKKyAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IG1ha2VVbmlxdWU8RmxvYXRp
bmdPYmplY3RzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9h
dGluZ09iamVjdHMoKQpAQCAtMzY3Nyw3ICszNjc3LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmVuc3VyZUxpbmVCb3hlcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9jb21w
bGV4TGluZUxheW91dCk7Ci0gICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0g
bWFrZVVuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAgaWYgKFNpbXBsZUxp
bmVMYXlvdXQ6OmNhblVzZUZvckxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0
KSkgewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKCp0aGlz
LCAqbV9zaW1wbGVMaW5lTGF5b3V0KTsKQEAgLTM3MzUsNyArMzczNSw3IEBAIFJlbmRlckJsb2Nr
Rmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFy
ZUJsb2NrRmxvd0RhCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tG
bG93RGF0YSgpCiB7CiAgICAgQVNTRVJUKCFoYXNSYXJlQmxvY2tGbG93RGF0YSgpKTsKLSAgICBt
X3JhcmVCbG9ja0Zsb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJl
bmRlckJsb2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CisgICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9
IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRo
aXMpOwogfQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKaW5kZXggZGIzYTZkYThmMWEzMjE1MzcwMGU3MzQxN2QxMGY2YTQ4
MTMwODM1Zi4uOTY3N2RhZTljZmUyOGIxZGMzOTA1YzNhODJiMDZlYzZlY2RjZGM0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0
aWMgQ29udHJvbFN0YXRlc1JlbmRlcmVyTWFwJiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQog
c3RhdGljIENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyKQogewogICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAo
KS5lbnN1cmUoJnJlbmRlcmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRyb2xTdGF0ZXM+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRyb2xTdGF0
ZXM+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCkBAIC0yMTIyLDcgKzIx
MjIsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJF
bGVtZW50JiBjb250YWluZXIsIGNvbnN0IExheW91dAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5l
RWxlbWVudEJveD4gUmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3goKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94Ojpk
aXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBiY2JhN2I0MTY4NWEzZjQxMjBj
MWVlYTU0NjEwMmY4MzZkNTZhYTI2Li45MDFjNDExMGUxYzU2YmE2MGE0ZGQzYmE3YjkzZmFhZjYw
NDFjYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKQEAgLTI1MzgsNyArMjUzOCw3IEBAIGF1dG8gUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSgpIC0+IENvbnRpbnVhdGlvbkNoYWluTm9k
CiB7CiAgICAgc2V0SGFzQ29udGludWF0aW9uQ2hhaW5Ob2RlKHRydWUpOwogICAgIHJldHVybiAq
Y29udGludWF0aW9uQ2hhaW5Ob2RlTWFwKCkuZW5zdXJlKHRoaXMsIFsmXSB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRoaXMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb3VudGVyLmNwcAppbmRleCAyMjEwNDQzNGU0NWQ2Yzk4NDc2ZmZkMjlhYjU1MGJkNjJhYzQw
OGZlLi5jMWUwM2YwOTdlZjU5YWQ1YTE2YjE5NGM5YzA1ZDY0OWY3ZmYxNWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAg
c3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICBpZiAocGxhY2UucGFyZW50KQogICAgICAgICBw
bGFjZS5wYXJlbnQtPmluc2VydEFmdGVyKG5ld05vZGUsIHBsYWNlLnByZXZpb3VzU2libGluZy5n
ZXQoKSwgaWRlbnRpZmllcik7CiAKLSAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91
bmlxdWU8Q291bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3
Tm9kZS5jb3B5UmVmKCkpOworICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxDb3Vu
dGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlS
ZWYoKSk7CiAgICAgcmVuZGVyZXIuc2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7CiAKICAgICBp
ZiAobmV3Tm9kZS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcAppbmRleCA1MWE5ZTQ2ODQzNDRkMjYzN2QwNGE5
MWZiNTlhM2NkNmVmOGYwNmVkLi43ZjZjYWJjMDU5MTIxMDgxYzRkNzI4NjAyMTliZDRiOWM4NWI5
NGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVu
dENvbnRhaW5lci5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJCb3hGcmFnbWVudEluZm8q
IFJlbmRlckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8oY29uc3Qg
UgogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
ckJveEZyYWdtZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQo
Ym94LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJ
bnNldCwgbG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZv
PiYgYm94SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gsIG1ha2VVbmlxdWU8
UmVuZGVyQm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNl
dCwgY29udGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJl
dHVybiBib3hJbmZvLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAppbmRleCA0NGY1NjM1YmE1M2FlM2Y3ZTk0ZDdhYzhl
NDk2NzM5MGY1OGMyZTU2Li44NDZkZDNhMDJhYTg2YWFmNzE1YzA5NGU4YzM1MGMxNjZhODY3YjFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZs
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxv
dy5jcHAKQEAgLTExMTUsNyArMTExNSw3IEBAIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBSZW5k
ZXJGcmFnbWVudGVkRmxvdzo6Y3VycmVudEZyYWdtZW50KCkgY29uc3QKIENvbnRhaW5pbmdGcmFn
bWVudE1hcCYgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVudE1hcCgpCiB7
CiAgICAgaWYgKCFtX2xpbmVUb0ZyYWdtZW50TWFwKQotICAgICAgICBtX2xpbmVUb0ZyYWdtZW50
TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+KCk7CisgICAgICAg
IG1fbGluZVRvRnJhZ21lbnRNYXAgPSBtYWtlVW5pcXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4o
KTsKIAogICAgIHJldHVybiAqbV9saW5lVG9GcmFnbWVudE1hcC5nZXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IGI5MDQ1ZTY3
OTA4NzNhYmY4MWE5MGRmYTViYmIxMTA5M2M2NzdiMDIuLjUyYzc5MGQ0ZTU3ODliMTc4ZTI2Yzhh
YmQ4YmE3YjEzY2M1OTE1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdlb21ldHJ5TWFwLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlN
YXA6OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRp
b25NCiAgICAgCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21f
aW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQot
ICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4odCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4Pih0KTsKICAgICBlbHNlCiAgICAgICAgIHN0ZXAubV9vZmZzZXQgPSBM
YXlvdXRTaXplKHQuZSgpLCB0LmYoKSk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFJlbmRl
ckdlb21ldHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlv
dXRTaXplJiBzY3JvbAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGlu
Z1ttX2luc2VydGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0
OwogICAgIGlmICh0KQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0g
bWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwogICAgIAogICAgIHN0ZXBJbnNl
cnRlZChzdGVwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRl
eCBlMzVhMmMxMzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0Y2NjOWQwZjM0OTdmLi40OWFkMDM1NTUzNzM0
MjI1ZjFkZGQ2MzNiNDJjMTM4MzJjY2VmYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRU
cmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEK
ICAgICB1bnNpZ25lZCBsYXN0QXV0b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sg
KyBncmlkLmF1dG9SZXBlYXRUcmFja3MoZGlyZWN0aW9uKTsKIAogICAgIGlmICghZ3JpZC5oYXNH
cmlkSXRlbXMoKSkgewotICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0g
bWFrZVVuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCB0cmFja0luZGV4ID0gZmlyc3RBdXRvUmVwZWF0VHJhY2s7IHRyYWNrSW5kZXggPCBsYXN0QXV0
b1JlcGVhdFRyYWNrOyArK3RyYWNrSW5kZXgpCiAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhl
cy0+YWRkKHRyYWNrSW5kZXgpOwogICAgIH0gZWxzZSB7CkBAIC01NTIsNyArNTUyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1w
dHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihn
cmlkLCBkaXJlY3Rpb24sIHRyYWNrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFpdGVyYXRvci5u
ZXh0R3JpZEl0ZW0oKSkgewogICAgICAgICAgICAgICAgIGlmICghZW1wdHlUcmFja0luZGV4ZXMp
Ci0gICAgICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1
ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICAgICAgZW1wdHlUcmFj
a0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwogICAgICAgICAg
ICAgICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTczMiw3ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+
IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dAog
ICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhj
cm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwg
Y3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0g
R3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24s
IGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNv
bHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3Bl
Y2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9z
c0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JpZEFyZWE+KHNw
ZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMg
OiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8g
c3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwogfQogCiB2b2lk
IFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3Jp
ZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODkxM2U3NmM5ZDYxYzlkMjU0
MTk5MGE5MDFiN2IwMjk0ZTQ4YWFkYy4uZjUxZTJmZWIzN2UxZmNmMGZkMGU3OTFhZTY0ZjAzZWU4
OGEyYTdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0x
MzQsNyArMTM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVySW1hZ2U6
OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxl
SW1hZ2UqIHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAg
ICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0g
ICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdl
ID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2Up
IDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9pbWFnZURldmlj
ZVBpeGVsUmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0ZUFsdFRleHQo
KTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bAogCiBSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxl
LCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQs
IFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJ
bWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpz
dHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAg
ICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJl
c291cmNlPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCmluZGV4IDlkOGE2NTkzNGJhM2ZkMjU0NzRjMzljOTFmZWVjNDNhYTBjOWY5ZjUuLjE1MzI1
Y2RhMTY5MDY3YTU2OTFiODg1YThkZmRjN2FhOTAzNjQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIFJlbmRl
cklubGluZTo6ZGVsZXRlTGluZXMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4g
UmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
SW5saW5lRmxvd0JveD4oKnRoaXMpOwogfQogCiBJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6
OmNyZWF0ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggZjlmMGQwZDRjZWU2NmMxZjQzZGU1MzJiNjEwMDUzMmJmYjYx
NTA4Yy4uMTg1NDY4NzA1MTZlNGQwZmQ1ZTJiMDI4ZGViM2JjNDBjZTZjOGJmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03MDAsNyArNzAwLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgICAgICAvLyBJZ25vcmUg
bm9uLW92ZXJmbG93IGxheWVycyBhbmQgcmVmbGVjdGlvbnMuCiAgICAgICAgIGlmIChjaGlsZC0+
aXNOb3JtYWxGbG93T25seSgpICYmICFpc1JlZmxlY3Rpb25MYXllcigqY2hpbGQpKSB7CiAgICAg
ICAgICAgICBpZiAoIW1fbm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICAgICAgICAgbV9ub3JtYWxG
bG93TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAg
ICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRlckxh
eWVyKj4+KCk7CiAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0LT5hcHBlbmQoY2hpbGQpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNv
bGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yCiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93T25seSgpKSB7
CiAgICAgICAgIGF1dG8mIGxheWVyTGlzdCA9ICh6SW5kZXgoKSA+PSAwKSA/IHBvc2l0aXZlWk9y
ZGVyTGlzdCA6IG5lZ2F0aXZlWk9yZGVyTGlzdDsKICAgICAgICAgaWYgKCFsYXllckxpc3QpCi0g
ICAgICAgICAgICBsYXllckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXll
cio+PigpOworICAgICAgICAgICAgbGF5ZXJMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVy
TGF5ZXIqPj4oKTsKICAgICAgICAgbGF5ZXJMaXN0LT5hcHBlbmQodGhpcyk7CiAgICAgfQogCkBA
IC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKQog
ICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gISFtX3RyYW5zZm9ybTsKICAgICBpZiAoaGFzVHJhbnNm
b3JtICE9IGhhZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQotICAgICAg
ICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4
PigpOworICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9u
TWF0cml4PigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3RyYW5zZm9ybSA9IG51bGxw
dHI7CiAgICAgICAgIApAQCAtNTUyNyw3ICs1NTI3LDcgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVy
TGF5ZXI6OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHND
b24KICAgICB9CiAgICAgCiAgICAgaWYgKCFtX2NsaXBSZWN0c0NhY2hlKQotICAgICAgICBtX2Ns
aXBSZWN0c0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKKyAgICAg
ICAgbV9jbGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CiAjaWZu
ZGVmIE5ERUJVRwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVj
dHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyOwogICAgIG1fY2xpcFJlY3RzQ2Fj
aGUtPm1fc2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4
dC5vdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeTsKQEAgLTYxMDUsNyArNjEwNSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKENsaXBSZWN0c1R5cGUgdHlwZVRvQ2xlYXIp
CiBSZW5kZXJMYXllckJhY2tpbmcqIFJlbmRlckxheWVyOjplbnN1cmVCYWNraW5nKCkKIHsKICAg
ICBpZiAoIW1fYmFja2luZykgewotICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOworICAgICAgICBtX2JhY2tpbmcgPSBtYWtlVW5p
cXVlPFJlbmRlckxheWVyQmFja2luZz4oKnRoaXMpOwogICAgICAgICBjb21wb3NpdG9yKCkubGF5
ZXJCZWNhbWVDb21wb3NpdGVkKCp0aGlzKTsKIAogICAgICAgICB1cGRhdGVGaWx0ZXJQYWludGlu
Z1N0cmF0ZWd5KCk7CkBAIC02NTIzLDcgKzY1MjMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHls
ZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZQogCiAgICAgaWYgKHJlbmRlcmVyKCkuaXNIVE1MTWFycXVlZSgpICYmIHJlbmRlcmVyKCkuc3R5
bGUoKS5tYXJxdWVlQmVoYXZpb3IoKSAhPSBNYXJxdWVlQmVoYXZpb3I6Ok5vbmUgJiYgcmVuZGVy
ZXIoKS5pc0JveCgpKSB7CiAgICAgICAgIGlmICghbV9tYXJxdWVlKQotICAgICAgICAgICAgbV9t
YXJxdWVlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKKyAgICAgICAg
ICAgIG1fbWFycXVlZSA9IG1ha2VVbmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7CiAgICAgICAg
IG1fbWFycXVlZS0+dXBkYXRlTWFycXVlZVN0eWxlKCk7CiAgICAgfSBlbHNlIGlmIChtX21hcnF1
ZWUpCiAgICAgICAgIG1fbWFycXVlZSA9IG51bGxwdHI7CkBAIC02NzM1LDcgKzY3MzUsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjplbnN1cmVMYXllckZpbHRlcnMoKQogICAgIGlmIChtX2ZpbHRlcnMp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX2ZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckxheWVyRmlsdGVycz4oKnRoaXMpOworICAgIG1fZmlsdGVycyA9IG1ha2VVbmlxdWU8
UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFy
TGF5ZXJGaWx0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKaW5kZXggMjJlZDZkZDdjMDI1MmIxOTUzZGUzYmUxNTM5NzFiMTI5YWUxYzc0
Yi4uMTIxZDEyZjI2OWY5MGQxM2M2Y2NkZDA5N2I5MjJlM2FkYWNlMjZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE2MjcsNyAr
MTYyNyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5n
U3RhY2soVmVjdG9yPENvbXBvc2l0ZWRDbGlwRGF0YT4mCiAgICAgfQogICAgIAogICAgIGlmICgh
bV9hbmNlc3RvckNsaXBwaW5nU3RhY2spIHsKLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3Rh
Y2sgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3Zl
KGNsaXBwaW5nRGF0YSkpOworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9IG1ha2VV
bmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7
CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJsYXllciAi
IDw8ICZtX293bmluZ0xheWVyIDw8ICIgYW5jZXN0b3JDbGlwcGluZ1N0YWNrICIgPDwgKm1fYW5j
ZXN0b3JDbGlwcGluZ1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3
OCwxNyArMzE3OCwxNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24o
ZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbQogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkgPT0gMTsKICAg
ICAgICAgaWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJy
ZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSkpCi0gICAg
ICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7Cisg
ICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CiAKICAg
ICAgICAgaWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVu
dEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAg
ICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25W
YWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CisgICAgICAgICAgICBv
cGFjaXR5VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwg
a2V5ZnJhbWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgoaGFzRmlsdGVy
ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJv
cGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5
bGUtPmZpbHRlcigpLCB0ZikpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtl
VW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigp
LCB0ZikpOwogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICAgICAgaWYgKChoYXNC
YWNrZHJvcEZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFt
ZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpKQotICAg
ICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8Rmls
dGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwg
dGYpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVl
PEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVy
KCksIHRmKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTMyNDMsOCArMzI0Myw4IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1By
b3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogb3BhY2l0eUFuaW0gPSB0
b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KTsKICAgICAg
ICAgaWYgKG9wYWNpdHlBbmltICYmICFvcGFjaXR5QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9u
KCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0
ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3Rk
OjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGluZ09wYWNpdHko
ZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3Bh
Y2l0eSh0b1N0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmlu
c2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0
eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5z
ZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5
KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFt
IGlzIG9ubHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1
biBvbiBSZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAg
ICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEZs
b2F0U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRy
YW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkgewogICAgICAg
ICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlzaWJs
ZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9wYWNpdHkuCkBA
IC0zMjU4LDggKzMyNTgsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0
aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25z
dCBBbmltYXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVy
dHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAgICAgICBpZiAodHJhbnNmb3JtQW5pbSAmJiAh
dHJhbnNmb3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtl
eWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3Jt
KTsKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOwotICAg
ICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAg
dHJhbnNmb3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVl
PigwLCBmcm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0
b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUt
PnRyYW5zZm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmlt
YXRpb24odHJhbnNmb3JtVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVy
Qm94UmVjdCgpKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
bk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0
KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5z
Zm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmlu
YWwgdHJhbnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgqdG9TdHlsZSk7
CkBAIC0zMjcyLDggKzMyNzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFu
c2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBj
b25zdCBBbmltYXRpb24qIGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVy
dHkoQ1NTUHJvcGVydHlGaWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVy
QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFs
dWVMaXN0IGZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5RmlsdGVyKTsKLSAgICAgICAgICAg
IGZpbHRlclZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1
ZT4oMCwgZnJvbVN0eWxlLT5maWx0ZXIoKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmlu
c2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5m
aWx0ZXIoKSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAg
ICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEs
IHRvU3R5bGUtPmZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5h
ZGRBbmltYXRpb24oZmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhp
Y3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUZpbHRl
ciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhl
IGNvcnJlY3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28g
c2V0IHRoZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVycygqdG9T
dHlsZSk7CkBAIC0zMjg3LDggKzMyODcsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAg
ICAgICBjb25zdCBBbmltYXRpb24qIGJhY2tkcm9wRmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5z
aXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKICAgICAg
ICAgaWYgKGJhY2tkcm9wRmlsdGVyQW5pbSAmJiAhYmFja2Ryb3BGaWx0ZXJBbmltLT5pc0VtcHR5
T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgYmFja2Ry
b3BGaWx0ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKLSAg
ICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKLSAg
ICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAg
ICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmlt
YXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAg
ICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25W
YWx1ZT4oMSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1f
Z3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKGJhY2tkcm9wRmlsdGVyVmVjdG9yLCBGbG9hdFNp
emUoKSwgYmFja2Ryb3BGaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9y
VHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpLCB0aW1lT2Zm
c2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGJh
Y2tkcm9wIGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNl
dCB0aGUgZmluYWwgYmFja2Ryb3AgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVwZGF0ZUJhY2tk
cm9wRmlsdGVycygqdG9TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGFiZTRkNGQ2NzVhMjIxODZlMmVhODlkNDEy
ZmZhODE1MzhjNWM5MjkuLjMyMTIyOWQ2ZjIzY2ZhZTY2YTA1YTUyODA4ZGQwYjBjYmE4YzE0NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCkBAIC0yOTUsNyArMjk1LDcgQEAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJM
YXllckNvbXBvc2l0b3IoUmVuZGVyVmlldyYgcmVuZGVyVmlldykKIHsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGlmIChtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGxhdGZvcm1XaWRn
ZXQoKSkKLSAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCku
Y2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKKyAgICAgICAgbV9s
ZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxMZWdhY3lXZWJLaXRT
Y3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFp
bkZyYW1lQ29tcG9zaXRvcigpKTsKICNlbmRpZgogfQogCkBAIC02MTIsNyArNjEyLDcgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2go
Y29uc3QgR3JhcGhpY3NMYXllcioKIHsKICAgICBpZiAoIW1fbGF5ZXJVcGRhdGVyKSB7CiAgICAg
ICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9IHBhZ2UoKS5jaHJvbWUoKS5kaXNwbGF5
SUQoKTsKLSAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNz
TGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKKyAgICAgICAgbV9sYXllclVwZGF0ZXIg
PSBtYWtlVW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKICAg
ICB9CiAgICAgCiAgICAgbV9sYXllclVwZGF0ZXItPnNjaGVkdWxlVXBkYXRlKCk7CkBAIC00Nzky
LDcgKzQ3OTIsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6
OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogCiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBjb25zdHJhaW50czsKICAgICAgICAgaWYgKGxh
eWVyLT5yZW5kZXJlcigpLmlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGNv
bnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVy
KSk7CisgICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8U3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0
cmFpbnRzKCpsYXllcikpOwogICAgICAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIGVuY2xvc2lu
Z1RvdWNoU2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChjb21wb3Np
dG9yLmlzQXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5ZXIoKmxheWVyLCAmZW5jbG9zaW5nVG91Y2hT
Y3JvbGxhYmxlTGF5ZXIpICYmIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyKSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5pc0NvbXBv
c2l0ZWQoKSk7CkBAIC00ODAwLDcgKzQ4MDAsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGlu
Z0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwog
ICAgICAgICAgICAgICAgIHN0aWNreUNvbnRhaW5lck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+
Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJs
ZUxheWVyLT5iYWNraW5nKCktPnNjcm9sbENvbnRhaW5lckxheWVyKCktPnBsYXRmb3JtTGF5ZXIo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXItPnJlbmRlcmVyKCku
aXNGaXhlZFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtl
X3VuaXF1ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21w
dXRlRml4ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAgICAgICAgY29uc3Ry
YWludHMgPSBtYWtlVW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21w
b3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggYmY2NDVjZDQxYjg5MTIxMmQ3ZjVh
MzAzODZlZjljYTU0YmZhNDYwMi4uOGRkMDM5YmFmZGE2MzUzOGNlMzIxM2RjMzEzNTYwZmFhOGE0
YmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuaApAQCAtMTA3LDYgKzEwNyw3IEBAIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFNj
cm9sbENvb3JkaW5hdGlvblJvbGU+IGFsbFNjcm9sbENvb3JkaW5hdGlvblJvbGVzKCkKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiBjbGFzcyBMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNv
b3JkaW5hdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBM
ZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yKENocm9tZUNsaWVudCYgY2hyb21l
Q2xpZW50LCBib29sIGNvb3JkaW5hdGVWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKQogICAgICAg
ICA6IG1fY2hyb21lQ2xpZW50KGNocm9tZUNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAppbmRleCA0Yjg2ZmUyYWQxNzVk
Y2U4NmFkMzg1MmJkZmMxNTJmZDEzMDhkNDVlLi4xMjhjOTZkYWUwYjMxMDA2Y2EyNWQ1YTU2Yzcy
MGJjODkwZDM0ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKCkKIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
Y3JlYXRlTGF5ZXIoKQogewogICAgIEFTU0VSVCghbV9sYXllcik7Ci0gICAgbV9sYXllciA9IHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKKyAgICBtX2xheWVyID0gbWFrZVVu
aXF1ZTxSZW5kZXJMYXllcj4oKnRoaXMpOwogICAgIHNldEhhc0xheWVyKHRydWUpOwogICAgIG1f
bGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYmM1NTI3YjhjNDZhNGRlMDY2ZjY5ZTVhMzEw
Yzg4NjgxOTZmYzIzYS4uMWFhZTA5ZDAwYjI2ZWEzY2FkZWE4NjcyZTI3NzkyOWJmZDE3YTYyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTg5
LDcgKzg5LDcgQEAgaW50IFJlbmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFz
ZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwKIAogc3RkOjp1bmlxdWVfcHRyPElu
bGluZUVsZW1lbnRCb3g+IFJlbmRlckxpbmVCcmVhazo6Y3JlYXRlSW5saW5lQm94KCkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOwogfQogCiB2b2lkIFJl
bmRlckxpbmVCcmVhazo6c2V0SW5saW5lQm94V3JhcHBlcihJbmxpbmVFbGVtZW50Qm94KiBpbmxp
bmVCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5GbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
bkZsb3cuY3BwCmluZGV4IDliYjlhNTM5ZDY2NDJkZjkwMDI2YTc4MmFmOGNmODRkYzQ5ZGEyYTku
LjQxMDNkYWQ0ODQ0ZGQyNGEzMDJhNzMyYWYyMjE5YWM5MDAwMWNiYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCkBAIC00Miw3
ICs0Miw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJNdWx0aUNvbHVtbkZs
b3cpOwogCiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyhEb2N1
bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJGcmFnbWVu
dGVkRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3NwYW5uZXJNYXAoc3Rk
OjptYWtlX3VuaXF1ZTxTcGFubmVyTWFwPigpKQorICAgICwgbV9zcGFubmVyTWFwKG1ha2VVbmlx
dWU8U3Bhbm5lck1hcD4oKSkKICAgICAsIG1fbGFzdFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAg
LCBtX2NvbHVtbkNvdW50KDEpCiAgICAgLCBtX2NvbHVtbldpZHRoKDApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDRkYTNiZDczNzcxYmExNzE5MGVhYzM1
ZGE2MzhlMjQzZjE5MDI5MDcuLjBiZjUxOTNkZTQ4NDQ1YmNjNjc3ZTkxNGU4YWQzZGY4MWNlYjgy
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODkz
LDcgKzE4OTMsNyBAQCBjb25zdCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRhJiBS
ZW5kZXJPYmplY3Q6OnJhcmVEYXRhKCkgY29uc3QKIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0
UmFyZURhdGEmIFJlbmRlck9iamVjdDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIHNldEhhc1Jh
cmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10g
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10g
eyByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3It
PnZhbHVlOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
aW5kZXggNmQ1NmI1ZWNhMmM2YjI3NjhhZmJiMmQ0Y2ZmMGFjMDg4MmU5ZmRjNi4uMGRmZTI4Mjc2
NGY0MDhiNjIwYmVmNWQ5ZjU4ZTg4YTZjYzc2YzA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC01Myw3ICs1Myw3
IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik7
CiAKIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDog
UmVuZGVyRW1iZWRkZWRPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBtX3Nu
YXBzaG90UmVzb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQor
ICAgICwgbV9zbmFwc2hvdFJlc291cmNlKG1ha2VVbmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4o
KSkKIHsKICAgICBtX3NuYXBzaG90UmVzb3VyY2UtPmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggMTg2Y2E4NzBlZDEwOTEz
ZDU4Yjg1NDllYjk2ZGUzMzZlMzQ1NTM1OS4uZTkxYTEzMzcxOTkxMmQxOGZhNTVlMzZkODM1NTg4
NTdjMmQxOGIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBA
IC0xMzcsOSArMTM3LDkgQEAgdm9pZCBSZW5kZXJUYWJsZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHkKICAgICAgICAgLy8gQWNj
b3JkaW5nIHRvIHRoZSBDU1MyIHNwZWMsIHlvdSBvbmx5IHVzZSBmaXhlZCB0YWJsZSBsYXlvdXQg
aWYgYW4KICAgICAgICAgLy8gZXhwbGljaXQgd2lkdGggaXMgc3BlY2lmaWVkIG9uIHRoZSB0YWJs
ZS4gIEF1dG8gd2lkdGggaW1wbGllcyBhdXRvIHRhYmxlIGxheW91dC4KICAgICAgICAgaWYgKHN0
eWxlKCkudGFibGVMYXlvdXQoKSA9PSBUYWJsZUxheW91dFR5cGU6OkZpeGVkICYmICFzdHlsZSgp
LmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpKQotICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0
ZDo6bWFrZV91bmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CisgICAgICAgICAgICBtX3Rh
YmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxGaXhlZFRhYmxlTGF5b3V0Pih0aGlzKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8QXV0b1Rh
YmxlTGF5b3V0Pih0aGlzKTsKKyAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBtYWtlVW5pcXVl
PEF1dG9UYWJsZUxheW91dD4odGhpcyk7CiAgICAgfQogCiAgICAgLy8gSWYgYm9yZGVyIHdhcyBj
aGFuZ2VkLCBpbnZhbGlkYXRlIGNvbGxhcHNlZCBib3JkZXJzIGNhY2hlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGFhZDBjMTQ3ZjExZDM5YjNhZDE2Y2FkZGMx
NTNjMzIyZTkyZDdhMGEuLmI2MzA1ZGU1ZjYzMTZjNGRiMjYwYTc5OWNkMTE2YmJkMWFlNTQ0NTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEzMTEsNyArMTMx
MSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6ZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQog
CiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJv
eCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEJveD4oKnRoaXMp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlzKTsKIH0KIAogdm9p
ZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lVGV4dEJveCYgdGV4dEJveCkKQEAg
LTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0
VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwCiAgICAgICAgIHJldHVy
bjsKICAgICBhdXRvJiBzZWN1cmVUZXh0VGltZXIgPSBzZWN1cmVUZXh0VGltZXJzKCkuYWRkKHRo
aXMsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNlY3VyZVRleHRUaW1lcikK
LSAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxTZWN1cmVUZXh0VGlt
ZXI+KCp0aGlzKTsKKyAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gbWFrZVVuaXF1ZTxTZWN1cmVU
ZXh0VGltZXI+KCp0aGlzKTsKICAgICBzZWN1cmVUZXh0VGltZXItPnJlc3RhcnQob2Zmc2V0QWZ0
ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAKaW5kZXggYzE0NDUxYTE4ZWVhN2E1NzFhMjc3Nzg5OGE3OWNjOGI0M2ZmMzE0Mi4u
NWZlYzY3OGM2YmI1ZGYwZTQ5MjJiMDEyYzNmMjY4ZGJhYjRhN2I2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHZvaWQgUmVuZGVy
Vmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYgcmVwYWludFJlY3Qp
IGNvbnN0CiAgICAgLy8gRklYTUU6IE1heWJlIHRoZXJlIHNob3VsZCBiZSBhIHJlZ2lvbiB0eXBl
IHRoYXQgZG9lcyB0aGlzIGF1dG9tYXRpY2FsbHkuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUgPSAxNiAqIDE2OwogICAgIGlmIChtX2FjY3Vt
dWxhdGVkUmVwYWludFJlZ2lvbi0+Z3JpZFNpemUoKSA+IG1heGltdW1SZXBhaW50UmVnaW9uR3Jp
ZFNpemUpCi0gICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMoKSk7CisgICAg
ICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gbWFrZVVuaXF1ZTxSZWdpb24+KG1fYWNj
dW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMoKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6
Zmx1c2hBY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24oKSBjb25zdApAQCAtNzI0LDcgKzcyNCw3IEBA
IGJvb2wgUmVuZGVyVmlldzo6dXNlc0NvbXBvc2l0aW5nKCkgY29uc3QKIFJlbmRlckxheWVyQ29t
cG9zaXRvciYgUmVuZGVyVmlldzo6Y29tcG9zaXRvcigpCiB7CiAgICAgaWYgKCFtX2NvbXBvc2l0
b3IpCi0gICAgICAgIG1fY29tcG9zaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJD
b21wb3NpdG9yPigqdGhpcyk7CisgICAgICAgIG1fY29tcG9zaXRvciA9IG1ha2VVbmlxdWU8UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fY29tcG9zaXRvcjsK
IH0KQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bAogSW1hZ2VRdWFs
aXR5Q29udHJvbGxlciYgUmVuZGVyVmlldzo6aW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpCiB7CiAg
ICAgaWYgKCFtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIpCi0gICAgICAgIG1faW1hZ2VRdWFsaXR5
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4oKnRo
aXMpOworICAgICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEltYWdl
UXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1hZ2VRdWFsaXR5Q29u
dHJvbGxlcjsKIH0KIApAQCAtODM0LDcgKzgzNCw3IEBAIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdp
b25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKFJlbmRlclZpZXcqIHZpZXcp
CiAKICAgICBtX3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRSZWdpb24gPSAhIXJvb3RSZW5kZXJWaWV3
LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbjsKICAgICBpZiAoIW1fd2FzQWNjdW11bGF0aW5n
UmVwYWludFJlZ2lvbikKLSAgICAgICAgcm9vdFJlbmRlclZpZXctPm1fYWNjdW11bGF0ZWRSZXBh
aW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KCk7CisgICAgICAgIHJvb3RSZW5k
ZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPigp
OwogICAgIG1fcm9vdFZpZXcgPSBtYWtlV2Vha1B0cigqcm9vdFJlbmRlclZpZXcpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggZmRjZDU5YzUy
YzVmMzI4ZjUyMDlmMDBjMWY4ZDgxNmFkYzVmNzY2OC4uNDQ1NTg0MWFmMzJmZjE1MjUyY2ZhMjhl
ZDhhNjljM2U0OWYxZjMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIGZsb2F0IFJvb3RJbmxpbmVCb3g6OnBsYWNlRWxs
aXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsICBib29sIGx0ciwgZmxvCiAgICAg
ICAgIGdFbGxpcHNpc0JveE1hcCA9IG5ldyBFbGxpcHNpc0JveE1hcCgpOwogCiAgICAgQVNTRVJU
KCFoYXNFbGxpcHNpc0JveCgpKTsKLSAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0Jv
eE1hcC0+c2V0KHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygp
LCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBC
b3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RC
b3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
KyAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIG1ha2VV
bmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBz
aXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxv
Z2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1
cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICBzZXRIYXNFbGxpcHNpc0JveCh0cnVl
KTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBhbiBSVEwgdmVyc2lvbiBvZiB0aGlzPwogICAg
IGlmIChsdHIgJiYgKHgoKSArIGxvZ2ljYWxXaWR0aCgpICsgZWxsaXBzaXNXaWR0aCkgPD0gYmxv
Y2tSaWdodEVkZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmlu
ZGV4IDdkZjI4Mjg4YTRkNTVjMmM3ZDI2YWQ0YmMwMTc2ZDBiNzYxNzgzNjQuLjI0N2U1NWMwNjll
OWZlODgxY2FmNGJmYmMyYjRhZWYxOWUzNjE3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guaApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFJvb3RJbmxpbmVCb3gg
OiBwdWJsaWMgSW5saW5lRmxvd0JveCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJvb3RJbmxpbmVC
b3g+CiAgICAgICAgIGlmIChtX2Zsb2F0cykKICAgICAgICAgICAgIG1fZmxvYXRzLT5hcHBlbmQo
bWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9m
bG9hdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENsZWFuTGluZUZsb2F0TGlzdD4oMSwgbWFrZVdlYWtQ
dHIoZmxvYXRpbmdCb3gpKTsKKyAgICAgICAgICAgIG1fZmxvYXRzID0gbWFrZVVuaXF1ZTxDbGVh
bkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94KSk7CiAgICAgfQogCiAg
ICAgdm9pZCByZW1vdmVGbG9hdChSZW5kZXJCb3gmIGZsb2F0aW5nQm94KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAppbmRleCBlYzVlNzM1NmE2
NGQxMjQ5ZGRhMTE0N2U4YmJhMzFmNDc5MGI0YmYyLi5iOWJhZDBhMDlmMjliZjdhZGM5ZDMzM2Y0
ZTgxMWMzZWExYjkzZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0
aW9uUmFuZ2VEYXRhLmNwcApAQCAtMTMxLDEzICsxMzEsMTMgQEAgc3RhdGljIFNlbGVjdGlvbkRh
dGEgY29sbGVjdChjb25zdCBTZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRleHQmIHNlbGVjdGlvbiwg
Ym9vbAogICAgIHdoaWxlIChzdGFydCAmJiBzdGFydCAhPSBzdG9wKSB7CiAgICAgICAgIGlmIChp
c1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKnN0YXJ0LCBzZWxlY3Rpb24pKSB7CiAgICAgICAg
ICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5k
IG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAg
IG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwgc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKKyAgICAgICAgICAgIG9sZFNlbGVj
dGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25J
bmZvPigqc3RhcnQsIHRydWUpKTsKICAgICAgICAgICAgIGlmIChyZXBhaW50RGlmZmVyZW5jZSkg
ewogICAgICAgICAgICAgICAgIGZvciAoYXV0byogYmxvY2sgPSBjb250YWluaW5nQmxvY2tCZWxv
d1ZpZXcoKnN0YXJ0KTsgYmxvY2s7IGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpi
bG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgYmxvY2tJbmZvID0gb2xkU2VsZWN0
aW9uRGF0YS5ibG9ja3MuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGJs
b2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjEzLDEzICsy
MTMsMTMgQEAgSW50UmVjdCBTZWxlY3Rpb25SYW5nZURhdGE6OmNvbGxlY3RCb3VuZHMoQ2xpcFRv
VmlzaWJsZUNvbnRlbnQgY2xpcFRvVmlzaWJsZUNvbnQKICAgICAgICAgaWYgKChzdGFydC0+Y2Fu
QmVTZWxlY3Rpb25MZWFmKCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LnN0YXJ0KCkg
fHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQogICAgICAgICAgICAgJiYgc3Rh
cnQtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lKSB7CiAg
ICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdh
cHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KLSAgICAg
ICAgICAgIHJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0
aW9uSW5mbz4oKnN0YXJ0LCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBDbGlwVG9WaXNpYmxlQ29u
dGVudDo6WWVzKSk7CisgICAgICAgICAgICByZW5kZXJlcnMuc2V0KHN0YXJ0LCBtYWtlVW5pcXVl
PFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xp
cFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOwogICAgICAgICAgICAgYXV0byogYmxvY2sgPSBzdGFy
dC0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGlsZSAoYmxvY2sgJiYgIWlzPFJl
bmRlclZpZXc+KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IHJlbmRlcmVycy5hZGQoYmxvY2ssIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpibG9jaywgY2xpcFRvVmlzaWJsZUNv
bnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olllcyk7CisgICAgICAgICAgICAgICAgYmxv
Y2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zp
c2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOwogICAgICAgICAgICAg
ICAgIGJsb2NrID0gYmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5
KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tSZXAKICAgICBz
ZWxlY3Rpb25JdGVyYXRvciA9IFNlbGVjdGlvbkl0ZXJhdG9yKHNlbGVjdGlvblN0YXJ0KTsKICAg
ICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvblN0YXJ0OyBjdXJyZW50UmVu
ZGVyZXIgJiYgY3VycmVudFJlbmRlcmVyICE9IHNlbGVjdGlvbkVuZDsgY3VycmVudFJlbmRlcmVy
ID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVy
ZXJGb3JTZWxlY3Rpb24oKmN1cnJlbnRSZW5kZXJlciwgbV9zZWxlY3Rpb25Db250ZXh0KSkgewot
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlv
bkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVu
ZGVyZXIsIHRydWUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlv
bkluZm8+IHNlbGVjdGlvbkluZm8gPSBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpj
dXJyZW50UmVuZGVyZXIsIHRydWUpOwogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogICAg
ICAgICAgICAgZm9yIChhdXRvJiByZWN0IDogc2VsZWN0aW9uSW5mby0+Y29sbGVjdGVkU2VsZWN0
aW9uUmVjdHMoKSkKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRS
ZWN0KHNlbGVjdGlvbkluZm8tPnJlcGFpbnRDb250YWluZXIoKSwgcmVjdCk7CkBAIC0yOTQsNyAr
Mjk0LDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5l
d1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tSZXAKICAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gbmV3U2VsZWN0
ZWRCbG9ja3MuYWRkKGNvbnRhaW5pbmdCbG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwog
ICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxv
Y2tTZWxlY3Rpb25JbmZvPigqY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgICAgICAgICBibG9j
a0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmNvbnRhaW5pbmdC
bG9jayk7CiAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrID0gY29udGFpbmluZ0Jsb2Nr
LT5jb250YWluaW5nQmxvY2soKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAg
ICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRHYXBSZWN0cyhibG9ja0luZm8t
PnJlcGFpbnRDb250YWluZXIoKSwgYmxvY2tJbmZvLT5yZWN0cygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCA4Yzc2NmU2ZGUyYzc0YWQw
Mzc5NzMzMzFmYzdmNWE0NzQ5MDE1YjhlLi5jMzYyZjRlNTdiMDBmOWNlMzlhNzNlY2U4MTFjMmM4
MzJkNjUwYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXQuY3BwCkBAIC05OTcsNyArOTk3LDcgQEAgTGF5b3V0OjpMYXlvdXQoY29uc3QgUnVuVmVjdG9y
JiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3VudCwgY29uc3QgUmVuZGVyQmxvY2sKIGNvbnN0
IFJ1blJlc29sdmVyJiBMYXlvdXQ6OnJ1blJlc29sdmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cnVuUmVzb2x2ZXIpCi0gICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7CisgICAgICAgIG1fcnVuUmVz
b2x2ZXIgPSBtYWtlVW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhp
cyk7CiAgICAgcmV0dXJuICptX3J1blJlc29sdmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggMWJm
OThlNGVlYjQzYmEyMmNkYTRlNmY1ZDNiYzJhNWY5ZmM0YjRiNy4uMDYyNWIxNmJkNTQzMTk3M2Vk
MzFkZTk5OGFlZDg4OWIwMTJiYTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBA
IHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0
JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0
YT4gZGVidWdTaGFkb3cgPSBudWxscHRyOwogICAgIGlmIChmbG93LnNldHRpbmdzKCkuc2ltcGxl
TGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkgewotICAgICAgICBkZWJ1Z1NoYWRvdyA9
IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoMCwgMCksIDEwLCAyMCwgU2hh
ZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3IoMCwgMjU1LCAwLCAyMDApKTsKKyAgICAgICAg
ZGVidWdTaGFkb3cgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwg
MjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CiAg
ICAgICAgIHRleHRQYWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRvdy5nZXQoKSk7CiAgICAgfQog
CkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBnZW5lcmF0ZUxpbmVCb3hUcmVlKFJlbmRlckJsb2Nr
RmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiAgICAgICAgIEJpZGlSdW5MaXN0PEJp
ZGlSdW4+IGJpZGlSdW5zOwogICAgICAgICBmb3IgKGF1dG8gaXQgPSByYW5nZS5iZWdpbigpOyBp
dCAhPSByYW5nZS5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgYXV0byBydW4gPSAqaXQ7Ci0g
ICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihy
dW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3Qm
PihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsK
KyAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlSdW4+KHJ1bi5s
b2NhbFN0YXJ0KCksIHJ1bi5sb2NhbEVuZCgpLCBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJ1
bi5yZW5kZXJlcigpKSwgYmlkaUNvbnRleHQucHRyKCksIFVfTEVGVF9UT19SSUdIVCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgTGluZUluZm8gbGluZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAppbmRleCAzYmExMzBkNDU1OWQ3MjkyZDg5MWY1NTNj
ZjE0ODBmODY2YmIyYmFkLi40YjQzZTZhY2JlMGVlZGFmNGVhZjRkMmU1ZDVhNDQ2MzkwNjA1M2Vl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAKQEAgLTIy
NSw3ICsyMjUsNyBAQCB2b2lkIFRleHRBdXRvU2l6aW5nOjphZGRUZXh0Tm9kZShUZXh0JiBub2Rl
LCBmbG9hdCBjYW5kaWRhdGVTaXplKQogICAgIExPRyhUZXh0QXV0b3NpemluZywgIiBhZGRBdXRv
U2l6ZWROb2RlICVwIGNhbmRpZGF0ZVNpemU9JWYiLCAmbm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3RleHROb2Rlcy5hZGQ8VGV4dEF1dG9TaXppbmdIYXNoVHJh
bnNsYXRvcj4obm9kZS5yZW5kZXJlcigpLT5zdHlsZSgpLCBudWxscHRyKTsKICAgICBpZiAoYWRk
UmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7CisgICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7CiAg
ICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkVGV4dE5vZGUobm9kZSwgY2FuZGlkYXRl
U2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2Vy
LmNwcAppbmRleCAyYjFjMWZhMDNjYTFjNTc1NjkwMjc3YTVlODEyODcxMDEwZDQ0NjdlLi5kMTE2
NjE1YTcyNmM1YTBhOTQzZDliOWY2ZTA5NDBiOTVlNjkwOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQg
TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJl
c29sdmVyLCBMaW5lSW5mbyYKICAgICAgICAgaWYgKG9iamVjdC5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSkgewogICAgICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25zKG1fYmxvY2ssIGRvd25jYXN0
PFJlbmRlckJveD4ob2JqZWN0KSwgd2lkdGguc2hvdWxkSW5kZW50VGV4dCgpKTsKICAgICAgICAg
ICAgIGlmIChvYmplY3Quc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgewot
ICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMoKS5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1
ZTxCaWRpUnVuPigwLCAxLCBvYmplY3QsIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGly
KCkpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKG1ha2VVbmlx
dWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRp
cigpKSk7CiAgICAgICAgICAgICAgICAgbGluZUluZm8uaW5jcmVtZW50UnVuc0Zyb21MZWFkaW5n
V2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKG9iamVjdC5p
c0Zsb2F0aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVy
U2hhcGUuY3BwCmluZGV4IDRiMTU5N2U5ZjIxYzljZDRiMmYwZDg4MzQ3NDQ3NzVmMWQ4YmRlMDEu
LmQ1MjA5MmI2OGVkOGUyYzhmZGE1MTVjOTBjZDUyMjM1NmQ2NTVjMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIEludFNoYXBlSW50ZXJ2YWwgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3I6OmludGVydmFsQXQo
aW50IHkpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3Rl
clNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMoaW50IHNoYXBlTWFy
Z2luKSBjb25zdAogewogICAgIGludCBtYXJnaW5JbnRlcnZhbHNTaXplID0gKG9mZnNldCgpID4g
c2hhcGVNYXJnaW4pID8gc2l6ZSgpIDogc2l6ZSgpIC0gb2Zmc2V0KCkgKiAyICsgc2hhcGVNYXJn
aW4gKiAyOwotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUlu
dGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNl
dCgpKSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxz
PihtYXJnaW5JbnRlcnZhbHNTaXplLCBzdGQ6Om1heChzaGFwZU1hcmdpbiwgb2Zmc2V0KCkpKTsK
ICAgICBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvciBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvcihzaGFw
ZU1hcmdpbik7CiAKICAgICBmb3IgKGludCB5ID0gYm91bmRzKCkueSgpOyB5IDwgYm91bmRzKCku
bWF4WSgpOyArK3kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAK
aW5kZXggMzAyMzFhMGJlMWJiYzYzZTRiZTNkMjUwNTEyYmVkM2QxOTU5NDA5OS4uZjVlZmVmZGQz
MmIzMDU0N2FkYmQ4ZWIwOGY1NGU2M2IwMjQwZmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTQ2LDI0ICs0NiwyNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVJbnNldFNoYXBlKGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIGJvdW5kcykKIHsKICAgICBBU1NFUlQoYm91bmRzLnJlY3QoKS53
aWR0aCgpID49IDAgJiYgYm91bmRzLnJlY3QoKS5oZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxCb3hTaGFwZT4oYm91bmRzKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4g
Y3JlYXRlQ2lyY2xlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBmbG9hdCByYWRpdXMp
CiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpdXMsIGNlbnRlci55
KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1
cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY3RhbmdsZVNoYXBlPihGbG9hdFJlY3QoY2Vu
dGVyLngoKSAtIHJhZGl1cywgY2VudGVyLnkoKSAtIHJhZGl1cywgcmFkaXVzKjIsIHJhZGl1cyoy
KSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShjb25zdCBGbG9hdFBvaW50JiBjZW50ZXIsIGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiB7CiAgICAgQVNTRVJUKHJhZGlpLndpZHRoKCkgPj0gMCAm
JiByYWRpaS5oZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0
YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIu
eSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiks
IHJhZGlpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0
KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCks
IHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKIH0KIAogc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlUG9seWdvblNoYXBlKHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2x5Z29uU2hhcGU+KFdURk1vdmUodmVydGljZXMp
LCBmaWxsUnVsZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3Zl
KHZlcnRpY2VzKSwgZmlsbFJ1bGUpOwogfQogCiBzdGF0aWMgaW5saW5lIEZsb2F0UmVjdCBwaHlz
aWNhbFJlY3RUb0xvZ2ljYWwoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsb2dpY2FsQm94
SGVpZ2h0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlJiBi
YXNpY1NoYXBlLCBjb25zdCBMYQogICAgICAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYgdmFsdWVz
ID0gcG9seWdvbi52YWx1ZXMoKTsKICAgICAgICAgc2l6ZV90IHZhbHVlc1NpemUgPSB2YWx1ZXMu
c2l6ZSgpOwogICAgICAgICBBU1NFUlQoISh2YWx1ZXNTaXplICUgMikpOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8
RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHZhbHVlc1NpemU7IGkgKz0gMikgewogICAgICAgICAgICAgRmxvYXRQb2ludCB2ZXJ0
ZXgoCiAgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aCh2YWx1ZXMuYXQoaSksIGJv
eFdpZHRoKSwKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBl
OjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogCiAg
ICAgSW50UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChpbWFnZVIpOwogICAgIEludFJl
Y3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwotICAgIGF1dG8gaW50ZXJ2
YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5o
ZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKKyAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlx
dWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0
LnkoKSk7CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUg
dW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUo
KSwgVW5hY2NlbGVyYXRlZCk7CiAKQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVz
aG9sZCwgYwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byByYXN0ZXJTaGFwZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UmFzdGVyU2hhcGU+KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5z
aXplKCkpOworICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihX
VEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKICAgICByYXN0ZXJTaGFwZS0+
bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9
IG1hcmdpbjsKICAgICByZXR1cm4gcmFzdGVyU2hhcGU7CkBAIC0yMzAsNyArMjMwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlQm94U2hhcGUoY29uc3QgUm91bmRlZFJl
Y3QmIHJvdW5kZWRSZWN0LCBXcmkKIAogICAgIEZsb2F0UmVjdCByZWN0KDAsIDAsIHJvdW5kZWRS
ZWN0LnJlY3QoKS53aWR0aCgpLCByb3VuZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkpOwogICAgIEZs
b2F0Um91bmRlZFJlY3QgYm91bmRzKHJlY3QsIHJvdW5kZWRSZWN0LnJhZGlpKCkpOwotICAgIGF1
dG8gc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJveFNoYXBlPihib3VuZHMpOworICAgIGF1dG8g
c2hhcGUgPSBtYWtlVW5pcXVlPEJveFNoYXBlPihib3VuZHMpOwogICAgIHNoYXBlLT5tX3dyaXRp
bmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgc2hhcGUtPm1fbWFyZ2luID0gbWFyZ2luOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUlu
Zm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5o
CmluZGV4IGNkOTRmODljMDJiMGI4YzEzNTE5NDU3ZTQ0ZDBkZGFmNmQ4N2YxZmEuLjk0ODQzMTcx
OTQ3YzAyMzA5YWI3ZjRmYjFiOTdjMjYzODgyZWUzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBAIC0xMTMsNyArMTEzLDcg
QEAgY2xhc3MgU2hhcGVPdXRzaWRlSW5mbyBmaW5hbCB7CiAgICAgICAgIEluZm9NYXAmIGluZm9N
YXAgPSBTaGFwZU91dHNpZGVJbmZvOjppbmZvTWFwKCk7CiAgICAgICAgIGlmIChTaGFwZU91dHNp
ZGVJbmZvKiBpbmZvID0gaW5mb01hcC5nZXQoJmtleSkpCiAgICAgICAgICAgICByZXR1cm4gKmlu
Zm87Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQoJmtleSwgc3RkOjptYWtlX3Vu
aXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBpbmZv
TWFwLmFkZCgma2V5LCBtYWtlVW5pcXVlPFNoYXBlT3V0c2lkZUluZm8+KGtleSkpOwogICAgICAg
ICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogICAgIHN0YXRpYyB2b2lk
IHJlbW92ZUluZm8oY29uc3QgUmVuZGVyQm94JiBrZXkpIHsgaW5mb01hcCgpLnJlbW92ZSgma2V5
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hh
cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAK
aW5kZXggMGM5OGY5MTY2ZjdlMTUyOTcwM2JjZGIyYzhjODNjYzgwYmI3YmYyNC4uNzQ0YzkwYjhm
YjNmNTI3NjhhNTM4ZDIxMzU4MzYyY2E2MzQ4MjdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgUmVmPEJh
c2ljU2hhcGU+IEJhc2ljU2hhcGVQYXRoOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBk
b3VibGUgcHJvZ3Jlc3MpIGMKIAogICAgIGF1dG8mIGZyb21QYXRoID0gZG93bmNhc3Q8QmFzaWNT
aGFwZVBhdGg+KGZyb20pOwogCi0gICAgYXV0byByZXN1bHRpbmdQYXRoQnl0ZXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOworICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5
dGVzID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBidWlsZEFuaW1hdGVk
U1ZHUGF0aEJ5dGVTdHJlYW0oKmZyb21QYXRoLm1fYnl0ZVN0cmVhbSwgKm1fYnl0ZVN0cmVhbSwg
KnJlc3VsdGluZ1BhdGhCeXRlcywgcHJvZ3Jlc3MpOwogCiAgICAgYXV0byByZXN1bHQgPSBCYXNp
Y1NoYXBlUGF0aDo6Y3JlYXRlKFdURk1vdmUocmVzdWx0aW5nUGF0aEJ5dGVzKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCmluZGV4IGU3YmIwNjE2NTAy
ZDk5ZDZkYjQzOTJiYjQ2OGE5YWI0NjljZTQ5NGEuLjJjMTJkZDliNDBkZDQwYjNjMGJmNjc0OTMy
MmFlMmIwZmQxZTA3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250
ZW50RGF0YS5oCkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIEltYWdlQ29udGVudERhdGEgZmluYWwg
OiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0
ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmlu
YWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29u
c3QgZmluYWwKICAgICB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElt
YWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKKyAgICAgICAgYXV0byBpbWFnZSA9
IG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4obV9pbWFnZS5jb3B5UmVmKCkpOwogICAgICAg
ICBpbWFnZS0+c2V0QWx0VGV4dChhbHRUZXh0KCkpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAg
ICAgfQpAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNzIFRleHRDb250ZW50RGF0YSBmaW5hbCA6IHB1
YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVj
dD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBj
b25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJu
YWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0
YT4obV90ZXh0KTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRl
cm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPiht
X3RleHQpOyB9CiAKICAgICBTdHJpbmcgbV90ZXh0OwogfTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBj
bGFzcyBDb3VudGVyQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogICAg
IFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oc3RkOjptYWtlX3VuaXF1
ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENvdW50ZXJDb250ZW50RGF0YT4obWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigp
KSk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBtX2NvdW50
ZXI7CkBAIC0xOTAsNyArMTkwLDcgQEAgY2xhc3MgUXVvdGVDb250ZW50RGF0YSBmaW5hbCA6IHB1
YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlck9iamVj
dD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBj
b25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJu
YWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RlQ29udGVudERh
dGE+KHF1b3RlKCkpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUlu
dGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRh
PihxdW90ZSgpKTsgfQogCiAgICAgUXVvdGVUeXBlIG1fcXVvdGU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAppbmRleCBmM2Q5MWRjOGRiYzhkOWU0
NmM2MDFiOTU4NDNiOWE5NTJmM2IyZDFkLi4zMDAxNGQwNGY3MGZiOTE4MTc0Mjg3NjAzZmRlYWI3
MjM5NTYxNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVy
LmNwcApAQCAtNzYsNyArNzYsNyBAQCBGaWxsTGF5ZXI6OkZpbGxMYXllcihGaWxsTGF5ZXJUeXBl
IHR5cGUpCiB9CiAKIEZpbGxMYXllcjo6RmlsbExheWVyKGNvbnN0IEZpbGxMYXllciYgbykKLSAg
ICA6IG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigqby5tX25l
eHQpIDogbnVsbHB0cikKKyAgICA6IG1fbmV4dChvLm1fbmV4dCA/IG1ha2VVbmlxdWU8RmlsbExh
eWVyPigqby5tX25leHQpIDogbnVsbHB0cikKICAgICAsIG1faW1hZ2Uoby5tX2ltYWdlKQogICAg
ICwgbV94UG9zaXRpb24oby5tX3hQb3NpdGlvbikKICAgICAsIG1feVBvc2l0aW9uKG8ubV95UG9z
aXRpb24pCkBAIC0xMTcsNyArMTE3LDcgQEAgRmlsbExheWVyOjp+RmlsbExheWVyKCkKIAogRmls
bExheWVyJiBGaWxsTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBGaWxsTGF5ZXImIG8pCiB7Ci0gICAg
bV9uZXh0ID0gby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0
KSA6IG51bGxwdHI7CisgICAgbV9uZXh0ID0gby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXll
cj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CiAKICAgICBtX2ltYWdlID0gby5tX2ltYWdlOwogICAg
IG1feFBvc2l0aW9uID0gby5tX3hQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDI0OWJhNDdlNTg0M2VjYzYyZTZmZDRmMjZh
ZjFjZjUzOGExNjNmOWMuLmZiNDNjMjBlNWNlOTllY2UxOWY0NTJmZDlmODc5NjRkODE0YmI3YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApA
QCAtMTA5LDcgKzEwOSw3IEBAIFJlbmRlclN0eWxlIFJlbmRlclN0eWxlOjpjbG9uZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVy
U3R5bGU6OmNsb25lUHRyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKIH0KIAogUmVuZGVyU3R5bGUg
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3QgUmVuZGVy
U3R5bGUmIHBhcmVudFN0eWxlLCBEaXNwbGF5VHlwZSBkaXNwbGF5KQpAQCAtNDA5LDcgKzQwOSw3
IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwc2V1CiAgICAgUmVuZGVyU3R5bGUqIHJlc3VsdCA9IHBz
ZXVkby5nZXQoKTsKIAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMpCi0gICAgICAgIG1f
Y2FjaGVkUHNldWRvU3R5bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQc2V1ZG9TdHlsZUNhY2hlPigp
OworICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IG1ha2VVbmlxdWU8UHNldWRvU3R5bGVD
YWNoZT4oKTsKIAogICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzLT5hcHBlbmQoV1RGTW92ZShwc2V1
ZG8pKTsKIApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3VzdG9t
UGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBhdXRvJiBkYXRh
ID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKICAgICBpZiAoIWRhdGEuY3VzdG9t
UGFpbnRXYXRjaGVkUHJvcGVydGllcykKLSAgICAgICAgZGF0YS5jdXN0b21QYWludFdhdGNoZWRQ
cm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CisgICAgICAg
IGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxT
dHJpbmc+PigpOwogICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcy0+YWRkKG5h
bWUpOwogfQogCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250
ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlLCBib29sIGFkZCkKIHsKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPElt
YWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkpLCBhZGQpOworICAgIHNldENv
bnRlbnQobWFrZVVuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgp
KSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChjb25zdCBTdHJpbmcm
IHN0cmluZywgYm9vbCBhZGQpCkBAIC0xMzEwLDEzICsxMzEwLDEzIEBAIHZvaWQgUmVuZGVyU3R5
bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgYWRkKQogICAgIGlmIChh
ZGQgJiYgZGF0YS5jb250ZW50KSB7CiAgICAgICAgIGF1dG8mIGxhc3QgPSBsYXN0Q29udGVudCgq
ZGF0YS5jb250ZW50KTsKICAgICAgICAgaWYgKCFpczxUZXh0Q29udGVudERhdGE+KGxhc3QpKQot
ICAgICAgICAgICAgbGFzdC5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRh
PihzdHJpbmcpKTsKKyAgICAgICAgICAgIGxhc3Quc2V0TmV4dChtYWtlVW5pcXVlPFRleHRDb250
ZW50RGF0YT4oc3RyaW5nKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byYgdGV4
dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KGxhc3QpOwogICAgICAgICAgICAg
dGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVudC50ZXh0KCkgKyBzdHJpbmcpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YS5jb250ZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7CisgICAgICAgIGRhdGEuY29udGVudCA9IG1ha2VV
bmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOwogICAgICAgICBhdXRvJiBhbHRUZXh0ID0g
ZGF0YS5hbHRUZXh0OwogICAgICAgICBpZiAoIWFsdFRleHQuaXNOdWxsKCkpCiAgICAgICAgICAg
ICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0VGV4dCk7CkBAIC0xMzI3LDEyICsxMzI3LDEy
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJD
b250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKIHsKICAgICBpZiAoIWNvdW50ZXIpCiAgICAgICAg
IHJldHVybjsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnRE
YXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1ha2VVbmlxdWU8
Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsKIH0KIAogdm9pZCBS
ZW5kZXJTdHlsZTo6c2V0Q29udGVudChRdW90ZVR5cGUgcXVvdGUsIGJvb2wgYWRkKQogewotICAg
IHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFk
ZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKSwg
YWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudEFsdFRleHQoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBDb3VudGVyRGlyZWN0aXZlTWFwJiBS
ZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKQogewogICAgIGF1dG8mIG1hcCA9
IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY291bnRlckRpcmVjdGl2ZXM7CiAgICAg
aWYgKCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2
ZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFrZVVuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigp
OwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0xNjcxLDE0ICsxNjcxLDE0IEBAIHZvaWQgUmVu
ZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIEFuaW1hdGlvbkxpc3QmIFJlbmRlclN0eWxl
OjplbnN1cmVBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCkuYW5pbWF0aW9ucykKLSAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS5hbmltYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0PigpOworICAg
ICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1hdGlvbnMgPSBtYWtlVW5p
cXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5hbmltYXRpb25zOwogfQogCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJlVHJh
bnNpdGlvbnMoKQogewogICAgIGlmICghbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50
cmFuc2l0aW9ucykKLSAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFu
c2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IG1ha2VVbmlxdWU8QW5p
bWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRyYW5z
aXRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
VkdSZW5kZXJTdHlsZURlZnMuY3BwCmluZGV4IDIwYjJhODExNGIwYzhlOWViZDQ4MjcwNzlhOTgy
MGYyZWMwZGNkYzIuLjZlMzdjZjhmYjhhYmE1NWVjMzMwYTk2MDMzYThhOTU0YzdjYjA0YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURl
ZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZURlZnMuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgU3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNo
YWRvd1NWR0RhdGEoKQogCiBpbmxpbmUgU3R5bGVTaGFkb3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NW
R0RhdGEoY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQ8
U3R5bGVTaGFkb3dTVkdEYXRhPigpCi0gICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gc3RkOjpt
YWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBz
aGFkb3cob3RoZXIuc2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93
KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcAppbmRleCAzZDYxYzk0YzAxNjYxNjA4NThkYWJkODQwOWZjNDA4NjcwZTUw
MWNhLi5jMTdlYWY4NTliMGJmYWE3ZGFiYzAwOGQ0ZTc0MGZjNjMwYTRiODM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCkBAIC0zMyw3ICszMyw3
IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEoY29uc3QgU2hhZG93RGF0YSYgbykKICAgICAsIG1f
Y29sb3Ioby5tX2NvbG9yKQogICAgICwgbV9zdHlsZShvLm1fc3R5bGUpCiAgICAgLCBtX2lzV2Vi
a2l0Qm94U2hhZG93KG8ubV9pc1dlYmtpdEJveFNoYWRvdykKLSAgICAsIG1fbmV4dChvLm1fbmV4
dCA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8ubV9uZXh0KSA6IG51bGxwdHIpCisg
ICAgLCBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkg
OiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggYWQyY2JkOTU3ZWVmODI1
NjBjZmIzNTJlOWY1MGIzOWU2MzNhMjZmZi4uOTZkYmJhMDA3ZTZhNjRhN2Q2OTdhMjlhMjFkNjIx
YWQ0NDc1NGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIGlubGlu
ZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0
eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKG8u
dmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcikKICAgICAsIGNhcmV0Q29sb3Ioby5jYXJldENv
bG9yKQogICAgICwgdmlzaXRlZExpbmtDYXJldENvbG9yKG8udmlzaXRlZExpbmtDYXJldENvbG9y
KQotICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRv
d0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIHRleHRTaGFkb3coby50ZXh0
U2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hhZG93KSA6IG51bGxwdHIp
CiAgICAgLCBjdXJzb3JEYXRhKG8uY3Vyc29yRGF0YSkKICAgICAsIGluZGVudChvLmluZGVudCkK
ICAgICAsIGVmZmVjdGl2ZVpvb20oby5lZmZlY3RpdmVab29tKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
Y3BwCmluZGV4IDZmYmIyYjdiMGMzZWIwM2U4NjlhMWVhYWM5MTYxMTE5YzljNjFlOWIuLmJkZDAx
OTE1YWEyNzhkZDZhNjY0OGZmNGMzZmJkYjNmY2NkMTQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHAKQEAgLTEzOSwxMyArMTM5LDEzIEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAg
LCBzY3JvbGxTbmFwQXJlYShvLnNjcm9sbFNuYXBBcmVhKQogI2VuZGlmCiAgICAgLCBjb250ZW50
KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xvbmUoKSA6IG51bGxwdHIpCi0gICAgLCBjb3VudGVy
RGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVzID8gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVy
RGlyZWN0aXZlTWFwPigqby5jb3VudGVyRGlyZWN0aXZlcykgOiBudWxscHRyKQorICAgICwgY291
bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IG1ha2VVbmlxdWU8Q291bnRlckRp
cmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKICAgICAsIGFsdFRl
eHQoby5hbHRUZXh0KQotICAgICwgYm94U2hhZG93KG8uYm94U2hhZG93ID8gc3RkOjptYWtlX3Vu
aXF1ZTxTaGFkb3dEYXRhPigqby5ib3hTaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIGJveFNoYWRv
dyhvLmJveFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51
bGxwdHIpCiAgICAgLCB3aWxsQ2hhbmdlKG8ud2lsbENoYW5nZSkKICAgICAsIGJveFJlZmxlY3Qo
by5ib3hSZWZsZWN0KQotICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBzdGQ6Om1ha2Vf
dW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKLSAgICAsIHRy
YW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+
KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCisgICAgLCBhbmltYXRpb25zKG8uYW5pbWF0aW9u
cyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8uYW5pbWF0aW9ucykgOiBudWxscHRyKQor
ICAgICwgdHJhbnNpdGlvbnMoby50cmFuc2l0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlz
dD4oKm8udHJhbnNpdGlvbnMpIDogbnVsbHB0cikKICAgICAsIG1hc2soby5tYXNrKQogICAgICwg
bWFza0JveEltYWdlKG8ubWFza0JveEltYWdlKQogICAgICwgcGFnZVNpemUoby5wYWdlU2l6ZSkK
QEAgLTE3MCw3ICsxNzAsNyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwganVzdGlm
eUl0ZW1zKG8uanVzdGlmeUl0ZW1zKQogICAgICwganVzdGlmeVNlbGYoby5qdXN0aWZ5U2VsZikK
ICAgICAsIGN1c3RvbVByb3BlcnRpZXMoby5jdXN0b21Qcm9wZXJ0aWVzKQotICAgICwgY3VzdG9t
UGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJv
cGVydGllcykgOiBudWxscHRyKQorICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhv
LmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5n
Pj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQogI2lmIEVOQUJM
RShQT0lOVEVSX0VWRU5UUykKICAgICAsIHRvdWNoQWN0aW9ucyhvLnRvdWNoQWN0aW9ucykKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNw
cAppbmRleCAyYzZmMzE3OGVlYjI2YzdiMmMwZDk1YWUxMDhiN2VmY2M2ZTIyYzRlLi4yNGNkZTRi
ZDYxZTcxNGMyMzIzYjllNWNkMmNmMjY5ZTI4NDVmOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZW5k
ZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5k
ZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RG
TW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZSh0cnVlKQogICAgICwg
bV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQotICAgICwgbV9pbWFnZVJlc291cmNlKHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJj
ZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiAgICAgaW1hZ2VSZXNvdXJj
ZSgpLmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDNjMzEwNTZkMWNhYjFmZWExMDQ5MDc4MGQw
MGM4ZGNkMmM3OTgwNjguLmJhMWNkMDUyZGFkYWExY2UxODQxYzdjMjNjYWYzM2ZhYTRlMzQ3ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVuZGVyU1ZHSW5saW5lOjpSZW5kZXJTVkdJbmxpbmUoU1ZH
R3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWwKIAogc3RkOjp1bmlx
dWVfcHRyPElubGluZUZsb3dCb3g+IFJlbmRlclNWR0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0Jv
eCgpCiB7Ci0gICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0lubGluZUZsb3dCb3g+
KCp0aGlzKTsKKyAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZHSW5saW5lRmxvd0JveD4oKnRo
aXMpOwogICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICByZXR1cm4g
Ym94OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lVGV4dC5jcHAKaW5kZXggNjdlNmY5ODk3ZDI3NzQ0ZmQ0MTMzZmYyNzY3MTRjNGU5ZGE2
NjViMC4uZGJmNDkwM2Y4OWY0ZGM5MmVkZmYzMDUzOTI1ODY5ZjMyZTJkOTljMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3Bw
CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUKIAogc3RkOjp1bmlx
dWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3go
KQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94Pigq
dGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZVRleHRCb3g+KCp0aGlz
KTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJv
eDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMWIzZWYyNGNjOTJkMjA1MmEzNGFhZDIwODgyMzMw
ZTFhMTIzYjg0Zi4uMWFkMjY0OTY0NjcwOWMyM2YwZGI5Y2ZhZTRiODYzYzI0N2IzNjkxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRl
ckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFByaW1pdGl2ZXMoU1ZHRmkK
ICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3ggPSBmaWx0ZXIudGFyZ2V0Qm91bmRpbmdC
b3goKTsKIAogICAgIC8vIEFkZCBlZmZlY3RzIHRvIHRoZSBidWlsZGVyCi0gICAgYXV0byBidWls
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpj
cmVhdGUoZmlsdGVyKSk7CisgICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJC
dWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CiAgICAgYnVpbGRlci0+c2V0
UHJpbWl0aXZlVW5pdHMoZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCkpOwogICAgIGJ1
aWxkZXItPnNldFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KTsKICAgICAKQEAg
LTEyMiw3ICsxMjIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4g
ZmFsc2U7IC8vIEFscmVhZHkgYnVpbHQsIG9yIHdlJ3JlIGluIGEgY3ljbGUsIG9yIHdlJ3JlIG1h
cmtlZCBmb3IgcmVtb3ZhbC4gUmVnYXJkbGVzcywganVzdCBkbyBub3RoaW5nIG1vcmUgbm93Lgog
ICAgIH0KIAotICAgIGF1dG8gZmlsdGVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyRGF0
YT4oKTsKKyAgICBhdXRvIGZpbHRlckRhdGEgPSBtYWtlVW5pcXVlPEZpbHRlckRhdGE+KCk7CiAg
ICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gcmVuZGVyZXIub2JqZWN0Qm91bmRpbmdC
b3goKTsKIAogICAgIGZpbHRlckRhdGEtPmJvdW5kYXJpZXMgPSBTVkdMZW5ndGhDb250ZXh0Ojpy
ZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlckVsZW1lbnQ+KCZmaWx0ZXJFbGVtZW50KCksIGZpbHRl
ckVsZW1lbnQoKS5maWx0ZXJVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50LmNwcAppbmRleCBkOGFkMDgwNDY2YzVjNmQ5ZWVjZjA3OGNkZmY2NDI2YzYxNGEwY2UyLi41
NTJjZTVhMzNhODA2MmU2YmVlMGIwNGFlM2YxNjBmMDk5ZWI1MmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6
OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbgogCiAgICAg
YXV0byYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5hZGQoJnJlbmRlcmVyLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFncmFkaWVudERhdGEpCi0gICAgICAgIGdyYWRp
ZW50RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhZGllbnREYXRhPigpOworICAgICAgICBncmFk
aWVudERhdGEgPSBtYWtlVW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKIAogICAgIGJvb2wgaXNQYWlu
dGluZ1RleHQgPSByZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZHUmVzb3VyY2VNb2RlOjpB
cHBseVRvVGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggYWE1NzY1ZWQzNzliNmFiMWI5NDQ3
MjZmNWI1ZWU0NTQzODNjNDY0ZS4uNGM4MTliOWJjNTVkYzJiZmE4MmZiYmMwOTdmNjM3NTg1YjVi
MTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgUmVuZGUKIAogICAgIGJvb2wgbWlzc2luZ01hc2tlckRhdGEgPSAhbV9tYXNrZXIuY29udGFp
bnMoJnJlbmRlcmVyKTsKICAgICBpZiAobWlzc2luZ01hc2tlckRhdGEpCi0gICAgICAgIG1fbWFz
a2VyLnNldCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8TWFza2VyRGF0YT4oKSk7CisgICAg
ICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIG1ha2VVbmlxdWU8TWFza2VyRGF0YT4oKSk7CiAK
ICAgICBNYXNrZXJEYXRhKiBtYXNrZXJEYXRhID0gbV9tYXNrZXIuZ2V0KCZyZW5kZXJlcik7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVu
ZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5oCmluZGV4IDI5ZThlN2MyNDc1NjU4NzkyZWU0ZWQ0ZWQwODIwZmFl
ZWM5YmRjMGMuLmRmMDE3YmExYmZjMGNjZjdhZWE5M2EzYmIyZjdmYzc4OGY2OTZjNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwogCiBzdHJ1Y3QgTWFza2VyRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0lt
YWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGNjMmNiZmNmMGZlOWE1OWVjZTE1ZjUy
ZjM1NzJkYjU5ZDE2MzIwZDYuLjMxYmM1ZjE5MzFiZGFlNTBhYWM2NjEzNTlmYzBhMjZmMTc4NTg2
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBQYXR0ZXJuRGF0YSog
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIE9wdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEJ1aWxkIHBhdHRl
cm4uCi0gICAgYXV0byBwYXR0ZXJuRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRhdGE+
KCk7CisgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7CiAg
ICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1hZ2UucmVs
ZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRlIHBhdHRlcm4gc3Bh
Y2UgdHJhbnNmb3JtYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDM0YjBhZTc1YmRjMDA1NjU3NmQ1MTM4MDE4NWVmZTZiYzcy
YzcwNmUuLjZhNjcxMThmZjFiMjU4YjMwM2M5NTYzODU5M2Y0NzRlZTg5YmJlNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC03OSw3
ICs3OSw3IEBAIFJlbmRlclNWR1NoYXBlOjp+UmVuZGVyU1ZHU2hhcGUoKSA9IGRlZmF1bHQ7CiAK
IHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKQogewotICAgIG1f
cGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGljc0VsZW1lbnQoJmdy
YXBoaWNzRWxlbWVudCgpKSk7CisgICAgbV9wYXRoID0gbWFrZVVuaXF1ZTxQYXRoPihwYXRoRnJv
bUdyYXBoaWNzRWxlbWVudCgmZ3JhcGhpY3NFbGVtZW50KCkpKTsKICAgICBwcm9jZXNzTWFya2Vy
UG9zaXRpb25zKCk7CiAKICAgICBtX2ZpbGxCb3VuZGluZ0JveCA9IGNhbGN1bGF0ZU9iamVjdEJv
dW5kaW5nQm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5jcHAKaW5kZXggYmY3ODY0NDNkZGQ2MGQ2MjFiY2Q1NzliODc3MGVkY2Q5MWQyOWZhOS4uOWM3
MzdjYWZmOGI5Mjc2Y2M0MTA2MDJmNTc5YTlmMzY0ZTVhMDhiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIGJv
b2wgU1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xp
cHBlcikKICAgICBBU1NFUlQoY2xpcHBlci0+cmVzb3VyY2VUeXBlKCkgPT0gQ2xpcHBlclJlc291
cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEpCi0gICAgICAg
IG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhPigpOworICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gbWFr
ZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKIAogICAgIG1fY2xpcHBlckZpbHRl
ck1hc2tlckRhdGEtPmNsaXBwZXIgPSBjbGlwcGVyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTI5
LDcgKzUyOSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIoUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlcikKICAgICBBU1NFUlQoZmlsdGVyLT5yZXNvdXJjZVR5cGUoKSA9PSBG
aWx0ZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRh
KQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxD
bGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2Ns
aXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSBmaWx0ZXI7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC01NTAsNyArNTUwLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlclN0YXJ0KFJl
bmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJTdGFydCkKICAgICBBU1NFUlQobWFya2VyU3Rh
cnQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1f
bWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJr
ZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+
KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0ID0gbWFya2VyU3RhcnQ7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC01NzEsNyArNTcxLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1h
cmtlck1pZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyTWlkKQogICAgIEFTU0VSVCht
YXJrZXJNaWQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBp
ZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtl
ckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9IG1hcmtlck1pZDsKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0
TWFya2VyRW5kKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJFbmQpCiAgICAgQVNTRVJU
KG1hcmtlckVuZC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VUeXBlKTsKIAogICAg
IGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1hcmtlckRhdGE+KCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9IG1ha2VVbmlxdWU8TWFy
a2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID0gbWFya2VyRW5kOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpz
ZXRNYXNrZXIoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlcikKICAgICBBU1NFUlQobWFz
a2VyLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFt
X2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAg
ICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1h
c2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5tYXNrZXIgPSBt
YXNrZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MzYsNyArNjM2LDcgQEAgYm9vbCBTVkdSZXNv
dXJjZXM6OnNldEZpbGwoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIGZpbGwpCiAgICAgICAg
ICAgIHx8IGZpbGwtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBl
KTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0
cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ry
b2tlRGF0YS0+ZmlsbCA9IGZpbGw7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02NTksNyArNjU5LDcg
QEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldFN0cm9rZShSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5l
ciogc3Ryb2tlKQogICAgICAgICAgICB8fCBzdHJva2UtPnJlc291cmNlVHlwZSgpID09IFJhZGlh
bEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAg
ICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+
KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRh
PigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlID0gc3Ryb2tlOwogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
c0NhY2hlLmNwcAppbmRleCAxOTE5NWFhMWRhYmM2NmU0YjM1NjU5NzJlYzkxZjg5NDc3ZjQwMzli
Li4xZWViNzhmNTdiM2ViYjMxYjRjZGU4ZTUzMDJkZGUwOWUwNDhjMGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcApAQCAtMzUs
NyArMzUsNyBAQCB2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjphZGRSZXNvdXJjZXNGcm9tUmVuZGVy
ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0CiAgICAgQVNTRVJUKCFtX2NhY2hlLmNv
bnRhaW5zKCZyZW5kZXJlcikpOwogCiAgICAgLy8gQnVpbGQgYSBsaXN0IG9mIGFsbCByZXNvdXJj
ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXNzZWQgUmVuZGVyT2JqZWN0Ci0gICAgYXV0byBuZXdS
ZXNvdXJjZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKKyAgICBhdXRvIG5l
d1Jlc291cmNlcyA9IG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2VzPigpOwogICAgIGlmICghbmV3UmVz
b3VyY2VzLT5idWlsZENhY2hlZFJlc291cmNlcyhyZW5kZXJlciwgc3R5bGUpKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCAzMjQxMDI1ODRjMWYxMTNkMGVlZDMzMjE0YTY3ZjU1
MzRhYjBmNTlhLi44MTBhMGI4ODBhOGFhNGRhZTAyZmFiNDQ2YTk0MWVkZDljNWE3MWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1
aWxkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBTVkdUZXh0TWV0cmljc0J1aWxkZXI6
OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVyU1ZHSW5saW4KICAg
ICBpZiAobV9pc0NvbXBsZXhUZXh0KQogICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBu
dWxscHRyOwogICAgIGVsc2UKLSAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4pOworICAgICAgICBt
X3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdpZHRoSXRlcmF0b3I+KCZzY2FsZWRG
b250LCBtX3J1bik7CiB9CiAKIHN0cnVjdCBNZWFzdXJlVGV4dERhdGEgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAK
aW5kZXggZDM3YmVlOGNiY2U1NTYxNTExYjI0ZTM2NGUxYWY2NGFhZDdhYTc1ZC4uZTZiMjczMjBk
OTJmZTg1NmQ4Mzc0MTA4ZWQ5NTQyZTA5MWVlYWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC0xMjIs
MjIgKzEyMiwyMiBAQCBzdGF0aWMgdm9pZCBnZXRJbmxpbmVSdW4oUmVuZGVyT2JqZWN0KiBzdGFy
dCwgUmVuZGVyT2JqZWN0KiBib3VuZGFyeSwgUmVuZGVyT2JqZQogCiBSZW5kZXJUcmVlQnVpbGRl
cjo6UmVuZGVyVHJlZUJ1aWxkZXIoUmVuZGVyVmlldyYgdmlldykKICAgICA6IG1fdmlldyh2aWV3
KQotICAgICwgbV9maXJzdExldHRlckJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGaXJzdExldHRl
cj4oKnRoaXMpKQotICAgICwgbV9saXN0QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPExpc3Q+KCp0
aGlzKSkKLSAgICAsIG1fbXVsdGlDb2x1bW5CdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlD
b2x1bW4+KCp0aGlzKSkKLSAgICAsIG1fdGFibGVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8VGFi
bGU+KCp0aGlzKSkKLSAgICAsIG1fcnVieUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxSdWJ5Pigq
dGhpcykpCi0gICAgLCBtX2Zvcm1Db250cm9sc0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxGb3Jt
Q29udHJvbHM+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8
QmxvY2s+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tGbG93QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVl
PEJsb2NrRmxvdz4oKnRoaXMpKQotICAgICwgbV9pbmxpbmVCdWlsZGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5saW5lPigqdGhpcykpCi0gICAgLCBtX3N2Z0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxT
Vkc+KCp0aGlzKSkKKyAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKG1ha2VVbmlxdWU8Rmlyc3RM
ZXR0ZXI+KCp0aGlzKSkKKyAgICAsIG1fbGlzdEJ1aWxkZXIobWFrZVVuaXF1ZTxMaXN0PigqdGhp
cykpCisgICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihtYWtlVW5pcXVlPE11bHRpQ29sdW1uPigq
dGhpcykpCisgICAgLCBtX3RhYmxlQnVpbGRlcihtYWtlVW5pcXVlPFRhYmxlPigqdGhpcykpCisg
ICAgLCBtX3J1YnlCdWlsZGVyKG1ha2VVbmlxdWU8UnVieT4oKnRoaXMpKQorICAgICwgbV9mb3Jt
Q29udHJvbHNCdWlsZGVyKG1ha2VVbmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhpcykpCisgICAgLCBt
X2Jsb2NrQnVpbGRlcihtYWtlVW5pcXVlPEJsb2NrPigqdGhpcykpCisgICAgLCBtX2Jsb2NrRmxv
d0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKKyAgICAsIG1faW5saW5lQnVp
bGRlcihtYWtlVW5pcXVlPElubGluZT4oKnRoaXMpKQorICAgICwgbV9zdmdCdWlsZGVyKG1ha2VV
bmlxdWU8U1ZHPigqdGhpcykpCiAjaWYgRU5BQkxFKE1BVEhNTCkKLSAgICAsIG1fbWF0aE1MQnVp
bGRlcihzdGQ6Om1ha2VfdW5pcXVlPE1hdGhNTD4oKnRoaXMpKQorICAgICwgbV9tYXRoTUxCdWls
ZGVyKG1ha2VVbmlxdWU8TWF0aE1MPigqdGhpcykpCiAjZW5kaWYKLSAgICAsIG1fY29udGludWF0
aW9uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQorICAgICwg
bV9jb250aW51YXRpb25CdWlsZGVyKG1ha2VVbmlxdWU8Q29udGludWF0aW9uPigqdGhpcykpCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICwgbV9mdWxsU2NyZWVuQnVpbGRlcihzdGQ6
Om1ha2VfdW5pcXVlPEZ1bGxTY3JlZW4+KCp0aGlzKSkKKyAgICAsIG1fZnVsbFNjcmVlbkJ1aWxk
ZXIobWFrZVVuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCiAjZW5kaWYKIHsKICAgICBSRUxFQVNF
X0FTU0VSVCghc19jdXJyZW50IHx8ICZtX3ZpZXcgIT0gJnNfY3VycmVudC0+bV92aWV3KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVw
ZGF0ZXIuY3BwCmluZGV4IDlhOThkMjVjMzJiOTM2NGI0NmE2YWVjZmMzY2ZmZGM2YzQ2NmY0ZDIu
LmI5ZDIwN2Y3ZGZkMzI0NmZlMDMwODZjODRjYTIwMWJjYjdiOTE5YzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNw
cApAQCAtNzEsNyArNzEsNyBAQCBSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKgogCiBSZW5kZXJUcmVl
VXBkYXRlcjo6UmVuZGVyVHJlZVVwZGF0ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9k
b2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChzdGQ6Om1ha2VfdW5p
cXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkKKyAgICAsIG1fZ2VuZXJhdGVkQ29udGVudCht
YWtlVW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkKICAgICAsIG1fYnVpbGRlcihyZW5k
ZXJWaWV3KCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklu
cHV0QnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKaW5k
ZXggN2ZlN2Y2ODczMjA0MTBlZjA0ODM4N2Q0ODFmOTI3YjEyYzIzODNhYy4uYjljNzJlYjg4MGU5
YmI4NzU5OGY0MTQ0MDc3ZDAyMzAxNjY2NWI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2Vy
SW5wdXRCcmlkZ2UuaApAQCAtNDksNiArNDksNyBAQCBlbnVtIGNsYXNzIElucHV0U291cmNlIHsK
IH07CiAKIGNsYXNzIFVzZXJJbnB1dEJyaWRnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVXNlcklucHV0QnJpZGdlKTsKIHB1YmxpYzoK
ICAgICBVc2VySW5wdXRCcmlkZ2UoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVJbnZhbGlkYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUlu
dmFsaWRhdG9yLmNwcAppbmRleCBkYWUxMWNiMmY2Mjg5OTE4NDUzYTEyODA5YWU0M2I4MTI0YjZi
MTJiLi42ZDY5NWE2NjBkMGU0ZTA0NWEyNmRhYmUzMzMxZWNhMjZmYWQyZWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0
aWMgYm9vbCBzaG91bGREaXJ0eUFsbFN0eWxlKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVu
dHMqPiYgc2hlZXRzKQogfQogCiBJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IoY29uc3QgVmVjdG9y
PFN0eWxlU2hlZXRDb250ZW50cyo+JiBzaGVldHMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3Im
IG1lZGlhUXVlcnlFdmFsdWF0b3IpCi0gICAgOiBtX293bmVkUnVsZVNldChzdGQ6Om1ha2VfdW5p
cXVlPFJ1bGVTZXQ+KCkpCisgICAgOiBtX293bmVkUnVsZVNldChtYWtlVW5pcXVlPFJ1bGVTZXQ+
KCkpCiAgICAgLCBtX3J1bGVTZXQoKm1fb3duZWRSdWxlU2V0KQogICAgICwgbV9kaXJ0aWVzQWxs
U3R5bGUoc2hvdWxkRGlydHlBbGxTdHlsZShzaGVldHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZWxhdGlvbnMuY3BwCmluZGV4IDRkODE0OGI0ZTMxZDc0ZDZhMGE1MTc1NGRlZTVlYWI4
MDc1OWFiYWEuLjA2MmQ1OTY0ZDc3ZWM1ZGI4M2IzZjQxYWNiYWE4N2VmY2U5OGRkNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbGF0aW9ucz4gY29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZShSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnMKIAogICAgIGF1dG8gYXBwZW5kU3R5bGVSZWxhdGlvbiA9IFsm
cmVtYWluaW5nUmVsYXRpb25zXSAoY29uc3QgUmVsYXRpb24mIHJlbGF0aW9uKSB7CiAgICAgICAg
IGlmICghcmVtYWluaW5nUmVsYXRpb25zKQotICAgICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25z
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZWxhdGlvbnM+KCk7CisgICAgICAgICAgICByZW1haW5pbmdS
ZWxhdGlvbnMgPSBtYWtlVW5pcXVlPFJlbGF0aW9ucz4oKTsKICAgICAgICAgcmVtYWluaW5nUmVs
YXRpb25zLT5hcHBlbmQocmVsYXRpb24pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5jcHAKaW5kZXggOWYwZDFhZDc0OTBiZmVhYjI0MDdjZTdiYzg4YjA5NTExNmQwYjIyMi4u
ZGNiNjViYzA5YzM0Nzc5YjYzYTI5MzI0ZTI0ZDM3MmJmYzZhMjNkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgU3R5bGVSZXNvbHZlciYgU2NvcGU6
OnJlc29sdmVyKCkKICAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8
Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVy
LCB0cnVlIH07CiAKLSAgICAgICAgbV9yZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVS
ZXNvbHZlcj4obV9kb2N1bWVudCk7CisgICAgICAgIG1fcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0
eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQpOwogCiAgICAgICAgIGlmICghbV9zaGFkb3dSb290KSB7
CiAgICAgICAgICAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxkU3RhcnRlZCgpOwpA
QCAtNTYzLDcgKzU2Myw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IFNj
b3BlOjphY3RpdmVTdHlsZVNoZWV0c0Zvckluc3BlY3RvcigpCiBib29sIFNjb3BlOjphY3RpdmVT
dHlsZVNoZWV0c0NvbnRhaW5zKGNvbnN0IENTU1N0eWxlU2hlZXQqIHNoZWV0KSBjb25zdAogewog
ICAgIGlmICghbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwKSB7
Ci0gICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4+KCk7CisgICAg
ICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IG1ha2VV
bmlxdWU8SGFzaFNldDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4+KCk7CiAgICAgICAgIGZvciAoYXV0
byYgYWN0aXZlU3R5bGVTaGVldCA6IG1fYWN0aXZlU3R5bGVTaGVldHMpCiAgICAgICAgICAgICBt
X3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAtPmFkZChhY3RpdmVT
dHlsZVNoZWV0LmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5jcHAKaW5kZXggODQ2YTIzMWFkMmIxOGI1ZDdmMjk0OTAxNmQwOWYyMjNkZDY5ZTg4
Yi4uYTAwZjRmZTBmNGNjYjUyZGQ4MzFhOTRlMjZhNTg2NGU1YzFiNzkyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZSgpCiAKICAgICBtX2Rp
ZFNlZVBlbmRpbmdTdHlsZXNoZWV0ID0gbV9kb2N1bWVudC5zdHlsZVNjb3BlKCkuaGFzUGVuZGlu
Z1NoZWV0c0JlZm9yZUJvZHkoKTsKIAotICAgIG1fdXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxV
cGRhdGU+KG1fZG9jdW1lbnQpOworICAgIG1fdXBkYXRlID0gbWFrZVVuaXF1ZTxVcGRhdGU+KG1f
ZG9jdW1lbnQpOwogICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoYWRvcHRSZWYoKm5ldyBTY29wZSht
X2RvY3VtZW50KSkpOwogICAgIG1fcGFyZW50U3RhY2suYXBwZW5kKFBhcmVudChtX2RvY3VtZW50
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5k
ZXggYmM1MTQzNGIwYjJiOGUwYmY3N2U1N2E0YTc2ZTRkNGJjZWVlOTk2NS4uMjVmMzg2M2QwNzk1
NGFjOGQ2YTYzZTY4NjRhMWYwNzZiMGQ1MWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9yZXNv
dXJjZXNDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQorICAgICwg
bV9yZXNvdXJjZXNDYWNoZShtYWtlVW5pcXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQogICAgICwg
bV9hcmVBbmltYXRpb25zUGF1c2VkKCFkb2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2Uo
KS0+aXNWaXNpYmxlKCkpCiB7CiB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCwgRWxl
bWVudCYgZWwKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwg
bnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7CisgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFBlbmRpbmdFbGVtZW50cz4o
KTsKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQoJmVsZW1lbnQpOwogCiAgICAgZWxl
bWVudC5zZXRIYXNQZW5kaW5nUmVzb3VyY2VzKCk7CkBAIC0yNzksNyArMjc5LDcgQEAgSGFzaFNl
dDxTVkdFbGVtZW50Kj4qIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c2V0T2ZFbGVtZW50c1JlZmVy
ZW5jaW5nVGFyZ2V0KFNWR0UKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50
UmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxlbWVudCYgcmVmZXJlbmNpbmdFbGVtZW50LCBTVkdFbGVt
ZW50JiByZWZlcmVuY2VkRWxlbWVudCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudERl
cGVuZGVuY2llcy5lbnN1cmUoJnJlZmVyZW5jZWRFbGVtZW50LCBbJnJlZmVyZW5jaW5nRWxlbWVu
dF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQq
Pj4oc3RkOjppbml0aWFsaXplcl9saXN0PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1l
bnQgfSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+Pihz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZHRWxlbWVudCo+IHsgJnJlZmVyZW5jaW5nRWxlbWVudCB9
KTsKICAgICB9KTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLT5hZGQoJnJlZmVyZW5jaW5nRWxlbWVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKaW5kZXggYTgwOTZkZGFkYTgxZWFkNmE3YTFlYTMyNGNkODUwNjdmNWMwYjI4
Yi4uZTRkZTNiNzQ5ZjBhMDAzOWJjNWM0Y2ZjZDA4ZTE5Mzk2Y2Q2NTYyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUg
SGFzaE1hcDxBdG9tU3RyaW5nSW1wbCosIENTU1Byb3BlcnR5SUQ+IGNyZWF0ZUF0dHJpYnV0ZU5h
bWVUCiBTVkdFbGVtZW50OjpTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIENyZWF0ZVNWR0VsZW1lbnQpCiAgICAgLCBTVkdMYW5nU3BhY2UodGhpcykKLSAgICAsIG1f
cHJvcGVydHlBbmltYXRvckZhY3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1h
dG9yRmFjdG9yeT4oKSkKKyAgICAsIG1fcHJvcGVydHlBbmltYXRvckZhY3RvcnkobWFrZVVuaXF1
ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTIw
Myw3ICsyMDMsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hh
bmdlIGNoYW5nZSkKIFNWR0VsZW1lbnRSYXJlRGF0YSYgU1ZHRWxlbWVudDo6ZW5zdXJlU1ZHUmFy
ZURhdGEoKQogewogICAgIGlmICghbV9zdmdSYXJlRGF0YSkKLSAgICAgICAgbV9zdmdSYXJlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRWxlbWVudFJhcmVEYXRhPigpOworICAgICAgICBtX3N2
Z1JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTVkdFbGVtZW50UmFyZURhdGE+KCk7CiAgICAgcmV0dXJu
ICptX3N2Z1JhcmVEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwCmluZGV4IGE3NTg5MGYzMTgwNDY4ZDE1MjRiZWU4NTQzNTlkMDM1NmViNTIyMmQuLjgw
ZWM3ZmM4NjI5MmI2M2JiYmE4NTFlMTFlMTA2ZmExNTJmOTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgQWZmaW5lVHJh
bnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0
CiBBZmZpbmVUcmFuc2Zvcm0qIFNWR0dyYXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNm
b3JtKCkKIHsKICAgICBpZiAoIW1fc3VwcGxlbWVudGFsVHJhbnNmb3JtKQotICAgICAgICBtX3N1
cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8QWZmaW5lVHJhbnNmb3JtPigp
OworICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8QWZmaW5lVHJh
bnNmb3JtPigpOwogICAgIHJldHVybiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAppbmRleCA2ZjBhY2FjZjE5ZWU4
NTBkYjRlNjkxMGQzZTgzZDI2NDk0ZDY3ZWIwLi40MzRkOTFlYjNkZjhhZDg3OWY4MzlhNDg5NjY4
Njc4MGI0MDlmMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaApAQCAt
ODYsNyArODYsNyBAQCBjbGFzcyBTVkdQYXRoQnl0ZVN0cmVhbSB7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IGNvcHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsKICAgICB9CiAKICAg
ICBEYXRhSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNw
cAppbmRleCBlMDQyM2NlOTgxNWZhMGYyNTU2M2EzYjU0MzE0MDg2YWMzNTZmZjQ0Li4zZWI1N2Fk
MmYyMWRmYTY0YjliMTE4MDFmNDI3MjgzNjAyYjc1YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcApAQCAtNjQsNyArNjQsNyBA
QCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzY2hlZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0
aW9uLCBTVkdFbGVtZW50KiB0YXJnZXQsCiAgICAgRWxlbWVudEF0dHJpYnV0ZVBhaXIga2V5KHRh
cmdldCwgYXR0cmlidXRlTmFtZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbnNWZWN0
b3I+JiBzY2hlZHVsZWQgPSBtX3NjaGVkdWxlZEFuaW1hdGlvbnMuYWRkKGtleSwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICghc2NoZWR1bGVkKQotICAgICAgICBzY2hlZHVsZWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbnNWZWN0b3I+KCk7CisgICAgICAgIHNjaGVkdWxl
ZCA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uc1ZlY3Rvcj4oKTsKICAgICBBU1NFUlQoIXNjaGVkdWxl
ZC0+Y29udGFpbnMoYW5pbWF0aW9uKSk7CiAgICAgc2NoZWR1bGVkLT5hcHBlbmQoYW5pbWF0aW9u
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggODA5YWZm
NWQ4ODUzNzEyMDcyYWQ4NzE1NjczNWU5MzBmOWJhMzVjZC4uNWM1NmI2OTk5NWJjOTJmNGNhODgx
ZTJiOTFlOWYzN2ZmNWMzOGY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRh
dGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZl
ZCkgewogICAgICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25X
aXRoRW1wdHlDbGllbnRzKCk7Ci0gICAgICAgIG1fY2hyb21lQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhpcyk7CisgICAgICAgIG1fY2hyb21lQ2xpZW50
ID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhpcyk7CiAgICAgICAgIHBhZ2VD
b25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBJZiB0aGlzIFNWRyBlbmRzIHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBtaWdo
dCBsZWFrIHRoZSB3b3JsZC4KQEAgLTQ2Niw3ICs0NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBT
VkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIFRo
aXMgd2lsbCBiZWNvbWUgYW4gaXNzdWUgd2hlbiBTVkdJbWFnZSB3aWxsIGJlIGFibGUgdG8gbG9h
ZCBvdGhlcgogICAgICAgICAvLyBTVkdJbWFnZSBvYmplY3RzLCBidXQgd2UncmUgc2FmZSBub3cs
IGJlY2F1c2UgU1ZHSW1hZ2UgY2FuIG9ubHkgYmUKICAgICAgICAgLy8gbG9hZGVkIGJ5IGEgdG9w
LWxldmVsIGRvY3VtZW50LgotICAgICAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+
KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICAgICAgbV9wYWdlID0gbWFrZVVuaXF1
ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgICAgIG1fcGFnZS0+c2V0
dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdz
KCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5z
ZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKaW5kZXggZDk3MDMwMmFkZjg2NTg1
NTA5YzY1MDhkNTA0OTUyYTI1NTMyMzYyYi4uYzc3YWUwOGJhYzY1YzNjMmNmYzg5NzRmYTMzZTc2
NDYwY2U5N2ZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBSZW5kZXJP
YmplY3Q7CiBjbGFzcyBTVkdGaWx0ZXJFbGVtZW50OwogCiBjbGFzcyBTVkdGaWx0ZXJCdWlsZGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEhh
c2hTZXQ8RmlsdGVyRWZmZWN0Kj4gRmlsdGVyRWZmZWN0U2V0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3Bl
cnR5LmgKaW5kZXggZTVlZmFhZWE3MTExYmM2Yzk1N2Q5NzJkNzQ1NDhkZTkyZDhhMTMzZS4uY2Vi
YWEzNjNiZjUyN2JiYjM4ZTU2N2QzZTNkNDJiZjg0MzEwMmE3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHkuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZERlY29yYXRlZFByb3Bl
cnR5IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHkgewogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFByb3BlcnR5VHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVj
b3JhdGVkUHJvcGVydHk+CiAgICAgc3RhdGljIFJlZjxBbmltYXRlZFByb3BlcnR5PiBjcmVhdGUo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50LCBzdGQ6Om1ha2VfdW5pcXVl
PERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9wZXJ0eVR5cGU+PigpKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGVkUHJvcGVydHkoY29udGV4dEVsZW1l
bnQsIG1ha2VVbmlxdWU8RGVjb3JhdGVkUHJvcGVydHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5
VHlwZT4+KCkpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGUs
IHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDI4ODc0MWIxMjkwNWNiODUxNDMw
NTQwOTBjNGUyYzkxMzliMzViZjMuLmQwNzM3YWNiYTMzMWZlMTIzNDdiODM0ZmY3YWEzMDEwMGFk
MTU2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTUwLDcgKzUwLDcgQEAg
Y2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjxTVkdBbmkKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQW5nbGU+
JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9k
ZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC02OCw3
ICs2OCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9v
bGVhbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNh
bGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRl
ZEJvb2xlYW5BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAgICAg
c3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJl
ZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQs
IGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVu
dW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMTEs
NyArMTExLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IgZmluYWwgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0EKIAogICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJ
bnRlZ2VyPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkSW50ZWdlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0
ZToKQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogCiAgICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSwg
U1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBs
ZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0
b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIAogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0
aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAg
ICAgfQogCiBwcml2YXRlOgpAQCAtMTcyLDcgKzE3Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVt
YmVyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNW
R0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4mIGFuaW1hdGVkLCBBbmltYXRp
b25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0
ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTg5LDcgKzE4OSw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjxTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlckxpc3Q+
JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9k
ZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogcHJp
dmF0ZToKQEAgLTIwNiw3ICsyMDYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPAogcHVibGlj
OgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBSZWY8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdD4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIyNCw3ICsyMjQsNyBAQCBj
bGFzcyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjxTVgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQb2ludExp
c3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRl
ZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KICAgICAKIHBy
aXZhdGU6CkBAIC0yNDMsNyArMjQzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlQW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFMKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJv
b2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvcj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yNjIsNyArMjYyLDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUEKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpbz4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNN
b2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpb0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yODEsNyArMjgxLDcgQEAgY2xhc3Mg
U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yPFNWR0FuaW0KIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRSZWN0PiYgYW5pbWF0ZWQsIEFu
aW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1
bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5OCw3ICsyOTgsNyBAQCBjbGFz
cyBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvcjxTVkdBbgogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+JiBh
bmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwg
Ym9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0Fu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTMzOCw3
ICszMzgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0bwogcHVibGljOgogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9k
ZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9y
SW1wbC5oCmluZGV4IDRlZGEzNGM5YjE4ODhmZmQ2ZDNkNjYzMmNmMGNmNmQzM2E2ZmE5ZTEuLjM5
N2ZmMDkxNTk0MDBkMzNjMDUyYjExZDgyOGNiOGUzN2IzYzgwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVBhaXJBbmltYXRvckltcGwuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTVkdBbmltYXRl
ZEFuZ2xlT3JpZW50QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBh
aXJBbmltYQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkMSwgUmVm
PFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQy
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0x
MTMsNyArMTEzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWEKIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFu
aW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwg
Ym9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNW
R0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBh
bmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTYsNyArMTU2LDcgQEAgY2xhc3MgU1ZHQW5p
bWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVBhaXJBbmltYXQKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQx
LCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDIsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQy
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyUGFpckFuaW1hdG9yPihh
dHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5o
CmluZGV4IDY0YTY1YjE4NjJmZmI5Njk2MDNjNzE1NjA3YjU0NGY1NTZlMDA4M2EuLjAyMmVkZWRh
ODIxYjUzMzU1YjNmZGQzOTU4ZjI0MzY4MDE5YWFkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaApAQCAtNTIsNiArNTIs
NyBAQCBlbnVtIGNsYXNzIENhbGNNb2RlIDogdWludDhfdCB7CiB9OwogCiBjbGFzcyBTVkdBdHRy
aWJ1dGVBbmltYXRvciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgU1ZHQXR0cmlidXRlQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKICAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5o
CmluZGV4IDI2NGMzNmI2OTA3NGNjZjNlMmUyOWQyNjc3MjFjZjUzNzQ1NzAzMTEuLmEzNWUyNTBh
OWIxNTFmOWU4OTdmODVmNjM2N2MzODdkYmIzY2E1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaApAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbiA6IHB1YmxpYyBTVkdEZWNv
cmF0ZWRQcmltaXRpdmU8RGVjb3JhdGlvblR5cGUsIEVudQogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBFbnVtVHlwZSYgdmFsdWUpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfaW50ZWdyYWw8RGVjb3JhdGlvblR5cGU+Ojp2YWx1ZSwgIkRlY29yYXRpb25UeXBlIGZv
cm0gZW51bSBzaG91bGQgYmUgaW50ZWdyYWwuIik7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0aW9uPih2YWx1ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0aW9uPih2YWx1ZSk7CiAgICAgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3Jh
dGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRl
ZFByb3BlcnR5LmgKaW5kZXggZTRhYjAzNzBiOTQ3OWU1NTUwYmJiMTEwODczNDIzNTMxMTY2NTA3
MC4uYWIxNGYzY2JlNWE3ZmMyMGUxMzBmZGE5YmQ0ODc5N2RkZGQzZTg0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCkBA
IC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb3JhdGlvblR5cGU+CiBjbGFzcyBTVkdEZWNvcmF0ZWRQcm9wZXJ0eSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9
IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+U1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQ
cm9wZXJ0eUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmlt
aXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXggNDEyMTcyMjBiZGZjZmVmZjY3YzE2MDkxM2Fk
MTRkNmI5OWJhMTQyYy4uNjhiMmUwYjExMzdhZGU4ZDM3ZjgwZTBlMjk4YjVkZTI0ZDAxYTgyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJv
cGVydHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
aW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTVkdQcmlt
aXRpdmVQcm9wZXJ0eUFuaW1hdG9yIDogcHVibGljIFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5pbWF0
aW9uRnVuY3RpbwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1h
dGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVs
YXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKaW5kZXgg
YWQ1MGQ0MjM2Mjk2OTQyZDFkYzg3MThhMmRhOGU2YWRmOGQxYmNjYi4uNWUzMDE4ZjVhNDAyYTlj
N2YxMjlkNDFkNDE5YWM1ZTk0OWZlZTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCkBAIC0zNCw2
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
VkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9y
SW1wbC5oCmluZGV4IDExODg4NmM0ZjhiYjcyMzZhNDQ2ZmZhZDAzODY5ZmYwYjBkY2RlOTUuLmZk
M2RjOTYwZmZhN2QzMTI5MDEzN2Q0NTJjZGUxYTI4NzlhN2VkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0
b3JJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwg
OiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yPFNWR0xlbmd0aCwgU1ZHQW4KIHB1Ymxp
YzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aEFu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFy
dChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5p
bWF0b3JJbXBsLmgKaW5kZXggNWVlOGFjM2QwZjRlMTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2
OC4uYWU5NGUyOWVkNGI4NjEzYjk5Y2Q5NzQ4NmVkMGIwNjI4MjZjMDJkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRv
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3Bl
cnR5TGlzdEFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExp
c3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNW
R0xlbmd0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9u
TW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVk
LCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTVkdMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkp
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVu
Z3RoTW9kZU90aGVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAg
ICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlk
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggYzEx
MzFkMjViMzg4YmJhODM2NjUzZDI5NzA4ZTZhNWJiZTRiZGZjNC4uMjQzNzg5YmI5ZDI3OWE2ZTg1
M2UwODY0NGI2NGJlZTg1MWU1ZWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuY3BwCkBAIC0yMzEsNiArMjMxLDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdz
OjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyYgc2V0dGluZ3MpCiB9CiAKIGNsYXNzIEludGVy
bmFsU2V0dGluZ3NXcmFwcGVyIDogcHVibGljIFN1cHBsZW1lbnQ8UGFnZT4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGlu
Z3NXcmFwcGVyKFBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9pbnRlcm5hbFNldHRpbmdzKEludGVy
bmFsU2V0dGluZ3M6OmNyZWF0ZShwYWdlKSkgeyB9CkBAIC0yNTIsNyArMjUzLDcgQEAgY29uc3Qg
Y2hhciogSW50ZXJuYWxTZXR0aW5nczo6c3VwcGxlbWVudE5hbWUoKQogSW50ZXJuYWxTZXR0aW5n
cyogSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShQYWdlKiBwYWdlKQogewogICAgIGlmICghU3VwcGxl
bWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVtZW50TmFtZSgpKSkKLSAgICAgICAgU3VwcGxl
bWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91
bmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2UpKTsKKyAgICAgICAgU3VwcGxlbWVu
dDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8SW50
ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2UpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50
ZXJuYWxTZXR0aW5nc1dyYXBwZXIqPihTdXBwbGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBs
ZW1lbnROYW1lKCkpKS0+aW50ZXJuYWxTZXR0aW5ncygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggMjQ2NmJmZTUzZjlmYTc4MDZkNzI0YjgxZWQ0NzcwYTM5YWY5
OTEzZC4uNThkNGI1MWRmYjExZDRlOWUzYjVlMDM5YjdjNTdiMTFlYjI0MzczZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIGNsYXNzIEluc3Bl
Y3RvclN0dWJGcm9udGVuZCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLCBwdWJsaWMKIH07CiAKIEluc3BlY3RvclN0dWJGcm9udGVuZDo6SW5zcGVjdG9yU3R1YkZy
b250ZW5kKFBhZ2UmIGluc3BlY3RlZFBhZ2UsIFJlZlB0cjxET01XaW5kb3c+JiYgZnJvbnRlbmRX
aW5kb3cpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdl
Lmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2Uo
KSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5n
cz4oKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmluc3BlY3RlZFBhZ2Uu
aW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgp
LCBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPigpKQog
ICAgICwgbV9mcm9udGVuZFdpbmRvdyhmcm9udGVuZFdpbmRvdy5jb3B5UmVmKCkpCiB7CiAgICAg
QVNTRVJUX0FSRyhmcm9udGVuZFdpbmRvdywgZnJvbnRlbmRXaW5kb3cpOwpAQCAtNTY3LDcgKzU2
Nyw3IEBAIEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBhdXRv
KiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdl
KCkgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgYXV0byBtb2NrUGF5bWVudENv
b3JkaW5hdG9yID0gbmV3IE1vY2tQYXltZW50Q29vcmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwot
ICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3Vu
aXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAg
ICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1lbnRDb29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1l
bnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50Q29vcmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYK
IH0KQEAgLTE0MTcsNyArMTQxNyw3IEBAIHZvaWQgSW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNo
U3ludGhlc2l6ZXIoKQogICAgIGlmICghc3ludGhlc2lzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzeW50aGVzaXMtPnNldFBsYXRmb3JtU3ludGhlc2l6ZXIoc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4oc3ludGhlc2lzKSk7CisgICAgc3ludGhlc2lzLT5z
ZXRQbGF0Zm9ybVN5bnRoZXNpemVyKG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s+KHN5bnRoZXNpcykpOwogfQogCiAjZW5kaWYKQEAgLTI0ODcsNyArMjQ4Nyw3IEBAIFJl
ZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChj
b25zdCBTdHJpbmcmIHVybCkKICAgICBhdXRvKiBpbnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3Vt
ZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBhdXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdl
LT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICBhdXRvIGZyb250ZW5k
V2luZG93UHJveHkgPSB3aW5kb3ctPm9wZW4oKndpbmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIp
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIG1faW5zcGVjdG9yRnJvbnRlbmQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvclN0dWJGcm9udGVuZD4oKmluc3BlY3RlZFBhZ2UsIGRvd25jYXN0
PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5kb3dQcm94eS0+d2luZG93KCkpKTsKKyAgICBtX2luc3Bl
Y3RvckZyb250ZW5kID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0
ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygp
KSk7CiAgICAgcmV0dXJuIGZyb250ZW5kV2luZG93UHJveHk7CiB9CiAKQEAgLTMwMDcsNyArMzAw
Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0Vmlld0V4cG9zZWRSZWN0KGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmCiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQcmlu
dGluZyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgcHJpbnRDb250ZXh0Rm9yVGVzdGlu
ZygpID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+KGZyYW1lKCkpOworICAgIHByaW50
Q29udGV4dEZvclRlc3RpbmcoKSA9IG1ha2VVbmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsK
ICAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCktPmJlZ2luKHdpZHRoLCBoZWlnaHQpOwogfQog
CkBAIC0zNDQ2LDcgKzM0NDYsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxlQXV0b1NpemVNb2Rl
KGJvb2wgZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiB2b2lkIEludGVybmFsczo6
aW5pdGlhbGl6ZU1vY2tDRE0oKQogewotICAgIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5
KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lNb2Nr
Q0RNPihjZG0pOyB9LAorICAgIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdh
Y3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAog
ICAgICAgICBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5TW9ja0NETTo6
c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk7CiB9CiAKQEAgLTQyMzksNyArNDIzOSw3IEBA
IHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1pY3JvVGFzayhpbnQgdGVzdE51bWJlcikKICAgICBpZiAo
IWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6
bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjpt
YWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBbZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgewor
ICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFz
az4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVu
dCwgdGVzdE51bWJlcl0oKSB7CiAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9U
YXNrICMiLCB0ZXN0TnVtYmVyLCAiIGhhcyBydW4uIikpOwogICAgIH0pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcAppbmRleCA2NDI4N2QyMzlhZjU3M2U5MjAzZDI1
ODQzMWIyNzNjN2I4NzQ5MDA2Li42MDI3MmQzNDk3ZjRiODY1Y2RiMDM3MGZlNDFkM2Q2ZmJkZThi
N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKQEAgLTM4LDYg
KzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9ja0NETVNlc3Npb24gOiBw
dWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgTW9ja0NETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAg
IHZpcnR1YWwgfk1vY2tDRE1TZXNzaW9uKCkgPSBkZWZhdWx0OwpAQCAtNzMsNyArNzQsNyBAQCBi
b29sIExlZ2FjeU1vY2tDRE06OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIAogc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IExlZ2FjeU1vY2tDRE06OmNy
ZWF0ZVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDRE1TZXNzaW9uPihjbGllbnQpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPE1vY2tDRE1TZXNzaW9uPihjbGllbnQpOwogfQogCiBzdGF0aWMgVWludDhBcnJh
eSogaW5pdERhdGFQcmVmaXgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9M
ZWdhY3lNb2NrQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaApp
bmRleCAyNGI5YjgwMDhjNGY1MTliNGE2NjZlYzZkMTUyNWFjNjJlYzFjMzBhLi5iOTNhZWI5M2Zm
NjMyOWU1MTU0N2MxM2ZmNzZhNjkyZWU2YTcxODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xl
Z2FjeU1vY2tDRE0uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBMZWdhY3lDRE07CiAKIGNsYXNzIExlZ2FjeU1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZUlu
dGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgTGVnYWN5TW9ja0NETShMZWdhY3lDRE0qIGNkbSkKICAgICAgICAgOiBtX2NkbShjZG0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDU2Nzk2ZWU5
MDBiYmYzYjZjYzA1Y2Y2YTIyOTZlZmQ0M2I5ZWY3YjYuLmNlNWQ4ZjdkNmJkZjM4YjU5MjIwOTMw
MmE2ZTZkNzFiMzY5NjYzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9y
dGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJpbmc+JiYgdHlwZXMpCiAKIHN0ZDo6dW5pcXVlX3B0cjxD
RE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0cigqdGhpcykpOwogfQog
CiBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggMzM5NmNkMDJhZDAyZGQxNGU5
MmYxNTc5ZTI3NTE2ZTZiYzNmNDI5OC4uMzk5MDliOTMwM2E5NGM5MzY4ZWFhMGY2MjVmNGI2N2U1
MjUwNTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtMTAw
LDYgKzEwMCw3IEBAIGNsYXNzIE1vY2tDRE1GYWN0b3J5IDogcHVibGljIFJlZkNvdW50ZWQ8TW9j
a0NETUZhY3Rvcnk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8CiB9OwogCiBjbGFzcyBNb2NrQ0RN
IDogcHVibGljIENETVByaXZhdGUsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2NrQ0RNPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTW9ja0NETShXZWFrUHRy
PE1vY2tDRE1GYWN0b3J5Pik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5jcHAKaW5kZXggNTExODFkYWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4
Ny4uNzc4YTkxOGE2YjkwNzU1Y2I4NmQzYWFhNzRmNzliM2U2MThkNGM5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
Ym9vbCBNb2NrQ29udGVudEZpbHRlcjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNb2Nr
Q29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBkM2FjNWQ4N2QxOWUyYTg1MzYxYzExNTcyY2Yz
MTFmMGM4M2IyNDViLi5kNDBkZWQxZGExMTk4Y2FhMzQ1OWQ2NzdlMWZlODRmNWJmYjk0NmU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAgdm9pZCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERl
dGFpbHModW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgZ2EKICAgICBpZiAobV9tb2NrR2Ft
ZXBhZFZlY3RvcltpbmRleF0pCiAgICAgICAgIG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdLT51
cGRhdGVEZXRhaWxzKGdhbWVwYWRJRCwgYXhpc0NvdW50LCBidXR0b25Db3VudCk7CiAgICAgZWxz
ZQotICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8
TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwor
ICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2luZGV4XSA9IG1ha2VVbmlxdWU8TW9ja0dhbWVw
YWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwogfQogCiBib29s
IE1vY2tHYW1lcGFkUHJvdmlkZXI6OmNvbm5lY3RNb2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4
IGRiZTkwNzNkNmFkZWJmYzUwMTU5Y2MyZWRiYjIyODNjY2QxN2JhODUuLjhmMTY0N2MxZjMyMjUx
ODE2YzdjZjA4OTYxODJhZTM0MjM1YzUxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFdvcmtlckNv
bnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1l
c3NhZ2VMZXZlbAogewogICAgIFN0cmluZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdl
dEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRz
KSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2Fn
ZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29w
ZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKaW5kZXggZjQzYmQyYTdhNjA1OTM3Mjdh
ZDBhNmE5MWRlY2Q2ZWJlYzcyMjY4OC4uNjkwM2JlNWVjMjVmYjkxZWZmNzc3NmU0NDc2YWQ0ZWEy
YmNlNzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3Bw
CkBAIC00NCw2ICs0NCw3IEBAIFdvcmtlckV2ZW50UXVldWU6On5Xb3JrZXJFdmVudFF1ZXVlKCkK
IAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRjaGVyCiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRXZlbnREaXNwYXRjaGVyKFJlZlB0cjxF
dmVudD4mJiBldmVudCwgV29ya2VyRXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSkKICAgICAgICAgOiBt
X2V2ZW50KFdURk1vdmUoZXZlbnQpKQpAQCAtODQsNyArODUsNyBAQCBib29sIFdvcmtlckV2ZW50
UXVldWU6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGF1dG8qIGV2ZW50UHRyID0gZXZlbnQucHRyKCk7Ci0gICAgYXV0byBldmVu
dERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShl
dmVudCksICp0aGlzKTsKKyAgICBhdXRvIGV2ZW50RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8RXZl
bnREaXNwYXRjaGVyPihXVEZNb3ZlKGV2ZW50KSwgKnRoaXMpOwogICAgIG1fZXZlbnREaXNwYXRj
aGVyTWFwLmFkZChldmVudFB0ciwgZXZlbnREaXNwYXRjaGVyLmdldCgpKTsKICAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQucG9zdFRhc2soW2V2ZW50RGlzcGF0Y2hlciA9IFdURk1vdmUoZXZl
bnREaXNwYXRjaGVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGV2ZW50
RGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVu
dFF1ZXVlLmgKaW5kZXggNjExNWVmNGExMzY1MmE2ZWFkMTBhZjM3Y2ZiNDk0MjgyMGMzY2IyYi4u
ZDg5NzNkNWJjYWUxN2I5NTUwMDQ0YzdlODAxNjA1Yjk5ZDU0OWFkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgV29ya2Vy
RXZlbnRRdWV1ZSBmaW5hbCA6IHB1YmxpYyBFdmVudFF1ZXVlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXb3JrZXJFdmVudFF1ZXVlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJFdmVudFF1ZXVlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDdiYTZl
ZGI1MjA4ZjIyYzNmOGYxNmRlMjlkODI1Yjc3MWY2YzNlOWUuLmIxN2Q2NjM2M2FjMzU4MGU3YTM0
NDAwODFhMmY3YzYzYTA3Mzg3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCkBAIC02Miw5ICs2Miw5IEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdp
CiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fdXNlckFnZW50KHVzZXJB
Z2VudCkKICAgICAsIG1fdGhyZWFkKHRocmVhZCkKLSAgICAsIG1fc2NyaXB0KHN0ZDo6bWFrZV91
bmlxdWU8V29ya2VyU2NyaXB0Q29udHJvbGxlcj4odGhpcykpCi0gICAgLCBtX2luc3BlY3RvckNv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhp
cykpCi0gICAgLCBtX21pY3JvdGFza1F1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8TWljcm90YXNrUXVl
dWU+KG1fc2NyaXB0LT52bSgpKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2VyU2Ny
aXB0Q29udHJvbGxlcj4odGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobWFrZVVu
aXF1ZTxXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX21pY3JvdGFz
a1F1ZXVlKG1ha2VVbmlxdWU8TWljcm90YXNrUXVldWU+KG1fc2NyaXB0LT52bSgpKSkKICAgICAs
IG1faXNPbmxpbmUoaXNPbmxpbmUpCiAgICAgLCBtX3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRl
bnRTZWN1cml0eVBvbGljeShzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3kpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCkBAIC04Niw3ICs4Niw3IEBAIFdvcmtlckds
b2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIG9yaWdpCiAgICAgICAgIG9yaWdpbi0+Z3JhbnRTdG9yYWdlQWNjZXNzRnJvbUZp
bGVVUkxzUXVpcmsoKTsKIAogICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3Jp
Z2luUG9saWN5OjpjcmVhdGUoV1RGTW92ZShvcmlnaW4pKSk7Ci0gICAgc2V0Q29udGVudFNlY3Vy
aXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBt
X3VybCB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKIH0KIAogV29y
a2VyR2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCkBAIC0zNjIsOSArMzYyLDkgQEAg
dm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZUxldmVsIGxldmVsLCBjb24KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlOwogICAgIGlmIChjYWxsU3RhY2spCi0gICAgICAgIG1l
c3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJj
ZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFz
ZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2cs
IGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2
ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3Rh
dGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwg
bWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwg
cmVxdWVzdElkZW50aWZpZXIpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVz
c2FnZVRvQ29uc29sZSgqdGhpcywgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggYTc1YzAxNTZj
NTllMzhkZDk5OWQ2Y2VjMWRkZWVkZTIzYmUxODdiMy4uNGU5ZjUxOWFlZmVkZDI1Zjg4M2Y2M2Fj
YTBhNDc4OWZmMDI3ZTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVQcm94
eSYgV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6Y3JlYXRlKFdvcmtlciYgd29ya2VyKQogCiBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkoV29ya2VyJiB3b3JrZXJPYmpl
Y3QpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQod29ya2VyT2JqZWN0LnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1faW5zcGVjdG9yUHJveHkoc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJJbnNwZWN0b3JQcm94eT4od29ya2VyT2JqZWN0LmlkZW50aWZpZXIoKSkpCisgICAg
LCBtX2luc3BlY3RvclByb3h5KG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+KHdvcmtl
ck9iamVjdC5pZGVudGlmaWVyKCkpKQogICAgICwgbV93b3JrZXJPYmplY3QoJndvcmtlck9iamVj
dCkKIHsKICAgICBBU1NFUlQoKGlzPERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KSAmJiBpc01haW5UaHJlYWQoKSkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydAogICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CiAgICAgICAgIG1f
d29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgfSBl
bHNlCi0gICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7CisgICAgICAgIG1f
cXVldWVkRWFybHlUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBiY2Q5NGU2YWMwNDAz
YWNkNmE1NGJhYzQxZmFiNDFlNWJmNTUyN2RhLi5iZmFjOTU5MmRmYWE3OTIxMDA2NWIzNDU5YmQy
MjE2MTk1Nzg0ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1
bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAK
QEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgTW9kZVByZWRpY2F0ZSB7CiB9OwogCiBXb3JrZXJSdW5M
b29wOjpXb3JrZXJSdW5Mb29wKCkKLSAgICA6IG1fc2hhcmVkVGltZXIoc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKKyAgICA6IG1fc2hhcmVkVGltZXIobWFrZVVuaXF1ZTxX
b3JrZXJTaGFyZWRUaW1lcj4oKSkKIHsKIH0KIApAQCAtMjUwLDEyICsyNTAsMTIgQEAgdm9pZCBX
b3JrZXJSdW5Mb29wOjpwb3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFz
aykKIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRB
bmRLaWxsKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUo
KSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwobWFrZVVuaXF1ZTxUYXNrPihX
VEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6
cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25z
dCBTdHJpbmcmIG1vZGUpCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgbW9kZSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFw
cGVuZChtYWtlVW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBX
b3JrZXJSdW5Mb29wOjpwb3N0RGVidWdnZXJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCmluZGV4IDE5OTEyZjAyNzVmZWExOTQ4MDU0MmEwNzA5NzVkY2IwYzdkMjgwMzUuLjIyOGYz
ZDE3ZmYwMDIyZTYyZTYzNjQ1MzJkNTU2Yjk1MDdhMDE4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dAogCiAgICAgQVNTRVJUKHNjcmlwdFJlcXVlc3QuaHR0cE1ldGhv
ZCgpID09ICJHRVQiKTsKIAotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVz
b3VyY2VSZXF1ZXN0PihXVEZNb3ZlKHNjcmlwdFJlcXVlc3QpKTsKKyAgICBhdXRvIHJlcXVlc3Qg
PSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92ZShzY3JpcHRSZXF1ZXN0KSk7CiAg
ICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBj
b25zdCBVUkwmIFdvcmtlclNjcmlwdExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAogCiBzdGQ6
OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJl
c291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIGluaXRpYXRvcklkZW50aWZpZXIpCiB7Ci0gICAg
YXV0byByZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsK
KyAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4obV91cmwpOwog
ICAgIHJlcXVlc3QtPnNldEhUVFBNZXRob2QoIkdFVCJfcyk7CiAgICAgcmVxdWVzdC0+c2V0SW5p
dGlhdG9ySWRlbnRpZmllcihpbml0aWF0b3JJZGVudGlmaWVyKTsKICAgICByZXR1cm4gcmVxdWVz
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAxZjc1NjE4NmEy
MGYwMTY5ZTQ3ODQzOTUxYmVlMzY4N2UwMDI0ZmJhLi4zYzM4NThiZGE5YjQ0YjU3ZmFkYjM5ZWZh
MmUwYTBmM2EzMDQxMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3Bw
CkBAIC0xMTQsNyArMTE0LDcgQEAgV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgVVJM
JiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW4KICAgICAsIG1fd29y
a2VyRGVidWdnZXJQcm94eSh3b3JrZXJEZWJ1Z2dlclByb3h5KQogICAgICwgbV93b3JrZXJSZXBv
cnRpbmdQcm94eSh3b3JrZXJSZXBvcnRpbmdQcm94eSkKICAgICAsIG1fcnVudGltZUZsYWdzKHJ1
bnRpbWVGbGFncykKLSAgICAsIG1fc3RhcnR1cERhdGEoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJU
aHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0VVJMLCBuYW1lLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQs
IGlzT25saW5lLCBzb3VyY2VDb2RlLCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
LCB0b3BPcmlnaW4sIHRpbWVPcmlnaW4sIHNlc3Npb25JRCkpCisgICAgLCBtX3N0YXJ0dXBEYXRh
KG1ha2VVbmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNjcmlwdFVSTCwgbmFtZSwgaWRl
bnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2luLCBzZXNzaW9uSUQpKQog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgICwgbV9pZGJDb25uZWN0aW9uUHJveHko
Y29ubmVjdGlvblByb3h5KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggYjJkMjYxNWEx
MjYzZDE2MjY2MTgyMDA0NjQ4ZjkwZWRhNjkyMDZiNS4uNTljNzFjNGQxNDc2MjdjZmQ5ZDMxYTQ1
ZWFiY2NjZGFlMTAzZTc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRlcmVmRXZlbnRUYXJnZXQoKQogYXV0byBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZWFkeSgpIC0+IFJlYWR5UHJvbWlzZSYKIHsKICAgICBpZiAo
IW1fcmVhZHlQcm9taXNlKSB7Ci0gICAgICAgIG1fcmVhZHlQcm9taXNlID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZWFkeVByb21pc2U+KCk7CisgICAgICAgIG1fcmVhZHlQcm9taXNlID0gbWFrZVVuaXF1
ZTxSZWFkeVByb21pc2U+KCk7CiAKICAgICAgICAgaWYgKG1faXNTdG9wcGVkIHx8ICFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJl
dHVybiAqbV9yZWFkeVByb21pc2U7CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiByZWxhdGl2ZVNjcmlw
dFVSTCwgY28KICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0
ZXI7CiAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gb3B0aW9uczsKIAotICAgIHNj
aGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5p
cXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpv
YkRhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0
cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92
ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZQogCiAgICAgQ09O
VEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZVJlZ2lzdHJhdGlvbjogVW5yZWdp
c3RlcmluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRp
ZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6
Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBX
VEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29y
a2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBV
UkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmUHRyPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkws
IGNvbnN0IFVSTCYKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZW1v
dmVSZWdpc3RyYXRpb246IFVwZGF0aW5nIHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6ICUiIFBSSXU2
NCwgam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAg
IHNjaGVkdWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdU
Rk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtl
VW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVK
b2Ioc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYgam9iKQpAQCAtMjY5LDcgKzI2
OSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0
IFN0cmluZyYgY2xpZW50VVJMLCBSZWY8RGVmZXJyCiAgICAgfQogCiAgICAgdWludDY0X3QgcGVu
ZGluZ1Byb21pc2VJZGVudGlmaWVyID0gKyttX2xhc3RQZW5kaW5nUHJvbWlzZUlkZW50aWZpZXI7
Ci0gICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1Byb21p
c2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKKyAgICBh
dXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShw
cm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwogICAgIG1fcGVuZGluZ1Byb21p
c2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2Up
KTsKIAogICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmll
cigpOwpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0
UmVnaXN0cmF0aW9ucyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAg
ICAgdWludDY0X3QgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyID0gKyttX2xhc3RQZW5kaW5nUHJv
bWlzZUlkZW50aWZpZXI7Ci0gICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpKTsKKyAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJv
bWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwogICAg
IG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUo
cGVuZGluZ1Byb21pc2UpKTsKIAogICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5j
b250ZXh0SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggN2FjOWM5ODM4M2IwNGI2ZWI4
OWM5OWYyMjA4ODVlNzY3Mzk3NmMzZi4uM2JkNmI5YjA2ZTU3Mzc2NjViNThmOTY5ZTI5M2QwZmVk
NjJjM2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0xMzksNiArMTM5LDcgQEAgY2xhc3MgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lciBmaW5hbCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgQWMKICNlbmRpZgogCiAgICAgc3RydWN0IFBlbmRpbmdQcm9taXNlIHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQZW5kaW5nUHJvbWlz
ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlZjxQZW5kaW5nQWN0aXZpdHk8U2Vy
dmljZVdvcmtlckNvbnRhaW5lcj4+JiYgcGVuZGluZ0FjdGl2aXR5KQogICAgICAgICAgICAgOiBw
cm9taXNlKFdURk1vdmUocHJvbWlzZSkpCiAgICAgICAgICAgICAsIHBlbmRpbmdBY3Rpdml0eShX
VEZNb3ZlKHBlbmRpbmdBY3Rpdml0eSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IGVkYmM4
ZjkxZWU0MzQ2MmE1MDQ5ZTg4YzFjZWY1ZWZhNzYyYzk4ZmYuLmNiNWMyMjFmYzk0ODhkN2MwMDcy
OTgzYTE1Nzg5NWRjYThjNmNlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vjb24KIAogICAgIHNlcnZpY2VXb3JrZXItPnNl
dEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKIAotICAgIG1fcGVuZGluZ1NlcnZpY2VXb3Jr
ZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPFNl
cnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVyLCB0aW1lb3V0
KSk7CisgICAgbV9wZW5kaW5nU2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlk
ZW50aWZpZXIsIG1ha2VVbmlxdWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRo
aXMsIGlkZW50aWZpZXIsIHRpbWVvdXQpKTsKIAogICAgIGF1dG8mIHRocmVhZCA9IHNlcnZpY2VX
b3JrZXItPnRocmVhZCgpOwogICAgIHRocmVhZC5zdG9wKFt0aGlzLCBpZGVudGlmaWVyLCBzZXJ2
aWNlV29ya2VyID0gV1RGTW92ZShzZXJ2aWNlV29ya2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGM2MTczNjEzY2FjYjU1ZDY5MDU4YmUyYzdlMmE1ZmJk
ODUyOWM3NzYuLjllNzI4YzNhN2FmYTQ2Yzk0OWNkY2JlMGQ2ZmViMDRhOTUzMWNjZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25m
aWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgYWxsU2VydmljZVdvcmtlclRocmVhZFByb3hpZXMo
KS5hZGQodGhpcyk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX3JlbW90
ZURlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigq
dGhpcywgZGF0YSk7CisgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlID0gbWFrZVVuaXF1ZTxTZXJ2aWNl
V29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEpOwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+
c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCh0cnVlKTsKICAgICBtX3JlbW90ZURlYnVnZ2FibGUt
PmluaXQoKTsKICNlbmRpZgpAQCAtMTY4LDcgKzE2OCw3IEBAIFJlZjxDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFnZUNvbm5l
Y3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGZXRjaExvYWRlcj4gU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpjcmVhdGVCbG9iTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFVS
TCYgYmxvYlVSTCkKIHsKLSAgICBhdXRvIGxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hM
b2FkZXI+KGNsaWVudCwgbnVsbHB0cik7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5pcXVlPEZl
dGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOwogICAgIGxvYWRlci0+c3RhcnRMb2FkaW5nQmxv
YlVSTChtX2RvY3VtZW50LCBibG9iVVJMKTsKICAgICBpZiAoIWxvYWRlci0+aXNTdGFydGVkKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRl
eCAxZGQzNDEzNzRjNDQ0NWEzNDk3MzJkNDRmZGVkMTU0Nzc0ODFjMGI0Li45MmNiYTA4NWQzYWNm
NmEyOTNmMDZiNTVkZjQ1ZjRkZmM3OTNmYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxp
dGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkKIAogICAgIFNRTGl0ZUZpbGVT
eXN0ZW06OmVuc3VyZURhdGFiYXNlRGlyZWN0b3J5RXhpc3RzKG1fZGF0YWJhc2VEaXJlY3Rvcnkp
OwogCi0gICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7
CisgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYg
KCFtX2RhdGFiYXNlLT5vcGVuKGZ1bGxGaWxlbmFtZSkpIHsKICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gIkZhaWxlZCB0byBvcGVuIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSI7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKaW5kZXggZmU1Y2M4NTllNjVhNmUzMmE3OGI1Mjg5NzVhMTMyZTc0YmYxNzg3ZS4uOTMy
NmEzYmFjNjU5YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE0NCw3ICsx
NDQsNyBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICAvLyBQYWdlcyBzaG91bGQgbm90IGhhdmUgYmVl
biBhYmxlIHRvIG1ha2UgYSBuZXcgcmVnaXN0cmF0aW9uIHRvIHRoaXMga2V5IHdoaWxlIHRoZSBp
bXBvcnQgd2FzIHN0aWxsIHRha2luZyBwbGFjZS4KICAgICBBU1NFUlQoIW1fcmVnaXN0cmF0aW9u
cy5jb250YWlucyhkYXRhLnJlZ2lzdHJhdGlvbi5rZXkpKTsKIAotICAgIGF1dG8gcmVnaXN0cmF0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMsIGRhdGEu
cmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUsIGRhdGEu
cmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CisgICAgYXV0byByZWdpc3Ry
YXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdp
c3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdp
c3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKICAgICByZWdpc3RyYXRpb24tPnNl
dExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsKICAgICBh
dXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKICAgICBhZGRSZWdpc3Ry
YXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKQEAgLTMwNCw3ICszMDQsNyBAQCBTV1NlcnZl
cjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIFN0cmlu
ZyYmIHJlZ2lzdHJhdGlvbgogewogICAgIEFTU0VSVCghcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJl
Y3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogICAgIGlmICgh
bV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0cmF0aW9uU3RvcmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lz
dHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5KSk7CisgICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUg
PSBtYWtlVW5pcXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhYmFzZURpcmVjdG9yeSkpOwogICAgIGVsc2UKICAgICAgICAgcmVnaXN0cmF0aW9uU3Rv
cmVJbXBvcnRDb21wbGV0ZSgpOwogCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTV1NlcnZlcjo6
c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIC8vIElmIGl0
IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQgam9iLgogCiAgICAgYXV0byYgam9iUXVldWUg
PSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0aGlzLCAm
am9iRGF0YV0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlckpvYlF1
ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktl
eSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9i
KGpvYkRhdGEpOwpAQCAtODIwLDcgKzgyMCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAK
ICAgICBpZiAoY2xpZW50SWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVCgh
aXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIpOwotICAgICAgICBp
dGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0aGlz
XSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVy
ID0gbWFrZVVuaXF1ZTxUaW1lcj4oW2NsaWVudE9yaWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21h
aW4sIHRoaXNdIHsKICAgICAgICAgICAgIFZlY3RvcjxTV1NlcnZlcldvcmtlcio+IHdvcmtlcnNU
b1Rlcm1pbmF0ZTsKICAgICAgICAgICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JU
ZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBpZiAod29ya2Vy
LT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPm9yaWdpbigpID09IGNsaWVudE9yaWdpbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
Sm9iUXVldWUuY3BwCmluZGV4IDhiNjhiNzBmMDFkMjUyNzhhZjUzOGFiY2U5MTRiOGM3YzY4YWI4
MzcuLmRjYWY1YThhNzEwZjc5NDQ2NDdkZTNjZDVlOTgwNjM5OWE4ZmQ1MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
UmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICAgICAgICAg
IHJlZ2lzdHJhdGlvbi0+c2V0VXBkYXRlVmlhQ2FjaGUoam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMu
dXBkYXRlVmlhQ2FjaGUpOwogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAg
LSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogRm91bmQgcmVnaXN0cmF0aW9uICVs
bHUgZm9yIGpvYiAlcyBidXQgaXQgbmVlZHMgdXBkYXRpbmciLCB0aGlzLCByZWdpc3RyYXRpb24t
PmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIG5ld1JlZ2lzdHJh
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBt
X3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUs
IGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CisgICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0
aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0
cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNj
b3BlVVJMLCBqb2Iuc2NyaXB0VVJMKTsKICAgICAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0cmF0aW9u
KFdURk1vdmUobmV3UmVnaXN0cmF0aW9uKSk7CiAKICAgICAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IE5vIGV4aXN0
aW5nIHJlZ2lzdHJhdGlvbiBmb3Igam9iICVzLCBjb25zdHJ1Y3RpbmcgYSBuZXcgb25lLiIsIHRo
aXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
CmluZGV4IDJiN2EyZmUzZmJiNThkNGM0ZWUzOGZjMDRiNTM2YTNlNGUwYzc3ZTcuLjNiZTc1N2Uw
MmFlMTlkNzU5MGVjMDdiM2ZhNGNiZTdkNjNjZTgxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQ
YWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiAgICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2Fs
bGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxs
YmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0p
OwogCi0gICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQYWlu
dERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50
cykpOworICAgICAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IG1ha2VVbmlxdWU8UGFpbnREZWZp
bml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVs
bCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsK
ICAgICAgICAgcGFpbnREZWZpbml0aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFpbnREZWZp
bml0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCA5NmNmMTg1MGIwY2FlM2FhZTk2MDdkYjEzNDE2NzM1
OGI2NzFjMWQ5Li42NGZjNzhlZWU3ODgwZWQ5YmVkY2ZjMmE3MDEyY2E2ZWMzY2UxYzA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgK
QEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMg
V29ya2xldEdsb2JhbFNjb3BlIHsKIAogICAgIC8vIEFsbCBwYWludCBkZWZpbml0aW9ucyBtdXN0
IGJlIGRlc3Ryb3llZCBiZWZvcmUgdGhlIHZtIGlzIGRlc3Ryb3llZCwgYmVjYXVzZSBvdGhlcndp
c2UgdGhleSB3aWxsIHBvaW50IHRvIGZyZWVkIG1lbW9yeS4KICAgICBzdHJ1Y3QgUGFpbnREZWZp
bml0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBhaW50RGVmaW5pdGlvbj4geworICAgICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFBhaW50RGVmaW5pdGlv
bihjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBKU0M6OkpTT2JqZWN0KiBwYWludENvbnN0cnVjdG9y
LCBSZWY8Q1NTUGFpbnRDYWxsYmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBpbnB1dFByb3BlcnRp
ZXMsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRBcmd1bWVudHMpOwogCiAgICAgICAgIGNvbnN0IEF0
b21TdHJpbmcgbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmts
ZXRDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25z
b2xlQ2xpZW50LmNwcAppbmRleCA4ZThhMmE0Y2EyM2UyYjkzZGExMzRhZmI1MmQwZTk1NzZjNDAy
MTU5Li4zZjA5MjU2M2JkNTJhYzRhNGJiZWRhNDE1YzIzN2EyZDFkZmRhZGI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIHZvaWQgV29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExl
dmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VU
ZXh0OwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0
KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdl
VGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtl
VW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsK
ICAgICBtX3dvcmtsZXRHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3Nh
Z2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEds
b2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29w
ZS5jcHAKaW5kZXggNGJiNzg4ZWE2M2NkNmJiZGM1MzI1ODdlMDUxMGQ1MzI1MjYwNmZmYS4uY2Vm
ODJmN2I0MTFkMjE4YzczM2Q2NmZhOWRiYTJkOTMxMjVhZTgyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXb3JrbGV0R2xvYmFsU2NvcGUpOwogV29ya2xldEds
b2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRT
b3VyY2VDb2RlJiYgY29kZSkKICAgICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQp
KQogICAgICwgbV9zZXNzaW9uSUQobV9kb2N1bWVudC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3Nj
cmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAg
ICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQog
ICAgICwgbV90b3BPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwg
bV9ldmVudFF1ZXVlKCp0aGlzKQogICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCkBAIC02Miw3
ICs2Miw3IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50
JiBkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZSYmIGNvCiAgICAgQVNTRVJUKGRvY3VtZW50LnBh
Z2UoKSk7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGlj
eTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNvcHlSZWYoKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0
eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9j
b2RlLnVybCgpIH0sICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VV
bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX2NvZGUudXJsKCkgfSwgKnRoaXMp
KTsKIH0KIAogV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKQEAgLTE0
MCw3ICsxNDAsNyBAQCB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lcwogewogICAgIGlmICghbV9kb2N1
bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50
eXBlKCksIG1lc3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOworICAgIG1f
ZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4obWVzc2FnZS0+c291cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2
ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgpLCAwKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNj
b3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29u
dHJvbGxlci5jcHAKaW5kZXggMWNlZTllYjM0MjFjZDk5YTU2Yzg4NjBiOGVjZGQ0NTk2ZjgwZDJk
ZS4uNzEzMzkwMGYxNzFlZWY0MTU2NzNkNGU5MGQ1Y2Y3N2NmZWJjMmJiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAt
MTM2LDcgKzEzNiw3IEBAIHZvaWQgV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRX
aXRoU3ViY2xhc3MoKQogICAgIEFTU0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmds
b2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJU
KGFzT2JqZWN0KG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0
KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7
CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xl
Q2xpZW50PigqbV93b3JrbGV0R2xvYmFsU2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1h
a2VVbmlxdWU8V29ya2xldENvbnNvbGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CiAg
ICAgbV93b3JrbGV0R2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29s
ZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxF
cnJvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAppbmRleCBiMDIxY2NlMTUz
YzMxOTI5NTBhMmJmNzdkODA5YTI4NDdhYjBmMGMxLi5hNjMyN2I5ZGZmMWI3NmJiNTgyYzYzNjAz
ODE1MjQyOGM3MWFhODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3Jz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCkBAIC0zNyw2ICszNyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBYTUxFcnJvcnMg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFhN
TEVycm9ycyhEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApp
bmRleCBjZDYxMzIyNjk3OTc5ZDZmNzI1ZGJkN2I2ODU0MTViZTM1OGZmMmFmLi4wNTI5MzQ0MDFm
NmI4MWE4MmI0Njg4MWJkMDIwZTVkNGUyZTU2MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJl
c3BvbnNlVVJMKCkgY29uc3QKIFhNTEh0dHBSZXF1ZXN0VXBsb2FkJiBYTUxIdHRwUmVxdWVzdDo6
dXBsb2FkKCkKIHsKICAgICBpZiAoIW1fdXBsb2FkKQotICAgICAgICBtX3VwbG9hZCA9IHN0ZDo6
bWFrZV91bmlxdWU8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+KCp0aGlzKTsKKyAgICAgICAgbV91cGxv
YWQgPSBtYWtlVW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX3VwbG9hZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXgg
YWQ3ZTEzYzhhMTk0YWQ1NmQ2MjM0MjAwMDE3Y2JhNzdmZTgwYjc0Mi4uYTkyNDQwOWVlNDZjNTNl
NzNiMjdhNDlhMTllZmU5Njk3MjE2NzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlv
bnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1doaXRlc3BhY2Uo
VUNoYXIgYykKICAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8
fCBjID09ICdcdCc7CiB9CiAKLSNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFUT1IoU3VmZml4
KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlvbiMjU3VmZml4
KCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQorI2RlZmluZSBE
RUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihTdWZmaXgpIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnVu
Y3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNTdWZmaXgoKSB7IHJldHVybiBtYWtlVW5pcXVlPEZ1biMj
U3VmZml4PigpOyB9CiAKIGNsYXNzIEludGVydmFsIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4IDA0NjE1YzNkNWYwMzEzMTA2OTM4ZmFhMDVmYjM5Yzk5
Y2UxMjNiNWMuLmMxYmJjNTRlYjgzMDE2OTExOWM4NjgzMWE0ZjJhNmU3YzAwNDU2OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wg
ZXZhbHVhdGVQcmVkaWNhdGUoY29uc3QgRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKIAogICAgIC8v
IGZvb1szXSBtZWFucyBmb29bcG9zaXRpb24oKT0zXQogICAgIGlmIChyZXN1bHQuaXNOdW1iZXIo
KSkKLSAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVuY3Rpb246OmNy
ZWF0ZSgicG9zaXRpb24iX3MpLCBzdGQ6Om1ha2VfdW5pcXVlPE51bWJlcj4ocmVzdWx0LnRvTnVt
YmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOworICAgICAgICByZXR1cm4gRXFUZXN0T3Ao
RXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlvbjo6Y3JlYXRlKCJwb3NpdGlvbiJfcyksIG1ha2VVbmlx
dWU8TnVtYmVyPihyZXN1bHQudG9OdW1iZXIoKSkpLmV2YWx1YXRlKCkudG9Cb29sZWFuKCk7CiAK
ICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggZWMyYzZhZTA0NTlhMDY5MjU2YTY2MmY3MmM4
NzI2N2ZlYTFhNDViZC4uNjMwNGU5MjgxMWE5MzRmN2RlNzRjOGM5NGIyYjY5YzAwNGVhNDk2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldHMoKQogCiB2b2lk
IFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZikKIHsKLSAg
ICBhdXRvIGNoaWxkUnVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8WFNMSW1wb3J0UnVsZT4odGhpcywg
aHJlZik7CisgICAgYXV0byBjaGlsZFJ1bGUgPSBtYWtlVW5pcXVlPFhTTEltcG9ydFJ1bGU+KHRo
aXMsIGhyZWYpOwogICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkUnVsZS5yZWxlYXNlKCkpOwog
ICAgIG1fY2hpbGRyZW4ubGFzdCgpLT5sb2FkU2hlZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZTAyNGVmYjU2YmY2NTJi
OTBhOWExZDRmODEzMDY0OTE4MzBkOGUwZi4uNzA0ODg5MmE1YWEwZWY5YTU1ZmJkMjQwOGNkMTc5
MTRkMDJhOWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlci5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjph
cHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5wdXRTb3VyY2UpCiB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjpoYW5kbGVFcnJvcihYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFy
KiBtLCBUZXh0UG9zaXRpb24gcG9zaXRpb24pCiB7CiAgICAgaWYgKCFtX3htbEVycm9ycykKLSAg
ICAgICAgbV94bWxFcnJvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFhNTEVycm9ycz4oKmRvY3VtZW50
KCkpOworICAgICAgICBtX3htbEVycm9ycyA9IG1ha2VVbmlxdWU8WE1MRXJyb3JzPigqZG9jdW1l
bnQoKSk7CiAgICAgbV94bWxFcnJvcnMtPmhhbmRsZUVycm9yKHR5cGUsIG0sIHBvc2l0aW9uKTsK
ICAgICBpZiAodHlwZSAhPSBYTUxFcnJvcnM6Ondhcm5pbmcpCiAgICAgICAgIG1fc2F3RXJyb3Ig
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGI5MzEwMWI4YWFjNDgzOWEzOWJiNTRiMmI4OWRlODk4
Yzc5Yjc1YWIuLmI5OWIzMDg5NzM4NTUwOWViYWIwNDUyMTM5NzUzOWIwNzBjZWU3MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKGNvbnN0IHhtbENoYXIq
IHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciogeG1sUHJlZml4LCBjb25zdCB4bWxDaGFyKiB4
bWxVUkksIGludCBudW1OYW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyKiogbmFtZXNwYWNlcywgaW50
IG51bUF0dHJpYnV0ZXMsIGludCBudW1EZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIqKiBhdHRyaWJ1
dGVzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBt
YWtlVW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigpOwogCiAgICAgICAgIGNh
bGxiYWNrLT54bWxMb2NhbE5hbWUgPSB4bWxTdHJkdXAoeG1sTG9jYWxOYW1lKTsKICAgICAgICAg
Y2FsbGJhY2stPnhtbFByZWZpeCA9IHhtbFN0cmR1cCh4bWxQcmVmaXgpOwpAQCAtMTIyLDEyICsx
MjIsMTIgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZEVuZEVs
ZW1lbnROU0NhbGxiYWNrKCkKICAgICB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4oKSk7CisgICAgICAgIG1f
Y2FsbGJhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4o
KSk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2soY29uc3QgeG1s
Q2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s+KCk7CiAKICAgICAg
ICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAgIGNhbGxiYWNrLT5s
ZW4gPSBsZW47CkBAIC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAK
ICAgICB2b2lkIGFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKGNvbnN0IHhtbENo
YXIqIHRhcmdldCwgY29uc3QgeG1sQ2hhciogZGF0YSkKICAgICB7Ci0gICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxs
YmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT50YXJnZXQg
PSB4bWxTdHJkdXAodGFyZ2V0KTsKICAgICAgICAgY2FsbGJhY2stPmRhdGEgPSB4bWxTdHJkdXAo
ZGF0YSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAg
ICB2b2lkIGFwcGVuZENEQVRBQmxvY2tDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVu
KQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGlu
Z0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlx
dWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9
IHhtbFN0cm5kdXAocywgbGVuKTsKICAgICAgICAgY2FsbGJhY2stPmxlbiA9IGxlbjsKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5k
Q29tbWVudENhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMpCiAgICAgewotICAgICAgICBhdXRvIGNh
bGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNrPigpOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNrPigp
OwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RyZHVwKHMpOwogCkBAIC0xNjYsNyArMTY2
LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZEludGVybmFs
U3Vic2V0Q2FsbGJhY2soY29uc3QgeG1sQ2hhciogbmFtZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJu
YWxJRCwgY29uc3QgeG1sQ2hhciogc3lzdGVtSUQpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxi
YWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjaz4oKTsK
KyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0ludGVybmFsU3Vic2V0
Q2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPm5hbWUgPSB4bWxTdHJkdXAobmFtZSk7
CiAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbElEID0geG1sU3RyZHVwKGV4dGVybmFsSUQpOwpA
QCAtMTc3LDcgKzE3Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBh
cHBlbmRFcnJvckNhbGxiYWNrKFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IHhtbENo
YXIqIG1lc3NhZ2UsIE9yZGluYWxOdW1iZXIgbGluZU51bWJlciwgT3JkaW5hbE51bWJlciBjb2x1
bW5OdW1iZXIpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nRXJyb3JDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VV
bmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPm1lc3Nh
Z2UgPSB4bWxTdHJkdXAobWVzc2FnZSk7CiAgICAgICAgIGNhbGxiYWNrLT50eXBlID0gdHlwZTsK
QEAgLTE5Nyw2ICsxOTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogcHJpdmF0ZToK
ICAgICBzdHJ1Y3QgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5nQ2FsbGJhY2soKSA9IGRlZmF1
bHQ7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIp
ID0gMDsKICAgICB9OwpAQCAtNTY0LDcgKzU2NSw3IEBAIGJvb2wgWE1MRG9jdW1lbnRQYXJzZXI6
OnN1cHBvcnRzWE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24pCiBYTUxEb2N1bWVudFBh
cnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBGcmFtZVZpZXcqIGZy
YW1lVmlldykKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAs
IG1fdmlldyhmcmFtZVZpZXcpCi0gICAgLCBtX3BlbmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3Vu
aXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VV
bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUoJmRvY3VtZW50
KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBv
c2l0aW9uKCkpCiB7CkBAIC01NzIsNyArNTczLDcgQEAgWE1MRG9jdW1lbnRQYXJzZXI6OlhNTERv
Y3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAK
IFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJz
ZXJDb250ZW50UG9saWN5KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50
LmRvY3VtZW50KCksIHBhcnNlckNvbnRlbnRQb2xpY3kpCi0gICAgLCBtX3BlbmRpbmdDYWxsYmFj
a3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAgICwgbV9wZW5kaW5n
Q2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1fY3VycmVu
dE5vZGUoJmZyYWdtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3NpdGlv
bjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3BhcnNpbmdGcmFnbWVudCh0cnVlKQpA
QCAtMTMyOCw3ICsxMzI5LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQoKQogICAg
ICAgICB4bWxUcmVlVmlld2VyLnRyYW5zZm9ybURvY3VtZW50VG9UcmVlVmlldygpOwogICAgIH0g
ZWxzZSBpZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsKICAgICAgICAgeG1sRG9jUHRyIGRvYyA9IHht
bERvY1B0ckZvclN0cmluZyhkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLCBtX29y
aWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLnRvU3RyaW5nKCksIGRvY3VtZW50KCktPnVybCgpLnN0
cmluZygpKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6bWFr
ZV91bmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2MpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0
VHJhbnNmb3JtU291cmNlKG1ha2VVbmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2MpKTsKIAogICAg
ICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUgZG9jdW1lbnQg
dGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IFhTTCBzdHlsZXNoZWV0cy4KICAgICAg
ICAgZG9jdW1lbnQoKS0+YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jtc05vd0lmU2NoZWR1bGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291
cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCAwNWJjOTUzZjdmMGRkYzc4
N2IxZTYzMDQ4NzY5NmMyMDg1OWNhZTBmLi5kNjllMTQ5OTJkNTg2NzUxY2EwNDM0MjYzNjJhNmY0
MWMyNjk5ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTY1Nyw3
ICs2NTcsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNvbm5lY3RUb0Jyb3dzZXIoVmVjdG9y
PENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBzZXNzaW9uSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8U2Vzc2lvbkhvc3Q+
KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7CisgICAgYXV0byBzZXNzaW9uSG9zdCA9IG1h
a2VVbmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7CiAgICAg
YXV0byogc2Vzc2lvbkhvc3RQdHIgPSBzZXNzaW9uSG9zdC5nZXQoKTsKICAgICBzZXNzaW9uSG9z
dFB0ci0+Y29ubmVjdFRvQnJvd3NlcihbdGhpcywgY2FwYWJpbGl0aWVzTGlzdCA9IFdURk1vdmUo
Y2FwYWJpbGl0aWVzTGlzdCksIHNlc3Npb25Ib3N0ID0gV1RGTW92ZShzZXNzaW9uSG9zdCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJyb3IpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwIGIvU291cmNlL1dlYkRy
aXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKaW5kZXggN2EyMGI4OTQxYWZmNzJhODUyYjc2
ZjVjNTUxMDYyNjU0Nzc0YTFjYy4uMTc3YWE1NGYyMjI5N2FjMzE2MTRkMzUzYmU5ZjNhNzlkMWFh
YjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5j
cHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKQEAgLTEx
Myw2ICsxMTMsNyBAQCBib29sIFNlc3Npb25Ib3N0Ojppc0Nvbm5lY3RlZCgpIGNvbnN0CiB9CiAK
IHN0cnVjdCBDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CiAgICAgQ29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YShTZXNzaW9uSG9z
dCogc2Vzc2lvbkhvc3QsIEdVbmlxdWVQdHI8Y2hhcj4mJiBkYnVzQWRkcmVzcywgR0NhbmNlbGxh
YmxlKiBjYW5jZWxsYWJsZSwgRnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogc2Vzc2lvbkhvc3Qoc2Vzc2lvbkhvc3Qp
CiAgICAgICAgICwgZGJ1c0FkZHJlc3MoV1RGTW92ZShkYnVzQWRkcmVzcykpCkBAIC0xNzMsNyAr
MTc0LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChP
cHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21wbGUKICAgICB9LCB0aGlzKTsKIAogICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZGJ1c0FkZHJlc3MoZ19zdHJkdXBfcHJpbnRmKCJ0Y3A6aG9zdD0lcyxw
b3J0PSV1IiwgIjEyNy4wLjAuMSIsIHBvcnQpKTsKLSAgICBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6
bWFrZV91bmlxdWU8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVz
QWRkcmVzcyksIG1fY2FuY2VsbGFibGUuZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KSk7CisgICAgY29ubmVjdFRvQnJvd3NlcihtYWtlVW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3lu
Y0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQogCiB2b2lkIFNlc3Npb25Ib3N0Ojpjb25u
ZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPiYm
IGRhdGEpCkBAIC0zNzEsNiArMzcyLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQKIH0KIAog
c3RydWN0IE1lc3NhZ2VDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgbG9uZyBtZXNzYWdlSUQ7CiAgICAgU2Vzc2lvbkhvc3QqIGhvc3Q7CiB9OwpAQCAt
MzgxLDcgKzM4Myw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGxv
bmcgbWVzc2FnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKG1fY29ubmVj
dGlvbklEKTsKICAgICBBU1NFUlQobV90YXJnZXQuaWQpOwogCi0gICAgYXV0byBtZXNzYWdlQ29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsg
bWVzc2FnZUlELCB0aGlzIH0pOworICAgIGF1dG8gbWVzc2FnZUNvbnRleHQgPSBtYWtlVW5pcXVl
PE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKICAg
ICBnX2RidXNfY29ubmVjdGlvbl9jYWxsKG1fZGJ1c0Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIs
CiAgICAgICAgIElOU1BFQ1RPUl9EQlVTX09CSkVDVF9QQVRILAogICAgICAgICBJTlNQRUNUT1Jf
REJVU19JTlRFUkZBQ0UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCmluZGV4IGI2MmYxMmUxODJmMjFlYjhkNTEw
NzRjYjI1NGQ3YjIxMmUwY2VkMTkuLmI0NDVlN2E2NWE0OGQwNzQ4YmQ3ZTkyMDVhMzQ0MGY3ZjFh
OTU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAyZTI5NmIyOWY0M2E0ZmM4
OGU3MDA5MzI0YTVlMjNiMGJlOWNkNTFjLi45MzAzZDJhZGMxNWVmNmZiMzEwYjZmYjE2ZDA3MGNj
ODUzZmRjM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKCkK
ICAgICBpZiAocmVzb3VyY2VMb2dQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNl
TG9nUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyldIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1f
ZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1f
d29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
XSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICAg
ICAgfQogICAgIH0KIAotICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVN
b25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVN
b25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgbV9maWxlTW9uaXRvciA9IG1ha2VV
bmlxdWU8RmlsZU1vbml0b3I+KHN0b3JhZ2VQYXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0
aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlmICh0eXBlID09IEZpbGVNb25pdG9yOjpG
aWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbCkgewogICAgICAgICAgICAgLy8gRGlyZWN0b3J5IHdhcyBy
ZW1vdmVkIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZS5oCmluZGV4IDRjMDMzZTM1M2Q0ZjMwOGY3Zjc2MDAxMmNhOTYyOTYzMDNj
MTA3MzAuLjcxZjM0YmZhM2Q2YzJiNTI3NjE2ODk0NGVlMzM0YzczZGFmNTAzMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOwogCiAvLyBDYW4gb25seSBiZSBjb25zdHJ1Y3RlZCAvIGRlc3Ryb3llZCAvIHVzZWQgZnJv
bSB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljIHF1ZXVlLgog
Y2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUmLCBXb3JrUXVldWUmLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICAg
ICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMjA5NDVkYTA5OGE2ODBhMGE0ZTk5
NzdmZDc1MjQ3MGY2NzhkOTk1Zi4uZmRiOTJiNDU1ZDk3NDlmNDZiNTAyYTI2MjVkYTNkZGVhYjFh
ODNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNzgs
NiArNzgsNyBAQCBlbnVtIGNsYXNzIE9wZXJhdGluZ0RhdGVzV2luZG93IDogYm9vbCB7IExvbmcs
IFNob3J0IH07CiAKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ry
b3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBx
dWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICB1c2luZyBSZWdpc3RyYWJsZURv
bWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA2NzVmMGRhZjU5Y2U5YjRmODg3Yjc5
NGJjODkyZWM0NGE4Mzc1NmYzLi5mMjI4NjYzNTVjNWFmNWEyNjIwNTYzN2FlNTJmZGY3MWM5MTYy
MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtMTU5LDE1ICsxNTksMTUgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG4KICAgICAKICAg
ICBwb3N0VGFzayhbdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3RdIHsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuaXNJVFBEYXRhYmFzZUVuYWJsZWQoKSkgewotICAgICAgICAgICAgbV9zdGF0aXN0
aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3Qs
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgbV9zdGF0aXN0
aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
PigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCi0gICAgICAgICAgICBhdXRvIG1lbW9yeVN0
b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+
KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAg
ICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGlj
c1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIGF1
dG8gbWVtb3J5U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsK
KyAgICAgICAgICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNz
UXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCiAgICAgICAgICAgICBk
b3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGlj
c1N0b3JlLmdldCgpKS5wb3B1bGF0ZUZyb21NZW1vcnlTdG9yZSgqbWVtb3J5U3RvcmUpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlz
dGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAgICAgIG1fcGVyc2lz
dGVudFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
PigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IG1ha2VV
bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0
aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgICAgICAgICAgbV9wZXJzaXN0
ZW50U3RvcmFnZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0
YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FKDE5MzI5Nyk6IFRoaXMg
c2hvdWxkIGJlIHJldmlzZWQgYWZ0ZXIgdGhlIFVJUHJvY2VzcyB2ZXJzaW9uIGdvZXMgYXdheS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29v
a2llTWFuYWdlci5oCmluZGV4IDYwNWFlZjNlNmVlOTUwZjM5NDgzZmNkOGNjNGQ4ZTY1OGUwMmNm
MGMuLmJiZTM5ODQ3NTJiZTE0NjA1MGQ1MDM1NzEzNzE1NTBmYjJjYjYzYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuaApAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzOwogCiBjbGFzcyBXZWJDb29raWVNYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNz
U3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb29raWVNYW5hZ2Vy
KTsKIHB1YmxpYzoKICAgICBXZWJDb29raWVNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9MZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCmluZGV4IGRjNzll
ZWJjZjE4ZGJmNjdiNDY0YzM1ODYxMGZiM2NlN2NmZTkwY2MuLmY5MGYwZmNiNDE5MDI0YjhhOTVm
NTc3MGM5Yjc5OTdiNTc4NGIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5oCkBAIC02Myw2ICs2Myw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNz
Owogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
cik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyKE5l
dHdvcmtQcm9jZXNzJik7CkBAIC03OCw2ICs3OSw3IEBAIGNsYXNzIExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6
CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICBzdHJ1Y3QgV2ViU291cFJlcXVlc3RBc3luY0Rh
dGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdl
YlNvdXBSZXF1ZXN0QXN5bmNEYXRhKEdSZWZQdHI8R1Rhc2s+JiYsIFdlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpYyopOwogICAgICAgICB+V2ViU291cFJlcXVlc3RBc3luY0RhdGEoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9M
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
U291cC5jcHAKaW5kZXggMmM0ZDJmZjk0ODA5YzQyYTYxMTY3M2I1ZmI1Y2FkYmZhNTkxNjA0ZS4u
YzliMGMzYjIxNTdhZDhhZWJlNzQ2ZjRmMzlmYjVlZmNkNzVlNzE1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclNvdXAu
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIGNsYXNzIEN1c3RvbVByb3RvY29sUmVxdWVzdENsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJLaXRTb3VwUmVxdWVzdEdlbmVyaWNDbGllbnQKICAgICAgICAgaWYg
KCFjdXN0b21Qcm90b2NvbE1hbmFnZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
YXV0byBjdXN0b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Q
cm90b2NvbChzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2Vi
U291cFJlcXVlc3RBc3luY0RhdGE+KFdURk1vdmUodGFzayksIHJlcXVlc3QpKTsKKyAgICAgICAg
YXV0byBjdXN0b21Qcm90b2NvbElEID0gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyLT5hZGRDdXN0b21Q
cm90b2NvbChtYWtlVW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcjo6V2ViU291cFJl
cXVlc3RBc3luY0RhdGE+KFdURk1vdmUodGFzayksIHJlcXVlc3QpKTsKICAgICAgICAgY3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLT5zdGFydExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCwgd2Via2l0U291
cFJlcXVlc3RHZW5lcmljR2V0UmVxdWVzdChyZXF1ZXN0KSk7CiAgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwCmluZGV4IGY0ZDc1ZDlkZDMxODIwMDQ0OWEyYWIyZTU4ZTg4NjMxMjBjNzc3NDQu
LjUwN2Y0ZjZmZmMzZDQwNjljMTM3ODI2NTI3NWM2NjA2NTRiNGM4MzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3du
bG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYQogICAgICAg
ICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVlc3QudXJsKCkpOwog
ICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpVc2U7CiAKLSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2Fk
SUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBkb3dubG9h
ZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
LT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fk
cy5hZGQoZG93bmxvYWRJRCwgbWFrZVVuaXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyks
IGRvd25sb2FkSUQsICpuZXR3b3JrU2Vzc2lvbiwgJmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLCBzdWdnZXN0ZWROYW1lKSk7CiB9CiAKIHZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElEIGRvd25s
b2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4mJiBkb3dubG9hZCkKQEAgLTkwLDcgKzkw
LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OndpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0
aW5hdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHcKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252
ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtMb2FkPiYmIG5ldHdvcmtMb2FkLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlPj4mJiBibG9iRmlsZVJlZmVyZW5jZXMsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQVNT
RVJUKCFtX3BlbmRpbmdEb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotICAgIG1fcGVu
ZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRG93
bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93bmxvYWRzKCksIFdU
Rk1vdmUobmV0d29ya0xvYWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG93bmxvYWRJ
RCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25s
b2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAK
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3Rp
bmF0aW9uKERvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3Zl
cndyaXRlKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZWxzZQotICAgIGF1dG8g
ZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwg
bnVsbHB0ciwgc2Vzc2lvbklEKTsKKyAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3du
bG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CiAKICAgICBkb3du
bG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpOwogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYXAuY3BwCmluZGV4IGE4ODRhY2IyOTVkNDJjZTkzZTIxYmFjNDMzMDg0ZDdiYmM0MzNlNjUu
LmFlM2NhN2UwZTRlZTdlYzg1ZGVhMmUzMDllMWQzYzIwYjc0OTY1MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgRG93bmxvYWRNYXA6OkRvd25sb2FkTWFwVHlwZTo6QWRkUmVzdWx0
IERvd25sb2FkTWFwOjphZGQoRG93bmxvYWRJRCBkb3dubG9hZElELAogICAgIGF1dG8gcmVzdWx0
ID0gbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBp
ZiAobV9kb3dubG9hZHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2Fk
QXNzZXJ0aW9uKTsKLSAgICAgICAgbV9kb3dubG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0cGlkKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fZG93bmxvYWRBc3Nl
cnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRv
d25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogICAgICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlRvb2sgJ1dlYktpdCBkb3dubG9hZHMn
IGFzc2VydGlvbiBpbiBOZXR3b3JrUHJvY2VzcyIpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5j
cHAKaW5kZXggYTI3ODI4ZDdhOGJkODRhN2FlMzc3MTY4Njc4NjkxYzc2N2YyNzk2ZC4uNTkxMjNm
MmM0OGYxYzFlNDE3OWJiMWQ1YmNlMTU3MGM2Yjc1NGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIFBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKElQQzo6Q29ubmVjdGlv
biogcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24sIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNz
aW9uLCBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnksIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkTmFtZSkKLSAgICA6IG1fbmV0d29ya0xvYWQoc3RkOjptYWtlX3VuaXF1ZTxO
ZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0
d29ya1Nlc3Npb24pKQorICAgIDogbV9uZXR3b3JrTG9hZChtYWtlVW5pcXVlPE5ldHdvcmtMb2Fk
PigqdGhpcywgYmxvYlJlZ2lzdHJ5LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBuZXR3b3JrU2Vzc2lv
bikpCiAgICAgLCBtX3BhcmVudFByb2Nlc3NDb25uZWN0aW9uKHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKQogewogICAgIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgPSBwYXJhbWV0
ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5
QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IGJiZTlhOWFhNDZhOTYzNDAyODJmNzBkMmQzZDRmYzJkZDNjNGU4MmQuLjI0ZDI4MTFkMGNhM2Q0
MTU5YmEzODFhMTdkNjZiYTNjOTEyMTVhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlclNXQ29ubmVjdGlvbnMoKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIHNlcnZlciA9IG1f
bmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwotICAgIGF1dG8g
Y29ubmVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25l
dHdvcmtQcm9jZXNzLCBzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKKyAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4obV9u
ZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCk7CiAg
ICAgCiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciA9IGNvbm5lY3Rpb24tPmlkZW50aWZpZXIoKTsKICAgICBMT0coU2VydmljZVdvcmtl
ciwgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24gLSAlcyIsIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKaW5kZXggNDQ0MjBmZjVm
ZjIyOTliZTM3NTRjZTM3Y2RkYzdlZTYxNjJlMTkzMS4uNTQzNTI4MjhlNjg3MjFhZjBiYWRlMGMw
Mjc1YmUyZjA5NWExNjYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgdm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6Y29udGVudEV4dGVu
c2lvbnNCYWNrZW5kKFVzZXJDb250ZW50Q29udHJvbGwKIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxl
TGlzdE1hbmFnZXI6OmFkZENvbnRlbnRSdWxlTGlzdHMoVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhPj4mJiBjb250ZW50UnVsZUxpc3RzKQogewogICAgIGF1dG8mIGJh
Y2tlbmQgPSAqbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZHMuZW5zdXJlKGlkZW50aWZpZXIsIFtd
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBmb3IgKGF1dG8mJiBjb250ZW50
UnVsZUxpc3QgOiBjb250ZW50UnVsZUxpc3RzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAppbmRleCA4NTZjYTFmMDk1ZTEw
M2M1NDJhZDRlNDMwMDBiY2I3MGZmMWZiMzA3Li44YTZjNWExZjIxOGQzYzlhYjIxMDRkZjA5NDY5
MmNjM2Y2NTUyMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IHdlYktpdEJsb2JSZXNvdXJjZURvbWFpbiA9ICJXZWJLaXRCbG9iUmVzb3VyY2Ui
OwogCiBOZXR3b3JrRGF0YVRhc2tCbG9iOjpOZXR3b3JrRGF0YVRhc2tCbG9iKE5ldHdvcmtTZXNz
aW9uJiBzZXNzaW9uLCBCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnksIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENvbnRl
bnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mIGZpbGVSZWZlcmVuY2VzKQogICAgIDog
TmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OkRvTm90VXNlLCBmYWxzZSwgZmFsc2UpCi0gICAgLCBtX3N0cmVhbShzdGQ6Om1h
a2VfdW5pcXVlPEFzeW5jRmlsZVN0cmVhbT4oKnRoaXMpKQorICAgICwgbV9zdHJlYW0obWFrZVVu
aXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoZmls
ZVJlZmVyZW5jZXMpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKHNlc3Npb24ubmV0d29ya1Byb2Nl
c3MoKSkKIHsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRv
d25sb2FkKCkKICAgICB9CiAKICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBtX25ldHdvcmtQ
cm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKTsKLSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtl
X3VuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAq
dGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAg
YXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9w
ZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3Rl
ZEZpbGVuYW1lKCkpOwogICAgIGF1dG8qIGRvd25sb2FkUHRyID0gZG93bmxvYWQuZ2V0KCk7CiAg
ICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKG1fcGVuZGluZ0Rv
d25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICAgICBkb3dubG9hZFB0ci0+ZGlkQ3JlYXRl
RGVzdGluYXRpb24obV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
Y3BwCmluZGV4IGY2NTQyOTU4YjQ3MTAzZDM4MWY4Y2M1MzcwZDlkNmI1OTRkYzExNmMuLjE5MzI2
ZjJmNDdkYzlmNGY2MjI4YTRjOWFhODRmNmM5ZmFhYmI3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
Y3BwCkBAIC02Nyw3ICs2Nyw3IEBAIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlcigpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBtX2RhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZT4oKTsKKyAgICAgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRl
RGF0YWJhc2U+KCk7CiAgICAgICAgIGJvb2wgaXNEYXRhYmFzZU9wZW4gPSBtX2RhdGFiYXNlLT5v
cGVuKHBhdGgsIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpPcGVuTW9kZTo6UmVhZE9ubHkpOwog
ICAgICAgICBpZiAoIWlzRGF0YWJhc2VPcGVuKSB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04
MCw3ICs4MCw3IEBAIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlcigpCiAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSB1c2luZyBhIHdvcmtlclF1ZXVl
LCB0aGUgc2VxdWVudGlhbCBkaXNwYXRjaCBibG9ja3MgbWF5IGJlIGNhbGxlZCBieSBkaWZmZXJl
bnQgdGhyZWFkcy4KICAgICAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZVRocmVhZGluZ0NoZWNrcygp
OwogCi0gICAgICAgIG1fc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpTUUxp
dGVTdGF0ZW1lbnQ+KCptX2RhdGFiYXNlLCBodHRwc1VwZ3JhZGVDaGVja2VyUXVlcnkpOworICAg
ICAgICBtX3N0YXRlbWVudCA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Pigq
bV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5KTsKICAgICAgICAgaW50IGlzU3Rh
dGVtZW50UHJlcGFyZWQgPSAobV9zdGF0ZW1lbnQtPnByZXBhcmUoKSA9PSBTUUxJVEVfT0spOwog
ICAgICAgICBBU1NFUlQoaXNTdGF0ZW1lbnRQcmVwYXJlZCk7CiAgICAgICAgIGlmICghaXNTdGF0
ZW1lbnRQcmVwYXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaAppbmRleCBkY2Q0NmE2MDFiZTYzMDk4NmZj
MmFlMGMxYzk2NTU4Yzk1OTIyMDhhLi41MWQyMDMxNGVhYTQ5ZTk2YTQxYTU3Y2U4ZDQyMjI2YmJm
YjA3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIFNlc3Np
b25JRDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIoKTsKICAgICB+TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXgg
OTEwN2ZlYzFlMzRkYjQ0ODgxNjIyODY4NjIyYzhmYmViNWIzODgzYy4uZWU4MGFjNmVhMWE3Nzk3
NzNhMDcxMGUxNzg4NzA2Mzc2N2M1MTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtMb2Fk
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25z
ZUNvbXBsZQogICAgIH0KIAogICAgIGlmIChtX2xvYWRUaHJvdHRsZUxhdGVuY3kgPiAwX3MpIHsK
LSAgICAgICAgbV90aHJvdHRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VGhyb3R0bGU+KCp0aGlzLCBt
X2xvYWRUaHJvdHRsZUxhdGVuY3ksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgICAgIG1fdGhyb3R0bGUgPSBtYWtlVW5pcXVlPFRocm90dGxlPigq
dGhpcywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXgg
MTE3NmY1MzdhODU4MDliNGJhZTFjZTc2OGI1NjUzNWIxNWQ1ZWJiMy4uZjlhNGQwNDEzNjUyMWFm
NWE1OTQyODdhYjQyYmU0Y2VkZjY4MzI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHZv
aWQgTmV0d29ya0xvYWRDaGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0CiAgICAgICAgIG1fZnJhbWVJRCwKICAgICAgICAgbV9zdG9y
ZWRDcmVkZW50aWFsc1BvbGljeQogICAgIH07Ci0gICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQ
cm9jZXNzLmdldCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcywgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5k
bGVyID0gV1RGTW92ZShoYW5kbGVyKSwgaXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1
dG8mJiBlcnJvcikgbXV0YWJsZSB7CisgICAgbV9jb3JzUHJlZmxpZ2h0Q2hlY2tlciA9IG1ha2VV
bmlxdWU8TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyPihtX25ldHdvcmtQcm9jZXNzLmdldCgp
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcywgW3RoaXMsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBoYW5kbGVyID0gV1RGTW92
ZShoYW5kbGVyKSwgaXNSZWRpcmVjdGVkID0gaXNSZWRpcmVjdGVkKCldKGF1dG8mJiBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNoZWNrQ09SU1JlcXVl
c3RXaXRoUHJlZmxpZ2h0IC0gbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGln
aHQgcHJlZmxpZ2h0IGNvbXBsZXRlLCBzdWNjZXNzOiAlZCBmb3JSZWRpcmVjdD8gJWQiLCBlcnJv
ci5pc051bGwoKSwgaXNSZWRpcmVjdGVkKTsKIAogICAgICAgICBpZiAoIWVycm9yLmlzTnVsbCgp
KSB7CkBAIC00NDYsNyArNDQ2LDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBOZXR3b3JrTG9h
ZENoZWNrZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeSAmJiBtX2NzcFJlc3BvbnNlSGVhZGVycykgewogICAgICAgICAvLyBGSVhN
RTogUGFzcyB0aGUgVVJMIG9mIHRoZSBwcm90ZWN0ZWQgcmVzb3VyY2UgaW5zdGVhZCBvZiBpdHMg
b3JpZ2luLgotICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJp
bmcoKSB9KTsKKyAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBtYWtlVW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkg
fSk7CiAgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5LT5kaWRSZWNlaXZlSGVhZGVycygq
bV9jc3BSZXNwb25zZUhlYWRlcnMsIFN0cmluZyB7IG1fcmVmZXJyZXIgfSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRQYXJzaW5nRXJyb3JzOjpObyk7CiAgICAgfQogICAgIHJldHVybiBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZmJlOGU2OGFmZTgyOGU4NWYwNTkwMTNl
NjcxZDFmMGQ3YzQ5ZDkwZi4uMTQ0MzBlYjc2YTQwOTNiMTQxNGVjMWI4Zjk1OGIwZWE0YTEyYTM1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKQEAgLTUwOSw5ICs1MDksOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKCkKICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVS
TFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vz
c2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3Zl
KGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBt
YWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9y
YWdlKSk7CiAjZWxpZiBVU0UoQ1VSTCkgfHwgVVNFKFNPVVApCi0gICAgbV9kZWZhdWx0TmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIG1fZGVm
YXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICNlbmRp
ZgogfQogCkBAIC01NDEsOSArNTQxLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vz
c2lvbihjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcKICAgICAg
ICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNv
b2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsK
ICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lv
biksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3Zl
KHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZWxpZiBVU0UoQ1VS
TCkgfHwgVVNFKFNPVVApCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOworICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vz
c2lvbklEKTsKICNlbmRpZgogfQogCkBAIC0yNDY0LDcgKzI0NjQsNyBAQCBTV1NlcnZlciYgTmV0
d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CiAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm90LCB0aGVuIHdoZXJlIGRpZCB0aGlzIFBBTDo6U2Vz
c2lvbklEIGNvbWUgZnJvbT8KICAgICAgICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
IHx8ICFwYXRoLmlzRW1wdHkoKSk7CiAgICAgICAgIAotICAgICAgICBhdXRvIHZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigp
LCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQpOworICAgICAgICBhdXRvIHZhbHVlID0gbWFrZVVu
aXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBXVEZNb3Zl
KHBhdGgpLCBzZXNzaW9uSUQpOwogICAgICAgICBpZiAobV9zaG91bGREaXNhYmxlU2VydmljZVdv
cmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KQogICAgICAgICAgICAgdmFsdWUtPmRpc2FibGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKICAgICAgICAgcmV0dXJuIHZh
bHVlOwpAQCAtMjU3Niw2ICsyNTc2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0
b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE8KIH0KIAog
Y2xhc3MgUXVvdGFVc2VySW5pdGlhbGl6ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFn
ZVF1b3RhVXNlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgUXVvdGFVc2VySW5pdGlhbGl6ZXIoU3RvcmFnZVF1b3RhTWFuYWdlciYgbWFuYWdl
cikKICAgICAgICAgOiBtX21hbmFnZXIobWFrZVdlYWtQdHIobWFuYWdlcikpCkBAIC0yNjEwLDcg
KzI2MTEsNyBAQCBjbGFzcyBRdW90YVVzZXJJbml0aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpTdG9yYWdlUXVvdGFVc2VyIHsKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6
ZVF1b3RhVXNlcnMoU3RvcmFnZVF1b3RhTWFuYWdlciYgbWFuYWdlciwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHNlc3Np
b25JRCwgb3JpZ2luLCB1c2VyID0gc3RkOjptYWtlX3VuaXF1ZTxRdW90YVVzZXJJbml0aWFsaXpl
cj4obWFuYWdlcildKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQsIG9yaWdpbiwgdXNl
ciA9IG1ha2VVbmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6ZXI+KG1hbmFnZXIpXSgpIG11dGFibGUg
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0
aGlzLT5pZGJTZXJ2ZXIoc2Vzc2lvbklEKS5pbml0aWFsaXplUXVvdGFVc2VyKG9yaWdpbik7CkBA
IC0yNjI0LDcgKzI2MjUsNyBAQCBTdG9yYWdlUXVvdGFNYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6
c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgICAgICByZXR1
cm4gU3RvcmFnZVF1b3RhTWFuYWdlcnMgeyB9OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAg
ICByZXR1cm4gKnN0b3JhZ2VRdW90YU1hbmFnZXJzLm1hbmFnZXJzUGVyT3JpZ2luKCkuZW5zdXJl
KG9yaWdpbiwgW3RoaXMsICZzdG9yYWdlUXVvdGFNYW5hZ2Vycywgc2Vzc2lvbklELCAmb3JpZ2lu
XSB7Ci0gICAgICAgIGF1dG8gbWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3Rh
TWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFuYWdlcnMuZGVmYXVsdFF1b3RhKG9yaWdpbiksIFt0aGlz
LCBzZXNzaW9uSUQsIG9yaWdpbl0odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTcGFj
ZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgeworICAgICAgICBhdXRv
IG1hbmFnZXIgPSBtYWtlVW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KHN0b3JhZ2VRdW90YU1h
bmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBbdGhpcywgc2Vzc2lvbklELCBvcmlnaW5dKHVp
bnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVh
c2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAgICAgIHRoaXMtPnJlcXVlc3RTdG9yYWdlU3Bh
Y2Uoc2Vzc2lvbklELCBvcmlnaW4sIHF1b3RhLCBjdXJyZW50U3BhY2UsIHNwYWNlSW5jcmVhc2Us
IFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgfSk7CiAgICAgICAgIGluaXRpYWxpemVRdW90
YVVzZXJzKCptYW5hZ2VyLCBzZXNzaW9uSUQsIG9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMzIxMWU5MGY2NTE4MzZhM2IwNzZj
MzIyYWFiODYzNDgxN2Q0YzczYS4uNDA5NGM2NjlkMDg5MWY0OGQxNDM5YWYzYWZhZTg4MGI2NGUw
MjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aApAQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzIDogcHVibGljIEF1eGls
aWFyeVByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQsCiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAg
IG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8
VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUo
KSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAppbmRleCBlYzZhODBjODQ4OWRlZjMyZDc4OWI3NGJlYzEyNzM1N2JlYzU1ODM1
Li41N2RkMzBhYzE2YTViZGFmODFlNzU0NzEzNThiNzhkNzk1ODk5YzU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0xMTEsNyArMTExLDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXIKIAogICAgIGlmIChz
eW5jaHJvbm91c1JlcGx5IHx8IHBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VB
Y2Nlc3MgfHwgcGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSkgewogICAgICAgICBOZXR3b3Jr
TG9hZENoZWNrZXI6OkxvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSA9IGlzTWFpbkZyYW1lTG9hZCgp
ID8gTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZTo6TWFpbkZyYW1lIDogTmV0d29ya0xvYWRD
aGVja2VyOjpMb2FkVHlwZTo6T3RoZXI7Ci0gICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyID0g
c3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rpb24ubmV0d29ya1By
b2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnMgfSwgbV9wYXJhbWV0
ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3BhcmFtZXRlcnMuc291
cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSwgb3JpZ2lu
YWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVu
YWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpLCByZXF1ZXN0TG9h
ZFR5cGUpOworICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IG1ha2VVbmlxdWU8TmV0d29y
a0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZldGNoT3B0aW9ucyB7
IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBIVFRQSGVhZGVyTWFwIHsg
bV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsgbV9wYXJhbWV0ZXJz
LnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5jb3B5UmVmKCksIG1f
cGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJl
cigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKICAgICAgICAgaWYgKG1f
cGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgICAgICBtX25ldHdvcmtMb2Fk
Q2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyB7IG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMudmFsdWUoKSB9KTsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTE5LDcgKzExOSw3IEBAIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzJiYgcGFyCiAjZW5kaWYKICAgICB9CiAgICAgaWYgKHN5bmNocm9ub3VzUmVw
bHkpCi0gICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3lu
Y2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7CisgICAgICAgIG1f
c3luY2hyb25vdXNMb2FkRGF0YSA9IG1ha2VVbmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RG
TW92ZShzeW5jaHJvbm91c1JlcGx5KSk7CiB9CiAKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6fk5l
dHdvcmtSZXNvdXJjZUxvYWRlcigpCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Rmlyc3RMb2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBuZXR3b3Jr
U2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2Iob3JpZ2luYWxSZXF1ZXN0KCkudXJs
KCkpOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKLSAgICBt
X25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3
b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3Jr
U2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0
aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRO
ZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggNjg0OWIzMGY4ZDQ2Yzk1NzRjYWVkMTQxNDU2MmRl
ZTU3NGI5OWJmMC4uZjNlMWMwNmNjMzZmMWZhZDljZDFmMjVkY2E2ZTI5MzFmYTExNGE0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtNjQs
NiArNjQsNyBAQCBjbGFzcyBDYWNoZTsKIH0KIAogY2xhc3MgTmV0d29ya1Nlc3Npb24gOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNz
aW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycyYmKTsKICAgICB2aXJ0dWFsIH5OZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAppbmRleCAw
NGUzZDAyNTIyMGRlNGM0M2M3MzYyZGExNDFkZjMyYmEyMDMwZmFmLi41OTE4ODU3NTdhODQ3NTFj
ODMxOGY3YmU1ZDI3NWE3ZjExYzVhNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTb2NrZXRD
aGFubmVsPiBOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgdWludDY0X3Qg
aWRlbnRpZmllcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29y
a1NvY2tldENoYW5uZWw+KGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7
CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25u
ZWN0aW9uLCBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSwgcmVxdWVzdCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0LT5t
X3NvY2tldCkgewogICAgICAgICByZXN1bHQtPmRpZENsb3NlKDAsICJDYW5ub3QgY3JlYXRlIGEg
d2ViIHNvY2tldCB0YXNrIl9zKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmgKaW5kZXgg
NjcyYjM3ODFhNGQ0YTM0YjljMWUxZTI0MTViZDQ5MTBlNzc5ZWQ3MS4uOWRmOWFhY2RjYjMzMmUw
NDFkYjY5YmQwNjgxMDIyOWNmOGJiNGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFz
cyBOZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3Jr
U29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gY3JlYXRlKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlk
ZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCmluZGV4IGQ5MGNjY2E5ODBhOGVmZmMyZDRmMzhmNWUzZjZiYzBhYTJjMmU1NDYu
LjJjNjQyN2U2NDgyMmNlZjVkMWE4MTIwMjVlZmQ2Yzg1NDU0MWNlODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC01Myw3ICs1Myw3
IEBAIFByZWNvbm5lY3RUYXNrOjpQcmVjb25uZWN0VGFzayhOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MsIE5ldHdvcmtMb2FkUGFyYW1lCiAgICAgfQogCiAgICAgQVNTRVJUKHBhcmFtZXRl
cnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPT0gUHJlY29ubmVjdE9ubHk6Olllcyk7Ci0gICAgbV9u
ZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRy
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xv
YWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25l
U2hvdCg2MDAwMF9zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU29ja2V0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2Nr
ZXRUYXNrLmgKaW5kZXggM2E1OWZmYTZhMWEwOGQ2M2RlNWJmZjU5ZTNmNjk0NmYwZTQwOGViNC4u
MDQ3OTkyMDg5NmRhMjU3ZmM1ODY0NTE2MGMwMDA5ZDE2NGNlNWZmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTb2NrZXRUYXNrIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIHVpbnQ2NF90IFRhc2tJZGVudGlm
aWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCA4ZjQ3NjNjOWRjODZh
YjRhNDJkOTQ2ZjI2ZGIyOGJjYzY5MDI5Y2JlLi4yMDE0NTNmODQzNzA0NjdlNDMzMDVhMGE1NTk0
MmYzZTViOGJjMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTI0NSw3
ICsyNDUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpzY2hlZHVsZURhdGFiYXNlVXBk
YXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2Rpc2FibGVTdWRkZW5UZXJtaW5h
dGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlKQotICAgICAgICBtX2Rpc2FibGVTdWRkZW5U
ZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxT
dWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyPigpOworICAgICAgICBtX2Rpc2FibGVTdWRkZW5UZXJt
aW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gbWFrZVVuaXF1ZTxTdWRkZW5UZXJt
aW5hdGlvbkRpc2FibGVyPigpOwogCiAgICAgbV9kaWRTY2hlZHVsZURhdGFiYXNlVXBkYXRlID0g
dHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwCmluZGV4IDNlOWQxN2Q2MDJkMzQxNzcwMzNjOTMzOGI0YmJlNmRhMGJhYmE4
YTQuLmIwODNkNWQzMmE1MWU2MWRhNDM3NmRmOTQ0NmVmMTExNGVhNmJmMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAg
LTg0LDE3ICs4NCwxNyBAQCBDYWNoZTo6Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBSZWY8U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8QwogewogI2lmIEVOQUJMRShO
RVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBpZiAob3B0aW9ucy5j
b250YWlucyhDYWNoZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7Ci0gICAgICAg
IG1fbG93UG93ZXJNb2RlTm90aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Okxvd1Bv
d2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKKyAg
ICAgICAgbV9sb3dQb3dlck1vZGVOb3RpZmllciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TG93UG93
ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgewogICAg
ICAgICAgICAgQVNTRVJUKFdURjo6UnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYg
KGlzTG93UG93ZXJNb2RlRW5hYmxlZCkKICAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKCFtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIpOwotICAgICAgICAgICAgICAgIG1fc3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFu
YWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9zcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhp
cywgbV9zdG9yYWdlLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAg
IGlmICghbV9sb3dQb3dlck1vZGVOb3RpZmllci0+aXNMb3dQb3dlck1vZGVFbmFibGVkKCkpCi0g
ICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOworICAgICAgICAg
ICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMzc1
LDEyICszNzUsMTIgQEAgdm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICAKIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25z
ZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3Qs
IHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShy
ZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVj
dFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IENhY2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25z
ZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QsIHJlc3Bv
bnNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0
KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1
ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1
ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9y
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC00NTcsNyArNDU3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNo
ZTo6dXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXEKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gZXhpc3RpbmdFbnRyeS5yZXNw
b25zZSgpOwogICAgIFdlYkNvcmU6OnVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0
aW9uKHJlc3BvbnNlLCB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCi0gICAgYXV0byB1cGRhdGVFbnRy
eSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnkua2V5KCksIHJlc3BvbnNl
LCBleGlzdGluZ0VudHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIG9yaWdpbmFs
UmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gbWFrZVVuaXF1ZTxF
bnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50cnkuYnVmZmVy
KCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3Mo
KS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSkpOwog
ICAgIGF1dG8gdXBkYXRlUmVjb3JkID0gdXBkYXRlRW50cnktPmVuY29kZUFzU3RvcmFnZVJlY29y
ZCgpOwogCiAgICAgbV9zdG9yYWdlLT5zdG9yZSh1cGRhdGVSZWNvcmQsIHsgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwCmluZGV4IDdhZTFjMmZlN2RjZTYwN2I5ZjhhNTNkOTlhMWJkNzk4NTM5OWJjZjEuLjFm
NDE0NGE4ZmFlODdiZjVmYzVjODNlZDkwMmI2ZmYwOGEwNjRhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
CkBAIC0xMDksNyArMTA5LDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3Jh
Z2VSZWNvcmQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5OjpkZWNvZGVT
dG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQogewotICAg
IGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihzdG9yYWdlRW50cnkpOworICAg
IGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAgV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgp
LCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShl
bnRyeS0+bV9yZXNwb25zZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5k
ZXggOTRiNjA2OGEwZGZlZDc0MmZhZmZkZTU3Njg4NzA1YWU3YTQ2MjAxYi4uYmI5N2M3YTNmMjc2
MTc2ZDA5ZmY0ODM1YjJmM2I5N2VmMmU1OGZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcApAQCAtNTksNyArNTksNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZl
TG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAg
IHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gQ29udGVudFNuaWZmaW5nUG9saWN5
OjpEb05vdFNuaWZmQ29udGVudDsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5ID0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmOwogICAgIHBh
cmFtZXRlcnMucmVxdWVzdCA9IG1fb3JpZ2luYWxSZXF1ZXN0OwotICAgIG1fbmV0d29ya0xvYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtl
VW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
KmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRl
ZmF1bHRTZXNzaW9uSUQoKSkpOwogfQogCiBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVjdWxhdGl2ZUxv
YWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKaW5k
ZXggMWNkNmI0OTJmODFhNWE4MWQyNGNhNzkxMDhkYTZiMTllMGMwMDNmMS4uNTdlOGU3NTk5YjFj
Y2E2NWIyNmUwNmVjMzg3MmVlMmRkOTQ5ZGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgY2xhc3MgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZDb3VudGVkPFBl
bmRpbmdGcmFtZUwKICAgICB2b2lkIHJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIG1fc3VicmVzb3VyY2VM
b2Fkcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1
YnJlc291cmNlS2V5KSk7CisgICAgICAgIG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBlbmQobWFrZVVu
aXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNlS2V5KSk7CiAgICAgICAg
IG1fbG9hZEh5c3RlcmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CiAgICAgfQogCkBAIC0zNTUsNyAr
MzU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZShjb25zdCBLZXkm
IHN0b3JhZ2VLZXksIFJldHJpZXZlQ29tcGxldGlvbkgKICAgICBBU1NFUlQobV9wZW5kaW5nUHJl
bG9hZHMuY29udGFpbnMoc3RvcmFnZUtleSkpOwogICAgIC8vIEZJWE1FOiBUaGlzIGJyZWFrcyBp
bmNyZW1lbnRhbCBsb2FkaW5nIHdoZW4gdGhlIHJldmFsaWRhdGlvbiBpcyBub3Qgc3VjY2Vzc2Z1
bC4KICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcGVuZGluZ1JldHJpZXZlUmVxdWVzdHMuZW5zdXJl
KHN0b3JhZ2VLZXksIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CiAgICAgfSk7CiAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OmFk
ZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbgogICAgIEFT
U0VSVChlbnRyeSk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogICAg
IGF1dG8ga2V5ID0gZW50cnktPmtleSgpOwotICAgIG1fcHJlbG9hZGVkRW50cmllcy5hZGQoa2V5
LCBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3ZlKGVudHJ5KSwgV1RGTW92
ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJRF0geworICAgIG1fcHJl
bG9hZGVkRW50cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3Zl
KGVudHJ5KSwgV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJ
RF0gewogICAgICAgICBhdXRvIHByZWxvYWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRFbnRyaWVzLnRh
a2Uoa2V5KTsKICAgICAgICAgQVNTRVJUKHByZWxvYWRlZEVudHJ5KTsKICAgICAgICAgaWYgKHBy
ZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpKQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIGJvb2wg
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhjb25zdCBLZXkm
IGtleSwgRW50cnkqIGVudHJ5CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoYXV0
byYgY29tcGxldGlvbkhhbmRsZXIgOiAqY29tcGxldGlvbkhhbmRsZXJzKQotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihlbnRyeSA/IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KCplbnRyeSkgOiBu
dWxscHRyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkgPyBtYWtlVW5pcXVlPEVu
dHJ5PigqZW50cnkpIDogbnVsbHB0cik7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ2OCw3
ICs0NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNv
dXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlcwogCiAgICAgTE9HKE5ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmVseSBy
ZXZhbGlkYXRpbmcgJyVzJzoiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogCi0g
ICAgYXV0byByZXZhbGlkYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVMb2FkPiht
X2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgW3Ro
aXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CisgICAgYXV0byByZXZhbGlkYXRvciA9IG1ha2VVbmlx
dWU8U3BlY3VsYXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0
LCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJ
RF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CiAgICAgICAgIEFT
U0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCAhcmV2YWxpZGF0ZWRFbnRyeS0+bmVlZHNWYWxpZGF0
aW9uKCkpOwogICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgcmV2YWxpZGF0ZWRF
bnRyeS0+a2V5KCkgPT0ga2V5KTsKIApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxG
cmFtZUlEJiBmCiAgICAgICAgICAgICBwcmVsb2FkRW50cnkoa2V5LCBzdWJyZXNvdXJjZUluZm8s
IGZyYW1lSUQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5vdCBwcmVsb2FkaW5nICcl
cycgYmVjYXVzZSBpdCBpcyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwga2V5LmlkZW50aWZpZXIoKS51
dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5
LCBzdGQ6Om1ha2VfdW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsK
KyAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPEV4
cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgICAgICAgICBsb2dT
cGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShtX2NhY2hlLm5ldHdvcmtQcm9jZXNz
KCksIGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZW50cnlSaWdodGx5Tm90V2FybWVk
VXBLZXkoKSk7CiAgICAgICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVzLnJlbW92ZShr
ZXkpOwogICAgICAgICAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggYmJmYzY0OTg5
MGY5NWNjN2UwNGNlODJhNGZlMzI5NDRkYzFhYjFmMC4uODA0YzQyOThjYzNlM2MyODE0ZmRiYzJi
YmI2Y2JlZTU3NTg0YWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0yOTAsOCArMjkwLDgg
QEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3Jh
Z2UsICIoTmV0d29ya1Byb2Nlc3MpIHN5bmNocm9uaXppbmcgY2FjaGUiKTsKIAogICAgIGJhY2tn
cm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcmVjb3JkRmlsdGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKLSAgICAgICAgYXV0byBibG9iRmlsdGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAgYXV0byByZWNvcmRGaWx0
ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRvIGJsb2JGaWx0
ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwogCiAgICAgICAgIC8vIE1vc3Qgb2Yg
dGhlIGRpc2sgc3BhY2UgdXNhZ2UgaXMgaW4gYmxvYnMgaWYgd2UgYXJlIHVzaW5nIHRoZW0uIEFw
cHJveGltYXRlIHJlY29yZHMgZmlsZSBzaXplcyB0byBhdm9pZCBleHBlbnNpdmUgc3RhdCgpIGNh
bGxzLgogICAgICAgICBzaXplX3QgcmVjb3Jkc1NpemUgPSAwOwpAQCAtNDg5LDcgKzQ4OSw3IEBA
IHZvaWQgU3RvcmFnZTo6cmVhZFJlY29yZChSZWFkT3BlcmF0aW9uJiByZWFkT3BlcmF0aW9uLCBj
b25zdCBEYXRhJiByZWNvcmREYXRhKQogICAgIH0KIAogICAgIHJlYWRPcGVyYXRpb24uZXhwZWN0
ZWRCb2R5SGFzaCA9IG1ldGFEYXRhLmJvZHlIYXNoOwotICAgIHJlYWRPcGVyYXRpb24ucmVzdWx0
UmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJlY29y
ZCB7CisgICAgcmVhZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBtYWtlVW5pcXVlPFN0b3JhZ2U6
OlJlY29yZD4oU3RvcmFnZTo6UmVjb3JkIHsKICAgICAgICAgbWV0YURhdGEua2V5LAogICAgICAg
ICBtZXRhRGF0YS50aW1lU3RhbXAsCiAgICAgICAgIGhlYWRlckRhdGEsCkBAIC03NTgsNyArNzU4
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgcmV0cmlldmVGcm9tTWVtb3J5KGNvbnN0IFQm
IG9wZXJhdGlvbnMsIGNvbnN0IEtleSYga2V5LAogICAgICAgICBpZiAob3BlcmF0aW9uLT5yZWNv
cmQua2V5ID09IGtleSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIo
TmV0d29ya1Byb2Nlc3MpIGZvdW5kIHdyaXRlIG9wZXJhdGlvbiBpbiBwcm9ncmVzcyIpOwogICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZWNvcmQgPSBvcGVyYXRpb24tPnJl
Y29yZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29yZCksIHsgfSk7CisgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29yZCksIHsgfSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBA
IC04NjIsNyArODYyLDcgQEAgdm9pZCBTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBLZXkmIGtleSwg
dW5zaWduZWQgcHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlvbkhhbmQKICAgICBpZiAocmV0cmll
dmVGcm9tTWVtb3J5KG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLCBrZXksIGNvbXBsZXRpb25IYW5k
bGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWFkT3BlcmF0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZWFkT3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgYXV0byByZWFkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxSZWFkT3BlcmF0
aW9uPigqdGhpcywga2V5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICByZWFk
T3BlcmF0aW9uLT50aW1pbmdzLnN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAg
IHJlYWRPcGVyYXRpb24tPnRpbWluZ3MuZGlzcGF0Y2hDb3VudEF0U3RhcnQgPSBtX3JlYWRPcGVy
YXRpb25EaXNwYXRjaENvdW50OwpAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgU3RvcmFnZTo6c3Rv
cmUoY29uc3QgUmVjb3JkJiByZWNvcmQsIE1hcHBlZEJvZHlIYW5kbGVyJiYgbWFwcGVkQm9keUhh
bmRsZXIsCiAgICAgaWYgKCFtX2NhcGFjaXR5KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IHdyaXRlT3BlcmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZU9wZXJhdGlvbj4oKnRoaXMs
IHJlY29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBhdXRvIHdyaXRlT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxXcml0ZU9wZXJh
dGlvbj4oKnRoaXMsIHJlY29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBtX3BlbmRpbmdXcml0ZU9wZXJhdGlvbnMucHJlcGVu
ZChXVEZNb3ZlKHdyaXRlT3BlcmF0aW9uKSk7CiAKICAgICAvLyBBZGQga2V5IHRvIHRoZSBmaWx0
ZXIgYWxyZWFkeSBoZXJlIGFzIHdlIGRvIGxvb2t1cHMgZnJvbSB0aGUgcGVuZGluZyBvcGVyYXRp
b25zIHRvby4KQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0
IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRyYXZlcgogICAg
IEFTU0VSVCh0cmF2ZXJzZUhhbmRsZXIpOwogICAgIC8vIEF2b2lkIG5vbi10aHJlYWQgc2FmZSBG
dW5jdGlvbiBjb3BpZXMuCiAKLSAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhpcyksIHR5cGUsIGZsYWdz
LCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikpOworICAgIGF1dG8gdHJhdmVyc2VPcGVyYXRpb25Q
dHIgPSBtYWtlVW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlzKSwgdHlwZSwg
ZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CiAgICAgYXV0byYgdHJhdmVyc2VPcGVy
YXRpb24gPSAqdHJhdmVyc2VPcGVyYXRpb25QdHI7CiAgICAgbV9hY3RpdmVUcmF2ZXJzZU9wZXJh
dGlvbnMuYWRkKFdURk1vdmUodHJhdmVyc2VPcGVyYXRpb25QdHIpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAppbmRleCA3Yjg4OTIyOTk1MzlkYjM0YzViMzkxNGQz
YjIxNGNlOGI4MTQzYjk4Li42M2FkMDQwOWZkZDIzNmY2ZTNjMmNhMzBlODdlNGE3YzBhMjk1OTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAtOTMsNyArOTMs
NyBAQCBTdG9yYWdlOjpSZWNvcmQgU3VicmVzb3VyY2VzRW50cnk6OmVuY29kZUFzU3RvcmFnZVJl
Y29yZCgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gU3VicmVz
b3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBz
dG9yYWdlRW50cnkpCiB7Ci0gICAgYXV0byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VicmVz
b3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRyeSA9IG1ha2VVbmlxdWU8
U3VicmVzb3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0b3JhZ2VFbnRy
eS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5LT5tX3N1YnJl
c291cmNlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Q
cmVmZXRjaENhY2hlLmNwcAppbmRleCBkOGEwNTk0MGQ3MTk3ZWIzMjI1YTM2YmM1MTNhMmRiNjEw
ZGIwY2Q4Li43MTA0ZDFmNzRjZDcwMWNiY2VjZmFiNTdkMjRlYmZmOGRhZWJlZGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAKQEAgLTczLDggKzczLDggQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVv
dXQgeyA1X3MgfTsKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0
VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hl
cykKLSAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0
Y2hFbnRyaWVzTWFwPigpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uUHJlZmV0Y2hl
cy0+YWRkKHJlcXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+
KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgbV9zZXNzaW9u
UHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOworICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmwsIG1ha2VVbmlx
dWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGJ1ZmZl
cikpKTsKICAgICAvLyBMaW1pdCBwcmVmZXRjaGVzIGZvciBzYW1lIHVybCB0byAxLgogICAgIGlm
ICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2LDkgKzg2LDkg
QEAgdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmVSZWRp
cmVjdChjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAgICBtX3Nlc3Npb25Q
cmVmZXRjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CisgICAg
ICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4o
KTsKICAgICByZWRpcmVjdFJlcXVlc3QuY2xlYXJQdXJwb3NlKCk7Ci0gICAgbV9zZXNzaW9uUHJl
ZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNoZTo6
RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVkaXJlY3RSZXF1ZXN0
KSkpOworICAgIG1fc2Vzc2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0VXJsLCBtYWtlVW5pcXVl
PFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3Zl
KHJlZGlyZWN0UmVxdWVzdCkpKTsKICAgICBtX3Nlc3Npb25FeHBpcmF0aW9uTGlzdC5hcHBlbmQo
c3RkOjptYWtlX3R1cGxlKHJlcXVlc3RVcmwsIFdhbGxUaW1lOjpub3coKSkpOwogICAgIGlmICgh
bV9leHBpcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9leHBpcmF0aW9uVGltZXIu
c3RhcnRPbmVTaG90KGV4cGlyYXRpb25UaW1lb3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXggYTE3MTBiYWU5ZTVhODg1
MjZjZWZhM2IzOWFhNzg4ZmFhZjJjZmEwZS4uYTI1MTUyMGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIz
MWExYmVkMTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgUHJlZmV0Y2hDYWNoZSB7
CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBF
bnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDA3N2YxNmZhNjUwNjUyYzc4N2E2ZjAzMTYw
OTA5MDI2OGViYjhhYzAuLmNjZTI2YWNmYjA0Y2Y3MDc0ZTc2M2Y1YmJjOGU0YTVlOThhMTVjOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQwogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PiBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBj
b25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogUmV0YWluUHRyPENGRGF0YVJlZj4gTmV0
d29ya1Byb2Nlc3M6OnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3QKQEAgLTI3Niw3
ICsyNzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVByb2Nlc3NEaWRUcmFuc2l0
aW9uVG9Gb3JlZ3JvdW5kKCkKIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyJiBOZXR3b3JrUHJv
Y2Vzczo6bmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogewogICAgIGlmICghbV9uZXR3b3Jr
SFRUUFNVcGdyYWRlQ2hlY2tlcikKLSAgICAgICAgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI+KCk7CisgICAg
ICAgIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyPigpOwogICAgIHJldHVybiAqbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDRhNjFkZjE0ZGNmZjJlNmMzZDBlMDkw
ZWQzZTUxY2I2MDMxNWU2NDQuLjQ2ODY4OTM1YzZjNjQyYzIwNDgyODhmYmUzODc5MDNjMDEyODIw
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTgwMiw3ICs4MDIsNyBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFU
YXNrICopZGF0YQogICAgICAgICBSZWY8TmV0d29ya0RhdGFUYXNrQ29jb2E+IHByb3RlY3RlZE5l
dHdvcmtEYXRhVGFzaygqbmV0d29ya0RhdGFUYXNrKTsKICAgICAgICAgYXV0byBkb3dubG9hZElE
ID0gbmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpOwogICAgICAgICBhdXRvJiBk
b3dubG9hZE1hbmFnZXIgPSBfc2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5kb3dubG9hZE1hbmFn
ZXIoKTsKLSAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpE
b3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNz
aW9uLT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsK
KyAgICAgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpEb3dubG9hZD4oZG93
bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5zZXNzaW9u
SUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAgICAgbmV0
d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpkb3dubG9h
ZCk7CiAgICAgICAgIEFTU0VSVChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRhVGFz
ay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOwogICAgICAgICBkb3dubG9hZC0+ZGlkQ3Jl
YXRlRGVzdGluYXRpb24obmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigp
KTsKQEAgLTg5Nyw3ICs4OTcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldENURGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU2Vzc2lvbj4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKE5ldHdvcmtQ
cm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNz
aW9uQ29jb2E+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2VzcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnByb3h5RGljdGlvbmFy
eShjb25zdCBVUkwmIGh0dHBQcm94eSwgY29uc3QgVVJMJiBodHRwc1Byb3h5KQpAQCAtMTMyMSw3
ICsxMzIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtTZXNzaW9u
Q29jb2E6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1MKIHsKICAgICAvLyBGSVhNRTogVXNl
IHByb3RvY29sLgogICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25XZWJTb2NrZXRUYXNrPiB0YXNr
ID0gW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5nZXQoKSB3ZWJTb2NrZXRUYXNrV2l0
aFJlcXVlc3Q6IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9s
aWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KV07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Nlc3Npb25Db2NvYTo6YWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJiB0YXNr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2Nr
ZXRUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29j
a2V0VGFza0NvY29hLmgKaW5kZXggOTM3ZTI4NzMyYmU1NzQzMjYxNjlkODU0ZGY2NGMxNTEzZTJi
NjhhMy4uZjZjZDdhOTI4Yjk3Mzg4MTZjMzg5YTk1N2M4YTkxZGU4YzI1YjI3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNrQ29jb2Eu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tD
b2NvYS5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgTmV0
d29ya1NvY2tldENoYW5uZWw7CiAKIGNsYXNzIFdlYlNvY2tldFRhc2sgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8V2ViU29ja2V0VGFzaz4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBSZXRhaW5Q
dHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzaz4mJik7CiAgICAgfldlYlNvY2tldFRhc2soKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJv
Y2Vzc0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQ
cm9jZXNzQ3VybC5jcHAKaW5kZXggYmU2ODAxZjMwY2RmNDkwMDI1NGMyMjRiOWIxMWZiZGY3M2Zl
MmUzMS4uNWJlMTcwMjY2ZjQ1YjhiZjcyZWY1NmIxMDA4N2NiNTliYjU2ZGJhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNz
Q3VybC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBB
TDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQ
U0NlcnRpZmljYXRlRm9ySG9zdChjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5m
bywgY29uc3QgU3RyaW5nJiBob3N0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCmluZGV4IGQ0NzA5YTVlNGFjOGEyZmI2
YWNlYjU2YzU3ZWJmMGI1Yzc0MGQ0NTYuLmUxOGE0MzkwYjE4OGEyN2U5MzE4YzUyNDA0NTVmMDY0
Y2Y2YmQ2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrU2Vzc2lvbkN1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgTmV0d29ya1Nl
c3Npb25DdXJsIGZpbmFsIDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
U2Vzc2lvbkN1cmw+KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2Vzcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgfQogICAgIE5ldHdvcmtTZXNzaW9uQ3VybChOZXR3
b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIH5O
ZXR3b3JrU2Vzc2lvbkN1cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1Mu
bW0KaW5kZXggMjM3NDUyODhhMDZkMDExNDU5MTk2OGI1MDg2ZGViNWY0NWFhMGFjNi4uYzhiODZj
NTExMTM3ZTM3NGVjMGJlMGMwZWI1YjNmZWI0ZjA5YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NJT1MubW0KQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnBheW1lbnRDb29yZGluYXRvcigpCiB7CiAgICAgaWYgKCFtX3BheW1lbnRDb29yZGluYXRv
cikKLSAgICAgICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7CisgICAgICAgIG1fcGF5bWVudENvb3JkaW5h
dG9yID0gbWFrZVVuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogICAg
IHJldHVybiAqbV9wYXltZW50Q29vcmRpbmF0b3I7CiB9CiAKQEAgLTgyLDcgKzgyLDcgQEAgY29u
c3QgU3RyaW5nJiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5h
dG9yU291cmNlQXBwbGljYXRpb24KIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3Jk
aW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYg
Y29vcmRpbmF0b3IsIFBLUGF5bWVudFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPihjb29yZGluYXRv
ciwgcmVxdWVzdCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25D
b250cm9sbGVyPihjb29yZGluYXRvciwgcmVxdWVzdCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXImKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGQ0NmM1MDNkODFl
OTgzNGU1ZDJhMjU2NjBjODcyM2VhZTdlMTcwZWMuLjRmYWNjODIxM2VmODUwNWNmOWQ1NDhiMjNj
NTY2ZGQzZDBiZTBhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTg5Nyw3ICs4OTcsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkKICAgICBtX2Rvd25sb2FkT3V0cHV0
U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigp
KSk7CiAKICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIgPSBtX3Nlc3Npb24tPm5ldHdvcmtQcm9j
ZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91
bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRo
aXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIGF1
dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVu
ZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRG
aWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwogICAg
IGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdEb3du
bG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURl
c3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRl
eCA4M2MyZjI4ZWE1YzcwMzRkYWE3ZGI2NDYyMWI0NDRlZGQ1ZDk2YWY5Li43YTc0ODFmN2Q0MjVm
MDIzMzdhMGMxMGFkZjlkNjU0ZjcwZWM3ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTMzLDcg
KzEzMyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0
ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNF
cnJvcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Nlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrU2Vzc2lvblNvdXAuY3BwCmluZGV4IDMwZmM4YTUzNTVkMDg0NTJhYzM2MWIxZGNlYTk3
Yzg0ZjM2MDdmZWQuLjQwNzM2MWYwMzZlNzk4OTE3NjdkODA3ZmJiNjNjOTA0NGIyNjBhNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lv
blNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
U2Vzc2lvblNvdXAuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICA6IE5ldHdvcmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJz
KQotICAgICwgbV9uZXR3b3JrU2Vzc2lvbihzdGQ6Om1ha2VfdW5pcXVlPFNvdXBOZXR3b3JrU2Vz
c2lvbj4obV9zZXNzaW9uSUQpKQorICAgICwgbV9uZXR3b3JrU2Vzc2lvbihtYWtlVW5pcXVlPFNv
dXBOZXR3b3JrU2Vzc2lvbj4obV9zZXNzaW9uSUQpKQogewogICAgIGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiAgICAgQVNTRVJUKHN0b3JhZ2VTZXNzaW9u
KTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0
d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTbwogICAgIHJlcXVl
c3QudXBkYXRlU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UuZ2V0KCksIGJsb2JSZWdpc3RyeSgpKTsK
ICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChzb3VwTWVzc2FnZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNL
KHdlYlNvY2tldE1lc3NhZ2VOZXR3b3JrRXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9u
KCksIHNvdXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCks
IHByb3RvY29sKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXgg
ZjllZjRiYjU0MzBiYmY3M2IwNGEwZTNiZWMyNDc5MjhkNTllNzE2Yi4uNDY2YjI3ODJiZjkzYzc3
MDcwZjc5N2RkMzY1MjM0Y2MxZGUzZmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaApAQCAtNDQsNyArNDQsNyBA
QCBjbGFzcyBOZXR3b3JrU2Vzc2lvblNvdXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24g
ewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNy
ZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFy
YW1ldGVycykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+
KG5ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29y
a1Nlc3Npb25Tb3VwKE5ldHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMmJik7CiAgICAgfk5ldHdvcmtTZXNzaW9uU291cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0u
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW0uY3BwCmluZGV4IDZkZGM4MWEzNmQ4NDljYmMyODM3OTNiNjE3MDY3YTI3ZTI5
ZDkxZjAuLjg3NDUyNWUzOGNlNzA0ZWJlMWRhYTcxMGJiNTVjMDFjYzA1OGVhZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElu
cHV0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
IDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIHN0cnVjdCBBc3luY1JlYWREYXRhIHsKKyAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQXN5bmNSZWFkRGF0YShHUmVmUHRy
PEdUYXNrPiYmIHRhc2ssIHZvaWQqIGJ1ZmZlciwgZ3NpemUgY291bnQpCiAgICAgICAgIDogdGFz
ayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAsIGJ1ZmZlcihidWZmZXIpCkBAIC0zOSw2ICs0MCw3
IEBAIHN0cnVjdCBBc3luY1JlYWREYXRhIHsKIH07CiAKIHN0cnVjdCBfV2ViS2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbVByaXZhdGUgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICB1aW50NjRfdCBjb250ZW50TGVuZ3RoOwogICAgIHVpbnQ2NF90IGJ5dGVzUmVjZWl2
ZWQ7CiAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwpAQCAtOTksNyArMTAxLDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlu
cHV0U3RyZWFtLCB2b2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0cmVhbS0+cHJp
di0+cGVuZGluZ0FzeW5jUmVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNSZWFkRGF0YT4oV1RG
TW92ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7CisgICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5
bmNSZWFkID0gbWFrZVVuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIs
IGNvdW50KTsKIH0KIAogc3RhdGljIGdzc2l6ZSB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFt
UmVhZEZpbmlzaChHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgR0Vycm9yKiogZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5oCmluZGV4IGRhODc2MTEwNjQ4MWY5NmE5ZDZhMDAw
MTg0Y2NkMjQwN2IxZjI2NTAuLjVlZjdiNDhlNDIwODM5ZWVmODAwODExYjBkOTc0MGY0NGUwMWYw
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2Nr
ZXRUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJT
b2NrZXRUYXNrU291cC5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgTmV0d29ya1NvY2tldENoYW5uZWw7CiAKIGNsYXNzIFdlYlNvY2tldFRhc2sgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlNvY2tldFRhc2soTmV0d29y
a1NvY2tldENoYW5uZWwmLCBTb3VwU2Vzc2lvbiosIFNvdXBNZXNzYWdlKiwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCk7CiAgICAgfldlYlNvY2tldFRhc2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgK
aW5kZXggOGYyMDVjZTAyOTcxM2Q4YmEyMTNmMTQzYmE3MWJiMTE0NzUyZGVmNS4uMjJhYmRlYzY5
ZGIyNDVhNGNmOTgzZjI0N2IzOGY3MmQ5MDBhNmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTGliV2ViUlRDU29ja2V0Q2xpZW50LmgK
QEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrUlRDUHJv
dmlkZXI7CiAKIGNsYXNzIExpYldlYlJUQ1NvY2tldENsaWVudCBmaW5hbCA6IHB1YmxpYyBzaWdz
bG90OjpoYXNfc2xvdHM8PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBUeXBlIHsgVURQLCBTZXJ2ZXJUQ1AsIENsaWVudFRDUCwgU2VydmVy
Q29ubmVjdGlvblRDUCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmluZGV4IGU3ODY1NjhmZjUw
NWE3Yjg3MTc4NzBkZjU3ZmE1N2QxNWY1ZDc3NjMuLjkyNjY2OGMzOGZmZjcwOGFlNTAyZjU4ZmQ0
MTUyODgwM2VjNTU1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBA
IHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6dW5yZWdpc3Rlck1ETlNOYW1lcyhXZWJDb3JlOjpE
b2N1bWVudElkZW50aWZpZXIgZG9jdW1lCiB9CiAKIHN0cnVjdCBQZW5kaW5nUmVnaXN0cmF0aW9u
UmVxdWVzdCB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFBlbmRp
bmdSZWdpc3RyYXRpb25SZXF1ZXN0KFJlZjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24sIHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgICAgIDogY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAg
ICAgICAsIHJlcXVlc3RJZGVudGlmaWVyKHJlcXVlc3RJZGVudGlmaWVyKQpAQCAtMTM1LDcgKzEz
Niw3IEBAIHZvaWQgTmV0d29ya01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZSh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgUEFMOjpTZXNzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIHBlbmRpbmdSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nUmVnaXN0
cmF0aW9uUmVxdWVzdD4obWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgcmVxdWVz
dElkZW50aWZpZXIsIFdURk1vdmUobmFtZSksIHNlc3Npb25JRCk7CisgICAgYXV0byBwZW5kaW5n
UmVxdWVzdCA9IG1ha2VVbmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VSZWYo
bV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5h
bWUpLCBzZXNzaW9uSUQpOwogICAgIGF1dG8qIHJlY29yZCA9ICZwZW5kaW5nUmVxdWVzdC0+cmVj
b3JkOwogICAgIGF1dG8gZXJyb3IgPSBETlNTZXJ2aWNlUmVnaXN0ZXJSZWNvcmQoc2VydmljZSwK
ICAgICAgICAgcmVjb3JkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCmluZGV4IDM1M2VhYzhjZTExYjY5MDZl
ZmFkZDJmZDI3MThiOTdhYjUyY2RhNGQuLmFiNzA2ZGMyZTkzNGE5YTdlZjk5MjY4OTc5NzRiZGM3
NTRlYTNkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBOZXR3
b3JrUlRDTW9uaXRvcjo6c3RhcnRVcGRhdGluZygpCiB7CiAgICAgbV9pc1N0YXJ0ZWQgPSB0cnVl
OwogICAgIG1fcnRjUHJvdmlkZXIuY2FsbE9uUlRDTmV0d29ya1RocmVhZChbdGhpc10oKSB7Ci0g
ICAgICAgIG1fbWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpCYXNpY05ldHdvcmtNYW5h
Z2VyPigpOworICAgICAgICBtX21hbmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CiAgICAgICAgIG1fbWFuYWdlci0+U2ln
bmFsTmV0d29ya3NDaGFuZ2VkLmNvbm5lY3QodGhpcywgJk5ldHdvcmtSVENNb25pdG9yOjpvbk5l
dHdvcmtzQ2hhbmdlZCk7CiAgICAgICAgIG1fbWFuYWdlci0+U3RhcnRVcGRhdGluZygpOwogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5jcHAKaW5kZXggYTVhYzU3MjEzNzlkYjNkMWIyNTg3NTU4NjEw
MzBiYmE0ZGI5ZWI4ZS4uMTVkNDRkMGFkOWRiMGYzYjA1OTllMWEzM2VmY2ZkYjg5NjFhNjVkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUHJvdmlkZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIE5ldHdvcmtSVENQcm92aWRl
cjo6TmV0d29ya1JUQ1Byb3ZpZGVyKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uCiAgICAgOiBtX2Nvbm5lY3Rpb24oJmNvbm5lY3Rpb24pCiAgICAgLCBtX3J0Y01vbml0
b3IoKnRoaXMpCiAgICAgLCBtX3J0Y05ldHdvcmtUaHJlYWQoY3JlYXRlVGhyZWFkKCkpCi0gICAg
LCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0U29j
a2V0RmFjdG9yeT4obV9ydGNOZXR3b3JrVGhyZWFkLmdldCgpKSkKKyAgICAsIG1fcGFja2V0U29j
a2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2lj
UGFja2V0U29ja2V0RmFjdG9yeT4obV9ydGNOZXR3b3JrVGhyZWFkLmdldCgpKSkKIHsKICNpZiBk
ZWZpbmVkKE5ERUJVRykKICAgICBydGM6OkxvZ01lc3NhZ2U6OkxvZ1RvRGVidWcocnRjOjpMU19O
T05FKTsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIE5ldHdvcmtSVENQcm92aWRlcjo6Y3JlYXRl
U29ja2V0KHVpbnQ2NF90IGlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxydGM6OgogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwg
c3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlz
LCBXVEZNb3ZlKHNvY2tldCksIHR5cGUpKTsKKyAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgbWFr
ZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3Zl
KHNvY2tldCksIHR5cGUpKTsKIH0KIAogdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVVE
UFNvY2tldCh1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBSVENOZXR3b3JrOjpTb2NrZXRBZGRy
ZXNzJiBhZGRyZXNzLCB1aW50MTZfdCBtaW5Qb3J0LCB1aW50MTZfdCBtYXhQb3J0KQpAQCAtMTUz
LDcgKzE1Myw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjp3cmFwTmV3VENQQ29ubmVjdGlv
bih1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBuZXdDCiB7CiAgICAgY2FsbE9uUlRDTmV0
d29ya1RocmVhZChbdGhpcywgaWRlbnRpZmllciwgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZp
ZXJdKCkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjpBc3luY1BhY2tldFNvY2tldD4g
c29ja2V0ID0gbV9wZW5kaW5nSW5jb21pbmdTb2NrZXRzLnRha2UobmV3Q29ubmVjdGlvblNvY2tl
dElkZW50aWZpZXIpOwotICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENTb2NrZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNv
Y2tldCksIExpYldlYlJUQ1NvY2tldENsaWVudDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCkp
OworICAgICAgICBhZGRTb2NrZXQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2Nr
ZXRDbGllbnQ+KGlkZW50aWZpZXIsICp0aGlzLCBXVEZNb3ZlKHNvY2tldCksIExpYldlYlJUQ1Nv
Y2tldENsaWVudDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCkpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDM4MzgyYjA5ZDRm
YjNiZTI2NGY4OWI3Nzg0MWE0MWQ3YzA4Y2FjMDUuLmM1ZWY2ZDk5YTU2MGRkMTQ4OGYxODQ5OTVh
ZThhN2IxNmQ5YWQyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
Y3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFdvcmtRdWV1
ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxFbmNvZGVyPigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAg
ICBhdXRvIHJlcGx5RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVz
c2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CiAKICAgICAvLyBIYW5kIG9mZiBib3RoIHRoZSBk
ZWNvZGVyIGFuZCBlbmNvZGVyIHRvIHRoZSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIuCiAg
ICAgd29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLmRpZFJlY2VpdmVTeW5jTWVzc2FnZSgqdGhpcywg
ZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIENvbm5lY3Rp
b246Om1hcmtDdXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxFbmNvZGVyPiBDb25uZWN0aW9uOjpjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoU3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDY0X3QmIHN5bmNSZXF1ZXN0SUQpCiB7
Ci0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPihtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVy
ID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlTmFtZSwg
ZGVzdGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+c2V0SXNTeW5jTWVzc2FnZSh0cnVlKTsKIAog
ICAgIC8vIEVuY29kZSB0aGUgc3luYyByZXF1ZXN0IElELgpAQCAtNzU2LDcgKzc1Niw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6ZW5hYmxlSW5jb21pbmdNZXNzYWdlc1Rocm90dGxpbmcoKQogICAgIGlm
IChtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
aW5jb21pbmdNZXNzYWdlc1Rocm90dGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZXNUaHJv
dHRsZXI+KCp0aGlzLCAmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3NhZ2VzKTsKKyAg
ICBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPE1lc3NhZ2VzVGhyb3R0
bGVyPigqdGhpcywgJkNvbm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk7CiB9CiAK
IHZvaWQgQ29ubmVjdGlvbjo6cG9zdENvbm5lY3Rpb25EaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtR
dWV1ZSgpCkBAIC04NDMsNyArODQzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNN
ZXNzYWdlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIHJlcGx5RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5j
TWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBt
YWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0
SUQpOwogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYm
IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSAiV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3Rpbmci
KSB7CiAgICAgICAgIGlmICghbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3Rp
bmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCAyMGY1ZWM1
YjIwMmJlYzJiZGY1OGYwMjBlYmRlZWY4MzE0OTMxMWJmLi5hZGM0YWFkOTg4MThmYTA2YWZjNmJl
ODk2MTQ1ZDU2MzE1ODMyZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCkBAIC00MzMsNyArNDMzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdl
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4KIHsKICAgICBD
T01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBh
dXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlx
dWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgIAogICAgIHJl
dHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CkBAIC00NDgs
NyArNDQ4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3Nh
Z2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QKIHsKICAgICBDT01QSUxFX0FTU0VS
VCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpuYW1lKCks
IGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4o
VDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgdWludDY0
X3QgbGlzdGVuZXJJRCA9IG5leHRBc3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+
ZW5jb2RlKGxpc3RlbmVySUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50
cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggY2NhMDczOTBh
ZGVjNDQ2ZGU3NDY2Y2Y4ZTEwMTIzYzI3OTM4NTM1Mi4uZmQ1MTcwMTcxMmIwNjI5ZDQ3MjUyZDA0
MDg5NmM2NGZjYmNiYjJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAK
QEAgLTEyMyw3ICsxMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gRGVjb2Rlcjo6dW53
cmFwRm9yVGVzdGluZyhEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
d3JhcHBlZE1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEoKSwgd3JhcHBlZE1l
c3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RGVjb2Rlcj4od3JhcHBlZE1lc3NhZ2UuZGF0YSgpLCB3cmFwcGVkTWVzc2Fn
ZS5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0KIAogc3RhdGljIGlu
bGluZSBjb25zdCB1aW50OF90KiByb3VuZFVwVG9BbGlnbm1lbnQoY29uc3QgdWludDhfdCogcHRy
LCB1bnNpZ25lZCBhbGlnbm1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKaW5kZXggODU0NTJjZGE3ZTA0NWU0NDU1ZTA3YjkzYmFmY2EzNWIxMDIwMDExZS4u
YTc0OWFhYjg3MDA1NGNlYjY5MGU1ZjE0ZjQwNzU2M2ZmY2QwZjliOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQg
aGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29k
ZXIsIEMqIG9iamVjdCwgTUYKICAgICB9CiAKICAgICB0eXBlbmFtZSBUOjpBc3luY1JlcGx5IGNv
bXBsZXRpb25IYW5kbGVyID0gW2xpc3RlbmVySUQgPSAqbGlzdGVuZXJJRCwgY29ubmVjdGlvbiA9
IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7Ci0gICAgICAg
IGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIkFzeW5jUmVwbHkiLCBU
Ojphc3luY01lc3NhZ2VSZXBseU5hbWUoKSwgMCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1h
a2VVbmlxdWU8RW5jb2Rlcj4oIkFzeW5jUmVwbHkiLCBUOjphc3luY01lc3NhZ2VSZXBseU5hbWUo
KSwgMCk7CiAgICAgICAgICplbmNvZGVyIDw8IGxpc3RlbmVySUQ7CiAgICAgICAgIFQ6OnNlbmQo
V1RGTW92ZShlbmNvZGVyKSwgV1RGTW92ZShjb25uZWN0aW9uKSwgYXJncy4uLik7CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCAzZDZmMzQy
ODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2Li43NzE0NDhhNDRkMDg4NmRkMDFiYjBj
MmRlNjRkYzlhNDI4NjI3YTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVNlbmRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lc3NhZ2VTZW5kZXIgewogICAgIHsK
ICAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5jISIpOwog
Ci0gICAgICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oVTo6cmVj
ZWl2ZXJOYW1lKCksIFU6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6cmVjZWl2ZXJOYW1lKCksIFU6Om5hbWUoKSwg
ZGVzdGluYXRpb25JRCk7CiAgICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50
cygpKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29k
ZXIpLCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KaW5kZXggMzcwMmFjYzdkZjUxYmQ4NDZiOTNhZjY0YmYw
NzBhNGMxMDAzOTE5Zi4uODdkZDI4ZjgwODY3ODJjZTJhM2RmNzkwZjRhYzBlNmQ3NDlkYWI0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25D
b2NvYS5tbQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgICAgICA6IG1feHBjQ29ubmVj
dGlvbih4cGNDb25uZWN0aW9uKQogICAgICAgICAsIG1fd2F0Y2hkb2dUaW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRvZzo6d2F0Y2hkb2dUaW1l
ckZpcmVkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICwgbV9hc3NlcnRpb24o
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlByb2Nlc3NBbmRVSUFzc2VydGlvbj4oeHBjX2Nvbm5l
Y3Rpb25fZ2V0X3BpZChtX3hwY0Nvbm5lY3Rpb24uZ2V0KCkpLCAiQ29ubmVjdGlvblRlcm1pbmF0
aW9uV2F0Y2hkb2ciX3MsIFdlYktpdDo6QXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQpKQorICAg
ICAgICAsIG1fYXNzZXJ0aW9uKG1ha2VVbmlxdWU8V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3NlcnRp
b24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGNDb25uZWN0aW9uLmdldCgpKSwgIkNvbm5l
Y3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJLaXQ6OkFzc2VydGlvblN0YXRlOjpCYWNr
Z3JvdW5kKSkKICNlbmRpZgogICAgIHsKICAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25l
U2hvdChpbnRlcnZhbCk7CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpvcGVu
KCkKICAgICAgICAgbV9pc0Nvbm5lY3RlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICAvLyBT
ZW5kIHRoZSBpbml0aWFsaXplIG1lc3NhZ2UsIHdoaWNoIGNvbnRhaW5zIGEgc2VuZCByaWdodCBm
b3IgdGhlIHNlcnZlciB0byB1c2UuCi0gICAgICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91
bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJJbml0aWFsaXplQ29ubmVjdGlvbiIsIDApOworICAgICAg
ICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNv
bm5lY3Rpb24iLCAwKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2
ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTUFLRV9TRU5EKSk7CiAKICAgICAgICAgaW5pdGlhbGl6ZVNl
bmRTb3VyY2UoKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAg
ICAgICAgIHVpbnQ4X3QqIGJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihoZWFkZXIg
KyAxKTsKICAgICAgICAgc2l6ZV90IGJvZHlTaXplID0gaGVhZGVyLT5tc2doX3NpemUgLSBzaXpl
b2YobWFjaF9tc2dfaGVhZGVyX3QpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PERlY29kZXI+KGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVudD4geyB9
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4oYm9keSwgYm9keVNpemUsIG51
bGxwdHIsIFZlY3RvcjxBdHRhY2htZW50PiB7IH0pOwogICAgIH0KIAogICAgIGJvb2wgbWVzc2Fn
ZUJvZHlJc09PTCA9IGhlYWRlci0+bXNnaF9pZCA9PSBvdXRPZkxpbmVCb2R5TWVzc2FnZUlEOwpA
QCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRl
TWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhlYWRlcikKICAgICAgICAgdWludDhf
dCogbWVzc2FnZUJvZHkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzY3JpcHRvci0+b3V0X29m
X2xpbmUuYWRkcmVzcyk7CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBkZXNjcmlw
dG9yLT5vdXRfb2ZfbGluZS5zaXplOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFtdKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNv
ZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUJvZHlTaXplLCBbXShjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBsZW5ndGgpIHsKICAgICAgICAgICAgIHZtX2RlYWxsb2NhdGUobWFjaF90YXNr
X3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KGJ1ZmZlciksIGxlbmd0aCk7
CiAgICAgICAgIH0sIFdURk1vdmUoYXR0YWNobWVudHMpKTsKICAgICB9CkBAIC00NTgsNyArNDU4
LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2Rl
cihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0g
ZGVzY3JpcHRvckRhdGE7CiAgICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6ZSA9IGhlYWRlci0+bXNn
aF9zaXplIC0gKGRlc2NyaXB0b3JEYXRhIC0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVh
ZGVyKSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9k
eSwgbWVzc2FnZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwg
bnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogfQogCiAvLyBUaGUgcmVjZWl2ZSBidWZm
ZXIgc2l6ZSBzaG91bGQgYWx3YXlzIGluY2x1ZGUgdGhlIG1heGltdW0gdHJhaWxlciBzaXplLgpA
QCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFu
ZGxlcigpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBkZWNvZGVy
LT5zZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8SW1wb3J0YW5jZUFzc2Vy
dGlvbj4oaGVhZGVyKSk7CisgICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlvbihtYWtl
VW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOwogI2VuZGlmCiAKICAgICBpZiAo
ZGVjb2Rlci0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09ICJJUEMiICYmIGRlY29kZXItPm1lc3Nh
Z2VOYW1lKCkgPT0gIkluaXRpYWxpemVDb25uZWN0aW9uIikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCA2M2I2YmU3Mjcx
ZTQ0NTg4Mzk1MDVhYTkxNWUzODczZjg1MTRkZWRkLi43N2FmOWIyODU4NDUyNmJiNzBjN2ZmYzhl
MzI1NmEzYmFhMTNhMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIGJvb2wgQ29ubmVjdGlv
bjo6cHJvY2Vzc01lc3NhZ2UoKQogICAgIGlmIChtZXNzYWdlSW5mby5pc0JvZHlPdXRPZkxpbmUo
KSkKICAgICAgICAgbWVzc2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvb2xN
ZXNzYWdlQm9keS0+ZGF0YSgpKTsKIAotICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIG51bGxwdHIs
IFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERl
Y29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBXVEZN
b3ZlKGF0dGFjaG1lbnRzKSk7CiAKICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURk1vdmUo
ZGVjb2RlcikpOwogCkBAIC00ODIsNyArNDgyLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0
cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVXT1VMREJMT0NL
KSB7CiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBtX3BlbmRpbmdPdXRwdXRNZXNzYWdlID0g
c3RkOjptYWtlX3VuaXF1ZTxVbml4TWVzc2FnZT4oV1RGTW92ZShvdXRwdXRNZXNzYWdlKSk7Cisg
ICAgICAgICAgICBtX3BlbmRpbmdPdXRwdXRNZXNzYWdlID0gbWFrZVVuaXF1ZTxVbml4TWVzc2Fn
ZT4oV1RGTW92ZShvdXRwdXRNZXNzYWdlKSk7CiAgICAgICAgICAgICBtX3dyaXRlU29ja2V0TW9u
aXRvci5zdGFydChtX3NvY2tldC5nZXQoKSwgR19JT19PVVQsIG1fY29ubmVjdGlvblF1ZXVlLT5y
dW5Mb29wKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChHSU9Db25k
aXRpb24gY29uZGl0aW9uKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbmRp
dGlvbiAmIEdfSU9fT1VUKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdP
dXRwdXRNZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dp
bi9Db25uZWN0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25u
ZWN0aW9uV2luLmNwcAppbmRleCA2NDBmNDUyOTllM2IyNjZlMDI2OWNjY2NjOTQ1MmIzYmE1Nzll
ZmIxLi41YWRmZDgyYmVjYTQ2ZGIwMjQ0N2U4YmNiNmQzODRjMmMwMTU2YTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC0xNDAs
NyArMTQwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVyKCkKICAgICAgICAg
aWYgKCFtX3JlYWRCdWZmZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIGEg
bWVzc2FnZSwgbGV0J3MgZGlzcGF0Y2ggaXQuCiAgICAgICAgICAgICBWZWN0b3I8QXR0YWNobWVu
dD4gYXR0YWNobWVudHMoMCk7Ci0gICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERlY29kZXI+KG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCks
IG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKKyAgICAgICAgICAgIGF1dG8gZGVjb2Rl
ciA9IG1ha2VVbmlxdWU8RGVjb2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVy
LnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAgICAgICAgICAgcHJv
Y2Vzc0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Nb2R1bGUuaAppbmRleCBkZDJiNjZhN2NhMTk1OTFiNmVlNjdiOGYyODRmZDI1NGEz
ODI3ODVkLi41NjgzNzIxM2RmYmVhZWI0ZDU5ZTkzYzNkNDlmNmM3YWMyZjUzNGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTW9kdWxlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dNb2R1
bGUgR01vZHVsZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBNb2R1bGUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1vZHVsZSk7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgTW9kdWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1t
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQppbmRl
eCA4MjMyZGI0ZWI1NmVhY2I2ZjhjZTg1NTY2NGI4Yjc4MmFiNjUwYTk4Li43YWVlNDdlYWI5NWY1
OGE2YjQxNzg1YzBmNGZmN2YwMmIwNGNmNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXll
ckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlcnZl
clBvcnQpCiB7Ci0gICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9
IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKIAogICAgIE5TRGljdGlvbmFyeSAq
b3B0aW9ucyA9IEB7CiAgICAgICAgIGtDQUNvbnRleHRQb3J0TnVtYmVyIDogQChzZXJ2ZXJQb3J0
LnNlbmRSaWdodCgpKSwKQEAgLTUyLDcgKzUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9z
dGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWEK
ICNpZiBIQVZFKE9VVF9PRl9QUk9DRVNTX0xBWUVSX0hPU1RJTkcpCiBzdGQ6OnVuaXF1ZV9wdHI8
TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJu
YWxIb3N0aW5nUHJvY2Vzcyhjb25zdCBMYXllckhvc3RpbmdDb250ZXh0T3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExh
eWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFr
ZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQt
Pm1fbGF5ZXJIb3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKQEAgLTgy
LDcgKzgyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9z
dGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGkKICNpZiBQTEFURk9STShNQUMpCiBz
dGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRm9yRXh0ZXJuYWxQbHVnaW5Ib3N0aW5nUHJvY2VzcygpCiB7Ci0gICAgYXV0byBsYXll
ckhvc3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0Pigp
OworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5n
Q29udGV4dD4oKTsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUg
PSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAgICAgbGF5ZXJIb3N0aW5nQ29udGV4
dC0+bV9jb250ZXh0ID0gW0NBQ29udGV4dCBjb250ZXh0V2l0aENHU0Nvbm5lY3Rpb246Q0dTTWFp
bkNvbm5lY3Rpb25JRCgpIG9wdGlvbnM6QHsga0NBQ29udGV4dENJRmlsdGVyQmVoYXZpb3IgOiBA
Imlnbm9yZSIgfV07CiAgICAgcmV0dXJuIGxheWVySG9zdGluZ0NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXgg
OTdlMmRmMzUzYjM2ODIzOTI5YTMxYWU5NTdhMWRkY2RjMjFjMzdkNi4uYjk4Y2E5NGJjOWVmYzIz
YjJlZDgxOGE1Yjc4NDMzNzIzMTdlOWM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApAQCAtNDksNyArNDksOCBAQCBjbGFz
cyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBXZWJQcm9jZXNzQ29ubmVjdGlvbjsKIHN0cnVjdCBQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CiAKLWNsYXNzIFBsdWdpbkNvbnRyb2xsZXJQcm94eSA6
IFBsdWdpbkNvbnRyb2xsZXIgeworY2xhc3MgUGx1Z2luQ29udHJvbGxlclByb3h5IDogcHVibGlj
IFBsdWdpbkNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBsdWdpbkNvbnRyb2xsZXJQcm94eSk7CiAKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IDM2NmI5ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUuLmNlODI2
N2QyZWU3OGNhY2IzZGRhMGE5YjM3NWJmYWFmYzY4NmVlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjEyLDcg
KzIxMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluCiAKIHZvaWQgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVu
dHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKQogewotICAgIGF1dG8gcGx1Z2luQ29u
dHJvbGxlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJveHk+KHRo
aXMsIGNyZWF0aW9uUGFyYW1ldGVycyk7CisgICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkg
PSBtYWtlVW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJhbWV0
ZXJzKTsKIAogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5
UHRyID0gcGx1Z2luQ29udHJvbGxlclByb3h5LmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
VVJMLmgKaW5kZXggYmJkNDIzYmNmNTcxNWU0YWQ3MGJmNTJkZWY4YzJjMzBjNDFiZjBmNi4uM2U2
MWJiZDAwMGUxZjRjZGI2YzJhMzZjYTRmNzVlOTA0ZjgzNWNmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElVUkwuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2VVUkwpOwog
ICAgICAgICBiYXNlVVJMLT5wYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGF1dG8gYWJz
b2x1dGVVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRV
UkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IG1ha2VV
bmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwp
OwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNvbHV0
ZVVSTC0+c3RyaW5nKCk7CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVBJOjpVUkwo
V1RGTW92ZShhYnNvbHV0ZVVSTCksIGFic29sdXRlVVJMU3RyaW5nKSk7CkBAIC0xMjEsNyArMTIx
LDcgQEAgY2xhc3MgVVJMIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+IHsK
ICAgICB7CiAgICAgICAgIGlmIChtX3BhcnNlZFVSTCkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgbV9wYXJzZWRVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgp
LCBtX3N0cmluZyk7CisgICAgICAgIG1fcGFyc2VkVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVSTD4o
V1RGOjpVUkwoKSwgbV9zdHJpbmcpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIG1fc3RyaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVj
dEludm9jYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2Jq
ZWN0SW52b2NhdGlvbi5tbQppbmRleCAyNTkyODQ3ZTM0MWEzYjZmNzI4NzU0YmQ3ODhhNjY1M2Rk
MjIxNWIwLi5kM2ZmNjIxZWMwZjRhMTBkNzU2NDg3Y2MyMTZmNDk1Y2U4NmQ3MmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52
b2NhdGlvbi5tbQpAQCAtODMsNyArODMsNyBAQCBib29sIFJlbW90ZU9iamVjdEludm9jYXRpb246
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZU9iamVjdEludm9jYXRpbwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJsb2NrU2lnbmF0dXJlKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQubV9yZXBseUluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlcGx5SW5mbz4ocmVwbHlJRCwgV1RGTW92ZShibG9ja1NpZ25hdHVyZSkpOworICAgICAg
ICByZXN1bHQubV9yZXBseUluZm8gPSBtYWtlVW5pcXVlPFJlcGx5SW5mbz4ocmVwbHlJRCwgV1RG
TW92ZShibG9ja1NpZ25hdHVyZSkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IDY1ZGE5ZWZmMDFiNDNlYTU3MTA4MDJmNmM0NmE2ZDAyMDI2NTY5M2Uu
LjQ4OTk3NjI5MzJiN2FmNjkyMjFkMDUwYWY2NzQ1ODM2ZmMzODdiMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0KQEAgLTEwOSw3ICsxMDksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQYWdlOihXZWJLaXQ6
OldlYlBhZ2UmKXBhZ2UKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CisgICAgX3JlbW90
ZU9iamVjdFJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5
PihzZWxmLCBwYWdlKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTE5LDcgKzExOSw3IEBA
IC0gKGlkKV9pbml0V2l0aFdlYlBhZ2VQcm94eTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBhZ2UK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1v
dGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CisgICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsK
IAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIC0gKHZvaWQpX3NlbmRJ
bnZvY2F0aW9uOihOU0ludm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVtb3Rl
T2JqZWN0SW50CiAgICAgICAgIGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVy
ZVdpdGhPYmpDVHlwZXM6cmVwbHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlwZSwgInYi
KSkKICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2Vw
dGlvbiBmb3JtYXQ6QCJSZXR1cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBiZSAndm9p
ZCcuICglcykiLCBzZWxfZ2V0TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAgICAgICAg
cmVwbHlJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b246OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25h
dHVyZSk7CisgICAgICAgIHJlcGx5SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmpl
Y3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIHJlcGx5
QmxvY2tTaWduYXR1cmUpOwogCiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGJsb2NrIG9iamVjdCBz
byB3ZSB3b24ndCB0cnkgdG8gZW5jb2RlIGl0LgogICAgICAgICBpZCBudWxsID0gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRN
ZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0
TWVudUl0ZW0uY3BwCmluZGV4IDdlZDExZTZjMTcxZTIwYmUxZTllYWRiMzA3ZTcxZmM0OGJmZGU4
NDkuLmZhZWZlZDJkY2M4MzhlZTk1NzM5MDY1ZGFjNjNmMTM1NjNmMGQzYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVt
LmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdENvbnRl
eHRNZW51SXRlbUNyZWF0ZShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJgogewogICAgIFdl
YktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIE5VTEwpKTsKIAotICAgIGl0
ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1H
bGliPihpdGVtRGF0YSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdl
YkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4mIHN1Yk1lbnUgPSBpdGVtRGF0YS5zdWJtZW51KCk7CiAgICAgaWYg
KCFzdWJNZW51LmlzRW1wdHkoKSkKICAgICAgICAgd2Via2l0Q29udGV4dE1lbnVJdGVtU2V0U3Vi
TWVudShpdGVtLCBhZG9wdEdSZWYod2Via2l0Q29udGV4dE1lbnVDcmVhdGUoc3ViTWVudSkpKTsK
QEAgLTE0MCw3ICsxNDAsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXcoR3RrQWN0aW9uKiBhY3Rpb24pCiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoR1RLX0lTX0FDVElPTihhY3Rpb24pLCBudWxscHRyKTsKIAogICAgIFdlYktpdENvbnRleHRN
ZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2LT5t
ZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9u
KTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJ
dGVtR2xpYj4oYWN0aW9uKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMTY3LDcgKzE2Nyw3
IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19m
cm9tX2dhY3Rpb24oR0FjdGlvbiogYWN0aW9uCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIXRh
cmdldCB8fCBnX3ZhcmlhbnRfaXNfb2ZfdHlwZSh0YXJnZXQsIGdfYWN0aW9uX2dldF9wYXJhbWV0
ZXJfdHlwZShhY3Rpb24pKSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0q
IGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbiwgU3RyaW5n
Ojpmcm9tVVRGOChsYWJlbCksIHRhcmdldCk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBt
YWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbiwgU3RyaW5nOjpmcm9tVVRG
OChsYWJlbCksIHRhcmdldCk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTE5NCw3ICsxOTQs
NyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdf
ZnJvbV9zdG9ja19hY3Rpb24oV2ViS2l0Q29udAogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAgIENvbnRleHRNZW51SXRlbVR5cGUg
dHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVja2FibGUoYWN0aW9uKSA/IENoZWNr
YWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250
ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlv
bkdldExhYmVsKGFjdGlvbikpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1
ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdl
dEFjdGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldExhYmVsKGFjdGlv
bikpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0yMTYsNyArMjE2LDcgQEAgV2ViS2l0Q29u
dGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0
aW9uX3dpdGhfbGFiZWwKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJ
VF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5V
X0lURU0sIG51bGxwdHIpKTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRD
b250ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBl
IDogQWN0aW9uVHlwZTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25H
ZXRBY3Rpb25UYWcoYWN0aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBl
LCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBTdHJpbmc6OmZy
b21VVEY4KGxhYmVsKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTIzOSw3ICsyMzksNyBA
QCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0
aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAg
ICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJ
dGVtR2xpYj4oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnLCBT
dHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtl
VW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51SXRl
bUJhc2VBcHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogICAgIGl0ZW0t
PnByaXYtPnN1Yk1lbnUgPSBzdWJtZW51OwogICAgIHdlYmtpdENvbnRleHRNZW51U2V0UGFyZW50
SXRlbShzdWJtZW51LCBpdGVtKTsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIFdlYktpdENvbnRleHRN
ZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3Qg
Z2NoYXIqIGxhCiBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9uZXdfc2VwYXJhdG9yKHZvaWQpCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVt
ID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05U
RVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBhcmF0b3JUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJ
dGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBhcmF0b3JUeXBlLCBD
b250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIGl0ZW07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCA1ZWQxNDNhOTk4NTkwNDk2YzMzNzZhNTY5ODgx
MTUzYTZhMDJiMjhjLi5mMzNjYWIzMDVmZWUxMjc0ZmFhN2IyMTgzOGU5YmI3ZWY3NmJiZjI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmgKQEAgLTcyLDYgKzcyLDcgQEAgY2xhc3MgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkKICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+CiAgICAgLCBw
dWJsaWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IENsaWVudCB7CiAgICAgICAg
IHZpcnR1YWwgfkNsaWVudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbQppbmRleCA3YWQzMzMxNDUzOTE4ODg5ZmQzYjk4OTYzODZhOGJlZDFmNTE5YTE0Li4z
OTE0YTRjMjAxNGE5YTU0YTYzNDg4YTRlNzQzODE5YzZhOGRiM2FmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0
aW5nVVJMCiAKICAgICAgICAgQVNTRVJUKHZpZXdDb250cm9sbGVyKTsKIAotICAgICAgICBwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigqcGF5bWVudENvb3Jk
aW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJvbGxlcik7CisgICAg
ICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBt
YWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXltZW50Q29v
cmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVyKTsKIAog
ICAgICAgICBBU1NFUlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93KTsK
ICAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cgPSBbTlNXaW5k
b3cgd2luZG93V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5oCmluZGV4IDQwMzZlYWI3N2ZkOWNlMTU1NTMwZmI2YTRjYzU2MTY4M2Q3
ZWQ5MWIuLjIzNzczMTJkYTI3OTJiMWJjNjI5MmJjZWQyOTRhOWZhZGVlZWJlNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5oCkBAIC01Niw2ICs1Niw3IEBAIGVudW0gY2xhc3MgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbiA6IHVpbnQ4X3Q7CiB1c2luZyBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPjsKIAogY2xhc3MgQXV0
aGVudGljYXRpb25NYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGlj
YXRpb25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQXV0aGVudGljYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBBdXRoZW50aWNhdGlvbk1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCA3
YjZkNTJiZTdmMTVkYzdlOWEwNGFiZjIzYzliMDY4YjExZWYxNDMyLi42ZWRlMTdiMmNhOTI4MWY4
MDUyNjk1ZTFmZjMyYTA5MjM4YWE4Y2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U2FuZGJveEV4dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlIHR5cGUsIE9wdGlvbmFsPHBpZF90PiBwaWQgPSBXVEY6Om51bGxvcHQpCiAg
ICAgewpAQCAtMTUyLDcgKzE1Myw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxIYW5kbGU+CiAgICAgICAg
IHJldHVybiB7eyB9fTsKIAogICAgIEhhbmRsZSBoYW5kbGU7Ci0gICAgaGFuZGxlLm1fc2FuZGJv
eEV4dGVuc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2FuZGJveEV4dGVuc2lvbkltcGw+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVy
ZW5jZS5zaXplKCkpOworICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBtYWtlVW5pcXVl
PFNhbmRib3hFeHRlbnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
UmVmZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gV1RG
TW92ZShoYW5kbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5j
cHAKaW5kZXggMThkYzJmYjhlZDEzZDE1MzQxMmVhMzBlMjkxMTE3OGVhY2VmYzVhZS4uNzA0MzBm
NDQzMTJjOGE1NjJjZTE1ZmM3MzJmNjlkMzg3NmZlOWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIFRleHR1cmVNYXBwZXJM
YXllciYgdGV4bWFwTGF5ZXIoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllciYgY29tcG9zaXRpb25M
YXllcikKIHsKICAgICBhdXRvJiBjb21wb3NpdGlvblN0YXRlID0gY29tcG9zaXRpb25MYXllcklt
cGwoY29tcG9zaXRpb25MYXllcikuY29tcG9zaXRpb25TdGF0ZSgpOwogICAgIGlmICghY29tcG9z
aXRpb25TdGF0ZS5sYXllcikgewotICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAgICAgIGNvbXBvc2l0aW9u
U3RhdGUubGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICAgICAg
Y29tcG9zaXRpb25TdGF0ZS5sYXllci0+c2V0SUQoY29tcG9zaXRpb25MYXllci5pZCgpKTsKICAg
ICB9CiAgICAgcmV0dXJuICpjb21wb3NpdGlvblN0YXRlLmxheWVyOwpAQCAtNDE4LDcgKzQxOCw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIoKQogICAg
IGlmIChtX3Jvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yb290TGF5ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKKyAgICBtX3Jvb3RMYXllciA9
IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOwogICAgIG1fcm9vdExheWVyLT5zZXRN
YXNrc1RvQm91bmRzKGZhbHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZh
bHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAs
IDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZENvbXBvc2l0b3IuY3BwCmluZGV4IGNkM2U1N2M2YmNiOWQ4ZGMxZmY5OWNhZDU5YzRlMTNmZjY2
MDNhNmIuLmJjYjIzNTk3NWIxMzNkMmUyNzY3NmQyODNmZTg5MTM4MWEwZDVkMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmNwcApAQCAtNTMsNyArNTMsNyBAQCBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENv
bXBvc2l0b3I6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbAogVGhyZWFkZWRD
b21wb3NpdG9yOjpUaHJlYWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlz
cGxheVJlZnJlc2hNb25pdG9yOjpDbGllbnQmIGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCwg
UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUs
IGZsb2F0IHNjYWxlRmFjdG9yLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIHBhaW50RmxhZ3Mp
CiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3BhaW50RmxhZ3MocGFpbnRGbGFncykK
LSAgICAsIG1fY29tcG9zaXRpbmdSdW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdS
dW5Mb29wPihbdGhpc10geyByZW5kZXJMYXllclRyZWUoKTsgfSkpCisgICAgLCBtX2NvbXBvc2l0
aW5nUnVuTG9vcChtYWtlVW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVy
TGF5ZXJUcmVlKCk7IH0pKQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZ
X01PTklUT1IpCiAgICAgLCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjo6Y3JlYXRlKGRpc3BsYXlJRCwgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xp
ZW50KSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9O
UE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9O
UE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCmluZGV4IDFhMDU0NzUwN2VjMWMxYTgxMjQ3MmJiN2Vi
ZDlmYTBkNGFkMTNhNDguLjA3ZThiYmM5YjVjOWMzYzZjOWQ4ZDZjM2I5NDVlNTM5MzI3Yjg3NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgTlBWYXJpYW50RGF0YTsKIGNs
YXNzIFBsdWdpbjsKIAogY2xhc3MgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyKTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAppbmRleCA2MWUxZjk0MDI1MjM4NWRiODA1ZWMx
MjJkZmYxYzllNGYxYjcyNTYzLi5kNGI1MjRjODI5ZWM2NjcyMWRmMWE3MGQyZDUxM2FlNGViM2Yz
ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2Jq
ZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2Jq
ZWN0TWFwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE5QUmVtb3RlT2JqZWN0TWFwOjpucE9i
amVjdFByb3h5RGVzdHJveWVkKE5QT2JqZWN0KiBucE9iamVjdCkKIHVpbnQ2NF90IE5QUmVtb3Rl
T2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KE5QT2JqZWN0KiBucE9iamVjdCwgUGx1Z2luKiBw
bHVnaW4pCiB7CiAgICAgdWludDY0X3QgbnBPYmplY3RJRCA9IGdlbmVyYXRlTlBPYmplY3RJRCgp
OwotICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQobnBPYmplY3RJRCwgc3RkOjptYWtlX3Vu
aXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcj4odGhpcywgcGx1Z2luLCBucE9iamVjdElELCBu
cE9iamVjdCkucmVsZWFzZSgpKTsKKyAgICBtX3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2Jq
ZWN0SUQsIG1ha2VVbmlxdWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwg
bnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gbnBPYmplY3RJ
RDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5kZXggN2IwMmI1ZTEyZjMyYzcyZDM4
ZjUyMDQ1YmI2ZDZhMjNiNjJhZTJlMS4uMjYxZDdhODk2OTMwNmE4OTI1YzRhYjM2ZTQ3OTQ3YjM5
NmMxMjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBA
QCBzdGF0aWMgYm9vbCBtb2R1bGVNaXhlc0d0a1N5bWJvbHMoTW9kdWxlKiBtb2R1bGUpCiAKIGJv
b2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQoKQogewotICAgIG1fbW9kdWxlID0gc3Rk
OjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7CisgICAgbV9tb2R1bGUgPSBtYWtl
VW5pcXVlPE1vZHVsZT4obV9wbHVnaW5QYXRoKTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
aAppbmRleCBlYTJiZTkzMDhjYmJlNmRkN2ViOGNmMmM1ODhjOGZmNjE5ZWE5OTNjLi45NTUxM2Y0
Nzk4MmZkNjdlZTVmOThkZDc5OTZjODU5OGYxZjQ2M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24uaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBFbmNvZGVyOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIExheWVyQ2hhbmdlIHsKICAg
ICAgICAgTmFtZUNoYW5nZWQgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMSwKQEAgLTk0
LDYgKzk1LDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAK
ICAgICBzdHJ1Y3QgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzKCk7
CiAKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CkBAIC0xMDksNiAr
MTExLDcgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAg
ICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0aWVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBMYXllclByb3BlcnRpZXMoKTsKICAgICAgICAgTGF5ZXJQcm9w
ZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGllcyYgb3RoZXIpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggMWYyZGU0ZDAzN2VhM2U4MzAyODdhYjk4Y2IyYThmMjFj
NGVjZWEyZS4uMGQyMjdmZmMxZDljNTU1NmFhZDkyZTdlZTE1NzY1ZTE2YjM0NDJmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTUyLDEzICsxNTIsMTMgQEAgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6TGF5ZXJQcm9wZXJ0aWVz
KGNvbnN0IExheWVyUHJvcGVydGkKICAgICAvLyBGSVhNRTogTGF5ZXJQcm9wZXJ0aWVzIHNob3Vs
ZG4ndCBiZSBjb3B5YWJsZTsgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjbG9uZSBzaG91bGQgY29w
eSB0aGUgcmVsZXZhbnQgcHJvcGVydGllcy4KIAogICAgIGlmIChvdGhlci50cmFuc2Zvcm0pCi0g
ICAgICAgIHRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOworICAgICAgICB0cmFuc2Zvcm0gPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKIAog
ICAgIGlmIChvdGhlci5zdWJsYXllclRyYW5zZm9ybSkKLSAgICAgICAgc3VibGF5ZXJUcmFuc2Zv
cm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3Ro
ZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOworICAgICAgICBzdWJsYXllclRyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXllclRyYW5z
Zm9ybSk7CiAKICAgICBpZiAob3RoZXIuZmlsdGVycykKLSAgICAgICAgZmlsdGVycyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOwor
ICAgICAgICBmaWx0ZXJzID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigq
b3RoZXIuZmlsdGVycyk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okxh
eWVyUHJvcGVydGllczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTM1
NCw3ICszNTQsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
Ci0gICAgICAgIHJlc3VsdC50cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1bHQudHJhbnNmb3Jt
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsK
ICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgU3VibGF5ZXJUcmFu
c2Zvcm1DaGFuZ2VkKSB7CkBAIC0zNjIsNyArMzYyLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAg
ICAgICAgcmVzdWx0LnN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNo
YW5nZWRQcm9wZXJ0aWVzICYgSGlkZGVuQ2hhbmdlZCkgewpAQCAtNDI1LDcgKzQyNSw3IEBAIGJv
b2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyb3VuZGVk
UmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1
bHQuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmxvYXRSb3Vu
ZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgICAgICByZXN1bHQuc2hhcGVSb3VuZGVkUmVjdCA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmxvYXRSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QpOwogICAg
IH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBTaGFwZVBhdGhDaGFuZ2Vk
KSB7CkBAIC00NzEsNyArNDcxLDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc0Zyb250QnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKGhhc0Zyb250QnVmZmVyKSB7Ci0gICAgICAgICAgICBhdXRvIGJh
Y2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KG51
bGxwdHIpOworICAgICAgICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlPihudWxscHRyKTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoKmJhY2tpbmdTdG9yZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgCkBAIC00ODYsNyArNDg2LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAg
IH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBGaWx0ZXJzQ2hhbmdlZCkg
ewotICAgICAgICBhdXRvIGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbnM+KCk7CisgICAgICAgIGF1dG8gZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9ucz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqZmls
dGVycykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlc3VsdC5maWx0ZXJz
ID0gV1RGTW92ZShmaWx0ZXJzKTsKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXll
clRyZWVUcgogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRp
ZXM+IGxheWVyUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJQcm9wZXJ0aWVzPigp
OworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRp
ZXMgPSBtYWtlVW5pcXVlPExheWVyUHJvcGVydGllcz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSgqbGF5ZXJQcm9wZXJ0aWVzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
CmluZGV4IDk3OGM0YmJlZDdiNWNkOTFjYWFlYzE1NGJjOGJhMTRiYWI3NTM0NjEuLmU4MjZhMzBi
MTJlMjRlY2Y0MzBjNjliNzZiMWE2ZjI4ZjViYjk4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTUyMiw3ICs1MjIsNyBA
QCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb246OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNOZXdSb290Tm9k
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBtX3Njcm9sbGluZ1N0YXRlVHJl
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOworICAgIG1fc2Nyb2xs
aW5nU3RhdGVUcmVlID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CiAKICAgICBi
b29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ2hh
bmdlZFByb3BlcnRpZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8v
U2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IGM3MzQ3Yzc5ZTY2OTM4Mzc4NWQwNWQyMjllNDdi
NzQ3YzFmMGNhNTUuLmIyY2Q0ODQ2Njc3Y2U5N2RmYWMyODU4NDkwYzFlYTQzNGY5NjI5MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWly
by5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IGltYWdlID0gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CiAgICAgUmVmUHRy
PGNhaXJvX3Q+IGJpdG1hcENvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUoaW1hZ2UuZ2V0
KCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lk
IFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggOTJmMTA2MmIyOTBmNzc1
ZGI1YWU3ZWQxOTUyYTljYTg1OGFiMzEyMi4uMDE2YWJiZDk5M2UxOGE0NWMwMWE3ZjA0OTdkY2Mz
MWE1M2I0MzcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxl
Qml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1h
cENHLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRl
eHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKICAgICBDR0NvbnRl
eHRUcmFuc2xhdGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwgMCwgbV9zaXplLmhlaWdodCgpKTsK
ICAgICBDR0NvbnRleHRTY2FsZUNUTShiaXRtYXBDb250ZXh0LmdldCgpLCAxLCAtMSk7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGJpdG1hcENvbnRleHQu
Z2V0KCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29u
dGV4dC5nZXQoKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW50UmVjdCYgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9T
aGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKaW5kZXggNjBmOGYzY2I3MzI4OWI2YjBkMmY0YzM1
MTQ2ZjFjZmVkNDAzNGE4MC4uMTAwMWVlM2U1MjkyZWRjYjUzNmY4MjMzMDNjMmM3NGMyYjFlOTI5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1hcERp
cmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFw
RGlyZWN0MkQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0Nv
bnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBt
X2JpdG1hcCA9IGNyZWF0ZURpcmVjdDJEU3VyZmFjZSgpOwogICAgIENPTVB0cjxJRDJEMVJlbmRl
clRhcmdldD4gYml0bWFwQ29udGV4dCA9IERpcmVjdDJEOjpjcmVhdGVSZW5kZXJUYXJnZXRGcm9t
V0lDQml0bWFwKG1fYml0bWFwLmdldCgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9y
eShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFw
Q29udGV4dC5nZXQoKSkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXV0b21hdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9t
YXRpb25DbGllbnQuaAppbmRleCAyOTk1ODEwOTVkZDFkMWIxNWFmZWFiYjRkYWNiZWQwNWQyYmRk
MTE0Li41NDVhN2JlNGQ0ODE5NzEzMjhkMWMzZjc5ZDI3MWVkOWEyMWY4MzlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50LmgKQEAgLTM1
LDYgKzM1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgQXV0b21hdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+QXV0b21hdGlvbkNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
CmluZGV4IDI4ZmFmNjg3MTlhOWQ3MjhkNTFiNmM3NzJkODRlMTdiNjQ5MDk3Y2EuLjJhZTJhNTAz
NGMzYTQxNzFjY2Y0NzdiOTc4NWI3M2E2ZjI0ZGI4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC00
MSw2ICs0MSw3IEBAIGVudW0gQXV0b21hdGlvblNlc3Npb25Ccm93c2luZ0NvbnRleHRPcHRpb25z
IDogdWludDE2X3QgewogfTsKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgSmF2YVNj
cmlwdERpYWxvZ1R5cGUgewogICAgICAgICBBbGVydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggYWYxMDljMWRmNjcwMGRj
MjNlMmUzMzFiMGI1MGVmYmNmZjQyODY2Ny4uODE2ZjcxZTEyNjcwY2IzZDY1YjFlNjMyODAzYTZi
NDBlZjdkYmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRleHRNZW51Q2xpZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5Owog
bmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db250ZXh0TWVudUNsaWVu
dCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggMGY4Y2FiOTczMjlmMDk1N2Yz
MmI0N2MyNzc4MWQxZTc4NmZhMTQ3ZC4uOGI0NGEzZjQ1NmM1MzJhZDMzODA2ZWY2OWI0N2VhZDA5
NDFkZjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKSB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQuaAppbmRleCA5MmIyZDY3NWRmY2EyY2FmZGEyMTFiM2Y3MWM1Nzk4YWZkNDVkNjJhLi5i
NGUyYWRlNzI5ZWE2NmQ4ZGRhOGRkNTAyMTE4YWU0YWJkYjIxODYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQu
aApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIERpY3Rpb25hcnk7CiAK
IGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5o
CmluZGV4IDAyMzc2ZTFlMTEwZDQ3NmViMmI5MTg1ZTRlMmZjZDhkNmUxMzMyZTEuLmIyZWFjYzli
ODMyNTk4YjE3YTk5ZGJkOWQ2N2VmMjRlNDczYWVkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00Niw2ICs0Niw3IEBAIGVudW0g
Y2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgRG93bmxvYWRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCmluZGV4IGYzMTIzYWYxOTUxNjVhNjY5ZDY2Njgz
MThiODEyZTkzMzY1ZTZkYzIuLjZkMWUzYjIxMWZlMGRkOTVhOTQ4NTA1ODQxN2RiNGRlMDgyNDBk
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGllbnQuaApAQCAt
MzksNiArMzksNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgRmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RmluZENsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCmluZGV4IGM2ZjQ1NzM0MmQxMTE5MDFk
Y2E2ZDNjMzA5MDMzN2ZlZTdhMWZlYzIuLmZhZTFkY2QzY2Q2ODgzNTA3ZWZiZTNkOTVkNWQ2Zjcy
YTAzNjlkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5k
TWF0Y2hlc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5k
TWF0Y2hlc0NsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIG5h
bWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZE1hdGNoZXNDbGllbnQo
KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1D
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xpZW50LmgKaW5k
ZXggNWIwYzZjY2EyNGVlZmMxYTk1ODE5MWUwZTI3OTRhNDdiNGY1NGU3Yy4uZjBjYTA2MDExMTk4
MDJlZDM2OWI0ZDA3OGQ4M2M4NjJhNTE2MTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJRm9ybUNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBBUEkgewog
Y2xhc3MgT2JqZWN0OwogCiBjbGFzcyBGb3JtQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Gb3JtQ2xpZW50KCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVudC5oCmluZGV4
IDEzNzU1MjljZGEyNWYyNWNiYjE3OWJkYzg5ODkxNzFjODllZTg4NTcuLjg5NzRjZDEzMzk0Nzc1
MDI3M2Y0NTBmMGU4Mzk2YzBlNmIxMzIwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRnVsbHNjcmVlbkNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsK
ICAgICAgICAgQVBJVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDUyNjZiYzJjYTU0Y2YwOTljMjM4Y2FjYzYy
MTQ0Yzk3OTlhMDk3OTcuLjdjNmY1NjI5Y2I2MGU1M2JjN2I4NWFhODg4OWY3MmU2OGQ3YTRjMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdlb2xvY2F0aW9u
UHJvdmlkZXIuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBHZW9sb2NhdGlvblByb3ZpZGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HZW9sb2Nh
dGlvblByb3ZpZGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUhUVFBDb29raWVTdG9yZS5jcHAKaW5kZXggOTgxYTk4NWJiZGU1ZjFjYjY1Zjk2Y2JiMjEz
OWZiY2YxOWQ3ZGNlNS4uZTEyMmVlM2VkYjFjNDIxOWQxZDg0MTk5MzIxYTgwMDNkNTJjODIxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9y
ZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6cmVnaXN0ZXJP
YnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCiAKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZWRDb29r
aWVNYW5hZ2VyUHJveHkpOwogCi0gICAgbV9jb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJV2ViQ29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsK
KyAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0gbWFrZVVuaXF1ZTxBUElXZWJDb29r
aWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRoaXMpOwogCiAgICAgYXV0byogcG9vbCA9IG1fb3du
aW5nRGF0YVN0b3JlLT5wcm9jZXNzUG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCmluZGV4
IGZjZjQ2MDYxZjZiZmE2ZGNiNzYwZTEyYzY2MzNiNmI0NWYxNTZkZDQuLjExODRhYTQzMmMzYjlm
ZmNiMTVkYTVmODI4ZWY0YWM0ZjFhZGIxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3QgV2ViTmF2
aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBIaXN0b3J5Q2xpZW50
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5I
aXN0b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJY29uRGF0YWJhc2VDbGllbnQuaAppbmRleCBlYTllYmE1MGUxZWZlOGYwMzIxYzRkZmUz
YTQ0NmYwZGNiYjVkOGM5Li5iZTQzYWVlYzU0ZmYyZDRhYmI1YTI4ZmYzNjMxNDVjNDkwYzdlODU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFz
ZUNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBAIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIG5hbWVz
cGFjZSBBUEkgewogCiBjbGFzcyBJY29uRGF0YWJhc2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxv
YWRpbmdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGlu
Z0NsaWVudC5oCmluZGV4IDZmOWU3YWY5Yzk4MDkyMzNiNmE1NjVlYzNlMzgwYmUwYWFjZDU2N2Uu
LjJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRmZWY1ZjgzOTM2YjBkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zNyw2
ICszNyw3IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3Mg
SWNvbkxvYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkljb25Mb2FkaW5nQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXgg
YzM1ZTdiM2FlNDkzZDlhYzYzY2IzYTRiNTgxZmUzMmZjYjQwYWNlOC4uOWQ0MzQ4OWEyZDYyNTdj
YjBjYWY5MjJiM2ZiMDkzMjk1Y2U5YmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAg
Y2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudC5oCmluZGV4IGNiYjllMGE5NzE0NWJkMTdkZGVmOGUwYmIxNGFmOGMzNzZkZmIzODgu
LmRiNWQ5MGMzMWY5Mjc2OWQzMDNhMDFhZDc4YmRhN2ZiZDFhNGQwMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3Jl
OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5kZXggMzQ4ZDZiZjc3MjkyNzJlOGYyYWJhZWMzNzU1
YzIwZGU1NDJkNjQ1ZC4uYjJlYTQxZDllMmYyZTgxZTJjOWViM2I4Nzc5MWZjM2VmOGMzZjBkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaApAQCAt
NTMsNiArNTMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBM
b2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfkxvYWRlckNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJG
cmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IGE2
ZTAxOWNjNDUxODYzYTQxYWNmYzhiZWE3YmYzMDI4OTZiMWJiNzMuLmNkMjJhMjY3NjQ2OGQxODIz
NGE2MDg0MmZlOWQ5MTY3MWIyMGE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNzMsNiArNzMsNyBAQCBjbGFzcyBOYXZp
Z2F0aW9uUmVzcG9uc2U7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIE5hdmlnYXRpb25DbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfk5h
dmlnYXRpb25DbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBvbGljeUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBvbGljeUNsaWVudC5oCmluZGV4IDVlYmU0NDA3NDJhNzY1NDFiMWQ5Y2NmMjk5NWM5YTk1ZmU4
NGQ1YWQuLjZhZThlNzUyMDVmZmZjODY1MmY0ZjliODNiYjNkZTMwZWU2Y2ZhZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3
LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBPYmplY3Q7CiAKIGNsYXNzIFBvbGljeUNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
UG9saWN5Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgKaW5kZXggZDlkZDBkYjQ2NjM3NzIyYjYwMmIyMGRkZGY2NzM4MTM1ZjY0NmY2Mi4uNzcy
ZGE2ZTVhODY5NzdlYzhhZTJkYzA3NTQyZDhmY2YxZTE0OTYxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTcxLDYgKzcxLDcgQEAgY2xhc3MgT3BlblBh
bmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBVSUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlD
bGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAKaW5kZXggZDgzYzZiOGY5ODA2OTYwMzYyNzZjYmFlZmQ1NDJkOGE2ZmQwY2QwMS4uNTRmNzdm
MDA0Yzk3MWZjMWM4NmU4ZjFjY2RhMGQzYjY4MDc4ZGM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tDb250
ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDbGll
bnRCYXNlKiB3a0NsCiAKIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50
QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldElu
amVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4
dFJlZiktPnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0
U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0
SGlzdG9yeUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV0tD
b250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tD
b250ZXh0SGlzdG9yeUNsCiAgICAgfTsKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHBy
b2Nlc3NQb29sID0gKldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpOwotICAgIHByb2Nlc3NQb29s
LnNldEhpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVu
dCkpOworICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxIaXN0b3J5
Q2xpZW50Pih3a0NsaWVudCkpOwogCiAgICAgYm9vbCBhZGRzVmlzaXRlZExpbmtzID0gcHJvY2Vz
c1Bvb2wuaGlzdG9yeUNsaWVudCgpLmFkZHNWaXNpdGVkTGlua3MoKTsKIApAQCAtMjY2LDcgKzI2
Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkCiAgICAgICAgIH0KICAgICB9OwogCi0gICAg
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29u
dGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdr
Q2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdr
Q2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDExYjgzNGI0ZWUyYTlhNjg3NjI2YzczMmJmNThhNDg4
MjNmNjMzNGEuLjg4OGI3NWJjN2NlYzg5ZDE2ZTA3ZjYxN2U3YmIyY2UyOTc5ZmE2MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFu
YWdlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tHZW9sb2NhdGlvbk1hbmFnZXJH
ZXRUeXBlSUQoKQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tHZW9s
b2NhdGlvbk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBjb25zdCBXS0dlb2xvY2F0
aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChnZW9sb2NhdGlvbk1h
bmFnZXJSZWYpLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJv
dmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+
c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVy
KSk7CiB9CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBvc2l0
aW9uKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tHZW9s
b2NhdGlvblBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYjIyM2Q2
Zjg3YmZhNWU5NmUzZTUwZGEyZGQ3OGZmMGQyZGQ0MTZjZS4uNzY5MjM5OTBhYjViOWVhMjEzODVm
MWQzNTY5ZThiNTBhYTdmNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdL
VHlwZUlEIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJS
ZWYsIGNvbnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAg
IHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+
c2V0UHJvdmlkZXIobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRl
cikpOwogfQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlm
aWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRl
eCA0N2VjNzI2YjBjZTQ0MDU3ZjAwMmI1NDBiZWE3NjhlNDNiMTBhOGQ0Li42MWE2OWIxZjNhNmRh
NzQ5NmFkNDcyNjk3MGI4NWYyYzkxMTgxM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKQEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250
ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVD
bAogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q29udGV4dE1l
bnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsK
KyAgICB0b0ltcGwocGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29u
dGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdl
UmVmKTsKICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VDb250ZXh0TWVudUNsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudChtYWtlVW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4o
d2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtOTk1LDcg
Kzk5NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAgICAgICAgIH0KICAgICB9OwogCi0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENs
aWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRDbGllbnQobWFr
ZVVuaXF1ZTxGaW5kQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VG
aW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNo
ZXNDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VG
aW5kTWF0Y2hlc0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRGaW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRNYXRjaGVzQ2xpZW50Pih3
a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFr
ZVVuaXF1ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VT
ZXRQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDQ4LDcgKzEwNDgsNyBA
QCB2b2lkIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlSW5qZWN0ZWRCdQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViRm9ybUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1D
bGllbnQobWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdL
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxv
YWRlckNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2Fk
ZXJDbGllbnRCYXNlKgogCiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0b0ltcGwo
cGFnZVJlZik7CiAKLSAgICBhdXRvIGxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TG9h
ZGVyQ2xpZW50Pih3a0NsaWVudCk7CisgICAgYXV0byBsb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVl
PExvYWRlckNsaWVudD4od2tDbGllbnQpOwogCiAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBn
ZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQgdHJhbnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBk
aWRMYXlvdXQgaW5zdGVhZCBvZgogICAgIC8vIGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlk
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlz
IGlzIHJlcXVpcmVkCkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xp
Y3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2Uq
CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQobWFrZVVuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xp
ZW50KSk7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjA3NSw3ICsyMDc1LDcgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJ
Q2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFn
ZVJlZiktPnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3
a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQp
CkBAIC0yMjkzLDE2NCArMjI5MywxNjYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNs
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICB3
ZWJQYWdlUHJveHktPnNldE5hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxOYXZpZ2F0aW9u
Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCi12b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChX
S1BhZ2VSZWYgcGFnZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgY2xh
c3MgU3RhdGVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGll
bnRCYXNlPiwgcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSog
Y2xpZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7Ci0gICAg
ICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VJ
c0xvYWRpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CitjbGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VTdGF0
ZUNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNv
bnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQorICAgIHsKKyAgICAgICAgaW5pdGlh
bGl6ZShjbGllbnQpOworICAgIH0KK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2Fk
aW5nKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUlz
TG9hZGluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5n
ZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2
b2lkIGRpZENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGlu
ZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxD
aGFuZ2VUaXRsZSgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZVRpdGxlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlVGl0bGUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VUaXRs
ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVRpdGxl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZSht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFu
Z2VBY3RpdmVVUkwoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LndpbGxDaGFuZ2VBY3RpdmVVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUFj
dGl2ZVVSTCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ2hhbmdlQWN0aXZlVVJMKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2Vj
dXJlQ29udGVudCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQud2lsbENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdl
SGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Ns
aWVudC53aWxsQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUhhc09u
bHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVu
dChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFu
Z2VIYXNPbmx5U2VjdXJlQ29udGVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VFc3Rp
bWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9j
bGllbnQud2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlRXN0
aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53
aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNz
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFu
Z2VFc3RpbWF0ZWRQcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRl
ZFByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFu
Z2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAot
ICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdl
Q2FuR29CYWNrKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZUNhbkdvQmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2ls
bENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIGRpZENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0Jh
Y2soKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5H
b0JhY2spCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNh
bkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2Fu
R29Gb3J3YXJkKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZUNhbkdvRm9yd2FyZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0K
IAotICAgICAgICB2b2lkIGRpZENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdv
Rm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBk
aWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDaGFuZ2VDYW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dy
ZXNzKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxs
Q2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVz
cyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hh
bmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3Rz
SW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2
b2lkIGRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0lu
UHJvZ3Jlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dy
ZXNzKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlTmV0
d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9j
bGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUlu
Zm8oKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxD
aGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmlj
YXRlSW5mbykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5n
ZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRp
ZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9p
ZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQcm9jZXNz
SXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9u
c2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxs
Q2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9u
c2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRp
ZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2Vi
UHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9
CisgICAgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJv
Y2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAg
ICAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgfTsKKyAgICB2b2lkIGRpZFN3
YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRTd2FwV2ViUHJvY2Vzc2VzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVu
dC5kaWRTd2FwV2ViUHJvY2Vzc2VzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQor
fTsKKwordm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFn
ZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQorewogICAgIGlmIChjbGllbnQpCi0gICAgICAgIHRv
SW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6bWFrZV91bmlxdWU8U3Rh
dGVDbGllbnQ+KGNsaWVudCkpOworICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3Rh
dGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCiAg
ICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVBy
aXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJp
dmF0ZU1hYy5tbQppbmRleCBmNzYzYWY2MDAzZGE0NjY3MzYzMWU5MWVhODFiODNiNWM5N2EwODdk
Li4zNWVmOTIyMTU0ZTE5NjMwMGU0YjZlZTc1ZDRjOTgxNzg1YmMzZTI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpA
QCAtNTIsNyArNTIsNyBAQCAtIChpZClpbml0V2l0aFBhZ2U6KFJlZlB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4mJilwYWdlCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfcGFnZSA9IFdURk1v
dmUocGFnZSk7Ci0gICAgX29ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VM
b2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsKKyAgICBfb2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmLCBAIlVSTCIpOwogICAgIF9w
YWdlLT5wYWdlTG9hZFN0YXRlKCkuYWRkT2JzZXJ2ZXIoKl9vYnNlcnZlcik7CiAKICAgICByZXR1
cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9X
S1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAK
aW5kZXggNzhiYmEzOTY3YjYxOTdjMGU4YTdjMjNhYzNkYThjZDEzMmU3YzRiZS4uOTY0MDZkMGFh
ZmJjMzU1NTYwYjVkMzE5N2EwMGMyNWY1NzU5YTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKQEAgLTY4LDUgKzY4LDUgQEAgdm9pZCBXS1ZpZXdT
ZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3LCBjb25zdCBXS1ZpZXdDbGllbnRCYXNlKiBjbGll
bnQpCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsKKyAgICB0b0ltcGwodmlldyktPnNl
dENsaWVudChtYWtlVW5pcXVlPFZpZXdDbGllbnQ+KGNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIubW0KaW5kZXggMjY1NTU0ZjNkN2YyZDdhZDI5NmU5ZjNmOWZhMTEzODhi
NzhmZDU2NC4uNDk2Nzc4OGExMDU3ZmE4ODJhMGEwMWM4ZGJmNTAwMmU5MjI2ZWMwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MDIsNyArNjAyLDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKV9pbml0V2l0aFBhZ2VSZWY6KFdLUGFnZVJlZilwYWdlUmVmCiAKICAgICBfcGFnZSA9
IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgX3BhZ2VMb2FkU3RhdGVPYnNlcnZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYpOwor
ICAgIF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRT
dGF0ZU9ic2VydmVyPihzZWxmKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2Vy
dmVyKCpfcGFnZUxvYWRTdGF0ZU9ic2VydmVyKTsKIAogICAgIEFTU0VSVCghYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlck1hcCgpLmNvbnRhaW5zKF9wYWdlLmdldCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5k
ZXggMTM3MmNhNDEwNmM3NmUxZDYyMzVkNjE0YWQ1YzFlNmE1NmVhMDVhMS4uODFkMzcwM2IwZWVh
ODJlNWU2YzYyZjMyMjJhYzRlNjgxOWY2YjNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMTA4LDcgKzEw
OCw3IEBAIC0gKHZvaWQpYWRkT2JzZXJ2ZXI6KGlkPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+
KW9ic2VydmVyCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V0tIVFRQQ29v
a2llU3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKICAgICBf
Y29va2llU3RvcmUtPnJlZ2lzdGVyT2JzZXJ2ZXIoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCmluZGV4IGJhY2U1YWM3ZWMwMGIxODk4YWQyZGY3MmNiMWIxOTQ0NjdkY2VjOWQuLmVi
YWM1NjhlM2RkYjY4NzBmODViMDE1MDhlYzIwZmFhYjdmMjA0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zNzMsNyAr
MzczLDcgQEAgLSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiAt
ICh2b2lkKV9zZXREb3dubG9hZERlbGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93
bmxvYWREZWxlZ2F0ZQogewogICAgIF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0
ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNz
UG9vbC0+c2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkQ2xpZW50
Pihkb3dubG9hZERlbGVnYXRlKSk7CiB9CiAKIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+
KV9hdXRvbWF0aW9uRGVsZWdhdGUKQEAgLTM4NCw3ICszODQsNyBAQCAtIChpZCA8X1dLQXV0b21h
dGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCiAtICh2b2lkKV9zZXRBdXRvbWF0aW9u
RGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KWF1dG9tYXRpb25EZWxlZ2F0ZQog
ewogICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUgPSBhdXRvbWF0aW9uRGVsZWdhdGU7Ci0gICAgX3By
b2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpB
dXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vz
c1Bvb2wtPnNldEF1dG9tYXRpb25DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25D
bGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxlZ2F0ZSkpOwogfQogCiAtICh2b2lkKV93YXJtSW5p
dGlhbFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA4YjZkZjI0Zjg5NTJkODRm
NjA3NTQ0YzZhMzFhMmRkMWI4YWEzNTVkLi5hMDBiMjAzY2M5MDU5MzAxYmVjYzQ2MWQ2MWI0Njcz
MmI4NTYxMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0xMTgsNiArMTE4LDcgQEAg
LSAodm9pZClyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzCiB9CiAKIGNsYXNzIFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlKFdLVXNlckNvbnRlbnRDb250cm9sbGVy
ICpjb250cm9sbGVyLCBpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciwgTlNTdHJp
bmcgKm5hbWUpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCkBAIC0xNDUsNyAr
MTQ2LDcgQEAgcHJpdmF0ZToKIAogLSAodm9pZClhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQg
PFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3Ry
aW5nICopbmFtZQogewotICAgIGF1dG8gaGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVs
ZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2Vy
Q29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6
OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdl
SGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUs
IEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgaWYgKCFfdXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVy
LmdldCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhj
ZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgd2l0
aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuIiwgbmFtZV07CiB9CkBAIC0yMjks
NyArMjMwLDcgQEAgLSAodm9pZClfcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzQXNzb2NpYXRlZFdp
dGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFcKIAogLSAodm9pZClfYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdl
SGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUgdXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNv
bnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJL
aXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3Jp
cHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFt
ZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNvbnRlbnRXb3JsZCk7CisgICAgYXV0
byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VV
bmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhh
bmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQp
OwogICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpO
U0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQg
bWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIs
IG5hbWVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KaW5kZXggMDk1MWU5NDQzN2JjZTQ2NjVkNjE1YmQwNDBkMjZkZjIwYjY0ZGYzNC4uNGQ0
NDA0NWEzNDFhZjQxYTllMDRiMTEwNTlhOTdiMDAzN2RlMzYxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC03NTcsNyArNzU3LDcgQEAg
LSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0
aW9uICopY29uZmlndXJhdGlvbgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgX2lt
cGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYsIHBy
b2Nlc3NQb29sLCBwYWdlQ29uZmlndXJhdGlvbi5jb3B5UmVmKCkpOworICAgIF9pbXBsID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFn
ZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsKICAgICBfcGFnZSA9ICZfaW1wbC0+cGFnZSgpOwog
CiAgICAgX2ltcGwtPnNldEF1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2V0cyh0cnVlKTsK
QEAgLTc2OSwxNCArNzY5LDE0IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIAogICAgIF9wYWdlLT5z
ZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KGNvbmZpZ3VyYXRpb24uX2FwcGxp
Y2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpOwogCi0gICAgX25hdmlnYXRpb25TdGF0ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+KHNlbGYpOworICAgIF9u
YXZpZ2F0aW9uU3RhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxm
KTsKICAgICBfcGFnZS0+c2V0TmF2aWdhdGlvbkNsaWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVh
dGVOYXZpZ2F0aW9uQ2xpZW50KCkpOwogCi0gICAgX3VpRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7Ci0gICAgX3BhZ2UtPnNldEZpbmRDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+
c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CisgICAgX3VpRGVsZWdhdGUgPSBtYWtlVW5pcXVl
PFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7CisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFr
ZVVuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50PihzZWxmKSk7CiAKLSAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKKyAgICBfaWNvbkxvYWRpbmdE
ZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsK
IAogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IFlFUzsKIApAQCAtMzQyNSw3ICszNDI1LDcgQEAg
LSAodm9pZClzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczooQk9PTClhbGxv
d3NCYWNrRm9yd2FyZE5hdmlnYXRpb24KICAgICBfYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9u
R2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsKIAogICAgIGlm
IChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlcyAmJiAhX2dlc3R1cmVDb250cm9s
bGVyKSB7Ci0gICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAgICAgIF9nZXN0dXJlQ29u
dHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFn
ZSk7CiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxm
LCBbc2VsZiBzY3JvbGxWaWV3XSk7CiAgICAgICAgIGlmIChXS1dlYlZpZXcgKmFsdGVybmF0ZVdl
YlZpZXcgPSBbX2NvbmZpZ3VyYXRpb24gX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2Vz
dHVyZXNdKQogICAgICAgICAgICAgX2dlc3R1cmVDb250cm9sbGVyLT5zZXRBbHRlcm5hdGVCYWNr
Rm9yd2FyZExpc3RTb3VyY2VQYWdlKGFsdGVybmF0ZVdlYlZpZXctPl9wYWdlLmdldCgpKTsKQEAg
LTU2NzgsNyArNTY3OCw3IEBAIC0gKHZvaWQpX3NldElucHV0RGVsZWdhdGU6KGlkIDxfV0tJbnB1
dERlbGVnYXRlPilpbnB1dERlbGVnYXRlCiAgICAgfTsKIAogICAgIGlmIChpbnB1dERlbGVnYXRl
KQotICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGll
bnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3Jt
Q2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChu
dWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQppbmRleCA3YWQwNzNiOGNkNmRkNDIwM2UxYTc2
MDU4ZjdjN2RmMmE5ZjhhZDdiLi4yYWRlZWE3NjBjNjk4YjE4YWU1OTFlNTcwNTcxMzI5NWYyNGM1
NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0
b21hdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCkBAIC03Miw3ICs3Miw3IEBAIC0gKGlkIDxfV0tBdXRv
bWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQogLSAodm9pZClzZXREZWxlZ2F0ZTooaWQg
PF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRl
ID0gZGVsZWdhdGU7Ci0gICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVs
bHB0cik7CisgICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxlZ2F0ZSA/IG1ha2VVbmlxdWU8V2Vi
S2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CiB9CiAK
IC0gKE5TU3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCBiMzdiMDUwNTNmMTI0YWNiNzBmZDZhZGU2ZGY0
MjBmZTgyNWQ1NGNmLi4wZGQ0MDlhNDNkZTY1MzAwYzlmMGNjODU0NDdhYzJmNzEzZWM5NDkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0zOCw2
ICszOCw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBfV0tSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudCBmaW5hbCA6IHB1YmxpYyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgX1dL
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQoX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgKmNvbnRyb2xsZXIpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIp
CkBAIC03NSw3ICs3Niw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgICAgIHJldHVybiBu
aWw7CiAKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0gV2ViS2l0OjpSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6Y3JlYXRlKCk7Ci0gICAgbV9yZW1vdGVJbnNwZWN0b3JDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQ+KHNl
bGYpOworICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ol9X
S1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKICAgICBtX3JlbW90ZUluc3Bl
Y3RvclByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0b3JDbGllbnQuZ2V0KCkpOwogCiAg
ICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmNwcAppbmRleCA4ZDJmODhhZTAwMzJhMGQ5MzQ1ZTY4MDBhOTc4NThiNDI4
YTRkNmQ5Li4wNjg3MGQyMWRlZTdjYTRmODlkYjllMzQyZjZmMGY1ZmQzZjU0YTVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAg
LTE2OTEsNyArMTY5MSw3IEBAIGlubGluZSB2b2lkIHJlYWR5U1FMaXRlU3RhdGVtZW50KHN0ZDo6
dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIFNRCiAgICAgICAgIHN0YXRl
bWVudCA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghc3RhdGVtZW50KSB7Ci0gICAgICAgIHN0
YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYiwgc3RyKTsKKyAg
ICAgICAgc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KGRiLCBzdHIpOwog
ICAgICAgICBpZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQogICAgICAgICAg
ICAgTE9HX0VSUk9SKCJQcmVwYXJpbmcgc3RhdGVtZW50ICVzIGZhaWxlZCIsIHN0ci5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuaAppbmRleCBiYWJkOGE5ODI5ZmI4MGQxOTg1MmVjOTc0YWVlYTcwY2VlMGI5
MTU4Li44YThjYWJiZDUzYzFlNjVmNzBhZGQwODVkNGY1NWVhMzEwMTE2MDk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDQsNiAr
NDQsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
SWNvbkRhdGFiYXNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JY29uRGF0YWJhc2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKQEAgLTU4
LDYgKzU5LDcgQEAgY2xhc3MgSWNvbkRhdGFiYXNlIHsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBJ
Y29uU25hcHNob3QgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6CiAgICAgICAgIEljb25TbmFwc2hvdCgpID0gZGVmYXVsdDsKIApAQCAtMTE4LDYgKzEyMCw3
IEBAIGNsYXNzIEljb25EYXRhYmFzZSB7CiAgICAgfTsKIAogICAgIGNsYXNzIFBhZ2VVUkxTbmFw
c2hvdCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAg
ICAgICAgUGFnZVVSTFNuYXBzaG90KCkgPSBkZWZhdWx0OwogCkBAIC0xNzIsNiArMTc1LDcgQEAg
Y2xhc3MgSWNvbkRhdGFiYXNlIHsKICAgICB9OwogCiAgICAgY2xhc3MgTWFpblRocmVhZE5vdGlm
aWVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAg
ICAgICBNYWluVGhyZWFkTm90aWZpZXIoKQogICAgICAgICAgICAgOiBtX3RpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJk1haW5UaHJlYWROb3RpZmllcjo6dGltZXJGaXJlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcAppbmRleCBkMmFmNjRiYWQ4NmE4YTMzZjEzMzU0NzI1ODFiNzAyZTQxYTY3
ZWMyLi4yMTg2NjA0NTE5Mjc2OWJlNmRmZjg1OWE2MzIwNDNkNTEzNTY5YzE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBndWludCBzaWduYWxzW0xB
U1RfU0lHTkFMXSA9IHsgMCwgfTsKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbiwgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbiwgR19UWVBFX09CSkVDVCkKIAogY2xh
c3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoV2ViS2l0QXV0b21hdGlvblNlc3Np
b24qIHNlc3Npb24pCiAgICAgICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCkBAIC0yMjMsNyArMjI0
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1Y3RlZChHT2Jq
ZWN0KiBvYmplY3QpCiAKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uID0gYWRvcHRSZWYobmV3
IFdlYkF1dG9tYXRpb25TZXNzaW9uKCkpOwogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNl
dFNlc3Npb25JZGVudGlmaWVyKFN0cmluZzo6ZnJvbVVURjgoc2Vzc2lvbi0+cHJpdi0+aWQuZGF0
YSgpKSk7Ci0gICAgc2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKKyAgICBzZXNzaW9uLT5w
cml2LT5zZXNzaW9uLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dD4oc2Vzc2lvbikpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkRp
c3Bvc2UoR09iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDk3ZTky
NTYwMTc3MzdiNzY2NWFjYzhlYjJmMzU4ZWIyZWM1OTAwYjkuLjI4NThkZjZmMzRkNGZhNjIxMjA5
YmYxZWIxZTEwODg1YWQwNWU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTU2LDYg
KzU2LDYgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWw6IHB1YmxpYyBBUEk6OkNvbnRl
eHRNZW51Q2xpZW50IHsKIAogdm9pZCBhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcp
LnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+
KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRDb250ZXh0
TWVudUNsaWVudChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCmluZGV4IGQzMmI1OWM1
NDc2NjdhN2VjODc3MTgxMDUyYmQxYTc0OWMwZGJjMWMuLmEzNzNiMjk0NTcxNjc5MWEyZDRjMzA3
YmQ1ZTBhOTI5YzgxNDBhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmNwcApAQCAtNTYsNSArNTYsNSBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbgogCiB2b2lk
IGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3
ZWJDb250ZXh0KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3
ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZWFkNGYyMzQ5OTE2
NzA0ZDE3ZDFmMjMwNjQwODlmN2ExYTA0NTk0Zi4uZTc3MWRkNzE4N2U1ODU5YWRiZDVhMDE2Zjhj
YTkzNWQyOGU4NGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcApAQCAtMTE4LDUgKzExOCw1IEBAIGNs
YXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgewog
CiB2b2lkIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdl
YkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRl
eHQpLnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdl
YkNvbnRleHQpKTsKKyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4
dCkuc2V0RG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4
dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggMjE4MDgzZTc2OTdhNTEzOThmMmVlMDk0
Y2RiMDY4YzIwODM3YjFmYS4uOWI1ODE4YTk4MzZmMzc2MmQ4OTYyMmUzNjJjM2ZjOGIyZDNlYmZk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0yNjcsOCArMjY3LDggQEAgdm9pZCB3ZWJraXRG
YXZpY29uRGF0YWJhc2VPcGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0
IFN0cmluZyYgcGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNl
UHJpdmF0ZSogcHJpdiA9IGRhdGFiYXNlLT5wcml2OwotICAgIHByaXYtPmljb25EYXRhYmFzZSA9
IHN0ZDo6bWFrZV91bmlxdWU8SWNvbkRhdGFiYXNlPigpOwotICAgIHByaXYtPmljb25EYXRhYmFz
ZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SWNvbkRhdGFiYXNlQ2xpZW50Pihk
YXRhYmFzZSkpOworICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG1ha2VVbmlxdWU8SWNvbkRhdGFi
YXNlPigpOworICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2Vi
S2l0SWNvbkRhdGFiYXNlQ2xpZW50PihkYXRhYmFzZSkpOwogICAgIEljb25EYXRhYmFzZTo6ZGVs
YXlEYXRhYmFzZUNsZWFudXAoKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldEVuYWJsZWQo
dHJ1ZSk7CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENv
bnRyb2xsZXIuY3BwCmluZGV4IDRmOTgwZDRlZTI1OGFjYWM0NTU4MzIzY2E3YmQ3MWNjZGYzYmVl
YjEuLjc2NzVjOWNiM2E1ZWRhZjg4NjRkMTdhMTc5MjE3Y2I5NDIzMzY1YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJv
bGxlci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRGaW5kQ29udHJv
bGxlckNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfZmluZF9jb250cm9sbGVyX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAK
ICAgICBXZWJLaXRGaW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIgPSBXRUJLSVRfRklORF9D
T05UUk9MTEVSKG9iamVjdCk7Ci0gICAgZ2V0UGFnZShmaW5kQ29udHJvbGxlcikuc2V0RmluZENs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRDb250cm9sbGVyKSk7CisgICAg
Z2V0UGFnZShmaW5kQ29udHJvbGxlcikuc2V0RmluZENsaWVudChtYWtlVW5pcXVlPEZpbmRDbGll
bnQ+KGZpbmRDb250cm9sbGVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9s
bGVyR2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFs
dWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKaW5kZXggMTM0ZDFjNmNlYmU1Njdm
YzU0ZDk3MGY4NzZiZTAyOTMxZDMyODIyZC4uYmM2N2EzNTdkYzA3NDQ1YTM1MjhmODBmMGFiZDc5
ZDA3YzNiYzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Rm9ybUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKQEAgLTQ4LDUgKzQ4LDUgQEAgY2xhc3MgRm9ybUNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBBUEk6OkZvcm1DbGllbnQgewogCiB2b2lkIGF0dGFjaEZvcm1DbGll
bnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0
UGFnZSh3ZWJWaWV3KS5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4o
d2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1DbGll
bnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5h
Z2VyLmNwcAppbmRleCAyZTE1OTQ1ZGZhZDI5YzMxNTUwZDFhZDNjNGRkMTQ5OGJlN2I3MjA0Li44
Y2JhNDIyZWQ1ZTM4YmY4NGM3NjA1OTRkNmNmMGY2NTg4Y2JlYTVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9u
TWFuYWdlci5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2Nh
dGlvbk1hbmFnZXJTdGFydChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIpCiAgICAg
fQogCiAgICAgaWYgKCFtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIpIHsKLSAgICAgICAg
bWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZW9jbHVl
R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVBy
b3ZpZGVyID0gbWFrZVVuaXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICAg
ICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3ko
bWFuYWdlci0+cHJpdi0+aGlnaEFjY3VyYWN5RW5hYmxlZCk7CiAgICAgfQogICAgIG1hbmFnZXIt
PnByaXYtPmdlb2NsdWVQcm92aWRlci0+c3RhcnQoW21hbmFnZXJdKEdlb2xvY2F0aW9uUG9zaXRp
b24mJiBjb3JlUG9zaXRpb24sIE9wdGlvbmFsPENTdHJpbmc+IGVycm9yKSB7CkBAIC0zMTIsNyAr
MzEyLDcgQEAgV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyKiB3ZWJraXRHZW9sb2NhdGlvbk1hbmFn
ZXJDcmVhdGUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHIKIHsKICAgICBhdXRvKiBtYW5hZ2VyID0g
V0VCS0lUX0dFT0xPQ0FUSU9OX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0dFT0xP
Q0FUSU9OX01BTkFHRVIsIG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5wcml2LT5tYW5hZ2VyID0g
cHJveHk7Ci0gICAgcHJveHktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRp
b25Qcm92aWRlcj4obWFuYWdlcikpOworICAgIHByb3h5LT5zZXRQcm92aWRlcihtYWtlVW5pcXVl
PEdlb2xvY2F0aW9uUHJvdmlkZXI+KG1hbmFnZXIpKTsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNv
bkxvYWRpbmdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCmluZGV4IGI4ZjAxZmIyNGZmMjc2NTRjMGFkNjA5YWRk
MzI0MTk1ZWU0MWNhNTkuLjY1ZmQ3YzY5OTIzODgwMTE1NThjNjdkZWIyNWZkYWEyN2Y2NmM1MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25M
b2FkaW5nQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNv
bkxvYWRpbmdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCkBAIC02MSw1ICs2Miw1IEBAIGNsYXNzIEljb25M
b2FkaW5nQ2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgewogCiB2b2lkIGF0
dGFjaEljb25Mb2FkaW5nQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0g
ICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdl
YlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNv
bkxvYWRpbmdDbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNw
cAppbmRleCBhOTNmZjI1YjM5YTI5MjU2MDBkMmM0YWVjY2VjYmM3NTcwZDVkZjNkLi45MjYyYTg0
ZGVjZTI1YmYwYmRmNWM1OWI0OGQwMDI1ODUyZjM2YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwCkBAIC0xNzksNSArMTc5LDUgQEAgY2xhc3MgV2ViS2l0SW5qZWN0ZWRCdW5kbGVD
bGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudCB7CiAKIHZvaWQg
YXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2Vi
Q29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4
dCkuc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtlVW5pcXVlPFdl
YktpdEluamVjdGVkQnVuZGxlQ2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRp
b25Qcm92aWRlci5jcHAKaW5kZXggMjM2ZTgxYzEzOTBiM2VjM2MxNTQ5MTg2ODZiYWZhNWU1Mzg2
NDY4Ny4uNTUxNjM2NDQ3NzU1NzQ3YjcwYWM1ZTc2YjFkMTA0ZDYxYzBiNWNhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBXZWJLaXROb3RpZmljYXRp
b25Qcm92aWRlcjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9uTWFu
YWdlclBybwogICAgICwgbV9ub3RpZmljYXRpb25NYW5hZ2VyKG5vdGlmaWNhdGlvbk1hbmFnZXIp
CiB7CiAgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uTWFuYWdlcik7Ci0gICAgbV9ub3RpZmljYXRp
b25NYW5hZ2VyLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvblByb3Zp
ZGVyPigqdGhpcykpOworICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlkZXIobWFr
ZVVuaXF1ZTxOb3RpZmljYXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKIH0KIAogV2ViS2l0Tm90aWZp
Y2F0aW9uUHJvdmlkZXI6On5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuaAppbmRleCA5ZTU4YmNiMGIxYWIzM2ZhYWQ5N2ZjZjg1OTgxMjdlNjEwYTEy
MzM2Li4zNmI3ODM0Mzg4MGQ5NjAzMGU3MmZmYWExNTM3NDhlZTViMWUzYThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlm
aWNhdGlvblByb3ZpZGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9u
OwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiwgV2ViS2l0V2Vi
Q29udGV4dCopOwogICAgIH5XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCmluZGV4
IDViY2VmNjhmNjVkMjMxODk4MGNmOTFkYWU1OTNkNzY2NzE0OGE5ODkuLjg5NmUxM2RhZDk3YmU3
ZmY3NzZjMDNiZjZlN2QwMjc4MmUwMzIxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIyNSw2ICsyMjUsNiBAQCBj
bGFzcyBVSUNsaWVudCA6IHB1YmxpYyBBUEk6OlVJQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hVSUNs
aWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdH
ZXRQYWdlKHdlYlZpZXcpLnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdl
YlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRVSUNsaWVudCht
YWtlVW5pcXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIu
Y3BwCmluZGV4IDQ4YjM4ZWFjMDhkOTEyYzk2MzllZjU1MDk0YjEwZjFmZmFkMWQ5ZjkuLjI1NWU4
ZTVhNjc5Mjc2NDgzM2QzN2RhZmY5ZjU3OTBmMDg1OTY2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5h
Z2VyLmNwcApAQCAtMTgyLDYgKzE4Miw3IEBAIHZvaWQgd2Via2l0X3VzZXJfY29udGVudF9tYW5h
Z2VyX3JlbW92ZV9hbGxfc2NyaXB0cyhXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqIG1hCiB9CiAK
IGNsYXNzIFNjcmlwdE1lc3NhZ2VDbGllbnRHdGsgZmluYWwgOiBwdWJsaWMgV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgU2NyaXB0TWVzc2FnZUNsaWVudEd0ayhXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIq
IG1hbmFnZXIsIGNvbnN0IGNoYXIqIGhhbmRsZXJOYW1lKQogICAgICAgICA6IG1faGFuZGxlck5h
bWUoZ19xdWFya19mcm9tX3N0cmluZyhoYW5kbGVyTmFtZSkpCkBAIC0yMzgsNyArMjM5LDcgQEAg
Z2Jvb2xlYW4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNz
YWdlX2hhbmRsZXIoV2ViS2l0VXNlckMKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChuYW1lLCBG
QUxTRSk7CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAg
ICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2Ny
aXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFt
ZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgICAgIFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50
R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29u
dGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNl
ckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5n
ZXQoKSk7CiB9CiAKQEAgLTI4OCw3ICsyODksNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfcmVnaXN0ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcl9pbl93b3JsZChXZQog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHdvcmxkTmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+
KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVu
dFdvcmxkKHdvcmxkTmFtZSkpOworICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3Jl
YXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0
cmluZzo6ZnJvbVVURjgobmFtZSksIHdlYmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7
CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4
IGFkODNkYjgyM2QzN2QyMGY1MTNiMDEyM2NlMjc0YTJiYmY0NzE3ODIuLjhjNjg5ODI5NTM5ZjQy
MjM4YjMwN2Y1NTU2MDhhNWM1MDAyZGNmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0xOTgsNiArMTk4LDcg
QEAgc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiBjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50IGZpbmFs
IDogSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViS2l0QXV0b21hdGlvbkNsaWVu
dChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgICAgICA6IG1fd2ViQ29udGV4dChjb250
ZXh0KQpAQCAtMzY3LDkgKzM2OCw5IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCh3ZWJDb250
ZXh0KTsKIAogICAgIHByaXYtPmdlb2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRH
ZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpKTsKLSAgICBwcml2LT5ub3RpZmljYXRpb25Qcm92
aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI+KHByaXYt
PnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSwg
d2ViQ29udGV4dCk7CisgICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVl
PFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVu
dDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdlYkNvbnRleHQpOwogI2lmIFBMQVRG
T1JNKEdUSykgJiYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgcHJpdi0+cmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQ
cm90b2NvbEhhbmRsZXI+KHdlYkNvbnRleHQpOworICAgIHByaXYtPnJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlciA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
Pih3ZWJDb250ZXh0KTsKICNlbmRpZgogfQogCkBAIC02NzgsNyArNjc5LDcgQEAgdm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZChXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0LCBnYm9vbGUKICAgICAgICAgICAgIGdfd2FybmluZygiTm90IGVuYWJsaW5nIGF1dG9t
YXRpb24gb24gV2ViS2l0V2ViQ29udGV4dCBiZWNhdXNlIHRoZXJlJ3MgYW5vdGhlciBjb250ZXh0
IHdpdGggYXV0b21hdGlvbiBlbmFibGVkLCBvbmx5IG9uZSBpcyBhbGxvd2VkIik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+cHJpdi0+YXV0b21hdGlv
bkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0QXV0b21hdGlvbkNsaWVudD4oY29udGV4
dCk7CisgICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGllbnQgPSBtYWtlVW5pcXVl
PFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQpOwogICAgIH0gZWxzZQogICAgICAgICBj
b250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRl
eCBiMjM5YWM0ZTE5ZTYzZDMzYTg2OWRlZmI2NmZjM2MwYjQ1MDBiNzg1Li43NDMwYzNmY2ZkNTRj
NDZlZmE2NGUxMmZkOTdkZTVhOTMyOThhNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjAxLDYgKzIwMSw3IEBAIGNs
YXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlcjsKICNpZiBQTEFURk9STShXUEUpCiBzdGF0aWMgdW5z
aWduZWQgZnJhbWVEaXNwbGF5Q2FsbGJhY2tJRDsKIHN0cnVjdCBGcmFtZURpc3BsYXllZENhbGxi
YWNrIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRnJhbWVEaXNw
bGF5ZWRDYWxsYmFjayhXZWJLaXRGcmFtZURpc3BsYXllZENhbGxiYWNrIGNhbGxiYWNrLCBncG9p
bnRlciB1c2VyRGF0YSA9IG51bGxwdHIsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lOb3RpZnlGdW5j
dGlvbiA9IG51bGxwdHIpCiAgICAgICAgIDogaWQoKytmcmFtZURpc3BsYXlDYWxsYmFja0lEKQog
ICAgICAgICAsIGNhbGxiYWNrKGNhbGxiYWNrKQpAQCAtMjI3LDYgKzIyOCw3IEBAIHN0cnVjdCBG
cmFtZURpc3BsYXllZENhbGxiYWNrIHsKICNlbmRpZiAvLyBQTEFURk9STShXUEUpCiAKIHN0cnVj
dCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICB+X1dlYktpdFdlYlZpZXdQcml2YXRlKCkKICAgICB7CiAgICAgICAgIC8vIEZv
ciBtb2RhbCBkaWFsb2dzLCBtYWtlIHN1cmUgdGhlIG1haW4gbG9vcCBpcyBzdG9wcGVkIHdoZW4g
ZmluYWxpemluZyB0aGUgd2ViVmlldy4KQEAgLTMyNiw2ICszMjgsNyBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIH0KIAog
Y2xhc3MgUGFnZUxvYWRTdGF0ZU9ic2VydmVyIGZpbmFsIDogcHVibGljIFBhZ2VMb2FkU3RhdGU6
Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQ
YWdlTG9hZFN0YXRlT2JzZXJ2ZXIoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykKQEAgLTM5OSw2ICs0MDIsNyBAQCBjbGFzcyBQYWdlTG9hZFN0YXRl
T2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewogCiAjaWYg
UExBVEZPUk0oV1BFKQogY2xhc3MgV2ViVmlld0NsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OlZp
ZXdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYlZpZXdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykKQEAgLTcyNSw3ICs3MjksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgd2Via2l0V2ViQ29udGV4
dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZpZXcsIHByaXYt
PnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOwogCi0gICAgcHJp
di0+bG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+
KHdlYlZpZXcpOworICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IG1ha2VVbmlxdWU8UGFnZUxvYWRT
dGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdlYlZpZXcpLnBhZ2VMb2FkU3Rh
dGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVyKTsKIAogICAgIC8vIFRoZSByZWxh
dGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlvbi4KQEAgLTc0MSw3
ICs3NDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQogI2VuZGlmCiAKICNpZiBQTEFURk9STShXUEUpCi0gICAgcHJpdi0+dmlldy0+c2V0
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmlldykpOworICAgIHBy
aXYtPnZpZXctPnNldENsaWVudChtYWtlVW5pcXVlPFdlYlZpZXdDbGllbnQ+KHdlYlZpZXcpKTsK
ICNlbmRpZgogCiAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBhZnRlciBhdHRhY2hVSUNsaWVudFRv
VmlldygpIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudCgpIGNhbGxzIHNldENhblJ1
bk1vZGFsKCkgd2l0aCB0cnVlLgpAQCAtMzcwMSw2ICszNzA1LDcgQEAgZ2Jvb2xlYW4gd2Via2l0
X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25z
dCBjaGFyKgogfQogCiBzdHJ1Y3QgVmlld1NhdmVBc3luY0RhdGEgeworICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJEYXRhOwogICAg
IEdSZWZQdHI8R0ZpbGU+IGZpbGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBmMDlkNmM3ZTkyMDY4M2E3NTY2NTI3
Njk2N2U3NDdjYzZjZWViNDgxLi4wNmIzYjgzNjA2NWQ5ZjY2YTA3OThhMjA5NTUxM2NhODY4YjMx
YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudElt
cGwoR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVhbCBm
dW5jdGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50SW1w
bDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92
aWV3V2lkZ2V0KSksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJ
VF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJl
Z2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RW1vamlDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RW1vamlDaG9vc2VyLmNwcAppbmRleCAzMWUwOTczZmUxMDAzYzZlYTY1MjMwNjFhNjdjOTQ5ZDUz
ZWJkNmI3Li4yZDFjMmNiMzY4YTk5MzMxNjk3NDI0NmEwZWQ1OTljMjhkY2FlNmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29z
ZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RW1vamlDaG9vc2Vy
U2V0dXBFbW9qaVNlY3Rpb25zKFdlYktpdEVtb2ppQ2hvb3NlciogY2hvb3NlciwgR3QKICAgICAg
ICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbnVsbHB0cjsKICAgICB9
OwogCi0gICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsKKyAgICBj
aG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBtYWtlVW5pcXVlPENhbGxiYWNr
VGltZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOwogICAgIGNob29zZXItPnByaXYtPnBv
cHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0UHJpb3JpdHkoR19QUklPUklUWV9ERUZBVUxUX0lETEUp
OwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0TmFtZSgiW1dl
YktpdEVtb2ppQ2hvb3Nlcl0gcG9wdWxhdGUgc2VjdGlvbnMgdGltZXIiKTsKICAgICBjaG9vc2Vy
LT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnN0YXJ0UmVwZWF0aW5nKHsgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMGY2NzQ4NjQ1
MmNkMWZhODdhODI4NjJlN2U2MDU3MzRkZmMzNTk2OC4uNWJhNjEwZTdkOWE0NGQwNDczODM4MWUy
M2QwNDBiZGE5MmMzZmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBTY3JpcHRNZXNzYWdlQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3NhZ2VDbGllbnQoUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyJiBpbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIpCiAgICAgICAgIDog
bV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIoaW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKQpAQCAt
MTA1LDEzICsxMDYsMTMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6Omhh
bmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWUKICAgICBhdXRvKiB1c2Vy
Q29udGVudE1hbmFnZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2Vy
KHdlYlZpZXcpOwogICAgIGF1dG8gdXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0ID0gbV91c2VyQ29u
dGVudE1hbmFnZXJzLmFkZCh1c2VyQ29udGVudE1hbmFnZXIpOwogICAgIGlmICh1c2VyQ29udGVu
dE1hbmFnZXJSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2Fn
ZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3Jt
YWxXb3JsZCgpKTsKKyAgICAgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3Bl
Y3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgICAgIHdl
YmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJD
b250ZW50TWFuYWdlciktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgp
KTsKICAgICAgICAgZ19vYmplY3Rfd2Vha19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2Vy
KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJv
eWVkKSwgdGhpcyk7CiAgICAgfQogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0b3JDbGll
bnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVzdFVSTF0g
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+
KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVl
KCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52
YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAgICAgR1N0
cmluZyogaHRtbCA9IGdfc3RyaW5nX25ldygKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcAppbmRleCAwZjAxNzExZTc5NjFl
OGIwMGM1ZTU3NGQyODg1MGQwNWIyNDFmNmVjLi44MGQyMGFhNzYwM2JhZGFiOTAwZmU0YmQxNTkw
YWFkMzliMzBlMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCkBAIC0yODQsNiArMjg0LDcgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9pbnNwZWN0b3JfY2xhc3NfaW5pdChXZWJLaXRXZWJJbnNwZWN0b3JDbGFz
cyogZmluZENsYXNzKQogfQogCiBjbGFzcyBXZWJLaXRJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBw
dWJsaWMgV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYktpdEluc3BlY3RvckNsaWVudChXZWJLaXRX
ZWJJbnNwZWN0b3IqIGluc3BlY3RvcikKICAgICAgICAgOiBtX2luc3BlY3RvcihpbnNwZWN0b3Ip
CkBAIC0zNjAsNyArMzYxLDcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRXZWJJbnNwZWN0
b3JDcmVhdGUoV2ViSW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvcikKIHsKICAgICBXZWJLaXRX
ZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfSU5TUEVDVE9SLCBOVUxMKSk7CiAgICAgaW5zcGVjdG9yLT5wcml2
LT53ZWJJbnNwZWN0b3IgPSB3ZWJJbnNwZWN0b3I7Ci0gICAgd2ViSW5zcGVjdG9yLT5zZXRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOwor
ICAgIHdlYkluc3BlY3Rvci0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xp
ZW50PihpbnNwZWN0b3IpKTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDFiOWRkOGQxZjQ2MDIxNGY1YTc3MjY3MmMyZmI2NTM3MGI1MjBjNWUuLjg4YjNjZjQzYmZl
NjhlZTk3YzczMWI3NjRkNDQ5OTBhN2JmYzVhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC01NjYsNyArNTY2
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBv
YmplY3QpCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmlld1dpZGdldCwgUGFz
dGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdCgpKTsKIAogICAgIFdlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKG9iamVjdCktPnBy
aXY7Ci0gICAgcHJpdi0+cGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudElt
cGw+KHZpZXdXaWRnZXQpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFBhZ2VD
bGllbnRJbXBsPih2aWV3V2lkZ2V0KTsKICAgICBwcml2LT5kaWFsb2cgPSBudWxscHRyOwogfQog
CkBAIC0xMjIwLDcgKzEyMjAsNyBAQCBHZXN0dXJlQ29udHJvbGxlciYgd2Via2l0V2ViVmlld0Jh
c2VHZXN0dXJlQ29udHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldwogewogICAgIFdl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlm
ICghcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9s
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJW
aWV3QmFzZSksIHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmll
d0Jhc2UpKTsKKyAgICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEdl
c3R1cmVDb250cm9sbGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgbWFrZVVuaXF1ZTxUb3Vj
aEdlc3R1cmVDb250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVybiAqcHJpdi0+Z2Vz
dHVyZUNvbnRyb2xsZXI7CiB9CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIERyYWdBbmREcm9wSGFu
ZGxlciYgd2Via2l0V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmll
d0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIpCi0gICAgICAg
IHByaXYtPmRyYWdBbmREcm9wSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0FuZERyb3BI
YW5kbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5k
bGVyID0gbWFrZVVuaXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOwog
ICAgIHJldHVybiAqcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyOwogfQogI2VuZGlmIC8vIEVOQUJM
RShEUkFHX1NVUFBPUlQpCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3
QmFzZQogICAgIGlmIChwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIpCiAgICAgICAgIHByaXYt
PnZpZXdHZXN0dXJlQ29udHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwogICAgIGVsc2Ugewot
ICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAg
cHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgICAgIHByaXYtPnZpZXdHZXN0
dXJlQ29udHJvbGxlci0+c2V0U3dpcGVHZXN0dXJlRW5hYmxlZChwcml2LT5pc0JhY2tGb3J3YXJk
TmF2aWdhdGlvbkdlc3R1cmVFbmFibGVkKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDJjYWIyZTA1Mzg2ZDQyYjM3MWY0NDA2YWI3MWE3
ZjY1OTMwZjdkNzcuLjE0NjAzZDVhZmViYWY2ZGVlMDExOTc5NTc3MDM4ODM0OWQ0ZTdiMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC04OTUsNiArODk1
LDcgQEAgLSAodm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogewogICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGll
bnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdD
bGllbnQoV0tWaWV3ICp3a1ZpZXcpCiAgICAgICAgICAgICA6IG1fd2tWaWV3KHdrVmlldykKQEAg
LTkzMiw3ICs5MzMsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW3NlbGYgcmVz
cG9uZHNUb1NlbGVjdG9yOkljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNlbGVjdG9yKCldKQot
ICAgICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9kYXRhLT5faW1w
bC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGll
bnQ+KHNlbGYpKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29u
ZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbgpA
QCAtOTQ0LDcgKzk0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3Qp
ZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxsb2NdIGlu
aXRdOwotICAgIF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3
SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworICAgIF9kYXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2Vs
ZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCiAgICAg
W3NlbGYgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVudC5oCmluZGV4IDIxOTkxZjhkYWYzMWI0
MWIxNTY1ZmZmOTg2NWRlOTkzOGZiOGEwZGYuLjY0Y2EyZmNiNWE4NTEyN2Y1YjQxNDcxZWNlNmVh
OGY0NDZjZTA1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
QVBJVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvQVBJ
Vmlld0NsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFZpZXc7CiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgVmlld0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Vmlld0NsaWVudCgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA4
NTEyOWE1NDg3YzlmZmJlZDU2NjQ2Y2MxMGRkMTg4M2M5ODc1NmQzLi5lMjA4YTVjNTVkNzU4ODU3
M2RmZjQzNjAzMzc3ZWY4ZDE2MzU4NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdLV1BFOjpWaWV3
JiB2aWV3KQogICAgIDogbV92aWV3KHZpZXcpCi0gICAgLCBtX3Njcm9sbEdlc3R1cmVDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI+KCkpCisgICAgLCBt
X3Njcm9sbEdlc3R1cmVDb250cm9sbGVyKG1ha2VVbmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRyb2xs
ZXI+KCkpCiB7CiB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgSVBDOjpBdHRhY2htZW50IFBhZ2VDbGll
bnRJbXBsOjpob3N0RmlsZURlc2NyaXB0b3IoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0Fy
ZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4o
bV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZp
ZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaApp
bmRleCA5YzlmNmU5ZTNiMThiNDJmNTNmNzJmOGViNTVhNGU2NzU1ZGI0N2EyLi4zZjYzMjUxMjFk
ODI4ZTM1OGFkMTViNzZjNGQ1Y2RjNDgzNzVkYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0z
MCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNj
cm9sbEdlc3R1cmVDb250cm9sbGVyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAppbmRleCBiZTUwZjEyNzRlOGMxZmE0OTEwOWFhMjg1
NWI4YmI0MTU3MTcwNDRmLi4xMmUzMmZhZDQwMDI4Yzc3ZTU3MDMwOTI4NDk4NDQwZDAzMGNlMDRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKQEAgLTQy
LDggKzQyLDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFjZSBXS1dQRSB7CiAK
IFZpZXc6OlZpZXcoc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJhY2tlbmQsIGNvbnN0IEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24mIGJhc2VDb25maWd1cmF0aW9uKQotICAgIDogbV9jbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCkpCi0gICAgLCBtX3BhZ2VDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQorICAgIDogbV9jbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCkpCisgICAgLCBtX3BhZ2VDbGllbnQobWFrZVVuaXF1
ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQogICAgICwgbV9zaXplIHsgODAwLCA2MDAgfQogICAg
ICwgbV92aWV3U3RhdGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0
aXZlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyB9CiAg
ICAgLCBtX2JhY2tlbmQoYmFja2VuZCkKQEAgLTE4NCw3ICsxODQsNyBAQCBWaWV3Ojp+Vmlldygp
CiB2b2lkIFZpZXc6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpWaWV3Q2xpZW50PiYm
IGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkKLSAgICAgICAgbV9jbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6Vmlld0NsaWVudD4oKTsKKyAgICAgICAgbV9jbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6Vmlld0NsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50ID0gV1RG
TW92ZShjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9xdC9XUEVRdFZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9x
dC9XUEVRdFZpZXcuY3BwCmluZGV4IGUxZGM4NTdmZjk5NWVkMGNlNmE4NTM2NTljYzViMTM1NjFj
YjM2NmMuLmI0ZjI3YjZkMzRlMjQyYmE1NTM1YWI1YjJlNGVjZTUzMTVkMDlkMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKQEAgLTE1
MCw3ICsxNTAsNyBAQCB2b2lkIFdQRVF0Vmlldzo6bm90aWZ5TG9hZENoYW5nZWRDYWxsYmFjayhX
ZWJLaXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2ZW50IGV2ZW50LAogCiAgICAgaWYgKHN0YXR1c1Nl
dCkgewogICAgICAgICBXUEVRdFZpZXdMb2FkUmVxdWVzdFByaXZhdGUgbG9hZFJlcXVlc3RQcml2
YXRlKHZpZXctPnVybCgpLCBsb2FkU3RhdHVzLCAiIik7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQ
RVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxX
UEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKICAgICAgICAgUV9FTUlU
IHZpZXctPmxvYWRpbmdDaGFuZ2VkKGxvYWRSZXF1ZXN0LmdldCgpKTsKICAgICB9CiB9CkBAIC0x
NjYsNyArMTY2LDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRGYWlsZWRDYWxsYmFjayhX
ZWJLaXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2ZW50LCBjb25zdAogICAgICAgICBsb2FkU3RhdHVz
ID0gV1BFUXRWaWV3OjpMb2FkU3RhdHVzOjpMb2FkRmFpbGVkU3RhdHVzOwogCiAgICAgV1BFUXRW
aWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1ZXN0UHJpdmF0ZShRVXJsKFFTdHJpbmcoZmFp
bGluZ1VSSSkpLCBsb2FkU3RhdHVzLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8
V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BF
UXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgUV9FTUlUIHZpZXct
PmxvYWRpbmdDaGFuZ2VkKGxvYWRSZXF1ZXN0LmdldCgpKTsKIH0KIApAQCAtNDM5LDcgKzQzOSw3
IEBAIHN0YXRpYyB2b2lkIGpzQXN5bmNSZWFkeUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyCiAqLwogdm9pZCBXUEVRdFZpZXc6OnJ1bkphdmFT
Y3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0LCBjb25zdCBRSlNWYWx1ZSYgY2FsbGJhY2spCiB7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+IGRhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNrLCBRUG9pbnRlcjxX
UEVRdFZpZXc+KHRoaXMpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SmF2YXNjcmlwdENhbGxiYWNr
RGF0YT4gZGF0YSA9IG1ha2VVbmlxdWU8SmF2YXNjcmlwdENhbGxiYWNrRGF0YT4oY2FsbGJhY2ss
IFFQb2ludGVyPFdQRVF0Vmlldz4odGhpcykpOwogICAgIHdlYmtpdF93ZWJfdmlld19ydW5famF2
YXNjcmlwdChtX3dlYlZpZXcuZ2V0KCksIHNjcmlwdC50b1V0ZjgoKS5jb25zdERhdGEoKSwgbnVs
bHB0ciwganNBc3luY1JlYWR5Q2FsbGJhY2ssIGRhdGEucmVsZWFzZSgpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2Vu
ZC5jcHAKaW5kZXggYTg1MjZjZWQwMjBmNjM0NGU3MmZiY2MzYWE0NDljMmRkM2FiZDFmOS4uMTNm
ZDM3YWVmZjJiNjUzNWQ1NGYzMTRjNDE2ZTFjYjg2OGUzZTgyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwCkBA
IC02NSw3ICs2NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdCYWNrZW5kPiBXUEVRdFZp
ZXdCYWNrZW5kOjpjcmVhdGUoY29uc3QgUVNpemVGJiBzaXplLCBRCiAgICAgaWYgKCFlZ2xDb250
ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdQRVF0Vmlld0JhY2tlbmQ+KHNpemUsIGVnbERpc3BsYXksIGVnbENvbnRleHQsIGNvbnRl
eHQsIHZpZXcpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdQRVF0Vmlld0JhY2tlbmQ+KHNpemUs
IGVnbERpc3BsYXksIGVnbENvbnRleHQsIGNvbnRleHQsIHZpZXcpOwogfQogCiBXUEVRdFZpZXdC
YWNrZW5kOjpXUEVRdFZpZXdCYWNrZW5kKGNvbnN0IFFTaXplRiYgc2l6ZSwgRUdMRGlzcGxheSBk
aXNwbGF5LCBFR0xDb250ZXh0IGVnbENvbnRleHQsIFFQb2ludGVyPFFPcGVuR0xDb250ZXh0PiBj
b250ZXh0LCBRUG9pbnRlcjxXUEVRdFZpZXc+IHZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaAppbmRleCA0MjA4ZThmMjJlMGFhNGVk
ZDg1YjUyMjU5MDRjMmRjNDk5YjA1ZTk2Li45NDkzN2IwMDE5NDYyNTM2MmY2NDRjYTc3MDUwOGQw
ZGFhNjc0MzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlv
blN0YXRlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9u
U3RhdGVUcmFja2VyLmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBVSVZpZXc7CiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBBcHBsaWNhdGlvblN0YXRlVHJhY2tlcihVSVZp
ZXcgKiwgU0VMIGRpZEVudGVyQmFja2dyb3VuZFNlbGVjdG9yLCBTRUwgZGlkRmluaXNoU25hcHNo
b3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmRTZWxlY3RvciwgU0VMIHdpbGxFbnRlckZvcmVn
cm91bmRTZWxlY3Rvcik7CiAgICAgfkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDJjNzhkZjUwMGY3NDYzNzVkMzFkODRkODg2ZTMyYTJkODhhYjFj
ZWMuLjE5YWVmOTQ0Zjc0ZjYyYzE5ZDQ4OTliOTM4NjYwMGZhNzFjNDY0ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCkBAIC03MywxMSArNzMsMTEgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgZGVm
YXVsdFBhZ2VMb2FkVGltZW91dCA9IDMwMF9zOwogc3RhdGljIGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3kgZGVmYXVsdFBhZ2VMb2FkU3RyYXRl
Z3kgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5OjpO
b3JtYWw7CiAKIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbigpCi0g
ICAgOiBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGll
bnQ+KCkpCisgICAgOiBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ+KCkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUo
KSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZSht
X2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCiAgICAgLCBtX2RvbWFpbkRpc3BhdGNoZXIoQXV0
b21hdGlvbkJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9iYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCi0gICAgLCBtX2RvbWFpbk5vdGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b21hdGlvbkZy
b250ZW5kRGlzcGF0Y2hlcj4obV9mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2RvbWFpbk5vdGlm
aWVyKG1ha2VVbmlxdWU8QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcj4obV9mcm9udGVuZFJv
dXRlcikpCiAgICAgLCBtX2xvYWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6bG9hZFRpbWVyRmlyZWQpCiB7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9B
Q1RJT05TX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vz
c1Byb3h5LmgKaW5kZXggNmIwOWJhZGI4ZDBjZWJhYmYyYzY5ZjYwMDliMWJkMWQyM2MwOWU1OC4u
NTNiMzc3MDdlODdjNTFkYzRhZTlkNjM5YjFkNGYzMjYzODA2OGIxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKQEAgLTEzNyw3ICsxMzcs
NyBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PAogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjpp
c1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6
bWFrZV91bmlxdWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBk
ZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rl
cj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CiAgICAgZW5j
b2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogCiAgICAgcmV0dXJuIHNlbmRNZXNz
YWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IDEw
YThlNDI0MTNiMjlhZmZiNjM3N2Q4NGEwOWJlNTExYmQyNTFkNWMuLmRlNDBmYzhmMzE3Njk3NWIx
NTJjNGVmYWE0MDE1N2M5NGYyZmE5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtMzYsNiArMzYsNyBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEF1dG9tYXRpb25TZXNzaW9u
Q2xpZW50KGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaAppbmRleCBi
MDExZGQzYTcyMzk3MzIwNWNjNmRmNGNjNjZhNjc5MDZjMDI5YjBkLi4wNzQzNzkwNGYxZTQyMzBi
MzE1ODJhOWRmNDJjMjNjMTRkNjA1YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSWNvbkxvYWRpbmdEZWxlZ2F0ZSB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdEZWxl
Z2F0ZShXS1dlYlZpZXcgKik7CiAgICAgfkljb25Mb2FkaW5nRGVsZWdhdGUoKTsKQEAgLTQ4LDYg
KzQ5LDcgQEAgY2xhc3MgSWNvbkxvYWRpbmdEZWxlZ2F0ZSB7CiAKIHByaXZhdGU6CiAgICAgY2xh
c3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhw
bGljaXQgSWNvbkxvYWRpbmdDbGllbnQoSWNvbkxvYWRpbmdEZWxlZ2F0ZSYpOwogICAgICAgICB+
SWNvbkxvYWRpbmdDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCmluZGV4IGEzNDRkZmY5Y2UwZDUzNWNhMzBkYjJi
ZWI1YmNiZDdjMGQ3NGNmYjQuLjE2M2ZiOTUyZWUwZWE5YjcxYTNkNDlkM2RkOTdjZTAwNDNjYzY4
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5n
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRp
bmdEZWxlZ2F0ZS5tbQpAQCAtNDQsNyArNDQsNyBAQCBJY29uTG9hZGluZ0RlbGVnYXRlOjp+SWNv
bkxvYWRpbmdEZWxlZ2F0ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50PiBJY29uTG9hZGluZ0RlbGVnYXRlOjpjcmVhdGVJY29uTG9hZGluZ0NsaWVudCgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJY29uTG9hZGluZ0NsaWVudD4oKnRoaXMpOwogfQogCiBSZXRh
aW5QdHI8aWQgPF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU+ID4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6
ZGVsZWdhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0K
aW5kZXggMzAyZjY4MjI4MmJjYzdlZTM4ZDNmNjcyN2Q2ZDIzZjg0YjI4OWRhOC4uN2I2MjRhYmZh
MmY0MTEwNDBhMDZiMmIyNjdkYmJiMzJjZDgxY2QxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC03OCwxMyArNzgsMTMgQEAgVUlEZWxlZ2F0ZTo6
flVJRGVsZWdhdGUoKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogc3RkOjp1bmlxdWVfcHRy
PEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+IFVJRGVsZWdhdGU6OmNyZWF0ZUNvbnRleHRNZW51Q2xp
ZW50KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4o
KnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50PigqdGhpcyk7
CiB9CiAjZW5kaWYKIAogc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+IFVJRGVsZWdhdGU6
OmNyZWF0ZVVJQ2xpZW50KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVSUNsaWVu
dD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFVJQ2xpZW50PigqdGhpcyk7CiB9CiAK
IFJldGFpblB0cjxpZCA8V0tVSURlbGVnYXRlPiA+IFVJRGVsZWdhdGU6OmRlbGVnYXRlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDhjMmIyYjRlMDYxMDY5MjcyYWViOGI5NGEy
MzRlYWE5MjZhZjc2ZC4uOTFjZjk0ODBjNzUxOGNkOWJiMTdlOWZjYTRlOTE2ZDBiMDczYjA4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eTo6U291cmNlUHJveHkgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6T2JzZXJ2ZXIsIHB1YmxpYyBTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZTo6Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTb3VyY2VQcm94eSh1aW50
NjRfdCBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBSZWY8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4mJiBzb3VyY2UpCiAgICAgICAgIDogbV9pZChpZCkKQEAgLTE2OCw3ICsxNjks
NyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1lZGlhU291cmNl
Rm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaQogICAgICAgICBzb3VyY2UtPnNldElzUmVtb3Rl
KHRydWUpOwogICAgICAgICBzZXR0aW5ncyA9IHNvdXJjZS0+c2V0dGluZ3MoKTsKICAgICAgICAg
QVNTRVJUKCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKLSAgICAgICAgbV9wcm94aWVzLmFkZChp
ZCwgc3RkOjptYWtlX3VuaXF1ZTxTb3VyY2VQcm94eT4oaWQsICptX3Byb2Nlc3MuY29ubmVjdGlv
bigpLCBXVEZNb3ZlKHNvdXJjZSkpKTsKKyAgICAgICAgbV9wcm94aWVzLmFkZChpZCwgbWFrZVVu
aXF1ZTxTb3VyY2VQcm94eT4oaWQsICptX3Byb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHNv
dXJjZSkpKTsKICAgICB9IGVsc2UKICAgICAgICAgaW52YWxpZENvbnN0cmFpbnRzID0gV1RGTW92
ZShzb3VyY2VPckVycm9yLmVycm9yTWVzc2FnZSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Vj
Y2VlZGVkLCBpbnZhbGlkQ29uc3RyYWludHMsIFdURk1vdmUoc2V0dGluZ3MpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHkuaAppbmRleCA5Y2E2ZmEzNTM0OTYwMTgwM2RmNWQzZDFiMmFiYTMxNjU1NzQw
YzM5Li45YmRkYjk5MDlkZjdlOGZlZjFlNTQ4MDZjYmU2YmM1YzQwY2ZjNTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFNoYXJlZE1lbW9yeTsKIGNs
YXNzIFdlYlByb2Nlc3NQcm94eTsKIAogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHkoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgflVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCmluZGV4IDMwNzBkNTc0NDNmZGY3MTk2MDg2MDMwZTNlNjMxNDFlMDY3ODU4MjYu
LmU1ZTMyZDJmYTJhMDg2MDQxN2M2Y2Y4MGQ3YmNlNTliOWE3MzlhZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAt
MTM1LDcgKzEzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSgp
CiAgICAgaWYgKCFbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9y
S2V5OkAiV2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIiXSkKICAgICAgICAgaW5z
dGFsbE1lbW9yeVByZXNzdXJlSGFuZGxlcigpOwogCi0gICAgc2V0TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PigpKTsKKyAgICBzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQo
bWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpOwogfQogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpzdGFydERpc3BsYXlMaW5rKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdW5z
aWduZWQgb2JzZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGF1
dG8gZGlzcGxheUxpbmsgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaW5rPihkaXNwbGF5SUQp
OworICAgIGF1dG8gZGlzcGxheUxpbmsgPSBtYWtlVW5pcXVlPERpc3BsYXlMaW5rPihkaXNwbGF5
SUQpOwogICAgIGRpc3BsYXlMaW5rLT5hZGRPYnNlcnZlcihjb25uZWN0aW9uLCBvYnNlcnZlcklE
KTsKICAgICBtX2Rpc3BsYXlMaW5rcy5hcHBlbmQoV1RGTW92ZShkaXNwbGF5TGluaykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbQppbmRleCA1YzIxY2E3NWExODI5YzUwZjFkODJmNTc3NzhiNGU4NmU2OWQ3MGVhLi5i
MWVjODQ2YjdiNDYwNTQ4Y2UwZjg2ZDdhNWQxMTdhNjc2NzhjNGYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAt
MjA1LDcgKzIwNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2FzVW5leHBlY3Rl
ZGx5VW5zdXNwZW5kZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpCiAgICAgYXV0byBiYWNrZ3Jv
dW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciA9IFthY3Rpdml0eVRva2VuID0gbV90aHJvdHRsZXIu
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0g
ewogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vz
c1Byb3h5Ojpwcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQoKSAtIGxhbWJkYSwgYmFj
a2dyb3VuZCBhY3Rpdml0eSB0aW1lZCBvdXQiLCB3ZWFrVGhpcy5nZXQoKSk7CiAgICAgfTsKLSAg
ICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpE
ZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRBY3Rpdml0eVRpbWVvdXRI
YW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOworICAgIG1fdW5leHBlY3RlZEFj
dGl2aXR5VGltZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXI+
KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIpLCB1bmV4cGVjdGVkQWN0
aXZpdHlEdXJhdGlvbik7CiAgICAgY29tcGxldGlvbigpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGNhYjA1NTA5ZmI2ZDAy
YmI0M2U4OGQ4ZDY1NDg5ZmZiNzIyZmU4MDIuLjhkZjRkYTdiMzIwODA5NDZkZjcxYzkyODIxNjUz
ZjZlYTk0MDc1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC0xMzE1LDcgKzEzMTUsNyBAQCBzdGF0aWMgTlNUcmFja2luZ0FyZWFPcHRpb25z
IHRyYWNraW5nQXJlYU9wdGlvbnMoKQogCiBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoTlNWaWV3
IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldlYlZpZXcsIFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYg
Y29uZmlndXJhdGlvbikKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9wYWdlQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCisgICAg
LCBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlldywgb3V0ZXJXZWJW
aWV3KSkKICAgICAsIG1fcGFnZShwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCptX3BhZ2VDbGll
bnQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpKQogICAgICwgbV9uZWVkc1ZpZXdGcmFtZUluV2lu
ZG93Q29vcmRpbmF0ZXMobV9wYWdlLT5wcmVmZXJlbmNlcygpLnBsdWdpbnNFbmFibGVkKCkpCiAg
ICAgLCBtX2ludHJpbnNpY0NvbnRlbnRTaXplKENHU2l6ZU1ha2UoTlNWaWV3Tm9JbnRyaW5zaWNN
ZXRyaWMsIE5TVmlld05vSW50cmluc2ljTWV0cmljKSkKQEAgLTEzNTMsNyArMTM1Myw3IEBAIFdl
YlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBsRGVsZWdhdGU+ICp2aWV3
LCBXS1dlYlZpZXcgKm91dGVyV2ViCiAgICAgdmlldy5sYXllckNvbnRlbnRzUGxhY2VtZW50ID0g
TlNWaWV3TGF5ZXJDb250ZW50c1BsYWNlbWVudFRvcExlZnQ7CiAKICNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCi0gICAgbV9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pih2aWV3KSk7CisgICAgbV9wYWdlLT5zZXRGdWxs
c2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50Pih2aWV3KSk7
CiAjZW5kaWYKIAogICAgIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzKCkud2tWaWV3Q291bnQr
KzsKQEAgLTE3MTEsOSArMTcxMSw5IEBAIENHU2l6ZSBXZWJWaWV3SW1wbDo6Zml4ZWRMYXlvdXRT
aXplKCkgY29uc3QKIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+IFdl
YlZpZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cykKIHsKICAgICBpZiAoW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9i
amVjdEZvcktleTpAIldlYktpdDJVc2VSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSJdIGJvb2xW
YWx1ZV0pCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vzcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vzcyk7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vzcyk7CiB9CiAKIGJvb2wg
V2ViVmlld0ltcGw6OmlzVXNpbmdVSVNpZGVDb21wb3NpdGluZygpIGNvbnN0CkBAIC0zMzU2LDcg
KzMzNTYsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRUZXh0SW5kaWNhdG9yKFdlYkNvcmU6OlRleHRJbmRpY2F0b3ImIHRl
eHRJbmRpY2F0b3IsIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3dMaWZldGltZSBsaWZldGlt
ZSkKIHsKICAgICBpZiAoIW1fdGV4dEluZGljYXRvcldpbmRvdykKLSAgICAgICAgbV90ZXh0SW5k
aWNhdG9yV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2lu
ZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOworICAgICAgICBtX3RleHRJbmRpY2F0b3JX
aW5kb3cgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5kb3c+KG1fdmlldy5n
ZXRBdXRvcmVsZWFzZWQoKSk7CiAKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluU2NyZWVu
Q29vcmRpbmF0ZXMgPSBbW21fdmlldyB3aW5kb3ddIGNvbnZlcnRSZWN0VG9TY3JlZW46W21fdmll
dyBjb252ZXJ0UmVjdDp0ZXh0SW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMoKSB0b1ZpZXc6bmlsXV07CiAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93LT5zZXRU
ZXh0SW5kaWNhdG9yKHRleHRJbmRpY2F0b3IsIE5TUmVjdFRvQ0dSZWN0KHRleHRCb3VuZGluZ1Jl
Y3RJblNjcmVlbkNvb3JkaW5hdGVzKSwgbGlmZXRpbWUpOwpAQCAtNDM1OCw3ICs0MzU4LDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JJdGVtKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiBWaWV3R2VzdHVyZUNvbnRyb2xsZXImIFdlYlZpZXdJbXBs
OjplbnN1cmVHZXN0dXJlQ29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2dlc3R1cmVDb250cm9s
bGVyKQotICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3
R2VzdHVyZUNvbnRyb2xsZXI+KG1fcGFnZSk7CisgICAgICAgIG1fZ2VzdHVyZUNvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPFZpZXdHZXN0dXJlQ29udHJvbGxlcj4obV9wYWdlKTsKICAgICByZXR1cm4g
Km1fZ2VzdHVyZUNvbnRyb2xsZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggOGVhY2Q5MWExZTZh
ZTQ4NTY1YzllNThjY2RhMTBmM2VhNDQ0YzI3Ni4uNjI2NGRkYjdmNzkwYzJmY2NjZGY0MTBkZjZl
MmM5MzM3YjY1ZDI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIERy
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBvcmF0ZVVwZGF0ZShjb25z
dCBVcGRhdGVJbmZvJiB1cAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fYmFja2luZ1N0
b3JlKQotICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0
b3JlPih1cGRhdGVJbmZvLnZpZXdTaXplLCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBt
X3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxCYWNr
aW5nU3RvcmU+KHVwZGF0ZUluZm8udmlld1NpemUsIHVwZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0
b3IsIG1fd2ViUGFnZVByb3h5KTsKIAogICAgIG1fYmFja2luZ1N0b3JlLT5pbmNvcnBvcmF0ZVVw
ZGF0ZSh1cGRhdGVJbmZvKTsKIApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoV1RG
OjpGdW5jCiAgICAgfQogCiAgICAgaWYgKCFtX2RyYXdpbmdNb25pdG9yKQotICAgICAgICBtX2Ry
YXdpbmdNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljczo6RHJhd2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsKKyAgICAgICAgbV9k
cmF3aW5nTW9uaXRvciA9IG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OkRyYXdpbmdNb25pdG9yPihtX3dlYlBhZ2VQcm94eSk7CiAgICAgbV9kcmF3aW5nTW9u
aXRvci0+c3RhcnQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAppbmRleCBh
MmQwMzg2YWNmNWQ4YWQ1MzVjNzkxMmE4ODZjYmQwZjAwNTQ3ODY4Li42YWEyNDdiZDg3NzAyMTU4
ODI0NzE2YTY2NWVlMWI3ODY5NmE2YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjpIYXNoU2FsdEZvck9yaWdpbj4g
RGV2aWNlSWRIYXNoU2FsdFN0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgYXV0byBoYXNoU2FsdEZvck9yaWdpbiA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNhbHRGb3JP
cmlnaW4+KFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKHBhcmVu
dFNlY3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7
CisgICAgYXV0byBoYXNoU2FsdEZvck9yaWdpbiA9IG1ha2VVbmlxdWU8SGFzaFNhbHRGb3JPcmln
aW4+KFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKHBhcmVudFNl
Y3VyaXR5T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CiAK
ICAgICBoYXNoU2FsdEZvck9yaWdpbi0+bGFzdFRpbWVVc2VkID0gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKGxhc3RUaW1lVXNlZCk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIERldmljZUlk
SGFzaFNhbHRTdG9yYWdlOjpjb21wbGV0ZURldmljZUlkSGFzaFNhbHRGb3JPcmlnaW5DYWxsKFNl
Y3VyaXR5T3JpZwogCiAgICAgICAgIFN0cmluZyBkZXZpY2VJZEhhc2hTYWx0ID0gYnVpbGRlci50
b1N0cmluZygpOwogCi0gICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JPcmlnaW4gPSBzdGQ6Om1h
a2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3JpZ2luKSwgV1RG
TW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKKyAgICAgICAg
YXV0byBuZXdIYXNoU2FsdEZvck9yaWdpbiA9IG1ha2VVbmlxdWU8SGFzaFNhbHRGb3JPcmlnaW4+
KFdURk1vdmUoZG9jdW1lbnRPcmlnaW4pLCBXVEZNb3ZlKHBhcmVudE9yaWdpbiksIFdURk1vdmUo
ZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgICAgIHJldHVybiBuZXdIYXNoU2FsdEZvck9yaWdp
bjsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKaW5kZXggNjNhNDliNTY3ZGI4
ZGE1M2Y1Nzk5YTUwMzQ0ZjMxMjUxZjVlOTY4NC4uZGM1YWRmMWEzZTRiOTRhYTAxNGI0MzBlZmE2
NmRlMDlmOTVjYTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcApAQCAtODgsMTEgKzg4LDExIEBAIERvd25sb2Fk
UHJveHkmIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sCiAKICAgICBpZiAobV9kb3dubG9hZHMuc2l6ZSgpID09IDEgJiYgbV9z
aG91bGRUYWtlQXNzZXJ0aW9uKSB7CiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9hZFVJQXNzZXJ0
aW9uKTsKLSAgICAgICAgbV9kb3dubG9hZFVJQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgZG93bmxvYWRz
Il9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAgIG1fZG93
bmxvYWRVSUFzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVu
dFByb2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91
bmRlZE5ldHdvcmtpbmcpOwogCiAgICAgICAgIEFTU0VSVCghbV9kb3dubG9hZE5ldHdvcmtpbmdB
c3NlcnRpb24pOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3MpOwotICAgICAgICBt
X2Rvd25sb2FkTmV0d29ya2luZ0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fz
c2VydGlvbj4obV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IGRvd25sb2Fk
cyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rv
d25sb2FkTmV0d29ya2luZ0Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4o
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogCiAgICAgICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIHRvb2sgJ1dlYktpdCBkb3dubG9hZHMnIGFz
c2VydGlvbnMgZm9yIFVJUHJvY2VzcyBhbmQgTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggM2RlZjVkNzlmMDdj
YjkxNDBiODI1NjJkYjlmNmYyYmM2ZDBmNzJmNi4uNTYwNmM1MTE2NTM0ZjQzY2ZjODA2ZDUxMWQ0
MWVkOThjZmIyNTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9j
ZXNzUHJveHk7CiAKIGNsYXNzIERyYXdpbmdBcmVhUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHByb3RlY3RlZCBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYXdpbmdBcmVhUHJveHkp
OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L1VJR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQv
VUlHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IGVjYWFjMzAxYjRiZGY0NmYyYzg5Y2RkZTcxZDE5
MzI1NDUxNGY2NDAuLmY0YjdiZWE2NTg1MDk5MWU5NDk0YTYyMjNkNTRiOTgyYWVjZmQxMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJv
dmlkZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6OnNldElu
aXRpYWxDb25uZWN0ZWRHYW1lcGFkcyhjb25zdCBWZWN0b3I8UGxhdGZvcm1HYW1lcGFkCiAgICAg
Zm9yIChhdXRvKiBnYW1lcGFkIDogaW5pdGlhbEdhbWVwYWRzKSB7CiAgICAgICAgIGlmICghZ2Ft
ZXBhZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2dhbWVwYWRzW2dhbWVwYWQt
PmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KCpnYW1lcGFkKTsKKyAgICAg
ICAgbV9nYW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IG1ha2VVbmlxdWU8VUlHYW1lcGFkPigq
Z2FtZXBhZCk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBwb29sIDogbV9wcm9jZXNzUG9vbHNV
c2luZ0dhbWVwYWRzKQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgVUlHYW1lcGFkUHJvdmlkZXI6
OnBsYXRmb3JtR2FtZXBhZENvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmIGdhbWVwYWQpCiAgICAg
ICAgIG1fZ2FtZXBhZHMuZ3JvdyhnYW1lcGFkLmluZGV4KCkgKyAxKTsKIAogICAgIEFTU0VSVCgh
bV9nYW1lcGFkc1tnYW1lcGFkLmluZGV4KCldKTsKLSAgICBtX2dhbWVwYWRzW2dhbWVwYWQuaW5k
ZXgoKV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFVJR2FtZXBhZD4oZ2FtZXBhZCk7CisgICAgbV9nYW1l
cGFkc1tnYW1lcGFkLmluZGV4KCldID0gbWFrZVVuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVwYWQpOwog
CiAgICAgc2NoZWR1bGVHYW1lcGFkU3RhdGVTeW5jKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxl
ci5oCmluZGV4IDdkNTZiMGEyNDYzZGVkZjE2Njk1OGMyOGZmYjc1YWEwZTJjZTUxZjEuLmU2YmMw
YTQ1MDU2NWVlMmVmYTFiZDA1YTJhNzU2MTExYTE1ZDk4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNh
bXBsZXIuaApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBy
b2Nlc3NQb29sOwogCiBjbGFzcyBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSGln
aFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIoV2ViUHJvY2Vzc1Bvb2wmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKaW5kZXggOTFlY2UxZjBkYWZmZTNlYTYzYWRiYzBkOTFlYWM0ZDE4MTExMzA5YS4u
YmQ2OTcyM2EwZTEzMjczYjFjNWU3NjIyYWE2MzJmOWZlYWFkZmNlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW50aGVzaXpl
QXBwSXNCYWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCkKIERvd25sb2FkUHJveHkmIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX2Rvd25sb2FkUHJveHlNYXApCi0gICAgICAg
IG1fZG93bmxvYWRQcm94eU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRQcm94eU1hcD4o
KnRoaXMpOworICAgICAgICBtX2Rvd25sb2FkUHJveHlNYXAgPSBtYWtlVW5pcXVlPERvd25sb2Fk
UHJveHlNYXA+KCp0aGlzKTsKIAogICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0
ZURvd25sb2FkUHJveHkobV9wcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0KTsKIH0KQEAgLTEy
MTEsNyArMTIxMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VT
cGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnRha2VVcGxvYWRBc3NlcnRpb24oKQogewogICAgIEFTU0VSVCghbV91cGxvYWRB
c3NlcnRpb24pOwotICAgIG1fdXBsb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihwcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFz
c2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICBtX3VwbG9hZEFzc2VydGlv
biA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzc0lkZW50aWZpZXIoKSwgIldl
YktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJVcGxvYWRBc3NlcnRpb24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAppbmRleCA0MGY4MWRlOWI0N2YxOTIyMTkwMjZhNmU4YTA3YjJhNWUyZDZhOTkwLi45MTk0
YWU2NjI4MWE1ODVlMWM4MmViMGNkYTRiODE0ZjkwM2QxMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNzAs
NiArNzAsNyBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIHN0cnVjdCBX
ZWJzaXRlRGF0YTsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NQcm94eSBmaW5hbCA6IHB1YmxpYyBB
dXhpbGlhcnlQcm9jZXNzUHJveHksIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIFRvcEZyYW1lRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggMmFhZmYxZWMyYTY1NDkwZDg4NTQzOTk2YmY4MTAyYzJkNDljNTA0Mi4u
NDdhM2U5YjIzYmExMjY1MTk4YjYwZWRkZjZjNGRkOTg2ZmNkMjAyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNTYsMTQgKzU2LDE0IEBAIFJlZjxXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y3Jl
YXRlKFdlYlByb2Nlc3NQCiAKIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdl
YkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92aWRlcihzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCisgICAgLCBtX3Byb3ZpZGVy
KG1ha2VVbmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKSkKIHsKIH0KIAogdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxB
UEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVyKQogewogICAgIGlmICghcHJvdmlk
ZXIpIHsKLSAgICAgICAgbV9wcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpOb3RpZmlj
YXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbV9wcm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpO
b3RpZmljYXRpb25Qcm92aWRlcj4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGVjNjRiYzllMTYyY2I3Y2ExZTc1MzdlOTMz
MWQ0ZjEzOTU4N2VjNDEuLjZjZjVlMTRlYTU2OWYyM2RhODQ3NTQwOTZjYTUxMTQ1M2MyOThiOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTE2OCw2ICsxNjgsNyBAQCB1
c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKICNlbmRpZgogCiBjbGFzcyBQ
YWdlQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBhZ2VDbGllbnQ+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlQ2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BlckFjdGl2aXR5
U3RhdGVDUFVVc2FnZVNhbXBsZXIuaAppbmRleCAwMWE3ZGE3Yjg5MWE5MDA2NmM5MGU4NDI5YzY1
NmJkNzAwYjE2NmJkLi5lYTQzOTI3ZDQ4ZDc1MmJlYjY3MjgwOTQ5OWM5YWQwYmZlMDdiYzVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNh
Z2VTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGVyQWN0aXZpdHlTdGF0
ZUNQVVVzYWdlU2FtcGxlci5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCiBjbGFzcyBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VT
YW1wbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CiAg
ICAgflBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcAppbmRleCBmNmY0NzliMWUwMzkyZjMyMjE2MGE2NDk0YWVjNjJlMGEwNjc5NmRk
Li44NDM2OWQzMzQ0MDdjZmJjMmU4M2FhODI3YzVjYzBlNWRiOTEyMmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5p
eC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblBy
b2Nlc3NQcm94eVVuaXguY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlv
blBhCiAjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIGJvb2wgcGx1Z2luUmVxdWlyZXNHdGsyKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlPiBt
b2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0aCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KHBsdWdpblBhdGgp
OwogICAgIGlmICghbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXR1cm4gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8Z3BvaW50ZXI+KCJndGtfb2JqZWN0X2dldF90
eXBlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCmlu
ZGV4IDAwYTk5MTg4NjE0ODczOTM4YTZjYjRhYmQ5OTE0YmM4NjI5NDVjZjcuLjRjZTI2MmU5ZGNi
YjRiMWIwZmYwYWQ1ZGI5N2ViOTdmMzYwNzM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgdm9pZCBQcm9jZXNz
VGhyb3R0bGVyOjpkaWRDb25uZWN0VG9Qcm9jZXNzKFByb2Nlc3NJRCBwaWQpCiAKICAgICBtX3N1
c3BlbmRUaW1lci5zdG9wKCk7CiAgICAgaWYgKG1fc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2Vy
dGlvbikKLSAgICAgICAgbV9hc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBbmRV
SUFzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3Rh
dGUoKSk7CisgICAgICAgIG1fYXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQW5kVUlBc3Nl
cnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0YXRlKCkp
OwogICAgIGVsc2UKLSAgICAgICAgbV9hc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlvblN0
YXRlKCkpOworICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlv
bj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CiAg
ICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKGFzc2VydGlvblN0YXRlKCkpOwogICAg
IG1fYXNzZXJ0aW9uLT5zZXRDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA2MGYwMmM2MTBmY2Q5ODgzMDYzOWM1
N2IzZTlkNjFmZjFmZDUyNWZkLi4yNzRhYmQzMDI5YzAwNzczMzlkZmUzNzQ4ZmYzMDY5N2M5YjQ4
YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5t
bQpAQCAtMTA3LDcgKzEwNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAg
ICAgOiBEcmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSwgd2Vi
UGFnZVByb3h5LCBwcm9jZXNzKQotICAgICwgbV9yZW1vdGVMYXllclRyZWVIb3N0KHN0ZDo6bWFr
ZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpKQorICAgICwgbV9yZW1vdGVMYXll
clRyZWVIb3N0KG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpKQogewogI2lm
IEhBVkUoSU9TVVJGQUNFKQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcG9vbCBzdXJmYWNlcyBp
biB0aGUgVUkgcHJvY2Vzcy4KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OnVwZGF0ZURlYnVnSW5kaWNhdG9yKEludFNpemUgY29udGVudHNT
aXplLAogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmluaXRpYWxpemVE
ZWJ1Z0luZGljYXRvcigpCiB7Ci0gICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJlZUhvc3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKKyAgICBtX2RlYnVn
SW5kaWNhdG9yTGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4o
KnRoaXMpOwogICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0LT5zZXRJc0RlYnVnTGF5
ZXJUcmVlSG9zdCh0cnVlKTsKIAogICAgIG1fdGlsZU1hcEhvc3RMYXllciA9IGFkb3B0TlMoW1tD
QUxheWVyIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCmluZGV4IDMw
MDI1ZDQyOTlmM2JjYTA0ODVkMzA0ZDgzMzU4MTc2MTBiYTUwYmQuLjhhNGU1MDQ4MTdlYmMxMjVj
ZTg5OGMxYzI5MWQ5YTZlNGQ1ZjU4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBA
IC0yNTIsNyArMjUyLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllcihj
b25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmUKIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZShjb25z
dCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXMmIHBy
b3BlcnRpZXMpCiB7CiAgICAgYXV0byBtYWtlV2l0aExheWVyID0gWyZdIChSZXRhaW5QdHI8Q0FM
YXllcj4gbGF5ZXIpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5
ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRpZXMubGF5ZXJJ
RCwgV1RGTW92ZShsYXllcikpOwogICAgIH07CiAgICAgYXV0byBtYWtlQWRvcHRpbmdMYXllciA9
IFsmXSAoQ0FMYXllciogbGF5ZXIpIHsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoTGF5ZXIoYWRv
cHROUyhsYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQppbmRleCBlODhiYmM2MDhk
NGZiMDU4Mzg0ZDI5YjI2OTgxNTkyZWRhODE0ZWJhLi40ZmQ0ZWEyNjllOGNjMWJkZmZiMmViMjU5
N2Q0Zjc1MGQ4NDI0MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQpAQCAtNzMsNyAr
NzMsNyBAQCBSZW1vdGVMYXllclRyZWVOb2RlOjp+UmVtb3RlTGF5ZXJUcmVlTm9kZSgpCiBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVlTm9kZTo6Y3Jl
YXRlV2l0aFBsYWluTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
IGxheWVySUQpCiB7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyID0gYWRvcHROUyhbW1dL
UGxhaW5SZW1vdGVMYXllciBhbGxvY10gaW5pdF0pOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihsYXllcklELCBXVEZNb3ZlKGxh
eWVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlTm9kZTo6ZGV0YWNoRnJvbVBhcmVudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLmgKaW5kZXggYzI3ODFkYzhhZGEzNDMzOWY3OWVkODVhN2UzZTlmZjc2NTIyMjUyOC4u
MjlkZmVmZTZjYjcyYzEyMGE2MWNjMjJkMGQzYmE2NGE2ZDk0NDI2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9s
bGluZ1BlcmZvcm1hbmNlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaApAQCAt
MzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHk7CiAKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkmKTsKICAgICB+UmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VE
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApp
bmRleCA4NmQwZGVmYzY5NjVlNGZhNmJhMTE2NDc2MWJjOWFjNzE5OGM3MmU2Li4xYTc2OTQzZjI0
NWJlMWNkODIyZjE5NjEzY2RkMzVmNTQwYTk0Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUmVtb3Rl
U2Nyb2xsaW5nVHJlZTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSk7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eShXZWJQ
YWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRl
eCA2MjlhOWM2NTBkNDNjMGQ1NjFjODE5MzNiYTBkMTRlOGQzM2VhNDQ0Li4wYzEyNmFlNmFmNzVl
NDEzOGFmZDAwODY4Mzk1NjYyOWZmNzAwMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXll
clRyZWVIb3N0SU9TLm1tCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlWaWV3
PiBjcmVhdGVSZW1vdGVWaWV3KHBpZF90IHBpZCwgdWludDMyX3QgY29udGV4dElEKQogc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VO
b2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVy
dGllcyYgcHJvcGVydGllcykKIHsKICAgICBhdXRvIG1ha2VXaXRoVmlldyA9IFsmXSAoUmV0YWlu
UHRyPFVJVmlldz4gdmlldykgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUodmlldykpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxh
eWVySUQsIFdURk1vdmUodmlldykpOwogICAgIH07CiAgICAgYXV0byBtYWtlQWRvcHRpbmdWaWV3
ID0gWyZdIChVSVZpZXcqIHZpZXcpIHsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9w
dE5TKHZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQppbmRleCA4MWEyZWI5YTYzNWQ1OTg0MTYw
MGY3ODM1MjA0YWM4NGJkNmQ1YzI4Li5iODkwNjgxZTllN2E1MTNiYTM0MzY3Y2VmMzk4OWJlM2Ix
OWQ5Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVD
aGlsZHJlbihjb25zdCBTCiAKICAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkgewogICAg
ICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkKLSAgICAgICAgICAgIG1fc2Nyb2xsaW5n
Tm9kZURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TPigqdGhpcyk7CisgICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0
ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRo
aXMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9
IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCmluZGV4IGI1NmUyZWE2NGRhNTIwMzFkZmFm
MTI4ZWMyNDhjZDE1YzcxMDA5MjYuLmQwYmRkM2M1N2RiYmNiZWYwNzBlODUxYWZlMDRlZWU2YWFi
NTdkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTQzLDcgKzQzLDcgQEAgUmVmPFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M+IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MKIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlJiBz
Y3JvbGxpbmdUcmVlLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCi0g
ICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsaW5nTm9k
ZURlbGVnYXRlKG1ha2VVbmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCmluZGV4IDY0ODlhOGU3NDQyZDdiMTcwNTI5
NWI2MmVlYjVjMDI1YzdhOWIzM2EuLmU2MzdkNjE1MzI1ZDM4MGNlOTJkMDdhMmIxMjE5MTNmZjE4
MWRkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUy5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MgOiBwdWJsaWMgV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
UyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYpOwogICAgIH5TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNw
cAppbmRleCAzMmExZTMzYWE4NTY3YzBiNjE2MmUwNjc4M2NmMzc2Y2Y2MTkwN2UyLi4yMzNmZmQw
MjFlNjM4YmYxODhmOGRjYWJkNzc5Yzc0NTI5NDM3Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVNYWMoU2Nyb2xsaW5nVHJlZSYgdHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUg
bm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5vZGVUeXBlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9s
bGVyUGFpcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQorICAgICwg
bV9zY3JvbGxlclBhaXIobWFrZVVuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21h
Yy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggZDg5NjBjZWMzMGU0MzMxOWFhMDI3
ZDlhMjFmY2VmYzgzNzYzNTA0My4uYjZjYTNjYmJhODA4MDdhZjdiOWY2OTliZTliMWIyYWE5Y2Rj
MWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJl
ZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjPiBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMo
U2Nyb2xsaW5nVHJlZSYgdHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWModHJlZSwgbm9kZUlEKQotICAgICwgbV9z
Y3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKKyAg
ICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3Q29udHJv
bGxlci5oCmluZGV4IGYyNjFmNTI2ODE1MmQwZmRkYjY4NTUxYTg2MDE1MmU0MTY3ZDBhZWMuLjJi
OTBlMWI4OWMwYWE1ZWVlYWYwNTRkZTQyOGRlZWQ0MGU2M2E4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaApAQCAtNDMsNiArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgU3lz
dGVtUHJldmlld0NvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIGV4cGxpY2l0IFN5c3RlbVByZXZpZXdDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCBiYmJhNDRhYzgyYmQyODA3
NWJkZGZiYjQ1NDQ0Y2E1NjlhY2NmYjk3Li45N2FhMTZiOTJjZGRkNTE0MTQ0NGYwYTViZWI1OGFl
NjhjZTM2YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTQ4LDYgKzQ4
LDcgQEAgY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkKICAgICAs
IHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5kaWYKIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eShXZWJQYWdlUHJveHkmKTsKICAgICB+VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCmluZGV4IDllYWUxOGVk
ZDVmNGQyZGM1ZGYzOGU5NmQwNTA1MDkzYmNhOWIzOTguLmFiZDBlN2U3Mjk0NzkxMjhjYjZhZmZm
N2YyMTgxMjYzZTRkYTk4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQpAQCAtOTIsNyAr
OTIsNyBAQCBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29u
bmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNl
QWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOwor
ICAgIGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25u
ZWN0aW9uKGRldmljZSkpOwogICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUg
ZGV2aWNlLgogICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVx
dWVzdChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhf
dD4mJiByZXNwb25zZSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKaW5kZXgg
ODVjZTY5MDYxMTE0NDJiYzY3OWNjN2E3NzViODY4MmRkMTU3MjhjOS4uZjg1MmJlZDIxMzBiNDdj
MmY3ZGQyOThhZDM1NmFlYWM4N2MwMjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JQcm94eShXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA5
OWQ2ZWEzMzQxNTNlY2Y0OWQ0NTg0Yzc0M2RjNjgxNjg4NDE1NTIwLi44NDZhNWFhMjdkZmFiM2Qy
NzRjZmZhNDg3Mzg2MWYyNTg3ZDE3ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC00Niw3ICs0Niw3IEBA
IFJlZjxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vCiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAg
ICAgOiBXZWJDb250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkpCisgICAgLCBtX3By
b3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewogICAgIFdl
YkNvbnRleHRTdXBwbGVtZW50Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
ICp0aGlzKTsKIH0KQEAgLTU0LDcgKzU0LDcgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6
OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG8KIHZv
aWQgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0
cjxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7CiAgICAgaWYgKCFwcm92
aWRlcikKLSAgICAgICAgbV9wcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9sb2Nh
dGlvblByb3ZpZGVyPigpOworICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdl
b2xvY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgZWxzZQogICAgICAgICBtX3Byb3ZpZGVyID0gV1RG
TW92ZShwcm92aWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcAppbmRleCAyY2RjZDE3NjUyOTlmZTc3NjQ5
YmFiZjlkZTNlNzRlOGIwZjAwZTM3Li4zMzY0YmNiY2M5MTE4NGE2YmE3NTQxZWY5MGIwZjk2MDRj
ZGU0ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Np
b25Gb2N1c01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFdlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlcjo6dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlhU3Rh
dGUoV2ViUGFnZQogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNl
ZE1lZGlhRWxlbWVudChXZWJQYWdlUHJveHkmIHByb3h5LCB1aW50NjRfdCBlbGVtZW50SUQpCiB7
Ci0gICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGb2N1c2VkTWVk
aWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CisgICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50
ID0gbWFrZVVuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CiB9
CiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpjbGVhckZvY3VzZWRNZWRpYUVs
ZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlv
blN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaApp
bmRleCA5ZWI5ZDI4YWRkZDViNWIwMDZkNTBiMDhhM2Q3NGZiNjlkMTYyMzkyLi4xNmE3NTlhYzhh
MWZmMzE0NjA1YjA5NDZmZmM1YWE2NTgxOGUwNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJOYXZpZ2F0aW9uU3RhdGUuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJQYWdl
UHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogCiBjbGFzcyBXZWJOYXZpZ2F0
aW9uU3RhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4
cGxpY2l0IFdlYk5hdmlnYXRpb25TdGF0ZSgpOwogICAgIH5XZWJOYXZpZ2F0aW9uU3RhdGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxl
Q2xpZW50LmgKaW5kZXggNjUyOTgyYTgxMmE5ZWZiZWY1MjFhNmE5ODk5ZmE0YmVlNWZhZjM0Yy4u
MWIyOWY3OWRkZmFlYTA3YjllNzI0OWJkNzcyMzg0ZWViZjUzMGZkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmgKQEAg
LTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAK
IGNsYXNzIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxX
S1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0Kik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8QVBJOjpPYmplY3Q+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYzRiOTJjODNjZmVh
MjliMzFlZGJiMzRhYTg0MDI1YmE1YzhiMDNiNy4uYmRhNTljZDgwNTE1NzY0NmIzMDhkMmZkMjM2
ZjNkMTE4MjcxZTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIoV2ViUGFnZVByb3h5
JiBwYWdlKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkp
CiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9m
cm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogewotICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRl
ci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgYXV0byB0YXJnZXRBZ2Vu
dCA9IG1ha2VVbmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91
dGVyLmdldCgpLCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAgIG1fdGFyZ2V0QWdl
bnQgPSB0YXJnZXRBZ2VudC5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggNDg1YjMxZDRhZWZmMmEyMDRhZTBjYTY2YWVmMjdkMzcyODUzN2Q3ZS4u
ZDg2MWRlOGQxMTM3NTg4MGMzNTM2YjY1Mzc3NGFhMGMwMzE5MGJlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zOTcsMTUgKzM5NywxNSBAQCBXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJh
dGlvbikpCiAgICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmln
YXRpb25DbGllbnQ+KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6
Okhpc3RvcnlDbGllbnQ+KCkpCi0gICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQotICAgICwgbV9maW5kQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQotICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCisgICAgLCBtX2ljb25M
b2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKKyAgICAs
IG1fZm9ybUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fdWlD
bGllbnQobWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQorICAgICwgbV9maW5kQ2xpZW50KG1h
a2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpKQorICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudCht
YWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpD
b250ZXh0TWVudUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1
ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlmCi0gICAgLCBtX25hdmlnYXRpb25T
dGF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKKyAgICAsIG1fbmF2
aWdhdGlvblN0YXRlKG1ha2VVbmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigpKQogICAgICwgbV9w
cm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdl
R3JvdXAoKSkKICAgICAsIG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5j
ZXMoKSkKQEAgLTQxNiw3ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwg
bV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IG1fY29uZmlndXJhdGlvbi0+b3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSB9CiAgICAgLCBtX3RyZWF0c1NIQTFDZXJ0aWZpY2F0
ZXNBc0luc2VjdXJlKG1fY29uZmlndXJhdGlvbi0+dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRl
c0FzSW5zZWN1cmUoKSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxz
Y3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCisg
ICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+
KCkpCiAjZW5kaWYKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIo
KnRoaXMpCiAgICAgLCBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhp
cykKQEAgLTQzNSw5ICs0MzUsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAg
ICAgLCBtX3BhZ2VMb2FkU3RhdGUoKnRoaXMpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJl
bmNlVmFsdWVzKG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQotICAgICwgbV9p
bnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJQ
YWdlRGVidWdnYWJsZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VV
bmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZXNldFJl
Y2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6
OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKIHsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBXZWJQYWdlUHJv
eHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIFBhZwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2
ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9v
cE9yZGVyczo6QWN0aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CisgICAgbV9hY3Rpdml0eVN0
YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNf
Y2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFj
dGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10gewogICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2
aXR5U3RhdGVDaGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgpAQCAtNjAxLDcgKzYwMSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRQb2xpY3lDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9s
aWN5Q2xpZW50PiYmIHBvbGljeUNsCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYg
KCFmb3JtQ2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpGb3JtQ2xpZW50PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6Rm9ybUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjExLDcgKzYx
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNs
aWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBp
ZiAoIXVpQ2xpZW50KSB7Ci0gICAgICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6VUlDbGllbnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlD
bGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SWNvbkxvYWRpbmdDbGllbnQ+JgogewogICAgIGJvb2wgaGFzQ2xpZW50ID0gaWNvbkxvYWRp
bmdDbGllbnQuZ2V0KCk7CiAgICAgaWYgKCFpY29uTG9hZGluZ0NsaWVudCkKLSAgICAgICAgbV9p
Y29uTG9hZGluZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVu
dD4oKTsKKyAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29u
TG9hZGluZ0NsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQg
PSBXVEZNb3ZlKGljb25Mb2FkaW5nQ2xpZW50KTsKIApAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBh
Z2VMb2FkU3RhdGU6Ok9ic2VyCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB7CiAgICAgaWYgKCFm
aW5kQ2xpZW50KSB7Ci0gICAgICAgIG1fZmluZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpGaW5kQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
RmluZENsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTY2MCw3ICs2
NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rmlu
ZE1hdGNoZXNDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+JiYg
ZmluZE1hdGNoZXNDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kTWF0Y2hlc0NsaWVudCkgewotICAg
ICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRj
aGVzQ2xpZW50PigpOworICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02
NzYsNyArNjc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRpYWdub3N0aWNMb2cKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNs
aWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50
KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
Q29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQoY29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgIG1faW5qZWN0ZWRCdW5k
bGVDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKICAg
ICBtX2luamVjdGVkQnVuZGxlQ2xpZW50LT5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKQEAgLTc3
Niw3ICs3NzYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3Nz
aWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIH0KIAogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQ
b3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5
UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKKyAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5p
cXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWlu
RnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKTsKIAogICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJh
Y2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3BlbmRl
ZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBm
cm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOwogCkBAIC04NDks
NyArODQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3Mo
KQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIEFTU0VSVCghbV9mdWxsU2NyZWVu
TWFuYWdlcik7Ci0gICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGllbnQoKS5mdWxsU2NyZWVuTWFu
YWdlclByb3h5Q2xpZW50KCkpOworICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBtYWtlVW5pcXVl
PFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50KCkuZnVsbFNjcmVl
bk1hbmFnZXJQcm94eUNsaWVudCgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmIEhBVkUoQVZLSVQpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCiAgICAgQVNTRVJUKCFtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOwpAQCAt
ODYwLDIyICs4NjAsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1By
b2Nlc3MoKQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBBU1NFUlQoIW1fcGF5bWVudENv
b3JkaW5hdG9yKTsKLSAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX3BheW1lbnRDb29yZGlu
YXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNl
bmRpZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIEFTU0VSVCghbV9zeXN0ZW1QcmV2
aWV3Q29udHJvbGxlcik7Ci0gICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICBtX3N5c3RlbVBy
ZXZpZXdDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRo
aXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIEFTU0VSVCghbV9jcmVk
ZW50aWFsc01lc3Nlbmdlcik7Ci0gICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBt
X2NyZWRlbnRpYWxzTWVzc2VuZ2VyID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3JQcm94eT4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICBB
U1NFUlQoIW1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOwotICAgIG1fZWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhp
cyk7CisgICAgbV9lZGl0YWJsZUltYWdlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogfQogCkBAIC05NDMsNyArOTQzLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldERyYXdpbmdBcmVhKHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5n
QXJlYVByb3h5PiYmIGRyYXdpbmdBcmUKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYm
IFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2lu
Z0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlKSB7Ci0gICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eT4oKnRoaXMpOworICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBtYWtlVW5p
cXVlPFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgICAgICAvLyBPbiBpT1MsIG1haW4gZnJhbWUgc2Nyb2xscyBhcmUg
c2VudCBpbiB0ZXJtcyBvZiB2aXNpYmxlIHJlY3QgdXBkYXRlcy4KICAgICAgICAgbV9zY3JvbGxp
bmdDb29yZGluYXRvclByb3h5LT5zZXRQcm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xscyhmYWxzZSk7
CkBAIC0xMDA2LDE3ICsxMDA2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAg
bV9sb2FkZXJDbGllbnQgPSBudWxscHRyOwogICAgIG1fbmF2aWdhdGlvbkNsaWVudCA9IG1ha2VV
bmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50ID0g
bnVsbHB0cjsKLSAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
Okljb25Mb2FkaW5nQ2xpZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpGb3JtQ2xpZW50PigpOwotICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6VUlDbGllbnQ+KCk7Ci0gICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkZpbmRDbGllbnQ+KCk7Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICBtX2ljb25Mb2FkaW5nQ2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVu
dCA9IG1ha2VVbmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBtYWtl
VW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CisgICAgbV9maW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkZpbmRDbGllbnQ+KCk7CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IG1ha2VVbmlxdWU8
QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICBtX2RpYWdub3N0aWNMb2dnaW5nQ2xpZW50
ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRNZW51
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAg
IG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+
KCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgbV9mdWxsc2NyZWVu
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CisgICAg
bV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7
CiAjZW5kaWYKIAogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5k
ZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwpAQCAtMTIxNiw3ICsxMjE2LDcgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGMKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5j
aFByb2Nlc3MoeyB9KTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRl
LT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24oc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlN1YnN0aXR1
dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJE
YXRhKSk7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxv
YWREYXRhTmF2aWdhdGlvbihtYWtlVW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVj
dG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKICAgICBsb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24s
IGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSk7CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CkBAIC0yNDA1LDcgKzI0MDUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVl
bEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29hbGVz
Y2VkV2hlZWxFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZl
bnQ+PigpOworICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IG1ha2VVbmlxdWU8VmVjdG9y
PE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOwogICAgIGNvYWxlc2NlZFdoZWVsRXZlbnQtPmFwcGVu
ZChldmVudCk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RG
TW92ZShjb2FsZXNjZWRXaGVlbEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQoZXZlbnQpOwpA
QCAtMjQxMyw3ICsyNDEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpw
cm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQoKQogewotICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7Cisg
ICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJX
aGVlbEV2ZW50Pj4oKTsKICAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50ID0gY29hbGVz
Y2VkV2hlZWxFdmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRFdmVudC5nZXQo
KSk7CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShu
ZXh0Q29hbGVzY2VkRXZlbnQpKTsKICAgICBzZW5kV2hlZWxFdmVudChuZXh0V2hlZWxFdmVudCk7
CkBAIC0yOTc0LDcgKzI5NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0
aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAgICBt
X3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9wcm92aXNpb25hbFBh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJv
Y2Vzcy5jb3B5UmVmKCksIFdURk1vdmUoc3VzcGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5u
YXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2
aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsK
KyAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+
KCp0aGlzLCBuZXdQcm9jZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJveHkp
LCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNS
ZWRpcmVjdCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQpOwogCiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLnRhcmdldEl0
ZW0oKSkgewogICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5h
dmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVy
bCgpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTY5NCw3ICs1Njk0LDcgQEAgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eSogV2ViUGFnZVByb3h5OjpmdWxsU2NyZWVuTWFuYWdlcigpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGdWxsc2Ny
ZWVuQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkgewotICAgICAgICBtX2Z1
bGxzY3JlZW5DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4o
KTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3Jl
ZW5DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0MjgsNyArNzQyOCw3
IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJveHk6
OnVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgaWYgKG1fdXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKQogICAgICAgICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOwogCi0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
PigqdGhpcyk7CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBtYWtl
VW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIH0KIApAQCAt
ODEzNCw3ICs4MTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNl
RGF0YUNvbGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3Njcm9sbFBlcmZvcm1h
bmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkID0gZW5hYmxlZDsKIAogICAgIGlmIChtX3Njcm9sbFBl
cmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFibGVkICYmICFtX3Njcm9sbGluZ1BlcmZvcm1hbmNl
RGF0YSkKLSAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKKyAgICAgICAg
bV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZVNj
cm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKICAgICBlbHNlIGlmICghbV9zY3JvbGxQZXJmb3Jt
YW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCkKICAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEgPSBudWxscHRyOwogfQpAQCAtOTE4MSw3ICs5MTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlc2V0U3BlZWNoU3ludGhlc2l6ZXIoKQogV2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVz
aXNEYXRhJiBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc0RhdGEoKQogewogICAgIGlmICgh
bV9zcGVlY2hTeW50aGVzaXNEYXRhKQotICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBT
cGVlY2hTeW50aGVzaXNEYXRhIHsgc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciB9OworICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRh
IHsgbWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHJldHVybiAqbV9zcGVl
Y2hTeW50aGVzaXNEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDIwNzY5NTkxYWMxZTMyMmY1MWNkY2Y1MjBlNWFjZWViMmUzZjljYTkuLmU2NTUwZjJm
OWRiYmRiYTcyYjM3ZjY0OWM4OWJhZDkwM2Q1OTI1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0zNDcsOCArMzQ3LDcgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3Q+IFRvdWNoZXND
YWwKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rp
b25SZWN0PiY+IFNlbGVjdGlvblJlY3RzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFj
azxjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJj4gRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbkNhbGxiYWNrOwogc3RydWN0IEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24gaW5mb3JtYXRpb247CiAg
ICAgYm9vbCB1c2VySXNJbnRlcmFjdGluZzsKICAgICBib29sIGJsdXJQcmV2aW91c05vZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA4YmRmOGNm
ODM4OGNkYzdiZmFjZmYyYjdlNjA1ZDBhODE4ZGFhYzY0Li45NjJmM2JlZDJkODI1NjlhMDdkZDRl
OWNkYWI4ZmNjNzIxMTlmN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NDYWNoZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmFkZFBy
b2Nlc3NJZlBvc3NpYmxlKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSBnZW5lcmF0
ZUFkZFJlcXVlc3RJZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJl
cXVlc3RJZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3Mu
Y29weVJlZigpKSk7CisgICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlm
aWVyLCBtYWtlVW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CiAKICAg
ICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3NDYWNoZTo6YWRk
UHJvY2Vzc0lmUG9zc2libGUoKTogQ2hlY2tpbmcgaWYgcHJvY2VzcyAlaSBpcyByZXNwb25zaXZl
IGJlZm9yZSBjYWNoaW5nIGl0Li4uIiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7CiAgICAgcHJvY2Vzcy0+aXNSZXNwb25zaXZlKFt0aGlzLCBwcm9jZXNzUG9vbCA9IG1ha2VS
ZWYocHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKSksIHJlcXVlc3RJZGVudGlmaWVyXShib29sIGlzUmVz
cG9uc2l2ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGI5NzY3OTEwNTRiODI5NGQ5Zjc5ZTlmMGFhNGI5NmFiYTExNDM3YWIuLjkyZDk3ZGUxMGFl
ODU1YjQyMzQyNjU2YWRkZTgwMDBiODc2ZjUwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIzMywxNSArMjMzLDE1IEBAIHN0YXRpYyBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2NoZW1lc1dpdGhD
dXN0b21Qcm90CiBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3VyYXRpb24oY29u
ZmlndXJhdGlvbi5jb3B5KCkpCiAgICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2ViUGFnZUdyb3Vw
OjpjcmVhdGUoKSkKLSAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQotICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQotICAgICwgbV9kb3du
bG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCi0gICAg
LCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0
b3J5Q2xpZW50PigpKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKKyAgICAsIG1f
aW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50
PigpKQorICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50PigpKQorICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RG93bmxv
YWRDbGllbnQ+KCkpCisgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkxlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQorICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQobWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkKICAg
ICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVy
KHN0ZDo6bWFrZV91bmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXI+KCp0
aGlzKSkKLSAgICAsIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1f
aGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxIaWdoUGVyZm9y
bWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlv
cml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSgpKQog
ICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKG1fY29uZmlndXJhdGlvbi0+
c2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbigpKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250ZXh0Q2xpZW50
QmFzZSogY2xpZW50KQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYgY2xpZW50KQog
ewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgICAgICBtX2lu
amVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50
PigpOwogICAgIGVsc2UKICAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IFdURk1vdmUo
Y2xpZW50KTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0
aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Qgog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4mJiBoaXN0b3J5Q2xpZW50KQogewogICAgIGlm
ICghaGlzdG9yeUNsaWVudCkKLSAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOworICAgICAgICBtX2hpc3Rv
cnlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCk7
CiAgICAgZWxzZQogICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhpc3RvcnlDbGll
bnQpOwogfQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3Rv
cnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpE
b3dubG9hZENsaWVudD4mJiBkb3dubG9hZENsaWVudCkKIHsKICAgICBpZiAoIWRvd25sb2FkQ2xp
ZW50KQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkRv
d25sb2FkQ2xpZW50PigpOworICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkRvd25sb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9kb3dubG9hZENsaWVu
dCA9IFdURk1vdmUoZG93bmxvYWRDbGllbnQpOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRv
d25sb2FkQ2xpZW50PiYmIGRvCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRvbWF0aW9uQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+JiYgYXV0b21hdGlvbkNs
aWVudCkKIHsKICAgICBpZiAoIWF1dG9tYXRpb25DbGllbnQpCi0gICAgICAgIG1fYXV0b21hdGlv
bkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpOworICAg
ICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVu
dD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdURk1vdmUoYXV0
b21hdGlvbkNsaWVudCk7CiB9CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkMKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogICAg
IGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQotICAgICAgICBtX2N1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ+KCk7CisgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQpOwogI2VuZGlmCkBAIC00OTIsNyArNDkyLDcgQEAgTmV0d29y
a1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNp
dGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9jZXNzOwogICAg
IH0KIAotICAgIGF1dG8gbmV0d29ya1Byb2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtQ
cm9jZXNzUHJveHk+KCp0aGlzKTsKKyAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0gbWFrZVVuaXF1
ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5PigqdGhpcyk7CiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCkBAIC0yNTI4LDcgKzI1MjgsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYQogICAgICAgICBtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJh
YmxlRG9tYWluLnJlbW92ZShtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJhYmxlRG9tYWlu
LnJhbmRvbSgpKTsKIAogICAgIGF1dG8mIHZhbHVlID0gbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJS
ZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24+KCk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgKnZhbHVlID0gcHJld2FybUluZm9ybWF0
aW9uOwpAQCAtMjU3NSwxMiArMjU3NSwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRXZWJQ
cm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnRha2VVcGxvYWRBc3NlcnRpb24oKTsKICAgICAgICAgCiAgICAgICAg
IEFTU0VSVCghbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24pOwotICAgICAgICBtX3VpUHJvY2Vz
c1VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpV
bmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldl
YktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAg
ICAgfQogICAgIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRoVXBsb2Fkcy5hZGQo
cHJvY2Vzc0lELCBudWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRp
b24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5l
dHdvcmtpbmcpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NIYXNV
cGxvYWRzKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKQEAgLTI2MTcsMTIgKzI2MTcsMTIg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRp
YShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJUaGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBwbGF5aW5nIGF1ZGlibGUgbWVkaWEg
aXMgbm93IG9uZS4gVGFraW5nIFVJIHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwogCiAgICAgICAgIEFT
U0VSVCghbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVBy
b2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNz
ZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3Ms
IEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJh
Y2spOworICAgICAgICBtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24gPSBtYWtlVW5p
cXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBNZWRp
YSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNv
bjo6TWVkaWFQbGF5YmFjayk7CiAgICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3Nl
c1BsYXlpbmdBdWRpYmxlTWVkaWEuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAgICAgQVNTRVJU
KHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZCwg
QXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdy
b3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDk1YjU4NjM5ZjNjNDBjYzYzMDBhNDRmMmMwNDQ5ZWZmZWY4
YWQxMzYuLmJjZmRmM2EzOGQ3YmM3OTY2Y2Q4NzRlZDAyYmEwMzZkZmYzYzRhOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUxLDcgKzE1MSw3
IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSoKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0
aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGlt
ZXIoKTsgfSkKICAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwgbV91c2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eT4oKnRoaXMpKQorICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
KG1ha2VVbmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQogI2VuZGlm
CiAgICAgLCBtX2lzUHJld2FybWVkKGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKaW5kZXggZTlmY2YwMDE1Mzk5NWRjMWNjZTEzNWY4YzA5
MmU5MmU2NmRiZmYzYS4uZDBiYmE1NjRjMjc1ODJkNzgyNmU5ZjJjMjA2MjIzNzAyMjcyOTUzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYnNpdGVEYXRhU3Rv
cmVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfldlYnNpdGVEYXRhU3RvcmVDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDE4Mjk0ZDM3
ZmU0OWVlZDZkNjlkZmZmZjVmMmY2NTA3MGI2NmNkOTAuLjdiZGQwM2QzYzhlYzhlMDY2MmU3N2Qw
MTgyNTBiNTA4OGMyNmNmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2Nh
aXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9j
YWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tl
bmQoKQogICAgICAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zpc3VhbCht
X3dlYlBhZ2VQcm94eS52aWV3V2lkZ2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNjcmVlbiA9
IGdka192aXN1YWxfZ2V0X3NjcmVlbih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtfU0NSRUVO
X1hESVNQTEFZKHNjcmVlbikpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jv
b3Rfd2luZG93KHNjcmVlbikpLAorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3Rv
cmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jvb3Rfd2lu
ZG93KHNjcmVlbikpLAogICAgICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3VhbCksIGdk
a192aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7
CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3Rv
cmVCYWNrZW5kQ2Fpcm9JbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwgbV9k
ZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChjYWlyb190
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGI4NzRmYjBm
YjJlMmE3ZTdlYzM2Y2M0NGUzOWQ2MjQ5MDZhNGM1ZjEuLmY4ODhjMGY0NDZjNjI3MTI3YzgzNzVi
ZTBkODFhNmEzZjJjMDlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvckNsaWVudDo6Y29ubmVjdGlvbkNsb3NlZCgpCiB2b2lkIFJlbW90ZUlu
c3BlY3RvckNsaWVudDo6aW5zcGVjdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRh
cmdldElEKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1
cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0
aW9uSUQsIHRhcmdldElEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90
ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlv
bklELCB0YXJnZXRJRCk7CiAgICAgfSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkg
ewogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zaG93KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVdheWxhbmQuY3BwCmluZGV4IDM4MzEwMDA1ODg5NGRlYzBmYjdiNTFjYWEwOWEyMzlkNzdk
MDhhOGIuLjg5MzI3OWZiY2Y1OGFlYWYyYWZkNmIxYTQ3YzFjNzZjMjNkODJiZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVdheWxhbmQuY3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVXYXlsYW5kOjpjaGVja1JlcXVpcmVtZW50cygpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0
ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRl
bnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+
dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RP
cGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxs
cHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAg
ICAgICAgaWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2UiKSB8fCBn
bEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCiAgICAg
ICAgICAgICBnbEltYWdlVGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVH
TElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCmluZGV4IGU5YWU2NTUyYTdhMmQ4NjJjNGJkNGVl
MTBlZDJlYzM2ZTkyZjgzMWQuLmNhNjUzZTVlYmE3MGM5NjE1NWZmNzY0ODhjM2VkZjQyODFmODU3
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgU2VsZWN0aW9uRGF0YSogRHJhZ0FuZERyb3BI
YW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY28KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RHJvcHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0ID0gbV9k
cm9wcGluZ0NvbnRleHRzLmFkZChjb250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgaWYgKCFkcm9wcGluZ0NvbnRleHQpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBt
X3BhZ2Uudmlld1dpZGdldCgpOwotICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOworICAgICAgICBkcm9w
cGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRp
b24pOwogICAgICAgICBWZWN0b3I8R2RrQXRvbT4gYWNjZXB0YWJsZVRhcmdldHMoUGFzdGVib2Fy
ZEhlbHBlcjo6c2luZ2xldG9uKCkuZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGRyb3BwaW5n
Q29udGV4dC0+Z2RrQ29udGV4dCkpOwogICAgICAgICBkcm9wcGluZ0NvbnRleHQtPnBlbmRpbmdE
YXRhUmVxdWVzdHMgPSBhY2NlcHRhYmxlVGFyZ2V0cy5zaXplKCk7CiAgICAgICAgIGZvciAoYXV0
byYgdGFyZ2V0IDogYWNjZXB0YWJsZVRhcmdldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgKaW5kZXggNTI1NDIwMzcxZjYxYmQ0YjhmM2Mx
YTM5OWI3YjgyNjFiOTk0ZWExMC4uNTkxNGI3ZTBkZjU0MzFhY2Y2NjM3MTAzZTY4ODA0MDRlZDQ0
M2YzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9w
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiAKIGNsYXNzIERyYWdBbmREcm9wSGFuZGxlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhZ0FuZERyb3BIYW5k
bGVyKTsKIHB1YmxpYzoKICAgICBEcmFnQW5kRHJvcEhhbmRsZXIoV2ViUGFnZVByb3h5Jik7CkBA
IC02NCw2ICs2NSw3IEBAIGNsYXNzIERyYWdBbmREcm9wSGFuZGxlciB7CiAKIHByaXZhdGU6CiAg
ICAgc3RydWN0IERyb3BwaW5nQ29udGV4dCB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgRHJvcHBpbmdDb250ZXh0KEdka0RyYWdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKTsKIAogICAgICAgICBHZGtEcmFnQ29udGV4
dCogZ2RrQ29udGV4dCB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCmluZGV4IGNiZTM4MGIyNDBkOTYwMTExNzI3Yjc3
MGE4MjVlMDllMDU0N2M5ZWQuLmMzZDk5NzNjNzBkYzIwODljNjgzZDY1YTkxM2RhMjk0ZDVmZmVi
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9z
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3Np
dG9yLmNwcApAQCAtNDIwLDkgKzQyMCw5IEBAIGJvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmluaXRp
YWxpemVFR0woKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0g
c3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9
IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxz
ZQotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6
OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVu
c2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNl
bmRpZgogICAgIGlmIChnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikg
fHwgZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQog
ICAgICAgICBnbEltYWdlVGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVH
TElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5oCmluZGV4IGJiZjkzYzIwMjg2ZWU2YzY2
MjhhNzE4MmJhZWQ0NTJmMmJjOGY3NGMuLjUxNGVjYTY4OWI2NTFjY2RmZWQ2MTE4NTBkMmIxNGJj
MmY0YzU5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJs
ZUltYWdlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0
YWJsZUltYWdlQ29udHJvbGxlci5oCkBAIC00MSwxMSArNDEsMTMgQEAgT0JKQ19DTEFTUyBXS0Ry
YXdpbmdWaWV3OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBFZGl0YWJsZUltYWdlIHsK
KyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPFdLRHJh
d2luZ1ZpZXc+IGRyYXdpbmdWaWV3OwogICAgIFN0cmluZyBhdHRhY2htZW50SUQ7CiB9OwogCiBj
bGFzcyBFZGl0YWJsZUltYWdlQ29udHJvbGxlciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFZGl0
YWJsZUltYWdlQ29udHJvbGxlcihXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQppbmRleCBjMjM0
MTFjMWYwOWIwMTBhNjUyNTRiMzY5ZGQzMTY5ZDMxZjBjMGUwLi42MWU4NTk0ZDViN2M0MWFhZjlm
YzgyYzY1MzhkYjlhZDcxODU2MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCkBAIC01OCw3ICs1OCw3IEBAIEVk
aXRhYmxlSW1hZ2VDb250cm9sbGVyOjp+RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoKQogRWRpdGFi
bGVJbWFnZSYgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmVuc3VyZUVkaXRhYmxlSW1hZ2UoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQpCiB7CiAg
ICAgYXV0byByZXN1bHQgPSBtX2VkaXRhYmxlSW1hZ2VzLmVuc3VyZShlbWJlZGRlZFZpZXdJRCwg
WyZdIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gc3Rk
OjptYWtlX3VuaXF1ZTxFZGl0YWJsZUltYWdlPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBtYWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2U+KCk7CiAgICAg
ICAgIGltYWdlLT5kcmF3aW5nVmlldyA9IG1fd2ViUGFnZVByb3h5LT5wYWdlQ2xpZW50KCkuY3Jl
YXRlRHJhd2luZ1ZpZXcoZW1iZWRkZWRWaWV3SUQpOwogICAgICAgICByZXR1cm4gaW1hZ2U7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5wdXRWaWV3
VXBkYXRlRGVmZXJyZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdV
cGRhdGVEZWZlcnJlci5oCmluZGV4IGM2ZjUwYWIxMWYzZGIyNmUzMWNjMjA0NDNhMWU4NDJiN2Q4
MDJmOGQuLmVmYzMzZGU2ZjJhODIyNWRmYzRlMWEzNDNjMTljMjJlZTFjMzQyNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZlcnJl
ci5oCkBAIC0zMyw2ICszMyw3IEBAIE9CSkNfQ0xBU1MgVUlWaWV3OwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIElucHV0Vmlld1VwZGF0ZURlZmVycmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnB1dFZpZXdVcGRhdGVEZWZl
cnJlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIoVUlW
aWV3ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9TbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgKaW5kZXggNzI4MDc4ODYzODEyZTgwOWNkZTA5NmVl
ODliMWY2MDIwNTBiYzRkMS4uMDIwMTE2NzliNzkxZjhlMGFkMTFmMWE4ZjUyNzMxYWZhMzA4NTcy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBTbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlcik7CiBwdWJsaWM6CiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcihX
S0NvbnRlbnRWaWV3ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KaW5kZXggZDAzYTE3MjZh
YjMzNGEwMGU2MGZiYzA1MGI1MGU1YzMzNzVhZjcyMC4uN2YwZjk0ODRmZDc3NzRkZDExNTdhZTI4
ODVjOTBhM2JmMmVlNzlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCkBAIC02NSw3ICs2
NSw3IEBAIC0gKHZvaWQpZGlkTW92ZVRvV2luZG93CiAgICAgaWYgKCFzZWxmLl9jb250ZW50Vmll
dy53aW5kb3cgfHwgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNlbGYsIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0
aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZCkpOworICAgIF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlciA9IG1ha2VVbmlx
dWU8V2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4oc2VsZiwgQHNlbGVjdG9yKF9hcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRGaW5p
c2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKSk7CiAgICAgCiAgICAgaWYgKF9sYXN0T2JzZXJ2ZWRT
dGF0ZVdhc0JhY2tncm91bmQgJiYgIVtzZWxmIGlzQmFja2dyb3VuZF0pCiAgICAgICAgIFtzZWxm
IF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBjMjk5MjE0NThhZjAxZmQ5N2E0MDA5MmM3
MTNmNjdjNDFmZjc3ZTdlLi4wNGY5YzZlMjcwMmU3ZDg3Y2U1NjhiZTIwMjExZTcwNmQ3MWJjMmVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAt
MTY3LDcgKzE2Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
UHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByCiAgICAgX3BhZ2UtPnNldERl
bGVnYXRlc1Njcm9sbGluZyh0cnVlKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAg
ICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVs
bHNjcmVlbkNsaWVudD4oX3dlYlZpZXcpKTsKKyAgICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVu
dChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4oX3dlYlZpZXcpKTsKICNlbmRp
ZgogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50
Kys7CkBAIC0yMzksNyArMjM5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENH
UmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYKIAogICAgIFdl
YktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIF9wYWdlQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3KTsKKyAgICBfcGFn
ZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmll
dyk7CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogCiAgICAgcmV0dXJuIFtzZWxmIF9jb21tb25J
bml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldU
Rk1vdmUoY29uZmlndXJhdGlvbildOwpAQCAtNTQxLDcgKzU0MSw3IEBAIC0gKHZvaWQpX3dlYlZp
ZXdEZXN0cm95ZWQKIAogLSAoc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94
eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Jilwcm9j
ZXNzCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UsIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLCBwcm9j
ZXNzKTsKIH0KIAogLSAodm9pZClfcHJvY2Vzc0RpZEV4aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGNl
YWZkMTYzMmFiMzNmZTI4OGQ3ODhkYTcyYzgyMjE3YjRjMGRiMWIuLjhkMjNjYTBmYTA1MzQxZGFk
ODU1YzMzYmI0MzgxZDFmNjMzMzY3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODA2LDcgKzgwNiw3
IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogICAgIAogICAgIF9hY3Rpb25TaGVldEFzc2lz
dGFudCA9IGFkb3B0TlMoW1tXS0FjdGlvblNoZWV0QXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZp
ZXc6c2VsZl0pOwogICAgIFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQgc2V0RGVsZWdhdGU6c2VsZl07
Ci0gICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4oc2VsZik7CisgICAgX3NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6U21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlcj4oc2VsZik7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmdsZVRhcENvbW1p
dCA9IE5POwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87CiAgICAgX2lzRG91Ymxl
VGFwUGVuZGluZyA9IE5POwpAQCAtODIxLDcgKzgyMSw3IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFj
dGlvbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoUExBVEZPUk1fRFJJVkVOX1RFWFRfQ0hFQ0tJTkcp
Ci0gICAgX3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
VGV4dENoZWNraW5nQ29udHJvbGxlcj4oKl9wYWdlKTsKKyAgICBfdGV4dENoZWNraW5nQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyPigqX3BhZ2Up
OwogI2VuZGlmCiAKICAgICBfaGFzU2V0VXBJbnRlcmFjdGlvbnMgPSBZRVM7CkBAIC0xMTk2LDcg
KzExOTYsNyBAQCAtIChCT09MKWJlY29tZUZpcnN0UmVzcG9uZGVyRm9yV2ViVmlldwogICAgICAg
ICByZXR1cm4gTk87CiAKICAgICBpZiAoIV9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlcikKLSAgICAg
ICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6Oklu
cHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKKyAgICAgICAgX2lucHV0Vmlld1VwZGF0ZURl
ZmVycmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxm
KTsKIAogICAgIEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXI7CiAgICAgewpAQCAtNTMzNyw3
ICs1MzM3LDcgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBXZWJLaXQ6OkZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAgICAgICAgLy8gRGVmZXIgdmll
dyB1cGRhdGVzIHVudGlsIHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCBhIG5vdGlj
ZWFibGUgZmxhc2ggd2hlbiBzd2l0Y2hpbmcgZm9jdXMKICAgICAgICAgLy8gYmV0d2VlbiBlbGVt
ZW50cyB0aGF0IHJlcXVpcmUgdGhlIGtleWJvYXJkLgogICAgICAgICBpZiAoIWlucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyKQotICAgICAgICAgICAgaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOworICAg
ICAgICAgICAgaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6SW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOwogICAgICAgICBbc2VsZiBfZWxlbWVudERpZEJs
dXJdOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KaW5kZXggODJkMzU0MjE3YjcwNjQyMDFlM2Q3YjA3NmU1YjA1OWI5NjAxMWNmMy4u
MzFiN2Q4MzBkMzA3ZmFkODVjMjZkNThjMGVmNmE3MmIyMzU4OTMyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC05MTIsNyArOTEyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1cyhjb25zdCBGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbiwKICAgICBBUEk6Ok9iamVjdCogdXNlckRhdGFPYmpl
Y3QgPSBwcm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCk7CiAgICAgaWYgKG1fZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEp
IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gZWxpbWluYXRlIG1fZGVmZXJy
ZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgYWx0b2dldGhlciwgaW4gZmF2b3Igb2Ygb25seSBk
ZWZlcnJpbmcgYWN0aW9ucyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gcG9zdC1sYXlvdXQgZWRpdG9y
IHN0YXRlIGluZm9ybWF0aW9uLgotICAgICAgICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJn
dW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50RGlkRm9jdXNBcmd1bWVudHM+KEVsZW1l
bnREaWRGb2N1c0FyZ3VtZW50cyB7IGluZm9ybWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1
clByZXZpb3VzTm9kZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIHVzZXJEYXRhT2JqZWN0IH0pOwor
ICAgICAgICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzID0gbWFrZVVuaXF1ZTxF
bGVtZW50RGlkRm9jdXNBcmd1bWVudHM+KEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7IGluZm9y
bWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwgYWN0aXZpdHlTdGF0
ZUNoYW5nZXMsIHVzZXJEYXRhT2JqZWN0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMjU4LDcgKzEyNTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3b3Jk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChSZWY8VwogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IFdlYlBhZ2VQcm94eTo6cGF5bWVu
dENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYgcGF5bWVudENvb3JkaW5hdG9yUHJveHksIFBLUGF5bWVudFJlcXVlc3QgKnBheW1lbnRS
ZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVz
dCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKIH0KIAogVUlW
aWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVl
bi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbQppbmRleCA4YjEyM2IwYTk3YzAzMGU5NDUw
ZjVlZDRmOGMxNzRiMzIxYmI0MDdiLi44ZmY4YTBiZjQ3NWIzZjdiMjM2MjI5ZjQxMmUzZjMyNjZj
Zjk1OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVl
bi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbQpAQCAtODgs
NiArODgsNyBAQCBwcml2YXRlOgogfTsKIAogY2xhc3MgV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xs
ZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCA6IFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVsQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2
b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFy
ZW50ID0gcGFyZW50OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQppbmRleCA4MzQzNDg4OWNkY2YyNDljMWMyNzkxYmQwN2JmZmZhMjAx
Y2Y0ODdkLi5hOTEyOTUzZWM5MWMyNzMzNjI2NzYzZGFmOWRhMjZiMjQ5MzNjNmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC0x
MDgsNyArMTA4LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKE5TVmlldyogdmll
dywgV0tXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogUGFnZUNsaWVudEltcGxDb2NvYSh3ZWJWaWV3
KQogICAgICwgbV92aWV3KHZpZXcpCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0g
ICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpKQogI2VuZGlm
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IDQzZTlmOTY3YmM4OTc3ZmJmZjhjODY2
OGE1Y2NhMWYzODI0YzA4MDkuLjM0YTY5YmJlMGJiMGQxNzZiNTUxYmFmMmQ3YTM1YzFmYWFjMDM3
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyBjb25z
dCBOU1RpbWVJbnRlcnZhbCBEZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsID0gMTsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9G
dWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQ
YXJlbnQoV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0g
cGFyZW50OyB9CiAKQEAgLTE1MCw3ICsxNTEsNyBAQCAtIChpZClpbml0V2l0aFdpbmRvdzooTlNX
aW5kb3cgKil3aW5kb3cgd2ViVmlldzooTlNWaWV3ICopd2ViVmlldyBwYWdlOihXZWJLaXQ6Ogog
ICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKICAgICBfcGFnZSA9ICZwYWdlOwogCi0gICAgX3ZpZGVv
RnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+KCk7CisgICAgX3ZpZGVv
RnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+KCk7CiAgICAgX3ZpZGVvRnVsbHNj
cmVlbkNsaWVudC0+c2V0UGFyZW50KHNlbGYpOwogCiAgICAgW3NlbGYgdmlkZW9Db250cm9sc01h
bmFnZXJEaWRDaGFuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1Rl
eHRGaW5kZXJDbGllbnQubW0KaW5kZXggNjYwMzE3YzJmYmM3OWI2OGJiNWI3MzQ3NmE1OGJlZmVh
MDliMDZkMy4uNjlkOWQ5ZTJkNDQ0ODQzZDE1MjcwZjUxMTdmNzc0Y2QyMzdkNWRiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCkBA
IC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIGNsYXNzIFRleHRGaW5kZXJGaW5kQ2xpZW50IDogcHVibGljIEFQSTo6RmluZE1hdGNo
ZXNDbGllbnQsIHB1YmxpYyBBUEk6OkZpbmRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFRleHRGaW5kZXJGaW5kQ2xpZW50KFdLVGV4
dEZpbmRlckNsaWVudCAqdGV4dEZpbmRlckNsaWVudCkKICAgICAgICAgOiBtX3RleHRGaW5kZXJD
bGllbnQodGV4dEZpbmRlckNsaWVudCkKQEAgLTE2OCw4ICsxNjksOCBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhQYWdlOihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZSB2aWV3OihOU1ZpZXcg
Kil2aWV3IHVzZQogICAgIF92aWV3ID0gdmlldzsKICAgICBfdXNlUGxhdGZvcm1GaW5kVUkgPSB1
c2VQbGF0Zm9ybUZpbmRVSTsKICAgICAKLSAgICBfcGFnZS0+c2V0RmluZE1hdGNoZXNDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7Ci0g
ICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRGaW5k
ZXJGaW5kQ2xpZW50PihzZWxmKSk7CisgICAgX3BhZ2UtPnNldEZpbmRNYXRjaGVzQ2xpZW50KG1h
a2VVbmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOworICAgIF9wYWdl
LT5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4o
c2VsZikpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGVkMGQ1
ZmZlOTU4OWY5NWU0NGEwN2YyMjE4ZWQ4MmMwMGYwMTdkN2UuLmU3NGFkYWMxZTY1ZWJlNWM5OWIz
MWQ5MDY3YWU2MTE1OGYzOTg3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNDMsNyArMTQzLDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OmRpZENsb3NlKENvbm5lY3Rpb25JRCkKIHZv
aWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KENvbm5lY3Rpb25JRCBjb25uZWN0aW9u
SUQsIFRhcmdldElEIHRhcmdldElELCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2luc3BlY3RvclByb3h5TWFwLmVuc3VyZShzdGQ6Om1ha2VfcGFpcihjb25u
ZWN0aW9uSUQsIHRhcmdldElEKSwgW3RoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsICZ0eXBl
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5
PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCwgdHlwZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJn
ZXRJRCwgdHlwZSk7CiAgICAgfSk7CiAKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IDFiNmQ5Y2M1NGZjNjBiNTNl
NDQwMjcxZjIzMDhlN2MwZjQ3Yzg3NGMuLmE4ODMzZjYyNDg3ZjlhNjcyMTAzOTllYzlmOGZmNWUw
OTI3MTJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC04NCwxMSAr
ODQsMTEgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3Rh
cnRUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZVByb3h5LAogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvKiBjbGllbnQgPSBtX2luc3BlY3RvckNsaWVudHMuZW5zdXJlKHJlcXVlc3RVUkwuaG9zdEFu
ZFBvcnQoKSwgW3RoaXMsICZyZXF1ZXN0VVJMXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRh
dGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0Zjgo
KS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CiAKICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3NhZ2UgbGlz
dGVuZXIKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9y
IiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBhdXRvIGhhbmRs
ZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVz
c2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpu
b3JtYWxXb3JsZCgpKTsKICAgICBwYWdlUHJveHkucGFnZUdyb3VwKCkudXNlckNvbnRlbnRDb250
cm9sbGVyKCkuYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBodG1sQnVpbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCmluZGV4IGI2N2Q3M2E0ZGM0ODhi
MzFmZGM5YTQ3MjE5NjkxNDA0Mjc0NDg4MjUuLjVkNTBhZTU1NDY4MGE2ZTllM2RhMmNlODRiZTU2
NGQ1YzMyMzdmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNr
aW5nU3RvcmVEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0Jh
Y2tpbmdTdG9yZURpcmVjdDJELmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogc3RkOjp1bmlxdWVfcHRyPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyRD4g
QmFja2luZ1N0b3JlOjpjcmVhdGVCYWNrZW5kKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2aWNlU2Nh
bGVGYWN0b3IpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJl
Y3QyREltcGw+KG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKIHZvaWQgQmFja2lu
Z1N0b3JlOjpwYWludChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVyVGFyZ2V0LCBjb25zdCBJbnRS
ZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1w
bC5jcHAKaW5kZXggY2Q2ZjA4ZmYxOGJkNTVjMTU1NDQ2M2Q0YTQwYjUxZTQ1YjJlYWI5Zi4uMDMw
N2M0ZjlmMTQzZjg2ZGM2MjA4YjQ4NGJlOGRiNDIyZGMwZjQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFBh
Z2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChXZWJWaWV3JiB2aWV3KQogLy8gUGFnZUNsaWVu
dCdzIHB1cmUgdmlydHVhbCBmdW5jdGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVBy
b3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKm1f
dmlldy5wYWdlKCksIHByb2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3
TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGNkNTM1MmRmN2FhMDRlNjlkOWIwZjk4ZWQw
MDFlNWM2MzMyZjc1OTMuLjY3ZTVlNGIyN2EzYWU4MGFiNjY4ZjZjMzQxN2MwZjBjZTZiN2YwNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTIxOCw3ICsyMTgs
NyBAQCBib29sIFdlYlZpZXc6OnJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCkKIH0KIAogV2Vi
Vmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24sIEhXTkQgcGFyZW50V2luZG93KQotICAgIDogbV9wYWdlQ2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fcGFnZUNsaWVudCht
YWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCiB7CiAgICAgcmVnaXN0ZXJXZWJWaWV3
V2luZG93Q2xhc3MoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oCmluZGV4IGI2ZDRhMDQyMGQ1YTVkYmQ2
NDYwODNhZjY3ODgwNTFiZjZjYzQ3ZTAuLmYyZDYyZWE5NzkwZjgwN2E2NWI1ZDNlNThmODBiOTdm
MDZhZGJmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOwogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUGF5bWVu
dENvb3JkaW5hdG9yIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlBheW1lbnRDb29yZGluYXRvckNs
aWVudCwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VT
ZW5kZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGZyaWVu
ZCBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgZXhwbGljaXQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yKFdlYlBhZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IDRmODEwY2NmMzhlY2Zh
MmM5OWVjYmRhODlkMDQxY2ViOGQyMzMzYjguLmFhYjM0NTdjZWQ2NGE1YTkxMGNkYzU2MmFjYzAx
MTUwMGQzYzZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFk
L1dlYkdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dh
bWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdlYkdh
bWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0
YT4mIGdhbWVwYWREYQogICAgICAgICBpZiAoZ2FtZXBhZERhdGFzW2ldLmlzTnVsbCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9nYW1lcGFkc1tpXSA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGFzW2ldKTsKKyAgICAgICAgbV9nYW1lcGFkc1tp
XSA9IG1ha2VVbmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGFzW2ldKTsKICAgICAgICAgbV9y
YXdHYW1lcGFkc1tpXSA9IG1fZ2FtZXBhZHNbaV0uZ2V0KCk7CiAgICAgfQogfQpAQCAtNzYsNyAr
NzYsNyBAQCB2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6Z2FtZXBhZENvbm5lY3RlZChjb25zdCBH
YW1lcGFkRGF0YSYgZ2FtZXBhZERhdGEpCiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBh
ZERhdGEuaW5kZXgoKV0pOwogCi0gICAgbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGEpOworICAgIG1fZ2FtZXBh
ZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWRE
YXRhKTsKICAgICBtX3Jhd0dhbWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gbV9nYW1lcGFk
c1tnYW1lcGFkRGF0YS5pbmRleCgpXS5nZXQoKTsKIAogICAgIGZvciAoYXV0byogY2xpZW50IDog
bV9jbGllbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuaAppbmRleCBmZDY1MjNkNmZhN2Q3NTkzZDFiOGQzYjMyYmFiNDYzYTk2OGVhYTI4Li42MzNm
MjJmZGZlNDI3MmIzOWRlMjVlYTBlNGEwYTA0ZDdjZGU2Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihXZWJQ
YWdlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9s
b2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAppbmRleCAwYmI0ZjJiNDIxYTNlYzIyODc1
NGU2MzgyOWQ0MWFiYmUyZTA2ZjhkLi5hNmMyODcxNmFiMTY3OGFmZGQ1NzRjOWRmOWZlMjg2ODYz
NDYzMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dl
b2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNz
IFdlYlByb2Nlc3M7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2ViR2VvbG9jYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJH
ZW9sb2NhdGlvbk1hbmFnZXIoV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKaW5kZXgg
ZjNlYzcyMDg3Y2EyODg2N2Y1NGQ5ZGYwZjUwZDg3MTAyZTAxNmZhMi4uY2E4NWQ1ODVkY2YxYjc2
ZWYwYjhkMTFkNTlhZDY2MDRhYzNmMTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCkBAIC01NSw3
ICs1NSw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlR2V0VHlwZUlEKCkKIAogdm9pZCBXS0J1bmRsZVNl
dENsaWVudChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlQ2xpZW50QmFzZSAqd2tDbGll
bnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBX
ZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlU2V0U2Vy
dmljZVdvcmtlclByb3h5Q3JlYXRpb25DYWxsYmFjayhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIHZv
aWQgKCpjYWxsYmFjaykodWludDY0X3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRl
eCBmMTJhNWJhNzc0ZDZjYzY4ZDA4NGYxZjYwMjFjZWJmMzgxYWEzYTU4Li5kYzA3NThhZDc1YWYz
NjFkZmJlODE2ZWIxMTNmNDFjN2YwOWQ4MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cApAQCAtNzcsNyArNzcsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VHZXRUeXBlSUQoKQogdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5q
ZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQobWFr
ZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Pih3a0Ns
aWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BB
UkFNKHdrQ2xpZW50KTsKQEAgLTg2LDIyICs4NiwyMiBAQCB2b2lkIFdLQnVuZGxlUGFnZVNldENv
bnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VDb250
ZQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZiwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2Vi
S2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHdrQ2xp
ZW50ID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudD4oKndrQ2xpZW50KSA6IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
RWRpdG9yQ2xpZW50PigpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQod2tDbGllbnQgPyBtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pigqd2tDbGllbnQpIDogbWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNl
dEZvcm1DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUZvcm1DbGll
bnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5q
ZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VS
ZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVQ
YWdlU2V0UGFnZUxvYWRlckNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFn
ZVJlZiktPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Pih3a0NsaWVudCkpOworICAg
IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudD4od2tD
bGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudEJhc2Uq
IHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1
bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9J
bXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChtYWtlVW5p
cXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Pih3a0NsaWVu
dCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0x
MTEsNyArMTExLDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNsaWUKIAogdm9pZCBXS0J1bmRsZVBh
Z2VTZXRVSUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlVUlDbGll
bnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5q
ZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZikt
PnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEZ1
bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUZ1bGxT
Y3JlZW5DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VP
dmVybGF5LmNwcAppbmRleCBlYmQzZWY1ZjI5MzA4YzE0MTkzYTE4MWI3ZTFlNGE0MjVmZDIxZGQy
Li42OWY3YWYyMmI1Njc1MDRkNGYzMWYwZDdhNzBiODc0ZTA5ZmE1NWEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCkBAIC01NCw2ICs1NCw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IENsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNs
aWVudEJhc2U+IHsKIH0KIAogY2xhc3MgUGFnZU92ZXJsYXlDbGllbnRJbXBsIDogQVBJOjpDbGll
bnQ8V0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEJhc2U+LCBwdWJsaWMgV2ViS2l0OjpXZWJQYWdl
T3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBQYWdlT3ZlcmxheUNsaWVudEltcGwoV0tCdW5kbGVQYWdlT3ZlcmxheUNs
aWVudEJhc2UqIGNsaWVudCkKICAgICB7CkBAIC0yMTYsNyArMjE3LDcgQEAgV0tUeXBlSUQgV0tC
dW5kbGVQYWdlT3ZlcmxheUdldFR5cGVJRCgpCiAKIFdLQnVuZGxlUGFnZU92ZXJsYXlSZWYgV0tC
dW5kbGVQYWdlT3ZlcmxheUNyZWF0ZShXS0J1bmRsZVBhZ2VPdmVybGF5Q2xpZW50QmFzZSogd2tD
bGllbnQpCiB7Ci0gICAgYXV0byBjbGllbnRJbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlT3Zl
cmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNsaWVudEltcGwgPSBtYWtlVW5p
cXVlPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4od2tDbGllbnQpOwogICAgIHJldHVybiB0b0FQSSgm
V2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50SW1wbCkpLmxlYWtS
ZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJN
YWMubW0KaW5kZXggYWNjMzVhMjFiNTlmMWFhMzFlMzMwNTFhNjZiYzEzMDU5OTY2OTlkMy4uZDZm
ZmQxY2NjMDRhOTNhN2EwOWQyYjM2NTU5YThmMGMwOTUwZmYxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VC
YW5uZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KQEAgLTQzLDYgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogY2xhc3MgUGFnZUJh
bm5lckNsaWVudEltcGwgOiBBUEk6OkNsaWVudDxXS0J1bmRsZVBhZ2VCYW5uZXJDbGllbnRCYXNl
PiwgcHVibGljIFBhZ2VCYW5uZXI6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUGFnZUJhbm5lckNsaWVudEltcGwoV0tCdW5kbGVQ
YWdlQmFubmVyQ2xpZW50QmFzZSogY2xpZW50KQogICAgIHsKQEAgLTEwMyw3ICsxMDQsNyBAQCBX
S0J1bmRsZVBhZ2VCYW5uZXJSZWYgV0tCdW5kbGVQYWdlQmFubmVyQ3JlYXRlQmFubmVyV2l0aENB
TGF5ZXIoQ0FMYXllciAqbGF5ZXIsCiAgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJz
aW9uKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpQYWdlQmFubmVyQ2xpZW50SW1wbD4od2tDbGllbnQpOworICAgIGF1
dG8gY2xpZW50SW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlQmFubmVyQ2xpZW50SW1wbD4o
d2tDbGllbnQpOwogICAgIHJldHVybiB0b0FQSSgmV2ViS2l0OjpQYWdlQmFubmVyOjpjcmVhdGUo
bGF5ZXIsIGhlaWdodCwgY2xpZW50SW1wbC5yZWxlYXNlKCkpLmxlYWtSZWYoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAKaW5kZXggNDIxMDFmOGM4
MmNiMmE1NDgzYmFlNGRjODQ4MDdiNDE2NWE5MmQ4Ni4uMjJiNDBlNDM5YmJiNjAxNWUxOGFhOGMy
NTU4ZTBlNjkzZjVlYjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RD
YWNoZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3Qg
RE9NT2JqZWN0Q2FjaGVEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgRE9NT2JqZWN0Q2FjaGVEYXRhKEdPYmplY3QqIHdyYXBwZXIpCiAgICAgICAgIDogb2Jq
ZWN0KHdyYXBwZXIpCiAgICAgICAgICwgY2FjaGVSZWZlcmVuY2VzKDEpCkBAIC03NywxNSArNzgs
OCBAQCBzdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwJiBkb21PYmplY3RDYWNo
ZUZyYW1lT2JzZXJ2ZXJzKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMgRE9NT2JqZWN0
Q2FjaGVGcmFtZU9ic2VydmVyJiBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZl
cihXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCi17Ci0gICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2Vy
dmVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVycygp
LmFkZCgmZnJhbWUsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2Fj
aGVGcmFtZU9ic2VydmVyPihmcmFtZSk7Ci0gICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOwotfQotCiBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1Ymxp
YyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcihXZWJD
b3JlOjpGcmFtZSYgZnJhbWUpCiAgICAgICAgIDogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKCZm
cmFtZSkKQEAgLTEwNSw3ICs5OSw3IEBAIGNsYXNzIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZl
ciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlCiAgICAgICAg
IGlmIChkb21XaW5kb3cgJiYgKCFtX2RvbVdpbmRvd09ic2VydmVyIHx8IG1fZG9tV2luZG93T2Jz
ZXJ2ZXItPndpbmRvdygpICE9IGRvbVdpbmRvdykpIHsKICAgICAgICAgICAgIC8vIE5ldyBET01X
aW5kb3csIGNsZWFyIHRoZSBjYWNoZSBhbmQgY3JlYXRlIGEgbmV3IERPTVdpbmRvd09ic2VydmVy
LgogICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgICAgIG1fZG9tV2luZG93T2JzZXJ2ZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRvd09ic2VydmVyPigqZG9tV2luZG93LCAqdGhpcyk7
CisgICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0gbWFrZVVuaXF1ZTxET01XaW5kb3dP
YnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOwogICAgICAgICB9CiAKICAgICAgICAgbV9vYmpl
Y3RzLmFwcGVuZCgmZGF0YSk7CkBAIC0xOTEsNiArMTg1LDE0IEBAIGNsYXNzIERPTU9iamVjdENh
Y2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlCiAgICAgc3RkOjp1bmlxdWVfcHRyPERPTVdpbmRvd09ic2VydmVyPiBtX2RvbVdpbmRv
d09ic2VydmVyOwogfTsKIAorc3RhdGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciYgZ2V0
T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1l
KQoreworICAgIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlck1hcDo6QWRkUmVzdWx0IHJlc3Vs
dCA9IGRvbU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcnMoKS5hZGQoJmZyYW1lLCBudWxscHRyKTsK
KyAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcj4oZnJhbWUpOworICAg
IHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwogdHlwZWRlZiBIYXNoTWFwPHZv
aWQqLCBzdGQ6OnVuaXF1ZV9wdHI8RE9NT2JqZWN0Q2FjaGVEYXRhPj4gRE9NT2JqZWN0TWFwOwog
CiBzdGF0aWMgRE9NT2JqZWN0TWFwJiBkb21PYmplY3RzKCkKQEAgLTIxNSw3ICsyMTcsNyBAQCB2
b2lkIERPTU9iamVjdENhY2hlOjpwdXQodm9pZCogb2JqZWN0SGFuZGxlLCB2b2lkKiB3cmFwcGVy
KQogewogICAgIERPTU9iamVjdE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbU9iamVjdHMoKS5h
ZGQob2JqZWN0SGFuZGxlLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0g
ICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTU9iamVj
dENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBlcikpOworICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIp
KTsKIH0KIAogdm9pZCBET01PYmplY3RDYWNoZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhh
bmRsZSwgdm9pZCogd3JhcHBlcikKQEAgLTIyNCw3ICsyMjYsNyBAQCB2b2lkIERPTU9iamVjdENh
Y2hlOjpwdXQoV2ViQ29yZTo6Tm9kZSogb2JqZWN0SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQogICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTU9iamVjdENhY2hlRGF0YT4oR19P
QkpFQ1Qod3JhcHBlcikpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PERPTU9iamVjdENhY2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBlcikpOwogICAgIGlmIChXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBvYmplY3RIYW5kbGUtPmRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAg
ICAgZ2V0T3JDcmVhdGVET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIoKmZyYW1lKS5hZGRPYmpl
Y3RDYWNoZURhdGEoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVu
c2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCmluZGV4IDRjY2VjNjJlZjBlMTEz
MWZhMTNmN2ZiMDYwYzgwZTA3ZWU0MjUxYWYuLjRkNzQyZTQwOWJiZmM3Y2ZhYjQwOGNkNjUzOGFl
ZjlmMjI4ZmQ3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9u
TWFuYWdlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFdlYktpdEV4dGVuc2lvbk1hbmFn
ZXI6OmluaXRpYWxpemUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSwgQVBJOjpPYmplY3QqIHVzZQog
ICAgIHNjYW5Nb2R1bGVzKHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIG1vZHVsZVBhdGhzKTsKIAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgYXV0byBtb2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0aHNb
aV0pOworICAgICAgICBhdXRvIG1vZHVsZSA9IG1ha2VVbmlxdWU8TW9kdWxlPihtb2R1bGVQYXRo
c1tpXSk7CiAgICAgICAgIGlmICghbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgaWYgKGluaXRpYWxpemVXZWJFeHRlbnNpb24obW9kdWxlLmdldCgpLCB1c2Vy
RGF0YS5nZXQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwCmluZGV4
IDA0MDcyZWI4NjRkYmUzNWY4MGRmYzg2YWQwZTg4M2MzZTk5Y2U0NGYuLmNjYjUxZTBkOTY0MGM2
NmY4NTk2ZTQ3NDE3MTQwNThlOTEzOTc2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRX
ZWJFZGl0b3IuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFdlYktpdFdlYkVkaXRvciogd2Via2l0V2Vi
RWRpdG9yQ3JlYXRlKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiB7CiAgICAgV2ViS2l0V2ViRWRp
dG9yKiBlZGl0b3IgPSBXRUJLSVRfV0VCX0VESVRPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX0VESVRPUiwgbnVsbHB0cikpOwogICAgIGVkaXRvci0+cHJpdi0+d2ViUGFnZSA9IHdlYlBh
Z2U7Ci0gICAgd2Via2l0V2ViUGFnZUdldFBhZ2Uod2ViUGFnZSktPnNldEluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUVkaXRvckNsaWVudD4oZWRpdG9yKSk7
CisgICAgd2Via2l0V2ViUGFnZUdldFBhZ2Uod2ViUGFnZSktPnNldEluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUVkaXRvckNsaWVudD4oZWRpdG9yKSk7CiAgICAgcmV0
dXJuIGVkaXRvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9u
LmNwcAppbmRleCA0YTIzYmY1NjAxMDdjMzFmMWE0ZGUyYzk2MTI5OWE3MDEwODE3NTAxLi5lMzA2
ZTNmZWYyNjMxZDU0NjY1NTcxMTZlNWU0ODdkMzcxYzc4NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5z
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIGNsYXNzIFdl
YkV4dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkNsaWVuCiBXZWJLaXRXZWJFeHRlbnNpb24qIHdlYmtpdFdlYkV4dGVuc2lvbkNy
ZWF0ZShJbmplY3RlZEJ1bmRsZSogYnVuZGxlKQogewogICAgIFdlYktpdFdlYkV4dGVuc2lvbiog
ZXh0ZW5zaW9uID0gV0VCS0lUX1dFQl9FWFRFTlNJT04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9FWFRFTlNJT04sIE5VTEwpKTsKLSAgICBidW5kbGUtPnNldENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkV4dGVuc2lvbkluamVjdGVkQnVuZGxlQ2xpZW50PihleHRlbnNpb24pKTsKKyAg
ICBidW5kbGUtPnNldENsaWVudChtYWtlVW5pcXVlPFdlYkV4dGVuc2lvbkluamVjdGVkQnVuZGxl
Q2xpZW50PihleHRlbnNpb24pKTsKICAgICByZXR1cm4gZXh0ZW5zaW9uOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggY2ZjNTAzMWVkNmU0YTI5NTRmZTAyYTAz
ZGE4N2ExNjFjZDJkMzA4Mi4uYzkyMDRiMjM5ODFkN2YxN2FkMDczYjllZDQxMmE4Nzc2ODVjZTdk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtOTUsNiArOTUsNyBA
QCBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0V2ViUGFnZSwgd2Via2l0X3dlYl9wYWdlLCBHX1RZ
UEVfT0JKRUNUKQogc3RhdGljIHZvaWQgd2ViRnJhbWVEZXN0cm95ZWQoV2ViRnJhbWUqKTsKIAog
Y2xhc3MgV2ViS2l0RnJhbWVXcmFwcGVyIGZpbmFsOiBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJL
aXRGcmFtZVdyYXBwZXIoV2ViRnJhbWUmIHdlYkZyYW1lKQogICAgICAgICA6IEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlcih3ZWJGcmFtZS5jb3JlRnJhbWUoKSkKQEAgLTEyOCw3ICsxMjksNyBAQCBz
dGF0aWMgV2ViS2l0RnJhbWUqIHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUoV2ViRnJhbWUqIHdlYkZy
YW1lKQogICAgIGlmICh3cmFwcGVyUHRyKQogICAgICAgICByZXR1cm4gd3JhcHBlclB0ci0+d2Vi
a2l0RnJhbWUoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+IHdy
YXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEZyYW1lV3JhcHBlcj4oKndlYkZyYW1lKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gbWFrZVVu
aXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CiAgICAgd3JhcHBlclB0ciA9IHdy
YXBwZXIuZ2V0KCk7CiAgICAgd2ViRnJhbWVNYXAoKS5zZXQod2ViRnJhbWUsIFdURk1vdmUod3Jh
cHBlcikpOwogICAgIHJldHVybiB3cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgpOwpAQCAtNjc4LDEx
ICs2NzksMTEgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJQYWdlKiB3
ZWJQYWdlKQogICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSBXRUJLSVRfV0VCX1BBR0UoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QQUdFLCBOVUxMKSk7CiAgICAgcGFnZS0+cHJpdi0+d2Vi
UGFnZSA9IHdlYlBhZ2U7CiAKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNl
TG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBhZ2Up
KTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5q
ZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb250ZXh0
TWVudUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5z
ZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRm9ybUNsaWVu
dD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xp
ZW50KG1ha2VVbmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFnZSkpOworICAgIHdlYlBh
Z2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFBhZ2VMb2Fk
ZXJDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRN
ZW51Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50PihwYWdlKSk7CisgICAg
d2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFBhZ2VVSUNsaWVu
dD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtl
VW5pcXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7CiAKICAgICByZXR1cm4gcGFnZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KaW5kZXggODEwNTVjZTdmZGViYTMx
OGRhYjA2ODI2MzRjNmJkODRhMzdmYWU4Yy4uMDg0ZjMwMDVkNjEwM2Q0ZTI1MDMzYzI1NmM3MGMw
ZTA2NDA0MWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KQEAg
LTQ1LDcgKzQ1LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooV0tET01SYW5nZSAqKXJhbmdlCiAg
ICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRJdGVyYXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29y
ZVJhbmdlKHJhbmdlKSk7CisgICAgX3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0ODgwMGJi
MzE3OTA2NWU0ZTczMjkzMDY5MDU0NjgwZTQzNGFmMWZmLi40MjAyMzk2YWJhZmFmMzBkNzE4OWFl
YjY4NTA5ZWEyNzE3MWI5NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBA
IC01NDQsNyArNTQ0LDcgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9j
ZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4pZm9ybURlbGVnYXQKICAgICB9OwogCiAgICAg
aWYgKGZvcm1EZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2Ut
PnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYp
KTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQo
bnVsbHB0cik7CiB9CkBAIC02NzMsNyArNjczLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVn
YXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcK
ICAgICB9OwogCiAgICAgaWYgKGVkaXRpbmdEZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldElu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50PihzZWxmKSk7
CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVl
PENsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggYjBk
Y2I5MDAwYmU5MTUyOGM3YzA3MWY2NmQ3ZThjMzAxY2U5NWE3Ni4uZTQ1NTI2MTgwYzAxYmJkMzVh
ZTUyNWU4MjViZDdkNGFjZmRmOWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0xMDQsNyAr
MTA0LDcgQEAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIEluamVjdGVkQnVuZGxlOjpJbmplY3Rl
ZEJ1bmRsZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQog
ICAgIDogbV9wYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgICwgbV9wbGF0
Zm9ybUJ1bmRsZSgwKQotICAgICwgbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpDbGllbnQ+KCkpCisgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5q
ZWN0ZWRCdW5kbGU6OkNsaWVudD4oKSkKIHsKIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIEluamVj
dGVkQnVuZGxlOjp+SW5qZWN0ZWRCdW5kbGUoKQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+JiYgY2xpZW50
KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOworICAgICAgICBtX2NsaWVudCA9IG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAg
ICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmgKaW5kZXggMGNhNWVhNmQyYWJlNTcyMTU0ZDIxYmVkMGNjOWEwNTNlN2Q2NmMxOC4uYmZi
M2QwNDUxNDM3MzZjMzFkZjk4OGFiMWIwMGRlNDJiODUzMDg5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIgOiBwdWJsaWMg
V2ViUHJvY2Vzc1N1cHBsZW1lbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIpOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIoV2ViUHJvY2VzcyYpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCmluZGV4IGQ3
YzVjNjgzNDRiNzI3MzhkOTQ5N2RmMDEyY2EzNzZiYjg0MTg4ZGEuLmIwYmQ1MzRjZTE5ZDczODYx
ZDgxNzZhODIwNWNkY2U2MTk1ZmQwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
PiwgcHJpdmF0ZSBXZWJDb3JlOjpNZWRpYUNhblN0YXJ0TGlzdGVuZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcihXZWJQYWdlJik7CiAgICAgflVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNzMzNTI3NjU4NzFkODI1NWEy
M2RiN2I1NWU2ZDQ0ZWU3MzM5MjJkNy4uMmU1N2FmMjQ4M2JkMzZiM2RkODVlNGVjMThkZGUxMGY0
NDM2ZTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTEzMiwzOCArMTMyLDExIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZE1lc3NhZ2UoVCYmIG1lc3NhZ2UsIHNp
emVfdCBieXRlCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3Vs
dCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBh
dXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJbkJ5dGVzKCk7Ci0gICAgaWYgKCFpbmNyZWFz
ZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZhaWw7Ci0K
LSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5kTWVzc2Fn
ZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBtZXNzYWdlIH0s
IGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1lc3NhZ2UpKTsKLQotICAgIHJldHVy
biBTZW5kU3VjY2VzczsKLX0KLQotV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2Nr
ZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJpbmFyeURhdGEsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCi17Ci0gICAgaWYgKCFpbmNyZWFz
ZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gU2VuZEZhaWw7Ci0K
LSAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAgICBzZW5kTWVzc2Fn
ZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0YSgpKSAr
IGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNz
YWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7Ci0KLSAgICByZXR1cm4g
U2VuZFN1Y2Nlc3M7Ci19Ci0KIGNsYXNzIEJsb2JMb2FkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6RmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQmxvYkxvYWRlcihXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQsIFdl
YkNvcmU6OkJsb2ImIGJsb2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLSAgICAgICAgOiBtX2xvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZp
bGVSZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVm
ZmVyLCB0aGlzKSkKKyAgICAgICAgOiBtX2xvYWRlcihtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbGVS
ZWFkZXJMb2FkZXI+KFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0FycmF5QnVmZmVy
LCB0aGlzKSkKICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKQogICAgIHsKICAgICAgICAgbV9sb2FkZXItPnN0YXJ0KGRvY3VtZW50LCBibG9i
KTsKQEAgLTIyNiw3ICsxOTksNyBAQCBjbGFzcyBQZW5kaW5nTWVzc2FnZSB7CiAKICAgICBQZW5k
aW5nTWVzc2FnZShXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6OkJsb2ImIGJs
b2IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICAg
ICAgOiBtX3R5cGUoVHlwZTo6QmxvYikKLSAgICAgICAgLCBtX2Jsb2JMb2FkZXIoc3RkOjptYWtl
X3VuaXF1ZTxCbG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpKQorICAgICAgICAsIG1fYmxvYkxvYWRlcihtYWtlVW5pcXVlPEJsb2JMb2FkZXI+KGRv
Y3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpCiAgICAgewogICAgIH0K
IApAQCAtMjQ0LDEzICsyMTcsNDAgQEAgY2xhc3MgUGVuZGluZ01lc3NhZ2UgewogICAgIHN0ZDo6
dW5pcXVlX3B0cjxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiB9OwogCitXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIGF1dG8gYnl0ZUxlbmd0aCA9IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMoKTsKKyAg
ICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAgICAgIHJldHVy
biBTZW5kRmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCisgICAg
ICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmlu
ZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBtX3BlbmRpbmdN
ZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2FnZSkpOworCisg
ICAgcmV0dXJuIFNlbmRTdWNjZXNzOworfQorCitXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0
YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKK3sKKyAgICBpZiAo
IWluY3JlYXNlQnVmZmVyZWRBbW91bnQoYnl0ZUxlbmd0aCkpCisgICAgICAgIHJldHVybiBTZW5k
RmFpbDsKKworICAgIGlmIChtX3BlbmRpbmdNZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHNl
bmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6
OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5k
YXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOworICAgIGVs
c2UKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01l
c3NhZ2U+KGJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKKworICAgIHJldHVy
biBTZW5kU3VjY2VzczsKK30KKwogV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2Nr
ZXRDaGFubmVsOjpzZW5kKFdlYkNvcmU6OkJsb2ImIGJsb2IpCiB7CiAgICAgLy8gQXZvaWQgdGhl
IEJsb2IgcXVldWUgYW5kIGxvYWRpbmcgZm9yIGVtcHR5IGJsb2JzLgogICAgIGlmICghYmxvYi5z
aXplKCkpCiAgICAgICAgIHJldHVybiBzZW5kKEpTQzo6QXJyYXlCdWZmZXI6OmNyZWF0ZShibG9i
LnNpemUoKSwgMSksIDAsIDApOwogCi0gICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0aGlz
XSB7CisgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3Nh
Z2U+KG1fZG9jdW1lbnQuZ2V0KCksIGJsb2IsIFt0aGlzXSB7CiAgICAgICAgIHdoaWxlICghbV9w
ZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvJiBtZXNzYWdlID0g
bV9wZW5kaW5nTWVzc2FnZXMuZmlyc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5k
ZXggMDk0YWM3MWY3ZTVlZmZhYjc0ODVmY2VmY2FlNTQ4OTNkYjNlMDUwNi4uM2Q4OWRkN2RlNTM0
NjFjNGIzYTY3ZjQzMTViMDJkNTA2NGE5ZTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
CkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIGNsYXNzIEFzeW5jUmVzb2x2ZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6QXN5
bmNSZXNvbHZlckZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0
ZToKICAgICBydGM6OkFzeW5jUmVzb2x2ZXJJbnRlcmZhY2UqIENyZWF0ZSgpIGZpbmFsCiAgICAg
ewpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1YmxpYyB3
ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKIAogcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVy
Q29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBydGM6
OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24ob2Jz
ZXJ2ZXIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5tb25pdG9y
KCksICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzdGQ6Om1ha2VfdW5p
cXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFjdG9yeSwg
V1RGTW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFjdG9yeT4o
KSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhvc3RDb25u
ZWN0aW9ucygpCkBAIC02NSw2ICs2Niw3IEBAIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lz
dGVyTUROU05hbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBkb2N1CiB9CiAK
IGNsYXNzIFJUQ1NvY2tldEZhY3RvcnkgZmluYWwgOiBwdWJsaWMgcnRjOjpQYWNrZXRTb2NrZXRG
YWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSVENT
b2NrZXRGYWN0b3J5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nJiYgdXNlckFnZW50
KQogICAgICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKQEAgLTEwMiw3ICsxMDQsNyBAQCBj
bGFzcyBSVENTb2NrZXRGYWN0b3J5IGZpbmFsIDogcHVibGljIHJ0Yzo6UGFja2V0U29ja2V0RmFj
dG9yeSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxydGM6OlBhY2tldFNvY2tldEZhY3Rvcnk+IExpYldl
YlJUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXRGYWN0b3J5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgU3RyaW5nJiYgdXNlckFnZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJU
Q1NvY2tldEZhY3Rvcnk+KHNlc3Npb25JRCwgV1RGTW92ZSh1c2VyQWdlbnQpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSVENTb2NrZXRGYWN0b3J5PihzZXNzaW9uSUQsIFdURk1vdmUodXNlckFn
ZW50KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaApp
bmRleCA1ZDYzODNmNmI1MDY1M2I1YzY3MDcwNzA1YzZjMTAyODcwZmEwMjMxLi4zOTkwNjk5ZDA3
NzhmZWIxN2IwY2E4ZTYwNzgxNDEwOGE1YzAwYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuaApA
QCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIExpYldlYlJUQ1NvY2tl
dEZhY3Rvcnk7CiAKIGNsYXNzIExpYldlYlJUQ1Jlc29sdmVyIGZpbmFsIDogcHVibGljIHJ0Yzo6
QXN5bmNSZXNvbHZlckludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgTGliV2ViUlRDUmVzb2x2ZXIodWludDY0X3QgaWRlbnRpZmllcikgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5
LmNwcAppbmRleCBmOGI3ZWQyMjljNGY2ZjJkYzAzNjEzMmNjOTZlNDExZWVjYTU3MDJlLi4yMzU4
MmRlNzU5Yjk4NDVlYjdmZTQwNjQ0MzY1ZWZiYzE5Yjc1ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1NvY2tldEZhY3RvcnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpT
b2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3Jl
YXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWlu
dDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCwgaW50IG9wdGlvbnMpCiB7Ci0gICAgYXV0
byBzb2NrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191
bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwg
YWRkcmVzcywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVu
aXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwg
TGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRk
cmVzcygpKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQu
Z2V0KCkpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRl
bnRpZmllcigpLCBhZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNh
YmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0LCBvcHRpb25zXSgp
IHsKQEAgLTY2LDcgKzY2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29j
a2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3lu
Y1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNv
bnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2
X3QgbWF4UG9ydCkKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1Nv
Y2tldDo6VHlwZTo6VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0
byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVT
b2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRj
OjpTb2NrZXRBZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVy
KCksIHNvY2tldC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0g
c29ja2V0LT5pZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVzcyhhZGRy
ZXNzLCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1heFBvcnRd
KCkgewpAQCAtODAsNyArODAsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENT
b2NrZXRGYWN0b3J5OjpjcmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZQogCiBydGM6OkFz
eW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BT
b2NrZXQoY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBsb2NhbEFkZHJlc3MsIGNvbnN0IHJ0Yzo6
U29ja2V0QWRkcmVzcyYgcmVtb3RlQWRkcmVzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcmJiB1c2VyQWdlbnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRl
bnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywg
cmVtb3RlQWRkcmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1Nv
Y2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6
OlR5cGU6OkNsaWVudFRDUCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2Nr
ZXQtPnNldFN0YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVElORyk7CiAgICAgbV9z
b2NrZXRzLnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtOTYs
NyArOTYsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5
OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KExp
YldlYlJUQ1NvY2tldCYgc2VydmVyU29ja2V0LCB1aW50NjRfdCBuZXdDb25uZWN0aW9uU29ja2V0
SWRlbnRpZmllciwgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzKQogewot
ICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlz
LCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2
ZXJDb25uZWN0aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJl
c3MpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlz
LCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2
ZXJDb25uZWN0aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJl
c3MpOwogICAgIHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05ORUNU
RUQpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQo
KSk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmRl
dGFjaChMaWJXZWJSVENTb2NrZXQmIHNvY2tldCkKIAogcnRjOjpBc3luY1Jlc29sdmVySW50ZXJm
YWNlKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVBc3luY1Jlc29sdmVyKCkKIHsKLSAg
ICBhdXRvIHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytz
X3VuaXF1ZVJlc29sdmVySWRlbnRpZmllcik7CisgICAgYXV0byByZXNvbHZlciA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOwogICAg
IGF1dG8qIHJlc29sdmVyUG9pbnRlciA9IHJlc29sdmVyLmdldCgpOwogICAgIG1fcmVzb2x2ZXJz
LnNldChyZXNvbHZlclBvaW50ZXItPmlkZW50aWZpZXIoKSwgV1RGTW92ZShyZXNvbHZlcikpOwog
ICAgIHJldHVybiByZXNvbHZlclBvaW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgK
aW5kZXggMmQxZTg0MjQ3YmQwYTMwYzk0ZDFmMmVhMzAxZGQ1NWQwMmE2ZTA3Ni4uYjI3MTNmNDZj
MWZjMTNjOWYyN2JiZTM5Y2E1ZGM1MTg1MGIxODNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBXZWJQYWdlOwogY2xhc3MgV2ViUHJvY2Vz
czsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3Vw
cGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJOb3RpZmljYXRpb25NYW5h
Z2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyKFdlYlBy
b2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCAxNmExYTdm
ODM0NDYwNTNmMzNkNjU0ZTgzMzMyMjk1MGVlOTk0ZDcyLi5kNzNmMWYxNmY4OTA3NjljNzJjYzlk
ZDQ0MGQyMjkyMWZmNWZmYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHsKICAg
ICBleHBsaWNpdCBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvcihOZXRzY2FwZVBsdWdpbiogcGx1
Z2luKQogICAgIHsKICAgICAgICAgaWYgKHBsdWdpbikKLSAgICAgICAgICAgIG1fcHJvdGVjdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVnaW5EZXN0cnVjdGlvblBy
b3RlY3Rvcj4oc3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29udHJvbGxlcigpKTsKKyAg
ICAgICAgICAgIG1fcHJvdGVjdG9yID0gbWFrZVVuaXF1ZTxQbHVnaW5Db250cm9sbGVyOjpQbHVn
aW5EZXN0cnVjdGlvblByb3RlY3Rvcj4oc3RhdGljX2Nhc3Q8UGx1Z2luKj4ocGx1Z2luKS0+Y29u
dHJvbGxlcigpKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CmluZGV4IDY5YTNjOTNmMTMyNmZhNGM2ZjdmZWJmOGFiMWIyY2E0Yzc3NmJjMGUuLjU5ZjQ4MjUx
ZjI4ODU0YzZkMTY4MGIxZDY0ZGZhYTVhNDdjNjgxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAKQEAgLTM1MCw3ICszNTAsNyBAQCB1aW50MzJfdCBOZXRzY2FwZVBsdWdpbjo6c2NoZWR1bGVU
aW1lcih1bnNpZ25lZCBpbnRlcnZhbCwgYm9vbCByZXBlYXQsIHZvaWQgKCp0aQogICAgIC8vIEZJ
WE1FOiBIYW5kbGUgd3JhcHBpbmcgYXJvdW5kLgogICAgIHVuc2lnbmVkIHRpbWVySUQgPSArK21f
bmV4dFRpbWVySUQ7CiAKLSAgICBhdXRvIHRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4o
dGhpcywgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKKyAgICBhdXRvIHRp
bWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4odGhpcywgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwg
dGltZXJGdW5jKTsKICAgICAKICAgICAvLyBGSVhNRTogQmFzZWQgb24gdGhlIHBsdWctaW4gdmlz
aWJpbGl0eSwgZmlndXJlIG91dCBpZiB3ZSBzaG91bGQgdGhyb3R0bGUgdGhlIHRpbWVyLCBvciBp
ZiB3ZSBzaG91bGQgc3RhcnQgaXQgYXQgYWxsLgogICAgIHRpbWVyLT5zdGFydCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmgKaW5kZXggZTBhYmMyYzdiNDEyOTkzMDAyYmJhYjhiZGZhYjdmMjY1MWFkYzU3
Zi4uYjZjNzZiNmVkNzE0Y2FhYTNhNDFkZGU0MWMxZDZhMTA0ZmI3YWVjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCkBAIC0zMDgsNiArMzA4LDcgQEAgY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJs
aWMgUGx1Z2luIHsKICAgICBWZWN0b3I8Ym9vbCwgOD4gbV9wb3B1cEVuYWJsZWRTdGF0ZXM7CiAK
ICAgICBjbGFzcyBUaW1lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaW1lcik7CiAKICAgICBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMDQ5NjI4ZjVjNjI3MDJlNGQ1ZDQxMTE4
MjAxMjNiYTVmNGI5NjUyNC4uYmRhYTE0NDc4NDIyNjk1ZDUwZWE4NDhhYWZjY2JjZTEyZDJhZDky
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtMTkzLDcgKzE5Myw3
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlICE9IE5QX0FTRklMRU9O
TFkpIHsKICAgICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAgICAgICAgICAgIG1fZGVsaXZl
cnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7CisgICAgICAgICAg
ICBtX2RlbGl2ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPHVpbnQ4X3Q+PigpOwogCiAgICAg
ICAgIG1fZGVsaXZlcnlEYXRhLT5yZXNlcnZlQ2FwYWNpdHkobV9kZWxpdmVyeURhdGEtPnNpemUo
KSArIGxlbmd0aCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAppbmRleCA0NGQxMWI1N2Mz
ZWE2ZDUxOGMxOGQwNGI4MjJkMjg2ZDUzZTk2OGNmLi4wN2Q1NTZjM2I3ZmM2MzcxOWMyYTI1NTll
MGFhZDZjMjI2YzA3Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAK
QEAgLTEzNiwxMCArMTM2LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4g
TmV0c2NhcGVQbHVnaW5YMTE6OmNyZWF0ZShOZXRzY2FwZVBsdWdpbiYgcGx1CiAKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgaWYgKHBsdWdpbi5pc1dpbmRvd2VkKCkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRv
d0lEKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdp
biwgZGlzcGxheSwgd2luZG93SUQpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxOZXRzY2FwZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKIH0KIAogTmV0c2Nh
cGVQbHVnaW5YMTE6Ok5ldHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4sIERp
c3BsYXkqIGRpc3BsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCmluZGV4IDQx
ZTliNmM5ZDg0Y2FhNDk1OGUzODViOWVkODBmZGQ3ZTExZGNhNWIuLjFmOWZkODdmYTNhMzBjOTM2
MDQzOGVkNTk3ZGMzMmM4OTU4N2FmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgx
MS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0c2NhcGVQ
bHVnaW47CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z2luWDExIGZpbmFsIDogcHVibGljIE5ldHNjYXBl
UGx1Z2luVW5peCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gY3JlYXRlKE5ldHNjYXBl
UGx1Z2luJik7CiAgICAgTmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVnaW4mLCBEaXNwbGF5
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5D
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250
cm9sbGVyLmgKaW5kZXggYTFmODA3ZTFlNTUwNzIzZWZlZWExNzcxMzNiODFkZmY0ZDE3NmIzNS4u
YjU3MmFhM2E1MzZkNDg1Y2I5YjgxN2ExNmUwMmMzMzJjNGJjMjExNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtMTU5
LDYgKzE1OSw3IEBAIGNsYXNzIFBsdWdpbkNvbnRyb2xsZXIgewogCiAgICAgLy8gSGVscGVyIGNs
YXNzIGZvciBkZWxheWluZyBkZXN0cnVjdGlvbiBvZiBhIHBsdWctaW4uCiAgICAgY2xhc3MgUGx1
Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IFBsdWdpbkRlc3RydWN0aW9uUHJvdGVj
dG9yKFBsdWdpbkNvbnRyb2xsZXIqIHBsdWdpbkNvbnRyb2xsZXIpCiAgICAgICAgICAgICA6IG1f
cGx1Z2luQ29udHJvbGxlcihwbHVnaW5Db250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGYzN2MyY2MyNGUzZGQ5NzYz
ZjNlYmRkNjMyZDhiZmRiNzcxNDQzNDcuLjlhYjU4MzczMGI4OWRiZDk2MDFkNjUyMGVmOGY5YjBi
ZTAwNmRjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlhbGl6
ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIG1fY29ubmVjdGlvbi0+YWRkUGx1
Z2luUHJveHkodGhpcyk7CiAKICAgICAvLyBBc2sgdGhlIHBsdWctaW4gcHJvY2VzcyB0byBjcmVh
dGUgYSBwbHVnLWluLgotICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPigpOworICAgIG1fcGVuZGlu
Z1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyA9IG1ha2VVbmlxdWU8UGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzPigpOwogCiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5wbHVn
aW5JbnN0YW5jZUlEID0gbV9wbHVnaW5JbnN0YW5jZUlEOwogICAgIG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy0+d2luZG93TlBPYmplY3RJRCA9IHdpbmRvd05QT2JqZWN0SUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggN2FiODk2NmRiOTA1YWRkMTIzOTQ4MTY1MGIxOWRlNGE3ZTdkMjIzZi4uMTE5ZDJiOTBjMmI0
NDIzMWYyNTY5NTdlNjJkZGNhOGYxMzBmYzczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTg5OCw3ICs4OTgsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViRXZlbnQ+IFBsdWdpblZpZXc6OmNyZWF0ZVdlYkV2ZW50KE1vdXNlRXZlbnQm
IGV2ZW50KSBjb25zdAogICAgIGlmIChldmVudC5tZXRhS2V5KCkpCiAgICAgICAgIG1vZGlmaWVy
cy5hZGQoV2ViRXZlbnQ6Ok1vZGlmaWVyOjpNZXRhS2V5KTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFdlYk1vdXNlRXZlbnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQuYnV0dG9ucygpLCBt
X3BsdWdpbi0+Y29udmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQub2Zmc2V0WCgpLCBldmVu
dC5vZmZzZXRZKCkpKSwgZXZlbnQuc2NyZWVuTG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3Vu
dCwgbW9kaWZpZXJzLCBXYWxsVGltZSB7IH0sIDApOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdl
Yk1vdXNlRXZlbnQ+KHR5cGUsIGJ1dHRvbiwgZXZlbnQuYnV0dG9ucygpLCBtX3BsdWdpbi0+Y29u
dmVydFRvUm9vdFZpZXcoSW50UG9pbnQoZXZlbnQub2Zmc2V0WCgpLCBldmVudC5vZmZzZXRZKCkp
KSwgZXZlbnQuc2NyZWVuTG9jYXRpb24oKSwgMCwgMCwgMCwgY2xpY2tDb3VudCwgbW9kaWZpZXJz
LCBXYWxsVGltZSB7IH0sIDApOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2
ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA0OWQy
MGM3YzQ5YzAyYWE5NTlhYTRhZTRkOWVlYzhmZTgzYzVmZTdjLi4xODhhZGIwOTU5MmY5MjJhMTAx
ZjJmMzczZTkwMzk5NjdiMTlhMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckNvbnQKICAgICAvLyBG
SVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIG1vdmVkIGRpcmVjdGx5IHRvIFdlYkNvcmU6OlNX
Q29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24KICAgICAvLyBJZiBpdCB3ZXJlbid0IGZvciBTZXJ2
aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQncyBkZXBlbmRlbmNlIG9uIFdlYkRvY3VtZW50TG9h
ZGVyLCB0aGlzIGNvdWxkIGFscmVhZHkgaGFwcGVuLgogICAgIC8vIEZJWE1FOiBXZWlyZCB0byBw
YXNzIG1fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQgYXMgYSBGcmFtZUlkZW50aWZpZXIuCi0gICAg
YXV0byBmcmFtZUxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50PigqdGhpcywgc2Vzc2lvbklELCBtX3BhZ2VJRCwgZnJhbWVJZGVudGlm
aWVyRnJvbUlEKCsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCksIGVmZmVjdGl2ZVVzZXJBZ2Vu
dCk7CisgICAgYXV0byBmcmFtZUxvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtl
ckZyYW1lTG9hZGVyQ2xpZW50PigqdGhpcywgc2Vzc2lvbklELCBtX3BhZ2VJRCwgZnJhbWVJZGVu
dGlmaWVyRnJvbUlEKCsrbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCksIGVmZmVjdGl2ZVVzZXJB
Z2VudCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0g
ZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCk7CiAgICAgbV9sb2FkZXJzLmFkZChXVEZNb3ZlKGZyYW1l
TG9hZGVyQ2xpZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXT3JpZ2luVGFibGUuaAppbmRleCA5MjBkZWQwNDBjZTU2MTgzMzk5ZjZjOTNiODJl
YjM2ZGY3MzA0OTZhLi45MzBlNDYxODE5ZTE4NmY1YTgwZDhmNjcxNmZiMTE4YzRkYzBlYTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRh
YmxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5U
YWJsZS5oCkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU1dPcmlnaW5UYWJsZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU1dPcmlnaW5UYWJsZSgpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IDRkZjZmMDE5ZTU1
ODU3NTUyYzg0ZGZhYjkyNTBjNDAxYTg0Y2I4MzUuLmY0Y2YyOTFhNDAxMGIxZTdjMjQxNjdkNDU0
YjU0ZWM0Yjg2NGM0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAg
LTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFz
cyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViUGFnZSopOwogICAgIHZpcnR1YWwg
fldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBm
Y2QwOThlNDg0MGE1OGEyYjVhMjE5N2ViNTI5MWUwYTRmNDgyOWYyLi4wZTZiOTQzZDE1OWM2MTIy
YTliNDQ0ZmU2OGYwNTc1MDY5ZDExZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzkz
LDcgKzc5Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sCiAKIHN0ZDo6dW5pcXVlX3B0cjxD
b2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hv
b3NlckNsaWVudCYgY2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9yKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwg
aW5pdGlhbENvbG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb2xvckNob29zZXI+KCZt
X3BhZ2UsICZjbGllbnQsIGluaXRpYWxDb2xvcik7CiB9CiAKICNlbmRpZgpAQCAtODAyLDcgKzgw
Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsCiAKIHN0ZDo6dW5pcXVlX3B0cjxEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyKERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+KCZtX3BhZ2Us
ICZjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmlu
ZGV4IDJkYzY2MjJjMWI3ZjFjNWE5NWEyY2NkNzliMzIwOWJiNTg3MmE2MmEuLjQzMmRmOTQyNGJj
MDhhNWJmOTFkMTAzOGMyNDNmZjJmMzRlNzJiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQx
LDYgKzQxLDcgQEAgY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJD
aHJvbWVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2Vi
UGFnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDZjMjliNGUwODEyNmU3
Y2Q2Njc5Y2M0NzAyMzVjNTU3NGRlNTBkMmUuLmMxYzg5Y2Q5OWU4N2FlZTg0ZWQ1NzQ2YzJlODFm
NjQ3ZTgyZjFmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0zNSw2ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ29udGV4
dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50
KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRl
eCAxYWQ0YzNkZTJjYjdkMzhlNjI2MmMxOTdhYWIyNGNjYTZmZWRhODIxLi5iMjRlY2Y3NmM0NTUy
NGY2MGQ4NmFlZDZmYjFlY2Y2ZjBmMzk0MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTM1LDYgKzM1
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJEcmFn
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2ViUGFnZSogcGFnZSkKICAg
ICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAyNjgxMDJmZWExYTc3
NTdlZDdlMTZkZGVjY2UzY2FkOGVlNmJkNDM1Li5kMjJkNGNiNzNmMjk3M2Y1NjU1YTg3M2ViZDIy
ZDZiMDA2YWUwZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRD
aGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBXZWJFZGl0b3JDbGllbnQoV2ViUGFnZSogcGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKaW5kZXggMzBmNWFkNmI0YmMyYTYzOGQ2MDM3Zjhl
Yzk3MzgwOWRmNmU1NmIxOC4uMzVhMzFmYzJhMzQ0YjMxMjg3MzA1MDRiN2ZlN2ExMTVmMDExYjg4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViUGFnZSYg
cGFnZSkKICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
aW5kZXggN2NkYWFjZDFmYzFkNDZkNjVlYWRjM2YzYTYxMzRhYTM1NThhMmQxMS4uZDY3YjYyYzAy
ZTY4ODNiNDQ4NjVmYmExNTg1MTZlYTBjYmNiNWM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1Bh
aW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfQogCiAgICAgaWYgKCFtX3BhaW50
SW5kaWNhdG9yTGF5ZXJDbGllbnQpCi0gICAgICAgIG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwYWludEluZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7
CisgICAgICAgIG1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCA9IG1ha2VVbmlxdWU8UmVwYWlu
dEluZGljYXRvckxheWVyQ2xpZW50PigqdGhpcyk7CiAKICAgICBhdXRvIHBhaW50TGF5ZXIgPSBH
cmFwaGljc0xheWVyOjpjcmVhdGUobV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5ncmFwaGljc0xheWVy
RmFjdG9yeSgpLCAqbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50KTsKICAgICAKQEAgLTE2Miw5
ICsxNjIsOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2hvd1BhaW50UmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAgICAgcGFpbnRMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9y
KDEuMGYsIDAuMGYsIDAuMGYsIDAuMmYpKTsKIAogICAgIEtleWZyYW1lVmFsdWVMaXN0IGZhZGVL
ZXlmcmFtZXMoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOwotICAgIGZhZGVLZXlmcmFtZXMuaW5z
ZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkpOworICAgIGZh
ZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwgMSkp
OwogCi0gICAgZmFkZUtleWZyYW1lcy5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1h
dGlvblZhbHVlPigwLjI1LCAwKSk7CisgICAgZmFkZUtleWZyYW1lcy5pbnNlcnQobWFrZVVuaXF1
ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLjI1LCAwKSk7CiAgICAgCiAgICAgYXV0byBvcGFjaXR5
QW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKICAgICBvcGFjaXR5QW5pbWF0aW9uLT5z
ZXREdXJhdGlvbigwLjI1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBmNWVjYzY0Yzky
M2YzODZjNTBlN2I1Mjk3N2VmYzA5OWUwYmNmYWQ2Li4yN2MzZWUxNDJlMTYxNmU0MzVmNDhkNDFm
MjcyNzE1ZmU4ZTAzODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ7CiAK
IGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnQsIHByaXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBmcmllbmQgY2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50
OwogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQYWdlKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IDUzM2JlODQwY2FkNzE0NTU1
ZGFmMGFhMjA3MjhhM2M5MzM1NWM5YmUuLjRiYjM3ZmRkNjA3Nzc0ZWQ4MDlhOTY3YTc3NTE1ZmJh
ZmI2ZWY2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
CkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmlj
YXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOb3RpZmljYXRpb25DbGllbnQuaAppbmRleCAxNjM3YWQxMDk3ZDc2NDllNTBkZjc0ZjVlMDYy
MjcyNzFmYWI4NDVhLi4wMGNjMGEwOGQ5MjYwNGZkZGZiNWNhNjJmNmI4ODU5NWMzMWFiMGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90
aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlBhZ2Uq
KTsKICAgICB2aXJ0dWFsIH5XZWJOb3RpZmljYXRpb25DbGllbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJp
ZGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0
ZWJvYXJkT3ZlcnJpZGVzLmNwcAppbmRleCA3OTAwODRjZTQ4ZDIyNmIxMGU2NjViODI4NDQzNDlm
ZGFhZmZlZTQ2Li42OWYwYWU4Mjc5NTA3YjcyOTY1ZjY1YzIxNjg3M2M0ODFhZGY0ZDYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVi
b2FyZE92ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQg
V2ViUGFzdGVib2FyZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX292ZXJyaWRlc01hcC5h
ZGQocGFzdGVib2FyZE5hbWUsIG51bGxwdHIpOwogCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVp
bnQ4X3Q+Pj4gdHlwZU1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZlY3Rv
cjx1aW50OF90Pj4+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywg
VmVjdG9yPHVpbnQ4X3Q+Pj4gdHlwZU1hcCA9IG1ha2VVbmlxdWU8SGFzaE1hcDxTdHJpbmcsIFZl
Y3Rvcjx1aW50OF90Pj4+KCk7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBX
VEZNb3ZlKHR5cGVNYXApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCmluZGV4IGY2ZTAxNDk1
N2VkYzI3N2RiOTgzNzMxMjdlYzEwNjNlOTM1NThjYjguLmNmOTBhNWRmY2ZkYTYzZWNiOTg5N2Nj
NjZkMGQ0ODEyOTQ0ODEzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQbHVnSW5DbGll
bnQgOiBwdWJsaWMgV2ViQ29yZTo6UGx1Z0luQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQbHVnSW5DbGllbnQoV2ViUGFnZSYp
OwogICAgIHZpcnR1YWwgfldlYlBsdWdJbkNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJh
Y2tlckNsaWVudC5oCmluZGV4IDVkZDY1YmZhMGQ1MGNjZmRiMTQ2MWZlYjNmZTUyNDFmY2FhMGZi
YTYuLjYzZDc3NGU1YTk0MjdjNzM1YjUyNDkwYmQwMWNkNzlhYjc0YTEwZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQcm9ncmVzc1RyYWNrZXJD
bGllbnQoV2ViUGFnZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5o
CmluZGV4IGVhZDE3ZDMwZjA1OTBkNzQ0NjcyMDU1Y2FkNzdkOTVjNmQwYTQ3NzAuLjdiZDg3NTkw
NWE2NWM3N2Q5NmMzZjc4ODQwMDE4NTgyY2ZhZjc2YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3lu
dGhlc2lzQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlOwogICAgIAogY2xhc3MgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50KFdlYlBhZ2UmIHBh
Z2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKaW5kZXgg
MTA5MzA0NTNjZTc5N2VkZDkwZGU3NmYwMzU0YjlhMWQ0MDZmMmU2ZS4uNjk1MjE3NGI5MTJjOTcx
ZTM1Nzg2ZTI3YzQ4MjI1ZDJmY2ExNDAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaApAQCAt
MjksNiArMjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNz
IFdlYlVzZXJNZWRpYUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVkaWFDbGllbnQgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYlVzZXJNZWRpYUNs
aWVudChXZWJQYWdlJik7CiAgICAgfldlYlVzZXJNZWRpYUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9U
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaAppbmRleCAwMGExZTJlOGUyNjMzNTYzYzMwNjk5
OGRkMTVhMjE4Yjk2ZDE2NTEyLi4wNzQxM2NmYzkzOTg1ZmU1ZDk5ZTk0MDY4ZjE2MTVmNGIyNDRj
NjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9U
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaApAQCAtNDcsNiAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFRleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5KFdlYlBhZ2UmKTsKICAgICB+VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggOWNmZmNjOWE5ZmQyYjY0NDQ5MjJmODU0YWQ5
N2QxZDMzMWU3MGIwZS4uYjI0NTgxYzk3ZTdhODgxNmY0NmFmOTMxOWE5MWVhMjFiNzJiZDY2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFD
b29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQgRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKEdy
YXBoaWNzTGF5CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldExheWVyRmx1c2hTY2hl
ZHVsaW5nRW5hYmxlZCh0cnVlKTsKICAgICB9IGVsc2UgewogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXll
clRyZWVIb3N0PihtX3dlYlBhZ2UpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBtYWtlVW5p
cXVlPExheWVyVHJlZUhvc3Q+KG1fd2ViUGFnZSk7CiAjZWxzZQogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggYzA3Mzk2ZjAyZjFmYTY1ZjQ1
YWNlZTcyZjEzNGY0ZmIyZDllODkwOS4uNTM1OGNkNjg2M2IzMjI2OTU4ZWUyNzRlZmQwMzJhZDIw
MDY0ZGQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJl
YT4gRHJhd2luZ0FyZWE6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY2FzZSBE
cmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0
ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlmCiAgICAgY2FzZSBEcmF3aW5nQXJl
YVR5cGVSZW1vdGVMYXllclRyZWU6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBh
cmFtZXRlcnMpOwogI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSB8fCBVU0UoVEVYVFVS
RV9NQVBQRVIpCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVDb29yZGluYXRlZEdyYXBoaWNzOgot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxE
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2Vu
ZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuaAppbmRleCAwZjI2NDAzZWJiNzBhODExYjE4ZTk4Nzk1ZTE5ZGU3NzQwYmU4
MzYwLi4xYTUzNWYxN2Q5N2Y2NjY4Mzk3MjY5YTg2ZTI4NTdiMjliOTcyYTI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKQEAgLTQ5
LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBG
aW5kQ29udHJvbGxlciA6IHByaXZhdGUgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRmlu
ZENvbnRyb2xsZXIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDQ1MmY1M2JjZWRjMDA0N2Y3MzNkMWMzNGJjZDc2NTEx
OTJjYjhiZTYuLjQ2ZThhYTA5OTg2NDVhOGNlNWQyZDdiOTU3Zjk5YWZkYzM4ZjQ2ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC0yMjAs
NyArMjIwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tpbmdTdG9y
ZSgpCiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCk7CiAKICAg
ICBpZiAoIW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUpCi0gICAgICAgIG1fcHJvcGVydGllcy5i
YWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPih0
aGlzKTsKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8UmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOwogCiAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7
CiB9CkBAIC01MjEsNyArNTIxLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjp0cmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKLSAg
ICBtX3Byb3BlcnRpZXMudHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4odmFsdWUpOworICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9w
ZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VHJhbnNmb3JtQ2hhbmdl
ZCk7CiB9CiAKQEAgLTUzMiw3ICs1MzIsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB2YWx1ZSkKIHsKLSAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAgbV9wcm9w
ZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odmFsdWUpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OlN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCk7CiB9CiAKQEAg
LTczOCw3ICs3MzgsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0T3BhY2l0eShm
bG9hdCB2YWx1ZSkKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEZpbHRlcnMoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBtX3Byb3BlcnRpZXMuZmlsdGVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CisgICAgbV9w
cm9wZXJ0aWVzLmZpbHRlcnMgPSBtYWtlVW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KGZpbHRlcnMp
OwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKTsKIH0KIApAQCAtODI2LDcgKzgyNiw3IEBAIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHJvdW5kZWRSCiAgICAgaWYgKG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRS
ZWN0ICYmICptX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9PSByb3VuZGVkUmVjdCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICBtX3Byb3Bl
cnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVjdD4ocm91
bmRlZFJlY3QpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OlNoYXBlUm91bmRlZFJlY3RDaGFuZ2VkKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGls
ZWRCYWNraW5nLmNwcAppbmRleCAxY2JkMWI0YmE3OWE3ZGY5Y2U1NWUwNDIxZDQ0ZTY1YjQwODgy
MWMyLi4wOTk1MzZiOTNjMDExYWMzZjJhMDczYzNjYTQ2NGYwNzI2NDY5Y2YxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZv
cm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRC
YWNraW5nLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nOjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVU
aWxlZEJhY2tpbmcoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKICAgICA6IFBsYXRmb3JtQ0FM
YXllclJlbW90ZShsYXllclR5cGUsIG93bmVyLCBjb250ZXh0KQotICAgICwgbV90aWxlQ29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fdGls
ZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhpcykpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpp
bmRleCA1ZTUwZTBiYTFlZjEyNDZjNmFlMDhmMjlkOTJhODMwZTBkYjRmMjM3Li40NDQ2ZjM0ZDA0
Y2NmYmZiZWIzNjliYTQ0YzMyMDZiZjBkZDIzZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC01OCw3ICs1OCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdpbmdBcmVhKERyYXdpbmdB
cmVhVHlwZVJlbW90ZUxheWVyVHJlZSwgcGFyYW1ldGVycy5kcmF3aW5nQXJlYUlkZW50aWZpZXIs
IHdlYlBhZ2UpCi0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQoc3RkOjptYWtlX3VuaXF1
ZTxSZW1vdGVMYXllclRyZWVDb250ZXh0Pih3ZWJQYWdlKSkKKyAgICAsIG1fcmVtb3RlTGF5ZXJU
cmVlQ29udGV4dChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+KHdlYlBhZ2UpKQog
ICAgICwgbV9yb290TGF5ZXIoR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0
b3J5KCksICp0aGlzKSkKICAgICAsIG1fbGF5ZXJGbHVzaFRpbWVyKCp0aGlzLCAmUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKQogewpAQCAtNDIzLDcgKzQyMyw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0TGF5ZXJU
cmVlKGxheWVyVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpKSk7CiAKICAgICBNZXNzYWdlczo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1lc3NhZ2Uo
bGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwotICAgIGF1dG8gY29tbWl0
RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZlck5hbWUo
KSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVy
VHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBjb21taXRF
bmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNz
YWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpu
YW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBjb21taXRFbmNvZGVyLT5lbmNv
ZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwgYmFja2lu
ZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29s
bGVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCBhYWRlM2Q5ZjE4NDRk
N2YwNWMwOTIxOGQ4ZTIwNDRkNThhMmYwNWY4Li5iMmJkYzQxYjcyMzM2YmI2ZTQ4NDkwZjczMWIy
NDg1ZDI3MDc4MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC00MCw2ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3RvciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYpOwogICAgIH5WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
aW5kZXggZjBlYmZlZGJiMmU5NTNhZDBmYzA3ZjlmODE2NjA5ZGI5NzM1YjY2NS4uNTI5NjVmZTRj
NWJiMzVjNDlhZGEwNzAwM2IzMzcxNDM2YjcyNTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFJlZjxXZWJG
cmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdl
YkNvcmU6OkZyYW1lKiBjCiAKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1l
KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKLSAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFr
ZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOworICAgIGF1dG8gZnJhbWUgPSBjcmVh
dGUobWFrZVVuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CiAgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgp
KSk7CiAKICAgICBhdXRvIGNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2Uo
KSwgb3duZXJFbGVtZW50LCBmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudC5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDAxZmYxYTRm
NDU3ZTUzOTM1NjE0MzI0YTA5NDg4NDAzYTc1MDU1YTEuLjllMjBmMGFjYjIwYzJjM2ZlMGE4NmVh
M2ViOGYwOWI5YTUzZDIxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zODMsMjEgKzM4MywyMSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgLCBtX3RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eShtYWtlVW5pcXVlUmVmPFRleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eT4oKnRoaXMpKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFBMQVRGT1JNKEdUSykKLSAgICAsIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cihzdGQ6Om1ha2VfdW5pcXVlPFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I+KCp0aGlzKSkK
KyAgICAsIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihtYWtlVW5pcXVlPFZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I+KCp0aGlzKSkKICNlbGlmIEVOQUJMRShBQ0NFU1NJQklMSVRZ
KSAmJiBQTEFURk9STShHVEspCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlPYmplY3QobnVsbHB0cikK
ICNlbmRpZgogICAgICwgbV9zZXRDYW5TdGFydE1lZGlhVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmV2ViUGFnZTo6c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpKQorICAgICwgbV9j
b250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250
ZXh0TWVudUNsaWVudD4oKSkKICNlbmRpZgotICAgICwgbV9lZGl0b3JDbGllbnQgeyBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSB9Ci0gICAgLCBt
X2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xp
ZW50PigpKQotICAgICwgbV9sb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpKQotICAgICwgbV9yZXNvdXJjZUxvYWRDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGll
bnQ+KCkpCi0gICAgLCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZVVJQ2xpZW50PigpKQorICAgICwgbV9lZGl0b3JDbGllbnQgeyBtYWtlVW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSB9CisgICAgLCBtX2Zvcm1DbGll
bnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpKQorICAgICwg
bV9sb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVy
Q2xpZW50PigpKQorICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCkpCisgICAgLCBtX3VpQ2xpZW50KG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpKQogICAgICwgbV9m
aW5kQ29udHJvbGxlcihtYWtlVW5pcXVlUmVmPEZpbmRDb250cm9sbGVyPih0aGlzKSkKLSAgICAs
IG1faW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXRDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvclRhcmdldENv
bnRyb2xsZXIobWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRo
aXMpKQogICAgICwgbV91c2VyQ29udGVudENvbnRyb2xsZXIoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpnZXRPckNyZWF0ZShwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEKSkKICNp
ZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyKG1ha2VVbmlxdWVSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXI+KCp0aGlzKSkKQEAgLTQ2NCwyMSArNDY0LDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5wbHVnSW5DbGllbnQgPSBuZXcgV2ViUGx1Z0luQ2xpZW50
KCp0aGlzKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUg
PSBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jl
c3NUcmFja2VyQ2xpZW50ID0gbmV3IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudCgqdGhpcyk7Ci0g
ICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7Ci0gICAgcGFnZUNvbmZp
Z3VyYXRpb24ucGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQ
ZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5k
aWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQ+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5wZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQgPSBtYWtlVW5pcXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4oKnRoaXMpOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkdMU3RhdGVUcmFj
a2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4oW3RoaXNdKGJvb2wgaXNV
c2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdMKSB7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViR0xT
dGF0ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFdlYkdMU3RhdGVUcmFja2VyPihbdGhpc10oYm9vbCBp
c1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTZXRJc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0woaXNVc2luZ0hpZ2hQZXJm
b3JtYW5jZVdlYkdMKSk7CiAgICAgfSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRoZXNpc0NsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50PigqdGhpcyk7CisgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uc3BlZWNoU3ludGhlc2lzQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJTcGVl
Y2hTeW50aGVzaXNDbGllbnQ+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFdlYlZhbGlk
YXRpb25NZXNzYWdlQ2xpZW50PigqdGhpcyk7CiAjZW5kaWYKIAogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CkBAIC00OTMsMTQgKzQ5MywxNCBAQCBXZWJQYWdlOjpX
ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgcGFnZUNv
bmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0aGlzKTsKKyAgICBwYWdlQ29uZmln
dXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQ
TElDQVRJT05fTUFOSUZFU1QpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25NYW5p
ZmVzdCA9IHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdDsKICNlbmRpZgogCi0gICAgbV9w
YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7
CisgICAgbV9wYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
KSk7CiAKICAgICAvLyBTZXQgdGhlIHNlc3Npb25JRCAqYmVmb3JlKiB1cGRhdGluZyB0aGUgcHJl
ZmVyZW5jZXMgYXMgdGhlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgcHJlZmVyZW5jZXMgbWF5IG5l
ZWQgdG8gb3ZlcnJpZGUgaXQuCiAgICAgaWYgKHBhcmFtZXRlcnMuc2Vzc2lvbklELmlzVmFsaWQo
KSkKQEAgLTg1Myw3ICs4NTMsNyBAQCB1aW50NjRfdCBXZWJQYWdlOjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29udGV4
dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250
ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0TWVudUNsaWVudCkKIHsKICAgICBpZiAoIWNvbnRleHRN
ZW51Q2xpZW50KSB7Ci0gICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsKKyAgICAg
ICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04
NjQsNyArODY0LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnUKIHZvaWQgV2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OkVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQpCiB7CiAgICAgaWYgKCFlZGl0b3JD
bGllbnQpIHsKLSAgICAgICAgbV9lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKKyAgICAgICAgbV9lZGl0b3JDbGllbnQg
PSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtODc0LDcgKzg3NCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4mJiBmb3JtQ2xpZW50KQog
ewogICAgIGlmICghZm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7CisgICAgICAgIG1f
Zm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODg0LDcgKzg4NCw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklu
amVjdGVkQnVuZGxlOjpGCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNs
aWVudD4mJiBsb2FkZXJDbGllbnQpCiB7CiAgICAgaWYgKCFsb2FkZXJDbGllbnQpIHsKLSAgICAg
ICAgbV9sb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CisgICAgICAgIG1fbG9hZGVyQ2xpZW50ID0gbWFrZVVuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBXZWJQYWdlOjppbml0aWFsaXpl
SW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50QmFzZSoK
IHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4mJiBjbGll
bnQpCiB7CiAgICAgaWYgKCFtX3Jlc291cmNlTG9hZENsaWVudCkKLSAgICAgICAgbV9yZXNvdXJj
ZUxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291
cmNlTG9hZENsaWVudD4oKTsKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZShjbGllbnQpOwogfQpAQCAt
OTEzLDcgKzkxMyw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxv
YWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCCiB2b2lkIFdlYlBhZ2U6OnNl
dEluamVjdGVkQnVuZGxlVUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OlBhZ2VVSUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7Ci0g
ICAgICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlBhZ2VVSUNsaWVudD4oKTsKKyAgICAgICAgbV91aUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xNDEwLDE0ICsxNDEwLDE0IEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+
KCk7CisgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCi0gICAgbV9lZGl0b3JDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4o
KTsKLSAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkZvcm1DbGllbnQ+KCk7Ci0gICAgbV9sb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CisgICAgbV9lZGl0b3JD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKTsK
KyAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1D
bGllbnQ+KCk7CisgICAgbV9sb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRC
dW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CiAgICAgbV9wb2xpY3lDbGllbnQuaW5pdGlhbGl6
ZSgwKTsKLSAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwotICAgIG1fdWlDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKKyAg
ICBtX3Jlc291cmNlTG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UmVzb3VyY2VMb2FkQ2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiAgICAgbV9mdWxsU2NyZWVuQ2xpZW50LmluaXRpYWxpemUoMCk7CiAjZW5kaWYKQEAgLTQ2
OTYsNyArNDY5Niw3IEBAIHZvaWQgV2ViUGFnZTo6YmVnaW5QcmludGluZyhGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiAjZW5kaWYKIAogICAgIGlm
ICghbV9wcmludENvbnRleHQpIHsKLSAgICAgICAgbV9wcmludENvbnRleHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKKyAgICAgICAgbV9wcmludENvbnRleHQg
PSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oY29yZUZyYW1lKTsKICAgICAgICAgbV9wYWdlLT5k
aXNwYXRjaEJlZm9yZVByaW50RXZlbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwCmluZGV4IDczNTY2YTEzMzg1ZGUzYWFjNjQ2ZmI5NDk2YmRkYWZjYjVhZjQ2YjYuLjMxZWZm
MTFmN2FlMGEzZWI4Y2ZiYjZmZjJiM2RiYTUxNjI0YzFlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9u
R3RrLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBAIGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrV2lu
MzIgZmluYWw6IHB1YmxpYyBXZWJQcmludE9wZXJhdGlvbkd0ayB7CiAjZW5kaWYKIAogc3RydWN0
IFByaW50UGFnZXNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgUHJpbnRQYWdlc0RhdGEoV2ViUHJpbnRPcGVyYXRpb25HdGsqIHByaW50T3BlcmF0aW9uKQog
ICAgICAgICA6IHByaW50T3BlcmF0aW9uKHByaW50T3BlcmF0aW9uKQogICAgICAgICAsIHRvdGFs
UHJpbnRlZCgtMSkKQEAgLTcyNiw3ICs3MjcsNyBAQCB2b2lkIFdlYlByaW50T3BlcmF0aW9uR3Rr
OjpwcmludChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGRvdWJsZSB4RFBJLCBkb3VibGUgeQog
ewogICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7CiAKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5p
cXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKICAgICBpZiAoIWRhdGEtPmlzVmFsaWQpIHsKICAg
ICAgICAgY2Fpcm9fc3VyZmFjZV9maW5pc2goc3VyZmFjZSk7CiAgICAgICAgIHByaW50RG9uZShp
bnZhbGlkUGFnZVJhbmdlVG9QcmludChmcmFtZVVSTCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5k
ZXggOWFiYjJhNzkyOTlkNTk2YjkxZTZlZjYxY2E0M2VmODYxOTBhOTA0OS4uOTM0MThhYjIxZDc0
ZmM5NDU4YTAyMjRlNGNiNDhhNzM0MTc4MDlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTgs
NyArOTgsNyBAQCBib29sIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1l
JiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2luZ092ZQogICAgIGlmICghdGV4dEluZGljYXRv
cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9maW5kSW5kaWNhdG9yT3ZlcmxheUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M+KHNl
bGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0KCkpOworICAgIG1fZmluZEluZGljYXRvck92
ZXJsYXlDbGllbnQgPSBtYWtlVW5pcXVlPEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TPihz
ZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdldCgpKTsKICAgICBtX2ZpbmRJbmRpY2F0b3JS
ZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0SW5kaWNhdG9yLT5zZWxlY3Rpb25SZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKCkpOwogICAgIG1fZmluZEluZGljYXRvck92ZXJsYXkgPSBQYWdlT3Zl
cmxheTo6Y3JlYXRlKCptX2ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50LCBQYWdlT3ZlcmxheTo6
T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnBhZ2VP
dmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheSgqbV9maW5kSW5kaWNhdG9yT3Zl
cmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05vdEZhZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0b3JPdmVybGF5Q2xp
ZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGlj
YXRvck92ZXJsYXlDbGllbnRJT1MuaAppbmRleCA1MzViODRmYjY0MjlhOTdmMGM5OGE4ZWFjMTg1
ZDlkZjJlZTk0ODU0Li4wMTVlMzJkYjE4OTNlNmEwNjJkOWUzYTdjYTBkYzUyZTk0NmRkMGE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGlj
YXRvck92ZXJsYXlDbGllbnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1MuaApAQCAtMzQsNiArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50
SU9TIDogcHVibGljIFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50
SU9TKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgV2ViQ29yZTo6VGV4dEluZGljYXRvciogdGV4dElu
ZGljYXRvcikKICAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKaW5kZXggOTA2
ODdjOTc0YWNmMzNkODJiOGM2NGI5NDhlNmVlOWEzMGVlMmU5Yy4uMDZmY2M0NzE1OTNlYjc4ZWRl
YmZjYzYzZjg5NDRiM2RmYWU5ZGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkK
ICAgICBpZiAoIW1faGFzU2VudE1lc3NhZ2UpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpTdGFydERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCkpLCAwKTsK
ICAgICAgICAgbV9oYXNTZW50TWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIG1fcnVuTG9vcE9ic2Vy
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwg
W3RoaXNdKCkgeworICAgICAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9v
cE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50cnksIFt0aGlzXSgpIHsKICAgICAgICAgICAgIHRoaXMt
Pm1fZmlyc3RDYWxsYmFja0luQ3VycmVudFJ1bmxvb3AgPSB0cnVlOwogICAgICAgICB9KTsKICAg
ICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXItPnNjaGVkdWxlKENGUnVuTG9vcEdldEN1cnJlbnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZGY2MDAzNjQ1
OThmMTM0NjI5ZGFiNjI3MDZlYWY2ODYxZTVmZjMzZC4uNGNiM2RmOWFlYTUyOWVmZjUyNjMzNmM4
MWYxMzAyMDQ1YmEzZTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQpAQCAtODcsNyArODcsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgYwogICAgIFttX2hv
c3RpbmdMYXllciBzZXRPcGFxdWU6WUVTXTsKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0R2VvbWV0
cnlGbGlwcGVkOllFU107CiAKLSAgICBtX2xheWVyRmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRl
eD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwg
W3RoaXNdKCkgeworICAgIG1fbGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CiAg
ICAgICAgIHRoaXMtPmxheWVyRmx1c2hSdW5Mb29wQ2FsbGJhY2soKTsKICAgICB9KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDc2MDA1NTBjNWNhODg2MGQ2
ZTc2Y2ZlN2JmOTQ2NDY3YjdhZGEyMTMuLjQ3N2E3MWVjNmM5NDk2MDA1MzlhM2U4Y2JjMGU1OGRk
ZGYzZGVkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1
NTksNyArMTU1OSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxlKFdU
Rjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgQVNTRVJUKCFtX3Bh
Z2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIpOwogICAgIG1fY291bnRPZlBhZ2VzRmFp
bGluZ1RvTWFya1ZvbGF0aWxlID0gMDsKIAotICAgIG1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0
aWxlQ291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxl
Q291bnRlcj4oW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChSZWZDb3VudGVyRXZlbnQpIHsKKyAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xh
dGlsZUNvdW50ZXIgPSBtYWtlVW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50
ZXI+KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoUmVmQ291bnRlckV2ZW50KSB7CiAgICAgICAgIGlmIChtX3BhZ2VNYXJraW5nTGF5ZXJzQXNW
b2xhdGlsZUNvdW50ZXItPnZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE4MDgs
NyArMTgwOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFz
SW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2CiAKIHZvaWQgV2ViUHJvY2Vzczo6
ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eShjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGlm
aWVyKQogewotICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOworICAgIG1fYXV0
b21hdGlvblNlc3Npb25Qcm94eSA9IG1ha2VVbmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eT4oc2Vzc2lvbklkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lBdXRv
bWF0aW9uU2Vzc2lvblByb3h5KCkKQEAgLTE4NDEsNyArMTg0MSw3IEBAIGJvb2wgV2ViUHJvY2Vz
czo6aGFzVmlzaWJsZVdlYlBhZ2UoKSBjb25zdAogTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vz
czo6bGliV2ViUlRDTmV0d29yaygpCiB7CiAgICAgaWYgKCFtX2xpYldlYlJUQ05ldHdvcmspCi0g
ICAgICAgIG1fbGliV2ViUlRDTmV0d29yayA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDTmV0
d29yaz4oKTsKKyAgICAgICAgbV9saWJXZWJSVENOZXR3b3JrID0gbWFrZVVuaXF1ZTxMaWJXZWJS
VENOZXR3b3JrPigpOwogICAgIHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQogCkBAIC0x
ODUyLDcgKzE4NTIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlRwogICAgIC8vIGJ5IGNhbGxp
bmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRz
IHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAv
LyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4K
ICAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENv
bm5lY3Rpb24oc3RkOjptYWtlX3VuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4o
aXBjQ29ubmVjdGlvbiwgcGFnZUdyb3VwSUQsIHBhZ2VJRCwgc3RvcmUpKTsKKyAgICBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCBwYWdlSUQs
IHN0b3JlKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBjNTkxNTU5YjBj
N2MyNWYzMjJlODQ5NTAwMzlhOThjNzkyNjlhNDkzLi42MWFmMzFiNjU5Yjg3YWZkNDBkY2VhODU5
MjQ2NzQzMzcwN2YxYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAg
LTEzNCw2ICsxMzQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAgICAgLCBQcm9jZXNzVGFza1N0YXRl
T2JzZXJ2ZXI6OkNsaWVudAogI2VuZGlmCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlByb2Nlc3MmIHNpbmdsZXRvbigpOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGUgPSBQcm9jZXNzVHlwZTo6V2ViQ29u
dGVudDsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBjbGFzcyBXZWJQcm9jZXNzCiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAgIG1f
c3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4o
KnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwg
bWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJv
Y2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25u
ZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAyNzIwYjg2ZmNkMmZmZWU2
MDIyZjVhZDVlZWQ1MGJjZjM2OTJkN2Y4Li45YWYwMGVlOGFhMGYxY2Q4NDBhODE3Mzc5MGZhMDYy
MzAwNDZmZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3Mg
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291
cmNlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXZpY2VUeXBlICE9IENhcHR1cmVEZXZpY2U6
OkRldmljZVR5cGU6OlVua25vd24pOwogICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpBdWRpbykK
LSAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVy
PihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJTdG9yYWdlPihudWxscHRyKSk7CisgICAg
ICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1
ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOwogICAgIH0KIAogICAgIH5T
b3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuaAppbmRleCBiYWVkMGNkOWUwOWI0OWQyMjFlOTQwMThmNjQ5
ZmU2ZGJjZjkyNTE5Li5jMWQ0M2ZjYjNhZjU4NDE0NTNhZDM0MzRjN2NmOTNlYmZjOWU3ZWY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXIuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBDcm9zc1Byb2Nlc3NSZWFs
dGltZUF1ZGlvU291cmNlOwogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xhc3MgVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6OkF1ZGlvQ2FwdHVyZUZhY3RvcnksIHB1Ymxp
YyBXZWJDb3JlOjpWaWRlb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUNh
cHR1cmVGYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlcihXZWJQcm9jZXNzJik7CiAgICAgflVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBiNDdkMWQ4YWZhMDNmZWQzNmRlY2FkOTg5
ZDcyZGJjNDE4NDg3ZjU5Li4zYjkwNmE4MGM1YWQ4ZjY5YmVmNzdmOWE4Yzc2NGFmODA5ZjQ5NTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0KQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NUYXNrU3Rh
dGVEaWRDaGFuZ2UoUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyOjpUYXNrU3RhdGUgdAogCiAgICAg
Ly8gV2Ugd2VyZSBhd2FrZW5lZCBmcm9tIHN1c3BlbnNpb24gdW5leHBlY3RlZGx5LiBOb3RpZnkg
dGhlIFdlYlByb2Nlc3NQcm94eSwgYnV0IHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBvdXIg
cGFyZW50IFBJRAogICAgIC8vIHRvIGVuc3VyZSB0aGF0IGl0IHRvbyBpcyBhd2FrZW5lZC4KLSAg
ICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2Vy
dGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCksICJVbmV4
cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kLCBBc3NlcnRpb25S
ZWFzb246OkZpbmlzaFRhc2spOworICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0aW9uID0gbWFrZVVu
aXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5yZW1vdGVQ
cm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVkIiwgQXNzZXJ0aW9uU3RhdGU6OkJhY2tn
cm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFzayk7CiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OlByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpLCBbdWlQcm9jZXNzQXNzZXJ0aW9u
ID0gV1RGTW92ZSh1aVByb2Nlc3NBc3NlcnRpb24pXSB7IH0pOwogfQogI2VuZGlmCkBAIC02MjAs
NyArNjIwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9u
aXRvclVwZGF0ZVJlYXNvbiByZWFzb24pCiAgICAgfQogCiAgICAgaWYgKCFtX2NwdU1vbml0b3Ip
IHsKLSAgICAgICAgbV9jcHVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDUFVNb25pdG9yPihj
cHVNb25pdG9yaW5nSW50ZXJ2YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2UpIHsKKyAgICAgICAg
bV9jcHVNb25pdG9yID0gbWFrZVVuaXF1ZTxDUFVNb25pdG9yPihjcHVNb25pdG9yaW5nSW50ZXJ2
YWwsIFt0aGlzXShkb3VibGUgY3B1VXNhZ2UpIHsKICAgICAgICAgICAgIGlmIChtX3Byb2Nlc3NU
eXBlID09IFByb2Nlc3NUeXBlOjpTZXJ2aWNlV29ya2VyKQogICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgIiVwIC0gU2VydmljZSB3b3JrZXIgcHJv
Y2VzcyBleGNlZWRlZCBDUFUgbGltaXQgb2YgJS4xZiUlICh3YXMgdXNpbmcgJS4xZiUlKSIsIHRo
aXMsIG1fY3B1TGltaXQudmFsdWUoKSAqIDEwMCwgY3B1VXNhZ2UgKiAxMDApOwogICAgICAgICAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNN
YW5hZ2VyLmNwcAppbmRleCAzNjkwOTVjZGFkMWQzNDcxMWEwNjc2ZDg3MzZhOTBlMTkzZTI5MDVl
Li4yMjhmNGEzNmQ0YjBmMjIyYzE3ODYwZDBiYzQ5OGMxZjllMDg5YTIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBSZWY8U3RvcmFnZVN5bmNNYW5hZ2VyPiBTdG9yYWdlU3luY01hbmFnZXI6OmNy
ZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB9CiAKIFN0b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFn
ZVN5bmNNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCkKLSAgICA6IG1fdGhyZWFkKHN0ZDo6bWFr
ZV91bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICA6IG1fdGhyZWFkKG1ha2VVbmlxdWU8U3Rv
cmFnZVRocmVhZD4oKSkKICAgICAsIG1fcGF0aChwYXRoLmlzb2xhdGVkQ29weSgpKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRocmVhZC5jcHAKaW5kZXggNDQzOTM4Mjk1ZjRlMWMyOWRkMDQ4NmI0MzFiYTdmZWEz
NTI5ZDE2ZC4uOWM3NTE0ZTM0NjJjNGI0ZDhhODU2MDVlZDAyOWRiZDE5MjVkNmIxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYg
ZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1f
cXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWQpOwotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgbV9x
dWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlv
bikpKTsKIH0KIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQpAQCAtODcsNyArODcs
NyBAQCB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAgICAgaWYgKCFtX3RocmVhZCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxG
dW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKKyAgICBtX3F1ZXVlLmFwcGVuZChtYWtlVW5pcXVl
PEZ1bmN0aW9uPHZvaWQgKCk+PihbdGhpc10gewogICAgICAgICBwZXJmb3JtVGVybWluYXRlKCk7
CiAgICAgfSkpOwogICAgIG1fdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggYjkzNGQxYTNi
MWJhYTgzMWFkZGYzYWJlNWUwNzcwYWIxY2Y3N2ZhMi4uODA2Y2IwOTk1ZDBhMDdjNzE4MjcxZDIx
MDUwNzAzOThjNDAzYmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFN0b3JhZ2VUcmFja2VyJiBTdG9yYWdl
VHJhY2tlcjo6dHJhY2tlcigpCiBTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIoY29uc3Qg
U3RyaW5nJiBzdG9yYWdlUGF0aCkKICAgICA6IG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoc3RvcmFn
ZVBhdGguaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2NsaWVudCgwKQotICAgICwgbV90aHJlYWQo
c3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQorICAgICwgbV90aHJlYWQobWFrZVVu
aXF1ZTxTdG9yYWdlVGhyZWFkPigpKQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1f
bmVlZHNJbml0aWFsaXphdGlvbihmYWxzZSkKICAgICAsIG1fU3RvcmFnZURhdGFiYXNlSWRsZUlu
dGVydmFsKGRlZmF1bHRTdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcC5jcHAKaW5kZXggNDNlYTQ1ZGFlODkyMDZjODI5YTUxNGQ0ZGE4ZTNkMWM5N2Nj
MTI4NC4uODUxY2MxMDE3ZGVkMDBjMDZkNDZkMmM4NTlkNzAwMDBiNmQ3MmQ1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3RvcmFnZVNlc3Npb24o
Y29uc3QgUAogV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCiB7CiAgICAgaWYgKCFkZWZhdWx0TmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICAgICAgZGVmYXVsdE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIHJldHVybiAq
ZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogfQogCkBAIC03NCw3ICs3NCw3IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkK
ICAgICAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9u
Q29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQoKSkpOwog
ICAgIH0KIAotICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2Up
KTsKKyAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CiAjZW5kaWYK
IH0KIApAQCAtMTAwLDExICsxMDAsMTEgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6
OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY28KICAgICAg
ICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNv
b2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsK
ICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9y
YWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4o
c2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdl
KSk7CiAKICNlbGlmIFVTRShDVVJMKQogICAgIGdsb2JhbFNlc3Npb25NYXAoKS5lbnN1cmUoc2Vz
c2lvbklELCBbc2Vzc2lvbklEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklEKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOwog
ICAgIH0pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDE4NzZi
OTYwYjk0NzA4MTRjMzUwYmM1OTI2YTRjODFhZWRmMzkwMjMuLjdiODY5ODFhM2Y0OGU1MGY4YjNj
Y2FjMzcwNjkxN2Q0YWYxZmRiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2Yv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC0x
NTksNSArMTU5LDUgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0b3JDbGkKICAgICAgICAgICAgIGRlbGV0
ZVNldHRpbmcobmFtZSk7CiAgICAgICAgIH0KICAgICB9OwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElP
Uy5oCmluZGV4IDNiMWE0NTA3MDc4ZmE0Y2MwNjhlNzQwMzAzMjIxMjM5YjJhZDcxMjMuLjE0NTc3
MjIyYTllMTNlNjNlNDkxZDZkM2I5MmNhMWJjODllN2NiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudElP
Uy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJXZWJDaHJvbWVDbGllbnQuaCIKIAogY2xh
c3MgV2ViQ2hyb21lQ2xpZW50SU9TIGZpbmFsIDogcHVibGljIFdlYkNocm9tZUNsaWVudCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50
SU9TKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogV2ViQ2hyb21lQ2xpZW50KHdlYlZpZXcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aXhlZFBvc2l0aW9uQ29udGVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCmluZGV4IDIxN2E0ZWQwYTg1YTZiYjQx
NGQzMTk0Y2I3YmZhZWZkZTAzNmQ0N2EuLmFmZTExYTgwYjlmMWM5Y2U3NmEzNTYyZmE2M2M0NWJm
NzFkMTFkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tCkBAIC01Miw2ICs1
Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBzdGF0aWMgTG9jayB3ZWJGaXhlZFBvc2l0aW9u
Q29udGVudERhdGFMb2NrOwogCiBzdHJ1Y3QgVmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YSB7
CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFZpZXdwb3J0Q29uc3Ry
YWluZWRMYXllckRhdGEoKQogICAgICAgICA6IG1fZW5jbG9zaW5nQWNjZWxlcmF0ZWRTY3JvbGxM
YXllcihuaWwpCiAgICAgeyB9CkBAIC02Miw2ICs2Myw3IEBAIHN0cnVjdCBWaWV3cG9ydENvbnN0
cmFpbmVkTGF5ZXJEYXRhIHsKIHR5cGVkZWYgSGFzaE1hcDxSZXRhaW5QdHI8Q0FMYXllcj4sIHN0
ZDo6dW5pcXVlX3B0cjxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhPj4gTGF5ZXJJbmZvTWFw
OwogCiBzdHJ1Y3QgV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRml4ZWRQb3NpdGlvbkNvbnRl
bnREYXRhKFdlYlZpZXcgKik7CiAgICAgfldlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YSgpOwpA
QCAtMTc4LDcgKzE4MCw3IEBAIC0gKHZvaWQpc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczoo
V1RGOjpIYXNoTWFwPENBTGF5ZXIgKiwgc3RkOjp1bmlxdWVfcHRyPFdlCiAKICAgICBmb3IgKGF1
dG8mIGxheWVyQW5kQ29uc3RyYWludHMgOiBsYXllck1hcCkgewogICAgICAgICBDQUxheWVyKiBs
YXllciA9IGxheWVyQW5kQ29uc3RyYWludHMua2V5OwotICAgICAgICBhdXRvIGxheWVyRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YT4oKTsKKyAgICAg
ICAgYXV0byBsYXllckRhdGEgPSBtYWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRh
dGE+KCk7CiAKICAgICAgICAgbGF5ZXJEYXRhLT5tX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Nyb2xs
TGF5ZXIgPSBzdGlja3lDb250YWluZXJzLmdldChsYXllcik7CiAgICAgICAgIGxheWVyRGF0YS0+
bV92aWV3cG9ydENvbnN0cmFpbnRzID0gV1RGTW92ZShsYXllckFuZENvbnN0cmFpbnRzLnZhbHVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRl
eCBhOGI2YTA0MzkzZWMwMDAxNDY1MzhkNGNmNjViZDY0MGM3NGJkOTAxLi41YWQ4MWI0YTNiNDli
NWQwNjM5MzY1NjgzYTFiY2Y1ZDU3ZWYzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgLSAoaWQpaW5pdAog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIF9lbnRyaWVzQnlEYXRlID0gc3RkOjptYWtl
X3VuaXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOworICAgIF9lbnRyaWVzQnlEYXRlID0gbWFrZVVu
aXF1ZTxEYXRlVG9FbnRyaWVzTWFwPigpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBi
NzM5NTkzNWU1MTBiZjNiN2YwYzQ4ZWRkNDM2YzU4YmJjNDgxZDhlLi44NmY5ZDNkNDIyMzg0NmJj
OTVjYmM5NTY0NWExY2E3MzIwYWZlMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTM0OCw3ICszNDgsNyBAQCAtIChpZClp
bml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAg
ICAgICBjb3JlKF9wcml2YXRlKS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKICAgICAK
ICAgICBpZiAoTlNBcnJheSAqcmVkaXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZvcktl
eTpyZWRpcmVjdFVSTHNLZXldKSB7Ci0gICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byByZWRpcmVj
dFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICByZWRp
cmVjdFVSTHNWZWN0b3ItPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW3JlZGlyZWN0VVJMcyBjb3Vu
dF0pOwogCiAgICAgICAgIGZvciAoaWQgcmVkaXJlY3RVUkwgaW4gcmVkaXJlY3RVUkxzKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCmluZGV4IGUxN2M3ODgxYTUxN2YwYzM1NWY4
NzU2OWI2MGRhM2YyMTVhMWViYTcuLmY1ZTdmYmNmMTJlNDdmOTBkZWVmMWVhMmNmZWI3MTc0MjY4
ODBhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC00OTMsNyArNDkz
LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkobWFjaF9w
b3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGwKICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAg
ICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJy
ZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94eTo6R2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHk+KG9iamVjdElEKSk7CisgICAgaW5z
dGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmplY3RJ
RCkpOwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBr
ZXJuX3JldHVybl90IFdLUENCb29sZWFuUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWlu
dDMyX3QgcGx1Z2luSUQsIHVpbnQzMgogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAgICAg
cmV0dXJuIEtFUk5fRkFJTFVSRTsKICAgICAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50
UmVwbHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6Qm9vbGVhblJlcGx5PihyZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJy
ZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6Qm9vbGVhblJlcGx5PihyZXN1bHQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQog
CkBAIC01MjgsNyArNTI4LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhbkFuZERhdGFSZXBs
eShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW5JRCwKICAgICAgICAgcmV0
dXJuIEtFUk5fRkFJTFVSRTsKIAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VsdCA9IGFk
b3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHREYXRh
KSwgcmVzdWx0TGVuZ3RoKSk7Ci0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJl
cXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJv
b2xlYW5BbmREYXRhUmVwbHk+KHJldHVyblZhbHVlLCByZXN1bHQpKTsKKyAgICBpbnN0YW5jZVBy
b3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eTo6Qm9vbGVhbkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkp
OwogICAgIAogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CkBAIC01NDUsNyArNTQ1LDcgQEAg
a2Vybl9yZXR1cm5fdCBXS1BDSW5zdGFudGlhdGVQbHVnaW5SZXBseShtYWNoX3BvcnRfdCBjbGll
bnRQb3J0LCB1aW50MzJfdCBwbHVnaW4KICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAg
IHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVw
bHkocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0YXRp
Y19jYXN0PFJlbmRlcmVyVHlwZT4ocmVuZGVyZXJUeXBlKSkpOworICAgIGluc3RhbmNlUHJveHkt
PnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpJbnN0YW50aWF0ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJ
RCwgc3RhdGljX2Nhc3Q8UmVuZGVyZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CiAgICAgcmV0dXJu
IEtFUk5fU1VDQ0VTUzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
aAppbmRleCAxMGEwOGU5NTBhM2RjMGM5MzY3MWYxZmMxYzc0Yzk0Nzc5M2EwN2U4Li5lNTZhMTAz
YTI4YTc2MGY5Y2UwYjk3ZTcxZGQ2YjIzYTYwYzUzZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkuaApAQCAtMTcxLDYgKzE3MSw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHNjYXBlUGx1Z2luSW5zdGFu
Y2VQcm94CiAKICAgICAvLyBSZXBseSBzdHJ1Y3RzCiAgICAgc3RydWN0IFJlcGx5IHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBlbnVtIFR5cGUgewog
ICAgICAgICAgICAgSW5zdGFudGlhdGVQbHVnaW4sCiAgICAgICAgICAgICBHZXRTY3JpcHRhYmxl
TlBPYmplY3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hv
c3RlZC9Qcm94eUluc3RhbmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvUHJveHlJbnN0YW5jZS5tbQppbmRleCAyMDJjNmRlYWYxM2QwN2M2ZTNhNTY5OGIxY2Ri
NTlhMTliNWRhMDM5Li41MmJmN2JkMTJlNGUzNzEyZDMxNDc1ZTJhNTM5YTQyOGNmZjhmYTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1By
b3h5SW5zdGFuY2UubW0KQEAgLTM2Miw3ICszNjIsNyBAQCBNZXRob2QqIFByb3h5SW5zdGFuY2U6
Om1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEgbmV3
IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJl
IGluIHdhaXRGb3JSZXBseS4KICAgICBhdXRvIG1hcEFkZFJlc3VsdCA9IG1fbWV0aG9kcy5hZGQo
bmFtZS5pbXBsKCksIG51bGxwdHIpOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNOZXdFbnRyeSAm
JiByZXBseS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByb3h5TWV0aG9kPihtZXRob2ROYW1lKTsKKyAgICAgICAgbWFw
QWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJveHlNZXRob2Q+KG1ldGhv
ZE5hbWUpOwogCiAgICAgcmV0dXJuIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7
CiB9CkBAIC0zOTcsNyArMzk3LDcgQEAgRmllbGQqIFByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICAvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhl
IG1hcCB1bmxlc3MgYW4gZW50cnkgd2FzIGFkZGVkIHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZvclJl
cGx5LgogICAgIGF1dG8gbWFwQWRkUmVzdWx0ID0gbV9maWVsZHMuYWRkKG5hbWUuaW1wbCgpLCBu
dWxscHRyKTsKICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1fcmVz
dWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm94eUZpZWxkPihpZGVudGlmaWVyKTsKKyAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CiAgICAgcmV0
dXJuIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBl
UGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dl
Ykhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA5YzcxYTNjYzkyM2YzM2QyZTBhYjM5
YTFiZjZiMTRiNDQzZTk0ZDRiLi5lZTE5YzU2N2MwMWZhMThjNWU4ZGM2MWIwOGM4OTRlNTIwMDJk
YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9X
ZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC02MCw2
ICs2MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKICAg
ICAKIGNsYXNzIFNvZnR3YXJlQ0FSZW5kZXJlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU29mdHdhcmVDQVJlbmRlcmVyKHVpbnQzMl90IGNv
bnRleHRJRCkKICAgICAgICAgOiBtX2NvbnRleHQgeyBbQ0FDb250ZXh0IGxvY2FsQ29udGV4dF0g
fQpAQCAtMTY4LDcgKzE2OSw3IEBAIC0gKEJPT0wpY3JlYXRlUGx1Z2luCiAgICAgICAgIHJldHVy
biBOTzsKIAogICAgIGlmIChfcHJveHktPnJlbmRlcmVyVHlwZSgpID09IFVzZVNvZnR3YXJlUmVu
ZGVyZXIpCi0gICAgICAgIF9zb2Z0d2FyZVJlbmRlcmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTb2Z0
d2FyZUNBUmVuZGVyZXI+KF9wcm94eS0+cmVuZGVyQ29udGV4dElEKCkpOworICAgICAgICBfc29m
dHdhcmVSZW5kZXJlciA9IG1ha2VVbmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHktPnJl
bmRlckNvbnRleHRJRCgpKTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIGNyZWF0ZVBsdWdpbkxh
eWVyXTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCmluZGV4IGY3YWVkYmNl
ZDRkN2Y1YzRiYTNlOTZlMzU2MWNhN2YwYjI2NWM4YWMuLjhlYzFiZjc5ZWUzMmEyYWMxYmJjZjdh
MjFlNzNlN2UxZTAxZGIxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQpAQCAt
MzUsNyArMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXI+IFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyOjpjcgogewogICAgIHN3aXRjaCAoW3Bs
dWdpblZpZXcgZXZlbnRNb2RlbF0pIHsKICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxl
ckNvY29hPihwbHVnaW5WaWV3KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTmV0c2Nh
cGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmlldyk7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
bkV2ZW50SGFuZGxlckNvY29hLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaAppbmRleCA3MDgzNzc2ZDI4YTc1Y2Zi
NTQyNTMzZDkwZjM3NzhlODVhYmNkMWQyLi5iYmQ5YzVkNTgyMWY4NWY2NWViYzhmNzc3ZWM2NTUy
MjlkNWU4OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLmgi
CiAKIGNsYXNzIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EgOiBwdWJsaWMgV2Vi
TmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EoV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Kik7IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDAyZmYyMTg2ZGY4NGE5
YTkwZDdlOWMyNmMwNzYyNzllMzIyMTEzNzguLjE2MDY2M2U4NjFmNzEwZWJmZWQxZDc2ODU2NWRk
MjJhMTE0ZThlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0xNjU1LDcgKzE2NTUsNyBAQCAtICh1
aW50MzJfdClzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCByZXBl
YXQ6KE5QQm9vbClyZXBlYXQgdAogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICBpZiAoIXRp
bWVycykKLSAgICAgICAgdGltZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPHVpbnQzMl90
LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+Pj4oKTsKKyAgICAgICAgdGltZXJzID0gbWFr
ZVVuaXF1ZTxIYXNoTWFwPHVpbnQzMl90LCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+Pj4o
KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4qIHNsb3Q7CiAgICAgdWludDMy
X3QgdGltZXJJRDsKQEAgLTE2NjMsNyArMTY2Myw3IEBAIC0gKHVpbnQzMl90KXNjaGVkdWxlVGlt
ZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVydmFsIHJlcGVhdDooTlBCb29sKXJlcGVhdCB0
CiAgICAgICAgIHRpbWVySUQgPSArK2N1cnJlbnRUaW1lcklEOwogICAgIHdoaWxlICghdGltZXJz
LT5pc1ZhbGlkS2V5KHRpbWVySUQpIHx8ICooc2xvdCA9ICZ0aW1lcnMtPmFkZCh0aW1lcklELCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWUpKTsKIAotICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsdWdpblRpbWVyPihwbHVnaW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRp
bWVyRnVuYyk7CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlxdWU8UGx1Z2luVGltZXI+KHBsdWdp
biwgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKIAogICAgIGlmIChfc2hv
dWxkRmlyZVRpbWVycykKICAgICAgICAgdGltZXItPnN0YXJ0KF9pc0NvbXBsZXRlbHlPYnNjdXJl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlTWFuYWdlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCmluZGV4IDcwNGNkMDk1ZTg4ZmUxYTIzODExODZjNmJm
ZjEzMGZjOTAyMDQxZWIuLjU3ZmJiZmFkOWU2NGI3Njc4YWQzYWNjZTgwNzc4YmFjZjAzNzgxYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCkBAIC05NCwxMCArOTQsMTEgQEAgV2ViRGF0YWJhc2VN
YW5hZ2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIH0KIAogY2xhc3MgRGlk
TW9kaWZ5T3JpZ2luRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50JiBjbGllbnQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogICAgIHsK
LSAgICAgICAgYXV0byBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWRNb2RpZnlPcmlnaW5E
YXRhPihjbGllbnQsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY29udGV4dCA9IG1ha2VVbmlxdWU8
RGlkTW9kaWZ5T3JpZ2luRGF0YT4oY2xpZW50LCBvcmlnaW4pOwogICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KV0gewogICAgICAgICAgICAgY29udGV4
dC0+Y2xpZW50LmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdpbik7CiAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAppbmRleCBhM2IxNTk4ZWUz
NTNkNjdlMjNhZjgwOTU4ZWI3Zjc1ZWIxNjdmNGQ4Li5jZDcyNjQyNjgyNWJhNzIyMTU1N2UwNTY2
ZmE5MmVjMDgxMTE0NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaApAQCAt
MzEsNiArMzEsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkFsdGVybmF0aXZlVGV4
dENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkFsdGVybmF0
aXZlVGV4dENsaWVudChXZWJWaWV3Kik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA3OGI1
MzllMzcyYjg2NWM1OTRmYzA3NmY1YTFmYzg0YWFmZTk4YmYwLi4yNzE0MjdlMmQ0NmVlM2EyOTdk
MDU0MDEyYTdhODVhYjhiM2UxYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogY2xh
c3MgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgOiBwdWJsaWMgV2ViQ29yZTo6Q2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKGlkIHdlYkRvY3VtZW50VmlldykgOiBtX3dl
YkRvY3VtZW50Vmlldyh3ZWJEb2N1bWVudFZpZXcpIHsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApp
bmRleCBmZGM0Y2M3ODE5NmZjYmNmMzI2MDJkMThlMjg5ZjA3YTExNTRjYzk1Li5jMGZiZGE5YjJk
YTFkZDQ1MTBmZmUwODliZjY4ZjVhNzY3ZGQ0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtNDEs
NiArNDEsNyBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogLy8gYmFzZSBjbGFzcyBvZiB0aGUg
Y29uY3JldGUgY2xhc3MsIFdlYkNocm9tZUNsaWVudElPUy4gQmVjYXVzZSBvZiB0aGF0LCB0aGlz
IGNsYXNzIGFuZAogLy8gbWFueSBvZiBpdHMgZnVuY3Rpb25zIGFyZSBub3QgbWFya2VkIGZpbmFs
LiBUaGF0IGlzIG1lc3N5IHdheSB0byBvcmdhbml6ZSB0aGluZ3MuCiBjbGFzcyBXZWJDaHJvbWVD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q2hyb21lQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViVmlldyopOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCAxODg1ZjAzMTMxMzViODE3YjMwZjk0NTc3N2Q4
ZTI0YjE1MzliZjkwLi5hN2Y2NmVlZWYzMDZhNjg2MDU0MjBlNzk4NzYyMDI1N2JlMDZiNmJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgV2ViQ29u
dGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQKICAgICAs
IHB1YmxpYyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAogI2VuZGlmCiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVDbGllbnQo
V2ViVmlldyAqd2ViVmlldyk7CiAgICAgdmlydHVhbCB+V2ViQ29udGV4dE1lbnVDbGllbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuaAppbmRleCA4NDdhNzNiMTdhNDYxN2JkNTRhOGQyOGE5MjNjMWQ0YTYzYmRkMTJl
Li4zMGRmM2Y3M2Q4NTBlYTc2OWM3MTM1MjIxZDJlODg2NWVhNjdlMDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5o
CkBAIC0zMCw2ICszMCw3IEBACiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0NsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAppbmRleCBmMDU5ZTA1OWUxMTg3YTNiYzViZDI0N2NjMjQxZjU5YWRkNDUwOTUwLi5iNTEw
Nzg3ZDgwOWJjZjk3Yjc2ODllNzQwOTMyODM3NWFhMGIwYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtNDUsNiArNDUsNyBAQAogQGNsYXNzIFdlYkVkaXRvclVuZG9UYXJnZXQ7CiAKIGNsYXNzIFdl
YkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGllbnQsIHB1Ymxp
YyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkVk
aXRvckNsaWVudD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkVkaXRvckNsaWVudChXZWJWaWV3ICopOwogICAgIHZpcnR1YWwgfldlYkVkaXRvckNsaWVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA1NDVhOGU4NGNiODQ4OWQ5MTg2
NmNiYWM5MTI5NmIwZmQzNWI1MWQ3Li4yNDE0MGNkZTNlYzkzYjIwNzU5ZmQ2MzAyZDFhMzA5NTJl
MTkyYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTA2Nyw3ICsxMDY3LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiBzdGF0
aWMgdm9pZCBhZGRSZWRpcmVjdFVSTChXZWJIaXN0b3J5SXRlbSAqaXRlbSwgY29uc3QgU3RyaW5n
JiB1cmwpCiB7CiAgICAgaWYgKCFpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcykKLSAgICAg
ICAgaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxTdHJpbmc+PigpOworICAgICAgICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0VVJMcyA9IG1h
a2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAKICAgICAvLyBPdXIgQVBJIGFsbG93cyB1cyB0
byBzdG9yZSBhbGwgdGhlIFVSTHMgaW4gdGhlIHJlZGlyZWN0IGNoYWluLCBidXQgZm9yCiAgICAg
Ly8gbm93IHdlIG9ubHkgaGF2ZSBhIHVzZSBmb3IgdGhlIGZpbmFsIFVSTC4KQEAgLTEzODAsNyAr
MTM4MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZyYW1l
KQogewotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0
ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
PihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOwogCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhp
cyBmcmFtZSBpcyBnb2luZyB0byBiZSBjYWNoZWQuIFN0b3AgYWxsIHBsdWdpbnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2Vv
bG9jYXRpb25DbGllbnQuaAppbmRleCBmZmUyOTkzMTJlYjQ4MGJhZmI1ZjBlYWM0MzUyZjI0M2Y5
NmUwMGY3Li5mZmRiYWNmYzI3NDIxZThkMzU4ODhmMmNlNmIxODA3N2ExNmUzM2YwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgR2VvbG9jYXRpb25Q
b3NpdGlvbjsKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViR2VvbG9jYXRpb25DbGllbnQoV2ViVmlldyAqKTsK
ICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCmluZGV4IGJkN2Y2MmZjODVkYzk5YzM4NzE2ZjA3NjY2NDYzMTgyNTExYzU0YTUu
LjBjOTQ4YjNhZWY5ODc2MDk2MzAzNTFkNTlhYzc5MGIyYWJlYWRhN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudDsKIAogY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQppbmRleCAxYzAwODA5NzY5MmZmOWIwNzFmY2U1YWM0YTRiNDY5
MmQxMzdlZDk1Li43ZDNlNWVjOWU2MTVlMWQ0OGMzZDA1ZDcxYTU5YzQ1MWZlYjc2NmJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgRnJvbnRlbmRDaGFubmVs
KiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3AKICAgICBbd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6
dGhpc107CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0
KCkgZnJvbnRlbmRXZWJWaWV3XSk7Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgd2lu
ZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQ
YWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBt
YWtlVW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcs
IHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250
ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKIAogICAgIFJldGFpblB0cjxXZWJJ
bnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5z
cGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVuZENs
aWVudC5nZXQoKV0pOwogICAgIFtbbV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJv
bnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQuaAppbmRleCAxNWI0MTgwNDhlNGYxZDQ2MjRjMzAzZGNiYmZlZDE2OTc5NjQ0ODYxLi45NGVk
NjE4YWM3OGVlOGJjZjU3MTU1YzlhZGFiY2JkYWRmNjhjNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRp
b25DbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdl
Yk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vdGlmaWNh
dGlvbkNsaWVudChXZWJWaWV3ICopOwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBt
X3dlYlZpZXc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCmlu
ZGV4IGEzZDZhZTYzNjM2NDdjNWYzMGNjNzlmYmQ2MzVmNjY0YmNhMDEyM2MuLmRjOWQxMWEzNTg3
ZWUwNGY1MDE1MWJlODhiYzVkNGIxNDhiY2RlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXIuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBJbnRQb2ludDsKIH0K
IAogY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvblByb3ZpZGVyTW9jay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KaW5kZXggMjUzNjQ4ZDhlODQ1OTExZTJh
ZTI4YzBiYjg2M2NiNTdmN2MzMDAzOS4uMjc2ZDlmMTVlZjhmYTVlMWZlZDQzOGVkOWMxZDI1OWE3
ODU4MzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
ZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2NrLm1tCkBAIC0zNiw3
ICszNiw3IEBAIC0gKGlkKWluaXQKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICgh
c2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2NvcmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKKyAgICBtX2NvcmUgPSBtYWtlVW5pcXVl
PERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggYTkwNjIy
YzIwNzRlMGNkY2VjZWYyYzZjMWM4NDk0NWQ0ZTlkZmZhYi4uM2E5NGJiOTEwZDI1OWVmYWE4OTFk
NTI5ZTgwZDJiNWIwMDIwYjRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCkBAIC0zNzgsNyArMzc4LDcgQEAgLSAodm9pZClfYXR0YWNoU2NyaXB0RGVi
dWdnZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1
Z2dlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVjdCk7
CisgICAgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gbWFrZVVuaXF1ZTxXZWJTY3JpcHREZWJ1
Z2dlcj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAogLSAodm9pZClfZGV0YWNoU2NyaXB0RGVidWdnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKaW5kZXggZGZhN2VmZDA2MDZhZGM0OWZlMjkxZDA1
MjFkMTMyZTZlMTljNTA3My4uYTA3MmU4MTk1MjQ5MzlhZTBmMjJiYjk4MzZkM2FjNzA1ZDg1Nzky
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3Mg
UGFnZTsKIH0KIAogY2xhc3MgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciA6IHB1YmxpYyBX
ZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXI+IGNyZWF0ZShXZWJDb3JlOjpQYWdlJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlci5tbQppbmRleCA3MmMyMGM2OTNmZWNiYTk3MTA0NjM0MTY0MWNjZTEx
NDk0ZGU0YTY5Li42MDI0MDI5OTYyZWMzNGYwMGY0YWFkOTQzMmE3ZmM0MmJhMWQxNzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCkBAIC0zMyw3ICszMyw3IEBACiAKIHN0ZDo6dW5p
cXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBXZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyOjpjcmVhdGUoV2ViQ29yZTo6UGFnZSYgcGFnZSkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPihwYWdlKTsKIH0K
IAogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6V2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlcihXZWJDb3JlOjpQYWdlJiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQppbmRleCAxYTcyNThiNDIzYTg0NTc4OTFlNDE1
ZTEwZDAwMjU2NzMwYWEyYmRlLi5lMzYzYjg1YjJiM2Q1YWUxNDczYzgzNzI3MTg1ODM0ZDUxNzg3
YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJ
dGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJ
dGVyYXRvci5tbQpAQCAtNjksNyArNjksNyBAQCAtIChpZClpbml0V2l0aFJhbmdlOihET01SYW5n
ZSAqKXJhbmdlCiAgICAgICAgIHJldHVybiBzZWxmOwogICAgIAogICAgIF9wcml2YXRlID0gW1tX
ZWJUZXh0SXRlcmF0b3JQcml2YXRlIGFsbG9jXSBpbml0XTsKLSAgICBfcHJpdmF0ZS0+X3RleHRJ
dGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihjb3JlKHJh
bmdlKSk7CisgICAgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OlRleHRJdGVyYXRvcj4oY29yZShyYW5nZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMDM0ZjBlYzcxMGY4
N2ZlM2ZmYjRiZjk0MzUxNWI0OGM1MDFkOTFhYi4uMjBlODhkNWEwYTYzM2I5Y2M1Y2RiMDVkOWNj
MGJlOTFiZjk2NTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9va1F1
aXJrc1VzZXJTY3JpcHRDb250ZW50cygpCiAtKHZvaWQpX2luamVjdE91dGxvb2tRdWlya3NTY3Jp
cHQKIHsKICAgICBzdGF0aWMgTlNTdHJpbmcgKm91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cyA9
IGxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCk7Ci0gICAgX3ByaXZhdGUtPmdy
b3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3Jp
cHRXb3JsZCB3b3JsZF0pLCBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tRdWly
a3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+
KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKSk7CisgICAgX3ByaXZh
dGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtX
ZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tRdWly
a3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+
KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKSk7CiAKIH0KICNlbmRp
ZgpAQCAtMTQzOCw3ICsxNDM4LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
RnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91cE5hbWU6KE5TU3QKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRN
ZW51Q2xpZW50KHNlbGYpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5hYmxlIHRoaXMgb24g
aU9TIGFzIHdlbGwuCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxmKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VVbmlx
dWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQoc2VsZik7CiAjZWxz
ZQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGll
bnRJT1Moc2VsZik7CkBAIC00NjI5LDcgKzQ2MjksNyBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0
VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29y
bAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdXNlclNjcmlw
dCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVj
dG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUg
PT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0QXREb2N1bWVudFN0YXJ0IDogSW5q
ZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMg
PyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKKyAgICBhdXRvIHVz
ZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1Zl
Y3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1l
ID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IElu
amVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVz
ID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAgICAgdmlld0dy
b3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxkKSwg
V1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTQ2NTIsNyArNDY1Miw3IEBAICsgKHZvaWQp
X2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdl
YlNjcmlwdFdvcmxkICopCiAgICAgaWYgKCF3b3JsZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBzdHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNl
LCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlz
dCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxG
cmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBh
dXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6
IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91
cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQoKmNvcmUod29ybGQp
LCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIApA
QCAtOTQwMyw3ICs5NDAzLDcgQEAgLSAoVmVjdG9yPFN0cmluZz4pX2RpY3RhdGlvbkFsdGVybmF0
aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dAogLSAoV2ViU2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXImKV9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcgogewogICAgIGlmICghX3ByaXZh
dGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcikKLSAgICAgICAgX3ByaXZhdGUtPl9zZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXI+KHNlbGYpOworICAgICAgICBfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4o
c2VsZik7CiAgICAgcmV0dXJuICpfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
OwogfQogI2VuZGlmCkBAIC05NDYyLDcgKzk0NjIsNyBAQCAtICh2b2lkKV9zZXRUZXh0SW5kaWNh
dG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yCiAtICh2b2lkKV9zZXRUZXh0SW5kaWNh
dG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yIHdpdGhMaWZldGltZTooVGV4dEluZGlj
YXRvcldpbmRvd0xpZmV0aW1lKWxpZmV0aW1lCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+dGV4dElu
ZGljYXRvcldpbmRvdykKLSAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+KHNlbGYpOworICAgICAgICBfcHJp
dmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9IG1ha2VVbmlxdWU8VGV4dEluZGljYXRvcldpbmRv
dz4oc2VsZik7CiAKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0
ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpbc2VsZiBfY29udmVydFJlY3RGcm9tUm9vdFZpZXc6dGV4
dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCldIHRvVmll
dzpuaWxdOwogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyA9
IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOnRleHRCb3VuZGluZ1JlY3RJbldpbmRv
d0Nvb3JkaW5hdGVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLm1tCmluZGV4IDEwNjBjMmQ4NTRhZGEwZGNhZmIzMzU1OWM4MTFlNGVlNDk0Y2M2ZTAu
LjgyMzhhNGVjNWZlZTE2ODM2NGVkMTMwNGJjNzUxNWY1NTE3ZmU4OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQpAQCAtOTYsNyArOTYsNyBA
QCBMYXllckZsdXNoQ29udHJvbGxlcjo6TGF5ZXJGbHVzaENvbnRyb2xsZXIoV2ViVmlldyogd2Vi
VmlldykKIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVk
dWxlcihMYXllckZsdXNoQ29udHJvbGxlciogZmx1c2hDb250cm9sbGVyKQogICAgIDogbV9mbHVz
aENvbnRyb2xsZXIoZmx1c2hDb250cm9sbGVyKQogewotICAgIG1fcnVuTG9vcE9ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENG
SW5kZXg+KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6
TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihXZWJDb3Jl
OjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBb
dGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hDYWxsYmFjaygpOwogICAgIH0pOwog
fQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKGlkKWluaXQKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVu
dENvdW50Kys7CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICBtX2FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyPigpOworICAgIG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9s
bGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7
CiAjZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAppbmRleCA2NDZlNmFlZjkzMmYx
Yzk5Mjk4NTM2YzgyZjJjOTU1YTcxYTE5MmNmLi5kZTUyYzg1ODY0MTQyOTJjM2M5N2VkYmU5OTRh
YmYxZDVmNzhkNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMTc2LDYgKzE3Niw3IEBAIHZvaWQgSFVEU2xp
ZGVyOjpkcmFnKGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBzdGFydCkKIAogI2lmIFVTRShD
QSkKIGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkxheWVyQ2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgTGF5ZXJDbGllbnQoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciogcGFyZW50KSA6IG1fcGFyZW50KHBhcmVudCkgeyB9CiAKQEAgLTI0NiwxMCArMjQ3LDEwIEBA
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQog
ICAgICwgbV9tb3ZpbmdXaW5kb3coZmFsc2UpCiAgICAgLCBtX3RpbWVyKCp0aGlzLCAmRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6dGltZXJGaXJlZCkKICNpZiBVU0UoQ0EpCi0gICAgLCBtX2xh
eWVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQorICAgICwgbV9s
YXllckNsaWVudChtYWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKICAgICAsIG1fcm9vdENo
aWxkKFBsYXRmb3JtQ0FMYXllcldpbjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
TGF5ZXIsIG1fbGF5ZXJDbGllbnQuZ2V0KCkpKQogI2VuZGlmCi0gICAgLCBtX2Z1bGxzY3JlZW5X
aW5kb3coc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93
PihzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhpcykp
KQorICAgICwgbV9mdWxsc2NyZWVuV2luZG93KG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bkNsaWVudCo+KHRoaXMpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCmluZGV4IGYxZGU4ZGQ3Y2NlNzg4N2Q2Yzgz
Y2IyODExNTYxM2VhODBiNTVkNzguLjEzOGMzZWM0ZTI2NGIxOGIyNzJlMjY3YzE2ODM3NTc2YWJj
ODQxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyLmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyOwog
fQogCiBjbGFzcyBIVURXaWRnZXQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIEhVRFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSA6IG1fcmVj
dChyZWN0KSB7IH0KICAgICAKQEAgLTEwMSw2ICsxMDIsNyBAQCBjbGFzcyBIVURTbGlkZXIgOiBw
dWJsaWMgSFVEV2lkZ2V0IHsKIH07CiAKIGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIg
OiBXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyKTsKIHB1YmxpYzoKICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1l
c3NhZ2VUaHJvdHRsZXJXaW4uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luTWVzc2FnZVRocm90dGxlcldpbi5oCmluZGV4IDVmZDc2ZDQxNzgyNTI2MWQ0ZWQ1MjhhODU0
MWY2NjJhNGY3Zjg3ZjkuLjRiNzlmZTYyYmZkODQ1OTliMjRkYzJkOTVjNjhjNTFlMjE1MDNjMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWVzc2Fn
ZVRocm90dGxlcldpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luTWVzc2FnZVRocm90dGxlcldpbi5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBQbHVnaW5WaWV3OwogCiAgICAgc3RydWN0IFBsdWdpbk1lc3NhZ2Ug
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEhXTkQg
aFduZDsKICAgICAgICAgVUlOVCBtc2c7CiAgICAgICAgIFdQQVJBTSB3UGFyYW07CkBAIC00NCw2
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAgICAgY2xhc3MgUGx1Z2lu
TWVzc2FnZVRocm90dGxlcldpbiB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbihQbHVnaW5WaWV3
Kik7CiAgICAgICAgIH5QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKaW5kZXggYWJhNjNkYWI4
YjMxZTQ3YWJkODA4OGIzNzgzYTgwZWM1NGMxMDIxOC4uMGY2YmVlZmZhZDFkYzAxNWM4YTQ3N2U3
ZmJlNWM5YjZhYWZhZmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgUGx1Z2luU3RyZWFt
OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25z
dCBjaGFyCiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBfQVNGSUxFT05MWSkgewogICAg
ICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAgbV9kZWxpdmVyeURhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxjaGFyPj4oKTsKKyAgICAgICAgICAgIG1fZGVsaXZlcnlE
YXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8Y2hhcj4+KCk7CiAKICAgICAgICAgaW50IG9sZFNpemUg
PSBtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpOwogICAgICAgICBtX2RlbGl2ZXJ5RGF0YS0+cmVzaXpl
KG9sZFNpemUgKyBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggMjEzNjMxN2YyOTk5ZDVlMTM3NDlkZjM4ZTE5YThmNGQyZjI1
YmQ2MC4uNTQ3MTZhMGJiMmIxZmFiNzVkODFkZTQyYWVlOTZlZWEyZjZiMTNlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC01MTAsNyAr
NTEwLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFt
ZUxvYWRSZXF1ZXN0LCBib29sIHNlbmROb3RpZmljYXQKICAgICB9IGVsc2UgaWYgKCFtX3BhcmVu
dEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkodXJsKSkKICAg
ICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAKLSAgICBzY2hlZHVsZVJlcXVlc3Qo
c3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3Qp
LCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNBbGxvd2VkKCkpKTsKKyAg
ICBzY2hlZHVsZVJlcXVlc3QobWFrZVVuaXF1ZTxQbHVnaW5SZXF1ZXN0PihXVEZNb3ZlKGZyYW1l
TG9hZFJlcXVlc3QpLCBzZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNBbGxv
d2VkKCkpKTsKIAogICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDA1NzI4ZjNl
ZDM3MjA1MDRhZjU1Zjk4NzdmODYyMWJkYzA1Y2U2MjIuLjUyMDQ1OTRhYjZmODRkNTcwMDA0MGRm
ZDI5ODFjM2Y1NjNlZGZmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3V2luLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIFBsdWdpblZpZXc6Ondu
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pCiAgICAgaWYgKG1lc3NhZ2UgPT0gV01fVVNFUiArIDEgJiYKICAgICAgICAgbV9wbHVnaW4t
PnF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrVGhyb3R0bGVXTVVzZXJQbHVzT25lTWVzc2Fn
ZXMpKSB7CiAgICAgICAgIGlmICghbV9tZXNzYWdlVGhyb3R0bGVyKQotICAgICAgICAgICAgbV9t
ZXNzYWdlVGhyb3R0bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5NZXNzYWdlVGhyb3R0bGVy
V2luPih0aGlzKTsKKyAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IG1ha2VVbmlxdWU8
UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CiAKICAgICAgICAgbV9tZXNzYWdlVGhy
b3R0bGVyLT5hcHBlbmRNZXNzYWdlKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
YWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEuaAppbmRleCA1MzBiNjllZDcxOWMyN2FjYzZiMDdlMzUxNTky
MjFmNTUyNmM1MzA1Li4zYmY0NGQ4N2QxOGQ1ZjI3M2NkMjk1MzU2NzZiMjQwOGYyYzkxNGUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlZEZyYW1lUGxhdGZv
cm1EYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIDogcHVi
bGljIFdlYkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShJV2Vi
RGF0YVNvdXJjZSogd2ViRGF0YVNvdXJjZSkgOiBtX3dlYkRhdGFTb3VyY2Uod2ViRGF0YVNvdXJj
ZSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCmluZGV4
IGUzZWMzM2ZkNDk5N2EwMWEyMjVkNWUxY2Y5YjRmNGI2MmQ3N2UyMmQuLmM0MWY4NmUwNzNkOGRj
YjllNGE4YTUyOTRmMGQ2M2NjOTRlNTYzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQuaApAQCAtNDAsNiArNDAsNyBAQAogY2xhc3MgV2ViVmlldzsKIAogY2xh
c3MgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgOiBwdWJsaWMgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KFdlYlZpZXcmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IDRhNDliOTRiYmE1OGQwYzU0NjMzMjljM2Y2ZWYyM2U4NDg4
YjdhZjMuLjdiMjk5Y2VlMjVlY2QxMGJiYTYyMWM4NTgxYjA2YWUwNmM1YTFkMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEZp
bGVQYXRoc0xpc3RTaXplID0gVVNIUlRfTUFYOwogV2ViQ2hyb21lQ2xpZW50OjpXZWJDaHJvbWVD
bGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQotICAgICwgbV9ub3RpZmljYXRpb25zRGVsZWdhdGUoc3RkOjpt
YWtlX3VuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlPih3ZWJWaWV3KSkKKyAg
ICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKG1ha2VVbmlxdWU8V2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggNDFkNWYwNmFlYWNiN2UxNDE3ZDRiNzAyNDAwNjBiYmU1N2Y2OTMwZi4uNzg3NTQzMjUzZDVk
ZmY0ZWM2NjhlYmU4OGYwODg1ZDBiYWRiNjU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM4LDYg
KzM4LDcgQEAgY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTsKIGludGVyZmFj
ZSBJV2ViVUlEZWxlZ2F0ZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmgKaW5kZXggYzlkZTQ5YjNjZDE0NTUxNzI4ZmIyZjlkOTZlZjQ5MGU5OTE1OGJkNC4u
ZjQ4ZWU3MzBlZWY3MTk3OWU0ZDhkMmMzMjdlZDFiYTE3Yjk0ZmZhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCkBAIC0zMCw2ICszMCw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBX
ZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1l
bnVDbGllbnQoV2ViVmlldyopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlLmgKaW5kZXggODI5NmM4Y2NiNjg4N2QzNDU0OGQ1YTY0YzY4Njc3MjZhNzQ2MDc3
Mi4uNGNmZDEwMjY1ZDFkMDdhNTdmMDMwYTRlNmIxNTA2OWNiYmZiOTMzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAtNDEsNiArNDEsNyBAQCBj
bGFzcyBEb2N1bWVudDsKIH0KIAogY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZSA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGUoV2ViVmlldyogdmlldyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBiNTk4OTMzMjkxMDA5ZTI4NTFl
ZDc1NDE1ZWM0YWEwZmU0MDNkNjExLi40NWUzY2E3Mjc1M2FkMWFjMTE1M2JlOTYxOTNmNmVkNjIx
ZmY4OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zMSw2ICszMSw3IEBACiBjbGFzcyBXZWJWaWV3Owog
CiBjbGFzcyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkRyYWdDbGllbnQoV2Vi
VmlldyopOwogICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAppbmRleCBkYjYzNTJkNjM4MTZmN2M5YWVlZTlmNzQ0ZTQ4ZTM4MWU4NTZkMmI1
Li42OWQ3ZWQzZTBhYTMxZjEzYmVhNjRjZjBjMjc2NWUyNTRmYmY4ZTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBXZWJF
ZGl0b3JVbmRvVGFyZ2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkVkaXRvckNs
aWVudChXZWJWaWV3Kik7CiAgICAgfldlYkVkaXRvckNsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDZjZWZmYzgxYWY5NDQxNmVmM2NjMGZhZTQ0NmMwMDdmOTU2ZGVj
NTguLjIzNDZlYjlkMWEwYWNiY2Q1NGQwMjYzOTcyMDcwMDFlYTdjMDFjZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTkzLDYgKzkzLDcgQEAgc3RhdGljIFdlYkRhdGFTb3Vy
Y2UqIGdldFdlYkRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIH0KIAogY2xhc3Mg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJpdmF0ZSgpIAogICAgICAgICA6IG1fcG9saWN5RnVuY3Rpb24obnVsbHB0cikKQEAg
LTEwNyw3ICsxMDgsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByaXZhdGUgewogfTsKIAogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50KFdlYkZyYW1lKiB3ZWJGcmFtZSkKLSAgICA6IG1fcG9saWN5TGlzdGVuZXJQ
cml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+KCkp
CisgICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShtYWtlVW5pcXVlPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcml2YXRlPigpKQogICAgICwgbV93ZWJGcmFtZSh3ZWJGcmFtZSkKICAgICAsIG1f
bWFudWFsTG9hZGVyKDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKSAK
QEAgLTk3Myw3ICs5NzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZv
cm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbQogCiAgICAgQVNTRVJU
KGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBjYWNoZWRGcmFtZS0+ZG9j
dW1lbnRMb2FkZXIoKSk7CiAKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4oc3RhdGlj
X2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVGcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CisgICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0YXRp
Y19jYXN0PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCkpKSkpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBlYjk3NThiZDQyMTA3ZDJmOWE4
NTRlNGU2ODgxNjZhNmY1MTVmYjlmLi5iYmE5YzlmNDQ1MzU4ZDdjZTNlYTAzZjg5NjY0MWJkNmU1
ZTA0MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgY2xh
c3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdlb2xv
Y2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVu
dChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDc1Njk1OTBjMWIz
Y2YzODE2ZmM0MmEzNWJmM2Y2NmJmZDc4OTAyMjQuLmY4MGFlMDQ4YjgyZGJkYjIzNDY1NDY4ZDkz
M2M2MGE3MDk3MmM3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTY5LDcgKzE2
OSw3IEBAIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9w
ZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
bV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7Ci0gICAgbV9mcm9u
dGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+
KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3
bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJv
bnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdl
YlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZp
ZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwogICAgIG1fZnJvbnRlbmRQ
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9m
cm9udGVuZENsaWVudC5nZXQoKSk7CiAgICAgbV9mcm9udGVuZEhhbmRsZSA9IGZyb250ZW5kSHdu
ZDsKICAgICByZXR1cm4gdGhpczsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6aGlnaGxpZ2h0KCkKICAgICBib29sIGNyZWF0aW5nSGlnaGxpZ2h0ID0gIW1faGln
aGxpZ2h0OwogCiAgICAgaWYgKGNyZWF0aW5nSGlnaGxpZ2h0KQotICAgICAgICBtX2hpZ2hsaWdo
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViTm9kZUhpZ2hsaWdodD4obV9pbnNwZWN0ZWRXZWJWaWV3
KTsKKyAgICAgICAgbV9oaWdobGlnaHQgPSBtYWtlVW5pcXVlPFdlYk5vZGVIaWdobGlnaHQ+KG1f
aW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBpZiAobV9oaWdobGlnaHQtPmlzU2hvd2luZygpKQog
ICAgICAgICBtX2hpZ2hsaWdodC0+dXBkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4
IDk1YzlhZmE4NTAwMmE1NDMyNzBiN2NlNmIzODhjNzBkNDg5MTg1MTguLjBhNTE0ODM5MWJhZTEy
NjBkZjY4NjZiMjg3MDdlNjYwODRlOTIzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC01
MCw2ICs1MCw3IEBAIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBjbGFzcyBXZWJWaWV3OwogCiBj
bGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvckNsaWVu
dChXZWJWaWV3Kik7CiAKQEAgLTk0LDYgKzk1LDcgQEAgY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50
IGZpbmFsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3QK
IH07CiAKIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IGZpbmFsIDogcHVibGljIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwsIFdlYkNvcmU6OldpbmRvd01lc3Nh
Z2VMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgSFdO
RCBpbnNwZWN0ZWRXZWJWaWV3SHduZCwgSFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0cjxX
ZWJWaWV3PiYgZnJvdG5lbmRXZWJWaWV3LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdlYklu
c3BlY3RvckNsaWVudCosIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4pOwogICAgIHZpcnR1YWwg
fldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCAyNDkzYzdiMGI3OWZjNGZkOGVjZWMwZWE5
NjY3YzZlZTJhYzNhMDRhLi40NDU0MmExZGExMDNhYTQ0NzYzZTk0ZDRmYWJhODY0ZWQwMmZjN2Y1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAK
QEAgLTM1NSw2ICszNTUsNyBAQCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0SURCUGVy
T3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogfQogCiBjbGFzcyBEaWRNb2Rp
ZnlPcmlnaW5EYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEaWRNb2RpZnlPcmlnaW5EYXRhKTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFu
YWdlciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCAyN2FmMWJhZTY1
M2VmZjAyZjY3MDRmN2UzOWFkMGUxYWM1MGFkNzBiLi44YWZiYTBmNmQ1M2FmZDU1NTg0NWMxOTUz
NmMyYTljMWVjNWYzN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJF
bGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVs
ZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIC8vIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVt
ZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQotICAgIDogbV9yZXN1
bHQoc3RkOjptYWtlX3VuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQorICAgIDogbV9yZXN1
bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50
Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBhODFjMDBl
NTZjNWRlMmFlYmMxMmFiOGI2ZGIxMWJjOTM0ZWJiYmRhLi5mYjg4ZTM5ZTdiNTZhYzMyZGNmNWNm
NTAxMWMzNTQ4MTcxYTZjM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9y
eUl0ZW0uY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5SXRlbTo6aW5p
dEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oX0luX29wdF8gdm9pZCogZGljdGlvbmEKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IHJlZGlyZWN0VVJMc1ZlY3RvcjsKICAg
ICBpZiAoQ0ZBcnJheVJlZiByZWRpcmVjdFVSTHNSZWYgPSBzdGF0aWNfY2FzdDxDRkFycmF5UmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5UmVmLCByZWRpcmVjdFVSTHNLZXkpKSkg
ewogICAgICAgICBDRkluZGV4IHNpemUgPSBDRkFycmF5R2V0Q291bnQocmVkaXJlY3RVUkxzUmVm
KTsKLSAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oc2l6ZSk7CisgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3RvciA9IG1ha2VVbmlxdWU8
VmVjdG9yPFN0cmluZz4+KHNpemUpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBz
aXplOyArK2kpCiAgICAgICAgICAgICAoKnJlZGlyZWN0VVJMc1ZlY3RvcilbaV0gPSBTdHJpbmco
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVkaXJlY3RV
UkxzUmVmLCBpKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3Bw
CmluZGV4IDJmMWYyZjQ4MDdlYjljNGZlNzA4MzVkYjc4ZTM0YTM0YmNmZjM2ZDAuLmQ2NWRlMTll
ZTk5YzQ1MTQ0NWRmYmYxYjEzNTlkYzJhOGJhMzhjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9D
QUQzRFJlbmRlcmVyLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEM0RQ
b3N0UHJvY2Vzc2luZ0NvbnRleHQ+IENBRDNEUmVuZGVyZXI6OmNyZWF0ZUQzRFBvc3RQcm9jZXNz
aW5nCiAgICAgbWVtY3B5KG92ZXJsYXlRdWFkQnVmZmVyLCBvdmVybGF5UXVhZFZlcnRpY2VzLCBz
aXplb2Yob3ZlcmxheVF1YWRWZXJ0aWNlcykpOwogICAgIG92ZXJsYXlRdWFkLT5VbmxvY2soKTsK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4o
c2NlbmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RDNEUG9z
dFByb2Nlc3NpbmdDb250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsKIH0KIAogLy8g
RklYTUU6IDxyZGFyOi8vNjUwNzg1MT4gU2hhcmUgdGhpcyBjb2RlIHdpdGggQ29yZUFuaW1hdGlv
bidzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3Jl
QWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCmluZGV4IDY3ZDQ4MzUzYjAzZDcy
ZWE4YTljMjhhYjg3MGQ3NWRhMTFkODA4ZWMuLjQ3ZWFkZGE2NTYxMmU2MDUwZDJjMjhhY2U2ZjRj
OWFjZTljYmI1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1
YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCkBAIC00Myw2
ICs0Myw3IEBAIG5hbWVzcGFjZSBXS1FDQSB7CiBjbGFzcyBJbWFnZTsKIAogY2xhc3MgRDNEUG9z
dFByb2Nlc3NpbmdDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQoY29uc3QgQ0NvbVB0cjxJRGlyZWN0M0RU
ZXh0dXJlOT4mLCBjb25zdCBDQ29tUHRyPElEaXJlY3QzRFZlcnRleEJ1ZmZlcjk+Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaAppbmRleCBmOTc1NWJiOGRh
ZWFhYjM5ZDM0MjJlZThmZWIwZjI0YzFiMzU0ZmVkLi5iMjY5NTQ5OWI4MjZiOTliODJlYWZhODQ1
NDE4N2QxOWY2ZTA3ZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJO
b2RlSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhpZ2hs
aWdodC5oCkBAIC0zNSw2ICszNSw3IEBACiBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJOb2Rl
SGlnaGxpZ2h0IDogV2ViQ29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJOb2RlSGlnaGxpZ2h0KFdlYlZpZXcq
KTsKICAgICB+V2ViTm9kZUhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggN2JkOTg4OTYxMTFjM2IzZmU2ZmU1
NGYwYTI0Nzk2NjA2YjIyYTc1Zi4uOTI1MzJkYmRjYTQxYjg1MzFlOTE2OGNkZGRlMzFiNTdhN2Y0
NTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9u
Q2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25D
ZW50ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBAIHR5cGVkZWYgT2JqZWN0T2JzZXJ2ZXJMaXN0Ojpp
dGVyYXRvciBPYnNlcnZlckxpc3RJdGVyYXRvcjsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE9i
amVjdE9ic2VydmVyTGlzdD4gTWFwcGVkT2JzZXJ2ZXJzOwogCiBzdHJ1Y3QgV2ViTm90aWZpY2F0
aW9uQ2VudGVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIE1hcHBlZE9ic2VydmVycyBtX21hcHBlZE9ic2VydmVyczsKIH07CiAKQEAgLTUzLDcgKzU0
LDcgQEAgc3RydWN0IFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGUgewogSVdlYk5vdGlmaWNh
dGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjptX2RlZmF1bHRDZW50ZXIgPSAwOwog
CiBXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCi0gICAgOiBk
KHN0ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKKyAgICA6
IGQobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdD
bGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25D
ZW50ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNh
dGlvbkNlbnRlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyLmgKaW5kZXggMzg5ZTk4YzdkOWZkY2EzMDMxNjAxNGY5ZjFkMWY2MjBhMzQ5ZWYyZi4uZjE0
OTgxMjJkOGRlM2MzMzczMjU0NDhiZTM5MTQ0MjRlYzc2MDA1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAK
IHN0cnVjdCBXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlOwogCiBjbGFzcyBXZWJOb3RpZmlj
YXRpb25DZW50ZXIgZmluYWwgOiBwdWJsaWMgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk5vdGlmaWNh
dGlvbkNlbnRlciogY3JlYXRlSW5zdGFuY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAppbmRleCA5NzYxNDhlMzNmNzQ0NmQ3YzM4NDk5NTlkNmNmNzNkZWY0OGY2N2ZmLi45YTYx
MDc5ZWJlNWQzOTBhM2VjNDlmY2NkMDg2NGQ5NzMxNjRhMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcApAQCAtMTg4MCw3ICsxODgwLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVN
b3VzZUV2ZW50KFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAg
ICAgICAgbW91c2VFdmVudC5zZXRDbGlja0NvdW50KGdsb2JhbENsaWNrQ291bnQpOwogICAgICAg
ICBoYW5kbGVkID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZU1vdmVk
KG1vdXNlRXZlbnQpOwogICAgICAgICBpZiAoIW1fbW91c2VPdXRUcmFja2VyKSB7Ci0gICAgICAg
ICAgICBtX21vdXNlT3V0VHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8VFJBQ0tNT1VTRUVWRU5U
PigpOworICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxUUkFDS01PVVNFRVZFTlQ+KCk7CiAgICAgICAgICAgICBtX21vdXNlT3V0
VHJhY2tlci0+Y2JTaXplID0gc2l6ZW9mKFRSQUNLTU9VU0VFVkVOVCk7CiAgICAgICAgICAgICBt
X21vdXNlT3V0VHJhY2tlci0+ZHdGbGFncyA9IFRNRV9MRUFWRTsKICAgICAgICAgICAgIG1fbW91
c2VPdXRUcmFja2VyLT5od25kVHJhY2sgPSBtX3ZpZXdXaW5kb3c7CkBAIC02Nzk0LDcgKzY3OTQs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUoX0luXyBC
U1RSIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYgKCFtX2Vt
YmVkZGVkVmlld01JTUVUeXBlcykKLSAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgbV9lbWJlZGRlZFZp
ZXdNSU1FVHlwZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKIAogICAgIG1fZW1i
ZWRkZWRWaWV3TUlNRVR5cGVzLT5hZGQodG9TdHJpbmcobWltZVR5cGUpKTsKICAgICByZXR1cm4g
U19PSzsKQEAgLTY4OTQsNyArNjg5NCw3IEBAIHZvaWQgV2ViVmlldzo6ZW50ZXJWaWRlb0Z1bGxz
Y3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50CiAgICAg
ICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyKTsKICAgICB9CiAKLSAgICBt
X2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI+KCk7CisgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyID0gbWFr
ZVVuaXF1ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyPigpOwogICAgIG1fZnVsbFNjcmVlblZp
ZGVvQ29udHJvbGxlci0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwogICAgIG1fZnVs
bFNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYKQEAgLTY5
NDYsNyArNjk0Niw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXAoX0lu
XyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0
PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Io
d2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFrZVVu
aXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRl
bGlzdCwgd2hpdGVsaXN0Q291bnQpLAogICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3Qs
IGJsYWNrbGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3Rh
cnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLAogICAgICAg
ICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJh
bWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRD
b250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZSh1c2VyU2Ny
aXB0KSk7CkBAIC02OTczLDcgKzY5NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHls
ZVNoZWV0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAg
ICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0gcmVp
bnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7Ci0gICAgYXV0byBzdHlsZVNo
ZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwp
LCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0
b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksCisgICAgYXV0byBzdHlsZVNoZWV0ID0gbWFr
ZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0LCBi
bGFja2xpc3RDb3VudCksCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxs
RnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0
eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFk
ZFVzZXJTdHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmpl
Y3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTcyMzcsNyArNzIz
Nyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFjY2Vs
ZXJhdGVkKQogICAgIH0KICNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBpZiAoYWNj
ZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAgIG1f
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRlZDsK
ICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmgg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAppbmRleCBlZWNhNzM5ZDJiMzk0ZTg2
MDM1MWJhMWI0NjRkZTU0NzhiOWJiMTY3Li5kYjM2ZWI5ZGVkMmI5ZTBmNWY2ZWY0MGRiNmM2OTkx
OWE3MzA2ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaApAQCAtODIsNiArODIsNyBAQCBw
dWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0g
ZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0ZTsg
XAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6IFwKIHR5cGVk
ZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZE1hY3JvU2VtaWNvbG9uaWZpZXIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29IZWFwSW5saW5lcy5oCmluZGV4IGMwNDRkNzczYjg3OWE2NmRmYWRkMmUy
Y2EzMTVlZWVhMzc2ZmZhNGEuLjNhYTFkMjA5NTFkYmYzMzY0ZTdkMTZkZDIzNjQzZDBjZDk3ZjZm
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGluZXMuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKQEAgLTEyMyw2ICsx
MjMsNyBAQCBwdWJsaWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90
IHNpemUpID0gZGVsZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9
IGRlbGV0ZTsgXAordHlwZWRlZiBpbnQgX19mYXN0QWxsb2NhdGVkQ2xhc3M7IFwKIHByaXZhdGU6
IFwKIHR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1hY3JvU2VtaWNvbG9uaWZp
ZXIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGU3ZmJiNmEyNzk4OGRiOThmYzgxODE1ZjBlNmJjYTNlY2QxMjMxMDQuLjRlZmY4YzQwYjE5ZTM2
NjEyMDU0YzA0NzUyYTQwNDRhODc1ZTg0ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTAgQEAKKzIwMTktMDgtMTUgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvR0NDb250cm9s
bGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAg
IChhZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2spOgorICAgICAgICAoc2V0V2lsbFNlbmRSZXF1ZXN0
Q2xlYXJIZWFkZXJDYWxsYmFjayk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0
ZUxvZ3NGb3JDaGFubmVsKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnJ1blVJU2NyaXB0KToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnNldE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5t
bToKKyAgICAgICAgKGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2
ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHA6Cisg
ICAgICAgIChEUlREYXRhT2JqZWN0OjpTZXREYXRhKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vRFJURGF0YU9iamVjdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EUlRE
ZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0RSVERyb3BTb3VyY2UuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHJhZ2dp
bmdJbmZvLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9FdmVudFNlbmRlci5jcHA6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKEZy
YW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0hpc3RvcnlEZWxlZ2F0ZS5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9NRDUu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vUG9saWN5RGVsZWdhdGUuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vVGV4dElucHV0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKERSVFVuZG9NYW5hZ2Vy
OjpEUlRVbmRvTWFuYWdlcik6CisgICAgICAgIChVSURlbGVnYXRlOjpVSURlbGVnYXRlKToKKyAg
ICAgICAgKFVJRGVsZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9VSURlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0Lmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJl
ZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJl
ZC9jb2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9Db3VudGVycy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuSlNUZXN0KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hDb3VudGVkU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5nVXNp
bmdFbnN1cmUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdE1vdmluZ1VzaW5nQWRkKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0xpc3RIYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6cnVuTG9ja1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bh
cmtpbmdMb3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50
ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1dlYWtQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpDQVJpbmdCdWZmZXJUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y3JlYXRlVGVzdFZhbHVlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxl
TW9uaXRvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpXZWJLaXQyVXNlck1lc3NhZ2VSb3VuZFRyaXBUZXN0OjpTZXRVcCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6V2ViS2l0MldpbGxMb2FkVGVzdDo6U2V0VXApOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxl
X0J1bmRsZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkZvcmNlTGlnaHRBcHBlYXJhbmNl
SW5CdW5kbGVUZXN0OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHA6CisgICAgICAgIChzZXJ2
ZXJDYWxsYmFjayk6CisgICAgICAgICh0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQ
Uyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NU
ZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2lu
ZG93VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01ET01XaW5kb3dUZXN0OjpjcmVhdGUpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgIChhcHBseVdvcmthcm91bmRU
b0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKToKKyAgICAgICAg
KC1bVGVzdFdLV2ViVmlldyBpbml0V2l0aEZyYW1lOmNvbmZpZ3VyYXRpb246YWRkVG9XaW5kb3c6
XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNl
cnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbToK
KyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIGluaXRXaXRoRm9udE9wdGlvbnM6XSk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9FdmVudFNlbmRlclByb3h5Lmg6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlvblByb3ZpZGVyTW9jay5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRpbmdDb250cm9sbGVyOjpjYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZTo6ZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpz
ZXRPcGVuUGFuZWxGaWxlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1N0cmluZ0Z1bmN0aW9ucy5oOgorICAgICAgICAoV1RSOjp0b1NURCk6CisgICAgICAgIChXVFI6
OnRvV1RGU3RyaW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToK
KyAgICAgICAgKFdUUjo6Y3JlYXRlVGVzdFVSTCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpydW5UZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3Jl
YXRlV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6Omdl
dEdES0tleVN5bUZvcktleVJlZik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVz
dENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNl
bmRlclByb3h5Ojptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpt
b3VzZVVwKToKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8pOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwOgor
ICAgICAgICAoV1RSOjp3cGVLZXlTeW1Gb3JLZXlSZWYpOgorCiAyMDE5LTA4LTE1ICBTaWh1aSBM
aXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgaW1wcm92ZW1lbnRzIG9u
IHdlYiBzdG9yYWdlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaAppbmRleCBlNzNhMmMyN2QxNzcyMmQxMjRkMTQyNTFiOTBiNjU1MjEwODVhMzFjLi4x
YmRmMWM0MzBiYzUwYmUzODRmYWNjZTUwZGZmYTUyOGRhNDg1NmE1IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKQEAgLTQxLDYgKzQxLDcgQEAK
ICNlbmRpZgogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsK
ICAgICB+QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0dDQ29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvR0NDb250cm9s
bGVyLmgKaW5kZXggNzljZWFmYzlmMmU5YWU3MjIxMDEzODAwNDI3YjEzNmQ1ZDZhMmYzYy4uNjQy
NDM4NGRmNTMwZThjMWZkYWU4ZmI2MTMxMWJmMGFkYzRhNmE4ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvR0NDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
R0NDb250cm9sbGVyLmgKQEAgLTMwLDggKzMwLDEwIEBACiAjZGVmaW5lIEdDQ29udHJvbGxlcl9o
CiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CiAKIGNsYXNzIEdDQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR0NDb250cm9sbGVyKCk7CiAgICAgfkdDQ29udHJv
bGxlcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCA5MGM2NGMzNjE0Y2Rj
NDJkYjZmNDk0MmJkZTFhZDEzMGZkMWZkOWNiLi5kMmJmMmU4MmFjZDY0NWM1NzhkNjJmYzZiNzBj
ODdiYmE5ZmU2Y2YzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVy
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMzYzLDEx
ICszNjMsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgYWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW4KICAgICBBU1NFUlQoISpleGNlcHRp
b24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShvcmlnaW4uZ2V0KCkpOwotICAgIGF1dG8gb3JpZ2luQnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gb3JpZ2luQnVmZmVyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsK
ICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKG9yaWdpbi5nZXQoKSwgb3JpZ2luQnVmZmVyLmdl
dCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAgIG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShkZXN0aW5hdGlvbi5nZXQoKSk7Ci0gICAgYXV0byBkZXN0aW5hdGlv
bkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBh
dXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGRlc3Rp
bmF0aW9uLmdldCgpLCBkZXN0aW5hdGlvbkJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAK
ICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xMzE4LDcgKzEzMTgsNyBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKUwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXpl
X3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGhlYWRlci5n
ZXQoKSk7Ci0gICAgYXV0byBoZWFkZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
bWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBoZWFkZXJCdWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0
VVRGOENTdHJpbmcoaGVhZGVyLmdldCgpLCBoZWFkZXJCdWZmZXIuZ2V0KCksIG1heExlbmd0aCAr
IDEpOwogCiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5u
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMjM5NCw3ICsyMzk0LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGJvb2wgc2hvdWxk
UGFpbnRCcm9rZW5JbWFnZSkKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9y
Q2hhbm5lbChKU1N0cmluZ1JlZiBjaGFubmVsKQogewogICAgIHNpemVfdCBtYXhMZW5ndGggPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY2hhbm5lbCk7Ci0gICAgYXV0byBidWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBi
dWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KG1heExlbmd0
aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoY2hhbm5lbCwgYnVmZmVyLmdldCgp
LCBtYXhMZW5ndGggKyAxKTsKIAogICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0TG9nQ2hhbm5l
bFRvQWNjdW11bGF0ZSh7IGJ1ZmZlci5nZXQoKSB9KTsKQEAgLTI0NjQsNyArMjQ2NCw3IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6cnVuVUlTY3JpcHQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5n
UmVmIHNjcmlwdCwgSlNWYWx1ZVJlCiAgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soY2FsbGJh
Y2tJRCwgY2FsbGJhY2spOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4dCkKLSAgICAgICAg
bV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdUUjo6VUlTY3JpcHRDb250ZXh0
PigqdGhpcyk7CisgICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKIAogICAgIFN0cmlu
ZyBzY3JpcHRTdHJpbmcoSlNTdHJpbmdHZXRDaGFyYWN0ZXJzUHRyKHNjcmlwdCksIEpTU3RyaW5n
R2V0TGVuZ3RoKHNjcmlwdCkpOwogICAgIG1fVUlTY3JpcHRDb250ZXh0LT5ydW5VSVNjcmlwdChz
Y3JpcHRTdHJpbmcsIGNhbGxiYWNrSUQpOwpAQCAtMjUyMSw3ICsyNTIxLDcgQEAgdm9pZCBUZXN0
UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmlu
Z0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBudWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxl
QnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgp
KSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltd
PihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUpOwogICAgICAgICBK
U1N0cmluZ0dldFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCksIGZpbGVC
dWZmZXJTaXplKTsKIAogICAgICAgICBtX29wZW5QYW5lbEZpbGVzLnB1c2hfYmFjayhmaWxlQnVm
ZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpp
bmRleCAyZTkzOTdmZjU5NDkyNTAwZmIwODY4NzFjOGFmN2M2ZjE2NjlhYmY0Li4xMzA2OGNhZTAz
NTMyYmQ4ZjI1ZmQ0YmRiYzUyNWY1MmM0MjAwYjlkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xNTM1LDcgKzE1MzUsNyBAQCBzdGF0aWMgTlNTdHJp
bmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgIC8vIHRoZSByZXN1bHQg
d2l0aG91dCBhbnkgY29udmVyc2lvbi4KICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3Ry
aW5nUmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpaW5uZXJUZXh0KSk7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dl
dE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nUmVmLmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7
CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25TdHJp
Y3Qoc3RyaW5nUmVmLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIFtyZXN1
bHQgYXBwZW5kRm9ybWF0OkAiJUBcbiIsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4xRmFsbGJh
Y2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0Nv
bnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJv
bGxlci5tbQppbmRleCA0NjFiZDNkZjNlYmIyNjAzYWMzMjE4Mjg4MjE4ZGQ4ZjY5MTY4ZmZkLi4z
YmUzMzIyMWQ2YjNlYmMzNTZkNTFlMzM0YTI0ZDkyOWFlMjUzYTllIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtNTY4LDcg
KzU2OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2xhc3NNZXRob2RTd2l6emxlcj4gZXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWCiB7CiAgICAgaWYgKFt2aWV3IGlzS2lu
ZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAgICAgIHZpZXcgPSBbKFdlYkhUTUxW
aWV3ICopdmlldyBfaGl0Vmlld0ZvckV2ZW50OmV2ZW50XTsKLSAgICByZXR1cm4gIVt2aWV3IGlz
S2luZE9mQ2xhc3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NN
ZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0
dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0
dG9ucykpIDogTlVMTDsKKyAgICByZXR1cm4gIVt2aWV3IGlzS2luZE9mQ2xhc3M6W05TU2Nyb2xs
ZXIgY2xhc3NdXSA/IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xh
c3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
Pihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpIDogTlVMTDsKIH0KIAogc3RhdGlj
IE5TVUludGVnZXIgc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCmluZGV4IGVmMmQyZWZiODU5ZjRiOGEy
MmYzMGM0NjdhY2UxZjhhYWQxNTdhNGQuLmNkZmU4YWNiNDY4Yzc0ZDBhZTA4NGNmODc2ZDUzNGZm
MWUzYmE1N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2Jq
ZWN0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAgRk9STUFURVRDKiBjZlVybFdGb3JtYXQoKQogfQogCiBjbGFzcyBX
Q0VudW1Gb3JtYXRFdGMgZmluYWwgOiBwdWJsaWMgSUVudW1GT1JNQVRFVEMgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdDRW51bUZvcm1hdEV0
Yyhjb25zdCBWZWN0b3I8Rk9STUFURVRDPiYgZm9ybWF0cyk7CiAgICAgZXhwbGljaXQgV0NFbnVt
Rm9ybWF0RXRjKGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Rk9STUFURVRDPj4mIGZvcm1h
dHMpOwpAQCAtMjQ5LDcgKzI1MCw3IEBAIFNURE1FVEhPRElNUCBEUlREYXRhT2JqZWN0OjpTZXRE
YXRhKF9Jbl8gRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBfSW5fIFNUR01FRElVTSoKICAgICBpZiAo
IXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAg
ICBhdXRvIGZvcm1hdGV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFURVRDPigpOworICAgIGF1
dG8gZm9ybWF0ZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Rk9STUFURVRD
PigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0Z01lZGl1bURlbGV0ZXI+IHBT
dGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5KGZvcm1hdGV0Yy5nZXQoKSwg
c2l6ZW9mKEZPUk1BVEVUQykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0RSVERhdGFPYmplY3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0
LmgKaW5kZXggYjk1MmIwODFhZmVhYTM5MTkyN2FkMmNhYjdkZDE4ZTg3OTMzNzQyMS4uMTZjNjQy
MzA4ZTU0YzE1NWFlMzY0ZDI3MzAxYjI4MjUzOGZiZDU5NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRFJURGF0YU9iamVjdC5oCkBAIC00NSw2ICs0NSw3IEBAIHN0cnVjdCBTdGdNZWRpdW1E
ZWxldGVyIHsKIH07CiAKIGNsYXNzIERSVERhdGFPYmplY3QgZmluYWwgOiBwdWJsaWMgSURhdGFP
YmplY3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZvaWQg
Q29weU1lZGl1bShTVEdNRURJVU0qIHBNZWREZXN0LCBTVEdNRURJVU0qIHBNZWRTcmMsIEZPUk1B
VEVUQyogcEZtdFNyYyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
UlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5oCmluZGV4IDcwYmQ0NzBlM2RjYzBl
NjMwZjZkNTFjMmVjYThiNDIzZGQzZjkzZDcuLjQ2ZDg0NWUzMDI3OThjM2UzMjM4ZjJhYmQxNzU1
N2ZkNGE1OWRkYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNr
dG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPHdpbmRlZi5oPgogCiBjbGFzcyBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVy
IGZpbmFsIDogcHVibGljIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEUlREZXNrdG9wTm90aWZpY2F0
aW9uUHJlc2VudGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
UlREcm9wU291cmNlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5o
CmluZGV4IGQ5ZWU3ZDAxOTY1NjM2ZTEzMzE2ODc3Y2U5MzRiYzRjNmQ3MDIxY2MuLjlhY2E0NjQz
ZmRjMjFhZTgxNTljNWVjNjlmZWRlYzY5Nzk5MWQwZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EUlREcm9wU291cmNlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0RSVERyb3BTb3VyY2UuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KIAogY2xhc3MgRFJURHJvcFNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJRHJvcFNvdXJjZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01f
T3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsgICAgICAgIAogICAgIHZpcnR1YWwgVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRHJhZ2dpbmdJbmZvLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHJhZ2dpbmdJ
bmZvLmgKaW5kZXggMDJhZGFiMzYzNDYyNDhiMWRiYTY0Y2NmMGM2N2JkYWQ3N2QzNTlkYi4uMDkw
N2Q1NDhkN2MzMDZjYzZmMTFhYzg2NGM5ZjRmYzBhMzllOGVkYSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0RyYWdnaW5nSW5mby5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EcmFnZ2luZ0luZm8uaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPG9iamlk
bC5oPgogCiBjbGFzcyBEcmFnZ2luZ0luZm8geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIERyYWdnaW5nSW5mbyhJRGF0YU9iamVjdCogb2JqZWN0LCBJRHJvcFNv
dXJjZSogc291cmNlKQogICAgICAgICA6IG1fb2JqZWN0KG9iamVjdCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9FZGl0aW5nRGVsZWdhdGUuaAppbmRleCA0ZjE3NjdjNmVlNGIyNTJiODg4ZTkw
YTViZjlmNjA2ODc4ZTFjZGVmLi5iNTE3MzlmNWNkYTNiOWFiNDA3Y2Q3MDk5NGI3OTZjMjRhZjUz
NGMxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRWRpdGluZ0RlbGVnYXRl
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0VkaXRpbmdEZWxlZ2F0ZS5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViS2l0TGVnYWN5L1dlYktpdC5oPgogCiBjbGFzcyBf
X2RlY2xzcGVjKHV1aWQoIjI2NURDRDRCLTc5QzMtNDRhMi04NEJDLTUxMUMzRURBQkQ2RiIpKSBF
ZGl0aW5nRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgSVdlYkVkaXRpbmdEZWxlZ2F0ZTIsIHB1Ymxp
YyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEVkaXRpbmdEZWxlZ2F0ZSgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0V2ZW50U2VuZGVyLmNwcAppbmRleCBhZGNiODQ3ZTM3MmIzMmY3N2QyMGJlMzhhOWQ1Y2Jk
YWJmNTdmNWUxLi4zYWJiOTVkYzAzOTIwZjRlNzgyNGYwNjc4MGU4MzFmMDVjNTA4ZGE0IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVudFNlbmRlci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAg
c3RhdGljIGludCB0aW1lT2Zmc2V0Owogc3RhdGljIFBPSU5UIGxhc3RNb3VzZVBvc2l0aW9uOwog
CiBzdHJ1Y3QgRGVsYXllZE1lc3NhZ2UgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBNU0cgbXNnOwogICAgIHVuc2lnbmVkIGRlbGF5OwogfTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCmluZGV4IGM4MGRmMWJlNWYy
ZGU0N2QzYjgzMTYzN2VmNmU5ZmJjZDkzNGM4ZTYuLjExYzkzMzliMTZkODA0ZDJjMjAxYzkzMjlm
NGE4YzM1NDQyYTgzY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9h
ZERlbGVnYXRlLmNwcApAQCAtNzIsOSArNzIsOSBAQCBzdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQoSVdlYkZyYW1lKiB3ZWJGcmFtZSkKIH0KIAogRnJhbWVMb2FkRGVsZWdh
dGU6OkZyYW1lTG9hZERlbGVnYXRlKCkKLSAgICA6IG1fZ2NDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8R0NDb250cm9sbGVyPigpKQotICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPigpKQotICAgICwgbV90ZXh0
SW5wdXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dElucHV0Q29udHJvbGxlcj4oKSkK
KyAgICA6IG1fZ2NDb250cm9sbGVyKG1ha2VVbmlxdWU8R0NDb250cm9sbGVyPigpKQorICAgICwg
bV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihtYWtlVW5pcXVlPEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyPigpKQorICAgICwgbV90ZXh0SW5wdXRDb250cm9sbGVyKG1ha2VVbmlxdWU8VGV4dElucHV0
Q29udHJvbGxlcj4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuaAppbmRleCAyY2UyZTlkMTU3NTc0ZTkxYWJlNmExNDdlMjhjZTg1YTM2Mjgx
ZGMyLi5mOGRmOGMzM2JmYTRhOTBlY2Q1M2Y5MTM4MTFmMDBhYzE3MjAzOTE0IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaApAQCAtMzYsNiArMzYsNyBA
QCBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyOwogY2xhc3MgR0NDb250cm9sbGVyOwogCiBjbGFz
cyBGcmFtZUxvYWREZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUsIHB1Ymxp
YyBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMiwgcHVibGljIElXZWJOb3RpZmljYXRpb25P
YnNlcnZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRnJh
bWVMb2FkRGVsZWdhdGUoKTsKICAgICB2aXJ0dWFsIH5GcmFtZUxvYWREZWxlZ2F0ZSgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0hpc3RvcnlEZWxlZ2F0ZS5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0hpc3RvcnlEZWxlZ2F0ZS5oCmluZGV4IGJhNmExYWY0NzM2
NGYxODljMDljNDY3NzdlYTMzMmM0OWNkMTkzM2UuLmFhZDE4MTVkNmY5NDhiOGEyYTBkZDE0NWRh
NWNmNzczZTIwMzA0NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9IaXN0
b3J5RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vSGlzdG9yeURlbGVn
YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxXZWJLaXRMZWdhY3kvV2ViS2l0Lmg+
CiAKIGNsYXNzIEhpc3RvcnlEZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViSGlzdG9yeURlbGVnYXRlIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIaXN0b3J5RGVsZWdh
dGUoKTsKICAgICB2aXJ0dWFsIH5IaXN0b3J5RGVsZWdhdGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUu
aAppbmRleCBiOGViODkwYTRmODY3Y2RlMmJjYWIzOGNmYmVjMGIwMWQ3YThjZTllLi40NGY5MmNh
ZWVkMzU4ZDRhYzM4MGUzNGJjNTczYjZjMjg2ODM2ODA0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTUQ1LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5o
CkBAIC0zMiw2ICszMiw3IEBACiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVUxPTkc7CiAKIHN0cnVj
dCBNRDVfQ1RYIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgVUxP
TkcgaVsyXTsKICAgICBVTE9ORyBidWZbNF07CiAgICAgdW5zaWduZWQgY2hhciBpbls2NF07CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUG9saWN5RGVsZWdhdGUuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Qb2xpY3lEZWxlZ2F0ZS5oCmluZGV4IGU5ODM4NjUwNzY1
MjIwZWZmMjFiYzEwODk0ODdhYmQ5M2JmYTA2YTAuLjY5MzIyMTQ1MzY3MWVmYmFhOTkxMzhlMjQy
MTA4NGNmNTIyY2E5OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Qb2xp
Y3lEZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9Qb2xpY3lEZWxlZ2F0
ZS5oCkBAIC0zNCw2ICszNCw3IEBACiBjbGFzcyBUZXN0UnVubmVyOwogCiBjbGFzcyBQb2xpY3lE
ZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBJV2ViUG9saWN5RGVsZWdhdGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFBvbGljeURlbGVnYXRlKCk7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKaW5kZXggMTFh
ZWI3ODA4M2RiNTNjZDhlOWY1NTk1ZDgxOGMwNzg3MjUyZjk1Yi4uZTE3YjVjNDQ4Y2QyYzcyMzgw
YTQ4ZjU5Njc1NTc3NmY2YTIzNjBmMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Jlc291cmNlTG9hZERlbGVnYXRlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogCiBjbGFzcyBSZXNvdXJjZUxvYWREZWxlZ2F0ZSA6IHB1YmxpYyBJV2ViUmVz
b3VyY2VMb2FkRGVsZWdhdGUsIHB1YmxpYyBJV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRl
MiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVzb3VyY2VM
b2FkRGVsZWdhdGUoKTsKICAgICB2aXJ0dWFsIH5SZXNvdXJjZUxvYWREZWxlZ2F0ZSgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1RleHRJbnB1dENvbnRyb2xsZXIuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXh0SW5wdXRDb250cm9sbGVyLmgKaW5kZXggMjVj
MzQ4ZTgxMTBhZmUxMTdkZTRkOGM5NWM3MmJiYjUzNmY2MTRiNS4uMjlmMDM4YmUyZGRiNTBlOWZh
ZTUzMGUxYzZkMTNjMWQ0NmY5OTc5MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL1RleHRJbnB1dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VGV4dElucHV0Q29udHJvbGxlci5oCkBAIC0zNCw4ICszNCwxMCBAQAogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1
ZVJlZi5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
CiBjbGFzcyBUZXh0SW5wdXRDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2b2lkIG1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmLCBKU09i
amVjdFJlZiB3aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAppbmRleCBmMGFkYmNlNDc5NmZhYmY0ZjBkNDJi
MjcxMTYzMzcwMWFjNzgxMzE0Li44ZjgyZjBkOTI2YzBhZDY5NjEwMWE1YjEzNTRlN2U3MGY0Mzg0
NDNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCkBAIC00Nyw2ICs0
Nyw3IEBACiB1c2luZyBzdGQ6OndzdHJpbmc7CiAKIGNsYXNzIERSVFVuZG9PYmplY3QgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERSVFVuZG9PYmplY3QoSVdl
YlVuZG9UYXJnZXQqIHRhcmdldCwgQlNUUiBhY3Rpb25OYW1lLCBJVW5rbm93biogb2JqKQogICAg
ICAgICA6IG1fdGFyZ2V0KHRhcmdldCkKQEAgLTcxLDYgKzcyLDcgQEAgY2xhc3MgRFJUVW5kb09i
amVjdCB7CiB9OwogCiBjbGFzcyBEUlRVbmRvU3RhY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5k
b1ZlY3Rvci5pc0VtcHR5KCk7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX3VuZG9WZWN0b3IuY2xl
YXIoKTsgfQpAQCAtODMsNiArODUsNyBAQCBjbGFzcyBEUlRVbmRvU3RhY2sgewogfTsKIAogY2xh
c3MgRFJUVW5kb01hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIERSVFVuZG9NYW5hZ2VyKCk7CiAKQEAgLTEwMSw4ICsxMDQsOCBAQCBjbGFzcyBEUlRV
bmRvTWFuYWdlciB7CiB9OwogCiBEUlRVbmRvTWFuYWdlcjo6RFJUVW5kb01hbmFnZXIoKQotICAg
IDogbV9yZWRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCi0gICAgLCBt
X3VuZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKKyAgICA6IG1fcmVk
b1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNrPigpKQorICAgICwgbV91bmRvU3RhY2sobWFr
ZVVuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCiB7CiB9CiAKQEAgLTE0Niw3ICsxNDksNyBAQCB2b2lk
IERSVFVuZG9NYW5hZ2VyOjp1bmRvKCkKIH0KIAogVUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCi0g
ICAgOiBtX3VuZG9NYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb01hbmFnZXI+KCkpCisg
ICAgOiBtX3VuZG9NYW5hZ2VyKG1ha2VVbmlxdWU8RFJUVW5kb01hbmFnZXI+KCkpCiAgICAgLCBt
X2Rlc2t0b3BOb3RpZmljYXRpb25zKG5ldyBEUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVy
KQogewogICAgIG1fZnJhbWUuYm90dG9tID0gMDsKQEAgLTE1Nyw3ICsxNjAsNyBAQCBVSURlbGVn
YXRlOjpVSURlbGVnYXRlKCkKIAogdm9pZCBVSURlbGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKCkK
IHsKLSAgICBtX3VuZG9NYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4o
KTsKKyAgICBtX3VuZG9NYW5hZ2VyID0gbWFrZVVuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKIH0K
IAogSFJFU1VMVCBVSURlbGVnYXRlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9VSURlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxl
Z2F0ZS5oCmluZGV4IDc4MjU4OTAzNzcwMDU1YWM5MjQ2NjE5MWE1ZWI4ZGVmZjQyNTE0YmIuLmY0
ZjhkNWQyNzYzOWNjYjc0NDc2YWNlY2YxNWYyNzFkYjBmYjZlNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1VJRGVsZWdhdGUuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBEUlRVbmRvTWFuYWdl
cjsKIGNsYXNzIERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAKIGNsYXNzIFVJRGVs
ZWdhdGUgZmluYWwgOiBwdWJsaWMgSVdlYlVJRGVsZWdhdGUyLCBJV2ViVUlEZWxlZ2F0ZVByaXZh
dGUzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBVSURlbGVn
YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udGV4dC5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250ZXh0LmgKaW5kZXggNGUwMjBmMTk2Y2QwMzNkNjFlZTBlNjI4ZjZh
MWU1OWNhMWMzMzQ1OC4uMGI4NGQyZDQ1NDU1ODNkZTlmYzBkZWMxMmE0YWE4OGE2NTllZDE5OCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250ZXh0LmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250ZXh0LmgKQEAgLTY4LDYgKzY4LDcgQEAgdHlwZWRlZiBlbnVtICB7CiB9IENh
bGxiYWNrVHlwZTsKIAogY2xhc3MgVUlTY3JpcHRDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVSVNjcmlwdENvbnRleHQpOwog
cHVibGljOgogICAgIFVJU2NyaXB0Q29udGV4dChVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSYpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01ldGhvZFN3aXp6
bGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIu
aAppbmRleCAyOGRiMTBhNDc5OTYzMGM2NGM1NWQwNzg2YzAwZWUwOTQ4OTE0NWUyLi4zOWI0ZTVl
YTcxODM2ODhjZGVjOWJlZmNjOTY0Y2U4OTNhNTQzZjA3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaAorKysgYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaApAQCAtMjYsOSArMjYsMTEg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogY2xhc3Mg
Q2xhc3NNZXRob2RTd2l6emxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ2xhc3NNZXRob2RTd2l6emxlcik7CiBwdWJsaWM6CiAgICAg
Q2xhc3NNZXRob2RTd2l6emxlcihDbGFzcywgU0VMLCBJTVApOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmggYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL2NvY29hL0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaAppbmRleCBiOGEw
YjBiMThkMTMxZWNjOTliMjZhMzkxYzg5MGY5ZjZjNmMwNzJlLi42MjQ3NGQ3Y2Q5Nzc3OThjNWJi
ZWNhZjY1NmE2MjY0ODU1YWNmODliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L2NvY29hL0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL2NvY29hL0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaApAQCAtMjYsOSArMjYsMTEgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8b2JqYy9ydW50aW1lLmg+CisjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogY2xhc3MgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zdGFuY2VNZXRob2RTd2l6emxlcik7CiBwdWJsaWM6CiAgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlcihDbGFzcywgU0VMLCBJTVApOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVy
cy5oCmluZGV4IGY5ZWEyMjQwMjYxNTBkOGUxYWM2YmI3NjE1YjZkZTM4OTBhZjY3MGUuLmFiNWM1
MmY3NWQxYWM2YWY5NjBhYzE0Y2E3MGI1Y2I3NGZhMzYyODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ291bnRlcnMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJz
LmgKQEAgLTI3LDYgKzI3LDggQEAKICNpZm5kZWYgQ291bnRlcnNfaAogI2RlZmluZSBDb3VudGVy
c19oCiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCiBzdHJ1Y3QgQ29weU1vdmVDb3Vu
dGVyIHsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3RydWN0aW9uQ291bnQ7CiAgICAgc3RhdGlj
IHVuc2lnbmVkIGNvcHlDb3VudDsKQEAgLTUwLDYgKzUyLDcgQEAgc3RydWN0IENvcHlNb3ZlQ291
bnRlciB7CiAKIAogc3RydWN0IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29uc3Ry
dWN0aW9uQ291bnQ7CiAgICAgc3RhdGljIHVuc2lnbmVkIGRlc3RydWN0aW9uQ291bnQ7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKaW5kZXggMjEzNmU5OGQ4ZWJiODc1ZDU5
N2ZjNmUwN2M3YjAxZWQ1Yjg0YWUxNi4uNmEyMzM2MzI5NDFhY2Y2MDcwNTk0OTQyNjQwMWIzMjcz
MzdjNzA4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKQEAgLTc1LDcg
Kzc1LDcgQEAgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgcnVuSlNUZXN0KGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIFdLUGEKICAgICBVdGlsOjpydW4oJmNvbnRleHQu
ZGlkRmluaXNoKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKGNvbnRleHQuYWN0dWFsU3RyaW5nLmdldCgpKTsKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6
ZSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhjb250ZXh0LmFjdHVhbFN0cmluZy5nZXQo
KSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICAKICAgICByZXR1cm4gY29tcGFyZUpT
UmVzdWx0KHNjcmlwdCwgYnVmZmVyLmdldCgpLCBleHBlY3RlZFJlc3VsdCk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCmluZGV4IDhmOGQ3NjhhNTNjMjc1MWEyNDNl
MDU5NWUyYzBjMGY0NDVkZDk2YzguLmJiYmZmNzA5ZTY3ZDM1OWI0ZTQ4MTcxZWQ3YzRjMjQwMDhh
NTY3ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCkBAIC02
OSw3ICs2OSw3IEBAIFdLQ29udGV4dFJlZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVU
ZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0TmFtZSwgV0tUCiBzdGQ6OnN0cmluZyB0b1NURChX
S1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dl
dE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6
ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIu
Z2V0KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZ2V0KCks
IHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgK
aW5kZXggYWQyYTczMmQ1MTk0N2JiYzdhZmM2NGUyN2Q0MjE1Y2UzMjg3ZGRlZS4uMGMyN2E0NjE2
NDVmYmExMmE1YzY5NWQ5MzI2NDMwNTI2YzRlZjEyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtV2ViVmlldy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3JtV2ViVmlld19o
CiAjZGVmaW5lIFBsYXRmb3JtV2ViVmlld19oCiAKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CiAj
ZW5kaWYKQEAgLTYzLDYgKzY1LDcgQEAgdHlwZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZpZXJz
OwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFzcyBQbGF0Zm9ybVdlYlZpZXcgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRm
b3JtV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmKTsKICAgICBleHBsaWNpdCBQbGF0Zm9y
bVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IDRiMTBjODZhMmFiNzMyZTFlYTYy
NzQ4NGNjNzg5NDBmYjZjZDZlOTYuLjJhMDZmOGJhNWNhOWZlYjQ5MmEzNTIyYzVjNjU1MDEzOGQy
MjM3ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVk
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKQEAg
LTQwNyw2ICs0MDcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgZGVzdHJ1Y3RvcnMpCiBzdGF0aWMg
aW50IHNub3dmbGFrZXMgPSAwOwogc3RhdGljIGludCBtZWx0ZWQgPSAwOwogc3RydWN0IHNub3dm
bGFrZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHN0YXRpYyB2
b2lkIHJlc2V0KCkgeyBzbm93Zmxha2VzID0gbWVsdGVkID0gMDsgfQogICAgIHNub3dmbGFrZSgp
IHsgKytzbm93Zmxha2VzOyB9CiAgICAgfnNub3dmbGFrZSgpIHsgKyttZWx0ZWQ7IH0KQEAgLTQx
Niw3ICs0MTcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKIHsKICAgICAvLyBV
bmlxdWUgc25vd2ZsYWtlcyBjYW5ub3QgYmUgY29waWVkLgogICAgIHsKLSAgICAgICAgYXV0byBz
ID0gbWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAg
ICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAg
ICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwg
MCk7CiAgICAgfQpAQCAtNDI1LDcgKzQyNiw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVf
cHRyKQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBzID0g
bWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBh
dXRvIHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAg
IFVuZXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IGMoV1RGTW92ZShzKSk7CiAg
ICAgICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRl
ZCwgMCk7CkBAIC00NDYsNyArNDQ3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIp
CiAgICAgfTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dm
bGFrZT4sIGludD4gcyhzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIEV4
cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMobWFrZVVuaXF1ZTxzbm93
Zmxha2U+KCkpOwogICAgICAgICBwbG93KFdURk1vdmUocykudmFsdWUoKSk7CiAgICAgfQogICAg
IEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ1NCw3ICs0NTUsNyBAQCBURVNUKFdURl9F
eHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0g
ICAgICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVu
ZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0
ZWQ8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtl
VW5pcXVlPHNub3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7
CiAgICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ2Miw3ICs0NjMsNyBA
QCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7
CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxh
a2U+PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKSk7Cisg
ICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VV
bmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RGTW92
ZShzKS5lcnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCmluZGV4
IDg0ZGE1ZWMzZmZjMjQ4YWNkZDllMzYzMzAzOGM2OWRhZTg5MTIwOTkuLjdiOGZhZjI4OGFiYzA3
Y2ZhZjhiNTI3MTIzOGY3NmQwMTMwMTJlZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBURVNUKFdU
Rl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3Rk
Ojp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNl
dDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZN
b3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yNTksNyArMjU5LDcgQEAgVEVTVChX
VEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleUluaXRpYWxDb3VudCkKIAogICAgIEhhc2hD
b3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4g
aGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1h
a2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBoYXNoQ291bnRl
ZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAxMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI5OCw3
ICsyOTgsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2lu
Z1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+
IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhh
c2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMTIsNyArMzEyLDcg
QEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3
UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFz
aENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50
Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENv
dW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBU
RVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRlcikK
IHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRT
ZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4o
NSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMzNyw3ICszMzcsNyBAQCBURVNUKFdURl9I
YXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAg
IEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFz
aENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggMWUxNjNkMzg5OThlNmJhYmZmZjUzODQxM2Nj
YTI4YWE2ZDI5ODk4Mi4uYTgwY2E3NDk0YThmOWE3OTY3ZTFlNDk0NmZlOGNjYTYzOWNiYjU4YiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTE5MSw3ICsx
OTEsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAK
LSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwg
Mik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNv
bnN0cnVjdGlvbkNvdW50KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBV
bmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5p
cXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsK
ICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI0NCw3ICsyNDQsNyBA
QCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIp
CiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBh
dXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1
ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50
KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciks
IDIpOwogCkBAIC0yNTUsNyArMjU1LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5
X0dldFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+
LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+
KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRk
KFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBURVNUKFdURl9I
YXNoTWFwLCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1h
cDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFw
OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHIpLCAyKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0
cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVl
UHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtNTYz
LDEyICs1NjMsMTIgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1VuaXF1ZVBvaW50ZXIpCiB7
CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkPj4gbWFwOwog
ICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDEpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPHVuc2lnbmVkPigxKTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1hcC5nZXQo
MSkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdl
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1bHQuaXRlcmF0b3ItPmtleSk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgYXV0byBh
ZGRSZXN1bHQyID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVu
c2lnbmVkPigyKTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwg
W10geyByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDIp
OyB9KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgxdSwgKmFkZFJlc3VsdDIuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKDF1LCBhZGRSZXN1bHQyLml0ZXJhdG9yLT5rZXkpOwpAQCAtNTkwLDYgKzU5MCw3IEBA
IFRFU1QoV1RGX0hhc2hNYXAsIEVuc3VyZV9SZWZQdHIpCiB9CiAKIGNsYXNzIE9iamVjdFdpdGhS
ZWZMb2dnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE9i
amVjdFdpdGhSZWZMb2dnZXIoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgICAgIDogbV9s
b2dnZXIoV1RGTW92ZShsb2dnZXIpKQpAQCAtNjA0LDcgKzYwNSw3IEBAIHZvaWQgdGVzdE1vdmlu
Z1VzaW5nRW5zdXJlKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogewogICAgIEhhc2hNYXA8dW5z
aWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogICAgIAot
ICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0
aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CisgICAgbWFwLmVuc3VyZSgxLCBbJl0g
eyByZXR1cm4gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikp
OyB9KTsKIH0KIAogdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dn
ZXIpCkBAIC02MTIsNyArNjEzLDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxv
Z2dlcj4mJiBsb2dnZXIpCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9i
amVjdFdpdGhSZWZMb2dnZXI+PiBtYXA7CiAKICAgICBhdXRvJiBzbG90ID0gbWFwLmFkZCgxLCBu
dWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgc2xvdCA9IHN0ZDo6bWFrZV91bmlxdWU8T2Jq
ZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsKKyAgICBzbG90ID0gbWFrZVVuaXF1
ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOwogfQogCiBURVNUKFdURl9I
YXNoTWFwLCBFbnN1cmVfTGFtYmRhc0NhcHR1cmluZ0J5UmVmZXJlbmNlKQpAQCAtNjgzLDYgKzY4
NCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFZhbHVlSXNEZXN0cnVjdGVkT25SZW1vdmUpCiBURVNU
KFdURl9IYXNoTWFwLCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKIHsKICAgICBzdHJ1Y3Qg
RGVyZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAgICAgICAgewogICAgICAgICAgICAg
Kytjb3VudDsKQEAgLTY5Nyw3ICs2OTksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBSZWZQdHJOb3Ra
ZXJvZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2ZWRC
dWNrZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VVbmlx
dWU8RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hNYXA8UmVmUHRyPERlcmVmT2JzZXJ2ZXI+
LCBpbnQ+IG1hcDsKICAgICBtYXAuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSwgNSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCmluZGV4IDcxZWNmZGRiODQy
YjZiZDUxNjQxY2EwNWI2MTA4YWQ0OGY2MmJiN2QuLjg3MjY4Yzc0ZjBjYjhmYzE0OWViZjYwYzg1
ODhmY2VkMzU4MWEyMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQu
Y3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5KQog
CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1
bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRFU1QoV1RGX0hh
c2hTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8
c3RkOjp1bmlxdWVfcHRyPGludD4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQo
KTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTE1OCw3ICsxNTgsNyBA
QCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIp
CiB7CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRy
ID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApA
QCAtMTcxLDcgKzE3MSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVV
c2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlx
dWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAg
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAg
IHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1Qo
V1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFz
aFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsK
IAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRy
KSk7CiAKQEAgLTI4Myw2ICsyODMsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBDb3B5Q2FwYWNpdHlJ
c05vdE9uQm91bmRhcnkpCiBURVNUKFdURl9IYXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVE
ZXJlZikKIHsKICAgICBzdHJ1Y3QgRGVyZWZPYnNlcnZlciB7CisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgcmVmKCkKICAg
ICAgICAgewogICAgICAgICAgICAgKytjb3VudDsKQEAgLTI5Nyw3ICsyOTgsNyBAQCBURVNUKFdU
Rl9IYXNoU2V0LCBSZWZQdHJOb3RaZXJvZWRCZWZvcmVEZXJlZikKICAgICAgICAgY29uc3QgRGVy
ZWZPYnNlcnZlciogb2JzZXJ2ZWRCdWNrZXQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIGF1
dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0
byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hTZXQ8
UmVmUHRyPERlcmVmT2JzZXJ2ZXI+PiBzZXQ7CiAgICAgc2V0LmFkZChhZG9wdFJlZihvYnNlcnZl
ci5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlz
dEhhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQu
Y3BwCmluZGV4IDY1N2JlNDFkNjIwNzI0NDY3YTU1NDllMmFiNWExOTQxYzRlMzczYzEuLmI3NzBh
NWIyN2MxZDJiMDk1YTViYjU5ZDY1YWMzZjRkYzRlNGU2OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBURVNU
KFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1
bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0
byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAg
IEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9u
Q291bnQpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQ
dHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1
ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBs
aXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00MTAsNyArNDEwLDcgQEAgVEVTVChX
VEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsK
ICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRy
ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0
ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwog
CkBAIC00MjEsOSArNDIxLDkgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9J
bnNlcnRCZWZvcmVVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlx
dWVfcHRyPGludD4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGgyID0gc3RkOjptYWtl
X3VuaXF1ZTxpbnQ+KDIpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDIpOwogICAgIGF1dG8gcHRyV2l0aDIgPSB1bmlxdWVQ
dHJXaXRoMi5nZXQoKTsKLSAgICBhdXRvIHVuaXF1ZVB0cldpdGg0ID0gc3RkOjptYWtlX3VuaXF1
ZTxpbnQ+KDQpOworICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxpbnQ+KDQpOwogICAgIGF1dG8gcHRyV2l0aDQgPSB1bmlxdWVQdHJXaXRo
NC5nZXQoKTsKIAogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyV2l0aDIpKTsKQEAgLTQz
NSw3ICs0MzUsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2VydEJl
Zm9yZVVzaW5nUmF3UG9pbnRlcikKICAgICBBU1NFUlRfRVEocHRyV2l0aDQsIGxpc3QubGFzdCgp
LmdldCgpKTsKICAgICBBU1NFUlRfRVEoNCwgKmxpc3QubGFzdCgpLmdldCgpKTsKIAotICAgIGF1
dG8gdW5pcXVlUHRyV2l0aDMgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMyk7CisgICAgYXV0byB1
bmlxdWVQdHJXaXRoMyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMyk7
CiAgICAgYXV0byBwdHJXaXRoMyA9IHVuaXF1ZVB0cldpdGgzLmdldCgpOwogCiAgICAgbGlzdC5p
bnNlcnRCZWZvcmUocHRyV2l0aDQsIFdURk1vdmUodW5pcXVlUHRyV2l0aDMpKTsKQEAgLTQ2Miw3
ICs0NjIsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5n
UmF3UG9pbnRlcikKIAogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5p
cXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAg
IGF1dG8qIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1
ZVB0cikpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2Nr
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCmluZGV4IDJkY2Nl
ZGNhZGNjNmMyMjI3M2RlYmMyMGYzZmY2NzdjODczMjkwMjcuLjVmZDMxYmYxYzlhYmVjZmI4YWJl
NzM1NjA4YTQ3YzU2MDQzMDQ3NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0xvY2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2su
Y3BwCkBAIC00Miw5ICs0Miw5IEBAIHN0cnVjdCBMb2NrSW5zcGVjdG9yIHsKIHRlbXBsYXRlPHR5
cGVuYW1lIExvY2tUeXBlPgogdm9pZCBydW5Mb2NrVGVzdCh1bnNpZ25lZCBudW1UaHJlYWRHcm91
cHMsIHVuc2lnbmVkIG51bVRocmVhZHNQZXJHcm91cCwgdW5zaWduZWQgd29ya1BlckNyaXRpY2Fs
U2VjdGlvbiwgdW5zaWduZWQgbnVtSXRlcmF0aW9ucykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
TG9ja1R5cGVbXT4gbG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPExvY2tUeXBlW10+KG51bVRocmVh
ZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8ZG91YmxlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJl
YWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPExvY2tUeXBlW10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8TG9ja1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
ZG91YmxlW10+IHdvcmRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8ZG91Ymxl
W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+
W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhy
ZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOwogCiAgICAgZm9y
ICh1bnNpZ25lZCB0aHJlYWRHcm91cEluZGV4ID0gbnVtVGhyZWFkR3JvdXBzOyB0aHJlYWRHcm91
cEluZGV4LS07KSB7CiAgICAgICAgIHdvcmRzW3RocmVhZEdyb3VwSW5kZXhdID0gMDsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKaW5kZXggNDUyZTIyNzcx
ZGMwNjRhZGFhZmU2MjBlYjMzZTgwMTMwZjc5ZjE5Ny4uZTAwYTA5YjJhMTdhYTczNDg1NmU0MmMx
MTQ1Y2JlNjA4NjNmMGEwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUGFya2luZ0xvdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFy
a2luZ0xvdC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3QgU2luZ2xlTGF0Y2hUZXN0IHsK
IAogdm9pZCBydW5QYXJraW5nVGVzdCh1bnNpZ25lZCBudW1MYXRjaGVzLCB1bnNpZ25lZCBkZWxh
eSwgdW5zaWduZWQgbnVtVGhyZWFkcywgdW5zaWduZWQgbnVtU2luZ2xlVW5wYXJrcykKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gc3RkOjptYWtlX3Vu
aXF1ZTxTaW5nbGVMYXRjaFRlc3RbXT4obnVtTGF0Y2hlcyk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFNpbmdsZUxhdGNoVGVzdFtdPiB0ZXN0cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKIAogICAgIGZvciAodW5zaWduZWQg
bGF0Y2hJbmRleCA9IG51bUxhdGNoZXM7IGxhdGNoSW5kZXgtLTspCiAgICAgICAgIHRlc3RzW2xh
dGNoSW5kZXhdLmluaXRpYWxpemUobnVtVGhyZWFkcyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCmluZGV4IDA4MWRmOWU0ZmMxZDI1MWQ4MTRiMjI2NGJk
MmQwZTA1MmMwYmQ0MWYuLmY0ZWY5ODNiMWE5ZmJlODk4MDdjNzVhYzI4ZmRiNjI2ZDlhOTZhMTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCkBAIC0x
NzAsNyArMTcwLDcgQEAgVEVTVChXVEYsIFJlZkNvdW50ZXIpCiBURVNUKFdURiwgUmVmQ291bnRl
ckRlbGV0ZUNvdW50ZXJXaXRoT3V0c3RhbmRpbmdUb2tlbnMpCiB7CiAgICAgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGVzdENvdW50ZXI+IGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
c3RDb3VudGVyPihbJl0oUmVmQ291bnRlckV2ZW50IGV2ZW50KSB7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IG1ha2VVbmlxdWU8VGVzdENvdW50ZXI+KFsm
XShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsKICAgICAgICAgICAgIGlmICghY291bnRlci0+dmFs
dWUoKSkKICAgICAgICAgICAgICAgICBjb3VudGVyID0gbnVsbHB0cjsKICAgICAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHAKaW5kZXggZjQw
ZWRhOGI0YzNkN2U2Y2MzZmU0MTE5MzM3NzVlMDA0MzAxNzJhYi4uYTZmMTUxOWMwMDIxZGU2OTQ1
MGM4NGIwYmJiM2I2ZjVlMjUxYjU0MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1RocmVhZEdyb3VwLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBj
b3VudFRocmVhZEdyb3VwcyhWZWN0b3I8UmVmPFRocmVhZD4+JiB0aHJlYWRzKQogCiBURVNUKFdU
RiwgVGhyZWFkR3JvdXBSZW1vdmUpCiB7Ci0gICAgY29uc3QgdW5zaWduZWQgTnVtYmVyT2ZUaHJl
YWRzID0gNjQ7CisgICAgY29uc3QgdW5zaWduZWQgTnVtYmVyT2ZUaHJlYWRzID0gMTY7CiAKICAg
ICBMb2NrIGxvY2s7CiAgICAgQ29uZGl0aW9uIHRocmVhZFJ1bm5pbmdDb25kaXRpb247CkBAIC0x
NzksOCArMTc5LDExIEBAIFRFU1QoV1RGLCBUaHJlYWRHcm91cFJlbW92ZSkKIAogICAgIEVYUEVD
VF9FUSgwVSwgY291bnRUaHJlYWRHcm91cHModGhyZWFkcykpOwogCi0gICAgdGhyZWFkUnVubmlu
ZyA9IGZhbHNlOwotICAgIHRocmVhZFJ1bm5pbmdDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAg
eworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOworICAgICAgICB0aHJlYWRS
dW5uaW5nID0gZmFsc2U7CisgICAgICAgIHRocmVhZFJ1bm5pbmdDb25kaXRpb24ubm90aWZ5QWxs
KCk7CisgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZlRocmVhZHM7
IGkrKykKICAgICAgICAgdGhyZWFkc1tpXS0+d2FpdEZvckNvbXBsZXRpb24oKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwCmluZGV4IDRkMmIyMmFhNTRm
OGIwMjU0ODBmNTllNTYxYTNjY2U3MTU1MDIzMTIuLjFhZmUzZTk3NzliYjg0ODg3ZTk0MzBkZTQx
NzI2Yzc0Mzg1MzJmZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1VuaXF1ZVJlZi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVl
UmVmLmNwcApAQCAtMzAsOCArMzAsMTEgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
ICAgIAotY2xhc3MgQSB7IH07CitjbGFzcyBBIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKK307CiBjbGFzcyBCIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBCKGludCBhLCBpbnQgYiwgaW50IGMpCiAgICAgICAgIDogYShhKQpAQCAtNDMsNiArNDYs
NyBAQCBjbGFzcyBCIHsKICAgICBpbnQgYzsKIH07CiBjbGFzcyBDIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDKFVuaXF1ZVJlZjxBPiYmIGEpCiAgICAgICAg
IDogYShXVEZNb3ZlKGEpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNw
cAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1NGZmZmQzMzIxMzk1ZTlmMWUyZDJhN2MyLi41MWVjYTA3
NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5ZmY0ZmQ1NmJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFRFU1QoV1RGX1Zhcmlh
bnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gdW5pcXVlUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAg
ICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4oKTsKICAgICAgICAgVmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcj4sIGludD4gdiA9IFdURk1vdmUodW5pcXVlUHRyKTsKIAogICAgICAgICBF
WFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNv
dW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKaW5kZXggMTUw
YjliNzZjOGE1NjVlMzY1NTQ4MzZlMGJiZWMwNTA1Yzc4NDhmMi4uN2U2MzA2OTNlZWM2MDQxYTM3
NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
V2Vha1B0ci5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgc3RydWN0IEludCA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxJbnQ+IHsKIH07CiAKIGNsYXNzIEJhc2UgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
QmFzZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJhc2Uo
KSB7IH0KIApAQCAtNTc4LDEwICs1NzksMTAgQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hhc2hT
ZXRFeHBhbnNpb24pCiAgICAgICAgIEVYUEVDVF9FUSh3ZWFrSGFzaFNldC5jYXBhY2l0eSgpLCAw
dSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXApOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5pdGlhbENhcGFjaXR5IC8gbWF4TG9h
ZENhcDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwog
ICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0
cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKLSAgICAgICAgICAgIG90aGVyT2JqZWN0cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigpKTsKKyAgICAgICAgICAgIG90aGVyT2JqZWN0cy5h
cHBlbmQobWFrZVVuaXF1ZTxCYXNlPigpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmNoZWNr
Q29uc2lzdGVuY3koKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoc19iYXNlV2Vha1Jl
ZmVyZW5jZXMsIG90aGVyT2JqZWN0cy5zaXplKCkpOwpAQCAtNjE1LDcgKzYxNiw3IEBAIFRFU1Qo
V1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vh
a0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICB1bnNpZ25lZCBvYmplY3RDb3VudCA9
IGluaXRpYWxDYXBhY2l0eSAqIDI7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
YmplY3RDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNl
PigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAgICAgICAg
b2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0
LmNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTY2NywxMCArNjY4LDEwIEBAIFRFU1QoV1RGX1dlYWtQ
dHIsIFdlYWtIYXNoU2V0Q29tcHV0ZXNFbXB0eSkKICAgICB7CiAgICAgICAgIFdlYWtIYXNoU2V0
PEJhc2U+IHdlYWtIYXNoU2V0OwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2U+
PiBvYmplY3RzOwotICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwog
ICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsKICAgICAgICAgZG8gewotICAg
ICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAg
ICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtI
YXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUo
b2JqZWN0KSk7CiAgICAgICAgIH0gd2hpbGUgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgPT0g
Zmlyc3RPYmplY3QuZ2V0KCkpOwpAQCAtNzM0LDggKzczNSw4IEBAIFRFU1QoV1RGX1dlYWtQdHIs
IFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBXZWFr
SGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKLSAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1
ZTxCYXNlPigpOworICAgICAgICBhdXRvIGxhc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7
CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqZmlyc3RPYmplY3QpOwogICAgICAgICB3ZWFrSGFz
aFNldC5hZGQoKmxhc3RPYmplY3QpOwogICAgICAgICBpZiAod2Vha0hhc2hTZXQuYmVnaW4oKS5n
ZXQoKSAhPSBmaXJzdE9iamVjdC5nZXQoKSkKQEAgLTc1OSwxMCArNzYwLDEwIEBAIFRFU1QoV1RG
X1dlYWtQdHIsIFdlYWtIYXNoU2V0Q29tcHV0ZVNpemUpCiAgICAgewogICAgICAgICBXZWFrSGFz
aFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
YXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBub25GaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8
QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpub25GaXJzdE9iamVjdCk7CiAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNl
PigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAg
ICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFw
cGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5iZWdp
bigpLmdldCgpID09IG5vbkZpcnN0T2JqZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAKaW5kZXggMmFhYjY1ZGQ4ZmQ3
ZWYwNzA1MWZiNmY3NTY3NThjZGU3MDJlMDdhMS4uODFkN2JhMjkxYWU5ZjRhYjdjZjJlNWY5YWFk
NjJjOTQyNDM1MzY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NBUmluZ0J1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NBUmluZ0J1ZmZlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQ0FSaW5nQnVmZmVy
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQog
ICAgIHsKICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgICAgICBtX3Jp
bmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9y
aW5nQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Q0FSaW5nQnVmZmVy
PigpOwogICAgIH0KIAogICAgIC8vIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkb3VibGUgc2Ft
cGxlUmF0ZSwgVUludDMyIG51bUNoYW5uZWxzLCBQQ01Gb3JtYXQgZm9ybWF0LCBib29sIGlzSW50
ZXJsZWF2ZWQsIHNpemVfdCBjYXBhY2l0eSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA3NzhlNjE1NWYwNmNj
MTI4Mzk3OTc1ZjA0NTg3MTJhMmM3MTA0MGZhLi5kY2E0NjM2MDJlOTZkNjBhMDQ1MTM4MTIxY2Ji
ZGNlZmJlZTllNWMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIHN0YXRpYyB1bnNpZ25lZCBkZWxldGlvbkNvdW50OwogCiBjbGFzcyBD
YWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FsY0V4cHJlc3Np
b25Ob2RlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5DYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUoKQogICAgIHsKQEAgLTUyLDcgKzUzLDcg
QEAgY2xhc3MgQ2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNh
bGNFeHByZXNzaW9uTm9kZSB7CiAKIHN0YXRpYyBSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1
ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsKLSAgICBhdXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKKyAgICBhdXRvIG5vZGUgPSBtYWtlVW5p
cXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9kZT4oKTsKICAgICByZXR1cm4gV2ViQ29yZTo6
Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUobm9kZSksIFdlYkNvcmU6OlZhbHVlUmFu
Z2VBbGwpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlkb0hpZE1lc3NhZ2VUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCmluZGV4IGY1OGRhOGE0MjA3M2VjOTliYmVlMzRh
ODViZWMzNGMwODVjNTJhNjQuLjBjMWEwNjlmMTNjMzljNDA5ZTVkNWUxYjAzYTdlOTJiZjliMzY2
YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlk
TWVzc2FnZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9G
aWRvSGlkTWVzc2FnZVRlc3QuY3BwCkBAIC00OCwxMCArNDgsMTAgQEAgVEVTVChGaWRvSGlkTWVz
c2FnZVRlc3QsIFRlc3RQYWNrZXRTaXplKQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUw
NjA3MDg7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAKLSAgICBhdXRvIGluaXRQYWNrZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9IaWRE
ZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7
CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hh
bm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRh
KSwgZGF0YS5zaXplKCkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGluaXRQYWNrZXQtPmdldFNlcmlh
bGl6ZWREYXRhKCkuc2l6ZSgpKTsKIAotICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdU
Rk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gbWFrZVVuaXF1ZTxG
aWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOwog
ICAgIEVYUEVDVF9FUSg2NHUsIGNvbnRpbnVhdGlvblBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEo
KS5zaXplKCkpOwogfQogCkBAIC03MCw3ICs3MCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0
LCBUZXN0UGFja2V0RGF0YSkKICAgICB1aW50MzJfdCBjaGFubmVsSWQgPSAweEY1MDYwNzA4Owog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21t
YW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsKLSAgICBhdXRvIGluaXRQYWNr
ZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwg
VmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0
ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1
aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAgIHNpemVfdCBpbmRleCA9IDA7CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplZCA9IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWRE
YXRhKCk7CkBAIC05NCw3ICs5NCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFj
a2V0Q29uc3RydWN0b3JzKQogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAg
IEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsK
ICAgICBzaXplX3QgbGVuZ3RoID0gZGF0YS5zaXplKCk7Ci0gICAgYXV0byBvcmlnUGFja2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1v
dmUoZGF0YSksIGxlbmd0aCk7CisgICAgYXV0byBvcmlnUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRv
SGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CiAK
ICAgICBzaXplX3QgcGF5bG9hZExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ob3JpZ1BhY2tl
dC0+cGF5bG9hZExlbmd0aCgpKTsKICAgICBWZWN0b3I8dWludDhfdD4gb3JpZ0RhdGEgPSBvcmln
UGFja2V0LT5nZXRTZXJpYWxpemVkRGF0YSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggMWVkMTMyOGY4MTMwOWUxMmUxMzcx
Y2IzYWRmZTZiMGE5NzgzZWViNi4uMjI4MzgzYTBmMzBhOWIxMzlmNmFhZjQzZjk1Y2VkZDgwOTE2
NmU2YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVN
b25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0
ZWN0Q2hhbmdlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVz
dCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVN
b25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVu
aXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtd
IChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2Ug
RmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0xOTAsNyArMTkw
LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVDaGFuZ2VzKQogCiAg
ICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7
CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1w
RmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hh
bmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRv
cj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0yNTAsNyArMjUwLDcgQEAgVEVTVF9GKEZp
bGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRpb24pCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdv
cmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9
IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUu
Y29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBh
dXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVz
dFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7
CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNh
dGlvbjoKQEAgLTI4OSw3ICsyODksNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RD
aGFuZ2VBbmRUaGVuRGVsZXRlKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNy
ZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwg
W10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9y
ID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5
UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
ICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpA
QCAtMzQ2LDcgKzM0Niw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1
dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6
Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigp
LCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0
b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNv
cHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29r
aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMu
Y3BwCmluZGV4IDkyZDhhMTkyY2E3YjJhMTA4MTU2NTk5N2IwZWE1YjFmOWFlYThmNjUuLjIxOWU5
NjZkYmViYWE4NGQzNjAyNzIyZTk1OWUzMmY2NGZiNGRiMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC00NCw3ICs0NCw3
IEBAIGNsYXNzIEN1cmxDb29raWVzOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgewogICAg
ICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeSgpOwogCi0gICAgICAgIG1fY29va2llSmFyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3Jl
OjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29v
a2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOworICAgICAgICBtX2Nvb2tpZUphciA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6Q29va2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX2Nvb2tpZURpcmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKICAgICAgICAg
bV9jb29raWVKYXItPm9wZW4oKTsKICAgICAgICAgbV9jb29raWVKYXItPnNldEFjY2VwdFBvbGlj
eShDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQ
YWdlLmNwcAppbmRleCA1YzBhZTMzMTMyOGIzNmIwYmE3MGExOGQ5OTM2Njk0MTJhY2EyOWE5Li5i
M2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5ZGRhMTIxMmYxOTMyYTBkMjBmIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5D
cmVhdGVQYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5l
d1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwog
ewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVu
ZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAg
IG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAg
ICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNp
emVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvTW9kYWxBbGVydHNTUEkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvTW9kYWxBbGVydHNTUEkuY3BwCmluZGV4IGE0ZmJhMTI3YzZlNGQwM2U2M2Q5YTgxNzJhMzli
M2NiOGIxNDcyYzcuLjdiYzM1MjRmMmJkYjlkYmQ3YTQzNWEzY2M2YWQzODMyZTk0NGVkZDUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJ
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQ
SS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2Uo
V0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAg
IEVYUEVDVF9UUlVFKG9wZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJW
aWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5l
ZFdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1Bh
Z2VVSUNsaWVudFY1IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1
aUNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
VGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKaW5kZXggMGY3
ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4MDM4ZDE5MjIxZWRiZjdkNS4uY2QxOWQ3Y2RlNTg4OTYyNWYx
MjIxMmZjNzUzY2ZkNTVlMjc4ZDkyMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRp
bmcuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBXZWJLaXQyVGV4dEZpZWxkQmVnaW5BbmRF
ZGl0RWRpdGluZ1Rlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0
Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdFdmVu
dHNUZXN0IikpOwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgp
LCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdl
YlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50
KHdlYlZpZXctPnBhZ2UoKSwgdGhpcyk7CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3Nh
Z2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3Bw
CmluZGV4IGM3YjAyNTFiZmNmMjFhYTRhYmQxMTRjODU1MDc5MjQxZDY2MTc0ZTkuLjlkYzNhNmRh
OTk1MDljMjcxMTIxZDRjM2E0NTMwODRmZWU5ODliZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY2xh
c3MgV2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRl
c3QgewogICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5q
ZWN0ZWRCdW5kbGVUZXN0KCJVc2VyTWVzc2FnZVRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVk
QnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAg
IHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAg
ICAgICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy0+cGFnZSgpLCB0aGlzKTsKIAogICAg
ICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9XaWxsTG9hZC5jcHAKaW5kZXggZWQ5ZjBmZmM3MDI1YWIxMmNiNTM5NjdmNzIwNWZm
OTZjODliZTY5OS4uNTJmMThkY2ViNDJkNTFhYzA4Mzk1YjYyMDAxZDRhOTU0MGY3NDUyZCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBjbGFzcyBXZWJLaXQyV2lsbExvYWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CiAgICAgICAgIGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJ
bmplY3RlZEJ1bmRsZVRlc3QoIldpbGxMb2FkVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAg
d2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKIAog
ICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZSA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUlu
QnVuZGxlX0J1bmRsZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9G
b3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQppbmRleCBhZWJhMWMzNDhmYmM2
NmExNzBlNTM5ZTBhNzI4NmFlZTkxNTNlNjA0Li4yOTFhNDc4YTI3ODQyNDJkYWQ0NWEzYThmMTcz
OTA1ZDdkM2IyZjIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5k
bGVfQnVuZGxlLm1tCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byByZXN1
bHRTdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KHNjcmlwdENvbnRleHQsIHJlc3Vs
dCwgbnVsbHB0cikpOwogCiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShyZXN1bHRTdHJpbmcuZ2V0KCkpOwotICAgICAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZl
clNpemUpOwogICAgICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHJlc3VsdFN0cmluZy5nZXQo
KSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKIAogICAgICAgICBXS0J1bmRsZVBhZ2VTZXRV
c2VEYXJrQXBwZWFyYW5jZShtX3BhZ2UsIHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAppbmRl
eCBkNmNjMmZiMjQ3ZTU2MjA2Njk3NzYxMGIyNTY3OWI3ZWQxZGNjOGJhLi43YzhjOGI1MjE1NGFj
NGViMDk4ZTY5NTE3OTA2OWEwNWViZGM2NmFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcApAQCAt
MjU2LDYgKzI1Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25FbXB0
eVJlYWxtKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0CiB9CiAKIGNsYXNzIFR1bm5l
bCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVHVubmVsKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIDogbV9zZXJ2
ZXIoc2VydmVyKQpAQCAtMjk5LDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNr
KFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiB7
CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9DT05ORUNUKSB7CiAgICAg
ICAgIGdfYXNzZXJ0X2NtcHVpbnQoc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSwgPT0sIGdQ
cm94eVNlcnZlclBvcnQpOwotICAgICAgICBhdXRvIHR1bm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8
VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOworICAgICAgICBhdXRvIHR1bm5lbCA9IG1ha2VVbmlx
dWU8VHVubmVsPihzZXJ2ZXIsIG1lc3NhZ2UpOwogICAgICAgICBhdXRvKiB0dW5uZWxQdHIgPSB0
dW5uZWwuZ2V0KCk7CiAgICAgICAgIHR1bm5lbFB0ci0+Y29ubmVjdChbdHVubmVsID0gV1RGTW92
ZSh0dW5uZWwpXShjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChl
cnJvck1lc3NhZ2UpIHsKQEAgLTM5NCw3ICszOTUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0F1dGhlbnRpY2F0aW9uUHJveHkoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25z
dAogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyhQcm94
eUF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBhdXRvIGh0
dHBzU2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRUZXN0U2VydmVyPihXZWJLaXRUZXN0
U2VydmVyOjpTZXJ2ZXJIVFRQUyk7CisgICAgYXV0byBodHRwc1NlcnZlciA9IG1ha2VVbmlxdWU8
V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOwogICAgIGh0
dHBzU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOwogCiAgICAgdGVzdC0+bG9hZFVSSShodHRw
c1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Byb3h5L2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9j
ZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nl
c3NUZXN0LmgKaW5kZXggN2E0NGNiMDVjZDRiYzAyN2UxMmQxMTAzZmFmNmEwMDdhYzZmNDBmMy4u
YjZiNzI4ZTQ1ZTA5YzUxYTZkNmJhOTliZjcxN2UxOTVlOWEwZTBjMSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNlbmRpZgogCiBjbGFzcyBXZWJQcm9jZXNzVGVzdCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc1Rl
c3QoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwg
V2ViS2l0V2ViUGFnZSopID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKaW5kZXggMTI1NjI0MTk2YTcxYzZk
M2FkNWJjZGQyOWYxNDJiODZhYmI5ZmQxMS4uZTQwMDA3NjMzZjIzNjI0MDUyOWRmNTRhZTg2MzIw
ODdiZDM2OTUyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NRE9NV2luZG93VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAgc3RhdGljIGdi
b29sZWFuIGNsaWNrZWRDYWxsYmFjayhXZWJLaXRET01ET01XaW5kb3cqLCBXZWJLaXRET01FdmVu
dCosIFdlYktpdERPTUQKIAogY2xhc3MgV2ViS2l0RE9NRE9NV2luZG93VGVzdCA6IHB1YmxpYyBX
ZWJQcm9jZXNzVGVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQ
cm9jZXNzVGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRET01E
T01XaW5kb3dUZXN0PigpOyB9CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNz
VGVzdD4gY3JlYXRlKCkgeyByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXRET01ET01XaW5kb3dUZXN0
PigpOyB9CiAKIHByaXZhdGU6CiAgICAgZ3VpbnQ2NCB3ZWJQYWdlRnJvbUFyZ3MoR1ZhcmlhbnQq
IGFyZ3MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRp
bGl0aWVzQ29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0
aWVzQ29jb2EubW0KaW5kZXggOGQyZWU4YWQxNmNhZDY3OTU2OGVkOWI2ZDc1Y2VjZDgyMTUwZmVk
Yi4uMzQ5MGVmMWNlYjZmMTc4MDUwMmYwY2RjOTE5Yzk3MWUyOTJiZTkwNSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpAQCAt
MzgsNyArMzgsNyBAQCBzdGQ6OnN0cmluZyB0b1NURChOU1N0cmluZyAqc3RyaW5nKQogICAgICAg
ICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gW3N0cmlu
ZyBsZW5ndGhPZkJ5dGVzVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAg
YXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAg
YXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1
ZmZlclNpemUpOwogICAgIE5TVUludGVnZXIgc3RyaW5nTGVuZ3RoOwogICAgIFtzdHJpbmcgZ2V0
Qnl0ZXM6YnVmZmVyLmdldCgpIG1heExlbmd0aDpidWZmZXJTaXplIHVzZWRMZW5ndGg6JnN0cmlu
Z0xlbmd0aCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBvcHRpb25zOjAgcmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSByZW1haW5pbmdSYW5nZTowXTsKICAgICByZXR1
cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGgpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDU0NmNhNmUyMjJkOWZlYTgxY2U3
YmU0ZTJjMmQzOTg1YzViNDRmMGYuLjI0NzU3Mjg5OGI2YTg3OWM3YTM2YjRmYzY1YjkxNTMzMDQ3
MGZmZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAg
LTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGlu
Z0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCkKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IHN3aXp6bGVyOwogICAgIHN0YXRpYyBkaXNwYXRj
aF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAg
ICAgICAgc3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5T
QXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJz
Rm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50
aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKKyAgICAgICAgc3dpenps
ZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5j
bGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3Zp
ZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKICAgICB9KTsKIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBA
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE3NTIwND4gaXMgZml4ZWQuCi0gICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10s
IEBzZWxlY3RvcihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHBy
ZXNzVUlDYWxsb3V0QmFyKSk7CisgICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IG1ha2VV
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3Rv
cihzaGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxs
b3V0QmFyKSk7CiAgICAgX2lucHV0U2Vzc2lvbkNoYW5nZUNvdW50ID0gMDsKICAgICBhcHBseVdv
cmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYktpdFRlc3RTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYktpdFRlc3RTZXJ2ZXIuaAppbmRleCA2OTBmMGE3NzU2Y2ZlM2FmYjA3ZDkwYmVlZmYwOTU3
OGIyZmM1NWRlLi4yODE0NTI3ZjE5Yjk1NGY4MmFlYjg3YmMwZTRjOGRjMGI5YTdmNWI2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVz
dFNlcnZlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBjbGFzcyBXZWJLaXRUZXN0U2VydmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKIAogICAgIGVudW0gU2VydmVyT3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KaW5kZXggODYyNjM1NDQzMzVhN2Y1ZDk3MWI1ZGMw
ZDI1OWU1NWRjMGQ3M2M2Ni4uNGJkZTZjNTEwMGQyYmQ2ZmU0YmI5MGZhY2JlMjVkMzM5YTUwNTRi
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpAQCAtODQs
NyArODQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0
aW9ucyAqKWZvbnRPcHRpb25zCiAKICAgICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXplWmVybzsKICAg
ICBfc2hhZG93Qmx1clJhZGl1cyA9IDA7Ci0gICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmlu
ZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRl
cnByZXRfY2FzdDxJTVA+KHNoYXJlZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOworICAgIF9yZXBs
YWNlRm9udE9wdGlvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4o
TlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250
T3B0aW9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3Rp
bmcpKTsKICAgICBfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMgPSBOTzsKICAgICBfaGFzTXVsdGlw
bGVGb250cyA9IE5POwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50
U2VuZGVyUHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5o
CmluZGV4IDE1MzIyMTgyNjk5ZTBlYTMwNzU0YTAyMjZjM2E3YjYyOTU5NzZkMDAuLjExMzk5YjM5
MGZlOTE3MGY2YzUyNTI3NWFjMjM0NTgyZGFmNzUwZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRXZlbnRTZW5kZXJQcm94eS5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBXVFJFdmVudFF1
ZXVlSXRlbTsKICNlbmRpZgogCiBjbGFzcyBFdmVudFNlbmRlclByb3h5IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFdmVudFNlbmRlclByb3h5
KFRlc3RDb250cm9sbGVyKik7CiAgICAgfkV2ZW50U2VuZGVyUHJveHkoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaAppbmRleCA3ZDk0NWQ2
N2VjNjc1MGJlNzA2NDM1YTJhNmIzYzc0ZDFhZDE3NDNjLi4xZWQ0YWRmOWIzOTM5M2EzMzNhYTMy
NTEwOTdiOWUzYWE0MmNjMzZiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dl
b2xvY2F0aW9uUHJvdmlkZXJNb2NrLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9s
b2NhdGlvblByb3ZpZGVyTW9jay5oCkBAIC0yNywxMCArMjcsMTIgQEAKICNkZWZpbmUgR2VvbG9j
YXRpb25Qcm92aWRlck1vY2tfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIEdl
b2xvY2F0aW9uUHJvdmlkZXJNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayhXS0NvbnRleHRSZWYpOwogICAgIH5H
ZW9sb2NhdGlvblByb3ZpZGVyTW9jaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmlu
ZGV4IGUxMjA3ZmNlZmJkNjk2MjZkODhhZDhmNmNlZGIwYjUyNmJiMmRlNTMuLjIyYWM5NDc3Mzk1
YjE5ZThkZmM4ZGYxNzk0YWQ0MmVkOGY1NzZkOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U09iamVjdFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CiAjaWYgVVNFKEFUSykKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlckF0ay5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKaW5kZXgg
MWY5ZDNlZmM5NjRmYjEzNzdiYzY2M2MwMTYwYzM0YTg4YjIzMjhhNi4uYzlhNTJjMTVmNzcwODMw
NjgzYzhlZmY2ODk0MjliZDBiYzFmNTY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
Y3BwCkBAIC02MTIsNiArNjEyLDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb25p
dG9yV2hlZWxFdmVudHMoKQogfQogCiBzdHJ1Y3QgU2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0
YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEpTQ29udGV4dFJl
ZiBtX2NvbnRleHQ7CiAgICAgSlNPYmplY3RSZWYgbV9mdW5jdGlvbjsKIApAQCAtNjQ3LDcgKzY0
OCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsCiAgICAgCiAgICAgSlNWYWx1ZVByb3RlY3Qo
Y29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAKLSAgICBhdXRvIHNjcm9sbENvbXBs
ZXRpb25DYWxsYmFja0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxs
YmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOworICAgIGF1dG8gc2Ny
b2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSA9IG1ha2VVbmlxdWU8U2Nyb2xsQ29tcGxldGlvbkNh
bGxiYWNrRGF0YT4oY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVjdCk7CiAgICAgYXV0byBz
Y3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRyID0gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNr
RGF0YS5yZWxlYXNlKCk7CiAgICAgYm9vbCBjYWxsYmFja1dpbGxCZUNhbGxlZCA9IFdLQnVuZGxl
UGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29tcGxldGlvbkNhbGxiYWNrKHBhZ2UsIGV4ZWN1
dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0cik7CiAgICAgaWYgKCFj
YWxsYmFja1dpbGxCZUNhbGxlZCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA3MTE2Y2M5ODE1NjY5
ZDk0OTRkYmY4ZGU0OGJhZWVjZDYzNzRjMzc2Li44M2IyYjMwYjEzMzJlYzc3YmZlZmNjMjlmZGQx
YTJlNDgzY2I1ZjIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYg
aW5pdGlhbGl6YXRpb25Vc2VyCiB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKFdL
QnVuZGxlUGFnZVJlZiBwYWdlKQogewogICAgIGJvb2wgaXNNYWluUGFnZSA9IG1fcGFnZXMuaXNF
bXB0eSgpOwotICAgIG1fcGFnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRCdW5k
bGVQYWdlPihwYWdlKSk7CisgICAgbV9wYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxJbmplY3RlZEJ1
bmRsZVBhZ2U+KHBhZ2UpKTsKIAogICAgIHNldFVwSW5qZWN0ZWRCdW5kbGVDbGllbnRzKHBhZ2Up
OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZS5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAppbmRleCA1OWQzZTFiMGQwMmUyMmM1MmZhNzY1NDMzMjlj
MjNmNmI2MmEzODlhLi5iMzIzYzI1MDQ0ZjU1MDM2MDc2ZjQ4ZWRkZDQ3YmNlYWEzZTIwZjE4IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXVFIgewog
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VSZWYpOwogICAg
IH5JbmplY3RlZEJ1bmRsZVBhZ2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDUyNzU2NmRjM2Y4NGE3ZGI0MjIz
MzQ3ZmQ2MWMzYjI1Mzg2ZTRmNzMuLjYzN2NlYzg3ZDAyNzc0NGU4OTc2ZjczYmMzYWMyYzBkMDQ4
MDk5ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtMjM5OCw3ICsyMzk4LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAgICAgICAgYXV0byBm
aWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxlVmFsdWUsIG51bGxw
dHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0byBmaWxlQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0
byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihm
aWxlQnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQo
KSwgZmlsZUJ1ZmZlci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIFdLQXJyYXlB
cHBlbmRJdGVtKGZpbGVVUkxzLmdldCgpLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aEJhc2VVUkwo
bV90ZXN0VVJMLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpKSkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCAwZTVjMDdjYTcyOWI2ZGZjYjM4
YzgwNDI2ZDM5MjQ0ZTMyYzAwMTdjLi4xOGU1N2QyZmNmNjI5NzY3YTczMjk3OWJjMmVkYzU3YWNm
MTA5Y2UyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApA
QCAtNzMwLDcgKzczMCw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbnZlcnRUb0pTT2JqZWN0QXJy
YXkoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtCiAgICAgSlNDb250ZXh0
UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1l
KTsKIAogICAgIHNpemVfdCBlbGVtZW50Q291bnQgPSBjaGlsZHJlbi5zaXplKCk7Ci0gICAgYXV0
byB2YWx1ZUVsZW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxKU1ZhbHVlUmVmW10+KGVsZW1lbnRD
b3VudCk7CisgICAgYXV0byB2YWx1ZUVsZW1lbnRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZWxlbWVudENvdW50OyBpKyspCiAgICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBK
U09iamVjdE1ha2UoY29udGV4dCwgY2hpbGRyZW5baV0tPndyYXBwZXJDbGFzcygpLCBjaGlsZHJl
bltpXS5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZv
cm1XZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCmlu
ZGV4IGY3NGNjMmQzOTNkNTMwNWZkMzY2NWJiMGUwYTM1NTE4NDQ3MzEwOWYuLmNhNGZkYmQ3MjIx
NWFmNDhiZGE5NjdkNWJjYWI0ODE1NmJhZGNjNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Q
bGF0Zm9ybVdlYlZpZXcuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJUZXN0T3B0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKICNpZiBQ
TEFURk9STShDT0NPQSkgJiYgIWRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjaW5jbHVkZSA8V2Vi
S2l0L1dLRm91bmRhdGlvbi5oPgpAQCAtNjQsNiArNjUsNyBAQCB0eXBlZGVmIGNhaXJvX3N1cmZh
Y2VfdCogUGxhdGZvcm1JbWFnZTsKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0Zm9ybVdl
YlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFBsYXRmb3JtV2ViVmlldyhXS1dlYlZpZXdDb25maWd1cmF0aW9uKiwg
Y29uc3QgVGVzdE9wdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
U3RyaW5nRnVuY3Rpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9u
cy5oCmluZGV4IGRhZjE0Y2E3MDU0ODZiZmMyMDY0MzEyM2RlNTA5MWI3OWU1ZDAxMzEuLmJiYTE3
YzJlZmZiMDk2NjVlZmMyOGVlYjY5ZTcyMzI5YjFkNjliNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9TdHJpbmdGdW5jdGlvbnMuaApAQCAtNzMsNyArNzMsNyBAQCBpbmxpbmUgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHRvSlMoY29uc3QgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+JiBzdHJp
bmcpCiBpbmxpbmUgc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQogewogICAg
IHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0
cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVy
U2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmlu
Z0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBy
ZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKTsKIH0KQEAg
LTg2LDcgKzg2LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKGNvbnN0IFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIFdURjo6U3RyaW5nIHRvV1RGU3RyaW5nKFdL
U3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0
TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBzaXpl
X3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmcs
IGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIFdURjo6U3RyaW5nOjpmcm9t
VVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlYThhZmI1
ZjRlZjg0ZTRhMmRkZjI4NjRhMWFlOWY3NzVmY2UzNzQ3Li5lYjQwOWM2YmE5MDk0NjgwYTI0Njk1
YjY3NjM1MzhkNmVlZDhkZjg0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxp
emUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIldlYktpdFRlc3RSdW5uZXJQYWdlR3JvdXAiKSk7CiAgICAgbV9wYWdlR3JvdXAu
YWRvcHQoV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihwYWdlR3JvdXBJZGVudGlmaWVy
LmdldCgpKSk7CiAKLSAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2
ZW50U2VuZGVyUHJveHk+KHRoaXMpOworICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IG1ha2VVbmlx
dWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CiB9CiAKIFdLUmV0YWluUHRyPFdLQ29udGV4dENv
bmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVyOjpnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0
aW9uKGNvbnN0IFRlc3RPcHRpb25zOjpDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykgY29uc3QKQEAg
LTUyMSw3ICs1MjEsNyBAQCBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0
Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjbwogICAgICAgICBtX2NvbnRl
eHQgPSBwbGF0Zm9ybUFkanVzdENvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29u
ZmlndXJhdGlvbihjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSkpLmdldCgpLCBjb250ZXh0Q29u
ZmlndXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIG1fY29udGV4dE9wdGlvbnMgPSBvcHRpb25zLmNv
bnRleHRPcHRpb25zOwogCi0gICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CisgICAg
ICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRl
ck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBS
ZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAgICAgICBT
dHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRl
bXApOwpAQCAtOTU0LDcgKzk1NCw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgLy8g
RklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlcmUgaXMgb25s
eSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVzZXQgdGhlIEV2ZW50U2VuZGVyIGZvciBlYWNo
IHRlc3QuCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNl
bmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2
ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogCiAgICAgLy8gRklYTUU6IElzIHRoaXMgbmVlZGVkPyBO
b3RoaW5nIGluIFRlc3RDb250cm9sbGVyIGNoYW5nZXMgcHJlZmVyZW5jZXMgZHVyaW5nIHRlc3Rz
LCBhbmQgaWYgdGhlcmUgaXMKICAgICAvLyBzb21lIG90aGVyIGNvZGUgZG9pbmcgdGhpcywgaXQg
c2hvdWxkIHByb2JhYmx5IGJlIHJlc3BvbnNpYmxlIGZvciBjbGVhbnVwIHRvby4KQEAgLTEyMzcs
MTEgKzEyMzcsMTEgQEAgc3RhdGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RVUkwoY29uc3QgY2hhciog
cGF0aE9yVVJMKQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOwogICAgIGlm
IChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNo
YXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIGJ1ZmZlciA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3Ro
ICsgMSk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwogICAgICAg
ICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhM
ZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFyYXRv
cgorICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFy
W10+KHByZWZpeExlbmd0aCArIFBBVEhfTUFYICsgbGVuZ3RoICsgMik7IC8vIDEgZm9yIHRoZSBw
YXRoU2VwYXJhdG9yCiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwog
ICAgICAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIFBBVEhfTUFY
KSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTY1MSw3ICsxNjUxLDcgQEAgYm9vbCBUZXN0
Q29udHJvbGxlcjo6cnVuVGVzdChjb25zdCBjaGFyKiBpbnB1dExpbmUpCiAgICAgVGVzdE9wdGlv
bnMgb3B0aW9ucyA9IHRlc3RPcHRpb25zRm9yVGVzdChjb21tYW5kKTsKIAogICAgIFdLUmV0YWlu
UHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0soY3JlYXRlVGVzdFVSTChjb21tYW5kLnBhdGhP
clVSTC5jX3N0cigpKSk7Ci0gICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKKyAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uID0gbWFrZVVuaXF1ZTxUZXN0SW52b2NhdGlvbj4od2tVUkwuZ2V0KCksIG9wdGlv
bnMpOwogCiAgICAgaWYgKGNvbW1hbmQuc2hvdWxkRHVtcFBpeGVscyB8fCBtX3Nob3VsZER1bXBQ
aXhlbHNGb3JBbGxUZXN0cykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+c2V0SXNQaXhl
bFRlc3QoY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CkBAIC0yOTYzLDcgKzI5NjMsNyBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxSdW5UZXN0KGNvbnN0IFRlc3RJbnZvY2F0
aW9uJikKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFn
ZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlv
bnMpCiB7Ci0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJW
aWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKKyAgICBtX21haW5XZWJWaWV3ID0gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogfQogCiBQbGF0
Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0
Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwCmluZGV4IGE1YWVhMjFjMDkwMDA1OWU3OWZhN2QxMmJmYTE1ZmQ4
MTlkMTZiNmEuLmY4MWYwYjk0Njk1NzZkMzYxMDI2ZDM1NmVmYzQ4MWJhOWY3OTlmMGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjkwLDcgKzE2OTAs
NyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQoV0tTdHJpbmdSZWYgc2Ny
aXB0LCB1bnNpZ25lZCBzY3JpcHRDYWxsYmFjawogICAgIG1fcGVuZGluZ1VJU2NyaXB0SW52b2Nh
dGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKCFtX1VJU2NyaXB0Q29udGV4dCkKLSAgICAg
ICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVJU2NyaXB0Q29udGV4dD4o
KnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlxdWU8VUlTY3JpcHRD
b250ZXh0PigqdGhpcyk7CiAgICAgCiAgICAgbV9VSVNjcmlwdENvbnRleHQtPnJ1blVJU2NyaXB0
KHRvV1RGU3RyaW5nKHNjcmlwdCksIHNjcmlwdENhbGxiYWNrSUQpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDc4ODBkZDhkZjU1MmZjOWQ4MmI5NGQxZDJm
MmRkZmQ2ZGY4MmVjMmIuLjg1YjFiMDIwNmViODkyMjZlODZjNmI0MWFiOTNlNWRiOTVlYmZkOTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTQwLDYgKzQwLDcg
QEAKIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBUZXN0SW52b2NhdGlvbiBmaW5hbCA6IHB1Ymxp
YyBVSVNjcmlwdENvbnRleHREZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGVzdEludm9jYXRpb24pOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFRlc3RJbnZvY2F0aW9uKFdLVVJMUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tCmluZGV4IDBmYmY4ZWE1MjNkMzQ4ZDI1NmVjYzUyMzA0MmRlYTAyZmVjZGQxZGMuLjBlYmY3
YmZkMDAzOWY0ZWY4MDkzMmMxZWI1MTkyZmY1NGVlM2M0YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTE2OCw3ICsx
NjgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdl
Q29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogICAgICAgICBbY29waWVkQ29uZmlndXJh
dGlvbiBfc2V0QXBwbGljYXRpb25NYW5pZmVzdDpbX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhcHBs
aWNhdGlvbk1hbmlmZXN0RnJvbUpTT046dGV4dCBtYW5pZmVzdFVSTDpuaWwgZG9jdW1lbnRVUkw6
bmlsXV07CiAgICAgfQogCi0gICAgbV9tYWluV2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKKyAgICBt
X21haW5XZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvcGllZENvbmZpZ3Vy
YXRpb24uZ2V0KCksIG9wdGlvbnMpOwogICAgIGZpbmlzaENyZWF0aW5nUGxhdGZvcm1XZWJWaWV3
KG1fbWFpbldlYlZpZXcuZ2V0KCksIG9wdGlvbnMpOwogCiAgICAgaWYgKG9wdGlvbnMucHVuY2hP
dXRXaGl0ZUJhY2tncm91bmRzSW5EYXJrTW9kZSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKE5TU3RyaW5nICppZGVudGlmaWVy
KQogewogICAgIG1fb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAg
ICAgaWYgKCFtX2NhbGVuZGFyU3dpenpsZXIpCi0gICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3Nd
LCBAc2VsZWN0b3IoY3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVkQ2FsZW5kYXIpKTsKKyAgICAgICAgbV9jYWxlbmRhclN3aXp6bGVyID0gbWFrZVVuaXF1ZTxD
bGFzc01ldGhvZFN3aXp6bGVyPihbTlNDYWxlbmRhciBjbGFzc10sIEBzZWxlY3RvcihjdXJyZW50
Q2FsZW5kYXIpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRDYWxlbmRhcikpOwogfQog
CiB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldENvbnRlbnRFeHRlbnNpb25zKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKaW5kZXgg
ZGU1NzhmNzNmYzM2ZWNkMTU4OWM5OWY4ZGJmOGZjY2MzOTg3YjQyZS4uZWY5ZTM4ZTcyM2JhYTk1
ZGZmZTcwZWM1YTg3NWNmZWM4NGUzMjg3NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCBpbnQg
Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRp
b24sIGd1aW50KiBtb2RpZmllcgogICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTI7CiAKICAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShrZXlS
ZWYpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNp
emUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtleVJlZiwg
YnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBjaGFyIGNoYXJDb2RlID0gYnVmZmVyLmdl
dCgpWzBdOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29u
dHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVy
SU9TLm1tCmluZGV4IDZhNjFkZjhlMzVkNmZhMDhjOGIxNGM1MWE4MjNjNjJkMDgwNWQ0ZDIuLmYz
YzQxN2M3ZmI3Y2FhNGRlNDc3N2M3YTQ5NGY1M2FmMzJhMThiZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0xNTEsOCArMTUxLDgg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFs
dWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKIAogICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxl
cnMuY2xlYXIoKTsKICAgICBpZiAoIW9wdGlvbnMuc2hvdWxkUHJlc2VudFBvcG92ZXJzKSB7Ci0g
ICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0
b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwot
ICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9sbGVyIGNsYXNzXSwgQHNl
bGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1pdHRlZEFycm93RGlyZWN0
aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmll
d0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CisgICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxl
cnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oW1VJVmlld0NvbnRy
b2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNv
bXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250
cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFw
cGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVBvcG92ZXJDb250cm9s
bGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRQb3BvdmVyRnJvbVJlY3Q6aW5WaWV3OnBlcm1p
dHRlZEFycm93RGlyZWN0aW9uczphbmltYXRlZDopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7CiAgICAgfQogICAgIAogICAg
IEJPT0wgc2hvdWxkUmVzdG9yZUZpcnN0UmVzcG9uZGVyID0gTk87CkBAIC0yNjksOSArMjY5LDkg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogICAgIGF1dG8gY29udHJvbGxlckNsYXNzID0gVUlL
ZXlib2FyZElucHV0TW9kZUNvbnRyb2xsZXIuY2xhc3M7CiAgICAgbV9pbnB1dE1vZGVTd2l6emxl
cnMucmVzZXJ2ZUNhcGFjaXR5KDMpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tl
ZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xs
ZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElN
UD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMu
dW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4o
Y29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZUluUHJlZmVyZW5jZSks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKLSAgICBt
X2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihhY3RpdmVJbnB1
dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVBY3RpdmVJbnB1dE1vZGVzKSkp
OworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPElu
c3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJ
bnB1dE1vZGUpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUp
KSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8
SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVu
dElucHV0TW9kZUluUHJlZmVyZW5jZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3Vy
cmVudElucHV0TW9kZSkpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBl
bmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBz
ZWxlY3RvcihhY3RpdmVJbnB1dE1vZGVzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVB
Y3RpdmVJbnB1dE1vZGVzKSkpOwogICAgIFtVSUtleWJvYXJkSW1wbC5zaGFyZWRJbnN0YW5jZSBw
cmVwYXJlS2V5Ym9hcmRJbnB1dE1vZGVGcm9tUHJlZmVyZW5jZXM6bmlsXTsKIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KaW5kZXggZDFjZmM2
YTMzMjFlMDI5YzhiYTgxMTVmNGE2ZDkyMDdmOGU3MTg0Zi4uODljZTRlZjEyNmMxNWQ5MmRjZjc2
NjUwY2U2ZWVmNWI4OTIzMTcyZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9F
dmVudFNlbmRlclByb3h5Lm1tCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBFdmVudFNlbmRlclBy
b3h5Ojptb3VzZURvd24odW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWUKIAogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IFttX3Rlc3RDb250cm9sbGVyLT5tYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSBoaXRUZXN0OltldmVudCBsb2NhdGlvbkluV2luZG93
XV07CiAgICAgaWYgKHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3Vz
ZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4o
W05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgICAg
ICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFz
c01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VC
dXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VC
dXR0b25zKSk7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAg
ICAgW3RhcmdldFZpZXcgbW91c2VEb3duOmV2ZW50XTsKICAgICAgICAgW05TQXBwIF9zZXRDdXJy
ZW50RXZlbnQ6bmlsXTsKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6
Om1vdXNlVXAodW5zaWduZWQgYnV0dG9uTnVtYmVyLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVy
cwogICAgICAgICB0YXJnZXRWaWV3ID0gbV90ZXN0Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+
cGxhdGZvcm1WaWV3KCk7CiAKICAgICBBU1NFUlQodGFyZ2V0Vmlldyk7Ci0gICAgYXV0byBldmVu
dFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRo
b2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9u
cyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9u
cykpOworICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBtYWtlVW5p
cXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNz
ZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNz
ZWRNb3VzZUJ1dHRvbnMpKTsKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAg
ICAgW3RhcmdldFZpZXcgbW91c2VVcDpldmVudF07CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZl
bnQ6bmlsXTsKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNl
TW92ZVRvKGRvdWJsZSB4LCBkb3VibGUgeSkKICAgICAvLyBBbHdheXMgdGFyZ2V0IGRyYWdzIGF0
IHRoZSBXS1dlYlZpZXcgdG8gYWxsb3cgZm9yIGRyYWctc2Nyb2xsaW5nIG91dHNpZGUgdGhlIHZp
ZXcuCiAgICAgTlNWaWV3ICp0YXJnZXRWaWV3ID0gaXNEcmFnID8gbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgOiBbbV90ZXN0Q29udHJvbGxlci0+bWFpbldl
YlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDp3aW5kb3dMb2NhdGlvbl07CiAgICAgaWYg
KHRhcmdldFZpZXcpIHsKLSAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6
emxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xh
c3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
Pihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOworICAgICAgICBhdXRvIGV2ZW50
UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6
bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAg
ICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICAgICAgaWYgKGlzRHJh
ZykKICAgICAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRHJhZ2dlZDpldmVudF07CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCmluZGV4
IDQ2OWJmYWYwZThjZjI5MDczMGJhYmZhMDc4MzZkODc3ZWM3MGU4ZjUuLjY5NmY0NTU3NTg5NmZl
ODI2NjQ4N2QwOThlOGZlOGVlNjFlNTRkNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgc3Rh
dGljIHVpbnQzMl90IHdwZUtleVN5bUZvcktleVJlZihXS1N0cmluZ1JlZiBrZXlSZWYsIHVuc2ln
bmVkIGxvY2F0aW9uLCB1aW50MzIKICAgICAgICAgcmV0dXJuIFdQRV9LRVlfRjEyOwogCiAgICAg
c2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoa2V5
UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJT
aXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhrZXlSZWYs
IGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1ZmZlci5n
ZXQoKVswXTsKIAo=
</data>
<flag name="review"
          id="392194"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376470</attachid>
            <date>2019-08-15 20:31:15 -0700</date>
            <delta_ts>2019-08-15 20:31:15 -0700</delta_ts>
            <desc>A: Annotation Patch</desc>
            <filename>bug-200620-20190815203114.patch</filename>
            <type>text/plain</type>
            <size>315856</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YzUxYmVkOWM3ZmQ5ZjMxNjRjNDE5NzJlZWJlNjNkODY5NWJhOGE2Li45ZDg3ZTkyYjk0MjY3MTU1
ZjUyMThjMmMwYzJmNzc1YzVhMmZkNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMg
ZmFzdC1hbGxvY2F0ZWQsIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIGFubm90YXRpb24gcGFydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgVGhyZWUgcGF0
Y2hlcyBpbmNsdWRpbmcgdGhpcyBvbmUgd2VyZSBvcmlnaW5hbGx5IG9uZSBwYXRjaC4gSSBzcGxp
dCBpdCBpbnRvIHRocmVlIHBpZWNlcyB0byBtYWtlIHJvbGwtb3V0IGVhc3kuCisgICAgICAgIFRo
aXMgcGFydCwgd2UgYW5ub3RhdGUgY2xhc3NlcyAvIHN0cnVjdHMgd2l0aCBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRCBhbmQgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEIGlmCisgICAgICAg
IHRoZXkgYXJlIGFsbG9jYXRlZCBmcm9tIHN0ZDo6bWFrZV91bmlxdWUuIFRoZSBzZWNvbmQgcGF0
Y2ggd2lsbCBzd2l0Y2ggYHN0ZDo6bWFrZV91bmlxdWVgIHRvIGBXVEY6Om1ha2VVbmlxdWVgIGFu
ZAorICAgICAgICB0aGUgdGhpcmQgcGF0Y2ggd2lsbCBpbnNlcnQgYSBzdGF0aWNfYXNzZXJ0IHRo
YXQgbWFrZVVuaXF1ZS1hbGxvY2F0ZWQgY2xhc3MgVCBpcyBGYXN0TWFsbG9jLWVkLgorICAgICAg
ICBPbmUgaW5zaWdodCBmcm9tIHRoaXMgcGF0Y2ggaXMgdGhhdCB3ZSB0ZW5kIHRvIGZvcmdldCBh
ZGRpbmcgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEIGlmIGl0IGlzIGp1c3QgYSBkYXRh
IHN0cnVjdC4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisgICAg
ICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdp
dGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNv
bi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxp
dHkuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0
OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51
bS12YWx1ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVz
dWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
Z2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0OgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2FtZS10eXBlLWlk
LWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMu
anNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC9zaG91bGQtc3RyaXAtY29tbWVudHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFs
aWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUu
anNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24t
cmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvdHlwZS13aXRoLW9wZW4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3ZlcnNpb24uanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvaW9zL2V4cGVjdGVkL2RlZmluaXRp
b25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5q
c29uLXJlc3VsdDoKKwogMjAxOS0wOC0xNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBn
bWFpbC5jb20+CiAKICAgICAgICAgRGF0ZUNvbnZlcnNpb246OmZvcm1hdERhdGVUaW1lIGluY29y
cmVjdGx5IGZvcm1hdHMgbmVnYXRpdmUgeWVhcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNDgzOTQ2NGE2NWMy
NDg1YzQzZTRiMTdiOWQwODczNmFhNTNmYzA3Li5lNmYyMzAzMjVlNTVmZThmNjRjZDlkODQyYzgx
ZGE2M2I3OWU4YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQ1IEBACisyMDE5LTA4LTE1ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1h
a2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZCwgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQgYW5ub3RhdGlvbiBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETS5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjprZXlTeXN0ZW0gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpjbGllbnQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpzZXRDbGllbnQpOiBEZWxldGVk
LgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZh
dGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1T
ZXNzaW9uQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9E
ZWNvZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdU
YXNrOjphdWRpb0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0Rl
Y29kZXI6OkRlY29kaW5nVGFzazo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpzdWNjZXNzQ2FsbGJh
Y2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6OkRlY29k
aW5nVGFzazo6ZXJyb3JDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y0F1ZGlvRGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjphdWRpb0J1ZmZlcik6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMU3RhdGVtZW50OjpoYXNTdGF0ZW1lbnRDYWxsYmFjayBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTUUxTdGF0ZW1lbnQ6Omhhc1N0YXRlbWVudEVycm9yQ2FsbGJhY2sg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFZhcmlhYmxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RP
TVByb21pc2VQcm94eS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oOgor
ICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmg6CisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg6CisgICAgICAgICogZG9tL0Z1bGxzY3Jl
ZW5NYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuTWFuYWdlcjo6ZG9jdW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlbk1hbmFnZXI6OmRvY3Vt
ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxzY3JlZW5NYW5hZ2Vy
Ojp0b3BEb2N1bWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2Ny
ZWVuTWFuYWdlcjo6cGFnZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGdWxs
c2NyZWVuTWFuYWdlcjo6ZnJhbWUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RnVsbHNjcmVlbk1hbmFnZXI6OmRvY3VtZW50RWxlbWVudCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuTWFuYWdlcjo6aGFzTGl2aW5nUmVuZGVyVHJlZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuTWFuYWdlcjo6cGFnZUNh
Y2hlU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlbk1h
bmFnZXI6OnNjaGVkdWxlRnVsbFN0eWxlUmVidWlsZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpGdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbkVsZW1lbnQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RnVsbHNjcmVlbk1hbmFnZXI6OmlzRnVsbHNjcmVlbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGdWxsc2NyZWVuTWFuYWdlcjo6aXNGdWxs
c2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RnVsbHNjcmVlbk1hbmFnZXI6OmN1cnJlbnRGdWxsc2NyZWVuRWxlbWVudCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogZG9tL01pY3JvdGFza3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1pY3JvdGFza1F1ZXVlOjp2bSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0FsdGVybmF0aXZl
VGV4dFVJQ29udHJvbGxlci5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAgICAgICAqIGxheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lSXRlbS5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuaDoKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5o
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpwb2xpY3lDaGVja2VyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpoaXN0b3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpub3RpZmllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6c3ViZnJhbWVMb2FkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6Om1peGVkQ29udGVudENoZWNrZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWxvYWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlcXVlc3RlZEhpc3RvcnlJdGVtIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkb2N1bWVudExvYWRlciBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cG9saWN5RG9jdW1l
bnRMb2FkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpzaG91bGRSZXBvcnRSZXNvdXJjZVRpbWluZ1RvUGFyZW50RnJhbWUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsaWVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Zm9yY2VTYW5k
Ym94RmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omhhc09w
ZW5lZEZyYW1lcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6c2V0TG9hZHNTeW5jaHJvbm91c2x5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2Fkc1N5bmNocm9ub3VzbHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0YXRlTWFjaGluZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6cXVpY2tSZWRpcmVjdENvbWluZyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpwcmV2aW91c1VSTCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6c2V0T3ZlcnJpZGVDYWNoZVBvbGljeUZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHlG
b3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRT
dHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xpY3lEaXNhYmxlZEZvclRlc3RpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmlzU3RyaWN0UmF3UmVzb3VyY2VW
YWxpZGF0aW9uUG9saWN5RGlzYWJsZWRGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpwcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0UHJvdmlz
aW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXI6OmlzUmVsb2FkaW5nRnJvbU9yaWdpbiBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0QWx3YXlzQWxsb3dMb2NhbFdlYmFyY2hp
dmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmFsd2F5c0FsbG93
TG9jYWxXZWJhcmNoaXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0Q3VycmVudExvYWRBc0NvbnRp
bnVpbmdMb2FkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvTmF2aWdhdGlvbkRp
c2FibGVyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpsb2FkUmVxdWVzdGVkIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlOjpkb2N1bWVudCk6IERl
bGV0ZWQuCisgICAgICAgICogbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICog
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmg6CisgICAgICAgICogcGFnZS9QcmV3YXJtSW5m
b3JtYXRpb24uaDoKKyAgICAgICAgKiBwYWdlL1Jlc2l6ZU9ic2VydmVyLmg6CisgICAgICAgICog
cGFnZS9TdXNwZW5kYWJsZVRpbWVyLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlLmg6CisgICAgICAgICogcGFnZS9pb3MvQ29udGVudENoYW5nZU9i
c2VydmVyLmg6CisgICAgICAgICogcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFuay5oOgorICAg
ICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHA6CisgICAgICAg
ICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL0NQVU1vbml0
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTW9uaXRvci5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL1N1ZGRlblRlcm1pbmF0
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQnVzOjpudW1iZXJPZkNoYW5uZWxzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjaGFubmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQnVzOjpjaGFubmVsIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQnVzOjpsZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdXM6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9CdXM6OnNldFNhbXBsZVJhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9C
dXM6OnJlc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpBdWRpb0J1
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OkF1ZGlvQ2hhbm5lbCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6OnNldCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6Omxlbmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0NoYW5uZWw6Om11dGFibGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQ2hhbm5lbDo6ZGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NoYW5uZWw6Onplcm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9DaGFubmVsOjpjbGVhclNpbGVudEZsYWcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9DaGFubmVsOjppc1NpbGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vQXVkaW9GSUZPLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZJRk86OmZyYW1l
c0luRmlmbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZJRk86OnVw
ZGF0ZUluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxG
SUZPLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpyYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzQWN0aXZl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9CaXF1YWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Db25lLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25lRWZm
ZWN0OjpzZXRJbm5lckFuZ2xlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVFZmZl
Y3Q6OmlubmVyQW5nbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29uZUVm
ZmVjdDo6c2V0T3V0ZXJBbmdsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZm
ZWN0OjpvdXRlckFuZ2xlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbmVF
ZmZlY3Q6OnNldE91dGVyR2Fpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb25lRWZm
ZWN0OjpvdXRlckdhaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0Rlbm9ybWFsRGlzYWJsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6
OkRlbm9ybWFsRGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVub3JtYWxE
aXNhYmxlcjo6fkRlbm9ybWFsRGlzYWJsZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGVub3JtYWxEaXNhYmxlcjo6Zmx1c2hEZW5vcm1hbEZsb2F0VG9aZXJvKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkRlbm9ybWFsRGlzYWJsZXI6OmdldENTUik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEZW5vcm1hbERpc2FibGVyOjpzZXRDU1IpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0Rpc3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6bW9k
ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNldE1vZGVs
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3RhbmNlRWZmZWN0OjpzZXRSZWZEaXN0
YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXN0YW5jZUVmZmVjdDo6c2V0TWF4
RGlzdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZlY3Q6OnNl
dFJvbGxvZmZGYWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VFZmZl
Y3Q6OnJlZkRpc3RhbmNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3Rh
bmNlRWZmZWN0OjptYXhEaXN0YW5jZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXN0YW5jZUVmZmVjdDo6cm9sbG9mZkZhY3RvciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJl
c3Nvcjo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5h
bWljc0NvbXByZXNzb3I6Om55cXVpc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RHluYW1pY3NDb21wcmVzc29yOjp0YWlsVGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OmxhdGVuY3lUaW1lIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6bGF0ZW5jeUZyYW1l
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWw6OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RHlu
YW1pY3NDb21wcmVzc29yS2VybmVsOjptZXRlcmluZ0dhaW4gY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVENvbnZvbHZl
cjo6ZmZ0U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2U6Om51bWJlck9mQXpp
bXV0aHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlOjpzYW1wbGVS
YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpIUlRGRWxldmF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246Omtlcm5lbExpc3RMKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246Omtlcm5lbExpc3RSKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmVsZXZhdGlvbkFuZ2xl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246Om51bWJl
ck9mQXppbXV0aHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZh
dGlvbjo6c2FtcGxlUmF0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vSFJURlBhbm5lci5oOgorICAgICAgICAoV2ViQ29yZTo6SFJURlBhbm5lcjo6ZmZ0U2l6ZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIUlRGUGFubmVyOjpzYW1wbGVSYXRl
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxS
ZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYi5oOgorICAgICAgICAoV2ViQ29yZTo6
UmV2ZXJiOjppbXB1bHNlUmVzcG9uc2VMZW5ndGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkSW5kZXggY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyOjpyZWFkVGltZUZy
YW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252
b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6aW1wdWxzZVJlc3Bv
bnNlTGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZv
bHZlcjo6aW5wdXRCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29u
dm9sdmVyOjp1c2VCYWNrZ3JvdW5kVGhyZWFkcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJldmVyYkNvbnZvbHZlclN0YWdlOjppbnB1dFJlYWRJbmRleCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJldmVyYklucHV0QnVmZmVyOjp3cml0ZUluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vVXBTYW1wbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Olplcm9Qb2xlOjpaZXJvUG9sZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpaZXJvUG9sZTo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6WmVyb1BvbGU6OnNldFplcm8pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1Bv
bGU6OnNldFBvbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6Onplcm8g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WmVyb1BvbGU6OnBvbGUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL1dlYkF1ZGlvQnVmZmVy
TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9CdWZmZXJMaXN0OjpsaXN0IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdDo6b3BlcmF0
b3IgQXVkaW9CdWZmZXJMaXN0JiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJBdWRpb0J1ZmZlckxpc3Q6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW06CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL0NBUmluZ0J1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMv
SElER2FtZXBhZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Np
b24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblByb3BlcnRp
ZXM6OmlzSWRlbnRpdHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6dHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJvdGF0aW9uUHJvcGVydGllcyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpzaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUm90YXRpb25TZXNzaW9uVlQ6OnJv
dGF0ZWRTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhl
bEJ1ZmZlckNvbmZvcm1lckNWLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4
dHVyZUNhY2hlQ1YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1
cmVDb3BpZXJDVi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gv
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT0JveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Pcmln
aW5hbEZvcm1hdEJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90
ZWN0aW9uU2NoZW1lSW5mb0JveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09TY2hlbWVJbmZvcm1hdGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09TY2hlbWVUeXBlQm94Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1RyYWNrRW5jcnlwdGlvbkJveC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9J
U09WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SVNPU3RyaW5nQm94Ojpjb250ZW50cyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpib3hUeXBlTmFtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnByZXNlbnRhdGlvblRpbWUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpkdXJhdGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnNvdXJjZUlEIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6aWQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SVNPV2ViVlRUQ3VlOjpvcmlnaW5hbFN0YXJ0VGlt
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJU09XZWJWVFRDdWU6OnNldHRp
bmdzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklTT1dlYlZUVEN1ZTo6Y3Vl
VGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhUGFpbnRpbmdPcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9z
aXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RM
YXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxz
Y3JlZW5XaW5kb3cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyQXVkaW9EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJBdWRpb0RhdGE6OkdT
dHJlYW1lckF1ZGlvRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJB
dWRpb0RhdGE6OmdldFNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJBdWRpb0RhdGE6OmdldEF1ZGlvSW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpH
U3RyZWFtZXJBdWRpb0RhdGE6OmtpbmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJj
ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1l
clZpZGVvRGVjb2RlckZhY3RvcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRN
RlNlbmRlckJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmg6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVk
dWxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVyaWZpZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtRGlzcGxheU9wZW5W
Ui5oOgorICAgICAgICAqIHBsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5W
Ui5oOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL0xheWVyT3ZlcmxhcE1hcC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuaDoKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5jcHA6CisgICAgICAgICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1G
YWN0b3J5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogeG1sL1hNTEVycm9ycy5oOgorICAgICAgICAq
IHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKwogMjAxOS0wOC0xNSAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugb25lIFZNIHBl
ciB0aHJlYWQgZm9yIElEQiBzZXJpYWxpemF0aW9uIHdvcmsgaW4gbmV0d29yayBwcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIv
Q2hhbmdlTG9nCmluZGV4IDM1OGYyYmYwMDVhZTY0NGQ4MTIzMjhkNWRlZGU0MTljOGJhMDFjZmIu
LmU2YTUzYjMxMWUyZWNkMjE2Nzg1MzVhZTFhMzA5YjAwOWFlYWFhN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9u
IHBhcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICog
Z2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwOgorCiAyMDE5LTA2LTAzICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDU1Njcp
OiBbR1RLXVtXUEVdIFsyLjI1LjFdIFdlYktpdFdlYkRyaXZlciBnZXRzIGluc3RhbGxlZCBhcyBX
ZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZmQ1ZWU3YTI2NmM5MWNlYzc2ZmY3MzE5NjEzNTZhMDEzYTZl
YmRmZS4uYTQ1ODc3ZjAxNDZiYmI5MWRjOTVlY2QwYTBlZjZhZWM4ZDNkNTMyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMzQgQEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9u
IHBhcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2Nv
bHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1NvY2tldENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9Nb2R1bGUuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmg6CisgICAg
ICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
RmluZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUdlb2xvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUhpc3RvcnlDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUljb25EYXRh
YmFzZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElQb2xpY3lDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChX
S1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IG1heWJlSW5zdGFsbEljb25M
b2FkaW5nQ2xpZW50XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvQVBJVmlld0NsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9IaWdo
UGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNs
aWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5hdmln
YXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L0lucHV0Vmlld1VwZGF0ZURlZmVycmVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9TbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9j
YXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQ
YWdlQmFubmVyTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNj
YXBlUGx1Z2luWDExLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHku
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGljYXRvck92ZXJsYXlD
bGllbnRJT1MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmg6CisKIDIwMTktMDgt
MTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgU29tZSBpbXBy
b3ZlbWVudHMgb24gd2ViIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCA4
NWJmZTdmZTdhYTRjM2Y3ZmNiYjJkNzI4ZGI1ZGVhN2FkYWJhOGZmLi4wMWQyMDhlYzMwYTAyMTg5
YjdkNzJjNTUzNGMwNjk3NjZmMDU5OTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBU
IGlzIGZhc3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9uIHBh
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50SU9TLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW06CisKIDIwMTktMDctMjkgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudENoYW5nZU9ic2VydmVyXSBk
aWRGaW5pc2hDb250ZW50Q2hhbmdlT2JzZXJ2aW5nIHNob3VsZCBpbmNsdWRlIHRoZSB0eXBlIG9m
IGNvbnRlbnQgY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDdlYjAxZDVh
ZmIxMmMwZjdiY2E5MzdiNmJjODkyN2JlZDFiYWM1YjguLjRlYjdhMzNmMzk0NTRiOThhNzAzYzY0
YWVlMWU3YTkzZjllYmUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNiBAQAorMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFz
dC1hbGxvY2F0ZWQsIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIGFubm90YXRpb24gcGFydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBQbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaDoKKyAgICAgICAgKiBQbHVnaW5zL0hv
c3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICogUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hLmg6CisgICAgICAgICogU3RvcmFnZS9X
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmg6CisKIDIwMTktMDgtMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgWWVsbG93IExvb2t1cCBoaWdobGlnaHQgZ2V0cyBzdHVjayBvdmVy
IE1haWwgbWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAxZDRmZWE4ZGFj
MzEzZjg0ZjdiYzBmNzMyMzRhODg0YzI5MGU2ZmZhLi4yMDAwZGUzY2M1YmU0OWVhOGFjYmEzYmVk
NTBjMjgyMjkwN2VkOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3Qt
YWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9uIHBhcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5o
OgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luTWVzc2FnZVRocm90dGxlcldpbi5oOgorICAgICAg
ICAqIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3Rp
ZmljYXRpb25zRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVy
ZXIuaDoKKyAgICAgICAgKiBXZWJOb2RlSGlnaGxpZ2h0Lmg6CisgICAgICAgICogV2ViTm90aWZp
Y2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKiBXZWJOb3RpZmljYXRpb25DZW50ZXIuaDoKKwog
MjAxOS0wOC0xNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWx3YXlzIGNyZWF0ZSBhIERvY3VtZW50IHdpdGggYSB2YWxpZCBTZXNzaW9uSUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggYmNkNzJlYTA5ZjVmNzE3YTY1
ZjY1ZDdkMmVmYzE3NWUwMjNlNjk5MC4uZWJhYmI1OWQ0MzU5YTllMzY0ZjJjYTNhZjZhZmQwZWZk
MDM5MGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgY2xhc3MgVk07CiB0eXBlZGVmIEV4ZWNTdGF0ZSBDYWxsRnJhbWU7CiAK
IGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBEZWJ1Z2dlcihWTSYpOwogICAgIHZpcnR1YWwgfkRlYnVn
Z2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMu
cHkKaW5kZXggNjZmOWZkMmRjNDcwZDIxZjRkZTU3ZGU4MjhjMTU5NDQ1NjcxMjNiYi4uMzVmZTRh
YmIyYmFlYzJmMTQ5NTY2MTU2NjNjYTZjNTBhNmI5Mjk1MSAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVt
cGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTAyLDYgKzEwMiw3IEBAIGNs
YXNzIE9iakNHZW5lcmF0b3JUZW1wbGF0ZXM6CiAKICAgICBCYWNrZW5kRGlzcGF0Y2hlckhlYWRl
ckRvbWFpbkhhbmRsZXJPYmpDRGVjbGFyYXRpb24gPSAoCiAgICAgIiIiY2xhc3MgT2JqQ0luc3Bl
Y3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5h
dGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERp
c3BhdGNoZXIoaWQ8JHtvYmpjUHJlZml4fSR7ZG9tYWluTmFtZX1Eb21haW5IYW5kbGVyPiBoYW5k
bGVyKSB7IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9CiAke2NvbW1hbmREZWNsYXJhdGlvbnN9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
YWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3Rl
ZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCA4ODQyYzll
YjY5NzU2Y2U2MTQ3ZWM0YzJkOTdiZjcyYzdmMzUyMjNhLi5hMThlODJkOWYzZmUwNjFmNDJkMGI4
MDI4ODQ3YTc1N2E3ODBjZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBs
YXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0u
anNvbi1yZXN1bHQKQEAgLTU4NSw2ICs1ODUsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
CiBjbGFzcyBPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVi
bGljIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgT2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlcihpZDxUZXN0UHJvdG9jb2xOZXR3b3JrRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBt
X2RlbGVnYXRlID0gaGFuZGxlcjsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UobG9u
ZyByZXF1ZXN0SWQpIG92ZXJyaWRlOwpAQCAtOTI4LDYgKzkyOSw4IEBAIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGVuZAogCiAKKyNpbXBvcnQgPFdlYkluc3BlY3Rv
ci9SV0lQcm90b2NvbEJ1aWxkQ29tcGF0aWJpbGl0eU9iamVjdHMuaD4KKwogIyMjIEVuZCBGaWxl
OiBUZXN0UHJvdG9jb2wuaAogCiAjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwu
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApp
bmRleCBhNzE0ZmIxMzE4MzI5M2QxODMyZmM1ODFlNmM1MzM3ODY4MDJkNTcyLi4yMjQxZGY2YWJh
MzYwY2E3ZjZlZmYzYmNjZjBhNTMxNmZhZGNkMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5k
cy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtODYxLDYgKzg2MSw3IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCiAKIGNsYXNzIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE9iakNJbnNw
ZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKGlkPFRlc3RQcm90b2NvbERhdGFiYXNlRG9t
YWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFuZGxlcjsgfQogICAgIHZpcnR1
YWwgdm9pZCBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgcmVxdWVzdElk
LCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSkgb3ZlcnJpZGU7CkBA
IC0xMzQ2LDYgKzEzNDcsOCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKIAogCiAKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEJ1aWxkQ29tcGF0aWJp
bGl0eU9iamVjdHMuaD4KKwogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAogCiAjIyMgQmVn
aW4gRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFu
ZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVz
dWx0CmluZGV4IDUzYmQ1NTNiN2JhNzRkZGQyOWUyNTUxY2MwYjg0ZmE0MzA3MTRjYWUuLjQ5ZTBi
NDVlNjE4NTZkOGViY2JkNTYwZDI3NDEwNGFkZWZiZDEwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2Nv
bW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKQEAgLTc3Niw2ICs3NzYsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
CiBjbGFzcyBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1
YmxpYyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcihpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IGhhbmRsZXIp
IHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9w
dGlvbmFsUGFyYW1ldGVycyhsb25nIHJlcXVlc3RJZCwgY29uc3QgSlNPTjo6QXJyYXkqIGluX2Nv
bHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVz
dGFtcCwgY29uc3QgSlNPTjo6T2JqZWN0KiBpbl92YWx1ZXMsIGNvbnN0IEpTT046OlZhbHVlKiBp
bl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IEpTT046Ok9iamVjdCog
aW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEpTT046OkFy
cmF5KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikgb3Zl
cnJpZGU7CkBAIC0xMjIzLDYgKzEyMjQsOCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKIAogCiAKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEJ1aWxk
Q29tcGF0aWJpbGl0eU9iamVjdHMuaD4KKwogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAog
CiAjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kZWZp
bml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCBhOTBkNTgwYWQ0Yjlk
NTQ1Y2JkYjg1MzlhOGQ2NmI4NjE2N2JjNDM1Li5kNGMwZmUzZmUzYzZiYmRjMTAzNjJkMWUwYzM5
Zjk4YzdhYzM2ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0
Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9y
bS5qc29uLXJlc3VsdApAQCAtNjY0LDYgKzY2NCw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiAKIAogCisjaW1wb3J0IDxXZWJJbnNwZWN0b3Iv
UldJUHJvdG9jb2xCdWlsZENvbXBhdGliaWxpdHlPYmplY3RzLmg+CisKICMjIyBFbmQgRmlsZTog
VGVzdFByb3RvY29sLmgKIAogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CmluZGV4IDY3OGM2YWFhODVhY2EzODQy
NDhiOTkyOTAzNGNjZjA5NDExOGRlZTcuLmU5MTczNWM1YjZlYzM3NGIwYzNkOTYyOTY2ODVkOGFj
Nzg0OGIxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdApAQCAtNTczLDYg
KzU3Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAKIGNsYXNzIE9iakNJbnNwZWN0b3JE
b21haW5BQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlRG9tYWluQUJh
Y2tlbmREaXNwYXRjaGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBPYmpDSW5zcGVjdG9yRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyKGlkPFRlc3RQcm90b2Nv
bERvbWFpbkFEb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9
CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShsb25nIHJlcXVlc3RJZCkgb3ZlcnJpZGU7CkBAIC01
ODEsNiArNTgyLDcgQEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIE9iakNJbnNwZWN0b3JEb21haW5C
QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmRE
aXNwYXRjaGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBP
YmpDSW5zcGVjdG9yRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyKGlkPFRlc3RQcm90b2NvbERvbWFp
bkJEb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9CiAgICAg
dmlydHVhbCB2b2lkIGVuYWJsZShsb25nIHJlcXVlc3RJZCkgb3ZlcnJpZGU7CkBAIC05MTgsNiAr
OTIwLDggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUGxhdGZvcm0p
IHsKIAogCiAKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEJ1aWxkQ29tcGF0aWJp
bGl0eU9iamVjdHMuaD4KKwogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAogCiAjIyMgQmVn
aW4gRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlu
cy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMt
d2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5kZXggZjZjNWVkY2NiOTI4
NWFmNDhjNmRlYjk4NDIyYTcyMzZiODcwMmQ0ZS4uYmI1Mjk0YTgyMTkyNTIzZDA4MzMxYTkwYTIy
YzRjNjk4NGY4Y2EzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29t
bWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1j
b21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC03NDAsNiArNzQwLDcgQEAgbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKIAogY2xhc3MgT2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgT2JqQ0luc3BlY3Rvck5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXIoaWQ8VGVzdFByb3RvY29sTmV0d29yazFEb21haW5IYW5k
bGVyPiBoYW5kbGVyKSB7IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9CiAgICAgdmlydHVhbCB2b2lk
IGxvYWRSZXNvdXJjZTEobG9uZyByZXF1ZXN0SWQpIG92ZXJyaWRlOwpAQCAtNzQ4LDYgKzc0OSw3
IEBAIHByaXZhdGU6CiB9OwogCiBjbGFzcyBPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlz
cGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmpDSW5zcGVj
dG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihpZDxUZXN0UHJvdG9jb2xOZXR3b3JrM0RvbWFp
bkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICAgICB2aXJ0dWFs
IHZvaWQgbG9hZFJlc291cmNlMShsb25nIHJlcXVlc3RJZCkgb3ZlcnJpZGU7CkBAIC0xMTgxLDYg
KzExODMsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xQbGF0Zm9y
bSkgewogCiAKIAorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sQnVpbGRDb21wYXRp
YmlsaXR5T2JqZWN0cy5oPgorCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAKICMjIyBC
ZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9lbnVt
LXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CmluZGV4
IGVjMGMxMGI0ZGI0NmIzYmMwODM4NmZmYjczY2ZmZjk5MDg2YmYwNjQuLmMwYjNjYzk1Mjg2NjM2
NDNhNzY1ZjVmM2VlODg3M2IxNWU0MzY5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVz
Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CkBAIC02Mjcs
NiArNjI3LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogY2xhc3MgT2JqQ0luc3BlY3Rv
ckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3Bh
dGNoZXIoaWQ8VGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkRvbWFpbkhhbmRsZXI+IGhhbmRsZXIp
IHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWFuZFdpdGhF
bnVtUmV0dXJuVmFsdWUobG9uZyByZXF1ZXN0SWQpIG92ZXJyaWRlOwpAQCAtOTczLDYgKzk3NCw4
IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGVuZAogCiAKKyNp
bXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEJ1aWxkQ29tcGF0aWJpbGl0eU9iamVjdHMu
aD4KKwogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAogCiAjIyMgQmVnaW4gRmlsZTogVGVz
dFByb3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9u
YWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZDUzMzE3Y2ZlZjdkNmFkMTBkMmUyZTk4OGExYzg5
NzBkNGJkMTM0Mi4uNDY5ZDA5YmE3NThmNjMxYmZlYjI5MWQ4YTFiNTU3NTJkNjYwOTBiYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
CkBAIC05MTQsNiArOTE0LDggQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQi
KSkpCiBAZW5kCiAKIAorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sQnVpbGRDb21w
YXRpYmlsaXR5T2JqZWN0cy5oPgorCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAKICMj
IyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9n
ZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9n
ZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggMzBl
ODJjNWExNzY2MjhjZWJiZGJiMGZjNDEwZWU5NmM4YTQ4ZGM0OS4uMzFkYmM4Yzk5OGI1YzE0MTE1
MDg2MjRjNGMyOGI2NmY4MWUxOGM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlu
cy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRv
bWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAtNjA5LDYgKzYwOSw3IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQogY2xh
c3MgT2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMg
QWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgT2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3Bh
dGNoZXIoaWQ8VGVzdFByb3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7IG1f
ZGVsZWdhdGUgPSBoYW5kbGVyOyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZShsb25n
IHJlcXVlc3RJZCkgb3ZlcnJpZGU7CkBAIC05NTUsNiArOTU2LDggQEAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAZW5kCiAKIAorI2ltcG9ydCA8V2ViSW5zcGVjdG9y
L1JXSVByb3RvY29sQnVpbGRDb21wYXRpYmlsaXR5T2JqZWN0cy5oPgorCiAjIyMgRW5kIEZpbGU6
IFRlc3RQcm90b2NvbC5oCiAKICMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0Cmlu
ZGV4IGU0NTdmOWE0Yjc4Yzg1NzFiMTZlOWJmZTk1MjhiNDI0MGIyYTk3NmYuLmU5NDAyMTExMzgy
YWVjN2M1ZWYwZGVjOTgxYjIxYTY0ODg0NWFkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NhbWUtdHlw
ZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NhbWUtdHlwZS1p
ZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CkBAIC02NzQsNiArNjc0LDggQEAgdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUGxhdGZvcm0pIHsKIAogCiAKKyNpbXBv
cnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEJ1aWxkQ29tcGF0aWJpbGl0eU9iamVjdHMuaD4K
KwogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAogCiAjIyMgQmVnaW4gRmlsZTogVGVzdFBy
b3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlw
ZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0
ZXJzLmpzb24tcmVzdWx0CmluZGV4IDBkMTA2ZjNjMDg3NzJkOGUyNWYxZGJhNjZkNTY2YzRjM2Ni
MDJmYjIuLjRiZGIyZDQxMTlmYWM0YmYxZDA2MWUxYWY4MGNjMWQwMTc1ZTViNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKQEAgLTgx
Miw2ICs4MTIsOCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAog
CiAKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEJ1aWxkQ29tcGF0aWJpbGl0eU9i
amVjdHMuaD4KKwogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAogCiAjIyMgQmVnaW4gRmls
ZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hvdWxkLXN0cmlw
LWNvbW1lbnRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hvdWxkLXN0cmlwLWNvbW1lbnRzLmpzb24t
cmVzdWx0CmluZGV4IGQ5MzI1ODQwMjVhNzgzMDdjYzk3ZmI2MjkwMjg0ZDY3OGQzNmU5NDcuLjZh
MWZiN2Q0ZjlkOWI3ZmZjYWM0MGEwNjRhNTRhYmQ4Y2NkZWVkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L3Nob3VsZC1zdHJpcC1jb21tZW50cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaG91bGQtc3Ry
aXAtY29tbWVudHMuanNvbi1yZXN1bHQKQEAgLTY2NCw2ICs2NjQsOCBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogCiAKIAorI2ltcG9ydCA8V2Vi
SW5zcGVjdG9yL1JXSVByb3RvY29sQnVpbGRDb21wYXRpYmlsaXR5T2JqZWN0cy5oPgorCiAjIyMg
RW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAKICMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xJ
bnRlcm5hbC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJp
bWl0aXZlLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQt
cHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggZDlkNjgzODkwMWIwMjhlYWNiMzQ2MWUy
NmQ2NDkzMmY3MWMxNGQxZS4uZjU2NjYzNzljYTc0NmI2Njg3Mzk3NmIwM2U3NDE4Y2RhNDJhNDYx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10
eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmlt
aXRpdmUtdHlwZS5qc29uLXJlc3VsdApAQCAtNjY5LDYgKzY2OSw4IEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiAKIAogCisjaW1wb3J0IDxXZWJJ
bnNwZWN0b3IvUldJUHJvdG9jb2xCdWlsZENvbXBhdGliaWxpdHlPYmplY3RzLmg+CisKICMjIyBF
bmQgRmlsZTogVGVzdFByb3RvY29sLmgKIAogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbElu
dGVybmFsLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5q
c29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3Vs
dAppbmRleCBhNmIzYzMwYzNkZTU2Mjg3NzcyY2QyNDkxMTk2OWI1MzcyOWRkNzIzLi5mYjRkZDM3
M2FjNmU0YTA4OTNiMWZkMjVkYjI5ZThhZWU3MjkxZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNs
YXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC03NjUsNiArNzY1LDggQEAgdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24pIHsKIAogCiAK
KyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEJ1aWxkQ29tcGF0aWJpbGl0eU9iamVj
dHMuaD4KKwogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAogCiAjIyMgQmVnaW4gRmlsZTog
VGVzdFByb3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlv
bi1lbnVtLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlw
ZS5qc29uLXJlc3VsdAppbmRleCA0NGE5Njg2NzVhODI5YmJkNzJiMWQzMWI4ODY0MzhhYjg1ZDM1
NWM2Li4zMjQ4ZDZkNzI5Y2IzN2Q2ZDQ5MmE4NTZiYzhmNDQxNGY2OGRhYWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9l
eHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdApAQCAtNzk3LDYgKzc5Nyw4
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdn
ZWRBbmltYWxzKSB7CiAKIAogCisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xCdWls
ZENvbXBhdGliaWxpdHlPYmplY3RzLmg+CisKICMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sLmgK
IAogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CmluZGV4IDJkZDVkMDdlZWI5YTRj
MGNmZDJlNDg2MWM4Y2Y2NmExNWU1YjZkNjQuLjk5MjM0YzA5ODRhODg2MjQyODk0OTUzMTgyNTMy
ZGJjMzhkMWZlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5
cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5q
c29uLXJlc3VsdApAQCAtMTQzMyw2ICsxNDMzLDggQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCiAKIAogCisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xC
dWlsZENvbXBhdGliaWxpdHlPYmplY3RzLmg+CisKICMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29s
LmgKIAogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90
eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4IGJkZTg3NmFjZmFj
NjU0ZTM3NmE2OTg1MDNmYTRhMWNlZDQyZmNjMGMuLmJhM2RlMjZhOGY1M2E2NzdjZTZlOGU2NjA2
NzgzMmNmMjZlMzg3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUt
Y2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0
cy5qc29uLXJlc3VsdApAQCAtMTE1Miw2ICsxMTUyLDggQEAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSAoImRlZmF1bHQiKSkpCiAKIAogCisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9j
b2xCdWlsZENvbXBhdGliaWxpdHlPYmplY3RzLmg+CisKICMjIyBFbmQgRmlsZTogVGVzdFByb3Rv
Y29sLmgKIAogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90
eXBlLXdpdGgtb3Blbi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDQ2ODdkMzRkOGJjYjBm
YWViMDljZjUzOWE3YTA0YjlkMTQxNTY3NWMuLmU0MzBlZGU1MDhiYjVjODFkNzZkNDk5NGEyNzBk
MTEyMDc3OTUxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS13aXRoLW9wZW4tcGFyYW1ldGVycy5qc29uLXJl
c3VsdApAQCAtODI0LDYgKzgyNCw4IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKQogCiAKIAorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sQnVpbGRDb21w
YXRpYmlsaXR5T2JqZWN0cy5oPgorCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAKICMj
IyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC92
ZXJzaW9uLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdmVyc2lvbi5qc29uLXJlc3VsdAppbmRleCAzMDJi
N2U0ZTk0MmIzZmM3MWQ2MzU0MjM0OGIyZTBjNGE1MTY5NzllLi45NjU1MzFkNzQwMGI4NjRiOGY2
ZDYzOWNjMmU1YzljZjYwNGI0Zjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC92ZXJzaW9uLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL3ZlcnNpb24uanNvbi1yZXN1bHQKQEAgLTY3Myw2ICs2NzMsOCBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogCiAKIAor
I2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sQnVpbGRDb21wYXRpYmlsaXR5T2JqZWN0
cy5oPgorCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAKICMjIyBCZWdpbiBGaWxlOiBU
ZXN0UHJvdG9jb2xJbnRlcm5hbC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvaW9zL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFj
LXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2lvcy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5q
c29uLXJlc3VsdAppbmRleCBhOTBkNTgwYWQ0YjlkNTQ1Y2JkYjg1MzlhOGQ2NmI4NjE2N2JjNDM1
Li5kNGMwZmUzZmUzYzZiYmRjMTAzNjJkMWUwYzM5Zjk4YzdhYzM2ZTVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvaW9zL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9pb3MvZXhwZWN0ZWQvZGVmaW5p
dGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTY2NCw2ICs2NjQsOCBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogCiAKIAor
I2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sQnVpbGRDb21wYXRpYmlsaXR5T2JqZWN0
cy5oPgorCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAKICMjIyBCZWdpbiBGaWxlOiBU
ZXN0UHJvdG9jb2xJbnRlcm5hbC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFj
LXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5q
c29uLXJlc3VsdAppbmRleCA4ODQyYzllYjY5NzU2Y2U2MTQ3ZWM0YzJkOTdiZjcyYzdmMzUyMjNh
Li5hMThlODJkOWYzZmUwNjFmNDJkMGI4MDI4ODQ3YTc1N2E3ODBjZGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5p
dGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTU4NSw2ICs1ODUsNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiBjbGFzcyBPYmpDSW5zcGVjdG9yTmV0d29ya0JhY2tl
bmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEFsdGVybmF0ZU5ldHdvcmtCYWNrZW5kRGlzcGF0
Y2hlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgT2JqQ0lu
c3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcihpZDxUZXN0UHJvdG9jb2xOZXR3b3JrRG9t
YWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFuZGxlcjsgfQogICAgIHZpcnR1
YWwgdm9pZCBsb2FkUmVzb3VyY2UobG9uZyByZXF1ZXN0SWQpIG92ZXJyaWRlOwpAQCAtOTI4LDYg
KzkyOSw4IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGVuZAog
CiAKKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEJ1aWxkQ29tcGF0aWJpbGl0eU9i
amVjdHMuaD4KKwogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAogCiAjIyMgQmVnaW4gRmls
ZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAppbmRleCA0NThlYzUzYjQz
MzdiMTcxMDU1NmY4YTE3YjRlZjAxZWZjZTE1NjRlLi5mYjVkYTFmMTZkYTAyZWM4NGMzNDc3ZDM1
NWZlMGE1ZTg5NjQwNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaApAQCAtNTAsNyArNTAsOCBAQCBjbGFz
cyBMZWdhY3lDRE1DbGllbnQgewogICAgIHZpcnR1YWwgUmVmUHRyPE1lZGlhUGxheWVyPiBjZG1N
ZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25zdCA9IDA7CiB9OwogCi1jbGFzcyBMZWdh
Y3lDRE0geworY2xhc3MgTGVnYWN5Q0RNIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlLmgKaW5kZXggMGE4ZDU0ZTVjNTY1
ZjM0NTA4NTYyYzVhOGMxZTAwMzVhZjE0YTc0Zi4uZjI0OTcwNzJlNzg1NzYwYzU5ZTIzMDM5MzRm
YjdmOWNjNDc3MmRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGUuaApAQCAtMzUsNiAr
MzUsNyBAQCBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbkNs
aWVudDsKIAogY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNUHJpdmF0ZUludGVyZmFjZSgpID0gZGVmYXVsdDsK
ICAgICB2aXJ0dWFsIH5DRE1Qcml2YXRlSW50ZXJmYWNlKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RN
U2Vzc2lvbkNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaAppbmRleCAyZjdiMDM1MzllZjhlYTQ3
NGUyMzZkMDVkOWUxN2ZlYzQ4NGU2MjdlLi5iYzc3N2YwY2JjOGNlN2I4OWU5NDNiOGE2M2U0ZTZl
ODI4OWIzOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXku
aApAQCAtMzMsNyArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENETVNl
c3Npb25DbGVhcktleSA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKK2NsYXNzIENETVNlc3Np
b25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1TZXNzaW9uQ2xlYXJLZXkoTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25DbGVhcktleSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rl
ci5oCmluZGV4IGJjMDBlYjlmODdkMWJjZDU4Y2JmNzQ5YjdkYTdjNDkzY2Y3ZTg4NzYuLmNmOTI2
OWMzMDQ0YzQzMjJkNzQ0ZDA2MjlkZGEwZmE4OTQ5M2VjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKQEAgLTQyLDcgKzQy
LDggQEAgY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsKIC8vIEFzeW5jQXVkaW9EZWNvZGVyIGFz
eW5jaHJvbm91c2x5IGRlY29kZXMgYXVkaW8gZmlsZSBkYXRhIGZyb20gYW4gQXJyYXlCdWZmZXIg
aW4gYSB3b3JrZXIgdGhyZWFkLgogLy8gVXBvbiBzdWNjZXNzZnVsIGRlY29kaW5nLCBhIGNvbXBs
ZXRpb24gY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIHdpdGggdGhlIGRlY29kZWQgUENNIGRhdGEg
aW4gYW4gQXVkaW9CdWZmZXIuCiAKLWNsYXNzIEFzeW5jQXVkaW9EZWNvZGVyIHsKK2NsYXNzIEFz
eW5jQXVkaW9EZWNvZGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBc3luY0F1ZGlvRGVjb2Rlcik7CiBwdWJsaWM6CiAgICAg
QXN5bmNBdWRpb0RlY29kZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5oCmluZGV4IGIxYzQ5ZGI1MjNi
OTM2YjBhNGVjMjIxMDQxYjc3ZGE3Y2MxNDc4ZmQuLjBiOGI4NDllNDM0OGNlNDJhZDFjZGIwZWFk
YWUxZjUzY2JjYTNmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuaApAQCAtNDMsNyArNDMsOCBAQCBz
dHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOwogCiB1c2luZyBDcmVkZW50
aWFsUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExOdWxsYWJsZTxJRExJbnRlcmZhY2U8
QmFzaWNDcmVkZW50aWFsPj4+OwogCi1jbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Igewor
Y2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IpOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8QXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xp
ZW50PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0
YXRlbWVudC5oCmluZGV4IDg1ZjFiNjM1YzNlNDliM2ZlMWE4MWY5NDg3ODI0ODBlMWRlNDhmYjUu
LjUxNGM1M2E5YjAwNWJkOGNhYjc5NmQ1NmM3OTFkMDk1MmI4MjM0NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaApAQCAtNDMsNyAr
NDMsOCBAQCBjbGFzcyBTUUxFcnJvcjsKIGNsYXNzIFNRTFJlc3VsdFNldDsKIGNsYXNzIFNRTFRy
YW5zYWN0aW9uQmFja2VuZDsKIAotY2xhc3MgU1FMU3RhdGVtZW50IHsKK2NsYXNzIFNRTFN0YXRl
bWVudCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
U1FMU3RhdGVtZW50KERhdGFiYXNlJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNRTFZhbHVlPiYm
LCBSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrPiYmLCBpbnQgcGVybWlzc2lvbnMpOwogICAgIH5TUUxTdGF0ZW1lbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZh
cmlhYmxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaAppbmRleCBlOTJkYWExNmVmNTNjMDExMTU0
N2E5ZThjZDc5YTNlODM1Mjc3MWNiLi4zZDAyODEzYTY0NzM2ODMxNzRiMzIzOTdmNGI4N2ZhNDM3
ZGZmNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCkBAIC00OCw2ICs0
OCw3IEBAIGNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gZmluYWwgewogLy8gRmluYWwgYmVjYXVz
ZSB3ZSBtYWRlIHRoZSBkZXN0cnVjdG9yIG5vbi12aXJ0dWFsLgogcHVibGljOgogICAgIHN0cnVj
dCBSYXJlRGF0YSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgUmFyZURhdGEoUXVhbGlmaWVycyYmIHF1YWxpZmllcnNBcmd1bWVudCwgc3RkOjp1bmlx
dWVfcHRyPFNlbWFudGljPiYmIHNlbWFudGljQXJndW1lbnQpCiAgICAgICAgICAgICA6IHF1YWxp
ZmllcnMoV1RGTW92ZShxdWFsaWZpZXJzQXJndW1lbnQpKQogICAgICAgICAgICAgLCBzZW1hbnRp
YyhXVEZNb3ZlKHNlbWFudGljQXJndW1lbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2lu
dFNjYWZmb2xkaW5nLmgKaW5kZXggMGUzMWZmYmRlMGIxNDg2ZjZjNmY2NWUyMGViNjM4YWU4ODFi
ODdmOC4uY2JjYzQ4NGI2ODI1MGMwYWEwOWI1OTk0M2FkYzc5ZTgxMDA5Mjc0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBv
aW50U2NhZmZvbGRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGluZy5oCkBAIC01MCw2ICs1MCw3IEBAIG5h
bWVzcGFjZSBNZXRhbCB7CiBjbGFzcyBUeXBlTmFtZXI7CiAKIGNsYXNzIEVudHJ5UG9pbnRTY2Fm
Zm9sZGluZyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RW50cnlQb2ludFNjYWZmb2xkaW5nKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlc29sdmluZ1R5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5o
CmluZGV4IDU1OWNlOGJhOTNiMjlkNTE3ZmE3NzNmNmE1ZjUyN2RkZjRhODViMDEuLjQ1NzAwY2Vk
OGZkMzQ0OWM0ZGE0OTU5ZjcxYTQwMmFhMDJkNmU0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2aW5nVHlwZS5oCkBAIC03
NCw2ICs3NCw3IEBAIGNsYXNzIFJlc29sdmFibGVUeXBlUmVmZXJlbmNlIDogcHVibGljIFJlZkNv
dW50ZWQ8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHsKIC8vIEl0IGV4aXN0cyBzbyB3ZSBjYW4g
bWFrZSBzdXJlIHRoYXQgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZG9lcyB0aGUgcmlnaHQgdGhp
bmcuCiAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODE1OCBUaGlzIHdyYXBwZXIgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeS4KIGNsYXNzIFJlc29sdmlu
Z1R5cGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc29s
dmluZ1R5cGUoKQogICAgICAgICA6IG1faW5uZXIoUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlPigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlz
ZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaApp
bmRleCA3ZGE0NmE2MTUwNGVmMjQ4MTVhNjk0ZGZiYTEyYzI4YjFlZjRmZTY2Li42MjFiODkwNTFi
YjQ4ZGIwMzAxZWE4MDQ3YzdhZmVmZmI2OGNkZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBET01Qcm9t
aXNlUHJveHkgewogCiB0ZW1wbGF0ZTw+CiBjbGFzcyBET01Qcm9taXNlUHJveHk8SURMVm9pZD4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERPTVByb21pc2VQ
cm94eSgpID0gZGVmYXVsdDsKICAgICB+RE9NUHJvbWlzZVByb3h5KCkgPSBkZWZhdWx0OwpAQCAt
ODQsNiArODUsNyBAQCBjbGFzcyBET01Qcm9taXNlUHJveHk8SURMVm9pZD4gewogLy8gRm9udEZh
Y2UgYW5kIEZvbnRGYWNlU2V0LgogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KIGNsYXNzIERP
TVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJlc29sdmVDYWxsYmFjayA9IFdURjo6RnVuY3Rp
b248dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSAoKT47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgKaW5kZXggMGNlNDU5NTBjNTM5MWY2MDY5NmZkNDBk
ODlkOTI3ZGEzODZhODdkMy4uNmNlZGQ3NjY0NWVjNGY1YmY0NjA5MzJiNmE2ZDE3MzM3YWQ4MTQw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmgKQEAgLTMzLDYg
KzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0NDb250cm9sbGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHQ0Nv
bnRyb2xsZXIpOwogICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPEdDQ29udHJv
bGxlcj47CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvanNjL0Jy
aWRnZUpTQy5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0MuaAppbmRleCBm
MmY2MjA4MmE4MDhhMTlmMTBhNWQ5MzVkOTIyYjc3M2MxMjIxYzI4Li4wNGNkZGNkMjRjYWE4Mjlj
MzJlNTZlYzI3M2FmYmQzNTFmMjU0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvanNjL0JyaWRnZUpTQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdl
SlNDLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgUm9vdE9iamVjdDsKIGNsYXNzIFJ1bnRpbWVP
YmplY3Q7CiAKIGNsYXNzIEZpZWxkIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiwg
Y29uc3QgSW5zdGFuY2UqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNldFZhbHVlVG9J
bnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggOGM3ZTNmN2Q3ZjFlMGQ1NWFhZDg5MzRhYmJhNWFh
NzBmYjhmODVjZi4uNzdmZWI2MGM1MGJjOGE0ZjI0YjI3Njk2YWQxMTBkMWVkYTc0MjgwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgc3RydWN0IFJlc291cmNlTG9h
ZEluZm87CiAvLyAxKSBJdCBzdG9yZXMgdGhlIHJ1bGVzIGZvciBlYWNoIGNvbnRlbnQgZXh0ZW5z
aW9uLgogLy8gMikgSXQgcHJvdmlkZXMgQVBJcyBmb3IgdGhlIFdlYkNvcmUgaW50ZXJmYWNlcyB0
byB1c2UgdGhvc2UgcnVsZXMgZWZmaWNpZW50bHkuCiBjbGFzcyBDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIC0g
UnVsZSBtYW5hZ2VtZW50IGludGVyZmFjZS4gVGhpcyBjYW4gYmUgdXNlZCBieSB1cHBlciBsYXll
ci4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Z1bGxzY3JlZW5NYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaAppbmRleCBlZGQ5Y2EyOGVh
NDkzYWM3Yzk0YzhiZGUyODViMTY2NmMzODgyNTU5Li4yMWM5OWE0NTdjM2Q2YmU4ZGQ3NzA0OWJj
MWQ1N2ZiMTM2NmMxOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVl
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnVsbHNjcmVlbk1hbmFnZXIuaApA
QCAtNDEsNyArNDEsOCBAQCBjbGFzcyBSZW5kZXJGdWxsU2NyZWVuOwogY2xhc3MgUmVuZGVyVHJl
ZUJ1aWxkZXI7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAotY2xhc3MgRnVsbHNjcmVlbk1hbmFnZXIg
eworY2xhc3MgRnVsbHNjcmVlbk1hbmFnZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEZ1bGxzY3JlZW5NYW5hZ2VyKERvY3VtZW50Jik7CiAgICAg
fkZ1bGxzY3JlZW5NYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWlj
cm90YXNrcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaAppbmRleCBiNjMxODQx
NTBmNWEzOTE0MjUyYjg0MmVkOWQwN2RlYWFmNmI0MDM2Li5hOWYyZWI5YWI5ODEzNmNjZjA0NGM5
NzNlNmY5YjkxY2Q0ODQzOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90
YXNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKQEAgLTM1LDYgKzM1
LDcgQEAgY2xhc3MgTWljcm90YXNrUXVldWU7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCiBjbGFzcyBNaWNyb3Rhc2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfk1pY3JvdGFzaygpCiAgICAgewpAQCAtNTIsNyArNTMsNiBAQCBj
bGFzcyBNaWNyb3Rhc2sgewogfTsKIAogY2xhc3MgVm9pZE1pY3JvdGFzayBmaW5hbCA6IHB1Ymxp
YyBNaWNyb3Rhc2sgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFZvaWRNaWNyb3Rhc2soRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAg
ICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCkBAIC02OSw3ICs2OSw4IEBAIGNs
YXNzIFZvaWRNaWNyb3Rhc2sgZmluYWwgOiBwdWJsaWMgTWljcm90YXNrIHsKICAgICBGdW5jdGlv
bjx2b2lkKCk+IG1fZnVuY3Rpb247CiB9OwogCi1jbGFzcyBNaWNyb3Rhc2tRdWV1ZSB7CitjbGFz
cyBNaWNyb3Rhc2tRdWV1ZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPE1pY3JvdGFza1F1ZXVlPjsKICAgICBmcmllbmQgY2xh
c3MgTWljcm90YXNrOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5oCmluZGV4IGRkYTQ5MGIxM2NkYzJkZGI4M2ZiMWZjOGZmYWIwOWRmMDA4
OGQ4MmMuLjQyNjgxOTZmODkyYWYzMDU1MTAzYzQ4NzJmZThlY2JkZDVmMTFhZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTQxLDYgKzQx
LDcgQEAgY2xhc3MgU3R5bGVkRWxlbWVudDsKIGNsYXNzIFRleHQ7CiAKIGNsYXNzIEFjY2Vzc2li
aWxpdHlVbmRvUmVwbGFjZWRUZXh0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5VW5kb1JlcGxhY2VkVGV4dCgpIHsgfQogICAgIHZvaWQg
Y29uZmlndXJlUmFuZ2VEZWxldGVkQnlSZWFwcGx5V2l0aFN0YXJ0aW5nU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKaW5kZXggMjU3N2Q1YTc2OTY4MTYy
MmY1ZDBhN2I2M2ZmNGQwOWQ4OGM5NWRjMS4uMjljNWE4ZGE3ZWUzMjU1NjEyNjU2OTA1NGUzMDIy
MjhhNTMwMTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgT0JKQ19DTEFT
UyBOU1ZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKCkgeyB9CiAgICAgLy8gUmV0dXJucyBhIGNvbnRl
eHQgSUQuCkBAIC01Miw2ICs1Myw3IEBAIGNsYXNzIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ciB7CiAgICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmVzKCk7CiAKICAgICBjbGFzcyBBbGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgcHVibGljOgogICAgICAgICBBbGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVy
KCkgeyB9CiAgICAgICAgIHVpbnQ2NF90IGFkZEFsdGVybmF0aXZlcyhjb25zdCBSZXRhaW5QdHI8
TlNUZXh0QWx0ZXJuYXRpdmVzPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAppbmRleCA2MTI0NTQxZjdjZjU0YTExMGE1ZTQ4NmU0MmM3MWNkMmEyZWZhMTkzLi4yYzZlYzA1
OGU0Yzk1MjEzMWMwZWEwOGUwOGE3ZWE5NDM1ODA2NTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaApAQCAtOTkwLDYgKzk5MCw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1l
bnQKICAgICBSZWZQdHI8TWVkaWFFcnJvcj4gbV9lcnJvcjsKIAogICAgIHN0cnVjdCBQZW5kaW5n
U2VlayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAg
UGVuZGluZ1NlZWsoY29uc3QgTWVkaWFUaW1lJiBub3csIGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0
VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRvbGVyYW5jZSwgY29uc3QgTWVkaWFUaW1l
JiBwb3NpdGl2ZVRvbGVyYW5jZSkKICAgICAgICAgICAgIDogbm93KG5vdykKICAgICAgICAgICAg
ICwgdGFyZ2V0VGltZSh0YXJnZXRUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggMjhlZTcyN2EzNmQ2
NmNlMjEwOTY5NzgzMWFlMGE4YWFjNDIzODU3NS4uNmMxYjUxYWRlZTlhMzg0MjYzMzM4ZjQ1ZDg4
ODRhNmQ5YzM3ZWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGNsYXNzIFdF
QkNPUkVfRVhQT1JUIFNldHRpbmdzIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgcHVibGljOgogICAgICAgICBTZXR0aW5ncygpID0gZGVmYXVsdDsKICAgICAgICAgdmly
dHVhbCB+U2V0dGluZ3MoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKaW5kZXggYmI1ZDFiZWM2YzYzMjIzOWJlZTY0NjM0
MzdhZWZlZDEyYmE0NzFkNS4uY2FmZWFiOTVlYWZjMWFiZTI0NGFlMTVkNzZiOTY2ZTAwNWU5MzE5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50
LmNwcApAQCAtNDAsNyArNDAsOCBAQCBzdHJ1Y3QgR2FyYmFnZUNvbGxlY3Rpb25EYXRhIHsKICAg
ICBTZWNvbmRzIGVuZFRpbWU7CiB9OwogCi1jbGFzcyBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVu
dHNUYXNrIHsKK2NsYXNzIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2sgZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNlbmRHYXJiYWdlQ29s
bGVjdGlvbkV2ZW50c1Rhc2soV2ViSGVhcEFnZW50Jik7CiAgICAgdm9pZCBhZGRHYXJiYWdlQ29s
bGVjdGlvbihHYXJiYWdlQ29sbGVjdGlvbkRhdGEmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAppbmRleCA3YWUzYjQwOWQ3NjExNmYyZTlkMTNj
YzMxZWI2ZTU2MDYzYjEwNzZmLi43OTkxNjI3NTc0MDE4M2YzNTNmNWFmZDViMTUyMmU1NjUzZmM4
OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVu
LmgKQEAgLTM2LDcgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3Bs
YXkgewogCiBzdHJ1Y3QgUnVuIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgc3RydWN0IFRleHRDb250ZXh0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dENvbnRleHQodW5zaWduZWQgcG9z
aXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUl0ZW0uaAppbmRleCBiMDAxM2I2ZWQ1NjNiY2JmODI4
MTM5MTM0MWYyZGQ1NjE1ZWM1M2VmLi43OTA2MTk2ODFlNjc1MmQyODcyNDkzODYyMmUzYTc0YmUw
MzNmZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lSXRlbS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5h
bWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVtIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPElubGluZUl0ZW0+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBIYXJkTGluZUJyZWFrLCBCb3gsIEZsb2F0LCBD
b250YWluZXJTdGFydCwgQ29udGFpbmVyRW5kIH07CiAgICAgSW5saW5lSXRlbShjb25zdCBCb3gm
IGxheW91dEJveCwgVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKaW5kZXggZmFmMDU0NzUzZDM3MjJhYmMwMWQ4YTczZjQ3
OTkzNDliY2IxYWExMS4uNzM3YTA3YjAzMmFmNmZmMTE5OTA5NmY3YTM3NTc1N2U2ZGE5ZjFiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuaApAQCAtNTIsOCArNTIsMTAgQEAgY2xhc3MgTGluZSB7CiAgICAgTGluZShjb25zdCBM
YXlvdXRTdGF0ZSYsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50cyYsIFNraXBWZXJ0aWNhbEFsaWdt
ZW50KTsKIAogICAgIGNsYXNzIENvbnRlbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0cnVjdCBSdW4geworICAgICAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAgICAgc3RydWN0IFRleHRDb250
ZXh0IHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsZW5ndGggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaAppbmRleCBiYmIyNzM2Nzc0MTdmOTNiODEzYjAz
MzcwM2JjOWRmN2MxMjUxZDg3Li5hNDY4NTE5OWFlNGE2MTZiZWE2Mzg0MjEzNDk3MmMwZjIzM2Vj
NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1Rh
YmxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFi
bGVHcmlkLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgVGFibGVHcmlkIHsKICAgICB1c2luZyBT
bG90UG9zaXRpb24gPSBJbnRQb2ludDsKICAgICB1c2luZyBDZWxsU2l6ZSA9IEludFNpemU7CiAg
ICAgc3RydWN0IENlbGxJbmZvIDogcHVibGljIENhbk1ha2VXZWFrUHRyPENlbGxJbmZvPiB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgQ2VsbEluZm8o
Y29uc3QgQm94JiB0YWJsZUNlbGxCb3gsIFNsb3RQb3NpdGlvbiwgQ2VsbFNpemUpOwogCiAgICAg
ICAgIGNvbnN0IEJveCYgdGFibGVDZWxsQm94OwpAQCAtNjAsNiArNjEsNyBAQCBjbGFzcyBUYWJs
ZUdyaWQgewogCiAgICAgdXNpbmcgU2xvdExvZ2ljYWxTaXplID0gTGF5b3V0U2l6ZTsKICAgICBz
dHJ1Y3QgU2xvdEluZm8geworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIFNsb3RJbmZvKCkgPSBkZWZhdWx0OwogICAgICAgICBTbG90SW5mbyhDZWxsSW5m
byYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDhlM2E0NmI1MTBhOTk4
MGMyYWZiODBhMzQ0OGE0OTg5ZWFjMTllMTkuLjMwYTZmZjZkYTkyNzk2YmY0MjY4M2NhNGIyZjk3
YmI3YzE4N2Q0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC05NSw3ICs5
NSw4IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNSZWxvYWQoRnJhbWVMb2FkVHlwZSk7CiAKIHVz
aW5nIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKFBv
bGljeUFjdGlvbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyKT47CiAKLWNsYXNzIEZyYW1lTG9hZGVy
IHsKK2NsYXNzIEZyYW1lTG9hZGVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZUxvYWRlcik7CiBwdWJsaWM6CiAgICAg
RnJhbWVMb2FkZXIoRnJhbWUmLCBGcmFtZUxvYWRlckNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25EaXNhYmxlci5oCmluZGV4IDAyY2M3ZDEyMGNhNGJjZmYzNTI1Yzhm
NzQ5Y2M0MTgwZmU2ZDQ1ZTIuLjhhZTRiMzFiOGI2OWY5OGQwMWFkYTc4ODk5YTk4YmQxMWRkNDI3
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uRGlzYWJsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkRpc2FibGVyLmgKQEAgLTMw
LDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmF2aWdhdGlvbkRpc2Fi
bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXZpZ2F0
aW9uRGlzYWJsZXIoRnJhbWUqIGZyYW1lKQogICAgICAgICA6IG1fZnJhbWUoZnJhbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAppbmRleCBhMmRkYWNlMjhm
MDdjMzkxZmUyNGUxOTE4ZDI1NGE1MDAyZmFiNDc2Li45N2MyM2IxNTA5MmJmMzkzYjMxZDIwYzhm
MzRkMjU3NzI2MzFjYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBlbnVtIGNs
YXNzIE5ld0xvYWRJblByb2dyZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICAKIGNsYXNzIE5h
dmlnYXRpb25TY2hlZHVsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IE5hdmlnYXRpb25TY2hlZHVsZXIoRnJhbWUmKTsKICAgICB+TmF2aWdh
dGlvblNjaGVkdWxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAppbmRleCAyMjlhMTQyZDY0NDEzY2ViYWVmYWM1MjcxMGJiMmJmOGRkZWRmN2JlLi4y
ZmZlMmI0MTg3OTk3ZWVmZGQ0MTVlMGVkYmU4MDJkYzE3MmNhZTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMzgxLDkgKzM4MSw3IEBAIGNs
YXNzIENhY2hlZFJlc291cmNlIHsKIH07CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOjpDYWxsYmFj
ayB7Ci0jaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0j
ZW5kaWYKIHB1YmxpYzoKICAgICBDYWxsYmFjayhDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJlc291
cmNlQ2xpZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKaW5kZXggNzBjYjFhZmE0Y2YxZDNhNmU2NDJh
OGFlOWRiODQ0OGY4NGQxNGJkNi4uMjJhZTcyZDhmZjVlZjcyOWExNjRjNzZhNGZkYmIwZTQ5ZDcx
ZjRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgKQEAgLTM1LDcgKzM1LDggQEAgY2xhc3MgQ2FjaGVkU1ZH
RG9jdW1lbnQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIHN0cnVjdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnM7CiAKLWNsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlIDogcHVibGlj
IENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKK2NsYXNzIENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlIGZpbmFsIDogcHVibGljIENhY2hlZFNWR0RvY3VtZW50Q2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5j
ZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9QcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2Fk
ZXIuaAppbmRleCA2MThlOTQyOTUwMTdkYzNiODMwMzY1YzExNjc2MTUzOGIxZGI2MjM4Li4xNTAz
ZDc4ZTNhZjU5OTQ5NTRiMzNjMmE4MDg0ZjRmZWE2MzAwNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQcmV2aWV3TG9hZGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
cmV2aWV3TG9hZGVyKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFByZXZp
ZXdMb2FkZXI+IGNyZWF0ZShSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKaW5kZXgg
ZTZhZGI2N2RhOTQ4Njg2MjZmZTIwNmZmMTZlNjRkZGFjZTI3MDFmZS4uNjEzZTc4OTJiNDEwZjNi
MmE0OTRlY2ZiNjgwMDBhYWMwZGM2NjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzLmgKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgVGV4dFRyYWNrTGlz
dDsKIHN0cnVjdCBNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIAogY2xhc3MgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcyhQYWdlR3JvdXAmKTsKICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNl
clByZWZlcmVuY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByZXdhcm1J
bmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmV3YXJtSW5mb3JtYXRpb24uaApp
bmRleCA5OWE0MzcyZTU0ZDg0MDI5YmFmYmY5YjhmN2E1ODIwMDFmYTYzYTFiLi4xNmJjZjA0Mzkw
YTE3MGYzZGU3ODI2NTBjMmZjMjUyMmNmNTA1NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByZXdhcm1JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJl
d2FybUluZm9ybWF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IFdFQkNPUkVfRVhQT1JUIFByZXdhcm1JbmZvcm1hdGlvbiB7CisgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0
aW9uIGZvbnRDYWNoZTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXpl
T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuaAppbmRleCA5
NWIxYzhiNWJlODNkODliMjQ5NzllYWVkOWI5ZDRlOTBkM2Y0Zjg3Li5lZWViZjliOWU2MWJkNTg4
ZmQzYmE5OWZhYjE1MDE5MWNjOGY2NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1Jlc2l6ZU9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZl
ci5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIAog
c3RydWN0IFJlc2l6ZU9ic2VydmVyRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFZlY3RvcjxXZWFrUHRyPFJlc2l6ZU9ic2VydmVyPj4gb2JzZXJ2ZXJzOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaAppbmRleCA1NTg0NDM0MDc4
MzQ2ZmI5YjU3YTZlYTU5YWZjZTI3YTYyNDBiNTVhLi4zYzNkNDllMDU4YWIxMzE3NDdlYjQ5YmIw
YzkzYTBmZDI5NDUxOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRh
YmxlVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaApA
QCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdXNwZW5kYWJs
ZVRpbWVyIDogcHJpdmF0ZSBUaW1lckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFN1c3BlbmRh
YmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgflN1c3BlbmRh
YmxlVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgKaW5kZXggYThmMWQ0ZjBiZGUxNGYxNGI4OGFhMzk0
MGVkZDhjODk2MjYxZTNkZS4uYmJkOTE4OWUyNDgzNGRhY2M4ZDdiYWUxNWNjNTgxNmNhMzIwY2Yx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDsKIAogY2xhc3MgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGlyZWN0aXZlTGlzdCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICA6IG1fbmFtZShuYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvQ29udGVudENoYW5nZU9ic2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAppbmRl
eCAzMDk0ZTI4NDY0ZmU5MWI1NWJmNjVjZTJlMWJiN2MzYWQ2NmY4MmI3Li44N2E1MDJhNWY3YmYw
MTEwMDEyNzg5OWM1NDdjN2E4Y2EzYTY1MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9Db250ZW50Q2hhbmdlT2JzZXJ2ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBET01U
aW1lcjsKIGNsYXNzIEVsZW1lbnQ7CiAKIGNsYXNzIENvbnRlbnRDaGFuZ2VPYnNlcnZlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIoRG9j
dW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJI
b2xkaW5nVGFuay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRE9NVGltZXJIb2xkaW5nVGFu
ay5oCmluZGV4IGI2MjE4NGZlMTc5NDJkYTk0ODU5YTgwMmNlZmRlNzZlMjQyZDNlNGMuLmJiZjc5
NDVhYWE0OTlhNzZiN2UxMmFiM2M3NWQ1OTQ0MjFlNDVlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0RPTVRpbWVySG9sZGluZ1RhbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2lvcy9ET01UaW1lckhvbGRpbmdUYW5rLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRE9NVGltZXI7CiAKIGNsYXNzIERPTVRpbWVySG9sZGluZ1Rh
bmsgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERPTVRpbWVy
SG9sZGluZ1RhbmsoKTsKICAgICB+RE9NVGltZXJIb2xkaW5nVGFuaygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAK
aW5kZXggNGZkZjc1NmMwMjE5ODg1MzNiMmYxMjU1YzkxYTRlY2M5MTQ4NGZhNC4uOGI4N2JjYWRk
NTFmYzZmN2Y3MGI5NjI3MmMzZGYyMzI0MTk2ZGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC03MCw2
ICs3MCw3IEBAIHN0YXRpYyBTdHJpbmcgZ2NUaW1lclN0cmluZyhNb25vdG9uaWNUaW1lIHRpbWVy
RmlyZURhdGUsIE1vbm90b25pY1RpbWUgbm93KQogc3RhdGljIGNvbnN0IGZsb2F0IGdGb250U2l6
ZSA9IDE0OwogCiBjbGFzcyBSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXIgZmluYWwgOiBwdWJs
aWMgR3JhcGhpY3NMYXllckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUmVzb3VyY2VVc2FnZU92ZXJsYXlQYWludGVyKFJlc291cmNlVXNhZ2VPdmVy
bGF5JiBvdmVybGF5KQogICAgICAgICA6IG1fb3ZlcmxheShvdmVybGF5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5oCmluZGV4IGRjZGQ5NTA0OGJkOTU4
YWE3NDQwYTBmYzNkOWJjZTdkZjJmNTQ4MGYuLjY0NzVjZTVlYmM5MDdhZTE4ODBhZjE3MWMwNzM2
ZmYzZWNiNTAyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRp
Y2F0b3JXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5kaWNhdG9y
V2luZG93LmgKQEAgLTUyLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBUZXh0SW5kaWNhdG9yV2luZG93
RGlzbWlzc2FsQW5pbWF0aW9uIDogdWludDhfdCB7CiAjaWYgUExBVEZPUk0oTUFDKQogCiBjbGFz
cyBUZXh0SW5kaWNhdG9yV2luZG93IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0SW5kaWNhdG9yV2luZG93KTsKIAogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0
c0luZm8uaAppbmRleCA2M2JkOTYzOGI2M2ExYTExY2E0MGYzNjcyMTI5ZjcxNDEwYzZmZjJlLi4z
YWI2NDA2ODI2NGM1MDQwOGJhYjRlZTM4ZDJjY2Q0YTY0MWM3ODY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAt
MzcsNiArMzcsNyBAQCBzdHJ1Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2UgewogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8geworICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBWZWN0b3I8VD4gaG9yaXpvbnRhbFNuYXBPZmZzZXRz
OwogICAgIFZlY3RvcjxUPiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5oCmluZGV4IGJlOTlkMGVlNmEzZjA3ODlmYzRkN2RjNjkyODg1YjUyNDAwNDM4MDIuLjIxYzMx
MWNkODliNzk0MDg0YTg0OTBkNWZjOWJhNTVhOTNiOWFlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7
CiAKIGNsYXNzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNv
bnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXpl
LCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRp
YWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3Qg
RmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9DUFVNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9DUFVNb25pdG9yLmgKaW5kZXggNzFlNDNkM2YzYjk0NjEwNjA4Y2JmMTFkYjUxMTViY2JlYzA1
NDg5MC4uMDg4ZGY1NDNlMDQ3OTExN2M4MzdhZmUyMjNiYmNjNTUxNDg4YTdmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ1BVTW9uaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NQVU1vbml0b3IuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDUFVNb25pdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB1c2luZyBFeGNlZWRlZENQVUxpbWl0SGFuZGxlciA9IFdURjo6RnVu
Y3Rpb248dm9pZChkb3VibGUpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBDUFVNb25pdG9yKFNlY29u
ZHMgY2hlY2tJbnRlcnZhbCwgRXhjZWVkZWRDUFVMaW1pdEhhbmRsZXImJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZU1vbml0b3IuaAppbmRleCBlNjBmNzcxM2Y2MmJiMjU2MmE4NDI4ODhjN2Zj
NjI5ZjJjNTQ3ZjMzLi42YjI4OGUxZTE3ZTQ0OGJiODZmYjllY2UyOWNjOWU1YmRiOWRkOGRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTW9uaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNb25pdG9yLmgKQEAgLTQyLDYgKzQyLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsZU1vbml0b3IgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgRmlsZUNoYW5nZVR5cGUgeyBN
b2RpZmljYXRpb24sIFJlbW92YWwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb24uaAppbmRleCAyZTVmNjNiY2VmMmJmZGZjZmY5MjE2ZDk4NmIwZjQzNjBjNjgwYjQx
Li5iN2MxZDI0ZWI0OWU1YTU1ZjY5MWYwNmNlOWUxZDgwYjIxYmNjYWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBG
bG9hdFBvaW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKIGNsYXNzIFNjcm9sbEFuaW1hdGlv
biB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
U2Nyb2xsQW5pbWF0aW9uKCkgeyB9OwogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsYmFy
T3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCAvKiBzdGVwICovLCBmbG9hdCAv
KiBtdWx0aXBsaWVyICovKSB7IHJldHVybiB0cnVlOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1N1ZGRlblRlcm1pbmF0aW9uLmgKaW5kZXggNzJiMDA0NTEzMTQyYzhmNGU5NWRmMjI4MThj
M2RkYzE4MGFhZWNlZC4uMGQ3NGIxNmU1OTI1OThhYjgzYjBjOGMwZWI1NGI0NDZkZmQzOGQzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VkZGVuVGVybWluYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCkBAIC00Miw2
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgY2xhc3MgU3VkZGVu
VGVybWluYXRpb25EaXNhYmxlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyKTsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKaW5kZXggMjE3M2RjOTM4M2U0YTMzYzFi
NTkzNDc2NWExZTViMTA3NDZmMDNhMS4uYmJiM2QyYWNkMjJjNTcyYmM5MjNhNDhiMWY3MGFmODU0
YzBjYjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9C
dXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCkBAIC00
MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEFuIEF1ZGlvQnVzIHJlcHJlc2Vu
dHMgYSBjb2xsZWN0aW9uIG9mIG9uZSBvciBtb3JlIEF1ZGlvQ2hhbm5lbHMuCiAvLyBUaGUgZGF0
YSBsYXlvdXQgaXMgInBsYW5hciIgYXMgb3Bwb3NlZCB0byAiaW50ZXJsZWF2ZWQiLgogLy8gQW4g
QXVkaW9CdXMgd2l0aCBvbmUgY2hhbm5lbCBpcyBtb25vLCBhbiBBdWRpb0J1cyB3aXRoIHR3byBj
aGFubmVscyBpcyBzdGVyZW8sIGV0Yy4KLWNsYXNzIEF1ZGlvQnVzIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEF1ZGlvQnVzPiB7CitjbGFzcyBBdWRpb0J1cyBmaW5hbCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0J1cz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEF1ZGlvQnVzKTsKIHB1YmxpYzoKICAgICBlbnVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKaW5kZXggYmJjMTM1N2EzZDUzZjA1NDhmODg3OGU1ODdk
YjdkNmRkMWM0ZmFkOC4uODQ3ZTUyYWE4MjQyNTJkMWJjYmExNzNkZGI1NzdjN2E1YjI5NTNlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKQEAgLTM3
LDcgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBbiBBdWRpb0NoYW5uZWwgcmVw
cmVzZW50cyBhIGJ1ZmZlciBvZiBub24taW50ZXJsZWF2ZWQgZmxvYXRpbmctcG9pbnQgYXVkaW8g
c2FtcGxlcy4KIC8vIFRoZSBQQ00gc2FtcGxlcyBhcmUgbm9ybWFsbHkgYXNzdW1lZCB0byBiZSBp
biBhIG5vbWluYWwgcmFuZ2UgLTEuMCAtPiArMS4wCi1jbGFzcyBBdWRpb0NoYW5uZWwgeworY2xh
c3MgQXVkaW9DaGFubmVsIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb0NoYW5uZWwpOwogcHVibGljOgogICAgIC8vIE1l
bW9yeSBjYW4gYmUgZXh0ZXJuYWxseSByZWZlcmVuY2VkLCBvciBjYW4gYmUgaW50ZXJuYWxseSBh
bGxvY2F0ZWQgd2l0aCBhbiBBdWRpb0Zsb2F0QXJyYXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZJRk8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvRklGTy5oCmluZGV4IDc1YzlhYmQ3NDk0ZDM1ODIyZjgyYWNlN2NjZDBkODU2
ODYxMWQ3ZWEuLjBmNDM4ZGQ3ZDBmYTU5ZmI2NDRkNGRmNTcyZjU1OWZkNjYzMDhiZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRklGTy5oCkBAIC0zMyw3ICszMyw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9GSUZPIHsKK2NsYXNzIEF1ZGlv
RklGTyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
Ly8gQ3JlYXRlIGEgRklGTyBsYXJnZSBlbm91Z2ggdG8gaG9sZCB8Zmlmb0xlbmd0aHwgZnJhbWVz
IG9mIGRhdGEgb2YgfG51bWJlck9mQ2hhbm5lbHN8IGNoYW5uZWxzLgogICAgIEF1ZGlvRklGTyh1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgZmlmb0xlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1B1bGxGSUZPLmgKaW5kZXggYmZiZTk4M2E1NzVh
NDU0YWFjMmIwYzNjYmU0NTc1ZWZhZjZiNzhkNy4uZDc0OGZhNDEzODczNzlkYjM5NWJlYWU2NWY4
ODJiYTI1OGU5ZmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9QdWxsRklGTy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
UHVsbEZJRk8uaApAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyB0aGUg
RklGTyB3aWxsIGFzayB0aGUgcHJvdmlkZXIgZm9yIG1vcmUgZGF0YSB3aGVuIG5lY2Vzc2FyeSB0
byBmdWxmaWxsIGEgcmVxdWVzdC4gQ29udHJhc3QgdGhpcwogLy8gd2l0aCBhICJwdXNoIiBGSUZP
LCB3aGVyZSB0aGUgc2VuZGVyIHB1c2hlcyBkYXRhIHRvIHRoZSBGSUZPIHdoaWNoIHdpbGwgaXRz
ZWxmIHB1c2ggdGhlIGRhdGEgdG8KIC8vIHRoZSByZWNlaXZlciB3aGVuIHRoZSBGSUZPIGlzIGZ1
bGwuCi1jbGFzcyBBdWRpb1B1bGxGSUZPIHsKK2NsYXNzIEF1ZGlvUHVsbEZJRk8gZmluYWwgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhIEZJ
Rk8gdGhhdCBnZXRzIGRhdGEgZnJvbSB8cHJvdmlkZXJ8LiBUaGUgRklGTyB3aWxsIGJlIGxhcmdl
IGVub3VnaCB0byBob2xkCiAgICAgLy8gfGZpZm9MZW5ndGh8IGZyYW1lcyBvZiBkYXRhIG9mIHxu
dW1iZXJPZkNoYW5uZWxzfCBjaGFubmVscy4gVGhlIEF1ZGlvU291cmNlUHJvdmlkZXIgd2lsbCBi
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmgKaW5k
ZXggZDExZmE5M2ViYWFjYmQ4ZTU2Yjk4ZGEzMzc1ZmFlMTQwNjhlM2JjOS4uMjAxNmJhZmY3Yzg4
ZGYxOGFmNWQzNTJjMzAxZjVmZjQzNzY4OWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFRoZSBhdWRpbyBzdHJlYW0gbWF5IGJlIHNpbmdsZSBvciBtdWx0aS1jaGFu
bmVsLgogLy8gVGhlIGRlZmF1bHQgY29uc3RydWN0b3IgZGVmYXVsdHMgdG8gc2luZ2xlLWNoYW5u
ZWwgKG1vbm8pLgogCi1jbGFzcyBBdWRpb1Jlc2FtcGxlciB7CitjbGFzcyBBdWRpb1Jlc2FtcGxl
ciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQXVk
aW9SZXNhbXBsZXIoKTsKICAgICBBdWRpb1Jlc2FtcGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVz
YW1wbGVyS2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2Ft
cGxlcktlcm5lbC5oCmluZGV4IDk5ZDg3N2JiN2NkNjhkYmIwNTM2NzdhMDk3Y2Q0ZTBlYWM4M2I3
ODIuLjhhYzJiYWE0MmM1ODdhMzQ4NWQ1MzQwMjNhZGVlMjRmODgzMjZlZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaApA
QCAtMzQsNyArMzQsOSBAQCBjbGFzcyBBdWRpb1Jlc2FtcGxlcjsKIC8vIEF1ZGlvUmVzYW1wbGVy
S2VybmVsIGRvZXMgcmVzYW1wbGluZyBvbiBhIHNpbmdsZSBtb25vIGNoYW5uZWwuCiAvLyBJdCB1
c2VzIGEgc2ltcGxlIGxpbmVhciBpbnRlcnBvbGF0aW9uIGZvciBnb29kIHBlcmZvcm1hbmNlLgog
Ci1jbGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5lbCB7CitjbGFzcyBBdWRpb1Jlc2FtcGxlcktlcm5l
bCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQXVkaW9SZXNhbXBsZXJLZXJuZWwpOwogcHVibGljOgogICAgIEF1ZGlvUmVzYW1w
bGVyS2VybmVsKEF1ZGlvUmVzYW1wbGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IDVjMWJmMmEzMTczNDJlYTNlNTI5MmE3OTdl
OGU2NmUxYThkYTM5N2MuLmI1ZmI1ODA2NDhmOWNmOGVjNGYxODZmYWZhNDhlMTNmZGNmMmY1N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApA
QCAtNTAsNiArNTAsNyBAQCBib29sIEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBh
Y3RpdmUpCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBjbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIH07CiAKIEF1ZGlvU2Vzc2lvbjo6QXVk
aW9TZXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmgKaW5kZXggMTdkYTgxYjNiNzVkN2E1YWFiODIxNDg2YjdjMWUzM2YxYThkZjQ2OS4uZTcwMDgy
MmZmMWZlZWJkNzgyOWFlYzc1MGNjZTQwYTYwYjkyNTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTQ0LDcgKzQ0LDggQEAgZW51bSBjbGFz
cyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90IHsKICAgICBMb25nRm9ybVZpZGVvCiB9Owog
Ci1jbGFzcyBBdWRpb1Nlc3Npb24geworY2xhc3MgQXVkaW9TZXNzaW9uIGZpbmFsIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb1Nl
c3Npb24pOwogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1Nlc3Npb24m
IHNoYXJlZFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0JpcXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKaW5k
ZXggYmI3MjFhMjNhN2ZjYzc3NGI2MDkzZTRlYTkwOGM2MGU4OTA4MTA3Yy4uNzEzNDk0YzkxNGQz
Mzc4NjQzZTI5YTgwYmMzOWU3NzM2NmRmMTgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQmlxdWFkLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gICAg
bG93cGFzcywgaGlnaHBhc3MsIHNoZWx2aW5nLCBwYXJhbWV0ZXJpYywgbm90Y2gsIGFsbHBhc3Ms
IC4uLgogCiBjbGFzcyBCaXF1YWQgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOiAgIAogICAgIEJpcXVhZCgpOwogICAgIH5CaXF1YWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0NvbmUuaAppbmRleCBkODFjMDVkYzY4ZTZlMmZhMjFkMjQ1ZGQxMzdiNGYx
NzhhMjEyMGI0Li5hN2FjYTNhNGM1NGQyNzRiM2FhM2Q0MGFkOWQxNDNlYmRmYzQ1ZmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gQ29uZSBnYWluIGlzIGRlZmluZWQgYWNjb3JkaW5nIHRvIHRoZSBP
cGVuQUwgc3BlY2lmaWNhdGlvbgogCi1jbGFzcyBDb25lRWZmZWN0IHsKK2NsYXNzIENvbmVFZmZl
Y3QgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENv
bmVFZmZlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RGVub3JtYWxEaXNhYmxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGVub3Jt
YWxEaXNhYmxlci5oCmluZGV4IDZlOWY0ZTAxZGFlNmQ0NWQwMjExMWQ1ZDViMTI4ZWYzODg2YjIy
NDIuLmUwYjNlZmQ4MGY3OGZmYWEzMDY1NzMzMjMxNDcwMmRjNzNhMmYwMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rlbm9ybWFsRGlzYWJsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EZW5vcm1hbERpc2FibGVyLmgKQEAgLTQxLDcg
KzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0RFTk9S
TUFMCi1jbGFzcyBEZW5vcm1hbERpc2FibGVyIHsKK2NsYXNzIERlbm9ybWFsRGlzYWJsZXIgZmlu
YWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlbm9ybWFs
RGlzYWJsZXIoKQogICAgICAgICAgICAgOiBtX3NhdmVkQ1NSKDApCkBAIC0xMDMsNyArMTA0LDgg
QEAgY2xhc3MgRGVub3JtYWxEaXNhYmxlciB7CiAKICNlbHNlCiAvLyBGSVhNRTogYWRkIGltcGxl
bWVudGF0aW9ucyBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcyBhbmQgY29tcGlsZXJzCi1jbGFzcyBE
ZW5vcm1hbERpc2FibGVyIHsKK2NsYXNzIERlbm9ybWFsRGlzYWJsZXIgZmluYWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERlbm9ybWFsRGlzYWJsZXIoKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29u
dm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIu
aAppbmRleCA2ZjJmYWY0MGU2MWJmNmUzMmE0ZjQ5OTk3NjVjOWUxYmI1MTk0MWE4Li41YzhkODY2
YzE2NTVjYzM5MWE4MjVkM2IyMzc4OGJmNDBjNzg5YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuaApAQCAtMzAsMTAgKzMwLDEzIEBACiAj
ZGVmaW5lIERpcmVjdENvbnZvbHZlcl9oCiAKICNpbmNsdWRlICJBdWRpb0FycmF5LmgiCisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
RGlyZWN0Q29udm9sdmVyIHsKK2NsYXNzIERpcmVjdENvbnZvbHZlciBmaW5hbCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGlyZWN0Q29u
dm9sdmVyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEaXJlY3RDb252b2x2ZXIoc2l6ZV90IGlu
cHV0QmxvY2tTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRGlzdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmgK
aW5kZXggOTFkMzQ5Yjk3ZTYyNzczMzJkNzYzMWE4ODQ0MjZiMTY2OGRjZjI4My4uYjNlYjc3OTcz
Y2ZhNDc5NWYxNTA1MzY5YjdlNGIyZjg5ZmZiNmM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EaXN0YW5jZS5oCkBAIC00MCw3ICs0MCw4IEBAIGVudW0gY2xhc3MgRGlzdGFuY2VN
b2RlbFR5cGUgewogICAgIEV4cG9uZW50aWFsCiB9OwogCi1jbGFzcyBEaXN0YW5jZUVmZmVjdCB7
CitjbGFzcyBEaXN0YW5jZUVmZmVjdCBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgRGlzdGFuY2VFZmZlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0Rvd25TYW1wbGVyLmgKaW5kZXggZjRiNDIwMTdlZTc2MjdjYWQ2NTZiZmY0
NTdhYWU5ODk0ODAxNGJmMi4uOTU3MGI4OTFjOTdmZmE5MTFhMDExMzQwMDNiNGZkY2I1Zjc2Zjky
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRG93blNhbXBsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Eb3duU2FtcGxlci5oCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRG93blNhbXBsZXIgZG93bi1z
YW1wbGVzIHRoZSBzb3VyY2Ugc3RyZWFtIGJ5IGEgZmFjdG9yIG9mIDJ4LgogCi1jbGFzcyBEb3du
U2FtcGxlciB7CitjbGFzcyBEb3duU2FtcGxlciBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRG93blNhbXBsZXIoc2l6ZV90IGlucHV0
QmxvY2tTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmgKaW5kZXggZWY4YzA5M2ExYjk2NTMyMjlkNzk5ZjFhNmIyOTJhZmFkYmRh
YmFkMS4uODIyYzkzMWYzOGNlMGVjOGRjNjI4MmYwZjhjMzQzYWY2NzdmOTg0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAg
LTQzLDggKzQzLDkgQEAgY2xhc3MgQXVkaW9CdXM7CiAvLyBvZiB0aGUgbG91ZGVzdCBwYXJ0cyBv
ZiB0aGUgc2lnbmFsIGFuZCByYWlzZXMgdGhlIHZvbHVtZSBvZiB0aGUgc29mdGVzdCBwYXJ0cywK
IC8vIG1ha2luZyB0aGUgc291bmQgcmljaGVyLCBmdWxsZXIsIGFuZCBtb3JlIGNvbnRyb2xsZWQu
CiAKLWNsYXNzIER5bmFtaWNzQ29tcHJlc3NvciB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3Ig
ZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKER5bmFtaWNzQ29tcHJlc3Nvcik7CiBwdWJsaWM6CiAgICAgZW51bSB7CiAgICAgICAg
IFBhcmFtVGhyZXNob2xkLApAQCAtOTUsOSArOTYsMTAgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVz
c29yIHsKICAgICBmbG9hdCBtX2xhc3RBbmNob3I7CiAgICAgZmxvYXQgbV9sYXN0RmlsdGVyU3Rh
Z2VHYWluOwogCi0gICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgIHN0cnVjdCBaZXJvUG9sZUZpbHRl
clBhY2s0IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBaZXJvUG9sZSBmaWx0ZXJzWzRdOwotICAgIH0gWmVyb1BvbGVGaWx0ZXJQYWNrNDsKKyAgICB9
OwogCiAgICAgLy8gUGVyLWNoYW5uZWwgZW1waGFzaXMgZmlsdGVycy4KICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFplcm9Qb2xlRmlsdGVyUGFjazQ+PiBtX3ByZUZpbHRlclBhY2tzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
S2VybmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3JLZXJuZWwuaAppbmRleCBiN2JjZWEyZmFmZDg5OTZjYTUyOGIwYjVkYWI0OWNiODg5NThkY2M0
Li5lMTFmNDdiYWFmMGJjNmM1ZDBjYTdlM2Q3MjAwODI2MzlkMjcwYzAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJu
ZWwuaApAQCAtMzUsNyArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIER5
bmFtaWNzQ29tcHJlc3Nvcktlcm5lbCB7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwg
ZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbChmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRXF1YWxQb3dlclBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RXF1YWxQb3dlclBhbm5lci5oCmluZGV4IDhjZjU5OTE3OTVmM2YxZjYzZTI4MWQ5ZTE2YWNhZjNk
N2E1N2E1ZGEuLjRlNDYzYjEyODFhN2ZhM2JiMzk3YTZiMDY1Y2UwMzNjY2JmOWFkMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBDb21tb24gdHlwZSBvZiBz
dGVyZW8gcGFubmVyIGFzIGZvdW5kIGluIG5vcm1hbCBhdWRpbyBtaXhpbmcgZXF1aXBtZW50Lgog
Ci1jbGFzcyBFcXVhbFBvd2VyUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBFcXVhbFBv
d2VyUGFubmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
RXF1YWxQb3dlclBhbm5lcihmbG9hdCBzYW1wbGVSYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaAppbmRleCA0NTQyYjZmYjI1Nzg1NDk1YWIyMDZh
YmMzYzkwYzc1YmMyZjE2ZWEwLi4zODYyMjdmMTk3MDRhZmQ3OTJlMzY2MjJiZGRhOWMxYWNlYTc1
MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaApA
QCAtMzQsNyArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZGVENvbnZv
bHZlciB7CitjbGFzcyBGRlRDb252b2x2ZXIgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZGVENvbnZvbHZlcik7CiBwdWJsaWM6
CiAgICAgLy8gZmZ0U2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvCiAgICAgRkZUQ29udm9sdmVy
KHNpemVfdCBmZnRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlLmgKaW5kZXggNzU3YmNmYTRiNmFlZmQ3MGViYWU4NjU0ODcyNWZhNDA2MjljNmU5ZS4u
YTUxOTM0OTgxNTA0NTI2ZDZmYzY0ZDQ1Yjk3OTBiMzc4MTAzYTQ1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIUlRGS2VybmVsOwogCi1jbGFzcyBIUlRGRGF0YWJh
c2UgeworY2xhc3MgSFJURkRhdGFiYXNlIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIUlRGRGF0YWJhc2UpOwogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oCmluZGV4IDJh
OTU5MDQ1NTIxODQzYTE1MTYyZWNjOGUzMjExNzM5ZTA3MDUzZjcuLmVmNzUyYzNjMDFiZTM5ZWNk
YjdlZjY0ZGY0MzkwOTI2NmQ2ZWQ5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRWxldmF0aW9uLmgKQEAgLTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAvLyBIUlRGRWxldmF0aW9uIGNvbnRhaW5zIGFsbCBvZiB0aGUgSFJURktlcm5lbHMgKG9u
ZSBsZWZ0IGVhciBhbmQgb25lIHJpZ2h0IGVhciBwZXIgYXppbXV0aCBhbmdsZSkgZm9yIGEgcGFy
dGljdWxhciBlbGV2YXRpb24uCiAKLWNsYXNzIEhSVEZFbGV2YXRpb24geworY2xhc3MgSFJURkVs
ZXZhdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSFJURkVsZXZhdGlvbik7CiBwdWJsaWM6CiAgICAgSFJURkVsZXZhdGlv
bihzdGQ6OnVuaXF1ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RMLCBzdGQ6OnVuaXF1
ZV9wdHI8SFJURktlcm5lbExpc3Q+IGtlcm5lbExpc3RSLCBpbnQgZWxldmF0aW9uLCBmbG9hdCBz
YW1wbGVSYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RlBhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCmlu
ZGV4IGJmNWVlZmFhNWU0YzZkMmJmMTdhOTkwMDMwNzQxNjVjNmU0MzNhZDcuLmNhYWE0NDFmMWQx
NGVhMzZmNWU5NjhhZDhhNzdkMGI3YTYwZGQ5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGUGFubmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBIUlRGUGFubmVyIDogcHVibGljIFBhbm5lciB7CitjbGFzcyBIUlRGUGFu
bmVyIGZpbmFsIDogcHVibGljIFBhbm5lciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSFJURlBh
bm5lcihmbG9hdCBzYW1wbGVSYXRlLCBIUlRGRGF0YWJhc2VMb2FkZXIqKTsKICAgICB2aXJ0dWFs
IH5IUlRGUGFubmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L011bHRpQ2hhbm5lbFJlc2FtcGxlci5oCmluZGV4IDQ0MTc1NDc2MDU4M2QyODAzNGE0NWIzYmQ4
YTYxODhkNDY1YTJmMzYuLjYxNDZlOTI1YzA2YTJkZGE3NmNiNDEyZjBjYzFlMGEyNDZhYzgwZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJl
c2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5l
bFJlc2FtcGxlci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQXVkaW9CdXM7CiAgICAgCi1jbGFzcyBNdWx0aUNoYW5uZWxSZXNhbXBsZXIgeworY2xhc3Mg
TXVsdGlDaGFubmVsUmVzYW1wbGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzogICAKICAgICBleHBsaWNpdCBNdWx0aUNoYW5uZWxSZXNhbXBsZXIoZG91Ymxl
IHNjYWxlRmFjdG9yLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybUF1ZGlvRGF0YS5oCmluZGV4IGNkYTcyZThh
YjNjNGNkYzBhODY4ZmFhYzRmMDVjZTYxYzQ0NDAyZDAuLjQ2MzVhNjczM2VjYzNmM2EwNzUwMmZj
N2E3NTAxNzNlMzNlMTFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtQXVkaW9EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1BdWRpb0RhdGEuaApAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1BdWRpb0RhdGEoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgKaW5kZXggM2UyNTc2YjM1
NzU3ZGJhMjQ3MGM4ZWI3ZGEzYzE3YmVlYmJmZGNlZC4uMjM0ZTMxZGFlYmJkNGRkYWEzNmExZTkw
NTMxMWViOTkyMmZhYTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmgK
QEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9CdXM7CiAgICAgCiAvLyBNdWx0aS1jaGFubmVs
IGNvbnZvbHV0aW9uIHJldmVyYiB3aXRoIGNoYW5uZWwgbWF0cml4aW5nIC0gb25lIG9yIG1vcmUg
UmV2ZXJiQ29udm9sdmVyIG9iamVjdHMgYXJlIHVzZWQgaW50ZXJuYWxseS4KIAotY2xhc3MgUmV2
ZXJiIHsKK2NsYXNzIFJldmVyYiBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgZW51bSB7IE1heEZyYW1lU2l6ZSA9IDI1NiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIu
aAppbmRleCA1MTJiNmFkZTM0MWEyODU2OTcyZWUzZjdiY2IyMTE2NmJiNzIxYTFmLi5hNjI4MzVm
OWMwZDdkNzQzYzllOTI3Y2VkZTJkNmExZGE0NTU4NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaApAQCAt
MzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBSZXZlcmJBY2N1bXVsYXRpb25C
dWZmZXIgaXMgYSBjaXJjdWxhciBkZWxheSBidWZmZXIgd2l0aCBvbmUgY2xpZW50IHJlYWRpbmcg
ZnJvbSBpdCBhbmQgbXVsdGlwbGUgY2xpZW50cwogLy8gd3JpdGluZy9hY2N1bXVsYXRpbmcgdG8g
aXQgYXQgZGlmZmVyZW50IGRlbGF5IG9mZnNldHMgZnJvbSB0aGUgcmVhZCBwb3NpdGlvbi4gIFRo
ZSByZWFkIG9wZXJhdGlvbiB3aWxsIHplcm8gdGhlIG1lbW9yeQogLy8ganVzdCByZWFkIGZyb20g
dGhlIGJ1ZmZlciwgc28gaXQgd2lsbCBiZSByZWFkeSBmb3IgYWNjdW11bGF0aW9uIHRoZSBuZXh0
IHRpbWUgYXJvdW5kLgotY2xhc3MgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyIHsKK2NsYXNzIFJl
dmVyYkFjY3VtdWxhdGlvbkJ1ZmZlciBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyKHNpemVf
dCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5oCmluZGV4IDViODE5ZTFhM2U2ZjRmYjFmOGRiMGM1OTY5NzI2MmFhYzA5YzZiZGUu
LjMyMDBiNDVlYThkZjdjMjFjZTZmYTM3ZTA4YmIyNzkxZjhhZTVmNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCkBAIC00Myw4ICs0Myw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9DaGFubmVsOwogCi1jbGFzcyBS
ZXZlcmJDb252b2x2ZXIgeworY2xhc3MgUmV2ZXJiQ29udm9sdmVyIGZpbmFsIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXZlcmJDb252
b2x2ZXIpOwogcHVibGljOgogICAgIC8vIG1heEZGVFNpemUgY2FuIGJlIGFkanVzdGVkIChmcm9t
IHNheSAyMDQ4IHRvIDMyNzY4KSBkZXBlbmRpbmcgb24gaG93IG11Y2ggcHJlY2lzaW9uIGlzIG5l
Y2Vzc2FyeS4KICAgICAvLyBGb3IgY2VydGFpbiB0d2Vha3kgZGUtY29udm9sdmluZyBhcHBsaWNh
dGlvbnMgdGhlIHBoYXNlIGVycm9ycyBhZGQgdXAgcXVpY2tseSBhbmQgbGVhZCB0byBub24tc2Vu
c2ljYWwgcmVzdWx0cyB3aXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaAppbmRleCBhMDQ5MDk3MDM0MGFiM2IzMzYwMGIwODll
NTk4NDc0ZmIzZDQ1NWU2Li4zYzAzYmUzNDFiM2I3ZDY0NjIxZGM4MDM4MTY2OTM2MGY0ZGI0Yzlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgRGlyZWN0Q29udm9sdmVyOwogICAg
IAogLy8gQSBSZXZlcmJDb252b2x2ZXJTdGFnZSByZXByZXNlbnRzIHRoZSBjb252b2x1dGlvbiBh
c3NvY2lhdGVkIHdpdGggYSBzdWItc2VjdGlvbiBvZiBhIGxhcmdlIGltcHVsc2UgcmVzcG9uc2Uu
CiAvLyBJdCBpbmNvcnBvcmF0ZXMgYSBkZWxheSBsaW5lIHRvIGFjY291bnQgZm9yIHRoZSBvZmZz
ZXQgb2YgdGhlIHN1Yi1zZWN0aW9uIHdpdGhpbiB0aGUgbGFyZ2VyIGltcHVsc2UgcmVzcG9uc2Uu
Ci1jbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFnZSB7CitjbGFzcyBSZXZlcmJDb252b2x2ZXJTdGFn
ZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8g
cmVuZGVyUGhhc2UgaXMgdXNlZnVsIHRvIGtub3cgc28gdGhhdCB3ZSBjYW4gbWFuaXB1bGF0ZSB0
aGUgcHJlIHZlcnN1cyBwb3N0IGRlbGF5IHNvIHRoYXQgc3RhZ2VzIHdpbGwgcGVyZm9ybQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmgKaW5k
ZXggYmIwNmU0ZWVkNjMzZjBlN2M2ODJlMjBlNGU2YTU3MmFhMWZhYTk2Ni4uYWY5ZWQwMGQ3MzNl
ODQyYjZlZDNhNjQ3NDg1NDIwZDNjNzY3NzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oCkBAIC0zNCw3ICszNCw4IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIC8vIFJldmVyYklucHV0QnVmZmVyIGlzIHVzZWQgdG8gYnVmZmVy
IGlucHV0IHNhbXBsZXMgZm9yIGRlZmVycmVkIHByb2Nlc3NpbmcgYnkgdGhlIGJhY2tncm91bmQg
dGhyZWFkcy4KLWNsYXNzIFJldmVyYklucHV0QnVmZmVyIHsKK2NsYXNzIFJldmVyYklucHV0QnVm
ZmVyIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBSZXZlcmJJbnB1dEJ1ZmZlcihzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5oCmluZGV4IDJmY2Q4OWY3ZWNhMzc1
ODU4NjMxYTliMjc2NWExMGQyMDFiMzQxYzcuLmMxMzJmNWQ5NzYyYzc1NjZiMjMyNWMwNjRiMjhk
ZThiNmUzOTAxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Np
bmNSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVz
YW1wbGVyLmgKQEAgLTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBTaW5j
UmVzYW1wbGVyIGlzIGEgaGlnaC1xdWFsaXR5IHNhbXBsZS1yYXRlIGNvbnZlcnRlci4KIAotY2xh
c3MgU2luY1Jlc2FtcGxlciB7CitjbGFzcyBTaW5jUmVzYW1wbGVyIGZpbmFsIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAKICAgICAvLyBzY2FsZUZhY3RvciA9PSBz
b3VyY2VTYW1wbGVSYXRlIC8gZGVzdGluYXRpb25TYW1wbGVSYXRlCiAgICAgLy8ga2VybmVsU2l6
ZSBjYW4gYmUgYWRqdXN0ZWQgZm9yIHF1YWxpdHkgKGhpZ2hlciBpcyBiZXR0ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9VcFNhbXBsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCmluZGV4IDI2NmJjYWY5ODBkNzI2ZmEy
ZjYzN2NmZTkzYTVkNGMzOGIyNGVlMDYuLjY3NWVlNGFkMGM0NDY3Y2QxZGQ2ZDFkNTE2MTFlNzdi
OThjNGM2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2Ft
cGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1VwU2FtcGxlci5oCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVXBTYW1wbGVyIHVwLXNh
bXBsZXMgdGhlIHNvdXJjZSBzdHJlYW0gYnkgYSBmYWN0b3Igb2YgMnguCiAKLWNsYXNzIFVwU2Ft
cGxlciB7CitjbGFzcyBVcFNhbXBsZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVwU2FtcGxlcihzaXplX3QgaW5wdXRCbG9ja1Np
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmgKaW5kZXggODMxZGU5
MDkzYjAwNTYxNmI0YmQ3N2VhN2IwNzc4YzM3ZGFhN2I2ZS4uMDJmZmFjZDVlYWNhN2NlMjc1ODky
YmU4ZDY0Mzk0YzczM2RjN2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vWmVyb1BvbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJv
UG9sZS5oCkBAIC0zMyw3ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gWmVyb1Bv
bGUgaXMgYSBzaW1wbGUgZmlsdGVyIHdpdGggb25lIHplcm8gYW5kIG9uZSBwb2xlLgogCi1jbGFz
cyBaZXJvUG9sZSB7CitjbGFzcyBaZXJvUG9sZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgWmVyb1BvbGUoKQogICAgICAgICA6IG1femVybygwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvV2ViQXVkaW9C
dWZmZXJMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRp
b0J1ZmZlckxpc3QuaAppbmRleCA4NmI2NWEyMjUzYWYxYWViMmExY2E5Y2FhMzY2Nzg2Y2Q3ZDY1
NTIwLi44YTdlN2EwM2FjMzNhNGU1NWM0M2MzMWFlYzYzN2IxODljYjFjN2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZlckxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9XZWJBdWRpb0J1ZmZl
ckxpc3QuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIAotY2xhc3MgV2ViQXVkaW9CdWZmZXJMaXN0IDogcHVi
bGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKK2NsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdCBmaW5hbCA6
IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7CiBwdWJsaWM6CiAgICAgV2ViQXVkaW9CdWZmZXJM
aXN0KGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IFdlYkF1ZGlvQnVmZmVyTGlzdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCB1aW50
MzJfdCBzYW1wbGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQppbmRleCBkYzZjOGJjY2UzNjlkMDZhZWRjOGZkMzMz
YzczOGMwYmU5NTc1ZGQ0Li40ZTJhODg4OTRhZmJjYmEyMThjZjllNjczODc1NjlmMzJmOWNkNTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNz
aW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nl
c3Npb25JT1MubW0KQEAgLTU5LDYgKzU5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNhdGVnb3J5
TmFtZShBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSkKICNlbmRpZgogCiBjbGFz
cyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiopOwogICAgIEF1ZGlv
U2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnlPdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9DQVJpbmdCdWZmZXIuaAppbmRleCAxOGEyNmFiNmRj
NWM4ZGQwMTI1MmRiMDY0NmQ0ZjViOWI0N2I2ZmY1Li4wNGFjZWZjOGRhYWQ3MTMyOGE0ZGRmYWJi
ZDA0YWY5ZWNkOGViOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQ0FSaW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0NBUmluZ0J1ZmZlci5oCkBAIC0zOSw2ICszOSw3IEBAIHR5cGVkZWYgc3RydWN0IEF1ZGlv
QnVmZmVyTGlzdCBBdWRpb0J1ZmZlckxpc3Q7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENBUmluZ0J1ZmZlclN0b3JhZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfkNBUmluZ0J1ZmZlclN0b3JhZ2UoKSA9IGRlZmF1bHQ7CiAgICAg
dmlydHVhbCB2b2lkIGFsbG9jYXRlKHNpemVfdCkgPSAwOwpAQCAtNDYsNyArNDcsNyBAQCBjbGFz
cyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKICAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKSA9IDA7CiB9
OwogCi1jbGFzcyBDQVJpbmdCdWZmZXJTdG9yYWdlVmVjdG9yIDogcHVibGljIENBUmluZ0J1ZmZl
clN0b3JhZ2UgeworY2xhc3MgQ0FSaW5nQnVmZmVyU3RvcmFnZVZlY3RvciBmaW5hbCA6IHB1Ymxp
YyBDQVJpbmdCdWZmZXJTdG9yYWdlIHsKIHB1YmxpYzoKICAgICB+Q0FSaW5nQnVmZmVyU3RvcmFn
ZVZlY3RvcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggZDQ3
MzA0Yzk1YjI2ZWYyMDRmNWRhNGFkY2JiOGEwODY0ZGUxOGJiMy4uMGI5MTA2NDljYTRhNDdhOTE1
ZDU0OGM5ZDk0YWZmZjMzNTM1OTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC00
MCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUZhY3RvcnlDbGVh
cktleSBmaW5hbCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ0RNRmFjdG9yeUNsZWFyS2V5JiBzaW5nbGV0b24o
KTsKIApAQCAtNTQsNiArNTUsNyBAQCBjbGFzcyBDRE1GYWN0b3J5Q2xlYXJLZXkgZmluYWwgOiBw
dWJsaWMgQ0RNRmFjdG9yeSB7CiB9OwogCiBjbGFzcyBDRE1Qcml2YXRlQ2xlYXJLZXkgZmluYWwg
OiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQ0RNUHJpdmF0ZUNsZWFyS2V5KCk7CiAgICAgdmlydHVhbCB+Q0RNUHJpdmF0ZUNs
ZWFyS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21h
Yy9ISURHYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkLmgKaW5kZXggMTVmMDRjNzA4ZTkwMDdiYjRkYWRlZTU0MzVjMzU3ZjAyZjUzMWM5My4u
YTI1MjM0ZmI4NzVhNzUxYzYzYzM3YmE2YTVjZWU3ZDQ1MzRkNWE5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWQuaApAQCAtMzYsNiArMzYs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgSElER2FtZXBhZEVsZW1lbnQgewor
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBISURHYW1lcGFkRWxlbWVu
dChkb3VibGUgdGhlTWluLCBkb3VibGUgdGhlTWF4LCBJT0hJREVsZW1lbnRSZWYgZWxlbWVudCkK
ICAgICAgICAgOiBtaW4odGhlTWluKQogICAgICAgICAsIG1heCh0aGVNYXgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKaW5kZXggNzIwNDUzZDlmMDQ2
ZDc5ZjQ4YTA5YjgxYWY3MDAwZjRkZTNiZTAyNS4uY2VmZDhkNDIyNDRkMDZmY2I4MjRiZTVlM2I3
MzQxOWNkNDk4YTRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UG9pbnQuaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNp
emU7CiAKIGNsYXNzIEZsb2F0UG9pbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIEZsb2F0UG9pbnQoKSB7IH0KICAgICBGbG9hdFBvaW50KGZsb2F0IHgsIGZs
b2F0IHkpIDogbV94KHgpLCBtX3koeSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKaW5kZXggNTUyN2U3NDk1MDk2MTUwZWEzMzdjMjE1YzYzYzhkNjZiYjJlZGE3ZS4u
NmU4NGU2YTdkOThiOGNjYzMzY2JmM2M4MTc3N2JlM2VmZTJjN2ZhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMjY0LDkgKzI2NCw3IEBAIGNsYXNzIEZvbnQg
OiBwdWJsaWMgUmVmQ291bnRlZDxGb250PiB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBEZXJpdmVk
Rm9udHMgewotI2lmICFDT01QSUxFUihNU1ZDKQotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLSNlbmRpZgorICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgcHVibGljOgogCiAgICAgICAgIFJlZlB0cjxGb250PiBzbWFsbENhcHNGb250OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCA0MDhjZmI3ZDFlMmRiOThmN2FkYzgzYmJjMzNiODFiOWFmMTIxYjBjLi40NDdkN2UzZTM1NDc2
MmU4MGI4ZjI3YTk1MjYyMzIyNzliNWY5MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNTU3LDYgKzU1Nyw3IEBAIGNs
YXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgYm9vbCBzaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dz
KCkgY29uc3Q7CiAKICAgICBjbGFzcyBXaW5kb3dzQml0bWFwIHsKKyAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbmRvd3NCaXRt
YXApOwogICAgIHB1YmxpYzoKICAgICAgICAgV2luZG93c0JpdG1hcChIREMsIGNvbnN0IEludFNp
emUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggMWI0MjI4NmRkZjQ2NWMwZTJiMTI0ZDhh
ZmRmMGY3Y2Q2NDc3Y2JiNy4uZTMzZjhmYmU3Mzg5MmUzNGI4ZGVmODM2ZDQ2ZjVjNzBjNzljNjFk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQml0bWFwVGV4dHVyZUdMOwogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCosIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSk7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5oCmluZGV4IDBiYWQ0ZTcwNjM0MjE5OTg2ODk0NDkyZGZlNmY2MWQzMTc4ODE5ZDMuLmI4
NzMxOTRlZTI0NjAxZmU0ZTA3MTQ3YWE3MWVhMzA1ODdhODRhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAg
LTMwLDYgKzMwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoR3JhcGhpY3NDb250ZXh0SW1wbCk7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250
ZXh0SW1wbChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOTRhYWMxZGY4MzU2YmRiMTBkZjdkMDg2
ZmFjZTI2YzFlMzcxODMyNi4uYWFlM2EzMGIxMTZlZGRlMjQ1OTVhZDhmYmMxZmNlNzQ1NjUwMGE1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXI6OnN1cHBvcnRz
Q29udGVudHNUaWxpbmcoKQogI2VuZGlmCiAKIC8vIFNpbmdsZXRvbiBjbGllbnQgdXNlZCBmb3Ig
bGF5ZXJzIG9uIHdoaWNoIGNsZWFyQ2xpZW50IGhhcyBiZWVuIGNhbGxlZC4KLWNsYXNzIEVtcHR5
R3JhcGhpY3NMYXllckNsaWVudCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKK2NsYXNz
IEVtcHR5R3JhcGhpY3NMYXllckNsaWVudCBmaW5hbCA6IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xp
ZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMg
RW1wdHlHcmFwaGljc0xheWVyQ2xpZW50JiBzaW5nbGV0b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAppbmRleCBiZTc2NzYw
ZjhlMzU2NWQ0MjY3MmIwMDVhOTZkY2RiN2ZhNGIyZDY5Li4yNWU3OWE2ZGMwYTViMjE5M2E3MmEy
MjdhYWNhMTc3M2E3ZTNjMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIExlZ2FjeUNETVNlc3Npb25DbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNlc3Npb25D
bGllbnQoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJy
YXkqLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggNzk2MzNmZGI2YWRmMzRmZmZlZThmODI2NzQ4M2I4Y2Zm
NWNlMWYzYy4uNDBmOTZiZmFmYjBkYjAzNWRhNjlkNTk2YzAxNTJjMWNiYWYxNzhjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKQEAgLTkxLDYgKzkxLDcgQEAg
Y2xhc3MgUmVnaW9uIHsKICAgICB9OwogCiAgICAgY2xhc3MgU2hhcGUgeworICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFNoYXBlKCkgPSBkZWZh
dWx0OwogICAgICAgICBTaGFwZShjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WZWxvY2l0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9jaXR5RGF0YS5oCmluZGV4IDdhZWI3NTliMzRiMThhMWU4
NDY4M2YyOWM2MTZhNmNkYjAyNTc0ZDguLjZhMDZjYzZlYmEzNGI5NTlkMmYxODYwMjI5ZTFmMmYz
OGZmMzE5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Zl
bG9jaXR5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZlbG9j
aXR5RGF0YS5oCkBAIC02NSw2ICs2NSw3IEBAIHN0cnVjdCBWZWxvY2l0eURhdGEgIHsKIFdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IFZlbG9j
aXR5RGF0YSYpOwogCiBjbGFzcyBIaXN0b3JpY2FsVmVsb2NpdHlEYXRhIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIaXN0b3JpY2FsVmVsb2NpdHlEYXRhKCkg
PSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0FWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGwuaAppbmRleCBhOWVjZDMyMTM2ZGE4NzcwMmY0NzhhZmNkOGFjYzhlYjk3YzIzOTQwLi45OWRk
ZGQ4Zjg1MDI3MzAzYmI4YTc2M2VjYWMyYjg2OTg4MmZhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9BVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDOwogCiBjbGFz
cyBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsKEFWUGxh
eWVySXRlbVRyYWNrKik7CiAgICAgZXhwbGljaXQgQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbChB
VkFzc2V0VHJhY2sqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5k
ZXggODkxOGU4MGUwYzM5MGQ3ZThkYWNhMTkwMzk0NzlhMGQwZjY5NWFkOC4uNTM4Njk2OWY5NDk3
NmYzODM2ODAxODc0MWJhZmQxMjU1MWUyOGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3Ry
dWN0IEZvdXJDQzsKIAogY2xhc3MgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nIGZpbmFsIDog
cHVibGljIENETUZhY3RvcnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmcmIHNpbmdsZXRvbigpOwog
CkBAIC00OSw2ICs1MCw3IEBAIGNsYXNzIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZyBmaW5h
bCA6IHB1YmxpYyBDRE1GYWN0b3J5IHsKIH07CiAKIGNsYXNzIENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZyBmaW5hbCA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKICAg
ICB2aXJ0dWFsIH5DRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDRhNTBlYjQxYTU4
MzY4M2Y2NmE2NzYyMjk1NDZjNTgwMWIyMGI1ODguLmQ4MWJjYTM1NDkwMzkxOGExYmRhMGFkZGQ5
NThkNTk0M2Y3MDFiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBMZWdhY3lDRE07CiBjbGFz
cyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOwogCiBjbGFzcyBDRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDIDogcHVibGljIENETVByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMoTGVnYWN5Q0RNKiBjZG0pCiAgICAgICAgIDogbV9jZG0oY2RtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lTT0Zh
aXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0lTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveC5oCmluZGV4IGU0NjAx
NDgzMDVjZWVkMWI1NjQ4NDE5OTZjYjlmYzM0Y2RjM2FiNTIuLjE0N2MzNzlmMTI3MDY4MmU1NWZk
MjE1Y2UyM2EzOWVhMTI0OTVhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSVNPRmFpclBs
YXlTdHJlYW1pbmdQc3NoQm94LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0luZm9Cb3gg
OiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0
cmVhbWluZ0luZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJmcHNpIjsgfQogCkBAIC00Miw3
ICs0Miw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nSW5mb0Jv
eCA6IHB1YmxpYyBJU09GdWxsQm94IHsKICAgICBGb3VyQ0MgbV9zY2hlbWU7CiB9OwogCi1jbGFz
cyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RJbmZvQm94IDog
cHVibGljIElTT0Z1bGxCb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJl
YW1pbmdLZXlSZXF1ZXN0SW5mb0JveCBmaW5hbCA6IHB1YmxpYyBJU09GdWxsQm94IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrcmkiOyB9CiAK
QEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXF1ZXN0SW5mb0JveCA6IHB1YmxpYyBJU09GdWxsQm94IHsKICAgICBLZXlJRCBtX2tl
eUlEOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlB
c3NldElkQm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWly
UGxheVN0cmVhbWluZ0tleUFzc2V0SWRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZrYWkiOyB9CiAg
ICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0K
QEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1p
bmdLZXlBc3NldElkQm94IDogcHVibGljIElTT0JveCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1f
ZGF0YTsKIH07CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFtaW5nS2V5
Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFp
clBsYXlTdHJlYW1pbmdLZXlDb250ZXh0Qm94IGZpbmFsIDogcHVibGljIElTT0JveCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJma2N4IjsgfQog
ICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQbGF5U3RyZWFt
aW5nS2V5Q29udGV4dEJveCA6IHB1YmxpYyBJU09Cb3ggewogICAgIFZlY3Rvcjx1aW50OF90PiBt
X2RhdGE7CiB9OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tl
eVZlcnNpb25MaXN0Qm94IDogcHVibGljIElTT0JveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94IGZpbmFsIDogcHVibGljIElTT0Jv
eCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZvdXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJm
a3ZsIjsgfQogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiB2ZXJzaW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fdmVyc2lvbnM7IH0KQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPRmFpclBsYXlTdHJlYW1pbmdLZXlWZXJzaW9uTGlzdEJveCA6IHB1YmxpYyBJU09Cb3ggewog
ICAgIFZlY3Rvcjx1aW50OF90PiBtX3ZlcnNpb25zOwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94IDogcHVibGljIElTT0JveCB7Citj
bGFzcyBXRUJDT1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggZmlu
YWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVO
YW1lKCkgeyByZXR1cm4gImZwc2siOyB9CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBJU09GYWlyUGxheVN0cmVhbWluZ0tleVJlcXVlc3RCb3ggOiBwdWJsaWMgSVNP
Qm94IHsKICAgICBPcHRpb25hbDxJU09GYWlyUGxheVN0cmVhbWluZ0tleVZlcnNpb25MaXN0Qm94
PiBtX3ZlcnNpb25MaXN0OwogfTsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlT
dHJlYW1pbmdJbml0RGF0YUJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPRmFpclBsYXlTdHJlYW1pbmdJbml0RGF0YUJveCBmaW5hbCA6IHB1YmxpYyBJU09Cb3gg
ewogcHVibGljOgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAiZnBz
ZCI7IH0KIApAQCAtMTIwLDcgKzEyMCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIElTT0ZhaXJQ
bGF5U3RyZWFtaW5nSW5pdERhdGFCb3ggOiBwdWJsaWMgSVNPQm94IHsKICAgICBWZWN0b3I8SVNP
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXF1ZXN0Qm94PiBtX3JlcXVlc3RzOwogfTsKIAotY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94IDogcHVibGljIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3ggZmluYWwgOiBwdWJsaWMgSVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBmYWlyUGxheVN5c3RlbUlEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuaAppbmRleCA3NjA4YTAxNzI2M2IzMDQ0NGNhYmU1
MzVmZGE0NGM5OWZmYWYxMWYyLi5kNjE2N2I4NzY4OTk5ZGMwNDk0NzUzODIwZDlhMmJjN2JlZDA2
NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25D
Ri5oCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOwogCiBjbGFzcyBDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
Q0YgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGKE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGJiBwYXJlbnQsIExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYWYwYTdjYzc3YmYyOTJjZGZkNjZhYmM2ZTdmNjNh
NTA5MDBhYWQ2Ny4uYzJjOGFlNmMxZWUxYzU2NDIyMmU1MDJiMzI5YzU5MmU1ZmEyYThlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCkBAIC05OCw2ICs5OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiBj
bGFzcyBMYXllckNsaWVudDsKIAogY2xhc3MgQVZGV3JhcHBlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQVZGV3JhcHBlcihNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRiopOwogICAgIH5BVkZXcmFwcGVyKCk7CkBAIC0yMTMsNiArMjE0LDcgQEAg
Y2xhc3MgQVZGV3JhcHBlciB7CiB1aW50cHRyX3QgQVZGV3JhcHBlcjo6c19uZXh0QVZGV3JhcHBl
ck9iamVjdElEOwogCiBjbGFzcyBMYXllckNsaWVudCA6IHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExheWVy
Q2xpZW50KEFWRldyYXBwZXIqIHBhcmVudCkgOiBtX3BhcmVudChwYXJlbnQpIHsgfQogICAgIHZp
cnR1YWwgfkxheWVyQ2xpZW50KCkgeyBtX3BhcmVudCA9IDA7IH0KQEAgLTE2NDEsNiArMTY0Myw3
IEBAIHZvaWQgQVZGV3JhcHBlcjo6cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayhBVkNGUGxh
eWVyUmVmLCBDTVRpbWUgY21UaW1lLCB2b2lkCiB9CiAKIHN0cnVjdCBOb3RpZmljYXRpb25DYWxs
YmFja0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IG1fcHJvcGVydHlOYW1lOwogICAgIHZvaWQqIG1fY29udGV4dDsK
IApAQCAtMTc4NSw2ICsxNzg4LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpzZWVrVG9UaW1lKGNvbnN0
IE1lZGlhVGltZSYgdGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRvbGUKIAogI2lmIEhB
VkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShBVkZPVU5EQVRJ
T05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKIHN0cnVjdCBMZWdpYmxlT3V0cHV0RGF0YSB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBtX2F0dHJpYnV0ZWRTdHJpbmdzOwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBtX3Nh
bXBsZXM7CiAgICAgTWVkaWFUaW1lIG1fdGltZTsKQEAgLTE4NDEsNiArMTg0NSw3IEBAIHZvaWQg
QVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEFWQ0ZQbGF5
ZXJJdGVtTGVnaWJsZU91dHB1CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdB
VEUpCiBzdHJ1Y3QgTG9hZFJlcXVlc3REYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgUmV0YWluUHRyPEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RS
ZWY+IG1fcmVxdWVzdDsKICAgICB2b2lkKiBtX2NvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIyYWFmZWM3
YjgzNDI3YjgxMzBhN2MwNDNmOGY2NzIwODM0Y2NhNDcuLjVkOGUyNTA3NDcwYmM3YTQ5OTk1NWM5
ODFiMTc2ZmY0NDRmYmM2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMuaApAQCAtMzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiAKLWNs
YXNzIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDIDogcHVibGljIExlZ2FjeUNETVNlc3Npb24s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4geworY2xh
c3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMgZmluYWwgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vz
c2lvbiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50
LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAyNGIyYTE3ZDk3N2ViYmYwNTMzNTBjNTVkOWQ0
MDlhNjEyNzk2MzhmLi4zOWVhOGU1MTEzNjMyYWU3NGJmNTM2NGE4ZDFiMDI2OTcyMjFhYTUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQy5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiAKIGNsYXNzIENETVNlc3Npb25NZWRpYVNvdXJj
ZUFWRk9iakMgOiBwdWJsaWMgTGVnYWN5Q0RNU2Vzc2lvbiwgcHVibGljIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDRXJyb3JDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhDRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDJiwgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfkNETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXgg
NzM5NmU1YjFiNDMxMTk4ZTVlNjBkOGZjZDA2MzU5YmIyN2NmNDlmNy4uYTFkZDBmOTA5MWZiMjg2
NDY4ZGJlMGFlMTBjZThiM2MxNDJjMGJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAg
LTI2OCw2ICsyNjgsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMKICAgICBmcmllbmQgY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzsKIAogICAgIHN0
cnVjdCBQZW5kaW5nU2VlayB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgUGVuZGluZ1NlZWsoY29uc3QgTWVkaWFUaW1lJiB0YXJnZXRUaW1lLCBjb25z
dCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZl
VGhyZXNob2xkKQogICAgICAgICAgICAgOiB0YXJnZXRUaW1lKHRhcmdldFRpbWUpCiAgICAgICAg
ICAgICAsIG5lZ2F0aXZlVGhyZXNob2xkKG5lZ2F0aXZlVGhyZXNob2xkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRl
eCAzYWM0YzFlMzJhMTU0OGQ1OGM2OTExMTdjYzY5YTI5YzRkY2YwZTFhLi5jNGIyYzljMzQ3MDgw
YTZiN2M5NmQ2NzAyZjRhNGQ4YTMwYzdmNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTU3LDYgKzE1Nyw3
IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMg
UGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKICAgICBGbG9hdFNpemUgcGl4ZWxBbGlnbm1lbnRPZmZz
ZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0OyB9CiAK
ICAgICBzdHJ1Y3QgQ29tbWl0U3RhdGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIHVuc2lnbmVkIHRyZWVEZXB0aCB7IDAgfTsKICAgICAgICAgdW5z
aWduZWQgdG90YWxCYWNrZHJvcEZpbHRlckFyZWEgeyAwIH07CiAgICAgICAgIGJvb2wgYW5jZXN0
b3JIYWRDaGFuZ2VzIHsgZmFsc2UgfTsKQEAgLTMwOSw2ICszMTAsNyBAQCBjbGFzcyBHcmFwaGlj
c0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NMYXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNs
aWVudCB7CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBDb21wdXRlVmlzaWJsZVJlY3RGbGFnczsKICAg
ICAKICAgICBzdHJ1Y3QgVmlzaWJsZUFuZENvdmVyYWdlUmVjdHMgeworICAgICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdDsK
ICAgICAgICAgRmxvYXRSZWN0IGNvdmVyYWdlUmVjdDsKICAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggYW5pbWF0aW5nVHJhbnNmb3JtOwpAQCAtMzI4LDYgKzMzMCw3IEBAIGNsYXNzIEdyYXBo
aWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVy
Q2xpZW50IHsKIAogICAgIC8vIFVzZWQgdG8gdHJhY2sgdGhlIHBhdGggZG93biB0aGUgdHJlZSBm
b3IgcmVwbGljYSBsYXllcnMuCiAgICAgc3RydWN0IFJlcGxpY2FTdGF0ZSB7CisgICAgICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBtYXhSZXBsaWNhRGVwdGggPSAxNjsKICAgICAgICAgZW51bSBSZXBsaWNhQnJhbmNoVHlwZSB7
IENoaWxkQnJhbmNoID0gMCwgUmVwbGljYUJyYW5jaCA9IDEgfTsKICAgICAgICAgUmVwbGljYVN0
YXRlKFJlcGxpY2FCcmFuY2hUeXBlIGZpcnN0QnJhbmNoKQpAQCAtNTc5LDYgKzU4Miw3IEBAIGNs
YXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZv
cm1DQUxheWVyQ2xpZW50IHsKIAogICAgIC8vIFJlZmVyZW5jZXMgdG8gY2xvbmVzIG9mIG91ciBs
YXllcnMsIGZvciByZXBsaWNhdGVkIGxheWVycy4KICAgICBzdHJ1Y3QgTGF5ZXJDbG9uZXMgewor
ICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIExheWVyTWFw
IHByaW1hcnlMYXllckNsb25lczsKICAgICAgICAgTGF5ZXJNYXAgc3RydWN0dXJhbExheWVyQ2xv
bmVzOwogICAgICAgICBMYXllck1hcCBjb250ZW50c0xheWVyQ2xvbmVzOwpAQCAtNjA4LDYgKzYx
Miw3IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJs
aWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8QW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbj4+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRp
b24+PiBBbmltYXRpb25zTWFwOwogICAgIHN0cnVjdCBMYXllckFuaW1hdGlvbnMgeworICAgICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFZlY3RvcjxMYXllclBy
b3BlcnR5QW5pbWF0aW9uPiB1bmNvbWl0dGVkQW5pbWF0aW9uczsKICAgICAgICAgQW5pbWF0aW9u
c1RvUHJvY2Vzc01hcCBhbmltYXRpb25zVG9Qcm9jZXNzOwogICAgICAgICBBbmltYXRpb25zTWFw
IHJ1bm5pbmdBbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGMz
MWNjNmUzOGJhNTk5YzlmYjgyNmFhMDM5NzZiMjA1MWNjMTE1YmUuLjE4ZjM0MDUwYWE5ZTNiNzQz
NGE2MjdhMDc3Y2QyY2NmMmY5OWM5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTQxLDYgKzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRT
ZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0
aW5nczsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwogcHVibGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hh
cmVkQnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlQ2Fpcm8uaAppbmRleCA5OWUxODNjYzcwNTYwM2QyMzRlOGU4ZWQ5ZmQ2NjlkNTk2ZmJlZWEy
Li4wODM3MjVkNmZkMzgzMjYwN2FhNzYxZmY5ZjY4MzU5MDY2NGM5ODEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGVDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgKQEAgLTQ1LDYgKzQ1
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCkKICAgICAgICAgOiBwbGF0Zm9ybUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L1BsYXRmb3JtQ29udGV4dENhaXJvLmgKaW5kZXggODBlYzcyNThiNjQyMWZiZjk4YjNlYjU1MTNk
MGNlYWZiZTdhZGZkYy4uOTljODJlMmU2ZTk5MzFjOGZlYTlkZTIxNWQwZjM2YzcxOWMzODk3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBTaGFk
b3dTdGF0ZTsKIC8vIGNvZGUgZnJvbSB0aGUgcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3ND
b250ZXh0LgogCiBjbGFzcyBQbGF0Zm9ybUNvbnRleHRDYWlybyB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8pOwogcHVibGljOgogICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKGNhaXJvX3QqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dDNEQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHQzRENvY29hLm1tCmluZGV4IGZlZWFjZDRkMzI2NjA1ZjA0MjkxY2U5YzMx
ZWVjYmJlOWNiMjJiOTIuLjRhMDdhYzAzMjJlMjlkNjdjY2M4Yjc1MzVjMDA4MDBjMTcxN2QyYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dDNEQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtOTIsNiArOTIsNyBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgc3RhdHVzQ2hlY2tUaHJlc2hvbGQgPSA1OwogLy8gRklYTUU6IFRo
aXMgY2xhc3MgaXMgY3VycmVudGx5IGVtcHR5IG9uIE1hYywgYnV0IHdpbGwgZ2V0IHBvcHVsYXRl
ZCBhcwogLy8gdGhlIHJlc3RydWN0dXJpbmcgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY2OTAzIGlzIGRvbmUKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKikgeyB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lv
blZULmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9u
U2Vzc2lvblZULmgKaW5kZXggYWRjOTdhZGMxZmEyNDU4MDk5MDAzYzNkZTljMGFhMzhkODc2MTg3
ZC4uNjAwMWJiNzBhMTAwNDE3NDQxMDkyMTM2ZjNmZTViNjE3NjJjYjBjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25W
VC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRp
b25TZXNzaW9uVlQuaApAQCAtMzYsNyArMzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBfX0NWUGl4ZWxC
dWZmZXJQb29sKiBDVlBpeGVsQnVmZmVyUG9vbFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUIHsKK2NsYXNzIEltYWdlUm90YXRpb25TZXNz
aW9uVlQgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0cnVjdCBSb3RhdGlvblByb3BlcnRpZXMgewogICAgICAgICBib29sIGZsaXBYIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaAppbmRleCBkZDEzNTY5ZTA4MWExYjM5OWRjYmFiZjNm
NWU4ODM3Zjg0YzJhYjRlLi5jZDViNmZjYzAwZDc3NDY0ZTZlNmJlNzQ2MzExZTEzZDBkMjdlMzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1
ZmZlckNvbmZvcm1lckNWLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVkZWYgc3Ry
dWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YoQ0ZEaWN0aW9uYXJ5UmVm
IGF0dHJpYnV0ZXMpOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBjb252ZXJ0KENW
UGl4ZWxCdWZmZXJSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L1RleHR1cmVDYWNoZUNWLmgKaW5kZXggODFhYjJmOTI0ZGFmMjZjZGEyMmM1ZTIwMDc3
NmMyMTgwMjAyM2EzYi4uYzlmZjQxOWQ0M2JlNDVmNDA0NDAzMDQwYWRkOGM0ZDA0NDAyYmEyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNh
Y2hlQ1YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJl
Q2FjaGVDVi5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBUZXh0dXJlQ2FjaGVDViA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxUZXh0dXJlQ2FjaGVDVj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IGNyZWF0
ZShHcmFwaGljc0NvbnRleHQzRCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvVmlkZW9UZXh0dXJlQ29waWVyQ1YuaAppbmRleCA0M2E5NmRj
MTQzNjU4NGFmYTc3MTg3OGIxOTdmMmE5NTQ3ZGNjY2VlLi45ZDM5MmVhMDU4YjM2MDA4Y2E1Njlj
YTQ0ZmQ3MTI4ODNiMGQ2ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9WaWRlb1RleHR1cmVDb3BpZXJDVi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2N2L1ZpZGVvVGV4dHVyZUNvcGllckNWLmgKQEAgLTQwLDYgKzQwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZUNhY2hlQ1Y7CiAKIGNsYXNzIFZp
ZGVvVGV4dHVyZUNvcGllckNWIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBWaWRlb1RleHR1cmVDb3BpZXJDVihHcmFwaGljc0NvbnRleHQzRCYpOwogICAgIH5W
aWRlb1RleHR1cmVDb3BpZXJDVigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGM1NzhlZWU2ZDU1ZGQ0YjQzMDdjZDQyYmIw
MGNjZjQ3NjI5N2JiMzMuLmNlODczNGVmN2RjYjM2M2U3NjU4YjFkZWYzYTdhN2IzNjY0Y2EyNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKQEAgLTExMjUsNiArMTEyNSw3IEBAIHN0YXRpYyB2b2lkIHNldFJlY3RhbmdsZVRvVmlk
ZW9TaW5rKEdzdEVsZW1lbnQqIHZpZGVvU2luaywgY29uc3QgSW50UmVjdCYgcmVjdCkKIH0KIAog
Y2xhc3MgR1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50IDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpIb2xlUHVuY2hDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lckhvbGVQdW5jaENsaWVudChHUmVmUHRyPEdz
dEVsZW1lbnQ+JiYgdmlkZW9TaW5rKSA6IG1fdmlkZW9TaW5rKFdURk1vdmUodmlkZW9TaW5rKSkg
eyB9OwogICAgIHZvaWQgc2V0VmlkZW9SZWN0YW5nbGUoY29uc3QgSW50UmVjdCYgcmVjdCkgZmlu
YWwgeyBzZXRSZWN0YW5nbGVUb1ZpZGVvU2luayhtX3ZpZGVvU2luay5nZXQoKSwgcmVjdCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCmlu
ZGV4IDdhZTdlY2VkNmU5ZjZiYjY1NTMzYjdkODkwMzAyMzdjY2NkZmZlNjYuLmUyNjA0YzRhZTNi
MDU5Y2UxZmI2ZTA0ZDU2OGYxYTgzNmEyMzA0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtOTcsNyArOTcsNyBAQCBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZSwgcHVibAogI2VuZGlmCiAjZW5kaWYKIHsKLQorICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVEZWJ1Z0NhdGVn
b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuaApp
bmRleCA1MWZkOWIyNWIwYjg0MzdjODQ5MTI1M2U2ZjAyMWU2NTdkMDNhODE3Li41YzU2ZWMzNDE4
ODgzMzQ1Nzg4ZmEwYjU0OWE5ODAzMjdkM2U3YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
VGV4dHVyZUNvcGllckdTdHJlYW1lci5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOwogY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKIAogY2xhc3MgVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENvbG9yQ29udmVyc2lvbiB7CiAgICAgICAgIENvbnZl
cnRCR1JBVG9SR0JBLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cAppbmRleCA5NzNmNGQ0ZjAwMzIzNTZmMTc3ZWJkN2ZjNGI5ZTk0YTUyOTJmOTVhLi43NDNkY2M1
MjY4YzQyNmVjZDhmODkwODJkOWY3ZTUzM2I0MWNjYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTAsNiArNTAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKICNkZWZpbmUgTE9XX1FVRVVFX0ZBQ1RPUl9USFJFU0hPTEQgMC4yCiAKIGNs
YXNzIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQpOwogcHVi
bGljOgogICAgIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50KFdlYktpdFdlYlNyYyosIFJl
c291cmNlUmVxdWVzdCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guaAppbmRleCBmMGQwNGQ0YzYzZDkzMTIwYmNlODA1YWI4ZmVhMjg3YTAxZTA0NDJhLi4y
MzljNGY3MjhhYmJiZWMxMDM5N2EzZTAzM2JkZjQzNGU0NWQ0NzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1
bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2UsIHB1YmxpYyBDCiAgICAgLCBwdWJsaWMgUGxhdGZvcm1MYXllcgogI2VuZGlmCiB7
Ci0KKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNZWRpYVBsYXll
clByaXZhdGVIb2xlUHVuY2goTWVkaWFQbGF5ZXIqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
Qm94LmgKaW5kZXggZTFhM2E4NjYzMTQ3NWNhYjdhOWIxNzFiNDA2MmQzOTNkODkwZTYwNi4uZWNm
ODk2OTNkYTMzODUyMDEyZTc1MDIxMTI5OTgwOTllYzhkYWMyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guaApAQCAtMzYsNiArMzYsNyBAQCBjbGFz
cyBEYXRhVmlldzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPQm94IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5JU09Cb3goKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09PcmlnaW5hbEZvcm1hdEJveC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKaW5kZXggNzBi
Yjg2MTEzMTZlNjg1Yjc2Yjc4ODM4YjVlZDA2MDM3NmI5YjFhOS4uMTg4M2JhNDdiZGYzYTUyYWZi
MmZmN2QwZGQ1Y2Q5ZGNkN2NkZDg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT09yaWdpbmFsRm9ybWF0Qm94LmgKQEAgLTI5LDcg
KzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
U09PcmlnaW5hbEZvcm1hdEJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBP
UlQgSVNPT3JpZ2luYWxGb3JtYXRCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gImZybWEiOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKaW5kZXggZjM3Yjc2MjQ5ZDhlMDBmYTE3YTA1
NTkyOWU3NzY2ODUxMzczMzM2Ni4uOGU1NjczZTA1MTZhNjUwMTRmNWNkNDlmNjFhYTdiNzUzOGQy
Y2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmgKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSVNPU2NoZW1lVHlwZUJveDsKIGNsYXNzIElT
T1NjaGVtZUluZm9ybWF0aW9uQm94OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09Qcm90ZWN0
aW9uU2NoZW1lSW5mb0JveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
SVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNpbmYiOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hl
bWVJbmZvcm1hdGlvbkJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKaW5kZXggOWVkYjE4NzhhOWJhOTE5YmViMTlkN2I2
MjIzZDllN2U0NjRmNjg1OC4uZThlYzBjNGM2OWI3NGU4MzM0NDk4OTQxZjI0ZWVlNDEwZjJjZGQ2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Nj
aGVtZUluZm9ybWF0aW9uQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09TY2hlbWVJbmZvcm1h
dGlvbkJveCA6IHB1YmxpYyBJU09Cb3ggeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSVNPU2NoZW1l
SW5mb3JtYXRpb25Cb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgRm91ckNDIGJveFR5cGVOYW1lKCkgeyByZXR1cm4gInNjaGkiOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lVHlwZUJveC5o
CmluZGV4IDYxOTYxMDM5ZjQ4Y2YyYmM2ZWU3Yjg4NDgwNzNjODM3NmU1ODMxMzAuLjRiOGYyNjMz
NzUwZjhhZGY5MGJjMjdjMmQwY2YxNGVmOTgyYzE3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVUeXBlQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZVR5cGVCb3guaApAQCAtMjks
NyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IElTT1NjaGVtZVR5cGVCb3ggOiBwdWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBJU09TY2hlbWVUeXBlQm94IGZpbmFsIDogcHVibGljIElTT0Z1bGxCb3ggewogcHVibGlj
OgogICAgIHN0YXRpYyBGb3VyQ0MgYm94VHlwZU5hbWUoKSB7IHJldHVybiAic2NobSI7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1RyYWNr
RW5jcnlwdGlvbkJveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1RyYWNrRW5jcnlwdGlvbkJveC5oCmluZGV4IGY0ZWZlMjgxMDUxZTNjN2IyOWRiZWY3OGU0NGRh
M2IwMzg3ODAzZjMuLjQ3ZmE0OTcyNDZjNzE1YmUxZDJjZWY5YjBlYTg3ZGQ3Zjc5ZWY1OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09UcmFja0Vu
Y3J5cHRpb25Cb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPVHJhY2tFbmNyeXB0aW9uQm94LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09UcmFja0VuY3J5cHRpb25Cb3ggOiBw
dWJsaWMgSVNPRnVsbEJveCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBJU09UcmFja0VuY3J5cHRp
b25Cb3ggZmluYWwgOiBwdWJsaWMgSVNPRnVsbEJveCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEZv
dXJDQyBib3hUeXBlTmFtZSgpIHsgcmV0dXJuICJ0ZW5jIjsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCmluZGV4IDllYzQwODk0
ZjFlMjhhMDVhMjE0Y2IzMjM1MTRmN2IxMzk1NWQyODQuLjRiNTE2ZWU4ZGQ3ZjdkMjM3ZThkNjI3
Mjc5N2IwMzJkZDFmNWFjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09WVFRDdWUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIEpTQzo6RGF0
YVZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSVNPU3RyaW5nQm94IDogcHVi
bGljIElTT0JveCB7CitjbGFzcyBJU09TdHJpbmdCb3ggZmluYWwgOiBwdWJsaWMgSVNPQm94IHsK
IHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRzKCkgeyByZXR1cm4gbV9jb250ZW50
czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRU
Q3VlLmgKaW5kZXggYTYxNjBiNjZhZTk0NjgyMDY3N2FkMjkzNGIxODFkZWI5M2NjNGY0OS4uYWUy
M2JlZmZmZWQ2NGE2ZGUyODkxNzZlNDE1MTAxMWYwNjdjOTg5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBOIGJ5dGVzIDogQ3VlVGltZUJveCA6IGJveCA6IG9w
dGlvbmFsCiAvLyBOIGJ5dGVzIDogQ3VlU2V0dGluZ3NCb3ggOiBib3ggOiBvcHRpb25hbAogLy8g
TiBieXRlcyA6IEN1ZVBheWxvYWRCb3ggOiBib3ggOiByZXF1aXJlZAotY2xhc3MgSVNPV2ViVlRU
Q3VlIDogcHVibGljIElTT0JveCB7CitjbGFzcyBJU09XZWJWVFRDdWUgZmluYWwgOiBwdWJsaWMg
SVNPQm94IHsKIHB1YmxpYzoKICAgICBJU09XZWJWVFRDdWUoY29uc3QgTWVkaWFUaW1lJiBwcmVz
ZW50YXRpb25UaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGFpbnRpbmdP
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVBhaW50aW5nT3BlcmF0aW9uLmgKaW5kZXggODNmNzc2Njc5ZTE4OWM2ZmNlNGVmODYyNTdi
MDA1ZDExMzc0ZTIyZC4uNmYyMTViMjdhYWQ5NmMzZmE5YzIwN2YzMjBlZjllMzJiNDNiN2NjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhUGFpbnRpbmdPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ09wZXJhdGlvbi5oCkBAIC00MCw2ICs0MCw3IEBA
IG5hbWVzcGFjZSBOaWNvc2lhIHsKIHN0cnVjdCBQYWludGluZ09wZXJhdGlvblJlcGxheSB7IH07
CiAKIHN0cnVjdCBQYWludGluZ09wZXJhdGlvbiB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHZpcnR1YWwgflBhaW50aW5nT3BlcmF0aW9uKCkgPSBkZWZhdWx0Owog
ICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFC
YWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJ
bXBsLmgKaW5kZXggZWFkNDk3NzZlNTBhMjNjZmQ1MDE0YTdlOTY0MzBiM2RlMTI0ZGIwYS4uZDQz
NmYyMGMzMTYxYzA1NTRhNWFhMjJhMzkzMGE5OTVlZWMzNWE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBs
LmgKQEAgLTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgQmFja2lu
Z1N0b3JlVGV4dHVyZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgQmFja2luZ1N0b3JlOjpJbXBs
LCBwdWJsaWMgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmVDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBGYWN0b3J5IGNyZWF0ZUZhY3Rv
cnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNv
bXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCmluZGV4IDY1NTViZmIwODAyNjFlOGEz
MDk1YmRlNDgzYTA2MWJiNTQyMTQ1NzQuLjUzMGE2NzUxMDE3MjZlYTI4NzI4YzUzZDg4OGRiZGVm
N2FhZTc5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAg
Y2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwogbmFtZXNwYWNlIE5pY29zaWEgewogCiBjbGFzcyBD
b21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgQ29tcG9zaXRp
b25MYXllcjo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExh
eWVyVGV4dHVyZU1hcHBlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCmlu
ZGV4IGVmOTZhNjA4MzE2MmRlNDFjMjdkZTRiZjM1N2I4YTRmY2FmOGQ5Y2YuLmIwMTA1YjczYWMy
MjY0ZjU3Y2E3YjdlNTAzZWNmNzBkYTUyN2RhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0
dXJlTWFwcGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC00
MSw2ICs0MSw3IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk7CiBuYW1l
c3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsIGZp
bmFsIDogcHVibGljIENvbnRlbnRMYXllcjo6SW1wbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhR0MzRExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0MzRExheWVyLmgKaW5kZXggMzJkYjlkZDM3YTZmMGQ5ZmE4ZDRkMTg4
ZWIxOGY4YWUxNDc1YTAwYi4uOWY1NDQ1YmJlMTE4M2NlNzQ4NTU5M2NiYmJmMTY1MGVkY2NlNDMy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUdDM0RMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQzNETGF5ZXIuaApAQCAtNDEsNiArNDEsNyBA
QCBjbGFzcyBHTENvbnRleHQ7CiBuYW1lc3BhY2UgTmljb3NpYSB7CiAKIGNsYXNzIEdDM0RMYXll
ciA6IHB1YmxpYyBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q2xpZW50IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHQzNETGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0QmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5
bGUpOwogICAgIHZpcnR1YWwgfkdDM0RMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1Rl
eHR1cmVNYXBwZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaAppbmRleCAx
YTYyM2FmYTQwOTNiMjJhYzIwZDEzYjMyOTM2MDgzYWNiMDhlYTgwLi40OWIxZTliMmVjMDM1NTJh
MGJkNjEyMGFlNzdiOGU2OTRhOTQ2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1h
cHBlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuaApAQCAtNDIsNiAr
NDIsNyBAQCBjbGFzcyBJbWFnZTsKIG5hbWVzcGFjZSBOaWNvc2lhIHsKIAogY2xhc3MgSW1hZ2VC
YWNraW5nVGV4dHVyZU1hcHBlckltcGwgZmluYWwgOiBwdWJsaWMgSW1hZ2VCYWNraW5nOjpJbXBs
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgRmFj
dG9yeSBjcmVhdGVGYWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24u
aAppbmRleCA3YzYxNGZiNDAzMzU4ZWE0MDQ1NmQ4NDYyY2Y4ZGM1YmMzYTRlYjE5Li4xNDcyMTc5
MDc3MjdjYWVlYTI3ZWY2OGEwNjljYzA1MzEwODIwZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMz
RE9wZW5HTENvbW1vbi5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbiA6IHB1YmxpYyBFeHRlbnNpb25zM0Qgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkV4dGVu
c2lvbnMzRE9wZW5HTENvbW1vbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQ
bGF0Zm9ybUxheWVyLmgKaW5kZXggOGI2MDIxNGFiYTliODNjYTE5MzBmMTM1Yzc1MzQ4YjI2NmZl
NWNhYy4uZTZmMDljODc5ODU0ODYzMmVlNGIwYWE1YTU2MzA2MTVhMjRhMzc4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
QzNEUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaApAQCAtMzIsNiArMzIsNyBA
QCBjbGFzcyBHTENvbnRleHQ7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
OwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIgOiBwdWJsaWMgUGxhdGZv
cm1MYXllciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKEdyYXBoaWNzQ29udGV4dDNEJiwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyR0MzRFBs
YXRmb3JtTGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oCmluZGV4IDJjMjRlMDg0ZTMyOTZhNDdl
MDllOTYxMGQ3NDhkNmE4OGZlNDk2NTYuLmZiYzI0NWJlMWU1MDM4NTNjNzMyZjAxZTVhMzRlNTU4
NGE1YjNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9UaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZTsKIAogY2xhc3MgVGlsZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2lu
dCBDb29yZGluYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCAxOTA0NDkwMDQ1
ZjRlN2U3ZjdkYjgxZDk1ZjBhNmEyNDJiZDU0ODM4Li5lYWI4MDZlNDJjMDYyZDU1OTc4OTk0NTJl
ZmU3NDc0ZTU5OWY5MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTQxLDYgKzQx
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKIAogc3Ry
dWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVi
bGljOgogICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoSEFORExFIGZvbnRSZWZlcmVuY2UsIGNv
bnN0IFN0cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI5NTM1NTAz
YzMwNmM1MDFhYTM5M2YzMWZmZDkyODg1ZWRlOWJkZWYuLjFlNDkxYzE1NjgzZjE4NGFkYWM3NTBm
ZWFkMDMyMWVlMDk3MzYzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcApAQCAtNDMsNiAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgaW50IGtGdWxsU2NyZWVu
QW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7IC8vIG1pbGxpc2Vjb25kcyAKIAogY2xhc3MgRnVsbFNj
cmVlbkNvbnRyb2xsZXI6OlByaXZhdGUgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNj
cmVlbkNsaWVudCAgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFByaXZhdGUoRnVsbFNjcmVlbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIsIEZ1bGxTY3JlZW5Db250
cm9sbGVyQ2xpZW50KiBjbGllbnQpIAogICAgICAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93LmgKaW5kZXgg
ZTA2NjMxMGEwYWNhNzFiZDlhYzgxZGQxNmJhMGRiMTVhN2Q1MTFkNS4uZDI4NTM4YTE1ODIyOGIy
Yzg5ZTE4M2M3MzkxNGUxMmI4YTE4OTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3cuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlRnVsbHNjcmVlbldpbmRvdy5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQgewogfTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdyhNZWRpYVBsYXllclByaXZh
dGVGdWxsc2NyZWVuQ2xpZW50Kik7CiAgICAgfk1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5X
aW5kb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaApp
bmRleCA5MGU5YjcyMTU3MDhhYzJhMmVmZjdkNGE2YWRlMTQ3ZWVlMjg4NDY2Li5hMjE2NjExMGIz
ODAwZjE3NjQ3MTY1YzJkMDJhMGRhOWVhOTUxMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oCkBAIC00Nyw2ICs0Nyw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6
IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb24oTWVkaWFQbGF5ZXIqKTsKICAgICB+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uKCk7CkBAIC0xNjgsNiArMTY5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEK
ICAgICB9OwogCiAgICAgY2xhc3MgQXN5bmNDYWxsYmFjayA6IHB1YmxpYyBJTUZBc3luY0NhbGxi
YWNrLCBwdWJsaWMgTWVkaWFQbGF5ZXJMaXN0ZW5lciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQXN5bmNDYWxsYmFjayhNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24qLCBib29sIGV2ZW50KTsKICAgICAgICAgfkFzeW5jQ2Fs
bGJhY2soKTsKQEAgLTE5MSw2ICsxOTMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb24gZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYQogICAg
IHR5cGVkZWYgRGVxdWU8Q09NUHRyPElNRlNhbXBsZT4+IFZpZGVvU2FtcGxlTGlzdDsKIAogICAg
IGNsYXNzIFZpZGVvU2FtcGxlUG9vbCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHB1YmxpYzoKICAgICAgICAgVmlkZW9TYW1wbGVQb29sKCkgPSBkZWZhdWx0OwogICAg
ICAgICB2aXJ0dWFsIH5WaWRlb1NhbXBsZVBvb2woKSA9IGRlZmF1bHQ7CkBAIC0yMTIsNiArMjE1
LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFsIDogcHVi
bGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICBjbGFzcyBEaXJlY3QzRFByZXNlbnRl
cjsKIAogICAgIGNsYXNzIFZpZGVvU2NoZWR1bGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBWaWRlb1NjaGVkdWxlcigpID0gZGVmYXVs
dDsKICAgICAgICAgdmlydHVhbCB+VmlkZW9TY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CkBAIC0yNTcs
NiArMjYxLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGZpbmFs
IDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmEKICAgICB9OwogCiAgICAgY2xhc3Mg
RGlyZWN0M0RQcmVzZW50ZXIgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBwdWJsaWM6CiAgICAgICAgIERpcmVjdDNEUHJlc2VudGVyKCk7CiAgICAgICAgIH5EaXJlY3Qz
RFByZXNlbnRlcigpOwpAQCAtMzE5LDYgKzMyNCw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbiBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
CiAgICAgICAgICwgcHVibGljIElNRlZpZGVvRGlzcGxheUNvbnRyb2wKICAgICAgICAgLCBwdWJs
aWMgSU1GQXN5bmNDYWxsYmFjawogICAgICAgICAsIHB1YmxpYyBNZWRpYVBsYXllckxpc3RlbmVy
IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAg
ICBDdXN0b21WaWRlb1ByZXNlbnRlcihNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24q
KTsKICAgICAgICAgfkN1c3RvbVZpZGVvUHJlc2VudGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRC5oCmluZGV4IDZmYmUyYjVlZDc1YWIzYmEwNGUzMDI1NDljY2ViOTE2MWFmNWMwMTMuLjE5
MDU0MGUwMzNkOWI3Y2M4YzU0YjhiMWJlZjc3NjkyYmQ1Zjk0MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRC5oCkBAIC00NSw2ICs0NSw3IEBAIHN0cnVjdCBTaGFkb3dTdGF0ZTsKIH0KIAog
Y2xhc3MgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEKTsK
IHB1YmxpYzoKICAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRChJRDJEMVJlbmRlclRhcmdldCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJ
bWFnZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NB
SW1hZ2VRdWV1ZS5jcHAKaW5kZXggMzM3ZmFmMzc4ZGE3OTU1YmVhNjEwYWVjOTA3NTc5NjZkNmM0
ODIwMC4uOGMwZWIyNGIxOWM3MTMwZDM2MjU3NWU3YjQ4MGQ2NDM5YThhZTRiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVl
dWUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdL
Q0FJbWFnZVF1ZXVlUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgUmV0YWluUHRyPENBSW1hZ2VRdWV1ZVJlZj4gbV9pbWFnZVF1ZXVlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRl
eCA0OTAzNzFhZDg5ZWYyZTc5NmUzNDAxYWFjMWRiYjgwNmVhOTY2ZWIwLi4wNGU5NmFiNTkyZWI5
ODI5NDQ3YzMzM2ZiYTgxODc3Mjk3MDdmMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC0yNjYsNiArMjY2LDcgQEAgVmVjdG9y
PEdka0F0b20+IFBhc3RlYm9hcmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka0RyYWcKIHN0YXRpYyBTZWxlY3Rpb25EYXRhKiBzZXR0aW5nQ2xpcGJvYXJk
U2VsZWN0aW9uOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkU2V0RGF0YSB7CisgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIENsaXBib2FyZFNldERhdGEoU2VsZWN0aW9uRGF0YSYg
c2VsZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJh
Y2spCiAgICAgICAgIDogc2VsZWN0aW9uRGF0YShzZWxlY3Rpb24pCiAgICAgICAgICwgc2VsZWN0
aW9uQ2xlYXJlZENhbGxiYWNrKFdURk1vdmUoc2VsZWN0aW9uQ2xlYXJlZENhbGxiYWNrKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkLmgKaW5kZXggNjY0N2Vj
M2EzNmQxNTg3ODY5NGYwN2QwMmIxZmIxZThjMzUwZDUzZi4uMzBlZjlmYzMxYzg3ZjExYmZhZmU0
Y2E2YTllYTgxMjRkNWZjM2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0xlZ2FjeVRpbGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xl
Z2FjeVRpbGVHcmlkLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTGVnYWN5VGlsZUdyaWRUaWxlOwogCiBjbGFzcyBMZWdhY3lUaWxlR3JpZCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBUaWxl
SW5kZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCmluZGV4IGQ0YWRi
MTUyYmQ0YmFlZjdlZjdiZjA1NWY2ZDlhODNkODY3ZTY3ZWIuLmEyMmY1NzFiYzUxNjExZjYxNzQ0
OTEwNGNmNWZjODYwZTUyZTlhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGwuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVN0
cmVhbVByaXZhdGU7CiAKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbCBmaW5hbCA6
IHB1YmxpYyBNZWRpYVJlY29yZGVyUHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVJlY29yZGVyUHJp
dmF0ZUFWRkltcGw+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oCmluZGV4IDk1M2YzYThhMGU0ZjZhMDYyYjliOTRh
OGY0MTUxYTQ5ZjFhNDMwMWQuLjM0MTU0OTI1MWVkNTcxYjc1ZWY1ZDBjMmRlZGYxZTc3Yjc1MjM3
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9EYXRhLmgKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgR1N0cmVhbWVyQXVkaW9EYXRhIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKK2Ns
YXNzIEdTdHJlYW1lckF1ZGlvRGF0YSBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybUF1ZGlvRGF0YSB7
CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyQXVkaW9EYXRhKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNh
bXBsZSwgR3N0QXVkaW9JbmZvIGluZm8pCiAgICAgICAgIDogbV9zYW1wbGUoV1RGTW92ZShzYW1w
bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaAppbmRleCBiYmU1YWU3Mzk1NGFl
NTNjYzIxNjU3OTNlYzA5NmE4ODc5MmFkNGYyLi5mOTJhNmE5YjEyNjExMDBmMTkzNDVmNGVjYTIx
OTRiZmUxYjhhM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZXIuaApAQCAtMzIs
NiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJDYXB0dXJl
ciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVy
Q2FwdHVyZXIoR1N0cmVhbWVyQ2FwdHVyZURldmljZSwgR1JlZlB0cjxHc3RDYXBzPik7CiAgICAg
R1N0cmVhbWVyQ2FwdHVyZXIoY29uc3QgY2hhciogc291cmNlRmFjdG9yeSwgR1JlZlB0cjxHc3RD
YXBzPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmNwcAppbmRleCA3ZjM5MmJmNjg0MjNhOWY1ZDA3MTZhYzllZjZhYzVjNjRjODY5YmUwLi5kNWRm
YzM4NDEzZTY1MzA4ZGIxNTc5NmIyYmVjOTNlOTBhNTY5MTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJl
YW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTEwNyw2ICsxMDcsNyBA
QCBHc3RTdHJlYW0qIHdlYmtpdE1lZGlhU3RyZWFtTmV3KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
KiB0cmFjaykKIAogY2xhc3MgV2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyCiAgICAgOiBw
dWJsaWMgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJLaXRNZWRpYVN0cmVhbVRy
YWNrT2JzZXJ2ZXIoKSB7IH07CiAgICAgV2ViS2l0TWVkaWFTdHJlYW1UcmFja09ic2VydmVyKFdl
YktpdE1lZGlhU3RyZWFtU3JjKiBzcmMpCkBAIC0xNDMsNiArMTQ0LDcgQEAgY2xhc3MgV2ViS2l0
TWVkaWFTdHJlYW1UcmFja09ic2VydmVyCiAKIGNsYXNzIFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2
ZXIKICAgICA6IHB1YmxpYyBNZWRpYVN0cmVhbVByaXZhdGU6Ok9ic2VydmVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJLaXRNZWRpYVN0
cmVhbU9ic2VydmVyKCkgeyB9OwogICAgIFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXIoV2ViS2l0
TWVkaWFTdHJlYW1TcmMqIHNyYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlk
ZW9EZWNvZGVyRmFjdG9yeS5oCmluZGV4IGU0ZDUwOGUzMTc5YWM0N2JmMWQxMGY0ZjI4N2M1NDdi
YzI1NjAwMmEuLmVmZGEyOWJlMzk3MThiYmE3OTEzNDE4Y2M3M2ViOWFkMzY4NGY4YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3Ry
ZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRGVjb2RlckZhY3RvcnkuaApAQCAt
MzAsNiArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHU3RyZWFtZXJWaWRl
b0RlY29kZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6VmlkZW9EZWNvZGVyRmFjdG9yeSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgR1N0cmVhbWVyVmlkZW9E
ZWNvZGVyRmFjdG9yeSgpOwogICAgIHN0YXRpYyBib29sIG5ld1NvdXJjZShTdHJpbmcgdHJhY2tJ
ZCwgR3N0RWxlbWVudCAqc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFt
ZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAppbmRleCA2OTk1YzYwMmNiMTc0NDdmYTc0MWQzOWQ0
NDk0YzM1NjFkYzFiYjgyLi5jZDBlNmNkNDNmNWU0MGI0ODgwMjllYmU0ZGE0YjIxNTI3OTcwMGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rv
cnkuY3BwCkBAIC02MCw2ICs2MCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWSh3ZWJraXRfd2VicnRj
ZW5jX2RlYnVnKTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyVmlkZW9F
bmNvZGVyIDogcHVibGljIHdlYnJ0Yzo6VmlkZW9FbmNvZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBHU3RyZWFtZXJWaWRlb0VuY29kZXIoY29uc3Qgd2Vi
cnRjOjpTZHBWaWRlb0Zvcm1hdCYpCiAgICAgICAgIDogbV9maXJzdEZyYW1lUHRzKEdTVF9DTE9D
S19USU1FX05PTkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2Rl
ckZhY3RvcnkuaAppbmRleCA3OTZhMjBmOTQ1ZTNhOTUxOThlY2UxMGZlNzBkOWI1MmY3MjMzZDEx
Li4xNDgzYTJiMjBiMzUxNWM3MWI3YTBjN2E1MjI2MjZlOWZmNTM5MjA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlk
ZW9FbmNvZGVyRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1N0cmVhbWVyVmlkZW9FbmNvZGVy
RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyB3ZWJydGM6OlZpZGVvRW5jb2RlckZhY3RvcnkgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRl
ckJhY2tlbmQuaAppbmRleCBkYzZmOGYzZmIwNTdmYjU0MGQ5MGMwMDIyNjhhOTk3NzQ0MTAyNzdm
Li40YTA2MWZjYzk1M2IxM2Q1ODNiYWU1NTQ1MTU1YmNlMDhkZjhmOWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRFRN
RlNlbmRlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQuaApAQCAtNDAsNiArNDAsNyBA
QCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19FTkQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUlRDRFRNRlNlbmRl
ckJhY2tlbmQsIHByaXZhdGUgd2VicnRjOjpEdG1mU2VuZGVyT2JzZXJ2ZXJJbnRlcmZhY2UsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZD4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IExpYldlYlJUQ0RU
TUZTZW5kZXJCYWNrZW5kKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkR0bWZTZW5kZXJJbnRl
cmZhY2U+JiYpOwogICAgIH5MaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggMjA3YWI3OGE5YTJiYmU0MGEwZWQ0ZGE2
OTU2OWFlZGIxMjI5OWUyMC4uNjkxMWM2ZmFlNDRkNjdiYjg0YmJhMDE1MmY2MzBiOWFmY2UwM2Ni
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC03OSw2ICs3OSw3
IEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNz
KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIH0KIAogY2xhc3MgQmFzaWNQYWNrZXRTb2NrZXRG
YWN0b3J5IDogcHVibGljIHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCYXNpY1BhY2tldFNv
Y2tldEZhY3RvcnkocnRjOjpUaHJlYWQmIG5ldHdvcmtUaHJlYWQpCiAgICAgICAgIDogbV9zb2Nr
ZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZu
ZXR3b3JrVGhyZWFkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggYmRm
MDkwMDQwYzkwNjU3ZjQ5ZjBjZTRhZTI4MDc3MzhhMWU4YmU3OS4uN2FhOGRlMmViM2E0YzU1NWUw
OWE2MGQ3ZDdjM2FkODMxOWIxMThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmgKQEAgLTY0LDYgKzY0LDcgQEAgc3RydWN0IFJUQ1J0cENhcGFiaWxpdGllczsKIGVudW0gY2xh
c3MgTUROU1JlZ2lzdGVyRXJyb3IgeyBOb3RJbXBsZW1lbnRlZCwgQmFkUGFyYW1ldGVyLCBETlNT
RCwgSW50ZXJuYWwsIFRpbWVvdXQgfTsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRD
UHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGNyZWF0ZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuaAppbmRleCA3NzJhMzk1ZjBjYmI0M2U3MzA3
NTBjY2I5NjM2MTYxY2FhMzQxYzYzLi5kM2MzODM5NWMwNzdmMzQ2MDRiNWJiMGY0YjQzYWUxMTAw
Y2RmMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmgKQEAg
LTM3LDcgKzM3LDYgQEAgY2xhc3MgVmlkZW9FbmNvZGVyRmFjdG9yeTsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXJDb2NvYSA6IHB1
YmxpYyBMaWJXZWJSVENQcm92aWRlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgTGliV2ViUlRDUHJvdmlkZXJDb2NvYSgpID0gZGVmYXVsdDsKICAgICB+TGli
V2ViUlRDUHJvdmlkZXJDb2NvYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oCmluZGV4IDhlMjlk
N2I4MWExNzNkZmE1MzcwNWZhMWU2MmM5ZTg4M2M0Zjk1MDIuLmQ0NzY5ZDY5ZTRhZjA0NzBkNjJj
ZTkwYjc1NDQwZTI4Mjc2OWU3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmgKQEAgLTM1LDYg
KzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2sgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2spOwogcHVibGljOgogICAgIGV4cGxpY2l0IE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrKE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEYXRhQ2hh
bm5lbEhhbmRsZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFD
aGFubmVsSGFuZGxlck1vY2suaAppbmRleCAzYzZkZTFjNGViZTRlYzc0NzM1NDBhZWNjYjg5NzYy
YjE5NTU1Y2Q0Li4xMzg4YWQwNTEzMTA4YjJlYjkyZWMyYmJlMjg5MzM2NTJlOTlhMDhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxl
ck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVs
SGFuZGxlck1vY2suaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFu
bmVsSGFuZGxlciwgcHVibGljIFRpbWVyRXZlbnRCYXNlZE1vY2sgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29u
c3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAppbmRleCBhOTg0
M2Y1MGU1YTQzNDAzZDhmNTJmMGE5NjdmOTAyNzg2NWU4ZDU2Li44ZGFlYzU0YTEzNDJkYWI1OWMz
NWNjNDkyN2EwMGZlNjIyOTQ5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCkBAIC0zNyw2ICszNyw3IEBAIFdFQkNPUkVf
RVhQT1JUIGV4dGVybiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldlYktpdEludGVybmFs
OyAvLyBVc2VkIGZvciBlCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gY29uc3QgY2hhciogY29uc3Qg
ZXJyb3JEb21haW5XZWJLaXRTZXJ2aWNlV29ya2VyOyAvLyBVc2VkIGZvciBlcnJvcnMgdGhhdCBo
YXBwZW4gd2hlbiBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBhIHNlcnZpY2Ugd29ya2VyLgogCiBj
bGFzcyBSZXNvdXJjZUVycm9yQmFzZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBpc29sYXRlZENvcHkoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuaAppbmRleCAwYzAzZTlkNjkyYzdmNmRjNjEzMDg2ZmYyNTVjMjBlNWM2YmJlOWU5
Li4yNjg3YWU3NGZiOWQ5OTQyOTcyYmVkY2FjNmFiOWIxMTU5YTdlNTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtNDEs
NiArNDEsNyBAQCBlbnVtIGNsYXNzIENvb2tpZUFjY2VwdFBvbGljeSB7CiB9OwogCiBjbGFzcyBD
b29raWVKYXJEQiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ29va2llSmFyREIpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IDExMDI3
Y2UzYjNjZjYzODhmOTk1NGFhZjQ5YzQ5MDNmZTkzZmRmZjUuLjhjZTExNDM4NDhmYjIzMThiYTE5
OTBlYWQxOGUxNWYzN2Q4NDM0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxDYWNoZUVudHJ5IHsKLQorICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmlu
ZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHJpbmcmIGNhY2hlRGlyKTsKICAg
ICB+Q3VybENhY2hlRW50cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmgKaW5kZXggN2QwNjA2OGNkOWQxYWViZWU0MmQzODU5NGFi
ZDA5NGI5MDExNDQ0NC4uYTRmOGMwMjgyNzY3YjBiNDg3NzBhMDQ4ZWU4NTJmMTY2ZTA3YTdmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmgKQEAgLTE0Nyw2ICsxNDcsNyBAQCBjbGFzcyBDdXJsQ29udGV4dCA6IHB1YmxpYyBDdXJs
R2xvYmFsIHsKIC8vIEN1cmxNdWx0aUhhbmRsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBDdXJsTXVsdGlIYW5kbGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxNdWx0aUhhbmRs
ZSk7CiAKIHB1YmxpYzoKQEAgLTIwMiw2ICsyMDMsNyBAQCBjbGFzcyBIVFRQSGVhZGVyTWFwOwog
Y2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogCiBjbGFzcyBDdXJsSGFuZGxlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJsSGFuZGxl
KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggODA0Yzc0NDZjNDUzYjY3MTVm
ODg1ZTlhZmMyNzM4ODU4ZTI2ODcxYS4uNzIwYzY5ODBlZGQzZGFlM2UxMmM2M2YwOGI2M2M2Zjg5
NmU1MzMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIEN1
cmxSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhh
bmRsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVsdGlwYXJ0SGFuZGxlPiBjcmVhdGVJZk5lZWRlZChDdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgQ3VybFJlc3BvbnNlJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVk
dWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmgKaW5kZXggY2EzYmJhODEzNDQwYmZmNmU4MDMxMjY0MDk3NmNjMzg4YTc0ODY0
Zi4uNGI5NWMwZDE5YWQ5MDQyZDJhYzcwZWQ0YjEzM2Y4ZDFkMGM2MzJiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQ7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0U2NoZWR1bGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDdXJsUmVxdWVzdFNjaGVkdWxlcik7CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEN1cmxS
ZXF1ZXN0U2NoZWR1bGVyPjsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVyaWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMVmVyaWZpZXIuaAppbmRleCA0NTJmNzA1ZjljYjhm
ZTI5MTljZjI4NTZkZWU4ZDBhZDFhODE0ZjFhLi4zYjU5Y2IxZjg2MzY1NDg4MWQ0NmU2NWJiZTk1
NTRlOWY2NjM0MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFNTTFZlcmlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxTU0xWZXJpZmllci5oCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxTU0xWZXJpZmllciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VybFNTTFZlcmlmaWVyKTsKIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIFNTTENlcnRpZmljYXRlRmxhZ3MgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvUHJldmlld0NvbnZlcnRlci5oCmlu
ZGV4IDVhMDZmMmVmODllZjVjMjFiZTE1N2M3MWRhMTQxOWVjODQ4MDllZjcuLjc2NTQzYWQxNmMx
NDk0ODU4ODIyOTkxZjMwNWZmN2EzM2UxN2FlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTM2LDYgKzM2
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAog
Y2xhc3MgUHJldmlld0NvbnZlcnRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJldmlld0NvbnZlcnRlcik7CiBwdWJsaWM6CiAgICAg
UHJldmlld0NvbnZlcnRlcihpZCBkZWxlZ2F0ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQgPSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwCmluZGV4IGU5NjFjMjg4M2I4NjMwMTA1ZGE3ZDc4MDdmM2ZiYmUyNjFhMjA2MTAuLjBh
NzI3MjQ3ZGZhZmMxODgxZjFhMmM0NTg4MWRlNDFmYjM0OWUyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTEzNCw2ICsxMzQsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciogYXV0aFR5cGVGcm9tUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUoUHJvdGVj
dGlvblNwYQogfQogCiBzdHJ1Y3QgU2VjcmV0U2VydmljZVNlYXJjaERhdGEgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YShH
Q2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBGdW5jdGlvbjx2b2lkIChDcmVkZW50aWFsJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IGNhbmNlbGxhYmxlKGNhbmNlbGxhYmxlKQog
ICAgICAgICAsIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1E
aXNwbGF5T3BlblZSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybURpc3BsYXlPcGVuVlIuaAppbmRleCBkZDZhZTczNjA0Njc5ZjE4OGUwMWUxMTBlNGZlYmU1
OTNkNTM3ZjFiLi5mNzFiZDlmMGQ1ODljYzJmODM5YjA2N2MyM2VjOGNiNTE4MTA2OGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybURpc3Bs
YXlPcGVuVlIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybURpc3BsYXlPcGVuVlIuaApAQCAtMjksNiArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBWUlBsYXRmb3JtRGlzcGxheU9wZW5WUiA6IHB1YmxpYyBWUlBsYXRmb3JtRGlz
cGxheSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgVlJQbGF0Zm9ybURpc3BsYXlPcGVuVlIodnI6OklWUlN5c3RlbSosIHZyOjpJVlJDaGFwZXJv
bmUqLCB2cjo6SVZSQ29tcG9zaXRvciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCmluZGV4IDZh
NDM4N2NjMzA4MTVlMDBjMzQxNmM4OTY2YWQyOWQ0YjczZjcwZDkuLjZhNzgyM2JjN2I5NWVkNDBk
Y2VjZGYwZjU3MzNlMTZkODQ0NWFhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5oCkBAIC0zMSw2
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFZSUGxhdGZvcm1EaXNwbGF5T3Bl
blZSOwogCiBjbGFzcyBWUlBsYXRmb3JtTWFuYWdlck9wZW5WUiA6IHB1YmxpYyBWUlBsYXRmb3Jt
TWFuYWdlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4gY3JlYXRlKCk7CiAg
ICAgZXhwbGljaXQgVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCAzMzJmMjg1MzFkMzg4Y2ZlMmMz
ZDU4YTk0YzNmMjYxN2RjYjkxNjY2Li4xMGExOTQzNmI0YmFjNjU2MjkwNmIyNDFhNzBkMWQ1ODUy
MDAwMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTQy
LDYgKzQyLDcgQEAgY2xhc3MgU2Nyb2xsYmFyOwogZW51bSBjbGFzcyBIaXRUZXN0UHJvZ3Jlc3Mg
eyBTdG9wLCBDb250aW51ZSB9OwogCiBjbGFzcyBIaXRUZXN0UmVzdWx0IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0
cjxOb2RlPj4gTm9kZVNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xheWVyT3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVy
bGFwTWFwLmNwcAppbmRleCAyODVhYTVmOWZlOWJhZTdkZmM4NTI4YzI0YzFkNTU2N2Q0MTI5ZmYz
Li43OGZjMDg4NmFiZTE3ZGIxMTkwNGRmOGIxZmY3NmU5MjA4ZTk5ZTdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtNzEsNiArNzEsNyBAQCBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVjdExp
c3QmIHJlY3RMaXN0KQogLy8gQ2hlY2tpbmcgZm9yIG92ZXJsYXAgaW52b2x2ZXMgZmluZGluZyB0
aGUgbm9kZSBmb3IgdGhlIGNsaXBwaW5nIGxheWVyIGVuY2xvc2luZyB0aGUgZ2l2ZW4gbGF5ZXIg
KG9yIHRoZSByb290KSwKIC8vIGFuZCBjb21wYXJpbmcgYWdhaW5zdCB0aGUgYm91bmRzIG9mIGVh
cmxpZXIgc2libGluZ3MuCiBjbGFzcyBPdmVybGFwTWFwQ29udGFpbmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPdmVybGFwTWFwQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyJiByb290TGF5ZXIpCiAgICAgICAgIDogbV9yb290U2NvcGUocm9vdExheWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
CmluZGV4IGJmNjQ1Y2Q0MWI4OTEyMTJkN2Y1YTMwMzg2ZWY5Y2E1NGJmYTQ2MDIuLjhkZDAzOWJh
ZmRhNjM1MzhjZTMyMTNkYzMxMzU2MGZhYThhNGJkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBz
dGF0aWMgY29uc3RleHByIE9wdGlvblNldDxTY3JvbGxDb29yZGluYXRpb25Sb2xlPiBhbGxTY3Jv
bGxDb29yZGluYXRpb25Sb2xlcygpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY2xhc3Mg
TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29y
ZGluYXRvcihDaHJvbWVDbGllbnQmIGNocm9tZUNsaWVudCwgYm9vbCBjb29yZGluYXRlVmlld3Bv
cnRDb25zdHJhaW5lZExheWVycykKICAgICAgICAgOiBtX2Nocm9tZUNsaWVudChjaHJvbWVDbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmgKaW5kZXggMjllOGU3YzI0NzU2NTg3OTJlZTRlZDRlZDA4MjBmYWVlYzli
ZGMwYy4uZGYwMTdiYTFiZmMwY2NmN2FlYTkzYTNiYjJmN2ZjNzg4ZjY5NmM3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiAKIHN0cnVjdCBNYXNrZXJEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2U7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmgKaW5kZXggN2ZlN2Y2
ODczMjA0MTBlZjA0ODM4N2Q0ODFmOTI3YjEyYzIzODNhYy4uYjljNzJlYjg4MGU5YmI4NzU5OGY0
MTQ0MDc3ZDAyMzAxNjY2NWI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Vz
ZXJJbnB1dEJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlk
Z2UuaApAQCAtNDksNiArNDksNyBAQCBlbnVtIGNsYXNzIElucHV0U291cmNlIHsKIH07CiAKIGNs
YXNzIFVzZXJJbnB1dEJyaWRnZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVXNlcklucHV0QnJpZGdlKTsKIHB1YmxpYzoKICAgICBVc2Vy
SW5wdXRCcmlkZ2UoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IGQ5NzAzMDJhZGY4NjU4NTUwOWM2
NTA4ZDUwNDk1MmEyNTUzMjM2MmIuLmM3N2FlMDhiYWM2NWMzYzJjZmM4OTc0ZmEzM2U3NjQ2MGNl
OTdmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAgY2xhc3MgUmVuZGVyT2JqZWN0
OwogY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVyQnVpbGRlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoU2V0
PEZpbHRlckVmZmVjdCo+IEZpbHRlckVmZmVjdFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmgKaW5kZXggNjRhNjViMTg2
MmZmYjk2OTYwM2M3MTU2MDdiNTQ0ZjU1NmUwMDgzYS4uMDIyZWRlZGE4MjFiNTMzNTViM2ZkZDM5
NThmMjQzNjgwMTlhYWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5oCkBAIC01Miw2ICs1Miw3IEBAIGVudW0gY2xhc3Mg
Q2FsY01vZGUgOiB1aW50OF90IHsKIH07CiAKIGNsYXNzIFNWR0F0dHJpYnV0ZUFuaW1hdG9yIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTVkdBdHRyaWJ1dGVB
bmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogICAgICAgICA6IG1f
YXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTRhYjAzNzBiOTQ3OWU1
NTUwYmJiMTEwODczNDIzNTMxMTY2NTA3MC4uYWIxNGYzY2JlNWE3ZmMyMGUxMzBmZGE5YmQ0ODc5
N2RkZGQzZTg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
RGVjb3JhdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdEZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRGVjb3JhdGlvblR5cGU+CiBjbGFzcyBTVkdEZWNvcmF0
ZWRQcm9wZXJ0eSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
U1ZHRGVjb3JhdGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+U1ZHRGVjb3Jh
dGVkUHJvcGVydHkoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBbmltYXRvckZhY3RvcnkuaAppbmRleCBhZDUwZDQy
MzYyOTY5NDJkMWRjODcxOGEyZGE4ZTZhZGY4ZDFiY2NiLi41ZTMwMThmNWE0MDJhOWM3ZjEyOWQ0
MWQ0MTlhYzVlOTQ5ZmVlMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5LmgKQEAgLTM0LDYgKzM0LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHUHJvcGVydHlBbmltYXRvckZhY3Rv
cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNWR1Byb3Bl
cnR5QW5pbWF0b3JGYWN0b3J5KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCBjMTEzMWQyNWIzODhiYmE4MzY2NTNkMjk3MDhl
NmE1YmJlNGJkZmM0Li41NTgyNThkMmJmYzZhMjZmZDE0ZWFmMjkxNzJlYTc4MjVkOGQ3MjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTIzMSw2
ICsyMzEsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRp
bmdzJiBzZXR0aW5ncykKIH0KIAogY2xhc3MgSW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIgOiBwdWJs
aWMgU3VwcGxlbWVudDxQYWdlPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIoUGFnZSogcGFnZSkKICAg
ICAgICAgOiBtX2ludGVybmFsU2V0dGluZ3MoSW50ZXJuYWxTZXR0aW5nczo6Y3JlYXRlKHBhZ2Up
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCmluZGV4IDY0Mjg3
ZDIzOWFmNTczZTkyMDNkMjU4NDMxYjI3M2M3Yjg3NDkwMDYuLjNjZDEyODE2OGRmYjhlYTFiNmYz
ZDRlMzdlZjBhYjc4NTI1YmExNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TGVnYWN5TW9ja0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2Nr
Q0RNLmNwcApAQCAtMzgsNiArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBN
b2NrQ0RNU2Vzc2lvbiA6IHB1YmxpYyBMZWdhY3lDRE1TZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNb2NrQ0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNz
aW9uQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+TW9ja0NETVNlc3Npb24oKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oCmluZGV4IDI0YjliODAwOGM0ZjUxOWI0
YTY2NmVjNmQxNTI1YWM2MmVjMWMzMGEuLmI5M2FlYjkzZmY2MzI5ZTUxNTQ3YzEzZmY3NmE2OTJl
ZTZhNzE4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NE
TS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeUNETTsKIAogY2xhc3Mg
TGVnYWN5TW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlSW50ZXJmYWNlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lNb2NrQ0RNKExl
Z2FjeUNETSogY2RtKQogICAgICAgICA6IG1fY2RtKGNkbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaAppbmRleCAzMzk2Y2QwMmFkMDJkZDE0ZTkyZjE1NzllMjc1MTZlNmJj
M2Y0Mjk4Li4zOTkwOWI5MzAzYTk0YzkzNjhlYWEwZjYyNWY0YjY3ZTUyNTA1OWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC0xMDAsNiArMTAwLDcgQEAgY2xh
c3MgTW9ja0NETUZhY3RvcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2NrQ0RNRmFjdG9yeT4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjwKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJp
dmF0ZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1vY2tDRE0+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBNb2NrQ0RNKFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAKaW5kZXgg
ZjQzYmQyYTdhNjA1OTM3MjdhZDBhNmE5MWRlY2Q2ZWJlYzcyMjY4OC4uOTI2N2U4N2Q3Y2Y2ZmFm
YWNiM2E0NjYxZjY4ZjgxOWFlNmM1NDU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckV2ZW50UXVldWUuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFdvcmtlckV2ZW50UXVldWU6On5X
b3JrZXJFdmVudFF1ZXVlKCkKIAogY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6RXZlbnREaXNwYXRj
aGVyCiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRXZlbnRE
aXNwYXRjaGVyKFJlZlB0cjxFdmVudD4mJiBldmVudCwgV29ya2VyRXZlbnRRdWV1ZSYgZXZlbnRR
dWV1ZSkKICAgICAgICAgOiBtX2V2ZW50KFdURk1vdmUoZXZlbnQpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaAppbmRleCA2MTE1ZWY0YTEzNjUyYTZlYWQxMGFmMzdj
ZmI0OTQyODIwYzNjYjJiLi5kODk3M2Q1YmNhZTE3Yjk1NTAwNDRjN2U4MDE2MDViOTlkNTQ5YWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuaApAQCAtMzMsNiAr
MzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCiBjbGFzcyBXb3JrZXJFdmVudFF1ZXVlIGZpbmFsIDogcHVibGljIEV2ZW50UXVldWUgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdvcmtl
ckV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfldvcmtl
ckV2ZW50UXVldWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDdhYzljOTgzODNiMDRiNmViODljOTlm
MjIwODg1ZTc2NzM5NzZjM2YuLjNiZDZiOWIwNmU1NzM3NjY1YjU4Zjk2OWUyOTNkMGZlZDYyYzNj
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVi
bGljIEFjCiAjZW5kaWYKIAogICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7CisgICAgICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgUGVuZGluZ1Byb21pc2UoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VX
b3JrZXJDb250YWluZXI+PiYmIHBlbmRpbmdBY3Rpdml0eSkKICAgICAgICAgICAgIDogcHJvbWlz
ZShXVEZNb3ZlKHByb21pc2UpKQogICAgICAgICAgICAgLCBwZW5kaW5nQWN0aXZpdHkoV1RGTW92
ZShwZW5kaW5nQWN0aXZpdHkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50
V29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggOTZjZjE4NTBiMGNhZTNhYWU5NjA3ZGIxMzQxNjcz
NThiNjcxYzFkOS4uNjRmYzc4ZWVlNzg4MGVkOWJlZGNmYzJhNzAxMmNhNmVjM2NlMWMwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5o
CkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIFBhaW50V29ya2xldEdsb2JhbFNjb3BlIDogcHVibGlj
IFdvcmtsZXRHbG9iYWxTY29wZSB7CiAKICAgICAvLyBBbGwgcGFpbnQgZGVmaW5pdGlvbnMgbXVz
dCBiZSBkZXN0cm95ZWQgYmVmb3JlIHRoZSB2bSBpcyBkZXN0cm95ZWQsIGJlY2F1c2Ugb3RoZXJ3
aXNlIHRoZXkgd2lsbCBwb2ludCB0byBmcmVlZCBtZW1vcnkuCiAgICAgc3RydWN0IFBhaW50RGVm
aW5pdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYWludERlZmluaXRpb24+IHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBQYWludERlZmluaXRp
b24oY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSlNDOjpKU09iamVjdCogcGFpbnRDb25zdHJ1Y3Rv
ciwgUmVmPENTU1BhaW50Q2FsbGJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgaW5wdXRQcm9wZXJ0
aWVzLCBWZWN0b3I8U3RyaW5nPiYmIGlucHV0QXJndW1lbnRzKTsKIAogICAgICAgICBjb25zdCBB
dG9tU3RyaW5nIG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3Jz
LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgKaW5kZXggYjAyMWNjZTE1M2MzMTky
OTUwYTJiZjc3ZDgwOWEyODQ3YWIwZjBjMS4uYTYzMjdiOWRmZjFiNzZiYjU4MmM2MzYwMzgxNTI0
MjhjNzFhYTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3MgWE1MRXJyb3JzIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBYTUxFcnJv
cnMoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGI5MzEwMWI4YWFjNDgzOWEzOWJiNTRi
MmI4OWRlODk4Yzc5Yjc1YWIuLjEwMzIwMDdiNmViMTNlY2RhYTViY2I5ZTQ4MmFkM2E2OGUxMjIz
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKQEAgLTE5Nyw2ICsxOTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJh
Y2tzIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGVuZGluZ0NhbGxiYWNrIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICB2aXJ0dWFsIH5QZW5kaW5n
Q2FsbGJhY2soKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsKFhNTERvY3Vt
ZW50UGFyc2VyKiBwYXJzZXIpID0gMDsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vz
c2lvbkhvc3RHbGliLmNwcAppbmRleCA3YTIwYjg5NDFhZmY3MmE4NTJiNzZmNWM1NTEwNjI2NTQ3
NzRhMWNjLi5jOGYwYTBlYzdiMGEwNjYxMmNhNjczOGQwMDJhMTNkMGY0M2MxMmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcApAQCAtMTEzLDYgKzExMyw3IEBA
IGJvb2wgU2Vzc2lvbkhvc3Q6OmlzQ29ubmVjdGVkKCkgY29uc3QKIH0KIAogc3RydWN0IENvbm5l
Y3RUb0Jyb3dzZXJBc3luY0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICBDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhKFNlc3Npb25Ib3N0KiBzZXNzaW9uSG9z
dCwgR1VuaXF1ZVB0cjxjaGFyPiYmIGRidXNBZGRyZXNzLCBHQ2FuY2VsbGFibGUqIGNhbmNlbGxh
YmxlLCBGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKICAgICAgICAgOiBzZXNzaW9uSG9zdChzZXNzaW9uSG9zdCkKICAgICAgICAgLCBk
YnVzQWRkcmVzcyhXVEZNb3ZlKGRidXNBZGRyZXNzKSkKQEAgLTM3MSw2ICszNzIsNyBAQCB2b2lk
IFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQodWludDY0X3QgY29ubmVjdGlvbklE
LCB1aW50NjRfdCB0YXJnZXRJRAogfQogCiBzdHJ1Y3QgTWVzc2FnZUNvbnRleHQgeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBsb25nIG1lc3NhZ2VJRDsKICAgICBT
ZXNzaW9uSG9zdCogaG9zdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCmluZGV4IGI2MmYxMmUxODJmMjFl
YjhkNTEwNzRjYjI1NGQ3YjIxMmUwY2VkMTkuLmI0NDVlN2E2NWE0OGQwNzQ4YmQ3ZTkyMDVhMzQ0
MGY3ZjFhOTU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyPiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCmluZGV4IDRjMDMzZTM1M2Q0ZjMw
OGY3Zjc2MDAxMmNhOTYyOTYzMDNjMTA3MzAuLjcxZjM0YmZhM2Q2YzJiNTI3NjE2ODk0NGVlMzM0
YzczZGFmNTAzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogCiAvLyBDYW4gb25seSBiZSBjb25zdHJ1Y3RlZCAv
IGRlc3Ryb3llZCAvIHVzZWQgZnJvbSB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
J3Mgc3RhdGlzdGljIHF1ZXVlLgogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmLCBXb3JrUXVldWUmLCBjb25zdCBTdHJpbmcmIHN0b3Jh
Z2VEaXJlY3RvcnlQYXRoKTsKICAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXgg
MjA5NDVkYTA5OGE2ODBhMGE0ZTk5NzdmZDc1MjQ3MGY2NzhkOTk1Zi4uZmRiOTJiNDU1ZDk3NDlm
NDZiNTAyYTI2MjVkYTNkZGVhYjFhODNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaApAQCAtNzgsNiArNzgsNyBAQCBlbnVtIGNsYXNzIE9wZXJhdGluZ0RhdGVz
V2luZG93IDogYm9vbCB7IExvbmcsIFNob3J0IH07CiAKIC8vIFRoaXMgaXMgYWx3YXlzIGNvbnN0
cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB1c2luZyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAg
ICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tp
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmgKaW5kZXggNjA1YWVmM2U2ZWU5NTBmMzk0ODNmY2Q4Y2M0ZDhlNjU4ZTAyY2Yw
Yy4uYmJlMzk4NDc1MmJlMTQ2MDUwZDUwMzU3MTM3MTU1MGZiMmNiNjNhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1By
b2Nlc3M7CiAKIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXIgOiBwdWJsaWMgTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvb2tpZU1hbmFnZXIp
OwogcHVibGljOgogICAgIFdlYkNvb2tpZU1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggZGM3OWVl
YmNmMThkYmY2N2I0NjRjMzU4NjEwZmIzY2U3Y2ZlOTBjYy4uZjkwZjBmY2I0MTkwMjRiOGE5NWY1
NzcwYzliNzk5N2I1Nzg0YjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyLmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgTmV0d29ya1Byb2Nlc3M7
CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIExlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlciA6IHB1YmxpYyBOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQs
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIoTmV0
d29ya1Byb2Nlc3MmKTsKQEAgLTc4LDYgKzc5LDcgQEAgY2xhc3MgTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzoK
ICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgIHN0cnVjdCBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0
YSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgV2Vi
U291cFJlcXVlc3RBc3luY0RhdGEoR1JlZlB0cjxHVGFzaz4mJiwgV2ViS2l0U291cFJlcXVlc3RH
ZW5lcmljKik7CiAgICAgICAgIH5XZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmgKaW5kZXggZGNkNDZhNjAxYmU2MzA5ODZmYzJhZTBjMWM5NjU1OGM5NTkyMjA4YS4u
NTFkMjAzMTRlYWE0OWU5NmE0MWE1N2NlOGQ0MjIyNmJiZmIwNzIzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7
CiAgICAgfk5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGZiZThlNjhhZmU4MjhlODVm
MDU5MDEzZTY3MWQxZjBkN2M0OWQ5MGYuLmM3NzY3ZDJjZWVkNzFhMDA0MWU2MGY5YWNhOGJiOGQy
MjE3MjYzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCkBAIC0yNTc2LDYgKzI1NzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1
ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50Twog
fQogCiBjbGFzcyBRdW90YVVzZXJJbml0aWFsaXplciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpT
dG9yYWdlUXVvdGFVc2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBRdW90YVVzZXJJbml0aWFsaXplcihTdG9yYWdlUXVvdGFNYW5hZ2VyJiBt
YW5hZ2VyKQogICAgICAgICA6IG1fbWFuYWdlcihtYWtlV2Vha1B0cihtYW5hZ2VyKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCA2ODQ5YjMw
ZjhkNDZjOTU3NGNhZWQxNDE0NTYyZGVlNTc0Yjk5YmYwLi5mM2UxYzA2Y2MzNmYxZmFkOWNkMWYy
NWRjYTZlMjkzMWZhMTE0YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIENhY2hlOwogfQogCiBjbGFz
cyBOZXR3b3JrU2Vzc2lvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYsIE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZpcnR1YWwgfk5ldHdvcmtTZXNz
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
b2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2Nr
ZXRDaGFubmVsLmgKaW5kZXggNjcyYjM3ODFhNGQ0YTM0YjljMWUxZTI0MTViZDQ5MTBlNzc5ZWQ3
MS4uOWRmOWFhY2RjYjMzMmUwNDFkYjY5YmQwNjgxMDIyOWNmOGJiNGU5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuaApAQCAt
NDgsNiArNDgsNyBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtTZXNzaW9u
OwogCiBjbGFzcyBOZXR3b3JrU29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0
Q2hhbm5lbD4gY3JlYXRlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IDNhNTlmZmE2YTFhMDhkNjNkZTViZmY1OWUzZjY5
NDZmMGU0MDhlYjQuLjA0Nzk5MjA4OTZkYTI1N2ZjNTg2NDUxNjBjMDAwOWQxNjRjZTVmZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCkBAIC0zNCw2
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU29ja2V0VGFzayB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB1aW50NjRf
dCBUYXNrSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMTcxMGJhZTllNWE4ODUyNmNlZmEzYjM5YWE3
ODhmYWFmMmNmYTBlLi5hMjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBQcmVmZXRjaENhY2hlIHsKICAgICB2b2lkIGNs
ZWFyKCk7CiAKICAgICBzdHJ1Y3QgRW50cnkgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tD
b2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9XZWJTb2NrZXRUYXNr
Q29jb2EuaAppbmRleCA5MzdlMjg3MzJiZTU3NDMyNjE2OWQ4NTRkZjY0YzE1MTNlMmI2OGEzLi5m
NmNkN2E5MjhiOTczODgxNmMzODlhOTU3YzhhOTFkZThjMjViMjczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL1dlYlNvY2tldFRhc2tDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvV2ViU29ja2V0VGFza0NvY29hLmgK
QEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb247CiBjbGFzcyBOZXR3b3JrU29j
a2V0Q2hhbm5lbDsKIAogY2xhc3MgV2ViU29ja2V0VGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxXZWJTb2NrZXRUYXNrPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIFJldGFpblB0cjxOU1VS
TFNlc3Npb25XZWJTb2NrZXRUYXNrPiYmKTsKICAgICB+V2ViU29ja2V0VGFzaygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0
SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktp
dFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCmluZGV4IDZkZGM4MWEzNmQ4NDljYmMyODM3OTNi
NjE3MDY3YTI3ZTI5ZDkxZjAuLmZjYWIwOGZjMWJkOGUzMzgyM2JmZTc0YzdmZDk3NjkwZjU4NjRj
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIHN0cnVjdCBBc3luY1JlYWRE
YXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgQXN5bmNSZWFk
RGF0YShHUmVmUHRyPEdUYXNrPiYmIHRhc2ssIHZvaWQqIGJ1ZmZlciwgZ3NpemUgY291bnQpCiAg
ICAgICAgIDogdGFzayhXVEZNb3ZlKHRhc2spKQogICAgICAgICAsIGJ1ZmZlcihidWZmZXIpCkBA
IC0zOSw2ICs0MCw3IEBAIHN0cnVjdCBBc3luY1JlYWREYXRhIHsKIH07CiAKIHN0cnVjdCBfV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVByaXZhdGUgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICB1aW50NjRfdCBjb250ZW50TGVuZ3RoOwogICAgIHVpbnQ2NF90
IGJ5dGVzUmVjZWl2ZWQ7CiAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAppbmRleCBk
YTg3NjExMDY0ODFmOTZhOWQ2YTAwMDE4NGNjZDI0MDdiMWYyNjUwLi41ZWY3YjQ4ZTQyMDgzOWVl
ZjgwMDgxMWIwZDk3NDBmNDRlMDFmMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuaApAQCAtMzYsNiArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtTb2NrZXRDaGFubmVsOwogCiBjbGFzcyBX
ZWJTb2NrZXRUYXNrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiwgU291cFNlc3Npb24qLCBTb3Vw
TWVzc2FnZSosIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIH5XZWJTb2NrZXRUYXNrKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ1NvY2tldENsaWVudC5oCmluZGV4IDhmMjA1Y2UwMjk3MTNkOGJhMjEzZjE0M2JhNzFi
YjExNDc1MmRlZjUuLjIyYWJkZWM2OWRiMjQ1YTRjZjk4M2YyNDdiMzhmNzJkOTAwYTZmNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xpYldlYlJUQ1Nv
Y2tldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL0xp
YldlYlJUQ1NvY2tldENsaWVudC5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgTmV0d29ya1JUQ1Byb3ZpZGVyOwogCiBjbGFzcyBMaWJXZWJSVENTb2NrZXRDbGll
bnQgZmluYWwgOiBwdWJsaWMgc2lnc2xvdDo6aGFzX3Nsb3RzPD4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IFVEUCwgU2VydmVy
VENQLCBDbGllbnRUQ1AsIFNlcnZlckNvbm5lY3Rpb25UQ1AgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVy
LmNwcAppbmRleCBlNzg2NTY4ZmY1MDVhN2I4NzE3ODcwZGY1N2ZhNTdkMTVmNWQ3NzYzLi5lZGI1
ZjUxZjBhNTM1MGNlNTU2YjllMjkyNDY5YjNiOWUwMzcxZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVy
LmNwcApAQCAtNjQsNiArNjQsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0
ZXJNRE5TTmFtZXMoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZQogfQogCiBzdHJ1
Y3QgUGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3QgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICBQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVzdChSZWY8SVBDOjpDb25u
ZWN0aW9uPiBjb25uZWN0aW9uLCB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU3RyaW5nJiYg
bmFtZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICA6IGNvbm5lY3Rpb24oV1RG
TW92ZShjb25uZWN0aW9uKSkKICAgICAgICAgLCByZXF1ZXN0SWRlbnRpZmllcihyZXF1ZXN0SWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL01vZHVsZS5oCmluZGV4IGRkMmI2NmE3Y2ExOTU5MWI2ZWU2
N2I4ZjI4NGZkMjU0YTM4Mjc4NWQuLjU2ODM3MjEzZGZiZWFlYjRkNTllOTNjM2Q0OWY2YzdhYzJm
NTM0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTW9kdWxlLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Nb2R1bGUuaApAQCAtNDQsNiArNDQsNyBAQCB0eXBlZGVm
IHN0cnVjdCBfR01vZHVsZSBHTW9kdWxlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE1v
ZHVsZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoTW9kdWxlKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBNb2R1bGUoY29uc3QgU3RyaW5n
JiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuaAppbmRleCA5N2UyZGYzNTNiMzY4MjM5MjlhMzFhZTk1N2ExZGRjZGMyMWMz
N2Q2Li5iOThjYTk0YmM5ZWZjMjNiMmVkODE4YTViNzg0MzM3MjMxN2U5YzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBA
IC00OSw3ICs0OSw4IEBAIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlByb2Nlc3ND
b25uZWN0aW9uOwogc3RydWN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKIAotY2xhc3MgUGx1
Z2luQ29udHJvbGxlclByb3h5IDogUGx1Z2luQ29udHJvbGxlciB7CitjbGFzcyBQbHVnaW5Db250
cm9sbGVyUHJveHkgOiBwdWJsaWMgUGx1Z2luQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGx1Z2luQ29udHJvbGxlclBy
b3h5KTsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggNWVkMTQzYTk5ODU5MDQ5
NmMzMzc2YTU2OTg4MTE1M2E2YTAyYjI4Yy4uZjMzY2FiMzA1ZmVlMTI3NGZhYTdiMjE4MzhlOWJi
N2VmNzZiYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC03Miw2ICs3Miw3IEBAIGNsYXNz
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5PgogICAgICwgcHVibGljIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0cnVjdCBDbGll
bnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFu
YWdlci5oCmluZGV4IDQwMzZlYWI3N2ZkOWNlMTU1NTMwZmI2YTRjYzU2MTY4M2Q3ZWQ5MWIuLjIz
NzczMTJkYTI3OTJiMWJjNjI5MmJjZWQyOTRhOWZhZGVlZWJlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFu
YWdlci5oCkBAIC01Niw2ICs1Niw3IEBAIGVudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbiA6IHVpbnQ4X3Q7CiB1c2luZyBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPjsKIAogY2xhc3MgQXV0aGVudGljYXRp
b25NYW5hZ2VyIDogcHVibGljIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXV0aGVudGljYXRpb25NYW5h
Z2VyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQXV0aGVudGljYXRpb25NYW5hZ2VyKTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCA3YjZkNTJiZTdm
MTVkYzdlOWEwNGFiZjIzYzliMDY4YjExZWYxNDMyLi5iMDAyMGVkZTQ3OGMxY2U1M2IxMDZlZWNj
ZmUyNjQzMDEyYTQ2ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
U2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC0zOCw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4
dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlIHR5cGUsIE9wdGlvbmFsPHBpZF90PiBwaWQgPSBXVEY6Om51bGxvcHQpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNl
aXZlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNl
aXZlci5oCmluZGV4IDFhMDU0NzUwN2VjMWMxYTgxMjQ3MmJiN2ViZDlmYTBkNGFkMTNhNDguLjA3
ZThiYmM5YjVjOWMzYzZjOWQ4ZDZjM2I5NDVlNTM5MzI3Yjg3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgKQEAg
LTM5LDYgKzM5LDcgQEAgY2xhc3MgTlBWYXJpYW50RGF0YTsKIGNsYXNzIFBsdWdpbjsKIAogY2xh
c3MgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyKTsKIAog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCBlYTJiZTkzMDhj
YmJlNmRkN2ViOGNmMmM1ODhjOGZmNjE5ZWE5OTNjLi45NTUxM2Y0Nzk4MmZkNjdlZTVmOThkZDc5
OTZjODU5OGYxZjQ2M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApAQCAt
NTEsNiArNTEsNyBAQCBjbGFzcyBFbmNvZGVyOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBlbnVtIExheWVyQ2hhbmdlIHsKICAgICAgICAgTmFtZUNoYW5nZWQg
ICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMSwKQEAgLTk0LDYgKzk1LDcgQEAgY2xhc3Mg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJD
cmVhdGlvblByb3BlcnRpZXMgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzKCk7CiAKICAgICAgICAgdm9pZCBl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CkBAIC0xMDksNiArMTExLDcgQEAgY2xhc3MgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24gewogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJQcm9w
ZXJ0aWVzIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBMYXllclByb3BlcnRpZXMoKTsKICAgICAgICAgTGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVy
UHJvcGVydGllcyYgb3RoZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXV0b21hdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF1dG9tYXRpb25DbGllbnQuaAppbmRleCAyOTk1ODEwOTVkZDFkMWIxNWFmZWFiYjRkYWNi
ZWQwNWQyYmRkMTE0Li41NDVhN2JlNGQ0ODE5NzEzMjhkMWMzZjc5ZDI3MWVkOWEyMWY4MzlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvbkNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uQ2xpZW50
LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgQXV0b21hdGlvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXV0b21hdGlvbkNsaWVudCgpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25D
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudC5oCmluZGV4IDI4ZmFmNjg3MTlhOWQ3MjhkNTFiNmM3NzJkODRlMTdiNjQ5MDk3Y2Eu
LjJhZTJhNTAzNGMzYTQxNzFjY2Y0NzdiOTc4NWI3M2E2ZjI0ZGI4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dC5oCkBAIC00MSw2ICs0MSw3IEBAIGVudW0gQXV0b21hdGlvblNlc3Npb25Ccm93c2luZ0NvbnRl
eHRPcHRpb25zIDogdWludDE2X3QgewogfTsKIAogY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGVudW0gY2xh
c3MgSmF2YVNjcmlwdERpYWxvZ1R5cGUgewogICAgICAgICBBbGVydCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggYWYxMDlj
MWRmNjcwMGRjMjNlMmUzMzFiMGI1MGVmYmNmZjQyODY2Ny4uODE2ZjcxZTEyNjcwY2IzZDY1YjFl
NjMyODAzYTZiNDBlZjdkYmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgV2ViUGFn
ZVByb3h5OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db250ZXh0
TWVudUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggMGY4Y2FiOTcz
MjlmMDk1N2YzMmI0N2MyNzc4MWQxZTc4NmZhMTQ3ZC4uOGI0NGEzZjQ1NmM1MzJhZDMzODA2ZWY2
OWI0N2VhZDA5NDFkZjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApAQCAtMzgsNiArMzgs
NyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQuaAppbmRleCA5MmIyZDY3NWRmY2EyY2FmZGEyMTFiM2Y3MWM1Nzk4YWZk
NDVkNjJhLi5iNGUyYWRlNzI5ZWE2NmQ4ZGRhOGRkNTAyMTE4YWU0YWJkYjIxODYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIERpY3Rp
b25hcnk7CiAKIGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9h
ZENsaWVudC5oCmluZGV4IDAyMzc2ZTFlMTEwZDQ3NmViMmI5MTg1ZTRlMmZjZDhkNmUxMzMyZTEu
LmIyZWFjYzliODMyNTk4YjE3YTk5ZGJkOWQ2N2VmMjRlNDczYWVkMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00Niw2ICs0Niw3
IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywgWWVzIH07CiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgRG93bmxvYWRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZENsaWVudC5oCmluZGV4IGYzMTIzYWYxOTUxNjVh
NjY5ZDY2NjgzMThiODEyZTkzMzY1ZTZkYzIuLjZkMWUzYjIxMWZlMGRkOTVhOTQ4NTA1ODQxN2Ri
NGRlMDgyNDBkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElG
aW5kQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZpbmRDbGll
bnQuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJ
IHsKIAogY2xhc3MgRmluZENsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+RmluZENsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRmluZE1hdGNoZXNDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCmluZGV4IGM2ZjQ1NzM0
MmQxMTE5MDFkY2E2ZDNjMzA5MDMzN2ZlZTdhMWZlYzIuLmZhZTFkY2QzY2Q2ODgzNTA3ZWZiZTNk
OTVkNWQ2ZjcyYTAzNjlkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElGaW5kTWF0Y2hlc0NsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RmluZE1hdGNo
ZXNDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUZvcm1DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGb3JtQ2xp
ZW50LmgKaW5kZXggNWIwYzZjY2EyNGVlZmMxYTk1ODE5MWUwZTI3OTRhNDdiNGY1NGU3Yy4uZjBj
YTA2MDExMTk4MDJlZDM2OWI0ZDA3OGQ4M2M4NjJhNTE2MTJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJRm9ybUNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFj
ZSBBUEkgewogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBGb3JtQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Gb3JtQ2xpZW50KCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVu
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnVsbHNjcmVlbkNsaWVu
dC5oCmluZGV4IDEzNzU1MjljZGEyNWYyNWNiYjE3OWJkYzg5ODkxNzFjODllZTg4NTcuLjg5NzRj
ZDEzMzk0Nzc1MDI3M2Y0NTBmMGU4Mzk2YzBlNmIxMzIwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGdWxsc2NyZWVuQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUZ1bGxzY3JlZW5DbGllbnQuaApAQCAtMzIsNiArMzIsNyBA
QCBjbGFzcyBXZWJQYWdlUHJveHk7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgRnVsbHNjcmVl
bkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51
bSBUeXBlIHsKICAgICAgICAgQVBJVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElHZW9sb2NhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJR2VvbG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDUyNjZiYzJjYTU0Y2YwOTlj
MjM4Y2FjYzYyMTQ0Yzk3OTlhMDk3OTcuLjdjNmY1NjI5Y2I2MGU1M2JjN2I4NWFhODg4OWY3MmU2
OGQ3YTRjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElHZW9s
b2NhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUdl
b2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMzQsNiArMzQsNyBAQCBjbGFzcyBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBHZW9sb2NhdGlvblByb3Zp
ZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5HZW9sb2NhdGlvblByb3ZpZGVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSGlzdG9yeUNsaWVudC5oCmluZGV4IGZjZjQ2MDYxZjZiZmE2ZGNiNzYwZTEyYzY2
MzNiNmI0NWYxNTZkZDQuLjExODRhYTQzMmMzYjlmZmNiMTVkYTVmODI4ZWY0YWM0ZjFhZGIxZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIaXN0b3J5Q2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhpc3RvcnlDbGllbnQuaApA
QCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZTsKIG5hbWVzcGFj
ZSBBUEkgewogCiBjbGFzcyBIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5IaXN0b3J5Q2xpZW50KCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJY29uRGF0YWJhc2VDbGllbnQuaApp
bmRleCBlYTllYmE1MGUxZWZlOGYwMzIxYzRkZmUzYTQ0NmYwZGNiYjVkOGM5Li5iZTQzYWVlYzU0
ZmYyZDRhYmI1YTI4ZmYzNjMxNDVjNDkwYzdlODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkRhdGFiYXNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUljb25EYXRhYmFzZUNsaWVudC5oCkBAIC0zNCw2ICszNCw3IEBA
IGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBJY29uRGF0
YWJhc2VDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgfkljb25EYXRhYmFzZUNsaWVudCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSWNvbkxvYWRpbmdDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElJY29uTG9hZGluZ0NsaWVudC5oCmluZGV4IDZmOWU3YWY5Yzk4
MDkyMzNiNmE1NjVlYzNlMzgwYmUwYWFjZDU2N2UuLjJmZTM4NjI1OTQ2M2JmYjM2MjNlYmJkYjRm
ZWY1ZjgzOTM2YjBkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJY29uTG9hZGluZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJY29uTG9hZGluZ0NsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIERhdGFSZWZlcmVu
Y2U7CiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkljb25Mb2FkaW5n
Q2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUluamVjdGVkQnVuZGxlQ2xpZW50LmgKaW5kZXggYzM1ZTdiM2FlNDkzZDlhYzYzY2IzYTRiNTgx
ZmUzMmZjYjQwYWNlOC4uOWQ0MzQ4OWEyZDYyNTdjYjBjYWY5MjJiM2ZiMDkzMjk1Y2U5YmI5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVuZGxl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluamVjdGVkQnVu
ZGxlQ2xpZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBuYW1l
c3BhY2UgQVBJIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ2xp
ZW50KCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCmluZGV4IGNiYjllMGE5NzE0
NWJkMTdkZGVmOGUwYmIxNGFmOGMzNzZkZmIzODguLmRiNWQ5MGMzMWY5Mjc2OWQzMDNhMDFhZDc4
YmRhN2ZiZDFhNGQwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oCkBAIC0zOCw2ICszOCw3IEBA
IHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNz
IExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudCgpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKaW5k
ZXggMzQ4ZDZiZjc3MjkyNzJlOGYyYWJhZWMzNzU1YzIwZGU1NDJkNjQ1ZC4uYjJlYTQxZDllMmYy
ZTgxZTJjOWViM2I4Nzc5MWZjM2VmOGMzZjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBOYXZpZ2F0
aW9uOwogY2xhc3MgT2JqZWN0OwogCiBjbGFzcyBMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkxvYWRlckNsaWVudCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9u
KiwgQVBJOjpPYmplY3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IGE2ZTAxOWNjNDUxODYzYTQxYWNmYzhiZWE3YmYz
MDI4OTZiMWJiNzMuLmNkMjJhMjY3NjQ2OGQxODIzNGE2MDg0MmZlOWQ5MTY3MWIyMGE4N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aApAQCAtNzMsNiArNzMsNyBAQCBjbGFzcyBOYXZpZ2F0aW9uUmVzcG9uc2U7CiBjbGFzcyBPYmpl
Y3Q7CiAKIGNsYXNzIE5hdmlnYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfk5hdmlnYXRpb25DbGllbnQoKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCmluZGV4IDVlYmU0
NDA3NDJhNzY1NDFiMWQ5Y2NmMjk5NWM5YTk1ZmU4NGQ1YWQuLjZhZThlNzUyMDVmZmZjODY1MmY0
ZjliODNiYjNkZTMwZWU2Y2ZhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUG9saWN5Q2xpZW50LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFz
cyBPYmplY3Q7CiAKIGNsYXNzIFBvbGljeUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9saWN5Q2xpZW50KCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggZDlkZDBkYjQ2NjM3NzIy
YjYwMmIyMGRkZGY2NzM4MTM1ZjY0NmY2Mi4uNzcyZGE2ZTVhODY5NzdlYzhhZTJkYzA3NTQyZDhm
Y2YxZTE0OTYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJ
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgK
QEAgLTcxLDYgKzcxLDcgQEAgY2xhc3MgT3BlblBhbmVsUGFyYW1ldGVyczsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogCiBjbGFzcyBVSUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlDbGllbnQoKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNDdlYzcyNmIwY2U0NDA1N2YwMDJiNTQw
YmVhNzY4ZTQzYjEwYThkNC4uMzlkNmI0MjE0OWZhYjA2MWNlNGRkZmU1YjFjMTdlMjk4MWZkZmMz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yMjkzLDE2
MiArMjI5MywxNjQgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICB3ZWJQYWdlUHJveHkt
PnNldE5hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxOYXZpZ2F0aW9uQ2xpZW50Pih3a0Ns
aWVudCkpOwogfQogCi12b2lkIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFn
ZSwgV0tQYWdlU3RhdGVDbGllbnRCYXNlKiBjbGllbnQpCi17Ci0gICAgY2xhc3MgU3RhdGVDbGll
bnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwgcHVi
bGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxp
Y2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7Ci0gICAgICAgIH0KLSAgICBw
cml2YXRlOgotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VJc0xvYWRpbmcpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlz
TG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CitjbGFzcyBTdGF0
ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+
LCBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFN0YXRlQ2xpZW50KGNvbnN0IFdLUGFnZVN0
YXRlQ2xpZW50QmFzZSogY2xpZW50KQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQp
OworICAgIH0KK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUlzTG9hZGluZyht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5n
ZUlzTG9hZGluZygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQuZGlkQ2hhbmdlSXNMb2FkaW5nKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VJc0xvYWRpbmcpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUlzTG9hZGluZyhtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZSgp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5n
ZVRpdGxlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50Lndp
bGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAg
dm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2Ns
aWVudC53aWxsQ2hhbmdlVGl0bGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xp
ZW50LndpbGxDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAot
ICAgICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVRpdGxlKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VUaXRsZShtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwo
KSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFu
Z2VBY3RpdmVVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUFjdGl2ZVVSTCgpIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQWN0
aXZlVVJMKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Cisg
ICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRDaGFuZ2VBY3RpdmVVUkwpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1fY2xpZW50LmRpZENoYW5nZUFjdGl2ZVVSTChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5n
ZUhhc09ubHlTZWN1cmVDb250ZW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25seVNlY3Vy
ZUNvbnRlbnQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlSGFzT25seVNlY3VyZUNvbnRlbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LndpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlTZWN1cmVDb250
ZW50KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRD
aGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2Vj
dXJlQ29udGVudCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENo
YW5nZUhhc09ubHlTZWN1cmVDb250ZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBt
X2NsaWVudC5kaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudChtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVz
cygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbENo
YW5nZUVzdGltYXRlZFByb2dyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fY2xpZW50LndpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jl
c3MoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlRXN0
aW1hdGVkUHJvZ3Jlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50Lndp
bGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
IH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQ
cm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5k
aWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VFc3RpbWF0ZWRQ
cm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lk
IHdpbGxDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDYW5Hb0JhY2spCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvQmFj
aykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdv
QmFjayhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRp
ZENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29CYWNrKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDYW5Hb0JhY2spCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvQmFjayhtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VD
YW5Hb0ZvcndhcmQoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LndpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNhbkdvRm9y
d2FyZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNh
bkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2
b2lkIGRpZENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2FuR29Gb3J3YXJkKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNhbkdvRm9yd2FyZChtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5H
b0ZvcndhcmQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFu
Z2VDYW5Hb0ZvcndhcmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fY2xpZW50LmRp
ZENoYW5nZUNhbkdvRm9yd2FyZChtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAot
ICAgICAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJp
ZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29y
a1JlcXVlc3RzSW5Qcm9ncmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlTmV0d29ya1Jl
cXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50
LndpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5n
ZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlTmV0
d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9CisgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3Rz
SW5Qcm9ncmVzcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hh
bmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlk
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxDaGFuZ2VDZXJ0aWZp
Y2F0ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQu
d2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGlmICghbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRlSW5mbykKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQud2lsbENoYW5nZUNlcnRpZmljYXRl
SW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRp
ZENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyht
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBkaWRDaGFuZ2VD
ZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
Y2xpZW50LmRpZENoYW5nZUNlcnRpZmljYXRlSW5mbyhtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgIH0KIAotICAgICAgICB2b2lkIHdpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZl
KCkgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsQ2hh
bmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJv
Y2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIW1fY2xpZW50
LndpbGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX2NsaWVudC53aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZShtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRpZENoYW5nZVdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZENoYW5nZVdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVz
cG9uc2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9CisgICAgdm9pZCBk
aWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IGlmICghbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9jbGllbnQuZGlkQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9u
c2l2ZShtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIH0KIAotICAgICAgICB2b2lkIGRp
ZFN3YXBXZWJQcm9jZXNzZXMoKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZFN3YXBXZWJQcm9jZXNzZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkU3dhcFdlYlByb2Nlc3NlcyhtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgICAgICB9Ci0gICAgfTsKKyAgICB2b2lkIGRpZFN3YXBXZWJQcm9jZXNz
ZXMoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTd2FwV2ViUHJv
Y2Vzc2VzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2NsaWVudC5kaWRTd2FwV2Vi
UHJvY2Vzc2VzKG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgfQorfTsKKwordm9pZCBX
S1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50
QmFzZSogY2xpZW50KQorewogICAgIGlmIChjbGllbnQpCiAgICAgICAgIHRvSW1wbChwYWdlKS0+
c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6bWFrZV91bmlxdWU8U3RhdGVDbGllbnQ+KGNs
aWVudCkpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA4YjZkZjI0Zjg5
NTJkODRmNjA3NTQ0YzZhMzFhMmRkMWI4YWEzNTVkLi45YmI3NWM3YTIxMTczYjlmNzAxZDYyNjM0
N2U2NzkyNTMyNGFiZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0xMTgsNiArMTE4
LDcgQEAgLSAodm9pZClyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzCiB9CiAKIGNsYXNzIFNjcmlw
dE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlKFdLVXNlckNvbnRlbnRDb250
cm9sbGVyICpjb250cm9sbGVyLCBpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciwg
TlNTdHJpbmcgKm5hbWUpCiAgICAgICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggYjM3YjA1MDUz
ZjEyNGFjYjcwZmQ2YWRlNmRmNDIwZmU4MjVkNTRjZi4uOGMyMTMzMzBlYjBlZDM5YzVmMTJkNWJj
NmFkYTVmYjgxM2JkZGNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlci5tbQpAQCAtMzgsNiArMzgsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgX1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgZmluYWwgOiBwdWJsaWMgUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIF9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50KF9XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyICpjb250cm9sbGVyKQogICAgICAgICA6IG1fY29u
dHJvbGxlcihjb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuaAppbmRleCBiYWJkOGE5ODI5ZmI4MGQxOTg1MmVjOTc0YWVlYTcwY2Vl
MGI5MTU4Li44YThjYWJiZDUzYzFlNjVmNzBhZGQwODVkNGY1NWVhMzEwMTE2MDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuaApAQCAtNDQs
NiArNDQsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgSWNvbkRhdGFiYXNlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JY29uRGF0YWJhc2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKQEAg
LTU4LDYgKzU5LDcgQEAgY2xhc3MgSWNvbkRhdGFiYXNlIHsKIAogcHJpdmF0ZToKICAgICBjbGFz
cyBJY29uU25hcHNob3QgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIEljb25TbmFwc2hvdCgpID0gZGVmYXVsdDsKIApAQCAtMTE4LDYgKzEy
MCw3IEBAIGNsYXNzIEljb25EYXRhYmFzZSB7CiAgICAgfTsKIAogICAgIGNsYXNzIFBhZ2VVUkxT
bmFwc2hvdCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoK
ICAgICAgICAgUGFnZVVSTFNuYXBzaG90KCkgPSBkZWZhdWx0OwogCkBAIC0xNzIsNiArMTc1LDcg
QEAgY2xhc3MgSWNvbkRhdGFiYXNlIHsKICAgICB9OwogCiAgICAgY2xhc3MgTWFpblRocmVhZE5v
dGlmaWVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgog
ICAgICAgICBNYWluVGhyZWFkTm90aWZpZXIoKQogICAgICAgICAgICAgOiBtX3RpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJk1haW5UaHJlYWROb3RpZmllcjo6dGltZXJGaXJlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25T
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9t
YXRpb25TZXNzaW9uLmNwcAppbmRleCBkMmFmNjRiYWQ4NmE4YTMzZjEzMzU0NzI1ODFiNzAyZTQx
YTY3ZWMyLi41OGNkMDNjMzNlMjgwNzhkYmExNTc4MmIxZGE3NWJjYjRhMzI3NDg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0
b21hdGlvblNlc3Npb24uY3BwCkBAIC03MCw2ICs3MCw3IEBAIHN0YXRpYyBndWludCBzaWduYWxz
W0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbiwgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbiwgR19UWVBFX09CSkVDVCkKIAog
Y2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoV2ViS2l0QXV0b21hdGlvblNl
c3Npb24qIHNlc3Npb24pCiAgICAgICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGlu
Z0NsaWVudC5jcHAKaW5kZXggYjhmMDFmYjI0ZmYyNzY1NGMwYWQ2MDlhZGQzMjQxOTVlZTQxY2E1
OS4uZjNmN2ZmYmYzMmM0OTFmYTE0Mjg5NTc1NDEwNjhjNTdhZjAwN2YwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2Fk
aW5nQ2xpZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQgOiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
SWNvbkxvYWRpbmdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICAgICAgOiBtX3dl
YlZpZXcod2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IDllNThiY2IwYjFh
YjMzZmFhZDk3ZmNmODU5ODEyN2U2MTBhMTIzMzYuLjM2Yjc4MzQzODgwZDk2MDMwZTcyZmZhYTE1
Mzc0OGVlNWIxZTNhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMzIsNiArMzIs
NyBAQCBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNz
IFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkqLCBXZWJLaXRXZWJDb250ZXh0Kik7CiAgICAgfldlYktpdE5vdGlmaWNh
dGlvblByb3ZpZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA0OGIzOGVhYzA4
ZDkxMmM5NjM5ZWY1NTA5NGIxMGYxZmZhZDFkOWY5Li40ZmY0YWIzZmFkYWE4MWM1ODE3NzdhNjlk
MDQ5YzM5YmQxOTZjZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKQEAgLTE4Miw2ICsx
ODIsNyBAQCB2b2lkIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZW1vdmVfYWxsX3Njcmlw
dHMoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtYQogfQogCiBjbGFzcyBTY3JpcHRNZXNzYWdl
Q2xpZW50R3RrIGZpbmFsIDogcHVibGljIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3Nh
Z2VDbGllbnRHdGsoV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBjaGFy
KiBoYW5kbGVyTmFtZSkKICAgICAgICAgOiBtX2hhbmRsZXJOYW1lKGdfcXVhcmtfZnJvbV9zdHJp
bmcoaGFuZGxlck5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBhZDgzZGI4MjNkMzdkMjBmNTEzYjAxMjNj
ZTI3NGEyYmJmNDcxNzgyLi41OTRkMWJiY2E4NGIzZDZjNzE1NDIxZjA4ZjIzYWZhZmY4OGViYjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtMTk4LDYgKzE5OCw3IEBAIHN0YXRpYyBndWludCBzaWduYWxzW0xB
U1RfU0lHTkFMXSA9IHsgMCwgfTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogY2xh
c3MgV2ViS2l0QXV0b21hdGlvbkNsaWVudCBmaW5hbCA6IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yOjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFdlYktpdEF1dG9tYXRpb25DbGllbnQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCkKICAgICAgICAgOiBtX3dlYkNvbnRleHQoY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYjIzOWFjNGUxOWU2
M2QzM2E4NjlkZWZiNjZmYzNjMGI0NTAwYjc4NS4uODFmMDJlNGM5NjNmMGNmODFiNDdkYjYyODg2
MDg5N2Q4NDNkNjNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIwMSw2ICsyMDEsNyBAQCBjbGFzcyBQYWdlTG9hZFN0
YXRlT2JzZXJ2ZXI7CiAjaWYgUExBVEZPUk0oV1BFKQogc3RhdGljIHVuc2lnbmVkIGZyYW1lRGlz
cGxheUNhbGxiYWNrSUQ7CiBzdHJ1Y3QgRnJhbWVEaXNwbGF5ZWRDYWxsYmFjayB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEZyYW1lRGlzcGxheWVkQ2FsbGJhY2so
V2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEg
PSBudWxscHRyLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5RnVuY3Rpb24gPSBudWxscHRy
KQogICAgICAgICA6IGlkKCsrZnJhbWVEaXNwbGF5Q2FsbGJhY2tJRCkKICAgICAgICAgLCBjYWxs
YmFjayhjYWxsYmFjaykKQEAgLTIyNyw2ICsyMjgsNyBAQCBzdHJ1Y3QgRnJhbWVEaXNwbGF5ZWRD
YWxsYmFjayB7CiAjZW5kaWYgLy8gUExBVEZPUk0oV1BFKQogCiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgfl9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZSgpCiAgICAgewogICAgICAgICAvLyBGb3IgbW9kYWwgZGlhbG9n
cywgbWFrZSBzdXJlIHRoZSBtYWluIGxvb3AgaXMgc3RvcHBlZCB3aGVuIGZpbmFsaXppbmcgdGhl
IHdlYlZpZXcuCkBAIC0zMjYsNiArMzI4LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5n
QXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB9CiAKIGNsYXNzIFBhZ2VMb2Fk
U3RhdGVPYnNlcnZlciBmaW5hbCA6IHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUGFnZUxvYWRTdGF0ZU9i
c2VydmVyKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZp
ZXcpCkBAIC0zOTksNiArNDAyLDcgQEAgY2xhc3MgUGFnZUxvYWRTdGF0ZU9ic2VydmVyIGZpbmFs
IDogcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKIAogI2lmIFBMQVRGT1JNKFdQRSkK
IGNsYXNzIFdlYlZpZXdDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpWaWV3Q2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJWaWV3
Q2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDogbV93ZWJWaWV3KHdlYlZp
ZXcpCkBAIC0zNzAxLDYgKzM3MDUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfY2FuX3No
b3dfbWltZV90eXBlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqCiB9CiAKIHN0
cnVjdCBWaWV3U2F2ZUFzeW5jRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFJlZlB0cjxBUEk6OkRhdGE+IHdlYkRhdGE7CiAgICAgR1JlZlB0cjxHRmlsZT4g
ZmlsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAK
aW5kZXggMGY2NzQ4NjQ1MmNkMWZhODdhODI4NjJlN2U2MDU3MzRkZmMzNTk2OC4uZjljNWE3NTFm
ZWFlMWNjMTVkYjEyZjIzOWM3NzUxMjU4YmQyZDMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjbGFzcyBTY3JpcHRNZXNzYWdlQ2xp
ZW50IGZpbmFsIDogcHVibGljIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpDbGllbnQgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcmlwdE1lc3NhZ2VDbGll
bnQoUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyJiBpbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXIpCiAgICAgICAgIDogbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIoaW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJJbnNwZWN0b3IuY3BwCmluZGV4IDBmMDE3MTFlNzk2MWU4YjAwYzVlNTc0ZDI4ODUw
ZDA1YjI0MWY2ZWMuLmJjYWI4ZDViNDRiZjJmMWQ5ZWQ5N2E0MzNjYTIxZDllOTdkYzg4MjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYklu
c3BlY3Rvci5jcHAKQEAgLTI4NCw2ICsyODQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2lu
c3BlY3Rvcl9jbGFzc19pbml0KFdlYktpdFdlYkluc3BlY3RvckNsYXNzKiBmaW5kQ2xhc3MpCiB9
CiAKIGNsYXNzIFdlYktpdEluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJJbnNwZWN0
b3JQcm94eUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgV2ViS2l0SW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYkluc3BlY3RvciogaW5z
cGVjdG9yKQogICAgICAgICA6IG1faW5zcGVjdG9yKGluc3BlY3RvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggMmNhYjJlMDUzODZkNDJiMzcxZjQ0MDZh
YjcxYTdmNjU5MzBmN2Q3Ny4uMGJhNTA4ODg2MDQ5NTdlMjVkZmJlYWM0NjY1ZmIxNzgyYTQyMDY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTg5NSw2
ICs4OTUsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiB7CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBjbGFzcyBJY29uTG9hZGlu
Z0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsKKyAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBJY29uTG9h
ZGluZ0NsaWVudChXS1ZpZXcgKndrVmlldykKICAgICAgICAgICAgIDogbV93a1ZpZXcod2tWaWV3
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9BUElWaWV3Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaApp
bmRleCAyMTk5MWY4ZGFmMzFiNDFiMTU2NWZmZjk4NjVkZTk5MzhmYjhhMGRmLi42NGNhMmZjYjVh
ODUxMjdmNWI0MTQ3MWVjZTZlYThmNDQ2Y2UwNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL0FQSVZpZXdDbGllbnQuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBW
aWV3OwogbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFZpZXdDbGllbnQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflZpZXdDbGllbnQoKSA9IGRl
ZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Ny
b2xsR2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaAppbmRleCA5YzlmNmU5ZTNiMThiNDJmNTNmNzJmOGVi
NTVhNGU2NzU1ZGI0N2EyLi4zZjYzMjUxMjFkODI4ZTM1OGFkMTViNzZjNGQ1Y2RjNDgzNzVkYzEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1
cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3Jv
bGxHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0zMCw2ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFNjcm9sbEdlc3R1cmVDb250cm9sbGVyKCkgPSBkZWZh
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0
YXRlVHJhY2tlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRy
YWNrZXIuaAppbmRleCA0MjA4ZThmMjJlMGFhNGVkZDg1YjUyMjU5MDRjMmRjNDk5YjA1ZTk2Li45
NDkzN2IwMDE5NDYyNTM2MmY2NDRjYTc3MDUwOGQwZGFhNjc0MzFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmgKQEAgLTM4LDYgKzM4
LDcgQEAgT0JKQ19DTEFTUyBVSVZpZXc7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXBw
bGljYXRpb25TdGF0ZVRyYWNrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QXBwbGljYXRpb25T
dGF0ZVRyYWNrZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBBcHBsaWNhdGlvblN0YXRlVHJhY2tlcihVSVZpZXcgKiwgU0VMIGRpZEVudGVyQmFja2dyb3Vu
ZFNlbGVjdG9yLCBTRUwgZGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91
bmRTZWxlY3RvciwgU0VMIHdpbGxFbnRlckZvcmVncm91bmRTZWxlY3Rvcik7CiAgICAgfkFwcGxp
Y2F0aW9uU3RhdGVUcmFja2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCAxMGE4ZTQyNDEzYjI5YWZm
YjYzNzdkODRhMDliZTUxMWJkMjUxZDVjLi5kZTQwZmM4ZjMxNzY5NzViMTUyYzRlZmFhNDAxNTdj
OTRmMmZhOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBB
UEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudChpZCA8X1dL
QXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZT4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLmgKaW5kZXggYjAxMWRkM2E3MjM5NzMy
MDVjYzZkZjRjYzY2YTY3OTA2YzAyOWIwZC4uMDc0Mzc5MDRmMWU0MjMwYjMxNTgyYTlkZjQyYzIz
YzE0ZDYwNWFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0lj
b25Mb2FkaW5nRGVsZWdhdGUuaApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIEljb25Mb2FkaW5nRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEljb25Mb2FkaW5nRGVsZWdhdGUoV0tXZWJWaWV3
ICopOwogICAgIH5JY29uTG9hZGluZ0RlbGVnYXRlKCk7CkBAIC00OCw2ICs0OSw3IEBAIGNsYXNz
IEljb25Mb2FkaW5nRGVsZWdhdGUgewogCiBwcml2YXRlOgogICAgIGNsYXNzIEljb25Mb2FkaW5n
Q2xpZW50IDogcHVibGljIEFQSTo6SWNvbkxvYWRpbmdDbGllbnQgeworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGV4cGxpY2l0IEljb25Mb2Fk
aW5nQ2xpZW50KEljb25Mb2FkaW5nRGVsZWdhdGUmKTsKICAgICAgICAgfkljb25Mb2FkaW5nQ2xp
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDQ4YzJiMmI0ZTA2MTA2OTI3
MmFlYjhiOTRhMjM0ZWFhOTI2YWY3NmQuLmE4MTNmNTUxN2RmMWVlNTkzMWYzMjUzMjRhYmI4MGM5
Y2UzYTUzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJN
ZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC00NSw2ICs0NSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OlNvdXJjZVByb3h5IDogcHVibGljIFJlYWx0aW1l
TWVkaWFTb3VyY2U6Ok9ic2VydmVyLCBwdWJsaWMgU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U6OkNs
aWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU291cmNl
UHJveHkodWludDY0X3QgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgUmVm
PFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlKQogICAgICAgICA6IG1faWQoaWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5LmgKaW5kZXggOWNhNmZhMzUzNDk2MDE4MDNkZjVkM2QxYjJhYmEzMTY1
NTc0MGMzOS4uOWJkZGI5OTA5ZGY3ZThmZWYxZTU0ODA2Y2JlNmJjNWM0MGNmYzU4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBTaGFyZWRNZW1vcnk7
CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5KFdlYlByb2Nlc3NQcm94eSYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXgg
M2RlZjVkNzlmMDdjYjkxNDBiODI1NjJkYjlmNmYyYmM2ZDBmNzJmNi4uNTYwNmM1MTE2NTM0ZjQz
Y2ZjODA2ZDUxMWQ0MWVkOThjZmIyNTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBj
bGFzcyBXZWJQcm9jZXNzUHJveHk7CiAKIGNsYXNzIERyYXdpbmdBcmVhUHJveHkgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByb3RlY3RlZCBJUEM6Ok1lc3NhZ2VTZW5kZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYXdp
bmdBcmVhUHJveHkpOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIuaAppbmRleCA3
ZDU2YjBhMjQ2M2RlZGYxNjY5NThjMjhmZmI3NWFhMGUyY2U1MWYxLi5lNmJjMGE0NTA1NjVlZTJl
ZmExYmQwNWEyYTc1NjExMWExNWQ5OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9IaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmgKQEAg
LTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsK
IAogY2xhc3MgSGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEhpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKFdlYlByb2Nlc3NQb29sJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
NDBmODFkZTliNDdmMTkyMjE5MDI2YTZlOGEwN2IyYTVlMmQ2YTk5MC4uOTE5NGFlNjYyODFhNTg1
ZTFjODJlYjBjZGE0YjgxNGY5MDNkMTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTcwLDYgKzcwLDcgQEAg
Y2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7
CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxOZXR3b3JrUHJvY2Vzc1Byb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBUb3BGcmFtZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGVjNjRi
YzllMTYyY2I3Y2ExZTc1MzdlOTMzMWQ0ZjEzOTU4N2VjNDEuLjZjZjVlMTRlYTU2OWYyM2RhODQ3
NTQwOTZjYTUxMTQ1M2MyOThiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
QEAgLTE2OCw2ICsxNjgsNyBAQCB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJf
dDsKICNlbmRpZgogCiBjbGFzcyBQYWdlQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBh
Z2VDbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5QYWdlQ2xpZW50KCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaAppbmRleCAwMWE3ZGE3
Yjg5MWE5MDA2NmM5MGU4NDI5YzY1NmJkNzAwYjE2NmJkLi5lYTQzOTI3ZDQ4ZDc1MmJlYjY3Mjgw
OTQ5OWM5YWQwYmZlMDdiYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oCkBAIC0zNSw2ICszNSw3IEBA
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCiBjbGFzcyBQZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVy
KFdlYlByb2Nlc3NQb29sJik7CiAgICAgflBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGEuaAppbmRleCBjMjc4MWRjOGFkYTM0MzM5Zjc5ZWQ4NWE3ZTNlOWZmNzY1MjIyNTI4
Li4yOWRmZWZlNmNiNzJjMTIwYTYxY2MyMmQwZDNiYTY0YTZkOTQ0MjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlU2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oCkBA
IC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTsKIAogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9y
bWFuY2VEYXRhIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBS
ZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eSYpOwogICAgIH5SZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5o
CmluZGV4IDg2ZDBkZWZjNjk2NWU0ZmE2YmExMTY0NzYxYmM5YWM3MTk4YzcyZTYuLjFhNzY5NDNm
MjQ1YmUxY2Q4MjJmMTk2MTNjZGQzNWY1NDBhOTRjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBSZW1v
dGVTY3JvbGxpbmdUcmVlOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KTsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5KFdl
YlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAppbmRleCA2NDg5YThlNzQ0MmQ3YjE3MDUyOTViNjJl
ZWI1YzAyNWM3YTliMzNhLi5lNjM3ZDYxNTMyNWQzODBjZTkyZDA3YTJiMTIxOTEzZmYxODFkZDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1MuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TIDogcHVibGljIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmKTsKICAgICB+U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N5c3RlbVByZXZpZXdDb250cm9sbGVyLmgKaW5kZXggZjI2MWY1MjY4MTUyZDBmZGRi
Njg1NTFhODYwMTUyZTQxNjdkMGFlYy4uMmI5MGUxYjg5YzBhYTVlZWVhZjA1NGRlNDI4ZGVlZDQw
ZTYzYThiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlci5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUGFnZVByb3h5OwogCiBjbGFzcyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU3lzdGVtUHJldmll
d0NvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oCmluZGV4IGJiYmE0NGFjODJiZDI4MDc1YmRkZmJiNDU0NDRjYTU2OWFjY2ZiOTcuLjk3YWEx
NmI5MmNkZGQ1MTQxNDQ0ZjBhNWJlYjU4YWU2OGNlMzZhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eQogICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgog
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOwogICAg
IH5Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmgKaW5kZXggODVjZTY5MDYx
MTE0NDJiYzY3OWNjN2E3NzViODY4MmRkMTU3MjhjOS4uZjg1MmJlZDIxMzBiNDdjMmY3ZGQyOThh
ZDM1NmFlYWM4N2MwMjY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3JQcm94eS5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvclByb3h5KTsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJBdXRoZW50aWNhdG9yQ29v
cmRpbmF0b3JQcm94eShXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk5hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggOWViOWQyOGFkZGQ1YjViMDA2ZDUwYjA4YTNkNzRm
YjY5ZDE2MjM5Mi4uMTZhNzU5YWM4YTFmZjMxNDYwNWIwOTQ2ZmZjNWFhNjU4MThlMDc0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvblN0YXRlLmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bTsKIAogY2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJOYXZpZ2F0aW9uU3RhdGUoKTsKICAgICB+
V2ViTmF2aWdhdGlvblN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IDY1Mjk4MmE4MTJhOWVmYmVmNTIx
YTZhOTg5OWZhNGJlZTVmYWYzNGMuLjFiMjlmNzlkZGZhZWEwN2I5ZTcyNDliZDc3MjM4NGVlYmY1
MzBmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
Y2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQg
OiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlPiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBB
UEk6Ok9iamVjdCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBBUEk6Ok9iamVjdCos
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEFQSTo6T2JqZWN0Pik+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyMDc2OTU5MWFjMWUzMjJmNTFjZGNm
NTIwZTVhY2VlYjJlM2Y5Y2E5Li5lNjU1MGYyZjlkYmJkYmE3MmIzN2Y2NDljODliYWQ5MDNkNTky
NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzQ3LDggKzM0
Nyw3IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
dWludDMyX3QsIHVpbnQzMl90PiBUb3VjaGVzQ2FsCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mPiBTZWxlY3Rpb25SZWN0c0NhbGxi
YWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbiY+IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb25DYWxsYmFjazsKIHN0cnVjdCBFbGVtZW50
RGlkRm9jdXNBcmd1bWVudHMgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgorICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBGb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uIGluZm9ybWF0aW9uOwogICAgIGJvb2wgdXNlcklzSW50ZXJhY3Rpbmc7CiAg
ICAgYm9vbCBibHVyUHJldmlvdXNOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IGU5
ZmNmMDAxNTM5OTVkYzFjY2UxMzVmOGMwOTJlOTJlNjZkYmZmM2EuLmQwYmJhNTY0YzI3NTgyZDc4
MjZlOWYyYzIwNjIyMzcwMjI3Mjk1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKQEAgLTM0
LDYgKzM0LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJzaXRlRGF0YVN0b3JlQ2xpZW50KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJv
cEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRs
ZXIuaAppbmRleCA1MjU0MjAzNzFmNjFiZDRiOGYzYzFhMzk5YjdiODI2MWI5OTRlYTEwLi41OTE0
YjdlMGRmNTQzMWFjZjY2MzcxMDNlNjg4MDQwNGVkNDQzZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCkBAIC00OSw2ICs0OSw3IEBA
IGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgRHJh
Z0FuZERyb3BIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEcmFnQW5kRHJvcEhhbmRsZXIpOwogcHVibGljOgogICAgIERyYWdB
bmREcm9wSGFuZGxlcihXZWJQYWdlUHJveHkmKTsKQEAgLTY0LDYgKzY1LDcgQEAgY2xhc3MgRHJh
Z0FuZERyb3BIYW5kbGVyIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgRHJvcHBpbmdDb250ZXh0
IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBEcm9w
cGluZ0NvbnRleHQoR2RrRHJhZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9z
aXRpb24pOwogCiAgICAgICAgIEdka0RyYWdDb250ZXh0KiBnZGtDb250ZXh0IHsgbnVsbHB0ciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIuaAppbmRleCBiYmY5M2MyMDI4NmVlNmM2NjI4YTcxODJiYWVkNDUyZjJiYzhmNzRj
Li41MTRlY2E2ODliNjUxY2NkZmVkNjExODUwZDJiMTRiYzJmNGM1OTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaApA
QCAtNDEsMTEgKzQxLDEzIEBAIE9CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBzdHJ1Y3QgRWRpdGFibGVJbWFnZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBkcmF3aW5nVmlldzsK
ICAgICBTdHJpbmcgYXR0YWNobWVudElEOwogfTsKIAogY2xhc3MgRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXIgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFZGl0YWJsZUltYWdlQ29udHJv
bGxlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIoV2Vi
UGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvSW5w
dXRWaWV3VXBkYXRlRGVmZXJyZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1
dFZpZXdVcGRhdGVEZWZlcnJlci5oCmluZGV4IGM2ZjUwYWIxMWYzZGIyNmUzMWNjMjA0NDNhMWU4
NDJiN2Q4MDJmOGQuLmVmYzMzZGU2ZjJhODIyNWRmYzRlMWEzNDNjMTljMjJlZTFjMzQyNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVEZWZl
cnJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9JbnB1dFZpZXdVcGRhdGVE
ZWZlcnJlci5oCkBAIC0zMyw2ICszMyw3IEBAIE9CSkNfQ0xBU1MgVUlWaWV3OwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIElucHV0Vmlld1VwZGF0ZURlZmVycmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5wdXRWaWV3VXBkYXRlRGVmZXJy
ZXIoVUlWaWV3ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Nt
YXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgKaW5kZXggNzI4MDc4ODYzODEyZTgwOWNk
ZTA5NmVlODliMWY2MDIwNTBiYzRkMS4uMDIwMTE2NzliNzkxZjhlMGFkMTFmMWE4ZjUyNzMxYWZh
MzA4NTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1NtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBTbWFydE1hZ25pZmljYXRp
b25Db250cm9sbGVyIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlcik7CiBwdWJsaWM6CiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlcihXS0NvbnRlbnRWaWV3ICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxl
ci5tbQppbmRleCA4YjEyM2IwYTk3YzAzMGU5NDUwZjVlZDRmOGMxNzRiMzIxYmI0MDdiLi44ZmY4
YTBiZjQ3NWIzZjdiMjM2MjI5ZjQxMmUzZjMyNjZjZjk1OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxT
Y3JlZW5WaWV3Q29udHJvbGxlci5tbQpAQCAtODgsNiArODgsNyBAQCBwcml2YXRlOgogfTsKIAog
Y2xhc3MgV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVu
dCA6IFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5W
aWV3Q29udHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW0KaW5kZXggNDNlOWY5NjdiYzg5NzdmYmZmOGM4NjY4YTVjY2ExZjM4MjRjMDgw
OS4uYjU0N2RjMjcyYzI5Y2VmOGE4NGIxNjBkZWMxOWRhODBiMzM4MTFhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW0KQEAgLTU0LDYgKzU0LDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFs
IERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRlb0Z1bGxzY3JlZW5Nb2RlbENs
aWVudCA6IFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5k
ZXggNjYwMzE3YzJmYmM3OWI2OGJiNWI3MzQ3NmE1OGJlZmVhMDliMDZkMy4uOWQ0NWQyMTAxMTBk
YTk5MzAxYmMyMDBlZTM1M2FmYzllZWQ1NWRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIFRleHRGaW5k
ZXJGaW5kQ2xpZW50IDogcHVibGljIEFQSTo6RmluZE1hdGNoZXNDbGllbnQsIHB1YmxpYyBBUEk6
OkZpbmRDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IFRleHRGaW5kZXJGaW5kQ2xpZW50KFdLVGV4dEZpbmRlckNsaWVudCAqdGV4dEZp
bmRlckNsaWVudCkKICAgICAgICAgOiBtX3RleHRGaW5kZXJDbGllbnQodGV4dEZpbmRlckNsaWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3IuaAppbmRleCBiNmQ0YTA0MjBkNWE1ZGJkNjQ2MDgzYWY2Nzg4MDUx
YmY2Y2M0N2UwLi5mMmQ2MmVhOTc5MGY4MDdhNjViNWQzZTU4ZjgwYjk3ZjA2YWRiZjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvci5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQYXltZW50Q29vcmRpbmF0b3JDbGllbnQsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOwogICAgIGV4cGxpY2l0IFdlYlBheW1lbnRDb29yZGluYXRvcihX
ZWJQYWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
ci5oCmluZGV4IGZkNjUyM2Q2ZmE3ZDc1OTNkMWI4ZDNiMzJiYWI0NjNhOTY4ZWFhMjguLjYzM2Yy
MmZkZmU0MjcyYjM5ZGUyNWVhMGU0YTBhMDRkN2NkZTZjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdlYlBh
Z2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xvY2F0aW9u
L1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCmluZGV4IDBiYjRmMmI0MjFhM2VjMjI4NzU0
ZTYzODI5ZDQxYWJiZTJlMDZmOGQuLmE2YzI4NzE2YWIxNjc4YWZkZDU3NGM5ZGY5ZmUyODY4NjM0
NjMwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9X
ZWJHZW9sb2NhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Vv
bG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3Mg
V2ViUHJvY2VzczsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uTWFuYWdl
ciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXZWJHZW9sb2NhdGlvbk1hbmFnZXIpOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdl
b2xvY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlT3ZlcmxheS5jcHAKaW5kZXggZWJkM2VmNWYyOTMwOGMxNDE5M2ExODFiN2UxZTRhNDI1ZmQy
MWRkMi4uMzE0MzJmODk4ZmRiNGU5ZmNmYmM2Y2RiOGM4NGE5ZTU1MWUyODU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcApAQCAtNTQsNiArNTQsNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tCdW5kbGVQYWdlT3ZlcmxheUFjY2Vzc2liaWxp
dHlDbGllbnRCYXNlPiB7CiB9CiAKIGNsYXNzIFBhZ2VPdmVybGF5Q2xpZW50SW1wbCA6IEFQSTo6
Q2xpZW50PFdLQnVuZGxlUGFnZU92ZXJsYXlDbGllbnRCYXNlPiwgcHVibGljIFdlYktpdDo6V2Vi
UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgUGFnZU92ZXJsYXlDbGllbnRJbXBsKFdLQnVuZGxlUGFnZU92ZXJs
YXlDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dL
QnVuZGxlUGFnZUJhbm5lck1hYy5tbQppbmRleCBhY2MzNWEyMWI1OWYxYWEzMWUzMzA1MWE2NmJj
MTMwNTk5NjY5OWQzLi5jNjg5ZTg5Y2QwZTA2NDFiYTliNTdkOThlZDgzYzBmYjY0ZjRiNTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
bWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbQpAQCAt
NDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBjbGFzcyBQYWdlQmFubmVyQ2xpZW50SW1wbCA6IEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFn
ZUJhbm5lckNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZUJhbm5lcjo6Q2xpZW50IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlQmFubmVyQ2xp
ZW50SW1wbChXS0J1bmRsZVBhZ2VCYW5uZXJDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L0RPTS9ET01PYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcAppbmRleCA0MjEwMWY4Yzgy
Y2IyYTU0ODNiYWU0ZGM4NDgwN2I0MTY1YTkyZDg2Li43NGVkN2M0YjJmZGQ5OTdlMWU1YmNjMzI2
MzFhYjc2NTk0MjY2NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9iamVjdENh
Y2hlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBE
T01PYmplY3RDYWNoZURhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
ICAgICBET01PYmplY3RDYWNoZURhdGEoR09iamVjdCogd3JhcHBlcikKICAgICAgICAgOiBvYmpl
Y3Qod3JhcHBlcikKICAgICAgICAgLCBjYWNoZVJlZmVyZW5jZXMoMSkKQEAgLTg2LDYgKzg3LDcg
QEAgc3RhdGljIERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciYgZ2V0T3JDcmVhdGVET01PYmpl
Y3RDYWNoZUZyYW1lT2JzZXJ2ZXIoV2ViQ28KIH0KIAogY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFt
ZU9ic2VydmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXIoV2ViQ29yZTo6RnJhbWUmIGZyYW1lKQogICAgICAgICA6IEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlcigmZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFn
ZS5jcHAKaW5kZXggY2ZjNTAzMWVkNmU0YTI5NTRmZTAyYTAzZGE4N2ExNjFjZDJkMzA4Mi4uZmM1
ZDk1ZmZjNDkxOTVmYjQyN2Q0Y2RiMGZlNTVhYjUwZDM4NTU0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtOTUsNiArOTUsNyBAQCBXRUJLSVRfREVGSU5FX1RZUEUo
V2ViS2l0V2ViUGFnZSwgd2Via2l0X3dlYl9wYWdlLCBHX1RZUEVfT0JKRUNUKQogc3RhdGljIHZv
aWQgd2ViRnJhbWVEZXN0cm95ZWQoV2ViRnJhbWUqKTsKIAogY2xhc3MgV2ViS2l0RnJhbWVXcmFw
cGVyIGZpbmFsOiBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJLaXRGcmFtZVdyYXBwZXIoV2ViRnJh
bWUmIHdlYkZyYW1lKQogICAgICAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcih3ZWJGcmFt
ZS5jb3JlRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRp
YUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAppbmRleCAwY2E1ZWE2
ZDJhYmU1NzIxNTRkMjFiZWQwY2M5YTA1M2U3ZDY2YzE4Li5iZmIzZDA0NTE0MzczNmMzMWRmOTg4
YWIxYjAwZGU0MmI4NTMwODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oCkBAIC0z
OSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUHJvY2VzczsKIAogY2xh
c3MgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlcihXZWJQcm9jZXNzJikgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgKaW5kZXggZDdjNWM2ODM0NGI3MjczOGQ5NDk3
ZGYwMTJjYTM3NmJiODQxODhkYS4uYjBiZDUzNGNlMTlkNzM4NjFkODE3NmE4MjA1Y2RjZTYxOTVm
ZDA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaApA
QCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNs
YXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI+LCBwcml2YXRlIFdlYkNvcmU6
Ok1lZGlhQ2FuU3RhcnRMaXN0ZW5lciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKFdl
YlBhZ2UmKTsKICAgICB+VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkgPSBkZWZh
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5kZXggMDk0YWM3MWY3ZTVlZmZhYjc0ODVm
Y2VmY2FlNTQ4OTNkYjNlMDUwNi4uNzI5YjI0NWQ5ZDlkZDdlOGZiMzY4ZTFmNDNhMzY0YWNmMGY2
Njg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIGNsYXNzIEFzeW5jUmVz
b2x2ZXJGYWN0b3J5IDogcHVibGljIHdlYnJ0Yzo6QXN5bmNSZXNvbHZlckZhY3RvcnkgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKICAgICBydGM6OkFzeW5jUmVzb2x2
ZXJJbnRlcmZhY2UqIENyZWF0ZSgpIGZpbmFsCiAgICAgewpAQCAtNjUsNiArNjYsNyBAQCB2b2lk
IExpYldlYlJUQ1Byb3ZpZGVyOjpyZWdpc3Rlck1ETlNOYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgZG9jdQogfQogCiBjbGFzcyBSVENTb2NrZXRGYWN0b3J5IGZpbmFsIDog
cHVibGljIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgUlRDU29ja2V0RmFjdG9yeShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFN0cmluZyYmIHVzZXJBZ2VudCkKICAgICAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCmluZGV4IDVkNjM4M2Y2YjUwNjUzYjVjNjcwNzA3MDVj
NmMxMDI4NzBmYTAyMzEuLjM5OTA2OTlkMDc3OGZlYjE3YjBjYThlNjA3ODE0MTA4YTVjMDBhZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgTGliV2ViUlRDU29ja2V0RmFjdG9yeTsKIAogY2xhc3MgTGliV2ViUlRDUmVz
b2x2ZXIgZmluYWwgOiBwdWJsaWMgcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJXZWJSVENSZXNvbHZlcih1
aW50NjRfdCBpZGVudGlmaWVyKSA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDJkMWU4NDI0N2JkMGEzMGM5NGQxZjJlYTMw
MWRkNTVkMDJhNmUwNzYuLmIyNzEzZjQ2YzFmYzEzYzlmMjdiYmUzOWNhNWRjNTE4NTBiMTgzZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3Mg
V2ViUGFnZTsKIGNsYXNzIFdlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2ViTm90aWZpY2F0aW9uTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcihXZWJQcm9jZXNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRl
eCBlMGFiYzJjN2I0MTI5OTMwMDJiYmFiOGJkZmFiN2YyNjUxYWRjNTdmLi5iNmM3NmI2ZWQ3MTRj
YWFhM2E0MWRkZTQxYzFkNmExMDRmYjdhZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTMw
OCw2ICszMDgsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4gewogICAg
IFZlY3Rvcjxib29sLCA4PiBtX3BvcHVwRW5hYmxlZFN0YXRlczsKIAogICAgIGNsYXNzIFRpbWVy
IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFRpbWVyKTsKIAogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1
Z2luWDExLmgKaW5kZXggNDFlOWI2YzlkODRjYWE0OTU4ZTM4NWI5ZWQ4MGZkZDdlMTFkY2E1Yi4u
MWY5ZmQ4N2ZhM2EzMGM5MzYwNDM4ZWQ1OTdkYzMyYzg5NTg3YWYxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBOZXRzY2FwZVBsdWdpbjsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5YMTEgZmluYWwg
OiBwdWJsaWMgTmV0c2NhcGVQbHVnaW5Vbml4IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1Z2luWDEx
PiBjcmVhdGUoTmV0c2NhcGVQbHVnaW4mKTsKICAgICBOZXRzY2FwZVBsdWdpblgxMShOZXRzY2Fw
ZVBsdWdpbiYsIERpc3BsYXkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAppbmRleCBhMWY4MDdlMWU1NTA3MjNlZmVlYTE3NzEz
M2I4MWRmZjRkMTc2YjM1Li5iNTcyYWEzYTUzNmQ0ODVjYjliODE3YTE2ZTAyYzMzMmM0YmMyMTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29u
dHJvbGxlci5oCkBAIC0xNTksNiArMTU5LDcgQEAgY2xhc3MgUGx1Z2luQ29udHJvbGxlciB7CiAK
ICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRlbGF5aW5nIGRlc3RydWN0aW9uIG9mIGEgcGx1Zy1p
bi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7CisgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUGx1Z2lu
RGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoUGx1Z2luQ29udHJvbGxlciogcGx1Z2luQ29udHJvbGxlcikK
ICAgICAgICAgICAgIDogbV9wbHVnaW5Db250cm9sbGVyKHBsdWdpbkNvbnRyb2xsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmgK
aW5kZXggOTIwZGVkMDQwY2U1NjE4MzM5OWY2YzkzYjgyZWIzNmRmNzMwNDk2YS4uOTMwZTQ2MTgx
OWUxODZmNWE4MGQ4ZjY3MTZmYjExOGM0ZGMwZWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuaApAQCAtMzcsNiArMzcsNyBA
QCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYlNXT3JpZ2luVGFibGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYlNXT3JpZ2luVGFibGUoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5h
dGl2ZVRleHRDbGllbnQuaAppbmRleCA0ZGY2ZjAxOWU1NTg1NzU1MmM4NGRmYWI5MjUwYzQwMWE4
NGNiODM1Li5mNGNmMjkxYTQwMTBiMWU3YzI0MTY3ZDQ1NGI1NGVjNGI4NjRjNGZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5XZWJBbHRlcm5hdGl2ZVRleHRDbGll
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCAyZGM2NjIyYzFiN2YxYzVhOTVhMmNjZDc5YjMy
MDliYjU4NzJhNjJhLi40MzJkZjk0MjRiYzA4YTViZjkxZDEwMzhjMjQzZmYyZjM0ZTcyYjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xh
c3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OkNocm9tZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgV2ViQ2hyb21lQ2xpZW50KFdlYlBhZ2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaAppbmRleCA2YzI5YjRlMDgxMjZlN2NkNjY3OWNjNDcwMjM1YzU1NzRkZTUwZDJlLi5jMWM4
OWNkOTllODdhZWU4NGVkNTc0NmMyZTgxZjY0N2U4MmYxZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YlBhZ2U7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNv
bnRleHRNZW51Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBXZWJDb250ZXh0TWVudUNsaWVudChXZWJQYWdlKiBwYWdlKQogICAgICAgICA6IG1fcGFn
ZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggMWFkNGMzZGUyY2I3ZDM4ZTYyNjJjMTk3YWFiMjRj
Y2E2ZmVkYTgyMS4uYjI0ZWNmNzZjNDU1MjRmNjBkODZhZWQ2ZmIxZWNmNmYwZjM5NDIxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xp
ZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEcmFn
Q2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggMjY4MTAyZmVhMWE3NzU3ZWQ3ZTE2ZGRlY2NlM2NhZDhlZTZiZDQzNS4uZDIy
ZDRjYjczZjI5NzNmNTY1NWE4NzNlYmQyMmQ2YjAwNmFlMGYzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAK
IGNsYXNzIFdlYkVkaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpFZGl0b3JDbGll
bnQsIHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRWRpdG9yQ2xpZW50KFdlYlBhZ2UqIHBhZ2Up
CiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4
IDMwZjVhZDZiNGJjMmE2MzhkNjAzN2Y4ZWM5NzM4MDlkZjZlNTZiMTguLjM1YTMxZmMyYTM0NGIz
MTI4NzMwNTA0YjdmZTdhMTE1ZjAxMWI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAog
Y2xhc3MgV2ViR2VvbG9jYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6R2VvbG9jYXRpb25D
bGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkdl
b2xvY2F0aW9uQ2xpZW50KFdlYlBhZ2UmIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZjVlY2M2NGM5MjNmMzg2YzUwZTdiNTI5NzdlZmMw
OTllMGJjZmFkNi4uMjdjM2VlMTQyZTE2MTZlNDM1ZjQ4ZDQxZjI3MjcxNWZlOGUwMzgyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBXZWJQYWdlOwog
Y2xhc3MgUmVwYWludEluZGljYXRvckxheWVyQ2xpZW50OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JD
bGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwcml2YXRlIFdlYkNvcmU6
OlBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogZnJp
ZW5kIGNsYXNzIFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudDsKIHB1YmxpYzoKICAgICBXZWJJ
bnNwZWN0b3JDbGllbnQoV2ViUGFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaAppbmRleCA1MzNiZTg0MGNhZDcxNDU1NWRhZjBhYTIwNzI4YTNjOTMzNTVj
OWJlLi40YmIzN2ZkZDYwNzc3NGVkODA5YTk2N2E3NzUxNWZiYWZiNmVmNmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtMzIsNiArMzIsNyBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
IDogcHVibGljIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmgKaW5kZXggMTYzN2FkMTA5N2Q3NjQ5ZTUwZGY3NGY1ZTA2MjI3MjcxZmFiODQ1YS4uMDBjYzBh
MDhkOTI2MDRmZGRmYjVjYTYyZjZiODg1OTVjMzFhYjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRp
b25DbGllbnQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YlBhZ2U7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpO
b3RpZmljYXRpb25DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+V2Vi
Tm90aWZpY2F0aW9uQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKaW5kZXggZjZlMDE0OTU3ZWRj
Mjc3ZGI5ODM3MzEyN2VjMTA2M2U5MzU1OGNiOC4uY2Y5MGE1ZGZjZmRhNjNlY2I5ODk3Y2M2NmQw
ZDQ4MTI5NDQ4MTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlBsdWdJbkNsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpQbHVnSW5DbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlBsdWdJbkNsaWVudChXZWJQYWdlJik7CiAg
ICAgdmlydHVhbCB+V2ViUGx1Z0luQ2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50LmgKaW5kZXggNWRkNjViZmEwZDUwY2NmZGIxNDYxZmViM2ZlNTI0MWZjYWEwZmJhNi4u
NjNkNzc0ZTVhOTQyN2M3MzViNTI0OTBiZDAxY2Q3OWFiNzRhMTBlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
cm9ncmVzc1RyYWNrZXJDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlByb2dyZXNzVHJhY2tlckNsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpQcm9ncmVzc1RyYWNrZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlByb2dyZXNzVHJhY2tlckNsaWVu
dChXZWJQYWdlJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50LmgKaW5k
ZXggZWFkMTdkMzBmMDU5MGQ3NDQ2NzIwNTVjYWQ3N2Q5NWM2ZDBhNDc3MC4uN2JkODc1OTA1YTY1
Yzc3ZDk2YzNmNzg4NDAwMTg1ODJjZmFmNzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVz
aXNDbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YlBhZ2U7CiAgICAgCiBjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6U3BlZWNoU3ludGhlc2lzQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQoV2ViUGFnZSYgcGFnZSkK
ICAgICAgICAgOiBtX3BhZ2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJVc2VyTWVkaWFDbGllbnQuaAppbmRleCAxMDkz
MDQ1M2NlNzk3ZWRkOTBkZTc2ZjAzNTRiOWExZDQwNmYyZTZlLi42OTUyMTc0YjkxMmM5NzFlMzU3
ODZlMjdjNDgyMjVkMmZjYTE0MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViVXNlck1lZGlhQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlVzZXJNZWRpYUNsaWVudC5oCkBAIC0yOSw2
ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2Vi
VXNlck1lZGlhQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViVXNlck1lZGlhQ2xpZW50
KFdlYlBhZ2UmKTsKICAgICB+V2ViVXNlck1lZGlhQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCmluZGV4IDAwYTFlMmU4ZTI2MzM1NjNjMzA2OTk4ZGQx
NWEyMThiOTZkMTY1MTIuLjA3NDEzY2ZjOTM5ODVmZTVkOTllOTQwNjhmMTYxNWY0YjI0NGM2MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5oCkBAIC00Nyw2ICs0Nyw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVGV4dENoZWNr
aW5nQ29udHJvbGxlclByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHkoV2ViUGFnZSYpOwogICAgIH5UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5o
CmluZGV4IDBmMjY0MDNlYmI3MGE4MTFiMThlOTg3OTVlMTlkZTc3NDBiZTgzNjAuLjFhNTM1ZjE3
ZDk3ZjY2NjgzOTcyNjlhODZlMjg1N2IyOWI5NzJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNDksNiArNDksNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIEZpbmRDb250cm9sbGVy
IDogcHJpdmF0ZSBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGaW5kQ29udHJvbGxlcik7
CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCBhYWRlM2Q5ZjE4
NDRkN2YwNWMwOTIxOGQ4ZTIwNDRkNThhMmYwNWY4Li5iMmJkYzQxYjcyMzM2YmI2ZTQ4NDkwZjcz
MWIyNDg1ZDI3MDc4MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC00MCw2
ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYpOwogICAgIH5WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCA3MzU2NmExMzM4NWRlM2Fh
YzY0NmZiOTQ5NmJkZGFmY2I1YWY0NmI2Li5iMTYwMjcwOTVmNzdiNmQyOTk1OTg1OGZiNGIxNTRk
MTlmZWNmMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTIxMyw2ICsyMTMsNyBA
QCBjbGFzcyBXZWJQcmludE9wZXJhdGlvbkd0a1dpbjMyIGZpbmFsOiBwdWJsaWMgV2ViUHJpbnRP
cGVyYXRpb25HdGsgewogI2VuZGlmCiAKIHN0cnVjdCBQcmludFBhZ2VzRGF0YSB7CisgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFByaW50UGFnZXNEYXRhKFdlYlByaW50
T3BlcmF0aW9uR3RrKiBwcmludE9wZXJhdGlvbikKICAgICAgICAgOiBwcmludE9wZXJhdGlvbihw
cmludE9wZXJhdGlvbikKICAgICAgICAgLCB0b3RhbFByaW50ZWQoLTEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGljYXRvck92ZXJsYXlD
bGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCmluZGV4IDUzNWI4NGZiNjQyOWE5N2YwYzk4YThlYWMx
ODVkOWRmMmVlOTQ4NTQuLjAxNWUzMmRiMTg5M2U2YTA2MmQ5ZTNhN2NhMGRjNTJlOTQ2ZGQwYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kSW5k
aWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCkBAIC0zNCw2ICszNCw3
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRmluZEluZGljYXRvck92ZXJsYXlDbGll
bnRJT1MgOiBwdWJsaWMgV2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRmluZEluZGljYXRvck92ZXJsYXlDbGll
bnRJT1MoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yKiB0ZXh0
SW5kaWNhdG9yKQogICAgICAgICA6IG1fZnJhbWUoZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAppbmRleCBjNTkxNTU5YjBjN2MyNWYzMjJlODQ5NTAwMzlhOThjNzkyNjlh
NDkzLi5lNTM3ZTU5MWRmN2ZkMzIxMmRmOWUzYTZmYzMxMzM5OTcwZDc5OWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBjbGFzcyBXZWJQ
cm9jZXNzCiAgICAgLCBQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OkNsaWVudAogI2VuZGlmCiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlBy
b2Nlc3MmIHNpbmdsZXRvbigpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgUHJvY2Vzc1R5cGUgcHJv
Y2Vzc1R5cGUgPSBQcm9jZXNzVHlwZTo6V2ViQ29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKaW5kZXgg
YmFlZDBjZDllMDliNDlkMjIxZTk0MDE4ZjY0OWZlNmRiY2Y5MjUxOS4uYzFkNDNmY2IzYWY1ODQx
NDUzYWQzNDM0YzdjZjkzZWJmYzllN2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmgKQEAgLTQ2LDYgKzQ2
LDcgQEAgY2xhc3MgQ3Jvc3NQcm9jZXNzUmVhbHRpbWVBdWRpb1NvdXJjZTsKIGNsYXNzIFdlYlBy
b2Nlc3M7CiAKIGNsYXNzIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyIDogcHVibGljIFdlYlByb2Nl
c3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3Jl
OjpBdWRpb0NhcHR1cmVGYWN0b3J5LCBwdWJsaWMgV2ViQ29yZTo6VmlkZW9DYXB0dXJlRmFjdG9y
eSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlDYXB0dXJlRmFjdG9yeSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXIoV2ViUHJvY2VzcyYpOwogICAgIH5Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50SU9TLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MuaAppbmRleCAzYjFhNDUwNzA3OGZhNGNjMDY4ZTc0MDMwMzIyMTIzOWIy
YWQ3MTIzLi4xNDU3NzIyMmE5ZTEzZTYzZTQ5MWQ2ZDNiOTJjYTFiYzg5ZTdjYjAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnRJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnRJT1MuaApAQCAtMjgsNiArMjgsNyBAQAogI2ltcG9ydCAiV2ViQ2hyb21lQ2xp
ZW50LmgiCiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudElPUyBmaW5hbCA6IHB1YmxpYyBXZWJDaHJv
bWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdl
YkNocm9tZUNsaWVudElPUyhXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICA6IFdlYkNocm9tZUNs
aWVudCh3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQppbmRleCAyMTdh
NGVkMGE4NWE2YmI0MTRkMzE5NGNiN2JmYWVmZGUwMzZkNDdhLi5kZDVhZWJjYjJlY2M4NDM1Mjdh
ZGJhMTA3YTg5OWIzZGYzNjI5MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5t
bQpAQCAtNTIsNiArNTIsNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogc3RhdGljIExvY2sgd2Vi
Rml4ZWRQb3NpdGlvbkNvbnRlbnREYXRhTG9jazsKIAogc3RydWN0IFZpZXdwb3J0Q29uc3RyYWlu
ZWRMYXllckRhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJEYXRhKCkKICAgICAgICAgOiBtX2VuY2xvc2luZ0FjY2Vs
ZXJhdGVkU2Nyb2xsTGF5ZXIobmlsKQogICAgIHsgfQpAQCAtNjIsNiArNjMsNyBAQCBzdHJ1Y3Qg
Vmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YSB7CiB0eXBlZGVmIEhhc2hNYXA8UmV0YWluUHRy
PENBTGF5ZXI+LCBzdGQ6OnVuaXF1ZV9wdHI8Vmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YT4+
IExheWVySW5mb01hcDsKIAogc3RydWN0IFdlYkZpeGVkUG9zaXRpb25Db250ZW50RGF0YSB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkZpeGVk
UG9zaXRpb25Db250ZW50RGF0YShXZWJWaWV3ICopOwogICAgIH5XZWJGaXhlZFBvc2l0aW9uQ29u
dGVudERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKaW5kZXgg
MTBhMDhlOTUwYTNkYzBjOTM2NzFmMWZjMWM3NGM5NDc3OTNhMDdlOC4uZTU2YTEwM2EyOGE3NjBm
OWNlMGI5N2U3MWRkNmIyM2E2MGM1M2U4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5LmgKQEAgLTE3MSw2ICsxNzEsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveAog
CiAgICAgLy8gUmVwbHkgc3RydWN0cwogICAgIHN0cnVjdCBSZXBseSB7CisgICAgICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZW51bSBUeXBlIHsKICAgICAgICAg
ICAgIEluc3RhbnRpYXRlUGx1Z2luLAogICAgICAgICAgICAgR2V0U2NyaXB0YWJsZU5QT2JqZWN0
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDljNzFhM2Nj
OTIzZjMzZDJlMGFiMzlhMWJmNmIxNGI0NDNlOTRkNGIuLmM2YTM1ZjIxY2UxODhiNDMzM2Y2YTNj
NDYyYWZiYWM4ODRjZmQ3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZp
ZXcubW0KQEAgLTYwLDYgKzYwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIG5hbWVzcGFj
ZSBXZWJLaXQgewogICAgIAogY2xhc3MgU29mdHdhcmVDQVJlbmRlcmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTb2Z0d2FyZUNBUmVuZGVy
ZXIodWludDMyX3QgY29udGV4dElEKQogICAgICAgICA6IG1fY29udGV4dCB7IFtDQUNvbnRleHQg
bG9jYWxDb250ZXh0XSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCmlu
ZGV4IDcwODM3NzZkMjhhNzVjZmI1NDI1MzNkOTBmMzc3OGU4NWFiY2QxZDIuLmJiZDljNWQ1ODIx
Zjg1ZjY1ZWJjOGY3NzdlYzY1NTIyOWQ1ZTg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXJDb2NvYS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViTmV0c2NhcGVQ
bHVnaW5FdmVudEhhbmRsZXIuaCIKIAogY2xhc3MgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXJDb2NvYSA6IHB1YmxpYyBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXJDb2NvYShXZWJOZXRzY2FwZVBsdWdpblZpZXcqKTsgCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQubW0KaW5kZXggNzA0Y2QwOTVlODhmZTFhMjM4MTE4NmM2YmZmMTMwZmM5MDIwNDFlYi4uMWNi
YzJmYmEyYjdjYzhlZjg3OWVhMWJmNzExYjMxYjNiZDU4MmJjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQubW0KQEAgLTk0LDYgKzk0LDcgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Ojp+V2ViRGF0
YWJhc2VNYW5hZ2VyQ2xpZW50KCkKIH0KIAogY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50JiBjbGllbnQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50LmgKaW5kZXggYTNiMTU5OGVlMzUzZDY3ZTIzYWY4MDk1OGViN2Y3NWViMTY3ZjRk
OC4uY2Q3MjY0MjY4MjViYTcyMjE1NTdlMDU2NmZhOTJlYzA4MTExNDVjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
QWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIEBjbGFzcyBXZWJWaWV3
OwogCiBjbGFzcyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQoV2ViVmlldyopOwogICAg
IHZpcnR1YWwgfldlYkFsdGVybmF0aXZlVGV4dENsaWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhLmgKaW5kZXggNzhiNTM5ZTM3MmI4NjVjNTk0ZmMwNzZmNWExZmM4NGFh
ZmU5OGJmMC4uMjcxNDI3ZTJkNDZlZTNhMjk3ZDA1NDAxMmE3YTg1YWI4YjNlMWIwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGNsYXNzIFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
IDogcHVibGljIFdlYkNvcmU6OkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YShpZCB3ZWJEb2N1bWVudFZpZXcpIDogbV93ZWJEb2N1bWVudFZpZXcod2ViRG9jdW1lbnRWaWV3
KSB7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZmRjNGNjNzgxOTZmY2JjZjMyNjAyZDE4
ZTI4OWYwN2ExMTU0Y2M5NS4uYzBmYmRhOWIyZGExZGQ0NTEwZmZlMDg5YmY2OGY1YTc2N2RkNDE2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSFRNTEltYWdlRWxl
bWVudDsKIC8vIGJhc2UgY2xhc3Mgb2YgdGhlIGNvbmNyZXRlIGNsYXNzLCBXZWJDaHJvbWVDbGll
bnRJT1MuIEJlY2F1c2Ugb2YgdGhhdCwgdGhpcyBjbGFzcyBhbmQKIC8vIG1hbnkgb2YgaXRzIGZ1
bmN0aW9ucyBhcmUgbm90IG1hcmtlZCBmaW5hbC4gVGhhdCBpcyBtZXNzeSB3YXkgdG8gb3JnYW5p
emUgdGhpbmdzLgogY2xhc3MgV2ViQ2hyb21lQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNocm9t
ZUNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
Q2hyb21lQ2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXgg
MTg4NWYwMzEzMTM1YjgxN2IzMGY5NDU3NzdkOGUyNGIxNTM5YmY5MC4uYTdmNjZlZWVmMzA2YTY4
NjA1NDIwZTc5ODc2MjAyNTdiZTA2YjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBA
IC00NCw2ICs0NCw3IEBAIGNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNv
cmU6OkNvbnRleHRNZW51Q2xpZW50CiAgICAgLCBwdWJsaWMgV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQKICNlbmRpZgogeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpOwogICAgIHZpcnR1
YWwgfldlYkNvbnRleHRNZW51Q2xpZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggODQ3YTczYjE3YTQ2
MTdiZDU0YThkMjhhOTIzYzFkNGE2M2JkZDEyZS4uMzBkZjNmNzNkODUwZWE3NjljNzEzNTIyMWQy
ZTg4NjVlYTY3ZTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogQGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViRHJhZ0Ns
aWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZjA1OWUwNTllMTE4N2EzYmM1
YmQyNDdjYzI0MWY1OWFkZDQ1MDk1MC4uYjUxMDc4N2Q4MDliY2Y5N2I3Njg5ZTc0MDkzMjgzNzVh
YTBiMGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKIEBjbGFzcyBXZWJF
ZGl0b3JVbmRvVGFyZ2V0OwogCiBjbGFzcyBXZWJFZGl0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6RWRpdG9yQ2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJFZGl0b3JDbGllbnQ+IHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJFZGl0b3JDbGllbnQoV2ViVmlldyAqKTsK
ICAgICB2aXJ0dWFsIH5XZWJFZGl0b3JDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5o
CmluZGV4IGZmZTI5OTMxMmViNDgwYmFmYjVmMGVhYzQzNTJmMjQzZjk2ZTAwZjcuLmZmZGJhY2Zj
Mjc0MjFlOGQzNTg4OGYyY2U2YjE4MDc3YTE2ZTMzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaApAQCAtMzMsNiArMzMsNyBAQCBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwogQGNsYXNz
IFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdlb2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBXZWJHZW9sb2NhdGlvbkNsaWVudChXZWJWaWV3ICopOwogICAgIFdlYlZpZXcgKndl
YlZpZXcoKSB7IHJldHVybiBtX3dlYlZpZXc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
YmQ3ZjYyZmM4NWRjOTljMzg3MTZmMDc2NjY0NjMxODI1MTFjNTRhNS4uMGM5NDhiM2FlZjk4NzYw
OTYzMDM1MWQ1OWFjNzkwYjJhYmVhZGE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUx
LDYgKzUxLDcgQEAgY2xhc3MgUGFnZTsKIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkluc3BlY3Rv
ckNsaWVudChXZWJWaWV3ICppbnNwZWN0ZWRXZWJWaWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQuaAppbmRleCAxNWI0MTgwNDhlNGYxZDQ2MjRjMzAzZGNiYmZlZDE2OTc5NjQ0ODYxLi45
NGVkNjE4YWM3OGVlOGJjZjU3MTU1YzlhZGFiY2JkYWRmNjhjNzM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmlj
YXRpb25DbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQAogQGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYk5vdGlm
aWNhdGlvbkNsaWVudChXZWJWaWV3ICopOwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVy
biBtX3dlYlZpZXc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5o
CmluZGV4IGEzZDZhZTYzNjM2NDdjNWYzMGNjNzlmYmQ2MzVmNjY0YmNhMDEyM2MuLmRjOWQxMWEz
NTg3ZWUwNGY1MDE1MWJlODhiYzVkNGIxNDhiY2RlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBJbnRQb2ludDsK
IH0KIAogY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaAppbmRleCBkZmE3ZWZkMDYwNmFkYzQ5ZmUyOTFkMDUy
MWQxMzJlNmUxOWM1MDczLi5hMDcyZTgxOTUyNDkzOWFlMGYyMmJiOTgzNmQzYWM3MDVkODU3OTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBQ
YWdlOwogfQogCiBjbGFzcyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyIDogcHVibGljIFdl
YkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlcj4gY3JlYXRlKFdlYkNvcmU6OlBhZ2UmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApp
bmRleCA2NDZlNmFlZjkzMmYxYzk5Mjk4NTM2YzgyZjJjOTU1YTcxYTE5MmNmLi40MDMzZWUxMTQ1
NTc5MTIxMGFlNGZiYTVhOTQwODUxODQzZmRmMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMTc2LDYgKzE3
Niw3IEBAIHZvaWQgSFVEU2xpZGVyOjpkcmFnKGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBz
dGFydCkKIAogI2lmIFVTRShDQSkKIGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Okxh
eWVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGF5ZXJDbGllbnQoRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlciogcGFyZW50KSA6IG1fcGFyZW50KHBhcmVudCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
aAppbmRleCBmMWRlOGRkN2NjZTc4ODdkNmM4M2NiMjgxMTU2MTNlYTgwYjU1ZDc4Li4xMzhjM2Vj
NGUyNjRiMThiMjcyZTI2N2MxNjgzNzU3NmFiYzg0MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCkBAIC00Miw2ICs0Miw3
IEBAIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIH0KIAogY2xhc3MgSFVEV2lkZ2V0IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBIVURXaWRnZXQoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgcmVjdCkgOiBtX3JlY3QocmVjdCkgeyB9CiAgICAgCkBAIC0xMDEsNiAr
MTAyLDcgQEAgY2xhc3MgSFVEU2xpZGVyIDogcHVibGljIEhVRFdpZGdldCB7CiB9OwogCiBjbGFz
cyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyIDogV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbkNsaWVudCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcik7CiBwdWJsaWM6CiAg
ICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaAppbmRl
eCA1ZmQ3NmQ0MTc4MjUyNjFkNGVkNTI4YTg1NDFmNjYyYTRmN2Y4N2Y5Li40Yjc5ZmU2MmJmZDg0
NTk5YjI0ZGMyZDk1YzY4YzUxZTIxNTAzYzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4uaApAQCAt
MzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUGx1Z2luVmlldzsK
IAogICAgIHN0cnVjdCBQbHVnaW5NZXNzYWdlIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBIV05EIGhXbmQ7CiAgICAgICAgIFVJTlQgbXNnOwogICAg
ICAgICBXUEFSQU0gd1BhcmFtOwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgfTsKIAogICAgIGNsYXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4geworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIFBsdWdpbk1l
c3NhZ2VUaHJvdHRsZXJXaW4oUGx1Z2luVmlldyopOwogICAgICAgICB+UGx1Z2luTWVzc2FnZVRo
cm90dGxlcldpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hl
ZEZyYW1lUGxhdGZvcm1EYXRhLmgKaW5kZXggNTMwYjY5ZWQ3MTljMjdhY2M2YjA3ZTM1MTU5MjIx
ZjU1MjZjNTMwNS4uM2JmNDRkODdkMThkNWYyNzNjZDI5NTM1Njc2YjI0MDhmMmM5MTRlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YS5oPgogCiBjbGFzcyBXZWJDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSA6IHB1Ymxp
YyBXZWJDb3JlOjpDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoSVdlYkRh
dGFTb3VyY2UqIHdlYkRhdGFTb3VyY2UpIDogbV93ZWJEYXRhU291cmNlKHdlYkRhdGFTb3VyY2Up
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCBl
M2VjMzNmZDQ5OTdhMDFhMjI1ZDVlMWNmOWI0ZjRiNjJkNzdlMjJkLi5jNDFmODZlMDczZDhkY2I5
ZTRhOGE1Mjk0ZjBkNjNjYzk0ZTU2M2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0LmgKQEAgLTQwLDYgKzQwLDcgQEAKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNz
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0IDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KTsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dChXZWJWaWV3Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCmluZGV4IDQxZDVmMDZhZWFjYjdlMTQxN2Q0YjcwMjQwMDYwYmJlNTdmNjkzMGYu
Ljc4NzU0MzI1M2Q1ZGZmNGVjNjY4ZWJlODhmMDg4NWQwYmFkYjY1OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGU7CiBpbnRlcmZhY2UgSVdlYlVJRGVsZWdhdGU7CiAKIGNsYXNzIFdlYkNocm9tZUNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDaHJvbWVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFdlYkNocm9tZUNsaWVudChXZWJWaWV3Kik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGM5ZGU0OWIzY2QxNDU1MTcyOGZiMmY5ZDk2ZWY0
OTBlOTkxNThiZDQuLmY0OGVlNzMwZWVmNzE5NzllNGQ4ZDJjMzI3ZWQxYmExN2I5NGZmYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzAsNiArMzAsNyBAQAogY2xhc3MgV2ViVmll
dzsKIAogY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4
dE1lbnVDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxl
Z2F0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCmluZGV4IDgyOTZjOGNjYjY4ODdkMzQ1NDhkNWE2NGM2
ODY3NzI2YTc0NjA3NzIuLjRjZmQxMDI2NWQxZDA3YTU3ZjAzMGE0ZTZiMTUwNjljYmJmYjkzMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRl
c2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKQEAgLTQx
LDYgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiB9CiAKIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGUgOiBwdWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJEZXNrdG9wTm90aWZp
Y2F0aW9uc0RlbGVnYXRlKFdlYlZpZXcqIHZpZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggYjU5ODkz
MzI5MTAwOWUyODUxZWQ3NTQxNWVjNGFhMGZlNDAzZDYxMS4uNDVlM2NhNzI3NTNhZDFhYzExNTNi
ZTk2MTkzZjZlZDYyMWZmODlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQAogY2xh
c3MgV2ViVmlldzsKIAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFn
Q2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJE
cmFnQ2xpZW50KFdlYlZpZXcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0
cm95ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZGI2MzUyZDYzODE2ZjdjOWFlZWU5Zjc0NGU0
OGUzODFlODU2ZDJiNS4uNjlkN2VkM2UwYWEzMWYxM2JlYTY0Y2YwYzI3NjVlMjU0ZmJmOGU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgV2ViTm90aWZpY2F0aW9u
OwogY2xhc3MgV2ViRWRpdG9yVW5kb1RhcmdldDsKIAogY2xhc3MgV2ViRWRpdG9yQ2xpZW50IGZp
bmFsIDogcHVibGljIFdlYkNvcmU6OkVkaXRvckNsaWVudCwgcHVibGljIFdlYkNvcmU6OlRleHRD
aGVja2VyQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBXZWJFZGl0b3JDbGllbnQoV2ViVmlldyopOwogICAgIH5XZWJFZGl0b3JDbGllbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA2Y2VmZmM4MWFmOTQ0MTZlZjNjYzBmYWU0
NDZjMDA3Zjk1NmRlYzU4Li41MTc3MGNlNDY4ZDM3MzQyNTY5MjQ3MjJhMjE3YzhkZjQyMDc1NWJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC05Myw2ICs5Myw3IEBAIHN0YXRp
YyBXZWJEYXRhU291cmNlKiBnZXRXZWJEYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiB9CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJpdmF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUoKSAKICAgICAgICAgOiBtX3BvbGljeUZ1bmN0aW9u
KG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAppbmRleCBlYjk3NThiZDQyMTA3ZDJm
OWE4NTRlNGU2ODgxNjZhNmY1MTVmYjlmLi5iYmE5YzlmNDQ1MzU4ZDdjZTNlYTAzZjg5NjY0MWJk
NmU1ZTA0MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAg
Y2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkdl
b2xvY2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJHZW9sb2NhdGlvbkNs
aWVudChXZWJWaWV3Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggOTVjOWFmYTg1MDAy
YTU0MzI3MGI3Y2U2YjM4OGM3MGQ0ODkxODUxOC4uMGE1MTQ4MzkxYmFlMTI2MGRmNjg2NmIyODcw
N2U2NjA4NGU5MjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAg
Y2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIGNsYXNzIFdlYlZpZXc7CiAKIGNsYXNzIFdlYkluc3Bl
Y3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1Ymxp
YyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqKTsK
IApAQCAtOTQsNiArOTUsNyBAQCBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJs
aWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdAogfTsKIAogY2xhc3Mg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgV2ViQ29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBIV05EIGluc3BlY3RlZFdl
YlZpZXdId25kLCBIV05EIGZyb250ZW5kSHduZCwgY29uc3QgQ09NUHRyPFdlYlZpZXc+JiBmcm90
bmVuZFdlYlZpZXcsIEhXTkQgZnJvbnRlbmRXZWJWaWV3SHduZCwgV2ViSW5zcGVjdG9yQ2xpZW50
Kiwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPik7CiAgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwCmluZGV4IDI0OTNjN2IwYjc5ZmM0ZmQ4ZWNlYzBlYTk2NjdjNmVlMmFjM2Ew
NGEuLjQ0NTQyYTFkYTEwM2FhNDQ3NjNlOTRkNGZhYmE4NjRlZDAyZmM3ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMzU1LDYgKzM1
NSw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRJREJQZXJPcmlnaW5RdW90YSh1
bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpCiB9CiAKIGNsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERpZE1vZGlmeU9yaWdpbkRhdGEpOwogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNo
VG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlciogZGF0YWJhc2VNYW5hZ2VyLCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVy
LmgKaW5kZXggNjdkNDgzNTNiMDNkNzJlYThhOWMyOGFiODcwZDc1ZGExMWQ4MDhlYy4uNDdlYWRk
YTY1NjEyZTYwNTBkMmMyOGFjZTZmNGM5YWNlOWNiYjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9D
QUQzRFJlbmRlcmVyLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdLUUNBIHsKIGNsYXNz
IEltYWdlOwogCiBjbGFzcyBEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dChj
b25zdCBDQ29tUHRyPElEaXJlY3QzRFRleHR1cmU5PiYsIGNvbnN0IENDb21QdHI8SURpcmVjdDNE
VmVydGV4QnVmZmVyOT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTm9kZUhpZ2hsaWdodC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm9kZUhpZ2hs
aWdodC5oCmluZGV4IGY5NzU1YmI4ZGFlYWFiMzlkMzQyMmVlOGZlYjBmMjRjMWIzNTRmZWQuLmIy
Njk1NDk5YjgyNmI5OWI4MmVhZmE4NDU0MTg3ZDE5ZjZlMDdmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vZGVIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJOb2RlSGlnaGxpZ2h0LmgKQEAgLTM1LDYgKzM1LDcgQEAKIGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQgOiBXZWJDb3JlOjpXaW5kb3dNZXNzYWdl
TGlzdGVuZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFdl
Yk5vZGVIaWdobGlnaHQoV2ViVmlldyopOwogICAgIH5XZWJOb2RlSGlnaGxpZ2h0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRl
eCA3YmQ5ODg5NjExMWMzYjNmZTZmZTU0ZjBhMjQ3OTY2MDZiMjJhNzVmLi5mZmUyMzU3ZTkzNjVm
ZWQyMDI2M2Q3YmQ4NjhlYTczY2NlYWEyZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgdHlwZWRl
ZiBPYmplY3RPYnNlcnZlckxpc3Q6Oml0ZXJhdG9yIE9ic2VydmVyTGlzdEl0ZXJhdG9yOwogdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgT2JqZWN0T2JzZXJ2ZXJMaXN0PiBNYXBwZWRPYnNlcnZlcnM7
CiAKIHN0cnVjdCBXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgTWFwcGVkT2JzZXJ2ZXJzIG1fbWFwcGVkT2JzZXJ2
ZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZp
Y2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25D
ZW50ZXIuaAppbmRleCAzODllOThjN2Q5ZmRjYTMwMzE2MDE0ZjlmMWQxZjYyMGEzNDllZjJmLi5m
MTQ5ODEyMmQ4ZGUzYzMzNzMyNTQ0OGJlMzkxNDQyNGVjNzYwMDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuaApAQCAtMzEsNiArMzEsNyBA
QAogc3RydWN0IFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU7CiAKIGNsYXNzIFdlYk5vdGlm
aWNhdGlvbkNlbnRlciBmaW5hbCA6IHB1YmxpYyBJV2ViTm90aWZpY2F0aW9uQ2VudGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTm90aWZp
Y2F0aW9uQ2VudGVyKiBjcmVhdGVJbnN0YW5jZSgpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTdmYmI2YTI3OTg4ZGI5OGZjODE4MTVmMGU2
YmNhM2VjZDEyMzEwNC4uMTA4YTMxNTI0YjFlNjFlNTE5MjQzNTU3NDU5NjVjMmY4MGQwMDgyNCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU1IEBACisyMDE5LTA4LTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBm
YXN0LWFsbG9jYXRlZCwgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQgYW5ub3RhdGlvbiBwYXJ0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvR0NDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFP
YmplY3QuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0Lmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVz
ZW50ZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EcmFnZ2luZ0luZm8uaDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93aW4vRWRpdGluZ0RlbGVnYXRlLmg6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvd2luL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vSGlzdG9y
eURlbGVnYXRlLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL01ENS5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9Qb2xpY3lEZWxlZ2F0ZS5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9UZXh0SW5wdXRDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL1VJRGVsZWdhdGUuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9VSURl
bGVnYXRlLmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250ZXh0Lmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9DbGFzc01l
dGhvZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9JbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db3VudGVycy5oOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVyZWZP
YnNlcnZlcjo6cmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRlcmVmT2JzZXJ2ZXI6OmRl
cmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVy
ZWZPYnNlcnZlcjo6cmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRlcmVmT2JzZXJ2ZXI6
OmRlcmVmKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvV2Vha1B0ci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJNb2NrLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5j
cHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKwogMjAxOS0w
OC0xNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIGlt
cHJvdmVtZW50cyBvbiB3ZWIgc3RvcmFnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmgKaW5kZXggZTczYTJjMjdkMTc3MjJkMTI0ZDE0MjUxYjkwYjY1
NTIxMDg1YTMxYy4uMWJkZjFjNDMwYmM1MGJlMzg0ZmFjY2U1MGRmZmE1MjhkYTQ4NTZhNSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC00
MSw2ICs0MSw3IEBACiAjZW5kaWYKIAogY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKCk7CiAgICAgfkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9HQ0NvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0dDQ29udHJvbGxlci5oCmluZGV4IDc5Y2VhZmM5ZjJlOWFlNzIyMTAxMzgwMDQyN2IxMzZk
NWQ2YTJmM2MuLjY0MjQzODRkZjUzMGU4YzFmZGFlOGZiNjEzMTFiZjBhZGM0YTZhOGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0dDQ29udHJvbGxlci5oCkBAIC0zMCw4ICszMCwxMCBAQAogI2RlZmluZSBH
Q0NvbnRyb2xsZXJfaAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4K
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiBjbGFzcyBHQ0NvbnRyb2xsZXIgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEdDQ29udHJvbGxlcigpOwog
ICAgIH5HQ0NvbnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EUlREYXRhT2JqZWN0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2Jq
ZWN0LmNwcAppbmRleCBlZjJkMmVmYjg1OWY0YjhhMjJmMzBjNDY3YWNlMWY4YWFkMTU3YTRkLi5j
ZTgyZWExZTI3ZGJkMjc5MmIxMDQ5YzQ5NGVhZjBiODljNDllYWQxIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCkBAIC00OCw2ICs0OCw3IEBAIEZPUk1BVEVU
QyogY2ZVcmxXRm9ybWF0KCkKIH0KIAogY2xhc3MgV0NFbnVtRm9ybWF0RXRjIGZpbmFsIDogcHVi
bGljIElFbnVtRk9STUFURVRDIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBXQ0VudW1Gb3JtYXRFdGMoY29uc3QgVmVjdG9yPEZPUk1BVEVUQz4m
IGZvcm1hdHMpOwogICAgIGV4cGxpY2l0IFdDRW51bUZvcm1hdEV0Yyhjb25zdCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEZPUk1BVEVUQz4+JiBmb3JtYXRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRFJURGF0YU9iamVjdC5oCmluZGV4IGI5NTJiMDgxYWZlYWEzOTE5MjdhZDJjYWI3ZGQxOGU4
NzkzMzc0MjEuLjE2YzY0MjMwOGU1NGMxNTVhZTM2NGQyNzMwMWIyODI1MzhmYmQ1OTcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuaApAQCAtNDUsNiArNDUsNyBAQCBz
dHJ1Y3QgU3RnTWVkaXVtRGVsZXRlciB7CiB9OwogCiBjbGFzcyBEUlREYXRhT2JqZWN0IGZpbmFs
IDogcHVibGljIElEYXRhT2JqZWN0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2b2lkIENvcHlNZWRpdW0oU1RHTUVESVVNKiBwTWVkRGVzdCwgU1RHTUVESVVN
KiBwTWVkU3JjLCBGT1JNQVRFVEMqIHBGbXRTcmMpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0RSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIuaAppbmRl
eCA3MGJkNDcwZTNkY2MwZTYzMGY2ZDUxYzJlY2E4YjQyM2RkM2Y5M2Q3Li40NmQ4NDVlMzAyNzk4
YzNlMzIzOGYyYWJkMTc1NTdmZDRhNTlkZGE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlci5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EUlREZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3aW5kZWYuaD4KIAogY2xhc3MgRFJURGVza3RvcE5vdGlm
aWNhdGlvblByZXNlbnRlciBmaW5hbCA6IHB1YmxpYyBJV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNE
ZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRFJU
RGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0RSVERyb3BTb3VyY2UuaAppbmRleCBkOWVlN2QwMTk2NTYzNmUxMzMxNjg3N2NlOTM0YmM0YzZk
NzAyMWNjLi45YWNhNDY0M2ZkYzIxYWU4MTU5YzVlYzY5ZmVkZWM2OTc5OTFkMGY0IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURHJvcFNvdXJjZS5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREcm9wU291cmNlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlIDx3aW5kb3dzLmg+CiAKIGNsYXNzIERSVERyb3BTb3VyY2UgZmluYWwgOiBwdWJsaWMg
SURyb3BTb3VyY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7ICAgICAgICAKICAgICB2
aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0RyYWdnaW5nSW5mby5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0RyYWdnaW5nSW5mby5oCmluZGV4IDAyYWRhYjM2MzQ2MjQ4YjFkYmE2NGNjZjBjNjdi
ZGFkNzdkMzU5ZGIuLjA5MDdkNTQ4ZDdjMzA2Y2M2ZjExYWM4NjRjOWY0ZmMwYTM5ZThlZGEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EcmFnZ2luZ0luZm8uaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHJhZ2dpbmdJbmZvLmgKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlIDxvYmppZGwuaD4KIAogY2xhc3MgRHJhZ2dpbmdJbmZvIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEcmFnZ2luZ0luZm8oSURhdGFPYmplY3Qq
IG9iamVjdCwgSURyb3BTb3VyY2UqIHNvdXJjZSkKICAgICAgICAgOiBtX29iamVjdChvYmplY3Qp
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRWRpdGluZ0RlbGVnYXRlLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRWRpdGluZ0RlbGVnYXRlLmgKaW5kZXggNGYxNzY3
YzZlZTRiMjUyYjg4OGU5MGE1YmY5ZjYwNjg3OGUxY2RlZi4uYjUxNzM5ZjVjZGEzYjlhYjQwN2Nk
NzA5OTRiNzk2YzI0YWY1MzRjMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0VkaXRpbmdEZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9FZGl0aW5n
RGVsZWdhdGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJL
aXQuaD4KIAogY2xhc3MgX19kZWNsc3BlYyh1dWlkKCIyNjVEQ0Q0Qi03OUMzLTQ0YTItODRCQy01
MTFDM0VEQUJENkYiKSkgRWRpdGluZ0RlbGVnYXRlIGZpbmFsIDogcHVibGljIElXZWJFZGl0aW5n
RGVsZWdhdGUyLCBwdWJsaWMgSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBFZGl0aW5nRGVsZWdhdGUoKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9FdmVudFNlbmRlci5jcHAKaW5kZXggYWRjYjg0N2UzNzJiMzJm
NzdkMjBiZTM4YTlkNWNiZGFiZjU3ZjVlMS4uM2FiYjk1ZGMwMzkyMGY0ZTc4MjRmMDY3ODBlODMx
ZjA1YzUwOGRhNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0V2ZW50U2Vu
ZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRXZlbnRTZW5kZXIuY3BwCkBA
IC01OSw2ICs1OSw3IEBAIHN0YXRpYyBpbnQgdGltZU9mZnNldDsKIHN0YXRpYyBQT0lOVCBsYXN0
TW91c2VQb3NpdGlvbjsKIAogc3RydWN0IERlbGF5ZWRNZXNzYWdlIHsKKyAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgTVNHIG1zZzsKICAgICB1bnNpZ25lZCBkZWxheTsK
IH07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCmluZGV4
IDJjZTJlOWQxNTc1NzRlOTFhYmU2YTE0N2UyOGNlODVhMzYyODFkYzIuLmY4ZGY4YzMzYmZhNGE5
MGVjZDUzZjkxMzgxMWYwMGFjMTcyMDM5MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9GcmFtZUxvYWREZWxlZ2F0ZS5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIFRleHRJbnB1dENv
bnRyb2xsZXI7CiBjbGFzcyBHQ0NvbnRyb2xsZXI7CiAKIGNsYXNzIEZyYW1lTG9hZERlbGVnYXRl
IDogcHVibGljIElXZWJGcmFtZUxvYWREZWxlZ2F0ZSwgcHVibGljIElXZWJGcmFtZUxvYWREZWxl
Z2F0ZVByaXZhdGUyLCBwdWJsaWMgSVdlYk5vdGlmaWNhdGlvbk9ic2VydmVyIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBGcmFtZUxvYWREZWxlZ2F0ZSgpOwog
ICAgIHZpcnR1YWwgfkZyYW1lTG9hZERlbGVnYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vSGlzdG9yeURlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vSGlzdG9yeURlbGVnYXRlLmgKaW5kZXggYmE2YTFhZjQ3MzY0ZjE4OWMwOWM0Njc3N2VhMzMy
YzQ5Y2QxOTMzZS4uYWFkMTgxNWQ2Zjk0OGI4YTJhMGRkMTQ1ZGE1Y2Y3NzNlMjAzMDQ1ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0hpc3RvcnlEZWxlZ2F0ZS5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9IaXN0b3J5RGVsZWdhdGUuaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgPFdlYktpdExlZ2FjeS9XZWJLaXQuaD4KIAogY2xhc3MgSGlzdG9yeURl
bGVnYXRlIDogcHVibGljIElXZWJIaXN0b3J5RGVsZWdhdGUgeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEhpc3RvcnlEZWxlZ2F0ZSgpOwogICAgIHZpcnR1YWwg
fkhpc3RvcnlEZWxlZ2F0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L01ENS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL01ENS5oCmluZGV4IGI4ZWI4OTBhNGY4
NjdjZGUyYmNhYjM4Y2ZiZWMwYjAxZDdhOGNlOWUuLjQ0ZjkyY2FlZWQzNThkNGFjMzgwZTM0YmM1
NzNiNmMyODY4MzY4MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9NRDUu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTUQ1LmgKQEAgLTMyLDYgKzMyLDcgQEAK
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBVTE9ORzsKIAogc3RydWN0IE1ENV9DVFggeworICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBVTE9ORyBpWzJdOwogICAgIFVMT05H
IGJ1Zls0XTsKICAgICB1bnNpZ25lZCBjaGFyIGluWzY0XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9Qb2xpY3lEZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL1BvbGljeURlbGVnYXRlLmgKaW5kZXggZTk4Mzg2NTA3NjUyMjBlZmYyMWJjMTA4OTQ4N2Fi
ZDkzYmZhMDZhMC4uNjkzMjIxNDUzNjcxZWZiYWE5OTEzOGUyNDIxMDg0Y2Y1MjJjYTk4ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1BvbGljeURlbGVnYXRlLmgKQEAgLTM0LDYgKzM0LDcg
QEAKIGNsYXNzIFRlc3RSdW5uZXI7CiAKIGNsYXNzIFBvbGljeURlbGVnYXRlIGZpbmFsIDogcHVi
bGljIElXZWJQb2xpY3lEZWxlZ2F0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgUG9saWN5RGVsZWdhdGUoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAppbmRleCAxMWFlYjc4MDgzZGI1M2NkOGU5ZjU1
OTVkODE4YzA3ODcyNTJmOTViLi5lMTdiNWM0NDhjZDJjNzIzODBhNDhmNTk2NzU1Nzc2ZjZhMjM2
MGYwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVs
ZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIGNsYXNz
IFJlc291cmNlTG9hZERlbGVnYXRlIDogcHVibGljIElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZSwg
cHVibGljIElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUyIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWREZWxlZ2F0ZSgpOwogICAg
IHZpcnR1YWwgflJlc291cmNlTG9hZERlbGVnYXRlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vVGV4dElucHV0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1RleHRJbnB1dENvbnRyb2xsZXIuaAppbmRleCAyNWMzNDhlODExMGFmZTExN2RlNGQ4
Yzk1YzcyYmJiNTM2ZjYxNGI1Li4yOWYwMzhiZTJkZGI1MGU5ZmFlNTMwZTFjNmQxM2MxZDQ2Zjk5
NzkyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGV4dElucHV0Q29udHJv
bGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXh0SW5wdXRDb250cm9sbGVy
LmgKQEAgLTM0LDggKzM0LDEwIEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8
dmVjdG9yPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKIGNsYXNzIFRleHRJbnB1dENv
bnRyb2xsZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZv
aWQgbWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIHdpbmRvd09iamVj
dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1VJRGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVs
ZWdhdGUuY3BwCmluZGV4IGYwYWRiY2U0Nzk2ZmFiZjRmMGQ0MmIyNzExNjMzNzAxYWM3ODEzMTQu
LmQxN2NmNzRmNGZiYmE1NzE0Nzc2Y2IwMDc3ZTlkNzBmNzI0YzNkNjMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKIHVzaW5nIHN0ZDo6
d3N0cmluZzsKIAogY2xhc3MgRFJUVW5kb09iamVjdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgRFJUVW5kb09iamVjdChJV2ViVW5kb1RhcmdldCogdGFyZ2V0
LCBCU1RSIGFjdGlvbk5hbWUsIElVbmtub3duKiBvYmopCiAgICAgICAgIDogbV90YXJnZXQodGFy
Z2V0KQpAQCAtNzEsNiArNzIsNyBAQCBjbGFzcyBEUlRVbmRvT2JqZWN0IHsKIH07CiAKIGNsYXNz
IERSVFVuZG9TdGFjayB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV91bmRvVmVjdG9yLmlzRW1wdHkoKTsg
fQogICAgIHZvaWQgY2xlYXIoKSB7IG1fdW5kb1ZlY3Rvci5jbGVhcigpOyB9CkBAIC04Myw2ICs4
NSw3IEBAIGNsYXNzIERSVFVuZG9TdGFjayB7CiB9OwogCiBjbGFzcyBEUlRVbmRvTWFuYWdlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRFJUVW5kb01hbmFn
ZXIoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmgKaW5kZXggNzgyNTg5MDM3
NzAwNTVhYzkyNDY2MTkxYTVlYjhkZWZmNDI1MTRiYi4uZjRmOGQ1ZDI3NjM5Y2NiNzQ0NzZhY2Vj
ZjE1ZjI3MWRiMGZiNmU0YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJ
RGVsZWdhdGUuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5oCkBA
IC0zNyw2ICszNyw3IEBAIGNsYXNzIERSVFVuZG9NYW5hZ2VyOwogY2xhc3MgRFJURGVza3RvcE5v
dGlmaWNhdGlvblByZXNlbnRlcjsKIAogY2xhc3MgVUlEZWxlZ2F0ZSBmaW5hbCA6IHB1YmxpYyBJ
V2ViVUlEZWxlZ2F0ZTIsIElXZWJVSURlbGVnYXRlUHJpdmF0ZTMgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFVJRGVsZWdhdGUoKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250ZXh0Lmgg
Yi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQu
aAppbmRleCA0ZTAyMGYxOTZjZDAzM2Q2MWVlMGU2MjhmNmExZTU5Y2ExYzMzNDU4Li4wYjg0ZDJk
NDU0NTU4M2RlOWZjMGRlYzEyYTRhYTg4YTY1OWVkMTk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaAorKysgYi9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRleHQuaApAQCAt
NjgsNiArNjgsNyBAQCB0eXBlZGVmIGVudW0gIHsKIH0gQ2FsbGJhY2tUeXBlOwogCiBjbGFzcyBV
SVNjcmlwdENvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFVJU2NyaXB0Q29udGV4dCk7CiBwdWJsaWM6CiAgICAgVUlTY3JpcHRD
b250ZXh0KFVJU2NyaXB0Q29udGV4dERlbGVnYXRlJik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL2NvY29hL0NsYXNzTWV0aG9kU3dpenpsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvY29jb2EvQ2xhc3NNZXRob2RTd2l6emxlci5oCmluZGV4IDI4ZGIxMGE0Nzk5NjMw
YzY0YzU1ZDA3ODZjMDBlZTA5NDg5MTQ1ZTIuLjM5YjRlNWVhNzE4MzY4OGNkZWM5YmVmY2M5NjRj
ZTg5M2E1NDNmMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xh
c3NNZXRob2RTd2l6emxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvQ2xh
c3NNZXRob2RTd2l6emxlci5oCkBAIC0yNiw5ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDxvYmpjL3J1bnRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBjbGFzcyBDbGFzc01ldGhvZFN3aXp6bGVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
bGFzc01ldGhvZFN3aXp6bGVyKTsKIHB1YmxpYzoKICAgICBDbGFzc01ldGhvZFN3aXp6bGVyKENs
YXNzLCBTRUwsIElNUCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29h
L0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2Ev
SW5zdGFuY2VNZXRob2RTd2l6emxlci5oCmluZGV4IGI4YTBiMGIxOGQxMzFlY2M5OWIyNmEzOTFj
ODkwZjlmNmM2YzA3MmUuLjYyNDc0ZDdjZDk3Nzc5OGM1YmJlY2FmNjU2YTYyNjQ4NTVhY2Y4OWIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRob2RT
d2l6emxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvSW5zdGFuY2VNZXRo
b2RTd2l6emxlci5oCkBAIC0yNiw5ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDxvYmpjL3J1bnRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBjbGFzcyBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyKTsKIHB1YmxpYzoKICAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVy
KENsYXNzLCBTRUwsIElNUCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50
ZXJzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvdW50ZXJzLmgKaW5kZXggZjllYTIyNDAyNjE1
MGQ4ZTFhYzZiYjc2MTViNmRlMzg5MGFmNjcwZS4uYWI1YzUyZjc1ZDFhYzZhZjk2MGFjMTRjYTcw
YjVjYjc0ZmEzNjI4OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db3VudGVycy5o
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ291bnRlcnMuaApAQCAtMjcsNiArMjcsOCBAQAog
I2lmbmRlZiBDb3VudGVyc19oCiAjZGVmaW5lIENvdW50ZXJzX2gKIAorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisKIHN0cnVjdCBDb3B5TW92ZUNvdW50ZXIgewogICAgIHN0YXRpYyB1bnNp
Z25lZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0aWMgdW5zaWduZWQgY29weUNvdW50OwpA
QCAtNTAsNiArNTIsNyBAQCBzdHJ1Y3QgQ29weU1vdmVDb3VudGVyIHsKIAogCiBzdHJ1Y3QgQ29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHN0YXRpYyB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25Db3VudDsKICAgICBzdGF0
aWMgdW5zaWduZWQgZGVzdHJ1Y3Rpb25Db3VudDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1X
ZWJWaWV3LmgKaW5kZXggYWQyYTczMmQ1MTk0N2JiYzdhZmM2NGUyN2Q0MjE1Y2UzMjg3ZGRlZS4u
MGMyN2E0NjE2NDVmYmExMmE1YzY5NWQ5MzI2NDMwNTI2YzRlZjEyOSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtV2ViVmlldy5oCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFBsYXRmb3Jt
V2ViVmlld19oCiAjZGVmaW5lIFBsYXRmb3JtV2ViVmlld19oCiAKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0dlb21l
dHJ5Lmg+CiAjZW5kaWYKQEAgLTYzLDYgKzY1LDcgQEAgdHlwZWRlZiB1aW50MzJfdCBXS0V2ZW50
TW9kaWZpZXJzOwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjbGFzcyBQbGF0Zm9ybVdl
YlZpZXcgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IFBsYXRmb3JtV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmKTsKICAgICBleHBsaWNp
dCBQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IDRiMTBjODZhMmFi
NzMyZTFlYTYyNzQ4NGNjNzg5NDBmYjZjZDZlOTYuLjUwZjkxMWRiNTkwZWYyMjIwMmM0YWI4MTBk
N2M3YTgwMGY1ZWRhYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0V4cGVjdGVkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3Rl
ZC5jcHAKQEAgLTQwNyw2ICs0MDcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgZGVzdHJ1Y3RvcnMp
CiBzdGF0aWMgaW50IHNub3dmbGFrZXMgPSAwOwogc3RhdGljIGludCBtZWx0ZWQgPSAwOwogc3Ry
dWN0IHNub3dmbGFrZSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHN0YXRpYyB2b2lkIHJlc2V0KCkgeyBzbm93Zmxha2VzID0gbWVsdGVkID0gMDsgfQogICAgIHNu
b3dmbGFrZSgpIHsgKytzbm93Zmxha2VzOyB9CiAgICAgfnNub3dmbGFrZSgpIHsgKyttZWx0ZWQ7
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggMWUxNjNk
Mzg5OThlNmJhYmZmZjUzODQxM2NjYTI4YWE2ZDI5ODk4Mi4uOWZkZjUxZDUwNzQ4ZWMwYzI3ZWZk
MjFjM2NmYjg1MmE0NDI4MWI5MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aE1hcC5jcHAKQEAgLTU5MCw2ICs1OTAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfUmVm
UHRyKQogfQogCiBjbGFzcyBPYmplY3RXaXRoUmVmTG9nZ2VyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPYmplY3RXaXRoUmVmTG9nZ2VyKFJlZjxSZWZMb2dn
ZXI+JiYgbG9nZ2VyKQogICAgICAgICA6IG1fbG9nZ2VyKFdURk1vdmUobG9nZ2VyKSkKQEAgLTY4
MCwyMyArNjgxLDI0IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFZhbHVlSXNEZXN0cnVjdGVkT25SZW1v
dmUpCiAgICAgRVhQRUNUX1RSVUUoZGVzdHJ1Y3RlZCk7CiB9CiAKK3N0cnVjdCBEZXJlZk9ic2Vy
dmVyIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgTkVWRVJfSU5M
SU5FIHZvaWQgcmVmKCkKKyAgICB7CisgICAgICAgICsrY291bnQ7CisgICAgfQorICAgIE5FVkVS
X0lOTElORSB2b2lkIGRlcmVmKCkKKyAgICB7CisgICAgICAgIC0tY291bnQ7CisgICAgICAgIG9i
c2VydmVkQnVja2V0ID0gYnVja2V0QWRkcmVzcy0+Z2V0KCk7CisgICAgfQorICAgIHVuc2lnbmVk
IGNvdW50IHsgMSB9OworICAgIGNvbnN0IFJlZlB0cjxEZXJlZk9ic2VydmVyPiogYnVja2V0QWRk
cmVzcyB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBEZXJlZk9ic2VydmVyKiBvYnNlcnZlZEJ1Y2tl
dCB7IG51bGxwdHIgfTsKK307CisKIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFplcm9lZEJl
Zm9yZURlcmVmKQogewotICAgIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKLSAgICAgICAgTkVWRVJf
SU5MSU5FIHZvaWQgcmVmKCkKLSAgICAgICAgewotICAgICAgICAgICAgKytjb3VudDsKLSAgICAg
ICAgfQotICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZXJlZigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIC0tY291bnQ7Ci0gICAgICAgICAgICBvYnNlcnZlZEJ1Y2tldCA9IGJ1Y2tldEFkZHJl
c3MtPmdldCgpOwotICAgICAgICB9Ci0gICAgICAgIHVuc2lnbmVkIGNvdW50IHsgMSB9OwotICAg
ICAgICBjb25zdCBSZWZQdHI8RGVyZWZPYnNlcnZlcj4qIGJ1Y2tldEFkZHJlc3MgeyBudWxscHRy
IH07Ci0gICAgICAgIGNvbnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2VydmVkQnVja2V0IHsgbnVsbHB0
ciB9OwotICAgIH07Ci0KICAgICBhdXRvIG9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJl
Zk9ic2VydmVyPigpOwogCiAgICAgSGFzaE1hcDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4sIGludD4g
bWFwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAppbmRleCA3MWVj
ZmRkYjg0MmI2YmQ1MTY0MWNhMDViNjEwOGFkNDhmNjJiYjdkLi5iY2YxNTljMzM4MTZhZWVhYjNj
YzMzMmZhNWQ4MGVlNDM1ZGQ2ZmE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9IYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoU2V0LmNwcApAQCAtMjgwLDIzICsyODAsMjQgQEAgVEVTVChXVEZfSGFzaFNldCwgQ29weUNh
cGFjaXR5SXNOb3RPbkJvdW5kYXJ5KQogICAgIH0KIH0KIAorc3RydWN0IERlcmVmT2JzZXJ2ZXIg
eworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICBORVZFUl9JTkxJTkUg
dm9pZCByZWYoKQorICAgIHsKKyAgICAgICAgKytjb3VudDsKKyAgICB9CisgICAgTkVWRVJfSU5M
SU5FIHZvaWQgZGVyZWYoKQorICAgIHsKKyAgICAgICAgLS1jb3VudDsKKyAgICAgICAgb2JzZXJ2
ZWRCdWNrZXQgPSBidWNrZXRBZGRyZXNzLT5nZXQoKTsKKyAgICB9CisgICAgdW5zaWduZWQgY291
bnQgeyAxIH07CisgICAgY29uc3QgUmVmUHRyPERlcmVmT2JzZXJ2ZXI+KiBidWNrZXRBZGRyZXNz
IHsgbnVsbHB0ciB9OworICAgIGNvbnN0IERlcmVmT2JzZXJ2ZXIqIG9ic2VydmVkQnVja2V0IHsg
bnVsbHB0ciB9OworfTsKKwogVEVTVChXVEZfSGFzaFNldCwgUmVmUHRyTm90WmVyb2VkQmVmb3Jl
RGVyZWYpCiB7Ci0gICAgc3RydWN0IERlcmVmT2JzZXJ2ZXIgewotICAgICAgICBORVZFUl9JTkxJ
TkUgdm9pZCByZWYoKQotICAgICAgICB7Ci0gICAgICAgICAgICArK2NvdW50OwotICAgICAgICB9
Ci0gICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlcmVmKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgLS1jb3VudDsKLSAgICAgICAgICAgIG9ic2VydmVkQnVja2V0ID0gYnVja2V0QWRkcmVzcy0+
Z2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgY291bnQgeyAxIH07Ci0gICAgICAg
IGNvbnN0IFJlZlB0cjxEZXJlZk9ic2VydmVyPiogYnVja2V0QWRkcmVzcyB7IG51bGxwdHIgfTsK
LSAgICAgICAgY29uc3QgRGVyZWZPYnNlcnZlciogb2JzZXJ2ZWRCdWNrZXQgeyBudWxscHRyIH07
Ci0gICAgfTsKLQogICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVmT2Jz
ZXJ2ZXI+KCk7CiAKICAgICBIYXNoU2V0PFJlZlB0cjxEZXJlZk9ic2VydmVyPj4gc2V0OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKaW5kZXggNGQyYjIyYWE1
NGY4YjAyNTQ4MGY1OWU1NjFhM2NjZTcxNTUwMjMxMi4uMWFmZTNlOTc3OWJiODQ4ODdlOTQzMGRl
NDE3MjZjNzQzODUzMmZkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVW5pcXVlUmVmLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Vbmlx
dWVSZWYuY3BwCkBAIC0zMCw4ICszMCwxMSBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAgICAgCi1jbGFzcyBBIHsgfTsKK2NsYXNzIEEgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworfTsKIGNsYXNzIEIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIEIoaW50IGEsIGludCBiLCBpbnQgYykKICAgICAgICAgOiBhKGEpCkBAIC00Myw2ICs0
Niw3IEBAIGNsYXNzIEIgewogICAgIGludCBjOwogfTsKIGNsYXNzIEMgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEMoVW5pcXVlUmVmPEE+JiYgYSkKICAgICAg
ICAgOiBhKFdURk1vdmUoYSkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9XZWFrUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIu
Y3BwCmluZGV4IDE1MGI5Yjc2YzhhNTY1ZTM2NTU0ODM2ZTBiYmVjMDUwNWM3ODQ4ZjIuLjQ3YzE1
YjljNzFmOTMwOWY5MzRiYWM4ZDM0ZjRiMjgxMmRmZWFkZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCkBAIC01MCw2ICs1MCw3IEBAIHN0cnVjdCBJbnQgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW50PiB7CiB9OwogCiBjbGFzcyBCYXNlIDogcHVibGljIENh
bk1ha2VXZWFrUHRyPEJhc2U+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBCYXNlKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA3NzhlNjE1NWYwNmNjMTI4Mzk3
OTc1ZjA0NTg3MTJhMmM3MTA0MGZhLi5jZGRlNjcwMDI5NzY5Y2Q3NWZhMDdhMTYxYTg1ZTFiOTE2
YTkzNWQ0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIHN0YXRpYyB1bnNpZ25lZCBkZWxldGlvbkNvdW50OwogCiBjbGFzcyBDYWxjdWxh
dGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25Ob2Rl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
YWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAK
aW5kZXggZDZjYzJmYjI0N2U1NjIwNjY5Nzc2MTBiMjU2NzliN2VkMWRjYzhiYS4uNDBjYTM0ODAw
Y2M0OTcwMjRlYTg1ZWY4OTAyNGU3Nzg0YTExOTA4YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAK
QEAgLTI1Niw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9u
RW1wdHlSZWFsbShBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogfQogCiBjbGFzcyBU
dW5uZWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFR1bm5l
bChTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICA6IG1f
c2VydmVyKHNlcnZlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNiMDVjZDRiYzAyN2UxMmQxMTAzZmFm
NmEwMDdhYzZmNDBmMy4uYjZiNzI4ZTQ1ZTA5YzUxYTZkNmJhOTliZjcxN2UxOTVlOWEwZTBjMSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nl
c3NUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlBy
b2Nlc3NUZXN0LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNlbmRpZgogCiBjbGFzcyBXZWJQcm9jZXNz
VGVzdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChjb25zdCBj
aGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViUGFnZSopID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuaAppbmRleCA2OTBm
MGE3NzU2Y2ZlM2FmYjA3ZDkwYmVlZmYwOTU3OGIyZmM1NWRlLi4yODE0NTI3ZjE5Yjk1NGY4MmFl
Yjg3YmMwZTRjOGRjMGI5YTdmNWI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5oCkBAIC0yNSw2ICsyNSw3IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBjbGFzcyBXZWJLaXRUZXN0U2VydmVyIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKIAogICAgIGVudW0gU2VydmVy
T3B0aW9ucyB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0V2ZW50U2VuZGVy
UHJveHkuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCmluZGV4
IDE1MzIyMTgyNjk5ZTBlYTMwNzU0YTAyMjZjM2E3YjYyOTU5NzZkMDAuLjExMzk5YjM5MGZlOTE3
MGY2YzUyNTI3NWFjMjM0NTgyZGFmNzUwZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvRXZlbnRTZW5kZXJQcm94eS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRXZl
bnRTZW5kZXJQcm94eS5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBXVFJFdmVudFF1ZXVlSXRl
bTsKICNlbmRpZgogCiBjbGFzcyBFdmVudFNlbmRlclByb3h5IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBFdmVudFNlbmRlclByb3h5KFRlc3RD
b250cm9sbGVyKik7CiAgICAgfkV2ZW50U2VuZGVyUHJveHkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suaAppbmRleCA3ZDk0NWQ2N2VjNjc1
MGJlNzA2NDM1YTJhNmIzYzc0ZDFhZDE3NDNjLi4xZWQ0YWRmOWIzOTM5M2EzMzNhYTMyNTEwOTdi
OWUzYWE0MmNjMzZiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0
aW9uUHJvdmlkZXJNb2NrLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HZW9sb2NhdGlv
blByb3ZpZGVyTW9jay5oCkBAIC0yNywxMCArMjcsMTIgQEAKICNkZWZpbmUgR2VvbG9jYXRpb25Q
cm92aWRlck1vY2tfaAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIEdlb2xvY2F0
aW9uUHJvdmlkZXJNb2NrIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBHZW9sb2NhdGlvblByb3ZpZGVyTW9jayhXS0NvbnRleHRSZWYpOwogICAgIH5HZW9sb2Nh
dGlvblByb3ZpZGVyTW9jaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4IGUx
MjA3ZmNlZmJkNjk2MjZkODhhZDhmNmNlZGIwYjUyNmJiMmRlNTMuLjIyYWM5NDc3Mzk1YjE5ZThk
ZmM4ZGYxNzk0YWQ0MmVkOGY1NzZkOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSlNXcmFwcGFibGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVj
dFJlZi5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CiAjaWYgVVNFKEFUSykKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlckF0ay5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKaW5kZXggMWY5ZDNl
ZmM5NjRmYjEzNzdiYzY2M2MwMTYwYzM0YTg4YjIzMjhhNi4uZDQ2MTcxNDNlZWQxZGE4YTgyY2I0
ZTBiMDA5ZjZkZTRkZTAxMzc5NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCkBA
IC02MTIsNiArNjEyLDcgQEAgdm9pZCBFdmVudFNlbmRpbmdDb250cm9sbGVyOjptb25pdG9yV2hl
ZWxFdmVudHMoKQogfQogCiBzdHJ1Y3QgU2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSB7Cisg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIEpTQ29udGV4dFJlZiBtX2Nv
bnRleHQ7CiAgICAgSlNPYmplY3RSZWYgbV9mdW5jdGlvbjsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgK
aW5kZXggNTlkM2UxYjBkMDJlMjJjNTJmYTc2NTQzMzI5YzIzZjZiNjJhMzg5YS4uYjMyM2MyNTA0
NGY1NTAzNjA3NmY0OGVkZGQ0N2JjZWFhM2UyMGYxOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCkBA
IC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQ
YWdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBJbmplY3Rl
ZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmKTsKICAgICB+SW5qZWN0ZWRCdW5kbGVQYWdlKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCBmNzRjYzJkMzkz
ZDUzMDVmZDM2NjViYjBlMGEzNTUxODQ0NzMxMDlmLi5jYTRmZGJkNzIyMTVhZjQ4YmRhOTY3ZDVi
Y2FiNDgxNTZiYWRjYzcxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGVzdE9wdGlv
bnMuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmICFkZWZpbmVkKEJVSUxESU5HX0dUS19fKQogI2luY2x1ZGUgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KQEAgLTY0LDYgKzY1LDcgQEAgdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIFBsYXRmb3Jt
SW1hZ2U7CiBuYW1lc3BhY2UgV1RSIHsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBQbGF0Zm9ybVdlYlZpZXcoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiosIGNvbnN0IFRlc3RPcHRp
b25zJik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggNzg4MGRk
OGRmNTUyZmM5ZDgyYjk0ZDFkMmYyZGRmZDZkZjgyZWMyYi4uODViMWIwMjA2ZWI4OTIyNmU4NmM2
YjQxYWI5M2U1ZGI5NWViZmQ5MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIFRlc3RJbnZv
Y2F0aW9uIGZpbmFsIDogcHVibGljIFVJU2NyaXB0Q29udGV4dERlbGVnYXRlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXN0SW52b2Nh
dGlvbik7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGVzdEludm9jYXRpb24oV0tVUkxSZWYsIGNv
bnN0IFRlc3RPcHRpb25zJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376485</attachid>
            <date>2019-08-16 02:05:49 -0700</date>
            <delta_ts>2019-08-16 02:08:10 -0700</delta_ts>
            <desc>B: makeUnique / makeUniqueWithoutFastMallocCheck</desc>
            <filename>bug-200620-20190816020548.patch</filename>
            <type>text/plain</type>
            <size>1552491</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OGRiMzg5ZGFmMTFiYjJiYjYyNzQyZTNmZDQ1ZTI1NmE3MjI0NTBhLi45NTgxZDU0NmJiNjA5ODg3
NGJiMzE4ZWEzNTk0NzdlMjE3ZjBlNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTEgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAg
ICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0RGF0YTo6c2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OkpTQ2FsbGJhY2tPYmplY3QpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmNwcDoKKyAgICAg
ICAgKE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKToK
KyAgICAgICAgKE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKToKKyAgICAgICAgKiBBUEkvSlNN
YXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBBZGRN
YXJraW5nQ29uc3RyYWludCk6CisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAg
ICAgKC1bSlNXcmFwcGVyTWFwIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAg
KiBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW06CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxl
Z2F0ZTo6dHlwZUludGVnZXIpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVE
b3VibGUpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVCb29sKToKKyAgICAg
ICAgKEFyZ3VtZW50VHlwZURlbGVnYXRlOjp0eXBlSWQpOgorICAgICAgICAoQXJndW1lbnRUeXBl
RGVsZWdhdGU6OnR5cGVPZkNsYXNzKToKKyAgICAgICAgKEFyZ3VtZW50VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUludGVnZXIpOgor
ICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlRG91YmxlKToKKyAgICAgICAgKFJlc3Vs
dFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlVm9pZCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAg
IChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVPZkNsYXNzKToKKyAgICAgICAgKFJlc3VsdFR5cGVE
ZWxlZ2F0ZTo6dHlwZUJsb2NrKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZVN0
cnVjdCk6CisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24pOgorICAg
ICAgICAqIEFQSS9nbGliL0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoanNjQ29udGV4dFNldFZp
cnR1YWxNYWNoaW5lKToKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6V3JhcHBlck1hcDo6V3JhcHBlck1hcCk6CisgICAgICAgICogYXNzZW1ibGVy
L1Byb2JlU3RhY2suY3BwOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OmVuc3VyZVBhZ2VG
b3IpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvQjNQcm9j
ZWR1cmUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpQcm9jZWR1cmUpOgorICAg
ICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpkb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6
OlByb2NlZHVyZTo6bmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6
YmFja3dhcmRzQ0ZHKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YmFja3dhcmRzRG9t
aW5hdG9ycyk6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmFkZERhdGFTZWN0aW9uKToK
KyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNv
ZGU6OmNDYWxsU3BlY2lhbCk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAqIGIz
L2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKGNvbXBp
bGVQcm9jKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlU25pcHBldFBhcmFtcy5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUpJVERhdGFTbG93KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjplbnN1cmVDYXRjaExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVj
b2RlT2Zmc2V0U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9m
aWxlOjphZGQpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5jcHA6CisgICAgICAgIChKU0M6OkRlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6ZW5zdXJl
RGVmZXJyZWRTb3VyY2VEdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgICog
Ynl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpDb21w
cmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCk6CisgICAgICAgICogYnl0
ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6UG9seVByb3RvQWNj
ZXNzQ2hhaW46OmNsb25lKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAg
ICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFy
aWFudC5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0pOgorICAg
ICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAgICAoSlNDOjpSZWNv
cmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6
YWRkSW5CeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0
dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRBZGRXYXRjaHBvaW50KToKKyAgICAgICAgKiBieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lz
U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdyk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OkFic3RyYWN0SW50ZXJwcmV0ZXIpOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OkdyYXBoKToKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bGl2ZW5lc3NGb3IpOgorICAgICAgICAoSlNDOjpERkc6
OkdyYXBoOjpraWxsc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNQU0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZW5zdXJl
QmFja3dhcmRzRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpKSVRDb21waWxlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29t
cGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkcmVzc09m
RG91YmxlQ29uc3RhbnQpOgorICAgICAgICAqIGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFu
Ojpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6Cisg
ICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6
c2xvd1BhdGhDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpzbG93UGF0aE1vdmUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJlQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAg
ICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNyZWF0ZU5l
d1RocmVhZCk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAg
ICAgIChKU0M6OmRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGZ0bC9GVExB
YnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkluZGV4ZWRBYnN0cmFjdEhlYXA6
OmF0U2xvdyk6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExGYWlsLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmYWlsKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmxhenlTbG93UGF0aCk6CisgICAgICAgICogZnRs
L0ZUTFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorICAgICAg
ICAqIGhlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHA6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vi
c3BhY2U6OmFsbG9jYXRvckZvclNsb3cpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90ZWN0ZWRPYmpl
Y3RUeXBlQ291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6b2JqZWN0VHlwZUNvdW50cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmFkZENvcmVDb25zdHJhaW50cyk6CisgICAgICAgICogaGVhcC9I
ZWFwSW5saW5lcy5oOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6OmJ1aWxkU25hcHNob3QpOgorICAgICAg
ICAqIGhlYXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OmFkZFNs
b3cpOgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpJc29T
dWJzcGFjZTo6SXNvU3Vic3BhY2UpOgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRT
ZXQuY3BwOgorICAgICAgICAoSlNDOjpNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVB
bmRMZXZlbCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNs
aWVudDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29u
c29sZUNsaWVudDo6d2FyblVuaW1wbGVtZW50ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6cmVwb3J0QVBJRXhjZXB0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5z
dXJlRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9ySGVhcEFnZW50OjpJbnNwZWN0b3JIZWFwQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRBZ2VudDo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUv
c29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9k
b21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1z
aXplcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZl
YXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlV2l0
aG91dExpbmtpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9K
SVRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OkpJVFRodW5rcyk6CisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWNDYWxs
KToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAocnVuSlNDKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6cHVzaExh
YmVsKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyQXJlbmE6OmlkZW50
aWZpZXJBcmVuYSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZv
cik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmdldFN0YWNr
VHJhY2UpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3cpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvblJh
cmVEYXRhOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxB
cnJheVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVSYXJlRGF0YUlmTmVlZGVk
KToKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVyVk1EYXRhKToKKyAgICAgICAg
KEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVyVk0pOgorICAgICAgICAqIHJ1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJs
ZTo6YWRkRGVsZXRlZE9mZnNldCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNw
cDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmVuc3Vy
ZVRlbXBsYXRlT2JqZWN0TWFwSW1wbCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRj
aHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZTo6bG9jYWxUb0VudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2Nv
cGVQYXJ0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnByZXBhcmVGb3JUeXBlUHJvZmls
aW5nKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnNldFJhcmVEYXRhQ29kZUJsb2NrKToK
KyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
aGFwZTo6cHJvcGVydHlIYXNoKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OmVuc3VyZUhlYXBQcm9maWxlcik6Cisg
ICAgICAgIChKU0M6OlZNOjplbmFibGVUeXBlUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6
ZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgIChKU0M6OlZNOjpxdWV1ZU1pY3Jv
dGFzayk6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTaGFkb3dDaGlja2VuKToKKyAgICAgICAg
KiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklS
R2VuZXJhdG9yOjplbWl0UGF0Y2hwb2ludCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjplbWl0Q2hlY2spOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGVB
aXIpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2Fz
bS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46OndvcmspOgor
ICAgICAgICAqIHdhc20vV2FzbVdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V29y
a2xpc3Q6OldvcmtsaXN0KToKKyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB5YXJyL1lh
cnJJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6Y29t
cGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6YXRvbVBhcmVudGhlc2Vz
U3VicGF0dGVybkVuZCk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6cmVnZXhC
ZWdpbik6CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6
WWFyckdlbmVyYXRvcjo6Y29tcGlsZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6
CisgICAgICAgIChKU0M6OllhcnI6OkNoYXJhY3RlckNsYXNzQ29uc3RydWN0b3I6OmNoYXJDbGFz
cyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OllhcnJQYXR0
ZXJuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVj
dG9yOjpyZXNldEZvclJlcGFyc2luZyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJu
Q29uc3RydWN0b3I6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbik6CisgICAgICAgIChK
U0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpj
b3B5RGlzanVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjphbnljaGFyQ3JlYXRlKToKKyAg
ICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5E
aXNqdW5jdGlvbjo6YWRkTmV3QWx0ZXJuYXRpdmUpOgorICAgICAgICAqIHlhcnIvY3JlYXRlX3Jl
Z2V4X3RhYmxlczoKKyAgICAgICAgKiB5YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRh
Ymxlcy5weToKKwogMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMg
ZmFzdC1hbGxvY2F0ZWQsIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIGFubm90YXRpb24gcGFydApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCA3ZTJmMGIyOWQyYTYyMDk2M2IwN2MxOTQ0YjBkMDcwNjExYTBmNDYwLi5hMWRmZDAzOWQ5
ODFhYTI1NTJiMTRlN2NmYmJiMDY3NjJiOTVlMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE5
LTA4LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dU
Rl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZCwg
bWFrZVVuaXF1ZSAvIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrIHBhcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMg
c2Vjb25kIHBhcnQgb2YgYnVnIDIwMDYyMCBwYXRjaC4gSSBzcGxpdCBJIHNwbGl0IGl0IGludG8g
dGhyZWUgcGllY2VzIHRvIG1ha2Ugcm9sbC1vdXQgZWFzeS4KKyAgICAgICAgVGhpcyBwYXJ0LCB3
ZSBjb252ZXJ0IHN0ZDo6bWFrZV91bmlxdWUgdG8gV1RGOjptYWtlVW5pcXVlIG9yIFdURjo6bWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2suCisgICAgICAgIEluIHRoZSB0aGlyZCBwYXRj
aCwgd2Ugd2lsbCBhZGQgYSBzdGF0aWNfYXNzZXJ0IHRvIG1ha2VVbmlxdWUsIHdoaWNoIGVuc3Vy
ZXMgdGhlIGdpdmVuIGNsYXNzIFQgaXMgRmFzdE1hbGxvY2VkIG9yIElzb0hlYXBlZC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFkZHMgYFdURjo6bWFrZVVuaXF1ZTxUPmAgYW5kIGBXVEY6Om1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFQ+YCBhcyBkcm9wLWluIHJlcGxhY2VtZW50IGZv
ciBgc3RkOjptYWtlX3VuaXF1ZTxUPmAuCisgICAgICAgIGBXVEY6Om1ha2VVbmlxdWU8VD5gIGhh
cyBvbmUgYWRkaXRpb25hbCBgc3RhdGljX2Fzc2VydGAgY2hlY2sgd2hpY2ggZW5zdXJlcyBgVGAg
RmFzdE1hbGxvYyAvIElzb0hlYXAgYW5ub3RhdGVkLiBJZiBpdCBpcyBub3QsIHRoZQorICAgICAg
ICBjb21waWxlIGVycm9yIGhhcHBlbnMuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgSSB0cmll
ZCB1c2luZyB0aGlzIGV2ZXJ5d2hlcmUgaW4gV2ViS2l0IGFzIG11Y2ggYXMgcG9zc2libGUuIEFu
ZCB3ZSBmb3VuZCB0aGF0IHN1cnByaXNpbmdseSBtYW55IGNsYXNzZXMgYXJlIG1pc3NpbmcKKyAg
ICAgICAgRmFzdE1hbGxvYyBhbm5vdGF0aW9uIGFuZCBhbGxvY2F0ZWQgZnJvbSBzeXN0ZW0tbWFs
bG9jLiBVc2luZyBXVEY6Om1ha2VVbmlxdWUgZW5mb3JjZXMgY2xhc3NlcyAvIHN0cnVjdHMgdG8g
dXNlIEZhc3RNYWxsb2MuCisKKyAgICAgICAgV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjayBpcyBvZmZlcmVkIGZvciB0aGUgY29ybmVyIGNhc2VzLiBUaGlzIGlzIGlkZW50aWNh
bCB0byBzdGQ6Om1ha2VfdW5pcXVlLiBXZSB1c2UgdGhpcyBmb3IgY2xhc3NlcworICAgICAgICB0
aGF0IGFyZSBvZmZlcmVkIGJ5IG5vbi1XZWJLaXQgY29kZSBiYXNlLCBsaWtlLCB6bGliLiBUaGlz
IGNsZWFyIG5hbWUgY2FuIG1ha2UgdXMgZWFzaWx5IGZpbmQgdGhpcyBhbGxvY2F0aW9uIGlzIGlu
dGVudGlvbmFsbHkgZG9uZQorICAgICAgICBieSBzeXN0ZW0tbWFsbG9jLgorCisgICAgICAgIFdl
IGRvIG5vdCB0YWtlIHRoZSBmb2xsb3dpbmcgZGlyZWN0aW9uLCBgV1RGOjptYWtlVW5pcXVlYCBh
dXRvbWF0aWNhbGx5IGFsbG9jYXRlcyBGYXN0TWFsbG9jIGV2ZW4gaWYgRmFzdE1hbGxvYyBhbm5v
dGF0aW9uIGlzIG5vdCBhdHRhY2hlZC4KKyAgICAgICAgU2luY2UgZGVmYXVsdCBkZWxldGVyIGlz
IHBlcmZvcm1pbmcgYGRlbGV0ZWAgYW5kIHRoaXMgaXMgbm90IHdoYXQgd2Ugd2FudCBmb3IgRmFz
dE1hbGxvY2VkIG9uZXMsIHdlIG5lZWQgdG8gcmV0dXJuCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxULCBGYXN0RnJlZURlbGV0ZXI+IGZvciBUIGlmIFQgZG9lcyBub3QgaGF2ZSBGYXN0TWFsbG9j
LWFubm90YXRpb24uIEF1dG9tYXRpY2FsbHkgZG9pbmcgdGhpcyBzb3VuZHMgYSBiaXQgZGFuZ2Vy
b3VzLgorCisgICAgICAgICAgICBhdXRvIHBvaW50ZXIgPSBXVEY6Om1ha2VVbmlxdWU8VD4oKTsK
KyAgICAgICAgICAgIC8vIFN1cGVyIGRhbmdlcm91cywgYnV0IHNvbWV0aW1lcyBpdCBpcyByZXF1
aXJlZC4uLgorICAgICAgICAgICAgYXV0byogcmF3UG9pbnRlciA9IHBvaW50ZXIucmVsZWFzZSgp
OworICAgICAgICAgICAgLy8gUGFzc2luZyByYXdQb2ludGVyIHRvIHNvbWV3aGVyZSwgYW5kCisg
ICAgICAgICAgICBkZWxldGUgcmF3UG9pbnRlcjsKKworICAgICAgICBUaGUgYWJvdmUgb25lIGJl
Y29tZXMgaW52YWxpZCBiZWNhdXNlIHBvaW50ZXIgbWF5IHN0YXJ0IHJlcXVpcmluZyBub24gYGRl
bGV0ZWAgZGVzdHJveWluZyBmdW5jdGlvbi4KKyAgICAgICAgSW4gdGhlIGFib3ZlIGNhc2UsIHRo
ZSBjb3JyZWN0IHdheSBiZWNvbWVzIHRoZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICAgIHJhd1Bv
aW50ZXItPn5UKCk7CisgICAgICAgICAgICBmYXN0RnJlZShyYXdQb2ludGVyKTsKKworICAgICAg
ICBUaGlzIGxvb2tzIG5vbi1pbnR1aXRpdmUuIEFuZCBoYXZpbmcgdHdvIHdheXMgdG8gZGVzdHJv
eWluZyBvYmplY3RzIChgZGVsZXRlYCBvciB0aGUgYWJvdmUgb25lKSBjYW4gYmUgZXJyb3ItcHJv
bmUuCisgICAgICAgIElmIHdlIGhhdmUgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQgZm9yIFQsIHdl
IGRvIG5vdCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhpcy4gIm5ldyIgYW5kICJkZWxldGUiIG9wZXJh
dG9ycyBhcmUgZGVmaW5lZCwgYW5kIEMrKyB3YXkgd29ya3MuCisgICAgICAgIFRoZSBzaW1wbGUg
aW52YXJpYW50LCAibWFrZVVuaXF1ZSBqdXN0IGRvZXMgYG5ld2AgaW50ZXJuYWxseS4gQW5kIGBk
ZWxldGVgIG9wZXJhdG9yIGRvZXMgYGRlbGV0ZWAuIGRlZmF1bHQgZGVsZXRlciBpcyBqdXN0IGRv
aW5nIGBkZWxldGVgIiwgaXMga2VwdC4KKworICAgICAgICBXaGlsZSB3ZSBuZWVkIHRvIGFubm90
YXRlIG1hbnkgY2xhc3NlcyB3aXRoIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVELCBpdCBpcyBvbmUg
dGltZSBjb3N0IHdoZW4gd2UgYWRkIGEgY2xhc3MuCisgICAgICAgIEFuZCwgYnkgaW50cm9kdWNp
bmcgYFdURjo6bWFrZVVuaXF1ZTw+YCwgd2Ugbm8gbG9uZ2VyIGZvcmdldCBhZGRpbmcgdGhpcy4K
KworICAgICAgICAgICAgbWFrZVVuaXF1ZSguLi4pCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0
KFQgaXMgRmFzdE1hbGxvY2VkIG9yIElzb0hlYXBlZCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZV91bmlxdWU8VD4oLi4uKQorCisgICAgICAgICogYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0
LmNwcDoKKyAgICAgICAgKiBiZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwOgorICAgICAgICAq
IHd0Zi9Db25jdXJyZW50VmVjdG9yLmg6CisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFza0hh
bmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVu
TG9vcCk6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAgICAgIChXVEY6
OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9uLmg6CisgICAg
ICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAg
ICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICogd3RmL1N0ZExp
YkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAgKFdURjo6bWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9TdHJlYW1CdWZm
ZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHd0
Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAgICAgKiB3dGYv
Z2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0
ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorCiAyMDE5
LTA4LTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRl
bnRDaGFuZ2VPYnNlcnZlcl0gS2VlcCB0cmFjayBvZiBhbGwgdGhlIHZpc2liaWxpdHkgY2FuZGlk
YXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBhNWVhMThkYWZhN2IxMTIzMTYxZWVkZWNkZTZkZjdhZTRhOWY0
MDZlLi40YmM2MmUzZTEwYjk2OTFiZjRmZGY0MzAxNzEzNjk0ZGFkYTk2YjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYyOCBAQAorMjAxOS0wOC0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
KworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxp
Y2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZlbG9wZXJXYXJuaW5nKToK
KyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0RPTVdpbmRvd0NhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dDYWNoZXM6
OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20pOgor
ICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlh
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20pOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNl
bmMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNyZWF0ZSk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lv
bik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNl
OjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpz
dGFydCk6CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yR2FtZXBhZDo6ZnJvbSk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cHJvdmlkZUdlb2xvY2F0aW9uVG8pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRp
b24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9y
R2VvbG9jYXRpb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVk
RGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL1dv
cmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uOjpUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QlNlcnZlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjplbnN1cmVRdW90YVVzZXIpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpJbmRleFZhbHVlU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpyZWNvcmRWYWx1ZUNoYW5nZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8p
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OnNl
dERhdGFiYXNlSW5mbyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUluZGV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SW5kZXg6OnB1
dEluZGV4S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SW5kZXg6Om1h
eWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eU9iamVjdFN0b3JlOjptYXliZU9wZW5DdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlh
bERhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFi
YXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6YmVnaW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmNy
ZWF0ZVNRTGl0ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRPcGVuQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdERh
dGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlcXVlc3REYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OnB1dE9yQWRkU3VjY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpnZXRSZWNvcmRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldEFsbFJlY29yZHNTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
VHJhbnNhY3Rpb25JbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5m
bzo6dmVyc2lvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86
OklEQlRyYW5zYWN0aW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbklu
Zm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlRyYW5zYWN0aW9uSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZv
OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpxdW90
YU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9y
TWVkaWFDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFD
YXBhYmlsaXRpZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6bW9ja1BpY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNl
dExpdmVTZWVrYWJsZVJhbmdlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYURl
dmljZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlVXNlck1lZGlhVG8pOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OmNoYW5uZWxFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENNZWRpYUVuZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVRyYW5zY2VpdmVyQmFja2VuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6dHJhbnNjZWl2ZXJC
YWNrZW5kRnJvbVNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpjcmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpZGVvUmVjZWl2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdWRpb1Jl
Y2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFj
a2VuZDo6Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlU2VuZGVyQmFja2VuZCk6CisgICAgICAgICog
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJv
dmlkZU5vdGlmaWNhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dRdW90YTo6ZnJvbSk6CisgICAgICAg
ICogTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3F1
b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmVu
c3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0Rl
Y29kZXI6OmRlY29kZUFzeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJO
b2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVh
ZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0
ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5j
eVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2Vy
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRl
ck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxh
eU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBhbm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2
ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2Vy
OjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6
OnNldEZmdFNpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQ
cm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BL
ZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUlu
aXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFw
ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVs
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwOgor
ICAgICAgICAoZmlkbzo6Rmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHA6CisgICAgICAgIChmaWRv
OjpGaWRvSGlkSW5pdFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAg
KGZpZG86OkZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0
YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hl
ZHVsZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRy
YW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkQ3JlYXRpbmdEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcldlYkRyaXZlcjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdh
dG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdQVTo6ZnJvbSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNs
YXJhdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpSZW5kZXJG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmNyZWF0ZU5hbWVOb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkNoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6Q2hlY2tlcjo6YXNzaWduVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tl
cjo6Zm9yd2FyZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlU2VtYW50aWMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmlu
YXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5n
SGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZGlkVXBncmFkZVVSTCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVl
dWUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4
dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjplbmFibGVEZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVG
cmFtZXI6OmRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6aW5mbGF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXRE
ZWZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0
SW5mbGF0ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JXZWJWUjo6ZnJvbSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0Nv
bXB1dGVkT2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11dGF0ZXMpOgorICAgICAgICAqIGFuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjp1
cGRhdGVGaW5pc2hlZFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2
ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc0V2ZW50VGFyZ2V0Q2FzdCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNX
b3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZCk6CisgICAgICAgICog
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAgKiBicmlkZ2Uv
Yy9jX2NsYXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6bWV0aG9kTmFt
ZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjpmaWVsZE5hbWVkIGNv
bnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6T2JqY0NsYXNzOjptZXRob2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZpZWxkTmFtZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpD
RmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJM
RmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29tYmlu
ZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybik6CisgICAgICAg
ICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3NzVGhyZWFk
Q29weUltcG9ydFBhcmFtcyk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lQ2F0ZWdvcnkpOgorICAgICAgICAqIGNzcy9D
U1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0
eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NE
ZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5k
U291cmNlcyk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lz
dGVyZWQpOgorICAgICAgICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpjc3NSdWxlcyBjb25zdCk6CisgICAgICAgICogY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZSk6CisgICAgICAgICogY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVsZTo6Y3Nz
UnVsZXMpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRX
b3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZnJvbSk6
CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbSk6CisgICAgICAg
ICogY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRS
dWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1
bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50UnVsZVNldHM6OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJl
SW52YWxpZGF0aW9uUnVsZVNldHMpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNs
b3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcik6
CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OndyYXBGb3JEZXBy
ZWNhdGVkQ1NTT00pOgorICAgICAgICAqIGNzcy9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFRvUnVsZVNldCk6CisgICAgICAgICogY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAqIGNzcy9T
dHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6CisgICAgICAgICog
Y3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24p
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKToKKyAgICAgICAgKiBj
c3MvbWFrZXByb3AucGw6CisgICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJp
dFZhbHVlU2V0dGVyKToKKyAgICAgICAgKGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNl
dHRlcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OkNTU1BhcnNlckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJJbXBsOjpjb25zdW1lU3VwcG9ydHNSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1BhcnNlclNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJT
ZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rvcik6CisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdW1lQmFzaWNTaGFwZVBhdGgpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTU2VsZWN0
b3JQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1
bWVQc2V1ZG8pOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5zdXJlQmFj
a3VwUXVldWUpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyOjppdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OnNldERyYWdJbWFnZSk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlRGV2aWNlT3JpZW50YXRpb25Ubyk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvcm1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpheE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRQYXJzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphY2Nlc3NT
VkdFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0QXV0b1NpemluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRMb2dNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZWdpc3RlckNTU1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZG9tVGltZXJIb2xkaW5nVGFuayk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlUGFyc2VyWWllbGRU
b2tlbik6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZSk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6Y2xhc3NMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmRhdGFzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlSW50ZXJzZWN0aW9u
T2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZVJlc2l6ZU9i
c2VydmVyRGF0YSk6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20vRXZlbnRO
YW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRQYXRoOjpidWlsZFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpFdmVu
dFBhdGgpOgorICAgICAgICAqIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcik6Cisg
ICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9h
cmRFdmVudDo6S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNy
b3Rhc2spOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRl
SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2Vy
dmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEp
OgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2Vy
U2xvdyk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9T
aGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1l
KToKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAo
V2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
OjphZGRJbWFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxl
bWVudEJ5VXNlbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50
Rm9ySWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1
cmVSZXBsYWNlbWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RH
YXRoZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNs
ZWFyQW5kQ3JlYXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252
ZXJ0ZXI6OkhUTUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29t
cHV0ZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50
KToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVh
bTo6QXN5bmNGaWxlU3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBo
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpD
YWNoZWRGcmFtZSk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFn
ZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUp
OgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
ZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0
YXRlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JG
b3JtRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAg
ICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFF
bGVtZW50OjptYXBNb3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAg
ICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TGlua0VsZW1lbnQ6OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6
cmVsTGlzdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
dXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBk
YXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik6CisgICAgICAg
IChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVxdWVzdFRvSGlkZU1lc3NhZ2UpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dDo6RGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xlKToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nh
bm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRI
VE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9j
dW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50
U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJv
dmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6cHVzaENvbW1vbik6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9h
ZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tlbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4
VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cGFyc2Vy
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlcik6CisgICAgICAgICog
aHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2Fk
YWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db21t
YW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0
OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElI
b3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1v
dmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNlV2hvbGVUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVk
aXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVTdGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoUGFyc2VkU3R5bGVT
aGVldDo6c2V0U291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJl
c291cmNlQ3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1BVUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDUFVQcm9m
aWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50
OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0ZWROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRy
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJv
bUNvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3Rv
cEZyb21Db25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvcldvcmtl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpJbnNw
ZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9h
ZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViSGVhcEFnZW50OjpXZWJIZWFwQWdlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAg
ICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5
b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGlu
Z1Jvb3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpj
cmVhdGVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQgY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
OjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94
OjpCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToK
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1l
bnRzKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6YXBwZW5kQ2VsbCk6CisgICAgICAg
ICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0
Rm9yU3ludGhlc2l6ZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
ZGV0YWNoQ2hpbGRyZW4pOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAq
IGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmln
YXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUGFn
ZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3MpOgorICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQpOgorICAgICAgICAqIGxvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpw
cm9jZXNzTmV3Q3VlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9tKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZENsaWVu
dFRvU2V0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fkcyk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjplbnN1cmVTZXNzaW9uUmVzb3VyY2VNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlDYWNoZTo6bHJ1TGlzdEZvcik6CisgICAgICAgICogbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVy
Lm1tOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6
cmVzb3VyY2VSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBjb25uZWN0
aW9uOmRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3TG9hZGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0
TWVudSk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKToKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OkV2ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjphZGRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXdM
YXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlRm9yUGFnaW5hdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW5p
dEdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFJlc291cmNlVXNhZ2VPdmVybGF5
VmlzaWJsZSk6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHBh
Z2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6Y2FwdGlvblBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlOjptYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
OjpjbGVhck1hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjptZWFzdXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjpjbGVhck1lYXN1cmVzKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyk6CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyOjpzdGFydFRpbWVyKToKKyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpjcmVhdGUp
OgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6
OlNldHRpbmdzQmFzZSk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxl
U2hlZXQpOgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
YWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0FuaW1hdGlvbkNvbnRyb2xsZXI6OkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJW
aXNpdGVkQWZmZWN0ZWRDb2xvcjo6UHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyc1Byb3BlcnR5V3JhcHBlcjo6RmlsbExheWVy
c1Byb3BlcnR5V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUFuaW1hdGlv
bldyYXBwZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCk6CisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZik6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c2V0Q1NQRGly
ZWN0aXZlKToKKyAgICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5p
dGlhbGl6ZSk6CisgICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OmFkZFNjaGVkdWxlUGFpcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxk
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
YmxlbmRNaXhlZFR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmlt
YXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25h
cE9mZnNldHNJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQnVzOjpBdWRpb0J1cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6Y29weVdp
dGhHYWluRnJvbSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNz
Q29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmNy
ZWF0ZUludGVycG9sYXRlZEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlTG9hZGVyOjps
b2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6
Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1w
bGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bh
bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXI6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpB
dWRpb1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0SW5wdXRGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRPdXRwdXRGb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJv
bGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
RmFjdG9yeUNsZWFyS2V5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRpZENvbm5lY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlvbmFyeTo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpLZXll
ZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFu
aW1hdG9yR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5p
bWF0b3JHZW5lcmljKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6
ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L0tleWVkRGVjb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6c3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dExheW91dDo6VGV4dExheW91dCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjplbnN1
cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0ZvckdseXBoIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2
ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3Bs
YXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUZvbnRzOjpH
bHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgorICAgICAgICAoV2ViQ29yZTo6
R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50R3Jh
cGg6OmZpbmRPckNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNoYXBlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6Y29w
eVNoYXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6
cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUZhY3RvcnlGYWlyUGxh
eVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1QaWNrZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0Y6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bm90aWZp
Y2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bGVnaWJsZU91
dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnJlc291cmNlTG9h
ZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6
c2V0UGxheWVySXRlbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0
VHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZP
YmpDOjpyZWFkVHJhY2tNZXRhZGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9y
bUJ1ZmZlcmVkVGltZVJhbmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVSb3RhdGlvblNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFz
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrV2l0aFRvbGVyYW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNl
ZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJh
bWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2Vs
ZWN0b25PcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFt
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6YWRqdXN0VGlsZUNvdmVyYWdlUmVjdEZvclNjcm9s
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJ
bmRpY2F0b3JMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6Y29tbW9uSW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2Nv
YTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW06CisgICAgICAgICgtW1dlYlRpbGVkQmFja2lu
Z0xheWVyIGNyZWF0ZVRpbGVDb250cm9sbGVyOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxh
eWVyV2luOjpQbGF0Zm9ybUNBTGF5ZXJXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHA6CisgICAgICAgIChXZWJUaWxlZEJh
Y2tpbmdMYXllcldpbjo6Y3JlYXRlVGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6bV9wcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0
YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dDo6Zm9udFJhbmdlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1
cmVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW06CisgICAgICAgIChUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJl
Q2FjaGVDVi5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNWOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmxvYWRFeHRl
cm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmU6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnB1c2hOZXh0
SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJU09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRlQ29tbWFuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6OnNldFNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
bkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldL
Q0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6
OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2Fj
aGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1cmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVh
bWVyQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1cmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFj
dG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5
OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1Bh
Y2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJH
U3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29u
dmVydFRvWVVWKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENO
b3RpZmllcnNNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFubmVsTm90
aWZpZXI6OmZpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJM
RGVjb2Rlcjo6Y3JlYXRlRGVjb2RlVGFzayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6UmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRCb2R5RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAg
ICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9yZXN0YXJ0XSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tp
ZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2Fj
aGVNYW5hZ2VyOjpsb2FkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6OkN1cmxDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OndpbGxTZXR1cFNzbEN0eCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNhbGxPbldvcmtlclRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVRdWV1ZVNvdXA6OnJlc29sdmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bkludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L0xvY2FsZUlDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2Fs
ZU5vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b2RlY0lDVTo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENv
ZGVjTGF0aW4xLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0xhdGluMTo6cmVnaXN0
ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyQ29k
ZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjE2OjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b2RlY1VURjg6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VzZXJEZWZpbmVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VzZXJEZWZp
bmVkOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dpbik6CisgICAgICAgICogcGxhdGZvcm0v
dnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VlJQ
bGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmdldFZSRGlzcGxheXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dURCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjpjcmVhdGVQcmVw
YXJlZFN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXQ0RhdGFPYmplY3Q6OlNldERhdGEpOgorICAgICAgICAqIHJl
bmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWls
ZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJ1bik6CisgICAgICAgIChXZWJDb3JlOjpD
b21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9vdElubGluZUJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wbGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9h
dGluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0Ojpj
b3B5VG9OZXdDb250YWluZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmpl
Y3Q6OmNsb25lRm9yTmV3UGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5n
T2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZsb2F0c1RyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9H
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFy
ZWEpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdu
bWVudENvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21w
dXRlRmxleEZhY3RvclVuaXRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6c2V0dXApOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bXV0YWJsZUxpc3RCYXNlZFRlc3RSZXN1bHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6YWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZSk6CisgICAgICAgICogcmVuZGVy
aW5nL0xheWVyT3ZlcmxhcE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllck92ZXJsYXBN
YXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omluc2VydEludG9UcmFja2VkUmVuZGVyZXJN
YXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uZWREZXNjZW5kYW50c01hcDo6YWRkRGVz
Y2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YmVnaW5VcGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVC
bG9ja1JhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZUZsb2F0aW5nT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Om1hdGVyaWFsaXplUmFyZUJsb2Nr
Rmxvd0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y3JlYXRlSW5saW5lQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNvdW50ZXJOb2RlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRnJhZ21lbnRDb250YWluZXI6OnNldFJlbmRlckJveEZyYWdtZW50SW5mbyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb250YWluaW5nRnJhZ21lbnRNYXApOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
ZW9tZXRyeU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1
dG9SZXBlYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Ojp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0
ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xp
cFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQW5jZXN0b3JD
bGlwcGluZ1N0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFy
dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpu
b3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25z
dHJhaW5lZExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRl
TGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3cpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0OjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpzdHlsZURpZENoYW5nZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWlu
dFZpZXdSZWN0YW5nbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y29t
cG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjppbWFnZVF1YWxpdHlDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1
bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpwbGFj
ZUVsbGlwc2lzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6YXBwZW5kRmxvYXQpOgorICAgICAgICAqIHJlbmRl
cmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmNvbGxlY3RCb3VuZHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlTGluZUxheW91dDo6TGF5b3V0OjpydW5SZXNvbHZlciBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OmdlbmVyYXRlTGluZUJveFRyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9U
ZXh0QXV0b1NpemluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZzo6YWRk
VGV4dE5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJbnNldFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNpcmNsZVNo
YXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVsbGlwc2VTaGFwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVQb2x5Z29uU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNy
ZWF0ZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlQm94U2hhcGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlUGF0aDo6
YmxlbmQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsbExheWVyOjpGaWxsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpv
cGVyYXRvcj0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xvbmVQdHIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjphZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjplbnN1cmVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjplbnN1cmVUcmFuc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlRGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1NWR0RhdGE6OlN0
eWxlU2hhZG93U1ZHRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3gpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRTdHJv
a2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5kZXJl
cik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3Vy
ZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6
OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OlJl
bmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlUmVsYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
Ojpjb21taXRSZWxhdGlvbnNUb1JlbmRlclN0eWxlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNj
b3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zIGNv
bnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBzdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpTVkdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmVuc3VyZVNWR1Jh
cmVEYXRhKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhCeXRlU3RyZWFtOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjpz
Y2hlZHVsZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRGVjb3JhdGVkRW51bWVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxTZXR0aW5nczo6ZnJvbSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R1YkZyb250ZW5kOjpJbnNwZWN0b3JTdHViRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFByaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpxdWV1ZU1pY3JvVGFzayk6CisgICAgICAgICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24pOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJF
dmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckds
b2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNz
YWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dv
cmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6Oldvcmtl
clRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJl
Z2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1
cGRhdGVSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0
TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVyKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0
YWJhc2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6U1dTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9i
UXVldWU6OnJ1blJlZ2lzdGVySm9iKToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VX
aXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFs
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xl
TWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRX
aXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6dXBsb2FkKToKKyAgICAgICAgKiB4bWwvWFBhdGhG
dW5jdGlvbnMuY3BwOgorICAgICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYUGF0aDo6ZXZhbHVhdGVQcmVkaWNhdGUpOgorICAgICAgICAqIHhtbC9YU0xT
dHlsZVNoZWV0TGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0Ojps
b2FkQ2hpbGRTaGVldCk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZFN0YXJ0RWxlbWVudE5TQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRW5kRWxlbWVu
dE5TQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5k
Q2hhcmFjdGVyc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6
OmFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENEQVRBQmxvY2tDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRDb21tZW50Q2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kSW50ZXJuYWxTdWJzZXRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRFcnJvckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBh
cnNlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQpOgorCiAy
MDE5LTA4LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4IGZvciBXaW5DYWlybywgcGFydCAyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwppbmRleCA2MGU3ZmI1NmM5NzA1ZTE5ZmM4OWJjOGE2YmQ0ZjQyM2VmMTYy
NWJlLi4wNzBmYTI1OTUxNzFmYzg1OTU5YzI4Y2JlNTYwNWMxYmYwYzhmYmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOC0xNiAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGlj
aCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBH
YXJlbi4KKworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NM
LmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwOgorICAgICAgICAoUEFMOjpDbG9j
azo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tOgorICAgICAg
ICAoQ2xvY2s6OmNyZWF0ZSk6CisKIDIwMTktMDgtMTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIv
Q2hhbmdlTG9nCmluZGV4IGU2YTUzYjMxMWUyZWNkMjE2Nzg1MzVhZTFhMzA5YjAwOWFlYWFhN2Uu
LmE2ZGE1YzBhODc3YTNiY2JkYTQyZWM2NDI4Y2VmODY3NTlmNWYzNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
KyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6V2Vi
RHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6CisgICAgICAgICogZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6bGF1bmNoQnJv
d3Nlcik6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFj
a2VuZCk6CisKIDIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZh
c3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9uIHBhcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYmI3YWU3Y2QzZDk1OGRjMzE5NGVmM2FiMjIxOGUyZDVhNTcwMTk3Ni4uNGY5N2Ri
MDBkNmE0MGJlNWFlYzFlMzExMGQzOTljMGQzYzY2MzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
NTAgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3Qt
YWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2sg
cGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAw
NjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzayk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZv
ck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hcDo6YWRk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFi
bGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRD
aGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVRdW90YVVzZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBw
bGVtZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjpzY2hlZHVsZURhdGFiYXNlVXBkYXRlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6Om1ha2VFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6Q2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpDYWNoZTo6dXBkYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OlBlbmRpbmdGcmFtZUxvYWQ6OnJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
YWRkUHJlbG9hZGVkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJy
ZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3luY2hyb25pemUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJlYWRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OnJldHJpZXZlRnJvbU1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdl
Ojp0cmF2ZXJzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3VicmVzb3VyY2VzRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1
YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0
Y2hDYWNoZTo6c3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRjaENhY2hlOjpzdG9yZVJl
ZGlyZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVE
ZWZhdWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6bmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nl
c3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpd
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFn
ZVNlc3Npb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nl
c3Npb25DdXJsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRp
b25QcmVzZW50ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1
bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNv
dXA6Ok5ldHdvcmtTZXNzaW9uU291cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
U291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrU2Vzc2lvblNvdXAuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAod2Via2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbVJlYWRBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTUROU1Jl
Z2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ01vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDTW9u
aXRvcjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRl
cjo6TmV0d29ya1JUQ1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3Zp
ZGVyOjpjcmVhdGVTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6
OndyYXBOZXdUQ1BDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVN5bmNN
ZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUluY29taW5n
TWVzc2FnZXNUaHJvdHRsaW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hT
eW5jTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNl
bmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgor
ICAgICAgICAoSVBDOjpEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5
bmMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9n
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6OmNyZWF0
ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJj
ZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5n
Q29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRl
Rm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZv
ckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdD
b250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAg
ICAgIChBUEk6OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdl
YmtpdENvbnRleHRNZW51SXRlbUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51
X2l0ZW1fbmV3KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9n
YWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9j
a19hY3Rpb24pOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0
b2NrX2FjdGlvbl93aXRoX2xhYmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9uZXdfd2l0aF9zdWJtZW51KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfc2VwYXJhdG9yKToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGV4
bWFwTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVu
c3VyZVJvb3RMYXllcik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKToKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVt
b3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQ
cm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFy
ZWFibGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6cmVnaXN0
ZXJPYnNlcnZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXS0Nv
bnRleHRTZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3Bw
OgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05v
dGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgor
ICAgICAgICAoV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAgICAg
KFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0
Y2hlc0NsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAgICAg
IChXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xp
Y3lDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9X
S1BhZ2VQcml2YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUgaW5p
dFdpdGhQYWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoK
KyAgICAgICAgKFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hUVFBD
b29raWVTdG9yZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2Fk
RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxl
Z2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxl
ciBfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlv
blNlc3Npb24gc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNRTGl0
ZVN0YXRlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVu
dC5jcHA6CisgICAgICAgIChhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5j
cHA6CisgICAgICAgIChhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHA6
CisgICAgICAgIChhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJr
aXRGYXZpY29uRGF0YWJhc2VPcGVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAod2Via2l0RmluZENvbnRyb2xsZXJDb25z
dHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQu
Y3BwOgorICAgICAgICAoYXR0YWNoRm9ybUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJr
aXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hJY29uTG9hZGlu
Z0NsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50
VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Oldl
YktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOgor
ICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNz
YWdlX2hhbmRsZXIpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lz
dGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRl
eHRDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRp
b25fYWxsb3dlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwOgorICAgICAgICAod2Via2l0RW1vamlDaG9v
c2VyU2V0dXBFbW9qaVNlY3Rpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJJbnNwZWN0b3JDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcik6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgbWF5YmVJbnN0YWxsSWNvbkxvYWRp
bmdDbGllbnRdKToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6
Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVBy
b3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAgICAgICAg
KFdLV1BFOjpWaWV3OjpWaWV3KToKKyAgICAgICAgKFdLV1BFOjpWaWV3OjpzZXRDbGllbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHA6CisgICAgICAgIChX
UEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3
Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3OjpydW5KYXZh
U2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdQRVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxl
Z2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpjcmVhdGVDb250
ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNyZWF0ZVVJQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6
OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3Jl
YXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRU
ZXh0SW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1
cmVDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBvcmF0ZVVwZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpk
aXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZTo6Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNh
bGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxDb25uZWN0ZWRHYW1l
cGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVw
YWRDb25uZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVE
b3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dGFr
ZVVwbG9hZEFzc2VydGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3Bw
OgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5SZXF1aXJlc0d0azIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90
dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
bWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFj
OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlh
RWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjptX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0SWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dEZpbmRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRj
aGVzQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVu
dUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEF0dGFj
aFRvUnVubmluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERy
YXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRGdWxsc2NyZWVuQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxl
Y3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzcGVlY2hTeW50
aGVzaXNEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fkcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVk
aWJsZU1lZGlhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRy
YWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29t
cG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJs
ZUltYWdlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRy
b2xsZXI6OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tB
cHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS0FwcGxpY2F0aW9u
U3RhdGVUcmFja2luZ1ZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25J
bml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjp3
ZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVEcmF3aW5nQXJlYVBy
b3h5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5n
OmJsdXJQcmV2aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyIGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAgICAgKC1b
V0tUZXh0RmluZGVyQ2xpZW50IGluaXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmluZFVJOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZv
cm1TdGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0
MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICog
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2Vi
Vmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdhbWVw
YWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVj
dGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlU2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRs
ZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRFZGl0
b3JDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudCk6CisgICAgICAg
IChXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZVNldFJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRVSUNsaWVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJh
bm5lck1hYy5tbToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhD
QUxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RP
TS9ET01PYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldE9yQ3JlYXRlRE9NT2Jq
ZWN0Q2FjaGVGcmFtZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OnB1dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRFeHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9u
TWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViRWRpdG9y
Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYkV4dGVuc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
UGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRGcmFtZUdldE9yQ3JlYXRlKToKKyAgICAgICAgKHdl
YmtpdFdlYlBhZ2VDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0
b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgor
ICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3Nl
dEZvcm1EZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjpzZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ01lc3NhZ2U6OlBlbmRp
bmdNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXRGYWN0
b3J5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5Ojpj
cmVhdGVTZXJ2ZXJUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRG
YWN0b3J5OjpjcmVhdGVVZHBTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQXN5bmNSZXNvbHZlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I6OlBsdWdp
bkRlc3RydWN0aW9uUHJvdGVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6c2NoZWR1bGVUaW1lcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5YMTE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdv
cmtlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hv
b3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVu
dDo6c2hvd1BhaW50UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVu
c3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRm
b3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV90ZXh0
QXV0b1NpemluZ0FkanVzdG1lbnRUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YmVn
aW5QcmludGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpw
cmludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0
b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6bWFya0FsbExheWVyc1ZvbGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmxpYldlYlJUQ05ldHdvcmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjph
ZGRTdXBwbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OlNvdXJjZTo6U291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JT
dGF0ZSk6CisKIDIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZh
c3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9uIHBhcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggOTNlN2U4MzU4ZWM2YjFhYTA3NzkzOTExMjkwZmY4N2UxMjNm
YjQ0NS4uYjhkMDQ0Yjk5OGRhNmI0ZDA1NDliZTEzYmUxMzE1OGE4YTA5MzUzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0wOC0xNiAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3
aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToK
KyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVh
ZDo6dGVybWluYXRlKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAgICAo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24pOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MTktMDgtMTUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0ZUV10gRW5hYmxlIENvcmVGb3VuZGF0aW9uIHVzZSBpZiBidWlsZGluZyBmb3IgQXBwbGUgdGFy
Z2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCmluZGV4IGM2M2VmYWJhNWQ4ODY4M2JlZmJmMTY5
NThmZjFmZTAwMDRlYTljNmIuLjZiNjAxMzQ4MzIxZjU1ZDM3NzAwMTgxZGRmNGUzMjUyNTM0Yjg0
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgt
MTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBB
ZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtl
VW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNy
ZWF0ZUZyb250ZW5kU2V0dGluZ3MpOgorCiAyMDE5LTA4LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNDg0
NTQpOiBXSzEgaW5zcGVjdG9yIGZyb250ZW5kIGNsaWVudCBkb2Vzbid0IHF1ZXVlIG1lc3NhZ2Vz
IHRvIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQncyBsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZwppbmRleCAwMWQyMDhlYzMwYTAyMTg5YjdkNzJjNTUzNGMwNjk3NjZmMDU5OTRhLi5hNGU3
ZWU3ZWIzYmRhMGM0ZWIxMmQxNjc3NTYzOTAxNjg1ODkxNThkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVu
dC5tbToKKyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2V0Vmlld3BvcnRDb25z
dHJhaW5lZExheWVyczpzdGlja3lDb250YWluZXJNYXA6XSk6CisKIDIwMTktMDgtMTUgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRCBhbm5vdGF0aW9uIHBhcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCA0ZWI3YTMzZjM5NDU0Yjk4YTcwM2M2NGFlZTFlN2E5M2Y5ZWJlMDgzLi4wOGRmNjNkMzBiNTBk
NmU0OTIwZGZiYjdlMzJhMjhkM2E4ZTMzNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
KyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQ
cml2YXRlIGluaXRdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAg
ICAgICAoLVtXZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbToK
KyAgICAgICAgKFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseSk6CisgICAgICAgIChXS1BD
Qm9vbGVhblJlcGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuQW5kRGF0YVJlcGx5KToKKyAgICAg
ICAgKFdLUENJbnN0YW50aWF0ZVBsdWdpblJlcGx5KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRo
b2ROYW1lZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToK
KyAgICAgICAgKC1bV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdpbl0pOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3IHNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6cmVwZWF0OnRpbWVyRnVuYzpdKToK
KyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAg
KERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKGFkZFJlZGly
ZWN0VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRh
VG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6
CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0
YWNoU2NyaXB0RGVidWdnZXJdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIubW06CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpj
cmVhdGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAo
LVtXZWJUZXh0SXRlcmF0b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHRd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
Omdyb3VwTmFtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6
d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0
ZWRGcmFtZXM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91
cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyXSk6CisgICAg
ICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6d2l0aExpZmV0aW1lOl0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgIChXZWJWaWV3TGF5ZXJGbHVzaFNj
aGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIpOgorICAgICAgICAoLVtXZWJWaWV3
UHJpdmF0ZSBpbml0XSk6CisKIDIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9u
IHBhcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBhMGIxNzIzZjBkOWE4NWQzMDRl
ZjFkMTg1OWViMjYyOWQ5Mzk0Njk1Li4xZDE2YWI4MjlmODY0Yzg3N2VhNmI2ZmRiODIwZDRjNjhi
NWIzMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIw
MTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBb
V1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVk
LCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3Ojpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6d25kUHJvYyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
V2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURh
dGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVu
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICog
V2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKFdlYkVsZW1lbnRQcm9wZXJ0eUJh
Zzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKToKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6
CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRp
b24pOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5j
cHA6CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6Y3JlYXRlRDNEUG9zdFByb2Nlc3Np
bmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAg
ICAoV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlTW91c2VFdmVudCk6Cisg
ICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmlld01JTUVUeXBlKToKKyAgICAgICAg
KFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAg
KFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVz
ZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKToKKwogMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQg
aXMgZmFzdC1hbGxvY2F0ZWQsIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIGFubm90YXRpb24gcGFy
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAw
N2Q3MDliYTEyYzgyYzg1NDgyZDczYzcyMzc3ZjUxOWU3ZmMyYTVjLi5kMGU2MjUyODJhODRmNGYz
NWVlZGVkMTk1ZWRiOGRjODk3YjFhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgSlNDYWxsYmFja09i
amVjdERhdGEgewogICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKCFtX3ByaXZhdGVQcm9wZXJ0aWVzKQotICAgICAgICAgICAgbV9wcml2
YXRlUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7
CisgICAgICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxKU1ByaXZhdGVQ
cm9wZXJ0eU1hcD4oKTsKICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcy0+c2V0UHJpdmF0ZVBy
b3BlcnR5KHZtLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAppbmRleCBhZTNhNmZlM2FjZjljNmE4MDM5NGUxZDczNGZhMzE3ZDkwOGZhZTJjLi45Y2Ez
YjRiZjQwODUwNzUwYjhiYzQxOTQ5Zjc1MDQyYjM1NzIzMWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTgs
NyArNTgsNyBAQCBpbmxpbmUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmFzQ2FsbGJhY2tPYmplY3QoRW5jbwogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIHZvaWQqIGRh
dGEpCiAgICAgOiBQYXJlbnQoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQotICAgICwgbV9jYWxsYmFj
a09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwg
anNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtlVW5pcXVlPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPihkYXRhLCBqc0NsYXNzKSkKIHsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChWTSYgdm0sIEpTQ2xhc3NSZWYganND
bGFzcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBQYXJlbnQodm0sIHN0cnVjdHVyZSkK
LSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxsYmFja09i
amVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVjdERhdGEo
bWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4obnVsbHB0ciwganNDbGFzcykpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCmluZGV4IGYxYzlkNTcw
MmE4YWE2OTA0NGRmYjI5NWI0NzFmY2ZjYmM4OTBiNmIuLjdlZWMyYTkwYTQ0Zjg2MGJhYTIyNzZi
OTZkNDVmMmJkNjg2MTcwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVm
LmNwcApAQCAtNTksMjEgKzU5LDIxIEBAIE9wYXF1ZUpTQ2xhc3M6Ok9wYXF1ZUpTQ2xhc3MoY29u
c3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpTQ2xhc3MqCiAgICAgaW5p
dGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljVmFsdWUqIHN0YXRp
Y1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGljVmFsdWVzKSB7Ci0gICAgICAgIG1fc3RhdGljVmFs
dWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7
CisgICAgICAgIG1fc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGlj
VmFsdWVzVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNWYWx1ZS0+bmFtZSkgewogICAg
ICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljVmFsdWUt
Pm5hbWUpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZU5hbWUuaXNOdWxsKCkpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBzdGQ6Om1ha2VfdW5p
cXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3RhdGljVmFs
dWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7Cisg
ICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBtYWtl
VW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3RhdGlj
VmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7
CiAgICAgICAgICAgICArK3N0YXRpY1ZhbHVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYg
KGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9uID0gZGVmaW5pdGlvbi0+c3Rh
dGljRnVuY3Rpb25zKSB7Ci0gICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtlX3Vu
aXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CisgICAgICAgIG1fc3Rh
dGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFi
bGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNGdW5jdGlvbi0+bmFtZSkgewogICAgICAgICAg
ICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljRnVuY3Rpb24t
Pm5hbWUpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUuaXNOdWxsKCkpCi0gICAgICAg
ICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBzdGQ6
Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5jYWxsQXNG
dW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKKyAgICAgICAgICAgICAgICBt
X3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8U3Rh
dGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0aW9uLCBzdGF0aWNG
dW5jdGlvbi0+YXR0cmlidXRlcykpOwogICAgICAgICAgICAgKytzdGF0aWNGdW5jdGlvbjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTEyOCwyMSArMTI4LDIxIEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0
RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6Vk0mLCBPcGFxdWVKU0NsYXNzKiBq
c0NsCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGlj
VmFsdWVzKSB7Ci0gICAgICAgIHN0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVl
SlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBzdGF0aWNWYWx1ZXMgPSBtYWtl
VW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKICAgICAgICAgT3BhcXVl
SlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBqc0NsYXNzLT5t
X3N0YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFzc1N0YXRpY1Zh
bHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3RhdGljVmFsdWVzLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+
aXNBdG9tKCkpOwogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IGl0LT5rZXktPmlzb2xh
dGVkQ29weSgpOwotICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVOYW1lLmltcGwo
KSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFByb3Bl
cnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVl
TmFtZSkpOworICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVOYW1lLmltcGwoKSwg
bWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFByb3BlcnR5LCBpdC0+
dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGljRnVuY3Rpb25zKSB7
Ci0gICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFz
c1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBtYWtl
VW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKICAgICAgICAgT3Bh
cXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBqc0Ns
YXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFz
c1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3Rh
dGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFT
U0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwotICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5h
ZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljRnVuY3Rp
b25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVz
KSk7CisgICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChpdC0+a2V5LT5pc29sYXRlZENv
cHkoKSwgbWFrZVVuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihpdC0+dmFsdWUtPmNhbGxBc0Z1
bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTE1MSw3ICsxNTEsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIE9wYXF1ZUpTQ2xhc3M6
OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3Bh
cXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPm9wYXF1ZUpTQ2xhc3NEYXRhKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICBjb250ZXh0RGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPihleGVjLT52bSgpLCB0aGlz
KTsKKyAgICAgICAgY29udGV4dERhdGEgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250ZXh0
RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CiAgICAgcmV0dXJuICpjb250ZXh0RGF0YTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFp
bnRQcml2YXRlLmNwcAppbmRleCBkOWVlNjc0MDM0OWNmZWZkZmJjYzBkMzEwOTRmMWY0ZGU1YTUy
YzFlLi5iYTRhNWExNjY5N2FmNWY4YTk3MjJlNTc0NjllMzk0ZDk3OTA0MmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2
YXRlLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEpTQ29udGV4dEdyb3VwQWRkTWFya2luZ0Nv
bnN0cmFpbnQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTTWFya2luZ0NvbnN0cgogICAgIC8v
IGVsc2UgZ2V0cyBtYXJrZWQuCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSA9
IENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmc7CiAgICAgCi0gICAgYXV0byBj
b25zdHJhaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oCisg
ICAgYXV0byBjb25zdHJhaW50ID0gbWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4o
CiAgICAgICAgIHRvQ1N0cmluZygiQW1jIiwgY29uc3RyYWludEluZGV4LCAiKCIsIFJhd1BvaW50
ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2spKSwgIikiKSwKICAgICAg
ICAgdG9DU3RyaW5nKCJBUEkgTWFya2luZyBDb25zdHJhaW50ICMiLCBjb25zdHJhaW50SW5kZXgs
ICIgKCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2sp
KSwgIiwgIiwgUmF3UG9pbnRlcih1c2VyRGF0YSksICIpIiksCiAgICAgICAgIFtjb25zdHJhaW50
Q2FsbGJhY2ssIHVzZXJEYXRhXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1h
cC5tbQppbmRleCBkNDY5Yjc1YTMxZjBlZmNhOWQwN2FiYjAzYjBiZTY2MTYxYjM5NTY3Li40YjU5
OTA3M2ZlNzZiNDg2NDQzNjk5YWJkY2IzNGM0MTY0YmMyZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZiljb250ZXh0
CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMgPSBOU1BvaW50ZXJG
dW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7
CiAgICAgbV9jYWNoZWRPYmpDV3JhcHBlcnMgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRo
S2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNpdHk6
MF07CiAKLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vh
a0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNvbnRl
eHQpLT52bSgpKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEpTQzo6V2Vh
a0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNvbnRl
eHQpLT52bSgpKTsKIAogICAgIEFTU0VSVCghdG9KU0dsb2JhbE9iamVjdChjb250ZXh0KS0+d3Jh
cHBlck1hcCgpKTsKICAgICB0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5zZXRXcmFwcGVyTWFw
KHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJh
Y2tGdW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVu
Y3Rpb24ubW0KaW5kZXggZWU5MzI4MjFlZjc0YmQ2ODkxYWU4ZjI5ZmFkN2JiYTVhZmVhMGNiYy4u
NzNjYjQyNzA0MzgxODMxZTgxOWQ5ZDk0M2ViOWU1NDQwMzA5NmY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC0xOTUsMTgg
KzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMg
UmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlRG91YmxlKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnREb3Vi
bGU8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnREb3Vi
bGU8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJvb2xl
YW4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRCb29sZWFu
PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lkKCkKQEAgLTIxNyw3
ICsyMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudElkPigp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SWQ+KCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3QgY2hhciogYmVnaW4s
IGNvbnN0IGNoYXIqIGVuZCkKQEAgLTIyOCwxOSArMjI4LDE5IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmIChjbHMgPT0gW0pTVmFsdWUgY2xhc3Nd
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEpT
VmFsdWU+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50
SlNWYWx1ZT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNTdHJpbmcgY2xhc3NdKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TU3RyaW5nPigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TU3RyaW5n
PigpOwogICAgICAgICBpZiAoY2xzID09IFtOU051bWJlciBjbGFzc10pCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7CiAg
ICAgICAgIGlmIChjbHMgPT0gW05TRGF0ZSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKICAgICAgICAgaWYgKGNs
cyA9PSBbTlNBcnJheSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGxiYWNrQXJndW1lbnROU0FycmF5PigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0Rp
Y3Rpb25hcnkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CiAKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciop
CkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgU3RyaW5nUmFuZ2Ug
Y29weShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9
IHZhbHVlVG9UeXBlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4oaW52
b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH07CkBAIC0z
MzUsNDUgKzMzNSw0NSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBz
dGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1l
cmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVy
aWM8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRCb29sZWFu
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdEJvb2xlYW4+KCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lkPigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZU9mQ2xhc3MoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0
VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMg
UmVzdWx0VHlwZSB0eXBlU3RydWN0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQp
CiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5KGJlZ2luLCBlbmQpOwogICAgICAgICBp
ZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdHlwZVRvVmFsdWVJbnZvY2F0aW9uRm9yKGNv
cHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRT
dHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiB9OwpAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRpYyBKU09iamVjdFJl
ZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24oSlNDb250ZXh0ICpjb250ZXh0LCBO
U0ludm9jCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOwogICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAgIGF1dG8gaW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8
SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5cGUsIGluc3RhbmNl
Q2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBhdXRvIGlt
cGwgPSBtYWtlVW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihpbnZvY2F0aW9u
LCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUocmVzdWx0
KSk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gaW1wbC0+bmFtZSgpOwogICAgIHJldHVybiB0
b1JlZihKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgbmFtZSwgV1RGTW92ZShpbXBsKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGUwMWU5NzBjN2Y1ODAzNjU2
MThlZjFkYWI4NTU0NGQ3MDRmOWI0N2EuLjc4ZDc2NTVmZjgwNzc2MGQ0NjA4YTYxN2U1N2M5MGYx
NTQyNzk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBqc2NDb250ZXh0U2V0VmlydHVh
bE1hY2hpbmUoSlNDQ29udGV4dCogY29udGV4dCwgR1JlZlB0cjxKU0NWaXJ0dWFsTQogICAgICAg
ICAgICAgcHJpdi0+anNDb250ZXh0ID0gSlNSZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVmPihB
ZG9wdCwgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqc2NWaXJ0dWFsTWFjaGluZUdldENv
bnRleHRHcm91cChwcml2LT52bS5nZXQoKSksIG51bGxwdHIpKTsKICAgICAgICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0gdG9KU0dsb2JhbE9iamVjdChwcml2LT5qc0NvbnRleHQuZ2V0KCkpOwogICAg
ICAgICBpZiAoIWdsb2JhbE9iamVjdC0+d3JhcHBlck1hcCgpKQotICAgICAgICAgICAgZ2xvYmFs
T2JqZWN0LT5zZXRXcmFwcGVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXcmFwcGVyTWFwPihw
cml2LT5qc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0V3Jh
cHBlck1hcChtYWtlVW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgp
KSk7CiAgICAgICAgIGpzY1ZpcnR1YWxNYWNoaW5lQWRkQ29udGV4dChwcml2LT52bS5nZXQoKSwg
Y29udGV4dCk7CiAgICAgfSBlbHNlIGlmIChwcml2LT52bSkgewogICAgICAgICBBU1NFUlQocHJp
di0+anNDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NXcmFwcGVyTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NX
cmFwcGVyTWFwLmNwcAppbmRleCAxMWJiN2MwYjg3MzdkYjY3ZGQxN2RjZDI0ZjcwMjk0MzQ0Njlh
ODAzLi5mNTIzZWE0MTk5ZjhhYmQ3MzJmNzdiNjI4MTQxMjAxMzRiYjhiZWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogV3JhcHBlck1hcDo6V3JhcHBlck1hcChKU0ds
b2JhbENvbnRleHRSZWYganNDb250ZXh0KQotICAgIDogbV9jYWNoZWRKU1dyYXBwZXJzKHN0ZDo6
bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pT
KGpzQ29udGV4dCktPnZtKCkpKQorICAgIDogbV9jYWNoZWRKU1dyYXBwZXJzKG1ha2VVbmlxdWU8
SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGpzQ29udGV4dCkt
PnZtKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9i
ZVN0YWNrLmNwcAppbmRleCBhNzVmNThkYzE0NmIzYjY0OTVjZWIxNjdhZGY0ZGFiZmYwNmIwYzg5
Li5kYTQ3NzA1MWYzNDVlMDcxNjhmYzdkMDZlMGM3ZjUyNjMxMTg2ZTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKQEAgLTEzNCw3ICsxMzQs
NyBAQCBQYWdlKiBTdGFjazo6ZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNzKQogICAgIGlmIChM
SUtFTFkoaXQgIT0gbV9wYWdlcy5lbmQoKSkpCiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9
IGl0LT52YWx1ZS5nZXQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
Z2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNzKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNz
KTsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2VzLmFkZChiYXNlQWRkcmVzcywgV1RGTW92
ZShwYWdlKSk7CiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcAppbmRleCBkYmFhNGM5OTBhZDQ4ZjAzZjRhNzUxYzllNDBmOWY2YTZmZjA0ODM5Li4zY2M3
NWMzNGE1MTNmMmY2ZmI0OTYyMWFmYTg4N2FiYmUyNTk0MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTI0MSw3ICsxMjQxLDcgQEAgY2xhc3MgTG93
ZXJUb0FpciB7CiAgICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9IFByaW50ZXI6Om1ha2VQ
cmludFJlY29yZExpc3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0byBwcmludFNwZWNpYWwg
PSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6
bWFrZV91bmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKKyAgICAgICAgYXV0
byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5h
ZGRTcGVjaWFsKG1ha2VVbmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKICAg
ICAgICAgSW5zdCBpbnN0KEFpcjo6UGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50U3Bl
Y2lhbCkpOwogICAgICAgICBQcmludGVyOjphcHBlbmRBaXJBcmdzKGluc3QsIHN0ZDo6Zm9yd2Fy
ZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBhcHBlbmQoV1RGTW92ZShpbnN0
KSk7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsKICAgICB7CiAgICAg
ICAgIGlmICghZmllbGQpIHsKICAgICAgICAgICAgIGZpZWxkID0gc3RhdGljX2Nhc3Q8VCo+KAot
ICAgICAgICAgICAgICAgIG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8VD4oc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpKTsKKyAgICAgICAgICAgICAgICBt
X2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4IGZmY2IyZDRlMjcx
NDQyOTcwZTU0NjQzNjY3MGY3ZjI5ZGViMWFiMWMuLjJlY2NkYWMwNDllNjhkMTEzZTIzZjk3ZjI0
MzUzYTVkNGFhYTNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNw
cApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIFByb2Nl
ZHVyZTo6UHJvY2VkdXJlKCkKICAgICA6IG1fY2ZnKG5ldyBDRkcoKnRoaXMpKQogICAgICwgbV9s
YXN0UGhhc2VOYW1lKCJpbml0aWFsIikKLSAgICAsIG1fYnlwcm9kdWN0cyhzdGQ6Om1ha2VfdW5p
cXVlPE9wYXF1ZUJ5cHJvZHVjdHM+KCkpCisgICAgLCBtX2J5cHJvZHVjdHMobWFrZVVuaXF1ZTxP
cGFxdWVCeXByb2R1Y3RzPigpKQogICAgICwgbV9jb2RlKG5ldyBBaXI6OkNvZGUoKnRoaXMpKQog
ewogICAgIG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobV9udW1FbnRyeXBvaW50cyk7CkBAIC0z
MTEsMjggKzMxMSwyOCBAQCB2b2lkIFByb2NlZHVyZTo6ZGVsZXRlT3JwaGFucygpCiBEb21pbmF0
b3JzJiBQcm9jZWR1cmU6OmRvbWluYXRvcnMoKQogewogICAgIGlmICghbV9kb21pbmF0b3JzKQot
ICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWluYXRvcnM+KCp0aGlz
KTsKKyAgICAgICAgbV9kb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2RvbWluYXRvcnM7CiB9CiAKIE5hdHVyYWxMb29wcyYgUHJvY2VkdXJl
OjpuYXR1cmFsTG9vcHMoKQogewogICAgIGlmICghbV9uYXR1cmFsTG9vcHMpCi0gICAgICAgIG1f
bmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAg
ICAgICAgbV9uYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJkc0NGRyYgUHJvY2VkdXJl
OjpiYWNrd2FyZHNDRkcoKQogewogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCi0gICAgICAgIG1f
YmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKKyAg
ICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKIEJhY2t3YXJkc0RvbWluYXRvcnMmIFBy
b2NlZHVyZTo6YmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0Rv
bWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlx
dWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3YXJkc0RvbWlu
YXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1
cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQq
IFByb2NlZHVyZTo6YWRkRGF0YVNlY3Rpb24oc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFzaXpl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVNlY3Rp
b24+IGRhdGFTZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhU2VjdGlvbj4oc2l6ZSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IG1ha2VVbmlxdWU8
RGF0YVNlY3Rpb24+KHNpemUpOwogICAgIHZvaWQqIHJlc3VsdCA9IGRhdGFTZWN0aW9uLT5kYXRh
KCk7CiAgICAgbV9ieXByb2R1Y3RzLT5hZGQoV1RGTW92ZShkYXRhU2VjdGlvbikpOwogICAgIHJl
dHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAppbmRl
eCAzM2Y4YWJmZWZiYzFmOGY5MTY1NDVhM2JkY2ExOTZiMGNjNjZjMzk4Li5kNWQ2OWMzMGE1OTkx
NzVmMjgxNDgzNjI4NjM2ZmNiNzcwNjgwMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBDQ2FsbFNwZWNpYWwqIENvZGU6OmND
YWxsU3BlY2lhbCgpCiB7CiAgICAgaWYgKCFtX2NDYWxsU3BlY2lhbCkgewogICAgICAgICBtX2ND
YWxsU3BlY2lhbCA9IHN0YXRpY19jYXN0PENDYWxsU3BlY2lhbCo+KAotICAgICAgICAgICAgYWRk
U3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOworICAgICAgICAgICAg
YWRkU3BlY2lhbChtYWtlVW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwogICAgIH0KIAogICAgIHJl
dHVybiBtX2NDYWxsU3BlY2lhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHAKaW5kZXggZjM2YjliMmZlNjY4MTYwYjg4OTliMGM1MGIzMTk3ZDc1ODgyNGY4
MC4uOTVjYWEwMDRkOGViMzkyMzMwZTFjY2JiNjM5YTVjZWU3OWNiYzc5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBA
QCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgICAgICAgICBkYXRh
TG9nKGNvZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxsb2Nh
dGVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3Rl
cnM+KGNvZGUpOworICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycyA9
IG1ha2VVbmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4oY29kZSk7CiAgICAgICAg
IGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzLT5wcmVwYXJlRm9yR2VuZXJhdGlv
bigpOwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3Rh
aXIuY3BwCmluZGV4IGVmMTU0NGMwN2JiMzJhOTAzN2YyY2I3MWUxNWU3NGE5YmU2MWJmOTQuLjNk
Y2EyOTY3ODhiMDAxMDY4ZTAxZjQyM2UxMTZjN2MyYTRlN2RhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QjM6OkNvbXBpbGF0aW9uPiBjb21waWxlKEIzOjpQcm9jZWR1cmUmIHByb2MpCiAgICAgZ2Vu
ZXJhdGUocHJvYy5jb2RlKCksIGppdCk7CiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwg
bnVsbHB0cik7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+
KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgIEZJTkFM
SVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRlc3RhaXIgY29tcGls
YXRpb24iKSwgcHJvYy5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIH0KIApAQCAtMTg1NSw3ICsxODU1
LDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNhY2hlZFRlbXBSZWdpc3RlcnMoKQogICAgIHJvb3Qt
PmFwcGVuZChNb3ZlLCBudWxscHRyLCBBcmc6OmJpZ0ltbShiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+
KCZ0aGluZ3MpKSwgYmFzZSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogcGF0Y2hQb2ludDFSb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVj
aWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVj
aWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUu
YWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICAv
LyBJbiBQYXRjaHBvaW50LCBMb2FkIHRoaW5nc1swXSAtPiB0bXAuIFRoaXMgd2lsbCBtYXRlcmlh
bGl6ZSB0aGUgYWRkcmVzcyBpbiB4MTcgKGRhdGFNZW1vcnlSZWdpc3RlcikuCiAgICAgQjM6OlBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDEgPSBwYXRjaFBvaW50MVJvb3QtPmFwcGVuZE5ldzxC
Mzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5
MzAsNyArMTkzMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkKCkKICAgICBHUFJSZWcg
cGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIocGlu
bmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5h
ZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAg
ICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbCht
YWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9j
ayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBC
Mzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHZvaWQgdGVzdEFy
Z3VtZW50UmVnUGlubmVkMigpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50
R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVj
aWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVl
PEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hw
b2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNw
ZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmRO
ZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBA
IC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDMoKQogICAgIEdQ
UlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3Rl
cihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBj
b2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkp
OworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVj
aWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNp
Y0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHBy
b2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmlu
ZGV4IGNlNTM4YWI0ODIzY2FiYjEyMzQwNzVjYzhmY2Q3ODAxNTI4YTBhMjcuLjFjMDcwZDE3OWVk
MzliZjZkZGYwMWUzYmIzM2NiNjQ5YzNmYjczNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmgKQEAgLTE4OSw3ICsxODksNyBAQCBleHRlcm4gTG9jayBjcmFzaExvY2s7CiBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjb21waWxlUHJvYyhQcm9jZWR1cmUmIHByb2NlZHVy
ZSwgdW5zaWduZWQgb3B0TGV2ZWwgPSBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpKQogewog
ICAgIHByb2NlZHVyZS5zZXRPcHRMZXZlbChvcHRMZXZlbCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1cmUpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGMxMDg1OWFjZWQzZGI3
OGI2NjQ5NzZhMDhiOGU1YjQ4ZDY1MmIyZjMuLjc3ZmI2NWRhMGI3YTA2YzdkNjU4YmFiZGI0ZTUx
MDhhNzkxN2VlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc3RhdGUuc2V0U3Bp
bGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKHNwaWxsU3RhdGUpOwogCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghYWNjZXNzLmNhbGxMaW5rSW5mbygpKTsKLSAgICAgICAgICAgIGFjY2Vzcy5t
X2NhbGxMaW5rSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtJbmZvPigpOworICAgICAg
ICAgICAgYWNjZXNzLm1fY2FsbExpbmtJbmZvID0gbWFrZVVuaXF1ZTxDYWxsTGlua0luZm8+KCk7
CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZW5lcmF0ZWQgYSBwb2x5bW9ycGhpYyBj
YWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0byB0aGUgZ2V0dGVyCiAgICAgICAgICAgICAvLyBz
dHViLCB3aGljaCB0aGVuIGp1bXBlZCBiYWNrIHRvIHRoZSBtYWluIGNvZGUsIHRoZW4gd2UnZCBo
YXZlIGEgcmVhY2hhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAppbmRleCAyYmQ5ZmU2NTE5OWQw
N2YxNzNlMzgzMGRjNzRlNDY3ZWI5ZDU0MWZjLi45MjU3ZmMyMjY2NTI5Zjg2MTM3ZDVkYWQ4Yzky
NDk3MTgzOTA0NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBj
bGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVibGljIEFjY2Vzc0Nh
c2VTbmlwcGV0UGFyYW1zOjpTbG93UAogICAgIHZvaWQgQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXM6
OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhl
bHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBz
dGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgdG8gPSBqaXQubGFiZWwoKTsgXAotICAgICAgICBtX2dlbmVyYXRvcnMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czxD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZBX0FS
R1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBcCisgICAgICAgIG1f
Z2VuZXJhdG9ycy5hcHBlbmQobWFrZVVuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJn
dW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUs
IF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKICAg
ICB9IFwKIAogU05JUFBFVF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJBVElP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwCmluZGV4IDMzYmIwYzA2NjM1MzgxZTg5OGY2NWE4NzRmMWYzNmE4Yzk0ODIz
YWYuLjEwYzY1YmI5ZGQ3MDlhOWFmN2FiYTZjZWI4YTliNzM1OTc3MTY0MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CkBAIC02NSwxNSArNjUsMTUgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBs
KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgIC8vIENyZWF0
ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2Vy
dmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKIAotICAgIGF1dG8gZW50cnkgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpF
bnRyeUJsb2NrKTsKLSAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKKyAgICBhdXRv
IGVudHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9j
azo6RW50cnlCbG9jayk7CisgICAgYXV0byBmaXJzdEJsb2NrID0gbWFrZVVuaXF1ZTxCeXRlY29k
ZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7CiAgICAgbGlua0Js
b2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKICAgICBhcHBlbmRCbG9jayhX
VEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmlyc3RC
bG9jay5nZXQoKTsKICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsKIAotICAg
IGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29k
ZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CisgICAgYXV0byBleGl0ID0gbWFrZVVuaXF1ZTxCeXRl
Y29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIAogICAgIGJv
b2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIApAQCAtODQsNyArODQsNyBAQCB2
b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7
CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEganVtcCB0YXJnZXQsIHRo
ZW4gaXQncyB0aGUgbGVhZGVyIG9mIGl0cyBvd24gYmFzaWMgYmxvY2suCiAgICAgICAgIGlmIChp
c0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwgbmV4
dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKLSAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24pOworICAgICAgICAg
ICAgYXV0byBuZXdCbG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0cnVj
dGlvbik7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7CiAgICAgICAgICAg
ICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVkQmxv
Y2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcAppbmRleCBkOGRhYzE1ODVmYWIyYjk5OGMxZTVkODg3NTJiYTEyZGY2ZGFkYmRlLi4z
OTNmMTgyNGU0MWE0YmViNTE0YzYyYTY5NmYzM2E4MzcyNDk1Y2RkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMjY1LDcgKzI2NSw3
IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogCiB2b2lkIENhbGxMaW5r
SW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYgc2h1
ZmZsZURhdGEpCiB7Ci0gICAgbV9mcmFtZVNodWZmbGVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxD
YWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJhbWVTaHVmZmxlRGF0
YSA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IGVmMWNhYmZhNzE4YjA4MGQ3ZjNlODYzN2Y5Zjk0ZjYwNTg2ZWU0ZTgu
LjM5YTIzYjRjN2Y0N2Q4ZmNlNWUzMGVlY2E1NTBlNzdkYWQzMTU4NmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMzM3LDcgKzEzMzcsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiBDb2RlQmxvY2s6
OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNsb3coY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJikKIHsKICAgICBBU1NFUlQoIW1faml0RGF0YSk7Ci0gICAgbV9qaXREYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxKSVREYXRhPigpOworICAgIG1faml0RGF0YSA9IG1ha2VVbmlxdWU8SklU
RGF0YT4oKTsKICAgICByZXR1cm4gKm1faml0RGF0YTsKIH0KIApAQCAtMTU1MCw3ICsxNTUwLDcg
QEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2RlT2Zm
c2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2sKIHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZl
UmVnaXN0ZXJzKFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7CiAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGVuc3VyZUpJVERhdGEobG9ja2VyKS5t
X2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRM
aXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKKyAgICBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9j
YWxsZWVTYXZlUmVnaXN0ZXJzID0gbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oY2Fs
bGVlU2F2ZVJlZ2lzdGVycyk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVn
aXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJBdE9m
ZnNldExpc3QpCkBAIC0xNzkwLDcgKzE3OTAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZW5zdXJlQ2F0
Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3coY29uc3QgT3BDYXRjaAog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kpCiAgICAgICAgIGxp
dmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOwogCi0gICAg
YXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgYXV0byBwcm9maWxlcyA9IG1ha2VVbmlx
dWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmlsZXMtPm1fc2l6ZTsgKytpKQog
ICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJh
bmRzW2ldLm9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCmluZGV4IDg3MDY4YmE2NWRkODVjMjNmYmU0YTQ5MGU5NzRhNzI4MWYyNTYwNGMuLjMxNDM4
ZTBhYzUwNjliMjc0OTY5ODg4NmFiMTEyMDA3NmJjYjczYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTk0Myw3ICs5NDMsNyBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7Ci0gICAgICAgICAgICBhdXRv
IHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIGF1
dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRjaFByb2ZpbGVzIGNhbiBiZSB0b3VjaGVkIGZyb20g
Y29tcGlsZXIgdGhyZWFkcy4KICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEZNb3ZlKHJhcmVE
YXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
RkdFeGl0UHJvZmlsZS5jcHAKaW5kZXggMmQ5NDMxY2YwYjE0NGZhM2EyYzIyMWE2NmU5NDA3MGM3
NzUwZTBlMC4uYjFhMDFmZmE0ZDkzNDhmZWNiMjRjOTY4OGJjODAwNTJmOTM4ODZhNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBj
b25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgIC8vIElmIHdlJ3ZlIG5ldmVyIHNlZW4g
YW55IGZyZXF1ZW50IGV4aXRzIHRoZW4gY3JlYXRlIHRoZSBsaXN0IGFuZCBwdXQgdGhpcyBzaXRl
CiAgICAgLy8gaW50byBpdC4KICAgICBpZiAoIXByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcykg
ewotICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKKyAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50
RXhpdFNpdGVzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CiAgICAg
ICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcy0+YXBwZW5kKHNpdGUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCmluZGV4IDRmNDhh
MWQ2Yzk4NzIyZTVhYzJlY2U4N2U1MDQwMjMyZjlhNWQ2YjEuLjRmYjExNTczMDAzYjUyZWZkOWE4
NjZmYjNiZGY3NzUwOThjZWZhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBAIC01
MCw3ICs1MCw3IEBAIHZvaWQgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlv
bkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvZGVCbG9jayosCiBWZWN0b3I8RGVmZXJyZWRTb3Vy
Y2VEdW1wPiYgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjplbnN1cmVEZWZlcnJlZFNvdXJj
ZUR1bXAoKQogewogICAgIGlmICghbV9kZWZlcnJlZFNvdXJjZUR1bXApCi0gICAgICAgIG1fZGVm
ZXJyZWRTb3VyY2VEdW1wID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VE
dW1wPj4oKTsKKyAgICAgICAgbV9kZWZlcnJlZFNvdXJjZUR1bXAgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxEZWZlcnJlZFNvdXJjZUR1bXA+PigpOwogICAgIHJldHVybiAqbV9kZWZlcnJlZFNvdXJjZUR1
bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcAppbmRleCBkYjlhZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJiNjgzZGRlYWQ2Li5k
ZjRkNzdjZTNmNjNiNTIwMDc1NTQ0YzQxYTE2Y2IyMzFkN2RmYTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC0yNDMsNyArMjQz
LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRo
b3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6R2V0dGVyOiB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxs
TGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBtYWtl
VW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4o
KS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxMaW5rU3Rh
dHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVE
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
VmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwCmluZGV4IGZjMWY0NjBkZTk2NTQxZDhmYTA5OWNiYjQ1ZjIzMDljMmEzMzM4MGYuLmVk
OGQ0OTNmN2VlNmYxZGEyYjkwOWFkNTdjNjI3NzE4MTNjMmQ2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApAQCAtNzIsNyArNzIs
NyBAQCBHZXRCeUlkVmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBHZXRC
eUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jdXN0b21BY2Nlc3NvckdldHRlciA9IG90aGVyLm1f
Y3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgbV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2RvbUF0
dHJpYnV0ZTsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykKLSAgICAgICAgbV9jYWxs
TGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2Nh
bGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG1ha2VVbmlxdWU8Q2Fs
bExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAgICBlbHNlCiAgICAgICAg
IG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAqdGhpczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwCmluZGV4IDA5MjlkNmZiNDEyNjc0ZWQ3ZjIwNDA0NWZiNDI1ZWI3ZDM4ZDNjOTMu
LjZlZWIxNDViMzM3OTY2MmFmMWMxNTAwMTkwNzY3MjdhMzllZTJiZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29tcHJl
c3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCiAgICAgY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkKIHsK
ICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKKyAgICAgICAgbV9kYXRhID0gbWFrZVVuaXF1
ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKICAgICBlbHNlIHsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIGlmIChtX2RhdGEtPmF0KGkpLmtleSgpID09IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKaW5kZXggYjQ5ZTRl
MjQyZTUyZjA4MTMxNWU0OGZiMWUxYmNjMjk3ZTUyOGFlMC4uYTFlY2I5NGRkMGQxODY3MDg2MzUy
ZjUyYjViNThjMzE5M2VlY2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3Mg
UG9seVByb3RvQWNjZXNzQ2hhaW4gewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0Fj
Y2Vzc0NoYWluPiBjbG9uZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOwogICAgIH0KIAogICAgIGNvbnN0IFZlY3Rv
cjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApp
bmRleCAyMmY0NTU4MTRiODRhZjRmZTc0Y2FmMjM0MDFkMzBhZGFkYWU1YzZlLi4zYjMwMjMzOWYw
MzUwZGFjNDI4ZjNmMDRjYzczNTJhM2FlNTIxYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTYxNiw3ICs2MTYs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KAogICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgY29k
ZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlv
bkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwogICAgIG1fd2F0
Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRlLndl
YWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53
ZWFrUmVmZXJlbmNlcykpOworICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2Vz
KSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCmluZGV4IGMy
ZDk1MzIwY2ViZDU2ZGJkYzkzZWViZDZjMzE0MGE3ZGY3Y2MyMDkuLmQ2NDJiY2NmZTc5NzY2YzUy
NzliYmM4MTA4NzAxZWI3Zjg1ODI0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJbmxpbmVhYmxlOiB7
CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2Fs
bExpbmtTdGF0dXMgPQotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxD
YWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VVbmlxdWU8Q2Fs
bExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLmNhbGxMaW5r
SW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtTdGF0dXMgPSBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2Nr
ZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKaW5k
ZXggNWQ2YjI5MDQ1Y2E2NzVjNTZmYTcxZDU0NzVhMTE1YjJkZjZmM2M1ZS4uNzJjNmNhYzg0ZmIy
N2JjZjVlNDE3YzQ5NmU2MzYyZjcyZTZjMGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFB1dEJ5
SWRWYXJpYW50JiBQdXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IFB1dEJ5SWRWYXJpYW50
JiBvdGhlcikKICAgICBtX2NvbmRpdGlvblNldCA9IG90aGVyLm1fY29uZGl0aW9uU2V0OwogICAg
IG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtTdGF0
dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5r
U3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtTdGF0
dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7
CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICByZXR1
cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAKaW5kZXggOTZkMjJlY2ZhMGE0Yzc1NmVkZmY2MWYwMDEzZjcyNThlN2Qz
ZmJkNS4uNTNmMjA4YmNhZGVkM2RlYTJkZWUxOGEwZTg5NjA1YzQ5MGExOTViZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBSZWNvcmRlZFN0YXR1c2VzOjpSZWNvcmRlZFN0YXR1c2VzKFJlY29y
ZGVkU3RhdHVzZXMmJiBvdGhlcikKIAogQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6
OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IENh
bGxMaW5rU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFr
ZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKICAgICBDYWxsTGlua1N0YXR1cyogcmVz
dWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGNhbGxzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihj
b2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
NTMsNyArNTMsNyBAQCBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkQ2FsbExp
bmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogCiBHZXRCeUlkU3RhdHVzKiBS
ZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0
YXR1c1B0ciA9IG1ha2VVbmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKICAgICBHZXRCeUlk
U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgZ2V0cy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTYxLDcgKzYxLDcgQEAgR2V0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6
YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAogICAgIAogUHV0
QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2Rl
T3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAg
YXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7
CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7
CiAgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIHB1dHMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwog
ICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw3ICs2OSw3IEBAIFB1dEJ5SWRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwKIAogSW5CeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRJbkJ5SWRTdGF0dXMoY29u
c3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgSW5CeUlkU3RhdHVzJiBzdGF0dXMpCiB7
Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluQnlJZFN0YXR1cz4oc3Rh
dHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8SW5CeUlkU3RhdHVzPihzdGF0
dXMpOwogICAgIEluQnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGlu
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApp
bmRleCAzMGExZjA1NTI1OWUzZGVkMWE3MTY4ZWUzNTI2ZjcyYzA4NGJlZTVhLi5mY2MyOTExODAy
NDRlMGIzMjI5ZTJmZDc2MzAwN2JlNzlhODc0MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQqIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlCiAg
ICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYga2V5KQogewogICAgIGlmICghaG9sZGVyUmVmKQotICAgICAgICBob2xkZXJSZWYgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJsb2Nr
LCBzdHViSW5mbyk7CisgICAgICAgIGhvbGRlclJlZiA9IG1ha2VVbmlxdWU8V2F0Y2hwb2ludHNP
blN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAgICBlbHNlIHsKICAg
ICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9jb2RlQmxvY2sgPT0gY29kZUJsb2NrKTsKICAgICAg
ICAgQVNTRVJUKGhvbGRlclJlZi0+bV9zdHViSW5mbyA9PSBzdHViSW5mbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRl
eCA3MjIyZDQ4MmFkMWU1ZTI4NmNlZjU5ZDRmZjFlMWY1ZWIwNzEwNzhkLi40OTE5NWQxNTcyMWQy
Y2RhNGY3NDhhZThkYmUyYWYwMDlhMjhhN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTE2MCw3ICsxNjAsNyBA
QCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNl
KAogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+
IGFjY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CisgICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2VzcyA9IG1ha2VVbmlx
dWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOwogICAgICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAppbmRleCBlMDA2ZDE2YjliOGEwZmMzMGYwNDMzY2RlNjAyZWNjM2IxNjhkNDJl
Li4yYzlhMGIzMDFlYjA5OGUxMTVlZjFlMzZiMTI3YmUyOWUzYWJkYTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAg
LTQxNCw3ICs0MTQsNyBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIFVubGlua2VkQ29kZUJs
b2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxvY2sqIGNvZAogICAgICAgICBpZiAoIW1f
bGl2ZW5lc3MpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgY2hhbmNlIHR3byBjb21waWxl
ciB0aHJlYWRzIHJhY2VkIHRvIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAgICAvLyBHcmFiYmlu
ZyB0aGUgbG9jayBhYm92ZSBkZWZlbmRzIGFnYWluc3QgY29tcHV0aW5nIGxpdmVuZXNzIHR3aWNl
LgotICAgICAgICAgICAgbV9saXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOworICAgICAgICAgICAgbV9saXZlbmVzcyA9IG1ha2VV
bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOwogICAgICAgICB9CiAg
ICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAppbmRleCA0MzcwOTUxOWViNjE2ZTI2NTEwNmVmMWQ1NTI5NjE3ZDY0NWM5
YmM5Li41MTI1MzZjMGQ0NDg1N2E0Y2E3NmU4MTNmZTE0ODAzYTk3M2ZmYTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAt
NDAyLDcgKzQwMiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gbG9ja0R1cmluZ01hcmtpbmcoKmhlYXAoKSwgY2VsbExvY2soKSk7Ci0gICAgICAgICAg
ICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgICAg
IG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBmYmVjOWY3MmNhMmZkMWExOGJhY2IwNzNl
Njg3MjU0YjcwYjllYmUxLi40OWQ5ZDJmZDNlNmZlOWZiNGI1MjdmNjc3YWJkNWJkNGE1MTIyNmNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJiB2bSkK
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3JhcmVEYXRh
KTsKLSAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICBt
X3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByZXR1cm4gKm1fcmFyZURh
dGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlOTc2ODZhYTNlZGNkZDhkM2Y5YjU3YzRhNmQxMjNi
YWM5Y2IzOTg3Li4xNzhhNjFkZjY5MTMzYWZkY2MxMjcyOGNiZmQ5NmViMzlmNDJhZWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRD
b2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAgICAg
YXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZt
LCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVu
dCk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJhdG9yLT5nZW5lcmF0
ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVD
b21waWxlVGltZXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBmMjBhMzU3ZWNiNzNhYTdl
ZmU0Y2IxMDdkMWNjYjdlOWRjOTAwMzM5Li4yNzY1NjkyNmE4ZDI5ZDI3ZWJlZWFhOWZmZGNhMjAz
Y2MyNWZhMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC01OCw3ICs1OCw3IEBAIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpBYnN0cmFjdEludGVycHJldGVyKEdyYXBo
JiBncmFwaCwgQWJzdHJhCiAgICAgLCBtX3N0YXRlKHN0YXRlKQogewogICAgIGlmIChtX2dyYXBo
Lm1fZm9ybSA9PSBTU0EpCi0gICAgICAgIG1fcGhpQ2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVl
PFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKKyAgICAgICAgbV9waGlDaGlsZHJlbiA9IG1ha2VVbmlx
dWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFj
dFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggNWIw
Yzg3ZmZlZTUyYjJhOWU1MDExZTViZjhjNzFjMDEyOTQyZWZkMC4uZTY4M2E4MjFiMjJiY2ZlNTZi
MzllZjQxYTExZjFjMmRkYmQ2NjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikK
ICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaygp
KQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAg
ICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkKKyAgICAsIG1fc3Nh
Q0ZHKG1ha2VVbmlxdWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwo
MCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0
dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTg2LDgg
Kzg2LDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAKICAgICBtX2hh
c0RlYnVnZ2VyRW5hYmxlZCA9IG1fcHJvZmlsZWRCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdn
aW5nT3Bjb2RlcygpIHx8IE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24o
KTsKICAgICAKLSAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dJbmRl
eGluZz4oKnRoaXMpOwotICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworICAgIG1faW5kZXhpbmdDYWNoZSA9
IG1ha2VVbmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7CisgICAgbV9hYnN0cmFjdFZhbHVlc0Nh
Y2hlID0gbWFrZVVuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhpcyk7CiAKICAgICBy
ZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIHRoaXMt
PnN0cmluZ1N0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgR3JhcGg6
OmxpdmVuZXNzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGlmIChpdGVyICE9IG1fYnl0
ZWNvZGVMaXZlbmVzcy5lbmQoKSkKICAgICAgICAgcmV0dXJuICppdGVyLT52YWx1ZTsKICAgICAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gc3Rk
OjptYWtlX3VuaXF1ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gbWFrZVVuaXF1ZTxGdWxsQnl0ZWNv
ZGVMaXZlbmVzcz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlzaXMoKS5jb21wdXRl
RnVsbExpdmVuZXNzKGNvZGVCbG9jaywgKmxpdmVuZXNzKTsKICAgICBGdWxsQnl0ZWNvZGVMaXZl
bmVzcyYgcmVzdWx0ID0gKmxpdmVuZXNzOwogICAgIG1fYnl0ZWNvZGVMaXZlbmVzcy5hZGQoY29k
ZUJsb2NrLCBXVEZNb3ZlKGxpdmVuZXNzKSk7CkBAIC0xMTE1LDcgKzExMTUsNyBAQCBCeXRlY29k
ZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKGl0
ZXIgIT0gbV9ieXRlY29kZUtpbGxzLmVuZCgpKQogICAgICAgICByZXR1cm4gKml0ZXItPnZhbHVl
OwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBraWxscyA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVLaWxscz4ga2lsbHMgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7CiAgICAgY29kZUJs
b2NrLT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0ZUtpbGxzKGNvZGVCbG9jaywgKmtpbGxzKTsK
ICAgICBCeXRlY29kZUtpbGxzJiByZXN1bHQgPSAqa2lsbHM7CiAgICAgbV9ieXRlY29kZUtpbGxz
LmFkZChjb2RlQmxvY2ssIFdURk1vdmUoa2lsbHMpKTsKQEAgLTE1NTMsNyArMTU1Myw3IEBAIENQ
U0NGRyYgR3JhcGg6OmVuc3VyZUNQU0NGRygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX2Nwc0NGRykKLSAg
ICAgICAgbV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4oKnRoaXMpOworICAgICAg
ICBtX2Nwc0NGRyA9IG1ha2VVbmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nw
c0NGRzsKIH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgQ1BTRG9taW5hdG9ycyYgR3JhcGg6OmVu
c3VyZUNQU0RvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0Eg
JiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwogICAgIGlmICghbV9jcHNEb21pbmF0b3JzKQotICAg
ICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0RvbWluYXRvcnM+KCp0
aGlzKTsKKyAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxDUFNEb21pbmF0b3Jz
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE1NjksNyAr
MTU2OSw3IEBAIFNTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24p
OwogICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQotICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9zc2FEb21p
bmF0b3JzID0gbWFrZVVuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X3NzYURvbWluYXRvcnM7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIENQU05hdHVyYWxMb29w
cyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29wcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9m
b3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgZW5zdXJlQ1BTRG9taW5h
dG9ycygpOwogICAgIGlmICghbV9jcHNOYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fY3BzTmF0dXJh
bExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICAg
ICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1ODcsNyArMTU4Nyw3
IEBAIFNTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZVNTQU5hdHVyYWxMb29wcygpCiAgICAg
UkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgZW5zdXJlU1NBRG9taW5hdG9ycygp
OwogICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fc3NhTmF0dXJhbExvb3Bz
ID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICAgICAgbV9z
c2FOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOwogICAg
IHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1OTYsNyArMTU5Niw3IEBAIEJh
Y2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiAgICAgLy8gV2UgY291bGQg
ZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSB0byB3b3JrIG92ZXIgQ1BTLCBidXQgdG9k
YXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4KICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0g
U1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9iYWNrd2FyZHNDRkcg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3
YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X2JhY2t3YXJkc0NGRzsKIH0KIApAQCAtMTYwNCw3ICsxNjA0LDcgQEAgQmFja3dhcmRzRG9taW5h
dG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0b3JzKQot
ICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJk
c0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbWFr
ZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3
YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE2MTIsNyArMTYxMiw3IEBAIENvbnRyb2xFcXVpdmFs
ZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcykKLSAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsK
KyAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG1ha2VVbmlxdWU8Q29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKaW5kZXggNjM5MDQzZTllMjdmYmUwZTBiOTJhYjQ2YTY2OWJlMTQxMDUwMzM3
MC4uZjJiNjY0MDJlM2FkMGU3MmRmY2UwNWI2NWFmM2ZjOTI2ZDAwOWRhZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
SklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBoJiBkZmcpCiAgICAgLCBtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlcihkZmcubV92bSkKIHsKICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkRHVtcERp
c2Fzc2VtYmx5KCkgfHwgbV9ncmFwaC5tX3ZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikpCi0gICAg
ICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNhc3NlbWJsZXI+KGRmZyk7
CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxEaXNhc3NlbWJsZXI+KGRmZyk7
CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgbV9qaXRDb2RlLT50aWVyVXBJbkxvb3BIaWVyYXJj
aHkgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnRpZXJVcEluTG9vcEhpZXJhcmNoeSgpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIHRpZXJVcEJ5dGVjb2RlIDogbV9ncmFwaC5tX3BsYW4udGllclVwQW5k
T1NSRW50ZXJCeXRlY29kZXMoKSkKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEpJVENvbXBpbGVy
OjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAgICBtX2NvZGVCbG9j
ay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1h
cD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0Nv
ZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBsaW5rQnVm
ZmVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklUQ29tcGls
ZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzdGFja092ZXJmbG93KQpAQCAtMzYz
LDcgKzM2Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKLSAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjpt
YWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3BlY3VsYXRpdmUgPSBt
YWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAKICAgICAvLyBQbGFudCBhIGNoZWNr
IHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCiAgICAg
SnVtcExpc3Qgc3RhY2tPdmVyZmxvdzsKQEAgLTQwMiw5ICs0MDIsOSBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlKCkKICAgICBtX3NwZWN1bGF0aXZlLT5jcmVhdGVPU1JFbnRyaWVzKCk7CiAg
ICAgc2V0RW5kT2ZDb2RlKCk7CiAKLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWls
KTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBt
X2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci0+
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6
ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7Cisg
ICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFs
aXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAg
LTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogICAgIGRpc2Fz
c2VtYmxlKCpsaW5rQnVmZmVyKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihz
dGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5tX3BsYW4uc2V0Rmlu
YWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKSk7CiB9CiAK
QEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQog
ICAgIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKTsKIAogICAgIC8vID09PSBGdW5jdGlvbiBi
b2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KLSAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3BlY3VsYXRpdmUgPSBtYWtlVW5p
cXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAgICAgY29tcGlsZUJvZHkoKTsKICAgICBzZXRF
bmRPZk1haW5QYXRoKCk7CiAKQEAgLTUwNyw5ICs1MDcsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpj
b21waWxlRnVuY3Rpb24oKQogICAgIHNldEVuZE9mQ29kZSgpOwogCiAgICAgLy8gPT09IExpbmsg
PT09Ci0gICAgYXV0byBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigq
dGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgYXV0byBsaW5r
QnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENv
bXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRl
KCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlx
dWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOworICAgICAgICBtX2dyYXBoLm1f
cGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9w
bGFuKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbGluaygqbGlua0J1ZmZlcik7CkBA
IC01MjUsNyArNTI1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVjayA9
IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oYXJpdHlDaGVjayk7CiAKLSAg
ICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6
ZXI+KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEpJVEZpbmFs
aXplcj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwo
KSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2spKTsKIH0KIApAQCAtNTUwLDcg
KzU1MCw3IEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGFudChOb2Rl
KiBub2RlKQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIGlmICghbV9ncmFwaC5t
X2RvdWJsZUNvbnN0YW50cykKLSAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFnPGRvdWJsZT4+KCk7CisgICAgICAgIG1fZ3JhcGgubV9kb3VibGVD
b25zdGFudHMgPSBtYWtlVW5pcXVlPEJhZzxkb3VibGU+PigpOwogCiAgICAgZG91YmxlKiBhZGRy
ZXNzSW5Db25zdGFudFBvb2wgPSBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzLT5hZGQoKTsKICAg
ICAqYWRkcmVzc0luQ29uc3RhbnRQb29sID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKaW5kZXggYmI4MDAy
NzRkZGNiNjMwMzQ3ODM3MzdlMzhhZDFlNjFlOWM1ZWEwNC4uYTk0NDA0NzQ1OTI1MjE4NDViYTMx
ODgzN2IxM2I5ZjRhMzE3ZWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBjbGFz
cyBMaXZlbmVzc0FuYWx5c2lzUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAsIG1fbGl2
ZUF0VGFpbChtX2dyYXBoKQogICAgIHsKICAgICAgICAgbV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUt
PnJlY29tcHV0ZSgpOwotICAgICAgICBtX3dvcmtzZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtz
ZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1JbmRpY2VzKCkpOworICAgICAgICBtX3dv
cmtzZXQgPSBtYWtlVW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1J
bmRpY2VzKCkpOwogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCmluZGV4IDM0YWNiYzFmZTIyZmI3N2YzNTgwZGEzNjc5OWM4MjE0YmViYzlk
NjIuLmI2OTQ5YWEwMzVjMTJmYTc0OWQ1ODBjYzdjMmFlY2NhOGQ5MmMxNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIFBsYW46OkNvbXBp
bGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBpZiAobV9tb2RlID09
IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAgICAgICBib29sIHJlc3VsdCA9IHBlcmZvcm1PU1JF
bnRyeXBvaW50Q3JlYXRpb24oZGZnKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
ICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlz
KTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+
KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAgICAgfQogICAgICAg
ICBSVU5fUEhBU0UocGVyZm9ybUNQU1JldGhyZWFkaW5nKTsKQEAgLTM5OCw3ICszOTgsNyBAQCBQ
bGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgY2Fz
ZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgaWYg
KEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgewotICAgICAgICAg
ICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMp
OworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4o
KnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtNDc4LDcgKzQ3OCw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxl
SW5UaHJlYWRJbXBsKCkKICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1XYXRjaHBvaW50Q29sbGVj
dGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxlKGRmZykgPT0gRlRM
OjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9
IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4g
RmFpbFBhdGg7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCmluZGV4IDg3MTU5NWIxZmYyNTliZWU0NGM3MWNl
MDNkN2Q4ZThiZDY0MzY1MzcuLjUzNGQ2NGI1MzhmYTE4MGFmNDhlODlkNGY4MjYwMmZiNDVjOTIx
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNp
b25QaGFzZS5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBTU0FDb252ZXJzaW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5jbGVh
cigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwogICAgICAgICAg
ICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwotICAgICAgICAgICAgYmxvY2stPnNzYSA9
IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOworICAgICAgICAg
ICAgYmxvY2stPnNzYSA9IG1ha2VVbmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwog
ICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZW50cnlwb2ludEluZGV4VG9B
cmd1bWVudHNCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oCmluZGV4IDdjZjQyNTIxYTYyMTE3OGZmODUxMmFmZjlmZmZhMzI1MjAw
MjI0ZDYuLmNkY2RhYTYwZDg5OGEzYjY2ZDdiMjk4ZjY2ODE4Yzc5ZGM0OGM4NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTE5
Myw3ICsxOTMsNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aENhbGwoCiAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwKICAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJn
dW1lbnRzLi4uIGFyZ3VtZW50cykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxs
UmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlw
ZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5
cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KAogICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9CiAK
QEAgLTIzOSw3ICsyMzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUg
RGVzdGluYXRpb25UeXBlLCB0eXBlbmFtZSBTb3VyY2VUeXBlLCB1bnNpZwogaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogICAgIEp1bXBUeXBl
IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFNvdXJjZVR5cGUgc291cmNlW251bWJlck9mQXNz
aWdubWVudHNdLCBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25bbnVtYmVyT2ZBc3NpZ25tZW50
c10pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5l
cmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgbnVtYmVyT2ZBc3Np
Z25tZW50cz4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJh
dG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIG51bWJlck9mQXNzaWdu
bWVudHM+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbiwgc291cmNlKTsKIH0KIApA
QCAtMjQ5LDcgKzI0OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5WzFdID0geyBz
b3VyY2UgfTsKICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25BcnJheVsxXSA9IHsgZGVz
dGluYXRpb24gfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0
aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAxPj4oCisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMT4+KAogICAgICAgICBmcm9tLCBqaXQsIGRl
c3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsK
ICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5WzJdID0geyBzb3VyY2UxLCBzb3VyY2UyIH07CiAg
ICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0aW9uQXJyYXlbMl0gPSB7IGRlc3RpbmF0aW9uMSwg
ZGVzdGluYXRpb24yIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5nU2xv
d1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMj4+
KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBU
eXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDI+PigKICAgICAgICAgZnJvbSwgaml0
LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjA3YTliNjliNDg4NTVi
NTZiMWY4MzcyMDY1MWMyYmM3NmUzOGY5ZS4uNzBlNzA1ZDc4NDkzMmQ5ZDNmYzI3MjQ5MTMyZWZk
M2UzZTVkNjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZQog
ICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdl
IHBvaW50ZXIsIGFuZCB0aGF0J3MKICAgICAvLyB3aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFs
bG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90CiAgICAgLy8gb2Yg
d29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkuIDotLwotICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2Fs
bEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLAogICAgICAg
ICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOwogCkBAIC04OTksNyArODk5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VSZWcsIEdQUlJl
ZyBwcm9wZXJ0eVJlZykKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBTbG93Rm9yVW53YW50
ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAgICB9CiAgICAgCi0g
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxBcnJheWlmeVNsb3dQYXRo
R2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPEFycmF5aWZ5
U2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93UGF0aCwgdGhpcywgbm9kZSwgYmFzZVJl
ZywgcHJvcGVydHlSZWcsIHRlbXBHUFIsIHN0cnVjdHVyZUdQUikpOwogICAgIAogICAgIG5vUmVz
dWx0KG1fY3VycmVudE5vZGUpOwpAQCAtMjI0MiwxMCArMjI0MiwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlKiBub2RlKQogICAgICAgICB9CiAg
ICAgICAgIGlmIChwcm90b3R5cGVDaGFpbklzU2FuZSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJp
bmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAog
ICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhzY3JhdGNoUmVn
KSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbHNlCi0gICAgICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2Vu
ZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2Fu
ZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAgICAgICAgIG91dE9m
Qm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdSZWcsIHNjcmF0Y2hSZWcpLAogICAg
ICAgICAgICAgICAgIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAjZW5kaWYKQEAgLTc2MTksNyAr
NzYxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVu
dHMoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9u
Q3JlYXRlRGlyZWN0QXJndW1lbnRzLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwKICAgICAgICAgICAg
ICAgICBrbm93bkxlbmd0aCwgbWluQ2FwYWNpdHkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBh
dXRvIGdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50
c1Nsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBtYWtlVW5pcXVl
PENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAg
ICBzbG93UGF0aCwgdGhpcywgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGxlbmd0aEdQUiwgbWluQ2Fw
YWNpdHkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKGdlbmVyYXRvcikp
OwogICAgIH0KQEAgLTg0MzksNyArODQzOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0Lmp1bXAoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
dGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZh
cmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJp
YWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgdGVtcFZhbHVlLCBzaXplR1BS
LCBzdG9yYWdlUmVzdWx0R1BSKSk7CiAgICAgfQogCkBAIC05MTM1LDcgKzkxMzUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJlQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGNl
bGxHUFIsIEdQUlJlZyB0ZW1wRwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSOwogICAgICAg
ICAKICAgICAgICAgaWYgKHRlbXBHUFIgPT0gSW52YWxpZEdQUlJlZykgewotICAgICAgICAgICAg
c3RydWN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRoaXMpOworICAgICAg
ICAgICAgc3RydWN0dXJlID0gbWFrZVVuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRoaXMpOwogICAgICAg
ICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLT5ncHIoKTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSB0ZW1wR1BSOwpAQCAtMTMxNzYsNyArMTMxNzYsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgbV9qaXQubXV0YXRvckZlbmNlKCptX2pp
dC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJp
YWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsCiAg
ICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBo
KCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1
cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmll
ckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGZhMzk2ZjRmMTkyYThiYjRhZWY5OWQwMzcx
OTI0YTJhMzhjNjQ1ZTguLmJhNjEyOGVmZTliYjM2OGZlM2IwNjYyM2I1MWVlM2VlYWQzYzRmZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC05NSw4ICs5NSw4IEBAIGNsYXNzIFN0b3JlQmFy
cmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBQaGFzZU1v
ZGU6Okdsb2JhbDogewogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBt
X2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogCi0gICAgICAgICAgICBtX3N0YXRlID0gc3RkOjptYWtl
X3VuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7Ci0gICAgICAgICAgICBtX2lu
dGVycHJldGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VB
YnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUpOworICAgICAgICAgICAgbV9zdGF0ZSA9
IG1ha2VVbmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+KG1fZ3JhcGgpOworICAgICAgICAgICAg
bV9pbnRlcnByZXRlciA9IG1ha2VVbmlxdWU8QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJz
dHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0YXRlKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgbV9pc0NvbnZlcmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCkBAIC0xMDcsOCArMTA3LDgg
QEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgLy8gdG93YXJkcyBiZWxpZXZpbmcgdGhhdCBhbGwgbm9kZXMgbmVlZCBiYXJyaWVy
cy4gIk5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlCiAgICAgICAgICAgICAvLyBzYXlpbmcgdGhh
dCB0aGUgbm9kZSBpcyBpbiBhIHBhc3QgZXBvY2guICJOb3QgbmVlZGluZyBhIGJhcnJpZXIiIGlz
IGxpa2Ugc2F5aW5nCiAgICAgICAgICAgICAvLyB0aGF0IHRoZSBub2RlIGlzIGluIHRoZSBjdXJy
ZW50IGVwb2NoLgotICAgICAgICAgICAgbV9zdGF0ZUF0SGVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8
QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKLSAgICAgICAgICAgIG1fc3RhdGVB
dFRhaWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFw
aCk7CisgICAgICAgICAgICBtX3N0YXRlQXRIZWFkID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxIYXNo
U2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9IG1ha2VV
bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgQmxvY2tMaXN0IHBvc3RPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5Qb3N0T3Jk
ZXIoKTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0
LmNwcAppbmRleCBlNmMyMjIxZWUzMDE1NDRjNzJhOWNlODM1Zjk4MGZmMzZmMDI0YjdkLi44Zjkz
MDM0YjBjNmY5MGJhNjZmNGJmNWM1M2JlMWI0ZjBmYmE3NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIGNsYXNzIFdvcmts
aXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1dG9tYXRpY1RocmVhZCB7CiAgICAgICAgIGlmICht
X3JlbGF0aXZlUHJpb3JpdHkpCiAgICAgICAgICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5jaGFuZ2VQ
cmlvcml0eShtX3JlbGF0aXZlUHJpb3JpdHkpOwogICAgICAgICAKLSAgICAgICAgbV9jb21waWxh
dGlvblNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvblNjb3BlPigpOworICAgICAg
ICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBtYWtlVW5pcXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBBYnN0cmFjdExvY2tl
ciYpIG92ZXJyaWRlCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXb3JrbGlzdDo6ZmluaXNoQ3Jl
YXRpb24odW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIAog
dm9pZCBXb3JrbGlzdDo6Y3JlYXRlTmV3VGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2Nr
ZXIsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRE
YXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWREYXRhPih0aGlzKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IG1ha2VVbmlxdWU8VGhyZWFkRGF0YT4odGhp
cyk7CiAgICAgZGF0YS0+bV90aHJlYWQgPSBhZG9wdFJlZihuZXcgVGhyZWFkQm9keShsb2NrZXIs
ICp0aGlzLCAqZGF0YSwgbV9sb2NrLCBtX3BsYW5FbnF1ZXVlZC5jb3B5UmVmKCksIHJlbGF0aXZl
UHJpb3JpdHkpKTsKICAgICBtX3RocmVhZHMuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3Bw
CmluZGV4IDE5YjExNWM5ZmRkNjdjYmM4YWUxMDljNjQ0NTc0MjhiYTNhZGZhNTMuLjAwYmRhNjU3
Mjc5Y2Y3YTk5ZGJhYjE0OWIwOWM3MDNkNjhiMzViZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKQEAgLTEzMCw3ICsxMzAs
NyBAQCBBc3luY2hyb25vdXNEaXNhc3NlbWJsZXImIGFzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlcigp
CiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCiAgICAgY29uc3QgQ1N0cmluZyYgaGVh
ZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2Rl
UmVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4KQogewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc2Fzc2VtYmx5
VGFzaz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrID0gbWFr
ZVVuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CiAgICAgdGFzay0+aGVhZGVyID0gc3RyZHVwKGhl
YWRlci5kYXRhKCkpOyAvLyBZdWNrISBXZSBuZWVkIHRoaXMgYmVjYXVzZSBDU3RyaW5nIGRvZXMg
cmFjeSByZWZjb3VudGluZy4KICAgICB0YXNrLT5jb2RlUmVmID0gY29kZVJlZjsKICAgICB0YXNr
LT5zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwLmNwcAppbmRleCA5MGFlMmY0ZmUwNmExNTJjYWU1Nzg1ZTJjMDNjOTk5YjY4MzJiYzFiLi5l
YzgwZWE2N2IyNTZmODkxOGQ0ODgzYThjNTJiOGYzNzk1ODNhYmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCkBAIC0xNTcsMTEgKzE1NywxMSBA
QCBjb25zdCBBYnN0cmFjdEhlYXAmIEluZGV4ZWRBYnN0cmFjdEhlYXA6OmF0U2xvdyhwdHJkaWZm
X3QgaW5kZXgpCiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpID49IG1fc21h
bGxJbmRpY2VzLnNpemUoKSk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKCFtX2xhcmdlSW5kaWNl
cykpCi0gICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxNYXBUeXBlPigp
OworICAgICAgICBtX2xhcmdlSW5kaWNlcyA9IG1ha2VVbmlxdWU8TWFwVHlwZT4oKTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBYnN0cmFjdEhlYXA+JiBmaWVsZCA9IG1fbGFyZ2VJbmRpY2VzLT5h
ZGQoaW5kZXgsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWZpZWxkKSB7Ci0g
ICAgICAgIGZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEhlYXA+KCk7CisgICAgICAg
IGZpZWxkID0gbWFrZVVuaXF1ZTxBYnN0cmFjdEhlYXA+KCk7CiAgICAgICAgIGluaXRpYWxpemUo
KmZpZWxkLCBpbmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcAppbmRleCA1ZDA0YjcyZjA0ODMxZDA2MzAyMzA0ZDFlYjdlNDkyOWQ0ODA0MjdmLi40
NjM1Y2M5NmY5MTA5MWY3M2YwOGQxZjc1MmIwNDdkMTA1M2JmYjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBjb21waWxl
KFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICBW
TSYgdm0gPSBncmFwaC5tX3ZtOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQot
ICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKHN0ZDo6bWFrZV91bmlx
dWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKKyAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgp
LnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAK
ICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0ZS5ncmFwaCwgc2Fm
ZXBvaW50UmVzdWx0KTsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0
ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJP
ZmZzZXRzID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4o
c3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOworICAgICAgICBt
YWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5jYWxsZWVTYXZlUmVn
aXN0ZXJBdE9mZnNldExpc3QoKSk7CiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQog
ICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUo
Y29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiOiAiLCAqcmVnaXN0ZXJPZmZzZXRzLCAiXG4i
KTsKICAgICBjb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoV1RGTW92ZShyZWdpc3Rl
ck9mZnNldHMpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRl
LCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obG9va3VwRXhjZXB0
aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKIAotICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ss
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5r
QnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25DYW5GYWlsKTsKIAogICAgIGlmIChzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZm
ZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxl
ZCA9IHRydWU7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwg
U2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAKICAgICBCMzo6UENUb09y
aWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9jLT5yZWxlYXNlUENUb09yaWdpbk1hcCgpOwog
ICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5nKCkpCi0gICAgICAg
IGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29k
ZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1h
cCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7CisgICAgICAgIGNvZGVC
bG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4o
UENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUu
ZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxK
U0VudHJ5UHRyVGFnPiBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+
bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihzdGF0ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwoMCkp
OwogICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExGYWlsLmNwcAppbmRleCAxNjUzMzUwOWNkMGI0ODJjNzRiY2E2NzMxODc2M2YyZTBm
MDlkZGYxLi5jM2Y5MzM5MmYyNmU2ZmM5NWY5YzJjYzU5MjllZDM0YzZiYzMwYzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIERGRzsKIAogdm9pZCBmYWlsKFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGF0ZS5ncmFw
aC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihz
dGF0ZS5ncmFwaC5tX3BsYW4pKTsKKyAgICBzdGF0ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVy
KG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3BsYW4pKTsKIH0KIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5j
cHAKaW5kZXggMDg1NDA1NmVjN2QxNjJiMTFjZGMyMWNkNzhmZTE1MTdmN2FjZjNlYi4uOTVkYjY5
NjFlOGU5MDc3MGNkNmU1NTY3MzAyMmI0NDc2M2I1ODA2NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0
ZSkKICAgICAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAgICAgICAgIG1h
aW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOwogCi0gICAgICAgICAgICBsaW5rQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25DYW5GYWlsKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtC
dWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICAg
ICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgICAg
ICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgaml0
LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbWFpblBh
dGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCi0gICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOworICAgICAgICBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQs
IGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgaWYgKGxpbmtCdWZm
ZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25G
YWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFmMWJhNGJmOTBhOGZkMGJhMjUwMmM2
NDdlMmMxNzE0MTIyZGU3ZDQuLjA5YjM0MjczY2JiN2NhYjQ0Y2Q4NjNlOTliMjg1OTBlODdjOTRi
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
QEAgLTE1MDgwLDcgKzE1MDgwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGdlbmVyYXRvckp1bXAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVu
a1B0clRhZz4odm0tPmdldENUSVN0dWIobGF6eVNsb3dQYXRoR2VuZXJhdGlvblRodW5rR2VuZXJh
dG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxh
enlTbG93UGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF6eVNsb3dQYXRoPigpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF6eVNsb3dQYXRoPiBsYXp5
U2xvd1BhdGggPSBtYWtlVW5pcXVlPExhenlTbG93UGF0aD4oKTsKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGxpbmtlZFBhdGNoYWJsZUp1bXAgPSBDb2RlTG9jYXRpb25K
dW1wPEpTSW50ZXJuYWxQdHJUYWc+KGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRy
VGFnPihwYXRjaGFibGVKdW1wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5j
cHAKaW5kZXggNjUzZWM2ZjY5NjA0OWI3NTJhYzI0YTc3OTMxMGQ0YWQ5N2JiMDNkYi4uNGE0ODRm
YTZkNDY0MzBkNzFlNTcwMDhiZjFlOTlmNmMyNWI4NDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTYwLDEwICs2MCwxMCBAQCBTdGF0ZTo6U3RhdGUoR3JhcGgm
IGdyYXBoKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBncmFwaC5tX3BsYW4uc2V0Rmlu
YWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPihncmFwaC5tX3BsYW4pKTsKKyAg
ICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPihncmFw
aC5tX3BsYW4pKTsKICAgICBmaW5hbGl6ZXIgPSBzdGF0aWNfY2FzdDxKSVRGaW5hbGl6ZXIqPihn
cmFwaC5tX3BsYW4uZmluYWxpemVyKCkpOwogCi0gICAgcHJvYyA9IHN0ZDo6bWFrZV91bmlxdWU8
UHJvY2VkdXJlPigpOworICAgIHByb2MgPSBtYWtlVW5pcXVlPFByb2NlZHVyZT4oKTsKIAogICAg
IHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAgICAgICAgIFtdIChQcmludFN0cmVhbSYgb3V0LCBC
Mzo6T3JpZ2luIG9yaWdpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21w
bGV0ZVN1YnNwYWNlLmNwcAppbmRleCAyMmQ3ZmQ2NWQ1YTE3NTViNWIyZDNiNzhkZGE1NWMwZDAw
N2UxY2NiLi4wMjFiMGNkYjlkZmFjMThiMzY4NjQyOGE5ODIzZjI4MTEwYmI3OWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcApAQCAtODAs
NyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhz
aXplX3Qgc2l6ZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgQmxvY2tEaXJlY3RvcnkvTG9j
YWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwgIiwgYXR0cmlidXRlcygpLCAiLCAiLCBzaXpl
Q2xhc3MsICIuXG4iKTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+
IHVuaXF1ZURpcmVjdG9yeSA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tEaXJlY3Rv
cnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3MpOworICAgICAgICBtYWtlVW5pcXVlPEJsb2Nr
RGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKICAgICBCbG9ja0RpcmVjdG9y
eSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0b3J5LmdldCgpOwogICAgIG1fZGlyZWN0b3JpZXMu
YXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0b3J5KSk7CiAgICAgCkBAIC04OCw3ICs4OCw3IEBA
IEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXpl
KQogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3RvcnkobG9ja2VyLCBkaXJlY3RvcnkpOwogICAg
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbEFsbG9jYXRvcj4gdW5pcXVlTG9jYWxBbGxvY2F0
b3IgPQotICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsQWxsb2NhdG9yPihkaXJlY3Rvcnkp
OworICAgICAgICBtYWtlVW5pcXVlPExvY2FsQWxsb2NhdG9yPihkaXJlY3RvcnkpOwogICAgIExv
Y2FsQWxsb2NhdG9yKiBsb2NhbEFsbG9jYXRvciA9IHVuaXF1ZUxvY2FsQWxsb2NhdG9yLmdldCgp
OwogICAgIG1fbG9jYWxBbGxvY2F0b3JzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZUxvY2FsQWxsb2Nh
dG9yKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGEwMWI1YTJi
NGFlZmQzZTUyOTY5NzdhNWM4Mzg0MDQyZTVhMjk1NmEuLjk3MTk5ZTE4NmRlNzJkNzcyNzk3MzVj
OWQzYzk5NDBjODVjNDhhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0y
ODksMTUgKzI4OSwxNSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAg
ICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAsIG1fbWF4SGVhcFNp
emUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9vYmplY3RTcGFjZSh0aGlzKQotICAgICwg
bV9tYWNoaW5lVGhyZWFkcyhzdGQ6Om1ha2VfdW5pcXVlPE1hY2hpbmVUaHJlYWRzPigpKQotICAg
ICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigq
dGhpcywgIkMiKSkKLSAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKHN0ZDo6bWFrZV91bmlxdWU8
U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQotICAgICwgbV9tdXRhdG9yTWFya1N0YWNrKHN0ZDo6
bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3JhY2VNYXJrU3RhY2soc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fY29uc3RyYWludFNldChz
dGQ6Om1ha2VfdW5pcXVlPE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykpCisgICAgLCBtX21h
Y2hpbmVUaHJlYWRzKG1ha2VVbmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCisgICAgLCBtX2NvbGxl
Y3RvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiQyIpKQorICAg
ICwgbV9tdXRhdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJN
IikpCisgICAgLCBtX211dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4o
KSkKKyAgICAsIG1fcmFjZU1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQor
ICAgICwgbV9jb25zdHJhaW50U2V0KG1ha2VVbmlxdWU8TWFya2luZ0NvbnN0cmFpbnRTZXQ+KCp0
aGlzKSkKICAgICAsIG1faGFuZGxlU2V0KHZtKQotICAgICwgbV9jb2RlQmxvY2tzKHN0ZDo6bWFr
ZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQotICAgICwgbV9qaXRTdHViUm91dGluZXMoc3RkOjpt
YWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKKyAgICAsIG1fY29kZUJsb2NrcyhtYWtl
VW5pcXVlPENvZGVCbG9ja1NldD4oKSkKKyAgICAsIG1faml0U3R1YlJvdXRpbmVzKG1ha2VVbmlx
dWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCiAgICAgLCBtX3ZtKHZtKQogICAgIC8vIFdlIHNlZWQg
d2l0aCAxMG1zIHNvIHRoYXQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSBkb2Vzbid0
IGNvbnRpbnVvdXNseSAKICAgICAvLyBzY2hlZHVsZSB0aGUgdGltZXIgaWYgd2UndmUgbmV2ZXIg
ZG9uZSBhIGNvbGxlY3Rpb24uCkBAIC0zMDUsOCArMzA1LDggQEAgSGVhcDo6SGVhcChWTSogdm0s
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2
aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKICAgICAsIG1fc3dlZXBlcihh
ZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCiAgICAgLCBtX3N0b3BJZk5l
Y2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKLSAg
ICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNr
QXJyYXk+KCkpCi0gICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1
ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKG1h
a2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3Rh
Y2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKICAgICAsIG1faGVscGVyQ2xpZW50KCZo
ZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkp
CiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0
ZSgpKQpAQCAtMzE0LDcgKzMxNCw3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkcyA9IGhlYXBIZWxwZXJQb29sKCkubnVtYmVyT2ZU
aHJlYWRzKCk7IGkgPCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkczsgKytpKSB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U2xv
dFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0b3IgPSBtYWtlVW5pcXVlPFNsb3RWaXNpdG9yPigq
dGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEpKTsKICAgICAgICAgaWYgKE9wdGlvbnM6Om9wdGlt
aXplUGFyYWxsZWxTbG90VmlzaXRvcnNGb3JTdG9wcGVkTXV0YXRvcigpKQogICAgICAgICAgICAg
dmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogICAgICAgICBtX2F2YWlsYWJs
ZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVuZCh2aXNpdG9yLmdldCgpKTsKQEAgLTMyMywxNyAr
MzIzLDE3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAKICAg
ICBpZiAoT3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkpIHsKICAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1bGVyKCkpCi0gICAgICAgICAgICBtX3NjaGVkdWxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+
KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTdG9jaGFzdGlj
U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVk
dWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFNwYWNl
VGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBX
ZSBzaW11bGF0ZSB0dXJuaW5nIG9mZiBjb25jdXJyZW50IEdDIGJ5IG1ha2luZyB0aGUgc2NoZWR1
bGVyIHNheSB0aGF0IHRoZSB3b3JsZAogICAgICAgICAvLyBzaG91bGQgYWx3YXlzIGJlIHN0b3Bw
ZWQgd2hlbiB0aGUgY29sbGVjdG9yIGlzIHJ1bm5pbmcuCi0gICAgICAgIG1fc2NoZWR1bGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+
KCk7CisgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVX
b3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CiAgICAgfQogICAgIAogICAgIGlmIChPcHRpb25zOjp2
ZXJpZnlIZWFwKCkpCi0gICAgICAgIG1fdmVyaWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhlYXBW
ZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZp
Y2F0aW9uKCkpOworICAgICAgICBtX3ZlcmlmaWVyID0gbWFrZVVuaXF1ZTxIZWFwVmVyaWZpZXI+
KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0NDeWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbigp
KTsKICAgICAKICAgICBtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5vcHRpbWl6ZUZvclN0b3BwZWRN
dXRhdG9yKCk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCBzaXplX3QgSGVhcDo6cHJvdGVjdGVkT2Jq
ZWN0Q291bnQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFwOjpwcm90ZWN0
ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0
PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5cGVDb3VudFNldD4o
KTsKICAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgKICAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwp
IHsKICAgICAgICAgICAgIHJlY29yZFR5cGUoKnZtKCksICpyZXN1bHQsIGNlbGwpOwpAQCAtOTA5
LDcgKzkwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3Rl
ZE9iamVjdFR5cGVDb3VudHMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFw
OjpvYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0
PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5cGVDb3VudFNldD4o
KTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgIG1f
b2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBpdGVyYXRpb25TY29wZSwKQEAg
LTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAg
ICAgfSwKICAgICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6OlNlbGRvbUdyZXllZCk7CiAgICAg
Ci0gICAgbV9jb25zdHJhaW50U2V0LT5hZGQoc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tNZXJn
aW5nQ29uc3RyYWludD4oKnRoaXMpKTsKKyAgICBtX2NvbnN0cmFpbnRTZXQtPmFkZChtYWtlVW5p
cXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhpcykpOwogfQogCiB2b2lkIEhlYXA6
OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6dW5pcXVlX3B0cjxNYXJraW5nQ29uc3RyYWludD4g
Y29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCmluZGV4
IDViNjljZDVlMzVmNjJiNTA2NjNhOWNiZGM3Mzk0ZDFiZDY3YWQxZDguLmUxZWI2Yzc4MzNkNDg1
ODcxYTljNTMzY2ZkNDczMWM3NWY5YjExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcElubGluZXMuaApAQCAtMjE3LDcgKzIxNyw3IEBAIGlubGluZSB2b2lkIEhlYXA6OmRlY3Jl
bWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKIGlubGluZSBIYXNoU2V0PE1hcmtlZEFy
Z3VtZW50QnVmZmVyKj4mIEhlYXA6Om1hcmtMaXN0U2V0KCkKIHsKICAgICBpZiAoIW1fbWFya0xp
c3RTZXQpCi0gICAgICAgIG1fbWFya0xpc3RTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8
TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsKKyAgICAgICAgbV9tYXJrTGlzdFNldCA9IG1ha2VV
bmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOwogICAgIHJldHVybiAqbV9t
YXJrTGlzdFNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA1YjlhYzg5ZGFiZjA0YTA2MTRkYzEwZmJiYWYxNmMw
ZjRhNDk5ZjdlLi4yZDJiYzhmYjliMjdmZTlmOWIxYjViZTU0Y2I3NTFmODNlMGQzZDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxkZXI6OmJ1aWxkU25hcHNo
b3QoKQogCiAgICAgUHJldmVudENvbGxlY3Rpb25TY29wZSBwcmV2ZW50Q29sbGVjdGlvblNjb3Bl
KG1fcHJvZmlsZXIudm0oKS5oZWFwKTsKIAotICAgIG1fc25hcHNob3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhlYXBTbmFwc2hvdD4obV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNob3QoKSk7CisgICAg
bV9zbmFwc2hvdCA9IG1ha2VVbmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2ZpbGVyLm1vc3RSZWNl
bnRTbmFwc2hvdCgpKTsKICAgICB7CiAgICAgICAgIG1fcHJvZmlsZXIuc2V0QWN0aXZlU25hcHNo
b3RCdWlsZGVyKHRoaXMpOwogICAgICAgICBtX3Byb2ZpbGVyLnZtKCkuaGVhcC5jb2xsZWN0Tm93
KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuY3BwCmluZGV4IGI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5
OGZkYTkuLjdjMmVkMjQwMmZkNzMwMWZjMDk5YThkZmI1ZDNjMzM2YWVhZDExMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIE5F
VkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0
OjphZGRTbG93KHNpemVfdCBibG9jCiAgICAgYXV0byYgYml0c1B0clJlZiA9IG1fYml0c1tibG9j
a0luZGV4XTsKICAgICBhdXRvKiBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsKICAgICBpZiAoIWJp
dHMpIHsKLSAgICAgICAgYml0c1B0clJlZiA9IHN0ZDo6bWFrZV91bmlxdWU8Qml0bWFwPE1hcmtl
ZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKKyAgICAgICAgYml0c1B0clJlZiA9IG1ha2VVbmlx
dWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKICAgICAgICAgYml0cyA9
IGJpdHNQdHJSZWYuZ2V0KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAg
ICAgIG1fYmxvY2tzV2l0aEJpdHNbYmxvY2tJbmRleF0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IGQ1MTAwMGViYTg3ZjMxZGU0ODFiZWQw
OGE1ZjJmZWQ4YTYzOWZmOTkuLmNkM2U3ZTU2MTU0NTY2ZGNmOGMxNTE2M2ExNWI3MmYyNzY4ZjI5
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYg
aGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHMKICAgICAsIG1fc2l6ZShzaXplKQog
ICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRC
bG9jazo6YXRvbVNpemU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRvcigmbV9kaXJlY3Rv
cnkpCi0gICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxJ
c29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgbV9pc29BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKIHsKICAgICBp
bml0aWFsaXplKGhlYXBDZWxsVHlwZSwgbV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0
cmFpbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFp
bnRTZXQuY3BwCmluZGV4IGIzYWJkMmM1MjI0ZmNlM2U1Y2UxMmM0ZjE2M2VkNDgyM2RhZTY5OGUu
LjE3ODBjMDhhNDcwZjI3NjIzMTYzN2VmNjgxMTdjOWE0ZTMyYzFkMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6ZGlkU3RhcnRNYXJraW5nKCkK
IAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKENTdHJpbmcgYWJicmV2aWF0ZWROYW1l
LCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYpPiBmdW5jdGlvbiwg
Q29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSwgQ29uc3RyYWludENvbmN1cnJlbmN5IGNv
bmN1cnJlbmN5LCBDb25zdHJhaW50UGFyYWxsZWxpc20gcGFyYWxsZWxpc20pCiB7Ci0gICAgYWRk
KHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2
aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHks
IGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOworICAgIGFkZChtYWtlVW5pcXVlPFNpbXBsZU1h
cmtpbmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdURk1vdmUobmFtZSks
IFdURk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20p
KTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQuY3BwCmluZGV4IDgyYmUzYmJiNDRjYjZjNTc3NmI4ZWNmN2ZhMGM5NDBkNWQ1YTU4
MjUuLjUzYTkxYTIzYzFkODkyOTE4ZWU0Mjk0MWE2NWY1Mjc4NjdkNDMzNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3MKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1
bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMp
KTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQ2xpZW50Ojpjb3VudChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZWwpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpw
cm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICAgICAgICAg
IGlmIChleGlzdGluZ1RpdGxlID09IHRpdGxlKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAg
ICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVkIFByb2Zp
bGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJc
IiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAgICAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6
OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGwKIAogICAgIC8v
IEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAg
ICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3Qi
X3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIp
OwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICBtX2Nv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpzdGFydENvbnNvbGVQcm9maWxlKCkKQEAgLTE4NSw3ICsxODUsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChFeGVjU3RhdGUqLCBS
ZWY8U2NyaXB0QXJndW1lbnRzPiYmKQogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6
Ondhcm5VbmltcGxlbWVudGVkKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogewogICAgIFN0cmluZyBt
ZXNzYWdlID0gbWV0aG9kICsgIiBpcyBjdXJyZW50bHkgaWdub3JlZCBpbiBKYXZhU2NyaXB0IGNv
bnRleHQgaW5zcGVjdGlvbi4iOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkp
OworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2cs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBj
OGRhNTJlZmQxM2M0OTFjY2FlNjM5NWUwNzRjNDY0NGU3MGNjMGE3Li5iZGJkMzFkNjMxMmIyYzA1
NmQ3YzQ3ODE1ZGM2MTVkMTIyNmQ5MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjpt
YWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhv
c3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUo
KSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAg
ICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihnbG9iYWxPYmplY3QpCiAgICAgLCBtX2Zyb250ZW5kUm91
dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKQEAgLTcxLDExICs3MSwxMSBAQCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcihKU0dsb2JhbE9iagogewogICAgIGF1dG8gY29udGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7
CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29u
c29sZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8
SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKICAgICBtX2NvbnNvbGVBZ2VudCA9IGNv
bnNvbGVBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdl
bnQpKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50PihtX2NvbnNvbGVBZ2VudCk7CisgICAgbV9jb25zb2xlQ2xpZW50
ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1fY29uc29sZUFnZW50
KTsKIAogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogfQpAQCAtMjAwLDcgKzIw
MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlCiAgICAgICAgICAgICBDb25zb2xlQ2xpZW50
OjpwcmludENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9n
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFN0cmluZygpLCAwLCAwKTsKICAg
ICB9CiAKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykp
KTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAog
Q29uc29sZUNsaWVudCogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25zb2xl
Q2xpZW50KCkgY29uc3QKQEAgLTI4MCw3ICsyODAsNyBAQCBJbnNwZWN0b3JBZ2VudCYgSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAg
ICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGpzQWdl
bnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2Vu
dCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOwogICAgICAgICBtX2luc3Bl
Y3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVu
ZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CiAgICAgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5zdXJlRGVidWdnZXJBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQpIHsKICAg
ICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBkZWJ1
Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+
KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKKyAgICAgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0g
bWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29s
ZUFnZW50KTsKICAgICAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJBZ2VudC5nZXQoKTsK
ICAgICAgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KG1fZGVi
dWdnZXJBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdl
bnQpKTsKQEAgLTMyNywyMCArMzI3LDIwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGVuc3VyZUluc3BlY3RvckFnZW50
KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudD4oY29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CiAKICAgICBlbnN1cmVEZWJ1
Z2dlckFnZW50KCk7CiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRleHQpOworICAgIGF1
dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJv
ZmlsZXJBZ2VudD4oY29udGV4dCk7CiAgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwogICAgIG1f
YWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIpKTsKIAotICAgIGF1
dG8gaGVhcEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIZWFwQWdlbnQ+KGNvbnRl
eHQpOworICAgIGF1dG8gaGVhcEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JIZWFwQWdlbnQ+
KGNvbnRleHQpOwogICAgIGlmIChtX2NvbnNvbGVBZ2VudCkKICAgICAgICAgbV9jb25zb2xlQWdl
bnQtPnNldEluc3BlY3RvckhlYXBBZ2VudChoZWFwQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGhlYXBBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0KSk7CisgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4
IGMwYjVjOWFhZDE4YzA4Y2VkZGMzNjk2NmJmMDQ2ODUxNDE3NjI2NDMuLjQxN2U3NzVmYjgwMjQ5
YzA0MDMxMzdhODI3ODIxMzczMjdkMzMyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9y
QWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJJ
bnNwZWN0b3IiX3MpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCi0g
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA3ZWRiYzgwNjYwZjM2
ZDZhODFhYTkxZmI4ZmEzZmRkZGVkYWU2ZjI2Li41ZDI0YzY5ZTZiZjQ1ZDcyZmIwYmRhNTNiNGM0
NTc1OTg2MTNjYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwID0gMTA7
CiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNvbnNvbGUiX3MpCiAgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihtYWtlVW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDb25zb2xlQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsK
IH0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRU
aW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZQogICAgIGlmICgh
cmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0
aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBt
YWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAg
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhl
YywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNv
bnNvbGUoZXhlYywgMSkpKTsKICAgICB9CiB9CiAKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpsb2dUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgbGFiZWwsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVs
LCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6
Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBN
ZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1v
dmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpU
aW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2sp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGlt
ZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9uaWNUaW1lOjpub3co
KSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAz
KSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1v
dmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWlu
ZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZN
b3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BU
aW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0xODQs
MTQgKzE4NCwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAgIGlmIChpdCA9PSBtX3Rp
bWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250
ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmlu
ZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcs
IFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTW9u
b3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25kcyBlbGFwc2VkID0g
TW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNl
ZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92
ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIAog
ICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIH0KQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6Y291bnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpCiAgICAgLy8gRklYTUU6IFdlYiBJbnNwZWN0b3Igc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgVUkgZm9yIGNvdW50ZXJzLCBidXQgZm9yIG5vdyB3ZSBqdXN0IGxvZyBhbiB1cGRhdGVkIGNv
dW50ZXIgdmFsdWUuCiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6
ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbCkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAg
IGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBl
bnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2Fy
bmluZyA9IG1ha2VTdHJpbmcoIkNvdW50ZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0
Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25z
b2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tG
b3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZTVmMjQ4MmEzY2FhMDhhYTgxNjQ1ZmE4Yzc5
YzUyOWJhNDM4MGQwYS4uMjVmMWQzZTcyODFjNmIwZmI4MzMwZmYxMzc4NzM2NDNlYmM2MGVkMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3Rh
dGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJl
YWtwb2ludEFjdGlvbiYgYWN0aW8KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIkRlYnVnZ2VyIl9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPERlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0LmVu
dmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQu
Y3BwCmluZGV4IGI1MzVmZjYxOTJhYWNlZmM3OWI0ZjZjZDkzZGYxMjAxYTM3MTQ4YWMuLjU4MmMz
NWQzNjdkZmUxZTRmN2RjNGU5YTU2ODRkY2EyYTRlM2I0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIEluc3BlY3Rv
ckhlYXBBZ2VudDo6SW5zcGVjdG9ySGVhcEFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiSGVhcCJfcykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEhlYXBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVu
dmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNw
cAppbmRleCA1NmZjMWI3OThkYTBlZWVlYTAyMzMxZWQ1MjU0YTk1MDIxMDA1ODc0Li5jYmFkODFk
Njk5NDQwYTczM2IwYWYwNDE2OTRhODZjYTllNmU4ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yU2NyaXB0
UHJvZmlsZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIlNjcmlwdFByb2ZpbGVyIl9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPFNj
cmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoU2NyaXB0UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZp
cm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQu
Y3BwCmluZGV4IDNhY2E0MTA1MTBmZTUwMGYwNWJmYmFhYzQ2N2ZmZGFjY2IyMWM1MjQuLjkzNTA2
OGM3YWUxMTk3MTA1NDRjMWY3Njc5ODIyZGZiNjZlNTZiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJn
ZXRBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIElu
c3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRlciYg
ZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGFyZ2V0Il9zKQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8VGFyZ2V0RnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRj
aGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggZTMyOWEzYjQzY2Q2MDk2NWQ5Zjc3ODVhNDgyMjAxMWFiMzY2ZmE1My4uOWIzZjM3OWQ1ZTVh
NDkwZGJlMzc1YzcyYWM5OWZhNzIwYjlhY2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dERlYnVnZ2VyQWdlbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0IEpTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5n
JiBlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9u
TG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsK
KyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpLCAwKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50
aW1lQWdlbnQuY3BwCmluZGV4IDE0NWQwNTE2YjhlMzk2ODg3OGQ5MmNiNTk0YWE1OTliYWZhMzlk
MzIuLjNiN2MzZTIxZDMxYzFjMmY1YjZkMWJhMGMxNmY0ODg4M2U2Y2YzMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudChKU0FnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rv
clJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjpt
YWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8UnVudGltZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9nbG9iYWxPYmplY3QoY29udGV4dC5pbnNwZWN0
ZWRHbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCA3MTAxNjY4YTk3Yzg3NDQ4MTJmNDY1NmYxNmUw
YjdkZDU5NGYxYTYwLi5jYzk2NDAwNTY3OWRiZmNkNGZlMDI5MDZiYzkzYzIzYjJjODJlY2NiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dC5jcHAKQEAgLTE0NCwxMSArMTQ0LDExIEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tlCiAKICAg
ICBTb2NrZXQ6OnNldHVwKHNvY2tldCk7CiAKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBt
YWtlVW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKIAogICAgIGNvbm5lY3Rpb24tPnBvbGwg
PSBTb2NrZXQ6OnByZXBhcmVQb2xsaW5nKHNvY2tldCk7CiAgICAgY29ubmVjdGlvbi0+c29ja2V0
ID0gc29ja2V0OwotICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVz
c2FnZVBhcnNlcj4oaWQsIFNvY2tldDo6QnVmZmVyU2l6ZSk7CisgICAgY29ubmVjdGlvbi0+cGFy
c2VyID0gbWFrZVVuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpCdWZmZXJTaXplKTsK
ICAgICBjb25uZWN0aW9uLT5wYXJzZXItPnNldERpZFBhcnNlTWVzc2FnZUxpc3RlbmVyKFt0aGlz
XShDb25uZWN0aW9uSUQgaWQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKICAgICAgICAgaWYg
KG1faW5zcGVjdG9yQ2xpZW50KQogICAgICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmRpZFJl
Y2VpdmVXZWJJbnNwZWN0b3JFdmVudChpZCwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCmluZGV4IDcwZjJkN2E0
ODEzNDcwZjgxMzczMmIzYjk3N2I1YjczYTQxOTYwYjUuLjMyMDQwMGZkNWIzY2RiMmM0YjE1ZGJk
YzkzMDQ2YmJmZDAwY2FkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PiBjcmVhdGUo
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCogaW5zcGVjdG9yQ2xpZW50LCBjb25zdCBj
aGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFtZSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PihpbnNwZWN0
b3JDbGllbnQsIG5hbWUpOwogICAgIH0KIAogICAgIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50KFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQqLCBjb25zdCBjaGFyKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggMzVm
ZTRhYmIyYmFlYzJmMTQ5NTY2MTU2NjNjYTZjNTBhNmI5Mjk1MS4uY2MyYjU2NjFiZTFiNTJiNmYz
ZDM4NDU5ZmM2MzZmYzkyMjNhNmUyZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNf
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM5LDggKzEzOSw4IEBAIGNsYXNzIE9iakNHZW5l
cmF0b3JUZW1wbGF0ZXM6CiAgICAgW18ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyIHJlbGVh
c2VdOwogICAgIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyID0gW2hhbmRsZXIgcmV0YWlu
XTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2Jq
Q0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAg
YXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFp
bk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7ZG9tYWluTmFtZX0i
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2Nv
bnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBl
Y3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCBhMThl
ODJkOWYzZmUwNjFmNDJkMGI4MDI4ODQ3YTc1N2E3ODBjZGJkLi4zNDk3NTkyMTMwMzcxNGMzMWIz
NGViMDIwZDFjZGY3ZTE1Y2FlY2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFj
LXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZv
cm0uanNvbi1yZXN1bHQKQEAgLTc3Miw4ICs3NzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIg
PSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0Jh
Y2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RG
TW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5
bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDIyNDFkZjZhYmEzNjBjYTdmNmVmZjNiY2Nm
MGE1MzE2ZmFkY2QzMjYuLjdlYmEwMTY5NGIwODg0ZDJiYjcxMGNhNDFkMTkzZDQxNzYxN2EzNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
CkBAIC0xMTkwLDggKzExOTAsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
ZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9kYXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxl
ciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0g
ICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFs
dGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtl
VW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsK
KyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1v
dmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cmlu
ZGV4IDQ5ZTBiNDVlNjE4NTZkOGViY2JkNTYwZDI3NDEwNGFkZWZiZDEwNWQuLmRmZmY1NDIyNmM5
MTc3ZDhhMDExMzAwYzQ4NmZhNGZiNDE5NWM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQKQEAgLTEwNjksOCArMTA2OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAg
ICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFto
YW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVy
KTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQo
V1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4t
YXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29u
LXJlc3VsdAppbmRleCBlOTE3MzVjNWI2ZWMzNzRiMGMzZDk2Mjk2Njg1ZDhhYzc4NDhiMWUyLi4w
ZGZiMzIxNTFjYWVkODdlNWUyNDZiN2RlYTJkOTdkYmM2NjY3YzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFp
bGFiaWxpdHkuanNvbi1yZXN1bHQKQEAgLTc4NCw4ICs3ODQsOCBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogICAgIFtfZG9tYWluQUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkFI
YW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hl
cj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tlbmREaXNwYXRjaGVyLCBBbHRl
cm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5BQmFja2VuZERpc3BhdGNoZXI+
KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9t
YWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkEiX3MsICpfY29udHJvbGxlciwgV1RGTW92
ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdl
bnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC04MDIsOCArODAyLDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkJIYW5kbGVyIHJlbGVhc2VdOwog
ICAgIF9kb21haW5CSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVy
bmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5CQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkJCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkIiX3Ms
ICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQkJhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5CQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5CIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5h
cHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5k
ZXggYmI1Mjk0YTgyMTkyNTIzZDA4MzMxYTkwYTIyYzRjNjk4NGY4Y2EzNS4uMmJlNzMwOTI4OTMz
OWEyNTkwYTM3N2YxMjY4NGQ5ZmQ0YzYzMjcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13
aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5z
LXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0xMDQxLDggKzEwNDEs
OCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazFIYW5kbGVyIHJl
bGVhc2VdOwogICAgIF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9y
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIp
KTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5l
dHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwog
ICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQp
KTsKIH0KIApAQCAtMTA1OSw4ICsxMDU5LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICBbX25ldHdvcmszSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazNIYW5kbGVyID0g
W2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazMiX3MsICpfY29udHJvbGxlciwgV1RG
TW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVy
ID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3Zl
KGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2Vu
dChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0t
dmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXgg
YzBiM2NjOTUyODY2MzY0M2E3NjVmNWYzZWU4ODczYjE1ZTQzNjk4Mi4uNzlhYTljZTVhZDg2YzFl
Njk4OTIwZjIwNDI1ZjdjNDcwOWZhNDhhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKQEAgLTgxNiw4
ICs4MTYsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfY29tbWFuZERvbWFp
bkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2NvbW1hbmREb21haW5IYW5kbGVyID0gW2hhbmRsZXIg
cmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7
Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250
cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPj4oIkNvbW1hbmRE
b21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAg
ICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQKaW5kZXggMzFkYmM4Yzk5OGI1YzE0MTE1MDg2MjRjNGMyOGI2NmY4
MWUxOGM4MS4uNTEwZTE3NWNjYzJmM2MwYzY0YTJlNjUwY2M2ODJjNTQ3NGJiNGZmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29u
LXJlc3VsdApAQCAtNzk5LDggKzc5OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAg
ICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmsxSGFuZGxlciA9IFto
YW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVy
KTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQo
V1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25z
LXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1w
bGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCBhMThlODJkOWYzZmUwNjFmNDJkMGI4MDI4ODQ3YTc1
N2E3ODBjZGJkLi4zNDk3NTkyMTMwMzcxNGMzMWIzNGViMDIwZDFjZGY3ZTE1Y2FlY2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFj
L2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTc3Miw4ICs3
NzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIg
cmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rv
ck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29y
a0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+Pigi
TmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsK
KyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsi
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2Nv
bnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggODM0MmU1ZmM1ZWZjYTI4NDlkZmQxMmRi
N2FhNGFiNDk4MmI2MWZlOC4uZWY5MDY2OTQzMGJiMTI2ZTY4OWJiYzdiZmZhOWJiMGY1NDQ3MzNk
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQg
SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQog
ICAgIH0KIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSB8fCAo
bV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxp
bmVGb3JQcm9maWxlcigpKSkpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29kZUJsb2NrKTsKKyAgICAgICAgbV9kaXNhc3NlbWJs
ZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2spOwogICAgIGlmIChV
TkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7CiAgICAgICAgIG1fY29tcGls
YXRpb24gPSBhZG9wdFJlZigKICAgICAgICAgICAgIG5ldyBQcm9maWxlcjo6Q29tcGlsYXRpb24o
CkBAIC05MDEsNyArOTAxLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICB9
CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVpbGRNYXBwaW5nKCkp
Ci0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5p
cXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVy
KSwgcGF0Y2hCdWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2lu
TWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdp
bk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOwogICAgIAogICAgIENvZGVSZWY8SlNFbnRyeVB0
clRhZz4gcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hCdWZmZXIsIEpTRW50
cnlQdHJUYWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggMTZi
ZjcwZDgwMTc0NDIzMDUwMmEyZDhiMTk3Y2Q0MDFjODAyNGYzOC4uNWJkZjgzMDQ2NTA0Mzk5NGUx
MWJhZmZlZDUyYmI3ODVjMWJhMGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1
bmtzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEpJVFRodW5rczo6
SklUVGh1bmtzKCkKLSAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChzdGQ6Om1ha2VfdW5pcXVl
PEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCisgICAgOiBtX2hvc3RGdW5jdGlvblN0dWJNYXAobWFr
ZVVuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMzg4ZmIwZTYyNzA4YjM0ZWNiOTcxZTk0NmI0NmIxOTNj
NGNhZTNiLi44ZjlhODY0ZTRmZTg2MjZhMWZlZmMwYzMwN2M5ZTQ2NTY2MmY1YThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwOTIsNyArMTA5Miw3IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZyYW1lU2h1ZmZs
ZXI+IGZyYW1lU2h1ZmZsZXI7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRh
KCkpIHsKICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpOwotICAgICAg
ICBmcmFtZVNodWZmbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1
YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOworICAgICAgICBmcmFtZVNo
dWZmbGVyID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5r
SW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAg
IC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNl
bGwsIGFuZCB3ZSBjYW4KICAgICAgICAgLy8gdXNlIHRoZSBhZGRpdGlvbmFsIHJlZ2lzdGVyIHRo
aXMgYnV5cyB1cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzY4MTdlMDQ1ZjU2N2U5ZWQzYTBl
NTk1N2QyNWU2Mzc5ODU2NWZhZS4uNWFiMDBlZjdmZTU5MzFmNzQ2MjRmZTdjMWYxYjBhYzQ2NzFj
MDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI5NjksNyArMjk2OSw3IEBAIGludCBydW5K
U0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMm
IGZ1bmMpCiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAgICAgICAgIGlmIChv
cHRpb25zLm1fcHJvZmlsZSAmJiAhdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyKQotICAgICAgICAg
ICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6
RGF0YWJhc2U+KHZtKTsKKyAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1h
a2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0
ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1bWVudHMpOwogICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQob3B0aW9ucy5tX2VuYWJsZVJlbW90ZURlYnVn
Z2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNzNkOWFh
ZjllMjNmM2NjNGU0MjMyYzRjNWU5ZjlmYTA4NzdhZTg0ZS4uZTlkMmNlZmY2NWNjODUxMWQ3NTdi
MDUzMTk3YzQ4M2FiOThkZjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUKICAgICAsIG1f
aW1tZWRpYXRlUGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkluU3RhdGVtZW50KGZhbHNl
KQogICAgICwgbV9kZWJ1Z2dlclBhcnNlRGF0YShkZWJ1Z2dlclBhcnNlRGF0YSkKIHsKLSAgICBt
X2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2Ny
aXB0TW9kZSk7CisgICAgbV9sZXhlciA9IG1ha2VVbmlxdWU8TGV4ZXJUeXBlPih2bSwgYnVpbHRp
bk1vZGUsIHNjcmlwdE1vZGUpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCAmbV9wYXJz
ZXJBcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RMaW5l
KCkub25lQmFzZWRJbnQoKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBz
b3VyY2Uuc3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmlu
ZGV4IDY5YWEwYmMxOTBhZjY3ODNkODkyOGMzNTlhYTNiMTBiYjFmYmQ4NzMuLjBhNWVkZTRiODQy
NWNmZDFiMzE3Yzc2YzUxZWE3Mzc4MTc4MGI1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaApAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgdm9pZCBw
dXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFiZWwsIGJvb2wgaXNMb29wKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX2xhYmVscykKLSAgICAgICAgICAgIG1fbGFiZWxzID0gc3RkOjptYWtlX3Vu
aXF1ZTxMYWJlbFN0YWNrPigpOworICAgICAgICAgICAgbV9sYWJlbHMgPSBtYWtlVW5pcXVlPExh
YmVsU3RhY2s+KCk7CiAgICAgICAgIG1fbGFiZWxzLT5hcHBlbmQoU2NvcGVMYWJlbEluZm8geyBs
YWJlbC0+aW1wbCgpLCBpc0xvb3AgfSk7CiAgICAgfQogCkBAIC0xOTQxLDcgKzE5NDEsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNl
ckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgICAgICBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZz
ZXQgPSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIGVuZExvY2F0
aW9uLnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNldCgpOwogICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4gPSBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxp
bmVTdGFydE9mZnNldDsKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXJzZWRO
b2RlPihtX3BhcnNlckFyZW5hLAorICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPFBhcnNlZE5v
ZGU+KG1fcGFyc2VyQXJlbmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kTG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvbHVtbiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCBkZjE3YmU1
MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNmMzNhN2VlLi40MTAwMDZkOTI3NTFjZTk2YjkyY2I5
NjI1NjM1ZWE3Y2Y3OGVjNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJBcmVuYS5oCkBAIC0xODAsNyArMTgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElk
ZW50aWZpZXJBcmVuYSYgaWRlbnRpZmllckFyZW5hKCkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKFVOTElLRUxZICghbV9pZGVudGlmaWVyQXJlbmEpKQotICAgICAgICAgICAgICAgIG1faWRl
bnRpZmllckFyZW5hID0gc3RkOjptYWtlX3VuaXF1ZTxJZGVudGlmaWVyQXJlbmE+KCk7CisgICAg
ICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBtYWtlVW5pcXVlPElkZW50aWZpZXJBcmVu
YT4oKTsKICAgICAgICAgICAgIHJldHVybiAqbV9pZGVudGlmaWVyQXJlbmE7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uY3BwCmluZGV4IDA1MDMyYjVkMTMxMDhjMGViNjIwZTlkYWU4MjBjZWY3YWM3NTMx
OGMuLjM1NzExYjVmYTY0MjY5ZTY3NzRhYjcwZTIxZGQ1MDI1MTY5YzhlYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5j
cHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0aW9uQ291bnRlciogQ29tcGlsYXRpb246OmV4ZWN1
dGlvbkNvdW50ZXJGb3IoY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpbikKIHsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXhlY3V0aW9uQ291bnRlcj4mIGNvdW50ZXIgPSBtX2NvdW50ZXJzLmFkZChvcmln
aW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvdW50ZXIpCi0gICAgICAg
IGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+KCk7CisgICAgICAg
IGNvdW50ZXIgPSBtYWtlVW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+KCk7CiAKICAgICByZXR1cm4g
Y291bnRlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApp
bmRleCA3MGM3MTQ3MzMyNDQ0MDgwNzg3OTM0MDE5ODY2NzNjOTdlMWVhODNkLi5hNjRkZTNmZGQ2
NjI1NTE4YWM1ZDEyNmNlYWM3OGI2ZjIxMjVhNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdGFja0ZyYW1lPj4gZ2V0U3RhY2tUcmFjZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNP
YmoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzaXplX3QgZnJhbWVzVG9Ta2lwID0g
dXNlQ3VycmVudEZyYW1lID8gMCA6IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFj
a0ZyYW1lPj4gc3RhY2tUcmFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0YWNrRnJhbWU+
PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2Ug
PSBtYWtlVW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKICAgICB2bS5pbnRlcnByZXRlci0+
Z2V0U3RhY2tUcmFjZShvYmosICpzdGFja1RyYWNlLCBmcmFtZXNUb1NraXAsIGdsb2JhbE9iamVj
dC0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWUoKSk7CiAgICAgaWYgKCFzdGFja1RyYWNlLT5pc0Vt
cHR5KCkpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYyA9PSB2bS50b3BDYWxsRnJh
bWUgfHwgZXhlYy0+aXNHbG9iYWxFeGVjKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNDM5ZTIwOWIwYTVmOGZi
ODI5Yjc5MTk3NTc0ODhjNDE1NjM0MjczZi4uZWYyZTgzMDg3NDFiODg1MmU1NjIzMjZmOTYyNTdj
OWQwMjkzNWQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogRnVuY3Rpb25FeGVjdXRh
YmxlOjpSYXJlRGF0YSYgRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQog
ewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgYXV0byByYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFy
ZURhdGE+KCk7CiAgICAgcmFyZURhdGEtPm1fbGluZUNvdW50ID0gbGluZUNvdW50KCk7CiAgICAg
cmFyZURhdGEtPm1fZW5kQ29sdW1uID0gZW5kQ29sdW1uKCk7CiAgICAgcmFyZURhdGEtPm1fcGFy
YW1ldGVyc1N0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKaW5kZXggNDYyMzY0
MWM1OThlM2ViYjVmYmE2YmMwMjM3MjY0ZTUwNTJmZDE3OS4uNTJiMjhiMTNjN2UyZTI1ZDIxYmJi
YWIzYWQzMWQ1YjZiYzBjZGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIEZ1bmN0aW9u
UmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50IGZpbmFsIDogcHVi
bGljIFdhdGNoCiBpbmxpbmUgV2F0Y2hwb2ludCogRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxs
b2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KCFoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKTsKLSAgICBtX2FsbG9j
YXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbGxvY2F0
aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CisgICAgbV9hbGxvY2F0aW9uUHJv
ZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8QWxsb2NhdGlvblByb2ZpbGVDbGVh
cmluZ1dhdGNocG9pbnQ+KHRoaXMpOwogICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlQ2xl
YXJpbmdXYXRjaHBvaW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMWE1N2VmM2RjZmU5MTllNzBiMzdmYTdl
MzQ4NTRhMTNlOTA1M2ZhZS4uY2M4Nzc2N2YxMDhiY2M0ODNiMzE1ZjExMmZhOWM1MzQ3ZjUyMDE0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgIG1fZGVidWdnZXIgPSAwOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkpT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwotICAgIG1faW5zcGVjdG9y
RGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigq
dGhpcyk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOworICAgIG1faW5zcGVj
dG9yRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhp
cyk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CiAgICAgbV9jb25zb2xlQ2xp
ZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xlQ2xpZW50KCk7CiAjZW5kaWYKQEAg
LTExNDUsNTcgKzExNDUsNTcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIHsKICAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0
KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IG1ha2VVbmlxdWU8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAg
ICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2bSk7CiAgICAgfQog
ICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgbV92bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVy
YXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1f
YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fYXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRp
b24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlQ
cm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAog
ICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1l
cy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hw
b2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hw
b2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5
cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBt
X21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Cisg
ICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
ICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIG1f
dm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
ZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90
b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
ZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90
b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1i
b2wpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBv
aW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAg
ICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50KTsKKyAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBv
aW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ1Byb3Rv
dHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAg
IG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50KTsKKyAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQg
PSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFBy
b3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwotICAgICAgICBtX21hcFBy
b3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRp
b24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hw
b2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50
KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAg
ICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9
IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3Bl
cnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsK
KyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhp
cywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldFByb3RvdHlw
ZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIApAQCAtMTIwNiw3ICsxMjA2LDcg
QEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9
IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgdGhpcy0+c3ltYm9sUHJvdG90eXBl
KCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRj
aHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBt
YWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdh
dGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50
KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwogICAgIH0KQEAgLTE5MzIsMTAgKzE5MzIsMTAgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3BlY2llc1dhdGNocG9p
bnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50LnRvdWNo
KHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKTsKIAotICAgIG1fYXJyYXlQ
cm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFBy
b3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlz
LCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBt
X2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhp
cywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAg
bV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAKLSAg
ICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7Cisg
ICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAgIG1f
YXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMDQ3
YzE2NjUzZTcxYjFhODA2YmQ5ZmM3ZDU2NjQzYTVmOTg4ZjExZS4uODQ1MzVjYTVjNjAwY2VjYmQ4
YjQ3OGY2NWI1M2NkMDdlMzZhODM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01MjEsNyArNTIxLDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgewogICAgICAg
ICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9yYXJlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4oKTsKKyAgICAgICAg
bV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4oKTsKICAgICB9
CiAgICAgICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDFhZjAwMzY1M2NiOGMzZGU2NDNmOGM0OTEyN2FiYjNl
NTUxM2Q1YWQuLjMyN2ZlZDA2YzY3YTViZjExMjUxZjlmNGRlZDgzOWU3MDMzYzhhYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKQEAg
LTg3LDcgKzg3LDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpz
ZXRSdW5Mb29wKE1hbmFnZXIqIG1hbmFnZXIsIENGUnVuTG9vcFIKICNlbHNlCiBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdlciYgbWFuYWdlcikKICAg
ICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKLSAgICAsIHRpbWVyKHN0ZDo6bWFrZV91
bmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVu
TG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCisgICAgLCB0aW1lciht
YWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PigqcnVuTG9vcCwgJm1hbmFnZXIsICZK
U1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2spKQogewogI2lmIFVT
RShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGltZXItPnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQ
cmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlciYgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNoYXJlZCgpCiAKIHZvaWQg
SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVyVk0oVk0mIHZtKQogewotICAgIGF1dG8g
ZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVyVk1EYXRhPigqdGhpcyk7CisgICAgYXV0byBkYXRh
ID0gbWFrZVVuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKICNpZiBVU0UoQ0YpCiAgICAgZGF0YS0+
c2V0UnVuTG9vcCh0aGlzLCB2bS5ydW5Mb29wKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAppbmRleCA1ZjA3
OGQyYTUwOWQyYjQ0MjAwZjdhNGFmMzg4MTI0NmNiMmQ1OGE3Li41MjkwMjBkZjBmMWRjMmEyODZm
ODAwYWJhZDlkN2ViN2QzZjhlZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBpbmxp
bmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiBpbmxp
bmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9m
ZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCk7CisgICAg
ICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+
KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKaW5kZXggNTllYzQx
YzQ5YWU4MmY0N2Y2OTg2ODA2ZGQ2MTQzOTQ0YTQyYjVkNi4uYjFiYjY3OTE5OTI2NWFmY2JjY2M4
MzY1NmQ4ZDU2ZmM1YjRhMzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlUYWJsZS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUHJvcGVydHlUYWJsZTo6UHJv
cGVydHlUYWJsZShWTSYgdm0sIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgIC8vIENv
cHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNl
dD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwog
ICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogUHJvcGVydHlUYWJsZTo6
UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJv
cGVydHlUYWJsZSYgb3RoZXIpCkBAIC0xMDcsNyArMTA3LDcgQEAgUHJvcGVydHlUYWJsZTo6UHJv
cGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVy
dHlUYWIKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KICAgICBWZWN0
b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVk
T2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9k
ZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4o
Km90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFrZVVu
aXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CiB9CiAK
IHZvaWQgUHJvcGVydHlUYWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCAwNzFiMWY2NjMxNWNlM2FlOGRjZmUxNzVm
ZjYzNjZmNWM2MzJhZmZjLi43MGU1OTNkNTNlYmRkODFkOGMwODEzYTI5NzcwZTk0MGNlMDQxMTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTE3OCw3ICsx
NzgsNyBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiAgICAgbV9udW1T
dWJwYXR0ZXJucyA9IHBhdHRlcm4ubV9udW1TdWJwYXR0ZXJuczsKICAgICBpZiAoIXBhdHRlcm4u
bV9jYXB0dXJlR3JvdXBOYW1lcy5pc0VtcHR5KCkgfHwgIXBhdHRlcm4ubV9uYW1lZEdyb3VwVG9Q
YXJlbkluZGV4LmlzRW1wdHkoKSkgewotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURh
dGE+KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fY2FwdHVyZUdyb3VwTmFtZXMuc3dhcChwYXR0
ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMpOwogICAgICAgICBtX3JhcmVEYXRhLT5tX25hbWVkR3Jv
dXBUb1BhcmVuSW5kZXguc3dhcChwYXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCAzOWNkZDkxMTZl
MDI3ZTNkYjYwNDBkYmQ4ZmU1MjcwZDJlOTk1ZDhkLi5lOGRhODUyNmU3YzdlODFmYmVhNzVjODg5
ODgxNjFiOWFmODkxNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApA
QCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGVuc3VyZVJlZ0V4cEpJVENvZGUoKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUpCi0gICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7CisgICAgICAgICAgICBt
X3JlZ0V4cEpJVENvZGUgPSBtYWtlVW5pcXVlPFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7CiAgICAg
ICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2RlLmdldCgpOwogICAgIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRl
eCAyMzdkN2RlNjg4ZGQyMDc2NTAyMDEyMTZjZDBkNTQ2ODBjNDk2ZWFhLi5lZTZlMThjZWZkYmU3
OWY0YmMyZWIyMTk3ZmY1MzkxMDRlMWY3OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIGF1
dG8gU2NyaXB0RXhlY3V0YWJsZTo6ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXBJbXBsKHN0ZDo6dW5p
cXVlX3B0cjxUZW1wbGF0ZU9iamVjCiB7CiAgICAgaWYgKGRlc3QpCiAgICAgICAgIHJldHVybiAq
ZGVzdDsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVtcGxhdGVPYmplY3RN
YXA+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFRlbXBsYXRlT2JqZWN0TWFwPigp
OwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgZGVzdCA9IFdURk1vdmUocmVzdWx0
KTsKICAgICByZXR1cm4gKmRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAppbmRleCAyOTNjNDY0NzJlNzQ4OTQxY2E5Y2MyYWRhYzE2YTNkMmRjNWRlZWVj
Li4wMWNkMmJkNTQ3ZmUwMmI1MDQ3YTZkNDViM2M4YWQ2ZmQ1MmJkYjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTg1Niw3ICs4NTYsNyBAQCBX
YXRjaHBvaW50U2V0KiBTdHJ1Y3R1cmU6OmVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBv
aW50U2V0KFZNJiB2bSwgUHJvcGVydAogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiByYXJlRGF0YSA9
IHRoaXMtPnJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNo
cG9pbnRTZXRzKSB7CiAgICAgICAgIHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNl
dHMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJv
cGVydHlXYXRjaHBvaW50TWFwPigpOworICAgICAgICAgICAgbWFrZVVuaXF1ZTxTdHJ1Y3R1cmVS
YXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOwogICAgICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IHJhcmVEYXRhLT5tX3JlcGxhY2Vt
ZW50V2F0Y2hwb2ludFNldHMtPmFkZChvZmZzZXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCmluZGV4IDk5YThk
OWY3ZGFhYzIxN2U0YzgxZTdlNzEyNmU5YzAyYjM3NGVkM2YuLmQzY2YxODNiMGY2ZDdjNDg5ODgw
MGFiNjhlZTQ4Y2QxMjhmN2ZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFN0
cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
Vk0mIHZtLCBTdHJ1Y3R1cgogICAgIEFTU0VSVChjb25kaXRpb25TZXQuc3RydWN0dXJlc0Vuc3Vy
ZVZhbGlkaXR5KCkpOwogICAgIGZvciAoT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9u
IDogY29uZGl0aW9uU2V0KSB7CiAgICAgICAgIGlmIChjb25kaXRpb24uY29uZGl0aW9uKCkua2lu
ZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZSkgewotICAgICAgICAgICAgbV9vYmpl
Y3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CisgICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRh
cHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0VG9TdHJpbmdB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0
aGlzKTsKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX29i
amVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0LmFkZChjb25kaXRpb24sIHRoaXMpLT5p
bnN0YWxsKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcAppbmRleCAzOTJmMjE3YzE0ZWZhZWI1NDViZjBkNGY3NzkwYzExMjc5MzJiYzg1Li5hNGE4
NzBmYzFmY2FkMzVjNDM5NWYxMDliMjJhOTljNDIwZDc0MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgY29u
c3QgU3ltYm9sVGFibGU6OkxvY2FsVG9FbnRyeVZlYyYgU3ltYm9sVGFibGU6OmxvY2FsVG9FbnRy
eShjb25zdCBDb25jdXJyZW50SlMKICAgICAgICAgICAgICAgICBzaXplID0gc3RkOjptYXgoc2l6
ZSwgb2Zmc2V0LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgKyAxKTsKICAgICAgICAgfQogICAgIAot
ICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxUb0VudHJ5VmVj
PihzaXplLCBudWxscHRyKTsKKyAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBtYWtlVW5pcXVlPExv
Y2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkg
OiBtX21hcCkgewogICAgICAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhbHVlLnZh
ck9mZnNldCgpOwogICAgICAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkpCkBAIC0xNTksNyAr
MTU5LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0p
CiAgICAgICAgIHJlc3VsdC0+bV9hcmd1bWVudHMuc2V0KHZtLCByZXN1bHQsIGFyZ3VtZW50cyk7
CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEpIHsKLSAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICByZXN1
bHQtPm1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAg
ICAgICAgewogICAgICAgICAgICAgYXV0byBpdGVyID0gbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1h
cC5iZWdpbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgU3ltYm9sVGFibGU6OnByZXBhcmVG
b3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiAgICAgaWYgKG1fcmFy
ZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8
U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIGZvciAoYXV0byBpdGVyID0gbV9tYXAuYmVn
aW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAg
bV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoaXRlci0+a2V5LCBUeXBlUHJvZmlsZXJOZWVk
c1VuaXF1ZUlER2VuZXJhdGlvbik7CkBAIC0yMTAsNyArMjEwLDcgQEAgQ29kZUJsb2NrKiBTeW1i
b2xUYWJsZTo6cmFyZURhdGFDb2RlQmxvY2soKQogdm9pZCBTeW1ib2xUYWJsZTo6c2V0UmFyZURh
dGFDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRh
KQotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVE
YXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVE
YXRhPigpOwogCiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX2NvZGVCbG9jayk7CiAgICAgbV9y
YXJlRGF0YS0+bV9jb2RlQmxvY2suc2V0KCpjb2RlQmxvY2stPnZtKCksIHRoaXMsIGNvZGVCbG9j
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IDQxMGVi
NmQ1YWUxNmYzNjAyMjZkYjM4MjNmN2VlODI4ZWNjYWIzODMuLjQxYWNhOWQzZDRkOWI4YTU2YWU2
ODUyMzBlOGQ2Njc1MmFjMGQwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVTZXQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9w
ZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb3RvLT5wcm9wZXJ0eUhhc2go
KSk7CiAgICAgfQogCi0gICAgbV9wcm9wZXJ0eUhhc2ggPSBzdGQ6Om1ha2VfdW5pcXVlPFN0cmlu
Zz4oYnVpbGRlci50b1N0cmluZygpKTsKKyAgICBtX3Byb3BlcnR5SGFzaCA9IG1ha2VVbmlxdWU8
U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiAqbV9wcm9wZXJ0eUhhc2g7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0ZTJkMGQzMjRhMjRl
MjMyY2QxOTUzODkyZWQ4YjBhMzNiMGIwNWVlLi5iNzA5MmMwOGVmNzJiMGVjYTg5ZmYwYjVjNGJl
MWFlNTlhYTFkYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNTIs
MTggKzI1MiwxOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAg
ICAgLCBtX3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQogI2VuZGlmIC8vIFVTRShDRikK
ICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCi0gICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKHN0
ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCi0gICAg
LCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCi0gICAgLCBqc1ZhbHVl
R2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlw
ZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5l
ZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQotICAgICwgaW1tdXRhYmxlQnV0
dGVyZmx5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0
cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEludGVy
aW9yUG9pbnRlcnMpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxI
ZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBD
ZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUoc3RkOjpt
YWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZShzdGQ6Om1ha2Vf
dW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGU+KCkpCisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9j
YXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6
OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxH
aWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKyAgICAs
IGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJp
YnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQorICAg
ICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBl
PihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxs
V2l0aEludGVyaW9yUG9pbnRlcnMpKSkKKyAgICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1
ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFr
ZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpT
U3RyaW5nSGVhcENlbGxUeXBlPigpKQorICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5
cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlPigp
KQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVl
PFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUNv
ZGVCbG9ja0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFw
Q2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKG1ha2VV
bmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkKICNlbmRpZgogICAgICwg
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGls
aWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJpbWl0aXZlR2lnYWNh
Z2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgogICAgICwganNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4
aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkp
IC8vIEhhc2g6MHgyNDFlOTQ2CkBAIC0yOTYsNyArMjk2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09
IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9t
U3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxp
c3QobmV3IEFyZ0xpc3QpCi0gICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9y
QmFzZWxpbmVKSVQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKKyAgICAsIG1hY2hp
bmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChtYWtlVW5pcXVlPFNpbXBs
ZVN0YXRzPigpKQogICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25NYXAoKnRoaXMpCiAg
ICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKICAgICAsIHN5bWJvbEltcGxUb1N5bWJvbE1hcCgqdGhp
cykKQEAgLTMxMiw4ICszMTIsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgLCBtX2luaXRpYWxpemluZ09iamVjdENsYXNzKDApCiAjZW5kaWYKICAgICAs
IG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KDApCi0gICAgLCBtX2NvZGVDYWNoZShzdGQ6Om1ha2Vf
dW5pcXVlPENvZGVDYWNoZT4oKSkKLSAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKHN0ZDo6bWFr
ZV91bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCisgICAgLCBtX2NvZGVDYWNoZSht
YWtlVW5pcXVlPENvZGVDYWNoZT4oKSkKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKG1ha2VV
bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCiAgICAgLCBtX3R5cGVQcm9maWxlckVu
YWJsZWRDb3VudCgwKQogICAgICwgbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoSXNXYXRjaGVk
KQogICAgICwgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50KDApCkBAIC00MDcsNyAr
NDA3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIExM
SW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7CiAgICAgCiAgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnVzZVByb2ZpbGVyKCkpKSB7Ci0gICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9m
aWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPigqdGhpcyk7CisgICAg
ICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNl
PigqdGhpcyk7CiAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gcGF0aE91dDsKICAgICAgICAg
Y29uc3QgY2hhciogcHJvZmlsZXJQYXRoID0gZ2V0ZW52KCJKU0NfUFJPRklMRVJfUEFUSCIpOwpA
QCAtNDIzLDcgKzQyMyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlDb250cm9sbGVyID0g
YWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOwogCi0gICAgbV9ieXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5PigqdGhpcyk7CisgICAgbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gbWFr
ZVVuaXF1ZTxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CiAKICAgICBpZiAoT3B0
aW9uczo6dXNlVHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIGVuYWJsZVR5cGVQcm9maWxlcigpOwpA
QCAtNDQyLDkgKzQ0Miw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKICAgICBpZiAoT3B0aW9u
czo6dXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRGdXp6ZXJBZ2VudChz
dGQ6Om1ha2VfdW5pcXVlPFJhbmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAg
IHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8UmFuZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMp
KTsKICAgICBlbHNlIGlmIChPcHRpb25zOjp1c2VEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQo
KSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3VibGVQcmVkaWN0
aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlx
dWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOwogCiAgICAgaWYgKE9wdGlv
bnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAoKSkKICAgICAgICAgc2V0U2hvdWxk
QnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsKQEAgLTQ1Nyw5ICs0NTcsOSBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAv
LyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUgSklUIGlzIGdvaW5nIHRvIHVzZSBh
cmUgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvbXBpbGF0aW9uIHRocmVhZHMuCiAgICAgaWYgKGNhblVz
ZUpJVCgpKSB7Ci0gICAgICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRUaHVua3M+
KCk7CisgICAgICAgIGppdFN0dWJzID0gbWFrZVVuaXF1ZTxKSVRUaHVua3M+KCk7CiAjaWYgRU5B
QkxFKEZUTF9KSVQpCi0gICAgICAgIGZ0bFRodW5rcyA9IHN0ZDo6bWFrZV91bmlxdWU8RlRMOjpU
aHVua3M+KCk7CisgICAgICAgIGZ0bFRodW5rcyA9IG1ha2VVbmlxdWU8RlRMOjpUaHVua3M+KCk7
CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rp
b25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5j
dGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CkBAIC02MTksNyArNjE5LDcgQEAg
V2F0Y2hkb2cmIFZNOjplbnN1cmVXYXRjaGRvZygpCiBIZWFwUHJvZmlsZXImIFZNOjplbnN1cmVI
ZWFwUHJvZmlsZXIoKQogewogICAgIGlmICghbV9oZWFwUHJvZmlsZXIpCi0gICAgICAgIG1faGVh
cFByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwUHJvZmlsZXI+KCp0aGlzKTsKKyAgICAg
ICAgbV9oZWFwUHJvZmlsZXIgPSBtYWtlVW5pcXVlPEhlYXBQcm9maWxlcj4oKnRoaXMpOwogICAg
IHJldHVybiAqbV9oZWFwUHJvZmlsZXI7CiB9CiAKQEAgLTEwNDEsOCArMTA0MSw4IEBAIHN0YXRp
YyBib29sIGRpc2FibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCh1bnNpZ25lZCYgY291bnRl
ciwgY29uc3QgRnVuYyYgZG9ECiBib29sIFZNOjplbmFibGVUeXBlUHJvZmlsZXIoKQogewogICAg
IGF1dG8gZW5hYmxlVHlwZVByb2ZpbGVyID0gW3RoaXNdICgpIHsKLSAgICAgICAgdGhpcy0+bV90
eXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlcj4oKTsKLSAgICAgICAg
dGhpcy0+bV90eXBlUHJvZmlsZXJMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlckxv
Zz4oKnRoaXMpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IG1ha2VVbmlxdWU8VHlw
ZVByb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlckxvZyA9IG1ha2VVbmlx
dWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CiAgICAgfTsKIAogICAgIHJldHVybiBlbmFibGVQ
cm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX3R5cGVQcm9maWxlckVuYWJsZWRDb3VudCwgZW5h
YmxlVHlwZVByb2ZpbGVyKTsKQEAgLTEwNjEsNyArMTA2MSw3IEBAIGJvb2wgVk06OmRpc2FibGVU
eXBlUHJvZmlsZXIoKQogYm9vbCBWTTo6ZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAg
ICAgYXV0byBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyID0gW3RoaXNdICgpIHsKLSAgICAgICAg
dGhpcy0+bV9jb250cm9sRmxvd1Byb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9sRmxv
d1Byb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93UHJvZmlsZXIgPSBtYWtl
VW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CiAgICAgfTsKIAogICAgIHJldHVybiBlbmFi
bGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX2NvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVk
Q291bnQsIGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAg
dm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEoKQogCiB2b2lkIFZNOjpxdWV1ZU1pY3JvdGFz
ayhKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiB7
Ci0gICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRUYXNr
PigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOworICAgIG1fbWljcm90YXNr
UXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZnbG9iYWxPYmplY3Qs
IFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBWTTo6ZHJhaW5NaWNyb3Rhc2tzKCkKQEAgLTEy
MzAsMTQgKzEyMzAsMTQgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbigpCiB7CiAgICAg
aWYgKG1fc2hhZG93Q2hpY2tlbikKICAgICAgICAgcmV0dXJuOwotICAgIG1fc2hhZG93Q2hpY2tl
biA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKKyAgICBtX3NoYWRvd0NoaWNr
ZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAKICNkZWZpbmUgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkg
XAogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7IFwKICAgICAgICAg
QVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlw
ZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBc
CiAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXApAQCAtMTI2OCw3ICsxMjY4LDcgQEAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWEKICAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3co
KSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8g
c3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5p
cXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5
cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAgICAgICAgbV8jI25h
bWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKaW5kZXggMjRmMThhZDAyZGUyZmVmOTAwOTM0NDg2NDMwYzk4ZmU5NDk0MjRlZi4uNTMzOTNj
YjI1OGY3NDJjNmFjZmRkZWFlYzZjNzE3NTY0NGQ3OTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC00MTcsNyArNDE3LDcg
QEAgY2xhc3MgQWlySVJHZW5lcmF0b3IgewogICAgIHZvaWQgZW1pdFBhdGNocG9pbnQoQmFzaWNC
bG9jayogYmFzaWNCbG9jaywgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2gsIFRtcCByZXN1bHQs
IFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgaW5saW5lU2l6ZT4mJiBhcmdzKQogICAgIHsKICAgICAg
ICAgaWYgKCFtX3BhdGNocG9pbnRTcGVjaWFsKQotICAgICAgICAgICAgbV9wYXRjaHBvaW50U3Bl
Y2lhbCA9IHN0YXRpY19jYXN0PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVj
aWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKSk7CisgICAgICAg
ICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBhdGNocG9pbnRTcGVj
aWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpKTsKIAogICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIHBhdGNoLCBBcmc6OnNwZWNpYWwobV9w
YXRjaHBvaW50U3BlY2lhbCkpOwogICAgICAgICBJbnN0IHJlc3VsdE1vdjsKQEAgLTQ4Nyw3ICs0
ODcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAKICAgICAgICAgLy8gRklYTUU6IE1ha2Ug
YSBoYXNobWFwIG9mIHRoZXNlLgogICAgICAgICBCMzo6Q2hlY2tTcGVjaWFsOjpLZXkga2V5KGJy
YW5jaCk7Ci0gICAgICAgIEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxC
Mzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6
Q2hlY2tTcGVjaWFsPihrZXkpKSk7CisgICAgICAgIEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwg
PSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVu
aXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CiAKICAgICAgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGUgbmVlZCBmb3IgZHVtbXkgdmFsdWVzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAKQEAgLTIxMzksMTAgKzIxMzksMTAgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4gQjM6Ok9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6
OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlQWly
KENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBm
dW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCB1
aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNl
cHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVy
RW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOwotICAgIGNv
bXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0Nh
bGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRK
SVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQu
d2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKIAogICAgIEIz
OjpQcm9jZWR1cmUgcHJvY2VkdXJlOwogICAgIENvZGUmIGNvZGUgPSBwcm9jZWR1cmUuY29kZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CmluZGV4IDIwOTQxNzdlZDZmMTgzYWI0ZDg2MmVjMjI2N2QzMGYyOGI3ZGU1YjYuLjE1OGRmOWZh
OWYwYzlmNzIxYWMyOTI3NzgxODhkY2YyOGU3MDdmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE1NTEsMTAgKzE1NTEsMTAg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBPcmlnaW4KIAogRXhwZWN0ZWQ8c3Rk
Ojp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShD
b21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29uc3QgdWludDhfdCogZnVu
Y3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21D
YWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9yeU1vZGUgbW9kZSwgQ29t
cGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGll
clVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4o
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIAot
ICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5
cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxh
dGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBl
cnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gbWFrZVVu
aXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBQcm9jZWR1cmUgcHJvY2VkdXJlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggZjk4NWQ1MjNjMmU5
M2YzYmQyM2ZiN2M1NzEyYjU4NjhjYzE2YTY4NS4uNTA2ZGY0YmVmZDBkNTY0MTg0NGNlNTI3OTUx
MTVmNjEyODcxNjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFu
LmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJz
dHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1
bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxC
Mzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25z
W2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxCMzo6
Q29tcGlsYXRpb24+KAogICAgICAgICAgICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBCQlEgZnVuY3Rpb25bJWldICVz
IG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxl
SW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lp
KCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRy
eXBvaW50Qnlwcm9kdWN0cykpOwogICAgICAgICAgICAgfQpAQCAtMzI3LDcgKzMyNyw3IEBAIHZv
aWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAgICAgICAgICAgICBl
bWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBt
YWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAgICAgIEZJTkFMSVpF
X0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIkVtYmVkZGVyLT5XZWJBc3Nl
bWJseSBlbnRyeXBvaW50WyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJl
LnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rp
b25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0
aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAgICAgICAgICAgIFdU
Rk1vdmUoY29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggYzUx
M2ZkMmY1MGVkNmZiMTdjMzM4NWVmMjkwNTI3ODE3MzkyMTAzNy4uMGQ3YTAzYzM2MTI5Y2QxZGUy
YzU0ZmZjZDUwMjk1YjU2YzViODk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PTUdQbGFuLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGls
YXRpb25FZmZvcnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBvbWdFbnRyeXBvaW50
LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgIG9t
Z0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAg
ICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIldl
YkFzc2VtYmx5IE9NRyBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIG1fZnVuY3Rpb25JbmRleCwg
c2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5h
bWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+
Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgIFdURk1v
dmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKaW5kZXggMzZkNzRjMTRiMThjNzA3YjgxMmEw
NDg3ZjkxZTI5YzM4NTM5MWRlMi4uNjYwZjk1NjU3MzhiMTBhMzBmM2U3Y2M4MThhMzJjODU4Nzgy
MTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCkBA
IC0yMTAsNyArMjEwLDcgQEAgV29ya2xpc3Q6OldvcmtsaXN0KCkKICAgICBtX3RocmVhZHMucmVz
ZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzKTsKICAgICBMb2NrSG9sZGVy
IGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZD
b21waWxhdGlvblRocmVhZHM7IGkrKykKLSAgICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKKyAg
ICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFdvcmtsaXN0OjpUaHJl
YWQ+KGxvY2tlciwgKnRoaXMpKTsKIH0KIAogV29ya2xpc3Q6On5Xb3JrbGlzdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggNWRkNDUxYmVhODRkNTkw
YmJmMGZjYjA3NmUyNmZmZDNjYzdiODFhYy4uNzM1MjIwMjg5MzdjNmRhYzFmYzQ3M2M3ZTRjZGM2
NDk1OGNlOGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNU
b1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3Jl
YXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAogewogICAgIENDYWxs
SGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQ7
CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4o
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKICAg
ICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgIC8vIEZJWE1FIFN0b3AgdXNpbmcg
MCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY1MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cAppbmRleCA3ZjAzM2ZlYzFjMzY5YTk0MjNiMzNjZjhlYjMzMzRjNTFjZTA4MDhiLi5jNGI3N2Nh
ZGJlNWVlYTU3M2VjODUyYjk1ZWY2YTc4OWI4Mjg1MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTE3MDYsNyArMTcwNiw3IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgICAgICBkdW1wRGlzanVuY3Rpb24obV9ib2R5RGlz
anVuY3Rpb24uZ2V0KCkpOwogI2VuZGlmCiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9uKSwgbV9hbGxQYXJl
bnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9uKSwg
bV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKICAgICB9
CiAKICAgICB2b2lkIGNoZWNrSW5wdXQodW5zaWduZWQgY291bnQpCkBAIC0xOTI2LDcgKzE5MjYs
NyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQg
PSBwYXJlbnRoZXNlc0JlZ2luLmF0b20uc3VicGF0dGVybklkOwogCiAgICAgICAgIHVuc2lnbmVk
IG51bVN1YnBhdHRlcm5zID0gbGFzdFN1YnBhdHRlcm5JZCAtIHN1YnBhdHRlcm5JZCArIDE7Ci0g
ICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0
ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIGF1
dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihu
dW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAKICAgICAgICAgdW5zaWduZWQgZmlyc3RU
ZXJtSW5QYXJlbnRoZXNlcyA9IGJlZ2luVGVybSArIDE7CiAgICAgICAgIHBhcmVudGhlc2VzRGlz
anVuY3Rpb24tPnRlcm1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW5kVGVybSAtIGZpcnN0VGVy
bUluUGFyZW50aGVzZXMgKyAyKTsKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIGNsYXNzIEJ5dGVDb21w
aWxlciB7CiAKICAgICB2b2lkIHJlZ2V4QmVnaW4odW5zaWduZWQgbnVtU3VicGF0dGVybnMsIHVu
c2lnbmVkIGNhbGxGcmFtZVNpemUsIGJvb2wgb25jZVRocm91Z2gpCiAgICAgewotICAgICAgICBt
X2JvZHlEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1T
dWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uID0g
bWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXpl
KTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybTo6Qm9k
eUFsdGVybmF0aXZlQmVnaW4ob25jZVRocm91Z2gpKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zWzBdLmZyYW1lTG9jYXRpb24gPSAwOwogICAgICAgICBtX2N1cnJlbnRBbHRlcm5h
dGl2ZUluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXgg
NDEyYzZlNGE2Y2JlYWM4OTMyMWIwYWU3ODBmZGQ3NmEwNjE5YmUyZC4uZjY2YTgyZTU3NTFhZGRh
MzI5ZWRlZWY3MGFkOTI2OWQxMWVkMmI5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAKQEAgLTM4OTksNyArMzg5OSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6
OmR1bXBSZWdFeHBEaXNhc3NlbWJseSgpKSkKLSAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1f
ZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0aGlzKTsKIAogICAg
ICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0
U3RhcnRPZkNvZGUobGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKaW5kZXggNDlmNzdmNjljNjg1YzY1MjAzZGYzZjAzNGM5MGQxODc3YzkyZGM5Yi4u
ZmNjNTFiMjc3ZjUwMTEwM2I3YzY1YmJkMzNhNWNhNDEwZDgxYzBlZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIGNsYXNz
IENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAgY29hbGVzY2VUYWJs
ZXMoKTsKIAotICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxD
aGFyYWN0ZXJDbGFzcz4oKTsKKyAgICAgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlx
dWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAKICAgICAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fbWF0Y2hl
cy5zd2FwKG1fbWF0Y2hlcyk7CiAgICAgICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5zd2Fw
KG1fcmFuZ2VzKTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVj
dG9yIHsKICAgICAgICAgLCBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IocGF0dGVybi5pZ25v
cmVDYXNlKCksIHBhdHRlcm4udW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6VW5pY29kZSA6IENh
bm9uaWNhbE1vZGU6OlVDUzIpCiAgICAgICAgICwgbV9zdGFja0xpbWl0KHN0YWNrTGltaXQpCiAg
ICAgewotICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5j
dGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5ID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rp
b24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBib2R5LmdldCgpOwogICAgICAgICBt
X2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0
ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGJvZHkpKTsKQEAgLTQ1Niw3ICs0NTYs
NyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgbV9wYXR0ZXJuLnJl
c2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAgIG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvci5y
ZXNldCgpOwogCi0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRp
c2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNq
dW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CiAgICAg
ICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBt
X3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoYm9keSkpOwpAQCAtNjA4LDcg
KzYwOCw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIEFTU0VSVCghb3B0R3JvdXBOYW1lKTsKIAotICAgICAgICBhdXRvIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4o
bV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1h
a2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKICAgICAgICAgbV9h
bHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQ
YXJlbnRoZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRlcm5JZCwgcGFyZW50aGVzZXNEaXNqdW5jdGlv
bi5nZXQoKSwgY2FwdHVyZSwgZmFsc2UpKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVy
bi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uKSk7
CkBAIC02MTYsNyArNjE2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAKICAg
ICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBpbnZlcnQgPSBmYWxz
ZSkKICAgICB7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKKyAgICAgICAgYXV0
byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+
KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQ
YXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb24sIG1fcGF0
dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwg
ZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNq
dW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9pbnZlcnRQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwpAQCAtNzA3LDcgKzcwNyw3IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5h
dGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLmdldCgpOwogICAgICAgICAg
ICAgaWYgKCFmaWx0ZXJTdGFydHNXaXRoQk9MIHx8ICFhbHRlcm5hdGl2ZS0+bV9zdGFydHNXaXRo
Qk9MKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXdEaXNqdW5jdGlvbikgewotICAgICAgICAg
ICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1
bmN0aW9uPigpOworICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IG1ha2VVbmlx
dWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5j
dGlvbi0+bV9wYXJlbnQgPSBkaXNqdW5jdGlvbi0+bV9wYXJlbnQ7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbmV3QWx0ZXJuYXRpdmUgPSBu
ZXdEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKQEAgLTE0NzMsNyArMTQ3Myw3IEBA
IHZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0ZXJuKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFN0
cmluZyYgcGF0dGVyblN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiBh
bnljaGFyQ3JlYXRlKCkKIHsKLSAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVu
aXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBw
ZW5kKENoYXJhY3RlclJhbmdlKDB4MDAsIDB4N2YpKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9y
YW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwODAsIDB4MTBmZmZmKSk7CiAg
ICAgY2hhcmFjdGVyQ2xhc3MtPm1fY2hhcmFjdGVyV2lkdGhzID0gQ2hhcmFjdGVyQ2xhc3NXaWR0
aHM6Okhhc0JvdGhCTVBBbmROb25CTVA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uaAppbmRleCAwYjdkYjJlYmE4YWQ1MmRlZDJiNWY3ZTY3ZTU0NWI4YzE2Yzk0NWM3Li43
ZTgyYzg1NWE4NzhlNmMxODBlZDUyMWYxZjdhZDQ4ZDhjMWZiYWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTM0MSw3ICszNDEsNyBAQCBzdHJ1Y3QgUGF0
dGVybkRpc2p1bmN0aW9uIHsKICAgICAKICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFkZE5ld0Fs
dGVybmF0aXZlKCkKICAgICB7Ci0gICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOworICAgICAgICBtX2FsdGVybmF0
aXZlcy5hcHBlbmQobWFrZVVuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+KHRoaXMpKTsKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhdHRlcm5BbHRlcm5hdGl2ZSo+KG1fYWx0ZXJuYXRpdmVz
Lmxhc3QoKS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
Y3JlYXRlX3JlZ2V4X3RhYmxlcwppbmRleCBjMWY5Zjk5ZGUwOTFjZWNiMmUxZGI1NWMzOGZhMzYw
MzExZWUzN2Y0Li42OWNkODg4NjU3ODU0Y2Q1NDQ1Zjg2M2UyMmQ1NWZmYjljNDBlZmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKQEAgLTk1
LDExICs5NSwxMSBAQCBmb3IgbmFtZSwgY2xhc3NlcyBpbiB0eXBlcy5pdGVtcygpOgogICAgIGZ1
bmN0aW9uICs9ICgie1xuIikKICAgICBpZiBlbWl0VGFibGVzIGFuZCBjbGFzc2VzWyJVc2VUYWJs
ZSJdOgogICAgICAgICBpZiAiSW52ZXJzZSIgaW4gY2xhc3NlczoKLSAgICAgICAgICAgIGZ1bmN0
aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJh
Y3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52ZXJzZSJdKSkKKyAg
ICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5p
cXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52ZXJz
ZSJdKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8g
Y2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRh
LCBmYWxzZSk7XG4iICUgKG5hbWUpKQorICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0
byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZh
bHNlKTtcbiIgJSAobmFtZSkpCiAgICAgZWxzZToKLSAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAg
YXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7
XG4iKQorICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFr
ZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCiAgICAgaGFzQk1QQ2hhcmFjdGVycyA9IEZh
bHNlCiAgICAgaGFzTm9uQk1QQ2hhcmFjdGVycyA9IEZhbHNlCiAgICAgZm9yIChtaW4sIG1heCkg
aW4gcmFuZ2VzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJh
dGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5CmluZGV4IGY5ZmVmNDY4ZDJi
NWRkYTZhYWVlYWIwYjNmYzA1OGNkM2VlY2VhYzEuLjUyNmZiNmU3YWMzYTIyN2E2ZDQzY2JiZWZk
MjcwMmQxYTBjNTRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dl
bmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkKQEAgLTUyOSw3
ICs1MjksNyBAQCBkZWYgZHVtcE1hdGNoRGF0YShzZWxmLCBmaWxlLCB2YWx1ZXNQZXJMaW5lLCBk
YXRhTGlzdCwgZm9ybWF0dGVyKToKICAgICBkZWYgZHVtcChzZWxmLCBmaWxlLCBjb21tYUFmdGVy
KToKICAgICAgICAgZmlsZS53cml0ZSgic3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0ZXJD
bGFzcz4ge30oKVxue3tcbiIuZm9ybWF0KHNlbGYuZ2V0Q3JlYXRlRnVuY05hbWUoKSkpCiAgICAg
ICAgIGZpbGUud3JpdGUoIiAgICAvLyBOYW1lID0ge30sIG51bWJlciBvZiBjb2RlUG9pbnRzOiB7
fVxuIi5mb3JtYXQoc2VsZi5uYW1lLCBzZWxmLmNvZGVQb2ludENvdW50KSkKLSAgICAgICAgZmls
ZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJh
Y3RlckNsYXNzPihcbiIpCisgICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQogICAgICAgICBmaWxlLndyaXRl
KCIgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcjMyPigiKQogICAgICAgICBzZWxm
LmR1bXBNYXRjaERhdGEoZmlsZSwgOCwgc2VsZi5tYXRjaGVzLCBsYW1iZGEgZmlsZSwgbWF0Y2g6
IChmaWxlLndyaXRlKCJ7MDowPSM0eH0iLmZvcm1hdChtYXRjaCkpKSkKICAgICAgICAgZmlsZS53
cml0ZSgiKSxcbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJu
ZXNzVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAK
aW5kZXggY2M3MDdkZTNmZjRlYzEzOGNmYTQ2YWI0YzhlMTNhYmI2NTkzY2JhMS4uOGM5N2MxYTI0
MWI3MjlhZjhmMzFmMzU5YzdmNTE3N2E2MzQwOWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9i
ZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJr
cy9Mb2NrRmFpcm5lc3NUZXN0LmNwcApAQCAtNjEsOCArNjEsOCBAQCBzdHJ1Y3QgQmVuY2htYXJr
IHsKICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAgICB7CiAgICAgICAg
IExvY2tUeXBlIGxvY2s7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3Vu
dHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkW10+KG51bVRocmVhZHMpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1
bnNpZ25lZFtdPihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxU
aHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQ
dHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsKICAgICAKICAgICAgICAgdm9sYXRpbGUgYm9vbCBr
ZWVwR29pbmcgPSB0cnVlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9iZW5jaG1hcmtz
L0xvY2tTcGVlZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3Qu
Y3BwCmluZGV4IGYxNTY1MGQ0YzljOGZhNjc3MGY4OTEyZjA5ZGZlMzkyOTEzMDdjMzQuLmJlN2Fi
YTM5MGViNTNlMzU4MWUzNmY0YThiOTUwMGQwZTI5OWY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV1RGL2JlbmNobWFy
a3MvTG9ja1NwZWVkVGVzdC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgc3RydWN0IEJlbmNobWFyayB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiAgICAgc3RhdGljIHZvaWQgcnVuKGNv
bnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRp
bmc8TG9ja1R5cGU+W10+IGxvY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxXaXRoUGFkZGluZzxMb2Nr
VHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQ
YWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPGRv
dWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0
cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+
KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGluZzxkb3VibGU+W10+
KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFk
PltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRo
cmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3VwKTsKIAogICAgICAg
ICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0
b3IuaAppbmRleCAwYjU0MWI4YzczZDBmNTk4NjUxYmY5NWU3NjkzYjgwN2M5OTlmNzhhLi44ODRl
ZDczMjMzNzYxYTI5ZmI0OTZmMGFkMDk4OTY3NTQ1ZTcwMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29uY3VycmVu
dFZlY3Rvci5oCkBAIC0yNTQsNyArMjU0LDcgQEAgY2xhc3MgQ29uY3VycmVudFZlY3RvciBmaW5h
bCB7CiAgICAgdm9pZCBhbGxvY2F0ZVNlZ21lbnQoKQogICAgIHsKICAgICAgICAgbV9zZWdtZW50
cy5ncm93KG1fbnVtU2VnbWVudHMgKyAxKTsKLSAgICAgICAgbV9zZWdtZW50c1ttX251bVNlZ21l
bnRzKytdID0gc3RkOjptYWtlX3VuaXF1ZTxTZWdtZW50PigpOworICAgICAgICBtX3NlZ21lbnRz
W21fbnVtU2VnbWVudHMrK10gPSBtYWtlVW5pcXVlPFNlZ21lbnQ+KCk7CiAgICAgfQogCiAgICAg
c2l6ZV90IG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhy
ZWFkVGFza0hhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxl
ci5jcHAKaW5kZXggODNjMjA3NTFmODVmNGU0ZDIwMTU2MTQ0MWNhODMxNDFjYjVjMzdmZi4uYzYz
YzA1NWEwYTAzNDFkZjZhNWFmMjcwYTRhY2NiOGQ1N2Q3ODQzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDcm9zc1Ro
cmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgpCiAKICAgICB3aGlsZSAoIW1fdGFza1F1ZXVl
LmlzS2lsbGVkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1
dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29sID0gKG1fdXNlQXV0b2RyYWluZWRQb29sID09
IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVzZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9k
cmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0
b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0g
QXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNlKSA/IG1ha2VVbmlxdWU8QXV0b2RyYWluZWRQ
b29sPigpIDogbnVsbHB0cjsKIAogICAgICAgICAgICAgbV90YXNrUXVldWUud2FpdEZvck1lc3Nh
Z2UoKS5wZXJmb3JtVGFzaygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNw
cAppbmRleCAzZTI1M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFlZmM3Y2E3OWI2NGVhLi43MDc0YzAz
YWJhZjhmY2YzOTc3ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0
cmVhbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVh
bT4gRmlsZVByaW50U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb24KICAgICBp
ZiAoIWZpbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
aWxlUHJpbnRTdHJlYW0+KGZpbGUpOwogfQogCiB2b2lkIEZpbGVQcmludFN0cmVhbTo6dnByaW50
Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmluZGV4IDA1
ZTM2OTc4MjViYzNkMzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4M2UuLjBiNzk1ODY3NDgwZmQwMzIy
NDEyNDU0ZTdkMGFmODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtNjcsMTEgKzY3LDExIEBA
IGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENh
bGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9p
bnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVu
Y3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBw
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUs
IE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFi
bGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBl
LCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5
cGU+CiAgICAgRnVuY3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0gICAgICAgIDogbV9jYWxsYWJsZVdy
YXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5
cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdy
YXBwZXIobWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91
dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CiAKICAgICBPdXQgb3BlcmF0b3IoKShJbi4uLiBp
bikgY29uc3QKICAgICB7CkBAIC04NCwxNCArODQsMTQgQEAgY2xhc3MgRnVuY3Rpb248T3V0KElu
Li4uKT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFi
bGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFi
bGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJs
ZVR5cGUmJiBjYWxsYWJsZSkKICAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwg
SW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0g
bWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6
aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0
eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oRnVuY3Rpb25UeXBl
IGYpCiAgICAgewotICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92
ZShmKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNh
bGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAzYjFlOTUzMDNk
ZTU0MDUxNDNmYjU2M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQwNzdmODRmMDJhMWZhMWMxYmUwMzRh
ODZlYjM1MGQ2ZDdmNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNTg4LDEwICs1ODgsMTAgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKLSAgICAgICAgLCBtX211
dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlx
dWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQot
ICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyAgICAgICAgLCBt
X3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTMz
NCwxMCArMTMzNCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3Vu
dCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9y
cyhudWxscHRyKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQor
ICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlmCiAjaWYgRFVNUF9I
QVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5p
cXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVl
PFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIHVuc2lnbmVk
IG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXplKCk7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYg
b3RoZXIpCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0
b3JzKG51bGxwdHIpCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkp
CisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICAgICB7CiAg
ICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDllODcyMGY2ZDlhNzk4MGI5NWU1YjEzYzVlNjU1YzM4
OTQ5MzA0YjUuLjUzNzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUwZDZhMThjNWQ5ZmVjMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25p
dG9yKGJvb2wgdXNlKQogICAgIH0KIAogICAgIGlmICh1c2UpIHsKLSAgICAgICAgbV9tZWFzdXJl
bWVudFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG1h
a2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmly
ZWQpOwogICAgICAgICBtX21lYXN1cmVtZW50VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3MpOwog
ICAgIH0gZWxzZQogICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRM
aWJFeHRyYXMuaAppbmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlmMTljM2MxZmMxZmRjNTdhYjRkNGFi
Li5kOWJhMWU2YjY4MjE3YmMxYzYyMDU1ZTU0YzVkODc2MTMxOGMzYmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJF
eHRyYXMuaApAQCAtNTY1LDYgKzU2NSwyMyBAQCBjb25zdGV4cHIgc2l6ZV90IGNseih1aW50MzJf
dCB2YWx1ZSwgWmVyb1N0YXR1cyBtaWdodEJlWmVybyA9IFplcm9TdGF0dXM6Ok1heUJlWgogCiB9
IC8vIG5hbWVzcGFjZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNzIFQs
IGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWUo
QXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4g
QXJncz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKwogI2RlZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQ
YXJhbWV0ZXI+KHZhbHVlKQogCiB1c2luZyBXVEY6OktCOwpAQCAtNTg1LDMgKzYwMiw1IEBAIHVz
aW5nIFdURjo6bWVyZ2VEZWR1cGxpY2F0ZWRTb3J0ZWQ7CiB1c2luZyBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Y7CiB1c2luZyBXVEY6OnNhZmVDYXN0OwogdXNpbmcgV1RGOjp0cnlCaW5hcnlTZWFy
Y2g7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWU7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVy
LmggYi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAppbmRleCAyNmJiYzhmZDY3YTQ5MzQ2
MzIyMWQ2MTk2MThlYjdjNjQ2ODY0MDMwLi5jYTMzZjg2N2QzOGI1NzU5MjAxNDFkNTIzYzMwN2Fh
ZTdjODIwYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBT
dHJlYW1CdWZmZXIgewogICAgICAgICBtX3NpemUgKz0gc2l6ZTsKICAgICAgICAgd2hpbGUgKHNp
emUpIHsKICAgICAgICAgICAgIGlmICghbV9idWZmZXIuc2l6ZSgpIHx8IG1fYnVmZmVyLmxhc3Qo
KS0+c2l6ZSgpID09IEJsb2NrU2l6ZSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxCbG9jaz4oKSk7CisgICAgICAgICAgICAgICAgbV9idWZmZXIuYXBw
ZW5kKG1ha2VVbmlxdWU8QmxvY2s+KCkpOwogICAgICAgICAgICAgc2l6ZV90IGFwcGVuZFNpemUg
PSBzdGQ6Om1pbihCbG9ja1NpemUgLSBtX2J1ZmZlci5sYXN0KCktPnNpemUoKSwgc2l6ZSk7CiAg
ICAgICAgICAgICBtX2J1ZmZlci5sYXN0KCktPmFwcGVuZChkYXRhLCBhcHBlbmRTaXplKTsKICAg
ICAgICAgICAgIGRhdGEgKz0gYXBwZW5kU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggNzNlOWRmZWMw
NmZkNzg3ZjNiMDZiM2RjOWRhNjVhNTUwNGQxYzAyOS4uNjU5MTI1MWI4NjI3ZGYzNmNmMmViOWY3
NDc5M2VmNDg5Y2ExZTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgK
KysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTMzLDExICszMywxOCBAQCBuYW1l
c3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFVuaXF1ZVJlZjsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVl
UmVmKEFyZ3MmJi4uLiBhcmdzKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFz
dE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQogewogICAgIHJldHVybiBVbmlxdWVSZWY8VD4o
Km5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYm
Li4uIGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8dHlwZW5hbWUgVDo6
X19mYXN0QWxsb2NhdGVkQ2xhc3MsIGludD46OnZhbHVlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFVuaXF1ZVJlZiB7CiBwdWJsaWM6
CkBAIC02Myw3ICs3MCw3IEBAIGNsYXNzIFVuaXF1ZVJlZiB7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFQ+IG1vdmVUb1VuaXF1ZVB0cigpIHsgcmV0dXJuIFdURk1vdmUobV9yZWYpOyB9CiAKIHByaXZh
dGU6Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xhc3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJl
ZjxVPiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVSwgY2xh
c3MuLi4gQXJncz4gZnJpZW5kIFVuaXF1ZVJlZjxVPiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RN
YWxsb2NDaGVjayhBcmdzJiYuLi4pOwogICAgIHRlbXBsYXRlPGNsYXNzIFU+IGZyaWVuZCBjbGFz
cyBVbmlxdWVSZWY7CiAKICAgICBVbmlxdWVSZWYoVCYgb3RoZXIpCkBAIC03OSwzICs4Niw0IEBA
IGNsYXNzIFVuaXF1ZVJlZiB7CiAKIHVzaW5nIFdURjo6VW5pcXVlUmVmOwogdXNpbmcgV1RGOjpt
YWtlVW5pcXVlUmVmOwordXNpbmcgV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2ND
aGVjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwIGIv
U291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKaW5kZXggNWU1YmE4YWJlYmRiZDQ5
YmJiODM3ZGQ0YzRmZDY5YmQ2ZmZjMzYxZi4uZmIyMTFkMGEyOTYxZGZjMTZhYTZlMjFhMjFhOTc0
ZGZmMTUyNjk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVu
Y3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5n
ZXQoKSwgIltXZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hBZnRlciIpOwogICAgIGdfc291cmNlX3Nl
dF9yZWFkeV90aW1lKHNvdXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIGR1cmF0
aW9uLm1pY3Jvc2Vjb25kc0FzPGdpbnQ2ND4oKSk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BhdGNoQWZ0
ZXJDb250ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc3Bh
dGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwYXRjaEFmdGVyQ29udGV4
dD4oV1RGTW92ZShmdW5jdGlvbikpOwogICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhzb3VyY2Uu
Z2V0KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChzdGF0aWNfY2FzdDxEaXNw
YXRjaEFmdGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7CiAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNo
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBkY2JhMDYwODJjNWY2NmUzMTlh
MTVlZTU5N2ZjNjQ5NzY2YjA1ZTZjLi41YmY0ZTZkMDFkZTg0M2VkMjg3ODgzZWEzYTAzZTg0OTQ5
M2JlY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTE3OSw3ICsxNzksNyBA
QCBjbGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbCB7CiB9
OwogCiBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29u
c3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpCi0gICAgOiBtX2ltcGwo
c3RkOjptYWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3LmlzTnVsbCgpID8g
V1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4o
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKKyAg
ICA6IG1faW1wbChtYWtlVW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxs
KCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAK
aW5kZXggZmRiOGNlMjkyZDczOGRhNDIwMzhhYTk2NWFmM2FjYTE3OGE4MGNlYi4uOGRjNzZmYTJl
NTllYTY3ZTAyMTczOGMzMTFhMzU3N2Y0ZDM2ZTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlJbnZhbGlkVVJMKGNvbnN0IFN0
cmluZyYgcHJvcAogdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZlbG9wZXJX
YXJuaW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9jb25zb2xlQ29udGV4
dCkKLSAgICAgICAgbV9jb25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90
aGVyLCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2csIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBt
YWtlU3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVS
TC5zdHJpbmcoKSwgIjogIl9zLCBtZXNzYWdlKSkpOworICAgICAgICBtX2NvbnNvbGVDb250ZXh0
LT5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KEpTQzo6TWVzc2FnZVNvdXJjZTo6T3RoZXIsIEpTQzo6TWVzc2FnZVR5cGU6OkxvZywgSlNDOjpN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIG1ha2VTdHJpbmcoIlBhcnNpbmcgYXBwbGljYXRpb24gbWFu
aWZlc3QgIl9zLCBtX21hbmlmZXN0VVJMLnN0cmluZygpLCAiOiAiX3MsIG1lc3NhZ2UpKSk7CiB9
CiAKIFVSTCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZVN0YXJ0VVJMKGNvbnN0IEpT
T046Ok9iamVjdCYgbWFuaWZlc3QsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAppbmRleCA5YmZh
NWY5NDk5NGIwNTQ1MDZiODI2YTMxNGI4MjU4MjdlYTQxYWRiLi43ZTRmNzk0NzFlMmM1OWZlNzFj
MTQ4MTMyZjRiNTUxZDhmZmM3OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgTmF2aWdhdG9yQmVh
Y29uKiBOYXZpZ2F0b3JCZWFjb246OmZyb20oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CiAgICAg
YXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvckJlYWNvbio+KFN1cHBsZW1l
bnQ8TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdG9yQmVhY29uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygm
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0Nh
Y2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5j
cHAKaW5kZXggNWVkMWY1Y2NhNjQxZWIwNGVjMGUwYTBjZTA2YzgzNzI0NTY4YTJmZi4uNjE1Mzk0
MzBkZmI5NjE2ZmQyODhmZWQ5MmNiOTQ0ZmY0NDZiMDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcApAQCAtNDksNyArNDksNyBAQCBE
T01XaW5kb3dDYWNoZXMqIERPTVdpbmRvd0NhY2hlczo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykK
IHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NV2luZG93Q2FjaGVzKj4o
U3VwcGxlbWVudDxET01XaW5kb3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwog
ICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERPTVdpbmRvd0NhY2hlcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2lu
ZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3Bl
Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2Nv
cGVDYWNoZXMuY3BwCmluZGV4IDA2NTZiZWYwYjE3MThlMzNkYmM3ZmEwZWU2MGM1N2Q0OGUzOGQ0
ZTguLjUxMThhNDg4NTBmMjQyZDA0NGQzYjQwZmYwZTNiMjNiYjk2ZTI4ZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNo
ZXMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKiBXb3JrZXJH
bG9iYWxTY29wZUNhY2hlczo6ZnJvbShXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCiB7CiAgICAg
YXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzKj4o
U3VwcGxlbWVudDxXb3JrZXJHbG9iYWxTY29wZT46OmZyb20oJnNjb3BlLCBzdXBwbGVtZW50TmFt
ZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM+KHNjb3BlKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUNh
Y2hlcz4oc2NvcGUpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsK
ICAgICAgICAgcHJvdmlkZVRvKCZzY29wZSwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdT
dXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
cmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNw
cAppbmRleCA3MWY0MzhjZjc4NmM3NmQ3YjU4NzIxNTU5NzY2OGI2MjM2MWI1OTkzLi4xMTgxYmQ5
ODVhMjJiYTQ5M2Y4MzYzMWQ3ZTQxZmVlODc5YjU2YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmlnYXRvckNyZWRlbnRpYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NyZWRlbnRpYWxtYW5hZ2VtZW50L05hdmln
YXRvckNyZWRlbnRpYWxzLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOYXZpZ2F0b3JDcmVkZW50aWFs
cyogTmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAg
ICAgTmF2aWdhdG9yQ3JlZGVudGlhbHMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0
b3JDcmVkZW50aWFscyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50aWFscz4oKTsK
KyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JDcmVkZW50
aWFscz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAg
ICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3Vw
cGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IGI2ZmQ2OGQ2NzJlZGUz
ODc3OGMxNWM2ZmVhYWY0NmI0NTVlNWExY2QuLjc1ZWRiNmE5MzYzODgwZTU4N2MzNTc1NmIxNGRl
YzlmOWI0NWU2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIE9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94Pj4+IEluaXREYXRhCiAgICAgICAgIGF1dG8gc3lzdGVtSUQgPSBJU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRCh2aWV3LCBvZmZzZXQpOwog
I2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICAgICAgaWYgKHN5
c3RlbUlEID09IElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveDo6ZmFpclBsYXlTeXN0ZW1JRCgp
KSB7Ci0gICAgICAgICAgICBhdXRvIGZwc1Bzc2ggPSBzdGQ6Om1ha2VfdW5pcXVlPElTT0ZhaXJQ
bGF5U3RyZWFtaW5nUHNzaEJveD4oKTsKKyAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IG1ha2VV
bmlxdWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOwogICAgICAgICAgICAgaWYgKCFm
cHNQc3NoLT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICAgICAgICAgIHBzc2hCb3hlcy5hcHBlbmQoV1RGTW92ZShmcHNQc3NoKSk7
CkBAIC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICNlbHNlCiAgICAg
ICAgIFVOVVNFRF9QQVJBTShzeXN0ZW1JRCk7CiAjZW5kaWYKLSAgICAgICAgYXV0byBwc3NoQm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+
KCk7CisgICAgICAgIGF1dG8gcHNzaEJveCA9IG1ha2VVbmlxdWU8SVNPUHJvdGVjdGlvblN5c3Rl
bVNwZWNpZmljSGVhZGVyQm94PigpOwogICAgICAgICBpZiAoIXBzc2hCb3gtPnJlYWQodmlldywg
b2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE0uY3BwCmluZGV4IDgyNjI4OTNmZTBhZjk5OTE0ZWQzOWU5NjBjZjEwYTc1MzQwNzA1YjYuLjgz
N2RmMTIzYWU1OTZmMzUzN2M5MTUyNzAzZTNkMjcxYjM0NmViNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RN
LmNwcApAQCAtNjEsMTUgKzYxLDE1IEBAIHN0cnVjdCBDRE1GYWN0b3J5IHsKIHN0YXRpYyBWZWN0
b3I8Q0RNRmFjdG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQogewogICAgIHN0YXRpYyBh
dXRvIGNkbXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPENETUZhY3RvcnkqPiB7Ci0gICAg
ICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENE
TUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RN
UHJpdmF0ZUNsZWFyS2V5PihjZG0pOyB9LAogICAgICAgICAgICAgTGVnYWN5Q0RNUHJpdmF0ZUNs
ZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBw
b3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogICAgICAgICAvLyBGSVhNRTogaW5pdGlhbGl6
ZSBzcGVjaWZpYyBVQSBDRE1zLiBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMxOCwgaHR0cDovL3dl
YmtpdC5vcmcvYi8xMDkzMjAKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBj
ZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0p
OyB9LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
bWFrZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFQbGF5ZXI+KGNkbSk7IH0sCiAgICAgICAgICAgICBD
RE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQ
bGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAogCiAjaWYgKEhBVkUoQVZDT05U
RU5US0VZU0VTU0lPTikgfHwgSEFWRShBVlNUUkVBTVNFU1NJT04pKSAmJiBFTkFCTEUoTUVESUFf
U09VUkNFKQotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9
LAorICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFr
ZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAogICAgICAgICAg
ICAgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAog
I2VuZGlmCiAgICAgfSk7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETT4gTGVnYWN5Q0RNOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgaWYg
KCFzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeUNETT4oa2V5U3lzdGVtKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3RlbSk7CiB9CiAKIExlZ2FjeUNE
TTo6TGVnYWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNs
ZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKaW5kZXggYzkzMTZkZmQ4YWJiNDA1NDkyZjU1
NWViM2QxYjNkMDkxN2NlZmY1MC4uM2E4YzAwZjUyMzFmNTJhNmU4OWQxODNkMTUxMWMzYWM4Nzcz
YTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMZWdh
Y3lDRE1TZXNzaW9uPiBMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENETVNlc3Npb25DbGVhcktleT4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
RE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggYWRkYzU0ODk2YjhhNDQzOGNm
YmZkMDY1ODBhZGJjODYwYTgxZjg2NC4uZGI2MzkwZTdmOTkyNTk3N2I4N2NhMDA5ZWRhYmQ1MWNk
YjY2NzMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxv
Yihjb25zdCBCbG9iJiBibG9iLCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCiAgICAgfQog
CiAgICAgbV9ibG9iTG9hZGVyLmVtcGxhY2UoKnRoaXMpOwotICAgIG1fYmxvYkxvYWRlci0+bG9h
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oKm1fYmxvYkxvYWRlciwgY29uc3Vt
ZXIpOworICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4o
Km1fYmxvYkxvYWRlciwgY29uc3VtZXIpOwogCiAgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXItPnN0
YXJ0KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IpOwogICAgIGlmICghbV9ibG9iTG9h
ZGVyLT5sb2FkZXItPmlzU3RhcnRlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCBjZDM0NWViOWVjMzQwYzM2ZTBmMGE2ZWVkODJk
ZDk4OGI0Zjk3ZDM5Li45NDAxM2NmNGVhNjUyMzhkODNiOWI0YzgxZGI3ZDE4MTY1MzI0NzE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAg
LTI0Myw3ICsyNDMsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVxdWVzdCYgcmVxdWVzdAogCiAgICAgcmVzcG9uc2Ut
PmFkZEFib3J0U3RlcHMocmVxdWVzdC5zaWduYWwoKSk7CiAKLSAgICByZXNwb25zZS0+bV9ib2R5
TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxCb2R5TG9hZGVyPihyZXNwb25zZS5nZXQoKSwgV1RG
TW92ZShyZXNwb25zZUNhbGxiYWNrKSk7CisgICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IG1h
a2VVbmlxdWU8Qm9keUxvYWRlcj4ocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxs
YmFjaykpOwogICAgIGlmICghcmVzcG9uc2UtPm1fYm9keUxvYWRlci0+c3RhcnQoY29udGV4dCwg
cmVxdWVzdCkpCiAgICAgICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBudWxscHRyOwogfQpA
QCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAKIGJvb2wgRmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIG1fbG9hZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIo
KSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZldGNoTG9hZGVyPigqdGhpcywgJm1fcmVz
cG9uc2UubV9ib2R5LT5jb25zdW1lcigpKTsKICAgICBtX2xvYWRlci0+c3RhcnQoY29udGV4dCwg
cmVxdWVzdCk7CiAgICAgcmV0dXJuIG1fbG9hZGVyLT5pc1N0YXJ0ZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcAppbmRl
eCA2MTAyMDg5OWNiYzRhN2U0MzNiMTUxZGNjYWViZmU5MDc2NGQzZTJkLi44NTBkMjJkZTI4NWJi
MzM1ZDIyZThjMmUyNTNiN2FiNmUwYzYwMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5h
dmlnYXRvckdhbWVwYWQqIE5hdmlnYXRvckdhbWVwYWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0
b3IpCiB7CiAgICAgTmF2aWdhdG9yR2FtZXBhZCogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5h
dmlnYXRvckdhbWVwYWQqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBz
dXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKKyAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JHYW1lcGFkPigp
OwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJv
dmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9s
b2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGIwOWZjMzQzM2JiZmJiNzI4
ZjMxNWMxNTMzYTZmMmM5ZTRmYzAwNzEuLmNkODA3MGIyMDdkYjhhMzQ0MDI2Y2ZmNjEwNWI4NWVl
MTliYzUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBj
b25zdCBjaGFyKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIHZvaWQg
cHJvdmlkZUdlb2xvY2F0aW9uVG8oUGFnZSogcGFnZSwgR2VvbG9jYXRpb25DbGllbnQmIGNsaWVu
dCkKIHsKICAgICBBU1NFUlQocGFnZSk7Ci0gICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRv
KHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtl
X3VuaXF1ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKKyAgICBTdXBw
bGVtZW50PFBhZ2U+Ojpwcm92aWRlVG8ocGFnZSwgR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBw
bGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPEdlb2xvY2F0aW9uQ29udHJvbGxlcj4oKnBhZ2UsIGNs
aWVudCkpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9u
LmNwcAppbmRleCBiMzRmNDlhNjcxZDg1ZjUxNDJiOGJhZjBmNTJiYTk5MWFjNDM1OWRjLi4zNWRm
YmY4ZjNmMjU2OWMwMTM1MzU2NjMwMGY1Yjc4MzdkZTI4ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9u
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBOYXZpZ2F0b3JHZW9sb2NhdGlvbiogTmF2aWdhdG9yR2Vv
bG9jYXRpb246OmZyb20oTmF2aWdhdG9yJiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yR2Vv
bG9jYXRpb24qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHZW9sb2NhdGlvbio+
KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvcik7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+
KG5hdmlnYXRvcik7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwog
ICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShu
ZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKaW5kZXggYzcy
MDNhOWE4NjQwOTcwNTBkM2RjMDA3OTJmN2E2YjU4MWZhYTI1ZS4uNWU5ZDk3OTY2YmZkZTU4ZTY2
MDk5YTUwOWU2MThiODRjMThkMDVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZSogRE9NV2luZG93SW5kZXhlZERh
dGFiYXNlOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIERPTVdpbmRvd0luZGV4ZWRE
YXRhYmFzZSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd0luZGV4ZWREYXRhYmFz
ZSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkp
KTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dJbmRleGVkRGF0YWJhc2U+KHdpbmRvdyk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFi
YXNlPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsK
ICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdT
dXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IGY0MzA5MGM0ZGNjM2VkZTVlMjdkMWFhNDQz
ODQ0NDdkODQ5YzY0MGIuLjlhNzgxMjc4NDYzZWQwYTRhMGFkZGQzZjdkYjBjNTY1Njk2MmI5Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCSW5kZXg+PiBJ
REJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCiAgICAgaWYgKCFp
bmZvKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgIkZhaWxlZCB0
byBleGVjdXRlICdpbmRleCcgb24gJ0lEQk9iamVjdFN0b3JlJzogVGhlIHNwZWNpZmllZCBpbmRl
eCB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAgYXV0byBpbmRleCA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7Cisg
ICAgYXV0byBpbmRleCA9IG1ha2VVbmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksICppbmZvLCAqdGhpcyk7CiAKICAgICBSZWY8SURCSW5kZXg+IHJlZmVyZW5jZWRJbmRl
eCB7ICppbmRleCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZmEyY2Q3ZWFkMDliNjA1NTI1YjhjYjQ0MWVmNzAw
MWQ4MzM1MDEwMC4uNDIyNDNmYmE1NzMxMjk1NDE4ODk0YTMyMDQzZTg5ZTBiMmMxYTVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJPYmplY3RTdG9yZT4+
IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjCiAgICAgaWYg
KCFpbmZvIHx8ICghZm91bmQgJiYgIWlzVmVyc2lvbkNoYW5nZSgpKSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnb2JqZWN0U3Rv
cmUnIG9uICdJREJUcmFuc2FjdGlvbic6IFRoZSBzcGVjaWZpZWQgb2JqZWN0IHN0b3JlIHdhcyBu
b3QgZm91bmQuIl9zIH07CiAKLSAgICBhdXRvIG9iamVjdFN0b3JlID0gc3RkOjptYWtlX3VuaXF1
ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlz
KTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmluZm8sICp0aGlzKTsKICAgICBhdXRvKiByYXdPYmpl
Y3RTdG9yZSA9IG9iamVjdFN0b3JlLmdldCgpOwogICAgIG1fcmVmZXJlbmNlZE9iamVjdFN0b3Jl
cy5zZXQob2JqZWN0U3RvcmVOYW1lLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKQEAgLTY2Nyw3
ICs2NjcsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mCiAKICAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKG1fcmVmZXJlbmNlZE9iamVjdFN0b3JlTG9jayk7CiAKLSAgICBhdXRvIG9iamVjdFN0b3Jl
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgaW5mbywgKnRoaXMpOworICAgIGF1dG8gb2JqZWN0U3RvcmUgPSBtYWtlVW5pcXVlPElE
Qk9iamVjdFN0b3JlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCAqdGhpcyk7CiAg
ICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVy
ZW5jZWRPYmplY3RTdG9yZXMuc2V0KGluZm8ubmFtZSgpLCBXVEZNb3ZlKG9iamVjdFN0b3JlKSk7
CiAKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCSW5kZXg+IElEQlRyYW5z
YWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcgogICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5jcmVhdGVJbmRleE9uU2VydmVyKG9wZXJhdGlvbiwgaW5mbyk7CiAgICAg
fSkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0b3JlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJREJJbmRleD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgb2JqZWN0U3RvcmUp
OwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleE9uU2VydmVyKElEQkNsaWVu
dDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCSW5kZXhJbmZvJiBp
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGE0ODUw
M2I0ZDJkODA0Mjk0Njg0YTY1YTY1ZWJkNjRmMjMzY2Q3YjkuLjliNzU3NzQ5MjFiNDY1MDZmNTgz
ZGU3ZmVjNDI1MGU4NTRhY2U1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRh
YmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJh
c2UqIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKFdvcmtlckcKICAgICAg
ICAgaWYgKCFjb25uZWN0aW9uUHJveHkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2Jh
bFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwgKmNvbm5lY3Rpb25Qcm94eSk7CisgICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyR2xvYmFsU2NvcGVJbmRleGVk
RGF0YWJhc2U+KHNjb3BlLCAqY29ubmVjdGlvblByb3h5KTsKICAgICAgICAgc3VwcGxlbWVudCA9
IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1l
bnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5jcHAKaW5kZXggOTQ4Y2Y3NDY2M2FlNjljODJkYTQ0NGUwOTM0NzNkZDg1
NmQ0ZGU5My4uMzc3MTFkYzEwM2RiNmM5YTliODEzZGJjOWRmNzk5YjdlMjZhNmQ2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPElEQkNv
bm5lY3Rpb25Ub1NlcnZlcj4gSURCQ29ubmVjdGlvblRvU2VydmVyOjpjcmVhdGUoSURCQ29ubmVj
dGlvblRvU2VydmVyRGUKIAogSURCQ29ubmVjdGlvblRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIoSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUmIGRlbGVnYXRlKQogICAgIDogbV9k
ZWxlZ2F0ZShtYWtlV2Vha1B0cihkZWxlZ2F0ZSkpCi0gICAgLCBtX3Byb3h5KHN0ZDo6bWFrZV91
bmlxdWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhpcykpCisgICAgLCBtX3Byb3h5KG1ha2VVbmlx
dWU8SURCQ29ubmVjdGlvblByb3h5PigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25P
cGVyYXRpb24uY3BwCmluZGV4IDI3NTNmZDBjMjQ1N2I5YzA5ZDlkODllNGY3NjJiNDc5ZjhiNDQw
YjEuLjhlMWRlMDZkNzFlOGYwYjIyM2Q2ODZlNWUxYThhMjIwOWI3NDM4NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1Ry
YW5zYWN0aW9uT3BlcmF0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBUcmFuc2FjdGlvbk9wZXJh
dGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBJ
REJSZXF1ZQogICAgIGlmIChtX2luZGV4SWRlbnRpZmllcikKICAgICAgICAgbV9pbmRleFJlY29y
ZFR5cGUgPSByZXF1ZXN0LnJlcXVlc3RlZEluZGV4UmVjb3JkVHlwZSgpOwogICAgIGlmIChhdXRv
KiBjdXJzb3IgPSByZXF1ZXN0LnBlbmRpbmdDdXJzb3IoKSkKLSAgICAgICAgbV9jdXJzb3JJZGVu
dGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGN1cnNvci0+
aW5mbygpLmlkZW50aWZpZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VV
bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkp
OwogCiAgICAgbV9pZGJSZXF1ZXN0ID0gJnJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDU1YjQx
MjQ0MWVmMTcyNTA4Y2YwNWRmMWZjYTZkMWM0ZmQ1MGU5NDAuLjRmZTZjNGE4N2Q1YzNkNWIwNTEw
YzZlYmI3YzNmZjE1YTYyMjQwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgVW5p
cXVlSURCRGF0YWJhc2UmIElEQlNlcnZlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShj
b25zdCBJREJEYXRhYmFzZUlkZW4KIAogICAgIGF1dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3Vu
aXF1ZUlEQkRhdGFiYXNlTWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKICAgICBpZiAodW5p
cXVlSURCRGF0YWJhc2UuaXNOZXdFbnRyeSkKLSAgICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRl
cmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMs
IGlkZW50aWZpZXIpOworICAgICAgICB1bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPFVuaXF1ZUlEQkRhdGFiYXNlPigqdGhpcywgaWRlbnRpZmllcik7CiAKICAg
ICByZXR1cm4gKnVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZTsKIH0KQEAgLTEzNSw3
ICsxMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNy
ZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZQogICAgIGlmIChtX2RhdGFiYXNlRGly
ZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZShtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTUUxpdGVJREJCYWNraW5nU3RvcmU+KG1fc2Vzc2lvbklELCBpZGVudGlmaWVy
LCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aCwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFu
ZGxlciwgbV9wZXJPcmlnaW5RdW90YSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1FMaXRlSURC
QmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9y
eVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIsIG1fcGVyT3JpZ2luUXVv
dGEpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSkKQEAgLTc2MSw3ICs3NjEsNyBAQCB2b2lkIElEQlNlcnZlcjo6UXVv
dGFVc2VyOjppbml0aWFsaXplU3BhY2VVc2VkKHVpbnQ2NF90IHNwYWNlVXNlZCkKIElEQlNlcnZl
cjo6UXVvdGFVc2VyJiBJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcihjb25zdCBDbGllbnRPcmln
aW4mIG9yaWdpbikKIHsKICAgICByZXR1cm4gKm1fcXVvdGFVc2Vycy5lbnN1cmUob3JpZ2luLCBb
dGhpcywgJm9yaWdpbl0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90YVVz
ZXI+KCp0aGlzLCBtX3F1b3RhTWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xp
ZW50T3JpZ2luIHsgb3JpZ2luIH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxRdW90YVVz
ZXI+KCp0aGlzLCBtX3F1b3RhTWFuYWdlckdldHRlcihtX3Nlc3Npb25JRCwgb3JpZ2luKSwgQ2xp
ZW50T3JpZ2luIHsgb3JpZ2luIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFs
dWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5k
ZXhWYWx1ZVN0b3JlLmNwcAppbmRleCA2OTgzYzlkN2VhZmY1NjE2NzIwNGQ5NTJmMWYyMjY3YmI0
MGNhNGJhLi44ZDkyMWQ4ZWZlNmJhODQwYTMwZDYxZGZkYzZhNzIxZTgyOGE0M2FhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5kZXhWYWx1ZVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSW5k
ZXhWYWx1ZVN0b3JlLmNwcApAQCAtOTIsNyArOTIsNyBAQCBJREJFcnJvciBJbmRleFZhbHVlU3Rv
cmU6OmFkZFJlY29yZChjb25zdCBJREJLZXlEYXRhJiBpbmRleEtleSwgY29uc3QgSURCS2V5RGF0
YQogICAgICAgICByZXR1cm4gSURCRXJyb3IoQ29uc3RyYWludEVycm9yKTsKIAogICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5kZXhWYWx1ZUVudHJ5PihtX3VuaXF1ZSk7CisgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEluZGV4VmFsdWVFbnRyeT4obV91bmlxdWUpOwog
CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkS2V5KHZhbHVlS2V5KTsKICAgICBtX29y
ZGVyZWRLZXlzLmluc2VydChpbmRleEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uLmNwcAppbmRleCA0N2NjNDJmZDI2ZDY0NzNjNjQxOTI3ZTk5MmQ0ZWM2
ZThkN2JmOGVlLi41ZTcxNDQ5Nzg0YTBkYTA3Njc3ODlhOGRlZGM1MjI2ODlmNGQ4ZGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbj4gTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNy
ZWF0ZShNZW1vcnlJREJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCVHJhbnNh
Y3Rpb25JbmZvJiBpbmZvKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uPihiYWNraW5nU3RvcmUsIGluZm8pOworICAgIHJldHVybiBt
YWtlVW5pcXVlPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPihiYWNraW5nU3RvcmUsIGlu
Zm8pOwogfQogCiBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6TWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oTWVtb3J5SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0
IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKQEAgLTUyLDcgKzUyLDcgQEAgTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1lbW9yeUlE
QkJhY2tpbmdTdG8KICAgICAgICAgSURCRGF0YWJhc2VJbmZvIGluZm87CiAgICAgICAgIGF1dG8g
ZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS5nZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhpbmZvKTsK
ICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQotICAgICAgICAgICAgbV9vcmlnaW5hbERhdGFi
YXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICAg
ICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4oaW5mbyk7CiAgICAgfQogfQogCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6cmVjb3JkVmFsdWVDaGFuZ2VkKE1lbW9yeU9iamVjdFN0b3Jl
JiBvYmplY3QKIAogICAgIGF1dG8gb3JpZ2luYWxBZGRSZXN1bHQgPSBtX29yaWdpbmFsVmFsdWVz
LmFkZCgmb2JqZWN0U3RvcmUsIG51bGxwdHIpOwogICAgIGlmIChvcmlnaW5hbEFkZFJlc3VsdC5p
c05ld0VudHJ5KQotICAgICAgICBvcmlnaW5hbEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPEtleVZhbHVlTWFwPigpOworICAgICAgICBvcmlnaW5hbEFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOwogCiAgICAgYXV0
byogbWFwID0gb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGZmYzM1YzM5MWVlMmM0MGMyMjkxMjlk
YjVkMWFhZmM5ZTIwYThkODIuLjUzYzUwZjNjYWU4MzcxOGMzY2Q1NDY1ZDA0Y2YxM2JjZDVhMWYx
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC00OCw3ICs0OCw3IEBA
IHN0YXRpYyB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAwMDA7
CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IE1lbW9yeUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJh
c2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oc2Vzc2lvbklELCBpZGVudGlmaWVyKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KHNlc3Npb25JRCwgaWRlbnRpZmll
cik7CiB9CiAKIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQpAQCAtNjIsNyArNjIsNyBAQCBNZW1vcnlJREJCYWNraW5nU3RvcmU6On5NZW1vcnlJ
REJCYWNraW5nU3RvcmUoKSA9IGRlZmF1bHQ7CiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbykKIHsK
ICAgICBpZiAoIW1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCks
IDApOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZv
PihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOwogCiAgICAgaW5mbyA9ICptX2RhdGFi
YXNlSW5mbzsKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtNzMsNyArNzMsNyBAQCB2b2lk
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2V0RGF0YWJhc2VJbmZvKGNvbnN0IElEQkRhdGFiYXNl
SW5mbyYgaW5mbykKICAgICAvLyBJdCBpcyBub3QgdmFsaWQgdG8gZGlyZWN0bHkgc2V0IGRhdGFi
YXNlIGluZm8gb24gYSBiYWNraW5nIHN0b3JlIHRoYXQgaGFzbid0IGFscmVhZHkgc2V0IGl0cyBv
d24gZGF0YWJhc2UgaW5mby4KICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwogCi0gICAgbV9k
YXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7Cisg
ICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CiB9
CiAKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25z
dCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAppbmRleCA0OWRkY2E2YmQ0
MGQyOWQ0MmUzOGI4NTEzMWM4OWZkZmU3ZDQ3OTJkLi44NTk1ZGJiOGY0YTdlZTNkMTkxZTMxZmI2
MTBiMDQ5NzViODc0NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBJREJF
cnJvciBNZW1vcnlJbmRleDo6cHV0SW5kZXhLZXkoY29uc3QgSURCS2V5RGF0YSYgdmFsdWVLZXks
IGNvbnN0IEluZGV4S2V5JiBpbgogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJbmRleDo6cHJv
dmlzaW9uYWxQdXRJbmRleEtleSIpOwogCiAgICAgaWYgKCFtX3JlY29yZHMpIHsKLSAgICAgICAg
bV9yZWNvcmRzID0gc3RkOjptYWtlX3VuaXF1ZTxJbmRleFZhbHVlU3RvcmU+KG1faW5mby51bmlx
dWUoKSk7CisgICAgICAgIG1fcmVjb3JkcyA9IG1ha2VVbmlxdWU8SW5kZXhWYWx1ZVN0b3JlPiht
X2luZm8udW5pcXVlKCkpOwogICAgICAgICBub3RpZnlDdXJzb3JzT2ZBbGxSZWNvcmRzQ2hhbmdl
ZCgpOwogICAgIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIE1lbW9yeUluZGV4Q3Vyc29yKiBNZW1v
cnlJbmRleDo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiAgICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJbmRleEN1cnNv
cj4oKnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVl
PE1lbW9yeUluZGV4Q3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCmluZGV4IGQ4
NjViNjQyMWE1YzdlYTRiMGU2ZThjZGUzOTE3ZTdmY2U2MjcyNzYuLjcxNTViNTk3YTQyMGY1OWUx
Mzk1YjkyODFkZThjMmQ2NGRhYTg3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAt
MjYxLDggKzI2MSw4IEBAIElEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVt
b3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uCiAKICAgICBpZiAoIW1fa2V5
VmFsdWVTdG9yZSkgewogICAgICAgICBBU1NFUlQoIW1fb3JkZXJlZEtleXMpOwotICAgICAgICBt
X2tleVZhbHVlU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEtleVZhbHVlTWFwPigpOwotICAgICAg
ICBtX29yZGVyZWRLZXlzID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhU2V0PigpOworICAg
ICAgICBtX2tleVZhbHVlU3RvcmUgPSBtYWtlVW5pcXVlPEtleVZhbHVlTWFwPigpOworICAgICAg
ICBtX29yZGVyZWRLZXlzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8SURCS2V5
RGF0YVNldD4oKTsKICAgICB9CiAKICAgICBhdXRvIG1hcFJlc3VsdCA9IG1fa2V5VmFsdWVTdG9y
ZS0+c2V0KGtleURhdGEsIHZhbHVlLmRhdGEoKSk7CkBAIC00OTksNyArNDk5LDcgQEAgTWVtb3J5
T2JqZWN0U3RvcmVDdXJzb3IqIE1lbW9yeU9iamVjdFN0b3JlOjptYXliZU9wZW5DdXJzb3IoY29u
c3QgSURCQ3Vyc29ySW5mbyYKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywgaW5mbyk7CisgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I+KCp0
aGlzLCBpbmZvKTsKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA0MGI2YjY3OGVhZGI3YTNk
MzY2NmM4M2NhMThjOTIwYWUzOTgwOTllLi40ZDllM2FjYzcyY2MzNThkNWEyNTBkZTI5ZDk2ODc1
MWQxYjc0YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNTk2LDcg
KzU5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsCiAgICAgfQogCiAgICAgLy8gVGhpcyBp
bml0aWFsIGRhdGFiYXNlIGluZm8gbWF0Y2hlcyB0aGUgZGVmYXVsdCB2YWx1ZXMgd2UganVzdCBw
dXQgaW50byB0aGUgbWV0YWRhdGEgZGF0YWJhc2UuCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8SURCRGF0YWJhc2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworICAg
IHJldHVybiBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNl
TmFtZSgpLCAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8oKQpAQCAtNjMxLDcg
KzYzMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBhdXRvIGRhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihk
YXRhYmFzZU5hbWUsIGRhdGFiYXNlVmVyc2lvbik7CisgICAgYXV0byBkYXRhYmFzZUluZm8gPSBt
YWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24p
OwogCiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiU0VM
RUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jLCBtYXhJbmRleElEIEZST00gT2JqZWN0U3Rv
cmVJbmZvOyJfcyk7CkBAIC03OTMsNyArNzkzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8K
IAogICAgIFN0cmluZyBkYkZpbGVuYW1lID0gZnVsbERhdGFiYXNlUGF0aCgpOwogCi0gICAgbV9z
cWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgbV9zcWxp
dGVEQiA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CiAgICAgaWYgKCFtX3NxbGl0ZURC
LT5vcGVuKGRiRmlsZW5hbWUpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4g
U1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKQEAgLTkwMywxMSArOTAzLDExIEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2Fj
dGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IkF0dGVtcHQgdG8gZXN0YWJsaXNoIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgdGhhdCBhbHJlYWR5
IGV4aXN0cyJfcyB9OwogICAgIH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CisgICAg
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8U1FMaXRlSURCVHJhbnNhY3Rp
b24+KCp0aGlzLCBpbmZvKTsKIAogICAgIGF1dG8gZXJyb3IgPSBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLT5iZWdpbigqbV9zcWxpdGVEQik7CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpICYmIGlu
Zm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewotICAgICAg
ICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV9kYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdp
bmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IG1ha2VVbmlxdWU8SURCRGF0YWJh
c2VJbmZvPigqbV9kYXRhYmFzZUluZm8pOwogCiAgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwo
Km1fc3FsaXRlREIsICJVUERBVEUgSURCRGF0YWJhc2VJbmZvIFNFVCB2YWx1ZSA9ID8gd2hlcmUg
a2V5ID0gJ0RhdGFiYXNlVmVyc2lvbic7Il9zKTsKICAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkg
IT0gU1FMSVRFX09LCkBAIC0yNjM0LDcgKzI2MzQsNyBAQCBTUUxpdGVTdGF0ZW1lbnQqIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50KFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
UwogICAgIH0KIAogICAgIGlmIChtX3NxbGl0ZURCKSB7Ci0gICAgICAgIG1fY2FjaGVkU3RhdGVt
ZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVT
dGF0ZW1lbnQ+KCptX3NxbGl0ZURCLCBzdGF0ZW1lbnQpOworICAgICAgICBtX2NhY2hlZFN0YXRl
bWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVt
ZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKICAgICAgICAgaWYgKG1fY2FjaGVkU3RhdGVt
ZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldLT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKQog
ICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0g
PSBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggZjg0MDVhNzk4YTM2
ODEwZGM1NzZhZjFlNzNiY2FmNTMxMDIzN2JhZi4uYzZiM2ZkOTUzYTBkNTNhYzE1NjhlMjg0OGNi
Yzc4YTEyZjE5NTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
c3RhdGljIGNvbnN0IHNpemVfdCBwcmVmZXRjaExpbWl0ID0gODsKIAogc3RkOjp1bmlxdWVfcHRy
PFNRTGl0ZUlEQkN1cnNvcj4gU1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZShTUUxpdGVJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCiB7Ci0g
ICAgYXV0byBjdXJzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNh
Y3Rpb24sIGluZm8pOworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJz
b3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKIAogICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0
ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01OSw3ICs1OSw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUo
U1FMaXRlSURCVHJhbnNhY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNR
TGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVDdXJzb3IoU1FMaXRlSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCB1aW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25z
dCB1aW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQogewotICAg
IGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0
aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7CisgICAgYXV0byBjdXJzb3IgPSBt
YWtlVW5pcXVlPFNRTGl0ZUlEQkN1cnNvcj4odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSUQsIGlu
ZGV4SUQsIHJhbmdlKTsKIAogICAgIGlmICghY3Vyc29yLT5lc3RhYmxpc2hTdGF0ZW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTksNyArMTk5LDcgQEAgYm9vbCBTUUxpdGVJ
REJDdXJzb3I6OmNyZWF0ZVNRTGl0ZVN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKICAgICBB
U1NFUlQoIW1fY3VycmVudFVwcGVyS2V5LmlzTnVsbCgpKTsKICAgICBBU1NFUlQobV90cmFuc2Fj
dGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKSk7CiAKLSAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlv
bigpLT5kYXRhYmFzZSgpLCBzcWwpOworICAgIG1fc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxp
dGVTdGF0ZW1lbnQ+KG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCktPmRhdGFiYXNl
KCksIHNxbCk7CiAKICAgICBpZiAobV9zdGF0ZW1lbnQtPnByZXBhcmUoKSAhPSBTUUxJVEVfT0sp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQg
KHByZXBhcmUvaWQpIC0gJyVzJyIsIG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCkt
PmRhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIFNRTGl0ZUlE
QkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJl
Y29yZChTUUxpdGVDdXJzCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jdXJzb3JUeXBlID09
IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpCi0gICAgICAgICAgICByZWNvcmQu
cmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMp
OworICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IG1ha2VVbmlxdWU8SURCVmFsdWU+
KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJsb2JVUkxz
LCBibG9iRmlsZVBhdGhzKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWRlc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCksIHJlY29yZC5yZWNvcmQu
cHJpbWFyeUtleSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFs
aXplIHZhbHVlIGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBhZHZhbmNpbmcgaW5kZXggY3Vyc29y
Iik7CkBAIC00ODYsNyArNDg2LDcgQEAgU1FMaXRlSURCQ3Vyc29yOjpGZXRjaFJlc3VsdCBTUUxp
dGVJREJDdXJzb3I6OmludGVybmFsRmV0Y2hOZXh0UmVjb3JkKFNRTGl0ZUN1cnMKIAogICAgICAg
ICBpZiAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIG9iamVjdFN0b3JlU3Rh
dGVtZW50LmdldENvbHVtbkJsb2JBc1ZlY3RvcigwLCBrZXlEYXRhKTsKLSAgICAgICAgICAgIHJl
Y29yZC5yZWNvcmQudmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZl
RGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKKyAgICAgICAgICAgIHJlY29y
ZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpKTsKICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQg
PT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhl
IHJlY29yZCB3ZSdyZSB0cnlpbmcgdG8gcmV0cmlldmUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRo
ZSBvYmplY3Qgc3RvcmUuCiAgICAgICAgICAgICAvLyBTa2lwIG92ZXIgaXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBhNmEzYzVmZmYzMzgwYzI1ZWY3MzYxZTY4OGJlZjM2
YzA2MTVmYzgzLi5kMjEyZGUyYjZiODhhZmZlMGEzNWIwZmQwZmQzM2ZjODY3Y2VjYmQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
VHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSURCRXJyb3Ig
U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKIHsK
ICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwogCi0gICAgbV9zcWxpdGVUcmFuc2Fj
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KGRhdGFiYXNlLCBtX2lu
Zm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOworICAgIG1fc3FsaXRl
VHJhbnNhY3Rpb24gPSBtYWtlVW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihkYXRhYmFzZSwgbV9p
bmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBtX3NxbGl0
ZVRyYW5zYWN0aW9uLT5iZWdpbigpOwogCiAgICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24tPmlu
UHJvZ3Jlc3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDZmMmM3ZWJmNTkxZDA4
YWI4ODJiNjQ3ZWQ5ODQ3NjMyZWM4YzFiNjkuLjBjNDcyZmViM2UyZWNlZjNiOGI2ZjM1MDA1OWI5
NmMxZTgwYzQxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtNDM0LDcgKzQzNCw3
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRf
dCBkZWxldGVkVmVyc2lvbikKICAgICAvLyB3ZSB3b24ndCBoYXZlIGEgbV9tb3N0UmVjZW50RGVs
ZXRlZERhdGFiYXNlSW5mby4gSW4gdGhhdCBjYXNlLCB3ZSdsbCBtYW51ZmFjdHVyZSBvbmUgdXNp
bmcgdGhlCiAgICAgLy8gcGFzc2VkIGluIGRlbGV0ZWRWZXJzaW9uIGFyZ3VtZW50LgogICAgIGlm
ICghbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbykKLSAgICAgICAgbV9tb3N0UmVjZW50
RGVsZXRlZERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPiht
X2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRWZXJzaW9uKTsKKyAgICAgICAgbV9t
b3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZv
PihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIGRlbGV0ZWRWZXJzaW9uKTsKIAogICAgIGlm
IChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0KSB7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVl
c3QtPm5vdGlmeURpZERlbGV0ZURhdGFiYXNlKCptX21vc3RSZWNlbnREZWxldGVkRGF0YWJhc2VJ
bmZvKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVu
QmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbywgY29uc3QgSQogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIpOwogICAgIAotICAgIG1fZGF0YWJhc2VJ
bmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIG1fYmFj
a2luZ1N0b3JlT3BlbkVycm9yID0gZXJyb3I7CiAKICAgICBBU1NFUlQobV9pc09wZW5pbmdCYWNr
aW5nU3RvcmUpOwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLAog
ICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24p
OwogICAgICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbiB8fCAm
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmRhdGFiYXNlQ29ubmVjdGlvbigpID09IG1fdmVy
c2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CiAgICAgICAgIEFTU0VSVChtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7Ci0gICAgICAgIG1fZGF0
YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CisgICAgICAgIG1fZGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CiAgICAgfQogCiAgICAgSURCRXJy
b3IgcmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkgPT0gVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2FjdGlvbi0+cmVzdWx0KCkgOiBlcnJvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAppbmRleCBmMTdh
NGU1NTIzZmI1ZjYxYjAyNmEwOTE0N2Y4MTQxZDViNjQxMzlhLi44NTQwY2E3ODZkNTczNThkOTgy
YzczZTY0NjBmN2Y4ZjBhODgzNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uY3BwCkBAIC01MSw3ICs1MSw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25u
CiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKIAogICAgIGlmIChtX3RyYW5zYWN0aW9uSW5mby5tb2Rl
KCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKQotICAgICAgICBtX29yaWdp
bmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFi
YXNlLT5pbmZvKCkpOworICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1
ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlLT5pbmZvKCkpOwogCiAgICAgaWYgKGF1dG8qIHNl
cnZlciA9IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5zZXJ2ZXIoKSkKICAgICAgICAgc2VydmVyLT5y
ZWdpc3RlclRyYW5zYWN0aW9uKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCmluZGV4IGIxMGQ4
NDA5OWIyNTI4ZTZmNzNjMjhiMTUwNGE4YTkzMjRkMGIyMWEuLjIxNjQxNmFmYTExY2YyNTVkMzZk
ZWZiM2VmZjM2ZWZhZjE5NTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoKQogCiBJREJSZXF1ZXN0RGF0YTo6
SURCUmVxdWVzdERhdGEoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkmIGNvbm5l
Y3Rpb25Qcm94eSwgY29uc3QgSURCT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvblByb3h5LnNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uUHJveHksIHJlcXVlc3QpKQorICAgICwg
bV9yZXF1ZXN0SWRlbnRpZmllcihtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29u
bmVjdGlvblByb3h5LCByZXF1ZXN0KSkKICAgICAsIG1fZGF0YWJhc2VJZGVudGlmaWVyKHJlcXVl
c3QuZGF0YWJhc2VJZGVudGlmaWVyKCkpCiAgICAgLCBtX3JlcXVlc3RlZFZlcnNpb24ocmVxdWVz
dC52ZXJzaW9uKCkpCiAgICAgLCBtX3JlcXVlc3RUeXBlKHJlcXVlc3QucmVxdWVzdFR5cGUoKSkK
QEAgLTQ5LDggKzQ5LDggQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHIKIAogSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJh
dGlvbikKICAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIob3BlcmF0aW9uLnRyYW5z
YWN0aW9uKCkuZGF0YWJhc2UoKS5jb25uZWN0aW9uUHJveHkoKS5zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4ob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpCi0gICAgLCBtX3Ry
YW5zYWN0aW9uSWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmll
cj4ob3BlcmF0aW9uLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKSkKKyAgICAsIG1fcmVxdWVzdElk
ZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVu
dGlmaWVyKCkpKQorICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJS
ZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCiAg
ICAgLCBtX29iamVjdFN0b3JlSWRlbnRpZmllcihvcGVyYXRpb24ub2JqZWN0U3RvcmVJZGVudGlm
aWVyKCkpCiAgICAgLCBtX2luZGV4SWRlbnRpZmllcihvcGVyYXRpb24uaW5kZXhJZGVudGlmaWVy
KCkpCiB7CkBAIC01OCw3ICs1OCw3IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgICAgIG1faW5k
ZXhSZWNvcmRUeXBlID0gb3BlcmF0aW9uLmluZGV4UmVjb3JkVHlwZSgpOwogCiAgICAgaWYgKG9w
ZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNv
cklkZW50aWZpZXIoKSk7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPigqb3BlcmF0aW9uLmN1cnNvcklkZW50aWZpZXIoKSk7CiB9
CiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
b3RoZXIpCkBAIC03MSwxMSArNzEsMTEgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRh
KGNvbnN0IElEQlJlcXVlc3REYXRhJiBvdGhlcikKICAgICAsIG1fcmVxdWVzdFR5cGUob3RoZXIu
bV9yZXF1ZXN0VHlwZSkKIHsKICAgICBpZiAob3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcikKLSAg
ICAgICAgbV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9yZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1fcmVxdWVz
dElkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1f
cmVxdWVzdElkZW50aWZpZXIpOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmll
cikKLSAgICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAg
ICAgICAgbV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRl
bnRpZmllcj4oKm90aGVyLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIu
bV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmll
cik7CisgICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPigqb3RoZXIubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogSURCUmVxdWVzdERh
dGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQlJlcXVlc3REYXRhJiB0aGF0LCBJc29sYXRlZENv
cHlUYWcpCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCB2b2lkIElEQlJlcXVlc3REYXRhOjppc29sYXRl
ZENvcHkoY29uc3QgSURCUmVxdWVzdERhdGEmIHNvdXJjZSwgSURCUmVxdWVzdERhdGEmCiAgICAg
ICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJZGVudGlmaWVyID0gc291cmNlLm1fZGF0YWJhc2VJ
ZGVudGlmaWVyLT5pc29sYXRlZENvcHkoKTsKIAogICAgIGlmIChzb3VyY2UubV9yZXF1ZXN0SWRl
bnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50
aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVu
aXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9yZXF1ZXN0SWRlbnRpZmllcik7
CiAgICAgaWYgKHNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgZGVzdGlu
YXRpb24ubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291
cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAg
IGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlm
IChzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNv
cklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNv
dXJjZS5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2N1cnNvcklk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX2N1
cnNvcklkZW50aWZpZXIpOwogfQogCiB1aW50NjRfdCBJREJSZXF1ZXN0RGF0YTo6c2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCA0NWNmZmFlYTYw
M2E1M2I1OTkwNGM4YjE0YjdhMWRlZjdkMjVmMzEwLi40MDhiNGU0NjI4NzMzN2I5YWMzNDRhZmJm
NDY5MTU4NjhlODBmMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGJv
b2wgSURCUmVxdWVzdERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3Vy
Y2VJZGVudGlmaWVyPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgcmVxdWVzdC5tX3JlcXVlc3RJZGVudGlmaWVyID0gV1RGTW92
ZShvYmplY3QpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIGJvb2wgSURCUmVxdWVzdERhdGE6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdCkKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
aGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBt
YWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVx
dWVzdC5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE3NCw3
ICsxNzQsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmpl
Y3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJj
ZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9jdXJzb3JJZGVudGlm
aWVyID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCmluZGV4IGE4OTQ1NGU2ZTYz
ZjZlYjdjYjUwMzhiOWM5MzJmYTIxODYzM2VkYzYuLjRjYmQ1ZDliZGYwYTg1MjNiZjdmNTJhYzVi
YzVjYjRiN2VkMTA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKQEAgLTU3LDE1ICs1NywxNSBAQCBJ
REJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIG90aGVyKQog
ICAgICwgbV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKIHsKICAgICBpZiAo
b3RoZXIubV9kYXRhYmFzZUluZm8pCi0gICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2RhdGFiYXNlSW5mbyk7CisgICAgICAg
IG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhlci5tX2Rh
dGFiYXNlSW5mbyk7CiAgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBt
X3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigq
b3RoZXIubV90cmFuc2FjdGlvbkluZm8pOworICAgICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IG1h
a2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOwog
ICAgIGlmIChvdGhlci5tX3Jlc3VsdEtleSkKLSAgICAgICAgbV9yZXN1bHRLZXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQktleURhdGE+KCpvdGhlci5tX3Jlc3VsdEtleSk7CisgICAgICAgIG1fcmVz
dWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOwogICAg
IGlmIChvdGhlci5tX2dldFJlc3VsdCkKLSAgICAgICAgbV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKKyAgICAgICAgbV9nZXRS
ZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oKm90aGVyLm1fZ2V0UmVzdWx0KTsKICAg
ICBpZiAob3RoZXIubV9nZXRBbGxSZXN1bHQpCi0gICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhlci5tX2dldEFsbFJlc3VsdCk7Cisg
ICAgICAgIG1fZ2V0QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpvdGhl
ci5tX2dldEFsbFJlc3VsdCk7CiB9CiAKIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29u
c3QgSURCUmVzdWx0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtODcsMTUgKzg3LDE1
IEBAIHZvaWQgSURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlc3VsdERhdGEm
IHNvdXJjZSwgSURCUmVzdWx0RGF0YSYgZGVzCiAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRJbnRl
Z2VyID0gc291cmNlLm1fcmVzdWx0SW50ZWdlcjsKIAogICAgIGlmIChzb3VyY2UubV9kYXRhYmFz
ZUluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNl
SW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9kYXRhYmFzZUluZm8g
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX2RhdGFiYXNlSW5mbywgSURC
RGF0YWJhc2VJbmZvOjpJc29sYXRlZENvcHkpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlv
bkluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElE
QlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV90
cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKnNvdXJjZS5t
X3RyYW5zYWN0aW9uSW5mbywgSURCVHJhbnNhY3Rpb25JbmZvOjpJc29sYXRlZENvcHkpOwogICAg
IGlmIChzb3VyY2UubV9yZXN1bHRLZXkpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0S2V5
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqc291cmNlLm1fcmVzdWx0S2V5LCBJREJL
ZXlEYXRhOjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9
IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6
SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fZ2V0UmVzdWx0KQotICAgICAgICBkZXN0
aW5hdGlvbi5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0Pigqc291
cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpzb3VyY2Uu
bV9nZXRSZXN1bHQsIElEQkdldFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNl
Lm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJ
REJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZ2V0
QWxsUmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCpzb3VyY2UubV9nZXRBbGxS
ZXN1bHQsIElEQkdldEFsbFJlc3VsdDo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogSURCUmVzdWx0RGF0
YSBJREJSZXN1bHREYXRhOjplcnJvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCkBAIC0xMTEsNyArMTExLDcgQEAg
SURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgcmUKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVl
c3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5E
YXRhYmFzZVN1Y2Nlc3M7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCkt
PmluZm8oKSk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KGNvbm5lY3Rpb24uZGF0YWJhc2UoKS0+aW5mbygpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0xMjEsMTUgKzEyMSwxNSBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERh
dGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQog
ICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgcmVxdWVzdElkZW50aWZpZXIgfTsKICAgICByZXN1
bHQubV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZDsKICAg
ICByZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uZGF0
YWJhc2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigpOwotICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFz
ZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5pbmZvKCkpOwotICAgIHJlc3VsdC5tX3RyYW5zYWN0
aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPih0cmFuc2FjdGlv
bi5pbmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0
YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLT5p
bmZvKCkpOworICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IG1ha2VVbmlxdWU8SURCVHJh
bnNhY3Rpb25JbmZvPih0cmFuc2FjdGlvbi5pbmZvKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgaW5mbykKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7SURCUmVzdWx0
VHlwZTo6RGVsZXRlRGF0YWJhc2VTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJl
c3VsdC5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihp
bmZvKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTcxLDIxICsxNzEsMjEg
QEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpyZW5hbWVJbmRleFN1Y2Nlc3MoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXEKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6
cHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtleSkKIHsKICAgICBJREJSZXN1bHREYXRh
IHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OlB1dE9yQWRkU3VjY2VzcywgcmVxdWVzdElkZW50aWZp
ZXIgfTsKLSAgICByZXN1bHQubV9yZXN1bHRLZXkgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURh
dGE+KHJlc3VsdEtleSk7CisgICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gbWFrZVVuaXF1ZTxJREJL
ZXlEYXRhPihyZXN1bHRLZXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERh
dGEgSURCUmVzdWx0RGF0YTo6Z2V0UmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkK
IHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1
Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CisgICAgcmVzdWx0Lm1fZ2V0
UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpnZXRBbGxSZWNvcmRz
U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBJREJHZXRBbGxSZXN1bHQmIGdldEFsbFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRh
IHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6OkdldEFsbFJlY29yZHNTdWNjZXNzLCByZXF1ZXN0SWRl
bnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldEFsbFJlc3Vs
dCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PihnZXRBbGxSZXN1bHQpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTIwNCwxNCArMjA0LDE0IEBAIElEQlJlc3VsdERhdGEgSURCUmVz
dWx0RGF0YTo6ZGVsZXRlUmVjb3JkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IElEQkdldFJl
c3VsdCYgZ2V0UmVzdWx0KQogewogICAgIElEQlJlc3VsdERhdGEgcmVzdWx0IHsgSURCUmVzdWx0
VHlwZTo6T3BlbkN1cnNvclN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0
Lm1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJlc3VsdCk7
CisgICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KGdldFJl
c3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCUmVzdWx0RGF0YSBJREJSZXN1bHRE
YXRhOjppdGVyYXRlQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
cXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJ
REJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Okl0ZXJhdGVDdXJzb3JTdWNjZXNz
LCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3Vs
dCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDcxN2IzZTJkZTUzYjM1M2ZlYjZkZDc1NTAwYTBl
NWU2OGM5NDdhM2YuLjYyMDYyYTFlMjk1ZjdiNTk4MTU4OTViNTdiZWMwMDhlNWIxODc2YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1
bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBk
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKKyAgICAgICAgYXV0byBvYmplY3Qg
PSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAg
IHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE5Myw3ICsxOTMs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJS
ZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFz
T2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0
KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlv
bkluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV90cmFuc2FjdGlvbklu
Zm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERl
Y29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKTsKKyAgICAgICAgYXV0byBvYmpl
Y3QgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElEQktleURh
dGE+IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAo
IW9wdGlvbmFsKQpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9w
dGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKTsKKyAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQkdldFJlc3VsdD4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2Jq
ZWN0KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5t
X2dldFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAg
IGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CisgICAg
ICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogICAgICAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
VHJhbnNhY3Rpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCmluZGV4IDk4M2MxYzExYzk5YjQ1YjZjZTU0NGRm
Y2FjMDM3ZTRjNzM3Mjk1YzMuLjRmYjk5OTE5ZjY3ZDVmN2M5YWJjMTA5ZTJlMzAwMGNjZTRjNDQw
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJUcmFuc2FjdGlvbkluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCkBAIC01NSw3ICs1NSw3IEBAIElEQlRy
YW5zYWN0aW9uSW5mbyBJREJUcmFuc2FjdGlvbkluZm86OnZlcnNpb25DaGFuZ2UoY29uc3QgSURC
U2VydmVyOjpJREJDb25uZWN0CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIHJlc3VsdCgoSURCUmVz
b3VyY2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pKSk7CiAgICAgcmVzdWx0Lm1fbW9kZSA9IElEQlRy
YW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZTsKICAgICByZXN1bHQubV9uZXdWZXJzaW9uID0g
bmV3VmVyc2lvbjsKLSAgICByZXN1bHQubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihvcmlnaW5hbERhdGFiYXNlSW5mbyk7CisgICAgcmVz
dWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
b3JpZ2luYWxEYXRhYmFzZUluZm8pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3LDcg
KzY3LDcgQEAgSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICwgbV9vYmplY3RTdG9yZXMoaW5mby5tX29iamVj
dFN0b3JlcykKIHsKICAgICBpZiAoaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKQotICAgICAg
ICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KCppbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgICAgICBtX29yaWdpbmFsRGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCppbmZvLm1fb3JpZ2luYWxE
YXRhYmFzZUluZm8pOwogfQogCiBJREJUcmFuc2FjdGlvbkluZm86OklEQlRyYW5zYWN0aW9uSW5m
byhjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTkx
LDcgKzkxLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkluZm86Omlzb2xhdGVkQ29weShjb25zdCBJ
REJUcmFuc2FjdGlvbkluZm8mIHNvdXJjZSwgSURCVHJhbnMKICAgICAgICAgZGVzdGluYXRpb24u
bV9vYmplY3RTdG9yZXMudW5jaGVja2VkQXBwZW5kKG9iamVjdFN0b3JlLmlzb2xhdGVkQ29weSgp
KTsKIAogICAgIGlmIChzb3VyY2UubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgZGVz
dGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5m
bzo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9vcmlnaW5hbERhdGFiYXNl
SW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKIH0KIAogI2lmICFMT0df
RElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaAppbmRleCA5MzBkODAyMzYxODIzMmFiZjZj
MDgxZGYyMTI5NThmZjYyYTU1NWVkLi43Yjk0NzdlOGVjNTU0YzkxM2QyYTQ4YmU1NThlMTYzM2Q5
M2ZjZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCkBAIC0xMTksNyArMTE5LDcgQEAgYm9v
bCBJREJUcmFuc2FjdGlvbkluZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJREJUcmFuc2Fj
dGlvbkluZm8mIGluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNPYmpl
Y3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZv
PigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpbmZvLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBXVEZN
b3ZlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDg3YjFhZGNkOTY2
NjIwNmVjOTcxNjYwMzYyYjQwZTVhZDdkODAxZDEuLmM5Njg5NDQ0ZmQyMjQwMmNlZDIxMTNiM2Jm
YTBiOWE1MjZjNjczYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIFJlZjxJblByb2Nlc3NJREJTZXJ2ZXI+IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBJblBy
b2Nlc3NJREJTZXJ2ZXI6OnF1b3RhTWFuYWdlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikK
IHsKICAgICByZXR1cm4gbV9xdW90YU1hbmFnZXJzLmVuc3VyZShvcmlnaW4sIFtdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1
b3RhTWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBj
dXJyZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oU3RvcmFnZVF1b3Rh
TWFuYWdlcjo6ZGVmYXVsdFF1b3RhKCksIFtdKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U3BhY2UsIHVpbnQ2NF90IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrKHF1b3RhICsgY3VycmVudFNwYWNlICsgc3BhY2VJbmNyZWFzZSk7CiAg
ICAgICAgIH0pOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9O
YXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKaW5kZXggZjg3MjU3NGU4NWMyNDA4NzcyYjFk
MTFhMmU4YmNiNmRkNjBkYTI5Ny4uYTMxYmFkYjU0YWM5ODFlMGUzYmFkYWZlMjA5ODc4MjlkM2Y3
NDAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGll
cy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMmIE5hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG8KIHsKICAgICBOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvck1lZGlh
Q2FwYWJpbGl0aWVzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKCZuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGll
cz4oKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllcz4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3Bw
CmluZGV4IDUwZDBiYjBiMWVkNTNhNDMyNDU4ZDlmYjcxMzU3MGFlMGVjYTBkMDYuLmI5NzQzNGM0
ZTYyNDVkNzNjY2YyZDYyNWEwYTFiMDNlMTI5MGNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYKIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrJiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjptb2NrUGlj
a2VyKCkKIHsKICAgICBpZiAoIW1fcGlja2VyT3ZlcnJpZGUpCi0gICAgICAgIG1fcGlja2VyT3Zl
cnJpZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrPigq
dGhpcyk7CisgICAgICAgIG1fcGlja2VyT3ZlcnJpZGUgPSBtYWtlVW5pcXVlPE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fcGlja2VyT3ZlcnJp
ZGUuZ2V0KCk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdWludDY0X3QgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6YWRkUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQoV2ViTWVkaWFTZXNzaW9uTWEK
IAogICAgIExPRyhNZWRpYSwgIldlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFy
Z2V0UGlja2VyQ2xpZW50KCVwICsgJWxsdSkiLCAmY2xpZW50LCBjb250ZXh0SWQpOwogCi0gICAg
bV9jbGllbnRTdGF0ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50
LCBjb250ZXh0SWQpKTsKKyAgICBtX2NsaWVudFN0YXRlLmFwcGVuZChtYWtlVW5pcXVlPENsaWVu
dFN0YXRlPihjbGllbnQsIGNvbnRleHRJZCkpOwogCiAgICAgaWYgKG1fZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGUgfHwgbV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgc2NoZWR1bGVEZWxh
eWVkVGFzayhJbml0aWFsQ29uZmlndXJhdGlvblRhc2sgfCBUYXJnZXRDbGllbnRzQ29uZmlndXJh
dGlvblRhc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcAppbmRleCBkNDE3YTEyMTY5MTExMjE1ZDU0MjI5MWUwM2M1OWQ1ZDZlN2Vi
M2Y0Li43Y2JjNmExMzM1MWUwZDMyY2UyNTVhOWJhZGNiOTc0NGRhZjRkNDQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAt
MTc4LDkgKzE3OCw5IEBAIE1lZGlhVGltZSBNZWRpYVNvdXJjZTo6Y3VycmVudFRpbWUoKSBjb25z
dAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZl
cmVkKCkgY29uc3QKIHsKICAgICBpZiAobV9idWZmZXJlZCAmJiBtX2FjdGl2ZVNvdXJjZUJ1ZmZl
cnMtPmxlbmd0aCgpICYmIHN0ZDo6YWxsX29mKG1fYWN0aXZlU291cmNlQnVmZmVycy0+YmVnaW4o
KSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5lbmQoKSwgW10oYXV0byYgYnVmZmVyKSB7IHJldHVy
biAhYnVmZmVyLT5pc0J1ZmZlcmVkRGlydHkoKTsgfSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAotICAgIG1f
YnVmZmVyZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICBt
X2J1ZmZlcmVkID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgZm9yIChh
dXRvJiBzb3VyY2VCdWZmZXIgOiAqbV9hY3RpdmVTb3VyY2VCdWZmZXJzKQogICAgICAgICBzb3Vy
Y2VCdWZmZXItPnNldEJ1ZmZlcmVkRGlydHkoZmFsc2UpOwogCkBAIC0xOTAsNyArMTkwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVk
KCkgY29uc3QKIAogICAgIC8vIDEuIElmIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMubGVuZ3RoIGVxdWFs
cyAwIHRoZW4gcmV0dXJuIGFuIGVtcHR5IFRpbWVSYW5nZXMgb2JqZWN0IGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KICAgICBpZiAoYWN0aXZlUmFuZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwog
CiAgICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5lZCBieSBi
dWZmZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJjZUJ1ZmZl
cnMuCiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3QgcmFuZ2Ug
ZW5kIHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29u
c3QKIAogICAgIC8vIFJldHVybiBhbiBlbXB0eSByYW5nZSBpZiBhbGwgcmFuZ2VzIGFyZSBlbXB0
eS4KICAgICBpZiAoIWhpZ2hlc3RFbmRUaW1lKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKICAgICAvLyA0LiBM
ZXQgaW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmlu
ZyBhIHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBtX2J1ZmZl
cmVkLT5hZGQoTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBoaWdoZXN0RW5kVGltZSk7CkBAIC0yMjEs
NyArMjIxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3Vy
Y2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChz
b3VyY2VSYW5nZXMpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzZWVr
VG9UaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKQEAgLTM0NCw3ICszNDQsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0
LCBkb3VibGUgZW5kKQogCiAgICAgLy8gU2V0IGxpdmUgc2Vla2FibGUgcmFuZ2UgdG8gYmUgYSBu
ZXcgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBjb250YWluaW5nIGEgc2luZ2xlIHJhbmdl
CiAgICAgLy8gd2hvc2Ugc3RhcnQgcG9zaXRpb24gaXMgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBp
cyBlbmQuCi0gICAgbV9saXZlU2Vla2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKGVuZCkpOworICAgIG1fbGl2ZVNlZWthYmxlID0gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1l
ZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKIAogICAgIHJldHVybiB7IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1l
ZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5jcHAKaW5kZXggZTQxODI3ODM4ZDYyY2EzOGZjM2JmM2JlNzhmOGY0
YWE4YWU1MjU5Ni4uN2IzNThmNWUwZGU0MmZiMjI2OGQzNjkwM2U1OGRiNWViNzhlOTBkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApAQCAtNTEsNyArNTEsNyBAQCBOYXZpZ2F0b3JNZWRpYURl
dmljZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxO
YXZpZ2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdh
dG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZp
Y2VzPihuYXZpZ2F0b3ItPndpbmRvdygpKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
bWFrZVVuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+d2luZG93KCkpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKaW5kZXggOGQ3ZTYzY2M2MDZkNmRhMTlmYmRiMTJk
ZTU0ZmI4NTVmZGY2MmM5OS4uMTRkZjExNjFkYWU2OGNjNDZjYjQ5ZWFhZTIxZjVlZjk4OWUyYWNh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFVzZXJNZWRpYUNvbnRy
b2xsZXI6On5Vc2VyTWVkaWFDb250cm9sbGVyKCkKIAogdm9pZCBwcm92aWRlVXNlck1lZGlhVG8o
UGFnZSogcGFnZSwgVXNlck1lZGlhQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgVXNlck1lZGlhQ29u
dHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnN1cHBsZW1lbnRO
YW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xpZW50KSk7Cisg
ICAgVXNlck1lZGlhQ29udHJvbGxlcjo6cHJvdmlkZVRvKHBhZ2UsIFVzZXJNZWRpYUNvbnRyb2xs
ZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8VXNlck1lZGlhQ29udHJvbGxlcj4oY2xp
ZW50KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NlY3VyZShEb2N1bWVudExvYWRlciYg
ZG9jdW1lbnRMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCBhYWE0MDAwMjA3MzY1ZmZjYmU1MjgxMjhlMjhjZTAyZjZjNjA3
Y2RkLi5jOTg1YmMxOWEzMWQwMTE0NTY1YWJhYmE1ZjA2MGVlNTBkYTYxMTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgUmVmPFJUQ0RhdGFDaGFubmVsRXZlbnQ+IExpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjo6Y2hhbm5lbEV2ZW50KFNjcmlwdEV4ZWN1dGkKICAgICBpbml0Lm5lZ290aWF0ZWQgPSBk
YXRhQ2hhbm5lbC0+bmVnb3RpYXRlZCgpOwogICAgIGluaXQuaWQgPSBkYXRhQ2hhbm5lbC0+aWQo
KTsKIAotICAgIGF1dG8gaGFuZGxlciA9ICBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hhbm5lbCkpOworICAgIGF1dG8gaGFuZGxlciA9
ICBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShkYXRhQ2hh
bm5lbCkpOwogICAgIGF1dG8gY2hhbm5lbCA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoY29udGV4
dCwgV1RGTW92ZShoYW5kbGVyKSwgZnJvbVN0ZFN0cmluZyhsYWJlbCksIFdURk1vdmUoaW5pdCkp
OwogCiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZGF0YWNoYW5uZWxFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vLCBXVEZNb3ZlKGNoYW5uZWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVk
aWFFbmRwb2ludC5jcHAKaW5kZXggZGVmMWY5MWVlZTllZDZlYzc4ZDEzYzY5ZWM0MzQ4ZjBhYTY4
ZDM2Ny4uZDFhNzRiODU3MWJlZTdlZTVlOWMzMTYyZWNhMmY0ZDZmZjQxZTQ1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
TWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTM5Nyw3ICszOTcsNyBA
QCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2VpdgogICAgIH0KICAgICB9CiAKLSAgICByZWNlaXZlci0+
c2V0QmFja2VuZChzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4o
V1RGTW92ZShydGNSZWNlaXZlcikpKTsKKyAgICByZWNlaXZlci0+c2V0QmFja2VuZChtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNSZWNlaXZlcikpKTsK
ICAgICBhdXRvJiB0cmFjayA9IHJlY2VpdmVyLT50cmFjaygpOwogICAgIGFkZFBlbmRpbmdUcmFj
a0V2ZW50KHJlY2VpdmVyLnJlbGVhc2VOb25OdWxsKCksIHRyYWNrLCBydGNTdHJlYW1zLCBudWxs
cHRyKTsKIH0KQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6
OmNvbGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFu
c2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4o
V1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlx
dWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVy
KSksIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiB9CiAKQEAgLTQ5OSw3ICs0OTks
NyBAQCB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zYwogICAgIGlmICghc291cmNlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25CYWNr
ZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNl
Tm9uTnVsbCgpKTsKKyAgICBhdXRvJiBuZXdUcmFuc2NlaXZlciA9IG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKHJ0Y1RyYW5zY2VpdmVyKSksIHNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpKTsKIAogICAgIGFkZFBlbmRpbmdUcmFja0V2ZW50KG1ha2VSZWYobmV3VHJhbnNjZWl2
ZXIucmVjZWl2ZXIoKSksIG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkudHJhY2soKSwgcnRjUmVj
ZWl2ZXItPnN0cmVhbXMoKSwgbWFrZVJlZihuZXdUcmFuc2NlaXZlcikpOwogfQpAQCAtNTM0LDcg
KzUzNCw3IEBAIE9wdGlvbmFsPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzPiBMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVUcmFuc2NlCiAgICAgaWYgKCFyZXN1bHQub2soKSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocmVzdWx0Lk1v
dmVWYWx1ZSgpKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CiAgICAgcmV0dXJuIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OkJhY2tlbmRzIHsgdHJhbnNjZWl2ZXItPmNyZWF0ZVNlbmRl
ckJhY2tlbmQobV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQsIFdURk1vdmUoc291cmNlKSksIHRyYW5z
Y2VpdmVyLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSwgV1RGTW92ZSh0cmFuc2NlaXZlcikgfTsK
IH0KIApAQCAtNTg1LDcgKzU4NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQ+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OnRyYW5zY2VpCiB7CiAgICAg
Zm9yIChhdXRvJiB0cmFuc2NlaXZlciA6IG1fYmFja2VuZC0+R2V0VHJhbnNjZWl2ZXJzKCkpIHsK
ICAgICAgICAgaWYgKHRyYW5zY2VpdmVyLT5zZW5kZXIoKS5nZXQoKSA9PSBiYWNrZW5kLnJ0Y1Nl
bmRlcigpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kPihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2Nl
aXZlckludGVyZmFjZT4odHJhbnNjZWl2ZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CiAgICAgfQogICAg
IHJldHVybiBudWxscHRyOwogfQpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxS
VENEYXRhQ2hhbm5lbEhhbmRsZXI+IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZURhdGFD
aGFubmVsCiB7CiAgICAgYXV0byBpbml0ID0gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpm
cm9tUlRDRGF0YUNoYW5uZWxJbml0KG9wdGlvbnMpOwogICAgIGF1dG8gY2hhbm5lbCA9IG1fYmFj
a2VuZC0+Q3JlYXRlRGF0YUNoYW5uZWwobGFiZWwudXRmOCgpLmRhdGEoKSwgJmluaXQpOwotICAg
IHJldHVybiBjaGFubmVsID8gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXI+KFdURk1vdmUoY2hhbm5lbCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gY2hhbm5lbCA/
IG1ha2VVbmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwp
KSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6T25EYXRhQ2hh
bm5lbChydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpEYXRhQ2hhbm5lbEludGVyZmFjZT4gZGF0
YUNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcAppbmRleCAyMDdmMTVlNjQ1N2I5ZGZjYWMxYzMzOWVhMzlmZWExZDc3ODU5
ZDhiLi5mYzkxY2NkMGJiZDFmZGJiYTc2NDJlNzA0ZjM3ZmU4NWNjNzJmZDVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ+IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2UKIAogICAgIHBhZ2UtPmxpYldl
YlJUQ1Byb3ZpZGVyKCkuc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihwYWdlLT5zZXR0aW5ncygp
LndlYlJUQ0VuY3J5cHRpb25FbmFibGVkKCkpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+
bGliV2ViUlRDUHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kPihwZWVyQ29ubmVjdGlvbiwgcGFnZS0+bGliV2ViUlRDUHJvdmlk
ZXIoKSk7CiB9CiAKIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmNyZWF0ZSA9IGNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKQEAg
LTMxMSw3ICszMTEsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OlZpZGVvUmVj
ZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aQogICAgIGF1dG8gc291cmNl
ID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0
cmFja0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNv
dXJjZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3Rk
OjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7
CisgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRy
YW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywg
eyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRy
KTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3Bl
ZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTMz
NCw3ICszMzQsNyBAQCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkF1ZGlvUmVjZWl2
ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdQogICAgIGF1dG8gc291cmNlID0g
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFj
a0lkKSk7CiAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJj
ZS5jb3B5UmVmKCksIG51bGxwdHIpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJhdWRpbyJfcywgeyB9
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsK
ICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJD
b25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKQEAgLTQwMCw3
ICs0MDAsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRFeGlzdGlu
Z1NlbmRlcihjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cAogRXhjZXB0aW9uT3I8UmVmPFJUQ1J0
cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFT
dHJlYW1UcmFjayYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMpCiB7CiAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5p
ZmllZFBsYW5FbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Cisg
ICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRy
YWNrKCpzZW5kZXJCYWNrZW5kLCB0cmFjaywgbWVkaWFTdHJlYW1JZHMpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsK
IApAQCAtNDM4LDcgKzQzOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyCiAgICAgICAgIGNv
bnN0IFN0cmluZyYgdHJhY2tLaW5kID0gdHJhY2sua2luZCgpOwogICAgICAgICBTdHJpbmcgdHJh
Y2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIHNlbmRl
ckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0
aGlzLCBudWxscHRyKTsKKyAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgICAgIGF1dG8g
bmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIG1ha2VSZWYodHJhY2spLCBW
ZWN0b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkp
OwogICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXIodHJhY2tLaW5kLCB0cmFj
a0lkKTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVh
dGUoV1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSwgbnVsbHB0cik7CkBAIC00
NzIsNyArNDcyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJSVENVbmlmaWVkUGxhbkVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoU3RyaW5nIHsgdHJh
Y2tLaW5kIH0sIGluaXQpOwogCi0gICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgYXV0
byBzZW5kZXJCYWNrZW5kID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigq
dGhpcywgbnVsbHB0cik7CiAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0
ZSgqdGhpcywgU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2Vu
ZGVyQmFja2VuZCkpOwogICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUo
bmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCB0cmFja0tpbmQp
OwogfQpAQCAtNDgyLDcgKzQ4Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZl
cj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBs
YW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFdU
Rk1vdmUodHJhY2spLCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8mIGJhY2tlbmQgPSAqc2VuZGVyQmFja2VuZDsK
ICAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCB0cmFjay5jb3B5
UmVmKCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIGlm
ICghbV9lbmRwb2ludC0+YWRkVHJhY2soYmFja2VuZCwgdHJhY2ssIFZlY3RvcjxTdHJpbmc+IHsg
fSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmlu
ZGV4IDY4NTBlNmE4NWU5MDI0YmIxMTQ1YjZiOTQyMjljMGY2MTQyZGY3YWEuLjZhZWVhMTMzODky
ZDIwNjNmMDM1MzliOGVlYzRkYjliY2U2NGQ3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJh
bWV0ZXJzJiBwYXJhbWUKIAogc3RkOjp1bmlxdWVfcHRyPFJUQ0RUTUZTZW5kZXJCYWNrZW5kPiBM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRFRNRlNlbmRlckJhY2tlbmQ+KG1fcnRjU2Vu
ZGVyLT5HZXREdG1mU2VuZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ0RU
TUZTZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKaW5kZXggZWI4NzFlYjdkYjAzODg0ZjRjYzdlMGFkZWY2
ODc4MmUxYzA5NzJkNy4uNWMwZDdlOTVlMmZkMTJlM2Y4NGYxN2NmYmViNmQ4NjdhNTFmMmU0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVy
LT5yZWNlaXZlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQ+KG1fcnRjVHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkpOwogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZCYgYmFja2VuZCwgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6U291cmNlJiYgc291cmNlKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+
KGJhY2tlbmQsIG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KGJhY2tlbmQs
IG1fcnRjVHJhbnNjZWl2ZXItPnNlbmRlcigpLCBXVEZNb3ZlKHNvdXJjZSkpOwogfQogCiBSVENS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OmRp
cmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDBjMzI4ZmFlNDQyMzU5OTI1MzMwNzJjODVk
NmIzMmZkYzZjMTM4MzguLjBlYmFmZjg5ZmZiYzUwMDNlMjQ2MWJhZGVlNTIwMzkxMTcxY2JkM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9uCiAg
ICAgLCBtX2JvZHkob3B0aW9ucy5ib2R5KQogICAgICwgbV90YWcob3B0aW9ucy50YWcpCiAgICAg
LCBtX3N0YXRlKElkbGUpCi0gICAgLCBtX3Rhc2tUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVy
PihbdGhpc10gKCkgeyBzaG93KCk7IH0pKQorICAgICwgbV90YXNrVGltZXIobWFrZVVuaXF1ZTxU
aW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKIHsKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5p
c0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBpY29uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwo
b3B0aW9ucy5pY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBhNjIwMzUz
OTNjN2ZiM2Y2ZGRmMDFjNWM4OWQ3NGYzYjVlZGQyZDQ0Li5kNDhmMjA1YTllMjQxNGUwN2Q3MjJm
OTAzMjVhN2MzNjRkNDg5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIGNvbnN0IGNoYXIqIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1l
bnROYW1lKCkKIAogdm9pZCBwcm92aWRlTm90aWZpY2F0aW9uKFBhZ2UqIHBhZ2UsIE5vdGlmaWNh
dGlvbkNsaWVudCogY2xpZW50KQogewotICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OnByb3Zp
ZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6
Om1ha2VfdW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBOb3RpZmljYXRpb25Db250cm9sbGVy
OjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+KGNs
aWVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCmluZGV4IDAzZmU5ZTM4Njc4ZjQwNTA3
MzI1NTA5YzIwMzg2N2M5Y2Y4MjBmZjEuLmM5OGM5OTg2ZGVkNmNkMjA1NDI2MTcyMTVmNjUzNmNl
NThmMjc5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2lu
ZG93UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIERPTVdpbmRvd1F1b3RhKiBET01XaW5kb3dRdW90
YTo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dRdW90YSogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1F1b3RhKj4oU3VwcGxlbWVudDxET01XaW5kb3c+
Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRv
d1F1b3RhPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVl
PERPTVdpbmRvd1F1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDdiYTFkM2Q0
YjM2OTQ0MGM2NGUxN2RkMjBjYTk0NTM4YjhhZDliNzQuLjdhMDgwNDU5NTY5ODNhMzFmNmQ4MzRl
ZjdlYTc3MmZhNjY3MzZhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVv
dGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgTmF2aWdh
dG9yU3RvcmFnZVF1b3RhKiBOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oTmF2aWdhdG9yKiBu
YXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8TmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpm
cm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkg
ewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRv
clN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1l
bnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBz
dXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VR
dW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0
b3JhZ2VRdW90YS5jcHAKaW5kZXggOTVjM2U0MzY0NzMxNjJhNTBkNjFiNWNlNzUxNjVlZTY4YjIx
YjcyNy4uMWExYzg0N2RjNDk3ZGM2NDg0NWY1NmVjZTU5MjYzYTQyNmFmNjMwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVv
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9y
U3RvcmFnZVF1b3RhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdl
UXVvdGEqIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3Iq
CiB7CiAgICAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKj4oU3VwcGxlbWVudDxXb3JrZXJOYXZp
Z2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3Vw
cGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRv
dyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBw
cm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1l
bnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9E
T01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCAzNzk1NjUyNmZiZjI4NjkwZWNm
MDM5OTUyYzUyZjZlMDQ0NmJjYjRjLi45NjljMjM3ZjdjODE1NTE1M2RlMDcxZWM5NmE2MWE0YTQ2
MmQzZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgRE9NV2luZG93
U3BlZWNoU3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20oRE9NV2luZG93
KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93U3BlZWNoU3ludGhlc2lzKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzKj4oU3VwcGxlbWVudDxET01XaW5k
b3c+Ojpmcm9tKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcz4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CiAgICAgICAg
IHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8od2lu
ZG93LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApp
bmRleCA3MmI1NjNlNGJiZjdkY2UwM2ZhMzA4ODBkMmZhNzcwYjg5ODY5M2E0Li5lN2I2MmExYTE3
YmQ5NmE5ZjVhMTNmZDA5ZTc0OWFiNGJjZTE5ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9p
ZCBTcGVlY2hTeW50aGVzaXM6OnZvaWNlc0RpZENoYW5nZSgpCiBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyJiBTcGVlY2hTeW50aGVzaXM6OmVuc3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIo
KQogewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKQotICAgICAgICBtX3Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI+KHRoaXMpOworICAgICAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIg
PSBtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KHRoaXMpOwogICAgIHJldHVy
biAqbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDYyZjY4
ZWM2NjNhODAyMTJjNmYzYWY3Yjg1ZTIzYzZiNGY3NDJhMGEuLjJmNTQyNzJhYzVjMDFkMGEyMzBl
NWMwZGYwNDUyNGFmYjJhNGUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQg
QXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0Rh
dGEsIGZsb2F0IHNhbXBsZVJhCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IGF1dG8gZGVjb2RpbmdUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGluZ1Rhc2s+KFdURk1v
dmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spKTsKKyAgICBhdXRvIGRlY29kaW5nVGFzayA9IG1ha2VVbmlxdWU8
RGVjb2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CiAgICAgbV9xdWV1ZS5hcHBl
bmQoV1RGTW92ZShkZWNvZGluZ1Rhc2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUg
dGFzayBpcyBlZmZlY3RpdmVseSB0YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZS5jcHAKaW5kZXggYmE4YzI1NWFlN2Q3ZGE3M2JjOWZmNjU1NDNmMWUzN2JjOTU0MDRiMy4u
MGZiNTViMDhmMGMxYTJiZTJkMDcwYzRlMGQ4ZDhmNDY3ZTM0NmE3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZS5jcHAKQEAgLTQwLDggKzQwLDggQEAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2EKICAgICA6
IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVU
eXBlQmFzaWNJbnNwZWN0b3IpOwotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVPdXRwdXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3VudCkpOworICAgIGFkZElucHV0KG1ha2VV
bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxB
dWRpb05vZGVPdXRwdXQ+KHRoaXMsIG91dHB1dENoYW5uZWxDb3VudCkpOwogfQogCiAvLyBXZSBv
dmVycmlkZSBwdWxsSW5wdXRzKCkgYXMgYW4gb3B0aW1pemF0aW9uIGFsbG93aW5nIHRoaXMgbm9k
ZSB0byB0YWtlIGFkdmFudGFnZSBvZiBpbi1wbGFjZSBwcm9jZXNzaW5nLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmNwcAppbmRleCBiYzE4OWMwOGNiZWZjN2MxOTYwNjQ2NmMwNzY4YjhmYTYzNGIxNmFiLi4w
YjlmMWNlZDg3NDViNWQ5OThkYzM4ZDYzNmU3OTBhYmZiZTZlOTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmNwcApAQCAtNDIsOCArNDIsOCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewotICAgIGFkZElucHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICAvLyBUaGUgc3ViY2xhc3MgbXVz
dCBjcmVhdGUgbV9wcm9jZXNzb3IuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggNDBhYzMyYzVj
NTVjM2QzMmQwZTE0YjZhN2QyMmIyNDY3MzkwZjRiZi4uMjUxMGM0MGE3ZjYxMjNkNGM3ZmMyZDY0
MGE5MGI0ZjBhOThlNmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZQogICAgIG1fcGxheWJhY2tSYXRlID0gQXVkaW9QYXJhbTo6
Y3JlYXRlKGNvbnRleHQsICJwbGF5YmFja1JhdGUiLCAxLjAsIC1NYXhSYXRlLCBNYXhSYXRlKTsK
IAogICAgIC8vIERlZmF1bHQgdG8gbW9uby4gIEEgY2FsbCB0byBzZXRCdWZmZXIoKSB3aWxsIHNl
dCB0aGUgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscyB0byB0aGF0IG9mIHRoZSBidWZmZXIuCi0g
ICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAK
ICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggOTk1NmMxNTg2MjE4OWM3MTQyOWNiY2ZkNjAwNDJm
MDBjOThiYWVmNi4uZDRjZGI3NjU4YzBmMzViNWZjOWEyMmNlODk4YmNiMmI5OWVlNGRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApA
QCAtMTQwLDcgKzE0MCw3IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBk
b2N1bWVudCkKICAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCiAj
ZW5kaWYKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUo
KnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50
UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVu
dFF1ZXVlPigqdGhpcykpCiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0
IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBuYXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQg
YXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGlu
IGNsZWFyIG1ldGhvZC4KQEAgLTE2Niw3ICsxNjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dAogI2VuZGlmCiAgICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFT
ZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVu
dFF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAs
IG1fZXZlbnRRdWV1ZShtYWtlVW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiB7CiAg
ICAgY29uc3RydWN0Q29tbW9uKCk7CiAKQEAgLTQzMiw3ICs0MzIsNyBAQCBFeGNlcHRpb25PcjxS
ZWY8QXVkaW9CdWZmZXI+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYg
YXJyYXlCdWZmZQogdm9pZCBBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlC
dWZmZXI+JiYgYXVkaW9EYXRhLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNz
Q2FsbGJhY2ssIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCiB7
CiAgICAgaWYgKCFtX2F1ZGlvRGVjb2RlcikKLSAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigpOworICAgICAgICBtX2F1ZGlvRGVjb2Rl
ciA9IG1ha2VVbmlxdWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7CiAgICAgbV9hdWRpb0RlY29kZXIt
PmRlY29kZUFzeW5jKFdURk1vdmUoYXVkaW9EYXRhKSwgc2FtcGxlUmF0ZSgpLCBXVEZNb3ZlKHN1
Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwCmluZGV4IDk3NTg4NzU0NzQ3ZTE1MjQ4MTg5ZjQ5NzBjNmQzM2UzYzZhZTFlMTEuLmQ5YWJi
OTc3N2E5ZDI1ZWVhZjI0MmZmNGZmZmM1ZWM1ZWY0ODZjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhCiAgICAgLCBtX211dGVkKGZh
bHNlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVzdGluYXRpb24pOwotICAgIGFkZElu
cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRJbnB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CiB9CiAKIEF1ZGlvRGVzdGluYXRp
b25Ob2RlOjp+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5kZXggMTYzNzNjZTkzNzhk
MzIyZmRkOWMyNTNmOWM3NmQ5NjNlNjEzY2QzYi4uNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4
YjYzNmFiMmQ3NTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIEJpcXVhZEZpbHRlck5v
ZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmlxdWFkRmlsdGVyKTsKIAogICAgIC8vIElu
aXRpYWxseSBzZXR1cCBhcyBsb3dwYXNzIGZpbHRlci4KLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6
bWFrZV91bmlxdWU8QmlxdWFkUHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBmYWxz
ZSk7CisgICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4
dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2UpOwogfQogCiBCaXF1YWRGaWx0ZXJUeXBlIEJpcXVhZEZp
bHRlck5vZGU6OnR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCmluZGV4IDBlNGUzNjg1YjgyY2U0NzdlYzRlNTg1
NDdmMTZhZDhiNzBmYzc5MDQuLmU4NGI5ODAzNTY3MGZiMWRjYzMyNzA5NjYzZDJiMzkwNTUyZTY1
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFBy
b2Nlc3Nvci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgQmlxdWFkUHJvY2Vzc29yOjp+QmlxdWFkUHJv
Y2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBCaXF1YWRQcm9jZXNz
b3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFk
RFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+
KHRoaXMpOwogfQogCiB2b2lkIEJpcXVhZFByb2Nlc3Nvcjo6Y2hlY2tGb3JEaXJ0eUNvZWZmaWNp
ZW50cygpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1
ZW5jeVJlc3BvbnNlKGludCBuRnJlcXVlbmNpZXMsIGNvbnN0IGZsb2F0KiBmcmVxdWUKICAgICAv
LyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIHRoZSBwcm9jZXNzaW5nIHJ1bm5pbmcgaW4gdGhl
IGF1ZGlvCiAgICAgLy8gdGhyZWFkIG9uIHRoZSBtYWluIGtlcm5lbHMuCiAgICAgCi0gICAgYXV0
byByZXNwb25zZUtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlz
KTsKKyAgICBhdXRvIHJlc3BvbnNlS2VybmVsID0gbWFrZVVuaXF1ZTxCaXF1YWREU1BLZXJuZWw+
KHRoaXMpOwogCiAgICAgcmVzcG9uc2VLZXJuZWwtPmdldEZyZXF1ZW5jeVJlc3BvbnNlKG5GcmVx
dWVuY2llcywgZnJlcXVlbmN5SHosIG1hZ1Jlc3BvbnNlLCBwaGFzZVJlc3BvbnNlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9k
ZS5jcHAKaW5kZXggMjBiOGRhMTllNWY0MzljZmU1NDU1ZjAxZGMyOTA4NzQ0NmIyM2MwOC4uZGY1
MGYyNjg3MzY4YWE1YzMyOTU0MTQ4MTUwNzc3YTAyOTE3MzJkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTU5
LDkgKzU5LDkgQEAgQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW4KIAogICAgIC8vIENyZWF0ZSB0aGUg
cmVxdWVzdGVkIG51bWJlciBvZiBpbnB1dHMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mSW5wdXRzOyArK2kpCi0gICAgICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOwogCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9k
ZS5jcHAKaW5kZXggNDYzNTQ5OGMwMzRjNTkzMGI0ZThmMjIwODZlMTRiMmI0YmQyOTExNy4uODJm
NjlhMDRmOTk5MjYxZDU4YzE1MmJmYzYwMmEzNjYwOTYwOTFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBA
IC01MCwxMSArNTAsMTEgQEAgQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUKIHsKICAgICBzZXROb2Rl
VHlwZShOb2RlVHlwZUNoYW5uZWxTcGxpdHRlcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxB
dWRpb05vZGVJbnB1dD4odGhpcykpOwogCiAgICAgLy8gQ3JlYXRlIGEgZml4ZWQgbnVtYmVyIG9m
IG91dHB1dHMgKGFibGUgdG8gaGFuZGxlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyBm
ZWQgdG8gYW4gaW5wdXQpLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91
dHB1dHM7ICsraSkKLSAgICAgICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CisgICAgICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IDIz
ODJkYWJjYzljOTkyN2NhYzMxZDMyNzVmMjIwM2NjOGY1OGEwOTMuLmUzNjY3N2NmZDc0NWU4YmJl
MDJkYTNkYzRkZDdiYTFmMWE1M2RkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAtNTIsOCArNTIsOCBAQCBDb252b2x2ZXJO
b2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNvbnZvbHZlcik7CiAKLSAgICBhZGRJbnB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0
KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkSW5w
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtl
VW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVjaWZp
YyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CkBAIC0xNDYs
NyArMTQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKEF1
ZGlvQnVmZmVyKiBidWZmZXIpCiAKICAgICAvLyBDcmVhdGUgdGhlIHJldmVyYiB3aXRoIHRoZSBn
aXZlbiBpbXB1bHNlIHJlc3BvbnNlLgogICAgIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMgPSAh
Y29udGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKTsKLSAgICBhdXRvIHJldmVyYiA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1Np
emVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFs
aXplKTsKKyAgICBhdXRvIHJldmVyYiA9IG1ha2VVbmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0
KCksIEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNl
QmFja2dyb3VuZFRocmVhZHMsIG1fbm9ybWFsaXplKTsKIAogICAgIHsKICAgICAgICAgLy8gU3lu
Y2hyb25pemUgd2l0aCBwcm9jZXNzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggNDI2NWEwMDc0OWVhZmZmNmE5ZTFiOWQxZGRhNjBkNGRi
NzAyOGIwMy4uODFiZDdkMTliMjdlNzQxYjUwZjZmODRlNTFmN2NlMjU1NzgwMmI5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcApAQCAtNDEsNyAr
NDEsNyBAQCBpbmxpbmUgRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RAogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURl
bGF5KTsKLSAgICBtX3Byb2Nlc3NvciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlQcm9jZXNzb3I+
KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CisgICAgbV9wcm9jZXNzb3Ig
PSBtYWtlVW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhE
ZWxheVRpbWUpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gRGVsYXlOb2RlOjpj
cmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4
RGVsYXlUaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmNwcAppbmRleCBhNzViYTZiN2M5MmU3NDQ0YzY1NjA4ZThhZTE4ZjlkNTAwMDI2
YTA0Li4xMDM2NmVmNmVhZmI2YzQ0ZGIxOTEyNzFhOTk1ZDllNmQyYWNiYTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBEZWxheVByb2Nlc3Nvcjo6fkRlbGF5UHJvY2Vzc29yKCkKIAogc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWxheURTUEtlcm5lbD4odGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCBhYTBlNGE4MDExOWViZWQ5
ZGQzNjk2YjNmYTEzMDVkZGYzMmJkMDUyLi4xNDA5NmQ4ZjBjNTk2YTUyOTcxNjY2ZWY4MjY3YTAy
M2ZkYjQ0YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgRHluYW1p
Y3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXAKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29t
cHJlc3Nvcik7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0
Pih0aGlzLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOworICAgIGFkZElucHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1
ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIGRlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKSk7
CiAKICAgICBtX3RocmVzaG9sZCA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAidGhyZXNo
b2xkIiwgLTI0LCAtMTAwLCAwKTsKICAgICBtX2tuZWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29u
dGV4dCwgImtuZWUiLCAzMCwgMCwgNDApOwpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGU6OmluaXRpYWxpemUoKQogICAgICAgICByZXR1cm47CiAKICAgICBBdWRp
b05vZGU6OmluaXRpYWxpemUoKTsgICAgCi0gICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPER5bmFtaWNzQ29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgbV9keW5hbWljc0NvbXByZXNzb3IgPSBtYWtlVW5p
cXVlPER5bmFtaWNzQ29tcHJlc3Nvcj4oc2FtcGxlUmF0ZSgpLCBkZWZhdWx0TnVtYmVyT2ZPdXRw
dXRDaGFubmVscyk7CiB9CiAKIHZvaWQgRHluYW1pY3NDb21wcmVzc29yTm9kZTo6dW5pbml0aWFs
aXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKaW5k
ZXggNmM5NGE1MjNjM2IyYTAyMTJiMmE1NGExYTljOGYwMjZiYmQxZGI1Zi4uMjU3ZGYyZWNlMjMz
OGNiY2JhYjllZDA1MTIzM2M2NGIxYzU3ZjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9HYWluTm9kZS5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgR2Fpbk5vZGU6OkdhaW5O
b2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIAogICAgIG1fZ2Fp
biA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZ2FpbiIsIDEuMCwgMC4wLCAxLjApOwog
Ci0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwot
ICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkp
OworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBh
ZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKIAogICAgIGlu
aXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAzODFhZTcy
Nzk0ZmIwZTdmZWE2MzMxYWJkMzNiMjBjMTU4NDVmZjliLi45MTJlNmViMjMyMTQ1NjQzZDZmZGFm
YmMxMWU5Njc2NGMzZDJmNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwKICAgICBzZXROb2RlVHlwZShOb2Rl
VHlwZU1lZGlhRWxlbWVudEF1ZGlvU291cmNlKTsKIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVv
LiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gd2hhdCB0aGUgbWVkaWEgZWxlbWVudCAu
c3JjIGlzIHNldCB0by4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVP
dXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRw
dXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgZmxvYXQgc291cmMKIAogICAgICAgICBpZiAoc291cmNlU2FtcGxlUmF0ZSAh
PSBzYW1wbGVSYXRlKCkpIHsKICAgICAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJj
ZVNhbXBsZVJhdGUgLyBzYW1wbGVSYXRlKCk7Ci0gICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJl
c2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZh
Y3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2Ft
cGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVt
YmVyT2ZDaGFubmVscyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBCeXBhc3Mg
cmVzYW1wbGluZy4KICAgICAgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggNWIyYTUwMGRkMjk0ZDEwNTU4YmM3
YTA4Y2Y3NzE2ZTQyNmI1YzJhYy4uZTQzZjU0NDhiYzI2Yjg2YWY2OTNkMDA5OTk1YzY3MzRmNjk1
NWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgTWUKICAgICBhdWRpb1NvdXJjZVByb3ZpZGVyLT5zZXRDbGllbnQo
dGhpcyk7CiAgICAgCiAgICAgLy8gRGVmYXVsdCB0byBzdGVyZW8uIFRoaXMgY291bGQgY2hhbmdl
IGRlcGVuZGluZyBvbiB0aGUgZm9ybWF0IG9mIHRoZSBNZWRpYVN0cmVhbSdzIGF1ZGlvIHRyYWNr
LgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MikpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikp
OwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZs
b2F0IHNvdXJjZQogICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3RvciA9IHNvdXJjZVNhbXBsZVJhdGUg
LyBzYW1wbGVSYXRlOwotICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFu
bmVscyk7CisgICAgICAgIG1fbXVsdGlDaGFubmVsUmVzYW1wbGVyID0gbWFrZVVuaXF1ZTxNdWx0
aUNoYW5uZWxSZXNhbXBsZXI+KHNjYWxlRmFjdG9yLCBudW1iZXJPZkNoYW5uZWxzKTsKICAgICB9
CiAKICAgICBtX3NvdXJjZU51bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApp
bmRleCA1YjUwMjliZmJjZTc3YWQ1YjZjM2M4ODMyNjBkYjlkZWZkZjYxMDRiLi5hOTljZWFhZDZi
NWMyMWUwOWRkMjI1M2MyYWNmMzA0NTU0NzUzZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBP
c2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQogICAgIHNldFR5cGUobV90eXBlKTsKIAogICAgIC8vIEFuIG9zY2lsbGF0
b3IgaXMgYWx3YXlzIG1vbm8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBmNjQ3NDY5ZTIzNTVl
YjNhMGMwOWIzYjA4NTJiZmJlYzZlNDhkMjhkLi41MWM2OTkxNmZmZGU3MGY1ZTY4MGFhOTI3Y2Vm
ZWY3Y2E3MzJjM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAKQEAgLTU4LDggKzU4LDggQEAgUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgLy8gTG9hZCB0aGUgSFJU
RiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9jayB0aGUgSmF2YXNjcmlw
dCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2UuCiAgICAgbV9ocnRmRGF0
YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFuZExvYWRBc3luY2hyb25v
dXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKIAotICAgIGFkZElucHV0KHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRJbnB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICAvLyBOb2RlLXNwZWNpZmljIGRl
ZmF1bHQgbWl4aW5nIHJ1bGVzLgogICAgIG1fY2hhbm5lbENvdW50ID0gMjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcAppbmRleCBiYjJhMDdk
MjM1NGViYWY5NGQwMDQ2NWE0YjQxZDg2MDU1NTk5ODZiLi5lYzlhMTdjNGY1NmViOTk2NmRjMTc2
MjdlOTM0MDViYTFmZDQ4YzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QZXJpb2RpY1dhdmUuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBQZXJpb2RpY1dh
dmU6OmNyZWF0ZUJhbmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiByZWFsRGF0YSwgY29uc3Qg
ZmxvYXQqIGkKICAgICAgICAgcmVhbFBbMF0gPSAwOwogCiAgICAgICAgIC8vIENyZWF0ZSB0aGUg
YmFuZC1saW1pdGVkIHRhYmxlLgotICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7Cisg
ICAgICAgIG1fYmFuZExpbWl0ZWRUYWJsZXMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFy
cmF5PihtX3BlcmlvZGljV2F2ZVNpemUpKTsKIAogICAgICAgICAvLyBBcHBseSBhbiBpbnZlcnNl
IEZGVCB0byBnZW5lcmF0ZSB0aGUgdGltZS1kb21haW4gdGFibGUgZGF0YS4KICAgICAgICAgZmxv
YXQqIGRhdGEgPSBtX2JhbmRMaW1pdGVkVGFibGVzW3JhbmdlSW5kZXhdLT5kYXRhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNw
cAppbmRleCAzYjYyODFkMWU4NDNlZDI5OWNmNjE1M2M3MzI3OTcwNzQxODA2Nzc4Li44MDIzNzM0
MDdmNzVkNDdlMjU5ZWI2MDU2MzgwZjYzNWYxM2FjZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgUmVhbHRpbWVBbmFseXNlcjo6UmVhbHRpbWVBbmFseXNlcigpCiAgICAgLCBtX21pbkRl
Y2liZWxzKERlZmF1bHRNaW5EZWNpYmVscykKICAgICAsIG1fbWF4RGVjaWJlbHMoRGVmYXVsdE1h
eERlY2liZWxzKQogewotICAgIG1fYW5hbHlzaXNGcmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZU
RnJhbWU+KERlZmF1bHRGRlRTaXplKTsKKyAgICBtX2FuYWx5c2lzRnJhbWUgPSBtYWtlVW5pcXVl
PEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CiB9CiAKIFJlYWx0aW1lQW5hbHlzZXI6On5SZWFs
dGltZUFuYWx5c2VyKCkgPSBkZWZhdWx0OwpAQCAtODMsNyArODMsNyBAQCBib29sIFJlYWx0aW1l
QW5hbHlzZXI6OnNldEZmdFNpemUoc2l6ZV90IHNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmIChtX2ZmdFNpemUgIT0gc2l6ZSkgewotICAgICAgICBtX2FuYWx5c2lzRnJhbWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihzaXplKTsKKyAgICAgICAgbV9hbmFseXNpc0Zy
YW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7CiAgICAgICAgIC8vIG1fbWFnbml0dWRl
QnVmZmVyIGhhcyBzaXplID0gZmZ0U2l6ZSAvIDIgYmVjYXVzZSBpdCBjb250YWlucyBmbG9hdHMg
cmVkdWNlZCBmcm9tIGNvbXBsZXggdmFsdWVzIGluIG1fYW5hbHlzaXNGcmFtZS4KICAgICAgICAg
bV9tYWduaXR1ZGVCdWZmZXIuYWxsb2NhdGUoc2l6ZSAvIDIpOwogICAgICAgICBtX2ZmdFNpemUg
PSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2Ny
aXB0UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggZDU5ZGVjZjk5NTE2ZjZkMDFhZjljMWQ5ZmRiZjFk
MGIxMDE5ZTQwZi4uZDViM2FmYmYyNzEwMTQ1MTQ5NGIxODkzNzc2OGI2MDVmNmEzYjQ3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwCkBAIC02OCw4ICs2OCw4IEBAIFNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlw
dFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiAg
ICAgQVNTRVJUKG51bWJlck9mSW5wdXRDaGFubmVscyA8PSBBdWRpb0NvbnRleHQ6Om1heE51bWJl
ck9mQ2hhbm5lbHMoKSk7CiAKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUphdmFTY3JpcHQpOwot
ICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAg
ICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlu
cHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0
aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BL
ZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcAppbmRleCA0MTBkMWRhZjVjODk1NDAwOWZmMDYzNmE4MjkwMGJmOTRhZjRmOGYx
Li5mM2QyMTIyZGY1MWM0ZjFhMjkyMjRlNjkzYWI0OTViYmMyYjkzOGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5j
cHAKQEAgLTQ5LDEyICs0OSwxMiBAQCB2b2lkIFdhdmVTaGFwZXJEU1BLZXJuZWw6OmxhenlJbml0
aWFsaXplT3ZlcnNhbXBsaW5nKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAg
aWYgKCFtX3RlbXBCdWZmZXIpIHsKLSAgICAgICAgbV90ZW1wQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV90
ZW1wQnVmZmVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdR
dWFudHVtICogNCk7Ci0gICAgICAgIG1fdXBTYW1wbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0pOwotICAgICAgICBtX2Rvd25TYW1wbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxEb3duU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOwotICAgICAgICBt
X3VwU2FtcGxlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1
bSAqIDIpOwotICAgICAgICBtX2Rvd25TYW1wbGVyMiA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNh
bXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiA0KTsKKyAgICAgICAgbV90ZW1wQnVmZmVyID0gbWFr
ZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAg
bV90ZW1wQnVmZmVyMiA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFu
dHVtICogNCk7CisgICAgICAgIG1fdXBTYW1wbGVyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJl
bmRlcmluZ1F1YW50dW0pOworICAgICAgICBtX2Rvd25TYW1wbGVyID0gbWFrZVVuaXF1ZTxEb3du
U2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX3VwU2FtcGxlcjIgPSBt
YWtlVW5pcXVlPFVwU2FtcGxlcj4oUmVuZGVyaW5nUXVhbnR1bSAqIDIpOworICAgICAgICBtX2Rv
d25TYW1wbGVyMiA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiA0
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggODQ4Njk5M2YyMTA4NGNjYzYxY2NkODBiMmMxODdlMDhj
MTU1ZmQwMS4uNmU3ZThkZDFjOWMxOWZhM2M4NWUzZDlkODU1YWI5ZjQ1Nzg1Yjc5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgV2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNv
bnRleHQuc2FtcGxlUmF0ZSgpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBl
cik7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNz
b3I+KGNvbnRleHQuc2FtcGxlUmF0ZSgpLCAxKTsKKyAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlx
dWU8V2F2ZVNoYXBlclByb2Nlc3Nvcj4oY29udGV4dC5zYW1wbGVSYXRlKCksIDEpOwogCiAgICAg
aW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKaW5kZXggMjg5YzM5ZjVmM2Y5ZjdhNzllOWE1
YjZhNmQ4MzE1YjU5MWY0MzJkYS4uYmZlNWUwZTQ3ZmI4NGEyOGM2M2M2ZTI4YjMyZTBmYzExZTVj
NjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdhdmVTaGFwZXJQcm9jZXNz
b3I6On5XYXZlU2hhcGVyUHJvY2Vzc29yKCkKIAogc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2Vy
bmVsPiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFdhdmVTaGFwZXJEU1BLZXJuZWw+KHRoaXMpOwogfQogCiB2b2lkIFdhdmVTaGFw
ZXJQcm9jZXNzb3I6OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcApp
bmRleCA4YzNkMTM0NmM0MDMwY2ZiM2Q4Mjc3MzdhMGExNWYzZjFjYjliYWQ3Li4xYjkxMmQ5OGQ5
ZjA0ZjMwNzRhMWI4ZTFhNjI2MDFhNDJmYWYzNTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKQEAgLTE1MCw5
ICsxNTAsOSBAQCBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UodWludDMyX3QgY2hhbm5l
bElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZCB0eXBlLCBjbwogICAgIHVpbnQ4X3Qgc2VxdWVuY2Ug
PSAwOwogCiAgICAgc2l6ZV90IHBvcyA9IGRhdGEuc2l6ZSgpID4ga0hpZEluaXRQYWNrZXREYXRh
U2l6ZSA/IGtIaWRJbml0UGFja2V0RGF0YVNpemUgOiBkYXRhLnNpemUoKTsKLSAgICBtX3BhY2tl
dHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwg
dHlwZSwgZ2V0SW5pdFBhY2tldERhdGEoZGF0YSksIGRhdGEuc2l6ZSgpKSk7CisgICAgbV9wYWNr
ZXRzLmFwcGVuZChtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUs
IGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBkYXRhLnNpemUoKSkpOwogICAgIGZvciAoOyBwb3Mg
PCBkYXRhLnNpemUoKTsgcG9zICs9IGtIaWRDb250aW51YXRpb25QYWNrZXREYXRhU2l6ZSkKLSAg
ICAgICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRp
b25QYWNrZXQ+KGNoYW5uZWxJZCwgc2VxdWVuY2UrKywgZ2V0Q29udGludWF0aW9uUGFja2V0RGF0
YShkYXRhLCBwb3MpKSk7CisgICAgICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRv
SGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRpbnVh
dGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOwogfQogCiBGaWRvSGlkTWVzc2FnZTo6Rmlkb0hp
ZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBpbml0UGFja2V0LCBz
aXplX3QgcmVtYWluaW5nU2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAppbmRleCA1NWI3YjJkNzE1MzZhMjM1NDkx
M2FlMzZlOWZiOTFlZjAwYThmMDgzLi4yNmI4MGFhOGE1ZjEzOTYzYzc2OGU3ZTkyM2JiYWFiMmI4
N2I1ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0hpZFBhY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0ZpZG9IaWRQYWNrZXQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxG
aWRvSGlkSW5pdFBhY2tldD4gRmlkb0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVk
RGF0YShjCiAgICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CiAgICAgZGF0YS5hcHBl
bmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNvbW1hbmQsIFdU
Rk1vdmUoZGF0YSksIHBheWxvYWRTaXplKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRvSGlk
SW5pdFBhY2tldD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6
ZSk7CiB9CiAKIC8vIFUyRiBJbml0aWFsaXphdGlvbiBwYWNrZXQgaXMgZGVmaW5lZCBhczoKQEAg
LTEyMyw3ICsxMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tl
dD4gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbQogICAgIGF1dG8gZGF0YSA9
IFZlY3Rvcjx1aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSAr
IGluZGV4LCBkYXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlk
Q29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVs
SWQsIHNlcXVlbmNlLCBXVEZNb3ZlKGRhdGEpKTsKIH0KIAogLy8gVTJGIENvbnRpbnVhdGlvbiBw
YWNrZXQgaXMgZGVmaW5lZCBhczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggMDIxNDVkMGNjMmU4YzllYWRiMGM4ODI5NDFiODU5ZmMw
YWU4MDUyZC4uNWI2NGEwODc0NmFmODA4MGNkMmU3MjUwM2ZhMDBkM2M5NDlmYjAwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTI1
MCw3ICsyNTAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZl
cnNpb24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXN1
bHQ7Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9wZW5UYXNrPigq
dGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKKyAg
ICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3BlblRhc2s+KCp0aGlzLCBzZXRWZXJz
aW9uSW5OZXdEYXRhYmFzZSwgc3luY2hyb25pemVyLCByZXN1bHQpOwogICAgIHRocmVhZC5zY2hl
ZHVsZUltbWVkaWF0ZVRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAgc3luY2hyb25pemVyLndhaXRG
b3JUYXNrQ29tcGxldGlvbigpOwogCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEYXRhYmFzZTo6
Y2xvc2UoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyZWFkLnNjaGVkdWxlSW1t
ZWRpYXRlVGFzayhzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlQ2xvc2VUYXNrPigqdGhpcywgc3lu
Y2hyb25pemVyKSk7CisgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhtYWtlVW5pcXVl
PERhdGFiYXNlQ2xvc2VUYXNrPigqdGhpcywgc3luY2hyb25pemVyKSk7CiAKICAgICAvLyBGSVhN
RTogaU9TIGRlcGVuZHMgb24gdGhpcyBmdW5jdGlvbiBibG9ja2luZyB1bnRpbCB0aGUgZGF0YWJh
c2UgaXMgY2xvc2VkIGFzIHBhcnQKICAgICAvLyBvZiBjbG9zaW5nIGFsbCBvcGVuIGRhdGFiYXNl
cyBmcm9tIGEgcHJvY2VzcyBhc3NlcnRpb24gZXhwaXJhdGlvbiBoYW5kbGVyLgpAQCAtNTMyLDcg
KzUzMiw3IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgIG1fdHJh
bnNhY3Rpb25JblByb2dyZXNzID0gdHJ1ZTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3Ry
YW5zYWN0aW9uUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3Vu
aXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oV1RGTW92ZSh0cmFuc2FjdGlvbikpOworICAg
IGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1vdmUo
dHJhbnNhY3Rpb24pKTsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VU
cmFuc2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0YXNr
LT50cmFuc2FjdGlvbigpKTsKICAgICBkYXRhYmFzZVRocmVhZCgpLnNjaGVkdWxlVGFzayhXVEZN
b3ZlKHRhc2spKTsKIH0KQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVs
ZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgYXV0
byYgdGhyZWFkID0gZGF0YWJhc2VUaHJlYWQoKTsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CisgICAgYXV0
byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4oJnRyYW5zYWN0aW9u
KTsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRh
c2sgJXAgZm9yIHRoZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKICAgICB0aHJl
YWQuc2NoZWR1bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQpAQCAtNzYzLDcgKzc2Myw3IEBAIFZl
Y3RvcjxTdHJpbmc+IERhdGFiYXNlOjp0YWJsZU5hbWVzKCkKICAgICBpZiAodGhyZWFkLnRlcm1p
bmF0aW9uUmVxdWVzdGVkKCZzeW5jaHJvbml6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
Ci0gICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRhYmxlTmFtZXNUYXNr
PigqdGhpcywgc3luY2hyb25pemVyLCByZXN1bHQpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlx
dWU8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsK
ICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwogICAgIHN5
bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCAzYmFi
ZDQ5NTY2ZjE0YTFiM2MwZDNiMTdiZjRjN2YzMmM1ZTNkNWY3Li5kNjQ5N2MzOTdmYTQ3NDI4NTll
MDU4NjIyMzZlZGVlNDNkNGVmMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBEYXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQoKQotICAg
IDogbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8U1FMVHJhbnNhY3Rp
b25Db29yZGluYXRvcj4oKSkKKyAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihtYWtlVW5p
cXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCiB7CiAgICAgbV9zZWxmUmVmID0gdGhp
czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcAppbmRleCBkOGRkY2M1OTg1NTE1NzZkMmEyYzEwZjQyZTRhZDEyYTgy
NTliNTE5Li5jMjhhOTZmNDU4MzllZjU0ZGFmMWY5OWExYWQ1OGQ3ZWNkNGE2NzU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNr
ZXIuY3BwCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5E
YXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgTG9ja0hvbGRlciBvcGVuRGF0YWJhc2VN
YXBMb2NrKG1fb3BlbkRhdGFiYXNlTWFwR3VhcmQpOwogCiAgICAgaWYgKCFtX29wZW5EYXRhYmFz
ZU1hcCkKLSAgICAgICAgbV9vcGVuRGF0YWJhc2VNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFi
YXNlT3JpZ2luTWFwPigpOworICAgICAgICBtX29wZW5EYXRhYmFzZU1hcCA9IG1ha2VVbmlxdWU8
RGF0YWJhc2VPcmlnaW5NYXA+KCk7CiAKICAgICBhdXRvIG9yaWdpbiA9IGRhdGFiYXNlLnNlY3Vy
aXR5T3JpZ2luKCk7CiAKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6
cmVjb3JkQ3JlYXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwg
YwogICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9pZCBtYWtp
bmcgYW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAgYXV0byog
bmFtZVNldCA9IG1fYmVpbmdDcmVhdGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFtZVNldCkg
ewotICAgICAgICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoQ291bnRlZFNl
dDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxIYXNoQ291
bnRlZFNldDxTdHJpbmc+PigpOwogICAgICAgICBuYW1lU2V0ID0gb3duZWRTZXQuZ2V0KCk7CiAg
ICAgICAgIG1fYmVpbmdDcmVhdGVkLmFkZChvcmlnaW4uaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUo
b3duZWRTZXQpKTsKICAgICB9CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIERhdGFiYXNlVHJh
Y2tlcjo6cmVjb3JkRGVsZXRpbmdEYXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9y
aWdpbiwgYwogICAgIC8vIFdlIGRvbid0IHVzZSBIYXNoTWFwOjplbnN1cmUgaGVyZSB0byBhdm9p
ZCBtYWtpbmcgYW4gaXNvbGF0ZWQgY29weSBvZiB0aGUgb3JpZ2luIGV2ZXJ5IHRpbWUuCiAgICAg
YXV0byogbmFtZVNldCA9IG1fYmVpbmdEZWxldGVkLmdldChvcmlnaW4pOwogICAgIGlmICghbmFt
ZVNldCkgewotICAgICAgICBhdXRvIG93bmVkU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0
PFN0cmluZz4+KCk7CisgICAgICAgIGF1dG8gb3duZWRTZXQgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8
U3RyaW5nPj4oKTsKICAgICAgICAgbmFtZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBt
X2JlaW5nRGVsZXRlZC5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCAyMGQ2OTczNDc3NGRiZmJmMzBiZDhmMzljZTRjNTk1
NzIxNGU5MDBjLi40Y2IwNDFlNDUyYzgwZjVmNTliYjI3MjFlYWI4ZWMxYThmNjE4MzY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmNwcApAQCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2FjdGlv
bjo6ZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYQogICAgIGVs
c2UgaWYgKG1fcmVhZE9ubHkpCiAgICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0aG9y
aXplcjo6UmVhZE9ubHlNYXNrOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFs
dWVPcihWZWN0b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNh
bGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5p
cXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFs
dWVPcihWZWN0b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNh
bGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7CiAKICAgICBpZiAobV9kYXRhYmFzZS0+ZGVsZXRl
ZCgpKQogICAgICAgICBzdGF0ZW1lbnQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKCk7CkBAIC0y
MzQsNyArMjM0LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJl
ZmxpZ2h0KCkKICAgICB9CiAKICAgICBBU1NFUlQoIW1fc3FsaXRlVHJhbnNhY3Rpb24pOwotICAg
IG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9u
PihtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLCBtX3JlYWRPbmx5KTsKKyAgICBtX3NxbGl0
ZVRyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+
c3FsaXRlRGF0YWJhc2UoKSwgbV9yZWFkT25seSk7CiAKICAgICBtX2RhdGFiYXNlLT5yZXNldERl
bGV0ZXMoKTsKICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5j
cHAKaW5kZXggNzlhYTU2MTgxZmZlZjNhYjFhOTJhYTU3ZmVjZGI2ZmJhNTllNmYwYi4uMTI5ZDg2
ZmZjZmJkMTU3YTgwYjAxOTJlM2I0OTk3MTMzYmViNzgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCkBAIC01
Niw3ICs1Niw3IEBAIE5hdmlnYXRvcldlYkRyaXZlciogTmF2aWdhdG9yV2ViRHJpdmVyOjpmcm9t
KE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvcldlYkRyaXZlciogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvcldlYkRyaXZlcio+KFN1cHBsZW1lbnQ8TmF2aWdh
dG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBs
ZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxO
YXZpZ2F0b3JXZWJEcml2ZXI+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VV
bmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKaW5kZXggODhhOTc4MDQ0YmMxZTcwODkz
MzU2NWRjNjJkMGEzMTQ2YjM4YjQyNi4uMzc2ZDE1NWNhOWIyZjVkMmE0YWIxODUyYzc3NmQ5YzE4
ZjJlNTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdh
dG9yR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JH
UFUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIE5hdmlnYXRvckdQVSogTmF2aWdhdG9yR1BVOjpmcm9t
KE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9
IHN0YXRpY19jYXN0PE5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShu
YXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAg
ICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JHUFU+
KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR1BV
PigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAg
cHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVt
ZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAppbmRl
eCAxYjM0MjUwNGQ2OTU1MDhmMDgxNmNjYjU1ODJmNWJkOWFhNzYxYTZiLi41ZjU3ZWYxMTc3NTMx
YTBhYzNkOTYwZGViMWQ0Mzg3MTFhNGYwNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlv
bkRlZmluaXRpb24uaApAQCAtNjMsNyArNjMsNyBAQCBjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRp
b24gZmluYWwgOiBwdWJsaWMgTmFtZWRUeXBlIHsKIAogICAgIGJvb2wgYWRkKEVudW1lcmF0aW9u
TWVtYmVyJiYgbWVtYmVyKQogICAgIHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMu
YWRkKG1lbWJlci5uYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8RW51bWVyYXRpb25NZW1iZXI+KFdU
Rk1vdmUobWVtYmVyKSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWVtYmVycy5hZGQobWVt
YmVyLm5hbWUoKSwgbWFrZVVuaXF1ZTxFbnVtZXJhdGlvbk1lbWJlcj4oV1RGTW92ZShtZW1iZXIp
KSk7CiAgICAgICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxl
RGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaAppbmRleCAzZDAyODEzYTY0NzM2ODMxNzRiMzIzOTdm
NGI4N2ZhNDM3ZGZmNzRlLi5mYTg2NTUxZTM4ZDI0OTBmYjQwYTZlYzI4MDA1YTQ3MTFlZTAzMGNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCkBAIC02NSw3ICs2NSw3IEBA
IGNsYXNzIFZhcmlhYmxlRGVjbGFyYXRpb24gZmluYWwgewogICAgICAgICAsIG1fbmFtZShXVEZN
b3ZlKG5hbWUpKQogICAgIHsKICAgICAgICAgaWYgKHNlbWFudGljIHx8ICFxdWFsaWZpZXJzLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJhcmVE
YXRhPihXVEZNb3ZlKHF1YWxpZmllcnMpLCBXVEZNb3ZlKHNlbWFudGljKSk7CisgICAgICAgICAg
ICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oV1RGTW92ZShxdWFsaWZpZXJzKSwg
V1RGTW92ZShzZW1hbnRpYykpOwogICAgIH0KIAogICAgIH5WYXJpYWJsZURlY2xhcmF0aW9uKCkg
PSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAppbmRleCBlNTAwZjYx
MTVmYTA4YWY0ZTRkMzdjNmVkZjM0YzEyNGQ5ZDJkMGNjLi5kYWI2MDJlY2E4MGI3YzA3NTk2YTcx
Y2UzOTlmN2ZiMjdhNmYxN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcApA
QCAtNzQ4LDkgKzc0OCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+
IFJlbmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50CiAgICAgICAgIHJldHVy
biB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICB9OwogICAgIGlmICgmZnVu
Y3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy52ZXJ0ZXhTaGFkZXIpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4o
ZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRT
ZW1hbnRpY3MudmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3Mu
dmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlcnRleEVudHJ5UG9pbnRTY2FmZm9sZGluZz4o
ZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRT
ZW1hbnRpY3MudmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3Mu
dmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZh
cmlhYmxlTmFtZSksIG1fbWF0Y2hlZFNlbWFudGljcy5tYXRjaGVkVmVydGV4QXR0cmlidXRlcyk7
CiAgICAgaWYgKCZmdW5jdGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdt
ZW50U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGcmFnbWVudEVudHJ5
UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlw
ZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMs
IG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwg
V1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0
Y2hlZENvbG9yQXR0YWNobWVudHMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGcmFnbWVu
dEVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3Ms
IG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50
SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCBtX2xh
eW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRp
Y3MubWF0Y2hlZENvbG9yQXR0YWNobWVudHMpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBA
IC03NzQsNyArNzc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5UG9pbnRTY2FmZm9sZGluZz4g
Q29tcHV0ZUZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW4KICAgICAgICAgcmV0dXJu
IHRoaXMtPmdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSgpOwogICAgIH07CiAgICAgaWYgKCZmdW5j
dGlvbkRlZmluaXRpb24gPT0gbV9tYXRjaGVkU2VtYW50aWNzLnNoYWRlcikKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rp
b25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRp
Y3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5
b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDb21wdXRlRW50cnlQb2ludFNjYWZmb2xkaW5nPihmdW5jdGlvbkRlZmluaXRp
b24sIG1faW50cmluc2ljcywgbV90eXBlTmFtZXIsIG1fbWF0Y2hlZFNlbWFudGljcy5lbnRyeVBv
aW50SXRlbXMsIG1fbWF0Y2hlZFNlbWFudGljcy5yZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1v
dmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMVHlwZU5hbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01l
dGFsL1dITFNMVHlwZU5hbWVyLmNwcAppbmRleCAxODViYTBiMDg4YTVjZWQ0YzViNjYzNmZhOTQ0
MmMwMDM0MGRkMDJhLi40MGI2MmMzN2RiZTI1ODBlMjNkNTkwYzA5MWViYjQxN2NhOWI4MDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TFR5cGVOYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCkBAIC0yNzIsMTkgKzI3MiwxOSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QmFzZVR5cGVOYW1lTm9kZT4gVHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZShBU1Q6OlVu
bmFtZWRUeXBlJiB1bgogICAgIHN3aXRjaCAodW5uYW1lZFR5cGUua2luZCgpKSB7CiAgICAgY2Fz
ZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpUeXBlUmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8m
IHR5cGVSZWZlcmVuY2UgPSBkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBl
KTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVmZXJlbmNlVHlwZU5hbWVOb2Rl
PihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRU
eXBlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWZlcmVuY2VUeXBlTmFtZU5vZGU+
KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5
cGUoKSk7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6UG9pbnRlcjog
ewogICAgICAgICBhdXRvJiBwb2ludGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+
KHVubmFtZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5
cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBwb2ludGVyVHlwZS5h
ZGRyZXNzU3BhY2UoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBvaW50ZXJUeXBlTmFt
ZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVz
c1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5
UmVmZXJlbmNlOiB7CiAgICAgICAgIGF1dG8mIGFycmF5UmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0
PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVy
YXRlTmV4dFR5cGVOYW1lKCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEFycmF5UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJl
bnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5UmVmZXJlbmNlVHlwZS5hZGRyZXNzU3Bh
Y2UoKSk7CiAgICAgfQogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6QXJyYXk6IHsK
ICAgICAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFt
ZWRUeXBlKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlTmFtZU5v
ZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRz
KCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50
LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CiAgICAg
fQogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2Vy
LmNwcAppbmRleCA5MDFjNjEwMjAzZWVmZjQ2OTA1YThkNmFmMzQ0ODBiOTQ0NTA1YzAyLi4zZGVj
MDYzMDNjYTc5NTY0OWNmODdhNGY1MzAwNzZkNzdiOGQ4OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTk3MCwx
NCArOTcwLDE0IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
JiB2YXJpYWJsZURlY2xhcmF0aW9uKQogCiB2b2lkIENoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlw
ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZjxBU1Q6OlVubmFtZWRUeXBlPiB1bm5h
bWVkVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRW
YWx1ZSgpKQogewotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lv
biwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkp
OworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVu
aXF1ZTxSZXNvbHZpbmdUeXBlPihXVEZNb3ZlKHVubmFtZWRUeXBlKSkpOwogICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgZXhwcmVzc2lvbi5z
ZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CiB9CiAKIHZvaWQgQ2hl
Y2tlcjo6YXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNv
bHZhYmxlVHlwZVJlZmVyZW5jZT4gcmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UsIEFTVDo6VHlwZUFu
bm90YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8
UmVzb2x2aW5nVHlwZT4oV1RGTW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKKyAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVz
b2x2aW5nVHlwZT4oV1RGTW92ZShyZXNvbHZhYmxlVHlwZVJlZmVyZW5jZSkpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJlc3Np
b24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwogfQpAQCAtOTg1
LDEwICs5ODUsMTAgQEAgdm9pZCBDaGVja2VyOjphc3NpZ25UeXBlKEFTVDo6RXhwcmVzc2lvbiYg
ZXhwcmVzc2lvbiwgUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXIKIHZvaWQgQ2hlY2tlcjo6Zm9y
d2FyZFR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZXNvbHZpbmdUeXBlJiByZXNv
bHZpbmdUeXBlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdo
dFZhbHVlKCkpCiB7CiAgICAgcmVzb2x2aW5nVHlwZS52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShSZWY8QVNUOjpVbm5hbWVkVHlwZT4mIHJlc3VsdCkgewotICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5n
VHlwZT4ocmVzdWx0LmNvcHlSZWYoKSkpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlw
ZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4ocmVzdWx0LmNv
cHlSZWYoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwogICAgIH0sIFsmXShSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiBy
ZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNz
aW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsK
KyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtl
VW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9KSk7CiAgICAg
ZXhwcmVzc2lvbi5zZXRUeXBlQW5ub3RhdGlvbihXVEZNb3ZlKHR5cGVBbm5vdGF0aW9uKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5j
cHAKaW5kZXggMDE2MTE0YTYxMGUxMTAwZWZlNjk3MmNhMmEyMzUzMjdjMTUyZTdhYi4uNWU0OWYw
M2EzYjM4MjZkMWZlN2NiM2E1NTg3OTY3NjY1NzY5ZmJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApAQCAtNzQwLDE5ICs3
NDAsMTkgQEAgYXV0byBQYXJzZXI6OnBhcnNlU2VtYW50aWMoKSAtPiBFeHBlY3RlZDxzdGQ6OnVu
aXF1ZV9wdHI8QVNUOjpTZW1hbnRpYz4sIEVycm9yPgogICAgIHN3aXRjaCAodG9rZW4tPnR5cGUp
IHsKICAgICBjYXNlIFRva2VuOjpUeXBlOjpBdHRyaWJ1dGU6IHsKICAgICAgICAgUEFSU0UocmVz
dWx0LCBTdGFnZUluT3V0U2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5p
cXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7
IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAg
ICAgY2FzZSBUb2tlbjo6VHlwZTo6U3BlY2lhbGl6ZWQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3Vs
dCwgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3Rk
OjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAg
ICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07
CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlJlZ2lzdGVyOiAgewogICAgICAgICBQQVJT
RShyZXN1bHQsIFJlc291cmNlU2VtYW50aWMpOwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2Vf
dW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVy
biB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9
CiAgICAgZGVmYXVsdDogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBCdWlsdEluU2VtYW50aWMp
OwotICAgICAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1v
dmUoKnJlc3VsdCkpIH07CisgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWU8QVNUOjpTZW1hbnRp
Yz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKaW5kZXggYmY5
MGY2YzM2MDU0OGQ1MmM4ZmQ4ZWVlYzc1M2M3OGQ4ZmE5YmYxYy4uZDk1MjIzMDVhZGExZWU5NzFm
MTY1MjhkZTA2NjA0YmI2YTk2YjBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFdvcmtl
ck5hdmlnYXRvckdQVSogV29ya2VyTmF2aWdhdG9yR1BVOjpmcm9tKFdvcmtlck5hdmlnYXRvciog
bmF2aWdhdG9yKQogewogICAgIFdvcmtlck5hdmlnYXRvckdQVSogc3VwcGxlbWVudCA9IHN0YXRp
Y19jYXN0PFdvcmtlck5hdmlnYXRvckdQVSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9yPjo6
ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJO
YXZpZ2F0b3JHUFU+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8
V29ya2VyTmF2aWdhdG9yR1BVPigpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVu
dC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCBlZDVhM2NjODM0ZmUxOWQ0ODg4
Yjg1NTUwNGJhMTU1ZDQ4M2ZjNDA3Li5jMWJhYzg2ZDNhYjJiMGQ5MTNmY2U3NDIxNDMxYTk0NDU5
ZWVkMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpjbGVhckNsaWVudCgpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KCkKIHsKLSAgICBtX3BlbmRpbmdU
YXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZENvbm5lY3QoKTsKICAgICB9KSk7CkBAIC0xNjQsNyAr
MTY0LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZENvbm5lY3QoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2UgPSBt
ZXNzYWdlLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVz
c2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZSht
ZXNzYWdlKTsKICAgICB9KSk7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWUKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGJpbmFyeURhdGEpCiB7Ci0gICAg
bV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYmluYXJ5
RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0
YWJsZSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
YmluYXJ5RGF0YSA9IFdURk1vdmUoYmluYXJ5RGF0YSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICB9KSk7CkBA
IC0xODYsNyArMTg2LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFZlY3Rvcjx1aW50OF8KIAogdm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50
KHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50KQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJ1ZmZlcmVkQW1vdW50XSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudChidWZmZXJlZEFtb3VudCk7CiAgICAgfSkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZm
ZXJlZEFtb3VudCh1bnNpZ25lZCBiCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogewotICAgIG1fcGVuZGlu
Z1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQp
CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CiAgICAg
fSkpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogCiB2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hh
a2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBz
aG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiA9IHJlYXNvbi5pc29s
YXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFz
a3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQs
IGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0
ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZm
ZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7CiAg
ICAgICAgIH0pKTsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UodW5zaWduZWQgdW5oYW5kbGVkQnVmZmVyZQog
CiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2
ZU1lc3NhZ2VFcnJvcigpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7CiAgICAgfSkpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHZv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVz
c2FnZUVycm9yKCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFVwZ3JhZGVVUkwoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1f
cGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkVXBncmFkZVVSTCgpOwogICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2MDcxNDQwOTI0
ZmIyY2U2N2Y1MzQwNjJkNzllOGUzYjA0ZWUxYzUwLi5hMDdhODc2M2FmYjk2OWI0MjA3MGJjNDlh
ODYyMzliNzgzZDZlYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFdlYlNvY2tl
dENoYW5uZWw6OkNvbm5lY3RTdGF0dXMgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBV
UkwmIHJlcXVlc3RlZFVSCiAgICAgbV9hbGxvd0Nvb2tpZXMgPSB2YWxpZGF0ZWRVUkwtPmFyZUNv
b2tpZXNBbGxvd2VkOwogICAgIFN0cmluZyB1c2VyQWdlbnQgPSBtX2RvY3VtZW50LT51c2VyQWdl
bnQobV9kb2N1bWVudC0+dXJsKCkpOwogICAgIFN0cmluZyBjbGllbnRPcmlnaW4gPSBtX2RvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCk7Ci0gICAgbV9oYW5kc2hha2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3Rv
Y29sLCB1c2VyQWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOworICAgIG1faGFu
ZHNoYWtlID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJs
LCBwcm90b2NvbCwgdXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29raWVzKTsKICAg
ICBtX2hhbmRzaGFrZS0+cmVzZXQoKTsKICAgICBpZiAobV9kZWZsYXRlRnJhbWVyLmNhbkRlZmxh
dGUoKSkKICAgICAgICAgbV9oYW5kc2hha2UtPmFkZEV4dGVuc2lvblByb2Nlc3NvcihtX2RlZmxh
dGVGcmFtZXIuY3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkpOwpAQCAtNzAzLDcgKzcwMyw3IEBA
IGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZW5xdWV1ZVRleHRGcmFtZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgQVNT
RVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4p
OwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAg
IGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENv
ZGUgPSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlVGV4dDsKICAgICBmcmFtZS0+ZnJhbWVUeXBlID0g
UXVldWVkRnJhbWVUeXBlU3RyaW5nOwogICAgIGZyYW1lLT5zdHJpbmdEYXRhID0gc3RyaW5nOwpA
QCAtNzEzLDcgKzcxMyw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVRleHRGcmFt
ZShjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVS
YXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3Rh
dHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1
ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBvcENvZGU7CiAgICAgZnJhbWUtPmZy
YW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlwZVZlY3RvcjsKICAgICBmcmFtZS0+dmVjdG9yRGF0YS5y
ZXNpemUoZGF0YUxlbmd0aCk7CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjplbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0
IGNoYXIKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlIG9wQ29kZSwgQmxvYiYgYmxvYikKIHsKICAgICBBU1NFUlQobV9vdXRnb2lu
Z0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgYXV0byBm
cmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkRnJhbWU+KCk7CisgICAgYXV0byBmcmFtZSA9
IG1ha2VVbmlxdWU8UXVldWVkRnJhbWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsK
ICAgICBmcmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBlQmxvYjsKICAgICBmcmFtZS0+
YmxvYkRhdGEgPSAmYmxvYjsKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKQogICAgICAgICAgICAgICAgIHJlZigpOyAv
LyBXaWxsIGJlIGRlcmVmZWQgYWZ0ZXIgZGlkRmluaXNoTG9hZGluZygpIG9yIGRpZEZhaWwoKS4K
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYmxvYkxvYWRlcik7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGZyYW1lLT5ibG9iRGF0YSk7Ci0gICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFk
QXNBcnJheUJ1ZmZlciwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gbWFr
ZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJheUJ1
ZmZlciwgdGhpcyk7CiAgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyU3RhdHVzID0gQmxvYkxv
YWRlclN0YXJ0ZWQ7CiAgICAgICAgICAgICAgICAgbV9ibG9iTG9hZGVyLT5zdGFydChtX2RvY3Vt
ZW50LmdldCgpLCAqZnJhbWUtPmJsb2JEYXRhKTsKICAgICAgICAgICAgICAgICBtX291dGdvaW5n
RnJhbWVRdWV1ZS5wcmVwZW5kKFdURk1vdmUoZnJhbWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNw
cAppbmRleCBmMmZhNjIwOWMwNDhmNTE1MThhMjVlZWMxM2FlZjI1NjRjOWY0ZTdiLi5lZTMzZWEw
ZmU1Y2YxZDViZjc5YTJkYTA2NzA3YjczY2QzYTc4YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIu
Y3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6V2ViU29ja2V0
RGVmbGF0ZUZyYW1lcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3I+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4dGVuc2lvblByb2Nlc3Nvcigp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0
ZUZyYW1lPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRFeHRlbnNpb25E
ZWZsYXRlRnJhbWU+KHRoaXMpOwogfQogCiBib29sIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNh
bkRlZmxhdGUoKSBjb25zdApAQCAtMTcwLDggKzE3MCw4IEBAIGJvb2wgV2ViU29ja2V0RGVmbGF0
ZUZyYW1lcjo6Y2FuRGVmbGF0ZSgpIGNvbnN0CiAjaWYgVVNFKFpMSUIpCiB2b2lkIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERl
ZmxhdGVyOjpDb250ZXh0VGFrZU92ZXJNb2RlIG1vZGUpCiB7Ci0gICAgbV9kZWZsYXRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViU29ja2V0RGVmbGF0ZXI+KHdpbmRvd0JpdHMsIG1vZGUpOwotICAg
IG1faW5mbGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldEluZmxhdGVyPigpOworICAg
IG1fZGVmbGF0ZXIgPSBtYWtlVW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5kb3dCaXRzLCBt
b2RlKTsKKyAgICBtX2luZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4oKTsK
ICAgICBpZiAoIW1fZGVmbGF0ZXItPmluaXRpYWxpemUoKSB8fCAhbV9pbmZsYXRlci0+aW5pdGlh
bGl6ZSgpKSB7CiAgICAgICAgIG1fZGVmbGF0ZXIgPSBudWxscHRyOwogICAgICAgICBtX2luZmxh
dGVyID0gbnVsbHB0cjsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIFdlYlNvY2tldERlZmxhdGVG
cmFtZXI6OmVuYWJsZURlZmxhdGUoaW50IHdpbmRvd0JpdHMsIFdlYlNvY2tldERlZmxhdGVyOjpD
bwogc3RkOjp1bmlxdWVfcHRyPERlZmxhdGVSZXN1bHRIb2xkZXI+IFdlYlNvY2tldERlZmxhdGVG
cmFtZXI6OmRlZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1lKQogewogI2lmIFVTRShaTElCKQot
ICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0
aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4o
dGhpcyk7CiAgICAgaWYgKCFlbmFibGVkKCkgfHwgIVdlYlNvY2tldEZyYW1lOjppc05vbkNvbnRy
b2xPcENvZGUoZnJhbWUub3BDb2RlKSB8fCAhZnJhbWUucGF5bG9hZExlbmd0aCkKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICBpZiAoIW1fZGVmbGF0ZXItPmFkZEJ5dGVzKGZyYW1lLnBheWxv
YWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpIHx8ICFtX2RlZmxhdGVyLT5maW5pc2goKSkgewpAQCAt
MTk2LDcgKzE5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJT
b2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyCiAgICAgZnJhbWUucGF5bG9h
ZExlbmd0aCA9IG1fZGVmbGF0ZXItPnNpemUoKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWZsYXRlUmVzdWx0SG9sZGVyPih0aGlzKTsKICNlbmRp
ZgogfQogCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpy
ZXNldERlZmxhdGVDb250ZXh0KCkKIAogc3RkOjp1bmlxdWVfcHRyPEluZmxhdGVSZXN1bHRIb2xk
ZXI+IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmluZmxhdGUoV2ViU29ja2V0RnJhbWUmIGZyYW1l
KQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbmZsYXRlUmVzdWx0SG9s
ZGVyPih0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW5mbGF0ZVJlc3VsdEhv
bGRlcj4odGhpcyk7CiAgICAgaWYgKCFlbmFibGVkKCkgJiYgZnJhbWUuY29tcHJlc3MpIHsKICAg
ICAgICAgcmVzdWx0LT5mYWlsKCJDb21wcmVzc2VkIGJpdCBtdXN0IGJlIDAgaWYgbm8gbmVnb3Rp
YXRlZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRE
ZWZsYXRlci5jcHAKaW5kZXggMWQ2ZjE3ODIyYzgwNTI4MWI3MGE0MTYyMGRjZGVlNmFkMmFiODg5
Yy4uNGE0ODY1Zjg0OTRkMDYxM2VhYzMyMWE1OTRmOGJhZTE5OTk2YmIzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIFdlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXREZWZsYXRl
cihpbnQgd2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSBjb250ZXh0CiB7CiAgICAgQVNT
RVJUKG1fd2luZG93Qml0cyA+PSA4KTsKICAgICBBU1NFUlQobV93aW5kb3dCaXRzIDw9IDE1KTsK
LSAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8el9zdHJlYW0+KCk7CisgICAgbV9zdHJl
YW0gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx6X3N0cmVhbT4oKTsKICAgICBt
ZW1zZXQobV9zdHJlYW0uZ2V0KCksIDAsIHNpemVvZih6X3N0cmVhbSkpOwogfQogCkBAIC0xMjQs
NyArMTI0LDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlcjo6cmVzZXQoKQogV2ViU29ja2V0SW5m
bGF0ZXI6OldlYlNvY2tldEluZmxhdGVyKGludCB3aW5kb3dCaXRzKQogICAgIDogbV93aW5kb3dC
aXRzKHdpbmRvd0JpdHMpCiB7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3Ry
ZWFtPigpOworICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8
el9zdHJlYW0+KCk7CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJl
YW0pKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggOTk0MDczZWFhNWU4YjIzMGQxYzhiMDBjMTZjNTk2NDNlOTc4NDI2OC4uZGM2ZjY2MGZkMzg4
Y2VmZmFmMGViZWY2ZTY2MGU2YjY5NWJiNjMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZShTY3JpcHRF
eGVjdXQKIAogICAgIGJvb2wgc2VudCA9IGxvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoewogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpD
bGVhbnVwVGFzaywKLSAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlS
ZWYoKSwgJmxvYWRlclByb3h5LCBwZWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQZWVyPihjbGllbnRX
cmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3Zl
KHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewor
ICAgICAgICBbY2xpZW50V3JhcHBlciA9IGNsaWVudFdyYXBwZXIuY29weVJlZigpLCAmbG9hZGVy
UHJveHksIHBlZXIgPSBtYWtlVW5pcXVlPFBlZXI+KGNsaWVudFdyYXBwZXIuY29weVJlZigpLCBs
b2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUsIFdURk1vdmUocHJvdmlkZXIpKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAg
ICAgIGlmIChjbGllbnRXcmFwcGVyLT5mYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKSkg
ewogICAgICAgICAgICAgICAgIC8vIElmIEJyaWRnZTo6aW5pdGlhbGl6ZSgpIHF1aXR0ZWQgZWFy
bGllciwgd2UgbmVlZCB0byBraWNrIG1haW5UaHJlYWREZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBw
ZWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JX
ZWJWUi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNw
cAppbmRleCBkOTdiNWMyYTg1YTlkMjMyOGY5ODQwZjQ0ZDNkMWU5NjMyYzgyZDllLi43NzZjNDNh
ZWMwYjliNWJkZWFkYzNkZDg5MTI2YWNlZDZiYTc1MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcApAQCAtOTQsNyArOTQsNyBAQCBOYXZp
Z2F0b3JXZWJWUiogTmF2aWdhdG9yV2ViVlI6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7
CiAgICAgTmF2aWdhdG9yV2ViVlIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JX
ZWJWUio+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVt
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKKyAgICAgICAgYXV0byBu
ZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JXZWJWUj4oKTsKICAgICAgICAgc3Vw
cGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0
b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGln
ZXN0T3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0RpZ2VzdE9wZW5TU0wuY3BwCmluZGV4IGJjMjNkNTljYzMxMjM3YjE0OTdhNzZhY2M1OWQz
ZWFmNWQyYjU4NDAuLjZjYTY3ZjM5MWEzMWZjZDM4NjkyNTViMjFmMmZjYjdmM2ZiZjliYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGln
ZXN0T3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNz
bC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcApAQCAtNzksNyArNzksNyBAQCBzdHJ1Y3QgQ3J5cHRv
RGlnZXN0Q29udGV4dEltcGwgOiBwdWJsaWMgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CiAKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IGNyZWF0ZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9EaWdlc3RDb250ZXh0SW1w
bD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw+
KCk7CiAgICAgfQogCiAgICAgQ3J5cHRvRGlnZXN0Q29udGV4dEltcGwoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKaW5kZXggMzE1MzE2ODA4MDdi
NzJkNWVmOTM4MDkxNGU3YWUyNDBhZDlkMDM5Ny4uZTUzZTE5NWIzNWY0OThmNzk1MjUxNTFlYmMy
YWNlYjVmYWZjZDI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0v
Q2xvY2tHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9j
a0dlbmVyaWMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBQQUwgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8Q2xvY2s+IENsb2NrOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENsb2NrR2VuZXJpYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDbG9ja0dlbmVy
aWM+KCk7CiB9CiAKIENsb2NrR2VuZXJpYzo6Q2xvY2tHZW5lcmljKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW0KaW5kZXggYzY4OTMyMTVmMDZiMGM2NzRk
NTQ2MDgzM2IxYTRkNTFjYzMyYjYxNC4uOWUwNzFiNzgxNGU0NGZlMDA0NDJlNjZjNzIwYjJiZmIz
MTMwNjlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Ns
b2NrQ00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00u
bW0KQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIGNvbnN0IGludDMyX3QgRGVmYXVsdFRpbWVTY2Fs
ZSA9IDEwMDA7CiAKIHN0ZDo6dW5pcXVlX3B0cjxDbG9jaz4gQ2xvY2s6OmNyZWF0ZSgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2xvY2tDTT4oKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDbG9ja0NNPigpOwogfQogCiBDbG9ja0NNOjpDbG9ja0NNKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGNhY2FiODU2OGM4NjEx
MmQ5Y2RmZWZjMzA5MDI2YWQ5YzgxNTMzZTUuLmIzNWZjMTU2NDM3ZjFjYTA5ZDY0MjJiZDU5Yzcx
MzNmYWMyYzYwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcApAQCAtMTU3NSw3ICsxNTc1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNv
bXB1dGVJc0lnbm9yZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHZvaWQgQVhPYmplY3RDYWNo
ZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcygp
CiB7CiAgICAgaWYgKCFtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUpCi0gICAgICAgIG1f
Y29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8QVhDb21wdXRl
ZE9iamVjdEF0dHJpYnV0ZUNhY2hlPigpOworICAgICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmli
dXRlQ2FjaGUgPSBtYWtlVW5pcXVlPEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsK
IH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmli
dXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IGVk
ZmRiYjBhMDZmZDZlZGEyNTA0OGI5NzE5YjllZjFiYTllMTM0NDMuLmU2ZGVhOTYxMWY5YjQ4ODBh
NWExOWI5YWQxZTFiZGU3MWMxODQ3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJB
bmltYXRpb24uY3BwCkBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnVwZGF0
ZUZpbmlzaGVkU3RhdGUoRGlkU2VlayBkaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90aWZ5IHN5bmMK
ICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgc3luY2hyb25vdXNseSBub3RpZnkgaXMgZmFs
c2UsIHF1ZXVlIGEgbWljcm90YXNrIHRvIHJ1biBmaW5pc2ggbm90aWZpY2F0aW9uIHN0ZXBzIGZv
ciBhbmltYXRpb24gdW5sZXNzIHRoZXJlCiAgICAgICAgICAgICAvLyBpcyBhbHJlYWR5IGEgbWlj
cm90YXNrIHF1ZXVlZCB0byBydW4gdGhvc2Ugc3RlcHMgZm9yIGFuaW1hdGlvbi4KICAgICAgICAg
ICAgIG1fZmluaXNoTm90aWZpY2F0aW9uU3RlcHNNaWNyb3Rhc2tQZW5kaW5nID0gdHJ1ZTsKLSAg
ICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVl
KCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChtX2ZpbmlzaE5vdGlm
aWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZykgewogICAgICAgICAgICAgICAgICAgICBtX2Zp
bmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IGZhbHNlOwogICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hOb3RpZmljYXRpb25TdGVwcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZGIwYzFkYzc2ZjhhMjg5NzA0
NWVlMmNmYzkxOTIzZDU4ZGYxYjZmOS4uYzVjNDcwNjFiZmFjYTFmY2E3MjhiZTI3YjBhMmI0YTlm
MGIzMDI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3QsIFJlZjxKU0M6Ok1pY3IKICAgICBK
U0RPTVdpbmRvd0Jhc2UmIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2Um
PihvYmplY3QpOwogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNy
ZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0
ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVl
OjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1p
Y3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KE1pY3JvdGFz
a1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKnRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9tLmNwcAppbmRleCA2Mjk1ZjU4NGNmZThhMTcy
OWRkZjZiMThkNzc1NDlmZDQ0YzlhMGJlLi5kYjVlNzczNDkwYmVkZmJmM2UwYzEwY2YyM2QwYTM2
YzhhM2JkYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIEV2ZW50VGFyZ2V0KiBKU0V2ZW50
VGFyZ2V0Ojp0b1dyYXBwZWQoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogc3RkOjp1bmlxdWVfcHRy
PEpTRXZlbnRUYXJnZXRXcmFwcGVyPiBqc0V2ZW50VGFyZ2V0Q2FzdChWTSYgdm0sIEpTVmFsdWUg
dGhpc1ZhbHVlKQogewogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBqc0R5bmFtaWNDYXN0PEpTRXZl
bnRUYXJnZXQqPih2bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3JhcHBlZCgpLCAqdGFyZ2V0KTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHRhcmdldC0+d3Jh
cHBlZCgpLCAqdGFyZ2V0KTsKICAgICBpZiAoYXV0byogd2luZG93ID0gdG9KU0RPTVdpbmRvdyh2
bSwgdGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SlNFdmVudFRh
cmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2luZG93KTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHdpbmRvdy0+d3JhcHBlZCgpLCAqd2lu
ZG93KTsKICAgICBpZiAoYXV0byogc2NvcGUgPSB0b0pTV29ya2VyR2xvYmFsU2NvcGUodm0sIHRo
aXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRX
cmFwcGVyPihzY29wZS0+d3JhcHBlZCgpLCAqc2NvcGUpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCmluZGV4IGQ4MzE2MDRjYmFlYjg3ZjA3
ZDEyZWFkZGE0YmYwNTMxYTcwYmI0MDIuLjliZDY2NDQ2MDE3MDU0OTVhOTRlN2IzZmFkZjA0OGYz
YzdiMDQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEpTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2Jq
ZWN0LCBSZWY8SgogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNy
ZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBhdXRvJiBjb250ZXh0ID0gdGhp
c09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihjb250ZXh0Lm1pY3JvdGFza1F1ZXVlKCksIGNv
bnRleHQsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgIGF1
dG8gbWljcm90YXNrID0gbWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29u
dGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKaW5kZXggMTE0ZmYzYzhhNWRmMDM5MDI4M2IxYTY3Y2U2MDhkN2Y0MjQ2ZTdjMi4uMzVj
Y2Q0OTYzNWUwNjExOTRlOTcyOTNlNzEyZjdhYTM3MmM0OWJjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0zMzAw
LDcgKzMzMDAsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4+IHRyYW5zZmVyQXJyYXlCdWZmZQogICAgIGlmIChhcnJheUJ1ZmZl
cnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gY29udGVu
dHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZm
ZXJzLnNpemUoKSk7CisgICAgYXV0byBjb250ZW50cyA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PihhcnJheUJ1ZmZlcnMuc2l6ZSgpKTsKIAogICAgIEhhc2hTZXQ8SlNDOjpB
cnJheUJ1ZmZlcio+IHZpc2l0ZWQ7CiAgICAgZm9yIChzaXplX3QgYXJyYXlCdWZmZXJJbmRleCA9
IDA7IGFycmF5QnVmZmVySW5kZXggPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBhcnJheUJ1ZmZlcklu
ZGV4KyspIHsKQEAgLTM0NTEsNyArMzQ1MSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUmCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdhc21Nb2R1bGVBcnJheSB3YXNtTW9kdWxlczsK
ICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNo
YXJlZEJ1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4o
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRC
dWZmZXJzID0gbWFrZVVuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CiAgICAgYXV0
byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJnN0YXRlLCB2YWx1ZSwgbWVzc2Fn
ZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGltYWdlQml0bWFwcywKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiAgICAgICAgIHdhc21Nb2R1bGVzLCAKQEAgLTM0NjksNyArMzQ2OSw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShFeGVjU3RhdGUmCiAKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iVVJMcywgYXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRpb25Db250ZXh0
OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBudWxscHRyLCBX
VEZNb3ZlKGltYWdlQnVmZmVycykKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgICAg
ICAgICAgLCBzdGQ6Om1ha2VfdW5pcXVlPFdhc21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMpCisg
ICAgICAgICAgICAgICAgLCBtYWtlVW5pcXVlPFdhc21Nb2R1bGVBcnJheT4od2FzbU1vZHVsZXMp
CiAjZW5kaWYKICAgICAgICAgICAgICAgICApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNWM0NjYyOTRiZWU1NmMy
MWJmMGY2M2QxNWIwZjhkZjBmMjdhM2EwZS4uNGY0YjBjZjNiN2VlY2RkZDA3ODcwMjU1MjA4ODk1
ZTQ1ZmEyYTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQoYXJyYXlMZW5ndGgpOwogCi0g
ICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4oKTsKKyAgICBhdXRvIGFycmF5QnVmZmVyQ29udGVudHNBcnJh
eSA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIHdoaWxlIChh
cnJheUxlbmd0aC0tKSB7CiAgICAgICAgIHVuc2lnbmVkIGJ1ZmZlclNpemU7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyU2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCmluZGV4IDI0NmY2NGE5ZjYzMjJiNTg3
MGNiYjY4MmVkYjJkNGVkYjk1M2VjN2MuLjNiMTEyNTJhZTY0Y2FmMmU0ZmU3MzllMzFlZTEwOTk1
NGQ1NmE1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVK
U0NsaWVudERhdGEuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgSlNWTUNsaWVudERhdGE6Omlu
aXROb3JtYWxXb3JsZChWTSogdm0pCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEgPSBu
ZXcgSlNWTUNsaWVudERhdGEoKnZtKTsKICAgICB2bS0+Y2xpZW50RGF0YSA9IGNsaWVudERhdGE7
IC8vIH5WTSBkZWxldGVzIHRoaXMgcG9pbnRlci4KICAgICAKLSAgICB2bS0+aGVhcC5hZGRNYXJr
aW5nQ29uc3RyYWludChzdGQ6Om1ha2VfdW5pcXVlPERPTUdDT3V0cHV0Q29uc3RyYWludD4oKnZt
LCAqY2xpZW50RGF0YSkpOworICAgIHZtLT5oZWFwLmFkZE1hcmtpbmdDb25zdHJhaW50KG1ha2VV
bmlxdWU8RE9NR0NPdXRwdXRDb25zdHJhaW50Pigqdm0sICpjbGllbnREYXRhKSk7CiAgICAgICAg
IAogICAgIGNsaWVudERhdGEtPm1fbm9ybWFsV29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmNyZWF0
ZSgqdm0sIHRydWUpOwogICAgIHZtLT5tX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYo
bmV3IFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTZhNzZj
NDk1MjlhNGJiODcxY2I2NmNhM2FkNzVhMmQ3NmE4MDY1NS4uZDIzOTg1N2FhM2JkZGU5ZmViOWNi
ODc0MGZjZjVkNjQ5ZTM1MGRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lk
IFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKQogICAgIEFTU0VSVChtX3dvcmtl
ckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBl
ci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2VyR2xvYmFsU2NvcGUpOworICAgIG1f
Y29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2VyQ29uc29sZUNsaWVudD4oKm1fd29ya2Vy
R2xvYmFsU2NvcGUpOwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5zZXRDb25zb2xl
Q2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19j
bGFzcy5jcHAKaW5kZXggMjljODE4NjgzNmVhMDU0MTFlOGYxZWQ2NDFjMDU3MGNlODE3NjgxNS4u
YWE1NmUyZmRlODU1NzdhY2Y5YzA0NzRjODk4NzdmNGUwZDVjNTEwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19jbGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvY19jbGFzcy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgTWV0aG9kKiBDQ2xhc3M6Om1ldGhv
ZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29u
c3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFu
Y2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwog
ICAgIGlmIChtX2lzYS0+aGFzTWV0aG9kICYmIG1faXNhLT5oYXNNZXRob2Qob2JqLCBpZGVudCkp
IHsKLSAgICAgICAgYXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5pcXVlPENNZXRob2Q+KGlkZW50
KTsKKyAgICAgICAgYXV0byBtZXRob2QgPSBtYWtlVW5pcXVlPENNZXRob2Q+KGlkZW50KTsKICAg
ICAgICAgQ01ldGhvZCogcmV0ID0gbWV0aG9kLmdldCgpOwogICAgICAgICBtX21ldGhvZHMuc2V0
KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICByZXR1cm4gcmV0OwpAQCAt
MTAzLDcgKzEwMyw3IEBAIEZpZWxkKiBDQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogICAgIGNvbnN0IENJbnN0YW5j
ZSogaW5zdCA9IHN0YXRpY19jYXN0PGNvbnN0IENJbnN0YW5jZSo+KGluc3RhbmNlKTsKICAgICBO
UE9iamVjdCogb2JqID0gaW5zdC0+Z2V0T2JqZWN0KCk7CiAgICAgaWYgKG1faXNhLT5oYXNQcm9w
ZXJ0eSAmJiBtX2lzYS0+aGFzUHJvcGVydHkob2JqLCBpZGVudCkpIHsKLSAgICAgICAgYXV0byBm
aWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0ZpZWxkPihpZGVudCk7CisgICAgICAgIGF1dG8gZmll
bGQgPSBtYWtlVW5pcXVlPENGaWVsZD4oaWRlbnQpOwogICAgICAgICBDRmllbGQqIHJldCA9IGZp
ZWxkLmdldCgpOwogICAgICAgICBtX2ZpZWxkcy5zZXQobmFtZS5pbXBsKCksIFdURk1vdmUoZmll
bGQpKTsKICAgICAgICAgcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfY2xhc3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X2NsYXNzLm1tCmluZGV4IGI4NmY3NTFhMGE3MTM4YmUwMDc3NmE3OGNiYzJhNmQ0NWRkMzc1MDIu
LmEzZDhkMzJmMjhkZDgwNThhNGFiNDQyNzM5NTM0NDA3NGYyNmM3NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIE1ldGhvZCog
T2JqY0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5j
ZSopIGNvbnN0CiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9IFt0aGlzQ2xhc3Mgd2ViU2Ny
aXB0TmFtZUZvclNlbGVjdG9yOm9iamNNZXRob2RTZWxlY3Rvcl07CiAKICAgICAgICAgICAgIGlm
ICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyop
bWV0aG9kTmFtZS5nZXQoKV0pIHx8ICFzdHJjbXAob2JqY01ldGhvZFNlbGVjdG9yTmFtZSwgYnVm
ZmVyLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpOworICAgICAg
ICAgICAgICAgIGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxPYmpjTWV0aG9kPih0aGlzQ2xhc3Ms
IG9iamNNZXRob2RTZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAgbWV0aG9kUHRyID0gbWV0aG9k
LmdldCgpOwogICAgICAgICAgICAgICAgIG1fbWV0aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBX
VEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTg5LDcgKzE4OSw3
IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSA9
IFt0aGlzQ2xhc3Mgd2ViU2NyaXB0TmFtZUZvcktleTpVVEY4S2V5TmFtZV07CiAKICAgICAgICAg
ICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0
cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8IFtrZXlOYW1lIGlzRXF1YWw6KF9fYnJpZGdlIE5T
U3RyaW5nICopZmllbGROYW1lLmdldCgpXSkgewotICAgICAgICAgICAgICAgIGF1dG8gbmV3Rmll
bGQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtl
eU5hbWUpOworICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNG
aWVsZD4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKWtleU5hbWUpOwogICAgICAgICAgICAgICAgIGZp
ZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgbV9maWVsZENhY2hlLmFkZChu
YW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVsZCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjIwLDcgKzIyMCw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFtZWQoUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zCiAgICAgICAgICAgICAg
ICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JLZXk6b2JqY0l2
YXJOYW1lXTsKIAogICAgICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBbbWFwcGVkTmFt
ZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHx8ICFzdHJj
bXAob2JqY0l2YXJOYW1lLCBqc05hbWUuZGF0YSgpKSkgewotICAgICAgICAgICAgICAgICAgICBh
dXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjRmllbGQ+KG9iamNJVmFyKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IG1ha2VVbmlxdWU8T2JqY0ZpZWxkPihv
YmpjSVZhcik7CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gbmV3RmllbGQuZ2V0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUo
bmV3RmllbGQpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggZTA4YjA0OGUzYjU2ODQyOThjZGVmZDkz
ZWI5MTg4Mzg5MTU2ZjQzOC4uM2I5M2UxODc4Mzg1NGMyNDQ0NmUxY2ZhNTc1ODQ2NmYwZjBhN2Y0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAtMjY3
LDcgKzI2Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpD
RmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIGlmIChbdGFyZ2V0T2Jq
ZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJv
bVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xh
c3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2Qoc3RkOjpt
YWtlX3VuaXF1ZTxPYmpjTWV0aG9kPihvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tl
VW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9kKG1ha2VVbmlxdWU8T2Jq
Y01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhv
ZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYg
bmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmplY3RJbXAqPihleGVj
LT5qc0NhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CiAgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5z
ZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZh
bGxiYWNrTWV0aG9kLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCmluZGV4IDgzZDQ0ZTA2N2ZiZGY1NDdm
NmM4OGI2N2EzNmViNTNmNjkxNDY2ZWUuLmYxNzFhNTgyMDNmOThhZjE1NTQ3ODBlMDUxOWUwNGEx
ZTUzYTBiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bWJpbmVkVVJMRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQ29tYmlu
ZWRVUkxGaWx0ZXJzOjpwcmludCgpIGNvbnN0CiAjZW5kaWYKIAogQ29tYmluZWRVUkxGaWx0ZXJz
OjpDb21iaW5lZFVSTEZpbHRlcnMoKQotICAgIDogbV9wcmVmaXhUcmVlUm9vdChzdGQ6Om1ha2Vf
dW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkpCisgICAgOiBtX3ByZWZpeFRyZWVSb290KG1ha2VV
bmlxdWU8UHJlZml4VHJlZVZlcnRleD4oKSkKIHsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIHZv
aWQgQ29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25z
dCBWZWN0b3I8VGVybT4mIHBhdHRlCiAgICAgICAgIGlmIChuZXh0RW50cnlJbmRleCAhPSBXVEY6
Om5vdEZvdW5kKQogICAgICAgICAgICAgbGFzdFByZWZpeFRyZWUgPSBsYXN0UHJlZml4VHJlZS0+
ZWRnZXNbbmV4dEVudHJ5SW5kZXhdLmNoaWxkLmdldCgpOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJlZUVkZ2Uoe21fYWxw
aGFiZXQuaW50ZXJuZWQodGVybSksIHN0ZDo6bWFrZV91bmlxdWU8UHJlZml4VHJlZVZlcnRleD4o
KX0pKTsKKyAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5hcHBlbmQoUHJlZml4VHJl
ZUVkZ2Uoe21fYWxwaGFiZXQuaW50ZXJuZWQodGVybSksIG1ha2VVbmlxdWU8UHJlZml4VHJlZVZl
cnRleD4oKX0pKTsKICAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUt
PmVkZ2VzLmxhc3QoKS5jaGlsZC5nZXQoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKaW5kZXggOTZlMmQ2MzRiODkzYjM5OTMwNGE4YjJiMjg1
ZTYxZjRlNDY5ZGMwYy4uYjJhOWE3ODM1MjI3NzI4M2Y5NWQ4NDlkMDNiMTU2ZmNkYzcyMWRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKQEAgLTExNSwzMSArMTE1LDMx
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpEZWNyeXB0
OgogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNToKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4o
cGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlJTQV9PQUVQOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXM+KHN0YXRlLCB2YWx1ZS5n
ZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihw
YXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0JDOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkFFU19DRkI6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29u
dmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihzdGF0ZSwgdmFs
dWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbXMpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNDYmNDZmJQ
YXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6IHsKICAgICAgICAgICAgIGF1
dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1z
PihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihw
YXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1B
ZXNDdHJQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006IHsKICAgICAgICAg
ICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzR2Nt
UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFy
YW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1BZXNHY21QYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBkZWZhdWx0OgpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNy
eXB0b0FsCiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgotICAgICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6RUNEU0E6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rp
b25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CkBA
IC0xNjAsMTMgKzE2MCwxMyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAg
aWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMu
aGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQ
YXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0Fs
Z29yaXRobUVjZHNhUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bVJzYVBzc1BhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJz
YVBzc1BhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8yNTY6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsK
QEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6IHsKICAgICAgICAg
ICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5
R2VuUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5
R2VuUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlw
dG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNT
QV9QS0NTMV92MV81OgpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0Fs
CiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAg
ICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1
bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEtleUdlblBhcmFtcz4ocGFy
YW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjoKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBu
b3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OkFFU19LVzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxD
cnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlw
dG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6SE1BQzogewpAQCAtMjIzLDE0ICsyMjMsMTQgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRv
QWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
ICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJl
dHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkVDRFNBOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVD
REg6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRv
QWxnb3JpdGhtRWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRp
YyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+
IG5vcm1hbGl6ZUNyeXB0b0FsCiAKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERp
Y3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcz4oc3RhdGUsIG5ld1Zh
bHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7
IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJp
dmVQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhLREY6IHsKQEAgLTI1OSw3ICsyNTks
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlm
aWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIg
PSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFt
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UEJLREYyOiB7CkBAIC0yNjksNyArMjY5LDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5o
YXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVs
ZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFz
aElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1z
PihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVs
dDoKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2Ug
T3BlcmF0aW9uczo6SW1wb3J0S2V5OgogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNToK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQVNTQV9QS0NTMV92MV81OgogICAg
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9QU1M6CkBAIC0yOTAsNyAr
MjkwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRl
bnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50
aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlm
aWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
Q1RSOgpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0dDTToKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOgogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OkhNQUM6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8
Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKQEAgLTMw
NywxOSArMzA3LDE5IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAo
aGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhh
c2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNo
SWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFy
YW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBh
dXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1z
PihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBh
cmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVj
S2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOgogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFy
YW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC0zMjksNyArMzI5LDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OlVud3JhcEtl
eToKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OkFFU19LVzoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC0zNDQsNyArMzQ0LDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25h
cnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdF
eGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkhNQUM6IHsKQEAgLTM1NCwxMiArMzU0LDEyIEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNy
eXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsK
ICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxD
cnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0
ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpIS0RGOgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlBCS0RGMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yIH07CkBAIC01MjAsMTYgKzUyMCwxNiBAQCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyb3NzVGhyZWFkQ29weUltcG9ydFBhcmFt
cyhjbwogewogICAgIHN3aXRjaCAoaW1wb3J0UGFyYW1zLnBhcmFtZXRlcnNDbGFzcygpKSB7CiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6Tm9uZTogewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4oKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+KCk7CiAgICAgICAgIHJlc3VsdC0+aWRlbnRpZmllciA9IGltcG9ydFBhcmFtcy5p
ZGVudGlmaWVyOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpFY0tleVBhcmFtczoKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFk
Q29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4o
Y3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihpbXBv
cnRQYXJhbXMpKSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6
SG1hY0tleVBhcmFtczoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxn
b3JpdGhtSG1hY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobUhtYWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25j
YXN0PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM6OkNsYXNzOjpSc2FIYXNoZWRJbXBvcnRQYXJh
bXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhh
c2hlZEltcG9ydFBhcmFtcz4oY3Jvc3NUaHJlYWRDb3B5KGRvd25jYXN0PENyeXB0b0FsZ29yaXRo
bVJzYUhhc2hlZEltcG9ydFBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhy
ZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGlt
cG9ydFBhcmFtcykpKTsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAKaW5kZXggZGJjY2M5MDBmMzM3NDhjZDIwNjdmNjBjYjI5MGMwYmQ2MDA2
NTUzMy4uYTQyZjU2NGY4MWZlMWYwZWEwOTQ0M2QxZjEwNTNjMWMzY2QwY2YzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMjE3LDEyICsyMTcsMTIg
QEAgY2xhc3MgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNhdGVnb3J5KCkpIHsKICAgICAg
ICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXI6Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1
ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTnVtYmVy
PihtX3ZhbHVlLT5mbG9hdFZhbHVlKCkpOwogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdv
cnk6Okxlbmd0aDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHBy
ZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVy
c2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZs
b2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNvcmU6OkZpeGVkKSk7CiAgICAgICAgIGNhc2UgQ2Fs
Y3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudDoKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVn
b3J5OjpQZXJjZW50TGVuZ3RoOiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obV92YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxv
YXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obV92YWx1ZS0+
Y29udmVydFRvTGVuZ3RoPEZpeGVkRmxvYXRDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24+
KGNvbnZlcnNpb25EYXRhKSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gT25seSB0eXBlcyB0aGF0
IGNvdWxkIGJlIHBhcnQgb2YgYSBMZW5ndGggZXhwcmVzc2lvbiBjYW4gYmUgY29udmVydGVkCiAg
ICAgICAgIC8vIHRvIGEgQ2FsY0V4cHJlc3Npb25Ob2RlLiBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQ
ZXJjZW50TnVtYmVyIG1ha2VzIG5vIHNlbnNlIGFzIGEgTGVuZ3RoLgpAQCAtNTIwLDcgKzUyMCw3
IEBAIGNsYXNzIENTU0NhbGNPcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgQ1NTQ2FsY0V4cHJlc3Np
b25Ob2RlIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIG5v
ZGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKG5vZGUpKTsKICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShu
b2RlcyksIG1fb3BlcmF0b3IpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVz
c2lvbk9wZXJhdGlvbj4oV1RGTW92ZShub2RlcyksIG1fb3BlcmF0b3IpOwogICAgIH0KIAogICAg
IGRvdWJsZSBkb3VibGVWYWx1ZSgpIGNvbnN0IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCmluZGV4IGM0NGNlYmM1MTIwZWQ4MzI2ZDlhMWIyYTY1
NmI5MzY3YjZlMTkxMjguLmU1YWU4Yjc3YTUxNGYwOWMzYjQ5NDQxYjU2MmY1YzJhMWVjNzUxNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCkBAIC0x
NjcsMTEgKzE2NywxMSBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZEZ1bGxEZWZh
dWx0U3R5bGUoKQogICAgICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCA9IG51bGxwdHI7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwotICAgICAgICBkZWZh
dWx0UXVpcmtzU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwor
ICAgICAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFz
ZSgpOwogICAgIH0KIAotICAgIGRlZmF1bHRTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNl
dD4oKS5yZWxlYXNlKCk7Ci0gICAgZGVmYXVsdFByaW50U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRTdHlsZSA9IG1ha2VVbmlxdWU8UnVs
ZVNldD4oKS5yZWxlYXNlKCk7CisgICAgZGVmYXVsdFByaW50U3R5bGUgPSBtYWtlVW5pcXVlPFJ1
bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIG1lZGlhUXVlcnlTdHlsZVNoZWV0ID0gJlN0eWxlU2hl
ZXRDb250ZW50czo6Y3JlYXRlKENTU1BhcnNlckNvbnRleHQoVUFTaGVldE1vZGUpKS5sZWFrUmVm
KCk7CiAKICAgICAvLyBTdHJpY3QtbW9kZSBydWxlcy4KQEAgLTE5MCwxMCArMTkwLDEwIEBAIHZv
aWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKICAgICBB
U1NFUlQoIWRlZmF1bHRTdHlsZSk7CiAgICAgQVNTRVJUKCFzaW1wbGVEZWZhdWx0U3R5bGVTaGVl
dCk7CiAKLSAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVs
ZWFzZSgpOworICAgIGRlZmF1bHRTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5yZWxlYXNl
KCk7CiAgICAgLy8gVGhlcmUgYXJlIG5vIG1lZGlhLXNwZWNpZmljIHJ1bGVzIGluIHRoZSBzaW1w
bGUgZGVmYXVsdCBzdHlsZS4KICAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IGRlZmF1bHRTdHlsZTsK
LSAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVs
ZWFzZSgpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKS5y
ZWxlYXNlKCk7CiAKICAgICBzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChz
aW1wbGVVc2VyQWdlbnRTdHlsZVNoZWV0LCBzdHJsZW4oc2ltcGxlVXNlckFnZW50U3R5bGVTaGVl
dCkpOwogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoKnNpbXBsZURlZmF1bHRT
dHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5k
ZXggNzcwOWI1ZGVhZmJmZTlmOWFiMTFhYzA3N2M2MTlkNzk0ZDE2NDJmMi4uNjQ2YzE0YTExYWM2
NDViOTkyNjE0OWYyOWU5ODAwYzRjNzI2N2JjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
Y3BwCkBAIC03NywxMCArNzcsMTAgQEAgdm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhD
U1NGb250RmFjZSYgZm9udEZhY2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgRG8KICAgICAgICAg
ICAgIGJvb2wgYWxsb3dEb3dubG9hZGluZyA9IGZvdW5kU1ZHRm9udCB8fCAoc2V0dGluZ3MgJiYg
c2V0dGluZ3MtPmRvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCgpKTsKICAgICAgICAgICAg
IGlmIChhbGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBkb2N1
bWVudCkgewogICAgICAgICAgICAgICAgIGlmIChDYWNoZWRGb250KiBjYWNoZWRGb250ID0gaXRl
bS5jYWNoZWRGb250KGRvY3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJ
blVzZXJBZ2VudFNoYWRvd1RyZWUpKQotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgp
LCBjYWNoZWRGb250KTsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gbWFrZVVuaXF1ZTxD
U1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgc291cmNlID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2Uo
KSwgbnVsbHB0ciwgZm9udEZhY2VFbGVtZW50KTsKKyAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VV
bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxw
dHIsIGZvbnRGYWNlRWxlbWVudCk7CiAKICAgICAgICAgaWYgKHNvdXJjZSkKICAgICAgICAgICAg
IGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU2V0LmNwcAppbmRleCAwNWUzYTNmNmUyMWJjOTI4MTc4NTU2OWExNGFhNTBmZjUy
ZTRhMjcwLi4xOGU4MzRkNjkwYTZlYjUxMDFkYzkwYzhkZTVkYjVlN2ExYjBjNWRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIENT
U0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29u
c3QgU3RyaW5nJiBmYW1pbAogICAgICAgICBmYW1pbHlMaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVGb250RmFtaWx5VmFsdWUoZmFtaWx5TmFtZSkpOwogICAgICAg
ICBmYWNlLT5zZXRGYW1pbGllcyhmYW1pbHlMaXN0LmdldCgpKTsKICAgICAgICAgZmFjZS0+c2V0
Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyhpdGVtKTsKLSAgICAgICAgZmFjZS0+YWRvcHRTb3Vy
Y2Uoc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5
TmFtZSkpOworICAgICAgICBmYWNlLT5hZG9wdFNvdXJjZShtYWtlVW5pcXVlPENTU0ZvbnRGYWNl
U291cmNlPihmYWNlLmdldCgpLCBmYW1pbHlOYW1lKSk7CiAgICAgICAgIEFTU0VSVCghZmFjZS0+
Y29tcHV0ZUZhaWx1cmVTdGF0ZSgpKTsKICAgICAgICAgZmFjZXMuYXBwZW5kKFdURk1vdmUoZmFj
ZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAKaW5kZXggZGU2
ZjM5ZDNmNWQ4NzMxZDk5ZTVlYjNjOTY4ZTI5YWQxZWFjYmZlNi4uYzZjNWMzOTU0MGE1YzUwNWNk
ZjRkNTljNzQ2YzM5MTg1YzllMDNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0dyb3VwaW5nUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVs
ZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBDU1NSdWxlKiBDU1NHcm91cGluZ1J1bGU6Oml0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0CiBDU1NSdWxlTGlzdCYgQ1NTR3JvdXBpbmdSdWxlOjpjc3NS
dWxlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3J1bGVMaXN0Q1NTT01XcmFwcGVyKQotICAgICAg
ICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXZlQ1NTUnVsZUxp
c3Q8Q1NTR3JvdXBpbmdSdWxlPj4oY29uc3RfY2FzdDxDU1NHcm91cGluZ1J1bGUmPigqdGhpcykp
OworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVs
ZUxpc3Q8Q1NTR3JvdXBpbmdSdWxlPj4oY29uc3RfY2FzdDxDU1NHcm91cGluZ1J1bGUmPigqdGhp
cykpOwogICAgIHJldHVybiAqbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IGZmZGQzZDBhYTY1
N2YyNWVhZjMxZDU3MGM1ODY4ZWQ1MzA5ZTJlZmQuLjU1NTFmMmM2OTE3ZDAzMzA3MjZhY2RmODEw
OTFhOTFmYWI0ZTBiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBHZW5lcmF0ZWRJbWFnZSogQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBzaXplKQogdm9pZCBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKEZsb2F0U2l6ZSBz
aXplLCBHZW5lcmF0ZWRJbWFnZSYgaW1hZ2UpCiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlcy5jb250
YWlucyhzaXplKSk7Ci0gICAgbV9pbWFnZXMuYWRkKHNpemUsIHN0ZDo6bWFrZV91bmlxdWU8Q2Fj
aGVkR2VuZXJhdGVkSW1hZ2U+KCp0aGlzLCBzaXplLCBpbWFnZSkpOworICAgIG1faW1hZ2VzLmFk
ZChzaXplLCBtYWtlVW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1h
Z2UpKTsKIH0KIAogdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpldmljdENhY2hlZEdlbmVy
YXRlZEltYWdlKEZsb2F0U2l6ZSBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1
bGUuY3BwCmluZGV4IGM5MDk4MzJkYTBlNTE5MDI1MzUxM2EzOTgzMTkxYTdjMmYzOTMwMDUuLjZm
MWViMzM4NmQ5ZmJjNzJkNDQzNzg1ZDFkMTljNGRkOGM1YzM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBDU1NLZXlmcmFtZVJ1
bGUqIENTU0tleWZyYW1lc1J1bGU6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiBDU1NSdWxl
TGlzdCYgQ1NTS2V5ZnJhbWVzUnVsZTo6Y3NzUnVsZXMoKQogewogICAgIGlmICghbV9ydWxlTGlz
dENTU09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0tleWZyYW1lc1J1bGU+PigqdGhpcyk7CisgICAg
ICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPExpdmVDU1NSdWxlTGlzdDxD
U1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9ydWxlTGlzdENTU09NV3Jh
cHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDQ4MGE4OTg1
MjM3YWRhOTBhMTE3OGUwYjI3OWUwZTY2ODA3ZTMzNDEuLmM4OGQxZWRjOTNiN2E2YzgzZjIxNzdi
YWM3NjdmOWI3ODJlZTc1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAg
LTMyOSw3ICszMjksNyBAQCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OmNzc1J1
bGVzKCkKICAgICBpZiAoIWNhbkFjY2Vzc1J1bGVzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENT
U09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVTaGVldENTU1J1bGVMaXN0Pih0aGlz
KTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8U3R5bGVTaGVl
dENTU1J1bGVMaXN0Pih0aGlzKTsKICAgICByZXR1cm4gbV9ydWxlTGlzdENTU09NV3JhcHBlci5n
ZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29y
a2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAppbmRl
eCA2NWEyZmRmOGRmYWNiNGQ3ZjcxZDc2MWNiMjE2NmIxYTkyODRjMDcwLi45MTRiZGU0YTJkZTlh
YTIxMDZjMDEwNjNiODA4ZDljYTRmZmY2ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
UGFpbnRXb3JrbGV0LmNwcApAQCAtNDUsNyArNDUsNyBAQCBET01DU1NQYWludFdvcmtsZXQqIERP
TUNTU1BhaW50V29ya2xldDo6ZnJvbShET01DU1NOYW1lc3BhY2UmIGNzcykKIHsKICAgICBhdXRv
KiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RE9NQ1NTUGFpbnRXb3JrbGV0Kj4oU3VwcGxlbWVu
dDxET01DU1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBp
ZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxET01DU1NQYWludFdvcmtsZXQ+KGNzcyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IG1ha2VVbmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3MpOwogICAgICAgICBzdXBw
bGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZjc3MsIHN1
cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAppbmRl
eCA3ZWNkOTNkN2RjM2Q0MzJlYWY4MmJjOTU2ZTYxZDQ4OWE1MTA2MjViLi4wZGY2YWFlOTZmMGUx
YzcwYjM3NTU2MTY0OWVlMzVkMjhlYjRjMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCkBAIC04NCw3ICs4NCw3IEBAIERP
TUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkqIERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6
OmZyb20oRE9NQ1NTTmFtZXNwYWNlCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkqPihTdXBwbGVtZW50PERPTUNTU05hbWVz
cGFjZT46OmZyb20oJmNzcywgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUNT
U1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNzcyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IG1ha2VVbmlxdWU8RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eT4oY3NzKTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygm
Y3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKaW5kZXggZDg1OTZmZDFiMjQ1OWRl
MDdlMWM4OTljYzA3OWZjMTk4NTExNjVlOS4uODJiN2ZjYzMwZTU4Mjc0OTkyMDJlMjhiODMwODZj
ZjBmYTQ0YWM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNl
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBib29sIERvY3VtZW50UnVsZVNldHM6OnNfaXNJbnZhbGlkYXRpbmdTdHls
ZVdpdGhSdWxlU2V0cyB7IGZhbHNlIH07CiBEb2N1bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVT
ZXRzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCiAgICAgOiBtX3N0eWxlUmVzb2x2ZXIo
c3R5bGVSZXNvbHZlcikKIHsKLSAgICBtX2F1dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlU2V0PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAg
ICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC03OCw3
ICs3OCw3IEBAIHZvaWQgRG9jdW1lbnRSdWxlU2V0czo6dXBkYXRlVXNlckFnZW50TWVkaWFRdWVy
eVN0eWxlSWZOZWVkZWQoKSBjb25zdAogCiAgICAgLy8gTWVkaWEgcXVlcmllcyBvbiB1c2VyIGFn
ZW50IHNoZWV0IG5lZWQgdG8gZXZhbHVhdGVkIGluIGRvY3VtZW50IGNvbnRleHQuIFRoZXkgYmVo
YXZlIGxpa2UgYXV0aG9yIHNoZWV0cyBpbiB0aGlzIHJlc3BlY3QuCiAgICAgYXV0byYgbWVkaWFR
dWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7Ci0g
ICAgbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+
KCk7CisgICAgbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+
KCk7CiAgICAgbV91c2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpD
U1NEZWZhdWx0U3R5bGVTaGVldHM6Om1lZGlhUXVlcnlTdHlsZVNoZWV0LCBtZWRpYVF1ZXJ5RXZh
bHVhdG9yLCAmbV9zdHlsZVJlc29sdmVyKTsKIAogICAgIC8vIFZpZXdwb3J0IGRlcGVuZGVudCBx
dWVyaWVzIGFyZSBjdXJyZW50bHkgdG9vIGluZWZmaWNpZW50IHRvIGFsbG93IG9uIFVBIHNoZWV0
LgpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OmluaXRpYWxpemVVc2Vy
U3R5bGUoKQogewogICAgIGF1dG8mIGV4dGVuc2lvblN0eWxlU2hlZXRzID0gbV9zdHlsZVJlc29s
dmVyLmRvY3VtZW50KCkuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKTsKICAgICBhdXRvJiBtZWRpYVF1
ZXJ5RXZhbHVhdG9yID0gbV9zdHlsZVJlc29sdmVyLm1lZGlhUXVlcnlFdmFsdWF0b3IoKTsKLSAg
ICBhdXRvIHRlbXBVc2VyU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAg
YXV0byB0ZW1wVXNlclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIGlmIChDU1NT
dHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0ID0gZXh0ZW5zaW9uU3R5bGVTaGVldHMucGFnZVVzZXJT
aGVldCgpKQogICAgICAgICB0ZW1wVXNlclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYWdlVXNl
clNoZWV0LT5jb250ZW50cygpLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCAmbV9zdHlsZVJlc29sdmVy
KTsKICAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGV4dGVuc2lvblN0eWxlU2hl
ZXRzLmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCksICp0ZW1wVXNlclN0eWxlLCBtZWRpYVF1ZXJ5
RXZhbHVhdG9yLCBtX3N0eWxlUmVzb2x2ZXIpOwpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbWFrZVJ1bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0
dXJlPiYgcnVsZXMpCiAgICAgc2l6ZV90IHNpemUgPSBydWxlcy5zaXplKCk7CiAgICAgaWYgKCFz
aXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHJ1bGVTZXQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJ1bGVTZXQ+KCk7CisgICAgYXV0byBydWxlU2V0ID0gbWFrZVVuaXF1ZTxSdWxl
U2V0PigpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBy
dWxlU2V0LT5hZGRSdWxlKHJ1bGVzW2ldLnJ1bGUsIHJ1bGVzW2ldLnNlbGVjdG9ySW5kZXgsIHJ1
bGVzW2ldLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICBydWxlU2V0LT5zaHJpbmtUb0ZpdCgpOwpA
QCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gbWFrZVJ1
bGVTZXQoY29uc3QgVmVjdG9yPFJ1bGVGZWF0dXJlPiYgcnVsZXMpCiB2b2lkIERvY3VtZW50UnVs
ZVNldHM6OnJlc2V0QXV0aG9yU3R5bGUoKQogewogICAgIG1faXNBdXRob3JTdHlsZURlZmluZWQg
PSB0cnVlOwotICAgIG1fYXV0aG9yU3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCk7
CisgICAgbV9hdXRob3JTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBtX2F1dGhv
clN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAKQEAgLTE5NSwxMiArMTk1LDEy
IEBAIHN0YXRpYyBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGVuc3VyZUludmFsaWRhdGlv
blJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmCiAgICAgICAgICAgICBhdXRvIGFycmF5SW5kZXgg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKmZlYXR1cmUubWF0Y2hFbGVtZW50KTsKICAgICAgICAg
ICAgIGF1dG8mIHJ1bGVTZXQgPSBtYXRjaEVsZW1lbnRBcnJheVthcnJheUluZGV4XTsKICAgICAg
ICAgICAgIGlmICghcnVsZVNldCkKLSAgICAgICAgICAgICAgICBydWxlU2V0ID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU2V0PigpOworICAgICAgICAgICAgICAgIHJ1bGVTZXQgPSBtYWtlVW5pcXVl
PFJ1bGVTZXQ+KCk7CiAgICAgICAgICAgICBydWxlU2V0LT5hZGRSdWxlKGZlYXR1cmUucnVsZSwg
ZmVhdHVyZS5zZWxlY3RvckluZGV4LCBmZWF0dXJlLnNlbGVjdG9yTGlzdEluZGV4KTsKICAgICAg
ICAgICAgIGlmIChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKQogICAgICAgICAgICAgICAg
IGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlbYXJyYXlJbmRleF0uYXBwZW5kKGZlYXR1cmUuaW52
YWxpZGF0aW9uU2VsZWN0b3IpOwogICAgICAgICB9Ci0gICAgICAgIGF1dG8gaW52YWxpZGF0aW9u
UnVsZVNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4o
KTsKKyAgICAgICAgYXV0byBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IG1ha2VVbmlxdWU8VmVjdG9y
PEludmFsaWRhdGlvblJ1bGVTZXQ+PigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbWF0Y2hFbGVtZW50QXJyYXkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChtYXRj
aEVsZW1lbnRBcnJheVtpXSkKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25SdWxlU2V0cy0+
YXBwZW5kKHsgc3RhdGljX2Nhc3Q8TWF0Y2hFbGVtZW50PihpKSwgV1RGTW92ZShtYXRjaEVsZW1l
bnRBcnJheVtpXSksIFdURk1vdmUoaW52YWxpZGF0aW9uU2VsZWN0b3JBcnJheVtpXSkgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAppbmRleCAwNWQzODVh
NTU4YzQ4YzQ4ZWU4ZGE5MGY2YTE4Y2I0ZTc1YTZhOTVhLi4wNWI0NTdmZDY4MjBjNjdmMGUwZmJl
OTMwODdiOGNlZjA4MjllYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldDo6
UnVsZURhdGFWZWN0b3I+IEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xsZWN0U2xvdHRlZFBzZQog
ICAgIGlmIChtX21hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBhdXRvIHJ1bGVEYXRhVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0OjpSdWxl
RGF0YVZlY3Rvcj4oKTsKKyAgICBhdXRvIHJ1bGVEYXRhVmVjdG9yID0gbWFrZVVuaXF1ZTxSdWxl
U2V0OjpSdWxlRGF0YVZlY3Rvcj4oKTsKICAgICBydWxlRGF0YVZlY3Rvci0+cmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShtX21hdGNoZWRSdWxlcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgbWF0Y2hl
ZFJ1bGUgOiBtX21hdGNoZWRSdWxlcykKICAgICAgICAgcnVsZURhdGFWZWN0b3ItPnVuY2hlY2tl
ZEFwcGVuZCgqbWF0Y2hlZFJ1bGUucnVsZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5k
ZXggMjEyMjQ1ZGVkY2FmZjk1NmFkNDQxMDdiOWViNDRjYjQxMzI4YWFkYi4uZTFiMWFmMjBmYjEx
YWUzZGZlZTE5MmNhYzkyZTYyY2RlYTU1N2RjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgcG9wdWxh
dGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcihDU1NGb250RmFjZSYgZm9udEZhY2UsIFJlZjxKU0M6
OkFycmF5QnVmZmVyVmlldz4mJiBhcnJheUJ1ZmZlclZpZXcpCiB7Ci0gICAgYXV0byBzb3VyY2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CisgICAgYXV0byBz
b3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoYXJyYXlCdWZmZXJWaWV3KSk7CiAgICAgZm9udEZh
Y2UuYWRvcHRTb3VyY2UoV1RGTW92ZShzb3VyY2UpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IDNiMjBkNDEzMzM3NTMzZDZjYjNjNThjYjNkMTA0ZjBmMDRiNWU2MTkuLmUx
ZTFkNzIxMjExZTZkZTAxYThhODZlMGQ0MGQ4NTI4OTk3YjM1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0z
MjksNyArMzI5LDcgQEAgUmVmUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPiBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OndyYXBGb3JEZXByZWNhdGVkQ1MKICAgICAvLyBUaGUgbWFwIGlz
IGhlcmUgdG8gbWFpbnRhaW4gdGhlIG9iamVjdCBpZGVudGl0eSBvZiB0aGUgQ1NTVmFsdWVzIG92
ZXIgbXVsdGlwbGUgaW52b2NhdGlvbnMuCiAgICAgLy8gRklYTUU6IEl0IGlzIGxpa2VseSB0aGF0
IHRoZSBpZGVudGl0eSBpcyBub3QgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eSBhbmQg
dGhpcyBjb2RlIHNob3VsZCBiZSByZW1vdmVkLgogICAgIGlmICghbV9jc3NvbVZhbHVlV3JhcHBl
cnMpCi0gICAgICAgIG1fY3Nzb21WYWx1ZVdyYXBwZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNo
TWFwPENTU1ZhbHVlKiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4+PigpOworICAgICAg
ICBtX2Nzc29tVmFsdWVXcmFwcGVycyA9IG1ha2VVbmlxdWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdl
YWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKTsKICAgICAKICAgICBhdXRvJiBjbG9uZWRW
YWx1ZSA9IG1fY3Nzb21WYWx1ZVdyYXBwZXJzLT5hZGQoaW50ZXJuYWxWYWx1ZSwgV2Vha1B0cjxE
ZXByZWNhdGVkQ1NTT01WYWx1ZT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmIChjbG9uZWRW
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCmluZGV4IGRmZmRhNmY1MWRmOTU0ZDIw
NmYwM2QwYzczNTYwZGRhMzkyZDE0MzAuLjQ0ZWViMWQ3MDJkMmY5ZGNiNmIxMmI1NTI3ODE1Njdm
ZDAwZDJlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcApAQCAtMTc0LDcgKzE3NCw3
IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYg
cnVsZURhdGEpCiAKICAgICBmb3IgKGF1dG8mIG5hbWVBbmRNYXRjaCA6IHNlbGVjdG9yRmVhdHVy
ZXMuY2xhc3NlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVuc3VyZShuYW1lQW5kTWF0Y2guZmly
c3QsIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxl
RmVhdHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZl
YXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVy
ZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2Vs
ZWN0b3JMaXN0SW5kZXgoKSwgbmFtZUFuZE1hdGNoLnNlY29uZCkpOwogICAgICAgICBpZiAobmFt
ZUFuZE1hdGNoLnNlY29uZCA9PSBNYXRjaEVsZW1lbnQ6Okhvc3QpCiAgICAgICAgICAgICBjbGFz
c2VzQWZmZWN0aW5nSG9zdC5hZGQobmFtZUFuZE1hdGNoLmZpcnN0KTsKQEAgLTE4Myw3ICsxODMs
NyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURhdGEm
IHJ1bGVEYXRhKQogICAgICAgICBhdXRvKiBzZWxlY3RvciA9IHNlbGVjdG9yQW5kTWF0Y2guZmly
c3Q7CiAgICAgICAgIGF1dG8gbWF0Y2hFbGVtZW50ID0gc2VsZWN0b3JBbmRNYXRjaC5zZWNvbmQ7
CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVuc3VyZShzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9j
YWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwgW10gewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIH0pLml0
ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVsZURh
dGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5zZWxlY3Rvckxpc3RJbmRleCgpLCBtYXRjaEVs
ZW1lbnQsIHNlbGVjdG9yKSk7CiAgICAgICAgIGlmIChtYXRjaEVsZW1lbnQgPT0gTWF0Y2hFbGVt
ZW50OjpIb3N0KQogICAgICAgICAgICAgYXR0cmlidXRlc0FmZmVjdGluZ0hvc3QuYWRkKHNlbGVj
dG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsK
QEAgLTIwMSwxNCArMjAxLDE0IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxl
RmVhdHVyZVNldCYgb3RoZXIpCiAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxlcy5hcHBlbmRWZWN0
b3Iob3RoZXIudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1
ZVBhaXIgOiBvdGhlci5jbGFzc1J1bGVzKSB7CiAgICAgICAgIGNsYXNzUnVsZXMuZW5zdXJlKGtl
eVZhbHVlUGFpci5rZXksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxW
ZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVu
ZFZlY3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVlKTsKICAgICB9CiAgICAgY2xhc3Nlc0FmZmVjdGlu
Z0hvc3QuYWRkKG90aGVyLmNsYXNzZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLmNsYXNz
ZXNBZmZlY3RpbmdIb3N0LmVuZCgpKTsKIAogICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDog
b3RoZXIuYXR0cmlidXRlUnVsZXMpIHsKICAgICAgICAgYXR0cmlidXRlUnVsZXMuZW5zdXJlKGtl
eVZhbHVlUGFpci5rZXksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxW
ZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVu
ZFZlY3Rvcigqa2V5VmFsdWVQYWlyLnZhbHVlKTsKICAgICB9CiAgICAgYXR0cmlidXRlc0FmZmVj
dGluZ0hvc3QuYWRkKG90aGVyLmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVy
LmF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAppbmRl
eCBmYTZiOTEyMDIxM2VjNTRiYjY1OTAzY2ZhZTY2OWJkNDY2ZmJiMDI3Li4zYmJiYmZlYmNhMDA5
OTc4MmFmMzk4MWViODY3MzZjZTY4MDM2ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCkBAIC0x
ODIsNyArMTgyLDcgQEAgdm9pZCBSdWxlU2V0OjphZGRUb1J1bGVTZXQoY29uc3QgQXRvbVN0cmlu
ZyYga2V5LCBBdG9tUnVsZU1hcCYgbWFwLCBjb25zdCBSdWxlRGEKICAgICAgICAgcmV0dXJuOwog
ICAgIGF1dG8mIHJ1bGVzID0gbWFwLmFkZChrZXksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIXJ1bGVzKQotICAgICAgICBydWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZURh
dGFWZWN0b3I+KCk7CisgICAgICAgIHJ1bGVzID0gbWFrZVVuaXF1ZTxSdWxlRGF0YVZlY3Rvcj4o
KTsKICAgICBydWxlcy0+YXBwZW5kKHJ1bGVEYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDY5YWY1NTgxNTY1NGJlMzIwZjFhOWZkNzFh
Nzc2NjdkOTI5M2ZhOTcuLjg4Nzc1YWQ3YmE4YWE1OTBhZDdiZjcyYTM3ZDNiNWY2NWI1ZDJkNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTM0OCw5
ICszNDgsOSBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
MTAwUGVyY2VudE1pbnVzTGVuZ3RoKGNvbnN0IExlbmd0aAogICAgIC8vIFR1cm4gdGhpcyBpbnRv
IGEgY2FsYyBleHByZXNzaW9uOiBjYWxjKDEwMCUgLSBsZW5ndGgpCiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+PiBsZW5ndGhzOwogICAgIGxlbmd0aHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkp
OwotICAgIGxlbmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJl
c3Npb25MZW5ndGg+KGxlbmd0aCkpOwotICAgIGF1dG8gb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPENh
bGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxlbmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1
YnRyYWN0KTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHBy
ZXNzaW9uTGVuZ3RoPihMZW5ndGgoMTAwLCBQZXJjZW50KSkpOworICAgIGxlbmd0aHMudW5jaGVj
a2VkQXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KGxlbmd0aCkpOworICAg
IGF1dG8gb3AgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uT3BlcmF0aW9uPihXVEZNb3ZlKGxl
bmd0aHMpLCBDYWxjT3BlcmF0b3I6OlN1YnRyYWN0KTsKICAgICByZXR1cm4gTGVuZ3RoKENhbGN1
bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG9wKSwgVmFsdWVSYW5nZUFsbCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggOWExOTFkMTdkZDhlM2Vk
Y2MxYzEzMGMyNjU5MGUwY2E2ZjRlMzZhMy4uYzVjMmJmNWQwZjVmYzc5MTBhZmYxNjI1OTk5MGM0
Mzg2NjBjMTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1
c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAt
ODEzLDcgKzgxMyw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0
T3JCb3hTaGFkb3dWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgICAgICAgICBjb2xv
ciA9IHN0eWxlUmVzb2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoKnNoYWRvd1ZhbHVlLmNv
bG9yKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPmNvbG9yKCk7Ci0gICAgICAgIGF1dG8gc2hhZG93RGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUs
IHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkg
PyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGF1dG8gc2hhZG93RGF0YSA9
IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoeCwgeSksIGJsdXIsIHNwcmVhZCwgc2hh
ZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5p
c1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgICAgIGlmIChwcm9w
ZXJ0eSA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRTaGFkb3coV1RGTW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRy
eSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKICAg
ICAgICAgZWxzZQpAQCAtODI5LDcgKzgyOSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlJbml0aWFsVGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sCiAK
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRvdyhT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0VGV4dFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3co
KSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5
bGUoKS0+dGV4dFNoYWRvdygpKSA6IG51bGxwdHIpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0VGV4dFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3co
KSA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+
dGV4dFNoYWRvdygpKSA6IG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVUZXh0U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTg0NCw3ICs4NDQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEJveFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdgogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEJveFNo
YWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0Qm94U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hh
ZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVu
dFN0eWxlKCktPmJveFNoYWRvdygpKSA6IG51bGxwdHIpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0Qm94U2hhZG93KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+Ym94U2hhZG93
KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkt
PmJveFNoYWRvdygpKSA6IG51bGxwdHIpOwogfQogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
Q1NTVmFsdWUmIHZhbHVlKQpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLAogICAgICAgICAgICAgQ1NTVmFsdWVJRCBsaXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1
ZS0+bGlzdFN0eWxlSWRlbnQoKTsKICAgICAgICAgICAgIGlmIChsaXN0U3R5bGVJZGVudCAhPSBD
U1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICAgICAgbGlzdFN0eWxlVHlwZSA9IHN0YXRpY19jYXN0
PExpc3RTdHlsZVR5cGU+KGxpc3RTdHlsZUlkZW50IC0gQ1NTVmFsdWVEaXNjKTsKLSAgICAgICAg
ICAgIGF1dG8gY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50
ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFy
YXRvcigpKTsKKyAgICAgICAgICAgIGF1dG8gY291bnRlciA9IG1ha2VVbmlxdWU8Q291bnRlckNv
bnRlbnQ+KGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVy
VmFsdWUtPnNlcGFyYXRvcigpKTsKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0
ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5jcHAKaW5kZXggNGNmNmM2ZjdhYjdkZjlmYzA0MzM0YmJlOGRkMDVhM2I1NTllOTM1Yy4uMTlj
YjAzM2Q3MGJiNWE4OTY4NjU1NzI3NTViOTZiOTc3MDUxY2I2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTE1MzAsNyArMTUzMCw3IEBAIENTU1N0eWxlRGVjbGFy
YXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24o
KQogICAgICAgICBBU1NFUlQoIW1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVtZW50KCkpOwogICAg
ICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogICAgIH0KLSAgICBtX2Nzc29tV3JhcHBlciA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcyk7
CisgICAgbV9jc3NvbVdyYXBwZXIgPSBtYWtlVW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiB9CiAKQEAgLTE1
NDAsNyArMTU0MCw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5CiAgICAgICAgIEFTU0VSVCht
X2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpID09ICZwYXJlbnRFbGVtZW50KTsKICAgICAg
ICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdyYXBwZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRF
bGVtZW50KTsKKyAgICBtX2Nzc29tV3JhcHBlciA9IG1ha2VVbmlxdWU8SW5saW5lQ1NTU3R5bGVE
ZWNsYXJhdGlvbj4oKnRoaXMsIHBhcmVudEVsZW1lbnQpOwogICAgIHJldHVybiAqbV9jc3NvbVdy
YXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAzYTUyYzM2
MTk5YTc5YTI1ZTA5YzAxZDhmYTBjNTBhZWZmNjgyYmI1Li5kZTRkYTVmNTUxMjk5MDkzMWRhODZj
NWM3ZTgzYmNiMTAxODA4YmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC0xNzE1LDcgKzE3MTUsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIFN0
eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKAogICAgICAgICBpZiAo
YXV0aG9yUm9sbGJhY2spCiAgICAgICAgICAgICByZXR1cm4gYXV0aG9yUm9sbGJhY2s7CiAKLSAg
ICAgICAgYXV0byBuZXdBdXRob3JSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPENhc2NhZGVkUHJv
cGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOworICAgICAgICBhdXRvIG5ld0F1dGhv
clJvbGxiYWNrKG1ha2VVbmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRp
bmdNb2RlKSk7CiAKICAgICAgICAgLy8gVGhpcyBzcGVjaWFsIHJvbGxiYWNrIGNhc2NhZGUgY29u
dGFpbnMgVUEgcnVsZXMgYW5kIHVzZXIgcnVsZXMgYnV0IG5vIGF1dGhvciBydWxlcy4KICAgICAg
ICAgbmV3QXV0aG9yUm9sbGJhY2stPmFkZE5vcm1hbE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNo
UmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQucmFuZ2VzLmxhc3RVQVJ1bGUs
IGZhbHNlKTsKQEAgLTE3MzIsNyArMTczMiw3IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJv
cGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAg
ICAgICAgIGlmICh1c2VyUm9sbGJhY2spCiAgICAgICAgICAgICByZXR1cm4gdXNlclJvbGxiYWNr
OwogCi0gICAgICAgIGF1dG8gbmV3VXNlclJvbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8Q2FzY2Fk
ZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKSk7CisgICAgICAgIGF1dG8gbmV3
VXNlclJvbGxiYWNrKG1ha2VVbmlxdWU8Q2FzY2FkZWRQcm9wZXJ0aWVzPihkaXJlY3Rpb24sIHdy
aXRpbmdNb2RlKSk7CiAKICAgICAgICAgLy8gVGhpcyBzcGVjaWFsIHJvbGxiYWNrIGNhc2NhZGUg
Y29udGFpbnMgb25seSBVQSBydWxlcy4KICAgICAgICAgbmV3VXNlclJvbGxiYWNrLT5hZGROb3Jt
YWxNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1h
dGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvbWFrZXByb3AucGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwK
aW5kZXggOTk3YzRjMDM2N2RkNWQwZDY0NWQ1ZWRmNTFlZWM0YmZiMGMzMjEwNS4uMDJhMzZlZmUw
NWQzY2M5ZmU5N2RkNWMwZTI1OTNhZTc5ZmQ2YzJjNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL21ha2Vwcm9wLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbApA
QCAtODExLDcgKzgxMSw3IEBAIHN1YiBnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJpdFZh
bHVlU2V0dGVyIHsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICJGaWxsTGF5ZXIqIHBy
ZXZpb3VzQ2hpbGQgPSBudWxscHRyO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAu
ICJmb3IgKGF1dG8qIHBhcmVudCA9ICZzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPiIgLiBn
ZXRMYXllcnNGdW5jdGlvbigkbmFtZSkgLiAiKCk7IHBhcmVudCAmJiBwYXJlbnQtPiIgLiAkdGVz
dEZ1bmN0aW9uIC4gIigpOyBwYXJlbnQgPSBwYXJlbnQtPm5leHQoKSkge1xuIjsKICAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgaWYgKCFjaGlsZCkge1xuIjsKLSAgJHNldHRlckNv
bnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHByZXZpb3VzQ2hpbGQtPnNldE5leHQoc3RkOjpt
YWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1lKSAuICIpKTtc
biI7CisgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxk
LT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFt
ZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgY2hp
bGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5k
ZW50IC4gIiAgICB9XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBjaGls
ZC0+IiAuICRzZXR0ZXIgLiAiKHBhcmVudC0+IiAuICRnZXR0ZXIgLiAiKCkpO1xuIjsKQEAgLTgz
Nyw3ICs4MzcsNyBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eVZhbHVlU2V0dGVyIHsK
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgLy8gV2FsayBlYWNoIHZhbHVlIGFu
ZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVhdGluZyBuZXcgbGF5ZXJzIGFzIG5lZWRlZC5cbiI7
CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGZvciAoYXV0byYgaXRlbSA6IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gIiAgICAgICAgaWYgKCFjaGlsZCkge1xuIjsKLSAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KHN0ZDo6bWFrZV91
bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOwor
ICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQt
PnNldE5leHQobWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCIgLiBnZXRGaWxsTGF5ZXJUeXBlKCRuYW1l
KSAuICIpKTtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAg
Y2hpbGQgPSBwcmV2aW91c0NoaWxkLT5uZXh0KCk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gIiAgICAgICAgfVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGVNYXAoKS0+IiAuIGdldEZpbGxMYXllck1hcGZ1bmN0
aW9uKCRuYW1lKSAuICIoIiAuICRDU1NQcm9wZXJ0eUlkIC4gIiwgKmNoaWxkLCBpdGVtKTtcbiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAppbmRleCA2N2Nm
ZGY1NmQ2MjUwNTNhMDExMTk5MmQ3MTFmOGM4ZmZkYjk1ZGMyLi5kNzVlNGZjOTJjNzdiMDdiMWU1
M2RhZDMzODdlNTUxYTM5MGMyNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VySW1wbC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgQ1NTUGFyc2VySW1wbDo6Q1NTUGFyc2Vy
SW1wbChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHN0cmkK
ICAgICAsIG1fc3R5bGVTaGVldChzdHlsZVNoZWV0KQogICAgICwgbV9vYnNlcnZlcldyYXBwZXIo
d3JhcHBlcikKIHsKLSAgICBtX3Rva2VuaXplciA9IHdyYXBwZXIgPyBzdGQ6Om1ha2VfdW5pcXVl
PENTU1Rva2VuaXplcj4oc3RyaW5nLCAqd3JhcHBlcikgOiBzdGQ6Om1ha2VfdW5pcXVlPENTU1Rv
a2VuaXplcj4oc3RyaW5nKTsKKyAgICBtX3Rva2VuaXplciA9IHdyYXBwZXIgPyBtYWtlVW5pcXVl
PENTU1Rva2VuaXplcj4oc3RyaW5nLCAqd3JhcHBlcikgOiBtYWtlVW5pcXVlPENTU1Rva2VuaXpl
cj4oc3RyaW5nKTsKICAgICBpZiAoY29udGV4dC5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgJiYg
IXdyYXBwZXIgJiYgc3R5bGVTaGVldCAmJiBydWxlUGFyc2luZyA9PSBDU1NQYXJzZXI6OlJ1bGVQ
YXJzaW5nOjpEZWZlcnJlZCkKICAgICAgICAgbV9kZWZlcnJlZFBhcnNlciA9IENTU0RlZmVycmVk
UGFyc2VyOjpjcmVhdGUoY29udGV4dCwgc3RyaW5nLCAqc3R5bGVTaGVldCk7CiB9CkBAIC0yODIs
OSArMjgyLDkgQEAgQ1NTU2VsZWN0b3JMaXN0IENTU1BhcnNlckltcGw6OnBhcnNlUGFnZVNlbGVj
dG9yKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFN0eWwKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2VsZWN0b3I7CiAgICAgaWYgKCF0eXBlU2VsZWN0b3IuaXNO
dWxsKCkgJiYgcHNldWRvLmlzTnVsbCgpKQotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNl
bGVjdG9yLCBzdHlsZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKKyAgICAgICAgc2VsZWN0
b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9t
KCksIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxl
Y3Rvcj4oKTsKKyAgICAgICAgc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9y
PigpOwogICAgICAgICBpZiAoIXBzZXVkby5pc051bGwoKSkgewogICAgICAgICAgICAgc2VsZWN0
b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+KENTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcihwc2V1ZG8pKTsKICAgICAgICAgICAgIGlmICghc2Vs
ZWN0b3IgfHwgc2VsZWN0b3ItPm1hdGNoKCkgIT0gQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFz
cykKQEAgLTUzNSw3ICs1MzUsNyBAQCBSZWZQdHI8U3R5bGVSdWxlTmFtZXNwYWNlPiBDU1NQYXJz
ZXJJbXBsOjpjb25zdW1lTmFtZXNwYWNlUnVsZShDU1NQYXJzZXJUb2tlblJhbgogUmVmUHRyPFN0
eWxlUnVsZU1lZGlhPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lTWVkaWFSdWxlKENTU1BhcnNlclRv
a2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBibG9jaykKIHsKICAgICBpZiAo
bV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZU1lZGlhOjpjcmVhdGUo
TWVkaWFRdWVyeVBhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KHByZWx1ZGUsIE1lZGlhUXVlcnlQ
YXJzZXJDb250ZXh0KG1fY29udGV4dCkpLnJlbGVhc2VOb25OdWxsKCksICBzdGQ6Om1ha2VfdW5p
cXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIp
KTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZU1lZGlhOjpjcmVhdGUoTWVkaWFRdWVyeVBhcnNl
cjo6cGFyc2VNZWRpYVF1ZXJ5U2V0KHByZWx1ZGUsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KG1f
Y29udGV4dCkpLnJlbGVhc2VOb25OdWxsKCksICBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91
cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4+IHJ1bGVzOwogCkBAIC01NjMsNyArNTYzLDcgQEAgUmVmUHRyPFN0
eWxlUnVsZVN1cHBvcnRzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lU3VwcG9ydHNSdWxlKENTU1Bh
cnNlclRva2VuUmFuZ2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vIFBhcnNlIGVycm9yLCBp
bnZhbGlkIEBzdXBwb3J0cyBjb25kaXRpb24KIAogICAgIGlmIChtX2RlZmVycmVkUGFyc2VyKQot
ICAgICAgICByZXR1cm4gU3R5bGVSdWxlU3VwcG9ydHM6OmNyZWF0ZShwcmVsdWRlLnNlcmlhbGl6
ZSgpLnN0cmlwV2hpdGVTcGFjZSgpLCBzdXBwb3J0ZWQsIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJy
ZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAg
ICByZXR1cm4gU3R5bGVSdWxlU3VwcG9ydHM6OmNyZWF0ZShwcmVsdWRlLnNlcmlhbGl6ZSgpLnN0
cmlwV2hpdGVTcGFjZSgpLCBzdXBwb3J0ZWQsIG1ha2VVbmlxdWU8RGVmZXJyZWRTdHlsZUdyb3Vw
UnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOwogCiAgICAgaWYgKG1fb2JzZXJ2
ZXJXcmFwcGVyKSB7CiAgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0
UnVsZUhlYWRlcihTdHlsZVJ1bGU6OlN1cHBvcnRzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRP
ZmZzZXQocHJlbHVkZSkpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVLZXlm
cmFtZXM+IENTU1BhcnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKGJvb2wgd2Via2l0UHJl
Zml4CiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBlcnJvcjsgZXhwZWN0ZWQgaWRl
bnQgdG9rZW4gaW4gQGtleWZyYW1lcyBoZWFkZXIKIAogICAgIGlmIChtX2RlZmVycmVkUGFyc2Vy
KQotICAgICAgICByZXR1cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVhdGUobmFtZSwgc3RkOjpt
YWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVk
UGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVLZXlmcmFtZXM6OmNyZWF0ZShuYW1l
LCBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJy
ZWRQYXJzZXIpKTsKIAogICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29i
c2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIoKS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpLZXlm
cmFtZXMsIG1fb2JzZXJ2ZXJXcmFwcGVyLT5zdGFydE9mZnNldChyYW5nZUNvcHkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAKaW5kZXggNGRi
ZWY0MDU4YzcxNjJjZDk2NDZlYTc2NGRjYmI5YmJjZjMxZTQ1OS4uYTA4NzBkMzc2MmNlYTQyZjVi
NWVhYmQwNWVhNzQ0ZjJkOWQ2YjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJTZWxlY3Rvci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2Vs
ZWN0b3IoU3QKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBz
ZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0
byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2VsZWN0
b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpOwog
ICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQYWdlUHNldWRvVHlwZShwc2V1ZG9UeXBlKTsK
ICAgICByZXR1cm4gc2VsZWN0b3I7CkBAIC02Myw3ICs2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxD
U1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFNl
bGVjdG9yCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHNl
bGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRv
IHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICBzZWxlY3Rv
ci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwogICAg
IHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50VHlwZShwc2V1ZG9UeXBlKTsK
ICAgICBBdG9tU3RyaW5nIG5hbWU7CkBAIC04NCwxMyArODQsMTMgQEAgc3RkOjp1bmlxdWVfcHRy
PENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1Nl
bGVjdG9yKFMKIHsKICAgICBhdXRvIHBzZXVkb1R5cGUgPSBwYXJzZVBzZXVkb0NsYXNzQW5kQ29t
cGF0aWJpbGl0eUVsZW1lbnRTdHJpbmcocHNldWRvVHlwZVN0cmluZyk7CiAgICAgaWYgKHBzZXVk
b1R5cGUucHNldWRvQ2xhc3MgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVW5rbm93bikgewot
ICAgICAgICBhdXRvIHNlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rv
cj4oKTsKKyAgICAgICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0
b3I+KCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3MpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRv
Q2xhc3NUeXBlKHBzZXVkb1R5cGUucHNldWRvQ2xhc3MpOwogICAgICAgICByZXR1cm4gc2VsZWN0
b3I7CiAgICAgfQogICAgIGlmIChwc2V1ZG9UeXBlLmNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50
ICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VW5rbm93bikgewotICAgICAgICBhdXRvIHNl
bGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICAgICAg
YXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgICAg
IHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVu
dCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRQc2V1ZG9FbGVtZW50VHlwZShw
c2V1ZG9UeXBlLmNvbXBhdGliaWxpdHlQc2V1ZG9FbGVtZW50KTsKICAgICAgICAgc2VsZWN0b3It
Pm1fc2VsZWN0b3ItPnNldFZhbHVlKHBzZXVkb1R5cGVTdHJpbmcuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKSk7CkBAIC0xMDAsMTIgKzEwMCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0NsYXNzU2VsZWN0b3IoUwog
fQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IoKQotICAgIDogbV9zZWxl
Y3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPigpKQorICAgIDogbV9zZWxlY3Rvciht
YWtlVW5pcXVlPENTU1NlbGVjdG9yPigpKQogewogfQogCiBDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NT
UGFyc2VyU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUpCi0gICAgOiBtX3Nl
bGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lKSkKKyAgICA6IG1f
c2VsZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUpKQogewogfQogCkBAIC0x
MjYsNyArMTI2LDcgQEAgQ1NTUGFyc2VyU2VsZWN0b3I6On5DU1NQYXJzZXJTZWxlY3RvcigpCiAK
IHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiYgc2VsZWN0b3JWZWN0b3IpCiB7Ci0gICAg
bV9zZWxlY3Rvci0+c2V0U2VsZWN0b3JMaXN0KHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3JM
aXN0PihXVEZNb3ZlKHNlbGVjdG9yVmVjdG9yKSkpOworICAgIG1fc2VsZWN0b3ItPnNldFNlbGVj
dG9yTGlzdChtYWtlVW5pcXVlPENTU1NlbGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3Rv
cikpKTsKIH0KIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0TGFuZ0FyZ3VtZW50TGlzdChz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21TdHJpbmc+PiBhcmd1bWVudExpc3QpCkBAIC0yMDks
MTIgKzIwOSwxMiBAQCB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphcHBlbmRUYWdIaXN0b3J5KENT
U1BhcnNlclNlbGVjdG9yQ29tYmluYXRvciByZWxhdGlvbiwgcwogCiB2b2lkIENTU1BhcnNlclNl
bGVjdG9yOjpwcmVwZW5kVGFnU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUs
IGJvb2wgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKQogewotICAgIGF1dG8gc2Vjb25kID0gc3RkOjpt
YWtlX3VuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKKyAgICBhdXRvIHNlY29uZCA9IG1ha2VV
bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2Vjb25kLT5tX3NlbGVjdG9yID0gV1RG
TW92ZShtX3NlbGVjdG9yKTsKICAgICBzZWNvbmQtPm1fdGFnSGlzdG9yeSA9IFdURk1vdmUobV90
YWdIaXN0b3J5KTsKICAgICBtX3RhZ0hpc3RvcnkgPSBXVEZNb3ZlKHNlY29uZCk7CiAKLSAgICBt
X3NlbGVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4odGFnUU5hbWUsIHRhZ0lz
Rm9yTmFtZXNwYWNlUnVsZSk7CisgICAgbV9zZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTU2VsZWN0
b3I+KHRhZ1FOYW1lLCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOwogICAgIG1fc2VsZWN0b3ItPnNl
dFJlbGF0aW9uKENTU1NlbGVjdG9yOjpTdWJzZWxlY3Rvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggNDg4ZTYwMjNmMjAw
MjRhZmZlZjg2MTdhNTE0YzQwOWJmNDlkMWVmMy4uNzA4ZWM3NzczYzE4ZDZlMDhlMDAxY2FmYTNk
MjhjODBkOWY4NzJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5jcHAKQEAgLTI0MzUsNyArMjQzNSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTQmFz
aWNTaGFwZVBhdGg+IGNvbnN1bWVCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzCiAgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSAhPSBTdHJpbmdUb2tlbikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgYXV0byBieXRlU3RyZWFtID0gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIGJ5dGVTdHJlYW0gPSBtYWtlVW5p
cXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOwogICAgIGlmICghYnVpbGRTVkdQYXRoQnl0ZVN0cmVh
bUZyb21TdHJpbmcoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9T
dHJpbmcoKSwgKmJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3Rv
clBhcnNlci5jcHAKaW5kZXggNmIzYWNjODVlNmZjNWU1Y2JiOTVhYjlmZTFhNmM3Y2E5ZWY4MTA0
Ny4uZjMzMjNiMjI2YjRiMDEwMGM5ODNjNDg2NjM3NWYxZTY1N2IxNzM5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKQEAgLTU2NCw3ICs1
NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFy
c2VyOjpjb25zdW1lUHNldWRvKENTU1BhcnNlclRvawogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTGFuZzogewogICAgICAgICAgICAgLy8gRklYTUU6IENT
UyBTZWxlY3RvcnMgTGV2ZWwgNCBhbGxvd3MgOmxhbmcoKi1mb28pCi0gICAgICAgICAgICBhdXRv
IGFyZ3VtZW50TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEF0b21TdHJpbmc+PigpOwor
ICAgICAgICAgICAgYXV0byBhcmd1bWVudExpc3QgPSBtYWtlVW5pcXVlPFZlY3RvcjxBdG9tU3Ry
aW5nPj4oKTsKICAgICAgICAgICAgIGlmICghY29uc3VtZUxhbmdBcmd1bWVudExpc3QoYXJndW1l
bnRMaXN0LCBibG9jaykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICBzZWxlY3Rvci0+c2V0TGFuZ0FyZ3VtZW50TGlzdChXVEZNb3ZlKGFyZ3VtZW50TGlzdCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1
ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5j
cHAKaW5kZXggOWViNWQ3ZTQ5ZjU2YTFlOThkMWZiYjliMjNlNmVhNzJlMjI2MTU4Zi4uODgxMTdm
MTllNGIyNmJhMjViZmYyNWE4NTU5MTczMmJiN2EzZTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCkBAIC0zMzQsNyArMzM0LDcg
QEAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OkVsZW1lbnRRdWV1ZSYgQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWU6OmVuc3VyZUJhY2sKIHsKICAgICBpZiAoIXNfcHJvY2Vzc2luZ0JhY2t1
cEVsZW1lbnRRdWV1ZSkgewogICAgICAgICBzX3Byb2Nlc3NpbmdCYWNrdXBFbGVtZW50UXVldWUg
PSB0cnVlOwotICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8QmFja3VwRWxlbWVudFF1ZXVlTWljcm90YXNrPigpKTsKKyAgICAg
ICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPEJh
Y2t1cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4oKSk7CiAgICAgfQogICAgIHJldHVybiBiYWNrdXBF
bGVtZW50UXVldWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggZTc5
M2YyMGQ5MzFiZjg0Yzg1ZmFiOWFkMjRmODNmZThhNDhhMmYxZC4uZDNhZjcwZmI4YmEzMzZiZmE2
MThiZjljMTI1NmIxMDdkOWQyNWFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAK
QEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6ZGlkQWRkRmlsZVRvSXRlbUxp
c3QoKQogRGF0YVRyYW5zZmVySXRlbUxpc3QmIERhdGFUcmFuc2Zlcjo6aXRlbXMoKQogewogICAg
IGlmICghbV9pdGVtTGlzdCkKLSAgICAgICAgbV9pdGVtTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0YVRyYW5zZmVySXRlbUxpc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9pdGVtTGlzdCA9IG1ha2VV
bmlxdWU8RGF0YVRyYW5zZmVySXRlbUxpc3Q+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faXRlbUxp
c3Q7CiB9CiAKQEAgLTQxNiw3ICs0MTYsNyBAQCBib29sIERhdGFUcmFuc2Zlcjo6aGFzU3RyaW5n
T2ZUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JJbnB1dEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBwbGFpblRleHQsIGNvbnN0IFN0cmluZyYgaHRtbFRleHQpCiB7Ci0gICAgYXV0byBw
YXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOworICAgIGF1
dG8gcGFzdGVib2FyZCA9IG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKICAgICBwYXN0
ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9wbGFpbiJfcywgcGxhaW5UZXh0KTsKICAgICBwYXN0
ZWJvYXJkLT53cml0ZVN0cmluZygidGV4dC9odG1sIl9zLCBodG1sVGV4dCk7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKGRvY3VtZW50LCBTdG9yZU1vZGU6OlJlYWRvbmx5
LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBUeXBlOjpJbnB1dEV2ZW50KSk7CkBAIC00NzEsNyArNDcx
LDcgQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKIAogUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAg
YXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwg
U3RvcmVNb2RlOjpSZWFkV3JpdGUsIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4o
KSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9w
dFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFkV3JpdGUsIG1h
a2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSwgVHlwZTo6RHJhZ0FuZERyb3BEYXRhKSk7CiAg
ICAgZGF0YVRyYW5zZmVyLT5tX29yaWdpbklkZW50aWZpZXIgPSBkb2N1bWVudC5vcmlnaW5JZGVu
dGlmaWVyRm9yUGFzdGVib2FyZCgpOwogICAgIHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CkBAIC01
MDgsNyArNTA4LDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OnNldERyYWdJbWFnZShFbGVtZW50KiBl
bGVtZW50LCBpbnQgeCwgaW50IHkpCiAgICAgbV9kcmFnSW1hZ2UgPSBpbWFnZTsKICAgICBpZiAo
bV9kcmFnSW1hZ2UpIHsKICAgICAgICAgaWYgKCFtX2RyYWdJbWFnZUxvYWRlcikKLSAgICAgICAg
ICAgIG1fZHJhZ0ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEcmFnSW1hZ2VMb2FkZXI+
KHRoaXMpOworICAgICAgICAgICAgbV9kcmFnSW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPERyYWdJ
bWFnZUxvYWRlcj4odGhpcyk7CiAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyLT5zdGFydExvYWRp
bmcobV9kcmFnSW1hZ2UpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcAppbmRleCAzMzYyMjMxMDgxYjEzZjcyZGMxOGRh
YzVmMzkwN2E1ZTdjMTdiMGJmLi5mMjExMzFmZjgyNzgyMWRjNzRlODUwYTk4ZjFiYjIzMDk5ZTAy
NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyOjppc0FjdGl2ZUF0KFBhZ2UqIHBhZ2UpCiAKIHZvaWQgcHJvdmlkZURldmljZU9yaWVu
dGF0aW9uVG8oUGFnZSYgcGFnZSwgRGV2aWNlT3JpZW50YXRpb25DbGllbnQmIGNsaWVudCkKIHsK
LSAgICBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnByb3ZpZGVUbygmcGFnZSwgRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVl
PERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4oY2xpZW50KSk7CisgICAgRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8oJnBhZ2UsIERldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXI+KGNsaWVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCAwMTZkMDdhNjJmZTIwMDg1YmZhMGYwNjk2YzZlMWU0NjIxYzFmYzFl
Li41YjQ1ODI5OTliNjM1MzYwNDZhOWJiNzE3ODRiZmMxZDE2ZWRhNzAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTUyMSwxOSArNTIxLDE5IEBAIERvY3VtZW50OjpEb2N1bWVudChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2ln
CiAgICAgLCBtX3F1aXJrcyhtYWtlVW5pcXVlUmVmPFF1aXJrcz4oKnRoaXMpKQogICAgICwgbV9j
YWNoZWRSZXNvdXJjZUxvYWRlcihtX2ZyYW1lID8gUmVmPENhY2hlZFJlc291cmNlTG9hZGVyPiht
X2ZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpKSA6IENhY2hlZFJlc291cmNlTG9hZGVyOjpjcmVhdGUobnVsbHB0cikpCiAgICAgLCBt
X2RvbVRyZWVWZXJzaW9uKCsrc19nbG9iYWxUcmVlVmVyc2lvbikKLSAgICAsIG1fc3R5bGVTY29w
ZShzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQotICAgICwgbV9leHRlbnNp
b25TdHlsZVNoZWV0cyhzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvblN0eWxlU2hlZXRzPigqdGhp
cykpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxWaXNpdGVkTGlu
a1N0YXRlPigqdGhpcykpCi0gICAgLCBtX21hcmtlcnMoc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVl
PFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9leHRlbnNpb25TdHlsZVNoZWV0cyhtYWtl
VW5pcXVlPEV4dGVuc2lvblN0eWxlU2hlZXRzPigqdGhpcykpCisgICAgLCBtX3Zpc2l0ZWRMaW5r
U3RhdGUobWFrZVVuaXF1ZTxWaXNpdGVkTGlua1N0YXRlPigqdGhpcykpCisgICAgLCBtX21hcmtl
cnMobWFrZVVuaXF1ZTxEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1f
c3R5bGVSZWNhbGNUaW1lcihbdGhpc10geyB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7IH0pCiAgICAg
LCBtX2RvY3VtZW50Q3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQotICAgICwgbV9z
Y3JpcHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRSdW5uZXI+KCp0aGlzKSkKLSAgICAs
IG1fbW9kdWxlTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TW9kdWxlTG9hZGVyPigqdGhp
cykpCisgICAgLCBtX3NjcmlwdFJ1bm5lcihtYWtlVW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMp
KQorICAgICwgbV9tb2R1bGVMb2FkZXIobWFrZVVuaXF1ZTxTY3JpcHRNb2R1bGVMb2FkZXI+KCp0
aGlzKSkKICNpZiBFTkFCTEUoWFNMVCkKICAgICAsIG1fYXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jt
c1RpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lckZp
cmVkKQogI2VuZGlmCiAgICAgLCBtX3htbFZlcnNpb24oIjEuMCJfcykKLSAgICAsIG1fY29uc3Rh
bnRQcm9wZXJ0eU1hcChzdGQ6Om1ha2VfdW5pcXVlPENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlz
KSkKKyAgICAsIG1fY29uc3RhbnRQcm9wZXJ0eU1hcChtYWtlVW5pcXVlPENvbnN0YW50UHJvcGVy
dHlNYXA+KCp0aGlzKSkKICAgICAsIG1fZG9jdW1lbnRDbGFzc2VzKGRvY3VtZW50Q2xhc3NlcykK
ICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBA
IC01NDUsMTAgKzU0NSwxMCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZwogI2VuZGlmCiAgICAg
LCBtX2xvYWRFdmVudERlbGF5VGltZXIoKnRoaXMsICZEb2N1bWVudDo6bG9hZEV2ZW50RGVsYXlU
aW1lckZpcmVkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCi0gICAgLCBtX2RldmljZU1vdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERl
dmljZU1vdGlvbkNsaWVudElPUz4oKSkKLSAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPERldmljZU1vdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU1vdGlvbkNs
aWVudCkpCi0gICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
RGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1M+KCkpCi0gICAgLCBtX2RldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4o
Km1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQpKQorICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQo
bWFrZVVuaXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCisgICAgLCBtX2RldmljZU1vdGlv
bkNvbnRyb2xsZXIobWFrZVVuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VN
b3Rpb25DbGllbnQpKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChtYWtlVW5pcXVl
PERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TPigpKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIobWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KCptX2Rl
dmljZU9yaWVudGF0aW9uQ2xpZW50KSkKICNlbmRpZgogICAgICwgbV9wZW5kaW5nVGFza3NUaW1l
cigqdGhpcywgJkRvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKQogICAgICwgbV92aXN1
YWxVcGRhdGVzU3VwcHJlc3Npb25UaW1lcigqdGhpcywgJkRvY3VtZW50Ojp2aXN1YWxVcGRhdGVz
U3VwcHJlc3Npb25UaW1lckZpcmVkKQpAQCAtNzY1LDcgKzc2NSw3IEBAIEVsZW1lbnQqIERvY3Vt
ZW50OjplbGVtZW50Rm9yQWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KQogCiB2b2lkIERvY3Vt
ZW50OjpidWlsZEFjY2Vzc0tleUNhY2hlKCkKIHsKLSAgICBtX2FjY2Vzc0tleUNhY2hlID0gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4+KFt0aGlzXSB7CisgICAgbV9hY2Nlc3NLZXlDYWNoZSA9IG1ha2VVbmlxdWU8SGFz
aE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PihbdGhpc10g
ewogICAgICAgICBIYXNoTWFwPFN0cmluZywgRWxlbWVudCosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIG5vZGUgOiBjb21wb3NlZFRyZWVEZXNjZW5k
YW50cygqdGhpcykpIHsKICAgICAgICAgICAgIGlmICghaXM8RWxlbWVudD4obm9kZSkpCkBAIC03
OTAsNyArNzkwLDcgQEAgRXhjZXB0aW9uT3I8U2VsZWN0b3JRdWVyeSY+IERvY3VtZW50OjpzZWxl
Y3RvclF1ZXJ5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgc2VsZWMKICAgICBpZiAoc2VsZWN0b3JT
dHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3Ig
fTsKICAgICBpZiAoIW1fc2VsZWN0b3JRdWVyeUNhY2hlKQotICAgICAgICBtX3NlbGVjdG9yUXVl
cnlDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVyeUNhY2hlPigpOworICAgICAg
ICBtX3NlbGVjdG9yUXVlcnlDYWNoZSA9IG1ha2VVbmlxdWU8U2VsZWN0b3JRdWVyeUNhY2hlPigp
OwogICAgIHJldHVybiBtX3NlbGVjdG9yUXVlcnlDYWNoZS0+YWRkKHNlbGVjdG9yU3RyaW5nLCAq
dGhpcyk7CiB9CiAKQEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNldEFjdGl2
ZUxpbmtDb2xvcigpCiBET01JbXBsZW1lbnRhdGlvbiYgRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9u
KCkKIHsKICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24pCi0gICAgICAgIG1faW1wbGVtZW50YXRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUltcGxlbWVudGF0aW9uPigqdGhpcyk7CisgICAgICAg
IG1faW1wbGVtZW50YXRpb24gPSBtYWtlVW5pcXVlPERPTUltcGxlbWVudGF0aW9uPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2ltcGxlbWVudGF0aW9uOwogfQogCkBAIC0xNzcwLDcgKzE3NzAsNyBA
QCBOb2RlOjpOb2RlVHlwZSBEb2N1bWVudDo6bm9kZVR5cGUoKSBjb25zdAogRm9ybUNvbnRyb2xs
ZXImIERvY3VtZW50Ojpmb3JtQ29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2Zvcm1Db250cm9s
bGVyKQotICAgICAgICBtX2Zvcm1Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ29u
dHJvbGxlcj4oKTsKKyAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8Rm9ybUNv
bnRyb2xsZXI+KCk7CiAgICAgcmV0dXJuICptX2Zvcm1Db250cm9sbGVyOwogfQogCkBAIC0xOTk1
LDcgKzE5OTUsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4
dCwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIHVucwogICAgIEFTU0VSVCghbV9pblJl
bmRlclRyZWVVcGRhdGUpOwogICAgIFNldEZvclNjb3BlPGJvb2w+IGluUmVuZGVyVHJlZVVwZGF0
ZShtX2luUmVuZGVyVHJlZVVwZGF0ZSwgdHJ1ZSk7CiAKLSAgICBhdXRvIHRleHRVcGRhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpVcGRhdGU+KCp0aGlzKTsKKyAgICBhdXRvIHRleHRVcGRh
dGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpVcGRhdGU+KCp0aGlzKTsKICAgICB0ZXh0VXBkYXRlLT5h
ZGRUZXh0KHRleHQsIHsgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0
LCBXVEY6Om51bGxvcHQgfSk7CiAKICAgICBSZW5kZXJUcmVlVXBkYXRlciByZW5kZXJUcmVlVXBk
YXRlcigqdGhpcyk7CkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6
ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50
JgogU3R5bGVSZXNvbHZlciYgRG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyKCkKIHsKICAgICBpZiAoIW1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpCi0g
ICAgICAgIG1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVl
U3R5bGVSZXNvbHZlciA9IG1ha2VVbmlxdWU8U3R5bGVSZXNvbHZlcj4oKnRoaXMpOwogICAgIHJl
dHVybiAqbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcjsKIH0KIApAQCAtMjY4MCw3
ICsyNjgwLDcgQEAgQVhPYmplY3RDYWNoZSogRG9jdW1lbnQ6OmF4T2JqZWN0Q2FjaGUoKSBjb25z
dAogCiAgICAgQVNTRVJUKCZ0b3BEb2N1bWVudCA9PSB0aGlzIHx8ICFtX2F4T2JqZWN0Q2FjaGUp
OwogICAgIGlmICghdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlKSB7Ci0gICAgICAgIHRvcERv
Y3VtZW50Lm1fYXhPYmplY3RDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8QVhPYmplY3RDYWNoZT4o
dG9wRG9jdW1lbnQpOworICAgICAgICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBtYWtl
VW5pcXVlPEFYT2JqZWN0Q2FjaGU+KHRvcERvY3VtZW50KTsKICAgICAgICAgaGFzRXZlckNyZWF0
ZWRBbkFYT2JqZWN0Q2FjaGUgPSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gdG9wRG9jdW1lbnQu
bV9heE9iamVjdENhY2hlLmdldCgpOwpAQCAtMzA0NCw3ICszMDQ0LDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0UGFyc2luZyhib29sIGIpCiAgICAgbV9iUGFyc2luZyA9IGI7CiAKICAgICBpZiAobV9i
UGFyc2luZyAmJiAhbV9zaGFyZWRPYmplY3RQb29sKQotICAgICAgICBtX3NoYXJlZE9iamVjdFBv
b2wgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50U2hhcmVkT2JqZWN0UG9vbD4oKTsKKyAgICAg
ICAgbV9zaGFyZWRPYmplY3RQb29sID0gbWFrZVVuaXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBv
b2w+KCk7CiAKICAgICBpZiAoIW1fYlBhcnNpbmcgJiYgdmlldygpICYmICF2aWV3KCktPm5lZWRz
TGF5b3V0KCkpCiAgICAgICAgIHZpZXcoKS0+ZmlyZUxheW91dFJlbGF0ZWRNaWxlc3RvbmVzSWZO
ZWVkZWQoKTsKQEAgLTU1NzQsNyArNTU3NCw3IEBAIGNvbnN0IFNWR0RvY3VtZW50RXh0ZW5zaW9u
cyogRG9jdW1lbnQ6OnN2Z0V4dGVuc2lvbnMoKQogU1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBEb2N1
bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX3N2Z0V4dGVuc2lvbnMp
Ci0gICAgICAgIG1fc3ZnRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHRG9jdW1lbnRF
eHRlbnNpb25zPigqdGhpcyk7CisgICAgICAgIG1fc3ZnRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8
U1ZHRG9jdW1lbnRFeHRlbnNpb25zPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3N2Z0V4dGVuc2lv
bnM7CiB9CiAKQEAgLTU3NzksNyArNTc3OSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0
eUNvbnRleHQoKQogICAgICAgICAvLyBUaGlzIGNhbiBvY2N1ciB2aWEgZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoKS4KICAgICAgICAgc2V0Q29va2llVVJMKFVSTCh7IH0s
IGVtcHR5U3RyaW5nKCkpKTsKICAgICAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJp
dHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpKTsK
LSAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dFNlY3VyaXR5UG9saWN5PihVUkwgeyB7IH0sIGVtcHR5U3RyaW5nKCkgfSwgKnRoaXMpKTsKKyAg
ICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5
UG9saWN5PihVUkwgeyB7IH0sIGVtcHR5U3RyaW5nKCkgfSwgKnRoaXMpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNTc5OCw3ICs1Nzk4LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNl
Y3VyaXR5Q29udGV4dCgpCiAgICAgICAgIGlzU2VjdXJpdHlPcmlnaW5VbmlxdWUgPSBkb2N1bWVu
dExvYWRlciAmJiBkb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS50YWludGluZygpID09IFJlc291
cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpPcGFxdWU7CiAKICAgICBzZXRTZWN1cml0eU9yaWdpblBv
bGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKGlzU2VjdXJpdHlPcmlnaW5VbmlxdWUg
PyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KG1fdXJsKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBzZXRD
b250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVS
TCB7IG1fdXJsIH0sICp0aGlzKSk7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2VjdXJp
dHlQb2xpY3kgPSBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5vdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeSgpOwogICAgIGlmICghb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kuaXNO
dWxsKCkpCkBAIC02MDM2LDcgKzYwMzYsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6Om5hbWVGb3JDU1ND
YW52YXNFbGVtZW50KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50KQogVGV4
dEF1dG9TaXppbmcmIERvY3VtZW50Ojp0ZXh0QXV0b1NpemluZygpCiB7CiAgICAgaWYgKCFtX3Rl
eHRBdXRvU2l6aW5nKQotICAgICAgICBtX3RleHRBdXRvU2l6aW5nID0gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0QXV0b1NpemluZz4oKTsKKyAgICAgICAgbV90ZXh0QXV0b1NpemluZyA9IG1ha2VVbmlx
dWU8VGV4dEF1dG9TaXppbmc+KCk7CiAgICAgcmV0dXJuICptX3RleHRBdXRvU2l6aW5nOwogfQog
I2VuZGlmIC8vIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC02NDAzLDcgKzY0MDMsNyBAQCB2
b2lkIERvY3VtZW50Ojp3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKCkKIHZvaWQgRG9jdW1lbnQ6
OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKCFtX3doZWVs
RXZlbnRUYXJnZXRzKQotICAgICAgICBtX3doZWVsRXZlbnRUYXJnZXRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxFdmVudFRhcmdldFNldD4oKTsKKyAgICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IG1h
a2VVbmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CiAKICAgICBtX3doZWVsRXZlbnRUYXJnZXRzLT5h
ZGQoJm5vZGUpOwogCkBAIC02NDYzLDcgKzY0NjMsNyBAQCB2b2lkIERvY3VtZW50OjpkaWRBZGRU
b3VjaEV2ZW50SGFuZGxlcihOb2RlJiBoYW5kbGVyKQogewogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgaWYgKCFtX3RvdWNoRXZlbnRUYXJnZXRzKQotICAgICAgICBtX3RvdWNoRXZlbnRU
YXJnZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldFNldD4oKTsKKyAgICAgICAgbV90
b3VjaEV2ZW50VGFyZ2V0cyA9IG1ha2VVbmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CiAKICAgICBt
X3RvdWNoRXZlbnRUYXJnZXRzLT5hZGQoJmhhbmRsZXIpOwogCkBAIC04MDUxLDcgKzgwNTEsNyBA
QCB2b2lkIERvY3VtZW50OjpkaWRMb2dNZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmIGNoYW5u
ZWwsIFdURkxvZ0xldmVsIGxldmVsLCBWZQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGF1dG8gbWVzc2FnZUxldmVsID0gbWVzc2FnZUxldmVsRnJvbVdURkxvZ0xldmVsKGxldmVsKTsK
LSAgICAgICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWws
IFdURk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOworICAg
ICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShs
b2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSgpKSk7CiAKICAgICAgICAgYWRk
Q29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiAgICAgfSk7CkBAIC04MDg2LDcgKzgw
ODYsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0CiAKIGJvb2wgRG9jdW1lbnQ6OnJlZ2lzdGVy
Q1NTUHJvcGVydHkoQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5JiYgcHJvcCkKIHsKLSAgICBy
ZXR1cm4gbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRkKHByb3AubmFtZSwgc3RkOjptYWtl
X3VuaXF1ZTxDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1vdmUocHJvcCkpKS5pc05l
d0VudHJ5OworICAgIHJldHVybiBtX0NTU1JlZ2lzdGVyZWRQcm9wZXJ0eVNldC5hZGQocHJvcC5u
YW1lLCBtYWtlVW5pcXVlPENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eT4oV1RGTW92ZShwcm9w
KSkpLmlzTmV3RW50cnk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmRldGFjaEZyb21GcmFtZSgpCkBA
IC04MTgwLDcgKzgxODAsNyBAQCBEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRy
b2xsZXImIERvY3VtZW50OjpkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbgogICAgICAgICByZXR1
cm4gdG9wRG9jdW1lbnQoKS5kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xs
ZXIoKTsKIAogICAgIGlmICghbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRy
b2xsZXIpCi0gICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9s
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0Nv
bnRyb2xsZXI+KCp0aGlzKTsKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2Vzc0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNj
ZXNzQ29udHJvbGxlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9kZXZpY2VPcmllbnRhdGlvbkFu
ZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI7CiB9CiAKQEAgLTgyMTEsNyArODIxMSw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnNldFBhaW50V29ya2xldEdsb2JhbFNjb3BlRm9yTmFtZShjb25zdCBTdHJpbmcm
IG5hbWUsIFJlZjxQYWludFdvCiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXImIERvY3VtZW50Ojpjb250
ZW50Q2hhbmdlT2JzZXJ2ZXIoKQogewogICAgIGlmICghbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXIp
Ci0gICAgICAgIG1fY29udGVudENoYW5nZU9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250
ZW50Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsKKyAgICAgICAgbV9jb250ZW50Q2hhbmdlT2JzZXJ2
ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRDaGFuZ2VPYnNlcnZlcj4oKnRoaXMpOwogICAgIHJldHVy
biAqbV9jb250ZW50Q2hhbmdlT2JzZXJ2ZXI7IAogfQogCkBAIC04MjE5LDcgKzgyMTksNyBAQCBE
T01UaW1lckhvbGRpbmdUYW5rJiBEb2N1bWVudDo6ZG9tVGltZXJIb2xkaW5nVGFuaygpCiB7CiAg
ICAgaWYgKG1fZG9tVGltZXJIb2xkaW5nVGFuaykKICAgICAgICAgcmV0dXJuICptX2RvbVRpbWVy
SG9sZGluZ1Rhbms7Ci0gICAgbV9kb21UaW1lckhvbGRpbmdUYW5rID0gc3RkOjptYWtlX3VuaXF1
ZTxET01UaW1lckhvbGRpbmdUYW5rPigpOworICAgIG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IG1h
a2VVbmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4oKTsKICAgICByZXR1cm4gKm1fZG9tVGltZXJI
b2xkaW5nVGFuazsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5ODU5MGMxMGU0ODM2Nzdk
YmJkMjBmOGIyNDMwMzgzYTZhOTY4MmVkLi4xNjEyZTQyMGVjYTExYzRkYWQxMzVjZDkxMGZlNDU3
NmVmZTcyYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTI4NCw3ICsxMjg0LDcgQEAgY2xh
c3MgRG9jdW1lbnQKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEb2N1bWVudFBhcnNlcllpZWxkVG9r
ZW4+IGNyZWF0ZVBhcnNlcllpZWxkVG9rZW4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuPigqdGhpcyk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOwogICAgIH0K
IAogICAgIGJvb2wgaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyc2VyWWllbGRUb2tlbkNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuY3BwCmluZGV4IDAxYzdmOTZlMDJlOWViZDU4ODUzZmI1ZGIxYzRiODgyMWUyZjk3Mjgu
LjAzNzAzYjYyYmM2NTA1NTc4YjM4OWI5OTkzOGE0ZGFhYjZkNzZjN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIERv
Y3VtZW50RXZlbnRRdWV1ZTo6VGltZXIgZmluYWwgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7
CiAKIERvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKERvY3VtZW50JiBkb2N1
bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3BlbmRpbmdFdmVudFRp
bWVyKHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzKSkKKyAgICAsIG1fcGVuZGluZ0V2ZW50
VGltZXIobWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMpKQogICAgICwgbV9pc0Nsb3NlZChmYWxzZSkK
IHsKICAgICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggNzI5MWQ0
YWRlZTlmNDE3N2ZkYmZlZmVlZmRkZjI2NzA1NGE5YzRmMC4uZTc2NDFhZjYyMThiZjEzYWIwZTNj
Njg5MjAyMGRlODg5YzRlOTA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKE5vZGUmIG5vZGUsIGNvbnN0IERvY3VtZW50TWFya2Vy
JiBuZXdNYQogICAgIHN0ZDo6dW5pcXVlX3B0cjxNYXJrZXJMaXN0PiYgbGlzdCA9IG1fbWFya2Vy
cy5hZGQoJm5vZGUsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGlmICghbGlzdCkg
ewotICAgICAgICBsaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJMaXN0PigpOworICAgICAg
ICBsaXN0ID0gbWFrZVVuaXF1ZTxNYXJrZXJMaXN0PigpOwogICAgICAgICBsaXN0LT5hcHBlbmQo
UmVuZGVyZWREb2N1bWVudE1hcmtlcihuZXdNYXJrZXIpKTsKICAgICB9IGVsc2UgaWYgKHNob3Vs
ZEluc2VydEFzU2VwYXJhdGVNYXJrZXIobmV3TWFya2VyKSkgewogICAgICAgICAvLyBXZSBkb24n
dCBtZXJnZSBkaWN0YXRpb24gbWFya2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
U3RvcmFnZUFjY2Vzcy5jcHAKaW5kZXggODFlZmIxMGQ1ZTc2ZWRiNmY2ZDM4MzUzMDA1MWQyOWMz
ODhlYWZkYi4uODU1YTJhMDY1NmY3MWI0NWVlOGQ0ZmZmMjg0YTUzNTM3OWEzODc5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20o
RG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxEb2N1bWVudFN0b3JhZ2VBY2Nlc3MqPihTdXBwbGVtZW50PERvY3VtZW50Pjo6ZnJvbSgmZG9j
dW1lbnQsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M+KGRvY3VtZW50KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1
ZTxEb2N1bWVudFN0b3JhZ2VBY2Nlc3M+KGRvY3VtZW50KTsKICAgICAgICAgc3VwcGxlbWVudCA9
IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmZG9jdW1lbnQsIHN1cHBs
ZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KQEAgLTE4Myw3ICsx
ODMsNyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICBib29sIHNob3VsZFByZXNl
cnZlVXNlckdlc3R1cmUgPSB3YXNHcmFudGVkID09IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZ
ZXMgfHwgcHJvbXB0V2FzU2hvd24gPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObzsK
IAogICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSkgewotICAgICAgICAgICAg
TWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VXZWFrUHRyKCpkb2N1bWVu
dCldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5h
cHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtl
V2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LT5lbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKICAgICAgICAgICAgIH0pKTsK
QEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAgICAgICAgIE1p
Y3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxW
b2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJl
bmNlKV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgp
LmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFtkb2N1bWVudFJlZmVyZW5jZSA9IFdU
Rk1vdmUoZG9jdW1lbnRSZWZlcmVuY2UpXSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVuY2UuZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LT5jb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAg
ICB9KSk7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIAogdm9p
ZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgp
CiB7Ci0gICAgbV90ZW1wb3JhcnlVc2VyR2VzdHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlckdl
c3R1cmVJbmRpY2F0b3I+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgJm1fZG9jdW1lbnQpOworICAg
IG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBtYWtlVW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9y
PihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50KTsKIH0KIAogdm9pZCBEb2N1bWVu
dFN0b3JhZ2VBY2Nlc3M6OmNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDQ1MTYxYzljYTIwYmFkNjkzMzAwNTFkMDlhNTVmMGFmYTU1ODZj
YzYuLmVlYjFmMzQyOWQ2NGVmYzRkYjBiMTMwZDEzN2YzMTZlMzUwZDBkOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBOYW1lZE5vZGVNYXAmIEVsZW1lbnQ6OmF0
dHJpYnV0ZXMoKSBjb25zdAogICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IHJh
cmVEYXRhLmF0dHJpYnV0ZU1hcCgpKQogICAgICAgICByZXR1cm4gKmF0dHJpYnV0ZU1hcDsKIAot
ICAgIHJhcmVEYXRhLnNldEF0dHJpYnV0ZU1hcChzdGQ6Om1ha2VfdW5pcXVlPE5hbWVkTm9kZU1h
cD4oY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpKSk7CisgICAgcmFyZURhdGEuc2V0QXR0cmli
dXRlTWFwKG1ha2VVbmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVsZW1lbnQmPigqdGhp
cykpKTsKICAgICByZXR1cm4gKnJhcmVEYXRhLmF0dHJpYnV0ZU1hcCgpOwogfQogCkBAIC0yMzA3
LDcgKzIzMDcsNyBAQCB2b2lkIEVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50ZXJmYQogICAgIHNldEZsYWcoSXNDdXN0
b21FbGVtZW50KTsKICAgICBhdXRvJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAg
ICAgaWYgKCFkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCkpCi0gICAgICAgIGRhdGEu
c2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAgICAgICBkYXRhLnNldEN1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKICAgICBpbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVl
KCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDdXN0b21FbGVtZW50
U3RhdGUoKnRoaXMpOwogfQpAQCAtMjM0NCw3ICsyMzQ0LDcgQEAgdm9pZCBFbGVtZW50OjplbnF1
ZXVlVG9VcGdyYWRlKEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVyZmFjZSkK
ICAgICBhdXRvJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgYm9vbCBhbHJl
YWR5U2NoZWR1bGVkVG9VcGdyYWRlID0gZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgp
OwogICAgIGlmICghYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSkKLSAgICAgICAgZGF0YS5zZXRD
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CisgICAgICAgIGRhdGEuc2V0Q3VzdG9t
RWxlbWVudFJlYWN0aW9uUXVldWUobWFrZVVuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZT4oZWxlbWVudEludGVyZmFjZSkpOwogICAgIGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUoKS0+ZW5xdWV1ZUVsZW1lbnRVcGdyYWRlKCp0aGlzLCBhbHJlYWR5U2NoZWR1bGVkVG9VcGdy
YWRlKTsKIH0KIApAQCAtMzQ4MCw3ICszNDgwLDcgQEAgRE9NVG9rZW5MaXN0JiBFbGVtZW50Ojpj
bGFzc0xpc3QoKQogewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5jbGFzc0xpc3QoKSkKLSAgICAgICAgZGF0YS5zZXRD
bGFzc0xpc3Qoc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6
OmNsYXNzQXR0cikpOworICAgICAgICBkYXRhLnNldENsYXNzTGlzdChtYWtlVW5pcXVlPERPTVRv
a2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CiAgICAgcmV0dXJuICpkYXRh
LmNsYXNzTGlzdCgpOwogfQogCkBAIC0zNDg4LDcgKzM0ODgsNyBAQCBEYXRhc2V0RE9NU3RyaW5n
TWFwJiBFbGVtZW50OjpkYXRhc2V0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBl
bnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuZGF0YXNldCgpKQotICAgICAg
ICBkYXRhLnNldERhdGFzZXQoc3RkOjptYWtlX3VuaXF1ZTxEYXRhc2V0RE9NU3RyaW5nTWFwPigq
dGhpcykpOworICAgICAgICBkYXRhLnNldERhdGFzZXQobWFrZVVuaXF1ZTxEYXRhc2V0RE9NU3Ry
aW5nTWFwPigqdGhpcykpOwogICAgIHJldHVybiAqZGF0YS5kYXRhc2V0KCk7CiB9CiAKQEAgLTM2
MzIsNyArMzYzMiw3IEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJl
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEuaW50ZXJzZWN0aW9uT2JzZXJ2
ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRhLnNldEludGVyc2VjdGlvbk9ic2VydmVyRGF0YShz
dGQ6Om1ha2VfdW5pcXVlPEludGVyc2VjdGlvbk9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJh
cmVEYXRhLnNldEludGVyc2VjdGlvbk9ic2VydmVyRGF0YShtYWtlVW5pcXVlPEludGVyc2VjdGlv
bk9ic2VydmVyRGF0YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5pbnRlcnNlY3Rpb25PYnNl
cnZlckRhdGEoKTsKIH0KIApAQCAtMzY1OCw3ICszNjU4LDcgQEAgUmVzaXplT2JzZXJ2ZXJEYXRh
JiBFbGVtZW50OjplbnN1cmVSZXNpemVPYnNlcnZlckRhdGEoKQogewogICAgIGF1dG8mIHJhcmVE
YXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS5yZXNpemVP
YnNlcnZlckRhdGEoKSkKLSAgICAgICAgcmFyZURhdGEuc2V0UmVzaXplT2JzZXJ2ZXJEYXRhKHN0
ZDo6bWFrZV91bmlxdWU8UmVzaXplT2JzZXJ2ZXJEYXRhPigpKTsKKyAgICAgICAgcmFyZURhdGEu
c2V0UmVzaXplT2JzZXJ2ZXJEYXRhKG1ha2VVbmlxdWU8UmVzaXplT2JzZXJ2ZXJEYXRhPigpKTsK
ICAgICByZXR1cm4gKnJhcmVEYXRhLnJlc2l6ZU9ic2VydmVyRGF0YSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKaW5kZXggZDllNjYzNDljYmRiYTBiYjgxZDJh
Y2ZiZmRjMGQ0MzM3OGM2NThkYi4uMGIwOWQwODJjMzZlZGRkODRiOWNkZTk4ODI1MjcyZGI1Zjk2
ZTViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtMTQyLDcg
KzE0Miw3IEBAIGJvb2wgRXZlbnRMaXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGF1dG8gbGlzdGVuZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudExpc3Rl
bmVyVmVjdG9yPigpOworICAgIGF1dG8gbGlzdGVuZXJzID0gbWFrZVVuaXF1ZTxFdmVudExpc3Rl
bmVyVmVjdG9yPigpOwogICAgIGxpc3RlbmVycy0+dW5jaGVja2VkQXBwZW5kKFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShsaXN0ZW5lciksIG9wdGlvbnMpKTsKICAgICBt
X2VudHJpZXMuYXBwZW5kKHsgZXZlbnRUeXBlLCBXVEZNb3ZlKGxpc3RlbmVycykgfSk7CiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA5ZTkzMDhiYjVkYTE0NjFl
MzU4ZTNjYzYyZmVhZmRjZmNkMGNjN2FkLi41YjZhYjY4NzU1YjYxYmZlMmQ0YTY4YmNiZTc1MjRm
ZDBkZGFiYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTMzOSwxMyArMzM5LDEzIEBA
IHN0cnVjdCBFdmVudE5hbWVzIHsKICAgICBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0goRE9NX0VW
RU5UX05BTUVTX0RFQ0xBUkUpCiAjdW5kZWYgRE9NX0VWRU5UX05BTUVTX0RFQ0xBUkUKIAotICAg
IC8vIEZJWE1FOiBUaGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIHN0ZDo6bWFrZV91bmlxdWUgYmVs
b3cgZG9lcyBub3Qgd29yayBpbiB3aW5kb3dzIHBvcnQuCisgICAgLy8gRklYTUU6IFRoZSBmcmll
bmQgZGVjbGFyYXRpb24gdG8gbWFrZVVuaXF1ZSBiZWxvdyBkb2VzIG5vdCB3b3JrIGluIHdpbmRv
d3MgcG9ydC4KICAgICAvLwogICAgIC8vIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFyZ3M+
Ci0gICAgLy8gZnJpZW5kIHR5cGVuYW1lIHN0ZDo6X1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmpl
Y3Qgc3RkOjptYWtlX3VuaXF1ZShBcmdzJiYuLi4pOworICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBz
dGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5nbGVfb2JqZWN0IG1ha2VVbmlxdWUoQXJncyYmLi4uKTsK
ICAgICAvLwogICAgIC8vIFRoaXMgY3JlYXRlIGZ1bmN0aW9uIHNob3VsZCBiZSBkZWxldGVkIGxh
dGVyIGFuZCBpcyBvbmx5IGZvciBrZWVwaW5nIEV2ZW50TmFtZXMgYXMgcHJpdmF0ZS4KLSAgICAv
LyBzdGQ6Om1ha2VfdW5pcXVlIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisgICAgLy8gbWFrZVVu
aXF1ZSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgogICAgIC8vCiAgICAgdGVtcGxhdGU8Y2xhc3Mu
Li4gQXJncz4KICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEV2ZW50TmFtZXM+IGNyZWF0ZShB
cmdzJiYuLi4gYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKaW5kZXggZGIxNDI4ZDFkNDI2
MDU4Y2I2NWIxZWI2ZmFjYTIzZGI5ODkyODJiZC4uYTBhZDBhZDdjNDgyNjkyZTYzOGU1NzI4MGYx
YTI5MjQ3YWNlYzE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAKQEAgLTExNSwxNyArMTE1
LDE3IEBAIHZvaWQgRXZlbnRQYXRoOjpidWlsZFBhdGgoTm9kZSYgb3JpZ2luYWxUYXJnZXQsIEV2
ZW50JiBldmVudCkKIHsKICAgICB1c2luZyBNYWtlRXZlbnRDb250ZXh0ID0gc3RkOjp1bmlxdWVf
cHRyPEV2ZW50Q29udGV4dD4gKCopKE5vZGUmLCBFdmVudFRhcmdldCosIEV2ZW50VGFyZ2V0Kiwg
aW50IGNsb3NlZFNoYWRvd0RlcHRoKTsKICAgICBNYWtlRXZlbnRDb250ZXh0IG1ha2VFdmVudENv
bnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZlbnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50
VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRTaGFkb3dEZXB0aCkgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KCZub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJn
ZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RXZlbnRD
b250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7
CiAgICAgfTsKICAgICBpZiAoaXM8TW91c2VFdmVudD4oZXZlbnQpIHx8IGV2ZW50LmlzRm9jdXNF
dmVudCgpKSB7CiAgICAgICAgIG1ha2VFdmVudENvbnRleHQgPSBbXSAoTm9kZSYgbm9kZSwgRXZl
bnRUYXJnZXQqIGN1cnJlbnRUYXJnZXQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQsIGludCBjbG9zZWRT
aGFkb3dEZXB0aCkgLT4gc3RkOjp1bmlxdWVfcHRyPEV2ZW50Q29udGV4dD4gewotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2Rl
LCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVu
dFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgaWYgKGlzPFRvdWNoRXZlbnQ+KGV2ZW50KSkg
ewogICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0
KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVw
dGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRvdWNoRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0
LCB0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFRvdWNoRXZlbnRDb250ZXh0Pihub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQsIGNsb3Nl
ZFNoYWRvd0RlcHRoKTsKICAgICAgICAgfTsKICAgICB9CiAjZW5kaWYKQEAgLTE0OSw3ICsxNDks
NyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2V0LCBFdmVu
dCYgZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAodGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0
byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpub2RlKS5kb21XaW5kb3coKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V2lu
ZG93RXZlbnRDb250ZXh0Pigqbm9kZSwgKndpbmRvdywgKnRhcmdldCwgY2xvc2VkU2hhZG93RGVw
dGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlx
dWU8V2luZG93RXZlbnRDb250ZXh0Pigqbm9kZSwgKndpbmRvdywgKnRhcmdldCwgY2xvc2VkU2hh
ZG93RGVwdGgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDgsNyArMzA4LDcgQEAgRXZlbnRQYXRoOjpFdmVu
dFBhdGgoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgdGFyZ2V0cykKICAgICAgICAgQVNTRVJUKHRh
cmdldCk7CiAgICAgICAgIE5vZGUqIG9yaWdpbiA9ICp0YXJnZXRzLmJlZ2luKCk7CiAgICAgICAg
IGlmICghdGFyZ2V0LT5pc0Nsb3NlZFNoYWRvd0hpZGRlbigqb3JpZ2luKSkKLSAgICAgICAgICAg
IG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KHRhcmdldCwgdGFy
Z2V0LCBvcmlnaW4sIDApKTsKKyAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQobWFrZVVuaXF1ZTxF
dmVudENvbnRleHQ+KHRhcmdldCwgdGFyZ2V0LCBvcmlnaW4sIDApKTsKICAgICB9CiB9CiAKQEAg
LTMxNyw3ICszMTcsNyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChjb25zdCBWZWN0b3I8RXZlbnRU
YXJnZXQqPiYgdGFyZ2V0cykKICAgICBmb3IgKGF1dG8qIHRhcmdldCA6IHRhcmdldHMpIHsKICAg
ICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgIEFTU0VSVCghaXM8Tm9kZT4odGFyZ2V0KSk7
Ci0gICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxFdmVudENvbnRleHQ+KG51
bGxwdHIsIHRhcmdldCwgKnRhcmdldHMuYmVnaW4oKSwgMCkpOworICAgICAgICBtX3BhdGguYXBw
ZW5kKG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJl
Z2luKCksIDApKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9J
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKaW5kZXggYjNhMDZlNDdiMDcwMGY3YzQ3ZDNkOWFlZjMzZjQ0
MzcyNGUwYzU1ZS4uOTQwZWZjYWVkODMwOTFjMjU4M2ZhOWUzMzZlZjNkNzhjNTRhYTNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgdm9pZCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVy
KGNvbnN0IEF0b21TdHJpbmcmIGlkLCBJZFRhcmdldE9ic2VydmUKICAgICAKICAgICBJZFRvT2Jz
ZXJ2ZXJTZXRNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3JlZ2lzdHJ5LmFkZChpZC5pbXBsKCks
IG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T2JzZXJ2ZXJTZXQ+KCk7CisgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE9ic2VydmVyU2V0PigpOwogCiAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkKG9ic2VydmVyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9LZXlib2FyZEV2ZW50LmNwcAppbmRleCA3ZTdhMzQ3OTdiODYyOWY2MmY3Zjc4NmFiMTRjNWM2
ZjViZDkwYjE0Li5jZTg1NmJiNTVkNWJkOTllNjZmNTBjYjU1YjBiZTQ3OTBlMDk4NDUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIGlubGluZSBL
ZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KCkgPSBkZWZhdWx0OwogaW5saW5lIEtleWJvYXJk
RXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXksIFJl
ZlB0cjxXaW5kb3dQcm94eT4mJiB2aWV3KQogICAgIDogVUlFdmVudFdpdGhLZXlTdGF0ZShldmVu
dFR5cGVGb3JLZXlib2FyZEV2ZW50VHlwZShrZXkudHlwZSgpKSwgQ2FuQnViYmxlOjpZZXMsIElz
Q2FuY2VsYWJsZTo6WWVzLCBJc0NvbXBvc2VkOjpZZXMsCiAgICAgICAgIGtleS50aW1lc3RhbXAo
KS5hcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSwgdmlldy5jb3B5UmVmKCksIDAsIGtleS5tb2Rp
ZmllcnMoKSwgSXNUcnVzdGVkOjpZZXMpCi0gICAgLCBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1LZXlib2FyZEV2ZW50PihrZXkpKQorICAgICwgbV91
bmRlcmx5aW5nUGxhdGZvcm1FdmVudChtYWtlVW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4o
a2V5KSkKICNpZiBFTkFCTEUoS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkKICAgICAsIG1fa2V5KGtl
eS5rZXkoKSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCmlu
ZGV4IDY2YzVlYTBiOWQ2MzQ1NDQzODEyZmIxMzFmZmU1ZGJlNmNhMWRkZjMuLjE5M2YyNzgwNWE1
YWVkNGI2MDZlOWNlZWEzYTlhMzVkOGIxZTk5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgdm9pZCBxdWV1ZU11dGF0
aW9uT2JzZXJ2ZXJDb21wb3VuZE1pY3JvdGFzaygpCiAgICAgaWYgKG11dGF0aW9uT2JzZXJ2ZXJD
b21wb3VuZE1pY3JvdGFza1F1ZXVlZEZsYWcpCiAgICAgICAgIHJldHVybjsKICAgICBtdXRhdGlv
bk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnID0gdHJ1ZTsKLSAgICBNaWNyb3Rh
c2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRp
b25PYnNlcnZlck1pY3JvdGFzaz4oKSk7CisgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRR
dWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkpOwog
fQogCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmVucXVldWVNdXRhdGlvblJlY29yZChSZWY8TXV0
YXRpb25SZWNvcmQ+JiYgbXV0YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAppbmRleCA1MmRhNjFmNzRmMWY1N2FmNjg1
NDlmMzY2NTYzMDZkOGQxNzAzYzc5Li4wMjc2ZTQyYmU1YmQ4M2ZmNDJhNzkzNTZiZGU5Y2U3MzYw
OTljYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPE11dGF0
aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6
Y3IKICAgICBpZiAob2JzZXJ2ZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPihXVEZNb3ZlKG9ic2VydmVycyks
IG9sZFZhbHVlRmxhZyk7CiB9CiAKIGJvb2wgTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6
OmlzT2xkVmFsdWVSZXF1ZXN0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGM4ZmMwMTA2NzI0NWU0ZTM2
MTk3YTJmNmQ0ZDFlNDU3NTQ3YmJjOGEuLmU1YzZkZDE2YTRkYjYwOWJhNTI3M2E0N2FmN2ZhNjgy
NjYyYTJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJhdGlvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uOjpvYnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaChOb2RlJiBub2RlKQog
ICAgIG1fb2JzZXJ2ZXItPnNldEhhc1RyYW5zaWVudFJlZ2lzdHJhdGlvbigpOwogCiAgICAgaWYg
KCFtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzKSB7Ci0gICAgICAgIG1fdHJhbnNpZW50UmVn
aXN0cmF0aW9uTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8R0NSZWFjaGFibGVSZWY8
Tm9kZT4+PigpOworICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gbWFrZVVu
aXF1ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKIAogICAgICAgICBBU1NFUlQo
IW1fbm9kZUtlcHRBbGl2ZSk7CiAgICAgICAgIG1fbm9kZUtlcHRBbGl2ZSA9ICZtX25vZGU7IC8v
IEJhbGFuY2VkIGluIHRha2VUcmFuc2llbnRSZWdpc3RyYXRpb25zLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmlu
ZGV4IDc2ZDRlYTlkNzMwYTkyMzcyYTlmOGU3YTZkOGY2N2QwMGZkM2RiZjUuLmNhYmYxZWI1OGM5
YzIzY2FkODg1YmQwMWRmMTIyYjY1MWFlMDJiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTM5OCw5
ICszOTgsOSBAQCB2b2lkIE5vZGU6Om1hdGVyaWFsaXplUmFyZURhdGEoKQogewogICAgIE5vZGVS
YXJlRGF0YSogZGF0YTsKICAgICBpZiAoaXM8RWxlbWVudD4oKnRoaXMpKQotICAgICAgICBkYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRlckVsZW1l
bnQ+KG1fZGF0YS5tX3JlbmRlcmVyKSkucmVsZWFzZSgpOworICAgICAgICBkYXRhID0gbWFrZVVu
aXF1ZTxFbGVtZW50UmFyZURhdGE+KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KG1fZGF0YS5tX3Jl
bmRlcmVyKSkucmVsZWFzZSgpOwogICAgIGVsc2UKLSAgICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8Tm9kZVJhcmVEYXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOworICAgICAg
ICBkYXRhID0gbWFrZVVuaXF1ZTxOb2RlUmFyZURhdGE+KG1fZGF0YS5tX3JlbmRlcmVyKS5yZWxl
YXNlKCk7CiAgICAgQVNTRVJUKGRhdGEpOwogCiAgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBkYXRh
OwpAQCAtMjIxNSw3ICsyMjE1LDcgQEAgRXZlbnRUYXJnZXREYXRhJiBOb2RlOjplbnN1cmVFdmVu
dFRhcmdldERhdGEoKQogCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX2V2ZW50VGFyZ2V0
RGF0YU1hcExvY2spOwogICAgIHNldEhhc0V2ZW50VGFyZ2V0RGF0YSh0cnVlKTsKLSAgICByZXR1
cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqZXZlbnRUYXJnZXRE
YXRhTWFwKCkuYWRkKHRoaXMsIG1ha2VVbmlxdWU8RXZlbnRUYXJnZXREYXRhPigpKS5pdGVyYXRv
ci0+dmFsdWU7CiB9CiAKIHZvaWQgTm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEoKQpAQCAtMjI4
Nyw3ICsyMjg3LDcgQEAgdm9pZCBOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRp
b25PYnNlcnZlciYgb2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIKICAgICB9CiAKICAgICBpZiAo
IXJlZ2lzdHJhdGlvbikgewotICAgICAgICByZWdpc3RyeS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9wdGlvbnMs
IGF0dHJpYnV0ZUZpbHRlcikpOworICAgICAgICByZWdpc3RyeS5hcHBlbmQobWFrZVVuaXF1ZTxN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgKnRoaXMsIG9wdGlvbnMsIGF0
dHJpYnV0ZUZpbHRlcikpOwogICAgICAgICByZWdpc3RyYXRpb24gPSByZWdpc3RyeS5sYXN0KCku
Z2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNzY5MGQ1OTlm
Y2E3ZGM5OWNiNDllMTYwZmJlMmFmYWRkZjAwY2RmNC4uNzY2ZDY3ZjNmNmQ2MjlhZjA4OTQyYWRj
MjNlMmMyMmMyOWYzZTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMjgxLDcg
KzI4MSw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsK
ICAgICBOb2RlTGlzdHNOb2RlRGF0YSYgZW5zdXJlTm9kZUxpc3RzKCkKICAgICB7CiAgICAgICAg
IGlmICghbV9ub2RlTGlzdHMpCi0gICAgICAgICAgICBtX25vZGVMaXN0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CisgICAgICAgICAgICBtX25vZGVMaXN0cyA9IG1h
a2VVbmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9ub2RlTGlz
dHM7CiAgICAgfQogCkBAIC0yODksNyArMjg5LDcgQEAgY2xhc3MgTm9kZVJhcmVEYXRhIDogcHVi
bGljIE5vZGVSYXJlRGF0YUJhc2UgewogICAgIE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YSYgZW5z
dXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKQogICAgIHsKICAgICAgICAgaWYgKCFtX211dGF0aW9u
T2JzZXJ2ZXJEYXRhKQotICAgICAgICAgICAgbV9tdXRhdGlvbk9ic2VydmVyRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhPigpOworICAgICAgICAgICAgbV9t
dXRhdGlvbk9ic2VydmVyRGF0YSA9IG1ha2VVbmlxdWU8Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRh
PigpOwogICAgICAgICByZXR1cm4gKm1fbXV0YXRpb25PYnNlcnZlckRhdGE7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAppbmRleCA1MzM3YzU4Y2RmYmJh
YWIyMzAxODQ1MDI2MzhkYzYzNDQ5Zjc5NmFjLi42MWJiYzRlZGZmOTM0YTY0NDZlYTI1Njc1NTY2
M2ZkNTQ2ODc3ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25H
cm91cHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAK
QEAgLTE5OCwxMSArMTk4LDExIEBAIHZvaWQgUmFkaW9CdXR0b25Hcm91cHM6OmFkZEJ1dHRvbihI
VE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
bmFtZVRvR3JvdXBNYXApCi0gICAgICAgIG1fbmFtZVRvR3JvdXBNYXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5hbWVUb0dyb3VwTWFwPigpOworICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gbWFrZVVu
aXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsKIAogICAgIGF1dG8mIGdyb3VwID0gbV9uYW1lVG9Hcm91
cE1hcC0+YWRkKGVsZW1lbnQubmFtZSgpLmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OwogICAgIGlmICghZ3JvdXApCi0gICAgICAgIGdyb3VwID0gc3RkOjptYWtlX3VuaXF1ZTxSYWRp
b0J1dHRvbkdyb3VwPigpOworICAgICAgICBncm91cCA9IG1ha2VVbmlxdWU8UmFkaW9CdXR0b25H
cm91cD4oKTsKICAgICBncm91cC0+YWRkKGVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggYzgyNWE3ZWRlZTZiYjJkNWY1
MTZjNmQzZTZlYTc0MTBlNmVjYzc1Ni4uMDRhZmU5ZDc4YWQwYmQxMDI4YTY3MDNjMGZjM2Q0ZjY1
M2IxM2RlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcApAQCAtMzc5LDggKzM3OSw4IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVw
b3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluCiB7CiAgICAg
aWYgKG1faW5EaXNwYXRjaEVycm9yRXZlbnQpIHsKICAgICAgICAgaWYgKCFtX3BlbmRpbmdFeGNl
cHRpb25zKQotICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+KCk7Ci0gICAgICAg
IG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFeGNl
cHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkws
IFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICAgICAgbV9wZW5kaW5nRXhjZXB0aW9ucyA9
IG1ha2VVbmlxdWU8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+KCk7
CisgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMtPmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdF
eGNlcHRpb24+KGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VV
UkwsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00
MTQsOSArNDE0LDkgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRVbmhhbmRs
ZWRQcm9taXNlUmVqZWN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGEKICAgICBTdHJpbmcgZXJyb3JN
ZXNzYWdlID0gbWFrZVN0cmluZygiVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uOiAiLCByZXN1
bHRNZXNzYWdlKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4gbWVzc2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjYWxs
U3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNhbGxTdGFjay5yZWxlYXNl
Tm9uTnVsbCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlw
ZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UpOworICAgICAgICBtZXNz
YWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdl
KTsKICAgICBhZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApAQCAtNTA5
LDcgKzUwOSw3IEBAIFJlamVjdGVkUHJvbWlzZVRyYWNrZXImIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRyYWNrZXJTbG93CiAgICAgLy8gV2hlbiBpbml0aWFs
aXppbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdm0oKSBpcyBub3QgcmVhZHkuCiAKICAgICBB
U1NFUlQoIW1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlcik7Ci0gICAgbV9yZWplY3RlZFByb21pc2VU
cmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWplY3RlZFByb21pc2VUcmFja2VyPigqdGhpcywg
dm0oKSk7CisgICAgbV9yZWplY3RlZFByb21pc2VUcmFja2VyID0gbWFrZVVuaXF1ZTxSZWplY3Rl
ZFByb21pc2VUcmFja2VyPigqdGhpcywgdm0oKSk7CiAgICAgcmV0dXJuICptX3JlamVjdGVkUHJv
bWlzZVRyYWNrZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApp
bmRleCA1NWRjMmM4N2E0YWMyMDJkNzFhZGRhNjZkNTk2YjVmZWEwYmM4ODU2Li4yMTA5Y2U0YTIy
OGMzZTdiYTg3YTRiYTUyYjJkYjI4MjM2MDg3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAgRXhjZXB0aW9uT3I8U2VsZWN0b3JRdWVyeSY+
IFNlbGVjdG9yUXVlcnlDYWNoZTo6YWRkKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBEb2MKICAg
ICBpZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtYXhpbXVtU2VsZWN0b3JRdWVyeUNhY2hlU2l6ZSkK
ICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShtX2VudHJpZXMucmFuZG9tKCkpOwogCi0gICAgcmV0
dXJuICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3RvclF1
ZXJ5PihXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJu
ICptX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgbWFrZVVuaXF1ZTxTZWxlY3RvclF1ZXJ5PihXVEZN
b3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcAppbmRleCA2OTYzYjY4Mzc5ZDg4ZjI3YTg0ZTJmMWRhNjUxNTM4MTgwNWIy
OTNjLi42Nzg2YzBkMjFlMWIyYzJhNTc4NTFiZDA4NTE2NGMxYTFlOTJjOTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jv
b3QoRG9jdW1lbnQmIGRvY3VtZW50LCBTaGFkb3dSb290TW9kZSB0eXBlKQogICAgIDogRG9jdW1l
bnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKICAgICAsIFRyZWVTY29wZSgq
dGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fc3R5bGVTY29wZShz
dGQ6Om1ha2VfdW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQorICAgICwgbV9zdHlsZVNjb3Bl
KG1ha2VVbmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCiB7CiB9CiAKQEAgLTY3LDcgKzY3LDcg
QEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVl
X3B0cjxTbG90QXNzaWdubWVudD4mJiBzbG8KICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1l
bnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50KQog
ICAgICwgbV90eXBlKFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCi0gICAgLCBtX3N0eWxlU2Nv
cGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fc3R5bGVT
Y29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogICAgICwgbV9zbG90QXNzaWdu
bWVudChXVEZNb3ZlKHNsb3RBc3NpZ25tZW50KSkKIHsKIH0KQEAgLTE0Nyw3ICsxNDcsNyBAQCB2
b2lkIFNoYWRvd1Jvb3Q6Om1vdmVTaGFkb3dSb290VG9OZXdEb2N1bWVudChEb2N1bWVudCYgbmV3
RG9jdW1lbnQpCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigh
cGFyZW50VHJlZVNjb3BlKCkgfHwgJnBhcmVudFRyZWVTY29wZSgpLT5kb2N1bWVudFNjb3BlKCkg
PT0gJm5ld0RvY3VtZW50KTsKIAogICAgIC8vIFN0eWxlIHNjb3BlcyBhcmUgZG9jdW1lbnQgc3Bl
Y2lmaWMuCi0gICAgbV9zdHlsZVNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+
KCp0aGlzKTsKKyAgICBtX3N0eWxlU2NvcGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRo
aXMpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oJm1fc3R5
bGVTY29wZS0+ZG9jdW1lbnQoKSA9PSAmbmV3RG9jdW1lbnQpOwogfQogCkBAIC0yMjgsNyArMjI4
LDcgQEAgdm9pZCBTaGFkb3dSb290OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHMKIHsKICAgICBBU1NFUlQoJnNsb3Qucm9vdE5v
ZGUoKSA9PSB0aGlzKTsKICAgICBpZiAoIW1fc2xvdEFzc2lnbm1lbnQpCi0gICAgICAgIG1fc2xv
dEFzc2lnbm1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RBc3NpZ25tZW50PigpOworICAgICAg
ICBtX3Nsb3RBc3NpZ25tZW50ID0gbWFrZVVuaXF1ZTxTbG90QXNzaWdubWVudD4oKTsKIAogICAg
IHJldHVybiBtX3Nsb3RBc3NpZ25tZW50LT5hZGRTbG90RWxlbWVudEJ5TmFtZShuYW1lLCBzbG90
LCAqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCBhNDE5
ZGRhNTI4YWNjYmRhNmRlOWRkZjFhNTQ4NjRjZmRmOTE2MGVmLi40NWMwOGVhMzZhZmUxMzk3YmUw
ZWNiZmIyOWUyMjhlY2QwYzk5MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xv
dEFzc2lnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5j
cHAKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjphZGRTbG90RWxlbWVu
dEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbgogICAgICAgICAv
LyB0byBhdm9pZCBhbHdheXMgaGF2aW5nIGEgdmVjdG9yIG9mIGFsbCBjaGlsZCBub2RlcyBvZiBh
IHNoYWRvdyBob3N0LgogICAgICAgICBpZiAoc2xvdE5hbWUgPT0gZGVmYXVsdFNsb3ROYW1lKCkp
CiAgICAgICAgICAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2xvdD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8U2xvdD4oKTsKICAgICB9KTsKICAgICBhdXRvJiBzbG90ID0gKmFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgYm9vbCBuZWVkc1Nsb3RjaGFuZ2VFdmVudCA9IHNoYWRvd1Jvb3Quc2hv
dWxkRmlyZVNsb3RjaGFuZ2VFdmVudCgpICYmIGhhc0Fzc2lnbmVkTm9kZXMoc2hhZG93Um9vdCwg
c2xvdCk7CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6YXNzaWduVG9T
bG90KE5vZGUmIGNoaWxkLCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZSkKICAgICB9CiAKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2xvdHMuZW5zdXJlKHNsb3ROYW1lLCBbXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXNz
aWduZWROb2Rlcy5hcHBlbmQoJmNoaWxkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5k
ZXggMmYyODcwZDE2NjlkNDRiYzYxODRhNzJlYzYzZWIzMjNmNTI3ZDM5Zi4uNTMxYWNkZjRkZDY1
NjhlMGY0NjIxZWI1MGQ4OWRlZTQ2N2Q1NWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgVHJlZVNjb3BlOjpUcmVlU2NvcGUoU2hhZG93Um9vdCYgc2hhZG93
Um9vdCwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9yb290Tm9kZShzaGFkb3dSb290KQog
ICAgICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUo
JmRvY3VtZW50KQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoc3RkOjptYWtlX3Vu
aXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBtX2lkVGFyZ2V0T2JzZXJ2
ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4oKSkKIHsKICAg
ICBzaGFkb3dSb290LnNldFRyZWVTY29wZSgqdGhpcyk7CiB9CkBAIC03Myw3ICs3Myw3IEBAIFRy
ZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUo
ZG9jdW1lbnQpCiAgICAgLCBtX2RvY3VtZW50U2NvcGUoZG9jdW1lbnQpCiAgICAgLCBtX3BhcmVu
dFRyZWVTY29wZShudWxscHRyKQotICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkoc3Rk
OjptYWtlX3VuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCisgICAgLCBtX2lkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeShtYWtlVW5pcXVlPElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeT4o
KSkKIHsKICAgICBkb2N1bWVudC5zZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtMTQxLDcgKzE0
MSw3IEBAIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIFRyZWVTY29wZTo6Z2V0QWxsRWxlbWVudHNC
eUlkKGNvbnN0IEF0b21TdHJpbmcmIGVsZW1lbnRJCiB2b2lkIFRyZWVTY29wZTo6YWRkRWxlbWVu
dEJ5SWQoY29uc3QgQXRvbVN0cmluZ0ltcGwmIGVsZW1lbnRJZCwgRWxlbWVudCYgZWxlbWVudCwg
Ym9vbCBub3RpZnlPYnNlcnZlcnMpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnRzQnlJZCkKLSAgICAg
ICAgbV9lbGVtZW50c0J5SWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+
KCk7CisgICAgICAgIG1fZWxlbWVudHNCeUlkID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVk
TWFwPigpOwogICAgIG1fZWxlbWVudHNCeUlkLT5hZGQoZWxlbWVudElkLCBlbGVtZW50LCAqdGhp
cyk7CiAgICAgaWYgKG5vdGlmeU9ic2VydmVycykKICAgICAgICAgbV9pZFRhcmdldE9ic2VydmVy
UmVnaXN0cnktPm5vdGlmeU9ic2VydmVycyhlbGVtZW50SWQpOwpAQCAtMTY4LDcgKzE2OCw3IEBA
IEVsZW1lbnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBu
YW1lKSBjb25zdAogdm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0
cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnRz
QnlOYW1lKQotICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVl
U2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRzQnlOYW1lID0gbWFrZVVuaXF1
ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIG1fZWxlbWVudHNCeU5hbWUtPmFkZChuYW1l
LCBlbGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFRyZWVTY29w
ZTo6YWRkSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQmIGltYWdlTWFwKQogICAgIGlmICghbmFtZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9pbWFnZU1hcHNCeU5hbWUpCi0gICAgICAgIG1f
aW1hZ2VNYXBzQnlOYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigp
OworICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJl
ZE1hcD4oKTsKICAgICBtX2ltYWdlTWFwc0J5TmFtZS0+YWRkKCpuYW1lLCBpbWFnZU1hcCwgKnRo
aXMpOwogfQogCkBAIC0yNjMsNyArMjYzLDcgQEAgSFRNTE1hcEVsZW1lbnQqIFRyZWVTY29wZTo6
Z2V0SW1hZ2VNYXAoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNjb3Bl
OjphZGRJbWFnZUVsZW1lbnRCeVVzZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgSFRN
TEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIW1faW1hZ2VzQnlVc2VtYXApCi0g
ICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFRyZWVTY29wZU9yZGVy
ZWRNYXA+KCk7CisgICAgICAgIG1faW1hZ2VzQnlVc2VtYXAgPSBtYWtlVW5pcXVlPFRyZWVTY29w
ZU9yZGVyZWRNYXA+KCk7CiAgICAgcmV0dXJuIG1faW1hZ2VzQnlVc2VtYXAtPmFkZChuYW1lLCBl
bGVtZW50LCAqdGhpcyk7CiB9CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBIVE1MTGFiZWxFbGVtZW50
KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKGNvbnN0IEF0b21TdHJpbmcmIGZvckF0dHJp
YnV0ZVZhbAogCiAgICAgaWYgKCFtX2xhYmVsc0J5Rm9yQXR0cmlidXRlKSB7CiAgICAgICAgIC8v
IFBvcHVsYXRlIHRoZSBtYXAgb24gZmlyc3QgYWNjZXNzLgotICAgICAgICBtX2xhYmVsc0J5Rm9y
QXR0cmlidXRlID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAg
ICAgICBtX2xhYmVsc0J5Rm9yQXR0cmlidXRlID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVk
TWFwPigpOwogCiAgICAgICAgIGZvciAoYXV0byYgbGFiZWwgOiBkZXNjZW5kYW50c09mVHlwZTxI
VE1MTGFiZWxFbGVtZW50PihtX3Jvb3ROb2RlKSkgewogICAgICAgICAgICAgY29uc3QgQXRvbVN0
cmluZyYgZm9yVmFsdWUgPSBsYWJlbC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZv
ckF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDc5MzQyYzQ5Nzc1M2Q5YTE1
MjZlMDU1NTQ5ZmM3Nzk3MjE0YmY2ZTQuLjg5MWMxMjg4YzZlMzE0YWNjYWU5YjYyNzE5NzgxODgx
ZTc0MmRjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTM4MCwxMiArMzgwLDEy
IEBAIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVEYXRhVHJhbnNmZXJGb3JDbGlwYm9h
cmRFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2Fz
ZSBDbGlwYm9hcmRFdmVudEtpbmQ6OkNvcHk6CiAgICAgY2FzZSBDbGlwYm9hcmRFdmVudEtpbmQ6
OkN1dDoKLSAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2Vf
dW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2Rl
OjpSZWFkV3JpdGUsIG1ha2VVbmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKSk7CiAgICAgY2FzZSBD
bGlwYm9hcmRFdmVudEtpbmQ6OlBhc3RlQXNQbGFpblRleHQ6CiAgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9hcmREYXRhRW5h
YmxlZCgpKSB7CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dFR5cGUgPSAidGV4dC9wbGFpbiJf
czsKICAgICAgICAgICAgIGF1dG8gcGxhaW5UZXh0ID0gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKCktPnJlYWRTdHJpbmcocGxhaW5UZXh0VHlwZSk7Ci0gICAgICAgICAgICBhdXRv
IHBhc3RlYm9hcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CisgICAg
ICAgICAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7
CiAgICAgICAgICAgICBwYXN0ZWJvYXJkLT53cml0ZVN0cmluZyhwbGFpblRleHRUeXBlLCBwbGFp
blRleHQpOwogICAgICAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZG9ubHksIFdURk1v
dmUocGFzdGVib2FyZCkpOwogICAgICAgICB9CkBAIC0zOTYsMTAgKzM5NiwxMCBAQCBzdGF0aWMg
UmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQoRG9j
dW1lbnQmIGRvY3VtZW50LAogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDb3B5
OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVDdXQ6CiAgICAgY2FzZSBDbGlw
Ym9hcmRFdmVudEtpbmQ6OkJlZm9yZVBhc3RlOgotICAgICAgICByZXR1cm4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVNb2Rl
OjpJbnZhbGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOworICAgICAg
ICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERh
dGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9h
cmQ+KCkpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRGF0
YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6
U3RvcmVNb2RlOjpJbnZhbGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkp
OworICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVu
dCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OkludmFsaWQsIG1ha2VVbmlxdWU8U3RhdGljUGFz
dGVib2FyZD4oKSk7CiB9CiAKIC8vIFJldHVybnMgd2hldGhlciBjYWxsZXIgc2hvdWxkIGNvbnRp
bnVlIHdpdGggInRoZSBkZWZhdWx0IHByb2Nlc3NpbmciLCB3aGljaCBpcyB0aGUgc2FtZSBhcwpA
QCAtMTE4Myw5ICsxMTgzLDkgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoRWRpdENv
bW1hbmRDb21wb3NpdGlvbiYgY29tcG9zaXRpb24pCiAKIEVkaXRvcjo6RWRpdG9yKEZyYW1lJiBm
cmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCi0gICAgLCBtX2tpbGxSaW5nKHN0ZDo6bWFrZV91
bmlxdWU8UEFMOjpLaWxsUmluZz4oKSkKLSAgICAsIG1fc3BlbGxDaGVja2VyKHN0ZDo6bWFrZV91
bmlxdWU8U3BlbGxDaGVja2VyPihmcmFtZSkpCi0gICAgLCBtX2FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyPihmcmFtZSkp
CisgICAgLCBtX2tpbGxSaW5nKG1ha2VVbmlxdWU8UEFMOjpLaWxsUmluZz4oKSkKKyAgICAsIG1f
c3BlbGxDaGVja2VyKG1ha2VVbmlxdWU8U3BlbGxDaGVja2VyPihmcmFtZSkpCisgICAgLCBtX2Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXIobWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyPihmcmFtZSkpCiAgICAgLCBtX2VkaXRvclVJVXBkYXRlVGltZXIoKnRoaXMsICZFZGl0b3I6
OmVkaXRvclVJVXBkYXRlVGltZXJGaXJlZCkKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9E
RVRFQ1RJT04pICYmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV90ZWxlcGhvbmVOdW1i
ZXJEZXRlY3Rpb25VcGRhdGVUaW1lcigqdGhpcywgJkVkaXRvcjo6c2NhblNlbGVjdGlvbkZvclRl
bGVwaG9uZU51bWJlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDBkZGMxNWJkYzBkMzA0ZjQ1NDNhMDU5NjJiYzZjYzc2
NDVmNTQ3OTQuLjJjMjAyOGNjNjNjMWI5MzhiYzY2ZmY0YmVhNTg5OTI1OGU5YTRhNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CkBAIC0xNjMxLDcgKzE2MzEsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjp1cGRh
dGVOb2Rlc0luc2VydGVkKE5vZGUgKm5vZGUpCiBSZXBsYWNlbWVudEZyYWdtZW50KiBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6ZW5zdXJlUmVwbGFjZW1lbnRGcmFnbWVudCgpCiB7CiAgICAgaWYg
KCFtX3JlcGxhY2VtZW50RnJhZ21lbnQpCi0gICAgICAgIG1fcmVwbGFjZW1lbnRGcmFnbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZW1lbnRGcmFnbWVudD4obV9kb2N1bWVudEZyYWdtZW50
LmdldCgpLCBlbmRpbmdTZWxlY3Rpb24oKSk7CisgICAgICAgIG1fcmVwbGFjZW1lbnRGcmFnbWVu
dCA9IG1ha2VVbmlxdWU8UmVwbGFjZW1lbnRGcmFnbWVudD4obV9kb2N1bWVudEZyYWdtZW50Lmdl
dCgpLCBlbmRpbmdTZWxlY3Rpb24oKSk7CiAgICAgcmV0dXJuIG1fcmVwbGFjZW1lbnRGcmFnbWVu
dC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25SZWN0R2F0aGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0
R2F0aGVyZXIuY3BwCmluZGV4IDNiNDA2ODhjYjRkYTY1NmIzNDQ1ODdjMDg4ODYzNmMwYWIxNTY2
Y2YuLmY5YjY0YzVjOGM4OTZiZjMyMjYzMDg3MDlmMjZhYTY2N2UxZWQ5ODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Tm90aWZpZXI+
IFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Y2xlYXJBbmQKICAgICBtX2dhcFJlY3RzLmNsZWFyKCk7
CiAgICAgbV9pc1RleHRPbmx5ID0gdHJ1ZTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE5vdGlmaWVyPigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Tm90aWZpZXI+KCp0aGlz
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCmluZGV4IDE4OTZlMWEyMjgxYzFhOWIwNDZlOGVmYWNkOTExOWFmNWUyNzdk
NTYuLmYxZDE5YzEwMTE0YzFhOTg1YjhiNDI2ZmE2OGZkYjgxMjJhNjBjNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTY1MCw3ICs2NTAsNyBAQCBib29sIFRl
eHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlv
biA9IChtX25vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
ZW5kT2Zmc2V0KSA6IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKICAgICAgICAgaWYgKCFtX2Zsb3dS
dW5SZXNvbHZlckNhY2hlIHx8ICZtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5mbG93KCkgIT0gJmJs
b2NrRmxvdykgewogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZs
b3cgPSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID8gMCA6IHRleHROb2RlT2Zmc2V0SW5GbG93KHRl
eHROb2RlKTsKLSAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQp
OworICAgICAgICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IG1ha2VVbmlxdWU8U2ltcGxl
TGluZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7CiAgICAgICAgIH0K
ICAgICAgICAgLy8gU2tpcCB0byBtX29mZnNldCBwb3NpdGlvbi4KICAgICAgICAgYXV0byByYW5n
ZSA9IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPnJhbmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDBh
ODNhYzA5NTkyNzRjMDc4MGQ1ZDdiMzg1ZjAxOWMwZTg2ZTNjNzQuLjljZjg2YTRhMTVmMWM3YzZm
MDI4MTU1NjQ3YWZhMDA1OWFlM2I2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTM4MCw3ICszODAsNyBAQCBIVE1MQ29udmVydGVyOjpI
VE1MQ29udmVydGVyKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkK
ICAgICBfZmxhZ3MucmVhY2hlZFN0YXJ0ID0gZmFsc2U7CiAgICAgX2ZsYWdzLnJlYWNoZWRFbmQg
PSBmYWxzZTsKICAgICAKLSAgICBfY2FjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MQ29udmVy
dGVyQ2FjaGVzPigpOworICAgIF9jYWNoZXMgPSBtYWtlVW5pcXVlPEhUTUxDb252ZXJ0ZXJDYWNo
ZXM+KCk7CiB9CiAKIEhUTUxDb252ZXJ0ZXI6On5IVE1MQ29udmVydGVyKCkKQEAgLTU1MSw3ICs1
NTEsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1dGVkU3R5
bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYgZQogCiAgICAgYXV0byByZXN1bHQgPSBtX2Nv
bXB1dGVkU3R5bGVzLmFkZCgmZWxlbWVudCwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1
ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxlbWVudCwgdHJ1ZSk7CisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPENvbXB1dGVkU3R5bGVFeHRyYWN0b3I+KCZl
bGVtZW50LCB0cnVlKTsKICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yJiBjb21wdXRlZFN0eWxl
ID0gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0dXJuIGNvbXB1dGVkU3R5bGUucHJv
cGVydHlWYWx1ZShwcm9wZXJ0eUlkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRl
eCBmYjQzNzE2MzAzYWUyNWI4MTkyOTJkMjcxY2EyY2FlNjg0YjljMDJlLi5jM2M4ZjhiMzI0YmZl
Y2RjZTllNWM0ZWIxOWI1Yjc0NjA4OTI4YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CkBAIC0xNzgsNyArMTc4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGNyZWF0ZVBhZ2VGb3JT
YW5pdGl6aW5nV2ViQ29udGVudCgpCiB7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBh
Z2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cygpOwogICAgIAotICAgIGF1dG8gcGFnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAg
IGF1dG8gcGFnZSA9IG1ha2VVbmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikp
OwogICAgIHBhZ2UtPnNldElzRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKICAgICBwYWdlLT5z
ZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5z
ZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmNwcAppbmRleCBhMDk1ZWVhZTliMmE3OTdiZGFiYWUzNDk0MGZkYzZhM2NlMzA0MjRi
Li5kNTgxMTJmZjliZGY2Y2Q3ZDE5ODU1MmQ4NjY5OTFmODViN2ExYzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC05NCwxMSArOTQsMTEgQEAgc3Rh
dGljIHZvaWQgY2FsbE9uRmlsZVRocmVhZChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQog
ICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOworICAgIHF1ZXVl
LmdldCgpLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0
aW9uKSkpOwogfQogCiBBc3luY0ZpbGVTdHJlYW06OkFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFt
Q2xpZW50JiBjbGllbnQpCi0gICAgOiBtX2ludGVybmFscyhzdGQ6Om1ha2VfdW5pcXVlPEludGVy
bmFscz4oY2xpZW50KSkKKyAgICA6IG1faW50ZXJuYWxzKG1ha2VVbmlxdWU8SW50ZXJuYWxzPihj
bGllbnQpKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCA5YWQzZGE5ZWZmZjBmM2E3MDdhMDYwMWY3ODYwMWQ1
ZDg2ODI1OGY1Li45OWE3YjVjNmY5ODdhMTRiYTE5MDk0NTg5ODdhZTg0ZWNmYzRmMDgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwoQmxvYiYgYmxvYiwgRmlsZVJl
YWRlckxvYWRlcjo6UmVhZFR5cAogICAgIG1fc3RhdGUgPSBMT0FESU5HOwogICAgIG1fZXJyb3Ig
PSBudWxscHRyOwogCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVSZWFkZXJM
b2FkZXI+KG1fcmVhZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0
aGlzKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPEZpbGVSZWFkZXJMb2FkZXI+KG1fcmVh
ZFR5cGUsIHN0YXRpY19jYXN0PEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqPih0aGlzKSk7CiAgICAg
bV9sb2FkZXItPnNldEVuY29kaW5nKG1fZW5jb2RpbmcpOwogICAgIG1fbG9hZGVyLT5zZXREYXRh
VHlwZShtX2Jsb2ItPnR5cGUoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgYmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Nh
Y2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmlu
ZGV4IDZhZTU1MmNiY2VmYmEzNWFmNTQ5NGFkODBhMTQ3MzFkMDBhY2EzZDEuLjVjOGYxOGUzZGFi
MGViMjU5N2FkNWU4MjIxMzliZDg4ZmYzMjRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkRnJhbWUuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1l
KEZyYW1lJiBmcmFtZSkKIAogICAgIC8vIENyZWF0ZSB0aGUgQ2FjaGVkRnJhbWVzIGZvciBhbGwg
RnJhbWVzIGluIHRoZSBGcmFtZVRyZWUuCiAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmcmFtZS50
cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJs
aW5nKCkpCi0gICAgICAgIG1fY2hpbGRGcmFtZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2Fj
aGVkRnJhbWU+KCpjaGlsZCkpOworICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZChtYWtlVW5p
cXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKG1fZG9jdW1l
bnQtPmRvbVdpbmRvdygpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5mcmFtZSgp
KTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUmIGZy
YW1lKQogICAgIC8vIEFjdGl2ZSBET00gb2JqZWN0cyBtdXN0IGJlIHN1c3BlbmRlZCBiZWZvcmUg
d2UgY2FjaGUgdGhlIGZyYW1lIHNjcmlwdCBkYXRhLgogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmQo
UmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hlKTsKIAotICAgIG1fY2FjaGVkRnJhbWVTY3Jp
cHREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRDYWNoZWRGcmFtZURhdGE+KGZyYW1lKTsK
KyAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IG1ha2VVbmlxdWU8U2NyaXB0Q2FjaGVkRnJh
bWVEYXRhPihmcmFtZSk7CiAKICAgICBtX2RvY3VtZW50LT5kb21XaW5kb3coKS0+c3VzcGVuZEZv
clBhZ2VDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZFBhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAppbmRleCAw
Njg2YWU4ZmVjZTQ0ZjFlZjY5MGU1ZjhmNmFiZTg0NjE0NjNkZjdkLi45NzQ3YTQwNDAxNmFjODY4
ZDJmNzc5NmU1MzMwNDM2ZmZhNTg3NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0NhY2hlZFBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFn
ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVm
Q291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRQYWdlQ291bnRlciwgKCJDYWNoZWQKIENhY2hlZFBh
Z2U6OkNhY2hlZFBhZ2UoUGFnZSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9l
eHBpcmF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSArIFNlY29uZHMocGFnZS5zZXR0aW5n
cygpLmJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWwoKSkpCi0gICAgLCBtX2NhY2hl
ZE1haW5GcmFtZShzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgp
KSkKKyAgICAsIG1fY2FjaGVkTWFpbkZyYW1lKG1ha2VVbmlxdWU8Q2FjaGVkRnJhbWU+KHBhZ2Uu
bWFpbkZyYW1lKCkpKQogewogI2lmbmRlZiBOREVCVUcKICAgICBjYWNoZWRQYWdlQ291bnRlci5p
bmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAwMDI5NjU1
ODkyZDE1NGNiNTA0M2UxZGEyMjgyNTg3OWY2M2VkZGU1Li4zYmEyNGI5ZGUyZTk5NDE5NmEwZGY5
MmZjMzY2M2NlZWE1YmY0Yjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBA
IC00NzgsNyArNDc4LDcgQEAgYm9vbCBQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJ
dGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgZmly
ZSBhbnkgSlMgZXZlbnRzIGluIHRoaXMgc2NvcGUuCiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAotICAgICAgICBpdGVt
Lm1fY2FjaGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOworICAg
ICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IG1ha2VVbmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOwog
ICAgICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdSZWFzb246Ok5vbmU7CiAgICAg
ICAgIG1faXRlbXMuYWRkKCZpdGVtKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRU
eXBlLmNwcAppbmRleCA3YTk5MWYxN2IwM2Q4M2U5MDVmN2QzZTA2MDdiZjUyYTk5YjgwZTQ1Li5i
MTRkMzEwMTU4YjY0NWZlODY5OWY3Zjk5ZjQxODU4YmQ1NWFlMjhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIEZpbGVJbnB1dFR5
cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAgbV9m
aWxlSWNvbkxvYWRlci0+aW52YWxpZGF0ZSgpOwogCiAgICAgRmlsZUljb25Mb2FkZXJDbGllbnQm
IGNsaWVudCA9ICp0aGlzOwotICAgIG1fZmlsZUljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbGVJY29uTG9hZGVyPihjbGllbnQpOworICAgIG1fZmlsZUljb25Mb2FkZXIgPSBtYWtlVW5p
cXVlPEZpbGVJY29uTG9hZGVyPihjbGllbnQpOwogCiAgICAgY2hyb21lLT5sb2FkSWNvbkZvckZp
bGVzKHBhdGhzLCAqbV9maWxlSWNvbkxvYWRlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggODA2ZTVmM2RhZWJlMjk0ZTMzMDIzMGRm
YTVlZGU4YzkyZDU4YzMxOC4uMTdjMDI3Y2ZkZmExYmI0M2I2NDVlZTYyZDU4YzhhYzMyMDZkODc2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApA
QCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21W
YWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6
OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihhc0hUTUxFbGVtZW50KCkuaXNDb25uZWN0ZWQoKSk7Ci0gICAg
bV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvcm1BdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1MRWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhpcyk7CisgICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0
T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXNIVE1M
RWxlbWVudCgpLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oZm9ybUF0dHIpLCAqdGhp
cyk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlVGFyZ2V0
Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IGVhNWIw
OWFhYTA4ZGIyNzM5NjFiOTUzNDIyZjAzZGQ3YWQ2ZTQ2NzEuLmQwZTAzZjU2Y2IwNjNlMjdmMTEz
NDBhMjcxM2Q0Zjk2MWI1YWU2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIu
Y3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNhdmVkRm9ybVN0YXRlPiBT
YXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmluZz4KICAgICBzaXpl
X3QgaXRlbUNvdW50ID0gc3RhdGVWZWN0b3JbaW5kZXgrK10udG9VSW50KCk7CiAgICAgaWYgKCFp
dGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gc2F2ZWRGb3JtU3Rh
dGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOworICAgIGF1dG8gc2F2ZWRG
b3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwogICAgIHdoaWxlIChpdGVt
Q291bnQtLSkgewogICAgICAgICBpZiAoaW5kZXggKyAxID49IHN0YXRlVmVjdG9yLnNpemUoKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzY1LDEzICszNjUsMTMgQEAgc3RhdGlj
IFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogc3RkOjp1bmlxdWVfcHRyPEZvcm1Db250cm9s
bGVyOjpTYXZlZEZvcm1TdGF0ZU1hcD4gRm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0
YXRlTWFwKGNvbnN0IEZvcm1FbGVtZW50TGlzdEhhc2hTZXQmIGNvbnRyb2xMaXN0KQogewogICAg
IEZvcm1LZXlHZW5lcmF0b3Iga2V5R2VuZXJhdG9yOwotICAgIGF1dG8gc3RhdGVNYXAgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOworICAgIGF1dG8gc3RhdGVNYXAgPSBt
YWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlTWFwPigpOwogICAgIGZvciAoYXV0byYgY29udHJvbCA6
IGNvbnRyb2xMaXN0KSB7CiAgICAgICAgIGlmICghY29udHJvbC0+c2hvdWxkU2F2ZUFuZFJlc3Rv
cmVGb3JtQ29udHJvbFN0YXRlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYXV0
byYgZm9ybVN0YXRlID0gc3RhdGVNYXAtPmFkZChrZXlHZW5lcmF0b3IuZm9ybUtleSgqY29udHJv
bCkuaW1wbCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgIGlmICghZm9ybVN0
YXRlKQotICAgICAgICAgICAgZm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1T
dGF0ZT4oKTsKKyAgICAgICAgICAgIGZvcm1TdGF0ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3Rh
dGU+KCk7CiAgICAgICAgIGZvcm1TdGF0ZS0+YXBwZW5kQ29udHJvbFN0YXRlKGNvbnRyb2wtPm5h
bWUoKSwgY29udHJvbC0+dHlwZSgpLCBjb250cm9sLT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgpKTsK
ICAgICB9CiAgICAgcmV0dXJuIHN0YXRlTWFwOwpAQCAtNDAzLDcgKzQwMyw3IEBAIEZvcm1Db250
cm9sU3RhdGUgRm9ybUNvbnRyb2xsZXI6OnRha2VTdGF0ZUZvckZvcm1FbGVtZW50KGNvbnN0IEhU
TUxGb3JtQ29udHJvbEVsCiAgICAgaWYgKG1fc2F2ZWRGb3JtU3RhdGVNYXAuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwogICAgIGlmICghbV9mb3JtS2V5R2Vu
ZXJhdG9yKQotICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZv
cm1LZXlHZW5lcmF0b3I+KCk7CisgICAgICAgIG1fZm9ybUtleUdlbmVyYXRvciA9IG1ha2VVbmlx
dWU8Rm9ybUtleUdlbmVyYXRvcj4oKTsKICAgICBTYXZlZEZvcm1TdGF0ZU1hcDo6aXRlcmF0b3Ig
aXQgPSBtX3NhdmVkRm9ybVN0YXRlTWFwLmZpbmQobV9mb3JtS2V5R2VuZXJhdG9yLT5mb3JtS2V5
KGNvbnRyb2wpLmltcGwoKSk7CiAgICAgaWYgKGl0ID09IG1fc2F2ZWRGb3JtU3RhdGVNYXAuZW5k
KCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDEwNDdjNThlZWMzNTM2ZTNkMzk5M2E3YjZl
NTg2MjViMDE1OTUyZjEuLmViOWJkMDY4NWQ1OTJlYTY5MjMxM2FkNDE2YzI3ZDdmMjgyNjFmNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC0zMTQsNyAr
MzE0LDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6aGFzUmVsKFJlbGF0aW9uIHJlbGF0aW9u
KSBjb25zdAogRE9NVG9rZW5MaXN0JiBIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3JlbExpc3QpIHsKLSAgICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxET01Ub2tlbkxpc3Q+KGNvbnN0X2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQmPigqdGhp
cyksIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7
CisgICAgICAgIG1fcmVsTGlzdCA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0
PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3Vt
ZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICAg
ICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAibm9yZWZlcnJlciIp
IHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4sICJub29wZW5lciIpIHx8IGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UodG9rZW4sICJhciIpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcAppbmRleCBhYzA3NThkZTgzYjA0ODgyYTVkODkyMmZkNDA1NTQ4ZWY5
NTZkY2EyLi40OWFiZmE1ZjcwYTdhYjk3ZDczZTJjODJiNzY3YjA1MzUxYWRlZjg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQg
SFRNTEFyZWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkUmVnaW9uKCkKIGJvb2wgSFRNTEFyZWFF
bGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplLCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiB7CiAgICAgaWYgKG1fbGFzdFNpemUg
IT0gc2l6ZSkgewotICAgICAgICBtX3JlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4oZ2V0
UmVnaW9uKHNpemUpKTsKKyAgICAgICAgbV9yZWdpb24gPSBtYWtlVW5pcXVlPFBhdGg+KGdldFJl
Z2lvbihzaXplKSk7CiAgICAgICAgIG1fbGFzdFNpemUgPSBzaXplOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAwNzcxNWNiYjUwOTU0YTYy
NjM2YzkzMzA1YTc2NTMzNTlkMWU2ZjZiLi4yMDE0ZWZlNzVjZWM0NjBlMzc5MWUzNjNmNTYyOGU1
MDAxYjhkY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApA
QCAtOTUyLDcgKzk1Miw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnNldEltYWdlQnVmZmVy
KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpIGNvCiAgICAgbV9pbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHRydWUpOwogICAgIG1f
aW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGRlZmF1
bHRJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNl
dFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgIG1fY29udGV4dFN0YXRlU2F2ZXIgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXI+KG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAKICAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrKEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkp
OwogICAgIEhUTUxFbGVtZW50OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkuaGVhcC5y
ZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtZW1vcnlDb3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCA5NzZjOGUwYTlhMDZhOWI4M2Q2Y2E5NDFiZDVkZDM3
YjlmMzM4NWM1Li4zMjgxNzZiNjllOGNkMWJmMjJkNGU3NjMyN2U5ZjI5Mjk2OGFiNDEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZv
aWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBp
ZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBj
YWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwor
ICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4o
KTsKIAogICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHAKaW5kZXggZjE1Nzg3NGU2ZDUzNGUzZjYxMzRlNGE1ZGY0ZjUxYmUyZjY3YTMxYS4u
NjBkZDFmYjI1MjAzODYwZDNkOTJhN2E1YWNiMzMxYzJhYjA0YjU5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtODgsNyArODgsNyBAQCBjb25zdCBB
dG9tU3RyaW5nJiBEZXRhaWxzU2xvdEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxkKGNv
bnN0IE5vZGUmIGNoaWxkKQogUmVmPEhUTUxEZXRhaWxzRWxlbWVudD4gSFRNTERldGFpbHNFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewogICAgIGF1dG8gZGV0YWlscyA9IGFkb3B0UmVmKCpuZXcgSFRNTERldGFpbHNFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFk
b3dSb290OjpjcmVhdGUoZG9jdW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsc1Nsb3RBc3Np
Z25tZW50PigpKSk7CisgICAgZGV0YWlscy0+YWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVh
dGUoZG9jdW1lbnQsIG1ha2VVbmlxdWU8RGV0YWlsc1Nsb3RBc3NpZ25tZW50PigpKSk7CiAgICAg
cmV0dXJuIGRldGFpbHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCmluZGV4IGQ4ODkzYjFmMDk0OWVmMTAyZTI5ZDAzYzU4OTY3YzRkZDRm
M2ZkNWEuLmUxNTMxNmExOWVlZmI0NzdlM2YzNjdjODBmN2MzYzFhMmE2MzRiODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDgwLDcg
KzQ4MCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmlzaWJsZVZhbGlk
YXRpb25NZXNzYWdlKCkKICAgICBpZiAocmVuZGVyZXIoKSAmJiB3aWxsVmFsaWRhdGUoKSkKICAg
ICAgICAgbWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAg
ICAgaWYgKCFtX3ZhbGlkYXRpb25NZXNzYWdlKQotICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdl
ID0gc3RkOjptYWtlX3VuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CisgICAgICAgIG1f
dmFsaWRhdGlvbk1lc3NhZ2UgPSBtYWtlVW5pcXVlPFZhbGlkYXRpb25NZXNzYWdlPih0aGlzKTsK
ICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlLT51cGRhdGVWYWxpZGF0aW9uTWVzc2FnZShtZXNzYWdl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmNwcAppbmRleCA2ZWMyMmQ3NzQ5ZjJmNzhiZDMxZWY3N2VhNjM2MDczYjcxYzU5ZmYy
Li5hMmIwMGU4ZjgxNmRhMWMyMjFiMWMzNjZlYTZlNjg5YzNiMWM2OGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMTE5
LDcgKzExOSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVk
RWxlbWVudENhY2hlKCkgY29uc3QKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVj
dGlvbk5hbWVkRWxlbWVudENhY2hlPigpOworICAgIGF1dG8gY2FjaGUgPSBtYWtlVW5pcXVlPENv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZ0lt
cGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAppbmRleCBjNzZkNDkzYTYyY2VkODMwODgwMWI2YjAxZDMzMjFlMGEzMzNmNTFkLi40
MzVkOTUxNGRkMjlkZGQxZjZkZmIxZDE2OWUzNDdlMzE1YTMwMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC03OTEsNyArNzkxLDcgQEAgdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKEZvcm1OYW1lZEl0ZW0qIGl0ZW0sIGNvbnN0IEF0
b21TdHJpbmcmIHAKICAgICBpZiAocGFzdE5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKCFtX3Bhc3ROYW1lc01hcCkKLSAgICAgICAgbV9wYXN0TmFtZXNNYXAgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKKyAgICAgICAgbV9wYXN0TmFtZXNNYXAgPSBt
YWtlVW5pcXVlPFBhc3ROYW1lc01hcD4oKTsKICAgICBtX3Bhc3ROYW1lc01hcC0+c2V0KHBhc3RO
YW1lLmltcGwoKSwgaXRlbSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKaW5kZXggMDJkN2Q0ZTRmYmU4NmY1MjcwZjU4NGI2YThkZWI5YmU0NmY5N2FhOS4u
YjFjODIxZGQ5YmFiYTJhMjBjYjI5ZTFjMWNmZDkwZDcxZmVjNThiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmPEhUTUxJ
RnJhbWVFbGVtZW50PiBIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIEQKIERPTVRva2VuTGlzdCYgSFRNTElGcmFtZUVsZW1lbnQ6OnNhbmRib3go
KQogewogICAgIGlmICghbV9zYW5kYm94KSB7Ci0gICAgICAgIG1fc2FuZGJveCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2FuZGJveEF0dHIsIFtdKERvY3VtZW50Jiwg
U3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3NhbmRib3ggPSBtYWtlVW5pcXVlPERPTVRv
a2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9r
ZW4pIHsKICAgICAgICAgICAgIHJldHVybiBTZWN1cml0eUNvbnRleHQ6OmlzU3VwcG9ydGVkU2Fu
ZGJveFBvbGljeSh0b2tlbik7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBjMjVjZGQ4MGQ1ZjhhNzcwYTFkOTcwMDU3ODQ3
YTg5YzU2ODNkYmQuLjM3NmM1MjE5NjRlMGY3MWI2ZmQ5YzIxNzJkNjIwMWMyOTI1N2ExYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTQ4LDcgKzE0OCw3
IEBAIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiBIVE1MSW1hZ2VMb2FkZXImIEhUTUxJbnB1dEVs
ZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKCkKIHsKICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0g
ICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4o
KnRoaXMpOworICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2Fk
ZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1faW1hZ2VMb2FkZXI7CiB9CiAKQEAgLTE2NDEsNyAr
MTY0MSw3IEBAIFJlZlB0cjxIVE1MRGF0YUxpc3RFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50Ojpk
YXRhTGlzdCgpIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0
ZVRhcmdldE9ic2VydmVyKCkKIHsKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgbV9s
aXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RBdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0
ciksIHRoaXMpOworICAgICAgICBtX2xpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlciA9IG1ha2VV
bmlxdWU8TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyPihhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGxpc3RBdHRyKSwgdGhpcyk7CiAgICAgZWxzZQogICAgICAgICBtX2xpc3RBdHRy
aWJ1dGVUYXJnZXRPYnNlcnZlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAKaW5kZXggYjg2MzRjYWRhZmExOGEwYTI3Y2NmNzI4ZjliYmY1NmNiN2Y3
OGQxNi4uZjZhN2JjODAyNGZmYTVlNGJkNzFmNjlhMjdjOTdjOGM5MzZiYjRlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIGJvb2wg
SFRNTExpbmtFbGVtZW50OjpzdHlsZVNoZWV0SXNMb2FkaW5nKCkgY29uc3QKIERPTVRva2VuTGlz
dCYgSFRNTExpbmtFbGVtZW50OjpzaXplcygpCiB7CiAgICAgaWYgKCFtX3NpemVzKQotICAgICAg
ICBtX3NpemVzID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzaXplc0F0
dHIpOworICAgICAgICBtX3NpemVzID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBz
aXplc0F0dHIpOwogICAgIHJldHVybiAqbV9zaXplczsKIH0KIApAQCAtNTIyLDcgKzUyMiw3IEBA
IHZvaWQgSFRNTExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5k
ZXIqIGV2ZW50U2VuZGVyKQogRE9NVG9rZW5MaXN0JiBIVE1MTGlua0VsZW1lbnQ6OnJlbExpc3Qo
KQogewogICAgIGlmICghbV9yZWxMaXN0KSAKLSAgICAgICAgbV9yZWxMaXN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3JlbExpc3QgPSBt
YWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIEhUTUxOYW1lczo6cmVsQXR0ciwgW10oRG9j
dW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAgICByZXR1cm4g
TGlua1JlbEF0dHJpYnV0ZTo6aXNTdXBwb3J0ZWQoZG9jdW1lbnQsIHRva2VuKTsKICAgICAgICAg
fSk7CiAgICAgcmV0dXJuICptX3JlbExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAppbmRleCBiNTVjNDY5MDYxZGNjMDRmMmExMTlhMjU1MzhlZjA4MmZlNmU0MzU1
Li5mNjRmZTkyYjZiN2QwMWM0OTRiNTdhNzY1ZTJhNTViNjRiM2YwNDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBIVE1MTWVk
aWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxp
emF0aW9uKCkKIHsKLSAgICBtX21lZGlhU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFF
bGVtZW50U2Vzc2lvbj4oKnRoaXMpOworICAgIG1fbWVkaWFTZXNzaW9uID0gbWFrZVVuaXF1ZTxN
ZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcyk7CiAKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVo
YXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVG
b3JGdWxsc2NyZWVuKTsKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlv
bihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYSk7CkBA
IC0zMDI3LDcgKzMwMjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJh
bmNlKGNvbnN0IE1lZGlhVGltZSYgaW5UaW1lLCBjb25zdCBNZWRpYVRpbQogCiAgICAgLy8gNSAt
IElmIHRoZSBzZWVrIHdhcyBpbiByZXNwb25zZSB0byBhIERPTSBtZXRob2QgY2FsbCBvciBzZXR0
aW5nIG9mIGFuIElETCBhdHRyaWJ1dGUsIHRoZW4gY29udGludWUKICAgICAvLyB0aGUgc2NyaXB0
LiBUaGUgcmVtYWluZGVyIG9mIHRoZXNlIHN0ZXBzIG11c3QgYmUgcnVuIGFzeW5jaHJvbm91c2x5
LgotICAgIG1fcGVuZGluZ1NlZWsgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdTZWVrPihub3cs
IHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CisgICAgbV9wZW5k
aW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+KG5vdywgdGltZSwgbmVnYXRpdmVUb2xl
cmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICBpZiAoZnJvbURPTSkgewogICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1aW5nIHNlZWsgZnJvbSAiLCBub3csICIgdG8g
IiwgdGltZSk7CiAgICAgICAgIG1fc2Vla1Rhc2tRdWV1ZS5zY2hlZHVsZVRhc2soc3RkOjpiaW5k
KCZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzaywgdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPdXRwdXRFbGVtZW50LmNwcAppbmRleCBkZDRmYTJkNzBlNGY0M2Y0MmI4MjIyZDM3ZDQ0
MThmMWExMzFlZDg3Li41NmI3MjA2YWUzYmU4ZjEwYTg4MTRhZTlhZmFjNjJiZmViNTYwOWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcApAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJp
bmcmIHZhbHVlKQogRE9NVG9rZW5MaXN0JiBIVE1MT3V0cHV0RWxlbWVudDo6aHRtbEZvcigpCiB7
CiAgICAgaWYgKCFtX3Rva2VucykKLSAgICAgICAgbV90b2tlbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOworICAgICAgICBtX3Rva2VucyA9IG1ha2VV
bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgZm9yQXR0cik7CiAgICAgcmV0dXJuICptX3Rva2Vu
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHAKaW5kZXggZGRhOTQ0OWQ1N2FkNDIwODU4NjI3ZGVkM2ZkZDkxODEzMjE1ZmUyYi4uNWI5OWQ1
NTU1MzA0OTcwOTNjNmJjYTk5NTg3YzdhMmY3MjU1OTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9p
ZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbigpCiAg
ICAgaWYgKHJlbmRlcmVyKCkgJiYgIXVzZUZhbGxiYWNrQ29udGVudCgpKSB7CiAgICAgICAgIGlm
IChpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCi0gICAg
ICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9h
ZGVyPigqdGhpcyk7CisgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8
SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgICAgICAgICBpZiAobV9uZWVkc0ltYWdlUmVs
b2FkKQogICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdu
b3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggMTBiYzA5ZmYwOTljODg4YjIyNjI2OTM5
MGI4ZTFmOGJlNGNlMzk2Ny4uYjA0OTM5YjljMmQ3MjcwMjEzNzljNWE0ZGQzNDA0N2Q4MTJhZDk2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAtNTMs
NyArNTMsNyBAQCBjbGFzcyBTdW1tYXJ5U2xvdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU2xvdEFz
c2lnbm1lbnQgewogUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4gSFRNTFN1bW1hcnlFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewogICAgIFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IHN1bW1hcnkgPSBhZG9wdFJlZigqbmV3IEhU
TUxTdW1tYXJ5RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIHN1bW1hcnktPmFkZFNo
YWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPFN1
bW1hcnlTbG90RWxlbWVudD4oKSkpOworICAgIHN1bW1hcnktPmFkZFNoYWRvd1Jvb3QoU2hhZG93
Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlVW5pcXVlPFN1bW1hcnlTbG90RWxlbWVudD4oKSkp
OwogICAgIHJldHVybiBzdW1tYXJ5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAppbmRleCBhNWU3NWFhZmY1MmRkZjlmNTc1NDViYTA2N2VlYzc4OTg4OGRkOWFi
Li42N2ZmMjEyNTJmMWI4ZTgzMTBhMWQ3Y2JiMjMyZWE4YzczOTM4YTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBIVE1M
VmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMoKQogICAgIHVwZGF0ZURpc3BsYXlTdGF0
ZSgpOwogICAgIGlmIChzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSkgewogICAgICAgICBpZiAo
IW1faW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIg
PSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICBtX2ltYWdlTG9h
ZGVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXItPmltYWdlUmVzb3VyY2UoKS5z
ZXRDYWNoZWRJbWFnZShtX2ltYWdlTG9hZGVyLT5pbWFnZSgpKTsKQEAgLTEyNyw3ICsxMjcsNyBA
QCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogCiAgICAgICAgIGlmIChzaG91bGREaXNwbGF5UG9z
dGVySW1hZ2UoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAg
ICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4o
KnRoaXMpOworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJ
bWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJv
bUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAppbmRleCA3YmViYzdhMTBjY2JlZDUzY2ZlOGNh
ZjhhMDdjNzhlNmM1NzlkNjRmLi5iNjY4ZGExZjMyMTRkYmY5YjkxNjFlZmE4MzI1NmM5NWNhODIx
MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UHVibGljVVJM
TWFuYWdlcj4gUHVibGljVVJMTWFuYWdlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiB7Ci0gICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1
ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKKyAgICBhdXRvIHB1YmxpY1VSTE1hbmFnZXIg
PSBtYWtlVW5pcXVlPFB1YmxpY1VSTE1hbmFnZXI+KGNvbnRleHQpOwogICAgIHB1YmxpY1VSTE1h
bmFnZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBwdWJsaWNVUkxNYW5hZ2VyOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCA4YWY3M2E4
YTAwNTQ5ODBhZDE3OTA2OTU2YTg0MzJhNmY5Y2RiMTRiLi5mNWRhYjBmNDJmMmQwNTNlNzAzYzZj
NTcyM2NhMTYwMzcxZDFhMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlk
YXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNz
YWdlLmNwcApAQCAtMTE1LDkgKzExNSw5IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5
KCkpOwogICAgIG1fbWVzc2FnZSA9IG1lc3NhZ2U7CiAgICAgaWYgKCFtX2J1YmJsZSkKLSAgICAg
ICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1l
c3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRp
bWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUpOwogICAgIGVs
c2UKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFs
aWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKTsKKyAgICAgICAgbV90
aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1l
c3NhZ2VET01BbmRTdGFydFRpbWVyKTsKICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsK
IH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3Nh
Z2VET01BbmRTdGFydFRpbWVyKCkKICAgICBpZiAobWFnbmlmaWNhdGlvbiA8PSAwKQogICAgICAg
ICBtX3RpbWVyID0gbnVsbHB0cjsKICAgICBlbHNlIHsKLSAgICAgICAgbV90aW1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJs
ZVRyZWUpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxp
ZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgICAgIG1fdGltZXItPnN0YXJ0
T25lU2hvdChzdGQ6Om1heCg1X3MsIDFfbXMgKiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fbWVzc2Fn
ZS5sZW5ndGgoKSkgKiBtYWduaWZpY2F0aW9uKSk7CiAgICAgfQogfQpAQCAtMjM0LDcgKzIzNCw3
IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OnJlcXVlc3RUb0hpZGVNZXNzYWdlKCkKICAgICB9
CiAKICAgICAvLyBXZSBtdXN0IG5vdCBtb2RpZnkgdGhlIERPTSB0cmVlIGluIHRoaXMgY29udGV4
dCBieSB0aGUgc2FtZSByZWFzb24gYXMgc2V0TWVzc2FnZSgpLgotICAgIG1fdGltZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJi
bGVUcmVlKTsKKyAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0
aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90
KDBfcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggYjE2Nzc4NDQyOGMzYmZlOWU2
ZjE2YTc3ODQwZDNmM2JiOTcwNWI5Ni4uNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRjY2M1
NmMwMjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RydWN0
IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQgewogCiAgICAgRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dChjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xpcCkKICAgICAgICAgOiBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlMaXN0
Q29udGV4dCkgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxp
c3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0ZSwgY2xp
cCwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlz
cGxheUxpc3Q6OlJlY29yZGVyPihkaXNwbGF5TGlzdENvbnRleHQsIGRpc3BsYXlMaXN0LCBzdGF0
ZSwgY2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgICAgICB9KQogICAgIHsKICAgICB9CkBA
IC0yMTE4LDcgKzIxMTgsNyBAQCBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdpbmdDb250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAoVU5MSUtFTFkobV91
c2VzRGlzcGxheUxpc3REcmF3aW5nKSkgewogICAgICAgICBpZiAoIW1fcmVjb3JkaW5nQ29udGV4
dCkKLSAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOworICAgICAgICAgICAg
bV9yZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
PihHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBj
YW52YXNCYXNlKCkuc2l6ZSgpKSk7CiAgICAgICAgIHJldHVybiAmbV9yZWNvcmRpbmdDb250ZXh0
LT5jb250ZXh0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2MzExOTE3NTcwZjJkYjI4NTk0Y2Ji
MzQ5MDI0Njk5N2I1ODNmYmUwLi5jZDQ3MjEyNjFiMmUwMjJiNTUyNWRkM2QzY2E1NDY5ZjljMGIz
ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMTM1OSw3ICsxMzU5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAj
ZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBj
YW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0
ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlh
YmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxw
dHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5
cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxs
cHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFi
bGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZTA2
YmY5OWQ1OTE1OTYzOTgwYTYxMWMzMmE4MzllMjk3ZjEyODA0NS4uZTVmZGU3MDMzNzQ1NmEzMWUx
NTcxZWUxMGYzZmQyNjQyZGIwMzZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgV2Vi
R0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgbmFtZSkKICNkZWZpbmUgRU5BQkxFX0lGX1JFUVVFU1RFRCh0eXBlLCB2YXJpYWJsZSwg
bmFtZUxpdGVyYWwsIGNhbkVuYWJsZSkgXAogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsIG5hbWVMaXRlcmFsKSkgeyBcCiAgICAgICAgIGlmICghdmFyaWFibGUpIHsgXAotICAg
ICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/IHN0ZDo6bWFrZV91bmlxdWU8dHlwZT4o
KnRoaXMpIDogbnVsbHB0cjsgXAorICAgICAgICAgICAgdmFyaWFibGUgPSAoY2FuRW5hYmxlKSA/
IG1ha2VVbmlxdWU8dHlwZT4oKnRoaXMpIDogbnVsbHB0cjsgXAogICAgICAgICAgICAgaWYgKHZh
cmlhYmxlICE9IG51bGxwdHIpIFwKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7IFwKICAgICAgICAgfSBcCkBA
IC0xMzIsNyArMTMyLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX2V4dFNo
YWRlclRleHR1cmVMT0QgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3No
YWRlcl90ZXh0dXJlX2xvZCJfcyk7Ci0gICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJl
TE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CisgICAg
ICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbWFrZVVuaXF1ZTxFWFRTaGFkZXJU
ZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0xNTksNyArMTU5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAg
ICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX2RyYXdfYnVmZmVycyJfcyk7Ci0gICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJz
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7CisgICAgICAgICAg
ICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gbWFrZVVuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPigq
dGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFi
bGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
NzEsNyArMTcxLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgICAgICBtX2FuZ2xlSW5z
dGFuY2VkQXJyYXlzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2lu
c3RhbmNlZF9hcnJheXMiX3MpOwotICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJh
eXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CisgICAg
ICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG1ha2VVbmlxdWU8QU5HTEVJbnN0
YW5jZWRBcnJheXM+KCp0aGlzKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEVuYWJsZUV4dGVuc2lvbigqdGhpcywgbmFtZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggM2VjZTdlZWI3NDJmYWRiNmZlMThiMzNlYjVh
NjEzOWNlZDQxYmE1Ni4uZDE2NmZiMjM5MDc2ZDM2MjY1ZDk2YzY0NWYwNzE4NzVhYzgyYmIzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAKQEAgLTc5OSw4ICs3OTksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KCkKICAgICBtX2NvbnRleHQtPnZpZXdw
b3J0KDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CiAgICAg
bV9jb250ZXh0LT5zY2lzc29yKDAsIDAsIGNhbnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5o
ZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2soc3RkOjpt
YWtlX3VuaXF1ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsKLSAg
ICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KHRoaXMpKTsKKyAgICBtX2Nv
bnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJhY2sobWFrZVVuaXF1ZTxXZWJHTFJlbmRlcmluZ0Nv
bnRleHRMb3N0Q2FsbGJhY2s+KHRoaXMpKTsKKyAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2Fn
ZUNhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JNZXNzYWdlQ2Fs
bGJhY2s+KHRoaXMpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1
cEZsYWdzKCkKQEAgLTE1NzksNyArMTU3OSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQogICAgICAgICBSZWY8SW5z
cGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+IHN0YWNrVHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNj
cmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpOwogCiAgICAgICAgIGZv
ciAoYXV0byYgZXJyb3IgOiBnZXRTaGFkZXJJbmZvTG9nKHNoYWRlcikuc3BsaXQoJ1xuJykpCi0g
ICAgICAgICAgICBjYW52YXMtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJp
bmcsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJXZWJHTDogIiArIGVy
cm9yLCBzdGFja1RyYWNlLmNvcHlSZWYoKSkpOworICAgICAgICAgICAgY2FudmFzLT5kb2N1bWVu
dCgpLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsKICAg
ICB9CiB9CiAKQEAgLTU4MDgsOSArNTgwOCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cHJpbnRUb0NvbnNvbGUoTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmCiAg
ICAgLy8gRXJyb3IgbWVzc2FnZXMgY2FuIG9jY3VyIGR1cmluZyBmdW5jdGlvbiBjYWxscywgc28g
c2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZW0uCiAgICAgaWYgKGxldmVsID09IE1lc3NhZ2VMZXZl
bDo6RXJyb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFj
a1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1
cnJlbnRTdGF0ZSgpKTsKLSAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVz
c2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOworICAg
ICAgICBjb25zb2xlTWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVz
c2FnZSwgV1RGTW92ZShzdGFja1RyYWNlKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbnNvbGVN
ZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlKTsK
KyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWws
IG1lc3NhZ2UpOwogCiAgICAgYXV0byogY2FudmFzID0gaHRtbENhbnZhcygpOwogICAgIGlmIChj
YW52YXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2Fk
U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5l
ci5jcHAKaW5kZXggZTg1OTBjY2M2OTcyOGFmMzkzMDFkM2FlOGQ4OTg4ZjVjMTVhNGIyYS4uYWVm
ZTQ1N2Y0ZWZmMDQzNjU3NjNjYjI2ZjcxNzg0NjNlMzJlMWQ3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjAxLDcgKzIwMSw3
IEBAIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAgICAgICAgaWYgKCF1cmwu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBVUkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJvbSB0aGUgSFRNTFByZWxvYWRTY2FubmVyIHZpYSBz
Y2FuKCk6IHdpdGhvdXQgaXQgd2Ugd2lsbCBnZXQgcmVsYXRpdmUgVVJMcyB3cm9uZy4KICAgICAg
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJzZXQgaW4g
dGhlIHByZWxvYWQgcmVxdWVzdD8KLSAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFByZWxvYWRSZXF1ZXN0PigiY3NzIiwgdXJsLCBiYXNlRWxlbWVudFVSTCwg
Q2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQsIFN0cmluZygpLCBQcmVsb2FkUmVx
dWVzdDo6TW9kdWxlU2NyaXB0OjpObywgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKSk7Cisg
ICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQobWFrZVVuaXF1ZTxQcmVsb2FkUmVxdWVzdD4o
ImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHls
ZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVy
cmVyUG9saWN5OjpFbXB0eVN0cmluZykpOwogICAgICAgICB9CiAgICAgICAgIG1fc3RhdGUgPSBJ
bml0aWFsOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocnVs
ZSwgImNoYXJzZXQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCA1MWJhZTRjMjFjZjk0MGRjZDhjNmQzMjBiYzRkYmQ2
NjI2YmU3ZDlmLi45YWM0NDRlZjBhNjcxZjhhNDc2OTk1N2FlMzIyMmJkOGQxMDA3ZDk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwCkBAIC01MDMsNyArNTAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rpb25EYXRhPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEUKICAgICBKU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UqIGVsZW1lbnRJbnRlcmZhY2UgPSBudWxscHRyOwogICAgIFJl
ZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVt
ZW50SW50ZXJmYWNlKHRva2VuLCAmZWxlbWVudEludGVyZmFjZSk7CiAgICAgaWYgKFVOTElLRUxZ
KGVsZW1lbnRJbnRlcmZhY2UpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDdXN0
b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4oKmVsZW1lbnRJbnRlcmZhY2UsIHRva2VuLm5hbWUo
KSwgV1RGTW92ZSh0b2tlbi5hdHRyaWJ1dGVzKCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJmYWNlLCB0b2tl
bi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygpKSk7CiAgICAgYXR0YWNoTGF0ZXIo
Y3VycmVudE5vZGUoKSwgKmVsZW1lbnQpOwogICAgIG1fb3BlbkVsZW1lbnRzLnB1c2goSFRNTFN0
YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSh0b2tlbikp
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDRmZjRlMmI4Nzg4YTkxOWJmNDJkMTdhZDlm
ZDY1MWI5YjAzYWQxOWIuLmRkOWVhMDRjNmY1MDBjODY0YjhjOTRjMTkzODM3ODc3YWZmZGU1YzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50
UGFyc2VyKEhUTUxEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQ
YXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX29wdGlvbnMoZG9jdW1lbnQpCiAgICAgLCBtX3Rva2Vu
aXplcihtX29wdGlvbnMpCi0gICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6Om1ha2VfdW5pcXVlPEhU
TUxTY3JpcHRSdW5uZXI+KGRvY3VtZW50LCBzdGF0aWNfY2FzdDxIVE1MU2NyaXB0UnVubmVySG9z
dCY+KCp0aGlzKSkpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRy
ZWVCdWlsZGVyPigqdGhpcywgZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3koKSwgbV9vcHRp
b25zKSkKLSAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFBhcnNl
clNjaGVkdWxlcj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxIVE1M
U2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhvc3Qm
PigqdGhpcykpKQorICAgICwgbV90cmVlQnVpbGRlcihtYWtlVW5pcXVlPEhUTUxUcmVlQnVpbGRl
cj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCisg
ICAgLCBtX3BhcnNlclNjaGVkdWxlcihtYWtlVW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+KCp0
aGlzKSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRlKGRvY3VtZW50KQotICAgICwgbV9wcmVs
b2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MUmVzb3VyY2VQcmVsb2FkZXI+KGRvY3VtZW50KSkK
KyAgICAsIG1fcHJlbG9hZGVyKG1ha2VVbmlxdWU8SFRNTFJlc291cmNlUHJlbG9hZGVyPihkb2N1
bWVudCkpCiB7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgaW5saW5lIEhUTUxEb2N1bWVudFBhcnNl
cjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW4K
ICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1bWVudCgpLCByYXdQ
b2xpY3kpCiAgICAgLCBtX29wdGlvbnMoZnJhZ21lbnQuZG9jdW1lbnQoKSkKICAgICAsIG1fdG9r
ZW5pemVyKG1fb3B0aW9ucykKLSAgICAsIG1fdHJlZUJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxI
VE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNlckNv
bnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKKyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1
ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHBhcnNl
ckNvbnRlbnRQb2xpY3koKSwgbV9vcHRpb25zKSkKICAgICAsIG1feHNzQXVkaXRvckRlbGVnYXRl
KGZyYWdtZW50LmRvY3VtZW50KCkpCiB7CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1odG1sLWZyYWdtZW50cwpAQCAtMzE1
LDcgKzMxNSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNo
cm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKICAgICAg
ICAgQVNTRVJUKG1fdG9rZW5pemVyLmlzSW5EYXRhU3RhdGUoKSk7CiAgICAgICAgIGlmICghbV9w
cmVsb2FkU2Nhbm5lcikgewotICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFr
ZV91bmlxdWU8SFRNTFByZWxvYWRTY2FubmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgp
LCBkb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1fcHJlbG9h
ZFNjYW5uZXIgPSBtYWtlVW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1
bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAg
ICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChtX2lucHV0LmN1cnJlbnQoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2NhbigqbV9wcmVsb2FkZXIsICpk
b2N1bWVudCgpKTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6
aW5zZXJ0KFNlZ21lbnRlZFN0cmluZyYmIHNvdXJjZSkKICAgICAgICAgLy8gQ2hlY2sgdGhlIGRv
Y3VtZW50LndyaXRlKCkgb3V0cHV0IHdpdGggYSBzZXBhcmF0ZSBwcmVsb2FkIHNjYW5uZXIgYXMK
ICAgICAgICAgLy8gdGhlIG1haW4gc2Nhbm5lciBjYW4ndCBkZWFsIHdpdGggaW5zZXJ0aW9ucy4K
ICAgICAgICAgaWYgKCFtX2luc2VydGlvblByZWxvYWRTY2FubmVyKQotICAgICAgICAgICAgbV9p
bnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTFByZWxvYWRTY2Fu
bmVyPihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVudCgpLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpKTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBtYWtl
VW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwg
ZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIG1faW5zZXJ0aW9uUHJl
bG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKHNvdXJjZSk7CiAgICAgICAgIG1faW5zZXJ0aW9uUHJl
bG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCAz
MGM1YjQ2ZGYxMDNkYmRmNmY0YjdjZTQwOWNjM2FhMTZjNTQ2MDEyLi42ZWYxNzEyYjlkNjNiNzFh
Y2I3YzE2OWY2MmI0OWM4MmYzMTA1ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgSFRNTEVs
ZW1lbnRTdGFjazo6aW5zZXJ0QWJvdmUoUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSwgRWxlbWVu
dFJlY29yZCYgcmVjCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICArK21fc3RhY2tE
ZXB0aDsKLSAgICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxFbGVt
ZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkpOwor
ICAgICAgICByZWNvcmRBYm92ZS0+c2V0TmV4dChtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdU
Rk1vdmUoaXRlbSksIHJlY29yZEFib3ZlLT5yZWxlYXNlTmV4dCgpKSk7CiAgICAgICAgIHJlY29y
ZEFib3ZlLT5uZXh0KCktPmVsZW1lbnQoKS5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFj
azo6cHVzaENvbW1vbihSZWY8SFRNTFN0YWNrSXRlbT4mJiBpdGVtKQogICAgIEFTU0VSVChtX3Jv
b3ROb2RlKTsKIAogICAgICsrbV9zdGFja0RlcHRoOwotICAgIG1fdG9wID0gc3RkOjptYWtlX3Vu
aXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CisgICAg
bV90b3AgPSBtYWtlVW5pcXVlPEVsZW1lbnRSZWNvcmQ+KFdURk1vdmUoaXRlbSksIFdURk1vdmUo
bV90b3ApKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudFN0YWNrOjpwb3BDb21tb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXgg
NTNhMTcyZDMzYWZjZGE4ZmY4OGQzNDRkOWMwZWYwOTAzY2RlY2M5Mi4uMzNkN2IzYmIwOGI2NTJk
MGNkNjliY2VkZjFmODYwNjMxYWZhYTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3Mg
VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyIHsKICAgICAgICAgaWYgKCFMaW5r
TG9hZGVyOjppc1N1cHBvcnRlZFR5cGUodHlwZS52YWx1ZSgpLCBtX3R5cGVBdHRyaWJ1dGUpKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byByZXF1ZXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oaW5pdGlhdG9yRm9yKG1fdGFnSWQpLCBtX3Vy
bFRvTG9hZCwgcHJlZGljdGVkQmFzZVVSTCwgdHlwZS52YWx1ZSgpLCBtX21lZGlhQXR0cmlidXRl
LCBtX21vZHVsZVNjcmlwdCwgbV9yZWZlcnJlclBvbGljeSk7CisgICAgICAgIGF1dG8gcmVxdWVz
dCA9IG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91
cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0
ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOwogICAgICAgICByZXF1ZXN0LT5z
ZXRDcm9zc09yaWdpbk1vZGUobV9jcm9zc09yaWdpbk1vZGUpOwogICAgICAgICByZXF1ZXN0LT5z
ZXROb25jZShtX25vbmNlQXR0cmlidXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VG9rZW4uaAppbmRleCBmNzFiMjFkMjc4OTVlNTc4YWI0N2Y1Y2Y1NDAyNTgzZTM2MTIxZDAyLi4z
Zjc0NmRjNmQ2NjdjNDM3MTFiNjhkMDliNDIwMmQyM2ZmMGMwODhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVG9rZW4uaApAQCAtMjA5LDcgKzIwOSw3IEBAIGlubGluZSB2b2lkIEhU
TUxUb2tlbjo6YmVnaW5ET0NUWVBFKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlh
bGl6ZWQpOwogICAgIG1fdHlwZSA9IERPQ1RZUEU7Ci0gICAgbV9kb2N0eXBlRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8RG9jdHlwZURhdGE+KCk7CisgICAgbV9kb2N0eXBlRGF0YSA9IG1ha2VVbmlx
dWU8RG9jdHlwZURhdGE+KCk7CiB9CiAKIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5ET0NU
WVBFKFVDaGFyIGNoYXJhY3RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5jcHAKaW5kZXggYWM2ZTc5NDQzMDA3MDM2NDIxZWIxNmRmODNhOTBkM2QyNzcyZjg1Ni4uMDYx
ZDk1NjdiNzg0ZDliMGJhY2YzZjZkYjljZGU1YTgwNmIwMWMxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8WFNTSW5mbz4gWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5S
ZXF1ZXN0JiByZXF1ZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGJvb2wgZGlkQmxv
Y2tFbnRpcmVQYWdlID0gbV94c3NQcm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlv
bjo6QmxvY2tFbmFibGVkOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFhTU0luZm8+KG1f
ZG9jdW1lbnRVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSwgbV9kaWRTZW5kVmFsaWRYU1NQcm90ZWN0
aW9uSGVhZGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJM
LCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7
CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU3RhcnRUb2tlbihjb25zdCBGaWx0ZXJUb2tl
blJlcXVlc3QmIHJlcXVlc3QpCkBAIC03MTIsNyArNzEyLDcgQEAgU3VmZml4VHJlZTxBU0NJSUNv
ZGVib29rPiogWFNTQXVkaXRvcjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSgpCiAgICAgY29u
c3QgdW5zaWduZWQgc3VmZml4VHJlZURlcHRoID0gNTsKIAogICAgIGlmICghbV9kZWNvZGVkSFRU
UEJvZHlTdWZmaXhUcmVlICYmIG1fZGVjb2RlZEhUVFBCb2R5Lmxlbmd0aCgpID49IG1pbmltdW1M
ZW5ndGhGb3JTdWZmaXhUcmVlKQotICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2RlZEhU
VFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOworICAgICAgICBtX2RlY29kZWRIVFRQQm9keVN1ZmZp
eFRyZWUgPSBtYWtlVW5pcXVlPFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4+KG1fZGVjb2RlZEhU
VFBCb2R5LCBzdWZmaXhUcmVlRGVwdGgpOwogICAgIHJldHVybiBtX2RlY29kZWRIVFRQQm9keVN1
ZmZpeFRyZWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDNhNjM3ZGFlZjAxMjRlMmU0
ZWQzMzZiNjYzNzUyZDAwMjJiNWJlMDEuLmQ1NjZiY2M3OTRhYTcyNGFiZTYwYTA4MGEzZjJjZjk1
MWY0NTM3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIFJlbmRlclRleHRD
b250cm9sSW5uZXJCbG9jayogVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpyZW5kZXJlcigp
IGNvbnN0CiBPcHRpb25hbDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5
bGUqIHNoYWRvd0hvc3RTdHlsZSkKIHsKICAgICBhdXRvIHN0eWxlID0gZG93bmNhc3Q8SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ+KCpzaGFkb3dIb3N0KCkpLmNyZWF0ZUlubmVyVGV4dFN0eWxl
KCpzaGFkb3dIb3N0U3R5bGUpOwotICAgIHJldHVybiBFbGVtZW50U3R5bGUoc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShzdHlsZSkpKTsKKyAgICByZXR1cm4gRWxlbWVudFN0
eWxlKG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CiB9CiAKIC8vIE1B
Uks6IFRleHRDb250cm9sUGxhY2Vob2xkZXJFbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAppbmRleCBlNDAyMDBhOWE3
YTIyNWRkZmQ4NzQ0ZDhjOTNiZGU2OTA5NjQ3MDA5Li40OTM0ZDcyOWMxOThkMDgwNTlhYzhjOWYw
YjE3NGE5NWU3NmY3MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJiBj
dWUpCiBXZWJWVFRQYXJzZXImIEluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OnBhcnNlcigpCiB7CiAg
ICAgaWYgKCFtX3dlYlZUVFBhcnNlcikKLSAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4o
dGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgICAgIG1fd2ViVlRUUGFyc2Vy
ID0gbWFrZVVuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVu
dCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiAqbV93ZWJW
VFRQYXJzZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kV2ViVlRUVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
V2ViVlRUVGV4dFRyYWNrLmNwcAppbmRleCA4NTViYjIzOTI3ZWIxMGEzNWE1OWQxMmJlMGQyMzVh
NzNjYWJjMTBlLi4xMGZhYTEyZjkwYjQ2MGI1MDU2ZjI1NjdjYzJkOTgxMjdkOGZhYTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2su
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIEluYmFuZFdlYlZUVFRleHRUcmFjazo6fkluYmFuZFdlYlZU
VFRleHRUcmFjaygpID0gZGVmYXVsdDsKIFdlYlZUVFBhcnNlciYgSW5iYW5kV2ViVlRUVGV4dFRy
YWNrOjpwYXJzZXIoKQogewogICAgIGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2Vi
VlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdl
YlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAg
ICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2Fz
dDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IDhmMjljN2YxNjc5YTBmYTI5MThk
ZWNmYTUxM2UyZDgwMjcxYTM1ZTIuLjdhMWUxYmM0NjkxYjIxMTY4OGMzY2Y1ZGE2MTlhYzYxZGJk
NmZlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0
VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1l
ckZpcmVkKCkKICAgICAvLyA0LiBEb3dubG9hZDogSWYgVVJMIGlzIG5vdCB0aGUgZW1wdHkgc3Ry
aW5nLCBwZXJmb3JtIGEgcG90ZW50aWFsbHkgQ09SUy1lbmFibGVkIGZldGNoIG9mIFVSTCwgd2l0
aCB0aGUKICAgICAvLyBtb2RlIGJlaW5nIHRoZSBzdGF0ZSBvZiB0aGUgbWVkaWEgZWxlbWVudCdz
IGNyb3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmlidXRlLCB0aGUgb3JpZ2luIGJlaW5nIHRoZQogICAg
IC8vIG9yaWdpbiBvZiB0aGUgbWVkaWEgZWxlbWVudCdzIERvY3VtZW50LCBhbmQgdGhlIGRlZmF1
bHQgb3JpZ2luIGJlaGF2aW91ciBzZXQgdG8gZmFpbC4KLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dFRyYWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJDbGll
bnQmPigqdGhpcyksIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90cmFj
a0VsZW1lbnQtPmRvY3VtZW50KCkpKTsKKyAgICBtX2xvYWRlciA9IG1ha2VVbmlxdWU8VGV4dFRy
YWNrTG9hZGVyPihzdGF0aWNfY2FzdDxUZXh0VHJhY2tMb2FkZXJDbGllbnQmPigqdGhpcyksIHN0
YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPigmbV90cmFja0VsZW1lbnQtPmRvY3Vt
ZW50KCkpKTsKICAgICBpZiAoIW1fbG9hZGVyLT5sb2FkKG1fdXJsLCAqbV90cmFja0VsZW1lbnQp
KQogICAgICAgICBtX3RyYWNrRWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKEhUTUxUcmFja0VsZW1l
bnQ6OkZhaWx1cmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0Nv
bW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExp
bmVBUElIb3N0LmNwcAppbmRleCAwMzEwODBlMWFiNjZkMzJjYzljMDcxNzhmMDJmOTM1MjNiYzcw
NmIwLi45MDI5YjkyZDhiODNmMmQ3YmVkNmQ4ZTU0NTc2YzBhMTY4Y2E1MjViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBSZWY8Q29tbWFuZExpbmVBUElIb3N0PiBDb21tYW5kTGluZUFQSUhvc3Q6OmNyZWF0
ZSgpCiB9CiAKIENvbW1hbmRMaW5lQVBJSG9zdDo6Q29tbWFuZExpbmVBUElIb3N0KCkKLSAgICA6
IG1faW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCkp
CisgICAgOiBtX2luc3BlY3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0Pigp
KQogewogfQogCkBAIC0xOTYsNyArMTk2LDcgQEAgSlNWYWx1ZSBDb21tYW5kTGluZUFQSUhvc3Q6
OndyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2IKIHZv
aWQgQ29tbWFuZExpbmVBUElIb3N0OjpjbGVhckFsbFdyYXBwZXJzKCkKIHsKICAgICBtX3dyYXBw
ZXJzLmNsZWFyQWxsV3JhcHBlcnMoKTsKLSAgICBtX2luc3BlY3RlZE9iamVjdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCk7CisgICAgbV9pbnNwZWN0ZWRPYmplY3QgPSBt
YWtlVW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCmluZGV4IDZjMzFlNDk4ZTQz
NGQzMDBiMGYxYzZlYWI4NDM0Njc3NmNmMGEyZmMuLjgzODkwOGRjOTM2ZWZhNmJhMjZjNzkxNjcx
NDRkYjdkZTllMmFlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIGNsYXNzIERPTUVkaXRvcjo6SW5zZXJ0QmVmb3JlQWN0aW9uIGZpbmFs
IDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gcGVyZm9ybSgpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5wYXJlbnROb2Rl
KCkpIHsKLSAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbW92ZUNoaWxkQWN0aW9uPigqbV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZSk7CisgICAg
ICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gbWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFjdGlv
bj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOwogICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBtX3JlbW92ZUNoaWxkQWN0aW9uLT5wZXJmb3JtKCk7CiAgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpOwpAQCAtMzg1LDI3ICszODUsMjcgQEAgRE9NRWRpdG9yOjp+RE9NRWRpdG9y
KCkgPSBkZWZhdWx0OwogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6Omluc2VydEJlZm9y
ZShOb2RlJiBwYXJlbnROb2RlLCBSZWY8Tm9kZT4mJiBub2RlLCBOb2RlKiBhbmNob3JOb2RlKQog
ewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEJl
Zm9yZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOworICAg
IHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4o
cGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSkpOwogfQogCiBFeGNlcHRpb25P
cjx2b2lkPiBET01FZGl0b3I6OnJlbW92ZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUsIE5vZGUmIG5v
ZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVt
b3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5
LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwgbm9kZSkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldEF0dHJpYnV0ZShFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0QXR0cmlidXRl
QWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShtYWtlVW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwgdmFsdWUp
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVBdHRyaWJ1dGUoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHJldHVybiBtX2hpc3Rv
cnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVu
dCwgbmFtZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlbW92
ZUF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWws
IE5vZGUqJiBuZXdOb2RlKQogewotICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxT
ZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOworICAgIGF1dG8gYWN0aW9uID0gbWFrZVVu
aXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOwogICAgIGF1dG8mIHJhd0FjdGlv
biA9ICphY3Rpb247CiAgICAgYXV0byByZXN1bHQgPSBtX2hpc3RvcnkucGVyZm9ybShXVEZNb3Zl
KGFjdGlvbikpOwogICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNDE1LDIyICs0
MTUsMjIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9kZSYg
bm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYKIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9N
RWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5n
JiB3aGVyZSwgY29uc3QgU3RyaW5nJiBodG1sKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEFkamFjZW50SFRNTEFjdGlvbj4oZWxlbWVudCwg
d2hlcmUsIGh0bWwpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJ
bnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChUZXh0JiB0ZXh0Tm9k
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShz
dGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0KSk7
CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVwbGFjZVdob2xlVGV4
dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRp
dG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYgbmV3Tm9kZSwg
Tm9kZSYgb2xkTm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtl
X3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2RlQWN0aW9uPihwYXJlbnROb2RlLCBXVEZNb3ZlKG5ld05v
ZGUpLCBvbGROb2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8
UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdOb2RlKSwgb2xk
Tm9kZSkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnNldE5vZGVWYWx1ZShO
b2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBtX2hpc3Rvcnku
cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlvbj4obm9kZSwgdmFsdWUp
KTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxTZXROb2RlVmFsdWVB
Y3Rpb24+KG5vZGUsIHZhbHVlKSk7CiB9CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRXJyb3JTdHJp
bmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQsIEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggY2M1
ZTEyM2I1NDFjOWYwZDRkZjRiYThlODI3NWY1MzUyZGQ5YTlmZi4uZjJlNTg2ZmU0MzBiOGJjZTgy
MWJkN2UyN2YzZWY3ZmMyNWE5NzM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVBhdGNoU3VwcG9ydC5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJp
bmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdl
c3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNNYXAqIHVudXNlZE5vZGVzTWFwKQogewotICAgIGF1
dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWdlc3Q+KCk7CisgICAgYXV0byBkaWdlc3Qg
PSBtYWtlVW5pcXVlPERpZ2VzdD4oKTsKICAgICBkaWdlc3QtPm5vZGUgPSAmbm9kZTsKICAgICBT
SEExIHNoYTE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCA1MjAzNzA2YjUzYjMyYjBiYTRmMGVkNGQ0YmE0MDBiNmM3OWI1ZTE1
Li42M2ZmM2FiNjIzYTQ0NmNkNjIwZWU0N2UzOTIwNTVjZWE1MWE4NzZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC05MywxMCAr
OTMsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3Bl
Y3RvckNsaWVudCkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdl
bnRzOjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjpt
YWtlX3VuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNj
cmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VV
bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpj
cmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCi0gICAgLCBtX292ZXJsYXkoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JPdmVybGF5PihwYWdlLCBpbnNwZWN0b3JDbGllbnQpKQorICAg
ICwgbV9vdmVybGF5KG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9y
Q2xpZW50KSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkp
CiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKHBhZ2UpCiAgICAgLCBtX3BhZ2UocGFnZSkKQEAg
LTEwNiw3ICsxMDYsNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAgYXV0byBwYWdl
Q29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0
byBjb25zb2xlQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250ZXh0
KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xl
QWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudCkp
OwogfQpAQCAtMTUzLDM3ICsxNTMsMzcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVh
dGVMYXp5QWdlbnRzKCkKICAgICBlbnN1cmVJbnNwZWN0b3JBZ2VudCgpOwogICAgIGVuc3VyZVBh
Z2VBZ2VudCgpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJ1
bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1
ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCkpOwogCi0gICAgYXV0byBkZWJ1Z2dlckFn
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQpOwor
ICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IG1ha2VVbmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KHBh
Z2VDb250ZXh0KTsKICAgICBhdXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBkZWJ1Z2dlckFnZW50Lmdl
dCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKIAotICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
Q1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8
UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsKICAgICBlbnN1cmVET01B
Z2VudCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBkZWJ1Z2dlckFnZW50UHRyKSk7Ci0gICAgbV9h
Z2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4dCkp
OwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0
LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50Pihw
YWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVu
aXF1ZTxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PihwYWdlQ29udGV4dCkpOwogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVu
ZChtYWtlVW5pcXVlPEluc3BlY3RvckluZGV4ZWREQkFnZW50PihwYWdlQ29udGV4dCkpOwogI2Vu
ZGlmCiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIHNj
cmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBtYWtlVW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvclNjcmlwdFByb2ZpbGVyQWdlbnQoc2NyaXB0UHJvZmlsZXJBZ2VudFB0ci5nZXQoKSk7CiAg
ICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2NyaXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCiAj
aWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9h
Z2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBhZ2VD
b250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ1BVUHJv
ZmlsZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1
ZTxJbnNwZWN0b3JNZW1vcnlBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VIZWFwQWdlbnQ+KHBhZ2VDb250ZXh0KSk7
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZUF1ZGl0QWdlbnQ+KHBh
Z2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yQ2FudmFzQWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBt
X2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkpOwor
ICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VBdWRpdEFnZW50PihwYWdlQ29udGV4
dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNhbnZhc0FnZW50
PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAKICAgICBpZiAoYXV0byYgY29tbWFuZExp
bmVBUElIb3N0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmNvbW1hbmRMaW5lQVBJSG9zdCgp
KQogICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmluaXQobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmNvcHlSZWYoKSk7CkBAIC00MjEsNyArNDIxLDcgQEAgSW5zcGVjdG9yQWdlbnQmIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuc3VyZUluc3BlY3RvckFnZW50KCkKIHsKICAgICBpZiAoIW1faW5zcGVj
dG9yQWdlbnQpIHsKICAgICAgICAgYXV0byBwYWdlQ29udGV4dCA9IHBhZ2VBZ2VudENvbnRleHQo
KTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IG1h
a2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KHBhZ2VDb250ZXh0KTsKICAgICAgICAgbV9pbnNwZWN0
b3JBZ2VudCA9IGluc3BlY3RvckFnZW50LmdldCgpOwogICAgICAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMtPnNldEluc3BlY3RvckFnZW50KG1faW5zcGVjdG9yQWdlbnQpOwogICAgICAgICBtX2Fn
ZW50cy5hcHBlbmQoV1RGTW92ZShpbnNwZWN0b3JBZ2VudCkpOwpAQCAtNDMzLDcgKzQzMyw3IEBA
IEluc3BlY3RvckRPTUFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01BZ2VudCgp
CiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckRPTUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNv
bnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gZG9tQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgbV9vdmVybGF5Lmdl
dCgpKTsKKyAgICAgICAgYXV0byBkb21BZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yRE9NQWdl
bnQ+KHBhZ2VDb250ZXh0LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgICAgICBtX2luc3BlY3RvckRP
TUFnZW50ID0gZG9tQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3Zl
KGRvbUFnZW50KSk7CiAgICAgfQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIEluc3BlY3RvclBhZ2VBZ2Vu
dCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50KCkKIHsKICAgICBpZiAoIW1f
aW5zcGVjdG9yUGFnZUFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdl
bnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gcGFnZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVy
bGF5LmdldCgpKTsKKyAgICAgICAgYXV0byBwYWdlQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3Rv
clBhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1faW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0
KCkpOwogICAgICAgICBtX2luc3BlY3RvclBhZ2VBZ2VudCA9IHBhZ2VBZ2VudC5nZXQoKTsKICAg
ICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUocGFnZUFnZW50KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCmluZGV4IDAwZDVmMTg1
MmNlYmEyNzBjM2FmODFjMTMyMDkwMDVkYTdiMTE4YTguLmM4MTAzZGQ3ZGJiODMyMGVhYjJlNmFk
NWUzMmMyZDUyZDcyYjA2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySGlzdG9yeS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5zcGVj
dG9ySGlzdG9yeTo6cGVyZm9ybShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24pCiAKIHZv
aWQgSW5zcGVjdG9ySGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUoKQogewotICAgIHBlcmZvcm0o
c3RkOjptYWtlX3VuaXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7CisgICAgcGVyZm9ybShtYWtl
VW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSW5z
cGVjdG9ySGlzdG9yeTo6dW5kbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggMTQ5NWYzOWUyYTQ1ZTNjNzJhOTYxNGFmZjU3OWU2
NGRkZjU1YzBiNS4uZGJlNTU1M2YwMTIxNzM0YTk2NTkxMzg0NmFhZDQ2YmYyNzc5NzNkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApA
QCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0YShz
dGQ6OnVuaXF1ZV9wdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBzb3VyY2VECiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3NvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3Vy
Y2VEYXRhTGlzdD4oKTsKKyAgICBtX3NvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJ1bGVTb3VyY2VE
YXRhTGlzdD4oKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9u
IHRvIHJldGFpbiB0aGUgb3JpZ2luYWwgZmxhdCBzb3VyY2VEYXRhIHN0cnVjdHVyZQogICAgIC8v
IGNvbnRhaW5pbmcgb25seSBzdHlsZSBydWxlcywgZXZlbiB0aG91Z2ggQ1NTUGFyc2VyIG5vdyBw
cm92aWRlcyB0aGUgZnVsbCBydWxlIHNvdXJjZSBkYXRhIHRyZWUuCkBAIC0xMzIwLDcgKzEzMjAs
NyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIG5ld1N0eWxlU2hlZXQgPSBTdHlsZVNoZWV0Q29u
dGVudHM6OmNyZWF0ZSgpOwotICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKKyAgICBhdXRvIHJ1bGVTb3VyY2VEYXRh
UmVzdWx0ID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAgICAgCiAgICAgQ1NT
UGFyc2VyQ29udGV4dCBjb250ZXh0KHBhcnNlckNvbnRleHRGb3JEb2N1bWVudChtX3BhZ2VTdHls
ZVNoZWV0LT5vd25lckRvY3VtZW50KCkpKTsKICAgICBTdHlsZVNoZWV0SGFuZGxlciBoYW5kbGVy
KG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCBtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3Vt
ZW50KCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGQzYjc1OWYyOWNjZjFh
ZTE4MDI4MGQ1ZTE3MzY3MGQyOWM0ZjhjYzEuLmZkN2NhZDMwNzY3ZTc3NWIxNjc1ZWM0NTRlZjdh
MDhiYjAzNmQ1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
c0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3Ry
aW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAKLSAgICBh
dXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0
SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9IG1ha2VVbmlxdWU8UmVzb3Vy
Y2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNvdXJjZURhdGEtPnNldFR5cGUo
dHlwZSk7CiAgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBX
VEZNb3ZlKHJlc291cmNlRGF0YSkpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OnJlc291cmNlQ3JlYXRlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nCiB7CiAgICAgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7
CiAKLSAgICBhdXRvIHJlc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VEYXRh
PihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKKyAgICBhdXRvIHJlc291cmNlRGF0YSA9IG1ha2VVbmlx
dWU8UmVzb3VyY2VEYXRhPihyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICByZXNvdXJjZURhdGEt
PnNldENhY2hlZFJlc291cmNlKCZjYWNoZWRSZXNvdXJjZSk7CiAgICAgbV9yZXF1ZXN0SWRUb1Jl
c291cmNlRGF0YU1hcC5zZXQocmVxdWVzdElkLCBXVEZNb3ZlKHJlc291cmNlRGF0YSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCmluZGV4IDQzNTFlODcyYTllNWEzNjQ3MjlmNWI0ZmIyNjIxNmM3MzMwMmM4ZGQu
LjM2NGFlYTdkNGI1ZDkxMTc5MzI3NWQ2NDZmMjk1ZTY3YmYwZWVlZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogV29ya2VySW5z
cGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxT
Y29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5z
dHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywg
V2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0
TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYklu
amVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9u
dGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQogICAgICwgbV9l
eGVjdXRpb25TdG9wd2F0Y2goU3RvcHdhdGNoOjpjcmVhdGUoKSkKQEAgLTY5LDcgKzY5LDcgQEAg
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3Jr
ZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKIAogICAgIGF1dG8gd29ya2VyQ29udGV4dCA9IHdvcmtl
ckFnZW50Q29udGV4dCgpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7CisgICAgYXV0byBjb25zb2xl
QWdlbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVBZ2VudD4od29ya2VyQ29udGV4dCk7CiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50
LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIH0K
QEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5l
Y3RGcm9udGVuZCgpCiAgICAgbV9leGVjdXRpb25TdG9wd2F0Y2gtPnJlc2V0KCk7CiAgICAgbV9l
eGVjdXRpb25TdG9wd2F0Y2gtPnN0YXJ0KCk7CiAKLSAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0g
c3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xv
YmFsU2NvcGUpOworICAgIG1fZm9yd2FyZGluZ0NoYW5uZWwgPSBtYWtlVW5pcXVlPFdvcmtlclRv
UGFnZUZyb250ZW5kQ2hhbm5lbD4obV93b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV9mcm9udGVu
ZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKCptX2ZvcndhcmRpbmdDaGFubmVsLmdldCgpKTsKICAg
ICBtX2FnZW50cy5kaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoJm1fZnJvbnRlbmRSb3V0ZXIu
Z2V0KCksICZtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIH0KQEAgLTE2NCwxOCArMTY0LDE4
IEBAIHZvaWQgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAK
ICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENvbnRleHQoKTsKIAotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclJ1bnRpbWVBZ2VudD4od29ya2Vy
Q29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlclJ1bnRpbWVB
Z2VudD4od29ya2VyQ29udGV4dCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KG1fd29ya2VyR2xvYmFsU2NvcGUpKSB7
Ci0gICAgICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJB
Z2VudD4od29ya2VyQ29udGV4dCkpOwotICAgICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICAgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckFnZW50Pih3b3JrZXJDb250ZXh0
KSk7CisgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlck5ldHdvcmtBZ2Vu
dD4od29ya2VyQ29udGV4dCkpOwogICAgIH0KICNlbmRpZgogCi0gICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJDb250ZXh0KSk7Ci0gICAgbV9h
Z2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4od29ya2Vy
Q29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckF1
ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1
ZTxXZWJIZWFwQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxXb3JrZXJEZWJ1Z2dlckFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyQXVkaXRBZ2VudD4od29ya2VyQ29udGV4dCkpOwog
CiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5p
bml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwCmluZGV4IGE4ZDNjODk5YzMyODBhMjhlNjczMmNmODhhYjg0ZDAwMGQ0
NWVkMmQuLmZkZjA0NGM1NzliMzY4YzMyMDUxYjY1ZGM0NDBlMzg3ZjYwMThmYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiQXBwbGljYXRpb25DYWNoZSJfcywgY29udGV4dCkKLSAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpBcHBs
aWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
KyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpBcHBsaWNh
dGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpBcHBsaWNhdGlvbkNhY2hlQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAg
ICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9m
aWxlckFnZW50LmNwcAppbmRleCBjZjk0Y2E4MDk2ZmY1NzFkNzRkNzczYjFmMDAyNzUwNTRjMGNl
MWY5Li4xMTYyNGUyNDA5NDY0ZmMxZTFlNjVhNjk5OGRiZDFiMDY4MmYwYjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BV
UHJvZmlsZXJBZ2VudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yQ1BVUHJvZmlsZXJB
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KCJDUFVQcm9maWxlciJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDUFVQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtl
VW5pcXVlPEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNQ
VVByb2ZpbGVyQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNGI2OTk0NWVjNzA2N2Y5NjQzZTQ4MDcz
MDM0ODQyNjg2ZDYxOWZiOC4uNDRlOWM1YWJlYjRjOTY2YWJhZWE5NDRhNDBkNWUwM2Q0NzJkMTFl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3Rv
ckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShDU1NSdWxlJiBydWxlKQogCiBJbnNwZWN0b3JDU1NB
Z2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKCJDU1MiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlz
cGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENT
U0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKENTU0JhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0
ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxl
U2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CisgICAgYXV0byBy
ZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0U3R5bGVT
aGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsKICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFn
ZW50Ojp0b0Vycm9yU3RyaW5nKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogfQpAQCAtNjQ2
LDcgKzY0Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJm
b3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNo
ZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdl
bnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5z
cGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkpOwogICAgIGlmIChwZXJmb3JtUmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9N
QWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwog
ICAgICAgICByZXR1cm47CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6
T2IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRv
bUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRSdWxlU2VsZWN0
b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7Cisg
ICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtl
VW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91
bmRJZCwgc2VsZWN0b3IpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkg
ewogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5n
KHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NzU3LDcgKzc1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QWRkUnVsZUFjdGlv
bj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOworICAgIGF1dG8gYWN0aW9uID0gbWFr
ZVVuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CiAg
ICAgYXV0byYgcmF3QWN0aW9uID0gKmFjdGlvbjsKICAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBk
b21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgaWYgKHBl
cmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggOWJlMDYx
MTlmYjMyMTk3MDA3Mjk3MjJkODM2YTgxNmIyNWYxYzAxNS4uMGU1MGM3NWJhNDg3NTE1NTZlNDEy
ZGNiOTdhZDE5NjY5NjVhOTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yQ2FudmFzQWdlbnQ6Okluc3Bl
Y3RvckNhbnZhc0FnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoIkNhbnZhcyJfcywgY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+
KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNhbnZhc0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6Q2FudmFz
QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlz
KSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKQEAg
LTQzNiw3ICs0MzYsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNB
Y3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZAogICAgIGlmICghaW5zcGVj
dG9yQ2FudmFzLT5jdXJyZW50RnJhbWVIYXNEYXRhKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNvbnRleHQoKS5jYW52YXNC
YXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBxdWV1
ZSA9IE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKTsKLSAgICAgICAgICAgIHF1ZXVl
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihxdWV1
ZSwgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFsmLCBwcm90ZWN0ZWRJbnNwZWN0b3JDYW52YXMg
PSBpbnNwZWN0b3JDYW52YXMuY29weVJlZigpXSB7CisgICAgICAgICAgICBxdWV1ZS5hcHBlbmQo
bWFrZVVuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUsICpzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0gaW5zcGVjdG9yQ2Fu
dmFzLmNvcHlSZWYoKV0gewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYW52YXNFbGVtZW50
ID0gcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzLT5jYW52YXNFbGVtZW50KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNhbnZhc0VsZW1lbnQtPmlzRGVzY2VuZGFudE9mKGNhbnZhc0VsZW1l
bnQtPmRvY3VtZW50KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNw
cAppbmRleCA2YzE5NmUwY2M2ODJiNDQyNTZjN2RkYWFlMDkwYWEwYWFkNTUzMTdkLi5mMGEyOGMx
MzMxYzViYjMwODhkNTNlNzI0M2RiYWY0ZWViNjNlN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjgzLDcg
KzI4Myw3IEBAIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhFeGNlcHRp
b24mJiBleGNlcHRpb24pCiBJbnNwZWN0b3JET01BZ2VudDo6SW5zcGVjdG9yRE9NQWdlbnQoUGFn
ZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKICAgICA6
IEluc3BlY3RvckFnZW50QmFzZSgiRE9NIl9zLCBjb250ZXh0KQogICAgICwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNw
YXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRj
aGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRP
TUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogICAgICwg
bV9vdmVybGF5KG92ZXJsYXkpCkBAIC0zMDEsOCArMzAxLDggQEAgSW5zcGVjdG9yRE9NQWdlbnQ6
On5JbnNwZWN0b3JET01BZ2VudCgpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlciopCiB7Ci0gICAgbV9oaXN0b3J5ID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JIaXN0b3J5PigpOwotICAgIG1fZG9tRWRpdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxET01FZGl0b3I+KCptX2hpc3RvcnkpOworICAgIG1faGlzdG9yeSA9IG1ha2VVbmlxdWU8SW5z
cGVjdG9ySGlzdG9yeT4oKTsKKyAgICBtX2RvbUVkaXRvciA9IG1ha2VVbmlxdWU8RE9NRWRpdG9y
PigqbV9oaXN0b3J5KTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JE
T01BZ2VudCh0aGlzKTsKICAgICBtX2RvY3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFt
ZSgpLmRvY3VtZW50KCk7CkBAIC02NTMsNyArNjUzLDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50
OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgIE5vZGUq
IHBhcmVudCA9IGlubmVyUGFyZW50Tm9kZShub2RlKTsKICAgICAgICAgaWYgKCFwYXJlbnQpIHsK
ICAgICAgICAgICAgIC8vIE5vZGUgYmVpbmcgcHVzaGVkIGlzIGRldGFjaGVkIC0+IHB1c2ggc3Vi
dHJlZSByb290LgotICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPE5v
ZGVUb0lkTWFwPigpOworICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBtYWtlVW5pcXVlPE5vZGVU
b0lkTWFwPigpOwogICAgICAgICAgICAgZGFuZ2xpbmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAgICAg
ICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsK
ICAgICAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENv
bmZpZ0Zyb21JbnNwZWN0b3IKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
YXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4o
KTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmln
PigpOwogICAgIGJvb2wgc2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDogZmFsc2UgKGRvIG5v
dCBzaG93IGEgdG9vbHRpcCkuCiAgICAgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LT5nZXRCb29s
ZWFuKCJzaG93SW5mbyIsIHNob3dJbmZvKTsKICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZv
ID0gc2hvd0luZm87CkBAIC0xMTk2LDEzICsxMTk2LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wg
ZW5hCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcm
LCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgSlNPTjo6T2JqZWN0
KiBjb2xvciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVz
ZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZs
b2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICBhdXRvIHF1YWQg
PSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
ICAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGTW92ZShxdWFkKSwgY29sb3IsIG91dGxpbmVDb2xv
ciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OkFycmF5JiBx
dWFkQXJyYXksIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCog
b3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0
byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCk7CisgICAgYXV0byBxdWFkID0g
bWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KCk7CiAgICAgaWYgKCFwYXJzZVF1YWQocXVhZEFycmF5LCBx
dWFkLmdldCgpKSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIFF1YWQgZm9ybWF0
Il9zOwogICAgICAgICByZXR1cm47CkBAIC0xMjEyLDcgKzEyMTIsNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
SlNPTjo6QXJyYQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1YWQo
c3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xv
ciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VD
b29yZGluYXRlcykKIHsKLSAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlx
dWU8SGlnaGxpZ2h0Q29uZmlnPigpOworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVu
aXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0g
cGFyc2VDb2xvcihjb2xvcik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9
IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPnVzZVBhZ2VD
b29yZGluYXRlcyA9IHVzZVBhZ2VDb29yZGluYXRlcyA/ICp1c2VQYWdlQ29vcmRpbmF0ZXMgOiBm
YWxzZTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hs
aWdodEZyYW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAgICAg
YXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4o
KTsKKyAgICAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENv
bmZpZz4oKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHRydWU7IC8vIEFs
d2F5cyBzaG93IHRvb2x0aXBzIGZvciBmcmFtZXMuCiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+
Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwpAQCAtMTM5OCw3ICsxMzk4
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdGVkTm9kZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAgbV9pbnNwZWN0ZWROb2RlID0gbm9kZTsK
IAogICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBzdGF0aWNfY2FzdDxXZWJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXImPihtX2luamVjdGVkU2NyaXB0TWFuYWdlcikuY29tbWFuZExpbmVB
UElIb3N0KCkpCi0gICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CisgICAgICAgIGNvbW1h
bmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KG1ha2VVbmlxdWU8SW5zcGVjdGFibGVO
b2RlPihub2RlKSk7CiAKICAgICBtX3N1cHByZXNzRXZlbnRMaXN0ZW5lckNoYW5nZWRFdmVudCA9
IGZhbHNlOwogfQpAQCAtMjMxNCw3ICsyMzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIW1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2spCi0gICAgICAgIG1fcmV2YWxp
ZGF0ZVN0eWxlQXR0clRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJp
YnV0ZVRhc2s+KHRoaXMpOworICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gbWFr
ZVVuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKICAgICBtX3JldmFs
aWRhdGVTdHlsZUF0dHJUYXNrLT5zY2hlZHVsZUZvcigmZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcAppbmRleCBlOTcxYTk5ZjcwNTI0ZDgzMTgxYWU3MTVkODI2NTg4MTFmZTA4
ODA4Li44MWYxNGRjMTdiZmEwNDc0N2UzZDIzZTQ1M2Y1ZTRhZjhkMDlmZDgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRP
TVN0b3JhZ2UiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVl
PEluc3BlY3Rvcjo6RE9NU3RvcmFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NU3RvcmFn
ZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhp
cykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAKaW5kZXggYjM3YTU2MGNlODA3NjhjNjY0NDA4NTE1ZmIwNTUxMjYxNjVi
ZWQ4Mi4uMzU4YTg1NjUxMmVhNGQ3MTk2MzMyYTIwNjk5MGRlMzI1MDA0MTBiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OjpkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiBJbnNwZWN0b3JEYXRh
YmFzZUFnZW50OjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGF0YWJhc2UiX3MsIGNvbnRleHQpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6RGF0YWJh
c2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9m
cm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3Bh
dGNoZXIoSW5zcGVjdG9yOjpEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmlu
ZGV4IGUxZTA4MmU0MWFkMmQ1MjRmNTdlZjEwNjQwMjg4NzYxMTU2ODI0YjkuLmI1OTgyY2VlMzdl
Mzc0NDcwNTM5NDZiY2Y0YzQzNGI0MzFlZjlhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBA
IC00OCw3ICs0OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudChXZWJBZ2VudENvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkxheWVyVHJlZSJfcywgY29udGV4dCkK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpM
YXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkxheWVyVHJlZUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TGF5ZXJUcmVlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
aW5kZXggMjljNzZkMGM3ZmVhOTIyYzJhM2Q5OTQxNGM5ODZlYThkMjhkNzdiNS4uMjgzMjk1MWY1
MzgwMTIxZmE0NTJiZmE4ZDQ3MGY0ZDM1ZTc4OWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogSW5zcGVjdG9yTWVtb3J5
QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIk1lbW9yeSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpNZW1vcnlGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6Ok1lbW9yeUZyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3Bl
Y3Rvcjo6TWVtb3J5QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCAzZTRlOTZlYjIzMWEw
NTRiMjEyMTI0N2JjMmNiMDkxNjVmMDI2NWIzLi41ZDA4MTYzODBjZGM2NmM3ZDc5NjBjMTJkMzQ4
YTBmYmYzZjdiMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xNzIsMTAgKzE3MiwxMCBAQCBj
bGFzcyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQgewogCiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIk5ldHdvcmsiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6TmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6TmV0d29ya0Jh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFu
YWdlcikKLSAgICAsIG1fcmVzb3VyY2VzRGF0YShzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSZXNv
dXJjZXNEYXRhPigpKQorICAgICwgbV9yZXNvdXJjZXNEYXRhKG1ha2VVbmlxdWU8TmV0d29ya1Jl
c291cmNlc0RhdGE+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzMjllMWIwYzVhZDkyZmI0
NTFkZjE3NjczM2FlMmFlMzU4ZmI0OTM3Li5jNjQxYTZhMDQ4NDE5MzI2OGUyOWU5MGZmMDEyNmFi
OTExYzkzMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgRG9jdW1lbnRMb2Fk
ZXIqIEluc3BlY3RvclBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW4KIAogSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQoUGFn
ZUFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3Rv
ck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlBhZ2UiX3MsIGNv
bnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3Rvcjo6UGFnZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UGFnZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4
dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4
dC5pbnNwZWN0ZWRQYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAKaW5kZXggM2EzNjFlOTFlNmYyZGViMDA0MmUxOGE3YzY0YzdiNTE2ZjliODBjNS4uMzBkODZj
NzQ2M2M0N2Y1YjNhZDJiMzhjZjVkZTI0OWQ0NGViOWE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBDRlJ1bkxvb3BSZWYgY3VycmVudFJ1bkxvb3AoKQog
CiBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KFBhZ2VBZ2Vu
dENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlRpbWVsaW5lIl9z
LCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OlRpbWVsaW5lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpU
aW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNw
ZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhD
YWxsU3RhY2tEZXB0aCkKICAgICAvLyBGSVhNRTogQWJzdHJhY3QgYXdheSBwbGF0Zm9ybS1zcGVj
aWZpYyBjb2RlIG9uY2UgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
Mjc0OCBpcyBmaXhlZC4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fZnJhbWVTdGFydE9i
c2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENG
SW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9y
RnJhbWVCZWdpbiksIFt0aGlzXSgpIHsKKyAgICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9IG1ha2VV
bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2
ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lQmVnaW4pLCBbdGhpc10o
KSB7CiAgICAgICAgIGlmICghbV90cmFja2luZyB8fCBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVn
U2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjAyLDcgKzIw
Miw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBp
bnQqIG1heENhbGxTdGFja0RlcHRoKQogICAgICAgICBtX3J1bkxvb3BOZXN0aW5nTGV2ZWwrKzsK
ICAgICB9KTsKIAotICAgIG1fZnJhbWVTdG9wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxs
S25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUVuZCksIFt0aGlzXSgpIHsKKyAgICBt
X2ZyYW1lU3RvcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19j
YXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5z
cGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7CiAgICAgICAgIGlmICghbV90cmFja2luZyB8fCBt
X2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuaXNQYXVzZWQoKSkKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nCiAg
ICAgICAgICAgICAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gbV9pbnN0
cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/
CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8g
IlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUg
XCIiLCB0aXRsZSwgIlwiIGFscmVhZHkgZXhpc3RzIik7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0b3BGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYgdGl0bAogICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgewogICAgICAgICAvLyBG
SVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAg
ICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlz
dCJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0
Iik7Ci0gICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdl
VHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CisgICAg
ICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVu
ZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdl
bnQuY3BwCmluZGV4IDkxNjFkODQzY2QzOGU0ZDk2NjEyNmFjZGQzNmU4M2RkMThmNTEwMDIuLjFl
Mzk4ZWRkMWE5ZWEzZWYyNmJlMDllYzAzZDZjNmMyY2QzOThkZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3Bw
CkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3Rv
cldvcmtlckFnZW50OjpJbnNwZWN0b3JXb3JrZXJBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJXb3JrZXIiX3MsIGNvbnRleHQpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6V29ya2Vy
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpXb3JrZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hl
cihJbnNwZWN0b3I6OldvcmtlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX3BhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdl
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25z
b2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xl
QWdlbnQuY3BwCmluZGV4IDJlZWQxY2U2MGIzMDIyYWQ5ODI0ZmE2MjhhMzVkZGM1NDQ0OTYwZDku
LmMyMDk0Yjk5MmQzNTQxNjBmMTdlZTI4ZjY0MTBhNzkzZGNkZTlmMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTcy
LDcgKzcyLDcgQEAgdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdAogCiAgICAgaWYgKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkgPj0gNDAwKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0
cmluZygiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGgg
YSBzdGF0dXMgb2YgIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgIiAoIiwgcmVzcG9uc2Uu
aHR0cFN0YXR1c1RleHQoKSwgJyknKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6
Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNz
YWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCByZXNwb25zZS51cmwo
KS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICAgICAg
YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291
cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNz
YWdlLCByZXNwb25zZS51cmwoKS5zdHJpbmcoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50
aWZpZXIpKTsKICAgICB9CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJDb25zb2xlQWdl
bnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0
IFJlc28KICAgICAgICAgbWVzc2FnZS5hcHBlbmQoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24o
KSk7CiAgICAgfQogCi0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwo
KSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKKyAgICBhZGRNZXNzYWdlVG9D
b25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmss
IE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1lc3NhZ2UudG9TdHJpbmco
KSwgZXJyb3IuZmFpbGluZ1VSTCgpLCAwLCAwLCBudWxscHRyLCByZXF1ZXN0SWRlbnRpZmllcikp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKaW5kZXggY2FmZWFiOTVlYWZjMWFiZTI0NGFl
MTVkNzZiOTY2ZTAwNWU5MzE5Ny4uODY1YmJkMDdiNmYwOThjYTdlNjY1MGQ4YWZlZmJjZjZlZjA1
MTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFw
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFn
ZW50LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50
c1Rhc2s6OnRpbWVyRmlyZWQoKQogV2ViSGVhcEFnZW50OjpXZWJIZWFwQWdlbnQoV2ViQWdlbnRD
b250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9ySGVhcEFnZW50KGNvbnRleHQpCiAgICAg
LCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQotICAg
ICwgbV9zZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrKHN0ZDo6bWFrZV91bmlxdWU8U2Vu
ZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzaz4oKnRoaXMpKQorICAgICwgbV9zZW5kR2FyYmFn
ZUNvbGxlY3Rpb25FdmVudHNUYXNrKG1ha2VVbmlxdWU8U2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZl
bnRzVGFzaz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNWVhZmI2YTMy
ODQ2ZTcwMDE1M2FjODI2ODFiN2JlNTBkM2FmZTQ4Yy4uODk4NWJjOTQ1ZmU3NWUwZTg1MWEzNmRl
MzU4NGFiMDQ3MWMwZmRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBQYWdlUnVudGltZUFnZW50OjpQYWdlUnVudGlt
ZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JSdW50aW1l
QWdlbnQoY29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAg
ICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpSdW50aW1lQmFja2VuZERpc3BhdGNo
ZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5z
dHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX2lu
c3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCBiMjBjYmJjOTUwNzAyODExYjY1ODlhYzFkZmJkNTczMzkxOTNkMzM3Li44MDgy
ZWUzMWVlYzYwYTJmNjAzMjlkYmFiZDRkOTg0MmY2YTU1ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtNTAsNyArNTAsNyBAQCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2Vy
RGVidWdnZXJBZ2VudCgpID0gZGVmYXVsdDsKIAogdm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojpi
cmVha3BvaW50QWN0aW9uTG9nKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKLSAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6
TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZz
dGF0ZSkpKTsKKyAgICBtX3dvcmtlckdsb2JhbFNjb3BlLmFkZENvbnNvbGVNZXNzYWdlKG1ha2VV
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9n
LCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0
ZSkpKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHQgV29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRT
Y3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgaW50KiBleGVjdXRp
b25Db250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3Rh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAppbmRleCBiZDlk
NGNhZGVmYjJmYWExZjJlMGIyNTc5NTVhZDUxMjRlMTc5NGVlLi4xZjNmYWJhMzEyNmYyZTliMzZi
ODRkMTNlNzNiZjFmZGEzMTc1NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5j
cHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBMYXlvdXRTdGF0ZTo6bGF5b3V0Rm9ybWF0dGluZ0Nv
bnRleHRTdWJ0cmVlKGNvbnN0IEJveCYgbGF5b3V0Um9vdCkKIERpc3BsYXk6OkJveCYgTGF5b3V0
U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0
CiB7CiAgICAgcmV0dXJuICptX2xheW91dFRvRGlzcGxheUJveC5lbnN1cmUoJmxheW91dEJveCwg
WyZsYXlvdXRCb3hdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6
Qm94PihsYXlvdXRCb3guc3R5bGUoKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3Bs
YXk6OkJveD4obGF5b3V0Qm94LnN0eWxlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0K
IApAQCAtMTQwLDEzICsxNDAsMTMgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3Jl
YXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAg
ICAgIC8vIHNob3VsZCBub3QgaW50ZXJmZXJlIHdpdGggdGhlIGNvbnRlbnQgaW5zaWRlLgogICAg
ICAgICAgICAgLy8gPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQiPjwvZGl2PjxkaXYgc3R5bGU9Im92
ZXJmbG93OiBoaWRkZW4iPiA8LSBpcyBhIG5vbi1pbnRydXNpdmUgZmxvYXQsIGJlY2F1c2Ugb3Zl
cmZsb3c6IGhpZGRlbiB0cmlnZ2VycyBuZXcgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LjwvZGl2
PgogICAgICAgICAgICAgaWYgKGZvcm1hdHRpbmdSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0
aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxp
bmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGlu
Z1Jvb3QpLCAqdGhpcyk7CiAKICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRp
bmcgY29udGV4dCBpbmhlcml0cyB0aGUgZmxvYXRzIGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5n
IGNvbnRleHQuCiAgICAgICAgICAgICAvLyBGaW5kIHRoZSBmb3JtYXR0aW5nIHN0YXRlIGluIHdo
aWNoIHRoaXMgZm9ybWF0dGluZyByb290IGxpdmVzLCBub3QgdGhlIG9uZSBpdCBjcmVhdGVzIGFu
ZCB1c2UgaXRzIGZsb2F0aW5nIHN0YXRlLgogICAgICAgICAgICAgYXV0byYgcGFyZW50Rm9ybWF0
dGluZ1N0YXRlID0gY3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRl
ZChmb3JtYXR0aW5nUm9vdC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7IAogICAgICAgICAgICAg
YXV0byYgcGFyZW50RmxvYXRpbmdTdGF0ZSA9IHBhcmVudEZvcm1hdHRpbmdTdGF0ZS5mbG9hdGlu
Z1N0YXRlKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50RmxvYXRpbmdTdGF0
ZSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNTQs
NyArMTU0LDcgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGlu
Z1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgcmV0dXJuICptX2Zv
cm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwgWyZdIHsKIAogICAgICAgICAg
ICAgLy8gQmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBm
bG9hdGluZyBzdGF0ZS4KLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJsb2Nr
Rm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdS
b290KSwgKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0
aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAq
dGhpcyk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKQEAgLTE2Miw3ICsx
NjIsNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3Rh
dGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbgogICAgICAgICByZXR1cm4gKm1fZm9ybWF0
dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdSb290LCBbJl0gewogCiAgICAgICAgICAgICAv
LyBUYWJsZSBmb3JtYXR0aW5nIGNvbnRleHQgYWx3YXlzIGVzdGFibGlzaGVzIGEgbmV3IGZsb2F0
aW5nIHN0YXRlIC1hbmQgaXQgc3RheXMgZW1wdHkuCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0
aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFRhYmxlRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZv
cm1hdHRpbmdSb290KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
fQogCkBAIC0xNzQsMTggKzE3NCwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybWF0dGluZ0NvbnRl
eHQ+IExheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBCbwogICAgIEFT
U0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgp
KTsKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQoKSkgewogICAgICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBk
b3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZv
cm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIGlubGluZUZvcm1hdHRpbmdTdGF0ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPElubGluZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGlu
bGluZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0
Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBBU1NF
UlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4
dE9ubHkoKSk7CiAgICAgICAgIGF1dG8mIGJsb2NrRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8
QmxvY2tGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdS
b290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KGZvcm1hdHRpbmdDb250ZXh0Um9v
dCwgYmxvY2tGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGlu
Z1N0YXRlKTsKICAgICB9CiAKICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlz
aGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGF1dG8mIHRhYmxlRm9ybWF0
dGluZ1N0YXRlID0gZG93bmNhc3Q8VGFibGVGb3JtYXR0aW5nU3RhdGU+KGNyZWF0ZUZvcm1hdHRp
bmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ+
KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgdGFibGVGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4
dFJvb3QsIHRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKICAgICB9CiAKICAgICBDUkFTSCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGExY2Q2ZDZmMWI3ZWI5MGZjYzc5
MDVlMzFlOWYwNGZlM2JmODI2MGIuLjUwOGQ2NjEyOWQxNDg3YzRlODQ0MDkzOTNkYTMzNDA5MTll
YTdmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTI4MSw3ICsy
ODEsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVu
dCgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoIXRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0
Qm94KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IHN0YXJ0IG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4gPHNwYW4+KS4KLSAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lSXRl
bT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCkpOworICAgICAg
ICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVt
PihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0YXJ0KSk7CiAgICAgICAg
ICAgICBhdXRvJiBjb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CiAg
ICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTI5MiwxNyArMjkyLDE3IEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50KCkgY29uc3QKICAgICAgICAgICAg
IGF1dG8mIGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFzdCgpOwogICAgICAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgZW5kIG9mIGFuIGlubGluZSBjb250YWluZXIgKGUuZy4gPC9zcGFuPiku
CiAgICAgICAgICAgICBpZiAodHJlYXRBc0lubGluZUNvbnRhaW5lcihsYXlvdXRCb3gpKQotICAg
ICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHN0ZDo6bWFrZV91bmlx
dWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJFbmQp
KTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5p
cXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5k
KSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSkKLSAg
ICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5p
cXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVh
aykpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VV
bmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJy
ZWFrKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9u
ZWQoKSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6
Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Rmxv
YXQpKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtl
VW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQpKTsK
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNJ
bmxpbmVMZXZlbEJveCgpKTsKICAgICAgICAgICAgICAgICBpZiAobGF5b3V0Qm94Lmhhc1RleHRD
b250ZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRB
cHBlbmRUZXh0SXRlbXMoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0ZW1zKCksIGxheW91dEJveCk7
CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwg
SW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdT
dGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxp
bmVJdGVtOjpUeXBlOjpCb3gpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1
dG8qIG5leHRTaWJsaW5nID0gbGF5b3V0Qm94Lm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNw
cAppbmRleCBmNzQxZGU0ODllOTQyNDYxZDc2OTJlMmU0MDQxNTkzODNiMGM4MTYwLi4wYTIxMzAy
MTNmMTI0ZWViNWY3ZjcxMTJlODg2ZDcxMmM1MzFkYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExpbmVM
YXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlS
dW5zKGNvbnN0IExpbmU6OkNvbnRlbgogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0
KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRl
bnRCb3hXaWR0aChsb2dpY2FsUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgIGRpc3BsYXlCb3gu
c2V0Q29udGVudEJveEhlaWdodChsb2dpY2FsUmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheTo6UnVu
Pihsb2dpY2FsUmVjdCkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1
bihtYWtlVW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zKGNvbnN0IExpbmU6
OkNvbnRlbgogICAgICAgICAgICAgICAgIHRvcExlZnQgKz0gR2VvbWV0cnk6OmluRmxvd1Bvc2l0
aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRTdGF0ZSgpLCBsYXlvdXRCb3gpOwogICAgICAgICAg
ICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KHRvcExlZnQpOwogICAgICAgICAgICAgbGluZUJveFJl
Y3QuZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxSZWN0LndpZHRoKCkpOwotICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1
bj4obG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVS
dW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5l
OjpDb250ZW4KICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNSdW5DYW5CZUV4dGVuZGVkID0gcHJl
dmlvdXNMaW5lUnVuICYmIHByZXZpb3VzTGluZVJ1bi0+dGV4dENvbnRleHQoKSA/IHByZXZpb3Vz
TGluZVJ1bi0+dGV4dENvbnRleHQoKS0+Y2FuQmVFeHRlbmRlZCA6IGZhbHNlOwogICAgICAgICAg
ICAgYXV0byByZXF1aXJlc05ld1J1biA9ICFpbmRleCB8fCAhcHJldmlvdXNSdW5DYW5CZUV4dGVu
ZGVkIHx8ICZsYXlvdXRCb3ggIT0gJnByZXZpb3VzTGluZVJ1bi0+bGF5b3V0Qm94KCk7CiAgICAg
ICAgICAgICBpZiAocmVxdWlyZXNOZXdSdW4pCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJl
Y3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyB0ZXh0Q29udGV4dC0+c3RhcnQsIHRleHRD
b250ZXh0LT5sZW5ndGggfSkpOworICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJ
bmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpS
dW46OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29udGV4dC0+bGVuZ3Ro
IH0pKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGF1dG8mIGxhc3REaXNw
bGF5UnVuID0gZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5sYXN0KCk7CiAgICAgICAgICAg
ICAgICAgbGFzdERpc3BsYXlSdW4tPmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVjdC53aWR0
aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZS5jcHAKaW5kZXggNGYyMGE2ZmYxZDcwY2UzNDliZGUwZWJlZGZlOGY4MGEzNWU4
NWEyOC4uZWQ2NTIwNWI3ZGI5OWIwZjZhYjEwZjNlZWVhYTA3YzQ0NmI3ZjhkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgTGluZTo6Q29udGVudDo6UnVuOjpSdW4oY29uc3QgSW5saW5l
SXRlbSYgaW5saW5lSXRlbSwgY29uc3QgVGV4dENvbnRleHQmIHRleHRDb24KIAogTGluZTo6TGlu
ZShjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEluaXRpYWxDb25zdHJhaW50
cyYgaW5pdGlhbENvbnN0cmFpbnRzLCBTa2lwVmVydGljYWxBbGlnbWVudCBza2lwVmVydGljYWxB
bGlnbWVudCkKICAgICA6IG1fbGF5b3V0U3RhdGUobGF5b3V0U3RhdGUpCi0gICAgLCBtX2NvbnRl
bnQoc3RkOjptYWtlX3VuaXF1ZTxMaW5lOjpDb250ZW50PigpKQorICAgICwgbV9jb250ZW50KG1h
a2VVbmlxdWU8TGluZTo6Q29udGVudD4oKSkKICAgICAsIG1fbG9naWNhbFRvcExlZnQoaW5pdGlh
bENvbnN0cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0KQogICAgICwgbV9iYXNlbGluZSh7IGluaXRpYWxD
b25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5iYXNlbGluZU9mZnNldCwgaW5pdGlhbENvbnN0
cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLmhlaWdodCAtIGluaXRpYWxDb25zdHJhaW50cy5oZWln
aHRBbmRCYXNlbGluZS5iYXNlbGluZU9mZnNldCB9KQogICAgICwgbV9pbml0aWFsU3RydXQoaW5p
dGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLnN0cnV0KQpAQCAtMjEzLDcgKzIxMyw3
IEBAIHZvaWQgTGluZTo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91
dFVuaXQgbG9naWNhbFdpZHRoKQogCiB2b2lkIExpbmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNl
KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IERpc3BsYXk6OlJlY3QmIGxvZ2lj
YWxSZWN0KQogewotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQt
PnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2lj
YWxSZWN0KSk7CiAgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IGxvZ2ljYWxSZWN0LndpZHRo
KCk7CiB9CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50
KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYQogICAg
IH0KIAogICAgIGF1dG8gdGV4dENvbnRleHQgPSBDb250ZW50OjpSdW46OlRleHRDb250ZXh0IHsg
aW5saW5lSXRlbS5zdGFydCgpLCBpbmxpbmVJdGVtLmlzQ29sbGFwc2VkKCkgPyAxIDogaW5saW5l
SXRlbS5sZW5ndGgoKSwgaXNDb21wbGV0ZWx5Q29sbGFwc2VkLCBpbmxpbmVJdGVtLmlzV2hpdGVz
cGFjZSgpLCBjYW5CZUV4dGVuZGVkIH07Ci0gICAgYXV0byBsaW5lSXRlbSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCB0ZXh0Q29udGV4dCwgbG9naWNhbFJlY3Qp
OworICAgIGF1dG8gbGluZUl0ZW0gPSBtYWtlVW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRl
bSwgdGV4dENvbnRleHQsIGxvZ2ljYWxSZWN0KTsKICAgICBpZiAoaXNUcmltbWFibGUgJiYgIWlz
Q29tcGxldGVseUNvbGxhcHNlZCkKICAgICAgICAgbV90cmltbWFibGVDb250ZW50LmFkZChsaW5l
SXRlbS5nZXQoKSk7CiAKQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZE5vblJl
cGxhY2VkSW5saW5lQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQg
bAogICAgICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQoaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQo
aW5saW5lSXRlbSkpOwogICAgIH0KIAotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAg
ICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGlu
ZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CiAgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IChsb2dp
Y2FsV2lkdGggKyBob3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgaG9yaXpvbnRhbE1hcmdpbi5lbmQp
OwogICAgIG1fdHJpbW1hYmxlQ29udGVudC5jbGVhcigpOwogfQpAQCAtMzIzLDcgKzMyMyw3IEBA
IHZvaWQgTGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayhjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJ
dGVtKQogICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSwgeyB9
KTsKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSk7CiAgICAg
fQotICAgIG1fY29udGVudC0+cnVucygpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6
OlJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpKTsKKyAgICBtX2NvbnRlbnQtPnJ1bnMoKS5h
cHBlbmQobWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7
CiB9CiAKIHZvaWQgTGluZTo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgcnVuSGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3Bw
CmluZGV4IGYxMzA4OWE3MDhmM2ZlM2ZmOWI3N2Y3MjA5NmNkYTQyZWYzNmUyMjIuLjVlNmMyNTZk
YjBiMzA5YWFmMWUyNTgyMWYwZTFlMThlNTY0NTJmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKQEAg
LTg5LDcgKzg5LDcgQEAgdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0
ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdAogewogICAgIGF1dG8gdGV4dCA9
IGlubGluZUJveC50ZXh0Q29udGVudCgpOwogICAgIGlmICghdGV4dC5sZW5ndGgoKSkKLSAgICAg
ICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4
dEl0ZW0+KGlubGluZUJveCwgMCwgMCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIHJldHVybiBp
bmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gs
IDAsIDAsIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVCb3guc3R5
bGUoKTsKICAgICBhdXRvIHByZXNlcnZlTmV3bGluZSA9IHN0eWxlLnByZXNlcnZlTmV3bGluZSgp
OwpAQCAtOTksMjAgKzk5LDIwIEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVu
ZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QKICAgICB3aGlsZSAo
Y3VycmVudFBvc2l0aW9uIDwgdGV4dC5sZW5ndGgoKSkgewogICAgICAgICAvLyBTb2Z0IGxpbmVi
cmVhaz8KICAgICAgICAgaWYgKGlzU29mdExpbmVCcmVhayh0ZXh0W2N1cnJlbnRQb3NpdGlvbl0s
IHByZXNlcnZlTmV3bGluZSkpIHsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9u
LCAxLCB0cnVlLCBmYWxzZSkpOworICAgICAgICAgICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFr
ZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24sIDEsIHRy
dWUsIGZhbHNlKSk7CiAgICAgICAgICAgICArK2N1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc1doaXRlc3BhY2VDaGFyYWN0ZXIo
dGV4dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7CiAgICAgICAgICAgICBh
dXRvIGxlbmd0aCA9IG1vdmVUb05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odGV4dCwgY3VycmVu
dFBvc2l0aW9uLCBwcmVzZXJ2ZU5ld2xpbmUpOwogICAgICAgICAgICAgYXV0byBpc0NvbGxhcHNl
ZCA9IGNvbGxhcHNlV2hpdGVTcGFjZSAmJiBsZW5ndGggPiAxOwotICAgICAgICAgICAgaW5saW5l
Q29udGVudC5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94
LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgdHJ1ZSwgaXNDb2xsYXBzZWQpKTsKKyAgICAgICAg
ICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGlu
ZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFwc2VkKSk7CiAgICAg
ICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gbGVuZ3RoOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGxlbmd0aCA9IG1vdmVUb05leHRCcmVha2FibGVQ
b3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVCcmVha0l0ZXJhdG9yLCBzdHlsZSk7Ci0gICAg
ICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+
KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIGZhbHNlLCBmYWxzZSkpOworICAg
ICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxp
bmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAg
Y3VycmVudFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICB9CiB9CkBAIC0xMzAsNyArMTMwLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRJdGVtPiBJbmxpbmVUZXh0SXRlbTo6c3BsaXQodW5z
aWduZWQgc3BsaXRQb3NpdGlvbiwgdW4KIHsKICAgICBSRUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0
aW9uID49IHRoaXMtPnN0YXJ0KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHNwbGl0UG9zaXRpb24g
KyBsZW5ndGggPD0gZW5kKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRl
eHRJdGVtPihsYXlvdXRCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1doaXRlc3BhY2Uo
KSwgaXNDb2xsYXBzZWQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+
KGxheW91dEJveCgpLCBzcGxpdFBvc2l0aW9uLCBsZW5ndGgsIGlzV2hpdGVzcGFjZSgpLCBpc0Nv
bGxhcHNlZCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveC5jcHAKaW5kZXggODA4NGUyYmI2OWU4YzkyYWFhOWI3YmU2ZDhhMTRiNzc5NTI5
MTIwMy4uM2JhZjllYWExZmJhOTJjNzBmNGM2YzczMjk1YjEzOGIzMWJjNWI5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCkBAIC00NSw3ICs0
NSw3IEBAIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBCYXNlVHlwZUZsCiAgICAgLCBtX2hhc1JhcmVEYXRhKGZhbHNl
KQogewogICAgIGlmIChpc1JlcGxhY2VkKCkpCi0gICAgICAgIGVuc3VyZVJhcmVEYXRhKCkucmVw
bGFjZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CisgICAgICAgIGVuc3Vy
ZVJhcmVEYXRhKCkucmVwbGFjZWQgPSBtYWtlVW5pcXVlPFJlcGxhY2VkPigqdGhpcyk7CiB9CiAK
IEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGNvbnN0IEJveDo6Qm94UmFyZURhdGEm
IEJveDo6cmFyZURhdGEoKSBjb25zdAogQm94OjpCb3hSYXJlRGF0YSYgQm94OjplbnN1cmVSYXJl
RGF0YSgpCiB7CiAgICAgc2V0SGFzUmFyZURhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpyYXJlRGF0
YU1hcCgpLmVuc3VyZSh0aGlzLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveFJhcmVE
YXRhPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpyYXJlRGF0YU1hcCgpLmVu
c3VyZSh0aGlzLCBbXSB7IHJldHVybiBtYWtlVW5pcXVlPEJveFJhcmVEYXRhPigpOyB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKIHZvaWQgQm94OjpyZW1vdmVSYXJlRGF0YSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAK
aW5kZXggYWIyODRlYTA5OWI4ZmEzZmZhNzI3NGUwNmU0Y2VjY2FmODQ3NDMwNy4uZjJhZmNhYmQw
YTM4MWM2ZDVjOGRhMzlkMzQ2ZTFhZWEzM2Q0N2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtMTMwLDI1
ICsxMzAsMjUgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gVHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91
dEJveChjb25zdCBSZW5kZXJFbGVtZW50JiBwYXJlbnRSZW4KICAgICBpZiAoaXM8UmVuZGVyVGV4
dD4oY2hpbGRSZW5kZXJlcikpIHsKICAgICAgICAgLy8gRklYTUU6IENsZWFybHkgdGhlcmUgbXVz
dCBiZSBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhpcy4KICAgICAgICAgaWYgKHBhcmVudFJlbmRl
cmVyLnN0eWxlKCkuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJU
ZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBh
cmVudFJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFr
ZVVuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFs
VGV4dCgpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8
Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwg
UmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVuZGVy
ZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkpOworICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJl
cikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhE
aXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKICAg
ICAgICAgcmV0dXJuIGNoaWxkTGF5b3V0Qm94OwogICAgIH0KIAogICAgIGF1dG8mIHJlbmRlcmVy
ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGRSZW5kZXJlcik7CiAgICAgYXV0byBkaXNw
bGF5VHlwZSA9IHJlbmRlcmVyLnN0eWxlKCkuZGlzcGxheSgpOwogICAgIGlmIChpczxSZW5kZXJM
aW5lQnJlYWs+KHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qm94
PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJl
ci5zdHlsZSgpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJp
YnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwog
CiAgICAgaWYgKGlzPFJlbmRlclRhYmxlPihyZW5kZXJlcikpIHsKICAgICAgICAgLy8gQ29uc3Ry
dWN0IHRoZSBwcmluY2lwYWwgdGFibGUgd3JhcHBlciBib3ggKGFuZCBub3QgdGhlIHRhYmxlIGJv
eCBpdHNlbGYpLgotICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVX
cmFwcGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0
dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZVdyYXBwZXJCb3ggfSwgUmVuZGVyU3R5
bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclJl
cGxhY2VkPihyZW5kZXJlcikpIHsKICAgICAgICAgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlU
eXBlOjpCbG9jaykKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJl
bmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1
ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJl
bmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICAvLyBGSVhNRTog
V2UgZG9uJ3QgeWV0IHN1cHBvcnQgYWxsIHJlcGxhY2VkIGVsZW1lbnRzIGFuZCB0aGlzIGlzIHRl
bXBvcmFyeSBhbnl3YXkuCiAgICAgICAgIGlmIChjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKSkK
ICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94LT5yZXBsYWNlZCgpLT5zZXRJbnRyaW5zaWNTaXpl
KGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihyZW5kZXJlcikuaW50cmluc2ljU2l6ZSgpKTsKQEAg
LTE2MywxOCArMTYzLDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVh
dGVMYXlvdXRCb3goY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAgICAgICAgICAg
ICAgYXV0byBzdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsK
ICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0VG9wKHsgb2Zmc2V0LT5oZWlnaHQoKSwgRml4ZWQg
fSk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldExlZnQoeyBvZmZzZXQtPndpZHRoKCksIEZp
eGVkIH0pOwotICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgV1RGTW92ZSgqc3R5bGUp
KTsKKyAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVy
PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7CiAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxl
OjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRC
b3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBS
ZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgaWYg
KGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxpbmUpCi0gICAgICAgICAgICBjaGlsZExh
eW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhy
ZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAg
ICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmli
dXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpJbmxpbmVCbG9jaykK
LSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+
KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVy
LnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250
YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJl
bmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZSBpZiAoZGlzcGxheVR5cGUgPT0gRGlzcGxh
eVR5cGU6OlRhYmxlQ2FwdGlvbiB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVD
ZWxsKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShy
ZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlx
dWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpj
bG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoZGlzcGxheVR5cGUg
PT0gRGlzcGxheVR5cGU6OlRhYmxlUm93R3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5
cGU6OlRhYmxlSGVhZGVyR3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxl
Rm9vdGVyR3JvdXAKICAgICAgICAgICAgIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpU
YWJsZVJvdyB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW5Hcm91cCB8
fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVDb2x1bW4pIHsKLSAgICAgICAgICAg
IGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRy
aWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsK
KyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1l
bnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxl
KCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5U
RURfWUVUKCk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZv
aWQgVHJlZUJ1aWxkZXI6OmNyZWF0ZVRhYmxlU3RydWN0dXJlKGNvbnN0IFJlbmRlclRhYmxlJiB0
YWJsZVJlbmRlcmVyLCBDb250YWluCiAgICAgICAgIHRhYmxlQ2hpbGQgPSB0YWJsZUNoaWxkLT5u
ZXh0U2libGluZygpOwogICAgIH0KIAotICAgIGF1dG8gdGFibGVCb3ggPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6
OlRhYmxlQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZSh0YWJsZVJlbmRlcmVyLnN0eWxlKCkpKTsK
KyAgICBhdXRvIHRhYmxlQm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0
dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJTdHlsZTo6Y2xv
bmUodGFibGVSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgYXBwZW5kQ2hpbGQodGFibGVXcmFwcGVy
Qm94LCAqdGFibGVCb3gpOwogICAgIHdoaWxlICh0YWJsZUNoaWxkKSB7CiAgICAgICAgIFRyZWVC
dWlsZGVyOjpjcmVhdGVTdWJUcmVlKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCp0YWJsZUNoaWxk
KSwgKnRhYmxlQm94KTsKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIHByaW50TGF5b3V0VHJlZUZv
ckxpdmVEb2N1bWVudHMoKQogICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBmaW5kIGEgd2F5IHRv
IG91dHB1dCBnZW9tZXRyeSB3aXRob3V0IGxheW91dCBjb250ZXh0LgogICAgICAgICBhdXRvJiBy
ZW5kZXJWaWV3ID0gKmRvY3VtZW50LT5yZW5kZXJWaWV3KCk7CiAgICAgICAgIGF1dG8gaW5pdGlh
bENvbnRhaW5pbmdCbG9jayA9IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRUcmVlKHJlbmRlclZp
ZXcpOwotICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxMYXlvdXQ6
OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CisgICAgICAgIGF1dG8gbGF5
b3V0U3RhdGUgPSBtYWtlVW5pcXVlPExheW91dDo6TGF5b3V0U3RhdGU+KCppbml0aWFsQ29udGFp
bmluZ0Jsb2NrKTsKICAgICAgICAgbGF5b3V0U3RhdGUtPnNldFF1aXJrc01vZGUocmVuZGVyVmll
dy5kb2N1bWVudCgpLmluTGltaXRlZFF1aXJrc01vZGUoKSA/IExheW91dFN0YXRlOjpRdWlya3NN
b2RlOjpMaW1pdGVkIDogKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSA/IExh
eW91dFN0YXRlOjpRdWlya3NNb2RlOjpZZXMgOiBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6Tm8p
KTsKICAgICAgICAgbGF5b3V0U3RhdGUtPnVwZGF0ZUxheW91dCgpOwogICAgICAgICBzaG93TGF5
b3V0VHJlZSgqaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgbGF5b3V0U3RhdGUuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuY3Bw
CmluZGV4IGM3YWUzZTU4MTBkNjAyZjY1ZWI3MDAyZmZlOWM1MmJmYzVjMDAwYTUuLmI0NWYwNWU1
NTkzOGU1NDY0ZmIyMjE5Yjg2NzJmZGUxZWI1YTY1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHAKQEAgLTc4LDEzICs3OCwx
MyBAQCB2b2lkIFRhYmxlR3JpZDo6YXBwZW5kQ2VsbChjb25zdCBCb3gmIHRhYmxlQ2VsbEJveCkK
ICAgICAgICAgICAgIGluaXRpYWxTbG90UG9zaXRpb24ubW92ZSgxLCAwKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICBhdXRvIGNlbGxJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxDZWxsSW5mbz4odGFi
bGVDZWxsQm94LCBpbml0aWFsU2xvdFBvc2l0aW9uLCBDZWxsU2l6ZSB7IHJvd1NwYW4sIGNvbHVt
blNwYW4gfSk7CisgICAgYXV0byBjZWxsSW5mbyA9IG1ha2VVbmlxdWU8Q2VsbEluZm8+KHRhYmxl
Q2VsbEJveCwgaW5pdGlhbFNsb3RQb3NpdGlvbiwgQ2VsbFNpemUgeyByb3dTcGFuLCBjb2x1bW5T
cGFuIH0pOwogICAgIC8vIFJvdyBhbmQgY29sdW1uIHNwYW5uZXJzIGNyZWF0ZSBhZGRpdGlvbmFs
IHNsb3RzLgogICAgIGZvciAoaW50IHJvdyA9IDE7IHJvdyA8PSByb3dTcGFuOyArK3Jvdykgewog
ICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAxOyBjb2x1bW4gPD0gY29sdW1uU3BhbjsgKytjb2x1
bW4pIHsKICAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBTbG90UG9zaXRpb24geyBpbml0aWFs
U2xvdFBvc2l0aW9uLngoKSArIHJvdyAtIDEsIGluaXRpYWxTbG90UG9zaXRpb24ueSgpICsgY29s
dW1uIC0gMSB9OwogICAgICAgICAgICAgQVNTRVJUKCFtX3Nsb3RNYXAuY29udGFpbnMocG9zaXRp
b24pKTsKLSAgICAgICAgICAgIG1fc2xvdE1hcC5hZGQocG9zaXRpb24sIHN0ZDo6bWFrZV91bmlx
dWU8U2xvdEluZm8+KCpjZWxsSW5mbykpOworICAgICAgICAgICAgbV9zbG90TWFwLmFkZChwb3Np
dGlvbiwgbWFrZVVuaXF1ZTxTbG90SW5mbz4oKmNlbGxJbmZvKSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgbV9jZWxsTGlzdC5hZGQoV1RGTW92ZShjZWxsSW5mbykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxZDc3ZTRhZjFkYmRkZjA0NWE5MmMxYzhhZDNi
OTllYWNlYjk3YjUuLmI0OThhMjI0YjE5MGM2Y2U4NDRlYjlkZDdlYjliN2ExMDVkNzZkYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZShEb2N1
bWVudExvYWRlciYgZG9jdW1lbnRMb2EKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVy
KTsKIH0KIAogQ29udGVudEZpbHRlcjo6Q29udGVudEZpbHRlcihDb250YWluZXImJiBjb250ZW50
RmlsdGVycywgRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBkMGQ1NGI5
N2VhZTcyMDQyNmY5NjFjOGRhZTg5NWUyMDM2OWNlZGNjLi5jNGNlNWY1NTIxNzBiM2NmYzhiODQx
YjU5YTUxMGZkNzVhYTgzZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgdmFsaWRh
dGVQcmVmbGlnaHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzCiAgICAgaWYgKCFwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9uc2Us
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzZWN1cml0eU9yaWdpbiwgZXJyb3JEZXNjcmlwdGlv
bikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogICAgIGlm
ICghcmVzdWx0LT5wYXJzZShyZXNwb25zZSkKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jv
c3NPcmlnaW5NZXRob2QocmVxdWVzdC5odHRwTWV0aG9kKCksIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBlcnJvckRlc2NyaXB0aW9uKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9zc09y
aWdpbkhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCksIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBlcnJvckRlc2NyaXB0aW9uKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKaW5kZXggZGUwOWU3MDM5OWNjNzQ3ZTg4NzM2OTc4MzcyNGU2ZGFhOWZjNzg4
Yi4uMDQ1NWNhZmM1OWZmN2I2ZWExZjlhMmNkMzkzMWE2OWU5ZjY5NDQ1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgRG9jdW1l
bnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3Vic3RpdHV0ZUQKICAgICAsIG1fb3JpZ2luYWxTdWJzdGl0dXRlRGF0YVdhc1ZhbGlk
KHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVs
aXZlcnlUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxp
dmVyeVRpbWVyRmlyZWQpCiAgICAgLCBtX2RhdGFMb2FkVGltZXIoKnRoaXMsICZEb2N1bWVudExv
YWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KQotICAgICwgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCisg
ICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0KG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhv
c3Q+KCp0aGlzKSkKIHsKIH0KIApAQCAtMTMzNiw3ICsxMzM2LDcgQEAgdWludDY0X3QgRG9jdW1l
bnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCkKICAgICBpZiAobWFuaWZlc3RVUkwu
aXNFbXB0eSgpIHx8ICFtYW5pZmVzdFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgYXV0byBtYW5pZmVzdExvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRpb25N
YW5pZmVzdExvYWRlcj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CisgICAg
YXV0byBtYW5pZmVzdExvYWRlciA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CiAgICAgYXV0byogcmF3TWFu
aWZlc3RMb2FkZXIgPSBtYW5pZmVzdExvYWRlci5nZXQoKTsKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBuZXh0Q2FsbGJhY2tJRCsrOwogICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuc2V0
KFdURk1vdmUobWFuaWZlc3RMb2FkZXIpLCBjYWxsYmFja0lEKTsKQEAgLTE0MjcsNyArMTQyNyw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYgYXJjaGl2
ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYg
YXJjaGl2ZSkKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAgICAg
ICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9hcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRBbGxSZXNvdXJjZXMoYXJjaGl2ZSk7CiB9CiAKQEAg
LTE0MzYsNyArMTQzNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNv
dXJjZXMoQXJjaGl2ZSYgYXJjaGl2ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVS
ZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIHJlc291cmNlKQogewogICAgIGlmICghbV9h
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7Cisg
ICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbj4oKTsKICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24tPmFk
ZFJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKIH0KIApAQCAtMTk2Myw3ICsxOTYzLDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBieSBjbGVhcmluZyBt
X3JlcXVlc3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVIb3N0CiAgICAgICAg
IC8vIGlzIG5vdyBpbiBhIHN0YXRlIHdoZXJlIHN0YXJ0aW5nIGFuIGVtcHR5IGxvYWQgd2lsbCBi
ZSBpbmNvbnNpc3RlbnQuIFJlcGxhY2UgaXQgd2l0aAogICAgICAgICAvLyBhIG5ldyBBcHBsaWNh
dGlvbkNhY2hlSG9zdC4KLSAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9hcHBsaWNh
dGlvbkNhY2hlSG9zdCA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsK
ICAgICAgICAgbWF5YmVMb2FkRW1wdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIx
MjIsNyArMjEyMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZv
ckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2Fk
ZXI+KCp0aGlzLCBpY29uLnVybCk7CisgICAgYXV0byBpY29uTG9hZGVyID0gbWFrZVVuaXF1ZTxJ
Y29uTG9hZGVyPigqdGhpcywgaWNvbi51cmwpOwogICAgIGF1dG8qIHJhd0ljb25Mb2FkZXIgPSBp
Y29uTG9hZGVyLmdldCgpOwogICAgIG1faWNvbkxvYWRlcnMuc2V0KFdURk1vdmUoaWNvbkxvYWRl
ciksIG5ld0NhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CmluZGV4IDA0NTNkN2U2ZDllMzY1NjAyYWM5YWJkOTk5YjRlMmZhYjEzMmFkYjQuLjkzODM0MmQw
OTM1MDJlZmM2ODkwNWM2YzM0YTk4MTdiYWQ1NDIxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCkBAIC01NzgsNyArNTc4LDcgQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCkKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RW1wdHlQcm9ncmVzc1RyYWNrZXJDbGllbnQ+IGR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9ICZkdW1teVBy
b2dyZXNzVHJhY2tlckNsaWVudC5nZXQoKTsKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50PigpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigpOwogCiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6Y3JlYXRlKHsgfSwgeyB9KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kYXRh
YmFzZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBFbXB0eURhdGFiYXNlUHJvdmlkZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZTBmNDYxNDhmMmRmYWE4N2Y2YjI0
MjYzN2Q1MDg5MTg1MjBhNjBhMi4uODNiZWIyNzE3ZDMzN2MzNDFjMDE1ZWNmNDZkNGYzNzNlMDhi
MTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNzAsMTAgKzI3
MCwxMCBAQCBjbGFzcyBGcmFtZUxvYWRlcjo6RnJhbWVQcm9ncmVzc1RyYWNrZXIgewogRnJhbWVM
b2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lJiBmcmFtZSwgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVu
dCkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBt
X3BvbGljeUNoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDaGVja2VyPihmcmFtZSkpCi0g
ICAgLCBtX2hpc3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q29udHJvbGxlcj4oZnJhbWUp
KQorICAgICwgbV9wb2xpY3lDaGVja2VyKG1ha2VVbmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUp
KQorICAgICwgbV9oaXN0b3J5KG1ha2VVbmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkK
ICAgICAsIG1fbm90aWZpZXIoZnJhbWUpCi0gICAgLCBtX3N1YmZyYW1lTG9hZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKKyAgICAsIG1fc3ViZnJhbWVMb2FkZXIo
bWFrZVVuaXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUpKQogICAgICwgbV9taXhlZENvbnRlbnRD
aGVja2VyKGZyYW1lKQogICAgICwgbV9zdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCiAgICAg
LCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkKQpAQCAtMzIxLDcgKzMyMSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VUbyhG
cmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KTsK
IAogICAgIG1fbmV0d29ya2luZ0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5nQ29u
dGV4dCgpOwotICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVBy
b2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtlVW5p
cXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJMJikKQEAgLTM0Niw3ICszNDYs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25zdCBV
UkwmKQogICAgIG1fbmVlZHNDbGVhciA9IHRydWU7CiAKICAgICBtX25ldHdvcmtpbmdDb250ZXh0
ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNzVHJh
Y2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwor
ICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tlcj4o
bV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBk
ZWZlcnMpCkBAIC0yNjc4LDcgKzI2NzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hDaGls
ZHJlbigpCiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvYnJv
d3NpbmctdGhlLXdlYi5odG1sI25hdmlnYXRlCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdmlnYXRp
b25EaXNhYmxlcj4gbmF2aWdhdGlvbkRpc2FibGVyOwogICAgIGlmIChtX2ZyYW1lLmlzTWFpbkZy
YW1lKCkpCi0gICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2
aWdhdGlvbkRpc2FibGVyPigmbV9mcmFtZSk7CisgICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9
IG1ha2VVbmlxdWU8TmF2aWdhdGlvbkRpc2FibGVyPigmbV9mcmFtZSk7CiAKICAgICAvLyBBbnkg
c3ViZnJhbWUgaW5zZXJ0ZWQgYnkgdW5sb2FkIGV2ZW50IGhhbmRsZXJzIGV4ZWN1dGVkIGluIHRo
ZSBsb29wIGJlbG93IHdpbGwgbm90IGdldCB1bmxvYWRlZAogICAgIC8vIGJlY2F1c2Ugd2UgY3Jl
YXRlIGEgY29weSBvZiB0aGUgc3ViZnJhbWVzIGxpc3QgYmVmb3JlIGxvb3BpbmcuIFRoZXJlZm9y
ZSwgaXQgd291bGQgYmUgdW5zYWZlIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAK
aW5kZXggY2RmNjQ5NTI2ZmUzZDFmMzMyOGQ2ZTM2YzIwMTA4N2MzMWYxNjU1Yi4uNDA4YzUzNjQy
OWUzYjA4Nzc5OGViOTdlNzY4NjRjYzk0ODY2NjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcApAQCAtMTQyLDIyICsxNDIsMjIgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxM
aW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW4K
IHsKICAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRJ
bWFnZT4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRJ
bWFnZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNvdXJj
ZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdDoKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxv
YWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3du
Y2FzdDxDYWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6
VHlwZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlu
a1ByZWxvYWRTdHlsZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENTU1N0
eWxlU2hlZXQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVs
b2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNo
ZWV0PihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRSZXNv
dXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRGb250UmVz
b3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+KGxv
YWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3VyY2U6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291
cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2UpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGll
bnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwogI2VuZGlm
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWVkaWFSZXNvdXJjZToKICAgICAgICAg
QVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWVkaWFQcmVs
b2FkaW5nRW5hYmxlZCgpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWNoZWRS
ZXNvdXJjZTo6VHlwZTo6UmF3UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVk
UmF3UmVzb3VyY2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQ
cmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVzb3Vy
Y2U+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291
cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Okljb246CiAjaWYgRU5BQkxFKFNW
R19GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cAppbmRleCA1NThjNzgwNDk1N2VjODgyODgxOGVmNTYxOWJmOTgzZDNmOTQwYTU1Li4zYzJjMjUy
YWE1MWI5NjkyOTVlY2YxNDgxMjU0YTMyNDBlYzQyYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KERvY3VtZW50JiBpbml0aWF0aW5n
RG9jdW1lbnQsIGRvdWJsZQogICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3Qg
aXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCiAgICAgaWYgKCFtX3Jl
ZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpIHsKICAgICAgICAgYXV0byBs
b2NrQmFja0ZvcndhcmRMaXN0ID0gZGVsYXkgPD0gMSA/IExvY2tCYWNrRm9yd2FyZExpc3Q6Olll
cyA6IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vOwotICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2Vf
dW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAmbV9m
cmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMs
IGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKKyAgICAgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hl
ZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3VtZW50LCBkZWxheSwgJm1fZnJhbWUuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0Zv
cndhcmRMaXN0KSk7CiAgICAgfQogfQogCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBOYXZpZ2F0
aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKERvY3VtZW50JiBpbml0aWF0aW5n
RG9jdW1lbnQsIFMKICAgICAvLyBUaGlzIG1heSBoYXBwZW4gd2hlbiBhIGZyYW1lIGNoYW5nZXMg
dGhlIGxvY2F0aW9uIG9mIGFub3RoZXIgZnJhbWUuCiAgICAgYm9vbCBkdXJpbmdMb2FkID0gIWxv
YWRlci5zdGF0ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKTsKIAot
ICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2U+KGlu
aXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1cmwsIHJlZmVycmVyLCBsb2NrSGlz
dG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hh
bmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZzZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwg
bG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1
bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvbikKQEAgLTQ2
OCw3ICs0NjgsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1p
c3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3NpbwogICAgICAgICBsb2NrQmFja0Zv
cndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzOwogICAgIH0KICAgICAKLSAgICBz
Y2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihXVEZNb3Zl
KHN1Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CisgICAgc2No
ZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lvbj4oV1RGTW92ZShzdWJtaXNz
aW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOwogfQogCiB2b2lkIE5hdmln
YXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3Vt
ZW50KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1
bGVSZWZyZXNoKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQpCiAgICAgaWYgKHVybC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8
U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGluZ0RvY3VtZW50LCAmbV9mcmFtZS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1fZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJl
cigpKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0aWF0
aW5nRG9jdW1lbnQsICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwg
bV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKIH0KIAogdm9pZCBOYXZpZ2F0
aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKQEAgLTQ5
OCwxMyArNDk4LDEzIEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5
TmF2aWdhdGlvbihpbnQgc3RlcHMpCiAgICAgfQogCiAgICAgLy8gSW4gYWxsIG90aGVyIGNhc2Vz
LCBzY2hlZHVsZSB0aGUgaGlzdG9yeSB0cmF2ZXJzYWwgdG8gb2NjdXIgYXN5bmNocm9ub3VzbHku
Ci0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlv
bj4oc3RlcHMpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZEhpc3RvcnlOYXZp
Z2F0aW9uPihzdGVwcykpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxl
UGFnZUJsb2NrKERvY3VtZW50JiBvcmlnaW5Eb2N1bWVudCkKIHsKICAgICBpZiAoc2hvdWxkU2No
ZWR1bGVOYXZpZ2F0aW9uKCkpCi0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2No
ZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkpOworICAgICAgICBzY2hlZHVsZShtYWtl
VW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3JpZ2luRG9jdW1lbnQpKTsKIH0KIAogdm9pZCBO
YXZpZ2F0aW9uU2NoZWR1bGVyOjp0aW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
b2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZTE3YTlkYzcyZGUwMzdjOTYzNGJjMWNjOTNjMmMxYTc3
YTg2YmZhMy4uMjgxN2E3NjY2NDU3YjIzOTczYTY4ZmNmN2JjMDE4MGMxMmJmNWNkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBA
QCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3ModW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZQogCiAgICAgYXV0byYgaXRlbSA9IG1fcHJvZ3Jlc3NJ
dGVtcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlmICgh
aXRlbSkgewotICAgICAgICBpdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVz
dGltYXRlZExlbmd0aCk7CisgICAgICAgIGl0ZW0gPSBtYWtlVW5pcXVlPFByb2dyZXNzSXRlbT4o
ZXN0aW1hdGVkTGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IGVhNWRiZmJhYWIyMGJm
ZDQzZGVhY2YxZTc3NjExYzM0MzNhYmFiODMuLjgyNDZiYjA3MDZjZDBjMDcxZjg5OTYyODk4NmE1
YmE1MWM0OGI2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3Vy
Y2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVj
b2Rlci5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCBib29sIFRleHRSZXNvdXJjZURlY29kZXI6OmNo
ZWNrRm9ySGVhZENoYXJzZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbiwgYm9vbAogICAg
IGlmIChtX2NvbnRlbnRUeXBlID09IFhNTCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBt
X2NoYXJzZXRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNlcj4o
KTsKKyAgICBtX2NoYXJzZXRQYXJzZXIgPSBtYWtlVW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNl
cj4oKTsKICAgICByZXR1cm4gY2hlY2tGb3JNZXRhQ2hhcnNldChkYXRhLCBsZW4pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGNhOWU2YzQzNDNk
NzQwMTA1NTNhOWUxMGZhNjU2M2VlNTIzOTFiYmUuLmZhOTI2ZWEwNjJhZGZmMjA1NzBjOGEzNjkx
MjQ2NzJiOWVmNTY2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3Vl
RGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghbV9jdWVQYXJzZXIpCi0gICAgICAgIG1fY3VlUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBtX2N1ZVBhcnNlciA9IG1ha2VVbmlxdWU8
V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAogICAgIHdoaWxlIChtX3BhcnNlT2Zmc2V0IDwgYnVm
ZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YSht
X3BhcnNlT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcAppbmRleCBhMTI2M2UyZjA0NTc0YjRmMGVlNzNjMDRlOGI2MmY1YzgwNzJh
NzU4Li43NzUzMmY4NjEzNGUwNDNhZDM3ZDNmNTk5OThhNmY1N2E0MjQxNzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTUs
MTEgKzExNSwxMSBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpN
YWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChjb250ZW50
U2VjdXJpdHlQb2xpY3kpOwogCiAgICAgYXV0byBzZWN1cml0eU9yaWdpbkNvcHkgPSBzZWN1cml0
eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lD
b3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3Bl
LnVybCgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGljeUNv
cHkgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2NvcGUudXJsKCku
aXNvbGF0ZWRDb3B5KCkpOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlTdGF0
ZUZyb20oY29udGVudFNlY3VyaXR5UG9saWN5KTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3lD
b3B5LT5jb3B5VXBncmFkZUluc2VjdXJlUmVxdWVzdFN0YXRlRnJvbSgqY29udGVudFNlY3VyaXR5
UG9saWN5KTsKIAotICAgIGF1dG8gb3B0aW9uc0NvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRl
clRhc2tPcHRpb25zPihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8g
b3V0Z29pbmdSZWZlcnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJp
dHlPcmlnaW5Db3B5KSk7CisgICAgYXV0byBvcHRpb25zQ29weSA9IG1ha2VVbmlxdWU8TG9hZGVy
VGFza09wdGlvbnM+KG9wdGlvbnMsIHJlcXVlc3QuaHR0cFJlZmVycmVyKCkuaXNOdWxsKCkgPyBv
dXRnb2luZ1JlZmVycmVyIDogcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgV1RGTW92ZShzZWN1cml0
eU9yaWdpbkNvcHkpKTsKIAogICAgIC8vIEFsbCBsb2FkcyBzdGFydCBvdXQgYXMgRG9jdW1lbnQu
IEluc2lkZSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIHdlIHVwZ3JhZGUgdGhpcyB0byBhIFdvcmtl
ciBsb2FkLgogICAgIEFTU0VSVChvcHRpb25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0
ID09IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZjk3ZWIwMDQy
NWJkMjliM2NiNmJjYjM0NWZiZmQ2NTIyNDA4ZjhjZS4uYmJhOTEwNDE5MTU0ZWNmNDNjMTIyZTJk
OTBjZjg2NDU1OTdhOTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUmIG5vZGUsIFdU
Rjo6RnVuY3Rpb248Ym9vbAogICAgIC8vIGJ1dCB3ZSBjYW4gYXBwcm94aW1hdGUgdGhhdCBieSBj
aGVja2luZyBpZiBzY3JpcHRpbmcgaXMgZW5hYmxlZCByaWdodCBub3cuCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4gdGFnTmFtZXNUb0ZpbHRlcjsKICAgICBpZiAo
ZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLmlzU2NyaXB0RW5hYmxl
ZCgpKSB7Ci0gICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxRdWFsaWZpZWROYW1lPj4oKTsKKyAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9IG1ha2VVbmlx
dWU8VmVjdG9yPFF1YWxpZmllZE5hbWU+PigpOwogICAgICAgICB0YWdOYW1lc1RvRmlsdGVyLT5h
cHBlbmQoSFRNTE5hbWVzOjpub3NjcmlwdFRhZyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA4MzY4YTk1NzA1ZTMxOTJkMWY4MTdm
ZjJlY2Q2ODM3ZTNmOWUxMzVkLi5lZjkzYjM1MWU3OTFkNTI3ZGFlODBmODdjNTI1YTdkYzE0ZTdl
NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAg
LTEwNSw3ICsxMDUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20oY29uc3Qg
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBtX2ltYWdlT2JzZXJ2ZXItPmNhY2hl
ZEltYWdlcygpLmFkZCh0aGlzKTsKIAogICAgIGlmIChtX2ltYWdlICYmIGlzPFNWR0ltYWdlPigq
bV9pbWFnZSkpCi0gICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
SW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAgICAgICBtX3N2
Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFn
ZT4oKm1faW1hZ2UpKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkBAIC0zNTcsNyArMzU3LDcgQEAgaW5saW5lIHZvaWQg
Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKCkKIAogICAgIGlmIChtX2ltYWdlKSB7CiAgICAgICAg
IGlmIChpczxTVkdJbWFnZT4oKm1faW1hZ2UpKQotICAgICAgICAgICAgbV9zdmdJbWFnZUNhY2hl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCpt
X2ltYWdlKSk7CisgICAgICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0lt
YWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIAogICAgICAgICAvLyBT
ZW5kIHF1ZXVlZCBjb250YWluZXIgc2l6ZSByZXF1ZXN0cy4KICAgICAgICAgaWYgKG1faW1hZ2Ut
PnVzZXNDb250YWluZXJTaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGJlNjE4M2FiZmE1OWQ1YzhlMTYyZmVjMWQ2
NTUyNDUyM2FkZTI3OGMuLmY5YTc1ZjM1NDUyNzY5MDJhOWU0YTVjMzViNmFjNmIxZjE1MGMzMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0
UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyCiAgICAgICAg
IENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3Bv
bnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1f
cmVkaXJlY3RDaGFpbi5hcHBlbmQoUmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJlc3BvbnNlKSk7Ci0g
ICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIHN0ZDo6bWFrZV91bmlxdWU8UmVz
b3VyY2VSZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2FjaGVkUmVzb3Vy
Y2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50cyksIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92ZShyZXF1ZXN0
KSwgbWFrZVVuaXF1ZTxSZXNvdXJjZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNwb25zZV0g
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAgQ2FjaGVk
UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggZTQzMGU0NDdh
YzQ5NDYzNmM5ODRlNzRkNDBiOTFlNjVjZGViYjUwYi4uMDU2N2QxZDVkZThjNmYxM2UxODY4NDRh
ZWQ3NTU3NWNmMTdlMTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCkBAIC01NDYsNyArNTQ2LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6
YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgLy8g
VGhlcmVmb3JlLCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBzZW5kaW5nIGNhbGxiYWNrcyBvbiBh
IGNhY2hlIGhpdCBsaWtlIG90aGVyIENhY2hlZFJlc291cmNlcywKICAgICAgICAgLy8gd2Ugc2No
ZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlzaCBzeW5jaHJvbm91
c2x5LgogICAgICAgICBBU1NFUlQoIW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suY29udGFpbnMo
JmNsaWVudCkpOwotICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xpZW50
LCBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrPigqdGhpcywgY2xpZW50KSk7CisgICAgICAgIG1f
Y2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKCZjbGllbnQsIG1ha2VVbmlxdWU8Q2FsbGJhY2s+
KCp0aGlzLCBjbGllbnQpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggODQzYTlkMWY5ZDZjODVmMTAwMGEyYzQwZjE5NjRiNDdhMmViMWM3YS4uYjM0YjhmZDM1
YzEwNzdhNTQ1MmFiYjM0MzIzNjFiNGNjM2QxMWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03OTEsNyArNzkx
LDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
Pj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAgICAvLyBFbnRyeSBwb2ludCB0byBodHRw
czovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaC4KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVzb3VyY2VSZXF1ZXN0PiBvcmlnaW5hbFJlcXVlc3Q7CiAgICAgaWYgKENhY2hlZFJlc291
cmNlOjpzaG91bGRVc2VQaW5nTG9hZCh0eXBlKSB8fCByZXF1ZXN0Lm9wdGlvbnMoKS5kZXN0aW5h
dGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykgewotICAgICAg
ICBvcmlnaW5hbFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4ocmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IG1ha2VV
bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKICAgICAg
ICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBSZWZlcnJlcigpOwogICAgICAgICBvcmlnaW5h
bFJlcXVlc3QtPmNsZWFySFRUUE9yaWdpbigpOwogICAgIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBA
IFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpwcmVsCiAgICAgICAgIHJlc291cmNlVmFsdWUtPmluY3JlYXNl
UHJlbG9hZENvdW50KCk7CiAKICAgICAgICAgaWYgKCFtX3ByZWxvYWRzKQotICAgICAgICAgICAg
bV9wcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2Uq
Pj4oKTsKKyAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENh
Y2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgIG1fcHJlbG9hZHMtPmFkZChyZXNvdXJjZVZhbHVl
LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNlOwpAQCAtMTQzMyw3ICsxNDMzLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2FkcyhDbGVhclByZWxvYWRz
TW9kZSBtb2RlKQogICAgICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAgICAgICBpZiAobW9kZSA9
PSBDbGVhclByZWxvYWRzTW9kZTo6Q2xlYXJTcGVjdWxhdGl2ZVByZWxvYWRzICYmIHJlc291cmNl
LT5pc0xpbmtQcmVsb2FkKCkpIHsKICAgICAgICAgICAgIGlmICghcmVtYWluaW5nTGlua1ByZWxv
YWRzKQotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xpbmtQcmVsb2FkcyA9IHN0ZDo6bWFrZV91
bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgICAgICBy
ZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291
cmNlKj4+KCk7CiAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMtPmFkZChyZXNvdXJj
ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQyM2MzZmM1MjRiZDhiNmY1
NWYzNWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2FmZmNiZWYzOTI3ODI2M2M0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC04
Niw3ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAgQVNTRVJUKHNlc3Npb25J
RC5pc1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJlc291cmNlcy5hZGQoc2Vz
c2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFtYXApCi0gICAgICAg
IG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CisgICAgICAgIG1h
cCA9IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAgcmV0dXJuICptYXA7CiB9
CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2FjaGUo
TmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmVtb3Zl
SW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBj
YWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1dG8gYml0bWFwSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBhdXRv
IGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRtYXBJ
bWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0aW9u
KTsKKyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBi
aXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFy
dGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJbWFnZUNs
aWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2UtPmRl
Y29kZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmxydUxp
c3RGb3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0JgogCiAgICAgbV9hbGxS
ZXNvdXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsKICAgICB3aGlsZSAobV9h
bGxSZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAgIG1fYWxsUmVzb3VyY2Vz
LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+KCkpOworICAgICAgICBt
X2FsbFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxMUlVMaXN0PigpKTsKICAg
ICByZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KaW5kZXggZjZiODIyMTc5MTZjYWQ5NWJmZTk2
MGJiM2UzNzg0YTI3MGE5YmE2Ny4uYzVjYTVjMjVmMTFiNGQ4YTljYTkzZWZjODg5MDk5MDdmNmI3
NjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQpAQCAt
ODYsNyArODYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjooUmVz
b3VyY2VMb2FkZXImKXJlc291cmNlTG9hZGVyIHJlc291cmNlUgogCiAgICAgX3Jlc291cmNlTG9h
ZGVyID0gbWFrZVdlYWtQdHIocmVzb3VyY2VMb2FkZXIpOwogICAgIF9yZXNwb25zZSA9IHJlc291
cmNlUmVzcG9uc2U7Ci0gICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0Nv
bnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKKyAgICBfY29udmVydGVyID0gbWFrZVVuaXF1ZTxQ
cmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UpOwogICAgIF9idWZmZXJlZERhdGFBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9zaG91bGRE
ZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0dGlu
Z3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpOwog
CkBAIC0yNDYsNyArMjQ2LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24g
Kiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICB9CiAKICAg
ICBfY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJldGFp
blB0cihzZWxmKV0gKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2NvbnZlcnRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlLCBw
YXNzd29yZCk7CisgICAgICAgIF9jb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0
ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOwogICAgICAgICBbX2NvbnZlcnRlci0+cGxh
dGZvcm1Db252ZXJ0ZXIoKSBhcHBlbmREYXRhQXJyYXk6X2J1ZmZlcmVkRGF0YUFycmF5LmdldCgp
XTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgZmluaXNoZWRBcHBl
bmRpbmdEYXRhXTsKICAgICB9KTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBQcmV2aWV3TG9hZGVyOjp+
UHJldmlld0xvYWRlcigpCiBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gUHJldmlld0xv
YWRlcjo6Y3JlYXRlKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0c01J
TUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKIH0KIAogYm9vbCBQcmV2aWV3TG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzQ3OWNhMWY5
Y2IwN2Q0YWM3YjRiOWZiMjI4NTFmMGM5OTRiMTcxNC4uNGNjZGFiMDRiN2IzZjU1MzRjZWNjMmEx
OWVjMGE0YmNiN2FiMTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZXh0
TWVudT4gQ29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51KEV2ZW50
CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVu
dT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudT4oKTsKIH0KIAogdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCYgZXZlbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGY2M2RhYTdmNjM0NzI1
NTg4NzNkYjNiNTgzYmMyNTEyYTE3NzUyN2EuLmNkYzc0ZjZkZTA5ZTkzZGU5YWFiOTIzNTZlZjJm
YmY0NGRkMmQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
CkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5IGZpbmFsIDog
cHVibGljIFJlZ2lvbk92ZXJsYXkgewogCiBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1
cGRhdGVSZWdpb24oKQogewotICAgIGF1dG8gcmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdp
b24+KCk7CisgICAgYXV0byByZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICAKICAg
ICBmb3IgKGNvbnN0IEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKCFmcmFt
ZS0+dmlldygpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAppbmRleCA0OGMwNzM0NzcwZWIxMTBjMWM1ZDg0NTNkZDA4Nzk5MmU1NjQ5YTFlLi5k
MjBiOThjNDE1ZWVjODI3NmY4OTAwZjI0YzY3YTk3ZjEwMWQwYTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgRXZlbnRIYW5kbGVyOjpFdmVu
dEhhbmRsZXIoRnJhbWUmIGZyYW1lKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGVuZGlu
Z01vbWVudHVtV2hlZWxFdmVudHNUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6Y2xlYXJMYXRj
aGVkU3RhdGUpCiAjZW5kaWYKLSAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIoc3RkOjptYWtl
X3VuaXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fYXV0b3Njcm9sbENvbnRy
b2xsZXIobWFrZVVuaXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKICNpZiAhRU5BQkxFKElP
U19UT1VDSF9FVkVOVFMpCiAgICAgLCBtX2Zha2VNb3VzZU1vdmVFdmVudFRpbWVyKCp0aGlzLCAm
RXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMjMzNzI5NDJiMzc2M2Q5MjkzZDI2NWIzNWFjYzE1
MjVlMzRjYzAwZi4uYTVlNWVkZTBiNGI3NDdlNDc5NGRjNzk0MDZhZWZjY2JiMzg1ZGQ2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTI5MSw3ICsxMjkxLDcgQEAgUmVuZGVyQm94
KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiB2b2lkIEZyYW1lVmlldzo6
YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRkZWRP
YmplY3QpCiB7CiAgICAgaWYgKCFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlKQotICAgICAgICBt
X2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFzaFNldDxS
ZW5kZXJFbWJlZGRlZE9iamVjdCo+PigpOworICAgICAgICBtX2VtYmVkZGVkT2JqZWN0c1RvVXBk
YXRlID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+PigpOwog
CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50ID0gZW1iZWRkZWRPYmplY3QuZnJh
bWVPd25lckVsZW1lbnQoKTsKICAgICBpZiAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQp
IHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpKSB7CkBAIC0xNDI3LDcgKzE0MjcsNyBA
QCB2b2lkIEZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIpCiAgICAgYm9vbCBoYWRTbG93UmVwYWludE9iamVjdHMgPSBoYXNTbG93UmVwYWludE9i
amVjdHMoKTsKIAogICAgIGlmICghbV9zbG93UmVwYWludE9iamVjdHMpCi0gICAgICAgIG1fc2xv
d1JlcGFpbnRPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVs
ZW1lbnQqPj4oKTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBtYWtlVW5pcXVlPEhh
c2hTZXQ8Y29uc3QgUmVuZGVyRWxlbWVudCo+PigpOwogCiAgICAgbV9zbG93UmVwYWludE9iamVj
dHMtPmFkZCgmcmVuZGVyZXIpOwogICAgIGlmIChoYWRTbG93UmVwYWludE9iamVjdHMpCkBAIC0x
NDYyLDcgKzE0NjIsNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3Qo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB2b2lkIEZyYW1lVmlldzo6YWRkVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYg
KCFtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKQotICAgICAgICBtX3ZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0
U2V0PigpOworICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gbWFrZVVuaXF1
ZTxWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0PigpOwogCiAgICAgaWYgKCFtX3ZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzLT5jb250YWlucyhvYmplY3QpKSB7CiAgICAgICAgIG1fdmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdHMtPmFkZChvYmplY3QpOwpAQCAtNDg2Niw3ICs0ODY2LDcgQEAg
U3RyaW5nIEZyYW1lVmlldzo6dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0CiBib29s
IEZyYW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVB
cmVhKQogewogICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYXMpCi0gICAgICAgIG1fc2Nyb2xsYWJs
ZUFyZWFzID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKKyAgICAgICAg
bV9zY3JvbGxhYmxlQXJlYXMgPSBtYWtlVW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOwogICAg
IAogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhcy0+YWRkKHNjcm9sbGFibGVBcmVhKS5pc05ld0Vu
dHJ5KSB7CiAgICAgICAgIHNjcm9sbGFibGVBcmVhU2V0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKaW5kZXggNzMwOThmMWZhMWYx
MDcxZTYxZmNkM2FhNjUzNTMzMGQzZTg5YmY1OS4uZTg1OGM5MmNiZjhjMzFhMzIxYmYzODAwOTdh
YmE1NWYxNTcwMDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdM
YXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91
dENvbnRleHQuY3BwCkBAIC01OTYsMTQgKzU5NiwxNCBAQCB2b2lkIEZyYW1lVmlld0xheW91dENv
bnRleHQ6OnB1c2hMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiByb290KQogICAgIEFTU0VSVCgh
bV9wYWludE9mZnNldENhY2hlRGlzYWJsZUNvdW50KTsKICAgICBBU1NFUlQoIWxheW91dFN0YXRl
KCkpOwogCi0gICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckxheW91dFN0YXRlPihyb290KSk7CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZCht
YWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihyb290KSk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3
TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlRm9yUGFnaW5hdGlvbklmTmVlZGVkKFJlbmRl
ckJsb2NrRmxvdyYgbGF5b3V0Um9vdCkKIHsKICAgICBpZiAobGF5b3V0U3RhdGUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0U3RhdGU6
OklzUGFnaW5hdGVkOjpZZXMpKTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VV
bmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRlOjpJ
c1BhZ2luYXRlZDo6WWVzKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCkBAIC02MTMsNyAr
NjEzLDcgQEAgYm9vbCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUoUmVu
ZGVyQm94JiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2kKICAgICBhdXRvKiBsYXlvdXRTdGF0ZSA9
IHRoaXMtPmxheW91dFN0YXRlKCk7CiAgICAgaWYgKCFsYXlvdXRTdGF0ZSB8fCAhbmVlZHNGdWxs
UmVwYWludCgpIHx8IGxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpIHx8IHJlbmRlcmVyLmVuY2xv
c2luZ0ZyYWdtZW50ZWRGbG93KCkKICAgICAgICAgfHwgbGF5b3V0U3RhdGUtPmxpbmVHcmlkKCkg
fHwgKHJlbmRlcmVyLnN0eWxlKCkubGluZUdyaWQoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbExp
bmVHcmlkKCkgJiYgcmVuZGVyZXIuaXNSZW5kZXJCbG9ja0Zsb3coKSkpIHsKLSAgICAgICAgbV9s
YXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0YXRl
PihtX2xheW91dFN0YXRlU3RhY2ssIHJlbmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBhZ2VI
ZWlnaHRDaGFuZ2VkKSk7CisgICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVu
aXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwgb2Zm
c2V0LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFz
ZS5jcHAKaW5kZXggOGMzYzUyYTA3MzUyMjc5MGNkMGM0YTYwZGMwNWU2MTQxMmMxOWFlOS4uNTIy
N2U0MmFjMDk2Y2U2OTI1ZDdlYzZhMThlNTE5MjVkMmUwMDZiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvckJhc2UuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgU2VydmljZVdvcmtlckNvbnRh
aW5lciYgTmF2aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcigpCiB7CiAgICAgQVNTRVJUKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQo
KSk7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJDb250YWluZXIpCi0gICAgICAgIG1fc2Vydmlj
ZVdvcmtlckNvbnRhaW5lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5l
cj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CisgICAgICAgIG1fc2VydmljZVdv
cmtlckNvbnRhaW5lciA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5lcj4oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3NlcnZpY2VXb3JrZXJD
b250YWluZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDM5NWQyZjAxMjMzY2I5ODllN2Vm
NTU1Y2M3MThiZTk0ODk2NzEyZDkuLjNmNTgxODM5OTUyMjBhMzgzZjNmODc2OGE5YmY4MzRhM2Yy
ZjM4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjExLDI2ICsyMTEsMjYgQEAgc3RhdGljIGNv
bnN0ZXhwciBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gcGFnZUluaXRpYWxBY3Rpdml0
eVN0YXRlKCkKIH0KIAogUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1
cmF0aW9uKQotICAgIDogbV9jaHJvbWUoc3RkOjptYWtlX3VuaXF1ZTxDaHJvbWU+KCp0aGlzLCAq
cGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKLSAgICAsIG1fZHJhZ0NhcmV0Q29udHJv
bGxlcihzdGQ6Om1ha2VfdW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCisgICAgOiBtX2No
cm9tZShtYWtlVW5pcXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVD
bGllbnQpKQorICAgICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8RHJhZ0NhcmV0
Q29udHJvbGxlcj4oKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9kcmFnQ29u
dHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERyYWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25m
aWd1cmF0aW9uLmRyYWdDbGllbnQpKQorICAgICwgbV9kcmFnQ29udHJvbGxlcihtYWtlVW5pcXVl
PERyYWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQog
I2VuZGlmCi0gICAgLCBtX2ZvY3VzQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZvY3VzQ29u
dHJvbGxlcj4oKnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkKKyAgICAsIG1fZm9j
dXNDb250cm9sbGVyKG1ha2VVbmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUluaXRp
YWxBY3Rpdml0eVN0YXRlKCkpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9j
b250ZXh0TWVudUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xs
ZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQorICAgICwg
bV9jb250ZXh0TWVudUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xsZXI+
KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQogI2VuZGlmCi0g
ICAgLCBtX3VzZXJJbnB1dEJyaWRnZShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJJbnB1dEJyaWRnZT4o
KnRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVu
dCkpCisgICAgLCBtX3VzZXJJbnB1dEJyaWRnZShtYWtlVW5pcXVlPFVzZXJJbnB1dEJyaWRnZT4o
KnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9y
Q29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCkpCiAj
aWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotICAgICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAg
ICAsIG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckNhcHR1cmVD
b250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAg
ICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyTG9ja0Nv
bnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKG1ha2VVbmlx
dWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fc2V0dGlu
Z3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcHJvZ3Jlc3Moc3RkOjptYWtlX3Vu
aXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJD
bGllbnQpKQotICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxC
YWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJh
Y2tGb3J3YXJkQ2xpZW50KSkpCisgICAgLCBtX3Byb2dyZXNzKG1ha2VVbmlxdWU8UHJvZ3Jlc3NU
cmFja2VyPigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKKyAgICAs
IG1fYmFja0ZvcndhcmRDb250cm9sbGVyKG1ha2VVbmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVy
PigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQog
ICAgICwgbV9tYWluRnJhbWUoRnJhbWU6OmNyZWF0ZSh0aGlzLCBudWxscHRyLCBwYWdlQ29uZmln
dXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUpKQogICAgICwgbV9lZGl0b3JDbGllbnQo
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQpKQogICAgICwgbV9wbHVnSW5D
bGllbnQocGFnZUNvbmZpZ3VyYXRpb24ucGx1Z0luQ2xpZW50KQpAQCAtMjUwLDkgKzI1MCw5IEBA
IFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAs
IG1fZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQYWdlOjpk
b21UaW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lckZpcmVkKQogICAgICwgbV9hY3Rp
dml0eVN0YXRlKHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKQogICAgICwgbV9hbHRlcm5hdGl2
ZVRleHRDbGllbnQocGFnZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KQotICAg
ICwgbV9jb25zb2xlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVDbGllbnQ+KCp0
aGlzKSkKKyAgICAsIG1fY29uc29sZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50
PigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3BlY3Rv
ckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQorICAg
ICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlz
KSkKICNlbmRpZgogICAgICwgbV9zb2NrZXRQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLnNvY2tldFByb3ZpZGVyKSkKICAgICAsIG1fY29va2llSmFyKFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24uY29va2llSmFyKSkKQEAgLTI2OCwxNiArMjY4LDE2IEBAIFBhZ2U6OlBhZ2UoUGFn
ZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fcGxheWJhY2tDb250
cm9sc01hbmFnZXJVcGRhdGVUaW1lcigqdGhpcywgJlBhZ2U6OnBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyVXBkYXRlVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV9pc1V0aWxpdHlQYWdlKGlzVXRp
bGl0eVBhZ2VDaHJvbWVDbGllbnQoY2hyb21lKCkuY2xpZW50KCkpKQotICAgICwgbV9wZXJmb3Jt
YW5jZU1vbml0b3IoaXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IHN0ZDo6bWFrZV91bmlxdWU8
UGVyZm9ybWFuY2VNb25pdG9yPigqdGhpcykpCi0gICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVy
KHN0ZDo6bWFrZV91bmlxdWU8TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93
UG93ZXJNb2RlRW5hYmxlZCkgeyBoYW5kbGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQb3dlck1v
ZGVFbmFibGVkKTsgfSkpCi0gICAgLCBtX3BlcmZvcm1hbmNlTG9nZ2luZyhzdGQ6Om1ha2VfdW5p
cXVlPFBlcmZvcm1hbmNlTG9nZ2luZz4oKnRoaXMpKQorICAgICwgbV9wZXJmb3JtYW5jZU1vbml0
b3IoaXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VNb25p
dG9yPigqdGhpcykpCisgICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyKG1ha2VVbmlxdWU8TG93
UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkgeyBo
YW5kbGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQb3dlck1vZGVFbmFibGVkKTsgfSkpCisgICAg
LCBtX3BlcmZvcm1hbmNlTG9nZ2luZyhtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTG9nZ2luZz4oKnRo
aXMpKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBF
TkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pKQotICAgICwgbV9zZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJvbGxlcj4o
KnRoaXMpKQorICAgICwgbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8U2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3JlY2VudFdo
ZWVsRXZlbnREZWx0YUZpbHRlcihXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpKQotICAg
ICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlT3ZlcmxheUNv
bnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlx
dWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkK
LSAgICAsIG1fcGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENvb3Jk
aW5hdG9yPigqcGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkKKyAg
ICAsIG1fcGF5bWVudENvb3JkaW5hdG9yKG1ha2VVbmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigq
cGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJfQVVUSE4pCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JDb29yZGluYXRvcihtYWtl
VW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpKSkKQEAgLTU1OSw3ICs1NTksNyBA
QCB2b2lkIFBhZ2U6OmluaXRHcm91cCgpCiB7CiAgICAgQVNTRVJUKCFtX3NpbmdsZVBhZ2VHcm91
cCk7CiAgICAgQVNTRVJUKCFtX2dyb3VwKTsKLSAgICBtX3NpbmdsZVBhZ2VHcm91cCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGFnZUdyb3VwPigqdGhpcyk7CisgICAgbV9zaW5nbGVQYWdlR3JvdXAgPSBt
YWtlVW5pcXVlPFBhZ2VHcm91cD4oKnRoaXMpOwogICAgIG1fZ3JvdXAgPSBtX3NpbmdsZVBhZ2VH
cm91cC5nZXQoKTsKIH0KIApAQCAtMjYzMyw3ICsyNjMzLDcgQEAgdm9pZCBQYWdlOjpzZXRSZXNv
dXJjZVVzYWdlT3ZlcmxheVZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIH0KIAogICAgIGlmICgh
bV9yZXNvdXJjZVVzYWdlT3ZlcmxheSAmJiBtX3NldHRpbmdzLT5hY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZCgpKQotICAgICAgICBtX3Jlc291cmNlVXNhZ2VPdmVybGF5ID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMpOworICAgICAgICBtX3Jlc291cmNl
VXNhZ2VPdmVybGF5ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKaW5k
ZXggODI0NmFkYzFhMTgwYjEzOGE4MDJjNTY0NTU0M2ZmYjJhM2VlMjg0YS4uODNhMjQwMzAwNDk0
NWIxYWUwMjczMzczY2FkN2VhOTkyNGU2Y2MxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uc29sZUNsaWVudC5jcHAKQEAgLTE2MSw5ICsxNjEsOSBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xp
ZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNz
YWdlOwogCiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9n
LCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0
SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0
LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIGVs
c2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1
Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBz
dGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVs
LCBtZXNzYWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdnZXN0
ZWRDb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICBhZGRNZXNz
YWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUGFnZUNv
bnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1l
c3NhZ2VMZXZlbCBsCiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGJvb2wgZ290TWVzc2Fn
ZSA9IGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKIAot
ICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0
LCBhcmd1bWVudHMuY29weVJlZigpLCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEks
IHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhlYyk7CiAK
ICAgICBTdHJpbmcgdXJsID0gbWVzc2FnZS0+dXJsKCk7CiAgICAgdW5zaWduZWQgbGluZU51bWJl
ciA9IG1lc3NhZ2UtPmxpbmUoKTsKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIFBhZ2VDb25zb2xl
Q2xpZW50OjpzY3JlZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlwdEFyZ3Vt
ZW50cz4mJgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRhdGFVUkwuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBhZGRNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUgc2NyZWVuc2hvdCJfcywgV1RG
TW92ZShhcmd1bWVudHMpKSk7CisgICAgICAgICAgICBhZGRNZXNzYWdlKG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2Fn
ZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUgc2Ny
ZWVuc2hvdCJfcywgV1RGTW92ZShhcmd1bWVudHMpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVu
dDo6c2NyZWVuc2hvdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1bWVudHM+
JiYKICAgICBmb3IgKHNpemVfdCBpID0gKCF0YXJnZXQgPyAwIDogMSk7IGkgPCBhcmd1bWVudHMt
PmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhZGp1c3RlZEFyZ3VtZW50cy5hcHBlbmQo
eyBzdGF0ZS0+dm0oKSwgYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpIH0pOwogICAgIGFyZ3VtZW50
cyA9IFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKCpzdGF0ZSwgV1RGTW92ZShhZGp1c3RlZEFyZ3Vt
ZW50cykpOwotICAgIGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1hZ2Us
IE1lc3NhZ2VMZXZlbDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAgICBh
ZGRNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywg
ZGF0YVVSTCwgV1RGTW92ZShhcmd1bWVudHMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCA5MTkzNjA0NWMyZmFmNzZjYWM1ZTJj
NjllNjIzM2YyY2UzMGJmOWIxLi4xMjhjMThmMTRiOTA4ZTcxYmM3Y2VmYjM5NjIwN2ZlYmJjMDBm
MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0xMTYsOSArMTE2LDkgQEAgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlcyYgUGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMoKQogewog
ICAgIGlmICghbV9jYXB0aW9uUHJlZmVyZW5jZXMpIHsKICNpZiBQTEFURk9STShNQUMpIHx8IEhB
VkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi0gICAgICAgIG1fY2FwdGlvblByZWZl
cmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRj4o
KnRoaXMpOworICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKICNlbHNlCi0gICAgICAgIG1fY2FwdGlv
blByZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzPigq
dGhpcyk7CisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxDYXB0aW9u
VXNlclByZWZlcmVuY2VzPigqdGhpcyk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZS5jcHAKaW5kZXggNmMxNWIzZmFhODNmNWNhZTBkOTE3NmQwMGM4YWZjMTViNzY2
OTMxNi4uY2JiYWMyMWQ0MDA1YjFiMGUxMTgwMjJmN2FhMTRhOGJjZmVkODUyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFBlcmZvcm1h
bmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZpcmVkKCkKIEV4Y2VwdGlvbk9yPHZv
aWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYg
KCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8
VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVz
ZXJUaW1pbmc+KCp0aGlzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5nLT5tYXJr
KG1hcmtOYW1lKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMjc5LDE0ICsy
NzksMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3RyaW5n
JiBtYXJrTmFtZSkKIHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWFya3MoY29uc3QgU3RyaW5nJiBt
YXJrTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGltaW5n
ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNlclRp
bWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRpbWluZy0+
Y2xlYXJNYXJrcyhtYXJrTmFtZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1hbmNl
OjptZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYgc3RhcnRN
YXJrLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcpCi0g
ICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRoaXMp
OworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsK
IAogICAgIGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5nLT5tZWFzdXJlKG1lYXN1cmVOYW1lLCBz
dGFydE1hcmssIGVuZE1hcmspOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBAIC0z
MDAsNyArMzAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1lYXN1cmUoY29u
c3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgY29uc3QgU3RyaW5nJgogdm9pZCBQZXJmb3JtYW5jZTo6
Y2xlYXJNZWFzdXJlcyhjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lKQogewogICAgIGlmICghbV91
c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJU
aW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGlt
aW5nPigqdGhpcyk7CiAgICAgbV91c2VyVGltaW5nLT5jbGVhck1lYXN1cmVzKG1lYXN1cmVOYW1l
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDAzNzBmMjg4N2Y2
NWI1N2IzY2Q4OTdlNGZjNjllOGEyZWZiODc1ZGYuLjQ0MjkxYWVmYTM3YzhhN2E4NDQ4YmVjMzlh
ZWVhYzI0MzllYzQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTMy
MSw3ICszMjEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6b3V0cHV0TGlua2VkRGVzdGluYXRpb25z
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBEbwogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoIW1fbGlua2VkRGVzdGluYXRpb25zKSB7Ci0gICAgICAgIG1fbGlua2VkRGVzdGlu
YXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4o
KTsKKyAgICAgICAgbV9saW5rZWREZXN0aW5hdGlvbnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3Ry
aW5nLCBSZWY8RWxlbWVudD4+PigpOwogICAgICAgICBjb2xsZWN0TGlua2VkRGVzdGluYXRpb25z
KGRvY3VtZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVu
ZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyLmNwcAppbmRleCA1NmEwMTFjNGNlZTk5Nzg5OTAxZmFkMzYzMDJiZTEw
YzM0NTY2NTI3Li4zYjg4MWRmYmIxNzE3ZjRlNDExYTZjNTM0NDU5NWZiZDNhYjQzMDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIGJvb2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjppc1NjaGVkdWxl
ZCgpIGNvbnN0CiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcihTZWNv
bmRzIGRlbGF5KQogewogICAgIEFTU0VSVCghaXNTY2hlZHVsZWQoKSk7Ci0gICAgbV9yZWZyZXNo
VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CisgICAgbV9yZWZyZXNoVGltZXIgPSBtYWtl
VW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJl
ZnJlc2hGaXJlZCk7CiAgICAgbV9yZWZyZXNoVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCmlu
ZGV4IGZhZGU2MmZjNzg3ZWU0ODk3OWFmNmRkODI2NjI3Nzk4MDRkMzc1MTcuLjZmMDYwODE3ODI2
ZWM1NmM2ZWU4YTVmOGNkMzk0NGVjMmQ0MTkwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXIKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4gY3JlYXRlKFBhZ2UmIHBhZ2UpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+KHBh
Z2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+
KHBhZ2UpOwogICAgIH0KIAogICAgIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcihQYWdlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDQyMzQxODI4MGVhMmVlM2M5
YmZkZmM5MWNkMTI3Yjk2OGViMWUxYmYuLjBkZWIwNjQxNDhmOTcyNmNkMzhiNDEwMDVkNTIyOTcy
NjBjMWM2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xODks
NyArMTg5LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KICAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIpOwog
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOworICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+
KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5h
dGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50
cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRyZXNz
QXNJUEFkZHJlc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBiNjg0
ODk2ZjM5ODg0NjI1NGExNzk3YWRjZGVkNjY2NjA1ZTg1ZDVjLi4yN2VlYTZjMGFiOTM4ZWJjOGY5
NjVkYWNiODIwMzExNDQzMTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGxheW91dFNjaGVkdWxlVGhy
ZXNob2xkID0gMjUwX21zOwogCiBTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZShQYWdlKiBwYWdl
KQogICAgIDogbV9wYWdlKG51bGxwdHIpCi0gICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMoc3Rk
OjptYWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQorICAgICwgbV9mb250R2VuZXJp
Y0ZhbWlsaWVzKG1ha2VVbmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKICAgICAsIG1fbGF5
b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAgICAgLCBtX21pbmltdW1ET01U
aW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAgLCBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6OmltYWdl
TG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBiOWNlOThjYzZjYTVjMjQ1NmNkYjk0ZjVkYzQxYjRk
MmI1MGU5OGY2Li42NTIzMTFkN2E1NWY1NTA3YTA1YWE0M2I2MmM4MDIwODcyMmRiYWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpmb3JFYWNoVXNlck1lc3NhZ2VI
YW5kbGVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgVXNlck1lCiAKIHZvaWQgVXNlckNvbnRlbnRDb250
cm9sbGVyOjphZGRVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVl
X3B0cjxVc2VyU2NyaXB0PiB1c2VyU2NyaXB0KQogewotICAgIGF1dG8mIHNjcmlwdHNJbldvcmxk
ID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYg
c2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJldHVy
biBtYWtlVW5pcXVlPFVzZXJTY3JpcHRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAg
ICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC0x
MDAsNyArMTAwLDcgQEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJTY3Jp
cHRzKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyU3R5bGVTaGVldChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1ZV9w
dHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0LCBVc2VyU3R5bGVJbmplY3Rpb25UaW1l
IGluamVjdGlvblRpbWUpCiB7Ci0gICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2Vy
U3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBz
dHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxkLCBbJl0g
eyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRlcmF0b3It
PnZhbHVlOwogICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclN0eWxl
U2hlZXQpKTsKIAogICAgIGlmIChpbmplY3Rpb25UaW1lID09IEluamVjdEluRXhpc3RpbmdEb2N1
bWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5jcHAK
aW5kZXggZjI1OWFlYjFhMGE5ZTVjZTdhMTM0ZjBkMTI2OWVjMzE0YzlhOWMzMS4uMzA0ZDk0YTc1
YmYzNjFkOGRkNDZmNmFmZmFmZTMxYzNlZjgyYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcApAQCAtNDMsOSArNDMsOSBAQCBXaGVlbEV2ZW50
RGVsdGFGaWx0ZXI6On5XaGVlbEV2ZW50RGVsdGFGaWx0ZXIoKSA9IGRlZmF1bHQ7CiBzdGQ6OnVu
aXF1ZV9wdHI8V2hlZWxFdmVudERlbHRhRmlsdGVyPiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNy
ZWF0ZSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdoZWVsRXZlbnREZWx0YUZpbHRlck1hYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXaGVl
bEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKaW5kZXggMTQ0NjYzY2FlOTU5NzljZmNjN2M0YTIyNDJlMWQxNjFkNjEwMjkyNS4uMTNjMzFm
NTc2NGI3YjIyNGEyYjdlYTU1YWUzM2E2YjM5ODZiOTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTU5Niw3ICs1OTYsNyBAQCB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphbmlt
YXRpb25XaWxsQmVSZW1vdmVkKEFuaW1hdGlvbkJhc2UmIGFuaW1hdAogfQogCiBDU1NBbmltYXRp
b25Db250cm9sbGVyOjpDU1NBbmltYXRpb25Db250cm9sbGVyKEZyYW1lJiBmcmFtZSkKLSAgICA6
IG1fZGF0YShzdGQ6Om1ha2VfdW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPihm
cmFtZSkpCisgICAgOiBtX2RhdGEobWFrZVVuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZT4oZnJhbWUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNzRlZWRjOTk2NmU5ZjgxYWNi
OTk2Y2YzNzY5ODNkYWI2ODU1NDBjNi4uYmFlYjI0NzY1NzE2NzM3Yjg0YTFjYzhmMTlkZTAxNzNm
MzY3ZTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHN0YXRpYyBpbmxpbmUg
c3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJs
ZW5kaW5nQ2xpCiB7CiAgICAgQVNTRVJUKGZyb20gJiYgdG8pOwogICAgIGlmIChmcm9tLT5zdHls
ZSgpICE9IHRvLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTaGFk
b3dEYXRhPigqdG8pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqdG8p
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJvbS0+
bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTaGFkb3dEYXRhPihibGVuZChmcm9tLT5sb2NhdGlvbigpLCB0by0+bG9jYXRpb24oKSwg
cHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5yYWRpdXMoKSwgdG8tPnJhZGl1cygpLCBw
cm9ncmVzcyksCiAgICAgICAgIGJsZW5kKGZyb20tPnNwcmVhZCgpLCB0by0+c3ByZWFkKCksIHBy
b2dyZXNzKSwKICAgICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20tPnN0eWxlKCksIHRvLT5zdHls
ZSgpLCBwcm9ncmVzcyksCkBAIC05NzQsMTUgKzk3NCwxNSBAQCBjbGFzcyBQcm9wZXJ0eVdyYXBw
ZXJWaXNpdGVkQWZmZWN0ZWRDb2xvciA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJC
YXNlCiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVydHlJ
RCBwcm9wLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lk
IChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3QgQ29s
b3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0
eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Q
cm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91
bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAgICAg
ICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29s
b3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1fd3Jh
cHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRl
cikpCisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBl
ckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAgICAg
fQogICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQg
cHJvcCwgTWF5YmVJbnZhbGlkQ29sb3JUYWcsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oipn
ZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYp
LAogICAgICAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRlcikoKSBj
b25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0dGVyKShjb25zdCBDb2xvciYpKQog
ICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKLSAgICAgICAgLCBt
X3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xv
cj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIoc3Rk
OjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwgdmlz
aXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCisgICAgICAgICwgbV93cmFwcGVyKG1ha2VVbmlx
dWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVy
KSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFwcGVy
TWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQog
ICAgIHsKICAgICB9CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0
IFJlbmRlclN0eWxlKiBiKSBjb25zdCBvdmVycmlkZQpAQCAtMTIyOSwxOSArMTIyOSwxOSBAQCBj
bGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5
V3JhcHBlckJhc2UgewogICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4o
cHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9u
LCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3Vu
ZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlX
cmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJv
cGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAm
RmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFhP
cmlnaW4sIEVkZ2U6OlJpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblk6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHBy
b3BlcnR5LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlvbiwg
JkZpbGxMYXllcjo6YmFja2dyb3VuZFlPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRZ
T3JpZ2luLCBFZGdlOjpCb3R0b20pOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdy
YXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9w
ZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZG
aWxsTGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWU9y
aWdpbiwgRWRnZTo6Qm90dG9tKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgot
ICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpbGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5
ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOworICAgICAgICAgICAg
bV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclByb3BlcnR5
V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgsICZG
aWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclBy
b3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3Bl
cnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJ
bWFnZSk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlx
dWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5
ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc3MCw3ICsxNzcwLDcgQEAg
Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBw
ZXJNYXAoKQogICAgICAgICAgICAgbG9uZ2hhbmRXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQobV9w
cm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJbmRleF0uZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNo
b3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdyYXBw
ZXJzKSkpOworICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VV
bmlxdWU8U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3ZlKGxvbmdo
YW5kV3JhcHBlcnMpKSk7CiAgICAgICAgIGluZGV4RnJvbVByb3BlcnR5SUQocHJvcGVydHlJRCkg
PSBhbmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQgKyBpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4
IDcwNDdlODNkZTc4NWRiODFiNmQ5OTBhOTQ4MzdiYTcxZDcyODI5YTAuLjhmMGY2YmY1M2IwM2Uw
OGY3MDMzMTY2ZWI4Yzc0ZDZiZjk3MjgzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVh
ZGVyLCBDb250ZW50U2VjdXJpCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBkYXRlU291
cmNlU2VsZihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgbV9z
ZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpOwotICAgIG1fc2Vs
ZlNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlPigq
dGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJp
dHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOworICAgIG1fc2Vs
ZlNvdXJjZSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhpcywg
bV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlPcmln
aW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOwogfQogCiB2b2lkIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCBkZGJkOGNkZTI3ODBlOTJkYmEyMGUwYWJk
OTljZjA0OTg0M2Y0YzRkLi5jMDE1NmRkZjAxYzk0N2U1MDRiNTY5ZDBhNDExNjk4YzU1OGYzZWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3QoQ29udGVudFNlCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVh
dGUoQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHR5cGUsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UG9saWN5RnJvbSBmcm9tKQogewotICAgIGF1dG8gZGlyZWN0aXZlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBlKTsK
KyAgICBhdXRvIGRpcmVjdGl2ZXMgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CiAgICAgZGlyZWN0aXZlcy0+cGFyc2UoaGVhZGVy
LCBmcm9tKTsKIAogICAgIGlmICghY2hlY2tFdmFsKGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVj
dGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkpKSB7CkBAIC00NTIsNyArNDUyLDcg
QEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJlY3Rp
dmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAgbV9wb2xpY3kucmVwb3J0RHVwbGlj
YXRlRGlyZWN0aXZlKG5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRpcmVjdGl2
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVl
KTsKKyAgICBkaXJlY3RpdmUgPSBtYWtlVW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KCp0aGlzLCBu
YW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6YXBwbHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBz
YW5kYm94UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNv
dXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVz
b3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKaW5kZXggOGI4N2JjYWRkNTFmYzZmN2Y3MGI5NjI3
MmMzZGYyMzI0MTk2ZGNiYi4uYzA3YjEyNzY5Y2QwNGJhN2IzMWY4OGM0NmE5ZjA2YjZhZDZiNDlk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3Zl
cmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNh
Z2VPdmVybGF5TGludXguY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgY2xhc3MgUmVzb3VyY2VVc2Fn
ZU92ZXJsYXlQYWludGVyIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewogCiB2
b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotICAgIG1f
b3ZlcmxheVBhaW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5UGFp
bnRlcj4oKnRoaXMpOworICAgIG1fb3ZlcmxheVBhaW50ZXIgPSBtYWtlVW5pcXVlPFJlc291cmNl
VXNhZ2VPdmVybGF5UGFpbnRlcj4oKnRoaXMpOwogICAgIG1fcGFpbnRMYXllciA9IEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZShvdmVybGF5KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFwaGlj
c0xheWVyRmFjdG9yeSgpLCAqbV9vdmVybGF5UGFpbnRlcik7CiAgICAgbV9wYWludExheWVyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbV9wYWludExheWVyLT5zZXRTaXpl
KHsgbm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdodCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFj
Lm1tCmluZGV4IGQ3YWRmZmQ3MmY5ZmE4ZmU5N2FmY2RhMDcxOGQ4M2M2ZTA5MDg1MGMuLjA4NjNh
ZDI2NzI1ZDY1NTQ3NTJiN2FjMjE0OGVlZDFjNmRmYzIzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
UGFnZU1hYy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlhbGl6
ZSgpCiB2b2lkIFBhZ2U6OmFkZFNjaGVkdWxlUGFpcihSZWY8U2NoZWR1bGVQYWlyPiYmIHBhaXIp
CiB7CiAgICAgaWYgKCFtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycykKLSAgICAgICAgbV9zY2hlZHVs
ZWRSdW5Mb29wUGFpcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+KCk7
CisgICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gbWFrZVVuaXF1ZTxTY2hlZHVsZVBh
aXJIYXNoU2V0PigpOwogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5hZGQocGFpci5wdHIo
KSk7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcAppbmRleCAzMDZjZmVkMTljZTZkMDBiNjJhODUyNDk3MDAyOGI4MDQ1ZmFkODIzLi4wMGFm
Mzk0NzhkYzc1ZjcwMjljMjQ4NDU0ZWYwMWFiMGM2YzdkMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqIHBhZ2UpCiAgICAg
OiBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKQogICAgICwgbV91cGRhdGVOb2RlU2Nyb2xsUG9z
aXRpb25UaW1lcigqdGhpcywgJkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9s
bFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmlyZWQpCi0gICAgLCBtX3Njcm9sbGluZ1N0
YXRlVHJlZShzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhpcykpCisgICAg
LCBtX3Njcm9sbGluZ1N0YXRlVHJlZShtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhp
cykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IDc2NDBkNTVkOTZhM2Yw
OTU5YjkzMWVmMDQzM2VjMTVmYTIwN2RiZDQuLmM4OTBmOWViYTAwNGNhODc4MDE0MWI4NWNlZWUw
MDU1NjJlMmU0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5h
dGlvbk9mZnNldCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVu
dFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmll
d3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0
aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0
UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcApp
bmRleCA5NjgyZDJjMWJjZWUzNzU3MTNjMzQ2ZDNlMzNjZDRkYzEzNWFmYzc4Li5iZTU3YzliODY5
ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0MGM4MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGluZ1N0
YXRlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7CiAK
ICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5p
cXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hp
bGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7
CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiAgICAgc2V0UHJv
cGVydHlDaGFuZ2VkKENoaWxkTm9kZXMpOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgU2Ny
b2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNo
aWxkTm9kZSwgc2l6ZV90CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pIHsKICAgICAgICAgQVNTRVJU
KCFpbmRleCk7Ci0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxS
ZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtl
VW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgfQogCiAg
ICAgaWYgKGluZGV4ID4gbV9jaGlsZHJlbi0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAppbmRleCBmNjFlMjhl
MGVjNTAzMDEyYjM3MmZiMjU1NjlhOGNiN2RkNTNhYTcwLi43MTU3ZTE2ODYwZjQ5YzkxZGRhMzVi
YmM0ZWFmZTk4MTllYWNiZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1pdChM
YXllclJlcHJlc2VudGF0aQogICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVzIGFu
ZCByZXNldHMgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSwgYnV0IGxlYXZlcyB0aGUgdHJlZSBzdHJ1
Y3R1cmUgaW50YWN0LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRy
ZWVTdGF0ZUNsb25lID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUgPSBt
YWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKICAgICB0cmVlU3RhdGVDbG9uZS0+c2V0
UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbihwcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9u
KTsKIAogICAgIGlmIChtX3Jvb3RTdGF0ZU5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKaW5kZXggZWE3NGUyY2E0MjQyOWE4
ZTJiZTlmOWEzNzllMzY3ZGE0ZGRkYTNkMS4uNzI5NjE1YTY5ZjAxMjI2MzE1MTQ3ZWNmZGI1NTI4
YjAxOTlmMzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVO
b2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+JiYgY2hpbGROb2RlKQogICAg
IGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQotICAg
ICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGlu
Z1RyZWVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxS
ZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoV1RG
TW92ZShjaGlsZE5vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
bW0KaW5kZXggMWM3YWI3NmExNTFlNjM1MGQ4YjYxNGMzNmQwNWJjZTY1YzZjOTU4NC4uYjQzZWE5
OTVmYWY2YjQ3MDMzNWZiZjA3YTIwODZhNmIzNWY3MGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIHN0YXRpYyBib29sIGdFbmFibGVQ
bGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9IHRydWU7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNp
emUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFs
RGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFs
T2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKaW5k
ZXggNGZmOTgwNGVhZWMxMzA2YjI2OGEyNDVmMjc3MWExMTJlMjhkMmExZS4uM2ZjNDMxYTQ3NDYx
ZDhjNDQzZGI0YjYyMmQ2ZWE5MDYzNGRhMGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGgu
Y3BwCkBAIC0yODgsOSArMjg4LDkgQEAgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xl
bmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMg
ZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKLSAgICBs
ZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVu
Z3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVz
c2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7
CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxl
bmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVu
ZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKKyAgICBhdXRvIG9w
ID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwg
Q2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZh
bHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApAQCAtMzAyLDcg
KzMwMiw3IEBAIHN0YXRpYyBMZW5ndGggYmxlbmRNaXhlZFR5cGVzKGNvbnN0IExlbmd0aCYgZnJv
bSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyCiAgICAgaWYgKHByb2dyZXNzID49IDEu
MCkKICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAKLSAgICBhdXRvIGJsZW5kID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3Mp
OworICAgIGF1dG8gYmxlbmQgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGg+
KGZyb20sIHRvLCBwcm9ncmVzcyk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVl
OjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKaW5kZXggNTUy
YjEyZjZjMWU4Y2RhNmZmZWE2NDc4NjkyMjI5ZWE5M2VkMTdjYS4uOGUzNWUzMDRjMWU3MjU3YmM2
NGM2YWQxMGVkZGU5NjQyMDRlNjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiAoIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUMpKSB8
fCAhSEFWRShNRURJQV9QTEFZRVIpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3Rl
bmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJD
bGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21t
YW5kTGlzdGVuZXI+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFu
ZExpc3RlbmVyPihjbGllbnQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBkOTE1NGQ5MzUxYTJmMzM2NmRkZDA1ZmU2MGZkZWJi
OWMxYTFlNzM4Li5mOGVkYzg4MmQ3ZjM2MDAyZTE5ODUxMGQ4MWI4ZWIzNGFhNTAwN2M4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC00Myw3ICs0Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpICYm
ICFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmlt
YXRvcj4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dG9yPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGM2MmFkODM0ZTZiMzgwOGUxZWNkYThiYTEzMTJk
M2Q5NTcwNWU5NmEuLjk2ZDBmMzAwYjM0MThlNjA4MjFkYTJkYTJhNjQxODljNGRlZTBiM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwLDcgKzgw
LDcgQEAgU2Nyb2xsQW5pbWF0b3ImIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvcigpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3Njcm9sbEFuaW1hdG9yKSB7CiAgICAgICAgIGlmICh1c2VzTW9j
a1Njcm9sbEFuaW1hdG9yKCkpIHsKLSAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJl
YSY+KCp0aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworICAgICAgICAgICAg
bV9zY3JvbGxBbmltYXRvciA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25zdF9j
YXN0PFNjcm9sbGFibGVBcmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNzYWdl
KSB7CiAgICAgICAgICAgICAgICAgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShtZXNzYWdl
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKQEAgLTQzNSw3ICs0MzUsNyBAQCBi
b29sIFNjcm9sbGFibGVBcmVhOjpoYXNMYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIFNjcm9sbGFibGVBcmVhOjplbnN1cmVTbmFw
T2Zmc2V0c0luZm8oKQogewogICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCi0gICAgICAgIG1f
c25hcE9mZnNldHNJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88
TGF5b3V0VW5pdD4+KCk7CisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gbWFrZVVuaXF1ZTxT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+KCk7CiAgICAgcmV0dXJuICptX3NuYXBP
ZmZzZXRzSW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxE
YXRhLmNwcAppbmRleCBhMjgwMTBlY2ZlNWEzNjdhZDlkMGIyOWEyMDA1NjNhMGY1NjFkNTYwLi4y
N2E3MzY0MTZiYTA0YzA1M2MyZTc3ZGIyYzU1ODE0NDQwZDJmMGY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtNDAsMTQgKzQwLDE0IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEo
KQotICAgIDogbV9jYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKHN0ZDo6bWFrZV91bmlx
dWU8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKKyAgICA6IG1fY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhtYWtlVW5pcXVlPENhY2hlZFJlc291cmNlUmVxdWVzdElu
aXRpYXRvcnM+KCkpCiAgICAgLCBtX2V2ZW50TmFtZXMoRXZlbnROYW1lczo6Y3JlYXRlKCkpCi0g
ICAgLCBtX3RocmVhZFRpbWVycyhzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZFRpbWVycz4oKSkKLSAg
ICAsIG1fcXVhbGlmaWVkTmFtZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8UXVhbGlmaWVkTmFtZUNh
Y2hlPigpKQorICAgICwgbV90aHJlYWRUaW1lcnMobWFrZVVuaXF1ZTxUaHJlYWRUaW1lcnM+KCkp
CisgICAgLCBtX3F1YWxpZmllZE5hbWVDYWNoZShtYWtlVW5pcXVlPFF1YWxpZmllZE5hbWVDYWNo
ZT4oKSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2lzTWFpblRocmVhZChpc01haW5UaHJlYWQo
KSkKICNlbmRpZgotICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1Uoc3RkOjptYWtlX3VuaXF1ZTxJ
Q1VDb252ZXJ0ZXJXcmFwcGVyPigpKQorICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1UobWFrZVVu
aXF1ZTxJQ1VDb252ZXJ0ZXJXcmFwcGVyPigpKQogewogICAgIC8vIFRoaXMgY29uc3RydWN0b3Ig
d2lsbCBoYXZlIGJlZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgYmVpbmcgY2Fs
bGVkIG9uCiAgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2Ug
cGVyIHRocmVhZCAtIHRoaXMgbWFrZXMgdGhpcyBhIGNvbnZlbmllbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAppbmRleCAyZjg5MmQ2YjE5YWJhNDIzMGU5MjRj
NzYxODczOGZjNmNiNDhmN2VjLi5lNzBkNDZkMGI5ZjI0MDdmOTA4NTQ4ZmE4ZjJlOThjOWRhNDU2
M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBAIC02
NCw3ICs2NCw3IEBAIEF1ZGlvQnVzOjpBdWRpb0J1cyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgbGVuZ3RoLCBib29sIGFsbG9jYXRlKQogICAgIG1fY2hhbm5lbHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgYXV0byBjaGFubmVsID0g
YWxsb2NhdGUgPyBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihudWxscHRyLCBsZW5ndGgpOworICAgICAgICBhdXRv
IGNoYW5uZWwgPSBhbGxvY2F0ZSA/IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihsZW5ndGgpIDog
bWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0aCk7CiAgICAgICAgIG1fY2hh
bm5lbHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoY2hhbm5lbCkpOwogICAgIH0KIApAQCAtNDg5
LDcgKzQ4OSw3IEBAIHZvaWQgQXVkaW9CdXM6OmNvcHlXaXRoR2FpbkZyb20oY29uc3QgQXVkaW9C
dXMgJnNvdXJjZUJ1cywgZmxvYXQqIGxhc3RNaXhHYWluLCBmCiAKICAgICBpZiAoZnJhbWVzVG9E
ZXppcHBlcikgewogICAgICAgICBpZiAoIW1fZGV6aXBwZXJHYWluVmFsdWVzLmdldCgpIHx8IG1f
ZGV6aXBwZXJHYWluVmFsdWVzLT5zaXplKCkgPCBmcmFtZXNUb0RlemlwcGVyKQotICAgICAgICAg
ICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJh
eT4oZnJhbWVzVG9EZXppcHBlcik7CisgICAgICAgICAgICBtX2RlemlwcGVyR2FpblZhbHVlcyA9
IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0RlemlwcGVyKTsKIAogICAgICAg
ICBmbG9hdCogZ2FpblZhbHVlcyA9IG1fZGV6aXBwZXJHYWluVmFsdWVzLT5kYXRhKCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXNUb0RlemlwcGVyOyArK2kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKaW5kZXggODQ3ZTUy
YWE4MjQyNTJkMWJjYmExNzNkZGI1NzdjN2E1YjI5NTNlMi4uN2I5ODkzZDM4YWM0MTc0NTMxNzQx
Yjc3MjRjNmZmMmFiZDAxZGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9DaGFubmVsLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgQXVkaW9DaGFubmVsIGZpbmFs
IHsKICAgICAgICAgLCBtX3Jhd1BvaW50ZXIoMCkKICAgICAgICAgLCBtX3NpbGVudCh0cnVlKQog
ICAgIHsKLSAgICAgICAgbV9tZW1CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4obGVuZ3RoKTsKKyAgICAgICAgbV9tZW1CdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4obGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBBICJibGFuayIgYXVkaW8gY2hhbm5l
bCAtLSBtdXN0IGNhbGwgc2V0KCkgYmVmb3JlIGl0J3MgdXNlZnVsLi4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKaW5kZXggODY5MDZiYTUx
MjQ3NTg2OTJjNjgzZTJiYzkwMzgzNTAxZWFiOGZkOS4uMjg0YzA1NDk0MzI1OTM0NGVhY2UzMjQx
OGFkYTliODMwM2RhMmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvUmVzYW1wbGVyLmNwcApAQCAtMzksNyArMzksNyBAQCBjb25zdCBkb3VibGUgQXVkaW9S
ZXNhbXBsZXI6Ok1heFJhdGUgPSA4LjA7CiBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIo
KQogICAgIDogbV9yYXRlKDEuMCkKIHsKLSAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICBtX2tlcm5lbHMuYXBwZW5k
KG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKICAgICBtX3NvdXJjZUJ1
cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgMCwgZmFsc2UpOwogfQogCkBAIC00Nyw3ICs0Nyw3IEBA
IEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
KQogICAgIDogbV9yYXRlKDEuMCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICAgICAgbV9rZXJuZWxzLmFw
cGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAKICAgICBtX3Nv
dXJjZUJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgMCwgZmFsc2UpOwog
fQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVs
cyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgIC8vIEZpcnN0IGRlYWwgd2l0aCBhZGRp
bmcgb3IgcmVtb3Zpbmcga2VybmVscy4KICAgICBpZiAobnVtYmVyT2ZDaGFubmVscyA+IGN1cnJl
bnRTaXplKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGN1cnJlbnRTaXplOyBpIDwgbnVt
YmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgICAgICAgICBtX2tl
cm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKICAg
ICB9IGVsc2UKICAgICAgICAgbV9rZXJuZWxzLnJlc2l6ZShudW1iZXJPZkNoYW5uZWxzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ci5jcHAKaW5kZXggYjI1NTE4ZDg4MGE4ZDJkOTk0YTc2OTZiOGZhZGE5ZTU1NDhjMjllYi4uNTEz
Nzk5YTg1MTJmNDI3YjRlNGI4ZDliMjk0NWE5NGQzNDkxODc3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCkBAIC0yNzEs
OCArMjcxLDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICBtX3ByZUZpbHRlclBhY2tzLmNsZWFyKCk7
CiAgICAgbV9wb3N0RmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIG1fcHJlRmlsdGVyUGFja3Mu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7Ci0gICAgICAg
IG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVy
UGFjazQ+KCkpOworICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFpl
cm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQo
bWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAgICB9CiAKICAgICBtX3NvdXJj
ZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVs
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCA3MzRiMDY2Y2RhNDhiYzJjN2E3OWVkZjUwN2Qw
NmMwNTZjNzBhMDkwLi5hZmVkYjdiNGNkMGE1YTYxZDFhOWZlMjc4YzM0MDM4M2Y5OGUyMWIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBEeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cykKIAogICAgIG1fcHJlRGVsYXlCdWZmZXJzLmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9wcmVEZWxheUJ1ZmZl
cnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihNYXhQcmVEZWxheUZy
YW1lcykpOworICAgICAgICBtX3ByZURlbGF5QnVmZmVycy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRp
b0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVzKSk7CiB9CiAKIHZvaWQgRHluYW1pY3NDb21w
cmVzc29yS2VybmVsOjpzZXRQcmVEZWxheVRpbWUoZmxvYXQgcHJlRGVsYXlUaW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCmluZGV4IDRjMDJiNjk5MmIwNjM4
M2I4MDM1NzM3ODc4ZGJmNjVhMjZmYjljMzEuLjRjMTUyMDY3ZDQ0YWM0Yjg1NDE5MjFhYWVkMjk1
OTgyYjk2OTM3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZG
VEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBGRlRGcmFtZTo6ZG9QYWRkZWRGRlQoY29uc3QgZmxv
YXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIAogc3RkOjp1bmlxdWVfcHRyPEZGVEZyYW1lPiBG
RlRGcmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lMSwg
Y29uc3QgRkZURnJhbWUmIGZyYW1lMiwgZG91YmxlIHgpCiB7Ci0gICAgYXV0byBuZXdGcmFtZSA9
IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZyYW1lMS5mZnRTaXplKCkpOworICAgIGF1dG8g
bmV3RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKIAogICAg
IG5ld0ZyYW1lLT5pbnRlcnBvbGF0ZUZyZXF1ZW5jeUNvbXBvbmVudHMoZnJhbWUxLCBmcmFtZTIs
IHgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFi
YXNlTG9hZGVyLmNwcAppbmRleCBmNDViZTg0N2NlNzEwZGNlZGEyZTBlYzEwNmI3NWJmMjY4NTc4
OWNkLi5hNDc0YTcwYzQwODUyYWUyZTFmOWY1OGE0OWEwMDAzNjE1ODBiMzE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAK
QEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQoKQogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9ocnRmRGF0YWJhc2UuZ2V0KCkpIHsK
ICAgICAgICAgLy8gTG9hZCB0aGUgZGVmYXVsdCBIUlRGIGRhdGFiYXNlLgotICAgICAgICBtX2hy
dGZEYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2Ft
cGxlUmF0ZSk7CisgICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gbWFrZVVuaXF1ZTxIUlRGRGF0YWJh
c2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKaW5kZXggYzg0YWI5NzUxYTE0NTk4
OWEwMzc3ZmFkMWY0YTc1ZThmMTdlMmIyNC4uNjA1MjMyY2QxYTk5YzkyMzNkOWFkMTA0OWJhMzA3
ZTIxNzczOGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVs
ZXZhdGlvbi5jcHAKQEAgLTI0NCw4ICsyNDQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZh
dGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1Ygog
ICAgIGlmICghaXNFbGV2YXRpb25Hb29kKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExp
c3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6
bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAg
YXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90
YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5l
bExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICAvLyBMb2FkIGNvbnZvbHV0aW9u
IGtlcm5lbHMgZnJvbSBIUlRGIGZpbGVzLgogICAgIGludCBpbnRlcnBvbGF0ZWRJbmRleCA9IDA7
CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZF
bGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWIKICAgICAgICAgfQog
ICAgIH0KICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9uPihX
VEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2Ft
cGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShr
ZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3Jl
YXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24xLCBI
UlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMiwgZmxvYXQgeCwgZmxvYXQgc2FtcGxlUmF0ZSkK
QEAgLTI4NSw4ICsyODUsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVs
ZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbAogICAgICAgICAKICAg
ICBBU1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEuMCk7CiAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0
TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRo
cyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExp
c3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VV
bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBr
ZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemlt
dXRocyk7CiAKICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdEwxID0gaHJ0ZkVsZXZhdGlv
bjEtPmtlcm5lbExpc3RMKCk7CiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5lbExpc3RSMSA9IGhy
dGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0UigpOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRp
bmdTbGljZXMoSFJURkVsCiAgICAgLy8gSW50ZXJwb2xhdGUgZWxldmF0aW9uIGFuZ2xlLgogICAg
IGRvdWJsZSBhbmdsZSA9ICgxLjAgLSB4KSAqIGhydGZFbGV2YXRpb24xLT5lbGV2YXRpb25Bbmds
ZSgpICsgeCAqIGhydGZFbGV2YXRpb24yLT5lbGV2YXRpb25BbmdsZSgpOwogICAgIAotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwp
LCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGljX2Nhc3Q8aW50PihhbmdsZSksIHNhbXBsZVJh
dGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVs
TGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGljX2Nhc3Q8aW50PihhbmdsZSksIHNh
bXBsZVJhdGUpOwogfQogCiB2b2lkIEhSVEZFbGV2YXRpb246OmdldEtlcm5lbHNGcm9tQXppbXV0
aChkb3VibGUgYXppbXV0aEJsZW5kLCB1bnNpZ25lZCBhemltdXRoSW5kZXgsIEhSVEZLZXJuZWwq
ICZrZXJuZWxMLCBIUlRGS2VybmVsKiAma2VybmVsUiwgZG91YmxlJiBmcmFtZURlbGF5TCwgZG91
YmxlJiBmcmFtZURlbGF5UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktl
cm5lbC5jcHAKaW5kZXggZWRmNmM2MGQwZGI4MTRkOTRjMGY3MWI2MzA2ZTQzODI2NTNhYTRjNy4u
Mzc1NTIxNmFlMjg3YTcxYzc0MjkyOWE1M2M5NTkwOTZkYjFkYmI3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSFJU
Rktlcm5lbDo6SFJURktlcm5lbChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRTaXpl
LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mZnRGcmFtZSA9
IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOworICAgIG1fZmZ0RnJhbWUgPSBt
YWtlVW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKICAgICBtX2ZmdEZyYW1lLT5kb1BhZGRlZEZG
VChpbXB1bHNlUmVzcG9uc2UsIHRydW5jYXRlZFJlc3BvbnNlTGVuZ3RoKTsKIH0KIApAQCAtMTAz
LDcgKzEwMyw3IEBAIHNpemVfdCBIUlRGS2VybmVsOjpmZnRTaXplKCkgY29uc3QKIAogc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvQ2hhbm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3BvbnNl
KCkKIHsKLSAgICBhdXRvIGNoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4o
ZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIGNoYW5uZWwgPSBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4o
ZmZ0U2l6ZSgpKTsKICAgICBGRlRGcmFtZSBmZnRGcmFtZSgqbV9mZnRGcmFtZSk7CiAKICAgICAv
LyBBZGQgbGVhZGluZyBkZWxheSBiYWNrIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXggYmJiZjE2NDQ2
MjA3NjM5ZTM1Y2Y3OTU2NDgyODI2M2QzZTkzNzNhZS4uNWJmOWFiOTVkMDE1NzUwMDgxNWQ2MTMx
YWIxZDg5NzQxYmUxZmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIE11bHRp
Q2hhbm5lbFJlc2FtcGxlcjo6TXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZhY3Rv
ciwgdW5zaWduZWQgbnVtYmVyCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJlc2Ft
cGxlci4KICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8
IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAgICAg
ICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9y
KSk7CiB9CiAKIHZvaWQgTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291cmNl
UHJvdmlkZXIqIHByb3ZpZGVyLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5u
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAppbmRleCBh
YzcyODZhYzlhMDYwYjc1MzRjYjJlZGU5MjFkNmNiZDc3YTk3YTg4Li40MGI5ZDAxZGMxODRiOTZk
NWRmM2FiOWI3ZjQwOTQ2M2E5NzgzNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1Bhbm5lci5jcHAKQEAgLTQzLDExICs0MywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVyPiBQ
YW5uZXI6OmNyZWF0ZShQYW5uaW5nTW9kZWxUeXBlIG1vZGVsLCBmbG9hdCBzYW1wbGVSYXRlLAog
CiAgICAgc3dpdGNoIChtb2RlbCkgewogICAgIGNhc2UgUGFubmluZ01vZGVsVHlwZTo6RXF1YWxw
b3dlcjoKLSAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxFcXVhbFBvd2VyUGFubmVy
PihzYW1wbGVSYXRlKTsKKyAgICAgICAgcGFubmVyID0gbWFrZVVuaXF1ZTxFcXVhbFBvd2VyUGFu
bmVyPihzYW1wbGVSYXRlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFBhbm5pbmdNb2Rl
bFR5cGU6OkhSVEY6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURlBhbm5l
cj4oc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpOworICAgICAgICBwYW5uZXIgPSBtYWtlVW5p
cXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggZTAyMzk0YWE1YjE0OWNkMTU5NjkxMmEyNTY4
MWZmNWVhNDRhZDhkMi4uYzhiZDY0YTQxYmY2MTJlODllM2MyMTRmYTIyZGNjNTk5NDhlNTRkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOwogfQog
CiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmIuY3BwCmluZGV4IDMwNDNmYzhhMDRkZjBkNzdjMTBhYTAzNzliZDI2YTM5ZDQ2Y2U2YmEuLjhh
Njc1NWM1NGFkMDBhM2E4MTAxODc0MjE2MmNjZDA3NGRlMTBlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUmV2ZXJi
Ojppbml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1bHNlUmVzcG9uc2VCdWZmZXIsIHNpemVfdCByZW5k
ZXJTbGljZVNpemUsCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1SZXNwb25zZUNoYW5u
ZWxzOyArK2kpIHsKICAgICAgICAgQXVkaW9DaGFubmVsKiBjaGFubmVsID0gaW1wdWxzZVJlc3Bv
bnNlQnVmZmVyLT5jaGFubmVsKGkpOwogCi0gICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwg
bWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7
CisgICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQobWFrZVVuaXF1ZTxSZXZlcmJDb252b2x2ZXI+
KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhh
c2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7CiAKICAgICAgICAgY29udm9sdmVyUmVuZGVyUGhh
c2UgKz0gcmVuZGVyU2xpY2VTaXplOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCmluZGV4IDE0NWRmODFlMmE2YmEyYzJkYWE5
YmI0MWU2YjVjYWJhZjM4NWY5MWMuLmE5YzkzNWMxYTI4NWFiMTM2MmQ4ZmYxZGY4Y2ViYTVhN2U1
YWE3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZv
bHZlcihBdWRpb0NoYW5uZWwqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlbmRlclNsaQogCiAg
ICAgICAgIGJvb2wgdXNlRGlyZWN0Q29udm9sdmVyID0gIXN0YWdlT2Zmc2V0OwogCi0gICAgICAg
IGF1dG8gc3RhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdlPihyZXNw
b25zZSwgdG90YWxSZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFnZU9mZnNl
dCwgc3RhZ2VTaXplLCBmZnRTaXplLCByZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXplLCAmbV9h
Y2N1bXVsYXRpb25CdWZmZXIsIHVzZURpcmVjdENvbnZvbHZlcik7CisgICAgICAgIGF1dG8gc3Rh
Z2UgPSBtYWtlVW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90YWxSZXNw
b25zZUxlbmd0aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VTaXplLCBm
ZnRTaXplLCByZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRpb25CdWZm
ZXIsIHVzZURpcmVjdENvbnZvbHZlcik7CiAKICAgICAgICAgYm9vbCBpc0JhY2tncm91bmRTdGFn
ZSA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKaW5kZXggMGZkZTQyMWFmMmY4MmZkNDg3NGQ5NGY2YWYx
ZDYzNDcyMzljNjU2ZS4uNGZmOTUzYjI2MDQ5MTdkMzQ1MjAzOTQwNWI2NWRlMmJkNWExZWFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmNwcApAQCAtNTUsMTYgKzU1LDE2IEBAIFJldmVyYkNvbnZvbHZlclN0YWdlOjpS
ZXZlcmJDb252b2x2ZXJTdGFnZShjb25zdCBmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3Qs
CiAgICAgQVNTRVJUKGFjY3VtdWxhdGlvbkJ1ZmZlcik7CiAKICAgICBpZiAoIW1fZGlyZWN0TW9k
ZSkgewotICAgICAgICBtX2ZmdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZm
dFNpemUpOworICAgICAgICBtX2ZmdEtlcm5lbCA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZmdFNp
emUpOwogICAgICAgICBtX2ZmdEtlcm5lbC0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNlICsg
c3RhZ2VPZmZzZXQsIHN0YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEZGVENvbnZvbHZlcj4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0Q29udm9s
dmVyID0gbWFrZVVuaXF1ZTxGRlRDb252b2x2ZXI+KGZmdFNpemUpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVCghc3RhZ2VPZmZzZXQpOwogICAgICAgICBBU1NFUlQoc3RhZ2VMZW5ndGgg
PD0gZmZ0U2l6ZSAvIDIpOwogCi0gICAgICAgIG1fZGlyZWN0S2VybmVsID0gc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZmdFNpemUgLyAyKTsKKyAgICAgICAgbV9kaXJlY3RLZXJu
ZWwgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIpOwogICAgICAgICBt
X2RpcmVjdEtlcm5lbC0+Y29weVRvUmFuZ2UoaW1wdWxzZVJlc3BvbnNlLCAwLCBzdGFnZUxlbmd0
aCk7Ci0gICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXJlY3RD
b252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CisgICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0g
bWFrZVVuaXF1ZTxEaXJlY3RDb252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CiAgICAgfQogICAg
IG1fdGVtcG9yYXJ5QnVmZmVyLmFsbG9jYXRlKHJlbmRlclNsaWNlU2l6ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCA1YmY4ZmRhNmIyOTEyYjE4ZjEx
OTBkY2JlNzA4MmJmNjg0YmVlOThmLi4xYTU0OTVmZDc2NGQ5YzNjYzZlZGI1ODFmYTQ4MGVhZWFk
MTQ1OWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3Rp
bmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6
Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJlck9m
SW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyPihjYWxs
YmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rlc3Rp
bmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4IDhhZjg3
N2VjMmM0Y2EwYWJkMzA3NDgzNWY1NGIzNGFlYmYwNDMzYTIuLjRiZGU3ZTQxZTJiNjQzN2NkMGZm
NzI1ZTRkMDc5ZDY4Zjg5ZTdkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTgwLDcgKzgwLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNy
ZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoJXUs
ICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVSYXRl
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9TPihjYWxsYmFjaywg
c2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxl
UmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
U2Vzc2lvbklPUy5tbQppbmRleCA0ZTJhODg4OTRhZmJjYmEyMThjZjllNjczODc1NjlmMzJmOWNk
NTlkLi42Mzk4MjQwYmJkOGQ5NjczMDJkZjdlOWVjZmY0MDc1MDJkYTZlMjA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0K
QEAgLTcyLDcgKzcyLDcgQEAgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6QXVkaW9TZXNzaW9uUHJpdmF0
ZShBdWRpb1Nlc3Npb24qKQogfQogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAg
OiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0aGlzKSkK
KyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KHRoaXMpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggNzY0YTM0N2Y5ODI5ZTFlODQ3NWJkMmVhMTI4
MGFhMTc1MDI2ZWNmYy4uOWZlNjRiYWFhNDc4NGZlY2RhYjNkNmRkYjVlMjc4MzgxZTFlMDcwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGlu
YXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFjayYg
Y2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAgICAgIExPRyhN
ZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxlZCBv
dXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9E
ZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0KIAogZmxv
YXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNl
Lm1tCmluZGV4IDc3ZDQzMTY1NjY5OTBlOTAxYjkyMGJmNzc4ZDk2OWU5ZjE4ZjE4OGEuLjQxYWZl
MzlmMjMyYWU1ODgwODYwZjA4NGQ1NTZjYjRhNWQ4YWUyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5t
bQpAQCAtMTA4LDcgKzEwOCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0
SW5wdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmCiB7CiAgICAgQVNT
RVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX2lucHV0RGVzY3JpcHRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKKyAg
ICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4oZm9ybWF0KTsKICAgICBpZiAobV9vdXRwdXREZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJu
IHNldHVwQ29udmVydGVyKCk7CiAKQEAgLTEyMCw5ICsxMjAsOSBAQCBPU1N0YXR1cyBBdWRpb1Nh
bXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mCiAgICAgQVNTRVJUKG1faW5wdXREZXNjcmlwdGlvbik7CiAgICAgQVNTRVJUKGZvcm1h
dC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CisgICAgbV9vdXRw
dXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihmb3Jt
YXQpOwogICAgIGlmICghbV9yaW5nQnVmZmVyKQotICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFr
ZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKGZv
cm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVDb3VudCkpOwogICAgIG1f
c2NyYXRjaEJ1ZmZlciA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y3JlYXRlKG1fb3V0cHV0RGVz
Y3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbWF4aW11bVNhbXBsZUNvdW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25N
YWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
Yy5jcHAKaW5kZXggN2Y2ZWY5ZDMzZGIxZmI0N2U3Y2YxNGM1OTA0YTQ2MTEyYjE1MjIzMi4uY2Mw
NGYwYmUzMDk3NDk4YjgzNjZlOTI0MjA3M2VjZTNlMTk3NWFiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiB9OwogCiBBdWRpb1Nlc3Np
b246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8
QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCmluZGV4IGI5ODAzYmZhMDIzMjQzNTdj
MGRmZTA0NzMxM2QyYzNlYzMwNGNiOTIuLjdhNDdmNTYwOGJiYjZkZTlkMzc3M2IxN2U5OGU0NzY0
YTI0MjIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVj
b2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJD
Ri5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRE
ZWNvZGVyQ0Y+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2Rl
ckNGPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyQ0Y6OktleWVkRGVjb2RlckNGKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDFhNjI3ZWEwMGI5MmNiYWE2Y2Y3YzM1NWQ1
ZTQ0NWVjNDg2MWE0MTIuLjQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5
ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEtleWVkRW5jb2RlckNGPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVk
RW5jb2RlckNGPigpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlS
ZWY+IGNyZWF0ZURpY3Rpb25hcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCmluZGV4IGI2ODkyMjgwNWU1ZDM3M2Rl
N2YwYWVkNzg5MDgyNWFjY2NjMTIwMzkuLjA3YTQ1Y2FkNzhiNmQ0MzdmYWE4NDI1MjY5OWMwZDQ4
NmQ3OGVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJl
YWRTaGFyZWRUaW1lckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWlu
VGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgc2V0
dXBQb3dlck9ic2VydmVyKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIFBvd2VyT2Jz
ZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7CiAgICAgaWYgKCFwb3dlck9ic2VydmVyKQotICAgICAgICBw
b3dlck9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0U2hh
cmVkVGltZXIpLnJlbGVhc2UoKTsKKyAgICAgICAgcG93ZXJPYnNlcnZlciA9IG1ha2VVbmlxdWU8
UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CiAjZWxpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlv
bk5vdGlmaWNhdGlvbiA9IGZhbHNlOwogICAgIGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0aW9u
Tm90aWZpY2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDEyYWIzMjFj
YjQ3NzJiZTcwMDE1MDBmMTk2Zjc4YjZlYmU1ZTJiZDUuLjA1YzU1MjRkZWZjNzc3NjExZGY3NWY0
OWIxOTFkN2ZkNjlmNDU4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC02NSw3
ICs2NSw3IEBAIGJvb2wgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppbml0aWFsaXplKGNvbnN0IFVSTCogdXJsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRleCBhZTBiZDIwOWNjZDZmMzE3YzkxOTMyNWExNmEx
OGE5OWNkMTU3MmU0Li4wZDJhNjIxODZiNWE1NGUyYjg1MWZmOTZkNTI4MTAxZjg0NjZmNDA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpAQCAtNTAsNyArNTAsNyBAQCBib29sIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcj4oKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkhhbmRsZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggZTgzNjljNmU1
MDE2ZTIzY2Y4NzNiOTUzN2QyYWZiNGYwYmM2ODUyMi4uOGZlMzhhZDBjY2UyZmQ1NDJkMjk3MDE3
ZmRhMmQxY2IzNTViNzcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBTY3JvbGxDb250
cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25z
dCBWZWN0b3IKICAgICAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsKKyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUgPSBt
YWtlVW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwogICAgIH0KIAogICAgIGlmIChz
bmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBTdGF0ZS0+c25hcE9mZnNldHNGb3JB
eGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKaW5kZXggNTAzZjk3YjkyMDE4ZGE4N2MyNDg4OTFiMjI2NzlhYmI3MDA1
YjMwMC4uOTZjODUxMjkzNWFiOWI2OThlODk4NTUxNjNiYjZkMjJhYzliODJlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxDRE1Qcml2YXRlPiBDRE1GYWN0b3J5Q2xlYXJLZXk6OmNyZWF0ZUNETShjb25zdCBTdHJpbmcm
IGtleVN5c3RlCiAjZWxzZQogICAgIEFTU0VSVChzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0p
KTsKICNlbmRpZgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVDbGVhcktl
eT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CiB9CiAK
IGJvb2wgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCmlu
ZGV4IGY3MjBjZmQzMzQzZjliYWQzM2E0OTE5YTc4Zjg2NmY5ZDg2MmEwYWQuLjVhNmViNDA0Mzll
ZjU5MDU3MmE3YzI5ZWZjMzM4ZDkyZjIzOWM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxl
ckdhbWVwYWRQcm92aWRlci5tbQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdhbWVDb250cm9sbGVy
R2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIgKmNvbnRy
b2xsZQogICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIgY29u
dHJvbGxlciAlcCBhZGRlZCIsIGNvbnRyb2xsZXIpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBp
bmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgYXV0byBnYW1lcGFkID0gc3RkOjpt
YWtlX3VuaXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKKyAg
ICBhdXRvIGdhbWVwYWQgPSBtYWtlVW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29udHJv
bGxlciwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5kZXgp
CiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVy
LmNwcAppbmRleCA1NzQzOTFiNWMxMTFhMzJiZTkxMjVjYTZjZTA2MDBmNWQ2MzgyMjU3Li42ZDE0
YjZiMjE2MTBiODZjZTRjMDAxM2U1MDkxMWI4OGY5NWUxYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5j
cHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRk
ZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBhZFBy
b3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CiAKICAgICB1bnNpZ25lZCBpbmRleCA9
IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SElE
R2FtZXBhZD4gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8SElER2FtZXBhZD4oZGV2aWNlLCBp
bmRleCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQgPSBtYWtlVW5p
cXVlPEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rv
ci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsg
MSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVj
b2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERl
Y29kZXJHZW5lcmljLmNwcAppbmRleCBhNGEzMGI1MmFiZTQ4YWY4NTBkYzdjNzQ3YTNiY2RlMWQ1
MWZkYTVmLi4wZTU5NzIzMjFiNWY3M2Y1NzJiZDc5NjU4ODExZjAwM2E5NWVkNDkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2Vu
ZXJpYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgS2V5ZWREZWNvZGVyR2VuZXJpYzo6RGlj
dGlvbmFyeSB7CiAgICAgdXNpbmcgTm9kZSA9IFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBib29s
LCB1aW50MzJfdCwgdWludDY0X3QsIGludDMyX3QsIGludDY0X3QsIGZsb2F0LCBkb3VibGUsIFN0
cmluZywgc3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+
PjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRkKGNvbnN0IFN0cmlu
ZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxOb2Rl
PihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KKyAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcm
IGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3RkOjpm
b3J3YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5KSB7
IHJldHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KIAogcHJpdmF0ZToKQEAgLTc3LDcgKzc3LDcgQEAg
c3RhdGljIGJvb2wgcmVhZFNpbXBsZVZhbHVlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRl
Y29kZXIsIEtleWVkRGVjb2RlckdlbmUKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4g
S2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEs
IHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRhdGEs
IHNpemUpOwogfQogCiBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpAQCAtODYsNyArODYsNyBAQCBLZXllZERl
Y29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogICAgIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGUgdHlwZTsKICAgICBTdHJp
bmcga2V5OwogCi0gICAgbV9yb290RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlv
bmFyeT4oKTsKKyAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5Pigp
OwogICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChtX3Jvb3REaWN0aW9uYXJ5LmdldCgpKTsK
IAogICAgIGJvb2wgb2sgPSB0cnVlOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEtleWVkRGVjb2Rlckdl
bmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgYXV0byogY3VycmVudERpY3RpbmFyeSA9IG1fZGljdGlvbmFyeVN0YWNrLmxhc3QoKTsK
LSAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGljdGlv
bmFyeT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8RGlj
dGlvbmFyeT4oKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdEaWN0
aW9uYXJ5LmdldCgpKTsKICAgICAgICAgICAgIGN1cnJlbnREaWN0aW5hcnktPmFkZChrZXksIFdU
Rk1vdmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYsMTMgKzE1
NiwxMyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgb2sgPSByZWFkU3RyaW5nKGRl
Y29kZXIsIGtleSk7CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXk+KCk7
CisgICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheT4oKTsKICAgICAg
ICAgICAgIG1fYXJyYXlTdGFjay5hcHBlbmQobmV3QXJyYXkuZ2V0KCkpOwogICAgICAgICAgICAg
bV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0FycmF5KSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEtleWVkRW5jb2Rlckdl
bmVyaWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50OiB7Ci0gICAgICAgICAgICBhdXRvIG5ld0Rp
Y3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICBh
dXRvIG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgICAgICAg
ICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7CiAgICAgICAg
ICAgICBtX2FycmF5U3RhY2subGFzdCgpLT5hcHBlbmQoV1RGTW92ZShuZXdEaWN0aW9uYXJ5KSk7
CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDJmODQxMDQ3NDYzOTU1OGYy
OTVlODFhNTE3MTlhODczNGIzMmQ1OGEuLjIxY2MxZWJlNGE5MDFhMTNjNzQ0MDNkYzAxY2YyZmM4
MTgxMzAxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6ZW5j
b2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJp
Yz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmljPigpOwogfQog
CiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtl
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5p
bWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xs
QW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCA3YWU2NWM1YThkMzA5ZTNkZWVmNTNjZThjZjFlMzAy
NDI2ZDI3YzE0Li4yMDhhZjdiODQ3OWVjYWVmNTUzMGNjYzU1N2I3MzZlYmFiY2JjYjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2Vu
ZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmlt
YXRvckdlbmVyaWMuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMg
c2Nyb2xsQ2FwdHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9y
R2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFu
aW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvckdlbmVy
aWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEp
CiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fb3ZlcmxheVNj
cm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpvdmVy
bGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKLSAgICBtX2tpbmV0aWNBbmltYXRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJs
ZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX2tpbmV0aWNBbmlt
YXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJsZUFy
ZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICNpZiBFTkFCTEUoU01PT1RIX1ND
Uk9MTElORykKICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICAgICAgbV9z
bW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CkBAIC03Myw3ICs3
Myw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdB
bmltYXRpb24oKQogICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlv
blNtb290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9h
dFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8
U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3NpdGlv
biwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogICAgICAgICB1cGRhdGVQb3NpdGlv
bihXVEZNb3ZlKHBvc2l0aW9uKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAppbmRleCBlN2RkMTkxNDA0MTcxOTY4
ZjkwZDZmZWEzMzU0ZTE0Y2VmNmY1NTY3Li4zNjFlOWRmMzI0NWJlNTY1YjBlMmE0MWRmMThiMjZm
ZmJjNzE5Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RGVjb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRE
ZWNvZGVyR2xpYi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckdsaWI6Oktl
eWVkRGVjb2RlckdsaWIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3
NDA0YmNiZDQ0OWFhNDkyMWI4Y2UyYjdlMDE4NDQ5NTAxMDZmNjgwLi43MGQyNGMxMTkzZjhlNWM3
MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6
OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2Rlckds
aWI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyR2xpYj4oKTsKIH0KIAog
S2V5ZWRFbmNvZGVyR2xpYjo6S2V5ZWRFbmNvZGVyR2xpYigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZjFjOTBlNTk4ODkzYWRh
ODM0NzlmYzdiMzgzYTkwYTUzNWJmMmE5OS4uYjJiZDQ3Y2IxNjE0Y2RhZTVkODllZWExN2I0MmM0
Nzg2YmMyZDliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNsZWFy
VGltZXIoKQogdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQogewog
ICAgIEFTU0VSVCghbV9mcmFtZVRpbWVyKTsKLSAgICBtX2ZyYW1lVGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKKyAg
ICBtX2ZyYW1lVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjph
ZHZhbmNlQW5pbWF0aW9uKTsKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7
CiB9CiAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlv
bigpCiB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spCiB7CiAgICAgaWYgKCFtX2RlY29kaW5nQ2FsbGJhY2tzKQotICAgICAgICBtX2RlY29k
aW5nQ2FsbGJhY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwg
MT4+KCk7CisgICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBtYWtlVW5pcXVlPFZlY3RvcjxG
dW5jdGlvbjx2b2lkKCk+LCAxPj4oKTsKIAogICAgIG1fZGVjb2RpbmdDYWxsYmFja3MtPmFwcGVu
ZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDBkMzU1NjE4
OTcwZmIyNzdmNzJlNzg5OTBlM2Y0ZjJhMjE2ZmJjNjkuLjM1M2ZjYTY2MDEzMjY0YjAyNDYyYTU3
MTIyNGQwNWExODFkOTY4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNzcsNyArNzcsNyBA
QCBjbGFzcyBUZXh0TGF5b3V0IHsKICAgICBUZXh0TGF5b3V0KFJlbmRlclRleHQmIHRleHQsIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB4UG9zKQogICAgICAgICA6IG1fZm9udChmb250
KQogICAgICAgICAsIG1fcnVuKGNvbnN0cnVjdFRleHRSdW4odGV4dCwgeFBvcykpCi0gICAgICAg
ICwgbV9jb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleFRleHRDb250cm9sbGVyPiht
X2ZvbnQsIG1fcnVuLCB0cnVlKSkKKyAgICAgICAgLCBtX2NvbnRyb2xsZXIobWFrZVVuaXF1ZTxD
b21wbGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUpKQogICAgIHsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggYzQ0MWU1
NTNjM2FjNmY0NjRiZDM1YWE5YTkwMjdjMGI0Yjg1ZTVlMS4uYTI5MjMxZTg3OTc1ZmEzMTllODY0
NTQxNzkwYjQ4MjU0NDUzYTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKQEAgLTM5MCw3ICszOTAsNyBAQCBHbHlwaERhdGEgRm9udDo6Z2x5cGhEYXRhRm9y
Q2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKSBjb25zdAogYXV0byBGb250OjplbnN1cmVEZXJp
dmVkRm9udERhdGEoKSBjb25zdCAtPiBEZXJpdmVkRm9udHMmCiB7CiAgICAgaWYgKCFtX2Rlcml2
ZWRGb250RGF0YSkKLSAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PERlcml2ZWRGb250cz4oKTsKKyAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBtYWtlVW5pcXVl
PERlcml2ZWRGb250cz4oKTsKICAgICByZXR1cm4gKm1fZGVyaXZlZEZvbnREYXRhOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNmU4NGU2YTdkOThiOGNj
YzMzY2JmM2M4MTc3N2JlM2VmZTJjN2ZhNi4uZjhiODIzMzVkZWUxMmI3NzU4ZTYwYzBhYzdkYmZl
YmRhYmQzYWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAt
MzM4LDcgKzMzOCw3IEBAIEFMV0FZU19JTkxJTkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0Zvckds
eXBoKEdseXBoIGdseXBoKSBjb25zdAogCiAgICAgYm91bmRzID0gcGxhdGZvcm1Cb3VuZHNGb3JH
bHlwaChnbHlwaCk7CiAgICAgaWYgKCFtX2dseXBoVG9Cb3VuZHNNYXApCi0gICAgICAgIG1fZ2x5
cGhUb0JvdW5kc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVj
dD4+KCk7CisgICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhNZXRy
aWNzTWFwPEZsb2F0UmVjdD4+KCk7CiAgICAgbV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRyaWNz
Rm9yR2x5cGgoZ2x5cGgsIGJvdW5kcyk7CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDA3YTEwODc1
YzZmOGQyNDhjY2U2ZGQ4MTg2MjI5ZDdkYTljY2Y5ZWIuLjgyZjBiNjE5OThjNjkwYzRmZDFjMjE4
M2E0MTBhOTI2MDRkZDJhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZv
bnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvCiAgICAgICAgICAgICAgICAgaXQgPSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5maW5kKGtl
eSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ICE9IGZvbnRQbGF0Zm9ybURhdGFDYWNoZSgp
LmVuZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0
ZU5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgaXQtPnZhbHVlID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRh
PigqZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCmluZGV4IDcyNzRkYjBkYjMyYjNiNDFiM2UwZTFiMWVkMGZiMmFlYThiMzZh
M2IuLjY0ODE4ZjRiNTE1NWQ0MmJmYWM4MWI2MWY0YjVmOWNkZWE1NDUyZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI1NCw3
ICsyNTQsNyBAQCBzdGF0aWMgUmVmPEZvbnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRDYWNo
ZWRGb250cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aQogICAgICAgICByZXR1cm4gYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS0+Zm9udHMuZ2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRyeSA9
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRz
OjpjcmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CisgICAgbmV3RW50cnkgPSBtYWtlVW5p
cXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRz
OjpjcmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CiAgICAgUmVmPEZvbnRDYXNjYWRlRm9u
dHM+IGdseXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQoKTsKIAogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB1bnJlZmVyZW5jZWRQcnVuZUludGVydmFsID0gNTA7CkBAIC0zMjYsOSArMzI2LDkg
QEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6
OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6RGlz
cGxheUxpc3Q+KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0IHJlY29yZGluZ0NvbnRleHQoWyZdKEdy
YXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAq
ZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9y
bSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVyPihk
aXNwbGF5TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJl
Y3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIH0pOwogICAgIAogICAgIEZsb2F0UG9pbnQg
c3RhcnRQb2ludChzdGFydFgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAppbmRleCBkYjc0MzAyZTlkYWE0ZWI1MmMw
Y2UwODFmZDU2MDUyNzk1NzhmYmY0Li4xMmFjODM3ZmNkMjQ2NWY5ZjgxZGViMDY4N2FhNzc2ZDVl
YTA2NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUZvbnRzLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIEZvbnRDYXNjYWRlRm9u
dHM6OkdseXBoUGFnZUNhY2hlRW50cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMy
IGNoYQogewogICAgIEFTU0VSVCghZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlcikuZ2x5
cGgpOwogICAgIGlmICghbV9taXhlZEZvbnQpIHsKLSAgICAgICAgbV9taXhlZEZvbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsKKyAg
ICAgICAgbV9taXhlZEZvbnQgPSBtYWtlVW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5n
bGVGb250LmdldCgpKTsKICAgICAgICAgbV9zaW5nbGVGb250ID0gbnVsbHB0cjsKICAgICB9CiAg
ICAgbV9taXhlZEZvbnQtPnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGdseXBo
RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0
cmljc01hcC5oCmluZGV4IDI1OWU5NzUzM2NhZWRjZmMxNDVmZjdhYjQyOGVhMTY5ZjY0YjE1OTQu
Ljc5ZTJmNTM4OGM0NmU1ODkyMzAxNjFjNDc0NTI1NDE5MjQ3ZTgyYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0xMzAs
MTAgKzEzMCwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NNYXA8
VD46OkdseXBoTWV0cmljc1BhZ2UmIEdseXBoTWV0cmljc01hcAogICAgIH0KIAogICAgIGlmICgh
bV9wYWdlcykKLSAgICAgICAgbV9wYWdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxpbnQs
IHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+KCk7CisgICAgICAgIG1fcGFnZXMg
PSBtYWtlVW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFn
ZT4+PigpOwogCiAgICAgYXV0byYgcGFnZSA9IG1fcGFnZXMtPmVuc3VyZShwYWdlTnVtYmVyLCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+KHVu
a25vd25NZXRyaWNzKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NQ
YWdlPih1bmtub3duTWV0cmljcygpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgcmV0
dXJuICpwYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmNwcAppbmRleCBhYWUzYTMwYjExNmVkZGUyNDU5NWFkOGZiYzFmY2U3NDU2
NTAwYTUxLi42Y2QwMGMyNjU3MGQ5ZGIzYjlmYWE3ZTIwMjNhZjFhNWU3ZTYzYTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApA
QCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAgICAgaWYgKG1fdHJhbnNmb3JtKQogICAg
ICAgICAqbV90cmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQotICAgICAgICBtX3RyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CisgICAg
ICAgIG1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4
KTsKIH0KIAogY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIEdyYXBoaWNzTGF5ZXI6OmNoaWxk
cmVuVHJhbnNmb3JtKCkgY29uc3QKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCiAgICAgaWYgKG1fY2hpbGRyZW5UcmFuc2Zvcm0pCiAgICAgICAgICptX2NoaWxkcmVuVHJh
bnNmb3JtID0gbWF0cml4OwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJlblRyYW5zZm9ybSA9
IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CisgICAgICAg
IG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Piht
YXRyaXgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihSZWZQdHI8R3Jh
cGhpY3NMYXllcj4mJiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAwMDlkNDg2ODk1ZDU2ODYyNTQwMTFkZjU2MDBhNzIx
MTI0MzBlNjJmLi43YTFmZWFhYzc5ZTc4YmE4OGZjYWRjYjg1ZTMyOTlmZDc5YTAwNDNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBA
IC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRmxvYXRBbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBBbmlt
YXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNsb25l
KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIGZsb2F0IHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQpAQCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+
KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShjb25zdCBU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgb3RoZXIpCkBAIC0xNjMsNyArMTYzLDcgQEAgY2xhc3Mg
RmlsdGVyQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4o
KnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4o
KnRoaXMpOwogICAgIH0KIAogICAgIEZpbHRlckFuaW1hdGlvblZhbHVlKGNvbnN0IEZpbHRlckFu
aW1hdGlvblZhbHVlJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcAppbmRleCA4ZWNmMzNmODk4Yjc0NDkxMWY3MDVhMTQ5ZmY3ODhiNjdiNmQ5NGVmLi4z
OTk5NjcyYjlmNTg5MzI4NmNmMzJkYjFjYzZiODBhMzMxODJhZGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBJ
bWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwg
TGVuZ3RoJiBpbnRyaW5zaWMKIHZvaWQgSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5bmNocm9ub3Vz
bHkoKQogewogICAgIGlmICghbV9hbmltYXRpb25TdGFydFRpbWVyKQotICAgICAgICBtX2FuaW1h
dGlvblN0YXJ0VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJkltYWdlOjpz
dGFydEFuaW1hdGlvbik7CisgICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lciA9IG1ha2VVbmlx
dWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKTsKICAgICBpZiAobV9hbmlt
YXRpb25TdGFydFRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9hbmlt
YXRpb25TdGFydFRpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3NTdmMDk1NjdkYzVkZmRm
NWJlMDI2Mzk2MzlkMWVmZWM3MThjMGRiLi5hYmU4Njk0MTk0ZmY3YzE3NTEwMGI2OTg4MDRhMTI0
MGJkNjJjODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgY2xhc3MgTnVsbE1lZGlhUGxheWVyUHJp
dmF0ZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogCiAgICAg
ZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGRv
dWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH0KIAogICAgIGRvdWJs
ZSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gMDsgfQogICAgIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9CkBAIC0zNTUsNyArMzU1LDcgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBsYXll
cjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiBNZWRpYVBsYXllcjo6TWVkaWFQ
bGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50KCZjbGllbnQp
CiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmly
ZWQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2
YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXllclBy
aXZhdGU+KHRoaXMpKQogewogfQogCkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBNZWRpYVBsYXll
cjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJy
ZW50KQogI2VuZGlmCiAgICAgICAgIG1fcHJpdmF0ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgbV9wcml2YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxOdWxsTWVk
aWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKKyAgICAgICAgbV9wcml2YXRlID0gbWFrZVVuaXF1ZTxO
dWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKICAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5
ZXJFbmdpbmVVcGRhdGVkKHRoaXMpOwogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllclJlc291
cmNlTm90U3VwcG9ydGVkKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMDBkODVhNDk5NjQy
YjNmNTIzN2IzMGJmZjVmNGU2YjQyOTEzMGVjZC4uMWQyZmMwMDkyMDRhOGMwMjU1NDFiMmEyZDdj
NWYwZDBiZTVjOTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBjbGFzcyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpID8gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSk7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2FibGUoKSA9PSBNZWRp
YVRpbWU6Onplcm9UaW1lKCkgPyBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKSA6IG1h
a2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBtYXhN
ZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxl
KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1heE1lZGlhVGlt
ZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1h
eFRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggM2U2ODgwNTViZGNjMGIxMGU0MTYwY2YxNDBk
NGZhY2U5MjMyMGE2NS4uNWFkOTMzNDliZmI0MGRhNGZmMzA4YWRhOTg0OTdmYzM3NWUxMDhhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGll
cy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRmxvYXRQb2ludEdyYXBoOjpOb2RlKiBGbG9hdFBvaW50
R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUoRmxvYXRQb2ludCBwb2ludCkKICAgICAgICAgICAgIHJl
dHVybiB0ZXN0Tm9kZS5nZXQoKTsKICAgICB9CiAKLSAgICBtX2FsbE5vZGVzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4ocG9pbnQpKTsKKyAgICBtX2FsbE5v
ZGVzLmFwcGVuZChtYWtlVW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4ocG9pbnQpKTsKICAg
ICByZXR1cm4gbV9hbGxOb2Rlcy5sYXN0KCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCmluZGV4IDlkY2VlODc2MTYyNWMwMTQ4OGI0ZDkw
ZDFhZjIyZTM1NDM1ZDRhNWUuLjZhNzAxYzFhMTI4OTc5ZDRjOTQ4YjFhN2JhYjU2OGYxMDI0N2Nm
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcApAQCAt
NjQ2LDcgKzY0Niw3IEBAIHZvaWQgUmVnaW9uOjpzZXRTaGFwZShTaGFwZSYmIHNoYXBlKQogICAg
IH0KIAogICAgIGlmICghbV9zaGFwZSkKLSAgICAgICAgbV9zaGFwZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKKyAgICAgICAgbV9zaGFwZSA9IG1ha2VVbmlxdWU8
U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKICAgICBlbHNlCiAgICAgICAgICptX3NoYXBlID0gV1RG
TW92ZShzaGFwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5o
CmluZGV4IDQwZjk2YmZhZmIwZGIwMzVkYTY5ZDU5NmMwMTUyYzFjYmFmMTc4Y2MuLmJjMzljMzAw
MDBlYThiNmI1YTllNjBjZjJiYzVhZTE4NjY2NGI2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5oCkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgUmVnaW9uIHsK
ICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZSYsIGNvbnN0IFNoYXBl
Jik7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY29weVNoYXBlKCkgY29u
c3QgeyByZXR1cm4gbV9zaGFwZSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+KCptX3NoYXBlKSA6
IG51bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNvcHlTaGFwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhcGUgPyBtYWtlVW5pcXVlPFNoYXBlPigqbV9zaGFwZSkgOiBudWxscHRy
OyB9CiAgICAgdm9pZCBzZXRTaGFwZShTaGFwZSYmKTsKIAogICAgIEludFJlY3QgbV9ib3VuZHM7
CkBAIC0yOTAsNyArMjkwLDcgQEAgT3B0aW9uYWw8UmVnaW9uPiBSZWdpb246OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgICAgICBkZWNvZGVyID4+IHNoYXBlOwogICAgICAgICBpZiAoIXNo
YXBlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmVnaW9uLm1f
c2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOworICAgICAg
ICByZWdpb24ubV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hhcGU+KFdURk1vdmUoKnNoYXBlKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHsgcmVnaW9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKaW5k
ZXggMWU0ZTdmYWMzNmM3YzMwYTY1NmYxZWZkMDBhYWNlNmQ0Yzk1Y2VkYS4uNjkzOWY5MTdhZTZm
YWIxM2VjMWM5MWQ0YWE4MTU1NjZhOTE3MGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBjbGFzcyBOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gOiBwdWJs
aWMgVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gewogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNr
UmVwcmVzZW50YXRpb24+IFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25DbGllbnQmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE51
bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOdWxs
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdM
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHQzREFOR0xFLmNwcAppbmRleCA3N2EzZTE4YzFjNmMyZTI3ZGQ2M2FlMjk2ZjZlYzlhMWVh
MmZhZTFmLi42MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1YjE2Y2E0ZTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHQzREFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMz
RCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRl
bnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lv
bnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lv
bnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50
KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggNWNkNzc3MmFjMmVlMWNlYTkw
MTBlODMzNzFlYTZhYWVmN2YwNjk1OC4uNmIzYzkyMmU2YWViZTU5MjBhZTY1ZTU3YWYwNWVkZTRh
ZDAzNzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5tbQpAQCAtMzEzLDEyICszMTMsMTIgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEKIHsK
ICAgICBBU1NFUlQobWF4RnJhbWVzID49IDApOwogCi0gICAgbV90YXBEZXNjcmlwdGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2luZ0Zv
cm1hdCk7CisgICAgbV90YXBEZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOwog
ICAgIGludCBudW1iZXJPZkNoYW5uZWxzID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bUNoYW5uZWxzUGVy
RnJhbWU7CiAgICAgZG91YmxlIHNhbXBsZVJhdGUgPSBwcm9jZXNzaW5nRm9ybWF0LT5tU2FtcGxl
UmF0ZTsKICAgICBBU1NFUlQoc2FtcGxlUmF0ZSA+PSAwKTsKIAotICAgIG1fb3V0cHV0RGVzY3Jp
cHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKTsK
KyAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOwogICAgIG1fb3V0cHV0RGVzY3JpcHRp
b24tPm1TYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5t
Rm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CiAgICAgbV9vdXRwdXREZXNjcmlwdGlv
bi0+bUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZDsKQEAg
LTMzOCw3ICszMzgsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVwYXJl
KENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogICAgIC8vIE1ha2UgdGhl
IHJpbmdidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIHN0b3JlIGF0IGxlYXN0IHR3byBjYWxsYmFja3Mg
d29ydGggb2YgYXVkaW8sIG9yIDFzLCB3aGljaGV2ZXIgaXMgbGFyZ2VyLgogICAgIHNpemVfdCBj
YXBhY2l0eSA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHNpemVfdD4oMiAqIG1heEZyYW1lcyksIHN0
YXRpY19jYXN0PHNpemVfdD4oa1JpbmdCdWZmZXJEdXJhdGlvbiAqIHNhbXBsZVJhdGUpKTsKIAot
ICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAg
IG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwogICAgIG1fcmluZ0J1
ZmZlci0+YWxsb2NhdGUoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKCpwcm9jZXNzaW5nRm9ybWF0
KSwgY2FwYWNpdHkpOwogCiAgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUtbGVu
Z3RoIHN0cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygpIG9w
ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCAz
NjFhOTkyZjBjNDY1MGNmMmI5NjI4YTY0MmU5N2I1ZGJhMGUyYTNjLi40ZmM2Nzg3ZGQ4ZDkwN2Nh
ZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJp
dmF0ZT4gQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0oY29uc3QgU3RyaW5n
JgogICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nPigpOwogfQogCiBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3Vw
cG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjYzA4YTlhM2I1
MWNiZjdhYjE5NzQyMDJhOThiMTY5ZGI0M2MxMDEuLjBjZDAxMjlhM2NkOWVhZjg2M2FkNDc4OTgz
ODUwMzFkOGI3NmVmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xNDcsMTAgKzE0NywxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
TGVnYWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vz
c2lvbihMZQogI2VuZGlmCiAgICAgCiAgICAgaWYgKHNob3VsZFVzZUFWQ29udGVudEtleVNlc3Np
b24gJiYgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpCi0gICAg
ICAgIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZh
bHVlKCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5p
cXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFs
dWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNsaWVu
dCk7CiAgICAgZWxzZQogI2lmIEhBVkUoQVZTVFJFQU1TRVNTSU9OKQotICAgICAgICBzZXNzaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihXVEZNb3ZlKHBh
cmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCAqdGhpcywgY2xpZW50KTsKKyAgICAgICAgc2Vz
c2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJh
bWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CiAjZWxzZQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA4NTdmMzFmMjc3MmY0MDgxZmJh
NjM4ZjgxMGMxMTQ5NDI4NThiOTRiLi41OWNmOGJhMjEzMTZiMzA3YzA1MDIzZWQ1NmQ5YjM5ZDI1
NjE3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6YnVmZmVyZWQo
KSBjCiAgICAgaWYgKCFtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpCiAgICAgICAgIG1fY2FjaGVk
TG9hZGVkVGltZVJhbmdlcyA9IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCk7CiAKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hlZExvYWRl
ZFRpbWVSYW5nZXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
Km1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAppbmRleCAzOTVjZTc4
MmU4YzU4MDQ1OTYxNjI0Njk4MGYzM2VhZGYwM2I3OGIyLi41ZjViNmY2OTUyYjQ5M2E5ODg3YmFm
YzdmMzBiN2JlZTczMzQxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlhU2Vz
c2lvbk1hbmFnZXJNYWMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk1lZGlhU2Vzc2lvbk1hbmFn
ZXJNYWM6On5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjKCkgPSBkZWZhdWx0OwogV2ViQ29yZTo6
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxh
dGZvcm1QaWNrZXIoKQogewogICAgIGlmICghbV90YXJnZXRQaWNrZXIpCi0gICAgICAgIG1fdGFy
Z2V0UGlja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFj
PigqdGhpcyk7CisgICAgICAgIG1fdGFyZ2V0UGlja2VyID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTWFjPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fdGFyZ2V0UGlja2Vy
LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYzJjOGFlNmMxZWUxYzU2NDIyMmU1MDJi
MzI5YzU5MmU1ZmEyYThlZS4uM2I3MGU3NjYzOWU1OTQwYWYxZjJiMWQ1YmYyNjczYWUzMmRlY2Ex
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGljIGRpc3BhdGNo
X3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVnaXN0
cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0U3Vw
cG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNLZXlTeXN0ZW0pOwog
fQogCkBAIC02NzQsNyArNjc0LDcgQEAgc3RhdGljIGJvb2wgdGltZVJhbmdlSXNWYWxpZEFuZE5v
dEVtcHR5KENNVGltZSBzdGFydCwgQ01UaW1lIGR1cmF0aW9uKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxh
dGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJhbmdlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGltZVJh
bmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAgICAgaWYgKCFhdlBs
YXllckl0ZW0obV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CkBAIC0x
MTM5LDcgKzExMzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3NpbwogICAgIGlmICgha2V5U3lz
dGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+KCp0aGlz
LCBjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25D
Rj4oKnRoaXMsIGNsaWVudCk7CiB9CiAKICNlbGlmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQpAQCAtMTcxMSw3ICsxNzExLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpub3RpZmljYXRpb25D
YWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIEMKICAgICBM
T0coTWVkaWEsICJBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhpZj0lZCkgJXMiLCBy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ob2JzZXJ2ZXIpLCBub3RpZmljYXRpb25OYW1lKTsK
ICNlbmRpZgogCi0gICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxO
b3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIpOworICAgIGF1
dG8gbm90aWZpY2F0aW9uRGF0YSA9IG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRh
Pihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgbm90aWZpY2F0aW9uRGF0YS5yZWxlYXNlKCksIHByb2Nlc3NO
b3RpZmljYXRpb24pOwogfQpAQCAtMTgzNyw3ICsxODM3LDcgQEAgdm9pZCBBVkZXcmFwcGVyOjps
ZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdpYmxl
T3V0cHUKIAogICAgIEFTU0VSVChsZWdpYmxlT3V0cHV0ID09IHNlbGYtPm1fbGVnaWJsZU91dHB1
dCk7CiAKLSAgICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMZWdp
YmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBB
TDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0KTsKKyAgICBhdXRvIGxlZ2libGVPdXRw
dXREYXRhID0gbWFrZVVuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3Ms
IG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0
KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbGVn
aWJsZU91dHB1dERhdGEucmVsZWFzZSgpLCBwcm9jZXNzQ3VlKTsKIH0KQEAgLTE5MzEsNyArMTkz
MSw3IEBAIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzCiAKICAgICBMT0coTWVkaWEsICJBVkZXcmFw
cGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNvdXJj
ZSglcCkiLCBzZWxmKTsKIAotICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKKyAgICBhdXRv
IGxvYWRSZXF1ZXN0RGF0YSA9IG1ha2VVbmlxdWU8TG9hZFJlcXVlc3REYXRhPihsb2FkaW5nUmVx
dWVzdCwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIGxvYWRSZXF1ZXN0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NTaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVzb3VyY2UpOwogCkBAIC0xOTU4LDcgKzE5NTgsNyBAQCBQbGF0Zm9ybUxheWVy
KiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAv
LyBDcmVhdGUgYSBQbGF0Zm9ybUNBTGF5ZXIgc28gd2UgY2FuIHJlc2l6ZSB0aGUgdmlkZW8gbGF5
ZXIgdG8gbWF0Y2ggdGhlIGVsZW1lbnQgc2l6ZS4KLSAgICBtX2xheWVyQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CisgICAgbV9sYXllckNsaWVudCA9IG1ha2VV
bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOwogICAgIGlmICghbV9sYXllckNsaWVudCkKICAgICAg
ICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQ
cml2YXRlQVZGT2JqQy5tbQppbmRleCBlMTRhZjFhMjdmMjZiZDFhZDYwMjg2MDRhNTc1MmYwZGY5
YThkZjUyLi43ZGUxNGMyNTcxZjdkMzhlZWNiYjM0OGZkYTNjNzRhNDNkZWI4MmE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tCkBA
IC0zMywxMyArMzMsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sqIHRy
YWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQog
CiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhNZWRp
YVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1faW1wbChzdGQ6Om1ha2Vf
dW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCisgICAgOiBtX2ltcGwo
bWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQogewogICAgIHJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNTksNyArNTksNyBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1U
cmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNr
KCk7CiB9CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCBBVlBsYXllckl0ZW1UcmFjayogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogfQogCiBBdWRpb1RyYWNrUHJpdmF0
ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQot
ICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
dHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiB2b2lk
IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRy
YWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQog
CkBAIC04Nyw3ICs4Nyw3IEBAIEFWQXNzZXRUcmFjayogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
Ojphc3NldFRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlh
U2VsZWN0aW9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQogewot
ICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
b3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBlYzBkMGVkZGJmNzNiZWVkYTY3MTdiN2E1MThjNzMy
MTI2MDk1YWUyLi5kZjUyMjZhNGVhMDM2ZTU2ZmEyNTM5YTYyNzYyYTIzOGFlNzBlMGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJlbnQocGFy
ZW50KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwpAQCAtNTIsNyArNTIsNyBA
QCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZXNldFByb3BlcnRp
ZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3Rk
OjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9p
bXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAg
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU0ODIwZDIyNTE5N2RiN2Y5YmU3M2Y0ZmJk
MmNlYzg3OGY5YTgwMDguLjMyNmRhZGJiMTdkMDg5MTE3MGViNzU0NTNiNjM0OGQ3ZmU4Mzk3ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAt
NDEyLDcgKzQxMiw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0YWRh
dGEoKQogICAgICAgICB8fCAhbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkKICAg
ICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkudmFsdWUoKSAhPSBm
aW5hbFRyYW5zZm9ybQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXplKCkg
IT0gc2l6ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNpemUs
IGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJ
bWFnZUNvbXBhdGlibGU6Olllcyk7CisgICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24gPSBt
YWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0p
LCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
OjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwogCiAgICAgbV9zaXplID0gZXhwYW5kZWRJbnRT
aXplKG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJvdGF0ZWRTaXplKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KaW5kZXggNWNkMjI0MDNhYTJjMmVmNjIyZTMwMGQwMDc0MWZjMGMzMzM5YmYz
Ni4uN2ZjMDE4YWU1OGVhZjUyNTYwZGVlNmIzNGExYTk3Y2U3ZDAxZDIxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEK
ICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0cmFy
KFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFD
YWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAg
IEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSk7
CiB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIAogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uKHBsYXllcikKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0
ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAs
IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShNZWRp
YVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQogICAgICwgbV9vYmpjT2JzZXJ2ZXIo
YWRvcHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBsYXllcjpt
YWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNlKQpA
QCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1l
UmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0
byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAgICBp
ZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAgLTE4OTIs
NyArMTg5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBk
YXRlUm90YXRpb25TZXNzaW9uKCkKICAgICAgICAgJiYgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+
c2l6ZSgpID09IG5hdHVyYWxTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ltYWdlUm90
YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZUPihX
VEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0VHlwZV8z
MkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olllcyk7
CisgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNl
c3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZv
cm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRp
YmxlOjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMjIxNiw3ICsyMjE2
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0
SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogI2Vsc2UKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRy
aWJ1dGVzID0gbmlsOwogI2VuZGlmCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBt
YWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0y
MjY1LDcgKzIyNjUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHNpemVfdCBoZWln
aHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIAog
ICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJlQ29w
aWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwor
ICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29w
aWVyQ1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29w
eUltYWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRoLCBo
ZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KQEAgLTIzMzAsNyAr
MjMzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzCiB7CiAgICAgaWYgKCFrZXlTeXN0ZW1J
c1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0
aGlzLCBjbGllbnQpOworICAgIGF1dG8gc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVudCk7CiAgICAgbV9zZXNzaW9uID0gbWFrZVdlYWtQ
dHIoKnNlc3Npb24pOwogICAgIHJldHVybiBXVEZNb3ZlKHNlc3Npb24pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCmluZGV4IDcyZDFhZjE3ZTk3NzBjMjI4N2Y3ZjVjY2U5Yzg3NmUzMzk4
M2I1MjIuLmQ4Y2VmZWI1ODRmODYzZjEzNWE4YTExODIxYTI4ZDMyNGM4ZmM0YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTE0MSw3ICsxNDEsNyBAQCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QyhNZWRpYQogICAgICwgbV9wbGF5aW5nKDApCiAgICAgLCBtX3NlZWtpbmcoZmFsc2UpCiAgICAg
LCBtX2xvYWRpbmdQcm9ncmVzc2VkKGZhbHNlKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpD
PigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxWaWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogICAgICwgbV9lZmZlY3RpdmVSYXRlQ2hh
bmdlZExpc3RlbmVyKEVmZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXI6OmNyZWF0ZSgqdGhpcywg
W21fc3luY2hyb25pemVyIHRpbWViYXNlXSkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCkBAIC0yMDUsNyArMjA1
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lzdGVy
TWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3QKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQz4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikg
eyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+
KHBsYXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAs
IDAsIDAsIDApOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCku
aXNBdmFpbGFibGUoKSk7CiB9CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGlt
ZSYgdGkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidGltZSA9ICIsIHRpbWUsICIsIG5l
Z2F0aXZlVGhyZXNob2xkID0gIiwgbmVnYXRpdmVUaHJlc2hvbGQsICIsIHBvc2l0aXZlVGhyZXNo
b2xkID0gIiwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgbV9zZWVraW5nID0gdHJ1ZTsKLSAg
ICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwgbmVn
YXRpdmVUaHJlc2hvbGQsIHBvc2l0aXZlVGhyZXNob2xkKTsKKyAgICBtX3BlbmRpbmdTZWVrID0g
bWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwgbmVnYXRpdmVUaHJlc2hvbGQsIHBvc2l0aXZl
VGhyZXNob2xkKTsKIAogICAgIGlmIChtX3NlZWtUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBt
X3NlZWtUaW1lci5zdG9wKCk7CkBAIC01NDcsNyArNTQ3LDcgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWFkeVN0YXRlKCkg
Y29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJs
ZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWth
YmxlKCkpOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjptYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CkBAIC01NjIsNyArNTYyLDcgQEAgTWVk
aWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bWluTWVkaWFUaW1l
U2Vla2FibGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+
YnVmZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAg
IHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5idWZm
ZXJlZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBj
b25zdApAQCAtNjA2LDcgKzYwNiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UoKQogCiAgICAgaWYgKCFtX3JnYkNvbmZvcm1lcikg
ewogICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQ
aXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JB
KSB9OwotICAgICAgICBtX3JnYkNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZm
ZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsKKyAg
ICAgICAgbV9yZ2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAgICAgbV9s
YXN0SW1hZ2UgPSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIobV9s
YXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoR3JhCiAgICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9s
YXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllcikK
LSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvVGV4
dHVyZUNvcGllckNWPigqY29udGV4dCk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVyID0g
bWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwogCiAgICAgcmV0dXJu
IG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xhc3RQ
aXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBo
YSwgZmxpcFkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGNhM2IxMTM1NTJi
Mzg4NWM5OTk3N2RhZTJhMjFlYTE2NTc3ZWRhODAuLjlkZWVlNDZmMmNhMjQ1Mjk1M2RmNWNhODhi
YjY5ZjgxOGU3ZTRlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTE4Myw3ICsx
ODMsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYQogICAgIDogbV9wbGF5ZXIocGxheWVyKQog
ICAgICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJT
dGF0dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwg
bV9jbG9jayhQQUw6OkNsb2NrOjpjcmVhdGUoKSkKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5
ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2Jq
Qz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKICAgICAsIG1f
bG9nSWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQpAQCAtMjIw
LDcgKzIyMCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lz
dHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3VwcG9y
dGVkVHlwZXMsCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJl
dHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxh
eWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCiAgICAgICAgICAgICBzdXBwb3J0c1R5cGUsIDAs
IDAsIDAsIDApOwogfQogCkBAIC0xMDU0LDEyICsxMDU0LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFu
Z2VzPigpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1hZ2Uo
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyKQotICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lciA9
IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9y
bWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKKyAgICAgICAgbV9p
bWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3Ry
aW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRU
eXBlXzMyQkdSQSkgfSk7CiAKICAgICBBU1NFUlQobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJD
b25mb3JtZXIpOwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpD
LmNwcAppbmRleCBjODcxYzU5NDgzNTUwODU3MTgyYzdhMjRkNTUzNGI4NWE1ZDRlZjdlLi4yOTQ4
M2JhNWU5OGQ5NWZhOGU1ZWM5YTZhMTBiZjY0MWFhZTM1NTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKQEAgLTM0LDE5ICsz
NCwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6
OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0gICAg
OiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
aykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0
cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIFZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWQXNzZXRUcmFjayog
dHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9
CiAKIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKE1l
ZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAgIDogbV9pbXBsKHN0ZDo6bWFr
ZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKKyAgICA6IG1faW1w
bChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCiB7CiAgICAg
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgVmlk
ZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lk
IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKEFWUGxheWVySXRl
bVRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQ
cml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJh
Y2soKTsKIH0KIApAQCAtNzcsNyArNzcsNyBAQCBBVlBsYXllckl0ZW1UcmFjayogVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAgIG1f
aW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
OworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJh
Y2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC04OCw3ICs4OCw3
IEBAIEFWQXNzZXRUcmFjayogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjphc3NldFRyYWNrKCkK
IAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0b25PcHRpb24o
TWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0gc3Rk
OjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAgIG1f
aW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKICAg
ICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCBmY2MyNDk2YTEzNWFhNGY3M2E4ZmU1NDhkMTRlMGM4MDAwNGFkMWIwLi45NzU2Y2Zm
YWZkOGMzZjZmZTNiNDdhMjMzMzcxYjc0ZGVjOThkMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBh
cmVudCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKSkKICAgICAsIG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fdHJhY2tJ
RCgtMSkKICAgICAsIG1fc2VsZWN0ZWQoZmFsc2UpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0
VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtl
VW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3Bl
cnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMTcxZjI3NzJjOTRhNjlj
ZGE3MzQ5M2NjOWM4Yzc4NzhiMDAxMDhkZC4uODc2NTM0NDUyMDI0ZTYxNjUxNDE3YTA0YTBkOTQ1
MDU4YTk1NDAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNjM2LDEyICsxNjM2LDEyIEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKENvbW1pdFN0YXRlJiBjb21t
aXRTdGF0ZSwgY29uc3QgVHJhCiAgICAgaWYgKHVzZXNEaXNwbGF5TGlzdERyYXdpbmcoKSAmJiBt
X2RyYXdzQ29udGVudCAmJiAoIW1faGFzRXZlclBhaW50ZWQgfHwgaGFkRGlydHlSZWN0cykpIHsK
ICAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRGlzcGxheUxpc3RSZWNvcmRTdGFydCwg
RGlzcGxheUxpc3RSZWNvcmRFbmQpOwogCi0gICAgICAgIG1fZGlzcGxheUxpc3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKKyAgICAgICAgbV9kaXNwbGF5
TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwogICAgICAgICAK
ICAgICAgICAgRmxvYXRSZWN0IGluaXRpYWxDbGlwKGJvdW5kc09yaWdpbigpLCBzaXplKCkpOwog
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0
OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0YXRl
KCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlMaXN0
LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3JtKCkp
OwogICAgICAgICB9KTsKICAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4
dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQpAQCAtMjg2Nyw3ICsy
ODY3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlv
bigpIGNvbnN0CiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJBbmltYXRpb25zKCkK
IHsKICAgICBpZiAoIW1fYW5pbWF0aW9ucykKLSAgICAgICAgbV9hbmltYXRpb25zID0gc3RkOjpt
YWtlX3VuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CisgICAgICAgIG1fYW5pbWF0aW9ucyA9IG1h
a2VVbmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uJiBjYUFuaW0sIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5k
ZXgsIGludCBzdWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KQpAQCAtMzkwMyw3ICszOTAzLDcg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xvbmVJ
RCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4KICAgICBjb250ZW50c0xheWVyID0gbnVsbHB0cjsK
IAogICAgIGlmICghbV9sYXllckNsb25lcykKLSAgICAgICAgbV9sYXllckNsb25lcyA9IHN0ZDo6
bWFrZV91bmlxdWU8TGF5ZXJDbG9uZXM+KCk7CisgICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBtYWtl
VW5pcXVlPExheWVyQ2xvbmVzPigpOwogCiAgICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFrZUNs
b25lKGNsb25lSUQsIG1fbGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMtPnByaW1hcnlMYXllckNs
b25lcywgY2xvbmVMZXZlbCk7CiAgICAgc3RydWN0dXJhbExheWVyID0gZmluZE9yTWFrZUNsb25l
KGNsb25lSUQsIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLT5zdHJ1Y3R1
cmFsTGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDRkNjRjMmM0YjE5
YjMxYjgwNTRjMWJjNDFhYzAyMjU3M2JlZmY1NjIuLjMwNWVmZDMzM2JkNjExYzZlZjVlNGMxYjI2
MjI4ODc1MjU2ZjI0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgU3RyaW5nIFRp
bGVDb250cm9sbGVyOjp6b29tZWRPdXRUaWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgpCiBUaWxl
Q29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290UGxhdGZvcm1M
YXllcikKICAgICA6IG1fdGlsZUNhY2hlTGF5ZXIocm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgLCBt
X2RldmljZVNjYWxlRmFjdG9yKG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxheWVy
RGV2aWNlU2NhbGVGYWN0b3IoKSkKLSAgICAsIG1fdGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxU
aWxlR3JpZD4oKnRoaXMpKQorICAgICwgbV90aWxlR3JpZChtYWtlVW5pcXVlPFRpbGVHcmlkPigq
dGhpcykpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25UaW1lcigqdGhpcywgJlRpbGVDb250cm9s
bGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fdGlsZVNpemVDaGFuZ2VU
aW1lcigqdGhpcywgJlRpbGVDb250cm9sbGVyOjp0aWxlU2l6ZUNoYW5nZVRpbWVyRmlyZWQsIHRp
bGVTaXplVXBkYXRlRGVsYXkpCiAgICAgLCBtX21hcmdpbkVkZ2VzKGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNldENv
bnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgaWYgKG1fem9vbWVkT3V0Q29udGVudHNTY2Fs
ZSAmJiBtX3pvb21lZE91dENvbnRlbnRzU2NhbGUgPT0gdGlsZUdyaWQoKS5zY2FsZSgpICYmIHRp
bGVHcmlkKCkuc2NhbGUoKSAhPSBzY2FsZSAmJiAhbV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlTY2Fs
ZUZhY3RvcikgewogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkID0gV1RGTW92ZShtX3RpbGVH
cmlkKTsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0SXNab29tZWRPdXRUaWxlR3Jp
ZCh0cnVlKTsKLSAgICAgICAgbV90aWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdyaWQ+
KCp0aGlzKTsKKyAgICAgICAgbV90aWxlR3JpZCA9IG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0aGlz
KTsKICAgICAgICAgdGlsZUdyaWRzQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtNTAwLDcgKzUwMCw3
IEBAIEZsb2F0UmVjdCBUaWxlQ29udHJvbGxlcjo6YWRqdXN0VGlsZUNvdmVyYWdlUmVjdEZvclNj
cm9sbGluZyhjb25zdCBGbG9hdFJlY3QmIGNvCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKCFtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEpCi0gICAgICAgICAgICBtX2hpc3Rvcmlj
YWxWZWxvY2l0eURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcmljYWxWZWxvY2l0eURhdGE+
KCk7CisgICAgICAgICAgICBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEgPSBtYWtlVW5pcXVlPEhp
c3RvcmljYWxWZWxvY2l0eURhdGE+KCk7CiAKICAgICAgICAgbV92ZWxvY2l0eSA9IG1faGlzdG9y
aWNhbFZlbG9jaXR5RGF0YS0+dmVsb2NpdHlGb3JOZXdEYXRhKHNjcm9sbE9mZnNldCwgY29udGVu
dHNTY2FsZSwgTW9ub3RvbmljVGltZTo6bm93KCkpOwogICAgIH07CkBAIC02ODUsNyArNjg1LDcg
QEAgSW50UmVjdCBUaWxlQ29udHJvbGxlcjo6dGlsZUNvdmVyYWdlUmVjdCgpIGNvbnN0CiBQbGF0
Zm9ybUNBTGF5ZXIqIFRpbGVDb250cm9sbGVyOjp0aWxlZFNjcm9sbGluZ0luZGljYXRvckxheWVy
KCkKIHsKICAgICBpZiAoIW1fY292ZXJhZ2VNYXApCi0gICAgICAgIG1fY292ZXJhZ2VNYXAgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRpbGVDb3ZlcmFnZU1hcD4oKnRoaXMpOworICAgICAgICBtX2NvdmVy
YWdlTWFwID0gbWFrZVVuaXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKIAogICAgIHJldHVy
biAmbV9jb3ZlcmFnZU1hcC0+bGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW0KaW5kZXggYTQ4NTIzY2Y1MTc2YjMxZjJhY2M0OTg0YjJlY2Q4ZTJjODc0ZjYwNy4uMzZh
YzJmNzg0YjAwNmZmOWM3MDNmNDFlN2JmZjY4N2ExYWE0YzY3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZv
cm1DQUxheWVyQ29jb2EubW0KQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXll
ckNvY29hOjpjb21tb25Jbml0KCkKICAgICAgICAgV2ViVGlsZWRCYWNraW5nTGF5ZXIqIHRpbGVk
QmFja2luZ0xheWVyID0gc3RhdGljX2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXIqPihtX2xheWVy
LmdldCgpKTsKICAgICAgICAgVGlsZUNvbnRyb2xsZXIqIHRpbGVDb250cm9sbGVyID0gW3RpbGVk
QmFja2luZ0xheWVyIGNyZWF0ZVRpbGVDb250cm9sbGVyOnRoaXNdOwogCi0gICAgICAgIG1fY3Vz
dG9tU3VibGF5ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxl
Q29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOworICAgICAgICBtX2N1c3RvbVN1YmxheWVy
cyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRh
aW5lckxheWVycygpKTsKICAgICB9CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBA
IC05NDcsNyArOTQ3LDcgQEAgRmxvYXRSb3VuZGVkUmVjdCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
c2hhcGVSb3VuZGVkUmVjdCgpIGNvbnN0CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpzZXRT
aGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0KQogewog
ICAgIEFTU0VSVChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTaGFwZUxheWVyKTsKLSAgICBtX3No
YXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5k
ZWRSZWN0KTsKKyAgICBtX3NoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPEZsb2F0Um91bmRl
ZFJlY3Q+KHJvdW5kZWRSZWN0KTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
ICAgIFBhdGggc2hhcGVQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQppbmRl
eCBjMTkxZjM5MWM2NDU3MmNjOTk1NWE0N2M2Y2I3YjkwMDc4NjcyNjM5Li5iM2UyMWY2NDBhZTkx
YTBkMWY1OTM4NDZhODUwZmVjMjJmYTc4YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdM
YXllci5tbQpAQCAtNjIsNyArNjIsNyBAQCAtIChpZClpbml0V2l0aExheWVyOihpZClsYXllcgog
LSAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXIqKWNyZWF0ZVRpbGVDb250cm9sbGVyOihXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXIqKXJvb3RMYXllcgogewogICAgIEFTU0VSVCghX3RpbGVDb250cm9s
bGVyKTsKLSAgICBfdGlsZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRp
bGVDb250cm9sbGVyPihyb290TGF5ZXIpOworICAgIF90aWxlQ29udHJvbGxlciA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CiAgICAgcmV0dXJuIF90aWxl
Q29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCAx
NWQ0ZTQ2YjA2Yzc2YzE3ZjM0MDUxMzljNmM5NzljMTAxN2IzNjk2Li5kNmE3YzE2OGYwZTQ0MWZk
N2QyOTBmYzRmZTMxMzYwYzU4NWQ1Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApA
QCAtMTUyLDcgKzE1Miw3IEBAIFBsYXRmb3JtQ0FMYXllcldpbjo6UGxhdGZvcm1DQUxheWVyV2lu
KExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqIGxheWVyCiAgICAgaWYgKHVzZXNU
aWxlZEJhY2tpbmdMYXllcigpKSB7CiAgICAgICAgIGludGVybiA9IG5ldyBXZWJUaWxlZEJhY2tp
bmdMYXllcldpbih0aGlzKTsKICAgICAgICAgVGlsZUNvbnRyb2xsZXIqIHRpbGVDb250cm9sbGVy
ID0gcmVpbnRlcnByZXRfY2FzdDxXZWJUaWxlZEJhY2tpbmdMYXllcldpbio+KGludGVybiktPmNy
ZWF0ZVRpbGVDb250cm9sbGVyKHRoaXMpOwotICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRh
aW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIGludGVybiA9IG5ldyBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5h
bCh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKaW5kZXggMjI0
ZDhiYmVlZDM5OTJhZWVmYzkzMmExYmVlODBkYzYzZmNhMmY4Yi4uYzVhNzNlOGQzYWU5YmI0OWE5
NmJlMjdmNTMyN2UwNmMwNjIxNGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5ZXJX
aW4uY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJUaWxlZEJhY2tpbmdMYXllcldpbjo6
c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQogVGlsZUNvbnRyb2xsZXIqIFdlYlRp
bGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIq
IHJvb3RMYXllcikKIHsKICAgICBBU1NFUlQoIW1fdGlsZUNvbnRyb2xsZXIpOwotICAgIG1fdGls
ZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPihyb290TGF5ZXIp
OworICAgIG1fdGlsZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFRpbGVDb250cm9sbGVyPihyb290
TGF5ZXIpOwogICAgIHJldHVybiBtX3RpbGVDb250cm9sbGVyLmdldCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA1MGI3ZDljMjNjMDFhYmZjM2EwNTE3
OGMxMDUyNTEwNzBmMTVkNmRiLi4wNGYyYTlmZjU0NjlhYTViYTI0ZDE0OTU2NTRiNjBmMGJjNDNk
MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRleHRd
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBwbGF0
Zm9ybUNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsKIH0K
IApAQCAtNTQsMTQgKzU0LDE0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1w
bEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFtj
YWlyb0NvbnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihj
b250ZXh0LCBjYWlyb0NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBjYWlyb0NvbnRleHQpOwogICAgICAgICB9
KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJlY3Qg
eyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQocGxhdGZv
cm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCisgICAgLCBtX3ByaXZhdGUo
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250
ZXh0KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRl
KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3Jt
Q29udGV4dC5jcigpKTsKQEAgLTY5LDkgKzY5LDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGEK
IAogR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjYWlyb190KiBjYWlyb0NvbnRleHQpCiAgICAgOiBHcmFw
aGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7
IH0pCi0gICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCisgICAgLCBtX293bmVkUGxhdGZvcm1Db250
ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCiAgICAg
LCBtX3BsYXRmb3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJp
dmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9w
bGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9wbGF0Zm9y
bUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAg
IG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwCmluZGV4IDEzNzQxNWYzZWFiZjUzMjFmYzM1Y2FjMjBlMWUxMjc4NGQ3NTIy
MzMuLmUwMWU2MGI5ZWVlN2JhMTgzOTdhNjNlZjRhMTc2NjdmZmRjNGE0NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnN3
YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIExv
Y2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICAgICAgcHJveHkucHVz
aE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3Vs
ZEJsZW5kLCBHTF9SR0JBKSk7CisgICAgICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIo
bWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb21wb3NpdG9y
VGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBHTF9SR0JBKSk7
CiAgICAgICAgICAgICB9OwogI2lmIFVTRShOSUNPU0lBKQogICAgICAgICBwcm94eU9wZXJhdGlv
bihkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9uaWNv
c2lhTGF5ZXItPmltcGwoKSkucHJveHkoKSk7CkBAIC0zMDgsNyArMzA4LDcgQEAgSW1hZ2VCdWZm
ZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBDb2xvclNwYWMKIAogICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNhaXJv
X2NyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpKSk7CiAgICAgbV9kYXRhLm1fcGxhdGZvcm1D
b250ZXh0LnNldENyKGNyLmdldCgpKTsKLSAgICBtX2RhdGEubV9jb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRl
RmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQpKTsKKyAgICBtX2RhdGEubV9jb250ZXh0
ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
Y3JlYXRlRmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQpKTsKICAgICBzdWNjZXNzID0g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4MGI1ZDRmYmQyNzJkZWU0MzViNWNlN2MwODRlZTM1
OWE1MDFlZDY0Li5kMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFmYTM0ZTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNwCiAgICAg
ICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fZGF0
YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29udGV4dC5n
ZXQoKSk7CisgICAgICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRl
eHQ+KGNnQ29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAgICAgY29udGV4dCgpLnNjYWxlKEZsb2F0
U2l6ZSgxLCAtMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDcxODhlNDM3ZDJjODg2
NzI2ZDNkM2Y0ZGViNDFiZjI1Y2IwNmIzODAuLmZmN2ZjNjYzNjhiZDJjNjYwYzQ4YzEwNjc0NWY5
YmE4OWIzZGRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEzNzEsNyArMTM3MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZv
bnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAKICAgICBhdXRvIFtzeW50aGV0aWNCb2xkLCBz
eW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRpY0Jv
bGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250
RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5n
TW9kZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250Lmdl
dCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRp
b24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250RGVz
Y3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiB9CiAKIHR5cGVkZWYgSGFzaFNldDxSZXRh
aW5QdHI8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmplY3RIYXNoPENURm9udFJlZj4sIFdU
Rjo6UmV0YWluUHRyT2JqZWN0SGFzaFRyYWl0czxDVEZvbnRSZWY+PiBGYWxsYmFja0RlZHVwU2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAppbmRl
eCAxY2UwYzk0N2UxN2U5YTY4ZWVhZDNhNGQ1N2I1OWQ4ZmExNmNlZjI5Li4wZGU5MzRhN2IzODQx
MDBlZWI3NmQ3N2Y0NTZhMTgyZmJiYWJjZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIEZvbnRSYW5nZXMg
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyhjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvCiAKICAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhldGljT2Js
aXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21wdXRh
dGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBz
aXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9u
KCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRS
ZW5kZXJpbmdNb2RlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1E
YXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2Ny
aXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9u
dERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKIAogICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQz
RENvY29hLm1tCmluZGV4IDRhMDdhYzAzMjJlMjlkNjdjY2M4Yjc1MzVjMDA4MDBjMTcxN2QyYTQu
LjJjM2NhYzBhYWEwNTYzYWYxZWQ0YjMzOTM4Njk4OTgzMjIwNTdjOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIHNldEdQ
VUJ5UmVnaXN0cnlJRChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIGNvbnRleHRPYmosIENHTFBp
eGVsRm9yCiAKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJlZENvbnRleHQp
CiAgICAgOiBtX2F0dHJzKGF0dHJzKQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5p
cXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCiB7CiAjaWYgIVVTRShBTkdMRSkK
ICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDVjNzMzZTNiYWQxZTlkM2QyNWMxZWQ1N2Y1
YWNkZmZmM2E0Y2I5OWYuLjM4NzVmY2ZkMzA2ZGY4NmQzNDc0ZWUxODYwYmE1OTBhM2E4YmMxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UubW0KQEAgLTMyNiw3ICszMjYsNyBAQCBHcmFwaGljc0NvbnRleHQmIElPU3VyZmFjZTo6
ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCkKICAgICBpZiAobV9ncmFwaGljc0NvbnRleHQpCiAgICAg
ICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CiAKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRleHQo
KSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4o
ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5zZXRJc0Fj
Y2VsZXJhdGVkQ29udGV4dCh0cnVlKTsKIAogICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9UZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQppbmRleCA2ZTYwZWJm
MWZmYTY1OTBmNmYzNGU1MjhhM2UzMzU4MzE4YjVlYmRmLi4yNzg3NDY4MTY2ZmVmMWI1ZjY0NjIx
ZmViNWJiNWU1MGQ5ZDZkYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0aW9u
Q29jb2EubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBAZW5kCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZShUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYT4oY2xpZW50KTsKIH0K
IAogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6VGV4dFRyYWNrUmVwcmVzZW50YXRpb25D
b2NvYShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQppbmRl
eCA1NzdlYzI4NDYzOTJhNzIxNWQ5OThhYTMxMGQzZDhkNjMzZjVmMWVjLi45ZjFmNjZiM2JkNTlm
NTliMWFkM2NiNzA1Yzg1NjU0NDIyN2VjMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQpAQCAtNTAsNyArNTAsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IFRleHR1cmVDYWNoZUNWOjpjcmVhdGUo
R3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IFJldGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiBzdHJvbmdDYWNoZSA9IGFkb3B0Q0YoY2FjaGUp
OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBX
VEZNb3ZlKHN0cm9uZ0NhY2hlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZUNhY2hl
Q1Y+KGNvbnRleHQsIFdURk1vdmUoc3Ryb25nQ2FjaGUpKTsKIH0KIAogVGV4dHVyZUNhY2hlQ1Y6
OlRleHR1cmVDYWNoZUNWKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0LCBSZXRhaW5QdHI8VGV4
dHVyZUNhY2hlVHlwZT4mJiBjYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAppbmRleCA4ZmVhYTJmNWQ3NTMyOGU0MzZiZjlkODhiOGRjMDViYWMxYzJlMWYzLi5j
NTYxZjVmOWVhYjk5NjIxMWE4YjIyMjE5Nzc2ZDY4ZjM5ZTE2NDQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRp
YWxDbGlwLCBib29sCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxheUxp
c3Q7CiAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpCi0gICAgICAgIHJlcGxheUxp
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0PigpOworICAgICAgICByZXBsYXlMaXN0
ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKIAogICAgIHNpemVfdCBudW1JdGVtcyA9IG1f
ZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1J
dGVtczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNTU3YjhlMDA4NjJkNmFi
YzU4MDRiNDE0MzIxMDA4MGE4MzUxNmQxZS4uMzBiYjQ4Y2M4ZjBjNDk1NDQ4YWI2NWY2ODExNzJj
Y2M2YmNhNTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1lbnRJZk5lZWRl
ZChDYWNoZWRSZXNvdXJjZUxvYWRlcgogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFTVkdVUklS
ZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UobV91cmwsICpjYWNoZWRSZXNvdXJjZUxv
YWRlci5kb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2FjaGVkU1ZHRG9jdW1l
bnRSZWZlcmVuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
PihtX3VybCk7CisgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VVbmlxdWU8
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKICAgICBtX2NhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRpb25zKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDY1NjNjOGJmZWViMzViYTUzMjdmNDg5
NjFlZDYyMWZlM2Q1M2FhNDEuLjcxYTRhYjJmNDgyNWYxYTU0MzE5MTgwMzRiMzUzMWVjZGE4YTBm
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgICAgICAgICAgRmNQYXR0ZXJuQWRkU3RyaW5nKHJl
c3VsdFBhdHRlcm4uZ2V0KCksIEZDX0ZPTlRfVkFSSUFUSU9OUywgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBGY0NoYXI4Kj4odmFyaWFudHMudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICNlbmRpZgot
ICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRh
Pihmb250RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmNv
bXB1dGVkUGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09i
bGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKKyAgICBhdXRvIHBsYXRmb3Jt
RGF0YSA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2UuZ2V0KCksIHJlc3Vs
dFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBmaXhl
ZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24u
b3JpZW50YXRpb24oKSk7CiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBmb250IGhhcyBhbiBlbmNv
ZGluZyBjb21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNvbmZpZyBjdXJyZW50bHkKICAg
ICAvLyBzdXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlwZUNoYXJJbmRleDogVW5p
Y29kZSwgU3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElmIHRoaXMgZm9udCBkb2Vzbid0
IGhhdmUgb25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9uJ3Qgc2VsZWN0IGl0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXgg
MTM3NjVmNDNkYTg2NjhkMmRlODJlNjcxZDgxODBkNjg0NDI4NDNiMC4uNTg5NDNkMmE5MGRmYzU1
MDFmMmRjYWE4ZWNmMGU5MGUxYWM3ZjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmUKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAgICBpZiAoRlRfTmV3
X01lbW9yeV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1
ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNlKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KIAogYm9v
bCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZv
cm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJl
LmNwcAppbmRleCA4Njk4MTM2NDUxM2I4ZTZmMGQ3YjJkZGE1YmI4ZDFmODcyZTdmNTc2Li43MWZk
YTBkOTI0Y2QyNTVkYjNlZjEwNzdmOWUxMDc4MTRlMjQzZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC05NSw3ICs5NSw3IEBA
IFJlZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEZvcm1hdCBmb3JtYXQsIGludCB3CiAgICAgICAgIG51bVRpbGVzID0gMDsKICAgICB9CiAK
LSAgICBhdXRvIHRleHR1cmVJZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1bnNpZ25lZD4+
KG51bVRpbGVzKTsKKyAgICBhdXRvIHRleHR1cmVJZHMgPSBtYWtlVW5pcXVlPFZlY3Rvcjx1bnNp
Z25lZD4+KG51bVRpbGVzKTsKICAgICB0ZXh0dXJlSWRzLT5maWxsKDAsIG51bVRpbGVzKTsKIAog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0YTlmZGVjM2VjNTkxMmNl
MjViMWU2YjI1YjkxNDRmYThmNDBjN2QwLi5hYjM3ZWUwNDFlYjI4YzNjODJmMzVhZjM2M2NjZWRi
OWI0MmIxNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzCiB7CiAg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6ZURlYnVnQ2F0ZWdv
cnkoKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVk
aWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBs
YXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAg
ICB9CiB9CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAogc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpi
dWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkIHx8IGlzTGl2
ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIApAQCAtMjM3Niw3ICsyMzc2
LDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1Npbmso
KSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291
cmNlUHJvdmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKQotICAgICAg
ICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU291cmNlUHJv
dmlkZXJHU3RyZWFtZXI+KCk7CisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IG1ha2VV
bmlxdWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKIH0KIAogQXVkaW9Tb3VyY2VQ
cm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NvdXJjZVByb3ZpZGVy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmNwcAppbmRleCBjZTg3MzRlZjdkY2IzNjNlNzY1OGIxZGVmM2E3YTdiMzY2NGNhMjYzLi5iMDJl
MjhlZGNkNDA3ZmRmZjhjYmVhNzhhZDFhNmU3YjBjN2I1OGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03MTAsMTkgKzcx
MCwxOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJl
VG9Db21wb3NpdG9yKCkKICAgICAgICAgICAgIGlmICghcHJveHkuaXNBY3RpdmUoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRl
b0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFt
ZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0Zh
bGxiYWNrVmlkZW9TaW5rKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0Zy
YW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4o
bV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNrVmlk
ZW9TaW5rKTsKIAogICAgICAgICAgICAgR0x1aW50IHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50
ZXh0dXJlSUQoKTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgICAgICBpZiAodGV4dHVyZUlE
KSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXpl
KCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAg
ICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVy
LT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAgICAgICAgICAgbGF5
ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGTW92ZShmcmFtZUhvbGRl
cikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9
IHByb3h5LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6ZSgpLCBHTF9ET05UX0NB
UkUpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbGF5ZXJCdWZmZXIpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkpOwogICAgICAgICAgICAgICAgICAg
ICB0ZXh0dXJlLT5yZXNldChmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+aGFzQWxw
aGFDaGFubmVsKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVy
ZTo6Tm9GbGFnKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUp
KTsKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnVwZGF0ZVRleHR1cmUobGF5ZXJC
dWZmZXItPnRleHR1cmVHTCgpKTsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0RXh0
cmFGbGFncyhtX3RleHR1cmVNYXBwZXJGbGFncyB8IChmcmFtZUhvbGRlci0+aGFzQWxwaGFDaGFu
bmVsKCkgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCkpOwpAQCAtOTEyLDcgKzkx
Miw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1f
c2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxH
c3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3Ms
IHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhv
bGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1f
dGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVI
b2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAtOTIzLDcgKzkyMyw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgICAgIHNpemUgPSBzaXplLnRyYW5zcG9z
ZWRTaXplKCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3Zp
ZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0
cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBtX3Zp
ZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVy
PihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAgcmV0dXJuIG1fdmlk
ZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVy
ZUlELCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZv
cm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsKIH0K
QEAgLTkzOSw3ICs5MzksNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBpZiAoIUdTVF9JU19T
QU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1h
cHBlckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRl
cj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxl
LmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJ
RCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJRCkKQEAgLTk1
Myw3ICs5NTMsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBjb250ZXh0LT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1f
dmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CisgICAgICAgIG1f
dmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAgICBpZiAoIW1fdmlk
ZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4dHVy
ZUlELCBzaXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE0OCw4ICsxMTQ4LDggQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAg
IFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAg
ewogICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5
ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRf
Q0FSRSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9sZVB1bmNoQ2xp
ZW50PiBob2xlUHVuY2hDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckhvbGVQdW5j
aENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VVbmlx
dWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1h
cHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9IG1h
a2VVbmlxdWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQoKSk7CiAg
ICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0SG9sZVB1bmNoQ2xpZW50KFdURk1vdmUoaG9sZVB1
bmNoQ2xpZW50KSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3ZlKGxh
eWVyQnVmZmVyKSk7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCmluZGV4IDc0M2RjYzUyNjhjNDI2ZWNkOGY4OTA4MmQ5ZjdlNTMzYjQxY2Ni
MTkuLjk4MTBjMjU3YjM3NzZmZmQ4ZDQyMTJlOTY5NGJlOTJiMjU5NzM1MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02MzMsNyArNjMzLDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KEdzdEJhc2VTcmMqIGJhc2VT
cmMsIGJvb2wgbm90aWZ5QXN5bmNDb20KICAgICAgICAgICAgIGxvYWRPcHRpb25zIHw9IFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0YTsKICAgICAgICAg
cHJpdi0+cmVzb3VyY2UgPSBwcml2LT5sb2FkZXItPnJlcXVlc3RSZXNvdXJjZShSZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCksIGxvYWRPcHRpb25zKTsKICAgICAgICAgaWYgKHByaXYtPnJlc291cmNl
KSB7Ci0gICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5nZXQoKSwgUmVzb3Vy
Y2VSZXF1ZXN0KHJlcXVlc3QpKSk7CisgICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xp
ZW50KG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5n
ZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CiAgICAgICAgICAgICBHU1RfREVCVUdf
T0JKRUNUKHByb3RlY3Rvci5nZXQoKSwgIlN0YXJ0ZWQgcmVxdWVzdCIpOwogICAgICAgICAgICAg
aWYgKG5vdGlmeUFzeW5jQ29tcGxldGlvbikKICAgICAgICAgICAgICAgICBnc3RfYmFzZV9zcmNf
c3RhcnRfY29tcGxldGUoR1NUX0JBU0VfU1JDKHNyYyksIEdTVF9GTE9XX09LKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApp
bmRleCA0ZTlkMTlkODUyN2Q2OTYyMGNmNWFhOTQxMDczNjI4MzgxYjNjOWYwLi5lNjg4MGQ5OGU3
ZmNhZDFkMDUzZjg0ZWQzOGE2ZmQ4MTk4ZGU3Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlhRW5n
aW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlCiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJl
Z2lzdGVyV2ViS2l0RWxlbWVudHMoKTsKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3ZWJr
aXRfbXNlX2RlYnVnLCAid2Via2l0bXNlIiwgMCwgIldlYktpdCBNU0UgbWVkaWEgcGxheWVyIik7
CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxh
eWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5
ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0U+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9y
dHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAg
ICAgfQogfQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpzZXRSYXRlKGZsb2F0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRp
YVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRmb3Jt
VGltZVJhbmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6
OnNvdXJjZVNldHVwKEdzdEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5j
aC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmluZGV4IDExNzI0NTg0MTBlOWExNDUz
YjYzNWIwZjhkOTFiOWZiNGE2OTZjNTguLjBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0OTdk
NDdlMzc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hv
bGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVu
Y2guY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
OjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hv
bGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVm
ZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9z
aXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOwogICAg
ICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAg
ICAgICB9OwogCkBAIC0xNDEsNyArMTQxLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUUKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBs
YXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0
ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBs
YXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9s
ZVB1bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggMjM5YzRmNzI4YWJiYmVjMTAzOTdhM2Uw
MzNiZGY0MzRlNDVkNDc2Yy4uOGJmNzIxMzE4ODE5YzQwMjY3YjcyMWZhOWI4MmFjMWNkOTI2Zjlk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNo
L01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaApAQCAt
NzksNyArNzksNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJsaWMg
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgIE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQbGF5
ZXI6OkVtcHR5OyB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9OwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OwogCiAgICAg
Ym9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1By
b3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKaW5kZXggZDhkNzQwMWE3NTYw
MDQ2Yzk4YWZmOGNiMTFlYjJlNzIyM2M5ODFjZS4uYmRmZGJkYzk2Y2YwZTFiNTBhNzI4NTgyODhj
OWIyZjQ3NGY3ZDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3BwCkBA
IC01Myw3ICs1Myw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNlKERh
dGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVlKCkuZmlyc3QgPT0gSVNPU2NoZW1lVHlwZUJv
eDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZVR5cGVCb3ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7CisgICAgICAgIG1fc2NoZW1lVHlwZUJveCA9IG1h
a2VVbmlxdWU8SVNPU2NoZW1lVHlwZUJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZVR5cGVC
b3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNl
KERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgIH0KIAogICAgIGlmIChvcHRp
b25hbEJveFR5cGUudmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDo6Ym94
VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0gc3RkOjptYWtl
X3VuaXF1ZTxJU09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVJbmZv
cm1hdGlvbkJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g+KCk7CiAgICAg
ICAgIGlmICghbV9zY2hlbWVJbmZvcm1hdGlvbkJveC0+cmVhZCh2aWV3LCBsb2NhbE9mZnNldCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3gu
Y3BwCmluZGV4IGI0ZjI3N2E2ODQ3Y2MyMGQ0ZmM5ZDYyNmY5Y2FjYzc0MzBhZGFmNzAuLmM4M2M0
ZmY3YjM4YWJmMWFlMjJmZmU1ZTcyYzdhMWY4NmEwOGViMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9y
bWF0aW9uQm94LmNwcApAQCAtNDcsNyArNDcsNyBAQCBib29sIElTT1NjaGVtZUluZm9ybWF0aW9u
Qm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICAgICAgaWYg
KGxvY2FsT2Zmc2V0ICsgc2NoZW1lU3BlY2lmaWNCb3hUeXBlLnZhbHVlKCkuc2Vjb25kID4gb2Zm
c2V0ICsgbV9zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fc2No
ZW1lU3BlY2lmaWNEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxJU09UcmFja0VuY3J5cHRpb25Cb3g+
KCk7CisgICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0gbWFrZVVuaXF1ZTxJU09UcmFja0Vu
Y3J5cHRpb25Cb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVTcGVjaWZpY0RhdGEtPnJlYWQo
dmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAzMjdlYmY2MDYyNTkwOWZiZTJjNWI2YmQ1
MTk4YWNhMTlhNDVkNGE0Li41MDc5MzhiZTExMDVjZjQyNjA0NTU5MTNiMGM1ZTk5ZDRmNTRmOWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250RGVz
Y3JpcHRvci5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRl
Z3JhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFTY2VuZUludGVncmF0aW9uLmNwcAppbmRleCAxMDljMmM1Nzc2NzlhMTIxNGFhNmVhMTAx
YzZmNDgwZmJhMmVjNjAxLi41YmVlNjEzZmNmNmI0NmEwN2M2MjhlNTgwMTZmNDliYjkwMjFiMWYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFTY2VuZUludGVncmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcApAQCAtNjIsNyArNjIs
NyBAQCB2b2lkIFNjZW5lSW50ZWdyYXRpb246OnJlcXVlc3RVcGRhdGUoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNjZW5lSW50ZWdyYXRpb246OmNy
ZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGVT
Y29wZT4obWFrZVJlZigqdGhpcykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFVwZGF0ZVNjb3Bl
PihtYWtlUmVmKCp0aGlzKSk7CiB9CiAKIFNjZW5lSW50ZWdyYXRpb246OkNsaWVudDo6fkNsaWVu
dCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMmIxYWVjZjBkMWI3ZTZhMzQxYmY5NGJmZmFlZDIy
MGYxYTQ1ODYzOC4uNTBlMGMzYzdkOTc2ODI2YmE3YmI4MTg1ZDFlZTE0MjEyOWFkYTAyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYXV0byBjcmVhdGVDb21tYW5kKEFyZ3MmJi4uLiBhcmd1
bWVudHMpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXIKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBhdXRvIGNyZWF0ZUNvbW1hbmQoKSAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfYmFzZV9vZjxPcGVyYXRpb25EYXRhPD4sIFQ+Ojp2YWx1ZSwgc3RkOjp1bmlxdWVfcHRy
PFBhaW50aW5nT3BlcmF0aW9uPj4KIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUPigp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFQ+KCk7CiB9CiAKIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQYWlu
dGluZ09wZXJhdGlvbnMmIGNvbW1hbmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDBjOGE2NzBlM2EwYTM2MzA3ZTNm
Mjk5ZWNkYTAyNTUyZmQ3NzRlZDEuLmIzNTA4ZDUxN2IyNGU0NzVjMDhhZjQ4YjMzZTQzMWZkMjc5
MjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRl
eHRDYWlyby5jcHAKQEAgLTcwLDggKzcwLDggQEAgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBh
aW50aW5nOjpGb3JQYWludGluZyhCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgfSk7CiAKICAgICBt
X2NhaXJvLmNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9jYWlyby5zdXJmYWNlLmdl
dCgpKSk7Ci0gICAgbV9wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
OlBsYXRmb3JtQ29udGV4dENhaXJvPihtX2NhaXJvLmNvbnRleHQuZ2V0KCkpOwotICAgIG1fZ3Jh
cGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSgqbV9wbGF0
Zm9ybUNvbnRleHQpKTsKKyAgICBtX3BsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4dC5nZXQoKSk7CisgICAgbV9n
cmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KCptX3BsYXRmb3Jt
Q29udGV4dCkpOwogfQogCiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6On5Gb3JQ
YWludGluZygpCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB2b2lkIFBhaW50aW5nQ29udGV4dENhaXJv
OjpGb3JQYWludGluZzo6cmVwbGF5KGNvbnN0IFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbgog
CiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcoUGFpbnRp
bmdPcGVyYXRpb25zJiBwYWludGluZ09wZXJhdGlvbnMpCiB7Ci0gICAgbV9ncmFwaGljc0NvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oCisgICAgbV9n
cmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oCiAg
ICAgICAgIFsmcGFpbnRpbmdPcGVyYXRpb25zXShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihjb250ZXh0
LCBwYWludGluZ09wZXJhdGlvbnMpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bC5jcHAKaW5kZXggZDRjOWI2MDViNGNkMjhlMzQ4ZWZkODUzMzUwMzhiNThjOWE0ZGRmYS4uOGUz
NzkwZjdhYjU0ZjZiM2Q5NTZmMzA3MDRjNDI5YzJhY2RjMzE2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlcklt
cGwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGF1dG8gQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlcklt
cGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAg
ICAgICAgIFtdKEJhY2tpbmdTdG9yZSYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDM4ZmRkOTNkYTZi
MTM4ODMxNDA1OTE2NTNjZGYyOWUwN2RlMzIzOTYuLjc1NjkyYzdjNGE3YmZkYjE4NzFkZjE4MDJl
Mzg3NzUzNmI2MTU1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0zOSw3
ICszOSw3IEBAIGF1dG8gQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVG
YWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXSh1
aW50NjRfdCwgQ29tcG9zaXRpb25MYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4o
KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDU2MTcyOGI1
ZWYxZjQwZDgwYzUzNTk5MjY3MTA2NmFkODc0ODE5YTcuLjJmYjBlYzk1OTE1YWViMGJhMDk2Zjgw
YmM2OTBkMmYzYjI4NDhjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzks
NyBAQCBhdXRvIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KENs
aWVudCYgY2xpZW50KSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAgICAg
IFsmY2xpZW50XShDb250ZW50TGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50KTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjbGll
bnQpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVy
LmNwcAppbmRleCA1MmVjNzBiNjgxZjdiYzU2M2E2NzQ3NTQzNjIzODc2YjAzMTM5YTliLi45YTli
ZDQ2ODNiMjY3NDJhZmVjYjE0OTFmNjE0NGYyYTc4YzU5NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhR0MzRExheWVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEdDM0RMYXllcjo6
c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgIGF1dG8mIHByb3h5ID0gZG93bmNhc3Q8Tmlj
b3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fY29udGVudExheWVyLT5pbXBs
KCkpLnByb3h5KCk7CiAKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsK
LSAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRl
eHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOworICAg
ICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUs
IGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAg
bV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCmlu
ZGV4IGEyYWUzNGEzMTMyN2U4NzE1NjU0MTQ2ZDE4Zjc3YzdhNjdmMjQyMTYuLmQzNTNjOGJlMWI1
YmZhMTE2YjZjYjg1MjA5NzAyNzdjYzkzMjQ1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdUZXh0
dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcApA
QCAtMzcsNyArMzcsNyBAQCBhdXRvIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjpjcmVh
dGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBb
XShJbWFnZUJhY2tpbmcmKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJ
bWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTY4NDhmY2VjYTQx
ZTk3MzZmMmEzODE3YTlmZDAzY2ViYWUzYWMxMS4uYjk2MzYzYjU1MTkzNTZjOGNkZjQ2NTQzNjMy
NmVkMDZjZWNlZDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBA
IC00NzUsNyArNDc1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNE
Y2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5z
aW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxp
YW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9w
ZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9u
czsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggYjI0ZGYwMzVlMjg4ZTFlYjJmOGFmOWY3YWI5MWQ3NzlkMGFjYTQ5ZS4uMmEw
ZTViNzZlNGQ2YmFiNzBlOTBiMmYzZDI4ZWI0M2MwN2Y0MjUxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRl
cikKICAgICBBTkdMRVJlc291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZvclNoYWRlcjsK
IAogICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1lSGFzaE1hcEZv
clNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAgICBu
YW1lSGFzaE1hcEZvclNoYWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwogICAg
IHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMuZ2V0
KCkpOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIApAQCAt
MTAyMyw3ICsxMDIzLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1ib2xO
YW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAgICAgICAgLy8gQXR0
cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZvcmUg
YW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBhbmQgYXJlbid0IGV2
ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0uCiAgICAgICAgIGlm
ICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFk
ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgICAgIG5h
bWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAgICAg
ICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMu
Z2V0KCkpOwogCiAgICAgICAgIGF1dG8gZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFzaGVkTmFt
ZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRleCAy
NDMwNDZkOTg5YWQ3MzhmN2M5ZjcxNDk1NTY3Yzk2YmIzNGM1NjQxLi43MGEyMGQ1MGMzNTIxYTYx
MjNlNmVmYWYxZjQ3NjhmNjQ5NWNkZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMRVMuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAg
IG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRo
aXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VVbmlx
dWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAg
cmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBAQCBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3ND
b250ZXh0M0RBdHRyaWJ1dGVzCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0Qo
R3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFw
aGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNE
KiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV9jb21w
aWxlcihpc0dMRVMyQ29tcGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dMU0xfQ09NUEFU
SUJJTElUWV9PVVRQVVQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKKyAgICAsIG1fcHJpdmF0ZSht
YWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUpKQog
ewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RU
ZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlZDZjY2YxOTRiYmVlMWUwMGZkNDM5ZjYxYTZkZTYyZTQw
MzAyZWEzLi44ZmQzYWQ0ZjcyZDc2NGJkOTVkMjIwZjU4MWVkMmI3OTYyODgzYzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTA2LDkg
KzEwNiw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiB7CiAgICAgQVNTRVJUX1VOVVNFRChz
aGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAjaWYgVVNFKE5JQ09TSUEpCi0gICAgbV9u
aWNvc2lhTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRoaXMs
IHJlbmRlclN0eWxlKTsKKyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6
R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2Vsc2UKLSAgICBtX3RleG1hcExheWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlz
LCByZW5kZXJTdHlsZSk7CisgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2VuZGlmCiAKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTMyNSwxMCArMzI1LDEwIEBAIEV4dGVuc2lvbnMz
RCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgIGlmICghbV9leHRlbnNp
b25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlzIG5v
dCBhdmFpbGFibGUgb24gR0xFUzIuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CisgICAgICAgIG1fZXh0
ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7
CiAjZWxzZQogICAgICAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3JlIHBy
b2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCi0gICAgICAgIG1fZXh0
ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENv
bnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIG1fZXh0ZW5zaW9u
cyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1cnJl
bnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuICptX2V4
dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIu
Y3BwCmluZGV4IDE0ZjFkYmYxOGQ5MWIzOTA3NWUyZDUwZjIxNDliNzc2YmJjMTc0OTMuLjY2MzIz
MTU2OTViYTIxYzI2N2QxNTU5MzJlYmE5MTQ3ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKIAog
ICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHktPmxv
Y2soKSk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihzdGQ6
Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQu
bV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRl
cm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4
dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2Nv
bnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQu
bV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtMYXll
ckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggOTc0Yjg1NzhiODhhYTY0
MzUwOTFlOGIwYzM4YmIyZGI3MTBlZjEwMi4uYTJmNzU4NjZlMzIzYjhmZGJhNDNhMDA3ZDQ0N2Fh
YTQ2NTc2YmZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBU
ZXh0dXJlTWFwcGVyR0w6OlRleHR1cmVNYXBwZXJHTCgpCiAKICAgICBtX2RhdGEgPSBuZXcgVGV4
dHVyZU1hcHBlckdMRGF0YShwbGF0Zm9ybUNvbnRleHQpOwogI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKLSAgICBtX3RleHR1cmVQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXBUZXh0dXJl
UG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7CisgICAgbV90ZXh0dXJlUG9vbCA9IG1ha2VVbmlx
dWU8Qml0bWFwVGV4dHVyZVBvb2w+KG1fY29udGV4dEF0dHJpYnV0ZXMpOwogI2VuZGlmCiB9CiAK
QEAgLTc5MCw3ICs3OTAsNyBAQCBSZWY8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckdMOjpj
cmVhdGVUZXh0dXJlKEdMaW50IGludGVybmFsRm9ybWF0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlcj4gVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCgpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHTD4oKTsKIH0KIAogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDdhZmRmMzBh
MDViY2E1Mzk3YjgwMThiZmViZDg5ZTBlMWRhNTAzMzMuLmUxMWEwYmIyN2I4MTBjMmQ1Mjc2YjJh
OWIwYzUwOWY4ODk1MDY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZgogICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVN
YXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAgIHRl
eHR1cmUtPnJlc2V0KG1fc2l6ZSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4o
dGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQpOwotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4
dHJhRmxhZ3MpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggYzcxNGY2ZDc4YzFjZjFhNjFkNGRmZjZiNDIwNTIx
YjAyZWNkN2M1MC4uMzc5MzY3NWFjOGQ2YjNjMzJhM2IzMTgxOTNlNDlhN2IzN2RjNDg4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAt
NzEsOCArNzEsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2
YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjbwogICAgIGlmIChtX3RhcmdldExh
eWVyICYmIG1fY3VycmVudEJ1ZmZlcikKICAgICAgICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVu
dHNMYXllcihtX2N1cnJlbnRCdWZmZXIuZ2V0KCkpOwogCi0gICAgbV9yZWxlYXNlVW51c2VkQnVm
ZmVyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKTsK
LSAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVu
TG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6OmN1
cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNvbXBvc2l0
b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKTsKKyAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGlt
ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOworICAgIG1fY29tcG9z
aXRvclRocmVhZFVwZGF0ZVRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVy
RmlyZWQpOwogCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX2NvbXBvc2l0b3JUaHJl
YWRVcGRhdGVUaW1lci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpDb21wb3Np
dGluZ1RocmVhZFVwZGF0ZVRpbWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMzY3ZDhhNTNjZjM3MGQyMjAyZDZm
MzQwMWNkY2IzYTAyZmY0MmMyYi4uZDQ3NTcxMGJhMGNkZGZiY2RiZGEwYzY4Y2UzMGI4MWVmYWFk
NjljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogCiAgICAgLy8gRW5zdXJlIHRoZSBUaWxl
ZEJhY2tpbmdTdG9yZSBvYmplY3QsIGFuZCBlbmZvcmNlIGEgY29tcGxldGUgcmVwYWludCBpZiBp
dCdzIG5vdCBiZWVuIHByZXNlbnQgeWV0LgogICAgIGlmICghbGF5ZXJTdGF0ZS5tYWluQmFja2lu
Z1N0b3JlKSB7Ci0gICAgICAgIGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGlsZWRCYWNraW5nU3RvcmU+KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUo
KSk7CisgICAgICAgIGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8VGls
ZWRCYWNraW5nU3RvcmU+KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CiAgICAgICAg
IG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudCA9IHRydWU7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzYmU0MzExZGVh
YTAyNDk3YzdlZDFjZGNhMTM0NWJhNWE2ODAzMTA5Li40YTY5NzgyMmU0ZGUyY2RiOGI2NmY4MWQ0
MDRkOGRiZTgyYjQ5ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tp
bmdTdG9yZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpj
cmVhdGVUaWxlcyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgcwog
ICAgIHVuc2lnbmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgpOwog
ICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikgewog
ICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25dOwot
ICAgICAgICBtX3RpbGVzLmFkZChjb29yZGluYXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFRpbGU+KCp0
aGlzLCBjb29yZGluYXRlKSk7CisgICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIG1ha2VV
bmlxdWU8VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKICAgICB9CiAgICAgcmVxdWlyZWRUaWxl
Q291bnQgLT0gdGlsZXNUb0NyZWF0ZUNvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3Bw
CmluZGV4IGM4OGU5YmVmOWQ2NmNhMmI1NTAxOGM5MGY0YjBhNDI4YjQ2ODJlZjguLjRlYWYwMDEx
MjBjNDdmZmNlNTVhYjRkZmE5MjE4M2NlOGIzMTk0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3Rh
dGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0ZTo6
b3BlcmF0b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBpZiAobV9tYXBRdWFk
KSB7CiAgICAgICAgIG1fbGFzdFBsYW5hclF1YWQgPSBvdGhlci5tX2xhc3RQbGFuYXJRdWFkOwog
ICAgICAgICBpZiAob3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAgICAg
IG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4o
Km90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5h
clNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgVHJhbnNm
b3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3RhdGUm
IG90aGVyKQogICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBudWxscHRyOwogCiAgICAgaWYg
KG90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFu
c2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBt
YWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRyYW5z
Zm9ybSk7CiAgICAgICAgIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTEyOSwxMiArMTI5LDEy
IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm1Gcm9tQ29uCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBhY2N1bXVs
YXRlZCB0cmFuc2Zvcm0gZnJvbSBsYXN0IHRpbWUsIG11bHRpcGx5IGluIHRoaXMgdHJhbnNmb3Jt
CiAgICAgaWYgKG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKG1fZGlyZWN0
aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQotICAgICAgICAgICAgbV9hY2N1bXVsYXRl
ZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5z
Zm9ybUZyb21Db250YWluZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgICAg
ICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdGlwbHko
dHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRlID09IEFj
Y3VtdWxhdGVUcmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3RhcnRlZCB0
byBhY2N1bXVsYXRlCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsKKyAg
ICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25N
YXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAgIH0KICAgICAKICAgICBpZiAoYWNj
dW11bGF0ZSA9PSBGbGF0dGVuVHJhbnNmb3JtKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBU
cmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRRdWFk
KiBxdWFkKQogICAgIC8vIE1hcCB0aGUgcXVhZCBiYWNrIHRocm91Z2ggYW55IHRyYW5zZm9ybSBv
ciBvZmZzZXQgYmFjayBpbnRvIHRoZSBsYXN0IGZsYXR0ZW5pbmcgY29vcmRpbmF0ZSBzcGFjZS4K
ICAgICBGbG9hdFF1YWQgYmFja01hcHBlZFF1YWQoKnF1YWQpOwogICAgIG1hcFF1YWQoYmFja01h
cHBlZFF1YWQsIGludmVyc2VEaXJlY3Rpb24oKSk7Ci0gICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5
UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7CisgICAg
bV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihiYWNrTWFw
cGVkUXVhZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBx
dWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sKiB3YXNDbGFtcGVkKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCmluZGV4IDEwODYzNzQwMGEyMGZhMmYwOWRmNmFkNDM5
MzNjYTdkYTE3ZjQ4NjEuLmI2MjU4MzZhNWNlMjI1YmY0N2YzMzBjMDhjMjlkOGM3NTY1MmVlNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgVHJhbnNm
b3JtU3RhdGUgewogICAgICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0YXRlIChu
byBhY2N1bXVsYXRlZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBxdWFkLgog
ICAgICAgICBBU1NFUlQobV9hY2N1bXVsYXRlZE9mZnNldCA9PSBMYXlvdXRTaXplKCkpOwogICAg
ICAgICBpZiAocXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOworICAgICAgICAgICAgbV9sYXN0UGxh
bmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHAKaW5kZXggZDA4OWQwZjZlYzA0MzQ0NmE0Yjg4YzU5ZjMyMjUxZGU3YmUz
ODgyNC4uYTQ2ZDgwMjU2ZmNmYzk0MTJiOTI2MzlhNzI5MmMwMzM5ZmRlZTQ2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5j
cHAKQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4g
Rm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgIGJvb2wg
c3ludGhlc2l6ZUJvbGQgPSBpc0dESUZvbnRXZWlnaHRCb2xkKHdlaWdodCkgJiYgIWlzR0RJRm9u
dFdlaWdodEJvbGQobG9nRm9udC5sZldlaWdodCk7CiAgICAgYm9vbCBzeW50aGVzaXplSXRhbGlj
ID0gaXNJdGFsaWMoZm9udERlc2NyaXB0aW9uLml0YWxpYygpKSAmJiAhbG9nRm9udC5sZkl0YWxp
YzsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRh
PihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5
bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOworICAgIGF1dG8gcmVzdWx0
ID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2Ny
aXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRh
bGljLCB1c2VHREkpOwogCiAjaWYgVVNFKENHKQogICAgIGJvb2wgZm9udENyZWF0aW9uRmFpbGVk
ID0gIXJlc3VsdC0+Y2dGb250KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXgg
YzgyOWRhYWNmNjM0OTNjNDJmNmI2MDU5MzQ3NDE2ZWUyZGUwMzkwNy4uZWE1MzAxMDg2ZWM3ODhm
N2QyMDI4NjQwYmJjYmExNWM1ODA0YTllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgZm9udFJl
ZmVyZW5jZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAgICBp
ZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZv
bnROYW1lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihm
b250UmVmZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IGFiN2M3OTBkNjBmMmU4Zjc0YWYwM2MwNmFjZmM3
MmM4ZTM5YzIyZDkuLmVlZWFmZWJkOTMzY2E5Yzc4ZGQwNTE0MTNkMjMzNDRjYTg1M2IwMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC05MSw3ICs5MSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgaWYgKCFmb250UmVmZXJlbmNlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7
CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3Qg
U3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcAppbmRleCAxZTQ5MWMxNTY4
M2YxODRhZGFjNzUwZmVhZDAzMjFlZTA5NzM2MzkzLi5jYzdhZDNlYzMxMGJhZmY5ZjJkNTMxM2Vh
MzdlYmI2NjdjNzlkNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKQEAgLTEwNCw3ICsx
MDQsNyBAQCBMUkVTVUxUIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpQcml2YXRlOjpmdWxsc2NyZWVu
Q2xpZW50V25kUHJvYyhIV05EIGh3bmQsIFVJTlQgbQogfQogCiBGdWxsU2NyZWVuQ29udHJvbGxl
cjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIoRnVsbFNjcmVlbkNvbnRyb2xsZXJDbGllbnQqIGNsaWVu
dCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFByaXZhdGU+KHRoaXMsIGNsaWVu
dCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxQcml2YXRlPih0aGlzLCBjbGllbnQpKQog
ewogICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwogfQpAQCAtMTMyLDEzICsxMzIsMTMg
QEAgdm9pZCBGdWxsU2NyZWVuQ29udHJvbGxlcjo6ZW50ZXJGdWxsU2NyZWVuKCkKICAgICBtX3By
aXZhdGUtPm1fb3JpZ2luYWxGcmFtZSA9IG9yaWdpbmFsRnJhbWU7CiAKICAgICBBU1NFUlQoIW1f
cHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3Vu
ZFdpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdz4obV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRv
dyA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9wcml2
YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdy0+Y3JlYXRlV2lu
ZG93KDApOwogICAgIDo6QW5pbWF0ZVdpbmRvdyhtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRv
dy0+aHduZCgpLCBrRnVsbFNjcmVlbkFuaW1hdGlvbkR1cmF0aW9uLCBBV19CTEVORCB8IEFXX0FD
VElWQVRFKTsKIAogICAgIG1fcHJpdmF0ZS0+bV9jbGllbnQtPmZ1bGxTY3JlZW5DbGllbnRXaWxs
RW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fZnVsbFNjcmVlbldp
bmRvdyk7Ci0gICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7
CisgICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgQVNTRVJU
KG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93KTsKICAgICBtX3ByaXZhdGUtPm1fZnVsbFNj
cmVlbldpbmRvdy0+Y3JlYXRlV2luZG93KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2lu
LmNwcAppbmRleCAxMDY3Yjk2MDkzZGIyZWQ1OTFhMjFhMzFkOWQwMjU2ZGMxMjkzZTg5Li5mMTQ0
MjU3MmNjNmQxZDU0YmJlZTU4YmRiYzM2ZWRmNzc0YWFiYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRDYWlyb1dpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBs
YXRmb3JtSW5pdChIREMgZGMsIGJvb2wgaGFzQWxwaGEpCiAKICAgICBjYWlyb190KiBjciA9IGNy
ZWF0ZUNhaXJvQ29udGV4dFdpdGhIREMoZGMsIGhhc0FscGhhKTsKIAotICAgIG1fZGF0YSA9IG5l
dyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bUNvbnRleHRDYWlybz4oY3IpKTsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlKG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7CiAgICAg
bV9kYXRhLT5wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX2RhdGEp
OwogICAgIG1fZGF0YS0+bV9oZGMgPSBkYzsKICAgICBpZiAocGxhdGZvcm1Db250ZXh0KCktPmNy
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDlmMmQzODg4NTAwYzY5
Zjg1M2VmZTUyZmIzZTk4OTM5NWQ1NDY1ZDkuLmQzZTQ3N2UxMjAxYmI2MThjNzc5MDZiNTY1Yjll
MzQzMDdhYTEwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtNjMsNyAr
NjMsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMgaGRjLCBJRDJEMURD
UmVuZGVyVGFyZ2V0KiogcmVuZGVyVGFyZ2V0LCBSRQogCiAgICAgKCpyZW5kZXJUYXJnZXQpLT5C
aW5kREMoaGRjLCAmcmVjdCk7CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7Cisg
ICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOwogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShvd25lZFBsYXRmb3JtQ29udGV4dCksIEJpdG1hcFJl
bmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7
CiB9CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5p
dChIREMgaGRjLCBib29sIGhhc0FscGhhKQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldC5nZXQoKSk7CisgICAg
YXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQ+KHJlbmRlclRhcmdldC5nZXQoKSk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwgQml0bWFw
UmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9IGhk
YzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBiZDc2ZWZi
YmE5ZDBlODk3ZDNkMjg4ZTg1ZThkMjQ0NGNjNGY4ZjRlLi4xZWJiNWIwOWQzODUzN2MwMTkyMjBi
OTQ3ZGNhZDk0NGQ4ZTEwMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dElt
cGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJldHVy
biBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBb
JnBsYXRmb3JtQ29udGV4dF0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHBsYXRmb3JtQ29u
dGV4dCk7CiAgICAgICAgIH0pOwogfQogCkBAIC01NSwxNCArNTUsMTQgQEAgR3JhcGhpY3NDb250
ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmNyZWF0ZUYKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJ
bXBsRmFjdG9yeSgKICAgICAgICAgW3JlbmRlclRhcmdldF0oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHJlbmRlclRhcmdldCk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRl
eHQsIHJlbmRlclRhcmdldCk7CiAgICAgICAgIH0pOwogfQogCiBHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgOiBH
cmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9y
bSB7IH0pCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBt
X3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+
KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0
OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3BsYXRm
b3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAg
ICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CkBAIC03MCw5ICs3
MCw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4CiAKIEdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKICAgICA6IEdyYXBoaWNzQ29udGV4
dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKLSAgICAs
IG1fb3duZWRQbGF0Zm9ybUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKKyAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQobWFr
ZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKICAgICAsIG1f
cGxhdGZvcm1Db250ZXh0KCptX293bmVkUGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRl
KHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRm
b3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6
R1BVTWVtb3J5KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFw
UmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRl
eHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJp
dmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNw
cAppbmRleCA1YmRlNGNlZGY1MTZhOTE3OWE2ZDNkM2IzZTMzZDEzNGVkNWFiNTExLi4xZDgwNDIw
Y2Y3ZWM2Y2Q3NzVhNjJiYWVhMjJmOTkwNjA3ZWI0Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNw
cApAQCAtOTUsNyArOTUsNyBAQCBHcmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA6On5XaW5k
b3dzQml0bWFwKCkKIAogc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDo6V2luZG93c0Jp
dG1hcD4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVXaW5kb3dzQml0bWFwKGNvbnN0IEludFNpemUm
IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2luZG93c0JpdG1hcD4obV9k
YXRhLT5tX2hkYywgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2luZG93c0JpdG1hcD4o
bV9kYXRhLT5tX2hkYywgc2l6ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3Bw
CmluZGV4IDA2YzE3NDU3OWE0YmMxMzA5MWYzNGI1Nzk0YWFhOTI5OTNiYmJhMjQuLjM1YTlmZjYx
MTM1MWMzM2M3MTc0ZDkyYTFmZGNmNDQ3MGU4MWE4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5j
cHAKQEAgLTExMiw4ICsxMTIsOCBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBOb3RlOiBUaGlzIHBsYWNlcyB0aGUgYml0bWFwY29udGV4dCBpbnRv
IGEgbG9ja2VkIHN0YXRlIGJlY2F1c2Ugb2YgdGhlIEJlZ2luRHJhdyBjYWxsIGluIHRoZSBjb25z
dHJ1Y3Rvci4KLSAgICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Ci0gICAgbV9kYXRh
LmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRhLnBsYXRm
b3JtQ29udGV4dC5nZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0
VHlwZTo6R1BVTWVtb3J5KTsKKyAgICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gbWFrZVVuaXF1
ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CisgICAgbV9k
YXRhLmNvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRhLnBsYXRmb3Jt
Q29udGV4dC5nZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlw
ZTo6R1BVTWVtb3J5KTsKIAogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA1ODM4ZWMxNTdhMmM3Yjcx
NjNiNzE2ODJhNGViOGM4MDM0ZTk2MzIxLi42ZDY0YWU5YTZlM2E0MTdmYjE0ZjEyMTY2ZjY4ZDNj
OWE1NTI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uLmNwcApAQCAtODIsNyArODIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b246On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAgICAg
IHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsgfSwKKyAgICAg
ICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAogICAgICAgICAg
ICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAgfQog
fQpAQCAtMzAxLDcgKzMwMSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCgp
IGNvbnN0CiB7IAotICAgIGF1dG8gcmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KCk7CisgICAgYXV0byByYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKTsKICAgICBpZiAobV9wcmVzZW50ZXIgJiYgbV9wcmVzZW50ZXItPm1heFRpbWVMb2Fk
ZWQoKSA+IDApCiAgICAgICAgIHJhbmdlcy0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fcHJlc2VudGVyLT5tYXhUaW1lTG9hZGVkKCkpKTsK
ICAgICByZXR1cm4gcmFuZ2VzOwpAQCAtODg4LDcgKzg4OCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVvUHJlc2Vu
dGVyKE1lCiAgICAgbV9zb3VyY2VSZWN0LmJvdHRvbSA9IDE7CiAgICAgbV9zb3VyY2VSZWN0LnJp
Z2h0ID0gMTsKIAotICAgIG1fcHJlc2VudGVyRW5naW5lID0gc3RkOjptYWtlX3VuaXF1ZTxEaXJl
Y3QzRFByZXNlbnRlcj4oKTsKKyAgICBtX3ByZXNlbnRlckVuZ2luZSA9IG1ha2VVbmlxdWU8RGly
ZWN0M0RQcmVzZW50ZXI+KCk7CiAgICAgaWYgKCFtX3ByZXNlbnRlckVuZ2luZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vV0tDQUltYWdlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAppbmRleCA4YzBlYjI0YjE5YzcxMzBkMzYyNTc1ZTdiNDgw
ZDY0MzlhOGFlNGI2Li45ZDdkOTJlOGVhZDk2YTFiYmRmYmQxZDkyZGM5NjYyMWM2YzQyZjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdl
UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NB
SW1hZ2VRdWV1ZS5jcHAKQEAgLTUxLDEzICs1MSwxMyBAQCBzdGF0aWMgdm9pZCBXS0NBSW1hZ2VR
dWV1ZVJlbGVhc2UoQ0FJbWFnZVF1ZXVlUmVmIGlxKQogfQogCiBXS0NBSW1hZ2VRdWV1ZTo6V0tD
QUltYWdlUXVldWUodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgY2Fw
YWNpdHkpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVBy
aXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVByaXZh
dGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBhZG9wdENGKHdrQ0FJbWFn
ZVF1ZXVlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIGNhcGFjaXR5KSk7CiB9CiAKIFdLQ0FJbWFnZVF1
ZXVlOjpXS0NBSW1hZ2VRdWV1ZShjb25zdCBXS0NBSW1hZ2VRdWV1ZSYgbykKLSAgICA6IG1fcHJp
dmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKKyAgICA6IG1f
cHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKIHsKICAgICBtX3By
aXZhdGUtPm1faW1hZ2VRdWV1ZSA9IG8ubV9wcml2YXRlLT5tX2ltYWdlUXVldWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggNzFhMDBh
MzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NC4uNDIyNTJkMzRiNTRmZTZjMmMyNmI1
MjJjNjYwZTg2MmYwNTZlZjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcApAQCAtNDMsMjQgKzQzLDI0IEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5
cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJk
PigiQ0xJUEJPQVJEIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIkNMSVBC
T0FSRCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yR2xvYmFsU2VsZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQ
YXN0ZWJvYXJkPigiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+
KCJQUklNQVJZIik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhOjpjcmVh
dGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0YTo6
Y3JlYXRlKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIEFT
U0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVs
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNw
cAppbmRleCAwNGU5NmFiNTkyZWI5ODI5NDQ3YzMzM2ZiYTgxODc3Mjk3MDdmMDMzLi5hZjhmZjM0
MjQ2YmM5NzJmMWE1ZmY3MzdmOTkyOTgwOWZiNjY5YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAg
dm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2Fy
ZCogY2xpcGJvYXJkLCBjb25zdCBTZWwKIAogICAgIGlmIChudW1iZXJPZlRhcmdldHMgPiAwICYm
IHRhYmxlKSB7CiAgICAgICAgIFNldEZvclNjb3BlPFNlbGVjdGlvbkRhdGEqPiBjaGFuZ2Uoc2V0
dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgY29uc3RfY2FzdDxTZWxlY3Rpb25EYXRhKj4oJnNlbGVj
dGlvbikpOwotICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBib2FyZFNl
dERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBXVEZNb3ZlKHByaW1hcnlTZWxlY3Rp
b25DbGVhcmVkKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8Q2xpcGJvYXJkU2V0
RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJpbWFyeVNlbGVjdGlv
bkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YShjbGlw
Ym9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENsaXBib2FyZENvbnRlbnRzQ2FsbGJh
Y2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgZGF0YS5nZXQoKSkpIHsKICAgICAg
ICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShjbGlwYm9hcmQsIG51bGxwdHIsIDAp
OwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEoKSBzdWNj
ZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sgdGFrZXMgdGhlIG93bmVyc2hpcCBv
ZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAppbmRleCBiZGNjOTllODU5ZDQ5NzUwNzhmZjNj
NWUyZWJjMzg1ZDliOTViOTUyLi43M2UwNzU4YTZlZGQxZTE5MzIzMTA4M2Y4OWE3ZTdmZGYyMGQx
Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVH
YWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdh
ZGdldC5jcHAKQEAgLTM1LDIwICszNSwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVH
YWRnZXQ+IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoY29uc3QgUmVuZGVyVGhlbWVHYQogewog
ICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlw
ZTo6R2VuZXJpYzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVH
YWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBv
c2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpUZXh0RmllbGQ6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0
PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdz
LCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6UmFkaW86CiAg
ICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6Q2hlY2s6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNp
YmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1l
VG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2Fz
ZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QXJyb3c6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3Ms
IHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVBcnJvd0dh
ZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVy
VGhlbWVHYWRnZXQ6OlR5cGU6Okljb246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24p
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUljb25HYWRnZXQ+KGluZm8s
IHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0
OjpUeXBlOjpTY3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0Pihp
bmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdh
ZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywg
cGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRo
ZW1lV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdp
ZGdldC5jcHAKaW5kZXggMDVkMTJkZDllYWZiZWYwMmE0NTljYTUyNzY0MTdhNWI5YjBlODk3Ni4u
Y2E2ZWQ5MThhNTAzM2UyOTc2ZGI4NGQ4OWMyMDQ4ODcwMGYwMmJjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCkBAIC00Miw0OSAr
NDIsNDkgQEAgUmVuZGVyVGhlbWVXaWRnZXQmIFJlbmRlclRoZW1lV2lkZ2V0OjpnZXRPckNyZWF0
ZShUeXBlIHdpZGdldFR5cGUpCiAgICAgYXV0byBhZGRSZXN1bHQgPSB3aWRnZXRNYXAoKS5lbnN1
cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdpZGdldFR5cGUpLCBbd2lkZ2V0VHlwZV0oKSAtPiBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVXaWRnZXQ+IHsKICAgICAgICAgc3dpdGNoICh3aWRn
ZXRUeXBlKSB7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2Fs
U2Nyb2xsYmFyUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5k
ZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNj
cm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNj
cm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5
cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6VmVy
dGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNj
cm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRp
b246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jpem9u
dGFsU2Nyb2xsYmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
VGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNj
cm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1l
U2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6
VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVS
VElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElP
Tl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CiAgICAg
ICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9y
TGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Ny
b2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpN
b2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpM
ZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFy
PihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJ
bmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNjcm9sbElu
ZGljYXRvcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1l
U2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxi
YXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5k
ZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1l
U2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lk
Z2V0OjpUeXBlOjpDaGVja0J1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlw
ZTo6Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dn
bGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7CiAgICAgICAg
IGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlJhZGlvQnV0dG9uOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRlclRo
ZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5
cGU6OlJhZGlvKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0dG9u
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0b24+
KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Ok5v
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0dG9uRGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihS
ZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVz
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6Q29tYm9Cb3g6Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUNvbWJvQm94PigpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVDb21ib0JveD4oKTsKICAg
ICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6RW50cnk6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oKTsKICAgICAgICAgY2FzZSBSZW5k
ZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VsZWN0ZWRFbnRyeToKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJlbmRlclRoZW1lRW50cnk6OlNlbGVj
dGVkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRy
eT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6OlNlYXJjaEVudHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKKyAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+KCk7CiAgICAgICAgIGNhc2UgUmVu
ZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNwaW5CdXR0b246Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CiAgICAgICAgIGNhc2UgUmVu
ZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2xpZGVyOgotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9WRVJU
SUNBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4o
R1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6SG9yaXpvbnRhbFNsaWRlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09SSUVO
VEFUSU9OX0hPUklaT05UQUwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBl
OjpQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVybWlu
YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NC
YXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVybWluYXRlKTsKICAgICAgICAg
Y2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SW5kZXRlcm1pbmF0ZVByb2dyZXNzQmFyOgot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVzc0Jh
cj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5kZXRlcm1pbmF0ZSk7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVt
ZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsKICAgICAgICAgY2FzZSBSZW5kZXJU
aGVtZVdpZGdldDo6VHlwZTo6TGlzdFZpZXc6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lSWNvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRo
ZW1lSWNvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6V2luZG93
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVXaW5kb3c+
KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4oKTsK
ICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlJlbmRl
clRoZW1lU2Nyb2xsYmFyKEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBNb2RlIG1vZGUKICAg
ICBpbmZvLnR5cGUgPSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJpYzsKICAgICBpbmZv
Lm5hbWUgPSAiY29udGVudHMiOwogICAgIGluZm8uY2xhc3NMaXN0LmNsZWFyKCk7Ci0gICAgbV9j
b250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdU
S19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1fc2Nyb2xsYmFyLmdldCgpKTsKKyAg
ICBtX2NvbnRlbnRzID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RL
X09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIuZ2V0KCkpOwogICAg
IGluZm8ubmFtZSA9ICJzbGlkZXIiOwogICAgIG1fc2xpZGVyID0gUmVuZGVyVGhlbWVHYWRnZXQ6
OmNyZWF0ZShpbmZvLCBtX2NvbnRlbnRzLT5jaGlsZChtX3Ryb3VnaFBvc2l0aW9uKSk7CiB9CkBA
IC0xOTcsNyArMTk3LDcgQEAgUmVuZGVyVGhlbWVDb21ib0JveDo6UmVuZGVyVGhlbWVDb21ib0Jv
eCgpCiAgICAgfTsKICAgICBpbmZvLm5hbWUgPSAiYm94IjsKICAgICBpbmZvLmNsYXNzTGlzdCA9
IHsgImhvcml6b250YWwiLCAibGlua2VkIiB9OwotICAgIG1fYm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUws
IGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKKyAgICBtX2JveCA9IG1ha2VVbmlxdWU8UmVu
ZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBjaGls
ZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CiAgICAgUmVuZGVyVGhlbWVHYWRnZXQqIGJ1dHRvbiA9
IG1fYm94LT5jaGlsZCgwKTsKICAgICBpbmZvLmNsYXNzTGlzdC5yZW1vdmVMYXN0KCk7CiAgICAg
bV9idXR0b25Cb3ggPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGluZm8sIGJ1dHRvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDg0MDdjMTEwMWRkZDZkYjZlMzc4ZGVmY2Iz
YWI4MjZiZjcyNjQ1NGQuLjc4Njk3ZWIwMDAwZjdmN2I4MmE3ZDBlY2Y1Zjk4NWExZTkyODljMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgQk1Q
SW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIoYm9vbCBvbmx5U2l6ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0
YU9mZnNldCwgZmFsc2UpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VS
ZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwgZmFsc2UpOwogICAg
ICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3YmE3ZWQ5MTAxY2UyNWE5YmY2ZTIzMTA4N2JmMGJjMTE0
Y2MyMmQ2Li40ZjM0ODdlMzM0NzY0MDU0NzRjZjg2YjVjNjA2ZDJjMTk4OGM3Y2JhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgR0lGSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5LCBib29s
IGFsbERhdGFSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpIHsKLSAgICAg
ICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsKKyAg
ICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsKICAgICAg
ICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuY3BwCmluZGV4IDFjY2E1ZTU5ZWViMzUxYjA1OGEyMWRiMTM0ZjY0Mzc5MWU1MDc3
Y2EuLmQ3NzE4NmVhOTczOWJkZmIyYzU2MjI4ZWU0Y2Y1ZTg4MjhkODg1OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIGJvb2wgR0lGRnJhbWVDb250ZXh0
OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2ViQ29y
ZTo6CiAgICAgICAgIGlmICghaXNEYXRhU2l6ZURlZmluZWQoKSB8fCAhaXNIZWFkZXJEZWZpbmVk
KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBtX2x6d0NvbnRleHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNsaWVudCwgdGhpcyk7CisgICAgICAgIG1f
bHp3Q29udGV4dCA9IG1ha2VVbmlxdWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlzKTsKICAg
ICAgICAgaWYgKCFtX2x6d0NvbnRleHQtPnByZXBhcmVUb0RlY29kZSgpKSB7CiAgICAgICAgICAg
ICBtX2x6d0NvbnRleHQgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
Nzg2LDcgKzc4Niw3IEBAIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OnNldFJlbWFpbmluZ0J5dGVzKHNp
emVfdCByZW1haW5pbmdCeXRlcykKIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OmFkZEZyYW1lSWZOZWNl
c3NhcnkoKQogewogICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5KCkgfHwgbV9mcmFtZXMubGFzdCgp
LT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7CisgICAgICAgIG1fZnJhbWVzLmFw
cGVuZChtYWtlVW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7CiB9CiAK
IC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIHRvIGNsb3NlIHRvIGRvTFpXKCkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwCmluZGV4IDE4NzBiYjE2MGI4NDk0OGYwYjU5ZGU0NTExNjM2YmE0
YzBmMzhmMmUuLmZmNmExYzg3YWU2ZjA1YjQ5Y2NjMTI4YWJlMDVjMzAzZDZlZWJhZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBJQ09JbWFn
ZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBoYXZlIGFscmVhZHkgc2l6ZWQgbV9mcmFtZUJ1ZmZlckNhY2hlIGJlZm9yZSB0aGlz
LCBhbmQKICAgICAgICAgICAgIC8vIHdlIG11c3Qgbm90IHJlc2l6ZSBpdCBhZ2FpbiBsYXRlciAo
c2VlIGNhdXRpb24gaW4gZnJhbWVDb3VudCgpKS4KICAgICAgICAgICAgIEFTU0VSVChtX2ZyYW1l
QnVmZmVyQ2FjaGUuc2l6ZSgpID09IG1fZGlyRW50cmllcy5zaXplKCkpOwotICAgICAgICAgICAg
bV9ibXBSZWFkZXJzW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRo
aXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOworICAgICAgICAgICAgbV9ibXBS
ZWFkZXJzW2luZGV4XSA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVudHJ5
Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4
XS0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2luZGV4
XS0+c2V0QnVmZmVyKCZtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZWJmZTQ1MzBmNzE4NTMwNzJlM2E1M2Qy
ZmNjNjYwZTdhMDk2Y2Y0My4uMGMwNTQ5YjVhM2VlMDRhZjI5Y2E3ZDYwNjAzNWZjZmU2MTc0ODUy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC02NTMsNyArNjUzLDcgQEAg
dm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0gICAgICAg
IG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRoaXMpOworICAg
ICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8SlBFR0ltYWdlUmVhZGVyPih0aGlzKTsKIAogICAg
IC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVkIGFs
bCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCBjMThhMzliNTkxMzNhMzE4ZjE1MTA1ODFlOGY5MWViZGQ3Njg3OWFi
Li42MmNiOWIyMmEwMWYyNmU5ZjJjZDQxZGVhMzgxYjM2MzY4OTdlZTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVy
OjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5zaWduZWQgaGFsdEF0RnJhbWUsIGJvb2wgYWxsRGF0
YVJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0gICAgICAgIG1fcmVh
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1f
cmVhZGVyID0gbWFrZVVuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CiAKICAgICAvLyBJZiB3
ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2ZSByZWNlaXZlZCBhbGwgdGhlIGRh
dGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IDIwOWY4OGY0N2EzYjdjZGMwMTQzZGU5
MmUyNGJhZGRmOTY2NGI1ZjQuLmNhZTNkY2YxNjQ3OTZjZWVjYjY4YjI0NDhmMTEzM2MxMGVjOWMy
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5t
bQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBMZWdhY3lUaWxlQ2FjaGU6
OkxlZ2FjeVRpbGVDYWNoZShXQUtXaW5kb3cqIHdpbmRvdykKICAgICA6IG1fd2luZG93KHdpbmRv
dykKICAgICAsIG1fdG9tYnN0b25lKGFkb3B0TlMoW1tMZWdhY3lUaWxlQ2FjaGVUb21ic3RvbmUg
YWxsb2NdIGluaXRdKSkKLSAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1
ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQorICAgICwgbV96b29tZWRPdXRU
aWxlR3JpZChtYWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSkpCiAg
ICAgLCBtX3RpbGVDcmVhdGlvblRpbWVyKCp0aGlzLCAmTGVnYWN5VGlsZUNhY2hlOjp0aWxlQ3Jl
YXRpb25UaW1lckZpcmVkKQogewogICAgIFtob3N0TGF5ZXIoKSBpbnNlcnRTdWJsYXllcjptX3pv
b21lZE91dFRpbGVHcmlkLT50aWxlSG9zdExheWVyKCkgYXRJbmRleDowXTsKQEAgLTIzNiw3ICsy
MzYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQogCiAgICAg
aWYgKG1fY3VycmVudFNjYWxlICE9IG1fem9vbWVkT3V0VGlsZUdyaWQtPnNjYWxlKCkpIHsKICAg
ICAgICAgaWYgKCFtX3pvb21lZEluVGlsZUdyaWQpIHsKLSAgICAgICAgICAgIG1fem9vbWVkSW5U
aWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVT
aXplKTsKKyAgICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9IG1ha2VVbmlxdWU8TGVnYWN5
VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKICAgICAgICAgICAgIFtob3N0TGF5ZXIoKSBh
ZGRTdWJsYXllcjptX3pvb21lZEluVGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKV07CiAgICAgICAg
ICAgICBob3N0TGF5ZXJTaXplQ2hhbmdlZCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE5MWFjNzY5NjIxNTEyMTUzZGJk
Y2IwNzhkZDY2ZjQ2NTUzYmMyMWQuLjAyNzFiOTNlNzA1Y2UyYzQyZDYzMmZlMmRiMjlhYTQ2ZTgz
NmQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CkBAIC02NiwxMiArNjYsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0lt
YWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9hcmQi
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZv
ckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgp
KTsKIH0KIAogI2VuZGlmCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZU1hcmt1cChjb25zdCBTdHJpbmcmKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFz
dGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKCkpOwog
fQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBj
b250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9v
ay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXggYTlk
OWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEzMWNlNjQ2OTAyNTY4NS4uYzJiNWEwYjA4YmRmNzVlOGMw
MWNkOWJkMmQ1MWMzMTQ5MzA1ZjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLm1tCkBAIC04NCw3ICs4NCw3IEBAIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJlZ2lz
dGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKnVybCwgTlNTdHJpbmcKICAgICBp
ZiAoW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OnVw
ZGF0ZWRNSU1FVHlwZS5nZXQoKV0pIHsKICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB1dGkg
PSBhZG9wdE5TKFBBTDo6c29mdExpbmtfUXVpY2tMb29rX1FMVHlwZUNvcHlVVElGb3JVUkxBbmRN
aW1lVHlwZSh1cmwsIHVwZGF0ZWRNSU1FVHlwZS5nZXQoKSkpOwogCi0gICAgICAgIGF1dG8gY29u
dmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGkuZ2V0
KCkpOworICAgICAgICBhdXRvIGNvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRl
cj4oZGF0YSwgdXRpLmdldCgpKTsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZXZpZXdSZXF1
ZXN0ID0gY29udmVydGVyLT5wcmV2aWV3UmVxdWVzdCgpOwogCiAgICAgICAgIC8vIFdlIHVzZSBb
cmVxdWVzdCBVUkxdIGhlcmUgaW5zdGVhZCBvZiB1cmwgc2luY2UgaXQgd2lsbCBiZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJ
T1MubW0KaW5kZXggMTA3Yzc3Yzc1M2VhYjdkOTJkYTI5NDg3Y2E2ZjY1ZjgwNzA0ODIxMy4uNmQ5
Y2NlMTViODc0ZjE1ZjE1NDg3NWVhMGVlNmI5ZjEwMzVhODM2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCkBA
IC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+IFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hCiAgICAgaWYgKCFNZWRpYVBs
YXllckxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TPihjbGllbnQpOwogfQogCiBS
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1vdGVD
b21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQppbmRleCAwMWYwYTliYjIwYTI0OGI2OTk4ODU2
NDcwYWVlMzc0YTk4Y2ZhNTFjLi5lZDYzMmVhNWUzZjU1OTdlOWQ3NmZkMmU1NTY5NTYxZmU2YzRj
MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0
b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9y
SU9TLm1tCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVB
cmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3Jv
bGxBbmltYXRvcklPUz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9ySU9T
OjpTY3JvbGxBbmltYXRvcklPUyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAK
aW5kZXggMDU0M2VkNWU5ZmM5ZmNmZTNiYmFhNDAzNTVlNDA3MmY5ZjNjM2Y0MC4uZjhhNjFlYzcw
YzBjMWE0Y2QzNzdmMGU3Y2Q2NzZlZmI5ZGU1YmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4o
KTsKIH0KIAogUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDUxNTIwZGNiYmVhNTkyMTg1YzMyNjcwMmNi
YTY5ZmU4OGI0ZDRkZGUuLjhlYjE1Y2Y4ODUyZDk4NTc0NDdlMDU5YzM4YWNhZWJhMjM0MTVkMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0x
MDAsNyArMTAwLDcgQEAgUGFzdGVib2FyZDo6UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvbWkKIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewogICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFsUGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogfQogCkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7
CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9hcmQpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2Fy
ZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBh
c3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1lcygp
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQppbmRleCAwNWNjMDg5NTdlMWQ1MDEyNGRkNjMy
ZTJhNGM4OTIxMjk4OTY5NjExLi4xYWEyY2Q4MDEzMmYyYzIxZWUzOGI5ZmZiZGI4MzM3M2JiZjRj
MTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFu
ZExpc3RlbmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVD
b21tYW5kTGlzdGVuZXJNYWMubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5k
TGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+KGNs
aWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihj
bGllbnQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3VwcG9y
dGVkQ29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFu
aW1hdG9yTWFjLm1tCmluZGV4IGE4MzE3NTEyMmVjMmU0YjZiNmRlNTFiZTZkZjUyNjRiNDFhMWY4
YzQuLjY4NjBlMzNjM2EzYjIxNTYzMDVmYjMxYWY0MjdkYzQ5MDIzNTg3YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTY5Nyw3
ICs2OTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxB
bmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJs
ZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JNYWM+
KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvck1h
Yz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvck1hYzo6U2Nyb2xsQW5pbWF0
b3JNYWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDFiOWRjNTM0NWI4ODFlYjM2ZDk2ZmNlMzU4MmRm
MGU1NGExMzg1YmEuLmUyNDQ1YmM4MjNmODZlMDU1YjBlNTc4NzdkNmNmNTMxYTRmZmNjOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKICAgICBpZiAoIXdyaXRlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlvVHJh
Y2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lkKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVk
aWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92
ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJZCkpOwogfQogCiBNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI+JiYgd3JpdGVyLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQsIFN0
cmluZyYmIHZpZGVvVHJhY2tJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1
ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggZGI5NGZkYWY4M2E4YWJkNjdhZmNmZDZlYTM2OWZh
YTg5YzQ2YzNlMi4uNTlhYjM4NDBmZDczNmNhMTQ1MDE2YzdmNjYwZWNhM2IwOTAzMjQ4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAK
QEAgLTkxLDE0ICs5MSwxNCBAQCBBdWRpb0NhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJBdWRpb0Nh
cHR1cmVTb3VyY2U6OmZhY3RvcnkoKQogCiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6OkdT
dHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlIGRldmljZSwg
U3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwg
U3RyaW5nIHsgZGV2aWNlLmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2Nh
cHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oZGV2aWNlKSkK
KyAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPihkZXZp
Y2UpKQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQogCiBHU3RyZWFtZXJB
dWRpb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZShTdHJpbmcmJiBk
ZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGlt
ZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBXVEZNb3ZlKGRl
dmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1
cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkKKyAgICAsIG1f
Y2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPigpKQogewogICAgIGlu
aXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggZDVkZmMzODQxM2U2NTMwOGRiMTU3OTZi
MmJlYzkzZTkwYTU2OTEzOC4uMDgzZDQ0NzI4MzlmOWJiYzNmNjk0NjZkMTFmMzg0OTEzNjY3YzZi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCkBAIC00MzUsOCArNDM1LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9z
cmNfY2xhc3NfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyY0NsYXNzKiBrbGFzcykKIAogc3RhdGlj
IHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyYyog
c2VsZikKIHsKLSAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4oc2VsZik7Ci0gICAgc2VsZi0+
bWVkaWFTdHJlYW1PYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0TWVkaWFTdHJlYW1P
YnNlcnZlcj4oc2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0gbWFr
ZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNlbGYt
Pm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2
ZXI+KHNlbGYpOwogICAgIHNlbGYtPmZsb3dDb21iaW5lciA9IGdzdF9mbG93X2NvbWJpbmVyX25l
dygpOwogICAgIHNlbGYtPnZpZGVvU3JjLnJlc2V0KHRydWUpOwogICAgIHNlbGYtPmF1ZGlvU3Jj
LnJlc2V0KGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2Fw
dHVyZVNvdXJjZS5jcHAKaW5kZXggZTVkOWIwZTAyNzZlZGRhNWRiZDUyMGJjMTBmMzUxODBkMDE1
ZDY5Yi4uOTdiZTFmMTJmYmIyMmRjMzU4Yzk5YzgzOWY5ODFmMTY1NmE4ZTEyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTEy
NywxNCArMTI3LDE0IEBAIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9DYXB0
dXJlU291cmNlOjpkaXNwbGF5RmFjdG9yeSgpCiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJj
ZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJpbmcm
JiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIgKnNvdXJjZV9mYWN0b3J5KQog
ICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdURk1v
dmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2Vf
dW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKKyAgICAsIG1f
Y2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFjdG9y
eSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1lclZp
ZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1lckNh
cHR1cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1lVmlk
ZW9DYXB0dXJlU291cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJpbmcg
eyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVyZXIo
c3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQorICAgICwg
bV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkpCiB7
CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNv
ZGVyRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKaW5kZXggY2QwZTZjZDQzZjVl
NDBiNDg4MDI5ZWJlNGRhNGIyMTUyNzk3MDBkYi4uODM1ODFlODVhMzk2MmQ5N2UwMTc0M2IxMGU1
NmNlYWExNTFjZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRl
b0VuY29kZXJGYWN0b3J5LmNwcApAQCAtNTEzLDE0ICs1MTMsMTQgQEAgc3RkOjp1bmlxdWVfcHRy
PHdlYnJ0Yzo6VmlkZW9FbmNvZGVyPiBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpDcmVh
dGVWaWRlb0UKICAgICAgICAgZ19vYmplY3RfZ2V0KHdlYnJ0Y2VuY29kZXIuZ2V0KCksICJlbmNv
ZGVyIiwgJmVuY29kZXIub3V0UHRyKCksIE5VTEwpOwogCiAgICAgICAgIGlmIChlbmNvZGVyKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rlcj4o
Zm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZQOEVuY29k
ZXI+KGZvcm1hdCk7CiAKICAgICAgICAgR1NUX0lORk8oIlVzaW5nIFZQOCBFbmNvZGVyIGZyb20g
TGliV2ViUlRDLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx3ZWJydGM6Okxp
YnZweFZwOEVuY29kZXI+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazx3ZWJydGM6OkxpYnZweFZwOEVuY29kZXI+KCk7CiAgICAgfQogCiAgICAgaWYg
KGZvcm1hdC5uYW1lID09IGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCmlu
ZGV4IDY5MTFjNmZhZTQ0ZDY3YmI4NGJiYTAxNTJmNjMwYjlhZmNlMDNjYjAuLjc0NTMzYzVmYTRk
ZjBkNGU1YTY0ZDc1Y2U2MjdiMzI0MmM0NmI4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcApAQCAtODIsNyArODIsNyBAQCBjbGFzcyBCYXNpY1BhY2tldFNvY2tldEZh
Y3RvcnkgOiBwdWJsaWMgcnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEJhc2ljUGFja2V0U29j
a2V0RmFjdG9yeShydGM6OlRocmVhZCYgbmV0d29ya1RocmVhZCkKLSAgICAgICAgOiBtX3NvY2tl
dEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oJm5l
dHdvcmtUaHJlYWQpKQorICAgICAgICA6IG1fc29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oJm5ldHdv
cmtUaHJlYWQpKQogICAgIHsKICAgICB9CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyhQZWVyQ29ubmVjdGlv
bkZhY3RvcnlBbmRUaAogICAgIHJlc3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1Ro
cmVhZC0+U3RhcnQoKTsKICAgICBBU1NFUlQocmVzdWx0KTsKIAotICAgIGZhY3RvcnlBbmRUaHJl
YWRzLmF1ZGlvRGV2aWNlTW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENBdWRpb01v
ZHVsZT4oKTsKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IG1ha2VV
bmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGVlckNv
bm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKQpAQCAt
Mjg5LDEwICsyODksMTAgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKICAgICBhdXRvJiBmYWN0
b3J5QW5kVGhyZWFkcyA9IGdldFN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKG1fdXNlTmV0d29ya1Ro
cmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5uZXR3
b3JrTWFuYWdlcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgZmFj
dG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CiAKICAgICBpZiAoIWZhY3RvcnlB
bmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJlYWRz
LnBhY2tldFNvY2tldEZhY3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljUGFja2V0U29ja2V0
RmFjdG9yeT4oKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQpOworICAgICAgICBmYWN0
b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gbWFrZVVuaXF1ZTxCYXNpY1BhY2tl
dFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKICAgICBm
YWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LT5zZXREaXNhYmxlTm9uTG9jYWxo
b3N0Q29ubmVjdGlvbnMobV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpOwogCiAgICAg
cmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCAqZmFjdG9yeUFuZFRocmVhZHMu
bmV0d29ya01hbmFnZXIsICpmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LCBX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBudWxscHRyKTsKQEAgLTMxNSw3ICszMTUsNyBAQCBydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2ViUlRD
UHJvdmlkZXI6OmNyZWF0ZVBlZQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkJhc2lj
UG9ydEFsbG9jYXRvcj4gcG9ydEFsbG9jYXRvcjsKICAgICBmYWN0b3J5QW5kVGhyZWFkcy5zaWdu
YWxpbmdUaHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0oKSB7Ci0gICAgICAg
IGF1dG8gYmFzaWNQb3J0QWxsb2NhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpCYXNp
Y1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwor
ICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4oJm5ldHdvcmtNYW5hZ2VyLCAm
cGFja2V0U29ja2V0RmFjdG9yeSk7CiAgICAgICAgIGlmICghbV9lbmFibGVFbnVtZXJhdGluZ0Fs
bE5ldHdvcmtJbnRlcmZhY2VzKQogICAgICAgICAgICAgYmFzaWNQb3J0QWxsb2NhdG9yLT5zZXRf
ZmxhZ3MoYmFzaWNQb3J0QWxsb2NhdG9yLT5mbGFncygpIHwgY3JpY2tldDo6UE9SVEFMTE9DQVRP
Ul9ESVNBQkxFX0FEQVBURVJfRU5VTUVSQVRJT04pOwogICAgICAgICBwb3J0QWxsb2NhdG9yID0g
V1RGTW92ZShiYXNpY1BvcnRBbGxvY2F0b3IpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHJ0Yzo6UlRD
Q2VydGlmaWNhdGVHZW5lcmF0b3ImIExpYldlYlJUQ1Byb3ZpZGVyOjpjZXJ0aWZpY2F0ZUdlbmVy
YXRvcigpCiB7CiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0b3J5
QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKICAgICBpZiAo
IWZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yKQotICAgICAgICBmYWN0b3J5
QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRjOjpS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFk
LmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKKyAgICAgICAg
ZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yPihmYWN0b3J5QW5k
VGhyZWFkcy5zaWduYWxpbmdUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtU
aHJlYWQuZ2V0KCkpOwogCiAgICAgcmV0dXJuICpmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0
ZUdlbmVyYXRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJH
U3RyZWFtZXIuY3BwCmluZGV4IDE1ZTJhODc4OWMwN2ZiMGQwYWVjNmY2YzIwZjdiYjE3ZmE4ZGI3
ZDIuLjViODI3M2IwODUxOTZmZmQzMGU0ZDdhN2Y2NTUxMGJlYzA4MDMxNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGJvb2wgTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpCiAKIHN0
ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1Byb3Zp
ZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4oKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5PigpOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlckdT
dHJlYW1lcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hLmNwcAppbmRleCA4MmNiY2IxYzY2ZDMyZWExOGNkZWIxNjc5MzhkNjhkM2IxMmU0MTlh
Li5mN2Q4NWRjNjBhNjFhODE0NmRiYTBkMDNlNTVkNzU3NjJmZTkwZjgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVN0cmVhbUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcApAQCAtMTg4LDgg
KzE4OCw4IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRpb1Nh
bXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzCiAgICAgICAgIGlmICghcmVtb3RlSU9V
bml0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1faW5wdXREZXNjcmlwdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2NyaXB0
aW9uKTsKLSAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1faW5w
dXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1
dERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CiAKICAgICAgICAg
bV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24u
c2FtcGxlUmF0ZSgpICogMiwgc3RyZWFtVHJhY2soKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBlOGUzZDM0ODZkYTQzYWFjMWRkNTRiNzhlNmI0ZGY0
ZGM5ODE2NzkwLi42MTFhYzE2YjllY2I4Njg5OGEzNzI2NDcxYzc2MjA3MTJmYjliMzg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBAIC0xMzQsNyArMTM0LDcg
QEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUoKQogICAgIGNv
bnN0IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CiAgICAgRmlsbE91dEFTQkRGb3JMUENN
KG1fc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCksIGNoYW5uZWxDb3VudCwgYml0c1BlckJ5dGUg
KiBieXRlc1BlckZsb2F0LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGlzRmxvYXQsIGlz
QmlnRW5kaWFuLCBpc05vbkludGVybGVhdmVkKTsKIAotICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBtX3N0
cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKKyAgICBt
X2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX3N0cmVh
bUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVD
b3VudCk7CiAKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uOwog
ICAgIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShOVUxMLCAmbV9zdHJlYW1Gb3JtYXQs
IDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXREZXNjcmlwdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggZjlkYzRhODQ3
ZjRhMzU1ZDljY2ZmNGNkZTAzMDhkMGQ1YzVjNDQ1Ni4uMzg4ZDcxZTI0YjI1ZWJmNmQ3Nzg4MTRm
ZGQwYTk2NjNiMTcwNTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2VDb2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVihDVlBp
eAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNvbmZv
cm1lcikKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19i
cmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChwcmVm
ZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpIH0pOworICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9y
bWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0
aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxGb3Jt
YXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7CiAKICAgICByZXR1
cm4gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y29udmVydChwaXhlbEJ1ZmZlcik7CiB9CkBAIC03
NSw3ICs3NSw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIoCiAgICAgICAgIEludFNpemUgc2l6
ZSA9IHsgKGludClDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICwgKGludClDVlBp
eGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSB9OwogICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJvdGF0aW9uVG9BbmdsZShy
b3RhdGlvbikpOwotICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBpeGVs
QnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNlc3Np
b25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOworICAgICAgICBtX3JvdGF0aW9uU2Vzc2lv
biA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0p
LCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1h
Z2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOwogICAgIH0KIAog
ICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHBpeGVsQnVmZmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCmluZGV4
IDJmMWZiNTVlZTY3MWYyZjIyOGZjNTE1MWQwZGQ2OWNmOGVjNjk1Y2IuLjJjN2M0MWJkNjk2ZmYx
ZjliYWIzODM4MWE0YjU4Mzg1NjhiMThhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcApAQCAtOTgsNyArOTgsNyBAQCBSZW1vdGVE
YXRhQ2hhbm5lbE5vdGlmaWVyOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyKFJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaQogCiB2b2lkIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OmZpcmUo
KQogewotICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChzdGQ6Om1ha2VfdW5p
cXVlPFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2Nr
IiwgUlRDRGF0YUNoYW5uZWxJbml0KCkpKTsKKyAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3RlRGF0
YUNoYW5uZWwobWFrZVVuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0YUNo
YW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERhdGFDaGFu
bmVsU3RhdGVOb3RpZmllcjo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudCogY2xpZW50LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA1NTk5MzM4MmIzYTFk
YzM2ZDgzNTZiNjFiMjVjNzAwMmUwNzM0N2ZlLi4zODdhMjFkYWY0NTUyMzk2OGFlZTRmNzk0MTlk
M2Q4Yjg4NjkwZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBNZWRpYVBsYXll
ciBFbmlnbmUgU3VwcG9ydAogdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAgcmVn
aXN0cmFyKFtdIChNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBl
cywKKyAgICByZWdpc3RyYXIoW10gKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VV
bmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBvcnRl
ZFR5cGVzLAogICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogfQogCkBAIC0xNjYs
NyArMTY2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICBpZiAobV9tZWRpYVNvdXJj
ZVByaXZhdGUpCiAgICAgICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQo
KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wg
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKaW5kZXggY2M2N2NlNjg4ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5ZTNjMjhmOC4u
OTA1MTQzMTYyMWE4YzEwOGE2ZWYwZjUxZWI2MGY3NzRhZmNjMGExMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApA
QCAtMTU5LDkgKzE1OSw5IEBAIEJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291cmNlSGFuZGxl
KEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLCBtX2FzeW5j
IHsgYXN5bmMgfQogewogICAgIGlmIChtX2FzeW5jKQotICAgICAgICBtX2FzeW5jU3RyZWFtID0g
c3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgbV9hc3lu
Y1N0cmVhbSA9IG1ha2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7CiAgICAgZWxzZQot
ICAgICAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVN0cmVhbT4oKTsKKyAgICAg
ICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVlPEZpbGVTdHJlYW0+KCk7CiB9CiAKIEJsb2JSZXNvdXJj
ZUhhbmRsZTo6fkJsb2JSZXNvdXJjZUhhbmRsZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggODExMmI5
NzNlZWY1NGVkN2E1YzdhNTE0Y2YxMDJhYzk5MWU3NjUzMy4uYjU0MWY2MmVlMDA1MjAzNjJjMTU1
N2Y3Y2E0OTY0YTIzN2I4NzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBEZWNv
ZGluZ1Jlc3VsdERpc3BhdGNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVjb2Rp
bmdSZXN1bHREaXNwYQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGNyZWF0
ZURlY29kZVRhc2soY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYgc2NoZWR1
bGVDb250ZXh0LCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZVRhc2s+KAorICAgIHJldHVybiBt
YWtlVW5pcXVlPERlY29kZVRhc2s+KAogICAgICAgICB1cmwuc3RyaW5nKCksCiAgICAgICAgIHNj
aGVkdWxlQ29udGV4dCwKICAgICAgICAgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5k
ZXggMzBjMjdmNTc2YTE3N2U2YjZhYjE5NDc0MGE3ZDkwMjViNjU5ZmNhZC4uNmEzMWUzZTUyN2Y4
ZWM5MmQ2ZjYyYjk2Y2RkODE5NDQxNGI1NWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29uc3Qg
QXRvbVN0cmluZyYgcHJvdG9jb2wKIH0KIAogUmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxl
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9v
bCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpCi0g
ICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhpcywgY29u
dGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25pZmYg
JiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZikpCisgICAgOiBkKG1ha2VVbmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4o
dGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250
ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZikpCiB7CiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLmlzVmFsaWQo
KSkgewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUoSW52YWxpZFVSTEZhaWx1cmUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZGFkOTAxMGY5NTcwZWJjNTY3NjMzNTQz
ZmQxZmM1MDJmODQ2OWI5OS4uNzEzYjRkZmIzMGIyYWZkZmJlYWZmNGVlNTM3MGEyNTQ2ZmFkM2E0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xNjksNyArMTY5LDcg
QEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAg
IGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3Nl
bWFwaG9yZS53YWl0KCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9u
c2UKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMjYs
NyArMjI2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICB9OwogICAgIAogICAgIGlm
IChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9t
ZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUo
d29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3Jr
KSk7CiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICB9
OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUt
PmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykp
KTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWlsKENG
RXJyb3JSZWYKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21l
c3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTMxMSw3ICszMTEsNyBAQCBDRkNh
Y2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU6OgogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVl
KQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBw
ZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVs
c2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFw
aG9yZS53YWl0KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmcK
ICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3Jr
KSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248
dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRC
b2R5RGF0YShDRgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAgIG1f
bWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihX
VEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIEJv
b2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6Y2FuUmVzcG9uZFRvUHJvCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVl
dWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5h
cHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAg
ZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1fc2Vt
YXBob3JlLndhaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBjOWI1M2UzMTJhZDg1
NTc2ZDM2NmVmNGRjNTM3NDM5MWZlOGM2OTBjLi5iYTU1ZjAwNDhiOGU0ZGRjNWIwNzM0ZDk5M2Rj
OWIxM2I4Y2IyYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01MjMsNyArNTIzLDcg
QEAgLSAodm9pZClfcmVzdGFydAogCiAgICAgX3Jlc291cmNlID0gc2VsZi5zZXNzaW9uLmxvYWRl
ci5yZXF1ZXN0UmVzb3VyY2Uoc2VsZi5vcmlnaW5hbFJlcXVlc3QsIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoX3Jlc291
cmNlKQotICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2VsZikpOworICAgICAgICBfcmVzb3VyY2Ut
PnNldENsaWVudChtYWtlVW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4o
c2VsZikpOwogfQogCiAtICh2b2lkKV9jYW5jZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGE0NWE1ZjRlNGEwMjhm
ZTZlN2YyZGZiNzVlYzJjOGFlYzkzZWQyYmIuLjEwMTYyNGYyOTAwYTk0Y2M3ZDFhODk5ODk2NzZk
NmI0NWFiN2ZhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIE9wdGlvbmFsPFZlY3Rv
cjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0CiAgICAgICAgICJBTkQgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdMT0IgPykp
ICJcCiAgICAgICAgICJPUkRFUiBCWSBsZW5ndGgocGF0aCkgREVTQywgbGFzdHVwZGF0ZWQiOwog
Ci0gICAgYXV0byBwc3RtdCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2Rh
dGFiYXNlLCBzcWwpOworICAgIGF1dG8gcHN0bXQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVu
dD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpZiAoIXBzdG10KQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCkBAIC01NjYsNyArNTY2LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6ZGVsZXRl
QWxsQ29va2llcygpCiAKIHZvaWQgQ29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQo
Y29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRlbWVu
dCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAgIGlu
dCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlQocmV0ID09IFNRTElURV9P
Syk7CiAgICAgbV9zdGF0ZW1lbnRzLmFkZChzcWwsIFdURk1vdmUoc3RhdGVtZW50KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5jcHAKaW5kZXggZmE1YzhkMmQyMWI2MjczODE1ZDAyM2E0ZjIwNDU1MDE2ZTk2Mzhh
Zi4uZTJiNGI1ZGZiZGE2MmEzYzBjYjZiZjkxODFiYmQ2OGZkN2E0YTA4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZElu
ZGV4KCkKICAgICAgICAgLS1lbmQ7IC8vIExhc3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxlIChp
dCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2UoKTsK
LSAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVFbnRy
eT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKKyAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0g
bWFrZVVuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKIAog
ICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRyeVNp
emUoKSA8IG1fc3RvcmFnZVNpemVMaW1pdCkgewogICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFn
ZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9p
ZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmIGpv
YiwgUmVzb3VyY2VSZXNwb25zZSYKIAogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1cmwp
OyAvLyBJbnZhbGlkYXRlIGV4aXN0aW5nIGVudHJ5IG9uIDIwMAogCi0gICAgICAgIGF1dG8gY2Fj
aGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwgbV9j
YWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hl
RW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CiAgICAgICAgIGJvb2wgY2FjaGVhYmxlID0g
Y2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOwogICAgICAgICBpZiAo
Y2FjaGVhYmxlKSB7CiAgICAgICAgICAgICBjYWNoZUVudHJ5LT5zZXRJc0xvYWRpbmcodHJ1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmNwcAppbmRleCA3ZDE3MjE3YzJlNDQyYWM2ZjNkZThjNGI2MGE5NTI2YzlmNjU4NDJhLi43
YjA0ZmEyNmE0MmFiOTc4YWUwN2JkMzFmMGU2OTE1NTFiYmM0NjBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTEx
NSw3ICsxMTUsNyBAQCBDdXJsQ29udGV4dDo6Q3VybENvbnRleHQoKQogICAgIGlmIChhdXRvIHZh
bHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+KCJXRUJLSVRfQ1VSTF9NQVhfSE9TVF9DT05ORUNU
SU9OUyIpKQogICAgICAgICBtYXhIb3N0Q29ubmVjdGlvbnMgPSAqdmFsdWU7CiAKLSAgICBtX3Nj
aGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5l
Y3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOworICAgIG1fc2No
ZWR1bGVyID0gbWFrZVVuaXF1ZTxDdXJsUmVxdWVzdFNjaGVkdWxlcj4obWF4Q29ubmVjdHMsIG1h
eFRvdGFsQ29ubmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9ucyk7CiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgbV92ZXJib3NlID0gZW52VmFyLmRlZmluZWQoIkRFQlVHX0NVUkwiKTsKQEAgLTMzNiw3
ICszMzYsNyBAQCBDVVJMY29kZSBDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xDdHgodm9pZCogc3Ns
Q3R4KQogICAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKIAogICAgIGlm
ICghbV9zc2xWZXJpZmllcikKLSAgICAgICAgbV9zc2xWZXJpZmllciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOworICAgICAgICBtX3NzbFZlcmlmaWVyID0gbWFr
ZVVuaXF1ZTxDdXJsU1NMVmVyaWZpZXI+KHNzbEN0eCk7CiAKICAgICByZXR1cm4gQ1VSTEVfT0s7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IDlmYzY2ZWMwMjBlMjk5NmQzOGQwNjBhZDc4
ZDM2ZjExNGFlNDgxYzYuLjc4NWQ2Y2I4ZTZkYzhmYWZlOGU4MTBkZmJmZGY0Y2U3NjJmNGIzNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9y
bURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGNvbnN0IFZlY3Rvcjxj
aGFyPiogQ3VybEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaWYgKCFtX3Bvc3REYXRhKQotICAgICAgICBtX3Bvc3REYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7CisgICAg
ICAgIG1fcG9zdERhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+Zmxh
dHRlbigpKTsKIAogICAgIHJldHVybiBtX3Bvc3REYXRhLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwCmluZGV4IGE4YmI4ZDgxYTdhYmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZkZTJkNTUu
LmNjZGJiMjgyMzlmMjJjMzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0aXBh
cnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwKICAg
ICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5KTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpib3Vu
ZGFyeSk7CiB9CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFj
dEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAwNzAz
NGJiNjJkN2JiZTY0MGQ0ZjgwMWM0ZTE4NDIyM2RmMjQxM2RjLi5iMmEyMmRhMjJkNmMwMTU1NTA3
NTk5NWY2YjgzMDg2ZmVhODFmZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lk
IEN1cmxSZXF1ZXN0OjpjYWxsQ2xpZW50KEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3QmLCBDdXJs
UmVxdWVzdENsaWVudCYpPiYmCiB2b2lkIEN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQoRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAg
ICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgp
Pj4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VV
bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogICAgIGVsc2UgaWYgKGlz
TWFpblRocmVhZCgpKQogICAgICAgICB0YXNrKCk7CiAgICAgZWxzZQpAQCAtMjA1LDcgKzIwNSw3
IEBAIENVUkwqIEN1cmxSZXF1ZXN0OjpzZXR1cFRyYW5zZmVyKCkKICAgICBhdXRvIGh0dHBIZWFk
ZXJGaWVsZHMgPSBtX3JlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwogICAgIGFwcGVuZEFjY2Vw
dExhbmd1YWdlSGVhZGVyKGh0dHBIZWFkZXJGaWVsZHMpOwogCi0gICAgbV9jdXJsSGFuZGxlID0g
c3RkOjptYWtlX3VuaXF1ZTxDdXJsSGFuZGxlPigpOworICAgIG1fY3VybEhhbmRsZSA9IG1ha2VV
bmlxdWU8Q3VybEhhbmRsZT4oKTsKIAogICAgIG1fY3VybEhhbmRsZS0+c2V0VXJsKG1fcmVxdWVz
dC51cmwoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDkxODM3YWY5ZjNlNDc3
M2I1YzcxYzFjMjYwZGI5NmY1ODZiMjExYWYuLjNhYTVmNTJkYjYyN2FiYjBlY2NhZjI5MjEzZGNl
MTJmYmM2ZmJjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtMTQzLDcgKzE0Myw3
IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3VybE11bHRpSGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFuZGxlID0gbWFr
ZVVuaXF1ZTxDdXJsTXVsdGlIYW5kbGU+KCk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNldE1h
eENvbm5lY3RzKG1fbWF4Q29ubmVjdHMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhU
b3RhbENvbm5lY3Rpb25zKG1fbWF4VG90YWxDb25uZWN0aW9ucyk7CiAgICAgbV9jdXJsTXVsdGlI
YW5kbGUtPnNldE1heEhvc3RDb25uZWN0aW9ucyhtX21heEhvc3RDb25uZWN0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCmluZGV4IDQ3YjM3ODNlNjQ2MjlhOTJlZThkYTQwYmQ0Nzk3MGM3OTZl
YTU0ODYuLjcwN2QwYTY2M2E3MTg2ZGIxMDUwNGRkYzI4NjZiNzY5NzdkMzRiN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UmUKIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdhdGUo
KQogewogICAgIGlmICghZC0+bV9kZWxlZ2F0ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKKyAgICAg
ICAgZC0+bV9kZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+
KCp0aGlzKTsKIAogICAgIHJldHVybiBkLT5tX2RlbGVnYXRlLmdldCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5NTVlNjg4
OWM2NTcyMGM5ZWZhZjIxYi4uMTNhODMyYzI2NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkwMmRmYTk0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIsNyArMjAy
LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZvaWQgU29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV90YXNrUXVldWUu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkp
OworICAgIG1fdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdU
Rk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpleGVjdXRl
VGFza3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFmMTg3YjUwNzY1YTlkMTdjMmVjNGVj
ODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdjZWMxZTJmZjZlNzNmMjRjMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNv
dXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZCljYWxsRnVuY3Rpb25Pbk1h
aW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogewogICAgIC8vIFN5bmMgeGhy
IHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAg
ICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgICAgIHJldHVybiBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlv
bikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlLgogICAgIGlmICghc2NoZWR1
bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVkUGFpcnMpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1
ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3MTkzNGZlYzM3NjNhNWE0YTgyZDku
LmQ0YmE0ZTk1MDQxNWJiNDA2YmFiYzAxYjZkMjBjNjZkNGY4NGIyZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1
ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6
OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwgRAog
CiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVudGlm
aWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CiAKLSAgICBtX2NvbXBsZXRpb25B
bmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxETlNSZXNv
bHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworICAgIG1fY29tcGxldGlvbkFu
ZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOwogfQog
CiB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggMGE3MjcyNDdkZmFm
YzE4ODFmMWEyYzQ1ODgxZGU0MWZiMzQ5ZTIyNy4uMGIxYjdjZmY1MWY5ZWJlMTI5ODJlMTZlYzU4
ZjZlODY2MzQ3NDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAt
MTc0LDcgKzE3NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFs
RnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY3JldFNlcnZpY2VT
ZWFyY2hEYXRhPihjYW5jZWxsYWJsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8U2VjcmV0U2VydmljZVNlYXJjaERhdGE+KGNhbmNlbGxh
YmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgc2VjcmV0X3NlcnZpY2Vfc2Vh
cmNoKG51bGxwdHIsIFNFQ1JFVF9TQ0hFTUFfQ09NUEFUX05FVFdPUkssIGF0dHJpYnV0ZXMuZ2V0
KCksCiAgICAgICAgIHN0YXRpY19jYXN0PFNlY3JldFNlYXJjaEZsYWdzPihTRUNSRVRfU0VBUkNI
X1VOTE9DSyB8IFNFQ1JFVF9TRUFSQ0hfTE9BRF9TRUNSRVRTKSwgY2FuY2VsbGFibGUsCiAgICAg
ICAgIFtdKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVz
ZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlS
ZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApp
bmRleCAxMGZlY2JjNDE5NDc5NWYzMmQxY2E3ZTc2MDlhYzRmZjIwOTJjZDIzLi5hYWZlZDNkZTc5
Yjk5YWFjNDc2OWM3NmI1NWY2YzFjYmI2NjFiOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQmlkaVJlc29sdmVyLmgKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEJpZGlSZXNv
bHZlckJhc2U8SXRlcmF0b3IsIFJ1biwgRGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwo
KQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGVuZE9mZnNldCA+PSBzdGFydE9mZnNldCkKLSAg
ICAgICAgICAgIG1fcnVucy5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxSdW4+KHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CisgICAgICAgICAg
ICBtX3J1bnMuYXBwZW5kUnVuKG1ha2VVbmlxdWU8UnVuPihzdGFydE9mZnNldCwgZW5kT2Zmc2V0
ICsgMSwgY29udGV4dCgpLCBtX2RpcmVjdGlvbikpOwogCiAgICAgICAgIG1fZW9yLmluY3JlbWVu
dCgpOwogICAgICAgICBtX3NvciA9IG1fZW9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVJQ1UuY3BwCmluZGV4IDU5ZTFmYzcyYTJiZjI5Njk0NWE4NmY4NTUyYjg2Mzc2YTll
YTU4NmQuLjJjOGNjZTczMDg4ZmE1YWQwY2Y1OTU5Y2NlNGY5NjkxYmYzNTdhMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIGljdTsKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpj
cmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExvY2FsZUlDVT4obG9jYWxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPExvY2FsZUlDVT4obG9jYWxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCiBMb2NhbGVJQ1U6OkxvY2FsZUlDVShjb25zdCBjaGFyKiBsb2NhbGUpCkBAIC0xNjMs
MjIgKzE2MywyMiBAQCBzdGF0aWMgU3RyaW5nIGdldERhdGVGb3JtYXRQYXR0ZXJuKGNvbnN0IFVE
YXRlRm9ybWF0KiBkYXRlRm9ybWF0KQogc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBM
b2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9ybWF0KiBkYXRlRm9ybWF0
LCBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUgdHlwZSwgaW50MzJfdCBzdGFydEluZGV4LCBpbnQzMl90
IHNpemUpCiB7CiAgICAgaWYgKCFkYXRlRm9ybWF0KQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVj
dG9yPFN0cmluZz4+KCk7CiAgICAgaWYgKHVkYXRfY291bnRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5
cGUpICE9IHN0YXJ0SW5kZXggKyBzaXplKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0
cmluZz4+KCk7CiAKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0
cmluZz4+KCk7CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+Pigp
OwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwogICAgIGZvciAoaW50MzJfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSB1ZGF0X2dldFN5bWJvbHMoZGF0ZUZv
cm1hdCwgdHlwZSwgc3RhcnRJbmRleCArIGksIDAsIDAsICZzdGF0dXMpOwogICAgICAgICBpZiAo
c3RhdHVzICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIo
bGVuZ3RoKTsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICB1ZGF0X2dl
dFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSwgc3RhcnRJbmRleCArIGksIGJ1ZmZlci5kYXRhKCks
IGxlbmd0aCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIGxhYmVs
cy0+YXBwZW5kKFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKSk7CiAgICAgfQogICAgIHJl
dHVybiBXVEZNb3ZlKGxhYmVscyk7CkBAIC0xODYsNyArMTg2LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxTdHJpbmc+PiBMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRl
Rm9ybWF0KgogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVhdGVG
YWxsYmFja01vbnRoTGFiZWxzKCkKIHsKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxTdHJpbmc+PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KFdURl9BUlJBWV9MRU5H
VEgoV1RGOjptb250aEZ1bGxOYW1lKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKTsgKytpKQogICAgICAgICBsYWJlbHMt
PmFwcGVuZChXVEY6Om1vbnRoRnVsbE5hbWVbaV0pOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6Om1vbnRoTGFiZWxzKCkKIAogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkKIHsK
LSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7Cisg
ICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxhYmVs
cy0+cmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGxhYmVscy0+YXBwZW5kKCJBTSIpOwogICAgIGxh
YmVscy0+YXBwZW5kKCJQTSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Mb2NhbGVOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
Tm9uZS5jcHAKaW5kZXggYmI2YjI2YmE1OWNiMzZiOTg5YjdlNmY1ODYzMGM3YTdiM2I1NmVhNy4u
NzgxNWE0NzhlMDI5NzQ1NTk2NTc2YzJkZWQyMjExOTM2YWE5NmExYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNz
IExvY2FsZU5vbmUgOiBwdWJsaWMgTG9jYWxlIHsKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4g
TG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TG9jYWxlTm9uZT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVOb25l
PigpOwogfQogCiBMb2NhbGVOb25lOjp+TG9jYWxlTm9uZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAppbmRleCBmOGUxNjcwODQ5
YTk1ODk4YTE0NTdiYzk4ZGE5MWU0YmRlNzg0Yzc5Li5lNWYyODE2NmM2ZGQzNGJjNTM1MDliNmEw
MDIwYTg4ODkwN2MyY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY0lDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNJQ1UuY3BwCkBAIC0xNTYsNDMgKzE1Niw0MyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6cmVn
aXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgLy8gaHR0
cDovL2RlbW8uaWN1LXByb2plY3Qub3JnL2ljdS1iaW4vY29udmV4cAogICAgICAgICBpZiAoIXN0
cmNtcChuYW1lLCAid2luZG93cy04NzQiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUs
IFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
ZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOworICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtODc0LTIwMDAiKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCFzdHJjbXAobmFtZSwgIndpbmRvd3MtOTQ5IikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJh
cihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OS0yMDAw
Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1jeXJpbGxpYyIpKSB7CiAgICAgICAgICAg
ICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy03XzMtMTAuMiIpOworICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTdf
My0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1ncmVlayIpKSB7CiAgICAgICAg
ICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy02XzItMTAuNCIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29z
LTZfMi0xMC40Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1jZW50cmFsZXVycm9tYW4i
KSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3MtMjkt
MTAuMiIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4o
bmFtZSwgIm1hY29zLTI5LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLXR1cmtp
c2giKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3Mt
MzUtMTAuMiIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lD
VT4obmFtZSwgIm1hY29zLTM1LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIkVVQy1LUiIp
KSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0
OSIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFt
ZSwgIndpbmRvd3MtOTQ5Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lz
dGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiAgICAgICAgIGNvbnN0IGNo
YXIqIGNhbm9uaWNhbENvbnZlcnRlck5hbWUgPSB1Y252X2dldENhbm9uaWNhbE5hbWUobmFtZSwg
IklBTkEiLCAmZXJyb3IpOwogICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKGVycm9yKSk7CiAgICAg
ICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZV0gewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCBjYW5v
bmljYWxDb252ZXJ0ZXJOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRD
b2RlY0lDVT4obmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZSk7CiAgICAgICAgIH0pOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
TGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4x
LmNwcAppbmRleCA5MzE0NTMzMjhhNmY2Njk0ODVlZTAxZjhhNGUyY2VkZTUwMjY3N2ZmLi45MmM2
NjEzY2IxZmNjMGUzMDhhNzNjMzUwYTllMDdlZjc3MzQ2MmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC05Myw3ICs5Myw3IEBA
IHZvaWQgVGV4dENvZGVjTGF0aW4xOjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1l
UmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjTGF0aW4xOjpyZWdpc3RlckNvZGVj
cyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigid2luZG93
cy0xMjUyIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNM
YXRpbjE+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0xhdGluMT4oKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1JlcGxhY2VtZW50LmNwcAppbmRleCAxNzY1YmY3OTIxNTk3NWIxNTdjOGIzZjc0YzU1
NzJjNDcxZTIxMTQxLi5jOGI1NThjOGNhMmQzYWZkMzAyMTRiY2ZjMzdhMTQ1Nzc1NmExM2EwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxhY2Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxh
Y2VtZW50LmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIFRleHRDb2RlY1JlcGxhY2VtZW50Ojpy
ZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcgogdm9p
ZCBUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFy
IHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoInJlcGxhY2VtZW50IiwgW10gewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjUmVwbGFjZW1lbnQ+KCk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRG
MTYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAK
aW5kZXggYmUwMDY1NjQ0NjQ4ZmNlMGMzNzlkM2M3NDNlZTIyN2VhOWVkYTZmNC4uOTBjNDQ3NWQw
MjBiOWY0NzFiNWJlNzdjM2NhYWMwZmRjOThjYmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKQEAgLTU0LDEwICs1NCwxMCBAQCB2b2lk
IFRleHRDb2RlY1VURjE2OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKFRleHRD
b2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJVVEYtMTZMRSIsIFtd
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGMTY+KHRydWUp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7CiAgICAg
fSk7CiAgICAgcmVnaXN0cmFyKCJVVEYtMTZCRSIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGMTY+KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VGV4dENvZGVjVVRGMTY+KGZhbHNlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKaW5kZXggYTNkYWQ0ZTlkMTYz
NzY4NjMwODhiMTk3MTBmODM5ZGJiZmZlYThkZC4uZTFkMGE1M2M3MTdhYWU3Mzk5MzlmNTFjNGQz
MjkzNDVhZjg5Y2FmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNVVEY4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VURjguY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgVGV4dENvZGVjVVRGODo6cmVnaXN0
ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRl
eHRDb2RlY1VURjg6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIp
CiB7CiAgICAgcmVnaXN0cmFyKCJVVEYtOCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dENvZGVjVVRGOD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4
dENvZGVjVVRGOD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcAppbmRleCAyOTZjNDY5ZjE2OWZi
OTExZGM4ZGJkN2E2NDdlYTU2NDFlMmZmZTE5Li40OGFkYmE5ZDRiMWE3YTlhNjU4YWVmOWRmYWRm
ODVhZGRlOWRjZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VzZXJEZWZpbmVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFRleHRDb2Rl
Y1VzZXJEZWZpbmVkOjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFy
IHJlZ2lzdHJhcgogdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJDb2RlY3MoVGV4
dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIngtdXNlci1kZWZp
bmVkIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNVc2Vy
RGVmaW5lZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjVXNlckRlZmlu
ZWQ+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvbWFjL0xvY2FsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L0xvY2FsZU1hYy5tbQppbmRleCBhNTE3YmUzNDFmNmFjNGJlOGU4OTNjZmFkN2MyMjg4NDVkNmE4
MjgwLi4yYjNkMDNhMzhhNWQyMDFiYjZkY2I4ZWJlNDRmNDZmZWVmYzY3ZTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCkBAIC02Nyw3ICs2Nyw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNMb2NhbGU+IGRldGVybWluZUxvY2FsZShjb25zdCBTdHJp
bmcmIGxvY2FsZSkKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29u
c3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExv
Y2FsZU1hYz4oZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0KCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPExvY2FsZU1hYz4oZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmco
KSkuZ2V0KCkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gY3JlYXRl
RGF0ZVRpbWVGb3JtYXR0ZXIoTlNMb2NhbGUqIGxvY2FsZSwgTlNDYWxlbmRhciogY2FsZW5kYXIs
IE5TRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSwgTlNEYXRlRm9ybWF0dGVyU3R5bGUgdGlt
ZVN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9j
YWxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5j
cHAKaW5kZXggNmExNjBkZWNjZmM5MjZhZWYzN2RlMjNlOTdmNjJlOGY1YzY3OTA2YS4uYWEwMGE0
YWQ2ZjViNTk5ODJiNmI0NzczMTcxYzhiYzdjMDMzOTAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRp
YyBMQ0lEIExDSURGcm9tTG9jYWxlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIAogc3RkOjp1
bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxl
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZVdpbj4oTENJREZyb21Mb2Nh
bGUobG9jYWxlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlV2luPihMQ0lERnJvbUxv
Y2FsZShsb2NhbGUpKTsKIH0KIAogaW5saW5lIExvY2FsZVdpbjo6TG9jYWxlV2luKExDSUQgbGNp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2Rl
Y1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4u
Y3BwCmluZGV4IGFmNDY5MTM5MDgxZTgwYzEyMDdiODJjOTdmZGZhM2M3NzIxYTY1MTEuLjJjZWI0
NzVlNWZhZWJiNjcwYzc0MTQ0NzVhNDcyOTI0OTUyZGNhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTMxLDcgKzEzMSw3
IEBAIHN0YXRpYyBVSU5UIGdldENvZGVQYWdlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVuY29k
aW5nJiBlbmNvZGluZywgY29uc3Qgdm9pZCopCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvZGVjV2luPihnZXRDb2RlUGFnZShlbmNvZGluZy5uYW1lKCkpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUoKSkp
OwogfQogCiBUZXh0Q29kZWNXaW46OlRleHRDb2RlY1dpbihVSU5UIGNvZGVQYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2Vy
T3BlblZSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3Jt
TWFuYWdlck9wZW5WUi5jcHAKaW5kZXggZDFkYzY3MzY4NmY2NTFlM2UwMzI5MWI3YzAyYzMxYjBj
MTY5YmJjMi4uZTdjZjcxMzdlMzNhYTU1YmY3ZTU4NWVlMTY0ZTY3M2QzYWFlZWM2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2Vy
T3BlblZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0
Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxW
UlBsYXRmb3JtTWFuYWdlck9wZW5WUj4gVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSgp
CiAgICAgaWYgKCF2cjo6VlJfSXNSdW50aW1lSW5zdGFsbGVkKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJP
cGVuVlI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+
KCk7CiB9CiAKIFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjp+VlJQbGF0Zm9ybU1hbmFnZXJPcGVu
VlIoKQpAQCAtNzgsNyArNzgsNyBAQCBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxheT4+
IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpnZXRWUkRpc3BsYXlzKCkKIAogICAgIFZlY3RvcjxX
ZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gZGlzcGxheXM7CiAgICAgaWYgKCFtX2Rpc3BsYXkp
Ci0gICAgICAgIG1fZGlzcGxheSA9IHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybURpc3BsYXlP
cGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNvbXBvc2l0b3IpOworICAgICAgICBtX2Rpc3Bs
YXkgPSBtYWtlVW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVy
b25lLCBjb21wb3NpdG9yKTsKICAgICBkaXNwbGF5cy5hcHBlbmQobWFrZVdlYWtQdHIoKm1fZGlz
cGxheSkpOwogICAgIHJldHVybiBkaXNwbGF5czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBhYmFkZGM3ZmJjYTIzNTllZmY1Yjk4MTFj
MTk1ZjZiNWFiYzFiYTgzLi4xNjk3ODU1ZmU3MmY2MzdlNjVhZDQ3NzcyYWZhNjFjNzQ3MTkyNDQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBA
IC05Myw3ICs5Myw3IEBAIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25lcldu
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAg
IGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAgICBh
dXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiAgICAgQ09NUHRyPElE
YXRhT2JqZWN0PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENsaXBi
b2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0gMDsKQEAgLTEw
NiwxNiArMTA2LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0YU9i
amVjdDsKICAgICBXQ0RhdGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsKIH0K
IAogLy8gc3RhdGljCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChk
cmFnRGF0YS5wbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgLy8gRklY
TUU6IFNob3VsZCBhZGQgYSBjb25zdCBvdmVybG9hZCBvZiBkcmFnRGF0YU1hcCBzbyB3ZSBkb24n
dCBuZWVkIGEgY29uc3RfY2FzdCBoZXJlLgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBh
c3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAoKSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2FzdDxEcmFnRGF0YSY+
KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCAxOTY0OWM1NjZj
ZmNmNWY0MjQzMDlkMWQ4ZDEwMGIwYjRmZjc3MGE4Li42ZjdmNGJhMTY2MGI0ZjdhOTc3MjEyYzg1
NjNhNDNjNjY1ZTMwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
ZWFyY2hQb3B1cE1lbnVEQi5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQgU2VhcmNoUG9wdXBN
ZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wgaWdub3JlRXJy
b3IpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IFNlYXJjaFBvcHVwTWVudURC
OjpjcmVhdGVQcmVwYXJlZFN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBhdXRv
IHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNl
LCBzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+
KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gU1FMSVRFX09LKTsKICAgICByZXR1cm4gc3Rh
dGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApp
bmRleCBkYmY5OWE0NWNlNzAzYTlkODU3YTBlNjAxOWQ2ODA2ZGQxMWZhMTdiLi4yNDEwMDNhMTAw
MzFhM2Q3ZTZkN2FhMWUyNGE0OWNiOTg5ODIwY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFNURE1FVEhPRElN
UCBXQ0RhdGFPYmplY3Q6OlNldERhdGEoRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBTVEdNRURJVU0q
IHBtZWRpdW0sIEJPCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0byBmZXRjID0gc3RkOjptYWtlX3VuaXF1ZTxGT1JN
QVRFVEM+KCk7CisgICAgYXV0byBmZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0Z01lZGl1
bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5KGZldGMu
Z2V0KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5jcHAKaW5kZXggYzAwNGZjOWU3MDRhNmFkMzIzNDlmYjgyNGNkYzVkZGQwMzYwMWI1Yy4uNDc5
ODFhZTY5OTFkYzY0OTE1MjBmYzgyNDMyZWNjNDk1ODY0NDNmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBGaQogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogCi0gICAgYXV0byBi
dWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlvdXNFZmZl
Y3QpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnBy
ZXZpb3VzRWZmZWN0KTsKICAgICBtX3NvdXJjZUFscGhhID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJ
ZChTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpKTsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0RWxl
bWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cz4oKmZpbHRlcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21w
bGV4TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVM
YXlvdXQuY3BwCmluZGV4IDAxMzM3ODdkOWQzMDYyYjFjYTc5YjE2MDc5NjNmMjBjMTA3MWVkNTMu
LmJkM2M5YmVlODcyOTg2ZWM2MWIxYTMwYTA0OTViOGMwYTI2ZmQ2MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcApAQCAtODIsNyArODIsNyBA
QCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXIs
IElubGluZUl0ZXJhdG9yIGl0ZXIpCiAKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4g
Y3JlYXRlUnVuKGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0JiBvYmosIElubGluZUJp
ZGlSZXNvbHZlciYgcmVzb2x2ZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qmlk
aVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaWRpUnVuPihzdGFydCwgZW5kLCBvYmosIHJlc29s
dmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogfQogCiB2b2lkIENvbXBsZXhMaW5lTGF5
b3V0OjphcHBlbmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBpbnQg
c3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJl
c29sdmVyKQpAQCAtMTMwLDEyICsxMzAsMTIgQEAgdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBw
ZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXIKIHN0
ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBDb21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9v
dElubGluZUJveCgpCiB7CiAgICAgaWYgKGlzPFJlbmRlclNWR1RleHQ+KG1fZmxvdykpIHsKLSAg
ICAgICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRvd25j
YXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOworICAgICAgICBhdXRvIGJveCA9IG1ha2VVbmlx
dWU8U1ZHUm9vdElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSk7CiAg
ICAgICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0dXJu
IGJveDsKICAgICB9CiAgICAgICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJvb3RJ
bmxpbmVCb3g+KG1fZmxvdyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4o
bV9mbG93KTsKIH0KIAogUm9vdElubGluZUJveCogQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZUFu
ZEFwcGVuZFJvb3RJbmxpbmVCb3goKQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW5saW5lIEJpZGlS
dW4qIENvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlzdDxC
aWRpUnVuPiYgYmkKICAgICAgICAgd2hpbGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNlQ29u
dGV4dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBiYXNlQ29udGV4dCA9IHBhcmVudDsKIAotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJh
aWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IG1ha2VV
bmlxdWU8QmlkaVJ1bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFp
bGluZ1NwYWNlUnVuLT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFMKTsK
ICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAgICAgICAg
dHJhaWxpbmdTcGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuLmdldCgpOwogICAgICAgICBpZiAoZGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKQEAgLTE2MTcsNyArMTYxNyw3IEBAIHZvaWQg
Q29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZChMaW5lTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlKQogICAgICAgICBpZiAobGF5b3V0U3RhdGUuY2hlY2tGb3JGbG9hdHNGcm9t
TGFzdExpbmUoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21WaXN1YWxPdmVyZmxv
dyA9IGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygpOwogICAgICAg
ICAgICAgTGF5b3V0VW5pdCBib3R0b21MYXlvdXRPdmVyZmxvdyA9IGxhc3RSb290Qm94KCktPmxv
Z2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdygpOwotICAgICAgICAgICAgYXV0byBuZXdMaW5lQm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7
CisgICAgICAgICAgICBhdXRvIG5ld0xpbmVCb3ggPSBtYWtlVW5pcXVlPFRyYWlsaW5nRmxvYXRz
Um9vdElubGluZUJveD4obV9mbG93KTsKICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdGbG9hdHNM
aW5lQm94ID0gbmV3TGluZUJveC5nZXQoKTsKICAgICAgICAgICAgIG1fbGluZUJveGVzLmFwcGVu
ZExpbmVCb3goV1RGTW92ZShuZXdMaW5lQm94KSk7CiAgICAgICAgICAgICB0cmFpbGluZ0Zsb2F0
c0xpbmVCb3gtPnNldENvbnN0cnVjdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
bG9hdGluZ09iamVjdHMuY3BwCmluZGV4IDRjZGQxMzljNDg3NTE2ZWEwZTdiMTIxM2I3MDNiZDM0
MjdhYjAxOGMuLmE2YzY0ODE4YzQ5NzQ1NjA5MGY2NjIzYzMwNGI1ZDYyNzcwN2FlNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC03NSw3ICs3
NSw3IEBAIEZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gmIHJlbmRlcmVy
LCBUeXBlIHR5cGUsIGNvbnN0IExheW91dFJlY3QmCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGlu
Z09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyKQogewot
ICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVy
ZXIpOworICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVy
ZXIpOwogICAgIG9iamVjdC0+c2V0U2hvdWxkUGFpbnQoIXJlbmRlcmVyLmhhc1NlbGZQYWludGlu
Z0xheWVyKCkpOyAvLyBJZiBhIGxheWVyIGV4aXN0cywgdGhlIGZsb2F0IHdpbGwgcGFpbnQgaXRz
ZWxmLiBPdGhlcndpc2Ugc29tZW9uZSBlbHNlIHdpbGwuCiAgICAgb2JqZWN0LT5zZXRJc0Rlc2Nl
bmRhbnQodHJ1ZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVuZGVy
Qm94JiByZW5kZXJlcikKIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGlu
Z09iamVjdDo6Y29weVRvTmV3Q29udGFpbmVyKExheW91dFNpemUgb2Zmc2V0LCBib29sIHNob3Vs
ZFBhaW50LCBib29sIGlzRGVzY2VuZGFudCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZy
YW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdp
bk9mZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZyYW1l
UmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdpbk9m
ZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQoKSBjb25z
dAogewotICAgIGF1dG8gY2xvbmVPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2Jq
ZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9mZnNldCwgbV9z
aG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOworICAgIGF1dG8gY2xvbmVPYmplY3QgPSBtYWtl
VW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBt
X21hcmdpbk9mZnNldCwgbV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOwogICAgIGNsb25l
T2JqZWN0LT5tX3BhZ2luYXRpb25TdHJ1dCA9IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIGNsb25l
T2JqZWN0LT5tX2lzUGxhY2VkID0gbV9pc1BsYWNlZDsKICAgICByZXR1cm4gY2xvbmVPYmplY3Q7
CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQbGFjZWRG
bG9hdHNUcmVlKCkKICAgICBpZiAobV9zZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0
VHJlZT4oKTsKKyAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBtYWtlVW5pcXVlPEZsb2F0aW5nT2Jq
ZWN0VHJlZT4oKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NldC5iZWdpbigpLCBlbmQgPSBtX3Nl
dC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9h
dGluZ09iamVjdCA9IGl0LT5nZXQoKTsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5pc1Bs
YWNlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IGM3MmQwMWQ4MWM3ZDcxNjYx
NTc5ZTNiYTAxODMwZTQyOWQzMGY2ODguLjFlOTExYWU2MGE2MTI2ODlhNDk3ZmYyZDViN2YwZDUw
Yjg3ZTI5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFy
ZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYQogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWlu
Z1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgp
IDogbV9ncmlkWzBdLnNpemUoKTsKICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRP
ZlZhcnlpbmdUcmFja0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgIGlmIChp
c0VtcHR5QXJlYUVub3VnaChyb3dTcGFuLCBjb2x1bW5TcGFuKSkgewotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdyaWRBcmVhPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRBcmVh
PihHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJ
bmRleCArIHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9j
b2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3Jp
ZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXgg
KyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1u
SW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CiAgICAgICAgICAgICAvLyBBZHZh
bmNlIHRoZSBpdGVyYXRvciB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdlIHdvdWxk
IHJldHVybiB0aGUgc2FtZSBncmlkIGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAgICAgICsr
dmFyeWluZ1RyYWNrSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAppbmRleCA1
ZmMzMjgxNTNhNmQ4YmZjNDg4M2JhNTEyMWNjYTBiZjZmMmU5OWQwLi42NjA5MDk4ZjljODcwNDY4
ODExNDE4YWIxNzgyOTQxN2JlZTJkMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQg
R3JpZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQoSXRl
bVBvc2l0aW9uIHByZWZlcmVuCiAKICAgICAvLyBMb29raW5nIGZvciBhIGNvbXBhdGlibGUgYmFz
ZWxpbmUtc2hhcmluZyBncm91cC4KICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2VsaW5l
Q29udGV4dD4oY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CisgICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEJhc2VsaW5lQ29udGV4dD4oY2hp
bGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGF1
dG8qIGNvbnRleHQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgICAgICBj
b250ZXh0LT51cGRhdGVTaGFyZWRHcm91cChjaGlsZCwgcHJlZmVyZW5jZSwgYXNjZW50LCBkZXNj
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Npemlu
Z0FsZ29yaXRobS5jcHAKaW5kZXggYWRkZWRjNDI4YjFmMmZkYjM1MDNlODEyNjI2Yjk3NjkzYTNl
N2I1Zi4uYjJiMDExYmRmNzQ5MWIzNWFiMWRiYjdhYzZiMjYzOTYxNzIxY2NhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHAKQEAgLTY4MSw3ICs2ODEsNyBAQCBkb3VibGUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpj
b21wdXRlRmxleEZhY3RvclVuaXRTaXplKGNvbnN0IFZlY3RvcjxHcmlkVHJhYwogICAgICAgICAg
ICAgbGVmdE92ZXJTcGFjZSAtPSBiYXNlU2l6ZTsKICAgICAgICAgICAgIGZsZXhGYWN0b3JTdW0g
LT0gZmxleEZhY3RvcjsKICAgICAgICAgICAgIGlmICghdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJs
ZSkKLSAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gc3RkOjptYWtl
X3VuaXF1ZTxUcmFja0luZGV4U2V0PigpOworICAgICAgICAgICAgICAgIHRyYWNrc1RvVHJlYXRB
c0luZmxleGlibGUgPSBtYWtlVW5pcXVlPFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAgICB0
cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlLT5hZGQoaW5kZXgpOwogICAgICAgICAgICAgdmFsaWRG
bGV4RmFjdG9yVW5pdCA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMjYwLDEwICsxMjYwLDEwIEBA
IHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cChHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lCiAgICAgbV9zaXppbmdPcGVyYXRpb24gPSBzaXppbmdP
cGVyYXRpb247CiAgICAgc3dpdGNoIChtX3NpemluZ09wZXJhdGlvbikgewogICAgIGNhc2UgSW50
cmluc2ljU2l6ZUNvbXB1dGF0aW9uOgotICAgICAgICBtX3N0cmF0ZWd5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kg
PSBtYWtlVW5pcXVlPEluZGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBUcmFja1NpemluZzoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKKyAgICAgICAgbV9zdHJhdGVn
eSA9IG1ha2VVbmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAK
aW5kZXggNzNiMzY1NDc2NzE0MGEwMzcwZTRkNTY5NTZlNTRmMjY3NGI1OGIzNi4uYjNjNDAwNzkw
MmRmNjA0ODYyYTVhYzdjMjk5OGNiYWQ3M2YxMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtOTYsNyArOTYsNyBAQCBIaXRUZXN0UmVzdWx0OjpI
aXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pc092ZXJX
aWRnZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2Rl
U2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQg
PSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+
KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RCYXNl
ZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVlPE5v
ZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIH0KIAogSGl0
VGVzdFJlc3VsdDo6fkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7CkBAIC0xMTMsNyArMTEzLDcg
QEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIG90aGVyKQogICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7
CiAKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0IGhpdCB0ZXN0
LgotICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3Vs
dCA/IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJlc3Vs
dCkgOiBudWxscHRyOworICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJh
c2VkVGVzdFJlc3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVz
dFJlc3VsdCkgOiBudWxscHRyOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjkwLDE0ICs2
OTAsMTQgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYg
b3RoZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXEKIGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5v
ZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQoKSBjb25zdAogewogICAg
IGlmICghbV9saXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVz
dFJlc3VsdCA9IG1ha2VVbmlxdWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2Vk
VGVzdFJlc3VsdDsKIH0KIAogSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJlc3VsdDo6
bXV0YWJsZUxpc3RCYXNlZFRlc3RSZXN1bHQoKQogewogICAgIGlmICghbV9saXN0QmFzZWRUZXN0
UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG1ha2VVbmlxdWU8
Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3VsdDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCA0M2M2NTM4NzZjZjk4
NGE2MmI2ZmM5Mjk0NWQzZGQ2OTBjYTNlZGI5Li4xNWZkZTU0ZGU1ZDM0OTkyMDgyZDQzOWEyOTBh
NTFmOTI1Y2MyZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3Iu
aApAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbnVtYmVyT2ZJc29s
YXRlQW5jZXN0b3JzKGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdGVyKQogLy8gb2YgQmlkaVJlc29s
dmVyIHdoaWNoIGtub3dzIG5vdGhpbmcgYWJvdXQgUmVuZGVyT2JqZWN0cy4KIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKElubGluZUJpZGlSZXNv
bHZlciYgcmVzb2x2ZXIsIFJlbmRlck9iamVjdCYgb2JqLCB1bnNpZ25lZCBwb3MsIFJlbmRlckVs
ZW1lbnQmIHJvb3QpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVu
ID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250
ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gaXNv
bGF0ZWRSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KHBvcywgcG9zLCBvYmosIHJlc29sdmVyLmNv
bnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogICAgIC8vIEZJWE1FOiBpc29sYXRlZFJ1bnMoKSBj
b3VsZCBiZSBhIGhhc2ggb2Ygb2JqZWN0LT5ydW4gYW5kIHRoZW4gd2UgY291bGQgY2hlYXBseQog
ICAgIC8vIEFTU0VSVCBoZXJlIHRoYXQgd2UgZGlkbid0IGNyZWF0ZSBtdWx0aXBsZSBvYmplY3Rz
IGZvciB0aGUgc2FtZSBpbmxpbmUuCiAgICAgcmVzb2x2ZXIuc2V0V2hpdGVzcGFjZUNvbGxhcHNp
bmdUcmFuc2l0aW9uRm9ySXNvbGF0ZWRSdW4oKmlzb2xhdGVkUnVuLCByZXNvbHZlci53aGl0ZXNw
YWNlQ29sbGFwc2luZ1N0YXRlKCkuY3VycmVudFRyYW5zaXRpb24oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwCmluZGV4IDc4ZmMwODg2YWJlMTdkYjEx
OTA0ZGY4YjFmZjc2ZTkyMDhlOTllN2IuLjk2YWY5NWE0NTU2OTUwZTgxMjZiOTUzNzM1MzRkNDc2
ZGFlMzU2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJs
YXBNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBNYXAu
Y3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgYm9vbCBMYXllck92ZXJsYXBNYXA6Om92ZXJsYXBzTGF5
ZXJzKGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY29uc3QgTGF5b3V0UmVjdCYKIAogdm9pZCBM
YXllck92ZXJsYXBNYXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcigpCiB7Ci0gICAgbV9vdmVy
bGFwU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9y
b290TGF5ZXIpKTsKKyAgICBtX292ZXJsYXBTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxPdmVybGFw
TWFwQ29udGFpbmVyPihtX3Jvb3RMYXllcikpOwogfQogCiB2b2lkIExheWVyT3ZlcmxhcE1hcDo6
cG9wQ29tcG9zaXRpbmdDb250YWluZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKaW5kZXggNGRiYTNmMWM0MTA1YWZiMGU4ZTRjNzZhN2NmY2I5ZTVmZmY3MTg1NC4u
MDAxOTI1ODgyZTUwMjhjOGEyMDk5YjRiYmRlMzczMTY1YjRhMjRmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIHZv
aWQgaW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMoY29uc3QgUmVuZGVyQmxvY2smIGNvbnRh
aW5lciwgUmVuZGVyQm8KICAgICB9CiAgICAgCiAgICAgYXV0byYgZGVzY2VuZGFudFNldCA9IHBl
cmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+ZW5zdXJlKCZjb250YWluZXIsIFtdIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Pigp
OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGJvb2wgYWRkZWQgPSBkZXNjZW5kYW50
U2V0LT5hZGQoJmRlc2NlbmRhbnQpLmlzTmV3RW50cnk7CkBAIC0xMTUsNyArMTE1LDcgQEAgc3Rh
dGljIHZvaWQgaW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMoY29uc3QgUmVuZGVyQmxvY2sm
IGNvbnRhaW5lciwgUmVuZGVyQm8KICAgICB9CiAgICAgCiAgICAgYXV0byYgY29udGFpbmVyU2V0
ID0gcGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+ZW5zdXJlKCZkZXNjZW5kYW50LCBbXSB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sq
Pj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJCbG9j
ayo+PigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVCghY29udGFpbmVy
U2V0LT5jb250YWlucygmY29udGFpbmVyKSk7CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgUG9z
aXRpb25lZERlc2NlbmRhbnRzTWFwIHsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8mIGRlc2Nl
bmRhbnRzID0gbV9kZXNjZW5kYW50c01hcC5lbnN1cmUoJmNvbnRhaW5pbmdCbG9jaywgW10gewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhh
c2hTZXQ+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVyZXJM
aXN0SGFzaFNldD4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIGJv
b2wgaXNOZXdFbnRyeSA9IG1vdmVEZXNjZW5kYW50VG9FbmQgPT0gTW92ZURlc2NlbmRhbnRUb0Vu
ZDo6WWVzID8gZGVzY2VuZGFudHMtPmFwcGVuZE9yTW92ZVRvTGFzdCgmcG9zaXRpb25lZERlc2Nl
bmRhbnQpLmlzTmV3RW50cnkKQEAgLTUyOCw3ICs1MjgsNyBAQCBzdGF0aWMgaW5saW5lIFVwZGF0
ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKiBjdXJyZW50VXBkYXRlU2Nyb2xsSW5m
b0FmdAogdm9pZCBSZW5kZXJCbG9jazo6YmVnaW5VcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRU
cmFuc2FjdGlvbigpCiB7CiAgICAgaWYgKCF1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFu
c2FjdGlvblN0YWNrKCkpCi0gICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5z
YWN0aW9uU3RhY2soKSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9sbEluZm9T
dGFjaz4oKTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25T
dGFjaygpID0gbWFrZVVuaXF1ZTxEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1N0YWNrPigpOwogICAg
IGlmICh1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCktPmlzRW1w
dHkoKSB8fCBjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+
dmlldyAhPSAmdmlldygpKQogICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFu
c2FjdGlvblN0YWNrKCktPmFwcGVuZChVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2Fj
dGlvbih2aWV3KCkpKTsKICAgICArK2N1cnJlbnRVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRU
cmFuc2FjdGlvbigpLT5uZXN0ZWRDb3VudDsKQEAgLTYyMCw3ICs2MjAsNyBAQCBzdGF0aWMgUmVu
ZGVyQmxvY2tSYXJlRGF0YSYgZW5zdXJlQmxvY2tSYXJlRGF0YShjb25zdCBSZW5kZXJCbG9jayYg
YmxvY2spCiAgICAgCiAgICAgYXV0byYgcmFyZURhdGEgPSBnUmFyZURhdGFNYXAtPmFkZCgmYmxv
Y2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXJhcmVEYXRhKQotICAgICAg
ICByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tSYXJlRGF0YT4oKTsKKyAg
ICAgICAgcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CiAgICAg
cmV0dXJuICpyYXJlRGF0YS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA3ZjFlNjM5NzA2M2JlNGY4ZGY5YjU3ZjE3NWQ2ZTI2
ZTc4ZWZiMTM0Li5iODY0MmQxNzIwM2JkNGJmMjViZGUxNzFmOTg3MGFmN2Q1YTQzYTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtNjc4LDcg
KzY3OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxpbmVDaGlsZHJlbihib29s
IHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlCiAgICAgbV9zaW1wbGVMaW5lTGF5b3V0
ID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9jb21wbGV4TGluZUxheW91dCkKLSAgICAgICAgbV9j
b21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+KCp0
aGlzKTsKKyAgICAgICAgbV9jb21wbGV4TGluZUxheW91dCA9IG1ha2VVbmlxdWU8Q29tcGxleExp
bmVMYXlvdXQ+KCp0aGlzKTsKIAogICAgIG1fY29tcGxleExpbmVMYXlvdXQtPmxheW91dExpbmVC
b3hlcyhyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2ljYWxC
b3R0b20pOwogfQpAQCAtMjAxOSw3ICsyMDE5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Omxh
eW91dExpbmVHcmlkQm94KCkKICAgICAKICAgICBzZXRMaW5lR3JpZEJveCgwKTsKIAotICAgIGF1
dG8gbGluZUdyaWRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFJvb3RJbmxpbmVCb3g+KCp0aGlzKTsK
KyAgICBhdXRvIGxpbmVHcmlkQm94ID0gbWFrZVVuaXF1ZTxSb290SW5saW5lQm94PigqdGhpcyk7
CiAgICAgbGluZUdyaWRCb3gtPnNldEhhc1RleHRDaGlsZHJlbigpOyAvLyBOZWVkZWQgdG8gbWFr
ZSB0aGUgbGluZSBhc2NlbnQvZGVzY2VudCBhY3R1YWxseSBiZSBob25vcmVkIGluIHF1aXJrcyBt
b2RlLgogICAgIGxpbmVHcmlkQm94LT5zZXRDb25zdHJ1Y3RlZCgpOwogICAgIEdseXBoT3ZlcmZs
b3dBbmRGYWxsYmFja0ZvbnRzTWFwIHRleHRCb3hEYXRhTWFwOwpAQCAtMjI2MCw3ICsyMjYwLDcg
QEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVyQmxv
Y2smIHJvb3RCbG9jaywgY29uc3QgUGFpbnQKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0
ZUZsb2F0aW5nT2JqZWN0cygpCiB7Ci0gICAgbV9mbG9hdGluZ09iamVjdHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZsb2F0aW5nT2JqZWN0cz4oKnRoaXMpOworICAgIG1fZmxvYXRpbmdPYmplY3RzID0g
bWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZWN0cygpCkBAIC0zNjc3LDcgKzM2NzcsNyBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlTGluZUJveGVzKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUKCFtX2NvbXBsZXhMaW5lTGF5b3V0KTsKLSAgICBtX2NvbXBsZXhMaW5lTGF5b3V0
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOworICAgIG1fY29t
cGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAK
ICAgICBpZiAoU2ltcGxlTGluZUxheW91dDo6Y2FuVXNlRm9yTGluZUJveFRyZWUoKnRoaXMsICpt
X3NpbXBsZUxpbmVMYXlvdXQpKSB7CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OmdlbmVyYXRl
TGluZUJveFRyZWUoKnRoaXMsICptX3NpbXBsZUxpbmVMYXlvdXQpOwpAQCAtMzczNSw3ICszNzM1
LDcgQEAgUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YSYgUmVuZGVyQmxv
Y2tGbG93OjplbnN1cmVSYXJlQmxvY2tGbG93RGEKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXRl
cmlhbGl6ZVJhcmVCbG9ja0Zsb3dEYXRhKCkKIHsKICAgICBBU1NFUlQoIWhhc1JhcmVCbG9ja0Zs
b3dEYXRhKCkpOwotICAgIG1fcmFyZUJsb2NrRmxvd0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGE+KCp0aGlzKTsKKyAgICBtX3Jh
cmVCbG9ja0Zsb3dEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2Nr
Rmxvd1JhcmVEYXRhPigqdGhpcyk7CiB9CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBkYjNhNmRhOGYxYTMyMTUz
NzAwZTczNDE3ZDEwZjZhNDgxMzA4MzVmLi45Njc3ZGFlOWNmZTI4YjFkYzM5MDVjM2E4MmIwNmVj
NmVjZGNkYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIHN0YXRpYyBDb250cm9sU3RhdGVzUmVuZGVyZXJNYXAmIGNvbnRyb2xTdGF0
ZXNSZW5kZXJlck1hcCgpCiBzdGF0aWMgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlc0ZvclJl
bmRlcmVyKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIpCiB7CiAgICAgcmV0dXJuIGNvbnRyb2xT
dGF0ZXNSZW5kZXJlck1hcCgpLmVuc3VyZSgmcmVuZGVyZXIsIFtdIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbFN0YXRlcz4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q29udHJvbFN0YXRlcz4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9
CiAKQEAgLTIxMjIsNyArMjEyMiw3IEBAIExheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRGcm9t
Q29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0CiAKIHN0ZDo6
dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJCb3g6OmNyZWF0ZUlubGluZUJveCgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAog
dm9pZCBSZW5kZXJCb3g6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGJj
YmE3YjQxNjg1YTNmNDEyMGMxZWVhNTQ2MTAyZjgzNmQ1NmFhMjYuLjkwMWM0MTEwZTFjNTZiYTYw
YTRkZDNiYTdiOTNmYWFmNjA0MWNiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjUzOCw3ICsyNTM4LDcgQEAgYXV0byBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKCkgLT4gQ29u
dGludWF0aW9uQ2hhaW5Ob2QKIHsKICAgICBzZXRIYXNDb250aW51YXRpb25DaGFpbk5vZGUodHJ1
ZSk7CiAgICAgcmV0dXJuICpjb250aW51YXRpb25DaGFpbk5vZGVNYXAoKS5lbnN1cmUodGhpcywg
WyZdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGludWF0aW9uQ2hhaW5O
b2RlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRpbnVhdGlvbkNoYWlu
Tm9kZT4oKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IDIyMTA0NDM0ZTQ1ZDZjOTg0NzZm
ZmQyOWFiNTUwYmQ2MmFjNDA4ZmUuLmMxZTAzZjA5N2VmNTlhZDVhMTZiMTk0YzljMDVkNjQ5Zjdm
ZjE1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAg
LTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgIGlmIChwbGFjZS5w
YXJlbnQpCiAgICAgICAgIHBsYWNlLnBhcmVudC0+aW5zZXJ0QWZ0ZXIobmV3Tm9kZSwgcGxhY2Uu
cHJldmlvdXNTaWJsaW5nLmdldCgpLCBpZGVudGlmaWVyKTsKIAotICAgIG1hcHMuYWRkKCZyZW5k
ZXJlciwgc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUtPmFk
ZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7CisgICAgbWFwcy5hZGQoJnJlbmRlcmVy
LCBtYWtlVW5pcXVlPENvdW50ZXJNYXA+KCkpLml0ZXJhdG9yLT52YWx1ZS0+YWRkKGlkZW50aWZp
ZXIsIG5ld05vZGUuY29weVJlZigpKTsKICAgICByZW5kZXJlci5zZXRIYXNDb3VudGVyTm9kZU1h
cCh0cnVlKTsKIAogICAgIGlmIChuZXdOb2RlLT5wYXJlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCmluZGV4IDUxYTll
NDY4NDM0NGQyNjM3ZDA0YTkxZmI1OWEzY2Q2ZWY4ZjA2ZWQuLjdmNmNhYmMwNTkxMjEwODFjNGQ3
Mjg2MDIxOWJkNGI5Yzg1Yjk0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIFJlbmRl
ckJveEZyYWdtZW50SW5mbyogUmVuZGVyRnJhZ21lbnRDb250YWluZXI6OnNldFJlbmRlckJveEZy
YWdtZW50SW5mbyhjb25zdCBSCiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVyQm94
RnJhZ21lbnRJbmZvLmFkZChib3gsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQm94RnJhZ21lbnRJ
bmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Jsb2Nr
Q2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJCb3hGcmFnbWVudEluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hGcmFnbWVudEluZm8uYWRk
KGJveCwgbWFrZVVuaXF1ZTxSZW5kZXJCb3hGcmFnbWVudEluZm8+KGxvZ2ljYWxMZWZ0SW5zZXQs
IGxvZ2ljYWxSaWdodEluc2V0LCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpKS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgcmV0dXJuIGJveEluZm8uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCmluZGV4IDQ0ZjU2MzVi
YTUzYWUzZjdlOTRkN2FjOGU0OTY3MzkwZjU4YzJlNTYuLjg0NmRkM2EwMmFhODZhYWY3MTVjMDk0
ZThjMzUwYzE2NmE4NjdiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYWdtZW50ZWRGbG93LmNwcApAQCAtMTExNSw3ICsxMTE1LDcgQEAgUmVuZGVyRnJhZ21l
bnRDb250YWluZXIqIFJlbmRlckZyYWdtZW50ZWRGbG93OjpjdXJyZW50RnJhZ21lbnQoKSBjb25z
dAogQ29udGFpbmluZ0ZyYWdtZW50TWFwJiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y29udGFpbmlu
Z0ZyYWdtZW50TWFwKCkKIHsKICAgICBpZiAoIW1fbGluZVRvRnJhZ21lbnRNYXApCi0gICAgICAg
IG1fbGluZVRvRnJhZ21lbnRNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5pbmdGcmFnbWVu
dE1hcD4oKTsKKyAgICAgICAgbV9saW5lVG9GcmFnbWVudE1hcCA9IG1ha2VVbmlxdWU8Q29udGFp
bmluZ0ZyYWdtZW50TWFwPigpOwogCiAgICAgcmV0dXJuICptX2xpbmVUb0ZyYWdtZW50TWFwLmdl
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21l
dHJ5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5j
cHAKaW5kZXggYjkwNDVlNjc5MDg3M2FiZjgxYTkwZGZhNWJiYjExMDkzYzY3N2IwMi4uNTJjNzkw
ZDRlNTc4OWIxNzhlMjZjOGFiZDhiYTdiMTNjYzU5MTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9p
ZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaChjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk0KICAgICAKICAgICBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAmIHN0
ZXAgPSBtX21hcHBpbmdbbV9pbnNlcnRpb25Qb3NpdGlvbl07CiAgICAgaWYgKCF0LmlzSW50ZWdl
clRyYW5zbGF0aW9uKCkpCi0gICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKKyAgICAgICAgc3RlcC5tX3RyYW5zZm9ybSA9
IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHQpOwogICAgIGVsc2UKICAgICAgICAg
c3RlcC5tX29mZnNldCA9IExheW91dFNpemUodC5lKCksIHQuZigpKTsKIApAQCAtMjM1LDcgKzIz
NSw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hWaWV3KGNvbnN0IFJlbmRlclZpZXcq
IHZpZXcsIGNvbnN0IExheW91dFNpemUmIHNjcm9sCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVw
JiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIHN0ZXAubV9vZmZz
ZXQgPSBzY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHQpCi0gICAgICAgIHN0ZXAubV90cmFuc2Zvcm0g
PSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigqdCk7CisgICAgICAgIHN0
ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigqdCk7CiAg
ICAgCiAgICAgc3RlcEluc2VydGVkKHN0ZXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuY3BwCmluZGV4IGUzNWEyYzEzMjI1ZDQ3MjVjZDg4YzIyZjZkMDRjY2M5ZDBmMzQ5
N2YuLjQ5YWQwMzU1NTM3MzQyMjVmMWRkZDYzM2I0MmMxMzgzMmNjZWZiZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTU0NCw3ICs1NDQsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRy
YWNrc0ZvckF1dG9SZXBlYQogICAgIHVuc2lnbmVkIGxhc3RBdXRvUmVwZWF0VHJhY2sgPSBmaXJz
dEF1dG9SZXBlYXRUcmFjayArIGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhkaXJlY3Rpb24pOwogCiAg
ICAgaWYgKCFncmlkLmhhc0dyaWRJdGVtcygpKSB7Ci0gICAgICAgIGVtcHR5VHJhY2tJbmRleGVz
ID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgZW1w
dHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIHRyYWNrSW5kZXggPSBmaXJzdEF1dG9SZXBlYXRUcmFjazsgdHJh
Y2tJbmRleCA8IGxhc3RBdXRvUmVwZWF0VHJhY2s7ICsrdHJhY2tJbmRleCkKICAgICAgICAgICAg
IGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAgfSBlbHNlIHsKQEAgLTU1
Miw3ICs1NTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJlbmRl
ckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYQogICAgICAgICAgICAgR3JpZEl0
ZXJhdG9yIGl0ZXJhdG9yKGdyaWQsIGRpcmVjdGlvbiwgdHJhY2tJbmRleCk7CiAgICAgICAgICAg
ICBpZiAoIWl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFl
bXB0eVRyYWNrSW5kZXhlcykKLSAgICAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOworICAgICAgICAgICAg
ICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IG1ha2VVbmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhT
ZXQ+KCk7CiAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMtPmFkZCh0cmFja0luZGV4
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzMyLDcgKzczMiw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxHcmlkQXJlYT4gUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lm
aWVkUG9zaXRpb25zT3V0CiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZDcm9zc0RpcmVjdGlvbiA9
IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1bnNpZ25lZCBjcm9zc0RpcmVj
dGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFj
ZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAgR3JpZFNwYW4gY3Jvc3NEaXJl
Y3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oZW5k
T2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiArIGNyb3NzRGlyZWN0aW9uU3Bh
blNpemUpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRBcmVhPihzcGVjaWZpZWRE
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zIDogc3BlY2lm
aWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHNwZWNpZmll
ZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0Rp
cmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9u
ID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0
aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVt
c09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRl
bXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCA4
OTEzZTc2YzlkNjFjOWQyNTQxOTkwYTkwMWI3YjAyOTRlNDhhYWRjLi5mNTFlMmZlYjM3ZTFmY2Yw
ZmQwZTc5MWFlNjRmMDNlZTg4YTJhN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5
bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgY29uc3QgZmxvYXQgaW1hZ2VEZXZp
Y2VQaXhlbFJhdGlvKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHls
ZSksIEludFNpemUoKSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDog
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9pbWFnZVJl
c291cmNlKHN0eWxlSW1hZ2UgPyBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlPigqc3R5bGVJbWFnZSkgOiBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAg
ICAgLCBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyhpbWFnZURldmljZVBpeGVsUmF0aW8pCiB7CiAg
ICAgdXBkYXRlQWx0VGV4dCgpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFJlbmRlckltYWdlOjpSZW5k
ZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUltYWdl
KiBzdHlsCiAKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCiAgICAgOiBSZW5kZXJS
ZXBsYWNlZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIEludFNpemUoKSkKLSAgICAsIG1faW1h
Z2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFn
ZVJlc291cmNlPigpKQorICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBtYWtlVW5p
cXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBtYWtlVW5p
cXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggOWQ4YTY1OTM0YmEzZmQyNTQ3NGMzOWM5MWZlZWM0
M2FhMGM5ZjlmNS4uMTUzMjVjZGExNjkwNjdhNTY5MWI4ODVhOGRmZGM3YWE5MDM2NDA0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTExMDAsNyArMTEw
MCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpkZWxldGVMaW5lcygpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7CiB9CiAKIElubGluZUZsb3dC
b3gqIFJlbmRlcklubGluZTo6Y3JlYXRlQW5kQXBwZW5kSW5saW5lRmxvd0JveCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBmOWYwZDBkNGNlZTY2YzFmNDNk
ZTUzMmI2MTAwNTMyYmZiNjE1MDhjLi4xODU0Njg3MDUxNmU0ZDBmZDVlMmIwMjhkZWIzYmM0MGNl
NmM4YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTcw
MCw3ICs3MDAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCgpCiAg
ICAgICAgIC8vIElnbm9yZSBub24tb3ZlcmZsb3cgbGF5ZXJzIGFuZCByZWZsZWN0aW9ucy4KICAg
ICAgICAgaWYgKGNoaWxkLT5pc05vcm1hbEZsb3dPbmx5KCkgJiYgIWlzUmVmbGVjdGlvbkxheWVy
KCpjaGlsZCkpIHsKICAgICAgICAgICAgIGlmICghbV9ub3JtYWxGbG93TGlzdCkKLSAgICAgICAg
ICAgICAgICBtX25vcm1hbEZsb3dMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVuZGVy
TGF5ZXIqPj4oKTsKKyAgICAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0ID0gbWFrZVVuaXF1
ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xpc3Qt
PmFwcGVuZChjaGlsZCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03NTYsNyArNzU2LDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3IKICAgICBpZiAoaW5jbHVkZUhpZGRlbkxheWVyICYmICFpc05v
cm1hbEZsb3dPbmx5KCkpIHsKICAgICAgICAgYXV0byYgbGF5ZXJMaXN0ID0gKHpJbmRleCgpID49
IDApID8gcG9zaXRpdmVaT3JkZXJMaXN0IDogbmVnYXRpdmVaT3JkZXJMaXN0OwogICAgICAgICBp
ZiAoIWxheWVyTGlzdCkKLSAgICAgICAgICAgIGxheWVyTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8
VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAgICAgICBsYXllckxpc3QgPSBtYWtlVW5p
cXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOwogICAgICAgICBsYXllckxpc3QtPmFwcGVuZCh0
aGlzKTsKICAgICB9CiAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZVRyYW5zZm9ybSgpCiAgICAgYm9vbCBoYWRUcmFuc2Zvcm0gPSAhIW1fdHJhbnNmb3JtOwog
ICAgIGlmIChoYXNUcmFuc2Zvcm0gIT0gaGFkVHJhbnNmb3JtKSB7CiAgICAgICAgIGlmIChoYXNU
cmFuc2Zvcm0pCi0gICAgICAgICAgICBtX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJh
bnNmb3JtYXRpb25NYXRyaXg+KCk7CisgICAgICAgICAgICBtX3RyYW5zZm9ybSA9IG1ha2VVbmlx
dWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
dHJhbnNmb3JtID0gbnVsbHB0cjsKICAgICAgICAgCkBAIC01NTI3LDcgKzU1MjcsNyBAQCBSZWY8
Q2xpcFJlY3RzPiBSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0c0Nv
bnRleHQmIGNsaXBSZWN0c0NvbgogICAgIH0KICAgICAKICAgICBpZiAoIW1fY2xpcFJlY3RzQ2Fj
aGUpCi0gICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBSZWN0
c0NhY2hlPigpOworICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0gbWFrZVVuaXF1ZTxDbGlwUmVj
dHNDYWNoZT4oKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9jbGlw
UmVjdHNSb290W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXI7CiAg
ICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9zY3JvbGxiYXJSZWxldmFuY3lbY2xpcFJlY3RzVHlwZV0g
PSBjbGlwUmVjdHNDb250ZXh0Lm92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5OwpAQCAtNjEw
NSw3ICs2MTA1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJDbGlwUmVjdHMoQ2xpcFJlY3Rz
VHlwZSB0eXBlVG9DbGVhcikKIFJlbmRlckxheWVyQmFja2luZyogUmVuZGVyTGF5ZXI6OmVuc3Vy
ZUJhY2tpbmcoKQogewogICAgIGlmICghbV9iYWNraW5nKSB7Ci0gICAgICAgIG1fYmFja2luZyA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJCYWNraW5nPigqdGhpcyk7CisgICAgICAgIG1f
YmFja2luZyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJCYWNraW5nPigqdGhpcyk7CiAgICAgICAg
IGNvbXBvc2l0b3IoKS5sYXllckJlY2FtZUNvbXBvc2l0ZWQoKnRoaXMpOwogCiAgICAgICAgIHVw
ZGF0ZUZpbHRlclBhaW50aW5nU3RyYXRlZ3koKTsKQEAgLTY1MjMsNyArNjUyMyw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlCiAKICAgICBpZiAocmVuZGVyZXIoKS5pc0hUTUxNYXJxdWVlKCkg
JiYgcmVuZGVyZXIoKS5zdHlsZSgpLm1hcnF1ZWVCZWhhdmlvcigpICE9IE1hcnF1ZWVCZWhhdmlv
cjo6Tm9uZSAmJiByZW5kZXJlcigpLmlzQm94KCkpIHsKICAgICAgICAgaWYgKCFtX21hcnF1ZWUp
Ci0gICAgICAgICAgICBtX21hcnF1ZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlck1hcnF1ZWU+
KHRoaXMpOworICAgICAgICAgICAgbV9tYXJxdWVlID0gbWFrZVVuaXF1ZTxSZW5kZXJNYXJxdWVl
Pih0aGlzKTsKICAgICAgICAgbV9tYXJxdWVlLT51cGRhdGVNYXJxdWVlU3R5bGUoKTsKICAgICB9
IGVsc2UgaWYgKG1fbWFycXVlZSkKICAgICAgICAgbV9tYXJxdWVlID0gbnVsbHB0cjsKQEAgLTY3
MzUsNyArNjczNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmVuc3VyZUxheWVyRmlsdGVycygpCiAg
ICAgaWYgKG1fZmlsdGVycykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fZmlsdGVycyA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CisgICAgbV9maWx0
ZXJzID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllckZpbHRlcnM+KCp0aGlzKTsKIH0KIAogdm9pZCBS
ZW5kZXJMYXllcjo6Y2xlYXJMYXllckZpbHRlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyMmVkNmRkN2MwMjUyYjE5NTNkZTNi
ZTE1Mzk3MWIxMjlhZTFjNzRiLi4xMjFkMTJmMjY5ZjkwZDEzYzZjY2RkMDk3YjkyMmUzYWRhY2Uy
NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcApAQCAtMTYyNyw3ICsxNjI3LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUFuY2VzdG9yQ2xpcHBpbmdTdGFjayhWZWN0b3I8Q29tcG9zaXRlZENsaXBEYXRhPiYKICAgICB9
CiAgICAgCiAgICAgaWYgKCFtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjaykgewotICAgICAgICBtX2Fu
Y2VzdG9yQ2xpcHBpbmdTdGFjayA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmNlc3RvckNsaXBw
aW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7CisgICAgICAgIG1fYW5jZXN0b3JDbGlw
cGluZ1N0YWNrID0gbWFrZVVuaXF1ZTxMYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjaz4oV1RGTW92
ZShjbGlwcGluZ0RhdGEpKTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0aW5nLCBz
dHJlYW0gPDwgImxheWVyICIgPDwgJm1fb3duaW5nTGF5ZXIgPDwgIiBhbmNlc3RvckNsaXBwaW5n
U3RhY2sgIiA8PCAqbV9hbmNlc3RvckNsaXBwaW5nU3RhY2spOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC0zMTc4LDE3ICszMTc4LDE3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5n
OjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uJiBhbmlt
CiAgICAgICAgIAogICAgICAgICBib29sIGlzRmlyc3RPckxhc3RLZXlmcmFtZSA9IGtleSA9PSAw
IHx8IGtleSA9PSAxOwogICAgICAgICBpZiAoKGhhc1RyYW5zZm9ybSAmJiBpc0ZpcnN0T3JMYXN0
S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5
VHJhbnNmb3JtKSkKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtl
X3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT50cmFu
c2Zvcm0oKSwgdGYpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVu
aXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT50cmFuc2Zv
cm0oKSwgdGYpKTsKIAogICAgICAgICBpZiAoKGhhc09wYWNpdHkgJiYgaXNGaXJzdE9yTGFzdEtl
eWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eU9w
YWNpdHkpKQotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1
ZTxGbG9hdEFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwgdGYp
KTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmlt
YXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CiAKICAgICAg
ICAgaWYgKChoYXNGaWx0ZXIgJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5
ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eUZpbHRlcikpCi0gICAgICAgICAgICBm
aWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+
KGtleSwga2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRmKSk7CisgICAgICAgICAgICBmaWx0ZXJW
ZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJh
bWVTdHlsZS0+ZmlsdGVyKCksIHRmKSk7CiAKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQog
ICAgICAgICBpZiAoKGhhc0JhY2tkcm9wRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkg
fHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCYWNr
ZHJvcEZpbHRlcikpCi0gICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQoc3Rk
OjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5i
YWNrZHJvcEZpbHRlcigpLCB0ZikpOworICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3Iu
aW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHls
ZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKICNlbmRpZgogICAgIH0KIApAQCAtMzI0Myw4ICsz
MjQzLDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUg
dGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0aW9u
KiBvcGFjaXR5QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eU9wYWNpdHkpOwogICAgICAgICBpZiAob3BhY2l0eUFuaW0gJiYgIW9wYWNpdHlBbmltLT5pc0Vt
cHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qgb3Bh
Y2l0eVZlY3RvcihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7Ci0gICAgICAgICAgICBvcGFjaXR5
VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNv
bXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKLSAgICAgICAgICAgIG9w
YWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4o
MSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAg
IG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMCwg
Y29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpOworICAgICAgICAgICAg
b3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigxLCBj
b21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpOwogICAgICAgICAgICAgLy8g
VGhlIGJveFNpemUgcGFyYW0gaXMgb25seSB1c2VkIGZvciB0cmFuc2Zvcm0gYW5pbWF0aW9ucyAo
d2hpY2ggY2FuIG9ubHkgcnVuIG9uIFJlbmRlckJveGVzKSwgc28gd2UgcGFzcyBhbiBlbXB0eSBz
aXplIGhlcmUuCiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24o
b3BhY2l0eVZlY3RvciwgRmxvYXRTaXplKCksIG9wYWNpdHlBbmltLCBHcmFwaGljc0xheWVyOjph
bmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSksIHRpbWVP
ZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJlY3Qg
b3BhY2l0eSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUg
ZmluYWwgb3BhY2l0eS4KQEAgLTMyNTgsOCArMzI1OCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQgcHJv
cGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogdHJhbnNmb3JtQW5pbSA9IHRvU3R5bGUtPnRy
YW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSk7CiAgICAgICAgIGlmICh0
cmFuc2Zvcm1BbmltICYmICF0cmFuc2Zvcm1BbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkg
ewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNmb3JtVmVjdG9yKEFuaW1hdGVk
UHJvcGVydHlUcmFuc2Zvcm0pOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChz
dGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPnRy
YW5zZm9ybSgpKSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFr
ZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5zZm9ybSgp
KSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNm
b3JtQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKTsKKyAgICAgICAg
ICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25W
YWx1ZT4oMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBo
aWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHNuYXBwZWRJbnRSZWN0KHJl
bmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpLnNpemUoKSwgdHJhbnNmb3JtQW5pbSwgR3JhcGhp
Y3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVRyYW5z
Zm9ybSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQg
dGhlIGNvcnJlY3QgdHJhbnNmb3JtIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMs
IGFsc28gc2V0IHRoZSBmaW5hbCB0cmFuc2Zvcm0uCiAgICAgICAgICAgICAgICAgdXBkYXRlVHJh
bnNmb3JtKCp0b1N0eWxlKTsKQEAgLTMyNzIsOCArMzI3Miw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQg
cHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogZmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRy
YW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUZpbHRlcik7CiAgICAgICAgIGlmIChmaWx0
ZXJBbmltICYmICFmaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAg
ICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmlsdGVyVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlGaWx0
ZXIpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZp
bHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7Ci0gICAgICAgICAg
ICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFs
dWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3IuaW5z
ZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+ZmlsdGVy
KCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJB
bmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+ZmlsdGVyKCkpKTsKICAgICAgICAgICAgIGlmICht
X2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJWZWN0b3IsIEZsb2F0U2l6ZSgpLCBm
aWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmlt
YXRlZFByb3BlcnR5RmlsdGVyKSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAvLyBU
byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmaWx0ZXIgaXMgdmlzaWJsZSB3aGVuIHRoZSBhbmlt
YXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIGZpbHRlci4KICAgICAgICAgICAgICAgICB1
cGRhdGVGaWx0ZXJzKCp0b1N0eWxlKTsKQEAgLTMyODcsOCArMzI4Nyw4IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3Bl
cnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogYmFja2Ryb3BGaWx0ZXJBbmlt
ID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ry
b3BGaWx0ZXIpOwogICAgICAgICBpZiAoYmFja2Ryb3BGaWx0ZXJBbmltICYmICFiYWNrZHJvcEZp
bHRlckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlmcmFt
ZVZhbHVlTGlzdCBiYWNrZHJvcEZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFj
a2Ryb3BGaWx0ZXIpOwotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0
ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+YmFja2Ry
b3BGaWx0ZXIoKSkpOwotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0
ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmJhY2tkcm9w
RmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtl
VW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVy
KCkpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVl
PEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CiAg
ICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oYmFja2Ryb3BGaWx0
ZXJWZWN0b3IsIEZsb2F0U2l6ZSgpLCBiYWNrZHJvcEZpbHRlckFuaW0sIEdyYXBoaWNzTGF5ZXI6
OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlXZWJraXRCYWNrZHJv
cEZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRo
YXQgdGhlIGNvcnJlY3QgYmFja2Ryb3AgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0
aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBiYWNrZHJvcCBmaWx0ZXIuCiAgICAgICAgICAg
ICAgICAgdXBkYXRlQmFja2Ryb3BGaWx0ZXJzKCp0b1N0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggYWJlNGQ0ZDY3
NWEyMjE4NmUyZWE4OWQ0MTJmZmE4MTUzOGM1YzkyOS4uMzIxMjI5ZDZmMjNjZmFlNjZhMDVhNTI4
MDhkZDBiMGNiYThjMTQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OlJlbmRlckxheWVyQ29tcG9zaXRvcihSZW5kZXJWaWV3JiByZW5kZXJWaWV3KQog
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fcmVuZGVyVmlldy5mcmFtZVZp
ZXcoKS5wbGF0Zm9ybVdpZGdldCgpKQotICAgICAgICBtX2xlZ2FjeVNjcm9sbGluZ0xheWVyQ29v
cmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29v
cmRpbmF0b3I+KHBhZ2UoKS5jaHJvbWUoKS5jbGllbnQoKSwgaXNNYWluRnJhbWVDb21wb3NpdG9y
KCkpOworICAgICAgICBtX2xlZ2FjeVNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3IgPSBtYWtlVW5p
cXVlPExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I+KHBhZ2UoKS5jaHJvbWUo
KS5jbGllbnQoKSwgaXNNYWluRnJhbWVDb21wb3NpdG9yKCkpOwogI2VuZGlmCiB9CiAKQEAgLTYx
Miw3ICs2MTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5Rmx1c2hCZWZv
cmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKgogewogICAgIGlmICghbV9sYXll
clVwZGF0ZXIpIHsKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEID0gcGFnZSgp
LmNocm9tZSgpLmRpc3BsYXlJRCgpOwotICAgICAgICBtX2xheWVyVXBkYXRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8R3JhcGhpY3NMYXllclVwZGF0ZXI+KCp0aGlzLCBkaXNwbGF5SUQpOworICAgICAg
ICBtX2xheWVyVXBkYXRlciA9IG1ha2VVbmlxdWU8R3JhcGhpY3NMYXllclVwZGF0ZXI+KCp0aGlz
LCBkaXNwbGF5SUQpOwogICAgIH0KICAgICAKICAgICBtX2xheWVyVXBkYXRlci0+c2NoZWR1bGVV
cGRhdGUoKTsKQEAgLTQ3OTIsNyArNDc5Miw3IEBAIHZvaWQgTGVnYWN5V2ViS2l0U2Nyb2xsaW5n
TGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzCiAK
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZXdwb3J0Q29uc3RyYWludHM+IGNvbnN0cmFpbnRz
OwogICAgICAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNTdGlja2lseVBvc2l0aW9uZWQoKSkg
ewotICAgICAgICAgICAgY29uc3RyYWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0aWNreVBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlU3RpY2t5Vmlld3BvcnRD
b25zdHJhaW50cygqbGF5ZXIpKTsKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gbWFrZVVuaXF1
ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZVN0
aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAgICAgICBjb25zdCBSZW5k
ZXJMYXllciogZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIgPSBudWxscHRyOwogICAgICAg
ICAgICAgaWYgKGNvbXBvc2l0b3IuaXNBc3luY1Njcm9sbGFibGVTdGlja3lMYXllcigqbGF5ZXIs
ICZlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllcikgJiYgZW5jbG9zaW5nVG91Y2hTY3JvbGxh
YmxlTGF5ZXIpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZW5jbG9zaW5nVG91Y2hTY3JvbGxh
YmxlTGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKQEAgLTQ4MDAsNyArNDgwMCw3IEBAIHZvaWQgTGVn
YWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENv
bnN0cmFpbmVkTGF5ZXJzCiAgICAgICAgICAgICAgICAgc3RpY2t5Q29udGFpbmVyTWFwLmFkZChs
YXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgZW5jbG9z
aW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXItPmJhY2tpbmcoKS0+c2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KS0+cGxhdGZvcm1MYXllcigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChs
YXllci0+cmVuZGVyZXIoKS5pc0ZpeGVkUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgY29uc3Ry
YWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
Pihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7Cisg
ICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8Rml4ZWRQb3NpdGlvblZpZXdwb3J0
Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cygq
bGF5ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAppbmRl
eCA0Yjg2ZmUyYWQxNzVkY2U4NmFkMzg1MmJkZmMxNTJmZDEzMDhkNDVlLi4xMjhjOTZkYWUwYjMx
MDA2Y2EyNWQ1YTU2YzcyMGJjODkwZDM0ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKCkKIHZvaWQgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdDo6Y3JlYXRlTGF5ZXIoKQogewogICAgIEFTU0VSVCghbV9sYXllcik7Ci0g
ICAgbV9sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKKyAgICBt
X2xheWVyID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllcj4oKnRoaXMpOwogICAgIHNldEhhc0xheWVy
KHRydWUpOwogICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYmM1NTI3YjhjNDZh
NGRlMDY2ZjY5ZTVhMzEwYzg4NjgxOTZmYzIzYS4uMWFhZTA5ZDAwYjI2ZWEzY2FkZWE4NjcyZTI3
NzkyOWJmZDE3YTYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVC
cmVhay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgaW50IFJlbmRlckxpbmVCcmVhazo6YmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwKIAogc3Rk
Ojp1bmlxdWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJlbmRlckxpbmVCcmVhazo6Y3JlYXRlSW5s
aW5lQm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVFbGVtZW50Qm94
PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMp
OwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0SW5saW5lQm94V3JhcHBlcihJbmxpbmVF
bGVtZW50Qm94KiBpbmxpbmVCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDliYjlhNTM5ZDY2NDJkZjkwMDI2YTc4MmFm
OGNmODRkYzQ5ZGEyYTkuLjQxMDNkYWQ0ODQ0ZGQyNGEzMDJhNzMyYWYyMjE5YWM5MDAwMWNiYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZs
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZs
b3cuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5k
ZXJNdWx0aUNvbHVtbkZsb3cpOwogCiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRp
Q29sdW1uRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAg
OiBSZW5kZXJGcmFnbWVudGVkRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAgLCBt
X3NwYW5uZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxTcGFubmVyTWFwPigpKQorICAgICwgbV9zcGFu
bmVyTWFwKG1ha2VVbmlxdWU8U3Bhbm5lck1hcD4oKSkKICAgICAsIG1fbGFzdFNldFdvcmtlZE9u
KG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCiAgICAgLCBtX2NvbHVtbldpZHRoKDAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDRkYTNiZDcz
NzcxYmExNzE5MGVhYzM1ZGE2MzhlMjQzZjE5MDI5MDcuLjBiZjUxOTNkZTQ4NDQ1YmNjNjc3ZTkx
NGU4YWQzZGY4MWNlYjgyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCkBAIC0xODkzLDcgKzE4OTMsNyBAQCBjb25zdCBSZW5kZXJPYmplY3Q6OlJlbmRlck9i
amVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OnJhcmVEYXRhKCkgY29uc3QKIFJlbmRlck9iamVj
dDo6UmVuZGVyT2JqZWN0UmFyZURhdGEmIFJlbmRlck9iamVjdDo6ZW5zdXJlUmFyZURhdGEoKQog
ewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5l
bnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJPYmplY3RSYXJl
RGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5l
bnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJPYmplY3RSYXJlRGF0YT4o
KTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlUmFy
ZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHAKaW5kZXggNmQ1NmI1ZWNhMmM2YjI3NjhhZmJiMmQ0Y2ZmMGFjMDg4MmU5
ZmRjNi4uMGRmZTI4Mjc2NGY0MDhiNjIwYmVmNWQ5ZjU4ZTg4YTZjYzc2YzA4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbik7CiAKIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpCi0gICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFn
ZVJlc291cmNlPigpKQorICAgICwgbV9zbmFwc2hvdFJlc291cmNlKG1ha2VVbmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZT4oKSkKIHsKICAgICBtX3NuYXBzaG90UmVzb3VyY2UtPmluaXRpYWxpemUo
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXgg
MTg2Y2E4NzBlZDEwOTEzZDU4Yjg1NDllYjk2ZGUzMzZlMzQ1NTM1OS4uZTkxYTEzMzcxOTkxMmQx
OGZhNTVlMzZkODM1NTg4NTdjMmQxOGIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBSZW5kZXJUYWJsZTo6c3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHkK
ICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1MyIHNwZWMsIHlvdSBvbmx5IHVzZSBmaXhl
ZCB0YWJsZSBsYXlvdXQgaWYgYW4KICAgICAgICAgLy8gZXhwbGljaXQgd2lkdGggaXMgc3BlY2lm
aWVkIG9uIHRoZSB0YWJsZS4gIEF1dG8gd2lkdGggaW1wbGllcyBhdXRvIHRhYmxlIGxheW91dC4K
ICAgICAgICAgaWYgKHN0eWxlKCkudGFibGVMYXlvdXQoKSA9PSBUYWJsZUxheW91dFR5cGU6OkZp
eGVkICYmICFzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpKQotICAgICAgICAgICAgbV90
YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7Cisg
ICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxGaXhlZFRhYmxlTGF5b3V0Pih0
aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QXV0b1RhYmxlTGF5b3V0Pih0aGlzKTsKKyAgICAgICAgICAgIG1fdGFibGVMYXlv
dXQgPSBtYWtlVW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CiAgICAgfQogCiAgICAgLy8g
SWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBpbnZhbGlkYXRlIGNvbGxhcHNlZCBib3JkZXJzIGNhY2hl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGFhZDBjMTQ3ZjEx
ZDM5YjNhZDE2Y2FkZGMxNTNjMzIyZTkyZDdhMGEuLmI2MzA1ZGU1ZjYzMTZjNGRiMjYwYTc5OWNk
MTE2YmJkMWFlNTQ0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
QEAgLTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6ZGlydHlMaW5lQm94ZXMoYm9v
bCBmdWxsTGF5b3V0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVyVGV4
dDo6Y3JlYXRlVGV4dEJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
VGV4dEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZVRleHRCb3g+KCp0
aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lVGV4dEJv
eCYgdGV4dEJveCkKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50
YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlw
CiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBzZWN1cmVUZXh0VGltZXIgPSBzZWN1cmVUZXh0
VGltZXJzKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXNl
Y3VyZVRleHRUaW1lcikKLSAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKKyAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gbWFr
ZVVuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKICAgICBzZWN1cmVUZXh0VGltZXItPnJl
c3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYzE0NDUxYTE4ZWVhN2E1NzFhMjc3Nzg5OGE3
OWNjOGI0M2ZmMzE0Mi4uNWZlYzY3OGM2YmI1ZGYwZTQ5MjJiMDEyYzNmMjY4ZGJhYjRhN2I2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtNDkyLDcgKzQ5Miw3
IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVj
dCYgcmVwYWludFJlY3QpIGNvbnN0CiAgICAgLy8gRklYTUU6IE1heWJlIHRoZXJlIHNob3VsZCBi
ZSBhIHJlZ2lvbiB0eXBlIHRoYXQgZG9lcyB0aGlzIGF1dG9tYXRpY2FsbHkuCiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUgPSAxNiAqIDE2Owog
ICAgIGlmIChtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Z3JpZFNpemUoKSA+IG1heGltdW1S
ZXBhaW50UmVnaW9uR3JpZFNpemUpCi0gICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5i
b3VuZHMoKSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gbWFrZVVuaXF1
ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMoKSk7CiB9CiAKIHZv
aWQgUmVuZGVyVmlldzo6Zmx1c2hBY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24oKSBjb25zdApAQCAt
NzI0LDcgKzcyNCw3IEBAIGJvb2wgUmVuZGVyVmlldzo6dXNlc0NvbXBvc2l0aW5nKCkgY29uc3QK
IFJlbmRlckxheWVyQ29tcG9zaXRvciYgUmVuZGVyVmlldzo6Y29tcG9zaXRvcigpCiB7CiAgICAg
aWYgKCFtX2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29tcG9zaXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CisgICAgICAgIG1fY29tcG9zaXRvciA9
IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CiAKICAgICByZXR1cm4g
Km1fY29tcG9zaXRvcjsKIH0KQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bAogSW1hZ2VRdWFsaXR5Q29udHJvbGxlciYgUmVuZGVyVmlldzo6aW1hZ2VRdWFsaXR5Q29u
dHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIpCi0gICAgICAg
IG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VRdWFsaXR5
Q29udHJvbGxlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBt
YWtlVW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
aW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKIH0KIApAQCAtODM0LDcgKzgzNCw3IEBAIFJlbmRlclZp
ZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKFJl
bmRlclZpZXcqIHZpZXcpCiAKICAgICBtX3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRSZWdpb24gPSAh
IXJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbjsKICAgICBpZiAoIW1f
d2FzQWNjdW11bGF0aW5nUmVwYWludFJlZ2lvbikKLSAgICAgICAgcm9vdFJlbmRlclZpZXctPm1f
YWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KCk7Cisg
ICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VV
bmlxdWU8UmVnaW9uPigpOwogICAgIG1fcm9vdFZpZXcgPSBtYWtlV2Vha1B0cigqcm9vdFJlbmRl
clZpZXcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAK
aW5kZXggZmRjZDU5YzUyYzVmMzI4ZjUyMDlmMDBjMWY4ZDgxNmFkYzVmNzY2OC4uNDQ1NTg0MWFm
MzJmZjE1MjUyY2ZhMjhlZDhhNjljM2U0OWYxZjMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIGZsb2F0IFJvb3RJbmxp
bmVCb3g6OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsICBib29s
IGx0ciwgZmxvCiAgICAgICAgIGdFbGxpcHNpc0JveE1hcCA9IG5ldyBFbGxpcHNpc0JveE1hcCgp
OwogCiAgICAgQVNTRVJUKCFoYXNFbGxpcHNpc0JveCgpKTsKLSAgICBhdXRvKiBlbGxpcHNpc0Jv
eCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RWxsaXBzaXNC
b3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJr
dXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwg
eSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9y
LT52YWx1ZS5nZXQoKTsKKyAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1hcC0+
c2V0KHRoaXMsIG1ha2VVbmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0
ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxX
aWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jp
em9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICBzZXRIYXNF
bGxpcHNpc0JveCh0cnVlKTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBhbiBSVEwgdmVyc2lv
biBvZiB0aGlzPwogICAgIGlmIChsdHIgJiYgKHgoKSArIGxvZ2ljYWxXaWR0aCgpICsgZWxsaXBz
aXNXaWR0aCkgPD0gYmxvY2tSaWdodEVkZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5oCmluZGV4IDdkZjI4Mjg4YTRkNTVjMmM3ZDI2YWQ0YmMwMTc2ZDBiNzYxNzgz
NjQuLjI0N2U1NWMwNjllOWZlODgxY2FmNGJmYmMyYjRhZWYxOWUzNjE3YTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNz
IFJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxvd0JveCwgcHVibGljIENhbk1ha2VXZWFr
UHRyPFJvb3RJbmxpbmVCb3g+CiAgICAgICAgIGlmIChtX2Zsb2F0cykKICAgICAgICAgICAgIG1f
ZmxvYXRzLT5hcHBlbmQobWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9mbG9hdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENsZWFuTGluZUZsb2F0TGlz
dD4oMSwgbWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKKyAgICAgICAgICAgIG1fZmxvYXRzID0g
bWFrZVVuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0aW5nQm94
KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVGbG9hdChSZW5kZXJCb3gmIGZsb2F0aW5nQm94
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApp
bmRleCBlYzVlNzM1NmE2NGQxMjQ5ZGRhMTE0N2U4YmJhMzFmNDc5MGI0YmYyLi5iOWJhZDBhMDlm
MjliZjdhZGM5ZDMzM2Y0ZTgxMWMzZWExYjkzZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApAQCAtMTMxLDEzICsxMzEsMTMgQEAgc3Rh
dGljIFNlbGVjdGlvbkRhdGEgY29sbGVjdChjb25zdCBTZWxlY3Rpb25SYW5nZURhdGE6OkNvbnRl
eHQmIHNlbGVjdGlvbiwgYm9vbAogICAgIHdoaWxlIChzdGFydCAmJiBzdGFydCAhPSBzdG9wKSB7
CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKnN0YXJ0LCBzZWxlY3Rp
b24pKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGlu
ZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2Vs
bC4KLSAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwgc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKKyAgICAg
ICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxS
ZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKICAgICAgICAgICAgIGlmIChyZXBh
aW50RGlmZmVyZW5jZSkgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byogYmxvY2sgPSBjb250
YWluaW5nQmxvY2tCZWxvd1ZpZXcoKnN0YXJ0KTsgYmxvY2s7IGJsb2NrID0gY29udGFpbmluZ0Js
b2NrQmVsb3dWaWV3KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgYmxvY2tJ
bmZvID0gb2xkU2VsZWN0aW9uRGF0YS5ibG9ja3MuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpibG9jayk7CisgICAgICAg
ICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25J
bmZvPigqYmxvY2spOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMjEzLDEzICsyMTMsMTMgQEAgSW50UmVjdCBTZWxlY3Rpb25SYW5nZURhdGE6OmNvbGxl
Y3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQgY2xpcFRvVmlzaWJsZUNvbnQKICAgICAgICAg
aWYgKChzdGFydC0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25D
b250ZXh0LnN0YXJ0KCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQogICAg
ICAgICAgICAgJiYgc3RhcnQtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxl
Y3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBw
YWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQg
YXMgd2VsbC4KLSAgICAgICAgICAgIHJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBjbGlwVG9WaXNpYmxlQ29udGVudCA9PSBD
bGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKSk7CisgICAgICAgICAgICByZW5kZXJlcnMuc2V0KHN0
YXJ0LCBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlzaWJs
ZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOwogICAgICAgICAgICAgYXV0
byogYmxvY2sgPSBzdGFydC0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGlsZSAo
YmxvY2sgJiYgIWlzPFJlbmRlclZpZXc+KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IHJlbmRlcmVycy5h
ZGQoYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAo
YmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBi
bG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpibG9jaywg
Y2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olllcyk7CisgICAg
ICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigq
YmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMp
OwogICAgICAgICAgICAgICAgIGJsb2NrID0gYmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBTZWxlY3Rpb25S
YW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUg
YmxvY2tSZXAKICAgICBzZWxlY3Rpb25JdGVyYXRvciA9IFNlbGVjdGlvbkl0ZXJhdG9yKHNlbGVj
dGlvblN0YXJ0KTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlvblN0
YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmVyICE9IHNlbGVjdGlvbkVuZDsg
Y3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAgIGlm
IChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKmN1cnJlbnRSZW5kZXJlciwgbV9zZWxlY3Rp
b25Db250ZXh0KSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlv
bkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbklu
Zm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBtYWtlVW5pcXVlPFJlbmRlclNl
bGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOwogI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQogICAgICAgICAgICAgZm9yIChhdXRvJiByZWN0IDogc2VsZWN0aW9uSW5mby0+
Y29sbGVjdGVkU2VsZWN0aW9uUmVjdHMoKSkKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJl
Y3RHYXRoZXJlci5hZGRSZWN0KHNlbGVjdGlvbkluZm8tPnJlcGFpbnRDb250YWluZXIoKSwgcmVj
dCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KGNv
bnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tSZXAKICAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYgYmxvY2tJ
bmZvID0gbmV3U2VsZWN0ZWRCbG9ja3MuYWRkKGNvbnRhaW5pbmdCbG9jaywgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqY29udGFpbmluZ0Jsb2NrKTsKKyAgICAg
ICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5m
bz4oKmNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrID0g
Y29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICNpZiBFTkFCTEUoU0VSVklDRV9D
T05UUk9MUykKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRHYXBS
ZWN0cyhibG9ja0luZm8tPnJlcGFpbnRDb250YWluZXIoKSwgYmxvY2tJbmZvLT5yZWN0cygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCA4
Yzc2NmU2ZGUyYzc0YWQwMzc5NzMzMzFmYzdmNWE0NzQ5MDE1YjhlLi5jMzYyZjRlNTdiMDBmOWNl
MzlhNzNlY2U4MTFjMmM4MzJkNjUwYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC05OTcsNyArOTk3LDcgQEAgTGF5b3V0OjpMYXlvdXQo
Y29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3VudCwgY29uc3QgUmVu
ZGVyQmxvY2sKIGNvbnN0IFJ1blJlc29sdmVyJiBMYXlvdXQ6OnJ1blJlc29sdmVyKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fcnVuUmVzb2x2ZXIpCi0gICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7Cisg
ICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxv
d1JlbmRlcmVyLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3J1blJlc29sdmVyOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5jcHAKaW5kZXggMWJmOThlNGVlYjQzYmEyMmNkYTRlNmY1ZDNiYzJhNWY5ZmM0YjRiNy4uMDYy
NWIxNmJkNTQzMTk3M2VkMzFkZTk5OGFlZDg4OWIwMTJiYTNiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxv
dywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2hhZG93RGF0YT4gZGVidWdTaGFkb3cgPSBudWxscHRyOwogICAgIGlmIChmbG93LnNl
dHRpbmdzKCkuc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkgewotICAgICAg
ICBkZWJ1Z1NoYWRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQoMCwg
MCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3IoMCwgMjU1LCAwLCAy
MDApKTsKKyAgICAgICAgZGVidWdTaGFkb3cgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBv
aW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1
NSwgMCwgMjAwKSk7CiAgICAgICAgIHRleHRQYWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRvdy5n
ZXQoKSk7CiAgICAgfQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBnZW5lcmF0ZUxpbmVCb3hU
cmVlKFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiAgICAgICAg
IEJpZGlSdW5MaXN0PEJpZGlSdW4+IGJpZGlSdW5zOwogICAgICAgICBmb3IgKGF1dG8gaXQgPSBy
YW5nZS5iZWdpbigpOyBpdCAhPSByYW5nZS5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgYXV0
byBydW4gPSAqaXQ7Ci0gICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4oc3RkOjptYWtlX3Vu
aXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2Fz
dDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xF
RlRfVE9fUklHSFQpKTsKKyAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVuZFJ1bihtYWtlVW5pcXVl
PEJpZGlSdW4+KHJ1bi5sb2NhbFN0YXJ0KCksIHJ1bi5sb2NhbEVuZCgpLCBjb25zdF9jYXN0PFJl
bmRlck9iamVjdCY+KHJ1bi5yZW5kZXJlcigpKSwgYmlkaUNvbnRleHQucHRyKCksIFVfTEVGVF9U
T19SSUdIVCkpOwogICAgICAgICB9CiAKICAgICAgICAgTGluZUluZm8gbGluZUluZm87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAppbmRleCAzYmExMzBkNDU1
OWQ3MjkyZDg5MWY1NTNjZjE0ODBmODY2YmIyYmFkLi40YjQzZTZhY2JlMGVlZGFmNGVhZjRkMmU1
ZDVhNDQ2MzkwNjA1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dEF1dG9TaXppbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1Np
emluZy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFRleHRBdXRvU2l6aW5nOjphZGRUZXh0
Tm9kZShUZXh0JiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXplKQogICAgIExPRyhUZXh0QXV0b3Np
emluZywgIiBhZGRBdXRvU2l6ZWROb2RlICVwIGNhbmRpZGF0ZVNpemU9JWYiLCAmbm9kZSwgY2Fu
ZGlkYXRlU2l6ZSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RleHROb2Rlcy5hZGQ8VGV4dEF1
dG9TaXppbmdIYXNoVHJhbnNsYXRvcj4obm9kZS5yZW5kZXJlcigpLT5zdHlsZSgpLCBudWxscHRy
KTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7Cisg
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFRleHRBdXRvU2l6
aW5nVmFsdWU+KCk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkVGV4dE5vZGUo
bm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9s
aW5lL0xpbmVCcmVha2VyLmNwcAppbmRleCAyYjFjMWZhMDNjYTFjNTc1NjkwMjc3YTVlODEyODcx
MDEwZDQ0NjdlLi5kMTE2NjE1YTcyNmM1YTBhOTQzZDliOWY2ZTA5NDBiOTVlNjkwOTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHZvaWQgTGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZShJbmxpbmVC
aWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYKICAgICAgICAgaWYgKG9iamVjdC5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25zKG1f
YmxvY2ssIGRvd25jYXN0PFJlbmRlckJveD4ob2JqZWN0KSwgd2lkdGguc2hvdWxkSW5kZW50VGV4
dCgpKTsKICAgICAgICAgICAgIGlmIChvYmplY3Quc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlu
bGluZVR5cGUoKSkgewotICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMoKS5hcHBlbmRSdW4o
c3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPigwLCAxLCBvYmplY3QsIHJlc29sdmVyLmNvbnRleHQo
KSwgcmVzb2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBw
ZW5kUnVuKG1ha2VVbmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0
KCksIHJlc29sdmVyLmRpcigpKSk7CiAgICAgICAgICAgICAgICAgbGluZUluZm8uaW5jcmVtZW50
UnVuc0Zyb21MZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgaWYgKG9iamVjdC5pc0Zsb2F0aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCmluZGV4IDRiMTU5N2U5ZjIxYzljZDRiMmYwZDg4MzQ3
NDQ3NzVmMWQ4YmRlMDEuLmQ1MjA5MmI2OGVkOGUyYzhmZGE1MTVjOTBjZDUyMjM1NmQ2NTVjMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3Bw
CkBAIC03Niw3ICs3Niw3IEBAIEludFNoYXBlSW50ZXJ2YWwgTWFyZ2luSW50ZXJ2YWxHZW5lcmF0
b3I6OmludGVydmFsQXQoaW50IHkpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hhcGVJ
bnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZh
bHMoaW50IHNoYXBlTWFyZ2luKSBjb25zdAogewogICAgIGludCBtYXJnaW5JbnRlcnZhbHNTaXpl
ID0gKG9mZnNldCgpID4gc2hhcGVNYXJnaW4pID8gc2l6ZSgpIDogc2l6ZSgpIC0gb2Zmc2V0KCkg
KiAyICsgc2hhcGVNYXJnaW4gKiAyOwotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hh
cGVNYXJnaW4sIG9mZnNldCgpKSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFJhc3Rl
clNoYXBlSW50ZXJ2YWxzPihtYXJnaW5JbnRlcnZhbHNTaXplLCBzdGQ6Om1heChzaGFwZU1hcmdp
biwgb2Zmc2V0KCkpKTsKICAgICBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvciBtYXJnaW5JbnRlcnZh
bEdlbmVyYXRvcihzaGFwZU1hcmdpbik7CiAKICAgICBmb3IgKGludCB5ID0gYm91bmRzKCkueSgp
OyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAKaW5kZXggMzAyMzFhMGJlMWJiYzYzZTRiZTNkMjUwNTEyYmVkM2QxOTU5
NDA5OS4uZjVlZmVmZGQzMmIzMDU0N2FkYmQ4ZWIwOGY1NGU2M2IwMjQwZmQ5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTQ2LDI0ICs0NiwyNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVJ
bnNldFNoYXBlKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGJvdW5kcykKIHsKICAgICBBU1NFUlQo
Ym91bmRzLnJlY3QoKS53aWR0aCgpID49IDAgJiYgYm91bmRzLnJlY3QoKS5oZWlnaHQoKSA+PSAw
KTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVy
LCBmbG9hdCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSBy
YWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0U2l6
ZShyYWRpdXMsIHJhZGl1cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY3RhbmdsZVNoYXBl
PihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGl1cywgY2VudGVyLnkoKSAtIHJhZGl1cywgcmFk
aXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSk7CiB9CiAKIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShjb25zdCBGbG9hdFBv
aW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiB7CiAgICAgQVNTRVJUKHJhZGlp
LndpZHRoKCkgPj0gMCAmJiByYWRpaS5oZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53
aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFk
aWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVT
aGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgpIC0g
cmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlp
KTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlUG9seWdvblNoYXBl
KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBm
aWxsUnVsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2x5Z29uU2hhcGU+KFdU
Rk1vdmUodmVydGljZXMpLCBmaWxsUnVsZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9seWdv
blNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOwogfQogCiBzdGF0aWMgaW5saW5l
IEZsb2F0UmVjdCBwaHlzaWNhbFJlY3RUb0xvZ2ljYWwoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBm
bG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKQEAgLTEyOCw3
ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25z
dCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBlLCBjb25zdCBMYQogICAgICAgICBjb25zdCBWZWN0b3I8
TGVuZ3RoPiYgdmFsdWVzID0gcG9seWdvbi52YWx1ZXMoKTsKICAgICAgICAgc2l6ZV90IHZhbHVl
c1NpemUgPSB2YWx1ZXMuc2l6ZSgpOwogICAgICAgICBBU1NFUlQoISh2YWx1ZXNTaXplICUgMikp
OwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzID0gbWFr
ZVVuaXF1ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7IGkgKz0gMikgewogICAgICAgICAgICAg
RmxvYXRQb2ludCB2ZXJ0ZXgoCiAgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aCh2
YWx1ZXMuYXQoaSksIGJveFdpZHRoKSwKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRo
cmVzaG9sZCwgYwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChpbWFn
ZVIpOwogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwot
ICAgIGF1dG8gaW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFs
cz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKKyAgICBhdXRvIGludGVy
dmFscyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0
KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVy
IHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
aW1hZ2VSZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAKQEAgLTIxOCw3ICsyMTgsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1h
Z2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byByYXN0
ZXJTaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGU+KFdURk1vdmUoaW50ZXJ2YWxz
KSwgbWFyZ2luUmVjdC5zaXplKCkpOworICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVl
PFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKICAg
ICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHJhc3RlclNo
YXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKICAgICByZXR1cm4gcmFzdGVyU2hhcGU7CkBAIC0yMzAs
NyArMjMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlQm94U2hhcGUo
Y29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBXcmkKIAogICAgIEZsb2F0UmVjdCByZWN0
KDAsIDAsIHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgpLCByb3VuZGVkUmVjdC5yZWN0KCkuaGVp
Z2h0KCkpOwogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmRzKHJlY3QsIHJvdW5kZWRSZWN0LnJh
ZGlpKCkpOwotICAgIGF1dG8gc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJveFNoYXBlPihib3Vu
ZHMpOworICAgIGF1dG8gc2hhcGUgPSBtYWtlVW5pcXVlPEJveFNoYXBlPihib3VuZHMpOwogICAg
IHNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgc2hhcGUtPm1fbWFyZ2lu
ID0gbWFyZ2luOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5oCmluZGV4IGNkOTRmODljMDJiMGI4YzEzNTE5NDU3ZTQ0ZDBkZGFmNmQ4
N2YxZmEuLjk0ODQzMTcxOTQ3YzAyMzA5YWI3ZjRmYjFiOTdjMjYzODgyZWUzNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBA
IC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU2hhcGVPdXRzaWRlSW5mbyBmaW5hbCB7CiAgICAgICAg
IEluZm9NYXAmIGluZm9NYXAgPSBTaGFwZU91dHNpZGVJbmZvOjppbmZvTWFwKCk7CiAgICAgICAg
IGlmIChTaGFwZU91dHNpZGVJbmZvKiBpbmZvID0gaW5mb01hcC5nZXQoJmtleSkpCiAgICAgICAg
ICAgICByZXR1cm4gKmluZm87Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQoJmtl
eSwgc3RkOjptYWtlX3VuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKKyAgICAgICAgYXV0
byByZXN1bHQgPSBpbmZvTWFwLmFkZCgma2V5LCBtYWtlVW5pcXVlPFNoYXBlT3V0c2lkZUluZm8+
KGtleSkpOwogICAgICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQog
ICAgIHN0YXRpYyB2b2lkIHJlbW92ZUluZm8oY29uc3QgUmVuZGVyQm94JiBrZXkpIHsgaW5mb01h
cCgpLnJlbW92ZSgma2V5KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9C
YXNpY1NoYXBlcy5jcHAKaW5kZXggMGM5OGY5MTY2ZjdlMTUyOTcwM2JjZGIyYzhjODNjYzgwYmI3
YmYyNC4uNzQ0YzkwYjhmYjNmNTI3NjhhNTM4ZDIxMzU4MzYyY2E2MzQ4MjdlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0zNTgsNyAr
MzU4LDcgQEAgUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVQYXRoOjpibGVuZChjb25zdCBCYXNp
Y1NoYXBlJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGMKIAogICAgIGF1dG8mIGZyb21QYXRoID0g
ZG93bmNhc3Q8QmFzaWNTaGFwZVBhdGg+KGZyb20pOwogCi0gICAgYXV0byByZXN1bHRpbmdQYXRo
Qnl0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOworICAgIGF1dG8g
cmVzdWx0aW5nUGF0aEJ5dGVzID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAg
ICBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oKmZyb21QYXRoLm1fYnl0ZVN0cmVhbSwg
Km1fYnl0ZVN0cmVhbSwgKnJlc3VsdGluZ1BhdGhCeXRlcywgcHJvZ3Jlc3MpOwogCiAgICAgYXV0
byByZXN1bHQgPSBCYXNpY1NoYXBlUGF0aDo6Y3JlYXRlKFdURk1vdmUocmVzdWx0aW5nUGF0aEJ5
dGVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCmlu
ZGV4IGU3YmIwNjE2NTAyZDk5ZDZkYjQzOTJiYjQ2OGE5YWI0NjljZTQ5NGEuLjJjMTJkZDliNDBk
ZDQwYjNjMGJmNjc0OTMyMmFlMmIwZmQxZTA3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Db250ZW50RGF0YS5oCkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIEltYWdlQ29u
dGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5k
ZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9u
ZUludGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKKyAgICAg
ICAgYXV0byBpbWFnZSA9IG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4obV9pbWFnZS5jb3B5
UmVmKCkpOwogICAgICAgICBpbWFnZS0+c2V0QWx0VGV4dChhbHRUZXh0KCkpOwogICAgICAgICBy
ZXR1cm4gaW1hZ2U7CiAgICAgfQpAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNzIFRleHRDb250ZW50
RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVy
UHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERh
dGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8VGV4
dENvbnRlbnREYXRhPihtX3RleHQpOyB9CiAKICAgICBTdHJpbmcgbV90ZXh0OwogfTsKQEAgLTE2
MSw3ICsxNjEsNyBAQCBjbGFzcyBDb3VudGVyQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29u
dGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5k
ZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4o
c3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4obWFrZVVuaXF1ZTxDb3VudGVyQ29u
dGVudD4oY291bnRlcigpKSk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJD
b250ZW50PiBtX2NvdW50ZXI7CkBAIC0xOTAsNyArMTkwLDcgQEAgY2xhc3MgUXVvdGVDb250ZW50
RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVy
UHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERh
dGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFF1b3RlQ29udGVudERhdGE+KHF1b3RlKCkpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxR
dW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQogCiAgICAgUXVvdGVUeXBlIG1fcXVvdGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAppbmRleCBm
M2Q5MWRjOGRiYzhkOWU0NmM2MDFiOTU4NDNiOWE5NTJmM2IyZDFkLi4zMDAxNGQwNGY3MGZiOTE4
MTc0Mjg3NjAzZmRlYWI3MjM5NTYxNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsbExheWVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCBGaWxsTGF5ZXI6OkZpbGxMYXll
cihGaWxsTGF5ZXJUeXBlIHR5cGUpCiB9CiAKIEZpbGxMYXllcjo6RmlsbExheWVyKGNvbnN0IEZp
bGxMYXllciYgbykKLSAgICA6IG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8Rmls
bExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKKyAgICA6IG1fbmV4dChvLm1fbmV4dCA/IG1h
a2VVbmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKICAgICAsIG1faW1hZ2Uo
by5tX2ltYWdlKQogICAgICwgbV94UG9zaXRpb24oby5tX3hQb3NpdGlvbikKICAgICAsIG1feVBv
c2l0aW9uKG8ubV95UG9zaXRpb24pCkBAIC0xMTcsNyArMTE3LDcgQEAgRmlsbExheWVyOjp+Rmls
bExheWVyKCkKIAogRmlsbExheWVyJiBGaWxsTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBGaWxsTGF5
ZXImIG8pCiB7Ci0gICAgbV9uZXh0ID0gby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxM
YXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CisgICAgbV9uZXh0ID0gby5tX25leHQgPyBtYWtl
VW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CiAKICAgICBtX2ltYWdlID0g
by5tX2ltYWdlOwogICAgIG1feFBvc2l0aW9uID0gby5tX3hQb3NpdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDI0OWJhNDdlNTg0
M2VjYzYyZTZmZDRmMjZhZjFjZjUzOGExNjNmOWMuLmZiNDNjMjBlNWNlOTllY2UxOWY0NTJmZDlm
ODc5NjRkODE0YmI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFJlbmRlclN0eWxlIFJlbmRlclN0eWxl
OjpjbG9uZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25l
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsKIH0K
IAogUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3Bs
YXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBEaXNwbGF5VHlwZSBkaXNwbGF5KQpA
QCAtNDA5LDcgKzQwOSw3IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNl
dWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwc2V1CiAgICAgUmVuZGVyU3R5
bGUqIHJlc3VsdCA9IHBzZXVkby5nZXQoKTsKIAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9TdHls
ZXMpCi0gICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQc2V1
ZG9TdHlsZUNhY2hlPigpOworICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IG1ha2VVbmlx
dWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKIAogICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzLT5hcHBl
bmQoV1RGTW92ZShwc2V1ZG8pKTsKIApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBSZW5kZXJT
dHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
ICAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKICAgICBp
ZiAoIWRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykKLSAgICAgICAgZGF0YS5jdXN0
b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0cmlu
Zz4+KCk7CisgICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA9IG1ha2VV
bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJv
cGVydGllcy0+YWRkKG5hbWUpOwogfQogCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCB2b2lkIFJlbmRl
clN0eWxlOjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlLCBib29sIGFkZCkK
IHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVudChzdGQ6
Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkpLCBh
ZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFnZS5y
ZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVu
dChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQpCkBAIC0xMzEwLDEzICsxMzEwLDEzIEBA
IHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
YWRkKQogICAgIGlmIChhZGQgJiYgZGF0YS5jb250ZW50KSB7CiAgICAgICAgIGF1dG8mIGxhc3Qg
PSBsYXN0Q29udGVudCgqZGF0YS5jb250ZW50KTsKICAgICAgICAgaWYgKCFpczxUZXh0Q29udGVu
dERhdGE+KGxhc3QpKQotICAgICAgICAgICAgbGFzdC5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8
VGV4dENvbnRlbnREYXRhPihzdHJpbmcpKTsKKyAgICAgICAgICAgIGxhc3Quc2V0TmV4dChtYWtl
VW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgYXV0byYgdGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KGxhc3Qp
OwogICAgICAgICAgICAgdGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVudC50ZXh0KCkgKyBz
dHJpbmcpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YS5jb250ZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7CisgICAgICAgIGRhdGEu
Y29udGVudCA9IG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOwogICAgICAgICBh
dXRvJiBhbHRUZXh0ID0gZGF0YS5hbHRUZXh0OwogICAgICAgICBpZiAoIWFsdFRleHQuaXNOdWxs
KCkpCiAgICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0VGV4dCk7CkBAIC0x
MzI3LDEyICsxMzI3LDEyIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1bmlx
dWVfcHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKIHsKICAgICBpZiAoIWNv
dW50ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8
Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsKKyAgICBzZXRDb250
ZW50KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRk
KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChRdW90ZVR5cGUgcXVvdGUsIGJv
b2wgYWRkKQogewotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnRE
YXRhPihxdW90ZSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPFF1b3RlQ29udGVu
dERhdGE+KHF1b3RlKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudEFs
dFRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBDb3VudGVy
RGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKQogewog
ICAgIGF1dG8mIG1hcCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY291bnRlckRp
cmVjdGl2ZXM7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFrZVVuaXF1ZTxDb3VudGVy
RGlyZWN0aXZlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0xNjcxLDE0ICsxNjcx
LDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIEFuaW1hdGlvbkxp
c3QmIFJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucykKLSAgICAgICAgbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRp
b25MaXN0PigpOworICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFuaW1h
dGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zOwogfQogCiBBbmltYXRpb25MaXN0JiBSZW5kZXJT
dHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMoKQogewogICAgIGlmICghbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucykKLSAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4o
KTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9
IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gKm1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPnRyYW5zaXRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCmluZGV4IDIwYjJhODExNGIwYzhl
OWViZDQ4MjcwNzlhOTgyMGYyZWMwZGNkYzIuLjZlMzdjZjhmYjhhYmE1NWVjMzMwYTk2MDMzYThh
OTU0YzdjYjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
VkdSZW5kZXJTdHlsZURlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgU3R5bGVTaGFkb3dT
VkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoKQogCiBpbmxpbmUgU3R5bGVTaGFkb3dTVkdEYXRh
OjpTdHlsZVNoYWRvd1NWR0RhdGEoY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJiBvdGhlcikKICAg
ICA6IFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPigpCi0gICAgLCBzaGFkb3cob3RoZXIu
c2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6IG51
bGxwdHIpCisgICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRh
Pigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAppbmRleCAzZDYxYzk0YzAxNjYxNjA4NThkYWJk
ODQwOWZjNDA4NjcwZTUwMWNhLi5jMTdlYWY4NTliMGJmYWE3ZGFiYzAwOGQ0ZTc0MGZjNjMwYTRi
ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3Bw
CkBAIC0zMyw3ICszMyw3IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEoY29uc3QgU2hhZG93RGF0
YSYgbykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQogICAgICwgbV9zdHlsZShvLm1fc3R5bGUp
CiAgICAgLCBtX2lzV2Via2l0Qm94U2hhZG93KG8ubV9pc1dlYmtpdEJveFNoYWRvdykKLSAgICAs
IG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8ubV9uZXh0
KSA6IG51bGxwdHIpCisgICAgLCBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPFNoYWRvd0Rh
dGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXgg
YWQyY2JkOTU3ZWVmODI1NjBjZmIzNTJlOWY1MGIzOWU2MzNhMjZmZi4uOTZkYmJhMDA3ZTZhNjRh
N2Q2OTdhMjlhMjFkNjIxYWQ0NDc1NGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtMTcyLDcg
KzE3Miw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0
ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCB2aXNpdGVkTGlua1RleHRF
bXBoYXNpc0NvbG9yKG8udmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcikKICAgICAsIGNhcmV0
Q29sb3Ioby5jYXJldENvbG9yKQogICAgICwgdmlzaXRlZExpbmtDYXJldENvbG9yKG8udmlzaXRl
ZExpbmtDYXJldENvbG9yKQotICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0cikKKyAgICAsIHRl
eHRTaGFkb3coby50ZXh0U2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0U2hh
ZG93KSA6IG51bGxwdHIpCiAgICAgLCBjdXJzb3JEYXRhKG8uY3Vyc29yRGF0YSkKICAgICAsIGlu
ZGVudChvLmluZGVudCkKICAgICAsIGVmZmVjdGl2ZVpvb20oby5lZmZlY3RpdmVab29tKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDZmYmIyYjdiMGMzZWIwM2U4NjlhMWVhYWM5MTYxMTE5
YzljNjFlOWIuLmJkZDAxOTE1YWEyNzhkZDZhNjY0OGZmNGMzZmJkYjNmY2NkMTQyYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTEzOSwxMyArMTM5LDEzIEBAIGlubGluZSBTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxl
UmFyZU5vbkluCiAgICAgLCBzY3JvbGxTbmFwQXJlYShvLnNjcm9sbFNuYXBBcmVhKQogI2VuZGlm
CiAgICAgLCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xvbmUoKSA6IG51bGxwdHIp
Ci0gICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVzID8gc3RkOjptYWtl
X3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigqby5jb3VudGVyRGlyZWN0aXZlcykgOiBudWxs
cHRyKQorICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IG1ha2VV
bmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0
cikKICAgICAsIGFsdFRleHQoby5hbHRUZXh0KQotICAgICwgYm94U2hhZG93KG8uYm94U2hhZG93
ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5ib3hTaGFkb3cpIDogbnVsbHB0cikK
KyAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8u
Ym94U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCB3aWxsQ2hhbmdlKG8ud2lsbENoYW5nZSkKICAg
ICAsIGJveFJlZmxlY3Qoby5ib3hSZWZsZWN0KQotICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlv
bnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVs
bHB0cikKLSAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVl
PEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCisgICAgLCBhbmltYXRp
b25zKG8uYW5pbWF0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8uYW5pbWF0aW9u
cykgOiBudWxscHRyKQorICAgICwgdHJhbnNpdGlvbnMoby50cmFuc2l0aW9ucyA/IG1ha2VVbmlx
dWU8QW5pbWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMpIDogbnVsbHB0cikKICAgICAsIG1hc2so
by5tYXNrKQogICAgICwgbWFza0JveEltYWdlKG8ubWFza0JveEltYWdlKQogICAgICwgcGFnZVNp
emUoby5wYWdlU2l6ZSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25J
bgogICAgICwganVzdGlmeUl0ZW1zKG8uanVzdGlmeUl0ZW1zKQogICAgICwganVzdGlmeVNlbGYo
by5qdXN0aWZ5U2VsZikKICAgICAsIGN1c3RvbVByb3BlcnRpZXMoby5jdXN0b21Qcm9wZXJ0aWVz
KQotICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hl
ZFByb3BlcnRpZXMgPyBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9t
UGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQorICAgICwgY3VzdG9tUGFpbnRXYXRj
aGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBtYWtlVW5pcXVl
PEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxs
cHRyKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICAsIHRvdWNoQWN0aW9ucyhvLnRv
dWNoQWN0aW9ucykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcAppbmRleCAyYzZmMzE3OGVlYjI2YzdiMmMwZDk1YWUxMDhiN2VmY2M2
ZTIyYzRlLi4yNGNkZTRiZDYxZTcxNGMyMzIzYjllNWNkMmNmMjY5ZTI4NDVmOWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0
ZSh0cnVlKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQotICAgICwgbV9pbWFn
ZVJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAs
IG1faW1hZ2VSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiAg
ICAgaW1hZ2VSZXNvdXJjZSgpLmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDNjMzEwNTZkMWNh
YjFmZWExMDQ5MDc4MGQwMGM4ZGNkMmM3OTgwNjguLmJhMWNkMDUyZGFkYWExY2UxODQxYzdjMjNj
YWYzM2ZhYTRlMzQ3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVuZGVyU1ZHSW5saW5lOjpSZW5k
ZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+IFJlbmRlclNWR0lubGluZTo6Y3Jl
YXRlSW5saW5lRmxvd0JveCgpCiB7Ci0gICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0lubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZHSW5s
aW5lRmxvd0JveD4oKnRoaXMpOwogICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQo
KTsKICAgICByZXR1cm4gYm94OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggNjdlNmY5ODk3ZDI3NzQ0ZmQ0MTMz
ZmYyNzY3MTRjNGU5ZGE2NjViMC4uZGJmNDkwM2Y4OWY0ZGM5MmVkZmYzMDUzOTI1ODY5ZjMyZTJk
OTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZVRleHQuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZW5kZXJTVkdJbmxpbmVU
ZXh0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclNWR0lubGluZVRleHQ6
OmNyZWF0ZVRleHRCb3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJ
bmxpbmVUZXh0Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGlu
ZVRleHRCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7
CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMWIzZWYyNGNjOTJkMjA1
MmEzNGFhZDIwODgyMzMwZTFhMTIzYjg0Zi4uMWFkMjY0OTY0NjcwOWMyM2YwZGI5Y2ZhZTRiODYz
YzI0N2IzNjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWlsZFBy
aW1pdGl2ZXMoU1ZHRmkKICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3ggPSBmaWx0ZXIu
dGFyZ2V0Qm91bmRpbmdCb3goKTsKIAogICAgIC8vIEFkZCBlZmZlY3RzIHRvIHRoZSBidWlsZGVy
Ci0gICAgYXV0byBidWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihT
b3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgYXV0byBidWlsZGVyID0gbWFrZVVu
aXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CiAg
ICAgYnVpbGRlci0+c2V0UHJpbWl0aXZlVW5pdHMoZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVu
aXRzKCkpOwogICAgIGJ1aWxkZXItPnNldFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5n
Qm94KTsKICAgICAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQog
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFscmVhZHkgYnVpbHQsIG9yIHdlJ3JlIGluIGEgY3lj
bGUsIG9yIHdlJ3JlIG1hcmtlZCBmb3IgcmVtb3ZhbC4gUmVnYXJkbGVzcywganVzdCBkbyBub3Ro
aW5nIG1vcmUgbm93LgogICAgIH0KIAotICAgIGF1dG8gZmlsdGVyRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8RmlsdGVyRGF0YT4oKTsKKyAgICBhdXRvIGZpbHRlckRhdGEgPSBtYWtlVW5pcXVlPEZp
bHRlckRhdGE+KCk7CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gcmVuZGVyZXIu
b2JqZWN0Qm91bmRpbmdCb3goKTsKIAogICAgIGZpbHRlckRhdGEtPmJvdW5kYXJpZXMgPSBTVkdM
ZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlckVsZW1lbnQ+KCZmaWx0ZXJF
bGVtZW50KCksIGZpbHRlckVsZW1lbnQoKS5maWx0ZXJVbml0cygpLCB0YXJnZXRCb3VuZGluZ0Jv
eCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCBkOGFkMDgwNDY2YzVjNmQ5ZWVjZjA3OGNkZmY2
NDI2YzYxNGEwY2UyLi41NTJjZTVhMzNhODA2MmU2YmVlMGIwNGFlM2YxNjBmMDk5ZWI1MmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IFJlbgogCiAgICAgYXV0byYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5hZGQoJnJl
bmRlcmVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFncmFkaWVudERhdGEp
Ci0gICAgICAgIGdyYWRpZW50RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhZGllbnREYXRhPigp
OworICAgICAgICBncmFkaWVudERhdGEgPSBtYWtlVW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKIAog
ICAgIGJvb2wgaXNQYWludGluZ1RleHQgPSByZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVyU1ZH
UmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggYWE1NzY1
ZWQzNzliNmFiMWI5NDQ3MjZmNWI1ZWU0NTQzODNjNDY0ZS4uNGM4MTliOWJjNTVkYzJiZmE4MmZi
YmMwOTdmNjM3NTg1YjViMTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgUmVuZGUKIAogICAgIGJvb2wgbWlzc2luZ01hc2tlckRhdGEgPSAh
bV9tYXNrZXIuY29udGFpbnMoJnJlbmRlcmVyKTsKICAgICBpZiAobWlzc2luZ01hc2tlckRhdGEp
Ci0gICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8TWFza2Vy
RGF0YT4oKSk7CisgICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIG1ha2VVbmlxdWU8TWFz
a2VyRGF0YT4oKSk7CiAKICAgICBNYXNrZXJEYXRhKiBtYXNrZXJEYXRhID0gbV9tYXNrZXIuZ2V0
KCZyZW5kZXJlcik7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3Jk
aW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGNjMmNiZmNmMGZl
OWE1OWVjZTE1ZjUyZjM1NzJkYjU5ZDE2MzIwZDYuLjMxYmM1ZjE5MzFiZGFlNTBhYWM2NjEzNTlm
YzBhMjZmMTc4NTg2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBQ
YXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8v
IEJ1aWxkIHBhdHRlcm4uCi0gICAgYXV0byBwYXR0ZXJuRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
UGF0dGVybkRhdGE+KCk7CisgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVy
bkRhdGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29w
aWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21wdXRl
IHBhdHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDM0YjBhZTc1YmRjMDA1NjU3NmQ1MTM4
MDE4NWVmZTZiYzcyYzcwNmUuLjZhNjcxMThmZjFiMjU4YjMwM2M5NTYzODU5M2Y0NzRlZTg5YmJl
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
Y3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlbmRlclNWR1NoYXBlOjp+UmVuZGVyU1ZHU2hhcGUoKSA9
IGRlZmF1bHQ7CiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQo
KQogewotICAgIG1fcGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGlj
c0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CisgICAgbV9wYXRoID0gbWFrZVVuaXF1ZTxQ
YXRoPihwYXRoRnJvbUdyYXBoaWNzRWxlbWVudCgmZ3JhcGhpY3NFbGVtZW50KCkpKTsKICAgICBw
cm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKICAgICBtX2ZpbGxCb3VuZGluZ0JveCA9IGNhbGN1
bGF0ZU9iamVjdEJvdW5kaW5nQm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlcy5jcHAKaW5kZXggYmY3ODY0NDNkZGQ2MGQ2MjFiY2Q1NzliODc3MGVkY2Q5
MWQyOWZhOS4uOWM3MzdjYWZmOGI5Mjc2Y2M0MTA2MDJmNTc5YTlmMzY0ZTVhMDhiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcApAQCAtNTA4LDcg
KzUwOCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlciogY2xpcHBlcikKICAgICBBU1NFUlQoY2xpcHBlci0+cmVzb3VyY2VUeXBlKCkgPT0g
Q2xpcHBlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tlckRh
dGEpCi0gICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOworICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNr
ZXJEYXRhID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKIAogICAgIG1f
Y2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIgPSBjbGlwcGVyOwogICAgIHJldHVybiB0
cnVlOwpAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIoUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKICAgICBBU1NFUlQoZmlsdGVyLT5yZXNvdXJj
ZVR5cGUoKSA9PSBGaWx0ZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVy
RmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7
CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSBmaWx0ZXI7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC01NTAsNyArNTUwLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1h
cmtlclN0YXJ0KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJTdGFydCkKICAgICBBU1NF
UlQobWFya2VyU3RhcnQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAK
ICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVl
PE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0ID0gbWFya2Vy
U3RhcnQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NzEsNyArNTcxLDcgQEAgYm9vbCBTVkdSZXNv
dXJjZXM6OnNldE1hcmtlck1pZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyTWlkKQog
ICAgIEFTU0VSVChtYXJrZXJNaWQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlw
ZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtl
VW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9IG1h
cmtlck1pZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBib29sIFNWR1Jl
c291cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJFbmQp
CiAgICAgQVNTRVJUKG1hcmtlckVuZC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3VyY2VU
eXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1hcmtlckRhdGE+KCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9IG1h
a2VVbmlxdWU8TWFya2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyRW5kID0g
bWFya2VyRW5kOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgU1ZH
UmVzb3VyY2VzOjpzZXRNYXNrZXIoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlcikKICAg
ICBBU1NFUlQobWFza2VyLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUpOwog
CiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0
YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xp
cHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRh
LT5tYXNrZXIgPSBtYXNrZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MzYsNyArNjM2LDcgQEAg
Ym9vbCBTVkdSZXNvdXJjZXM6OnNldEZpbGwoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIGZp
bGwpCiAgICAgICAgICAgIHx8IGZpbGwtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRpZW50
UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAgbV9m
aWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7CisgICAg
ICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwogCiAg
ICAgbV9maWxsU3Ryb2tlRGF0YS0+ZmlsbCA9IGZpbGw7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02
NTksNyArNjU5LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldFN0cm9rZShSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lciogc3Ryb2tlKQogICAgICAgICAgICB8fCBzdHJva2UtPnJlc291cmNlVHlw
ZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ry
b2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
bFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZp
bGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlID0gc3Ryb2tl
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCAxOTE5NWFhMWRhYmM2NmU0YjM1NjU5NzJlYzkx
Zjg5NDc3ZjQwMzliLi4xZWViNzhmNTdiM2ViYjMxYjRjZGU4ZTUzMDJkZGUwOWUwNDhjMGJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hl
LmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjphZGRSZXNvdXJj
ZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0CiAgICAgQVNTRVJU
KCFtX2NhY2hlLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogCiAgICAgLy8gQnVpbGQgYSBsaXN0IG9m
IGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXNzZWQgUmVuZGVyT2JqZWN0Ci0g
ICAgYXV0byBuZXdSZXNvdXJjZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlcz4oKTsK
KyAgICBhdXRvIG5ld1Jlc291cmNlcyA9IG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2VzPigpOwogICAg
IGlmICghbmV3UmVzb3VyY2VzLT5idWlsZENhY2hlZFJlc291cmNlcyhyZW5kZXJlciwgc3R5bGUp
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCAzMjQxMDI1ODRjMWYxMTNkMGVl
ZDMzMjE0YTY3ZjU1MzRhYjBmNTlhLi44MTBhMGI4ODBhOGFhNGRhZTAyZmFiNDQ2YTk0MWVkZDlj
NWE3MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRN
ZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBTVkdUZXh0TWV0
cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVuZGVy
U1ZHSW5saW4KICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQogICAgICAgICBtX3NpbXBsZVdpZHRo
SXRlcmF0b3IgPSBudWxscHRyOwogICAgIGVsc2UKLSAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJh
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4p
OworICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdpZHRoSXRlcmF0
b3I+KCZzY2FsZWRGb250LCBtX3J1bik7CiB9CiAKIHN0cnVjdCBNZWFzdXJlVGV4dERhdGEgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlci5jcHAKaW5kZXggZDM3YmVlOGNiY2U1NTYxNTExYjI0ZTM2NGUxYWY2NGFhZDdhYTc1
ZC4uZTZiMjczMjBkOTJmZTg1NmQ4Mzc0MTA4ZWQ5NTQyZTA5MWVlYWY0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIu
Y3BwCkBAIC0xMjIsMjIgKzEyMiwyMiBAQCBzdGF0aWMgdm9pZCBnZXRJbmxpbmVSdW4oUmVuZGVy
T2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBib3VuZGFyeSwgUmVuZGVyT2JqZQogCiBSZW5k
ZXJUcmVlQnVpbGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIoUmVuZGVyVmlldyYgdmlldykKICAgICA6
IG1fdmlldyh2aWV3KQotICAgICwgbV9maXJzdExldHRlckJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1
ZTxGaXJzdExldHRlcj4oKnRoaXMpKQotICAgICwgbV9saXN0QnVpbGRlcihzdGQ6Om1ha2VfdW5p
cXVlPExpc3Q+KCp0aGlzKSkKLSAgICAsIG1fbXVsdGlDb2x1bW5CdWlsZGVyKHN0ZDo6bWFrZV91
bmlxdWU8TXVsdGlDb2x1bW4+KCp0aGlzKSkKLSAgICAsIG1fdGFibGVCdWlsZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8VGFibGU+KCp0aGlzKSkKLSAgICAsIG1fcnVieUJ1aWxkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxSdWJ5PigqdGhpcykpCi0gICAgLCBtX2Zvcm1Db250cm9sc0J1aWxkZXIoc3RkOjptYWtl
X3VuaXF1ZTxGb3JtQ29udHJvbHM+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tCdWlsZGVyKHN0ZDo6
bWFrZV91bmlxdWU8QmxvY2s+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tGbG93QnVpbGRlcihzdGQ6
Om1ha2VfdW5pcXVlPEJsb2NrRmxvdz4oKnRoaXMpKQotICAgICwgbV9pbmxpbmVCdWlsZGVyKHN0
ZDo6bWFrZV91bmlxdWU8SW5saW5lPigqdGhpcykpCi0gICAgLCBtX3N2Z0J1aWxkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxTVkc+KCp0aGlzKSkKKyAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKG1ha2VV
bmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKKyAgICAsIG1fbGlzdEJ1aWxkZXIobWFrZVVuaXF1
ZTxMaXN0PigqdGhpcykpCisgICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihtYWtlVW5pcXVlPE11
bHRpQ29sdW1uPigqdGhpcykpCisgICAgLCBtX3RhYmxlQnVpbGRlcihtYWtlVW5pcXVlPFRhYmxl
PigqdGhpcykpCisgICAgLCBtX3J1YnlCdWlsZGVyKG1ha2VVbmlxdWU8UnVieT4oKnRoaXMpKQor
ICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKG1ha2VVbmlxdWU8Rm9ybUNvbnRyb2xzPigqdGhp
cykpCisgICAgLCBtX2Jsb2NrQnVpbGRlcihtYWtlVW5pcXVlPEJsb2NrPigqdGhpcykpCisgICAg
LCBtX2Jsb2NrRmxvd0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKKyAgICAs
IG1faW5saW5lQnVpbGRlcihtYWtlVW5pcXVlPElubGluZT4oKnRoaXMpKQorICAgICwgbV9zdmdC
dWlsZGVyKG1ha2VVbmlxdWU8U1ZHPigqdGhpcykpCiAjaWYgRU5BQkxFKE1BVEhNTCkKLSAgICAs
IG1fbWF0aE1MQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE1hdGhNTD4oKnRoaXMpKQorICAgICwg
bV9tYXRoTUxCdWlsZGVyKG1ha2VVbmlxdWU8TWF0aE1MPigqdGhpcykpCiAjZW5kaWYKLSAgICAs
IG1fY29udGludWF0aW9uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbj4oKnRo
aXMpKQorICAgICwgbV9jb250aW51YXRpb25CdWlsZGVyKG1ha2VVbmlxdWU8Q29udGludWF0aW9u
PigqdGhpcykpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICwgbV9mdWxsU2NyZWVu
QnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxTY3JlZW4+KCp0aGlzKSkKKyAgICAsIG1fZnVs
bFNjcmVlbkJ1aWxkZXIobWFrZVVuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCiAjZW5kaWYKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCghc19jdXJyZW50IHx8ICZtX3ZpZXcgIT0gJnNfY3VycmVudC0+
bV92aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDlhOThkMjVjMzJiOTM2NGI0NmE2YWVjZmMzY2Zm
ZGM2YzQ2NmY0ZDIuLmI5ZDIwN2Y3ZGZkMzI0NmZlMDMwODZjODRjYTIwMWJjYjdiOTE5YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50
OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKgog
CiBSZW5kZXJUcmVlVXBkYXRlcjo6UmVuZGVyVHJlZVVwZGF0ZXIoRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fZ2VuZXJhdGVkQ29udGVudChz
dGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkKKyAgICAsIG1fZ2VuZXJh
dGVkQ29udGVudChtYWtlVW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkKICAgICAsIG1f
YnVpbGRlcihyZW5kZXJWaWV3KCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52
YWxpZGF0b3IuY3BwCmluZGV4IGRhZTExY2IyZjYyODk5MTg0NTNhMTI4MDlhZTQzYjgxMjRiNmIx
MmIuLjZkNjk1YTY2MGQwZTRlMDQ1YTI2ZGFiZTMzMzFlY2EyNmZhZDJlYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRp
YyBib29sIHNob3VsZERpcnR5QWxsU3R5bGUoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50
cyo+JiBzaGVldHMpCiB9CiAKIEludmFsaWRhdG9yOjpJbnZhbGlkYXRvcihjb25zdCBWZWN0b3I8
U3R5bGVTaGVldENvbnRlbnRzKj4mIHNoZWV0cywgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYg
bWVkaWFRdWVyeUV2YWx1YXRvcikKLSAgICA6IG1fb3duZWRSdWxlU2V0KHN0ZDo6bWFrZV91bmlx
dWU8UnVsZVNldD4oKSkKKyAgICA6IG1fb3duZWRSdWxlU2V0KG1ha2VVbmlxdWU8UnVsZVNldD4o
KSkKICAgICAsIG1fcnVsZVNldCgqbV9vd25lZFJ1bGVTZXQpCiAgICAgLCBtX2RpcnRpZXNBbGxT
dHlsZShzaG91bGREaXJ0eUFsbFN0eWxlKHNoZWV0cykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlbGF0aW9ucy5jcHAKaW5kZXggNGQ4MTQ4YjRlMzFkNzRkNmEwYTUxNzU0ZGVlNWVhYjgw
NzU5YWJhYS4uMDYyZDU5NjRkNzdlYzVkYjgzYjNmNDFhY2JhYTg3ZWZjZTk4ZGQ2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcApAQCAtNDAsNyArNDAsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UmVsYXRpb25zPiBjb21taXRSZWxhdGlvbnNUb1JlbmRlclN0eWxlKFJlbmRl
clN0eWxlJiBzdHlsZSwgY29ucwogCiAgICAgYXV0byBhcHBlbmRTdHlsZVJlbGF0aW9uID0gWyZy
ZW1haW5pbmdSZWxhdGlvbnNdIChjb25zdCBSZWxhdGlvbiYgcmVsYXRpb24pIHsKICAgICAgICAg
aWYgKCFyZW1haW5pbmdSZWxhdGlvbnMpCi0gICAgICAgICAgICByZW1haW5pbmdSZWxhdGlvbnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFJlbGF0aW9ucz4oKTsKKyAgICAgICAgICAgIHJlbWFpbmluZ1Jl
bGF0aW9ucyA9IG1ha2VVbmlxdWU8UmVsYXRpb25zPigpOwogICAgICAgICByZW1haW5pbmdSZWxh
dGlvbnMtPmFwcGVuZChyZWxhdGlvbik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNj
b3BlLmNwcAppbmRleCA5ZjBkMWFkNzQ5MGJmZWFiMjQwN2NlN2JjODhiMDk1MTE2ZDBiMjIyLi5k
Y2I2NWJjMDljMzQ3NzliNjNhMjkzMjRlMjRkMzcyYmZjNmEyM2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVNjb3BlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBTdHlsZVJlc29sdmVyJiBTY29wZTo6
cmVzb2x2ZXIoKQogICAgIGlmICghbV9yZXNvbHZlcikgewogICAgICAgICBTZXRGb3JTY29wZTxi
b29sPiBpc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1faXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIs
IHRydWUgfTsKIAotICAgICAgICBtX3Jlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVJl
c29sdmVyPihtX2RvY3VtZW50KTsKKyAgICAgICAgbV9yZXNvbHZlciA9IG1ha2VVbmlxdWU8U3R5
bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7CiAKICAgICAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsK
ICAgICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7CkBA
IC01NjMsNyArNTYzLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gU2Nv
cGU6OmFjdGl2ZVN0eWxlU2hlZXRzRm9ySW5zcGVjdG9yKCkKIGJvb2wgU2NvcGU6OmFjdGl2ZVN0
eWxlU2hlZXRzQ29udGFpbnMoY29uc3QgQ1NTU3R5bGVTaGVldCogc2hlZXQpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXApIHsK
LSAgICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwID0g
c3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IENTU1N0eWxlU2hlZXQqPj4oKTsKKyAgICAg
ICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwID0gbWFrZVVu
aXF1ZTxIYXNoU2V0PGNvbnN0IENTU1N0eWxlU2hlZXQqPj4oKTsKICAgICAgICAgZm9yIChhdXRv
JiBhY3RpdmVTdHlsZVNoZWV0IDogbV9hY3RpdmVTdHlsZVNoZWV0cykKICAgICAgICAgICAgIG1f
d2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cC0+YWRkKGFjdGl2ZVN0
eWxlU2hlZXQuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJl
c29sdmVyLmNwcAppbmRleCA4NDZhMjMxYWQyYjE4YjVkN2YyOTQ5MDE2ZDA5ZjIyM2RkNjllODhi
Li5hMDBmNGZlMGY0Y2NiNTJkZDgzMWE5NGUyNmE1ODY0ZTVjMWI3OTI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC01NDgsNyArNTQ4LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlKCkKIAogICAgIG1fZGlk
U2VlUGVuZGluZ1N0eWxlc2hlZXQgPSBtX2RvY3VtZW50LnN0eWxlU2NvcGUoKS5oYXNQZW5kaW5n
U2hlZXRzQmVmb3JlQm9keSgpOwogCi0gICAgbV91cGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFVw
ZGF0ZT4obV9kb2N1bWVudCk7CisgICAgbV91cGRhdGUgPSBtYWtlVW5pcXVlPFVwZGF0ZT4obV9k
b2N1bWVudCk7CiAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChhZG9wdFJlZigqbmV3IFNjb3BlKG1f
ZG9jdW1lbnQpKSk7CiAgICAgbV9wYXJlbnRTdGFjay5hcHBlbmQoUGFyZW50KG1fZG9jdW1lbnQp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRl
eCBiYzUxNDM0YjBiMmI4ZTBiZjc3ZTU3YTRhNzZlNGQ0YmNlZWU5OTY1Li4yNWYzODYzZDA3OTU0
YWM4ZDZhNjNlNjg2NGExZjA3NmIwZDUxYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERvY3Vt
ZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3Jlc291
cmNlc0NhY2hlKHN0ZDo6bWFrZV91bmlxdWU8U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCisgICAgLCBt
X3Jlc291cmNlc0NhY2hlKG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCiAgICAgLCBt
X2FyZUFuaW1hdGlvbnNQYXVzZWQoIWRvY3VtZW50LnBhZ2UoKSB8fCAhZG9jdW1lbnQucGFnZSgp
LT5pc1Zpc2libGUoKSkKIHsKIH0KQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNWR0RvY3VtZW50
RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBFbGVt
ZW50JiBlbAogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYWRkKGlkLCBu
dWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFbGVtZW50cz4oKTsKKyAgICAg
ICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UGVuZGluZ0VsZW1lbnRzPigp
OwogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZCgmZWxlbWVudCk7CiAKICAgICBlbGVt
ZW50LnNldEhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTI3OSw3ICsyNzksNyBAQCBIYXNoU2V0
PFNWR0VsZW1lbnQqPiogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpzZXRPZkVsZW1lbnRzUmVmZXJl
bmNpbmdUYXJnZXQoU1ZHRQogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1lbnRS
ZWZlcmVuY2luZ1RhcmdldChTVkdFbGVtZW50JiByZWZlcmVuY2luZ0VsZW1lbnQsIFNWR0VsZW1l
bnQmIHJlZmVyZW5jZWRFbGVtZW50KQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9lbGVtZW50RGVw
ZW5kZW5jaWVzLmVuc3VyZSgmcmVmZXJlbmNlZEVsZW1lbnQsIFsmcmVmZXJlbmNpbmdFbGVtZW50
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+
PihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZHRWxlbWVudCo+IHsgJnJlZmVyZW5jaW5nRWxlbWVu
dCB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SGFzaFNldDxTVkdFbGVtZW50Kj4+KHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVmZXJlbmNpbmdFbGVtZW50IH0p
OwogICAgIH0pOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUtPmFkZCgmcmVmZXJlbmNpbmdFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcAppbmRleCBhODA5NmRkYWRhODFlYWQ2YTdhMWVhMzI0Y2Q4NTA2N2Y1YzBiMjhi
Li5lNGRlM2I3NDlmMGEwMDM5YmM1YzRjZmNkMDhlMTkzOTZjZDY1NjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBI
YXNoTWFwPEF0b21TdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4gY3JlYXRlQXR0cmlidXRlTmFt
ZVQKIFNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCwgQ3JlYXRlU1ZHRWxlbWVudCkKICAgICAsIFNWR0xhbmdTcGFjZSh0aGlzKQotICAgICwgbV9w
cm9wZXJ0eUFuaW1hdG9yRmFjdG9yeShzdGQ6Om1ha2VfdW5pcXVlPFNWR1Byb3BlcnR5QW5pbWF0
b3JGYWN0b3J5PigpKQorICAgICwgbV9wcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeShtYWtlVW5pcXVl
PFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5PigpKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewpAQCAtMjAz
LDcgKzIwMyw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFu
Z2UgY2hhbmdlKQogU1ZHRWxlbWVudFJhcmVEYXRhJiBTVkdFbGVtZW50OjplbnN1cmVTVkdSYXJl
RGF0YSgpCiB7CiAgICAgaWYgKCFtX3N2Z1JhcmVEYXRhKQotICAgICAgICBtX3N2Z1JhcmVEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdFbGVtZW50UmFyZURhdGE+KCk7CisgICAgICAgIG1fc3Zn
UmFyZURhdGEgPSBtYWtlVW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0YT4oKTsKICAgICByZXR1cm4g
Km1fc3ZnUmFyZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAKaW5kZXggYTc1ODkwZjMxODA0NjhkMTUyNGJlZTg1NDM1OWQwMzU2ZWI1MjIyZC4uODBl
YzdmYzg2MjkyYjYzYmJiYTg1MWUxMWUxMDZmYTE1MmY5MTQ3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBBZmZpbmVUcmFu
c2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QK
IEFmZmluZVRyYW5zZm9ybSogU1ZHR3JhcGhpY3NFbGVtZW50OjpzdXBwbGVtZW50YWxUcmFuc2Zv
cm0oKQogewogICAgIGlmICghbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0pCi0gICAgICAgIG1fc3Vw
cGxlbWVudGFsVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxBZmZpbmVUcmFuc2Zvcm0+KCk7
CisgICAgICAgIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxBZmZpbmVUcmFu
c2Zvcm0+KCk7CiAgICAgcmV0dXJuIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtLmdldCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCmluZGV4IDZmMGFjYWNmMTllZTg1
MGRiNGU2OTEwZDNlODNkMjY0OTRkNjdlYjAuLjQzNGQ5MWViM2RmOGFkODc5ZjgzOWE0ODk2Njg2
NzgwYjQwOWYyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0
cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCkBAIC04
Niw3ICs4Niw3IEBAIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtIHsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gY29weSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKnRoaXMpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKnRoaXMpOwogICAgIH0KIAogICAg
IERhdGFJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3Bw
CmluZGV4IGUwNDIzY2U5ODE1ZmEwZjI1NTYzYTNiNTQzMTQwODZhYzM1NmZmNDQuLjNlYjU3YWQy
ZjIxZGZhNjRiOWIxMTgwMWY0MjcyODM2MDJiNzViN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IHZvaWQgU01JTFRpbWVDb250YWluZXI6OnNjaGVkdWxlKFNWR1NNSUxFbGVtZW50KiBhbmltYXRp
b24sIFNWR0VsZW1lbnQqIHRhcmdldCwKICAgICBFbGVtZW50QXR0cmlidXRlUGFpciBrZXkodGFy
Z2V0LCBhdHRyaWJ1dGVOYW1lKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uc1ZlY3Rv
cj4mIHNjaGVkdWxlZCA9IG1fc2NoZWR1bGVkQW5pbWF0aW9ucy5hZGQoa2V5LCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzY2hlZHVsZWQpCi0gICAgICAgIHNjaGVkdWxlZCA9
IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uc1ZlY3Rvcj4oKTsKKyAgICAgICAgc2NoZWR1bGVk
ID0gbWFrZVVuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigpOwogICAgIEFTU0VSVCghc2NoZWR1bGVk
LT5jb250YWlucyhhbmltYXRpb24pKTsKICAgICBzY2hlZHVsZWQtPmFwcGVuZChhbmltYXRpb24p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA4MDlhZmY1
ZDg4NTM3MTIwNzJhZDg3MTU2NzM1ZTkzMGY5YmEzNWNkLi41YzU2YjY5OTk1YmM5MmY0Y2E4ODFl
MmI5MWU5ZjM3ZmY1YzM4ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0
YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVk
KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdlQ29uZmlndXJhdGlvbldp
dGhFbXB0eUNsaWVudHMoKTsKLSAgICAgICAgbV9jaHJvbWVDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKKyAgICAgICAgbV9jaHJvbWVDbGllbnQg
PSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKICAgICAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CiAKICAgICAg
ICAgLy8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGluZyBpdHNlbGYsIHdlIG1pZ2h0
IGxlYWsgdGhlIHdvcmxkLgpAQCAtNDY2LDcgKzQ2Niw3IEBAIEVuY29kZWREYXRhU3RhdHVzIFNW
R0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8gVGhp
cyB3aWxsIGJlY29tZSBhbiBpc3N1ZSB3aGVuIFNWR0ltYWdlIHdpbGwgYmUgYWJsZSB0byBsb2Fk
IG90aGVyCiAgICAgICAgIC8vIFNWR0ltYWdlIG9iamVjdHMsIGJ1dCB3ZSdyZSBzYWZlIG5vdywg
YmVjYXVzZSBTVkdJbWFnZSBjYW4gb25seSBiZQogICAgICAgICAvLyBsb2FkZWQgYnkgYSB0b3At
bGV2ZWwgZG9jdW1lbnQuCi0gICAgICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4o
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgICAgICBtX3BhZ2UgPSBtYWtlVW5pcXVl
PFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICAgICAgbV9wYWdlLT5zZXR0
aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3Mo
KS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLnNl
dFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAppbmRleCBlNWVm
YWFlYTcxMTFiYzZjOTU3ZDk3MmQ3NDU0OGRlOTJkOGExMzNlLi5jZWJhYTM2M2JmNTI3YmJiMzhl
NTY3ZDNlM2Q0MmJmODQzMTAyYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0zNiw3
ICszNiw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlLCB0
eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eT4K
ICAgICBzdGF0aWMgUmVmPEFuaW1hdGVkUHJvcGVydHk+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGVk
UHJvcGVydHkoY29udGV4dEVsZW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGVjb3JhdGVkUHJvcGVy
dHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgbWFrZVVuaXF1ZTxE
ZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZSwgUHJvcGVydHlUeXBlPj4oKSkpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgdHlwZW5hbWUgQW5pbWF0
ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
QW5pbWF0b3JJbXBsLmgKaW5kZXggMjg4NzQxYjEyOTA1Y2I4NTE0MzA1NDA5MGM0ZTJjOTEzOWIz
NWJmMy4uZDA3MzdhY2JhMzMxZmUxMjM0N2I4MzRmZjdhYTMwMTAwYWQxNTYxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvckltcGwuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBTVkdBbmltYXRl
ZEFuZ2xlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
PFNWR0FuaQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQs
IGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3Mg
U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9yPFNWR0EKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRCb29sZWFuPiYgYW5pbWF0ZWQs
IEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNB
Y2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9y
PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTg5LDcgKzg5LDcg
QEAgY2xhc3MgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjwKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkRW51
bWVyYXRpb24+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5p
bWF0b3I8RW51bVR5cGU+PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I8RW51bVR5cGU+PihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFz
cyBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3I8U1ZHQQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmltYXRl
ZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBp
c0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwg
YW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTMyLDcgKzEz
Miw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiAKICAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxl
bmd0aE1vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmlt
YXRlZExlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1Myw3ICsx
NTMsNyBAQCBjbGFzcyBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZExlbmd0
aExpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1v
ZGUgbGVuZ3RoTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1v
ZGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZExlbmd0aExpc3RBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0xNzIsNyArMTcyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvciBmaW5h
bCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0
aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRO
dW1iZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQs
IGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0xODksNyArMTg5LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1i
ZXJMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
PFMKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4mIGFuaW1hdGVkLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjA2LDcg
KzIwNiw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvciBmaW5hbCA6IHB1
YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmlt
YXRlZFBhdGhTZWdMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQYXRoU2Vn
TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjI0LDcgKzIyNCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVk
UG9pbnRMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yPFNWCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFBvaW50TGlzdD4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTI0Myw3
ICsyNDMsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvciBmaW5hbCA6IHB1
YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgogICAgIHN0YXRpYyBh
dXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5p
bWF0ZWRPcmllbnRUeXBlPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRPcmllbnRU
eXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTI2Miw3ICsyNjIsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3Bl
cnR5QQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvPiYgYW5p
bWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJv
b2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I+
KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1
bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1h
dGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAg
IH0KIAogcHJpdmF0ZToKQEAgLTI4MSw3ICsyODEsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFJlY3RB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5p
bQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFJlY3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmlt
YXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlz
QWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmlt
YXRlZFJlY3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAg
ICAgfQogCiBwcml2YXRlOgpAQCAtMjk4LDcgKzI5OCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkU3Ry
aW5nQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNW
R0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFN0cmluZz4mIGFuaW1hdGVkLCBBbmltYXRp
b25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0
ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMzM4LDcgKzMzOCw3IEBAIGNsYXNz
IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxj
TW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKaW5kZXggNGVk
YTM0YzliMTg4OGZmZDZkM2Q2NjMyY2YwY2Y2ZDMzYTZmYTllMS4uMzk3ZmYwOTE1OTQwMGQzM2Mw
NTJiMTFkODI4Y2I4ZTM3YjNjODA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9y
SW1wbC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmlt
YXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hCiBwdWJsaWM6
CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWRPcmll
bnRUeXBlPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVPcmllbnRBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTExMyw3ICsxMTMsNyBAQCBj
bGFzcyBTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2Vy
PiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQyLCBBbmltYXRp
b25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0
ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2Vy
UGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAog
cHJpdmF0ZToKQEAgLTE1Niw3ICsxNTYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlclBhaXJB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdAogcHVi
bGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmltYXRl
ZE51bWJlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlclBhaXJBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKaW5kZXggMjY0
YzM2YjY5MDc0Y2NmM2UyZTI5ZDI2NzcyMWNmNTM3NDU3MDMxMS4uYTM1ZTI1MGE5YjE1MWY5ZTg5
N2Y4NWY2MzY3YzM4N2RiYjNjYTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBA
IGNsYXNzIFNWR0RlY29yYXRlZEVudW1lcmF0aW9uIDogcHVibGljIFNWR0RlY29yYXRlZFByaW1p
dGl2ZTxEZWNvcmF0aW9uVHlwZSwgRW51CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEVu
dW1UeXBlJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRl
Z3JhbDxEZWNvcmF0aW9uVHlwZT46OnZhbHVlLCAiRGVjb3JhdGlvblR5cGUgZm9ybSBlbnVtIHNo
b3VsZCBiZSBpbnRlZ3JhbC4iKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
RGVjb3JhdGVkRW51bWVyYXRpb24+KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24+KHZhbHVlKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0
eUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQ
cm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXggNDEyMTcyMjBiZGZjZmVmZjY3YzE2MDkxM2FkMTRkNmI5
OWJhMTQyYy4uNjhiMmUwYjExMzdhZGU4ZDM3ZjgwZTBlMjk4YjVkZTI0ZDAxYTgyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlB
bmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2
ZVByb3BlcnR5QW5pbWF0b3IuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTVkdQcmltaXRpdmVQ
cm9wZXJ0eUFuaW1hdG9yIDogcHVibGljIFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5pbWF0aW9uRnVu
Y3RpbwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9w
ZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRv
cj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDEx
ODg4NmM0ZjhiYjcyMzZhNDQ2ZmZhZDAzODY5ZmYwYjBkY2RlOTUuLmZkM2RjOTYwZmZhN2QzMTI5
MDEzN2Q0NTJjZGUxYTI4NzlhN2VkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTM5
LDcgKzM5LDcgQEAgY2xhc3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFs
dWVQcm9wZXJ0eUFuaW1hdG9yPFNWR0xlbmd0aCwgU1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1By
b3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3Bl
cnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUs
IExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKaW5k
ZXggNWVlOGFjM2QwZjRlMTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2OC4uYWU5NGUyOWVkNGI4
NjEzYjk5Y2Q5NzQ4NmVkMGIwNjI4MjZjMDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9y
SW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmltYXRvciBmaW5h
bCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBwdWJsaWM6
CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRp
dmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhMaXN0
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9p
ZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggNTU4MjU4ZDJiZmM2YTI2ZmQx
NGVhZjI5MTcyZWE3ODI1ZDhkNzI1Yi4uMjQzNzg5YmI5ZDI3OWE2ZTg1M2UwODY0NGI2NGJlZTg1
MWU1ZWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
CkBAIC0yNTMsNyArMjUzLDcgQEAgY29uc3QgY2hhciogSW50ZXJuYWxTZXR0aW5nczo6c3VwcGxl
bWVudE5hbWUoKQogSW50ZXJuYWxTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShQYWdl
KiBwYWdlKQogewogICAgIGlmICghU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBwbGVt
ZW50TmFtZSgpKSkKLSAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1
cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+
KHBhZ2UpKTsKKyAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1cHBs
ZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2UpKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIqPihTdXBwbGVt
ZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKS0+aW50ZXJuYWxTZXR0aW5n
cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMjQ2NmJmZTUz
ZjlmYTc4MDZkNzI0YjgxZWQ0NzcwYTM5YWY5OTEzZC4uNThkNGI1MWRmYjExZDRlOWUzYjVlMDM5
YjdjNTdiMTFlYjI0MzczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MzQxLDcgKzM0MSw3IEBAIGNsYXNzIEluc3BlY3RvclN0dWJGcm9udGVuZCBmaW5hbCA6IHB1Ymxp
YyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBwdWJsaWMKIH07CiAKIEluc3BlY3RvclN0
dWJGcm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKFBhZ2UmIGluc3BlY3RlZFBhZ2UsIFJl
ZlB0cjxET01XaW5kb3c+JiYgZnJvbnRlbmRXaW5kb3cpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRl
bmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwoJmluc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9udGVu
ZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpLCBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OlNldHRpbmdzPigpKQogICAgICwgbV9mcm9udGVuZFdpbmRvdyhmcm9udGVu
ZFdpbmRvdy5jb3B5UmVmKCkpCiB7CiAgICAgQVNTRVJUX0FSRyhmcm9udGVuZFdpbmRvdywgZnJv
bnRlbmRXaW5kb3cpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIEludGVybmFsczo6SW50ZXJuYWxzKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAg
ICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsK
ICAgICAgICAgYXV0byBtb2NrUGF5bWVudENvb3JkaW5hdG9yID0gbmV3IE1vY2tQYXltZW50Q29v
cmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwotICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXlt
ZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCptb2Nr
UGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1lbnRD
b29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50Q29v
cmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTE0MTcsNyArMTQxNyw3IEBAIHZvaWQg
SW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKQogICAgIGlmICghc3ludGhl
c2lzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzeW50aGVzaXMtPnNldFBsYXRmb3JtU3ludGhl
c2l6ZXIoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4oc3lu
dGhlc2lzKSk7CisgICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKG1ha2VVbmlx
dWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOwogfQogCiAjZW5k
aWYKQEAgLTI0ODcsNyArMjQ4Nyw3IEBAIFJlZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJuYWxzOjpv
cGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBhdXRvKiBp
bnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBh
dXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5kb21X
aW5kb3coKTsKICAgICBhdXRvIGZyb250ZW5kV2luZG93UHJveHkgPSB3aW5kb3ctPm9wZW4oKndp
bmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclN0dWJGcm9udGVu
ZD4oKmluc3BlY3RlZFBhZ2UsIGRvd25jYXN0PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5kb3dQcm94
eS0+d2luZG93KCkpKTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+KGZy
b250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CiAgICAgcmV0dXJuIGZyb250ZW5kV2luZG93
UHJveHk7CiB9CiAKQEAgLTMwMDcsNyArMzAwNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVy
bmFsczo6c2V0Vmlld0V4cG9zZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBm
CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQcmludGluZyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
Ci0gICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENv
bnRleHQ+KGZyYW1lKCkpOworICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IG1ha2VVbmlx
dWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKICAgICBwcmludENvbnRleHRGb3JUZXN0aW5nKCkt
PmJlZ2luKHdpZHRoLCBoZWlnaHQpOwogfQogCkBAIC0zNDQ2LDcgKzM0NDYsNyBAQCB2b2lkIElu
dGVybmFsczo6ZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogCiB2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0oKQogewotICAgIExl
Z2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAorICAgIExlZ2FjeUNETTo6
cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1
ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAogICAgICAgICBMZWdhY3lNb2NrQ0RNOjpzdXBwb3J0
c0tleVN5c3RlbSwgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSk7
CiB9CiAKQEAgLTQyMzksNyArNDIzOSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1pY3JvVGFz
ayhpbnQgdGVzdE51bWJlcikKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBb
ZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVuaXF1
ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRR
dWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVudCwgdGVzdE51bWJlcl0oKSB7CiAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCB0ZXN0TnVtYmVyLCAiIGhhcyBydW4u
IikpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2Fj
eU1vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcApp
bmRleCAzY2QxMjgxNjhkZmI4ZWExYjZmM2Q0ZTM3ZWYwYWI3ODUyNWJhMTYyLi42MDI3MmQzNDk3
ZjRiODY1Y2RiMDM3MGZlNDFkM2Q2ZmJkZThiN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TGVnYWN5TW9ja0NETS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgYm9vbCBMZWdhY3lNb2NrQ0RNOjpz
dXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVlX3B0
cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
b2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RNU2Vz
c2lvbj4oY2xpZW50KTsKIH0KIAogc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNTY3OTZlZTkw
MGJiZjNiNmNjMDVjZjZhMjI5NmVmZDQzYjllZjdiNi4uY2U1ZDhmN2Q2YmRmMzhiNTkyMjA5MzAy
YTZlNmQ3MWIzNjk2NjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRTdXBwb3J0
ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykKIAogc3RkOjp1bmlxdWVfcHRyPENE
TVByaXZhdGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0cigqdGhpcykpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CiB9CiAK
IE1vY2tDRE06Ok1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gZmFjdG9yeSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTExODFkYWU3
MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4Ny4uNzc4YTkxOGE2YjkwNzU1Y2I4NmQzYWFh
NzRmNzliM2U2MThkNGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBNb2NrQ29udGVudEZpbHRlcjo6ZW5h
YmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRG
aWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NvbnRl
bnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+KCk7
CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRl
eCBkM2FjNWQ4N2QxOWUyYTg1MzYxYzExNTcyY2YzMTFmMGM4M2IyNDViLi5kNDBkZWQxZGExMTk4
Y2FhMzQ1OWQ2NzdlMWZlODRmNWJmYjk0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBNb2NrR2Ft
ZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHModW5zaWduZWQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgZ2EKICAgICBpZiAobV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0pCiAgICAgICAg
IG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdLT51cGRhdGVEZXRhaWxzKGdhbWVwYWRJRCwgYXhp
c0NvdW50LCBidXR0b25Db3VudCk7CiAgICAgZWxzZQotICAgICAgICBtX21vY2tHYW1lcGFkVmVj
dG9yW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFk
SUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOworICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9y
W2luZGV4XSA9IG1ha2VVbmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4aXND
b3VudCwgYnV0dG9uQ291bnQpOwogfQogCiBib29sIE1vY2tHYW1lcGFkUHJvdmlkZXI6OmNvbm5l
Y3RNb2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IGRiZTkwNzNkNmFkZWJmYzUwMTU5Y2MyZWRi
YjIyODNjY2QxN2JhODUuLjhmMTY0N2MxZjMyMjUxODE2YzdjZjA4OTYxODJhZTM0MjM1YzUxODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNwcApA
QCAtNDYsNyArNDYsNyBAQCB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlw
ZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbAogewogICAgIFN0cmluZyBt
ZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNz
YWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwg
bWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNzYWdl
ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwg
ZXhlYyk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3Zl
KG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1
ZS5jcHAKaW5kZXggOTI2N2U4N2Q3Y2Y2ZmFmYWNiM2E0NjYxZjY4ZjgxOWFlNmM1NDU4ZS4uNjkw
M2JlNWVjMjVmYjkxZWZmNzc3NmU0NDc2YWQ0ZWEyYmNlNzMxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC04NSw3ICs4NSw3IEBAIGJvb2wgV29y
a2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byogZXZlbnRQdHIgPSBldmVudC5wdHIoKTsKLSAgICBh
dXRvIGV2ZW50RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnREaXNwYXRjaGVyPihX
VEZNb3ZlKGV2ZW50KSwgKnRoaXMpOworICAgIGF1dG8gZXZlbnREaXNwYXRjaGVyID0gbWFrZVVu
aXF1ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUoZXZlbnQpLCAqdGhpcyk7CiAgICAgbV9ldmVu
dERpc3BhdGNoZXJNYXAuYWRkKGV2ZW50UHRyLCBldmVudERpc3BhdGNoZXIuZ2V0KCkpOwogICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5wb3N0VGFzayhbZXZlbnREaXNwYXRjaGVyID0gV1RG
TW92ZShldmVudERpc3BhdGNoZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAg
ICAgZXZlbnREaXNwYXRjaGVyLT5kaXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3YmE2ZWRiNTIwOGYyMmMzZjhmMTZkZTI5ZDgy
NWI3NzFmNmMzZTllLi5iMTdkNjYzNjNhYzM1ODBlN2EzNDQwMDgxYTJmN2M2M2EwNzM4NzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjIs
OSArNjIsOSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJM
JiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICwgbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQpCiAgICAgLCBtX3RocmVhZCh0
aHJlYWQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclNjcmlwdENvbnRy
b2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlx
dWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQotICAgICwgbV9taWNyb3Rhc2tR
dWV1ZShzdGQ6Om1ha2VfdW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCisg
ICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQor
ICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9taWNyb3Rhc2tRdWV1ZShtYWtlVW5pcXVlPE1pY3Jv
dGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCiAgICAgLCBtX2lzT25saW5lKGlzT25saW5lKQog
ICAgICwgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koc2hvdWxk
QnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICwgbV9ldmVudFF1ZXVl
KCp0aGlzKQpAQCAtODYsNyArODYsNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFs
U2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICAg
ICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCk7CiAKICAgICBz
ZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdURk1v
dmUob3JpZ2luKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAgICBz
ZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtlckdsb2JhbFNjb3BlOjp+V29ya2Vy
R2xvYmFsU2NvcGUoKQpAQCAtMzYyLDkgKzM2Miw5IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6
OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29u
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2Fn
ZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJZGVu
dGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNh
bGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxzZQot
ICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNl
VVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7
CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VVUkws
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMsIFdU
Rk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGE3NWMwMTU2YzU5ZTM4ZGQ5OTlkNmNlYzFkZGVlZGUy
M2JlMTg3YjMuLjRlOWY1MTlhZWZlZGQyNWY4ODNmNjNhY2EwYTQ3ODlmZjAyN2U0YjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlUHJveHkmIFdvcmtlckdsb2JhbFNjb3BlUHJv
eHk6OmNyZWF0ZShXb3JrZXImIHdvcmtlcikKIAogV29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtl
ck1lc3NhZ2luZ1Byb3h5KFdvcmtlciYgd29ya2VyT2JqZWN0KQogICAgIDogbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAg
LCBtX2luc3BlY3RvclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yUHJveHk+
KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQorICAgICwgbV9pbnNwZWN0b3JQcm94eShtYWtl
VW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmplY3QuaWRlbnRpZmllcigpKSkK
ICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAgICAgQVNTRVJUKChpczxE
b2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkpCkBA
IC0xMjUsNyArMTI1LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VU
b1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnQKICAgICAgICAgKyttX3Vu
Y29uZmlybWVkTWVzc2FnZUNvdW50OwogICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVlZEVh
cmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5k
KG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkp
OwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHAKaW5kZXggYmNkOTRlNmFjMDQwM2FjZDZhNTRiYWM0MWZhYjQxZTViZjU1
MjdkYS4uYmZhYzk1OTJkZmFhNzkyMTAwNjViMzQ1OWJkMjIxNjE5NTc4NDg3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNz
IE1vZGVQcmVkaWNhdGUgewogfTsKIAogV29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCgpCi0g
ICAgOiBtX3NoYXJlZFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkp
CisgICAgOiBtX3NoYXJlZFRpbWVyKG1ha2VVbmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCiB7
CiB9CiAKQEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAKIHZvaWQgV29ya2VyUnVuTG9v
cDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRh
c2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChzdGQ6Om1ha2VfdW5pcXVl
PFRhc2s+KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1
ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1v
ZGUoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAg
IG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFz
ayksIG1vZGUpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxUYXNrPihX
VEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdERlYnVn
Z2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAxOTkxMmYwMjc1ZmVh
MTk0ODA1NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1Li4yMjhmM2QxN2ZmMDAyMmU2MmU2MzY0NTMyZDU1
NmI5NTA3YTAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6Omxv
YWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXQKIAog
ICAgIEFTU0VSVChzY3JpcHRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiR0VUIik7CiAKLSAgICBh
dXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92ZShz
Y3JpcHRSZXF1ZXN0KSk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVJl
cXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRM
b2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVx
dWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFr
ZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKICAgICByZXF1ZXN0LT5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgIHJlcXVlc3QtPnNldEluaXRpYXRvcklkZW50aWZpZXIoaW5pdGlh
dG9ySWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAKaW5kZXggMWY3NTYxODZhMjBmMDE2OWU0Nzg0Mzk1MWJlZTM2ODdl
MDAyNGZiYS4uM2MzODU4YmRhOWI0NGI1N2ZhZGIzOWVmYTJlMGEwZjNhMzA0MTE4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFdv
cmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAgLCBtX3dvcmtlckRlYnVnZ2VyUHJveHkod29ya2Vy
RGVidWdnZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29ya2VyUmVwb3J0
aW5nUHJveHkpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX3N0
YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNjcmlw
dFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgc291cmNlQ29kZSwg
c3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3JpZ2lu
LCBzZXNzaW9uSUQpKQorICAgICwgbV9zdGFydHVwRGF0YShtYWtlVW5pcXVlPFdvcmtlclRocmVh
ZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwgaXNP
bmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIHRv
cE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKICAgICAsIG1faWRiQ29ubmVjdGlvblByb3h5KGNvbm5lY3Rpb25Qcm94eSkKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwCmluZGV4IGIyZDI2MTVhMTI2M2QxNjI2NjE4MjAwNDY0OGY5MGVk
YTY5MjA2YjUuLjU5YzcxYzRkMTQ3NjI3Y2ZkOWQzMWE0NWVhYmNjY2RhZTEwM2U3OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpkZXJlZkV2ZW50VGFyZ2V0KCkKIGF1dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVh
ZHkoKSAtPiBSZWFkeVByb21pc2UmCiB7CiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZSkgewotICAg
ICAgICBtX3JlYWR5UHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZHlQcm9taXNlPigpOwor
ICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWU8UmVhZHlQcm9taXNlPigpOwogCiAg
ICAgICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNz
aW9uSUQoKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gKm1fcmVhZHlQcm9taXNlOwpA
QCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0
cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0YS50
eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOwogICAgIGpvYkRhdGEucmVnaXN0
cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5p
cXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpv
YkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigq
dGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3Bl
VVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJM
JiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVnaXN0ZXJpbmcgc2VydmljZSB3b3JrZXIu
IEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRv
VUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29y
a2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAg
IHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJM
JiBzY3JpcHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0
ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBDT05U
QUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBVcGRhdGlu
ZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigp
LmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2Vf
dW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9i
PigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2
aWNlV29ya2VySm9iPiYmIGpvYikKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVm
PERlZmVycgogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciA9
ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1Byb21p
c2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBt
YWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9IG1h
a2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21pc2VJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRleHRJ
ZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKQEAgLTMzNCw3ICszMzQsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9t
aXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1
dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZN
b3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5k
aW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSks
IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQo
cGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAg
ICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAKaW5kZXggZWRiYzhmOTFlZTQzNDYyYTUwNDllODhjMWNlZjVlZmE3
NjJjOThmZi4uY2I1YzIyMWZjOTQ4OGQ3YzAwNzI5ODNhMTU3ODk1ZGNhOGM2Y2VjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNXQ29udGV4dE1hbmFn
ZXI6OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBT
ZWNvbgogCiAgICAgc2VydmljZVdvcmtlci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgp
OwogCi0gICAgbV9wZW5kaW5nU2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKGlk
ZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVz
dD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQpKTsKKyAgICBtX3BlbmRpbmdTZXJ2aWNlV29y
a2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZTxTZXJ2aWNl
V29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91dCkpOwog
CiAgICAgYXV0byYgdGhyZWFkID0gc2VydmljZVdvcmtlci0+dGhyZWFkKCk7CiAgICAgdGhyZWFk
LnN0b3AoW3RoaXMsIGlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXIgPSBXVEZNb3ZlKHNlcnZpY2VX
b3JrZXIpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggYzYx
NzM2MTNjYWNiNTVkNjkwNThiZTJjN2UyYTVmYmQ4NTI5Yzc3Ni4uOWU3MjhjM2E3YWZhNDZjOTQ5
Y2RjYmUwZDZmZWIwNGE5NTMxY2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICBh
bGxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKIAogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQotICAgIG1fcmVtb3RlRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2VydmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBkYXRhKTsKKyAgICBtX3JlbW90ZURl
YnVnZ2FibGUgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigqdGhpcywgZGF0
YSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKHRy
dWUpOwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+aW5pdCgpOwogI2VuZGlmCkBAIC0xNjgsNyAr
MTY4LDcgQEAgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGkKIAogc3RkOjp1bmlxdWVfcHRyPEZldGNo
TG9hZGVyPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIoRmV0Y2hM
b2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVVJMJiBibG9iVVJMKQogewotICAgIGF1dG8gbG9h
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oY2xpZW50LCBudWxscHRyKTsKKyAg
ICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KGNsaWVudCwgbnVsbHB0cik7
CiAgICAgbG9hZGVyLT5zdGFydExvYWRpbmdCbG9iVVJMKG1fZG9jdW1lbnQsIGJsb2JVUkwpOwog
ICAgIGlmICghbG9hZGVyLT5pc1N0YXJ0ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDFkZDM0MTM3NGM0NDQ1YTM0OTczMmQ0NGZk
ZWQxNTQ3NzQ4MWMwYjQuLjkyY2JhMDg1ZDNhY2Y2YTI5M2YwNmI1NWRmNDVmNGRmYzc5M2ZiZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBS
ZWdpc3RyYXRpb25EYXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgZnVs
bEZpbGVuYW1lKQogCiAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VEaXJlY3Rv
cnlFeGlzdHMobV9kYXRhYmFzZURpcmVjdG9yeSk7CiAKLSAgICBtX2RhdGFiYXNlID0gc3RkOjpt
YWtlX3VuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKKyAgICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1
ZTxTUUxpdGVEYXRhYmFzZT4oKTsKICAgICBpZiAoIW1fZGF0YWJhc2UtPm9wZW4oZnVsbEZpbGVu
YW1lKSkgewogICAgICAgICBlcnJvck1lc3NhZ2UgPSAiRmFpbGVkIHRvIG9wZW4gcmVnaXN0cmF0
aW9uIGRhdGFiYXNlIjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBmZTVjYzg1OWU2NWE2ZTMy
YTc4YjUyODk3NWExMzJlNzRiZjE3ODdlLi45MzI2YTNiYWM2NTlhMjQ2NzA1ZTkyMGE4ODg0NmRm
NGQwZTk2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJl
Z2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogICAg
IC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gbWFrZSBhIG5ldyByZWdpc3Ry
YXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3YXMgc3RpbGwgdGFraW5nIHBsYWNl
LgogICAgIEFTU0VSVCghbV9yZWdpc3RyYXRpb25zLmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0aW9u
LmtleSkpOwogCi0gICAgYXV0byByZWdpc3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2Vy
dmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lz
dHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEu
c2NyaXB0VVJMKTsKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJS
ZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0
aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3Jp
cHRVUkwpOwogICAgIHJlZ2lzdHJhdGlvbi0+c2V0TGFzdFVwZGF0ZVRpbWUoZGF0YS5yZWdpc3Ry
YXRpb24ubGFzdFVwZGF0ZVRpbWUpOwogICAgIGF1dG8gcmVnaXN0cmF0aW9uUHRyID0gcmVnaXN0
cmF0aW9uLmdldCgpOwogICAgIGFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlvbikp
OwpAQCAtMzA0LDcgKzMwNCw3IEBAIFNXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmln
aW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uCiB7CiAgICAgQVNT
RVJUKCFyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkgfHwgbV9zZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQot
ICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RyYXRp
b25TdG9yZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkpKTsK
KyAgICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZSA9IG1ha2VVbmlxdWU8UmVnaXN0cmF0aW9uU3Rv
cmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5KSk7CiAgICAg
ZWxzZQogICAgICAgICByZWdpc3RyYXRpb25TdG9yZUltcG9ydENvbXBsZXRlKCk7CiAKQEAgLTMy
MSw3ICszMjEsNyBAQCB2b2lkIFNXU2VydmVyOjpzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9i
RGF0YSYmIGpvYkRhdGEpCiAgICAgLy8gSWYgaXQgaXMsIHN0YWNrIGl0IGFsb25nIHdpdGggdGhh
dCBqb2IuCiAKICAgICBhdXRvJiBqb2JRdWV1ZSA9ICptX2pvYlF1ZXVlcy5lbnN1cmUoam9iRGF0
YS5yZWdpc3RyYXRpb25LZXkoKSwgW3RoaXMsICZqb2JEYXRhXSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJh
dGlvbktleSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4o
KnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKIAogICAgIGpvYlF1ZXVlLmVucXVldWVKb2Ioam9iRGF0YSk7CkBAIC04MjAsNyArODIwLDcg
QEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xp
ZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKIAogICAgIGlmIChjbGllbnRJZGVudGlmaWVycy5p
c0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKCFpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2Vy
dmljZVdvcmtlcnNUaW1lcik7Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2
aWNlV29ya2Vyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW2NsaWVudE9yaWdpbiwg
Y2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNdIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVl
LnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPihbY2xpZW50
T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhpc10gewogICAgICAgICAgICAgVmVj
dG9yPFNXU2VydmVyV29ya2VyKj4gd29ya2Vyc1RvVGVybWluYXRlOwogICAgICAgICAgICAgZm9y
IChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkg
ewogICAgICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpICYmIHdvcmtlci0+b3Jp
Z2luKCkgPT0gY2xpZW50T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggOGI2OGI3MGYw
MWQyNTI3OGFmNTM4YWJjZTkxNGI4YzdjNjhhYjgzNy4uZGNhZjVhOGE3MTBmNzk0NDY0N2RlM2Nk
NWU5ODA2Mzk5YThmZDUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0yODYsNyArMjg2LDcg
QEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYgam9iKQogICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRVcGRhdGVWaWFD
YWNoZShqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSk7CiAgICAgICAgIFJF
TEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lz
dGVySm9iOiBGb3VuZCByZWdpc3RyYXRpb24gJWxsdSBmb3Igam9iICVzIGJ1dCBpdCBuZWVkcyB1
cGRhdGluZyIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIGpv
Yi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1Nl
cnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0
cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJM
KTsKKyAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVn
aXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRpb25P
cHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOwogICAg
ICAgICBtX3NlcnZlci5hZGRSZWdpc3RyYXRpb24oV1RGTW92ZShuZXdSZWdpc3RyYXRpb24pKTsK
IAogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1
ZXVlOjpydW5SZWdpc3RlckpvYjogTm8gZXhpc3RpbmcgcmVnaXN0cmF0aW9uIGZvciBqb2IgJXMs
IGNvbnN0cnVjdGluZyBhIG5ldyBvbmUuIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMmI3YTJmZTNmYmI1OGQ0YzRlZTM4
ZmMwNGI1MzZhM2U0ZTBjNzdlNy4uM2JlNzU3ZTAyYWUxOWQ3NTkwZWMwN2IzZmE0Y2JlN2Q2M2Nl
ODFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEds
b2JhbFNjb3BlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwK
ICAgICAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUsIGds
b2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlv
biB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICAgICAgYXV0byBwYWludERlZmlu
aXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25z
dHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3Bl
cnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CisgICAgICAgIGF1dG8gcGFpbnREZWZp
bml0aW9uID0gbWFrZVVuaXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0
b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVz
KSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpOwogICAgICAgICBwYWludERlZmluaXRpb25NYXAo
KS5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4ZThh
MmE0Y2EyM2UyYjkzZGExMzRhZmI1MmQwZTk1NzZjNDAyMTU5Li4zZjA5MjU2M2JkNTJhYzRhNGJi
ZWRhNDE1YzIzN2EyZDFkZmRhZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgV29ya2xldENv
bnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1l
c3NhZ2VMZXZlCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50cy0+Z2V0
Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMp
LCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdl
VGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKICAgICBtX3dvcmtsZXRHbG9iYWxTY29w
ZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggNGJiNzg4ZWE2M2Nk
NmJiZGM1MzI1ODdlMDUxMGQ1MzI1MjYwNmZmYS4uY2VmODJmN2I0MTFkMjE4YzczM2Q2NmZhOWRi
YTJkOTMxMjVhZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXb3JrbGV0R2xvYmFsU2NvcGUpOwogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFs
U2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKICAgICA6
IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9zZXNzaW9uSUQobV9k
b2N1bWVudC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlxdWU8
V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQogICAg
ICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCkBAIC02Miw3ICs2Miw3IEBAIFdvcmtsZXRHbG9iYWxT
Y29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291cmNl
Q29kZSYmIGNvCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKICAgICBzZXRTZWN1cml0
eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2luLmNv
cHlSZWYoKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyBtX2NvZGUudXJsKCkgfSwgKnRoaXMpKTsKIH0KIAogV29ya2xldEdsb2JhbFNj
b3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
cjo6Q29uc29sZU1lcwogewogICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9uRm9y
YmlkZGVuKCkgfHwgIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50LT5h
ZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVsKCks
IG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291cmNl
KCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2FnZSgp
LCAwKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMWNlZTll
YjM0MjFjZDk5YTU2Yzg4NjBiOGVjZGQ0NTk2ZjgwZDJkZS4uNzEzMzkwMGYxNzFlZWY0MTU2NzNk
NGU5MGQ1Y2Y3N2NmZWJjMmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQogICAgIEFTU0VS
VChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2xl
dEdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEdsb2Jh
bFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVjdCgp
ID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFs
U2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2xldENvbnNvbGVD
bGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGNkNjEzMjI2OTc5NzlkNmY3MjVk
YmQ3YjY4NTQxNWJlMzU4ZmYyYWYuLjA1MjkzNDQwMWY2YjgxYTgyYjQ2ODgxYmQwMjBlNWQ0ZTJl
NTYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjc1LDcgKzI3
NSw3IEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VVUkwoKSBjb25zdAogWE1MSHR0
cFJlcXVlc3RVcGxvYWQmIFhNTEh0dHBSZXF1ZXN0Ojp1cGxvYWQoKQogewogICAgIGlmICghbV91
cGxvYWQpCi0gICAgICAgIG1fdXBsb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxYTUxIdHRwUmVxdWVz
dFVwbG9hZD4oKnRoaXMpOworICAgICAgICBtX3VwbG9hZCA9IG1ha2VVbmlxdWU8WE1MSHR0cFJl
cXVlc3RVcGxvYWQ+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fdXBsb2FkOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCBhZDdlMTNjOGExOTRhZDU2ZDYyMzQyMDAw
MTdjYmE3N2ZlODBiNzQyLi5hOTI0NDA5ZWU0NmM1M2U3M2IyN2E0OWExOWVmZTk2OTcyMTY3M2E1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
c3RhdGljIGlubGluZSBib29sIGlzV2hpdGVzcGFjZShVQ2hhciBjKQogICAgIHJldHVybiBjID09
ICcgJyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1x0JzsKIH0KIAotI2RlZmlu
ZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihTdWZmaXgpIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNTdWZmaXgoKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZ1biMjU3VmZml4PigpOyB9CisjZGVmaW5lIERFRklORV9GVU5DVElPTl9DUkVBVE9SKFN1
ZmZpeCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rpb24jI1N1
ZmZpeCgpIHsgcmV0dXJuIG1ha2VVbmlxdWU8RnVuIyNTdWZmaXg+KCk7IH0KIAogY2xhc3MgSW50
ZXJ2YWwgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJl
ZGljYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKaW5kZXgg
MDQ2MTVjM2Q1ZjAzMTMxMDY5MzhmYWEwNWZiMzljOTljZTEyM2I1Yy4uYzFiYmM1NGViODMwMTY5
MTE5Yzg2ODMxYTRmMmE2ZTdjMDA0NTY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoUHJlZGljYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNh
dGUuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgYm9vbCBldmFsdWF0ZVByZWRpY2F0ZShjb25zdCBF
eHByZXNzaW9uJiBleHByZXNzaW9uKQogCiAgICAgLy8gZm9vWzNdIG1lYW5zIGZvb1twb3NpdGlv
bigpPTNdCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gRXFUZXN0
T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlvbjo6Y3JlYXRlKCJwb3NpdGlvbiJfcyksIHN0ZDo6
bWFrZV91bmlxdWU8TnVtYmVyPihyZXN1bHQudG9OdW1iZXIoKSkpLmV2YWx1YXRlKCkudG9Cb29s
ZWFuKCk7CisgICAgICAgIHJldHVybiBFcVRlc3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1bmN0aW9u
OjpjcmVhdGUoInBvc2l0aW9uIl9zKSwgbWFrZVVuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051bWJl
cigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKIAogICAgIHJldHVybiByZXN1bHQudG9Cb29s
ZWFuKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExp
YnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApp
bmRleCBlYzJjNmFlMDQ1OWEwNjkyNTZhNjYyZjcyYzg3MjY3ZmVhMWE0NWJkLi42MzA0ZTkyODEx
YTkzNGY3ZGU3NGM4Yzk0YjJiNjljMDA0ZWE0OTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFhTTFN0eWxl
U2hlZXQ6OmxvYWRDaGlsZFNoZWV0cygpCiAKIHZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENoaWxk
U2hlZXQoY29uc3QgU3RyaW5nJiBocmVmKQogewotICAgIGF1dG8gY2hpbGRSdWxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxYU0xJbXBvcnRSdWxlPih0aGlzLCBocmVmKTsKKyAgICBhdXRvIGNoaWxkUnVs
ZSA9IG1ha2VVbmlxdWU8WFNMSW1wb3J0UnVsZT4odGhpcywgaHJlZik7CiAgICAgbV9jaGlsZHJl
bi5hcHBlbmQoY2hpbGRSdWxlLnJlbGVhc2UoKSk7CiAgICAgbV9jaGlsZHJlbi5sYXN0KCktPmxv
YWRTaGVldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcAppbmRleCBlMDI0ZWZiNTZiZjY1MmI5MGE5YTFkNGY4MTMwNjQ5MTgzMGQ4ZTBm
Li43MDQ4ODkyYTVhYTBlZjlhNTVmYmQyNDA4Y2QxNzkxNGQwMmE5Yzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTI4LDcgKzEy
OCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4m
JiBpbnB1dFNvdXJjZSkKIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKFhNTEVy
cm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG0sIFRleHRQb3NpdGlvbiBwb3NpdGlv
bikKIHsKICAgICBpZiAoIW1feG1sRXJyb3JzKQotICAgICAgICBtX3htbEVycm9ycyA9IHN0ZDo6
bWFrZV91bmlxdWU8WE1MRXJyb3JzPigqZG9jdW1lbnQoKSk7CisgICAgICAgIG1feG1sRXJyb3Jz
ID0gbWFrZVVuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVudCgpKTsKICAgICBtX3htbEVycm9ycy0+
aGFuZGxlRXJyb3IodHlwZSwgbSwgcG9zaXRpb24pOwogICAgIGlmICh0eXBlICE9IFhNTEVycm9y
czo6d2FybmluZykKICAgICAgICAgbV9zYXdFcnJvciA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXgg
MTAzMjAwN2I2ZWIxM2VjZGFhNWJjYjllNDgyYWQzYTY4ZTEyMjMxYi4uYjk5YjMwODk3Mzg1NTA5
ZWJhYjA0NTIxMzk3NTM5YjA3MGNlZTcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtOTIsNyArOTIsNyBA
QCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFN0YXJ0
RWxlbWVudE5TQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogeG1sTG9jYWxOYW1lLCBjb25zdCB4bWxD
aGFyKiB4bWxQcmVmaXgsIGNvbnN0IHhtbENoYXIqIHhtbFVSSSwgaW50IG51bU5hbWVzcGFjZXMs
IGNvbnN0IHhtbENoYXIqKiBuYW1lc3BhY2VzLCBpbnQgbnVtQXR0cmlidXRlcywgaW50IG51bURl
ZmF1bHRlZCwgY29uc3QgeG1sQ2hhcioqIGF0dHJpYnV0ZXMpCiAgICAgewotICAgICAgICBhdXRv
IGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxsYmFj
az4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ1N0YXJ0RWxl
bWVudE5TQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnhtbExvY2FsTmFtZSA9IHht
bFN0cmR1cCh4bWxMb2NhbE5hbWUpOwogICAgICAgICBjYWxsYmFjay0+eG1sUHJlZml4ID0geG1s
U3RyZHVwKHhtbFByZWZpeCk7CkBAIC0xMjIsMTIgKzEyMiwxMiBAQCBjbGFzcyBQZW5kaW5nQ2Fs
bGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kRW5kRWxlbWVudE5TQ2FsbGJhY2soKQogICAgIHsK
LSAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0VuZEVs
ZW1lbnROU0NhbGxiYWNrPigpKTsKKyAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKG1ha2VVbmlx
dWU8UGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNrPigpKTsKICAgICB9CiAKICAgICB2b2lkIGFw
cGVuZENoYXJhY3RlcnNDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgIHsK
LSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NoYXJhY3Rl
cnNDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGlu
Z0NoYXJhY3RlcnNDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cm5k
dXAocywgbGVuKTsKICAgICAgICAgY2FsbGJhY2stPmxlbiA9IGxlbjsKQEAgLTEzNyw3ICsxMzcs
NyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kUHJvY2Vzc2lu
Z0luc3RydWN0aW9uQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogdGFyZ2V0LCBjb25zdCB4bWxDaGFy
KiBkYXRhKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8
UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNh
bGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2s+
KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnRhcmdldCA9IHhtbFN0cmR1cCh0YXJnZXQpOwogICAg
ICAgICBjYWxsYmFjay0+ZGF0YSA9IHhtbFN0cmR1cChkYXRhKTsKQEAgLTE0Nyw3ICsxNDcsNyBA
QCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kQ0RBVEFCbG9ja0Nh
bGxiYWNrKGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiAgICAgewotICAgICAgICBhdXRvIGNh
bGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ0RBVEFCbG9ja0NhbGxiYWNrPigpOwor
ICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ0RBVEFCbG9ja0NhbGxi
YWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1cChzLCBsZW4pOwogICAg
ICAgICBjYWxsYmFjay0+bGVuID0gbGVuOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIGNsYXNzIFBlbmRp
bmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRDb21tZW50Q2FsbGJhY2soY29uc3QgeG1s
Q2hhciogcykKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBlbmRpbmdDb21tZW50Q2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtYWtl
VW5pcXVlPFBlbmRpbmdDb21tZW50Q2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnMg
PSB4bWxTdHJkdXAocyk7CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJh
Y2tzIHsKIAogICAgIHZvaWQgYXBwZW5kSW50ZXJuYWxTdWJzZXRDYWxsYmFjayhjb25zdCB4bWxD
aGFyKiBuYW1lLCBjb25zdCB4bWxDaGFyKiBleHRlcm5hbElELCBjb25zdCB4bWxDaGFyKiBzeXN0
ZW1JRCkKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0g
bWFrZVVuaXF1ZTxQZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjaz4oKTsKIAogICAgICAgICBj
YWxsYmFjay0+bmFtZSA9IHhtbFN0cmR1cChuYW1lKTsKICAgICAgICAgY2FsbGJhY2stPmV4dGVy
bmFsSUQgPSB4bWxTdHJkdXAoZXh0ZXJuYWxJRCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgY2xhc3Mg
UGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZEVycm9yQ2FsbGJhY2soWE1MRXJy
b3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgeG1sQ2hhciogbWVzc2FnZSwgT3JkaW5hbE51bWJl
ciBsaW5lTnVtYmVyLCBPcmRpbmFsTnVtYmVyIGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAg
IGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFcnJvckNhbGxiYWNrPigp
OworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nRXJyb3JDYWxsYmFj
az4oKTsKIAogICAgICAgICBjYWxsYmFjay0+bWVzc2FnZSA9IHhtbFN0cmR1cChtZXNzYWdlKTsK
ICAgICAgICAgY2FsbGJhY2stPnR5cGUgPSB0eXBlOwpAQCAtNTY1LDcgKzU2NSw3IEBAIGJvb2wg
WE1MRG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b24pCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cihkb2N1bWVudCkKICAgICAsIG1fdmlldyhmcmFtZVZpZXcpCi0gICAgLCBtX3BlbmRpbmdDYWxs
YmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAgICwgbV9wZW5k
aW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1fY3Vy
cmVudE5vZGUoJmRvY3VtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQb3Np
dGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiB7CkBAIC01NzMsNyArNTczLDcgQEAgWE1MRG9j
dW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVW
aWV3KiBmcmFtZVZpZXcpCiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNlcihE
b2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVudCwgUGFyc2Vy
Q29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIDogU2NyaXB0YWJsZURvY3Vt
ZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCksIHBhcnNlckNvbnRlbnRQb2xpY3kpCi0gICAg
LCBtX3BlbmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigp
KQorICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4o
KSkKICAgICAsIG1fY3VycmVudE5vZGUoJmZyYWdtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBv
c2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3BhcnNp
bmdGcmFnbWVudCh0cnVlKQpAQCAtMTMyOSw3ICsxMzI5LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBh
cnNlcjo6ZG9FbmQoKQogICAgICAgICB4bWxUcmVlVmlld2VyLnRyYW5zZm9ybURvY3VtZW50VG9U
cmVlVmlldygpOwogICAgIH0gZWxzZSBpZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsKICAgICAgICAg
eG1sRG9jUHRyIGRvYyA9IHhtbERvY1B0ckZvclN0cmluZyhkb2N1bWVudCgpLT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLnRvU3RyaW5nKCksIGRv
Y3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNm
b3JtU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2MpKTsKKyAgICAg
ICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKG1ha2VVbmlxdWU8VHJhbnNmb3JtU291
cmNlPihkb2MpKTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8g
TWFrZSB0aGUgZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IFhTTCBz
dHlsZXNoZWV0cy4KICAgICAgICAgZG9jdW1lbnQoKS0+YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jt
c05vd0lmU2NoZWR1bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZl
clNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRl
eCAwNWJjOTUzZjdmMGRkYzc4N2IxZTYzMDQ4NzY5NmMyMDg1OWNhZTBmLi5kNjllMTQ5OTJkNTg2
NzUxY2EwNDM0MjYzNjJhNmY0MWMyNjk5ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVy
L1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vy
dmljZS5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNvbm5l
Y3RUb0Jyb3dzZXIoVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSG9zdCA9IHN0ZDo6bWFrZV91
bmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7CisgICAgYXV0
byBzZXNzaW9uSG9zdCA9IG1ha2VVbmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3Qu
dGFrZUxhc3QoKSk7CiAgICAgYXV0byogc2Vzc2lvbkhvc3RQdHIgPSBzZXNzaW9uSG9zdC5nZXQo
KTsKICAgICBzZXNzaW9uSG9zdFB0ci0+Y29ubmVjdFRvQnJvd3NlcihbdGhpcywgY2FwYWJpbGl0
aWVzTGlzdCA9IFdURk1vdmUoY2FwYWJpbGl0aWVzTGlzdCksIHNlc3Npb25Ib3N0ID0gV1RGTW92
ZShzZXNzaW9uSG9zdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoZXJy
b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKaW5kZXggYzhm
MGEwZWM3YjBhMDY2MTJjYTY3MzhkMDAyYTEzZDBmNDNjMTJkOC4uMTc3YWE1NGYyMjI5N2FjMzE2
MTRkMzUzYmU5ZjNhNzlkMWFhYjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9nbGli
L1Nlc3Npb25Ib3N0R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25I
b3N0R2xpYi5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpsYXVuY2hC
cm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZQog
ICAgIH0sIHRoaXMpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkYnVzQWRkcmVzcyhnX3N0cmR1
cF9wcmludGYoInRjcDpob3N0PSVzLHBvcnQ9JXUiLCAiMTI3LjAuMC4xIiwgcG9ydCkpOwotICAg
IGNvbm5lY3RUb0Jyb3dzZXIoc3RkOjptYWtlX3VuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5bmNE
YXRhPih0aGlzLCBXVEZNb3ZlKGRidXNBZGRyZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBjb25uZWN0VG9Ccm93c2VyKG1ha2VVbmlx
dWU8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVzcyks
IG1fY2FuY2VsbGFibGUuZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAK
IHZvaWQgU2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dzZXIoc3RkOjp1bmlxdWVfcHRyPENvbm5l
Y3RUb0Jyb3dzZXJBc3luY0RhdGE+JiYgZGF0YSkKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIFNl
c3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIG1lc3NhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25JRCk7CiAgICAgQVNTRVJUKG1f
dGFyZ2V0LmlkKTsKIAotICAgIGF1dG8gbWVzc2FnZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsKKyAg
ICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0gbWFrZVVuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2Fn
ZUNvbnRleHQgeyBtZXNzYWdlSUQsIHRoaXMgfSk7CiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fY2Fs
bChtX2RidXNDb25uZWN0aW9uLmdldCgpLCBudWxscHRyLAogICAgICAgICBJTlNQRUNUT1JfREJV
U19PQkpFQ1RfUEFUSCwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfSU5URVJGQUNFLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcAppbmRleCAyZTI5NmIyOWY0M2E0ZmM4OGU3MDA5MzI0YTVlMjNiMGJlOWNkNTFjLi45MzAz
ZDJhZGMxNWVmNmZiMzEwYjZmYjE2ZDA3MGNjODUzZmRjM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKCkKICAgICBpZiAocmVzb3VyY2VMb2dQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigp
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChGaWxlTW9uaXRvcjo6Rmls
ZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVN
b25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBl
IHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3Rv
cnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsZU1vbml0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVl
dWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7
CisgICAgbV9maWxlTW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHN0b3JhZ2VQYXRo
LCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VU
eXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAg
IGlmICh0eXBlID09IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbCkgewogICAg
ICAgICAgICAgLy8gRGlyZWN0b3J5IHdhcyByZW1vdmVkIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA2NzVmMGRhZjU5Y2U5YjRmODg3Yjc5
NGJjODkyZWM0NGE4Mzc1NmYzLi5mMjI4NjYzNTVjNWFmNWEyNjIwNTYzN2FlNTJmZGY3MWM5MTYy
MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtMTU5LDE1ICsxNTksMTUgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG4KICAgICAKICAg
ICBwb3N0VGFzayhbdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3RdIHsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuaXNJVFBEYXRhYmFzZUVuYWJsZWQoKSkgewotICAgICAgICAgICAgbV9zdGF0aXN0
aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3Qs
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgbV9zdGF0aXN0
aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
PigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCi0gICAgICAgICAgICBhdXRvIG1lbW9yeVN0
b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+
KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0gICAg
ICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGlj
c1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAgIGF1
dG8gbWVtb3J5U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsK
KyAgICAgICAgICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0aWNz
UXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCiAgICAgICAgICAgICBk
b3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGlj
c1N0b3JlLmdldCgpKS5wb3B1bGF0ZUZyb21NZW1vcnlTdG9yZSgqbWVtb3J5U3RvcmUpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlz
dGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAgICAgIG1fcGVyc2lz
dGVudFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
PigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IG1ha2VV
bmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0
aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgICAgICAgICAgbV9wZXJzaXN0
ZW50U3RvcmFnZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCptX3N0
YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FKDE5MzI5Nyk6IFRoaXMg
c2hvdWxkIGJlIHJldmlzZWQgYWZ0ZXIgdGhlIFVJUHJvY2VzcyB2ZXJzaW9uIGdvZXMgYXdheS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29s
TWFuYWdlclNvdXAuY3BwCmluZGV4IDJjNGQyZmY5NDgwOWM0MmE2MTE2NzNiNWZiNWNhZGJmYTU5
MTYwNGUuLmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0ZjM5ZmI1ZWZjZDc1ZTcxNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXJTb3VwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbFJlcXVlc3RD
bGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xpZW50CiAgICAg
ICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRk
Q3VzdG9tUHJvdG9jb2woc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7Cisg
ICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+YWRk
Q3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldl
YlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CiAgICAgICAg
IGN1c3RvbVByb3RvY29sTWFuYWdlci0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHdl
YmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVlc3QocmVxdWVzdCkpOwogICAgIH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBmNGQ3NWQ5ZGQzMTgyMDA0NDlhMmFiMmU1OGU4ODYzMTIw
Yzc3NzQ0Li41MDdmNGY2ZmZjM2Q0MDY5YzEzNzgyNjUyNzVjNjYwNjU0YjRjODM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0
YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2EK
ICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihyZXF1ZXN0LnVy
bCgpKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwogCi0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChk
b3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
ZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNzaW9uLCAmY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKS0+YmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKKyAgICBtX3BlbmRpbmdE
b3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPihtX2Ns
aWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQogCiB2
b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJ
RCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBAIC05
MCw3ICs5MCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rvd25s
b2FkRGVzdGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFuYWdl
cjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIEFTU0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAg
ICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8UGVu
ZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2Fk
cygpLCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRv
d25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBtYWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSkp
OwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxv
YWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9vbCBh
bGxvd092ZXJ3cml0ZSkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6
cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25s
bwogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKLSAg
ICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25s
b2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlx
dWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwogCiAg
ICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2Fk
SUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFwLmNwcAppbmRleCBhODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3YmJj
NDMzZTY1Li5hZTNjYTdlMGU0ZWU3ZWM4NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6OkFk
ZFJlc3VsdCBEb3dubG9hZE1hcDo6YWRkKERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBhdXRv
IHJlc3VsdCA9IG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7
CiAgICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCghbV9k
b3dubG9hZEFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2FkcyJf
cywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25s
b2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwgIldl
YktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsK
ICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQgZG93
bmxvYWRzJyBhc3NlcnRpb24gaW4gTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuY3BwCmluZGV4IGEyNzgyOGQ3YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5NmQu
LjU5MTIzZjJjNDhmMWMxZTQxNzliYjFkNWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6OkNv
bm5lY3Rpb24qIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBuZXR3
b3JrU2Vzc2lvbiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFrZV91
bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1ldGVy
cyksIG5ldHdvcmtTZXNzaW9uKSkKKyAgICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3
b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29y
a1Nlc3Npb24pKQogICAgICwgbV9wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbikKIHsKICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0g
cGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xp
Y3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCBiYmU5YTlhYTQ2YTk2MzQwMjgyZjcwZDJkM2Q0ZmMyZGQzYzRlODJkLi4yNGQyODEx
ZDBjYTNkNDE1OWJhMzgxYTE3ZDY2YmEzYzkxMjE1YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBzZXJ2
ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVjdGlv
bj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25J
RCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rp
b24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9u
SUQpOwogICAgIAogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNlcnZp
Y2VXb3JrZXIsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dTZXJ2
ZXJDb25uZWN0aW9uIC0gJXMiLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4IDQ0
NDIwZmY1ZmYyMjk5YmUzNzU0Y2UzN2NkZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIxYWYw
YmFkZTBjMDI3NWJlMmYwOTVhMTY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNvbnRl
bnRFeHRlbnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAgICBh
dXRvJiBiYWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVudGlm
aWVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQ+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRvJiYg
Y29udGVudFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2Y2Ex
ZjA5NWUxMDNjNTQyYWQ0ZTQzMDAwYmNiNzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIyMTA0
ZGYwOTQ2OTJjYzNmNjU1MjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0QmxvYlJl
c291cmNlIjsKIAogTmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihOZXR3
b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBOZXR3
b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNlcykK
ICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJlYW0o
c3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3RyZWFt
KG1ha2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZlcmVu
Y2VzKGZpbGVSZWZlcmVuY2VzKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5ldHdv
cmtQcm9jZXNzKCkpCiB7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tC
bG9iOjpkb3dubG9hZCgpCiAgICAgfQogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9u
ZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0
ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxv
YWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkp
OworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFn
ZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBz
dWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdl
dCgpOwogICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3Bl
bmRpbmdEb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRp
ZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmNwcAppbmRleCBmNjU0Mjk1OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMxMTZj
Li4xOTMyNmYyZjQ3ZGM5ZjRmNjIyOGE0YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVD
aGVja2VyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2U+KCk7CisgICAgICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlPigpOwogICAgICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9kYXRh
YmFzZS0+b3BlbihwYXRoLCBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJlYWRP
bmx5KTsKICAgICAgICAgaWYgKCFpc0RhdGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtODAsNyArODAsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hU
VFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3b3Jr
ZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQgYnkg
ZGlmZmVyZW50IHRocmVhZHMuCiAgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRpbmdD
aGVja3MoKTsKIAotICAgICAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29y
ZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1ZXJ5
KTsKKyAgICAgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudD4oKm1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAgIGlu
dCBpc1N0YXRlbWVudFByZXBhcmVkID0gKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FMSVRF
X09LKTsKICAgICAgICAgQVNTRVJUKGlzU3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBpZiAo
IWlzU3RhdGVtZW50UHJlcGFyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwCmluZGV4IDkxMDdmZWMxZTM0ZGI0NDg4MTYyMjg2ODYyMmM4ZmJlYjViMzg4
M2MuLmVlODBhYzZlYTFhNzc5NzczYTA3MTBlMTc4ODcwNjM3NjdjNTEyYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yMTUsNyArMjE1LDcg
QEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGUKICAgICB9CiAKICAgICBpZiAobV9sb2FkVGhyb3R0
bGVMYXRlbmN5ID4gMF9zKSB7Ci0gICAgICAgIG1fdGhyb3R0bGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRocm90dGxlPigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3BvbnNl
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX3Rocm90dGxlID0gbWFr
ZVVuaXF1ZTxUaHJvdHRsZT4oKnRoaXMsIG1fbG9hZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShy
ZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENoZWNrZXIuY3BwCmluZGV4IDExNzZmNTM3YTg1ODA5YjRiYWUxY2U3NjhiNTY1MzViMTVkNWVi
YjMuLmY5YTRkMDQxMzY1MjFhZjVhNTk0Mjg3YWI0MmJlNGNlZGY2ODMyOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAg
LTQxMyw3ICs0MTMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVxdWVz
dFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogICAgICAgICBtX2ZyYW1l
SUQsCiAgICAgICAgIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1fY29y
c1ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9z
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9
IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgIG1fY29yc1ByZWZs
aWdodENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4obV9u
ZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3Rl
ZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFjY2Vz
c1JlcXVlc3RXaXRoUHJlZmxpZ2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQgZm9y
UmVkaXJlY3Q/ICVkIiwgZXJyb3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAgICAg
aWYgKCFlcnJvci5pc051bGwoKSkgewpAQCAtNDQ2LDcgKzQ0Niw3IEBAIENvbnRlbnRTZWN1cml0
eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3koKQogewog
ICAgIGlmICghbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgbV9jc3BSZXNwb25zZUhlYWRlcnMp
IHsKICAgICAgICAgLy8gRklYTUU6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIHJlc291
cmNlIGluc3RlYWQgb2YgaXRzIG9yaWdpbi4KLSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJMIHsg
fSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7CisgICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9s
aWN5ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1f
b3JpZ2luLT50b1N0cmluZygpIH0pOwogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeS0+
ZGlkUmVjZWl2ZUhlYWRlcnMoKm1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3JlZmVy
cmVyIH0sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8pOwog
ICAgIH0KICAgICByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGM3NzY3
ZDJjZWVkNzFhMDA0MWU2MGY5YWNhOGJiOGQyMjE3MjYzZDQuLjE0NDMwZWI3NmE0MDkzYjE0MTRl
YzFiOGY5NThiMGVhNGExMmEzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01MDksOSArNTA5LDkgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9y
YWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBtX2RlZmF1bHRO
ZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92
ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgbV9kZWZhdWx0TmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiks
IFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQot
ICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKTsKKyAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVl
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKSk7CiAjZW5kaWYKIH0KIApAQCAtNTQxLDkgKzU0MSw5IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxT
dG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3Jh
Z2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdU
Rk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFn
ZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lv
bklEKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CiAjZW5kaWYKIH0KIApAQCAtMjQ2NCw3ICsyNDY0
LDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVy
ZSBkaWQgdGhpcyBQQUw6OlNlc3Npb25JRCBjb21lIGZyb20/CiAgICAgICAgIEFTU0VSVChzZXNz
aW9uSUQuaXNFcGhlbWVyYWwoKSB8fCAhcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICAKLSAgICAg
ICAgYXV0byB2YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8
V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICAgICAg
YXV0byB2YWx1ZSA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmln
aW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKG1fc2hv
dWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKICAgICAgICAg
ICAgIHZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7
CiAgICAgICAgIHJldHVybiB2YWx1ZTsKQEAgLTI2MTEsNyArMjYxMSw3IEBAIGNsYXNzIFF1b3Rh
VXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VRdW90YVVzZXIg
ewogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUXVvdGFVc2VycyhTdG9yYWdlUXVv
dGFNYW5hZ2VyJiBtYW5hZ2VyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVu
dE9yaWdpbiYgb3JpZ2luKQogewotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVzZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBtdXRhYmxl
IHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyksIHNlc3Npb25JRCwgb3JpZ2luLCB1c2VyID0gbWFrZVVuaXF1ZTxRdW90YVVz
ZXJJbml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMtPmlkYlNlcnZlcihzZXNzaW9u
SUQpLmluaXRpYWxpemVRdW90YVVzZXIob3JpZ2luKTsKQEAgLTI2MjUsNyArMjYyNSw3IEBAIFN0
b3JhZ2VRdW90YU1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2VyKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JCiAgICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5hZ2Vy
cyB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAqc3RvcmFnZVF1b3Rh
TWFuYWdlcnMubWFuYWdlcnNQZXJPcmlnaW4oKS5lbnN1cmUob3JpZ2luLCBbdGhpcywgJnN0b3Jh
Z2VRdW90YU1hbmFnZXJzLCBzZXNzaW9uSUQsICZvcmlnaW5dIHsKLSAgICAgICAgYXV0byBtYW5h
Z2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVvdGFN
YW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3JpZ2luXSh1
aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3Jl
YXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAgICAgIGF1dG8gbWFuYWdlciA9IG1ha2VVbmlxdWU8
U3RvcmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFuYWdlcnMuZGVmYXVsdFF1b3RhKG9y
aWdpbiksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgewog
ICAgICAgICAgICAgdGhpcy0+cmVxdWVzdFN0b3JhZ2VTcGFjZShzZXNzaW9uSUQsIG9yaWdpbiwg
cXVvdGEsIGN1cnJlbnRTcGFjZSwgc3BhY2VJbmNyZWFzZSwgV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgICAgICB9KTsKICAgICAgICAgaW5pdGlhbGl6ZVF1b3RhVXNlcnMoKm1hbmFnZXIsIHNlc3Np
b25JRCwgb3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCAzMjExZTkwZjY1MTgzNmEzYjA3NmMzMjJhYWI4NjM0ODE3ZDRjNzNhLi40
MDk0YzY2OWQwODkxZjQ4ZDE0MzlhZjNhZmFlODgwYjY0ZTAyNTQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xNTIsNyArMTUyLDcgQEAg
Y2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2VzcywgcHJpdmF0ZSBE
b3dubG9hZE1hbmFnZXI6OkNsaWVudCwKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2
b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6
c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPigqdGhpcykpOworICAgICAgICBt
X3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFQ+KCp0aGlz
KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVjNmE4
MGM4NDg5ZGVmMzJkNzg5Yjc0YmVjMTI3MzU3YmVjNTU4MzUuLjU3ZGQzMGFjMTZhNWJkYWY4MWU3
NTQ3MTM1OGI3OGQ3OTU4OTljNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmIHBhcgogCiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkgfHwgcGFy
YW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyB8fCBwYXJhbWV0ZXJzLm9w
dGlvbnMua2VlcEFsaXZlKSB7CiAgICAgICAgIE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5cGUg
cmVxdWVzdExvYWRUeXBlID0gaXNNYWluRnJhbWVMb2FkKCkgPyBOZXR3b3JrTG9hZENoZWNrZXI6
OkxvYWRUeXBlOjpNYWluRnJhbWUgOiBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlOjpPdGhl
cjsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlvbnMg
eyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRlck1hcCB7
IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1ldGVy
cy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigpLCBt
X3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJy
ZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CisgICAgICAgIG1fbmV0
d29ya0xvYWRDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rp
b24ubmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnMg
fSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3Bh
cmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBv
bGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVycy5pc0hU
VFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygp
LCByZXF1ZXN0TG9hZFR5cGUpOwogICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLmNzcFJlc3BvbnNl
SGVhZGVycykKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDU1BSZXNwb25z
ZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgbV9wYXJhbWV0
ZXJzLmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpIH0pOwogI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCkBAIC0xMTksNyArMTE5LDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXIKICNl
bmRpZgogICAgIH0KICAgICBpZiAoc3luY2hyb25vdXNSZXBseSkKLSAgICAgICAgbV9zeW5jaHJv
bm91c0xvYWREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c0xvYWREYXRhPihXVEZN
b3ZlKHN5bmNocm9ub3VzUmVwbHkpKTsKKyAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhID0g
bWFrZVVuaXF1ZTxTeW5jaHJvbm91c0xvYWREYXRhPihXVEZNb3ZlKHN5bmNocm9ub3VzUmVwbHkp
KTsKIH0KIAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjp+TmV0d29ya1Jlc291cmNlTG9hZGVyKCkK
QEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBwYXJh
bWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IG5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnko
KS5maWxlc0luQmxvYihvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSk7CiAKICAgICBwYXJhbWV0ZXJz
LnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdv
cmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+
YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29j
a2V0Q2hhbm5lbC5jcHAKaW5kZXggMDRlM2QwMjUyMjBkZTRjNDNjNzM2MmRhMTQxZGYzMmJhMjAz
MGZhZi4uNTkxODg1NzU3YTg0NzUxYzgzMThmN2JlNWQyNzVhN2YxMWM1YTRhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gTmV0d29ya1NvY2tldENoYW5uZWw6OmNyZWF0
ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVzdCwg
cHJvdG9jb2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxOZXR3
b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVy
KTsKICAgICBpZiAoIXJlc3VsdC0+bV9zb2NrZXQpIHsKICAgICAgICAgcmVzdWx0LT5kaWRDbG9z
ZSgwLCAiQ2Fubm90IGNyZWF0ZSBhIHdlYiBzb2NrZXQgdGFzayJfcyk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcAppbmRleCBkOTBjY2NhOTgwYThlZmZjMmQ0ZjM4ZjVlM2Y2YmMwYWEyYzJlNTQ2Li4y
YzY0MjdlNjQ4MjJjZWY1ZDFhODEyMDI1ZWZkNmM4NTQ1NDFjZTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApAQCAtNTMsNyArNTMsNyBA
QCBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBOZXR3b3JrTG9hZFBhcmFtZQogICAgIH0KIAogICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpOwotICAgIG1fbmV0
d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2Fk
ID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1l
dGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNo
b3QoNjAwMDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCA4ZjQ3
NjNjOWRjODZhYjRhNDJkOTQ2ZjI2ZGIyOGJjYzY5MDI5Y2JlLi4yMDE0NTNmODQzNzA0NjdlNDMz
MDVhMGE1NTk0MmYzZTViOGJjMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAK
QEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpzY2hlZHVsZURh
dGFiYXNlVXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2Rpc2FibGVTdWRk
ZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlKQotICAgICAgICBtX2Rpc2Fi
bGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyPigpOworICAgICAgICBtX2Rpc2FibGVT
dWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gbWFrZVVuaXF1ZTxT
dWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyPigpOwogCiAgICAgbV9kaWRTY2hlZHVsZURhdGFiYXNl
VXBkYXRlID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDNlOWQxN2Q2MDJkMzQxNzcwMzNjOTMzOGI0YmJl
NmRhMGJhYmE4YTQuLmIwODNkNWQzMmE1MWU2MWRhNDM3NmRmOTQ0NmVmMTExNGVhNmJmMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKQEAgLTg0LDE3ICs4NCwxNyBAQCBDYWNoZTo6Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBSZWY8U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8QwogewogI2lm
IEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBpZiAo
b3B0aW9ucy5jb250YWlucyhDYWNoZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7
Ci0gICAgICAgIG1fbG93UG93ZXJNb2RlTm90aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJs
ZWQpIHsKKyAgICAgICAgbV9sb3dQb3dlck1vZGVOb3RpZmllciA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxl
ZCkgewogICAgICAgICAgICAgQVNTRVJUKFdURjo6UnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAg
ICAgICAgaWYgKGlzTG93UG93ZXJNb2RlRW5hYmxlZCkKICAgICAgICAgICAgICAgICBtX3NwZWN1
bGF0aXZlTG9hZE1hbmFnZXIgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIpOwotICAgICAgICAgICAg
ICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRp
dmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
bV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRNYW5h
Z2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7
CiAgICAgICAgIGlmICghbV9sb3dQb3dlck1vZGVOb3RpZmllci0+aXNMb3dQb3dlck1vZGVFbmFi
bGVkKCkpCi0gICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0KCkpOwor
ICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKICAgICB9CiAjZW5kaWYK
IApAQCAtMzc1LDEyICszNzUsMTIgQEAgdm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRy
aWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICAKIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3Qp
LCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWlu
Z1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCks
IHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VD
YWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29y
ZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3Qp
LCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVl
c3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVl
c3QsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtl
eShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZh
cnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC00NTcsNyArNDU3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6dXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXEKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gZXhpc3RpbmdF
bnRyeS5yZXNwb25zZSgpOwogICAgIFdlYkNvcmU6OnVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVy
UmV2YWxpZGF0aW9uKHJlc3BvbnNlLCB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCi0gICAgYXV0byB1
cGRhdGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnkua2V5KCks
IHJlc3BvbnNlLCBleGlzdGluZ0VudHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWlu
Z1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCks
IG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gbWFr
ZVVuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50
cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29y
a1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0LCByZXNw
b25zZSkpOwogICAgIGF1dG8gdXBkYXRlUmVjb3JkID0gdXBkYXRlRW50cnktPmVuY29kZUFzU3Rv
cmFnZVJlY29yZCgpOwogCiAgICAgbV9zdG9yYWdlLT5zdG9yZSh1cGRhdGVSZWNvcmQsIHsgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCmluZGV4IDdhZTFjMmZlN2RjZTYwN2I5ZjhhNTNkOTlhMWJkNzk4NTM5
OWJjZjEuLjFmNDE0NGE4ZmFlODdiZjVmYzVjODNlZDkwMmI2ZmYwOGEwNjRhZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNv
ZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IEVudHJ5
OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5
KQogewotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihzdG9yYWdlRW50
cnkpOworICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihzdG9yYWdlRW50cnkpOwog
CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRyeS5oZWFk
ZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShlbnRyeS0+bV9yZXNwb25zZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKaW5kZXggOTRiNjA2OGEwZGZlZDc0MmZhZmZkZTU3Njg4NzA1YWU3YTQ2MjAxYi4uYmI5
N2M3YTNmMjc2MTc2ZDA5ZmY0ODM1YjJmM2I5N2VmMmU1OGZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNTksNyArNTksNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNw
ZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZy
YW1lSQogICAgIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gQ29udGVudFNuaWZm
aW5nUG9saWN5OjpEb05vdFNuaWZmQ29udGVudDsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5ID0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZm
OwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IG1fb3JpZ2luYWxSZXF1ZXN0OwotICAgIG1fbmV0
d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOworICAgIG1fbmV0d29ya0xv
YWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQogCiBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVj
dWxhdGl2ZUxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5jcHAKaW5kZXggMWNkNmI0OTJmODFhNWE4MWQyNGNhNzkxMDhkYTZiMTllMGMwMDNmMS4uNTdl
OGU3NTk5YjFjY2E2NWIyNmUwNmVjMzg3MmVlMmRkOTQ5ZGY2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgY2xh
c3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCA6IHB1YmxpYyBSZWZD
b3VudGVkPFBlbmRpbmdGcmFtZUwKICAgICB2b2lkIHJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiBzdWJyZXNvdXJjZUtleSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIG1fc3Vi
cmVzb3VyY2VMb2Fkcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJl
cXVlc3QsIHN1YnJlc291cmNlS2V5KSk7CisgICAgICAgIG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBl
bmQobWFrZVVuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNlS2V5KSk7
CiAgICAgICAgIG1fbG9hZEh5c3RlcmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CiAgICAgfQogCkBA
IC0zNTUsNyArMzU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZShj
b25zdCBLZXkmIHN0b3JhZ2VLZXksIFJldHJpZXZlQ29tcGxldGlvbkgKICAgICBBU1NFUlQobV9w
ZW5kaW5nUHJlbG9hZHMuY29udGFpbnMoc3RvcmFnZUtleSkpOwogICAgIC8vIEZJWE1FOiBUaGlz
IGJyZWFrcyBpbmNyZW1lbnRhbCBsb2FkaW5nIHdoZW4gdGhlIHJldmFsaWRhdGlvbiBpcyBub3Qg
c3VjY2Vzc2Z1bC4KICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcGVuZGluZ1JldHJpZXZlUmVxdWVz
dHMuZW5zdXJlKHN0b3JhZ2VLZXksIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+PigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CiAgICAgfSk7
CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNv
bgogICAgIEFTU0VSVChlbnRyeSk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bmVlZHNWYWxpZGF0aW9u
KCkpOwogICAgIGF1dG8ga2V5ID0gZW50cnktPmtleSgpOwotICAgIG1fcHJlbG9hZGVkRW50cmll
cy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3ZlKGVudHJ5
KSwgV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJRF0gewor
ICAgIG1fcHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPFByZWxvYWRlZEVudHJ5
PihXVEZNb3ZlKGVudHJ5KSwgV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtl
eSwgZnJhbWVJRF0gewogICAgICAgICBhdXRvIHByZWxvYWRlZEVudHJ5ID0gbV9wcmVsb2FkZWRF
bnRyaWVzLnRha2Uoa2V5KTsKICAgICAgICAgQVNTRVJUKHByZWxvYWRlZEVudHJ5KTsKICAgICAg
ICAgaWYgKHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpKQpAQCAtNDQ5LDcgKzQ0OSw3
IEBAIGJvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhj
b25zdCBLZXkmIGtleSwgRW50cnkqIGVudHJ5CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGZvciAoYXV0byYgY29tcGxldGlvbkhhbmRsZXIgOiAqY29tcGxldGlvbkhhbmRsZXJzKQotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KCpl
bnRyeSkgOiBudWxscHRyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkgPyBtYWtl
VW5pcXVlPEVudHJ5PigqZW50cnkpIDogbnVsbHB0cik7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRh
dGVTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlcwogCiAgICAgTE9HKE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgU3BlY3Vs
YXRpdmVseSByZXZhbGlkYXRpbmcgJyVzJzoiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgYXV0byByZXZhbGlkYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRp
dmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVu
dHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CisgICAgYXV0byByZXZhbGlkYXRvciA9
IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRp
b25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVz
dCwgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CiAg
ICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCAhcmV2YWxpZGF0ZWRFbnRyeS0+bmVl
ZHNWYWxpZGF0aW9uKCkpOwogICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgcmV2
YWxpZGF0ZWRFbnRyeS0+a2V5KCkgPT0ga2V5KTsKIApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25z
dCBHbG9iYWxGcmFtZUlEJiBmCiAgICAgICAgICAgICBwcmVsb2FkRW50cnkoa2V5LCBzdWJyZXNv
dXJjZUluZm8sIGZyYW1lSUQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExPRyhOZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5vdCBwcmVs
b2FkaW5nICclcycgYmVjYXVzZSBpdCBpcyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwga2V5LmlkZW50
aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmll
cy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZy
YW1lSURdIHsKKyAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBtYWtl
VW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAgICAgICAg
ICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShtX2NhY2hlLm5ldHdv
cmtQcm9jZXNzKCksIGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZW50cnlSaWdodGx5
Tm90V2FybWVkVXBLZXkoKSk7CiAgICAgICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRFbnRyaWVz
LnJlbW92ZShrZXkpOwogICAgICAgICAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
YmJmYzY0OTg5MGY5NWNjN2UwNGNlODJhNGZlMzI5NDRkYzFhYjFmMC4uODA0YzQyOThjYzNlM2My
ODE0ZmRiYzJiYmI2Y2JlZTU3NTg0YWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0yOTAs
OCArMjkwLDggQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAgICAgTE9HKE5ldHdvcmtD
YWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIHN5bmNocm9uaXppbmcgY2FjaGUiKTsKIAog
ICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcmVjb3JkRmlsdGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKLSAgICAgICAgYXV0byBibG9iRmls
dGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAgYXV0byBy
ZWNvcmRGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAgICBhdXRv
IGJsb2JGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwogCiAgICAgICAgIC8v
IE1vc3Qgb2YgdGhlIGRpc2sgc3BhY2UgdXNhZ2UgaXMgaW4gYmxvYnMgaWYgd2UgYXJlIHVzaW5n
IHRoZW0uIEFwcHJveGltYXRlIHJlY29yZHMgZmlsZSBzaXplcyB0byBhdm9pZCBleHBlbnNpdmUg
c3RhdCgpIGNhbGxzLgogICAgICAgICBzaXplX3QgcmVjb3Jkc1NpemUgPSAwOwpAQCAtNDg5LDcg
KzQ4OSw3IEBAIHZvaWQgU3RvcmFnZTo6cmVhZFJlY29yZChSZWFkT3BlcmF0aW9uJiByZWFkT3Bl
cmF0aW9uLCBjb25zdCBEYXRhJiByZWNvcmREYXRhKQogICAgIH0KIAogICAgIHJlYWRPcGVyYXRp
b24uZXhwZWN0ZWRCb2R5SGFzaCA9IG1ldGFEYXRhLmJvZHlIYXNoOwotICAgIHJlYWRPcGVyYXRp
b24ucmVzdWx0UmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3Jh
Z2U6OlJlY29yZCB7CisgICAgcmVhZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBtYWtlVW5pcXVl
PFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3JkIHsKICAgICAgICAgbWV0YURhdGEua2V5
LAogICAgICAgICBtZXRhRGF0YS50aW1lU3RhbXAsCiAgICAgICAgIGhlYWRlckRhdGEsCkBAIC03
NTgsNyArNzU4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgcmV0cmlldmVGcm9tTWVtb3J5
KGNvbnN0IFQmIG9wZXJhdGlvbnMsIGNvbnN0IEtleSYga2V5LAogICAgICAgICBpZiAob3BlcmF0
aW9uLT5yZWNvcmQua2V5ID09IGtleSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0
b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGZvdW5kIHdyaXRlIG9wZXJhdGlvbiBpbiBwcm9ncmVz
cyIpOwogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZWNvcmQgPSBvcGVy
YXRpb24tPnJlY29yZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29yZCksIHsgfSk7CisgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29y
ZCksIHsgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBL
ZXkmIGtleSwgdW5zaWduZWQgcHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlvbkhhbmQKICAgICBp
ZiAocmV0cmlldmVGcm9tTWVtb3J5KG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLCBrZXksIGNvbXBs
ZXRpb25IYW5kbGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWFkT3BlcmF0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkT3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byByZWFkT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxS
ZWFkT3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
ICAgICByZWFkT3BlcmF0aW9uLT50aW1pbmdzLnN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogICAgIHJlYWRPcGVyYXRpb24tPnRpbWluZ3MuZGlzcGF0Y2hDb3VudEF0U3RhcnQgPSBt
X3JlYWRPcGVyYXRpb25EaXNwYXRjaENvdW50OwpAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgU3Rv
cmFnZTo6c3RvcmUoY29uc3QgUmVjb3JkJiByZWNvcmQsIE1hcHBlZEJvZHlIYW5kbGVyJiYgbWFw
cGVkQm9keUhhbmRsZXIsCiAgICAgaWYgKCFtX2NhcGFjaXR5KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIHdyaXRlT3BlcmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZU9wZXJhdGlv
bj4oKnRoaXMsIHJlY29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHdyaXRlT3BlcmF0aW9uID0gbWFrZVVuaXF1ZTxX
cml0ZU9wZXJhdGlvbj4oKnRoaXMsIHJlY29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBtX3BlbmRpbmdXcml0ZU9wZXJhdGlv
bnMucHJlcGVuZChXVEZNb3ZlKHdyaXRlT3BlcmF0aW9uKSk7CiAKICAgICAvLyBBZGQga2V5IHRv
IHRoZSBmaWx0ZXIgYWxyZWFkeSBoZXJlIGFzIHdlIGRvIGxvb2t1cHMgZnJvbSB0aGUgcGVuZGlu
ZyBvcGVyYXRpb25zIHRvby4KQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZl
cnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRy
YXZlcgogICAgIEFTU0VSVCh0cmF2ZXJzZUhhbmRsZXIpOwogICAgIC8vIEF2b2lkIG5vbi10aHJl
YWQgc2FmZSBGdW5jdGlvbiBjb3BpZXMuCiAKLSAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhpcyksIHR5
cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikpOworICAgIGF1dG8gdHJhdmVyc2VP
cGVyYXRpb25QdHIgPSBtYWtlVW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVmKCp0aGlz
KSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CiAgICAgYXV0byYgdHJh
dmVyc2VPcGVyYXRpb24gPSAqdHJhdmVyc2VPcGVyYXRpb25QdHI7CiAgICAgbV9hY3RpdmVUcmF2
ZXJzZU9wZXJhdGlvbnMuYWRkKFdURk1vdmUodHJhdmVyc2VPcGVyYXRpb25QdHIpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dWJyZXNvdXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAppbmRleCA3Yjg4OTIyOTk1MzlkYjM0
YzViMzkxNGQzYjIxNGNlOGI4MTQzYjk4Li42M2FkMDQwOWZkZDIzNmY2ZTNjMmNhMzBlODdlNGE3
YzBhMjk1OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcApAQCAt
OTMsNyArOTMsNyBAQCBTdG9yYWdlOjpSZWNvcmQgU3VicmVzb3VyY2VzRW50cnk6OmVuY29kZUFz
U3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRy
eT4gU3VicmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6
UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7Ci0gICAgYXV0byBlbnRyeSA9IHN0ZDo6bWFrZV91bmlx
dWU8U3VicmVzb3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRyeSA9IG1h
a2VVbmlxdWU8U3VicmVzb3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRhKCksIHN0
b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJ5
LT5tX3N1YnJlc291cmNlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAppbmRleCBkOGEwNTk0MGQ3MTk3ZWIzMjI1YTM2YmM1
MTNhMmRiNjEwZGIwY2Q4Li43MTA0ZDFmNzRjZDcwMWNiY2VjZmFiNTdkMjRlYmZmOGRhZWJlZGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAKQEAgLTczLDggKzczLDggQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJh
dGlvblRpbWVvdXQgeyA1X3MgfTsKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJM
JiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9zZXNzaW9u
UHJlZmV0Y2hlcykKLSAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9u
UHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hDYWNo
ZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAg
bV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwor
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmws
IG1ha2VVbmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2UpLCBXVEZN
b3ZlKGJ1ZmZlcikpKTsKICAgICAvLyBMaW1pdCBwcmVmZXRjaGVzIGZvciBzYW1lIHVybCB0byAx
LgogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKQEAgLTg2
LDkgKzg2LDkgQEAgdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RV
cmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6
c3RvcmVSZWRpcmVjdChjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAgICAgICBt
X3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+
KCk7CisgICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50
cmllc01hcD4oKTsKICAgICByZWRpcmVjdFJlcXVlc3QuY2xlYXJQdXJwb3NlKCk7Ci0gICAgbV9z
ZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0
Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVkaXJl
Y3RSZXF1ZXN0KSkpOworICAgIG1fc2Vzc2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0VXJsLCBt
YWtlVW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
LCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCkpKTsKICAgICBtX3Nlc3Npb25FeHBpcmF0aW9uTGlz
dC5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHJlcXVlc3RVcmwsIFdhbGxUaW1lOjpub3coKSkpOwog
ICAgIGlmICghbV9leHBpcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9leHBpcmF0
aW9uVGltZXIuc3RhcnRPbmVTaG90KGV4cGlyYXRpb25UaW1lb3V0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQppbmRleCAwNzdmMTZmYTY1MDY1MmM3ODdhNmYwMzE2MDkwOTAyNjhlYmI4YWMwLi5jY2UyNmFj
ZmIwNGNmNzA3NGU3NjNmNWJiYzhlNGE1ZTk4YTE1YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKIAogc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRm
b3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpzb3VyY2VBcHBs
aWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpCiBOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciYgTmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyKCkKIHsKICAgICBpZiAoIW1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpCi0g
ICAgICAgIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyPigpOworICAgICAgICBtX25ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4oKTsKICAg
ICByZXR1cm4gKm1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQppbmRleCA0YTYxZGYxNGRjZmYyZTZjM2QwZTA5MGVkM2U1MWNiNjAzMTVlNjQ0Li40Njg2
ODkzNWM2YzY0MmMyMDQ4Mjg4ZmJlMzg3OTAzYzAxMjgyMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CkBAIC04MDIsNyArODAyLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilz
ZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEKICAgICAgICAgUmVm
PE5ldHdvcmtEYXRhVGFza0NvY29hPiBwcm90ZWN0ZWROZXR3b3JrRGF0YVRhc2soKm5ldHdvcmtE
YXRhVGFzayk7CiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFzay0+cGVu
ZGluZ0Rvd25sb2FkSUQoKTsKICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gX3Nlc3Np
b24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgICAgIGF1dG8gZG93
bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdl
ciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdv
cmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgICAgIGF1dG8gZG93bmxvYWQg
PSBtYWtlVW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJ
RCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+
c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJT
YW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZCgqZG93bmxvYWQpOwogICAgICAgICBBU1NFUlQoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0
aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG5ldHdvcmtE
YXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CkBAIC04OTcsNyArODk3LDcgQEAg
dm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IE5l
dHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3JrUHJvY2Vz
cywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29ya1Nl
c3Npb25Db2NvYT4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiBz
dGF0aWMgTlNEaWN0aW9uYXJ5ICpwcm94eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJveHks
IGNvbnN0IFVSTCYgaHR0cHNQcm94eSkKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJTb2NrZXRU
YXNrKE5ldHdvcmtTCiB7CiAgICAgLy8gRklYTUU6IFVzZSBwcm90b2NvbC4KICAgICBSZXRhaW5Q
dHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzaz4gdGFzayA9IFttX3Nlc3Npb25XaXRoQ3JlZGVu
dGlhbFN0b3JhZ2UuZ2V0KCkgd2ViU29ja2V0VGFza1dpdGhSZXF1ZXN0OiByZXF1ZXN0Lm5zVVJM
UmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9k
eSldOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWws
IFdURk1vdmUodGFzaykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNo
YW5uZWwsIFdURk1vdmUodGFzaykpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFk
ZFdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5kZXgg
YmU2ODAxZjMwY2RmNDkwMDI1NGMyMjRiOWIxMWZiZGY3M2ZlMmUzMS4uNWJlMTcwMjY2ZjQ1Yjhi
ZjcyZWY1NmIxMDA4N2NiNTliYjU2ZGJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3JlYXRlRGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChj
b25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5nJiBob3N0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtT
ZXNzaW9uQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtT
ZXNzaW9uQ3VybC5oCmluZGV4IGQ0NzA5YTVlNGFjOGEyZmI2YWNlYjU2YzU3ZWJmMGI1Yzc0MGQ0
NTYuLmUxOGE0MzkwYjE4OGEyN2U5MzE4YzUyNDA0NTVmMDY0Y2Y2YmQ2NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJs
LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25DdXJsIGZpbmFsIDogcHVi
bGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+KG5ldHdvcmtQ
cm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7
CiAgICAgfQogICAgIE5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkN1cmwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0KaW5kZXggMjM3NDUyODhhMDZk
MDExNDU5MTk2OGI1MDg2ZGViNWY0NWFhMGFjNi4uYzhiODZjNTExMTM3ZTM3NGVjMGJlMGMwZWI1
YjNmZWI0ZjA5YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0K
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRv
cigpCiB7CiAgICAgaWYgKCFtX3BheW1lbnRDb29yZGluYXRvcikKLSAgICAgICAgbV9wYXltZW50
Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
PigqdGhpcyk7CisgICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogICAgIHJldHVybiAqbV9wYXltZW50Q29v
cmRpbmF0b3I7CiB9CiAKQEAgLTgyLDcgKzgyLDcgQEAgY29uc3QgU3RyaW5nJiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb24K
IAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblBy
ZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYgY29vcmRpbmF0b3IsIFBLUGF5bWVu
dFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVu
dEF1dGhvcml6YXRpb25Db250cm9sbGVyPihjb29yZGluYXRvciwgcmVxdWVzdCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPihjb29yZGluYXRv
ciwgcmVxdWVzdCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBh
eW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVjZWl2ZXIm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGQ0NmM1MDNkODFlOTgzNGU1ZDJhMjU2NjBjODcyM2Vh
ZTdlMTcwZWMuLjRmYWNjODIxM2VmODUwNWNmOWQ1NDhiMjNjNTY2ZGQzZDBiZTBhYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKQEAgLTg5Nyw3ICs4OTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OmRvd25sb2FkKCkKICAgICBtX2Rvd25sb2FkT3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdf
T1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7CiAKICAgICBhdXRvJiBkb3du
bG9hZE1hbmFnZXIgPSBtX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2Vy
KCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KGRvd25s
b2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lv
bklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5p
cXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlz
LCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRv
KiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwogICAgIGRvd25sb2FkTWFuYWdlci5kYXRh
VGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3ZlKGRvd25s
b2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rv
d25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCA4M2MyZjI4ZWE1YzcwMzRkYWE3
ZGI2NDYyMWI0NDRlZGQ1ZDk2YWY5Li43YTc0ODFmN2Q0MjVmMDIzMzdhMGMxMGFkZjlkNjU0Zjcw
ZWM3ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3Bw
CmluZGV4IDMwZmM4YTUzNTVkMDg0NTJhYzM2MWIxZGNlYTk3Yzg0ZjM2MDdmZWQuLjQwNzM2MWYw
MzZlNzk4OTE3NjdkODA3ZmJiNjNjOTA0NGIyNjBhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOZXR3b3JrU2Vzc2lvblNv
dXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IE5ldHdv
cmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzKQotICAgICwgbV9uZXR3b3JrU2Vz
c2lvbihzdGQ6Om1ha2VfdW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lvbj4obV9zZXNzaW9uSUQpKQor
ICAgICwgbV9uZXR3b3JrU2Vzc2lvbihtYWtlVW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lvbj4obV9z
ZXNzaW9uSUQpKQogewogICAgIGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKCk7CiAgICAgQVNTRVJUKHN0b3JhZ2VTZXNzaW9uKTsKQEAgLTEyNCw3ICsxMjQsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVh
dGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTbwogICAgIHJlcXVlc3QudXBkYXRlU291cE1lc3NhZ2Uo
c291cE1lc3NhZ2UuZ2V0KCksIGJsb2JSZWdpc3RyeSgpKTsKICAgICBpZiAocmVxdWVzdC51cmwo
KS5wcm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzb3VwTWVzc2Fn
ZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKHdlYlNvY2tldE1lc3NhZ2VOZXR3
b3JrRXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdlLmdldCgp
LCBwcm90b2NvbCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5l
bCwgc291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggZjllZjRiYjU0MzBiYmY3M2IwNGEw
ZTNiZWMyNDc5MjhkNTllNzE2Yi4uNDY2YjI3ODJiZjkzYzc3MDcwZjc5N2RkMzY1MjM0Y2MxZGUz
ZmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrU2Vzc2lvblNvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lv
blNvdXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTZXNz
aW9uU291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNzLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25Tb3VwKE5ldHdvcmtQ
cm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgfk5ldHdv
cmtTZXNzaW9uU291cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCmluZGV4
IGZjYWIwOGZjMWJkOGUzMzgyM2JmZTc0YzdmZDk3NjkwZjU4NjRjZjMuLjg3NDUyNWUzOGNlNzA0
ZWJlMWRhYTcxMGJiNTVjMDFjYzA1OGVhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0
cmVhbS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtUmVhZEFzeW5jKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIHZvaQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFk
ID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBidWZmZXIs
IGNvdW50KTsKKyAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBtYWtlVW5pcXVl
PEFzeW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291bnQpOwogfQogCiBzdGF0
aWMgZ3NzaXplIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkRmluaXNoKEdJbnB1dFN0
cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtN
RE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZWRiNWY1MWYwYTUzNTBjZTU1NmI5ZTI5MjQ2OWIz
YjllMDM3MWYwYi4uOTI2NjY4YzM4ZmZmNzA4YWU1MDJmNThmZDQxNTI4ODAzZWM1NTVjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNS
ZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtNRE5T
UmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFBB
TDo6U2VzcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZW5kaW5nUmVxdWVz
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1ha2VSZWYo
bV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKG5h
bWUpLCBzZXNzaW9uSUQpOworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5pcXVlPFBl
bmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKICAgICBh
dXRvKiByZWNvcmQgPSAmcGVuZGluZ1JlcXVlc3QtPnJlY29yZDsKICAgICBhdXRvIGVycm9yID0g
RE5TU2VydmljZVJlZ2lzdGVyUmVjb3JkKHNlcnZpY2UsCiAgICAgICAgIHJlY29yZCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25p
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENN
b25pdG9yLmNwcAppbmRleCAzNTNlYWM4Y2UxMWI2OTA2ZWZhZGQyZmQyNzE4Yjk3YWI1MmNkYTRk
Li5hYjcwNmRjMmU5MzRhOWE3ZWY5OTI2ODk3OTc0YmRjNzU0ZWEzZGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0
b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgTmV0d29ya1JUQ01vbml0b3I6OnN0YXJ0VXBk
YXRpbmcoKQogewogICAgIG1faXNTdGFydGVkID0gdHJ1ZTsKICAgICBtX3J0Y1Byb3ZpZGVyLmNh
bGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdKCkgewotICAgICAgICBtX21hbmFnZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAgbV9tYW5h
Z2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdvcmtN
YW5hZ2VyPigpOwogICAgICAgICBtX21hbmFnZXItPlNpZ25hbE5ldHdvcmtzQ2hhbmdlZC5jb25u
ZWN0KHRoaXMsICZOZXR3b3JrUlRDTW9uaXRvcjo6b25OZXR3b3Jrc0NoYW5nZWQpOwogICAgICAg
ICBtX21hbmFnZXItPlN0YXJ0VXBkYXRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3Bw
CmluZGV4IGE1YWM1NzIxMzc5ZGIzZDFiMjU4NzU1ODYxMDMwYmJhNGRiOWViOGUuLjE1ZDQ0ZDBh
ZDlkYjBmM2IwNTk5ZTFhMzNlZmNmZGI4OTYxYTY1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcApA
QCAtNjAsNyArNjAsNyBAQCBOZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92aWRlcihO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbgogICAgIDogbV9jb25uZWN0
aW9uKCZjb25uZWN0aW9uKQogICAgICwgbV9ydGNNb25pdG9yKCp0aGlzKQogICAgICwgbV9ydGNO
ZXR3b3JrVGhyZWFkKGNyZWF0ZVRocmVhZCgpKQotICAgICwgbV9wYWNrZXRTb2NrZXRGYWN0b3J5
KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRjTmV0d29y
a1RocmVhZC5nZXQoKSkpCisgICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1f
cnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCiB7CiAjaWYgZGVmaW5lZChOREVCVUcpCiAgICAgcnRj
OjpMb2dNZXNzYWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfTk9ORSk7CkBAIC0xMDQsNyArMTA0LDcg
QEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNvY2tldCh1aW50NjRfdCBpZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjoKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBl
KSk7CisgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0
Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7CiB9CiAK
IHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQodWludDY0X3QgaWRlbnRp
ZmllciwgY29uc3QgUlRDTmV0d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3Qg
bWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIE5ldHdv
cmtSVENQcm92aWRlcjo6d3JhcE5ld1RDUENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRpZmllciwg
dWludDY0X3QgbmV3QwogewogICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMsIGlkZW50
aWZpZXIsIG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCA9IG1fcGVuZGluZ0luY29t
aW5nU29ja2V0cy50YWtlKG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKTsKLSAgICAgICAg
YWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Q2xp
ZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRD
bGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsKKyAgICAgICAgYWRkU29ja2V0KGlk
ZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAq
dGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZl
ckNvbm5lY3Rpb25UQ1ApKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmNwcAppbmRleCAzODM4MmIwOWQ0ZmIzYmUyNjRmODliNzc4NDFhNDFkN2Mw
OGNhYzA1Li5jNWVmNmQ5OWE1NjBkZDE0ODhmMTg0OTk1YWU4YTdiMTZkOWFkMjU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBA
IHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdl
KFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIHJlcGx5RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5j
TWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29kZXIgPSBt
YWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1ZXN0
SUQpOwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2RlciB0byB0
aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3NhZ2VSZWNl
aXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7
CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5RGlzcGF0
Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gQ29ubmVj
dGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2RlciA9IHN0
ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUs
IGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4o
bWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwogICAgIGVu
Y29kZXItPnNldElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhlIHN5bmMg
cmVxdWVzdCBJRC4KQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVuYWJsZUlu
Y29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKCkKICAgICBpZiAobV9pbmNvbWluZ01lc3NhZ2VzVGhy
b3R0bGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luY29taW5nTWVzc2FnZXNUaHJvdHRs
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNvbm5lY3Rp
b246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk7CisgICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhy
b3R0bGVyID0gbWFrZVVuaXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0aW9u
OjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMpOwogfQogCiB2b2lkIENvbm5lY3Rpb246OnBvc3RD
b25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtODQzLDcgKzg0Myw3
IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1
ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBD
IiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gIldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIikgewogICAgICAgICBpZiAoIW1fZnVs
bHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggMjBmNWVjNWIyMDJiZWMyYmRmNThmMDIwZWJkZWVm
ODMxNDkzMTFiZi4uYWRjNGFhZDk4ODE4ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDMzLDcgKzQzMyw3IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3lu
YywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVy
TmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZSht
ZXNzYWdlLmFyZ3VtZW50cygpKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92
ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQ29ubmVj
dGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRs
ZXIsIHVpbnQ2NF90CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNz
YWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNv
ZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgpLCBUOjpu
YW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBuZXh0QXN5
bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklEKTsKICAg
ICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IGNjYTA3MzkwYWRlYzQ0NmRlNzQ2NmNmOGUxMDEyM2My
NzkzODUzNTIuLmZkNTE3MDE3MTJiMDYyOWQ0NzI1MmQwNDA4OTZjNjRmY2JjYmIyYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IERlY29kZXI6OnVud3JhcEZvclRlc3RpbmcoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdyYXBwZWRNZXNzYWdlKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVy
Pih3cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwg
V1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZXI+KHdy
YXBwZWRNZXNzYWdlLmRhdGEoKSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRyLCBXVEZN
b3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhfdCogcm91
bmRVcFRvQWxpZ25tZW50KGNvbnN0IHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25tZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDg1NDUyY2Rh
N2UwNDVlNDQ1NWUwN2I5M2JhZmNhMzViMTAyMDAxMWUuLmE3NDlhYWI4NzAwNTRjZWI2OTBlNWYx
NGY0MDc1NjNmZmNkMGY5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GCiAgICAg
fQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtsaXN0
ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAo
YXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1l
KCksIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJBc3lu
Y1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAqZW5jb2Rl
ciA8PCBsaXN0ZW5lcklEOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2RlciksIFdURk1v
dmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggM2Q2ZjM0Mjg5MmJjODgzOTA2NzhlOGMzNjQ2Mzkx
MTBkZTRmNTcyNi4uNzcxNDQ4YTQ0ZDA4ODZkZDAxYmIwYzJkZTY0ZGM5YTQyODYyN2EyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDMsNyArNDMs
NyBAQCBjbGFzcyBNZXNzYWdlU2VuZGVyIHsKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
IVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVuY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCks
IGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29k
ZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgICAg
ICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1t
CmluZGV4IDM3MDJhY2M3ZGY1MWJkODQ2YjkzYWY2NGJmMDcwYTRjMTAwMzkxOWYuLjg3ZGQyOGY4
MDg2NzgyY2UyYTNkZjc5MGY0YWMwZTZkNzQ5ZGFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTkyLDcgKzkyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlvbikKICAg
ICAgICAgLCBtX3dhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29ubmVjdGlv
blRlcm1pbmF0aW9uV2F0Y2hkb2c6OndhdGNoZG9nVGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICAgICAsIG1fYXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94cGNDb25u
ZWN0aW9uLmdldCgpKSwgIkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBXZWJLaXQ6
OkFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kKSkKKyAgICAgICAgLCBtX2Fzc2VydGlvbihtYWtl
VW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlvbl9nZXRf
cGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25XYXRjaGRv
ZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCiAjZW5kaWYKICAgICB7
CiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpAQCAtMjIw
LDcgKzIyMCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXNDb25uZWN0
ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6ZSBtZXNz
YWdlLCB3aGljaCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8gdXNlLgot
ICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAi
SW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVu
aXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CiAgICAgICAg
IGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19UWVBFX01B
S0VfU0VORCkpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC00MTIsNyAr
NDEyLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNzYWdlRGVj
b2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBib2R5ID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNpemVfdCBi
b2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRlcl90KTsK
IAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihib2R5LCBib2R5U2l6
ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPERlY29kZXI+KGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0YWNobWVu
dD4geyB9KTsKICAgICB9CiAKICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFkZXItPm1z
Z2hfaWQgPT0gb3V0T2ZMaW5lQm9keU1lc3NhZ2VJRDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1hY2hfbXNn
X2hlYWRlcl90KiBoZWFkZXIpCiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MpOwogICAgICAg
ICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuc2l6ZTsK
IAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwg
bWVzc2FnZUJvZHlTaXplLCBbXShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBsZW5ndGgp
IHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3Nh
Z2VCb2R5U2l6ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7CiAg
ICAgICAgICAgICB2bV9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm1fYWRkcmVzc190PihidWZmZXIpLCBsZW5ndGgpOwogICAgICAgICB9LCBXVEZNb3ZlKGF0
dGFjaG1lbnRzKSk7CiAgICAgfQpAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGhl
YWRlcikKICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwogICAgIHNp
emVfdCBtZXNzYWdlQm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlwdG9yRGF0
YSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgbnVs
bHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29k
ZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNo
bWVudHMpKTsKIH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFsd2F5cyBp
bmNsdWRlIHRoZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lk
IENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICByZXR1cm47
CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFzc2VydGlv
bihzdGQ6Om1ha2VfdW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOworICAgIGRl
Y29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNlQXNzZXJ0
aW9uPihoZWFkZXIpKTsKICNlbmRpZgogCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0aWFsaXpl
Q29ubmVjdGlvbiIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3Vu
aXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjNiNmJlNzI3MWU0NDU4ODM5NTA1YWE5MTVlMzg3M2Y4
NTE0ZGVkZC4uNzdhZjliMjg1ODQ1MjZiYjcwYzdmZmM4ZTMyNTZhM2JhYTEzYTI4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAK
QEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKCkKICAg
ICBpZiAobWVzc2FnZUluZm8uaXNCb2R5T3V0T2ZMaW5lKCkpCiAgICAgICAgIG1lc3NhZ2VCb2R5
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEoKSk7CiAK
LSAgICBhdXRvIGRlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5
LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7
CisgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVz
c2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogCiAg
ICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIApAQCAtNDgyLDcg
KzQ4Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2Um
IG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVycm5v
ID09IEVBR0FJTiB8fCBlcnJubyA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElCKQotICAg
ICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5peE1l
c3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOworICAgICAgICAgICAgbV9wZW5kaW5nT3V0
cHV0TWVzc2FnZSA9IG1ha2VVbmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2Fn
ZSkpOwogICAgICAgICAgICAgbV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9zb2NrZXQuZ2V0
KCksIEdfSU9fT1VULCBtX2Nvbm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikgLT4gZ2Jv
b2xlYW4gewogICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkgewogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQobV9wZW5kaW5nT3V0cHV0TWVzc2FnZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggNjQw
ZjQ1Mjk5ZTNiMjY2ZTAyNjljY2NjYzk0NTJiM2JhNTc5ZWZiMS4uNWFkZmQ4MmJlY2E0NmRiMDI0
NDdlOGJjYjZkMzg0YzJjMDE1NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgQ29ubmVj
dGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVyLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRpc3BhdGNo
IGl0LgogICAgICAgICAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKDApOwotICAg
ICAgICAgICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtX3JlYWRC
dWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFj
aG1lbnRzKSk7CisgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERlY29kZXI+
KG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIsIFdURk1v
dmUoYXR0YWNobWVudHMpKTsKICAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RG
TW92ZShkZWNvZGVyKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KaW5kZXggODIzMmRiNGViNTZlYWNiNmY4Y2U4
NTU2NjRiOGI3ODJhYjY1MGE5OC4uN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdmMDJiMDRj
ZjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5n
Q29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdD
b250ZXh0Lm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRl
Rm9yUG9ydChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQogewotICAgIGF1dG8gbGF5
ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4o
KTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGlu
Z0NvbnRleHQ+KCk7CiAKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewogICAgICAgICBr
Q0FDb250ZXh0UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCkBAIC01Miw3
ICs1Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3Rp
bmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hCiAjaWYgSEFWRShPVVRfT0ZfUFJPQ0VT
U19MQVlFUl9IT1NUSU5HKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IExh
eWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MoY29uc3Qg
TGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsYXllckhv
c3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwor
ICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4oKTsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01vZGUgPSBM
YXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCkBAIC04Miw3ICs4Miw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JF
eHRlcm5hbEhvc3RpCiAjaWYgUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9z
dGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsUGx1Z2lu
SG9zdGluZ1Byb2Nlc3MoKQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGlu
Z0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5ZXJI
b3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0
T2ZQcm9jZXNzOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtDQUNvbnRl
eHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBvcHRpb25z
OkB7IGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwogICAgIHJldHVy
biBsYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMzY2Yjk4M2NjMGJlYTU4Mzg2M2E3
Y2Q2MzMzZjk0OGRmNzQ4NDQzNS4uY2U4MjY3ZDJlZTc4Y2FjYjNkZGEwYTliMzc1YmZhYWZjNjg2
ZWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3Ry
aW4KIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwoY29u
c3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIGJvb2wmIHJl
c3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50
SUQpCiB7Ci0gICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJhbWV0ZXJzKTsKKyAgICBh
dXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1ha2VVbmlxdWU8UGx1Z2luQ29udHJvbGxlclBy
b3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOwogCiAgICAgUGx1Z2luQ29udHJvbGxlclBy
b3h5KiBwbHVnaW5Db250cm9sbGVyUHJveHlQdHIgPSBwbHVnaW5Db250cm9sbGVyUHJveHkuZ2V0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRleCBiYmQ0MjNiY2Y1NzE1ZTRhZDcw
YmY1MmRlZjhjMmMzMGM0MWJmMGY2Li4zZTYxYmJkMDAwZTFmNGNkYjZjMmEzNmNhNGY3NWU5MDRm
ODM1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCkBAIC00NCw3ICs0NCw3IEBAIGNs
YXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAgICAgewog
ICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNlVVJMSWZOZWNl
c3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RG
OjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOworICAgICAg
ICBhdXRvIGFic29sdXRlVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVSTD4oKmJhc2VVUkwtPm1fcGFy
c2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBh
YnNvbHV0ZVVSTFN0cmluZyA9IGFic29sdXRlVVJMLT5zdHJpbmcoKTsKIAogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJzb2x1dGVV
UkxTdHJpbmcpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0
SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgaWYgKG1fcGFyc2VkVVJM
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6bWFrZV91
bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKKyAgICAgICAgbV9wYXJzZWRV
UkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgpLCBtX3N0cmluZyk7CiAgICAgfQog
CiAgICAgV1RGOjpTdHJpbmcgbV9zdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCmluZGV4IDI1OTI4NDdl
MzQxYTNiNmY3Mjg3NTRiZDc4OGE2NjUzZGQyMjE1YjAuLmQzZmY2MjFlYzBmNGExMGQ3NTY0ODdj
YzIxNmY0OTVjZTg2ZDcyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCkBAIC04Myw3ICs4Myw3IEBAIGJv
b2wgUmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
UmVtb3RlT2JqZWN0SW52b2NhdGlvCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYmxvY2tT
aWduYXR1cmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5t
X3JlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbHlJbmZvPihyZXBseUlELCBXVEZNb3Zl
KGJsb2NrU2lnbmF0dXJlKSk7CisgICAgICAgIHJlc3VsdC5tX3JlcGx5SW5mbyA9IG1ha2VVbmlx
dWU8UmVwbHlJbmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggNjVkYTllZmYwMWI0M2Vh
NTcxMDgwMmY2YzQ2YTZkMDIwMjY1NjkzZS4uNDg5OTc2MjkzMmI3YWY2OTIyMWQwNTBhZjY3NDU4
MzZmYzM4N2IwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIC0gKGlk
KV9pbml0V2l0aFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSYpcGFnZQogICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90ZU9iamVj
dFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5
PihzZWxmLCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdl
YktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CkBAIC0xMTksNyArMTE5LDcgQEAgLSAoaWQpX2luaXRXaXRoV2ViUGFnZVByb3h5OihX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdlKTsK
KyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2Jq
ZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xNjAs
NyArMTYwLDcgQEAgLSAodm9pZClfc2VuZEludm9jYXRpb246KE5TSW52b2NhdGlvbiAqKWludm9j
YXRpb24gaW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnQKICAgICAgICAgaWYgKHN0cmNtcChb
TlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUJsb2NrU2lnbmF0
dXJlXS5tZXRob2RSZXR1cm5UeXBlLCAidiIpKQogICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlJldHVybiB2YWx1ZSBvZiBi
bG9jayBhcmd1bWVudCBtdXN0IGJlICd2b2lkJy4gKCVzKSIsIHNlbF9nZXROYW1lKGludm9jYXRp
b24uc2VsZWN0b3IpXTsKIAotICAgICAgICByZXBseUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRl
bnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKKyAgICAgICAgcmVwbHlJbmZvID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5mbz4oZ2VuZXJh
dGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CiAKICAgICAgICAgLy8g
UmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0IHRyeSB0byBlbmNvZGUgaXQuCiAg
ICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggN2VkMTFlNmMxNzFl
MjBiZTFlOWVhZGIzMDdlNzFmYzQ4YmZkZTg0OS4uZmFlZmVkMmRjYzgzOGVlOTU3MzkwNjVkYWM2
M2YxMzU2M2YwZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Z2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC05NCw3ICs5NCw3IEBAIFdlYktpdENv
bnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKGNvbnN0IFdlYkNvbnRl
eHRNZW51SXRlbURhdGEmCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VC
S0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01F
TlVfSVRFTSwgTlVMTCkpOwogCi0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKKyAgICBpdGVtLT5wcml2
LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oaXRlbURhdGEp
OwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgc3ViTWVudSA9IGl0
ZW1EYXRhLnN1Ym1lbnUoKTsKICAgICBpZiAoIXN1Yk1lbnUuaXNFbXB0eSgpKQogICAgICAgICB3
ZWJraXRDb250ZXh0TWVudUl0ZW1TZXRTdWJNZW51KGl0ZW0sIGFkb3B0R1JlZih3ZWJraXRDb250
ZXh0TWVudUNyZWF0ZShzdWJNZW51KSkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdlYktpdENvbnRl
eHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyhHdGtBY3Rpb24qIGFjdGlv
bikKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChHVEtfSVNfQUNUSU9OKGFjdGlvbiksIG51bGxw
dHIpOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRf
TUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVs
bHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0g
bWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOwogCiAgICAgcmV0dXJu
IGl0ZW07CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJr
aXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbihHQWN0aW9uKiBhY3Rpb24KICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbCghdGFyZ2V0IHx8IGdfdmFyaWFudF9pc19vZl90eXBlKHRh
cmdldCwgZ19hY3Rpb25fZ2V0X3BhcmFtZXRlcl90eXBlKGFjdGlvbikpLCBudWxscHRyKTsKIAog
ICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRF
TShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsK
LSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKKyAg
ICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xp
Yj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKIAogICAgIHJldHVy
biBpdGVtOwogfQpAQCAtMTk0LDcgKzE5NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Vi
a2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbihXZWJLaXRDb250CiAK
ICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lU
RU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7
CiAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25J
c0NoZWNrYWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0g
ICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51
SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlv
biksIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CisgICAgaXRlbS0+
cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUs
IHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdlYmtpdENvbnRl
eHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAg
LTIxNiw3ICsyMTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21l
bnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9sYWJlbAogCiAgICAgV2ViS2l0Q29u
dGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAgIENvbnRleHRN
ZW51SXRlbVR5cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVja2FibGUoYWN0
aW9uKSA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0ZW0tPnByaXYt
Pm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBl
LCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBTdHJpbmc6OmZy
b21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdl
YkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0
aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKIAogICAgIHJldHVybiBp
dGVtOwogfQpAQCAtMjM5LDcgKzIzOSw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2NoYXIqIGxhCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0g
V0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhU
X01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBlLCBDb250ZXh0TWVu
dUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKKyAgICBp
dGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4o
QWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnLCBTdHJpbmc6OmZy
b21VVEY4KGxhYmVsKSk7CiAgICAgaXRlbS0+cHJpdi0+c3ViTWVudSA9IHN1Ym1lbnU7CiAgICAg
d2Via2l0Q29udGV4dE1lbnVTZXRQYXJlbnRJdGVtKHN1Ym1lbnUsIGl0ZW0pOwogCkBAIC0yNTYs
NyArMjU2LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0
ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEKIFdlYktpdENvbnRleHRNZW51SXRl
bSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3Iodm9pZCkKIHsKICAgICBX
ZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAg
aXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRl
bUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmco
KSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51
SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJp
bmcoKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbQppbmRleCA3YWQzMzMxNDUzOTE4ODg5ZmQzYjk4OTYzODZhOGJlZDFmNTE5YTE0Li4z
OTE0YTRjMjAxNGE5YTU0YTYzNDg4YTRlNzQzODE5YzZhOGRiM2FmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0
aW5nVVJMCiAKICAgICAgICAgQVNTRVJUKHZpZXdDb250cm9sbGVyKTsKIAotICAgICAgICBwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigqcGF5bWVudENvb3Jk
aW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJvbGxlcik7CisgICAg
ICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBt
YWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXltZW50Q29v
cmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVyKTsKIAog
ICAgICAgICBBU1NFUlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93KTsK
ICAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cgPSBbTlNXaW5k
b3cgd2luZG93V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0K
aW5kZXggYjAwMjBlZGU0NzhjMWNlNTNiMTA2ZWVjY2ZlMjY0MzAxMmE0NmRmYi4uNmVkZTE3YjJj
YTkyODFmODA1MjY5NWUxZmYzMmEwOTIzOGFhOGNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMTUzLDcgKzE1Myw3
IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKSAtPiBPcHRpb25hbDxIYW5kbGU+CiAgICAgICAgIHJldHVybiB7eyB9fTsKIAogICAg
IEhhbmRsZSBoYW5kbGU7Ci0gICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2FuZGJveEV4dGVuc2lvbkltcGw+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgIGhh
bmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBtYWtlVW5pcXVlPFNhbmRib3hFeHRlbnNpb25JbXBs
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSksIGRh
dGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggMThkYzJmYjhlZDEz
ZDE1MzQxMmVhMzBlMjkxMTE3OGVhY2VmYzVhZS4uNzA0MzBmNDQzMTJjOGE1NjJjZTE1ZmM3MzJm
NjlkMzg3NmZlOWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cApAQCAtMTI1LDcgKzEyNSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciYgdGV4bWFwTGF5ZXIoTmlj
b3NpYTo6Q29tcG9zaXRpb25MYXllciYgY29tcG9zaXRpb25MYXllcikKIHsKICAgICBhdXRvJiBj
b21wb3NpdGlvblN0YXRlID0gY29tcG9zaXRpb25MYXllckltcGwoY29tcG9zaXRpb25MYXllciku
Y29tcG9zaXRpb25TdGF0ZSgpOwogICAgIGlmICghY29tcG9zaXRpb25TdGF0ZS5sYXllcikgewot
ICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJl
TWFwcGVyTGF5ZXI+KCk7CisgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICAgICAgY29tcG9zaXRpb25TdGF0ZS5sYXll
ci0+c2V0SUQoY29tcG9zaXRpb25MYXllci5pZCgpKTsKICAgICB9CiAgICAgcmV0dXJuICpjb21w
b3NpdGlvblN0YXRlLmxheWVyOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXllcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9yb290TGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1
cmVNYXBwZXJMYXllcj4oKTsKKyAgICBtX3Jvb3RMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1h
cHBlckxheWVyPigpOwogICAgIG1fcm9vdExheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsK
ICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBtX3Jvb3RMYXll
ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9y
L1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4
IGNkM2U1N2M2YmNiOWQ4ZGMxZmY5OWNhZDU5YzRlMTNmZjY2MDNhNmIuLmJjYjIzNTk3NWIxMzNk
MmUyNzY3NmQyODNmZTg5MTM4MWEwZDVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9z
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtNTMsNyArNTMsNyBA
QCBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0ZShDbGll
bnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbAogVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJlYWRlZENv
bXBvc2l0b3IoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25pdG9yOjpD
bGllbnQmIGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCwgUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlELCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWxlRmFjdG9yLCBU
ZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIHBhaW50RmxhZ3MpCiAgICAgOiBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX3BhaW50RmxhZ3MocGFpbnRGbGFncykKLSAgICAsIG1fY29tcG9zaXRpbmdS
dW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10geyByZW5k
ZXJMYXllclRyZWUoKTsgfSkpCisgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChtYWtlVW5pcXVl
PENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQogI2lm
IFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgLCBtX2Rp
c3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y3JlYXRl
KGRpc3BsYXlJRCwgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KSkKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAppbmRl
eCA2MWUxZjk0MDI1MjM4NWRiODA1ZWMxMjJkZmYxYzllNGYxYjcyNTYzLi5kNGI1MjRjODI5ZWM2
NjcyMWRmMWE3MGQyZDUxM2FlNGViM2YzZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lk
IE5QUmVtb3RlT2JqZWN0TWFwOjpucE9iamVjdFByb3h5RGVzdHJveWVkKE5QT2JqZWN0KiBucE9i
amVjdCkKIHVpbnQ2NF90IE5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KE5QT2Jq
ZWN0KiBucE9iamVjdCwgUGx1Z2luKiBwbHVnaW4pCiB7CiAgICAgdWludDY0X3QgbnBPYmplY3RJ
RCA9IGdlbmVyYXRlTlBPYmplY3RJRCgpOwotICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0cy5zZXQo
bnBPYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcj4odGhp
cywgcGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCkucmVsZWFzZSgpKTsKKyAgICBtX3JlZ2lz
dGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIG1ha2VVbmlxdWU8TlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVhc2UoKSk7
CiAKICAgICByZXR1cm4gbnBPYmplY3RJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAK
aW5kZXggN2IwMmI1ZTEyZjMyYzcyZDM4ZjUyMDQ1YmI2ZDZhMjNiNjJhZTJlMS4uMjYxZDdhODk2
OTMwNmE4OTI1YzRhYjM2ZTQ3OTQ3YjM5NmMxMjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgYm9vbCBtb2R1bGVNaXhlc0d0a1N5bWJv
bHMoTW9kdWxlKiBtb2R1bGUpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRyeUxvYWQo
KQogewotICAgIG1fbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0
aCk7CisgICAgbV9tb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obV9wbHVnaW5QYXRoKTsKICAg
ICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDFmMmRlNGQwMzdlYTNlODMwMjg3YWI5
OGNiMmE4ZjIxYzRlY2VhMmUuLjBkMjI3ZmZjMWQ5YzU1NTZhYWQ5MmU3ZWUxNTc2NWUxNmIzNDQy
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTE1MiwxMyArMTUy
LDEzIEBAIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVy
UHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRpCiAgICAgLy8gRklYTUU6IExheWVyUHJvcGVy
dGllcyBzaG91bGRuJ3QgYmUgY29weWFibGU7IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y2xvbmUg
c2hvdWxkIGNvcHkgdGhlIHJlbGV2YW50IHByb3BlcnRpZXMuCiAKICAgICBpZiAob3RoZXIudHJh
bnNmb3JtKQotICAgICAgICB0cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKKyAgICAgICAgdHJhbnNmb3Jt
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnRyYW5z
Zm9ybSk7CiAKICAgICBpZiAob3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pCi0gICAgICAgIHN1Ymxh
eWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKKyAgICAgICAgc3VibGF5ZXJUcmFuc2Zv
cm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3Vi
bGF5ZXJUcmFuc2Zvcm0pOwogCiAgICAgaWYgKG90aGVyLmZpbHRlcnMpCi0gICAgICAgIGZpbHRl
cnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5m
aWx0ZXJzKTsKKyAgICAgICAgZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIAotICAgICAgICByZXN1bHQudHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAgcmVzdWx0
LnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRy
YW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIFN1
YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCkgewpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFuc2Zvcm0pKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5z
Zm9ybSk7CisgICAgICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYg
KHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEhpZGRlbkNoYW5nZWQpIHsKQEAgLTQyNSw3ICs0
MjUsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocm91bmRlZFJlY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAg
ICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICAgICAgcmVzdWx0LnNoYXBlUm91
bmRlZFJlY3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRS
ZWN0KTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgU2hhcGVQ
YXRoQ2hhbmdlZCkgewpAQCAtNDcxLDcgKzQ3MSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNGcm9udEJ1ZmZlcikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChoYXNGcm9udEJ1ZmZlcikgewotICAgICAgICAg
ICAgYXV0byBiYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlPihudWxscHRyKTsKKyAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3JlID0gbWFrZVVu
aXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7CiAgICAgICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKCpiYWNraW5nU3RvcmUpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIApAQCAtNDg2LDcgKzQ4Niw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgRmlsdGVy
c0NoYW5nZWQpIHsKLSAgICAgICAgYXV0byBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpGaWx0ZXJPcGVyYXRpb25zPigpOworICAgICAgICBhdXRvIGZpbHRlcnMgPSBtYWtlVW5p
cXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoKmZpbHRlcnMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXN1
bHQuZmlsdGVycyA9IFdURk1vdmUoZmlsdGVycyk7CkBAIC02MDIsNyArNjAyLDcgQEAgYm9vbCBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
UmVtb3RlTGF5ZXJUcmVlVHIKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5
ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyUHJv
cGVydGllcz4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGllcz4gbGF5
ZXJQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKmxheWVyUHJvcGVydGllcykpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uLmNwcAppbmRleCA5NzhjNGJiZWQ3YjVjZDkxY2FhZWMxNTRiYzhiYTE0YmFiNzUzNDYx
Li5lODI2YTMwYjEyZTI0ZWNmNDMwYzY5Yjc2YjFhNmYyOGY1YmI5OGQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBAIC01MjIs
NyArNTIyLDcgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFz
TmV3Um9vdE5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgbV9zY3JvbGxp
bmdTdGF0ZVRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKKyAg
ICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigp
OwogCiAgICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydGllczsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc0NoYW5nZWRQcm9wZXJ0aWVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCBjNzM0N2M3OWU2NjkzODM3ODVk
MDVkMjI5ZTQ3Yjc0N2MxZjBjYTU1Li5iMmNkNDg0NjY3N2NlOTdkZmFjMjg1ODQ5MGMxZWE0MzRm
OTYyOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVC
aXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxl
Qml0bWFwQ2Fpcm8uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAg
ICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZSA9IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOwog
ICAgIFJlZlB0cjxjYWlyb190PiBiaXRtYXBDb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9fY3JlYXRl
KGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250
ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4
dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsK
IH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDkyZjEw
NjJiMjkwZjc3NWRiNWFlN2VkMTk1MmE5Y2E4NThhYjMxMjIuLjAxNmFiYmQ5OTNlMThhNDVjMDFh
N2YwNDk3ZGNjMzFhNTNiNDM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFy
ZWFibGVCaXRtYXBDRy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiAg
ICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDAsIG1fc2l6ZS5o
ZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwgMSwg
LTEpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihiaXRt
YXBDb250ZXh0LmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+
KGJpdG1hcENvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZGVzdGlu
YXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCmluZGV4IGQ2YTA0NTg2ZjQxMzJl
NWQ0YjU2OGNjMzM4OTQ2NjkwNjgwM2NkNWEuLmViNGNmNTcxOTEwMTRmMzE0ODY1NGZjZThjMzgy
YTBhMTMwNGVjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFi
bGVCaXRtYXBEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJl
YWJsZUJpdG1hcERpcmVjdDJELmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgp
CiB7CiAgICAgbV9iaXRtYXAgPSBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKTsKICAgICBDT01QdHI8
SUQyRDFSZW5kZXJUYXJnZXQ+IGJpdG1hcENvbnRleHQgPSBEaXJlY3QyRDo6Y3JlYXRlUmVuZGVy
VGFyZ2V0RnJvbVdJQ0JpdG1hcChtX2JpdG1hcC5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNy
ZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0
b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAppbmRleCA5ODFhOTg1YmJkZTVmMWNiNjVmOTZjYmIy
MTM5ZmJjZjE5ZDdkY2U1Li5lMTIyZWUzZWRiMWM0MjE5ZDFkODQxOTkzMjFhODAwM2Q1MmM4MjFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0
b3JlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpyZWdpc3Rl
ck9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKIAogICAgIEFTU0VSVCghbV9vYnNlcnZlZENv
b2tpZU1hbmFnZXJQcm94eSk7CiAKLSAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4oKnRoaXMp
OworICAgIG1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEFQSVdlYkNv
b2tpZU1hbmFnZXJQcm94eU9ic2VydmVyPigqdGhpcyk7CiAKICAgICBhdXRvKiBwb29sID0gbV9v
d25pbmdEYXRhU3RvcmUtPnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlvbnMoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggZDgz
YzZiOGY5ODA2OTYwMzYyNzZjYmFlZmQ1NDJkOGE2ZmQwY2QwMS4uNTRmNzdmMDA0Yzk3MWZjMWM4
NmU4ZjFjY2RhMGQzYjY4MDc4ZGM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiB3a0Ns
CiAKIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGll
bnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVkQnVuZGxl
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldElu
amVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVu
dEJhc2UqIHdrQ2xpZW50KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlz
dG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9y
eUNsCiAgICAgfTsKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sID0g
KldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpOwotICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOworICAgIHBy
b2Nlc3NQb29sLnNldEhpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0Ns
aWVudCkpOwogCiAgICAgYm9vbCBhZGRzVmlzaXRlZExpbmtzID0gcHJvY2Vzc1Bvb2wuaGlzdG9y
eUNsaWVudCgpLmFkZHNWaXNpdGVkTGlua3MoKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQg
V0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0
IFdLQ29udGV4dERvd25sb2FkCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV2ViS2l0Ojp0b0lt
cGwoY29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxv
YWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNl
dERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CiB9
CiAKIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4
dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IDExYjgzNGI0ZWUyYTlhNjg3NjI2YzczMmJmNThhNDg4MjNmNjMzNGEuLjg4
OGI3NWJjN2NlYzg5ZDE2ZTA3ZjYxN2U3YmIyY2UyOTc5ZmE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tHZW9sb2NhdGlvbk1hbmFnZXJHZXRUeXBlSUQoKQog
CiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tHZW9sb2NhdGlvbk1hbmFn
ZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBjb25zdCBXS0dlb2xvY2F0aW9uUHJvdmlkZXJC
YXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJSZWYpLT5z
ZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KHdrUHJv
dmlkZXIpKTsKKyAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIo
bWFrZVVuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9CiAKIHZv
aWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdLR2VvbG9j
YXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tHZW9sb2NhdGlvblBvc2l0
aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYjIyM2Q2Zjg3YmZhNWU5NmUz
ZTUwZGEyZGQ3OGZmMGQyZGQ0MTZjZS4uNzY5MjM5OTBhYjViOWVhMjEzODVmMWQzNTY5ZThiNTBh
YTdmNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLTm90
aWZpY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
U2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNvbnN0IFdL
Tm90aWZpY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChtYW5h
Z2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92
aWRlcj4od2tQcm92aWRlcikpOworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIo
bWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2
b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihXS05v
dGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAzOWQ2YjQyMTQ5
ZmFiMDYxY2U0ZGRmZTViMWMxN2UyOTgxZmRmYzNlLi42MWE2OWIxZjNhNmRhNzQ5NmFkNDcyNjk3
MGI4NWYyYzkxMTgxM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKQEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogICAgICAgICB9
CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGll
bnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsKICAgICBV
TlVTRURfUEFSQU0od2tDbGllbnQpOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VDb250
ZXh0TWVudUNsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudEJhc2Uq
IHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdr
Q2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dChtYWtlVW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4od2tDbGllbnQpKTsK
IH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtOTk1LDcgKzk5NSw3IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBh
Z2VSZWYpLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4od2tDbGll
bnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxGaW5k
Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0Ns
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGllbnRCYXNl
KiB3a0NsaWVudCkKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRN
YXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0Ns
CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5kTWF0Y2hl
c0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVudCkpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxGaW5k
TWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnVu
ZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlSW5qZWN0ZWRCdQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRm9ybUNsaWVu
dD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQobWFrZVVu
aXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJh
c2UqIHdrQ2xpZW50KQpAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9h
ZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNl
KgogCiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0b0ltcGwocGFnZVJlZik7CiAK
LSAgICBhdXRvIGxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyQ2xpZW50Pih3
a0NsaWVudCk7CisgICAgYXV0byBsb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPExvYWRlckNsaWVu
dD4od2tDbGllbnQpOwogCiAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRo
aXMgY29kZSBhbmQgdHJhbnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5z
dGVhZCBvZgogICAgIC8vIGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVk
CkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgIH0K
ICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5z
ZXRQb2xpY3lDbGllbnQobWFrZVVuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjA3NSw3ICsyMDc1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSog
d2tDbGllbnQKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnNldFVJ
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVudCkpOwog
fQogCiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0yNDUyLDcg
KzI0NTIsNyBAQCBjbGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxX
S1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZQogdm9pZCBXS1BhZ2VTZXRQYWdlU3Rh
dGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQog
ewogICAgIGlmIChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxvYWRTdGF0
ZU9ic2VydmVyKHN0ZDo6bWFrZV91bmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOworICAgICAg
ICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVlPFN0YXRl
Q2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCiAgICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFn
ZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQppbmRleCBmNzYzYWY2MDAz
ZGE0NjY3MzYzMWU5MWVhODFiODNiNWM5N2EwODdkLi4zNWVmOTIyMTU0ZTE5NjMwMGU0YjZlZTc1
ZDRjOTgxNzg1YmMzZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtNTIsNyArNTIsNyBAQCAtIChpZClpbml0
V2l0aFBhZ2U6KFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJilwYWdlCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICBfcGFnZSA9IFdURk1vdmUocGFnZSk7Ci0gICAgX29ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJV
UkwiKTsKKyAgICBfb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9i
c2VydmVyPihzZWxmLCBAIlVSTCIpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCkuYWRkT2Jz
ZXJ2ZXIoKl9vYnNlcnZlcik7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKaW5kZXggNzhiYmEzOTY3YjYxOTdjMGU4YTdj
MjNhYzNkYThjZDEzMmU3YzRiZS4uOTY0MDZkMGFhZmJjMzU1NTYwYjVkMzE5N2EwMGMyNWY1NzU5
YTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAK
QEAgLTY4LDUgKzY4LDUgQEAgdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3
LCBjb25zdCBXS1ZpZXdDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgICAgIH0KICAgICB9OwogCi0g
ICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxWaWV3Q2xpZW50Pihj
bGllbnQpKTsKKyAgICB0b0ltcGwodmlldyktPnNldENsaWVudChtYWtlVW5pcXVlPFZpZXdDbGll
bnQ+KGNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggMjY1
NTU0ZjNkN2YyZDdhZDI5NmU5ZjNmOWZhMTEzODhiNzhmZDU2NC4uNDk2Nzc4OGExMDU3ZmE4ODJh
MGEwMWM4ZGJmNTAwMmU5MjI2ZWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1t
CkBAIC02MDIsNyArNjAyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFBhZ2VSZWY6KFdL
UGFnZVJlZilwYWdlUmVmCiAKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpOwog
Ci0gICAgX3BhZ2VMb2FkU3RhdGVPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQ
YWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYpOworICAgIF9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIg
PSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmKTsKICAgICBf
cGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfcGFnZUxvYWRTdGF0ZU9ic2VydmVy
KTsKIAogICAgIEFTU0VSVCghYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcCgpLmNvbnRhaW5z
KF9wYWdlLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggMTM3MmNhNDEwNmM3NmUxZDYyMzVkNjE0
YWQ1YzFlNmE1NmVhMDVhMS4uODFkMzcwM2IwZWVhODJlNWU2YzYyZjMyMjJhYzRlNjgxOWY2YjNh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENv
b2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hU
VFBDb29raWVTdG9yZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIC0gKHZvaWQpYWRkT2JzZXJ2ZXI6
KGlkPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KW9ic2VydmVyCiAgICAgaWYgKCFyZXN1bHQu
aXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4ob2JzZXJ2ZXIp
OworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdLSFRUUENvb2tpZVN0
b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKICAgICBfY29va2llU3RvcmUtPnJlZ2lzdGVyT2JzZXJ2
ZXIoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGJhY2U1YWM3ZWMwMGIx
ODk4YWQyZGY3MmNiMWIxOTQ0NjdkY2VjOWQuLmViYWM1NjhlM2RkYjY4NzBmODViMDE1MDhlYzIw
ZmFhYjdmMjA0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zNzMsNyArMzczLDcgQEAgLSAoaWQgPF9XS0Rvd25sb2Fk
RGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiAtICh2b2lkKV9zZXREb3dubG9hZERlbGVnYXRl
OihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxvYWREZWxlZ2F0ZQogewogICAgIF9kb3du
bG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wtPnNldERv
d25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZENsaWVudD4oZG93
bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGllbnQobWFr
ZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVnYXRlKSk7CiB9CiAK
IC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUKQEAgLTM4
NCw3ICszODQsNyBAQCAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21hdGlvbkRl
bGVnYXRlCiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRvbWF0aW9u
RGVsZWdhdGU+KWF1dG9tYXRpb25EZWxlZ2F0ZQogewogICAgIF9hdXRvbWF0aW9uRGVsZWdhdGUg
PSBhdXRvbWF0aW9uRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxmLCBhdXRv
bWF0aW9uRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25DbGllbnQo
bWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxl
Z2F0ZSkpOwogfQogCiAtICh2b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlci5tbQppbmRleCA5YmI3NWM3YTIxMTczYjlmNzAxZDYyNjM0N2U2NzkyNTMyNGFiZmQ1Li5h
MDBiMjAzY2M5MDU5MzAxYmVjYzQ2MWQ2MWI0NjczMmI4NTYxMmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAogLSAodm9pZClhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlwdE1lc3Nh
Z2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIGF1dG8gaGFuZGxlciA9IFdl
YktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5kbGVyLCBu
YW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICBh
dXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFr
ZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRNZXNzYWdl
SGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQo
KSk7CiAgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRkIHNjcmlw
dCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMu
IiwgbmFtZV07CiB9CkBAIC0yMzAsNyArMjMwLDcgQEAgLSAodm9pZClfcmVtb3ZlQWxsVXNlclN0
eWxlU2hlZXRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29udGVudFcK
IAogLSAodm9pZClfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUgdXNlckNv
bnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQKIHsKLSAg
ICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
c3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3Jp
cHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5fdXNlckNv
bnRlbnRXb3JsZCk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4o
c2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRlbnRXb3Js
ZC0+X3VzZXJDb250ZW50V29ybGQpOwogICAgIGlmICghX3VzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJB
dHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAnIHdoZW4g
b25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMDk1MWU5NDQzN2JjZTQ2NjVkNjE1YmQw
NDBkMjZkZjIwYjY0ZGYzNC4uNGQ0NDA0NWEzNDFhZjQxYTllMDRiMTEwNTlhOTdiMDAzN2RlMzYx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC03NTcsNyArNzU3LDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
OihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmll
d0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJhdGlvbi5jb3B5UmVm
KCkpOworICAgIF9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBz
ZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsKICAgICBfcGFn
ZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNldEF1dG9tYXRpY2FsbHlBZGp1c3Rz
Q29udGVudEluc2V0cyh0cnVlKTsKQEAgLTc2OSwxNCArNzY5LDE0IEBAIC0gKHZvaWQpX2luaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3Vy
YXRpb24KIAogICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50
KGNvbmZpZ3VyYXRpb24uX2FwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpOwogCi0g
ICAgX25hdmlnYXRpb25TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU+KHNlbGYpOworICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKICAgICBfcGFnZS0+c2V0TmF2aWdhdGlvbkNsaWVudChf
bmF2aWdhdGlvblN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkpOwogCi0gICAgX3VpRGVs
ZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7Ci0gICAg
X3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+
KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CisgICAgX3Vp
RGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7CisgICAgX3Bh
Z2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNlbGYpKTsK
KyAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAKLSAgICBfaWNvbkxvYWRpbmdEZWxl
Z2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxm
KTsKKyAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJY29uTG9h
ZGluZ0RlbGVnYXRlPihzZWxmKTsKIAogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IFlFUzsKIApA
QCAtMzQyNSw3ICszNDI1LDcgQEAgLSAodm9pZClzZXRBbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb24KICAgICBfYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRp
b25HZXN0dXJlczsKIAogICAgIGlmIChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJl
cyAmJiAhX2dlc3R1cmVDb250cm9sbGVyKSB7Ci0gICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7
CisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+aW5z
dGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7CiAgICAgICAgIGlmIChX
S1dlYlZpZXcgKmFsdGVybmF0ZVdlYlZpZXcgPSBbX2NvbmZpZ3VyYXRpb24gX2FsdGVybmF0ZVdl
YlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXNdKQogICAgICAgICAgICAgX2dlc3R1cmVDb250cm9s
bGVyLT5zZXRBbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdlKGFsdGVybmF0ZVdlYlZp
ZXctPl9wYWdlLmdldCgpKTsKQEAgLTU2NzgsNyArNTY3OCw3IEBAIC0gKHZvaWQpX3NldElucHV0
RGVsZWdhdGU6KGlkIDxfV0tJbnB1dERlbGVnYXRlPilpbnB1dERlbGVnYXRlCiAgICAgfTsKIAog
ICAgIGlmIChpbnB1dERlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNldEZvcm1D
bGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBf
cGFnZS0+c2V0Rm9ybUNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQppbmRleCA3
YWQwNzNiOGNkNmRkNDIwM2UxYTc2MDU4ZjdjN2RmMmE5ZjhhZDdiLi4yYWRlZWE3NjBjNjk4YjE4
YWU1OTFlNTcwNTcxMzI5NWYyNGM1NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCkBAIC03Miw3ICs3
Miw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQogLSAo
dm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+KWRlbGVn
YXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3Nlc3Npb24tPnNldENsaWVu
dChkZWxlZ2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CisgICAgX3Nlc3Npb24tPnNldENsaWVudChkZWxl
Z2F0ZSA/IG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oZGVsZWdh
dGUpIDogbnVsbHB0cik7CiB9CiAKIC0gKE5TU3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCA4YzIxMzMz
MGViMGVkMzljNWYxMmQ1YmM2YWRhNWZiODEzYmRkY2FiLi4wZGQ0MDlhNDNkZTY1MzAwYzlmMGNj
ODU0NDdhYzJmNzEzZWM5NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCkBAIC03Niw3ICs3Niw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAg
ICAgIHJldHVybiBuaWw7CiAKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0gV2ViS2l0OjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKCk7Ci0gICAgbV9yZW1vdGVJbnNwZWN0b3JD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlDbGllbnQ+KHNlbGYpOworICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1
ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKICAgICBt
X3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0b3JDbGllbnQu
Z2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA4ZDJmODhhZTAwMzJhMGQ5MzQ1ZTY4
MDBhOTc4NThiNDI4YTRkNmQ5Li4wNjg3MGQyMWRlZTdjYTRmODlkYjllMzQyZjZmMGY1ZmQzZjU0
YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3IEBAIGlubGluZSB2b2lkIHJlYWR5U1FMaXRlU3Rh
dGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIFNRCiAg
ICAgICAgIHN0YXRlbWVudCA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghc3RhdGVtZW50KSB7
Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50Pihk
Yiwgc3RyKTsKKyAgICAgICAgc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+
KGRiLCBzdHIpOwogICAgICAgICBpZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09L
KQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQcmVwYXJpbmcgc3RhdGVtZW50ICVzIGZhaWxlZCIs
IHN0ci5hc2NpaSgpLmRhdGEoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4
IDU4Y2QwM2MzM2UyODA3OGRiYTE1NzgyYjFkYTc1YmNiNGEzMjc0ODYuLjIxODY2MDQ1MTkyNzY5
YmU2ZGZmODU5YTYzMjA0M2Q1MTM1NjljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAg
LTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkNvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24gPSBh
ZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+cHJpdi0+
c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpmcm9tVVRGOChzZXNzaW9uLT5w
cml2LT5pZC5kYXRhKCkpKTsKLSAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikpOworICAg
IHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENsaWVudChtYWtlVW5pcXVlPEF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAK
aW5kZXggOTdlOTI1NjAxNzczN2I3NjY1YWNjOGViMmYzNThlYjJlYzU5MDBiOS4uMjg1OGRmNmYz
NGQ0ZmE2MjEyMDliZjFlYjFlMTA4ODVhZDA1ZTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xpZW50LmNw
cApAQCAtNTYsNiArNTYsNiBAQCBjbGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbDogcHVibGlj
IEFQSTo6Q29udGV4dE1lbnVDbGllbnQgewogCiB2b2lkIGF0dGFjaENvbnRleHRNZW51Q2xpZW50
VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmlld0dldFBh
Z2Uod2ViVmlldykuc2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0
TWVudUNsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcp
LnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZp
ZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKaW5k
ZXggZDMyYjU5YzU0NzY2N2E3ZWM4NzcxODEwNTJiZDFhNzQ5YzBkYmMxYy4uYTM3M2IyOTQ1NzE2
NzkxYTJkNGMzMDdiZDVlMGE5MjljODE0MGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuY3BwCkBAIC01Niw1ICs1Niw1IEBAIGNsYXNzIEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVuCiAKIHZvaWQgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdl
YktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFBy
b2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2ViQ29udGV4
dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBl
YWQ0ZjIzNDk5MTY3MDRkMTdkMWYyMzA2NDA4OWY3YTFhMDQ1OTRmLi5lNzcxZGQ3MTg3ZTU4NTlh
ZGJkNWEwMTZmOGNhOTM1ZDI4ZTg0YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC0xMTgsNSAr
MTE4LDUgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9h
ZENsaWVudCB7CiAKIHZvaWQgYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2ViS2l0V2Vi
Q29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bv
b2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9h
ZENsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9v
bCh3ZWJDb250ZXh0KS5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2FkQ2xpZW50
Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMTgwODNlNzY5N2E1
MTM5OGYyZWUwOTRjZGIwNjhjMjA4MzdiMWZhLi45YjU4MThhOTgzNmYzNzYyZDg5NjIyZTM2MmMz
ZmM4YjJkM2ViZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTI2Nyw4ICsyNjcsOCBAQCB2
b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRh
YmFzZSwgY29uc3QgU3RyaW5nJiBwYQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJLaXRGYXZp
Y29uRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gZGF0YWJhc2UtPnByaXY7Ci0gICAgcHJpdi0+aWNv
bkRhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Ci0gICAgcHJpdi0+
aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJY29uRGF0YWJh
c2VDbGllbnQ+KGRhdGFiYXNlKSk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbWFrZVVuaXF1
ZTxJY29uRGF0YWJhc2U+KCk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQobWFr
ZVVuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CiAgICAgSWNvbkRh
dGFiYXNlOjpkZWxheURhdGFiYXNlQ2xlYW51cCgpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+
c2V0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3Np
bmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNGY5ODBkNGVlMjU4YWNhYzQ1NTgzMjNjYTdi
ZDcxY2NkZjNiZWViMS4uNzY3NWM5Y2IzYTVlZGFmODg2NGQxN2ExNzkyMTdjYjk0MjMzNjViOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZpbmRDb250cm9sbGVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQo
b2JqZWN0KTsKIAogICAgIFdlYktpdEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxlciA9IFdF
QktJVF9GSU5EX0NPTlRST0xMRVIob2JqZWN0KTsKLSAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVy
KS5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xs
ZXIpKTsKKyAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KG1ha2VVbmlx
dWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0
RmluZENvbnRyb2xsZXJHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAppbmRleCAxMzRk
MWM2Y2ViZTU2N2ZjNTRkOTcwZjg3NmJlMDI5MzFkMzI4MjJkLi5iYzY3YTM1N2RjMDc0NDVhMzUy
OGY4MGYwYWJkNzlkMDdjM2JjMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcApAQCAtNDgsNSArNDgsNSBAQCBjbGFz
cyBGb3JtQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Rm9ybUNsaWVudCB7CiAKIHZvaWQgYXR0
YWNoRm9ybUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtp
dFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxG
b3JtQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldyku
c2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9u
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDJlMTU5NDVkZmFkMjljMzE1NTBkMWFkM2M0ZGQxNDk4
YmU3YjcyMDQuLjhjYmE0MjJlZDVlMzhiZjg0Yzc2MDU5NGQ2Y2YwZjY1ODhjYmVhNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9u
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdEdlb2xvY2F0aW9uTWFuYWdlclN0YXJ0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdlciogbWFu
YWdlcikKICAgICB9CiAKICAgICBpZiAoIW1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92aWRlcikg
ewotICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtYW5hZ2VyLT5wcml2
LT5nZW9jbHVlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVy
PigpOwogICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVuYWJsZUhp
Z2hBY2N1cmFjeShtYW5hZ2VyLT5wcml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAgICB9CiAg
ICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0oR2VvbG9j
YXRpb25Qb3NpdGlvbiYmIGNvcmVQb3NpdGlvbiwgT3B0aW9uYWw8Q1N0cmluZz4gZXJyb3IpIHsK
QEAgLTMxMiw3ICszMTIsNyBAQCBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtpdEdlb2xv
Y2F0aW9uTWFuYWdlckNyZWF0ZShXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcgogewogICAgIGF1dG8q
IG1hbmFnZXIgPSBXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfR0VPTE9DQVRJT05fTUFOQUdFUiwgbnVsbHB0cikpOwogICAgIG1hbmFnZXItPnByaXYt
Pm1hbmFnZXIgPSBwcm94eTsKLSAgICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1
ZTxHZW9sb2NhdGlvblByb3ZpZGVyPihtYW5hZ2VyKSk7CisgICAgcHJveHktPnNldFByb3ZpZGVy
KG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlcj4obWFuYWdlcikpOwogICAgIHJldHVybiBt
YW5hZ2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKaW5kZXggZjNmN2ZmYmYzMmM0OTFm
YTE0Mjg5NTc1NDEwNjhjNTdhZjAwN2YwNC4uNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2RlYjI1ZmRh
YTI3ZjY2YzUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcApAQCAtNjIsNSArNjIsNSBAQCBj
bGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xpZW50IHsK
IAogdm9pZCBhdHRhY2hJY29uTG9hZGluZ0NsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEljb25Mb2FkaW5n
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHdlYlZpZXcpKTsKKyAg
ICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVudChtYWtl
VW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5jcHAKaW5kZXggYTkzZmYyNWIzOWEyOTI1NjAwZDJjNGFlY2NlY2JjNzU3MGQ1ZGYz
ZC4uOTI2MmE4NGRlY2UyNWJmMGJkZjVjNTliNDhkMDAyNTg1MmYzNmJhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMTc5LDUgKzE3OSw1IEBAIGNsYXNzIFdlYktpdEluamVj
dGVkQnVuZGxlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQg
ewogCiB2b2lkIGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNv
bnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29s
KHdlYkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRXZWJDb250
ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobWFr
ZVVuaXF1ZTxXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2ViQ29udGV4dCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDIzNmU4MWMxMzkwYjNlYzNjMTU0OTE4Njg2
YmFmYTVlNTM4NjQ2ODcuLjU1MTYzNjQ0Nzc1NTc0N2I3MGFjNWU3NmIxZDEwNGQ2MWMwYjVjYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlm
aWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgV2ViS2l0
Tm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm8KICAgICAsIG1fbm90aWZpY2F0aW9uTWFuYWdlcihub3RpZmljYXRp
b25NYW5hZ2VyKQogewogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbk1hbmFnZXIpOwotICAgIG1f
bm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmlj
YXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKKyAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXItPnNldFBy
b3ZpZGVyKG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlzKSk7CiB9CiAKIFdl
YktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQu
Y3BwCmluZGV4IDViY2VmNjhmNjVkMjMxODk4MGNmOTFkYWU1OTNkNzY2NzE0OGE5ODkuLjg5NmUx
M2RhZDk3YmU3ZmY3NzZjMDNiZjZlN2QwMjc4MmUwMzIxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIyNSw2ICsy
MjUsNiBAQCBjbGFzcyBVSUNsaWVudCA6IHB1YmxpYyBBUEk6OlVJQ2xpZW50IHsKIAogdm9pZCBh
dHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIHdlYmtp
dFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlD
bGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRV
SUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuY3BwCmluZGV4IDRmZjRhYjNmYWRhYTgxYzU4MTc3N2E2OWQwNDljMzliZDE5NmNl
Y2YuLjI1NWU4ZTVhNjc5Mjc2NDgzM2QzN2RhZmY5ZjU3OTBmMDg1OTY2NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNv
bnRlbnRNYW5hZ2VyLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIGdib29sZWFuIHdlYmtpdF91c2Vy
X2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKFdlYktpdFVz
ZXJDCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwobmFtZSwgRkFMU0UpOwogCiAgICAgUmVmPFdl
YlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+
KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJDb250ZW50
V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSks
IFN0cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29y
bGQoKSk7CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJvbGxlci0+
YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCkBAIC0yODks
NyArMjg5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVy
X3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQoV2UKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbCh3b3JsZE5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3Ry
aW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5hbWUpKTsK
KyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUp
LCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOwogICAgIHJldHVybiBtYW5hZ2Vy
LT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxl
cihoYW5kbGVyLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA1OTRkMWJiY2E4NGIzZDZjNzE1
NDIxZjA4ZjIzYWZhZmY4OGViYjA3Li44YzY4OTgyOTUzOWY0MjIzOGIzMDdmNTU1NjA4YTVjNTAw
MmRjZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzY4LDkgKzM2OCw5IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRv
Q29udGV4dCh3ZWJDb250ZXh0KTsKIAogICAgIHByaXYtPmdlb2xvY2F0aW9uTWFuYWdlciA9IGFk
b3B0R1JlZih3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wt
PnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpKTsKLSAgICBwcml2LT5u
b3RpZmljYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0Tm90aWZpY2F0aW9u
UHJvdmlkZXI+KHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7CisgICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlk
ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5wcm9jZXNz
UG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdlYkNvbnRl
eHQpOwogI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAg
cHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+KHdlYkNvbnRleHQpOworICAgIHByaXYtPnJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKICNlbmRpZgogfQogCkBAIC02NzksNyArNjc5
LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZChXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBnYm9vbGUKICAgICAgICAgICAgIGdfd2FybmluZygiTm90
IGVuYWJsaW5nIGF1dG9tYXRpb24gb24gV2ViS2l0V2ViQ29udGV4dCBiZWNhdXNlIHRoZXJlJ3Mg
YW5vdGhlciBjb250ZXh0IHdpdGggYXV0b21hdGlvbiBlbmFibGVkLCBvbmx5IG9uZSBpcyBhbGxv
d2VkIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+
cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0QXV0b21hdGlv
bkNsaWVudD4oY29udGV4dCk7CisgICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGll
bnQgPSBtYWtlVW5pcXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQpOwogICAgIH0g
ZWxzZQogICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbnVsbHB0cjsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAppbmRleCA4MWYwMmU0Yzk2M2YwY2Y4MWI0N2RiNjI4ODYwODk3ZDg0M2Q2M2Zh
Li43NDMwYzNmY2ZkNTRjNDZlZmE2NGUxMmZkOTdkZTVhOTMyOThhNDgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtNzI5
LDcgKzcyOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAKICAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcocHJp
di0+Y29udGV4dC5nZXQoKSwgd2ViVmlldywgcHJpdi0+dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgp
LCBwcml2LT5yZWxhdGVkVmlldyk7CiAKLSAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CisgICAgcHJpdi0+bG9h
ZE9ic2VydmVyID0gbWFrZVVuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHdlYlZpZXcpOwog
ICAgIGdldFBhZ2Uod2ViVmlldykucGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpwcml2LT5s
b2FkT2JzZXJ2ZXIpOwogCiAgICAgLy8gVGhlIHJlbGF0ZWQgdmlldyBpcyBvbmx5IHZhbGlkIGR1
cmluZyB0aGUgY29uc3RydWN0aW9uLgpAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKFdQRSkKLSAgICBwcml2LT52aWV3LT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJWaWV3Q2xpZW50Pih3ZWJWaWV3KSk7CisgICAgcHJpdi0+dmlldy0+c2V0Q2xpZW50KG1ha2VV
bmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmlldykpOwogI2VuZGlmCiAKICAgICAvLyBUaGlzIG5l
ZWRzIHRvIGJlIGFmdGVyIGF0dGFjaFVJQ2xpZW50VG9WaWV3KCkgYmVjYXVzZSBXZWJQYWdlUHJv
eHk6OnNldFVJQ2xpZW50KCkgY2FsbHMgc2V0Q2FuUnVuTW9kYWwoKSB3aXRoIHRydWUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmlu
ZGV4IGYwOWQ2YzdlOTIwNjgzYTc1NjY1Mjc2OTY3ZTc0N2NjNmNlZWI0ODEuLjA2YjNiODM2MDY1
ZDlmNjZhMDc5OGEyMDk1NTEzY2E4NjhiMzFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC02NSw3ICs2NSw3IEBAIFBh
Z2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChHdGtXaWRnZXQqIHZpZXdXaWRnZXQpCiAvLyBQ
YWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVfcHRyPERyYXdp
bmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndlYmtpdFdlYlZpZXdCYXNlR2V0UGFn
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSwgcHJvY2Vzcyk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCp3ZWJr
aXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSks
IHByb2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5
KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwCmluZGV4IDMxZTA5NzNm
ZTEwMDNjNmVhNjUyMzA2MWE2N2M5NDlkNTNlYmQ2YjcuLjJkMWMyY2IzNjhhOTkzMzE2OTc0MjQ2
YTBlZDU5OWMyOGRjYWU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2ppU2VjdGlvbnMoV2ViS2l0RW1vamlD
aG9vc2VyKiBjaG9vc2VyLCBHdAogICAgICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rp
b25zVGltZXIgPSBudWxscHRyOwogICAgIH07CiAKLSAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0
ZVNlY3Rpb25zVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrVGltZXI+KFdURk1vdmUo
cG9wdWxhdGVTZWN0aW9ucykpOworICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNU
aW1lciA9IG1ha2VVbmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RGTW92ZShwb3B1bGF0ZVNlY3Rpb25z
KSk7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zZXRQcmlvcml0
eShHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVT
ZWN0aW9uc1RpbWVyLT5zZXROYW1lKCJbV2ViS2l0RW1vamlDaG9vc2VyXSBwb3B1bGF0ZSBzZWN0
aW9ucyB0aW1lciIpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+
c3RhcnRSZXBlYXRpbmcoeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAppbmRleCBmOWM1YTc1MWZlYWUxY2MxNWRiMTJmMjM5Yzc3NTEyNThiZDJkMzAw
Li41YmE2MTBlN2Q5YTQ0ZDA0NzM4MzgxZTIzZDA0MGJkYTkyYzNmYzlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3Rv
Y29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0xMDYsMTMgKzEwNiwxMyBA
QCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9
IHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAg
YXV0byB1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRk
KHVzZXJDb250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5p
c05ld0VudHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyks
ICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAg
ICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VV
bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2Vy
Q29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogICAgICAgICBnX29i
amVjdF93ZWFrX3JlZihHX09CSkVDVCh1c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVycHJldF9j
YXN0PEdXZWFrTm90aWZ5Pih1c2VyQ29udGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlzKTsKICAg
ICB9CiAKICAgICBhdXRvKiBjbGllbnQgPSBtX2luc3BlY3RvckNsaWVudHMuZW5zdXJlKHJlcXVl
c3RVUkwuaG9zdEFuZFBvcnQoKSwgW3RoaXMsICZyZXF1ZXN0VVJMXSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0
KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwu
aG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKICAgICBHU3RyaW5nKiBodG1sID0gZ19z
dHJpbmdfbmV3KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJJbnNwZWN0b3IuY3BwCmluZGV4IGJjYWI4ZDViNDRiZjJmMWQ5ZWQ5N2E0MzNjYTIx
ZDllOTdkYzg4MjQuLjgwZDIwYWE3NjAzYmFkYWI5MDBmZTRiZDE1OTBhYWQzOWIzMGUyZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYklu
c3BlY3Rvci5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYmtp
dFdlYkluc3BlY3RvckNyZWF0ZShXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yKQogewog
ICAgIFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQRUNUT1Io
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIE5VTEwpKTsKICAgICBpbnNw
ZWN0b3ItPnByaXYtPndlYkluc3BlY3RvciA9IHdlYkluc3BlY3RvcjsKLSAgICB3ZWJJbnNwZWN0
b3ItPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluc3BlY3RvckNsaWVudD4oaW5z
cGVjdG9yKSk7CisgICAgd2ViSW5zcGVjdG9yLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXRJ
bnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOwogICAgIHJldHVybiBpbnNwZWN0b3I7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKaW5kZXggMWI5ZGQ4ZDFmNDYwMjE0ZjVhNzcyNjcyYzJmYjY1MzcwYjUyMGM1ZS4u
ODhiM2NmNDNiZmU2OGVlOTdjNzMxYjc2NGQ0NDk5MGE3YmZjNWE4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAg
LTU2Niw3ICs1NjYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVk
KEdPYmplY3QqIG9iamVjdCkKICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3
V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS50YXJnZXRMaXN0KCkpOwogCiAg
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uo
b2JqZWN0KS0+cHJpdjsKLSAgICBwcml2LT5wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlQ2xpZW50SW1wbD4odmlld1dpZGdldCk7CisgICAgcHJpdi0+cGFnZUNsaWVudCA9IG1ha2VV
bmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXdXaWRnZXQpOwogICAgIHByaXYtPmRpYWxvZyA9IG51
bGxwdHI7CiB9CiAKQEAgLTEyMjAsNyArMTIyMCw3IEBAIEdlc3R1cmVDb250cm9sbGVyJiB3ZWJr
aXRXZWJWaWV3QmFzZUdlc3R1cmVDb250cm9sbGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3
CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnBy
aXY7CiAgICAgaWYgKCFwcml2LT5nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgcHJpdi0+Z2Vz
dHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlc3R1cmVDb250cm9sbGVyPihHVEtf
V0lER0VUKHdlYlZpZXdCYXNlKSwgc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEdlc3R1cmVDb250cm9s
bGVyPih3ZWJWaWV3QmFzZSkpOworICAgICAgICBwcml2LT5nZXN0dXJlQ29udHJvbGxlciA9IG1h
a2VVbmlxdWU8R2VzdHVyZUNvbnRyb2xsZXI+KEdUS19XSURHRVQod2ViVmlld0Jhc2UpLCBtYWtl
VW5pcXVlPFRvdWNoR2VzdHVyZUNvbnRyb2xsZXI+KHdlYlZpZXdCYXNlKSk7CiAgICAgcmV0dXJu
ICpwcml2LT5nZXN0dXJlQ29udHJvbGxlcjsKIH0KIApAQCAtMTUwMSw3ICsxNTAxLDcgQEAgRHJh
Z0FuZERyb3BIYW5kbGVyJiB3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcihXZWJL
aXRXZWJWaWV3QmFzZSogd2ViVmkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHBy
aXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAoIXByaXYtPmRyYWdBbmREcm9wSGFuZGxl
cikKLSAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxE
cmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOworICAgICAgICBwcml2LT5kcmFn
QW5kRHJvcEhhbmRsZXIgPSBtYWtlVW5pcXVlPERyYWdBbmREcm9wSGFuZGxlcj4oKnByaXYtPnBh
Z2VQcm94eSk7CiAgICAgcmV0dXJuICpwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXI7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE3MTMsNyArMTcxMyw3IEBAIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlCiAgICAgaWYgKHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlcikKICAg
ICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyLT5jb25uZWN0VG9Qcm9jZXNzKCk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpwcml2LT5wYWdlUHJveHkp
OworICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKICAgICAgICAgcHJp
di0+dmlld0dlc3R1cmVDb250cm9sbGVyLT5zZXRTd2lwZUdlc3R1cmVFbmFibGVkKHByaXYtPmlz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZUVuYWJsZWQpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggMGJhNTA4ODg2MDQ5NTdlMjVk
ZmJlYWM0NjY1ZmIxNzgyYTQyMDY4ZS4uMTQ2MDNkNWFmZWJhZjZkZWUwMTE5Nzk1NzcwMzg4MzQ5
ZDRlN2IzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAg
LTkzMyw3ICs5MzMsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xpZW50CiAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW3NlbGYgcmVz
cG9uZHNUb1NlbGVjdG9yOkljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNlbGVjdG9yKCldKQot
ICAgICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9kYXRhLT5faW1w
bC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGll
bnQ+KHNlbGYpKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bvb2wgY29u
ZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbgpA
QCAtOTQ1LDcgKzk0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3Qp
ZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAgICAgV2ViS2l0OjpJ
bml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxsb2NdIGlu
aXRdOwotICAgIF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJWaWV3
SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikp
OworICAgIF9kYXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2Vs
ZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCiAgICAg
W3NlbGYgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDg1MTI5YTU0
ODdjOWZmYmVkNTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3NTg4NTczZGZmNDM2
MDMzNzdlZjhkMTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6OlZpZXcmIHZpZXcp
CiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fc2Nyb2xs
R2VzdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkK
IHsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6
Omhvc3RGaWxlRGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5
PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPihtX3ZpZXcu
cGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRz
RGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkxMDlhYTI4NTViOGJi
NDE1NzE3MDQ0Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQwMzBjZTA0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC00Miw4ICs0
Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tXUEUgewogCiBWaWV3
OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VD
b25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xpZW50KG1ha2VVbmlx
dWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFn
ZUNsaWVudEltcGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAwIH0KICAgICAsIG1f
dmlld1N0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSwg
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgfQogICAgICwg
bV9iYWNrZW5kKGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6flZpZXcoKQogdm9p
ZCBWaWV3OjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0NsaWVudD4mJiBjbGll
bnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OlZpZXdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudCA9IFdURk1vdmUo
Y2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
cXQvV1BFUXRWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BF
UXRWaWV3LmNwcAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1YjEzNTYxY2IzNjZj
Li5iNGYyN2I2ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCkBAIC0xNTAsNyAr
MTUwLDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0
V2ViVmlldyosIFdlYktpdExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChzdGF0dXNTZXQpIHsK
ICAgICAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1ZXN0UHJpdmF0ZSh2
aWV3LT51cmwoKSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BF
UXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZp
ZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8V1BFUXRW
aWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAgIFFfRU1JVCB2aWV3
LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQogfQpAQCAtMTY2LDcg
KzE2Niw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0
V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9hZFN0YXR1cyA9IFdQ
RVF0Vmlldzo6TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAgIFdQRVF0Vmlld0xv
YWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3RyaW5nKGZhaWxpbmdV
UkkpKSwgbG9hZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxX
UEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdQRVF0
Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmll
d0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1JVCB2aWV3LT5sb2Fk
aW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3ICs0MzksNyBAQCBz
dGF0aWMgdm9pZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3OjpydW5KYXZhU2NyaXB0
KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxiYWNrKQogewotICAg
IHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BFUXRW
aWV3Pih0aGlzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+
IGRhdGEgPSBtYWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNrLCBRUG9p
bnRlcjxXUEVRdFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3Jp
cHQobV93ZWJWaWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRhKCksIG51bGxwdHIs
IGpzQXN5bmNSZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3Bw
CmluZGV4IGE4NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQxZjkuLjEzZmQzN2Fl
ZmYyYjY1MzVkNTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcApAQCAtNjUs
NyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4gV1BFUXRWaWV3QmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICghZWdsQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
UEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2
aWV3KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xE
aXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BFUXRWaWV3QmFja2Vu
ZDo6V1BFUXRWaWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERpc3BsYXkgZGlzcGxh
eSwgRUdMQ29udGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29udGV4dD4gY29udGV4
dCwgUVBvaW50ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAy
Yzc4ZGY1MDBmNzQ2Mzc1ZDMxZDg0ZDg4NmUzMmEyZDg4YWIxY2VjLi4xOWFlZjk0NGY3NGY2MmMx
OWQ0ODk5YjkzODY2MDBmYTcxYzQ2NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNzMs
MTEgKzczLDExIEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQg
PSAzMDBfczsKIHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQ
YWdlTG9hZFN0cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwogCiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAgIDogbV9jbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQorICAgIDogbV9jbGll
bnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQogICAgICwgbV9m
cm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5
UmVmKCkpKQogICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9tYXRpb25CYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9kb21haW5O
b3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1f
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmllcihtYWtlVW5pcXVlPEF1dG9t
YXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9sb2Fk
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21hdGlvblNlc3Npb246OmxvYWRU
aW1lckZpcmVkKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDZiMDli
YWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3ZTg3YzUxZGM0YWU5
ZDYzOWIxZDRmMzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9w
dGlvblNldDwKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VF
eHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQQzo6RW5j
b2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAg
YXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdl
LmFyZ3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIp
LCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQppbmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIyYmViNWJj
YmQ3YzBkNzRjZmI0Li4xNjNmYjk1MmVlMGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2OGY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVn
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVs
ZWdhdGUubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fkljb25Mb2Fk
aW5nRGVsZWdhdGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4g
SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRy
PGlkIDxfV0tJY29uTG9hZGluZ0RlbGVnYXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmRlbGVn
YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4
IDMwMmY2ODIyODJiY2M3ZWUzOGQzZjY3MjdkNmQyM2Y4NGIyODlkYTguLjdiNjI0YWJmYTJmNDEx
MDQwYTA2YjJiMjY3ZGJiYjMyY2Q4MWNkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtNzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6On5VSURl
bGVnYXRlKCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkNvbnRleHRNZW51Q2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNsaWVudCgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMpOwogfQog
I2VuZGlmCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRlOjpjcmVh
dGVVSUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KCp0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQogCiBSZXRh
aW5QdHI8aWQgPFdLVUlEZWxlZ2F0ZT4gPiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGE4MTNmNTUxN2RmMWVlNTkzMWYzMjUzMjRhYmI4MGM5
Y2UzYTUzNGQuLjkxY2Y5NDgwYzc1MThjZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVEZXZpY2VX
aXRoQ29uc3RyYWkKICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsKICAgICAgICAg
c2V0dGluZ3MgPSBzb3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VSVCghbV9wcm94aWVz
LmNvbnRhaW5zKGlkKSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6bWFrZV91bmlx
dWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3Vy
Y2UpKSk7CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNlUHJveHk+
KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JFcnJvci5l
cnJvck1lc3NhZ2UpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwgaW52YWxpZENv
bnN0cmFpbnRzLCBXVEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzMDcwZDU3NDQzZmRm
NzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQyZmEyYTA4NjA0MTdjNmNmODBkN2Jj
ZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIGlmICghW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFN1cHByZXNzTWVtb3J5UHJl
c3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKTsK
IAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisgICAgc2V0TGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01
MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayhJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9ic2UKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlMaW5rID0gc3RkOjptYWtlX3Vu
aXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKKyAgICBhdXRvIGRpc3BsYXlMaW5rID0gbWFr
ZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKICAgICBkaXNwbGF5TGluay0+YWRkT2Jz
ZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAgbV9kaXNwbGF5TGlua3MuYXBwZW5k
KFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggNWMyMWNhNzVhMTgyOWM1
MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3YjQ2MDU0OGNlMGY4NmQ3YTVkMTE3
YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRsZXIgPSBb
YWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCksIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRs
eVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tncm91bmQgYWN0aXZpdHkgdGltZWQgb3V0Iiwg
d2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAgbV91bmV4cGVjdGVkQWN0aXZpdHlUaW1lciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4oV1RGTW92
ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rpdml0eUR1
cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRBY3Rpdml0eVRp
bWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOwogICAgIGNvbXBsZXRp
b24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQppbmRleCBjYWIwNTUwOWZiNmQwMmJiNDNlODhkOGQ2NTQ4OWZmYjcyMmZlODAyLi44
ZGY0ZGE3YjMyMDgwOTQ2ZGY3MWM5MjgyMTY1M2Y2ZWE5NDA3NTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTMxNSw3ICsxMzE1LDcgQEAg
c3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0cmFja2luZ0FyZWFPcHRpb25zKCkKIAogV2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcs
IFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3ZpZXco
dmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBs
Pih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFn
ZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCiAgICAgLCBtX3BhZ2UocHJvY2Vzc1Bv
b2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSkK
ICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKG1fcGFnZS0+cHJlZmVy
ZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAgICwgbV9pbnRyaW5zaWNDb250ZW50U2l6ZShD
R1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0cmljLCBOU1ZpZXdOb0ludHJpbnNpY01ldHJp
YykpCkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoTlNWaWV3
IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldlYgogICAgIHZp
ZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQbGFjZW1lbnRU
b3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fcGFnZS0+c2V0RnVs
bHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4o
dmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktp
dDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwogI2VuZGlmCiAKICAgICBXZWJQcm9jZXNzUG9v
bDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0xNzExLDkgKzE3MTEsOSBAQCBDR1Np
emUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQ
cm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgaWYgKFtbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXQyVXNlUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFsdWVdKQotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nl
c3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Piht
X3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc1VzaW5nVUlTaWRlQ29t
cG9zaXRpbmcoKSBjb25zdApAQCAtMzM1Niw3ICszMzU2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGV4dEluZGljYXRv
cihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yLCBXZWJDb3JlOjpUZXh0SW5k
aWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAgICAgaWYgKCFtX3RleHRJbmRpY2F0
b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxlYXNlZCgp
KTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOwogCiAgICAgTlNS
ZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW1ttX3ZpZXcgd2luZG93
XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcgY29udmVydFJlY3Q6dGV4dEluZGljYXRvci50
ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5pbF1dOwogICAg
IG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNhdG9yLCBO
U1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyksIGxpZmV0
aW1lKTsKQEAgLTQzNTgsNyArNDM1OCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNhdmVCYWNrRm9y
d2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogVmlld0dl
c3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRyb2xsZXIoKQog
ewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgbV9nZXN0dXJlQ29udHJv
bGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOwor
ICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUNvbnRy
b2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICptX2dlc3R1cmVDb250cm9sbGVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5ZTU4Y2NkYTEwZjNlYTQ0NGMyNzYu
LjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2NWQyODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFw
aGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXAKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5nU3RvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6ZSwgdXBk
YXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAgICAgICBtX2Jh
Y2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZvLnZpZXdTaXpl
LCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7CiAKICAgICBt
X2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAKQEAgLTQ0Miw3
ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNw
YXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuYwogICAgIH0KIAogICAgIGlmICghbV9k
cmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6bWFrZV91bmlx
dWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdNb25pdG9yPiht
X3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBtYWtlVW5pcXVlPERy
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQ
YWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0b3ItPnN0YXJ0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZp
Y2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJkMDM4NmFjZjVkOGFkNTM1Yzc5MTJhODg2Y2Jk
MGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2NjVlZTFiNzg2OTZhNmE0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9yCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4gPSBz
dGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lu
RGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSks
IFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgIGF1dG8gaGFzaFNhbHRGb3JPcmlnaW4g
PSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luRGF0
YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdU
Rk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgaGFzaFNhbHRGb3JPcmlnaW4tPmxhc3RU
aW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0VGltZVVzZWQpOwogCkBAIC0y
MTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxldGVEZXZp
Y2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKIAogICAgICAgICBTdHJpbmcg
ZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgICAgICBhdXRvIG5l
d0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9yaWdpbj4o
V1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RGTW92ZShk
ZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JPcmlnaW4gPSBt
YWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3JpZ2luKSwgV1RG
TW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAogICAgICAg
ICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5OWE1MDM0NGYzMTI1MWY1ZTk2ODQu
LmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1Y2E3YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAK
QEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFwOjpjcmVh
dGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbAogCiAgICAgaWYgKG1f
ZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hvdWxkVGFrZUFzc2VydGlvbikgewogICAgICAg
ICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRVSUFz
c2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3VycmVudFBy
b2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRl
ZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBtYWtlVW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBkb3dubG9h
ZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAgICAgICBB
U1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5k
ZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRpb24gPSBt
YWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3Jr
aW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2Vz
cyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb25zIGZvciBVSVByb2Nlc3MgYW5kIE5l
dHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBlY2FhYzMwMWI0YmRmNDZmMmM4
OWNkZGU3MWQxOTMyNTQ1MTRmNjQwLi5mNGI3YmVhNjU4NTA5OTFlOTQ5NGE2MjIzZDU0Yjk4MmFl
Y2ZkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJR2Ft
ZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL1VJ
R2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFVJR2FtZXBhZFByb3Zp
ZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMoY29uc3QgVmVjdG9yPFBsYXRmb3JtR2Ft
ZXBhZAogICAgIGZvciAoYXV0byogZ2FtZXBhZCA6IGluaXRpYWxHYW1lcGFkcykgewogICAgICAg
ICBpZiAoIWdhbWVwYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9nYW1lcGFk
c1tnYW1lcGFkLT5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPigqZ2FtZXBh
ZCk7CisgICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJ
R2FtZXBhZD4oKmdhbWVwYWQpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcG9vbCA6IG1fcHJv
Y2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcykKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFVJR2FtZXBh
ZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFkJiBnYW1l
cGFkKQogICAgICAgICBtX2dhbWVwYWRzLmdyb3coZ2FtZXBhZC5pbmRleCgpICsgMSk7CiAKICAg
ICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7Ci0gICAgbV9nYW1lcGFkc1tn
YW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVwYWQpOwor
ICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IG1ha2VVbmlxdWU8VUlHYW1lcGFkPihn
YW1lcGFkKTsKIAogICAgIHNjaGVkdWxlR2FtZXBhZFN0YXRlU3luYygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA5MWVjZTFmMGRhZmZlM2VhNjNhZGJjMGQ5MWVhYzRkMTgxMTEzMDlhLi5iZDY5NzIz
YTBlMTMyNzNiMWM1ZTc2MjJhYTYzMmY5ZmVhYWRmY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2
NCw3ICsxNjQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVBcHBJc0Jh
Y2tncm91bmQoYm9vbCBiYWNrZ3JvdW5kKQogRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCkKIHsKICAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKLSAgICAgICAgbV9kb3du
bG9hZFByb3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigqdGhpcyk7
CisgICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IG1ha2VVbmlxdWU8RG93bmxvYWRQcm94eU1h
cD4oKnRoaXMpOwogCiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxv
YWRQcm94eShtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOwogfQpAQCAtMTIxMSw3ICsx
MjExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6dGFrZVVwbG9hZEFzc2VydGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX3VwbG9hZEFzc2VydGlv
bik7Ci0gICAgbV91cGxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9u
U3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIG1fdXBsb2FkQXNzZXJ0aW9uID0gbWFr
ZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVw
bG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhclVwbG9hZEFzc2VydGlvbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmFhZmYxZWMyYTY1NDkwZDg4NTQz
OTk2YmY4MTAyYzJkNDljNTA0Mi4uNDdhM2U5YjIzYmExMjY1MTk4YjYwZWRkZjZjNGRkOTg2ZmNk
MjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtNTYs
MTQgKzU2LDE0IEBAIFJlZjxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+IFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQCiAKIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAg
ICwgbV9wcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+
KCkpCisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRl
cj4oKSkKIHsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3Zp
ZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiYmIHByb3ZpZGVy
KQogewogICAgIGlmICghcHJvdmlkZXIpIHsKLSAgICAgICAgbV9wcm92aWRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbV9wcm92aWRl
ciA9IG1ha2VVbmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGY2ZjQ3OWIx
ZTAzOTJmMzIyMTYwYTY0OTRhZWM2MmUwYTA2Nzk2ZGQuLjg0MzY5ZDMzNDQwN2NmYmMyZTgzYWE4
MjdjNWNjMGU1ZGI5MTIyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZVBs
dWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGEKICNpZiBQTEFURk9STShHVEspCiBz
dGF0aWMgYm9vbCBwbHVnaW5SZXF1aXJlc0d0azIoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQog
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8
TW9kdWxlPihwbHVnaW5QYXRoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlPiBtb2R1bGUg
PSBtYWtlVW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0aCk7CiAgICAgaWYgKCFtb2R1bGUtPmxvYWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtb2R1bGUtPmZ1bmN0aW9uUG9p
bnRlcjxncG9pbnRlcj4oImd0a19vYmplY3RfZ2V0X3R5cGUiKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKaW5kZXggMDBhOTkxODg2MTQ4NzM5MzhhNmNi
NGFiZDk5MTRiYzg2Mjk0NWNmNy4uNGNlMjYyZTlkY2JiNGIxYjBmZjBhZDVkYjk3ZWI5N2YzNjA3
Mzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAK
QEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5lY3RUb1By
b2Nlc3MoUHJvY2Vzc0lEIHBpZCkKIAogICAgIG1fc3VzcGVuZFRpbWVyLnN0b3AoKTsKICAgICBp
ZiAobV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKQotICAgICAgICBtX2Fzc2VydGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJXZWIgY29u
dGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9hc3NlcnRp
b24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRlbnQg
dmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2Fz
c2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGlkLCAiV2ViIGNv
bnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CisgICAgICAgIG1fYXNzZXJ0
aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVudCB2aXNp
YmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX3Byb2Nlc3MuZGlkU2V0QXNzZXJ0
aW9uU3RhdGUoYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgbV9hc3NlcnRpb24tPnNldENsaWVudCgq
dGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
Lm1tCmluZGV4IDYwZjAyYzYxMGZjZDk4ODMwNjM5YzU3YjNlOWQ2MWZmMWZkNTI1ZmQuLjI3NGFi
ZDMwMjljMDA3NzMzOWRmZTM3NDhmZjMwNjk3YzliNDhiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMDcsNyArMTA3LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJv
eHksIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICA6IERyYXdpbmdBcmVhUHJveHkoRHJh
d2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCB3ZWJQYWdlUHJveHksIHByb2Nlc3MpCi0gICAg
LCBtX3JlbW90ZUxheWVyVHJlZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVI
b3N0PigqdGhpcykpCisgICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3QobWFrZVVuaXF1ZTxSZW1v
dGVMYXllclRyZWVIb3N0PigqdGhpcykpCiB7CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAgICAgLy8g
V2UgZG9uJ3Qgd2FudCB0byBwb29sIHN1cmZhY2VzIGluIHRoZSBVSSBwcm9jZXNzLgpAQCAtMzc2
LDcgKzM3Niw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6dXBkYXRl
RGVidWdJbmRpY2F0b3IoSW50U2l6ZSBjb250ZW50c1NpemUsCiAKIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKCkKIHsKLSAgICBt
X2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5
ZXJUcmVlSG9zdD4oKnRoaXMpOworICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0ID0g
bWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcyk7CiAgICAgbV9kZWJ1Z0luZGlj
YXRvckxheWVyVHJlZUhvc3QtPnNldElzRGVidWdMYXllclRyZWVIb3N0KHRydWUpOwogCiAgICAg
bV90aWxlTWFwSG9zdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggMzAwMjVkNDI5OWYzYmNhMDQ4NWQzMDRkODMz
NTgxNzYxMGJhNTBiZC4uOGE0ZTUwNDgxN2ViYzEyNWNlODk4YzFjMjkxZDlhNmU0ZDVmNTgyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIFJl
bW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllckNyZQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJl
bW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykKIHsKICAgICBhdXRvIG1h
a2VXaXRoTGF5ZXIgPSBbJl0gKFJldGFpblB0cjxDQUxheWVyPiBsYXllcikgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxh
eWVySUQsIFdURk1vdmUobGF5ZXIpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKGxheWVyKSk7CiAgICAg
fTsKICAgICBhdXRvIG1ha2VBZG9wdGluZ0xheWVyID0gWyZdIChDQUxheWVyKiBsYXllcikgewog
ICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihhZG9wdE5TKGxheWVyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
Tm9kZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVOb2RlLm1tCmluZGV4IGU4OGJiYzYwOGQ0ZmIwNTgzODRkMjliMjY5ODE1OTJlZGE4
MTRlYmEuLjRmZDRlYTI2OWU4Y2MxYmRmZmIyZWIyNTk3ZDRmNzUwZDg0MjQwNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVOb2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVOb2RlLm1tCkBAIC03Myw3ICs3Myw3IEBAIFJlbW90ZUxheWVyVHJlZU5v
ZGU6On5SZW1vdGVMYXllclRyZWVOb2RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRy
ZWVOb2RlPiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCkKIHsKICAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gbGF5ZXIgPSBhZG9wdE5TKFtbV0tQbGFpblJlbW90ZUxheWVyIGFsbG9jXSBp
bml0XSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4o
bGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxh
eWVyVHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVM
YXllclRyZWVOb2RlOjpkZXRhY2hGcm9tUGFyZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5
ZXJUcmVlSG9zdElPUy5tbQppbmRleCA2MjlhOWM2NTBkNDNjMGQ1NjFjODE5MzNiYTBkMTRlOGQz
M2VhNDQ0Li4wYzEyNmFlNmFmNzVlNDEzOGFmZDAwODY4Mzk1NjYyOWZmNzAwMjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxh
eWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC02MSw3ICs2MSw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8VUlWaWV3PiBjcmVhdGVSZW1vdGVWaWV3KHBpZF90IHBpZCwgdWludDMy
X3QgY29udGV4dElEKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+IFJlbW90
ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykKIHsKICAgICBhdXRvIG1ha2VX
aXRoVmlldyA9IFsmXSAoUmV0YWluUHRyPFVJVmlldz4gdmlldykgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQs
IFdURk1vdmUodmlldykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRy
ZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUodmlldykpOwogICAgIH07CiAgICAg
YXV0byBtYWtlQWRvcHRpbmdWaWV3ID0gWyZdIChVSVZpZXcqIHZpZXcpIHsKICAgICAgICAgcmV0
dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKHZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZVJlbW90ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQppbmRl
eCA4MWEyZWI5YTYzNWQ1OTg0MTYwMGY3ODM1MjA0YWM4NGJkNmQ1YzI4Li5iODkwNjgxZTllN2E1
MTNiYTM0MzY3Y2VmMzk4OWJlM2IxOWQ5Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVSZW1vdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCkBAIC02
Nyw3ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlP
Uzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTCiAKICAgICBpZiAoc3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENv
bnRhaW5lckxheWVyKSkgewogICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkKLSAg
ICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcyk7CisgICAgICAgICAgICBt
X3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3Nj
cm9sbGluZ05vZGVEZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCmluZGV4
IGI1NmUyZWE2NGRhNTIwMzFkZmFmMTI4ZWMyNDhjZDE1YzcxMDA5MjYuLmQwYmRkM2M1N2RiYmNi
ZWYwNzBlODUxYWZlMDRlZWU2YWFiNTdkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTQzLDcgKzQz
LDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M+IFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MKIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyhXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3Jv
bGxpbmdUcmVlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKSkK
KyAgICAsIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKG1ha2VVbmlxdWU8U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFj
LmNwcAppbmRleCAzMmExZTMzYWE4NTY3YzBiNjE2MmUwNjc4M2NmMzc2Y2Y2MTkwN2UyLi4yMzNm
ZmQwMjFlNjM4YmYxODhmOGRjYWJkNzc5Yzc0NTI5NDM3Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1h
Yy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVSZW1vdGVNYWMoU2Nyb2xsaW5nVHJlZSYgdHJlZSwgU2Nyb2xsaW5nTm9kZVR5
cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5vZGVUeXBlLCBub2RlSUQpCi0gICAgLCBtX3Nj
cm9sbGVyUGFpcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQorICAg
ICwgbV9zY3JvbGxlclBhaXIobWFrZVVuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggZDg5NjBjZWMzMGU0MzMxOWFh
MDI3ZDlhMjFmY2VmYzgzNzYzNTA0My4uYjZjYTNjYmJhODA4MDdhZjdiOWY2OTliZTliMWIyYWE5
Y2RjMWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjPiBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVN
YWMoU2Nyb2xsaW5nVHJlZSYgdHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWModHJlZSwgbm9kZUlEKQotICAgICwg
bV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkK
KyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCmluZGV4IDllYWUxOGVkZDVmNGQyZGM1
ZGYzOGU5NmQwNTA1MDkzYmNhOWIzOTguLmFiZDBlN2U3Mjk0NzkxMjhjYjZhZmZmN2YyMTgxMjYz
ZTRkYTk4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQpAQCAtOTIsNyArOTIsNyBAQCBV
bmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVjdGlvbihJ
T0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRkZWQoSU9I
SUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOworICAgIGF1dG8g
ZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRl
dmljZSkpOwogICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2aWNlLgog
ICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVzdChDdGFw
UmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4mJiByZXNw
b25zZSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IDk5ZDZlYTMzNDE1M2VjZjQ5ZDQ1ODRjNzQzZGM2ODE2ODg0MTU1MjAuLjg0NmE1YWEyN2Rm
YWIzZDI3NGNmZmE0ODczODYxZjI1ODdkMTdmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9v
bCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwgbV9wcm92
aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkKKyAgICAs
IG1fcHJvdmlkZXIobWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiAg
ICAgV2ViQ29udGV4dFN1cHBsZW1lbnQ6OnByb2Nlc3NQb29sKCktPmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgKnRoaXMpOwogfQpAQCAtNTQsNyArNTQsNyBAQCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQ
cm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQ
bwogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAo
IXByb3ZpZGVyKQotICAgICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okdl
b2xvY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQ
STo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fcHJvdmlkZXIg
PSBXVEZNb3ZlKHByb3ZpZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCmluZGV4IDJjZGNkMTc2NTI5OWZl
Nzc2NDliYWJmOWRlM2U3NGU4YjBmMDBlMzcuLjMzNjRiY2JjYzkxMTg0YTZiYTc1NDFlZjkwYjBm
OTYwNGNkZTRkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlh
U2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2Vi
TWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjp1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNGcm9tTWVk
aWFTdGF0ZShXZWJQYWdlCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjpzZXRG
b2N1c2VkTWVkaWFFbGVtZW50KFdlYlBhZ2VQcm94eSYgcHJveHksIHVpbnQ2NF90IGVsZW1lbnRJ
RCkKIHsKLSAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvY3Vz
ZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElEKTsKKyAgICBtX2ZvY3VzZWRNZWRpYUVs
ZW1lbnQgPSBtYWtlVW5pcXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElE
KTsKIH0KIAogdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNsZWFyRm9jdXNlZE1l
ZGlhRWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYzRiOTJjODNjZmVhMjliMzFlZGJiMzRhYTg0
MDI1YmE1YzhiMDNiNy4uYmRhNTljZDgwNTE1NzY0NmIzMDhkMmZkMjM2ZjNkMTE4MjcxZTBiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
cjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgICwg
bV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5j
b3B5UmVmKCkpKQogewotICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNr
ZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgYXV0byB0YXJnZXRBZ2VudCA9IG1ha2VVbmlxdWU8
V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgpLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJnZXRBZ2Vu
dC5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
NDg1YjMxZDRhZWZmMmEyMDRhZTBjYTY2YWVmMjdkMzcyODUzN2Q3ZS4uZDg2MWRlOGQxMTM3NTg4
MGMzNTM2YjY1Mzc3NGFhMGMwMzE5MGJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0zOTcsMTUgKzM5NywxNSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBh
ZwogICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBt
X25hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkp
CiAgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Okhpc3RvcnlDbGllbnQ+
KCkpCi0gICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29u
TG9hZGluZ0NsaWVudD4oKSkKLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OlVJQ2xpZW50PigpKQotICAgICwgbV9maW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpG
aW5kQ2xpZW50PigpKQotICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCisgICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KG1h
a2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKKyAgICAsIG1fZm9ybUNsaWVudCht
YWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFrZVVuaXF1
ZTxBUEk6OlVJQ2xpZW50PigpKQorICAgICwgbV9maW5kQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpG
aW5kQ2xpZW50PigpKQorICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPEFQSTo6
RmluZE1hdGNoZXNDbGllbnQ+KCkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgLCBt
X2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVu
dD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRN
ZW51Q2xpZW50PigpKQogI2VuZGlmCi0gICAgLCBtX25hdmlnYXRpb25TdGF0ZShzdGQ6Om1ha2Vf
dW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKKyAgICAsIG1fbmF2aWdhdGlvblN0YXRlKG1h
a2VVbmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigpKQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3Mp
CiAgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKICAgICAs
IG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKQEAgLTQxNiw3
ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9vdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeSB7IG1fY29uZmlndXJhdGlvbi0+b3ZlcnJpZGVDb250ZW50U2VjdXJp
dHlQb2xpY3koKSB9CiAgICAgLCBtX3RyZWF0c1NIQTFDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKG1f
Y29uZmlndXJhdGlvbi0+dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1cmUoKSkK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxzY3JlZW5DbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCisgICAgLCBtX2Z1bGxzY3Jl
ZW5DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCiAjZW5kaWYKICAg
ICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAgICAgLCBt
X25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKQEAgLTQzNSw5ICs0
MzUsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAgICAgLCBtX3BhZ2VMb2Fk
U3RhdGUoKnRoaXMpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVzKG1fY29u
ZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkK
KyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBt
X2luc3BlY3RvckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGVidWdnYWJsZT4o
KnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8V2ViUGFnZURl
YnVnZ2FibGU+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRU
aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jh
c2hDb3VudCkKIHsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VE
aXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0
PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6QWN0aXZp
dHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0
Y2hlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihS
dW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFu
Z2UpLCBbdGhpc10gewogICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2Uo
KTsKICAgICB9KTsKICNlbmRpZgpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRQb2xpY3lDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50PiYmIHBv
bGljeUNsCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7
Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xpZW50
PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1DbGllbnQ+
JiYgZm9ybUNsaWVudCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpVSUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xpZW50KSB7
Ci0gICAgICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7
CisgICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdD
bGllbnQ+JgogewogICAgIGJvb2wgaGFzQ2xpZW50ID0gaWNvbkxvYWRpbmdDbGllbnQuZ2V0KCk7
CiAgICAgaWYgKCFpY29uTG9hZGluZ0NsaWVudCkKLSAgICAgICAgbV9pY29uTG9hZGluZ0NsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKKyAgICAgICAg
bV9pY29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4o
KTsKICAgICBlbHNlCiAgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBXVEZNb3ZlKGljb25M
b2FkaW5nQ2xpZW50KTsKIApAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9i
c2VyCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kQ2xpZW50KSB7Ci0g
ICAgICAgIG1fZmluZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50Pigp
OworICAgICAgICBtX2ZpbmRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50
PiYmIGZpbmRDbGllbnQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXNDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+JiYgZmluZE1hdGNoZXNDbGll
bnQpCiB7CiAgICAgaWYgKCFmaW5kTWF0Y2hlc0NsaWVudCkgewotICAgICAgICBtX2ZpbmRNYXRj
aGVzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpOwor
ICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVz
Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzYsNyArNjc2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkRpYWdub3N0aWNMb2cKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVu
dUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4mJiBjb250ZXh0
TWVudUNsaWVudCkKIHsKICAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7Ci0gICAgICAgIG1f
Y29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGll
bnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29u
dGV4dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5MSw3ICs2
OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3Qg
V0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBtYWtl
VW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBtX2luamVjdGVkQnVu
ZGxlQ2xpZW50LT5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKQEAgLTc3Niw3ICs3NzYsNyBAQCBi
b29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIH0KIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVu
ZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpKTsKLSAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJh
bWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKTsKKyAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3BlbmRlZFBh
Z2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxk
RGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAog
ICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRl
ZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVt
ICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdT
dHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21J
dGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOwogCkBAIC04NDksNyArODQ5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuTWFuYWdlcik7Ci0gICAg
bV9mdWxsU2NyZWVuTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGllbnQoKS5mdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
KCkpOworICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNs
aWVudCgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUoQVZLSVQp
IHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAg
ICAgQVNTRVJUKCFtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOwpAQCAtODYwLDIyICs4NjAsMjIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKICAgICBBU1NFUlQoIW1fcGF5bWVudENvb3JkaW5hdG9yKTsKLSAg
ICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlx
dWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQogICAgIEFTU0VSVCghbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlcik7
Ci0gICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3lzdGVt
UHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIEFTU0VSVCghbV9jcmVkZW50aWFsc01lc3Nlbmdl
cik7Ci0gICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRpYWxzTWVz
c2VuZ2VyID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eT4oKnRo
aXMpOwogI2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICBBU1NFUlQoIW1fZWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXIpOwotICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CisgICAgbV9lZGl0
YWJsZUltYWdlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+
KCp0aGlzKTsKICNlbmRpZgogfQogCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldERyYXdpbmdBcmVhKHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRy
YXdpbmdBcmUKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09B
KQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlUmVtb3Rl
TGF5ZXJUcmVlKSB7Ci0gICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAg
ICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBtYWtlVW5pcXVlPFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICAvLyBPbiBpT1MsIG1haW4gZnJhbWUgc2Nyb2xscyBhcmUgc2VudCBpbiB0ZXJtcyBv
ZiB2aXNpYmxlIHJlY3QgdXBkYXRlcy4KICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGluYXRvclBy
b3h5LT5zZXRQcm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xscyhmYWxzZSk7CkBAIC0xMDA2LDE3ICsx
MDA2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgbV9sb2FkZXJDbGllbnQg
PSBudWxscHRyOwogICAgIG1fbmF2aWdhdGlvbkNsaWVudCA9IG1ha2VVbmlxdWVSZWY8QVBJOjpO
YXZpZ2F0aW9uQ2xpZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50ID0gbnVsbHB0cjsKLSAgICBt
X2ljb25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3JtQ2xp
ZW50PigpOwotICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGllbnQ+
KCk7Ci0gICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+
KCk7Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5k
TWF0Y2hlc0NsaWVudD4oKTsKKyAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8
QVBJOjpGb3JtQ2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlD
bGllbnQ+KCk7CisgICAgbV9maW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+
KCk7CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hl
c0NsaWVudD4oKTsKICAgICBtX2RpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbnVsbHB0cjsKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVD
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgbV9mdWxsc2NyZWVuQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAjZW5kaWYKIAogICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2Uo
KnRoaXMpOwpAQCAtMTIxNiw3ICsxMjE2LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9KTsK
IAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0
YU5hdmlnYXRpb24oc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihkYXRhLnZl
Y3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhKSk7CisgICAgYXV0
byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlv
bihtYWtlVW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBl
LCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKICAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0
aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBl
LCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6Tm8sIFdURjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAg
cmV0dXJuIG5hdmlnYXRpb247CiB9CkBAIC0yNDA1LDcgKzI0MDUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOworICAgIGF1
dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVs
RXZlbnQ+PigpOwogICAgIGNvYWxlc2NlZFdoZWVsRXZlbnQtPmFwcGVuZChldmVudCk7CiAgICAg
bV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShjb2FsZXNjZWRX
aGVlbEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQoZXZlbnQpOwpAQCAtMjQxMyw3ICsyNDEz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2Vi
V2hlZWxFdmVudCYgZXZlbnQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVl
ZFdoZWVsRXZlbnQoKQogewotICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CisgICAgYXV0byBuZXh0Q29h
bGVzY2VkRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsK
ICAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50ID0gY29hbGVzY2VkV2hlZWxFdmVudCht
X3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRFdmVudC5nZXQoKSk7CiAgICAgbV9jdXJy
ZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShuZXh0Q29hbGVzY2VkRXZl
bnQpKTsKICAgICBzZW5kV2hlZWxFdmVudChuZXh0V2hlZWxFdmVudCk7CkBAIC0yOTc0LDcgKzI5
NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFn
ZSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9wcm92aXNpb25hbFBhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCks
IFdURk1vdmUoc3VzcGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwg
bmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50
UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKKyAgICBtX3Byb3Zpc2lv
bmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBuZXdQcm9j
ZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0aW9uLm5h
dmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpLCBuYXZp
Z2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwog
CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgewogICAgICAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRh
KCkpOwpAQCAtNTY5NCw3ICs1Njk0LDcgQEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSogV2Vi
UGFnZVByb3h5OjpmdWxsU2NyZWVuTWFuYWdlcigpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RnVs
bHNjcmVlbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiYmIGNs
aWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkgewotICAgICAgICBtX2Z1bGxzY3JlZW5DbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICAgICAgbV9m
dWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0MjgsNyArNzQyOCw3IEBAIFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJveHk6OnVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0CiAgICAgaWYgKG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
KQogICAgICAgICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwog
Ci0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CisgICAg
bV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBtYWtlVW5pcXVlPFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJuICptX3Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIH0KIApAQCAtODEzNCw3ICs4MTM0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25F
bmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rp
b25FbmFibGVkID0gZW5hYmxlZDsKIAogICAgIGlmIChtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNv
bGxlY3Rpb25FbmFibGVkICYmICFtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSkKLSAgICAgICAg
bV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
VHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKKyAgICAgICAgbV9zY3JvbGxpbmdQZXJm
b3JtYW5jZURhdGEgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1h
bmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJh
d2luZ0FyZWEpKTsKICAgICBlbHNlIGlmICghbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0
aW9uRW5hYmxlZCkKICAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBudWxscHRy
OwogfQpAQCAtOTE4MSw3ICs5MTgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3BlZWNo
U3ludGhlc2l6ZXIoKQogV2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVzaXNEYXRhJiBXZWJQYWdl
UHJveHk6OnNwZWVjaFN5bnRoZXNpc0RhdGEoKQogewogICAgIGlmICghbV9zcGVlY2hTeW50aGVz
aXNEYXRhKQotICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNE
YXRhIHsgc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgICAgICBt
X3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHJldHVybiAqbV9zcGVlY2hTeW50aGVzaXNEYXRh
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRl
eCA4YmRmOGNmODM4OGNkYzdiZmFjZmYyYjdlNjA1ZDBhODE4ZGFhYzY0Li45NjJmM2JlZDJkODI1
NjlhMDdkZDRlOWNkYWI4ZmNjNzIxMTlmN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2Fj
aGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxlKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIg
PSBnZW5lcmF0ZUFkZFJlcXVlc3RJZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nQWRkUmVxdWVz
dHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFByb2Nlc3M+
KHByb2Nlc3MuY29weVJlZigpKSk7CisgICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRkKHJlcXVl
c3RJZGVudGlmaWVyLCBtYWtlVW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29weVJlZigp
KSk7CiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlByb2Nlc3ND
YWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUoKTogQ2hlY2tpbmcgaWYgcHJvY2VzcyAlaSBpcyBy
ZXNwb25zaXZlIGJlZm9yZSBjYWNoaW5nIGl0Li4uIiwgdGhpcywgcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CiAgICAgcHJvY2Vzcy0+aXNSZXNwb25zaXZlKFt0aGlzLCBwcm9jZXNzUG9v
bCA9IG1ha2VSZWYocHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKSksIHJlcXVlc3RJZGVudGlmaWVyXShi
b29sIGlzUmVzcG9uc2l2ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCmluZGV4IGI5NzY3OTEwNTRiODI5NGQ5Zjc5ZTlmMGFhNGI5NmFiYTExNDM3YWIuLjky
ZDk3ZGUxMGFlODU1YjQyMzQyNjU2YWRkZTgwMDBiODc2ZjUwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIzMywxNSArMjMzLDE1IEBAIHN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFsVVJMU2No
ZW1lc1dpdGhDdXN0b21Qcm90CiBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2NvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbi5jb3B5KCkpCiAgICAgLCBtX2RlZmF1bHRQYWdlR3JvdXAoV2Vi
UGFnZUdyb3VwOjpjcmVhdGUoKSkKLSAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQotICAgICwgbV9hdXRvbWF0
aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQotICAg
ICwgbV9kb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+
KCkpCi0gICAgLCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNv
bnRleHRIaXN0b3J5Q2xpZW50PigpKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSkK
KyAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlQ2xpZW50PigpKQorICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpB
dXRvbWF0aW9uQ2xpZW50PigpKQorICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5pcXVlPEFQ
STo6RG93bmxvYWRDbGllbnQ+KCkpCisgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxB
UEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQorICAgICwgbV9jdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dD4oKSkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUo
KSkKICNpZiBQTEFURk9STShNQUMpCi0gICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNh
Z2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNh
bXBsZXI+KCp0aGlzKSkKLSAgICAsIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlcihz
dGQ6Om1ha2VfdW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkK
KyAgICAsIG1faGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIobWFrZVVuaXF1ZTxI
aWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwgbV9wZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8UGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2Fsd2F5c1J1bnNBdEJhY2tn
cm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlv
cml0eSgpKQogICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKG1fY29uZmln
dXJhdGlvbi0+c2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbigpKQpAQCAtMzY0LDcgKzM2
NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDbGllbnQoY29uc3QgV0tDb250
ZXh0Q2xpZW50QmFzZSogY2xpZW50KQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGllbnQ+JiYg
Y2xpZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAg
ICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9
IFdURk1vdmUoY2xpZW50KTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjppbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25uZWN0aW9u
Q2xpZW50Qgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4mJiBoaXN0b3J5Q2xpZW50KQog
ewogICAgIGlmICghaGlzdG9yeUNsaWVudCkKLSAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOworICAgICAg
ICBtX2hpc3RvcnlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZNb3ZlKGhp
c3RvcnlDbGllbnQpOwogfQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4dEhpc3Rv
cnlDCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpEb3dubG9hZENsaWVudD4mJiBkb3dubG9hZENsaWVudCkKIHsKICAgICBpZiAoIWRv
d25sb2FkQ2xpZW50KQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpOworICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9kb3du
bG9hZENsaWVudCA9IFdURk1vdmUoZG93bmxvYWRDbGllbnQpOwogfQpAQCAtMzkzLDcgKzM5Myw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGRvCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBdXRv
bWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+JiYgYXV0
b21hdGlvbkNsaWVudCkKIHsKICAgICBpZiAoIWF1dG9tYXRpb25DbGllbnQpCi0gICAgICAgIG1f
YXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50
PigpOworICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6QXV0b21h
dGlvbkNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IFdU
Rk1vdmUoYXV0b21hdGlvbkNsaWVudCk7CiB9CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkMKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5B
R0VSKQogICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQotICAgICAgICBtX2N1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CisgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsK
ICAgICBlbHNlCiAgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92
ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOwogI2VuZGlmCkBAIC00OTIsNyArNDkyLDcg
QEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgcmV0dXJuICptX25ldHdvcmtQcm9j
ZXNzOwogICAgIH0KIAotICAgIGF1dG8gbmV0d29ya1Byb2Nlc3MgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtQcm9jZXNzUHJveHk+KCp0aGlzKTsKKyAgICBhdXRvIG5ldHdvcmtQcm9jZXNzID0g
bWFrZVVuaXF1ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5PigqdGhpcyk7CiAKICAgICBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCkBAIC0yNTI4LDcgKzI1MjgsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYQogICAgICAgICBtX3ByZXdhcm1JbmZvcm1hdGlvblBl
clJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJlZ2lzdHJh
YmxlRG9tYWluLnJhbmRvbSgpKTsKIAogICAgIGF1dG8mIHZhbHVlID0gbV9wcmV3YXJtSW5mb3Jt
YXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4sIFtdIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0
aW9uPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQcmV3YXJtSW5mb3Jt
YXRpb24+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgKnZhbHVlID0gcHJld2Fy
bUluZm9ybWF0aW9uOwpAQCAtMjU3NSwxMiArMjU3NSwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSUQpCiAg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnRha2VVcGxvYWRBc3NlcnRpb24oKTsKICAgICAgICAg
CiAgICAgICAgIEFTU0VSVCghbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24pOwotICAgICAgICBt
X3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2Vy
dGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlv
blN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRB
c3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNz
SUQoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29y
a2luZyk7CiAgICAgfQogICAgIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNXaXRoVXBs
b2Fkcy5hZGQocHJvY2Vzc0lELCBudWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50
cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2Fk
cyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVu
Ym91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlBy
b2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKQEAgLTI2MTcsMTIg
KzI2MTcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxheWluZ0F1
ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmkKICAgICAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJUaGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBwbGF5aW5nIGF1ZGli
bGUgbWVkaWEgaXMgbm93IG9uZS4gVGFraW5nIFVJIHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwogCiAg
ICAgICAgIEFTU0VSVCghbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uKTsKLSAgICAg
ICAgbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQ
cm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxh
eWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1l
ZGlhUGxheWJhY2spOworICAgICAgICBtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3NlcnRpb24g
PSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldl
YktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2Vy
dGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CiAgICAgfQogCiAgICAgYXV0byByZXN1bHQgPSBt
X3Byb2Nlc3Nlc1BsYXlpbmdBdWRpYmxlTWVkaWEuYWRkKHByb2Nlc3NJRCwgbnVsbHB0cik7CiAg
ICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0ZTo6Rm9y
ZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0
ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk1YjU4NjM5ZjNjNDBjYzYzMDBhNDRmMmMw
NDQ5ZWZmZWY4YWQxMzYuLmJjZmRmM2EzOGQ3YmM3OTY2Y2Q4NzRlZDAyYmEwMzZkZmYzYzRhOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTUx
LDcgKzE1MSw3IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQ
b29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSoKICAgICAsIG1fdmlzaWJsZVBhZ2VD
b3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNp
dmVuZXNzVGltZXIoKTsgfSkKICAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0
b3JlKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgICwg
bV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8VXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQorICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5KG1ha2VVbmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMp
KQogI2VuZGlmCiAgICAgLCBtX2lzUHJld2FybWVkKGlzUHJld2FybWVkID09IElzUHJld2FybWVk
OjpZZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNr
aW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9CYWNraW5n
U3RvcmVDYWlyby5jcHAKaW5kZXggMTgyOTRkMzdmZTQ5ZWVkNmQ2OWRmZmZmNWYyZjY1MDcwYjY2
Y2Q5MC4uN2JkZDAzZDNjOGVjOGUwNjYyZTc3ZDAxODI1MGI1MDg4YzI2Y2ZiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcApA
QCAtNTQsMTIgKzU0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fp
cm8+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiAgICAgICAgIEdka1Zpc3VhbCogdmlz
dWFsID0gZ3RrX3dpZGdldF9nZXRfdmlzdWFsKG1fd2ViUGFnZVByb3h5LnZpZXdXaWRnZXQoKSk7
CiAgICAgICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ2RrX3Zpc3VhbF9nZXRfc2NyZWVuKHZpc3Vh
bCk7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNoYXJlZERp
c3BsYXkpLm5hdGl2ZSgpID09IEdES19TQ1JFRU5fWERJU1BMQVkoc2NyZWVuKSk7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oR0RL
X1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oR0RLX1dJTkRP
V19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCiAgICAgICAgICAgICBH
REtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSwg
bV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6ZSwg
bV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3Jl
QmFja2VuZENhaXJvSW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9p
ZCBCYWNraW5nU3RvcmU6OnBhaW50KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3Bl
Y3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90ZUluc3Bl
Y3RvckNsaWVudC5jcHAKaW5kZXggYjg3NGZiMGZiMmUyYTdlN2VjMzZjYzQ0ZTM5ZDYyNDkwNmE0
YzVmMS4uZjg4OGMwZjQ0NmM2MjcxMjdjODM3NWJlMGQ4MWE2YTNmMmMwOWY3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50Ojpjb25u
ZWN0aW9uQ2xvc2VkKCkKIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KHVpbnQ2
NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpCiB7CiAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX2luc3BlY3RvclByb3h5TWFwLmVuc3VyZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9u
SUQsIHRhcmdldElEKSwgW3RoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SURdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25u
ZWN0aW9uSUQsIHRhcmdldElEKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5z
cGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEKTsKICAgICB9KTsKICAg
ICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUtPnNob3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggMzgzMTAw
MDU4ODk0ZGVjMGZiN2I1MWNhYTA5YTIzOWQ3N2QwOGE4Yi4uODkzMjc5ZmJjZjU4YWVhZjJhZmQ2
YjFhNDdjMWM3NmMyM2Q4MmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKQEAgLTc5
LDkgKzc5LDkgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVx
dWlyZW1lbnRzKCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShPUEVOR0xf
RVMpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRl
bnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwg
IGZhbHNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBn
bEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAg
ZmFsc2UpOwogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5H
TD4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51
bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gbWFrZVVu
aXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52
ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgICAgICBpZiAoZ2xFeHRlbnNpb25zLT5zdXBw
b3J0cygiR0xfT0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09F
U19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKICAgICAgICAgICAgIGdsSW1hZ2VUYXJnZXRUZXh0dXJl
MkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9D
PihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAK
aW5kZXggZTlhZTY1NTJhN2EyZDg2MmM0YmQ0ZWUxMGVkMmVjMzZlOTJmODMxZC4uY2E2NTNlNWVi
YTcwYzk2MTU1ZmY3NjQ4OGMzZWRmNDI4MWY4NTcxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKQEAgLTIwMiw3ICsyMDIsNyBA
QCBTZWxlY3Rpb25EYXRhKiBEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdEYXRhU2VsZWN0aW9uKEdk
a0RyYWdDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcm9wcGluZ0Nv
bnRleHQ+JiBkcm9wcGluZ0NvbnRleHQgPSBtX2Ryb3BwaW5nQ29udGV4dHMuYWRkKGNvbnRleHQs
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWRyb3BwaW5nQ29udGV4dCkgewog
ICAgICAgICBHdGtXaWRnZXQqIHdpZGdldCA9IG1fcGFnZS52aWV3V2lkZ2V0KCk7Ci0gICAgICAg
IGRyb3BwaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RHJvcHBpbmdDb250ZXh0Pihjb250
ZXh0LCBwb3NpdGlvbik7CisgICAgICAgIGRyb3BwaW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8RHJv
cHBpbmdDb250ZXh0Pihjb250ZXh0LCBwb3NpdGlvbik7CiAgICAgICAgIFZlY3RvcjxHZGtBdG9t
PiBhY2NlcHRhYmxlVGFyZ2V0cyhQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS5kcm9wQXRv
bXNGb3JDb250ZXh0KHdpZGdldCwgZHJvcHBpbmdDb250ZXh0LT5nZGtDb250ZXh0KSk7CiAgICAg
ICAgIGRyb3BwaW5nQ29udGV4dC0+cGVuZGluZ0RhdGFSZXF1ZXN0cyA9IGFjY2VwdGFibGVUYXJn
ZXRzLnNpemUoKTsKICAgICAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBhY2NlcHRhYmxlVGFyZ2V0
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9z
aXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3Iu
Y3BwCmluZGV4IGNiZTM4MGIyNDBkOTYwMTExNzI3Yjc3MGE4MjVlMDllMDU0N2M5ZWQuLmMzZDk5
NzNjNzBkYzIwODljNjgzZDY1YTkxM2RhMjk0ZDVmZmViYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcApAQCAtNDIwLDkgKzQyMCw5
IEBAIGJvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0woKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRl
bnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNp
b25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0
ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNE
T3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxzZQotICAgIHN0ZDo6dW5pcXVlX3B0cjxF
eHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49
IDMyMCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNp
b25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6
Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgIGlmIChnbEV4dGVuc2lv
bnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikgfHwgZ2xFeHRlbnNpb25zLT5zdXBwb3J0
cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQogICAgICAgICBnbEltYWdlVGFyZ2V0VGV4
dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VT
UFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMiKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIubW0KaW5kZXggYzIzNDExYzFmMDliMDEwYTY1MjU0YjM2OWRkMzE2OWQzMWYwYzBl
MC4uNjFlODU5NGQ1YjdjNDFhYWY5ZmM4MmM2NTM4ZGI5YWQ3MTg1NjM0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5t
bQpAQCAtNTgsNyArNTgsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6fkVkaXRhYmxlSW1h
Z2VDb250cm9sbGVyKCkKIEVkaXRhYmxlSW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjpl
bnN1cmVFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lE
IGVtYmVkZGVkVmlld0lEKQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9lZGl0YWJsZUltYWdlcy5l
bnN1cmUoZW1iZWRkZWRWaWV3SUQsIFsmXSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0
YWJsZUltYWdlPiBpbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gbWFrZVVuaXF1ZTxF
ZGl0YWJsZUltYWdlPigpOwogICAgICAgICBpbWFnZS0+ZHJhd2luZ1ZpZXcgPSBtX3dlYlBhZ2VQ
cm94eS0+cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdWaWV3KGVtYmVkZGVkVmlld0lEKTsKICAg
ICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KaW5k
ZXggZDAzYTE3MjZhYjMzNGEwMGU2MGZiYzA1MGI1MGU1YzMzNzVhZjcyMC4uN2YwZjk0ODRmZDc3
NzRkZDExNTdhZTI4ODVjOTBhM2JmMmVlNzlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1t
CkBAIC02NSw3ICs2NSw3IEBAIC0gKHZvaWQpZGlkTW92ZVRvV2luZG93CiAgICAgaWYgKCFzZWxm
Ll9jb250ZW50Vmlldy53aW5kb3cgfHwgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNlbGYsIEBzZWxlY3RvcihfYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmlu
aXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOworICAgIF9hcHBsaWNhdGlvblN0YXRlVHJhY2tl
ciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4oc2VsZiwgQHNl
bGVjdG9yKF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCksIEBzZWxlY3RvcihfYXBwbGlj
YXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCksIEBzZWxl
Y3RvcihfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKSk7CiAgICAgCiAgICAgaWYgKF9s
YXN0T2JzZXJ2ZWRTdGF0ZVdhc0JhY2tncm91bmQgJiYgIVtzZWxmIGlzQmFja2dyb3VuZF0pCiAg
ICAgICAgIFtzZWxmIF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBjMjk5MjE0NThhZjAx
ZmQ5N2E0MDA5MmM3MTNmNjdjNDFmZjc3ZTdlLi4wNGY5YzZlMjcwMmU3ZDg3Y2U1NjhiZTIwMjEx
ZTcwNmQ3MWJjMmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlh
bGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByCiAgICAg
X3BhZ2UtPnNldERlbGVnYXRlc1Njcm9sbGluZyh0cnVlKTsKIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLSAgICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4oX3dlYlZpZXcpKTsKKyAgICBfcGFnZS0+c2V0RnVs
bHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4oX3dlYlZp
ZXcpKTsKICNlbmRpZgogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhdGlzdGljcygp
LndrVmlld0NvdW50Kys7CkBAIC0yMzksNyArMjM5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCYKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIF9wYWdlQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPihzZWxmLCB3ZWJWaWV3
KTsKKyAgICBfcGFnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4o
c2VsZiwgd2ViVmlldyk7CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogCiAgICAgcmV0dXJuIFtz
ZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25m
aWd1cmF0aW9uOldURk1vdmUoY29uZmlndXJhdGlvbildOwpAQCAtNTQxLDcgKzU0MSw3IEBAIC0g
KHZvaWQpX3dlYlZpZXdEZXN0cm95ZWQKIAogLSAoc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJh
d2luZ0FyZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6KFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5Jilwcm9jZXNzCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UsIHByb2Nlc3MpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4o
Kl9wYWdlLCBwcm9jZXNzKTsKIH0KIAogLSAodm9pZClfcHJvY2Vzc0RpZEV4aXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IGNlYWZkMTYzMmFiMzNmZTI4OGQ3ODhkYTcyYzgyMjE3YjRjMGRiMWIuLjhkMjNj
YTBmYTA1MzQxZGFkODU1YzMzYmI0MzgxZDFmNjMzMzY3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
ODA2LDcgKzgwNiw3IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogICAgIAogICAgIF9hY3Rp
b25TaGVldEFzc2lzdGFudCA9IGFkb3B0TlMoW1tXS0FjdGlvblNoZWV0QXNzaXN0YW50IGFsbG9j
XSBpbml0V2l0aFZpZXc6c2VsZl0pOwogICAgIFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQgc2V0RGVs
ZWdhdGU6c2VsZl07Ci0gICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4oc2VsZik7Cisg
ICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6U21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4oc2VsZik7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNp
bmdsZVRhcENvbW1pdCA9IE5POwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87CiAg
ICAgX2lzRG91YmxlVGFwUGVuZGluZyA9IE5POwpAQCAtODIxLDcgKzgyMSw3IEBAIC0gKHZvaWQp
c2V0dXBJbnRlcmFjdGlvbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoUExBVEZPUk1fRFJJVkVOX1RF
WFRfQ0hFQ0tJTkcpCi0gICAgX3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlcj4oKl9wYWdlKTsKKyAgICBfdGV4dENo
ZWNraW5nQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9s
bGVyPigqX3BhZ2UpOwogI2VuZGlmCiAKICAgICBfaGFzU2V0VXBJbnRlcmFjdGlvbnMgPSBZRVM7
CkBAIC0xMTk2LDcgKzExOTYsNyBAQCAtIChCT09MKWJlY29tZUZpcnN0UmVzcG9uZGVyRm9yV2Vi
VmlldwogICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoIV9pbnB1dFZpZXdVcGRhdGVEZWZl
cnJlcikKLSAgICAgICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKKyAgICAgICAgX2lucHV0
Vmlld1VwZGF0ZURlZmVycmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURl
ZmVycmVyPihzZWxmKTsKIAogICAgIEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXI7CiAgICAg
ewpAQCAtNTMzNyw3ICs1MzM3LDcgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihjb25zdCBX
ZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAgICAgICAg
Ly8gRGVmZXIgdmlldyB1cGRhdGVzIHVudGlsIHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiB0byBh
dm9pZCBhIG5vdGljZWFibGUgZmxhc2ggd2hlbiBzd2l0Y2hpbmcgZm9jdXMKICAgICAgICAgLy8g
YmV0d2VlbiBlbGVtZW50cyB0aGF0IHJlcXVpcmUgdGhlIGtleWJvYXJkLgogICAgICAgICBpZiAo
IWlucHV0Vmlld1VwZGF0ZURlZmVycmVyKQotICAgICAgICAgICAgaW5wdXRWaWV3VXBkYXRlRGVm
ZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+
KHNlbGYpOworICAgICAgICAgICAgaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBtYWtlVW5pcXVl
PFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOwogICAgICAgICBbc2VsZiBf
ZWxlbWVudERpZEJsdXJdOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggODJkMzU0MjE3YjcwNjQyMDFlM2Q3YjA3NmU1YjA1
OWI5NjAxMWNmMy4uMzFiN2Q4MzBkMzA3ZmFkODVjMjZkNThjMGVmNmE3MmIyMzU4OTMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC05
MTIsNyArOTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1cyhjb25zdCBG
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbiwKICAgICBBUEk6Ok9iamVjdCog
dXNlckRhdGFPYmplY3QgPSBwcm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCk7CiAgICAgaWYgKG1fZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9z
dExheW91dERhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gZWxpbWlu
YXRlIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgYWx0b2dldGhlciwgaW4gZmF2
b3Igb2Ygb25seSBkZWZlcnJpbmcgYWN0aW9ucyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gcG9zdC1s
YXlvdXQgZWRpdG9yIHN0YXRlIGluZm9ybWF0aW9uLgotICAgICAgICBtX2RlZmVycmVkRWxlbWVu
dERpZEZvY3VzQXJndW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50RGlkRm9jdXNBcmd1
bWVudHM+KEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7IGluZm9ybWF0aW9uLCB1c2VySXNJbnRl
cmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIHVzZXJEYXRh
T2JqZWN0IH0pOworICAgICAgICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1lbnRzID0g
bWFrZVVuaXF1ZTxFbGVtZW50RGlkRm9jdXNBcmd1bWVudHM+KEVsZW1lbnREaWRGb2N1c0FyZ3Vt
ZW50cyB7IGluZm9ybWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwg
YWN0aXZpdHlTdGF0ZUNoYW5nZXMsIHVzZXJEYXRhT2JqZWN0IH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVx
dWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChSZWY8Vwog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IFdlYlBhZ2VQ
cm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSYgcGF5bWVudENvb3JkaW5hdG9yUHJveHksIFBLUGF5bWVudFJlcXVl
c3QgKnBheW1lbnRSZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGluYXRvclByb3h5LCBw
YXltZW50UmVxdWVzdCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0
KTsKIH0KIAogVUlWaWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCmluZGV4IDgzNDM0ODg5Y2RjZjI0OWMxYzI3OTFiZDA3YmZmZmEyMDFjZjQ4N2QuLmE5MTI5
NTNlYzkxYzI3MzM2MjY3NjNkYWY5ZGEyNmIyNDkzM2M2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTEwOCw3ICsxMDgsNyBA
QCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoTlNWaWV3KiB2aWV3LCBXS1dlYlZpZXcg
KndlYlZpZXcpCiAgICAgOiBQYWdlQ2xpZW50SW1wbENvY29hKHdlYlZpZXcpCiAgICAgLCBtX3Zp
ZXcodmlldykKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICAsIG1fYWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyPigpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIobWFrZVVu
aXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCiAjZW5kaWYKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIubW0KaW5kZXggYjU0N2RjMjcyYzI5Y2VmOGE4NGIxNjBkZWMxOWRhODBiMzM4
MTFhMi4uMzRhNjliYmUwYmIwZDE3NmI1NTFiYWYyZDdhMzVjMWZhYWMwMzdhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIubW0KQEAgLTE1MSw3ICsxNTEsNyBAQCAtIChpZClpbml0V2l0aFdpbmRvdzoo
TlNXaW5kb3cgKil3aW5kb3cgd2ViVmlldzooTlNWaWV3ICopd2ViVmlldyBwYWdlOihXZWJLaXQ6
OgogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKICAgICBfcGFnZSA9ICZwYWdlOwogCi0gICAgX3Zp
ZGVvRnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+KCk7CisgICAgX3Zp
ZGVvRnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+KCk7CiAgICAgX3ZpZGVvRnVs
bHNjcmVlbkNsaWVudC0+c2V0UGFyZW50KHNlbGYpOwogCiAgICAgW3NlbGYgdmlkZW9Db250cm9s
c01hbmFnZXJEaWRDaGFuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggOWQ0NWQyMTAxMTBkYTk5MzAxYmMyMDBlZTM1M2Fm
YzllZWQ1NWRhMS4uNjlkOWQ5ZTJkNDQ0ODQzZDE1MjcwZjUxMTdmNzc0Y2QyMzdkNWRiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1t
CkBAIC0xNjksOCArMTY5LDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZTooV2ViS2l0
OjpXZWJQYWdlUHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICopdmlldyB1c2UKICAgICBfdmlldyA9
IHZpZXc7CiAgICAgX3VzZVBsYXRmb3JtRmluZFVJID0gdXNlUGxhdGZvcm1GaW5kVUk7CiAgICAg
Ci0gICAgX3BhZ2UtPnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOwor
ICAgIF9wYWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6VGV4dEZp
bmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudChtYWtlVW5p
cXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKIAogICAgIHJldHVybiBz
ZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90
ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlZDBkNWZmZTk1ODlmOTVlNDRhMDdmMjIxOGVk
ODJjMDBmMDE3ZDdlLi5lNzRhZGFjMWU2NWViZTVjOTliMzFkOTA2N2FlNjExNThmMzk4N2YxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
Q2xpZW50OjpkaWRDbG9zZShDb25uZWN0aW9uSUQpCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVu
dDo6aW5zcGVjdChDb25uZWN0aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJnZXRJRCwg
Y29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQ
cm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0
aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCAmdHlwZV0gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwg
dGFyZ2V0SUQsIHR5cGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0
b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwogICAgIH0pOwog
CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAppbmRleCAxYjZkOWNjNTRmYzYwYjUzZTQ0MDI3MWYyMzA4ZTdjMGY0N2M4NzRj
Li5hODgzM2Y2MjQ4N2Y5YTY3MjEwMzk5ZWM5ZjhmZjVlMDkyNzEyZWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBh
Z2VQcm94eSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogY2xpZW50ID0gbV9pbnNwZWN0
b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAmcmVxdWVz
dFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JD
bGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgp
LnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVj
dG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBv
cnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogCiAg
ICAgLy8gU2V0dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVy
ID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3Js
ZDo6bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhh
bmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImlu
c3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAgICAgcGFn
ZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgaHRtbEJ1
aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0
b3JlRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9y
ZURpcmVjdDJELmNwcAppbmRleCBiNjdkNzNhNGRjNDg4YjMxZmRjOWE0NzIxOTY5MTQwNDI3NDQ4
ODI1Li41ZDUwYWU1NTQ2ODBhNmU5ZTNkYTJjZTg0YmU1NjRkNWMzMjM3ZjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6dW5pcXVl
X3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFj
a2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3JlQmFja2Vu
ZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUsIG1fZGV2
aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQyRDFSZW5k
ZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGNkNmYwOGZmMThi
ZDU1YzE1NTQ0NjNkNGE0MGI1MWU0NWIyZWFiOWYuLjAzMDdjNGY5ZjE0M2Y4NmRjNjIwOGI0ODRi
ZThkYjQyMmRjMGY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9Q
YWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VD
bGllbnRJbXBsLmNwcApAQCAtNDYsNyArNDYsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVu
dEltcGwoV2ViVmlldyYgdmlldykKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rp
b25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNz
PigqbV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsK
IH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJD
b3JlOjpSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cAppbmRleCBjZDUzNTJkZjdhYTA0ZTY5ZDliMGY5OGVkMDAxZTVjNjMzMmY3NTkzLi42N2U1ZTRi
MjdhM2FlODBhYjY2OGY2YzM0MTdjMGYwY2U2YjdmMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBXZWJWaWV3OjpyZWdp
c3RlcldlYlZpZXdXaW5kb3dDbGFzcygpCiB9CiAKIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0
LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBhcmVu
dFdpbmRvdykKLSAgICA6IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJ
bXBsPigqdGhpcykpCisgICAgOiBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50SW1w
bD4oKnRoaXMpKQogewogICAgIHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlk
ZXIuY3BwCmluZGV4IDRmODEwY2NmMzhlY2ZhMmM5OWVjYmRhODlkMDQxY2ViOGQyMzMzYjguLmFh
YjM0NTdjZWQ2NGE1YTkxMGNkYzU2MmFjYzAxMTUwMGQzYzZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcApA
QCAtNjIsNyArNjIsNyBAQCB2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdhbWVw
YWRzKGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVwYWREYQogICAgICAgICBpZiAoZ2Ft
ZXBhZERhdGFzW2ldLmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
bV9nYW1lcGFkc1tpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBhZERhdGFz
W2ldKTsKKyAgICAgICAgbV9nYW1lcGFkc1tpXSA9IG1ha2VVbmlxdWU8V2ViR2FtZXBhZD4oZ2Ft
ZXBhZERhdGFzW2ldKTsKICAgICAgICAgbV9yYXdHYW1lcGFkc1tpXSA9IG1fZ2FtZXBhZHNbaV0u
Z2V0KCk7CiAgICAgfQogfQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFdlYkdhbWVwYWRQcm92aWRl
cjo6Z2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYgZ2FtZXBhZERhdGEpCiAKICAg
ICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0pOwogCi0gICAgbV9nYW1l
cGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBhZD4o
Z2FtZXBhZERhdGEpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0gPSBtYWtl
VW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhKTsKICAgICBtX3Jhd0dhbWVwYWRzW2dhbWVw
YWREYXRhLmluZGV4KCldID0gbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXS5nZXQoKTsK
IAogICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAK
aW5kZXggZjNlYzcyMDg3Y2EyODg2N2Y1NGQ5ZGYwZjUwZDg3MTAyZTAxNmZhMi4uY2E4NWQ1ODVk
Y2YxYjc2ZWYwYjhkMTFkNTlhZDY2MDRhYzNmMTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlR2V0VHlwZUlEKCkKIAogdm9pZCBXS0J1
bmRsZVNldENsaWVudChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlQ2xpZW50QmFzZSAq
d2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGllbnQpKTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJL
aXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxl
U2V0U2VydmljZVdvcmtlclByb3h5Q3JlYXRpb25DYWxsYmFjayhXS0J1bmRsZVJlZiBidW5kbGVS
ZWYsIHZvaWQgKCpjYWxsYmFjaykodWludDY0X3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cAppbmRleCBmMTJhNWJhNzc0ZDZjYzY4ZDA4NGYxZjYwMjFjZWJmMzgxYWEzYTU4Li5kYzA3NThh
ZDc1YWYzNjFkZmJlODE2ZWIxMTNmNDFjN2YwOWQ4MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcApAQCAtNzcsNyArNzcsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VHZXRUeXBlSUQo
KQogdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+
c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
V2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5V
U0VEX1BBUkFNKHdrQ2xpZW50KTsKQEAgLTg2LDIyICs4NiwyMiBAQCB2b2lkIFdLQnVuZGxlUGFn
ZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBh
Z2VDb250ZQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0g
ICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KHdrQ2xpZW50ID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudD4oKndrQ2xpZW50KSA6IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6RWRpdG9yQ2xpZW50PigpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQod2tDbGllbnQgPyBtYWtlVW5pcXVlPFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pigqd2tDbGllbnQpIDogbWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkpOwogfQogCiB2b2lkIFdLQnVuZGxl
UGFnZVNldEZvcm1DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUZv
cm1DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+
c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBs
KHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tC
dW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0lt
cGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Pih3a0NsaWVudCkp
OworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxvYWRDbGll
bnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmpl
Y3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktp
dDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudCht
YWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Pih3
a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50QmFzZSogd2tDbGllbnQp
CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNsaWUKIAogdm9pZCBXS0J1
bmRsZVBhZ2VTZXRVSUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdl
VUlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+
c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlVUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwocGFn
ZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFn
ZVNldEZ1bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFn
ZUZ1bGxTY3JlZW5DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2VPdmVybGF5LmNwcAppbmRleCAzMTQzMmY4OThmZGI0ZTlmY2ZiYzZjZGI4Yzg0YTllNTUx
ZTI4NTY5Li42OWY3YWYyMmI1Njc1MDRkNGYzMWYwZDdhNzBiODc0ZTA5ZmE1NWEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAg
V0tUeXBlSUQgV0tCdW5kbGVQYWdlT3ZlcmxheUdldFR5cGVJRCgpCiAKIFdLQnVuZGxlUGFnZU92
ZXJsYXlSZWYgV0tCdW5kbGVQYWdlT3ZlcmxheUNyZWF0ZShXS0J1bmRsZVBhZ2VPdmVybGF5Q2xp
ZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgYXV0byBjbGllbnRJbXBsID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNsaWVudElt
cGwgPSBtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4od2tDbGllbnQpOwogICAgIHJl
dHVybiB0b0FQSSgmV2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6Y3JlYXRlKFdURk1vdmUoY2xpZW50
SW1wbCkpLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRs
ZVBhZ2VCYW5uZXJNYWMubW0KaW5kZXggYzY4OWU4OWNkMGUwNjQxYmE5YjU3ZDk4ZWQ4M2MwZmI2
NGY0YjU4OC4uZDZmZmQxY2NjMDRhOTNhN2EwOWQyYjM2NTU5YThmMGMwOTUwZmYxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9X
S0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KQEAgLTEwNCw3
ICsxMDQsNyBAQCBXS0J1bmRsZVBhZ2VCYW5uZXJSZWYgV0tCdW5kbGVQYWdlQmFubmVyQ3JlYXRl
QmFubmVyV2l0aENBTGF5ZXIoQ0FMYXllciAqbGF5ZXIsCiAgICAgaWYgKHdrQ2xpZW50ICYmIHdr
Q2xpZW50LT52ZXJzaW9uKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8gY2xpZW50SW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlQmFubmVyQ2xpZW50SW1wbD4od2tDbGll
bnQpOworICAgIGF1dG8gY2xpZW50SW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlQmFubmVy
Q2xpZW50SW1wbD4od2tDbGllbnQpOwogICAgIHJldHVybiB0b0FQSSgmV2ViS2l0OjpQYWdlQmFu
bmVyOjpjcmVhdGUobGF5ZXIsIGhlaWdodCwgY2xpZW50SW1wbC5yZWxlYXNlKCkpLmxlYWtSZWYo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAKaW5k
ZXggNzRlZDdjNGIyZmRkOTk3ZTFlNWJjYzMyNjMxYWI3NjU5NDI2NjVkNy4uMjJiNDBlNDM5YmJi
NjAxNWUxOGFhOGMyNTU4ZTBlNjkzZjVlYjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RP
TS9ET01PYmplY3RDYWNoZS5jcHAKQEAgLTc4LDE0ICs3OCw2IEBAIHN0YXRpYyBET01PYmplY3RD
YWNoZUZyYW1lT2JzZXJ2ZXJNYXAmIGRvbU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcnMoKQogICAg
IHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdl
dE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1lJiBmcmFt
ZSkKLXsKLSAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6OkFkZFJlc3VsdCByZXN1
bHQgPSBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZmcmFtZSwgbnVsbHB0cik7
Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXI+KGZyYW1l
KTsKLSAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KIGNsYXNzIERPTU9i
amVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC0xMDcsNyArOTksNyBAQCBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIgZmluYWw6
IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZQogICAgICAgICBpZiAoZG9t
V2luZG93ICYmICghbV9kb21XaW5kb3dPYnNlcnZlciB8fCBtX2RvbVdpbmRvd09ic2VydmVyLT53
aW5kb3coKSAhPSBkb21XaW5kb3cpKSB7CiAgICAgICAgICAgICAvLyBOZXcgRE9NV2luZG93LCBj
bGVhciB0aGUgY2FjaGUgYW5kIGNyZWF0ZSBhIG5ldyBET01XaW5kb3dPYnNlcnZlci4KICAgICAg
ICAgICAgIGNsZWFyKCk7Ci0gICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOworICAgICAg
ICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IG1ha2VVbmlxdWU8RE9NV2luZG93T2JzZXJ2ZXI+
KCpkb21XaW5kb3csICp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fb2JqZWN0cy5hcHBl
bmQoJmRhdGEpOwpAQCAtMTkzLDYgKzE4NSwxNCBAQCBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1l
T2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxET01XaW5kb3dPYnNlcnZlcj4gbV9kb21XaW5kb3dPYnNlcnZl
cjsKIH07CiAKK3N0YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9yQ3JlYXRl
RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkKK3sKKyAg
ICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21P
YmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZmcmFtZSwgbnVsbHB0cik7CisgICAgaWYg
KHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXI+KGZyYW1lKTsKKyAgICByZXR1cm4g
KnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgc3Rk
Ojp1bmlxdWVfcHRyPERPTU9iamVjdENhY2hlRGF0YT4+IERPTU9iamVjdE1hcDsKIAogc3RhdGlj
IERPTU9iamVjdE1hcCYgZG9tT2JqZWN0cygpCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBET01P
YmplY3RDYWNoZTo6cHV0KHZvaWQqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikKIHsKICAg
ICBET01PYmplY3RNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RzKCkuYWRkKG9iamVj
dEhhbmRsZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZURh
dGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CiB9CiAK
IHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5kbGUsIHZv
aWQqIHdyYXBwZXIpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6cHV0
KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikKICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdy
YXBwZXIpKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxET01PYmpl
Y3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKICAgICBpZiAoV2ViQ29yZTo6RnJhbWUq
IGZyYW1lID0gb2JqZWN0SGFuZGxlLT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGdldE9y
Q3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKCpmcmFtZSkuYWRkT2JqZWN0Q2FjaGVE
YXRhKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCA0Y2NlYzYyZWYwZTExMzFmYTEzZjdm
YjA2MGM4MGUwN2VlNDI1MWFmLi40ZDc0MmU0MDliYmZjN2NmYWI0MDhjZDY1MzhhZWY5ZjIyOGZk
NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIu
Y3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJLaXRFeHRlbnNpb25NYW5hZ2VyOjppbml0
aWFsaXplKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIEFQSTo6T2JqZWN0KiB1c2UKICAgICBzY2Fu
TW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBtb2R1bGVQYXRocyk7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1
dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKKyAg
ICAgICAgYXV0byBtb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0aHNbaV0pOwog
ICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGlmIChpbml0aWFsaXplV2ViRXh0ZW5zaW9uKG1vZHVsZS5nZXQoKSwgdXNlckRhdGEuZ2V0
KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAppbmRleCAwNDA3MmVi
ODY0ZGJlMzVmODBkZmM4NmFkMGU4ODNjM2U5OWNlNDRmLi5jY2I1MWUwZDk2NDBjNjZmODU5NmU0
NzQxNzE0MDU4ZTkxMzk3Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9y
LmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRXZWJFZGl0b3IqIHdlYmtpdFdlYkVkaXRvckNy
ZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIFdlYktpdFdlYkVkaXRvciogZWRp
dG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9FRElU
T1IsIG51bGxwdHIpKTsKICAgICBlZGl0b3ItPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwotICAg
IHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOworICAgIHdl
YmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dChtYWtlVW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOwogICAgIHJldHVybiBlZGl0
b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKaW5k
ZXggNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5NjEyOTlhNzAxMDgxNzUwMS4uZTMwNmUzZmVmMjYz
MWQ1NDY2NTU3MTE2ZTVlNDg3ZDM3MWM3ODU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBXZWJFeHRlbnNp
b25JbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxl
OjpDbGllbgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUoSW5q
ZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
biA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRVhU
RU5TSU9OLCBOVUxMKSk7Ci0gICAgYnVuZGxlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxX
ZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7CisgICAgYnVuZGxl
LT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4o
ZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGZjNWQ5NWZmYzQ5MTk1ZmI0MjdkNGNkYjBmZTU1YWI1
MGQzODU1NDAuLmM5MjA0YjIzOTgxZDdmMTdhZDA3M2I5ZWQ0MTJhODc3Njg1Y2U3ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0
aWMgV2ViS2l0RnJhbWUqIHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUoV2ViRnJhbWUqIHdlYkZyYW1l
KQogICAgIGlmICh3cmFwcGVyUHRyKQogICAgICAgICByZXR1cm4gd3JhcHBlclB0ci0+d2Via2l0
RnJhbWUoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+IHdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEZyYW1lV3JhcHBlcj4oKndlYkZyYW1lKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gbWFrZVVuaXF1
ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CiAgICAgd3JhcHBlclB0ciA9IHdyYXBw
ZXIuZ2V0KCk7CiAgICAgd2ViRnJhbWVNYXAoKS5zZXQod2ViRnJhbWUsIFdURk1vdmUod3JhcHBl
cikpOwogICAgIHJldHVybiB3cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgpOwpAQCAtNjc5LDExICs2
NzksMTEgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJQYWdlKiB3ZWJQ
YWdlKQogICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSBXRUJLSVRfV0VCX1BBR0UoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9QQUdFLCBOVUxMKSk7CiAgICAgcGFnZS0+cHJpdi0+d2ViUGFn
ZSA9IHdlYlBhZ2U7CiAKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9h
ZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBhZ2UpKTsK
LSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0
ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb250ZXh0TWVu
dUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJ
bmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRm9ybUNsaWVudD4o
cGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50
KG1ha2VVbmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2Ut
PnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFBhZ2VMb2FkZXJD
bGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51
Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50PihwYWdlKSk7CisgICAgd2Vi
UGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFBhZ2VVSUNsaWVudD4o
cGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5p
cXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7CiAKICAgICByZXR1cm4gcGFnZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
RE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KaW5kZXggODEwNTVjZTdmZGViYTMxOGRh
YjA2ODI2MzRjNmJkODRhMzdmYWU4Yy4uMDg0ZjMwMDVkNjEwM2Q0ZTI1MDMzYzI1NmM3MGMwZTA2
NDA0MWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KQEAgLTQ1
LDcgKzQ1LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooV0tET01SYW5nZSAqKXJhbmdlCiAgICAg
aWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRJdGVyYXRvciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJh
bmdlKHJhbmdlKSk7CisgICAgX3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGV4
dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0ODgwMGJiMzE3
OTA2NWU0ZTczMjkzMDY5MDU0NjgwZTQzNGFmMWZmLi40MjAyMzk2YWJhZmFmMzBkNzE4OWFlYjY4
NTA5ZWEyNzE3MWI5NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC01
NDQsNyArNTQ0LDcgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNz
UGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4pZm9ybURlbGVnYXQKICAgICB9OwogCiAgICAgaWYg
KGZvcm1EZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNl
dEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsK
ICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobnVs
bHB0cik7CiB9CkBAIC02NzMsNyArNjczLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRl
OihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAg
ICB9OwogCiAgICAgaWYgKGVkaXRpbmdEZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50PihzZWxmKSk7Cisg
ICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5pcXVlPENs
aWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggYjBkY2I5
MDAwYmU5MTUyOGM3YzA3MWY2NmQ3ZThjMzAxY2U5NWE3Ni4uZTQ1NTI2MTgwYzAxYmJkMzVhZTUy
NWU4MjViZDdkNGFjZmRmOWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlKFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIEluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1
bmRsZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAg
IDogbV9wYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgICwgbV9wbGF0Zm9y
bUJ1bmRsZSgwKQotICAgICwgbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpDbGllbnQ+KCkpCisgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkNsaWVudD4oKSkKIHsKIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIEluamVjdGVk
QnVuZGxlOjp+SW5qZWN0ZWRCdW5kbGUoKQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+JiYgY2xpZW50KQog
ewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOworICAgICAgICBtX2NsaWVudCA9IG1ha2VV
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAg
bV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDczMzUyNzY1ODcx
ZDgyNTVhMjNkYjdiNTVlNmQ0NGVlNzMzOTIyZDcuLjJlNTdhZjI0ODNiZDM2YjNkZDg1ZTRlYzE4
ZGRlMTBmNDQzNmU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMzIsMzggKzEzMiwxMSBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRNZXNzYWdlKFQmJiBtZXNz
YWdlLCBzaXplX3QgYnl0ZQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLVdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17
Ci0gICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOwotICAgIGlmICgh
aW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFNlbmRG
YWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2Vu
ZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgbWVz
c2FnZSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2Vz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdlKSk7Ci0KLSAg
ICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KLVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlEYXRh
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQotewotICAgIGlmICgh
aW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFNlbmRG
YWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgc2Vu
ZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6
RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRh
dGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7Ci0gICAgZWxz
ZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nTWVzc2FnZT4oYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwotCi0gICAg
cmV0dXJuIFNlbmRTdWNjZXNzOwotfQotCiBjbGFzcyBCbG9iTG9hZGVyIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEJsb2JMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3Vt
ZW50LCBXZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9sb2FkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJD
b3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNB
cnJheUJ1ZmZlciwgdGhpcykpCisgICAgICAgIDogbV9sb2FkZXIobWFrZVVuaXF1ZTxXZWJDb3Jl
OjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNBcnJh
eUJ1ZmZlciwgdGhpcykpCiAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkKICAgICB7CiAgICAgICAgIG1fbG9hZGVyLT5zdGFydChkb2N1bWVu
dCwgYmxvYik7CkBAIC0yMjYsNyArMTk5LDcgQEAgY2xhc3MgUGVuZGluZ01lc3NhZ2UgewogCiAg
ICAgUGVuZGluZ01lc3NhZ2UoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJDb3JlOjpC
bG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgICAgIDogbV90eXBlKFR5cGU6OkJsb2IpCi0gICAgICAgICwgbV9ibG9iTG9hZGVyKHN0
ZDo6bWFrZV91bmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJsb2IsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKSkKKyAgICAgICAgLCBtX2Jsb2JMb2FkZXIobWFrZVVuaXF1ZTxCbG9iTG9h
ZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKQogICAgIHsK
ICAgICB9CiAKQEAgLTI0NCwxMyArMjE3LDQwIEBAIGNsYXNzIFBlbmRpbmdNZXNzYWdlIHsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogfTsKIAorV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJbkJ5dGVz
KCk7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAgICAg
ICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgp
KQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNl
bmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgbV9w
ZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1lc3NhZ2Up
KTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKworV2ViU29ja2V0Q2hhbm5lbDo6U2Vu
ZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGJp
bmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCit7Cisg
ICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAgICAgICByZXR1
cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgpKQorICAg
ICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRh
IHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFy
eURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsK
KyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBl
bmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CisKKyAg
ICByZXR1cm4gU2VuZFN1Y2Nlc3M7Cit9CisKIFdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChXZWJDb3JlOjpCbG9iJiBibG9iKQogewogICAgIC8vIEF2
b2lkIHRoZSBCbG9iIHF1ZXVlIGFuZCBsb2FkaW5nIGZvciBlbXB0eSBibG9icy4KICAgICBpZiAo
IWJsb2Iuc2l6ZSgpKQogICAgICAgICByZXR1cm4gc2VuZChKU0M6OkFycmF5QnVmZmVyOjpjcmVh
dGUoYmxvYi5zaXplKCksIDEpLCAwLCAwKTsKIAotICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9i
LCBbdGhpc10geworICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRp
bmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9iLCBbdGhpc10gewogICAgICAgICB3aGls
ZSAoIW1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0byYgbWVz
c2FnZSA9IG1fcGVuZGluZ01lc3NhZ2VzLmZpcnN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwCmluZGV4IDcyOWIyNDVkOWQ5ZGQ3ZThmYjM2OGUxZjQzYTM2NGFjZjBmNjY4OGIuLjNkODlk
ZDdkZTUzNDYxYzRiM2E2N2Y0MzE1YjAyZDUwNjRhOWUxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3Zp
ZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9yeSA6IHB1
YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKIAogcnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9ic2VydmVy
LCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rp
b24ob2JzZXJ2ZXIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdvcmsoKS5t
b25pdG9yKCksICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzdGQ6Om1h
a2VfdW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFj
dG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29sdmVyRmFj
dG9yeT4oKSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25Mb2NhbGhv
c3RDb25uZWN0aW9ucygpCkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3MgUlRDU29ja2V0RmFjdG9y
eSBmaW5hbCA6IHB1YmxpYyBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8cnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRl
U29ja2V0RmFjdG9yeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIHVzZXJBZ2Vu
dCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSVENTb2NrZXRGYWN0b3J5PihzZXNz
aW9uSUQsIFdURk1vdmUodXNlckFnZW50KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UlRDU29j
a2V0RmFjdG9yeT4oc2Vzc2lvbklELCBXVEZNb3ZlKHVzZXJBZ2VudCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcAppbmRleCBm
OGI3ZWQyMjljNGY2ZjJkYzAzNjEzMmNjOTZlNDExZWVjYTU3MDJlLi4yMzU4MmRlNzU5Yjk4NDVl
YjdmZTQwNjQ0MzY1ZWZiYzE5Yjc1ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3Rv
cnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRBZGRyZXNz
IHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIAogcnRjOjpB
c3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2VydmVyVGNw
U29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9y
dCwgdWludDE2X3QgbWF4UG9ydCwgaW50IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJ
ZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwgYWRkcmVzcywgcnRj
OjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJS
VENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29j
a2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKICAg
ICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCiAg
ICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigpLCBh
ZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9uTG9jYWxo
b3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0LCBvcHRpb25zXSgpIHsKQEAgLTY2LDcg
KzY2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6
Y3JlYXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3luY1BhY2tldFNvY2tl
dCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNvbnN0IHJ0Yzo6U29j
a2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCkK
IHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0Pigq
dGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6
VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0byBzb2NrZXQgPSBt
YWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlm
aWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRjOjpTb2NrZXRBZGRy
ZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5n
ZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0gc29ja2V0LT5pZGVu
dGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVzcyhhZGRyZXNzLCBtX2Rpc2Fi
bGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1heFBvcnRdKCkgewpAQCAtODAs
NyArODAsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5
OjpjcmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZQogCiBydGM6OkFzeW5jUGFja2V0U29j
a2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQoY29uc3Qg
cnRjOjpTb2NrZXRBZGRyZXNzJiBsb2NhbEFkZHJlc3MsIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYgcmVtb3RlQWRkcmVzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcmJiB1c2Vy
QWdlbnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGli
V2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywgcmVtb3RlQWRkcmVz
cyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMs
ICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OkNsaWVu
dFRDUCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNldFN0YXRl
KExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVElORyk7CiAgICAgbV9zb2NrZXRzLnNldChz
b2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtOTYsNyArOTYsNyBAQCBy
dGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVDbGll
bnRUY3BTb2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJS
VENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KExpYldlYlJUQ1NvY2tl
dCYgc2VydmVyU29ja2V0LCB1aW50NjRfdCBuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllciwg
Y29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzKQogewotICAgIGF1dG8gc29j
a2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVl
U29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9u
VENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJlc3MpOworICAgIGF1
dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVl
U29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9u
VENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJlc3MpOwogICAgIHNv
Y2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05ORUNURUQpOwogICAgIG1f
c29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKQEAgLTEx
Nyw3ICsxMTcsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmRldGFjaChMaWJXZWJS
VENTb2NrZXQmIHNvY2tldCkKIAogcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlKiBMaWJXZWJS
VENTb2NrZXRGYWN0b3J5OjpjcmVhdGVBc3luY1Jlc29sdmVyKCkKIHsKLSAgICBhdXRvIHJlc29s
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytzX3VuaXF1ZVJlc29s
dmVySWRlbnRpZmllcik7CisgICAgYXV0byByZXNvbHZlciA9IG1ha2VVbmlxdWU8TGliV2ViUlRD
UmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOwogICAgIGF1dG8qIHJlc29s
dmVyUG9pbnRlciA9IHJlc29sdmVyLmdldCgpOwogICAgIG1fcmVzb2x2ZXJzLnNldChyZXNvbHZl
clBvaW50ZXItPmlkZW50aWZpZXIoKSwgV1RGTW92ZShyZXNvbHZlcikpOwogICAgIHJldHVybiBy
ZXNvbHZlclBvaW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXgg
MTZhMWE3ZjgzNDQ2MDUzZjMzZDY1NGU4MzMzMjI5NTBlZTk5NGQ3Mi4uZDczZjFmMTZmODkwNzY5
YzcyY2M5ZGQ0NDBkMjI5MjFmZjVmZmE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1
bmNzLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3Rv
ciB7CiAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoTmV0c2NhcGVQbHVn
aW4qIHBsdWdpbikKICAgICB7CiAgICAgICAgIGlmIChwbHVnaW4pCi0gICAgICAgICAgICBtX3By
b3RlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1
Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRyb2xsZXIo
KSk7CisgICAgICAgICAgICBtX3Byb3RlY3RvciA9IG1ha2VVbmlxdWU8UGx1Z2luQ29udHJvbGxl
cjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdp
biktPmNvbnRyb2xsZXIoKSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcAppbmRleCA2OWEzYzkzZjEzMjZmYTRjNmY3ZmViZjhhYjFiMmNhNGM3NzZiYzBlLi41
OWY0ODI1MWYyODg1NGM2ZDE2ODBiMWQ2NGRmYWE1YTQ3YzY4MTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgdWludDMyX3QgTmV0c2NhcGVQbHVnaW46OnNj
aGVkdWxlVGltZXIodW5zaWduZWQgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCB2b2lkICgqdGkKICAg
ICAvLyBGSVhNRTogSGFuZGxlIHdyYXBwaW5nIGFyb3VuZC4KICAgICB1bnNpZ25lZCB0aW1lcklE
ID0gKyttX25leHRUaW1lcklEOwogCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8
VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CisgICAg
YXV0byB0aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCBy
ZXBlYXQsIHRpbWVyRnVuYyk7CiAgICAgCiAgICAgLy8gRklYTUU6IEJhc2VkIG9uIHRoZSBwbHVn
LWluIHZpc2liaWxpdHksIGZpZ3VyZSBvdXQgaWYgd2Ugc2hvdWxkIHRocm90dGxlIHRoZSB0aW1l
ciwgb3IgaWYgd2Ugc2hvdWxkIHN0YXJ0IGl0IGF0IGFsbC4KICAgICB0aW1lci0+c3RhcnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAwNDk2MjhmNWM2MjcwMmU0
ZDVkNDExMTgyMDEyM2JhNWY0Yjk2NTI0Li5iZGFhMTQ0Nzg0MjI2OTVkNTBlYTg0OGFhZmNjYmNl
MTJkMmFkOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC0xOTMs
NyArMTkzLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEoY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUgIT0gTlBf
QVNGSUxFT05MWSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAgICAgICAg
bV9kZWxpdmVyeURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4oKTsKKyAg
ICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7
CiAKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2VydmVDYXBhY2l0eShtX2RlbGl2ZXJ5RGF0
YS0+c2l6ZSgpICsgbGVuZ3RoKTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPmFwcGVuZChieXRl
cywgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmluZGV4IDQ0
ZDExYjU3YzNlYTZkNTE4YzE4ZDA0YjgyMmQyODZkNTNlOTY4Y2YuLjA3ZDU1NmMzYjdmYzYzNzE5
YzJhMjU1OWUwYWFkNmMyMjZjMDdjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2lu
WDExLmNwcApAQCAtMTM2LDEwICsxMzYsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPE5ldHNjYXBlUGx1
Z2luWDExPiBOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2luJiBwbHUKIAog
I2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAocGx1Z2luLmlzV2luZG93ZWQoKSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxh
eSwgd2luZG93SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpblgx
MT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkpOwogfQog
CiBOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVnaW4mIHBs
dWdpbiwgRGlzcGxheSogZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBmMzdjMmNjMjRlM2RkOTc2M2YzZWJkZDYzMmQ4
YmZkYjc3MTQ0MzQ3Li45YWI1ODM3MzBiODlkYmQ5NjAxZDY1MjBlZjhmOWIwYmUwMDZkYzU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
CkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFBsdWdpblByb3h5KHRo
aXMpOwogCiAgICAgLy8gQXNrIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRlIGEgcGx1Zy1p
bi4KLSAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMgPSBtYWtlVW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsK
IAogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGx1Z2luSW5zdGFuY2VJ
RCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMtPndpbmRvd05QT2JqZWN0SUQgPSB3aW5kb3dOUE9iamVjdElEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDdhYjg5NjZk
YjkwNWFkZDEyMzk0ODE2NTBiMTlkZTRhN2U3ZDIyM2YuLjExOWQyYjkwYzJiNDQyMzFmMjU2OTU3
ZTYyZGRjYThmMTMwZmM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC04OTgsNyArODk4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdl
YkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50JiBldmVudCkgY29u
c3QKICAgICBpZiAoZXZlbnQubWV0YUtleSgpKQogICAgICAgICBtb2RpZmllcnMuYWRkKFdlYkV2
ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNv
bnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgp
KSksIGV2ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVy
cywgV2FsbFRpbWUgeyB9LCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNb3VzZUV2ZW50
Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRUb1Jvb3RW
aWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2ZW50LnNj
cmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWUg
eyB9LCAwKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCYgZXZlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDlkMjBjN2M0OWMwMmFh
OTU5YWE0YWU0ZDllZWM4ZmU4M2M1ZmU3Yy4uMTg4YWRiMDk1OTJmOTIyYTEwMWYyZjM3M2U5MDM5
OTY3YjE5YTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTU0
LDcgKzE1NCw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxT
ZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250CiAgICAgLy8gRklYTUU6IFRoaXMg
bWV0aG9kIHNob3VsZCBiZSBtb3ZlZCBkaXJlY3RseSB0byBXZWJDb3JlOjpTV0NvbnRleHRNYW5h
Z2VyOjpDb25uZWN0aW9uCiAgICAgLy8gSWYgaXQgd2VyZW4ndCBmb3IgU2VydmljZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50J3MgZGVwZW5kZW5jZSBvbiBXZWJEb2N1bWVudExvYWRlciwgdGhpcyBj
b3VsZCBhbHJlYWR5IGhhcHBlbi4KICAgICAvLyBGSVhNRTogV2VpcmQgdG8gcGFzcyBtX3ByZXZp
b3VzU2VydmljZVdvcmtlcklEIGFzIGEgRnJhbWVJZGVudGlmaWVyLgotICAgIGF1dG8gZnJhbWVM
b2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNs
aWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsIGZyYW1lSWRlbnRpZmllckZyb21JRCgr
K21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQpLCBlZmZlY3RpdmVVc2VyQWdlbnQpOworICAgIGF1
dG8gZnJhbWVMb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRl
ckNsaWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsIGZyYW1lSWRlbnRpZmllckZyb21J
RCgrK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQpLCBlZmZlY3RpdmVVc2VyQWdlbnQpOwogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IGZyYW1lTG9hZGVy
Q2xpZW50LmdldCgpOwogICAgIG1fbG9hZGVycy5hZGQoV1RGTW92ZShmcmFtZUxvYWRlckNsaWVu
dCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGZjZDA5OGU0ODQwYTU4YTJiNWEyMTk3
ZWI1MjkxZTBhNGY0ODI5ZjIuLjBlNmI5NDNkMTU5YzYxMjJhOWI0NDRmZTY4ZjA1NzUwNjlkMTFk
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03OTMsNyArNzkzLDcgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbiwKIAogc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50JiBjbGllbnQsIGNv
bnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29sb3JDaG9vc2VyPigmbV9wYWdlLCAmY2xpZW50LCBpbml0aWFsQ29sb3IpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwgaW5pdGlh
bENvbG9yKTsKIH0KIAogI2VuZGlmCkBAIC04MDIsNyArODAyLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JD
aG9vc2VyQ2wKIAogc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4gV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoRGF0YUxpc3RTdWdn
ZXN0aW9uc0NsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPigmbV9wYWdlLCAmY2xpZW50
KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDdjZGFhY2Qx
ZmMxZDQ2ZDY1ZWFkYzNmM2E2MTM0YWEzNTU4YTJkMTEuLmQ2N2I2MmMwMmU2ODgzYjQ0ODY1ZmJh
MTU4NTE2ZWEwY2JjYjVjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNTEs
NyArMTUxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghbV9wYWludEluZGljYXRvckxheWVy
Q2xpZW50KQotICAgICAgICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRoaXMpOworICAgICAgICBtX3Bh
aW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBtYWtlVW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXll
ckNsaWVudD4oKnRoaXMpOwogCiAgICAgYXV0byBwYWludExheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1f
cGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCk7CiAgICAgCkBAIC0xNjIsOSArMTYyLDkgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
KQogICAgIHBhaW50TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigxLjBmLCAwLjBmLCAw
LjBmLCAwLjJmKSk7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmYWRlS2V5ZnJhbWVzKEFuaW1h
dGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChzdGQ6Om1ha2Vf
dW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKKyAgICBmYWRlS2V5ZnJhbWVzLmlu
c2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKIAotICAgIGZhZGVL
ZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMC4y
NSwgMCkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRp
b25WYWx1ZT4oMC4yNSwgMCkpOwogICAgIAogICAgIGF1dG8gb3BhY2l0eUFuaW1hdGlvbiA9IEFu
aW1hdGlvbjo6Y3JlYXRlKCk7CiAgICAgb3BhY2l0eUFuaW1hdGlvbi0+c2V0RHVyYXRpb24oMC4y
NSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKaW5kZXggNzkwMDg0Y2U0OGQy
MjZiMTBlNjY1YjgyODQ0MzQ5ZmRhYWZmZWU0Ni4uNjlmMGFlODI3OTUwN2I3Mjk2NWY2NWMyMTY4
NzNjNDgxYWRmNGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcApAQCAt
NDUsNyArNDUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OmFkZE92ZXJyaWRlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cgogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9vdmVycmlkZXNNYXAuYWRkKHBhc3RlYm9hcmROYW1lLCBudWxscHRyKTsKIAogICAgIGlm
IChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1h
cDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhh
c2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBtYWtlVW5pcXVl
PEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PigpOwogICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZSh0eXBlTWFwKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzLmNwcAppbmRleCA5Y2ZmY2M5YTlmZDJiNjQ0NDkyMmY4NTRhZDk3ZDFkMzMxZTcwYjBlLi5i
MjQ1ODFjOTdlN2E4ODE2ZjQ2YWY5MzE5YTkxZWEyMWI3MmJkNjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkKICAgICAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRy
dWUpOwogICAgIH0gZWxzZSB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyVHJlZUhvc3Q+KG1fd2Vi
UGFnZSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8TGF5ZXJUcmVlSG9z
dD4obV93ZWJQYWdlKTsKICNlbHNlCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG51bGxwdHI7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmNwcAppbmRleCBjMDczOTZmMDJmMWZhNjVmNDVhY2VlNzJmMTM0ZjRmYjJk
OWU4OTA5Li41MzU4Y2Q2ODYzYjMyMjY5NThlZTI3NGVmZDAzMmFkMjAwNjRkZDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC01
MCwxMyArNTAsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5nQXJlYTo6
Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2UKICNpZiBQTEFURk9STShDT0NP
QSkKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVRp
bGVkQ29yZUFuaW1hdGlvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2ViUGFnZSwg
cGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVy
VHJlZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZWxp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikKICAgICBj
YXNlIERyYXdpbmdBcmVhVHlwZUNvb3JkaW5hdGVkR3JhcGhpY3M6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwg
cGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNDUy
ZjUzYmNlZGMwMDQ3ZjczM2QxYzM0YmNkNzY1MTE5MmNiOGJlNi4uNDZlOGFhMDk5ODY0NWE4Y2U1
ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQobV9wcm9wZXJ0aWVz
LmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsKIAogICAgIGlmICghbV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOworICAgICAgICBtX3Byb3BlcnRpZXMu
YmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4odGhpcyk7
CiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKIH0KQEAgLTUyMSw3ICs1MjEsNyBAQCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnRyYW5zZm9ybSgpIGNvbnN0
CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAgbV9wcm9w
ZXJ0aWVzLnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHZhbHVl
KTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNTMyLDcgKzUzMiw3IEBA
IFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c3VibGF5ZXJUcmFu
c2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U3VibGF5ZXJU
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJv
cGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRp
b25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPSBt
YWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0aWVz
Lm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U3VibGF5
ZXJUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQogCiB2b2lkIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
KQogewotICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJP
cGVyYXRpb25zPihmaWx0ZXJzKTsKKyAgICBtX3Byb3BlcnRpZXMuZmlsdGVycyA9IG1ha2VVbmlx
dWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CiAgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9w
ZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RmlsdGVyc0NoYW5nZWQp
OwogfQogCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFIKICAgICBp
ZiAobV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgJiYgKm1fcHJvcGVydGllcy5zaGFwZVJv
dW5kZWRSZWN0ID09IHJvdW5kZWRSZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb3Bl
cnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3VuZGVkUmVj
dD4ocm91bmRlZFJlY3QpOworICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID0gbWFr
ZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAgbV9wcm9wZXJ0aWVz
Lm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U2hhcGVS
b3VuZGVkUmVjdENoYW5nZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCmluZGV4IDFjYmQxYjRi
YTc5YTdkZjljZTU1ZTA0MjFkNDRlNjViNDA4ODIxYzIuLjA5OTUzNmI5M2MwMTFhYzNmMmEwNzNj
M2NhNDY0ZjA3MjY0NjljZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJh
Y2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyhMYXllclR5cGUgbGF5ZXJU
eXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0
JiBjb250ZXh0KQogICAgIDogUGxhdGZvcm1DQUxheWVyUmVtb3RlKGxheWVyVHlwZSwgb3duZXIs
IGNvbnRleHQpCi0gICAgLCBtX3RpbGVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8VGlsZUNv
bnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV90aWxlQ29udHJvbGxlcihtYWtlVW5pcXVlPFRpbGVD
b250cm9sbGVyPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDVlNTBlMGJhMWVmMTI0NmM2YWUwOGYy
OWQ5MmE4MzBlMGRiNGYyMzcuLjQ0NDZmMzRkMDRjY2ZiZmJlYjM2OWJhNDRjMzIwNmJmMGRkMjNl
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQ
YWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCBwYXJh
bWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciwgd2ViUGFnZSkKLSAgICAsIG1fcmVtb3RlTGF5
ZXJUcmVlQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+KHdl
YlBhZ2UpKQorICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KG1ha2VVbmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCiAgICAgLCBtX3Jvb3RMYXllcihHcmFwaGljc0xh
eWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQogICAgICwgbV9sYXll
ckZsdXNoVGltZXIoKnRoaXMsICZSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXll
cnMpCiB7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6Zmx1c2hMYXllcnMoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbi50cmFuc2Fj
dGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9uLCBzY3JvbGxpbmdU
cmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
UEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpD
b21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5j
b2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExh
eWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0
KCkpOwogICAgIGNvbW1pdEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKIAog
ICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFnZW1lbnQg
dG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGYwZWJmZWRiYjJlOTUzYWQwZmMw
N2Y5ZjgxNjYwOWRiOTczNWI2NjUuLjUyOTY1ZmU0YzViYjM1YzQ5YWRhMDcwMDNiMzM3MTQzNmI3
MjU1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKQEAgLTExNCw3ICsxMTQsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRo
Q29yZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogCiBSZWY8V2Vi
RnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7Ci0g
ICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xp
ZW50PigpKTsKKyAgICBhdXRvIGZyYW1lID0gY3JlYXRlKG1ha2VVbmlxdWU8V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ+KCkpOwogICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
Q3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3JlRnJhbWUg
PSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1f
ZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCAwMWZmMWE0ZjQ1N2U1MzkzNTYxNDMyNGEwOTQ4ODQwM2E3
NTA1NWExLi45ZTIwZjBhY2IyMGMyYzNmZTBhODZlYTNlYjhmMDliOWE1M2QyMTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzgzLDIxICsz
ODMsMjEgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV90ZXh0Q2hlY2tpbmdDb250
cm9sbGVyUHJveHkobWFrZVVuaXF1ZVJlZjxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk+KCp0
aGlzKSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCi0gICAg
LCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCisgICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IobWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhp
cykpCiAjZWxpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQogICAgICwg
bV9hY2Nlc3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1fc2V0Q2FuU3Rh
cnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENhblN0YXJ0
TWVkaWFUaW1lckZpcmVkKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250
ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VD
b250ZXh0TWVudUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCiAjZW5kaWYK
LSAgICAsIG1fZWRpdG9yQ2xpZW50IHsgc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpFZGl0b3JDbGllbnQ+KCkgfQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fbG9hZGVyQ2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVu
dD4oKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpKQotICAgICwgbV91aUNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkKKyAg
ICAsIG1fZWRpdG9yQ2xpZW50IHsgbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ+KCkgfQorICAgICwgbV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fbG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKKyAgICAsIG1fcmVzb3Vy
Y2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2Fk
Q2xpZW50PigpKQorICAgICwgbV91aUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OlBhZ2VVSUNsaWVudD4oKSkKICAgICAsIG1fZmluZENvbnRyb2xsZXIobWFrZVVuaXF1ZVJl
ZjxGaW5kQ29udHJvbGxlcj4odGhpcykpCi0gICAgLCBtX2luc3BlY3RvclRhcmdldENvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlcj4oKnRo
aXMpKQorICAgICwgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8V2ViUGFn
ZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVy
cy51c2VyQ29udGVudENvbnRyb2xsZXJJRCkpCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAg
ICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihtYWtlVW5pcXVlUmVmPEdl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPigqdGhpcykpCkBAIC00NjQsMjEgKzQ2
NCwyMSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGx1
Z0luQ2xpZW50ID0gbmV3IFdlYlBsdWdJbkNsaWVudCgqdGhpcyk7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQ
cm9ncmVzc1RyYWNrZXJDbGllbnQoKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudD4oKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNlTG9nZ2lu
Z0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50Pigq
dGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBt
YWtlVW5pcXVlPFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAgcGFnZUNv
bmZpZ3VyYXRpb24ucGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBw
YWdlQ29uZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
R0xTdGF0ZVRyYWNrZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkg
eworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkdMU3RhdGVUcmFja2VyID0gbWFrZVVuaXF1ZTxX
ZWJHTFN0YXRlVHJhY2tlcj4oW3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5jZVdlYkdM
KSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SXNVc2luZ0hpZ2hQ
ZXJmb3JtYW5jZVdlYkdMKGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkpOwogICAgIH0pOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBwYWdlQ29uZmlndXJh
dGlvbi5zcGVlY2hTeW50aGVzaXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNwZWVjaFN5
bnRoZXNpc0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVjaFN5bnRo
ZXNpc0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50PigqdGhpcyk7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVz
c2FnZUNsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMp
OwogI2VuZGlmCiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZSA9ICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwpA
QCAtNDkzLDE0ICs0OTMsMTQgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JD
b29yZGluYXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yPigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I+KCp0
aGlzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uTWFuaWZlc3QgPSBwYXJhbWV0ZXJzLmFwcGxpY2F0
aW9uTWFuaWZlc3Q7CiAjZW5kaWYKIAotICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIG1fcGFnZSA9IG1ha2VVbmlxdWU8
UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgLy8gU2V0IHRoZSBzZXNz
aW9uSUQgKmJlZm9yZSogdXBkYXRpbmcgdGhlIHByZWZlcmVuY2VzIGFzIHRoZSBwcml2YXRlQnJv
d3NpbmdFbmFibGVkIHByZWZlcmVuY2VzIG1heSBuZWVkIHRvIG92ZXJyaWRlIGl0LgogICAgIGlm
IChwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc1ZhbGlkKCkpCkBAIC04NTMsNyArODUzLDcgQEAgdWlu
dDY0X3QgV2ViUGFnZTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogdm9pZCBX
ZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1l
bnVDbGllbnQpCiB7CiAgICAgaWYgKCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2Nv
bnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQ
YWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgV2ViUGFn
ZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJbmplY3RlZEJ1CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+JiYgZWRp
dG9yQ2xpZW50KQogewogICAgIGlmICghZWRpdG9yQ2xpZW50KSB7Ci0gICAgICAgIG1fZWRpdG9y
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGll
bnQ+KCk7CisgICAgICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg3
NCw3ICs4NzQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOgogdm9pZCBXZWJQYWdlOjpzZXRJ
bmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGllbnQpIHsK
LSAgICAgICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpGb3JtQ2xpZW50PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9y
bUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rgogdm9pZCBXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50KQogewog
ICAgIGlmICghbG9hZGVyQ2xpZW50KSB7Ci0gICAgICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAg
ICAgICBtX2xvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFn
ZUxvYWRlckNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTA1LDcgKzkw
NSw3IEBAIHZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5Q2xpZW50
KFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJhc2UqCiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVk
QnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVu
ZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghbV9yZXNvdXJj
ZUxvYWRDbGllbnQpCi0gICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAgICAg
IG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpS
ZXNvdXJjZUxvYWRDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlTG9hZENs
aWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIFdlYlBh
Z2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkluamVjdGVkQgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+JiYgdWlDbGll
bnQpCiB7CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgICAg
IG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVu
dD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQxMCwxNCArMTQxMCwxNCBAQCB2
b2lkIFdlYlBhZ2U6OmNsb3NlKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1lbnVDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVu
dD4oKTsKICNlbmRpZgotICAgIG1fZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwotICAgIG1f
bG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
TG9hZGVyQ2xpZW50PigpOworICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOworICAgIG1fbG9hZGVyQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50Pigp
OwogICAgIG1fcG9saWN5Q2xpZW50LmluaXRpYWxpemUoMCk7Ci0gICAgbV9yZXNvdXJjZUxvYWRD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9h
ZENsaWVudD4oKTsKLSAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKTsKKyAg
ICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGll
bnQ+KCk7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVlbkNsaWVu
dC5pbml0aWFsaXplKDApOwogI2VuZGlmCkBAIC00Njk2LDcgKzQ2OTYsNyBAQCB2b2lkIFdlYlBh
Z2U6OmJlZ2luUHJpbnRpbmcoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5m
byYgcHJpbnRJbmZvKQogI2VuZGlmCiAKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KSB7Ci0gICAg
ICAgIG1fcHJpbnRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+KGNvcmVG
cmFtZSk7CisgICAgICAgIG1fcHJpbnRDb250ZXh0ID0gbWFrZVVuaXF1ZTxQcmludENvbnRleHQ+
KGNvcmVGcmFtZSk7CiAgICAgICAgIG1fcGFnZS0+ZGlzcGF0Y2hCZWZvcmVQcmludEV2ZW50KCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCBiMTYwMjcwOTVmNzdiNmQy
OTk1OTg1OGZiNGIxNTRkMTlmZWNmMWZiLi4zMWVmZjExZjdhZTBhM2ViOGNmYmI2ZmYyYjNkYmE1
MTYyNGMxZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTcyNyw3ICs3MjcsNyBA
QCB2b2lkIFdlYlByaW50T3BlcmF0aW9uR3RrOjpwcmludChjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UsIGRvdWJsZSB4RFBJLCBkb3VibGUgeQogewogICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7
CiAKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlz
KTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlzKTsKICAg
ICBpZiAoIWRhdGEtPmlzVmFsaWQpIHsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV9maW5pc2goc3Vy
ZmFjZSk7CiAgICAgICAgIHByaW50RG9uZShpbnZhbGlkUGFnZVJhbmdlVG9QcmludChmcmFtZVVS
TCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
RmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggOWFiYjJhNzkyOTlkNTk2YjkxZTZlZjYxY2E0
M2VmODYxOTBhOTA0OS4uOTM0MThhYjIxZDc0ZmM5NDU4YTAyMjRlNGNiNDhhNzM0MTc4MDlmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250
cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTgsNyArOTgsNyBAQCBib29sIEZpbmRDb250cm9sbGVy
Ojp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlzU2hvd2lu
Z092ZQogICAgIGlmICghdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbV9maW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RmluZElu
ZGljYXRvck92ZXJsYXlDbGllbnRJT1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0b3IuZ2V0
KCkpOworICAgIG1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQgPSBtYWtlVW5pcXVlPEZpbmRJ
bmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdl
dCgpKTsKICAgICBtX2ZpbmRJbmRpY2F0b3JSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0ZXh0SW5k
aWNhdG9yLT5zZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpOwogICAgIG1fZmlu
ZEluZGljYXRvck92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKCptX2ZpbmRJbmRpY2F0b3JP
dmVybGF5Q2xpZW50LCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKICAgICBt
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdl
T3ZlcmxheSgqbV9maW5kSW5kaWNhdG9yT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpE
b05vdEZhZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL0RyYXdpbmdBcmVhTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKaW5kZXggOTA2ODdjOTc0YWNmMzNkODJiOGM2NGI5NDhl
NmVlOWEzMGVlMmU5Yy4uMDZmY2M0NzE1OTNlYjc4ZWRlYmZjYzYzZjg5NDRiM2RmYWU5ZGFiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdB
cmVhTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJh
d2luZ0FyZWFNYWMuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKICAgICBpZiAoIW1faGFzU2VudE1lc3Nh
Z2UpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTdGFydERpc3BsYXlMaW5r
KG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCkpLCAwKTsKICAgICAgICAgbV9oYXNTZW50TWVzc2Fn
ZSA9IHRydWU7Ci0gICAgICAgIG1fcnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxS
dW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3RoaXNdKCkgeworICAgICAgICBtX3J1
bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5Mb29wRW50
cnksIFt0aGlzXSgpIHsKICAgICAgICAgICAgIHRoaXMtPm1fZmlyc3RDYWxsYmFja0luQ3VycmVu
dFJ1bmxvb3AgPSB0cnVlOwogICAgICAgICB9KTsKICAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIt
PnNjaGVkdWxlKENGUnVuTG9vcEdldEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZGY2MDAzNjQ1OThmMTM0NjI5ZGFiNjI3MDZlYWY2ODYx
ZTVmZjMzZC4uNGNiM2RmOWFlYTUyOWVmZjUyNjMzNmM4MWYxMzAyMDQ1YmEzZTBjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtODcsNyArODcsNyBAQCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEoV2ViUGFnZSYgd2ViUGFnZSwgYwogICAgIFttX2hvc3RpbmdMYXllciBzZXRPcGFxdWU6WUVT
XTsKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAKLSAgICBt
X2xheWVyRmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlJ1
bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxs
S25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1fbGF5ZXJG
bHVzaFJ1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVy
PihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BP
cmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hS
dW5Mb29wQ2FsbGJhY2soKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDc2MDA1NTBjNWNhODg2MGQ2ZTc2Y2ZlN2JmOTQ2NDY3YjdhZGEyMTMu
LjQ3N2E3MWVjNmM5NDk2MDA1MzlhM2U4Y2JjMGU1OGRkZGYzZGVkNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1NTksNyArMTU1OSw3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgQVNTRVJUKCFtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGls
ZUNvdW50ZXIpOwogICAgIG1fY291bnRPZlBhZ2VzRmFpbGluZ1RvTWFya1ZvbGF0aWxlID0gMDsK
IAotICAgIG1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlcj4oW3RoaXMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZWZDb3VudGVyRXZlbnQp
IHsKKyAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBtYWtlVW5pcXVl
PFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXI+KFt0aGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmQ291bnRlckV2ZW50KSB7CiAg
ICAgICAgIGlmIChtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXItPnZhbHVlKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE4MDgsNyArMTgwOCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6c2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9vbCBoYXNT
ZWxlY3Rpb25TZXJ2CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Q
cm94eShjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGlmaWVyKQogewotICAgIG1fYXV0b21hdGlv
blNlc3Npb25Qcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eT4oc2Vzc2lvbklkZW50aWZpZXIpOworICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eSA9IG1h
a2VVbmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOwog
fQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkKQEAg
LTE4NDEsNyArMTg0MSw3IEBAIGJvb2wgV2ViUHJvY2Vzczo6aGFzVmlzaWJsZVdlYlBhZ2UoKSBj
b25zdAogTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB7
CiAgICAgaWYgKCFtX2xpYldlYlJUQ05ldHdvcmspCi0gICAgICAgIG1fbGliV2ViUlRDTmV0d29y
ayA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDTmV0d29yaz4oKTsKKyAgICAgICAgbV9saWJX
ZWJSVENOZXR3b3JrID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENOZXR3b3JrPigpOwogICAgIHJldHVy
biAqbV9saWJXZWJSVENOZXR3b3JrOwogfQogCkBAIC0xODUyLDcgKzE4NTIsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyh1aW50NjRfdCBwYWdlRwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5
aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBhdXRvJiBpcGNDb25uZWN0aW9u
ID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24oc3RkOjptYWtlX3VuaXF1
ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFnZUdyb3Vw
SUQsIHBhZ2VJRCwgc3RvcmUpKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
ZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24+KGlw
Y0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCBwYWdlSUQsIHN0b3JlKSk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlNTM3ZTU5MWRmN2ZkMzIxMmRmOWUzYTZmYzMxMzM5OTcw
ZDc5OWQ0Li42MWFmMzFiNjU5Yjg3YWZkNDBkY2VhODU5MjQ2NzQzMzcwN2YxYjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE0OCw3ICsxNDgsNyBAQCBjbGFzcyBX
ZWJQcm9jZXNzCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVt
ZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1l
KCksIHN0ZDo6bWFrZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5h
ZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAog
ICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNw
cAppbmRleCAyNzIwYjg2ZmNkMmZmZWU2MDIyZjVhZDVlZWQ1MGJjZjM2OTJkN2Y4Li45YWYwMGVl
OGFhMGYxY2Q4NDBhODE3Mzc5MGZhMDYyMzAwNDZmZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZSA6
IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChkZXZp
Y2VUeXBlICE9IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd24pOwogICAgICAgICBp
ZiAodHlwZSA9PSBUeXBlOjpBdWRpbykKLSAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdCdWZmZXJT
dG9yYWdlPihudWxscHRyKSk7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5pcXVl
PENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVs
bHB0cikpOwogICAgIH0KIAogICAgIH5Tb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggYjQ3ZDFkOGFmYTAzZmVkMzZk
ZWNhZDk4OWQ3MmRiYzQxODQ4N2Y1OS4uM2I5MDZhODBjNWFkOGY2OWJlZjc3ZjlhOGM3NjRhZjgw
OWY0OTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNz
VGFza1N0YXRlRGlkQ2hhbmdlKFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlcjo6VGFza1N0YXRlIHQK
IAogICAgIC8vIFdlIHdlcmUgYXdha2VuZWQgZnJvbSBzdXNwZW5zaW9uIHVuZXhwZWN0ZWRseS4g
Tm90aWZ5IHRoZSBXZWJQcm9jZXNzUHJveHksIGJ1dCB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24g
b24gb3VyIHBhcmVudCBQSUQKICAgICAvLyB0byBlbnN1cmUgdGhhdCBpdCB0b28gaXMgYXdha2Vu
ZWQuCi0gICAgYXV0byB1aVByb2Nlc3NBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgp
LCAiVW5leHBlY3RlZGx5IHJlc3VtZWQiLCBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNz
ZXJ0aW9uUmVhc29uOjpGaW5pc2hUYXNrKTsKKyAgICBhdXRvIHVpUHJvY2Vzc0Fzc2VydGlvbiA9
IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
cmVtb3RlUHJvY2Vzc0lEKCksICJVbmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlvblN0YXRl
OjpCYWNrZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246OkZpbmlzaFRhc2spOwogICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpQcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQoKSwgW3VpUHJvY2Vzc0Fz
c2VydGlvbiA9IFdURk1vdmUodWlQcm9jZXNzQXNzZXJ0aW9uKV0geyB9KTsKIH0KICNlbmRpZgpA
QCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRl
KENQVU1vbml0b3JVcGRhdGVSZWFzb24gcmVhc29uKQogICAgIH0KIAogICAgIGlmICghbV9jcHVN
b25pdG9yKSB7Ci0gICAgICAgIG1fY3B1TW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BVTW9u
aXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVzYWdlKSB7Cisg
ICAgICAgIG1fY3B1TW9uaXRvciA9IG1ha2VVbmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmlu
Z0ludGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVzYWdlKSB7CiAgICAgICAgICAgICBpZiAobV9w
cm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6U2VydmljZVdvcmtlcikKICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFNlcnZpY2Ugd29y
a2VyIHByb2Nlc3MgZXhjZWVkZWQgQ1BVIGxpbWl0IG9mICUuMWYlJSAod2FzIHVzaW5nICUuMWYl
JSkiLCB0aGlzLCBtX2NwdUxpbWl0LnZhbHVlKCkgKiAxMDAsIGNwdVVzYWdlICogMTAwKTsKICAg
ICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VTeW5jTWFuYWdlci5jcHAKaW5kZXggMzY5MDk1Y2RhZDFkMzQ3MTFhMDY3NmQ4NzM2YTkwZTE5
M2UyOTA1ZS4uMjI4ZjRhMzZkNGIwZjIyMmMxNzg2MGQwYmM0OThjMWY5ZTA4OWEyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgUmVmPFN0b3JhZ2VTeW5jTWFuYWdlcj4gU3RvcmFnZVN5bmNNYW5h
Z2VyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQogfQogCiBTdG9yYWdlU3luY01hbmFnZXI6
OlN0b3JhZ2VTeW5jTWFuYWdlcihjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBtX3RocmVhZChz
dGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCisgICAgOiBtX3RocmVhZChtYWtlVW5p
cXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAgICAgLCBtX3BhdGgocGF0aC5pc29sYXRlZENvcHkoKSkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4IDQ0MzkzODI5NWY0ZTFjMjlkZDA0ODZiNDMx
YmE3ZmVhMzUyOWQxNmQuLjljNzUxNGUzNDYyYzRiNGQ4YTg1NjA1ZWQwMjlkYmQxOTI1ZDZiMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKQEAg
LTc1LDcgKzc1LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lk
ICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKCFtX3F1ZXVlLmtpbGxlZCgpICYmIG1fdGhyZWFkKTsKLSAgICBtX3F1ZXVlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwor
ICAgIG1fcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdURk1vdmUo
ZnVuY3Rpb24pKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkKQEAgLTg3
LDcgKzg3LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlmICghbV90
aHJlYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CisgICAgbV9xdWV1ZS5hcHBlbmQobWFr
ZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKICAgICAgICAgcGVyZm9ybVRlcm1p
bmF0ZSgpOwogICAgIH0pKTsKICAgICBtX3RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGI5
MzRkMWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNmNzdmYTIuLjgwNmNiMDk5NWQwYTA3Yzcx
ODI3MWQyMTA1MDcwMzk4YzQwM2JjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBTdG9yYWdlVHJhY2tlciYg
U3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKQogU3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2Vy
KGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgpCiAgICAgOiBtX3N0b3JhZ2VEaXJlY3RvcnlQYXRo
KHN0b3JhZ2VQYXRoLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9jbGllbnQoMCkKLSAgICAsIG1f
dGhyZWFkKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICAsIG1fdGhyZWFk
KG1ha2VVbmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiAg
ICAgLCBtX25lZWRzSW5pdGlhbGl6YXRpb24oZmFsc2UpCiAgICAgLCBtX1N0b3JhZ2VEYXRhYmFz
ZUlkbGVJbnRlcnZhbChkZWZhdWx0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXAuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXAuY3BwCmluZGV4IDQzZWE0NWRhZTg5MjA2YzgyOWE1MTRkNGRhOGUz
ZDFjOTdjYzEyODQuLjg1MWNjMTAxN2RlZDAwYzA2ZDQ2ZDJjODU5ZDcwMDAwYjZkNzJkNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN0b3JhZ2VT
ZXNzaW9uKGNvbnN0IFAKIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQogewogICAgIGlmICghZGVm
YXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAgIGRlZmF1
bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBy
ZXR1cm4gKmRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKIH0KIApAQCAtNzQsNyArNzQs
NyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdl
U2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0
KCkpKTsKICAgICB9CiAKLSAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVT
dG9yYWdlKSk7CisgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwog
I2VuZGlmCiB9CiAKQEAgLTEwMCwxMSArMTAwLDExIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwOjplbnN1cmVTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNv
CiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lv
bkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdl
dCgpKSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1v
dmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2ll
U3RvcmFnZSkpOwogCiAjZWxpZiBVU0UoQ1VSTCkKICAgICBnbG9iYWxTZXNzaW9uTWFwKCkuZW5z
dXJlKHNlc3Npb25JRCwgW3Nlc3Npb25JRF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lv
bklEKTsKICAgICB9KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRl
eCAxODc2Yjk2MGI5NDcwODE0YzM1MGJjNTkyNmE0YzgxYWVkZjM5MDIzLi43Yjg2OTgxYTNmNDhl
NTBmOGIzY2NhYzM3MDY5MTdkNGFmMWZkYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cApAQCAtMTU5LDUgKzE1OSw1IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gV2ViSW5zcGVjdG9yQ2xpCiAgICAgICAgICAg
ICBkZWxldGVTZXR0aW5nKG5hbWUpOwogICAgICAgICB9CiAgICAgfTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGPigpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlv
bkNvbnRlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJG
aXhlZFBvc2l0aW9uQ29udGVudC5tbQppbmRleCBkZDVhZWJjYjJlY2M4NDM1MjdhZGJhMTA3YTg5
OWIzZGYzNjI5MDRlLi5hZmUxMWE4MGI5ZjFjOWNlNzZhMzU2MmZhNjNjNDViZjcxZDExZDk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGaXhl
ZFBvc2l0aW9uQ29udGVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQpAQCAtMTgwLDcgKzE4MCw3IEBAIC0g
KHZvaWQpc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczooV1RGOjpIYXNoTWFwPENBTGF5ZXIg
Kiwgc3RkOjp1bmlxdWVfcHRyPFdlCiAKICAgICBmb3IgKGF1dG8mIGxheWVyQW5kQ29uc3RyYWlu
dHMgOiBsYXllck1hcCkgewogICAgICAgICBDQUxheWVyKiBsYXllciA9IGxheWVyQW5kQ29uc3Ry
YWludHMua2V5OwotICAgICAgICBhdXRvIGxheWVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Vmll
d3BvcnRDb25zdHJhaW5lZExheWVyRGF0YT4oKTsKKyAgICAgICAgYXV0byBsYXllckRhdGEgPSBt
YWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+KCk7CiAKICAgICAgICAgbGF5
ZXJEYXRhLT5tX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Nyb2xsTGF5ZXIgPSBzdGlja3lDb250YWlu
ZXJzLmdldChsYXllcik7CiAgICAgICAgIGxheWVyRGF0YS0+bV92aWV3cG9ydENvbnN0cmFpbnRz
ID0gV1RGTW92ZShsYXllckFuZENvbnN0cmFpbnRzLnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCBhOGI2YTA0MzkzZWMwMDAxNDY1
MzhkNGNmNjViZDY0MGM3NGJkOTAxLi41YWQ4MWI0YTNiNDliNWQwNjM5MzY1NjgzYTFiY2Y1ZDU3
ZWYzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5
Lm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgLSAoaWQpaW5pdAogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIAogICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdOwotICAgIF9lbnRyaWVzQnlEYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRlVG9FbnRyaWVz
TWFwPigpOworICAgIF9lbnRyaWVzQnlEYXRlID0gbWFrZVVuaXF1ZTxEYXRlVG9FbnRyaWVzTWFw
PigpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBiNzM5NTkzNWU1MTBiZjNiN2YwYzQ4
ZWRkNDM2YzU4YmJjNDgxZDhlLi44NmY5ZDNkNDIyMzg0NmJjOTVjYmM5NTY0NWExY2E3MzIwYWZl
MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0KQEAgLTM0OCw3ICszNDgsNyBAQCAtIChpZClpbml0RnJvbURpY3Rpb25hcnlSZXBy
ZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgICAgICBjb3JlKF9wcml2YXRlKS0+
c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKICAgICAKICAgICBpZiAoTlNBcnJheSAqcmVk
aXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZvcktleTpyZWRpcmVjdFVSTHNLZXldKSB7
Ci0gICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5p
cXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3ItPnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoW3JlZGlyZWN0VVJMcyBjb3VudF0pOwogCiAgICAgICAgIGZvciAo
aWQgcmVkaXJlY3RVUkwgaW4gcmVkaXJlY3RVUkxzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dFByb3h5Lm1tCmluZGV4IGUxN2M3ODgxYTUxN2YwYzM1NWY4NzU2OWI2MGRhM2YyMTVhMWViYTcu
LmY1ZTdmYmNmMTJlNDdmOTBkZWVmMWVhMmNmZWI3MTc0MjY4ODBhY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdFBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC00OTMsNyArNDkzLDcgQEAga2Vybl9yZXR1cm5fdCBX
S1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWlu
dDMyX3QgcGwKICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZB
SUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2NyaXB0YWJs
ZU5QT2JqZWN0UmVwbHk+KG9iamVjdElEKSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVu
dFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmplY3RJRCkpOwogICAgIHJldHVybiBLRVJO
X1NVQ0NFU1M7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBrZXJuX3JldHVybl90IFdLUENCb29s
ZWFuUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQsIHVpbnQz
MgogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsK
ICAgICAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5Pihy
ZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBt
YWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5PihyZXN1
bHQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCkBAIC01MjgsNyArNTI4LDcgQEAg
a2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhbkFuZERhdGFSZXBseShtYWNoX3BvcnRfdCBjbGllbnRQ
b3J0LCB1aW50MzJfdCBwbHVnaW5JRCwKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVSRTsKIAog
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAs
IHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHREYXRhKSwgcmVzdWx0TGVuZ3RoKSk7Ci0g
ICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3Vu
aXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJl
dHVyblZhbHVlLCByZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHko
cmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVh
bkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOwogICAgIAogICAgIHJldHVybiBL
RVJOX1NVQ0NFU1M7CiB9CkBAIC01NDUsNyArNTQ1LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDSW5z
dGFudGlhdGVQbHVnaW5SZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJfdCBwbHVn
aW4KICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7
CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQbHVnaW5S
ZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4o
cmVuZGVyZXJUeXBlKSkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1
ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpJbnN0YW50aWF0
ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJRCwgc3RhdGljX2Nhc3Q8UmVuZGVy
ZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJ
bnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5
SW5zdGFuY2UubW0KaW5kZXggMjAyYzZkZWFmMTNkMDdjNmUzYTU2OThiMWNkYjU5YTE5YjVkYTAz
OS4uNTJiZjdiZDEyZTRlMzcxMmQzMTQ3NWUyYTUzOWE0MjhjZmY4ZmE0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNl
Lm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgTWV0aG9kKiBQcm94eUluc3RhbmNlOjptZXRob2ROYW1l
ZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRyeSB0byB0
aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3YWl0Rm9y
UmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKG5hbWUuaW1wbCgp
LCBudWxscHRyKTsKICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVwbHktPm1f
cmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxQcm94eU1ldGhvZD4obWV0aG9kTmFtZSk7CisgICAgICAgIG1hcEFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5TWV0aG9kPihtZXRob2ROYW1lKTsKIAog
ICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQpAQCAtMzk3
LDcgKzM5Nyw3IEBAIEZpZWxkKiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAgdW5sZXNz
IGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4KICAgICBh
dXRvIG1hcEFkZFJlc3VsdCA9IG1fZmllbGRzLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAg
ICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAg
ICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlG
aWVsZD4oaWRlbnRpZmllcik7CisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlVW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOwogICAgIHJldHVybiBtYXBBZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRz
Y2FwZVBsdWdpblZpZXcubW0KaW5kZXggYzZhMzVmMjFjZTE4OGI0MzMzZjZhM2M0NjJhZmJhYzg4
NGNmZDdjZC4uZWUxOWM1NjdjMDFmYTE4YzVlOGRjNjFiMDhjODk0ZTUyMDAyZGFjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMv
SG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTY5LDcgKzE2OSw3IEBA
IC0gKEJPT0wpY3JlYXRlUGx1Z2luCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlmIChfcHJv
eHktPnJlbmRlcmVyVHlwZSgpID09IFVzZVNvZnR3YXJlUmVuZGVyZXIpCi0gICAgICAgIF9zb2Z0
d2FyZVJlbmRlcmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+KF9wcm94
eS0+cmVuZGVyQ29udGV4dElEKCkpOworICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9IG1ha2VV
bmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRleHRJRCgpKTsKICAg
ICBlbHNlCiAgICAgICAgIFtzZWxmIGNyZWF0ZVBsdWdpbkxheWVyXTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luRXZlbnRIYW5kbGVyLm1tCmluZGV4IGY3YWVkYmNlZDRkN2Y1YzRiYTNlOTZlMzU2MWNh
N2YwYjI2NWM4YWMuLjhlYzFiZjc5ZWUzMmEyYWMxYmJjZjdhMjFlNzNlN2UxZTAxZGIxZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQpAQCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI+IFdlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyOjpjcgogewogICAgIHN3aXRjaCAoW3BsdWdpblZpZXcgZXZlbnRNb2RlbF0p
IHsKICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5WaWV3KTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJD
b2NvYT4ocGx1Z2luVmlldyk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAwMmZm
MjE4NmRmODRhOWE5MGQ3ZTljMjZjMDc2Mjc5ZTMyMjExMzc4Li4xNjA2NjNlODYxZjcxMGViZmVk
MWQ3Njg1NjVkZDIyYTExNGU4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTY1NSw3ICsxNjU1
LDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoodWludDMyX3QpaW50
ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0IHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAg
ICAgaWYgKCF0aW1lcnMpCi0gICAgICAgIHRpbWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1h
cDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7CisgICAgICAgIHRp
bWVycyA9IG1ha2VVbmlxdWU8SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdp
blRpbWVyPj4+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+KiBzbG90Owog
ICAgIHVpbnQzMl90IHRpbWVySUQ7CkBAIC0xNjYzLDcgKzE2NjMsNyBAQCAtICh1aW50MzJfdClz
Y2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCByZXBlYXQ6KE5QQm9v
bClyZXBlYXQgdAogICAgICAgICB0aW1lcklEID0gKytjdXJyZW50VGltZXJJRDsKICAgICB3aGls
ZSAoIXRpbWVycy0+aXNWYWxpZEtleSh0aW1lcklEKSB8fCAqKHNsb3QgPSAmdGltZXJzLT5hZGQo
dGltZXJJRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlKSk7CiAKLSAgICBhdXRvIHRpbWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1Z2luLCB0aW1lcklELCBpbnRlcnZhbCwg
cmVwZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFBsdWdpblRp
bWVyPihwbHVnaW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAKICAg
ICBpZiAoX3Nob3VsZEZpcmVUaW1lcnMpCiAgICAgICAgIHRpbWVyLT5zdGFydChfaXNDb21wbGV0
ZWx5T2JzY3VyZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9T
dG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQppbmRleCAxY2JjMmZiYTJiN2NjOGVm
ODc5ZWExYmY3MTFiMzFiM2JkNTgyYmNiLi41N2ZiYmZhZDllNjRiNzY3OGFkM2FjY2U4MDc3OGJh
Y2YwMzc4MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dl
YkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9T
dG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQpAQCAtOTgsNyArOTgsNyBAQCBjbGFz
cyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRj
aFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiAgICAgewotICAgICAgICBhdXRvIGNvbnRleHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlmeU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2luKTsKKyAg
ICAgICAgYXV0byBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRhPihjbGll
bnQsIG9yaWdpbik7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBXVEZNb3Zl
KGNvbnRleHQpXSB7CiAgICAgICAgICAgICBjb250ZXh0LT5jbGllbnQuZGlzcGF0Y2hEaWRNb2Rp
ZnlPcmlnaW4oY29udGV4dC0+b3JpZ2luKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCmluZGV4IDU0NWE4ZTg0Y2I4NDg5ZDkxODY2Y2JhYzkxMjk2YjBmZDM1YjUxZDcu
LjI0MTQwY2RlM2VjOTNiMjA3NTlmZDYzMDJkMWEzMDk1MmUxOTJiMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDY3LDcgKzEwNjcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKIHN0YXRpYyB2b2lkIGFkZFJlZGlyZWN0VVJM
KFdlYkhpc3RvcnlJdGVtICppdGVtLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWl0
ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzKQotICAgICAgICBpdGVtLT5fcHJpdmF0ZS0+X3Jl
ZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAg
IGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5n
Pj4oKTsKIAogICAgIC8vIE91ciBBUEkgYWxsb3dzIHVzIHRvIHN0b3JlIGFsbCB0aGUgVVJMcyBp
biB0aGUgcmVkaXJlY3QgY2hhaW4sIGJ1dCBmb3IKICAgICAvLyBub3cgd2Ugb25seSBoYXZlIGEg
dXNlIGZvciB0aGUgZmluYWwgVVJMLgpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgSUdOT1JFX1dBUk5J
TkdTX0VORAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbWUpCiB7Ci0gICAgY2FjaGVkRnJhbWUt
PnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ2FjaGVkRnJh
bWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1l
bnRWaWV3KSk7CisgICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1h
a2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9wcml2YXRl
LT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGlzIGZyYW1lIGlzIGdvaW5nIHRvIGJl
IGNhY2hlZC4gU3RvcCBhbGwgcGx1Z2lucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCAx
YzAwODA5NzY5MmZmOWIwNzFmY2U1YWM0YTRiNDY5MmQxMzdlZDk1Li43ZDNlNWVjOWU2MTVlMWQ0
OGMzZDA1ZDcxYTU5YzQ1MWZlYjc2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0x
MDksNyArMTA5LDcgQEAgRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5M
b2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3AKICAgICBbd2luZG93Q29udHJv
bGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBtX2Zyb250ZW5kUGFn
ZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZnJvbnRlbmRXZWJWaWV3XSk7Ci0gICAg
bV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVj
dGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNldHRpbmdz
KCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGlu
c3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0
aW5ncygpKTsKIAogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5zcGVj
dG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRX
aXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV9pbnNw
ZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQu
Z2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
ZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KaW5kZXggMjUzNjQ4
ZDhlODQ1OTExZTJhZTI4YzBiYjg2M2NiNTdmN2MzMDAzOS4uMjc2ZDlmMTVlZjhmYTVlMWZlZDQz
OGVkOWMxZDI1OWE3ODU4MzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXJNb2Nr
Lm1tCkBAIC0zNiw3ICszNiw3IEBAIC0gKGlkKWluaXQKICAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2NvcmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKKyAgICBtX2NvcmUg
PSBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKICAgICByZXR1cm4g
c2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggYTkwNjIyYzIwNzRlMGNkY2VjZWYyYzZjMWM4NDk0NWQ0ZTlkZmZhYi4uM2E5NGJiOTEw
ZDI1OWVmYWE4OTFkNTI5ZTgwZDJiNWIwMDIwYjRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0zNzgsNyArMzc4LDcgQEAgLSAodm9pZClfYXR0
YWNoU2NyaXB0RGVidWdnZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9wcml2YXRl
LT5zY3JpcHREZWJ1Z2dlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2NyaXB0RGVidWdnZXI+KGds
b2JhbE9iamVjdCk7CisgICAgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gbWFrZVVuaXF1ZTxX
ZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAogLSAodm9pZClfZGV0YWNoU2Ny
aXB0RGVidWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQppbmRleCA3MmMyMGM2OTNm
ZWNiYTk3MTA0NjM0MTY0MWNjZTExNDk0ZGU0YTY5Li42MDI0MDI5OTYyZWMzNGYwMGY0YWFkOTQz
MmE3ZmM0MmJhMWQxNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCkBAIC0zMyw3
ICszMyw3IEBACiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
PiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUoV2ViQ29yZTo6UGFnZSYgcGFn
ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyPihwYWdlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyPihwYWdlKTsKIH0KIAogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6V2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQYWdlJiBwYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQppbmRleCAx
YTcyNThiNDIzYTg0NTc4OTFlNDE1ZTEwZDAwMjU2NzMwYWEyYmRlLi5lMzYzYjg1YjJiM2Q1YWUx
NDczYzgzNzI3MTg1ODM0ZDUxNzg3YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpAQCAtNjksNyArNjksNyBAQCAtIChpZClp
bml0V2l0aFJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgICAgIHJldHVybiBzZWxmOwogICAg
IAogICAgIF9wcml2YXRlID0gW1tXZWJUZXh0SXRlcmF0b3JQcml2YXRlIGFsbG9jXSBpbml0XTsK
LSAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CisgICAgX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3Ig
PSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5nZSkpOwogICAgIHJl
dHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggYmQ5Y2JjMTIyZGVkZTI4ZjM2YjlmYjVmNzc3Mjc2ODRkYWI4NDJmNy4uMjhmNmMy
NTMyNWI0YzQ1YTJiMDZlMjM3ZmEzYmJiYjlhZTMwYzg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgc3RhdGljIE5T
U3RyaW5nICpsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpCiAtKHZvaWQpX2lu
amVjdE91dGxvb2tRdWlya3NTY3JpcHQKIHsKICAgICBzdGF0aWMgTlNTdHJpbmcgKm91dGxvb2tR
dWlya3NTY3JpcHRDb250ZW50cyA9IGxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRz
KCk7Ci0gICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2Vy
U2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJp
bmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxs
RnJhbWVzKSk7CisgICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5h
ZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBtYWtlVW5pcXVlPFVz
ZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxTdHJp
bmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxs
RnJhbWVzKSk7CiAKIH0KICNlbmRpZgpAQCAtMTQzOSw3ICsxNDM5LDcgQEAgLSAodm9pZClfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZSBncm91
cE5hbWU6KE5TU3QKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2Vi
Q2hyb21lQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRNZW51Q2xp
ZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHNlbGYpOwogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZW5hYmxlIHRoaXMgb24gaU9TIGFzIHdlbGwuCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24u
dmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50PihzZWxmKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVz
c2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KHNlbGYp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0
b3JDbGllbnQoc2VsZik7CiAjZWxzZQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVu
dCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CkBAIC00NjMwLDcgKzQ2MzAsNyBAQCAr
ICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6
KFdlYlNjcmlwdFdvcmxkICopd29ybAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291
cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8gSW5qZWN0
QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFtZXMgPT0g
V2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJh
bWVPbmx5KTsKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNv
dXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFj
a2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVj
dEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09
IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZy
YW1lT25seSk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2Vy
U2NyaXB0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAgLTQ2NTMs
NyArNDY1Myw3IEBAICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNTdHJpbmcg
Kilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopCiAgICAgaWYgKCF3b3JsZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzdHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxV
c2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRv
U3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxs
RnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0
eWxlVXNlckxldmVsKTsKKyAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHls
ZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdW
ZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMg
PyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2Vy
TGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0
eWxlU2hlZXQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0
aW5nRG9jdW1lbnRzKTsKIH0KIApAQCAtOTQwNCw3ICs5NDA0LDcgQEAgLSAoVmVjdG9yPFN0cmlu
Zz4pX2RpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4dAogLSAo
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXImKV9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cgogewogICAgIGlmICghX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcikKLSAg
ICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOworICAgICAgICBfcHJp
dmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CiAgICAgcmV0dXJuICpfcHJpdmF0ZS0+X3NlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyOwogfQogI2VuZGlmCkBAIC05NDYzLDcgKzk0NjMsNyBAQCAt
ICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yCiAt
ICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNhdG9yIHdp
dGhMaWZldGltZTooVGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKWxpZmV0aW1lCiB7CiAgICAg
aWYgKCFfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdykKLSAgICAgICAgX3ByaXZhdGUtPnRl
eHRJbmRpY2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+
KHNlbGYpOworICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9IG1ha2VVbmlx
dWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CiAKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5n
UmVjdEluV2luZG93Q29vcmRpbmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpbc2VsZiBfY29udmVy
dFJlY3RGcm9tUm9vdFZpZXc6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzKCldIHRvVmlldzpuaWxdOwogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0
SW5TY3JlZW5Db29yZGluYXRlcyA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2NyZWVuOnRl
eHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4IDEwNjBjMmQ4NTRhZGEwZGNhZmIz
MzU1OWM4MTFlNGVlNDk0Y2M2ZTAuLjgyMzhhNGVjNWZlZTE2ODM2NGVkMTMwNGJjNzUxNWY1NTE3
ZmU4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5tbQpAQCAtOTYsNyArOTYsNyBAQCBMYXllckZsdXNoQ29udHJvbGxlcjo6TGF5ZXJGbHVzaENv
bnRyb2xsZXIoV2ViVmlldyogd2ViVmlldykKIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpX
ZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihMYXllckZsdXNoQ29udHJvbGxlciogZmx1c2hDb250
cm9sbGVyKQogICAgIDogbV9mbHVzaENvbnRyb2xsZXIoZmx1c2hDb250cm9sbGVyKQogewotICAg
IG1fcnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2Jz
ZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcjo6V2Vs
bEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBtX3J1bkxv
b3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNf
Y2FzdDxDRkluZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BP
cmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVyRmx1c2hD
YWxsYmFjaygpOwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKGlkKWluaXQKICAg
ICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVS
TkFUSVZFUykKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOworICAgIG1fYWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRVSUNvbnRyb2xsZXI+KCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cAppbmRleCA0ZTIzMWE4MzllNGM3MWVmNThhMDVlODg2OGEwMWY5ZDNiNTZkMzg3Li45YjE0Njc0
N2ZmNzdiYzBhYjVlNjUwNGE3OTFkNWFjMWNmZjBkOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAtMjQ3LDEx
ICsyNDcsMTEgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcigpCiAgICAgLCBtX21vdmluZ1dpbmRvdyhmYWxzZSkKICAgICAsIG1fdGltZXIoKnRo
aXMsICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1lckZpcmVkKQogI2lmIFVTRShDQSkK
LSAgICAsIG1fbGF5ZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcykp
CisgICAgLCBtX2xheWVyQ2xpZW50KG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQogICAg
ICwgbV9yb290Q2hpbGQoUGxhdGZvcm1DQUxheWVyV2luOjpjcmVhdGUoUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVMYXllciwgbV9sYXllckNsaWVudC5nZXQoKSkpCiAjZW5kaWYKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3coc3RkOjptYWtlX3Vu
aXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihzdGF0aWNfY2FzdDxNZWRp
YVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhpcykpKQorICAgICwgbV9mdWxsc2Ny
ZWVuV2luZG93KG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4o
c3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRoaXMpKSkK
ICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5TdHJlYW0uY3BwCmluZGV4IGFiYTYzZGFiOGIzMWU0N2FiZDgwODhiMzc4M2E4MGVjNTRjMTAy
MTguLjBmNmJlZWZmYWQxZGMwMTVjOGE0NzdlN2ZiZTVjOWI2YWFmYWZmMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKQEAgLTQzMyw3
ICs0MzMsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogCiAgICAgaWYgKG1fdHJhbnNmZXJN
b2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAgICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAg
ICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+
KCk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9yPGNoYXI+
PigpOwogCiAgICAgICAgIGludCBvbGRTaXplID0gbV9kZWxpdmVyeURhdGEtPnNpemUoKTsKICAg
ICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2l6ZShvbGRTaXplICsgbGVuZ3RoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDIxMzYzMTdm
Mjk5OWQ1ZTEzNzQ5ZGYzOGUxOWE4ZjRkMmYyNWJkNjAuLjU0NzE2YTBiYjJiMWZhYjc1ZDgxZGU0
MmFlZTk2ZWVhMmY2YjEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtNTEwLDcgKzUxMCw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6
bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgYm9vbCBzZW5kTm90aWZp
Y2F0CiAgICAgfSBlbHNlIGlmICghbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpCiAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VS
Uk9SOwogCi0gICAgc2NoZWR1bGVSZXF1ZXN0KHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luUmVxdWVz
dD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0
YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CisgICAgc2NoZWR1bGVSZXF1ZXN0KG1ha2VVbmlxdWU8
UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlmaWNhdGlv
biwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CiAKICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3V2luLmNwcAppbmRleCAwNTcyOGYzZWQzNzIwNTA0YWY1NWY5ODc3Zjg2MjFiZGMwNWNl
NjIyLi41MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQyOTgxYzNmNTYzZWRmZjNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKQEAgLTMx
MCw3ICszMTAsNyBAQCBQbHVnaW5WaWV3Ojp3bmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdl
LCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGlmIChtZXNzYWdlID09IFdNX1VT
RVIgKyAxICYmCiAgICAgICAgIG1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVnaW5RdWly
a1Rocm90dGxlV01Vc2VyUGx1c09uZU1lc3NhZ2VzKSkgewogICAgICAgICBpZiAoIW1fbWVzc2Fn
ZVRocm90dGxlcikKLSAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CisgICAgICAgICAgICBtX21l
c3NhZ2VUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW4+KHRo
aXMpOwogCiAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlci0+YXBwZW5kTWVzc2FnZShoV25kLCBt
ZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggNGE0OWI5NGJiYTU4ZDBjNTQ2MzMyOWMzZjZlZjIzZTg0ODhiN2FmMy4uN2Iy
OTljZWUyNWVjZDEwYmJhNjIxYzg1ODFiMDZhZTA2YzVhMWQxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RmlsZVBhdGhzTGlz
dFNpemUgPSBVU0hSVF9NQVg7CiBXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNsaWVudChXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCi0gICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShzdGQ6Om1ha2VfdW5pcXVl
PFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZpZXcpKQorICAgICwgbV9ub3Rp
ZmljYXRpb25zRGVsZWdhdGUobWFrZVVuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVn
YXRlPih3ZWJWaWV3KSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDUxNzcwY2U0NjhkMzczNDI1NjkyNDcyMmEyMTdjOGRmNDIwNzU1YmQuLjIzNDZlYjlk
MWEwYWNiY2Q1NGQwMjYzOTcyMDcwMDFlYTdjMDFjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudDo6
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUgewogfTsKIAogV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiB3ZWJGcmFtZSkKLSAgICA6IG1fcG9s
aWN5TGlzdGVuZXJQcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByaXZhdGU+KCkpCisgICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShtYWtlVW5pcXVlPFdl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQogICAgICwgbV93ZWJGcmFtZSh3ZWJGcmFt
ZSkKICAgICAsIG1fbWFudWFsTG9hZGVyKDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1
Z2luKGZhbHNlKSAKQEAgLTk3NCw3ICs5NzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbQog
CiAgICAgQVNTRVJUKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSBjYWNo
ZWRGcmFtZS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAKLSAgICBjYWNoZWRGcmFtZS0+c2V0Q2FjaGVk
RnJhbWVQbGF0Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVG
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CisgICAgY2FjaGVkRnJhbWUtPnNl
dENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGE+KHN0YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3Jl
RnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkpOwogI2Vsc2UKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA3NTY5NTkw
YzFiM2NmMzgxNmZjNDJhMzViZjNmNjZiZmQ3ODkwMjI0Li5mODBhZTA0OGI4MmRiZGIyMzQ2NTQ2
OGQ5MzNjNjBhNzA5NzJjN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE2OSw3
ICsxNjksNyBAQCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50
OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cgogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwotICAgIG1f
ZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRl
bmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0
ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG1ha2VVbmlxdWU8
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0
ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRX
ZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKICAgICBtX2Zyb250
ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50
KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBmcm9udGVu
ZEh3bmQ7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCgpCiAgICAgYm9vbCBjcmVhdGluZ0hpZ2hsaWdodCA9ICFt
X2hpZ2hsaWdodDsKIAogICAgIGlmIChjcmVhdGluZ0hpZ2hsaWdodCkKLSAgICAgICAgbV9oaWdo
bGlnaHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5vZGVIaWdobGlnaHQ+KG1faW5zcGVjdGVkV2Vi
Vmlldyk7CisgICAgICAgIG1faGlnaGxpZ2h0ID0gbWFrZVVuaXF1ZTxXZWJOb2RlSGlnaGxpZ2h0
PihtX2luc3BlY3RlZFdlYlZpZXcpOwogCiAgICAgaWYgKG1faGlnaGxpZ2h0LT5pc1Nob3dpbmco
KSkKICAgICAgICAgbV9oaWdobGlnaHQtPnVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggMjdhZjFiYWU2NTNlZmYw
MmY2NzA0ZjdlMzlhZDBlMWFjNTBhZDcwYi4uOGFmYmEwZjZkNTNhZmQ1NTU4NDVjMTk1MzZjMmE5
YzFlYzVmMzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50
UHJvcGVydHlCYWcuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiAvLyBXZWJFbGVtZW50UHJvcGVydHlCYWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFBy
b3BlcnR5QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKLSAgICA6IG1fcmVzdWx0KHN0
ZDo6bWFrZV91bmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKKyAgICA6IG1fcmVzdWx0KG1h
a2VVbmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwog
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggYTgxYzAwZTU2YzVk
ZTJhZWJjMTJhYjhiNmRiMTFiYzkzNGViYmJkYS4uZmI4OGUzOWU3YjU2YWMzMmRjZjVjZjUwMTFj
MzU0ODE3MWE2YzNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVt
LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06OmluaXRGcm9t
RGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKF9Jbl9vcHRfIHZvaWQqIGRpY3Rpb25hCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiByZWRpcmVjdFVSTHNWZWN0b3I7CiAgICAgaWYg
KENGQXJyYXlSZWYgcmVkaXJlY3RVUkxzUmVmID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeVJlZiwgcmVkaXJlY3RVUkxzS2V5KSkpIHsKICAg
ICAgICAgQ0ZJbmRleCBzaXplID0gQ0ZBcnJheUdldENvdW50KHJlZGlyZWN0VVJMc1JlZik7Ci0g
ICAgICAgIHJlZGlyZWN0VVJMc1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmlu
Zz4+KHNpemUpOworICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxTdHJpbmc+PihzaXplKTsKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQogICAgICAgICAgICAgKCpyZWRpcmVjdFVSTHNWZWN0b3IpW2ldID0gU3RyaW5nKHN0YXRp
Y19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlZGlyZWN0VVJMc1Jl
ZiwgaSkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAppbmRl
eCAyZjFmMmY0ODA3ZWI5YzRmZTcwODM1ZGI3OGUzNGEzNGJjZmYzNmQwLi5kNjVkZTE5ZWU5OWM0
NTE0NDVkZmJmMWIxMzU5ZGMyYThiYTM4Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RS
ZW5kZXJlci5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RDNEUG9zdFBy
b2Nlc3NpbmdDb250ZXh0PiBDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vzc2luZwog
ICAgIG1lbWNweShvdmVybGF5UXVhZEJ1ZmZlciwgb3ZlcmxheVF1YWRWZXJ0aWNlcywgc2l6ZW9m
KG92ZXJsYXlRdWFkVmVydGljZXMpKTsKICAgICBvdmVybGF5UXVhZC0+VW5sb2NrKCk7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5l
VGV4dHVyZSwgb3ZlcmxheVF1YWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEQzRFBvc3RQcm9j
ZXNzaW5nQ29udGV4dD4oc2NlbmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CiB9CiAKIC8vIEZJWE1F
OiA8cmRhcjovLzY1MDc4NTE+IFNoYXJlIHRoaXMgY29kZSB3aXRoIENvcmVBbmltYXRpb24ncwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAK
aW5kZXggZmZlMjM1N2U5MzY1ZmVkMjAyNjNkN2JkODY4ZWE3M2NjZWFhMmQ4NS4uOTI1MzJkYmRj
YTQxYjg1MzFlOTE2OGNkZGRlMzFiNTdhN2Y0NTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0
cnVjdCBXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlIHsKIElXZWJOb3RpZmljYXRpb25DZW50
ZXIqIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6bV9kZWZhdWx0Q2VudGVyID0gMDsKIAogV2ViTm90
aWZpY2F0aW9uQ2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIoKQotICAgIDogZChzdGQ6Om1h
a2VfdW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCisgICAgOiBkKG1ha2VV
bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGMyMzA4ZWUwNWI2ZTg3NDdlZGMy
OTc1YWYyOWE2ZGQwY2Q0OWRjMTkuLjE0MzkwMDI2NTQ0ZTlkNjc3NTA3Yjk1NWI5OTAwZTc0ODVk
MmRiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xODgwLDcgKzE4ODAs
NyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBtZXNzYWdlLCBXUEFSQU0g
d1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgICAgICBtb3VzZUV2ZW50LnNldENsaWNrQ291bnQo
Z2xvYmFsQ2xpY2tDb3VudCk7CiAgICAgICAgIGhhbmRsZWQgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LmV2ZW50SGFuZGxlcigpLm1vdXNlTW92ZWQobW91c2VFdmVudCk7CiAgICAgICAgIGlmICghbV9t
b3VzZU91dFRyYWNrZXIpIHsKLSAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUUkFDS01PVVNFRVZFTlQ+KCk7CisgICAgICAgICAgICBtX21vdXNlT3V0VHJh
Y2tlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFRSQUNLTU9VU0VFVkVOVD4o
KTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5jYlNpemUgPSBzaXplb2YoVFJBQ0tN
T1VTRUVWRU5UKTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5kd0ZsYWdzID0gVE1F
X0xFQVZFOwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXItPmh3bmRUcmFjayA9IG1fdmll
d1dpbmRvdzsKQEAgLTY3OTQsNyArNjc5NCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVnaXN0ZXJF
bWJlZGRlZFZpZXdNSU1FVHlwZShfSW5fIEJTVFIgbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBF
X1BPSU5URVI7CiAKICAgICBpZiAoIW1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzKQotICAgICAgICBt
X2VtYmVkZGVkVmlld01JTUVUeXBlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+
PigpOworICAgICAgICBtX2VtYmVkZGVkVmlld01JTUVUeXBlcyA9IG1ha2VVbmlxdWU8SGFzaFNl
dDxTdHJpbmc+PigpOwogCiAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMtPmFkZCh0b1N0cmlu
ZyhtaW1lVHlwZSkpOwogICAgIHJldHVybiBTX09LOwpAQCAtNjg5NCw3ICs2ODk0LDcgQEAgdm9p
ZCBXZWJWaWV3OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9F
bGVtZW50JiB2aWRlb0VsZW1lbnQKICAgICAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5WaWRlb0Nv
bnRyb2xsZXIpOwogICAgIH0KIAotICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcj4oKTsKKyAgICBtX2Z1bGxT
Y3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXI+KCk7CiAgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5zZXRWaWRlb0VsZW1lbnQo
JnZpZGVvRWxlbWVudCk7CiAgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRlckZ1
bGxzY3JlZW4oKTsKICNlbmRpZgpAQCAtNjk0Niw3ICs2OTQ2LDcgQEAgSFJFU1VMVCBXZWJWaWV3
OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2Vi
U2NyaXB0V28KICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIFdlYlNjcmlwdFdvcmxk
KiB3b3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwotICAg
IGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291cmNlLCB0
b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwKKyAg
ICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwo
dXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCiAgICAgICAg
IHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLCBpbmplY3Rpb25UaW1l
ID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IElu
amVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdElu
QWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiAg
ICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KHdvcmxk
LT53b3JsZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKQEAgLTY5NzMsNyArNjk3Myw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBncm91cE5h
bWUsIF9Jbl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBX
ZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdvcmxkKj4o
aVdvcmxkKTsKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHls
ZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hp
dGVsaXN0Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwK
KyAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2Us
IHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLCB0
b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwKICAgICAgICAgaW5qZWN0
ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IElu
amVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+
dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQod29ybGQtPndvcmxkKCks
IFdURk1vdmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwogICAgIHJl
dHVybiBTX09LOwpAQCAtNzIzNyw3ICs3MjM3LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nKGJvb2wgYWNjZWxlcmF0ZWQpCiAgICAgfQogI2VsaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dCkKLSAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsK
KyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZyA9IGFjY2VsZXJhdGVkOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTA4YTMxNTI0YjFlNjFlNTE5MjQzNTU3
NDU5NjVjMmY4MGQwMDgyNC4uNWI3N2YxMDJjZDhlYzdmOGQwOWRkNjlmZjY3MDgzZTFjZjQxZTk3
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyMSBAQAorMjAxOS0wOC0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQg
aXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoYWRkVVJMVG9S
ZWRpcmVjdENhbGxiYWNrKToKKyAgICAgICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVy
Q2FsbGJhY2spOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hh
bm5lbCk6CisgICAgICAgIChUZXN0UnVubmVyOjpydW5VSVNjcmlwdCk6CisgICAgICAgIChUZXN0
UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAg
IChldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwOgorICAgICAgICAoRFJU
RGF0YU9iamVjdDo6U2V0RGF0YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpGcmFtZUxvYWRE
ZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwOgor
ICAgICAgICAoRFJUVW5kb01hbmFnZXI6OkRSVFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFVJRGVs
ZWdhdGU6OlVJRGVsZWdhdGUpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6cmVzZXRVbmRvTWFuYWdl
cik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpydW5KU1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxh
dGZvcm1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9TVEQp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hDb3VudGVkU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0TW92aW5n
VXNpbmdFbnN1cmUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdE1vdmluZ1VzaW5nQWRk
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0xpc3RIYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6cnVuTG9ja1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNv
dW50ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q0FSaW5nQnVmZmVyVGVzdDo6U2V0VXApOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVRlc3RWYWx1ZSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVh
dGVQYWdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVzdDo6U2V0
VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdDJXaWxsTG9hZFRlc3Q6OlNldFVwKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFu
Y2VJbkJ1bmRsZV9CdW5kbGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGb3JjZUxpZ2h0
QXBwZWFyYW5jZUluQnVuZGxlVGVzdDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwOgorICAg
ICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlv
blByb3h5SFRUUFMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RP
TURPTVdpbmRvd1Rlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVzdDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29j
b2EubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoYXBwbHlXb3Jr
YXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycyk6Cisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9uOmFkZFRv
V2luZG93Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5t
bToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIGluaXRXaXRoRm9udE9wdGlvbnM6XSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6Y2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGU6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldE9wZW5Q
YW5lbEZpbGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1N0cmluZ0Z1bmN0aW9ucy5oOgorICAgICAgICAoV1RSOjp0b1NURCk6CisgICAgICAgIChX
VFI6OnRvV1RGU3RyaW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbik6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVz
KToKKyAgICAgICAgKFdUUjo6Y3JlYXRlVGVzdFVSTCk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpydW5UZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
Q3JlYXRlV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3JpcHQpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcDoKKyAg
ICAgICAgKFdUUjo6Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAg
IChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6OkV2ZW50
U2VuZGVyUHJveHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojpt
b3VzZU1vdmVUbyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQ
cm94eVdQRS5jcHA6CisgICAgICAgIChXVFI6OndwZUtleVN5bUZvcktleVJlZik6CisKIDIwMTkt
MDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RG
XSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9uIHBhcnQKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHAKaW5kZXggOTBjNjRjMzYxNGNkYzQyZGI2ZjQ5NDJiZGUxYWQxMzBmZDFmZDlj
Yi4uZDdjYzI4Y2IwYjI2MmE5Zjg5Y2M0Yzk3OWFkZTRiOTI1Y2RlZDA4NSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM2MywxMSArMzY0
LDExIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuCiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsK
IAogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1Np
emUob3JpZ2luLmdldCgpKTsKLSAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIG9yaWdpbkJ1ZmZlciA9IG1ha2VV
bmlxdWVBcnJheTxjaGFyPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKG9yaWdpbi5nZXQoKSwgb3JpZ2luQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAog
ICAgIG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShkZXN0aW5h
dGlvbi5nZXQoKSk7Ci0gICAgYXV0byBkZXN0aW5hdGlvbkJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0g
bWFrZVVuaXF1ZUFycmF5PGNoYXI+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRG
OENTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCksIGRlc3RpbmF0aW9uQnVmZmVyLmdldCgpLCBtYXhM
ZW5ndGggKyAxKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxU
ZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTEzMTgsNyAr
MTMxOSw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVy
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTCiAgICAgQVNTRVJUKCEqZXhjZXB0aW9u
KTsKIAogICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmlu
Z1NpemUoaGVhZGVyLmdldCgpKTsKLSAgICBhdXRvIGhlYWRlckJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGhlYWRlckJ1ZmZlciA9IG1h
a2VVbmlxdWVBcnJheTxjaGFyPihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhD
U3RyaW5nKGhlYWRlci5nZXQoKSwgaGVhZGVyQnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsK
IAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIzOTQsNyArMjM5NSw3IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sIHNob3VsZFBhaW50
QnJva2VuSW1hZ2UpCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5u
ZWwoSlNTdHJpbmdSZWYgY2hhbm5lbCkKIHsKICAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJp
bmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGNoYW5uZWwpOwotICAgIGF1dG8gYnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gYnVmZmVy
ID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0
VVRGOENTdHJpbmcoY2hhbm5lbCwgYnVmZmVyLmdldCgpLCBtYXhMZW5ndGggKyAxKTsKIAogICAg
IFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZSh7IGJ1ZmZlci5n
ZXQoKSB9KTsKQEAgLTI0NjQsNyArMjQ2NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cnVuVUlTY3Jp
cHQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHNjcmlwdCwgSlNWYWx1ZVJlCiAg
ICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soY2FsbGJhY2tJRCwgY2FsbGJhY2spOwogCiAgICAg
aWYgKCFtX1VJU2NyaXB0Q29udGV4dCkKLSAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdUUjo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fVUlT
Y3JpcHRDb250ZXh0ID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8V1RSOjpVSVNj
cmlwdENvbnRleHQ+KCp0aGlzKTsKIAogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcoSlNTdHJpbmdH
ZXRDaGFyYWN0ZXJzUHRyKHNjcmlwdCksIEpTU3RyaW5nR2V0TGVuZ3RoKHNjcmlwdCkpOwogICAg
IG1fVUlTY3JpcHRDb250ZXh0LT5ydW5VSVNjcmlwdChzY3JpcHRTdHJpbmcsIGNhbGxiYWNrSUQp
OwpAQCAtMjUyMSw3ICsyNTIyLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxl
cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAg
IGF1dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVl
LCBudWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0
TWF4aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmls
ZUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAg
ICAgIGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihmaWxlQnVmZmVyU2l6
ZSk7CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZl
ci5nZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIG1fb3BlblBhbmVsRmlsZXMucHVz
aF9iYWNrKGZpbGVCdWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDJlOTM5N2ZmNTk0OTI1MDBmYjA4Njg3MWM4YWY3YzZmMTY2OWFi
ZjQuLjA4ZGU5YmQ5MmVkMmZiMWFiMDdkYWZhNzllY2M5ZjgwOTQ1OTg2YjMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTk3LDYgKzk3LDcgQEAKICNp
bXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisjaW1wb3J0IDx3dGYvVW5pcXVlQXJyYXkuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC0xNTM1LDcgKzE1MzYsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmR1bXBG
cmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgIC8vIHRoZSByZXN1bHQgd2l0aG91dCBh
bnkgY29udmVyc2lvbi4KICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nUmVmID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYp
aW5uZXJUZXh0KSk7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1V
VEY4Q1N0cmluZ1NpemUoc3RyaW5nUmVmLmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VV
bmlxdWVBcnJheTxjaGFyPihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0g
V0tTdHJpbmdHZXRVVEY4Q1N0cmluZ05vblN0cmljdChzdHJpbmdSZWYuZ2V0KCksIGJ1ZmZlci5n
ZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlQFxuIiwgU3Ry
aW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0
aCAtIDEpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDQ2MWJkM2RmM2ViYjI2
MDNhYzMyMTgyODgyMThkZDhmNjkxNjhmZmQuLjNiZTMzMjIxZDZiM2ViYzM1NmQ1MWUzMzRhMjRk
OTI5YWUyNTNhOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNl
bmRpbmdDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNl
bmRpbmdDb250cm9sbGVyLm1tCkBAIC01NjgsNyArNTY4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxl
ckZvclYKIHsKICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3Nd
XSkKICAgICAgICAgdmlldyA9IFsoV2ViSFRNTFZpZXcgKil2aWV3IF9oaXRWaWV3Rm9yRXZlbnQ6
ZXZlbnRdOwotICAgIHJldHVybiAhW3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFz
c11dID8gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFz
c10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSkgOiBOVUxMOworICAgIHJldHVybiAh
W3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNTY3JvbGxlciBjbGFzc11dID8gbWFrZVVuaXF1ZTxDbGFz
c01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VC
dXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VC
dXR0b25zKSkgOiBOVUxMOwogfQogCiBzdGF0aWMgTlNVSW50ZWdlciBzd2l6emxlZEV2ZW50UHJl
c3NlZE1vdXNlQnV0dG9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RFJURGF0YU9iamVjdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVj
dC5jcHAKaW5kZXggY2U4MmVhMWUyN2RiZDI3OTJiMTA0OWM0OTRlYWYwYjg5YzQ5ZWFkMS4uY2Rm
ZThhY2I0NjhjNzRkMGFlMDg0Y2Y4NzZkNTM0ZmYxZTNiYTU3YyAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIFNURE1FVEhP
RElNUCBEUlREYXRhT2JqZWN0OjpTZXREYXRhKF9Jbl8gRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBf
SW5fIFNUR01FRElVTSoKICAgICBpZiAoIXBmb3JtYXRldGMgfHwgIXBtZWRpdW0pCiAgICAgICAg
IHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBhdXRvIGZvcm1hdGV0YyA9IHN0ZDo6bWFrZV91bmlx
dWU8Rk9STUFURVRDPigpOworICAgIGF1dG8gZm9ybWF0ZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJ
VU0sIFN0Z01lZGl1bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJv
TWVtb3J5KGZvcm1hdGV0Yy5nZXQoKSwgc2l6ZW9mKEZPUk1BVEVUQykpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggYzgwZGYxYmU1ZjJk
ZTQ3ZDNiODMxNjM3ZWY2ZTlmYmNkOTM0YzhlNi4uMTFjOTMzOWIxNmQ4MDRkMmMyMDFjOTMyOWY0
YThjMzU0NDJhODNjYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2Fk
RGVsZWdhdGUuY3BwCkBAIC03Miw5ICs3Miw5IEBAIHN0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChJV2ViRnJhbWUqIHdlYkZyYW1lKQogfQogCiBGcmFtZUxvYWREZWxlZ2F0
ZTo6RnJhbWVMb2FkRGVsZWdhdGUoKQotICAgIDogbV9nY0NvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCi0gICAgLCBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKHN0
ZDo6bWFrZV91bmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+KCkpCi0gICAgLCBtX3RleHRJ
bnB1dENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0SW5wdXRDb250cm9sbGVyPigpKQor
ICAgIDogbV9nY0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxHQ0NvbnRyb2xsZXI+KCkpCisgICAgLCBt
X2FjY2Vzc2liaWxpdHlDb250cm9sbGVyKG1ha2VVbmlxdWU8QWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI+KCkpCisgICAgLCBtX3RleHRJbnB1dENvbnRyb2xsZXIobWFrZVVuaXF1ZTxUZXh0SW5wdXRD
b250cm9sbGVyPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5j
cHAKaW5kZXggZDE3Y2Y3NGY0ZmJiYTU3MTQ3NzZjYjAwNzdlOWQ3MGY3MjRjM2Q2My4uOGY4MmYw
ZDkyNmMwYWQ2OTYxMDFhNWIxMzU0ZTdlNzBmNDM4NDQzZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9VSURlbGVnYXRlLmNwcApAQCAtMTA0LDggKzEwNCw4IEBAIGNsYXNzIERSVFVuZG9NYW5h
Z2VyIHsKIH07CiAKIERSVFVuZG9NYW5hZ2VyOjpEUlRVbmRvTWFuYWdlcigpCi0gICAgOiBtX3Jl
ZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKLSAgICAsIG1fdW5kb1N0
YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb1N0YWNrPigpKQorICAgIDogbV9yZWRvU3RhY2so
bWFrZVVuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCisgICAgLCBtX3VuZG9TdGFjayhtYWtlVW5pcXVl
PERSVFVuZG9TdGFjaz4oKSkKIHsKIH0KIApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgRFJUVW5k
b01hbmFnZXI6OnVuZG8oKQogfQogCiBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkKLSAgICA6IG1f
dW5kb01hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKKyAgICA6IG1f
dW5kb01hbmFnZXIobWFrZVVuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKSkKICAgICAsIG1fZGVza3Rv
cE5vdGlmaWNhdGlvbnMobmV3IERSVERlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXIpCiB7CiAg
ICAgbV9mcmFtZS5ib3R0b20gPSAwOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFVJRGVsZWdhdGU6OlVJ
RGVsZWdhdGUoKQogCiB2b2lkIFVJRGVsZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIoKQogewotICAg
IG1fdW5kb01hbmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOworICAg
IG1fdW5kb01hbmFnZXIgPSBtYWtlVW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpOwogfQogCiBIUkVT
VUxUIFVJRGVsZWdhdGU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0
cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9K
YXZhU2NyaXB0VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNw
cAppbmRleCAyMTM2ZTk4ZDhlYmI4NzVkNTk3ZmM2ZTA3YzdiMDFlZDViODRhZTE2Li5kOGUzMjNl
ZGUzZGE4OTIzNTlkYmQzNDgzOTg4ZTRjMGUzYTg1OGEzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL0phdmFTY3JpcHRUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0ph
dmFTY3JpcHRUZXN0LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9XS1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXku
aD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC03NSw3ICs3Niw3IEBAIDo6dGVz
dGluZzo6QXNzZXJ0aW9uUmVzdWx0IHJ1bkpTVGVzdChjb25zdCBjaGFyKiwgY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqLCBXS1BhCiAgICAgVXRpbDo6cnVuKCZjb250ZXh0LmRpZEZpbmlzaCk7CiAK
ICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShjb250ZXh0LmFjdHVhbFN0cmluZy5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5p
cXVlQXJyYXk8Y2hhcj4oYnVmZmVyU2l6ZSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhj
b250ZXh0LmFjdHVhbFN0cmluZy5nZXQoKSwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAg
ICAKICAgICByZXR1cm4gY29tcGFyZUpTUmVzdWx0KHNjcmlwdCwgYnVmZmVyLmdldCgpLCBleHBl
Y3RlZFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRp
bGl0aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCmlu
ZGV4IDhmOGQ3NjhhNTNjMjc1MWEyNDNlMDU5NWUyYzBjMGY0NDVkZDk2YzguLjk0OTliYzZhMDBk
MTk3MmUyNjUwZGU2ZDBlMzVlMDcyZjM3MDdlYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1VdGlsaXRpZXMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJLaXQv
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogbmFtZXNwYWNlIFV0aWwgewpAQCAtNjksNyArNzAsNyBAQCBXS0NvbnRleHRSZWYgY3Jl
YXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdE5h
bWUsIFdLVAogc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIHNp
emVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmlu
Zyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6
ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oYnVmZmVyU2l6ZSk7
CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5n
LCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZm
ZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IDUwZjkxMWRiNTkwZWYyMjIwMmM0YWI4MTBkN2M3YTgw
MGY1ZWRhYTEuLjJhMDZmOGJhNWNhOWZlYjQ5MmEzNTIyYzVjNjU1MDEzOGQyMjM3ZTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKQEAgLTQxNyw3ICs0MTcs
NyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKIHsKICAgICAvLyBVbmlxdWUgc25v
d2ZsYWtlcyBjYW5ub3QgYmUgY29waWVkLgogICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFrZVVu
ZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBhdXRvIHMg
PSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIEVYUEVD
VF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7CiAgICAg
fQpAQCAtNDI2LDcgKzQyNiw3IEBAIFRFU1QoV1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAg
IHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBzID0gbWFrZVVuZXhw
ZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpOworICAgICAgICBhdXRvIHMgPSBt
YWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSk7CiAgICAgICAgIFVuZXhwZWN0
ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IGMoV1RGTW92ZShzKSk7CiAgICAgICAgIEVY
UEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQRUNUX0VRKG1lbHRlZCwgMCk7CkBA
IC00NDcsNyArNDQ3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgfTsK
IAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4sIGlu
dD4gcyhzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4oKSk7CisgICAgICAgIEV4cGVjdGVkPHN0
ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkp
OwogICAgICAgICBwbG93KFdURk1vdmUocykudmFsdWUoKSk7CiAgICAgfQogICAgIEVYUEVDVF9F
UShzbm93Zmxha2VzLCAxKTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwg
dW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAgIEV4
cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQo
c3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsKKyAgICAgICAgRXhwZWN0ZWQ8aW50LCBz
dGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNu
b3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAgICAgfQog
ICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ2Myw3ICs0NjMsNyBAQCBURVNUKFdU
Rl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7
Ci0gICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1h
a2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2ZsYWtlPigpKSk7CisgICAgICAgIEV4
cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVk
KG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAgICAgIHBsb3coV1RGTW92ZShzKS5lcnJv
cigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dmbGFrZXMsIDEpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCmluZGV4IDg0ZGE1ZWMz
ZmZjMjQ4YWNkZDllMzYzMzAzOGM2OWRhZTg5MTIwOTkuLjdiOGZhZjI4OGFiYzA3Y2ZhZjhiNTI3
MTIzOGY3NmQwMTMwMTJlZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hDb3VudGVkU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9IYXNoQ291bnRlZFNldC5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBURVNUKFdURl9IYXNoQ291
bnRlZFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVf
cHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBoYXNoQ291bnRlZFNldDsKIAotICAg
IGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1
ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
Ojpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yNTksNyArMjU5LDcgQEAgVEVTVChXVEZfSGFzaENv
dW50ZWRTZXQsIFVuaXF1ZVB0cktleUluaXRpYWxDb3VudCkKIAogICAgIEhhc2hDb3VudGVkU2V0
PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50
ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQo
V1RGTW92ZSh1bmlxdWVQdHIpLCAxMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTI5OCw3ICsyOTgsNyBA
QCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50
ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3Vu
dGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxp
bnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVk
U2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0zMTIsNyArMzEyLDcgQEAgVEVTVChX
VEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikK
IHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRT
ZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4o
NSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBURVNUKFdURl9I
YXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBI
YXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAg
aW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSk7CiAKQEAgLTMzNyw3ICszMzcsNyBAQCBURVNUKFdURl9IYXNoQ291bnRl
ZFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hDb3Vu
dGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gaGFz
aENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VV
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgaGFzaENvdW50ZWRT
ZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvSGFzaE1hcC5jcHAKaW5kZXggOWZkZjUxZDUwNzQ4ZWMwYzI3ZWZkMjFjM2NmYjg1MmE0NDI4
MWI5MC4uYTcwYzE2MzU2YjZjMWQyNjk2N2Y3NWM2OTEwYmMxYzAxNDYyNGY4ZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBU
RVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVl
X3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiBtYXA7CiAKLSAgICBhdXRv
IHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4oKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKICAg
ICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlv
bkNvdW50KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJL
ZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxp
bnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxp
bnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKFdU
Rl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAg
SGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1
ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1h
a2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1
bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBA
IC0yNTUsNyArMjU1LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0dldFVzaW5n
UmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1h
cDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAg
IGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1
KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUo
dW5pcXVlUHRyKSwgMik7CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBV
bmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVu
aXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAg
YXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRy
ID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsK
IApAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9UYWtl
VXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0
byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgp
OwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtNTYzLDEyICs1NjMs
MTIgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1VuaXF1ZVBvaW50ZXIpCiB7CiAgICAgSGFz
aE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkPj4gbWFwOwogICAgIHsKLSAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8dW5zaWduZWQ+KDEpOyB9KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAu
ZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVu
c2lnbmVkPigxKTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1hcC5nZXQoMSkpOwogICAg
ICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAg
ICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1bHQuaXRlcmF0b3ItPmtleSk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQy
ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkPigy
KTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwgW10geyByZXR1
cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8dW5zaWduZWQ+KDIpOyB9KTsKICAg
ICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
KmFkZFJlc3VsdDIuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1
LCBhZGRSZXN1bHQyLml0ZXJhdG9yLT5rZXkpOwpAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgdGVz
dE1vdmluZ1VzaW5nRW5zdXJlKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQogewogICAgIEhhc2hN
YXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwog
ICAgIAotICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8T2Jq
ZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CisgICAgbWFwLmVuc3VyZSgx
LCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxv
Z2dlcikpOyB9KTsKIH0KIAogdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4m
JiBsb2dnZXIpCkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVm
PFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVf
cHRyPE9iamVjdFdpdGhSZWZMb2dnZXI+PiBtYXA7CiAKICAgICBhdXRvJiBzbG90ID0gbWFwLmFk
ZCgxLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0gICAgc2xvdCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsKKyAgICBzbG90ID0gbWFr
ZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOwogfQogCiBURVNU
KFdURl9IYXNoTWFwLCBFbnN1cmVfTGFtYmRhc0NhcHR1cmluZ0J5UmVmZXJlbmNlKQpAQCAtNjk5
LDcgKzY5OSw3IEBAIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKIAogVEVTVChXVEZfSGFzaE1hcCwg
UmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiB7Ci0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVu
aXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAgICAgSGFzaE1hcDxSZWZQdHI8RGVyZWZPYnNlcnZl
cj4sIGludD4gbWFwOwogICAgIG1hcC5hZGQoYWRvcHRSZWYob2JzZXJ2ZXIuZ2V0KCkpLCA1KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKaW5kZXggYmNmMTU5YzMz
ODE2YWVlYWIzY2MzMzJmYTVkODBlZTQzNWRkNmZhNi4uZTY2YjljNzdlNzA1Nzg0ZGE0NjFmZTEy
NzA4ZDcxMDNkNzg1YzNhYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvSGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNl
dC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBVbmlxdWVQdHJLZXkp
CiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5p
cXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgc2V0LmFkZChXVEZNb3Zl
KHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgVEVTVChXVEZf
SGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaFNl
dDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdl
dCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTU4LDcgKzE1OCw3
IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9Db250YWluc1VzaW5nUmF3UG9pbnRl
cikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBzZXQ7CiAKLSAgICBhdXRv
IHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0
ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBw
dHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwog
CkBAIC0xNzEsNyArMTcxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1JlbW92
ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAg
ICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAg
ICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVT
VChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBI
YXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gc2V0
OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHIpKTsKIApAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBEZXJlZk9ic2VydmVyIHsKIAogVEVT
VChXVEZfSGFzaFNldCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiB7Ci0gICAgYXV0byBv
YnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAgICBhdXRvIG9i
c2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAgICAgSGFzaFNldDxSZWZQ
dHI8RGVyZWZPYnNlcnZlcj4+IHNldDsKICAgICBzZXQuYWRkKGFkb3B0UmVmKG9ic2VydmVyLmdl
dCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFz
aFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAK
aW5kZXggNjU3YmU0MWQ2MjA3MjQ0NjdhNTU0OWUyYWI1YTE5NDFjNGUzNzNjMS4uYjc3MGE1YjI3
YzFkMmIwOTVhNWJiNTlkNjVhYzNmNGRjNGU0ZTY4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIFRFU1QoV1RG
X0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1
ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGxpc3Q7CiAKLSAgICBhdXRvIHVu
aXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4o
KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcj4oKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQ
RUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3Vu
dCk7CkBAIC0zOTYsNyArMzk2LDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktl
eV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0
cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGlu
dD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3Qu
YWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTQxMCw3ICs0MTAsNyBAQCBURVNUKFdURl9M
aXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAg
IExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0g
dW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAg
LTQyMSw5ICs0MjEsOSBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2Vy
dEJlZm9yZVVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9w
dHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGludD4oMik7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoMiA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPGludD4oMik7CiAgICAgYXV0byBwdHJXaXRoMiA9IHVuaXF1ZVB0cldp
dGgyLmdldCgpOwotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDQgPSBzdGQ6Om1ha2VfdW5pcXVlPGlu
dD4oNCk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoNCA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGludD4oNCk7CiAgICAgYXV0byBwdHJXaXRoNCA9IHVuaXF1ZVB0cldpdGg0Lmdl
dCgpOwogCiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlxdWVQdHJXaXRoMikpOwpAQCAtNDM1LDcg
KzQzNSw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfSW5zZXJ0QmVmb3Jl
VXNpbmdSYXdQb2ludGVyKQogICAgIEFTU0VSVF9FUShwdHJXaXRoNCwgbGlzdC5sYXN0KCkuZ2V0
KCkpOwogICAgIEFTU0VSVF9FUSg0LCAqbGlzdC5sYXN0KCkuZ2V0KCkpOwogCi0gICAgYXV0byB1
bmlxdWVQdHJXaXRoMyA9IHN0ZDo6bWFrZV91bmlxdWU8aW50PigzKTsKKyAgICBhdXRvIHVuaXF1
ZVB0cldpdGgzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50PigzKTsKICAg
ICBhdXRvIHB0cldpdGgzID0gdW5pcXVlUHRyV2l0aDMuZ2V0KCk7CiAKICAgICBsaXN0Lmluc2Vy
dEJlZm9yZShwdHJXaXRoNCwgV1RGTW92ZSh1bmlxdWVQdHJXaXRoMykpOwpAQCAtNDYyLDcgKzQ2
Miw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQ
b2ludGVyKQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgYXV0
byogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRy
KSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKaW5kZXggMmRjY2VkY2Fk
Y2M2YzIyMjczZGViYzIwZjNmZjY3N2M4NzMyOTAyNy4uYThmMDNiMDdkNjhiODVmOWRlMjg2MDQ5
ZjNjNjFhM2ZlMzkyZjFlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvTG9jay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JkTG9jay5oPgogCiBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC00Miw5ICs0Myw5IEBAIHN0cnVjdCBMb2NrSW5zcGVj
dG9yIHsKIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlPgogdm9pZCBydW5Mb2NrVGVzdCh1bnNp
Z25lZCBudW1UaHJlYWRHcm91cHMsIHVuc2lnbmVkIG51bVRocmVhZHNQZXJHcm91cCwgdW5zaWdu
ZWQgd29ya1BlckNyaXRpY2FsU2VjdGlvbiwgdW5zaWduZWQgbnVtSXRlcmF0aW9ucykKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9ja3MgPSBzdGQ6Om1ha2VfdW5pcXVlPExv
Y2tUeXBlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtd
PiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8ZG91YmxlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJH
cm91cCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPExvY2tUeXBlW10+IGxvY2tzID0gbWFrZVVuaXF1
ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8TG9ja1R5cGVbXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAg
ICBhdXRvIHdvcmRzID0gbWFrZVVuaXF1ZUFycmF5PGRvdWJsZT4obnVtVGhyZWFkR3JvdXBzKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3Vw
cyAqIG51bVRocmVhZHNQZXJHcm91cCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIHRocmVhZEdyb3Vw
SW5kZXggPSBudW1UaHJlYWRHcm91cHM7IHRocmVhZEdyb3VwSW5kZXgtLTspIHsKICAgICAgICAg
d29yZHNbdGhyZWFkR3JvdXBJbmRleF0gPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9QYXJraW5nTG90LmNwcAppbmRleCA0NTJlMjI3NzFkYzA2NGFkYWFmZTYyMGViMzNlODAx
MzBmNzlmMTk3Li5lMDBhMDliMmExN2FhNzM0ODU2ZTQyYzExNDVjYmU2MDg2M2YwYTA1IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcApAQCAtMTgyLDcg
KzE4Miw3IEBAIHN0cnVjdCBTaW5nbGVMYXRjaFRlc3QgewogCiB2b2lkIHJ1blBhcmtpbmdUZXN0
KHVuc2lnbmVkIG51bUxhdGNoZXMsIHVuc2lnbmVkIGRlbGF5LCB1bnNpZ25lZCBudW1UaHJlYWRz
LCB1bnNpZ25lZCBudW1TaW5nbGVVbnBhcmtzKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5n
bGVMYXRjaFRlc3RbXT4gdGVzdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNpbmdsZUxhdGNoVGVzdFtd
PihudW1MYXRjaGVzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRl
c3RzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8U2luZ2xlTGF0Y2hUZXN0W10+
KG51bUxhdGNoZXMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBsYXRjaEluZGV4ID0gbnVtTGF0Y2hl
czsgbGF0Y2hJbmRleC0tOykKICAgICAgICAgdGVzdHNbbGF0Y2hJbmRleF0uaW5pdGlhbGl6ZShu
dW1UaHJlYWRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jl
ZkNvdW50ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5j
cHAKaW5kZXggMDgxZGY5ZTRmYzFkMjUxZDgxNGIyMjY0YmQyZDBlMDUyYzBiZDQxZi4uZjRlZjk4
M2IxYTlmYmU4OTgwN2M3NWFjMjhmZGI2MjZkOWE5NmExMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBURVNUKFdU
RiwgUmVmQ291bnRlcikKIFRFU1QoV1RGLCBSZWZDb3VudGVyRGVsZXRlQ291bnRlcldpdGhPdXRz
dGFuZGluZ1Rva2VucykKIHsKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291
bnRlcj4gY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdENvdW50ZXI+KFsmXShSZWZDb3Vu
dGVyRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBj
b3VudGVyID0gbWFrZVVuaXF1ZTxUZXN0Q291bnRlcj4oWyZdKFJlZkNvdW50ZXJFdmVudCBldmVu
dCkgewogICAgICAgICAgICAgaWYgKCFjb3VudGVyLT52YWx1ZSgpKQogICAgICAgICAgICAgICAg
IGNvdW50ZXIgPSBudWxscHRyOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcAppbmRleCBmNDBlZGE4YjRjM2Q3ZTZjYzNmZTQxMTkz
Mzc3NWUwMDQzMDE3MmFiLi5hNmYxNTE5YzAwMjFkZTY5NDUwYzg0YjBiYmIzYjZmNWUyNTFiNTQy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCkBA
IC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50VGhyZWFkR3JvdXBzKFZlY3Rv
cjxSZWY8VGhyZWFkPj4mIHRocmVhZHMpCiAKIFRFU1QoV1RGLCBUaHJlYWRHcm91cFJlbW92ZSkK
IHsKLSAgICBjb25zdCB1bnNpZ25lZCBOdW1iZXJPZlRocmVhZHMgPSA2NDsKKyAgICBjb25zdCB1
bnNpZ25lZCBOdW1iZXJPZlRocmVhZHMgPSAxNjsKIAogICAgIExvY2sgbG9jazsKICAgICBDb25k
aXRpb24gdGhyZWFkUnVubmluZ0NvbmRpdGlvbjsKQEAgLTE3OSw4ICsxNzksMTEgQEAgVEVTVChX
VEYsIFRocmVhZEdyb3VwUmVtb3ZlKQogCiAgICAgRVhQRUNUX0VRKDBVLCBjb3VudFRocmVhZEdy
b3Vwcyh0aHJlYWRzKSk7CiAKLSAgICB0aHJlYWRSdW5uaW5nID0gZmFsc2U7Ci0gICAgdGhyZWFk
UnVubmluZ0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobG9jayk7CisgICAgICAgIHRocmVhZFJ1bm5pbmcgPSBmYWxzZTsKKyAgICAg
ICAgdGhyZWFkUnVubmluZ0NvbmRpdGlvbi5ub3RpZnlBbGwoKTsKKyAgICB9CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mVGhyZWFkczsgaSsrKQogICAgICAgICB0aHJlYWRz
W2ldLT53YWl0Rm9yQ29tcGxldGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9WYXJpYW50LmNwcAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1NGZmZmQzMzIxMzk1ZTlmMWUyZDJh
N2MyLi41MWVjYTA3NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5ZmY0ZmQ1NmJiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFRF
U1QoV1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKICAgICBDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7CiAKICAgICB7Ci0gICAgICAgIGF1
dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3Vu
dGVyPigpOworICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICAgICAgVmFyaWFudDxzdGQ6OnVuaXF1ZV9wdHI8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gdiA9IFdURk1vdmUodW5pcXVlUHRyKTsK
IAogICAgICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNv
bnN0cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5j
cHAKaW5kZXggNDdjMTViOWM3MWY5MzA5ZjkzNGJhYzhkMzRmNGIyODEyZGZlYWRmOS4uN2U2MzA2
OTNlZWM2MDQxYTM3NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTU3OSwxMCArNTc5LDEwIEBAIFRFU1QoV1RGX1dl
YWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1RfRVEod2Vha0hhc2hT
ZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICBFWFBFQ1RfVFJVRShpbml0aWFsQ2FwYWNpdHkg
LyBtYXhMb2FkQ2FwKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGluaXRpYWxD
YXBhY2l0eSAvIG1heExvYWRDYXA7ICsraSkgewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VV
bmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAg
ICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0gICAgICAgICAgICBv
dGhlck9iamVjdHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKSk7CisgICAgICAgICAg
ICBvdGhlck9iamVjdHMuYXBwZW5kKG1ha2VVbmlxdWU8QmFzZT4oKSk7CiAgICAgICAgICAgICB3
ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNU
X0VRKHNfYmFzZVdlYWtSZWZlcmVuY2VzLCBvdGhlck9iamVjdHMuc2l6ZSgpKTsKQEAgLTYxNiw3
ICs2MTYsNyBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldEV4cGFuc2lvbikKICAgICAg
ICAgRVhQRUNUX0VRKHdlYWtIYXNoU2V0LmNhcGFjaXR5KCksIDB1KTsKICAgICAgICAgdW5zaWdu
ZWQgb2JqZWN0Q291bnQgPSBpbml0aWFsQ2FwYWNpdHkgKiAyOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7ICsraSkgewotICAgICAgICAgICAgYXV0byBvYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9iamVjdCA9
IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0
KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CiAgICAgICAg
ICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7CkBAIC02NjgsMTAgKzY2OCwxMCBA
QCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVzRW1wdHkpCiAgICAgewogICAg
ICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9iamVjdCA9IG1ha2VV
bmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpmaXJzdE9iamVjdCk7CiAg
ICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNlPigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAg
ICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3Rz
LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3ZWFrSGFzaFNldC5i
ZWdpbigpLmdldCgpID09IGZpcnN0T2JqZWN0LmdldCgpKTsKQEAgLTczNSw4ICs3MzUsOCBAQCBU
RVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogCiAgICAgd2hpbGUgKDEp
IHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7Ci0gICAgICAgIGF1dG8g
Zmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7Ci0gICAgICAgIGF1dG8gbGFz
dE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9i
amVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBsYXN0T2JqZWN0ID0gbWFr
ZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZpcnN0T2JqZWN0KTsK
ICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpsYXN0T2JqZWN0KTsKICAgICAgICAgaWYgKHdlYWtI
YXNoU2V0LmJlZ2luKCkuZ2V0KCkgIT0gZmlyc3RPYmplY3QuZ2V0KCkpCkBAIC03NjAsMTAgKzc2
MCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogICAgIHsK
ICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7CiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8QmFzZT4+IG9iamVjdHM7Ci0gICAgICAgIGF1dG8gbm9uRmlyc3RPYmpl
Y3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgIGF1dG8gbm9uRmlyc3RPYmpl
Y3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgqbm9uRmly
c3RPYmplY3QpOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6
bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1
ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmplY3QpOwogICAgICAg
ICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAgICAgfSB3aGlsZSAo
d2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSA9PSBub25GaXJzdE9iamVjdC5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCmlu
ZGV4IDJhYWI2NWRkOGZkN2VmMDcwNTFmYjZmNzU2NzU4Y2RlNzAyZTA3YTEuLjgxZDdiYTI5MWFl
OWY0YWI3Y2YyZTVmOWFhZDYyYzk0MjQzNTM2NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNs
YXNzIENBUmluZ0J1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgdmlydHVh
bCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQo
KTsKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZmZXI+
KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPENBUmluZ0J1ZmZlcj4oKTsKICAgICB9CiAKICAgICAvLyBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24oZG91YmxlIHNhbXBsZVJhdGUsIFVJbnQzMiBudW1DaGFubmVscywgUENNRm9ybWF0IGZv
cm1hdCwgYm9vbCBpc0ludGVybGVhdmVkLCBzaXplX3QgY2FwYWNpdHkpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5k
ZXggY2RkZTY3MDAyOTc2OWNkNzVmYTA3YTE2MWE4NWUxYjkxNmE5MzVkNC4uZGNhNDYzNjAyZTk2
ZDYwYTA0NTEzODEyMWNiYmRjZWZiZWU5ZTVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtNTMsNyArNTMs
NyBAQCBjbGFzcyBDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJsaWMgV2ViQ29yZTo6
Q2FsY0V4cHJlc3Npb25Ob2RlIHsKIAogc3RhdGljIFJlZjxXZWJDb3JlOjpDYWxjdWxhdGlvblZh
bHVlPiBjcmVhdGVUZXN0VmFsdWUoKQogewotICAgIGF1dG8gbm9kZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlPigpOworICAgIGF1dG8gbm9kZSA9IG1ha2VV
bmlxdWU8Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlPigpOwogICAgIHJldHVybiBXZWJDb3Jl
OjpDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShub2RlKSwgV2ViQ29yZTo6VmFsdWVS
YW5nZUFsbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAKaW5kZXggZjU4ZGE4YTQyMDczZWM5OWJiZWUz
NGE4NWJlYzM0YzA4NWM1MmE2NC4uMGMxYTA2OWYxM2MzOWM0MDllNWQ1ZTFiMDNhN2U5MmJmOWIz
NjZjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9I
aWRNZXNzYWdlVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBURVNUKEZpZG9IaWRN
ZXNzYWdlVGVzdCwgVGVzdFBhY2tldFNpemUpCiAgICAgdWludDMyX3QgY2hhbm5lbElkID0gMHgw
NTA2MDcwODsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKIAotICAgIGF1dG8gaW5pdFBhY2tl
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgRmlkb0hp
ZERldmljZUNvbW1hbmQ6OmtJbml0LCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgp
KTsKKyAgICBhdXRvIGluaXRQYWNrZXQgPSBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0Pihj
aGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9yPHVpbnQ4X3Q+KGRh
dGEpLCBkYXRhLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDY0dSwgaW5pdFBhY2tldC0+Z2V0U2Vy
aWFsaXplZERhdGEoKS5zaXplKCkpOwogCi0gICAgYXV0byBjb250aW51YXRpb25QYWNrZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgMCwg
V1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250aW51YXRpb25QYWNrZXQgPSBtYWtlVW5pcXVl
PEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgMCwgV1RGTW92ZShkYXRhKSk7
CiAgICAgRVhQRUNUX0VRKDY0dSwgY29udGludWF0aW9uUGFja2V0LT5nZXRTZXJpYWxpemVkRGF0
YSgpLnNpemUoKSk7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRl
c3QsIFRlc3RQYWNrZXREYXRhKQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4RjUwNjA3MDg7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgezEwLCAxMX07CiAgICAgRmlkb0hpZERldmljZUNv
bW1hbmQgY21kID0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtXaW5rOwotICAgIGF1dG8gaW5pdFBh
Y2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY21k
LCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGluaXRQYWNr
ZXQgPSBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgVmVjdG9y
PHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CiAgICAgc2l6ZV90IGluZGV4ID0gMDsKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBzZXJpYWxpemVkID0gaW5pdFBhY2tldC0+Z2V0U2VyaWFsaXpl
ZERhdGEoKTsKQEAgLTk0LDcgKzk0LDcgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQ
YWNrZXRDb25zdHJ1Y3RvcnMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgezEwLCAxMX07CiAg
ICAgRmlkb0hpZERldmljZUNvbW1hbmQgY21kID0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtXaW5r
OwogICAgIHNpemVfdCBsZW5ndGggPSBkYXRhLnNpemUoKTsKLSAgICBhdXRvIG9yaWdQYWNrZXQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgV1RG
TW92ZShkYXRhKSwgbGVuZ3RoKTsKKyAgICBhdXRvIG9yaWdQYWNrZXQgPSBtYWtlVW5pcXVlPEZp
ZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgV1RGTW92ZShkYXRhKSwgbGVuZ3RoKTsK
IAogICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihvcmlnUGFj
a2V0LT5wYXlsb2FkTGVuZ3RoKCkpOwogICAgIFZlY3Rvcjx1aW50OF90PiBvcmlnRGF0YSA9IG9y
aWdQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCAxZWQxMzI4ZjgxMzA5ZTEyZTEz
NzFjYjNhZGZlNmIwYTk3ODNlZWI2Li4yMjgzODNhMGYzMGE5YjEzOWY2YWFmNDNmOTVjZWRkODA5
MTY2ZTZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmls
ZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxl
TW9uaXRvci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBE
ZXRlY3RDaGFuZ2UpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJU
ZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8
RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmls
ZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtl
VW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwg
W10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2Fz
ZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTE5MCw3ICsx
OTAsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RNdWx0aXBsZUNoYW5nZXMpCiAK
ICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUi
KTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRl
bXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVD
aGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25p
dG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9y
OjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTI1MCw3ICsyNTAsNyBAQCBURVNUX0Yo
RmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGlvbikKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0g
V29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9y
ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1
ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAg
IGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0
ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUp
IHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAo
dHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZp
Y2F0aW9uOgpAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dENoYW5nZUFuZFRoZW5EZWxldGUpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6
Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigp
LCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0
b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNv
cHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246
CkBAIC0zNDYsNyArMzQ2LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRl
QnV0Tm90U3Vic2VxdWVudENoYW5nZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVl
OjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25pdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVm
KCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIGF1dG8gbW9u
aXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUu
Y29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKICAgICAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewog
ICAgICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlv
bjoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nv
b2tpZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2ll
cy5jcHAKaW5kZXggOTJkOGExOTJjYTdiMmExMDgxNTY1OTk3YjBlYTViMWY5YWVhOGY2NS4uMjE5
ZTk2NmRiZWJhYTg0ZDM2MDI3MjJlOTU5ZTMyZjY0ZmI0ZGIyZSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTQ0LDcgKzQ0
LDcgQEAgY2xhc3MgQ3VybENvb2tpZXM6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICB7CiAg
ICAgICAgIG1fY29va2llRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KCk7CiAKLSAgICAgICAgbV9jb29raWVKYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OkNvb2tpZUphckRCPihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9j
b29raWVEaXJlY3RvcnksICJjb29raWVkYi5zcWwiKSk7CisgICAgICAgIG1fY29va2llSmFyID0g
bWFrZVVuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOwogICAgICAg
ICBtX2Nvb2tpZUphci0+b3BlbigpOwogICAgICAgICBtX2Nvb2tpZUphci0+c2V0QWNjZXB0UG9s
aWN5KENvb2tpZUFjY2VwdFBvbGljeTo6QWx3YXlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0
ZVBhZ2UuY3BwCmluZGV4IDVjMGFlMzMxMzI4YjM2YjBiYTcwYTE4ZDk5MzY2OTQxMmFjYTI5YTku
LmIzYjNiYzNjZjQ5ZDc4NTQzMDU4NDlkZGExMjEyZjE5MzJhMGQyMGYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2Uu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhp
bkNyZWF0ZVBhZ2UuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRl
TmV3UGFnZShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3QsIFdLRGlj
CiB7CiAgICAgRVhQRUNUX1RSVUUob3BlbmVkV2ViVmlldyA9PSBudWxscHRyKTsKIAotICAgIG9w
ZW5lZFdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7Cisg
ICAgb3BlbmVkV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKIAog
ICAgIFdLUGFnZVVJQ2xpZW50VjUgdWlDbGllbnQ7CiAgICAgbWVtc2V0KCZ1aUNsaWVudCwgMCwg
c2l6ZW9mKHVpQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKaW5kZXggYTRmYmExMjdjNmU0ZDAzZTYzZDlhODE3MmEz
OWIzY2I4YjE0NzJjNy4uN2JjMzUyNGYyYmRiOWRiZDdhNDM1YTNjYzZhZDM4MzJlOTQ0ZWRkNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNT
UEkuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRz
U1BJLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFn
ZShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3QsIFdLRGljCiB7CiAg
ICAgRVhQRUNUX1RSVUUob3BlbmVkV2ViVmlldyA9PSBudWxscHRyKTsKIAotICAgIG9wZW5lZFdl
YlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CisgICAgb3Bl
bmVkV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdlKTsKIAogICAgIFdL
UGFnZVVJQ2xpZW50VjUgdWlDbGllbnQ7CiAgICAgbWVtc2V0KCZ1aUNsaWVudCwgMCwgc2l6ZW9m
KHVpQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcAppbmRleCAw
ZjdmZDQwYTYzZTVlY2Y3OGM5NjhkZjgwMzhkMTkyMjFlZGJmN2Q1Li5jZDE5ZDdjZGU1ODg5NjI1
ZjEyMjEyZmM3NTNjZmQ1NWUyNzhkOTIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRp
dGluZy5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgc3RydWN0IFdlYktpdDJUZXh0RmllbGRCZWdpbkFu
ZEVkaXRFZGl0aW5nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRl
eHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlRleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZ0V2
ZW50c1Rlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0
KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
V2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJDbGll
bnQod2ViVmlldy0+cGFnZSgpLCB0aGlzKTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVz
c2FnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVzc2FnZS5j
cHAKaW5kZXggYzdiMDI1MWJmY2YyMWFhNGFiZDExNGM4NTUwNzkyNDFkNjYxNzRlOS4uOWRjM2E2
ZGE5OTUwOWMyNzExMjFkNGMzYTQ1MzA4NGZlZTk4OWJkNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcApAQCAtOTMsNyArOTMsNyBAQCBj
bGFzcyBXZWJLaXQyVXNlck1lc3NhZ2VSb3VuZFRyaXBUZXN0IDogcHVibGljIDo6dGVzdGluZzo6
VGVzdCB7CiAgICAgICAgIGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJ
bmplY3RlZEJ1bmRsZVRlc3QoIlVzZXJNZXNzYWdlVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0
ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsK
ICAgICAgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LT5wYWdlKCksIHRoaXMpOwogCiAg
ICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L1dpbGxMb2FkLmNwcAppbmRleCBlZDlmMGZmYzcwMjVhYjEyY2I1Mzk2N2Y3MjA1
ZmY5NmM4OWJlNjk5Li41MmYxOGRjZWI0MmQ1MWFjMDgzOTViNjIwMDFkNGE5NTQwZjc0NTJkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCkBAIC03
Miw3ICs3Miw3IEBAIGNsYXNzIFdlYktpdDJXaWxsTG9hZFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5n
OjpUZXN0IHsKICAgICAgICAgY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZv
ckluamVjdGVkQnVuZGxlVGVzdCgiV2lsbExvYWRUZXN0IikpOwogICAgICAgICBzZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3ZWJWaWV3ID0g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOworICAgICAg
ICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlID0gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNl
SW5CdW5kbGVfQnVuZGxlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFj
L0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCmluZGV4IGFlYmExYzM0OGZi
YzY2YTE3MGU1MzllMGE3Mjg2YWVlOTE1M2U2MDQuLjg5OTUzZDliY2JlNTNiOWVjYmE1ZWUyY2I5
YzEzMTk4ODQ2Zjk2YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1
bmRsZV9CdW5kbGUubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5k
bGVGcmFtZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVBhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5o
PgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKQEAgLTcwLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHko
c2NyaXB0Q29udGV4dCwgcmVzdWx0LCBudWxscHRyKSk7CiAKICAgICAgICAgYXV0byBidWZmZXJT
aXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHJlc3VsdFN0cmluZy5nZXQo
KSk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZl
clNpemUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihidWZm
ZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhyZXN1bHRTdHJpbmcuZ2V0
KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAKICAgICAgICAgV0tCdW5kbGVQYWdlU2V0
VXNlRGFya0FwcGVhcmFuY2UobV9wYWdlLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKaW5k
ZXggNDBjYTM0ODAwY2M0OTcwMjRlYTg1ZWY4OTAyNGU3Nzg0YTExOTA4Yy4uN2M4YzhiNTIxNTRh
YzRlYjA5OGU2OTUxNzkwNjlhMDVlYmRjNjZhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAKQEAg
LTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBz
ZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogewogICAgIGlmIChtZXNz
YWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfQ09OTkVDVCkgewogICAgICAgICBnX2Fzc2VydF9j
bXB1aW50KHNvdXBfc2VydmVyX2dldF9wb3J0KHNlcnZlciksID09LCBnUHJveHlTZXJ2ZXJQb3J0
KTsKLSAgICAgICAgYXV0byB0dW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFR1bm5lbD4oc2VydmVy
LCBtZXNzYWdlKTsKKyAgICAgICAgYXV0byB0dW5uZWwgPSBtYWtlVW5pcXVlPFR1bm5lbD4oc2Vy
dmVyLCBtZXNzYWdlKTsKICAgICAgICAgYXV0byogdHVubmVsUHRyID0gdHVubmVsLmdldCgpOwog
ICAgICAgICB0dW5uZWxQdHItPmNvbm5lY3QoW3R1bm5lbCA9IFdURk1vdmUodHVubmVsKV0oY29u
c3QgY2hhciogZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7
CkBAIC0zOTUsNyArMzk1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlv
blByb3h5KFByb3h5QXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3QKIAogc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRUUFMoUHJveHlBdXRoZW50aWNhdGlv
blRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgYXV0byBodHRwc1NlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVy
SFRUUFMpOworICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdFRlc3RTZXJ2
ZXI+KFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFBTKTsKICAgICBodHRwc1NlcnZlci0+cnVu
KHNlcnZlckNhbGxiYWNrKTsKIAogICAgIHRlc3QtPmxvYWRVUkkoaHR0cHNTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9wcm94eS9hdXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3Bw
CmluZGV4IDEyNTYyNDE5NmE3MWM2ZDNhZDViY2RkMjlmMTQyYjg2YWJiOWZkMTEuLmU0MDAwNzYz
M2YyMzYyNDA1MjlkZjU0YWU4NjMyMDg3YmQzNjk1MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCkBAIC0z
MCw3ICszMCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBjbGlja2VkQ2FsbGJhY2soV2ViS2l0RE9NRE9N
V2luZG93KiwgV2ViS2l0RE9NRXZlbnQqLCBXZWJLaXRET01ECiAKIGNsYXNzIFdlYktpdERPTURP
TVdpbmRvd1Rlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIG1ha2VVbmlxdWU8
V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQogCiBwcml2YXRlOgogICAgIGd1aW50NjQgd2Vi
UGFnZUZyb21BcmdzKEdWYXJpYW50KiBhcmdzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDhkMmVlOGFkMTZjYWQ2Nzk1
NjhlZDliNmQ3NWNlY2Q4MjE1MGZlZGIuLjNmODA0YWRkYTI0OWEwNmFhODBlODdhYjYxODRjNDU3
ZDc0NjA5ODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1V
dGlsaXRpZXNDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3Jt
VXRpbGl0aWVzQ29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFjZSBVdGls
IHsKQEAgLTM4LDcgKzM5LDcgQEAgc3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJpbmcgKnN0cmluZykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CiAKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9
IFtzdHJpbmcgbGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
OwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUp
OworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNpemUpOwog
ICAgIE5TVUludGVnZXIgc3RyaW5nTGVuZ3RoOwogICAgIFtzdHJpbmcgZ2V0Qnl0ZXM6YnVmZmVy
LmdldCgpIG1heExlbmd0aDpidWZmZXJTaXplIHVzZWRMZW5ndGg6JnN0cmluZ0xlbmd0aCBlbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwg
W3N0cmluZyBsZW5ndGhdKSByZW1haW5pbmdSYW5nZTowXTsKICAgICByZXR1cm4gc3RkOjpzdHJp
bmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDU0NmNhNmUyMjJkOWZlYTgxY2U3YmU0ZTJjMmQzOTg1
YzViNDRmMGYuLjI0NzU3Mjg5OGI2YTg3OWM3YTM2YjRmYzY1YjkxNTMzMDQ3MGZmZDAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTI5NCw3ICsyOTQs
NyBAQCBzdGF0aWMgdm9pZCBhcHBseVdvcmthcm91bmRUb0FsbG93V3JpdGluZ0F0dHJpYnV0ZWRT
dHJpbmdzVG9JdGVtUHJvdmlkZXJzKCkKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsYXNz
TWV0aG9kU3dpenpsZXI+IHN3aXp6bGVyOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25j
ZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgc3dpenps
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0
cmluZy5jbGFzcywgQHNlbGVjdG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3Zp
ZGVyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRl
bVByb3ZpZGVyV2l0aG91dFB1YmxpY1JURkQpKTsKKyAgICAgICAgc3dpenpsZXIgPSBtYWtlVW5p
cXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5TQXR0cmlidXRlZFN0cmluZy5jbGFzcywgQHNlbGVj
dG9yKHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyKSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KHdyaXRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyV2l0aG91dFB1
YmxpY1JURkQpKTsKICAgICB9KTsKIH0KIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgY29uZmlndXJhdGlvbjooV0tXZWJWaWV3
Q29uZmlndXJhdGlvCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3b3JrYXJvdW5kIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NTIwND4g
aXMgZml4ZWQuCi0gICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3Rvcihz
aGFyZWRDYWxsb3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0
QmFyKSk7CisgICAgX3NoYXJlZENhbGxvdXRCYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NN
ZXRob2RTd2l6emxlcj4oW1VJQ2FsbG91dEJhciBjbGFzc10sIEBzZWxlY3RvcihzaGFyZWRDYWxs
b3V0QmFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN1cHByZXNzVUlDYWxsb3V0QmFyKSk7CiAg
ICAgX2lucHV0U2Vzc2lvbkNoYW5nZUNvdW50ID0gMDsKICAgICBhcHBseVdvcmthcm91bmRUb0Fs
bG93V3JpdGluZ0F0dHJpYnV0ZWRTdHJpbmdzVG9JdGVtUHJvdmlkZXJzKCk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQppbmRleCA4NjI2MzU0NDMz
NWE3ZjVkOTcxYjVkYzBkMjU5ZTU1ZGMwZDczYzY2Li40YmRlNmM1MTAwZDJiZDZmZTRiYjkwZmFj
YmUyNWQzMzlhNTA1NGJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0
Rm9udE9wdGlvbnMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRp
b25zLm1tCkBAIC04NCw3ICs4NCw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZvbnRPcHRp
b25zOihOU0ZvbnRPcHRpb25zICopZm9udE9wdGlvbnMKIAogICAgIF9zaGFkb3dPZmZzZXQgPSBD
R1NpemVaZXJvOwogICAgIF9zaGFkb3dCbHVyUmFkaXVzID0gMDsKLSAgICBfcmVwbGFjZUZvbnRP
cHRpb25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KE5T
Q2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0aW9ucyIpLCBAc2VsZWN0b3Ioc2hhcmVkRm9udE9w
dGlvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc2hhcmVkRm9udE9wdGlvbnNGb3JUZXN0aW5n
KSk7CisgICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01l
dGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSwgQHNlbGVj
dG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNoYXJlZEZvbnRP
cHRpb25zRm9yVGVzdGluZykpOwogICAgIF9oYXNQZW5kaW5nU2hhZG93Q2hhbmdlcyA9IE5POwog
ICAgIF9oYXNNdWx0aXBsZUZvbnRzID0gTk87CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
Y3BwCmluZGV4IGQ0NjE3MTQzZWVkMWRhOGE4MmNiNGUwYjAwOWY2ZGU0ZGUwMTM3OTYuLmM5YTUy
YzE1Zjc3MDgzMDY4M2M4ZWZmNjg5NDI5YmQwYmMxZjU2NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdD
b250cm9sbGVyLmNwcApAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgRXZlbnRTZW5kaW5nQ29udHJv
bGxlcjo6Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxs
CiAgICAgCiAgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgZnVuY3Rpb25DYWxsYmFja09iamVj
dCk7CiAKLSAgICBhdXRvIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2Fs
bGJhY2tPYmplY3QpOworICAgIGF1dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YSA9IG1h
a2VVbmlxdWU8U2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YT4oY29udGV4dCwgZnVuY3Rpb25D
YWxsYmFja09iamVjdCk7CiAgICAgYXV0byBzY3JvbGxDb21wbGV0aW9uQ2FsbGJhY2tEYXRhUHRy
ID0gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YS5yZWxlYXNlKCk7CiAgICAgYm9vbCBjYWxs
YmFja1dpbGxCZUNhbGxlZCA9IFdLQnVuZGxlUGFnZVJlZ2lzdGVyU2Nyb2xsT3BlcmF0aW9uQ29t
cGxldGlvbkNhbGxiYWNrKHBhZ2UsIGV4ZWN1dGVDYWxsYmFjaywgc2Nyb2xsQ29tcGxldGlvbkNh
bGxiYWNrRGF0YVB0cik7CiAgICAgaWYgKCFjYWxsYmFja1dpbGxCZUNhbGxlZCkgewpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAppbmRleCA3MTE2Y2M5ODE1NjY5ZDk0OTRkYmY4ZGU0OGJhZWVjZDYzNzRjMzc2Li44
M2IyYjMwYjEzMzJlYzc3YmZlZmNjMjlmZGQxYTJlNDgzY2I1ZjIzIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVSZWYgaW5pdGlhbGl6YXRpb25Vc2VyCiB2b2lkIEluamVj
dGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogewogICAgIGJv
b2wgaXNNYWluUGFnZSA9IG1fcGFnZXMuaXNFbXB0eSgpOwotICAgIG1fcGFnZXMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8SW5qZWN0ZWRCdW5kbGVQYWdlPihwYWdlKSk7CisgICAgbV9wYWdlcy5h
cHBlbmQobWFrZVVuaXF1ZTxJbmplY3RlZEJ1bmRsZVBhZ2U+KHBhZ2UpKTsKIAogICAgIHNldFVw
SW5qZWN0ZWRCdW5kbGVDbGllbnRzKHBhZ2UpOwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA1Mjc1NjZkYzNmODRh
N2RiNDIyMzM0N2ZkNjFjM2IyNTM4NmU0ZjczLi4xM2U2NTMxMDZiNDEwYjg5NjU3MWNkMTAwMGVi
ZTYyMzkxY2E0MjVhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgpAQCAtMjM5OCw3ICsy
Mzk5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmIGZp
bGVzVmFsdWUpCiAKICAgICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29w
eShjb250ZXh0LCBmaWxlVmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZm
ZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsg
MTsKLSAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZp
bGVCdWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5
PGNoYXI+KGZpbGVCdWZmZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhm
aWxlLmdldCgpLCBmaWxlQnVmZmVyLmdldCgpLCBmaWxlQnVmZmVyU2l6ZSk7CiAKICAgICAgICAg
V0tBcnJheUFwcGVuZEl0ZW0oZmlsZVVSTHMuZ2V0KCksIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRo
QmFzZVVSTChtX3Rlc3RVUkwuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCkpKS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDBlNWMwN2NhNzI5
YjZkZmNiMzhjODA0MjZkMzkyNDRlMzJjMDAxN2MuLmQzNTYzYTIxNjA5MTM3MDllYWE4MDY1MDYy
M2ZjZmZkODNhNjI4ZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlRnJhbWUu
aD4KICNpbmNsdWRlIDxhdGsvYXRrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTczMCw3ICs3MzEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0VG9K
U09iamVjdEFycmF5KGNvbnN0IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbQogICAg
IEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0
KG1haW5GcmFtZSk7CiAKICAgICBzaXplX3QgZWxlbWVudENvdW50ID0gY2hpbGRyZW4uc2l6ZSgp
OwotICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNWYWx1ZVJlZltd
PihlbGVtZW50Q291bnQpOworICAgIGF1dG8gdmFsdWVFbGVtZW50cyA9IG1ha2VVbmlxdWVBcnJh
eTxKU1ZhbHVlUmVmPihlbGVtZW50Q291bnQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZWxlbWVudENvdW50OyBpKyspCiAgICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBKU09iamVjdE1h
a2UoY29udGV4dCwgY2hpbGRyZW5baV0tPndyYXBwZXJDbGFzcygpLCBjaGlsZHJlbltpXS5nZXQo
KSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25z
LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCmluZGV4IGRhZjE0
Y2E3MDU0ODZiZmMyMDY0MzEyM2RlNTA5MWI3OWU1ZDAxMzEuLmNlZjE2ZjZiOTljNGEwZTE4YzE2
ZjkzY2QyODViMmQ5N2NlODkxZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
U3RyaW5nRnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5j
dGlvbnMuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcz
LDcgKzc0LDcgQEAgaW5saW5lIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0b0pTKGNvbnN0IFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1RE
KFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5n
R2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFr
ZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5ndGgg
PSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXpl
KTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAx
KTsKIH0KQEAgLTg2LDcgKzg3LDcgQEAgaW5saW5lIHN0ZDo6c3RyaW5nIHRvU1REKGNvbnN0IFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiYgc3RyaW5nKQogaW5saW5lIFdURjo6U3RyaW5nIHRvV1RG
U3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdL
U3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVy
ID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdM
ZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KHN0cmluZywgYnVmZmVyLmdl
dCgpLCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gV1RGOjpTdHJpbmc6OmZyb21VVEY4V2l0aExh
dGluMUZhbGxiYWNrKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGVhOGFmYjVmNGVmODRlNGEy
ZGRmMjg2NGExYWU5Zjc3NWZjZTM3NDcuLmQ2OTRlMTZkNzJmMTVjMzBlN2EzY2JmODU1Y2U1OTkz
Yzc4MDhjMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBA
IC04Miw2ICs4Miw3IEBACiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYv
U2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIApAQCAtNDc5LDcgKzQ4MCw3IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3Zb
XSkKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3VwSWRlbnRpZmllciA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdFRlc3RSdW5uZXJQYWdl
R3JvdXAiKSk7CiAgICAgbV9wYWdlR3JvdXAuYWRvcHQoV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRl
bnRpZmllcihwYWdlR3JvdXBJZGVudGlmaWVyLmdldCgpKSk7CiAKLSAgICBtX2V2ZW50U2VuZGVy
UHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOworICAgIG1f
ZXZlbnRTZW5kZXJQcm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5kZXJQcm94eT4odGhpcyk7CiB9
CiAKIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IFRlc3RDb250cm9sbGVy
OjpnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zOjpDb250ZXh0
T3B0aW9ucyYgb3B0aW9ucykgY29uc3QKQEAgLTUyMSw3ICs1MjIsNyBAQCBXS1JldGFpblB0cjxX
S1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmln
dXJhdGlvbihjbwogICAgICAgICBtX2NvbnRleHQgPSBwbGF0Zm9ybUFkanVzdENvbnRleHQoYWRv
cHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb250ZXh0Q29uZmlndXJhdGlv
bi5nZXQoKSkpLmdldCgpLCBjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSk7CiAgICAgICAgIG1f
Y29udGV4dE9wdGlvbnMgPSBvcHRpb25zLmNvbnRleHRPcHRpb25zOwogCi0gICAgICAgIG1fZ2Vv
bG9jYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1v
Y2s+KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IG1h
a2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CiAKICAg
ICAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxpYnJhcnlQYXRoRm9y
VGVzdGluZygpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5n
Ojpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwpAQCAtOTU0LDcgKzk1NSw3IEBAIGJvb2wg
VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9w
dGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFs
c28gZW5zdXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVz
ZXQgdGhlIEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCi0gICAgbV9ldmVudFNlbmRlclByb3h5
ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50
U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogCiAgICAg
Ly8gRklYTUU6IElzIHRoaXMgbmVlZGVkPyBOb3RoaW5nIGluIFRlc3RDb250cm9sbGVyIGNoYW5n
ZXMgcHJlZmVyZW5jZXMgZHVyaW5nIHRlc3RzLCBhbmQgaWYgdGhlcmUgaXMKICAgICAvLyBzb21l
IG90aGVyIGNvZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5IGJlIHJlc3BvbnNpYmxl
IGZvciBjbGVhbnVwIHRvby4KQEAgLTEyMzUsMTMgKzEyMzYsMTMgQEAgc3RhdGljIFdLVVJMUmVm
IGNyZWF0ZVRlc3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogICAgIGNvbnN0IGNoYXIqIGZp
bGVQcmVmaXggPSAiZmlsZTovLyI7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVmaXhMZW5n
dGggPSBzdHJsZW4oZmlsZVByZWZpeCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBi
dWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gYnVmZmVyOwogICAgIGlmIChpc0Fic29sdXRl
UGF0aCkgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4
TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxj
aGFyPihwcmVmaXhMZW5ndGggKyBsZW5ndGggKyAxKTsKICAgICAgICAgc3RyY3B5KGJ1ZmZlci5n
ZXQoKSwgZmlsZVByZWZpeCk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCkgKyBwcmVmaXhM
ZW5ndGgsIHBhdGhPclVSTCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIFBBVEhfTUFYICsgbGVuZ3RoICsgMik7
IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCisgICAgICAgIGJ1ZmZlciA9IG1ha2VVbmlxdWVB
cnJheTxjaGFyPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZv
ciB0aGUgcGF0aFNlcGFyYXRvcgogICAgICAgICBzdHJjcHkoYnVmZmVyLmdldCgpLCBmaWxlUHJl
Zml4KTsKICAgICAgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBQ
QVRIX01BWCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTE2NTEsNyArMTY1Miw3IEBAIGJv
b2wgVGVzdENvbnRyb2xsZXI6OnJ1blRlc3QoY29uc3QgY2hhciogaW5wdXRMaW5lKQogICAgIFRl
c3RPcHRpb25zIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QoY29tbWFuZCk7CiAKICAgICBX
S1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwgPSBhZG9wdFdLKGNyZWF0ZVRlc3RVUkwoY29tbWFu
ZC5wYXRoT3JVUkwuY19zdHIoKSkpOwotICAgIG1fY3VycmVudEludm9jYXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9j
dXJyZW50SW52b2NhdGlvbiA9IG1ha2VVbmlxdWU8VGVzdEludm9jYXRpb24+KHdrVVJMLmdldCgp
LCBvcHRpb25zKTsKIAogICAgIGlmIChjb21tYW5kLnNob3VsZER1bXBQaXhlbHMgfHwgbV9zaG91
bGREdW1wUGl4ZWxzRm9yQWxsVGVzdHMpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPnNl
dElzUGl4ZWxUZXN0KGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwpAQCAtMjk2Myw3ICsyOTY0
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChjb25zdCBUZXN0
SW52b2NhdGlvbiYpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmll
dyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb25zKQogewotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtV2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CisgICAgbV9tYWluV2ViVmlldyA9
IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKIH0K
IAogUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBh
Z2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBhNWFlYTIxYzA5MDAwNTllNzlmYTdkMTJi
ZmExNWZkODE5ZDE2YjZhLi5mODFmMGI5NDY5NTc2ZDM2MTAyNmQzNTZlZmM0ODFiYTlmNzk5ZjBk
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTY5MCw3
ICsxNjkwLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KFdLU3RyaW5n
UmVmIHNjcmlwdCwgdW5zaWduZWQgc2NyaXB0Q2FsbGJhY2sKICAgICBtX3BlbmRpbmdVSVNjcmlw
dEludm9jYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQp
Ci0gICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxVSVNjcmlwdENv
bnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBtYWtlVW5pcXVlPFVJ
U2NyaXB0Q29udGV4dD4oKnRoaXMpOwogICAgIAogICAgIG1fVUlTY3JpcHRDb250ZXh0LT5ydW5V
SVNjcmlwdCh0b1dURlN0cmluZyhzY3JpcHQpLCBzY3JpcHRDYWxsYmFja0lEKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpp
bmRleCAwZmJmOGVhNTIzZDM0OGQyNTZlY2M1MjMwNDJkZWEwMmZlY2RkMWRjLi4wZWJmN2JmZDAw
MzlmNGVmODA5MzJjMWViNTE5MmZmNTRlZTNjNGEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0xNjgsNyArMTY4LDcg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKICAgICAgICAgW2NvcGllZENvbmZpZ3VyYXRpb24g
X3NldEFwcGxpY2F0aW9uTWFuaWZlc3Q6W19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRp
b25NYW5pZmVzdEZyb21KU09OOnRleHQgbWFuaWZlc3RVUkw6bmlsIGRvY3VtZW50VVJMOm5pbF1d
OwogICAgIH0KIAotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
V2ViVmlldz4oY29waWVkQ29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7CisgICAgbV9tYWlu
V2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRDb25maWd1cmF0aW9u
LmdldCgpLCBvcHRpb25zKTsKICAgICBmaW5pc2hDcmVhdGluZ1BsYXRmb3JtV2ViVmlldyhtX21h
aW5XZWJWaWV3LmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChvcHRpb25zLnB1bmNoT3V0V2hp
dGVCYWNrZ3JvdW5kc0luRGFya01vZGUpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZShOU1N0cmluZyAqaWRlbnRpZmllcikKIHsK
ICAgICBtX292ZXJyaWRkZW5DYWxlbmRhcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGlm
ICghbV9jYWxlbmRhclN3aXp6bGVyKQotICAgICAgICBtX2NhbGVuZGFyU3dpenpsZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0NhbGVuZGFyIGNsYXNzXSwgQHNl
bGVjdG9yKGN1cnJlbnRDYWxlbmRhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZENh
bGVuZGFyKSk7CisgICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NN
ZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3IoY3VycmVudENhbGVu
ZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIpKTsKIH0KIAogdm9p
ZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRDb250ZW50RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCmluZGV4IGRlNTc4
ZjczZmMzNmVjZDE1ODljOTlmOGRiZjhmY2NjMzk4N2I0MmUuLmIxN2VjYThmZjhkMjIxMTM1ZTJk
NmI2MWM2MzVhNDE1MGJkM2EzYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Z3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Z3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8
Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtMjcxLDcgKzI3Miw3IEBAIGludCBnZXRHREtLZXlTeW1Gb3JLZXlSZWYoV0tTdHJpbmdSZWYg
a2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3VpbnQqIG1vZGlmaWVyCiAgICAgICAgIHJldHVy
biBHREtfS0VZX0YxMjsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhp
bXVtVVRGOENTdHJpbmdTaXplKGtleVJlZik7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVl
QXJyYXk8Y2hhcj4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhrZXlS
ZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFyQ29kZSA9IGJ1ZmZl
ci5nZXQoKVswXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVz
dENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJv
bGxlcklPUy5tbQppbmRleCA2YTYxZGY4ZTM1ZDZmYTA4YzhiMTRjNTFhODIzYzYyZDA4MDVkNGQy
Li5mM2M0MTdjN2ZiN2NhYTRkZTQ3NzdjN2E0OTRmNTNhZjMyYTE4YmZkIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpAQCAtMTUxLDggKzE1
MSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0CiAKICAgICBtX3ByZXNlbnRQb3BvdmVyU3dp
enpsZXJzLmNsZWFyKCk7CiAgICAgaWYgKCFvcHRpb25zLnNob3VsZFByZXNlbnRQb3BvdmVycykg
ewotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNl
bGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3Zlcikp
KTsKLSAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJvbGxlciBjbGFzc10s
IEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJvd0Rp
cmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2Vu
dFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dp
enpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdD
b250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRl
ZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3
Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKKyAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVy
cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29u
dHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpw
ZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwogICAgIH0KICAgICAK
ICAgICBCT09MIHNob3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRlciA9IE5POwpAQCAtMjY5LDkgKzI2
OSw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEtleWJvYXJkSW5wdXRNb2RlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICAgICBhdXRvIGNvbnRyb2xsZXJDbGFzcyA9
IFVJS2V5Ym9hcmRJbnB1dE1vZGVDb250cm9sbGVyLmNsYXNzOwogICAgIG1faW5wdXRNb2RlU3dp
enpsZXJzLnJlc2VydmVDYXBhY2l0eSgzKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250
cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOwotICAgIG1faW5wdXRNb2RlU3dpenps
ZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenps
ZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVu
Y2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7Ci0g
ICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZl
SW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2Rl
cykpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1
ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJy
ZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRN
b2RlKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5p
cXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1
cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenps
ZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2Vk
QXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNz
LCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6
emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKICAgICBbVUlLZXlib2FyZEltcGwuc2hhcmVkSW5zdGFu
Y2UgcHJlcGFyZUtleWJvYXJkSW5wdXRNb2RlRnJvbVByZWZlcmVuY2VzOm5pbF07CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCmluZGV4IGQx
Y2ZjNmEzMzIxZTAyOWM4YmE4MTE1ZjRhNmQ5MjA3ZjhlNzE4NGYuLjg5Y2U0ZWYxMjZjMTVkOTJk
Y2Y3NjY1MGNlNmVlZjViODkyMzE3MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvRXZlbnRTZW5kZXJQcm94eS5tbQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgRXZlbnRTZW5k
ZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVy
cyBtb2RpZmllCiAKICAgICBOU1ZpZXcgKnRhcmdldFZpZXcgPSBbbV90ZXN0Q29udHJvbGxlci0+
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQgbG9jYXRpb25Jbldp
bmRvd11dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenps
ZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAg
ICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8
Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1v
dXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1v
dXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAg
ICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRG93bjpldmVudF07CiAgICAgICAgIFtOU0FwcCBfc2V0
Q3VycmVudEV2ZW50Om5pbF07CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBFdmVudFNlbmRlclBy
b3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnMKICAgICAgICAgdGFyZ2V0VmlldyA9IG1fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3
KCktPnBsYXRmb3JtVmlldygpOwogCiAgICAgQVNTRVJUKHRhcmdldFZpZXcpOwotICAgIGF1dG8g
ZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNz
TWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1
dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1
dHRvbnMpKTsKKyAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gbWFr
ZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3Rvcihw
cmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQ
cmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRd
OwogICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6ZXZlbnRdOwogICAgIFtOU0FwcCBfc2V0Q3VycmVu
dEV2ZW50Om5pbF07CkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBFdmVudFNlbmRlclByb3h5Ojpt
b3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCiAgICAgLy8gQWx3YXlzIHRhcmdldCBkcmFn
cyBhdCB0aGUgV0tXZWJWaWV3IHRvIGFsbG93IGZvciBkcmFnLXNjcm9sbGluZyBvdXRzaWRlIHRo
ZSB2aWV3LgogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IGlzRHJhZyA/IG1fdGVzdENvbnRyb2xs
ZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIDogW21fdGVzdENvbnRyb2xsZXItPm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6d2luZG93TG9jYXRpb25dOwogICAg
IGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
U3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50
IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0
PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICAgICAgYXV0byBl
dmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RT
d2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykp
OwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAgICAgICAgIGlmIChp
c0RyYWcpCiAgICAgICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZURyYWdnZWQ6ZXZlbnRdOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcApp
bmRleCA0NjliZmFmMGU4Y2YyOTA3MzBiYWJmYTA3ODM2ZDg3N2VjNzBlOGY1Li4yNjAwYjY4M2Mw
NzVjOWMxMjA2OGU3YjJhZTE1MjM0YTgwODhkYzJmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogI2luY2x1ZGUgPHdwZS93cGUuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXku
aD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTI3OSw3ICsyODAsNyBAQCBzdGF0aWMgdWludDMy
X3Qgd3BlS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRp
b24sIHVpbnQzMgogICAgICAgICByZXR1cm4gV1BFX0tFWV9GMTI7CiAKICAgICBzaXplX3QgYnVm
ZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShrZXlSZWYpOwotICAg
IGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAg
IGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNpemUpOwogICAgIFdL
U3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwog
ICAgIGNoYXIgY2hhckNvZGUgPSBidWZmZXIuZ2V0KClbMF07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376486</attachid>
            <date>2019-08-16 02:10:09 -0700</date>
            <delta_ts>2019-08-18 22:52:00 -0700</delta_ts>
            <desc>B: makeUnique / makeUniqueWithoutFastMallocCheck</desc>
            <filename>bug-200620-20190816021008.patch</filename>
            <type>text/plain</type>
            <size>1552411</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OGRiMzg5ZGFmMTFiYjJiYjYyNzQyZTNmZDQ1ZTI1NmE3MjI0NTBhLi45NTgxZDU0NmJiNjA5ODg3
NGJiMzE4ZWEzNTk0NzdlMjE3ZjBlNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTEgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAg
ICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0RGF0YTo6c2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09i
amVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OkpTQ2FsbGJhY2tPYmplY3QpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmNwcDoKKyAgICAg
ICAgKE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKToK
KyAgICAgICAgKE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKToKKyAgICAgICAgKiBBUEkvSlNN
YXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBBZGRN
YXJraW5nQ29uc3RyYWludCk6CisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAg
ICAgKC1bSlNXcmFwcGVyTWFwIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAg
KiBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW06CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxl
Z2F0ZTo6dHlwZUludGVnZXIpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVE
b3VibGUpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVCb29sKToKKyAgICAg
ICAgKEFyZ3VtZW50VHlwZURlbGVnYXRlOjp0eXBlSWQpOgorICAgICAgICAoQXJndW1lbnRUeXBl
RGVsZWdhdGU6OnR5cGVPZkNsYXNzKToKKyAgICAgICAgKEFyZ3VtZW50VHlwZURlbGVnYXRlOjp0
eXBlU3RydWN0KToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUludGVnZXIpOgor
ICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlRG91YmxlKToKKyAgICAgICAgKFJlc3Vs
dFR5cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0
eXBlVm9pZCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAg
IChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVPZkNsYXNzKToKKyAgICAgICAgKFJlc3VsdFR5cGVE
ZWxlZ2F0ZTo6dHlwZUJsb2NrKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZVN0
cnVjdCk6CisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24pOgorICAg
ICAgICAqIEFQSS9nbGliL0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoanNjQ29udGV4dFNldFZp
cnR1YWxNYWNoaW5lKToKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcDoKKyAg
ICAgICAgKEpTQzo6V3JhcHBlck1hcDo6V3JhcHBlck1hcCk6CisgICAgICAgICogYXNzZW1ibGVy
L1Byb2JlU3RhY2suY3BwOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OmVuc3VyZVBhZ2VG
b3IpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvQjNQcm9j
ZWR1cmUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpQcm9jZWR1cmUpOgorICAg
ICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpkb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6
OlByb2NlZHVyZTo6bmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6
YmFja3dhcmRzQ0ZHKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YmFja3dhcmRzRG9t
aW5hdG9ycyk6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmFkZERhdGFTZWN0aW9uKToK
KyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNv
ZGU6OmNDYWxsU3BlY2lhbCk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAqIGIz
L2Fpci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKGNvbXBp
bGVQcm9jKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3ND
YXNlU25pcHBldFBhcmFtcy5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtJbmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUpJVERhdGFTbG93KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjplbnN1cmVDYXRjaExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVj
b2RlT2Zmc2V0U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9m
aWxlOjphZGQpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFj
ay5jcHA6CisgICAgICAgIChKU0M6OkRlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6ZW5zdXJl
RGVmZXJyZWRTb3VyY2VEdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgICog
Ynl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpDb21w
cmVzc2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCk6CisgICAgICAgICogYnl0
ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6UG9seVByb3RvQWNj
ZXNzQ2hhaW46OmNsb25lKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAg
ICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFy
aWFudC5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0pOgorICAg
ICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAgICAoSlNDOjpSZWNv
cmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1
c2VzOjphZGRQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6
YWRkSW5CeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0
dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRBZGRXYXRjaHBvaW50KToKKyAgICAgICAgKiBieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lz
U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdyk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OkFic3RyYWN0SW50ZXJwcmV0ZXIpOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OkdyYXBoKToKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bGl2ZW5lc3NGb3IpOgorICAgICAgICAoSlNDOjpERkc6
OkdyYXBoOjpraWxsc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNQU0NG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZW5zdXJl
QmFja3dhcmRzRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpKSVRDb21waWxlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29t
cGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkcmVzc09m
RG91YmxlQ29uc3RhbnQpOgorICAgICAgICAqIGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFu
Ojpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6Cisg
ICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6
c2xvd1BhdGhDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpzbG93UGF0aE1vdmUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJlQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAg
ICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNyZWF0ZU5l
d1RocmVhZCk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAg
ICAgIChKU0M6OmRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGZ0bC9GVExB
YnN0cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkluZGV4ZWRBYnN0cmFjdEhlYXA6
OmF0U2xvdyk6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExGYWlsLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpmYWlsKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmxhenlTbG93UGF0aCk6CisgICAgICAgICogZnRs
L0ZUTFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorICAgICAg
ICAqIGhlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHA6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vi
c3BhY2U6OmFsbG9jYXRvckZvclNsb3cpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90ZWN0ZWRPYmpl
Y3RUeXBlQ291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6b2JqZWN0VHlwZUNvdW50cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmFkZENvcmVDb25zdHJhaW50cyk6CisgICAgICAgICogaGVhcC9I
ZWFwSW5saW5lcy5oOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6OmJ1aWxkU25hcHNob3QpOgorICAgICAg
ICAqIGhlYXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OmFkZFNs
b3cpOgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpJc29T
dWJzcGFjZTo6SXNvU3Vic3BhY2UpOgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRT
ZXQuY3BwOgorICAgICAgICAoSlNDOjpNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVB
bmRMZXZlbCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNs
aWVudDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29u
c29sZUNsaWVudDo6d2FyblVuaW1wbGVtZW50ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcjo6cmVwb3J0QVBJRXhjZXB0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5z
dXJlRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5z
cGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9ySGVhcEFnZW50OjpJbnNwZWN0b3JIZWFwQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0
QWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRBZ2VudDo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUv
c29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9k
b21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1z
aXplcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZl
YXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlV2l0
aG91dExpbmtpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9K
SVRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OkpJVFRodW5rcyk6CisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWNDYWxs
KToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAocnVuSlNDKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6cHVzaExh
YmVsKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyQXJlbmE6OmlkZW50
aWZpZXJBcmVuYSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZv
cik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmdldFN0YWNr
VHJhY2UpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3cpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvblJh
cmVEYXRhOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxB
cnJheVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVSYXJlRGF0YUlmTmVlZGVk
KToKKyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVyVk1EYXRhKToKKyAgICAgICAg
KEpTQzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVyVk0pOgorICAgICAgICAqIHJ1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJs
ZTo6YWRkRGVsZXRlZE9mZnNldCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNw
cDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2Ny
aXB0RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmVuc3Vy
ZVRlbXBsYXRlT2JqZWN0TWFwSW1wbCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRj
aHBvaW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZTo6bG9jYWxUb0VudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2Nv
cGVQYXJ0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnByZXBhcmVGb3JUeXBlUHJvZmls
aW5nKToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnNldFJhcmVEYXRhQ29kZUJsb2NrKToK
KyAgICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVT
aGFwZTo6cHJvcGVydHlIYXNoKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OmVuc3VyZUhlYXBQcm9maWxlcik6Cisg
ICAgICAgIChKU0M6OlZNOjplbmFibGVUeXBlUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6
ZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgIChKU0M6OlZNOjpxdWV1ZU1pY3Jv
dGFzayk6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTaGFkb3dDaGlja2VuKToKKyAgICAgICAg
KiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklS
R2VuZXJhdG9yOjplbWl0UGF0Y2hwb2ludCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjplbWl0Q2hlY2spOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGVB
aXIpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpXYXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2Fz
bS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46OndvcmspOgor
ICAgICAgICAqIHdhc20vV2FzbVdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V29y
a2xpc3Q6OldvcmtsaXN0KToKKyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB5YXJyL1lh
cnJJbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6Y29t
cGlsZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6YXRvbVBhcmVudGhlc2Vz
U3VicGF0dGVybkVuZCk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6cmVnZXhC
ZWdpbik6CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6
WWFyckdlbmVyYXRvcjo6Y29tcGlsZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6
CisgICAgICAgIChKU0M6OllhcnI6OkNoYXJhY3RlckNsYXNzQ29uc3RydWN0b3I6OmNoYXJDbGFz
cyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OllhcnJQYXR0
ZXJuQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVj
dG9yOjpyZXNldEZvclJlcGFyc2luZyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJu
Q29uc3RydWN0b3I6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbik6CisgICAgICAgIChK
U0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpj
b3B5RGlzanVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjphbnljaGFyQ3JlYXRlKToKKyAg
ICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5E
aXNqdW5jdGlvbjo6YWRkTmV3QWx0ZXJuYXRpdmUpOgorICAgICAgICAqIHlhcnIvY3JlYXRlX3Jl
Z2V4X3RhYmxlczoKKyAgICAgICAgKiB5YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRh
Ymxlcy5weToKKwogMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMg
ZmFzdC1hbGxvY2F0ZWQsIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIGFubm90YXRpb24gcGFydApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCA3ZTJmMGIyOWQyYTYyMDk2M2IwN2MxOTQ0YjBkMDcwNjExYTBmNDYwLi5hMWRmZDAzOWQ5
ODFhYTI1NTJiMTRlN2NmYmJiMDY3NjJiOTVlMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE5
LTA4LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dU
Rl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZCwg
bWFrZVVuaXF1ZSAvIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrIHBhcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMg
c2Vjb25kIHBhcnQgb2YgYnVnIDIwMDYyMCBwYXRjaC4gSSBzcGxpdCBJIHNwbGl0IGl0IGludG8g
dGhyZWUgcGllY2VzIHRvIG1ha2Ugcm9sbC1vdXQgZWFzeS4KKyAgICAgICAgVGhpcyBwYXJ0LCB3
ZSBjb252ZXJ0IHN0ZDo6bWFrZV91bmlxdWUgdG8gV1RGOjptYWtlVW5pcXVlIG9yIFdURjo6bWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2suCisgICAgICAgIEluIHRoZSB0aGlyZCBwYXRj
aCwgd2Ugd2lsbCBhZGQgYSBzdGF0aWNfYXNzZXJ0IHRvIG1ha2VVbmlxdWUsIHdoaWNoIGVuc3Vy
ZXMgdGhlIGdpdmVuIGNsYXNzIFQgaXMgRmFzdE1hbGxvY2VkIG9yIElzb0hlYXBlZC4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFkZHMgYFdURjo6bWFrZVVuaXF1ZTxUPmAgYW5kIGBXVEY6Om1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFQ+YCBhcyBkcm9wLWluIHJlcGxhY2VtZW50IGZv
ciBgc3RkOjptYWtlX3VuaXF1ZTxUPmAuCisgICAgICAgIGBXVEY6Om1ha2VVbmlxdWU8VD5gIGhh
cyBvbmUgYWRkaXRpb25hbCBgc3RhdGljX2Fzc2VydGAgY2hlY2sgd2hpY2ggZW5zdXJlcyBgVGAg
RmFzdE1hbGxvYyAvIElzb0hlYXAgYW5ub3RhdGVkLiBJZiBpdCBpcyBub3QsIHRoZQorICAgICAg
ICBjb21waWxlIGVycm9yIGhhcHBlbnMuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgSSB0cmll
ZCB1c2luZyB0aGlzIGV2ZXJ5d2hlcmUgaW4gV2ViS2l0IGFzIG11Y2ggYXMgcG9zc2libGUuIEFu
ZCB3ZSBmb3VuZCB0aGF0IHN1cnByaXNpbmdseSBtYW55IGNsYXNzZXMgYXJlIG1pc3NpbmcKKyAg
ICAgICAgRmFzdE1hbGxvYyBhbm5vdGF0aW9uIGFuZCBhbGxvY2F0ZWQgZnJvbSBzeXN0ZW0tbWFs
bG9jLiBVc2luZyBXVEY6Om1ha2VVbmlxdWUgZW5mb3JjZXMgY2xhc3NlcyAvIHN0cnVjdHMgdG8g
dXNlIEZhc3RNYWxsb2MuCisKKyAgICAgICAgV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjayBpcyBvZmZlcmVkIGZvciB0aGUgY29ybmVyIGNhc2VzLiBUaGlzIGlzIGlkZW50aWNh
bCB0byBzdGQ6Om1ha2VfdW5pcXVlLiBXZSB1c2UgdGhpcyBmb3IgY2xhc3NlcworICAgICAgICB0
aGF0IGFyZSBvZmZlcmVkIGJ5IG5vbi1XZWJLaXQgY29kZSBiYXNlLCBsaWtlLCB6bGliLiBUaGlz
IGNsZWFyIG5hbWUgY2FuIG1ha2UgdXMgZWFzaWx5IGZpbmQgdGhpcyBhbGxvY2F0aW9uIGlzIGlu
dGVudGlvbmFsbHkgZG9uZQorICAgICAgICBieSBzeXN0ZW0tbWFsbG9jLgorCisgICAgICAgIFdl
IGRvIG5vdCB0YWtlIHRoZSBmb2xsb3dpbmcgZGlyZWN0aW9uLCBgV1RGOjptYWtlVW5pcXVlYCBh
dXRvbWF0aWNhbGx5IGFsbG9jYXRlcyBGYXN0TWFsbG9jIGV2ZW4gaWYgRmFzdE1hbGxvYyBhbm5v
dGF0aW9uIGlzIG5vdCBhdHRhY2hlZC4KKyAgICAgICAgU2luY2UgZGVmYXVsdCBkZWxldGVyIGlz
IHBlcmZvcm1pbmcgYGRlbGV0ZWAgYW5kIHRoaXMgaXMgbm90IHdoYXQgd2Ugd2FudCBmb3IgRmFz
dE1hbGxvY2VkIG9uZXMsIHdlIG5lZWQgdG8gcmV0dXJuCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxULCBGYXN0RnJlZURlbGV0ZXI+IGZvciBUIGlmIFQgZG9lcyBub3QgaGF2ZSBGYXN0TWFsbG9j
LWFubm90YXRpb24uIEF1dG9tYXRpY2FsbHkgZG9pbmcgdGhpcyBzb3VuZHMgYSBiaXQgZGFuZ2Vy
b3VzLgorCisgICAgICAgICAgICBhdXRvIHBvaW50ZXIgPSBXVEY6Om1ha2VVbmlxdWU8VD4oKTsK
KyAgICAgICAgICAgIC8vIFN1cGVyIGRhbmdlcm91cywgYnV0IHNvbWV0aW1lcyBpdCBpcyByZXF1
aXJlZC4uLgorICAgICAgICAgICAgYXV0byogcmF3UG9pbnRlciA9IHBvaW50ZXIucmVsZWFzZSgp
OworICAgICAgICAgICAgLy8gUGFzc2luZyByYXdQb2ludGVyIHRvIHNvbWV3aGVyZSwgYW5kCisg
ICAgICAgICAgICBkZWxldGUgcmF3UG9pbnRlcjsKKworICAgICAgICBUaGUgYWJvdmUgb25lIGJl
Y29tZXMgaW52YWxpZCBiZWNhdXNlIHBvaW50ZXIgbWF5IHN0YXJ0IHJlcXVpcmluZyBub24gYGRl
bGV0ZWAgZGVzdHJveWluZyBmdW5jdGlvbi4KKyAgICAgICAgSW4gdGhlIGFib3ZlIGNhc2UsIHRo
ZSBjb3JyZWN0IHdheSBiZWNvbWVzIHRoZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICAgIHJhd1Bv
aW50ZXItPn5UKCk7CisgICAgICAgICAgICBmYXN0RnJlZShyYXdQb2ludGVyKTsKKworICAgICAg
ICBUaGlzIGxvb2tzIG5vbi1pbnR1aXRpdmUuIEFuZCBoYXZpbmcgdHdvIHdheXMgdG8gZGVzdHJv
eWluZyBvYmplY3RzIChgZGVsZXRlYCBvciB0aGUgYWJvdmUgb25lKSBjYW4gYmUgZXJyb3ItcHJv
bmUuCisgICAgICAgIElmIHdlIGhhdmUgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQgZm9yIFQsIHdl
IGRvIG5vdCBuZWVkIHRvIGNhcmUgYWJvdXQgdGhpcy4gIm5ldyIgYW5kICJkZWxldGUiIG9wZXJh
dG9ycyBhcmUgZGVmaW5lZCwgYW5kIEMrKyB3YXkgd29ya3MuCisgICAgICAgIFRoZSBzaW1wbGUg
aW52YXJpYW50LCAibWFrZVVuaXF1ZSBqdXN0IGRvZXMgYG5ld2AgaW50ZXJuYWxseS4gQW5kIGBk
ZWxldGVgIG9wZXJhdG9yIGRvZXMgYGRlbGV0ZWAuIGRlZmF1bHQgZGVsZXRlciBpcyBqdXN0IGRv
aW5nIGBkZWxldGVgIiwgaXMga2VwdC4KKworICAgICAgICBXaGlsZSB3ZSBuZWVkIHRvIGFubm90
YXRlIG1hbnkgY2xhc3NlcyB3aXRoIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVELCBpdCBpcyBvbmUg
dGltZSBjb3N0IHdoZW4gd2UgYWRkIGEgY2xhc3MuCisgICAgICAgIEFuZCwgYnkgaW50cm9kdWNp
bmcgYFdURjo6bWFrZVVuaXF1ZTw+YCwgd2Ugbm8gbG9uZ2VyIGZvcmdldCBhZGRpbmcgdGhpcy4K
KworICAgICAgICAgICAgbWFrZVVuaXF1ZSguLi4pCisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0
KFQgaXMgRmFzdE1hbGxvY2VkIG9yIElzb0hlYXBlZCk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZV91bmlxdWU8VD4oLi4uKQorCisgICAgICAgICogYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0
LmNwcDoKKyAgICAgICAgKiBiZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwOgorICAgICAgICAq
IHd0Zi9Db25jdXJyZW50VmVjdG9yLmg6CisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFza0hh
bmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVu
TG9vcCk6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5jcHA6CisgICAgICAgIChXVEY6
OkZpbGVQcmludFN0cmVhbTo6b3Blbik6CisgICAgICAgICogd3RmL0Z1bmN0aW9uLmg6CisgICAg
ICAgIChXVEY6OkZ1bmN0aW9uPE91dCk6CisgICAgICAgICogd3RmL0hhc2hUYWJsZS5oOgorICAg
ICAgICAoV1RGOjpLZXlUcmFpdHM+OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwOgorICAgICAgICAoV1RGOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNldFNob3VsZFVzZVBlcmlvZGljTWVtb3J5TW9uaXRvcik6CisgICAgICAgICogd3RmL1N0ZExp
YkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAgKFdURjo6bWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2spOgorICAgICAgICAqIHd0Zi9TdHJlYW1CdWZm
ZXIuaDoKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHd0
Zi9VbmlxdWVSZWYuaDoKKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFs
bG9jQ2hlY2spOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmKToKKyAgICAgICAgKiB3dGYv
Z2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0
ZXIpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IpOgorCiAyMDE5
LTA4LTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbnRl
bnRDaGFuZ2VPYnNlcnZlcl0gS2VlcCB0cmFjayBvZiBhbGwgdGhlIHZpc2liaWxpdHkgY2FuZGlk
YXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBhNWVhMThkYWZhN2IxMTIzMTYxZWVkZWNkZTZkZjdhZTRhOWY0
MDZlLi40YmM2MmUzZTEwYjk2OTFiZjRmZGY0MzAxNzEzNjk0ZGFkYTk2YjM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYyOCBAQAorMjAxOS0wOC0xNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
KworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxp
Y2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dEZXZlbG9wZXJXYXJuaW5nKToK
KyAgICAgICAgKiBNb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmF2aWdhdG9yQmVhY29uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0RPTVdpbmRvd0NhY2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dDYWNoZXM6
OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvV29ya2VyR2xvYmFsU2NvcGVDYWNoZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20pOgor
ICAgICAgICAqIE1vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlh
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yQ3JlZGVudGlhbHM6OmZyb20pOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNl
bmMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OmNyZWF0ZSk6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6Y3JlYXRlU2Vzc2lv
bik6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNl
OjpmZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpz
dGFydCk6CisgICAgICAgICogTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yR2FtZXBhZDo6ZnJvbSk6CisgICAgICAgICogTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cHJvdmlkZUdlb2xvY2F0aW9uVG8pOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRp
b24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9y
R2VvbG9jYXRpb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dJbmRleGVk
RGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL1dv
cmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9w
ZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uOjpUcmFuc2FjdGlvbk9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QlNlcnZlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjplbnN1cmVRdW90YVVzZXIpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpJbmRleFZhbHVlU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
OjpyZWNvcmRWYWx1ZUNoYW5nZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8p
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OnNl
dERhdGFiYXNlSW5mbyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUluZGV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SW5kZXg6OnB1
dEluZGV4S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SW5kZXg6Om1h
eWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2Jq
ZWN0U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eU9iamVjdFN0b3JlOjptYXliZU9wZW5DdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlh
bERhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFi
YXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6YmVnaW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2FjaGVkU3RhdGVtZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGVCYWNraW5nU3RvcmVD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmNy
ZWF0ZVNRTGl0ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpiZWdpbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRPcGVuQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdERh
dGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlcXVlc3REYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VTdWNjZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6ZGVsZXRlRGF0YWJhc2VTdWNjZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OnB1dE9yQWRkU3VjY2Vzcyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJSZXN1bHREYXRhOjpnZXRSZWNvcmRTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6OmdldEFsbFJlY29yZHNTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlc3VsdERhdGE6Om9wZW5DdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlc3VsdERhdGE6Oml0ZXJhdGVDdXJzb3JTdWNjZXNzKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVz
dWx0RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
VHJhbnNhY3Rpb25JbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5m
bzo6dmVyc2lvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86
OklEQlRyYW5zYWN0aW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbklu
Zm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlRyYW5zYWN0aW9uSW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZv
OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpxdW90
YU1hbmFnZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9y
TWVkaWFDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFD
YXBhYmlsaXRpZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9u
TWFuYWdlcjo6bW9ja1BpY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25N
YW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNl
dExpdmVTZWVrYWJsZVJhbmdlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhRGV2aWNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYURl
dmljZXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlVXNlck1lZGlhVG8pOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OmNoYW5uZWxFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJS
VENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJX
ZWJSVENNZWRpYUVuZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Om5ld1RyYW5zY2VpdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNyZWF0ZVRyYW5zY2VpdmVyQmFja2VuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6dHJhbnNjZWl2ZXJC
YWNrZW5kRnJvbVNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpjcmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnZpZGVvUmVjZWl2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphdWRpb1Jl
Y2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kOjpjcmVhdGVEVE1GQmFja2VuZCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFj
a2VuZDo6Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlU2VuZGVyQmFja2VuZCk6CisgICAgICAgICog
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJv
dmlkZU5vdGlmaWNhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dRdW90YTo6ZnJvbSk6CisgICAgICAg
ICogTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3F1
b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmVu
c3VyZVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0Rl
Y29kZXI6OmRlY29kZUFzeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRGaWx0ZXJO
b2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVh
ZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmNyZWF0
ZUtlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OmdldEZyZXF1ZW5j
eVJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2Vy
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRl
ck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxh
eU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHYWluTm9kZTo6R2Fpbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9y
Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBhbm5lck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmlvZGljV2F2
ZTo6Y3JlYXRlQmFuZExpbWl0ZWRUYWJsZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
UmVhbHRpbWVBbmFseXNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUFuYWx5c2Vy
OjpSZWFsdGltZUFuYWx5c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5hbHlzZXI6
OnNldEZmdFNpemUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQ
cm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BL
ZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlckRTUEtlcm5lbDo6bGF6eUlu
aXRpYWxpemVPdmVyc2FtcGxpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFw
ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVs
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwOgor
ICAgICAgICAoZmlkbzo6Rmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHA6CisgICAgICAgIChmaWRv
OjpGaWRvSGlkSW5pdFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAg
KGZpZG86OkZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0
YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hl
ZHVsZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRy
YW5zYWN0aW9uU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dGFibGVOYW1lcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkQ3JlYXRpbmdEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRvcldlYkRyaXZlcjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvTmF2aWdh
dG9yR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdQVTo6ZnJvbSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNs
YXJhdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpSZW5kZXJG
dW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkNvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25X
cml0ZXI6OmNyZWF0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZyk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6Ok1ldGFsOjpUeXBlTmFtZXI6OmNyZWF0ZU5hbWVOb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkNoZWNrZXI6OmFzc2lnbkNvbmNyZXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6Q2hlY2tlcjo6YXNzaWduVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6Q2hlY2tl
cjo6Zm9yd2FyZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQYXJzZXI6OnBhcnNlU2VtYW50aWMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJOYXZpZ2F0b3JHUFU6OmZyb20pOgorICAgICAgICAqIE1vZHVs
ZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRDb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmlu
YXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5n
SGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZGlkVXBncmFkZVVSTCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlQmxvYkZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVl
dWUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNyZWF0ZUV4
dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjplbmFibGVEZWZsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVG
cmFtZXI6OmRlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6aW5mbGF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxhdGVyOjpXZWJTb2NrZXRE
ZWZsYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29ja2V0
SW5mbGF0ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjptYWluVGhyZWFkSW5pdGlhbGl6ZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3JXZWJWUjo6ZnJvbSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0Nv
bXB1dGVkT2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11dGF0ZXMpOgorICAgICAgICAqIGFuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjp1
cGRhdGVGaW5pc2hlZFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2
ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpqc0V2ZW50VGFyZ2V0Q2FzdCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNX
b3JrZXJHbG9iYWxTY29wZUJhc2U6OnF1ZXVlVGFza1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZCk6CisgICAgICAgICog
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KToKKyAgICAgICAgKiBicmlkZ2Uv
Yy9jX2NsYXNzLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6bWV0aG9kTmFt
ZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjpmaWVsZE5hbWVkIGNv
bnN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6T2JqY0NsYXNzOjptZXRob2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpPYmpjQ2xhc3M6OmZpZWxkTmFtZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpD
RmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJM
RmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29tYmlu
ZWRVUkxGaWx0ZXJzOjpDb21iaW5lZFVSTEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkNvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybik6CisgICAgICAg
ICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3NzVGhyZWFk
Q29weUltcG9ydFBhcmFtcyk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5lQ2F0ZWdvcnkpOgorICAgICAgICAqIGNzcy9D
U1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0
eWxlU2hlZXRzOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NE
ZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOgorICAgICAgICAqIGNz
cy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5k
U291cmNlcyk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lz
dGVyZWQpOgorICAgICAgICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpjc3NSdWxlcyBjb25zdCk6CisgICAgICAgICogY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZSk6CisgICAgICAgICogY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVsZTo6Y3Nz
UnVsZXMpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRX
b3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNTU1BhaW50V29ya2xldDo6ZnJvbSk6
CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6ZnJvbSk6CisgICAgICAg
ICogY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRS
dWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1
bGVTZXRzOjp1cGRhdGVVc2VyQWdlbnRNZWRpYVF1ZXJ5U3R5bGVJZk5lZWRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VSdWxlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50UnVsZVNldHM6OnJlc2V0QXV0aG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJl
SW52YWxpZGF0aW9uUnVsZVNldHMpOgorICAgICAgICAqIGNzcy9FbGVtZW50UnVsZUNvbGxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNs
b3R0ZWRQc2V1ZG9FbGVtZW50UnVsZXNGb3JTbG90KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcik6
CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OndyYXBGb3JEZXBy
ZWNhdGVkQ1NTT00pOgorICAgICAgICAqIGNzcy9SdWxlRmVhdHVyZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFRvUnVsZVNldCk6CisgICAgICAgICogY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAqIGNzcy9T
dHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudCk6CisgICAgICAgICog
Y3NzL1N0eWxlUHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24p
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKToKKyAgICAgICAgKiBj
c3MvbWFrZXByb3AucGw6CisgICAgICAgIChnZW5lcmF0ZUZpbGxMYXllclByb3BlcnR5SW5oZXJp
dFZhbHVlU2V0dGVyKToKKyAgICAgICAgKGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNl
dHRlcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OkNTU1BhcnNlckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXJJbXBsOjpjb25zdW1lU3VwcG9ydHNSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlckltcGw6OmNvbnN1bWVLZXlmcmFtZXNSdWxlKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NT
U1BhcnNlclNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9y
OjpwYXJzZVBhZ2VQc2V1ZG9TZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJT
ZWxlY3Rvcjo6cGFyc2VQc2V1ZG9FbGVtZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6Q1NTUGFyc2VyU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0U2VsZWN0b3JWZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnByZXBlbmRUYWdTZWxlY3Rvcik6CisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdW1lQmFzaWNTaGFwZVBhdGgpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTU2VsZWN0
b3JQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1
bWVQc2V1ZG8pOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5zdXJlQmFj
a3VwUXVldWUpOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyOjppdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvcklucHV0RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OnNldERyYWdJbWFnZSk6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlRGV2aWNlT3JpZW50YXRpb25Ubyk6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvcm1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpheE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRQYXJzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphY2Nlc3NT
VkdFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0ZXh0QXV0b1NpemluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRMb2dNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpyZWdpc3RlckNTU1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbnRlbnRDaGFuZ2VPYnNlcnZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZG9tVGltZXJIb2xkaW5nVGFuayk6CisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlUGFyc2VyWWllbGRU
b2tlbik6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZSk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcik6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OmVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVucXVldWVUb1VwZ3JhZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6Y2xhc3NMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmRhdGFzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlSW50ZXJzZWN0aW9u
T2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZVJlc2l6ZU9i
c2VydmVyRGF0YSk6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAgKiBkb20vRXZlbnRO
YW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRQYXRoOjpidWlsZFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoOjpFdmVu
dFBhdGgpOgorICAgICAgICAqIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcik6Cisg
ICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5Ym9h
cmRFdmVudDo6S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNy
b3Rhc2spOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRl
SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om9ic2Vy
dmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjptYXRlcmlhbGl6ZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEp
OgorICAgICAgICAqIGRvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSYWRpb0J1dHRvbkdyb3Vwczo6YWRkQnV0dG9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2Vy
U2xvdyk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOgorICAgICAgICAqIGRvbS9T
aGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6bW92ZVNoYWRvd1Jvb3RUb05ld0RvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFkZFNsb3RFbGVtZW50QnlOYW1l
KToKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlNsb3RBc3NpZ25tZW50Ojphc3NpZ25Ub1Nsb3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUpOgorICAgICAgICAo
V2ViQ29yZTo6VHJlZVNjb3BlOjphZGRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OmFkZEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
OjphZGRJbWFnZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEltYWdlRWxl
bWVudEJ5VXNlbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6bGFiZWxFbGVtZW50
Rm9ySWQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6RWRpdG9yKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjplbnN1
cmVSZXBsYWNlbWVudEZyYWdtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJlY3RH
YXRoZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNs
ZWFyQW5kQ3JlYXRlTm90aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252
ZXJ0ZXI6OkhUTUxDb252ZXJ0ZXIpOgorICAgICAgICAoSFRNTENvbnZlcnRlckNhY2hlczo6Y29t
cHV0ZWRTdHlsZVByb3BlcnR5Rm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50
KToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsT25GaWxlVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVh
bTo6QXN5bmNGaWxlU3RyZWFtKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6cmVhZEludGVybmFsKToKKyAgICAgICAgKiBo
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpD
YWNoZWRGcmFtZSk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFBhZ2U6OkNhY2hlZFBhZ2UpOgorICAgICAgICAqIGhpc3RvcnkvUGFn
ZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUp
OgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbik6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
ZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcik6CisgICAgICAgICogaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTYXZlZEZvcm1TdGF0ZTo6ZGVzZXJpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmNyZWF0ZVNhdmVkRm9ybVN0
YXRlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JG
b3JtRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cmVsTGlzdCBjb25zdCk6CisgICAgICAg
ICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFF
bGVtZW50OjptYXBNb3VzZUV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25zdCk6CisgICAgICAg
ICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1F
bGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcCk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6c2FuZGJveCk6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUltYWdlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TGlua0VsZW1lbnQ6OnNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6
cmVsTGlzdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaEluaXRpYWxpemF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxPdXRwdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
dXRwdXRFbGVtZW50OjpodG1sRm9yKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBk
YXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHVibGljVVJMTWFuYWdlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik6CisgICAgICAg
IChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6cmVxdWVzdFRvSGlkZU1lc3NhZ2UpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dDo6RGlzcGxheUxpc3REcmF3
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpkcmF3aW5nQ29udGV4dCBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdD
b250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xlKToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nh
bm5lcjo6ZW1pdFJ1bGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRI
VE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9j
dW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50
U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6aW5zZXJ0QWJv
dmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6cHVzaENvbW1vbik6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6Y3JlYXRlUHJlbG9h
ZFJlcXVlc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tlbi5oOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRva2VuOjpiZWdpbkRPQ1RZUEUpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2RlZEhUVFBCb2R5U3VmZml4
VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWxlKToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cGFyc2Vy
KToKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlcik6CisgICAgICAgICog
aHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2Fk
YWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9Db21t
YW5kTGluZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0
OjpDb21tYW5kTGluZUFQSUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElI
b3N0OjpjbGVhckFsbFdyYXBwZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RWRpdG9yOjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1v
dmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjppbnNlcnRBZGphY2VudEhUTUwpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNlV2hvbGVUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVk
aXRvcjo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlSW5zcGVjdG9yQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlUGFnZUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVTdGF0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoUGFyc2VkU3R5bGVT
aGVldDo6c2V0U291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjplbnN1cmVTb3VyY2VEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJl
c291cmNlQ3JlYXRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1BVUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDUFVQcm9m
aWxlckFnZW50OjpJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjphZGRSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50
OjpJbnNwZWN0b3JDYW52YXNBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0ZWROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRy
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlQWdl
bnQ6Okluc3BlY3RvckRhdGFiYXNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJv
bUNvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3Rv
cEZyb21Db25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvcldvcmtl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvcldvcmtlckFnZW50OjpJbnNw
ZWN0b3JXb3JrZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9h
ZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViSGVhcEFnZW50OjpXZWJIZWFwQWdlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VSdW50aW1lQWdlbnQ6OlBhZ2VSdW50aW1lQWdlbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyk6CisgICAgICAg
ICogbGF5b3V0L0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5
b3V0U3RhdGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGlu
Z1Jvb3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpj
cmVhdGVGb3JtYXR0aW5nQ29udGV4dCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQgY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpJbmxpbmVMYXlvdXQ6OmNyZWF0ZURpc3BsYXlSdW5zIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmU6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
OjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpzcGxpdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94
OjpCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVuc3VyZVJhcmVEYXRhKToK
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlVGFibGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1l
bnRzKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6YXBwZW5kQ2VsbCk6CisgICAgICAg
ICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OmxvYWRNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnZUNvbmZpZ3VyYXRpb25XaXRo
RW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OkZyYW1lTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0
Rm9yU3ludGhlc2l6ZWREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
ZGV0YWNoQ2hpbGRyZW4pOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAq
IGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmln
YXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUGFn
ZUJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3MpOgorICAgICAgICAq
IGxvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRS
ZXNvdXJjZURlY29kZXI6OmNoZWNrRm9ySGVhZENoYXJzZXQpOgorICAgICAgICAqIGxvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpw
cm9jZXNzTmV3Q3VlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9tKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjcmVhdGVJbWFnZSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZENsaWVu
dFRvU2V0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2Fkcyk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjplbnN1cmVTZXNzaW9uUmVzb3VyY2VNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlDYWNoZTo6bHJ1TGlzdEZvcik6CisgICAgICAgICogbG9hZGVyL2lvcy9QcmV2aWV3TG9hZGVy
Lm1tOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6
cmVzb3VyY2VSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV2ViUHJldmlld0xvYWRlciBjb25uZWN0
aW9uOmRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3TG9hZGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0
TWVudSk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKToKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OkV2ZW50SGFuZGxlcik6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjphZGRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXdM
YXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlRm9yUGFnaW5hdGlvbklmTmVlZGVkKToK
KyAgICAgICAgKiBwYWdlL05hdmlnYXRvckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW5p
dEdyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFJlc291cmNlVXNhZ2VPdmVybGF5
VmlzaWJsZSk6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHBh
Z2UvUGFnZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6Y2FwdGlvblBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBlcmZvcm1hbmNlOjptYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNl
OjpjbGVhck1hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjptZWFzdXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlOjpjbGVhck1lYXN1cmVzKToKKyAgICAgICAg
KiBwYWdlL1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyk6CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyOjpzdGFydFRpbWVyKToKKyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpjcmVhdGUp
OgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nc0Jhc2U6
OlNldHRpbmdzQmFzZSk6CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxl
U2hlZXQpOgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
YWdlL2FuaW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0FuaW1hdGlvbkNvbnRyb2xsZXI6OkNTU0FuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJW
aXNpdGVkQWZmZWN0ZWRDb2xvcjo6UHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyc1Byb3BlcnR5V3JhcHBlcjo6RmlsbExheWVy
c1Byb3BlcnR5V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUFuaW1hdGlv
bldyYXBwZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCk6CisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeTo6dXBkYXRlU291cmNlU2VsZik6CisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6c2V0Q1NQRGly
ZWN0aXZlKToKKyAgICAgICAgKiBwYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VVc2FnZU92ZXJsYXk6OnBsYXRmb3JtSW5p
dGlhbGl6ZSk6CisgICAgICAgICogcGFnZS9tYWMvUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OmFkZFNjaGVkdWxlUGFpcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZVRyZWU6OmNvbW1pdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZU5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU5vZGU6OmFwcGVuZENoaWxk
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
YmxlbmRNaXhlZFR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmlt
YXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25h
cE9mZnNldHNJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQnVzOjpBdWRpb0J1cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1czo6Y29weVdp
dGhHYWluRnJvbSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNz
Q29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmNy
ZWF0ZUludGVycG9sYXRlZEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRhdGFiYXNlTG9hZGVyOjps
b2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAoV2ViQ29yZTo6SFJURktlcm5lbDo6
Y3JlYXRlSW1wdWxzZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXVsdGlDaGFubmVsUmVzYW1w
bGVyOjpNdWx0aUNoYW5uZWxSZXNhbXBsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1Bh
bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXI6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYjo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpB
dWRpb1Nlc3Npb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6c2V0SW5wdXRGb3JtYXQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRPdXRwdXRGb3Jt
YXQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVk
RGVjb2Rlcjo6ZGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0Yu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXR1cFBvd2VyT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9TY3JvbGxDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJv
bGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
RmFjdG9yeUNsZWFyS2V5OjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQv
Y29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJvbGxlckRpZENvbm5lY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZWREZWNvZGVyR2VuZXJpYzo6RGljdGlvbmFyeTo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpLZXll
ZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFu
aW1hdG9yR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5p
bWF0b3JHZW5lcmljKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6
ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L0tleWVkRGVjb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpk
ZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyOjplbmNvZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6c3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dExheW91dDo6VGV4dExheW91dCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjplbnN1
cmVEZXJpdmVkRm9udERhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmJvdW5kc0ZvckdseXBoIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2
ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRpc3Bs
YXlMaXN0Rm9yVGV4dFJ1biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGVGb250cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUZvbnRzOjpH
bHlwaFBhZ2VDYWNoZUVudHJ5OjpzZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgorICAgICAgICAoV2ViQ29yZTo6
R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyOjpNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlOjpzZWVrYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50R3Jh
cGg6OmZpbmRPckNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb246OnNldFNoYXBlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6Y29w
eVNoYXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6
cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETUZhY3RvcnlGYWlyUGxh
eVN0cmVhbWluZzo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6cGxhdGZvcm1QaWNrZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0Y6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bm90aWZp
Y2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6bGVnaWJsZU91
dHB1dENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OnJlc291cmNlTG9h
ZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZh
dGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6
c2V0UGxheWVySXRlbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0aW9uT3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0
VHJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZP
YmpDOjpyZWFkVHJhY2tNZXRhZGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9y
bUJ1ZmZlcmVkVGltZVJhbmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVSb3RhdGlvblNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFz
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzaW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrV2l0aFRvbGVyYW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNl
ZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVu
Z2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YnVmZmVyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVDdXJyZW50RnJh
bWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2Vs
ZWN0b25PcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OlZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFt
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6YWRqdXN0VGlsZUNvdmVyYWdlUmVjdEZvclNjcm9s
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6dGlsZWRTY3JvbGxpbmdJ
bmRpY2F0b3JMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6Y29tbW9uSW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDb2Nv
YTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW06CisgICAgICAgICgtW1dlYlRpbGVkQmFja2lu
Z0xheWVyIGNyZWF0ZVRpbGVDb250cm9sbGVyOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxh
eWVyV2luOjpQbGF0Zm9ybUNBTGF5ZXJXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHA6CisgICAgICAgIChXZWJUaWxlZEJh
Y2tpbmdMYXllcldpbjo6Y3JlYXRlVGlsZUNvbnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6bV9wcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0
YTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3Jl
VGV4dDo6Zm9udFJhbmdlcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjplbnN1
cmVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Rl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW06CisgICAgICAgIChUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJl
Q2FjaGVDVi5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNWOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OmxvYWRFeHRl
cm5hbERvY3VtZW50SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmU6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlvU291cmNlUHJvdmlkZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hOZXh0SG9sZVB1bmNoQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnB1c2hOZXh0
SG9sZVB1bmNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhv
bGVQdW5jaDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveDo6cGFyc2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJU09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwOgor
ICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Y3JlYXRlQ29tbWFuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdD
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0Nv
bnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFw
cGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6Cisg
ICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw6OmNyZWF0
ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lh
OjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHA6
CisgICAgICAgIChOaWNvc2lhOjpHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4
dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6VGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6Y2xvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OmFwcGx5VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRl
OjpzZXRMYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtU3RhdGU6OnNldFNlY29uZGFyeVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVh
dGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxs
U2NyZWVuQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnVsbFNjcmVl
bkNvbnRyb2xsZXI6OmVudGVyRnVsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6Om1fcHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZVdpbmRvd3NCaXRtYXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldL
Q0FJbWFnZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9y
Q29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVTY3JvbGxiYXI6OlJlbmRlclRoZW1lU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3gpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChHSUZGcmFtZUNvbnRleHQ6
OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6YWRkRnJhbWVJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxl
Q2FjaGU6OkxlZ2FjeVRpbGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUaWxlQ2Fj
aGU6OmNvbW1pdFNjYWxlQ2hhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Nj
cm9sbEFuaW1hdG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGw6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1cmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZTo6R1N0cmVh
bWVyQXVkaW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6d2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjptX2NhcHR1cmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFj
dG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5
OjpDcmVhdGVWaWRlb0VuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1Bh
Y2tldFNvY2tldEZhY3Rvcnk6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjppbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNlcnRpZmljYXRlR2VuZXJhdG9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUHJvdmlkZXJH
U3RyZWFtZXI6OmNyZWF0ZURlY29kZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldl
YlJUQ1Byb3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVFbmNvZGVyRmFjdG9yeSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2Nv
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2E6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmlndXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYTo6Y29u
dmVydFRvWVVWKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZUNvY29hOjpyb3RhdGVQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENO
b3RpZmllcnNNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZURhdGFDaGFubmVsTm90
aWZpZXI6OmZpcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJM
RGVjb2Rlcjo6Y3JlYXRlRGVjb2RlVGFzayk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6UmVz
b3VyY2VIYW5kbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNlbmRCb2R5RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAg
ICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9yZXN0YXJ0XSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tp
ZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2Fj
aGVNYW5hZ2VyOjpsb2FkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENvbnRleHQ6OkN1cmxDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OndpbGxTZXR1cFNzbEN0eCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsRm9ybURhdGFTdHJlYW06OmdldFBvc3REYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpjcmVhdGVJZk5lZWRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybFJlcXVlc3Q6OnNldHVwVHJhbnNmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpkZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNhbGxPbldvcmtlclRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
OgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkROU1Jl
c29sdmVRdWV1ZVNvdXA6OnJlc29sdmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bkludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L0xvY2FsZUlDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrTW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2Fs
ZU5vbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b2RlY0lDVTo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENv
ZGVjTGF0aW4xLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY0xhdGluMTo6cmVnaXN0
ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjUmVwbGFjZW1lbnQ6OnJlZ2lzdGVyQ29k
ZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjE2OjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
b2RlY1VURjg6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY1VzZXJEZWZpbmVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VzZXJEZWZp
bmVkOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxl
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY1dpbik6CisgICAgICAgICogcGxhdGZvcm0v
dnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VlJQ
bGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmdldFZSRGlzcGxheXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckNvcHlBbmRQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dURCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudURCOjpjcmVhdGVQcmVw
YXJlZFN0YXRlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXQ0RhdGFPYmplY3Q6OlNldERhdGEpOgorICAgICAgICAqIHJl
bmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWls
ZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJ1bik6CisgICAgICAgIChXZWJDb3JlOjpD
b21wbGV4TGluZUxheW91dDo6Y3JlYXRlUm9vdElubGluZUJveCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wbGV4TGluZUxheW91dDo6aGFuZGxlVHJhaWxpbmdTcGFjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9h
dGluZ09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5nT2JqZWN0Ojpj
b3B5VG9OZXdDb250YWluZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmpl
Y3Q6OmNsb25lRm9yTmV3UGFyZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5n
T2JqZWN0czo6Y29tcHV0ZVBsYWNlZEZsb2F0c1RyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9H
cmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFy
ZWEpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdu
bWVudENvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0
aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21w
dXRlRmxleEZhY3RvclVuaXRTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6c2V0dXApOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bXV0YWJsZUxpc3RCYXNlZFRlc3RSZXN1bHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6YWRkUGxhY2Vob2xkZXJSdW5Gb3JJc29sYXRlZElubGluZSk6CisgICAgICAgICogcmVuZGVy
aW5nL0xheWVyT3ZlcmxhcE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllck92ZXJsYXBN
YXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omluc2VydEludG9UcmFja2VkUmVuZGVyZXJN
YXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uZWREZXNjZW5kYW50c01hcDo6YWRkRGVz
Y2VuZGFudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YmVnaW5VcGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVC
bG9ja1JhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZUZsb2F0aW5nT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Om1hdGVyaWFsaXplUmFyZUJsb2Nr
Rmxvd0RhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y3JlYXRlSW5saW5lQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OmVuc3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUNvdW50ZXJOb2RlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRnJhZ21lbnRDb250YWluZXI6OnNldFJlbmRlckJveEZyYWdtZW50SW5mbyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojpjb250YWluaW5nRnJhZ21lbnRNYXApOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
ZW9tZXRyeU1hcDo6cHVzaFZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1
dG9SZXBlYXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Ojp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0
ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xp
cFJlY3RzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQW5jZXN0b3JD
bGlwcGluZ1N0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFy
dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpu
b3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25z
dHJhaW5lZExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRl
TGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3cpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0OjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpzdHlsZURpZENoYW5nZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Ojptb21lbnRhcmlseVJldmVhbExhc3RUeXBlZENoYXJhY3Rlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVwYWlu
dFZpZXdSZWN0YW5nbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y29t
cG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjppbWFnZVF1YWxpdHlDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1
bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpwbGFj
ZUVsbGlwc2lzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6YXBwZW5kRmxvYXQpOgorICAgICAgICAqIHJlbmRl
cmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmNvbGxlY3RCb3VuZHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlTGluZUxheW91dDo6TGF5b3V0OjpydW5SZXNvbHZlciBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlTGluZUxheW91dDo6cGFpbnRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OmdlbmVyYXRlTGluZUJveFRyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9U
ZXh0QXV0b1NpemluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZzo6YWRk
VGV4dE5vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVCcmVha2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNvbXB1dGVTaGFwZU1hcmdpbkludGVydmFscyBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVJbnNldFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNpcmNsZVNo
YXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVsbGlwc2VTaGFwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVQb2x5Z29uU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNy
ZWF0ZVNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlQm94U2hhcGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9CYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlUGF0aDo6
YmxlbmQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsbExheWVyOjpGaWxsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpv
cGVyYXRvcj0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y2xvbmVQdHIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjphZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjplbnN1cmVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjplbnN1cmVUcmFuc2l0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlRGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1NWR0RhdGE6OlN0
eWxlU2hhZG93U1ZHRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0lubGluZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3gpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZXM6OnNldENsaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpz
ZXRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlck1pZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hc2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZXM6OnNldEZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpzZXRTdHJv
a2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5kZXJl
cik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXplTWVhc3Vy
ZW1lbnRXaXRoVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6
OlJlbmRlclRyZWVCdWlsZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OlJl
bmRlclRyZWVVcGRhdGVyKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpJbnZhbGlkYXRvcjo6SW52YWxpZGF0b3IpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlUmVsYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
Ojpjb21taXRSZWxhdGlvbnNUb1JlbmRlclN0eWxlKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNj
b3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zIGNv
bnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlKToKKyAgICAgICAgKiBzdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkRWxlbWVudFJlZmVyZW5jaW5nVGFyZ2V0KToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpTVkdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmVuc3VyZVNWR1Jh
cmVEYXRhKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhCeXRlU3RyZWFtOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjpz
Y2hlZHVsZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRGVjb3JhdGVkRW51bWVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxTZXR0aW5nczo6ZnJvbSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R1YkZyb250ZW5kOjpJbnNwZWN0b3JTdHViRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpJbnRlcm5hbHMpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFByaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0pOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpxdWV1ZU1pY3JvVGFzayk6CisgICAgICAgICogdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeU1vY2tDRE06OmNyZWF0ZVNlc3Npb24pOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NETUZhY3Rvcnk6OmNyZWF0ZUNETSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dhbWVwYWREZXRhaWxzKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJF
dmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckds
b2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNz
YWdlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dv
cmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6Oldvcmtl
clRocmVhZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJl
Z2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1
cGRhdGVSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0
TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVyKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0
YWJhc2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6U1dTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9i
UXVldWU6OnJ1blJlZ2lzdGVySm9iKToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldENvbnNvbGVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VX
aXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xvYmFs
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xl
TWVzc2FnZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRX
aXRoU3ViY2xhc3MpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6dXBsb2FkKToKKyAgICAgICAgKiB4bWwvWFBhdGhG
dW5jdGlvbnMuY3BwOgorICAgICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYUGF0aDo6ZXZhbHVhdGVQcmVkaWNhdGUpOgorICAgICAgICAqIHhtbC9YU0xT
dHlsZVNoZWV0TGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xTdHlsZVNoZWV0Ojps
b2FkQ2hpbGRTaGVldCk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IpOgor
ICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZFN0YXJ0RWxlbWVudE5TQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kRW5kRWxlbWVu
dE5TQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5k
Q2hhcmFjdGVyc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6
OmFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENEQVRBQmxvY2tDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRDb21tZW50Q2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kSW50ZXJuYWxTdWJzZXRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRFcnJvckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBh
cnNlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZG9FbmQpOgorCiAy
MDE5LTA4LTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgc3BlY3VsYXRpdmUgYnVpbGQgZml4IGZvciBXaW5DYWlybywgcGFydCAyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwppbmRleCA2MGU3ZmI1NmM5NzA1ZTE5ZmM4OWJjOGE2YmQ0ZjQyM2VmMTYy
NWJlLi4wNzBmYTI1OTUxNzFmYzg1OTU5YzI4Y2JlNTYwNWMxYmYwYzhmYmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOC0xNiAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGlj
aCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBH
YXJlbi4KKworICAgICAgICAqIHBhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NM
LmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwOgorICAgICAgICAoUEFMOjpDbG9j
azo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tOgorICAgICAg
ICAoQ2xvY2s6OmNyZWF0ZSk6CisKIDIwMTktMDgtMTQgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBtYWNPUyA8IDEwLjEzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJEcml2ZXIv
Q2hhbmdlTG9nCmluZGV4IGU2YTUzYjMxMWUyZWNkMjE2Nzg1MzVhZTFhMzA5YjAwOWFlYWFhN2Uu
LmE2ZGE1YzBhODc3YTNiY2JkYTQyZWM2NDI4Y2VmODY3NTlmNWYzNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
KyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6V2Vi
RHJpdmVyU2VydmljZTo6Y29ubmVjdFRvQnJvd3Nlcik6CisgICAgICAgICogZ2xpYi9TZXNzaW9u
SG9zdEdsaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6bGF1bmNoQnJv
d3Nlcik6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFj
a2VuZCk6CisKIDIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZh
c3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9uIHBhcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYmI3YWU3Y2QzZDk1OGRjMzE5NGVmM2FiMjIxOGUyZDVhNTcwMTk3Ni4uNGY5N2Ri
MDBkNmE0MGJlNWFlYzFlMzExMGQzOTljMGQzYzY2MzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
NTAgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3Qt
YWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2sg
cGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAw
NjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzayk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZv
ck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlclNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6
OmNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hcDo6YWRk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFi
bGlzaFNXU2VydmVyQ29ubmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRkQ29udGVudFJ1bGVMaXN0cyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRD
aGVja2VyOjpjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkQ2hlY2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVRdW90YVVzZXJzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnN0b3JhZ2VRdW90YU1hbmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTdXBw
bGVtZW50KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjpzY2hlZHVsZURhdGFiYXNlVXBkYXRlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6Om1ha2VFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6Q2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpDYWNoZTo6dXBkYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OlBlbmRpbmdGcmFtZUxvYWQ6OnJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
YWRkUHJlbG9hZGVkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJy
ZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3luY2hyb25pemUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnJlYWRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OnJldHJpZXZlRnJvbU1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdl
Ojp0cmF2ZXJzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3VicmVzb3VyY2VzRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1
YnJlc291cmNlc0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0
Y2hDYWNoZTo6c3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRjaENhY2hlOjpzdG9yZVJl
ZGlyZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVE
ZWZhdWx0U3RvcmFnZVNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6bmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nl
c3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpd
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFn
ZVNlc3Npb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nl
c3Npb25DdXJsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRp
b25QcmVzZW50ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFU
YXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1
bHRTdG9yYWdlU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNv
dXA6Ok5ldHdvcmtTZXNzaW9uU291cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
U291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrU2Vzc2lvblNvdXAuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAod2Via2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbVJlYWRBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTUROU1Jl
Z2lzdGVyOjpyZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ01vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDTW9u
aXRvcjo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRl
cjo6TmV0d29ya1JUQ1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3Zp
ZGVyOjpjcmVhdGVTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6
OndyYXBOZXdUQ1BDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVN5bmNN
ZXNzYWdlRW5jb2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUluY29taW5n
TWVzc2FnZXNUaHJvdHRsaW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hT
eW5jTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNl
bmRXaXRoQXN5bmNSZXBseSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgor
ICAgICAgICAoSVBDOjpEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5
bmMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9n
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6OmNyZWF0
ZU1lc3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJj
ZUV2ZW50SGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpyZWFkRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5n
Q29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRl
Rm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZv
ckV4dGVybmFsSG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdD
b250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAg
ICAgIChBUEk6OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hh
cmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5IF9pbml0V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdl
YmtpdENvbnRleHRNZW51SXRlbUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51
X2l0ZW1fbmV3KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9n
YWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9j
a19hY3Rpb24pOgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0
b2NrX2FjdGlvbl93aXRoX2xhYmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9uZXdfd2l0aF9zdWJtZW51KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfc2VwYXJhdG9yKToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGV4
bWFwTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVu
c3VyZVJvb3RMYXllcik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKToKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVt
b3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQ
cm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFy
ZWFibGVCaXRtYXBEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhU
VFBDb29raWVTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6cmVnaXN0
ZXJPYnNlcnZlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXS0Nv
bnRleHRTZXRIaXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3Bw
OgorICAgICAgICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05v
dGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgor
ICAgICAgICAoV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAgICAg
KFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0
Y2hlc0NsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAgICAg
IChXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xp
Y3lDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9X
S1BhZ2VQcml2YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUgaW5p
dFdpdGhQYWdlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoK
KyAgICAgICAgKFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hUVFBD
b29raWVTdG9yZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2Fk
RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxl
Z2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxl
ciBfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IHNldEFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlv
blNlc3Npb24gc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNRTGl0
ZVN0YXRlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcDoKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVu
dC5jcHA6CisgICAgICAgIChhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5j
cHA6CisgICAgICAgIChhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHA6
CisgICAgICAgIChhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJr
aXRGYXZpY29uRGF0YWJhc2VPcGVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAod2Via2l0RmluZENvbnRyb2xsZXJDb25z
dHJ1Y3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQu
Y3BwOgorICAgICAgICAoYXR0YWNoRm9ybUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJr
aXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hJY29uTG9hZGlu
Z0NsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVj
dGVkQnVuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50
VG9Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Oldl
YktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOgor
ICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNz
YWdlX2hhbmRsZXIpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lz
dGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRl
eHRDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRp
b25fYWxsb3dlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwOgorICAgICAgICAod2Via2l0RW1vamlDaG9v
c2VyU2V0dXBFbW9qaVNlY3Rpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgICh3ZWJr
aXRXZWJJbnNwZWN0b3JDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAg
ICh3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcik6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgbWF5YmVJbnN0YWxsSWNvbkxvYWRp
bmdDbGllbnRdKToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6
Y29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVBy
b3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAgICAgICAg
KFdLV1BFOjpWaWV3OjpWaWV3KToKKyAgICAgICAgKFdLV1BFOjpWaWV3OjpzZXRDbGllbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHA6CisgICAgICAgIChX
UEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3
Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3OjpydW5KYXZh
U2NyaXB0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdQRVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxl
Z2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpjcmVhdGVDb250
ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNyZWF0ZVVJQ2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6
OmNyZWF0ZU1lZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3Jl
YXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRU
ZXh0SW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1
cmVDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBvcmF0ZVVwZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpk
aXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZTo6Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNh
bGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxDb25uZWN0ZWRHYW1l
cGFkcyk6CisgICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVw
YWRDb25uZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVE
b3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dGFr
ZVVwbG9hZEFzc2VydGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3Bw
OgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5SZXF1aXJlc0d0azIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90
dGxlcjo6ZGlkQ29ubmVjdFRvUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyk6
CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
bWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFj
OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
b2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlh
RWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjptX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0SWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dEZpbmRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRj
aGVzQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVu
dUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5k
bGVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEF0dGFj
aFRvUnVubmluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERy
YXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRGdWxsc2NyZWVuQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxl
Y3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzcGVlY2hTeW50
aGVzaXNEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpzZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fkcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVk
aWJsZU1lZGlhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRy
YWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29t
cG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJs
ZUltYWdlQ29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRy
b2xsZXI6OmVuc3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tB
cHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS0FwcGxpY2F0aW9u
U3RhdGVUcmFja2luZ1ZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25J
bml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjp3
ZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVEcmF3aW5nQXJlYVBy
b3h5Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5n
OmJsdXJQcmV2aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyIGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAgICAgKC1b
V0tUZXh0RmluZGVyQ2xpZW50IGluaXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmluZFVJOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZv
cm1TdGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0
MkQuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICog
VUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2Vi
Vmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdhbWVw
YWRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVj
dGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlU2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRs
ZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRFZGl0
b3JDbGllbnQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudCk6CisgICAgICAg
IChXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZVNldFJlc291cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRVSUNsaWVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJh
bm5lck1hYy5tbToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhD
QUxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RP
TS9ET01PYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldE9yQ3JlYXRlRE9NT2Jq
ZWN0Q2FjaGVGcmFtZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OnB1dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRFeHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9u
TWFuYWdlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViRWRpdG9y
Q3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYkV4dGVuc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
UGFnZS5jcHA6CisgICAgICAgICh3ZWJraXRGcmFtZUdldE9yQ3JlYXRlKToKKyAgICAgICAgKHdl
YmtpdFdlYlBhZ2VDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0
b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgor
ICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3Nl
dEZvcm1EZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlOjpzZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ01lc3NhZ2U6OlBlbmRp
bmdNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXRGYWN0
b3J5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5Ojpj
cmVhdGVTZXJ2ZXJUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRG
YWN0b3J5OjpjcmVhdGVVZHBTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KToKKyAgICAgICAg
KFdlYktpdDo6TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQXN5bmNSZXNvbHZlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I6OlBsdWdp
bkRlc3RydWN0aW9uUHJvdGVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6c2NoZWR1bGVUaW1lcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW5TdHJlYW06OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW5YMTE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdv
cmtlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hv
b3Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVu
dDo6c2hvd1BhaW50UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZE92ZXJyaWRlczo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVu
c3VyZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3Rl
OjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRm
b3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV90ZXh0
QXV0b1NpemluZ0FkanVzdG1lbnRUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YmVn
aW5QcmludGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpw
cmludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0
b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6bWFya0FsbExheWVyc1ZvbGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
ZW5zdXJlQXV0b21hdGlvblNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OmxpYldlYlJUQ05ldHdvcmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjph
ZGRTdXBwbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6
OlNvdXJjZTo6U291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURp
ZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JT
dGF0ZSk6CisKIDIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZh
c3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9uIHBhcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggOTNlN2U4MzU4ZWM2YjFhYTA3NzkzOTExMjkwZmY4N2UxMjNm
YjQ0NS4uYjhkMDQ0Yjk5OGRhNmI0ZDA1NDliZTEzYmUxMzE1OGE4YTA5MzUzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0wOC0xNiAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3
aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToK
KyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZVRocmVhZDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVh
ZDo6dGVybWluYXRlKToKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAgICAo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24pOgorICAgICAg
ICAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToK
KyAgICAgICAgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIw
MTktMDgtMTUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0ZUV10gRW5hYmxlIENvcmVGb3VuZGF0aW9uIHVzZSBpZiBidWlsZGluZyBmb3IgQXBwbGUgdGFy
Z2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCmluZGV4IGM2M2VmYWJhNWQ4ODY4M2JlZmJmMTY5
NThmZjFmZTAwMDRlYTljNmIuLjZiNjAxMzQ4MzIxZjU1ZDM3NzAwMTgxZGRmNGUzMjUyNTM0Yjg0
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgt
MTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBB
ZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtl
VW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNy
ZWF0ZUZyb250ZW5kU2V0dGluZ3MpOgorCiAyMDE5LTA4LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNDg0
NTQpOiBXSzEgaW5zcGVjdG9yIGZyb250ZW5kIGNsaWVudCBkb2Vzbid0IHF1ZXVlIG1lc3NhZ2Vz
IHRvIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQncyBsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZwppbmRleCAwMWQyMDhlYzMwYTAyMTg5YjdkNzJjNTUzNGMwNjk3NjZmMDU5OTRhLi5hNGU3
ZWU3ZWIzYmRhMGM0ZWIxMmQxNjc3NTYzOTAxNjg1ODkxNThkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVu
dC5tbToKKyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2V0Vmlld3BvcnRDb25z
dHJhaW5lZExheWVyczpzdGlja3lDb250YWluZXJNYXA6XSk6CisKIDIwMTktMDgtMTUgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgbWFrZVVu
aXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRCBhbm5vdGF0aW9uIHBhcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCA0ZWI3YTMzZjM5NDU0Yjk4YTcwM2M2NGFlZTFlN2E5M2Y5ZWJlMDgzLi4wOGRmNjNkMzBiNTBk
NmU0OTIwZGZiYjdlMzJhMjhkM2E4ZTMzNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTMgQEAKKzIwMTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisK
KyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQ
cml2YXRlIGluaXRdKToKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAg
ICAgICAoLVtXZWJIaXN0b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpd
KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbToK
KyAgICAgICAgKFdLUENHZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseSk6CisgICAgICAgIChXS1BD
Qm9vbGVhblJlcGx5KToKKyAgICAgICAgKFdLUENCb29sZWFuQW5kRGF0YVJlcGx5KToKKyAgICAg
ICAgKFdLUENJbnN0YW50aWF0ZVBsdWdpblJlcGx5KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRo
b2ROYW1lZCk6CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgor
ICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToK
KyAgICAgICAgKC1bV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdpbl0pOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW06CisgICAg
ICAgIChXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3IHNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6cmVwZWF0OnRpbWVyRnVuYzpdKToK
KyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAg
KERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKGFkZFJlZGly
ZWN0VVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRh
VG9DYWNoZWRGcmFtZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6
CisgICAgICAgICogV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0
YWNoU2NyaXB0RGVidWdnZXJdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXIubW06CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpj
cmVhdGUpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAo
LVtXZWJUZXh0SXRlcmF0b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHRd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1l
Omdyb3VwTmFtZTpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6
d29ybGQ6c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0
ZWRGcmFtZXM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91
cDp3b3JsZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6
CisgICAgICAgICgtW1dlYlZpZXcgX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyXSk6CisgICAg
ICAgICgtW1dlYlZpZXcgX3NldFRleHRJbmRpY2F0b3I6d2l0aExpZmV0aW1lOl0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgIChXZWJWaWV3TGF5ZXJGbHVzaFNj
aGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIpOgorICAgICAgICAoLVtXZWJWaWV3
UHJpdmF0ZSBpbml0XSk6CisKIDIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJl
cyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5vdGF0aW9u
IHBhcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBhMGIxNzIzZjBkOWE4NWQzMDRl
ZjFkMTg1OWViMjYyOWQ5Mzk0Njk1Li4xZDE2YWI4MjlmODY0Yzg3N2VhNmI2ZmRiODIwZDRjNjhi
NWIzMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIw
MTktMDgtMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBb
V1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVk
LCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bHVnaW5WaWV3Ojpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6d25kUHJvYyk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6
V2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURh
dGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVu
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICog
V2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKFdlYkVsZW1lbnRQcm9wZXJ0eUJh
Zzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKToKKyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6
CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRp
b24pOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5j
cHA6CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5kZXJlcjo6Y3JlYXRlRDNEUG9zdFByb2Nlc3Np
bmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAg
ICAoV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlTW91c2VFdmVudCk6Cisg
ICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckVtYmVkZGVkVmlld01JTUVUeXBlKToKKyAgICAgICAg
KFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAg
KFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dyb3VwKToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVz
ZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisgICAgICAgIChXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKToKKwogMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQg
aXMgZmFzdC1hbGxvY2F0ZWQsIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIGFubm90YXRpb24gcGFy
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAw
N2Q3MDliYTEyYzgyYzg1NDgyZDczYzcyMzc3ZjUxOWU3ZmMyYTVjLi5kMGU2MjUyODJhODRmNGYz
NWVlZGVkMTk1ZWRiOGRjODk3YjFhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgSlNDYWxsYmFja09i
amVjdERhdGEgewogICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKCFtX3ByaXZhdGVQcm9wZXJ0aWVzKQotICAgICAgICAgICAgbV9wcml2
YXRlUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7
CisgICAgICAgICAgICBtX3ByaXZhdGVQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxKU1ByaXZhdGVQ
cm9wZXJ0eU1hcD4oKTsKICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcy0+c2V0UHJpdmF0ZVBy
b3BlcnR5KHZtLCBvd25lciwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAppbmRleCBhZTNhNmZlM2FjZjljNmE4MDM5NGUxZDczNGZhMzE3ZDkwOGZhZTJjLi45Y2Ez
YjRiZjQwODUwNzUwYjhiYzQxOTQ5Zjc1MDQyYjM1NzIzMWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTgs
NyArNTgsNyBAQCBpbmxpbmUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmFzQ2FsbGJhY2tPYmplY3QoRW5jbwogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGpzQ2xhc3MsIHZvaWQqIGRh
dGEpCiAgICAgOiBQYXJlbnQoZXhlYy0+dm0oKSwgc3RydWN0dXJlKQotICAgICwgbV9jYWxsYmFj
a09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwg
anNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShtYWtlVW5pcXVlPEpTQ2FsbGJh
Y2tPYmplY3REYXRhPihkYXRhLCBqc0NsYXNzKSkKIHsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpTQ2FsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFja09iamVjdChWTSYgdm0sIEpTQ2xhc3NSZWYganND
bGFzcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgOiBQYXJlbnQodm0sIHN0cnVjdHVyZSkK
LSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRhKHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxsYmFja09i
amVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3MpKQorICAgICwgbV9jYWxsYmFja09iamVjdERhdGEo
bWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4obnVsbHB0ciwganNDbGFzcykpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCmluZGV4IGYxYzlkNTcw
MmE4YWE2OTA0NGRmYjI5NWI0NzFmY2ZjYmM4OTBiNmIuLjdlZWMyYTkwYTQ0Zjg2MGJhYTIyNzZi
OTZkNDVmMmJkNjg2MTcwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVm
LmNwcApAQCAtNTksMjEgKzU5LDIxIEBAIE9wYXF1ZUpTQ2xhc3M6Ok9wYXF1ZUpTQ2xhc3MoY29u
c3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpTQ2xhc3MqCiAgICAgaW5p
dGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljVmFsdWUqIHN0YXRp
Y1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGljVmFsdWVzKSB7Ci0gICAgICAgIG1fc3RhdGljVmFs
dWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7
CisgICAgICAgIG1fc3RhdGljVmFsdWVzID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGlj
VmFsdWVzVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNWYWx1ZS0+bmFtZSkgewogICAg
ICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljVmFsdWUt
Pm5hbWUpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZU5hbWUuaXNOdWxsKCkpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBzdGQ6Om1ha2VfdW5p
cXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3RhdGljVmFs
dWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7Cisg
ICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBtYWtl
VW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3RhdGlj
VmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7
CiAgICAgICAgICAgICArK3N0YXRpY1ZhbHVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYg
KGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0YXRpY0Z1bmN0aW9uID0gZGVmaW5pdGlvbi0+c3Rh
dGljRnVuY3Rpb25zKSB7Ci0gICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtlX3Vu
aXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CisgICAgICAgIG1fc3Rh
dGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFi
bGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0aWNGdW5jdGlvbi0+bmFtZSkgewogICAgICAgICAg
ICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljRnVuY3Rpb24t
Pm5hbWUpOwogICAgICAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUuaXNOdWxsKCkpCi0gICAgICAg
ICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMtPnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBzdGQ6
Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9uRW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5jYWxsQXNG
dW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0dHJpYnV0ZXMpKTsKKyAgICAgICAgICAgICAgICBt
X3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0aW9uTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8U3Rh
dGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVuY3Rpb24tPmNhbGxBc0Z1bmN0aW9uLCBzdGF0aWNG
dW5jdGlvbi0+YXR0cmlidXRlcykpOwogICAgICAgICAgICAgKytzdGF0aWNGdW5jdGlvbjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTEyOCwyMSArMTI4LDIxIEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0
RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKEpTQzo6Vk0mLCBPcGFxdWVKU0NsYXNzKiBq
c0NsCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3MpCiB7CiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGlj
VmFsdWVzKSB7Ci0gICAgICAgIHN0YXRpY1ZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVl
SlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigpOworICAgICAgICBzdGF0aWNWYWx1ZXMgPSBtYWtl
VW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNWYWx1ZXNUYWJsZT4oKTsKICAgICAgICAgT3BhcXVl
SlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBqc0NsYXNzLT5t
X3N0YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFzc1N0YXRpY1Zh
bHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3RhdGljVmFsdWVzLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+
aXNBdG9tKCkpOwogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IGl0LT5rZXktPmlzb2xh
dGVkQ29weSgpOwotICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVOYW1lLmltcGwo
KSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFByb3Bl
cnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVl
TmFtZSkpOworICAgICAgICAgICAgc3RhdGljVmFsdWVzLT5hZGQodmFsdWVOYW1lLmltcGwoKSwg
bWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFByb3BlcnR5LCBpdC0+
dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGljRnVuY3Rpb25zKSB7
Ci0gICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFz
c1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOworICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBtYWtl
VW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNGdW5jdGlvbnNUYWJsZT4oKTsKICAgICAgICAgT3Bh
cXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBqc0Ns
YXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+ZW5kKCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFz
c1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25zdF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3Rh
dGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFT
U0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwotICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5h
ZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCksIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljRnVuY3Rp
b25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNGdW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVz
KSk7CisgICAgICAgICAgICBzdGF0aWNGdW5jdGlvbnMtPmFkZChpdC0+a2V5LT5pc29sYXRlZENv
cHkoKSwgbWFrZVVuaXF1ZTxTdGF0aWNGdW5jdGlvbkVudHJ5PihpdC0+dmFsdWUtPmNhbGxBc0Z1
bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTE1MSw3ICsxNTEsNyBAQCBPcGFxdWVKU0NsYXNzQ29udGV4dERhdGEmIE9wYXF1ZUpTQ2xhc3M6
OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3Bh
cXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29udGV4dERhdGEgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPm9wYXF1ZUpTQ2xhc3NEYXRhKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICBjb250ZXh0RGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPihleGVjLT52bSgpLCB0aGlz
KTsKKyAgICAgICAgY29udGV4dERhdGEgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250ZXh0
RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CiAgICAgcmV0dXJuICpjb250ZXh0RGF0YTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFp
bnRQcml2YXRlLmNwcAppbmRleCBkOWVlNjc0MDM0OWNmZWZkZmJjYzBkMzEwOTRmMWY0ZGU1YTUy
YzFlLi5iYTRhNWExNjY5N2FmNWY4YTk3MjJlNTc0NjllMzk0ZDk3OTA0MmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2
YXRlLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEpTQ29udGV4dEdyb3VwQWRkTWFya2luZ0Nv
bnN0cmFpbnQoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTTWFya2luZ0NvbnN0cgogICAgIC8v
IGVsc2UgZ2V0cyBtYXJrZWQuCiAgICAgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSA9
IENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5ZWRCeU1hcmtpbmc7CiAgICAgCi0gICAgYXV0byBj
b25zdHJhaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oCisg
ICAgYXV0byBjb25zdHJhaW50ID0gbWFrZVVuaXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4o
CiAgICAgICAgIHRvQ1N0cmluZygiQW1jIiwgY29uc3RyYWludEluZGV4LCAiKCIsIFJhd1BvaW50
ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2spKSwgIikiKSwKICAgICAg
ICAgdG9DU3RyaW5nKCJBUEkgTWFya2luZyBDb25zdHJhaW50ICMiLCBjb25zdHJhaW50SW5kZXgs
ICIgKCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2sp
KSwgIiwgIiwgUmF3UG9pbnRlcih1c2VyRGF0YSksICIpIiksCiAgICAgICAgIFtjb25zdHJhaW50
Q2FsbGJhY2ssIHVzZXJEYXRhXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1h
cC5tbQppbmRleCBkNDY5Yjc1YTMxZjBlZmNhOWQwN2FiYjAzYjBiZTY2MTYxYjM5NTY3Li40YjU5
OTA3M2ZlNzZiNDg2NDQzNjk5YWJkY2IzNGM0MTY0YmMyZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpAQCAtNjA2LDcgKzYwNiw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZiljb250ZXh0
CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMgPSBOU1BvaW50ZXJG
dW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7
CiAgICAgbV9jYWNoZWRPYmpDV3JhcHBlcnMgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRo
S2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNpdHk6
MF07CiAKLSAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vh
a0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNvbnRl
eHQpLT52bSgpKTsKKyAgICBtX2NhY2hlZEpTV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEpTQzo6V2Vh
a0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQgaWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNvbnRl
eHQpLT52bSgpKTsKIAogICAgIEFTU0VSVCghdG9KU0dsb2JhbE9iamVjdChjb250ZXh0KS0+d3Jh
cHBlck1hcCgpKTsKICAgICB0b0pTR2xvYmFsT2JqZWN0KGNvbnRleHQpLT5zZXRXcmFwcGVyTWFw
KHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJh
Y2tGdW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVu
Y3Rpb24ubW0KaW5kZXggZWU5MzI4MjFlZjc0YmQ2ODkxYWU4ZjI5ZmFkN2JiYTVhZmVhMGNiYy4u
NzNjYjQyNzA0MzgxODMxZTgxOWQ5ZDk0M2ViOWU1NDQwMzA5NmY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC0xOTUsMTgg
KzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMg
UmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50ZWdlcjxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudEludGVnZXI8VD4+KCk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlRG91YmxlKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnREb3Vi
bGU8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnREb3Vi
bGU8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJvb2xl
YW4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRCb29sZWFu
PigpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVWb2lkKCkKQEAgLTIxNyw3
ICsyMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudElkPigp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SWQ+KCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3QgY2hhciogYmVnaW4s
IGNvbnN0IGNoYXIqIGVuZCkKQEAgLTIyOCwxOSArMjI4LDE5IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGlmIChjbHMgPT0gW0pTVmFsdWUgY2xhc3Nd
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEpT
VmFsdWU+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50
SlNWYWx1ZT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNTdHJpbmcgY2xhc3NdKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TU3RyaW5nPigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TU3RyaW5n
PigpOwogICAgICAgICBpZiAoY2xzID09IFtOU051bWJlciBjbGFzc10pCi0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7CiAg
ICAgICAgIGlmIChjbHMgPT0gW05TRGF0ZSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNEYXRlPigpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGF0ZT4oKTsKICAgICAgICAgaWYgKGNs
cyA9PSBbTlNBcnJheSBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGxiYWNrQXJndW1lbnROU0FycmF5PigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0Rp
Y3Rpb25hcnkgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rpb25hcnk+KCk7CiAKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE9mQ2xhc3M+KGNscyk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnRPZkNsYXNzPihjbHMpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVCbG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciop
CkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgU3RyaW5nUmFuZ2Ug
Y29weShiZWdpbiwgZW5kKTsKICAgICAgICAgaWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9
IHZhbHVlVG9UeXBlSW52b2NhdGlvbkZvcihjb3B5KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4oaW52
b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH07CkBAIC0z
MzUsNDUgKzMzNSw0NSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBz
dGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0TnVtZXJpYzxUPj4oKTsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1l
cmljPFQ+PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVy
aWM8VD4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRCb29sZWFu
PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdEJvb2xlYW4+KCk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZVZvaWQoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRWb2lkPigpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdFZvaWQ+KCk7CiAgICAgfQogCiAgICAg
c3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlw
ZU9mQ2xhc3MoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0
VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMg
UmVzdWx0VHlwZSB0eXBlU3RydWN0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQp
CiAgICAgewogICAgICAgICBTdHJpbmdSYW5nZSBjb3B5KGJlZ2luLCBlbmQpOwogICAgICAgICBp
ZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gdHlwZVRvVmFsdWVJbnZvY2F0aW9uRm9yKGNv
cHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRT
dHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q2FsbGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiB9OwpAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRpYyBKU09iamVjdFJl
ZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24oSlNDb250ZXh0ICpjb250ZXh0LCBO
U0ludm9jCiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOwogICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAgIGF1dG8gaW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8
SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9jYXRpb24sIHR5cGUsIGluc3RhbmNl
Q2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICBhdXRvIGlt
cGwgPSBtYWtlVW5pcXVlPEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsPihpbnZvY2F0aW9u
LCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUocmVzdWx0
KSk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lID0gaW1wbC0+bmFtZSgpOwogICAgIHJldHVybiB0
b1JlZihKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgbmFtZSwgV1RGTW92ZShpbXBsKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IGUwMWU5NzBjN2Y1ODAzNjU2
MThlZjFkYWI4NTU0NGQ3MDRmOWI0N2EuLjc4ZDc2NTVmZjgwNzc2MGQ0NjA4YTYxN2U1N2M5MGYx
NTQyNzk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBqc2NDb250ZXh0U2V0VmlydHVh
bE1hY2hpbmUoSlNDQ29udGV4dCogY29udGV4dCwgR1JlZlB0cjxKU0NWaXJ0dWFsTQogICAgICAg
ICAgICAgcHJpdi0+anNDb250ZXh0ID0gSlNSZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVmPihB
ZG9wdCwgSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChqc2NWaXJ0dWFsTWFjaGluZUdldENv
bnRleHRHcm91cChwcml2LT52bS5nZXQoKSksIG51bGxwdHIpKTsKICAgICAgICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0gdG9KU0dsb2JhbE9iamVjdChwcml2LT5qc0NvbnRleHQuZ2V0KCkpOwogICAg
ICAgICBpZiAoIWdsb2JhbE9iamVjdC0+d3JhcHBlck1hcCgpKQotICAgICAgICAgICAgZ2xvYmFs
T2JqZWN0LT5zZXRXcmFwcGVyTWFwKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXcmFwcGVyTWFwPihw
cml2LT5qc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0V3Jh
cHBlck1hcChtYWtlVW5pcXVlPEpTQzo6V3JhcHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgp
KSk7CiAgICAgICAgIGpzY1ZpcnR1YWxNYWNoaW5lQWRkQ29udGV4dChwcml2LT52bS5nZXQoKSwg
Y29udGV4dCk7CiAgICAgfSBlbHNlIGlmIChwcml2LT52bSkgewogICAgICAgICBBU1NFUlQocHJp
di0+anNDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NXcmFwcGVyTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NX
cmFwcGVyTWFwLmNwcAppbmRleCAxMWJiN2MwYjg3MzdkYjY3ZGQxN2RjZDI0ZjcwMjk0MzQ0Njlh
ODAzLi5mNTIzZWE0MTk5ZjhhYmQ3MzJmNzdiNjI4MTQxMjAxMzRiYjhiZWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1dyYXBwZXJNYXAuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogV3JhcHBlck1hcDo6V3JhcHBlck1hcChKU0ds
b2JhbENvbnRleHRSZWYganNDb250ZXh0KQotICAgIDogbV9jYWNoZWRKU1dyYXBwZXJzKHN0ZDo6
bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pT
KGpzQ29udGV4dCktPnZtKCkpKQorICAgIDogbV9jYWNoZWRKU1dyYXBwZXJzKG1ha2VVbmlxdWU8
SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGpzQ29udGV4dCkt
PnZtKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9i
ZVN0YWNrLmNwcAppbmRleCBhNzVmNThkYzE0NmIzYjY0OTVjZWIxNjdhZGY0ZGFiZmYwNmIwYzg5
Li5kYTQ3NzA1MWYzNDVlMDcxNjhmYzdkMDZlMGM3ZjUyNjMxMTg2ZTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAKQEAgLTEzNCw3ICsxMzQs
NyBAQCBQYWdlKiBTdGFjazo6ZW5zdXJlUGFnZUZvcih2b2lkKiBhZGRyZXNzKQogICAgIGlmIChM
SUtFTFkoaXQgIT0gbV9wYWdlcy5lbmQoKSkpCiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9
IGl0LT52YWx1ZS5nZXQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
Z2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNzKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNz
KTsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX3BhZ2VzLmFkZChiYXNlQWRkcmVzcywgV1RGTW92
ZShwYWdlKSk7CiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcAppbmRleCBkYmFhNGM5OTBhZDQ4ZjAzZjRhNzUxYzllNDBmOWY2YTZmZjA0ODM5Li4zY2M3
NWMzNGE1MTNmMmY2ZmI0OTYyMWFmYTg4N2FiYmUyNTk0MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTI0MSw3ICsxMjQxLDcgQEAgY2xhc3MgTG93
ZXJUb0FpciB7CiAgICAgdm9pZCBwcmludChWYWx1ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHByaW50TGlzdCA9IFByaW50ZXI6Om1ha2VQ
cmludFJlY29yZExpc3QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgYXV0byBwcmludFNwZWNpYWwg
PSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6
bWFrZV91bmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKKyAgICAgICAgYXV0
byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5h
ZGRTcGVjaWFsKG1ha2VVbmlxdWU8QWlyOjpQcmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKICAg
ICAgICAgSW5zdCBpbnN0KEFpcjo6UGF0Y2gsIG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50U3Bl
Y2lhbCkpOwogICAgICAgICBQcmludGVyOjphcHBlbmRBaXJBcmdzKGluc3QsIHN0ZDo6Zm9yd2Fy
ZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgICAgICBhcHBlbmQoV1RGTW92ZShpbnN0
KSk7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBjbGFzcyBMb3dlclRvQWlyIHsKICAgICB7CiAgICAg
ICAgIGlmICghZmllbGQpIHsKICAgICAgICAgICAgIGZpZWxkID0gc3RhdGljX2Nhc3Q8VCo+KAot
ICAgICAgICAgICAgICAgIG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8VD4oc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpKTsKKyAgICAgICAgICAgICAgICBt
X2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFy
Z3VtZW50cykuLi4pKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCmluZGV4IGZmY2IyZDRlMjcx
NDQyOTcwZTU0NjQzNjY3MGY3ZjI5ZGViMWFiMWMuLjJlY2NkYWMwNDllNjhkMTEzZTIzZjk3ZjI0
MzUzYTVkNGFhYTNiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNw
cApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIFByb2Nl
ZHVyZTo6UHJvY2VkdXJlKCkKICAgICA6IG1fY2ZnKG5ldyBDRkcoKnRoaXMpKQogICAgICwgbV9s
YXN0UGhhc2VOYW1lKCJpbml0aWFsIikKLSAgICAsIG1fYnlwcm9kdWN0cyhzdGQ6Om1ha2VfdW5p
cXVlPE9wYXF1ZUJ5cHJvZHVjdHM+KCkpCisgICAgLCBtX2J5cHJvZHVjdHMobWFrZVVuaXF1ZTxP
cGFxdWVCeXByb2R1Y3RzPigpKQogICAgICwgbV9jb2RlKG5ldyBBaXI6OkNvZGUoKnRoaXMpKQog
ewogICAgIG1fY29kZS0+c2V0TnVtRW50cnlwb2ludHMobV9udW1FbnRyeXBvaW50cyk7CkBAIC0z
MTEsMjggKzMxMSwyOCBAQCB2b2lkIFByb2NlZHVyZTo6ZGVsZXRlT3JwaGFucygpCiBEb21pbmF0
b3JzJiBQcm9jZWR1cmU6OmRvbWluYXRvcnMoKQogewogICAgIGlmICghbV9kb21pbmF0b3JzKQot
ICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWluYXRvcnM+KCp0aGlz
KTsKKyAgICAgICAgbV9kb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7
CiAgICAgcmV0dXJuICptX2RvbWluYXRvcnM7CiB9CiAKIE5hdHVyYWxMb29wcyYgUHJvY2VkdXJl
OjpuYXR1cmFsTG9vcHMoKQogewogICAgIGlmICghbV9uYXR1cmFsTG9vcHMpCi0gICAgICAgIG1f
bmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAg
ICAgICAgbV9uYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJkc0NGRyYgUHJvY2VkdXJl
OjpiYWNrd2FyZHNDRkcoKQogewogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCi0gICAgICAgIG1f
YmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKKyAg
ICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOwog
ICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CiB9CiAKIEJhY2t3YXJkc0RvbWluYXRvcnMmIFBy
b2NlZHVyZTo6YmFja3dhcmRzRG9taW5hdG9ycygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0Rv
bWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlx
dWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3YXJkc0RvbWlu
YXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1
cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsKIH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQq
IFByb2NlZHVyZTo6YWRkRGF0YVNlY3Rpb24oc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFzaXpl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVNlY3Rp
b24+IGRhdGFTZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhU2VjdGlvbj4oc2l6ZSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0aW9uPiBkYXRhU2VjdGlvbiA9IG1ha2VVbmlxdWU8
RGF0YVNlY3Rpb24+KHNpemUpOwogICAgIHZvaWQqIHJlc3VsdCA9IGRhdGFTZWN0aW9uLT5kYXRh
KCk7CiAgICAgbV9ieXByb2R1Y3RzLT5hZGQoV1RGTW92ZShkYXRhU2VjdGlvbikpOwogICAgIHJl
dHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAppbmRl
eCAzM2Y4YWJmZWZiYzFmOGY5MTY1NDVhM2JkY2ExOTZiMGNjNjZjMzk4Li5kNWQ2OWMzMGE1OTkx
NzVmMjgxNDgzNjI4NjM2ZmNiNzcwNjgwMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBDQ2FsbFNwZWNpYWwqIENvZGU6OmND
YWxsU3BlY2lhbCgpCiB7CiAgICAgaWYgKCFtX2NDYWxsU3BlY2lhbCkgewogICAgICAgICBtX2ND
YWxsU3BlY2lhbCA9IHN0YXRpY19jYXN0PENDYWxsU3BlY2lhbCo+KAotICAgICAgICAgICAgYWRk
U3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOworICAgICAgICAgICAg
YWRkU3BlY2lhbChtYWtlVW5pcXVlPENDYWxsU3BlY2lhbD4oKSkpOwogICAgIH0KIAogICAgIHJl
dHVybiBtX2NDYWxsU3BlY2lhbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHAKaW5kZXggZjM2YjliMmZlNjY4MTYwYjg4OTliMGM1MGIzMTk3ZDc1ODgyNGY4
MC4uOTVjYWEwMDRkOGViMzkyMzMwZTFjY2JiNjM5YTVjZWU3OWNiYzc5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBA
QCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9uKENvZGUmIGNvZGUpCiAgICAgICAgICAgICBkYXRh
TG9nKGNvZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxsb2Nh
dGVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3Rl
cnM+KGNvZGUpOworICAgICAgICBjb2RlLm1fZ2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycyA9
IG1ha2VVbmlxdWU8R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycz4oY29kZSk7CiAgICAgICAg
IGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzLT5wcmVwYXJlRm9yR2VuZXJhdGlv
bigpOwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3Rh
aXIuY3BwCmluZGV4IGVmMTU0NGMwN2JiMzJhOTAzN2YyY2I3MWUxNWU3NGE5YmU2MWJmOTQuLjNk
Y2EyOTY3ODhiMDAxMDY4ZTAxZjQyM2UxMTZjN2MyYTRlN2RhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8QjM6OkNvbXBpbGF0aW9uPiBjb21waWxlKEIzOjpQcm9jZWR1cmUmIHByb2MpCiAgICAgZ2Vu
ZXJhdGUocHJvYy5jb2RlKCksIGppdCk7CiAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwg
bnVsbHB0cik7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+
KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgIEZJTkFM
SVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgInRlc3RhaXIgY29tcGls
YXRpb24iKSwgcHJvYy5yZWxlYXNlQnlwcm9kdWN0cygpKTsKIH0KIApAQCAtMTg1NSw3ICsxODU1
LDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNhY2hlZFRlbXBSZWdpc3RlcnMoKQogICAgIHJvb3Qt
PmFwcGVuZChNb3ZlLCBudWxscHRyLCBBcmc6OmJpZ0ltbShiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+
KCZ0aGluZ3MpKSwgYmFzZSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogcGF0Y2hQb2ludDFSb290
ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVj
aWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVj
aWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUu
YWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICAv
LyBJbiBQYXRjaHBvaW50LCBMb2FkIHRoaW5nc1swXSAtPiB0bXAuIFRoaXMgd2lsbCBtYXRlcmlh
bGl6ZSB0aGUgYWRkcmVzcyBpbiB4MTcgKGRhdGFNZW1vcnlSZWdpc3RlcikuCiAgICAgQjM6OlBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDEgPSBwYXRjaFBvaW50MVJvb3QtPmFwcGVuZE5ldzxC
Mzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5
MzAsNyArMTkzMCw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkKCkKICAgICBHUFJSZWcg
cGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIocGlu
bmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5h
ZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAg
ICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbCht
YWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9j
ayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBC
Mzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHZvaWQgdGVzdEFy
Z3VtZW50UmVnUGlubmVkMigpCiAgICAgR1BSUmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50
R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVyKHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVj
aWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVl
PEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hw
b2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNw
ZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2ljQmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmRO
ZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBA
IC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIHRlc3RBcmd1bWVudFJlZ1Bpbm5lZDMoKQogICAgIEdQ
UlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3Rl
cihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBj
b2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkp
OworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVj
aWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNp
Y0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHBy
b2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmlu
ZGV4IGNlNTM4YWI0ODIzY2FiYjEyMzQwNzVjYzhmY2Q3ODAxNTI4YTBhMjcuLjFjMDcwZDE3OWVk
MzliZjZkZGYwMWUzYmIzM2NiNjQ5YzNmYjczNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIz
LmgKQEAgLTE4OSw3ICsxODksNyBAQCBleHRlcm4gTG9jayBjcmFzaExvY2s7CiBpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjb21waWxlUHJvYyhQcm9jZWR1cmUmIHByb2NlZHVy
ZSwgdW5zaWduZWQgb3B0TGV2ZWwgPSBPcHRpb25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpKQogewog
ICAgIHByb2NlZHVyZS5zZXRPcHRMZXZlbChvcHRMZXZlbCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q29tcGlsYXRpb24+KEIzOjpjb21waWxlKHByb2NlZHVyZSkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPihCMzo6Y29tcGlsZShwcm9jZWR1cmUpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCmluZGV4IGMxMDg1OWFjZWQzZGI3
OGI2NjQ5NzZhMDhiOGU1YjQ4ZDY1MmIyZjMuLjc3ZmI2NWRhMGI3YTA2YzdkNjU4YmFiZGI0ZTUx
MDhhNzkxN2VlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
Y2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNz
Q2FzZS5jcHAKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1w
bChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgc3RhdGUuc2V0U3Bp
bGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKHNwaWxsU3RhdGUpOwogCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghYWNjZXNzLmNhbGxMaW5rSW5mbygpKTsKLSAgICAgICAgICAgIGFjY2Vzcy5t
X2NhbGxMaW5rSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtJbmZvPigpOworICAgICAg
ICAgICAgYWNjZXNzLm1fY2FsbExpbmtJbmZvID0gbWFrZVVuaXF1ZTxDYWxsTGlua0luZm8+KCk7
CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBnZW5lcmF0ZWQgYSBwb2x5bW9ycGhpYyBj
YWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0byB0aGUgZ2V0dGVyCiAgICAgICAgICAgICAvLyBz
dHViLCB3aGljaCB0aGVuIGp1bXBlZCBiYWNrIHRvIHRoZSBtYWluIGNvZGUsIHRoZW4gd2UnZCBo
YXZlIGEgcmVhY2hhYmlsaXR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmNwcAppbmRleCAyYmQ5ZmU2NTE5OWQw
N2YxNzNlMzgzMGRjNzRlNDY3ZWI5ZDU0MWZjLi45MjU3ZmMyMjY2NTI5Zjg2MTM3ZDVkYWQ4Yzky
NDk3MTgzOTA0NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBj
bGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzIDogcHVibGljIEFjY2Vzc0Nh
c2VTbmlwcGV0UGFyYW1zOjpTbG93UAogICAgIHZvaWQgQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXM6
OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhl
bHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBvcGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBz
dGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdzKSBcCiAgICAgeyBcCiAgICAgICAgIENDYWxsSGVs
cGVyczo6TGFiZWwgdG8gPSBqaXQubGFiZWwoKTsgXAotICAgICAgICBtX2dlbmVyYXRvcnMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2xvd1BhdGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czxD
Q2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVyYXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZBX0FS
R1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24sIHJlc3VsdCwgYXJncykpOyBcCisgICAgICAgIG1f
Z2VuZXJhdG9ycy5hcHBlbmQobWFrZVVuaXF1ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJn
dW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUs
IF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9wZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKICAg
ICB9IFwKIAogU05JUFBFVF9TTE9XX1BBVEhfQ0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJBVElP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwCmluZGV4IDMzYmIwYzA2NjM1MzgxZTg5OGY2NWE4NzRmMWYzNmE4Yzk0ODIz
YWYuLjEwYzY1YmI5ZGQ3MDlhOWFmN2FiYTZjZWI4YTliNzM1OTc3MTY0MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CkBAIC02NSwxNSArNjUsMTUgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBs
KEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEluc3RydWN0aW9uU3RyZWFtJgogICAgIC8vIENyZWF0
ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2Vy
dmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKIAotICAgIGF1dG8gZW50cnkgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpF
bnRyeUJsb2NrKTsKLSAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKKyAgICBhdXRv
IGVudHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9j
azo6RW50cnlCbG9jayk7CisgICAgYXV0byBmaXJzdEJsb2NrID0gbWFrZVVuaXF1ZTxCeXRlY29k
ZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7CiAgICAgbGlua0Js
b2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKICAgICBhcHBlbmRCbG9jayhX
VEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmlyc3RC
bG9jay5nZXQoKTsKICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsKIAotICAg
IGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29k
ZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CisgICAgYXV0byBleGl0ID0gbWFrZVVuaXF1ZTxCeXRl
Y29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIAogICAgIGJv
b2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIApAQCAtODQsNyArODQsNyBAQCB2
b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7
CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEganVtcCB0YXJnZXQsIHRo
ZW4gaXQncyB0aGUgbGVhZGVyIG9mIGl0cyBvd24gYmFzaWMgYmxvY2suCiAgICAgICAgIGlmIChp
c0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwgbmV4
dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKLSAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oaW5zdHJ1Y3Rpb24pOworICAgICAgICAg
ICAgYXV0byBuZXdCbG9jayA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0cnVj
dGlvbik7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7CiAgICAgICAgICAg
ICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVkQmxv
Y2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcAppbmRleCBkOGRhYzE1ODVmYWIyYjk5OGMxZTVkODg3NTJiYTEyZGY2ZGFkYmRlLi4z
OTNmMTgyNGU0MWE0YmViNTE0YzYyYTY5NmYzM2E4MzcyNDk1Y2RkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMjY1LDcgKzI2NSw3
IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogCiB2b2lkIENhbGxMaW5r
SW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShjb25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYgc2h1
ZmZsZURhdGEpCiB7Ci0gICAgbV9mcmFtZVNodWZmbGVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxD
YWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZsZURhdGEpOworICAgIG1fZnJhbWVTaHVmZmxlRGF0
YSA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IGVmMWNhYmZhNzE4YjA4MGQ3ZjNlODYzN2Y5Zjk0ZjYwNTg2ZWU0ZTgu
LjM5YTIzYjRjN2Y0N2Q4ZmNlNWUzMGVlY2E1NTBlNzdkYWQzMTU4NmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMzM3LDcgKzEzMzcsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiBDb2RlQmxvY2s6
OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJlSklURGF0YVNsb3coY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJikKIHsKICAgICBBU1NFUlQoIW1faml0RGF0YSk7Ci0gICAgbV9qaXREYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxKSVREYXRhPigpOworICAgIG1faml0RGF0YSA9IG1ha2VVbmlxdWU8SklU
RGF0YT4oKTsKICAgICByZXR1cm4gKm1faml0RGF0YTsKIH0KIApAQCAtMTU1MCw3ICsxNTUwLDcg
QEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyYXJlQ2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2RlT2Zm
c2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2sKIHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZl
UmVnaXN0ZXJzKFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVSZWdpc3RlcnMpCiB7CiAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGVuc3VyZUpJVERhdGEobG9ja2VyKS5t
X2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRM
aXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsKKyAgICBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9j
YWxsZWVTYXZlUmVnaXN0ZXJzID0gbWFrZVVuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oY2Fs
bGVlU2F2ZVJlZ2lzdGVycyk7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVn
aXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJBdE9m
ZnNldExpc3QpCkBAIC0xNzkwLDcgKzE3OTAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZW5zdXJlQ2F0
Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZU9mZnNldFNsb3coY29uc3QgT3BDYXRjaAog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyArK2kpCiAgICAgICAgIGxp
dmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOwogCi0gICAg
YXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgYXV0byBwcm9maWxlcyA9IG1ha2VVbmlx
dWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmlsZXMtPm1fc2l6ZTsgKytpKQog
ICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJh
bmRzW2ldLm9mZnNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCmluZGV4IDg3MDY4YmE2NWRkODVjMjNmYmU0YTQ5MGU5NzRhNzI4MWYyNTYwNGMuLjMxNDM4
ZTBhYzUwNjliMjc0OTY5ODg4NmFiMTEyMDA3NmJjYjczYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTk0Myw3ICs5NDMsNyBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKSB7Ci0gICAgICAgICAgICBhdXRv
IHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIGF1
dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRjaFByb2ZpbGVzIGNhbiBiZSB0b3VjaGVkIGZyb20g
Y29tcGlsZXIgdGhyZWFkcy4KICAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEZNb3ZlKHJhcmVE
YXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
RkdFeGl0UHJvZmlsZS5jcHAKaW5kZXggMmQ5NDMxY2YwYjE0NGZhM2EyYzIyMWE2NmU5NDA3MGM3
NzUwZTBlMC4uYjFhMDFmZmE0ZDkzNDhmZWNiMjRjOTY4OGJjODAwNTJmOTM4ODZhNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBj
b25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgIC8vIElmIHdlJ3ZlIG5ldmVyIHNlZW4g
YW55IGZyZXF1ZW50IGV4aXRzIHRoZW4gY3JlYXRlIHRoZSBsaXN0IGFuZCBwdXQgdGhpcyBzaXRl
CiAgICAgLy8gaW50byBpdC4KICAgICBpZiAoIXByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcykg
ewotICAgICAgICBwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4oKTsKKyAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50
RXhpdFNpdGVzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CiAgICAg
ICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcy0+YXBwZW5kKHNpdGUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCmluZGV4IDRmNDhh
MWQ2Yzk4NzIyZTVhYzJlY2U4N2U1MDQwMjMyZjlhNWQ2YjEuLjRmYjExNTczMDAzYjUyZWZkOWE4
NjZmYjNiZGY3NzUwOThjZWZhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBAIC01
MCw3ICs1MCw3IEBAIHZvaWQgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlv
bkRpZENvbXBsZXRlKENvZGVCbG9jayosIENvZGVCbG9jayosCiBWZWN0b3I8RGVmZXJyZWRTb3Vy
Y2VEdW1wPiYgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjplbnN1cmVEZWZlcnJlZFNvdXJj
ZUR1bXAoKQogewogICAgIGlmICghbV9kZWZlcnJlZFNvdXJjZUR1bXApCi0gICAgICAgIG1fZGVm
ZXJyZWRTb3VyY2VEdW1wID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VE
dW1wPj4oKTsKKyAgICAgICAgbV9kZWZlcnJlZFNvdXJjZUR1bXAgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxEZWZlcnJlZFNvdXJjZUR1bXA+PigpOwogICAgIHJldHVybiAqbV9kZWZlcnJlZFNvdXJjZUR1
bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcAppbmRleCBkYjlhZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJiNjgzZGRlYWQ2Li5k
ZjRkNzdjZTNmNjNiNTIwMDc1NTQ0YzQxYTE2Y2IyMzFkN2RmYTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC0yNDMsNyArMjQz
LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRo
b3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2FzZTo6R2V0dGVyOiB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxs
TGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBtYWtl
VW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nlc3MuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4o
KS5jYWxsTGlua0luZm8oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgKmNhbGxMaW5rU3Rh
dHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCAqY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVE
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
VmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuY3BwCmluZGV4IGZjMWY0NjBkZTk2NTQxZDhmYTA5OWNiYjQ1ZjIzMDljMmEzMzM4MGYuLmVk
OGQ0OTNmN2VlNmYxZGEyYjkwOWFkNTdjNjI3NzE4MTNjMmQ2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcApAQCAtNzIsNyArNzIs
NyBAQCBHZXRCeUlkVmFyaWFudCYgR2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBHZXRC
eUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9jdXN0b21BY2Nlc3NvckdldHRlciA9IG90aGVyLm1f
Y3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAgbV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2RvbUF0
dHJpYnV0ZTsKICAgICBpZiAob3RoZXIubV9jYWxsTGlua1N0YXR1cykKLSAgICAgICAgbV9jYWxs
TGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2Nh
bGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IG1ha2VVbmlxdWU8Q2Fs
bExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKICAgICBlbHNlCiAgICAgICAg
IG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRyOwogICAgIHJldHVybiAqdGhpczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmls
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwCmluZGV4IDA5MjlkNmZiNDEyNjc0ZWQ3ZjIwNDA0NWZiNDI1ZWI3ZDM4ZDNjOTMu
LjZlZWIxNDViMzM3OTY2MmFmMWMxNTAwMTkwNzY3MjdhMzllZTJiZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9m
aWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29tcHJl
c3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxlSG9sZGVyOjphZGQoCiAgICAgY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkKIHsK
ICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKKyAgICAgICAgbV9kYXRhID0gbWFrZVVuaXF1
ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4oKTsKICAgICBlbHNlIHsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGF0YS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIGlmIChtX2RhdGEtPmF0KGkpLmtleSgpID09IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKaW5kZXggYjQ5ZTRl
MjQyZTUyZjA4MTMxNWU0OGZiMWUxYmNjMjk3ZTUyOGFlMC4uYTFlY2I5NGRkMGQxODY3MDg2MzUy
ZjUyYjViNThjMzE5M2VlY2ZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3Mg
UG9seVByb3RvQWNjZXNzQ2hhaW4gewogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0Fj
Y2Vzc0NoYWluPiBjbG9uZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRoaXMpOwogICAgIH0KIAogICAgIGNvbnN0IFZlY3Rv
cjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25zdCB7IHJldHVybiBtX2NoYWluOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcApp
bmRleCAyMmY0NTU4MTRiODRhZjRmZTc0Y2FmMjM0MDFkMzBhZGFkYWU1YzZlLi4zYjMwMjMzOWYw
MzUwZGFjNDI4ZjNmMDRjYzczNTJhM2FlNTIxYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKQEAgLTYxNiw3ICs2MTYs
NyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
KAogICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVhdGVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgY29k
ZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9NYXJrLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlv
bkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9yRXhjZXB0aW9uSGFuZGxpbmcpOwogICAgIG1fd2F0
Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRlLndl
YWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAgICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53
ZWFrUmVmZXJlbmNlcykpOworICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxW
ZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2Vz
KSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNjZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAg
IGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5jb2RlKCksICJcbiIpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCmluZGV4IGMy
ZDk1MzIwY2ViZDU2ZGJkYzkzZWViZDZjMzE0MGE3ZGY3Y2MyMDkuLmQ2NDJiY2NmZTc5NzY2YzUy
NzliYmM4MTA4NzAxZWI3Zjg1ODI0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbygKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJbmxpbmVhYmxlOiB7
CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2Fs
bExpbmtTdGF0dXMgPQotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxD
YWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VVbmlxdWU8Q2Fs
bExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLmNhbGxMaW5r
SW5mbygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY2FsbExpbmtTdGF0dXMgPSBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2Nr
ZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlua0luZm8sIGNhbGxFeGl0U2l0ZURhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKaW5k
ZXggNWQ2YjI5MDQ1Y2E2NzVjNTZmYTcxZDU0NzVhMTE1YjJkZjZmM2M1ZS4uNzJjNmNhYzg0ZmIy
N2JjZjVlNDE3YzQ5NmU2MzYyZjcyZTZjMGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFB1dEJ5
SWRWYXJpYW50JiBQdXRCeUlkVmFyaWFudDo6b3BlcmF0b3I9KGNvbnN0IFB1dEJ5SWRWYXJpYW50
JiBvdGhlcikKICAgICBtX2NvbmRpdGlvblNldCA9IG90aGVyLm1fY29uZGl0aW9uU2V0OwogICAg
IG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtTdGF0
dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5r
U3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtTdGF0
dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7
CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxMaW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICByZXR1
cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAKaW5kZXggOTZkMjJlY2ZhMGE0Yzc1NmVkZmY2MWYwMDEzZjcyNThlN2Qz
ZmJkNS4uNTNmMjA4YmNhZGVkM2RlYTJkZWUxOGEwZTg5NjA1YzQ5MGExOTViZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBSZWNvcmRlZFN0YXR1c2VzOjpSZWNvcmRlZFN0YXR1c2VzKFJlY29y
ZGVkU3RhdHVzZXMmJiBvdGhlcikKIAogQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6
OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IENh
bGxMaW5rU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFr
ZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKICAgICBDYWxsTGlua1N0YXR1cyogcmVz
dWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGNhbGxzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihj
b2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
NTMsNyArNTMsNyBAQCBDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkQ2FsbExp
bmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbgogCiBHZXRCeUlkU3RhdHVzKiBS
ZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0
YXR1c1B0ciA9IG1ha2VVbmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKICAgICBHZXRCeUlk
U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgZ2V0cy5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTYxLDcgKzYxLDcgQEAgR2V0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6
YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAogICAgIAogUHV0
QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2Rl
T3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAg
YXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7
CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7
CiAgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIHB1dHMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwog
ICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw3ICs2OSw3IEBAIFB1dEJ5SWRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwKIAogSW5CeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRJbkJ5SWRTdGF0dXMoY29u
c3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgSW5CeUlkU3RhdHVzJiBzdGF0dXMpCiB7
Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluQnlJZFN0YXR1cz4oc3Rh
dHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8SW5CeUlkU3RhdHVzPihzdGF0
dXMpOwogICAgIEluQnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGlu
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcApp
bmRleCAzMGExZjA1NTI1OWUzZGVkMWE3MTY4ZWUzNTI2ZjcyYzA4NGJlZTVhLi5mY2MyOTExODAy
NDRlMGIzMjI5ZTJmZDc2MzAwN2JlNzlhODc0MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQqIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlCiAg
ICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYga2V5KQogewogICAgIGlmICghaG9sZGVyUmVmKQotICAgICAgICBob2xkZXJSZWYgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJsb2Nr
LCBzdHViSW5mbyk7CisgICAgICAgIGhvbGRlclJlZiA9IG1ha2VVbmlxdWU8V2F0Y2hwb2ludHNP
blN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxvY2ssIHN0dWJJbmZvKTsKICAgICBlbHNlIHsKICAg
ICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9jb2RlQmxvY2sgPT0gY29kZUJsb2NrKTsKICAgICAg
ICAgQVNTRVJUKGhvbGRlclJlZi0+bV9zdHViSW5mbyA9PSBzdHViSW5mbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRl
eCA3MjIyZDQ4MmFkMWU1ZTI4NmNlZjU5ZDRmZjFlMWY1ZWIwNzEwNzhkLi40OTE5NWQxNTcyMWQy
Y2RhNGY3NDhhZThkYmUyYWYwMDlhMjhhN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTE2MCw3ICsxNjAsNyBA
QCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNl
KAogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+
IGFjY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CisgICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2VzcyA9IG1ha2VVbmlx
dWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4sIDI+IGFjY2Vzc0Nhc2VzOwogICAgICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAppbmRleCBlMDA2ZDE2YjliOGEwZmMzMGYwNDMzY2RlNjAyZWNjM2IxNjhkNDJl
Li4yYzlhMGIzMDFlYjA5OGUxMTVlZjFlMzZiMTI3YmUyOWUzYWJkYTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAg
LTQxNCw3ICs0MTQsNyBAQCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIFVubGlua2VkQ29kZUJs
b2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhDb2RlQmxvY2sqIGNvZAogICAgICAgICBpZiAoIW1f
bGl2ZW5lc3MpIHsKICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgY2hhbmNlIHR3byBjb21waWxl
ciB0aHJlYWRzIHJhY2VkIHRvIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAgICAvLyBHcmFiYmlu
ZyB0aGUgbG9jayBhYm92ZSBkZWZlbmRzIGFnYWluc3QgY29tcHV0aW5nIGxpdmVuZXNzIHR3aWNl
LgotICAgICAgICAgICAgbV9saXZlbmVzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOworICAgICAgICAgICAgbV9saXZlbmVzcyA9IG1ha2VV
bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOwogICAgICAgICB9CiAg
ICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAppbmRleCA0MzcwOTUxOWViNjE2ZTI2NTEwNmVmMWQ1NTI5NjE3ZDY0NWM5
YmM5Li41MTI1MzZjMGQ0NDg1N2E0Y2E3NmU4MTNmZTE0ODAzYTk3M2ZmYTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAt
NDAyLDcgKzQwMiw3IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gbG9ja0R1cmluZ01hcmtpbmcoKmhlYXAoKSwgY2VsbExvY2soKSk7Ci0gICAgICAgICAg
ICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgICAg
IG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJhcmVEYXRhPigpOwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBmYmVjOWY3MmNhMmZkMWExOGJhY2IwNzNl
Njg3MjU0YjcwYjllYmUxLi40OWQ5ZDJmZDNlNmZlOWZiNGI1MjdmNjc3YWJkNWJkNGE1MTIyNmNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJiB2bSkK
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdygpCiB7CiAgICAgQVNTRVJUKCFtX3JhcmVEYXRh
KTsKLSAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICBt
X3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJlRGF0YT4oKTsKICAgICByZXR1cm4gKm1fcmFyZURh
dGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBlOTc2ODZhYTNlZGNkZDhkM2Y5YjU3YzRhNmQxMjNi
YWM5Y2IzOTg3Li4xNzhhNjFkZjY5MTMzYWZkY2MxMjcyOGNiZmQ5NmViMzlmNDJhZWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRD
b2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9kZSwgZW52aXJvbm1lbnQpOworICAgICAgICAgICAg
YXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZt
LCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywgY29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVu
dCk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGJ5dGVjb2RlR2VuZXJhdG9yLT5nZW5lcmF0
ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVD
b21waWxlVGltZXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBmMjBhMzU3ZWNiNzNhYTdl
ZmU0Y2IxMDdkMWNjYjdlOWRjOTAwMzM5Li4yNzY1NjkyNmE4ZDI5ZDI3ZWJlZWFhOWZmZGNhMjAz
Y2MyNWZhMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC01OCw3ICs1OCw3IEBAIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpBYnN0cmFjdEludGVycHJldGVyKEdyYXBo
JiBncmFwaCwgQWJzdHJhCiAgICAgLCBtX3N0YXRlKHN0YXRlKQogewogICAgIGlmIChtX2dyYXBo
Lm1fZm9ybSA9PSBTU0EpCi0gICAgICAgIG1fcGhpQ2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVl
PFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKKyAgICAgICAgbV9waGlDaGlsZHJlbiA9IG1ha2VVbmlx
dWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFj
dFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggNWIw
Yzg3ZmZlZTUyYjJhOWU1MDExZTViZjhjNzFjMDEyOTQyZWZkMC4uZTY4M2E4MjFiMjJiY2ZlNTZi
MzllZjQxYTExZjFjMmRkYmQ2NjE2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikK
ICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaygp
KQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAg
ICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkKKyAgICAsIG1fc3Nh
Q0ZHKG1ha2VVbmlxdWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwo
MCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0
dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTg2LDgg
Kzg2LDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAKICAgICBtX2hh
c0RlYnVnZ2VyRW5hYmxlZCA9IG1fcHJvZmlsZWRCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdn
aW5nT3Bjb2RlcygpIHx8IE9wdGlvbnM6OmZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24o
KTsKICAgICAKLSAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dJbmRl
eGluZz4oKnRoaXMpOwotICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworICAgIG1faW5kZXhpbmdDYWNoZSA9
IG1ha2VVbmlxdWU8Rmxvd0luZGV4aW5nPigqdGhpcyk7CisgICAgbV9hYnN0cmFjdFZhbHVlc0Nh
Y2hlID0gbWFrZVVuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhpcyk7CiAKICAgICBy
ZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIHRoaXMt
PnN0cmluZ1N0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgR3JhcGg6
OmxpdmVuZXNzRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIGlmIChpdGVyICE9IG1fYnl0
ZWNvZGVMaXZlbmVzcy5lbmQoKSkKICAgICAgICAgcmV0dXJuICppdGVyLT52YWx1ZTsKICAgICAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gc3Rk
OjptYWtlX3VuaXF1ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gbWFrZVVuaXF1ZTxGdWxsQnl0ZWNv
ZGVMaXZlbmVzcz4oKTsKICAgICBjb2RlQmxvY2stPmxpdmVuZXNzQW5hbHlzaXMoKS5jb21wdXRl
RnVsbExpdmVuZXNzKGNvZGVCbG9jaywgKmxpdmVuZXNzKTsKICAgICBGdWxsQnl0ZWNvZGVMaXZl
bmVzcyYgcmVzdWx0ID0gKmxpdmVuZXNzOwogICAgIG1fYnl0ZWNvZGVMaXZlbmVzcy5hZGQoY29k
ZUJsb2NrLCBXVEZNb3ZlKGxpdmVuZXNzKSk7CkBAIC0xMTE1LDcgKzExMTUsNyBAQCBCeXRlY29k
ZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKGl0
ZXIgIT0gbV9ieXRlY29kZUtpbGxzLmVuZCgpKQogICAgICAgICByZXR1cm4gKml0ZXItPnZhbHVl
OwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPiBraWxscyA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxscz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVLaWxscz4ga2lsbHMgPSBtYWtlVW5pcXVlPEJ5dGVjb2RlS2lsbHM+KCk7CiAgICAgY29kZUJs
b2NrLT5saXZlbmVzc0FuYWx5c2lzKCkuY29tcHV0ZUtpbGxzKGNvZGVCbG9jaywgKmtpbGxzKTsK
ICAgICBCeXRlY29kZUtpbGxzJiByZXN1bHQgPSAqa2lsbHM7CiAgICAgbV9ieXRlY29kZUtpbGxz
LmFkZChjb2RlQmxvY2ssIFdURk1vdmUoa2lsbHMpKTsKQEAgLTE1NTMsNyArMTU1Myw3IEBAIENQ
U0NGRyYgR3JhcGg6OmVuc3VyZUNQU0NGRygpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgaWYgKCFtX2Nwc0NGRykKLSAg
ICAgICAgbV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4oKnRoaXMpOworICAgICAg
ICBtX2Nwc0NGRyA9IG1ha2VVbmlxdWU8Q1BTQ0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nw
c0NGRzsKIH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgQ1BTRG9taW5hdG9ycyYgR3JhcGg6OmVu
c3VyZUNQU0RvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0Eg
JiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwogICAgIGlmICghbV9jcHNEb21pbmF0b3JzKQotICAg
ICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0RvbWluYXRvcnM+KCp0
aGlzKTsKKyAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxDUFNEb21pbmF0b3Jz
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE1NjksNyAr
MTU2OSw3IEBAIFNTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24p
OwogICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQotICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9zc2FEb21p
bmF0b3JzID0gbWFrZVVuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X3NzYURvbWluYXRvcnM7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIENQU05hdHVyYWxMb29w
cyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29wcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9m
b3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CiAgICAgZW5zdXJlQ1BTRG9taW5h
dG9ycygpOwogICAgIGlmICghbV9jcHNOYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fY3BzTmF0dXJh
bExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICAg
ICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1ODcsNyArMTU4Nyw3
IEBAIFNTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZVNTQU5hdHVyYWxMb29wcygpCiAgICAg
UkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgZW5zdXJlU1NBRG9taW5hdG9ycygp
OwogICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fc3NhTmF0dXJhbExvb3Bz
ID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICAgICAgbV9z
c2FOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVlPFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOwogICAg
IHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKQEAgLTE1OTYsNyArMTU5Niw3IEBAIEJh
Y2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiAgICAgLy8gV2UgY291bGQg
ZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSB0byB3b3JrIG92ZXIgQ1BTLCBidXQgdG9k
YXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4KICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0g
U1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKLSAgICAgICAgbV9iYWNrd2FyZHNDRkcg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3
YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X2JhY2t3YXJkc0NGRzsKIH0KIApAQCAtMTYwNCw3ICsxNjA0LDcgQEAgQmFja3dhcmRzRG9taW5h
dG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0b3JzKQot
ICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJk
c0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbWFr
ZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3
YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE2MTIsNyArMTYxMiw3IEBAIENvbnRyb2xFcXVpdmFs
ZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcykKLSAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsK
KyAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG1ha2VVbmlxdWU8Q29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKaW5kZXggNjM5MDQzZTllMjdmYmUwZTBiOTJhYjQ2YTY2OWJlMTQxMDUwMzM3
MC4uZjJiNjY0MDJlM2FkMGU3MmRmY2UwNWI2NWFmM2ZjOTI2ZDAwOWRhZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
SklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdyYXBoJiBkZmcpCiAgICAgLCBtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlcihkZmcubV92bSkKIHsKICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkRHVtcERp
c2Fzc2VtYmx5KCkgfHwgbV9ncmFwaC5tX3ZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlcikpCi0gICAg
ICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNhc3NlbWJsZXI+KGRmZyk7
CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxEaXNhc3NlbWJsZXI+KGRmZyk7
CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgbV9qaXRDb2RlLT50aWVyVXBJbkxvb3BIaWVyYXJj
aHkgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnRpZXJVcEluTG9vcEhpZXJhcmNoeSgpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIHRpZXJVcEJ5dGVjb2RlIDogbV9ncmFwaC5tX3BsYW4udGllclVwQW5k
T1NSRW50ZXJCeXRlY29kZXMoKSkKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEpJVENvbXBpbGVy
OjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0Nv
ZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxkTWFwcGluZygpKQotICAgICAgICBtX2NvZGVCbG9j
ay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1h
cD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsKKyAg
ICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0Nv
ZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBsaW5rQnVm
ZmVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklUQ29tcGls
ZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzdGFja092ZXJmbG93KQpAQCAtMzYz
LDcgKzM2Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKLSAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjpt
YWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3BlY3VsYXRpdmUgPSBt
YWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAKICAgICAvLyBQbGFudCBhIGNoZWNr
IHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCiAgICAg
SnVtcExpc3Qgc3RhY2tPdmVyZmxvdzsKQEAgLTQwMiw5ICs0MDIsOSBAQCB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlKCkKICAgICBtX3NwZWN1bGF0aXZlLT5jcmVhdGVPU1JFbnRyaWVzKCk7CiAg
ICAgc2V0RW5kT2ZDb2RlKCk7CiAKLSAgICBhdXRvIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWls
KTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBt
X2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci0+
ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6
ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7Cisg
ICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFs
aXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAg
LTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogICAgIGRpc2Fz
c2VtYmxlKCpsaW5rQnVmZmVyKTsKIAotICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihz
dGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCisgICAgbV9ncmFwaC5tX3BsYW4uc2V0Rmlu
YWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPigKICAgICAgICAgbV9ncmFwaC5tX3BsYW4s
IG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGxpbmtCdWZmZXIpKSk7CiB9CiAK
QEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQog
ICAgIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKTsKIAogICAgIC8vID09PSBGdW5jdGlvbiBi
b2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KLSAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOworICAgIG1fc3BlY3VsYXRpdmUgPSBtYWtlVW5p
cXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CiAgICAgY29tcGlsZUJvZHkoKTsKICAgICBzZXRF
bmRPZk1haW5QYXRoKCk7CiAKQEAgLTUwNyw5ICs1MDcsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpj
b21waWxlRnVuY3Rpb24oKQogICAgIHNldEVuZE9mQ29kZSgpOwogCiAgICAgLy8gPT09IExpbmsg
PT09Ci0gICAgYXV0byBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigq
dGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgYXV0byBsaW5r
QnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENv
bXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRl
KCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlx
dWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBoLm1fcGxhbikpOworICAgICAgICBtX2dyYXBoLm1f
cGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9w
bGFuKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbGluaygqbGlua0J1ZmZlcik7CkBA
IC01MjUsNyArNTI1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIAog
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVjayA9
IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4oYXJpdHlDaGVjayk7CiAKLSAg
ICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6
ZXI+KAorICAgIG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihtYWtlVW5pcXVlPEpJVEZpbmFs
aXplcj4oCiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwo
KSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0aEFyaXR5Q2hlY2spKTsKIH0KIApAQCAtNTUwLDcg
KzU1MCw3IEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGFudChOb2Rl
KiBub2RlKQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIGlmICghbV9ncmFwaC5t
X2RvdWJsZUNvbnN0YW50cykKLSAgICAgICAgbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFnPGRvdWJsZT4+KCk7CisgICAgICAgIG1fZ3JhcGgubV9kb3VibGVD
b25zdGFudHMgPSBtYWtlVW5pcXVlPEJhZzxkb3VibGU+PigpOwogCiAgICAgZG91YmxlKiBhZGRy
ZXNzSW5Db25zdGFudFBvb2wgPSBtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzLT5hZGQoKTsKICAg
ICAqYWRkcmVzc0luQ29uc3RhbnRQb29sID0gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5jcHAKaW5kZXggYmI4MDAy
NzRkZGNiNjMwMzQ3ODM3MzdlMzhhZDFlNjFlOWM1ZWEwNC4uYTk0NDA0NzQ1OTI1MjE4NDViYTMx
ODgzN2IxM2I5ZjRhMzE3ZWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBjbGFz
cyBMaXZlbmVzc0FuYWx5c2lzUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAsIG1fbGl2
ZUF0VGFpbChtX2dyYXBoKQogICAgIHsKICAgICAgICAgbV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUt
PnJlY29tcHV0ZSgpOwotICAgICAgICBtX3dvcmtzZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtz
ZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1JbmRpY2VzKCkpOworICAgICAgICBtX3dv
cmtzZXQgPSBtYWtlVW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1J
bmRpY2VzKCkpOwogICAgIH0KIAogICAgIGJvb2wgcnVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCmluZGV4IDM0YWNiYzFmZTIyZmI3N2YzNTgwZGEzNjc5OWM4MjE0YmViYzlk
NjIuLmI2OTQ5YWEwMzVjMTJmYTc0OWQ1ODBjYzdjMmFlY2NhOGQ5MmMxNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIFBsYW46OkNvbXBp
bGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICBpZiAobV9tb2RlID09
IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAgICAgICBib29sIHJlc3VsdCA9IHBlcmZvcm1PU1JF
bnRyeXBvaW50Q3JlYXRpb24oZGZnKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
ICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlz
KTsKKyAgICAgICAgICAgIG1fZmluYWxpemVyID0gbWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+
KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVybiBGYWlsUGF0aDsKICAgICAgICAgfQogICAgICAg
ICBSVU5fUEhBU0UocGVyZm9ybUNQU1JldGhyZWFkaW5nKTsKQEAgLTM5OCw3ICszOTgsNyBAQCBQ
bGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgY2Fz
ZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgaWYg
KEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZUTDo6Q2Fubm90Q29tcGlsZSkgewotICAgICAgICAg
ICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMp
OworICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4o
KnRoaXMpOwogICAgICAgICAgICAgcmV0dXJuIEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtNDc4LDcgKzQ3OCw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxl
SW5UaHJlYWRJbXBsKCkKICAgICAgICAgUlVOX1BIQVNFKHBlcmZvcm1XYXRjaHBvaW50Q29sbGVj
dGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoRlRMOjpjYW5Db21waWxlKGRmZykgPT0gRlRM
OjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAgICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91
bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9
IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4g
RmFpbFBhdGg7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCmluZGV4IDg3MTU5NWIxZmYyNTliZWU0NGM3MWNl
MDNkN2Q4ZThiZDY0MzY1MzcuLjUzNGQ2NGI1MzhmYTE4MGFmNDhlODlkNGY4MjYwMmZiNDVjOTIx
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNp
b25QaGFzZS5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCBjbGFzcyBTU0FDb252ZXJzaW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5jbGVh
cigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwogICAgICAgICAg
ICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwotICAgICAgICAgICAgYmxvY2stPnNzYSA9
IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOworICAgICAgICAg
ICAgYmxvY2stPnNzYSA9IG1ha2VVbmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwog
ICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZW50cnlwb2ludEluZGV4VG9B
cmd1bWVudHNCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oCmluZGV4IDdjZjQyNTIxYTYyMTE3OGZmODUxMmFmZjlmZmZhMzI1MjAw
MjI0ZDYuLmNkY2RhYTYwZDg5OGEzYjY2ZDdiMjk4ZjY2ODE4Yzc5ZGM0OGM4NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTE5
Myw3ICsxOTMsNyBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBz
bG93UGF0aENhbGwoCiAgICAgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVudCwKICAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJn
dW1lbnRzLi4uIGFyZ3VtZW50cykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxs
UmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlw
ZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4uPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
bFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5
cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4uLj4+KAogICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0
aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50LCByZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9CiAK
QEAgLTIzOSw3ICsyMzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUg
RGVzdGluYXRpb25UeXBlLCB0eXBlbmFtZSBTb3VyY2VUeXBlLCB1bnNpZwogaW5saW5lIHN0ZDo6
dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhNb3ZlKAogICAgIEp1bXBUeXBl
IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFNvdXJjZVR5cGUgc291cmNlW251bWJlck9mQXNz
aWdubWVudHNdLCBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25bbnVtYmVyT2ZBc3NpZ25tZW50
c10pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5l
cmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgbnVtYmVyT2ZBc3Np
Z25tZW50cz4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJh
dG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIG51bWJlck9mQXNzaWdu
bWVudHM+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbiwgc291cmNlKTsKIH0KIApA
QCAtMjQ5LDcgKzI0OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0
b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5WzFdID0geyBz
b3VyY2UgfTsKICAgICBEZXN0aW5hdGlvblR5cGUgZGVzdGluYXRpb25BcnJheVsxXSA9IHsgZGVz
dGluYXRpb24gfTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0
aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGluYXRpb25UeXBlLCBTb3VyY2VUeXBlLCAxPj4oCisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUs
IERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMT4+KAogICAgICAgICBmcm9tLCBqaXQsIGRl
c3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KTsKIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsK
ICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5WzJdID0geyBzb3VyY2UxLCBzb3VyY2UyIH07CiAg
ICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0aW9uQXJyYXlbMl0gPSB7IGRlc3RpbmF0aW9uMSwg
ZGVzdGluYXRpb24yIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5nU2xv
d1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMj4+
KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBU
eXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJjZVR5cGUsIDI+PigKICAgICAgICAgZnJvbSwgaml0
LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMjA3YTliNjliNDg4NTVi
NTZiMWY4MzcyMDY1MWMyYmM3NmUzOGY5ZS4uNzBlNzA1ZDc4NDkzMmQ5ZDNmYzI3MjQ5MTMyZWZk
M2UzZTVkNjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZQog
ICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0aGF0IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdl
IHBvaW50ZXIsIGFuZCB0aGF0J3MKICAgICAvLyB3aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFs
bG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdpdmVzIG1lLiBJdCdzIGEgbG90CiAgICAgLy8gb2Yg
d29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkuIDotLwotICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2Fs
bEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLAogICAgICAg
ICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkpOwogCkBAIC04OTksNyArODk5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VSZWcsIEdQUlJl
ZyBwcm9wZXJ0eVJlZykKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBTbG93Rm9yVW53YW50
ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAgICB9CiAgICAgCi0g
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxBcnJheWlmeVNsb3dQYXRo
R2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPEFycmF5aWZ5
U2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93UGF0aCwgdGhpcywgbm9kZSwgYmFzZVJl
ZywgcHJvcGVydHlSZWcsIHRlbXBHUFIsIHN0cnVjdHVyZUdQUikpOwogICAgIAogICAgIG5vUmVz
dWx0KG1fY3VycmVudE5vZGUpOwpAQCAtMjI0MiwxMCArMjI0MiwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlKiBub2RlKQogICAgICAgICB9CiAg
ICAgICAgIGlmIChwcm90b3R5cGVDaGFpbklzU2FuZSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJp
bmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAog
ICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhzY3JhdGNoUmVn
KSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICNlbHNlCi0gICAgICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2Vu
ZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2Fu
ZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAgICAgICAgIG91dE9m
Qm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdSZWcsIHNjcmF0Y2hSZWcpLAogICAg
ICAgICAgICAgICAgIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAjZW5kaWYKQEAgLTc2MTksNyAr
NzYxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVu
dHMoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9u
Q3JlYXRlRGlyZWN0QXJndW1lbnRzLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwKICAgICAgICAgICAg
ICAgICBrbm93bkxlbmd0aCwgbWluQ2FwYWNpdHkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBh
dXRvIGdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50
c1Nsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYXV0byBnZW5lcmF0b3IgPSBtYWtlVW5pcXVl
PENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAg
ICBzbG93UGF0aCwgdGhpcywgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGxlbmd0aEdQUiwgbWluQ2Fw
YWNpdHkpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKGdlbmVyYXRvcikp
OwogICAgIH0KQEAgLTg0MzksNyArODQzOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0Lmp1bXAoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
dGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZh
cmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJp
YWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgdGVtcFZhbHVlLCBzaXplR1BS
LCBzdG9yYWdlUmVzdWx0R1BSKSk7CiAgICAgfQogCkBAIC05MTM1LDcgKzkxMzUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJlQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGNl
bGxHUFIsIEdQUlJlZyB0ZW1wRwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSOwogICAgICAg
ICAKICAgICAgICAgaWYgKHRlbXBHUFIgPT0gSW52YWxpZEdQUlJlZykgewotICAgICAgICAgICAg
c3RydWN0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRoaXMpOworICAgICAg
ICAgICAgc3RydWN0dXJlID0gbWFrZVVuaXF1ZTxHUFJUZW1wb3Jhcnk+KHRoaXMpOwogICAgICAg
ICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLT5ncHIoKTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSB0ZW1wR1BSOwpAQCAtMTMxNzYsNyArMTMxNzYsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgbV9qaXQubXV0YXRvckZlbmNlKCptX2pp
dC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJp
YWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsCiAg
ICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBo
KCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1
cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmll
ckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGZhMzk2ZjRmMTkyYThiYjRhZWY5OWQwMzcx
OTI0YTJhMzhjNjQ1ZTguLmJhNjEyOGVmZTliYjM2OGZlM2IwNjYyM2I1MWVlM2VlYWQzYzRmZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC05NSw4ICs5NSw4IEBAIGNsYXNzIFN0b3JlQmFy
cmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBQaGFzZU1v
ZGU6Okdsb2JhbDogewogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBt
X2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogCi0gICAgICAgICAgICBtX3N0YXRlID0gc3RkOjptYWtl
X3VuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0ZT4obV9ncmFwaCk7Ci0gICAgICAgICAgICBtX2lu
dGVycHJldGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VB
YnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1fc3RhdGUpOworICAgICAgICAgICAgbV9zdGF0ZSA9
IG1ha2VVbmlxdWU8SW5QbGFjZUFic3RyYWN0U3RhdGU+KG1fZ3JhcGgpOworICAgICAgICAgICAg
bV9pbnRlcnByZXRlciA9IG1ha2VVbmlxdWU8QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJz
dHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0YXRlKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgbV9pc0NvbnZlcmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgCkBAIC0xMDcsOCArMTA3LDgg
QEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgLy8gdG93YXJkcyBiZWxpZXZpbmcgdGhhdCBhbGwgbm9kZXMgbmVlZCBiYXJyaWVy
cy4gIk5lZWRpbmcgYSBiYXJyaWVyIiBpcyBsaWtlCiAgICAgICAgICAgICAvLyBzYXlpbmcgdGhh
dCB0aGUgbm9kZSBpcyBpbiBhIHBhc3QgZXBvY2guICJOb3QgbmVlZGluZyBhIGJhcnJpZXIiIGlz
IGxpa2Ugc2F5aW5nCiAgICAgICAgICAgICAvLyB0aGF0IHRoZSBub2RlIGlzIGluIHRoZSBjdXJy
ZW50IGVwb2NoLgotICAgICAgICAgICAgbV9zdGF0ZUF0SGVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8
QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKLSAgICAgICAgICAgIG1fc3RhdGVB
dFRhaWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFw
aCk7CisgICAgICAgICAgICBtX3N0YXRlQXRIZWFkID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxIYXNo
U2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9IG1ha2VV
bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+PihtX2dyYXBoKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgQmxvY2tMaXN0IHBvc3RPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5Qb3N0T3Jk
ZXIoKTsKICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0
LmNwcAppbmRleCBlNmMyMjIxZWUzMDE1NDRjNzJhOWNlODM1Zjk4MGZmMzZmMDI0YjdkLi44Zjkz
MDM0YjBjNmY5MGJhNjZmNGJmNWM1M2JlMWI0ZjBmYmE3NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIGNsYXNzIFdvcmts
aXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1dG9tYXRpY1RocmVhZCB7CiAgICAgICAgIGlmICht
X3JlbGF0aXZlUHJpb3JpdHkpCiAgICAgICAgICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5jaGFuZ2VQ
cmlvcml0eShtX3JlbGF0aXZlUHJpb3JpdHkpOwogICAgICAgICAKLSAgICAgICAgbV9jb21waWxh
dGlvblNjb3BlID0gc3RkOjptYWtlX3VuaXF1ZTxDb21waWxhdGlvblNjb3BlPigpOworICAgICAg
ICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBtYWtlVW5pcXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgdGhyZWFkSXNTdG9wcGluZyhjb25zdCBBYnN0cmFjdExvY2tl
ciYpIG92ZXJyaWRlCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXb3JrbGlzdDo6ZmluaXNoQ3Jl
YXRpb24odW5zaWduZWQgbnVtYmVyT2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIAog
dm9pZCBXb3JrbGlzdDo6Y3JlYXRlTmV3VGhyZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2Nr
ZXIsIGludCByZWxhdGl2ZVByaW9yaXR5KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRE
YXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJlYWREYXRhPih0aGlzKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0YSA9IG1ha2VVbmlxdWU8VGhyZWFkRGF0YT4odGhp
cyk7CiAgICAgZGF0YS0+bV90aHJlYWQgPSBhZG9wdFJlZihuZXcgVGhyZWFkQm9keShsb2NrZXIs
ICp0aGlzLCAqZGF0YSwgbV9sb2NrLCBtX3BsYW5FbnF1ZXVlZC5jb3B5UmVmKCksIHJlbGF0aXZl
UHJpb3JpdHkpKTsKICAgICBtX3RocmVhZHMuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3Bw
CmluZGV4IDE5YjExNWM5ZmRkNjdjYmM4YWUxMDljNjQ0NTc0MjhiYTNhZGZhNTMuLjAwYmRhNjU3
Mjc5Y2Y3YTk5ZGJhYjE0OWIwOWM3MDNkNjhiMzViZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKQEAgLTEzMCw3ICsxMzAs
NyBAQCBBc3luY2hyb25vdXNEaXNhc3NlbWJsZXImIGFzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlcigp
CiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCiAgICAgY29uc3QgQ1N0cmluZyYgaGVh
ZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2Rl
UmVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4KQogewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc2Fzc2VtYmx5
VGFzaz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrID0gbWFr
ZVVuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7CiAgICAgdGFzay0+aGVhZGVyID0gc3RyZHVwKGhl
YWRlci5kYXRhKCkpOyAvLyBZdWNrISBXZSBuZWVkIHRoaXMgYmVjYXVzZSBDU3RyaW5nIGRvZXMg
cmFjeSByZWZjb3VudGluZy4KICAgICB0YXNrLT5jb2RlUmVmID0gY29kZVJlZjsKICAgICB0YXNr
LT5zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwLmNwcAppbmRleCA5MGFlMmY0ZmUwNmExNTJjYWU1Nzg1ZTJjMDNjOTk5YjY4MzJiYzFiLi5l
YzgwZWE2N2IyNTZmODkxOGQ0ODgzYThjNTJiOGYzNzk1ODNhYmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXAuY3BwCkBAIC0xNTcsMTEgKzE1NywxMSBA
QCBjb25zdCBBYnN0cmFjdEhlYXAmIEluZGV4ZWRBYnN0cmFjdEhlYXA6OmF0U2xvdyhwdHJkaWZm
X3QgaW5kZXgpCiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpID49IG1fc21h
bGxJbmRpY2VzLnNpemUoKSk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKCFtX2xhcmdlSW5kaWNl
cykpCi0gICAgICAgIG1fbGFyZ2VJbmRpY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxNYXBUeXBlPigp
OworICAgICAgICBtX2xhcmdlSW5kaWNlcyA9IG1ha2VVbmlxdWU8TWFwVHlwZT4oKTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBYnN0cmFjdEhlYXA+JiBmaWVsZCA9IG1fbGFyZ2VJbmRpY2VzLT5h
ZGQoaW5kZXgsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWZpZWxkKSB7Ci0g
ICAgICAgIGZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxBYnN0cmFjdEhlYXA+KCk7CisgICAgICAg
IGZpZWxkID0gbWFrZVVuaXF1ZTxBYnN0cmFjdEhlYXA+KCk7CiAgICAgICAgIGluaXRpYWxpemUo
KmZpZWxkLCBpbmRleCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21w
aWxlLmNwcAppbmRleCA1ZDA0YjcyZjA0ODMxZDA2MzAyMzA0ZDFlYjdlNDkyOWQ0ODA0MjdmLi40
NjM1Y2M5NmY5MTA5MWY3M2YwOGQxZjc1MmIwNDdkMTA1M2JmYjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBjb21waWxl
KFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICBW
TSYgdm0gPSBncmFwaC5tX3ZtOwogCiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQot
ICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCkuc2V0RGlzYXNzZW1ibGVyKHN0ZDo6bWFrZV91bmlx
dWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigpKTsKKyAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgp
LnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVlPEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAK
ICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBvaW50IHNhZmVwb2ludChzdGF0ZS5ncmFwaCwgc2Fm
ZXBvaW50UmVzdWx0KTsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0
ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJP
ZmZzZXRzID0KLSAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4o
c3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCkpOworICAgICAgICBt
YWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihzdGF0ZS5wcm9jLT5jYWxsZWVTYXZlUmVn
aXN0ZXJBdE9mZnNldExpc3QoKSk7CiAgICAgaWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQog
ICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5mbyBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUo
Y29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQpLCAiOiAiLCAqcmVnaXN0ZXJPZmZzZXRzLCAiXG4i
KTsKICAgICBjb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoV1RGTW92ZShyZWdpc3Rl
ck9mZnNldHMpKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRl
LCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBvaW50UmVzdWx0KQogICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obG9va3VwRXhjZXB0
aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKIAotICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2Rl
TGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ss
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5r
QnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25DYW5GYWlsKTsKIAogICAgIGlmIChzdGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZm
ZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxl
ZCA9IHRydWU7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwg
U2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAKICAgICBCMzo6UENUb09y
aWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5wcm9jLT5yZWxlYXNlUENUb09yaWdpbk1hcCgpOwog
ICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENUb0NvZGVPcmlnaW5NYXBwaW5nKCkpCi0gICAgICAg
IGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29k
ZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1h
cCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7CisgICAgICAgIGNvZGVC
bG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAobWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4o
UENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUu
ZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyKSk7CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxK
U0VudHJ5UHRyVGFnPiBsYWJlbCA9IHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+
bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihzdGF0ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwoMCkp
OwogICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uID0gbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExGYWlsLmNwcAppbmRleCAxNjUzMzUwOWNkMGI0ODJjNzRiY2E2NzMxODc2M2YyZTBm
MDlkZGYxLi5jM2Y5MzM5MmYyNmU2ZmM5NWY5YzJjYzU5MjllZDM0YzZiYzMwYzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZhaWwuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIERGRzsKIAogdm9pZCBmYWlsKFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGF0ZS5ncmFw
aC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihz
dGF0ZS5ncmFwaC5tX3BsYW4pKTsKKyAgICBzdGF0ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVy
KG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3BsYW4pKTsKIH0KIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5j
cHAKaW5kZXggMDg1NDA1NmVjN2QxNjJiMTFjZGMyMWNkNzhmZTE1MTdmN2FjZjNlYi4uOTVkYjY5
NjFlOGU5MDc3MGNkNmU1NTY3MzAyMmI0NDc2M2I1ODA2NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0
ZSkKICAgICAgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAgICAgICAgIG1h
aW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1wKCkpOwogCi0gICAgICAgICAgICBsaW5rQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25DYW5GYWlsKTsKKyAgICAgICAgICAgIGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtC
dWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICAg
ICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgICAg
ICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgaml0
LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbWFpblBh
dGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAgICAgCi0gICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNh
bkZhaWwpOworICAgICAgICBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQs
IGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgaWYgKGxpbmtCdWZm
ZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25G
YWlsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGFmMWJhNGJmOTBhOGZkMGJhMjUwMmM2
NDdlMmMxNzE0MTIyZGU3ZDQuLjA5YjM0MjczY2JiN2NhYjQ0Y2Q4NjNlOTliMjg1OTBlODdjOTRi
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
QEAgLTE1MDgwLDcgKzE1MDgwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGdlbmVyYXRvckp1bXAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVu
a1B0clRhZz4odm0tPmdldENUSVN0dWIobGF6eVNsb3dQYXRoR2VuZXJhdGlvblRodW5rR2VuZXJh
dG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxh
enlTbG93UGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF6eVNsb3dQYXRoPigpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF6eVNsb3dQYXRoPiBsYXp5
U2xvd1BhdGggPSBtYWtlVW5pcXVlPExhenlTbG93UGF0aD4oKTsKIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGxpbmtlZFBhdGNoYWJsZUp1bXAgPSBDb2RlTG9jYXRpb25K
dW1wPEpTSW50ZXJuYWxQdHJUYWc+KGxpbmtCdWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRy
VGFnPihwYXRjaGFibGVKdW1wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5j
cHAKaW5kZXggNjUzZWM2ZjY5NjA0OWI3NTJhYzI0YTc3OTMxMGQ0YWQ5N2JiMDNkYi4uNGE0ODRm
YTZkNDY0MzBkNzFlNTcwMDhiZjFlOTlmNmMyNWI4NDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTYwLDEwICs2MCwxMCBAQCBTdGF0ZTo6U3RhdGUoR3JhcGgm
IGdyYXBoKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBncmFwaC5tX3BsYW4uc2V0Rmlu
YWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklURmluYWxpemVyPihncmFwaC5tX3BsYW4pKTsKKyAg
ICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxpemVyPihncmFw
aC5tX3BsYW4pKTsKICAgICBmaW5hbGl6ZXIgPSBzdGF0aWNfY2FzdDxKSVRGaW5hbGl6ZXIqPihn
cmFwaC5tX3BsYW4uZmluYWxpemVyKCkpOwogCi0gICAgcHJvYyA9IHN0ZDo6bWFrZV91bmlxdWU8
UHJvY2VkdXJlPigpOworICAgIHByb2MgPSBtYWtlVW5pcXVlPFByb2NlZHVyZT4oKTsKIAogICAg
IHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAgICAgICAgIFtdIChQcmludFN0cmVhbSYgb3V0LCBC
Mzo6T3JpZ2luIG9yaWdpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21w
bGV0ZVN1YnNwYWNlLmNwcAppbmRleCAyMmQ3ZmQ2NWQ1YTE3NTViNWIyZDNiNzhkZGE1NWMwZDAw
N2UxY2NiLi4wMjFiMGNkYjlkZmFjMThiMzY4NjQyOGE5ODIzZjI4MTEwYmI3OWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcApAQCAtODAs
NyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhz
aXplX3Qgc2l6ZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgQmxvY2tEaXJlY3RvcnkvTG9j
YWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwgIiwgYXR0cmlidXRlcygpLCAiLCAiLCBzaXpl
Q2xhc3MsICIuXG4iKTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+
IHVuaXF1ZURpcmVjdG9yeSA9Ci0gICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tEaXJlY3Rv
cnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3MpOworICAgICAgICBtYWtlVW5pcXVlPEJsb2Nr
RGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKICAgICBCbG9ja0RpcmVjdG9y
eSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0b3J5LmdldCgpOwogICAgIG1fZGlyZWN0b3JpZXMu
YXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0b3J5KSk7CiAgICAgCkBAIC04OCw3ICs4OCw3IEBA
IEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXpl
KQogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3RvcnkobG9ja2VyLCBkaXJlY3RvcnkpOwogICAg
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbEFsbG9jYXRvcj4gdW5pcXVlTG9jYWxBbGxvY2F0
b3IgPQotICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsQWxsb2NhdG9yPihkaXJlY3Rvcnkp
OworICAgICAgICBtYWtlVW5pcXVlPExvY2FsQWxsb2NhdG9yPihkaXJlY3RvcnkpOwogICAgIExv
Y2FsQWxsb2NhdG9yKiBsb2NhbEFsbG9jYXRvciA9IHVuaXF1ZUxvY2FsQWxsb2NhdG9yLmdldCgp
OwogICAgIG1fbG9jYWxBbGxvY2F0b3JzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZUxvY2FsQWxsb2Nh
dG9yKSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IGEwMWI1YTJi
NGFlZmQzZTUyOTY5NzdhNWM4Mzg0MDQyZTVhMjk1NmEuLjk3MTk5ZTE4NmRlNzJkNzcyNzk3MzVj
OWQzYzk5NDBjODVjNDhhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0y
ODksMTUgKzI4OSwxNSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAg
ICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAsIG1fbWF4SGVhcFNp
emUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9vYmplY3RTcGFjZSh0aGlzKQotICAgICwg
bV9tYWNoaW5lVGhyZWFkcyhzdGQ6Om1ha2VfdW5pcXVlPE1hY2hpbmVUaHJlYWRzPigpKQotICAg
ICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigq
dGhpcywgIkMiKSkKLSAgICAsIG1fbXV0YXRvclNsb3RWaXNpdG9yKHN0ZDo6bWFrZV91bmlxdWU8
U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQotICAgICwgbV9tdXRhdG9yTWFya1N0YWNrKHN0ZDo6
bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3JhY2VNYXJrU3RhY2soc3Rk
OjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKLSAgICAsIG1fY29uc3RyYWludFNldChz
dGQ6Om1ha2VfdW5pcXVlPE1hcmtpbmdDb25zdHJhaW50U2V0PigqdGhpcykpCisgICAgLCBtX21h
Y2hpbmVUaHJlYWRzKG1ha2VVbmlxdWU8TWFjaGluZVRocmVhZHM+KCkpCisgICAgLCBtX2NvbGxl
Y3RvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiQyIpKQorICAg
ICwgbV9tdXRhdG9yU2xvdFZpc2l0b3IobWFrZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJN
IikpCisgICAgLCBtX211dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4o
KSkKKyAgICAsIG1fcmFjZU1hcmtTdGFjayhtYWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQor
ICAgICwgbV9jb25zdHJhaW50U2V0KG1ha2VVbmlxdWU8TWFya2luZ0NvbnN0cmFpbnRTZXQ+KCp0
aGlzKSkKICAgICAsIG1faGFuZGxlU2V0KHZtKQotICAgICwgbV9jb2RlQmxvY2tzKHN0ZDo6bWFr
ZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQotICAgICwgbV9qaXRTdHViUm91dGluZXMoc3RkOjpt
YWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNldD4oKSkKKyAgICAsIG1fY29kZUJsb2NrcyhtYWtl
VW5pcXVlPENvZGVCbG9ja1NldD4oKSkKKyAgICAsIG1faml0U3R1YlJvdXRpbmVzKG1ha2VVbmlx
dWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCiAgICAgLCBtX3ZtKHZtKQogICAgIC8vIFdlIHNlZWQg
d2l0aCAxMG1zIHNvIHRoYXQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSBkb2Vzbid0
IGNvbnRpbnVvdXNseSAKICAgICAvLyBzY2hlZHVsZSB0aGUgdGltZXIgaWYgd2UndmUgbmV2ZXIg
ZG9uZSBhIGNvbGxlY3Rpb24uCkBAIC0zMDUsOCArMzA1LDggQEAgSGVhcDo6SGVhcChWTSogdm0s
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2
aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKICAgICAsIG1fc3dlZXBlcihh
ZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dlZXBlcih0aGlzKSkpCiAgICAgLCBtX3N0b3BJZk5l
Y2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcgU3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKLSAg
ICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNr
QXJyYXk+KCkpCi0gICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1
ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKG1h
a2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCisgICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3Rh
Y2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKICAgICAsIG1faGVscGVyQ2xpZW50KCZo
ZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkp
CiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihBdXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0
ZSgpKQpAQCAtMzE0LDcgKzMxNCw3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICBtX3dvcmxkU3RhdGUuc3RvcmUoMCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkcyA9IGhlYXBIZWxwZXJQb29sKCkubnVtYmVyT2ZU
aHJlYWRzKCk7IGkgPCBudW1iZXJPZlBhcmFsbGVsVGhyZWFkczsgKytpKSB7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4gdmlzaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U2xv
dFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmcoIlAiLCBpICsgMSkpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0b3IgPSBtYWtlVW5pcXVlPFNsb3RWaXNpdG9yPigq
dGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEpKTsKICAgICAgICAgaWYgKE9wdGlvbnM6Om9wdGlt
aXplUGFyYWxsZWxTbG90VmlzaXRvcnNGb3JTdG9wcGVkTXV0YXRvcigpKQogICAgICAgICAgICAg
dmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVkTXV0YXRvcigpOwogICAgICAgICBtX2F2YWlsYWJs
ZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVuZCh2aXNpdG9yLmdldCgpKTsKQEAgLTMyMywxNyAr
MzIzLDE3IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAKICAg
ICBpZiAoT3B0aW9uczo6dXNlQ29uY3VycmVudEdDKCkpIHsKICAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1bGVyKCkpCi0gICAgICAgICAgICBtX3NjaGVkdWxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvY2hhc3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+
KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTdG9jaGFzdGlj
U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVk
dWxlcj4oKnRoaXMpOworICAgICAgICAgICAgbV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFNwYWNl
VGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBX
ZSBzaW11bGF0ZSB0dXJuaW5nIG9mZiBjb25jdXJyZW50IEdDIGJ5IG1ha2luZyB0aGUgc2NoZWR1
bGVyIHNheSB0aGF0IHRoZSB3b3JsZAogICAgICAgICAvLyBzaG91bGQgYWx3YXlzIGJlIHN0b3Bw
ZWQgd2hlbiB0aGUgY29sbGVjdG9yIGlzIHJ1bm5pbmcuCi0gICAgICAgIG1fc2NoZWR1bGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+
KCk7CisgICAgICAgIG1fc2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVX
b3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CiAgICAgfQogICAgIAogICAgIGlmIChPcHRpb25zOjp2
ZXJpZnlIZWFwKCkpCi0gICAgICAgIG1fdmVyaWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhlYXBW
ZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZp
Y2F0aW9uKCkpOworICAgICAgICBtX3ZlcmlmaWVyID0gbWFrZVVuaXF1ZTxIZWFwVmVyaWZpZXI+
KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0NDeWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbigp
KTsKICAgICAKICAgICBtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5vcHRpbWl6ZUZvclN0b3BwZWRN
dXRhdG9yKCk7CiAKQEAgLTg5OSw3ICs4OTksNyBAQCBzaXplX3QgSGVhcDo6cHJvdGVjdGVkT2Jq
ZWN0Q291bnQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFwOjpwcm90ZWN0
ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0
PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5cGVDb3VudFNldD4o
KTsKICAgICBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgKICAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwp
IHsKICAgICAgICAgICAgIHJlY29yZFR5cGUoKnZtKCksICpyZXN1bHQsIGNlbGwpOwpAQCAtOTA5
LDcgKzkwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3Rl
ZE9iamVjdFR5cGVDb3VudHMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFw
OjpvYmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0
PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVDb3VudFNldD4oKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBtYWtlVW5pcXVlPFR5cGVDb3VudFNldD4o
KTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgIG1f
b2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKAogICAgICAgICBpdGVyYXRpb25TY29wZSwKQEAg
LTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgSGVhcDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAg
ICAgfSwKICAgICAgICAgQ29uc3RyYWludFZvbGF0aWxpdHk6OlNlbGRvbUdyZXllZCk7CiAgICAg
Ci0gICAgbV9jb25zdHJhaW50U2V0LT5hZGQoc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tNZXJn
aW5nQ29uc3RyYWludD4oKnRoaXMpKTsKKyAgICBtX2NvbnN0cmFpbnRTZXQtPmFkZChtYWtlVW5p
cXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJhaW50PigqdGhpcykpOwogfQogCiB2b2lkIEhlYXA6
OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6dW5pcXVlX3B0cjxNYXJraW5nQ29uc3RyYWludD4g
Y29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCmluZGV4
IDViNjljZDVlMzVmNjJiNTA2NjNhOWNiZGM3Mzk0ZDFiZDY3YWQxZDguLmUxZWI2Yzc4MzNkNDg1
ODcxYTljNTMzY2ZkNDczMWM3NWY5YjExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcElubGluZXMuaApAQCAtMjE3LDcgKzIxNyw3IEBAIGlubGluZSB2b2lkIEhlYXA6OmRlY3Jl
bWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCkKIGlubGluZSBIYXNoU2V0PE1hcmtlZEFy
Z3VtZW50QnVmZmVyKj4mIEhlYXA6Om1hcmtMaXN0U2V0KCkKIHsKICAgICBpZiAoIW1fbWFya0xp
c3RTZXQpCi0gICAgICAgIG1fbWFya0xpc3RTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8
TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsKKyAgICAgICAgbV9tYXJrTGlzdFNldCA9IG1ha2VV
bmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+PigpOwogICAgIHJldHVybiAqbV9t
YXJrTGlzdFNldDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA1YjlhYzg5ZGFiZjA0YTA2MTRkYzEwZmJiYWYxNmMw
ZjRhNDk5ZjdlLi4yZDJiYzhmYjliMjdmZTlmOWIxYjViZTU0Y2I3NTFmODNlMGQzZDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNw
cApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEhlYXBTbmFwc2hvdEJ1aWxkZXI6OmJ1aWxkU25hcHNo
b3QoKQogCiAgICAgUHJldmVudENvbGxlY3Rpb25TY29wZSBwcmV2ZW50Q29sbGVjdGlvblNjb3Bl
KG1fcHJvZmlsZXIudm0oKS5oZWFwKTsKIAotICAgIG1fc25hcHNob3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhlYXBTbmFwc2hvdD4obV9wcm9maWxlci5tb3N0UmVjZW50U25hcHNob3QoKSk7CisgICAg
bV9zbmFwc2hvdCA9IG1ha2VVbmlxdWU8SGVhcFNuYXBzaG90PihtX3Byb2ZpbGVyLm1vc3RSZWNl
bnRTbmFwc2hvdCgpKTsKICAgICB7CiAgICAgICAgIG1fcHJvZmlsZXIuc2V0QWN0aXZlU25hcHNo
b3RCdWlsZGVyKHRoaXMpOwogICAgICAgICBtX3Byb2ZpbGVyLnZtKCkuaGVhcC5jb2xsZWN0Tm93
KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuY3BwCmluZGV4IGI4ZTQzMDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5
OGZkYTkuLjdjMmVkMjQwMmZkNzMwMWZjMDk5YThkZmI1ZDNjMzM2YWVhZDExMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIE5F
VkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxvY2s6OmF0b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0
OjphZGRTbG93KHNpemVfdCBibG9jCiAgICAgYXV0byYgYml0c1B0clJlZiA9IG1fYml0c1tibG9j
a0luZGV4XTsKICAgICBhdXRvKiBiaXRzID0gYml0c1B0clJlZi5nZXQoKTsKICAgICBpZiAoIWJp
dHMpIHsKLSAgICAgICAgYml0c1B0clJlZiA9IHN0ZDo6bWFrZV91bmlxdWU8Qml0bWFwPE1hcmtl
ZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKKyAgICAgICAgYml0c1B0clJlZiA9IG1ha2VVbmlx
dWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsKICAgICAgICAgYml0cyA9
IGJpdHNQdHJSZWYuZ2V0KCk7CiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAg
ICAgIG1fYmxvY2tzV2l0aEJpdHNbYmxvY2tJbmRleF0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IGQ1MTAwMGViYTg3ZjMxZGU0ODFiZWQw
OGE1ZjJmZWQ4YTYzOWZmOTkuLmNkM2U3ZTU2MTU0NTY2ZGNmOGMxNTE2M2ExNWI3MmYyNzY4ZjI5
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYg
aGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHMKICAgICAsIG1fc2l6ZShzaXplKQog
ICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRC
bG9jazo6YXRvbVNpemU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRvcigmbV9kaXJlY3Rv
cnkpCi0gICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxJ
c29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQorICAgICwgbV9pc29BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKIHsKICAgICBp
bml0aWFsaXplKGhlYXBDZWxsVHlwZSwgbV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0
cmFpbnRTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFp
bnRTZXQuY3BwCmluZGV4IGIzYWJkMmM1MjI0ZmNlM2U1Y2UxMmM0ZjE2M2VkNDgyM2RhZTY5OGUu
LjE3ODBjMDhhNDcwZjI3NjIzMTYzN2VmNjgxMTdjOWE0ZTMyYzFkMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U2V0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNldC5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6ZGlkU3RhcnRNYXJraW5nKCkK
IAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKENTdHJpbmcgYWJicmV2aWF0ZWROYW1l
LCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248dm9pZChTbG90VmlzaXRvciYpPiBmdW5jdGlvbiwg
Q29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSwgQ29uc3RyYWludENvbmN1cnJlbmN5IGNv
bmN1cnJlbmN5LCBDb25zdHJhaW50UGFyYWxsZWxpc20gcGFyYWxsZWxpc20pCiB7Ci0gICAgYWRk
KHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFya2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2
aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHks
IGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkpOworICAgIGFkZChtYWtlVW5pcXVlPFNpbXBsZU1h
cmtpbmdDb25zdHJhaW50PihXVEZNb3ZlKGFiYnJldmlhdGVkTmFtZSksIFdURk1vdmUobmFtZSks
IFdURk1vdmUoZnVuY3Rpb24pLCB2b2xhdGlsaXR5LCBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20p
KTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQuY3BwCmluZGV4IDgyYmUzYmJiNDRjYjZjNTc3NmI4ZWNmN2ZhMGM5NDBkNWQ1YTU4
MjUuLjUzYTkxYTIzYzFkODkyOTE4ZWU0Mjk0MWE2NWY1Mjc4NjdkNDMzNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3MKIAogICAgIFN0cmluZyBtZXNzYWdlOwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1
bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9D
b25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMp
KTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVz
c2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQ2xpZW50Ojpjb3VudChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFi
ZWwpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpw
cm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICAgICAgICAg
IGlmIChleGlzdGluZ1RpdGxlID09IHRpdGxlKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAg
ICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVkIFByb2Zp
bGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJc
IiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAgICAgICAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6
OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGwKIAogICAgIC8v
IEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAg
ICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3Qi
X3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIp
OwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlx
dWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBl
OjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICBtX2Nv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpzdGFydENvbnNvbGVQcm9maWxlKCkKQEAgLTE4NSw3ICsxODUsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChFeGVjU3RhdGUqLCBS
ZWY8U2NyaXB0QXJndW1lbnRzPiYmKQogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6
Ondhcm5VbmltcGxlbWVudGVkKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogewogICAgIFN0cmluZyBt
ZXNzYWdlID0gbWV0aG9kICsgIiBpcyBjdXJyZW50bHkgaWdub3JlZCBpbiBKYXZhU2NyaXB0IGNv
bnRleHQgaW5zcGVjdGlvbi4iOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25z
b2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNv
bGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkp
OworICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2cs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJ
bnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBj
OGRhNTJlZmQxM2M0OTFjY2FlNjM5NWUwNzRjNDY0NGU3MGNjMGE3Li5iZGJkMzFkNjMxMmIyYzA1
NmQ3YzQ3ODE1ZGM2MTVkMTIyNmQ5MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBK
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjpt
YWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhv
c3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUo
KSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAg
ICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihnbG9iYWxPYmplY3QpCiAgICAgLCBtX2Zyb250ZW5kUm91
dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKQEAgLTcxLDExICs3MSwxMSBAQCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcihKU0dsb2JhbE9iagogewogICAgIGF1dG8gY29udGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7
CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29u
c29sZUFnZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8
SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKICAgICBtX2NvbnNvbGVBZ2VudCA9IGNv
bnNvbGVBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdl
bnQpKTsKIAotICAgIG1fY29uc29sZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50PihtX2NvbnNvbGVBZ2VudCk7CisgICAgbV9jb25zb2xlQ2xpZW50
ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ+KG1fY29uc29sZUFnZW50
KTsKIAogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogfQpAQCAtMjAwLDcgKzIw
MCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlCiAgICAgICAgICAgICBDb25zb2xlQ2xpZW50
OjpwcmludENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9n
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIFN0cmluZygpLCAwLCAwKTsKICAg
ICB9CiAKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykp
KTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAog
Q29uc29sZUNsaWVudCogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25zb2xl
Q2xpZW50KCkgY29uc3QKQEAgLTI4MCw3ICsyODAsNyBAQCBJbnNwZWN0b3JBZ2VudCYgSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAg
ICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGpzQWdl
bnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2Vu
dCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdlbnQ+KGNvbnRleHQpOwogICAgICAgICBtX2luc3Bl
Y3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVu
ZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7CiAgICAgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQmIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5zdXJlRGVidWdnZXJBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQpIHsKICAg
ICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2VudENvbnRleHQoKTsKLSAgICAgICAgYXV0byBkZWJ1
Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+
KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKKyAgICAgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0g
bWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29s
ZUFnZW50KTsKICAgICAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJBZ2VudC5nZXQoKTsK
ICAgICAgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KG1fZGVi
dWdnZXJBZ2VudCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdl
bnQpKTsKQEAgLTMyNywyMCArMzI3LDIwIEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JD
b250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKCkKIAogICAgIGVuc3VyZUluc3BlY3RvckFnZW50
KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVj
dFJ1bnRpbWVBZ2VudD4oY29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50Pihjb250ZXh0KSk7CiAKICAgICBlbnN1cmVEZWJ1
Z2dlckFnZW50KCk7CiAKLSAgICBhdXRvIHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ+KGNvbnRleHQpOworICAgIGF1
dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJv
ZmlsZXJBZ2VudD4oY29udGV4dCk7CiAgICAgbV9jb25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JT
Y3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwogICAgIG1f
YWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIpKTsKIAotICAgIGF1
dG8gaGVhcEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIZWFwQWdlbnQ+KGNvbnRl
eHQpOworICAgIGF1dG8gaGVhcEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JIZWFwQWdlbnQ+
KGNvbnRleHQpOwogICAgIGlmIChtX2NvbnNvbGVBZ2VudCkKICAgICAgICAgbV9jb25zb2xlQWdl
bnQtPnNldEluc3BlY3RvckhlYXBBZ2VudChoZWFwQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChXVEZNb3ZlKGhlYXBBZ2VudCkpOwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0KSk7CisgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4
IGMwYjVjOWFhZDE4YzA4Y2VkZGMzNjk2NmJmMDQ2ODUxNDE3NjI2NDMuLjQxN2U3NzVmYjgwMjQ5
YzA0MDMxMzdhODI3ODIxMzczMjdkMzMyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9y
QWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJJ
bnNwZWN0b3IiX3MpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCi0g
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4
dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCA3ZWRiYzgwNjYwZjM2
ZDZhODFhYTkxZmI4ZmEzZmRkZGVkYWU2ZjI2Li41ZDI0YzY5ZTZiZjQ1ZDcyZmIwYmRhNTNiNGM0
NTc1OTg2MTNjYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCBleHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwID0gMTA7
CiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudChBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNvbnNvbGUiX3MpCiAgICAg
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikK
LSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihtYWtlVW5pcXVlPENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDb25zb2xlQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsK
IH0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRU
aW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZQogICAgIGlmICgh
cmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0
aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBt
YWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAg
ICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhl
YywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNv
bnNvbGUoZXhlYywgMSkpKTsKICAgICB9CiB9CiAKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpsb2dUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgbGFiZWwsCiAgICAgaWYgKGl0ID09IG1fdGltZXMuZW5kKCkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVs
LCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6
Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBN
ZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1v
dmUoY2FsbFN0YWNrKSkpOworICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8
Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpU
aW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2sp
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGlt
ZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRzIGVsYXBzZWQgPSBNb25vdG9uaWNUaW1lOjpub3co
KSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRXaWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAz
KSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1v
dmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWlu
ZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZN
b3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BU
aW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0xODQs
MTQgKzE4NCwxNCBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAgIGlmIChpdCA9PSBtX3Rp
bWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250
ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmlu
ZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRv
Q29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xl
QVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcs
IFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTW9u
b3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+dmFsdWU7CiAgICAgU2Vjb25kcyBlbGFwc2VkID0g
TW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWU7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNl
ZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92
ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5n
LCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIAog
ICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIH0KQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6Y291bnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpCiAgICAgLy8gRklYTUU6IFdlYiBJbnNwZWN0b3Igc2hvdWxkIGhhdmUgYSBiZXR0
ZXIgVUkgZm9yIGNvdW50ZXJzLCBidXQgZm9yIG5vdyB3ZSBqdXN0IGxvZyBhbiB1cGRhdGVkIGNv
dW50ZXIgdmFsdWUuCiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6
ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3Rk
OjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNv
bGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwg
TWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgY3JlYXRlU2Ny
aXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbCkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAg
IGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkgewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBl
bnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2Fy
bmluZyA9IG1ha2VTdHJpbmcoIkNvdW50ZXIgXCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0
Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25z
b2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tG
b3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZTVmMjQ4MmEzY2FhMDhhYTgxNjQ1ZmE4Yzc5
YzUyOWJhNDM4MGQwYS4uMjVmMWQzZTcyODFjNmIwZmI4MzMwZmYxMzc4NzM2NDNlYmM2MGVkMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3Rh
dGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJl
YWtwb2ludEFjdGlvbiYgYWN0aW8KIAogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIkRlYnVnZ2VyIl9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPERlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0LmVu
dmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQu
Y3BwCmluZGV4IGI1MzVmZjYxOTJhYWNlZmM3OWI0ZjZjZDkzZGYxMjAxYTM3MTQ4YWMuLjU4MmMz
NWQzNjdkZmUxZTRmN2RjNGU5YTU2ODRkY2EyYTRlM2I0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIEluc3BlY3Rv
ckhlYXBBZ2VudDo6SW5zcGVjdG9ySGVhcEFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiSGVhcCJfcykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERp
c3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxIZWFwRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0
LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8
SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEhlYXBCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVu
dmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNw
cAppbmRleCA1NmZjMWI3OThkYTBlZWVlYTAyMzMxZWQ1MjU0YTk1MDIxMDA1ODc0Li5jYmFkODFk
Njk5NDQwYTczM2IwYWYwNDE2OTRhODZjYTllNmU4ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yU2NyaXB0
UHJvZmlsZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIlNjcmlwdFByb2ZpbGVyIl9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTY3JpcHRQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5m
cm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPFNj
cmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoU2NyaXB0UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hl
cjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZp
cm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQu
Y3BwCmluZGV4IDNhY2E0MTA1MTBmZTUwMGYwNWJmYmFhYzQ2N2ZmZGFjY2IyMWM1MjQuLjkzNTA2
OGM3YWUxMTk3MTA1NDRjMWY3Njc5ODIyZGZiNjZlNTZiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJn
ZXRBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIElu
c3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRlciYg
ZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKICAg
ICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGFyZ2V0Il9zKQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxUYXJnZXRGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5k
Um91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8VGFyZ2V0RnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRj
aGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggZTMyOWEzYjQzY2Q2MDk2NWQ5Zjc3ODVhNDgyMjAxMWFiMzY2ZmE1My4uOWIzZjM3OWQ1ZTVh
NDkwZGJlMzc1YzcyYWM5OWZhNzIwYjlhY2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVj
dERlYnVnZ2VyQWdlbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0IEpTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5n
JiBlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9u
TG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAg
IG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdl
TGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsK
KyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpLCAwKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50
aW1lQWdlbnQuY3BwCmluZGV4IDE0NWQwNTE2YjhlMzk2ODg3OGQ5MmNiNTk0YWE1OTliYWZhMzlk
MzIuLjNiN2MzZTIxZDMxYzFjMmY1YjZkMWJhMGMxNmY0ODg4M2U2Y2YzMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVu
dGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudChKU0FnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3Rv
clJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjpt
YWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91
dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8UnVudGltZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmRE
aXNwYXRjaGVyKFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9nbG9iYWxPYmplY3QoY29udGV4dC5pbnNwZWN0
ZWRHbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRleCA3MTAxNjY4YTk3Yzg3NDQ4MTJmNDY1NmYxNmUw
YjdkZDU5NGYxYTYwLi5jYzk2NDAwNTY3OWRiZmNkNGZlMDI5MDZiYzkzYzIzYjJjODJlY2NiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dC5jcHAKQEAgLTE0NCwxMSArMTQ0LDExIEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tlCiAKICAg
ICBTb2NrZXQ6OnNldHVwKHNvY2tldCk7CiAKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBt
YWtlVW5pcXVlPFNvY2tldDo6Q29ubmVjdGlvbj4oKTsKIAogICAgIGNvbm5lY3Rpb24tPnBvbGwg
PSBTb2NrZXQ6OnByZXBhcmVQb2xsaW5nKHNvY2tldCk7CiAgICAgY29ubmVjdGlvbi0+c29ja2V0
ID0gc29ja2V0OwotICAgIGNvbm5lY3Rpb24tPnBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVz
c2FnZVBhcnNlcj4oaWQsIFNvY2tldDo6QnVmZmVyU2l6ZSk7CisgICAgY29ubmVjdGlvbi0+cGFy
c2VyID0gbWFrZVVuaXF1ZTxNZXNzYWdlUGFyc2VyPihpZCwgU29ja2V0OjpCdWZmZXJTaXplKTsK
ICAgICBjb25uZWN0aW9uLT5wYXJzZXItPnNldERpZFBhcnNlTWVzc2FnZUxpc3RlbmVyKFt0aGlz
XShDb25uZWN0aW9uSUQgaWQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsKICAgICAgICAgaWYg
KG1faW5zcGVjdG9yQ2xpZW50KQogICAgICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmRpZFJl
Y2VpdmVXZWJJbnNwZWN0b3JFdmVudChpZCwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCmluZGV4IDcwZjJkN2E0
ODEzNDcwZjgxMzczMmIzYjk3N2I1YjczYTQxOTYwYjUuLjMyMDQwMGZkNWIzY2RiMmM0YjE1ZGJk
YzkzMDQ2YmJmZDAwY2FkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEpTX0VYUE9SVF9Q
UklWQVRFIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PiBjcmVhdGUo
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudCogaW5zcGVjdG9yQ2xpZW50LCBjb25zdCBj
aGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGluc3BlY3RvckNsaWVudCwgbmFtZSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50PihpbnNwZWN0
b3JDbGllbnQsIG5hbWUpOwogICAgIH0KIAogICAgIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50KFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQqLCBjb25zdCBjaGFyKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggMzVm
ZTRhYmIyYmFlYzJmMTQ5NTY2MTU2NjNjYTZjNTBhNmI5Mjk1MS4uY2MyYjU2NjFiZTFiNTJiNmYz
ZDM4NDU5ZmM2MzZmYzkyMjNhNmUyZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNf
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM5LDggKzEzOSw4IEBAIGNsYXNzIE9iakNHZW5l
cmF0b3JUZW1wbGF0ZXM6CiAgICAgW18ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyIHJlbGVh
c2VdOwogICAgIF8ke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyID0gW2hhbmRsZXIgcmV0YWlu
XTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2Jq
Q0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAg
YXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hh
YmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFp
bk5hbWV9QmFja2VuZERpc3BhdGNoZXI+PigiJHtkb21haW5OYW1lfSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3Bh
dGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oIiR7ZG9tYWluTmFtZX0i
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2Nv
bnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBl
Y3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCBhMThl
ODJkOWYzZmUwNjFmNDJkMGI4MDI4ODQ3YTc1N2E3ODBjZGJkLi4zNDk3NTkyMTMwMzcxNGMzMWIz
NGViMDIwZDFjZGY3ZTE1Y2FlY2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFj
LXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZv
cm0uanNvbi1yZXN1bHQKQEAgLTc3Miw4ICs3NzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIg
PSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0Jh
Y2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RG
TW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5
bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDIyNDFkZjZhYmEzNjBjYTdmNmVmZjNiY2Nm
MGE1MzE2ZmFkY2QzMjYuLjdlYmEwMTY5NGIwODg0ZDJiYjcxMGNhNDFkMTkzZDQxNzYxN2EzNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
CkBAIC0xMTkwLDggKzExOTAsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtf
ZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9kYXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxl
ciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0g
ICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0
Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFzZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFs
dGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtl
VW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsK
KyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJu
YXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1v
dmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cmlu
ZGV4IDQ5ZTBiNDVlNjE4NTZkOGViY2JkNTYwZDI3NDEwNGFkZWZiZDEwNWQuLmRmZmY1NDIyNmM5
MTc3ZDhhMDExMzAwYzQ4NmZhNGZiNDE5NWM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQKQEAgLTEwNjksOCArMTA2OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAg
ICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFto
YW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVy
KTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQo
V1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4t
YXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29u
LXJlc3VsdAppbmRleCBlOTE3MzVjNWI2ZWMzNzRiMGMzZDk2Mjk2Njg1ZDhhYzc4NDhiMWUyLi4w
ZGZiMzIxNTFjYWVkODdlNWUyNDZiN2RlYTJkOTdkYmM2NjY3YzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFp
bGFiaWxpdHkuanNvbi1yZXN1bHQKQEAgLTc4NCw4ICs3ODQsOCBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogICAgIFtfZG9tYWluQUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkFI
YW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hl
cj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQUJhY2tlbmREaXNwYXRjaGVyLCBBbHRl
cm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluQSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5BQmFja2VuZERpc3BhdGNoZXI+
KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9t
YWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkEiX3MsICpfY29udHJvbGxlciwgV1RGTW92
ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdl
bnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCkBAIC04MDIsOCArODAyLDggQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX2RvbWFpbkJIYW5kbGVyIHJlbGVhc2VdOwog
ICAgIF9kb21haW5CSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVy
bmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5CQmFj
a2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkJCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkIiX3Ms
ICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBh
bHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQkJhY2tl
bmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVu
aXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5CQmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW5CIl9zLCAqX2NvbnRy
b2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5h
cHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4
cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5k
ZXggYmI1Mjk0YTgyMTkyNTIzZDA4MzMxYTkwYTIyYzRjNjk4NGY4Y2EzNS4uMmJlNzMwOTI4OTMz
OWEyNTkwYTM3N2YxMjY4NGQ5ZmQ0YzYzMjcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13
aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5z
LXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0xMDQxLDggKzEwNDEs
OCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29yazFIYW5kbGVyIHJl
bGVhc2VdOwogICAgIF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAg
YXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9y
TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+
KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIp
KTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0
b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0
ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5l
dHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwog
ICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQp
KTsKIH0KIApAQCAtMTA1OSw4ICsxMDU5LDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICBbX25ldHdvcmszSGFuZGxlciByZWxlYXNlXTsKICAgICBfbmV0d29yazNIYW5kbGVyID0g
W2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazMiX3MsICpfY29udHJvbGxlciwgV1RG
TW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVy
ID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFu
ZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29y
azNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3Zl
KGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2Vu
dChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0t
dmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXgg
YzBiM2NjOTUyODY2MzY0M2E3NjVmNWYzZWU4ODczYjE1ZTQzNjk4Mi4uNzlhYTljZTVhZDg2YzFl
Njk4OTIwZjIwNDI1ZjdjNDcwOWZhNDhhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKQEAgLTgxNiw4
ICs4MTYsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfY29tbWFuZERvbWFp
bkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2NvbW1hbmREb21haW5IYW5kbGVyID0gW2hhbmRsZXIg
cmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7
Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlz
cGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVD
b21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250
cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2Vu
ZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5p
cXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPj4oIkNvbW1hbmRE
b21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAg
ICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQKaW5kZXggMzFkYmM4Yzk5OGI1YzE0MTE1MDg2MjRjNGMyOGI2NmY4
MWUxOGM4MS4uNTEwZTE3NWNjYzJmM2MwYzY0YTJlNjUwY2M2ODJjNTQ3NGJiNGZmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVz
dWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29u
LXJlc3VsdApAQCAtNzk5LDggKzc5OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAg
ICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmsxSGFuZGxlciA9IFto
YW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVy
KTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRs
ZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsx
QmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQo
V1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25z
LXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1w
bGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCBhMThlODJkOWYzZmUwNjFmNDJkMGI4MDI4ODQ3YTc1
N2E3ODBjZGJkLi4zNDk3NTkyMTMwMzcxNGMzMWIzNGViMDIwZDFjZGY3ZTE1Y2FlY2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFj
L2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTc3Miw4ICs3
NzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIg
cmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rv
ck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29y
a0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+Pigi
TmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsK
KyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsi
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2Nv
bnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggODM0MmU1ZmM1ZWZjYTI4NDlkZmQxMmRi
N2FhNGFiNDk4MmI2MWZlOC4uZWY5MDY2OTQzMGJiMTI2ZTY4OWJiYzdiZmZhOWJiMGY1NDQ3MzNk
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQg
SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQog
ICAgIH0KIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSB8fCAo
bV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyICYmIE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxp
bmVGb3JQcm9maWxlcigpKSkpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29kZUJsb2NrKTsKKyAgICAgICAgbV9kaXNhc3NlbWJs
ZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2VtYmxlcj4obV9jb2RlQmxvY2spOwogICAgIGlmIChV
TkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKSB7CiAgICAgICAgIG1fY29tcGls
YXRpb24gPSBhZG9wdFJlZigKICAgICAgICAgICAgIG5ldyBQcm9maWxlcjo6Q29tcGlsYXRpb24o
CkBAIC05MDEsNyArOTAxLDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICB9
CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuZGlkQnVpbGRNYXBwaW5nKCkp
Ci0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5p
cXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVy
KSwgcGF0Y2hCdWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2lu
TWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdp
bk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOwogICAgIAogICAgIENvZGVSZWY8SlNFbnRyeVB0
clRhZz4gcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKICAgICAgICAgcGF0Y2hCdWZmZXIsIEpTRW50
cnlQdHJUYWcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5r
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggMTZi
ZjcwZDgwMTc0NDIzMDUwMmEyZDhiMTk3Y2Q0MDFjODAyNGYzOC4uNWJkZjgzMDQ2NTA0Mzk5NGUx
MWJhZmZlZDUyYmI3ODVjMWJhMGE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1
bmtzLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEpJVFRodW5rczo6
SklUVGh1bmtzKCkKLSAgICA6IG1faG9zdEZ1bmN0aW9uU3R1Yk1hcChzdGQ6Om1ha2VfdW5pcXVl
PEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCisgICAgOiBtX2hvc3RGdW5jdGlvblN0dWJNYXAobWFr
ZVVuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFwPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMzg4ZmIwZTYyNzA4YjM0ZWNiOTcxZTk0NmI0NmIxOTNj
NGNhZTNiLi44ZjlhODY0ZTRmZTg2MjZhMWZlZmMwYzMwN2M5ZTQ2NTY2MmY1YThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTEwOTIsNyArMTA5Miw3IEBAIHZvaWQg
bGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbEZyYW1lU2h1ZmZs
ZXI+IGZyYW1lU2h1ZmZsZXI7CiAgICAgaWYgKGNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRh
KCkpIHsKICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpOwotICAgICAg
ICBmcmFtZVNodWZmbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1
YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOworICAgICAgICBmcmFtZVNo
dWZmbGVyID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5r
SW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAg
IC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNl
bGwsIGFuZCB3ZSBjYW4KICAgICAgICAgLy8gdXNlIHRoZSBhZGRpdGlvbmFsIHJlZ2lzdGVyIHRo
aXMgYnV5cyB1cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggYzY4MTdlMDQ1ZjU2N2U5ZWQzYTBl
NTk1N2QyNWU2Mzc5ODU2NWZhZS4uNWFiMDBlZjdmZTU5MzFmNzQ2MjRmZTdjMWYxYjBhYzQ2NzFj
MDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI5NjksNyArMjk2OSw3IEBAIGludCBydW5K
U0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlvbnMsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMm
IGZ1bmMpCiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCiAgICAgICAgIGlmIChv
cHRpb25zLm1fcHJvZmlsZSAmJiAhdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyKQotICAgICAgICAg
ICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6
RGF0YWJhc2U+KHZtKTsKKyAgICAgICAgICAgIHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1h
a2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPih2bSk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0
ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KHZtLCBqc051bGwoKSksIG9wdGlvbnMubV9hcmd1bWVudHMpOwogICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQob3B0aW9ucy5tX2VuYWJsZVJlbW90ZURlYnVn
Z2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNzNkOWFh
ZjllMjNmM2NjNGU0MjMyYzRjNWU5ZjlmYTA4NzdhZTg0ZS4uZTlkMmNlZmY2NWNjODUxMWQ3NTdi
MDUzMTk3YzQ4M2FiOThkZjQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUKICAgICAsIG1f
aW1tZWRpYXRlUGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkluU3RhdGVtZW50KGZhbHNl
KQogICAgICwgbV9kZWJ1Z2dlclBhcnNlRGF0YShkZWJ1Z2dlclBhcnNlRGF0YSkKIHsKLSAgICBt
X2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2Ny
aXB0TW9kZSk7CisgICAgbV9sZXhlciA9IG1ha2VVbmlxdWU8TGV4ZXJUeXBlPih2bSwgYnVpbHRp
bk1vZGUsIHNjcmlwdE1vZGUpOwogICAgIG1fbGV4ZXItPnNldENvZGUoc291cmNlLCAmbV9wYXJz
ZXJBcmVuYSk7CiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RMaW5l
KCkub25lQmFzZWRJbnQoKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBz
b3VyY2Uuc3RhcnRPZmZzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmlu
ZGV4IDY5YWEwYmMxOTBhZjY3ODNkODkyOGMzNTlhYTNiMTBiYjFmYmQ4NzMuLjBhNWVkZTRiODQy
NWNmZDFiMzE3Yzc2YzUxZWE3Mzc4MTc4MGI1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaApAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgdm9pZCBw
dXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciogbGFiZWwsIGJvb2wgaXNMb29wKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX2xhYmVscykKLSAgICAgICAgICAgIG1fbGFiZWxzID0gc3RkOjptYWtlX3Vu
aXF1ZTxMYWJlbFN0YWNrPigpOworICAgICAgICAgICAgbV9sYWJlbHMgPSBtYWtlVW5pcXVlPExh
YmVsU3RhY2s+KCk7CiAgICAgICAgIG1fbGFiZWxzLT5hcHBlbmQoU2NvcGVMYWJlbEluZm8geyBs
YWJlbC0+aW1wbCgpLCBpc0xvb3AgfSk7CiAgICAgfQogCkBAIC0xOTQxLDcgKzE5NDEsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNl
ckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgICAgICBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZz
ZXQgPSBtX2xleGVyLT5jdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIGVuZExvY2F0
aW9uLnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+Y3VycmVudE9mZnNldCgpOwogICAgICAgICB1bnNp
Z25lZCBlbmRDb2x1bW4gPSBlbmRMb2NhdGlvbi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxp
bmVTdGFydE9mZnNldDsKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXJzZWRO
b2RlPihtX3BhcnNlckFyZW5hLAorICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPFBhcnNlZE5v
ZGU+KG1fcGFyc2VyQXJlbmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFydExvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kTG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvbHVtbiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCBkZjE3YmU1
MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNmMzNhN2VlLi40MTAwMDZkOTI3NTFjZTk2YjkyY2I5
NjI1NjM1ZWE3Y2Y3OGVjNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJBcmVuYS5oCkBAIC0xODAsNyArMTgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElk
ZW50aWZpZXJBcmVuYSYgaWRlbnRpZmllckFyZW5hKCkKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKFVOTElLRUxZICghbV9pZGVudGlmaWVyQXJlbmEpKQotICAgICAgICAgICAgICAgIG1faWRl
bnRpZmllckFyZW5hID0gc3RkOjptYWtlX3VuaXF1ZTxJZGVudGlmaWVyQXJlbmE+KCk7CisgICAg
ICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJlbmEgPSBtYWtlVW5pcXVlPElkZW50aWZpZXJBcmVu
YT4oKTsKICAgICAgICAgICAgIHJldHVybiAqbV9pZGVudGlmaWVyQXJlbmE7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uY3BwCmluZGV4IDA1MDMyYjVkMTMxMDhjMGViNjIwZTlkYWU4MjBjZWY3YWM3NTMx
OGMuLjM1NzExYjVmYTY0MjY5ZTY3NzRhYjcwZTIxZGQ1MDI1MTY5YzhlYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5j
cHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0aW9uQ291bnRlciogQ29tcGlsYXRpb246OmV4ZWN1
dGlvbkNvdW50ZXJGb3IoY29uc3QgT3JpZ2luU3RhY2smIG9yaWdpbikKIHsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXhlY3V0aW9uQ291bnRlcj4mIGNvdW50ZXIgPSBtX2NvdW50ZXJzLmFkZChvcmln
aW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvdW50ZXIpCi0gICAgICAg
IGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+KCk7CisgICAgICAg
IGNvdW50ZXIgPSBtYWtlVW5pcXVlPEV4ZWN1dGlvbkNvdW50ZXI+KCk7CiAKICAgICByZXR1cm4g
Y291bnRlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApp
bmRleCA3MGM3MTQ3MzMyNDQ0MDgwNzg3OTM0MDE5ODY2NzNjOTdlMWVhODNkLi5hNjRkZTNmZGQ2
NjI1NTE4YWM1ZDEyNmNlYWM3OGI2ZjIxMjVhNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdGFja0ZyYW1lPj4gZ2V0U3RhY2tUcmFjZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNP
YmoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzaXplX3QgZnJhbWVzVG9Ta2lwID0g
dXNlQ3VycmVudEZyYW1lID8gMCA6IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFj
a0ZyYW1lPj4gc3RhY2tUcmFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0YWNrRnJhbWU+
PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2Ug
PSBtYWtlVW5pcXVlPFZlY3RvcjxTdGFja0ZyYW1lPj4oKTsKICAgICB2bS5pbnRlcnByZXRlci0+
Z2V0U3RhY2tUcmFjZShvYmosICpzdGFja1RyYWNlLCBmcmFtZXNUb1NraXAsIGdsb2JhbE9iamVj
dC0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWUoKSk7CiAgICAgaWYgKCFzdGFja1RyYWNlLT5pc0Vt
cHR5KCkpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYyA9PSB2bS50b3BDYWxsRnJh
bWUgfHwgZXhlYy0+aXNHbG9iYWxFeGVjKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNDM5ZTIwOWIwYTVmOGZi
ODI5Yjc5MTk3NTc0ODhjNDE1NjM0MjczZi4uZWYyZTgzMDg3NDFiODg1MmU1NjIzMjZmOTYyNTdj
OWQwMjkzNWQzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKAogRnVuY3Rpb25FeGVjdXRh
YmxlOjpSYXJlRGF0YSYgRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQog
ewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7Ci0gICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgYXV0byByYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFy
ZURhdGE+KCk7CiAgICAgcmFyZURhdGEtPm1fbGluZUNvdW50ID0gbGluZUNvdW50KCk7CiAgICAg
cmFyZURhdGEtPm1fZW5kQ29sdW1uID0gZW5kQ29sdW1uKCk7CiAgICAgcmFyZURhdGEtPm1fcGFy
YW1ldGVyc1N0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKaW5kZXggNDYyMzY0
MWM1OThlM2ViYjVmYmE2YmMwMjM3MjY0ZTUwNTJmZDE3OS4uNTJiMjhiMTNjN2UyZTI1ZDIxYmJi
YWIzYWQzMWQ1YjZiYzBjZGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtMTU2LDcgKzE1Niw3IEBAIGNsYXNzIEZ1bmN0aW9u
UmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50IGZpbmFsIDogcHVi
bGljIFdhdGNoCiBpbmxpbmUgV2F0Y2hwb2ludCogRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxs
b2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQoKQogewogICAgIFJFTEVBU0VfQVNTRVJU
KCFoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCgpKTsKLSAgICBtX2FsbG9j
YXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbGxvY2F0
aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludD4odGhpcyk7CisgICAgbV9hbGxvY2F0aW9uUHJv
ZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8QWxsb2NhdGlvblByb2ZpbGVDbGVh
cmluZ1dhdGNocG9pbnQ+KHRoaXMpOwogICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlQ2xl
YXJpbmdXYXRjaHBvaW50LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMWE1N2VmM2RjZmU5MTllNzBiMzdmYTdl
MzQ4NTRhMTNlOTA1M2ZhZS4uY2M4Nzc2N2YxMDhiY2M0ODNiMzE1ZjExMmZhOWM1MzQ3ZjUyMDE0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgIG1fZGVidWdnZXIgPSAwOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkpT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOwotICAgIG1faW5zcGVjdG9y
RGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigq
dGhpcyk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6
OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpOworICAgIG1faW5zcGVj
dG9yRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhp
cyk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlLT5pbml0KCk7CiAgICAgbV9jb25zb2xlQ2xp
ZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25zb2xlQ2xpZW50KCk7CiAjZW5kaWYKQEAg
LTExNDUsNTcgKzExNDUsNTcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogICAgIHsKICAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0
KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50
KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IG1ha2VVbmlxdWU8T2Jq
ZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+
KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAg
ICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2bSk7CiAgICAgfQog
ICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgbV92bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVy
YXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1f
YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fYXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRp
b24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlQ
cm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAog
ICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1l
cy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hw
b2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hw
b2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5
cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBt
X21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Cisg
ICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsK
ICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIG1f
dm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
ZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90
b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9z
ZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90
b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1i
b2wpOwotICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBv
aW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAg
ICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50KTsKKyAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0g
bWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVX
YXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBv
aW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ1Byb3Rv
dHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAg
IG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50KTsKKyAgICAgICAgbV9zdHJpbmdQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQg
PSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2Nv
bFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0
Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFBy
b3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwotICAgICAgICBtX21hcFBy
b3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRp
b24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hw
b2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50
KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAg
ICB9CiAKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9
IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3Bl
cnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsK
KyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhp
cywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOwogICAgICAgICBtX3NldFByb3RvdHlw
ZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIApAQCAtMTIwNiw3ICsxMjA2LDcg
QEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9
IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgdGhpcy0+c3ltYm9sUHJvdG90eXBl
KCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRj
aHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBt
YWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdh
dGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50
KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwo
dm0pOwogICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5zZXQodm0sIHRoaXMs
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwogICAgIH0KQEAgLTE5MzIsMTAgKzE5MzIsMTAgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3BlY2llc1dhdGNocG9p
bnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50LnRvdWNo
KHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKTsKIAotICAgIG1fYXJyYXlQ
cm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFBy
b3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlz
LCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBt
X2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhp
cywgY29uc3RydWN0b3JDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAg
bV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAKLSAg
ICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7Cisg
ICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0
aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAgIG1f
YXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMDQ3
YzE2NjUzZTcxYjFhODA2YmQ5ZmM3ZDU2NjQzYTVmOTg4ZjExZS4uODQ1MzVjYTVjNjAwY2VjYmQ4
YjQ3OGY2NWI1M2NkMDdlMzZhODM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01MjEsNyArNTIxLDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgewogICAgICAg
ICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9yYXJlRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4oKTsKKyAgICAgICAg
bV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8SlNHbG9iYWxPYmplY3RSYXJlRGF0YT4oKTsKICAgICB9
CiAgICAgICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDFhZjAwMzY1M2NiOGMzZGU2NDNmOGM0OTEyN2FiYjNl
NTUxM2Q1YWQuLjMyN2ZlZDA2YzY3YTViZjExMjUxZjlmNGRlZDgzOWU3MDMzYzhhYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKQEAg
LTg3LDcgKzg3LDcgQEAgdm9pZCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpz
ZXRSdW5Mb29wKE1hbmFnZXIqIG1hbmFnZXIsIENGUnVuTG9vcFIKICNlbHNlCiBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQZXJWTURhdGEoTWFuYWdlciYgbWFuYWdlcikKICAg
ICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJlbnQoKSkKLSAgICAsIHRpbWVyKHN0ZDo6bWFrZV91
bmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdlcj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVu
TG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRpZEZpcmVDYWxsYmFjaykpCisgICAgLCB0aW1lciht
YWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1hbmFnZXI+PigqcnVuTG9vcCwgJm1hbmFnZXIsICZK
U1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGltZXJEaWRGaXJlQ2FsbGJhY2spKQogewogI2lmIFVT
RShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGltZXItPnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQ
cmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBKU1J1bkxvb3BU
aW1lcjo6TWFuYWdlciYgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnNoYXJlZCgpCiAKIHZvaWQg
SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVyVk0oVk0mIHZtKQogewotICAgIGF1dG8g
ZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVyVk1EYXRhPigqdGhpcyk7CisgICAgYXV0byBkYXRh
ID0gbWFrZVVuaXF1ZTxQZXJWTURhdGE+KCp0aGlzKTsKICNpZiBVU0UoQ0YpCiAgICAgZGF0YS0+
c2V0UnVuTG9vcCh0aGlzLCB2bS5ydW5Mb29wKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAppbmRleCA1ZjA3
OGQyYTUwOWQyYjQ0MjAwZjdhNGFmMzg4MTI0NmNiMmQ1OGE3Li41MjkwMjBkZjBmMWRjMmEyODZm
ODAwYWJhZDlkN2ViN2QzZjhlZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBpbmxp
bmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlUYWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiBpbmxp
bmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRlZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9m
ZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCk7CisgICAg
ICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+
KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKaW5kZXggNTllYzQx
YzQ5YWU4MmY0N2Y2OTg2ODA2ZGQ2MTQzOTQ0YTQyYjVkNi4uYjFiYjY3OTE5OTI2NWFmY2JjY2M4
MzY1NmQ4ZDU2ZmM1YjRhMzU0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlUYWJsZS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUHJvcGVydHlUYWJsZTo6UHJv
cGVydHlUYWJsZShWTSYgdm0sIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgIC8vIENv
cHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVjdG9yLgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNl
dD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBvdGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwog
ICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRzKQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zm
c2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9w
ZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKTsKIH0KIAogUHJvcGVydHlUYWJsZTo6
UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJv
cGVydHlUYWJsZSYgb3RoZXIpCkBAIC0xMDcsNyArMTA3LDcgQEAgUHJvcGVydHlUYWJsZTo6UHJv
cGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVy
dHlUYWIKICAgICAvLyBDb3B5IHRoZSBtX2RlbGV0ZWRPZmZzZXRzIHZlY3Rvci4KICAgICBWZWN0
b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRlbGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVk
T2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3RoZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9k
ZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4o
Km90aGVyRGVsZXRlZE9mZnNldHMpOworICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFrZVVu
aXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CiB9CiAK
IHZvaWQgUHJvcGVydHlUYWJsZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCAwNzFiMWY2NjMxNWNlM2FlOGRjZmUxNzVm
ZjYzNjZmNWM2MzJhZmZjLi43MGU1OTNkNTNlYmRkODFkOGMwODEzYTI5NzcwZTk0MGNlMDQxMTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTE3OCw3ICsx
NzgsNyBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiAgICAgbV9udW1T
dWJwYXR0ZXJucyA9IHBhdHRlcm4ubV9udW1TdWJwYXR0ZXJuczsKICAgICBpZiAoIXBhdHRlcm4u
bV9jYXB0dXJlR3JvdXBOYW1lcy5pc0VtcHR5KCkgfHwgIXBhdHRlcm4ubV9uYW1lZEdyb3VwVG9Q
YXJlbkluZGV4LmlzRW1wdHkoKSkgewotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURh
dGE+KCk7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fY2FwdHVyZUdyb3VwTmFtZXMuc3dhcChwYXR0
ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMpOwogICAgICAgICBtX3JhcmVEYXRhLT5tX25hbWVkR3Jv
dXBUb1BhcmVuSW5kZXguc3dhcChwYXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCAzOWNkZDkxMTZl
MDI3ZTNkYjYwNDBkYmQ4ZmU1MjcwZDJlOTk1ZDhkLi5lOGRhODUyNmU3YzdlODFmYmVhNzVjODg5
ODgxNjFiOWFmODkxNzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApA
QCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGVuc3VyZVJlZ0V4cEpJVENvZGUoKQogICAgIHsKICAg
ICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUpCi0gICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7CisgICAgICAgICAgICBt
X3JlZ0V4cEpJVENvZGUgPSBtYWtlVW5pcXVlPFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7CiAgICAg
ICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2RlLmdldCgpOwogICAgIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRl
eCAyMzdkN2RlNjg4ZGQyMDc2NTAyMDEyMTZjZDBkNTQ2ODBjNDk2ZWFhLi5lZTZlMThjZWZkYmU3
OWY0YmMyZWIyMTk3ZmY1MzkxMDRlMWY3OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIGF1
dG8gU2NyaXB0RXhlY3V0YWJsZTo6ZW5zdXJlVGVtcGxhdGVPYmplY3RNYXBJbXBsKHN0ZDo6dW5p
cXVlX3B0cjxUZW1wbGF0ZU9iamVjCiB7CiAgICAgaWYgKGRlc3QpCiAgICAgICAgIHJldHVybiAq
ZGVzdDsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVtcGxhdGVPYmplY3RN
YXA+KCk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFRlbXBsYXRlT2JqZWN0TWFwPigp
OwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgZGVzdCA9IFdURk1vdmUocmVzdWx0
KTsKICAgICByZXR1cm4gKmRlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAppbmRleCAyOTNjNDY0NzJlNzQ4OTQxY2E5Y2MyYWRhYzE2YTNkMmRjNWRlZWVj
Li4wMWNkMmJkNTQ3ZmUwMmI1MDQ3YTZkNDViM2M4YWQ2ZmQ1MmJkYjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTg1Niw3ICs4NTYsNyBAQCBX
YXRjaHBvaW50U2V0KiBTdHJ1Y3R1cmU6OmVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBv
aW50U2V0KFZNJiB2bSwgUHJvcGVydAogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiByYXJlRGF0YSA9
IHRoaXMtPnJhcmVEYXRhKCk7CiAgICAgaWYgKCFyYXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNo
cG9pbnRTZXRzKSB7CiAgICAgICAgIHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNl
dHMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJv
cGVydHlXYXRjaHBvaW50TWFwPigpOworICAgICAgICAgICAgbWFrZVVuaXF1ZTxTdHJ1Y3R1cmVS
YXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOwogICAgICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IHJhcmVEYXRhLT5tX3JlcGxhY2Vt
ZW50V2F0Y2hwb2ludFNldHMtPmFkZChvZmZzZXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCmluZGV4IDk5YThk
OWY3ZGFhYzIxN2U0YzgxZTdlNzEyNmU5YzAyYjM3NGVkM2YuLmQzY2YxODNiMGY2ZDdjNDg5ODgw
MGFiNjhlZTQ4Y2QxMjhmN2ZlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFN0
cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
Vk0mIHZtLCBTdHJ1Y3R1cgogICAgIEFTU0VSVChjb25kaXRpb25TZXQuc3RydWN0dXJlc0Vuc3Vy
ZVZhbGlkaXR5KCkpOwogICAgIGZvciAoT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9u
IDogY29uZGl0aW9uU2V0KSB7CiAgICAgICAgIGlmIChjb25kaXRpb24uY29uZGl0aW9uKCkua2lu
ZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQcmVzZW5jZSkgewotICAgICAgICAgICAgbV9vYmpl
Y3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRWYWx1ZVdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7CisgICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRh
cHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0VG9TdHJpbmdB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0
aGlzKTsKICAgICAgICAgICAgIG1fb2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX29i
amVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBvaW50U2V0LmFkZChjb25kaXRpb24sIHRoaXMpLT5p
bnN0YWxsKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcAppbmRleCAzOTJmMjE3YzE0ZWZhZWI1NDViZjBkNGY3NzkwYzExMjc5MzJiYzg1Li5hNGE4
NzBmYzFmY2FkMzVjNDM5NWYxMDliMjJhOTljNDIwZDc0MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgY29u
c3QgU3ltYm9sVGFibGU6OkxvY2FsVG9FbnRyeVZlYyYgU3ltYm9sVGFibGU6OmxvY2FsVG9FbnRy
eShjb25zdCBDb25jdXJyZW50SlMKICAgICAgICAgICAgICAgICBzaXplID0gc3RkOjptYXgoc2l6
ZSwgb2Zmc2V0LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkgKyAxKTsKICAgICAgICAgfQogICAgIAot
ICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9jYWxUb0VudHJ5VmVj
PihzaXplLCBudWxscHRyKTsKKyAgICAgICAgbV9sb2NhbFRvRW50cnkgPSBtYWtlVW5pcXVlPExv
Y2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0cik7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkg
OiBtX21hcCkgewogICAgICAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhbHVlLnZh
ck9mZnNldCgpOwogICAgICAgICAgICAgaWYgKG9mZnNldC5pc1Njb3BlKCkpCkBAIC0xNTksNyAr
MTU5LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0p
CiAgICAgICAgIHJlc3VsdC0+bV9hcmd1bWVudHMuc2V0KHZtLCByZXN1bHQsIGFyZ3VtZW50cyk7
CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEpIHsKLSAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICByZXN1
bHQtPm1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAg
ICAgICAgewogICAgICAgICAgICAgYXV0byBpdGVyID0gbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1h
cC5iZWdpbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgU3ltYm9sVGFibGU6OnByZXBhcmVG
b3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYpCiAgICAgaWYgKG1fcmFy
ZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8
U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAogICAgIGZvciAoYXV0byBpdGVyID0gbV9tYXAuYmVn
aW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAg
bV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5zZXQoaXRlci0+a2V5LCBUeXBlUHJvZmlsZXJOZWVk
c1VuaXF1ZUlER2VuZXJhdGlvbik7CkBAIC0yMTAsNyArMjEwLDcgQEAgQ29kZUJsb2NrKiBTeW1i
b2xUYWJsZTo6cmFyZURhdGFDb2RlQmxvY2soKQogdm9pZCBTeW1ib2xUYWJsZTo6c2V0UmFyZURh
dGFDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRh
KQotICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVE
YXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVE
YXRhPigpOwogCiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX2NvZGVCbG9jayk7CiAgICAgbV9y
YXJlRGF0YS0+bV9jb2RlQmxvY2suc2V0KCpjb2RlQmxvY2stPnZtKCksIHRoaXMsIGNvZGVCbG9j
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IDQxMGVi
NmQ1YWUxNmYzNjAyMjZkYjM4MjNmN2VlODI4ZWNjYWIzODMuLjQxYWNhOWQzZDRkOWI4YTU2YWU2
ODUyMzBlOGQ2Njc1MmFjMGQwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVTZXQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9w
ZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVyLmFwcGVuZChtX3Byb3RvLT5wcm9wZXJ0eUhhc2go
KSk7CiAgICAgfQogCi0gICAgbV9wcm9wZXJ0eUhhc2ggPSBzdGQ6Om1ha2VfdW5pcXVlPFN0cmlu
Zz4oYnVpbGRlci50b1N0cmluZygpKTsKKyAgICBtX3Byb3BlcnR5SGFzaCA9IG1ha2VVbmlxdWU8
U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiAqbV9wcm9wZXJ0eUhhc2g7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0ZTJkMGQzMjRhMjRl
MjMyY2QxOTUzODkyZWQ4YjBhMzNiMGIwNWVlLi5iNzA5MmMwOGVmNzJiMGVjYTg5ZmYwYjVjNGJl
MWFlNTlhYTFkYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNTIs
MTggKzI1MiwxOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAg
ICAgLCBtX3J1bkxvb3AoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKQogI2VuZGlmIC8vIFVTRShDRikK
ICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUpCi0gICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKHN0
ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCi0gICAg
LCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCi0gICAgLCBqc1ZhbHVl
R2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlB
bGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKLSAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlw
ZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5l
ZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQotICAgICwgaW1tdXRhYmxlQnV0
dGVyZmx5SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0
cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEludGVy
aW9yUG9pbnRlcnMpKSkKLSAgICAsIGNlbGxIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxI
ZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBD
ZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUoc3RkOjpt
YWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24s
IEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZShzdGQ6Om1ha2Vf
dW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlxdWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2Vs
bFR5cGU+KCkpCisgICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9j
YXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6
OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxH
aWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKyAgICAs
IGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJp
YnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQorICAg
ICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBl
PihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxs
V2l0aEludGVyaW9yUG9pbnRlcnMpKSkKKyAgICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1
ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFr
ZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhl
YXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIHN0cmluZ0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpT
U3RyaW5nSGVhcENlbGxUeXBlPigpKQorICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5
cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlPigp
KQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVl
PFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUNv
ZGVCbG9ja0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFw
Q2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKG1ha2VV
bmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZT4oKSkKICNlbmRpZgogICAgICwg
cHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGls
aWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZS5nZXQoKSwgcHJpbWl0aXZlR2lnYWNh
Z2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgzZTdjZDc2MgogICAgICwganNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUgR2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4
aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkp
IC8vIEhhc2g6MHgyNDFlOTQ2CkBAIC0yOTYsNyArMjk2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09
IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9t
U3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxp
c3QobmV3IEFyZ0xpc3QpCi0gICAgLCBtYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9y
QmFzZWxpbmVKSVQoc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVTdGF0cz4oKSkKKyAgICAsIG1hY2hp
bmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVChtYWtlVW5pcXVlPFNpbXBs
ZVN0YXRzPigpKQogICAgICwgY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25NYXAoKnRoaXMpCiAg
ICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKICAgICAsIHN5bWJvbEltcGxUb1N5bWJvbE1hcCgqdGhp
cykKQEAgLTMxMiw4ICszMTIsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgLCBtX2luaXRpYWxpemluZ09iamVjdENsYXNzKDApCiAjZW5kaWYKICAgICAs
IG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KDApCi0gICAgLCBtX2NvZGVDYWNoZShzdGQ6Om1ha2Vf
dW5pcXVlPENvZGVDYWNoZT4oKSkKLSAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKHN0ZDo6bWFr
ZV91bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCisgICAgLCBtX2NvZGVDYWNoZSht
YWtlVW5pcXVlPENvZGVDYWNoZT4oKSkKKyAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKG1ha2VV
bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCiAgICAgLCBtX3R5cGVQcm9maWxlckVu
YWJsZWRDb3VudCgwKQogICAgICwgbV9wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoSXNXYXRjaGVk
KQogICAgICwgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50KDApCkBAIC00MDcsNyAr
NDA3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIExM
SW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7CiAgICAgCiAgICAgaWYgKFVOTElL
RUxZKE9wdGlvbnM6OnVzZVByb2ZpbGVyKCkpKSB7Ci0gICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9m
aWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPigqdGhpcyk7CisgICAg
ICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNl
PigqdGhpcyk7CiAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gcGF0aE91dDsKICAgICAgICAg
Y29uc3QgY2hhciogcHJvZmlsZXJQYXRoID0gZ2V0ZW52KCJKU0NfUFJPRklMRVJfUEFUSCIpOwpA
QCAtNDIzLDcgKzQyMyw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICAgICAvLyB3b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlDb250cm9sbGVyID0g
YWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOwogCi0gICAgbV9ieXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5PigqdGhpcyk7CisgICAgbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gbWFr
ZVVuaXF1ZTxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CiAKICAgICBpZiAoT3B0
aW9uczo6dXNlVHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIGVuYWJsZVR5cGVQcm9maWxlcigpOwpA
QCAtNDQyLDkgKzQ0Miw5IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlw
ZSkKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAKICAgICBpZiAoT3B0aW9u
czo6dXNlUmFuZG9taXppbmdGdXp6ZXJBZ2VudCgpKQotICAgICAgICBzZXRGdXp6ZXJBZ2VudChz
dGQ6Om1ha2VfdW5pcXVlPFJhbmRvbWl6aW5nRnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAg
IHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8UmFuZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMp
KTsKICAgICBlbHNlIGlmIChPcHRpb25zOjp1c2VEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQo
KSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQoc3RkOjptYWtlX3VuaXF1ZTxEb3VibGVQcmVkaWN0
aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlx
dWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50PigqdGhpcykpOwogCiAgICAgaWYgKE9wdGlv
bnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVPcmlnaW5NYXAoKSkKICAgICAgICAgc2V0U2hvdWxk
QnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmcoKTsKQEAgLTQ1Nyw5ICs0NTcsOSBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAv
LyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMgdGhhdCB0aGUgSklUIGlzIGdvaW5nIHRvIHVzZSBh
cmUgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvbXBpbGF0aW9uIHRocmVhZHMuCiAgICAgaWYgKGNhblVz
ZUpJVCgpKSB7Ci0gICAgICAgIGppdFN0dWJzID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRUaHVua3M+
KCk7CisgICAgICAgIGppdFN0dWJzID0gbWFrZVVuaXF1ZTxKSVRUaHVua3M+KCk7CiAjaWYgRU5B
QkxFKEZUTF9KSVQpCi0gICAgICAgIGZ0bFRodW5rcyA9IHN0ZDo6bWFrZV91bmlxdWU8RlRMOjpU
aHVua3M+KCk7CisgICAgICAgIGZ0bFRodW5rcyA9IG1ha2VVbmlxdWU8RlRMOjpUaHVua3M+KCk7
CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rp
b25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxsKTsKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5j
dGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNvbnN0cnVjdCk7CkBAIC02MTksNyArNjE5LDcgQEAg
V2F0Y2hkb2cmIFZNOjplbnN1cmVXYXRjaGRvZygpCiBIZWFwUHJvZmlsZXImIFZNOjplbnN1cmVI
ZWFwUHJvZmlsZXIoKQogewogICAgIGlmICghbV9oZWFwUHJvZmlsZXIpCi0gICAgICAgIG1faGVh
cFByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIZWFwUHJvZmlsZXI+KCp0aGlzKTsKKyAgICAg
ICAgbV9oZWFwUHJvZmlsZXIgPSBtYWtlVW5pcXVlPEhlYXBQcm9maWxlcj4oKnRoaXMpOwogICAg
IHJldHVybiAqbV9oZWFwUHJvZmlsZXI7CiB9CiAKQEAgLTEwNDEsOCArMTA0MSw4IEBAIHN0YXRp
YyBib29sIGRpc2FibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCh1bnNpZ25lZCYgY291bnRl
ciwgY29uc3QgRnVuYyYgZG9ECiBib29sIFZNOjplbmFibGVUeXBlUHJvZmlsZXIoKQogewogICAg
IGF1dG8gZW5hYmxlVHlwZVByb2ZpbGVyID0gW3RoaXNdICgpIHsKLSAgICAgICAgdGhpcy0+bV90
eXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlcj4oKTsKLSAgICAgICAg
dGhpcy0+bV90eXBlUHJvZmlsZXJMb2cgPSBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlckxv
Zz4oKnRoaXMpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlciA9IG1ha2VVbmlxdWU8VHlw
ZVByb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX3R5cGVQcm9maWxlckxvZyA9IG1ha2VVbmlx
dWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7CiAgICAgfTsKIAogICAgIHJldHVybiBlbmFibGVQ
cm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX3R5cGVQcm9maWxlckVuYWJsZWRDb3VudCwgZW5h
YmxlVHlwZVByb2ZpbGVyKTsKQEAgLTEwNjEsNyArMTA2MSw3IEBAIGJvb2wgVk06OmRpc2FibGVU
eXBlUHJvZmlsZXIoKQogYm9vbCBWTTo6ZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAg
ICAgYXV0byBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyID0gW3RoaXNdICgpIHsKLSAgICAgICAg
dGhpcy0+bV9jb250cm9sRmxvd1Byb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9sRmxv
d1Byb2ZpbGVyPigpOworICAgICAgICB0aGlzLT5tX2NvbnRyb2xGbG93UHJvZmlsZXIgPSBtYWtl
VW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+KCk7CiAgICAgfTsKIAogICAgIHJldHVybiBlbmFi
bGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudChtX2NvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVk
Q291bnQsIGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIpOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAg
dm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEoKQogCiB2b2lkIFZNOjpxdWV1ZU1pY3JvdGFz
ayhKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiB7
Ci0gICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRUYXNr
PigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RGTW92ZSh0YXNrKSkpOworICAgIG1fbWljcm90YXNr
UXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsICZnbG9iYWxPYmplY3Qs
IFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBWTTo6ZHJhaW5NaWNyb3Rhc2tzKCkKQEAgLTEy
MzAsMTQgKzEyMzAsMTQgQEAgdm9pZCBWTTo6ZW5zdXJlU2hhZG93Q2hpY2tlbigpCiB7CiAgICAg
aWYgKG1fc2hhZG93Q2hpY2tlbikKICAgICAgICAgcmV0dXJuOwotICAgIG1fc2hhZG93Q2hpY2tl
biA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93Q2hpY2tlbj4oKTsKKyAgICBtX3NoYWRvd0NoaWNr
ZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNrZW4+KCk7CiB9CiAKICNkZWZpbmUgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkg
XAogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFtZSMjU2xvdygpIFwKICAgICB7IFwKICAgICAgICAg
QVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAgICAgYXV0byBzcGFjZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlw
ZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKICAgICAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAgICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBc
CiAgICAgICAgIHJldHVybiBtXyMjbmFtZS5nZXQoKTsgXApAQCAtMTI2OCw3ICsxMjY4LDcgQEAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWEKICAgICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3co
KSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8g
c3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVCho
ZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5p
cXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5
cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7IFwKICAgICAgICAgbV8jI25h
bWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAgICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsg
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKaW5kZXggMjRmMThhZDAyZGUyZmVmOTAwOTM0NDg2NDMwYzk4ZmU5NDk0MjRlZi4uNTMzOTNj
YjI1OGY3NDJjNmFjZmRkZWFlYzZjNzE3NTY0NGQ3OTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC00MTcsNyArNDE3LDcg
QEAgY2xhc3MgQWlySVJHZW5lcmF0b3IgewogICAgIHZvaWQgZW1pdFBhdGNocG9pbnQoQmFzaWNC
bG9jayogYmFzaWNCbG9jaywgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2gsIFRtcCByZXN1bHQs
IFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgaW5saW5lU2l6ZT4mJiBhcmdzKQogICAgIHsKICAgICAg
ICAgaWYgKCFtX3BhdGNocG9pbnRTcGVjaWFsKQotICAgICAgICAgICAgbV9wYXRjaHBvaW50U3Bl
Y2lhbCA9IHN0YXRpY19jYXN0PEIzOjpQYXRjaHBvaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVj
aWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKSk7CisgICAgICAg
ICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0gc3RhdGljX2Nhc3Q8QjM6OlBhdGNocG9pbnRTcGVj
aWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+
KCkpKTsKIAogICAgICAgICBJbnN0IGluc3QoUGF0Y2gsIHBhdGNoLCBBcmc6OnNwZWNpYWwobV9w
YXRjaHBvaW50U3BlY2lhbCkpOwogICAgICAgICBJbnN0IHJlc3VsdE1vdjsKQEAgLTQ4Nyw3ICs0
ODcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRvciB7CiAKICAgICAgICAgLy8gRklYTUU6IE1ha2Ug
YSBoYXNobWFwIG9mIHRoZXNlLgogICAgICAgICBCMzo6Q2hlY2tTcGVjaWFsOjpLZXkga2V5KGJy
YW5jaCk7Ci0gICAgICAgIEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxC
Mzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6
Q2hlY2tTcGVjaWFsPihrZXkpKSk7CisgICAgICAgIEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwg
PSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVu
aXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CiAKICAgICAgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGUgbmVlZCBmb3IgZHVtbXkgdmFsdWVzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQwNDAKQEAgLTIxMzksMTAgKzIxMzksMTAgQEAgYXV0
byBBaXJJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4gQjM6Ok9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6
OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlQWly
KENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBm
dW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCB1
aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNl
cHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0gICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVy
RW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOwotICAgIGNv
bXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0Nh
bGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRK
SVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQu
d2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVycz4oKTsKIAogICAgIEIz
OjpQcm9jZWR1cmUgcHJvY2VkdXJlOwogICAgIENvZGUmIGNvZGUgPSBwcm9jZWR1cmUuY29kZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CmluZGV4IDIwOTQxNzdlZDZmMTgzYWI0ZDg2MmVjMjI2N2QzMGYyOGI3ZGU1YjYuLjE1OGRmOWZh
OWYwYzlmNzIxYWMyOTI3NzgxODhkY2YyOGU3MDdmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE1NTEsMTAgKzE1NTEsMTAg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBPcmlnaW4KIAogRXhwZWN0ZWQ8c3Rk
Ojp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShD
b21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29uc3QgdWludDhfdCogZnVu
Y3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21D
YWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9yeU1vZGUgbW9kZSwgQ29t
cGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGll
clVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4o
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIAot
ICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENDYWxsSGVscGVycz4oKTsKLSAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5
cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxh
dGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBl
cnM+KCk7CisgICAgY29tcGlsYXRpb25Db250ZXh0Lndhc21FbnRyeXBvaW50SklUID0gbWFrZVVu
aXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAgICBQcm9jZWR1cmUgcHJvY2VkdXJlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggZjk4NWQ1MjNjMmU5
M2YzYmQyM2ZiN2M1NzEyYjU4NjhjYzE2YTY4NS4uNTA2ZGY0YmVmZDBkNTY0MTg0NGNlNTI3OTUx
MTVmNjEyODcxNjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFu
LmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJz
dHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1
bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxC
Mzo6Q29tcGlsYXRpb24+KAorICAgICAgICAgICAgICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25z
W2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxCMzo6
Q29tcGlsYXRpb24+KAogICAgICAgICAgICAgICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZm
ZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBCQlEgZnVuY3Rpb25bJWldICVz
IG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRh
dGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxl
SW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lp
KCkuZGF0YSgpKSwKICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRy
eXBvaW50Qnlwcm9kdWN0cykpOwogICAgICAgICAgICAgfQpAQCAtMzI3LDcgKzMyNyw3IEBAIHZv
aWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNvbXBpbGF0aW9uPigKKyAgICAgICAgICAgICAgICBl
bWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBt
YWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgICAgICAgICAgICAgIEZJTkFMSVpF
X0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIkVtYmVkZGVyLT5XZWJBc3Nl
bWJseSBlbnRyeXBvaW50WyVpXSAlcyBuYW1lICVzIiwgZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJl
LnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rp
b25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0
aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgICAgICAgICAgICAgIFdU
Rk1vdmUoY29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggYzUx
M2ZkMmY1MGVkNmZiMTdjMzM4NWVmMjkwNTI3ODE3MzkyMTAzNy4uMGQ3YTAzYzM2MTI5Y2QxZGUy
YzU0ZmZjZDUwMjk1YjU2YzViODk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PTUdQbGFuLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGls
YXRpb25FZmZvcnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBvbWdFbnRyeXBvaW50
LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgIG9t
Z0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAg
ICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIldl
YkFzc2VtYmx5IE9NRyBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIsIG1fZnVuY3Rpb25JbmRleCwg
c2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5h
bWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+
Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEoKSksCiAgICAgICAgIFdURk1v
dmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5cHJvZHVjdHMpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKaW5kZXggMzZkNzRjMTRiMThjNzA3YjgxMmEw
NDg3ZjkxZTI5YzM4NTM5MWRlMi4uNjYwZjk1NjU3MzhiMTBhMzBmM2U3Y2M4MThhMzJjODU4Nzgy
MTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCkBA
IC0yMTAsNyArMjEwLDcgQEAgV29ya2xpc3Q6OldvcmtsaXN0KCkKICAgICBtX3RocmVhZHMucmVz
ZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ29tcGlsYXRpb25UaHJlYWRzKTsKICAgICBMb2NrSG9sZGVy
IGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZD
b21waWxhdGlvblRocmVhZHM7IGkrKykKLSAgICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKKyAg
ICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFdvcmtsaXN0OjpUaHJl
YWQ+KGxvY2tlciwgKnRoaXMpKTsKIH0KIAogV29ya2xpc3Q6On5Xb3JrbGlzdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKaW5kZXggNWRkNDUxYmVhODRkNTkw
YmJmMGZjYjA3NmUyNmZmZDNjYzdiODFhYy4uNzM1MjIwMjg5MzdjNmRhYzFmYzQ3M2M3ZTRjZGM2
NDk1OGNlOGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNU
b1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3Jl
YXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcAogewogICAgIENDYWxs
SGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQ7
CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4o
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKICAg
ICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKIAogICAgIC8vIEZJWE1FIFN0b3AgdXNpbmcg
MCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY1MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cAppbmRleCA3ZjAzM2ZlYzFjMzY5YTk0MjNiMzNjZjhlYjMzMzRjNTFjZTA4MDhiLi5jNGI3N2Nh
ZGJlNWVlYTU3M2VjODUyYjk1ZWY2YTc4OWI4Mjg1MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTE3MDYsNyArMTcwNiw3IEBAIGNs
YXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAgICAgICBkdW1wRGlzanVuY3Rpb24obV9ib2R5RGlz
anVuY3Rpb24uZ2V0KCkpOwogI2VuZGlmCiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9uKSwgbV9hbGxQYXJl
bnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9uKSwg
bV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKICAgICB9
CiAKICAgICB2b2lkIGNoZWNrSW5wdXQodW5zaWduZWQgY291bnQpCkBAIC0xOTI2LDcgKzE5MjYs
NyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewogICAgICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQg
PSBwYXJlbnRoZXNlc0JlZ2luLmF0b20uc3VicGF0dGVybklkOwogCiAgICAgICAgIHVuc2lnbmVk
IG51bVN1YnBhdHRlcm5zID0gbGFzdFN1YnBhdHRlcm5JZCAtIHN1YnBhdHRlcm5JZCArIDE7Ci0g
ICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0
ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIGF1
dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihu
dW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CiAKICAgICAgICAgdW5zaWduZWQgZmlyc3RU
ZXJtSW5QYXJlbnRoZXNlcyA9IGJlZ2luVGVybSArIDE7CiAgICAgICAgIHBhcmVudGhlc2VzRGlz
anVuY3Rpb24tPnRlcm1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW5kVGVybSAtIGZpcnN0VGVy
bUluUGFyZW50aGVzZXMgKyAyKTsKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIGNsYXNzIEJ5dGVDb21w
aWxlciB7CiAKICAgICB2b2lkIHJlZ2V4QmVnaW4odW5zaWduZWQgbnVtU3VicGF0dGVybnMsIHVu
c2lnbmVkIGNhbGxGcmFtZVNpemUsIGJvb2wgb25jZVRocm91Z2gpCiAgICAgewotICAgICAgICBt
X2JvZHlEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1T
dWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uID0g
bWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXpl
KTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zLmFwcGVuZChCeXRlVGVybTo6Qm9k
eUFsdGVybmF0aXZlQmVnaW4ob25jZVRocm91Z2gpKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zWzBdLmZyYW1lTG9jYXRpb24gPSAwOwogICAgICAgICBtX2N1cnJlbnRBbHRlcm5h
dGl2ZUluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXgg
NDEyYzZlNGE2Y2JlYWM4OTMyMWIwYWU3ODBmZGQ3NmEwNjE5YmUyZC4uZjY2YTgyZTU3NTFhZGRh
MzI5ZWRlZWY3MGFkOTI2OWQxMWVkMmI5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAKQEAgLTM4OTksNyArMzg5OSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6
OmR1bXBSZWdFeHBEaXNhc3NlbWJseSgpKSkKLSAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1f
ZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxZYXJyRGlzYXNzZW1ibGVyPih0aGlzKTsKIAogICAg
ICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0
U3RhcnRPZkNvZGUobGFiZWwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0
dGVybi5jcHAKaW5kZXggNDlmNzdmNjljNjg1YzY1MjAzZGYzZjAzNGM5MGQxODc3YzkyZGM5Yi4u
ZmNjNTFiMjc3ZjUwMTEwM2I3YzY1YmJkMzNhNWNhNDEwZDgxYzBlZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIGNsYXNz
IENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IgewogICAgIHsKICAgICAgICAgY29hbGVzY2VUYWJs
ZXMoKTsKIAotICAgICAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxD
aGFyYWN0ZXJDbGFzcz4oKTsKKyAgICAgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlx
dWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAKICAgICAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fbWF0Y2hl
cy5zd2FwKG1fbWF0Y2hlcyk7CiAgICAgICAgIGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5zd2Fw
KG1fcmFuZ2VzKTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVj
dG9yIHsKICAgICAgICAgLCBtX2NoYXJhY3RlckNsYXNzQ29uc3RydWN0b3IocGF0dGVybi5pZ25v
cmVDYXNlKCksIHBhdHRlcm4udW5pY29kZSgpID8gQ2Fub25pY2FsTW9kZTo6VW5pY29kZSA6IENh
bm9uaWNhbE1vZGU6OlVDUzIpCiAgICAgICAgICwgbV9zdGFja0xpbWl0KHN0YWNrTGltaXQpCiAg
ICAgewotICAgICAgICBhdXRvIGJvZHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5j
dGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5ID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rp
b24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBib2R5LmdldCgpOwogICAgICAgICBt
X2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0
ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGJvZHkpKTsKQEAgLTQ1Niw3ICs0NTYs
NyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgbV9wYXR0ZXJuLnJl
c2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAgIG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvci5y
ZXNldCgpOwogCi0gICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRp
c2p1bmN0aW9uPigpOworICAgICAgICBhdXRvIGJvZHkgPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNq
dW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CiAgICAg
ICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5hZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBt
X3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoYm9keSkpOwpAQCAtNjA4LDcg
KzYwOCw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIEFTU0VSVCghb3B0R3JvdXBOYW1lKTsKIAotICAgICAgICBhdXRvIHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4o
bV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1h
a2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKICAgICAgICAgbV9h
bHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQ
YXJlbnRoZXNlc1N1YnBhdHRlcm4sIHN1YnBhdHRlcm5JZCwgcGFyZW50aGVzZXNEaXNqdW5jdGlv
bi5nZXQoKSwgY2FwdHVyZSwgZmFsc2UpKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IHBhcmVu
dGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0FsdGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVy
bi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uKSk7
CkBAIC02MTYsNyArNjE2LDcgQEAgY2xhc3MgWWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAKICAg
ICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCBpbnZlcnQgPSBmYWxz
ZSkKICAgICB7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPihtX2FsdGVybmF0aXZlKTsKKyAgICAgICAgYXV0
byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+
KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBtX2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQ
YXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRpb24sIG1fcGF0
dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwg
ZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNq
dW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9pbnZlcnRQYXJlbnRoZXRp
Y2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwpAQCAtNzA3LDcgKzcwNyw3IEBAIGNsYXNzIFlhcnJQYXR0
ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAgICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5h
dGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlc1thbHRdLmdldCgpOwogICAgICAgICAg
ICAgaWYgKCFmaWx0ZXJTdGFydHNXaXRoQk9MIHx8ICFhbHRlcm5hdGl2ZS0+bV9zdGFydHNXaXRo
Qk9MKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXdEaXNqdW5jdGlvbikgewotICAgICAgICAg
ICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1
bmN0aW9uPigpOworICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IG1ha2VVbmlx
dWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwogICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5j
dGlvbi0+bV9wYXJlbnQgPSBkaXNqdW5jdGlvbi0+bV9wYXJlbnQ7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIFBhdHRlcm5BbHRlcm5hdGl2ZSogbmV3QWx0ZXJuYXRpdmUgPSBu
ZXdEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKQEAgLTE0NzMsNyArMTQ3Myw3IEBA
IHZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0ZXJuKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFN0
cmluZyYgcGF0dGVyblN0cmluZykKIAogc3RkOjp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiBh
bnljaGFyQ3JlYXRlKCkKIHsKLSAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVu
aXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBw
ZW5kKENoYXJhY3RlclJhbmdlKDB4MDAsIDB4N2YpKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9y
YW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweDAwODAsIDB4MTBmZmZmKSk7CiAg
ICAgY2hhcmFjdGVyQ2xhc3MtPm1fY2hhcmFjdGVyV2lkdGhzID0gQ2hhcmFjdGVyQ2xhc3NXaWR0
aHM6Okhhc0JvdGhCTVBBbmROb25CTVA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uaAppbmRleCAwYjdkYjJlYmE4YWQ1MmRlZDJiNWY3ZTY3ZTU0NWI4YzE2Yzk0NWM3Li43
ZTgyYzg1NWE4NzhlNmMxODBlZDUyMWYxZjdhZDQ4ZDhjMWZiYWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTM0MSw3ICszNDEsNyBAQCBzdHJ1Y3QgUGF0
dGVybkRpc2p1bmN0aW9uIHsKICAgICAKICAgICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFkZE5ld0Fs
dGVybmF0aXZlKCkKICAgICB7Ci0gICAgICAgIG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2ZT4odGhpcykpOworICAgICAgICBtX2FsdGVybmF0
aXZlcy5hcHBlbmQobWFrZVVuaXF1ZTxQYXR0ZXJuQWx0ZXJuYXRpdmU+KHRoaXMpKTsKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhdHRlcm5BbHRlcm5hdGl2ZSo+KG1fYWx0ZXJuYXRpdmVz
Lmxhc3QoKS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
Y3JlYXRlX3JlZ2V4X3RhYmxlcwppbmRleCBjMWY5Zjk5ZGUwOTFjZWNiMmUxZGI1NWMzOGZhMzYw
MzExZWUzN2Y0Li42OWNkODg4NjU3ODU0Y2Q1NDQ1Zjg2M2UyMmQ1NWZmYjljNDBlZmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKQEAgLTk1
LDExICs5NSwxMSBAQCBmb3IgbmFtZSwgY2xhc3NlcyBpbiB0eXBlcy5pdGVtcygpOgogICAgIGZ1
bmN0aW9uICs9ICgie1xuIikKICAgICBpZiBlbWl0VGFibGVzIGFuZCBjbGFzc2VzWyJVc2VUYWJs
ZSJdOgogICAgICAgICBpZiAiSW52ZXJzZSIgaW4gY2xhc3NlczoKLSAgICAgICAgICAgIGZ1bmN0
aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJh
Y3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52ZXJzZSJdKSkKKyAg
ICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5p
cXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52ZXJz
ZSJdKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8g
Y2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRh
LCBmYWxzZSk7XG4iICUgKG5hbWUpKQorICAgICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0
byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZh
bHNlKTtcbiIgJSAobmFtZSkpCiAgICAgZWxzZToKLSAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAg
YXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7
XG4iKQorICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFr
ZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtcbiIpCiAgICAgaGFzQk1QQ2hhcmFjdGVycyA9IEZh
bHNlCiAgICAgaGFzTm9uQk1QQ2hhcmFjdGVycyA9IEZhbHNlCiAgICAgZm9yIChtaW4sIG1heCkg
aW4gcmFuZ2VzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJh
dGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVzLnB5CmluZGV4IGY5ZmVmNDY4ZDJi
NWRkYTZhYWVlYWIwYjNmYzA1OGNkM2VlY2VhYzEuLjUyNmZiNmU3YWMzYTIyN2E2ZDQzY2JiZWZk
MjcwMmQxYTBjNTRjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dl
bmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmljb2RlUHJvcGVydHlUYWJsZXMucHkKQEAgLTUyOSw3
ICs1MjksNyBAQCBkZWYgZHVtcE1hdGNoRGF0YShzZWxmLCBmaWxlLCB2YWx1ZXNQZXJMaW5lLCBk
YXRhTGlzdCwgZm9ybWF0dGVyKToKICAgICBkZWYgZHVtcChzZWxmLCBmaWxlLCBjb21tYUFmdGVy
KToKICAgICAgICAgZmlsZS53cml0ZSgic3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0ZXJD
bGFzcz4ge30oKVxue3tcbiIuZm9ybWF0KHNlbGYuZ2V0Q3JlYXRlRnVuY05hbWUoKSkpCiAgICAg
ICAgIGZpbGUud3JpdGUoIiAgICAvLyBOYW1lID0ge30sIG51bWJlciBvZiBjb2RlUG9pbnRzOiB7
fVxuIi5mb3JtYXQoc2VsZi5uYW1lLCBzZWxmLmNvZGVQb2ludENvdW50KSkKLSAgICAgICAgZmls
ZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJh
Y3RlckNsYXNzPihcbiIpCisgICAgICAgIGZpbGUud3JpdGUoIiAgICBhdXRvIGNoYXJhY3RlckNs
YXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oXG4iKQogICAgICAgICBmaWxlLndyaXRl
KCIgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcjMyPigiKQogICAgICAgICBzZWxm
LmR1bXBNYXRjaERhdGEoZmlsZSwgOCwgc2VsZi5tYXRjaGVzLCBsYW1iZGEgZmlsZSwgbWF0Y2g6
IChmaWxlLndyaXRlKCJ7MDowPSM0eH0iLmZvcm1hdChtYXRjaCkpKSkKICAgICAgICAgZmlsZS53
cml0ZSgiKSxcbiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJu
ZXNzVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAK
aW5kZXggY2M3MDdkZTNmZjRlYzEzOGNmYTQ2YWI0YzhlMTNhYmI2NTkzY2JhMS4uOGM5N2MxYTI0
MWI3MjlhZjhmMzFmMzU5YzdmNTE3N2E2MzQwOWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9i
ZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJr
cy9Mb2NrRmFpcm5lc3NUZXN0LmNwcApAQCAtNjEsOCArNjEsOCBAQCBzdHJ1Y3QgQmVuY2htYXJr
IHsKICAgICBzdGF0aWMgdm9pZCBydW4oY29uc3QgY2hhciogbmFtZSkKICAgICB7CiAgICAgICAg
IExvY2tUeXBlIGxvY2s7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3Vu
dHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkW10+KG51bVRocmVhZHMpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVhZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1
bnNpZ25lZFtdPihudW1UaHJlYWRzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxU
aHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQ
dHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsKICAgICAKICAgICAgICAgdm9sYXRpbGUgYm9vbCBr
ZWVwR29pbmcgPSB0cnVlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9iZW5jaG1hcmtz
L0xvY2tTcGVlZFRlc3QuY3BwIGIvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3Qu
Y3BwCmluZGV4IGYxNTY1MGQ0YzljOGZhNjc3MGY4OTEyZjA5ZGZlMzkyOTEzMDdjMzQuLmJlN2Fi
YTM5MGViNTNlMzU4MWUzNmY0YThiOTUwMGQwZTI5OWY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV1RGL2JlbmNobWFy
a3MvTG9ja1NwZWVkVGVzdC5jcHAKQEAgLTc0LDkgKzc0LDkgQEAgc3RydWN0IEJlbmNobWFyayB7
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiAgICAgc3RhdGljIHZvaWQgcnVuKGNv
bnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRp
bmc8TG9ja1R5cGU+W10+IGxvY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxXaXRoUGFkZGluZzxMb2Nr
VHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQ
YWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPGRv
dWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0
cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+
KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4gbG9ja3MgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBz
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMg
PSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGluZzxkb3VibGU+W10+
KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFk
PltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRo
cmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICogbnVtVGhyZWFkc1Blckdyb3VwKTsKIAogICAgICAg
ICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0
b3IuaAppbmRleCAwYjU0MWI4YzczZDBmNTk4NjUxYmY5NWU3NjkzYjgwN2M5OTlmNzhhLi44ODRl
ZDczMjMzNzYxYTI5ZmI0OTZmMGFkMDk4OTY3NTQ1ZTcwMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29uY3VycmVu
dFZlY3Rvci5oCkBAIC0yNTQsNyArMjU0LDcgQEAgY2xhc3MgQ29uY3VycmVudFZlY3RvciBmaW5h
bCB7CiAgICAgdm9pZCBhbGxvY2F0ZVNlZ21lbnQoKQogICAgIHsKICAgICAgICAgbV9zZWdtZW50
cy5ncm93KG1fbnVtU2VnbWVudHMgKyAxKTsKLSAgICAgICAgbV9zZWdtZW50c1ttX251bVNlZ21l
bnRzKytdID0gc3RkOjptYWtlX3VuaXF1ZTxTZWdtZW50PigpOworICAgICAgICBtX3NlZ21lbnRz
W21fbnVtU2VnbWVudHMrK10gPSBtYWtlVW5pcXVlPFNlZ21lbnQ+KCk7CiAgICAgfQogCiAgICAg
c2l6ZV90IG1fc2l6ZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhy
ZWFkVGFza0hhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxl
ci5jcHAKaW5kZXggODNjMjA3NTFmODVmNGU0ZDIwMTU2MTQ0MWNhODMxNDFjYjVjMzdmZi4uYzYz
YzA1NWEwYTAzNDFkZjZhNWFmMjcwYTRhY2NiOGQ1N2Q3ODQzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDcm9zc1Ro
cmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgpCiAKICAgICB3aGlsZSAoIW1fdGFza1F1ZXVl
LmlzS2lsbGVkKCkpIHsKICAgICAgICAgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1
dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQb29sID0gKG1fdXNlQXV0b2RyYWluZWRQb29sID09
IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6OlVzZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9k
cmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0
b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBvb2wgPSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0g
QXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6VXNlKSA/IG1ha2VVbmlxdWU8QXV0b2RyYWluZWRQ
b29sPigpIDogbnVsbHB0cjsKIAogICAgICAgICAgICAgbV90YXNrUXVldWUud2FpdEZvck1lc3Nh
Z2UoKS5wZXJmb3JtVGFzaygpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNw
cAppbmRleCAzZTI1M2NmMmFjMjE5Y2M4NTU4NGQ0MmM0NTFlZmM3Y2E3OWI2NGVhLi43MDc0YzAz
YWJhZjhmY2YzOTc3ZjJiMTFhYjljM2Q2ZTM4MTYxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0
cmVhbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVh
bT4gRmlsZVByaW50U3RyZWFtOjpvcGVuKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBjb24KICAgICBp
ZiAoIWZpbGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZVByaW50U3RyZWFtPihmaWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxG
aWxlUHJpbnRTdHJlYW0+KGZpbGUpOwogfQogCiB2b2lkIEZpbGVQcmludFN0cmVhbTo6dnByaW50
Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmluZGV4IDA1
ZTM2OTc4MjViYzNkMzQ5ZjQ4ZDY4YzMyYTY4NjIyNTVmYjU4M2UuLjBiNzk1ODY3NDgwZmQwMzIy
NDEyNDU0ZTdkMGFmODMzOGQ2ZTNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0
aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtNjcsMTEgKzY3LDExIEBA
IGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENh
bGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9p
bnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6Omlz
X3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVu
Y3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBw
ZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUs
IE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFi
bGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBl
LCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxsYWJsZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5
cGU+CiAgICAgRnVuY3Rpb24oRnVuY3Rpb25UeXBlIGYpCi0gICAgICAgIDogbV9jYWxsYWJsZVdy
YXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5
cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdy
YXBwZXIobWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91
dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9CiAKICAgICBPdXQgb3BlcmF0b3IoKShJbi4uLiBp
bikgY29uc3QKICAgICB7CkBAIC04NCwxNCArODQsMTQgQEAgY2xhc3MgRnVuY3Rpb248T3V0KElu
Li4uKT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1
ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFi
bGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFi
bGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJs
ZVR5cGUmJiBjYWxsYWJsZSkKICAgICB7Ci0gICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwg
SW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0g
bWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4u
Li4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6
aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0
eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oRnVuY3Rpb25UeXBl
IGYpCiAgICAgewotICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92
ZShmKSk7CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNh
bGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAppbmRleCAzYjFlOTUzMDNk
ZTU0MDUxNDNmYjU2M2NjYjgwNDdlNWFjZWFkMGIzLi5hNGQwNzdmODRmMDJhMWZhMWMxYmUwMzRh
ODZlYjM1MGQ2ZDdmNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaApAQCAtNTg4LDEwICs1ODgsMTAgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9kZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNI
VEFCTEVfSVRFUkFUT1JTCiAgICAgICAgICwgbV9pdGVyYXRvcnMoMCkKLSAgICAgICAgLCBtX211
dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4oKSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlx
dWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQot
ICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtlX3VuaXF1ZTxTdGF0cz4oKSkKKyAgICAgICAgLCBt
X3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTMz
NCwxMCArMTMzNCwxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3Vu
dCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9y
cyhudWxscHRyKQotICAgICAgICAsIG1fbXV0ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQor
ICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1ZTxMb2NrPigpKQogI2VuZGlmCiAjaWYgRFVNUF9I
QVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0gICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5p
cXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVl
PFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIHVuc2lnbmVk
IG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXplKCk7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICBpbmxpbmUgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYg
b3RoZXIpCiAjaWYgQ0hFQ0tfSEFTSFRBQkxFX0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0
b3JzKG51bGxwdHIpCi0gICAgICAgICwgbV9tdXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkp
CisgICAgICAgICwgbV9tdXRleChtYWtlVW5pcXVlPExvY2s+KCkpCiAjZW5kaWYKICAgICB7CiAg
ICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVyYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDllODcyMGY2ZDlhNzk4MGI5NWU1YjEzYzVlNjU1YzM4
OTQ5MzA0YjUuLjUzNzljMGE0ZDVjOGM2ZjM2N2Q5MTY5NmUwZDZhMThjNWQ5ZmVjMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25p
dG9yKGJvb2wgdXNlKQogICAgIH0KIAogICAgIGlmICh1c2UpIHsKLSAgICAgICAgbV9tZWFzdXJl
bWVudFRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCksIHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7CisgICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG1h
a2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmly
ZWQpOwogICAgICAgICBtX21lYXN1cmVtZW50VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3MpOwog
ICAgIH0gZWxzZQogICAgICAgICBtX21lYXN1cmVtZW50VGltZXIgPSBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRM
aWJFeHRyYXMuaAppbmRleCBhZjY1ZTA4Y2E4ODAyNDBlYTlmMTljM2MxZmMxZmRjNTdhYjRkNGFi
Li5kOWJhMWU2YjY4MjE3YmMxYzYyMDU1ZTU0YzVkODc2MTMxOGMzYmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJF
eHRyYXMuaApAQCAtNTY1LDYgKzU2NSwyMyBAQCBjb25zdGV4cHIgc2l6ZV90IGNseih1aW50MzJf
dCB2YWx1ZSwgWmVyb1N0YXR1cyBtaWdodEJlWmVybyA9IFplcm9TdGF0dXM6Ok1heUJlWgogCiB9
IC8vIG5hbWVzcGFjZSBzdGQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNzIFQs
IGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5MSU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWUo
QXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4g
QXJncz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKwogI2RlZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQ
YXJhbWV0ZXI+KHZhbHVlKQogCiB1c2luZyBXVEY6OktCOwpAQCAtNTg1LDMgKzYwMiw1IEBAIHVz
aW5nIFdURjo6bWVyZ2VEZWR1cGxpY2F0ZWRTb3J0ZWQ7CiB1c2luZyBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Y7CiB1c2luZyBXVEY6OnNhZmVDYXN0OwogdXNpbmcgV1RGOjp0cnlCaW5hcnlTZWFy
Y2g7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWU7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVy
LmggYi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAppbmRleCAyNmJiYzhmZDY3YTQ5MzQ2
MzIyMWQ2MTk2MThlYjdjNjQ2ODY0MDMwLi5jYTMzZjg2N2QzOGI1NzU5MjAxNDFkNTIzYzMwN2Fh
ZTdjODIwYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBT
dHJlYW1CdWZmZXIgewogICAgICAgICBtX3NpemUgKz0gc2l6ZTsKICAgICAgICAgd2hpbGUgKHNp
emUpIHsKICAgICAgICAgICAgIGlmICghbV9idWZmZXIuc2l6ZSgpIHx8IG1fYnVmZmVyLmxhc3Qo
KS0+c2l6ZSgpID09IEJsb2NrU2l6ZSkKLSAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxCbG9jaz4oKSk7CisgICAgICAgICAgICAgICAgbV9idWZmZXIuYXBw
ZW5kKG1ha2VVbmlxdWU8QmxvY2s+KCkpOwogICAgICAgICAgICAgc2l6ZV90IGFwcGVuZFNpemUg
PSBzdGQ6Om1pbihCbG9ja1NpemUgLSBtX2J1ZmZlci5sYXN0KCktPnNpemUoKSwgc2l6ZSk7CiAg
ICAgICAgICAgICBtX2J1ZmZlci5sYXN0KCktPmFwcGVuZChkYXRhLCBhcHBlbmRTaXplKTsKICAg
ICAgICAgICAgIGRhdGEgKz0gYXBwZW5kU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZVJlZi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggNzNlOWRmZWMw
NmZkNzg3ZjNiMDZiM2RjOWRhNjVhNTUwNGQxYzAyOS4uOTk4YjQzZTEyMjZlODZjY2RlMzI4YmJk
ZmVlYWI2ZjJjODM4ZGYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgK
KysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTMzLDExICszMywxNyBAQCBuYW1l
c3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFVuaXF1ZVJlZjsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVl
UmVmKEFyZ3MmJi4uLiBhcmdzKQorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFz
dE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQogewogICAgIHJldHVybiBVbmlxdWVSZWY8VD4o
Km5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYm
Li4uIGFyZ3MpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Cit9CisKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiBjbGFzcyBVbmlxdWVSZWYgewogcHVibGljOgpAQCAtNjMsNyArNjksNyBAQCBjbGFz
cyBVbmlxdWVSZWYgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxUPiBtb3ZlVG9VbmlxdWVQdHIoKSB7
IHJldHVybiBXVEZNb3ZlKG1fcmVmKTsgfQogCiBwcml2YXRlOgotICAgIHRlbXBsYXRlPGNsYXNz
IFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZihBcmdz
JiYuLi4pOworICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlx
dWVSZWY8VT4gbWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uKTsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5p
cXVlUmVmKFQmIG90aGVyKQpAQCAtNzksMyArODUsNCBAQCBjbGFzcyBVbmlxdWVSZWYgewogCiB1
c2luZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZjsKK3VzaW5nIFdU
Rjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVu
TG9vcEdMaWIuY3BwCmluZGV4IDVlNWJhOGFiZWJkYmQ0OWJiYjgzN2RkNGM0ZmQ2OWJkNmZmYzM2
MWYuLmZiMjExZDBhMjk2MWRmYzE2YWE2ZTIxYTIxYTk3NGRmZjE1MjY5NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvUnVuTG9vcEdMaWIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBSdW5Mb29wOjpk
aXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlv
bikKICAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29w
IGRpc3BhdGNoQWZ0ZXIiKTsKICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0
KCksIGdfZ2V0X21vbm90b25pY190aW1lKCkgKyBkdXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50
NjQ+KCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5j
dGlvbikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4
dCA9IG1ha2VVbmlxdWU8RGlzcGF0Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsK
ICAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2soc291cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2Vy
RGF0YSkgLT4gZ2Jvb2xlYW4gewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRl
ckNvbnRleHQ+IGNvbnRleHQoc3RhdGljX2Nhc3Q8RGlzcGF0Y2hBZnRlckNvbnRleHQqPih1c2Vy
RGF0YSkpOwogICAgICAgICBjb250ZXh0LT5kaXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKaW5kZXggZGNiYTA2MDgyYzVmNjZlMzE5YTE1ZWU1OTdmYzY0OTc2NmIwNWU2Yy4u
NWJmNGU2ZDAxZGU4NDNlZDI4Nzg4M2VhM2EwM2U4NDk0OTNiZWNkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgY2xhc3MgU3RyaW5nVmlldzo6R3Jh
cGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGwgewogfTsKIAogU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1Zp
ZXcsIHVuc2lnbmVkIGluZGV4KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8SW1wbD4o
c3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFs
PE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxJ
bXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3LmlzTnVsbCgpID8gV1RGOjpudWxsb3B0IDogT3B0
aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFu
aWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IGZkYjhjZTI5MmQ3MzhkYTQy
MDM4YWE5NjVhZjNhY2ExNzhhODBjZWIuLjhkYzc2ZmEyZTU5ZWE2N2UwMjE3MzhjMzExYTM1Nzdm
NGQzNmU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5j
cHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dN
YW5pZmVzdFByb3BlcnR5SW52YWxpZFVSTChjb25zdCBTdHJpbmcmIHByb3AKIHZvaWQgQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nRGV2ZWxvcGVyV2FybmluZyhjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7CiAgICAgaWYgKG1fY29uc29sZUNvbnRleHQpCi0gICAgICAgIG1fY29uc29sZUNv
bnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291cmNlOjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6
TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBs
aWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFuaWZlc3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVz
c2FnZSkpKTsKKyAgICAgICAgbV9jb25zb2xlQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UobWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90
aGVyLCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2csIEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBt
YWtlU3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVS
TC5zdHJpbmcoKSwgIjogIl9zLCBtZXNzYWdlKSkpOwogfQogCiBVUkwgQXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlcjo6cGFyc2VTdGFydFVSTChjb25zdCBKU09OOjpPYmplY3QmIG1hbmlmZXN0LCBj
b25zdCBVUkwmIGRvY3VtZW50VVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVh
Y29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5kZXggOWJmYTVmOTQ5OTRiMDU0NTA2YjgyNmEzMTRi
ODI1ODI3ZWE0MWFkYi4uN2U0Zjc5NDcxZTJjNTlmZTcxYzE0ODEzMmY0YjU1MWQ4ZmZjNzkwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24u
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIE5hdmlnYXRvckJlYWNvbiogTmF2aWdhdG9yQmVhY29uOjpm
cm9tKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0
aWNfY2FzdDxOYXZpZ2F0b3JCZWFjb24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20oJm5h
dmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAg
ICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNv
bj4obmF2aWdhdG9yKTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxO
YXZpZ2F0b3JCZWFjb24+KG5hdmlnYXRvcik7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBw
bGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dDYWNoZXMuY3BwCmluZGV4IDVlZDFmNWNjYTY0MWVi
MDRlYzBlMGEwY2UwNmM4MzcyNDU2OGEyZmYuLjYxNTM5NDMwZGZiOTYxNmZkMjg4ZmVkOTJjYjk0
NGZmNDQ2YjAxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
V2luZG93Q2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdp
bmRvd0NhY2hlcy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgRE9NV2luZG93Q2FjaGVzKiBET01XaW5k
b3dDYWNoZXM6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgYXV0byogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd0NhY2hlcyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6
ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsK
LSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dD
YWNoZXM+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8
RE9NV2luZG93Q2FjaGVzPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcAppbmRleCAwNjU2
YmVmMGIxNzE4ZTMzZGJjN2ZhMGVlNjBjNTdkNDhlMzhkNGU4Li41MTE4YTQ4ODUwZjI0MmQwNDRk
M2I0MGZmMGUzYjIzYmI5NmUyOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcyogV29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20o
V29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0
aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZUNhY2hlcyo+KFN1cHBsZW1lbnQ8V29ya2VyR2xvYmFs
U2NvcGU+Ojpmcm9tKCZzY29wZSwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxl
bWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdv
cmtlckdsb2JhbFNjb3BlQ2FjaGVzPihzY29wZSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IG1ha2VVbmlxdWU8V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM+KHNjb3BlKTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmc2Nv
cGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2
aWdhdG9yQ3JlZGVudGlhbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFs
bWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKaW5kZXggNzFmNDM4Y2Y3ODZjNzZk
N2I1ODcyMTU1OTc2NjhiNjIzNjFiNTk5My4uMTE4MWJkOTg1YTIyYmE0OTNmODM2MzFkN2U0MWZl
ZTg3OWI1NmIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFs
bWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAgTmF2aWdhdG9yQ3JlZGVudGlhbHMqIE5hdmlnYXRvckNyZWRlbnRpYWxz
Ojpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckNyZWRlbnRpYWxz
KiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yQ3JlZGVudGlhbHMqPihTdXBwbGVt
ZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdG9yQ3JlZGVudGlhbHM+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yQ3JlZGVudGlhbHM+KCk7CiAgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9y
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcAppbmRleCBiNmZkNjhkNjcyZWRlMzg3NzhjMTVjNmZlYWFmNDZiNDU1ZTVh
MWNkLi43NWVkYjZhOTM2Mzg4MGU1ODdjMzU3NTZiMTRkZWM5ZjliNDVlNjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQog
ICAgICAgICBhdXRvIHN5c3RlbUlEID0gSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94OjpwZWVrU3lzdGVtSUQodmlldywgb2Zmc2V0KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFN
SU5HX0NFTkNfSU5JVERBVEEpCiAgICAgICAgIGlmIChzeXN0ZW1JRCA9PSBJU09GYWlyUGxheVN0
cmVhbWluZ1Bzc2hCb3g6OmZhaXJQbGF5U3lzdGVtSUQoKSkgewotICAgICAgICAgICAgYXV0byBm
cHNQc3NoID0gc3RkOjptYWtlX3VuaXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7
CisgICAgICAgICAgICBhdXRvIGZwc1Bzc2ggPSBtYWtlVW5pcXVlPElTT0ZhaXJQbGF5U3RyZWFt
aW5nUHNzaEJveD4oKTsKICAgICAgICAgICAgIGlmICghZnBzUHNzaC0+cmVhZCh2aWV3LCBvZmZz
ZXQpKQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBw
c3NoQm94ZXMuYXBwZW5kKFdURk1vdmUoZnBzUHNzaCkpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIE9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94Pj4+IEluaXREYXRhCiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oc3lzdGVt
SUQpOwogI2VuZGlmCi0gICAgICAgIGF1dG8gcHNzaEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94PigpOworICAgICAgICBhdXRvIHBzc2hC
b3ggPSBtYWtlVW5pcXVlPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsK
ICAgICAgICAgaWYgKCFwc3NoQm94LT5yZWFkKHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcAppbmRleCA4MjYyODkzZmUw
YWY5OTkxNGVkMzllOTYwY2YxMGE3NTM0MDcwNWI2Li44MzdkZjEyM2FlNTk2ZjM1MzdjOTE1Mjcw
M2UzZDI3MWIzNDZlYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKQEAgLTYxLDE1ICs2MSwxNSBA
QCBzdHJ1Y3QgQ0RNRmFjdG9yeSB7CiBzdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFs
bGVkQ0RNRmFjdG9yaWVzKCkKIHsKICAgICBzdGF0aWMgYXV0byBjZG1zID0gbWFrZU5ldmVyRGVz
dHJveWVkKFZlY3RvcjxDRE1GYWN0b3J5Kj4gewotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShM
ZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE1Qcml2YXRl
Q2xlYXJLZXk+KGNkbSk7IH0sCisgICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSog
Y2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsg
fSwKICAgICAgICAgICAgIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0
ZW0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlw
ZSksCiAKICAgICAgICAgLy8gRklYTUU6IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0
cDovL3dlYmtpdC5vcmcvYi8xMDkzMTgsIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0gICAg
ICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXllcj4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZh
Y3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1l
ZGlhUGxheWVyPihjZG0pOyB9LAogICAgICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpz
dXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3Rl
bUFuZE1pbWVUeXBlKSwKIAogI2lmIChIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pIHx8IEhBVkUo
QVZTVFJFQU1TRVNTSU9OKSkgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICAgICAgbmV3IENE
TUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RN
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3Rv
cnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQz4oY2RtKTsgfSwKICAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKICNlbmRpZgogICAgIH0pOwpAQCAtMTA3
LDcgKzEwNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE0+IExlZ2FjeUNETTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5
U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3RlbSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVn
YWN5Q0RNPihrZXlTeXN0ZW0pOwogfQogCiBMZWdhY3lDRE06OkxlZ2FjeUNETShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJL
ZXkuY3BwCmluZGV4IGM5MzE2ZGZkOGFiYjQwNTQ5MmY1NTVlYjNkMWIzZDA5MTdjZWZmNTAuLjNh
OGMwMGY1MjMxZjUyYTZlODlkMTgzZDE1MTFjM2FjODc3M2ExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVD
bGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29s
IExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5Q0RN
UHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNs
aWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+
KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkNsZWFyS2V5PihjbGll
bnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCmluZGV4IGFkZGM1NDg5NmI4YTQ0MzhjZmJmZDA2NTgwYWRiYzg2MGE4MWY4NjQu
LmRiNjM5MGU3Zjk5MjU5NzdiODdjYTAwOWVkYWJkNTFjZGI2NjczMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yNDQsNyArMjQ0
LDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0
Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgIH0KIAogICAgIG1fYmxvYkxvYWRlci5lbXBs
YWNlKCp0aGlzKTsKLSAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKKyAgICBtX2Jsb2JMb2FkZXIt
PmxvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVy
KTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAK
aW5kZXggY2QzNDVlYjllYzM0MGMzNmUwZjBhNmVlZDgyZGQ5ODhiNGY5N2QzOS4uOTQwMTNjZjRl
YTY1MjM4ZDgzYjliNGM4MWRiN2QxODE2NTMyNDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRj
aFJlcXVlc3QmIHJlcXVlc3QKIAogICAgIHJlc3BvbnNlLT5hZGRBYm9ydFN0ZXBzKHJlcXVlc3Qu
c2lnbmFsKCkpOwogCi0gICAgcmVzcG9uc2UtPm1fYm9keUxvYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Qm9keUxvYWRlcj4ocmVzcG9uc2UuZ2V0KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykp
OworICAgIHJlc3BvbnNlLT5tX2JvZHlMb2FkZXIgPSBtYWtlVW5pcXVlPEJvZHlMb2FkZXI+KHJl
c3BvbnNlLmdldCgpLCBXVEZNb3ZlKHJlc3BvbnNlQ2FsbGJhY2spKTsKICAgICBpZiAoIXJlc3Bv
bnNlLT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpKQogICAgICAgICByZXNw
b25zZS0+bV9ib2R5TG9hZGVyID0gbnVsbHB0cjsKIH0KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lk
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKQogCiBib29sIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBtX2xvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0
aGlzLCAmbV9yZXNwb25zZS5tX2JvZHktPmNvbnN1bWVyKCkpOworICAgIG1fbG9hZGVyID0gbWFr
ZVVuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMsICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIo
KSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNvbnRleHQsIHJlcXVlc3QpOwogICAgIHJldHVybiBt
X2xvYWRlci0+aXNTdGFydGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5jcHAKaW5kZXggNjEwMjA4OTljYmM0YTdlNDMzYjE1
MWRjY2FlYmZlOTA3NjRkM2UyZC4uODUwZDIyZGUyODViYjMzNWQyMmU4YzJlMjUzYjdhYjZlMGM2
MDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRv
ckdhbWVwYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0
b3JHYW1lcGFkLmNwcApAQCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JHYW1lcGFkKiBOYXZpZ2F0
b3JHYW1lcGFkOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdh
bWVwYWQqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHYW1lcGFkKj4oU3VwcGxl
bWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAg
IGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2FtZXBhZD4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9
IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250
cm9sbGVyLmNwcAppbmRleCBiMDlmYzM0MzNiYmZiYjcyOGYzMTVjMTUzM2E2ZjJjOWU0ZmMwMDcx
Li5jZDgwNzBiMjA3ZGI4YTM0NDAyNmNmZjYxMDViODVlZTE5YmM1MjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgY29uc3QgY2hhciogR2VvbG9jYXRpb25D
b250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBh
Z2UqIHBhZ2UsIEdlb2xvY2F0aW9uQ2xpZW50JiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKHBhZ2Up
OwotICAgIFN1cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRy
b2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Db250
cm9sbGVyPigqcGFnZSwgY2xpZW50KSk7CisgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRv
KHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1
ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+KCpwYWdlLCBjbGllbnQpKTsKIH0KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKaW5kZXggYjM0ZjQ5YTY3MWQ4
NWY1MTQyYjhiYWYwZjUyYmE5OTFhYzQzNTlkYy4uMzVkZmJmOGYzZjI1NjljMDEzNTM1NjYzMDBm
NWI3ODM3ZGUyOGZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
TmF2aWdhdG9yR2VvbG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpmcm9tKE5hdmlnYXRv
ciYgbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdlb2xvY2F0aW9uKiBzdXBwbGVtZW50ID0g
c3RhdGljX2Nhc3Q8TmF2aWdhdG9yR2VvbG9jYXRpb24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46
OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVu
dCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmln
YXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3IpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZp
Z2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01X
aW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGM3MjAzYTlhODY0MDk3MDUwZDNkYzAwNzky
ZjdhNmI1ODFmYWEyNWUuLjVlOWQ5Nzk2NmJmZGU1OGU2NjA5OWE1MDllNjE4Yjg0YzE4ZDA1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
RE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcApAQCAtNTIsNyArNTIsNyBAQCBET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2UqIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6ZnJvbShET01XaW5kb3cq
IHdpbmRvdykKIHsKICAgICBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqPihTdXBwbGVtZW50PERPTVdpbmRv
dz46OmZyb20od2luZG93LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50
KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2lu
ZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZT4od2luZG93KTsKICAgICAgICAg
c3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5k
b3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cAppbmRleCBmNDMwOTBjNGRjYzNlZGU1ZTI3ZDFhYTQ0Mzg0NDQ3ZDg0OWM2NDBiLi45YTc4MTI3
ODQ2M2VkMGE0YTBhZGRkM2Y3ZGIwYzU2NTY5NjJiOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC01MTcsNyArNTE3
LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQkluZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNv
bnN0IFN0cmluZyYgaW5kZXhOYW1lKQogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnaW5kZXgnIG9uICdJ
REJPYmplY3RTdG9yZSc6IFRoZSBzcGVjaWZpZWQgaW5kZXggd2FzIG5vdCBmb3VuZC4iX3MgfTsK
IAotICAgIGF1dG8gaW5kZXggPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOworICAgIGF1dG8gaW5kZXggPSBtYWtlVW5p
cXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwog
CiAgICAgUmVmPElEQkluZGV4PiByZWZlcmVuY2VkSW5kZXggeyAqaW5kZXggfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IGZhMmNkN2VhZDA5YjYwNTUyNWI4Y2I0NDFlZjcwMDFkODMzNTAxMDAuLjQyMjQzZmJhNTcz
MTI5NTQxODg5NGEzMjA0M2U4OWUwYjJjMWE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE3OSw3ICsxNzksNyBA
QCBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplYwogICAgIGlmICghaW5mbyB8fCAoIWZvdW5kICYmICFp
c1ZlcnNpb25DaGFuZ2UoKSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVy
cm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29iamVjdFN0b3JlJyBvbiAnSURCVHJhbnNhY3Rpb24n
OiBUaGUgc3BlY2lmaWVkIG9iamVjdCBzdG9yZSB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAg
YXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9y
ZSA9IG1ha2VVbmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
ICppbmZvLCAqdGhpcyk7CiAgICAgYXV0byogcmF3T2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZS5n
ZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXMuc2V0KG9iamVjdFN0b3JlTmFtZSwg
V1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC02NjcsNyArNjY3LDcgQEAgUmVmPElEQk9iamVj
dFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJgogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3JlZmVyZW5jZWRPYmplY3RT
dG9yZUxvY2spOwogCi0gICAgYXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
T2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sICp0aGlzKTsKKyAg
ICBhdXRvIG9iamVjdFN0b3JlID0gbWFrZVVuaXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRoaXMpOwogICAgIGF1dG8qIHJhd09iamVjdFN0b3Jl
ID0gb2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAgbV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChp
bmZvLm5hbWUoKSwgV1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBAIC03NTUsNyArNzU1LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPElEQkluZGV4PiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURC
T2JqZWN0U3RvcmUmIG9iamVjdFN0b3IKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+Y3JlYXRlSW5k
ZXhPblNlcnZlcihvcGVyYXRpb24sIGluZm8pOwogICAgIH0pKTsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBv
YmplY3RTdG9yZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIGluZm8sIG9iamVjdFN0b3JlKTsKIH0KIAogdm9pZCBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
JiBvcGVyYXRpb24sIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNj
b3BlSW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBhNDg1MDNiNGQyZDgwNDI5NDY4NGE2NWE2NWVi
ZDY0ZjIzM2NkN2I5Li45Yjc1Nzc0OTIxYjQ2NTA2ZjU4M2RlN2ZlYzQyNTBlODU0YWNlNTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxT
Y29wZUluZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlKiBXb3JrZXJHbG9iYWxTY29wZUlu
ZGV4ZWREYXRhYmFzZTo6ZnJvbShXb3JrZXJHCiAgICAgICAgIGlmICghY29ubmVjdGlvblByb3h5
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgYXV0byBuZXdTdXBwbGVt
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZT4o
c2NvcGUsICpjb25uZWN0aW9uUHJveHkpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBt
YWtlVW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlPihzY29wZSwgKmNvbm5l
Y3Rpb25Qcm94eSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwog
ICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1
cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4
IDk0OGNmNzQ2NjNhZTY5YzgyZGE0NDRlMDkzNDczZGQ4NTZkNGRlOTMuLjM3NzExZGMxMDNkYjZj
OWE5YjgxM2RiYzlkZjc5OWI3ZTI2YTZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IElEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlCiAKIElEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6SURCQ29ubmVjdGlvblRvU2VydmVyKElEQkNvbm5lY3Rpb25Ub1Nl
cnZlckRlbGVnYXRlJiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUobWFrZVdlYWtQdHIoZGVs
ZWdhdGUpKQotICAgICwgbV9wcm94eShzdGQ6Om1ha2VfdW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94
eT4oKnRoaXMpKQorICAgICwgbV9wcm94eShtYWtlVW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94eT4o
KnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCAyNzUz
ZmQwYzI0NTdiOWMwOWQ5ZDg5ZTRmNzYyYjQ3OWY4YjQ0MGIxLi44ZTFkZTA2ZDcxZThmMGIyMjNk
Njg2ZTVlMWE4YTIyMDliNzQzODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAK
QEAgLTQyLDcgKzQyLDcgQEAgVHJhbnNhY3Rpb25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0
aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWUKICAgICBpZiAobV9pbmRl
eElkZW50aWZpZXIpCiAgICAgICAgIG1faW5kZXhSZWNvcmRUeXBlID0gcmVxdWVzdC5yZXF1ZXN0
ZWRJbmRleFJlY29yZFR5cGUoKTsKICAgICBpZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5k
aW5nQ3Vyc29yKCkpCi0gICAgICAgIG1fY3Vyc29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjdXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOwor
ICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRp
Zmllcj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKIAogICAgIG1faWRiUmVxdWVzdCA9
ICZyZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCA1NWI0MTI0NDFlZjE3MjUwOGNmMDVkZjFmY2E2
ZDFjNGZkNTBlOTQwLi40ZmU2YzRhODdkNWMzZDViMDUxMGM2ZWJiN2MzZmYxNWE2MjI0MDNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTZXJ2
ZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVuCiAK
ICAgICBhdXRvIHVuaXF1ZUlEQkRhdGFiYXNlID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC5hZGQo
aWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAgaWYgKHVuaXF1ZUlEQkRhdGFiYXNlLmlzTmV3RW50
cnkpCi0gICAgICAgIHVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+KCp0aGlzLCBpZGVudGlmaWVyKTsKKyAgICAgICAg
dW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxVbmlxdWVJREJE
YXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIpOwogCiAgICAgcmV0dXJuICp1bmlxdWVJREJEYXRh
YmFzZS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3Qg
SURCRGF0YWJhc2UKICAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUobV9zZXNzaW9uSUQs
IGlkZW50aWZpZXIpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlSURCQmFj
a2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRlbnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9yeVBh
dGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIsIG1fcGVyT3JpZ2luUXVvdGEp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFNRTGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9u
SUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdTdG9yZVRl
bXBvcmFyeUZpbGVIYW5kbGVyLCBtX3Blck9yaWdpblF1b3RhKTsKIH0KIAogdm9pZCBJREJTZXJ2
ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCkBAIC03
NjEsNyArNzYxLDcgQEAgdm9pZCBJREJTZXJ2ZXI6OlF1b3RhVXNlcjo6aW5pdGlhbGl6ZVNwYWNl
VXNlZCh1aW50NjRfdCBzcGFjZVVzZWQpCiBJREJTZXJ2ZXI6OlF1b3RhVXNlciYgSURCU2VydmVy
OjplbnN1cmVRdW90YVVzZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgcmV0
dXJuICptX3F1b3RhVXNlcnMuZW5zdXJlKG9yaWdpbiwgW3RoaXMsICZvcmlnaW5dIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UXVvdGFVc2VyPigqdGhpcywgbV9xdW90YU1hbmFn
ZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9yaWdpbiB7IG9yaWdpbiB9KTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGFVc2VyPigqdGhpcywgbV9xdW90YU1hbmFn
ZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdpbiksIENsaWVudE9yaWdpbiB7IG9yaWdpbiB9KTsK
ICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JbmRleFZhbHVlU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKaW5kZXgg
Njk4M2M5ZDdlYWZmNTYxNjcyMDRkOTUyZjFmMjI2N2JiNDBjYTRiYS4uOGQ5MjFkOGVmZTZiYTg0
MGEzMGQ2MWRmZGM2YTcyMWU4MjhhNDNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKQEAgLTky
LDcgKzkyLDcgQEAgSURCRXJyb3IgSW5kZXhWYWx1ZVN0b3JlOjphZGRSZWNvcmQoY29uc3QgSURC
S2V5RGF0YSYgaW5kZXhLZXksIGNvbnN0IElEQktleURhdGEKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yKENvbnN0cmFpbnRFcnJvcik7CiAKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEluZGV4VmFsdWVF
bnRyeT4obV91bmlxdWUpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5pcXVlKTsKIAogICAgIHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUtPmFkZEtleSh2YWx1ZUtleSk7CiAgICAgbV9vcmRlcmVkS2V5cy5pbnNlcnQoaW5kZXhL
ZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggNDdjYzQyZmQyNmQ2NDczYzY0MTkyN2U5OTJkNGVjNmU4ZDdiZjhlZS4uNWU3MTQ0OTc4NGEw
ZGEwNzY3Nzg5YThkZWRjNTIyNjg5ZjRkOGRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+
IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpjcmVhdGUoTWVtb3J5SURCQmFja2luZ1N0
b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4o
YmFja2luZ1N0b3JlLCBpbmZvKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsKIH0KIAogTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1lbW9yeUlE
QkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGlu
Zm8pCkBAIC01Miw3ICs1Miw3IEBAIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihNZW1vcnlJREJCYWNraW5nU3RvCiAgICAgICAgIElE
QkRhdGFiYXNlSW5mbyBpbmZvOwogICAgICAgICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUu
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oaW5mbyk7CiAgICAgICAgIGlmIChlcnJvci5pc051
bGwoKSkKLSAgICAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgICAgICAgICBtX29yaWdpbmFsRGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIH0KIH0KIApA
QCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJl
Y29yZFZhbHVlQ2hhbmdlZChNZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0CiAKICAgICBhdXRvIG9y
aWdpbmFsQWRkUmVzdWx0ID0gbV9vcmlnaW5hbFZhbHVlcy5hZGQoJm9iamVjdFN0b3JlLCBudWxs
cHRyKTsKICAgICBpZiAob3JpZ2luYWxBZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgb3Jp
Z2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxLZXlWYWx1
ZU1hcD4oKTsKKyAgICAgICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKIAogICAgIGF1dG8qIG1hcCA9IG9yaWdpbmFsQWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmNwcAppbmRleCBmZmMzNWMzOTFlZTJjNDBjMjI5MTI5ZGI1ZDFhYWZjOWUyMGE4ZDgyLi41M2M1
MGYzY2FlODM3MThjM2NkNTQ2NWQwNGNmMTNiY2Q1YTFmMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURC
QmFja2luZ1N0b3JlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgdWludDY0X3QgbWF4R2Vu
ZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAwMDAwMDAwOwogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVt
b3J5SURCQmFja2luZ1N0b3JlPiBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmll
cikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+
KHNlc3Npb25JRCwgaWRlbnRpZmllcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURC
QmFja2luZ1N0b3JlPihzZXNzaW9uSUQsIGlkZW50aWZpZXIpOwogfQogCiBNZW1vcnlJREJCYWNr
aW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAgLTYyLDcgKzYyLDcg
QEAgTWVtb3J5SURCQmFja2luZ1N0b3JlOjp+TWVtb3J5SURCQmFja2luZ1N0b3JlKCkgPSBkZWZh
dWx0OwogSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFi
YXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgaWYgKCFtX2RhdGFiYXNlSW5m
bykKLSAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKKyAgICAgICAgbV9kYXRhYmFz
ZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNl
TmFtZSgpLCAwKTsKIAogICAgIGluZm8gPSAqbV9kYXRhYmFzZUluZm87CiAgICAgcmV0dXJuIElE
QkVycm9yIHsgfTsKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OnNldERhdGFiYXNlSW5mbyhjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCiAgICAgLy8gSXQg
aXMgbm90IHZhbGlkIHRvIGRpcmVjdGx5IHNldCBkYXRhYmFzZSBpbmZvIG9uIGEgYmFja2luZyBz
dG9yZSB0aGF0IGhhc24ndCBhbHJlYWR5IHNldCBpdHMgb3duIGRhdGFiYXNlIGluZm8uCiAgICAg
QVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKIAotICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFr
ZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogfQogCiBJREJFcnJvciBNZW1vcnlJREJC
YWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBp
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJbmRleC5jcHAKaW5kZXggNDlkZGNhNmJkNDBkMjlkNDJlMzhiODUxMzFjODlmZGZl
N2Q0NzkyZC4uODU5NWRiYjhmNGE3ZWUzZDE5MWUzMWZiNjEwYjA0OTc1Yjg3NDYwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SW5kZXguY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgSURCRXJyb3IgTWVtb3J5SW5kZXg6OnB1dElu
ZGV4S2V5KGNvbnN0IElEQktleURhdGEmIHZhbHVlS2V5LCBjb25zdCBJbmRleEtleSYgaW4KICAg
ICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SW5kZXg6OnByb3Zpc2lvbmFsUHV0SW5kZXhLZXkiKTsK
IAogICAgIGlmICghbV9yZWNvcmRzKSB7Ci0gICAgICAgIG1fcmVjb3JkcyA9IHN0ZDo6bWFrZV91
bmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2luZm8udW5pcXVlKCkpOworICAgICAgICBtX3JlY29y
ZHMgPSBtYWtlVW5pcXVlPEluZGV4VmFsdWVTdG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKICAgICAg
ICAgbm90aWZ5Q3Vyc29yc09mQWxsUmVjb3Jkc0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTI1OSw3
ICsyNTksNyBAQCBNZW1vcnlJbmRleEN1cnNvciogTWVtb3J5SW5kZXg6Om1heWJlT3BlbkN1cnNv
cihjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5SW5kZXhDdXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRo
aXMsIGluZm8pOwogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCBkODY1YjY0MjFhNWM3ZWE0YjBlNmU4Y2Rl
MzkxN2U3ZmNlNjI3Mjc2Li43MTU1YjU5N2E0MjBmNTllMTM5NWI5MjgxZGU4YzJkNjRkYWE4NzEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTI2MSw4ICsyNjEsOCBAQCBJREJFcnJv
ciBNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uJiB0cmFuc2FjdGlvbgogCiAgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpIHsKICAgICAgICAg
QVNTRVJUKCFtX29yZGVyZWRLZXlzKTsKLSAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gc3RkOjpt
YWtlX3VuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKLSAgICAgICAgbV9vcmRlcmVkS2V5cyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCS2V5RGF0YVNldD4oKTsKKyAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0g
bWFrZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgbV9vcmRlcmVkS2V5cyA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPElEQktleURhdGFTZXQ+KCk7CiAgICAgfQogCiAg
ICAgYXV0byBtYXBSZXN1bHQgPSBtX2tleVZhbHVlU3RvcmUtPnNldChrZXlEYXRhLCB2YWx1ZS5k
YXRhKCkpOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yKiBNZW1v
cnlPYmplY3RTdG9yZTo6bWF5YmVPcGVuQ3Vyc29yKGNvbnN0IElEQkN1cnNvckluZm8mCiAgICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlPYmplY3RTdG9y
ZUN1cnNvcj4oKnRoaXMsIGluZm8pOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtl
VW5pcXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJu
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggNDBiNmI2NzhlYWRiN2EzZDM2NjZjODNjYTE4YzkyMGFlMzk4MDk5
ZS4uNGQ5ZTNhY2M3MmNjMzU4ZDVhMjUwZGUyOWQ5Njg3NTFkMWI3NGE4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVs
YXRlSW5pdGlhbAogICAgIH0KIAogICAgIC8vIFRoaXMgaW5pdGlhbCBkYXRhYmFzZSBpbmZvIG1h
dGNoZXMgdGhlIGRlZmF1bHQgdmFsdWVzIHdlIGp1c3QgcHV0IGludG8gdGhlIG1ldGFkYXRhIGRh
dGFiYXNlLgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9p
ZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFj
dEV4aXN0aW5nRGF0YWJhc2VJbmZvKCkKQEAgLTYzMSw3ICs2MzEsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGlu
Z0RhdGFiYXNlSQogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBkYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZl
cnNpb24pOworICAgIGF1dG8gZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VWZXJzaW9uKTsKIAogICAgIHsKICAgICAgICAgU1FM
aXRlU3RhdGVtZW50IHNxbCgqbV9zcWxpdGVEQiwgIlNFTEVDVCBpZCwgbmFtZSwga2V5UGF0aCwg
YXV0b0luYywgbWF4SW5kZXhJRCBGUk9NIE9iamVjdFN0b3JlSW5mbzsiX3MpOwpAQCAtNzkzLDcg
Kzc5Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hE
YXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAKICAgICBTdHJpbmcgZGJGaWxlbmFt
ZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKIAotICAgIG1fc3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAgIG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0
ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewog
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRo
ICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURC
KCk7CkBAIC05MDMsMTEgKzkwMywxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGVzdGFibGlzaCB0
cmFuc2FjdGlvbiBpZGVudGlmaWVyIHRoYXQgYWxyZWFkeSBleGlzdHMiX3MgfTsKICAgICB9CiAK
LSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJ
REJUcmFuc2FjdGlvbj4oKnRoaXMsIGluZm8pOworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CiAKICAg
ICBhdXRvIGVycm9yID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKm1fc3FsaXRl
REIpOwogICAgIGlmIChlcnJvci5pc051bGwoKSAmJiBpbmZvLm1vZGUoKSA9PSBJREJUcmFuc2Fj
dGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5m
b0JlZm9yZVZlcnNpb25DaGFuZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4o
Km1fZGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZl
cnNpb25DaGFuZ2UgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJbmZv
KTsKIAogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCAiVVBEQVRFIElE
QkRhdGFiYXNlSW5mbyBTRVQgdmFsdWUgPSA/IHdoZXJlIGtleSA9ICdEYXRhYmFzZVZlcnNpb24n
OyJfcyk7CiAgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTElURV9PSwpAQCAtMjYzNCw3
ICsyNjM0LDcgQEAgU1FMaXRlU3RhdGVtZW50KiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNhY2hl
ZFN0YXRlbWVudChTUUxpdGVJREJCYWNraW5nU3RvcmU6OlMKICAgICB9CiAKICAgICBpZiAobV9z
cWxpdGVEQikgewotICAgICAgICBtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90
PihzcWwpXSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwg
c3RhdGVtZW50KTsKKyAgICAgICAgbV9jYWNoZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVf
dD4oc3FsKV0gPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0YXRl
bWVudCk7CiAgICAgICAgIGlmIChtX2NhY2hlZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90
PihzcWwpXS0+cHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIG1fY2FjaGVkU3Rh
dGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNxbCldID0gbnVsbHB0cjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwCmluZGV4IGY4NDA1YTc5OGEzNjgxMGRjNTc2YWYxZTczYmNhZjUzMTAy
MzdiYWYuLmM2YjNmZDk1M2EwZDUzYWMxNTY4ZTI4NDhjYmM3OGExMmYxOTU3NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgcHJl
ZmV0Y2hMaW1pdCA9IDg7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0
ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjpt
YWtlX3VuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBpbmZvKTsKKyAgICBhdXRv
IGN1cnNvciA9IG1ha2VVbmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7
CiAKICAgICBpZiAoIWN1cnNvci0+ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNTksNyArNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vy
c29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aQogCiBz
dGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3Jl
YXRlQmFja2luZ1N0b3JlQ3Vyc29yKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwg
Y29uc3QgdWludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgdWludDY0X3QgaW5kZXhJRCwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5k
ZXhJRCwgcmFuZ2UpOworICAgIGF1dG8gY3Vyc29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJz
b3I+KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlELCBpbmRleElELCByYW5nZSk7CiAKICAgICBp
ZiAoIWN1cnNvci0+ZXN0YWJsaXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTk5LDcgKzE5OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVT
dGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwpCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRVcHBlcktl
eS5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9u
KCkpOwogCi0gICAgbV9zdGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVu
dD4obV90cmFuc2FjdGlvbi0+c3FsaXRlVHJhbnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsK
KyAgICBtX3N0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0
aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLCBzcWwpOwogCiAgICAgaWYgKG1f
c3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChwcmVwYXJlL2lkKSAtICclcyciLCBt
X3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5kYXRhYmFzZSgpLmxhc3RFcnJvck1z
ZygpKTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNR
TGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRjaE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6
OktleUFuZFZhbHVlKQotICAgICAgICAgICAgcmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNhZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShr
ZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmlsZVBhdGhzKTsKKyAgICAgICAgICAgIHJlY29yZC5y
ZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElEQlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBibG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YS5kYXRh
KCksIGtleURhdGEuc2l6ZSgpLCByZWNvcmQucmVjb3JkLnByaW1hcnlLZXkpKSB7CiAgICAgICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB2YWx1ZSBkYXRhIGZyb20gZGF0
YWJhc2Ugd2hpbGUgYWR2YW5jaW5nIGluZGV4IGN1cnNvciIpOwpAQCAtNDg2LDcgKzQ4Niw3IEBA
IFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZl
dGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAKICAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVf
Uk9XKSB7CiAgICAgICAgICAgICBvYmplY3RTdG9yZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNW
ZWN0b3IoMCwga2V5RGF0YSk7Ci0gICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGtleURhdGEpKSk7CisgICAgICAgICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gbWFrZVVu
aXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURh
dGEpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNRTElURV9ET05FKSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSByZWNvcmQgd2UncmUgdHJ5aW5nIHRv
IHJldHJpZXZlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgb2JqZWN0IHN0b3JlLgogICAgICAg
ICAgICAgLy8gU2tpcCBvdmVyIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggYTZhM2M1ZmZmMzM4MGMyNWVmNzM2MWU2ODhiZWYzNmMwNjE1ZmM4My4uZDIxMmRlMmI2Yjg4
YWZmZTBhMzViMGZkMGZkMzNmYzg2N2NlY2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rp
b24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpi
ZWdpbihTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKCFtX3NxbGl0ZVRy
YW5zYWN0aW9uKTsKIAotICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFNRTGl0ZVRyYW5zYWN0aW9uPihkYXRhYmFzZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2Fj
dGlvbk1vZGU6OlJlYWRvbmx5KTsKKyAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVuaXF1
ZTxTUUxpdGVUcmFuc2FjdGlvbj4oZGF0YWJhc2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNh
Y3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4oKTsK
IAogICAgIGlmIChtX3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcAppbmRleCA2ZjJjN2ViZjU5MWQwOGFiODgyYjY0N2VkOTg0NzYzMmVjOGMx
YjY5Li4wYzQ3MmZlYjNlMmVjZWYzYjhiNmYzNTAwNTliOTZjMWU4MGM0MWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWREZWxldGVCYWNraW5nU3RvcmUodWludDY0X3QgZGVsZXRlZFZlcnNpb24pCiAgICAg
Ly8gd2Ugd29uJ3QgaGF2ZSBhIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8uIEluIHRo
YXQgY2FzZSwgd2UnbGwgbWFudWZhY3R1cmUgb25lIHVzaW5nIHRoZQogICAgIC8vIHBhc3NlZCBp
biBkZWxldGVkVmVyc2lvbiBhcmd1bWVudC4KICAgICBpZiAoIW1fbW9zdFJlY2VudERlbGV0ZWRE
YXRhYmFzZUluZm8pCi0gICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFt
ZSgpLCBkZWxldGVkVmVyc2lvbik7CisgICAgICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFz
ZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNl
TmFtZSgpLCBkZWxldGVkVmVyc2lvbik7CiAKICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVz
dCkgewogICAgICAgICBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5ub3RpZnlEaWREZWxldGVEYXRh
YmFzZSgqbV9tb3N0UmVjZW50RGVsZXRlZERhdGFiYXNlSW5mbyk7CkBAIC03ODUsNyArNzg1LDcg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZUluZm8mIGluZm8sIGNvbnN0IEkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNr
aW5nU3RvcmUiKTsKICAgICAKLSAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8
SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAgICBtX2JhY2tpbmdTdG9yZU9wZW5FcnJvciA9IGVy
cm9yOwogCiAgICAgQVNTRVJUKG1faXNPcGVuaW5nQmFja2luZ1N0b3JlKTsKQEAgLTE3MzIsNyAr
MTczMiw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0
aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICAgICAgQVNTRVJUKG1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uID09IHRyYW5zYWN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX3Zl
cnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24gfHwgJm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uLT5kYXRhYmFzZUNvbm5lY3Rpb24oKSA9PSBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5l
Y3Rpb24pOwogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdp
bmFsRGF0YWJhc2VJbmZvKCkpOwotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdp
bmFsRGF0YWJhc2VJbmZvKCkpOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8
SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0
YWJhc2VJbmZvKCkpOwogICAgIH0KIAogICAgIElEQkVycm9yIHJlc3VsdCA9IHRyYW5zYWN0aW9u
LT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVk
ID8gdHJhbnNhY3Rpb24tPnJlc3VsdCgpIDogZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggZjE3YTRlNTUyM2ZiNWY2MWIwMjZhMDkxNDdm
ODE0MWQ1YjY0MTM5YS4uODU0MGNhNzg2ZDU3MzU4ZDk4MmM3M2U2NDYwZjdmOGYwYTg4MzQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubgogICAgIEFTU0VSVChkYXRhYmFzZSk7
CiAKICAgICBpZiAobV90cmFuc2FjdGlvbkluZm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9k
ZTo6VmVyc2lvbmNoYW5nZSkKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygpKTsKKyAgICAgICAg
bV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRh
YmFzZS0+aW5mbygpKTsKIAogICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX2RhdGFiYXNlQ29ubmVj
dGlvbi0+c2VydmVyKCkpCiAgICAgICAgIHNlcnZlci0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVxdWVzdERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlcXVlc3REYXRhLmNwcAppbmRleCBiMTBkODQwOTliMjUyOGU2ZjczYzI4YjE1MDRh
OGE5MzI0ZDBiMjFhLi4yMTY0MTZhZmExMWNmMjU1ZDM2ZGVmYjNlZmYzNmVmYWYxOTU3MTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVx
dWVzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXF1ZXN0RGF0YS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSURCUmVxdWVzdERhdGE6OklE
QlJlcXVlc3REYXRhKCkKIAogSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5JiBjb25uZWN0aW9uUHJveHksIGNvbnN0IElEQk9w
ZW5EQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgOiBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KGNvbm5lY3Rpb25Qcm94eS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9y
ZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
Y29ubmVjdGlvblByb3h5LCByZXF1ZXN0KSkKKyAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIobWFr
ZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGNvbm5lY3Rpb25Qcm94eSwgcmVxdWVzdCkp
CiAgICAgLCBtX2RhdGFiYXNlSWRlbnRpZmllcihyZXF1ZXN0LmRhdGFiYXNlSWRlbnRpZmllcigp
KQogICAgICwgbV9yZXF1ZXN0ZWRWZXJzaW9uKHJlcXVlc3QudmVyc2lvbigpKQogICAgICwgbV9y
ZXF1ZXN0VHlwZShyZXF1ZXN0LnJlcXVlc3RUeXBlKCkpCkBAIC00OSw4ICs0OSw4IEBAIElEQlJl
cXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eSYgY29ubmVjdGlvblByCiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJREJD
bGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24pCiAgICAgOiBtX3NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKG9wZXJhdGlvbi50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkuY29u
bmVjdGlvblByb3h5KCkuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1fcmVx
dWVzdElkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9w
ZXJhdGlvbi5pZGVudGlmaWVyKCkpKQotICAgICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIoc3Rk
OjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSkpCisgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24uaWRlbnRpZmllcigpKSkKKyAgICAsIG1fdHJh
bnNhY3Rpb25JZGVudGlmaWVyKG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVy
YXRpb24udHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpKQogICAgICwgbV9vYmplY3RTdG9yZUlkZW50
aWZpZXIob3BlcmF0aW9uLm9iamVjdFN0b3JlSWRlbnRpZmllcigpKQogICAgICwgbV9pbmRleElk
ZW50aWZpZXIob3BlcmF0aW9uLmluZGV4SWRlbnRpZmllcigpKQogewpAQCAtNTgsNyArNTgsNyBA
QCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgICAgICBtX2luZGV4UmVjb3JkVHlwZSA9IG9wZXJhdGlv
bi5pbmRleFJlY29yZFR5cGUoKTsKIAogICAgIGlmIChvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmll
cigpKQotICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpOworICAgICAg
ICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4o
Km9wZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVyKCkpOwogfQogCiBJREJSZXF1ZXN0RGF0YTo6SURC
UmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEmIG90aGVyKQpAQCAtNzEsMTEgKzcxLDEx
IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYg
b3RoZXIpCiAgICAgLCBtX3JlcXVlc3RUeXBlKG90aGVyLm1fcmVxdWVzdFR5cGUpCiB7CiAgICAg
aWYgKG90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpCi0gICAgICAgIG1fcmVxdWVzdElkZW50aWZp
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fcmVx
dWVzdElkZW50aWZpZXIpOworICAgICAgICBtX3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVuaXF1
ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3JlcXVlc3RJZGVudGlmaWVyKTsKICAg
ICBpZiAob3RoZXIubV90cmFuc2FjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIG1fdHJhbnNhY3Rp
b25JZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpv
dGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgICAgIG1fdHJhbnNhY3Rpb25JZGVu
dGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKG90aGVyLm1fY3Vyc29ySWRlbnRpZmllcikKLSAg
ICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlk
ZW50aWZpZXI+KCpvdGhlci5tX2N1cnNvcklkZW50aWZpZXIpOworICAgICAgICBtX2N1cnNvcklk
ZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vy
c29ySWRlbnRpZmllcik7CiB9CiAKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25z
dCBJREJSZXF1ZXN0RGF0YSYgdGhhdCwgSXNvbGF0ZWRDb3B5VGFnKQpAQCAtMTAyLDExICsxMDIs
MTEgQEAgdm9pZCBJREJSZXF1ZXN0RGF0YTo6aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiBzb3VyY2UsIElEQlJlcXVlc3REYXRhJgogICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFi
YXNlSWRlbnRpZmllciA9IHNvdXJjZS5tX2RhdGFiYXNlSWRlbnRpZmllci0+aXNvbGF0ZWRDb3B5
KCk7CiAKICAgICBpZiAoc291cmNlLm1fcmVxdWVzdElkZW50aWZpZXIpCi0gICAgICAgIGRlc3Rp
bmF0aW9uLm1fcmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNl
SWRlbnRpZmllcj4oKnNvdXJjZS5tX3JlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGlu
YXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlm
aWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50aWZpZXIpOwogICAgIGlmIChzb3VyY2UubV90cmFu
c2FjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVu
dGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2Uu
bV90cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0
aW9uSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNl
Lm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAoc291cmNlLm1fY3Vyc29ySWRlbnRp
ZmllcikKLSAgICAgICAgZGVzdGluYXRpb24ubV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVy
KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9jdXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJ
REJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAog
dWludDY0X3QgSURCUmVxdWVzdERhdGE6OnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlcXVlc3REYXRhLmgKaW5kZXggNDVjZmZhZWE2MDNhNTNiNTk5MDRjOGIxNGI3YTFkZWY3
ZDI1ZjMxMC4uNDA4YjRlNDYyODczMzdiOWFjMzQ0YWZiZjQ2OTE1ODY4ZTgwZjM1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3RE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmgKQEAgLTE1Niw3ICsxNTYsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlm
aWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0g
bWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJl
cXVlc3QubV9yZXF1ZXN0SWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKQEAgLTE2NSw3ICsx
NjUsNyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3Qp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlk
ZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV90cmFuc2FjdGlvbklkZW50
aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBJREJSZXF1
ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJl
c291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlk
ZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigpOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICByZXF1ZXN0Lm1fY3Vyc29ySWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJSZXN1bHREYXRhLmNwcAppbmRleCBhODk0NTRlNmU2M2Y2ZWI3Y2I1MDM4YjljOTMyZmEyMTg2
MzNlZGM2Li40Y2JkNWQ5YmRmMGE4NTIzYmY3ZjUyYWM1YmM1Y2I0YjdlZDEwNDc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
c3VsdERhdGEuY3BwCkBAIC01NywxNSArNTcsMTUgQEAgSURCUmVzdWx0RGF0YTo6SURCUmVzdWx0
RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiBvdGhlcikKICAgICAsIG1fcmVzdWx0SW50ZWdlcihv
dGhlci5tX3Jlc3VsdEludGVnZXIpCiB7CiAgICAgaWYgKG90aGVyLm1fZGF0YWJhc2VJbmZvKQot
ICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZv
Pigqb3RoZXIubV9kYXRhYmFzZUluZm8pOworICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VV
bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIubV9kYXRhYmFzZUluZm8pOwogICAgIGlmIChv
dGhlci5tX3RyYW5zYWN0aW9uSW5mbykKLSAgICAgICAgbV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90aGVyLm1fdHJhbnNhY3Rpb25JbmZv
KTsKKyAgICAgICAgbV90cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9u
SW5mbz4oKm90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKICAgICBpZiAob3RoZXIubV9yZXN1bHRL
ZXkpCi0gICAgICAgIG1fcmVzdWx0S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigq
b3RoZXIubV9yZXN1bHRLZXkpOworICAgICAgICBtX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURC
S2V5RGF0YT4oKm90aGVyLm1fcmVzdWx0S2V5KTsKICAgICBpZiAob3RoZXIubV9nZXRSZXN1bHQp
Ci0gICAgICAgIG1fZ2V0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCpv
dGhlci5tX2dldFJlc3VsdCk7CisgICAgICAgIG1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJH
ZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3VsdCk7CiAgICAgaWYgKG90aGVyLm1fZ2V0QWxsUmVz
dWx0KQotICAgICAgICBtX2dldEFsbFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxs
UmVzdWx0Pigqb3RoZXIubV9nZXRBbGxSZXN1bHQpOworICAgICAgICBtX2dldEFsbFJlc3VsdCA9
IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqb3RoZXIubV9nZXRBbGxSZXN1bHQpOwogfQog
CiBJREJSZXN1bHREYXRhOjpJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIHRoYXQs
IElzb2xhdGVkQ29weVRhZykKQEAgLTg3LDE1ICs4NywxNSBAQCB2b2lkIElEQlJlc3VsdERhdGE6
Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXN1bHREYXRhJiBzb3VyY2UsIElEQlJlc3VsdERhdGEm
IGRlcwogICAgIGRlc3RpbmF0aW9uLm1fcmVzdWx0SW50ZWdlciA9IHNvdXJjZS5tX3Jlc3VsdElu
dGVnZXI7CiAKICAgICBpZiAoc291cmNlLm1fZGF0YWJhc2VJbmZvKQotICAgICAgICBkZXN0aW5h
dGlvbi5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigq
c291cmNlLm1fZGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7Cisg
ICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUluZm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRD
b3B5KTsKICAgICBpZiAoc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvKQotICAgICAgICBkZXN0aW5h
dGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25J
bmZvPigqc291cmNlLm1fdHJhbnNhY3Rpb25JbmZvLCBJREJUcmFuc2FjdGlvbkluZm86Oklzb2xh
dGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVu
aXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpzb3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElEQlRy
YW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fcmVzdWx0S2V5
KQotICAgICAgICBkZXN0aW5hdGlvbi5tX3Jlc3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURC
S2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtleSwgSURCS2V5RGF0YTo6SXNvbGF0ZWRDb3B5KTsK
KyAgICAgICAgZGVzdGluYXRpb24ubV9yZXN1bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+
KCpzb3VyY2UubV9yZXN1bHRLZXksIElEQktleURhdGE6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYg
KHNvdXJjZS5tX2dldFJlc3VsdCkKLSAgICAgICAgZGVzdGluYXRpb24ubV9nZXRSZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oKnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0
UmVzdWx0OjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2dldFJlc3VsdCA9
IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigqc291cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1
bHQ6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX2dldEFsbFJlc3VsdCkKLSAgICAg
ICAgZGVzdGluYXRpb24ubV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFs
bFJlc3VsdD4oKnNvdXJjZS5tX2dldEFsbFJlc3VsdCwgSURCR2V0QWxsUmVzdWx0OjpJc29sYXRl
ZENvcHkpOworICAgICAgICBkZXN0aW5hdGlvbi5tX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8
SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1fZ2V0QWxsUmVzdWx0LCBJREJHZXRBbGxSZXN1bHQ6
Oklzb2xhdGVkQ29weSk7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZXJyb3Io
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImIGVycm9yKQpAQCAtMTExLDcgKzExMSw3IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0
RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJl
CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyByZXF1ZXN0SWRlbnRpZmllciB9OwogICAgIHJl
c3VsdC5tX3R5cGUgPSBJREJSZXN1bHRUeXBlOjpPcGVuRGF0YWJhc2VTdWNjZXNzOwogICAgIHJl
c3VsdC5tX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZp
ZXIoKTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oY29ubmVjdGlvbi5kYXRhYmFzZSgpLT5pbmZvKCkpOworICAgIHJlc3VsdC5t
X2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRh
dGFiYXNlKCktPmluZm8oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxLDE1ICsx
MjEsMTUgQEAgSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRl
TmVlZGVkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBJREJSZXN1bHREYXRhIHJlc3Vs
dCB7IHJlcXVlc3RJZGVudGlmaWVyIH07CiAgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5
cGU6Ok9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQ7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmlkZW50
aWZpZXIoKTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2Uo
KS0+aW5mbygpKTsKLSAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQlRyYW5zYWN0aW9uSW5mbz4odHJhbnNhY3Rpb24uaW5mbygpKTsKKyAgICByZXN1bHQu
bV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24u
ZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5mbygpKTsKKyAgICByZXN1bHQubV90
cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4odHJhbnNhY3Rp
b24uaW5mbygpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJl
c3VsdERhdGE6OmRlbGV0ZURhdGFiYXNlU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAg
ICAgSURCUmVzdWx0RGF0YSByZXN1bHQge0lEQlJlc3VsdFR5cGU6OkRlbGV0ZURhdGFiYXNlU3Vj
Y2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7CisgICAgcmVzdWx0Lm1fZGF0
YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGluZm8pOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTE3MSwyMSArMTcxLDIxIEBAIElEQlJlc3VsdERhdGEgSURCUmVz
dWx0RGF0YTo6cmVuYW1lSW5kZXhTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
cmVxCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OnB1dE9yQWRkU3VjY2Vzcyhjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRh
JiByZXN1bHRLZXkpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBl
OjpQdXRPckFkZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fcmVz
dWx0S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPihyZXN1bHRLZXkpOworICAgIHJl
c3VsdC5tX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmdldFJl
Y29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSBy
ZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRSZWNvcmRTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmll
ciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVz
dWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURC
R2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3Vs
dERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxsUmVzdWx0JiBn
ZXRBbGxSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBl
OjpHZXRBbGxSZWNvcmRzU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQu
bV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxs
UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldEFs
bFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMDQs
MTQgKzIwNCwxNCBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZVJlY29yZFN1
Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZQogSURCUmVzdWx0RGF0YSBJREJS
ZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJREJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAg
ICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElEQlJlc3VsdFR5cGU6Ok9wZW5DdXJzb3JTdWNjZXNz
LCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3Vs
dCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nl
c3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qg
SURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJ
REJSZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29yU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsK
LSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4o
Z2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJl
c3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaApp
bmRleCA3MTdiM2UyZGU1M2IzNTNmZWI2ZGQ3NTUwMGEwZTVlNjhjOTQ3YTNmLi42MjA2MmExZTI5
NWY3YjU5ODE1ODk1YjU3YmVjMDA4ZTViMTg3NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKQEAgLTE4NCw3
ICsxODQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRh
PiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFz
T2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV9kYXRhYmFzZUluZm8g
PSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29k
ZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVj
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigpOworICAgICAgICBhdXRv
IG9iamVjdCA9IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigpOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKICAgICAgICAgcmVzdWx0Lm1fdHJhbnNhY3Rpb25JbmZvID0gV1RGTW92ZShvYmplY3QpOwpA
QCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJl
c3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQktleURhdGE+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJLZXlE
YXRhPigpOwogICAgICAgICBPcHRpb25hbDxJREJLZXlEYXRhPiBvcHRpb25hbDsKICAgICAgICAg
ZGVjb2RlciA+PiBvcHRpb25hbDsKICAgICAgICAgaWYgKCFvcHRpb25hbCkKQEAgLTIxNCw3ICsy
MTQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJ
REJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2Jq
ZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1
bHQ+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBXVEZNb3ZlKG9i
amVjdCk7CkBAIC0yMjMsNyArMjIzLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9u
YWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VV
bmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpv
YmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0
Lm1fZ2V0QWxsUmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZv
LmNwcAppbmRleCA5ODNjMWMxMWM5OWI0NWI2Y2U1NDRkZmNhYzAzN2U0YzczNzI5NWMzLi40ZmI5
OTkxOWY2N2Q1ZjdjOWFiYzEwOWUyZTMwMDBjY2U0YzQ0MDljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rp
b25JbmZvLmNwcApAQCAtNTUsNyArNTUsNyBAQCBJREJUcmFuc2FjdGlvbkluZm8gSURCVHJhbnNh
Y3Rpb25JbmZvOjp2ZXJzaW9uQ2hhbmdlKGNvbnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdAogICAg
IElEQlRyYW5zYWN0aW9uSW5mbyByZXN1bHQoKElEQlJlc291cmNlSWRlbnRpZmllcihjb25uZWN0
aW9uKSkpOwogICAgIHJlc3VsdC5tX21vZGUgPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25j
aGFuZ2U7CiAgICAgcmVzdWx0Lm1fbmV3VmVyc2lvbiA9IG5ld1ZlcnNpb247Ci0gICAgcmVzdWx0
Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5m
bz4ob3JpZ2luYWxEYXRhYmFzZUluZm8pOworICAgIHJlc3VsdC5tX29yaWdpbmFsRGF0YWJhc2VJ
bmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG9yaWdpbmFsRGF0YWJhc2VJbmZvKTsK
IAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02Nyw3ICs2Nyw3IEBAIElEQlRyYW5zYWN0aW9u
SW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykK
ICAgICAsIG1fb2JqZWN0U3RvcmVzKGluZm8ubV9vYmplY3RTdG9yZXMpCiB7CiAgICAgaWYgKGlu
Zm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbykKLSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqaW5mby5tX29yaWdpbmFsRGF0
YWJhc2VJbmZvKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8
SURCRGF0YWJhc2VJbmZvPigqaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKTsKIH0KIAogSURC
VHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbkluZm8oY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJiB0aGF0LCBJc29sYXRlZENvcHlUYWcpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb25JbmZvOjppc29sYXRlZENvcHkoY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBzb3Vy
Y2UsIElEQlRyYW5zCiAgICAgICAgIGRlc3RpbmF0aW9uLm1fb2JqZWN0U3RvcmVzLnVuY2hlY2tl
ZEFwcGVuZChvYmplY3RTdG9yZS5pc29sYXRlZENvcHkoKSk7CiAKICAgICBpZiAoc291cmNlLm1f
b3JpZ2luYWxEYXRhYmFzZUluZm8pCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxEYXRh
YmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX29y
aWdpbmFsRGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CisgICAg
ICAgIGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRh
dGFiYXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUlu
Zm86Oklzb2xhdGVkQ29weSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rp
b25JbmZvLmgKaW5kZXggOTMwZDgwMjM2MTgyMzJhYmY2YzA4MWRmMjEyOTU4ZmY2MmE1NTVlZC4u
N2I5NDc3ZThlYzU1NGM5MTNkMmE0OGJlNTU4ZTE2MzNkOTNmY2U5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2Fj
dGlvbkluZm8uaApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb25JbmZvOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBv
YmplY3QgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9j
ZXNzSURCU2VydmVyLmNwcAppbmRleCA4N2IxYWRjZDk2NjYyMDZlYzk3MTY2MDM2MmI0MGU1YWQ3
ZDgwMWQxLi5jOTY4OTQ0NGZkMjI0MDJjZWQyMTEzYjNiZmEwYjlhNTI2YzY3M2FjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8SW5Qcm9jZXNzSURC
U2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbgogU3RvcmFnZVF1b3RhTWFuYWdlciogSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1h
bmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFN
YW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90
YSgpLCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBz
cGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgp
LCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFj
ZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhxdW90YSAr
IGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVhc2UpOwogICAgICAgICB9KTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRp
ZXMuY3BwCmluZGV4IGY4NzI1NzRlODVjMjQwODc3MmIxZDExYTJlOGJjYjZkZDYwZGEyOTcuLmEz
MWJhZGI1NGFjOTgxZTBlM2JhZGFmZTIwOTg3ODI5ZDNmNzQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMv
TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIE5hdmlnYXRv
ck1lZGlhQ2FwYWJpbGl0aWVzJiBOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllczo6ZnJvbShOYXZp
Z2F0b3ImIG5hdmlnYXRvCiB7CiAgICAgTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMqIHN1cHBs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JNZWRpYUNhcGFiaWxpdGllcyo+KFN1cHBsZW1l
bnQ8TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAg
aWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM+KCk7CisgICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM+KCk7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRl
VG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
V2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCA1MGQwYmIwYjFlZDUzYTQz
MjQ1OGQ5ZmI3MTM1NzBhZTBlY2EwZDA2Li5iOTc0MzRjNGU2MjQ1ZDczY2NmMmQ2MjVhMGExYjAz
ZTEyOTBjYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lv
bi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3
IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcmCiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
ayYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6bW9ja1BpY2tlcigpCiB7CiAgICAgaWYgKCFtX3Bp
Y2tlck92ZXJyaWRlKQotICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gc3RkOjptYWtlX3VuaXF1
ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOworICAgICAgICBtX3BpY2tl
ck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRo
aXMpOwogCiAgICAgcmV0dXJuICptX3BpY2tlck92ZXJyaWRlLmdldCgpOwogfQpAQCAtMTQ1LDcg
KzE0NSw3IEBAIHVpbnQ2NF90IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFy
Z2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vzc2lvbk1hCiAKICAgICBMT0coTWVkaWEsICJXZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudCglcCArICVs
bHUpIiwgJmNsaWVudCwgY29udGV4dElkKTsKIAotICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8Q2xpZW50U3RhdGU+KGNsaWVudCwgY29udGV4dElkKSk7CisgICAgbV9j
bGllbnRTdGF0ZS5hcHBlbmQobWFrZVVuaXF1ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0
SWQpKTsKIAogICAgIGlmIChtX2V4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxh
eWJhY2tUYXJnZXQpCiAgICAgICAgIHNjaGVkdWxlRGVsYXllZFRhc2soSW5pdGlhbENvbmZpZ3Vy
YXRpb25UYXNrIHwgVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZDQx
N2ExMjE2OTExMTIxNWQ1NDIyOTFlMDNjNTlkNWQ2ZTdlYjNmNC4uN2NiYzZhMTMzNTFlMGQzMmNl
MjU1YTliYWRjYjk3NDRkYWY0ZDQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTE3OCw5ICsxNzgsOSBAQCBNZWRpYVRp
bWUgTWVkaWFTb3VyY2U6OmN1cnJlbnRUaW1lKCkgY29uc3QKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgaWYg
KG1fYnVmZmVyZWQgJiYgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSAmJiBzdGQ6OmFs
bF9vZihtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmJlZ2luKCksIG1fYWN0aXZlU291cmNlQnVmZmVy
cy0+ZW5kKCksIFtdKGF1dG8mIGJ1ZmZlcikgeyByZXR1cm4gIWJ1ZmZlci0+aXNCdWZmZXJlZERp
cnR5KCk7IH0pKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVS
YW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1U
aW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAKLSAgICBtX2J1ZmZlcmVkID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgbV9idWZmZXJlZCA9IG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogKm1f
YWN0aXZlU291cmNlQnVmZmVycykKICAgICAgICAgc291cmNlQnVmZmVyLT5zZXRCdWZmZXJlZERp
cnR5KGZhbHNlKTsKIApAQCAtMTkwLDcgKzE5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAKICAgICAvLyAxLiBJ
ZiBhY3RpdmVTb3VyY2VCdWZmZXJzLmxlbmd0aCBlcXVhbHMgMCB0aGVuIHJldHVybiBhbiBlbXB0
eSBUaW1lUmFuZ2VzIG9iamVjdCBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGFjdGl2
ZVJhbmdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIAogICAgIC8vIDIuIExldCBhY3RpdmUg
cmFuZ2VzIGJlIHRoZSByYW5nZXMgcmV0dXJuZWQgYnkgYnVmZmVyZWQgZm9yIGVhY2ggU291cmNl
QnVmZmVyIG9iamVjdCBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzLgogICAgIC8vIDMuIExldCBoaWdo
ZXN0IGVuZCB0aW1lIGJlIHRoZSBsYXJnZXN0IHJhbmdlIGVuZCB0aW1lIGluIHRoZSBhY3RpdmUg
cmFuZ2VzLgpAQCAtMjAzLDcgKzIwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAKICAgICAvLyBSZXR1cm4gYW4g
ZW1wdHkgcmFuZ2UgaWYgYWxsIHJhbmdlcyBhcmUgZW1wdHkuCiAgICAgaWYgKCFoaWdoZXN0RW5k
VGltZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2Vz
PigqbV9idWZmZXJlZCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4oKm1fYnVmZmVyZWQpOwogCiAgICAgLy8gNC4gTGV0IGludGVyc2VjdGlvbiByYW5nZXMg
ZXF1YWwgYSBUaW1lUmFuZ2Ugb2JqZWN0IGNvbnRhaW5pbmcgYSBzaW5nbGUgcmFuZ2UgZnJvbSAw
IHRvIGhpZ2hlc3QgZW5kIHRpbWUuCiAgICAgbV9idWZmZXJlZC0+YWRkKE1lZGlhVGltZTo6emVy
b1RpbWUoKSwgaGlnaGVzdEVuZFRpbWUpOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAg
ICAgICAgIG1fYnVmZmVyZWQtPmludGVyc2VjdFdpdGgoc291cmNlUmFuZ2VzKTsKICAgICB9CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZl
cmVkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZl
cmVkKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZTo6c2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUm
IHRpbWUpCkBAIC0zNDQsNyArMzQ0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6
OnNldExpdmVTZWVrYWJsZVJhbmdlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKIAogICAgIC8v
IFNldCBsaXZlIHNlZWthYmxlIHJhbmdlIHRvIGJlIGEgbmV3IG5vcm1hbGl6ZWQgVGltZVJhbmdl
cyBvYmplY3QgY29udGFpbmluZyBhIHNpbmdsZSByYW5nZQogICAgIC8vIHdob3NlIHN0YXJ0IHBv
c2l0aW9uIGlzIHN0YXJ0IGFuZCBlbmQgcG9zaXRpb24gaXMgZW5kLgotICAgIG1fbGl2ZVNlZWth
YmxlID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3Jl
YXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsK
KyAgICBtX2xpdmVTZWVrYWJsZSA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRp
YVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3Vi
bGUoZW5kKSk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCmlu
ZGV4IGU0MTgyNzgzOGQ2MmNhMzhmYzNiZjNiZTc4ZjhmNGFhOGFlNTI1OTYuLjdiMzU4ZjVlMGRl
NDJmYjIyNjhkMzY5MDNlNThkYjVlYjc4ZTkwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKiBOYXZpZ2F0b3JNZWRpYURl
dmljZXM6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yTWVkaWFE
ZXZpY2VzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yTWVkaWFEZXZpY2VzKj4o
U3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkp
OwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvck1lZGlhRGV2aWNlcz4obmF2aWdhdG9yLT53aW5kb3co
KSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yTWVk
aWFEZXZpY2VzPihuYXZpZ2F0b3ItPndpbmRvdygpKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5l
d1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1l
bnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIu
Y3BwCmluZGV4IDhkN2U2M2NjNjA2ZDZkYTE5ZmJkYjEyZGU1NGZiODU1ZmRmNjJjOTkuLjE0ZGYx
MTYxZGFlNjhjYzQ2Y2I0OWVhYWUyMWY1ZWY5ODllMmFjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNw
cApAQCAtNTgsNyArNTgsNyBAQCBVc2VyTWVkaWFDb250cm9sbGVyOjp+VXNlck1lZGlhQ29udHJv
bGxlcigpCiAKIHZvaWQgcHJvdmlkZVVzZXJNZWRpYVRvKFBhZ2UqIHBhZ2UsIFVzZXJNZWRpYUNs
aWVudCogY2xpZW50KQogewotICAgIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdl
LCBVc2VyTWVkaWFDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVl
PFVzZXJNZWRpYUNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIFVzZXJNZWRpYUNvbnRyb2xsZXI6
OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFDb250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBt
YWtlVW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xsZXI+KGNsaWVudCkpOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNTZWN1cmUoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggYWFh
NDAwMDIwNzM2NWZmY2JlNTI4MTI4ZTI4Y2UwMmY2YzYwN2NkZC4uYzk4NWJjMTlhMzFkMDExNDU2
NWFiYWJhNWYwNjBlZTUwZGE2MTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFJlZjxSVENEYXRhQ2hh
bm5lbEV2ZW50PiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OmNoYW5uZWxFdmVudChTY3Jp
cHRFeGVjdXRpCiAgICAgaW5pdC5uZWdvdGlhdGVkID0gZGF0YUNoYW5uZWwtPm5lZ290aWF0ZWQo
KTsKICAgICBpbml0LmlkID0gZGF0YUNoYW5uZWwtPmlkKCk7CiAKLSAgICBhdXRvIGhhbmRsZXIg
PSAgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUo
ZGF0YUNoYW5uZWwpKTsKKyAgICBhdXRvIGhhbmRsZXIgPSAgbWFrZVVuaXF1ZTxMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5uZWwpKTsKICAgICBhdXRvIGNoYW5u
ZWwgPSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUoaGFuZGxlciksIGZy
b21TdGRTdHJpbmcobGFiZWwpLCBXVEZNb3ZlKGluaXQpKTsKIAogICAgIHJldHVybiBSVENEYXRh
Q2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFjaGFubmVsRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObywgV1RGTW92ZShjaGFubmVs
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGRl
ZjFmOTFlZWU5ZWQ2ZWM3OGQxM2M2OWVjNDM0OGYwYWE2OGQzNjcuLmQxYTc0Yjg1NzFiZWU3ZWU1
ZTljMzE2MmVjYTJmNGQ2ZmY0MWU0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01l
ZGlhRW5kcG9pbnQuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNl
aXYKICAgICB9CiAgICAgfQogCi0gICAgcmVjZWl2ZXItPnNldEJhY2tlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7
CisgICAgcmVjZWl2ZXItPnNldEJhY2tlbmQobWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CiAgICAgYXV0byYgdHJhY2sgPSByZWNl
aXZlci0+dHJhY2soKTsKICAgICBhZGRQZW5kaW5nVHJhY2tFdmVudChyZWNlaXZlci5yZWxlYXNl
Tm9uTnVsbCgpLCB0cmFjaywgcnRjU3RyZWFtcywgbnVsbHB0cik7CiB9CkBAIC00NzgsNyArNDc4
LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKCkK
ICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoc3RkOjptYWtlX3VuaXF1
ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIp
KSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFj
a2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2Vp
dmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSk7CiAgICAgfQogfQogCkBAIC00OTksNyArNDk5LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRp
YUVuZHBvaW50OjpuZXdUcmFuc2NlaXZlcihydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBU
cmFuc2MKICAgICBpZiAoIXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgbmV3
VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZl
cihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92
ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byYg
bmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2Nl
aXZlcihtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShy
dGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBhZGRQZW5k
aW5nVHJhY2tFdmVudChtYWtlUmVmKG5ld1RyYW5zY2VpdmVyLnJlY2VpdmVyKCkpLCBuZXdUcmFu
c2NlaXZlci5yZWNlaXZlcigpLnRyYWNrKCksIHJ0Y1JlY2VpdmVyLT5zdHJlYW1zKCksIG1ha2VS
ZWYobmV3VHJhbnNjZWl2ZXIpKTsKIH0KQEAgLTUzNCw3ICs1MzQsNyBAQCBPcHRpb25hbDxMaWJX
ZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcz4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3Jl
YXRlVHJhbnNjZQogICAgIGlmICghcmVzdWx0Lm9rKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKLSAgICBhdXRvIHRyYW5zY2VpdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJlc3VsdC5Nb3ZlVmFsdWUoKSk7CisgICAgYXV0byB0
cmFuc2NlaXZlciA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihy
ZXN1bHQuTW92ZVZhbHVlKCkpOwogICAgIHJldHVybiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpC
YWNrZW5kcyB7IHRyYW5zY2VpdmVyLT5jcmVhdGVTZW5kZXJCYWNrZW5kKG1fcGVlckNvbm5lY3Rp
b25CYWNrZW5kLCBXVEZNb3ZlKHNvdXJjZSkpLCB0cmFuc2NlaXZlci0+Y3JlYXRlUmVjZWl2ZXJC
YWNrZW5kKCksIFdURk1vdmUodHJhbnNjZWl2ZXIpIH07CiB9CiAKQEAgLTU4NSw3ICs1ODUsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPiBMaWJXZWJS
VENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaQogewogICAgIGZvciAoYXV0byYgdHJhbnNjZWl2ZXIg
OiBtX2JhY2tlbmQtPkdldFRyYW5zY2VpdmVycygpKSB7CiAgICAgICAgIGlmICh0cmFuc2NlaXZl
ci0+c2VuZGVyKCkuZ2V0KCkgPT0gYmFja2VuZC5ydGNTZW5kZXIoKSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRwVHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2Vp
dmVyKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ+KHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50
ZXJmYWNlPih0cmFuc2NlaXZlcikpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAg
LTY1NCw3ICs2NTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBM
aWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVhdGVEYXRhQ2hhbm5lbAogewogICAgIGF1dG8gaW5p
dCA9IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6ZnJvbVJUQ0RhdGFDaGFubmVsSW5pdChv
cHRpb25zKTsKICAgICBhdXRvIGNoYW5uZWwgPSBtX2JhY2tlbmQtPkNyZWF0ZURhdGFDaGFubmVs
KGxhYmVsLnV0ZjgoKS5kYXRhKCksICZpbml0KTsKLSAgICByZXR1cm4gY2hhbm5lbCA/IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwp
KSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGNoYW5uZWwgPyBtYWtlVW5pcXVlPExpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShjaGFubmVsKSkgOiBudWxscHRyOwogfQogCiB2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9uRGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRy
PHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZhY2U+IGRhdGFDaGFubmVsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjA3
ZjE1ZTY0NTdiOWRmY2FjMWMzMzllYTM5ZmVhMWQ3Nzg1OWQ4Yi4uZmM5MWNjZDBiYmQxZmRiYmE3
NjQyZTcwNGYzN2ZlODVjYzcyZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBjcmVhdGVMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlCiAKICAgICBwYWdlLT5saWJXZWJSVENQcm92aWRlcigpLnNldEVuYWJs
ZVdlYlJUQ0VuY3J5cHRpb24ocGFnZS0+c2V0dGluZ3MoKS53ZWJSVENFbmNyeXB0aW9uRW5hYmxl
ZCgpKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24sIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVl
ckNvbm5lY3Rpb24sIHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkpOwogfQogCiBDcmVhdGVQZWVy
Q29ubmVjdGlvbkJhY2tlbmQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CkBAIC0zMTEsNyArMzExLDcgQEAgTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpWaWRlb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6dmkKICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVj
ZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRy
KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2Vu
ZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIp
OwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0
cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAidmlkZW8iX3MsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNr
ZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRp
c2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2Nl
aXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBAIC0zMzQsNyArMzM0LDcgQEAgTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6YXUKICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2
ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsK
IAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9
IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwog
ICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNl
bmRlcjo6Y3JlYXRlKCp0aGlzLCAiYXVkaW8iX3MsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5k
KSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2Fi
bGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZl
cihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIGlubGlu
ZSBSZWZQdHI8UlRDUnRwU2VuZGVyPiBmaW5kRXhpc3RpbmdTZW5kZXIoY29uc3QgVmVjdG9yPFJl
ZlB0cjxSVENSdHAKIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBWZWN0
b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzKQogewogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKSB7Ci0g
ICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgICAgICBhdXRvIHNlbmRlckJhY2tl
bmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRy
KTsKICAgICAgICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFjaygqc2VuZGVyQmFja2VuZCwgdHJh
Y2ssIG1lZGlhU3RyZWFtSWRzKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCBF
eGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjphZGRUcmFjayhNZWRpYVN0cgogICAgICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9
IHRyYWNrLmtpbmQoKTsKICAgICAgICAgU3RyaW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRl
cjo6Y3JlYXRlKCp0aGlzLCBtYWtlUmVmKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4geyBtZWRpYVN0
cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICAgICAgYXV0byByZWNlaXZl
ciA9IGNyZWF0ZVJlY2VpdmVyKHRyYWNrS2luZCwgdHJhY2tJZCk7CiAgICAgICAgIGF1dG8gdHJh
bnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVyKSwg
V1RGTW92ZShyZWNlaXZlciksIG51bGxwdHIpOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRV
bmlmaWVkUGxhblRyYW5zY2VpdmVyKFN0cmluZyB7IHRyYWNrS2luZCB9LCBpbml0KTsKIAotICAg
IGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VV
bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1
dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIFN0cmluZyh0cmFja0tp
bmQpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICByZXR1
cm4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihXVEZNb3ZlKG5ld1NlbmRlciksIGluaXQsIGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgdHJhY2tLaW5kKTsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBA
QCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdgogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gYWRkVW5pZmllZFBsYW5UcmFuc2NlaXZlcihXVEZNb3ZlKHRyYWNrKSwgaW5pdCk7CiAK
LSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNl
bmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBt
YWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAg
ICBhdXRvJiBiYWNrZW5kID0gKnNlbmRlckJhY2tlbmQ7CiAgICAgYXV0byBzZW5kZXIgPSBSVENS
dHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgdHJhY2suY29weVJlZigpLCBWZWN0b3I8U3RyaW5nPigp
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNr
KGJhY2tlbmQsIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVy
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAppbmRleCA2ODUwZTZhODVlOTAyNGJiMTE0
NWI2Yjk0MjI5YzBmNjE0MmRmN2FhLi42YWVlYTEzMzg5MmQyMDYzZjAzNTM5YjhlZWM0ZGI5YmNl
NjRkN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6
c2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBTZW5kUGFyYW1ldGVycyYgcGFyYW1lCiAKIHN0ZDo6
dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVyQmFja2VuZD4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2Vu
ZDo6Y3JlYXRlRFRNRkJhY2tlbmQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExp
YldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPihtX3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENEVE1GU2VuZGVyQmFja2VuZD4obV9ydGNT
ZW5kZXItPkdldER0bWZTZW5kZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3Bw
CmluZGV4IGViODcxZWI3ZGIwMzg4NGY0Y2M3ZTBhZGVmNjg3ODJlMWMwOTcyZDcuLjVjMGQ3ZTk1
ZTJmZDEyZTNmODRmMTdjZmJlYjZkODY3YTUxZjJlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVy
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcApAQCAtMzUsMTIgKzM1LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZD4gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVSZWNl
aXZlckJhY2tlbmQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0
cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFuc2NlaXZlci0+cmVjZWl2ZXIoKSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2Vp
dmVyLT5yZWNlaXZlcigpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ+IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3JlYXRlU2VuZGVyQmFj
a2VuZChMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIGJhY2tlbmQsIExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ6OlNvdXJjZSYmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPihiYWNrZW5kLCBtX3J0Y1RyYW5zY2Vp
dmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPihiYWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5k
ZXIoKSwgV1RGTW92ZShzb3VyY2UpKTsKIH0KIAogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24g
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpkaXJlY3Rpb24oKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cAppbmRleCAwYzMyOGZhZTQ0MjM1OTkyNTMzMDcyYzg1ZDZiMzJmZGM2YzEzODM4Li4wZWJhZmY4
OWZmYmM1MDAzZTI0NjFiYWRlZTUyMDM5MTE3MWNiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtNjMsNyAr
NjMsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9wdGlvbgogICAgICwgbV9ib2R5KG9wdGlvbnMuYm9k
eSkKICAgICAsIG1fdGFnKG9wdGlvbnMudGFnKQogICAgICwgbV9zdGF0ZShJZGxlKQotICAgICwg
bV90YXNrVGltZXIoc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9
KSkKKyAgICAsIG1fdGFza1RpbWVyKG1ha2VVbmlxdWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3co
KTsgfSkpCiB7CiAgICAgaWYgKCFvcHRpb25zLmljb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1
dG8gaWNvblVSTCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKG9wdGlvbnMuaWNvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYTYyMDM1MzkzYzdmYjNmNmRkZjAxYzVjODlkNzRm
M2I1ZWRkMmQ0NC4uZDQ4ZjIwNWE5ZTI0MTRlMDdkNzIyZjkwMzI1YTdjMzY0ZDQ4OTQxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjb25zdCBjaGFy
KiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiAKIHZvaWQgcHJvdmlk
ZU5vdGlmaWNhdGlvbihQYWdlKiBwYWdlLCBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKIHsK
LSAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9u
Q29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRp
b25Db250cm9sbGVyPihjbGllbnQpKTsKKyAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92
aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFr
ZVVuaXF1ZTxOb3RpZmljYXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9E
T01XaW5kb3dRdW90YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRv
d1F1b3RhLmNwcAppbmRleCAwM2ZlOWUzODY3OGY0MDUwNzMyNTUwOWMyMDM4NjdjOWNmODIwZmYx
Li5jOThjOTk4NmRlZDZjZDIwNTQyNjE3MjE1ZjY1MzZjZTU4ZjI3OTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcApAQCAtNTcsNyArNTcs
NyBAQCBET01XaW5kb3dRdW90YSogRE9NV2luZG93UXVvdGE6OmZyb20oRE9NV2luZG93KiB3aW5k
b3cpCiB7CiAgICAgRE9NV2luZG93UXVvdGEqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01X
aW5kb3dRdW90YSo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dRdW90YT4od2luZG93KTsKKyAgICAg
ICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxET01XaW5kb3dRdW90YT4od2luZG93
KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHBy
b3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdh
dG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdh
dG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA3YmExZDNkNGIzNjk0NDBjNjRlMTdkZDIwY2E5NDUz
OGI4YWQ5Yjc0Li43YTA4MDQ1OTU2OTgzYTMxZjZkODM0ZWY3ZWE3NzJmYTY2NzM2YTZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdl
UXVvdGEuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5hdmlnYXRvclN0b3JhZ2VRdW90YSogTmF2aWdh
dG9yU3RvcmFnZVF1b3RhOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmln
YXRvclN0b3JhZ2VRdW90YSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvclN0b3Jh
Z2VRdW90YSo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1l
bnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7
CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yU3RvcmFn
ZVF1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQo
KTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92
ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDk1
YzNlNDM2NDczMTYyYTUwZDYxYjVjZTc1MTY1ZWU2OGIyMWI3MjcuLjFhMWM4NDdkYzQ5N2RjNjQ4
NDVmNTZlY2U1OTI2M2E0MjZhZjYzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhKiBXb3JrZXJOYXZpZ2F0b3JT
dG9yYWdlUXVvdGE6OmZyb20oV29ya2VyTmF2aWdhdG9yKgogewogICAgIFdvcmtlck5hdmlnYXRv
clN0b3JhZ2VRdW90YSogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PFdvcmtlck5hdmlnYXRvclN0
b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8V29ya2VyTmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3Is
IHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdl
UXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8
V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50
ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3Vw
cGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRo
ZXNpcy5jcHAKaW5kZXggMzc5NTY1MjZmYmYyODY5MGVjZjAzOTk1MmM1MmY2ZTA0NDZiY2I0Yy4u
OTY5YzIzN2Y3YzgxNTUxNTNkZTA3MWVjOTZhNjFhNGE0NjJkM2Y5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVz
aXMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyogRE9NV2lu
ZG93U3BlZWNoU3ludGhlc2lzOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogewogICAgIERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1Nw
ZWVjaFN5bnRoZXNpcyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdp
bmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93
U3BlZWNoU3ludGhlc2lzPih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxl
bWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggNzJiNTYzZTRiYmY3ZGNlMDNm
YTMwODgwZDJmYTc3MGI4OTg2OTNhNC4uZTdiNjJhMWExN2JkOTZhOWY1YTEzZmQwOWU3NDlhYjRi
Y2UxOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXMuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjp2b2lj
ZXNEaWRDaGFuZ2UoKQogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciYgU3BlZWNoU3ludGhlc2lz
OjplbnN1cmVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkKIHsKICAgICBpZiAoIW1fcGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcikKLSAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKKyAg
ICAgICAgbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKICAgICByZXR1cm4gKm1fcGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCA2MmY2OGVjNjYzYTgwMjEyYzZmM2FmN2I4NWUy
M2M2YjRmNzQyYTBhLi4yZjU0MjcyYWM1YzAxZDBhMjMwZTVjMGRmMDQ1MjRhZmIyYTRlMjMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9E
ZWNvZGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjpkZWNv
ZGVBc3luYyhSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIGRlY29kaW5nVGFzayA9IHN0
ZDo6bWFrZV91bmlxdWU8RGVjb2RpbmdUYXNrPihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJh
dGUsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7Cisg
ICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBtYWtlVW5pcXVlPERlY29kaW5nVGFzaz4oV1RGTW92ZShh
dWRpb0RhdGEpLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUo
ZXJyb3JDYWxsYmFjaykpOwogICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUoZGVjb2RpbmdUYXNr
KSk7IC8vIG5vdGUgdGhhdCBvd25lcnNoaXAgb2YgdGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFr
ZW4gYnkgdGhlIHF1ZXVlLgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IGJhOGMyNTVh
ZTdkN2RhNzNiYzlmZjY1NTQzZjFlMzdiYzk1NDA0YjMuLjBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0
ZTBkOGQ4ZjQ2N2UzNDZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC00MCw4ICs0MCw4
IEBAIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2Ft
cGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKLSAg
ICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAg
YWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRD
aGFubmVsQ291bnQpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0
aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBv
dXRwdXRDaGFubmVsQ291bnQpKTsKIH0KIAogLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpIGFz
IGFuIG9wdGltaXphdGlvbiBhbGxvd2luZyB0aGlzIG5vZGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Yg
aW4tcGxhY2UgcHJvY2Vzc2luZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYmMxODljMDhj
YmVmYzdjMTk2MDY0NjZjMDc2OGI4ZmE2MzRiMTZhYi4uMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2
MzZlNzkwYWJmYmU2ZTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQyLDggKzQyLDgg
QEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsK
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKIHsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1
dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMSkpOwogCiAgICAgLy8gVGhlIHN1YmNsYXNzIG11c3QgY3JlYXRlIG1fcHJvY2Vzc29yLgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQwYWMzMmM1YzU1YzNkMzJkMGUxNGI2YTdkMjJiMjQ2
NzM5MGY0YmYuLjI1MTBjNDBhN2Y2MTIzZDRjN2ZjMmQ2NDBhOTBiNGYwYTk4ZTZmOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpB
dWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGUK
ICAgICBtX3BsYXliYWNrUmF0ZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicGxheWJh
Y2tSYXRlIiwgMS4wLCAtTWF4UmF0ZSwgTWF4UmF0ZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIG1v
bm8uICBBIGNhbGwgdG8gc2V0QnVmZmVyKCkgd2lsbCBzZXQgdGhlIG51bWJlciBvZiBvdXRwdXQg
Y2hhbm5lbHMgdG8gdGhhdCBvZiB0aGUgYnVmZmVyLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmlu
ZGV4IDk5NTZjMTU4NjIxODljNzE0MjljYmNmZDYwMDQyZjAwYzk4YmFlZjYuLmQ0Y2RiNzY1OGMw
ZjM1YjVmYzlhMjJjZTg5OGJjYjJiOTllZTRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBBdWRp
b0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX2xvZ0lk
ZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQogI2VuZGlmCiAgICAgLCBtX21lZGlhU2Vz
c2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRR
dWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBt
X2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAg
IC8vIEFjY29yZGluZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVyIHBh
Z2UgbmF2aWdhdGUuCiAgICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3aXRo
IHBlbmRpbmcgYWN0aXZpdHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCkBAIC0xNjYs
NyArMTY2LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50
LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKICNlbmRpZgogICAgICwgbV9pc09m
ZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVl
PEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1
ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwog
CkBAIC00MzIsNyArNDMyLDcgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gQXVkaW9D
b250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmUKIHZvaWQgQXVkaW9D
b250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVm
UHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9C
dWZmZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQogewogICAgIGlmICghbV9hdWRpb0RlY29k
ZXIpCi0gICAgICAgIG1fYXVkaW9EZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0F1ZGlv
RGVjb2Rlcj4oKTsKKyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVk
aW9EZWNvZGVyPigpOwogICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1
ZGlvRGF0YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA5NzU4ODc1NDc0N2Ux
NTI0ODE4OWY0OTcwYzZkMzNlM2M2YWUxZTExLi5kOWFiYjk3NzdhOWQyNWVlYWYyNDJmZjRmZmZj
NWVjNWVmNDg2YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYQogICAgICwgbV9tdXRlZChmYWxzZSkKIHsKICAgICBzZXROb2RlVHlw
ZShOb2RlVHlwZURlc3RpbmF0aW9uKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJ
bnB1dD4odGhpcykpOwogfQogCiBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVzdGluYXRp
b25Ob2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlx
dWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVh
ZEZpbHRlck5vZGUuY3BwCmluZGV4IDE2MzczY2U5Mzc4ZDMyMmZkZDljMjUzZjljNzZkOTYzZTYx
M2NkM2IuLjRhODI1NWU2ZjBhZjA3NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNw
cApAQCAtMzksNyArMzksNyBAQCBCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXROb2RlVHlwZShO
b2RlVHlwZUJpcXVhZEZpbHRlcik7CiAKICAgICAvLyBJbml0aWFsbHkgc2V0dXAgYXMgbG93cGFz
cyBmaWx0ZXIuCi0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZFByb2Nl
c3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgZmFsc2UpOworICAgIG1fcHJvY2Vzc29yID0g
bWFrZVVuaXF1ZTxCaXF1YWRQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNl
KTsKIH0KIAogQmlxdWFkRmlsdGVyVHlwZSBCaXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29y
LmNwcAppbmRleCAwZTRlMzY4NWI4MmNlNDc3ZWM0ZTU4NTQ3ZjE2YWQ4YjcwZmM3OTA0Li5lODRi
OTgwMzU2NzBmYjFkY2MzMjcwOTY2M2QyYjM5MDU1MmU2NWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIEJpcXVhZFByb2Nlc3Nvcjo6fkJpcXVhZFByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0RTUEtlcm5lbD4gQmlxdWFkUHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBCaXF1
YWRQcm9jZXNzb3I6OmNoZWNrRm9yRGlydHlDb2VmZmljaWVudHMoKQpAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpnZXRGcmVxdWVuY3lSZXNwb25zZShpbnQgbkZyZXF1
ZW5jaWVzLCBjb25zdCBmbG9hdCogZnJlcXVlCiAgICAgLy8gdG8gYXZvaWQgaW50ZXJmZXJpbmcg
d2l0aCB0aGUgcHJvY2Vzc2luZyBydW5uaW5nIGluIHRoZSBhdWRpbwogICAgIC8vIHRocmVhZCBv
biB0aGUgbWFpbiBrZXJuZWxzLgogICAgIAotICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgYXV0byByZXNwb25zZUtl
cm5lbCA9IG1ha2VVbmlxdWU8QmlxdWFkRFNQS2VybmVsPih0aGlzKTsKIAogICAgIHJlc3BvbnNl
S2VybmVsLT5nZXRGcmVxdWVuY3lSZXNwb25zZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5jeUh6LCBt
YWdSZXNwb25zZSwgcGhhc2VSZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IDIwYjhkYTE5ZTVm
NDM5Y2ZlNTQ1NWYwMWRjMjkwODc0NDZiMjNjMDguLmRmNTBmMjY4NzM2OGFhNWMzMjk1NDE0ODE1
MDc3N2EwMjkxNzMyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC01OSw5ICs1OSw5IEBAIENoYW5uZWxNZXJn
ZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuCiAKICAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5w
dXRzLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQot
ICAgICAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
CisgICAgICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAot
ICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkp
OworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwog
ICAgIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDQ2MzU0OThjMDM0
YzU5MzBiNGU4ZjIyMDg2ZTE0YjJiNGJkMjkxMTcuLjgyZjY5YTA0Zjk5OTI2MWQ1OGMxNTJiZmM2
MDJhMzY2MDk2MDkxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIENoYW5u
ZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3Bs
aXR0ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsK
IAogICAgIC8vIENyZWF0ZSBhIGZpeGVkIG51bWJlciBvZiBvdXRwdXRzIChhYmxlIHRvIGhhbmRs
ZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgZmVkIHRvIGFuIGlucHV0KS4KICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCi0gICAgICAgIGFk
ZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAg
ICAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAg
ICAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCAyMzgyZGFiY2M5Yzk5MjdjYWMzMWQzMjc1
ZjIyMDNjYzhmNThhMDkzLi5lMzY2NzdjZmQ3NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9k
ZS5jcHAKQEAgLTUyLDggKzUyLDggQEAgQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVDb252b2x2ZXIpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv
Tm9kZU91dHB1dD4odGhpcywgMikpOworICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2Rl
SW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+
KHRoaXMsIDIpKTsKIAogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMu
CiAgICAgbV9jaGFubmVsQ291bnQgPSAyOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQogCiAg
ICAgLy8gQ3JlYXRlIHRoZSByZXZlcmIgd2l0aCB0aGUgZ2l2ZW4gaW1wdWxzZSByZXNwb25zZS4K
ICAgICBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzID0gIWNvbnRleHQoKS5pc09mZmxpbmVDb250
ZXh0KCk7Ci0gICAgYXV0byByZXZlcmIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4oYnVmZmVy
QnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUs
IDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CisgICAgYXV0byByZXZlcmIg
PSBtYWtlVW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3Np
bmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25v
cm1hbGl6ZSk7CiAKICAgICB7CiAgICAgICAgIC8vIFN5bmNocm9uaXplIHdpdGggcHJvY2Vzcygp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4
IDQyNjVhMDA3NDllYWZmZjZhOWUxYjlkMWRkYTYwZDRkYjcwMjhiMDMuLjgxYmQ3ZDE5YjI3ZTc0
MWI1MGY2Zjg0ZTUxZjdjZTI1NTc4MDJiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgaW5saW5lIERlbGF5Tm9k
ZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91
YmxlIG1heEQKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7Ci0gICAgbV9wcm9jZXNzb3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAx
LCBtYXhEZWxheVRpbWUpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nl
c3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAogRXhjZXB0
aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggYTc1
YmE2YjdjOTJlNzQ0NGM2NTYwOGU4YWUxOGY5ZDUwMDAyNmEwNC4uMTAzNjZlZjZlYWZiNmM0NGRi
MTkxMjcxYTk5NWQ5ZTZkMmFjYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGVsYXlQcm9j
ZXNzb3I6On5EZWxheVByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5l
bD4gRGVsYXlQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERl
bGF5RFNQS2VybmVsPih0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yTm9kZS5jcHAKaW5kZXggYWEwZTRhODAxMTllYmVkOWRkMzY5NmIzZmExMzA1ZGRmMzJiZDA1
Mi4uMTQwOTZkOGYwYzU5NmE1Mjk3MTY2NmVmODI2N2EwMjNmZGI0NGIyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuY3BwCkBAIC00Niw4ICs0Niw4IEBAIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFt
aWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wCiB7CiAg
ICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwogCi0gICAgYWRkSW5w
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1
dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJlck9m
T3V0cHV0Q2hhbm5lbHMpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0
Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgbV90aHJlc2hvbGQgPSBB
dWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CiAg
ICAgbV9rbmVlID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJrbmVlIiwgMzAsIDAsIDQw
KTsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFs
aXplKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7ICAg
IAotICAgIG1fZHluYW1pY3NDb21wcmVzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxEeW5hbWljc0Nv
bXByZXNzb3I+KHNhbXBsZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
ICAgIG1fZHluYW1pY3NDb21wcmVzc29yID0gbWFrZVVuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+
KHNhbXBsZVJhdGUoKSwgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogfQogCiB2b2lk
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDZjOTRhNTIzYzNiMmEwMjEyYjJh
NTRhMWE5YzhmMDI2YmJkMWRiNWYuLjI1N2RmMmVjZTIzMzhjYmNiYWI5ZWQwNTEyMzNjNjRiMWM1
N2YyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3Bw
CkBAIC00Niw4ICs0Niw4IEBAIEdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAKICAgICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUo
Y29udGV4dCwgImdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5p
cXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMzgxYWU3Mjc5NGZiMGU3ZmVhNjMzMWFiZDMzYjIw
YzE1ODQ1ZmY5Yi4uOTEyZTZlYjIzMjE0NTY0M2Q2ZmRhZmJjMTFlOTY3NjRjM2QyZjVkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVw
ZW5kaW5nIG9uIHdoYXQgdGhlIG1lZGlhIGVsZW1lbnQgLnNyYyBpcyBzZXQgdG8uCi0gICAgYWRk
T3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAg
YWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBp
bml0aWFsaXplKCk7CiB9CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJj
CiAKICAgICAgICAgaWYgKHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAg
ICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0
ZSgpOwotICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMp
OworICAgICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRp
Q2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQnlwYXNzIHJlc2FtcGxpbmcuCiAgICAgICAgICAg
ICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUuY3BwCmluZGV4IDViMmE1MDBkZDI5NGQxMDU1OGJjN2EwOGNmNzcxNmU0MjZiNWMyYWMuLmU0
M2Y1NDQ4YmMyNmI4NmFmNjkzZDAwOTk5NWM2NzM0ZjY5NTVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
OjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lCiAg
ICAgYXVkaW9Tb3VyY2VQcm92aWRlci0+c2V0Q2xpZW50KHRoaXMpOwogICAgIAogICAgIC8vIERl
ZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxkIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIGZvcm1h
dCBvZiB0aGUgTWVkaWFTdHJlYW0ncyBhdWRpbyB0cmFjay4KLSAgICBhZGRPdXRwdXQoc3RkOjpt
YWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsK
IH0KQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0
Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UKICAgICAgICAgbV9t
dWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBudWxscHRyOwogICAgIGVsc2UgewogICAgICAgICBkb3Vi
bGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZTsKLSAgICAgICAg
bV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJl
c2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX211bHRp
Q2hhbm5lbFJlc2FtcGxlciA9IG1ha2VVbmlxdWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2Fs
ZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVscyk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VOdW1iZXJP
ZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggNWI1MDI5YmZiY2U3N2FkNWI2
YzNjODgzMjYwZGI5ZGVmZGY2MTA0Yi4uYTk5Y2VhYWQ2YjVjMjFlMDlkZDIyNTNjMmFjZjMwNDU1
NDc1M2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2Np
bGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2Np
bGxhdG9yTm9kZS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0
b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXRU
eXBlKG1fdHlwZSk7CiAKICAgICAvLyBBbiBvc2NpbGxhdG9yIGlzIGFsd2F5cyBtb25vLgotICAg
IGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwor
ICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAg
ICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5jcHAKaW5kZXggZjY0NzQ2OWUyMzU1ZWIzYTBjMDliM2IwODUyYmZiZWM2ZTQ4
ZDI4ZC4uNTFjNjk5MTZmZmRlNzBmNWU2ODBhYTkyN2NlZmVmN2NhNzMyYzNlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC01OCw4ICs1
OCw4IEBAIFBhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQogICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3Vz
bHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5n
IHRoZSBIUlRGIGRhdGFiYXNlLgogICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFi
YXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0
LnNhbXBsZVJhdGUoKSk7CiAKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2Rl
T3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1
dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAg
ICBtX2NoYW5uZWxDb3VudCA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1BlcmlvZGljV2F2ZS5jcHAKaW5kZXggYmIyYTA3ZDIzNTRlYmFmOTRkMDA0NjVhNGI0MWQ4
NjA1NTU5OTg2Yi4uZWM5YTE3YzRmNTZlYjk5NjZkYzE3NjI3ZTkzNDA1YmExZmQ0OGM0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcApA
QCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgUGVyaW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRh
Ymxlcyhjb25zdCBmbG9hdCogcmVhbERhdGEsIGNvbnN0IGZsb2F0KiBpCiAgICAgICAgIHJlYWxQ
WzBdID0gMDsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGJhbmQtbGltaXRlZCB0YWJsZS4KLSAg
ICAgICAgbV9iYW5kTGltaXRlZFRhYmxlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zs
b2F0QXJyYXk+KG1fcGVyaW9kaWNXYXZlU2l6ZSkpOworICAgICAgICBtX2JhbmRMaW1pdGVkVGFi
bGVzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXpl
KSk7CiAKICAgICAgICAgLy8gQXBwbHkgYW4gaW52ZXJzZSBGRlQgdG8gZ2VuZXJhdGUgdGhlIHRp
bWUtZG9tYWluIHRhYmxlIGRhdGEuCiAgICAgICAgIGZsb2F0KiBkYXRhID0gbV9iYW5kTGltaXRl
ZFRhYmxlc1tyYW5nZUluZGV4XS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKaW5kZXggM2I2MjgxZDFlODQzZWQy
OTljZjYxNTNjNzMyNzk3MDc0MTgwNjc3OC4uODAyMzczNDA3Zjc1ZDQ3ZTI1OWViNjA1NjM4MGY2
MzVmMTNhY2VmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFJlYWx0aW1lQW5hbHlzZXI6
OlJlYWx0aW1lQW5hbHlzZXIoKQogICAgICwgbV9taW5EZWNpYmVscyhEZWZhdWx0TWluRGVjaWJl
bHMpCiAgICAgLCBtX21heERlY2liZWxzKERlZmF1bHRNYXhEZWNpYmVscykKIHsKLSAgICBtX2Fu
YWx5c2lzRnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7
CisgICAgbV9hbmFseXNpc0ZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNp
emUpOwogfQogCiBSZWFsdGltZUFuYWx5c2VyOjp+UmVhbHRpbWVBbmFseXNlcigpID0gZGVmYXVs
dDsKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBSZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKHNp
emVfdCBzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9mZnRTaXplICE9
IHNpemUpIHsKLSAgICAgICAgbV9hbmFseXNpc0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRG
cmFtZT4oc2l6ZSk7CisgICAgICAgIG1fYW5hbHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJh
bWU+KHNpemUpOwogICAgICAgICAvLyBtX21hZ25pdHVkZUJ1ZmZlciBoYXMgc2l6ZSA9IGZmdFNp
emUgLyAyIGJlY2F1c2UgaXQgY29udGFpbnMgZmxvYXRzIHJlZHVjZWQgZnJvbSBjb21wbGV4IHZh
bHVlcyBpbiBtX2FuYWx5c2lzRnJhbWUuCiAgICAgICAgIG1fbWFnbml0dWRlQnVmZmVyLmFsbG9j
YXRlKHNpemUgLyAyKTsKICAgICAgICAgbV9mZnRTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmlu
ZGV4IGQ1OWRlY2Y5OTUxNmY2ZDAxYWY5YzFkOWZkYmYxZDBiMTAxOWU0MGYuLmQ1YjNhZmJmMjcx
MDE0NTE0OTRiMTg5Mzc3NjhiNjA1ZjZhM2I0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNjgsOCAr
NjgsOCBAQCBTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZQogICAgIEFTU0VSVChudW1iZXJPZklucHV0
Q2hhbm5lbHMgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwogCiAgICAg
c2V0Tm9kZVR5cGUoTm9kZVR5cGVKYXZhU2NyaXB0KTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7Cisg
ICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91
dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNDEwZDFk
YWY1Yzg5NTQwMDlmZjA2MzZhODI5MDBiZjk0YWY0ZjhmMS4uZjNkMjEyMmRmNTFjNGYxYTI5MjI0
ZTY5M2FiNDk1YmJjMmI5MzhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCkBAIC00OSwxMiArNDksMTIgQEAg
dm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjpsYXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpCiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmICghbV90ZW1wQnVmZmVyKSB7Ci0g
ICAgICAgIG1fdGVtcEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihS
ZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOwotICAgICAgICBt
X3VwU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVt
KTsKLSAgICAgICAgbV9kb3duU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+
KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV91cFNhbXBsZXIyID0gc3RkOjptYWtl
X3VuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV9kb3du
U2FtcGxlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVt
ICogNCk7CisgICAgICAgIG1fdGVtcEJ1ZmZlciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5
PihSZW5kZXJpbmdRdWFudHVtICogMik7CisgICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBtYWtlVW5p
cXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVyaW5nUXVhbnR1bSAqIDQpOworICAgICAgICBtX3Vw
U2FtcGxlciA9IG1ha2VVbmlxdWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKKyAgICAg
ICAgbV9kb3duU2FtcGxlciA9IG1ha2VVbmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50
dW0gKiAyKTsKKyAgICAgICAgbV91cFNhbXBsZXIyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJl
bmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBtYWtlVW5pcXVl
PERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4
IDg0ODY5OTNmMjEwODRjY2M2MWNjZDgwYjJjMTg3ZTA4YzE1NWZkMDEuLjZlN2U4ZGQxYzljMTlm
YTNjODVlM2Q5ZDg1NWFiOWY0NTc4NWI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFdhdmVT
aGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBB
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsK
ICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwotICAgIG1fcHJvY2Vzc29yID0g
c3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyUHJvY2Vzc29yPihjb250ZXh0LnNhbXBsZVJhdGUo
KSwgMSk7CisgICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+
KGNvbnRleHQuc2FtcGxlUmF0ZSgpLCAxKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNz
b3IuY3BwCmluZGV4IDI4OWMzOWY1ZjNmOWY3YTc5ZTlhNWI2YTZkODMxNWI1OTFmNDMyZGEuLmJm
ZTVlMGU0N2ZiODRhMjhjNjNjNmUyOGIzMmUwZmMxMWU1YzY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBXYXZlU2hhcGVyUHJvY2Vzc29yOjp+V2F2ZVNoYXBlclByb2Nlc3Nv
cigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nv
cjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hh
cGVyRFNQS2VybmVsPih0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyRFNQ
S2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShG
bG9hdDMyQXJyYXkqIGN1cnZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKaW5kZXggOGMzZDEzNDZjNDAzMGNmYjNk
ODI3NzM3YTBhMTVmM2YxY2I5YmFkNy4uMWI5MTJkOThkOWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQy
ZmFmMzU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L0ZpZG9IaWRNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCkBAIC0xNTAsOSArMTUwLDkgQEAgRmlkb0hpZE1lc3Nh
Z2U6OkZpZG9IaWRNZXNzYWdlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1h
bmQgdHlwZSwgY28KICAgICB1aW50OF90IHNlcXVlbmNlID0gMDsKIAogICAgIHNpemVfdCBwb3Mg
PSBkYXRhLnNpemUoKSA+IGtIaWRJbml0UGFja2V0RGF0YVNpemUgPyBrSGlkSW5pdFBhY2tldERh
dGFTaXplIDogZGF0YS5zaXplKCk7Ci0gICAgbV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIHR5cGUsIGdldEluaXRQYWNrZXREYXRh
KGRhdGEpLCBkYXRhLnNpemUoKSkpOworICAgIG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxG
aWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRh
KSwgZGF0YS5zaXplKCkpKTsKICAgICBmb3IgKDsgcG9zIDwgZGF0YS5zaXplKCk7IHBvcyArPSBr
SGlkQ29udGludWF0aW9uUGFja2V0RGF0YVNpemUpCi0gICAgICAgIG1fcGFja2V0cy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNl
cXVlbmNlKyssIGdldENvbnRpbnVhdGlvblBhY2tldERhdGEoZGF0YSwgcG9zKSkpOworICAgICAg
ICBtX3BhY2tldHMuYXBwZW5kKG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4o
Y2hhbm5lbElkLCBzZXF1ZW5jZSsrLCBnZXRDb250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBv
cykpKTsKIH0KIAogRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxGaWRvSGlkSW5pdFBhY2tldD4gaW5pdFBhY2tldCwgc2l6ZV90IHJlbWFpbmluZ1NpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBh
Y2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBh
Y2tldC5jcHAKaW5kZXggNTViN2IyZDcxNTM2YTIzNTQ5MTNhZTM2ZTlmYjkxZWYwMGE4ZjA4My4u
MjZiODBhYThhNWYxMzk2M2M3NjhlN2U5MjNiYmFhYjJiODdiNWVlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApA
QCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9I
aWRJbml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoYwogICAgIGF1dG8gZGF0YSA9
IFZlY3Rvcjx1aW50OF90PigpOwogICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSAr
IGluZGV4LCBkYXRhU2l6ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlk
SW5pdFBhY2tldD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6
ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwg
Y29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCiAvLyBVMkYgSW5pdGlh
bGl6YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25Q
YWNrZXQ6OmNyZWF0ZUZyb20KICAgICBhdXRvIGRhdGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAg
ICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hh
bm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShk
YXRhKSk7CiB9CiAKIC8vIFUyRiBDb250aW51YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4
IDAyMTQ1ZDBjYzJlOGM5ZWFkYjBjODgyOTQxYjg1OWZjMGFlODA1MmQuLjViNjRhMDg3NDZhZjgw
ODBjZDJlNzI1MDNmYTAwZDNjOTQ5ZmIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gRGF0YWJhc2U6Om9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbklu
TmV3RGF0YWJhc2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVzdWx0OwotICAgIGF1dG8gdGFzayA9IHN0
ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0Rh
dGFiYXNlLCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1
ZTxEYXRhYmFzZU9wZW5UYXNrPigqdGhpcywgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNo
cm9uaXplciwgcmVzdWx0KTsKICAgICB0aHJlYWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1v
dmUodGFzaykpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApA
QCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgRGF0YWJhc2U6OmNsb3NlKCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2soc3RkOjptYWtlX3Vu
aXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOworICAgIHRocmVh
ZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2sobWFrZVVuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRo
aXMsIHN5bmNocm9uaXplcikpOwogCiAgICAgLy8gRklYTUU6IGlPUyBkZXBlbmRzIG9uIHRoaXMg
ZnVuY3Rpb24gYmxvY2tpbmcgdW50aWwgdGhlIGRhdGFiYXNlIGlzIGNsb3NlZCBhcyBwYXJ0CiAg
ICAgLy8gb2YgY2xvc2luZyBhbGwgb3BlbiBkYXRhYmFzZXMgZnJvbSBhIHByb2Nlc3MgYXNzZXJ0
aW9uIGV4cGlyYXRpb24gaGFuZGxlci4KQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIERhdGFiYXNl
OjpzY2hlZHVsZVRyYW5zYWN0aW9uKCkKICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRy
dWU7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJz
dCgpOwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlv
blRhc2s+KFdURk1vdmUodHJhbnNhY3Rpb24pKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVl
PERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPihXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiAgICAgTE9H
KFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0
cmFuc2FjdGlvbiAlcFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAgICAg
ZGF0YWJhc2VUaHJlYWQoKS5zY2hlZHVsZVRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC01NDEs
NyArNTQxLDcgQEAgdm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIGF1dG8mIHRocmVhZCA9IGRhdGFiYXNlVGhy
ZWFkKCk7CiAKLSAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrPigmdHJhbnNhY3Rpb24pOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0
YWJhc2VUcmFuc2FjdGlvblRhc2s+KCZ0cmFuc2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEks
ICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rp
b24gc3RlcFxuIiwgdGFzay5nZXQoKSk7CiAgICAgdGhyZWFkLnNjaGVkdWxlVGFzayhXVEZNb3Zl
KHRhc2spKTsKIH0KQEAgLTc2Myw3ICs3NjMsNyBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6
dGFibGVOYW1lcygpCiAgICAgaWYgKHRocmVhZC50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hy
b25pemVyKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6
bWFrZV91bmlxdWU8RGF0YWJhc2VUYWJsZU5hbWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwg
cmVzdWx0KTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rh
c2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIsIHJlc3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1t
ZWRpYXRlVGFzayhXVEZNb3ZlKHRhc2spKTsKICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tD
b21wbGV0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggM2JhYmQ0OTU2NmYxNGExYjNjMGQzYjE3YmY0
YzdmMzJjNWUzZDVmNy4uZDY0OTdjMzk3ZmE0NzQyODU5ZTA1ODYyMjM2ZWRlZTQzZDRlZjM5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0
YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFkKCkKLSAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGlu
YXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCisgICAg
OiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IobWFrZVVuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yPigpKQogewogICAgIG1fc2VsZlJlZiA9IHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXgg
ZDhkZGNjNTk4NTUxNTc2ZDJhMmMxMGY0MmU0YWQxMmE4MjU5YjUxOS4uYzI4YTk2ZjQ1ODM5ZWY1
NGRhZjFmOTlhMWFkNThkN2VjZDRhNjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNTQ5LDcgKzU0OSw3
IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFi
YXNlKQogICAgIExvY2tIb2xkZXIgb3BlbkRhdGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1h
cEd1YXJkKTsKIAogICAgIGlmICghbV9vcGVuRGF0YWJhc2VNYXApCi0gICAgICAgIG1fb3BlbkRh
dGFiYXNlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKKyAgICAg
ICAgbV9vcGVuRGF0YWJhc2VNYXAgPSBtYWtlVW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwog
CiAgICAgYXV0byBvcmlnaW4gPSBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpOwogCkBAIC05NTYs
NyArOTU2LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2Uo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2Ug
SGFzaE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2Yg
dGhlIG9yaWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nQ3JlYXRl
ZC5nZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNl
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAg
YXV0byBvd25lZFNldCA9IG1ha2VVbmlxdWU8SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKICAg
ICAgICAgbmFtZVNldCA9IG93bmVkU2V0LmdldCgpOwogICAgICAgICBtX2JlaW5nQ3JlYXRlZC5h
ZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKG93bmVkU2V0KSk7CiAgICAgfQpAQCAt
MTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0
YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24n
dCB1c2UgSGFzaE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNv
cHkgb2YgdGhlIG9yaWdpbiBldmVyeSB0aW1lLgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5n
RGVsZXRlZC5nZXQob3JpZ2luKTsKICAgICBpZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBv
d25lZFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBh
dXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5h
bWVTZXQgPSBvd25lZFNldC5nZXQoKTsKICAgICAgICAgbV9iZWluZ0RlbGV0ZWQuYWRkKG9yaWdp
bi5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShvd25lZFNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggMjBkNjk3MzQ3NzRkYmZiZjMwYmQ4ZjM5Y2U0YzU5NTcyMTRlOTAwYy4uNGNiMDQxZTQ1MmM4
MGY1ZjU5YmIyNzIxZWFiOGVjMWE4ZjYxODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoY29uc3QgU3Ry
aW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlvbmEKICAgICBlbHNlIGlmIChtX3JlYWRPbmx5KQogICAg
ICAgICBwZXJtaXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5TWFzazsKIAot
ICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0
YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7
IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lv
bnMpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0
YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7
IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lv
bnMpOwogCiAgICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50
LT5zZXREYXRhYmFzZURlbGV0ZWRFcnJvcigpOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU1FM
VHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCgpCiAgICAgfQogCiAgICAg
QVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0
YWJhc2UoKSwgbV9yZWFkT25seSk7CisgICAgbV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlx
dWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1fcmVh
ZE9ubHkpOwogCiAgICAgbV9kYXRhYmFzZS0+cmVzZXREZWxldGVzKCk7CiAgICAgbV9kYXRhYmFz
ZS0+ZGlzYWJsZUF1dGhvcml6ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwCmluZGV4IDc5YWE1NjE4MWZmZWYz
YWIxYTkyYWE1N2ZlY2RiNmZiYTU5ZTZmMGIuLjEyOWQ4NmZmY2ZiZDE1N2E4MGIwMTkyZTNiNDk5
NzEzM2JlYjc4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVy
L05hdmlnYXRvcldlYkRyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
cml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBOYXZpZ2F0b3JX
ZWJEcml2ZXIqIE5hdmlnYXRvcldlYkRyaXZlcjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JXZWJEcml2ZXIqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZp
Z2F0b3JXZWJEcml2ZXIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBz
dXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8g
bmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOwor
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYkRyaXZl
cj4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L05hdmlnYXRvckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0
b3JHUFUuY3BwCmluZGV4IDg4YTk3ODA0NGJjMWU3MDg5MzM1NjVkYzYyZDBhMzE0NmIzOGI0MjYu
LjM3NmQxNTVjYTliMmY1ZDJhNGFiMTg1MmM3NzZkOWMxOGYyZTUyMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBOYXZpZ2F0b3JHUFUqIE5hdmlnYXRvckdQVTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikK
IHsKICAgICBOYXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JH
UFUqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFt
ZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVu
dCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1
cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0
aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKaW5kZXggMWIzNDI1MDRkNjk1NTA4ZjA4MTZj
Y2I1NTgyZjViZDlhYTc2MWE2Yi4uNWY1N2VmMTE3NzUzMWEwYWMzZDk2MGRlYjFkNDM4NzExYTRm
MDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKQEAgLTYzLDcg
KzYzLDcgQEAgY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVk
VHlwZSB7CiAKICAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKICAgICB7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9tZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6
Om1ha2VfdW5pcXVlPEVudW1lcmF0aW9uTWVtYmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMuYWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8
RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUobWVtYmVyKSkpOwogICAgICAgICByZXR1cm4gcmVz
dWx0LmlzTmV3RW50cnk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9u
LmgKaW5kZXggM2QwMjgxM2E2NDczNjgzMTc0YjMyMzk3ZjRiODdmYTQzN2RmZjc0ZS4uZmE4NjU1
MWUzOGQyNDkwZmI0MGE2ZWMyODAwNWE0NzExZWUwMzBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlh
YmxlRGVjbGFyYXRpb24uaApAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBWYXJpYWJsZURlY2xhcmF0
aW9uIGZpbmFsIHsKICAgICAgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICB7CiAgICAg
ICAgIGlmIChzZW1hbnRpYyB8fCAhcXVhbGlmaWVycy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBt
X3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oV1RGTW92ZShxdWFsaWZpZXJz
KSwgV1RGTW92ZShzZW1hbnRpYykpOworICAgICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlx
dWU8UmFyZURhdGE+KFdURk1vdmUocXVhbGlmaWVycyksIFdURk1vdmUoc2VtYW50aWMpKTsKICAg
ICB9CiAKICAgICB+VmFyaWFibGVEZWNsYXJhdGlvbigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25X
cml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xGdW5jdGlvbldyaXRlci5jcHAKaW5kZXggZTUwMGY2MTE1ZmEwOGFmNGU0ZDM3YzZlZGYzNGMx
MjRkOWQyZDBjYy4uZGFiNjAyZWNhODBiN2MwNzU5NmE3MWNlMzk5ZjdmYjI3YTZmMTdmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xG
dW5jdGlvbldyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKQEAgLTc0OCw5ICs3NDgsOSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZmb2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OmNyZWF0ZUVudAogICAgICAgICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFy
aWFibGVOYW1lKCk7CiAgICAgfTsKICAgICBpZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21h
dGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVyKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9p
bnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVu
dHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFw
LCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRT
ZW1hbnRpY3MubWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxWZXJ0ZXhFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9p
bnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVu
dHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFw
LCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRT
ZW1hbnRpY3MubWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMpOwogICAgIGlmICgmZnVuY3Rpb25EZWZp
bml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0
aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50
aWNzLmZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJh
Z21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFy
aWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+
KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVk
U2VtYW50aWNzLmZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRp
Y3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVO
ZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1l
bnRzKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNzc0LDcgKzc3NCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZvbGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmluaXRp
b25Xcml0ZXI6OmNyZWF0ZUVuCiAgICAgICAgIHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJp
YWJsZU5hbWUoKTsKICAgICB9OwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0
Y2hlZFNlbWFudGljcy5zaGFkZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENv
bXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5z
aWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9t
YXRjaGVkU2VtYW50aWNzLnJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5l
eHRWYXJpYWJsZU5hbWUpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5
UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25EZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlw
ZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3MuZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1h
bnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5b3V0LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxl
TmFtZSkpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAK
aW5kZXggMTg1YmEwYjA4OGE1Y2VkNGM1YjY2MzZmYTk0NDJjMDAzNDBkZDAyYS4uNDBiNjJjMzdk
YmUyNTgwZTIzZDU5MGMwOTFlYmI0MTdjYTliODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNw
cApAQCAtMjcyLDE5ICsyNzIsMTkgQEAgc3RkOjp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+
IFR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICBzd2l0
Y2ggKHVubmFtZWRUeXBlLmtpbmQoKSkgewogICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2lu
ZDo6VHlwZVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNh
c3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRU
eXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJlc29sdmVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVmZXJlbmNlVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5
cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOwogICAgIH0KICAgICBjYXNl
IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBvaW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRl
clR5cGUgPSBkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2Vu
ZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRlclR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQb2ludGVyVHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRl
TmV4dFR5cGVOYW1lKCksIHBvaW50ZXJUeXBlLmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAg
Y2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5kOjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBh
dXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlw
ZT4odW5uYW1lZFR5cGUpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJl
ZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJh
eVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFt
ZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNl
IEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFycmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlw
ZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4
dFR5cGVOYW1lKCksIGFycmF5VHlwZS5udW1FbGVtZW50cygpKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUo
KSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggOTAxYzYxMDIwM2Vl
ZmY0NjkwNWE4ZDZhZjM0NDgwYjk0NDUwNWMwMi4uM2RlYzA2MzAzY2E3OTU2NDljZjg3YTRmNTMw
MDc2ZDc3YjhkODkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTENoZWNrZXIuY3BwCkBAIC05NzAsMTQgKzk3MCwxNCBAQCB2b2lkIENoZWNr
ZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikK
IAogdm9pZCBDaGVja2VyOjphc3NpZ25Db25jcmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uLCBSZWY8QVNUOjpVbm5hbWVkVHlwZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFubm90
YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVz
b2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24sIG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RG
TW92ZSh1bm5hbWVkVHlwZSkpKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92
ZSh0eXBlQW5ub3RhdGlvbikpOwogfQogCiB2b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpF
eHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWZQdHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJl
c29sdmFibGVUeXBlUmVmZXJlbmNlLCBBU1Q6OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9u
ID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAu
YWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUo
cmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpKSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVN
YXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVz
b2x2YWJsZVR5cGVSZWZlcmVuY2UpKSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICBleHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdU
Rk1vdmUodHlwZUFubm90YXRpb24pKTsKIH0KQEAgLTk4NSwxMCArOTg1LDEwIEBAIHZvaWQgQ2hl
Y2tlcjo6YXNzaWduVHlwZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNv
bHZhYmxlVHlwZVJlZmVyCiB2b2lkIENoZWNrZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lv
biYgZXhwcmVzc2lvbiwgUmVzb2x2aW5nVHlwZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpUeXBlQW5u
b3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFTVDo6UmlnaHRWYWx1ZSgpKQogewogICAgIHJlc29s
dmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+
JiByZXN1bHQpIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHBy
ZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkp
KTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBt
YWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9LCBbJl0o
UmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxS
ZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lvbiwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihy
ZXN1bHQuY29weVJlZigpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfSkpOwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90
YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IDAxNjExNGE2MTBlMTEw
MGVmZTY5NzJjYTJhMjM1MzI3YzE1MmU3YWIuLjVlNDlmMDNhM2IzODI2ZDFmZTdjYjNhNTU4Nzk2
NzY2NTc2OWZiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFBhcnNlci5jcHAKQEAgLTc0MCwxOSArNzQwLDE5IEBAIGF1dG8gUGFyc2VyOjpw
YXJzZVNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+
LCBFcnJvcj4KICAgICBzd2l0Y2ggKHRva2VuLT50eXBlKSB7CiAgICAgY2FzZSBUb2tlbjo6VHlw
ZTo6QXR0cmlidXRlOiB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGlj
KTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZN
b3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50
aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlNw
ZWNpYWxpemVkOiAgewogICAgICAgICBQQVJTRShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1h
bnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxB
U1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2Vu
OjpUeXBlOjpSZWdpc3RlcjogIHsKICAgICAgICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFu
dGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihX
VEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2Vt
YW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIGRlZmF1bHQ6ICB7CiAgICAg
ICAgIFBBUlNFKHJlc3VsdCwgQnVpbHRJblNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3Rk
OjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAg
ICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07
CiAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCmluZGV4IGJmOTBmNmMzNjA1NDhkNTJjOGZkOGVlZWM3
NTNjNzhkOGZhOWJmMWMuLmQ5NTIyMzA1YWRhMWVlOTcxZjE2NTI4ZGUwNjYwNGJiNmE5NmIwZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRv
ckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdh
dG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBXb3JrZXJOYXZpZ2F0b3JHUFUqIFdvcmtlck5h
dmlnYXRvckdQVTo6ZnJvbShXb3JrZXJOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBXb3Jr
ZXJOYXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JH
UFUqPihTdXBwbGVtZW50PFdvcmtlck5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVt
ZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmF2aWdhdG9yR1BVPigpOworICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsK
ICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3Zp
ZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlci5jcHAKaW5kZXggZWQ1YTNjYzgzNGZlMTlkNDg4OGI4NTU1MDRiYTE1NWQ0ODNmYzQwNy4u
YzFiYWM4NmQzYWIyYjBkOTEzZmNlNzQyMTQzMWE5NDQ1OWVlZDJkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKQEAgLTE1Myw3ICsx
NTMsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y2xl
YXJDbGllbnQoKQogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjo6ZGlkQ29ubmVjdCgpCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5k
aW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4o
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7CiAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRDb25uZWN0KCk7CiAgICAgfSkpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0KCkKIAogdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1h
a2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiAgICAgfSkpOwpAQCAt
MTc1LDcgKzE3NSw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lCiAKIHZvaWQgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0
b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURh
dGEpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgeworICAgIG1fcGVuZGluZ1Rh
c2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJp
bmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewogICAgICAgICBp
ZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEo
V1RGTW92ZShiaW5hcnlEYXRhKSk7CiAgICAgfSkpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5
RGF0YShWZWN0b3I8dWludDhfCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBidWZmZXJlZEFtb3Vu
dCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9w
ZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQp
OwogICAgIH0pKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYgog
CiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRD
bG9zaW5nSGFuZHNoYWtlKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3Bl
bmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
PihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwogICAgIH0pKTsKQEAgLTIwOCw3ICsyMDgsNyBA
QCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRD
bG9zaW5nSGFuZHNoYWtlKCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJT
b2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9z
aW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5n
JiByZWFzb24pCiB7Ci0gICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21w
bGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFzb24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxl
dGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29uLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgICAgICAg
ICBtX2NsaWVudC0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5k
c2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOwogICAgICAgICB9KSk7CkBAIC0yMTksNyAr
MjE5LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1ZmZlcmUKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewotICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5p
cXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAo
bV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigp
OwogICAgIH0pKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiAKIHZvaWQgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKCkKIHsK
LSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFr
ZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKICAg
ICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNjA3MTQ0MDkyNGZiMmNlNjdmNTM0MDYyZDc5ZThlM2Iw
NGVlMWM1MC4uYTA3YTg3NjNhZmI5NjliNDIwNzBiYzQ5YTg2MjM5Yjc4M2Q2ZWJiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcApAQCAtOTcsNyArOTcsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVz
IFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgVVJMJiByZXF1ZXN0ZWRVUgogICAgIG1f
YWxsb3dDb29raWVzID0gdmFsaWRhdGVkVVJMLT5hcmVDb29raWVzQWxsb3dlZDsKICAgICBTdHJp
bmcgdXNlckFnZW50ID0gbV9kb2N1bWVudC0+dXNlckFnZW50KG1fZG9jdW1lbnQtPnVybCgpKTsK
ICAgICBTdHJpbmcgY2xpZW50T3JpZ2luID0gbV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS50
b1N0cmluZygpOwotICAgIG1faGFuZHNoYWtlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRI
YW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJsLCBwcm90b2NvbCwgdXNlckFnZW50LCBjbGllbnRP
cmlnaW4sIG1fYWxsb3dDb29raWVzKTsKKyAgICBtX2hhbmRzaGFrZSA9IG1ha2VVbmlxdWU8V2Vi
U29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwg
Y2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CiAgICAgbV9oYW5kc2hha2UtPnJlc2V0KCk7
CiAgICAgaWYgKG1fZGVmbGF0ZUZyYW1lci5jYW5EZWZsYXRlKCkpCiAgICAgICAgIG1faGFuZHNo
YWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3IobV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lv
blByb2Nlc3NvcigpKTsKQEAgLTcwMyw3ICs3MDMsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6
OnByb2Nlc3NGcmFtZSgpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUo
Y29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1
ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3Rk
OjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1
ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gV2ViU29ja2V0RnJhbWU6Ok9w
Q29kZVRleHQ7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlwZVN0cmluZzsK
ICAgICBmcmFtZS0+c3RyaW5nRGF0YSA9IHN0cmluZzsKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5n
KQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewog
ICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVl
dWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4o
KTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFt
ZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5
cGVWZWN0b3I7CiAgICAgZnJhbWUtPnZlY3RvckRhdGEucmVzaXplKGRhdGFMZW5ndGgpOwpAQCAt
NzI1LDcgKzcyNSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdl
YlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyCiB2b2lkIFdlYlNvY2tldENo
YW5uZWw6OmVucXVldWVCbG9iRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIEJs
b2ImIGJsb2IpCiB7CiAgICAgQVNTRVJUKG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91
dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAgIGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8gZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1l
PigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBvcENvZGU7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9
IFF1ZXVlZEZyYW1lVHlwZUJsb2I7CiAgICAgZnJhbWUtPmJsb2JEYXRhID0gJmJsb2I7CkBAIC03
NjMsNyArNzYzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFt
ZVF1ZXVlKCkKICAgICAgICAgICAgICAgICByZWYoKTsgLy8gV2lsbCBiZSBkZXJlZmVkIGFmdGVy
IGRpZEZpbmlzaExvYWRpbmcoKSBvciBkaWRGYWlsKCkuCiAgICAgICAgICAgICAgICAgQVNTRVJU
KCFtX2Jsb2JMb2FkZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVChmcmFtZS0+YmxvYkRhdGEp
OwotICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJl
YWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpOwor
ICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRl
cj4oRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpOwogICAgICAgICAg
ICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJTdGFydGVkOwogICAgICAgICAg
ICAgICAgIG1fYmxvYkxvYWRlci0+c3RhcnQobV9kb2N1bWVudC5nZXQoKSwgKmZyYW1lLT5ibG9i
RGF0YSk7CiAgICAgICAgICAgICAgICAgbV9vdXRnb2luZ0ZyYW1lUXVldWUucHJlcGVuZChXVEZN
b3ZlKGZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKaW5kZXggZjJmYTYyMDljMDQ4ZjUx
NTE4YTI1ZWVjMTNhZWYyNTY0YzlmNGU3Yi4uZWUzM2VhMGZlNWNmMWQ1YmY3OWEyZGEwNjcwN2I3
M2NkM2E3OGM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBA
IFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OldlYlNvY2tldERlZmxhdGVGcmFtZXIoKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRl
RnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9jZXNzb3IoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZT4odGhpcyk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKIH0K
IAogYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKQEAgLTE3
MCw4ICsxNzAsOCBAQCBib29sIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUoKSBj
b25zdAogI2lmIFVTRShaTElCKQogdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVE
ZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVy
TW9kZSBtb2RlKQogewotICAgIG1fZGVmbGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tl
dERlZmxhdGVyPih3aW5kb3dCaXRzLCBtb2RlKTsKLSAgICBtX2luZmxhdGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4oKTsKKyAgICBtX2RlZmxhdGVyID0gbWFrZVVuaXF1
ZTxXZWJTb2NrZXREZWZsYXRlcj4od2luZG93Qml0cywgbW9kZSk7CisgICAgbV9pbmZsYXRlciA9
IG1ha2VVbmlxdWU8V2ViU29ja2V0SW5mbGF0ZXI+KCk7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5p
bml0aWFsaXplKCkgfHwgIW1faW5mbGF0ZXItPmluaXRpYWxpemUoKSkgewogICAgICAgICBtX2Rl
ZmxhdGVyID0gbnVsbHB0cjsKICAgICAgICAgbV9pbmZsYXRlciA9IG51bGxwdHI7CkBAIC0xODQs
NyArMTg0LDcgQEAgdm9pZCBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGlu
dCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZsYXRlcjo6Q28KIHN0ZDo6dW5pcXVlX3B0cjxEZWZs
YXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tl
dEZyYW1lJiBmcmFtZSkKIHsKICNpZiBVU0UoWkxJQikKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQg
PSBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxl
ZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNOb25Db250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkg
fHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYg
KCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3Ro
KSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkpIHsKQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8RGVmbGF0ZVJlc3VsdEhvbGRlcj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVm
bGF0ZShXZWJTb2NrZXRGcgogICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBtX2RlZmxhdGVyLT5z
aXplKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CiAjZW5kaWYKIH0KIApAQCAtMjEwLDcgKzIxMCw3
IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6cmVzZXREZWZsYXRlQ29udGV4dCgpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjppbmZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5mbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0byBy
ZXN1bHQgPSBtYWtlVW5pcXVlPEluZmxhdGVSZXN1bHRIb2xkZXI+KHRoaXMpOwogICAgIGlmICgh
ZW5hYmxlZCgpICYmIGZyYW1lLmNvbXByZXNzKSB7CiAgICAgICAgIHJlc3VsdC0+ZmFpbCgiQ29t
cHJlc3NlZCBiaXQgbXVzdCBiZSAwIGlmIG5vIG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRl
bnNpb24iKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCmluZGV4IDFkNmYx
NzgyMmM4MDUyODFiNzBhNDE2MjBkY2RlZTZhZDJhYjg4OWMuLjRhNDg2NWY4NDk0ZDA2MTNlYWMz
MjFhNTk0ZjhiYWUxOTk5NmJiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBX
ZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0RGVmbGF0ZXIoaW50IHdpbmRvd0JpdHMsIENvbnRl
eHRUYWtlT3Zlck1vZGUgY29udGV4dAogewogICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPj0gOCk7
CiAgICAgQVNTRVJUKG1fd2luZG93Qml0cyA8PSAxNSk7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1h
a2VfdW5pcXVlPHpfc3RyZWFtPigpOworICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRG
YXN0TWFsbG9jQ2hlY2s8el9zdHJlYW0+KCk7CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAw
LCBzaXplb2Yoel9zdHJlYW0pKTsKIH0KIApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgV2ViU29j
a2V0RGVmbGF0ZXI6OnJlc2V0KCkKIFdlYlNvY2tldEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRl
cihpbnQgd2luZG93Qml0cykKICAgICA6IG1fd2luZG93Qml0cyh3aW5kb3dCaXRzKQogewotICAg
IG1fc3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNl
dChtX3N0cmVhbS5nZXQoKSwgMCwgc2l6ZW9mKHpfc3RyZWFtKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDk5NDA3M2VhYTVlOGIyMzBkMWM4
YjAwYzE2YzU5NjQzZTk3ODQyNjguLmRjNmY2NjBmZDM4OGNlZmZhZjBlYmVmNmU2NjBlNmI2OTVi
YjYzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAt
MzYxLDcgKzM2MSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJy
aWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUoU2NyaXB0RXhlY3V0CiAKICAgICBib29sIHNlbnQg
PSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKHsKICAgICAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssCi0gICAgICAgIFtj
bGllbnRXcmFwcGVyID0gY2xpZW50V3JhcHBlci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGVlcj4oY2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRl
clByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwgV1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgW2NsaWVudFdyYXBwZXIg
PSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgJmxvYWRlclByb3h5LCBwZWVyID0gbWFrZVVuaXF1
ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRh
c2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+
ZmFpbGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJ
ZiBCcmlkZ2U6OmluaXRpYWxpemUoKSBxdWl0dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBt
YWluVGhyZWFkRGVzdHJveSgpIHRvIGRlbGV0ZSB0aGUgcGVlci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKaW5kZXggZDk3YjVjMmE4NWE5ZDIz
MjhmOTg0MGY0NGQzZDFlOTYzMmM4MmQ5ZS4uNzc2YzQzYWVjMGI5YjViZGVhZGMzZGQ4OTEyNmFj
ZWQ2YmE3NTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZp
Z2F0b3JXZWJWUi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0
b3JXZWJWUi5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgTmF2aWdhdG9yV2ViVlIqIE5hdmlnYXRvcldl
YlZSOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvcldlYlZSKiBz
dXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yV2ViVlIqPihTdXBwbGVtZW50PE5hdmln
YXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
TmF2aWdhdG9yV2ViVlI+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlx
dWU8TmF2aWdhdG9yV2ViVlI+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50
LmdldCgpOwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3BlbnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcApp
bmRleCBiYzIzZDU5Y2MzMTIzN2IxNDk3YTc2YWNjNTlkM2VhZjVkMmI1ODQwLi42Y2E2N2YzOTFh
MzFmY2QzODY5MjU1YjIxZjJmY2I3ZjNmYmY5YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9wZW5TU0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5j
cHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHRJbXBsIDogcHVi
bGljIENyeXB0b0RpZ2VzdENvbnRleHQgewogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9EaWdlc3RDb250ZXh0PiBjcmVhdGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q3J5cHRvRGlnZXN0Q29udGV4dEltcGw+KCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENyeXB0b0RpZ2VzdENvbnRleHRJbXBsPigpOwogICAgIH0KIAogICAgIENyeXB0
b0RpZ2VzdENvbnRleHRJbXBsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9D
bG9ja0dlbmVyaWMuY3BwCmluZGV4IDMxNTMxNjgwODA3YjcyZDVlZjkzODA5MTRlN2FlMjQwYWQ5
ZDAzOTcuLmU1M2UxOTViMzVmNDk4Zjc5NTI1MTUxZWJjMmFjZWI1ZmFmY2QyOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vQ2xvY2tHZW5lcmljLmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAogc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6
Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2xvY2tHZW5lcmljPigpOwogfQogCiBDbG9ja0dlbmVy
aWM6OkNsb2NrR2VuZXJpYygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9tYWMvQ2xvY2tDTS5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9D
bG9ja0NNLm1tCmluZGV4IGM2ODkzMjE1ZjA2YjBjNjc0ZDU0NjA4MzNiMWE0ZDUxY2MzMmI2MTQu
LjllMDcxYjc4MTRlNDRmZTAwNDQyZTY2YzcyMGIyYmZiMzEzMDY5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCkBAIC0zOSw3ICszOSw3IEBAIHN0
YXRpYyBjb25zdCBpbnQzMl90IERlZmF1bHRUaW1lU2NhbGUgPSAxMDAwOwogCiBzdGQ6OnVuaXF1
ZV9wdHI8Q2xvY2s+IENsb2NrOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPENsb2NrQ00+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2xvY2tDTT4oKTsKIH0KIAog
Q2xvY2tDTTo6Q2xvY2tDTSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcAppbmRleCBjYWNhYjg1NjhjODYxMTJkOWNkZmVmYzMwOTAyNmFkOWM4MTUz
M2U1Li5iMzVmYzE1NjQzN2YxY2EwOWQ2NDIyYmQ1OWM3MTMzZmFjMmM2MGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE1NzUsNyAr
MTU3NSw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0NvbXB1dGVk
T2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11dGF0ZXMoKQogewogICAgIGlmICghbV9jb21wdXRl
ZE9iamVjdEF0dHJpYnV0ZUNhY2hlKQotICAgICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRl
Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4o
KTsKKyAgICAgICAgbV9jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlID0gbWFrZVVuaXF1ZTxB
WENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGU+KCk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNo
ZTo6c3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBlZGZkYmIwYTA2ZmQ2ZWRhMjUwNDhiOTcx
OWI5ZWYxYmE5ZTEzNDQzLi5lNmRlYTk2MTFmOWI0ODgwYTVhMTliOWFkMWUxYmRlNzFjMTg0Nzg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtNzc3LDcg
Kzc3Nyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjp1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWsg
ZGlkU2VlaywgU3luY2hyb25vdXNseU5vdGlmeSBzeW5jCiAgICAgICAgICAgICAvLyBPdGhlcndp
c2UsIGlmIHN5bmNocm9ub3VzbHkgbm90aWZ5IGlzIGZhbHNlLCBxdWV1ZSBhIG1pY3JvdGFzayB0
byBydW4gZmluaXNoIG5vdGlmaWNhdGlvbiBzdGVwcyBmb3IgYW5pbWF0aW9uIHVubGVzcyB0aGVy
ZQogICAgICAgICAgICAgLy8gaXMgYWxyZWFkeSBhIG1pY3JvdGFzayBxdWV1ZWQgdG8gcnVuIHRo
b3NlIHN0ZXBzIGZvciBhbmltYXRpb24uCiAgICAgICAgICAgICBtX2ZpbmlzaE5vdGlmaWNhdGlv
blN0ZXBzTWljcm90YXNrUGVuZGluZyA9IHRydWU7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1
ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFz
az4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgeworICAgICAgICAg
ICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZv
aWRNaWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsK
ICAgICAgICAgICAgICAgICBpZiAobV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1Bl
bmRpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgbV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01p
Y3JvdGFza1BlbmRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgZmluaXNoTm90aWZp
Y2F0aW9uU3RlcHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCmluZGV4IGRiMGMxZGM3NmY4YTI4OTcwNDVlZTJjZmM5MTkyM2Q1OGRmMWI2Zjku
LmM1YzQ3MDYxYmZhY2ExZmNhNzI4YmUyN2IwYTJiNGE5ZjBiMzAyNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjEwLDcgKzIxMCw3
IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9i
amVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNyCiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlJj4ob2JqZWN0KTsKIAogICAgIGF1dG8g
Y2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92
ZSh0YXNrKSk7Ci0gICAgYXV0byBtaWNyb3Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURP
TUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0
aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgYXV0byBtaWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFj
dGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVl
KCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAg
ICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRU
YXJnZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dEN1c3RvbS5jcHAKaW5kZXggNjI5NWY1ODRjZmU4YTE3MjlkZGY2YjE4ZDc3NTQ5ZmQ0NGM5YTBi
ZS4uZGI1ZTc3MzQ5MGJlZGZiZjNlMGMxMGNmMjNkMGEzNmM4YTNiZGE4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTU2
LDExICs1NiwxMSBAQCBFdmVudFRhcmdldCogSlNFdmVudFRhcmdldDo6dG9XcmFwcGVkKFZNJiB2
bSwgSlNWYWx1ZSB2YWx1ZSkKIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4g
anNFdmVudFRhcmdldENhc3QoVk0mIHZtLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICBpZiAo
YXV0byogdGFyZ2V0ID0ganNEeW5hbWljQ2FzdDxKU0V2ZW50VGFyZ2V0Kj4odm0sIHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVy
Pih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CiAgICAg
aWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01XaW5kb3codm0sIHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndy
YXBwZWQoKSwgKndpbmRvdyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJn
ZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CiAgICAgaWYgKGF1dG8qIHNj
b3BlID0gdG9KU1dvcmtlckdsb2JhbFNjb3BlKHZtLCB0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBwZWQo
KSwgKnNjb3BlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBw
ZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29wZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmNwcAppbmRleCBkODMxNjA0Y2JhZWI4N2YwN2QxMmVhZGRhNGJmMDUzMWE3MGJiNDAy
Li45YmQ2NjQ0NjAxNzA1NDk1YTk0ZTdiM2ZhZGYwNDhmM2M3YjA0M2Y3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3Bw
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVU
YXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEoKIAogICAgIGF1dG8g
Y2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92
ZSh0YXNrKSk7CiAgICAgYXV0byYgY29udGV4dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3Jv
dGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlx
dWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwg
Y29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDExNGZmM2M4YTVk
ZjAzOTAyODNiMWE2N2NlNjA4ZDdmNDI0NmU3YzIuLjM1Y2NkNDk2MzVlMDYxMTk0ZTk3MjkzZTcx
MmY3YWEzNzJjNDliYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzMwMCw3ICszMzAwLDcgQEAgc3RhdGljIEV4
Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+PiB0cmFu
c2ZlckFycmF5QnVmZmUKICAgICBpZiAoYXJyYXlCdWZmZXJzLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGNvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFycmF5QnVmZmVycy5zaXplKCkpOworICAgIGF1dG8g
Y29udGVudHMgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZm
ZXJzLnNpemUoKSk7CiAKICAgICBIYXNoU2V0PEpTQzo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOwog
ICAgIGZvciAoc2l6ZV90IGFycmF5QnVmZmVySW5kZXggPSAwOyBhcnJheUJ1ZmZlckluZGV4IDwg
YXJyYXlCdWZmZXJzLnNpemUoKTsgYXJyYXlCdWZmZXJJbmRleCsrKSB7CkBAIC0zNDUxLDcgKzM0
NTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
ICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1vZHVsZXM7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycyA9IG1ha2VVbmlxdWU8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PigpOwogICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXpl
cjo6c2VyaWFsaXplKCZzdGF0ZSwgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBp
bWFnZUJpdG1hcHMsCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICB3YXNtTW9kdWxl
cywgCkBAIC0zNDY5LDcgKzM0NjksNyBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVy
KSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBX
VEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVsbHB0ciwgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICAgICAgICAgICwgc3RkOjptYWtlX3VuaXF1
ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQorICAgICAgICAgICAgICAgICwgbWFrZVVu
aXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1bGVzKQogI2VuZGlmCiAgICAgICAgICAgICAg
ICAgKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCmluZGV4IDVjNDY2Mjk0YmVlNTZjMjFiZjBmNjNkMTViMGY4ZGYwZjI3YTNh
MGUuLjRmNGIwY2YzYjdlZWNkZGQwNzg3MDI1NTIwODg5NWU0NWZhMmEwN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0x
NjQsNyArMTY0LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgQVNTRVJUKGFycmF5TGVuZ3RoKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXJDb250
ZW50c0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7
CisgICAgYXV0byBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4oKTsKICAgICB3aGlsZSAoYXJyYXlMZW5ndGgtLSkgewogICAgICAg
ICB1bnNpZ25lZCBidWZmZXJTaXplOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZl
clNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpT
Q2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGll
bnREYXRhLmNwcAppbmRleCAyNDZmNjRhOWY2MzIyYjU4NzBjYmI2ODJlZGIyZDRlZGI5NTNlYzdj
Li4zYjExMjUyYWU2NGNhZjJlNGZlNzM5ZTMxZWUxMDk5NTRkNTZhNTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcApAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIEpTVk1DbGllbnREYXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtKQog
ICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gbmV3IEpTVk1DbGllbnREYXRhKCp2bSk7
CiAgICAgdm0tPmNsaWVudERhdGEgPSBjbGllbnREYXRhOyAvLyB+Vk0gZGVsZXRlcyB0aGlzIHBv
aW50ZXIuCiAgICAgCi0gICAgdm0tPmhlYXAuYWRkTWFya2luZ0NvbnN0cmFpbnQoc3RkOjptYWtl
X3VuaXF1ZTxET01HQ091dHB1dENvbnN0cmFpbnQ+KCp2bSwgKmNsaWVudERhdGEpKTsKKyAgICB2
bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWludChtYWtlVW5pcXVlPERPTUdDT3V0cHV0Q29uc3Ry
YWludD4oKnZtLCAqY2xpZW50RGF0YSkpOwogICAgICAgICAKICAgICBjbGllbnREYXRhLT5tX25v
cm1hbFdvcmxkID0gRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoKnZtLCB0cnVlKTsKICAgICB2bS0+
bV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBXZWJDb3JlVHlwZWRBcnJheUNv
bnRyb2xsZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDE2YTc2YzQ5NTI5YTRiYjg3MWNiNjZjYTNhZDc1
YTJkNzZhODA2NTUuLmQyMzk4NTdhYTNiZGRlOWZlYjljYjg3NDBmY2Y1ZDY0OWUzNTBkYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
Ojppbml0U2NyaXB0KCkKICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmds
b2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQo
YXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgq
bV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAK
LSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVDbGll
bnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5p
cXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX3dv
cmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQu
Z2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmluZGV4IDI5YzgxODY4
MzZlYTA1NDExZThmMWVkNjQxYzA1NzBjZTgxNzY4MTUuLmFhNTZlMmZkZTg1NTc3YWNmOWMwNDc0
Yzg5ODc3ZjRlMGQ1YzUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2Nf
Y2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIE1ldGhvZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgY29uc3QgQ0luc3RhbmNl
KiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5Q
T2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmplY3QoKTsKICAgICBpZiAobV9pc2EtPmhhc01ldGhv
ZCAmJiBtX2lzYS0+aGFzTWV0aG9kKG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gbWV0aG9k
ID0gc3RkOjptYWtlX3VuaXF1ZTxDTWV0aG9kPihpZGVudCk7CisgICAgICAgIGF1dG8gbWV0aG9k
ID0gbWFrZVVuaXF1ZTxDTWV0aG9kPihpZGVudCk7CiAgICAgICAgIENNZXRob2QqIHJldCA9IG1l
dGhvZC5nZXQoKTsKICAgICAgICAgbV9tZXRob2RzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZSht
ZXRob2QpKTsKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTEwMyw3ICsxMDMsNyBAQCBGaWVsZCog
Q0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBp
bnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBDSW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2FzdDxj
b25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3QtPmdl
dE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+aGFzUHJvcGVydHkgJiYgbV9pc2EtPmhhc1Byb3Bl
cnR5KG9iaiwgaWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENGaWVsZD4oaWRlbnQpOworICAgICAgICBhdXRvIGZpZWxkID0gbWFrZVVuaXF1ZTxDRmllbGQ+
KGlkZW50KTsKICAgICAgICAgQ0ZpZWxkKiByZXQgPSBmaWVsZC5nZXQoKTsKICAgICAgICAgbV9m
aWVsZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZNb3ZlKGZpZWxkKSk7CiAgICAgICAgIHJldHVybiBy
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1t
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQppbmRleCBiODZmNzUx
YTBhNzEzOGJlMDA3NzZhNzhjYmMyYTZkNDVkZDM3NTAyLi5hM2Q4ZDMyZjI4ZGQ4MDU4YTRhYjQ0
MjczOTUzNDQwNzRmMjZjNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2NsYXNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xh
c3MubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCBNZXRob2QqIE9iamNDbGFzczo6bWV0aG9kTmFtZWQo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdAogICAgICAgICAgICAg
ICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpvYmpj
TWV0aG9kU2VsZWN0b3JdOwogCiAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBl
ZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcqKW1ldGhvZE5hbWUuZ2V0KCldKSB8fCAh
c3RyY21wKG9iamNNZXRob2RTZWxlY3Rvck5hbWUsIGJ1ZmZlci5kYXRhKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byBtZXRob2QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KHRoaXND
bGFzcywgb2JqY01ldGhvZFNlbGVjdG9yKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9
IG1ha2VVbmlxdWU8T2JqY01ldGhvZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpOwog
ICAgICAgICAgICAgICAgIG1ldGhvZFB0ciA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgICAgICAg
ICBtX21ldGhvZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTE4OSw3ICsxODksNyBAQCBGaWVsZCogT2JqY0NsYXNzOjpm
aWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkg
Y29ucwogICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5h
bWVGb3JLZXk6VVRGOEtleU5hbWVdOwogCiAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYg
W21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCld
KSB8fCBba2V5TmFtZSBpc0VxdWFsOihfX2JyaWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQo
KV0pIHsKLSAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmpjRmllbGQ+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilrZXlOYW1lKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIG5ld0ZpZWxkID0gbWFrZVVuaXF1ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilrZXlOYW1lKTsKICAgICAgICAgICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdldCgpOwog
ICAgICAgICAgICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobmV3
RmllbGQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyMCw3ICsyMjAsNyBAQCBGaWVs
ZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3Rh
bmNlKiBpbnN0YW5jZSkgY29ucwogICAgICAgICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3Ro
aXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5Om9iamNJdmFyTmFtZV07CiAKICAgICAgICAgICAg
ICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNT
dHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB8fCAhc3RyY21wKG9iamNJdmFyTmFtZSwganNOYW1l
LmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdGaWVsZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqY0ZpZWxkPihvYmpjSVZhcik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
bmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOwogICAgICAgICAgICAg
ICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdldCgpOwogICAgICAgICAgICAgICAgICAgICBtX2Zp
ZWxkQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tCmluZGV4IGUwOGIwNDhlM2I1Njg0Mjk4Y2RlZmQ5M2ViOTE4ODM4OTE1NmY0MzguLjNiOTNl
MTg3ODM4NTRjMjQ0NDZlMWNmYTU3NTg0NjZmMGYwYTdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICAKICAgICBpZiAoW3RhcmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50
czopXSl7CiAgICAgICAgIE9iamNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0Ns
YXNzKj4ob2JqY0luc3RhbmNlLT5nZXRDbGFzcygpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9kKHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhvZD4o
b2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJT
Y3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0
aG9kPiBmYWxsYmFja01ldGhvZChtYWtlVW5pcXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNh
KCksIEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1
bWVudHM6KSkpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGlj
X2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+anNDYWxsZWUoKSktPnByb3BlcnR5
TmFtZSgpOwogICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZUlk
ZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9iamNJ
bnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZp
bHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxG
aWx0ZXJzLmNwcAppbmRleCA4M2Q0NGUwNjdmYmRmNTQ3ZjZjODhiNjdhMzZlYjUzZjY5MTQ2NmVl
Li5mMTcxYTU4MjAzZjk4YWYxNTU0NzgwZTA1MTllMDRhMWU1M2EwYmQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6cHJpbnQoKSBj
b25zdAogI2VuZGlmCiAKIENvbWJpbmVkVVJMRmlsdGVyczo6Q29tYmluZWRVUkxGaWx0ZXJzKCkK
LSAgICA6IG1fcHJlZml4VHJlZVJvb3Qoc3RkOjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVydGV4
PigpKQorICAgIDogbV9wcmVmaXhUcmVlUm9vdChtYWtlVW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+
KCkpCiB7CiB9CiAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6
YWRkUGF0dGVybih1aW50NjRfdCBhY3Rpb25JZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZQog
ICAgICAgICBpZiAobmV4dEVudHJ5SW5kZXggIT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgICAg
IGxhc3RQcmVmaXhUcmVlID0gbGFzdFByZWZpeFRyZWUtPmVkZ2VzW25leHRFbnRyeUluZGV4XS5j
aGlsZC5nZXQoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBsYXN0UHJlZml4VHJlZS0+
ZWRnZXMuYXBwZW5kKFByZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0LmludGVybmVkKHRlcm0pLCBz
dGQ6Om1ha2VfdW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCl9KSk7CisgICAgICAgICAgICBsYXN0
UHJlZml4VHJlZS0+ZWRnZXMuYXBwZW5kKFByZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0LmludGVy
bmVkKHRlcm0pLCBtYWtlVW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCl9KSk7CiAgICAgICAgICAg
ICBsYXN0UHJlZml4VHJlZSA9IGxhc3RQcmVmaXhUcmVlLT5lZGdlcy5sYXN0KCkuY2hpbGQuZ2V0
KCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
CmluZGV4IDk2ZTJkNjM0Yjg5M2IzOTkzMDRhOGIyYjI4NWU2MWY0ZTQ2OWRjMGMuLmIyYTlhNzgz
NTIyNzcyODNmOTVkODQ5ZDAzYjE1NmZjZGM3MjFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9T
dWJ0bGVDcnlwdG8uY3BwCkBAIC0xMTUsMzEgKzExNSwzMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlw
dG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6RGVjcnlwdDoKICAgICAgICAgc3dpdGNoICgqaWRl
bnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVT
X1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDog
ewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdv
cml0aG1Sc2FPYWVwUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
QUVTX0NCQzoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZC
OiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0Fs
Z29yaXRobUFlc0NiY0NmYlBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0Fs
Z29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1h
a2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjQ2ZiUGFyYW1zPihwYXJhbXMpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfQ1RSOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0
aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfR0NNOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdl
dCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7
IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJh
bXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAg
LTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBzd2l0Y2gg
KCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6SE1BQzoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDRFNBOiB7CiAgICAg
ICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVj
ZHNhUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNF
eGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFz
ZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElk
ZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbXMpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFy
YW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BTUzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMg
PSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHN0YXRlLCB2
YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFt
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1
bHQ6CkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CkBAIC0xOTEsNyArMTkxLDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpSU0FFU19QS0NTMV92MV81OiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4oc3RhdGUsIHZhbHVl
LmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlv
biB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFy
YW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKQEAgLTIwMyw3
ICsyMDMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJ
ZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRl
bnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50
aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2Vu
UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9B
bGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFF
U19DVFI6CkBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAg
IGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFy
YW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1z
PihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6IHsKQEAgLTIyMywx
NCArMjIzLDE0IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFz
aElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJ
ZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRl
bnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1z
PihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0
aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRv
IHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihz
dGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJl
c3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5
UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ZGVmYXVsdDoKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogCiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bUVjZGhLZXlEZXJpdmVQYXJhbXM+KHN0YXRlLCBuZXdWYWx1ZSk7CiAgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9y
IH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFr
ZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJhbXMpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpIS0RGOiB7CkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5
cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwog
ICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFz
ZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlBCS0RGMjogewpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0Fs
CiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAg
ICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9B
bGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtl
VW5pcXVlPENyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNzksNyArMjc5LDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICBjYXNlIE9wZXJhdGlvbnM6OkltcG9ydEtleToK
ICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpSU0FfUFNTOgpAQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6
ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KHBhcmFtcyk7CisgICAgICAg
ICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NUUjoKQEAgLTI5OCw3ICsyOTgsNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OkFFU19HQ006CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NGQjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
S1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CiAgICAgICAgICAg
ICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQ
YXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CkBAIC0zMDcsMTkgKzMwNywxOSBAQCBzdGF0aWMg
RXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBu
b3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhj
ZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRp
Zmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFy
YW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6RUNESDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGlj
dGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciB9OwpAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0
b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpVbndyYXBLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlk
ZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
S1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciB9OwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAg
ICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAg
ICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tl
eVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0z
NTQsMTIgKzM1NCwxMiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYg
KGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBo
YXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFz
aElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtNTIw
LDE2ICs1MjAsMTYgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiBjcm9zc1RocmVhZENvcHlJbXBvcnRQYXJhbXMoY28KIHsKICAgICBzd2l0Y2ggKGlt
cG9ydFBhcmFtcy5wYXJhbWV0ZXJzQ2xhc3MoKSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyczo6Q2xhc3M6Ok5vbmU6IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KCk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPigpOwogICAgICAgICBy
ZXN1bHQtPmlkZW50aWZpZXIgPSBpbXBvcnRQYXJhbXMuaWRlbnRpZmllcjsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpD
bGFzczo6RWNLZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0
b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2Fz
dDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6OkhtYWNLZXlQYXJhbXM6Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNy
b3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBv
cnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUht
YWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFj
S2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzOjpDbGFzczo6UnNhSGFzaGVkSW1wb3J0UGFyYW1zOgotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3Nz
VGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+
KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3Jp
dGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihjcm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGRi
Y2NjOTAwZjMzNzQ4Y2QyMDY3ZjYwY2IyOTBjMGJkNjAwNjU1MzMuLmE0MmY1NjRmODFmZTFmMGVh
MDk0NDNkMWYxMDUzYzFjM2NkMGNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5jcHAKQEAgLTIxNywxMiArMjE3LDEyIEBAIGNsYXNzIENTU0NhbGNQcmltaXRp
dmVWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgewogICAgIHsKICAg
ICAgICAgc3dpdGNoIChjYXRlZ29yeSgpKSB7CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRl
Z29yeTo6TnVtYmVyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4
cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZsb2F0VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgp
KTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1f
dmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4
ZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3Ro
PihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBX
ZWJDb3JlOjpGaXhlZCkpOwogICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNl
bnQ6CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudExlbmd0aDogewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+
KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRD
b252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZs
b2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAg
ICAgICB9CiAgICAgICAgIC8vIE9ubHkgdHlwZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVu
Z3RoIGV4cHJlc3Npb24gY2FuIGJlIGNvbnZlcnRlZAogICAgICAgICAvLyB0byBhIENhbGNFeHBy
ZXNzaW9uTm9kZS4gQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudE51bWJlciBtYWtlcyBubyBz
ZW5zZSBhcyBhIExlbmd0aC4KQEAgLTUyMCw3ICs1MjAsNyBAQCBjbGFzcyBDU1NDYWxjT3BlcmF0
aW9uIGZpbmFsIDogcHVibGljIENTU0NhbGNFeHByZXNzaW9uTm9kZSB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBub2Rlcy51bmNoZWNrZWRBcHBlbmQoV1RG
TW92ZShub2RlKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUo
bm9kZXMpLCBtX29wZXJhdG9yKTsKICAgICB9CiAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBj
b25zdCBmaW5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHls
ZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNw
cAppbmRleCBjNDRjZWJjNTEyMGVkODMyNmQ5YTFiMmE2NTZiOTM2N2I2ZTE5MTI4Li5lNWFlOGI3
N2E1MTRmMDljM2I0OTQ0MWI1NjJmNWMyYTFlYzc1MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcApAQCAtMTY3LDExICsxNjcsMTEgQEAgdm9pZCBD
U1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICAgICAgc2lt
cGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVCghZGVmYXVsdFN0eWxlKTsKLSAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICAgICAgZGVmYXVsdFF1aXJrc1N0
eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBkZWZh
dWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwotICAgIGRl
ZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsK
KyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAg
IGRlZmF1bHRQcmludFN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAg
ICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZTdHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQ
YXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSkubGVha1JlZigpOwogCiAgICAgLy8gU3RyaWN0LW1v
ZGUgcnVsZXMuCkBAIC0xOTAsMTAgKzE5MCwxMCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0
czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwog
ICAgIEFTU0VSVCghc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQpOwogCi0gICAgZGVmYXVsdFN0eWxl
ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5
bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogICAgIC8vIFRoZXJlIGFyZSBu
byBtZWRpYS1zcGVjaWZpYyBydWxlcyBpbiB0aGUgc2ltcGxlIGRlZmF1bHQgc3R5bGUuCiAgICAg
ZGVmYXVsdFByaW50U3R5bGUgPSBkZWZhdWx0U3R5bGU7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxl
ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UXVp
cmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxl
RGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVl
dCwgc3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KCpzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDc3MDliNWRlYWZiZmU5ZjlhYjEx
YWMwNzdjNjE5ZDc5NGQxNjQyZjIuLjY0NmMxNGExMWFjNjQ1Yjk5MjYxNDlmMjllOTgwMGM0Yzcy
NjdiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBA
IHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBD
U1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAgICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRp
bmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRpbmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVC
aW5hcnlGb250c0VuYWJsZWQoKSk7CiAgICAgICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAm
JiBpdGVtLmlzU3VwcG9ydGVkRm9ybWF0KCkgJiYgZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAg
ICBpZiAoQ2FjaGVkRm9udCogY2FjaGVkRm9udCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwg
Zm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkK
LSAgICAgICAgICAgICAgICAgICAgc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFj
ZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVzb3VyY2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRG
YWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hlZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIHNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZh
Y2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxl
bWVudCk7CisgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNl
Pihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwog
CiAgICAgICAgIGlmIChzb3VyY2UpCiAgICAgICAgICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShX
VEZNb3ZlKHNvdXJjZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXgg
MDVlM2EzZjZlMjFiYzkyODE3ODU1NjlhMTRhYTUwZmY1MmU0YTI3MC4uMThlODM0ZDY5MGE2ZWI1
MTAxZGM5MGM4ZGU1ZGI1ZTdhMWIwYzVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
ZXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9j
YWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3RlcmVkKGNvbnN0IFN0cmluZyYgZmFtaWwKICAgICAg
ICAgZmFtaWx5TGlzdC0+YXBwZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9u
dEZhbWlseVZhbHVlKGZhbWlseU5hbWUpKTsKICAgICAgICAgZmFjZS0+c2V0RmFtaWxpZXMoZmFt
aWx5TGlzdC5nZXQoKSk7CiAgICAgICAgIGZhY2UtPnNldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRp
ZXMoaXRlbSk7Ci0gICAgICAgIGZhY2UtPmFkb3B0U291cmNlKHN0ZDo6bWFrZV91bmlxdWU8Q1NT
Rm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCksIGZhbWlseU5hbWUpKTsKKyAgICAgICAgZmFjZS0+
YWRvcHRTb3VyY2UobWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFt
aWx5TmFtZSkpOwogICAgICAgICBBU1NFUlQoIWZhY2UtPmNvbXB1dGVGYWlsdXJlU3RhdGUoKSk7
CiAgICAgICAgIGZhY2VzLmFwcGVuZChXVEZNb3ZlKGZhY2UpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCmluZGV4IGRlNmYzOWQzZjVkODczMWQ5OWU1ZWIzYzk2
OGUyOWFkMWVhY2JmZTYuLmM2YzVjMzk1NDBhNWM1MDVjZGY0ZDU5Yzc0NmMzOTE4NWM5ZTAzYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCkBAIC0xNDAsNyArMTQwLDcg
QEAgQ1NTUnVsZSogQ1NTR3JvdXBpbmdSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAog
Q1NTUnVsZUxpc3QmIENTU0dyb3VwaW5nUnVsZTo6Y3NzUnVsZXMoKSBjb25zdAogewogICAgIGlm
ICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikKLSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNv
bnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4oKnRoaXMpKTsKKyAgICAgICAgbV9ydWxlTGlzdENT
U09NV3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+
KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4oKnRoaXMpKTsKICAgICByZXR1cm4gKm1fcnVs
ZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcAppbmRleCBmZmRkM2QwYWE2NTdmMjVlYWYzMWQ1NzBjNTg2OGVkNTMw
OWUyZWZkLi41NTUxZjJjNjkxN2QwMzMwNzI2YWNkZjgxMDkxYTkxZmFiNGUwYjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0xMTAsNyAr
MTEwLDcgQEAgR2VuZXJhdGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZElt
YWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSkKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6
c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSwgR2VuZXJhdGVkSW1hZ2UmIGlt
YWdlKQogewogICAgIEFTU0VSVCghbV9pbWFnZXMuY29udGFpbnMoc2l6ZSkpOwotICAgIG1faW1h
Z2VzLmFkZChzaXplLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhp
cywgc2l6ZSwgaW1hZ2UpKTsKKyAgICBtX2ltYWdlcy5hZGQoc2l6ZSwgbWFrZVVuaXF1ZTxDYWNo
ZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNpemUsIGltYWdlKSk7CiB9CiAKIHZvaWQgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNoZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUgc2l6
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCBjOTA5ODMyZGEw
ZTUxOTAyNTM1MTNhMzk4MzE5MWE3YzJmMzkzMDA1Li42ZjFlYjMzODZkOWZiYzcyZDQ0Mzc4NWQx
ZDE5YzRkZDhjNWMzN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3Bw
CkBAIC0yMjAsNyArMjIwLDcgQEAgQ1NTS2V5ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjpp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENTU0tleWZyYW1lc1J1bGU6
OmNzc1J1bGVzKCkKIHsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAg
IG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlz
dDxDU1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMpOworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFw
cGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVsZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlz
KTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA0ODBhODk4NTIzN2FkYTkwYTExNzhlMGIyNzllMGU2
NjgwN2UzMzQxLi5jODhkMWVkYzkzYjdhNmM4M2YyMTc3YmFjNzY3ZjliNzgyZWU3NThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRy
PENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0Ojpjc3NSdWxlcygpCiAgICAgaWYgKCFjYW5BY2Nl
c3NSdWxlcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fcnVsZUxpc3RD
U1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RD
U1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CiAg
ICAgcmV0dXJuIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKaW5kZXggNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3
NjFjYjIxNjZiMWE5Mjg0YzA3MC4uOTE0YmRlNGEyZGU5YWEyMTA2YzAxMDYzYjgwOGQ5Y2E0ZmZm
NmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgRE9NQ1NTUGFpbnRXb3JrbGV0KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20o
RE9NQ1NTTmFtZXNwYWNlJiBjc3MpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19j
YXN0PERPTUNTU1BhaW50V29ya2xldCo+KFN1cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJv
bSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUGFpbnRXb3Jr
bGV0Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNT
U1BhaW50V29ya2xldD4oY3NzKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmY3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3Zl
KG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
Q1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggN2VjZDkzZDdkYzNkNDMyZWFmODJi
Yzk1NmU2MWQ0ODlhNTEwNjI1Yi4uMGRmNmFhZTk2ZjBlMWM3MGIzNzU1NjE2NDllZTM1ZDI4ZWI0
YzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9t
UHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5LmNwcApAQCAtODQsNyArODQsNyBAQCBET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5KiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Ojpmcm9tKERPTUNTU05hbWVzcGFjZQog
ewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01DU1NSZWdpc3RlckN1c3Rv
bVByb3BlcnR5Kj4oU3VwcGxlbWVudDxET01DU1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBs
ZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5
Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1Jl
Z2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNzcyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBw
bGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwg
V1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50
UnVsZVNldHMuY3BwCmluZGV4IGQ4NTk2ZmQxYjI0NTlkZTA3ZTFjODk5Y2MwNzlmYzE5ODUxMTY1
ZTkuLjgyYjdmY2MzMGU1ODI3NDk5MjAyZTI4YjgzMDg2Y2YwZmE0NGFjNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBEb2N1
bWVudFJ1bGVTZXRzOjpzX2lzSW52YWxpZGF0aW5nU3R5bGVXaXRoUnVsZVNldHMgeyBmYWxzZSB9
OwogRG9jdW1lbnRSdWxlU2V0czo6RG9jdW1lbnRSdWxlU2V0cyhTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyKQogICAgIDogbV9zdHlsZVJlc29sdmVyKHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAg
bV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhv
clN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2Fi
bGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIERvY3VtZW50
UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZUlmTmVlZGVkKCkgY29uc3QK
IAogICAgIC8vIE1lZGlhIHF1ZXJpZXMgb24gdXNlciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1
YXRlZCBpbiBkb2N1bWVudCBjb250ZXh0LiBUaGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMg
aW4gdGhpcyByZXNwZWN0LgogICAgIGF1dG8mIG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxl
UmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRvcigpOwotICAgIG1fdXNlckFnZW50TWVkaWFRdWVy
eVN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fdXNlckFnZW50TWVk
aWFRdWVyeVN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgIG1fdXNlckFnZW50TWVk
aWFRdWVyeVN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjpt
ZWRpYVF1ZXJ5U3R5bGVTaGVldCwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZl
cik7CiAKICAgICAvLyBWaWV3cG9ydCBkZXBlbmRlbnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRv
byBpbmVmZmljaWVudCB0byBhbGxvdyBvbiBVQSBzaGVldC4KQEAgLTk2LDcgKzk2LDcgQEAgdm9p
ZCBEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKIHsKICAgICBhdXRvJiBl
eHRlbnNpb25TdHlsZVNoZWV0cyA9IG1fc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLmV4dGVuc2lv
blN0eWxlU2hlZXRzKCk7CiAgICAgYXV0byYgbWVkaWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVS
ZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7Ci0gICAgYXV0byB0ZW1wVXNlclN0eWxlID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IG1h
a2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBpZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVl
dCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBhZ2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVz
ZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbWVk
aWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAgICAgY29sbGVjdFJ1bGVzRnJv
bVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25TdHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNo
ZWV0cygpLCAqdGVtcFVzZXJTdHlsZSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29s
dmVyKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+
IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogICAgIHNpemVf
dCBzaXplID0gcnVsZXMuc2l6ZSgpOwogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgYXV0byBydWxlU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOwor
ICAgIGF1dG8gcnVsZVNldCA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tp
XS5ydWxlLCBydWxlc1tpXS5zZWxlY3RvckluZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRl
eCk7CiAgICAgcnVsZVNldC0+c2hyaW5rVG9GaXQoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxl
RmVhdHVyZT4mIHJ1bGVzKQogdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxl
KCkKIHsKICAgICBtX2lzQXV0aG9yU3R5bGVEZWZpbmVkID0gdHJ1ZTsKLSAgICBtX2F1dGhvclN0
eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBt
YWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAgbV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJp
bmtUb0ZpdCgpOwogfQogCkBAIC0xOTUsMTIgKzE5NSwxMiBAQCBzdGF0aWMgVmVjdG9yPEludmFs
aWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3Ry
aW5nJgogICAgICAgICAgICAgYXV0byBhcnJheUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KCpmZWF0dXJlLm1hdGNoRWxlbWVudCk7CiAgICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0
Y2hFbGVtZW50QXJyYXlbYXJyYXlJbmRleF07CiAgICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCi0g
ICAgICAgICAgICAgICAgcnVsZVNldCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAg
ICAgICAgICAgICAgICBydWxlU2V0ID0gbWFrZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgICAgICAg
ICAgcnVsZVNldC0+YWRkUnVsZShmZWF0dXJlLnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwg
ZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZh
bGlkYXRpb25TZWxlY3RvcikKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFy
cmF5W2FycmF5SW5kZXhdLmFwcGVuZChmZWF0dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAg
ICAgICAgfQotICAgICAgICBhdXRvIGludmFsaWRhdGlvblJ1bGVTZXRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+KCk7CisgICAgICAgIGF1dG8gaW52YWxp
ZGF0aW9uUnVsZVNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4o
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNp
emUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2hFbGVtZW50QXJyYXlbaV0pCiAgICAg
ICAgICAgICAgICAgaW52YWxpZGF0aW9uUnVsZVNldHMtPmFwcGVuZCh7IHN0YXRpY19jYXN0PE1h
dGNoRWxlbWVudD4oaSksIFdURk1vdmUobWF0Y2hFbGVtZW50QXJyYXlbaV0pLCBXVEZNb3ZlKGlu
dmFsaWRhdGlvblNlbGVjdG9yQXJyYXlbaV0pIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVt
ZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXggMDVkMzg1YTU1OGM0OGM0OGVlOGRhOTBmNmExOGNi
NGU3NWE2YTk1YS4uMDViNDU3ZmQ2ODIwYzY3ZjBlMGZiZTkzMDg3YjhjZWYwODI5ZWJhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0yOTEsNyAr
MjkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50
UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0ZWRQc2UKICAgICBpZiAobV9tYXRjaGVkUnVsZXMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBydWxlRGF0YVZlY3Rv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CisgICAgYXV0
byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlxdWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7
CiAgICAgcnVsZURhdGFWZWN0b3ItPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkUnVs
ZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIG1hdGNoZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMp
CiAgICAgICAgIHJ1bGVEYXRhVmVjdG9yLT51bmNoZWNrZWRBcHBlbmQoKm1hdGNoZWRSdWxlLnJ1
bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IDIxMjI0NWRlZGNhZmY5NTZhZDQ0
MTA3YjllYjQ0Y2I0MTMyOGFhZGIuLmUxYjFhZjIwZmIxMWFlM2RmZWUxOTJjYWM5MmU2MmNkZWE1
NTdkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZm
ZXIoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBSZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJy
YXlCdWZmZXJWaWV3KQogewotICAgIGF1dG8gc291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NG
b250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZN
b3ZlKGFycmF5QnVmZmVyVmlldykpOworICAgIGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NG
b250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZN
b3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAgIGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUo
c291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAzYjIwZDQxMzMz
NzUzM2Q2Y2IzYzU4Y2IzZDEwNGYwZjA0YjVlNjE5Li5lMWUxZDcyMTIxMWU2ZGUwMWE4YTg2ZTBk
NDBkODUyODk5N2IzNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxE
ZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFw
Rm9yRGVwcmVjYXRlZENTCiAgICAgLy8gVGhlIG1hcCBpcyBoZXJlIHRvIG1haW50YWluIHRoZSBv
YmplY3QgaWRlbnRpdHkgb2YgdGhlIENTU1ZhbHVlcyBvdmVyIG11bHRpcGxlIGludm9jYXRpb25z
LgogICAgIC8vIEZJWE1FOiBJdCBpcyBsaWtlbHkgdGhhdCB0aGUgaWRlbnRpdHkgaXMgbm90IGlt
cG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkgYW5kIHRoaXMgY29kZSBzaG91bGQgYmUgcmVt
b3ZlZC4KICAgICBpZiAoIW1fY3Nzb21WYWx1ZVdyYXBwZXJzKQotICAgICAgICBtX2Nzc29tVmFs
dWVXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8
RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKTsKKyAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMg
PSBtYWtlVW5pcXVlPEhhc2hNYXA8Q1NTVmFsdWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZh
bHVlPj4+KCk7CiAgICAgCiAgICAgYXV0byYgY2xvbmVkVmFsdWUgPSBtX2Nzc29tVmFsdWVXcmFw
cGVycy0+YWRkKGludGVybmFsVmFsdWUsIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+KCkp
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoY2xvbmVkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVG
ZWF0dXJlLmNwcAppbmRleCBkZmZkYTZmNTFkZjk1NGQyMDZmMDNkMGM3MzU2MGRkYTM5MmQxNDMw
Li40NGVlYjFkNzAyZDJmOWRjYjZiMTJiNTUyNzgxNTY3ZmQwMGQyZTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlRmVhdHVyZS5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0
Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogCiAgICAgZm9yIChh
dXRvJiBuYW1lQW5kTWF0Y2ggOiBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXMpIHsKICAgICAgICAg
Y2xhc3NSdWxlcy5lbnN1cmUobmFtZUFuZE1hdGNoLmZpcnN0LCBbXSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxl
RGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVEYXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVB
bmRNYXRjaC5zZWNvbmQpKTsKICAgICAgICAgaWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0
Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5h
bWVBbmRNYXRjaC5maXJzdCk7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNl
dDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0
byogc2VsZWN0b3IgPSBzZWxlY3RvckFuZE1hdGNoLmZpcnN0OwogICAgICAgICBhdXRvIG1hdGNo
RWxlbWVudCA9IHNlbGVjdG9yQW5kTWF0Y2guc2Vjb25kOwogICAgICAgICBhdHRyaWJ1dGVSdWxl
cy5lbnN1cmUoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCksIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0
b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChS
dWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVs
ZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwgbWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOwogICAg
ICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1hdGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAg
IGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxO
YW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBAQCB2
b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAg
IHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBwZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmli
dXRlUnVsZXMpOwogICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxl
cykgewogICAgICAgICBjbGFzc1J1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsK
ICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52
YWx1ZSk7CiAgICAgfQogICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5jbGFzc2Vz
QWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5lbmQoKSk7
CiAKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IG90aGVyLmF0dHJpYnV0ZVJ1bGVzKSB7
CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVuc3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsK
ICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52
YWx1ZSk7CiAgICAgfQogICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRy
aWJ1dGVzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9z
dC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggZmE2YjkxMjAyMTNlYzU0YmI2NTkw
M2NmYWU2NjliZDQ2NmZiYjAyNy4uM2JiYmJmZWJjYTAwOTk3ODJhZjM5ODFlYjg2NzM2Y2U2ODAz
NmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUnVs
ZVNldDo6YWRkVG9SdWxlU2V0KGNvbnN0IEF0b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmIG1h
cCwgY29uc3QgUnVsZURhCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBydWxlcyA9IG1hcC5h
ZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFydWxlcykKLSAgICAg
ICAgcnVsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVEYXRhVmVjdG9yPigpOworICAgICAgICBy
dWxlcyA9IG1ha2VVbmlxdWU8UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZXMtPmFwcGVuZChy
dWxlRGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aAppbmRleCA2OWFmNTU4MTU2NTRiZTMyMGYxYTlmZDcxYTc3NjY3ZDkyOTNmYTk3Li44ODc3NWFk
N2JhOGFhNTkwYWQ3YmY3MmEzN2QzYjVmNjViNWQyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0zNDgsOSArMzQ4LDkgQEAgaW5saW5lIExlbmd0
aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChj
b25zdCBMZW5ndGgKICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2Fs
YygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Np
b25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7
Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVz
c2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tl
ZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsK
LSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4o
V1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51
bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEw
MCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENh
bGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpT
dWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RG
TW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckN1c3RvbS5oCmluZGV4IDlhMTkxZDE3ZGQ4ZTNlZGNjMWMxMzBjMjY1OTBlMGNhNmY0ZTM2
YTMuLmM1YzJiZjVkMGY1ZmM3OTEwYWZmMTYyNTk5OTBjNDM4NjYwYzE0MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTgxMyw3ICs4MTMsNyBAQCBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9y
RnJvbVByaW1pdGl2ZVZhbHVlKCpzaGFkb3dWYWx1ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAg
ICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50
KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNw
YXJlbnQpOworICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+
KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xv
cjo6dHJhbnNwYXJlbnQpOwogICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0
U2hhZG93KQogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93
KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3Qg
aWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CiAgICAgICAgIGVsc2UKQEAgLTgyOSw3ICs4
MjksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRT
aGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbAogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVS
ZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNo
YWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBu
dWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVS
ZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0Rh
dGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRy
KTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dFNo
YWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC04
NDQsNyArODQ0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRp
YWxCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhz
dHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1
ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkg
OiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJveFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dE
YXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRy
KTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQm94U2hh
ZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEz
NTksNyArMTM1OSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKICAgICAgICAgICAgIENTU1Zh
bHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAg
ICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAg
ICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5
bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0gICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwg
bGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBh
dXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlk
ZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CiAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQoV1RGTW92ZShjb3Vu
dGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDRjZjZjNmY3YWI3
ZGY5ZmMwNDMzNGJiZThkZDA1YTNiNTU5ZTkzNWMuLjE5Y2IwMzNkNzBiYjVhODk2ODY1NTcyNzU1
Yjk2Yjk3NzA1MWNiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBA
IC0xNTMwLDcgKzE1MzAsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkKICAgICAgICAgQVNTRVJUKCFtX2Nz
c29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpKTsKICAgICAgICAgcmV0dXJuICptX2Nzc29tV3Jh
cHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4oKnRoaXMpOworICAgIG1fY3Nzb21XcmFwcGVyID0g
bWFrZVVuaXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKICAgICBy
ZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCkBAIC0xNTQwLDcgKzE1NDAsNyBAQCBDU1NTdHls
ZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHls
ZURlY2xhcmF0aW9uKFN0eQogICAgICAgICBBU1NFUlQobV9jc3NvbVdyYXBwZXItPnBhcmVudEVs
ZW1lbnQoKSA9PSAmcGFyZW50RWxlbWVudCk7CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBw
ZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVD
U1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywgcGFyZW50RWxlbWVudCk7CisgICAgbV9jc3NvbVdy
YXBwZXIgPSBtYWtlVW5pcXVlPElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJl
bnRFbGVtZW50KTsKICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggM2E1MmMzNjE5OWE3OWEyNWUwOWMwMWQ4ZmEwYzUw
YWVmZjY4MmJiNS4uZGU0ZGE1ZjU1MTI5OTA5MzFkYTg2YzVjN2U4M2JjYjEwMTgwOGJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMTcxNSw3ICsxNzE1LDcgQEAgU3R5
bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFBy
b3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAgICAgaWYgKGF1dGhvclJvbGxiYWNrKQogICAgICAg
ICAgICAgcmV0dXJuIGF1dGhvclJvbGxiYWNrOwogCi0gICAgICAgIGF1dG8gbmV3QXV0aG9yUm9s
bGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNjYWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3Jp
dGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBuZXdBdXRob3JSb2xsYmFjayhtYWtlVW5pcXVlPENh
c2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8v
IFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNjYWRlIGNvbnRhaW5zIFVBIHJ1bGVzIGFuZCB1c2Vy
IHJ1bGVzIGJ1dCBubyBhdXRob3IgcnVsZXMuCiAgICAgICAgIG5ld0F1dGhvclJvbGxiYWNrLT5h
ZGROb3JtYWxNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1
bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBmYWxzZSk7CkBAIC0xNzMyLDcgKzE3
MzIsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6
OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxiYWNrKAogICAgICAgICBpZiAodXNlclJvbGxiYWNr
KQogICAgICAgICAgICAgcmV0dXJuIHVzZXJSb2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld1Vz
ZXJSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSkpOworICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhtYWtlVW5pcXVl
PENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAg
IC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNjYWRlIGNvbnRhaW5zIG9ubHkgVUEgcnVsZXMu
CiAgICAgICAgIG5ld1VzZXJSb2xsYmFjay0+YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwg
bWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVB
UnVsZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBs
IGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDk5N2M0YzAzNjdkZDVkMGQ2
NDVkNWVkZjUxZWVjNGJmYjBjMzIxMDUuLjAyYTM2ZWZlMDVkM2NjOWZlOTdkZDVjMGUyNTkzYWU3
OWZkNmMyYzYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdWIg
Z2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUluaGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJD
b250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExheWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtc
biI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiZm9yIChhdXRvKiBwYXJlbnQgPSAm
c3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUp
IC4gIigpOyBwYXJlbnQgJiYgcGFyZW50LT4iIC4gJHRlc3RGdW5jdGlvbiAuICIoKTsgcGFyZW50
ID0gcGFyZW50LT5uZXh0KCkpIHtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
ICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAg
ICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigi
IC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVudCAu
PSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZp
bGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4
dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgfVxuIjsKICAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgY2hpbGQtPiIgLiAkc2V0dGVyIC4gIihwYXJl
bnQtPiIgLiAkZ2V0dGVyIC4gIigpKTtcbiI7CkBAIC04MzcsNyArODM3LDcgQEAgc3ViIGdlbmVy
YXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwg
Y3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gIiAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIGlmICgh
Y2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAg
cHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdl
dEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikpO1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGlu
ZGVudCAuICIgICAgICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8Rmls
bExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVy
Q29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+
bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIH1cbiI7
CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlTWFwKCktPiIgLiBnZXRGaWxsTGF5ZXJNYXBmdW5jdGlvbigkbmFtZSkgLiAiKCIgLiAkQ1NT
UHJvcGVydHlJZCAuICIsICpjaGlsZCwgaXRlbSk7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5kZXggNjdjZmRmNTZkNjI1MDUzYTAxMTE5OTJkNzEx
ZjhjOGZmZGI5NWRjMi4uZDc1ZTRmYzkyYzc3YjA3YjFlNTNkYWQzMzg3ZTU1MWEzOTBjMjViOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIENTU1BhcnNlckltcGw6OkNTU1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBzdHJpCiAgICAgLCBtX3N0eWxlU2hlZXQoc3R5
bGVTaGVldCkKICAgICAsIG1fb2JzZXJ2ZXJXcmFwcGVyKHdyYXBwZXIpCiB7Ci0gICAgbV90b2tl
bml6ZXIgPSB3cmFwcGVyID8gc3RkOjptYWtlX3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywg
KndyYXBwZXIpIDogc3RkOjptYWtlX3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CisgICAg
bV90b2tlbml6ZXIgPSB3cmFwcGVyID8gbWFrZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywg
KndyYXBwZXIpIDogbWFrZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CiAgICAgaWYgKGNv
bnRleHQuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkICYmICF3cmFwcGVyICYmIHN0eWxlU2hlZXQg
JiYgcnVsZVBhcnNpbmcgPT0gQ1NTUGFyc2VyOjpSdWxlUGFyc2luZzo6RGVmZXJyZWQpCiAgICAg
ICAgIG1fZGVmZXJyZWRQYXJzZXIgPSBDU1NEZWZlcnJlZFBhcnNlcjo6Y3JlYXRlKGNvbnRleHQs
IHN0cmluZywgKnN0eWxlU2hlZXQpOwogfQpAQCAtMjgyLDkgKzI4Miw5IEBAIENTU1NlbGVjdG9y
TGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdl
IHJhbmdlLCBTdHlsCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNl
bGVjdG9yOwogICAgIGlmICghdHlwZVNlbGVjdG9yLmlzTnVsbCgpICYmIHBzZXVkby5pc051bGwo
KSkKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9y
PihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVm
YXVsdE5hbWVzcGFjZSgpKSk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJz
ZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxl
U2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkpOwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3Rv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVj
dG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oKTsKICAgICAgICAgaWYgKCFwc2V1
ZG8uaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHNlbGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENT
U1BhcnNlclNlbGVjdG9yPihDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0
b3IocHNldWRvKSk7CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9yLT5tYXRj
aCgpICE9IENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpCkBAIC01MzUsNyArNTM1LDcgQEAg
UmVmUHRyPFN0eWxlUnVsZU5hbWVzcGFjZT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU5hbWVzcGFj
ZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW4KIFJlZlB0cjxTdHlsZVJ1bGVNZWRpYT4gQ1NTUGFyc2Vy
SW1wbDo6Y29uc3VtZU1lZGlhUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1Bh
cnNlclRva2VuUmFuZ2UgYmxvY2spCiB7CiAgICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAg
ICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNl
TWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQp
KS5yZWxlYXNlTm9uTnVsbCgpLCAgc3RkOjptYWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBS
dWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHls
ZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChw
cmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVs
bCgpLCAgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2Rl
ZmVycmVkUGFyc2VyKSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxl
czsKIApAQCAtNTYzLDcgKzU2Myw3IEBAIFJlZlB0cjxTdHlsZVJ1bGVTdXBwb3J0cz4gQ1NTUGFy
c2VySW1wbDo6Y29uc3VtZVN1cHBvcnRzUnVsZShDU1NQYXJzZXJUb2tlblJhbmdlCiAgICAgICAg
IHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBlcnJvciwgaW52YWxpZCBAc3VwcG9ydHMgY29uZGl0
aW9uCiAKICAgICBpZiAobV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVs
ZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5zZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwg
c3VwcG9ydGVkLCBzdGQ6Om1ha2VfdW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0Pihi
bG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKKyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBv
cnRzOjpjcmVhdGUocHJlbHVkZS5zZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9y
dGVkLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVm
ZXJyZWRQYXJzZXIpKTsKIAogICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBt
X29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIoKS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpT
dXBwb3J0cywgbV9vYnNlcnZlcldyYXBwZXItPnN0YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKQEAgLTYz
NSw3ICs2MzUsNyBAQCBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXJJbXBsOjpj
b25zdW1lS2V5ZnJhbWVzUnVsZShib29sIHdlYmtpdFByZWZpeAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsgLy8gUGFyc2UgZXJyb3I7IGV4cGVjdGVkIGlkZW50IHRva2VuIGluIEBrZXlmcmFtZXMg
aGVhZGVyCiAKICAgICBpZiAobV9kZWZlcnJlZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxl
UnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHls
ZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9kZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1
cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVhdGUobmFtZSwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0
eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAo
bV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVy
KCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVsZTo6S2V5ZnJhbWVzLCBtX29ic2VydmVyV3JhcHBl
ci0+c3RhcnRPZmZzZXQocmFuZ2VDb3B5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCmluZGV4IDRkYmVmNDA1OGM3MTYyY2Q5NjQ2ZWE3NjRk
Y2JiOWJiY2YzMWU0NTkuLmEwODcwZDM3NjJjZWE0MmY1YjVlYWJkMDVlYTc0NGYyZDlkNmIzNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3Bw
CkBAIC00NCw3ICs0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NT
UGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKFN0CiAgICAgZWxzZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPigpOworICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVl
PENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRj
aChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rv
ci0+c2V0UGFnZVBzZXVkb1R5cGUocHNldWRvVHlwZSk7CiAgICAgcmV0dXJuIHNlbGVjdG9yOwpA
QCAtNjMsNyArNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1Bh
cnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTZWxlY3RvcgogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8
Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNo
KENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+
c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRvVHlwZSk7CiAgICAgQXRvbVN0cmluZyBuYW1lOwpA
QCAtODQsMTMgKzg0LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NT
UGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRvQ2xhc3NTZWxlY3RvcihTCiB7CiAgICAgYXV0byBw
c2V1ZG9UeXBlID0gcGFyc2VQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50U3RyaW5n
KHBzZXVkb1R5cGVTdHJpbmcpOwogICAgIGlmIChwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzICE9IENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Vua25vd24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2Vs
ZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rv
ci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKICAgICAg
ICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldFBzZXVkb0NsYXNzVHlwZShwc2V1ZG9UeXBlLnBz
ZXVkb0NsYXNzKTsKICAgICAgICAgcmV0dXJuIHNlbGVjdG9yOwogICAgIH0KICAgICBpZiAocHNl
dWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRv
RWxlbWVudFVua25vd24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5p
cXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+
bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5
UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRWYWx1ZShw
c2V1ZG9UeXBlU3RyaW5nLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpOwpAQCAtMTAwLDEyICsx
MDAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxl
Y3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yKFMKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6
OkNTU1BhcnNlclNlbGVjdG9yKCkKLSAgICA6IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxD
U1NTZWxlY3Rvcj4oKSkKKyAgICA6IG1fc2VsZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4o
KSkKIHsKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ1FOYW1lKQotICAgIDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVl
PENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCisgICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NT
U2VsZWN0b3I+KHRhZ1FOYW1lKSkKIHsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIENTU1BhcnNl
clNlbGVjdG9yOjp+Q1NTUGFyc2VyU2VsZWN0b3IoKQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9y
OjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+PiYmIHNlbGVjdG9yVmVjdG9yKQogewotICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9y
TGlzdChzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZl
Y3RvcikpKTsKKyAgICBtX3NlbGVjdG9yLT5zZXRTZWxlY3Rvckxpc3QobWFrZVVuaXF1ZTxDU1NT
ZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0b3JWZWN0b3IpKSk7CiB9CiAKIHZvaWQgQ1NTUGFy
c2VyU2VsZWN0b3I6OnNldExhbmdBcmd1bWVudExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxB
dG9tU3RyaW5nPj4gYXJndW1lbnRMaXN0KQpAQCAtMjA5LDEyICsyMDksMTIgQEAgdm9pZCBDU1NQ
YXJzZXJTZWxlY3Rvcjo6YXBwZW5kVGFnSGlzdG9yeShDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0
b3IgcmVsYXRpb24sIHMKIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVj
dG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNl
UnVsZSkKIHsKLSAgICBhdXRvIHNlY29uZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2Vs
ZWN0b3I+KCk7CisgICAgYXV0byBzZWNvbmQgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9y
PigpOwogICAgIHNlY29uZC0+bV9zZWxlY3RvciA9IFdURk1vdmUobV9zZWxlY3Rvcik7CiAgICAg
c2Vjb25kLT5tX3RhZ0hpc3RvcnkgPSBXVEZNb3ZlKG1fdGFnSGlzdG9yeSk7CiAgICAgbV90YWdI
aXN0b3J5ID0gV1RGTW92ZShzZWNvbmQpOwogCi0gICAgbV9zZWxlY3RvciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lLCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOworICAg
IG1fc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JO
YW1lc3BhY2VSdWxlKTsKICAgICBtX3NlbGVjdG9yLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6
U3Vic2VsZWN0b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuY3BwCmluZGV4IDQ4OGU2MDIzZjIwMDI0YWZmZWY4NjE3YTUxNGM0MDliZjQ5
ZDFlZjMuLjcwOGVjNzc3M2MxOGQ2ZTA4ZTAwMWNhZmEzZDI4YzgwZDlmODcyZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0yNDM1
LDcgKzI0MzUsNyBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFz
aWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncwogICAgIGlmIChhcmdzLnBlZWso
KS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAot
ICAgIGF1dG8gYnl0ZVN0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+
KCk7CisgICAgYXV0byBieXRlU3RyZWFtID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4o
KTsKICAgICBpZiAoIWJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5nKGFyZ3MuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvU3RyaW5nKCksICpieXRlU3RyZWFtLCBV
bmFsdGVyZWRQYXJzaW5nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4IDZiM2Fj
Yzg1ZTZmYzVlNWNiYjk1YWI5ZmUxYTZjN2NhOWVmODEwNDcuLmYzMzIzYjIyNmI0YjAxMDBjOTgz
YzQ4NjYzNzVmMWU2NTdiMTczOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC01NjQsNyArNTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyhDU1NQ
YXJzZXJUb2sKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
c0xhbmc6IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBDU1MgU2VsZWN0b3JzIExldmVsIDQgYWxs
b3dzIDpsYW5nKCotZm9vKQotICAgICAgICAgICAgYXV0byBhcmd1bWVudExpc3QgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5nPj4oKTsKKyAgICAgICAgICAgIGF1dG8gYXJndW1l
bnRMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8QXRvbVN0cmluZz4+KCk7CiAgICAgICAgICAgICBp
ZiAoIWNvbnN1bWVMYW5nQXJndW1lbnRMaXN0KGFyZ3VtZW50TGlzdCwgYmxvY2spKQogICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgc2VsZWN0b3ItPnNldExhbmdB
cmd1bWVudExpc3QoV1RGTW92ZShhcmd1bWVudExpc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCmluZGV4IDllYjVkN2U0OWY1NmEx
ZTk4ZDFmYmI5YjIzZTZlYTcyZTIyNjE1OGYuLjg4MTE3ZjE5ZTRiMjZiYTI1YmZmMjVhODU1OTE3
MzJiYjdhM2U3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVhY3Rpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIEN1c3RvbUVsZW1lbnRSZWFjdGlv
blF1ZXVlOjpFbGVtZW50UXVldWUmIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVC
YWNrCiB7CiAgICAgaWYgKCFzX3Byb2Nlc3NpbmdCYWNrdXBFbGVtZW50UXVldWUpIHsKICAgICAg
ICAgc19wcm9jZXNzaW5nQmFja3VwRWxlbWVudFF1ZXVlID0gdHJ1ZTsKLSAgICAgICAgTWljcm90
YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJhY2t1
cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4oKSk7CisgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rh
c2s+KCkpOwogICAgIH0KICAgICByZXR1cm4gYmFja3VwRWxlbWVudFF1ZXVlKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGU3OTNmMjBkOTMxYmY4NGM4NWZhYjlhZDI0
ZjgzZmU4YTQ4YTJmMWQuLmQzYWY3MGZiOGJhMzM2YmZhNjE4YmY5YzEyNTZiMTA3ZDlkMjVhYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9p
ZCBEYXRhVHJhbnNmZXI6OmRpZEFkZEZpbGVUb0l0ZW1MaXN0KCkKIERhdGFUcmFuc2Zlckl0ZW1M
aXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKCkKIHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAg
ICAgIG1faXRlbUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0Pigq
dGhpcyk7CisgICAgICAgIG1faXRlbUxpc3QgPSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1M
aXN0PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2l0ZW1MaXN0OwogfQogCkBAIC00MTYsNyArNDE2
LDcgQEAgYm9vbCBEYXRhVHJhbnNmZXI6Omhhc1N0cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVu
dChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25z
dCBTdHJpbmcmIGh0bWxUZXh0KQogewotICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91
bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsKKyAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5p
cXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRl
eHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CiAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRl
eHQvaHRtbCJfcywgaHRtbFRleHQpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFu
c2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwg
VHlwZTo6SW5wdXRFdmVudCkpOwpAQCAtNDcxLDcgKzQ3MSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+
IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAK
IFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRv
cHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBz
dGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0
YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIo
ZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9h
cmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmln
aW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsK
ICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRGF0
YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgaW50IHgsIGludCB5KQog
ICAgIG1fZHJhZ0ltYWdlID0gaW1hZ2U7CiAgICAgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAg
IGlmICghbV9kcmFnSW1hZ2VMb2FkZXIpCi0gICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0ltYWdlTG9hZGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1f
ZHJhZ0ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOwogICAg
ICAgICBtX2RyYWdJbWFnZUxvYWRlci0+c3RhcnRMb2FkaW5nKG1fZHJhZ0ltYWdlKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ci5jcHAKaW5kZXggMzM2MjIzMTA4MWIxM2Y3MmRjMThkYWM1ZjM5MDdhNWU3YzE3YjBiZi4uZjIx
MTMxZmY4Mjc4MjFkYzc0ZTg1MGE5OGYxYmIyMzA5OWUwMjcwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEwMCw3ICsx
MDAsNyBAQCBib29sIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChQYWdl
KiBwYWdlKQogCiB2b2lkIHByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRvKFBhZ2UmIHBhZ2UsIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOjpwcm92aWRlVG8oJnBhZ2UsIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6
c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXI+KGNsaWVudCkpOworICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlk
ZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCks
IG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDE2ZDA3
YTYyZmUyMDA4NWJmYTBmMDY5NmM2ZTFlNDYyMWMxZmMxZS4uNWI0NTgyOTk5YjYzNTM2MDQ2YTli
YjcxNzg0YmZjMWQxNmVkYTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjEsMTkg
KzUyMSwxOSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZwogICAgICwgbV9xdWlya3MobWFrZVVu
aXF1ZVJlZjxRdWlya3M+KCp0aGlzKSkKICAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIobV9m
cmFtZSA/IFJlZjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4obV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZl
RG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSkgOiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y3JlYXRlKG51bGxwdHIpKQogICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xv
YmFsVHJlZVZlcnNpb24pCi0gICAgLCBtX3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHls
ZTo6U2NvcGU+KCp0aGlzKSkKLSAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVldHMoc3RkOjptYWtl
X3VuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4oKnRoaXMpKQotICAgICwgbV92aXNpdGVkTGlu
a1N0YXRlKHN0ZDo6bWFrZV91bmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQotICAgICwg
bV9tYXJrZXJzKHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhp
cykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkK
KyAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVldHMobWFrZVVuaXF1ZTxFeHRlbnNpb25TdHlsZVNo
ZWV0cz4oKnRoaXMpKQorICAgICwgbV92aXNpdGVkTGlua1N0YXRlKG1ha2VVbmlxdWU8VmlzaXRl
ZExpbmtTdGF0ZT4oKnRoaXMpKQorICAgICwgbV9tYXJrZXJzKG1ha2VVbmlxdWU8RG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3N0eWxlUmVjYWxjVGltZXIoW3RoaXNd
IHsgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOyB9KQogICAgICwgbV9kb2N1bWVudENyZWF0aW9uVGlt
ZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAgICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91
bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykpCi0gICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1h
a2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5u
ZXIobWFrZVVuaXF1ZTxTY3JpcHRSdW5uZXI+KCp0aGlzKSkKKyAgICAsIG1fbW9kdWxlTG9hZGVy
KG1ha2VVbmlxdWU8U2NyaXB0TW9kdWxlTG9hZGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFhTTFQp
CiAgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50
OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1zVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV94
bWxWZXJzaW9uKCIxLjAiX3MpCi0gICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAoc3RkOjptYWtl
X3VuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFwPigqdGhpcykpCisgICAgLCBtX2NvbnN0YW50UHJv
cGVydHlNYXAobWFrZVVuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFwPigqdGhpcykpCiAgICAgLCBt
X2RvY3VtZW50Q2xhc3Nlcyhkb2N1bWVudENsYXNzZXMpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRo
aXMpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtNTQ1LDEwICs1NDUsMTAgQEAgRG9j
dW1lbnQ6OkRvY3VtZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCwgdW5zaWcKICNlbmRpZgogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVy
KCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZp
Y2VNb3Rpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkp
Ci0gICAgLCBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VN
b3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VNb3Rpb25DbGllbnQpKQotICAgICwgbV9kZXZpY2VP
cmllbnRhdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50
SU9TPigpKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3Vu
aXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xp
ZW50KSkKKyAgICAsIG1fZGV2aWNlTW90aW9uQ2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlTW90aW9u
Q2xpZW50SU9TPigpKQorICAgICwgbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8
RGV2aWNlTW90aW9uQ29udHJvbGxlcj4oKm1fZGV2aWNlTW90aW9uQ2xpZW50KSkKKyAgICAsIG1f
ZGV2aWNlT3JpZW50YXRpb25DbGllbnQobWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dElPUz4oKSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkp
CiAjZW5kaWYKICAgICAsIG1fcGVuZGluZ1Rhc2tzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6cGVu
ZGluZ1Rhc2tzVGltZXJGaXJlZCkKICAgICAsIG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGlt
ZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkK
QEAgLTc2NSw3ICs3NjUsNyBAQCBFbGVtZW50KiBEb2N1bWVudDo6ZWxlbWVudEZvckFjY2Vzc0tl
eShjb25zdCBTdHJpbmcmIGtleSkKIAogdm9pZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlDYWNo
ZSgpCiB7Ci0gICAgbV9hY2Nlc3NLZXlDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxT
dHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PihbdGhpc10geworICAg
IG1fYWNjZXNzS2V5Q2FjaGUgPSBtYWtlVW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50Kiwg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4oW3RoaXNdIHsKICAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1hcDsKICAgICAgICAgZm9y
IChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVlRGVzY2VuZGFudHMoKnRoaXMpKSB7CiAgICAgICAg
ICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUpKQpAQCAtNzkwLDcgKzc5MCw3IEBAIEV4Y2VwdGlv
bk9yPFNlbGVjdG9yUXVlcnkmPiBEb2N1bWVudDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25z
dCBTdHJpbmcmIHNlbGVjCiAgICAgaWYgKHNlbGVjdG9yU3RyaW5nLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAgICAgaWYgKCFtX3NlbGVjdG9y
UXVlcnlDYWNoZSkKLSAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsKKyAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUg
PSBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsKICAgICByZXR1cm4gbV9zZWxlY3Rv
clF1ZXJ5Q2FjaGUtPmFkZChzZWxlY3RvclN0cmluZywgKnRoaXMpOwogfQogCkBAIC04NTUsNyAr
ODU1LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVzZXRBY3RpdmVMaW5rQ29sb3IoKQogRE9NSW1wbGVt
ZW50YXRpb24mIERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigpCiB7CiAgICAgaWYgKCFtX2ltcGxl
bWVudGF0aW9uKQotICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOworICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gbWFr
ZVVuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9pbXBsZW1l
bnRhdGlvbjsKIH0KIApAQCAtMTc3MCw3ICsxNzcwLDcgQEAgTm9kZTo6Tm9kZVR5cGUgRG9jdW1l
bnQ6Om5vZGVUeXBlKCkgY29uc3QKIEZvcm1Db250cm9sbGVyJiBEb2N1bWVudDo6Zm9ybUNvbnRy
b2xsZXIoKQogewogICAgIGlmICghbV9mb3JtQ29udHJvbGxlcikKLSAgICAgICAgbV9mb3JtQ29u
dHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNvbnRyb2xsZXI+KCk7CisgICAgICAgIG1f
Zm9ybUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEZvcm1Db250cm9sbGVyPigpOwogICAgIHJldHVy
biAqbV9mb3JtQ29udHJvbGxlcjsKIH0KIApAQCAtMTk5NSw3ICsxOTk1LDcgQEAgdm9pZCBEb2N1
bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRleHQmIHRleHQsIHVuc2lnbmVkIG9mZnNldE9mUmVw
bGFjZWRUZXh0LCB1bnMKICAgICBBU1NFUlQoIW1faW5SZW5kZXJUcmVlVXBkYXRlKTsKICAgICBT
ZXRGb3JTY29wZTxib29sPiBpblJlbmRlclRyZWVVcGRhdGUobV9pblJlbmRlclRyZWVVcGRhdGUs
IHRydWUpOwogCi0gICAgYXV0byB0ZXh0VXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6
VXBkYXRlPigqdGhpcyk7CisgICAgYXV0byB0ZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6
VXBkYXRlPigqdGhpcyk7CiAgICAgdGV4dFVwZGF0ZS0+YWRkVGV4dCh0ZXh0LCB7IG9mZnNldE9m
UmVwbGFjZWRUZXh0LCBsZW5ndGhPZlJlcGxhY2VkVGV4dCwgV1RGOjpudWxsb3B0IH0pOwogCiAg
ICAgUmVuZGVyVHJlZVVwZGF0ZXIgcmVuZGVyVHJlZVVwZGF0ZXIoKnRoaXMpOwpAQCAtMjI3Nyw3
ICsyMjc3LDcgQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50
IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKIFN0eWxlUmVzb2x2ZXImIERvY3Vt
ZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpCiB7CiAgICAgaWYgKCFtX3Vz
ZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRv
d1RyZWVTdHlsZVJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhp
cyk7CisgICAgICAgIG1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5p
cXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fdXNlckFnZW50U2hhZG93
VHJlZVN0eWxlUmVzb2x2ZXI7CiB9CiAKQEAgLTI2ODAsNyArMjY4MCw3IEBAIEFYT2JqZWN0Q2Fj
aGUqIERvY3VtZW50OjpheE9iamVjdENhY2hlKCkgY29uc3QKIAogICAgIEFTU0VSVCgmdG9wRG9j
dW1lbnQgPT0gdGhpcyB8fCAhbV9heE9iamVjdENhY2hlKTsKICAgICBpZiAoIXRvcERvY3VtZW50
Lm1fYXhPYmplY3RDYWNoZSkgewotICAgICAgICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFYT2JqZWN0Q2FjaGU+KHRvcERvY3VtZW50KTsKKyAgICAgICAg
dG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hlID0gbWFrZVVuaXF1ZTxBWE9iamVjdENhY2hlPih0
b3BEb2N1bWVudCk7CiAgICAgICAgIGhhc0V2ZXJDcmVhdGVkQW5BWE9iamVjdENhY2hlID0gdHJ1
ZTsKICAgICB9CiAgICAgcmV0dXJuIHRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZS5nZXQoKTsK
QEAgLTMwNDQsNyArMzA0NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFBhcnNpbmcoYm9vbCBiKQog
ICAgIG1fYlBhcnNpbmcgPSBiOwogCiAgICAgaWYgKG1fYlBhcnNpbmcgJiYgIW1fc2hhcmVkT2Jq
ZWN0UG9vbCkKLSAgICAgICAgbV9zaGFyZWRPYmplY3RQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxE
b2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7CisgICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9
IG1ha2VVbmlxdWU8RG9jdW1lbnRTaGFyZWRPYmplY3RQb29sPigpOwogCiAgICAgaWYgKCFtX2JQ
YXJzaW5nICYmIHZpZXcoKSAmJiAhdmlldygpLT5uZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3
KCktPmZpcmVMYXlvdXRSZWxhdGVkTWlsZXN0b25lc0lmTmVlZGVkKCk7CkBAIC01NTc0LDcgKzU1
NzQsNyBAQCBjb25zdCBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIERvY3VtZW50OjpzdmdFeHRlbnNp
b25zKCkKIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyYgRG9jdW1lbnQ6OmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKQogewogICAgIGlmICghbV9zdmdFeHRlbnNpb25zKQotICAgICAgICBtX3N2Z0V4dGVuc2lv
bnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOworICAg
ICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9zdmdFeHRlbnNpb25zOwogfQogCkBAIC01Nzc5LDcgKzU3
NzksNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8g
VGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50
KCkuCiAgICAgICAgIHNldENvb2tpZVVSTChVUkwoeyB9LCBlbXB0eVN0cmluZygpKSk7CiAgICAg
ICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUo
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1
cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsg
eyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlzKSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0
eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0
eVN0cmluZygpIH0sICp0aGlzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3OTgs
NyArNTc5OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAg
ICBpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID0gZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2Fk
ZXItPnJlc3BvbnNlKCkudGFpbnRpbmcoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6
T3BhcXVlOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xp
Y3k6OmNyZWF0ZShpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCkpKTsKLSAgICBzZXRDb250
ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1h
a2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwog
CiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gbV9mcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKICAgICBpZiAo
IW92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5LmlzTnVsbCgpKQpAQCAtNjAzNiw3ICs2MDM2
LDcgQEAgU3RyaW5nIERvY3VtZW50OjpuYW1lRm9yQ1NTQ2FudmFzRWxlbWVudChjb25zdCBIVE1M
Q2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCkKIFRleHRBdXRvU2l6aW5nJiBEb2N1bWVudDo6
dGV4dEF1dG9TaXppbmcoKQogewogICAgIGlmICghbV90ZXh0QXV0b1NpemluZykKLSAgICAgICAg
bV90ZXh0QXV0b1NpemluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7Cisg
ICAgICAgIG1fdGV4dEF1dG9TaXppbmcgPSBtYWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwog
ICAgIHJldHVybiAqbV90ZXh0QXV0b1NpemluZzsKIH0KICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9B
VVRPU0laSU5HKQpAQCAtNjQwMyw3ICs2NDAzLDcgQEAgdm9pZCBEb2N1bWVudDo6d2hlZWxFdmVu
dEhhbmRsZXJzQ2hhbmdlZCgpCiB2b2lkIERvY3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxl
cihOb2RlJiBub2RlKQogewogICAgIGlmICghbV93aGVlbEV2ZW50VGFyZ2V0cykKLSAgICAgICAg
bV93aGVlbEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7
CisgICAgICAgIG1fd2hlZWxFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0
PigpOwogCiAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cy0+YWRkKCZub2RlKTsKIApAQCAtNjQ2Myw3
ICs2NDYzLDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoTm9kZSYg
aGFuZGxlcikKIHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmICghbV90b3VjaEV2
ZW50VGFyZ2V0cykKLSAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlx
dWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBtYWtl
VW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cy0+YWRk
KCZoYW5kbGVyKTsKIApAQCAtODA1MSw3ICs4MDUxLDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkTG9n
TWVzc2FnZShjb25zdCBXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwg
VmUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IG1l
c3NhZ2VMZXZlbEZyb21XVEZMb2dMZXZlbChsZXZlbCk7Ci0gICAgICAgIGF1dG8gbWVzc2FnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwg
bWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKCkpKTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdl
VHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRF
eGVjU3RhdGUoZnJhbWUoKSkpOwogCiAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOwogICAgIH0pOwpAQCAtODA4Niw3ICs4MDg2LDcgQEAgU3RyaW5nIERvY3VtZW50
OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4
LCBjb25zdAogCiBib29sIERvY3VtZW50OjpyZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eSYmIHByb3ApCiB7Ci0gICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFBy
b3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIHN0ZDo6bWFrZV91bmlxdWU8Q1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3ApKSkuaXNOZXdFbnRyeTsKKyAgICByZXR1cm4gbV9D
U1NSZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRkKHByb3AubmFtZSwgbWFrZVVuaXF1ZTxDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1vdmUocHJvcCkpKS5pc05ld0VudHJ5OwogfQogCiB2
b2lkIERvY3VtZW50OjpkZXRhY2hGcm9tRnJhbWUoKQpAQCAtODE4MCw3ICs4MTgwLDcgQEAgRGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb24KICAgICAgICAgcmV0dXJuIHRvcERvY3VtZW50KCkuZGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKCk7CiAKICAgICBpZiAoIW1fZGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyKQotICAgICAgICBtX2Rldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CisgICAg
ICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyID0gbWFrZVVu
aXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsK
ICAgICByZXR1cm4gKm1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVy
OwogfQogCkBAIC04MjExLDcgKzgyMTEsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmts
ZXRHbG9iYWxTY29wZUZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBSZWY8UGFpbnRXbwogQ29u
dGVudENoYW5nZU9ic2VydmVyJiBEb2N1bWVudDo6Y29udGVudENoYW5nZU9ic2VydmVyKCkKIHsK
ICAgICBpZiAoIW1fY29udGVudENoYW5nZU9ic2VydmVyKQotICAgICAgICBtX2NvbnRlbnRDaGFu
Z2VPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhp
cyk7CisgICAgICAgIG1fY29udGVudENoYW5nZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxDb250ZW50
Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udGVudENoYW5nZU9ic2Vy
dmVyOyAKIH0KIApAQCAtODIxOSw3ICs4MjE5LDcgQEAgRE9NVGltZXJIb2xkaW5nVGFuayYgRG9j
dW1lbnQ6OmRvbVRpbWVySG9sZGluZ1RhbmsoKQogewogICAgIGlmIChtX2RvbVRpbWVySG9sZGlu
Z1RhbmspCiAgICAgICAgIHJldHVybiAqbV9kb21UaW1lckhvbGRpbmdUYW5rOwotICAgIG1fZG9t
VGltZXJIb2xkaW5nVGFuayA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4o
KTsKKyAgICBtX2RvbVRpbWVySG9sZGluZ1RhbmsgPSBtYWtlVW5pcXVlPERPTVRpbWVySG9sZGlu
Z1Rhbms+KCk7CiAgICAgcmV0dXJuICptX2RvbVRpbWVySG9sZGluZ1Rhbms7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggOTg1OTBjMTBlNDgzNjc3ZGJiZDIwZjhiMjQzMDM4M2E2YTk2ODJl
ZC4uMTYxMmU0MjBlY2ExMWM0ZGFkMTM1Y2Q5MTBmZTQ1NzZlZmU3MmFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTEyODQsNyArMTI4NCw3IEBAIGNsYXNzIERvY3VtZW50CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRv
a2VuKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50UGFy
c2VyWWllbGRUb2tlbj4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEb2N1bWVu
dFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKICAgICB9CiAKICAgICBib29sIGhhc0FjdGl2ZVBh
cnNlcllpZWxkVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAppbmRleCAwMWM3Zjk2
ZTAyZTllYmQ1ODg1M2ZiNWRiMWM0Yjg4MjFlMmY5NzI4Li4wMzcwM2I2MmJjNjUwNTU3OGIzODli
OTk5MzhhNGRhYWI2ZDc2YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1
ZXVlLmNwcApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBEb2N1bWVudEV2ZW50UXVldWU6OlRpbWVy
IGZpbmFsIDogcHVibGljIFN1c3BlbmRhYmxlVGltZXIgewogCiBEb2N1bWVudEV2ZW50UXVldWU6
OkRvY3VtZW50RXZlbnRRdWV1ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50
KGRvY3VtZW50KQotICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRp
bWVyPigqdGhpcykpCisgICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKG1ha2VVbmlxdWU8VGltZXI+
KCp0aGlzKSkKICAgICAsIG1faXNDbG9zZWQoZmFsc2UpCiB7CiAgICAgbV9wZW5kaW5nRXZlbnRU
aW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDcyOTFkNGFkZWU5ZjQxNzdmZGJmZWZlZWZkZGYy
NjcwNTRhOWM0ZjAuLmU3NjQxYWY2MjE4YmYxM2FiMGUzYzY4OTIwMjBkZTg4OWM0ZTkwNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBA
IC0zNjQsNyArMzY0LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtl
cihOb2RlJiBub2RlLCBjb25zdCBEb2N1bWVudE1hcmtlciYgbmV3TWEKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TWFya2VyTGlzdD4mIGxpc3QgPSBtX21hcmtlcnMuYWRkKCZub2RlLCBudWxscHRyKS5p
dGVyYXRvci0+dmFsdWU7CiAKICAgICBpZiAoIWxpc3QpIHsKLSAgICAgICAgbGlzdCA9IHN0ZDo6
bWFrZV91bmlxdWU8TWFya2VyTGlzdD4oKTsKKyAgICAgICAgbGlzdCA9IG1ha2VVbmlxdWU8TWFy
a2VyTGlzdD4oKTsKICAgICAgICAgbGlzdC0+YXBwZW5kKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIo
bmV3TWFya2VyKSk7CiAgICAgfSBlbHNlIGlmIChzaG91bGRJbnNlcnRBc1NlcGFyYXRlTWFya2Vy
KG5ld01hcmtlcikpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbWVyZ2UgZGljdGF0aW9uIG1hcmtl
cnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4
IDgxZWZiMTBkNWU3NmVkYjZmNmQzODM1MzAwNTFkMjljMzg4ZWFmZGIuLjg1NWEyYTA2NTZmNzFi
NDVlZThkNGZmZjI4NGE1MzUzNzlhMzg3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCkBAIC00OCw3ICs0OCw3IEBAIERvY3VtZW50U3RvcmFnZUFj
Y2VzcyogRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHsK
ICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNz
Kj4oU3VwcGxlbWVudDxEb2N1bWVudD46OmZyb20oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgp
KSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNz
Pihkb2N1bWVudCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwog
ICAgICAgICBwcm92aWRlVG8oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5l
d1N1cHBsZW1lbnQpKTsKICAgICB9CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKICAgICAgICAgYm9vbCBzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2FzR3Jh
bnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzIHx8IHByb21wdFdhc1Nob3duID09
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm87CiAKICAgICAgICAgaWYgKHNob3VsZFBy
ZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhy
ZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1l
bnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigqZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAgICBN
aWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1p
Y3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkg
ewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNl
LmdldCgpKQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGlt
ZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAgICB9KSk7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9p
ZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaG91bGRQcmVz
ZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVh
ZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50
UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVudFJlZmVyZW5jZSldICgpIHsKKyAgICAgICAgICAg
IE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lk
TWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNl
KV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVm
ZXJlbmNlLmdldCgpKQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC0+Y29uc3VtZVRlbXBv
cmFyeVRpbWVVc2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgfSkpOwpAQCAtMjA5LDcgKzIwOSw3
IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNz
OjplbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKQogewotICAgIG1fdGVtcG9yYXJ5VXNl
ckdlc3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNz
aW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50KTsKKyAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJl
ID0gbWFrZVVuaXF1ZTxVc2VyR2VzdHVyZUluZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
LCAmbV9kb2N1bWVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpjb25zdW1l
VGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA0NTE2
MWM5Y2EyMGJhZDY5MzMwMDUxZDA5YTU1ZjBhZmE1NTg2Y2M2Li5lZWIxZjM0MjlkNjRlZmM0ZGIw
YjEzMGQxMzdmMzE2ZTM1MGQwZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00NzcsNyAr
NDc3LDcgQEAgTmFtZWROb2RlTWFwJiBFbGVtZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICBp
ZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSByYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKSkK
ICAgICAgICAgcmV0dXJuICphdHRyaWJ1dGVNYXA7CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1
dGVNYXAoc3RkOjptYWtlX3VuaXF1ZTxOYW1lZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+
KCp0aGlzKSkpOworICAgIHJhcmVEYXRhLnNldEF0dHJpYnV0ZU1hcChtYWtlVW5pcXVlPE5hbWVk
Tm9kZU1hcD4oY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpKSk7CiAgICAgcmV0dXJuICpyYXJl
RGF0YS5hdHRyaWJ1dGVNYXAoKTsKIH0KIApAQCAtMjMwNyw3ICsyMzA3LDcgQEAgdm9pZCBFbGVt
ZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYg
ZWxlbWVudEludGVyZmEKICAgICBzZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7CiAgICAgYXV0byYg
ZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5jdXN0b21FbGVt
ZW50UmVhY3Rpb25RdWV1ZSgpKQotICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlv
blF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1l
bnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNl
KSk7CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9tRWxlbWVudFN0YXRlKCp0aGlzKTsKIH0KQEAgLTIz
NDQsNyArMjM0NCw3IEBAIHZvaWQgRWxlbWVudDo6ZW5xdWV1ZVRvVXBncmFkZShKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZhY2UpCiAgICAgYXV0byYgZGF0YSA9IGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGJvb2wgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSA9
IGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoKTsKICAgICBpZiAoIWFscmVhZHlTY2hl
ZHVsZWRUb1VwZ3JhZGUpCi0gICAgICAgIGRhdGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudElu
dGVyZmFjZSkpOworICAgICAgICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1h
a2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsK
ICAgICBkYXRhLmN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKCktPmVucXVldWVFbGVtZW50VXBn
cmFkZSgqdGhpcywgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSk7CiB9CiAKQEAgLTM0ODAsNyAr
MzQ4MCw3IEBAIERPTVRva2VuTGlzdCYgRWxlbWVudDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVt
ZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRh
dGEuY2xhc3NMaXN0KCkpCi0gICAgICAgIGRhdGEuc2V0Q2xhc3NMaXN0KHN0ZDo6bWFrZV91bmlx
dWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpjbGFzc0F0dHIpKTsKKyAgICAgICAg
ZGF0YS5zZXRDbGFzc0xpc3QobWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFt
ZXM6OmNsYXNzQXR0cikpOwogICAgIHJldHVybiAqZGF0YS5jbGFzc0xpc3QoKTsKIH0KIApAQCAt
MzQ4OCw3ICszNDg4LDcgQEAgRGF0YXNldERPTVN0cmluZ01hcCYgRWxlbWVudDo6ZGF0YXNldCgp
CiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7
CiAgICAgaWYgKCFkYXRhLmRhdGFzZXQoKSkKLSAgICAgICAgZGF0YS5zZXREYXRhc2V0KHN0ZDo6
bWFrZV91bmlxdWU8RGF0YXNldERPTVN0cmluZ01hcD4oKnRoaXMpKTsKKyAgICAgICAgZGF0YS5z
ZXREYXRhc2V0KG1ha2VVbmlxdWU8RGF0YXNldERPTVN0cmluZ01hcD4oKnRoaXMpKTsKICAgICBy
ZXR1cm4gKmRhdGEuZGF0YXNldCgpOwogfQogCkBAIC0zNjMyLDcgKzM2MzIsNyBAQCBJbnRlcnNl
Y3Rpb25PYnNlcnZlckRhdGEmIEVsZW1lbnQ6OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0
YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAg
ICBpZiAoIXJhcmVEYXRhLmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJl
RGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcnNl
Y3Rpb25PYnNlcnZlckRhdGE+KCkpOworICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25P
YnNlcnZlckRhdGEobWFrZVVuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOwogICAg
IHJldHVybiAqcmFyZURhdGEuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKQEAgLTM2
NTgsNyArMzY1OCw3IEBAIFJlc2l6ZU9ic2VydmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlUmVzaXpl
T2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJl
RGF0YSgpOwogICAgIGlmICghcmFyZURhdGEucmVzaXplT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAg
IHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YShzdGQ6Om1ha2VfdW5pcXVlPFJlc2l6ZU9i
c2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YSht
YWtlVW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5y
ZXNpemVPYnNlcnZlckRhdGEoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJN
YXAuY3BwCmluZGV4IGQ5ZTY2MzQ5Y2JkYmEwYmI4MWQyYWNmYmZkYzBkNDMzNzhjNjU4ZGIuLjBi
MDlkMDgyYzM2ZWRkZDg0YjljZGU5ODgyNTI3MmRiNWY5NmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIEV2ZW50TGlz
dGVuZXJNYXA6OmFkZChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3Rl
bmVyPiYmIGxpcwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvIGxpc3Rl
bmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKTsKKyAgICBhdXRv
IGxpc3RlbmVycyA9IG1ha2VVbmlxdWU8RXZlbnRMaXN0ZW5lclZlY3Rvcj4oKTsKICAgICBsaXN0
ZW5lcnMtPnVuY2hlY2tlZEFwcGVuZChSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKFdU
Rk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKSk7CiAgICAgbV9lbnRyaWVzLmFwcGVuZCh7IGV2ZW50
VHlwZSwgV1RGTW92ZShsaXN0ZW5lcnMpIH0pOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgKaW5kZXggOWU5MzA4YmI1ZGExNDYxZTM1OGUzY2M2MmZlYWZkY2ZjZDBjYzdh
ZC4uNWI2YWI2ODc1NWI2MWJmZTJkNGE2OGJjYmU3NTI0ZmQwZGRhYmI5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCkBAIC0zMzksMTMgKzMzOSwxMyBAQCBzdHJ1Y3QgRXZlbnROYW1lcyB7CiAg
ICAgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNIKERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKQogI3Vu
ZGVmIERPTV9FVkVOVF9OQU1FU19ERUNMQVJFCiAKLSAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBk
ZWNsYXJhdGlvbiB0byBzdGQ6Om1ha2VfdW5pcXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2lu
ZG93cyBwb3J0LgorICAgIC8vIEZJWE1FOiBUaGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIG1ha2VV
bmlxdWUgYmVsb3cgZG9lcyBub3Qgd29yayBpbiB3aW5kb3dzIHBvcnQuCiAgICAgLy8KICAgICAv
LyB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4uLiBBcmdzPgotICAgIC8vIGZyaWVuZCB0eXBlbmFt
ZSBzdGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5nbGVfb2JqZWN0IHN0ZDo6bWFrZV91bmlxdWUoQXJn
cyYmLi4uKTsKKyAgICAvLyBmcmllbmQgdHlwZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2lu
Z2xlX29iamVjdCBtYWtlVW5pcXVlKEFyZ3MmJi4uLik7CiAgICAgLy8KICAgICAvLyBUaGlzIGNy
ZWF0ZSBmdW5jdGlvbiBzaG91bGQgYmUgZGVsZXRlZCBsYXRlciBhbmQgaXMgb25seSBmb3Iga2Vl
cGluZyBFdmVudE5hbWVzIGFzIHByaXZhdGUuCi0gICAgLy8gc3RkOjptYWtlX3VuaXF1ZSBzaG91
bGQgYmUgdXNlZCBpbnN0ZWFkLgorICAgIC8vIG1ha2VVbmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5z
dGVhZC4KICAgICAvLwogICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVzPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFBhdGguY3BwCmluZGV4IGRiMTQyOGQxZDQyNjA1OGNiNjViMWViNmZhY2EyM2RiOTg5
MjgyYmQuLmEwYWQwYWQ3YzQ4MjY5MmU2MzhlNTcyODBmMWEyOTI0N2FjZWMxNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFBhdGguY3BwCkBAIC0xMTUsMTcgKzExNSwxNyBAQCB2b2lkIEV2ZW50UGF0aDo6
YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFyZ2V0LCBFdmVudCYgZXZlbnQpCiB7CiAgICAgdXNp
bmcgTWFrZUV2ZW50Q29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+ICgqKShO
b2RlJiwgRXZlbnRUYXJnZXQqLCBFdmVudFRhcmdldCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7
CiAgICAgTWFrZUV2ZW50Q29udGV4dCBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUs
IEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xv
c2VkU2hhZG93RGVwdGgpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRD
b250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRU
YXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgIH07CiAgICAgaWYgKGlzPE1v
dXNlRXZlbnQ+KGV2ZW50KSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKSkgewogICAgICAgICBtYWtl
RXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0
LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5p
cXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0
LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb3Vz
ZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2Vk
U2hhZG93RGVwdGgpOwogICAgICAgICB9OwogICAgIH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIGlmIChpczxUb3VjaEV2ZW50PihldmVudCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29u
dGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVudFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRU
YXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNoYWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8
RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUb3Vj
aEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dE
ZXB0aCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4o
bm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAg
IH07CiAgICAgfQogI2VuZGlmCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1
aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdldCwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERv
Y3VtZW50Pigqbm9kZSkuZG9tV2luZG93KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUs
ICp3aW5kb3csICp0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4o
Km5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNsb3NlZFNoYWRvd0RlcHRoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzA4LDcgKzMwOCw3IEBAIEV2ZW50UGF0aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFbGVt
ZW50Kj4mIHRhcmdldHMpCiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBOb2RlKiBv
cmlnaW4gPSAqdGFyZ2V0cy5iZWdpbigpOwogICAgICAgICBpZiAoIXRhcmdldC0+aXNDbG9zZWRT
aGFkb3dIaWRkZW4oKm9yaWdpbikpCi0gICAgICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CisgICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VVbmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRh
cmdldCwgb3JpZ2luLCAwKSk7CiAgICAgfQogfQogCkBAIC0zMTcsNyArMzE3LDcgQEAgRXZlbnRQ
YXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9yPEV2ZW50VGFyZ2V0Kj4mIHRhcmdldHMpCiAgICAg
Zm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRzKSB7CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwog
ICAgICAgICBBU1NFUlQoIWlzPE5vZGU+KHRhcmdldCkpOwotICAgICAgICBtX3BhdGguYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRz
LmJlZ2luKCksIDApKTsKKyAgICAgICAgbV9wYXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29u
dGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFyZ2V0cy5iZWdpbigpLCAwKSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCmlu
ZGV4IGIzYTA2ZTQ3YjA3MDBmN2M0N2QzZDlhZWYzM2Y0NDM3MjRlMGM1NWUuLjk0MGVmY2FlZDgz
MDkxYzI1ODNmYTllMzM2ZWYzZDc4YzU0YWEzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRPYnNlcnZlcihjb25zdCBBdG9tU3RyaW5nJiBpZCwg
SWRUYXJnZXRPYnNlcnZlCiAgICAgCiAgICAgSWRUb09ic2VydmVyU2V0TWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9yZWdpc3RyeS5hZGQoaWQuaW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAocmVz
dWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9ic2VydmVyU2V0PigpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxPYnNlcnZlclNldD4oKTsKIAogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPmFkZChvYnNlcnZlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5
Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5k
ZXggN2U3YTM0Nzk3Yjg2MjlmNjJmN2Y3ODZhYjE0YzVjNmY1YmQ5MGIxNC4uY2U4NTZiYjU1ZDVi
ZDk5ZTY2ZjUwY2I1NWIwYmU0NzkwZTA5ODQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2
ZW50LmNwcApAQCAtOTYsNyArOTYsNyBAQCBpbmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRF
dmVudCgpID0gZGVmYXVsdDsKIGlubGluZSBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmll
dykKICAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5
cGUoa2V5LnR5cGUoKSksIENhbkJ1YmJsZTo6WWVzLCBJc0NhbmNlbGFibGU6OlllcywgSXNDb21w
b3NlZDo6WWVzLAogICAgICAgICBrZXkudGltZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNU
aW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBrZXkubW9kaWZpZXJzKCksIElzVHJ1c3RlZDo6WWVz
KQotICAgICwgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKKyAgICAsIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQo
bWFrZVVuaXF1ZTxQbGF0Zm9ybUtleWJvYXJkRXZlbnQ+KGtleSkpCiAjaWYgRU5BQkxFKEtFWUJP
QVJEX0tFWV9BVFRSSUJVVEUpCiAgICAgLCBtX2tleShrZXkua2V5KCkpCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA2NmM1ZWEwYjlkNjM0NTQ0Mzgx
MmZiMTMxZmZlNWRiZTZjYTFkZGYzLi4xOTNmMjc4MDVhNWFlZDRiNjA2ZTljZWVhM2E5YTM1ZDhi
MWU5OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNzUs
NyArMTc1LDcgQEAgc3RhdGljIHZvaWQgcXVldWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNy
b3Rhc2soKQogICAgIGlmIChtdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRG
bGFnKQogICAgICAgICByZXR1cm47CiAgICAgbXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90
YXNrUXVldWVkRmxhZyA9IHRydWU7Ci0gICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1
ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkp
OworICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1
ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90YXNrPigpKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2Vy
dmVyOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoUmVmPE11dGF0aW9uUmVjb3JkPiYmIG11dGF0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RH
cm91cC5jcHAKaW5kZXggNTJkYTYxZjc0ZjFmNTdhZjY4NTQ5ZjM2NjU2MzA2ZDhkMTcwM2M3OS4u
MDI3NmU0MmJlNWJkODNmZjQyYTc5MzU2YmRlOWNlNzM2MDk5Y2JkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyCiAgICAgaWYgKG9ic2VydmVycy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJz
KSwgb2xkVmFsdWVGbGFnKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVy
SW50ZXJlc3RHcm91cD4oV1RGTW92ZShvYnNlcnZlcnMpLCBvbGRWYWx1ZUZsYWcpOwogfQogCiBi
b29sIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmNwcAppbmRleCBjOGZjMDEwNjcyNDVlNGUzNjE5N2EyZjZkNGQxZTQ1NzU0N2JiYzhh
Li5lNWM2ZGQxNmE0ZGI2MDliYTUyNzNhNDdhZjdmYTY4MjY2MmEyYzRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC02
OCw3ICs2OCw3IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6b2JzZXJ2ZWRT
dWJ0cmVlTm9kZVdpbGxEZXRhY2goTm9kZSYgbm9kZSkKICAgICBtX29ic2VydmVyLT5zZXRIYXNU
cmFuc2llbnRSZWdpc3RyYXRpb24oKTsKIAogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRp
b25Ob2RlcykgewotICAgICAgICBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gc3RkOjpt
YWtlX3VuaXF1ZTxIYXNoU2V0PEdDUmVhY2hhYmxlUmVmPE5vZGU+Pj4oKTsKKyAgICAgICAgbV90
cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcyA9IG1ha2VVbmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJs
ZVJlZjxOb2RlPj4+KCk7CiAKICAgICAgICAgQVNTRVJUKCFtX25vZGVLZXB0QWxpdmUpOwogICAg
ICAgICBtX25vZGVLZXB0QWxpdmUgPSAmbV9ub2RlOyAvLyBCYWxhbmNlZCBpbiB0YWtlVHJhbnNp
ZW50UmVnaXN0cmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA3NmQ0ZWE5ZDczMGE5MjM3MmE5
ZjhlN2E2ZDhmNjdkMDBmZDNkYmY1Li5jYWJmMWViNThjOWMyM2NhZDg4NWJkMDFkZjEyMmI2NTFh
ZTAyYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zOTgsOSArMzk4LDkgQEAgdm9pZCBOb2RlOjpt
YXRlcmlhbGl6ZVJhcmVEYXRhKCkKIHsKICAgICBOb2RlUmFyZURhdGEqIGRhdGE7CiAgICAgaWYg
KGlzPEVsZW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RWxl
bWVudFJhcmVEYXRhPihkb3duY2FzdDxSZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikp
LnJlbGVhc2UoKTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8RWxlbWVudFJhcmVEYXRhPihk
b3duY2FzdDxSZW5kZXJFbGVtZW50PihtX2RhdGEubV9yZW5kZXJlcikpLnJlbGVhc2UoKTsKICAg
ICBlbHNlCi0gICAgICAgIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVSYXJlRGF0YT4obV9k
YXRhLm1fcmVuZGVyZXIpLnJlbGVhc2UoKTsKKyAgICAgICAgZGF0YSA9IG1ha2VVbmlxdWU8Tm9k
ZVJhcmVEYXRhPihtX2RhdGEubV9yZW5kZXJlcikucmVsZWFzZSgpOwogICAgIEFTU0VSVChkYXRh
KTsKIAogICAgIG1fZGF0YS5tX3JhcmVEYXRhID0gZGF0YTsKQEAgLTIyMTUsNyArMjIxNSw3IEBA
IEV2ZW50VGFyZ2V0RGF0YSYgTm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKIAogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soc19ldmVudFRhcmdldERhdGFNYXBMb2NrKTsKICAgICBzZXRI
YXNFdmVudFRhcmdldERhdGEodHJ1ZSk7Ci0gICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAo
KS5hZGQodGhpcywgc3RkOjptYWtlX3VuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICByZXR1cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBtYWtl
VW5pcXVlPEV2ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIE5v
ZGU6OmNsZWFyRXZlbnRUYXJnZXREYXRhKCkKQEAgLTIyODcsNyArMjI4Nyw3IEBAIHZvaWQgTm9k
ZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9uT2JzZXJ2ZXImIG9ic2VydmVyLCBN
dXRhdGlvbk9ic2VydmVyCiAgICAgfQogCiAgICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKLSAgICAg
ICAgcmVnaXN0cnkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbj4ob2JzZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKKyAg
ICAgICAgcmVnaXN0cnkuYXBwZW5kKG1ha2VVbmlxdWU8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbj4ob2JzZXJ2ZXIsICp0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIpKTsKICAgICAg
ICAgcmVnaXN0cmF0aW9uID0gcmVnaXN0cnkubGFzdCgpLmdldCgpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDc2OTBkNTk5ZmNhN2RjOTljYjQ5ZTE2MGZiZTJhZmFk
ZGYwMGNkZjQuLjc2NmQ2N2YzZjZkNjI5YWYwODk0MmFkYzIzZTJjMjJjMjlmM2U0NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTI4MSw3ICsyODEsNyBAQCBjbGFzcyBOb2RlUmFy
ZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgTm9kZUxpc3RzTm9kZURhdGEm
IGVuc3VyZU5vZGVMaXN0cygpCiAgICAgewogICAgICAgICBpZiAoIW1fbm9kZUxpc3RzKQotICAg
ICAgICAgICAgbV9ub2RlTGlzdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVMaXN0c05vZGVEYXRh
PigpOworICAgICAgICAgICAgbV9ub2RlTGlzdHMgPSBtYWtlVW5pcXVlPE5vZGVMaXN0c05vZGVE
YXRhPigpOwogICAgICAgICByZXR1cm4gKm1fbm9kZUxpc3RzOwogICAgIH0KIApAQCAtMjg5LDcg
KzI4OSw3IEBAIGNsYXNzIE5vZGVSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsK
ICAgICBOb2RlTXV0YXRpb25PYnNlcnZlckRhdGEmIGVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRh
KCkKICAgICB7CiAgICAgICAgIGlmICghbV9tdXRhdGlvbk9ic2VydmVyRGF0YSkKLSAgICAgICAg
ICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVNdXRhdGlv
bk9ic2VydmVyRGF0YT4oKTsKKyAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBt
YWtlVW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICpt
X211dGF0aW9uT2JzZXJ2ZXJEYXRhOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1
dHRvbkdyb3Vwcy5jcHAKaW5kZXggNTMzN2M1OGNkZmJiYWFiMjMwMTg0NTAyNjM4ZGM2MzQ0OWY3
OTZhYy4uNjFiYmM0ZWRmZjkzNGE2NDQ2ZWEyNTY3NTU2NjNmZDU0Njg3N2UzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCkBAIC0xOTgsMTEgKzE5OCwxMSBAQCB2
b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjphZGRCdXR0b24oSFRNTElucHV0RWxlbWVudCYgZWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25hbWVUb0dyb3VwTWFwKQotICAgICAg
ICBtX25hbWVUb0dyb3VwTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOYW1lVG9Hcm91cE1hcD4oKTsK
KyAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IG1ha2VVbmlxdWU8TmFtZVRvR3JvdXBNYXA+KCk7
CiAKICAgICBhdXRvJiBncm91cCA9IG1fbmFtZVRvR3JvdXBNYXAtPmFkZChlbGVtZW50Lm5hbWUo
KS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWdyb3VwKQotICAg
ICAgICBncm91cCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFkaW9CdXR0b25Hcm91cD4oKTsKKyAgICAg
ICAgZ3JvdXAgPSBtYWtlVW5pcXVlPFJhZGlvQnV0dG9uR3JvdXA+KCk7CiAgICAgZ3JvdXAtPmFk
ZChlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCmluZGV4IGM4MjVhN2VkZWU2YmIyZDVmNTE2YzZkM2U2ZWE3NDEwZTZlY2M3NTYu
LjA0YWZlOWQ3OGFkMGJkMTAyOGE2NzAzYzBmYzNkNGY2NTNiMTNkZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM3OSw4ICszNzksOCBA
QCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbgogewogICAgIGlmIChtX2luRGlzcGF0Y2hFcnJvckV2
ZW50KSB7CiAgICAgICAgIGlmICghbV9wZW5kaW5nRXhjZXB0aW9ucykKLSAgICAgICAgICAgIG1f
cGVuZGluZ0V4Y2VwdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOwotICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsK
KyAgICAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBtYWtlVW5pcXVlPFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOworICAgICAgICBtX3BlbmRpbmdFeGNl
cHRpb25zLT5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRXhjZXB0aW9uPihlcnJvck1lc3NhZ2Us
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBXVEZNb3ZlKGNhbGxTdGFjaykp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE0LDkgKzQxNCw5IEBAIHZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbihKU0M6
OkV4ZWNTdGF0ZSYgc3RhCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlVu
aGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogIiwgcmVzdWx0TWVzc2FnZSk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKGNh
bGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpD
b25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgZXJyb3JNZXNzYWdlLCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgZWxzZQot
ICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpF
cnJvciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VUeXBlOjpMb2cs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7CiAgICAgYWRkQ29uc29sZU1lc3Nh
Z2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBSZWplY3RlZFBy
b21pc2VUcmFja2VyJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjplbnN1cmVSZWplY3RlZFByb21p
c2VUcmFja2VyU2xvdwogICAgIC8vIFdoZW4gaW5pdGlhbGl6aW5nIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHZtKCkgaXMgbm90IHJlYWR5LgogCiAgICAgQVNTRVJUKCFtX3JlamVjdGVkUHJvbWlz
ZVRyYWNrZXIpOwotICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOworICAgIG1fcmVqZWN0ZWRQ
cm9taXNlVHJhY2tlciA9IG1ha2VVbmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMs
IHZtKCkpOwogICAgIHJldHVybiAqbV9yZWplY3RlZFByb21pc2VUcmFja2VyLmdldCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggNTVkYzJjODdhNGFjMjAyZDcx
YWRkYTY2ZDU5NmI1ZmVhMGJjODg1Ni4uMjEwOWNlNGEyMjhjM2U3YmE4N2E0YmE1MmIyZGIyODIz
NjA4NzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApAQCAtNjMzLDcgKzYz
Myw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBTZWxlY3RvclF1ZXJ5Q2FjaGU6OmFk
ZChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRG9jCiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkg
PT0gbWF4aW11bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUpCiAgICAgICAgIG1fZW50cmllcy5yZW1v
dmUobV9lbnRyaWVzLnJhbmRvbSgpKTsKIAotICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxl
Y3RvcnMsIHN0ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxp
c3QpKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqbV9lbnRyaWVzLmFkZChzZWxlY3Rv
cnMsIG1ha2VVbmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRl
cmF0b3ItPnZhbHVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNjk2
M2I2ODM3OWQ4OGYyN2E4NGUyZjFkYTY1MTUzODE4MDViMjkzYy4uNjc4NmMwZDIxZTFiMmMyYTU3
ODUxYmQwODUxNjRjMWExZTkyYzk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAt
NTgsNyArNTgsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwg
U2hhZG93Um9vdE1vZGUgdHlwZSkKICAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENy
ZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRoaXMsIGRvY3VtZW50KQogICAgICwg
bV90eXBlKHR5cGUpCi0gICAgLCBtX3N0eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6
U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZShtYWtlVW5pcXVlPFN0eWxlOjpTY29w
ZT4oKnRoaXMpKQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jv
b3QoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2lnbm1lbnQ+JiYg
c2xvCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQog
ICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShTaGFkb3dSb290
TW9kZTo6VXNlckFnZW50KQotICAgICwgbV9zdHlsZVNjb3BlKHN0ZDo6bWFrZV91bmlxdWU8U3R5
bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFrZVVuaXF1ZTxTdHlsZTo6
U2NvcGU+KCp0aGlzKSkKICAgICAsIG1fc2xvdEFzc2lnbm1lbnQoV1RGTW92ZShzbG90QXNzaWdu
bWVudCkpCiB7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBTaGFkb3dSb290Ojptb3ZlU2hh
ZG93Um9vdFRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXBhcmVudFRyZWVTY29wZSgpIHx8ICZw
YXJlbnRUcmVlU2NvcGUoKS0+ZG9jdW1lbnRTY29wZSgpID09ICZuZXdEb2N1bWVudCk7CiAKICAg
ICAvLyBTdHlsZSBzY29wZXMgYXJlIGRvY3VtZW50IHNwZWNpZmljLgotICAgIG1fc3R5bGVTY29w
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcyk7CisgICAgbV9zdHlsZVNj
b3BlID0gbWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKTsKICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZtX3N0eWxlU2NvcGUtPmRvY3VtZW50KCkgPT0g
Jm5ld0RvY3VtZW50KTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2hhZG93Um9vdDo6
YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVt
ZW50JiBzCiB7CiAgICAgQVNTRVJUKCZzbG90LnJvb3ROb2RlKCkgPT0gdGhpcyk7CiAgICAgaWYg
KCFtX3Nsb3RBc3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RBc3NpZ25tZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxTbG90QXNzaWdubWVudD4oKTsKKyAgICAgICAgbV9zbG90QXNzaWdubWVudCA9IG1h
a2VVbmlxdWU8U2xvdEFzc2lnbm1lbnQ+KCk7CiAKICAgICByZXR1cm4gbV9zbG90QXNzaWdubWVu
dC0+YWRkU2xvdEVsZW1lbnRCeU5hbWUobmFtZSwgc2xvdCwgKnRoaXMpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggYTQxOWRkYTUyOGFjY2JkYTZkZTlkZGYxYTU0
ODY0Y2ZkZjkxNjBlZi4uNDVjMDhlYTM2YWZlMTM5N2JlMGVjYmZiMjllMjI4ZWNkMGM5OTA3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAg
dm9pZCBTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW4KICAgICAgICAgLy8gdG8gYXZvaWQgYWx3YXlzIGhhdmlu
ZyBhIHZlY3RvciBvZiBhbGwgY2hpbGQgbm9kZXMgb2YgYSBzaGFkb3cgaG9zdC4KICAgICAgICAg
aWYgKHNsb3ROYW1lID09IGRlZmF1bHRTbG90TmFtZSgpKQogICAgICAgICAgICAgbV9zbG90QXNz
aWdubWVudHNJc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNsb3Q+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNsb3Q+KCk7CiAgICAgfSk7CiAg
ICAgYXV0byYgc2xvdCA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIGJvb2wgbmVl
ZHNTbG90Y2hhbmdlRXZlbnQgPSBzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQo
KSAmJiBoYXNBc3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsIHNsb3QpOwpAQCAtNDEwLDcgKzQxMCw3
IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xvdChOb2RlJiBjaGlsZCwgY29uc3Qg
QXRvbVN0cmluZyYgc2xvdE5hbWUpCiAgICAgfQogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Ns
b3RzLmVuc3VyZShzbG90TmFtZSwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTbG90PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTbG90PigpOwogICAgIH0pOwog
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFzc2lnbmVkTm9kZXMuYXBwZW5kKCZjaGls
ZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDJmMjg3MGQxNjY5ZDQ0YmM2MTg0
YTcyZWM2M2ViMzIzZjUyN2QzOWYuLjUzMWFjZGY0ZGQ2NTY4ZTBmNDYyMWViNTBkODlkZWU0Njdk
NTVhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFRyZWVT
Y29wZTo6VHJlZVNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QsIERvY3VtZW50JiBkb2N1bWVu
dCkKICAgICA6IG1fcm9vdE5vZGUoc2hhZG93Um9vdCkKICAgICAsIG1fZG9jdW1lbnRTY29wZShk
b2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKCZkb2N1bWVudCkKLSAgICAsIG1faWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgc2hhZG93Um9vdC5zZXRUcmVlU2Nv
cGUoKnRoaXMpOwogfQpAQCAtNzMsNyArNzMsNyBAQCBUcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKGRvY3VtZW50KQogICAgICwgbV9kb2N1
bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUobnVsbHB0cikKLSAg
ICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlxdWU8SWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVyUmVnaXN0cnkobWFr
ZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAgZG9jdW1lbnQuc2V0
VHJlZVNjb3BlKCp0aGlzKTsKIH0KQEAgLTE0MSw3ICsxNDEsNyBAQCBjb25zdCBWZWN0b3I8RWxl
bWVudCo+KiBUcmVlU2NvcGU6OmdldEFsbEVsZW1lbnRzQnlJZChjb25zdCBBdG9tU3RyaW5nJiBl
bGVtZW50SQogdm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlkKGNvbnN0IEF0b21TdHJpbmdJ
bXBsJiBlbGVtZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgbm90aWZ5T2JzZXJ2ZXJzKQog
ewogICAgIGlmICghbV9lbGVtZW50c0J5SWQpCi0gICAgICAgIG1fZWxlbWVudHNCeUlkID0gc3Rk
OjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2VsZW1lbnRz
QnlJZCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRz
QnlJZC0+YWRkKGVsZW1lbnRJZCwgZWxlbWVudCwgKnRoaXMpOwogICAgIGlmIChub3RpZnlPYnNl
cnZlcnMpCiAgICAgICAgIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LT5ub3RpZnlPYnNlcnZl
cnMoZWxlbWVudElkKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBFbGVtZW50KiBUcmVlU2NvcGU6Omdl
dEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkgY29uc3QKIHZvaWQgVHJlZVNj
b3BlOjphZGRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50
JiBlbGVtZW50KQogewogICAgIGlmICghbV9lbGVtZW50c0J5TmFtZSkKLSAgICAgICAgbV9lbGVt
ZW50c0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAg
ICAgICAgbV9lbGVtZW50c0J5TmFtZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4o
KTsKICAgICBtX2VsZW1lbnRzQnlOYW1lLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQog
CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBUcmVlU2NvcGU6OmFkZEltYWdlTWFwKEhUTUxNYXBF
bGVtZW50JiBpbWFnZU1hcCkKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1faW1hZ2VNYXBzQnlOYW1lKQotICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZSA9IHN0ZDo6
bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9pbWFnZU1hcHNC
eU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRNYXA+KCk7CiAgICAgbV9pbWFnZU1h
cHNCeU5hbWUtPmFkZCgqbmFtZSwgaW1hZ2VNYXAsICp0aGlzKTsKIH0KIApAQCAtMjYzLDcgKzI2
Myw3IEBAIEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGNvbnN0IEF0b21T
dHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6YWRkSW1hZ2VFbGVtZW50QnlVc2Vt
YXAoY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUsIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQp
CiB7CiAgICAgaWYgKCFtX2ltYWdlc0J5VXNlbWFwKQotICAgICAgICBtX2ltYWdlc0J5VXNlbWFw
ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOworICAgICAgICBtX2lt
YWdlc0J5VXNlbWFwID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigpOwogICAgIHJl
dHVybiBtX2ltYWdlc0J5VXNlbWFwLT5hZGQobmFtZSwgZWxlbWVudCwgKnRoaXMpOwogfQogCkBA
IC0zMDAsNyArMzAwLDcgQEAgSFRNTExhYmVsRWxlbWVudCogVHJlZVNjb3BlOjpsYWJlbEVsZW1l
bnRGb3JJZChjb25zdCBBdG9tU3RyaW5nJiBmb3JBdHRyaWJ1dGVWYWwKIAogICAgIGlmICghbV9s
YWJlbHNCeUZvckF0dHJpYnV0ZSkgewogICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgbWFwIG9uIGZp
cnN0IGFjY2Vzcy4KLSAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9sYWJlbHNCeUZvckF0dHJp
YnV0ZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKIAogICAgICAgICBmb3Ig
KGF1dG8mIGxhYmVsIDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTExhYmVsRWxlbWVudD4obV9yb290
Tm9kZSkpIHsKICAgICAgICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGZvclZhbHVlID0gbGFiZWwu
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JBdHRyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCA3OTM0MmM0OTc3NTNkOWExNTI2ZTA1NTU0OWZjNzc5NzIxNGJmNmU0
Li44OTFjMTI4OGM2ZTMxNGFjY2FlOWI2MjcxOTc4MTg4MWU3NDJkYzI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCkBAIC0zODAsMTIgKzM4MCwxMiBAQCBzdGF0aWMgUmVmPERhdGFUcmFu
c2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQoRG9jdW1lbnQmIGRvY3Vt
ZW50LAogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpD
b3B5OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpDdXQ6Ci0gICAgICAgIHJldHVybiBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVy
OjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJk
PigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UmVhZFdyaXRlLCBtYWtlVW5pcXVl
PFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpQYXN0
ZUFzUGxhaW5UZXh0OgogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSkgewogICAgICAgICAgICAg
YXV0byBwbGFpblRleHRUeXBlID0gInRleHQvcGxhaW4iX3M7CiAgICAgICAgICAgICBhdXRvIHBs
YWluVGV4dCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpLT5yZWFkU3RyaW5n
KHBsYWluVGV4dFR5cGUpOwotICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJkID0gc3RkOjptYWtl
X3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOworICAgICAgICAgICAgYXV0byBwYXN0ZWJvYXJk
ID0gbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwogICAgICAgICAgICAgcGFzdGVib2Fy
ZC0+d3JpdGVTdHJpbmcocGxhaW5UZXh0VHlwZSwgcGxhaW5UZXh0KTsKICAgICAgICAgICAgIHJl
dHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShkb2N1bWVudCwgRGF0YVRy
YW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpKTsKICAgICAg
ICAgfQpAQCAtMzk2LDEwICszOTYsMTAgQEAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0
ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3VtZW50JiBkb2N1bWVudCwKICAgICBj
YXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToKICAgICBjYXNlIENsaXBib2FyZEV2
ZW50S2luZDo6QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpCZWZvcmVQ
YXN0ZToKLSAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3Rl
KGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3Vu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6
SW52YWxpZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgc3Rk
OjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICByZXR1cm4gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQsIERhdGFUcmFuc2Zlcjo6U3RvcmVN
b2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogfQogCiAvLyBS
ZXR1cm5zIHdoZXRoZXIgY2FsbGVyIHNob3VsZCBjb250aW51ZSB3aXRoICJ0aGUgZGVmYXVsdCBw
cm9jZXNzaW5nIiwgd2hpY2ggaXMgdGhlIHNhbWUgYXMKQEAgLTExODMsOSArMTE4Myw5IEBAIHZv
aWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRDb21tYW5kQ29tcG9zaXRpb24mIGNvbXBv
c2l0aW9uKQogCiBFZGl0b3I6OkVkaXRvcihGcmFtZSYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZy
YW1lKQotICAgICwgbV9raWxsUmluZyhzdGQ6Om1ha2VfdW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkp
Ci0gICAgLCBtX3NwZWxsQ2hlY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJh
bWUpKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQorICAgICwgbV9raWxsUmluZyhtYWtl
VW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCisgICAgLCBtX3NwZWxsQ2hlY2tlcihtYWtlVW5pcXVl
PFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
KG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQogICAgICwgbV9l
ZGl0b3JVSVVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjplZGl0b3JVSVVwZGF0ZVRpbWVyRmly
ZWQpCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAsIG1fdGVsZXBob25lTnVtYmVyRGV0ZWN0aW9uVXBkYXRlVGltZXIo
KnRoaXMsICZFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRl
eCAwZGRjMTViZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3NjQ1ZjU0Nzk0Li4yYzIwMjhjYzYzYzFi
OTM4YmM2NmZmNGJlYTU4OTkyNThlOWE0YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTYzMSw3ICsxNjMxLDcgQEAg
dm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6dXBkYXRlTm9kZXNJbnNlcnRlZChOb2RlICpu
b2RlKQogUmVwbGFjZW1lbnRGcmFnbWVudCogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmVuc3Vy
ZVJlcGxhY2VtZW50RnJhZ21lbnQoKQogewogICAgIGlmICghbV9yZXBsYWNlbWVudEZyYWdtZW50
KQotICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlcGxh
Y2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9u
KCkpOworICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBtYWtlVW5pcXVlPFJlcGxhY2Vt
ZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkp
OwogICAgIHJldHVybiBtX3JlcGxhY2VtZW50RnJhZ21lbnQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAppbmRleCAzYjQw
Njg4Y2I0ZGE2NTZiMzQ0NTg3YzA4ODg2MzZjMGFiMTU2NmNmLi5mOWI2NGM1YzhjODk2YmYzMjI2
MzA4NzA5ZjI2YWE2NjdlMWVkOTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyPiBTZWxlY3Rpb25SZWN0R2F0aGVyZXI6
OmNsZWFyQW5kCiAgICAgbV9nYXBSZWN0cy5jbGVhcigpOwogICAgIG1faXNUZXh0T25seSA9IHRy
dWU7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmllcj4oKnRoaXMpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPE5vdGlmaWVyPigqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCAxODk2
ZTFhMjI4MWMxYTliMDQ2ZThlZmFjZDkxMTlhZjVlMjc3ZDU2Li5mMWQxOWMxMDExNGMxYTk4NWI4
YjQyNmZhNjhmZGI4MTIyYTYwYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCkBAIC02NTAsNyArNjUwLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRO
b2RlKCkKICAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSAobV9ub2RlID09IG1fZW5kQ29u
dGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9mZnNldCkgOiByZW5kZXJlclRl
eHQubGVuZ3RoKCk7CiAgICAgICAgIGlmICghbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSB8fCAmbV9m
bG93UnVuUmVzb2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZibG9ja0Zsb3cpIHsKICAgICAgICAgICAg
IG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93ID0gbV9mbG93UnVuUmVzb2x2ZXJD
YWNoZSA/IDAgOiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBt
X2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0
OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKKyAgICAgICAgICAgIG1fZmxvd1J1
blJlc29sdmVyQ2FjaGUgPSBtYWtlVW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVy
PihibG9ja0Zsb3csICpsYXlvdXQpOwogICAgICAgICB9CiAgICAgICAgIC8vIFNraXAgdG8gbV9v
ZmZzZXQgcG9zaXRpb24uCiAgICAgICAgIGF1dG8gcmFuZ2UgPSBtX2Zsb3dSdW5SZXNvbHZlckNh
Y2hlLT5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAwYTgzYWMwOTU5Mjc0YzA3ODBkNWQ3YjM4
NWYwMTljMGU4NmUzYzc0Li45Y2Y4NmE0YTE1ZjFjN2M2ZjAyODE1NTY0N2FmYTAwNTlhZTNiNmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBA
IC0zODAsNyArMzgwLDcgQEAgSFRNTENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcihjb25zdCBQb3Np
dGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiAgICAgX2ZsYWdzLnJlYWNoZWRTdGFy
dCA9IGZhbHNlOwogICAgIF9mbGFncy5yZWFjaGVkRW5kID0gZmFsc2U7CiAgICAgCi0gICAgX2Nh
Y2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTENvbnZlcnRlckNhY2hlcz4oKTsKKyAgICBfY2Fj
aGVzID0gbWFrZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVzPigpOwogfQogCiBIVE1MQ29udmVy
dGVyOjp+SFRNTENvbnZlcnRlcigpCkBAIC01NTEsNyArNTUxLDcgQEAgUmVmUHRyPENTU1ZhbHVl
PiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KEVs
ZW1lbnQmIGUKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9jb21wdXRlZFN0eWxlcy5hZGQoJmVsZW1l
bnQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cj4oJmVsZW1lbnQsIHRydWUpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxlbWVudCwgdHJ1ZSk7CiAgICAgQ29t
cHV0ZWRTdHlsZUV4dHJhY3RvciYgY29tcHV0ZWRTdHlsZSA9ICpyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOwogICAgIHJldHVybiBjb21wdXRlZFN0eWxlLnByb3BlcnR5VmFsdWUocHJvcGVydHlJZCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZmI0MzcxNjMwM2FlMjViODE5Mjky
ZDI3MWNhMmNhZTY4NGI5YzAyZS4uYzNjOGY4YjMyNGJmZWNkY2U5ZTVjNGViMTliNWI3NDYwODky
OGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQog
ewogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0
eUNsaWVudHMoKTsKICAgICAKLSAgICBhdXRvIHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+
KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBhdXRvIHBhZ2UgPSBtYWtlVW5pcXVl
PFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICBwYWdlLT5zZXRJc0ZvclNh
bml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJs
ZWQoZmFsc2UpOwogICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggYTA5NWVl
YWU5YjJhNzk3YmRhYmFlMzQ5NDBmZGM2YTNjZTMwNDI0Yi4uZDU4MTEyZmY5YmRmNmNkN2QxOTg1
NTJkODY2OTkxZjg1YjdhMWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9B
c3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmNwcApAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyB2b2lkIGNhbGxPbkZpbGVUaHJl
YWQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICAgICAgfSk7CiAgICAgfSk7CiAK
LSAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkICgp
Pj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICBxdWV1ZS5nZXQoKS5hcHBlbmQobWFrZVVuaXF1
ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxl
U3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQotICAgIDog
bV9pbnRlcm5hbHMoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbHM+KGNsaWVudCkpCisgICAgOiBt
X2ludGVybmFscyhtYWtlVW5pcXVlPEludGVybmFscz4oY2xpZW50KSkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5k
ZXggOWFkM2RhOWVmZmYwZjNhNzA3YTA2MDFmNzg2MDFkNWQ4NjgyNThmNS4uOTlhN2I1YzZmOTg3
YTE0YmExOTA5NDU4OTg3YWU4NGVjZmM0ZjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmlsZVJlYWRl
cjo6cmVhZEludGVybmFsKEJsb2ImIGJsb2IsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRUeXAKICAg
ICBtX3N0YXRlID0gTE9BRElORzsKICAgICBtX2Vycm9yID0gbnVsbHB0cjsKIAotICAgIG1fbG9h
ZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRUeXBlLCBzdGF0
aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOworICAgIG1fbG9hZGVyID0g
bWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2FzdDxGaWxl
UmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOwogICAgIG1fbG9hZGVyLT5zZXRFbmNvZGluZyht
X2VuY29kaW5nKTsKICAgICBtX2xvYWRlci0+c2V0RGF0YVR5cGUobV9ibG9iLT50eXBlKCkpOwog
ICAgIG1fbG9hZGVyLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCA2YWU1NTJjYmNlZmJhMzVhZjU0
OTRhZDgwYTE0NzMxZDAwYWNhM2QxLi41YzhmMThlM2RhYjBlYjI1OTdhZDVlODIyMTM5YmQ4OGZm
MzI0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTYzLDcg
KzE2Myw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSYgZnJhbWUpCiAKICAgICAv
LyBDcmVhdGUgdGhlIENhY2hlZEZyYW1lcyBmb3IgYWxsIEZyYW1lcyBpbiB0aGUgRnJhbWVUcmVl
LgogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQotICAgICAgICBtX2NoaWxk
RnJhbWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEZyYW1lPigqY2hpbGQpKTsKKyAg
ICAgICAgbV9jaGlsZEZyYW1lcy5hcHBlbmQobWFrZVVuaXF1ZTxDYWNoZWRGcmFtZT4oKmNoaWxk
KSk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50LT5kb21XaW5kb3coKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7CkBAIC0xNzIsNyArMTcyLDcgQEAg
Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFtZSkKICAgICAvLyBBY3RpdmUgRE9N
IG9iamVjdHMgbXVzdCBiZSBzdXNwZW5kZWQgYmVmb3JlIHdlIGNhY2hlIHRoZSBmcmFtZSBzY3Jp
cHQgZGF0YS4KICAgICBtX2RvY3VtZW50LT5zdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb246OlBh
Z2VDYWNoZSk7CiAKLSAgICBtX2NhY2hlZEZyYW1lU2NyaXB0RGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8U2NyaXB0Q2FjaGVkRnJhbWVEYXRhPihmcmFtZSk7CisgICAgbV9jYWNoZWRGcmFtZVNjcmlw
dERhdGEgPSBtYWtlVW5pcXVlPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4oZnJhbWUpOwogCiAgICAg
bV9kb2N1bWVudC0+ZG9tV2luZG93KCktPnN1c3BlbmRGb3JQYWdlQ2FjaGUoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggMDY4NmFlOGZlY2U0NGYxZWY2OTBlNWY4
ZjZhYmU4NDYxNDYzZGY3ZC4uOTc0N2E0MDQwMTZhYzg2OGQyZjc3OTZlNTMzMDQzNmZmYTU4NzQ5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC01Niw3ICs1Niw3IEBA
IERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgY2Fj
aGVkUGFnZUNvdW50ZXIsICgiQ2FjaGVkCiBDYWNoZWRQYWdlOjpDYWNoZWRQYWdlKFBhZ2UmIHBh
Z2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fZXhwaXJhdGlvblRpbWUoTW9ub3Rvbmlj
VGltZTo6bm93KCkgKyBTZWNvbmRzKHBhZ2Uuc2V0dGluZ3MoKS5iYWNrRm9yd2FyZENhY2hlRXhw
aXJhdGlvbkludGVydmFsKCkpKQotICAgICwgbV9jYWNoZWRNYWluRnJhbWUoc3RkOjptYWtlX3Vu
aXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkpCisgICAgLCBtX2NhY2hlZE1haW5G
cmFtZShtYWtlVW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1haW5GcmFtZSgpKSkKIHsKICNpZm5k
ZWYgTkRFQlVHCiAgICAgY2FjaGVkUGFnZUNvdW50ZXIuaW5jcmVtZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggMDAyOTY1NTg5MmQxNTRjYjUwNDNlMWRhMjI4MjU4
NzlmNjNlZGRlNS4uM2JhMjRiOWRlMmU5OTQxOTZhMGRmOTJmYzM2NjNjZWVhNWJmNGI5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBAIGJvb2wg
UGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkK
ICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUgYW55IEpTIGV2ZW50cyBpbiB0aGlz
IHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBzdGQ6Om1h
a2VfdW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKKyAgICAgICAgaXRlbS5tX2NhY2hlZFBhZ2Ug
PSBtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKICAgICAgICAgaXRlbS5tX3BydW5pbmdS
ZWFzb24gPSBQcnVuaW5nUmVhc29uOjpOb25lOwogICAgICAgICBtX2l0ZW1zLmFkZCgmaXRlbSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggN2E5OTFmMTdi
MDNkODNlOTA1ZjdkM2UwNjA3YmY1MmE5OWI4MGU0NS4uYjE0ZDMxMDE1OGI2NDVmZTg2OTlmN2Y5
OWY0MTg1OGJkNTVhZTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBA
IC0zMzIsNyArMzMyLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbihjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgIG1fZmlsZUljb25Mb2FkZXItPmludmFsaWRh
dGUoKTsKIAogICAgIEZpbGVJY29uTG9hZGVyQ2xpZW50JiBjbGllbnQgPSAqdGhpczsKLSAgICBt
X2ZpbGVJY29uTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlSWNvbkxvYWRlcj4oY2xpZW50
KTsKKyAgICBtX2ZpbGVJY29uTG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlSWNvbkxvYWRlcj4oY2xp
ZW50KTsKIAogICAgIGNocm9tZS0+bG9hZEljb25Gb3JGaWxlcyhwYXRocywgKm1fZmlsZUljb25M
b2FkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQu
Y3BwCmluZGV4IDgwNmU1ZjNkYWViZTI5NGUzMzAyMzBkZmE1ZWRlOGM5MmQ1OGMzMTguLjE3YzAy
N2NmZGZhMWJiNDNiNjQ1ZWU2MmQ1OGM4YWMzMjA2ZDg3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lk
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBl
cnJvcikKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1BdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oYXNI
VE1MRWxlbWVudCgpLmlzQ29ubmVjdGVkKCkpOwotICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9i
c2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGFz
SFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSwg
KnRoaXMpOworICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gbWFrZVVuaXF1ZTxG
b3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMpOwogfQogCiB2b2lkIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZVRhcmdldENoYW5nZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCBlYTViMDlhYWEwOGRiMjczOTYxYjk1MzQyMmYw
M2RkN2FkNmU0NjcxLi5kMGUwM2Y1NmNiMDYzZTI3ZjExMzQwYTI3MTNkNGY5NjFiNWFlNjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4gU2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFs
aXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgc2l6ZV90IGl0ZW1Db3VudCA9IHN0YXRlVmVj
dG9yW2luZGV4KytdLnRvVUludCgpOwogICAgIGlmICghaXRlbUNvdW50KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxT
YXZlZEZvcm1TdGF0ZT4oKTsKKyAgICBhdXRvIHNhdmVkRm9ybVN0YXRlID0gbWFrZVVuaXF1ZTxT
YXZlZEZvcm1TdGF0ZT4oKTsKICAgICB3aGlsZSAoaXRlbUNvdW50LS0pIHsKICAgICAgICAgaWYg
KGluZGV4ICsgMSA+PSBzdGF0ZVZlY3Rvci5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTM2NSwxMyArMzY1LDEzIEBAIHN0YXRpYyBTdHJpbmcgZm9ybVN0YXRlU2lnbmF0
dXJlKCkKIHN0ZDo6dW5pcXVlX3B0cjxGb3JtQ29udHJvbGxlcjo6U2F2ZWRGb3JtU3RhdGVNYXA+
IEZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0ZU1hcChjb25zdCBGb3JtRWxlbWVu
dExpc3RIYXNoU2V0JiBjb250cm9sTGlzdCkKIHsKICAgICBGb3JtS2V5R2VuZXJhdG9yIGtleUdl
bmVyYXRvcjsKLSAgICBhdXRvIHN0YXRlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1T
dGF0ZU1hcD4oKTsKKyAgICBhdXRvIHN0YXRlTWFwID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0
ZU1hcD4oKTsKICAgICBmb3IgKGF1dG8mIGNvbnRyb2wgOiBjb250cm9sTGlzdCkgewogICAgICAg
ICBpZiAoIWNvbnRyb2wtPnNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8mIGZvcm1TdGF0ZSA9IHN0YXRlTWFw
LT5hZGQoa2V5R2VuZXJhdG9yLmZvcm1LZXkoKmNvbnRyb2wpLmltcGwoKSwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAoIWZvcm1TdGF0ZSkKLSAgICAgICAgICAgIGZvcm1T
dGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7CisgICAgICAgICAgICBm
b3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigpOwogICAgICAgICBmb3JtU3Rh
dGUtPmFwcGVuZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1lKCksIGNvbnRyb2wtPnR5cGUoKSwg
Y29udHJvbC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CiAgICAgfQogICAgIHJldHVybiBzdGF0
ZU1hcDsKQEAgLTQwMyw3ICs0MDMsNyBAQCBGb3JtQ29udHJvbFN0YXRlIEZvcm1Db250cm9sbGVy
Ojp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRyb2xFbAogICAgIGlm
IChtX3NhdmVkRm9ybVN0YXRlTWFwLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250
cm9sU3RhdGUoKTsKICAgICBpZiAoIW1fZm9ybUtleUdlbmVyYXRvcikKLSAgICAgICAgbV9mb3Jt
S2V5R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtS2V5R2VuZXJhdG9yPigpOworICAg
ICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBtYWtlVW5pcXVlPEZvcm1LZXlHZW5lcmF0b3I+KCk7
CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zYXZlZEZvcm1TdGF0ZU1h
cC5maW5kKG1fZm9ybUtleUdlbmVyYXRvci0+Zm9ybUtleShjb250cm9sKS5pbXBsKCkpOwogICAg
IGlmIChpdCA9PSBtX3NhdmVkRm9ybVN0YXRlTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gRm9y
bUNvbnRyb2xTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAppbmRleCAxMDQ3YzU4ZWVjMzUzNmUzZDM5OTNhN2I2ZTU4NjI1YjAxNTk1MmYxLi5lYjliZDA2
ODVkNTkyZWE2OTIzMTNhZDQxNmMyN2Q3ZjI4MjYxZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgSFRNTEFuY2hv
ckVsZW1lbnQ6Omhhc1JlbChSZWxhdGlvbiByZWxhdGlvbikgY29uc3QKIERPTVRva2VuTGlzdCYg
SFRNTEFuY2hvckVsZW1lbnQ6OnJlbExpc3QoKSBjb25zdAogewogICAgIGlmICghbV9yZWxMaXN0
KSB7Ci0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0Pihj
b25zdF9jYXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMpLCBIVE1MTmFtZXM6OnJlbEF0dHIs
IFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgeworICAgICAgICBtX3JlbExpc3QgPSBt
YWtlVW5pcXVlPERPTVRva2VuTGlzdD4oY29uc3RfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCY+KCp0
aGlzKSwgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4p
IHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgICAgICAgICByZXR1cm4gZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm5vcmVmZXJyZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHRva2VuLCAibm9vcGVuZXIiKSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAi
YXIiKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXgg
YWMwNzU4ZGU4M2IwNDg4MmE1ZDg5MjJmZDQwNTU0OGVmOTU2ZGNhMi4uNDlhYmZhNWY3MGE3YWI5
N2Q3M2UyYzgyYjc2N2IwNTM1MWFkZWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFF
bGVtZW50LmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVudDo6aW52YWxp
ZGF0ZUNhY2hlZFJlZ2lvbigpCiBib29sIEhUTUxBcmVhRWxlbWVudDo6bWFwTW91c2VFdmVudChM
YXlvdXRQb2ludCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSwgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0KQogewogICAgIGlmIChtX2xhc3RTaXplICE9IHNpemUpIHsKLSAgICAgICAgbV9y
ZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KGdldFJlZ2lvbihzaXplKSk7CisgICAgICAg
IG1fcmVnaW9uID0gbWFrZVVuaXF1ZTxQYXRoPihnZXRSZWdpb24oc2l6ZSkpOwogICAgICAgICBt
X2xhc3RTaXplID0gc2l6ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKaW5kZXggMDc3MTVjYmI1MDk1NGE2MjYzNmM5MzMwNWE3NjUzMzU5ZDFlNmY2
Yi4uMjAxNGVmZTc1Y2VjNDYwZTM3OTFlMzYzZjU2MjhlNTAwMWI4ZGNlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTk1Miw3ICs5NTIsNyBAQCB2b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+JiYgYnVmZmVyKSBjbwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCku
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShkZWZhdWx0SW50ZXJwb2xhdGlvblF1YWxpdHkp
OwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7Ci0g
ICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlcj4obV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX2NvbnRleHRTdGF0
ZVNhdmVyID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVm
ZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhIVE1MRWxlbWVu
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpKTsKICAgICBIVE1MRWxlbWVudDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0
ZWQobWVtb3J5Q29zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5k
ZXggOTc2YzhlMGE5YTA2YTliODNkNmNhOTQxYmQ1ZGQzN2I5ZjMzODVjNS4uMzI4MTc2YjY5ZThj
ZDFiZjIyZDRlNzYzMjdlOWYyOTI5NjhhYjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29s
bGVjdGlvbi5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRh
dGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hl
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVu
aXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKICAgICB1bnNpZ25lZCBzaXpl
ID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCmluZGV4IGYxNTc4NzRl
NmQ1MzRlM2Y2MTM0ZTRhNWRmNGY1MWJlMmY2N2EzMWEuLjYwZGQxZmIyNTIwMzg2MGQzZDkyYTdh
NWFjYjMzMWMyYWIwNGI1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERl
dGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgRGV0YWlsc1Nsb3RB
c3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25zdCBOb2RlJiBjaGlsZCkKIFJlZjxI
VE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIGRldGFp
bHMgPSBhZG9wdFJlZigqbmV3IEhUTUxEZXRhaWxzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OwotICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50
LCBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOworICAgIGRldGFp
bHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlVW5pcXVl
PERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOwogICAgIHJldHVybiBkZXRhaWxzOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBk
ODg5M2IxZjA5NDllZjEwMmUyOWQwM2M1ODk2N2M0ZGQ0ZjNmZDVhLi5lMTUzMTZhMTllZWZiNDc3
ZTNmMzY3YzgwZjdjM2MxYTJhNjM0Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpCiAgICAgaWYg
KHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpCiAgICAgICAgIG1lc3NhZ2UgPSB2YWxpZGF0
aW9uTWVzc2FnZSgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIGlmICghbV92YWxpZGF0aW9uTWVz
c2FnZSkKLSAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8VmFs
aWRhdGlvbk1lc3NhZ2U+KHRoaXMpOworICAgICAgICBtX3ZhbGlkYXRpb25NZXNzYWdlID0gbWFr
ZVVuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CiAgICAgbV92YWxpZGF0aW9uTWVzc2Fn
ZS0+dXBkYXRlVmFsaWRhdGlvbk1lc3NhZ2UobWVzc2FnZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggNmVjMjJk
Nzc0OWYyZjc4YmQzMWVmNzdlYTYzNjA3M2I3MWM1OWZmMi4uYTJiMDBlOGY4MTZkYTFjMjIxYjFj
MzY2ZWE2ZTY4OWMzYjFjNjhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAg
ICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4o
KTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2Fj
aGU+KCk7CiAKICAgICBIYXNoU2V0PEF0b21TdHJpbmdJbXBsKj4gZm91bmRJbnB1dEVsZW1lbnRz
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggYzc2ZDQ5M2E2
MmNlZDgzMDg4MDFiNmIwMWQzMzIxZTBhMzMzZjUxZC4uNDM1ZDk1MTRkZDI5ZGRkMWY2ZGZiMWQx
NjllMzQ3ZTMxNWEzMDE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNw
cApAQCAtNzkxLDcgKzc5MSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjphZGRUb1Bhc3ROYW1l
c01hcChGb3JtTmFtZWRJdGVtKiBpdGVtLCBjb25zdCBBdG9tU3RyaW5nJiBwCiAgICAgaWYgKHBh
c3ROYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9wYXN0TmFtZXNN
YXApCi0gICAgICAgIG1fcGFzdE5hbWVzTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxQYXN0TmFtZXNN
YXA+KCk7CisgICAgICAgIG1fcGFzdE5hbWVzTWFwID0gbWFrZVVuaXF1ZTxQYXN0TmFtZXNNYXA+
KCk7CiAgICAgbV9wYXN0TmFtZXNNYXAtPnNldChwYXN0TmFtZS5pbXBsKCksIGl0ZW0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDAyZDdkNGU0
ZmJlODZmNTI3MGY1ODRiNmE4ZGViOWJlNDZmOTdhYTkuLmIxYzgyMWRkOWJhYmEyYTIwY2IyOWUx
YzFjZmQ5MGQ3MWZlYzU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFJlZjxIVE1MSUZyYW1lRWxlbWVudD4gSFRNTElGcmFt
ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBECiBET01Ub2tl
bkxpc3QmIEhUTUxJRnJhbWVFbGVtZW50OjpzYW5kYm94KCkKIHsKICAgICBpZiAoIW1fc2FuZGJv
eCkgewotICAgICAgICBtX3NhbmRib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVRva2VuTGlzdD4o
KnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAg
ICAgICAgbV9zYW5kYm94ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBzYW5kYm94
QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2VuKSB7CiAgICAgICAgICAgICByZXR1
cm4gU2VjdXJpdHlDb250ZXh0Ojppc1N1cHBvcnRlZFNhbmRib3hQb2xpY3kodG9rZW4pOwogICAg
ICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCAwYzI1Y2RkODBkNWY4YTc3MGExZDk3MDA1Nzg0N2E4OWM1NjgzZGJkLi4zNzZjNTIxOTY0
ZTBmNzFiNmZkOWMyMTcyZDYyMDFjMjkyNTdhMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBSZWY8SFRNTElucHV0RWxlbWVu
dD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvYwogSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbWFnZUxvYWRl
cigpCiB7CiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgbV9pbWFn
ZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX2ltYWdlTG9hZGVyOwogfQogCkBAIC0xNjQxLDcgKzE2NDEsNyBAQCBSZWZQdHI8SFRNTERh
dGFMaXN0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6ZGF0YUxpc3QoKSBjb25zdAogdm9pZCBI
VE1MSW5wdXRFbGVtZW50OjpyZXNldExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAg
ICAgaWYgKGlzQ29ubmVjdGVkKCkpCi0gICAgICAgIG1fbGlzdEF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGlzdEF0dHIpLCB0aGlzKTsKKyAgICAgICAgbV9s
aXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPExpc3RBdHRyaWJ1dGVUYXJn
ZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihsaXN0QXR0ciksIHRo
aXMpOwogICAgIGVsc2UKICAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGI4
NjM0Y2FkYWZhMThhMGEyN2NjZjcyOGY5YmJmNTZjYjdmNzhkMTYuLmY2YTdiYzgwMjRmZmE1ZTRi
ZDcxZjY5YTI3Yzk3YzhjOTM2YmI0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6c3R5bGVT
aGVldElzTG9hZGluZygpIGNvbnN0CiBET01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxlbWVudDo6c2l6
ZXMoKQogewogICAgIGlmICghbV9zaXplcykKLSAgICAgICAgbV9zaXplcyA9IHN0ZDo6bWFrZV91
bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRyKTsKKyAgICAgICAgbV9zaXplcyA9
IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRyKTsKICAgICByZXR1cm4g
Km1fc2l6ZXM7CiB9CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6
ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKIERPTVRv
a2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpyZWxMaXN0KCkKIHsKICAgICBpZiAoIW1fcmVsTGlz
dCkgCi0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0Pigq
dGhpcywgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1Zp
ZXcgdG9rZW4pIHsKKyAgICAgICAgbV9yZWxMaXN0ID0gbWFrZVVuaXF1ZTxET01Ub2tlbkxpc3Q+
KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5n
VmlldyB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuIExpbmtSZWxBdHRyaWJ1dGU6OmlzU3Vw
cG9ydGVkKGRvY3VtZW50LCB0b2tlbik7CiAgICAgICAgIH0pOwogICAgIHJldHVybiAqbV9yZWxM
aXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYjU1YzQ2
OTA2MWRjYzA0ZjJhMTE5YTI1NTM4ZWYwODJmZTZlNDM1NS4uZjY0ZmU5MmI2YjdkMDFjNDk0YjU3
YTc2NWUyYTU1YjY0YjNmMDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXphdGlvbigpCiB7Ci0gICAgbV9tZWRp
YVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhRWxlbWVudFNlc3Npb24+KCp0aGlzKTsK
KyAgICBtX21lZGlhU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TWVkaWFFbGVtZW50U2Vzc2lvbj4oKnRo
aXMpOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFF
bGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbik7CiAgICAgbV9t
ZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6
UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwpAQCAtMzAyNyw3ICszMDI3LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIGlu
VGltZSwgY29uc3QgTWVkaWFUaW0KIAogICAgIC8vIDUgLSBJZiB0aGUgc2VlayB3YXMgaW4gcmVz
cG9uc2UgdG8gYSBET00gbWV0aG9kIGNhbGwgb3Igc2V0dGluZyBvZiBhbiBJREwgYXR0cmlidXRl
LCB0aGVuIGNvbnRpbnVlCiAgICAgLy8gdGhlIHNjcmlwdC4gVGhlIHJlbWFpbmRlciBvZiB0aGVz
ZSBzdGVwcyBtdXN0IGJlIHJ1biBhc3luY2hyb25vdXNseS4KLSAgICBtX3BlbmRpbmdTZWVrID0g
c3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5j
ZSwgcG9zaXRpdmVUb2xlcmFuY2UpOworICAgIG1fcGVuZGluZ1NlZWsgPSBtYWtlVW5pcXVlPFBl
bmRpbmdTZWVrPihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5j
ZSk7CiAgICAgaWYgKGZyb21ET00pIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
ImVucXVldWluZyBzZWVrIGZyb20gIiwgbm93LCAiIHRvICIsIHRpbWUpOwogICAgICAgICBtX3Nl
ZWtUYXNrUXVldWUuc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vl
a1Rhc2ssIHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAK
aW5kZXggZGQ0ZmEyZDcwZTRmNDNmNDJiODIyMmQzN2Q0NDE4ZjFhMTMxZWQ4Ny4uNTZiNzIwNmFl
M2JlOGYxMGE4ODE0YWU5YWZhYzYyYmZlYjU2MDlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEhUTUxPdXRwdXRF
bGVtZW50OjpzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIERPTVRva2VuTGlz
dCYgSFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IoKQogewogICAgIGlmICghbV90b2tlbnMpCi0g
ICAgICAgIG1fdG9rZW5zID0gc3RkOjptYWtlX3VuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBm
b3JBdHRyKTsKKyAgICAgICAgbV90b2tlbnMgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oKnRo
aXMsIGZvckF0dHIpOwogICAgIHJldHVybiAqbV90b2tlbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGRkYTk0NDlkNTdhZDQy
MDg1ODYyN2RlZDNmZGQ5MTgxMzIxNWZlMmIuLjViOTlkNTU1NTMwNDk3MDkzYzZiY2E5OTU4N2M3
YTJmNzI1NTkwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24oKQogICAgIGlmIChyZW5kZXJlcigpICYmICF1
c2VGYWxsYmFja0NvbnRlbnQoKSkgewogICAgICAgICBpZiAoaXNJbWFnZVR5cGUoKSkgewogICAg
ICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgICAgIG1faW1hZ2VMb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMpOworICAgICAgICAg
ICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhUTUxJbWFnZUxvYWRlcj4oKnRoaXMp
OwogICAgICAgICAgICAgaWYgKG1fbmVlZHNJbWFnZVJlbG9hZCkKICAgICAgICAgICAgICAgICBt
X2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwog
ICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3Vt
bWFyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQu
Y3BwCmluZGV4IDEwYmMwOWZmMDk5Yzg4OGIyMjYyNjkzOTBiOGUxZjhiZTRjZTM5NjcuLmIwNDkz
OWI5YzJkNzI3MDIxMzc5YzVhNGRkMzQwNDdkODEyYWQ5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgU3VtbWFy
eVNsb3RFbGVtZW50IGZpbmFsIDogcHVibGljIFNsb3RBc3NpZ25tZW50IHsKIFJlZjxIVE1MU3Vt
bWFyeUVsZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBSZWY8SFRNTFN1bW1hcnlF
bGVtZW50PiBzdW1tYXJ5ID0gYWRvcHRSZWYoKm5ldyBIVE1MU3VtbWFyeUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKLSAgICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNy
ZWF0ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsK
KyAgICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwg
bWFrZVVuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsKICAgICByZXR1cm4gc3VtbWFyeTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggYTVlNzVh
YWZmNTJkZGY5ZjU3NTQ1YmEwNjdlZWM3ODk4ODhkZDlhYi4uNjdmZjIxMjUyZjFiOGU4MzEwYTFk
N2NiYjIzMmVhOGM3MzkzOGEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkQXR0YWNo
UmVuZGVyZXJzKCkKICAgICB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKICAgICBpZiAoc2hvdWxkRGlz
cGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAg
ICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTEltYWdlTG9hZGVyPigq
dGhpcyk7CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VM
b2FkZXI+KCp0aGlzKTsKICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnQo
KTsKICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAg
ICAgICAgIHJlbmRlcmVyLT5pbWFnZVJlc291cmNlKCkuc2V0Q2FjaGVkSW1hZ2UobV9pbWFnZUxv
YWRlci0+aW1hZ2UoKSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW4KIAogICAgICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAg
ICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKKyAgICAgICAgICAgICAg
ICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAg
ICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91
c0Vycm9yKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVy
ZXIgPSB0aGlzLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Q
dWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdl
ci5jcHAKaW5kZXggN2JlYmM3YTEwY2NiZWQ1M2NmZThjYWY4YTA3Yzc4ZTZjNTc5ZDY0Zi4uYjY2
OGRhMWYzMjE0ZGJmOWI5MTYxZWZhODMyNTZjOTVjYTgyMTFkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFB1YmxpY1VSTE1hbmFnZXI+IFB1YmxpY1VSTE1hbmFn
ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIGF1dG8g
cHVibGljVVJMTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHVibGljVVJMTWFuYWdlcj4oY29u
dGV4dCk7CisgICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0gbWFrZVVuaXF1ZTxQdWJsaWNVUkxN
YW5hZ2VyPihjb250ZXh0KTsKICAgICBwdWJsaWNVUkxNYW5hZ2VyLT5zdXNwZW5kSWZOZWVkZWQo
KTsKICAgICByZXR1cm4gcHVibGljVVJMTWFuYWdlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9W
YWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggOGFmNzNhOGEwMDU0OTgwYWQxNzkwNjk1NmE4NDMy
YTZmOWNkYjE0Yi4uZjVkYWIwZjQyZjJkMDUzZTcwM2M2YzU3MjNjYTE2MDM3MWQxYTJlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTExNSw5ICsxMTUs
OSBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKICAgICBtX21lc3NhZ2UgPSBt
ZXNzYWdlOwogICAgIGlmICghbV9idWJibGUpCi0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUp
OworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9u
TWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKTsKICAgICBlbHNlCi0gICAgICAgIG1fdGltZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlRE9NQW5kU3RhcnRUaW1lcik7CisgICAgICAgIG1fdGltZXIgPSBtYWtlVW5pcXVlPFRpbWVy
PigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7
CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBA
QCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcigpCiAg
ICAgaWYgKG1hZ25pZmljYXRpb24gPD0gMCkKICAgICAgICAgbV90aW1lciA9IG51bGxwdHI7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhp
cywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKTsKKyAgICAgICAgbV90aW1l
ciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1
YmJsZVRyZWUpOwogICAgICAgICBtX3RpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgoNV9zLCAx
X21zICogc3RhdGljX2Nhc3Q8ZG91YmxlPihtX21lc3NhZ2UubGVuZ3RoKCkpICogbWFnbmlmaWNh
dGlvbikpOwogICAgIH0KIH0KQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNz
YWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSgpCiAgICAgfQogCiAgICAgLy8gV2UgbXVzdCBub3Qg
bW9kaWZ5IHRoZSBET00gdHJlZSBpbiB0aGlzIGNvbnRleHQgYnkgdGhlIHNhbWUgcmVhc29uIGFz
IHNldE1lc3NhZ2UoKS4KLSAgICBtX3RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRo
aXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk7CisgICAgbV90aW1lciA9
IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJs
ZVRyZWUpOwogICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCmluZGV4IGIxNjc3ODQ0MjhjM2JmZTllNmYxNmE3Nzg0MGQzZjNiYjk3MDViOTYu
LjUzYzljNTY2MDQyN2M0ODZlMzJhYmMwYzJkNjU0Y2NjNTZjMDI4YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0cnVjdCBEaXNwbGF5TGlzdERyYXdpbmdDb250
ZXh0IHsKIAogICAgIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApCiAgICAgICAgIDogY29udGV4
dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENvbnRleHQpIHsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxp
c3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlz
cGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAsIEFmZmluZVRyYW5zZm9y
bSgpKTsKICAgICAgICAgfSkKICAgICB7CiAgICAgfQpAQCAtMjExOCw3ICsyMTE4LDcgQEAgR3Jh
cGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3aW5nQ29udGV4
dCgpIGNvbnN0CiB7CiAgICAgaWYgKFVOTElLRUxZKG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZykp
IHsKICAgICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRleHQpCi0gICAgICAgICAgICBtX3JlY29y
ZGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQ+
KEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIGNh
bnZhc0Jhc2UoKS5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fcmVjb3JkaW5nQ29udGV4dCA9IG1h
a2VVbmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0U3RhdGUo
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2FudmFzQmFzZSgpLnNpemUoKSkpOwog
ICAgICAgICByZXR1cm4gJm1fcmVjb3JkaW5nQ29udGV4dC0+Y29udGV4dDsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggNjMxMTkxNzU3MGYyZGIyODU5NGNiYjM0OTAyNDY5OTdiNTgzZmJlMC4uY2Q0
NzIxMjYxYjJlMDIyYjU1MjVkZDNkM2NhNTQ2OWY5YzBiM2VhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTEz
NTksNyArMTM1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2RlZmluZSBFTkFCTEVfSUZfUkVRVUVT
VEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgY2FuRW5hYmxlKSBcCiAgICAgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgbmFtZUxpdGVyYWwpKSB7IFwKICAgICAgICAgaWYg
KCF2YXJpYWJsZSkgeyBcCi0gICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gc3Rk
OjptYWtlX3VuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBcCisgICAgICAgICAgICB2YXJp
YWJsZSA9IChjYW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRyOyBc
CiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0cikgXAogICAgICAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1l
KTsgXAogICAgICAgICB9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGUwNmJmOTlkNTkxNTk2Mzk4MGE2MTFjMzJh
ODM5ZTI5N2YxMjgwNDUuLmU1ZmRlNzAzMzc0NTZhMzFlMTU3MWVlMTBmM2ZkMjY0MmRiMDM2Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAjZGVmaW5lIEVO
QUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5hbWVMaXRlcmFsLCBjYW5FbmFibGUp
IFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBuYW1lTGl0ZXJhbCkpIHsg
XAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAgICAgICAgIHZhcmlhYmxlID0gKGNh
bkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKKyAg
ICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBtYWtlVW5pcXVlPHR5cGU+KCp0aGlz
KSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAhPSBudWxscHRyKSBcCiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNp
b24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApAQCAtMTMyLDcgKzEzMiw3IEBAIFdlYkdM
RXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gbnVsbHB0
cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwot
ICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8
RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVy
VGV4dHVyZUxPRCA9IG1ha2VVbmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOwogICAg
ICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9u
KCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU5LDcgKzE1OSw3
IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0g
bnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiX3MpOwot
ICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
R0xEcmF3QnVmZmVycz4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVy
cyA9IG1ha2VVbmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOwogICAgICAgICAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1l
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIFdlYkdMRXh0
ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IG51bGxwdHI7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIl9zKTsKLSAg
ICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlzID0gc3RkOjptYWtlX3VuaXF1ZTxB
TkdMRUluc3RhbmNlZEFycmF5cz4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1fYW5nbGVJbnN0
YW5jZWRBcnJheXMgPSBtYWtlVW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFbmFibGVFeHRlbnNp
b24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CmluZGV4IDNlY2U3ZWViNzQyZmFkYjZmZTE4YjMzZWI1YTYxMzljZWQ0MWJhNTYuLmQxNjZmYjIz
OTA3NmQzNjI2NWQ5NmM2NDVmMDcxODc1YWM4MmJiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC03
OTksOCArNzk5LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXpl
TmV3Q29udGV4dCgpCiAgICAgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBjYW52YXNTaXplLndp
ZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogICAgIG1fY29udGV4dC0+c2Npc3NvcigwLCAw
LCBjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogCi0gICAgbV9jb250
ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xSZW5kZXJp
bmdDb250ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7Ci0gICAgbV9jb250ZXh0LT5zZXRFcnJvck1l
c3NhZ2VDYWxsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9y
TWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENh
bGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrPih0aGlz
KSk7CisgICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhtYWtlVW5pcXVlPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7CiB9CiAKIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBGbGFncygpCkBAIC0xNTc5LDcgKzE1
NzksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2Vi
R0xTaGFkZXIqIHNoYWRlcikKICAgICAgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNr
PiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRDYWxsU3RhY2soSlNFeGVjU3Rh
dGU6OmN1cnJlbnRTdGF0ZSgpKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGVycm9yIDogZ2V0U2hh
ZGVySW5mb0xvZyhzaGFkZXIpLnNwbGl0KCdcbicpKQotICAgICAgICAgICAgY2FudmFzLT5kb2N1
bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJvciwgc3RhY2tUcmFjZS5jb3B5UmVm
KCkpKTsKKyAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZSht
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRl
cmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiAiICsg
ZXJyb3IsIHN0YWNrVHJhY2UuY29weVJlZigpKSk7CiAgICAgfQogfQogCkBAIC01ODA4LDkgKzU4
MDgsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnByaW50VG9Db25zb2xlKE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJgogICAgIC8vIEVycm9yIG1lc3NhZ2VzIGNh
biBvY2N1ciBkdXJpbmcgZnVuY3Rpb24gY2FsbHMsIHNvIHNob3cgc3RhY2sgdHJhY2VzIGZvciB0
aGVtLgogICAgIGlmIChsZXZlbCA9PSBNZXNzYWdlTGV2ZWw6OkVycm9yKSB7CiAgICAgICAgIFJl
ZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSk7Ci0gICAgICAg
IGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBt
ZXNzYWdlLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICAgICAgY29uc29sZU1lc3NhZ2UgPSBt
YWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRl
cmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2UsIFdURk1vdmUoc3RhY2tUcmFj
ZSkpOwogICAgIH0gZWxzZQotICAgICAgICBjb25zb2xlTWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5nLCBN
ZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSk7CisgICAgICAgIGNvbnNvbGVNZXNzYWdl
ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpS
ZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlKTsKIAogICAgIGF1dG8q
IGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKICAgICBpZiAoY2FudmFzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IGU4NTkwY2NjNjk3
MjhhZjM5MzAxZDNhZThkODk4OGY1YzE1YTRiMmEuLmFlZmU0NTdmNGVmZjA0MzY1NzYzY2IyNmY3
MTc4NDYzZTMyZTFkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NT
U1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQ
cmVsb2FkU2Nhbm5lci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIENTU1ByZWxvYWRTY2Fu
bmVyOjplbWl0UnVsZSgpCiAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgVVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGlu
IGZyb20gdGhlIEhUTUxQcmVsb2FkU2Nhbm5lciB2aWEgc2NhbigpOiB3aXRob3V0IGl0IHdlIHdp
bGwgZ2V0IHJlbGF0aXZlIFVSTHMgd3JvbmcuCiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxk
IHRoaXMgYmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGluIHRoZSBwcmVsb2FkIHJlcXVlc3Q/Ci0g
ICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQcmVsb2FkUmVx
dWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlOjpD
U1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVlc3Q6Ok1vZHVsZVNjcmlwdDo6Tm8s
IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOworICAgICAgICAgICAgbV9yZXF1ZXN0cy0+
YXBwZW5kKG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50
VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVTaGVldCwgU3RyaW5nKCksIFByZWxv
YWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcp
KTsKICAgICAgICAgfQogICAgICAgICBtX3N0YXRlID0gSW5pdGlhbDsKICAgICB9IGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJ1bGUsICJjaGFyc2V0IikpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5k
ZXggNTFiYWU0YzIxY2Y5NDBkY2Q4YzZkMzIwYmM0ZGJkNjYyNmJlN2Q5Zi4uOWFjNDQ0ZWYwYTY3
MWY4YTQ3Njk5NTdhZTMyMjJiZDhkMTAwN2Q5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtNTAzLDcgKzUwMyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4gSFRNTENvbnN0
cnVjdGlvblNpdGU6Omluc2VydEhUTUxFCiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBl
bGVtZW50SW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9
IGNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSh0b2tlbiwgJmVs
ZW1lbnRJbnRlcmZhY2UpOwogICAgIGlmIChVTkxJS0VMWShlbGVtZW50SW50ZXJmYWNlKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRh
dGE+KCplbGVtZW50SW50ZXJmYWNlLCB0b2tlbi5uYW1lKCksIFdURk1vdmUodG9rZW4uYXR0cmli
dXRlcygpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRDb25zdHJ1
Y3Rpb25EYXRhPigqZWxlbWVudEludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCBXVEZNb3ZlKHRva2Vu
LmF0dHJpYnV0ZXMoKSkpOwogICAgIGF0dGFjaExhdGVyKGN1cnJlbnROb2RlKCksICplbGVtZW50
KTsKICAgICBtX29wZW5FbGVtZW50cy5wdXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0ZShlbGVtZW50
LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUodG9rZW4pKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cAppbmRleCA0ZmY0ZTJiODc4OGE5MTliZjQyZDE3YWQ5ZmQ2NTFiOWIwM2FkMTliLi5kZDllYTA0
YzZmNTAwYzg2NGI4Yzk0YzE5MzgzNzg3N2FmZmRlNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTUzLDExICs1MywxMSBA
QCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQmIGRv
Y3VtZW50KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3VtZW50KQogICAgICwg
bV9vcHRpb25zKGRvY3VtZW50KQogICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zKQotICAgICwg
bV9zY3JpcHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1MU2NyaXB0UnVubmVyPihkb2N1bWVu
dCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhvc3QmPigqdGhpcykpKQotICAgICwgbV90
cmVlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUcmVlQnVpbGRlcj4oKnRoaXMsIGRvY3Vt
ZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCi0gICAgLCBtX3BhcnNlclNj
aGVkdWxlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQYXJzZXJTY2hlZHVsZXI+KCp0aGlzKSkKKyAg
ICAsIG1fc2NyaXB0UnVubmVyKG1ha2VVbmlxdWU8SFRNTFNjcmlwdFJ1bm5lcj4oZG9jdW1lbnQs
IHN0YXRpY19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0Jj4oKnRoaXMpKSkKKyAgICAsIG1fdHJl
ZUJ1aWxkZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+KCp0aGlzLCBkb2N1bWVudCwgcGFy
c2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQorICAgICwgbV9wYXJzZXJTY2hlZHVsZXIo
bWFrZVVuaXF1ZTxIVE1MUGFyc2VyU2NoZWR1bGVyPigqdGhpcykpCiAgICAgLCBtX3hzc0F1ZGl0
b3JEZWxlZ2F0ZShkb2N1bWVudCkKLSAgICAsIG1fcHJlbG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8
SFRNTFJlc291cmNlUHJlbG9hZGVyPihkb2N1bWVudCkpCisgICAgLCBtX3ByZWxvYWRlcihtYWtl
VW5pcXVlPEhUTUxSZXNvdXJjZVByZWxvYWRlcj4oZG9jdW1lbnQpKQogewogfQogCkBAIC03MCw3
ICs3MCw3IEBAIGlubGluZSBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihE
b2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVuCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIoZnJhZ21lbnQuZG9jdW1lbnQoKSwgcmF3UG9saWN5KQogICAgICwgbV9vcHRpb25z
KGZyYWdtZW50LmRvY3VtZW50KCkpCiAgICAgLCBtX3Rva2VuaXplcihtX29wdGlvbnMpCi0gICAg
LCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhpcywg
ZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9u
cykpCisgICAgLCBtX3RyZWVCdWlsZGVyKG1ha2VVbmlxdWU8SFRNTFRyZWVCdWlsZGVyPigqdGhp
cywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0
aW9ucykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShmcmFnbWVudC5kb2N1bWVudCgpKQog
ewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5o
dG1sI3BhcnNpbmctaHRtbC1mcmFnbWVudHMKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKICAgICBp
ZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CiAgICAgICAgIEFTU0VSVChtX3Rva2VuaXplci5p
c0luRGF0YVN0YXRlKCkpOwogICAgICAgICBpZiAoIW1fcHJlbG9hZFNjYW5uZXIpIHsKLSAgICAg
ICAgICAgIG1fcHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nh
bm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CisgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0gbWFrZVVuaXF1ZTxI
VE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50
KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+
YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOwogICAgICAgICB9CiAgICAgICAgIG1fcHJl
bG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9jdW1lbnQoKSk7CkBAIC0zNzQsNyAr
Mzc0LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChTZWdtZW50ZWRTdHJpbmcm
JiBzb3VyY2UpCiAgICAgICAgIC8vIENoZWNrIHRoZSBkb2N1bWVudC53cml0ZSgpIG91dHB1dCB3
aXRoIGEgc2VwYXJhdGUgcHJlbG9hZCBzY2FubmVyIGFzCiAgICAgICAgIC8vIHRoZSBtYWluIHNj
YW5uZXIgY2FuJ3QgZGVhbCB3aXRoIGluc2VydGlvbnMuCiAgICAgICAgIGlmICghbV9pbnNlcnRp
b25QcmVsb2FkU2Nhbm5lcikKLSAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVu
dCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAg
ICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5u
ZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxl
RmFjdG9yKCkpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0Vu
ZChzb3VyY2UpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5zY2FuKCptX3By
ZWxvYWRlciwgKmRvY3VtZW50KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKaW5kZXggMzBjNWI0NmRmMTAzZGJkZjZmNGI3Y2U0
MDljYzNhYTE2YzU0NjAxMi4uNmVmMTcxMmI5ZDYzYjcxYWNiN2MxNjlmNjJiNDljODJmMzEwNTgx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5j
cHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6Omluc2VydEFib3Zl
KFJlZjxIVE1MU3RhY2tJdGVtPiYmIGl0ZW0sIEVsZW1lbnRSZWNvcmQmIHJlYwogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgKyttX3N0YWNrRGVwdGg7Ci0gICAgICAgIHJlY29yZEFi
b3ZlLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVt
KSwgcmVjb3JkQWJvdmUtPnJlbGVhc2VOZXh0KCkpKTsKKyAgICAgICAgcmVjb3JkQWJvdmUtPnNl
dE5leHQobWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCByZWNvcmRBYm92
ZS0+cmVsZWFzZU5leHQoKSkpOwogICAgICAgICByZWNvcmRBYm92ZS0+bmV4dCgpLT5lbGVtZW50
KCkuYmVnaW5QYXJzaW5nQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUz
Myw3ICs1MzMsNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnB1c2hDb21tb24oUmVmPEhUTUxT
dGFja0l0ZW0+JiYgaXRlbSkKICAgICBBU1NFUlQobV9yb290Tm9kZSk7CiAKICAgICArK21fc3Rh
Y2tEZXB0aDsKLSAgICBtX3RvcCA9IHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVudFJlY29yZD4oV1RG
TW92ZShpdGVtKSwgV1RGTW92ZShtX3RvcCkpOworICAgIG1fdG9wID0gbWFrZVVuaXF1ZTxFbGVt
ZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1fdG9wKSk7CiB9CiAKIHZvaWQgSFRN
TEVsZW1lbnRTdGFjazo6cG9wQ29tbW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDUzYTE3MmQzM2FmY2RhOGZmODhkMzQ0
ZDljMGVmMDkwM2NkZWNjOTIuLjMzZDdiM2JiMDhiNjUyZDBjZDY5YmNlZGYxZjg2MDYzMWFmYWEx
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFRva2VuUHJlbG9hZFNjYW5uZXI6OlN0
YXJ0VGFnU2Nhbm5lciB7CiAgICAgICAgIGlmICghTGlua0xvYWRlcjo6aXNTdXBwb3J0ZWRUeXBl
KHR5cGUudmFsdWUoKSwgbV90eXBlQXR0cmlidXRlKSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlbG9hZFJl
cXVlc3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91cmxUb0xvYWQsIHByZWRpY3RlZEJhc2VV
UkwsIHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0ZSwgbV9tb2R1bGVTY3JpcHQsIG1fcmVm
ZXJyZXJQb2xpY3kpOworICAgICAgICBhdXRvIHJlcXVlc3QgPSBtYWtlVW5pcXVlPFByZWxvYWRS
ZXF1ZXN0Pihpbml0aWF0b3JGb3IobV90YWdJZCksIG1fdXJsVG9Mb2FkLCBwcmVkaWN0ZWRCYXNl
VVJMLCB0eXBlLnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1dGUsIG1fbW9kdWxlU2NyaXB0LCBtX3Jl
ZmVycmVyUG9saWN5KTsKICAgICAgICAgcmVxdWVzdC0+c2V0Q3Jvc3NPcmlnaW5Nb2RlKG1fY3Jv
c3NPcmlnaW5Nb2RlKTsKICAgICAgICAgcmVxdWVzdC0+c2V0Tm9uY2UobV9ub25jZUF0dHJpYnV0
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKaW5kZXggZjcxYjIxZDI3
ODk1ZTU3OGFiNDdmNWNmNTQwMjU4M2UzNjEyMWQwMi4uM2Y3NDZkYzZkNjY3YzQzNzExYjY4ZDA5
YjQyMDJkMjNmZjBjMDg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgK
QEAgLTIwOSw3ICsyMDksNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9DVFlQRSgp
CiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxpemVkKTsKICAgICBtX3R5cGUgPSBE
T0NUWVBFOwotICAgIG1fZG9jdHlwZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPERvY3R5cGVEYXRh
PigpOworICAgIG1fZG9jdHlwZURhdGEgPSBtYWtlVW5pcXVlPERvY3R5cGVEYXRhPigpOwogfQog
CiBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCmluZGV4IGFjNmU3OTQ0MzAw
NzAzNjQyMWViMTZkZjgzYTkwZDNkMjc3MmY4NTYuLjA2MWQ5NTY3Yjc4NGQ5YjBiYWNmM2Y2ZGI5
Y2RlNWE4MDZiMDFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hT
U0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3Iu
Y3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhTU0luZm8+IFhTU0F1ZGl0
b3I6OmZpbHRlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYgcmVxdWUKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGRpZEJsb2NrRW50aXJlUGFnZSA9IG1feHNzUHJv
dGVjdGlvbiA9PSBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb246OkJsb2NrRW5hYmxlZDsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxYU1NJbmZvPihtX2RvY3VtZW50VVJMLCBkaWRCbG9ja0Vu
dGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlvbkhlYWRlcik7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8WFNTSW5mbz4obV9kb2N1bWVudFVSTCwgZGlkQmxvY2tFbnRpcmVQYWdlLCBt
X2RpZFNlbmRWYWxpZFhTU1Byb3RlY3Rpb25IZWFkZXIpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6
OmZpbHRlclN0YXJ0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiByZXF1ZXN0KQpAQCAt
NzEyLDcgKzcxMiw3IEBAIFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4qIFhTU0F1ZGl0b3I6OmRl
Y29kZWRIVFRQQm9keVN1ZmZpeFRyZWUoKQogICAgIGNvbnN0IHVuc2lnbmVkIHN1ZmZpeFRyZWVE
ZXB0aCA9IDU7CiAKICAgICBpZiAoIW1fZGVjb2RlZEhUVFBCb2R5U3VmZml4VHJlZSAmJiBtX2Rl
Y29kZWRIVFRQQm9keS5sZW5ndGgoKSA+PSBtaW5pbXVtTGVuZ3RoRm9yU3VmZml4VHJlZSkKLSAg
ICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0gc3RkOjptYWtlX3VuaXF1ZTxTdWZm
aXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4VHJlZURlcHRo
KTsKKyAgICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0gbWFrZVVuaXF1ZTxTdWZm
aXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQQm9keSwgc3VmZml4VHJlZURlcHRo
KTsKICAgICByZXR1cm4gbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlLmdldCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcAppbmRleCAzYTYzN2RhZWYwMTI0ZTJlNGVkMzM2YjY2Mzc1MmQwMDIyYjViZTAx
Li5kNTY2YmNjNzk0YWE3MjRhYmU2MGEwODBhM2YyY2Y5NTFmNDUzN2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25zdAogT3B0aW9uYWw8RWxlbWVu
dFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpCiB7
CiAgICAgYXV0byBzdHlsZSA9IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigq
c2hhZG93SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0eWxlKTsKLSAg
ICByZXR1cm4gRWxlbWVudFN0eWxlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU3R5bGU+KFdURk1v
dmUoc3R5bGUpKSk7CisgICAgcmV0dXJuIEVsZW1lbnRTdHlsZShtYWtlVW5pcXVlPFJlbmRlclN0
eWxlPihXVEZNb3ZlKHN0eWxlKSkpOwogfQogCiAvLyBNQVJLOiBUZXh0Q29udHJvbFBsYWNlaG9s
ZGVyRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRH
ZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2Vu
ZXJpY1RleHRUcmFjay5jcHAKaW5kZXggZTQwMjAwYTlhN2EyMjVkZGZkODc0NGQ4YzkzYmRlNjkw
OTY0NzAwOS4uNDkzNGQ3MjljMTk4ZDA4MDU5YWM4YzlmMGIxNzRhOTVlNzZmNzJmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2su
Y3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYgY3VlKQogV2ViVlRUUGFyc2VyJiBJbmJh
bmRHZW5lcmljVGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAgIGlmICghbV93ZWJWVFRQYXJzZXIp
Ci0gICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWVFRQYXJzZXI+
KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNlciA9IG1ha2VVbmlxdWU8V2ViVlRUUGFy
c2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRUUGFyc2VyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKaW5k
ZXggODU1YmIyMzkyN2ViMTBhMzVhNTlkMTJiZTBkMjM1YTczY2FiYzEwZS4uMTBmYWExMmY5MGI0
NjBiNTA1NmYyNTY3Y2MyZDk4MTI3ZDhmYWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBJ
bmJhbmRXZWJWVFRUZXh0VHJhY2s6On5JbmJhbmRXZWJWVFRUZXh0VHJhY2soKSA9IGRlZmF1bHQ7
CiBXZWJWVFRQYXJzZXImIEluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKCkKIHsKICAgICBp
ZiAoIW1fd2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dlYlZUVFBhcnNlciA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlz
KSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgbV93ZWJWVFRQYXJzZXIgPSBt
YWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4o
dGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICptX3dlYlZUVFBh
cnNlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJs
ZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcAppbmRleCA4ZjI5YzdmMTY3OWEwZmEyOTE4ZGVjZmE1MTNlMmQ4MDI3MWEzNWUyLi43
YTFlMWJjNDY5MWIyMTE2ODhjM2NmNWRhNjE5YWM2MWRiZDZmZTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtODQsNyArODQsNyBA
QCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCgpCiAgICAgLy8gNC4gRG93
bmxvYWQ6IElmIFVSTCBpcyBub3QgdGhlIGVtcHR5IHN0cmluZywgcGVyZm9ybSBhIHBvdGVudGlh
bGx5IENPUlMtZW5hYmxlZCBmZXRjaCBvZiBVUkwsIHdpdGggdGhlCiAgICAgLy8gbW9kZSBiZWlu
ZyB0aGUgc3RhdGUgb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBjcm9zc29yaWdpbiBjb250ZW50IGF0
dHJpYnV0ZSwgdGhlIG9yaWdpbiBiZWluZyB0aGUKICAgICAvLyBvcmlnaW4gb2YgdGhlIG1lZGlh
IGVsZW1lbnQncyBEb2N1bWVudCwgYW5kIHRoZSBkZWZhdWx0IG9yaWdpbiBiZWhhdmlvdXIgc2V0
IHRvIGZhaWwuCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRUcmFja0xvYWRl
cj4oc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2Fz
dDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7
CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8
VGV4dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1bWVudCgpKSk7CiAgICAgaWYgKCFtX2xv
YWRlci0+bG9hZChtX3VybCwgKm1fdHJhY2tFbGVtZW50KSkKICAgICAgICAgbV90cmFja0VsZW1l
bnQtPmRpZENvbXBsZXRlTG9hZChIVE1MVHJhY2tFbGVtZW50OjpGYWlsdXJlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKaW5kZXggMDMx
MDgwZTFhYjY2ZDMyY2M5YzA3MTc4ZjAyZjkzNTIzYmM3MDZiMC4uOTAyOWI5MmQ4YjgzZjJkN2Jl
ZDZkOGU1NDU3NmMwYTE2OGNhNTI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPENvbW1hbmRMaW5l
QVBJSG9zdD4gQ29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGUoKQogfQogCiBDb21tYW5kTGluZUFQ
SUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCgpCi0gICAgOiBtX2luc3BlY3RlZE9iamVjdChzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpKQorICAgIDogbV9pbnNwZWN0ZWRPYmpl
Y3QobWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKSkKIHsKIH0KIApAQCAtMTk2LDcgKzE5
Niw3IEBAIEpTVmFsdWUgQ29tbWFuZExpbmVBUElIb3N0Ojp3cmFwcGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6
Y2xlYXJBbGxXcmFwcGVycygpCiB7CiAgICAgbV93cmFwcGVycy5jbGVhckFsbFdyYXBwZXJzKCk7
Ci0gICAgbV9pbnNwZWN0ZWRPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlT2Jq
ZWN0PigpOworICAgIG1faW5zcGVjdGVkT2JqZWN0ID0gbWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9i
amVjdD4oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRWRpdG9yLmNwcAppbmRleCA2YzMxZTQ5OGU0MzRkMzAwYjBmMWM2ZWFiODQzNDY3NzZj
ZjBhMmZjLi44Mzg5MDhkYzkzNmVmYTZiYTI2Yzc5MTY3MTQ0ZGI3ZGU5ZTJhZTI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtODksNyArODksNyBAQCBjbGFzcyBE
T01FZGl0b3I6Okluc2VydEJlZm9yZUFjdGlvbiBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0
b3J5OjpBY3Rpb24gewogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBlcmZvcm0oKSBmaW5hbAogICAg
IHsKICAgICAgICAgaWYgKG1fbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBtX3Jl
bW92ZUNoaWxkQWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4oKm1f
bm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOworICAgICAgICAgICAgbV9yZW1vdmVDaGlsZEFj
dGlvbiA9IG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KCptX25vZGUtPnBhcmVudE5vZGUo
KSwgbV9ub2RlKTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9yZW1vdmVDaGlsZEFjdGlv
bi0+cGVyZm9ybSgpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKQEAgLTM4NSwy
NyArMzg1LDI3IEBAIERPTUVkaXRvcjo6fkRPTUVkaXRvcigpID0gZGVmYXVsdDsKIAogRXhjZXB0
aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRCZWZvcmUoTm9kZSYgcGFyZW50Tm9kZSwgUmVm
PE5vZGU+JiYgbm9kZSwgTm9kZSogYW5jaG9yTm9kZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5
LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUs
IFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZv
cm0obWFrZVVuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobm9k
ZSksIGFuY2hvck5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpyZW1v
dmVDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBOb2RlJiBub2RlKQogewotICAgIHJldHVybiBtX2hp
c3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPihwYXJlbnRO
b2RlLCBub2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8UmVt
b3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9p
ZD4gRE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVy
Zm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxlbWVudCwgbmFtZSwg
dmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRBdHRy
aWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IERPTUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3Vu
aXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKKyAgICByZXR1cm4g
bV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1l
bnQsIG5hbWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRPdXRlckhU
TUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiYgbmV3Tm9kZSkKIHsKLSAg
ICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2Rl
LCBodG1sKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VVbmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9u
Pihub2RlLCBodG1sKTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwogICAgIGF1dG8g
cmVzdWx0ID0gbV9oaXN0b3J5LnBlcmZvcm0oV1RGTW92ZShhY3Rpb24pKTsKICAgICBpZiAoIXJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTQxNSwyMiArNDE1LDIyIEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRt
bCwgTm9kZSomCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6aW5zZXJ0QWRqYWNlbnRI
VE1MKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgd2hlcmUsIGNvbnN0IFN0cmluZyYg
aHRtbCkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJ
bnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdoZXJlLCBodG1sKSk7CisgICAgcmV0
dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8SW5zZXJ0QWRqYWNlbnRIVE1MQWN0aW9u
PihlbGVtZW50LCB3aGVyZSwgaHRtbCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBET01FZGl0
b3I6OnJlcGxhY2VXaG9sZVRleHQoVGV4dCYgdGV4dE5vZGUsIGNvbnN0IFN0cmluZyYgdGV4dCkK
IHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNl
V2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCkpOworICAgIHJldHVybiBtX2hpc3Rvcnku
cGVyZm9ybShtYWtlVW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0
KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKE5vZGUm
IHBhcmVudE5vZGUsIFJlZjxOb2RlPiYmIG5ld05vZGUsIE5vZGUmIG9sZE5vZGUpCiB7Ci0gICAg
cmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZUNoaWxkTm9k
ZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdOb2RlKSwgb2xkTm9kZSkpOworICAgIHJl
dHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+
KHBhcmVudE5vZGUsIFdURk1vdmUobmV3Tm9kZSksIG9sZE5vZGUpKTsKIH0KIAogRXhjZXB0aW9u
T3I8dm9pZD4gRE9NRWRpdG9yOjpzZXROb2RlVmFsdWUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1
ZTxTZXROb2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7CisgICAgcmV0dXJuIG1faGlzdG9y
eS5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSkpOwog
fQogCiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUVycm9yU3RyaW5nKEV4Y2VwdGlvbk9yPHZvaWQ+JiYg
cmVzdWx0LCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IGNjNWUxMjNiNTQxYzlmMGQ0ZGY0YmE4ZTgy
NzVmNTM1MmRkOWE5ZmYuLmYyZTU4NmZlNDMwYjhiY2U4MjFiZDdlMjdmM2VmN2ZjMjVhOTczNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC00
MDIsNyArNDAyLDcgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0Y2hTdXBwb3J0OjpE
aWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUmIG5vZGUsIFVudXNlZE5v
ZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IHN0ZDo6bWFrZV91
bmlxdWU8RGlnZXN0PigpOworICAgIGF1dG8gZGlnZXN0ID0gbWFrZVVuaXF1ZTxEaWdlc3Q+KCk7
CiAgICAgZGlnZXN0LT5ub2RlID0gJm5vZGU7CiAgICAgU0hBMSBzaGExOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNTIwMzcw
NmI1M2IzMmIwYmE0ZjBlZDRkNGJhNDAwYjZjNzliNWUxNS4uNjNmZjNhYjYyM2E0NDZjZDYyMGVl
NDdlMzkyMDU1Y2VhNTFhODc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtOTMsMTAgKzkzLDEwIEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIo
UGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCiAgICAgOiBtX2lu
c3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50czo6Y3JlYXRlKCp0aGlzKSkKLSAg
ICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCisg
ICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5pcXVlPFdlYkluamVjdGVkU2NyaXB0
TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQogICAgICwg
bV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tl
bmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5j
b3B5UmVmKCkpKQotICAgICwgbV9vdmVybGF5KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yT3Zl
cmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAsIG1fb3ZlcmxheShtYWtlVW5pcXVl
PEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNsaWVudCkpCiAgICAgLCBtX2V4ZWN1
dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1Nl
cnZlcihwYWdlKQogICAgICwgbV9wYWdlKHBhZ2UpCkBAIC0xMDYsNyArMTA2LDcgQEAgSW5zcGVj
dG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlJiBwYWdlLCBJbnNwZWN0b3JD
bGllbnQqIGluc3BlY3RvckMKIAogICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250
ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNv
bnNvbGVBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVu
aXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIH0KQEAgLTE1MywzNyArMTUzLDM3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAgICAgZW5z
dXJlSW5zcGVjdG9yQWdlbnQoKTsKICAgICBlbnN1cmVQYWdlQWdlbnQoKTsKIAotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFn
ZUNvbnRleHQpKTsKIAotICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFnZURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnQg
PSBtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgYXV0byBk
ZWJ1Z2dlckFnZW50UHRyID0gZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBl
bmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCkp
OworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VD
b250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQ1NTQWdl
bnQ+KHBhZ2VDb250ZXh0KSk7CiAgICAgZW5zdXJlRE9NQWdlbnQoKTsKLSAgICBtX2FnZW50cy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29u
dGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7
Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOwor
ICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2Fn
ZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+KHBhZ2VDb250
ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VB
Z2VudD4ocGFnZUNvbnRleHQpKTsKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBt
X2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4o
cGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRpZgogCi0gICAgYXV0byBzY3JpcHRQ
cm9maWxlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxl
ckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCk7CiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZN
b3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIpKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9VU0FH
RSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDUFVQcm9m
aWxlckFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3Rvck1lbW9yeUFnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+
KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VBdWRpdEFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNhbnZhc0FnZW50PihwYWdlQ29u
dGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8UGFnZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFr
ZVVuaXF1ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDYW52YXNBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBt
X2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFnZW50PihwYWdlQ29u
dGV4dCkpOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKICAgICAgICAgY29tbWFuZExpbmVB
UElIb3N0LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5jb3B5UmVmKCkpOwpAQCAtNDIxLDcg
KzQyMSw3IEBAIEluc3BlY3RvckFnZW50JiBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNw
ZWN0b3JBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7CiAgICAgICAgIGF1
dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gaW5zcGVj
dG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7
CisgICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckFnZW50
PihwYWdlQ29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2Vu
dC5nZXQoKTsKICAgICAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JBZ2Vu
dChtX2luc3BlY3RvckFnZW50KTsKICAgICAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5z
cGVjdG9yQWdlbnQpKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBJbnNwZWN0b3JET01BZ2VudCYgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0
b3JET01BZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4
dCgpOwotICAgICAgICBhdXRvIGRvbUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JE
T01BZ2VudD4ocGFnZUNvbnRleHQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgICAgIGF1dG8gZG9t
QWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckRPTUFnZW50PihwYWdlQ29udGV4dCwgbV9vdmVy
bGF5LmdldCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JET01BZ2VudCA9IGRvbUFnZW50LmdldCgp
OwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkb21BZ2VudCkpOwogICAgIH0KQEAg
LTQ0NCw3ICs0NDQsNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQmIEluc3BlY3RvckNvbnRyb2xsZXI6
OmVuc3VyZVBhZ2VBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2VBZ2VudCkgewog
ICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBh
dXRvIHBhZ2VBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdl
Q29udGV4dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7CisgICAgICAgIGF1
dG8gcGFnZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VDb250ZXh0
LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAgICAgbV9pbnNwZWN0
b3JQYWdlQWdlbnQgPSBwYWdlQWdlbnQuZ2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChX
VEZNb3ZlKHBhZ2VBZ2VudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JIaXN0b3J5LmNwcAppbmRleCAwMGQ1ZjE4NTJjZWJhMjcwYzNhZjgxYzEzMjA5MDA1
ZGE3YjExOGE4Li5jODEwM2RkN2RiYjgzMjBlYWIyZTZhZDVlMzJjMmQ1MmQ3MmIwNjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oc3Rk
Ojp1bmlxdWVfcHRyPEFjdGlvbj4gYWN0aW9uKQogCiB2b2lkIEluc3BlY3Rvckhpc3Rvcnk6Om1h
cmtVbmRvYWJsZVN0YXRlKCkKIHsKLSAgICBwZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8VW5kb2Fi
bGVTdGF0ZU1hcms+KCkpOworICAgIHBlcmZvcm0obWFrZVVuaXF1ZTxVbmRvYWJsZVN0YXRlTWFy
az4oKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rvckhpc3Rvcnk6OnVuZG8oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmlu
ZGV4IDE0OTVmMzllMmE0NWUzYzcyYTk2MTRhZmY1NzllNjRkZGY1NWMwYjUuLmRiZTU1NTNmMDEy
MTczNGE5NjU5MTM4NDZhYWQ0NmJmMjc3OTczZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IFBhcnNlZFN0eWxlU2hlZXQ6OnNldFNvdXJjZURhdGEoc3RkOjp1bmlxdWVfcHRyPFJ1bGVTb3Vy
Y2VEYXRhTGlzdD4gc291cmNlRAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zb3Vy
Y2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CisgICAgbV9z
b3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAKICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiB0byByZXRhaW4gdGhlIG9yaWdpbmFs
IGZsYXQgc291cmNlRGF0YSBzdHJ1Y3R1cmUKICAgICAvLyBjb250YWluaW5nIG9ubHkgc3R5bGUg
cnVsZXMsIGV2ZW4gdGhvdWdoIENTU1BhcnNlciBub3cgcHJvdmlkZXMgdGhlIGZ1bGwgcnVsZSBz
b3VyY2UgZGF0YSB0cmVlLgpAQCAtMTMyMCw3ICsxMzIwLDcgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
YXV0byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKLSAgICBh
dXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0
YUxpc3Q+KCk7CisgICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9IG1ha2VVbmlxdWU8UnVs
ZVNvdXJjZURhdGFMaXN0PigpOwogICAgIAogICAgIENTU1BhcnNlckNvbnRleHQgY29udGV4dChw
YXJzZXJDb250ZXh0Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgp
KSk7CiAgICAgU3R5bGVTaGVldEhhbmRsZXIgaGFuZGxlcihtX3BhcnNlZFN0eWxlU2hlZXQtPnRl
eHQoKSwgbV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpLCBydWxlU291cmNlRGF0YVJl
c3VsdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAppbmRleCBkM2I3NTlmMjljY2YxYWUxODAyODBkNWUxNzM2NzBkMjljNGY4
Y2MxLi5mZDdjYWQzMDc2N2U3NzViMTY3NWVjNDU0ZWY3YTA4YmIwMzZkNThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTEz
Niw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZwogewogICAgIGVuc3VyZU5vRGF0
YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0byByZXNvdXJjZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAgYXV0
byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2Fk
ZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5cGUpOwogICAgIG1fcmVxdWVzdElk
VG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RGTW92ZShyZXNvdXJjZURhdGEpKTsK
IH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJj
ZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZwogewogICAgIGVu
c3VyZU5vRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0byByZXNvdXJjZURh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7
CisgICAgYXV0byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVz
dElkLCBsb2FkZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRDYWNoZWRSZXNvdXJjZSgmY2Fj
aGVkUmVzb3VyY2UpOwogICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVl
c3RJZCwgV1RGTW92ZShyZXNvdXJjZURhdGEpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA0MzUxZTg3
MmE5ZTVhMzY0NzI5ZjViNGZiMjYyMTZjNzMzMDJjOGRkLi4zNjRhZWE3ZDRiNWQ5MTE3OTMyNzVk
NjQ2ZjI5NWU2N2JmMGVlZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3Bl
KQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHM6OmNyZWF0
ZSgqdGhpcykpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVl
PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9zdDo6
Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIobWFrZVVuaXF1ZTxXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0
ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQog
ICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1fZnJv
bnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZXhlY3V0aW9uU3RvcHdhdGNoKFN0b3B3
YXRjaDo6Y3JlYXRlKCkpCkBAIC02OSw3ICs2OSw3IEBAIFdvcmtlckluc3BlY3RvckNvbnRyb2xs
ZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
CiAKICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJBZ2VudENvbnRleHQoKTsKIAotICAg
IGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+
KHdvcmtlckNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxXb3Jr
ZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMu
YXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9p
ZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fZXhl
Y3V0aW9uU3RvcHdhdGNoLT5yZXNldCgpOwogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5zdGFy
dCgpOwogCi0gICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2Vy
VG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2JhbFNjb3BlKTsKKyAgICBtX2Zvcndh
cmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1BhZ2VGcm9udGVuZENoYW5uZWw+KG1f
d29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVu
ZCgqbV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdldCgpLCAmbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKSk7CiB9CkBAIC0xNjQsMTggKzE2NCwxOCBAQCB2b2lkIFdvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogCiAgICAgYXV0byB3b3JrZXJDb250ZXh0
ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKKyAgICBtX2FnZW50
cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPihtX3dvcmtlckdsb2JhbFNjb3BlKSkgewotICAgICAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsK
LSAgICAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyTmV0d29ya0Fn
ZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVl
PFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgICAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKICAg
ICB9CiAjZW5kaWYKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdlYkhl
YXBBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJBdWRpdEFnZW50Pih3b3JrZXJDb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V2ViSGVhcEFnZW50Pih3b3JrZXJD
b250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8V29ya2VyRGVidWdnZXJB
Z2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFdv
cmtlckF1ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAogICAgIGlmIChhdXRvJiBjb21tYW5k
TGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExpbmVBUElIb3N0
KCkpCiAgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+aW5pdChtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBh
OGQzYzg5OWMzMjgwYTI4ZTY3MzJjZjg4YWI4NGQwMDBkNDVlZDJkLi5mZGYwNDRjNTc5YjM2OGMz
MjA1MWI2NWRjNDQwZTM4N2Y2MDE4ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
IkFwcGxpY2F0aW9uQ2FjaGUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29u
dGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29u
dGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggY2Y5
NGNhODA5NmZmNTcxZDc0ZDc3M2IxZjAwMjc1MDU0YzBjZTFmOS4uMTE2MjRlMjQwOTQ2NGZjMWUx
ZTY1YTY5OThkYmQxYjA2ODJmMGIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNQVVBy
b2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYg
Y29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ1BVUHJvZmlsZXIiX3MsIGNvbnRl
eHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
cjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNQVVBy
b2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpDUFVQcm9maWxlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCmluZGV4IDRiNjk5NDVlYzcwNjdmOTY0M2U0ODA3MzAzNDg0MjY4NmQ2MTlmYjguLjQ0ZTlj
NWFiZWI0Yzk2NmFiYWVhOTQ0YTQwZDVlMDNkNDcyZDExZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC0yOTcs
NyArMjk3LDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1
bGUoQ1NTUnVsZSYgcnVsZSkKIAogSW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50
KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ1NT
Il9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1
ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihDU1NCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ewogfQpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxl
U2hlZXRUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCkt
PnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVj
dG9yU3R5bGVTaGVldCwgdGV4dCkpOworICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdlbnQtPmhpc3Rv
cnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0
b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhyZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKIH0KQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYmplYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZXJmb3Jt
UmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNl
dFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkp
OworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0o
bWFrZVVuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBv
dW5kSWQsIHRleHQpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBl
cmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjcw
LDcgKzY3MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJm
b3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHls
ZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9
IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRSdWxlU2VsZWN0b3JB
Y3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7CiAgICAg
aWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcg
PSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBzdHlsZVNoZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhY3Rp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQs
IHNlbGVjdG9yKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VVbmlxdWU8QWRkUnVsZUFjdGlvbj4o
aW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOwogICAgIGF1dG8mIHJhd0FjdGlvbiA9ICph
Y3Rpb247CiAgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVy
Zm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDliZTA2MTE5ZmIzMjE5NzAwNzI5NzIyZDgzNmE4
MTZiMjVmMWMwMTUuLjBlNTBjNzViYTQ4NzUxNTU2ZTQxMmRjYjk3YWQxOTY2OTY1YTk5OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0b3JDYW52YXNBZ2VudChQYWdlQWdl
bnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDYW52YXMiX3Ms
IGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVy
KSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDYW52
YXNGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNhbnZhc0JhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1faW5zcGVj
dGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmIGNhbnZhc1JlbmQKICAgICBpZiAoIWluc3BlY3RvckNhbnZhcy0+Y3VycmVudEZyYW1l
SGFzRGF0YSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0g
aW5zcGVjdG9yQ2FudmFzLT5jb250ZXh0KCkuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkgewogICAgICAgICAgICAgYXV0byYgcXVldWUgPSBNaWNyb3Rhc2tRdWV1ZTo6bWFp
blRocmVhZFF1ZXVlKCk7Ci0gICAgICAgICAgICBxdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUsICpzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0gaW5zcGVjdG9yQ2FudmFzLmNvcHlS
ZWYoKV0geworICAgICAgICAgICAgcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2Fs
bGJhY2tNaWNyb3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgWyYsIHByb3Rl
Y3RlZEluc3BlY3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZhcy5jb3B5UmVmKCldIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9IHByb3RlY3RlZEluc3BlY3RvckNh
bnZhcy0+Y2FudmFzRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXNF
bGVtZW50LT5pc0Rlc2NlbmRhbnRPZihjYW52YXNFbGVtZW50LT5kb2N1bWVudCgpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNmMxOTZlMGNjNjgyYjQ0
MjU2YzdkZGFhZTA5MGFhMGFhZDU1MzE3ZC4uZjBhMjhjMTMzMWM1YmIzMDg4ZDUzZTcyNDNkYmFm
NGVlYjYzZTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBTdHJpbmcgSW5zcGVj
dG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoRXhjZXB0aW9uJiYgZXhjZXB0aW9uKQogSW5zcGVj
dG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQs
IEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRP
TSJfcywgY29udGV4dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAs
IG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQpAQCAt
MzAxLDggKzMwMSw4IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+SW5zcGVjdG9yRE9NQWdlbnQoKQog
CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQog
ewotICAgIG1faGlzdG9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsK
LSAgICBtX2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPigqbV9oaXN0b3J5
KTsKKyAgICBtX2hpc3RvcnkgPSBtYWtlVW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCk7CisgICAg
bV9kb21FZGl0b3IgPSBtYWtlVW5pcXVlPERPTUVkaXRvcj4oKm1faGlzdG9yeSk7CiAKICAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9NQWdlbnQodGhpcyk7CiAgICAgbV9k
b2N1bWVudCA9IG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwpAQCAtNjUz
LDcgKzY1Myw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVu
ZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICBOb2RlKiBwYXJlbnQgPSBpbm5lclBhcmVudE5v
ZGUobm9kZSk7CiAgICAgICAgIGlmICghcGFyZW50KSB7CiAgICAgICAgICAgICAvLyBOb2RlIGJl
aW5nIHB1c2hlZCBpcyBkZXRhY2hlZCAtPiBwdXNoIHN1YnRyZWUgcm9vdC4KLSAgICAgICAgICAg
IGF1dG8gbmV3TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKKyAgICAgICAg
ICAgIGF1dG8gbmV3TWFwID0gbWFrZVVuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKICAgICAgICAgICAg
IGRhbmdsaW5nTWFwID0gbmV3TWFwLmdldCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05vZGVU
b0lkTWFwcy5hcHBlbmQobmV3TWFwLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBhdXRvIGNoaWxk
cmVuID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+OjpjcmVh
dGUoKTsKQEAgLTExNzcsNyArMTE3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25m
aWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0g
c3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgYXV0byBoaWdobGlnaHRD
b25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICBib29sIHNob3dJbmZv
ID0gZmFsc2U7IC8vIERlZmF1bHQ6IGZhbHNlIChkbyBub3Qgc2hvdyBhIHRvb2x0aXApLgogICAg
IGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbigic2hvd0luZm8iLCBzaG93SW5m
byk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHNob3dJbmZvOwpAQCAtMTE5Niwx
MyArMTE5NiwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJs
ZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYQogCiB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9i
amVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0g
ICAgYXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgYXV0byBxdWFkID0gbWFrZVVuaXF1ZTxGbG9hdFF1YWQ+
KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAgICAgaW5uZXJIaWdobGlnaHRRdWFk
KFdURk1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYgcXVhZEFycmF5LCBjb25zdCBKU09OOjpP
YmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9v
bCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlx
dWU8RmxvYXRRdWFkPigpOworICAgIGF1dG8gcXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigp
OwogICAgIGlmICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVhZC5nZXQoKSkpIHsKICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBRdWFkIGZvcm1hdCJfczsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVh
ZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OkFycmEKIAogdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1
YWQ+IHF1YWQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCog
b3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0
byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsK
KyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigp
OwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAg
IGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xv
cik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT51c2VQYWdlQ29vcmRpbmF0ZXMgPSB1c2VQYWdlQ29v
cmRpbmF0ZXMgPyAqdXNlUGFnZUNvb3JkaW5hdGVzIDogZmFsc2U7CkBAIC0xMzE2LDcgKzEzMTYs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
ZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0g
c3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CisgICAgICAgIGF1dG8gaGlnaGxp
Z2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgICAgIGhpZ2hs
aWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlwcyBmb3Ig
ZnJhbWVzLgogICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNv
bG9yKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29s
b3Iob3V0bGluZUNvbG9yKTsKQEAgLTEzOTgsNyArMTM5OCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkKQogICAgIG1faW5zcGVjdGVkTm9kZSA9IG5vZGU7CiAKICAgICBpZiAoYXV0byYgY29tbWFu
ZExpbmVBUElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJj4obV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIpLmNvbW1hbmRMaW5lQVBJSG9zdCgpKQotICAgICAgICBjb21t
YW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RhYmxlTm9kZT4obm9kZSkpOworICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3Bl
Y3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOwogCiAgICAgbV9z
dXBwcmVzc0V2ZW50TGlzdGVuZXJDaGFuZ2VkRXZlbnQgPSBmYWxzZTsKIH0KQEAgLTIzMTQsNyAr
MjMxNCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIo
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrKQotICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKKyAgICAg
ICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IG1ha2VVbmlxdWU8UmV2YWxpZGF0ZVN0eWxl
QXR0cmlidXRlVGFzaz4odGhpcyk7CiAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzay0+c2No
ZWR1bGVGb3IoJmVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggZTk3
MWE5OWY3MDUyNGQ4MzE4MWFlNzE1ZDgyNjU4ODExZmUwODgwOC4uODFmMTRkYzE3YmZhMDQ3NDdl
M2QyM2U0NTNmNWU0YWY4ZDA5ZmQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtNTYs
NyArNTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET01TdG9yYWdlIl9zLCBjb250ZXh0KQot
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRP
TVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTVN0b3JhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3Jl
YXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IGIz
N2E1NjBjZTgwNzY4YzY2NDQwODUxNWZiMDU1MTI2MTY1YmVkODIuLjM1OGE4NTY1MTJlYTRkNzE5
NjMzMmEyMDY5OTBkZTMyNTAwNDEwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtMjE3LDcg
KzIxNyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGlkT3BlbkRhdGFiYXNlKERh
dGFiYXNlJiBkYXRhYmFzZSkKIAogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6SW5zcGVjdG9yRGF0
YWJhc2VBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2Vu
dEJhc2UoIkRhdGFiYXNlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNlRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRleCBlMWUwODJlNDFhZDJkNTI0ZjU3
ZWYxMDY0MDI4ODc2MTE1NjgyNGI5Li5iNTk4MmNlZTM3ZTM3NDQ3MDUzOTQ2YmNmNGM0MzRiNDMx
ZWY5YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtNDgsNyArNDgsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJMYXllclRyZWUiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TGF5ZXJUcmVlRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6
OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDI5Yzc2ZDBjN2ZlYTkyMmMy
YTNkOTk0MTRjOTg2ZWE4ZDI4ZDc3YjUuLjI4MzI5NTFmNTM4MDEyMWZhNDUyYmZhOGQ0NzBmNGQz
NWU3ODliMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3Rvck1lbW9yeUFnZW50OjpJbnNwZWN0b3JNZW1vcnlB
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNl
KCJNZW1vcnkiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5z
cGVjdG9yOjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIp
KQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok1lbW9yeUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKaW5kZXggM2U0ZTk2ZWIyMzFhMDU0YjIxMjEyNDdiYzJjYjA5MTY1ZjAy
NjViMy4uNWQwODE2MzgwY2RjNjZjN2Q3OTYwYzEyZDM0OGEwZmJmM2Y3YjExOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgY2xhc3MgSW5zcGVjdG9yVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKIAog
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQoV2ViQWdlbnRDb250
ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJOZXR3b3JrIl9zLCBjb250
ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQor
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRl
KGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFnZXIpCi0gICAgLCBtX3Jlc291cmNl
c0RhdGEoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKKyAgICAsIG1f
cmVzb3VyY2VzRGF0YShtYWtlVW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggMzI5ZTFiMGM1YWQ5MmZiNDUxZGYxNzY3MzNhZTJhZTM1OGZiNDkz
Ny4uYzY0MWE2YTA0ODQxOTMyNjhlMjllOTBmZjAxMjZhYjkxMWM5MzBkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtMzMzLDcgKzMzMyw3IEBAIERvY3VtZW50TG9hZGVyKiBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAKIEluc3BlY3Rv
clBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQs
IEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKCJQYWdlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNo
ZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlBh
Z2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDNhMzYxZTkxZTZmMmRl
YjAwNDJlMThhN2M2NGM3YjUxNmY5YjgwYzUuLjMwZDg2Yzc0NjNjNDdmNWIzYWQyYjM4Y2Y1ZGUy
NDlkNDRlYjlhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtODcsNyArODcsNyBAQCBzdGF0
aWMgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKIAogSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUaW1lbGluZSJfcywgY29udGV4dCkKLSAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpUaW1lbGluZUZyb250
ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5k
RGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6VGltZWxpbmVGcm9udGVuZERpc3BhdGNo
ZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJ
bnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tl
bmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3Bl
Y3RlZFBhZ2UpCiB7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiAgICAgLy8g
RklYTUU6IEFic3RyYWN0IGF3YXkgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBvbmNlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3NDggaXMgZml4ZWQuCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBtX2ZyYW1lU3RhcnRPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6
OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lQmVnaW4pLCBbdGhpc10oKSB7
CisgICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4o
c3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3Jk
ZXJzOjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkgewogICAgICAgICBpZiAoIW1fdHJh
Y2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkK
ICAgICAgICAgbV9ydW5Mb29wTmVzdGluZ0xldmVsKys7CiAgICAgfSk7CiAKLSAgICBtX2ZyYW1l
U3RvcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19j
YXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6SW5z
cGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7CisgICAgbV9mcmFtZVN0b3BPYnNlcnZlciA9IG1h
a2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2Jz
ZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZyYW1lRW5kKSwgW3RoaXNd
KCkgewogICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1
Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI4MCw3ICsy
ODAsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAgICAgICAgICAgICAgIGlmIChXZWJD
b25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25z
b2xlQWdlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVt
IHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwogICAgICAgICAgICAgICAgICAgICBT
dHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVkIFByb2ZpbGUgYWxyZWFk
eSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBhbHJlYWR5
IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
d2FybmluZykpOworICAgICAgICAgICAgICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VU
b0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2Fybmlu
ZykpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpz
dG9wRnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICBp
ZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMu
d2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0
aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0
aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9m
aWxlIFwiIiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgICAgICBjb25zb2xlQWdl
bnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
Zywgd2FybmluZykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCA5MTYxZDg0M2Nk
MzhlNGQ5NjYxMjZhY2RkMzZlODNkZDE4ZjUxMDAyLi4xZTM5OGVkZDFhOWVhM2VmMjZiZTA5ZWMw
M2Q2YzZjMmNkMzk4ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6SW5zcGVjdG9y
V29ya2VyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFn
ZW50QmFzZSgiV29ya2VyIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpXb3JrZXJCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9wYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCAyZWVkMWNl
NjBiMzAyMmFkOTgyNGZhNjI4YTM1ZGRjNTQ0NDk2MGQ5Li5jMjA5NGI5OTJkMzU0MTYwZjE3ZWUy
OGY2NDEwYTc5M2RjZGU5ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgV2ViQ29u
c29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkg
ewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBsb2FkIHJl
c291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3RhdHVzIG9mICIsIHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksICIgKCIsIHJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCksICcpJyk7
Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxw
dHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFr
ZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5
cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiAgICAgfQogfQogCkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNp
Z25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBSZXNvCiAgICAgICAgIG1lc3NhZ2Uu
YXBwZW5kKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogICAgIH0KIAotICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNv
dXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVz
c2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCksIDAsIDAsIG51bGxwdHIsIHJlcXVl
c3RJZGVudGlmaWVyKSk7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNv
bGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCksIGVycm9yLmZhaWxpbmdVUkwoKSwg
MCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJI
ZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdl
bnQuY3BwCmluZGV4IGNhZmVhYjk1ZWFmYzFhYmUyNDRhZTE1ZDc2Yjk2NmUwMDVlOTMxOTcuLjg2
NWJiZDA3YjZmMDk4Y2E3ZTY2NTBkOGFmZWZiY2Y2ZWYwNTE5MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNUYXNrOjp0aW1lckZpcmVkKCkKIFdl
YkhlYXBBZ2VudDo6V2ViSGVhcEFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6
IEluc3BlY3RvckhlYXBBZ2VudChjb250ZXh0KQogICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRz
KGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0
aW9uRXZlbnRzVGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50
c1Rhc2s+KCp0aGlzKSkKKyAgICAsIG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayht
YWtlVW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlzKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDVlYWZiNmEzMjg0NmU3MDAxNTNhYzgyNjgxYjdiZTUw
ZDNhZmU0OGMuLjg5ODViYzk0NWZlNzVlMGU4NTFhMzZkZTM1ODRhYjA0NzFjMGZkZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKIAogUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudChQYWdlQWdlbnRDb250ZXh0
JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFnZW50KGNvbnRleHQpCi0gICAgLCBt
X2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29udGV4
dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5z
cGVjdGVkUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYjIwY2JiYzk1MDcw
MjgxMWI2NTg5YWMxZGZiZDU3MzM5MTkzZDMzNy4uODA4MmVlMzFlZWM2MGEyZjYwMzI5ZGJhYmQ0
ZDk4NDJmNmE1NWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgV29ya2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQoKSA9IGRlZmF1
bHQ7CiAKIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhFeGVj
U3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV93b3JrZXJHbG9i
YWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2cs
IG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CisgICAgbV93b3JrZXJH
bG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1l
c3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUpKSk7CiB9CiAKIEluamVjdGVkU2Ny
aXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggYmQ5ZDRjYWRlZmIyZmFhMWYyZTBiMjU3OTU1
YWQ1MTI0ZTE3OTRlZS4uMWYzZmFiYTMxMjZmMmU5YjM2Yjg0ZDEzZTczYmYxZmRhMzE3NTQyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZv
aWQgTGF5b3V0U3RhdGU6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25zdCBCb3gm
IGxheW91dFJvb3QpCiBEaXNwbGF5OjpCb3gmIExheW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIHJldHVybiAqbV9sYXlv
dXRUb0Rpc3BsYXlCb3guZW5zdXJlKCZsYXlvdXRCb3gsIFsmbGF5b3V0Qm94XSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OkJveD4obGF5b3V0Qm94LnN0eWxlKCkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+KGxheW91dEJveC5zdHls
ZSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTE0MCwxMyArMTQwLDEzIEBA
IEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZv
cm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgICAgICAvLyBzaG91bGQgbm90IGludGVy
ZmVyZSB3aXRoIHRoZSBjb250ZW50IGluc2lkZS4KICAgICAgICAgICAgIC8vIDxkaXYgc3R5bGU9
ImZsb2F0OiBsZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVyZmxvdzogaGlkZGVuIj4gPC0gaXMg
YSBub24taW50cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJmbG93OiBoaWRkZW4gdHJpZ2dlcnMg
bmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4KICAgICAgICAgICAgIGlmIChmb3Jt
YXR0aW5nUm9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZs
b2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihGbG9h
dGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogCiAgICAg
ICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQgaW5oZXJpdHMgdGhl
IGZsb2F0cyBmcm9tIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0LgogICAgICAgICAgICAg
Ly8gRmluZCB0aGUgZm9ybWF0dGluZyBzdGF0ZSBpbiB3aGljaCB0aGlzIGZvcm1hdHRpbmcgcm9v
dCBsaXZlcywgbm90IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQgdXNlIGl0cyBmbG9hdGluZyBzdGF0
ZS4KICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZvcm1hdHRpbmdTdGF0ZSA9IGNyZWF0ZUZvcm1h
dHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoZm9ybWF0dGluZ1Jvb3QuZm9ybWF0
dGluZ0NvbnRleHRSb290KCkpOyAKICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZsb2F0aW5nU3Rh
dGUgPSBwYXJlbnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpOwotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihwYXJlbnRGbG9h
dGluZ1N0YXRlLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVG
b3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUsICp0aGlzKTsKICAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIEZvcm1hdHRpbmdT
dGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290
SWZOZWVkZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9mb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgm
Zm9ybWF0dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAgIC8vIEJsb2NrIGZvcm1hdHRpbmcg
Y29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxvYXRpbmcgc3RhdGUuCi0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRmxvYXRp
bmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRl
OjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRoaXMpOwogICAgICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgRm9ybWF0dGluZ1N0YXRl
JiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ1Jvb3RJZk5l
ZWRlZChjb24KICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3Jt
YXR0aW5nUm9vdCwgWyZdIHsKIAogICAgICAgICAgICAgLy8gVGFibGUgZm9ybWF0dGluZyBjb250
ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGluZyBzdGF0ZSAtYW5kIGl0IHN0YXlz
IGVtcHR5LgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGFibGVGb3JtYXR0
aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ1Jvb3QpLCAq
dGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUYWJsZUZvcm1hdHRpbmdTdGF0
ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9vdCksICp0aGlzKTsK
ICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTc0LDE4ICsxNzQsMTgg
QEAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBMYXlvdXRTdGF0ZTo6Y3JlYXRl
Rm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm8KICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRS
b290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGZvcm1hdHRpbmdD
b250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAg
ICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGlu
Z1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZv
cm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3Jt
YXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOwog
ICAgIH0KIAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9v
dC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRPbmx5KCkpOwogICAgICAgICBhdXRv
JiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRlPihj
cmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdD
b250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGJsb2NrRm9ybWF0dGluZ1N0YXRl
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oZm9y
bWF0dGluZ0NvbnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAg
aWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQoKSkgewogICAgICAgICBhdXRvJiB0YWJsZUZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PFRh
YmxlRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9v
dElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3Qs
IHRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGFibGVG
b3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCB0YWJsZUZvcm1hdHRpbmdT
dGF0ZSk7CiAgICAgfQogCiAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcAppbmRleCBhMWNkNmQ2ZjFiN2ViOTBmY2M3OTA1ZTMxZTlmMDRmZTNiZjgyNjBiLi41
MDhkNjYxMjlkMTQ4N2M0ZTg0NDA5MzkzZGEzMzQwOTE5ZWE3Zjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQoKSBjb25zdAogICAgICAgICAgICAg
aWYgKCF0cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJveCkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzdGFydCBvZiBhbiBpbmxpbmUgY29u
dGFpbmVyIChlLmcuIDxzcGFuPikuCi0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5s
aW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRl
bTo6VHlwZTo6Q29udGFpbmVyU3RhcnQpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5h
ZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4obGF5b3V0Qm94LCBJbmxpbmVJdGVt
OjpUeXBlOjpDb250YWluZXJTdGFydCkpOwogICAgICAgICAgICAgYXV0byYgY29udGFpbmVyID0g
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwogICAgICAgICAgICAgaWYgKCFjb250YWlu
ZXIuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0yOTIsMTcgKzI5MiwxNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0
SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5
b3V0UXVldWUudGFrZUxhc3QoKTsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiBh
biBpbmxpbmUgY29udGFpbmVyIChlLmcuIDwvc3Bhbj4pLgogICAgICAgICAgICAgaWYgKHRyZWF0
QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5n
U3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJv
eCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7CisgICAgICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRC
b3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVuZCkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAobGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGlu
Z1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRC
b3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWspKTsKKyAgICAgICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91
dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhaykpOwogICAgICAgICAgICAgZWxz
ZSBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVt
PihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CisgICAgICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1ZTxJbmxpbmVJdGVtPihsYXlv
dXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3goKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGxheW91dEJveC5oYXNUZXh0Q29udGVudCgpKQogICAgICAgICAgICAg
ICAgICAgICBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKGZvcm1hdHRp
bmdTdGF0ZS5pbmxpbmVJdGVtcygpLCBsYXlvdXRCb3gpOwogICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkJveCkp
OworICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtl
VW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Qm94KSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9IGxheW91
dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRM
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAKaW5kZXggZjc0MWRlNDg5ZTk0MjQ2
MWQ3NjkyZTJlNDA0MTU5MzgzYjBjODE2MC4uMGEyMTMwMjEzZjEyNGVlYjVmN2Y3MTEyZTg4NmQ3
MTJjNTMxZGEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dExp
bmVMYXlvdXQuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4K
ICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChsb2dpY2FsUmVjdC50b3BMZWZ0KCkp
OwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgobG9naWNhbFJlY3Qu
d2lkdGgoKSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNldENvbnRlbnRCb3hIZWlnaHQobG9n
aWNhbFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGlu
ZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4obG9naWNhbFJlY3QpKTsKKyAgICAg
ICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4obWFrZVVuaXF1ZTxEaXNwbGF5OjpS
dW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBA
IC00MDcsNyArNDA3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5
b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgICAg
ICB0b3BMZWZ0ICs9IEdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZzZXQobGF5
b3V0U3RhdGUoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVm
dCh0b3BMZWZ0KTsKICAgICAgICAgICAgIGxpbmVCb3hSZWN0LmV4cGFuZEhvcml6b250YWxseShs
b2dpY2FsUmVjdC53aWR0aCgpKTsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxp
bmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CisgICAg
ICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6
UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUxh
eW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6Q29udGVuCiAgICAgICAgICAgICBh
dXRvIHByZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCA9IHByZXZpb3VzTGluZVJ1biAmJiBwcmV2aW91
c0xpbmVSdW4tPnRleHRDb250ZXh0KCkgPyBwcmV2aW91c0xpbmVSdW4tPnRleHRDb250ZXh0KCkt
PmNhbkJlRXh0ZW5kZWQgOiBmYWxzZTsKICAgICAgICAgICAgIGF1dG8gcmVxdWlyZXNOZXdSdW4g
PSAhaW5kZXggfHwgIXByZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCB8fCAmbGF5b3V0Qm94ICE9ICZw
cmV2aW91c0xpbmVSdW4tPmxheW91dEJveCgpOwogICAgICAgICAgICAgaWYgKHJlcXVpcmVzTmV3
UnVuKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjpt
YWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRD
b250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29udGV4dC0+bGVuZ3RoIH0pKTsKKyAg
ICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVuKG1ha2VVbmlxdWU8RGlz
cGxheTo6UnVuPihsb2dpY2FsUmVjdCwgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IHRleHRD
b250ZXh0LT5zdGFydCwgdGV4dENvbnRleHQtPmxlbmd0aCB9KSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBhdXRvJiBsYXN0RGlzcGxheVJ1biA9IGZvcm1hdHRpbmdTdGF0
ZS5pbmxpbmVSdW5zKCkubGFzdCgpOwogICAgICAgICAgICAgICAgIGxhc3REaXNwbGF5UnVuLT5l
eHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDRm
MjBhNmZmMWQ3MGNlMzQ5YmRlMGViZWRmZThmODBhMzVlODVhMjguLmVkNjUyMDViN2RiOTliMGY2
YWIxMGYzZWVlYWEwN2M0NDZiN2Y4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIExp
bmU6OkNvbnRlbnQ6OlJ1bjo6UnVuKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0
IFRleHRDb250ZXh0JiB0ZXh0Q29uCiAKIExpbmU6OkxpbmUoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMmIGluaXRpYWxDb25zdHJhaW50cywg
U2tpcFZlcnRpY2FsQWxpZ21lbnQgc2tpcFZlcnRpY2FsQWxpZ21lbnQpCiAgICAgOiBtX2xheW91
dFN0YXRlKGxheW91dFN0YXRlKQotICAgICwgbV9jb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8TGlu
ZTo6Q29udGVudD4oKSkKKyAgICAsIG1fY29udGVudChtYWtlVW5pcXVlPExpbmU6OkNvbnRlbnQ+
KCkpCiAgICAgLCBtX2xvZ2ljYWxUb3BMZWZ0KGluaXRpYWxDb25zdHJhaW50cy5sb2dpY2FsVG9w
TGVmdCkKICAgICAsIG1fYmFzZWxpbmUoeyBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFz
ZWxpbmUuYmFzZWxpbmVPZmZzZXQsIGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGlu
ZS5oZWlnaHQgLSBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVP
ZmZzZXQgfSkKICAgICAsIG1faW5pdGlhbFN0cnV0KGluaXRpYWxDb25zdHJhaW50cy5oZWlnaHRB
bmRCYXNlbGluZS5zdHJ1dCkKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZChj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIAog
dm9pZCBMaW5lOjphcHBlbmROb25CcmVha2FibGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0JiBsb2dpY2FsUmVjdCkKIHsKLSAgICBtX2NvbnRl
bnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0
ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlx
dWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVu
dExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsUmVjdC53aWR0aCgpOwogfQogCkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYg
aW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICB9CiAKICAgICBhdXRvIHRleHRDb250
ZXh0ID0gQ29udGVudDo6UnVuOjpUZXh0Q29udGV4dCB7IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5s
aW5lSXRlbS5pc0NvbGxhcHNlZCgpID8gMSA6IGlubGluZUl0ZW0ubGVuZ3RoKCksIGlzQ29tcGxl
dGVseUNvbGxhcHNlZCwgaW5saW5lSXRlbS5pc1doaXRlc3BhY2UoKSwgY2FuQmVFeHRlbmRlZCB9
OwotICAgIGF1dG8gbGluZUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnQ6OlJ1bj4oaW5s
aW5lSXRlbSwgdGV4dENvbnRleHQsIGxvZ2ljYWxSZWN0KTsKKyAgICBhdXRvIGxpbmVJdGVtID0g
bWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIHRleHRDb250ZXh0LCBsb2dpY2Fs
UmVjdCk7CiAgICAgaWYgKGlzVHJpbW1hYmxlICYmICFpc0NvbXBsZXRlbHlDb2xsYXBzZWQpCiAg
ICAgICAgIG1fdHJpbW1hYmxlQ29udGVudC5hZGQobGluZUl0ZW0uZ2V0KCkpOwogCkBAIC0zMDMs
NyArMzAzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJ
bmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGwKICAgICAgICAgbG9naWNhbFJlY3Qu
c2V0SGVpZ2h0KGlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGlubGluZUl0ZW0pKTsKICAgICB9CiAK
LSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpS
dW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBw
ZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwog
ICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSAobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1h
cmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsKICAgICBtX3RyaW1tYWJsZUNvbnRl
bnQuY2xlYXIoKTsKIH0KQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIExpbmU6OmFwcGVuZEhhcmRM
aW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICAgICAgYWRqdXN0QmFz
ZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGluZUl0ZW0sIHsgfSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0
LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0KLSAgICBtX2NvbnRlbnQtPnJ1bnMo
KS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2lj
YWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVu
dDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwogfQogCiB2b2lkIExpbmU6OmFkanVz
dEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlv
dXRVbml0IHJ1bkhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcAppbmRleCBmMTMwODlhNzA4ZjNmZTNm
ZjliNzdmNzIwOTZjZGE0MmVmMzZlMjIyLi41ZTZjMjU2ZGIwYjMwOWFhZjFlMjU4MjFmMGUxZTE4
ZTU2NDUyZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSW5s
aW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5l
Q29udGVudCwgY29uc3QKIHsKICAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRlbnQo
KTsKICAgICBpZiAoIXRleHQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBpbmxpbmVDb250ZW50
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIDAsIDAs
IGZhbHNlLCBmYWxzZSkpOworICAgICAgICByZXR1cm4gaW5saW5lQ29udGVudC5hcHBlbmQobWFr
ZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCAwLCAwLCBmYWxzZSwgZmFsc2UpKTsK
IAogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lQm94LnN0eWxlKCk7CiAgICAgYXV0byBwcmVzZXJ2
ZU5ld2xpbmUgPSBzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKTsKQEAgLTk5LDIwICs5OSwyMCBAQCB2
b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMm
IGlubGluZUNvbnRlbnQsIGNvbnN0CiAgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlvbiA8IHRleHQu
bGVuZ3RoKCkpIHsKICAgICAgICAgLy8gU29mdCBsaW5lYnJlYWs/CiAgICAgICAgIGlmIChpc1Nv
ZnRMaW5lQnJlYWsodGV4dFtjdXJyZW50UG9zaXRpb25dLCBwcmVzZXJ2ZU5ld2xpbmUpKSB7Ci0g
ICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRl
eHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgMSwgdHJ1ZSwgZmFsc2UpKTsKKyAg
ICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VVbmlxdWU8SW5saW5lVGV4dEl0ZW0+
KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCAxLCB0cnVlLCBmYWxzZSkpOwogICAgICAgICAg
ICAgKytjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRbY3VycmVudFBvc2l0aW9uXSwg
cHJlc2VydmVOZXdsaW5lKSkgewogICAgICAgICAgICAgYXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0
Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHRleHQsIGN1cnJlbnRQb3NpdGlvbiwgcHJlc2VydmVOZXds
aW5lKTsKICAgICAgICAgICAgIGF1dG8gaXNDb2xsYXBzZWQgPSBjb2xsYXBzZVdoaXRlU3BhY2Ug
JiYgbGVuZ3RoID4gMTsKLSAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCBsZW5n
dGgsIHRydWUsIGlzQ29sbGFwc2VkKSk7CisgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVu
ZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwg
bGVuZ3RoLCB0cnVlLCBpc0NvbGxhcHNlZCkpOwogICAgICAgICAgICAgY3VycmVudFBvc2l0aW9u
ICs9IGxlbmd0aDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAg
YXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24oY3VycmVudFBvc2l0aW9u
LCBsaW5lQnJlYWtJdGVyYXRvciwgc3R5bGUpOwotICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3Np
dGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgaW5saW5lQ29udGVudC5hcHBl
bmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCBjdXJyZW50UG9zaXRpb24s
IGxlbmd0aCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiArPSBsZW5n
dGg7CiAgICAgfQogfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVU
ZXh0SXRlbT4gSW5saW5lVGV4dEl0ZW06OnNwbGl0KHVuc2lnbmVkIHNwbGl0UG9zaXRpb24sIHVu
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlvbiA+PSB0aGlzLT5zdGFydCgpKTsK
ICAgICBSRUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0aW9uICsgbGVuZ3RoIDw9IGVuZCgpKTsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0SXRlbT4obGF5b3V0Qm94KCksIHNw
bGl0UG9zaXRpb24sIGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCksIGlzQ29sbGFwc2VkKCkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihsYXlvdXRCb3goKSwgc3BsaXRQb3Np
dGlvbiwgbGVuZ3RoLCBpc1doaXRlc3BhY2UoKSwgaXNDb2xsYXBzZWQoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDgw
ODRlMmJiNjllOGM5MmFhYTliN2JlNmQ4YTE0Yjc3OTUyOTEyMDMuLjNiYWY5ZWFhMWZiYTkyYzcw
ZjRjNmM3MzI5NWIxMzhiMzFiYzViOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtNDUsNyArNDUsNyBAQCBCb3g6OkJveChPcHRpb25h
bDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFz
ZVR5cGVGbAogICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKIHsKICAgICBpZiAoaXNSZXBsYWNl
ZCgpKQotICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0gc3RkOjptYWtlX3VuaXF1
ZTxSZXBsYWNlZD4oKnRoaXMpOworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxhY2VkID0g
bWFrZVVuaXF1ZTxSZXBsYWNlZD4oKnRoaXMpOwogfQogCiBCb3g6OkJveChPcHRpb25hbDxFbGVt
ZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSkKQEAgLTQ0Nyw3
ICs0NDcsNyBAQCBjb25zdCBCb3g6OkJveFJhcmVEYXRhJiBCb3g6OnJhcmVEYXRhKCkgY29uc3QK
IEJveDo6Qm94UmFyZURhdGEmIEJveDo6ZW5zdXJlUmFyZURhdGEoKQogewogICAgIHNldEhhc1Jh
cmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10g
eyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4g
bWFrZVVuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lk
IEJveDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGFiMjg0ZWEwOTliOGZhM2Zm
YTcyNzRlMDZlNGNlY2NhZjg0NzQzMDcuLmYyYWZjYWJkMGEzODFjNmQ1YzhkYTM5ZDM0NmUxYWVh
MzNkNDdiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTEzMCwyNSArMTMwLDI1IEBAIHN0ZDo6dW5pcXVl
X3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgUmVuZGVyRWxlbWVu
dCYgcGFyZW50UmVuCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBDbGVhcmx5IHRoZXJlIG11c3QgYmUgYSBoZWxwZXIgZnVuY3Rpb24g
Zm9yIHRoaXMuCiAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6
Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3Jp
Z2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7
CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94Pihkb3duY2FzdDxS
ZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRleHQoKSwgUmVuZGVyU3R5bGU6OmNs
b25lKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4
dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJlbmRlcmVyLnN0eWxlKCksIERpc3BsYXlUeXBl
OjpJbmxpbmUpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+
KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIpLm9yaWdpbmFsVGV4dCgpLCBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5z
dHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CiAgICAgICAgIHJldHVybiBjaGlsZExheW91
dEJveDsKICAgICB9CiAKICAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckVsZW1l
bnQ+KGNoaWxkUmVuZGVyZXIpOwogICAgIGF1dG8gZGlzcGxheVR5cGUgPSByZW5kZXJlci5zdHls
ZSgpLmRpc3BsYXkoKTsKICAgICBpZiAoaXM8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVy
U3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKIAogICAgIGlmIChpczxSZW5kZXJUYWJs
ZT4ocmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgcHJpbmNpcGFsIHRhYmxl
IHdyYXBwZXIgYm94IChhbmQgbm90IHRoZSB0YWJsZSBib3ggaXRzZWxmKS4KLSAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oQm94OjpFbGVtZW50QXR0
cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlV3JhcHBlckJveCB9LCBSZW5kZXJTdHls
ZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICBjaGlsZExheW91dEJveCA9IG1h
a2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50
VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHls
ZSgpKSk7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpKSB7CiAg
ICAgICAgIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6QmxvY2spCi0gICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAg
ICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxC
b3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRl
cmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxC
b3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRl
cmVyLnN0eWxlKCkpKTsKICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHlldCBzdXBwb3J0IGFs
bCByZXBsYWNlZCBlbGVtZW50cyBhbmQgdGhpcyBpcyB0ZW1wb3JhcnkgYW55d2F5LgogICAgICAg
ICBpZiAoY2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCkpCiAgICAgICAgICAgICBjaGlsZExheW91
dEJveC0+cmVwbGFjZWQoKS0+c2V0SW50cmluc2ljU2l6ZShkb3duY2FzdDxSZW5kZXJSZXBsYWNl
ZD4ocmVuZGVyZXIpLmludHJpbnNpY1NpemUoKSk7CkBAIC0xNjMsMTggKzE2MywxOCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRl
ckVsZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBSZW5kZXJT
dHlsZTo6Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgc3R5bGUt
PnNldFRvcCh7IG9mZnNldC0+aGVpZ2h0KCksIEZpeGVkIH0pOwogICAgICAgICAgICAgICAgIHN0
eWxlLT5zZXRMZWZ0KHsgb2Zmc2V0LT53aWR0aCgpLCBGaXhlZCB9KTsKLSAgICAgICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0
cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7CisgICAgICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBXVEZNb3ZlKCpzdHlsZSkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVu
dEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUo
KSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxDb250YWlu
ZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRl
cmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5
VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6
Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBt
YWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJT
dHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICBlbHNlIGlmIChkaXNwbGF5
VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5k
ZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAg
ICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRl
cyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAg
ICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUNhcHRpb24gfHwg
ZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2VsbCkgewotICAgICAgICAgICAgY2hp
bGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0
ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAg
ICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0
dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkp
OwogICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZVJv
d0dyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUhlYWRlckdyb3VwIHx8
IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUZvb3Rlckdyb3VwCiAgICAgICAgICAg
ICB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFibGVSb3cgfHwgZGlzcGxheVR5cGUg
PT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxh
eVR5cGU6OlRhYmxlQ29sdW1uKSB7Ci0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRl
clN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91
dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciks
IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFRyZWVCdWlsZGVyOjpjcmVhdGVU
YWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29udGFpbgog
ICAgICAgICB0YWJsZUNoaWxkID0gdGFibGVDaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiAK
LSAgICBhdXRvIHRhYmxlQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250YWluZXI+KEJveDo6RWxl
bWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpUYWJsZUJveCB9LCBSZW5kZXJTdHls
ZTo6Y2xvbmUodGFibGVSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgYXV0byB0YWJsZUJveCA9IG1h
a2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50
VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25lKHRhYmxlUmVuZGVyZXIuc3R5bGUo
KSkpOwogICAgIGFwcGVuZENoaWxkKHRhYmxlV3JhcHBlckJveCwgKnRhYmxlQm94KTsKICAgICB3
aGlsZSAodGFibGVDaGlsZCkgewogICAgICAgICBUcmVlQnVpbGRlcjo6Y3JlYXRlU3ViVHJlZShk
b3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGFibGVDaGlsZCksICp0YWJsZUJveCk7CkBAIC0zNjEs
NyArMzYxLDcgQEAgdm9pZCBwcmludExheW91dFRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKICAgICAg
ICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBvdXRwdXQgZ2VvbWV0cnkgd2l0aG91
dCBsYXlvdXQgY29udGV4dC4KICAgICAgICAgYXV0byYgcmVuZGVyVmlldyA9ICpkb2N1bWVudC0+
cmVuZGVyVmlldygpOwogICAgICAgICBhdXRvIGluaXRpYWxDb250YWluaW5nQmxvY2sgPSBUcmVl
QnVpbGRlcjo6Y3JlYXRlTGF5b3V0VHJlZShyZW5kZXJWaWV3KTsKLSAgICAgICAgYXV0byBsYXlv
dXRTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5b3V0OjpMYXlvdXRTdGF0ZT4oKmluaXRpYWxD
b250YWluaW5nQmxvY2spOworICAgICAgICBhdXRvIGxheW91dFN0YXRlID0gbWFrZVVuaXF1ZTxM
YXlvdXQ6OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgIGxh
eW91dFN0YXRlLT5zZXRRdWlya3NNb2RlKHJlbmRlclZpZXcuZG9jdW1lbnQoKS5pbkxpbWl0ZWRR
dWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6TGltaXRlZCA6IChyZW5kZXJW
aWV3LmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9kZTo6
WWVzIDogTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6Ok5vKSk7CiAgICAgICAgIGxheW91dFN0YXRl
LT51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgc2hvd0xheW91dFRyZWUoKmluaXRpYWxDb250YWlu
aW5nQmxvY2ssIGxheW91dFN0YXRlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcAppbmRleCBjN2FlM2U1ODEwZDYwMmY2
NWViNzAwMmZmZTljNTJiZmM1YzAwMGE1Li5iNDVmMDVlNTU5MzhlNTQ2NGZiMjIxOWI4NjcyZmRl
MWViNWE2NTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0
aW5nL1RhYmxlR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUdyaWQuY3BwCkBAIC03OCwxMyArNzgsMTMgQEAgdm9pZCBUYWJsZUdyaWQ6OmFw
cGVuZENlbGwoY29uc3QgQm94JiB0YWJsZUNlbGxCb3gpCiAgICAgICAgICAgICBpbml0aWFsU2xv
dFBvc2l0aW9uLm1vdmUoMSwgMCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgYXV0byBjZWxsSW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8Q2VsbEluZm8+KHRhYmxlQ2VsbEJveCwgaW5pdGlhbFNsb3RQ
b3NpdGlvbiwgQ2VsbFNpemUgeyByb3dTcGFuLCBjb2x1bW5TcGFuIH0pOworICAgIGF1dG8gY2Vs
bEluZm8gPSBtYWtlVW5pcXVlPENlbGxJbmZvPih0YWJsZUNlbGxCb3gsIGluaXRpYWxTbG90UG9z
aXRpb24sIENlbGxTaXplIHsgcm93U3BhbiwgY29sdW1uU3BhbiB9KTsKICAgICAvLyBSb3cgYW5k
IGNvbHVtbiBzcGFubmVycyBjcmVhdGUgYWRkaXRpb25hbCBzbG90cy4KICAgICBmb3IgKGludCBy
b3cgPSAxOyByb3cgPD0gcm93U3BhbjsgKytyb3cpIHsKICAgICAgICAgZm9yIChpbnQgY29sdW1u
ID0gMTsgY29sdW1uIDw9IGNvbHVtblNwYW47ICsrY29sdW1uKSB7CiAgICAgICAgICAgICBhdXRv
IHBvc2l0aW9uID0gU2xvdFBvc2l0aW9uIHsgaW5pdGlhbFNsb3RQb3NpdGlvbi54KCkgKyByb3cg
LSAxLCBpbml0aWFsU2xvdFBvc2l0aW9uLnkoKSArIGNvbHVtbiAtIDEgfTsKICAgICAgICAgICAg
IEFTU0VSVCghbV9zbG90TWFwLmNvbnRhaW5zKHBvc2l0aW9uKSk7Ci0gICAgICAgICAgICBtX3Ns
b3RNYXAuYWRkKHBvc2l0aW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFNsb3RJbmZvPigqY2VsbEluZm8p
KTsKKyAgICAgICAgICAgIG1fc2xvdE1hcC5hZGQocG9zaXRpb24sIG1ha2VVbmlxdWU8U2xvdElu
Zm8+KCpjZWxsSW5mbykpOwogICAgICAgICB9CiAgICAgfQogICAgIG1fY2VsbExpc3QuYWRkKFdU
Rk1vdmUoY2VsbEluZm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApp
bmRleCA1MWQ3N2U0YWYxZGJkZGYwNDVhOTJjMWM4YWQzYjk5ZWFjZWI5N2I1Li5iNDk4YTIyNGIx
OTBjNmNlODQ0ZWI5ZGQ3ZWI5YjdhMTA1ZDc2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50
RmlsdGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGUoRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9h
CiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVy
cyksIGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZW50RmlsdGVy
PihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7CiB9CiAKIENvbnRlbnRGaWx0ZXI6
OkNvbnRlbnRGaWx0ZXIoQ29udGFpbmVyJiYgY29udGVudEZpbHRlcnMsIERvY3VtZW50TG9hZGVy
JiBkb2N1bWVudExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5jcHAKaW5kZXggZDBkNTRiOTdlYWU3MjA0MjZmOTYxYzhkYWU4OTVl
MjAzNjljZWRjYy4uYzRjZTVmNTUyMTcwYjNjZmM4Yjg0MWI1OWE1MTBmZDc1YWE4M2ZiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5j
cHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIHZhbGlkYXRlUHJlZmxpZ2h0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAgIGlmICgh
cGFzc2VzQWNjZXNzQ29udHJvbENoZWNrKHJlc3BvbnNlLCBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgc2VjdXJpdHlPcmlnaW4sIGVycm9yRGVzY3JpcHRpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW0+KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBhdXRv
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+
KHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKICAgICBpZiAoIXJlc3VsdC0+cGFyc2UocmVzcG9u
c2UpCiAgICAgICAgIHx8ICFyZXN1bHQtPmFsbG93c0Nyb3NzT3JpZ2luTWV0aG9kKHJlcXVlc3Qu
aHR0cE1ldGhvZCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZXJyb3JEZXNjcmlwdGlvbikK
ICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dzQ3Jvc3NPcmlnaW5IZWFkZXJzKHJlcXVlc3QuaHR0
cEhlYWRlckZpZWxkcygpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgZXJyb3JEZXNjcmlwdGlv
bikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGRlMDll
NzAzOTljYzc0N2U4ODczNjk3ODM3MjRlNmRhYTlmYzc4OGIuLjA0NTVjYWZjNTlmZjdiNmVhMWY5
YTJjZDM5MzFhNjllOWY2OTQ0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRl
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVECiAgICAg
LCBtX29yaWdpbmFsU3Vic3RpdHV0ZURhdGFXYXNWYWxpZChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkpCiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIoKnRoaXMsICZEb2N1
bWVudExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKQogICAgICwg
bV9kYXRhTG9hZFRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVE
YXRhTG9hZE5vdykKLSAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3Qoc3RkOjptYWtlX3VuaXF1
ZTxBcHBsaWNhdGlvbkNhY2hlSG9zdD4oKnRoaXMpKQorICAgICwgbV9hcHBsaWNhdGlvbkNhY2hl
SG9zdChtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCiB7CiB9CiAKQEAg
LTEzMzYsNyArMTMzNiw3IEBAIHVpbnQ2NF90IERvY3VtZW50TG9hZGVyOjpsb2FkQXBwbGljYXRp
b25NYW5pZmVzdCgpCiAgICAgaWYgKG1hbmlmZXN0VVJMLmlzRW1wdHkoKSB8fCAhbWFuaWZlc3RV
UkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8gbWFuaWZlc3RMb2Fk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBt
YW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOworICAgIGF1dG8gbWFuaWZlc3RMb2FkZXIgPSBt
YWtlVW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwg
dXNlQ3JlZGVudGlhbHMpOwogICAgIGF1dG8qIHJhd01hbmlmZXN0TG9hZGVyID0gbWFuaWZlc3RM
b2FkZXIuZ2V0KCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbmV4dENhbGxiYWNrSUQrKzsKICAg
ICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChXVEZNb3ZlKG1hbmlmZXN0TG9hZGVy
KSwgY2FsbGJhY2tJRCk7CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpzZXRBcmNoaXZlKFJlZjxBcmNoaXZlPiYmIGFyY2hpdmUpCiB2b2lkIERvY3VtZW50TG9hZGVy
OjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFyY2hpdmUpCiB7CiAgICAgaWYgKCFt
X2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCi0gICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsK
KyAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gbWFrZVVuaXF1ZTxBcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uPigpOwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+
YWRkQWxsUmVzb3VyY2VzKGFyY2hpdmUpOwogfQogCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmIGFyY2hpdmUp
CiB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNv
dXJjZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bikKLSAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAgICAgICBtX2FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAg
ICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRSZXNvdXJjZShXVEZNb3ZlKHJlc291
cmNlKSk7CiB9CiAKQEAgLTE5NjMsNyArMTk2Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Omxv
YWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICAgICAgLy8gSWYg
dGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBvc3NpYmxl
IHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdAogICAgICAgICAvLyBpcyBub3cgaW4gYSBzdGF0ZSB3
aGVyZSBzdGFydGluZyBhbiBlbXB0eSBsb2FkIHdpbGwgYmUgaW5jb25zaXN0ZW50LiBSZXBsYWNl
IGl0IHdpdGgKICAgICAgICAgLy8gYSBuZXcgQXBwbGljYXRpb25DYWNoZUhvc3QuCi0gICAgICAg
IG1fYXBwbGljYXRpb25DYWNoZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0PigqdGhpcyk7CisgICAgICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QgPSBtYWtlVW5p
cXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcyk7CiAgICAgICAgIG1heWJlTG9hZEVtcHR5
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTIyLDcgKzIxMjIsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVp
bnQ2NF90IGxvYWRJZGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpY29u
TG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGVyPigqdGhpcywgaWNvbi51cmwpOwor
ICAgIGF1dG8gaWNvbkxvYWRlciA9IG1ha2VVbmlxdWU8SWNvbkxvYWRlcj4oKnRoaXMsIGljb24u
dXJsKTsKICAgICBhdXRvKiByYXdJY29uTG9hZGVyID0gaWNvbkxvYWRlci5nZXQoKTsKICAgICBt
X2ljb25Mb2FkZXJzLnNldChXVEZNb3ZlKGljb25Mb2FkZXIpLCBuZXdDYWxsYmFja0lEKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCAwNDUzZDdlNmQ5ZTM2NTYw
MmFjOWFiZDk5OWI0ZTJmYWIxMzJhZGI0Li45MzgzNDJkMDkzNTAyZWZjNjg5MDVjNmMzNGE5ODE3
YmFkNTQyMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTc4
LDcgKzU3OCw3IEBAIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5
Q2xpZW50cygpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5UHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50PiBkdW1teVByb2dyZXNzVHJhY2tlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSAmZHVtbXlQcm9ncmVzc1RyYWNrZXJDbGllbnQuZ2V0
KCk7CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8RW1wdHlE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsKIAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZSh7IH0s
IHsgfSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlciA9IGFkb3B0UmVm
KCpuZXcgRW1wdHlEYXRhYmFzZVByb3ZpZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCmluZGV4IGUwZjQ2MTQ4ZjJkZmFhODdmNmIyNDI2MzdkNTA4OTE4NTIwYTYwYTIuLjgz
YmViMjcxN2QzMzdjMzQxYzAxNWVjZjQ2ZDRmMzczZTA4YjE1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjcwLDEwICsyNzAsMTAgQEAgY2xhc3MgRnJhbWVMb2Fk
ZXI6OkZyYW1lUHJvZ3Jlc3NUcmFja2VyIHsKIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFt
ZSYgZnJhbWUsIEZyYW1lTG9hZGVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2ZyYW1lKGZyYW1l
KQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9wb2xpY3lDaGVja2VyKHN0ZDo6bWFr
ZV91bmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJhbWUpKQotICAgICwgbV9oaXN0b3J5KHN0ZDo6bWFr
ZV91bmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1lKSkKKyAgICAsIG1fcG9saWN5Q2hlY2tl
cihtYWtlVW5pcXVlPFBvbGljeUNoZWNrZXI+KGZyYW1lKSkKKyAgICAsIG1faGlzdG9yeShtYWtl
VW5pcXVlPEhpc3RvcnlDb250cm9sbGVyPihmcmFtZSkpCiAgICAgLCBtX25vdGlmaWVyKGZyYW1l
KQotICAgICwgbV9zdWJmcmFtZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFN1YmZyYW1lTG9hZGVy
PihmcmFtZSkpCisgICAgLCBtX3N1YmZyYW1lTG9hZGVyKG1ha2VVbmlxdWU8U3ViZnJhbWVMb2Fk
ZXI+KGZyYW1lKSkKICAgICAsIG1fbWl4ZWRDb250ZW50Q2hlY2tlcihmcmFtZSkKICAgICAsIG1f
c3RhdGUoRnJhbWVTdGF0ZVByb3Zpc2lvbmFsKQogICAgICwgbV9sb2FkVHlwZShGcmFtZUxvYWRU
eXBlOjpTdGFuZGFyZCkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0
KCkKICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmU6
OkRpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAKICAgICBtX25ldHdvcmtpbmdDb250
ZXh0ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNz
VHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUp
OworICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tl
cj4obV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmluaXRGb3JTeW50aGVzaXplZERv
Y3VtZW50KGNvbnN0IFVSTCYpCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJMJikKICAgICBtX25lZWRzQ2xlYXIg
PSB0cnVlOwogCiAgICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LmNyZWF0ZU5ldHdv
cmtpbmdDb250ZXh0KCk7Ci0gICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKKyAgICBtX3Byb2dyZXNzVHJhY2tlciA9
IG1ha2VVbmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZGVmZXJzKQpAQCAtMjY3OCw3ICsyNjc4
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNoQ2hpbGRyZW4oKQogICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Jyb3dzaW5nLXRoZS13ZWIuaHRtbCNuYXZp
Z2F0ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXZpZ2F0aW9uRGlzYWJsZXI+IG5hdmlnYXRpb25E
aXNhYmxlcjsKICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICBuYXZpZ2F0
aW9uRGlzYWJsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRpb25EaXNhYmxlcj4oJm1fZnJh
bWUpOworICAgICAgICBuYXZpZ2F0aW9uRGlzYWJsZXIgPSBtYWtlVW5pcXVlPE5hdmlnYXRpb25E
aXNhYmxlcj4oJm1fZnJhbWUpOwogCiAgICAgLy8gQW55IHN1YmZyYW1lIGluc2VydGVkIGJ5IHVu
bG9hZCBldmVudCBoYW5kbGVycyBleGVjdXRlZCBpbiB0aGUgbG9vcCBiZWxvdyB3aWxsIG5vdCBn
ZXQgdW5sb2FkZWQKICAgICAvLyBiZWNhdXNlIHdlIGNyZWF0ZSBhIGNvcHkgb2YgdGhlIHN1YmZy
YW1lcyBsaXN0IGJlZm9yZSBsb29waW5nLiBUaGVyZWZvcmUsIGl0IHdvdWxkIGJlIHVuc2FmZSB0
bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCmluZGV4IGNkZjY0OTUyNmZlM2QxZjMz
MjhkNmUzNmMyMDEwODdjMzFmMTY1NWIuLjQwOGM1MzY0MjllM2IwODc3OThlYjk3ZTc2ODY0Y2M5
NDg2NjY3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKQEAgLTE0MiwyMiAr
MTQyLDIyIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVu
dD4gY3JlYXRlTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVuCiB7CiAgICAgc3dpdGNoIChyZXNvdXJj
ZS50eXBlKCkpIHsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpJbWFnZVJlc291cmNl
OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZEltYWdlUmVzb3Vy
Y2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkSW1hZ2U+KHJlc291cmNlKSk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9h
ZGVyLCBkb3duY2FzdDxDYWNoZWRJbWFnZT4ocmVzb3VyY2UpKTsKICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpUeXBlOjpTY3JpcHQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExp
bmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFNj
cmlwdD4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRE
ZWZhdWx0UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNv
dXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkNTU1N0eWxlU2hlZXQ6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkU3R5bGVSZXNvdXJjZUNs
aWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihyZXNvdXJjZSkpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZFN0eWxlUmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldD4ocmVzb3VyY2UpKTsKICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpUeXBlOjpGb250UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRv
d25jYXN0PENhY2hlZEZvbnQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PExpbmtQcmVsb2FkRm9udFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEZv
bnQ+KHJlc291cmNlKSk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OlRleHRUcmFja1Jlc291cmNlOgotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3du
Y2FzdDxDYWNoZWRUZXh0VHJhY2s+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPExpbmtQcmVsb2FkRGVmYXVsdFJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENh
Y2hlZFRleHRUcmFjaz4ocmVzb3VyY2UpKTsKICNlbmRpZgogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGU6Ok1lZGlhUmVzb3VyY2U6CiAgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLm1lZGlhUHJlbG9hZGluZ0VuYWJsZWQoKSk7CiAgICAg
ICAgIEZBTExUSFJPVUdIOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlJhd1Jlc291
cmNlOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291
cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZFJhd1Jlc291cmNlQ2xpZW50
Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkpOwogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZToKICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpUeXBlOjpJY29uOgogI2lmIEVOQUJMRShTVkdfRk9OVFMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggNTU4Yzc4MDQ5NTdlYzg4
Mjg4MThlZjU2MTliZjk4M2QzZjk0MGE1NS4uM2MyYzI1MmFhNTFiOTY5Mjk1ZWNmMTQ4MTI1NGEz
MjQwZWM0MmE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVSZWRpcmVjdChEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50LCBkb3VibGUKICAgICAv
LyBXZSB3YW50IGEgbmV3IGJhY2svZm9yd2FyZCBsaXN0IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGlt
ZW91dCBpcyA+IDEgc2Vjb25kLgogICAgIGlmICghbV9yZWRpcmVjdCB8fCBkZWxheSA8PSBtX3Jl
ZGlyZWN0LT5kZWxheSgpKSB7CiAgICAgICAgIGF1dG8gbG9ja0JhY2tGb3J3YXJkTGlzdCA9IGRl
bGF5IDw9IDEgPyBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgOiBMb2NrQmFja0ZvcndhcmRMaXN0
OjpObzsKLSAgICAgICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWRpcmVj
dD4oaW5pdGlhdGluZ0RvY3VtZW50LCBkZWxheSwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0ZvcndhcmRMaXN0KSk7
CisgICAgICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGluaXRpYXRp
bmdEb2N1bWVudCwgZGVsYXksICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IHVybCwgTG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJkTGlzdCkpOwogICAgIH0KIH0K
IApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVM
b2NhdGlvbkNoYW5nZShEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50LCBTCiAgICAgLy8gVGhp
cyBtYXkgaGFwcGVuIHdoZW4gYSBmcmFtZSBjaGFuZ2VzIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVy
IGZyYW1lLgogICAgIGJvb2wgZHVyaW5nTG9hZCA9ICFsb2FkZXIuc3RhdGVNYWNoaW5lKCkuY29t
bWl0dGVkRmlyc3RSZWFsRG9jdW1lbnRMb2FkKCk7CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2Vf
dW5pcXVlPFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZzZWN1
cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExp
c3QsIGR1cmluZ0xvYWQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgc2NoZWR1
bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3VtZW50
LCAmc2VjdXJpdHlPcmlnaW4sIHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0Zv
cndhcmRMaXN0LCBkdXJpbmdMb2FkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQog
CiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24oUmVmPEZv
cm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3Npb24pCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKFJlZjxGb3JtU3VibWlzc2lv
bj4mJiBzdWJtaXNzaW8KICAgICAgICAgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IExvY2tCYWNrRm9y
d2FyZExpc3Q6OlllczsKICAgICB9CiAgICAgCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1
ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lvbj4oV1RGTW92ZShzdWJtaXNzaW9uKSwgbG9ja0JhY2tG
b3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOworICAgIHNjaGVkdWxlKG1ha2VVbmlxdWU8U2NoZWR1
bGVkRm9ybVN1Ym1pc3Npb24+KFdURk1vdmUoc3VibWlzc2lvbiksIGxvY2tCYWNrRm9yd2FyZExp
c3QsIGR1cmluZ0xvYWQpKTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVs
ZVJlZnJlc2goRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCkKQEAgLTQ3OSw3ICs0NzksNyBA
QCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChEb2N1bWVudCYgaW5p
dGlhdGluZ0RvY3VtZW50KQogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZnJlc2g+KGluaXRp
YXRpbmdEb2N1bWVudCwgJm1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJs
LCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOworICAgIHNjaGVkdWxlKG1h
a2VVbmlxdWU8U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGluZ0RvY3VtZW50LCAmbV9mcmFtZS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1fZnJhbWUubG9hZGVyKCkub3V0Z29p
bmdSZWZlcnJlcigpKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVI
aXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCkBAIC00OTgsMTMgKzQ5OCwxMyBAQCB2b2lkIE5h
dmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKQog
ICAgIH0KIAogICAgIC8vIEluIGFsbCBvdGhlciBjYXNlcywgc2NoZWR1bGUgdGhlIGhpc3Rvcnkg
dHJhdmVyc2FsIHRvIG9jY3VyIGFzeW5jaHJvbm91c2x5LgotICAgIHNjaGVkdWxlKHN0ZDo6bWFr
ZV91bmlxdWU8U2NoZWR1bGVkSGlzdG9yeU5hdmlnYXRpb24+KHN0ZXBzKSk7CisgICAgc2NoZWR1
bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbj4oc3RlcHMpKTsKIH0KIAog
dm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVBhZ2VCbG9jayhEb2N1bWVudCYgb3Jp
Z2luRG9jdW1lbnQpCiB7CiAgICAgaWYgKHNob3VsZFNjaGVkdWxlTmF2aWdhdGlvbigpKQotICAg
ICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3JpZ2lu
RG9jdW1lbnQpKTsKKyAgICAgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRQYWdlQmxv
Y2s+KG9yaWdpbkRvY3VtZW50KSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6dGlt
ZXJGaXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCmluZGV4
IGUxN2E5ZGM3MmRlMDM3Yzk2MzRiYzFjYzkzYzJjMWE3N2E4NmJmYTMuLjI4MTdhNzY2NjQ1N2Iy
Mzk3M2E2OGZjZjdiYzAxODBjMTJiZjVjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6
OmluY3JlbWVudFByb2dyZXNzKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2UKIAogICAgIGF1dG8mIGl0ZW0gPSBtX3Byb2dyZXNzSXRlbXMuYWRkKGlkZW50aWZpZXIsIG51
bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgaXRlbSA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NJdGVtPihlc3RpbWF0ZWRMZW5ndGgpOworICAgICAg
ICBpdGVtID0gbWFrZVVuaXF1ZTxQcm9ncmVzc0l0ZW0+KGVzdGltYXRlZExlbmd0aCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3Vy
Y2VEZWNvZGVyLmNwcAppbmRleCBlYTVkYmZiYWFiMjBiZmQ0M2RlYWNmMWU3NzYxMWMzNDMzYWJh
YjgzLi44MjQ2YmIwNzA2Y2QwYzA3MWY4OTk2Mjg5ODZhNWJhNTFjNDhiNjM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBAIC01MzUsNyArNTM1
LDcgQEAgYm9vbCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjaGVja0ZvckhlYWRDaGFyc2V0KGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4sIGJvb2wKICAgICBpZiAobV9jb250ZW50VHlwZSA9PSBY
TUwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9jaGFyc2V0UGFyc2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7CisgICAgbV9jaGFyc2V0UGFyc2Vy
ID0gbWFrZVVuaXF1ZTxIVE1MTWV0YUNoYXJzZXRQYXJzZXI+KCk7CiAgICAgcmV0dXJuIGNoZWNr
Rm9yTWV0YUNoYXJzZXQoZGF0YSwgbGVuKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcAppbmRleCBjYTllNmM0MzQzZDc0MDEwNTUzYTllMTBmYTY1NjNlZTUy
MzkxYmJlLi5mYTkyNmVhMDYyYWRmZjIwNTcwYzhhMzY5MTI0NjcyYjllZjU2NmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIFRleHRUcmFja0xvYWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fY3VlUGFyc2VyKQotICAgICAg
ICBtX2N1ZVBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2Fz
dDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
KyAgICAgICAgbV9jdWVQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nh
c3Q8V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CiAKICAgICB3aGlsZSAobV9wYXJzZU9mZnNldCA8IGJ1ZmZlci0+c2l6ZSgpKSB7CiAgICAgICAg
IGF1dG8gZGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEobV9wYXJzZU9mZnNldCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTEy
NjNlMmYwNDU3NGI0ZjBlZTczYzA0ZThiNjJmNWM4MDcyYTc1OC4uNzc1MzJmODYxMzRlMDQzYWQz
N2QzZjU5OTk4YTZmNTdhNDI0MTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTE1LDExICsxMTUsMTEgQEAgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRh
YmxlTG9hZGVyQ2xpZW4KICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KTsKIAogICAg
IGF1dG8gc2VjdXJpdHlPcmlnaW5Db3B5ID0gc2VjdXJpdHlPcmlnaW4tPmlzb2xhdGVkQ29weSgp
OwotICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudFNlY3VyaXR5UG9saWN5PihnbG9iYWxTY29wZS51cmwoKS5pc29sYXRlZENvcHkoKSk7
CisgICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5ID0gbWFrZVVuaXF1ZTxDb250ZW50
U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNjb3BlLnVybCgpLmlzb2xhdGVkQ29weSgpKTsKICAgICBj
b250ZW50U2VjdXJpdHlQb2xpY3lDb3B5LT5jb3B5U3RhdGVGcm9tKGNvbnRlbnRTZWN1cml0eVBv
bGljeSk7CiAgICAgY29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVVwZ3JhZGVJbnNlY3Vy
ZVJlcXVlc3RTdGF0ZUZyb20oKmNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKLSAgICBhdXRvIG9w
dGlvbnNDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxMb2FkZXJUYXNrT3B0aW9ucz4ob3B0aW9ucywg
cmVxdWVzdC5odHRwUmVmZXJyZXIoKS5pc051bGwoKSA/IG91dGdvaW5nUmVmZXJyZXIgOiByZXF1
ZXN0Lmh0dHBSZWZlcnJlcigpLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luQ29weSkpOworICAgIGF1
dG8gb3B0aW9uc0NvcHkgPSBtYWtlVW5pcXVlPExvYWRlclRhc2tPcHRpb25zPihvcHRpb25zLCBy
ZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgpID8gb3V0Z29pbmdSZWZlcnJlciA6IHJlcXVl
c3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2VjdXJpdHlPcmlnaW5Db3B5KSk7CiAKICAgICAv
LyBBbGwgbG9hZHMgc3RhcnQgb3V0IGFzIERvY3VtZW50LiBJbnNpZGUgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlciB3ZSB1cGdyYWRlIHRoaXMgdG8gYSBXb3JrZXIgbG9hZC4KICAgICBBU1NFUlQob3B0
aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9PSBJbml0aWF0b3JDb250ZXh0OjpE
b2N1bWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGY5N2ViMDA0MjViZDI5YjNjYjZiY2IzNDVmYmZkNjUy
MjQwOGY4Y2UuLmJiYTkxMDQxOTE1NGVjZjQzYzEyMmUyZDkwY2Y4NjQ1NTk3YTk5ZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShOb2RlJiBub2RlLCBXVEY6OkZ1bmN0aW9uPGJvb2wKICAgICAv
LyBidXQgd2UgY2FuIGFwcHJveGltYXRlIHRoYXQgYnkgY2hlY2tpbmcgaWYgc2NyaXB0aW5nIGlz
IGVuYWJsZWQgcmlnaHQgbm93LgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UXVhbGlmaWVk
TmFtZT4+IHRhZ05hbWVzVG9GaWx0ZXI7CiAgICAgaWYgKGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUt
PnBhZ2UoKS0+c2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkgewotICAgICAgICB0YWdOYW1l
c1RvRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UXVhbGlmaWVkTmFtZT4+KCk7Cisg
ICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBtYWtlVW5pcXVlPFZlY3RvcjxRdWFsaWZpZWROYW1l
Pj4oKTsKICAgICAgICAgdGFnTmFtZXNUb0ZpbHRlci0+YXBwZW5kKEhUTUxOYW1lczo6bm9zY3Jp
cHRUYWcpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKaW5kZXggODM2OGE5NTcwNWUzMTkyZDFmODE3ZmYyZWNkNjgzN2UzZjllMTM1ZC4uZWY5
M2IzNTFlNzkxZDUyN2RhZTgwZjg3YzUyNWE3ZGMxNGU3ZTQyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKICAgICAgICAgbV9pbWFnZU9ic2VydmVyLT5jYWNoZWRJbWFnZXMoKS5hZGQodGhpcyk7CiAK
ICAgICBpZiAobV9pbWFnZSAmJiBpczxTVkdJbWFnZT4oKm1faW1hZ2UpKQotICAgICAgICBtX3N2
Z0ltYWdlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxT
VkdJbWFnZT4oKm1faW1hZ2UpKTsKKyAgICAgICAgbV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1
ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+KCptX2ltYWdlKSk7CiB9CiAKIHZv
aWQgQ2FjaGVkSW1hZ2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50
KQpAQCAtMzU3LDcgKzM1Nyw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjcmVhdGVJbWFn
ZSgpCiAKICAgICBpZiAobV9pbWFnZSkgewogICAgICAgICBpZiAoaXM8U1ZHSW1hZ2U+KCptX2lt
YWdlKSkKLSAgICAgICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
SW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAgICAgICAgICAg
bV9zdmdJbWFnZUNhY2hlID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZH
SW1hZ2U+KCptX2ltYWdlKSk7CiAKICAgICAgICAgLy8gU2VuZCBxdWV1ZWQgY29udGFpbmVyIHNp
emUgcmVxdWVzdHMuCiAgICAgICAgIGlmIChtX2ltYWdlLT51c2VzQ29udGFpbmVyU2l6ZSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cAppbmRleCBiZTYxODNhYmZhNTlkNWM4ZTE2MmZlYzFkNjU1MjQ1MjNhZGUyNzhjLi5mOWE3NWYz
NTQ1Mjc2OTAyYTllNGE1YzM1YjZhYzZiMWYxNTBjMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTIwOCw3ICsyMDgsNyBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cgogICAgICAgICBDYWNoZWRSZXNvdXJjZTo6cmVkaXJl
Y3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIGVsc2UgewogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKFJl
ZGlyZWN0UGFpcihyZXF1ZXN0LCByZXNwb25zZSkpOwotICAgICAgICBpdGVyYXRlQ2xpZW50cyhD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4obV9jbGll
bnRzKSwgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVzcG9uc2U+KHJlc3BvbnNl
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4odGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIHJlc3BvbnNlXSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7Cisg
ICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIG1ha2VVbmlxdWU8UmVzb3VyY2VS
ZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgICAgIENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2Vp
dmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGU0MzBlNDQ3YWM0OTQ2MzZjOTg0ZTc0ZDQwYjkxZTY1
Y2RlYmI1MGIuLjA1NjdkMWQ1ZGU4YzZmMTNlMTg2ODQ0YWVkNzU1NzVjZjE3ZTE3MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNTQ2
LDcgKzU0Niw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJl
c291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIC8vIFRoZXJlZm9yZSwgcmF0aGVyIHRoYW4g
aW1tZWRpYXRlbHkgc2VuZGluZyBjYWxsYmFja3Mgb24gYSBjYWNoZSBoaXQgbGlrZSBvdGhlciBD
YWNoZWRSZXNvdXJjZXMsCiAgICAgICAgIC8vIHdlIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5k
IGVuc3VyZSB3ZSBuZXZlciBmaW5pc2ggc3luY2hyb25vdXNseS4KICAgICAgICAgQVNTRVJUKCFt
X2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmNvbnRhaW5zKCZjbGllbnQpKTsKLSAgICAgICAgbV9j
bGllbnRzQXdhaXRpbmdDYWxsYmFjay5hZGQoJmNsaWVudCwgc3RkOjptYWtlX3VuaXF1ZTxDYWxs
YmFjaz4oKnRoaXMsIGNsaWVudCkpOworICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNr
LmFkZCgmY2xpZW50LCBtYWtlVW5pcXVlPENhbGxiYWNrPigqdGhpcywgY2xpZW50KSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg0M2E5ZDFmOWQ2Yzg1ZjEw
MDBhMmM0MGYxOTY0YjQ3YTJlYjFjN2EuLmIzNGI4ZmQzNWMxMDc3YTU0NTJhYmIzNDMyMzYxYjRj
YzNkMTFjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIFJlc291cmNlRXJyb3JPcjxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1CiAgICAgLy8gRW50cnkgcG9pbnQgdG8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5v
cmcvI21haW4tZmV0Y2guCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gb3Jp
Z2luYWxSZXF1ZXN0OwogICAgIGlmIChDYWNoZWRSZXNvdXJjZTo6c2hvdWxkVXNlUGluZ0xvYWQo
dHlwZSkgfHwgcmVxdWVzdC5vcHRpb25zKCkuZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpIHsKLSAgICAgICAgb3JpZ2luYWxSZXF1ZXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkp
OworICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBtYWtlVW5pcXVlPFJlc291cmNlUmVxdWVzdD4o
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIG9yaWdpbmFsUmVxdWVzdC0+Y2xl
YXJIVFRQUmVmZXJyZXIoKTsKICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBPcmln
aW4oKTsKICAgICB9CkBAIC0xMzkxLDcgKzEzOTEsNyBAQCBSZXNvdXJjZUVycm9yT3I8Q2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJl
bAogICAgICAgICByZXNvdXJjZVZhbHVlLT5pbmNyZWFzZVByZWxvYWRDb3VudCgpOwogCiAgICAg
ICAgIGlmICghbV9wcmVsb2FkcykKLSAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICBtX3By
ZWxvYWRzID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAg
ICAgICBtX3ByZWxvYWRzLT5hZGQocmVzb3VyY2VWYWx1ZS5nZXQoKSk7CiAgICAgfQogICAgIHJl
dHVybiByZXNvdXJjZTsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmNsZWFyUHJlbG9hZHMoQ2xlYXJQcmVsb2Fkc01vZGUgbW9kZSkKICAgICAgICAgQVNT
RVJUKHJlc291cmNlKTsKICAgICAgICAgaWYgKG1vZGUgPT0gQ2xlYXJQcmVsb2Fkc01vZGU6OkNs
ZWFyU3BlY3VsYXRpdmVQcmVsb2FkcyAmJiByZXNvdXJjZS0+aXNMaW5rUHJlbG9hZCgpKSB7CiAg
ICAgICAgICAgICBpZiAoIXJlbWFpbmluZ0xpbmtQcmVsb2FkcykKLSAgICAgICAgICAgICAgICBy
ZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPExpc3RIYXNoU2V0PENhY2hl
ZFJlc291cmNlKj4+KCk7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nTGlua1ByZWxvYWRzID0g
bWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxDYWNoZWRSZXNvdXJjZSo+PigpOwogICAgICAgICAgICAg
cmVtYWluaW5nTGlua1ByZWxvYWRzLT5hZGQocmVzb3VyY2UpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwCmluZGV4IGQzYjgwNTE0MjNjM2ZjNTI0YmQ4YjZmNTVmMzVhNmFjMjIzMGIyMDIuLjNkZWFk
NDZjMWQ0ZDc4Y2Y3Y2RmMDNhZmZjYmVmMzkyNzgyNjNjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtODYsNyArODYsNyBAQCBhdXRvIE1lbW9y
eUNhY2hlOjplbnN1cmVTZXNzaW9uUmVzb3VyY2VNYXAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiBDYWNoZWRSZQogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKICAgICBhdXRv
JiBtYXAgPSBtX3Nlc3Npb25SZXNvdXJjZXMuYWRkKHNlc3Npb25JRCwgbnVsbHB0cikuaXRlcmF0
b3ItPnZhbHVlOwogICAgIGlmICghbWFwKQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVl
PENhY2hlZFJlc291cmNlTWFwPigpOworICAgICAgICBtYXAgPSBtYWtlVW5pcXVlPENhY2hlZFJl
c291cmNlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0yMTYsNyArMjE2LDcgQEAg
Ym9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyJiYgaW1hZ2Us
IGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgIHJlbW92ZUltYWdlRnJvbUNhY2hlKHVybCwgZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24pOyAvLyBSZW1vdmUgY2FjaGUgZW50cnkgaWYgaXQgYWxyZWFk
eSBleGlzdHMuCiAKICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShX
VEZNb3ZlKGltYWdlKSwgbnVsbHB0cik7Ci0gICAgYXV0byBjYWNoZWRJbWFnZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCksIHNlc3Npb25JRCwg
Y29va2llSmFyLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgYXV0byBjYWNoZWRJbWFn
ZSA9IG1ha2VVbmlxdWU8Q2FjaGVkSW1hZ2U+KHVybCwgYml0bWFwSW1hZ2UucHRyKCksIHNlc3Np
b25JRCwgY29va2llSmFyLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CiAKICAgICBjYWNoZWRJ
bWFnZS0+YWRkQ2xpZW50KGR1bW15Q2FjaGVkSW1hZ2VDbGllbnQoKSk7CiAgICAgY2FjaGVkSW1h
Z2UtPnNldERlY29kZWRTaXplKGJpdG1hcEltYWdlLT5kZWNvZGVkU2l6ZSgpKTsKQEAgLTQ3Myw3
ICs0NzMsNyBAQCBhdXRvIE1lbW9yeUNhY2hlOjpscnVMaXN0Rm9yKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkgLT4gTFJVTGlzdCYKIAogICAgIG1fYWxsUmVzb3VyY2VzLnJlc2VydmVDYXBhY2l0
eShxdWV1ZUluZGV4ICsgMSk7CiAgICAgd2hpbGUgKG1fYWxsUmVzb3VyY2VzLnNpemUoKSA8PSBx
dWV1ZUluZGV4KQotICAgICAgICBtX2FsbFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxMUlVMaXN0PigpKTsKKyAgICAgICAgbV9hbGxSZXNvdXJjZXMudW5jaGVja2Vk
QXBwZW5kKG1ha2VVbmlxdWU8TFJVTGlzdD4oKSk7CiAgICAgcmV0dXJuICptX2FsbFJlc291cmNl
c1txdWV1ZUluZGV4XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9QcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9h
ZGVyLm1tCmluZGV4IGY2YjgyMjE3OTE2Y2FkOTViZmU5NjBiYjNlMzc4NGEyNzBhOWJhNjcuLmM1
Y2E1YzI1ZjExYjRkOGE5Y2E5M2VmYzg4OTA5OTA3ZjZiNzY2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KQEAgLTg2LDcgKzg2LDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoUmVzb3VyY2VMb2FkZXI6KFJlc291cmNlTG9hZGVyJilyZXNvdXJjZUxv
YWRlciByZXNvdXJjZVIKIAogICAgIF9yZXNvdXJjZUxvYWRlciA9IG1ha2VXZWFrUHRyKHJlc291
cmNlTG9hZGVyKTsKICAgICBfcmVzcG9uc2UgPSByZXNvdXJjZVJlc3BvbnNlOwotICAgIF9jb252
ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25z
ZSk7CisgICAgX2NvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwg
X3Jlc3BvbnNlKTsKICAgICBfYnVmZmVyZWREYXRhQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBfc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGlu
ZyA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5
QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKTsKIApAQCAtMjQ2LDcgKzI0Niw3IEBAIC0g
KHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyCiAgICAgfQogCiAgICAgX2NsaWVudC0+ZGlkUmVxdWVzdFBh
c3N3b3JkKFtzZWxmLCByZXRhaW5lZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChjb25zdCBTdHJp
bmcmIHBhc3N3b3JkKSB7Ci0gICAgICAgIF9jb252ZXJ0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBy
ZXZpZXdDb252ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOworICAgICAgICBfY29u
dmVydGVyID0gbWFrZVVuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UsIHBh
c3N3b3JkKTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgYXBwZW5k
RGF0YUFycmF5Ol9idWZmZXJlZERhdGFBcnJheS5nZXQoKV07CiAgICAgICAgIFtfY29udmVydGVy
LT5wbGF0Zm9ybUNvbnZlcnRlcigpIGZpbmlzaGVkQXBwZW5kaW5nRGF0YV07CiAgICAgfSk7CkBA
IC0yNjgsNyArMjY4LDcgQEAgUHJldmlld0xvYWRlcjo6flByZXZpZXdMb2FkZXIoKQogc3RkOjp1
bmlxdWVfcHRyPFByZXZpZXdMb2FkZXI+IFByZXZpZXdMb2FkZXI6OmNyZWF0ZShSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBB
U1NFUlQoUHJldmlld0NvbnZlcnRlcjo6c3VwcG9ydHNNSU1FVHlwZShyZXNwb25zZS5taW1lVHlw
ZSgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0xvYWRlcj4obG9hZGVy
LCByZXNwb25zZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UHJldmlld0xvYWRlcj4obG9hZGVy
LCByZXNwb25zZSk7CiB9CiAKIGJvb2wgUHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGM0NzljYTFmOWNiMDdkNGFjN2I0YjlmYjIyODUxZjBj
OTk0YjE3MTQuLjRjY2RhYjA0YjdiM2Y1NTM0Y2VjYzJhMTllYzBhNGJjYjdhYjE3ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE4MCw3
ICsxODAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJv
bGxlcjo6bWF5YmVDcmVhdGVDb250ZXh0TWVudShFdmVudAogICAgIH0KICNlbmRpZgogCi0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnU+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q29udGV4dE1lbnU+KCk7CiB9CiAKIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpz
aG93Q29udGV4dE1lbnUoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFn
ZU92ZXJsYXlzLmNwcAppbmRleCBmNjNkYWE3ZjYzNDcyNTU4ODczZGIzYjU4M2JjMjUxMmExNzc1
MjdhLi5jZGM3NGY2ZGUwOWU5M2RlOWFhYjkyMzU2ZWYyZmJmNDRkZDJkMzBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtODgsNyArODgsNyBAQCBjbGFz
cyBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6IHB1YmxpYyBSZWdpb25PdmVybGF5IHsK
IAogYm9vbCBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIHsKLSAgICBh
dXRvIHJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgIGF1dG8gcmVnaW9u
ID0gbWFrZVVuaXF1ZTxSZWdpb24+KCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBGcmFtZSogZnJh
bWUgPSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmRv
Y3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNDhjMDczNDc3
MGViMTEwYzFjNWQ4NDUzZGQwODc5OTJlNTY0OWExZS4uZDIwYjk4YzQxNWVlYzgyNzZmODkwMGYy
NGM2N2E5N2YxMDFkMGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
Mzg1LDcgKzM4NSw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX3BlbmRpbmdNb21lbnR1bVdoZWVsRXZlbnRzVGlt
ZXIoKnRoaXMsICZFdmVudEhhbmRsZXI6OmNsZWFyTGF0Y2hlZFN0YXRlKQogI2VuZGlmCi0gICAg
LCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QXV0b3Njcm9sbENvbnRy
b2xsZXI+KCkpCisgICAgLCBtX2F1dG9zY3JvbGxDb250cm9sbGVyKG1ha2VVbmlxdWU8QXV0b3Nj
cm9sbENvbnRyb2xsZXI+KCkpCiAjaWYgIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgICwg
bV9mYWtlTW91c2VNb3ZlRXZlbnRUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNl
TW92ZUV2ZW50VGltZXJGaXJlZCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDIzMzcyOTQyYjM3NjNkOTI5M2QyNjViMzVhY2MxNTI1ZTM0Y2MwMGYuLmE1ZTVlZGUwYjRi
NzQ3ZTQ3OTRkYzc5NDA2YWVmY2NiYjM4NWRkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTEyOTEsNyArMTI5MSw3IEBAIFJlbmRlckJveCogRnJhbWVWaWV3OjplbWJlZGRlZENv
bnRlbnRCb3goKSBjb25zdAogdm9pZCBGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRh
dGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQogewogICAgIGlmICghbV9l
bWJlZGRlZE9iamVjdHNUb1VwZGF0ZSkKLSAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4o
KTsKKyAgICAgICAgbV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZSA9IG1ha2VVbmlxdWU8TGlzdEhh
c2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4oKTsKIAogICAgIEhUTUxGcmFtZU93bmVyRWxl
bWVudCYgZWxlbWVudCA9IGVtYmVkZGVkT2JqZWN0LmZyYW1lT3duZXJFbGVtZW50KCk7CiAgICAg
aWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50
PihlbGVtZW50KSkgewpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNs
b3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogICAgIGJvb2wgaGFkU2xv
d1JlcGFpbnRPYmplY3RzID0gaGFzU2xvd1JlcGFpbnRPYmplY3RzKCk7CiAKICAgICBpZiAoIW1f
c2xvd1JlcGFpbnRPYmplY3RzKQotICAgICAgICBtX3Nsb3dSZXBhaW50T2JqZWN0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4+KCk7CisgICAgICAgIG1f
c2xvd1JlcGFpbnRPYmplY3RzID0gbWFrZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckVsZW1l
bnQqPj4oKTsKIAogICAgIG1fc2xvd1JlcGFpbnRPYmplY3RzLT5hZGQoJnJlbmRlcmVyKTsKICAg
ICBpZiAoaGFkU2xvd1JlcGFpbnRPYmplY3RzKQpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9pZCBG
cmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
KQogdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogb2JqZWN0KQogewogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0cykKLSAgICAgICAgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldD4oKTsKKyAgICAgICAgbV92aWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IG1ha2VVbmlxdWU8Vmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdFNldD4oKTsKIAogICAgIGlmICghbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+Y29u
dGFpbnMob2JqZWN0KSkgewogICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5h
ZGQob2JqZWN0KTsKQEAgLTQ4NjYsNyArNDg2Niw3IEBAIFN0cmluZyBGcmFtZVZpZXc6OnRyYWNr
ZWRSZXBhaW50UmVjdHNBc1RleHQoKSBjb25zdAogYm9vbCBGcmFtZVZpZXc6OmFkZFNjcm9sbGFi
bGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICBpZiAoIW1fc2Ny
b2xsYWJsZUFyZWFzKQotICAgICAgICBtX3Njcm9sbGFibGVBcmVhcyA9IHN0ZDo6bWFrZV91bmlx
dWU8U2Nyb2xsYWJsZUFyZWFTZXQ+KCk7CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFzID0gbWFr
ZVVuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKICAgICAKICAgICBpZiAobV9zY3JvbGxhYmxl
QXJlYXMtPmFkZChzY3JvbGxhYmxlQXJlYSkuaXNOZXdFbnRyeSkgewogICAgICAgICBzY3JvbGxh
YmxlQXJlYVNldENoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3TGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xh
eW91dENvbnRleHQuY3BwCmluZGV4IDczMDk4ZjFmYTFmMTA3MWU2MWZjZDNhYTY1MzUzMzBkM2U4
OWJmNTkuLmU4NThjOTJjYmY4YzMxYTMyMWJmMzgwMDk3YWJhNTVmMTU3MDAwYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtNTk2LDE0
ICs1OTYsMTQgQEAgdm9pZCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUo
UmVuZGVyRWxlbWVudCYgcm9vdCkKICAgICBBU1NFUlQoIW1fcGFpbnRPZmZzZXRDYWNoZURpc2Fi
bGVDb3VudCk7CiAgICAgQVNTRVJUKCFsYXlvdXRTdGF0ZSgpKTsKIAotICAgIG1fbGF5b3V0U3Rh
dGVTdGFjay5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4ocm9vdCkp
OworICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxSZW5kZXJMYXlvdXRT
dGF0ZT4ocm9vdCkpOwogfQogCiBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlv
dXRTdGF0ZUZvclBhZ2luYXRpb25JZk5lZWRlZChSZW5kZXJCbG9ja0Zsb3cmIGxheW91dFJvb3Qp
CiB7CiAgICAgaWYgKGxheW91dFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBt
X2xheW91dFN0YXRlU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5b3V0U3Rh
dGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRlOjpJc1BhZ2luYXRlZDo6WWVzKSk7Cisg
ICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRl
PihsYXlvdXRSb290LCBSZW5kZXJMYXlvdXRTdGF0ZTo6SXNQYWdpbmF0ZWQ6OlllcykpOwogICAg
IHJldHVybiB0cnVlOwogfQogICAgIApAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgRnJhbWVWaWV3
TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlKFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0
IExheW91dFNpCiAgICAgYXV0byogbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwog
ICAgIGlmICghbGF5b3V0U3RhdGUgfHwgIW5lZWRzRnVsbFJlcGFpbnQoKSB8fCBsYXlvdXRTdGF0
ZS0+aXNQYWdpbmF0ZWQoKSB8fCByZW5kZXJlci5lbmNsb3NpbmdGcmFnbWVudGVkRmxvdygpCiAg
ICAgICAgIHx8IGxheW91dFN0YXRlLT5saW5lR3JpZCgpIHx8IChyZW5kZXJlci5zdHlsZSgpLmxp
bmVHcmlkKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpICYmIHJlbmRlcmVyLmlz
UmVuZGVyQmxvY2tGbG93KCkpKSB7Ci0gICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCBy
ZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOworICAgICAg
ICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+
KG1fbGF5b3V0U3RhdGVTdGFjaywgcmVuZGVyZXIsIG9mZnNldCwgcGFnZUhlaWdodCwgcGFnZUhl
aWdodENoYW5nZWQpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwCmluZGV4IDhjM2M1MmEwNzM1
MjI3OTBjZDBjNGE2MGRjMDVlNjE0MTJjMTlhZTkuLjUyMjdlNDJhYzA5NmNlNjkyNWQ3ZWM2YTE4
ZTUxOTI1ZDJlMDA2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcApAQCAt
MTQ5LDcgKzE0OSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXImIE5hdmlnYXRvckJhc2U6OnNl
cnZpY2VXb3JrZXIoKQogewogICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkpOwogICAgIGlmICghbV9zZXJ2aWNl
V29ya2VyQ29udGFpbmVyKQotICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgKnRoaXMpOworICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb250YWluZXIgPSBtYWtlVW5p
cXVlPFNlcnZpY2VXb3JrZXJDb250YWluZXI+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRo
aXMpOwogICAgIHJldHVybiAqbV9zZXJ2aWNlV29ya2VyQ29udGFpbmVyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCAzOTVkMmYwMTIzM2NiOTg5ZTdlZjU1NWNjNzE4YmU5NDg5NjcxMmQ5Li4z
ZjU4MTgzOTk1MjIwYTM4M2YzZjg3NjhhOWJmODM0YTNmMmYzODAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTIxMSwyNiArMjExLDI2IEBAIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PEFjdGl2
aXR5U3RhdGU6OkZsYWc+IHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpCiB9CiAKIFBhZ2U6OlBh
Z2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2hyb21l
KHN0ZDo6bWFrZV91bmlxdWU8Q2hyb21lPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmNocm9t
ZUNsaWVudCkpCi0gICAgLCBtX2RyYWdDYXJldENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxE
cmFnQ2FyZXRDb250cm9sbGVyPigpKQorICAgIDogbV9jaHJvbWUobWFrZVVuaXF1ZTxDaHJvbWU+
KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKKyAgICAsIG1fZHJhZ0Nh
cmV0Q29udHJvbGxlcihtYWtlVW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKLSAgICAsIG1fZHJhZ0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkK
KyAgICAsIG1fZHJhZ0NvbnRyb2xsZXIobWFrZVVuaXF1ZTxEcmFnQ29udHJvbGxlcj4oKnRoaXMs
ICpwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50KSkKICNlbmRpZgotICAgICwgbV9mb2N1c0Nv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxGb2N1c0NvbnRyb2xsZXI+KCp0aGlzLCBwYWdlSW5p
dGlhbEFjdGl2aXR5U3RhdGUoKSkpCisgICAgLCBtX2ZvY3VzQ29udHJvbGxlcihtYWtlVW5pcXVl
PEZvY3VzQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVyKHN0
ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1
cmF0aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKKyAgICAsIG1fY29udGV4dE1lbnVDb250cm9sbGVy
KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0
aW9uLmNvbnRleHRNZW51Q2xpZW50KSkKICNlbmRpZgotICAgICwgbV91c2VySW5wdXRCcmlkZ2Uo
c3RkOjptYWtlX3VuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKLSAgICAsIG1faW5zcGVj
dG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlz
LCBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQpKQorICAgICwgbV91c2VySW5wdXRC
cmlkZ2UobWFrZVVuaXF1ZTxVc2VySW5wdXRCcmlkZ2U+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVj
dG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzLCBwYWdl
Q29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQpKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5U
UykKLSAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9p
bnRlckNhcHR1cmVDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3BvaW50ZXJDYXB0dXJlQ29u
dHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJDYXB0dXJlQ29udHJvbGxlcj4oKnRoaXMpKQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICAsIG1fcG9pbnRlckxvY2tDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCisgICAg
LCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihtYWtlVW5pcXVlPFBvaW50ZXJMb2NrQ29udHJvbGxl
cj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3NldHRpbmdzKFNldHRpbmdzOjpjcmVhdGUodGhp
cykpCi0gICAgLCBtX3Byb2dyZXNzKHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NUcmFja2VyPigq
cGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKLSAgICAsIG1fYmFja0Zv
cndhcmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVyPigq
dGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQorICAg
ICwgbV9wcm9ncmVzcyhtYWtlVW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0
aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCisgICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxl
cihtYWtlVW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKICAgICAsIG1fbWFpbkZyYW1lKEZyYW1l
OjpjcmVhdGUodGhpcywgbnVsbHB0ciwgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9y
TWFpbkZyYW1lKSkKICAgICAsIG1fZWRpdG9yQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24uZWRpdG9yQ2xpZW50KSkKICAgICAsIG1fcGx1Z0luQ2xpZW50KHBhZ2VDb25maWd1cmF0aW9u
LnBsdWdJbkNsaWVudCkKQEAgLTI1MCw5ICsyNTAsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1
cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2RvbVRpbWVyQWxpZ25tZW50SW50
ZXJ2YWxJbmNyZWFzZVRpbWVyKCp0aGlzLCAmUGFnZTo6ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZh
bEluY3JlYXNlVGltZXJGaXJlZCkKICAgICAsIG1fYWN0aXZpdHlTdGF0ZShwYWdlSW5pdGlhbEFj
dGl2aXR5U3RhdGUoKSkKICAgICAsIG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHBhZ2VDb25maWd1
cmF0aW9uLmFsdGVybmF0aXZlVGV4dENsaWVudCkKLSAgICAsIG1fY29uc29sZUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQ2xpZW50PigqdGhpcykpCisgICAgLCBtX2NvbnNvbGVD
bGllbnQobWFrZVVuaXF1ZTxQYWdlQ29uc29sZUNsaWVudD4oKnRoaXMpKQogI2lmIEVOQUJMRShS
RU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0ZDo6bWFrZV91
bmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yRGVidWdnYWJs
ZShtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fc29j
a2V0UHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5zb2NrZXRQcm92aWRlcikpCiAg
ICAgLCBtX2Nvb2tpZUphcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvb2tpZUphcikpCkBA
IC0yNjgsMTYgKzI2OCwxNiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpZ3VyYXRpb24pCiAgICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlVGltZXIo
KnRoaXMsICZQYWdlOjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlclVwZGF0ZVRpbWVyRmlyZWQpCiAj
ZW5kaWYKICAgICAsIG1faXNVdGlsaXR5UGFnZShpc1V0aWxpdHlQYWdlQ2hyb21lQ2xpZW50KGNo
cm9tZSgpLmNsaWVudCgpKSkKLSAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBh
Z2UoKSA/IG51bGxwdHIgOiBzdGQ6Om1ha2VfdW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRo
aXMpKQotICAgICwgbV9sb3dQb3dlck1vZGVOb3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPExvd1Bv
d2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsgaGFu
ZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQotICAgICwg
bV9wZXJmb3JtYW5jZUxvZ2dpbmcoc3RkOjptYWtlX3VuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+
KCp0aGlzKSkKKyAgICAsIG1fcGVyZm9ybWFuY2VNb25pdG9yKGlzVXRpbGl0eVBhZ2UoKSA/IG51
bGxwdHIgOiBtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTW9uaXRvcj4oKnRoaXMpKQorICAgICwgbV9s
b3dQb3dlck1vZGVOb3RpZmllcihtYWtlVW5pcXVlPExvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhp
c10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsgaGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdl
KGlzTG93UG93ZXJNb2RlRW5hYmxlZCk7IH0pKQorICAgICwgbV9wZXJmb3JtYW5jZUxvZ2dpbmco
bWFrZVVuaXF1ZTxQZXJmb3JtYW5jZUxvZ2dpbmc+KCp0aGlzKSkKICNpZiBQTEFURk9STShNQUMp
ICYmIChFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJf
REVURUNUSU9OKSkKLSAgICAsIG1fc2VydmljZXNPdmVybGF5Q29udHJvbGxlcihzdGQ6Om1ha2Vf
dW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2Vydmlj
ZXNPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+
KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXIoV2hl
ZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKSkKLSAgICAsIG1fcGFnZU92ZXJsYXlDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCisgICAg
LCBtX3BhZ2VPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q29udHJvbGxl
cj4oKnRoaXMpKQogI2lmIEVOQUJMRShBUFBMRV9QQVkpCi0gICAgLCBtX3BheW1lbnRDb29yZGlu
YXRvcihzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0
aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCkpCisgICAgLCBtX3BheW1lbnRDb29yZGluYXRv
cihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKnBhZ2VDb25maWd1cmF0aW9uLnBheW1l
bnRDb29yZGluYXRvckNsaWVudCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAg
ICwgbV9hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IobWFrZVVuaXF1ZVJlZjxBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3I+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yQ2xpZW50KSkpCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBQYWdlOjppbml0R3JvdXAo
KQogewogICAgIEFTU0VSVCghbV9zaW5nbGVQYWdlR3JvdXApOwogICAgIEFTU0VSVCghbV9ncm91
cCk7Ci0gICAgbV9zaW5nbGVQYWdlR3JvdXAgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VHcm91cD4o
KnRoaXMpOworICAgIG1fc2luZ2xlUGFnZUdyb3VwID0gbWFrZVVuaXF1ZTxQYWdlR3JvdXA+KCp0
aGlzKTsKICAgICBtX2dyb3VwID0gbV9zaW5nbGVQYWdlR3JvdXAuZ2V0KCk7CiB9CiAKQEAgLTI2
MzMsNyArMjYzMyw3IEBAIHZvaWQgUGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxl
KGJvb2wgdmlzaWJsZSkKICAgICB9CiAKICAgICBpZiAoIW1fcmVzb3VyY2VVc2FnZU92ZXJsYXkg
JiYgbV9zZXR0aW5ncy0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkKLSAgICAgICAg
bV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VVc2FnZU92
ZXJsYXk+KCp0aGlzKTsKKyAgICAgICAgbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSA9IG1ha2VVbmlx
dWU8UmVzb3VyY2VVc2FnZU92ZXJsYXk+KCp0aGlzKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCmluZGV4IDgyNDZhZGMxYTE4MGIxMzhhODAy
YzU2NDU1NDNmZmIyYTNlZTI4NGEuLjgzYTI0MDMwMDQ5NDViMWFlMDI3MzM3M2NhZDdlYTk5MjRl
NmNjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBAIC0x
NjEsOSArMTYxLDkgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKIAogICAgIGlmIChjYWxsU3Rh
Y2spCi0gICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBj
YWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBt
ZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1l
c3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25O
dWxsKCksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2Fn
ZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkwsIHN1Z2dlc3RlZExp
bmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVy
KTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHN1Z2dlc3Rl
ZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVyLCBzdGF0ZSwg
cmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgYWRkTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsK
IH0KQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0
aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogICAgIFN0cmlu
ZyBtZXNzYWdlVGV4dDsKICAgICBib29sIGdvdE1lc3NhZ2UgPSBhcmd1bWVudHMtPmdldEZpcnN0
QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlVGV4dCk7CiAKLSAgICBhdXRvIG1lc3NhZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwg
ZXhlYyk7CisgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRl
eHQsIGFyZ3VtZW50cy5jb3B5UmVmKCksIGV4ZWMpOwogCiAgICAgU3RyaW5nIHVybCA9IG1lc3Nh
Z2UtPnVybCgpOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5lKCk7CkBA
IC00MDYsNyArNDA2LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChkYXRhVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkTWVzc2FnZShz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkNv
dWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUoYXJndW1lbnRzKSkpOworICAg
ICAgICAgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgIkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiX3MsIFdURk1vdmUoYXJn
dW1lbnRzKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNDE2
LDcgKzQxNiw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmCiAgICAgZm9yIChzaXplX3QgaSA9
ICghdGFyZ2V0ID8gMCA6IDEpOyBpIDwgYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsraSkK
ICAgICAgICAgYWRqdXN0ZWRBcmd1bWVudHMuYXBwZW5kKHsgc3RhdGUtPnZtKCksIGFyZ3VtZW50
cy0+YXJndW1lbnRBdChpKSB9KTsKICAgICBhcmd1bWVudHMgPSBTY3JpcHRBcmd1bWVudHM6OmNy
ZWF0ZSgqc3RhdGUsIFdURk1vdmUoYWRqdXN0ZWRBcmd1bWVudHMpKTsKLSAgICBhZGRNZXNzYWdl
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkxvZywgZGF0
YVVSTCwgV1RGTW92ZShhcmd1bWVudHMpKSk7CisgICAgYWRkTWVzc2FnZShtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3Nh
Z2VUeXBlOjpJbWFnZSwgTWVzc2FnZUxldmVsOjpMb2csIGRhdGFVUkwsIFdURk1vdmUoYXJndW1l
bnRzKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5jcHAKaW5kZXggOTE5MzYwNDVjMmZhZjc2Y2FjNWUyYzY5ZTYyMzNmMmNlMzBiZjliMS4uMTI4
YzE4ZjE0YjkwOGU3MWJjN2NlZmIzOTYyMDdmZWJiYzAwZjJhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUdyb3VwLmNwcApAQCAtMTE2LDkgKzExNiw5IEBAIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMmIFBh
Z2VHcm91cDo6Y2FwdGlvblByZWZlcmVuY2VzKCkKIHsKICAgICBpZiAoIW1fY2FwdGlvblByZWZl
cmVuY2VzKSB7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlf
RlJBTUVXT1JLKQotICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKKyAgICAgICAgbV9jYXB0
aW9uUHJlZmVyZW5jZXMgPSBtYWtlVW5pcXVlPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
PigqdGhpcyk7CiAjZWxzZQotICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRoaXMpOworICAgICAgICBtX2NhcHRp
b25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4oKnRoaXMp
OwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4IDZj
MTViM2ZhYTgzZjVjYWUwZDkxNzZkMDBjOGFmYzE1Yjc2NjkzMTYuLmNiYmFjMjFkNDAwNWIxYjBl
MTE4MDIyZjdhYTE0YThiY2ZlZDg1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3Bw
CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBQZXJmb3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZm
ZXJGdWxsVGltZXJGaXJlZCgpCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWFyayhj
b25zdCBTdHJpbmcmIG1hcmtOYW1lKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAg
ICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAg
ICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAKICAg
ICBhdXRvIHJlc3VsdCA9IG1fdXNlclRpbWluZy0+bWFyayhtYXJrTmFtZSk7CiAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTI3OSwxNCArMjc5LDE0IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB2b2lkIFBlcmZv
cm1hbmNlOjpjbGVhck1hcmtzKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAgaWYgKCFt
X3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNl
clRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJU
aW1pbmc+KCp0aGlzKTsKICAgICBtX3VzZXJUaW1pbmctPmNsZWFyTWFya3MobWFya05hbWUpOwog
fQogCiBFeGNlcHRpb25Pcjx2b2lkPiBQZXJmb3JtYW5jZTo6bWVhc3VyZShjb25zdCBTdHJpbmcm
IG1lYXN1cmVOYW1lLCBjb25zdCBTdHJpbmcmIHN0YXJ0TWFyaywgY29uc3QgU3RyaW5nJiBlbmRN
YXJrKQogewogICAgIGlmICghbV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBz
dGQ6Om1ha2VfdW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5n
ID0gbWFrZVVuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IG1f
dXNlclRpbWluZy0+bWVhc3VyZShtZWFzdXJlTmFtZSwgc3RhcnRNYXJrLCBlbmRNYXJrKTsKICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMzAwLDcgKzMwMCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFBlcmZvcm1hbmNlOjptZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUs
IGNvbnN0IFN0cmluZyYKIHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMoY29uc3QgU3Ry
aW5nJiBtZWFzdXJlTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91
c2VyVGltaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAg
IG1fdXNlclRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1fdXNl
clRpbWluZy0+Y2xlYXJNZWFzdXJlcyhtZWFzdXJlTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcAppbmRleCAwMzcwZjI4ODdmNjViNTdiM2NkODk3ZTRmYzY5ZThhMmVm
Yjg3NWRmLi40NDI5MWFlZmEzN2M4YTdhODQ0OGJlYzM5YWVlYWMyNDM5ZWM0NzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBQcmlu
dENvbnRleHQ6Om91dHB1dExpbmtlZERlc3RpbmF0aW9ucyhHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgRG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2xpbmtlZERlc3Rp
bmF0aW9ucykgewotICAgICAgICBtX2xpbmtlZERlc3RpbmF0aW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8SGFzaE1hcDxTdHJpbmcsIFJlZjxFbGVtZW50Pj4+KCk7CisgICAgICAgIG1fbGlua2VkRGVz
dGluYXRpb25zID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+Pj4oKTsK
ICAgICAgICAgY29sbGVjdExpbmtlZERlc3RpbmF0aW9ucyhkb2N1bWVudCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKaW5k
ZXggNTZhMDExYzRjZWU5OTc4OTkwMWZhZDM2MzAyYmUxMGMzNDU2NjUyNy4uM2I4ODFkZmJiMTcx
N2Y0ZTQxMWE2YzUzNDQ1OTVmYmQzYWI0MzA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIFJl
bmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6aXNTY2hlZHVsZWQoKSBjb25zdAogdm9pZCBSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXI6OnN0YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAgICBBU1NF
UlQoIWlzU2NoZWR1bGVkKCkpOwotICAgIG1fcmVmcmVzaFRpbWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxUaW1lcj4oKnRoaXMsICZSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNo
RmlyZWQpOworICAgIG1fcmVmcmVzaFRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oKnRoaXMsICZS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQpOwogICAgIG1fcmVm
cmVzaFRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAppbmRleCBmYWRlNjJmYzc4N2VlNDg5Nzlh
ZjZkZDgyNjYyNzc5ODA0ZDM3NTE3Li42ZjA2MDgxNzgyNmVjNTZjNmVlOGE1ZjhjZDM5NDRlYzJk
NDE5MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyCiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXI+IGNyZWF0ZShQYWdlJiBwYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPihwYWdlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyPihwYWdlKTsKICAgICB9CiAKICAgICBS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoUGFnZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmNwcAppbmRleCA0MjM0MTgyODBlYTJlZTNjOWJmZGZjOTFjZDEyN2I5NjhlYjFlMWJm
Li4wZGViMDY0MTQ4Zjk3MjZjZDM4YjQxMDA1ZDUyMjk3MjYwYzFjNjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgU2VjdXJp
dHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBzb3VyY2VPCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihvcmlnaW5BY2Nlc3NNYXBMb2Nr
KTsKICAgICBPcmlnaW5BY2Nlc3NNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBvcmlnaW5BY2Nlc3NN
YXAoKS5hZGQoc291cmNlU3RyaW5nLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50
cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9y
aWdpbkFjY2Vzc1doaXRlTGlzdD4oKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1ha2VVbmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOwogCiAgICAgT3JpZ2luQWNjZXNz
V2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICBsaXN0
LT5hcHBlbmQoT3JpZ2luQWNjZXNzRW50cnkoZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRp
b25Eb21haW4sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zID8gT3JpZ2luQWNjZXNzRW50cnk6
OkFsbG93U3ViZG9tYWlucyA6IE9yaWdpbkFjY2Vzc0VudHJ5OjpEaXNhbGxvd1N1YmRvbWFpbnMs
IE9yaWdpbkFjY2Vzc0VudHJ5OjpUcmVhdElQQWRkcmVzc0FzSVBBZGRyZXNzKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKaW5kZXggYjY4NDg5NmYzOTg4NDYyNTRhMTc5N2FkY2Rl
ZDY2NjYwNWU4NWQ1Yy4uMjdlZWE2YzBhYjkzOGViYzhmOTY1ZGFjYjgyMDMxMTQ0MzE2MGI5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0
aWMgY29uc3QgU2Vjb25kcyBsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCA9IDI1MF9tczsKIAogU2V0
dGluZ3NCYXNlOjpTZXR0aW5nc0Jhc2UoUGFnZSogcGFnZSkKICAgICA6IG1fcGFnZShudWxscHRy
KQotICAgICwgbV9mb250R2VuZXJpY0ZhbWlsaWVzKHN0ZDo6bWFrZV91bmlxdWU8Rm9udEdlbmVy
aWNGYW1pbGllcz4oKSkKKyAgICAsIG1fZm9udEdlbmVyaWNGYW1pbGllcyhtYWtlVW5pcXVlPEZv
bnRHZW5lcmljRmFtaWxpZXM+KCkpCiAgICAgLCBtX2xheW91dEludGVydmFsKGxheW91dFNjaGVk
dWxlVGhyZXNob2xkKQogICAgICwgbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbChET01UaW1lcjo6
ZGVmYXVsdE1pbmltdW1JbnRlcnZhbCgpKQogICAgICwgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5n
c1RpbWVyKCp0aGlzLCAmU2V0dGluZ3NCYXNlOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmly
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5k
ZXggYjljZTk4Y2M2Y2E1YzI0NTZjZGI5NGY1ZGM0MWI0ZDJiNTBlOThmNi4uNjUyMzExZDdhNTVm
NTUwN2EwNWFhNDNiNjJjODAyMDg3MjJkYmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFVzZXJDb250
ZW50Q29udHJvbGxlcjo6Zm9yRWFjaFVzZXJNZXNzYWdlSGFuZGxlcihGdW5jdGlvbjx2b2lkKGNv
bnN0IFVzZXJNZQogCiB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1ZV9wdHI8VXNlclNjcmlwdD4gdXNlclNj
cmlwdCkKIHsKLSAgICBhdXRvJiBzY3JpcHRzSW5Xb3JsZCA9IG1fdXNlclNjcmlwdHMuZW5zdXJl
KCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdFZlY3Rvcj4o
KTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHNjcmlwdHNJbldvcmxkID0gbV91c2Vy
U2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0
VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVu
ZChXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0cyhET01XcmFwcGVyV29ybGQmIHdv
cmxkKQogCiB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgc3RkOjp1bmlxdWVfcHRyPFVzZXJTdHlsZVNoZWV0PiB1c2Vy
U3R5bGVTaGVldCwgVXNlclN0eWxlSW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogewotICAg
IGF1dG8mIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLmVuc3VyZSgmd29y
bGQsIFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0VmVjdG9yPigp
OyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91
c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIG1ha2VVbmlxdWU8VXNl
clN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBzdHlsZVNoZWV0
c0luV29ybGQtPmFwcGVuZChXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CiAKICAgICBpZiAoaW5q
ZWN0aW9uVGltZSA9PSBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCmluZGV4IGYyNTlhZWIxYTBhOWU1Y2U3
YTEzNGYwZDEyNjllYzMxNGM5YTljMzEuLjMwNGQ5NGE3NWJmMzYxZDhkZDQ2ZjZhZmZhZmUzMWMz
ZWY4MmE0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudERlbHRh
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRl
ci5jcHAKQEAgLTQzLDkgKzQzLDkgQEAgV2hlZWxFdmVudERlbHRhRmlsdGVyOjp+V2hlZWxFdmVu
dERlbHRhRmlsdGVyKCkgPSBkZWZhdWx0Owogc3RkOjp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0
YUZpbHRlcj4gV2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKQogewogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXaGVlbEV2ZW50RGVsdGFGaWx0ZXJN
YWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2hlZWxFdmVudERlbHRhRmlsdGVyTWFjPigp
OwogI2Vsc2UKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0
YUZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1doZWVsRXZlbnREZWx0YUZp
bHRlcj4oKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9DU1NBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDE0NDY2M2NhZTk1OTc5
Y2ZjYzdjNGEyMjQyZTFkMTYxZDYxMDI5MjUuLjEzYzMxZjU3NjRiN2IyMjRhMmI3ZWE1NWFlMzNh
NmIzOTg2Yjk2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01OTYsNyArNTk2LDcgQEAgdm9pZCBD
U1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YW5pbWF0aW9uV2lsbEJlUmVtb3ZlZChBbmlt
YXRpb25CYXNlJiBhbmltYXQKIH0KIAogQ1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0
aW9uQ29udHJvbGxlcihGcmFtZSYgZnJhbWUpCi0gICAgOiBtX2RhdGEoc3RkOjptYWtlX3VuaXF1
ZTxDU1NBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4oZnJhbWUpKQorICAgIDogbV9kYXRhKG1h
a2VVbmlxdWU8Q1NTQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+KGZyYW1lKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCmluZGV4IDc0ZWVkYzk5NjZlOWY4MWFjYjk5NmNmMzc2OTgzZGFiNjg1NTQwYzYu
LmJhZWIyNDc2NTcxNjczN2I4NGExY2M4ZjE5ZGUwMTczZjM2N2U5OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAK
QEAgLTExNyw5ICsxMTcsOSBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dE
YXRhPiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaQogewogICAgIEFTU0VS
VChmcm9tICYmIHRvKTsKICAgICBpZiAoZnJvbS0+c3R5bGUoKSAhPSB0by0+c3R5bGUoKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKnRvKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKnRvKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KGJsZW5kKGZyb20tPmxvY2F0aW9uKCksIHRvLT5sb2NhdGlv
bigpLCBwcm9ncmVzcyksCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oYmxlbmQo
ZnJvbS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKICAgICAgICAgYmxl
bmQoZnJvbS0+cmFkaXVzKCksIHRvLT5yYWRpdXMoKSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVu
ZChmcm9tLT5zcHJlYWQoKSwgdG8tPnNwcmVhZCgpLCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5k
RnVuYyhhbmltLCBmcm9tLT5zdHlsZSgpLCB0by0+c3R5bGUoKSwgcHJvZ3Jlc3MpLApAQCAtOTc0
LDE1ICs5NzQsMTUgQEAgY2xhc3MgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3Ig
OiBwdWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZQogICAgIFByb3BlcnR5V3JhcHBl
clZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgQ29sb3ImIChS
ZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIp
KGNvbnN0IENvbG9yJiksCiAgICAgICAgIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6Oip2aXNp
dGVkR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRTZXR0ZXIpKGNv
bnN0IENvbG9yJikpCiAgICAgICAgIDogQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZShwcm9w
KQotICAgICAgICAsIG1fd3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNv
bG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCi0gICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihz
dGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVy
LCB2aXNpdGVkU2V0dGVyKSkKKyAgICAgICAgLCBtX3dyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0
eVdyYXBwZXJDb2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQorICAgICAgICAsIG1fdmlzaXRl
ZFdyYXBwZXIobWFrZVVuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJDb2xvcj4ocHJvcCwgdmlzaXRlZEdl
dHRlciwgdmlzaXRlZFNldHRlcikpCiAgICAgewogICAgIH0KICAgICBQcm9wZXJ0eVdyYXBwZXJW
aXNpdGVkQWZmZWN0ZWRDb2xvcihDU1NQcm9wZXJ0eUlEIHByb3AsIE1heWJlSW52YWxpZENvbG9y
VGFnLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChS
ZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3QgQ29sb3Im
IChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxl
OjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRpb25Qcm9w
ZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFrZV91bmlx
dWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVy
KSkKLSAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlX
cmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0
ZXIpKQorICAgICAgICAsIG1fd3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJl
SW52YWxpZENvbG9yPihwcm9wLCBnZXR0ZXIsIHNldHRlcikpCisgICAgICAgICwgbV92aXNpdGVk
V3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yPihwcm9w
LCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAgICAgfQogICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikgY29uc3Qg
b3ZlcnJpZGUKQEAgLTEyMjksMTkgKzEyMjksMTkgQEAgY2xhc3MgRmlsbExheWVyc1Byb3BlcnR5
V3JhcHBlciA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKICAgICAgICAg
c3dpdGNoIChwcm9wZXJ0eSkgewogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6Ci0g
ICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4
UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3Vu
ZFhPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7
CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VVbmlxdWU8Rmls
bExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjp4UG9z
aXRpb24sICZGaWxsTGF5ZXI6OnNldFhQb3NpdGlvbiwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFhP
cmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91bmRYT3JpZ2luLCBFZGdlOjpSaWdodCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvblk6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOgotICAg
ICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBv
c2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZ
T3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5kWU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsK
KyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxs
TGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnlQb3Np
dGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWU9y
aWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3VuZFlPcmlnaW4sIEVkZ2U6OkJvdHRvbSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXpl
OgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZToKLSAgICAgICAgICAgIG1fZmlsbExheWVy
UHJvcGVydHlXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBw
ZXI8TGVuZ3RoU2l6ZT4+KHByb3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExh
eWVyOjpzZXRTaXplTGVuZ3RoKTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlXcmFw
cGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoU2l6ZT4+KHBy
b3BlcnR5LCAmRmlsbExheWVyOjpzaXplTGVuZ3RoLCAmRmlsbExheWVyOjpzZXRTaXplTGVuZ3Ro
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEltYWdlOgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAm
RmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UpOworICAgICAgICAgICAgbV9m
aWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclN0eWxlSW1hZ2VQ
cm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6
c2V0SW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE3NzAsNyArMTc3MCw3IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkKICAgICAgICAgICAgIGxv
bmdoYW5kV3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1fcHJvcGVydHlXcmFwcGVyc1t3cmFwcGVy
SW5kZXhdLmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51
bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+
KHByb3BlcnR5SUQsIFdURk1vdmUobG9uZ2hhbmRXcmFwcGVycykpKTsKKyAgICAgICAgbV9wcm9w
ZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPFNob3J0aGFuZFByb3BlcnR5
V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdyYXBwZXJzKSkpOwogICAgICAg
ICBpbmRleEZyb21Qcm9wZXJ0eUlEKHByb3BlcnR5SUQpID0gYW5pbWF0YWJsZUxvbmdoYW5kUHJv
cGVydGllc0NvdW50ICsgaTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA3MDQ3ZTgzZGU3ODVkYjgxYjZkOTkw
YTk0ODM3YmE3MWQ3MjgyOWEwLi44ZjBmNmJmNTNiMDNlMDhmNzAzMzE2NmViOGM3NGQ2YmY5NzI4
MzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaQogdm9p
ZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnVwZGF0ZVNvdXJjZVNlbGYoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogewogICAgIG1fc2VsZlNvdXJjZVByb3RvY29sID0gc2Vj
dXJpdHlPcmlnaW4ucHJvdG9jb2woKTsKLSAgICBtX3NlbGZTb3VyY2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3Rv
Y29sLCBzZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlT
dHJpbmcoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX3NlbGZTb3VyY2UgPSBtYWtlVW5pcXVlPENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZT4oKnRoaXMsIG1fc2VsZlNvdXJjZVByb3RvY29sLCBz
ZWN1cml0eU9yaWdpbi5ob3N0KCksIHNlY3VyaXR5T3JpZ2luLnBvcnQoKSwgZW1wdHlTdHJpbmco
KSwgZmFsc2UsIGZhbHNlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFwcGx5
UG9saWN5VG9TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5j
cHAKaW5kZXggZGRiZDhjZGUyNzgwZTkyZGJhMjBlMGFiZDk5Y2YwNDk4NDNmNGM0ZC4uYzAxNTZk
ZGYwMWM5NDdlNTA0YjU2OWQwYTQxMTY5OGM1NThmM2VmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0KENvbnRlbnRTZQogCiBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4gQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRlKENvbnRlbnRTZWN1cml0eVBvbGlj
eSYgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhlYWRlciwgQ29udGVudFNlY3VyaXR5UG9saWN5SGVh
ZGVyVHlwZSB0eXBlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlBvbGljeUZyb20gZnJvbSkKIHsK
LSAgICBhdXRvIGRpcmVjdGl2ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CisgICAgYXV0byBkaXJlY3RpdmVzID0g
bWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Pihwb2xpY3ksIHR5
cGUpOwogICAgIGRpcmVjdGl2ZXMtPnBhcnNlKGhlYWRlciwgZnJvbSk7CiAKICAgICBpZiAoIWNo
ZWNrRXZhbChkaXJlY3RpdmVzLT5vcGVyYXRpdmVEaXJlY3RpdmUoZGlyZWN0aXZlcy0+bV9zY3Jp
cHRTcmMuZ2V0KCkpKSkgewpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6c2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uCiAgICAgICAgIG1fcG9saWN5LnJlcG9ydER1cGxpY2F0ZURpcmVjdGl2ZShuYW1lKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBkaXJlY3RpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPENT
UERpcmVjdGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2YWx1ZSk7CisgICAgZGlyZWN0aXZlID0gbWFr
ZVVuaXF1ZTxDU1BEaXJlY3RpdmVUeXBlPigqdGhpcywgbmFtZSwgdmFsdWUpOwogfQogCiB2b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFwcGx5U2FuZGJveFBvbGljeShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc2FuZGJveFBvbGljeSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXgu
Y3BwCmluZGV4IDhiODdiY2FkZDUxZmM2ZjdmNzBiOTYyNzJjM2RmMjMyNDE5NmRjYmIuLmMwN2Ix
Mjc2OWNkMDRiYTdiMzFmODhjNDZhOWYwNmI2YWQ2YjQ5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcApAQCAt
MTMzLDcgKzEzMyw3IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VPdmVybGF5UGFpbnRlciBmaW5hbCA6
IHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKIAogdm9pZCBSZXNvdXJjZVVzYWdlT3Zlcmxh
eTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKLSAgICBtX292ZXJsYXlQYWludGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0aGlzKTsKKyAgICBtX292
ZXJsYXlQYWludGVyID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheVBhaW50ZXI+KCp0
aGlzKTsKICAgICBtX3BhaW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUob3ZlcmxheSgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKm1fb3Zl
cmxheVBhaW50ZXIpOwogICAgIG1fcGFpbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDNEKCkpOwogICAgIG1fcGFpbnRMYXllci0+c2V0U2l6ZSh7IG5vcm1hbFdpZHRoLCBub3JtYWxI
ZWlnaHQgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvUGFnZU1hYy5tbQppbmRleCBkN2FkZmZkNzJmOWZh
OGZlOTdhZmNkYTA3MThkODNjNmUwOTA4NTBjLi4wODYzYWQyNjcyNWQ2NTU0NzUyYjdhYzIxNDhl
ZWQxYzZkZmMyM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KQEAgLTkwLDcgKzkw
LDcgQEAgdm9pZCBQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogdm9pZCBQYWdlOjphZGRTY2hl
ZHVsZVBhaXIoUmVmPFNjaGVkdWxlUGFpcj4mJiBwYWlyKQogewogICAgIGlmICghbV9zY2hlZHVs
ZWRSdW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gc3RkOjpt
YWtlX3VuaXF1ZTxTY2hlZHVsZVBhaXJIYXNoU2V0PigpOworICAgICAgICBtX3NjaGVkdWxlZFJ1
bkxvb3BQYWlycyA9IG1ha2VVbmlxdWU8U2NoZWR1bGVQYWlySGFzaFNldD4oKTsKICAgICBtX3Nj
aGVkdWxlZFJ1bkxvb3BQYWlycy0+YWRkKHBhaXIucHRyKCkpOwogCiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggMzA2Y2ZlZDE5Y2U2
ZDAwYjYyYTg1MjQ5NzAwMjhiODA0NWZhZDgyMy4uMDBhZjM5NDc4ZGM3NWY3MDI5YzI0ODQ1NGVm
MDFhYjBjNmM3ZDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcihQYWdlKiBwYWdlKQogICAgIDogU2Nyb2xsaW5nQ29vcmRpbmF0b3Io
cGFnZSkKICAgICAsIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXIoKnRoaXMsICZBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3Jv
bGxUaW1lckZpcmVkKQotICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUoc3RkOjptYWtlX3VuaXF1
ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQorICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWUo
bWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KHRoaXMpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmNwcAppbmRleCA3NjQwZDU1ZDk2YTNmMDk1OWI5MzFlZjA0MzNlYzE1ZmEyMDdk
YmQ0Li5jODkwZjllYmEwMDRjYTg3ODAxNDFiODVjZWVlMDA1NTYyZTJlNDQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgRmxvYXRTaXplIFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcjo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBp
bml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFz
aWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUs
IGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKIH0KIAogdm9p
ZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxp
bmdQcmVkaWN0aW9uRW5hYmxlZChib29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKaW5kZXggOTY4MmQyYzFiY2VlMzc1NzEz
YzM0NmQzZTMzY2Q0ZGMxMzVhZmM3OC4uYmU1N2M5Yjg2OWQwY2M1MjM4NmIwMDQ2YTUwN2QzNGM4
NDBjODE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZU5vZGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0
ZU5vZGU6OmFwcGVuZENoaWxkKFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+JiYgY2hpbGROb2RlKQog
ICAgIGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQot
ICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9s
bGluZ1N0YXRlTm9kZT4+PigpOworICAgICAgICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0
b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+PigpOwogICAgIG1fY2hpbGRyZW4tPmFwcGVu
ZChXVEZNb3ZlKGNoaWxkTm9kZSkpOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZChDaGlsZE5vZGVz
KTsKIH0KQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6aW5zZXJ0
Q2hpbGQoUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUsIHNpemVfdAogCiAgICAg
aWYgKCFtX2NoaWxkcmVuKSB7CiAgICAgICAgIEFTU0VSVCghaW5kZXgpOwotICAgICAgICBtX2No
aWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1N0YXRlTm9k
ZT4+PigpOworICAgICAgICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNj
cm9sbGluZ1N0YXRlTm9kZT4+PigpOwogICAgIH0KIAogICAgIGlmIChpbmRleCA+IG1fY2hpbGRy
ZW4tPnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXggZjYxZTI4ZTBlYzUwMzAxMmIzNzJmYjI1NTY5YThj
YjdkZDUzYWE3MC4uNzE1N2UxNjg2MGY0OWM5MWRkYTM1YmJjNGVhZmU5ODE5ZWFjYmU2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRy
ZWUuY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRl
VHJlZT4gU2Nyb2xsaW5nU3RhdGVUcmVlOjpjb21taXQoTGF5ZXJSZXByZXNlbnRhdGkKICAgICB9
CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNsb25lcyBhbmQgcmVzZXRzIHRoZSBjdXJyZW50IHN0
YXRlIHRyZWUsIGJ1dCBsZWF2ZXMgdGhlIHRyZWUgc3RydWN0dXJlIGludGFjdC4KLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiB0cmVlU3RhdGVDbG9uZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxpbmdTdGF0ZVRyZWU+IHRyZWVTdGF0ZUNsb25lID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdTdGF0
ZVRyZWU+KCk7CiAgICAgdHJlZVN0YXRlQ2xvbmUtPnNldFByZWZlcnJlZExheWVyUmVwcmVzZW50
YXRpb24ocHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbik7CiAKICAgICBpZiAobV9yb290U3Rh
dGVOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZU5vZGUuY3BwCmluZGV4IGVhNzRlMmNhNDI0MjlhOGUyYmU5ZjlhMzc5ZTM2N2RhNGRkZGEz
ZDEuLjcyOTYxNWE2OWYwMTIyNjMxNTE0N2VjZmRiNTUyOGIwMTk5ZjM4NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNj
cm9sbGluZ1RyZWVOb2RlPiYmIGNoaWxkTm9kZSkKICAgICBjaGlsZE5vZGUtPnNldFBhcmVudCh0
aGlzKTsKIAogICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgbV9jaGlsZHJlbiA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFJlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4+PigpOworICAgICAg
ICBtX2NoaWxkcmVuID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9sbGluZ1RyZWVOb2Rl
Pj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCmluZGV4IDFjN2FiNzZhMTUxZTYz
NTBkOGI2MTRjMzZkMDViY2U2NWM2Yzk1ODQuLmI0M2VhOTk1ZmFmNmI0NzAzMzVmYmYwN2EyMDg2
YTZiMzVmNzBlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAt
MzYsNyArMzYsNyBAQCBzdGF0aWMgYm9vbCBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGlu
Z1ByZWRpY3Rpb24gPSB0cnVlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9h
dFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEs
IGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBj
b250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4o
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBp
bml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4IDRmZjk4MDRlYWVjMTMwNmIyNjhh
MjQ1ZjI3NzFhMTEyZTI4ZDJhMWUuLjNmYzQzMWE0NzQ2MWQ4YzQ0M2RiNGI2MjJkNmVhOTA2MzRk
YTBmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMjg4LDkgKzI4OCw5IEBA
IExlbmd0aCBjb252ZXJ0VG8xMDBQZXJjZW50TWludXNMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5n
dGgpCiAgICAgLy8gVHVybiB0aGlzIGludG8gYSBjYWxjIGV4cHJlc3Npb246IGNhbGMoMTAwJSAt
IGxlbmd0aCkKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4+
IGxlbmd0aHM7CiAgICAgbGVuZ3Rocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgIGxl
bmd0aHMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5n
dGg+KExlbmd0aCgxMDAsIFBlcmNlbnQpKSk7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4obGVuZ3RoKSk7Ci0gICAgYXV0
byBvcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUo
bGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3QpOworICAgIGxlbmd0aHMudW5jaGVja2Vk
QXBwZW5kKG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBlcmNl
bnQpKSk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVz
c2lvbkxlbmd0aD4obGVuZ3RoKSk7CisgICAgYXV0byBvcCA9IG1ha2VVbmlxdWU8Q2FsY0V4cHJl
c3Npb25PcGVyYXRpb24+KFdURk1vdmUobGVuZ3RocyksIENhbGNPcGVyYXRvcjo6U3VidHJhY3Qp
OwogICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUob3Ap
LCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGF0aWMgTGVuZ3Ro
IGJsZW5kTWl4ZWRUeXBlcyhjb25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRv
dWJsZSBwcm9ncgogICAgIGlmIChwcm9ncmVzcyA+PSAxLjApCiAgICAgICAgIHJldHVybiB0bzsK
ICAgICAgICAgCi0gICAgYXV0byBibGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Np
b25CbGVuZExlbmd0aD4oZnJvbSwgdG8sIHByb2dyZXNzKTsKKyAgICBhdXRvIGJsZW5kID0gbWFr
ZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jlc3MpOwog
ICAgIHJldHVybiBMZW5ndGgoQ2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURk1vdmUoYmxlbmQp
LCBWYWx1ZVJhbmdlQWxsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
ZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCmluZGV4IDU1MmIxMmY2YzFlOGNkYTZmZmVhNjQ3ODY5
MjIyOWVhOTNlZDE3Y2EuLjhlMzVlMzA0YzFlNzI1N2JjNjRjNmFkMTBlZGRlOTY0MjA0ZTY1OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVy
LmNwcApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgKCFQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKSkgfHwgIUhBVkUoTUVESUFfUExBWUVSKQog
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3Rl
bmVyOjpjcmVhdGUoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyPihjbGllbnQpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lcj4oY2xpZW50KTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5k
ZXggZDkxNTRkOTM1MWEyZjMzNjZkZGQwNWZlNjBmZGViYjljMWExZTczOC4uZjhlZGM4ODJkN2Yz
NjAwMmUxOTg1MTBkODFiOGViMzRhYTUwMDdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjaWYgIUVOQUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgIVBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xs
QW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFibGVBcmVhKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApp
bmRleCBjNjJhZDgzNGU2YjM4MDhlMWVjZGE4YmExMzEyZDNkOTU3MDVlOTZhLi45NmQwZjMwMGIz
NDE4ZTYwODIxZGEyZGEyYTY0MTg5YzRkZWUwYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFNjcm9sbEFuaW1hdG9yJiBT
Y3JvbGxhYmxlQXJlYTo6c2Nyb2xsQW5pbWF0b3IoKSBjb25zdAogewogICAgIGlmICghbV9zY3Jv
bGxBbmltYXRvcikgewogICAgICAgICBpZiAodXNlc01vY2tTY3JvbGxBbmltYXRvcigpKSB7Ci0g
ICAgICAgICAgICBtX3Njcm9sbEFuaW1hdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmlt
YXRvck1vY2s+KGNvbnN0X2Nhc3Q8U2Nyb2xsYWJsZUFyZWEmPigqdGhpcyksIFt0aGlzXShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxlQXJlYSY+KCp0
aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIGxv
Z01vY2tTY3JvbGxBbmltYXRvck1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSBlbHNlCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFz
TGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdAogU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91
dFVuaXQ+JiBTY3JvbGxhYmxlQXJlYTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKIHsKICAgICBp
ZiAoIW1fc25hcE9mZnNldHNJbmZvKQotICAgICAgICBtX3NuYXBPZmZzZXRzSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+PigpOworICAgICAg
ICBtX3NuYXBPZmZzZXRzSW5mbyA9IG1ha2VVbmlxdWU8U2Nyb2xsU25hcE9mZnNldHNJbmZvPExh
eW91dFVuaXQ+PigpOwogICAgIHJldHVybiAqbV9zbmFwT2Zmc2V0c0luZm87CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYTI4MDEwZWNm
ZTVhMzY3YWQ5ZDBiMjlhMjAwNTYzYTBmNTYxZDU2MC4uMjdhNzM2NDE2YmEwNGMwNTNjMmU3N2Ri
MmM1NTgxNDQ0MGQyZjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhy
ZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xv
YmFsRGF0YS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBU
aHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKLSAgICA6IG1fY2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0SW5pdGlhdG9ycyhzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnM+KCkpCisgICAgOiBtX2NhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMo
bWFrZVVuaXF1ZTxDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzPigpKQogICAgICwgbV9l
dmVudE5hbWVzKEV2ZW50TmFtZXM6OmNyZWF0ZSgpKQotICAgICwgbV90aHJlYWRUaW1lcnMoc3Rk
OjptYWtlX3VuaXF1ZTxUaHJlYWRUaW1lcnM+KCkpCi0gICAgLCBtX3F1YWxpZmllZE5hbWVDYWNo
ZShzdGQ6Om1ha2VfdW5pcXVlPFF1YWxpZmllZE5hbWVDYWNoZT4oKSkKKyAgICAsIG1fdGhyZWFk
VGltZXJzKG1ha2VVbmlxdWU8VGhyZWFkVGltZXJzPigpKQorICAgICwgbV9xdWFsaWZpZWROYW1l
Q2FjaGUobWFrZVVuaXF1ZTxRdWFsaWZpZWROYW1lQ2FjaGU+KCkpCiAjaWZuZGVmIE5ERUJVRwog
ICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKLSAgICAsIG1fY2Fj
aGVkQ29udmVydGVySUNVKHN0ZDo6bWFrZV91bmlxdWU8SUNVQ29udmVydGVyV3JhcHBlcj4oKSkK
KyAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKG1ha2VVbmlxdWU8SUNVQ29udmVydGVyV3JhcHBl
cj4oKSkKIHsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNhbGxlZCBv
biB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBvbgogICAgIC8vIGFueSBvdGhl
ciB0aHJlYWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQgLSB0aGlzIG1ha2Vz
IHRoaXMgYSBjb252ZW5pZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5jcHAKaW5kZXggMmY4OTJkNmIxOWFiYTQyMzBlOTI0Yzc2MTg3MzhmYzZjYjQ4ZjdlYy4uZTcw
ZDQ2ZDBiOWYyNDA3ZjkwODU0OGZhOGYyZTk4YzlkYTQ1NjNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNjQsNyArNjQsNyBAQCBBdWRpb0J1czo6
QXVkaW9CdXModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IGxlbmd0aCwgYm9vbCBh
bGxvY2F0ZSkKICAgICBtX2NoYW5uZWxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZD
aGFubmVscyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVs
czsgKytpKSB7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IGFsbG9jYXRlID8gc3RkOjptYWtlX3Vu
aXF1ZTxBdWRpb0NoYW5uZWw+KGxlbmd0aCkgOiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5l
bD4obnVsbHB0ciwgbGVuZ3RoKTsKKyAgICAgICAgYXV0byBjaGFubmVsID0gYWxsb2NhdGUgPyBt
YWtlVW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVs
PihudWxscHRyLCBsZW5ndGgpOwogICAgICAgICBtX2NoYW5uZWxzLnVuY2hlY2tlZEFwcGVuZChX
VEZNb3ZlKGNoYW5uZWwpKTsKICAgICB9CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIEF1ZGlv
QnVzOjpjb3B5V2l0aEdhaW5Gcm9tKGNvbnN0IEF1ZGlvQnVzICZzb3VyY2VCdXMsIGZsb2F0KiBs
YXN0TWl4R2FpbiwgZgogCiAgICAgaWYgKGZyYW1lc1RvRGV6aXBwZXIpIHsKICAgICAgICAgaWYg
KCFtX2RlemlwcGVyR2FpblZhbHVlcy5nZXQoKSB8fCBtX2RlemlwcGVyR2FpblZhbHVlcy0+c2l6
ZSgpIDwgZnJhbWVzVG9EZXppcHBlcikKLSAgICAgICAgICAgIG1fZGV6aXBwZXJHYWluVmFsdWVz
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZyYW1lc1RvRGV6aXBwZXIpOwor
ICAgICAgICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4oZnJhbWVzVG9EZXppcHBlcik7CiAKICAgICAgICAgZmxvYXQqIGdhaW5WYWx1ZXMgPSBt
X2RlemlwcGVyR2FpblZhbHVlcy0+ZGF0YSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZnJhbWVzVG9EZXppcHBlcjsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCmluZGV4IDg0N2U1MmFhODI0MjUyZDFiY2JhMTczZGRiNTc3
YzdhNWIyOTUzZTIuLjdiOTg5M2QzOGFjNDE3NDUzMTc0MWI3NzI0YzZmZjJhYmQwMWRmOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5oCkBAIC01Nyw3
ICs1Nyw3IEBAIGNsYXNzIEF1ZGlvQ2hhbm5lbCBmaW5hbCB7CiAgICAgICAgICwgbV9yYXdQb2lu
dGVyKDApCiAgICAgICAgICwgbV9zaWxlbnQodHJ1ZSkKICAgICB7Ci0gICAgICAgIG1fbWVtQnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CisgICAgICAg
IG1fbWVtQnVmZmVyID0gbWFrZVVuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGxlbmd0aCk7CiAgICAg
fQogCiAgICAgLy8gQSAiYmxhbmsiIGF1ZGlvIGNoYW5uZWwgLS0gbXVzdCBjYWxsIHNldCgpIGJl
Zm9yZSBpdCdzIHVzZWZ1bC4uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9SZXNhbXBsZXIuY3BwCmluZGV4IDg2OTA2YmE1MTI0NzU4NjkyYzY4M2UyYmM5MDM4MzUw
MWVhYjhmZDkuLjI4NGMwNTQ5NDMyNTkzNDRlYWNlMzI0MThhZGE5YjgzMDNkYTJlNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgY29uc3QgZG91YmxlIEF1ZGlvUmVzYW1wbGVyOjpNYXhSYXRlID0gOC4w
OwogQXVkaW9SZXNhbXBsZXI6OkF1ZGlvUmVzYW1wbGVyKCkKICAgICA6IG1fcmF0ZSgxLjApCiB7
Ci0gICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2Vy
bmVsPih0aGlzKSk7CisgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1w
bGVyS2VybmVsPih0aGlzKSk7CiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3JlYXRlKDEs
IDAsIGZhbHNlKTsKIH0KIApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9S
ZXNhbXBsZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IG1fcmF0ZSgxLjApCiB7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAg
ICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2Vy
bmVsPih0aGlzKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFrZVVuaXF1ZTxBdWRpb1Jl
c2FtcGxlcktlcm5lbD4odGhpcykpOwogCiAgICAgbV9zb3VyY2VCdXMgPSBBdWRpb0J1czo6Y3Jl
YXRlKG51bWJlck9mQ2hhbm5lbHMsIDAsIGZhbHNlKTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9p
ZCBBdWRpb1Jlc2FtcGxlcjo6Y29uZmlndXJlQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscykKICAgICAvLyBGaXJzdCBkZWFsIHdpdGggYWRkaW5nIG9yIHJlbW92aW5nIGtlcm5lbHMu
CiAgICAgaWYgKG51bWJlck9mQ2hhbm5lbHMgPiBjdXJyZW50U2l6ZSkgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBjdXJyZW50U2l6ZTsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAg
ICAgICAgICAgIG1fa2VybmVscy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Jlc2FtcGxl
cktlcm5lbD4odGhpcykpOworICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVl
PEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fa2Vy
bmVscy5yZXNpemUobnVtYmVyT2ZDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IGIyNTUxOGQ4ODBh
OGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIuLjUxMzc5OWE4NTEyZjQyN2I0ZTRiOGQ5YjI5
NDVhOTRkMzQ5MTg3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMjcxLDggKzI3MSw4IEBAIHZvaWQgRHluYW1p
Y3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMpCiAgICAgbV9wcmVGaWx0ZXJQYWNrcy5jbGVhcigpOwogICAgIG1fcG9zdEZpbHRlclBhY2tz
LmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7
ICsraSkgewotICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwotICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKKyAgICAgICAgbV9w
cmVGaWx0ZXJQYWNrcy5hcHBlbmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsK
KyAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKG1ha2VVbmlxdWU8WmVyb1BvbGVGaWx0
ZXJQYWNrND4oKSk7CiAgICAgfQogCiAgICAgbV9zb3VyY2VDaGFubmVscyA9IG1ha2VVbmlxdWVB
cnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAK
aW5kZXggNzM0YjA2NmNkYTQ4YmMyYzdhNzllZGY1MDdkMDZjMDU2YzcwYTA5MC4uYWZlZGI3YjRj
ZDBhNWE2MWQxYTlmZTI3OGMzNDAzODNmOThlMjFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJP
ZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAKICAgICBtX3ByZURlbGF5QnVm
ZmVycy5jbGVhcigpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5u
ZWxzOyArK2kpCi0gICAgICAgIG1fcHJlRGVsYXlCdWZmZXJzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvRmxvYXRBcnJheT4oTWF4UHJlRGVsYXlGcmFtZXMpKTsKKyAgICAgICAgbV9wcmVE
ZWxheUJ1ZmZlcnMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihNYXhQcmVEZWxh
eUZyYW1lcykpOwogfQogCiB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbDo6c2V0UHJlRGVs
YXlUaW1lKGZsb2F0IHByZURlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0ZGVEZyYW1lLmNwcAppbmRleCA0YzAyYjY5OTJiMDYzODNiODAzNTczNzg3OGRiZjY1YTI2ZmI5
YzMxLi40YzE1MjA2N2Q0NGFjNGI4NTQxOTIxYWFlZDI5NTk4MmI5NjkzNzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZv
aWQgRkZURnJhbWU6OmRvUGFkZGVkRkZUKGNvbnN0IGZsb2F0KiBkYXRhLCBzaXplX3QgZGF0YVNp
emUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGRlRGcmFtZT4gRkZURnJhbWU6OmNyZWF0ZUludGVycG9s
YXRlZEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZTEsIGNvbnN0IEZGVEZyYW1lJiBmcmFtZTIs
IGRvdWJsZSB4KQogewotICAgIGF1dG8gbmV3RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZy
YW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIG5ld0ZyYW1lID0gbWFrZVVuaXF1ZTxG
RlRGcmFtZT4oZnJhbWUxLmZmdFNpemUoKSk7CiAKICAgICBuZXdGcmFtZS0+aW50ZXJwb2xhdGVG
cmVxdWVuY3lDb21wb25lbnRzKGZyYW1lMSwgZnJhbWUyLCB4KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKaW5kZXggZjQ1
YmU4NDdjZTcxMGRjZWRhMmUwZWMxMDZiNzViZjI2ODU3ODljZC4uYTQ3NGE3MGM0MDg1MmFlMmUx
ZjlmNThhNDlhMDAwMzYxNTgwYjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQg
SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKCkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBpZiAoIW1faHJ0ZkRhdGFiYXNlLmdldCgpKSB7CiAgICAgICAgIC8vIExvYWQgdGhlIGRl
ZmF1bHQgSFJURiBkYXRhYmFzZS4KLSAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhSVEZEYXRhYmFzZT4obV9kYXRhYmFzZVNhbXBsZVJhdGUpOworICAgICAgICBtX2hy
dGZEYXRhYmFzZSA9IG1ha2VVbmlxdWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNlU2FtcGxlUmF0
ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZF
bGV2YXRpb24uY3BwCmluZGV4IGM4NGFiOTc1MWExNDU5ODlhMDM3N2ZhZDFmNGE3NWU4ZjE3ZTJi
MjQuLjYwNTIzMmNkMWE5OWM5MjMzZDlhZDEwNDliYTMwN2UyMTc3MzhmYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwCkBAIC0yNDQsOCAr
MjQ0LDggQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNy
ZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWIKICAgICBpZiAoIWlzRWxldmF0aW9uR29v
ZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAgIGF1dG8ga2VybmVsTGlz
dEwgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0
aHMpOwotICAgIGF1dG8ga2VybmVsTGlzdFIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxM
aXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdEwgPSBtYWtl
VW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8g
a2VybmVsTGlzdFIgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXpp
bXV0aHMpOwogCiAgICAgLy8gTG9hZCBjb252b2x1dGlvbiBrZXJuZWxzIGZyb20gSFJURiBmaWxl
cy4KICAgICBpbnQgaW50ZXJwb2xhdGVkSW5kZXggPSAwOwpAQCAtMjc0LDcgKzI3NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVGb3JTdWJq
ZWN0KGNvbnN0IFN0cmluZyYgc3ViCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92ZShrZXJuZWxMaXN0TCksIFdU
Rk1vdmUoa2VybmVsTGlzdFIpLCBlbGV2YXRpb24sIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlzdEwpLCBXVEZNb3ZlKGtl
cm5lbExpc3RSKSwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRy
PEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJwb2xhdGluZ1NsaWNl
cyhIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMSwgSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZh
dGlvbjIsIGZsb2F0IHgsIGZsb2F0IHNhbXBsZVJhdGUpCkBAIC0yODUsOCArMjg1LDggQEAgc3Rk
Ojp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0ZUJ5SW50ZXJw
b2xhdGluZ1NsaWNlcyhIUlRGRWwKICAgICAgICAgCiAgICAgQVNTRVJUKHggPj0gMC4wICYmIHgg
PCAxLjApOwogICAgIAotICAgIGF1dG8ga2VybmVsTGlzdEwgPSBzdGQ6Om1ha2VfdW5pcXVlPEhS
VEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwotICAgIGF1dG8ga2VybmVsTGlz
dFIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0
aHMpOworICAgIGF1dG8ga2VybmVsTGlzdEwgPSBtYWtlVW5pcXVlPEhSVEZLZXJuZWxMaXN0PihO
dW1iZXJPZlRvdGFsQXppbXV0aHMpOworICAgIGF1dG8ga2VybmVsTGlzdFIgPSBtYWtlVW5pcXVl
PEhSVEZLZXJuZWxMaXN0PihOdW1iZXJPZlRvdGFsQXppbXV0aHMpOwogCiAgICAgSFJURktlcm5l
bExpc3QqIGtlcm5lbExpc3RMMSA9IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0TCgpOwogICAg
IEhSVEZLZXJuZWxMaXN0KiBrZXJuZWxMaXN0UjEgPSBocnRmRWxldmF0aW9uMS0+a2VybmVsTGlz
dFIoKTsKQEAgLTMwMiw3ICszMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4g
SFJURkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbAogICAgIC8v
IEludGVycG9sYXRlIGVsZXZhdGlvbiBhbmdsZS4KICAgICBkb3VibGUgYW5nbGUgPSAoMS4wIC0g
eCkgKiBocnRmRWxldmF0aW9uMS0+ZWxldmF0aW9uQW5nbGUoKSArIHggKiBocnRmRWxldmF0aW9u
Mi0+ZWxldmF0aW9uQW5nbGUoKTsKICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxI
UlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0Uiks
IHN0YXRpY19jYXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxM
aXN0UiksIHN0YXRpY19jYXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBI
UlRGRWxldmF0aW9uOjpnZXRLZXJuZWxzRnJvbUF6aW11dGgoZG91YmxlIGF6aW11dGhCbGVuZCwg
dW5zaWduZWQgYXppbXV0aEluZGV4LCBIUlRGS2VybmVsKiAma2VybmVsTCwgSFJURktlcm5lbCog
Jmtlcm5lbFIsIGRvdWJsZSYgZnJhbWVEZWxheUwsIGRvdWJsZSYgZnJhbWVEZWxheVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCmluZGV4IGVkZjZjNjBk
MGRiODE0ZDk0YzBmNzFiNjMwNmU0MzgyNjUzYWE0YzcuLjM3NTUyMTZhZTI4N2E3MWM3NDI5Mjlh
NTNjOTU5MDk2ZGIxZGJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZLZXJuZWwuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEhSVEZLZXJuZWw6OkhSVEZLZXJuZWwoQXVk
aW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICAgICAgfQogICAgIH0KIAotICAgIG1fZmZ0RnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZy
YW1lPihmZnRTaXplKTsKKyAgICBtX2ZmdEZyYW1lID0gbWFrZVVuaXF1ZTxGRlRGcmFtZT4oZmZ0
U2l6ZSk7CiAgICAgbV9mZnRGcmFtZS0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNlLCB0cnVu
Y2F0ZWRSZXNwb25zZUxlbmd0aCk7CiB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzaXplX3QgSFJU
Rktlcm5lbDo6ZmZ0U2l6ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0NoYW5uZWw+
IEhSVEZLZXJuZWw6OmNyZWF0ZUltcHVsc2VSZXNwb25zZSgpCiB7Ci0gICAgYXV0byBjaGFubmVs
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CisgICAgYXV0byBj
aGFubmVsID0gbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KGZmdFNpemUoKSk7CiAgICAgRkZURnJh
bWUgZmZ0RnJhbWUoKm1fZmZ0RnJhbWUpOwogCiAgICAgLy8gQWRkIGxlYWRpbmcgZGVsYXkgYmFj
ayBpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hh
bm5lbFJlc2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNo
YW5uZWxSZXNhbXBsZXIuY3BwCmluZGV4IGJiYmYxNjQ0NjIwNzYzOWUzNWNmNzk1NjQ4MjgyNjNk
M2U5MzczYWUuLjViZjlhYjk1ZDAxNTc1MDA4MTVkNjEzMWFiMWQ4OTc0MWJlMWZlMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVz
YW1wbGVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCBNdWx0aUNoYW5uZWxSZXNhbXBsZXI6Ok11bHRp
Q2hhbm5lbFJlc2FtcGxlcihkb3VibGUgc2NhbGVGYWN0b3IsIHVuc2lnbmVkIG51bWJlcgogewog
ICAgIC8vIENyZWF0ZSBlYWNoIGNoYW5uZWwncyByZXNhbXBsZXIuCiAgICAgZm9yICh1bnNpZ25l
ZCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2No
YW5uZWxJbmRleCkKLSAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNp
bmNSZXNhbXBsZXI+KHNjYWxlRmFjdG9yKSk7CisgICAgICAgIG1fa2VybmVscy5hcHBlbmQobWFr
ZVVuaXF1ZTxTaW5jUmVzYW1wbGVyPihzY2FsZUZhY3RvcikpOwogfQogCiB2b2lkIE11bHRpQ2hh
bm5lbFJlc2FtcGxlcjo6cHJvY2VzcyhBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92aWRlciwgQXVk
aW9CdXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5jcHAKaW5kZXggYWM3Mjg2YWM5YTA2MGI3NTM0Y2IyZWRl
OTIxZDZjYmQ3N2E5N2E4OC4uNDBiOWQwMWRjMTg0Yjk2ZDVkZjNhYjliN2Y0MDk0NjNhOTc4MzRk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCkBAIC00MywxMSAr
NDMsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4gUGFubmVyOjpjcmVhdGUoUGFubmluZ01v
ZGVsVHlwZSBtb2RlbCwgZmxvYXQgc2FtcGxlUmF0ZSwKIAogICAgIHN3aXRjaCAobW9kZWwpIHsK
ICAgICBjYXNlIFBhbm5pbmdNb2RlbFR5cGU6OkVxdWFscG93ZXI6Ci0gICAgICAgIHBhbm5lciA9
IHN0ZDo6bWFrZV91bmlxdWU8RXF1YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CisgICAgICAg
IHBhbm5lciA9IG1ha2VVbmlxdWU8RXF1YWxQb3dlclBhbm5lcj4oc2FtcGxlUmF0ZSk7CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGOgotICAgICAgICBw
YW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNl
TG9hZGVyKTsKKyAgICAgICAgcGFubmVyID0gbWFrZVVuaXF1ZTxIUlRGUGFubmVyPihzYW1wbGVS
YXRlLCBkYXRhYmFzZUxvYWRlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3Bw
CmluZGV4IGUwMjM5NGFhNWIxNDljZDE1OTY5MTJhMjU2ODFmZjVlYTQ0YWQ4ZDIuLmM4YmQ2NGE0
MWJmNjEyZTg5ZTNjMjE0ZmEyMmRjYzU5OTQ4ZTU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1NZWRpYVNlc3Npb24+IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1N
ZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogUGxhdGZvcm1NZWRpYVNlc3Npb246
OlBsYXRmb3JtTWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcAppbmRleCAzMDQzZmM4YTA0
ZGYwZDc3YzEwYWEwMzc5YmQyNmEzOWQ0NmNlNmJhLi44YTY3NTVjNTRhZDAwYTNhODEwMTg3NDIx
NjJjY2QwNzRkZTEwZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5j
cHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFJldmVyYjo6aW5pdGlhbGl6ZShBdWRpb0J1cyog
aW1wdWxzZVJlc3BvbnNlQnVmZmVyLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtUmVzcG9uc2VDaGFubmVsczsgKytpKSB7CiAgICAgICAgIEF1
ZGlvQ2hhbm5lbCogY2hhbm5lbCA9IGltcHVsc2VSZXNwb25zZUJ1ZmZlci0+Y2hhbm5lbChpKTsK
IAotICAgICAgICBtX2NvbnZvbHZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmV2ZXJiQ29u
dm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNpemUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJl
bmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFkcykpOworICAgICAgICBtX2NvbnZvbHZlcnMu
YXBwZW5kKG1ha2VVbmlxdWU8UmV2ZXJiQ29udm9sdmVyPihjaGFubmVsLCByZW5kZXJTbGljZVNp
emUsIG1heEZGVFNpemUsIGNvbnZvbHZlclJlbmRlclBoYXNlLCB1c2VCYWNrZ3JvdW5kVGhyZWFk
cykpOwogCiAgICAgICAgIGNvbnZvbHZlclJlbmRlclBoYXNlICs9IHJlbmRlclNsaWNlU2l6ZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJD
b252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyLmNwcAppbmRleCAxNDVkZjgxZTJhNmJhMmMyZGFhOWJiNDFlNmI1Y2FiYWYzODVmOTFjLi5h
OWM5MzVjMWEyODVhYjEzNjJkOGZmMWRmOGNlYmE1YTdlNWFhNzdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAgLTk0LDcgKzk0
LDcgQEAgUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1
bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGkKIAogICAgICAgICBib29sIHVzZURpcmVjdENv
bnZvbHZlciA9ICFzdGFnZU9mZnNldDsKIAotICAgICAgICBhdXRvIHN0YWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXZlcmJDb252b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5n
dGgsIHJldmVyYlRvdGFsTGF0ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwg
cmVuZGVyUGhhc2UsIHJlbmRlclNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1c2VE
aXJlY3RDb252b2x2ZXIpOworICAgICAgICBhdXRvIHN0YWdlID0gbWFrZVVuaXF1ZTxSZXZlcmJD
b252b2x2ZXJTdGFnZT4ocmVzcG9uc2UsIHRvdGFsUmVzcG9uc2VMZW5ndGgsIHJldmVyYlRvdGFs
TGF0ZW5jeSwgc3RhZ2VPZmZzZXQsIHN0YWdlU2l6ZSwgZmZ0U2l6ZSwgcmVuZGVyUGhhc2UsIHJl
bmRlclNsaWNlU2l6ZSwgJm1fYWNjdW11bGF0aW9uQnVmZmVyLCB1c2VEaXJlY3RDb252b2x2ZXIp
OwogCiAgICAgICAgIGJvb2wgaXNCYWNrZ3JvdW5kU3RhZ2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3Bw
CmluZGV4IDBmZGU0MjFhZjJmODJmZDQ4NzRkOTRmNmFmMWQ2MzQ3MjM5YzY1NmUuLjRmZjk1M2Iy
NjA0OTE3ZDM0NTIwMzk0MDViNjVkZTJiZDVhMWVhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKQEAgLTU1LDE2
ICs1NSwxNiBAQCBSZXZlcmJDb252b2x2ZXJTdGFnZTo6UmV2ZXJiQ29udm9sdmVyU3RhZ2UoY29u
c3QgZmxvYXQqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90LAogICAgIEFTU0VSVChhY2N1bXVsYXRp
b25CdWZmZXIpOwogCiAgICAgaWYgKCFtX2RpcmVjdE1vZGUpIHsKLSAgICAgICAgbV9mZnRLZXJu
ZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKKyAgICAgICAgbV9mZnRL
ZXJuZWwgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKICAgICAgICAgbV9mZnRLZXJu
ZWwtPmRvUGFkZGVkRkZUKGltcHVsc2VSZXNwb25zZSArIHN0YWdlT2Zmc2V0LCBzdGFnZUxlbmd0
aCk7Ci0gICAgICAgIG1fZmZ0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRDb252b2x2
ZXI+KGZmdFNpemUpOworICAgICAgICBtX2ZmdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RkZUQ29u
dm9sdmVyPihmZnRTaXplKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoIXN0YWdlT2Zm
c2V0KTsKICAgICAgICAgQVNTRVJUKHN0YWdlTGVuZ3RoIDw9IGZmdFNpemUgLyAyKTsKIAotICAg
ICAgICBtX2RpcmVjdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5Pihm
ZnRTaXplIC8gMik7CisgICAgICAgIG1fZGlyZWN0S2VybmVsID0gbWFrZVVuaXF1ZTxBdWRpb0Zs
b2F0QXJyYXk+KGZmdFNpemUgLyAyKTsKICAgICAgICAgbV9kaXJlY3RLZXJuZWwtPmNvcHlUb1Jh
bmdlKGltcHVsc2VSZXNwb25zZSwgMCwgc3RhZ2VMZW5ndGgpOwotICAgICAgICBtX2RpcmVjdENv
bnZvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGlyZWN0Q29udm9sdmVyPihyZW5kZXJTbGljZVNp
emUpOworICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RGlyZWN0Q29udm9s
dmVyPihyZW5kZXJTbGljZVNpemUpOwogICAgIH0KICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hbGxv
Y2F0ZShyZW5kZXJTbGljZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5jcHAKaW5kZXggNWJmOGZkYTZiMjkxMmIxOGYxMTkwZGNiZTcwODJiZjY4NGJlZTk4Zi4u
MWE1NDk1ZmQ3NjRkOWMzY2M2ZWRiNTgxZmE0ODBlYWVhZDE0NTliZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9D
YWxsYmFjayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAg
ICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVu
aGFuZGxlZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI+KGNhbGxiYWNrLCBz
YW1wbGVSYXRlKTsKIH0KIAogZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVS
YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCA4YWY4NzdlYzJjNGNhMGFiZDMwNzQ4MzVmNTRi
MzRhZWJmMDQzM2EyLi40YmRlN2U0MWUyYjY0MzdjZDBmZjcyNWU0ZDA3OWQ2OGY4OWU3ZGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5h
dGlvbklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
RGVzdGluYXRpb25JT1MuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBj
YWxsCiAgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1l
ZGlhLCAiQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91
dHB1dCBjaGFubmVscyIsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgc2FtcGxlUmF0ZSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rl
c3RpbmF0aW9uSU9TPihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QXVkaW9EZXN0aW5hdGlvbklPUz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9h
dCBBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggNGUy
YTg4ODk0YWZiY2JhMjE4Y2Y5ZTY3Mzg3NTY5ZjMyZjljZDU5ZC4uNjM5ODI0MGJiZDhkOTY3MzAy
ZGY3ZTllY2ZmNDA3NTAyZGE2ZTIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC03Miw3ICs3Miw3IEBAIEF1ZGlv
U2Vzc2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKikKIH0KIAog
QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKHN0ZDo6bWFrZV91
bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhpcykpCisgICAgOiBtX3ByaXZhdGUobWFrZVVu
aXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3Bw
CmluZGV4IDc2NGEzNDdmOTgyOWUxZTg0NzViZDJlYTEyODBhYTE3NTAyNmVjZmMuLjlmZTY0YmFh
YTQ3ODRmZWNkYWIzZDZkZGI1ZTI3ODM4MWUxZTA3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVz
dGluYXRpb246OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZP
dXRwdXRDaGFubmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9u
OjpjcmVhdGUoJXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNr
LCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uTWFj
PihjYWxsYmFjaywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246Omhh
cmR3YXJlU2FtcGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCA3N2Q0MzE2NTY2OTkw
ZTkwMWI5MjBiZjc3OGQ5NjllOWYxOGYxODhhLi40MWFmZTM5ZjIzMmFlNTg4MDg2MGYwODRkNTU2
Y2I0YTVkOGFlMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBP
U1N0YXR1cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldElucHV0Rm9ybWF0KGNvbnN0IENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYgZgogewogICAgIEFTU0VSVChmb3JtYXQuc2FtcGxlUmF0ZSgp
ID49IDApOwogCi0gICAgbV9pbnB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CisgICAgbV9pbnB1dERlc2NyaXB0aW9uID0g
bWFrZVVuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CiAgICAgaWYgKG1f
b3V0cHV0RGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBzZXR1cENvbnZlcnRlcigpOwogCkBA
IC0xMjAsOSArMTIwLDkgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRPdXRw
dXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJgogICAgIEFTU0VSVChtX2lu
cHV0RGVzY3JpcHRpb24pOwogICAgIEFTU0VSVChmb3JtYXQuc2FtcGxlUmF0ZSgpID49IDApOwog
Ci0gICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uPihmb3JtYXQpOworICAgIG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5p
cXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsKICAgICBpZiAoIW1fcmluZ0J1
ZmZlcikKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxDQVJpbmdCdWZm
ZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigp
OwogCiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShmb3JtYXQsIHN0YXRpY19jYXN0PHNpemVf
dD4obV9tYXhpbXVtU2FtcGxlQ291bnQpKTsKICAgICBtX3NjcmF0Y2hCdWZmZXIgPSBBdWRpb1Nh
bXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZShtX291dHB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlw
dGlvbigpLCBtX21heGltdW1TYW1wbGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCmluZGV4IDdmNmVmOWQzM2Ri
MWZiNDdlN2NmMTRjNTkwNGE0NjExMmIxNTIyMzIuLmNjMDRmMGJlMzA5NzQ5OGI4MzY2ZTkyNDIw
NzNlY2UzZTE5NzVhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIEF1ZGlv
U2Vzc2lvblByaXZhdGUgewogfTsKIAogQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAg
IDogbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRl
ZCgpKSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KGlz
TXV0ZWQoKSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRGVjb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVj
b2RlckNGLmNwcAppbmRleCBiOTgwM2JmYTAyMzI0MzU3YzBkZmUwNDczMTNkMmMzZWMzMDRjYjky
Li43YTQ3ZjU2MDhiYmI2ZGU5ZDM3NzNiMTdlOThlNDc2NGEyNDIyMmM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gS2V5
ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckNGPihkYXRhLCBzaXplKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZERlY29kZXJDRj4oZGF0YSwgc2l6ZSk7CiB9CiAK
IEtleWVkRGVjb2RlckNGOjpLZXllZERlY29kZXJDRihjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cAppbmRleCAxYTYyN2VhMDBiOTJjYmFhNmNmN2MzNTVkNWU0NDVlYzQ4NjFhNDEyLi40NDczZWMy
OGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVy
OjplbmNvZGVyKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJD
Rj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJDRj4oKTsKIH0KIAogc3Rh
dGljIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBjcmVhdGVEaWN0aW9uYXJ5KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcAppbmRleCBiNjg5MjI4MDVlNWQzNzNkZTdmMGFlZDc4OTA4MjVhY2NjYzEyMDM5
Li4wN2E0NWNhZDc4YjZkNDM3ZmFhODQyNTI2OTljMGQ0ODZkNzhlZDZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIHNldHVwUG93ZXJPYnNlcnZlcigpCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBQb3dlck9ic2VydmVyKiBwb3dlck9ic2VydmVyOwog
ICAgIGlmICghcG93ZXJPYnNlcnZlcikKLSAgICAgICAgcG93ZXJPYnNlcnZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7Cisg
ICAgICAgIHBvd2VyT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFBvd2VyT2JzZXJ2ZXI+KHJlc3RhcnRT
aGFyZWRUaW1lcikucmVsZWFzZSgpOwogI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBz
dGF0aWMgYm9vbCByZWdpc3RlcmVkRm9yQXBwbGljYXRpb25Ob3RpZmljYXRpb24gPSBmYWxzZTsK
ICAgICBpZiAoIXJlZ2lzdGVyZWRGb3JBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlci5tbQppbmRleCAxMmFiMzIxY2I0NzcyYmU3MDAxNTAwZjE5NmY3OGI2
ZWJlNWUyYmQ1Li4wNWM1NTI0ZGVmYzc3NzYxMWRmNzVmNDliMTkxZDdmZDY5ZjQ1ODQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtNjUsNyArNjUsNyBAQCBib29sIE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6
Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcj4oKTsKIH0KIAogdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6aW5pdGlhbGl6ZShjb25zdCBVUkwqIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0K
aW5kZXggYWUwYmQyMDljY2Q2ZjMxN2M5MTkzMjVhMTZhMThhOTljZDE1NzJlNC4uMGQyYTYyMTg2
YjVhNTRlMmI4NTFmZjk2ZDUyODEwMWY4NDY2ZjQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0KQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI+KCk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Njcm9sbENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxDb250cm9sbGVyLm1tCmluZGV4IGU4MzY5YzZlNTAxNmUyM2NmODczYjk1MzdkMmFmYjRm
MGJjNjg1MjIuLjhmZTM4YWQwY2NlMmZkNTQyZDI5NzAxN2ZkYTJkMWNiMzU1Yjc3MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpA
QCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25h
cFBvaW50cyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yCiAgICAgICAgIGlmIChz
bmFwUG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX3Nj
cm9sbFNuYXBTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU+
KCk7CisgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZT4oKTsKICAgICB9CiAKICAgICBpZiAoc25hcFBvaW50cy5pc0VtcHR5KCkgJiYg
bV9zY3JvbGxTbmFwU3RhdGUtPnNuYXBPZmZzZXRzRm9yQXhpcyhvdGhlclNjcm9sbEV2ZW50QXhp
cyhheGlzKSkuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDUw
M2Y5N2I5MjAxOGRhODdjMjQ4ODkxYjIyNjc5YWJiNzAwNWIzMDAuLjk2Yzg1MTI5MzVhYjliNjk4
ZTg5ODU1MTYzYmI2ZDIyYWM5YjgyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
QEAgLTMwMyw3ICszMDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZT4gQ0RNRmFjdG9y
eUNsZWFyS2V5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZQogI2Vsc2UKICAgICBB
U1NFUlQoc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7CiAjZW5kaWYKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q0RNUHJpdmF0ZUNsZWFyS2V5PigpOwogfQogCiBib29sIENETUZhY3RvcnlDbGVhcktl
eTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2Ft
ZXBhZFByb3ZpZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9H
YW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbQppbmRleCBmNzIwY2ZkMzM0M2Y5YmFkMzNh
NDkxOWE3OGY4NjZmOWQ4NjJhMGFkLi41YTZlYjQwNDM5ZWY1OTA1NzJhN2MyOWVmYzMzOGQ5MmYy
MzljNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29h
L0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0KQEAg
LTYxLDcgKzYxLDcgQEAgdm9pZCBHYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlcjo6Y29udHJv
bGxlckRpZENvbm5lY3QoR0NDb250cm9sbGVyICpjb250cm9sbGUKICAgICBMT0coR2FtZXBhZCwg
IkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyIGNvbnRyb2xsZXIgJXAgYWRkZWQiLCBjb250
cm9sbGVyKTsKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gaW5kZXhGb3JOZXdseUNvbm5lY3RlZERl
dmljZSgpOwotICAgIGF1dG8gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8R2FtZUNvbnRyb2xs
ZXJHYW1lcGFkPihjb250cm9sbGVyLCBpbmRleCk7CisgICAgYXV0byBnYW1lcGFkID0gbWFrZVVu
aXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsKIAogICAgIGlm
IChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICBtX2dhbWVwYWRWZWN0
b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggNTc0MzkxYjVjMTEx
YTMyYmU5MTI1Y2E2Y2UwNjAwZjVkNjM4MjI1Ny4uNmQxNGI2YjIxNjEwYjg2Y2U0YzAwMTNlNTA5
MTFiODhmOTVlMWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBh
ZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmlj
ZSkKICAgICBMT0coR2FtZXBhZCwgIkhJREdhbWVwYWRQcm92aWRlciBkZXZpY2UgJXAgYWRkZWQi
LCBkZXZpY2UpOwogCiAgICAgdW5zaWduZWQgaW5kZXggPSBpbmRleEZvck5ld2x5Q29ubmVjdGVk
RGV2aWNlKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxISURHYW1lcGFkPiBnYW1lcGFkID0gbWFrZVVuaXF1ZTxISURHYW1lcGFkPihkZXZpY2Us
IGluZGV4KTsKIAogICAgIGlmIChtX2dhbWVwYWRWZWN0b3Iuc2l6ZSgpIDw9IGluZGV4KQogICAg
ICAgICBtX2dhbWVwYWRWZWN0b3IuZ3JvdyhpbmRleCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKaW5kZXgg
YTRhMzBiNTJhYmU0OGFmODUwZGM3Yzc0N2EzYmNkZTFkNTFmZGE1Zi4uMGU1OTcyMzIxYjVmNzNm
NTcyYmQ3OTY1ODgxMWYwMDNhOTVlZDQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIEtleWVkRGVjb2RlckdlbmVyaWM6OkRpY3Rpb25hcnkgewogICAgIHVzaW5nIE5v
ZGUgPSBWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgYm9vbCwgdWludDMyX3QsIHVpbnQ2NF90LCBp
bnQzMl90LCBpbnQ2NF90LCBmbG9hdCwgZG91YmxlLCBTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxE
aWN0aW9uYXJ5Piwgc3RkOjp1bmlxdWVfcHRyPEFycmF5Pj47CiAKICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLSAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGtleSwgVCYmIHZhbHVlKSB7IG1f
bWFwLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVl
KSkpOyB9CisgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBrZXksIFQmJiB2YWx1ZSkgeyBtX21h
cC5hZGQoa2V5LCBtYWtlVW5pcXVlPE5vZGU+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsgfQog
ICAgIE5vZGUmIGdldChjb25zdCBTdHJpbmcmIGtleSkgeyByZXR1cm4gKm1fbWFwLmdldChrZXkp
OyB9CiAKIHByaXZhdGU6CkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBib29sIHJlYWRTaW1wbGVW
YWx1ZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyLCBLZXllZERlY29kZXJHZW5l
CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IEtleWVkRGVjb2Rlcjo6ZGVjb2Rlcihj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxLZXllZERlY29kZXJHZW5lcmljPihkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxLZXllZERlY29kZXJHZW5lcmljPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNv
ZGVyR2VuZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKQEAgLTg2LDcgKzg2LDcgQEAgS2V5ZWREZWNvZGVyR2VuZXJpYzo6S2V5ZWREZWNv
ZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICBLZXllZEVu
Y29kZXJHZW5lcmljOjpUeXBlIHR5cGU7CiAgICAgU3RyaW5nIGtleTsKIAotICAgIG1fcm9vdERp
Y3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgbV9yb290RGlj
dGlvbmFyeSA9IG1ha2VVbmlxdWU8RGljdGlvbmFyeT4oKTsKICAgICBtX2RpY3Rpb25hcnlTdGFj
ay5hcHBlbmQobV9yb290RGljdGlvbmFyeS5nZXQoKSk7CiAKICAgICBib29sIG9rID0gdHJ1ZTsK
QEAgLTE0NCw3ICsxNDQsNyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5l
cmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgaWYgKCFv
aykKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8qIGN1cnJlbnREaWN0
aW5hcnkgPSBtX2RpY3Rpb25hcnlTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICBhdXRvIG5ld0Rp
Y3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgICAgICAgICBh
dXRvIG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgICAgICAg
ICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7CiAgICAgICAg
ICAgICBjdXJyZW50RGljdGluYXJ5LT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0RpY3Rpb25hcnkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2LDEzICsxNTYsMTMgQEAgS2V5ZWREZWNvZGVyR2Vu
ZXJpYzo6S2V5ZWREZWNvZGVyR2VuZXJpYyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkKICAgICAgICAgICAgIG9rID0gcmVhZFN0cmluZyhkZWNvZGVyLCBrZXkpOwogICAgICAgICAg
ICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGF1dG8gbmV3
QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5PigpOworICAgICAgICAgICAgYXV0byBuZXdB
cnJheSA9IG1ha2VVbmlxdWU8QXJyYXk+KCk7CiAgICAgICAgICAgICBtX2FycmF5U3RhY2suYXBw
ZW5kKG5ld0FycmF5LmdldCgpKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmxhc3Qo
KS0+YWRkKGtleSwgV1RGTW92ZShuZXdBcnJheSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBLZXllZEVuY29kZXJHZW5lcmljOjpUeXBlOjpCZWdpbkFycmF5
RWxlbWVudDogewotICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gc3RkOjptYWtlX3Vu
aXF1ZTxEaWN0aW9uYXJ5PigpOworICAgICAgICAgICAgYXV0byBuZXdEaWN0aW9uYXJ5ID0gbWFr
ZVVuaXF1ZTxEaWN0aW9uYXJ5PigpOwogICAgICAgICAgICAgbV9kaWN0aW9uYXJ5U3RhY2suYXBw
ZW5kKG5ld0RpY3Rpb25hcnkuZ2V0KCkpOwogICAgICAgICAgICAgbV9hcnJheVN0YWNrLmxhc3Qo
KS0+YXBwZW5kKFdURk1vdmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcAppbmRleCAyZjg0MTA0NzQ2Mzk1NThmMjk1ZTgxYTUxNzE5YTg3MzRiMzJkNThh
Li4yMWNjMWViZTRhOTAxYTEzYzc0NDAzZGMwMWNmMmZjODE4MTMwMTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9w
dHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckdlbmVyaWM+KCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8S2V5ZWRFbmNvZGVyR2VuZXJpYz4oKTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5l
cmljOjplbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKaW5k
ZXggN2FlNjVjNWE4ZDMwOWUzZGVlZjUzY2U4Y2YxZTMwMjQyNmQyN2MxNC4uMjA4YWY3Yjg0Nzll
Y2FlZjU1MzBjY2M1NTdiNzM2ZWJhYmNiY2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcApAQCAtNDQs
MTQgKzQ0LDE0IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbENhcHR1cmVUaHJlc2hvbGQg
eyAxNTBfbXMgfTsKIAogc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmlt
YXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNjcm9sbGFibGVBcmVh
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvckdlbmVyaWM+KHNjcm9sbGFi
bGVBcmVhKTsKIH0KIAogU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVy
aWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogICAgIDogU2Nyb2xsQW5pbWF0b3Io
c2Nyb2xsYWJsZUFyZWEpCiAgICAgLCBtX292ZXJsYXlTY3JvbGxiYXJBbmltYXRpb25UaW1lcigq
dGhpcywgJlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6b3ZlcmxheVNjcm9sbGJhckFuaW1hdGlvblRp
bWVyRmlyZWQpCiB7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxBbmltYXRpb25LaW5ldGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10oRmxvYXRQb2lu
dCYmIHBvc2l0aW9uKSB7CisgICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3Jv
bGxBbmltYXRpb25LaW5ldGljPihtX3Njcm9sbGFibGVBcmVhLCBbdGhpc10oRmxvYXRQb2ludCYm
IHBvc2l0aW9uKSB7CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgICAgIGlmICht
X3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXRDdXJy
ZW50UG9zaXRpb24ocG9zaXRpb24pOwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFNjcm9sbEFuaW1h
dG9yR2VuZXJpYzo6ZW5zdXJlU21vb3RoU2Nyb2xsaW5nQW5pbWF0aW9uKCkKICAgICBpZiAobV9z
bW9vdGhBbmltYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc21vb3RoQW5pbWF0aW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fc2Nyb2xsYWJsZUFy
ZWEsIG1fY3VycmVudFBvc2l0aW9uLCBbdGhpc10oRmxvYXRQb2ludCYmIHBvc2l0aW9uKSB7Cisg
ICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4o
bV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShGbG9hdFBvaW50JiYg
cG9zaXRpb24pIHsKICAgICAgICAgdXBkYXRlUG9zaXRpb24oV1RGTW92ZShwb3NpdGlvbikpOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXll
ZERlY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWREZWNv
ZGVyR2xpYi5jcHAKaW5kZXggZTdkZDE5MTQwNDE3MTk2OGY5MGQ2ZmVhMzM1NGUxNGNlZjZmNTU2
Ny4uMzYxZTlkZjMyNDViZTU2NWIwZTJhNDFkZjE4YjI2ZmZiYzcxOWNkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVj
b2Rlcj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdsaWI+KGRh
dGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdsaWI+KGRhdGEs
IHNpemUpOwogfQogCiBLZXllZERlY29kZXJHbGliOjpLZXllZERlY29kZXJHbGliKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzQwNGJjYmQ0NDlhYTQ5MjFiOGNlMmI3
ZTAxODQ0OTUwMTA2ZjY4MC4uNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPEtleWVkRW5jb2Rlcj4gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCkKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxLZXllZEVuY29kZXJHbGliPigpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEtleWVkRW5jb2RlckdsaWI+KCk7CiB9CiAKIEtleWVkRW5jb2RlckdsaWI6OktleWVk
RW5jb2RlckdsaWIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCmluZGV4IGYxYzkwZTU5ODg5M2FkYTgzNDc5ZmM3YjM4M2E5MGE1MzViZjJh
OTkuLmIyYmQ0N2NiMTYxNGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTM0Nyw3
ICszNDcsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpjbGVhclRpbWVyKCkKIHZvaWQgQml0bWFwSW1h
Z2U6OnN0YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKICAgICBBU1NFUlQoIW1fZnJhbWVUaW1l
cik7Ci0gICAgbV9mcmFtZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZC
aXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CisgICAgbV9mcmFtZVRpbWVyID0gbWFrZVVu
aXF1ZTxUaW1lcj4oKnRoaXMsICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CiAgICAg
bV9mcmFtZVRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwogfQogCkBAIC01MTksNyArNTE5LDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6cmVzZXRBbmltYXRpb24oKQogdm9pZCBCaXRtYXBJbWFnZTo6
ZGVjb2RlKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9k
ZWNvZGluZ0NhbGxiYWNrcykKLSAgICAgICAgbV9kZWNvZGluZ0NhbGxiYWNrcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4sIDE+PigpOworICAgICAgICBtX2RlY29k
aW5nQ2FsbGJhY2tzID0gbWFrZVVuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiwgMT4+KCk7
CiAKICAgICBtX2RlY29kaW5nQ2FsbGJhY2tzLT5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcAppbmRleCAwZDM1NTYxODk3MGZiMjc3ZjcyZTc4OTkwZTNmNGYy
YTIxNmZiYzY5Li4zNTNmY2E2NjAxMzI2NGIwMjQ2MmE1NzEyMjRkMDVhMTgxZDk2ODlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgVGV4dExheW91dCB7CiAg
ICAgVGV4dExheW91dChSZW5kZXJUZXh0JiB0ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwg
ZmxvYXQgeFBvcykKICAgICAgICAgOiBtX2ZvbnQoZm9udCkKICAgICAgICAgLCBtX3J1bihjb25z
dHJ1Y3RUZXh0UnVuKHRleHQsIHhQb3MpKQotICAgICAgICAsIG1fY29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPENvbXBsZXhUZXh0Q29udHJvbGxlcj4obV9mb250LCBtX3J1biwgdHJ1ZSkpCisg
ICAgICAgICwgbV9jb250cm9sbGVyKG1ha2VVbmlxdWU8Q29tcGxleFRleHRDb250cm9sbGVyPiht
X2ZvbnQsIG1fcnVuLCB0cnVlKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGM0NDFlNTUzYzNhYzZmNDY0YmQzNWFhOWE5MDI3
YzBiNGI4NWU1ZTEuLmEyOTIzMWU4Nzk3NWZhMzE5ZTg2NDU0MTc5MGI0ODI1NDQ1M2E2MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0zOTAsNyArMzkw
LDcgQEAgR2x5cGhEYXRhIEZvbnQ6OmdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJh
Y3RlcikgY29uc3QKIGF1dG8gRm9udDo6ZW5zdXJlRGVyaXZlZEZvbnREYXRhKCkgY29uc3QgLT4g
RGVyaXZlZEZvbnRzJgogewogICAgIGlmICghbV9kZXJpdmVkRm9udERhdGEpCi0gICAgICAgIG1f
ZGVyaXZlZEZvbnREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkRm9udHM+KCk7CisgICAg
ICAgIG1fZGVyaXZlZEZvbnREYXRhID0gbWFrZVVuaXF1ZTxEZXJpdmVkRm9udHM+KCk7CiAgICAg
cmV0dXJuICptX2Rlcml2ZWRGb250RGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCmluZGV4IDZlODRlNmE3ZDk4YjhjY2MzM2NiZjNjODE3NzdiZTNlZmUyYzdm
YTYuLmY4YjgyMzM1ZGVlMTJiNzc1OGU2MGMwYWM3ZGJmZWJkYWJkM2FiYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTMzOCw3ICszMzgsNyBAQCBBTFdBWVNf
SU5MSU5FIEZsb2F0UmVjdCBGb250Ojpib3VuZHNGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QK
IAogICAgIGJvdW5kcyA9IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoZ2x5cGgpOwogICAgIGlmICgh
bV9nbHlwaFRvQm91bmRzTWFwKQotICAgICAgICBtX2dseXBoVG9Cb3VuZHNNYXAgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOworICAgICAgICBtX2dseXBo
VG9Cb3VuZHNNYXAgPSBtYWtlVW5pcXVlPEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+PigpOwog
ICAgIG1fZ2x5cGhUb0JvdW5kc01hcC0+c2V0TWV0cmljc0ZvckdseXBoKGdseXBoLCBib3VuZHMp
OwogICAgIHJldHVybiBib3VuZHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmNwcAppbmRleCAwN2ExMDg3NWM2ZjhkMjQ4Y2NlNmRkODE4NjIyOWQ3
ZGE5Y2NmOWViLi44MmYwYjYxOTk4YzY5MGM0ZmQxYzIxODNhNDEwYTkyNjA0ZGQyYTZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTI0
MCw3ICsyNDAsNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogICAgICAgICAgICAgICAgIGl0
ID0gZm9udFBsYXRmb3JtRGF0YUNhY2hlKCkuZmluZChrZXkpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChpdCAhPSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5lbmQoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKQotICAgICAgICAgICAgICAg
ICAgICBpdC0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KCpmb250
UGxhdGZvcm1EYXRhRm9yQWx0ZXJuYXRlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGl0LT52
YWx1ZSA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JB
bHRlcm5hdGVOYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA3Mjc0
ZGIwZGIzMmIzYjQxYjNlMGUxYjFlZDBmYjJhZWE4YjM2YTNiLi42NDgxOGY0YjUxNTVkNDJiZmFj
ODFiNjFmNGI1ZjljZGVhNTQ1MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgc3RhdGljIFJlZjxG
b250Q2FzY2FkZUZvbnRzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2Nh
ZGVEZXNjcmlwdGkKICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZv
bnRzLmdldCgpOwogCiAgICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOwotICAgIG5ld0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50
cnk+KFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNl
bGVjdG9yKSkpOworICAgIG5ld0VudHJ5ID0gbWFrZVVuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50
cnk+KFdURk1vdmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNl
bGVjdG9yKSkpOwogICAgIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBnbHlwaHMgPSBuZXdFbnRyeS0+
Zm9udHMuZ2V0KCk7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5yZWZlcmVuY2VkUHJ1
bmVJbnRlcnZhbCA9IDUwOwpAQCAtMzI2LDkgKzMyNiw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4o
R3JhCiAgICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4g
ZGlzcGxheUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4o
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5
TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwogICAgIEdyYXBo
aWNzQ29udGV4dCByZWNvcmRpbmdDb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGRpc3BsYXlM
aXN0Q29udGV4dCkgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlz
dDo6UmVjb3JkZXI+KGRpc3BsYXlMaXN0Q29udGV4dCwgKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0
YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCAqZGlz
cGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgp
KTsKICAgICB9KTsKICAgICAKICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQoc3RhcnRYLCAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
Rm9udHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVG
b250cy5jcHAKaW5kZXggZGI3NDMwMmU5ZGFhNGViNTJjMGNlMDgxZmQ1NjA1Mjc5NTc4ZmJmNC4u
MTJhYzgzN2ZjZDI0NjVmOWY4MWRlYjA2ODdhYTc3NmQ1ZWEwNjQ1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKQEAg
LTg0LDcgKzg0LDcgQEAgdm9pZCBGb250Q2FzY2FkZUZvbnRzOjpHbHlwaFBhZ2VDYWNoZUVudHJ5
OjpzZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGEKIHsKICAgICBBU1NFUlQoIWds
eXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIpLmdseXBoKTsKICAgICBpZiAoIW1fbWl4ZWRG
b250KSB7Ci0gICAgICAgIG1fbWl4ZWRGb250ID0gc3RkOjptYWtlX3VuaXF1ZTxNaXhlZEZvbnRH
bHlwaFBhZ2U+KG1fc2luZ2xlRm9udC5nZXQoKSk7CisgICAgICAgIG1fbWl4ZWRGb250ID0gbWFr
ZVVuaXF1ZTxNaXhlZEZvbnRHbHlwaFBhZ2U+KG1fc2luZ2xlRm9udC5nZXQoKSk7CiAgICAgICAg
IG1fc2luZ2xlRm9udCA9IG51bGxwdHI7CiAgICAgfQogICAgIG1fbWl4ZWRGb250LT5zZXRHbHlw
aERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBnbHlwaERhdGEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAppbmRleCAyNTllOTc1
MzNjYWVkY2ZjMTQ1ZmY3YWI0MjhlYTE2OWY2NGIxNTk0Li43OWUyZjUzODhjNDZlNTg5MjMwMTYx
YzQ3NDUyNTQxOTI0N2U4MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaApAQCAtMTMwLDEwICsxMzAsMTAgQEAgdGVtcGxhdGU8
Y2xhc3MgVD4gdHlwZW5hbWUgR2x5cGhNZXRyaWNzTWFwPFQ+OjpHbHlwaE1ldHJpY3NQYWdlJiBH
bHlwaE1ldHJpY3NNYXAKICAgICB9CiAKICAgICBpZiAoIW1fcGFnZXMpCi0gICAgICAgIG1fcGFn
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhN
ZXRyaWNzUGFnZT4+PigpOworICAgICAgICBtX3BhZ2VzID0gbWFrZVVuaXF1ZTxIYXNoTWFwPGlu
dCwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4oKTsKIAogICAgIGF1dG8mIHBh
Z2UgPSBtX3BhZ2VzLT5lbnN1cmUocGFnZU51bWJlciwgW10gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3duTWV0cmljcygpKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4odW5rbm93bk1ldHJpY3MoKSk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAqcGFnZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
YWFlM2EzMGIxMTZlZGRlMjQ1OTVhZDhmYmMxZmNlNzQ1NjUwMGE1MS4uNmNkMDBjMjY1NzBkOWRi
M2I5ZmFhN2UyMDIzYWYxYTVlN2U2M2EwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4KQogICAgIGlmIChtX3RyYW5zZm9ybSkKICAgICAgICAgKm1fdHJhbnNmb3JtID0gbWF0
cml4OwogICAgIGVsc2UKLSAgICAgICAgbV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRy
YW5zZm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAgICBtX3RyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CiB9CiAKIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBHcmFwaGljc0xheWVyOjpjaGlsZHJlblRyYW5zZm9ybSgpIGNvbnN0CkBA
IC0zNTYsNyArMzU2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyOjpzZXRDaGlsZHJlblRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogICAgIGlmIChtX2NoaWxkcmVu
VHJhbnNmb3JtKQogICAgICAgICAqbV9jaGlsZHJlblRyYW5zZm9ybSA9IG1hdHJpeDsKICAgICBl
bHNlCi0gICAgICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5z
Zm9ybWF0aW9uTWF0cml4PihtYXRyaXgpOworICAgICAgICBtX2NoaWxkcmVuVHJhbnNmb3JtID0g
bWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0cml4KTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyOjpzZXRNYXNrTGF5ZXIoUmVmUHRyPEdyYXBoaWNzTGF5ZXI+JiYgbGF5ZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5k
ZXggMDA5ZDQ4Njg5NWQ1Njg2MjU0MDExZGY1NjAwYTcyMTEyNDMwZTYyZi4uN2ExZmVhYWM3OWU3
OGJhODhmY2FkY2I4NWUzMjk5ZmQ3OWEwMDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNz
IEZsb2F0QW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigq
dGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0
aGlzKTsKICAgICB9CiAKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7
IH0KQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSA6IHB1
YmxpYyBBbmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFs
dWU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigqdGhpcyk7CiAgICAgfQogCiAg
ICAgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoY29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUm
IG90aGVyKQpAQCAtMTYzLDcgKzE2Myw3IEBAIGNsYXNzIEZpbHRlckFuaW1hdGlvblZhbHVlIDog
cHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25W
YWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBG
aWx0ZXJBbmltYXRpb25WYWx1ZShjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSYgb3RoZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggOGVjZjMzZjg5
OGI3NDQ5MTFmNzA1YTE0OWZmNzg4YjY3YjZkOTRlZi4uMzk5OTY3MmI5ZjU4OTMyODZjZjMyZGIx
Y2M2YjgwYTMzMTgyYWRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljCiB2b2lk
IEltYWdlOjpzdGFydEFuaW1hdGlvbkFzeW5jaHJvbm91c2x5KCkKIHsKICAgICBpZiAoIW1fYW5p
bWF0aW9uU3RhcnRUaW1lcikKLSAgICAgICAgbV9hbmltYXRpb25TdGFydFRpbWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZJbWFnZTo6c3RhcnRBbmltYXRpb24pOworICAgICAg
ICBtX2FuaW1hdGlvblN0YXJ0VGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkltYWdl
OjpzdGFydEFuaW1hdGlvbik7CiAgICAgaWYgKG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+aXNBY3Rp
dmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lci0+c3RhcnRP
bmVTaG90KDBfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKaW5kZXggNzU3ZjA5NTY3ZGM1ZGZkZjViZTAyNjM5NjM5ZDFlZmVjNzE4YzBk
Yi4uYWJlODY5NDE5NGZmN2MxNzUxMDBiNjk4ODA0YTEyNDBiZDYyYzg0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTQ4LDcg
KzE0OCw3IEBAIGNsYXNzIE51bGxNZWRpYVBsYXllclByaXZhdGUgZmluYWwgOiBwdWJsaWMgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKIAogICAgIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbWluVGltZVNlZWthYmxlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpOyB9CiAKICAgICBkb3VibGUgc2Vla2FibGVUaW1lUmFuZ2VzTGFz
dE1vZGlmaWVkVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGl2
ZVVwZGF0ZUludGVydmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQpAQCAtMzU1LDcgKzM1
NSw3IEBAIFJlZjxNZWRpYVBsYXllcj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZShNZWRpYVBsYXllckNs
aWVudCYgY2xpZW50KQogTWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50
JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudCgmY2xpZW50KQogICAgICwgbV9yZWxvYWRUaW1lcigq
dGhpcywgJk1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKQotICAgICwgbV9wcml2YXRlKHN0
ZDo6bWFrZV91bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcykpCisgICAgLCBtX3By
aXZhdGUobWFrZVVuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKSkKIHsKIH0KIApA
QCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5n
aW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKICNlbmRpZgogICAgICAgICBt
X3ByaXZhdGUtPmxvYWQobV91cmwuc3RyaW5nKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1f
cHJpdmF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4odGhpcyk7
CisgICAgICAgIG1fcHJpdmF0ZSA9IG1ha2VVbmlxdWU8TnVsbE1lZGlhUGxheWVyUHJpdmF0ZT4o
dGhpcyk7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lVXBkYXRlZCh0aGlzKTsK
ICAgICAgICAgY2xpZW50KCkubWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZCh0aGlzKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCmluZGV4IDAwZDg1YTQ5OTY0MmIzZjUyMzdiMzBiZmY1ZjRlNmI0Mjkx
MzBlY2QuLjFkMmZjMDA5MjA0YThjMDI1NTQxYjJhMmQ3YzVmMGQwYmU1Yzk5Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCkBAIC0xMjksNyArMTI5LDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
IHsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7IHJldHVybiBtYXhNZWRpYVRpbWVTZWVrYWJsZSgp
ID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSA/IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlh
VGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNlZWthYmxlKCkpOyB9CisgICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpID8gbWFr
ZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJh
bmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2FibGUoKSk7IH0K
ICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
ICAgICB2aXJ0dWFsIE1lZGlhVGltZSBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtYXhUaW1lU2Vla2FibGUoKSk7IH0KICAg
ICB2aXJ0dWFsIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3Bw
CmluZGV4IDNlNjg4MDU1YmRjYzBiMTBlNDE2MGNmMTQwZDRmYWNlOTIzMjBhNjUuLjVhZDkzMzQ5
YmZiNDBkYTRmZjMwOGFkYTk4NDk3ZmMzNzVlMTA4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCkBAIC04OSw3ICs4OSw3IEBA
IEZsb2F0UG9pbnRHcmFwaDo6Tm9kZSogRmxvYXRQb2ludEdyYXBoOjpmaW5kT3JDcmVhdGVOb2Rl
KEZsb2F0UG9pbnQgcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gdGVzdE5vZGUuZ2V0KCk7CiAg
ICAgfQogCi0gICAgbV9hbGxOb2Rlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFBvaW50
R3JhcGg6Ok5vZGU+KHBvaW50KSk7CisgICAgbV9hbGxOb2Rlcy5hcHBlbmQobWFrZVVuaXF1ZTxG
bG9hdFBvaW50R3JhcGg6Ok5vZGU+KHBvaW50KSk7CiAgICAgcmV0dXJuIG1fYWxsTm9kZXMubGFz
dCgpLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9u
LmNwcAppbmRleCA5ZGNlZTg3NjE2MjVjMDE0ODhiNGQ5MGQxYWYyMmUzNTQzNWQ0YTVlLi42YTcw
MWMxYTEyODk3OWQ0Yzk0OGIxYTdiYWI1NjhmMTAyNDdjZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIFJl
Z2lvbjo6c2V0U2hhcGUoU2hhcGUmJiBzaGFwZSkKICAgICB9CiAKICAgICBpZiAoIW1fc2hhcGUp
Ci0gICAgICAgIG1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBl
KSk7CisgICAgICAgIG1fc2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBlPihXVEZNb3ZlKHNoYXBlKSk7
CiAgICAgZWxzZQogICAgICAgICAqbV9zaGFwZSA9IFdURk1vdmUoc2hhcGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAppbmRleCA0MGY5NmJmYWZiMGRiMDM1
ZGE2OWQ1OTZjMDE1MmMxY2JhZjE3OGNjLi5iYzM5YzMwMDAwZWE4YjZiNWE5ZTYwY2YyYmM1YWUx
ODY2NjRiNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaApA
QCAtMTQ5LDcgKzE0OSw3IEBAIGNsYXNzIFJlZ2lvbiB7CiAgICAgICAgIGZyaWVuZCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2hhcGUmLCBjb25zdCBTaGFwZSYpOwogICAgIH07CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2hhcGU+IGNvcHlTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBz
dGQ6Om1ha2VfdW5pcXVlPFNoYXBlPigqbV9zaGFwZSkgOiBudWxscHRyOyB9CisgICAgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBjb3B5U2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlID8gbWFr
ZVVuaXF1ZTxTaGFwZT4oKm1fc2hhcGUpIDogbnVsbHB0cjsgfQogICAgIHZvaWQgc2V0U2hhcGUo
U2hhcGUmJik7CiAKICAgICBJbnRSZWN0IG1fYm91bmRzOwpAQCAtMjkwLDcgKzI5MCw3IEBAIE9w
dGlvbmFsPFJlZ2lvbj4gUmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
ZGVjb2RlciA+PiBzaGFwZTsKICAgICAgICAgaWYgKCFzaGFwZSkKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJlZ2lvbi5tX3NoYXBlID0gc3RkOjptYWtlX3VuaXF1
ZTxTaGFwZT4oV1RGTW92ZSgqc2hhcGUpKTsKKyAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBtYWtl
VW5pcXVlPFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOwogICAgIH0KIAogICAgIHJldHVybiB7IHJl
Z2lvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4
dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCmluZGV4IDFlNGU3ZmFjMzZjN2MzMGE2NTZm
MWVmZDAwYWFjZTZkNGM5NWNlZGEuLjY5MzlmOTE3YWU2ZmFiMTNlYzFjOTFkNGFhODE1NTY2YTkx
NzBkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRU
cmFja1JlcHJlc2VudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3Mg
TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9uIDogcHVibGljIFRleHRUcmFja1JlcHJlc2VudGF0
aW9uIHsKIAogc3RkOjp1bmlxdWVfcHRyPFRleHRUcmFja1JlcHJlc2VudGF0aW9uPiBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbjo6Y3JlYXRlKFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ2xpZW50JikK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TnVsbFRleHRUcmFja1JlcHJlc2VudGF0aW9u
PigpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAKaW5kZXgg
NzdhM2UxOGMxYzZjMmUyN2RkNjNhZTI5NmY2ZWM5YTFlYTJmYWUxZi4uNjEyNjBlOWM4M2RjNGE1
NTI4NTcxYzk5ZDRhMjcwNWIxNmNhNGUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdMRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RBTkdM
RS5jcHAKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRl
cHRoKEdDM0RjbGFtcGYgZGVwdGgpCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRl
bnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RBTkdMRT4odGhpcywgaXNHTEVT
MkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNp
b25zM0RBTkdMRT4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0
ZW5zaW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLm1tCmluZGV4IDVjZDc3NzJhYzJlZTFjZWE5MDEwZTgzMzcxZWE2YWFlZjdmMDY5NTgu
LjZiM2M5MjJlNmFlYmU1OTIwYWU2NWU1N2FmMDVlZGU0YWQwMzc0M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTMxMywxMiArMzEz
LDEyIEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmUoQ01JdGVtQ291
bnQgbWF4RnJhbWVzLCBjb25zdCBBdWRpb1N0cmVhCiB7CiAgICAgQVNTRVJUKG1heEZyYW1lcyA+
PSAwKTsKIAotICAgIG1fdGFwRGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQpOworICAgIG1fdGFwRGVzY3Jp
cHRpb24gPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24+KCpwcm9jZXNzaW5nRm9ybWF0KTsKICAgICBpbnQgbnVtYmVyT2ZDaGFubmVs
cyA9IHByb2Nlc3NpbmdGb3JtYXQtPm1DaGFubmVsc1BlckZyYW1lOwogICAgIGRvdWJsZSBzYW1w
bGVSYXRlID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bVNhbXBsZVJhdGU7CiAgICAgQVNTRVJUKHNhbXBs
ZVJhdGUgPj0gMCk7CiAKLSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+KCk7CisgICAgbV9vdXRwdXREZXNjcmlwdGlv
biA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNEZXNj
cmlwdGlvbj4oKTsKICAgICBtX291dHB1dERlc2NyaXB0aW9uLT5tU2FtcGxlUmF0ZSA9IHNhbXBs
ZVJhdGU7CiAgICAgbV9vdXRwdXREZXNjcmlwdGlvbi0+bUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0
TGluZWFyUENNOwogICAgIG1fb3V0cHV0RGVzY3JpcHRpb24tPm1Gb3JtYXRGbGFncyA9IGtBdWRp
b0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQ7CkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMs
IGNvbnN0IEF1ZGlvU3RyZWEKICAgICAvLyBNYWtlIHRoZSByaW5nYnVmZmVyIGxhcmdlIGVub3Vn
aCB0byBzdG9yZSBhdCBsZWFzdCB0d28gY2FsbGJhY2tzIHdvcnRoIG9mIGF1ZGlvLCBvciAxcywg
d2hpY2hldmVyIGlzIGxhcmdlci4KICAgICBzaXplX3QgY2FwYWNpdHkgPSBzdGQ6Om1heChzdGF0
aWNfY2FzdDxzaXplX3Q+KDIgKiBtYXhGcmFtZXMpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGtSaW5n
QnVmZmVyRHVyYXRpb24gKiBzYW1wbGVSYXRlKSk7CiAKLSAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICBtX3JpbmdCdWZmZXIgPSBtYWtlVW5p
cXVlPENBUmluZ0J1ZmZlcj4oKTsKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRlKENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbigqcHJvY2Vzc2luZ0Zvcm1hdCksIGNhcGFjaXR5KTsKIAogICAgIC8v
IEF1ZGlvQnVmZmVyTGlzdCBpcyBhIHZhcmlhYmxlLWxlbmd0aCBzdHJ1Y3QsIHNvIGNyZWF0ZSBv
biB0aGUgaGVhcCB3aXRoIGEgZ2VuZXJpYyBuZXcoKSBvcGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggMzYxYTk5MmYwYzQ2NTBjZjJiOTYyOGE2
NDJlOTdiNWRiYTBlMmEzYy4uNGZjNjc4N2RkOGQ5MDdjYWQ2YTI3N2YzOWIxZWQzMmVkNjc5YTZk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC0yMzQs
NyArMjM0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGU+IENETUZhY3RvcnlGYWlyUGxh
eVN0cmVhbWluZzo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYKICAgICBpZiAoIXN1cHBvcnRzS2V5
U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nPigpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZz4oKTsKIH0KIAogYm9v
bCBDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQppbmRleCAyY2MwOGE5YTNiNTFjYmY3YWIxOTc0MjAyYTk4YjE2OWRi
NDNjMTAxLi4wY2QwMTI5YTNjZDllYWY4NjNhZDQ3ODk4Mzg1MDMxZDhiNzZlZjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAt
MTQ3LDEwICsxNDcsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IENETVBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNyZWF0ZVNlc3Npb24oTGUKICNlbmRpZgogICAgIAog
ICAgIGlmIChzaG91bGRVc2VBVkNvbnRlbnRLZXlTZXNzaW9uICYmIENETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uOjppc0F2YWlsYWJsZSgpKQotICAgICAgICBzZXNzaW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJz
LnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1ldGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBj
bGllbnQpOworICAgICAgICBzZXNzaW9uID0gbWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgcGFyYW1l
dGVycy52YWx1ZSgpLnZlcnNpb24sICp0aGlzLCBjbGllbnQpOwogICAgIGVsc2UKICNpZiBIQVZF
KEFWU1RSRUFNU0VTU0lPTikKLSAgICAgICAgc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Q0RN
U2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShwYXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9j
b2xzKSwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNl
c3Npb25BVlN0cmVhbVNlc3Npb24+KFdURk1vdmUocGFyYW1ldGVycy52YWx1ZSgpLnByb3RvY29s
cyksICp0aGlzLCBjbGllbnQpOwogI2Vsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKaW5kZXggODU3ZjMxZjI3NzJmNDA4MWZiYTYzOGY4MTBjMTE0OTQyODU4Yjk0Yi4u
NTljZjhiYTIxMzE2YjMwN2MwNTAyM2VkNTZkOWIzOWQyNTYxN2YwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM4
NCw3ICszODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgYwogICAgIGlmICghbV9jYWNoZWRM
b2FkZWRUaW1lUmFuZ2VzKQogICAgICAgICBtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMgPSBwbGF0
Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hlZExvYWRlZFRpbWVSYW5n
ZXMpOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjptYXhN
ZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXggMzk1Y2U3ODJlOGM1ODA0NTk2MTYyNDY5ODBmMzNl
YWRmMDNiNzhiMi4uNWY1YjZmNjk1MmI0OTNhOTg4N2JhZmM3ZjMwYjdiZWU3MzM0MTVlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAt
NDksNyArNDksNyBAQCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjp+V2ViTWVkaWFTZXNzaW9u
TWFuYWdlck1hYygpID0gZGVmYXVsdDsKIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXImIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWM6OnBsYXRmb3JtUGlja2VyKCkKIHsKICAgICBp
ZiAoIW1fdGFyZ2V0UGlja2VyKQotICAgICAgICBtX3RhcmdldFBpY2tlciA9IHN0ZDo6bWFrZV91
bmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRoaXMpOworICAgICAgICBtX3Rh
cmdldFBpY2tlciA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4oKnRo
aXMpOwogCiAgICAgcmV0dXJuICptX3RhcmdldFBpY2tlci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwCmluZGV4IGMyYzhhZTZjMWVlMWM1NjQyMjJlNTAyYjMyOWM1OTJlNWZhMmE4ZWUuLjNiNzBl
NzY2MzllNTk0MGFmMWYyYjFkNWJmMjY3M2FlMzJkZWNhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApA
QCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbExvYWRlckRl
bGVnYXRlUXVldWUoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAg
aWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxh
eWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5
cGUsIDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKIH0KIApAQCAtNjc0LDcgKzY3NCw3IEBA
IHN0YXRpYyBib29sIHRpbWVSYW5nZUlzVmFsaWRBbmROb3RFbXB0eShDTVRpbWUgc3RhcnQsIENN
VGltZSBkdXJhdGlvbikKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2Vz
KCkgY29uc3QKIHsKLSAgICBhdXRvIHRpbWVSYW5nZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKTsKIAogICAgIGlmICghYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikp
CiAgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpjcmVhdGVTZXNzaW8KICAgICBpZiAoIWtleVN5c3RlbUlzU3VwcG9ydGVkKGtleVN5c3Rl
bSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGPigqdGhpcywgY2xpZW50KTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+KCp0aGlzLCBjbGllbnQpOwogfQog
CiAjZWxpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTE3MTEsNyArMTcxMSw3
IEBAIHZvaWQgQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25D
ZW50ZXJSZWYsIHZvaWQqIG9ic2VydmVyLCBDCiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6
bm90aWZpY2F0aW9uQ2FsbGJhY2soaWY9JWQpICVzIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KG9ic2VydmVyKSwgbm90aWZpY2F0aW9uTmFtZSk7CiAjZW5kaWYKIAotICAgIGF1dG8gbm90
aWZpY2F0aW9uRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRh
Pihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbkRhdGEgPSBt
YWtlVW5pcXVlPE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YT4ocHJvcGVydHlOYW1lLCBvYnNlcnZl
cik7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIG5v
dGlmaWNhdGlvbkRhdGEucmVsZWFzZSgpLCBwcm9jZXNzTm90aWZpY2F0aW9uKTsKIH0KQEAgLTE4
MzcsNyArMTgzNyw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6bGVnaWJsZU91dHB1dENhbGxiYWNrKHZv
aWQqIGNvbnRleHQsIEFWQ0ZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1CiAKICAgICBBU1NFUlQobGVn
aWJsZU91dHB1dCA9PSBzZWxmLT5tX2xlZ2libGVPdXRwdXQpOwogCi0gICAgYXV0byBsZWdpYmxl
T3V0cHV0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnaWJsZU91dHB1dERhdGE+KGF0dHJpYnV0
ZWRTdHJpbmdzLCBuYXRpdmVTYW1wbGVCdWZmZXJzLCBQQUw6OnRvTWVkaWFUaW1lKGl0ZW1UaW1l
KSwgY29udGV4dCk7CisgICAgYXV0byBsZWdpYmxlT3V0cHV0RGF0YSA9IG1ha2VVbmlxdWU8TGVn
aWJsZU91dHB1dERhdGE+KGF0dHJpYnV0ZWRTdHJpbmdzLCBuYXRpdmVTYW1wbGVCdWZmZXJzLCBQ
QUw6OnRvTWVkaWFUaW1lKGl0ZW1UaW1lKSwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9hc3lu
Y19mKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIGxlZ2libGVPdXRwdXREYXRhLnJlbGVhc2Uo
KSwgcHJvY2Vzc0N1ZSk7CiB9CkBAIC0xOTMxLDcgKzE5MzEsNyBAQCBCb29sZWFuIEFWRldyYXBw
ZXI6OnJlc291cmNlTG9hZGVyU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNl
KEFWQ0ZBcwogCiAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91
bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoJXApIiwgc2VsZik7CiAKLSAgICBh
dXRvIGxvYWRSZXF1ZXN0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZFJlcXVlc3REYXRhPihs
b2FkaW5nUmVxdWVzdCwgY29udGV4dCk7CisgICAgYXV0byBsb2FkUmVxdWVzdERhdGEgPSBtYWtl
VW5pcXVlPExvYWRSZXF1ZXN0RGF0YT4obG9hZGluZ1JlcXVlc3QsIGNvbnRleHQpOwogCiAgICAg
ZGlzcGF0Y2hfYXN5bmNfZihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBsb2FkUmVxdWVzdERh
dGEucmVsZWFzZSgpLCBwcm9jZXNzU2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKTsKIApA
QCAtMTk1OCw3ICsxOTU4LDcgQEAgUGxhdGZvcm1MYXllciogQVZGV3JhcHBlcjo6cGxhdGZvcm1M
YXllcigpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gQ3JlYXRlIGEgUGxhdGZvcm1DQUxh
eWVyIHNvIHdlIGNhbiByZXNpemUgdGhlIHZpZGVvIGxheWVyIHRvIG1hdGNoIHRoZSBlbGVtZW50
IHNpemUuCi0gICAgbV9sYXllckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+
KHRoaXMpOworICAgIG1fbGF5ZXJDbGllbnQgPSBtYWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlz
KTsKICAgICBpZiAoIW1fbGF5ZXJDbGllbnQpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
dWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KaW5kZXgg
ZTE0YWYxYTI3ZjI2YmQxYWQ2MDI4NjA0YTU3NTJmMGRmOWE4ZGY1Mi4uN2RlMTRjMjU3MWY3ZDM4
ZWVjYmIzNDhmZGEzYzc0YTQzZGViODJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzMsMTMgKzMzLDEzIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDKEFWUGxheWVySXRlbVRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6
Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1f
aW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAg
ICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogQXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpD
JiBvcHRpb24pCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPihvcHRpb24pKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKIHsKICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2so
KTsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnJl
c2V0UHJvcGVydGllc0Zyb21UcmFjaygpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpD
OjpzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sgKnRyYWNrKQogewotICAgIG1f
aW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2sp
OworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJh
Y2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC02OSwxNCArNjks
MTQgQEAgQVZQbGF5ZXJJdGVtVHJhY2sqIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVy
SXRlbVRyYWNrKCkKIH0KIAogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaykKLSAgICA6IG1faW1wbChzdGQ6Om1ha2Vf
dW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbCht
YWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKSkKIHsKICAgICByZXNl
dFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OnNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBt
X2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAg
ICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtODcsNyArODcsNyBAQCBBVkFz
c2V0VHJhY2sqIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6YXNzZXRUcmFjaygpCiAKIHZvaWQg
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdGlvbk9wdGlvbihNZWRpYVNl
bGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CisgICAgbV9pbXBsID0g
bWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOwogICAgIHJlc2V0
UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKaW5k
ZXggZWMwZDBlZGRiZjczYmVlZGE2NzE3YjdhNTE4YzczMjEyNjA5NWFlMi4uZGY1MjI2YTRlYTAz
NmU1NmZhMjUzOWE2Mjc2MmEyMzhhZTcwZTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNw
cApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBdWRpb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVu
dCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0lt
cGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KHRyYWNrKSkKICAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKICAgICByZXNldFByb3Bl
cnRpZXNGcm9tVHJhY2soKTsKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0
VHJhY2sgKnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFj
a1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bQppbmRleCA1NDgyMGQyMjUxOTdkYjdmOWJlNzNmNGZiZDJjZWM4NzhmOWE4MDA4Li4zMjZkYWRi
YjE3ZDA4OTExNzBlYjc1NDUzYjYzNDhkN2ZlODM5NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIElt
YWdlRGVjb2RlckFWRk9iakM6OnJlYWRUcmFja01ldGFkYXRhKCkKICAgICAgICAgfHwgIW1faW1h
Z2VSb3RhdGlvblNlc3Npb24tPnRyYW5zZm9ybSgpCiAgICAgICAgIHx8IG1faW1hZ2VSb3RhdGlv
blNlc3Npb24tPnRyYW5zZm9ybSgpLnZhbHVlKCkgIT0gZmluYWxUcmFuc2Zvcm0KICAgICAgICAg
fHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+c2l6ZSgpICE9IHNpemUpCi0gICAgICAgIG1faW1h
Z2VSb3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9u
VlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zvcm0pLCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJC
R1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwor
ICAgICAgICBtX2ltYWdlUm90YXRpb25TZXNzaW9uID0gbWFrZVVuaXF1ZTxJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUPihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgc2l6ZSwga0NWUGl4ZWxGb3JtYXRU
eXBlXzMyQkdSQSwgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6
WWVzKTsKIAogICAgIG1fc2l6ZSA9IGV4cGFuZGVkSW50U2l6ZShtX2ltYWdlUm90YXRpb25TZXNz
aW9uLT5yb3RhdGVkU2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDVjZDIy
NDAzYWEyYzJlZjYyMmUzMDBkMDA3NDFmYzBjMzMzOWJmMzYuLjdmYzAxOGFlNThlYWY1MjU2MGRl
ZTZiMzRhMWE5N2NlN2QwMWQyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjc2LDcg
KzI3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0
ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhCiAgICAgaWYgKCFpc0F2YWlsYWJsZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDPihwbGF5ZXIpOyB9LAorICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+
KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBl
LCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMsIHN1cHBvcnRzS2V5U3lzdGVtKTsKICAgICBBU1NFUlQoQVZBc3NldE1JTUVUeXBl
Q2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAtMzY2LDcgKzM2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmCiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXIqIHBs
YXllcikKICAgICA6IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbihwbGF5ZXIpCi0gICAg
LCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPFZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAg
ICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3Jhdml0eVJl
c2l6ZUFzcGVjdCkKICAgICAsIG1fb2JqY09ic2VydmVyKGFkb3B0TlMoW1tXZWJDb3JlQVZGTW92
aWVPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhQbGF5ZXI6bWFrZVdlYWtQdHIoKnRoaXMpXSkpCiAg
ICAgLCBtX3ZpZGVvRnJhbWVIYXNEcmF3bihmYWxzZSkKQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0UHJlc2VydmVzUGl0Y2go
Ym9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1CdWZmZXJlZFRp
bWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSkKICAg
ICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CkBAIC0xODkyLDcgKzE4OTIsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbigpCiAg
ICAgICAgICYmIG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnNpemUoKSA9PSBuYXR1cmFsU2l6ZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSks
IG5hdHVyYWxTaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vz
c2lvblZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOworICAgIG1faW1hZ2VSb3RhdGlvblNl
c3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxU
cmFuc2Zvcm0pLCBuYXR1cmFsU2l6ZSwga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSwgSW1hZ2VS
b3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6WWVzKTsKIH0KIAogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKQEAgLTIyMTYsNyArMjIxNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkK
ICNlbHNlCiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IG5pbDsKICNlbmRpZgot
ICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwor
ICAgICAgICBtX3BpeGVsQnVmZmVyQ29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0K
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMjI2NSw3ICsyMjY1LDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGgKICAgICBzaXplX3QgaGVpZ2h0ID0gQ1ZQaXhlbEJ1ZmZlckdldEhl
aWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJl
Q29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8
VmlkZW9UZXh0dXJlQ29waWVyQ1Y+KCpjb250ZXh0KTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVD
b3BpZXIgPSBtYWtlVW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CiAKICAg
ICByZXR1cm4gbV92aWRlb1RleHR1cmVDb3BpZXItPmNvcHlJbWFnZVRvUGxhdGZvcm1UZXh0dXJl
KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCB3aWR0aCwgaGVpZ2h0LCBvdXRwdXRUZXh0dXJlLCBv
dXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0
aXBseUFscGhhLCBmbGlwWSk7CiB9CkBAIC0yMzMwLDcgKzIzMzAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y3JlYXRlU2VzcwogewogICAgIGlmICgha2V5U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQz4odGhpcywgY2xpZW50KTsKKyAgICBhdXRv
IHNlc3Npb24gPSBtYWtlVW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDPih0aGlzLCBj
bGllbnQpOwogICAgIG1fc2Vzc2lvbiA9IG1ha2VXZWFrUHRyKCpzZXNzaW9uKTsKICAgICByZXR1
cm4gV1RGTW92ZShzZXNzaW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA3
MmQxYWYxN2U5NzcwYzIyODdmN2Y1Y2NlOWM4NzZlMzM5ODNiNTIyLi5kOGNlZmViNTg0Zjg2M2Yx
MzVhOGExMTgyMWEyOGQzMjRjOGZjNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBA
IC0xNDEsNyArMTQxLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTWVkaWEKICAgICAsIG1fcGxheWlu
ZygwKQogICAgICwgbV9zZWVraW5nKGZhbHNlKQogICAgICwgbV9sb2FkaW5nUHJvZ3Jlc3NlZChm
YWxzZSkKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlx
dWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
T2JqQz4oKSkKICAgICAsIG1fZWZmZWN0aXZlUmF0ZUNoYW5nZWRMaXN0ZW5lcihFZmZlY3RpdmVS
YXRlQ2hhbmdlZExpc3RlbmVyOjpjcmVhdGUoKnRoaXMsIFttX3N5bmNocm9uaXplciB0aW1lYmFz
ZV0pKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIocGxheWVyLT5t
ZWRpYVBsYXllckxvZ2dlcigpKQpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5l
UmVnaXN0CiAgICAgaWYgKCFpc0F2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+KHBsYXllcik7IH0sCisgICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihwbGF5ZXIpOyB9LAogICAgICAgICBn
ZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKICAgICBBU1NFUlQo
QVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpOwogfQpAQCAt
NDQxLDcgKzQ0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIHRpCiAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgInRpbWUgPSAiLCB0aW1lLCAiLCBuZWdhdGl2ZVRocmVzaG9sZCA9ICIsIG5l
Z2F0aXZlVGhyZXNob2xkLCAiLCBwb3NpdGl2ZVRocmVzaG9sZCA9ICIsIHBvc2l0aXZlVGhyZXNo
b2xkKTsKIAogICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9wZW5kaW5nU2VlayA9IHN0ZDo6
bWFrZV91bmlxdWU8UGVuZGluZ1NlZWs+KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2
ZVRocmVzaG9sZCk7CisgICAgbV9wZW5kaW5nU2VlayA9IG1ha2VVbmlxdWU8UGVuZGluZ1NlZWs+
KHRpbWUsIG5lZ2F0aXZlVGhyZXNob2xkLCBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICAgICBpZiAo
bV9zZWVrVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9zZWVrVGltZXIuc3RvcCgpOwpAQCAt
NTQ3LDcgKzU0Nyw3IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c2Vla2FibGUoKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRp
YVRpbWVTZWVrYWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKIH0KIAogTWVkaWFUaW1l
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bWF4TWVkaWFUaW1lU2Vla2Fi
bGUoKSBjb25zdApAQCAtNTYyLDcgKzU2Miw3IEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6Om1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKIAogc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3Vy
Y2VQcml2YXRlID8gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCkgOiBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVBy
aXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVyZWQoKSA6IG1ha2VVbmlxdWU8UGxh
dGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKQEAgLTYwNiw3ICs2MDYsNyBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlTGFzdElt
YWdlKCkKIAogICAgIGlmICghbV9yZ2JDb25mb3JtZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1
dGVzID0gQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5
cGVLZXk6IEAoa0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQSkgfTsKLSAgICAgICAgbV9yZ2JDb25m
b3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRn
ZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcmdiQ29uZm9ybWVyID0g
bWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5
UmVmKWF0dHJpYnV0ZXMpOwogICAgIH0KIAogICAgIG1fbGFzdEltYWdlID0gbV9yZ2JDb25mb3Jt
ZXItPmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsK
QEAgLTY1Myw3ICs2NTMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAgIHNpemVfdCBo
ZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsK
IAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJl
Q29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQp
OworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJl
Q29waWVyQ1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+
Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRo
LCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9y
bWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbQppbmRleCBjYTNiMTEzNTUyYjM4ODVjOTk5NzdkYWUyYTIxZWExNjU3
N2VkYTgwLi45ZGVlZTQ2ZjJjYTI0NTI5NTNkZjVjYTg4YmI2OWY4MThlN2U0ZTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0xODMsNyArMTgzLDcgQEAgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMoTWVkaWEKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fc3RhdHVzQ2hhbmdlTGlz
dGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3Jl
YXRlKCkpCi0gICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihzdGQ6Om1ha2VfdW5p
cXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCisgICAgLCBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ck9iakM+KCkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihwbGF5
ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxheWVyLT5t
ZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMoKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJl
Z2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAg
IGlmIChpc0F2YWlsYWJsZSgpKQotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBs
YXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVzLAorICAgICAgICByZWdp
c3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5
cGVzLAogICAgICAgICAgICAgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTA1
NCwxMiArMTA1NCwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6dXBkYXRlVHJhY2tzKCkKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQpAQCAtMTA3Myw3ICsxMDczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnVwZGF0ZUN1cnJlbnRGcmFtZUltYWdlKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1lcikKLSAgICAgICAgbV9p
bWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVs
QnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdl
IE5TU3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxG
b3JtYXRUeXBlXzMyQkdSQSkgfSk7CisgICAgICAgIG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVy
Q29uZm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4
ZWxGb3JtYXRUeXBlS2V5OiBAKGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEpIH0pOwogCiAgICAg
QVNTRVJUKG1faW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKTsKICAgICBpZiAoIW1f
aW1hZ2VQYWludGVyLnBpeGVsQnVmZmVyQ29uZm9ybWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKaW5kZXggYzg3MWM1OTQ4MzU1
MDg1NzE4MmM3YTI0ZDU1MzRiODVhNWQ0ZWY3ZS4uMjk0ODNiYTVlOThkOTVmYThlNWVjOWE2YTEw
YmY2NDFhYWUzNTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuY3BwCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akMoQVZQbGF5ZXJJdGVtVHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VV
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJv
cGVydGllc0Zyb21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OlZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrKQotICAgIDogbV9pbXBsKHN0
ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDog
bV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogewog
ICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiBWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhNZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9i
akMmIG9wdGlvbikKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KG9wdGlvbikpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJp
dmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFj
aygpOwogfQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6
cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAg
bV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFj
ayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0
cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKQEAgLTc3LDcgKzc3
LDcgQEAgQVZQbGF5ZXJJdGVtVHJhY2sqIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6cGxheWVy
SXRlbVRyYWNrKCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldEFzc2V0VHJh
Y2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5p
cXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRp
ZXNGcm9tVHJhY2soKTsKIH0KIApAQCAtODgsNyArODgsNyBAQCBBVkFzc2V0VHJhY2sqIFZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQzo6YXNzZXRUcmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZh
dGVBVkZPYmpDOjpzZXRNZWRpYVNlbGVjdG9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZG
T2JqQyYgb3B0aW9uKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1By
aXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRy
YWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlk
ZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZmNjMjQ5NmExMzVhYTRm
NzNhOGZlNTQ4ZDE0ZTBjODAwMDRhZDFiMC4uOTc1NmNmZmFmZDhjM2Y2ZmUzYjQ3YTIzMzM3MWI3
NGRlYzk4ZDA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTM1LDcgKzM1LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKEFWQXNzZXRUcmFjayogdHJh
Y2ssIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBwYXJlbnQpCi0gICAgOiBtX2ltcGwoc3Rk
OjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCisgICAgOiBt
X2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjaykpCiAgICAg
LCBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RyYWNrSUQoLTEpCiAgICAgLCBtX3NlbGVjdGVk
KGZhbHNlKQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJh
Y2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9i
akNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCmluZGV4IDE3MWYyNzcyYzk0YTY5Y2RhNzM0OTNjYzljOGM3ODc4YjAwMTA4
ZGQuLjg3NjUzNDQ1MjAyNGU2MTY1MTQxN2EwNGEwZDk0NTA1OGE5NTQwMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcApAQCAtMTYzNiwxMiArMTYzNiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVjdXJz
aXZlQ29tbWl0Q2hhbmdlcyhDb21taXRTdGF0ZSYgY29tbWl0U3RhdGUsIGNvbnN0IFRyYQogICAg
IGlmICh1c2VzRGlzcGxheUxpc3REcmF3aW5nKCkgJiYgbV9kcmF3c0NvbnRlbnQgJiYgKCFtX2hh
c0V2ZXJQYWludGVkIHx8IGhhZERpcnR5UmVjdHMpKSB7CiAgICAgICAgIFRyYWNlU2NvcGUgdHJh
Y2luZ1Njb3BlKERpc3BsYXlMaXN0UmVjb3JkU3RhcnQsIERpc3BsYXlMaXN0UmVjb3JkRW5kKTsK
IAotICAgICAgICBtX2Rpc3BsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q+KCk7CisgICAgICAgIG1fZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKICAgICAgICAgCiAgICAgICAgIEZsb2F0UmVjdCBpbml0
aWFsQ2xpcChib3VuZHNPcmlnaW4oKSwgc2l6ZSgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRl
eHQgY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICpt
X2Rpc3BsYXlMaXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5l
VHJhbnNmb3JtKCkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6
OlJlY29yZGVyPihjb250ZXh0LCAqbV9kaXNwbGF5TGlzdCwgR3JhcGhpY3NDb250ZXh0U3RhdGUo
KSwgaW5pdGlhbENsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSk7CiAgICAgICAg
IHBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIHNpemUoKSkpOwogICAgIH0KQEAgLTI4NjcsNyArMjg2Nyw3IEBAIGJvb2wgR3JhcGhpY3NM
YXllckNBOjppc1J1bm5pbmdUcmFuc2Zvcm1BbmltYXRpb24oKSBjb25zdAogdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OmVuc3VyZUxheWVyQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX2FuaW1hdGlv
bnMpCi0gICAgICAgIG1fYW5pbWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmltYXRp
b25zPigpOworICAgICAgICBtX2FuaW1hdGlvbnMgPSBtYWtlVW5pcXVlPExheWVyQW5pbWF0aW9u
cz4oKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIoUGxh
dGZvcm1DQUFuaW1hdGlvbiYgY2FBbmltLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIFNlY29u
ZHMgdGltZU9mZnNldCkKQEAgLTM5MDMsNyArMzkwMyw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNB
OjplbnN1cmVDbG9uZUxheWVycyhDbG9uZUlEIGNsb25lSUQsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5
ZXI+CiAgICAgY29udGVudHNMYXllciA9IG51bGxwdHI7CiAKICAgICBpZiAoIW1fbGF5ZXJDbG9u
ZXMpCi0gICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyQ2xvbmVz
PigpOworICAgICAgICBtX2xheWVyQ2xvbmVzID0gbWFrZVVuaXF1ZTxMYXllckNsb25lcz4oKTsK
IAogICAgIHByaW1hcnlMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX2xheWVyLmdl
dCgpLCBtX2xheWVyQ2xvbmVzLT5wcmltYXJ5TGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwogICAg
IHN0cnVjdHVyYWxMYXllciA9IGZpbmRPck1ha2VDbG9uZShjbG9uZUlELCBtX3N0cnVjdHVyYWxM
YXllci5nZXQoKSwgbV9sYXllckNsb25lcy0+c3RydWN0dXJhbExheWVyQ2xvbmVzLCBjbG9uZUxl
dmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmNwcAppbmRleCA0ZDY0YzJjNGIxOWIzMWI4MDU0YzFiYzQxYWMwMjI1NzNi
ZWZmNTYyLi4zMDVlZmQzMzNiZDYxMWM2ZWY1ZTRjMWIyNjIyODg3NTI1NmYyNGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBUaWxlQ29udHJvbGxlcjo6em9vbWVkT3V0
VGlsZUdyaWRDb250YWluZXJMYXllck5hbWUoKQogVGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9s
bGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgOiBtX3RpbGVDYWNo
ZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcihvd25p
bmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkpCi0g
ICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkKKyAgICAs
IG1fdGlsZUdyaWQobWFrZVVuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQogICAgICwgbV90aWxlUmV2
YWxpZGF0aW9uVGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVJldmFsaWRhdGlvblRp
bWVyRmlyZWQpCiAgICAgLCBtX3RpbGVTaXplQ2hhbmdlVGltZXIoKnRoaXMsICZUaWxlQ29udHJv
bGxlcjo6dGlsZVNpemVDaGFuZ2VUaW1lckZpcmVkLCB0aWxlU2l6ZVVwZGF0ZURlbGF5KQogICAg
ICwgbV9tYXJnaW5FZGdlcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKQEAgLTEzMiw3ICsx
MzIsNyBAQCB2b2lkIFRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxl
KQogICAgIGlmIChtX3pvb21lZE91dENvbnRlbnRzU2NhbGUgJiYgbV96b29tZWRPdXRDb250ZW50
c1NjYWxlID09IHRpbGVHcmlkKCkuc2NhbGUoKSAmJiB0aWxlR3JpZCgpLnNjYWxlKCkgIT0gc2Nh
bGUgJiYgIW1faGFzVGlsZXNXaXRoVGVtcG9yYXJ5U2NhbGVGYWN0b3IpIHsKICAgICAgICAgbV96
b29tZWRPdXRUaWxlR3JpZCA9IFdURk1vdmUobV90aWxlR3JpZCk7CiAgICAgICAgIG1fem9vbWVk
T3V0VGlsZUdyaWQtPnNldElzWm9vbWVkT3V0VGlsZUdyaWQodHJ1ZSk7Ci0gICAgICAgIG1fdGls
ZUdyaWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7CisgICAgICAgIG1fdGls
ZUdyaWQgPSBtYWtlVW5pcXVlPFRpbGVHcmlkPigqdGhpcyk7CiAgICAgICAgIHRpbGVHcmlkc0No
YW5nZWQoKTsKICAgICB9CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCBGbG9hdFJlY3QgVGlsZUNvbnRy
b2xsZXI6OmFkanVzdFRpbGVDb3ZlcmFnZVJlY3RGb3JTY3JvbGxpbmcoY29uc3QgRmxvYXRSZWN0
JiBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghbV9oaXN0b3JpY2FsVmVs
b2NpdHlEYXRhKQotICAgICAgICAgICAgbV9oaXN0b3JpY2FsVmVsb2NpdHlEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlEYXRhPigpOworICAgICAgICAgICAgbV9oaXN0
b3JpY2FsVmVsb2NpdHlEYXRhID0gbWFrZVVuaXF1ZTxIaXN0b3JpY2FsVmVsb2NpdHlEYXRhPigp
OwogCiAgICAgICAgIG1fdmVsb2NpdHkgPSBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEtPnZlbG9j
aXR5Rm9yTmV3RGF0YShzY3JvbGxPZmZzZXQsIGNvbnRlbnRzU2NhbGUsIE1vbm90b25pY1RpbWU6
Om5vdygpKTsKICAgICB9OwpAQCAtNjg1LDcgKzY4NSw3IEBAIEludFJlY3QgVGlsZUNvbnRyb2xs
ZXI6OnRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdAogUGxhdGZvcm1DQUxheWVyKiBUaWxlQ29udHJv
bGxlcjo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JMYXllcigpCiB7CiAgICAgaWYgKCFtX2NvdmVy
YWdlTWFwKQotICAgICAgICBtX2NvdmVyYWdlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlQ292
ZXJhZ2VNYXA+KCp0aGlzKTsKKyAgICAgICAgbV9jb3ZlcmFnZU1hcCA9IG1ha2VVbmlxdWU8VGls
ZUNvdmVyYWdlTWFwPigqdGhpcyk7CiAKICAgICByZXR1cm4gJm1fY292ZXJhZ2VNYXAtPmxheWVy
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9j
b2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IGE0ODUyM2NmNTE3
NmIzMWYyYWNjNDk4NGIyZWNkOGUyYzg3NGY2MDcuLjM2YWMyZjc4NGIwMDZmZjljNzAzZjQxZTdi
ZmY2ODdhMWFhNGM2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCkBAIC0z
MTMsNyArMzEzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y29tbW9uSW5pdCgpCiAg
ICAgICAgIFdlYlRpbGVkQmFja2luZ0xheWVyKiB0aWxlZEJhY2tpbmdMYXllciA9IHN0YXRpY19j
YXN0PFdlYlRpbGVkQmFja2luZ0xheWVyKj4obV9sYXllci5nZXQoKSk7CiAgICAgICAgIFRpbGVD
b250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IFt0aWxlZEJhY2tpbmdMYXllciBjcmVhdGVUaWxl
Q29udHJvbGxlcjp0aGlzXTsKIAotICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNvbnRhaW5lckxh
eWVycygpKTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBtYWtlVW5pcXVlPFBsYXRmb3Jt
Q0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CiAgICAgfQog
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAtOTQ3LDcgKzk0Nyw3IEBAIEZsb2F0
Um91bmRlZFJlY3QgUGxhdGZvcm1DQUxheWVyQ29jb2E6OnNoYXBlUm91bmRlZFJlY3QoKSBjb25z
dAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6c2V0U2hhcGVSb3VuZGVkUmVjdChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCkKIHsKICAgICBBU1NFUlQobV9sYXllclR5cGUg
PT0gTGF5ZXJUeXBlU2hhcGVMYXllcik7Ci0gICAgbV9zaGFwZVJvdW5kZWRSZWN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CisgICAgbV9zaGFwZVJv
dW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBQYXRoIHNoYXBlUGF0aDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1dlYlRp
bGVkQmFja2luZ0xheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KaW5kZXggYzE5MWYzOTFjNjQ1NzJjYzk5NTVh
NDdjNmNiN2I5MDA3ODY3MjYzOS4uYjNlMjFmNjQwYWU5MWEwZDFmNTkzODQ2YTg1MGZlYzIyZmE3
OGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29j
b2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0KQEAgLTYyLDcgKzYyLDcg
QEAgLSAoaWQpaW5pdFdpdGhMYXllcjooaWQpbGF5ZXIKIC0gKFdlYkNvcmU6OlRpbGVDb250cm9s
bGVyKiljcmVhdGVUaWxlQ29udHJvbGxlcjooV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKilyb290
TGF5ZXIKIHsKICAgICBBU1NFUlQoIV90aWxlQ29udHJvbGxlcik7Ci0gICAgX3RpbGVDb250cm9s
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUaWxlQ29udHJvbGxlcj4ocm9vdExheWVy
KTsKKyAgICBfdGlsZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRpbGVDb250cm9s
bGVyPihyb290TGF5ZXIpOwogICAgIHJldHVybiBfdGlsZUNvbnRyb2xsZXIuZ2V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggMTVkNGU0NmIwNmM3NmMxN2YzNDA1MTM5
YzZjOTc5YzEwMTdiMzY5Ni4uZDZhN2MxNjhmMGU0NDFmZDdkMjkwZmM0ZmUzMTM2MGM1ODVkNTY4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBQbGF0
Zm9ybUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbihMYXllclR5cGUgbGF5ZXJUeXBlLCBQ
bGF0Zm9ybUxheWVyKiBsYXllcgogICAgIGlmICh1c2VzVGlsZWRCYWNraW5nTGF5ZXIoKSkgewog
ICAgICAgICBpbnRlcm4gPSBuZXcgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW4odGhpcyk7CiAgICAg
ICAgIFRpbGVDb250cm9sbGVyKiB0aWxlQ29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
VGlsZWRCYWNraW5nTGF5ZXJXaW4qPihpbnRlcm4pLT5jcmVhdGVUaWxlQ29udHJvbGxlcih0aGlz
KTsKLSAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3Jt
Q0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7CisgICAgICAg
IG1fY3VzdG9tU3VibGF5ZXJzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0aWxl
Q29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOwogICAgIH0gZWxzZQogICAgICAgICBpbnRl
cm4gPSBuZXcgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwodGhpcyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdM
YXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2Vi
VGlsZWRCYWNraW5nTGF5ZXJXaW4uY3BwCmluZGV4IDIyNGQ4YmJlZWQzOTkyYWVlZmM5MzJhMWJl
ZTgwZGM2M2ZjYTJmOGIuLmM1YTczZThkM2FlOWJiNDlhOTZiZTI3ZjUzMjdlMDZjMDYyMTRmYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJU
aWxlZEJhY2tpbmdMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcApAQCAtMTY0LDcgKzE2NCw3
IEBAIHZvaWQgV2ViVGlsZWRCYWNraW5nTGF5ZXJXaW46OnNldEJvcmRlckNvbG9yKGNvbnN0IENv
bG9yJiB2YWx1ZSkKIFRpbGVDb250cm9sbGVyKiBXZWJUaWxlZEJhY2tpbmdMYXllcldpbjo6Y3Jl
YXRlVGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIpCiB7CiAgICAgQVNT
RVJUKCFtX3RpbGVDb250cm9sbGVyKTsKLSAgICBtX3RpbGVDb250cm9sbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKKyAgICBtX3RpbGVDb250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4ocm9vdExheWVyKTsKICAgICByZXR1cm4gbV90
aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAKaW5kZXggNTBiN2Q5YzIzYzAxYWJmYzNhMDUxNzhjMTA1MjUxMDcwZjE1ZDZkYi4uMDRm
MmE5ZmY1NDY5YWE1YmEyNGQxNDk1NjU0YjYwZjBiYzQzZDJhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00NSw3ICs0NSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6
R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVh
dGVGYWN0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZh
Y3RvcnkoCiAgICAgICAgIFsmcGxhdGZvcm1Db250ZXh0XShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgcGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwg
cGxhdGZvcm1Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTU0LDE0ICs1NCwxNCBAQCBH
cmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6Y3JlYXRlRmFjdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBo
aWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAgICBbY2Fpcm9Db250ZXh0XShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4oY29udGV4dCwgY2Fpcm9Db250ZXh0KTsK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEltcGxDYWlybz4o
Y29udGV4dCwgY2Fpcm9Db250ZXh0KTsKICAgICAgICAgfSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKICAgICA6IEdyYXBo
aWNzQ29udGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsg
fSkKICAgICAsIG1fcGxhdGZvcm1Db250ZXh0KHBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJp
dmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9w
bGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9wbGF0Zm9y
bUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAg
IG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CkBAIC02OSw5
ICs2OSw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhCiAKIEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y2Fpcm9fdCogY2Fpcm9Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0
LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQotICAgICwgbV9vd25lZFBsYXRm
b3JtQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dENhaXJvPihjYWlyb0Nv
bnRleHQpKQorICAgICwgbV9vd25lZFBsYXRmb3JtQ29udGV4dChtYWtlVW5pcXVlPFBsYXRmb3Jt
Q29udGV4dENhaXJvPihjYWlyb0NvbnRleHQpKQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoKm1f
b3duZWRQbGF0Zm9ybUNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1Db250ZXh0KSkKKyAgICAs
IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9w
bGF0Zm9ybUNvbnRleHQpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29u
dGV4dFByaXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0
KG1fcGxhdGZvcm1Db250ZXh0LmNyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCAxMzc0
MTVmM2VhYmY1MzIxZmMzNWNhYzIwZTFlMTI3ODRkNzUyMjMzLi5lMDFlNjBiOWVlZTdiYTE4Mzk3
YTYzZWY0YTE3NjY3ZmZkYzRhNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMTY1LDcg
KzE2NSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAg
ICAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGhvbGRlcihwcm94eS5s
b2NrKCkpOwotICAgICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1
cmUsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOworICAg
ICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0QnVmZmVyKG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29tcG9zaXRvclRleHR1cmUsIG1fc2l6ZSwgVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgR0xfUkdCQSkpOwogICAgICAgICAgICAgfTsKICNpZiBV
U0UoTklDT1NJQSkKICAgICAgICAgcHJveHlPcGVyYXRpb24oZG93bmNhc3Q8Tmljb3NpYTo6Q29u
dGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxheWVyLT5pbXBsKCkpLnByb3h5
KCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjCiAKICAgICBS
ZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9kYXRhLm1fc3VyZmFj
ZS5nZXQoKSkpOwogICAgIG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5zZXRDcihjci5nZXQoKSk7
Ci0gICAgbV9kYXRhLm1fY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1fcGxhdGZv
cm1Db250ZXh0KSk7CisgICAgbV9kYXRhLm1fY29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkobV9kYXRhLm1f
cGxhdGZvcm1Db250ZXh0KSk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5k
ZXggODBiNWQ0ZmJkMjcyZGVlNDM1YjVjZTdjMDg0ZWUzNTlhNTAxZWQ2NC4uZDM1ZmYwZWZmOTcx
OTUwZWVkMWUzZmQwMjZiY2RhOWVhZmEzNGU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTE4Nyw3ICsxODcs
NyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENHQ29sb3JTcAogICAgICAgICBpZiAoIWNnQ29udGV4dCkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2RhdGEuY29udGV4dCA9IHN0ZDo6bWFrZV91
bmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOworICAgICAgICBtX2RhdGEu
Y29udGV4dCA9IG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOwog
ICAgIH0KIAogICAgIGNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcAppbmRleCA3MTg4ZTQzN2QyYzg4NjcyNmQzZDNmNGRlYjQxYmYyNWNiMDZi
MzgwLi5mZjdmYzY2MzY4YmQyYzY2MGM0OGMxMDY3NDVmOWJhODliM2RkZjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCkBAIC0xMzcxLDcgKzEzNzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZQogCiAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZV0gPSBjb21w
dXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbikuYm9sZE9i
bGlxdWVQYWlyKCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1E
YXRhPihmb250LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBm
b250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFu
dCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgc3ludGhldGljQm9s
ZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnRE
ZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdN
b2RlKCkpOwogfQogCiB0eXBlZGVmIEhhc2hTZXQ8UmV0YWluUHRyPENURm9udFJlZj4sIFdURjo6
UmV0YWluUHRyT2JqZWN0SGFzaDxDVEZvbnRSZWY+LCBXVEY6OlJldGFpblB0ck9iamVjdEhhc2hU
cmFpdHM8Q1RGb250UmVmPj4gRmFsbGJhY2tEZWR1cFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZh
bWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKaW5kZXggMWNlMGM5NDdlMTdlOWE2OGVlYWQz
YTRkNTdiNTlkOGZhMTZjZWYyOS4uMGRlOTM0YTdiMzg0MTAwZWViNzZkNzdmNDU2YTE4MmZiYmFi
Y2VjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5j
cHAKQEAgLTExMiw3ICsxMTIsNyBAQCBGb250UmFuZ2VzIEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
Q29yZVRleHQ6OmZvbnRSYW5nZXMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmbwogCiAgICAgICAg
IGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29tcHV0ZU5lY2Vzc2Fy
eVN5bnRoZXNpcyhmb250Rm9yU3ludGhlc2lzQ29tcHV0YXRpb24uZ2V0KCksIGZvbnREZXNjcmlw
dGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwgZmFsc2UsIHN5bnRoZXRpY09i
bGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBmb250RGVzY3JpcHRpb24ud2lk
dGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5nZXQoKSwgc2l6ZSwg
ZmFsc2UsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBm
b250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVy
aW5nTW9kZSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoZm9udFBs
YXRmb3JtRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQppbmRleCA0YTA3YWMw
MzIyZTI5ZDY3Y2NjOGI3NTM1YzAwODAwYzE3MTdkMmE0Li4yYzNjYWMwYWFhMDU2M2FmMWVkNGIz
MzkzODY5ODk4MzIyMDU3YzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KQEAg
LTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCBzZXRHUFVCeVJlZ2lzdHJ5SUQoUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQzRCBjb250ZXh0T2JqLCBDR0xQaXhlbEZvcgogCiBHcmFwaGljc0NvbnRl
eHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2luZG93KiBob3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUs
IEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRycykK
LSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZT4odGhpcykpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU+KHRoaXMpKQogewogI2lmICFVU0UoQU5HTEUpCiAjaWYgVVNFKE9QRU5HTF9FUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFj
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bQppbmRleCA1YzczM2UzYmFkMWU5ZDNkMjVjMWVkNTdmNWFjZGZmZjNhNGNiOTlmLi4zODc1ZmNm
ZDMwNmRmODZkMzQ3NGVlMTg2MGJhNTkwYTNhOGJjMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC0zMjYsNyArMzI2
LDcgQEAgR3JhcGhpY3NDb250ZXh0JiBJT1N1cmZhY2U6OmVuc3VyZUdyYXBoaWNzQ29udGV4dCgp
CiAgICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm4gKm1fZ3JhcGhpY3ND
b250ZXh0OwogCi0gICAgbV9ncmFwaGljc0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOworICAgIG1fZ3JhcGhpY3NDb250
ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGVuc3VyZVBsYXRmb3JtQ29udGV4dCgp
KTsKICAgICBtX2dyYXBoaWNzQ29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQodHJ1ZSk7
CiAKICAgICByZXR1cm4gKm1fZ3JhcGhpY3NDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2EubW0KaW5kZXggNmU2MGViZjFmZmE2NTkwZjZmMzRlNTI4YTNlMzM1
ODMxOGI1ZWJkZi4uMjc4NzQ2ODE2NmZlZjFiNWY2NDYyMWZlYjViYjVlNTBkOWQ2ZGEzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVGV4dFRyYWNr
UmVwcmVzZW50YXRpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCkBAIC0xMDgsNyArMTA4
LDcgQEAgQGVuZAogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGll
bnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0VHJhY2tSZXBy
ZXNlbnRhdGlvbkNvY29hPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7CiB9CiAKIFRleHRUcmFja1JlcHJlc2VudGF0
aW9uQ29jb2E6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EoVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L1RleHR1cmVDYWNoZUNWLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0KaW5kZXggNTc3ZWMyODQ2MzkyYTcyMTVkOTk4
YWEzMTBkM2Q4ZDYzM2Y1ZjFlYy4uOWYxZjY2YjNiZDU5ZjU5YjFhZDNjYjcwNWM4NTY1NDQyMjdl
YzM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4
dHVyZUNhY2hlQ1YubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
VGV4dHVyZUNhY2hlQ1YubW0KQEAgLTUwLDcgKzUwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVDYWNoZUNWPiBUZXh0dXJlQ2FjaGVDVjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEJiBjb250
ZXgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZXRhaW5QdHI8VGV4dHVyZUNhY2hl
VHlwZT4gc3Ryb25nQ2FjaGUgPSBhZG9wdENGKGNhY2hlKTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0dXJlQ2FjaGVDVj4oY29udGV4dCwgV1RGTW92ZShzdHJvbmdDYWNoZSkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0LCBXVEZNb3ZlKHN0
cm9uZ0NhY2hlKSk7CiB9CiAKIFRleHR1cmVDYWNoZUNWOjpUZXh0dXJlQ2FjaGVDVihHcmFwaGlj
c0NvbnRleHQzRCYgY29udGV4dCwgUmV0YWluUHRyPFRleHR1cmVDYWNoZVR5cGU+JiYgY2FjaGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggOGZlYWEyZjVk
NzUzMjhlNDM2YmY5ZDg4YjhkYzA1YmFjMWMyZTFmMy4uYzU2MWY1ZjllYWI5OTYyMTFhOGIyMjIx
OTc3NmQ2OGYzOWUxNjQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcApAQCAtNDksNyArNDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IFJlcGxh
eWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbAogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiByZXBsYXlMaXN0OwogICAgIGlmIChVTkxJS0VMWSh0
cmFja1JlcGxheUxpc3QpKQotICAgICAgICByZXBsYXlMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxE
aXNwbGF5TGlzdD4oKTsKKyAgICAgICAgcmVwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxp
c3Q+KCk7CiAKICAgICBzaXplX3QgbnVtSXRlbXMgPSBtX2Rpc3BsYXlMaXN0Lml0ZW1Db3VudCgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtSXRlbXM7ICsraSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJP
cGVyYXRpb24uY3BwCmluZGV4IDU1N2I4ZTAwODYyZDZhYmM1ODA0YjQxNDMyMTAwODBhODM1MTZk
MWUuLjMwYmI0OGNjOGYwYzQ5NTQ0OGFiNjVmNjgxMTcyY2NjNmJjYTUzNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbi5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb246OmxvYWRFeHRlcm5hbERvY3VtZW50SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghU1ZHVVJJUmVmZXJlbmNlOjppc0V4dGVybmFsVVJJ
UmVmZXJlbmNlKG1fdXJsLCAqY2FjaGVkUmVzb3VyY2VMb2FkZXIuZG9jdW1lbnQoKSkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2NhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZT4obV91cmwpOworICAgIG1fY2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlVW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlPihtX3VybCk7CiAgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS0+bG9hZChjYWNo
ZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCA2NTYzYzhiZmVlYjM1YmE1MzI3ZjQ4OTYxZWQ2MjFmZTNkNTNhYTQxLi43MWE0
YWIyZjQ4MjVmMWE1NDMxOTE4MDM0YjM1MzFlY2RhOGEwZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwCkBAIC00NTUsNyArNDU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0
Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUK
ICAgICAgICAgICAgIEZjUGF0dGVybkFkZFN0cmluZyhyZXN1bHRQYXR0ZXJuLmdldCgpLCBGQ19G
T05UX1ZBUklBVElPTlMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+KHZhcmlhbnRz
LnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAjZW5kaWYKLSAgICBhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2UuZ2V0KCksIHJlc3Vs
dFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBmaXhl
ZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24u
b3JpZW50YXRpb24oKSk7CisgICAgYXV0byBwbGF0Zm9ybURhdGEgPSBtYWtlVW5pcXVlPEZvbnRQ
bGF0Zm9ybURhdGE+KGZvbnRGYWNlLmdldCgpLCByZXN1bHRQYXR0ZXJuLmdldCgpLCBmb250RGVz
Y3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgZml4ZWRXaWR0aCwgc3ludGhldGljQm9sZCwg
c3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCkpOwogICAgIC8v
IFZlcmlmeSB0aGF0IHRoaXMgZm9udCBoYXMgYW4gZW5jb2RpbmcgY29tcGF0aWJsZSB3aXRoIEZv
bnRjb25maWcuIEZvbnRjb25maWcgY3VycmVudGx5CiAgICAgLy8gc3VwcG9ydHMgdGhyZWUgZW5j
b2RpbmdzIGluIEZjRnJlZVR5cGVDaGFySW5kZXg6IFVuaWNvZGUsIFN5bWJvbCBhbmQgQXBwbGVS
b21hbi4KICAgICAvLyBJZiB0aGlzIGZvbnQgZG9lc24ndCBoYXZlIG9uZSBvZiB0aGVzZSB0aHJl
ZSBlbmNvZGluZ3MsIGRvbid0IHNlbGVjdCBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDEzNzY1ZjQzZGE4NjY4ZDJkZTgyZTY3
MWQ4MTgwZDY4NDQyODQzYjAuLjU4OTQzZDJhOTBkZmM1NTAxZjJkY2FhOGVjZjBlOTBlMWFjN2Y3
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgRlRf
RmFjZSBmcmVlVHlwZUZhY2U7CiAgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNp
emUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFj
ZSwgYnVmZmVyKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggODY5ODEzNjQ1MTNi
OGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3Ni4uNzFmZGEwZDkyNGNkMjU1ZGIzZWYxMDc3Zjll
MTA3ODE0ZTI0M2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9UZXh0dXJlLmNwcApAQCAtOTUsNyArOTUsNyBAQCBSZWZQdHI8VGV4dHVyZT4gVGV4dHVy
ZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpbnQg
dwogICAgICAgICBudW1UaWxlcyA9IDA7CiAgICAgfQogCi0gICAgYXV0byB0ZXh0dXJlSWRzID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7CisgICAgYXV0byB0
ZXh0dXJlSWRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7CiAgICAg
dGV4dHVyZUlkcy0+ZmlsbCgwLCBudW1UaWxlcyk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bVRpbGVzOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggNGE5ZmRlYzNlYzU5MTJjZTI1YjFlNmIyNWI5MTQ0ZmE4ZjQwYzdk
MC4uYWIzN2VlMDQxZWIyOGMzYzgyZjM1YWYzNjNjY2VkYjliNDJiMTQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTExNiw3ICsxMTYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpcwogewogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmluaXRpYWxpemVEZWJ1Z0NhdGVnb3J5KCk7CiAgICAgaWYgKGlzQXZhaWxh
YmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPihwbGF5ZXIp
OyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
bWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCiAgICAg
ICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7CiAgICAgfQogfQpAQCAtMTE0MCw3ICsxMTQw
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFByZXNlcnZlc1BpdGNo
KGJvb2wgcHJlc2VydmVzUGl0Y2gpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zdAogewotICAg
IGF1dG8gdGltZVJhbmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OworICAgIGF1dG8gdGltZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigp
OwogICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8fCBpc0xpdmVTdHJlYW0oKSkKICAgICAgICAgcmV0
dXJuIHRpbWVSYW5nZXM7CiAKQEAgLTIzNzYsNyArMjM3Niw3IEBAIEdzdEVsZW1lbnQqIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXVkaW9TaW5rKCkgY29uc3QKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjplbnN1cmVBdWRpb1NvdXJjZVByb3ZpZGVyKCkKIHsKICAgICBp
ZiAoIW1fYXVkaW9Tb3VyY2VQcm92aWRlcikKLSAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyPigpOworICAg
ICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEF1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXI+KCk7CiB9CiAKIEF1ZGlvU291cmNlUHJvdmlkZXIqIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggY2U4NzM0ZWY3ZGNi
MzYzZTc2NThiMWRlZjNhN2E3YjM2NjRjYTI2My4uYjAyZTI4ZWRjZDQwN2ZkZmY4Y2JlYTc4YWQx
YTZlN2IwYzdiNThhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNzEwLDE5ICs3MTAsMTkgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAgICAgICAg
ICAgICBpZiAoIXByb3h5LmlzQWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgp
LCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CisgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIg
PSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1
cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CiAKICAgICAgICAgICAg
IEdMdWludCB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7CiAgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVy
QnVmZmVyOwogICAgICAgICAgICAgaWYgKHRleHR1cmVJRCkgewotICAgICAgICAgICAgICAgIGxh
eWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4odGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3Mo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICAgICAgICAgIGxheWVyQnVmZmVy
ID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4odGV4dHVyZUlE
LCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpOwogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRVbm1hbmFnZWRC
dWZmZXJEYXRhSG9sZGVyKFdURk1vdmUoZnJhbWVIb2xkZXIpKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBwcm94eS5nZXRBdmFpbGFibGVCdWZm
ZXIoZnJhbWVIb2xkZXItPnNpemUoKSwgR0xfRE9OVF9DQVJFKTsKICAgICAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoIWxheWVyQnVmZmVyKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRl
eHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJp
YnV0ZXM6OmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+cmVzZXQoZnJhbWVI
b2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgpID8gQml0bWFwVGV4
dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5vRmxhZyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSk7CisgICAgICAgICAgICAgICAgICAg
IGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4oV1RGTW92ZSh0ZXh0dXJlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGZyYW1lSG9sZGVyLT51cGRhdGVUZXh0dXJlKGxheWVyQnVmZmVyLT50ZXh0dXJlR0woKSk7CiAg
ICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldEV4dHJhRmxhZ3MobV90ZXh0dXJlTWFwcGVy
RmxhZ3MgfCAoZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgpID8gVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRCbGVuZCA6IDApKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljcwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVy
PiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9z
YW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZp
ZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1
ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAg
ICBpZiAoIXRleHR1cmVJRCkKQEAgLTkyMyw3ICs5MjMsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aGljcwogICAgICAgICBzaXplID0gc2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogCiAgICAgaWYgKCFt
X3ZpZGVvVGV4dHVyZUNvcGllcikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJf
Q09MT1JfQ09OVkVSVF9GTEFHKTsKKyAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBtYWtl
VW5pcXVlPFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4oVEVYVFVSRV9DT1BJRVJfQ09MT1Jf
Q09OVkVSVF9GTEFHKTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgc2l6ZSwgb3V0cHV0VGV4dHVy
ZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgZmxp
cFksIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbik7CiB9CkBAIC05MzksNyArOTM5LDcgQEAgTmF0
aXZlSW1hZ2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9G
cmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVI
b2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gbWFrZVVu
aXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVy
RmxhZ3MsIHRydWUpOwogCiAgICAgYXV0byB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVy
ZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlSUQpCkBAIC05NTMsNyArOTUzLDcgQEAgTmF0aXZlSW1h
Z2VQdHIgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpCiAgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBpZiAo
IW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0
ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElF
Ul9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1h
a2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xP
Ul9DT05WRVJUX0ZMQUcpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGllci0+Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKHRleHR1cmVJRCwgc2l6ZSwgMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGZhbHNl
LCBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTExNDgsOCArMTE0OCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
cHVzaE5leHRIb2xlUHVuY2hCdWZmZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xk
ZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJl
TWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOwotICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdTdHJlYW1lckhvbGVQdW5jaENsaWVudD4gaG9sZVB1bmNoQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+KG1fdmlkZW9TaW5rLmdl
dCgpKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQs
IEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9s
ZVB1bmNoQ2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBtYWtlVW5pcXVlPEdTdHJlYW1lckhvbGVQ
dW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOwogICAgICAgICAgICAgbGF5ZXJCdWZmZXIt
PnNldEhvbGVQdW5jaENsaWVudChXVEZNb3ZlKGhvbGVQdW5jaENsaWVudCkpOwogICAgICAgICAg
ICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAgICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NDNk
Y2M1MjY4YzQyNmVjZDhmODkwODJkOWY3ZTUzM2I0MWNjYjE5Li45ODEwYzI1N2IzNzc2ZmZkOGQ0
MjEyZTk2OTRiZTkyYjI1OTczNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChHc3RCYXNlU3JjKiBiYXNlU3JjLCBib29sIG5vdGlmeUFzeW5jQ29t
CiAgICAgICAgICAgICBsb2FkT3B0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6
OkxvYWRPcHRpb246OkJ1ZmZlckRhdGE7CiAgICAgICAgIHByaXYtPnJlc291cmNlID0gcHJpdi0+
bG9hZGVyLT5yZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBsb2FkT3B0
aW9ucyk7CiAgICAgICAgIGlmIChwcml2LT5yZXNvdXJjZSkgewotICAgICAgICAgICAgcHJpdi0+
cmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCksIFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSkpOwor
ICAgICAgICAgICAgcHJpdi0+cmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50Pihwcm90ZWN0b3IuZ2V0KCksIFJlc291cmNlUmVxdWVzdChy
ZXF1ZXN0KSkpOwogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwcm90ZWN0b3IuZ2V0KCks
ICJTdGFydGVkIHJlcXVlc3QiKTsKICAgICAgICAgICAgIGlmIChub3RpZnlBc3luY0NvbXBsZXRp
b24pCiAgICAgICAgICAgICAgICAgZ3N0X2Jhc2Vfc3JjX3N0YXJ0X2NvbXBsZXRlKEdTVF9CQVNF
X1NSQyhzcmMpLCBHU1RfRkxPV19PSyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggNGU5ZDE5ZDg1MjdkNjk2MjBj
ZjVhYTk0MTA3MzYyODM4MWIzYzlmMC4uZTY4ODBkOThlN2ZjYWQxZDA1M2Y4NGVkMzhhNmZkODE5
OGRlN2I4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJh
ciByZQogICAgIGluaXRpYWxpemVHU3RyZWFtZXJBbmRSZWdpc3RlcldlYktpdEVsZW1lbnRzKCk7
CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQod2Via2l0X21zZV9kZWJ1ZywgIndlYmtpdG1z
ZSIsIDAsICJXZWJLaXQgTVNFIG1lZGlhIHBsYXllciIpOwogICAgIGlmIChpc0F2YWlsYWJsZSgp
KSB7Ci0gICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRT4ocGxheWVyKTsg
fSwKKyAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1h
a2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAogICAg
ICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgc3VwcG9ydHNLZXlTeXN0ZW0pOwogICAgIH0KIH0KQEAgLTQ1OSw3ICs0NTks
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c2V0UmF0ZShmbG9hdCkK
IAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3Vy
Y2UgPyBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpIDogc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNl
LT5idWZmZXJlZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpzb3VyY2VTZXR1cChHc3RFbGVtZW50
KiBzb3VyY2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9s
ZVB1bmNoLmNwcAppbmRleCAxMTcyNDU4NDEwZTlhMTQ1M2I2MzViMGY4ZDkxYjlmYjRhNjk2YzU4
Li4wZjA4YzE5ZGJkYmU2OWIwNmY3Yjc1NTNmOGFiNDk3ZDQ3ZTM3N2E5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
b2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmNwcApAQCAtNzYsNyArNzYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVzaE5leHRIb2xlUHVuY2hCdWZm
ZXIoKQogICAgICAgICBbdGhpc10oVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJv
eHkpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2so
KSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+IGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4oMCwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJs
ZW5kLCBHTF9ET05UX0NBUkUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpT
aG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKICAgICAgICAgICAgIHByb3h5LnB1c2hOZXh0
QnVmZmVyKFdURk1vdmUobGF5ZXJCdWZmZXIpKTsKICAgICAgICAgfTsKIApAQCAtMTQxLDcgKzE0
MSw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lz
dHJhcikKIHsKLSAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+KHBsYXllcik7IH0s
CisgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoPihwbGF5ZXIpOyB9LAogICAgICAgICBnZXRT
dXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5j
aC5oCmluZGV4IDIzOWM0ZjcyOGFiYmJlYzEwMzk3YTNlMDMzYmRmNDM0ZTQ1ZDQ3NmMuLjhiZjcy
MTMxODgxOWM0MDI2N2I3MjFmYTliODJhYzFjZDkyNmY5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gv
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSwgcHVibGljIEMKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsgfTsKICAgICBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVk
aWFQbGF5ZXI6OkhhdmVNZXRhZGF0YTsgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH07CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVl
PFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsKIAogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNj
aGVtZUluZm9Cb3guY3BwCmluZGV4IGQ4ZDc0MDFhNzU2MDA0NmM5OGFmZjhjYjExZWIyZTcyMjNj
OTgxY2UuLmJkZmRiZGM5NmNmMGUxYjUwYTcyODU4Mjg4YzliMmY0NzRmN2QwZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2No
ZW1lSW5mb0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcApAQCAtNTMsNyArNTMsNyBAQCBib29sIElT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQm
IG9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG9wdGlvbmFsQm94VHlw
ZS52YWx1ZSgpLmZpcnN0ID09IElTT1NjaGVtZVR5cGVCb3g6OmJveFR5cGVOYW1lKCkpIHsKLSAg
ICAgICAgbV9zY2hlbWVUeXBlQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxJU09TY2hlbWVUeXBlQm94
PigpOworICAgICAgICBtX3NjaGVtZVR5cGVCb3ggPSBtYWtlVW5pcXVlPElTT1NjaGVtZVR5cGVC
b3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVUeXBlQm94LT5yZWFkKHZpZXcsIGxvY2FsT2Zm
c2V0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNjgsNyArNjgsNyBAQCBib29s
IElTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWdu
ZWQmIG9mZnNldCkKICAgICB9CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVlKCkuZmly
c3QgPT0gSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g6OmJveFR5cGVOYW1lKCkpIHsKLSAgICAgICAg
bV9zY2hlbWVJbmZvcm1hdGlvbkJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPU2NoZW1lSW5mb3Jt
YXRpb25Cb3g+KCk7CisgICAgICAgIG1fc2NoZW1lSW5mb3JtYXRpb25Cb3ggPSBtYWtlVW5pcXVl
PElTT1NjaGVtZUluZm9ybWF0aW9uQm94PigpOwogICAgICAgICBpZiAoIW1fc2NoZW1lSW5mb3Jt
YXRpb25Cb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNwcAppbmRleCBiNGYyNzdhNjg0N2Nj
MjBkNGZjOWQ2MjZmOWNhY2M3NDMwYWRhZjcwLi5jODNjNGZmN2IzOGFiZjFhZTIyZmZlNWU3MmM3
YTFmODZhMDhlYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAgYm9vbCBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDo6cGFyc2UoRGF0YVZpZXcmIHZp
ZXcsIHVuc2lnbmVkJiBvZmZzZXQpCiAgICAgICAgIGlmIChsb2NhbE9mZnNldCArIHNjaGVtZVNw
ZWNpZmljQm94VHlwZS52YWx1ZSgpLnNlY29uZCA+IG9mZnNldCArIG1fc2l6ZSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX3NjaGVtZVNwZWNpZmljRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94PigpOworICAgICAgICBtX3NjaGVtZVNw
ZWNpZmljRGF0YSA9IG1ha2VVbmlxdWU8SVNPVHJhY2tFbmNyeXB0aW9uQm94PigpOwogICAgICAg
ICBpZiAoIW1fc2NoZW1lU3BlY2lmaWNEYXRhLT5yZWFkKHZpZXcsIGxvY2FsT2Zmc2V0KSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKaW5kZXggMzI3ZWJmNjA2MjU5MDlmYmUyYzViNmJkNTE5OGFjYTE5YTQ1ZDRhNC4uNTA3OTM4
YmUxMTA1Y2Y0MjYwNDU1OTEzYjBjNWU5OWQ0ZjU0ZjllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcApAQCAtODQsNyArODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdl
dCgpKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChj
b25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5j
cHAKaW5kZXggMTA5YzJjNTc3Njc5YTEyMTRhYTZlYTEwMWM2ZjQ4MGZiYTJlYzYwMS4uNWJlZTYx
M2ZjZjZiNDZhMDdjNjI4ZTU4MDE2ZjQ5YmI5MDIxYjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
U2NlbmVJbnRlZ3JhdGlvbi5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTY2VuZUludGVncmF0
aW9uOjpyZXF1ZXN0VXBkYXRlKCkKIAogc3RkOjp1bmlxdWVfcHRyPFNjZW5lSW50ZWdyYXRpb246
OlVwZGF0ZVNjb3BlPiBTY2VuZUludGVncmF0aW9uOjpjcmVhdGVVcGRhdGVTY29wZSgpCiB7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlU2NvcGU+KG1ha2VSZWYoKnRoaXMpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxVcGRhdGVTY29wZT4obWFrZVJlZigqdGhpcykpOwogfQog
CiBTY2VuZUludGVncmF0aW9uOjpDbGllbnQ6On5DbGllbnQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmlu
ZGV4IDJiMWFlY2YwZDFiN2U2YTM0MWJmOTRiZmZhZWQyMjBmMWE0NTg2MzguLjUwZTBjM2M3ZDk3
NjgyNmJhN2JiODE4NWQxZWUxNDIxMjlhZGEwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBA
IGF1dG8gY3JlYXRlQ29tbWFuZChBcmdzJiYuLi4gYXJndW1lbnRzKSAtPiBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfYmFzZV9vZjxPcGVyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogYXV0byBjcmVh
dGVDb21tYW5kKCkgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8T3BlcmF0aW9u
RGF0YTw+LCBUPjo6dmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxQYWludGluZ09wZXJhdGlvbj4+CiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUPigpOwogfQogCiBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpDYWlyb09wZXJhdGlvblJlY29y
ZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGFpbnRpbmdPcGVyYXRpb25zJiBjb21tYW5k
TGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENh
aXJvLmNwcAppbmRleCAwYzhhNjcwZTNhMGEzNjMwN2UzZjI5OWVjZGEwMjU1MmZkNzc0ZWQxLi5i
MzUwOGQ1MTdiMjRlNDc1YzA4YWY0OGIzM2U0MzFmZDI3OTIwNGJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGlu
Z0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCkBAIC03MCw4ICs3
MCw4IEBAIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGFpbnRpbmcoQnVm
ZmVyJiBidWZmZXIpCiAgICAgICAgIH0pOwogCiAgICAgbV9jYWlyby5jb250ZXh0ID0gYWRvcHRS
ZWYoY2Fpcm9fY3JlYXRlKG1fY2Fpcm8uc3VyZmFjZS5nZXQoKSkpOwotICAgIG1fcGxhdGZvcm1D
b250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybz4o
bV9jYWlyby5jb250ZXh0LmdldCgpKTsKLSAgICBtX2dyYXBoaWNzQ29udGV4dCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PihXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoKm1fcGxhdGZvcm1Db250ZXh0KSk7CisgICAgbV9w
bGF0Zm9ybUNvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJv
PihtX2NhaXJvLmNvbnRleHQuZ2V0KCkpOworICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dElt
cGxDYWlybzo6Y3JlYXRlRmFjdG9yeSgqbV9wbGF0Zm9ybUNvbnRleHQpKTsKIH0KIAogUGFpbnRp
bmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjp+Rm9yUGFpbnRpbmcoKQpAQCAtMTA0LDEwICsx
MDQsMTAgQEAgdm9pZCBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6OnJlcGxheShj
b25zdCBQYWludGluZ09wZXJhdGlvbnMmIHBhaW50aW4KIAogUGFpbnRpbmdDb250ZXh0Q2Fpcm86
OkZvclJlY29yZGluZzo6Rm9yUmVjb3JkaW5nKFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRpbmdP
cGVyYXRpb25zKQogewotICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KAorICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gbWFrZVVu
aXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KAogICAgICAgICBbJnBhaW50aW5nT3BlcmF0
aW9uc10oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihj
b250ZXh0LCBwYWludGluZ09wZXJhdGlvbnMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcj4oY29udGV4dCwgcGFpbnRpbmdPcGVyYXRpb25zKTsK
ICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IGQ0YzliNjA1YjRj
ZDI4ZTM0OGVmZDg1MzM1MDM4YjU4YzlhNGRkZmEuLjhlMzc5MGY3YWI1NGY2YjNkOTU2ZjMwNzA0
YzQyOWMyYWNkYzMxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzcsNyArMzcsNyBA
QCBhdXRvIEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCkgLT4g
RmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbXShCYWNraW5nU3RvcmUm
KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNraW5nU3RvcmVUZXh0
dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNv
bXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1
cmVNYXBwZXJJbXBsLmNwcAppbmRleCAzOGZkZDkzZGE2YjEzODgzMTQwNTkxNjUzY2RmMjllMDdk
ZTMyMzk2Li43NTY5MmM3YzRhN2JmZGIxODcxZGYxODAyZTM4Nzc1MzZiNjE1NTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25M
YXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBhdXRvIENvbXBvc2l0
aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkKIHsK
ICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10odWludDY0X3QsIENvbXBvc2l0aW9uTGF5
ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb21wb3NpdGlvbkxh
eWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
b21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAgICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCA1NjE3MjhiNWVmMWY0MGQ4MGM1MzU5OTI2NzEwNjZh
ZDg3NDgxOWE3Li4yZmIwZWM5NTkxNWFlYjBiYTA5NmY4MGJjNjkwZDJmM2IyODQ4YzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgYXV0byBDb250ZW50TGF5ZXJU
ZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeShDbGllbnQmIGNsaWVudCkgLT4gRmFjdG9y
eQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBbJmNsaWVudF0oQ29udGVudExheWVy
JikgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudExheWVyVGV4
dHVyZU1hcHBlckltcGw+KGNsaWVudCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
b250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50KTsKICAgICAgICAgfSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFHQzNETGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAKaW5kZXggNTJlYzcwYjY4MWY3
YmM1NjNhNjc0NzU0MzYyMzg3NmIwMzEzOWE5Yi4uOWE5YmQ0NjgzYjI2NzQyYWZlY2IxNDkxZjYx
NDRmMmE3OGM1OTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAK
QEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBHQzNETGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQog
ICAgICAgICBhdXRvJiBwcm94eSA9IGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsPihtX2NvbnRlbnRMYXllci0+aW1wbCgpKS5wcm94eSgpOwogCiAgICAgICAg
IExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgIHByb3h5LnB1c2hOZXh0
QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
KG1fY29udGV4dC5tX2NvbXBvc2l0b3JUZXh0dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MsIG1fY29u
dGV4dC5tX2ludGVybmFsQ29sb3JGb3JtYXQpKTsKKyAgICAgICAgcHJveHkucHVzaE5leHRCdWZm
ZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0
Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50
ZXJuYWxDb2xvckZvcm1hdCkpOwogICAgIH0KIAogICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21w
b3NpdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUlt
YWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcAppbmRleCBhMmFlMzRhMzEzMjdlODcxNTY1
NDE0NmQxOGY3N2M3YTY3ZjI0MjE2Li5kMzUzYzhiZTFiNWJmYTExNmI2Y2I4NTIwOTcwMjc3Y2M5
MzI0NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJ
bWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgYXV0byBJ
bWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgpIC0+IEZhY3RvcnkK
IHsKICAgICByZXR1cm4gRmFjdG9yeSgKICAgICAgICAgW10oSW1hZ2VCYWNraW5nJikgewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBl
ckltcGw+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbWFnZUJhY2tpbmdUZXh0
dXJlTWFwcGVySW1wbD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwCmluZGV4IGU2ODQ4ZmNlY2E0MWU5NzM2ZjJhMzgxN2E5ZmQwM2NlYmFl
M2FjMTEuLmI5NjM2M2I1NTE5MzU2YzhjZGY0NjU0MzYzMjZlZDA2Y2VjZWQ4OGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lv
bnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9l
eHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVu
c2lvbnMzRE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKKyAgICAgICAgbV9leHRl
bnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21w
bGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGIyNGRmMDM1ZTI4
OGUxZWIyZjhhZjlmN2FiOTFkNzc5ZDBhY2E0OWUuLjJhMGU1Yjc2ZTRkNmJhYjcwZTkwYjJmM2Qy
OGViNDNjMDdmNDI1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcApAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNv
bXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgQU5HTEVSZXNvdXJjZXMu
SGFzaEZ1bmN0aW9uID0gbmFtZUhhc2hGb3JTaGFkZXI7CiAKICAgICBpZiAoIW5hbWVIYXNoTWFw
Rm9yU2hhZGVycykKLSAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0g
bWFrZVVuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKICAgICBzZXRDdXJyZW50TmFtZUhhc2hNYXBG
b3JTaGFkZXIobmFtZUhhc2hNYXBGb3JTaGFkZXJzLmdldCgpKTsKICAgICBtX2NvbXBpbGVyLnNl
dFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIFN0cmlu
ZyBHcmFwaGljc0NvbnRleHQzRDo6bWFwcGVkU3ltYm9sTmFtZShQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEFOR0xFU2hhZGVyCiAgICAgICAgIC8vIEF0dHJpYnV0ZXMgYXJlIGEgc3BlY2lhbCBj
YXNlOiB0aGV5IG1heSBiZSByZXF1ZXN0ZWQgYmVmb3JlIGFueSBzaGFkZXJzIGhhdmUgYmVlbiBj
b21waWxlZCwKICAgICAgICAgLy8gYW5kIGFyZW4ndCBldmVuIHJlcXVpcmVkIHRvIGJlIHVzZWQg
aW4gYW55IHNoYWRlciBwcm9ncmFtLgogICAgICAgICBpZiAoIW5hbWVIYXNoTWFwRm9yU2hhZGVy
cykKLSAgICAgICAgICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8
U2hhZGVyTmFtZUhhc2g+KCk7CisgICAgICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBt
YWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwogICAgICAgICBzZXRDdXJyZW50TmFtZUhhc2hN
YXBGb3JTaGFkZXIobmFtZUhhc2hNYXBGb3JTaGFkZXJzLmdldCgpKTsKIAogICAgICAgICBhdXRv
IGdlbmVyYXRlZE5hbWUgPSBnZW5lcmF0ZUhhc2hlZE5hbWUobmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKaW5kZXggMjQzMDQ2ZDk4OWFkNzM4ZjdjOWY3MTQ5
NTU2N2M5NmJiMzRjNTY0MS4uNzBhMjBkNTBjMzUyMWE2MTIzZTZlZmFmMWY0NzY4ZjY0OTVjZGU1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcApAQCAtMjQyLDcg
KzI0Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBk
ZXB0aCkKIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQog
ewogICAgIGlmICghbV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkp
OworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVT
Pih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwog
fQogI2VuZGlmCkBAIC0yNzEsNyArMjcxLDcgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcwogR3Jh
cGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmli
dXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0
eWxlIHJlbmRlclN0eWxlLCBHcmFwaGljc0NvbnRleHQzRCogc2hhcmVkQ29udGV4dCkKICAgICA6
IG1fYXR0cnMoYXR0cmlidXRlcykKICAgICAsIG1fY29tcGlsZXIoaXNHTEVTMkNvbXBsaWFudCgp
ID8gU0hfRVNTTF9PVVRQVVQgOiBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQotICAgICwg
bV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlz
LCByZW5kZXJTdHlsZSkpCisgICAgLCBtX3ByaXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNo
YXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAKaW5kZXgg
ZWQ2Y2NmMTk0YmJlZTFlMDBmZDQzOWY2MWE2ZGU2MmU0MDMwMmVhMy4uOGZkM2FkNGY3MmQ3NjRi
ZDk1ZDIyMGY1ODFlZDJiNzk2Mjg4M2M5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29u
dGV4dDNEVGV4dHVyZU1hcHBlci5jcHAKQEAgLTEwNiw5ICsxMDYsOSBAQCBHcmFwaGljc0NvbnRl
eHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXMsIEhvcwogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENv
bnRleHQpOwogI2lmIFVTRShOSUNPU0lBKQotICAgIG1fbmljb3NpYUxheWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxOaWNvc2lhOjpHQzNETGF5ZXI+KCp0aGlzLCByZW5kZXJTdHlsZSk7CisgICAgbV9u
aWNvc2lhTGF5ZXIgPSBtYWtlVW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRoaXMsIHJlbmRl
clN0eWxlKTsKICNlbHNlCi0gICAgbV90ZXhtYXBMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOworICAgIG1f
dGV4bWFwTGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcj4o
KnRoaXMsIHJlbmRlclN0eWxlKTsKICNlbmRpZgogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CkBAIC0zMjUsMTAgKzMyNSwxMCBAQCBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKCkKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykgewogI2lmIFVTRShPUEVOR0xf
RVMpCiAgICAgICAgIC8vIGdsR2V0U3RyaW5naSBpcyBub3QgYXZhaWxhYmxlIG9uIEdMRVMyLgot
ICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5H
TEVTPih0aGlzLCAgZmFsc2UpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4
dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCAgZmFsc2UpOwogI2Vsc2UKICAgICAgICAgLy8gRnJv
bSBPcGVuR0wgMy4yIG9uIHdlIHVzZSB0aGUgQ29yZSBwcm9maWxlLCBhbmQgdGhlcmUgd2UgbXVz
dCB1c2UgZ2xHZXRTdHJpbmdpLgotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNp
b24oKSA+PSAzMjApOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lv
bnMzRE9wZW5HTD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjAp
OwogI2VuZGlmCiAgICAgfQogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcAppbmRleCAxNGYxZGJmMThkOTFi
MzkwNzVlMmQ1MGYyMTQ5Yjc3NmJiYzE3NDkzLi42NjMyMzE1Njk1YmEyMWMyNjdkMTU1OTMyZWJh
OTE0N2ZiNjZhZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9y
bUxheWVyLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZv
cm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAKICAgICB7CiAgICAgICAgIExvY2tIb2xk
ZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOwotICAgICAgICBtX3BsYXRm
b3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUsIHRl
eHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOworICAg
ICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIobWFrZVVuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1
cmUsIHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkp
OwogICAgIH0KIAogICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwCmluZGV4IDk3NGI4NTc4Yjg4YWE2NDM1MDkxZThiMGMzOGJiMmRiNzEwZWYx
MDIuLmEyZjc1ODY2ZTMyM2I4ZmRiYTQzYTAwN2Q0NDdhYWE0NjU3NmJmZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgVGV4dHVyZU1hcHBlckdMOjpUZXh0dXJl
TWFwcGVyR0woKQogCiAgICAgbV9kYXRhID0gbmV3IFRleHR1cmVNYXBwZXJHTERhdGEocGxhdGZv
cm1Db250ZXh0KTsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgbV90ZXh0dXJlUG9v
bCA9IHN0ZDo6bWFrZV91bmlxdWU8Qml0bWFwVGV4dHVyZVBvb2w+KG1fY29udGV4dEF0dHJpYnV0
ZXMpOworICAgIG1fdGV4dHVyZVBvb2wgPSBtYWtlVW5pcXVlPEJpdG1hcFRleHR1cmVQb29sPiht
X2NvbnRleHRBdHRyaWJ1dGVzKTsKICNlbmRpZgogfQogCkBAIC03OTAsNyArNzkwLDcgQEAgUmVm
PEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlVGV4dHVyZShHTGludCBpbnRl
cm5hbEZvcm1hdCkKIAogc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBw
ZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHR1cmVNYXBwZXJHTD4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJl
TWFwcGVyR0w+KCk7CiB9CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCA3YWZkZjMwYTA1YmNhNTM5N2I4MDE4YmZlYmQ4OWUw
ZTFkYTUwMzMzLi5lMTFhMGJiMjdiODEwYzJkNTI3NmIyYTliMGM1MDlmODg5NTA2NmMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmYKICAgICBhdXRvIHRleHR1cmUg
PSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6
OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKICAgICB0ZXh0dXJlLT5yZXNldChtX3NpemUpOwog
ICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUuZ2V0KCkpLmNvcHlGcm9t
RXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSwgbV9l
eHRyYUZsYWdzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKIH0KIAogdm9pZCBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCmlu
ZGV4IGM3MTRmNmQ3OGMxY2YxYTYxZDRkZmY2YjQyMDUyMWIwMmVjZDdjNTAuLjM3OTM2NzVhYzhk
NmIzYzMyYTNiMzE4MTkzZTQ5YTdiMzdkYzQ4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKQEAgLTcxLDggKzcxLDggQEAgdm9pZCBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQo
Q29tcG9zaXRvciogY28KICAgICBpZiAobV90YXJnZXRMYXllciAmJiBtX2N1cnJlbnRCdWZmZXIp
CiAgICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50QnVmZmVy
LmdldCgpKTsKIAotICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk7Ci0gICAgbV9jb21wb3NpdG9yVGhyZWFk
VXBkYXRlVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXJGaXJl
ZCk7CisgICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29w
OjpUaW1lcjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVu
dCgpLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFzZVVudXNl
ZEJ1ZmZlcnNUaW1lckZpcmVkKTsKKyAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lciA9
IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk6OmNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKTsKIAogI2lmIFVTRShHTElC
X0VWRU5UX0xPT1ApCiAgICAgbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXItPnNldFByaW9y
aXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6Q29tcG9zaXRpbmdUaHJlYWRVcGRhdGVUaW1lcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCmluZGV4IDM2N2Q4YTUzY2YzNzBkMjIwMmQ2ZjM0MDFjZGNiM2EwMmZmNDJjMmIuLmQ0
NzU3MTBiYTBjZGRmYmNkYmRhMGM2OGNlMzBiODFlZmFhZDY5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC05ODEs
NyArOTgxLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRC
dWZmZXJzKCkKIAogICAgIC8vIEVuc3VyZSB0aGUgVGlsZWRCYWNraW5nU3RvcmUgb2JqZWN0LCBh
bmQgZW5mb3JjZSBhIGNvbXBsZXRlIHJlcGFpbnQgaWYgaXQncyBub3QgYmVlbiBwcmVzZW50IHll
dC4KICAgICBpZiAoIWxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSkgewotICAgICAgICBsYXll
clN0YXRlLm1haW5CYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQmFja2luZ1N0
b3JlPihpbXBsLCBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOworICAgICAgICBsYXllclN0YXRl
Lm1haW5CYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVlPFRpbGVkQmFja2luZ1N0b3JlPihpbXBsLCBl
ZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOwogICAgICAgICBtX3BlbmRpbmdWaXNpYmxlUmVjdEFk
anVzdG1lbnQgPSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxl
ZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggM2JlNDMxMWRlYWEwMjQ5N2M3ZWQxY2RjYTEzNDViYTVh
NjgwMzEwOS4uNGE2OTc4MjJlNGRlMmNkYjhiNjZmODFkNDA0ZDhkYmU4MmI0OTg3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1RpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0yMjAsNyAr
MjIwLDcgQEAgdm9pZCBUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMoY29uc3QgSW50UmVj
dCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIHMKICAgICB1bnNpZ25lZCB0aWxlc1RvQ3Jl
YXRlQ291bnQgPSB0aWxlc1RvQ3JlYXRlLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIG4gPSAw
OyBuIDwgdGlsZXNUb0NyZWF0ZUNvdW50OyArK24pIHsKICAgICAgICAgVGlsZTo6Q29vcmRpbmF0
ZSBjb29yZGluYXRlID0gdGlsZXNUb0NyZWF0ZVtuXTsKLSAgICAgICAgbV90aWxlcy5hZGQoY29v
cmRpbmF0ZSwgc3RkOjptYWtlX3VuaXF1ZTxUaWxlPigqdGhpcywgY29vcmRpbmF0ZSkpOworICAg
ICAgICBtX3RpbGVzLmFkZChjb29yZGluYXRlLCBtYWtlVW5pcXVlPFRpbGU+KCp0aGlzLCBjb29y
ZGluYXRlKSk7CiAgICAgfQogICAgIHJlcXVpcmVkVGlsZUNvdW50IC09IHRpbGVzVG9DcmVhdGVD
b3VudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCBjODhlOWJlZjlkNjZjYTJi
NTUwMThjOTBmNGIwYTQyOGI0NjgyZWY4Li40ZWFmMDAxMTIwYzQ3ZmZjZTU1YWI0ZGZhOTIxODNj
ZThiMzE5NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBUcmFuc2Zvcm1TdGF0ZSYgVHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPShjb25zdCBUcmFuc2Zv
cm1TdGF0ZSYgb3RoZXIpCiAgICAgaWYgKG1fbWFwUXVhZCkgewogICAgICAgICBtX2xhc3RQbGFu
YXJRdWFkID0gb3RoZXIubV9sYXN0UGxhbmFyUXVhZDsKICAgICAgICAgaWYgKG90aGVyLm1fbGFz
dFBsYW5hclNlY29uZGFyeVF1YWQpCi0gICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlR
dWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCpvdGhlci5tX2xhc3RQbGFuYXJTZWNv
bmRhcnlRdWFkKTsKKyAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBtYWtl
VW5pcXVlPEZsb2F0UXVhZD4oKm90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbnVsbHB0
cjsKICAgICB9CkBAIC01MCw3ICs1MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0
ZTo6b3BlcmF0b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBtX2FjY3VtdWxh
dGVkVHJhbnNmb3JtID0gbnVsbHB0cjsKIAogICAgIGlmIChvdGhlci5tX2FjY3VtdWxhdGVkVHJh
bnNmb3JtKQotICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOwor
ICAgICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4oKm90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pOwogICAgICAgICAKICAgICBy
ZXR1cm4gKnRoaXM7CiB9CkBAIC0xMjksMTIgKzEyOSwxMiBAQCB2b2lkIFRyYW5zZm9ybVN0YXRl
OjphcHBseVRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtRnJv
bUNvbgogICAgIC8vIElmIHdlIGhhdmUgYW4gYWNjdW11bGF0ZWQgdHJhbnNmb3JtIGZyb20gbGFz
dCB0aW1lLCBtdWx0aXBseSBpbiB0aGlzIHRyYW5zZm9ybQogICAgIGlmIChtX2FjY3VtdWxhdGVk
VHJhbnNmb3JtKSB7CiAgICAgICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURp
cmVjdGlvbikKLSAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyICogKm1f
YWNjdW11bGF0ZWRUcmFuc2Zvcm0pOworICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9y
bSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWlu
ZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm11bHRpcGx5KHRyYW5zZm9ybUZyb21Db250YWluZXIp
OwogICAgIH0gZWxzZSBpZiAoYWNjdW11bGF0ZSA9PSBBY2N1bXVsYXRlVHJhbnNmb3JtKSB7CiAg
ICAgICAgIC8vIE1ha2Ugb25lIGlmIHdlIHN0YXJ0ZWQgdG8gYWNjdW11bGF0ZQotICAgICAgICBt
X2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1h
dHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFu
c2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29u
dGFpbmVyKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGFjY3VtdWxhdGUgPT0gRmxhdHRlblRyYW5z
Zm9ybSkgewpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OnNldExhc3RQ
bGFuYXJTZWNvbmRhcnlRdWFkKGNvbnN0IEZsb2F0UXVhZCogcXVhZCkKICAgICAvLyBNYXAgdGhl
IHF1YWQgYmFjayB0aHJvdWdoIGFueSB0cmFuc2Zvcm0gb3Igb2Zmc2V0IGJhY2sgaW50byB0aGUg
bGFzdCBmbGF0dGVuaW5nIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgRmxvYXRRdWFkIGJhY2tNYXBw
ZWRRdWFkKCpxdWFkKTsKICAgICBtYXBRdWFkKGJhY2tNYXBwZWRRdWFkLCBpbnZlcnNlRGlyZWN0
aW9uKCkpOwotICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZsb2F0UXVhZD4oYmFja01hcHBlZFF1YWQpOworICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1
YWQgPSBtYWtlVW5pcXVlPEZsb2F0UXVhZD4oYmFja01hcHBlZFF1YWQpOwogfQogCiB2b2lkIFRy
YW5zZm9ybVN0YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNmb3JtRGlyZWN0aW9u
IGRpcmVjdGlvbiwgYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUu
aAppbmRleCAxMDg2Mzc0MDBhMjBmYTJmMDlkZjZhZDQzOTMzY2E3ZGExN2Y0ODYxLi5iNjI1ODM2
YTVjZTIyNWJmNDdmMzMwYzA4YzI5ZDhjNzU2NTJlZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0
ZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIFRyYW5zZm9ybVN0YXRlIHsKICAgICAgICAgLy8g
V2UgbXVzdCBiZSBpbiBhIGZsYXR0ZW5lZCBzdGF0ZSAobm8gYWNjdW11bGF0ZWQgb2Zmc2V0KSB3
aGVuIHNldHRpbmcgdGhpcyBzZWNvbmRhcnkgcXVhZC4KICAgICAgICAgQVNTRVJUKG1fYWNjdW11
bGF0ZWRPZmZzZXQgPT0gTGF5b3V0U2l6ZSgpKTsKICAgICAgICAgaWYgKHF1YWQpCi0gICAgICAg
ICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1
YWQ+KCpxdWFkKTsKKyAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBtYWtl
VW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2xh
c3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IGQw
ODlkMGY2ZWMwNDM0NDZhNGI4OGM1OWYzMjI1MWRlN2JlMzg4MjQuLmE0NmQ4MDI1NmZjZmM5NDEy
YjkyNjM5YTcyOTJjMDMzOWZkZWU0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC02NDIsNyArNjQyLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBs
YXRmb3JtRGF0YShjb25zdCBGb250RGUKICAgICBib29sIHN5bnRoZXNpemVCb2xkID0gaXNHRElG
b250V2VpZ2h0Qm9sZCh3ZWlnaHQpICYmICFpc0dESUZvbnRXZWlnaHRCb2xkKGxvZ0ZvbnQubGZX
ZWlnaHQpOwogICAgIGJvb2wgc3ludGhlc2l6ZUl0YWxpYyA9IGlzSXRhbGljKGZvbnREZXNjcmlw
dGlvbi5pdGFsaWMoKSkgJiYgIWxvZ0ZvbnQubGZJdGFsaWM7CiAKLSAgICBhdXRvIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oV1RGTW92ZShoZm9udCksIGZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBzeW50aGVzaXplQm9sZCwgc3ludGhlc2l6
ZUl0YWxpYywgdXNlR0RJKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Rm9udFBsYXRm
b3JtRGF0YT4oV1RGTW92ZShoZm9udCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6
ZSgpLCBzeW50aGVzaXplQm9sZCwgc3ludGhlc2l6ZUl0YWxpYywgdXNlR0RJKTsKIAogI2lmIFVT
RShDRykKICAgICBib29sIGZvbnRDcmVhdGlvbkZhaWxlZCA9ICFyZXN1bHQtPmNnRm9udCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGM4MjlkYWFjZjYzNDkzYzQyZjZiNjA1
OTM0NzQxNmVlMmRlMDM5MDcuLmVhNTMwMTA4NmVjNzg4ZjdkMjAyODY0MGJiY2JhMTVjNTgwNGE5
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZQogICAgIGZvbnRSZWZlcmVuY2UgPSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CiAgICAgaWYgKCFmb250UmVmZXJlbmNlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUp
OwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0
IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApp
bmRleCBhYjdjNzkwZDYwZjJlOGY3NGFmMDNjMDZhY2ZjNzJjOGUzOWMyMmQ5Li5lZWVhZmViZDkz
M2NhOWM3OGRkMDUxNDEzZDIzMzQ0Y2E4NTNiMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YUNhaXJvLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZQogICAgIGlmICghZm9udFJlZmVyZW5jZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVm
ZXJlbmNlLCBmb250TmFtZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOwogfQogCiBib29sIEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2Ny
ZWVuQ29udHJvbGxlci5jcHAKaW5kZXggMWU0OTFjMTU2ODNmMTg0YWRhYzc1MGZlYWQwMzIxZWUw
OTczNjM5My4uY2M3YWQzZWMzMTBiYWZmOWYyZDUzMTNlYTM3ZWJiNjY3Yzc5ZDRlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRnVs
bFNjcmVlbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgTFJFU1VMVCBGdWxsU2Ny
ZWVuQ29udHJvbGxlcjo6UHJpdmF0ZTo6ZnVsbHNjcmVlbkNsaWVudFduZFByb2MoSFdORCBod25k
LCBVSU5UIG0KIH0KIAogRnVsbFNjcmVlbkNvbnRyb2xsZXI6OkZ1bGxTY3JlZW5Db250cm9sbGVy
KEZ1bGxTY3JlZW5Db250cm9sbGVyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3ByaXZhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxQcml2YXRlPih0aGlzLCBjbGllbnQpKQorICAgIDogbV9wcml2YXRlKG1h
a2VVbmlxdWU8UHJpdmF0ZT4odGhpcywgY2xpZW50KSkKIHsKICAgICBBU1NFUlRfQVJHKGNsaWVu
dCwgY2xpZW50KTsKIH0KQEAgLTEzMiwxMyArMTMyLDEzIEBAIHZvaWQgRnVsbFNjcmVlbkNvbnRy
b2xsZXI6OmVudGVyRnVsbFNjcmVlbigpCiAgICAgbV9wcml2YXRlLT5tX29yaWdpbmFsRnJhbWUg
PSBvcmlnaW5hbEZyYW1lOwogCiAgICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdp
bmRvdyk7Ci0gICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7
CisgICAgbV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3cgPSBtYWtlVW5pcXVlPE1lZGlhUGxh
eWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2
YXRlLT5tX2JhY2tncm91bmRXaW5kb3ctPmNyZWF0ZVdpbmRvdygwKTsKICAgICA6OkFuaW1hdGVX
aW5kb3cobV9wcml2YXRlLT5tX2JhY2tncm91bmRXaW5kb3ctPmh3bmQoKSwga0Z1bGxTY3JlZW5B
bmltYXRpb25EdXJhdGlvbiwgQVdfQkxFTkQgfCBBV19BQ1RJVkFURSk7CiAKICAgICBtX3ByaXZh
dGUtPm1fY2xpZW50LT5mdWxsU2NyZWVuQ2xpZW50V2lsbEVudGVyRnVsbFNjcmVlbigpOwogICAg
IEFTU0VSVCghbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cpOwotICAgIG1fcHJpdmF0ZS0+
bV9mdWxsU2NyZWVuV2luZG93ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVG
dWxsc2NyZWVuV2luZG93PihtX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS0+bV9mdWxs
U2NyZWVuV2luZG93ID0gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2lu
ZG93PihtX3ByaXZhdGUuZ2V0KCkpOwogICAgIEFTU0VSVChtX3ByaXZhdGUtPm1fZnVsbFNjcmVl
bldpbmRvdyk7CiAgICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3ctPmNyZWF0ZVdpbmRv
dygwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDYWlyb1dpbi5jcHAKaW5kZXggMTA2N2I5NjA5M2Ri
MmVkNTkxYTIxYTMxZDlkMDI1NmRjMTI5M2U4OS4uZjE0NDI1NzJjYzZkMWQ1NGJiZWU1OGJkYmMz
NmVkZjc3NGFhYmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCkBAIC03OCw3
ICs3OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGRjLCBib29s
IGhhc0FscGhhKQogCiAgICAgY2Fpcm9fdCogY3IgPSBjcmVhdGVDYWlyb0NvbnRleHRXaXRoSERD
KGRjLCBoYXNBbHBoYSk7CiAKLSAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7Cisg
ICAgbV9kYXRhID0gbmV3IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShtYWtlVW5pcXVl
PFBsYXRmb3JtQ29udGV4dENhaXJvPihjcikpOwogICAgIG1fZGF0YS0+cGxhdGZvcm1Db250ZXh0
LnNldEdyYXBoaWNzQ29udGV4dFByaXZhdGUobV9kYXRhKTsKICAgICBtX2RhdGEtPm1faGRjID0g
ZGM7CiAgICAgaWYgKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dERpcmVjdDJELmNwcAppbmRleCA5ZjJkMzg4ODUwMGM2OWY4NTNlZmU1MmZiM2U5ODkzOTVkNTQ2
NWQ5Li5kM2U0NzdlMTIwMWJiNjE4Yzc3OTA2YjU2NWI5ZTM0MzA3YWExMDJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGly
ZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHREaXJlY3QyRC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQoSERDIGhkYywgSUQyRDFEQ1JlbmRlclRhcmdldCoqIHJlbmRlclRh
cmdldCwgUkUKIAogICAgICgqcmVuZGVyVGFyZ2V0KS0+QmluZERDKGhkYywgJnJlY3QpOwogCi0g
ICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNv
bnRleHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPigqcmVuZGVyVGFyZ2V0
KTsKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFdURk1v
dmUob3duZWRQbGF0Zm9ybUNvbnRleHQpLCBCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BV
TWVtb3J5KTsKICAgICBtX2RhdGEtPm1faGRjID0gaGRjOwogfQpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQoSERDIGhkYywgYm9vbCBoYXNBbHBo
YSkKICAgICBpZiAoIVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
b3duZWRQbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEPihyZW5kZXJUYXJnZXQuZ2V0KCkpOworICAgIGF1dG8gb3duZWRQbGF0Zm9ybUNvbnRl
eHQgPSBtYWtlVW5pcXVlPFBsYXRmb3JtQ29udGV4dERpcmVjdDJEPihyZW5kZXJUYXJnZXQuZ2V0
KCkpOwogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoV1RG
TW92ZShvd25lZFBsYXRmb3JtQ29udGV4dCksIEJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpH
UFVNZW1vcnkpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBoZGM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggYmQ3NmVmYmJhOWQwZTg5N2QzZDI4OGU4NWU4ZDI0
NDRjYzRmOGY0ZS4uMWViYjViMDlkMzg1MzdjMDE5MjIwYjk0N2RjYWQ5NDRkOGUxMDExOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
R3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUYKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFw
aGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRleHRdKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCBwbGF0Zm9y
bUNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsKIH0K
IApAQCAtNTUsMTQgKzU1LDE0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1w
bEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGCiAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAgIFty
ZW5kZXJUYXJnZXRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
Pihjb250ZXh0LCByZW5kZXJUYXJnZXQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEPihjb250ZXh0LCByZW5kZXJUYXJnZXQpOwogICAg
ICAgICB9KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250
ZXh0LCBGbG9hdFJlY3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9y
bUNvbnRleHQocGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlx
dWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKKyAg
ICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4o
bV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4
dFR5cGU6OkdQVU1lbW9yeSkpCiB7CiAgICAgbV9wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3ND
b250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRl
eHQobV9wbGF0Zm9ybUNvbnRleHQpOwpAQCAtNzAsOSArNzAsOSBAQCBHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQm
IGNvbnRleAogCiBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIElEMkQxUmVuZGVyVGFyZ2V0KiBy
ZW5kZXJUYXJnZXQpCiAgICAgOiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVj
dCB7IH0sIEFmZmluZVRyYW5zZm9ybSB7IH0pCi0gICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0
KHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldCkp
CisgICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQ+KHJlbmRlclRhcmdldCkpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dCgqbV9vd25l
ZFBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29u
dGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCisgICAgLCBtX3By
aXZhdGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZv
cm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpH
UFVNZW1vcnkpKQogewogICAgIG1fcGxhdGZvcm1Db250ZXh0LnNldEdyYXBoaWNzQ29udGV4dFBy
aXZhdGUobV9wcml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPnN5bmNDb250ZXh0KG1fcGxh
dGZvcm1Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKaW5kZXggNWJkZTRjZWRmNTE2YTkx
NzlhNmQzZDNiM2UzM2QxMzRlZDVhYjUxMS4uMWQ4MDQyMGNmN2VjNmNkNzc1YTYyYmFlYTIyZjk5
MDYwN2ViNGNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgR3Jh
cGhpY3NDb250ZXh0OjpXaW5kb3dzQml0bWFwOjp+V2luZG93c0JpdG1hcCgpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxHcmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA+IEdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlV2luZG93c0JpdG1hcChjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFdpbmRvd3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFdpbmRvd3NCaXRtYXA+KG1fZGF0YS0+bV9oZGMsIHNpemUpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAppbmRleCAwNmMxNzQ1NzlhNGJjMTMw
OTFmMzRiNTc5NGFhYTkyOTkzYmJiYTI0Li4zNWE5ZmY2MTEzNTFjMzNjNzE3NGQ5MmExZmRjZjQ0
NzBlODFhODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwCkBAIC0xMTIsOCArMTEyLDggQEAg
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm90ZTog
VGhpcyBwbGFjZXMgdGhlIGJpdG1hcGNvbnRleHQgaW50byBhIGxvY2tlZCBzdGF0ZSBiZWNhdXNl
IG9mIHRoZSBCZWdpbkRyYXcgY2FsbCBpbiB0aGUgY29uc3RydWN0b3IuCi0gICAgbV9kYXRhLnBs
YXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+
KGJpdG1hcENvbnRleHQuZ2V0KCkpOwotICAgIG1fZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHQ+KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBo
aWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CisgICAg
bV9kYXRhLnBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOworICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1
ZTxHcmFwaGljc0NvbnRleHQ+KG1fZGF0YS5wbGF0Zm9ybUNvbnRleHQuZ2V0KCksIEdyYXBoaWNz
Q29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKICAgICBz
dWNjZXNzID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbi5jcHAKaW5kZXggNTgzOGVjMTU3YTJjN2I3MTYzYjcxNjgyYTRlYjhjODAzNGU5NjMy
MS4uNmQ2NGFlOWE2ZTNhNDE3ZmIxNGYxMjE2NmY2OGQzYzlhNTUyNjZkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTgyLDcgKzgyLDcg
QEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjp+TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsK
ICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5
ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBs
YXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogICAgIH0KIH0KQEAgLTMwMSw3ICszMDEsNyBAQCBm
bG9hdCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Om1heFRpbWVTZWVrYWJsZSgp
IGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6YnVmZmVyZWQoKSBjb25zdAogeyAKLSAgICBhdXRvIHJh
bmdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8g
cmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fcHJl
c2VudGVyICYmIG1fcHJlc2VudGVyLT5tYXhUaW1lTG9hZGVkKCkgPiAwKQogICAgICAgICByYW5n
ZXMtPmFkZChNZWRpYVRpbWU6Onplcm9UaW1lKCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShtX3ByZXNlbnRlci0+bWF4VGltZUxvYWRlZCgpKSk7CiAgICAgcmV0dXJuIHJhbmdlczsKQEAg
LTg4OCw3ICs4ODgsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OkN1c3Rv
bVZpZGVvUHJlc2VudGVyOjpDdXN0b21WaWRlb1ByZXNlbnRlcihNZQogICAgIG1fc291cmNlUmVj
dC5ib3R0b20gPSAxOwogICAgIG1fc291cmNlUmVjdC5yaWdodCA9IDE7CiAKLSAgICBtX3ByZXNl
bnRlckVuZ2luZSA9IHN0ZDo6bWFrZV91bmlxdWU8RGlyZWN0M0RQcmVzZW50ZXI+KCk7CisgICAg
bV9wcmVzZW50ZXJFbmdpbmUgPSBtYWtlVW5pcXVlPERpcmVjdDNEUHJlc2VudGVyPigpOwogICAg
IGlmICghbV9wcmVzZW50ZXJFbmdpbmUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9XS0NBSW1hZ2VRdWV1ZS5jcHAK
aW5kZXggOGMwZWIyNGIxOWM3MTMwZDM2MjU3NWU3YjQ4MGQ2NDM5YThhZTRiNi4uOWQ3ZDkyZThl
YWQ5NmExYmJkZmJkMWQ5MmRjOTY2MjFjNmM0MmY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwCkBAIC01MSwx
MyArNTEsMTMgQEAgc3RhdGljIHZvaWQgV0tDQUltYWdlUXVldWVSZWxlYXNlKENBSW1hZ2VRdWV1
ZVJlZiBpcSkKIH0KIAogV0tDQUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKHVpbnQzMl90IHdp
ZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGNhcGFjaXR5KQotICAgIDogbV9wcml2YXRl
KHN0ZDo6bWFrZV91bmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQorICAgIDogbV9wcml2
YXRlKG1ha2VVbmlxdWU8V0tDQUltYWdlUXVldWVQcml2YXRlPigpKQogewogICAgIG1fcHJpdmF0
ZS0+bV9pbWFnZVF1ZXVlID0gYWRvcHRDRih3a0NBSW1hZ2VRdWV1ZUNyZWF0ZSh3aWR0aCwgaGVp
Z2h0LCBjYXBhY2l0eSkpOwogfQogCiBXS0NBSW1hZ2VRdWV1ZTo6V0tDQUltYWdlUXVldWUoY29u
c3QgV0tDQUltYWdlUXVldWUmIG8pCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxX
S0NBSW1hZ2VRdWV1ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NB
SW1hZ2VRdWV1ZVByaXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBv
Lm1fcHJpdmF0ZS0+bV9pbWFnZVF1ZXVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDcxYTAwYTMwYzBmYWVkZDliNDBlYzRmZmFkZjE3
ODYzOGYyNWI4NTQuLjQyMjUyZDM0YjU0ZmU2YzJjMjZiNTIyYzY2MGU4NjJmMDU2ZWYwOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTQz
LDI0ICs0MywyNCBAQCBlbnVtIENsaXBib2FyZERhdGFUeXBlIHsKIAogc3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIkNMSVBCT0FSRCIpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJDTElQQk9BUkQiKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oIlBSSU1BUlkiKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigiUFJJTUFSWSIpOwogfQogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFBhc3RlYm9hcmQ+KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEucGxhdGZvcm1E
YXRhKCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCpkcmFnRGF0
YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oKmRy
YWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggMDRlOTZhYjU5MmViOTgy
OTQ0N2MzMzNmYmE4MTg3NzI5NzA3ZjAzMy4uYWY4ZmYzNDI0NmJjOTcyZjFhNWZmNzM3Zjk5Mjk4
MDlmYjY2OWIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6
d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgY29uc3QgU2Vs
CiAKICAgICBpZiAobnVtYmVyT2ZUYXJnZXRzID4gMCAmJiB0YWJsZSkgewogICAgICAgICBTZXRG
b3JTY29wZTxTZWxlY3Rpb25EYXRhKj4gY2hhbmdlKHNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24s
IGNvbnN0X2Nhc3Q8U2VsZWN0aW9uRGF0YSo+KCZzZWxlY3Rpb24pKTsKLSAgICAgICAgYXV0byBk
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwYm9hcmRTZXREYXRhPigqc2V0dGluZ0NsaXBib2Fy
ZFNlbGVjdGlvbiwgV1RGTW92ZShwcmltYXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOworICAgICAgICBh
dXRvIGRhdGEgPSBtYWtlVW5pcXVlPENsaXBib2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJk
U2VsZWN0aW9uLCBXVEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKSk7CiAgICAgICAgIGlm
IChndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEoY2xpcGJvYXJkLCB0YWJsZSwgbnVtYmVyT2ZU
YXJnZXRzLCBnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLCBjbGVhckNsaXBib2FyZENvbnRl
bnRzQ2FsbGJhY2ssIGRhdGEuZ2V0KCkpKSB7CiAgICAgICAgICAgICBndGtfY2xpcGJvYXJkX3Nl
dF9jYW5fc3RvcmUoY2xpcGJvYXJkLCBudWxscHRyLCAwKTsKICAgICAgICAgICAgIC8vIFdoZW4g
Z3RrX2NsaXBib2FyZF9zZXRfd2l0aF9kYXRhKCkgc3VjY2VlZHMgY2xlYXJDbGlwYm9hcmRDb250
ZW50c0NhbGxiYWNrIHRha2VzIHRoZSBvd25lcnNoaXAgb2YgZGF0YSwgc28gd2UgbGVhayBpdCBo
ZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1l
R2FkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUdhZGdl
dC5jcHAKaW5kZXggYmRjYzk5ZTg1OWQ0OTc1MDc4ZmYzYzVlMmViYzM4NWQ5Yjk1Yjk1Mi4uNzNl
MDc1OGE2ZWRkMWUxOTMyMzEwODNmODlhN2U3ZmRmMjBkMTM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwCkBAIC0zNSwyMCArMzUs
MjAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRoZW1lR2FkZ2V0PiBSZW5kZXJUaGVtZUdhZGdl
dDo6Y3JlYXRlKGNvbnN0IFJlbmRlclRoZW1lR2EKIHsKICAgICBzd2l0Y2ggKGluZm8udHlwZSkg
ewogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkdlbmVyaWM6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNp
YmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1l
R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5k
ZXJUaGVtZUdhZGdldDo6VHlwZTo6VGV4dEZpZWxkOgotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJUaGVtZVRleHRGaWVsZEdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5n
cywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRleHRG
aWVsZEdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2Ug
UmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OlJhZGlvOgogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRn
ZXQ6OlR5cGU6OkNoZWNrOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZVRvZ2dsZUdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUdhZGdldD4oaW5mbywgcGFy
ZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5
cGU6OkFycm93OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUFy
cm93R2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2li
bGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpJY29u
OgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUljb25HYWRnZXQ+
KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVJY29uR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3Np
dGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6U2Nyb2xsYmFyOgotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhckdhZGdldD4o
aW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhckdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywg
cG9zaXRpb24pOwogICAgIGNhc2UgUmVuZGVyVGhlbWVHYWRnZXQ6OlR5cGU6OkJ1dHRvbjoKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0b25HYWRnZXQ+KGlu
Zm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVCdXR0b25HYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0
aW9uKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCmluZGV4IDA1ZDEyZGQ5
ZWFmYmVmMDJhNDU5Y2E1Mjc2NDE3YTViOWIwZTg5NzYuLmNhNmVkOTE4YTUwMzNlMjk3NmRiODRk
ODljMjA0ODg3MDBmMDJiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9SZW5kZXJUaGVtZVdpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1JlbmRlclRoZW1lV2lkZ2V0LmNwcApAQCAtNDIsNDkgKzQyLDQ5IEBAIFJlbmRlclRoZW1lV2lk
Z2V0JiBSZW5kZXJUaGVtZVdpZGdldDo6Z2V0T3JDcmVhdGUoVHlwZSB3aWRnZXRUeXBlKQogICAg
IGF1dG8gYWRkUmVzdWx0ID0gd2lkZ2V0TWFwKCkuZW5zdXJlKHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih3aWRnZXRUeXBlKSwgW3dpZGdldFR5cGVdKCkgLT4gc3RkOjp1bmlxdWVfcHRyPFJlbmRlclRo
ZW1lV2lkZ2V0PiB7CiAgICAgICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkgewogICAgICAgICBjYXNl
IFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbGJhclJpZ2h0OgotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19P
UklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19P
UklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwog
ICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbGJhckxl
ZnQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9s
bGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9k
ZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9zaXRpb246OkxlZnQpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19P
UklFTlRBVElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwsIFJl
bmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0KTsKICAgICAgICAgY2Fz
ZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNjcm9sbGJhcjoKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJ
RU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkZ1bGwpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19P
UklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7
CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsSW5k
aWNhdG9yUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9s
bGJhcjo6TW9kZTo6SW5kaWNhdG9yKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1l
U2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lk
Z2V0OjpUeXBlOjpWZXJ0aWNhbFNjcm9sbEluZGljYXRvckxlZnQ6Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9O
X1ZFUlRJQ0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yLCBSZW5kZXJU
aGVtZVNjcm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJ
Q0FMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNhdG9yLCBSZW5kZXJUaGVtZVNj
cm9sbGJhcjo6VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhl
bWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTY3JvbGxJbmRpY2F0b3I6Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFU
SU9OX0hPUklaT05UQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19P
UklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6TW9kZTo6SW5kaWNh
dG9yKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6Q2hlY2tCdXR0b246
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1
dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246OlR5cGU6OkNoZWNrKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRv
Z2dsZUJ1dHRvbjo6VHlwZTo6Q2hlY2spOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0
OjpUeXBlOjpSYWRpb0J1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6VHlwZTo6
UmFkaW8pOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVC
dXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CiAgICAgICAgIGNh
c2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OkJ1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVm
YXVsdDo6Tm8pOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVCdXR0
b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6OkJ1dHRvbkRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1
bHQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRv
bj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6Olllcyk7CiAgICAgICAgIGNhc2UgUmVuZGVy
VGhlbWVXaWRnZXQ6OlR5cGU6OkNvbWJvQm94OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyVGhlbWVDb21ib0JveD4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbmRlclRoZW1lQ29tYm9Cb3g+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVX
aWRnZXQ6OlR5cGU6OkVudHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVuZGVyVGhlbWVFbnRyeT4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lRW50cnk+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNl
bGVjdGVkRW50cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJU
aGVtZUVudHJ5PihSZW5kZXJUaGVtZUVudHJ5OjpTZWxlY3RlZDo6WWVzKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJlbmRlclRoZW1lRW50cnk6OlNl
bGVjdGVkOjpZZXMpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpTZWFy
Y2hFbnRyeToKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1l
U2VhcmNoRW50cnk+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVt
ZVNlYXJjaEVudHJ5PigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpT
cGluQnV0dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVTcGluQnV0dG9uPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhl
bWVTcGluQnV0dG9uPigpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpW
ZXJ0aWNhbFNsaWRlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
clRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9WRVJUSUNB
TCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okhvcml6b250YWxTbGlk
ZXI6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNsaWRl
cj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKICAg
ICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6UHJvZ3Jlc3NCYXI6Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5k
ZXJUaGVtZVByb2dyZXNzQmFyOjpNb2RlOjpEZXRlcm1pbmF0ZSk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJUaGVtZVByb2dyZXNz
QmFyOjpNb2RlOjpEZXRlcm1pbmF0ZSk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6
OlR5cGU6OkluZGV0ZXJtaW5hdGVQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NC
YXI6Ok1vZGU6OkluZGV0ZXJtaW5hdGUpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVQcm9ncmVzc0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5k
ZXRlcm1pbmF0ZSk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okxpc3RW
aWV3OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVMaXN0
Vmlldz4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lTGlzdFZp
ZXc+KCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6Okljb246Ci0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUljb24+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUljb24+KCk7CiAgICAgICAgIGNh
c2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OldpbmRvdzoKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lV2luZG93PigpOworICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVXaW5kb3c+KCk7CiAgICAgICAgIH0KICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTM5LDcgKzEz
OSw3IEBAIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpSZW5kZXJUaGVtZVNjcm9sbGJhcihHdGtPcmll
bnRhdGlvbiBvcmllbnRhdGlvbiwgTW9kZSBtb2RlCiAgICAgaW5mby50eXBlID0gUmVuZGVyVGhl
bWVHYWRnZXQ6OlR5cGU6OkdlbmVyaWM7CiAgICAgaW5mby5uYW1lID0gImNvbnRlbnRzIjsKICAg
ICBpbmZvLmNsYXNzTGlzdC5jbGVhcigpOwotICAgIG1fY29udGVudHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZvLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUws
IGNoaWxkcmVuLCBtX3Njcm9sbGJhci5nZXQoKSk7CisgICAgbV9jb250ZW50cyA9IG1ha2VVbmlx
dWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwg
Y2hpbGRyZW4sIG1fc2Nyb2xsYmFyLmdldCgpKTsKICAgICBpbmZvLm5hbWUgPSAic2xpZGVyIjsK
ICAgICBtX3NsaWRlciA9IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoaW5mbywgbV9jb250ZW50
cy0+Y2hpbGQobV90cm91Z2hQb3NpdGlvbikpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIFJlbmRl
clRoZW1lQ29tYm9Cb3g6OlJlbmRlclRoZW1lQ29tYm9Cb3goKQogICAgIH07CiAgICAgaW5mby5u
YW1lID0gImJveCI7CiAgICAgaW5mby5jbGFzc0xpc3QgPSB7ICJob3Jpem9udGFsIiwgImxpbmtl
ZCIgfTsKLSAgICBtX2JveCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+
KGluZm8sIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBjaGlsZHJlbiwgbV9jb21ib0JveC5n
ZXQoKSk7CisgICAgbV9ib3ggPSBtYWtlVW5pcXVlPFJlbmRlclRoZW1lQm94R2FkZ2V0PihpbmZv
LCBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgY2hpbGRyZW4sIG1fY29tYm9Cb3guZ2V0KCkp
OwogICAgIFJlbmRlclRoZW1lR2FkZ2V0KiBidXR0b24gPSBtX2JveC0+Y2hpbGQoMCk7CiAgICAg
aW5mby5jbGFzc0xpc3QucmVtb3ZlTGFzdCgpOwogICAgIG1fYnV0dG9uQm94ID0gUmVuZGVyVGhl
bWVHYWRnZXQ6OmNyZWF0ZShpbmZvLCBidXR0b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCA4NDA3YzExMDFkZGQ2ZGI2ZTM3OGRlZmNiM2FiODI2YmY3MjY0NTRkLi43ODY5N2Vi
MDAwMGY3ZjdiODJhN2QwZWNmNWY5ODVhMWU5Mjg5YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEJNUEltYWdlRGVjb2Rlcjo6ZGVjb2RlSGVs
cGVyKGJvb2wgb25seVNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9y
ZWFkZXIpIHsKLSAgICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEJNUEltYWdlUmVh
ZGVyPih0aGlzLCBtX2RlY29kZWRPZmZzZXQsIGltZ0RhdGFPZmZzZXQsIGZhbHNlKTsKKyAgICAg
ICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlzLCBtX2RlY29kZWRP
ZmZzZXQsIGltZ0RhdGFPZmZzZXQsIGZhbHNlKTsKICAgICAgICAgbV9yZWFkZXItPnNldERhdGEo
bV9kYXRhLmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
N2JhN2VkOTEwMWNlMjVhOWJmNmUyMzEwODdiZjBiYzExNGNjMjJkNi4uNGYzNDg3ZTMzNDc2NDA1
NDc0Y2Y4NmI1YzYwNmQyYzE5ODhjN2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAK
QEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKHVuc2lnbmVk
IGhhbHRBdEZyYW1lLCBHSUZRdWVyeSBxdWVyeSwgYm9vbCBhbGxEYXRhUgogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoIW1fcmVhZGVyKSB7Ci0gICAgICAgIG1fcmVhZGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxHSUZJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAgIG1fcmVhZGVyID0gbWFrZVVu
aXF1ZTxHSUZJbWFnZVJlYWRlcj4odGhpcyk7CiAgICAgICAgIG1fcmVhZGVyLT5zZXREYXRhKG1f
ZGF0YS5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCAxY2Nh
NWU1OWVlYjM1MWIwNThhMjFkYjEzNGY2NDM3OTFlNTA3N2NhLi5kNzcxODZlYTk3MzliZGZiMmM1
NjIyOGVlNGNmNWU4ODI4ZDg4NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTMy
MSw3ICszMjEsNyBAQCBib29sIEdJRkZyYW1lQ29udGV4dDo6ZGVjb2RlKGNvbnN0IHVuc2lnbmVk
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OgogICAgICAgICBpZiAoIWlzRGF0
YVNpemVEZWZpbmVkKCkgfHwgIWlzSGVhZGVyRGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgbV9sendDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHSUZMWldD
b250ZXh0PihjbGllbnQsIHRoaXMpOworICAgICAgICBtX2x6d0NvbnRleHQgPSBtYWtlVW5pcXVl
PEdJRkxaV0NvbnRleHQ+KGNsaWVudCwgdGhpcyk7CiAgICAgICAgIGlmICghbV9sendDb250ZXh0
LT5wcmVwYXJlVG9EZWNvZGUoKSkgewogICAgICAgICAgICAgbV9sendDb250ZXh0ID0gbnVsbHB0
cjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc4Niw3ICs3ODYsNyBAQCB2b2lkIEdJ
RkltYWdlUmVhZGVyOjpzZXRSZW1haW5pbmdCeXRlcyhzaXplX3QgcmVtYWluaW5nQnl0ZXMpCiB2
b2lkIEdJRkltYWdlUmVhZGVyOjphZGRGcmFtZUlmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9m
cmFtZXMuaXNFbXB0eSgpIHx8IG1fZnJhbWVzLmxhc3QoKS0+aXNDb21wbGV0ZSgpKQotICAgICAg
ICBtX2ZyYW1lcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxHSUZGcmFtZUNvbnRleHQ+KG1fZnJh
bWVzLnNpemUoKSkpOworICAgICAgICBtX2ZyYW1lcy5hcHBlbmQobWFrZVVuaXF1ZTxHSUZGcmFt
ZUNvbnRleHQ+KG1fZnJhbWVzLnNpemUoKSkpOwogfQogCiAvLyBGSVhNRTogTW92ZSB0aGlzIG1l
dGhvZCB0byBjbG9zZSB0byBkb0xaVygpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCAxODcwYmIxNjBiODQ5NDhmMGI1OWRlNDUxMTYzNmJhNGMwZjM4ZjJlLi5mZjZhMWM4N2FlNmYw
NWI0OWNjYzEyOGFiZTA1YzMwM2Q2ZWViYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4
KHNpemVfdCBpbmRleCkKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaGF2ZSBhbHJlYWR5IHNp
emVkIG1fZnJhbWVCdWZmZXJDYWNoZSBiZWZvcmUgdGhpcywgYW5kCiAgICAgICAgICAgICAvLyB3
ZSBtdXN0IG5vdCByZXNpemUgaXQgYWdhaW4gbGF0ZXIgKHNlZSBjYXV0aW9uIGluIGZyYW1lQ291
bnQoKSkuCiAgICAgICAgICAgICBBU1NFUlQobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA9PSBt
X2RpckVudHJpZXMuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0gPSBz
dGQ6Om1ha2VfdW5pcXVlPEJNUEltYWdlUmVhZGVyPih0aGlzLCBkaXJFbnRyeS5tX2ltYWdlT2Zm
c2V0LCAwLCB0cnVlKTsKKyAgICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0gPSBtYWtlVW5p
cXVlPEJNUEltYWdlUmVhZGVyPih0aGlzLCBkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0LCAwLCB0cnVl
KTsKICAgICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0tPnNldERhdGEobV9kYXRhLmdldCgp
KTsKICAgICAgICAgICAgIG1fYm1wUmVhZGVyc1tpbmRleF0tPnNldEJ1ZmZlcigmbV9mcmFtZUJ1
ZmZlckNhY2hlW2luZGV4XSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwCmluZGV4IGViZmU0NTMwZjcxODUzMDcyZTNhNTNkMmZjYzY2MGU3YTA5NmNmNDMuLjBjMDU0
OWI1YTNlZTA0YWYyOWNhN2Q2MDYwMzVmY2ZlNjE3NDg1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcApAQCAtNjUzLDcgKzY1Myw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6
ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoIW1fcmVhZGVyKQotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91
bmlxdWU8SlBFR0ltYWdlUmVhZGVyPih0aGlzKTsKKyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5p
cXVlPEpQRUdJbWFnZVJlYWRlcj4odGhpcyk7CiAKICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkZWNv
ZGUgdGhlIGltYWdlIGJ1dCB3ZSd2ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29kaW5nCiAg
ICAgLy8gaGFzIGZhaWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzE4YTM5
YjU5MTMzYTMxOGYxNTEwNTgxZThmOTFlYmRkNzY4NzlhYi4uNjJjYjliMjJhMDFmMjZlOWYyY2Q0
MWRlYTM4MWIzNjM2ODk3ZWU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTU1
Niw3ICs1NTYsNyBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUs
IHVuc2lnbmVkIGhhbHRBdEZyYW1lLCBib29sIGFsbERhdGFSZQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoIW1fcmVhZGVyKQotICAgICAgICBtX3JlYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UE5HSW1hZ2VSZWFkZXI+KHRoaXMpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8UE5H
SW1hZ2VSZWFkZXI+KHRoaXMpOwogCiAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVjb2RlIHRoZSBp
bWFnZSBidXQgd2UndmUgcmVjZWl2ZWQgYWxsIHRoZSBkYXRhLCBkZWNvZGluZwogICAgIC8vIGhh
cyBmYWlsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5
VGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbQppbmRleCAyMDlmODhmNDdhM2I3Y2RjMDE0M2RlOTJlMjRiYWRkZjk2NjRiNWY0Li5jYWUz
ZGNmMTY0Nzk2Y2VlY2I2OGIyNDQ4ZjExMzNjMTBlYzljMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0KQEAgLTY5LDcgKzY5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogTGVnYWN5VGlsZUNhY2hlOjpMZWdhY3lUaWxlQ2FjaGUoV0FLV2lu
ZG93KiB3aW5kb3cpCiAgICAgOiBtX3dpbmRvdyh3aW5kb3cpCiAgICAgLCBtX3RvbWJzdG9uZShh
ZG9wdE5TKFtbTGVnYWN5VGlsZUNhY2hlVG9tYnN0b25lIGFsbG9jXSBpbml0XSkpCi0gICAgLCBt
X3pvb21lZE91dFRpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlz
LCBtX3RpbGVTaXplKSkKKyAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQobWFrZVVuaXF1ZTxMZWdh
Y3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQogICAgICwgbV90aWxlQ3JlYXRpb25UaW1l
cigqdGhpcywgJkxlZ2FjeVRpbGVDYWNoZTo6dGlsZUNyZWF0aW9uVGltZXJGaXJlZCkKIHsKICAg
ICBbaG9zdExheWVyKCkgaW5zZXJ0U3VibGF5ZXI6bV96b29tZWRPdXRUaWxlR3JpZC0+dGlsZUhv
c3RMYXllcigpIGF0SW5kZXg6MF07CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBMZWdhY3lUaWxl
Q2FjaGU6OmNvbW1pdFNjYWxlQ2hhbmdlKCkKIAogICAgIGlmIChtX2N1cnJlbnRTY2FsZSAhPSBt
X3pvb21lZE91dFRpbGVHcmlkLT5zY2FsZSgpKSB7CiAgICAgICAgIGlmICghbV96b29tZWRJblRp
bGVHcmlkKSB7Ci0gICAgICAgICAgICBtX3pvb21lZEluVGlsZUdyaWQgPSBzdGQ6Om1ha2VfdW5p
cXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSk7CisgICAgICAgICAgICBtX3pv
b21lZEluVGlsZUdyaWQgPSBtYWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxl
U2l6ZSk7CiAgICAgICAgICAgICBbaG9zdExheWVyKCkgYWRkU3VibGF5ZXI6bV96b29tZWRJblRp
bGVHcmlkLT50aWxlSG9zdExheWVyKCldOwogICAgICAgICAgICAgaG9zdExheWVyU2l6ZUNoYW5n
ZWQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQppbmRleCAxOTFhYzc2OTYyMTUxMjE1M2RiZGNiMDc4ZGQ2NmY0NjU1M2JjMjFkLi4w
MjcxYjkzZTcwNWNlMmM0MmQ2MzJmZTJkYjI5YWE0NmU4MzZkMjM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtNjYsMTIgKzY2LDEyIEBAIHZv
aWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0Fu
ZERyb3AoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCJkYXRh
IGludGVyYWN0aW9uIHBhc3RlYm9hcmQiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJv
YXJkPigiZGF0YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2Fy
ZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFz
dGVib2FyZD4oZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7CiB9CiAKICNlbmRpZgpAQCAtMTAx
LDcgKzEwMSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikK
IAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oY2hh
bmdlQ291bnRGb3JQYXN0ZWJvYXJkKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9h
cmQ+KGNoYW5nZUNvdW50Rm9yUGFzdGVib2FyZCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGE5ZDllNDcxMDUwMTdkNjRkODJlMzdjOGFh
MzFjZTY0NjkwMjU2ODUuLmMyYjVhMGIwOGJkZjc1ZThjMDFjZDliZDJkNTFjMzE0OTMwNWYzODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtODQsNyArODQs
NyBAQCBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZWdpc3RlclFMUHJldmlld0NvbnZlcnRlcklm
TmVlZGVkKE5TVVJMICp1cmwsIE5TU3RyaW5nCiAgICAgaWYgKFtRTFByZXZpZXdHZXRTdXBwb3J0
ZWRNSU1FVHlwZXNTZXQoKSBjb250YWluc09iamVjdDp1cGRhdGVkTUlNRVR5cGUuZ2V0KCldKSB7
CiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gdXRpID0gYWRvcHROUyhQQUw6OnNvZnRMaW5r
X1F1aWNrTG9va19RTFR5cGVDb3B5VVRJRm9yVVJMQW5kTWltZVR5cGUodXJsLCB1cGRhdGVkTUlN
RVR5cGUuZ2V0KCkpKTsKIAotICAgICAgICBhdXRvIGNvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8UHJldmlld0NvbnZlcnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKKyAgICAgICAgYXV0byBjb252
ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdDb252ZXJ0ZXI+KGRhdGEsIHV0aS5nZXQoKSk7CiAg
ICAgICAgIFJlc291cmNlUmVxdWVzdCBwcmV2aWV3UmVxdWVzdCA9IGNvbnZlcnRlci0+cHJldmll
d1JlcXVlc3QoKTsKIAogICAgICAgICAvLyBXZSB1c2UgW3JlcXVlc3QgVVJMXSBoZXJlIGluc3Rl
YWQgb2YgdXJsIHNpbmNlIGl0IHdpbGwgYmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1tCmluZGV4IDEwN2M3N2M3NTNl
YWI3ZDkyZGEyOTQ4N2NhNmY2NWY4MDcwNDgyMTMuLjZkOWNjZTE1Yjg3NGYxNWYxNTQ4NzVlYTBl
ZTZiOWYxMDM1YTgzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9S
ZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQpAQCAtNDUsNyArNDUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNy
ZWF0ZShSZW1vdGVDb21tYQogICAgIGlmICghTWVkaWFQbGF5ZXJMaWJyYXJ5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlQ29t
bWFuZExpc3RlbmVySU9TPihjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUNv
bW1hbmRMaXN0ZW5lcklPUz4oY2xpZW50KTsKIH0KIAogUmVtb3RlQ29tbWFuZExpc3RlbmVySU9T
OjpSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1MoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50JiBj
bGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5p
bWF0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5pbWF0b3JJ
T1MubW0KaW5kZXggMDFmMGE5YmIyMGEyNDhiNjk5ODg1NjQ3MGFlZTM3NGE5OGNmYTUxYy4uZWQ2
MzJlYTVlM2Y1NTk3ZTlkNzZmZDJlNTU2OTU2MWZlNmM0YzIyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1hdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQpAQCAtNDAsNyArNDAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4g
U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JJT1M+KHNjcm9sbGFi
bGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRvcklPUz4oc2Nyb2xs
YWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvcklPUzo6U2Nyb2xsQW5pbWF0b3JJT1MoU2Ny
b2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCmluZGV4IDA1NDNlZDVlOWZjOWZjZmUz
YmJhYTQwMzU1ZTQwNzJmOWYzYzNmNDAuLmY4YTYxZWM3MGMwYzFhNGNkMzc3ZjBlN2NkNjc2ZWZi
OWRlNWJjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0
ZWJvYXJkTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFz
dGVib2FyZExpYldQRS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPigpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiB9CiAKIFBhc3RlYm9hcmQ6OlBh
c3RlYm9hcmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQppbmRleCA1MTUyMGRjYmJlYTU5MjE4NWMzMjY3MDJjYmE2OWZlODhiNGQ0ZGRlLi44ZWIxNWNm
ODg1MmQ5ODU3NDQ3ZTA1OWMzOGFjYWViYTIzNDE1ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMTAwLDcgKzEwMCw3IEBAIFBhc3RlYm9h
cmQ6OlBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHByb21pCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KE5TR2Vu
ZXJhbFBib2FyZCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFs
UGJvYXJkKTsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIApAQCAt
MTA4LDEzICsxMDgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFz
dGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2Fy
ZD4oTlNEcmFnUGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihOU0Ry
YWdQYm9hcmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVO
YW1lcygpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0
ZWJvYXJkTmFtZSgpLCBkcmFnRGF0YS5maWxlTmFtZXMoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1vdGVDb21tYW5kTGlzdGVuZXJN
YWMubW0KaW5kZXggMDVjYzA4OTU3ZTFkNTAxMjRkZDYzMmUyYTRjODkyMTI5ODk2OTYxMS4uMWFh
MmNkODAxMzJmMmMyMWVlMzhiOWZmYmRiODMzNzNiYmY0YzE5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUNvbW1hbmRMaXN0ZW5lcj4gUmVtb3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUoUmVtb3Rl
Q29tbWFuZExpc3RlbmVyQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjPihjbGllbnQpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYz4oY2xpZW50KTsKIH0KIAogdm9pZCBSZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWM6OnVwZGF0ZVN1cHBvcnRlZENvbW1hbmRzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCBhODMx
NzUxMjJlYzJlNGI2YjZkZTUxYmU2ZGY1MjY0YjQxYTFmOGM0Li42ODYwZTMzYzNhM2IyMTU2MzA1
ZmIzMWFmNDI3ZGM0OTAyMzU4N2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC02OTcsNyArNjk3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9y
OjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yTWFjPihzY3JvbGxhYmxlQXJlYSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JNYWM+KHNjcm9sbGFibGVBcmVhKTsKIH0K
IAogU2Nyb2xsQW5pbWF0b3JNYWM6OlNjcm9sbEFuaW1hdG9yTWFjKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcApp
bmRleCAxYjlkYzUzNDViODgxZWIzNmQ5NmZjZTM1ODJkZjBlNTRhMTM4NWJhLi5lMjQ0NWJjODIz
Zjg2ZTA1NWIwZTU3ODc3ZDZjZjUzMWE0ZmZjYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGw+IE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6Y3Jl
YXRlCiAgICAgaWYgKCF3cml0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3cml0ZXIu
cmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZpZGVvVHJh
Y2tJZCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1w
bD4od3JpdGVyLnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoYXVkaW9UcmFja0lkKSwgV1RGTW92
ZSh2aWRlb1RyYWNrSWQpKTsKIH0KIAogTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZUFWRkltcGwoUmVmPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiYm
IHdyaXRlciwgU3RyaW5nJiYgYXVkaW9UcmFja0lkLCBTdHJpbmcmJiB2aWRlb1RyYWNrSWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmlu
ZGV4IGRiOTRmZGFmODNhOGFiZDY3YWZjZmQ2ZWEzNjlmYWE4OWM0NmMzZTIuLjU5YWIzODQwZmQ3
MzZjYTE0NTAxNmM3ZjY2MGVjYTNiMDkwMzI0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC05MSwxNCArOTEsMTQgQEAgQXVk
aW9DYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpmYWN0b3J5KCkK
IAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3Vy
Y2UoR1N0cmVhbWVyQ2FwdHVyZURldmljZSBkZXZpY2UsIFN0cmluZyYmIGhhc2hTYWx0KQogICAg
IDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywg
U3RyaW5nIHsgZGV2aWNlLnBlcnNpc3RlbnRJZCgpIH0sIFN0cmluZyB7IGRldmljZS5sYWJlbCgp
IH0sIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVl
PEdTdHJlYW1lckF1ZGlvQ2FwdHVyZXI+KGRldmljZSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VV
bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oZGV2aWNlKSkKIHsKICAgICBpbml0aWFsaXpl
R1N0cmVhbWVyRGVidWcoKTsKIH0KIAogR1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpHU3Ry
ZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbWUs
IFN0cmluZyYmIGhhc2hTYWx0KQogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpBdWRpbywgV1RGTW92ZShkZXZpY2VJRCksIFdURk1vdmUobmFtZSks
IFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1ha2VfdW5pcXVlPEdT
dHJlYW1lckF1ZGlvQ2FwdHVyZXI+KCkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0
cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkKIHsKICAgICBpbml0aWFsaXplR1N0cmVhbWVyRGVidWco
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCmluZGV4IGQ1ZGZjMzg0MTNlNjUzMDhkYjE1Nzk2YjJiZWM5M2U5MGE1NjkxMzguLjA4M2Q0
NDcyODM5ZjliYmMzZjY5NDY2ZDExZjM4NDkxMzY2N2M2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVh
bVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtNDM1LDggKzQzNSw4IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zdHJlYW1fc3JjX2NsYXNzX2luaXQoV2ViS2l0TWVk
aWFTdHJlYW1TcmNDbGFzcyoga2xhc3MpCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9tZWRpYV9zdHJl
YW1fc3JjX2luaXQoV2ViS2l0TWVkaWFTdHJlYW1TcmMqIHNlbGYpCiB7Ci0gICAgc2VsZi0+bWVk
aWFTdHJlYW1UcmFja09ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRNZWRpYVN0cmVh
bVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOwotICAgIHNlbGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNl
bGYtPm1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViS2l0TWVkaWFTdHJl
YW1UcmFja09ic2VydmVyPihzZWxmKTsKKyAgICBzZWxmLT5tZWRpYVN0cmVhbU9ic2VydmVyID0g
bWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbU9ic2VydmVyPihzZWxmKTsKICAgICBzZWxmLT5m
bG93Q29tYmluZXIgPSBnc3RfZmxvd19jb21iaW5lcl9uZXcoKTsKICAgICBzZWxmLT52aWRlb1Ny
Yy5yZXNldCh0cnVlKTsKICAgICBzZWxmLT5hdWRpb1NyYy5yZXNldChmYWxzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IGU1
ZDliMGUwMjc2ZWRkYTVkYmQ1MjBiYzEwZjM1MTgwZDAxNWQ2OWIuLjk3YmUxZjEyZmJiMjJkYzM1
OGM5OWM4MzlmOTgxZjE2NTZhOGUxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBEaXNwbGF5
Q2FwdHVyZUZhY3RvcnkmIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6ZGlzcGxheUZhY3Rv
cnkoKQogCiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lclZpZGVvQ2FwdHVy
ZVNvdXJjZShTdHJpbmcmJiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNh
bHQsIGNvbnN0IGdjaGFyICpzb3VyY2VfZmFjdG9yeSkKICAgICA6IFJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlKFdURk1vdmUoZGV2aWNlSUQpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGhhc2hT
YWx0KSkKLSAgICAsIG1fY2FwdHVyZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0Nh
cHR1cmVyPihzb3VyY2VfZmFjdG9yeSkpCisgICAgLCBtX2NhcHR1cmVyKG1ha2VVbmlxdWU8R1N0
cmVhbWVyVmlkZW9DYXB0dXJlcj4oc291cmNlX2ZhY3RvcnkpKQogewogICAgIGluaXRpYWxpemVH
U3RyZWFtZXJEZWJ1ZygpOwogfQogCiBHU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2U6OkdTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlIGRldmljZSwgU3Ry
aW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZShTdHJpbmcg
eyBkZXZpY2UucGVyc2lzdGVudElkKCkgfSwgU3RyaW5nIHsgZGV2aWNlLmxhYmVsKCkgfSwgV1RG
TW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVh
bWVyVmlkZW9DYXB0dXJlcj4oZGV2aWNlKSkKKyAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxH
U3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQogewogICAgIGluaXRpYWxpemVHU3RyZWFt
ZXJEZWJ1ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3RvcnkuY3BwCmluZGV4IGNkMGU2Y2Q0M2Y1ZTQwYjQ4ODAyOWViZTRkYTRiMjE1Mjc5
NzAwZGIuLjgzNTgxZTg1YTM5NjJkOTdlMDE3NDNiMTBlNTZjZWFhMTUxY2VmYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFt
ZXJWaWRlb0VuY29kZXJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKQEAg
LTUxMywxNCArNTEzLDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRW5jb2Rlcj4g
R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeTo6Q3JlYXRlVmlkZW9FCiAgICAgICAgIGdfb2Jq
ZWN0X2dldCh3ZWJydGNlbmNvZGVyLmdldCgpLCAiZW5jb2RlciIsICZlbmNvZGVyLm91dFB0cigp
LCBOVUxMKTsKIAogICAgICAgICBpZiAoZW5jb2RlcikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZQOEVuY29kZXI+KGZvcm1hdCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWUDhFbmNvZGVyPihmb3JtYXQpOwogCiAgICAgICAg
IEdTVF9JTkZPKCJVc2luZyBWUDggRW5jb2RlciBmcm9tIExpYldlYlJUQy4iKTsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8d2VicnRjOjpMaWJ2cHhWcDhFbmNvZGVyPigpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8d2VicnRjOjpMaWJ2
cHhWcDhFbmNvZGVyPigpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXQubmFtZSA9PSBjcmlja2V0
OjprSDI2NENvZGVjTmFtZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVh
bWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJl
YW1lckgyNjRFbmNvZGVyPihmb3JtYXQpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCA2OTExYzZmYWU0NGQ2N2JiODRi
YmEwMTUyZjYzMGI5YWZjZTAzY2IwLi43NDUzM2M1ZmE0ZGYwZDRlNWE2NGQ3NWNlNjI3YjMyNDJj
NDZiODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgY2xhc3MgQmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5IDogcHVibGljIHJ0Yzo6QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkocnRjOjpUaHJlYWQm
IG5ldHdvcmtUaHJlYWQpCi0gICAgICAgIDogbV9zb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWY8
cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKKyAgICAgICAg
OiBtX3NvY2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRj
OjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCZuZXR3b3JrVGhyZWFkKSkKICAgICB7CiAgICAg
fQogCkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBlZXJDb25uZWN0
aW9uRmFjdG9yeUFuZFRocmVhZHMoUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGgKICAgICByZXN1
bHQgPSBmYWN0b3J5QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQtPlN0YXJ0KCk7CiAgICAgQVNT
RVJUKHJlc3VsdCk7CiAKLSAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CisgICAgZmFjdG9yeUFu
ZFRocmVhZHMuYXVkaW9EZXZpY2VNb2R1bGUgPSBtYWtlVW5pcXVlPExpYldlYlJUQ0F1ZGlvTW9k
dWxlPigpOwogfQogCiBzdGF0aWMgaW5saW5lIFBlZXJDb25uZWN0aW9uRmFjdG9yeUFuZFRocmVh
ZHMmIHN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKCkKQEAgLTI4OSwxMCArMjg5LDEwIEBAIHJ0Yzo6
c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBMaWJXZWJSVENQ
cm92aWRlcjo6Y3JlYXRlUGVlCiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0
aWNGYWN0b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsK
IAogICAgIGlmICghZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIpCi0gICAgICAgIGZh
Y3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJh
c2ljTmV0d29ya01hbmFnZXI+KCk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtN
YW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05ldHdv
cmtNYW5hZ2VyPigpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRG
YWN0b3J5KQotICAgICAgICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0g
c3RkOjptYWtlX3VuaXF1ZTxCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhy
ZWFkcy5uZXR3b3JrVGhyZWFkKTsKKyAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0U29j
a2V0RmFjdG9yeSA9IG1ha2VVbmlxdWU8QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PigqZmFjdG9y
eUFuZFRocmVhZHMubmV0d29ya1RocmVhZCk7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMucGFja2V0
U29ja2V0RmFjdG9yeS0+c2V0RGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKG1fZGlzYWJs
ZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKTsKIAogICAgIHJldHVybiBjcmVhdGVQZWVyQ29ubmVj
dGlvbihvYnNlcnZlciwgKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtNYW5hZ2VyLCAqZmFjdG9y
eUFuZFRocmVhZHMucGFja2V0U29ja2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwg
bnVsbHB0cik7CkBAIC0zMTUsNyArMzE1LDcgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxjcmlja2V0OjpCYXNpY1BvcnRBbGxvY2F0b3I+IHBvcnRBbGxv
Y2F0b3I7CiAgICAgZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFkLT5JbnZva2U8dm9p
ZD4oUlRDX0ZST01fSEVSRSwgWyZdKCkgewotICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y3JpY2tldDo6QmFzaWNQb3J0QWxsb2NhdG9yPigmbmV0d29y
a01hbmFnZXIsICZwYWNrZXRTb2NrZXRGYWN0b3J5KTsKKyAgICAgICAgYXV0byBiYXNpY1BvcnRB
bGxvY2F0b3IgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjcmlja2V0OjpCYXNp
Y1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3RvcnkpOwog
ICAgICAgICBpZiAoIW1fZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcykKICAg
ICAgICAgICAgIGJhc2ljUG9ydEFsbG9jYXRvci0+c2V0X2ZsYWdzKGJhc2ljUG9ydEFsbG9jYXRv
ci0+ZmxhZ3MoKSB8IGNyaWNrZXQ6OlBPUlRBTExPQ0FUT1JfRElTQUJMRV9BREFQVEVSX0VOVU1F
UkFUSU9OKTsKICAgICAgICAgcG9ydEFsbG9jYXRvciA9IFdURk1vdmUoYmFzaWNQb3J0QWxsb2Nh
dG9yKTsKQEAgLTMzNiw3ICszMzYsNyBAQCBydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yJiBM
aWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNhdGVHZW5lcmF0b3IoKQogewogICAgIGF1dG8mIGZh
Y3RvcnlBbmRUaHJlYWRzID0gZ2V0U3RhdGljRmFjdG9yeUFuZFRocmVhZHMobV91c2VOZXR3b3Jr
VGhyZWFkV2l0aFNvY2tldFNlcnZlcik7CiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0
aWZpY2F0ZUdlbmVyYXRvcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVH
ZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3I+
KGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGluZ1RocmVhZC5nZXQoKSwgZmFjdG9yeUFuZFRocmVh
ZHMubmV0d29ya1RocmVhZC5nZXQoKSk7CisgICAgICAgIGZhY3RvcnlBbmRUaHJlYWRzLmNlcnRp
ZmljYXRlR2VuZXJhdG9yID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpS
VENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhyZWFk
LmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKIAogICAgIHJl
dHVybiAqZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3I7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCAxNWUy
YTg3ODljMDdmYjBkMGFlYzZmNmMyMGY3YmIxN2ZhOGRiN2QyLi41YjgyNzNiMDg1MTk2ZmZkMzBl
NGQ3YTdmNjU1MTBiZWMwODAzMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBib29sIExpYldlYlJU
Q1Byb3ZpZGVyOjp3ZWJSVENBdmFpbGFibGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpW
aWRlb0RlY29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlckdTdHJlYW1lcjo6Y3JlYXRlRGVj
b2RlckZhY3RvcnkoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lclZp
ZGVvRGVjb2RlckZhY3Rvcnk+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVyVmlk
ZW9EZWNvZGVyRmFjdG9yeT4oKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VmlkZW9F
bmNvZGVyRmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJG
YWN0b3J5KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0Vu
Y29kZXJGYWN0b3J5PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvRW5j
b2RlckZhY3Rvcnk+KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKaW5kZXggODJjYmNi
MWM2NmQzMmVhMThjZGViMTY3OTM4ZDY4ZDNiMTJlNDE5YS4uZjdkODVkYzYwYTYxYTgxNDZkYmEw
ZDAzZTU1ZDc1NzYyZmU5MGY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAKQEAgLTE4OCw4ICsxODgsOCBAQCB2b2lkIEF1ZGlvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1l
ZGlhVGltZSYgcwogICAgICAgICBpZiAoIXJlbW90ZUlPVW5pdCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbj4oaW5wdXREZXNjcmlwdGlvbik7Ci0gICAgICAgIG1fb3V0cHV0
RGVzY3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4o
b3V0cHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5p
cXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oaW5wdXREZXNjcmlwdGlvbik7CisgICAgICAg
IG1fb3V0cHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bj4ob3V0cHV0RGVzY3JpcHRpb24pOwogCiAgICAgICAgIG1fZGF0YVNvdXJjZSA9IEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZTo6Y3JlYXRlKGRlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDIsIHN0cmVh
bVRyYWNrKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KaW5k
ZXggZThlM2QzNDg2ZGE0M2FhYzFkZDU0Yjc4ZTZiNGRmNGRjOTgxNjc5MC4uNjExYWMxNmI5ZWNi
ODY4OThhMzcyNjQ3MWM3NjIwNzEyZmI5YjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5tbQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWM6OnJlY29uZmlndXJlKCkKICAgICBjb25zdCBib29sIGlzTm9uSW50ZXJsZWF2
ZWQgPSB0cnVlOwogICAgIEZpbGxPdXRBU0JERm9yTFBDTShtX3N0cmVhbUZvcm1hdCwgc2FtcGxl
UmF0ZSgpLCBjaGFubmVsQ291bnQsIGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdCwgYml0c1Bl
ckJ5dGUgKiBieXRlc1BlckZsb2F0LCBpc0Zsb2F0LCBpc0JpZ0VuZGlhbiwgaXNOb25JbnRlcmxl
YXZlZCk7CiAKLSAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXVk
aW9CdWZmZXJMaXN0PihtX3N0cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJh
bWUgKiBtX21heGltaXVtRnJhbWVDb3VudCk7CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtl
VW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4obV9zdHJlYW1Gb3JtYXQsIG1fc3RyZWFtRm9ybWF0
Lm1CeXRlc1BlckZyYW1lICogbV9tYXhpbWl1bUZyYW1lQ291bnQpOwogCiAgICAgQ01Gb3JtYXRE
ZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKICAgICBDTUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb25DcmVhdGUoTlVMTCwgJm1fc3RyZWFtRm9ybWF0LCAwLCBOVUxMLCAwLCBOVUxMLCBOVUxM
LCAmZm9ybWF0RGVzY3JpcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZUNvY29hLm1tCmluZGV4IGY5ZGM0YTg0N2Y0YTM1NWQ5Y2NmZjRjZGUwMzA4ZDBk
NWM1YzQ0NTYuLjM4OGQ3MWUyNGIyNWViZjZkNzc4ODE0ZmRkMGE5NjYzYjE3MDU0NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KQEAgLTQ2
LDcgKzQ2LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZUNvY29hOjpjb252ZXJ0VG9ZVVYoQ1ZQaXgKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJDb25mb3JtZXIpCi0gICAgICAgIG1fcGl4ZWxC
dWZmZXJDb25mb3JtZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+
KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NWUGl4
ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAocHJlZmVyZWRQaXhlbEJ1ZmZlckZvcm1hdCgp
KSB9KTsKKyAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IG1ha2VVbmlxdWU8UGl4ZWxC
dWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChwcmVmZXJlZFBp
eGVsQnVmZmVyRm9ybWF0KCkpIH0pOwogCiAgICAgcmV0dXJuIG1fcGl4ZWxCdWZmZXJDb25mb3Jt
ZXItPmNvbnZlcnQocGl4ZWxCdWZmZXIpOwogfQpAQCAtNzUsNyArNzUsNyBAQCBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OnJvdGF0
ZVBpeGVsQnVmZmVyKAogICAgICAgICBJbnRTaXplIHNpemUgPSB7IChpbnQpQ1ZQaXhlbEJ1ZmZl
ckdldFdpZHRoKHBpeGVsQnVmZmVyKSAsIChpbnQpQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhl
bEJ1ZmZlcikgfTsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAg
dHJhbnNmb3JtLnJvdGF0ZShyb3RhdGlvblRvQW5nbGUocm90YXRpb24pKTsKLSAgICAgICAgbV9y
b3RhdGlvblNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+
KFdURk1vdmUodHJhbnNmb3JtKSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdldFBpeGVsRm9ybWF0VHlw
ZShwaXhlbEJ1ZmZlciksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGli
bGU6Ok5vKTsKKyAgICAgICAgbV9yb3RhdGlvblNlc3Npb24gPSBtYWtlVW5pcXVlPEltYWdlUm90
YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUodHJhbnNmb3JtKSwgc2l6ZSwgQ1ZQaXhlbEJ1ZmZlckdl
dFBpeGVsRm9ybWF0VHlwZShwaXhlbEJ1ZmZlciksIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6Oklz
Q0dJbWFnZUNvbXBhdGlibGU6Ok5vKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9yb3RhdGlvblNl
c3Npb24tPnJvdGF0ZShwaXhlbEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcAppbmRleCAyZjFmYjU1ZWU2NzFmMmYyMjhmYzUx
NTFkMGRkNjljZjhlYzY5NWNiLi4yYzdjNDFiZDY5NmZmMWY5YmFiMzgzODFhNGI1ODM4NTY4YjE4
YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVy
c01vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJz
TW9jay5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgUmVtb3RlRGF0YUNoYW5uZWxOb3RpZmllcjo6UmVt
b3RlRGF0YUNoYW5uZWxOb3RpZmllcihSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGkKIAogdm9p
ZCBSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpmaXJlKCkKIHsKLSAgICBtX2NsaWVudC0+ZGlk
QWRkUmVtb3RlRGF0YUNoYW5uZWwoc3RkOjptYWtlX3VuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRs
ZXJNb2NrPigiUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgp
KSk7CisgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZURhdGFDaGFubmVsKG1ha2VVbmlxdWU8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyTW9jaz4oIlJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2siLCBSVENE
YXRhQ2hhbm5lbEluaXQoKSkpOwogfQogCiBEYXRhQ2hhbm5lbFN0YXRlTm90aWZpZXI6OkRhdGFD
aGFubmVsU3RhdGVOb3RpZmllcihSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqIGNsaWVudCwg
UlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggNTU5OTMzODJiM2ExZGMzNmQ4MzU2YjYxYjI1YzcwMDJlMDcz
NDdmZS4uMzg3YTIxZGFmNDU1MjM5NjhhZWU0Zjc5NDE5ZDNkOGI4ODY5MGQ3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQKIHZvaWQg
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXSAoTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZT4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCisgICAgcmVnaXN0cmFyKFtdIChN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKICAgICAgICAgc3VwcG9y
dHNUeXBlLCAwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpidWZm
ZXJlZCgpIGNvbnN0CiAgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2YXRlKQogICAgICAgICByZXR1
cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmJ1ZmZlcmVkKCk7CiAKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiBib29sIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGNjNjdjZTY4
OGYzYmNhMjIyNjkwYjQzZjEwNTg3OGJhOWUzYzI4ZjguLjkwNTE0MzE2MjFhOGMxMDhhNmVmMGY1
MWViNjBmNzc0YWZjYzBhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTE1OSw5ICsxNTksOSBAQCBCbG9i
UmVzb3VyY2VIYW5kbGU6OkJsb2JSZXNvdXJjZUhhbmRsZShCbG9iRGF0YSogYmxvYkRhdGEsIGNv
bnN0IFJlc291cmNlUmVxdWVzdAogICAgICwgbV9hc3luYyB7IGFzeW5jIH0KIHsKICAgICBpZiAo
bV9hc3luYykKLSAgICAgICAgbV9hc3luY1N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNG
aWxlU3RyZWFtPigqdGhpcyk7CisgICAgICAgIG1fYXN5bmNTdHJlYW0gPSBtYWtlVW5pcXVlPEFz
eW5jRmlsZVN0cmVhbT4oKnRoaXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJlYW0gPSBzdGQ6
Om1ha2VfdW5pcXVlPEZpbGVTdHJlYW0+KCk7CisgICAgICAgIG1fc3RyZWFtID0gbWFrZVVuaXF1
ZTxGaWxlU3RyZWFtPigpOwogfQogCiBCbG9iUmVzb3VyY2VIYW5kbGU6On5CbG9iUmVzb3VyY2VI
YW5kbGUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuY3BwCmluZGV4IDgxMTJiOTczZWVmNTRlZDdhNWM3YTUxNGNmMTAy
YWM5OTFlNzY1MzMuLmI1NDFmNjJlZTAwNTIwMzYyYzE1NTdmN2NhNDk2NGEyMzdiODc0OWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3MgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlY29kaW5nUmVzdWx0RGlzcGEKIAogc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNrKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxl
dGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxEZWNvZGVUYXNrPigKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVUYXNrPigK
ICAgICAgICAgdXJsLnN0cmluZygpLAogICAgICAgICBzY2hlZHVsZUNvbnRleHQsCiAgICAgICAg
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IDMwYzI3ZjU3NmExNzdlNmI2YWIx
OTQ3NDBhN2Q5MDI1YjY1OWZjYWQuLjZhMzFlM2U1MjdmOGVjOTJkNmY2MmI5NmNkZDgxOTQ0MTRi
NTVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlZ2lz
dGVyQnVpbHRpblN5bmNocm9ub3VzTG9hZGVyKGNvbnN0IEF0b21TdHJpbmcmIHByb3RvY29sCiB9
CiAKIFJlc291cmNlSGFuZGxlOjpSZXNvdXJjZUhhbmRsZShOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVu
dCogY2xpZW50LCBib29sIGRlZmVyc0xvYWRpbmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBi
b29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKQotICAgIDogZChzdGQ6Om1ha2VfdW5pcXVl
PFJlc291cmNlSGFuZGxlSW50ZXJuYWw+KHRoaXMsIGNvbnRleHQsIHJlcXVlc3QsIGNsaWVudCwg
ZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmICYmIHNob3VsZENvbnRlbnRTbmlmZlVS
TChyZXF1ZXN0LnVybCgpKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpKQorICAgIDogZCht
YWtlVW5pcXVlPFJlc291cmNlSGFuZGxlSW50ZXJuYWw+KHRoaXMsIGNvbnRleHQsIHJlcXVlc3Qs
IGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVudFNuaWZmICYmIHNob3VsZENvbnRl
bnRTbmlmZlVSTChyZXF1ZXN0LnVybCgpKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpKQog
ewogICAgIGlmICghcmVxdWVzdC51cmwoKS5pc1ZhbGlkKCkpIHsKICAgICAgICAgc2NoZWR1bGVG
YWlsdXJlKEludmFsaWRVUkxGYWlsdXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCmluZGV4IGRhZDkwMTBmOTU3MGViYzU2NzYzMzU0M2ZkMWZjNTAyZjg0NjliOTkuLjcxM2I0
ZGZiMzBiMmFmZGZiZWFmZjRlZTUzNzBhMjU0NmZhZDNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIENGVVJMUmVxdWVzdFJlZiBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxs
U2VuCiAgICAgfTsKIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdl
UXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUo
d29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMjA3
LDcgKzIwNyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiAgICAgfTsKIAogICAgIGlmICht
X21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNz
YWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7
CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVj
ZWl2ZURhdGEoQ0ZECiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAg
ICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFr
ZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMjUxLDcgKzI1MSw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNz
YWdlUXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1
ZXVlLT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7
CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpA
QCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbChDRkVycm9yUmVmCiAgICAgfTsKIAogICAg
IGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAg
bV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1v
dmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3
b3JrKSk7CiB9CkBAIC0zMTEsNyArMzExLDcgQEAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjoKICAg
ICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVl
dWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoV1RGTW92ZSh3b3JrKSk7CiAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwpAQCAtMzMxLDcg
KzMzMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nCiAgICAgfTsKIAogICAgIGlmIChtX21l
c3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAgbV9tZXNzYWdl
UXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykp
KTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9
CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRTZW5kQm9keURhdGEoQ0YKICAgICB9OwogCiAg
ICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAg
ICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RG
TW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3Zl
KHdvcmspKTsKIH0KQEAgLTM4MCw3ICszODAsNyBAQCBCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1Bybwog
ICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KaW5kZXggYzliNTNlMzEyYWQ4NTU3NmQzNjZlZjRkYzUzNzQzOTFmZThj
NjkwYy4uYmE1NWYwMDQ4YjhlNGRkYzViMDczNGQ5OTNkYzliMTNiOGNiMmIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNTIzLDcgKzUyMyw3IEBAIC0gKHZvaWQpX3Jlc3RhcnQKIAog
ICAgIF9yZXNvdXJjZSA9IHNlbGYuc2Vzc2lvbi5sb2FkZXIucmVxdWVzdFJlc291cmNlKHNlbGYu
b3JpZ2luYWxSZXF1ZXN0LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246
OkRpc2FsbG93Q2FjaGluZyk7CiAgICAgaWYgKF9yZXNvdXJjZSkKLSAgICAgICAgX3Jlc291cmNl
LT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3Jlc291cmNlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ+KHNlbGYpKTsKIH0KIAogLSAodm9pZClf
Y2FuY2VsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcAppbmRleCBhNDVhNWY0ZTRhMDI4ZmU2ZTdmMmRmYjc1ZWMyYzhhZWM5M2Vk
MmJiLi4xMDE2MjRmMjkwMGE5NGNjN2QxYTg5OTg5Njc2ZDZiNDVhYjdmYTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAK
QEAgLTM4NCw3ICszODQsNyBAQCBPcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6
OnNlYXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdAogICAgICAgICAiQU5E
ICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9CID8pKSAiXAogICAgICAgICAiT1JERVIgQlkg
bGVuZ3RoKHBhdGgpIERFU0MsIGxhc3R1cGRhdGVkIjsKIAotICAgIGF1dG8gcHN0bXQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRv
IHBzdG10ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAg
ICAgaWYgKCFwc3RtdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtNTY2LDcg
KzU2Niw3IEBAIGJvb2wgQ29va2llSmFyREI6OmRlbGV0ZUFsbENvb2tpZXMoKQogCiB2b2lkIENv
b2tpZUphckRCOjpjcmVhdGVQcmVwYXJlU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3FsKQogewot
ICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVTdGF0ZW1lbnQ+KG1f
ZGF0YWJhc2UsIHNxbCk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0
YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpbnQgcmV0ID0gc3RhdGVtZW50LT5wcmVw
YXJlKCk7CiAgICAgQVNTRVJUKHJldCA9PSBTUUxJVEVfT0spOwogICAgIG1fc3RhdGVtZW50cy5h
ZGQoc3FsLCBXVEZNb3ZlKHN0YXRlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IGZhNWM4
ZDJkMjFiNjI3MzgxNWQwMjNhNGYyMDQ1NTAxNmU5NjM4YWYuLmUyYjRiNWRmYmRhNjJhM2MwY2I2
YmY5MTgxYmJkNjhmZDdhNGEwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIC0tZW5kOyAv
LyBMYXN0IGxpbmUgaXMgZW1wdHkKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0
cmluZyB1cmwgPSBpdC0+c3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgIGF1dG8gY2FjaGVFbnRy
eSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNo
ZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENhY2hlRW50
cnk+KHVybCwgbnVsbHB0ciwgbV9jYWNoZURpcik7CiAKICAgICAgICAgaWYgKGNhY2hlRW50cnkt
PmlzQ2FjaGVkKCkgJiYgY2FjaGVFbnRyeS0+ZW50cnlTaXplKCkgPCBtX3N0b3JhZ2VTaXplTGlt
aXQpIHsKICAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IGNhY2hlRW50cnktPmVu
dHJ5U2l6ZSgpOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlJiBqb2IsIFJlc291cmNlUmVzcG9uc2UmCiAK
ICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsgLy8gSW52YWxpZGF0ZSBleGlzdGlu
ZyBlbnRyeSBvbiAyMDAKIAotICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBzdGQ6Om1ha2VfdW5p
cXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2IsIG1fY2FjaGVEaXIpOworICAgICAgICBhdXRv
IGNhY2hlRW50cnkgPSBtYWtlVW5pcXVlPEN1cmxDYWNoZUVudHJ5Pih1cmwsICZqb2IsIG1fY2Fj
aGVEaXIpOwogICAgICAgICBib29sIGNhY2hlYWJsZSA9IGNhY2hlRW50cnktPnBhcnNlUmVzcG9u
c2VIZWFkZXJzKHJlc3BvbnNlKTsKICAgICAgICAgaWYgKGNhY2hlYWJsZSkgewogICAgICAgICAg
ICAgY2FjaGVFbnRyeS0+c2V0SXNMb2FkaW5nKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggN2QxNzIxN2My
ZTQ0MmFjNmYzZGU4YzRiNjBhOTUyNmM5ZjY1ODQyYS4uN2IwNGZhMjZhNDJhYjk3OGFlMDdiZDMx
ZjBlNjkxNTUxYmJjNDYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgQ3VybENvbnRl
eHQ6OkN1cmxDb250ZXh0KCkKICAgICBpZiAoYXV0byB2YWx1ZSA9IGVudlZhci5yZWFkQXM8c2ln
bmVkPigiV0VCS0lUX0NVUkxfTUFYX0hPU1RfQ09OTkVDVElPTlMiKSkKICAgICAgICAgbWF4SG9z
dENvbm5lY3Rpb25zID0gKnZhbHVlOwogCi0gICAgbV9zY2hlZHVsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEN1cmxSZXF1ZXN0U2NoZWR1bGVyPihtYXhDb25uZWN0cywgbWF4VG90YWxDb25uZWN0aW9u
cywgbWF4SG9zdENvbm5lY3Rpb25zKTsKKyAgICBtX3NjaGVkdWxlciA9IG1ha2VVbmlxdWU8Q3Vy
bFJlcXVlc3RTY2hlZHVsZXI+KG1heENvbm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhI
b3N0Q29ubmVjdGlvbnMpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fdmVyYm9zZSA9IGVudlZh
ci5kZWZpbmVkKCJERUJVR19DVVJMIik7CkBAIC0zMzYsNyArMzM2LDcgQEAgQ1VSTGNvZGUgQ3Vy
bEhhbmRsZTo6d2lsbFNldHVwU3NsQ3R4KHZvaWQqIHNzbEN0eCkKICAgICAgICAgcmV0dXJuIENV
UkxFX0FCT1JURURfQllfQ0FMTEJBQ0s7CiAKICAgICBpZiAoIW1fc3NsVmVyaWZpZXIpCi0gICAg
ICAgIG1fc3NsVmVyaWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxTU0xWZXJpZmllcj4oc3Ns
Q3R4KTsKKyAgICAgICAgbV9zc2xWZXJpZmllciA9IG1ha2VVbmlxdWU8Q3VybFNTTFZlcmlmaWVy
Pihzc2xDdHgpOwogCiAgICAgcmV0dXJuIENVUkxFX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNw
cAppbmRleCA5ZmM2NmVjMDIwZTI5OTZkMzhkMDYwYWQ3OGQzNmYxMTRhZTQ4MWM2Li43ODVkNmNi
OGU2ZGM4ZmFmZThlODEwZGZiZmRmNGNlNzYyZjRiMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNw
cApAQCAtNzcsNyArNzcsNyBAQCBjb25zdCBWZWN0b3I8Y2hhcj4qIEN1cmxGb3JtRGF0YVN0cmVh
bTo6Z2V0UG9zdERhdGEoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9w
b3N0RGF0YSkKLSAgICAgICAgbV9wb3N0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPGNo
YXI+PihtX2Zvcm1EYXRhLT5mbGF0dGVuKCkpOworICAgICAgICBtX3Bvc3REYXRhID0gbWFrZVVu
aXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7CiAKICAgICByZXR1cm4g
bV9wb3N0RGF0YS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBhOGJiOGQ4
MWE3YWJkNzE3NDNiZDM5NWRjYzg2NjMxNzlmZGUyZDU1Li5jY2RiYjI4MjM5ZjIyYzM2MzZjYWMx
NGIwNzg1ZDZmNTVhYjJmNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXJsTXVsdGlwYXJ0SGFuZGxlPiBDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpjcmVhdGVJZk5lZWRlZChDdXJsTXVsCiAgICAgaWYgKCFib3VuZGFyeSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDdXJsTXVs
dGlwYXJ0SGFuZGxlPihjbGllbnQsICpib3VuZGFyeSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Q3VybE11bHRpcGFydEhhbmRsZT4oY2xpZW50LCAqYm91bmRhcnkpOwogfQogCiBPcHRpb25hbDxT
dHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeShjb25zdCBDdXJsUmVz
cG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMDcwMzRiYjYyZDdiYmU2NDBkNGY4MDFjNGUx
ODQyMjNkZjI0MTNkYy4uYjJhMjJkYTIyZDZjMDE1NTUwNzU5OTVmNmI4MzA4NmZlYTgxZmUwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FsbENsaWVu
dChGdW5jdGlvbjx2b2lkKEN1cmxSZXF1ZXN0JiwgQ3VybFJlcXVlc3RDbGllbnQmKT4mJgogdm9p
ZCBDdXJsUmVxdWVzdDo6cnVuT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQog
ewogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKKyAg
ICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+
KFdURk1vdmUodGFzaykpKTsKICAgICBlbHNlIGlmIChpc01haW5UaHJlYWQoKSkKICAgICAgICAg
dGFzaygpOwogICAgIGVsc2UKQEAgLTIwNSw3ICsyMDUsNyBAQCBDVVJMKiBDdXJsUmVxdWVzdDo6
c2V0dXBUcmFuc2ZlcigpCiAgICAgYXV0byBodHRwSGVhZGVyRmllbGRzID0gbV9yZXF1ZXN0Lmh0
dHBIZWFkZXJGaWVsZHMoKTsKICAgICBhcHBlbmRBY2NlcHRMYW5ndWFnZUhlYWRlcihodHRwSGVh
ZGVyRmllbGRzKTsKIAotICAgIG1fY3VybEhhbmRsZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybEhh
bmRsZT4oKTsKKyAgICBtX2N1cmxIYW5kbGUgPSBtYWtlVW5pcXVlPEN1cmxIYW5kbGU+KCk7CiAK
ICAgICBtX2N1cmxIYW5kbGUtPnNldFVybChtX3JlcXVlc3QudXJsKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
U2NoZWR1bGVyLmNwcAppbmRleCA5MTgzN2FmOWYzZTQ3NzNiNWM3MWMxYzI2MGRiOTZmNTg2YjIx
MWFmLi4zYWE1ZjUyZGI2MjdhYmIwZWNjYWYyOTIxM2RjZTEyZmJjNmZiYzkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdFNjaGVkdWxlci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2No
ZWR1bGVyOjp3b3JrZXJUaHJlYWQoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgbV9jdXJsTXVsdGlIYW5kbGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aUhhbmRs
ZT4oKTsKKyAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IG1ha2VVbmlxdWU8Q3VybE11bHRpSGFuZGxl
PigpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhDb25uZWN0cyhtX21heENvbm5lY3Rz
KTsKICAgICBtX2N1cmxNdWx0aUhhbmRsZS0+c2V0TWF4VG90YWxDb25uZWN0aW9ucyhtX21heFRv
dGFsQ29ubmVjdGlvbnMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRNYXhIb3N0Q29ubmVj
dGlvbnMobV9tYXhIb3N0Q29ubmVjdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCA0
N2IzNzgzZTY0NjI5YTkyZWU4ZGE0MGJkNDc5NzBjNzk2ZWE1NDg2Li43MDdkMGE2NjNhNzE4NmRi
MTA1MDRkZGMyODY2Yjc2OTc3ZDM0YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMTYz
LDcgKzE2Myw3IEBAIFJlZjxDdXJsUmVxdWVzdD4gUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUN1cmxS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlCiBDdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZSogUmVzb3VyY2VIYW5kbGU6OmRlbGVnYXRlKCkKIHsKICAgICBpZiAoIWQtPm1fZGVs
ZWdhdGUpCi0gICAgICAgIGQtPm1fZGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlPigqdGhpcyk7CisgICAgICAgIGQtPm1fZGVsZWdhdGUgPSBtYWtl
VW5pcXVlPEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlPigqdGhpcyk7CiAKICAgICByZXR1cm4g
ZC0+bV9kZWxlZ2F0ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwu
Y3BwCmluZGV4IGEzNjdmZGE2MmE2ZDIxMmE0OTU1ZTY4ODljNjU3MjBjOWVmYWYyMWIuLjEzYTgz
MmMyNjY5YjRjZThjYmViZjMxMzRiYTA4OWQ5MDJkZmE5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6c3RvcFRocmVhZCgpCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNh
bGxPbldvcmtlclRocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIG1fdGFza1F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUodGFzaykpKTsKKyAgICBtX3Rhc2tRdWV1ZS5hcHBl
bmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHRhc2spKSk7CiB9CiAKIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6ZXhlY3V0ZVRhc2tzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpp
bmRleCBkZTBiN2UxZjE4N2I1MDc2NWE5ZDE3YzJlYzRlYzgwMzNkODNmMzQxLi5mMTBlYjYyNWVh
MDgxMzAyOTI3ODA3Y2VjMWUyZmY2ZTczZjI0YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1
ZXVlRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC02MSw3
ICs2MSw3IEBAIC0gKHZvaWQpY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOihGdW5jdGlvbjx2b2lk
KCk+JiYpZnVuY3Rpb24KIHsKICAgICAvLyBTeW5jIHhociB1c2VzIHRoZSBtZXNzYWdlIHF1ZXVl
LgogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgcmV0dXJuIG1fbWVzc2FnZVF1ZXVl
LT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKGZ1bmN0
aW9uKSkpOworICAgICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVl
PEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CiAKICAgICAvLyBUaGlzIGlz
IHRoZSBjb21tb24gY2FzZS4KICAgICBpZiAoIXNjaGVkdWxlZFdpdGhDdXN0b21SdW5Mb29wTW9k
ZShtX3NjaGVkdWxlZFBhaXJzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3VwLmNwcAppbmRleCA0YmIzMGE4
NzFkZTU3MDM5YjdiNzE5MzRmZWMzNzYzYTVhNGE4MmQ5Li5kNGJhNGU5NTA0MTViYjQwNmJhYmMw
MWI2ZDIwYzY2ZDRmODRiMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TUmVzb2x2ZVF1ZXVlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwCkBAIC0xODYsNyAr
MTg2LDcgQEAgdm9pZCBETlNSZXNvbHZlUXVldWVTb3VwOjpyZXNvbHZlKGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUsIHVpbnQ2NF90IGlkZW50aWZpZXIsIEQKIAogICAgIGdfb2JqZWN0X3NldF9kYXRh
KEdfT0JKRUNUKGFkZHJlc3MuZ2V0KCkpLCAiaWRlbnRpZmllciIsIEdVSU5UX1RPX1BPSU5URVIo
aWRlbnRpZmllcikpOwogCi0gICAgbV9jb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnMuYWRkKGlk
ZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8RE5TUmVzb2x2ZVF1ZXVlU291cDo6Q29tcGxldGlv
bkFuZENhbmNlbEhhbmRsZXJzPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShj
YW5jZWxsYWJsZSkpKTsKKyAgICBtX2NvbXBsZXRpb25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRl
bnRpZmllciwgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8RE5TUmVzb2x2ZVF1ZXVl
U291cDo6Q29tcGxldGlvbkFuZENhbmNlbEhhbmRsZXJzPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgV1RGTW92ZShjYW5jZWxsYWJsZSkpKTsKIH0KIAogdm9pZCBETlNSZXNvbHZlUXVldWVT
b3VwOjpzdG9wUmVzb2x2ZSh1aW50NjRfdCBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdl
U2Vzc2lvblNvdXAuY3BwCmluZGV4IDBhNzI3MjQ3ZGZhZmMxODgxZjFhMmM0NTg4MWRlNDFmYjM0
OWUyMjcuLjBiMWI3Y2ZmNTFmOWViZTEyOTgyZTE2ZWM1OGY2ZTg2NjM0NzQ4Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q3JlZGVudGlhbEZyb21QZXJzaXN0ZW50U3RvcmFnZShj
b25zdCBQcm90ZWN0aW9uUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBkYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxTZWNyZXRTZXJ2aWNlU2VhcmNoRGF0YT4oY2FuY2VsbGFibGUs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVl
PFNlY3JldFNlcnZpY2VTZWFyY2hEYXRhPihjYW5jZWxsYWJsZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIHNlY3JldF9zZXJ2aWNlX3NlYXJjaChudWxscHRyLCBTRUNSRVRfU0NI
RU1BX0NPTVBBVF9ORVRXT1JLLCBhdHRyaWJ1dGVzLmdldCgpLAogICAgICAgICBzdGF0aWNfY2Fz
dDxTZWNyZXRTZWFyY2hGbGFncz4oU0VDUkVUX1NFQVJDSF9VTkxPQ0sgfCBTRUNSRVRfU0VBUkNI
X0xPQURfU0VDUkVUUyksIGNhbmNlbGxhYmxlLAogICAgICAgICBbXShHT2JqZWN0KiBzb3VyY2Us
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKaW5kZXggMTBmZWNiYzQxOTQ3OTVmMzJk
MWNhN2U3NjA5YWM0ZmYyMDkyY2QyMy4uYWFmZWQzZGU3OWI5OWFhYzQ3NjljNzZiNTVmNmMxY2Ji
NjYxYjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVz
b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5o
CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBCaWRpUmVzb2x2ZXJCYXNlPEl0ZXJhdG9yLCBSdW4s
IERlcml2ZWRDbGFzcz46OmFwcGVuZFJ1bkludGVybmFsKCkKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChlbmRPZmZzZXQgPj0gc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICBtX3J1bnMuYXBwZW5k
UnVuKHN0ZDo6bWFrZV91bmlxdWU8UnVuPihzdGFydE9mZnNldCwgZW5kT2Zmc2V0ICsgMSwgY29u
dGV4dCgpLCBtX2RpcmVjdGlvbikpOworICAgICAgICAgICAgbV9ydW5zLmFwcGVuZFJ1bihtYWtl
VW5pcXVlPFJ1bj4oc3RhcnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJl
Y3Rpb24pKTsKIAogICAgICAgICBtX2Vvci5pbmNyZW1lbnQoKTsKICAgICAgICAgbV9zb3IgPSBt
X2VvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNV
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAppbmRleCA1
OWUxZmM3MmEyYmYyOTY5NDVhODZmODU1MmI4NjM3NmE5ZWE1ODZkLi4yYzhjY2U3MzA4OGZhNWFk
MGNmNTk1OWNjZTRmOTY5MWJmMzU3YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9Mb2NhbGVJQ1UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBpY3U7CiAK
IHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcm
IGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVJQ1U+KGxvY2Fs
ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVJ
Q1U+KGxvY2FsZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogTG9jYWxlSUNVOjpMb2Nh
bGVJQ1UoY29uc3QgY2hhciogbG9jYWxlKQpAQCAtMTYzLDIyICsxNjMsMjIgQEAgc3RhdGljIFN0
cmluZyBnZXREYXRlRm9ybWF0UGF0dGVybihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCkK
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZl
Y3Rvcihjb25zdCBVRGF0ZUZvcm1hdCogZGF0ZUZvcm1hdCwgVURhdGVGb3JtYXRTeW1ib2xUeXBl
IHR5cGUsIGludDMyX3Qgc3RhcnRJbmRleCwgaW50MzJfdCBzaXplKQogewogICAgIGlmICghZGF0
ZUZvcm1hdCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGlm
ICh1ZGF0X2NvdW50U3ltYm9scyhkYXRlRm9ybWF0LCB0eXBlKSAhPSBzdGFydEluZGV4ICsgc2l6
ZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogCi0gICAgYXV0byBs
YWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFi
ZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVD
YXBhY2l0eShzaXplKTsKICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
ICAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIGludDMy
X3QgbGVuZ3RoID0gdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5cGUsIHN0YXJ0SW5kZXgg
KyBpLCAwLCAwLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxT
dHJpbmc+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+
KCk7CiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAgICAgICAgIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgdWRhdF9nZXRTeW1ib2xzKGRhdGVGb3JtYXQsIHR5
cGUsIHN0YXJ0SW5kZXggKyBpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsICZzdGF0dXMpOwogICAg
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICBsYWJlbHMtPmFwcGVuZChTdHJpbmc6OmFkb3B0
KFdURk1vdmUoYnVmZmVyKSkpOwogICAgIH0KICAgICByZXR1cm4gV1RGTW92ZShsYWJlbHMpOwpA
QCAtMTg2LDcgKzE4Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gTG9jYWxl
SUNVOjpjcmVhdGVMYWJlbFZlY3Rvcihjb25zdCBVRGF0ZUZvcm1hdCoKIAogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tNb250aExhYmVscygpCiB7
Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwor
ICAgIGF1dG8gbGFiZWxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJl
bHMtPnJlc2VydmVDYXBhY2l0eShXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSkp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9u
dGhGdWxsTmFtZSk7ICsraSkKICAgICAgICAgbGFiZWxzLT5hcHBlbmQoV1RGOjptb250aEZ1bGxO
YW1lW2ldKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgTG9jYWxl
SUNVOjptb250aExhYmVscygpCiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmlu
Zz4+IGNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscygpCiB7Ci0gICAgYXV0byBsYWJlbHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgIGF1dG8gbGFiZWxzID0gbWFrZVVu
aXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eSgyKTsK
ICAgICBsYWJlbHMtPmFwcGVuZCgiQU0iKTsKICAgICBsYWJlbHMtPmFwcGVuZCgiUE0iKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCmluZGV4IGJiNmIyNmJh
NTljYjM2Yjk4OWI3ZTZmNTg2MzBjN2E3YjNiNTZlYTcuLjc4MTVhNDc4ZTAyOTc0NTU5NjU3NmMy
ZGVkMjIxMTkzNmFhOTZhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGVOb25lLmNwcApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBMb2NhbGVOb25lIDogcHVibGljIExv
Y2FsZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0
b21TdHJpbmcmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZU5vbmU+KCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlTm9uZT4oKTsKIH0KIAogTG9jYWxlTm9uZTo6
fkxvY2FsZU5vbmUoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY0lDVS5jcHAKaW5kZXggZjhlMTY3MDg0OWE5NTg5OGExNDU3YmM5OGRhOTFlNGJk
ZTc4NGM3OS4uZTVmMjgxNjZjNmRkMzRiYzUzNTA5YjZhMDAyMGE4ODg5MDdjMmNlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcApAQCAtMTU2LDQz
ICsxNTYsNDMgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1Jl
Z2lzdHJhciByZWdpc3RyYXIpCiAgICAgICAgIC8vIGh0dHA6Ly9kZW1vLmljdS1wcm9qZWN0Lm9y
Zy9pY3UtYmluL2NvbnZleHAKICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIndpbmRvd3MtODc0
IikpIHsKICAgICAgICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3Mt
ODc0LTIwMDAiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJ
Q1U+KG5hbWUsICJ3aW5kb3dzLTg3NC0yMDAwIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ3aW5k
b3dzLTk0OSIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3
aW5kb3dzLTk0OS0yMDAwIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4
dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDktMjAwMCIpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNtcChuYW1l
LCAieC1tYWMtY3lyaWxsaWMiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1l
XSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNV
PihuYW1lLCAibWFjb3MtN18zLTEwLjIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy03XzMtMTAuMiIpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0cmNt
cChuYW1lLCAieC1tYWMtZ3JlZWsiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtu
YW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVj
SUNVPihuYW1lLCAibWFjb3MtNl8yLTEwLjQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy02XzItMTAuNCIpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoIXN0
cmNtcChuYW1lLCAieC1tYWMtY2VudHJhbGV1cnJvbWFuIikpIHsKICAgICAgICAgICAgIHJlZ2lz
dHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTI5LTEwLjIiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0yOS0xMC4yIik7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAg
ICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy10dXJraXNoIikpIHsKICAgICAgICAgICAgIHJl
Z2lzdHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29zLTM1LTEwLjIiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy0zNS0xMC4y
Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghc3RyY21wKG5hbWUsICJFVUMtS1IiKSkgewogICAgICAgICAgICAgcmVnaXN0
cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvZGVjSUNVPihuYW1lLCAid2luZG93cy05NDkiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OSIpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMjAxLDcg
KzIwMSw3IEBAIHZvaWQgVGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdp
c3RyYXIgcmVnaXN0cmFyKQogICAgICAgICBjb25zdCBjaGFyKiBjYW5vbmljYWxDb252ZXJ0ZXJO
YW1lID0gdWNudl9nZXRDYW5vbmljYWxOYW1lKG5hbWUsICJJQU5BIiwgJmVycm9yKTsKICAgICAg
ICAgQVNTRVJUKFVfU1VDQ0VTUyhlcnJvcikpOwogICAgICAgICByZWdpc3RyYXIobmFtZSwgW25h
bWUsIGNhbm9uaWNhbENvbnZlcnRlck5hbWVdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZSk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsIGNhbm9uaWNh
bENvbnZlcnRlck5hbWUpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKaW5kZXggOTMxNDUzMzI4YTZm
NjY5NDg1ZWUwMWY4YTRlMmNlZGU1MDI2NzdmZi4uOTJjNjYxM2NiMWZjYzBlMzA4YTczYzM1MGE5
ZTA3ZWY3NzM0NjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNMYXRpbjEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjTGF0aW4xLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFRleHRDb2RlY0xhdGluMTo6
cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2
b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJl
Z2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIndpbmRvd3MtMTI1MiIsIFtdIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjTGF0aW4xPigpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNMYXRpbjE+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjUmVwbGFjZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAK
aW5kZXggMTc2NWJmNzkyMTU5NzViMTU3YzhiM2Y3NGM1NTcyYzQ3MWUyMTE0MS4uYzhiNTU4Yzhj
YTJkM2FmZDMwMjE0YmNmYzM3YTE0NTc3NTZhMTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgdm9pZCBUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJFbmNvZGluZ05hbWVzKEVu
Y29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIKIHZvaWQgVGV4dENvZGVjUmVwbGFjZW1lbnQ6
OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVn
aXN0cmFyKCJyZXBsYWNlbWVudCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvZGVjUmVwbGFjZW1lbnQ+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRl
eHRDb2RlY1JlcGxhY2VtZW50PigpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCmluZGV4IGJlMDA2NTY0NDY0OGZjZTBj
Mzc5ZDNjNzQzZWUyMjdlYTllZGE2ZjQuLjkwYzQ0NzVkMDIwYjlmNDcxYjViZTc3YzNjYWFjMGZk
Yzk4Y2JhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjVVRGMTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VVRGMTYuY3BwCkBAIC01NCwxMCArNTQsMTAgQEAgdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0
ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lkIFRl
eHRDb2RlY1VURjE2OjpyZWdpc3RlckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFy
KQogewogICAgIHJlZ2lzdHJhcigiVVRGLTE2TEUiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjE2Pih0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VGV4dENvZGVjVVRGMTY+KHRydWUpOwogICAgIH0pOwogICAgIHJlZ2lzdHJhcigiVVRG
LTE2QkUiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VU
RjE2PihmYWxzZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjE2Pihm
YWxzZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVVRGOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjguY3BwCmluZGV4IGEzZGFkNGU5ZDE2Mzc2ODYzMDg4YjE5NzEwZjgzOWRiYmZm
ZWE4ZGQuLmUxZDBhNTNjNzE3YWFlNzM5OTM5ZjUxYzRkMzI5MzQ1YWY4OWNhZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcApAQCAtNTcsNyAr
NTcsNyBAQCB2b2lkIFRleHRDb2RlY1VURjg6OnJlZ2lzdGVyRW5jb2RpbmdOYW1lcyhFbmNvZGlu
Z05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQogdm9pZCBUZXh0Q29kZWNVVEY4OjpyZWdpc3RlckNv
ZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigiVVRG
LTgiLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1VURjg+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VURjg+KCk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VXNlckRlZmluZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNV
c2VyRGVmaW5lZC5jcHAKaW5kZXggMjk2YzQ2OWYxNjlmYjkxMWRjOGRiZDdhNjQ3ZWE1NjQxZTJm
ZmUxOS4uNDhhZGJhOWQ0YjFhN2E5YTY1OGFlZjlkZmFkZjg1YWRkZTlkY2Y1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJF
bmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIKIHZvaWQgVGV4dENv
ZGVjVXNlckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7CiAgICAgcmVnaXN0cmFyKCJ4LXVzZXItZGVmaW5lZCIsIFtdIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVXNlckRlZmluZWQ+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY1VzZXJEZWZpbmVkPigpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5kZXggYTUx
N2JlMzQxZjZhYzRiZThlODkzY2ZhZDdjMjI4ODQ1ZDZhODI4MC4uMmIzZDAzYTM4YTVkMjAxYmI2
ZGNiOGViZTQ0ZjQ2ZmVlZmM2N2UwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
TG9jYWxlPiBkZXRlcm1pbmVMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5p
cXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMb2NhbGVNYWM+KGRldGVybWluZUxvY2Fs
ZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVN
YWM+KGRldGVybWluZUxvY2FsZShsb2NhbGUuc3RyaW5nKCkpLmdldCgpKTsKIH0KIAogc3RhdGlj
IFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGNyZWF0ZURhdGVUaW1lRm9ybWF0dGVyKE5TTG9j
YWxlKiBsb2NhbGUsIE5TQ2FsZW5kYXIqIGNhbGVuZGFyLCBOU0RhdGVGb3JtYXR0ZXJTdHlsZSBk
YXRlU3R5bGUsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIHRpbWVTdHlsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IDZhMTYwZGVjY2ZjOTI2
YWVmMzdkZTIzZTk3ZjYyZThmNWM2NzkwNmEuLmFhMDBhNGFkNmY1YjU5OTgyYjZiNDc3MzE3MWM4
YmM3YzAzMzkwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2lu
L0xvY2FsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9j
YWxlV2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgTENJRCBMQ0lERnJvbUxvY2FsZShj
b25zdCBBdG9tU3RyaW5nJiBsb2NhbGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2Fs
ZTo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxMb2NhbGVXaW4+KExDSURGcm9tTG9jYWxlKGxvY2FsZSkpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPExvY2FsZVdpbj4oTENJREZyb21Mb2NhbGUobG9jYWxlKSk7CiB9CiAKIGlu
bGluZSBMb2NhbGVXaW46OkxvY2FsZVdpbihMQ0lEIGxjaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcAppbmRleCBhZjQ2OTEzOTA4MWU4
MGMxMjA3YjgyYzk3ZmRmYTNjNzcyMWE2NTExLi4yY2ViNDc1ZTVmYWViYjY3MGM3NDE0NDc1YTQ3
MjkyNDk1MmRjYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dp
bi9UZXh0Q29kZWNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2lu
L1RleHRDb2RlY1dpbi5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgVUlOVCBnZXRDb2Rl
UGFnZShjb25zdCBjaGFyKiBuYW1lKQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRleHRDb2Rl
Yz4gbmV3VGV4dENvZGVjV2luKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZv
aWQqKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb2RlY1dpbj4oZ2V0Q29k
ZVBhZ2UoZW5jb2RpbmcubmFtZSgpKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVj
V2luPihnZXRDb2RlUGFnZShlbmNvZGluZy5uYW1lKCkpKTsKIH0KIAogVGV4dENvZGVjV2luOjpU
ZXh0Q29kZWNXaW4oVUlOVCBjb2RlUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCmluZGV4
IGQxZGM2NzM2ODZmNjUxZTNlMDMyOTFiN2MwMmMzMWIwYzE2OWJiYzIuLmU3Y2Y3MTM3ZTMzYWE1
NWJmN2U1ODVlZTE2NGU2NzNkM2FhZWVjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3ZyL29wZW52ci9WUlBsYXRmb3JtTWFuYWdlck9wZW5WUi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSLmNwcApA
QCAtMzUsNyArMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI+
IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpjcmVhdGUoKQogICAgIGlmICghdnI6OlZSX0lzUnVu
dGltZUluc3RhbGxlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSPigpOwogfQogCiBWUlBsYXRmb3JtTWFu
YWdlck9wZW5WUjo6flZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSKCkKQEAgLTc4LDcgKzc4LDcgQEAg
VmVjdG9yPFdlYWtQdHI8VlJQbGF0Zm9ybURpc3BsYXk+PiBWUlBsYXRmb3JtTWFuYWdlck9wZW5W
Ujo6Z2V0VlJEaXNwbGF5cygpCiAKICAgICBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxh
eT4+IGRpc3BsYXlzOwogICAgIGlmICghbV9kaXNwbGF5KQotICAgICAgICBtX2Rpc3BsYXkgPSBz
dGQ6Om1ha2VfdW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hhcGVy
b25lLCBjb21wb3NpdG9yKTsKKyAgICAgICAgbV9kaXNwbGF5ID0gbWFrZVVuaXF1ZTxWUlBsYXRm
b3JtRGlzcGxheU9wZW5WUj4obV9zeXN0ZW0sIGNoYXBlcm9uZSwgY29tcG9zaXRvcik7CiAgICAg
ZGlzcGxheXMuYXBwZW5kKG1ha2VXZWFrUHRyKCptX2Rpc3BsYXkpKTsKICAgICByZXR1cm4gZGlz
cGxheXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggYWJhZGRjN2ZiY2EyMzU5ZWZmNWI5ODExYzE5NWY2YjVhYmMxYmE4My4uMTY5Nzg1
NWZlNzJmNjM3ZTY1YWQ0Nzc3MmFmYTYxYzc0NzE5MjQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMg
TFJFU1VMVCBDQUxMQkFDSyBQYXN0ZWJvYXJkT3duZXJXbmRQcm9jKEhXTkQgaFduZCwgVUlOVCBt
ZXNzYWdlLCBXUEFSQU0gdwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICBhdXRvIHBhc3RlYm9hcmQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPigpOwogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gY2xpcGJvYXJkRGF0
YTsKICAgICBpZiAoIVNVQ0NFRURFRChPbGVHZXRDbGlwYm9hcmQoJmNsaXBib2FyZERhdGEpKSkK
ICAgICAgICAgY2xpcGJvYXJkRGF0YSA9IDA7CkBAIC0xMDYsMTYgKzEwNiwxNiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoKQog
ewogICAgIENPTVB0cjxXQ0RhdGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NEYXRhT2JqZWN0
OjpjcmVhdGVJbnN0YW5jZSgmZGF0YU9iamVjdCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UGFzdGVib2FyZD4oZGF0YU9iamVjdC5nZXQoKSk7CiB9CiAKIC8vIHN0YXRpYwogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0
IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBpZiAoZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBs
YXRmb3JtRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oZHJh
Z0RhdGEucGxhdGZvcm1EYXRhKCkpOwogICAgIC8vIEZJWE1FOiBTaG91bGQgYWRkIGEgY29uc3Qg
b3ZlcmxvYWQgb2YgZHJhZ0RhdGFNYXAgc28gd2UgZG9uJ3QgbmVlZCBhIGNvbnN0X2Nhc3QgaGVy
ZS4KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjb25zdF9jYXN0PERy
YWdEYXRhJj4oZHJhZ0RhdGEpLmRyYWdEYXRhTWFwKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAo
KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1NlYXJjaFBvcHVwTWVudURCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFy
Y2hQb3B1cE1lbnVEQi5jcHAKaW5kZXggMTk2NDljNTY2Y2ZjZjVmNDI0MzA5ZDFkOGQxMDBiMGI0
ZmY3NzBhOC4uNmY3ZjRiYTE2NjBiNGY3YTk3NzIxMmM4NTYzYTQzYzY2NWUzMGI1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCkBA
IC0yODQsNyArMjg0LDcgQEAgaW50IFNlYXJjaFBvcHVwTWVudURCOjpleGVjdXRlU2ltcGxlU3Fs
KGNvbnN0IFN0cmluZyYgc3FsLCBib29sIGlnbm9yZUVycm9yKQogCiBzdGQ6OnVuaXF1ZV9wdHI8
U1FMaXRlU3RhdGVtZW50PiBTZWFyY2hQb3B1cE1lbnVEQjo6Y3JlYXRlUHJlcGFyZWRTdGF0ZW1l
bnQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRl
bWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAg
IGludCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlRfVU5VU0VEKHJldCwg
cmV0ID09IFNRTElURV9PSyk7CiAgICAgcmV0dXJuIHN0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XQ0RhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAKaW5kZXggZGJmOTlhNDVjZTcwM2E5ZDg1
N2EwZTYwMTlkNjgwNmRkMTFmYTE3Yi4uMjQxMDAzYTEwMDMxYTNkN2U2ZDdhYTFlMjRhNDljYjk4
OTgyMGNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5j
cHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBTVERNRVRIT0RJTVAgV0NEYXRhT2JqZWN0OjpTZXREYXRh
KEZPUk1BVEVUQyogcGZvcm1hdGV0YywgU1RHTUVESVVNKiBwbWVkaXVtLCBCTwogICAgIGlmICgh
cGZvcm1hdGV0YyB8fCAhcG1lZGl1bSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAg
IGF1dG8gZmV0YyA9IHN0ZDo6bWFrZV91bmlxdWU8Rk9STUFURVRDPigpOworICAgIGF1dG8gZmV0
YyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1BVEVUQz4oKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBwU3RnTWVkKG5ldyBT
VEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRD
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IGMwMDRmYzllNzA0
YTZhZDMyMzQ5ZmI4MjRjZGM1ZGRkMDM2MDFiNWMuLjQ3OTgxYWU2OTkxZGM2NDkxNTIwZmM4MjQz
MmVjYzQ5NTg2NDQzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBA
IC0xMTEsNyArMTExLDcgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJl
ZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKIAogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGVmZmVjdDsKIAotICAgIGF1dG8gYnVpbGRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZpb3VzRWZmZWN0KTsKKyAgICBhdXRvIGJ1aWxkZXIg
PSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0VmZmVjdCk7CiAgICAgbV9z
b3VyY2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNlQWxwaGE6OmVmZmVjdE5h
bWUoKSk7CiAKICAgICBmb3IgKGF1dG8mIGVmZmVjdEVsZW1lbnQgOiBjaGlsZHJlbk9mVHlwZTxT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCpmaWx0ZXIpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAppbmRleCAwMTMzNzg3
ZDlkMzA2MmIxY2E3OWIxNjA3OTYzZjIwYzEwNzFlZDUzLi5iZDNjOWJlZTg3Mjk4NmVjNjFiMWEz
MGEwNDk1YjhjMGEyNmZkNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q29tcGxleExpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21w
bGV4TGluZUxheW91dC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHZvaWQgZGV0ZXJtaW5l
RGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyLCBJbmxpbmVJdGVyYXRvciBpdGVyKQog
CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGNyZWF0ZVJ1bihpbnQgc3RhcnQsIGlu
dCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJpZGlSdW4+KHN0YXJ0LCBlbmQsIG9iaiwg
cmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVy
LmRpcigpKTsKIH0KIAogdm9pZCBDb21wbGV4TGluZUxheW91dDo6YXBwZW5kUnVuc0Zvck9iamVj
dChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJP
YmplY3QmIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKQEAgLTEzMCwxMiArMTMw
LDEyIEBAIHZvaWQgQ29tcGxleExpbmVMYXlvdXQ6OmFwcGVuZFJ1bnNGb3JPYmplY3QoQmlkaVJ1
bkxpc3Q8QmlkaVJ1bj4qIHJ1bnMsIGludCBzdGFyCiBzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGlu
ZUJveD4gQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKQogewogICAgIGlm
IChpczxSZW5kZXJTVkdUZXh0PihtX2Zsb3cpKSB7Ci0gICAgICAgIGF1dG8gYm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxTVkdSb290SW5saW5lQm94Pihkb3duY2FzdDxSZW5kZXJTVkdUZXh0PihtX2Zs
b3cpKTsKKyAgICAgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRv
d25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOwogICAgICAgICBib3gtPnNldEhhc1ZpcnR1
YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBib3g7CiAgICAgfQogICAgICAgICAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSb290SW5saW5lQm94PihtX2Zsb3cpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFJvb3RJbmxpbmVCb3g+KG1fZmxvdyk7CiB9CiAKIFJvb3RJbmxp
bmVCb3gqIENvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVBbmRBcHBlbmRSb290SW5saW5lQm94KCkK
QEAgLTEwODUsNyArMTA4NSw3IEBAIGlubGluZSBCaWRpUnVuKiBDb21wbGV4TGluZUxheW91dDo6
aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpCiAgICAgICAgIHdo
aWxlIChCaWRpQ29udGV4dCogcGFyZW50ID0gYmFzZUNvbnRleHQtPnBhcmVudCgpKQogICAgICAg
ICAgICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJp
ZGlSdW4+IG5ld1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNw
YWNlLCB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVy
KCksIGJhc2VDb250ZXh0LCBVX09USEVSX05FVVRSQUwpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KGZpcnN0U3Bh
Y2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIo
KSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJBTCk7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VS
dW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4gPSBuZXdU
cmFpbGluZ1J1bi5nZXQoKTsKICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIpCkBAIC0xNjE3LDcgKzE2MTcsNyBAQCB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjpsaW5r
VG9FbmRMaW5lSWZOZWVkZWQoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKICAgICAgICAg
aWYgKGxheW91dFN0YXRlLmNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lKCkpIHsKICAgICAgICAg
ICAgIExheW91dFVuaXQgYm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dp
Y2FsQm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9t
TGF5b3V0T3ZlcmZsb3cgPSBsYXN0Um9vdEJveCgpLT5sb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZs
b3coKTsKLSAgICAgICAgICAgIGF1dG8gbmV3TGluZUJveCA9IHN0ZDo6bWFrZV91bmlxdWU8VHJh
aWxpbmdGbG9hdHNSb290SW5saW5lQm94PihtX2Zsb3cpOworICAgICAgICAgICAgYXV0byBuZXdM
aW5lQm94ID0gbWFrZVVuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxvdyk7
CiAgICAgICAgICAgICBhdXRvIHRyYWlsaW5nRmxvYXRzTGluZUJveCA9IG5ld0xpbmVCb3guZ2V0
KCk7CiAgICAgICAgICAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94KFdURk1vdmUobmV3TGlu
ZUJveCkpOwogICAgICAgICAgICAgdHJhaWxpbmdGbG9hdHNMaW5lQm94LT5zZXRDb25zdHJ1Y3Rl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRl
eCA0Y2RkMTM5YzQ4NzUxNmVhMGU3YjEyMTNiNzAzYmQzNDI3YWIwMThjLi5hNmM2NDgxOGM0OTc0
NTYwOTBmNjYyM2MzMDRiNWQ2Mjc3MDdhZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBGbG9hdGluZ09iamVjdDo6
RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94JiByZW5kZXJlciwgVHlwZSB0eXBlLCBjb25zdCBMYXlv
dXRSZWN0JgogCiBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0
OjpjcmVhdGUoUmVuZGVyQm94JiByZW5kZXJlcikKIHsKLSAgICBhdXRvIG9iamVjdCA9IHN0ZDo6
bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKKyAgICBhdXRvIG9iamVjdCA9
IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJlbmRlcmVyKTsKICAgICBvYmplY3QtPnNldFNo
b3VsZFBhaW50KCFyZW5kZXJlci5oYXNTZWxmUGFpbnRpbmdMYXllcigpKTsgLy8gSWYgYSBsYXll
ciBleGlzdHMsIHRoZSBmbG9hdCB3aWxsIHBhaW50IGl0c2VsZi4gT3RoZXJ3aXNlIHNvbWVvbmUg
ZWxzZSB3aWxsLgogICAgIG9iamVjdC0+c2V0SXNEZXNjZW5kYW50KHRydWUpOwogICAgIHJldHVy
biBvYmplY3Q7CkBAIC04MywxMiArODMsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2Jq
ZWN0PiBGbG9hdGluZ09iamVjdDo6Y3JlYXRlKFJlbmRlckJveCYgcmVuZGVyZXIpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNvcHlUb05ld0NvbnRh
aW5lcihMYXlvdXRTaXplIG9mZnNldCwgYm9vbCBzaG91bGRQYWludCwgYm9vbCBpc0Rlc2NlbmRh
bnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRpbmdPYmplY3Q+
KHJlbmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0g
b2Zmc2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQs
IGlzRGVzY2VuZGFudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RmxvYXRpbmdPYmplY3Q+KHJl
bmRlcmVyKCksIHR5cGUoKSwgTGF5b3V0UmVjdChmcmFtZVJlY3QoKS5sb2NhdGlvbigpIC0gb2Zm
c2V0LCBmcmFtZVJlY3QoKS5zaXplKCkpLCBtYXJnaW5PZmZzZXQoKSwgc2hvdWxkUGFpbnQsIGlz
RGVzY2VuZGFudCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4gRmxvYXRp
bmdPYmplY3Q6OmNsb25lRm9yTmV3UGFyZW50KCkgY29uc3QKIHsKLSAgICBhdXRvIGNsb25lT2Jq
ZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgp
LCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxkUGFpbnQsIG1faXNEZXNjZW5k
YW50KTsKKyAgICBhdXRvIGNsb25lT2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4o
cmVuZGVyZXIoKSwgdHlwZSgpLCBtX2ZyYW1lUmVjdCwgbV9tYXJnaW5PZmZzZXQsIG1fc2hvdWxk
UGFpbnQsIG1faXNEZXNjZW5kYW50KTsKICAgICBjbG9uZU9iamVjdC0+bV9wYWdpbmF0aW9uU3Ry
dXQgPSBtX3BhZ2luYXRpb25TdHJ1dDsKICAgICBjbG9uZU9iamVjdC0+bV9pc1BsYWNlZCA9IG1f
aXNQbGFjZWQ7CiAgICAgcmV0dXJuIGNsb25lT2JqZWN0OwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZv
aWQgRmxvYXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSgpCiAgICAgaWYgKG1f
c2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wbGFjZWRGbG9hdHNUcmVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CisgICAgbV9wbGFjZWRG
bG9hdHNUcmVlID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdFRyZWU+KCk7CiAgICAgZm9yIChh
dXRvIGl0ID0gbV9zZXQuYmVnaW4oKSwgZW5kID0gbV9zZXQuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+Z2V0KCk7
CiAgICAgICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkLmNwcAppbmRleCBjNzJkMDFkODFjN2Q3MTY2MTU3OWUzYmEwMTgzMGU0MjlkMzBmNjg4
Li4xZTkxMWFlNjBhNjEyNjg5YTQ5N2ZmMmQ1YjdmMGQ1MGI4N2UyOTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyaWRB
cmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tT
cGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0
aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7CiAg
ICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2
YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93U3Bh
biwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4g
cmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWRE
ZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNw
YW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5k
ZXggKyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+
IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5p
dGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3BhbiksIEdyaWRTcGFuOjp0
cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBtX2NvbHVtbkluZGV4ICsg
Y29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5jZSB0aGUgaXRlcmF0b3IgdG8gYXZv
aWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCByZXR1cm4gdGhlIHNhbWUgZ3JpZCBh
cmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3ZhcnlpbmdUcmFja0luZGV4OwogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggNWZjMzI4MTUzYTZkOGJmYzQ4ODNiYTUx
MjFjY2EwYmY2ZjJlOTlkMC4uNjYwOTA5OGY5Yzg3MDQ2ODgxMTQxOGFiMTc4Mjk0MTdiZWUyZDE5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdu
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdu
bWVudC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdyaWRCYXNlbGluZUFsaWdubWVudDo6
dXBkYXRlQmFzZWxpbmVBbGlnbm1lbnRDb250ZXh0KEl0ZW1Qb3NpdGlvbiBwcmVmZXJlbgogCiAg
ICAgLy8gTG9va2luZyBmb3IgYSBjb21wYXRpYmxlIGJhc2VsaW5lLXNoYXJpbmcgZ3JvdXAuCiAg
ICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJl
bmNlLCBhc2NlbnQsIGRlc2NlbnQpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxCYXNlbGluZUNvbnRleHQ+KGNoaWxkLCBwcmVmZXJlbmNlLCBhc2NlbnQs
IGRlc2NlbnQpOwogICAgIGVsc2UgewogICAgICAgICBhdXRvKiBjb250ZXh0ID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICAgICAgY29udGV4dC0+dXBkYXRlU2hhcmVkR3Jv
dXAoY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCmluZGV4IGFk
ZGVkYzQyOGIxZjJmZGIzNTAzZTgxMjYyNmI5NzY5M2EzZTdiNWYuLmIyYjAxMWJkZjc0OTFiMzVh
YjFkYmI3YWM2YjI2Mzk2MTcyMWNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCkBAIC02ODEsNyArNjgxLDcgQEAg
ZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0U2l6
ZShjb25zdCBWZWN0b3I8R3JpZFRyYWMKICAgICAgICAgICAgIGxlZnRPdmVyU3BhY2UgLT0gYmFz
ZVNpemU7CiAgICAgICAgICAgICBmbGV4RmFjdG9yU3VtIC09IGZsZXhGYWN0b3I7CiAgICAgICAg
ICAgICBpZiAoIXRyYWNrc1RvVHJlYXRBc0luZmxleGlibGUpCi0gICAgICAgICAgICAgICAgdHJh
Y2tzVG9UcmVhdEFzSW5mbGV4aWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tJbmRleFNldD4o
KTsKKyAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gbWFrZVVuaXF1
ZTxUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJs
ZS0+YWRkKGluZGV4KTsKICAgICAgICAgICAgIHZhbGlkRmxleEZhY3RvclVuaXQgPSBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMTI2MCwxMCArMTI2MCwxMCBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0Fs
Z29yaXRobTo6c2V0dXAoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWdu
ZQogICAgIG1fc2l6aW5nT3BlcmF0aW9uID0gc2l6aW5nT3BlcmF0aW9uOwogICAgIHN3aXRjaCAo
bV9zaXppbmdPcGVyYXRpb24pIHsKICAgICBjYXNlIEludHJpbnNpY1NpemVDb21wdXRhdGlvbjoK
LSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZWZpbml0ZVNpemVTdHJh
dGVneT4oKnRoaXMpOworICAgICAgICBtX3N0cmF0ZWd5ID0gbWFrZVVuaXF1ZTxJbmRlZmluaXRl
U2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHJhY2tTaXpp
bmc6Ci0gICAgICAgIG1fc3RyYXRlZ3kgPSBzdGQ6Om1ha2VfdW5pcXVlPERlZmluaXRlU2l6ZVN0
cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRlZ3kgPSBtYWtlVW5pcXVlPERlZmluaXRl
U2l6ZVN0cmF0ZWd5PigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDczYjM2NTQ3NjcxNDBhMDM3
MGU0ZDU2OTU2ZTU0ZjI2NzRiNThiMzYuLmIzYzQwMDc5MDJkZjYwNDg2MmE1YWM3YzI5OThjYmFk
NzNmMTEyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAK
QEAgLTk2LDcgKzk2LDcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRU
ZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faXNPdmVyV2lkZ2V0KG90aGVyLmlzT3ZlcldpZGdl
dCgpKQogewogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIGxpc3QgaGl0
IHRlc3QuCi0gICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9saXN0QmFzZWRUZXN0
UmVzdWx0ID8gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFzZWRUZXN0
UmVzdWx0KSA6IG51bGxwdHI7CisgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIubV9s
aXN0QmFzZWRUZXN0UmVzdWx0ID8gbWFrZVVuaXF1ZTxOb2RlU2V0Pigqb3RoZXIubV9saXN0QmFz
ZWRUZXN0UmVzdWx0KSA6IG51bGxwdHI7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6On5IaXRUZXN0UmVz
dWx0KCkgPSBkZWZhdWx0OwpAQCAtMTEzLDcgKzExMyw3IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRl
c3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICBtX2lz
T3ZlcldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwogCiAgICAgLy8gT25seSBjb3B5IHRo
ZSBOb2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RS
ZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5v
ZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xp
c3RCYXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5p
cXVlPE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIAog
ICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTY5MCwxNCArNjkwLDE0IEBAIHZvaWQgSGl0VGVzdFJl
c3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyLCBjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxCiBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0Ojps
aXN0QmFzZWRUZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJl
c3VsdCkKLSAgICAgICAgbV9saXN0QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxO
b2RlU2V0PigpOworICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5v
ZGVTZXQ+KCk7CiAgICAgcmV0dXJuICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKIEhpdFRl
c3RSZXN1bHQ6Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Om11dGFibGVMaXN0QmFzZWRUZXN0UmVz
dWx0KCkKIHsKICAgICBpZiAoIW1fbGlzdEJhc2VkVGVzdFJlc3VsdCkKLSAgICAgICAgbV9saXN0
QmFzZWRUZXN0UmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlU2V0PigpOworICAgICAgICBt
X2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBtYWtlVW5pcXVlPE5vZGVTZXQ+KCk7CiAgICAgcmV0dXJu
ICptX2xpc3RCYXNlZFRlc3RSZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUl0ZXJhdG9yLmgKaW5kZXggNDNjNjUzODc2Y2Y5ODRhNjJiNmZjOTI5NDVkM2RkNjkwY2Ez
ZWRiOS4uMTVmZGU1NGRlNWQzNDk5MjA4MmQ0MzlhMjkwYTUxZjkyNWNjMmQ3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAgLTQ5Myw3ICs0OTMsNyBAQCBz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIG51bWJlck9mSXNvbGF0ZUFuY2VzdG9ycyhjb25zdCBJbmxp
bmVJdGVyYXRvciYgaXRlcikKIC8vIG9mIEJpZGlSZXNvbHZlciB3aGljaCBrbm93cyBub3RoaW5n
IGFib3V0IFJlbmRlck9iamVjdHMuCiBzdGF0aWMgaW5saW5lIHZvaWQgYWRkUGxhY2Vob2xkZXJS
dW5Gb3JJc29sYXRlZElubGluZShJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBSZW5kZXJP
YmplY3QmIG9iaiwgdW5zaWduZWQgcG9zLCBSZW5kZXJFbGVtZW50JiByb290KQogewotICAgIHN0
ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBpc29sYXRlZFJ1biA9IHN0ZDo6bWFrZV91bmlxdWU8Qmlk
aVJ1bj4ocG9zLCBwb3MsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVkUnVuID0gbWFrZVVuaXF1ZTxC
aWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigp
KTsKICAgICAvLyBGSVhNRTogaXNvbGF0ZWRSdW5zKCkgY291bGQgYmUgYSBoYXNoIG9mIG9iamVj
dC0+cnVuIGFuZCB0aGVuIHdlIGNvdWxkIGNoZWFwbHkKICAgICAvLyBBU1NFUlQgaGVyZSB0aGF0
IHdlIGRpZG4ndCBjcmVhdGUgbXVsdGlwbGUgb2JqZWN0cyBmb3IgdGhlIHNhbWUgaW5saW5lLgog
ICAgIHJlc29sdmVyLnNldFdoaXRlc3BhY2VDb2xsYXBzaW5nVHJhbnNpdGlvbkZvcklzb2xhdGVk
UnVuKCppc29sYXRlZFJ1biwgcmVzb2x2ZXIud2hpdGVzcGFjZUNvbGxhcHNpbmdTdGF0ZSgpLmN1
cnJlbnRUcmFuc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xheWVyT3ZlcmxhcE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVy
bGFwTWFwLmNwcAppbmRleCA3OGZjMDg4NmFiZTE3ZGIxMTkwNGRmOGIxZmY3NmU5MjA4ZTk5ZTdi
Li45NmFmOTVhNDU1Njk1MGU4MTI2Yjk1MzczNTM0ZDQ3NmRhZTM1NjNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBA
IGJvb2wgTGF5ZXJPdmVybGFwTWFwOjpvdmVybGFwc0xheWVycyhjb25zdCBSZW5kZXJMYXllciYg
bGF5ZXIsIGNvbnN0IExheW91dFJlY3QmCiAKIHZvaWQgTGF5ZXJPdmVybGFwTWFwOjpwdXNoQ29t
cG9zaXRpbmdDb250YWluZXIoKQogewotICAgIG1fb3ZlcmxhcFN0YWNrLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPE92ZXJsYXBNYXBDb250YWluZXI+KG1fcm9vdExheWVyKSk7CisgICAgbV9vdmVy
bGFwU3RhY2suYXBwZW5kKG1ha2VVbmlxdWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4obV9yb290TGF5
ZXIpKTsKIH0KIAogdm9pZCBMYXllck92ZXJsYXBNYXA6OnBvcENvbXBvc2l0aW5nQ29udGFpbmVy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDRkYmEzZjFj
NDEwNWFmYjBlOGU0Yzc2YTdjZmNiOWU1ZmZmNzE4NTQuLjAwMTkyNTg4MmU1MDI4YzhhMjA5OWI0
YmJkZTM3MzE2NWI0YTI0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFja2VkUmVu
ZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAgICAgfQog
ICAgIAogICAgIGF1dG8mIGRlc2NlbmRhbnRTZXQgPSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNN
YXAtPmVuc3VyZSgmY29udGFpbmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldD4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CiAKICAgICBib29sIGFkZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKCZkZXNjZW5kYW50KS5p
c05ld0VudHJ5OwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIGluc2VydEludG9UcmFj
a2VkUmVuZGVyZXJNYXBzKGNvbnN0IFJlbmRlckJsb2NrJiBjb250YWluZXIsIFJlbmRlckJvCiAg
ICAgfQogICAgIAogICAgIGF1dG8mIGNvbnRhaW5lclNldCA9IHBlcmNlbnRIZWlnaHRDb250YWlu
ZXJNYXAtPmVuc3VyZSgmZGVzY2VuZGFudCwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrKj4+KCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2sqPj4oKTsKICAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIWNvbnRhaW5lclNldC0+Y29udGFpbnMoJmNvbnRhaW5l
cikpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFBvc2l0aW9uZWREZXNjZW5kYW50c01hcCB7
CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvJiBkZXNjZW5kYW50cyA9IG1fZGVzY2VuZGFudHNN
YXAuZW5zdXJlKCZjb250YWluaW5nQmxvY2ssIFtdIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0PigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+KCk7CiAgICAgICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgICAgICBib29sIGlzTmV3RW50cnkgPSBtb3ZlRGVz
Y2VuZGFudFRvRW5kID09IE1vdmVEZXNjZW5kYW50VG9FbmQ6OlllcyA/IGRlc2NlbmRhbnRzLT5h
cHBlbmRPck1vdmVUb0xhc3QoJnBvc2l0aW9uZWREZXNjZW5kYW50KS5pc05ld0VudHJ5CkBAIC01
MjgsNyArNTI4LDcgQEAgc3RhdGljIGlubGluZSBVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRU
cmFuc2FjdGlvbiogY3VycmVudFVwZGF0ZVNjcm9sbEluZm9BZnQKIHZvaWQgUmVuZGVyQmxvY2s6
OmJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKQogewogICAgIGlm
ICghdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpKQotICAgICAg
ICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCkgPSBzdGQ6Om1h
a2VfdW5pcXVlPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU3RhY2s+KCk7CisgICAgICAgIHVwZGF0
ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uU3RhY2soKSA9IG1ha2VVbmlxdWU8RGVs
YXllZFVwZGF0ZVNjcm9sbEluZm9TdGFjaz4oKTsKICAgICBpZiAodXBkYXRlU2Nyb2xsSW5mb0Fm
dGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5pc0VtcHR5KCkgfHwgY3VycmVudFVwZGF0ZVNj
cm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCktPnZpZXcgIT0gJnZpZXcoKSkKICAgICAg
ICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb25TdGFjaygpLT5hcHBlbmQo
VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24odmlldygpKSk7CiAgICAgKytj
dXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKS0+bmVzdGVkQ291
bnQ7CkBAIC02MjAsNyArNjIwLDcgQEAgc3RhdGljIFJlbmRlckJsb2NrUmFyZURhdGEmIGVuc3Vy
ZUJsb2NrUmFyZURhdGEoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrKQogICAgIAogICAgIGF1dG8m
IHJhcmVEYXRhID0gZ1JhcmVEYXRhTWFwLT5hZGQoJmJsb2NrLCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFyYXJlRGF0YSkKLSAgICAgICAgcmFyZURhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CisgICAgICAgIHJhcmVEYXRhID0gbWFrZVVu
aXF1ZTxSZW5kZXJCbG9ja1JhcmVEYXRhPigpOwogICAgIHJldHVybiAqcmFyZURhdGEuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5k
ZXggN2YxZTYzOTcwNjNiZTRmOGRmOWI1N2YxNzVkNmUyNmU3OGVmYjEzNC4uYjg2NDJkMTcyMDNi
ZDRiZjI1YmRlMTcxZjk4NzBhZjdkNWE0M2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFJlbmRlckJs
b2NrRmxvdzo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0JiByZQogICAgIG1fc2ltcGxlTGluZUxheW91dCA9IG51bGxwdHI7CiAKICAgICBpZiAo
IW1fY29tcGxleExpbmVMYXlvdXQpCi0gICAgICAgIG1fY29tcGxleExpbmVMYXlvdXQgPSBzdGQ6
Om1ha2VfdW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CisgICAgICAgIG1fY29tcGxl
eExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7CiAKICAg
ICBtX2NvbXBsZXhMaW5lTGF5b3V0LT5sYXlvdXRMaW5lQm94ZXMocmVsYXlvdXRDaGlsZHJlbiwg
cmVwYWludExvZ2ljYWxUb3AsIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKIH0KQEAgLTIwMTksNyAr
MjAxOSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRMaW5lR3JpZEJveCgpCiAgICAg
CiAgICAgc2V0TGluZUdyaWRCb3goMCk7CiAKLSAgICBhdXRvIGxpbmVHcmlkQm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxSb290SW5saW5lQm94PigqdGhpcyk7CisgICAgYXV0byBsaW5lR3JpZEJveCA9
IG1ha2VVbmlxdWU8Um9vdElubGluZUJveD4oKnRoaXMpOwogICAgIGxpbmVHcmlkQm94LT5zZXRI
YXNUZXh0Q2hpbGRyZW4oKTsgLy8gTmVlZGVkIHRvIG1ha2UgdGhlIGxpbmUgYXNjZW50L2Rlc2Nl
bnQgYWN0dWFsbHkgYmUgaG9ub3JlZCBpbiBxdWlya3MgbW9kZS4KICAgICBsaW5lR3JpZEJveC0+
c2V0Q29uc3RydWN0ZWQoKTsKICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01hcCB0
ZXh0Qm94RGF0YU1hcDsKQEAgLTIyNjAsNyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IFBh
aW50CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVGbG9hdGluZ09iamVjdHMoKQogewot
ICAgIG1fZmxvYXRpbmdPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdHM+
KCp0aGlzKTsKKyAgICBtX2Zsb2F0aW5nT2JqZWN0cyA9IG1ha2VVbmlxdWU8RmxvYXRpbmdPYmpl
Y3RzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09i
amVjdHMoKQpAQCAtMzY3Nyw3ICszNjc3LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3Vy
ZUxpbmVCb3hlcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9jb21wbGV4TGlu
ZUxheW91dCk7Ci0gICAgbV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29t
cGxleExpbmVMYXlvdXQ+KCp0aGlzKTsKKyAgICBtX2NvbXBsZXhMaW5lTGF5b3V0ID0gbWFrZVVu
aXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOwogCiAgICAgaWYgKFNpbXBsZUxpbmVMYXlv
dXQ6OmNhblVzZUZvckxpbmVCb3hUcmVlKCp0aGlzLCAqbV9zaW1wbGVMaW5lTGF5b3V0KSkgewog
ICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpnZW5lcmF0ZUxpbmVCb3hUcmVlKCp0aGlzLCAqbV9z
aW1wbGVMaW5lTGF5b3V0KTsKQEAgLTM3MzUsNyArMzczNSw3IEBAIFJlbmRlckJsb2NrRmxvdzo6
UmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFyZUJsb2Nr
Rmxvd0RhCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJlQmxvY2tGbG93RGF0
YSgpCiB7CiAgICAgQVNTRVJUKCFoYXNSYXJlQmxvY2tGbG93RGF0YSgpKTsKLSAgICBtX3JhcmVC
bG9ja0Zsb3dEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJs
b2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CisgICAgbV9yYXJlQmxvY2tGbG93RGF0YSA9IG1ha2VV
bmlxdWU8UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YT4oKnRoaXMpOwog
fQogCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggZGIzYTZkYThmMWEzMjE1MzcwMGU3MzQxN2QxMGY2YTQ4MTMwODM1
Zi4uOTY3N2RhZTljZmUyOGIxZGMzOTA1YzNhODJiMDZlYzZlY2RjZGM0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgQ29u
dHJvbFN0YXRlc1JlbmRlcmVyTWFwJiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKQogc3RhdGlj
IENvbnRyb2xTdGF0ZXMqIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJCb3gm
IHJlbmRlcmVyKQogewogICAgIHJldHVybiBjb250cm9sU3RhdGVzUmVuZGVyZXJNYXAoKS5lbnN1
cmUoJnJlbmRlcmVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRy
b2xTdGF0ZXM+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRyb2xTdGF0ZXM+KCk7
CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCkBAIC0yMTIyLDcgKzIxMjIsNyBA
QCBMYXlvdXRTaXplIFJlbmRlckJveDo6b2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50
JiBjb250YWluZXIsIGNvbnN0IExheW91dAogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVu
dEJveD4gUmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3goKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxJbmxpbmVFbGVtZW50Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpkaXJ0eUxp
bmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBiY2JhN2I0MTY4NWEzZjQxMjBjMWVlYTU0
NjEwMmY4MzZkNTZhYTI2Li45MDFjNDExMGUxYzU2YmE2MGE0ZGQzYmE3YjkzZmFhZjYwNDFjYjMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKQEAgLTI1MzgsNyArMjUzOCw3IEBAIGF1dG8gUmVuZGVyQm94TW9kZWxPYmplY3Q6OmVu
c3VyZUNvbnRpbnVhdGlvbkNoYWluTm9kZSgpIC0+IENvbnRpbnVhdGlvbkNoYWluTm9kCiB7CiAg
ICAgc2V0SGFzQ29udGludWF0aW9uQ2hhaW5Ob2RlKHRydWUpOwogICAgIHJldHVybiAqY29udGlu
dWF0aW9uQ2hhaW5Ob2RlTWFwKCkuZW5zdXJlKHRoaXMsIFsmXSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbkNoYWluTm9kZT4oKnRoaXMpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxDb250aW51YXRpb25DaGFpbk5vZGU+KCp0aGlzKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcAppbmRleCAyMjEwNDQzNGU0NWQ2Yzk4NDc2ZmZkMjlhYjU1MGJkNjJhYzQwOGZlLi5j
MWUwM2YwOTdlZjU5YWQ1YTE2YjE5NGM5YzA1ZDY0OWY3ZmYxNWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGlj
IENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IEF0b21TdHJpbmcmIGkKICAgICBpZiAocGxhY2UucGFyZW50KQogICAgICAgICBwbGFjZS5w
YXJlbnQtPmluc2VydEFmdGVyKG5ld05vZGUsIHBsYWNlLnByZXZpb3VzU2libGluZy5nZXQoKSwg
aWRlbnRpZmllcik7CiAKLSAgICBtYXBzLmFkZCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8
Q291bnRlck1hcD4oKSkuaXRlcmF0b3ItPnZhbHVlLT5hZGQoaWRlbnRpZmllciwgbmV3Tm9kZS5j
b3B5UmVmKCkpOworICAgIG1hcHMuYWRkKCZyZW5kZXJlciwgbWFrZVVuaXF1ZTxDb3VudGVyTWFw
PigpKS5pdGVyYXRvci0+dmFsdWUtPmFkZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7
CiAgICAgcmVuZGVyZXIuc2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7CiAKICAgICBpZiAobmV3
Tm9kZS0+cGFyZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYWdtZW50Q29udGFpbmVyLmNwcAppbmRleCA1MWE5ZTQ2ODQzNDRkMjYzN2QwNGE5MWZiNTlh
M2NkNmVmOGYwNmVkLi43ZjZjYWJjMDU5MTIxMDgxYzRkNzI4NjAyMTliZDRiOWM4NWI5NGY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRh
aW5lci5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBSZW5kZXJCb3hGcmFnbWVudEluZm8qIFJlbmRl
ckZyYWdtZW50Q29udGFpbmVyOjpzZXRSZW5kZXJCb3hGcmFnbWVudEluZm8oY29uc3QgUgogewog
ICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJveEZy
YWdtZW50SW5mbz4mIGJveEluZm8gPSBtX3JlbmRlckJveEZyYWdtZW50SW5mby5hZGQoYm94LCBz
dGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJveEZyYWdtZW50SW5mbz4obG9naWNhbExlZnRJbnNldCwg
bG9naWNhbFJpZ2h0SW5zZXQsIGNvbnRhaW5pbmdCbG9ja0NoYWluSXNJbnNldCkpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94
SW5mbyA9IG1fcmVuZGVyQm94RnJhZ21lbnRJbmZvLmFkZChib3gsIG1ha2VVbmlxdWU8UmVuZGVy
Qm94RnJhZ21lbnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29u
dGFpbmluZ0Jsb2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBi
b3hJbmZvLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYWdtZW50ZWRGbG93LmNwcAppbmRleCA0NGY1NjM1YmE1M2FlM2Y3ZTk0ZDdhYzhlNDk2NzM5
MGY1OGMyZTU2Li44NDZkZDNhMDJhYTg2YWFmNzE1YzA5NGU4YzM1MGMxNjZhODY3YjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAK
QEAgLTExMTUsNyArMTExNSw3IEBAIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBSZW5kZXJGcmFn
bWVudGVkRmxvdzo6Y3VycmVudEZyYWdtZW50KCkgY29uc3QKIENvbnRhaW5pbmdGcmFnbWVudE1h
cCYgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVudE1hcCgpCiB7CiAgICAg
aWYgKCFtX2xpbmVUb0ZyYWdtZW50TWFwKQotICAgICAgICBtX2xpbmVUb0ZyYWdtZW50TWFwID0g
c3RkOjptYWtlX3VuaXF1ZTxDb250YWluaW5nRnJhZ21lbnRNYXA+KCk7CisgICAgICAgIG1fbGlu
ZVRvRnJhZ21lbnRNYXAgPSBtYWtlVW5pcXVlPENvbnRhaW5pbmdGcmFnbWVudE1hcD4oKTsKIAog
ICAgIHJldHVybiAqbV9saW5lVG9GcmFnbWVudE1hcC5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IGI5MDQ1ZTY3OTA4NzNh
YmY4MWE5MGRmYTViYmIxMTA5M2M2NzdiMDIuLjUyYzc5MGQ0ZTU3ODliMTc4ZTI2YzhhYmQ4YmE3
YjEzY2M1OTE1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
ZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21l
dHJ5TWFwLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1
c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NCiAg
ICAgCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0
aW9uUG9zaXRpb25dOwogICAgIGlmICghdC5pc0ludGVnZXJUcmFuc2xhdGlvbigpKQotICAgICAg
ICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD4odCk7CisgICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0
aW9uTWF0cml4Pih0KTsKICAgICBlbHNlCiAgICAgICAgIHN0ZXAubV9vZmZzZXQgPSBMYXlvdXRT
aXplKHQuZSgpLCB0LmYoKSk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFJlbmRlckdlb21l
dHJ5TWFwOjpwdXNoVmlldyhjb25zdCBSZW5kZXJWaWV3KiB2aWV3LCBjb25zdCBMYXlvdXRTaXpl
JiBzY3JvbAogICAgIFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCA9IG1fbWFwcGluZ1ttX2lu
c2VydGlvblBvc2l0aW9uXTsKICAgICBzdGVwLm1fb2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OwogICAg
IGlmICh0KQotICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD4oKnQpOworICAgICAgICBzdGVwLm1fdHJhbnNmb3JtID0gbWFrZVVu
aXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKnQpOwogICAgIAogICAgIHN0ZXBJbnNlcnRlZChz
dGVwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBlMzVh
MmMxMzIyNWQ0NzI1Y2Q4OGMyMmY2ZDA0Y2NjOWQwZjM0OTdmLi40OWFkMDM1NTUzNzM0MjI1ZjFk
ZGQ2MzNiNDJjMTM4MzJjY2VmYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0lu
ZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFja3NGb3JBdXRvUmVwZWEKICAgICB1
bnNpZ25lZCBsYXN0QXV0b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sgKyBncmlk
LmF1dG9SZXBlYXRUcmFja3MoZGlyZWN0aW9uKTsKIAogICAgIGlmICghZ3JpZC5oYXNHcmlkSXRl
bXMoKSkgewotICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3Jk
ZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CisgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gbWFrZVVu
aXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCB0cmFj
a0luZGV4ID0gZmlyc3RBdXRvUmVwZWF0VHJhY2s7IHRyYWNrSW5kZXggPCBsYXN0QXV0b1JlcGVh
dFRyYWNrOyArK3RyYWNrSW5kZXgpCiAgICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcy0+YWRk
KHRyYWNrSW5kZXgpOwogICAgIH0gZWxzZSB7CkBAIC01NTIsNyArNTUyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBSZW5kZXJHcmlkOjpjb21wdXRlRW1wdHlUcmFj
a3NGb3JBdXRvUmVwZWEKICAgICAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBk
aXJlY3Rpb24sIHRyYWNrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFpdGVyYXRvci5uZXh0R3Jp
ZEl0ZW0oKSkgewogICAgICAgICAgICAgICAgIGlmICghZW1wdHlUcmFja0luZGV4ZXMpCi0gICAg
ICAgICAgICAgICAgICAgIGVtcHR5VHJhY2tJbmRleGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRl
cmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4
ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwogICAgICAgICAgICAgICAg
IGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTczMiw3ICs3MzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRl
ckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dAogICAgIGNv
bnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0Rp
cmVjdGlvbik7CiAgICAgdW5zaWduZWQgY3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3Np
dGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NE
aXJlY3Rpb24pOwogICAgIEdyaWRTcGFuIGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNw
YW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9m
Q3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0RpcmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMg
PyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVk
RGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVj
dGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JpZEFyZWE+KHNwZWNpZmll
ZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVj
aWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lm
aWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwogfQogCiB2b2lkIFJlbmRl
ckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29u
c3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODkxM2U3NmM5ZDYxYzlkMjU0MTk5MGE5
MDFiN2IwMjk0ZTQ4YWFkYy4uZjUxZTJmZWIzN2UxZmNmMGZkMGU3OTFhZTY0ZjAzZWU4OGEyYTdj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0xMzQsNyAr
MTM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVySW1hZ2U6OlJlbmRl
ckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2Uq
IHN0eWxlSW1hZ2UsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbykKICAgICA6IFJl
bmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBt
X2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUltYWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVy
SW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFr
ZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFr
ZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogICAgICwgbV9pbWFnZURldmljZVBpeGVs
UmF0aW8oaW1hZ2VEZXZpY2VQaXhlbFJhdGlvKQogewogICAgIHVwZGF0ZUFsdFRleHQoKTsKQEAg
LTE0NCw3ICsxNDQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bAogCiBSZW5kZXJJbWFnZTo6
UmVuZGVySW1hZ2UoRG9jdW1lbnQmIGRvY3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHls
ZUltYWdlKiBzdHlsZUltYWdlKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURk1v
dmUoc3R5bGUpLCBJbnRTaXplKCkpCi0gICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3R5bGVJbWFnZSA/
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U+KCpzdHlsZUlt
YWdlKSA6IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1f
aW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogbWFrZVVuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNl
PigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmlu
ZGV4IDlkOGE2NTkzNGJhM2ZkMjU0NzRjMzljOTFmZWVjNDNhYTBjOWY5ZjUuLjE1MzI1Y2RhMTY5
MDY3YTU2OTFiODg1YThkZmRjN2FhOTAzNjQwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTAwLDcgKzExMDAsNyBAQCB2b2lkIFJlbmRlcklubGlu
ZTo6ZGVsZXRlTGluZXMoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gUmVuZGVy
SW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5l
Rmxvd0JveD4oKnRoaXMpOwogfQogCiBJbmxpbmVGbG93Qm94KiBSZW5kZXJJbmxpbmU6OmNyZWF0
ZUFuZEFwcGVuZElubGluZUZsb3dCb3goKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggZjlmMGQwZDRjZWU2NmMxZjQzZGU1MzJiNjEwMDUzMmJmYjYxNTA4Yy4u
MTg1NDY4NzA1MTZlNGQwZmQ1ZTJiMDI4ZGViM2JjNDBjZTZjOGJmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC03MDAsNyArNzAwLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgICAgICAvLyBJZ25vcmUgbm9uLW92
ZXJmbG93IGxheWVycyBhbmQgcmVmbGVjdGlvbnMuCiAgICAgICAgIGlmIChjaGlsZC0+aXNOb3Jt
YWxGbG93T25seSgpICYmICFpc1JlZmxlY3Rpb25MYXllcigqY2hpbGQpKSB7CiAgICAgICAgICAg
ICBpZiAoIW1fbm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICAgICAgICAgbV9ub3JtYWxGbG93TGlz
dCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAgICAg
ICAgICAgbV9ub3JtYWxGbG93TGlzdCA9IG1ha2VVbmlxdWU8VmVjdG9yPFJlbmRlckxheWVyKj4+
KCk7CiAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0LT5hcHBlbmQoY2hpbGQpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNzU2LDcgKzc1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RM
YXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yCiAg
ICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93T25seSgpKSB7CiAgICAg
ICAgIGF1dG8mIGxheWVyTGlzdCA9ICh6SW5kZXgoKSA+PSAwKSA/IHBvc2l0aXZlWk9yZGVyTGlz
dCA6IG5lZ2F0aXZlWk9yZGVyTGlzdDsKICAgICAgICAgaWYgKCFsYXllckxpc3QpCi0gICAgICAg
ICAgICBsYXllckxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+Pigp
OworICAgICAgICAgICAgbGF5ZXJMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIq
Pj4oKTsKICAgICAgICAgbGF5ZXJMaXN0LT5hcHBlbmQodGhpcyk7CiAgICAgfQogCkBAIC0xMjA2
LDcgKzEyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zvcm0oKQogICAgIGJv
b2wgaGFkVHJhbnNmb3JtID0gISFtX3RyYW5zZm9ybTsKICAgICBpZiAoaGFzVHJhbnNmb3JtICE9
IGhhZFRyYW5zZm9ybSkgewogICAgICAgICBpZiAoaGFzVHJhbnNmb3JtKQotICAgICAgICAgICAg
bV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigpOwor
ICAgICAgICAgICAgbV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4
PigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3RyYW5zZm9ybSA9IG51bGxwdHI7CiAg
ICAgICAgIApAQCAtNTUyNyw3ICs1NTI3LDcgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6
OnVwZGF0ZUNsaXBSZWN0cyhjb25zdCBDbGlwUmVjdHNDb250ZXh0JiBjbGlwUmVjdHNDb24KICAg
ICB9CiAgICAgCiAgICAgaWYgKCFtX2NsaXBSZWN0c0NhY2hlKQotICAgICAgICBtX2NsaXBSZWN0
c0NhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKKyAgICAgICAgbV9j
bGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7CiAjaWZuZGVmIE5E
RUJVRwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1fY2xpcFJlY3RzUm9vdFtjbGlwUmVjdHNUeXBl
XSA9IGNsaXBSZWN0c0NvbnRleHQucm9vdExheWVyOwogICAgIG1fY2xpcFJlY3RzQ2FjaGUtPm1f
c2Nyb2xsYmFyUmVsZXZhbmN5W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4dC5vdmVy
bGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeTsKQEAgLTYxMDUsNyArNjEwNSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OmNsZWFyQ2xpcFJlY3RzKENsaXBSZWN0c1R5cGUgdHlwZVRvQ2xlYXIpCiBSZW5k
ZXJMYXllckJhY2tpbmcqIFJlbmRlckxheWVyOjplbnN1cmVCYWNraW5nKCkKIHsKICAgICBpZiAo
IW1fYmFja2luZykgewotICAgICAgICBtX2JhY2tpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckxheWVyQmFja2luZz4oKnRoaXMpOworICAgICAgICBtX2JhY2tpbmcgPSBtYWtlVW5pcXVlPFJl
bmRlckxheWVyQmFja2luZz4oKnRoaXMpOwogICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNh
bWVDb21wb3NpdGVkKCp0aGlzKTsKIAogICAgICAgICB1cGRhdGVGaWx0ZXJQYWludGluZ1N0cmF0
ZWd5KCk7CkBAIC02NTIzLDcgKzY1MjMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5n
ZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZQogCiAg
ICAgaWYgKHJlbmRlcmVyKCkuaXNIVE1MTWFycXVlZSgpICYmIHJlbmRlcmVyKCkuc3R5bGUoKS5t
YXJxdWVlQmVoYXZpb3IoKSAhPSBNYXJxdWVlQmVoYXZpb3I6Ok5vbmUgJiYgcmVuZGVyZXIoKS5p
c0JveCgpKSB7CiAgICAgICAgIGlmICghbV9tYXJxdWVlKQotICAgICAgICAgICAgbV9tYXJxdWVl
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJNYXJxdWVlPih0aGlzKTsKKyAgICAgICAgICAgIG1f
bWFycXVlZSA9IG1ha2VVbmlxdWU8UmVuZGVyTWFycXVlZT4odGhpcyk7CiAgICAgICAgIG1fbWFy
cXVlZS0+dXBkYXRlTWFycXVlZVN0eWxlKCk7CiAgICAgfSBlbHNlIGlmIChtX21hcnF1ZWUpCiAg
ICAgICAgIG1fbWFycXVlZSA9IG51bGxwdHI7CkBAIC02NzM1LDcgKzY3MzUsNyBAQCB2b2lkIFJl
bmRlckxheWVyOjplbnN1cmVMYXllckZpbHRlcnMoKQogICAgIGlmIChtX2ZpbHRlcnMpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBtX2ZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRl
ckxheWVyRmlsdGVycz4oKnRoaXMpOworICAgIG1fZmlsdGVycyA9IG1ha2VVbmlxdWU8UmVuZGVy
TGF5ZXJGaWx0ZXJzPigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OmNsZWFyTGF5ZXJG
aWx0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKaW5kZXggMjJlZDZkZDdjMDI1MmIxOTUzZGUzYmUxNTM5NzFiMTI5YWUxYzc0Yi4uMTIx
ZDEyZjI2OWY5MGQxM2M2Y2NkZDA5N2I5MjJlM2FkYWNlMjZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE2MjcsNyArMTYyNyw3
IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNlc3RvckNsaXBwaW5nU3RhY2so
VmVjdG9yPENvbXBvc2l0ZWRDbGlwRGF0YT4mCiAgICAgfQogICAgIAogICAgIGlmICghbV9hbmNl
c3RvckNsaXBwaW5nU3RhY2spIHsKLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nU3RhY2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrPihXVEZNb3ZlKGNsaXBw
aW5nRGF0YSkpOworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9IG1ha2VVbmlxdWU8
TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7CiAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShDb21wb3NpdGluZywgc3RyZWFtIDw8ICJsYXllciAiIDw8ICZt
X293bmluZ0xheWVyIDw8ICIgYW5jZXN0b3JDbGlwcGluZ1N0YWNrICIgPDwgKm1fYW5jZXN0b3JD
bGlwcGluZ1N0YWNrKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3OCwxNyAr
MzE3OCwxNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24oZG91Ymxl
IHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbQogICAgICAgICAKICAgICAgICAgYm9v
bCBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUgPSBrZXkgPT0gMCB8fCBrZXkgPT0gMTsKICAgICAgICAg
aWYgKChoYXNUcmFuc2Zvcm0gJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50S2V5
ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSkpCi0gICAgICAgICAg
ICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0
aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CisgICAgICAg
ICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCksIHRmKSk7CiAKICAgICAgICAg
aWYgKChoYXNPcGFjaXR5ICYmIGlzRmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZy
YW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KSkKLSAgICAgICAgICAgIG9w
YWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4o
a2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CisgICAgICAgICAgICBvcGFjaXR5
VmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJh
bWVTdHlsZS0+b3BhY2l0eSgpLCB0ZikpOwogCiAgICAgICAgIGlmICgoaGFzRmlsdGVyICYmIGlz
Rmlyc3RPckxhc3RLZXlmcmFtZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHko
Q1NTUHJvcGVydHlGaWx0ZXIpKQotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6
Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZp
bHRlcigpLCB0ZikpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVl
PEZpbHRlckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmZpbHRlcigpLCB0Zikp
OwogCiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKICAgICAgICAgaWYgKChoYXNCYWNrZHJv
cEZpbHRlciAmJiBpc0ZpcnN0T3JMYXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250
YWluc1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpKQotICAgICAgICAg
ICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5p
bWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsK
KyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRl
ckFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCksIHRm
KSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTMyNDMsOCArMzI0Myw4IEBAIGJvb2wgUmVuZGVyTGF5
ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5
SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogb3BhY2l0eUFuaW0gPSB0b1N0eWxl
LT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KTsKICAgICAgICAgaWYg
KG9wYWNpdHlBbmltICYmICFvcGFjaXR5QW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsK
ICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0IG9wYWNpdHlWZWN0b3IoQW5pbWF0ZWRQcm9w
ZXJ0eU9wYWNpdHkpOwotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtl
X3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigwLCBjb21wb3NpdGluZ09wYWNpdHkoZnJvbVN0
eWxlLT5vcGFjaXR5KCkpKSk7Ci0gICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChzdGQ6
Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDEsIGNvbXBvc2l0aW5nT3BhY2l0eSh0
b1N0eWxlLT5vcGFjaXR5KCkpKSk7CisgICAgICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydCht
YWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIGNvbXBvc2l0aW5nT3BhY2l0eShmcm9t
U3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1h
a2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5
bGUtPm9wYWNpdHkoKSkpKTsKICAgICAgICAgICAgIC8vIFRoZSBib3hTaXplIHBhcmFtIGlzIG9u
bHkgdXNlZCBmb3IgdHJhbnNmb3JtIGFuaW1hdGlvbnMgKHdoaWNoIGNhbiBvbmx5IHJ1biBvbiBS
ZW5kZXJCb3hlcyksIHNvIHdlIHBhc3MgYW4gZW1wdHkgc2l6ZSBoZXJlLgogICAgICAgICAgICAg
aWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEZsb2F0U2l6
ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRp
b24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAg
ICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlzaWJsZSB3aGVu
IHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9wYWNpdHkuCkBAIC0zMjU4
LDggKzMyNTgsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRv
dWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBBbmlt
YXRpb24qIHRyYW5zZm9ybUFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NT
UHJvcGVydHlUcmFuc2Zvcm0pOwogICAgICAgICBpZiAodHJhbnNmb3JtQW5pbSAmJiAhdHJhbnNm
b3JtQW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1l
VmFsdWVMaXN0IHRyYW5zZm9ybVZlY3RvcihBbmltYXRlZFByb3BlcnR5VHJhbnNmb3JtKTsKLSAg
ICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZT4oMCwgZnJvbVN0eWxlLT50cmFuc2Zvcm0oKSkpOwotICAgICAgICAg
ICAgdHJhbnNmb3JtVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlPigxLCB0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgdHJhbnNm
b3JtVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigwLCBm
cm9tU3R5bGUtPnRyYW5zZm9ybSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5z
ZXJ0KG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5z
Zm9ybSgpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24o
dHJhbnNmb3JtVmVjdG9yLCBzbmFwcGVkSW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVj
dCgpKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVG
b3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlUcmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgewog
ICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9ybSBp
cyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUgZmluYWwgdHJh
bnNmb3JtLgogICAgICAgICAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgqdG9TdHlsZSk7CkBAIC0z
MjcyLDggKzMyNzIsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9u
KGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBjb25zdCBB
bmltYXRpb24qIGZpbHRlckFuaW0gPSB0b1N0eWxlLT50cmFuc2l0aW9uRm9yUHJvcGVydHkoQ1NT
UHJvcGVydHlGaWx0ZXIpOwogICAgICAgICBpZiAoZmlsdGVyQW5pbSAmJiAhZmlsdGVyQW5pbS0+
aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkpIHsKICAgICAgICAgICAgIEtleWZyYW1lVmFsdWVMaXN0
IGZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5RmlsdGVyKTsKLSAgICAgICAgICAgIGZpbHRl
clZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oMCwg
ZnJvbVN0eWxlLT5maWx0ZXIoKSkpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChz
dGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5maWx0ZXIo
KSkpOworICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5pcXVlPEZpbHRlckFu
aW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0
ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5
bGUtPmZpbHRlcigpKSk7CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmlt
YXRpb24oZmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwgZmlsdGVyQW5pbSwgR3JhcGhpY3NMYXll
cjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUZpbHRlciksIHRp
bWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJl
Y3QgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVuZHMsIGFsc28gc2V0IHRo
ZSBmaW5hbCBmaWx0ZXIuCiAgICAgICAgICAgICAgICAgdXBkYXRlRmlsdGVycygqdG9TdHlsZSk7
CkBAIC0zMjg3LDggKzMyODcsOCBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFu
c2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcgogICAgICAgICBj
b25zdCBBbmltYXRpb24qIGJhY2tkcm9wRmlsdGVyQW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25G
b3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKICAgICAgICAgaWYg
KGJhY2tkcm9wRmlsdGVyQW5pbSAmJiAhYmFja2Ryb3BGaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJv
RHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgYmFja2Ryb3BGaWx0
ZXJWZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdEJhY2tkcm9wRmlsdGVyKTsKLSAgICAgICAg
ICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFu
aW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmlsdGVyKCkpKTsKLSAgICAgICAg
ICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckFu
aW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAg
ICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25W
YWx1ZT4oMCwgZnJvbVN0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7CisgICAgICAgICAgICBiYWNr
ZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4o
MSwgdG9TdHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSkpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhp
Y3NMYXllci0+YWRkQW5pbWF0aW9uKGJhY2tkcm9wRmlsdGVyVmVjdG9yLCBGbG9hdFNpemUoKSwg
YmFja2Ryb3BGaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNp
dGlvbihBbmltYXRlZFByb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpLCB0aW1lT2Zmc2V0KSkg
ewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IGJhY2tkcm9w
IGZpbHRlciBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0aGUg
ZmluYWwgYmFja2Ryb3AgZmlsdGVyLgogICAgICAgICAgICAgICAgIHVwZGF0ZUJhY2tkcm9wRmls
dGVycygqdG9TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGFiZTRkNGQ2NzVhMjIxODZlMmVhODlkNDEyZmZhODE1
MzhjNWM5MjkuLjMyMTIyOWQ2ZjIzY2ZhZTY2YTA1YTUyODA4ZGQwYjBjYmE4YzE0NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
CkBAIC0yOTUsNyArMjk1LDcgQEAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpSZW5kZXJMYXllckNv
bXBvc2l0b3IoUmVuZGVyVmlldyYgcmVuZGVyVmlldykKIHsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmIChtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGxhdGZvcm1XaWRnZXQoKSkK
LSAgICAgICAgbV9sZWdhY3lTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gc3RkOjptYWtlX3Vu
aXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21l
KCkuY2xpZW50KCksIGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKTsKKyAgICAgICAgbV9sZWdhY3lT
Y3JvbGxpbmdMYXllckNvb3JkaW5hdG9yID0gbWFrZVVuaXF1ZTxMZWdhY3lXZWJLaXRTY3JvbGxp
bmdMYXllckNvb3JkaW5hdG9yPihwYWdlKCkuY2hyb21lKCkuY2xpZW50KCksIGlzTWFpbkZyYW1l
Q29tcG9zaXRvcigpKTsKICNlbmRpZgogfQogCkBAIC02MTIsNyArNjEyLDcgQEAgdm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2goY29uc3Qg
R3JhcGhpY3NMYXllcioKIHsKICAgICBpZiAoIW1fbGF5ZXJVcGRhdGVyKSB7CiAgICAgICAgIFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9IHBhZ2UoKS5jaHJvbWUoKS5kaXNwbGF5SUQoKTsK
LSAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzTGF5ZXJV
cGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKKyAgICAgICAgbV9sYXllclVwZGF0ZXIgPSBtYWtl
VW5pcXVlPEdyYXBoaWNzTGF5ZXJVcGRhdGVyPigqdGhpcywgZGlzcGxheUlEKTsKICAgICB9CiAg
ICAgCiAgICAgbV9sYXllclVwZGF0ZXItPnNjaGVkdWxlVXBkYXRlKCk7CkBAIC00NzkyLDcgKzQ3
OTIsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I6OnJlZ2lz
dGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxWaWV3cG9ydENvbnN0cmFpbnRzPiBjb25zdHJhaW50czsKICAgICAgICAgaWYgKGxheWVyLT5y
ZW5kZXJlcigpLmlzU3RpY2tpbHlQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGNvbnN0cmFp
bnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+
KGNvbXBvc2l0b3IuY29tcHV0ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7Cisg
ICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8U3RpY2t5UG9zaXRpb25WaWV3cG9y
dENvbnN0cmFpbnRzPihjb21wb3NpdG9yLmNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRz
KCpsYXllcikpOwogICAgICAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1RvdWNo
U2Nyb2xsYWJsZUxheWVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChjb21wb3NpdG9yLmlz
QXN5bmNTY3JvbGxhYmxlU3RpY2t5TGF5ZXIoKmxheWVyLCAmZW5jbG9zaW5nVG91Y2hTY3JvbGxh
YmxlTGF5ZXIpICYmIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVyLT5pc0NvbXBvc2l0ZWQo
KSk7CkBAIC00ODAwLDcgKzQ4MDAsNyBAQCB2b2lkIExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVy
Q29vcmRpbmF0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExheWVycwogICAgICAg
ICAgICAgICAgIHN0aWNreUNvbnRhaW5lck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhp
Y3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGVuY2xvc2luZ1RvdWNoU2Nyb2xsYWJsZUxheWVy
LT5iYWNraW5nKCktPnNjcm9sbENvbnRhaW5lckxheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNGaXhl
ZFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gc3RkOjptYWtlX3VuaXF1
ZTxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlRml4
ZWRWaWV3cG9ydENvbnN0cmFpbnRzKCpsYXllcikpOworICAgICAgICAgICAgY29uc3RyYWludHMg
PSBtYWtlVW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPihjb21wb3NpdG9y
LmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggNGI4NmZlMmFkMTc1ZGNlODZhZDM4
NTJiZGZjMTUyZmQxMzA4ZDQ1ZS4uMTI4Yzk2ZGFlMGIzMTAwNmNhMjVkNWE1NmM3MjBiYzg5MGQz
NGYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q6OmRlc3Ryb3lMYXllcigpCiB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmNyZWF0ZUxh
eWVyKCkKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXIpOwotICAgIG1fbGF5ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlckxheWVyPigqdGhpcyk7CisgICAgbV9sYXllciA9IG1ha2VVbmlxdWU8UmVu
ZGVyTGF5ZXI+KCp0aGlzKTsKICAgICBzZXRIYXNMYXllcih0cnVlKTsKICAgICBtX2xheWVyLT5p
bnNlcnRPbmx5VGhpc0xheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuY3BwCmluZGV4IGJjNTUyN2I4YzQ2YTRkZTA2NmY2OWU1YTMxMGM4ODY4MTk2
ZmMyM2EuLjFhYWUwOWQwMGIyNmVhM2NhZGVhODY3MmUyNzc5MjliZmQxN2E2MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIGludCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVt
ZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRoaXMpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5l
QnJlYWs6OnNldElubGluZUJveFdyYXBwZXIoSW5saW5lRWxlbWVudEJveCogaW5saW5lQm94KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNw
cAppbmRleCA5YmI5YTUzOWQ2NjQyZGY5MDAyNmE3ODJhZjhjZjg0ZGM0OWRhMmE5Li40MTAzZGFk
NDg0NGRkMjRhMzAyYTczMmFmMjIxOWFjOTAwMDFjYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcApAQCAtNDIsNyArNDIsNyBA
QCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTXVsdGlDb2x1bW5GbG93KTsKIAog
UmVuZGVyTXVsdGlDb2x1bW5GbG93OjpSZW5kZXJNdWx0aUNvbHVtbkZsb3coRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRnJhZ21lbnRlZEZsb3co
ZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zcGFubmVyTWFwKHN0ZDo6bWFrZV91
bmlxdWU8U3Bhbm5lck1hcD4oKSkKKyAgICAsIG1fc3Bhbm5lck1hcChtYWtlVW5pcXVlPFNwYW5u
ZXJNYXA+KCkpCiAgICAgLCBtX2xhc3RTZXRXb3JrZWRPbihudWxscHRyKQogICAgICwgbV9jb2x1
bW5Db3VudCgxKQogICAgICwgbV9jb2x1bW5XaWR0aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ZGEzYmQ3Mzc3MWJhMTcxOTBlYWMzNWRhNjM4ZTI0
M2YxOTAyOTA3Li4wYmY1MTkzZGU0ODQ0NWJjYzY3N2U5MTRlOGFkM2RmODFjZWI4MmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg5Myw3ICsxODkz
LDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YSYgUmVuZGVyT2Jq
ZWN0OjpyYXJlRGF0YSgpIGNvbnN0CiBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdFJhcmVEYXRh
JiBSZW5kZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKCkKIHsKICAgICBzZXRIYXNSYXJlRGF0YSh0
cnVlKTsKLSAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52
YWx1ZTsKKyAgICByZXR1cm4gKnJhcmVEYXRhTWFwKCkuZW5zdXJlKHRoaXMsIFtdIHsgcmV0dXJu
IG1ha2VVbmlxdWU8UmVuZGVyT2JqZWN0UmFyZURhdGE+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
IH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDZk
NTZiNWVjYTJjNmIyNzY4YWZiYjJkNGNmZjBhYzA4ODJlOWZkYzYuLjBkZmUyODI3NjRmNDA4YjYy
MGJlZjVkOWY1OGU4OGE2Y2M3NmMwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOwogCiBSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbklt
YWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckVt
YmVkZGVkT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQotICAgICwgbV9zbmFwc2hvdFJl
c291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAgICAsIG1f
c25hcHNob3RSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiAg
ICAgbV9zbmFwc2hvdFJlc291cmNlLT5pbml0aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDE4NmNhODcwZWQxMDkxM2Q1OGI4NTQ5
ZWI5NmRlMzM2ZTM0NTUzNTkuLmU5MWExMzM3MTk5MTJkMThmYTU1ZTM2ZDgzNTU4ODU3YzJkMThi
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTM3LDkg
KzEzNyw5IEBAIHZvaWQgUmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5CiAgICAgICAgIC8vIEFjY29yZGluZyB0
byB0aGUgQ1NTMiBzcGVjLCB5b3Ugb25seSB1c2UgZml4ZWQgdGFibGUgbGF5b3V0IGlmIGFuCiAg
ICAgICAgIC8vIGV4cGxpY2l0IHdpZHRoIGlzIHNwZWNpZmllZCBvbiB0aGUgdGFibGUuICBBdXRv
IHdpZHRoIGltcGxpZXMgYXV0byB0YWJsZSBsYXlvdXQuCiAgICAgICAgIGlmIChzdHlsZSgpLnRh
YmxlTGF5b3V0KCkgPT0gVGFibGVMYXlvdXRUeXBlOjpGaXhlZCAmJiAhc3R5bGUoKS5sb2dpY2Fs
V2lkdGgoKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZpeGVkVGFibGVMYXlvdXQ+KHRoaXMpOworICAgICAgICAgICAgbV90YWJsZUxheW91
dCA9IG1ha2VVbmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fdGFibGVMYXlvdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9UYWJsZUxheW91
dD4odGhpcyk7CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxBdXRvVGFi
bGVMYXlvdXQ+KHRoaXMpOwogICAgIH0KIAogICAgIC8vIElmIGJvcmRlciB3YXMgY2hhbmdlZCwg
aW52YWxpZGF0ZSBjb2xsYXBzZWQgYm9yZGVycyBjYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAppbmRleCBhYWQwYzE0N2YxMWQzOWIzYWQxNmNhZGRjMTUzYzMyMmU5
MmQ3YTBhLi5iNjMwNWRlNWY2MzE2YzRkYjI2MGE3OTljZDExNmJiZDFhZTU0NDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMzExLDcgKzEzMTEsNyBAQCB2
b2lkIFJlbmRlclRleHQ6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKIAogc3RkOjp1
bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclRleHQ6OmNyZWF0ZVRleHRCb3goKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRCb3g+KCp0aGlzKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiB9CiAKIHZvaWQgUmVuZGVy
VGV4dDo6cG9zaXRpb25MaW5lQm94KElubGluZVRleHRCb3gmIHRleHRCb3gpCkBAIC0xNTQ1LDcg
KzE1NDUsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hh
cmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogICAgICAgICByZXR1cm47CiAgICAg
YXV0byYgc2VjdXJlVGV4dFRpbWVyID0gc2VjdXJlVGV4dFRpbWVycygpLmFkZCh0aGlzLCBudWxs
cHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzZWN1cmVUZXh0VGltZXIpCi0gICAgICAg
IHNlY3VyZVRleHRUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VjdXJlVGV4dFRpbWVyPigqdGhp
cyk7CisgICAgICAgIHNlY3VyZVRleHRUaW1lciA9IG1ha2VVbmlxdWU8U2VjdXJlVGV4dFRpbWVy
PigqdGhpcyk7CiAgICAgc2VjdXJlVGV4dFRpbWVyLT5yZXN0YXJ0KG9mZnNldEFmdGVyTGFzdFR5
cGVkQ2hhcmFjdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CmluZGV4IGMxNDQ1MWExOGVlYTdhNTcxYTI3Nzc4OThhNzljYzhiNDNmZjMxNDIuLjVmZWM2Nzhj
NmJiNWRmMGU0OTIyYjAxMmMzZjI2OGRiYWI0YTdiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnJl
cGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0KSBjb25zdAog
ICAgIC8vIEZJWE1FOiBNYXliZSB0aGVyZSBzaG91bGQgYmUgYSByZWdpb24gdHlwZSB0aGF0IGRv
ZXMgdGhpcyBhdXRvbWF0aWNhbGx5LgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVt
UmVwYWludFJlZ2lvbkdyaWRTaXplID0gMTYgKiAxNjsKICAgICBpZiAobV9hY2N1bXVsYXRlZFJl
cGFpbnRSZWdpb24tPmdyaWRTaXplKCkgPiBtYXhpbXVtUmVwYWludFJlZ2lvbkdyaWRTaXplKQot
ICAgICAgICBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVn
aW9uPihtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOworICAgICAgICBtX2Fj
Y3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1ha2VVbmlxdWU8UmVnaW9uPihtX2FjY3VtdWxhdGVk
UmVwYWludFJlZ2lvbi0+Ym91bmRzKCkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmZsdXNoQWNj
dW11bGF0ZWRSZXBhaW50UmVnaW9uKCkgY29uc3QKQEAgLTcyNCw3ICs3MjQsNyBAQCBib29sIFJl
bmRlclZpZXc6OnVzZXNDb21wb3NpdGluZygpIGNvbnN0CiBSZW5kZXJMYXllckNvbXBvc2l0b3Im
IFJlbmRlclZpZXc6OmNvbXBvc2l0b3IoKQogewogICAgIGlmICghbV9jb21wb3NpdG9yKQotICAg
ICAgICBtX2NvbXBvc2l0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheWVyQ29tcG9zaXRv
cj4oKnRoaXMpOworICAgICAgICBtX2NvbXBvc2l0b3IgPSBtYWtlVW5pcXVlPFJlbmRlckxheWVy
Q29tcG9zaXRvcj4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX2NvbXBvc2l0b3I7CiB9CkBAIC03
NDUsNyArNzQ1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWwKIEltYWdlUXVhbGl0eUNvbnRy
b2xsZXImIFJlbmRlclZpZXc6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKQogewogICAgIGlmICgh
bV9pbWFnZVF1YWxpdHlDb250cm9sbGVyKQotICAgICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKKyAg
ICAgICAgbV9pbWFnZVF1YWxpdHlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbWFnZVF1YWxpdHlD
b250cm9sbGVyPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7
CiB9CiAKQEAgLTgzNCw3ICs4MzQsNyBAQCBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNjdW11
bGF0b3I6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcihSZW5kZXJWaWV3KiB2aWV3KQogCiAgICAg
bV93YXNBY2N1bXVsYXRpbmdSZXBhaW50UmVnaW9uID0gISFyb290UmVuZGVyVmlldy0+bV9hY2N1
bXVsYXRlZFJlcGFpbnRSZWdpb247CiAgICAgaWYgKCFtX3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRS
ZWdpb24pCi0gICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaW9uPigpOworICAgICAgICByb290UmVuZGVyVmlldy0+
bV9hY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICBt
X3Jvb3RWaWV3ID0gbWFrZVdlYWtQdHIoKnJvb3RSZW5kZXJWaWV3KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGZkY2Q1OWM1MmM1ZjMyOGY1
MjA5ZjAwYzFmOGQ4MTZhZGM1Zjc2NjguLjQ0NTU4NDFhZjMyZmYxNTI1MmNmYTI4ZWQ4YTY5YzNl
NDlmMWYzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAK
QEAgLTEyOSw3ICsxMjksNyBAQCBmbG9hdCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKGNv
bnN0IEF0b21TdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGZsbwogICAgICAgICBnRWxs
aXBzaXNCb3hNYXAgPSBuZXcgRWxsaXBzaXNCb3hNYXAoKTsKIAogICAgIEFTU0VSVCghaGFzRWxs
aXBzaXNCb3goKSk7Ci0gICAgYXV0byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNl
dCh0aGlzLCBzdGQ6Om1ha2VfdW5pcXVlPEVsbGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBz
aXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGggLSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dp
Y2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVpZ2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlz
SG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgYXV0
byogZWxsaXBzaXNCb3ggPSBnRWxsaXBzaXNCb3hNYXAtPnNldCh0aGlzLCBtYWtlVW5pcXVlPEVs
bGlwc2lzQm94PihibG9ja0Zsb3coKSwgZWxsaXBzaXNTdHIsIHRoaXMsIGVsbGlwc2lzV2lkdGgg
LSAobWFya3VwQm94ID8gbWFya3VwQm94LT5sb2dpY2FsV2lkdGgoKSA6IDApLCBsb2dpY2FsSGVp
Z2h0KCksIHkoKSwgIXByZXZSb290Qm94KCksIGlzSG9yaXpvbnRhbCgpLCBtYXJrdXBCb3gpKS5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgc2V0SGFzRWxsaXBzaXNCb3godHJ1ZSk7CiAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgYW4gUlRMIHZlcnNpb24gb2YgdGhpcz8KICAgICBpZiAobHRy
ICYmICh4KCkgKyBsb2dpY2FsV2lkdGgoKSArIGVsbGlwc2lzV2lkdGgpIDw9IGJsb2NrUmlnaHRF
ZGdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCA3ZGYy
ODI4OGE0ZDU1YzJjN2QyNmFkNGJjMDE3NmQwYjc2MTc4MzY0Li4yNDdlNTVjMDY5ZTlmZTg4MWNh
ZjRiZmJjMmI0YWVmMTllMzYxN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBSb290SW5saW5lQm94IDogcHVibGlj
IElubGluZUZsb3dCb3gsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSb290SW5saW5lQm94PgogICAg
ICAgICBpZiAobV9mbG9hdHMpCiAgICAgICAgICAgICBtX2Zsb2F0cy0+YXBwZW5kKG1ha2VXZWFr
UHRyKGZsb2F0aW5nQm94KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZmxvYXRzID0g
c3RkOjptYWtlX3VuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0
aW5nQm94KSk7CisgICAgICAgICAgICBtX2Zsb2F0cyA9IG1ha2VVbmlxdWU8Q2xlYW5MaW5lRmxv
YXRMaXN0PigxLCBtYWtlV2Vha1B0cihmbG9hdGluZ0JveCkpOwogICAgIH0KIAogICAgIHZvaWQg
cmVtb3ZlRmxvYXQoUmVuZGVyQm94JiBmbG9hdGluZ0JveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHAKaW5kZXggZWM1ZTczNTZhNjRkMTI0OWRk
YTExNDdlOGJiYTMxZjQ3OTBiNGJmMi4uYjliYWQwYTA5ZjI5YmY3YWRjOWQzMzNmNGU4MTFjM2Vh
MWI5M2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJh
bmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdl
RGF0YS5jcHAKQEAgLTEzMSwxMyArMTMxLDEzIEBAIHN0YXRpYyBTZWxlY3Rpb25EYXRhIGNvbGxl
Y3QoY29uc3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpDb250ZXh0JiBzZWxlY3Rpb24sIGJvb2wKICAg
ICB3aGlsZSAoc3RhcnQgJiYgc3RhcnQgIT0gc3RvcCkgewogICAgICAgICBpZiAoaXNWYWxpZFJl
bmRlcmVyRm9yU2VsZWN0aW9uKCpzdGFydCwgc2VsZWN0aW9uKSkgewogICAgICAgICAgICAgLy8g
QmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBtYXJnaW4g
Z2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICBvbGRTZWxl
Y3Rpb25EYXRhLnJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2Vs
ZWN0aW9uSW5mbz4oKnN0YXJ0LCB0cnVlKSk7CisgICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRh
LnJlbmRlcmVycy5zZXQoc3RhcnQsIG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0
YXJ0LCB0cnVlKSk7CiAgICAgICAgICAgICBpZiAocmVwYWludERpZmZlcmVuY2UpIHsKICAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8qIGJsb2NrID0gY29udGFpbmluZ0Jsb2NrQmVsb3dWaWV3KCpz
dGFydCk7IGJsb2NrOyBibG9jayA9IGNvbnRhaW5pbmdCbG9ja0JlbG93VmlldygqYmxvY2spKSB7
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGJsb2NrSW5mbyA9IG9sZFNlbGVjdGlvbkRhdGEu
YmxvY2tzLmFkZChibG9jaywgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxv
Y2tTZWxlY3Rpb25JbmZvPigqYmxvY2spOworICAgICAgICAgICAgICAgICAgICBibG9ja0luZm8g
PSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4oKmJsb2NrKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIxMywxMyArMjEzLDEzIEBA
IEludFJlY3QgU2VsZWN0aW9uUmFuZ2VEYXRhOjpjb2xsZWN0Qm91bmRzKENsaXBUb1Zpc2libGVD
b250ZW50IGNsaXBUb1Zpc2libGVDb250CiAgICAgICAgIGlmICgoc3RhcnQtPmNhbkJlU2VsZWN0
aW9uTGVhZigpIHx8IHN0YXJ0ID09IG1fc2VsZWN0aW9uQ29udGV4dC5zdGFydCgpIHx8IHN0YXJ0
ID09IG1fc2VsZWN0aW9uQ29udGV4dC5lbmQoKSkKICAgICAgICAgICAgICYmIHN0YXJ0LT5zZWxl
Y3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZSkgewogICAgICAgICAg
ICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBzIGFuZCBt
YXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCi0gICAgICAgICAgICBy
ZW5kZXJlcnMuc2V0KHN0YXJ0LCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+
KCpzdGFydCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olll
cykpOworICAgICAgICAgICAgcmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1ZTxSZW5kZXJT
ZWxlY3Rpb25JbmZvPigqc3RhcnQsIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2li
bGVDb250ZW50OjpZZXMpKTsKICAgICAgICAgICAgIGF1dG8qIGJsb2NrID0gc3RhcnQtPmNvbnRh
aW5pbmdCbG9jaygpOwogICAgICAgICAgICAgd2hpbGUgKGJsb2NrICYmICFpczxSZW5kZXJWaWV3
PigqYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVj
dGlvbkluZm8+JiBibG9ja0luZm8gPSByZW5kZXJlcnMuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW5mbykKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09
IENsaXBUb1Zpc2libGVDb250ZW50OjpZZXMpOworICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9
IG1ha2VVbmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKmJsb2NrLCBjbGlwVG9WaXNpYmxlQ29u
dGVudCA9PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKTsKICAgICAgICAgICAgICAgICBibG9j
ayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBD
b250ZXh0JiBuZXdTZWxlY3Rpb24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgc2VsZWN0aW9u
SXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihzZWxlY3Rpb25TdGFydCk7CiAgICAgZm9yIChh
dXRvKiBjdXJyZW50UmVuZGVyZXIgPSBzZWxlY3Rpb25TdGFydDsgY3VycmVudFJlbmRlcmVyICYm
IGN1cnJlbnRSZW5kZXJlciAhPSBzZWxlY3Rpb25FbmQ7IGN1cnJlbnRSZW5kZXJlciA9IHNlbGVj
dGlvbkl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICBpZiAoaXNWYWxpZFJlbmRlcmVyRm9yU2Vs
ZWN0aW9uKCpjdXJyZW50UmVuZGVyZXIsIG1fc2VsZWN0aW9uQ29udGV4dCkpIHsKLSAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBzZWxlY3Rpb25JbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJlbmRlcmVyLCB0
cnVlKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPiBz
ZWxlY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqY3VycmVudFJl
bmRlcmVyLCB0cnVlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAgICAgICAg
IGZvciAoYXV0byYgcmVjdCA6IHNlbGVjdGlvbkluZm8tPmNvbGxlY3RlZFNlbGVjdGlvblJlY3Rz
KCkpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkUmVjdChzZWxl
Y3Rpb25JbmZvLT5yZXBhaW50Q29udGFpbmVyKCksIHJlY3QpOwpAQCAtMjk0LDcgKzI5NCw3IEBA
IHZvaWQgU2VsZWN0aW9uUmFuZ2VEYXRhOjphcHBseShjb25zdCBDb250ZXh0JiBuZXdTZWxlY3Rp
b24sIFJlcGFpbnRNb2RlIGJsb2NrUmVwCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IG5ld1NlbGVjdGVkQmxvY2tz
LmFkZChjb250YWluaW5nQmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAg
ICAgICAgICBpZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0
aW9uSW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CisgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0g
bWFrZVVuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpjb250YWluaW5nQmxvY2spOwog
ICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9jay0+Y29udGFp
bmluZ0Jsb2NrKCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCiAgICAgICAgICAgICAg
ICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuYWRkR2FwUmVjdHMoYmxvY2tJbmZvLT5yZXBhaW50
Q29udGFpbmVyKCksIGJsb2NrSW5mby0+cmVjdHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggOGM3NjZlNmRlMmM3NGFkMDM3OTczMzMx
ZmM3ZjVhNDc0OTAxNWI4ZS4uYzM2MmY0ZTU3YjAwZjljZTM5YTczZWNlODExYzJjODMyZDY1MGJh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApA
QCAtOTk3LDcgKzk5Nyw3IEBAIExheW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3RvciYgcnVuVmVj
dG9yLCB1bnNpZ25lZCBsaW5lQ291bnQsIGNvbnN0IFJlbmRlckJsb2NrCiBjb25zdCBSdW5SZXNv
bHZlciYgTGF5b3V0OjpydW5SZXNvbHZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3J1blJlc29s
dmVyKQotICAgICAgICBtX3J1blJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5SZXNvbHZl
cj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOworICAgICAgICBtX3J1blJlc29sdmVyID0g
bWFrZVVuaXF1ZTxSdW5SZXNvbHZlcj4obV9ibG9ja0Zsb3dSZW5kZXJlciwgKnRoaXMpOwogICAg
IHJldHVybiAqbV9ydW5SZXNvbHZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDFiZjk4ZTRlZWI0
M2JhMjJjZGE0ZTZmNWQzYmMyYTVmOWZjNGI0YjcuLjA2MjViMTZiZDU0MzE5NzNlZDMxZGU5OThh
ZWQ4ODliMDEyYmEzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIHBh
aW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0
LCBQYWludEluZm8mIHBhaQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGRlYnVn
U2hhZG93ID0gbnVsbHB0cjsKICAgICBpZiAoZmxvdy5zZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlv
dXREZWJ1Z0JvcmRlcnNFbmFibGVkKCkpIHsKLSAgICAgICAgZGVidWdTaGFkb3cgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxl
OjpOb3JtYWwsIHRydWUsIENvbG9yKDAsIDI1NSwgMCwgMjAwKSk7CisgICAgICAgIGRlYnVnU2hh
ZG93ID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihJbnRQb2ludCgwLCAwKSwgMTAsIDIwLCBTaGFk
b3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcigwLCAyNTUsIDAsIDIwMCkpOwogICAgICAgICB0
ZXh0UGFpbnRlci5zZXRTaGFkb3coZGVidWdTaGFkb3cuZ2V0KCkpOwogICAgIH0KIApAQCAtMzQ3
LDcgKzM0Nyw3IEBAIHZvaWQgZ2VuZXJhdGVMaW5lQm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmIGZs
b3csIGNvbnN0IExheW91dCYgbGF5b3V0KQogICAgICAgICBCaWRpUnVuTGlzdDxCaWRpUnVuPiBi
aWRpUnVuczsKICAgICAgICAgZm9yIChhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsgaXQgIT0gcmFu
Z2UuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgIGF1dG8gcnVuID0gKml0OwotICAgICAgICAg
ICAgYmlkaVJ1bnMuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1bj4ocnVuLmxvY2Fs
U3RhcnQoKSwgcnVuLmxvY2FsRW5kKCksIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4ocnVuLnJl
bmRlcmVyKCkpLCBiaWRpQ29udGV4dC5wdHIoKSwgVV9MRUZUX1RPX1JJR0hUKSk7CisgICAgICAg
ICAgICBiaWRpUnVucy5hcHBlbmRSdW4obWFrZVVuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFy
dCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3RfY2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVy
ZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBVX0xFRlRfVE9fUklHSFQpKTsKICAgICAgICAgfQog
CiAgICAgICAgIExpbmVJbmZvIGxpbmVJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0QXV0b1NpemluZy5jcHAKaW5kZXggM2JhMTMwZDQ1NTlkNzI5MmQ4OTFmNTUzY2YxNDgwZjg2
NmJiMmJhZC4uNGI0M2U2YWNiZTBlZWRhZjRlYWY0ZDJlNWQ1YTQ0NjM5MDYwNTNlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCkBAIC0yMjUsNyArMjI1
LDcgQEAgdm9pZCBUZXh0QXV0b1NpemluZzo6YWRkVGV4dE5vZGUoVGV4dCYgbm9kZSwgZmxvYXQg
Y2FuZGlkYXRlU2l6ZSkKICAgICBMT0coVGV4dEF1dG9zaXppbmcsICIgYWRkQXV0b1NpemVkTm9k
ZSAlcCBjYW5kaWRhdGVTaXplPSVmIiwgJm5vZGUsIGNhbmRpZGF0ZVNpemUpOwogICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV90ZXh0Tm9kZXMuYWRkPFRleHRBdXRvU2l6aW5nSGFzaFRyYW5zbGF0b3I+
KG5vZGUucmVuZGVyZXIoKS0+c3R5bGUoKSwgbnVsbHB0cik7CiAgICAgaWYgKGFkZFJlc3VsdC5p
c05ld0VudHJ5KQotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOworICAgICAgICBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxUZXh0QXV0b1NpemluZ1ZhbHVlPigpOwogICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZFRleHROb2RlKG5vZGUsIGNhbmRpZGF0ZVNpemUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAKaW5k
ZXggMmIxYzFmYTAzY2ExYzU3NTY5MDI3N2E1ZTgxMjg3MTAxMGQ0NDY3ZS4uZDExNjYxNWE3MjZj
NWEwYTk0M2Q5YjlmNmUwOTQwYjk1ZTY5MDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVCcmVha2VyLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIExpbmVCcmVh
a2VyOjpza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwg
TGluZUluZm8mCiAgICAgICAgIGlmIChvYmplY3QuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsK
ICAgICAgICAgICAgIHNldFN0YXRpY1Bvc2l0aW9ucyhtX2Jsb2NrLCBkb3duY2FzdDxSZW5kZXJC
b3g+KG9iamVjdCksIHdpZHRoLnNob3VsZEluZGVudFRleHQoKSk7CiAgICAgICAgICAgICBpZiAo
b2JqZWN0LnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpIHsKLSAgICAgICAg
ICAgICAgICByZXNvbHZlci5ydW5zKCkuYXBwZW5kUnVuKHN0ZDo6bWFrZV91bmlxdWU8QmlkaVJ1
bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmFwcGVuZFJ1bihtYWtlVW5pcXVlPEJpZGlS
dW4+KDAsIDEsIG9iamVjdCwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSkpOwog
ICAgICAgICAgICAgICAgIGxpbmVJbmZvLmluY3JlbWVudFJ1bnNGcm9tTGVhZGluZ1doaXRlc3Bh
Y2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChvYmplY3QuaXNGbG9hdGlu
ZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNw
cAppbmRleCA0YjE1OTdlOWYyMWM5Y2Q0YjJmMGQ4ODM0NzQ0Nzc1ZjFkOGJkZTAxLi5kNTIwOTJi
NjhlZDhlMmM4ZmRhNTE1YzkwY2Q1MjIzNTZkNjU1YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBJbnRT
aGFwZUludGVydmFsIE1hcmdpbkludGVydmFsR2VuZXJhdG9yOjppbnRlcnZhbEF0KGludCB5KSBj
b25zdAogc3RkOjp1bmlxdWVfcHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUlu
dGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29u
c3QKIHsKICAgICBpbnQgbWFyZ2luSW50ZXJ2YWxzU2l6ZSA9IChvZmZzZXQoKSA+IHNoYXBlTWFy
Z2luKSA/IHNpemUoKSA6IHNpemUoKSAtIG9mZnNldCgpICogMiArIHNoYXBlTWFyZ2luICogMjsK
LSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+
KG1hcmdpbkludGVydmFsc1NpemUsIHN0ZDo6bWF4KHNoYXBlTWFyZ2luLCBvZmZzZXQoKSkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2lu
SW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CiAgICAgTWFy
Z2luSW50ZXJ2YWxHZW5lcmF0b3IgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3Ioc2hhcGVNYXJnaW4p
OwogCiAgICAgZm9yIChpbnQgeSA9IGJvdW5kcygpLnkoKTsgeSA8IGJvdW5kcygpLm1heFkoKTsg
Kyt5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDMw
MjMxYTBiZTFiYmM2M2U0YmUzZDI1MDUxMmJlZDNkMTk1OTQwOTkuLmY1ZWZlZmRkMzJiMzA1NDdh
ZGJkOGViMDhmNTRlNjNiMDI0MGZkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCkBAIC00NiwyNCArNDYsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlSW5zZXRTaGFwZShjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiBib3VuZHMpCiB7CiAgICAgQVNTRVJUKGJvdW5kcy5yZWN0KCkud2lkdGgoKSA+
PSAwICYmIGJvdW5kcy5yZWN0KCkuaGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Qm94U2hhcGU+KGJvdW5kcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94U2hh
cGU+KGJvdW5kcyk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUNp
cmNsZVNoYXBlKGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlciwgZmxvYXQgcmFkaXVzKQogewogICAg
IEFTU0VSVChyYWRpdXMgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFu
Z2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaXVzLCBjZW50ZXIueSgpIC0gcmFk
aXVzLCByYWRpdXMqMiwgcmFkaXVzKjIpLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkg
LSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0
U2l6ZShyYWRpdXMsIHJhZGl1cykpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBl
PiBjcmVhdGVFbGxpcHNlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBjb25zdCBGbG9h
dFNpemUmIHJhZGlpKQogewogICAgIEFTU0VSVChyYWRpaS53aWR0aCgpID49IDAgJiYgcmFkaWku
aGVpZ2h0KCkgPj0gMCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVjdGFuZ2xlU2hh
cGU+KEZsb2F0UmVjdChjZW50ZXIueCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJh
ZGlpLmhlaWdodCgpLCByYWRpaS53aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVjdGFuZ2xlU2hhcGU+KEZsb2F0UmVjdChjZW50ZXIu
eCgpIC0gcmFkaWkud2lkdGgoKSwgY2VudGVyLnkoKSAtIHJhZGlpLmhlaWdodCgpLCByYWRpaS53
aWR0aCgpKjIsIHJhZGlpLmhlaWdodCgpKjIpLCByYWRpaSk7CiB9CiAKIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1
bGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBvbHlnb25TaGFwZT4oV1RGTW92ZSh2ZXJ0aWNl
cyksIGZpbGxSdWxlKTsKIH0KIAogc3RhdGljIGlubGluZSBGbG9hdFJlY3QgcGh5c2ljYWxSZWN0
VG9Mb2dpY2FsKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbG9naWNhbEJveEhlaWdodCwg
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFw
ZSwgY29uc3QgTGEKICAgICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVlcyA9IHBvbHln
b24udmFsdWVzKCk7CiAgICAgICAgIHNpemVfdCB2YWx1ZXNTaXplID0gdmFsdWVzLnNpemUoKTsK
ICAgICAgICAgQVNTRVJUKCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxGbG9hdFBvaW50Pj4odmFsdWVzU2l6ZSAvIDIpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IG1ha2VVbmlxdWU8VmVjdG9yPEZsb2F0UG9p
bnQ+Pih2YWx1ZXNTaXplIC8gMik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2
YWx1ZXNTaXplOyBpICs9IDIpIHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgdmVydGV4KAogICAg
ICAgICAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgodmFsdWVzLmF0KGkpLCBib3hXaWR0aCks
CkBAIC0xNzksNyArMTc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRl
UmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKIAogICAgIEludFJl
Y3QgaW1hZ2VSZWN0ID0gc25hcHBlZEludFJlY3QoaW1hZ2VSKTsKICAgICBJbnRSZWN0IG1hcmdp
blJlY3QgPSBzbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKLSAgICBhdXRvIGludGVydmFscyA9IHN0
ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCks
IC1tYXJnaW5SZWN0LnkoKSk7CisgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3Rl
clNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwog
ICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0
aW9uYWxseSB1bmFjY2VsZXJhdGVkLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFVuYWNj
ZWxlcmF0ZWQpOwogCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsK
KyAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShp
bnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CiAgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGlu
Z01vZGUgPSB3cml0aW5nTW9kZTsKICAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBtYXJnaW47
CiAgICAgcmV0dXJuIHJhc3RlclNoYXBlOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRSZWN0JiByb3Vu
ZGVkUmVjdCwgV3JpCiAKICAgICBGbG9hdFJlY3QgcmVjdCgwLCAwLCByb3VuZGVkUmVjdC5yZWN0
KCkud2lkdGgoKSwgcm91bmRlZFJlY3QucmVjdCgpLmhlaWdodCgpKTsKICAgICBGbG9hdFJvdW5k
ZWRSZWN0IGJvdW5kcyhyZWN0LCByb3VuZGVkUmVjdC5yYWRpaSgpKTsKLSAgICBhdXRvIHNoYXBl
ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAgICBhdXRvIHNoYXBlID0g
bWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKICAgICBzaGFwZS0+bV93cml0aW5nTW9kZSA9
IHdyaXRpbmdNb2RlOwogICAgIHNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAppbmRleCBj
ZDk0Zjg5YzAyYjBiOGMxMzUxOTQ1N2U0NGQwZGRhZjZkODdmMWZhLi45NDg0MzE3MTk0N2MwMjMw
OWFiN2Y0ZmIxYjk3YzI2Mzg4MmVlMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaApAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNz
IFNoYXBlT3V0c2lkZUluZm8gZmluYWwgewogICAgICAgICBJbmZvTWFwJiBpbmZvTWFwID0gU2hh
cGVPdXRzaWRlSW5mbzo6aW5mb01hcCgpOwogICAgICAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyog
aW5mbyA9IGluZm9NYXAuZ2V0KCZrZXkpKQogICAgICAgICAgICAgcmV0dXJuICppbmZvOwotICAg
ICAgICBhdXRvIHJlc3VsdCA9IGluZm9NYXAuYWRkKCZrZXksIHN0ZDo6bWFrZV91bmlxdWU8U2hh
cGVPdXRzaWRlSW5mbz4oa2V5KSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQo
JmtleSwgbWFrZVVuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKICAgICAgICAgcmV0dXJu
ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KICAgICBzdGF0aWMgdm9pZCByZW1vdmVJ
bmZvKGNvbnN0IFJlbmRlckJveCYga2V5KSB7IGluZm9NYXAoKS5yZW1vdmUoJmtleSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4IDBj
OThmOTE2NmY3ZTE1Mjk3MDNiY2RiMmM4YzgzY2M4MGJiN2JmMjQuLjc0NGM5MGI4ZmIzZjUyNzY4
YTUzOGQyMTM1ODM2MmNhNjM0ODI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtMzU4LDcgKzM1OCw3IEBAIFJlZjxCYXNpY1NoYXBl
PiBCYXNpY1NoYXBlUGF0aDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgZnJvbSwgZG91YmxlIHBy
b2dyZXNzKSBjCiAKICAgICBhdXRvJiBmcm9tUGF0aCA9IGRvd25jYXN0PEJhc2ljU2hhcGVQYXRo
Pihmcm9tKTsKIAotICAgIGF1dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gc3RkOjptYWtlX3VuaXF1
ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKKyAgICBhdXRvIHJlc3VsdGluZ1BhdGhCeXRlcyA9IG1h
a2VVbmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVpbGRBbmltYXRlZFNWR1BhdGhC
eXRlU3RyZWFtKCpmcm9tUGF0aC5tX2J5dGVTdHJlYW0sICptX2J5dGVTdHJlYW0sICpyZXN1bHRp
bmdQYXRoQnl0ZXMsIHByb2dyZXNzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gQmFzaWNTaGFwZVBh
dGg6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdGluZ1BhdGhCeXRlcykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCBlN2JiMDYxNjUwMmQ5OWQ2ZGI0
MzkyYmI0NjhhOWFiNDY5Y2U0OTRhLi4yYzEyZGQ5YjQwZGQ0MGIzYzBiZjY3NDkzMjJhZTJiMGZk
MWUwNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEu
aApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBJbWFnZUNvbnRlbnREYXRhIGZpbmFsIDogcHVibGlj
IENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50
UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFs
CiAgICAgewotICAgICAgICBhdXRvIGltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRl
bnREYXRhPihtX2ltYWdlLmNvcHlSZWYoKSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBtYWtlVW5p
cXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKICAgICAgICAgaW1hZ2Ut
PnNldEFsdFRleHQoYWx0VGV4dCgpKTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0KQEAg
LTEyNiw3ICsxMjYsNyBAQCBjbGFzcyBUZXh0Q29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29u
dGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0
ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmlu
YWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KG1fdGV4
dCk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtYWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsg
fQogCiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3MgQ291
bnRlckNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKICAgICBSZW5kZXJQ
dHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0
YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KHN0ZDo6bWFrZV91bmlxdWU8Q291bnRl
ckNvbnRlbnQ+KGNvdW50ZXIoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb3VudGVy
Q29udGVudERhdGE+KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KGNvdW50ZXIoKSkpOwogICAg
IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gbV9jb3VudGVyOwpAQCAt
MTkwLDcgKzE5MCw3IEBAIGNsYXNzIFF1b3RlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29u
dGVudERhdGEgewogCiBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0
ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmlu
YWw7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90
ZSgpKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUo
KSk7IH0KIAogICAgIFF1b3RlVHlwZSBtX3F1b3RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggZjNkOTFkYzhkYmM4ZDllNDZjNjAxYjk1
ODQzYjlhOTUyZjNiMmQxZC4uMzAwMTRkMDRmNzBmYjkxODE3NDI4NzYwM2ZkZWFiNzIzOTU2MTRm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgRmlsbExheWVyOjpGaWxsTGF5ZXIoRmlsbExheWVyVHlwZSB0eXBlKQog
fQogCiBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25zdCBGaWxsTGF5ZXImIG8pCi0gICAgOiBtX25l
eHQoby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51
bGxwdHIpCisgICAgOiBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPEZpbGxMYXllcj4oKm8u
bV9uZXh0KSA6IG51bGxwdHIpCiAgICAgLCBtX2ltYWdlKG8ubV9pbWFnZSkKICAgICAsIG1feFBv
c2l0aW9uKG8ubV94UG9zaXRpb24pCiAgICAgLCBtX3lQb3NpdGlvbihvLm1feVBvc2l0aW9uKQpA
QCAtMTE3LDcgKzExNyw3IEBAIEZpbGxMYXllcjo6fkZpbGxMYXllcigpCiAKIEZpbGxMYXllciYg
RmlsbExheWVyOjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQogewotICAgIG1fbmV4dCA9
IG8ubV9uZXh0ID8gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1fbmV4dCkgOiBudWxs
cHRyOworICAgIG1fbmV4dCA9IG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxGaWxsTGF5ZXI+KCpvLm1f
bmV4dCkgOiBudWxscHRyOwogCiAgICAgbV9pbWFnZSA9IG8ubV9pbWFnZTsKICAgICBtX3hQb3Np
dGlvbiA9IG8ubV94UG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAppbmRleCAyNDliYTQ3ZTU4NDNlY2M2MmU2ZmQ0ZjI2YWYxY2Y1Mzhh
MTYzZjljLi5mYjQzYzIwZTVjZTk5ZWNlMTlmNDUyZmQ5Zjg3OTY0ZDgxNGJiN2FlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTEwOSw3
ICsxMDksNyBAQCBSZW5kZXJTdHlsZSBSZW5kZXJTdHlsZTo6Y2xvbmUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpj
bG9uZVB0cihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UmVuZGVyU3R5bGU+KHN0eWxlLCBDbG9uZSk7CiB9CiAKIFJlbmRlclN0eWxlIFJlbmRlclN0
eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSwgRGlzcGxheVR5cGUgZGlzcGxheSkKQEAgLTQwOSw3ICs0MDksNyBAQCBSZW5k
ZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFkZENhY2hlZFBzZXVkb1N0eWxlKHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gcHNldQogICAgIFJlbmRlclN0eWxlKiByZXN1bHQgPSBwc2V1ZG8uZ2V0
KCk7CiAKICAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzKQotICAgICAgICBtX2NhY2hlZFBz
ZXVkb1N0eWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKKyAgICAg
ICAgbV9jYWNoZWRQc2V1ZG9TdHlsZXMgPSBtYWtlVW5pcXVlPFBzZXVkb1N0eWxlQ2FjaGU+KCk7
CiAKICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+YXBwZW5kKFdURk1vdmUocHNldWRvKSk7CiAK
QEAgLTEwNTgsNyArMTA1OCw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0
Y2hQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgYXV0byYgZGF0YSA9IG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFkYXRhLmN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXMpCi0gICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGll
cyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBkYXRhLmN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4o
KTsKICAgICBkYXRhLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMtPmFkZChuYW1lKTsKIH0K
IApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChSZWZQ
dHI8U3R5bGVJbWFnZT4mJiBpbWFnZSwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgcmV0dXJuOwotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxJbWFnZUNvbnRl
bnREYXRhPihpbWFnZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKKyAgICBzZXRDb250ZW50KG1h
a2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4oaW1hZ2UucmVsZWFzZU5vbk51bGwoKSksIGFkZCk7
CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGJvb2wgYWRkKQpAQCAtMTMxMCwxMyArMTMxMCwxMyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRD
b250ZW50KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGFkZCkKICAgICBpZiAoYWRkICYmIGRh
dGEuY29udGVudCkgewogICAgICAgICBhdXRvJiBsYXN0ID0gbGFzdENvbnRlbnQoKmRhdGEuY29u
dGVudCk7CiAgICAgICAgIGlmICghaXM8VGV4dENvbnRlbnREYXRhPihsYXN0KSkKLSAgICAgICAg
ICAgIGxhc3Quc2V0TmV4dChzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5n
KSk7CisgICAgICAgICAgICBsYXN0LnNldE5leHQobWFrZVVuaXF1ZTxUZXh0Q29udGVudERhdGE+
KHN0cmluZykpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8mIHRleHRDb250ZW50
ID0gZG93bmNhc3Q8VGV4dENvbnRlbnREYXRhPihsYXN0KTsKICAgICAgICAgICAgIHRleHRDb250
ZW50LnNldFRleHQodGV4dENvbnRlbnQudGV4dCgpICsgc3RyaW5nKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGRhdGEuY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dENv
bnRlbnREYXRhPihzdHJpbmcpOworICAgICAgICBkYXRhLmNvbnRlbnQgPSBtYWtlVW5pcXVlPFRl
eHRDb250ZW50RGF0YT4oc3RyaW5nKTsKICAgICAgICAgYXV0byYgYWx0VGV4dCA9IGRhdGEuYWx0
VGV4dDsKICAgICAgICAgaWYgKCFhbHRUZXh0LmlzTnVsbCgpKQogICAgICAgICAgICAgZGF0YS5j
b250ZW50LT5zZXRBbHRUZXh0KGFsdFRleHQpOwpAQCAtMTMyNywxMiArMTMyNywxMiBAQCB2b2lk
IFJlbmRlclN0eWxlOjpzZXRDb250ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4g
Y291bnRlciwgYm9vbCBhZGQpCiB7CiAgICAgaWYgKCFjb3VudGVyKQogICAgICAgICByZXR1cm47
Ci0gICAgc2V0Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RG
TW92ZShjb3VudGVyKSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPENvdW50ZXJD
b250ZW50RGF0YT4oV1RGTW92ZShjb3VudGVyKSksIGFkZCk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5
bGU6OnNldENvbnRlbnQoUXVvdGVUeXBlIHF1b3RlLCBib29sIGFkZCkKIHsKLSAgICBzZXRDb250
ZW50KHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpLCBhZGQpOworICAg
IHNldENvbnRlbnQobWFrZVVuaXF1ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSksIGFkZCk7CiB9
CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnRBbHRUZXh0KGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQpAQCAtMTU1MSw3ICsxNTUxLDcgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVuZGVyU3R5
bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCkKIHsKICAgICBhdXRvJiBtYXAgPSBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmNvdW50ZXJEaXJlY3RpdmVzOwogICAgIGlmICghbWFw
KQotICAgICAgICBtYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJEaXJlY3RpdmVNYXA+KCk7
CisgICAgICAgIG1hcCA9IG1ha2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKICAgICBy
ZXR1cm4gKm1hcDsKIH0KIApAQCAtMTY3MSwxNCArMTY3MSwxNCBAQCB2b2lkIFJlbmRlclN0eWxl
OjphZGp1c3RUcmFuc2l0aW9ucygpCiBBbmltYXRpb25MaXN0JiBSZW5kZXJTdHlsZTo6ZW5zdXJl
QW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LmFuaW1hdGlvbnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5p
bWF0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKKyAgICAgICAgbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gbWFrZVVuaXF1ZTxBbmlt
YXRpb25MaXN0PigpOwogICAgIHJldHVybiAqbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YW5pbWF0
aW9uczsKIH0KIAogQW5pbWF0aW9uTGlzdCYgUmVuZGVyU3R5bGU6OmVuc3VyZVRyYW5zaXRpb25z
KCkKIHsKICAgICBpZiAoIW1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlv
bnMpCi0gICAgICAgIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CisgICAgICAgIG1fcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCkudHJhbnNpdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxp
c3Q+KCk7CiAgICAgcmV0dXJuICptX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50cmFuc2l0aW9uczsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlRGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGVEZWZzLmNwcAppbmRleCAyMGIyYTgxMTRiMGM4ZTllYmQ0ODI3MDc5YTk4MjBmMmVjMGRj
ZGMyLi42ZTM3Y2Y4ZmI4YWJhNTVlYzMzMGE5NjAzM2E4YTk1NGM3Y2IwNGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNw
cApAQCAtMjAxLDcgKzIwMSw3IEBAIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdE
YXRhKCkKIAogaW5saW5lIFN0eWxlU2hhZG93U1ZHRGF0YTo6U3R5bGVTaGFkb3dTVkdEYXRhKGNv
bnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlU2hh
ZG93U1ZHRGF0YT4oKQotICAgICwgc2hhZG93KG90aGVyLnNoYWRvdyA/IHN0ZDo6bWFrZV91bmlx
dWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxscHRyKQorICAgICwgc2hhZG93KG90
aGVyLnNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm90aGVyLnNoYWRvdykgOiBudWxs
cHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0
YS5jcHAKaW5kZXggM2Q2MWM5NGMwMTY2MTYwODU4ZGFiZDg0MDlmYzQwODY3MGU1MDFjYS4uYzE3
ZWFmODU5YjBiZmFhN2RhYmMwMDhkNGU3NDBmYzYzMGE0YjgzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMzMsNyArMzMsNyBAQCBTaGFk
b3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCiAgICAgLCBtX2NvbG9yKG8u
bV9jb2xvcikKICAgICAsIG1fc3R5bGUoby5tX3N0eWxlKQogICAgICwgbV9pc1dlYmtpdEJveFNo
YWRvdyhvLm1faXNXZWJraXRCb3hTaGFkb3cpCi0gICAgLCBtX25leHQoby5tX25leHQgPyBzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQorICAgICwgbV9u
ZXh0KG8ubV9uZXh0ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby5tX25leHQpIDogbnVsbHB0
cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGFkMmNiZDk1N2VlZjgyNTYwY2ZiMzUy
ZTlmNTBiMzllNjMzYTI2ZmYuLjk2ZGJiYTAwN2U2YTY0YTdkNjk3YTI5YTIxZDYyMWFkNDQ3NTRi
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBpbmxpbmUgU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJ
bmhlcml0ZWREYQogICAgICwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihvLnZpc2l0ZWRM
aW5rVGV4dEVtcGhhc2lzQ29sb3IpCiAgICAgLCBjYXJldENvbG9yKG8uY2FyZXRDb2xvcikKICAg
ICAsIHZpc2l0ZWRMaW5rQ2FyZXRDb2xvcihvLnZpc2l0ZWRMaW5rQ2FyZXRDb2xvcikKLSAgICAs
IHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigq
by50ZXh0U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCB0ZXh0U2hhZG93KG8udGV4dFNoYWRvdyA/
IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oKm8udGV4dFNoYWRvdykgOiBudWxscHRyKQogICAgICwg
Y3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRlbnQpCiAgICAgLCBl
ZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRl
eCA2ZmJiMmI3YjBjM2ViMDNlODY5YTFlYWFjOTE2MTExOWM5YzYxZTliLi5iZGQwMTkxNWFhMjc4
ZGQ2YTY2NDhmZjRjM2ZiZGIzZmNjZDE0MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBA
IC0xMzksMTMgKzEzOSwxMyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwgc2Nyb2xs
U25hcEFyZWEoby5zY3JvbGxTbmFwQXJlYSkKICNlbmRpZgogICAgICwgY29udGVudChvLmNvbnRl
bnQgPyBvLmNvbnRlbnQtPmNsb25lKCkgOiBudWxscHRyKQotICAgICwgY291bnRlckRpcmVjdGl2
ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckRpcmVjdGl2
ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVsbHB0cikKKyAgICAsIGNvdW50ZXJEaXJl
Y3RpdmVzKG8uY291bnRlckRpcmVjdGl2ZXMgPyBtYWtlVW5pcXVlPENvdW50ZXJEaXJlY3RpdmVN
YXA+KCpvLmNvdW50ZXJEaXJlY3RpdmVzKSA6IG51bGxwdHIpCiAgICAgLCBhbHRUZXh0KG8uYWx0
VGV4dCkKLSAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IHN0ZDo6bWFrZV91bmlxdWU8U2hh
ZG93RGF0YT4oKm8uYm94U2hhZG93KSA6IG51bGxwdHIpCisgICAgLCBib3hTaGFkb3coby5ib3hT
aGFkb3cgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpvLmJveFNoYWRvdykgOiBudWxscHRyKQog
ICAgICwgd2lsbENoYW5nZShvLndpbGxDaGFuZ2UpCiAgICAgLCBib3hSZWZsZWN0KG8uYm94UmVm
bGVjdCkKLSAgICAsIGFuaW1hdGlvbnMoby5hbmltYXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxB
bmltYXRpb25MaXN0Pigqby5hbmltYXRpb25zKSA6IG51bGxwdHIpCi0gICAgLCB0cmFuc2l0aW9u
cyhvLnRyYW5zaXRpb25zID8gc3RkOjptYWtlX3VuaXF1ZTxBbmltYXRpb25MaXN0Pigqby50cmFu
c2l0aW9ucykgOiBudWxscHRyKQorICAgICwgYW5pbWF0aW9ucyhvLmFuaW1hdGlvbnMgPyBtYWtl
VW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDogbnVsbHB0cikKKyAgICAsIHRy
YW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRy
YW5zaXRpb25zKSA6IG51bGxwdHIpCiAgICAgLCBtYXNrKG8ubWFzaykKICAgICAsIG1hc2tCb3hJ
bWFnZShvLm1hc2tCb3hJbWFnZSkKICAgICAsIHBhZ2VTaXplKG8ucGFnZVNpemUpCkBAIC0xNzAs
NyArMTcwLDcgQEAgaW5saW5lIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW4KICAgICAsIGp1c3RpZnlJdGVtcyhv
Lmp1c3RpZnlJdGVtcykKICAgICAsIGp1c3RpZnlTZWxmKG8uanVzdGlmeVNlbGYpCiAgICAgLCBj
dXN0b21Qcm9wZXJ0aWVzKG8uY3VzdG9tUHJvcGVydGllcykKLSAgICAsIGN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXMoby5jdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID8gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMp
IDogbnVsbHB0cikKKyAgICAsIGN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMoby5jdXN0b21Q
YWludFdhdGNoZWRQcm9wZXJ0aWVzID8gbWFrZVVuaXF1ZTxIYXNoU2V0PFN0cmluZz4+KCpvLmN1
c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMpIDogbnVsbHB0cikKICNpZiBFTkFCTEUoUE9JTlRF
Ul9FVkVOVFMpCiAgICAgLCB0b3VjaEFjdGlvbnMoby50b3VjaEFjdGlvbnMpCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXgg
MmM2ZjMxNzhlZWIyNmM3YjJjMGQ5NWFlMTA4YjdlZmNjNmUyMmM0ZS4uMjRjZGU0YmQ2MWU3MTRj
MjMyM2I5ZTVjZDJjZjI2OWUyODQ1ZjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVuZGVyU1ZHSW1h
Z2U6OlJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUm
JiBzdHlsZSkKICAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogICAgICwgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUodHJ1ZSkKICAgICAsIG1fbmVlZHNU
cmFuc2Zvcm1VcGRhdGUodHJ1ZSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCisgICAgLCBtX2ltYWdlUmVzb3VyY2UobWFrZVVu
aXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQogewogICAgIGltYWdlUmVzb3VyY2UoKS5pbml0
aWFsaXplKCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lLmNwcAppbmRleCAzYzMxMDU2ZDFjYWIxZmVhMTA0OTA3ODBkMDBjOGRjZDJj
Nzk4MDY4Li5iYTFjZDA1MmRhZGFhMWNlMTg0MWM3YzIzY2FmMzNmYWE0ZTM0N2ViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIFJlbmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNz
RWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsCiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
bmxpbmVGbG93Qm94PiBSZW5kZXJTVkdJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQogewot
ICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbmxpbmVGbG93Qm94PigqdGhpcyk7
CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsKICAg
ICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KCk7CiAgICAgcmV0dXJuIGJveDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRl
eHQuY3BwCmluZGV4IDY3ZTZmOTg5N2QyNzc0NGZkNDEzM2ZmMjc2NzE0YzRlOWRhNjY1YjAuLmRi
ZjQ5MDNmODlmNGRjOTJlZGZmMzA1MzkyNTg2OWYzMmUyZDk5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcApAQCAtMTEz
LDcgKzExMyw3IEBAIHZvaWQgUmVuZGVyU1ZHSW5saW5lVGV4dDo6c3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlCiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
bmxpbmVUZXh0Qm94PiBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KCkKIHsKLSAg
ICBhdXRvIGJveCA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHSW5saW5lVGV4dEJveD4oKnRoaXMpOwor
ICAgIGF1dG8gYm94ID0gbWFrZVVuaXF1ZTxTVkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CiAgICAg
Ym94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwogICAgIHJldHVybiBib3g7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIuY3BwCmluZGV4IDFiM2VmMjRjYzkyZDIwNTJhMzRhYWQyMDg4MjMzMGUxYTEyM2I4
NGYuLjFhZDI2NDk2NDY3MDljMjNmMGRiOWNmYWU0Yjg2M2MyNDdiMzY5MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVy
PiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgRmxv
YXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gZmlsdGVyLnRhcmdldEJvdW5kaW5nQm94KCk7CiAK
ICAgICAvLyBBZGQgZWZmZWN0cyB0byB0aGUgYnVpbGRlcgotICAgIGF1dG8gYnVpbGRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oU291cmNlR3JhcGhpYzo6Y3JlYXRlKGZp
bHRlcikpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4o
U291cmNlR3JhcGhpYzo6Y3JlYXRlKGZpbHRlcikpOwogICAgIGJ1aWxkZXItPnNldFByaW1pdGl2
ZVVuaXRzKGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpKTsKICAgICBidWlsZGVyLT5z
ZXRUYXJnZXRCb3VuZGluZ0JveCh0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgCkBAIC0xMjIsNyAr
MTIyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOyAv
LyBBbHJlYWR5IGJ1aWx0LCBvciB3ZSdyZSBpbiBhIGN5Y2xlLCBvciB3ZSdyZSBtYXJrZWQgZm9y
IHJlbW92YWwuIFJlZ2FyZGxlc3MsIGp1c3QgZG8gbm90aGluZyBtb3JlIG5vdy4KICAgICB9CiAK
LSAgICBhdXRvIGZpbHRlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlckRhdGE+KCk7Cisg
ICAgYXV0byBmaWx0ZXJEYXRhID0gbWFrZVVuaXF1ZTxGaWx0ZXJEYXRhPigpOwogICAgIEZsb2F0
UmVjdCB0YXJnZXRCb3VuZGluZ0JveCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCk7CiAK
ICAgICBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzID0gU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJl
Y3RhbmdsZTxTVkdGaWx0ZXJFbGVtZW50PigmZmlsdGVyRWxlbWVudCgpLCBmaWx0ZXJFbGVtZW50
KCkuZmlsdGVyVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAK
aW5kZXggZDhhZDA4MDQ2NmM1YzZkOWVlY2YwNzhjZGZmNjQyNmM2MTRhMGNlMi4uNTUyY2U1YTMz
YTgwNjJlNmJlZTBiMDRhZTNmMTYwZjA5OWViNTJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBA
IC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KIAogICAgIGF1dG8mIGdy
YWRpZW50RGF0YSA9IG1fZ3JhZGllbnRNYXAuYWRkKCZyZW5kZXJlciwgbnVsbHB0cikuaXRlcmF0
b3ItPnZhbHVlOwogICAgIGlmICghZ3JhZGllbnREYXRhKQotICAgICAgICBncmFkaWVudERhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdyYWRpZW50RGF0YT4oKTsKKyAgICAgICAgZ3JhZGllbnREYXRh
ID0gbWFrZVVuaXF1ZTxHcmFkaWVudERhdGE+KCk7CiAKICAgICBib29sIGlzUGFpbnRpbmdUZXh0
ID0gcmVzb3VyY2VNb2RlLmNvbnRhaW5zKFJlbmRlclNWR1Jlc291cmNlTW9kZTo6QXBwbHlUb1Rl
eHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IGFhNTc2NWVkMzc5YjZhYjFiOTQ0NzI2ZjViNWVl
NDU0MzgzYzQ2NGUuLjRjODE5YjliYzU1ZGMyYmZhODJmYmJjMDk3ZjYzNzU4NWI1YjEyNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRl
CiAKICAgICBib29sIG1pc3NpbmdNYXNrZXJEYXRhID0gIW1fbWFza2VyLmNvbnRhaW5zKCZyZW5k
ZXJlcik7CiAgICAgaWYgKG1pc3NpbmdNYXNrZXJEYXRhKQotICAgICAgICBtX21hc2tlci5zZXQo
JnJlbmRlcmVyLCBzdGQ6Om1ha2VfdW5pcXVlPE1hc2tlckRhdGE+KCkpOworICAgICAgICBtX21h
c2tlci5zZXQoJnJlbmRlcmVyLCBtYWtlVW5pcXVlPE1hc2tlckRhdGE+KCkpOwogCiAgICAgTWFz
a2VyRGF0YSogbWFza2VyRGF0YSA9IG1fbWFza2VyLmdldCgmcmVuZGVyZXIpOwogICAgIEFmZmlu
ZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1
bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcAppbmRleCBjYzJjYmZjZjBmZTlhNTllY2UxNWY1MmYzNTcyZGI1OWQx
NjMyMGQ2Li4zMWJjNWYxOTMxYmRhZTUwYWFjNjYxMzU5ZmMwYTI2ZjE3ODU4NmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIGF1
dG8gcGF0dGVybkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EYXRhPigpOworICAgIGF1
dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5E
YXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxs
KCksIHRydWUsIHRydWUpOwogCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9y
bWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcAppbmRleCAzNGIwYWU3NWJkYzAwNTY1NzZkNTEzODAxODVlZmU2YmM3MmM3MDZlLi42YTY3
MTE4ZmYxYjI1OGIzMDNjOTU2Mzg1OTNmNDc0ZWU4OWJiZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtNzksNyArNzksNyBAQCBS
ZW5kZXJTVkdTaGFwZTo6flJlbmRlclNWR1NoYXBlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFJlbmRl
clNWR1NoYXBlOjp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKIHsKLSAgICBtX3BhdGggPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhdGg+KHBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KCZncmFwaGljc0VsZW1l
bnQoKSkpOworICAgIG1fcGF0aCA9IG1ha2VVbmlxdWU8UGF0aD4ocGF0aEZyb21HcmFwaGljc0Vs
ZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CiAgICAgcHJvY2Vzc01hcmtlclBvc2l0aW9ucygp
OwogCiAgICAgbV9maWxsQm91bmRpbmdCb3ggPSBjYWxjdWxhdGVPYmplY3RCb3VuZGluZ0JveCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4
IGJmNzg2NDQzZGRkNjBkNjIxYmNkNTc5Yjg3NzBlZGNkOTFkMjlmYTkuLjljNzM3Y2FmZjhiOTI3
NmNjNDEwNjAyZjU3OWE5ZjM2NGU1YTA4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIFNWR1Jlc291
cmNlczo6c2V0Q2xpcHBlcihSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIpCiAgICAg
QVNTRVJUKGNsaXBwZXItPnJlc291cmNlVHlwZSgpID09IENsaXBwZXJSZXNvdXJjZVR5cGUpOwog
CiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0
YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xp
cHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRh
LT5jbGlwcGVyID0gY2xpcHBlcjsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUyOSw3ICs1MjksNyBA
QCBib29sIFNWR1Jlc291cmNlczo6c2V0RmlsdGVyKFJlbmRlclNWR1Jlc291cmNlRmlsdGVyKiBm
aWx0ZXIpCiAgICAgQVNTRVJUKGZpbHRlci0+cmVzb3VyY2VUeXBlKCkgPT0gRmlsdGVyUmVzb3Vy
Y2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkKLSAgICAgICAg
bV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRl
ck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBtYWtl
VW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOwogCiAgICAgbV9jbGlwcGVyRmlsdGVy
TWFza2VyRGF0YS0+ZmlsdGVyID0gZmlsdGVyOwogICAgIHJldHVybiB0cnVlOwpAQCAtNTUwLDcg
KzU1MCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJTdGFydChSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlciogbWFya2VyU3RhcnQpCiAgICAgQVNTRVJUKG1hcmtlclN0YXJ0LT5yZXNvdXJj
ZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtlckRhdGEp
Ci0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0YT4oKTsK
KyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwogCiAgICAg
bV9tYXJrZXJEYXRhLT5tYXJrZXJTdGFydCA9IG1hcmtlclN0YXJ0OwogICAgIHJldHVybiB0cnVl
OwpAQCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRNYXJrZXJNaWQoUmVu
ZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtlck1pZCkKICAgICBBU1NFUlQobWFya2VyTWlkLT5y
ZXNvdXJjZVR5cGUoKSA9PSBNYXJrZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX21hcmtl
ckRhdGEpCi0gICAgICAgIG1fbWFya2VyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyRGF0
YT4oKTsKKyAgICAgICAgbV9tYXJrZXJEYXRhID0gbWFrZVVuaXF1ZTxNYXJrZXJEYXRhPigpOwog
CiAgICAgbV9tYXJrZXJEYXRhLT5tYXJrZXJNaWQgPSBtYXJrZXJNaWQ7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC01OTIsNyArNTkyLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldE1hcmtlckVuZChS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyRW5kKQogICAgIEFTU0VSVChtYXJrZXJFbmQt
PnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fbWFy
a2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJE
YXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7
CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlckVuZCA9IG1hcmtlckVuZDsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBib29sIFNWR1Jlc291cmNlczo6c2V0TWFza2VyKFJl
bmRlclNWR1Jlc291cmNlTWFza2VyKiBtYXNrZXIpCiAgICAgQVNTRVJUKG1hc2tlci0+cmVzb3Vy
Y2VUeXBlKCkgPT0gTWFza2VyUmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9jbGlwcGVyRmls
dGVyTWFza2VyRGF0YSkKLSAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CisgICAgICAgIG1fY2xpcHBl
ckZpbHRlck1hc2tlckRhdGEgPSBtYWtlVW5pcXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigp
OwogCiAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFza2VyID0gbWFza2VyOwogICAg
IHJldHVybiB0cnVlOwpAQCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRG
aWxsKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsKQogICAgICAgICAgICB8fCBmaWxs
LT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJlc291cmNlVHlwZSk7CiAKICAgICBp
ZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAgICBtX2ZpbGxTdHJva2VEYXRhID0g
bWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAgIG1fZmlsbFN0cm9rZURhdGEtPmZp
bGwgPSBmaWxsOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjU5LDcgKzY1OSw3IEBAIGJvb2wgU1ZH
UmVzb3VyY2VzOjpzZXRTdHJva2UoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIHN0cm9rZSkK
ICAgICAgICAgICAgfHwgc3Ryb2tlLT5yZXNvdXJjZVR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFJl
c291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fZmlsbFN0cm9rZURhdGEpCi0gICAgICAgIG1fZmls
bFN0cm9rZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOworICAgICAg
ICBtX2ZpbGxTdHJva2VEYXRhID0gbWFrZVVuaXF1ZTxGaWxsU3Ryb2tlRGF0YT4oKTsKIAogICAg
IG1fZmlsbFN0cm9rZURhdGEtPnN0cm9rZSA9IHN0cm9rZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAK
aW5kZXggMTkxOTVhYTFkYWJjNjZlNGIzNTY1OTcyZWM5MWY4OTQ3N2Y0MDM5Yi4uMWVlYjc4ZjU3
YjNlYmIzMWI0Y2RlOGU1MzAyZGRlMDllMDQ4YzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAg
dm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJlbmRlcmVyKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdAogICAgIEFTU0VSVCghbV9jYWNoZS5jb250YWlucygmcmVu
ZGVyZXIpKTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBhbGwgcmVzb3VyY2VzIGFzc29jaWF0
ZWQgd2l0aCB0aGUgcGFzc2VkIFJlbmRlck9iamVjdAotICAgIGF1dG8gbmV3UmVzb3VyY2VzID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdSZXNvdXJjZXM+KCk7CisgICAgYXV0byBuZXdSZXNvdXJjZXMg
PSBtYWtlVW5pcXVlPFNWR1Jlc291cmNlcz4oKTsKICAgICBpZiAoIW5ld1Jlc291cmNlcy0+YnVp
bGRDYWNoZWRSZXNvdXJjZXMocmVuZGVyZXIsIHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVp
bGRlci5jcHAKaW5kZXggMzI0MTAyNTg0YzFmMTEzZDBlZWQzMzIxNGE2N2Y1NTM0YWIwZjU5YS4u
ODEwYTBiODgwYThhYTRkYWUwMmZhYjQ0NmE5NDFlZGQ5YzVhNzFkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApA
QCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjppbml0aWFsaXpl
TWVhc3VyZW1lbnRXaXRoVGV4dFJlbmRlcmVyKFJlbmRlclNWR0lubGluCiAgICAgaWYgKG1faXND
b21wbGV4VGV4dCkKICAgICAgICAgbV9zaW1wbGVXaWR0aEl0ZXJhdG9yID0gbnVsbHB0cjsKICAg
ICBlbHNlCi0gICAgICAgIG1fc2ltcGxlV2lkdGhJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2lkdGhJdGVyYXRvcj4oJnNjYWxlZEZvbnQsIG1fcnVuKTsKKyAgICAgICAgbV9zaW1wbGVXaWR0
aEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9ydW4p
OwogfQogCiBzdHJ1Y3QgTWVhc3VyZVRleHREYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGQzN2Jl
ZThjYmNlNTU2MTUxMWIyNGUzNjRlMWFmNjRhYWQ3YWE3NWQuLmU2YjI3MzIwZDkyZmU4NTZkODM3
NDEwOGVkOTU0MmUwOTFlZWFmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMTIyLDIyICsxMjIsMjIg
QEAgc3RhdGljIHZvaWQgZ2V0SW5saW5lUnVuKFJlbmRlck9iamVjdCogc3RhcnQsIFJlbmRlck9i
amVjdCogYm91bmRhcnksIFJlbmRlck9iamUKIAogUmVuZGVyVHJlZUJ1aWxkZXI6OlJlbmRlclRy
ZWVCdWlsZGVyKFJlbmRlclZpZXcmIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1f
Zmlyc3RMZXR0ZXJCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkK
LSAgICAsIG1fbGlzdEJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxMaXN0PigqdGhpcykpCi0gICAg
LCBtX211bHRpQ29sdW1uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ29sdW1uPigqdGhp
cykpCi0gICAgLCBtX3RhYmxlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPFRhYmxlPigqdGhpcykp
Ci0gICAgLCBtX3J1YnlCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8UnVieT4oKnRoaXMpKQotICAg
ICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNvbnRyb2xzPigq
dGhpcykpCi0gICAgLCBtX2Jsb2NrQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2NrPigqdGhp
cykpCi0gICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIoc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zsb3c+
KCp0aGlzKSkKLSAgICAsIG1faW5saW5lQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPElubGluZT4o
KnRoaXMpKQotICAgICwgbV9zdmdCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8U1ZHPigqdGhpcykp
CisgICAgLCBtX2ZpcnN0TGV0dGVyQnVpbGRlcihtYWtlVW5pcXVlPEZpcnN0TGV0dGVyPigqdGhp
cykpCisgICAgLCBtX2xpc3RCdWlsZGVyKG1ha2VVbmlxdWU8TGlzdD4oKnRoaXMpKQorICAgICwg
bV9tdWx0aUNvbHVtbkJ1aWxkZXIobWFrZVVuaXF1ZTxNdWx0aUNvbHVtbj4oKnRoaXMpKQorICAg
ICwgbV90YWJsZUJ1aWxkZXIobWFrZVVuaXF1ZTxUYWJsZT4oKnRoaXMpKQorICAgICwgbV9ydWJ5
QnVpbGRlcihtYWtlVW5pcXVlPFJ1Ynk+KCp0aGlzKSkKKyAgICAsIG1fZm9ybUNvbnRyb2xzQnVp
bGRlcihtYWtlVW5pcXVlPEZvcm1Db250cm9scz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0J1aWxk
ZXIobWFrZVVuaXF1ZTxCbG9jaz4oKnRoaXMpKQorICAgICwgbV9ibG9ja0Zsb3dCdWlsZGVyKG1h
a2VVbmlxdWU8QmxvY2tGbG93PigqdGhpcykpCisgICAgLCBtX2lubGluZUJ1aWxkZXIobWFrZVVu
aXF1ZTxJbmxpbmU+KCp0aGlzKSkKKyAgICAsIG1fc3ZnQnVpbGRlcihtYWtlVW5pcXVlPFNWRz4o
KnRoaXMpKQogI2lmIEVOQUJMRShNQVRITUwpCi0gICAgLCBtX21hdGhNTEJ1aWxkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxNYXRoTUw+KCp0aGlzKSkKKyAgICAsIG1fbWF0aE1MQnVpbGRlcihtYWtlVW5p
cXVlPE1hdGhNTD4oKnRoaXMpKQogI2VuZGlmCi0gICAgLCBtX2NvbnRpbnVhdGlvbkJ1aWxkZXIo
c3RkOjptYWtlX3VuaXF1ZTxDb250aW51YXRpb24+KCp0aGlzKSkKKyAgICAsIG1fY29udGludWF0
aW9uQnVpbGRlcihtYWtlVW5pcXVlPENvbnRpbnVhdGlvbj4oKnRoaXMpKQogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLSAgICAsIG1fZnVsbFNjcmVlbkJ1aWxkZXIoc3RkOjptYWtlX3VuaXF1
ZTxGdWxsU2NyZWVuPigqdGhpcykpCisgICAgLCBtX2Z1bGxTY3JlZW5CdWlsZGVyKG1ha2VVbmlx
dWU8RnVsbFNjcmVlbj4oKnRoaXMpKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNf
Y3VycmVudCB8fCAmbV92aWV3ICE9ICZzX2N1cnJlbnQtPm1fdmlldyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApp
bmRleCA5YTk4ZDI1YzMyYjkzNjRiNDZhNmFlY2ZjM2NmZmRjNmM0NjZmNGQyLi5iOWQyMDdmN2Rm
ZDMyNDZmZTAzMDg2Yzg0Y2EyMDFiY2I3YjkxOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyoKIAogUmVuZGVyVHJlZVVwZGF0ZXI6OlJl
bmRlclRyZWVVcGRhdGVyKERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9j
dW1lbnQpCi0gICAgLCBtX2dlbmVyYXRlZENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxHZW5lcmF0
ZWRDb250ZW50PigqdGhpcykpCisgICAgLCBtX2dlbmVyYXRlZENvbnRlbnQobWFrZVVuaXF1ZTxH
ZW5lcmF0ZWRDb250ZW50PigqdGhpcykpCiAgICAgLCBtX2J1aWxkZXIocmVuZGVyVmlldygpKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVJbnZhbGlkYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcAppbmRleCBkYWUx
MWNiMmY2Mjg5OTE4NDUzYTEyODA5YWU0M2I4MTI0YjZiMTJiLi42ZDY5NWE2NjBkMGU0ZTA0NWEy
NmRhYmUzMzMxZWNhMjZmYWQyZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUludmFsaWRhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUludmFs
aWRhdG9yLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGREaXJ0eUFsbFN0
eWxlKGNvbnN0IFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiYgc2hlZXRzKQogfQogCiBJbnZh
bGlkYXRvcjo6SW52YWxpZGF0b3IoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50cyo+JiBz
aGVldHMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGlhUXVlcnlFdmFsdWF0b3IpCi0g
ICAgOiBtX293bmVkUnVsZVNldChzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTZXQ+KCkpCisgICAgOiBt
X293bmVkUnVsZVNldChtYWtlVW5pcXVlPFJ1bGVTZXQ+KCkpCiAgICAgLCBtX3J1bGVTZXQoKm1f
b3duZWRSdWxlU2V0KQogICAgICwgbV9kaXJ0aWVzQWxsU3R5bGUoc2hvdWxkRGlydHlBbGxTdHls
ZShzaGVldHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxh
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCmluZGV4
IDRkODE0OGI0ZTMxZDc0ZDZhMGE1MTc1NGRlZTVlYWI4MDc1OWFiYWEuLjA2MmQ1OTY0ZDc3ZWM1
ZGI4M2IzZjQxYWNiYWE4N2VmY2U5OGRkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVsYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
bGF0aW9ucy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbGF0aW9ucz4g
Y29tbWl0UmVsYXRpb25zVG9SZW5kZXJTdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnMKIAog
ICAgIGF1dG8gYXBwZW5kU3R5bGVSZWxhdGlvbiA9IFsmcmVtYWluaW5nUmVsYXRpb25zXSAoY29u
c3QgUmVsYXRpb24mIHJlbGF0aW9uKSB7CiAgICAgICAgIGlmICghcmVtYWluaW5nUmVsYXRpb25z
KQotICAgICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxSZWxh
dGlvbnM+KCk7CisgICAgICAgICAgICByZW1haW5pbmdSZWxhdGlvbnMgPSBtYWtlVW5pcXVlPFJl
bGF0aW9ucz4oKTsKICAgICAgICAgcmVtYWluaW5nUmVsYXRpb25zLT5hcHBlbmQocmVsYXRpb24p
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggOWYwZDFhZDc0
OTBiZmVhYjI0MDdjZTdiYzg4YjA5NTExNmQwYjIyMi4uZGNiNjViYzA5YzM0Nzc5YjYzYTI5MzI0
ZTI0ZDM3MmJmYzZhMjNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgU3R5bGVSZXNvbHZlciYgU2NvcGU6OnJlc29sdmVyKCkKICAgICBpZiAoIW1f
cmVzb2x2ZXIpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVz
b2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9y
ZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7Cisg
ICAgICAgIG1fcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KG1fZG9jdW1lbnQp
OwogCiAgICAgICAgIGlmICghbV9zaGFkb3dSb290KSB7CiAgICAgICAgICAgICBtX2RvY3VtZW50
LmZvbnRTZWxlY3RvcigpLmJ1aWxkU3RhcnRlZCgpOwpAQCAtNTYzLDcgKzU2Myw3IEBAIGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0Zv
ckluc3BlY3RvcigpCiBib29sIFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKGNvbnN0
IENTU1N0eWxlU2hlZXQqIHNoZWV0KSBjb25zdAogewogICAgIGlmICghbV93ZWFrQ29weU9mQWN0
aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwKSB7Ci0gICAgICAgIG1fd2Vha0NvcHlPZkFj
dGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNl
dDxjb25zdCBDU1NTdHlsZVNoZWV0Kj4+KCk7CisgICAgICAgIG1fd2Vha0NvcHlPZkFjdGl2ZVN0
eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cCA9IG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBDU1NT
dHlsZVNoZWV0Kj4+KCk7CiAgICAgICAgIGZvciAoYXV0byYgYWN0aXZlU3R5bGVTaGVldCA6IG1f
YWN0aXZlU3R5bGVTaGVldHMpCiAgICAgICAgICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNo
ZWV0TGlzdEZvckZhc3RMb29rdXAtPmFkZChhY3RpdmVTdHlsZVNoZWV0LmdldCgpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXggODQ2YTIz
MWFkMmIxOGI1ZDdmMjk0OTAxNmQwOWYyMjNkZDY5ZTg4Yi4uYTAwZjRmZTBmNGNjYjUyZGQ4MzFh
OTRlMjZhNTg2NGU1YzFiNzkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJl
c29sdmVyLmNwcApAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGU+IFRy
ZWVSZXNvbHZlcjo6cmVzb2x2ZSgpCiAKICAgICBtX2RpZFNlZVBlbmRpbmdTdHlsZXNoZWV0ID0g
bV9kb2N1bWVudC5zdHlsZVNjb3BlKCkuaGFzUGVuZGluZ1NoZWV0c0JlZm9yZUJvZHkoKTsKIAot
ICAgIG1fdXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOworICAg
IG1fdXBkYXRlID0gbWFrZVVuaXF1ZTxVcGRhdGU+KG1fZG9jdW1lbnQpOwogICAgIG1fc2NvcGVT
dGFjay5hcHBlbmQoYWRvcHRSZWYoKm5ldyBTY29wZShtX2RvY3VtZW50KSkpOwogICAgIG1fcGFy
ZW50U3RhY2suYXBwZW5kKFBhcmVudChtX2RvY3VtZW50KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggYmM1MTQzNGIwYjJiOGUwYmY3N2U1
N2E0YTc2ZTRkNGJjZWVlOTk2NS4uMjVmMzg2M2QwNzk1NGFjOGQ2YTYzZTY4NjRhMWYwNzZiMGQ1
MWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBt
X2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9yZXNvdXJjZXNDYWNoZShzdGQ6Om1ha2VfdW5p
cXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQorICAgICwgbV9yZXNvdXJjZXNDYWNoZShtYWtlVW5p
cXVlPFNWR1Jlc291cmNlc0NhY2hlPigpKQogICAgICwgbV9hcmVBbmltYXRpb25zUGF1c2VkKCFk
b2N1bWVudC5wYWdlKCkgfHwgIWRvY3VtZW50LnBhZ2UoKS0+aXNWaXNpYmxlKCkpCiB7CiB9CkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdS
ZXNvdXJjZShjb25zdCBBdG9tU3RyaW5nJiBpZCwgRWxlbWVudCYgZWwKIAogICAgIGF1dG8gcmVz
dWx0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nRWxlbWVudHM+KCk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBtYWtlVW5pcXVlPFBlbmRpbmdFbGVtZW50cz4oKTsKICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLT5hZGQoJmVsZW1lbnQpOwogCiAgICAgZWxlbWVudC5zZXRIYXNQZW5kaW5nUmVzb3Vy
Y2VzKCk7CkBAIC0yNzksNyArMjc5LDcgQEAgSGFzaFNldDxTVkdFbGVtZW50Kj4qIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6c2V0T2ZFbGVtZW50c1JlZmVyZW5jaW5nVGFyZ2V0KFNWR0UKIHZvaWQg
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQoU1ZHRWxl
bWVudCYgcmVmZXJlbmNpbmdFbGVtZW50LCBTVkdFbGVtZW50JiByZWZlcmVuY2VkRWxlbWVudCkK
IHsKICAgICBhdXRvIHJlc3VsdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5lbnN1cmUoJnJlZmVy
ZW5jZWRFbGVtZW50LCBbJnJlZmVyZW5jaW5nRWxlbWVudF0gewotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxIYXNoU2V0PFNWR0VsZW1lbnQqPj4oc3RkOjppbml0aWFsaXplcl9saXN0
PFNWR0VsZW1lbnQqPiB7ICZyZWZlcmVuY2luZ0VsZW1lbnQgfSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+PihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZH
RWxlbWVudCo+IHsgJnJlZmVyZW5jaW5nRWxlbWVudCB9KTsKICAgICB9KTsKICAgICBpZiAoIXJl
c3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hZGQoJnJl
ZmVyZW5jaW5nRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYTgwOTZk
ZGFkYTgxZWFkNmE3YTFlYTMyNGNkODUwNjdmNWMwYjI4Yi4uZTRkZTNiNzQ5ZjBhMDAzOWJjNWM0
Y2ZjZDA4ZTE5Mzk2Y2Q2NTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMTYx
LDcgKzE2MSw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgSGFzaE1hcDxBdG9tU3RyaW5nSW1wbCos
IENTU1Byb3BlcnR5SUQ+IGNyZWF0ZUF0dHJpYnV0ZU5hbWVUCiBTVkdFbGVtZW50OjpTVkdFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKICAg
ICA6IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZVNWR0VsZW1lbnQpCiAg
ICAgLCBTVkdMYW5nU3BhY2UodGhpcykKLSAgICAsIG1fcHJvcGVydHlBbmltYXRvckZhY3Rvcnko
c3RkOjptYWtlX3VuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeT4oKSkKKyAgICAsIG1f
cHJvcGVydHlBbmltYXRvckZhY3RvcnkobWFrZVVuaXF1ZTxTVkdQcm9wZXJ0eUFuaW1hdG9yRmFj
dG9yeT4oKSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFNWR0Vs
ZW1lbnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlIGNoYW5nZSkKIFNWR0VsZW1lbnRS
YXJlRGF0YSYgU1ZHRWxlbWVudDo6ZW5zdXJlU1ZHUmFyZURhdGEoKQogewogICAgIGlmICghbV9z
dmdSYXJlRGF0YSkKLSAgICAgICAgbV9zdmdSYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZH
RWxlbWVudFJhcmVEYXRhPigpOworICAgICAgICBtX3N2Z1JhcmVEYXRhID0gbWFrZVVuaXF1ZTxT
VkdFbGVtZW50UmFyZURhdGE+KCk7CiAgICAgcmV0dXJuICptX3N2Z1JhcmVEYXRhOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IGE3NTg5MGYzMTgw
NDY4ZDE1MjRiZWU4NTQzNTlkMDM1NmViNTIyMmQuLjgwZWM3ZmM4NjI5MmI2M2JiYmE4NTFlMTFl
MTA2ZmExNTJmOTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
Y3BwCkBAIC0xMTksNyArMTE5LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVu
dDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiBBZmZpbmVUcmFuc2Zvcm0qIFNWR0dy
YXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkKIHsKICAgICBpZiAoIW1fc3Vw
cGxlbWVudGFsVHJhbnNmb3JtKQotICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHN0
ZDo6bWFrZV91bmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOworICAgICAgICBtX3N1cHBsZW1lbnRh
bFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8QWZmaW5lVHJhbnNmb3JtPigpOwogICAgIHJldHVybiBt
X3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEJ5dGVTdHJlYW0uaAppbmRleCA2ZjBhY2FjZjE5ZWU4NTBkYjRlNjkxMGQzZTgzZDI2NDk0ZDY3
ZWIwLi40MzRkOTFlYjNkZjhhZDg3OWY4MzlhNDg5NjY4Njc4MGI0MDlmMjVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBTVkdQ
YXRoQnl0ZVN0cmVhbSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+
IGNvcHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
UGF0aEJ5dGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUGF0
aEJ5dGVTdHJlYW0+KCp0aGlzKTsKICAgICB9CiAKICAgICBEYXRhSXRlcmF0b3IgYmVnaW4oKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAppbmRleCBlMDQyM2NlOTgxNWZhMGYy
NTU2M2EzYjU0MzE0MDg2YWMzNTZmZjQ0Li4zZWI1N2FkMmYyMWRmYTY0YjliMTE4MDFmNDI3Mjgz
NjAyYjc1YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVy
OjpzY2hlZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0YXJnZXQs
CiAgICAgRWxlbWVudEF0dHJpYnV0ZVBhaXIga2V5KHRhcmdldCwgYXR0cmlidXRlTmFtZSk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvbnNWZWN0b3I+JiBzY2hlZHVsZWQgPSBtX3NjaGVk
dWxlZEFuaW1hdGlvbnMuYWRkKGtleSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlm
ICghc2NoZWR1bGVkKQotICAgICAgICBzY2hlZHVsZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1h
dGlvbnNWZWN0b3I+KCk7CisgICAgICAgIHNjaGVkdWxlZCA9IG1ha2VVbmlxdWU8QW5pbWF0aW9u
c1ZlY3Rvcj4oKTsKICAgICBBU1NFUlQoIXNjaGVkdWxlZC0+Y29udGFpbnMoYW5pbWF0aW9uKSk7
CiAgICAgc2NoZWR1bGVkLT5hcHBlbmQoYW5pbWF0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggODA5YWZmNWQ4ODUzNzEyMDcyYWQ4NzE1NjczNWU5
MzBmOWJhMzVjZC4uNWM1NmI2OTk5NWJjOTJmNGNhODgxZTJiOTFlOWYzN2ZmNWMzOGY1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NTcsNyArNDU3LDcg
QEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBhdXRvIHBhZ2VD
b25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCk7Ci0gICAg
ICAgIG1fY2hyb21lQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVu
dD4odGhpcyk7CisgICAgICAgIG1fY2hyb21lQ2xpZW50ID0gbWFrZVVuaXF1ZTxTVkdJbWFnZUNo
cm9tZUNsaWVudD4odGhpcyk7CiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVu
dCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIFNW
RyBlbmRzIHVwIGxvYWRpbmcgaXRzZWxmLCB3ZSBtaWdodCBsZWFrIHRoZSB3b3JsZC4KQEAgLTQ2
Niw3ICs0NjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIC8vIFRoaXMgd2lsbCBiZWNvbWUgYW4gaXNzdWUg
d2hlbiBTVkdJbWFnZSB3aWxsIGJlIGFibGUgdG8gbG9hZCBvdGhlcgogICAgICAgICAvLyBTVkdJ
bWFnZSBvYmplY3RzLCBidXQgd2UncmUgc2FmZSBub3csIGJlY2F1c2UgU1ZHSW1hZ2UgY2FuIG9u
bHkgYmUKICAgICAgICAgLy8gbG9hZGVkIGJ5IGEgdG9wLWxldmVsIGRvY3VtZW50LgotICAgICAg
ICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pKTsKKyAgICAgICAgbV9wYWdlID0gbWFrZVVuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uKSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQo
ZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZChmYWxz
ZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERl
Y29yYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZERlY29yYXRlZFByb3BlcnR5LmgKaW5kZXggZTVlZmFhZWE3MTExYmM2Yzk1N2Q5NzJkNzQ1
NDhkZTkyZDhhMTMzZS4uY2ViYWEzNjNiZjUyN2JiYjM4ZTU2N2QzZTNkNDJiZjg0MzEwMmE3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNv
cmF0ZWRQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBTVkdBbmlt
YXRlZERlY29yYXRlZFByb3BlcnR5IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHkgewogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgdHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0
eSA9IFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk+CiAgICAgc3RhdGljIFJlZjxBbmltYXRl
ZFByb3BlcnR5PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmltYXRlZFByb3BlcnR5KGNvbnRleHRFbGVtZW50
LCBzdGQ6Om1ha2VfdW5pcXVlPERlY29yYXRlZFByb3BlcnR5PERlY29yYXRpb25UeXBlLCBQcm9w
ZXJ0eVR5cGU+PigpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1hdGVkUHJv
cGVydHkoY29udGV4dEVsZW1lbnQsIG1ha2VVbmlxdWU8RGVjb3JhdGVkUHJvcGVydHk8RGVjb3Jh
dGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBQcm9wZXJ0eVR5cGUsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHkgPSBTVkdBbmltYXRl
ZERlY29yYXRlZFByb3BlcnR5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDI4
ODc0MWIxMjkwNWNiODUxNDMwNTQwOTBjNGUyYzkxMzliMzViZjMuLmQwNzM3YWNiYTMzMWZlMTIz
NDdiODM0ZmY3YWEzMDEwMGFkMTU2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgK
QEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmkKIHB1YmxpYzoKICAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR0FuaW1hdGVkQW5nbGU+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUp
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xl
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBCiAKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRp
dGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVk
Qm9vbGVhbkFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC04OSw3ICs4OSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkRW51
bWVyYXRpb25BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3I8CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiYgYW5pbWF0ZWQsIEFu
aW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1
bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmli
dXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbkFuaW1hdG9yPEVudW1UeXBlPj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0EKIAog
ICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWRJbnRlZ2VyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2Rl
LCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBTVkdBbmltYXRl
ZExlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRv
cjxTVkdBbgogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZExlbmd0aD4mIGFuaW1hdGVkLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0
cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxh
dGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1h
dGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2Rl
KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG9yPFMKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiYgYW5pbWF0ZWQsIEFuaW1h
dGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVs
YXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZExlbmd0aExpc3RBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTcyLDcgKzE3Miw3IEBAIGNs
YXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZE51bWJlcj4m
IGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2Rl
LCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I+KGF0dHJpYnV0
ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVy
QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTg5
LDcgKzE4OSw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTCiBwdWJsaWM6CiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdB
bmltYXRlZE51bWJlckxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2Rl
LCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUp
CiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJl
ckxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7
CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTIwNiw3ICsyMDYsNyBAQCBjbGFzcyBTVkdBbmlt
YXRlZFBhdGhTZWdMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yPAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdD4mIGFuaW1h
dGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBp
c0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRQYXRoU2Vn
TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2Fs
Y01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTIyNCw3ICsyMjQsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yIGZpbmFs
IDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVgogcHVibGljOgogICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8
U1ZHQW5pbWF0ZWRQb2ludExpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRp
dmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBv
aW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OwogICAgIH0KICAgICAKIHByaXZhdGU6CkBAIC0yNDMsNyArMjQzLDcgQEAgY2xhc3MgU1ZHQW5p
bWF0ZWRPcmllbnRUeXBlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yPFMKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1h
dGVkLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29s
IGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE9yaWVudFR5
cGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0y
NjIsNyArMjYyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0
b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUEKIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4mIGFuaW1hdGVkLCBBbmltYXRpb25Nb2RlIGFu
aW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wg
aXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9B
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yODEs
NyArMjgxLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW0KIAogICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRS
ZWN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUmVj
dEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5
OCw3ICsyOTgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yIGZpbmFsIDogcHVi
bGljIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbgogcHVibGljOgogICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
QW5pbWF0ZWRTdHJpbmc+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFN0cmluZ0Fu
aW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUs
IGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
VkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAog
cHJpdmF0ZToKQEAgLTMzOCw3ICszMzgsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0bwogcHVi
bGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlv
bk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRl
ZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5p
bWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oCmluZGV4IDRlZGEzNGM5YjE4ODhmZmQ2ZDNkNjYzMmNm
MGNmNmQzM2E2ZmE5ZTEuLjM5N2ZmMDkxNTk0MDBkMzNjMDUyYjExZDgyOGNiOGUzN2IzYzgwNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaApAQCAtNDAsNyArNDAsNyBA
QCBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmds
ZT4mIGFuaW1hdGVkMSwgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4mIGFuaW1hdGVkMiwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdBbmltYXRlZEFuZ2xlT3JpZW50QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQW5n
bGVPcmllbnRBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2Vy
UGFpckFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWEK
IHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMSwgUmVmPFNWR0Fu
aW1hdGVkSW50ZWdlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJQ
YWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRp
b25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xNTYsNyArMTU2
LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXQKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
TnVtYmVyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDIsIEFu
aW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1
bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkTnVt
YmVyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0RlY29yYXRlZEVudW1lcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCmluZGV4IDI2NGMzNmI2OTA3NGNjZjNlMmUyOWQyNjc3
MjFjZjUzNzQ1NzAzMTEuLmEzNWUyNTBhOWIxNTFmOWU4OTdmODVmNjM2N2MzODdkYmIzY2E1NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVu
dW1lcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3Jh
dGVkRW51bWVyYXRpb24uaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdEZWNvcmF0ZWRFbnVt
ZXJhdGlvbiA6IHB1YmxpYyBTVkdEZWNvcmF0ZWRQcmltaXRpdmU8RGVjb3JhdGlvblR5cGUsIEVu
dQogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBFbnVtVHlwZSYgdmFsdWUpCiAgICAgewog
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8RGVjb3JhdGlvblR5cGU+Ojp2
YWx1ZSwgIkRlY29yYXRpb25UeXBlIGZvcm0gZW51bSBzaG91bGQgYmUgaW50ZWdyYWwuIik7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0aW9uPih2
YWx1ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0RlY29yYXRlZEVudW1lcmF0aW9u
Pih2YWx1ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oCmluZGV4
IDQxMjE3MjIwYmRmY2ZlZmY2N2MxNjA5MTNhZDE0ZDZiOTliYTE0MmMuLjY4YjJlMGIxMTM3YWRl
OGQzN2Y4MGUwZTI5OGI1ZGUyNGQwMWE4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvciA6IHB1Ymxp
YyBTVkdQcm9wZXJ0eUFuaW1hdG9yPEFuaW1hdGlvbkZ1bmN0aW8KIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNN
b2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1v
dmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNB
ZGRpdGl2ZSk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJv
cGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRleCAxMTg4ODZjNGY4YmI3MjM2YTQ0NmZmYWQw
Mzg2OWZmMGIwZGNkZTk1Li5mZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEyODc5YTdlZGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3Bl
cnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
VmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xl
bmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdM
ZW5ndGgsIFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0
eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBM
ZW5ndGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOwogICAg
IH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVy
dHlMaXN0QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCmluZGV4IDVlZThhYzNkMGY0ZTEyYzYyYTVl
ZmMwMGZmNTNiNTkwZTQwMGYzNjguLmFlOTRlMjllZDRiODYxM2I5OWNkOTc0ODZlZDBiMDYyODI2
YzAyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVl
UHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaApAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBTVkdMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9w
ZXJ0eUxpc3RBbmltYXRvcjxTVkdMZW5ndAogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYg
cHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFNWR0xlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0
eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBM
ZW5ndGhNb2RlT3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFy
Z2V0RWxlbWVudCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCmluZGV4IDU1ODI1OGQyYmZjNmEyNmZkMTRlYWYyOTE3MmVhNzgyNWQ4ZDcyNWIu
LjI0Mzc4OWJiOWQyNzlhNmU4NTNlMDg2NDRiNjRiZWU4NTFlNWVlMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIGNv
bnN0IGNoYXIqIEludGVybmFsU2V0dGluZ3M6OnN1cHBsZW1lbnROYW1lKCkKIEludGVybmFsU2V0
dGluZ3MqIEludGVybmFsU2V0dGluZ3M6OmZyb20oUGFnZSogcGFnZSkKIHsKICAgICBpZiAoIVN1
cHBsZW1lbnQ8UGFnZT46OmZyb20ocGFnZSwgc3VwcGxlbWVudE5hbWUoKSkpCi0gICAgICAgIFN1
cHBsZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1h
a2VfdW5pcXVlPEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CisgICAgICAgIFN1cHBs
ZW1lbnQ8UGFnZT46OnByb3ZpZGVUbyhwYWdlLCBzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVl
PEludGVybmFsU2V0dGluZ3NXcmFwcGVyPihwYWdlKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEludGVybmFsU2V0dGluZ3NXcmFwcGVyKj4oU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBz
dXBwbGVtZW50TmFtZSgpKSktPmludGVybmFsU2V0dGluZ3MoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDI0NjZiZmU1M2Y5ZmE3ODA2ZDcyNGI4MWVkNDc3MGEz
OWFmOTkxM2QuLjU4ZDRiNTFkZmIxMWQ0ZTllM2I1ZTAzOWI3YzU3YjExZWIyNDM3M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCBjbGFzcyBJ
bnNwZWN0b3JTdHViRnJvbnRlbmQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbCwgcHVibGljCiB9OwogCiBJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0
dWJGcm9udGVuZChQYWdlJiBpbnNwZWN0ZWRQYWdlLCBSZWZQdHI8RE9NV2luZG93PiYmIGZyb250
ZW5kV2luZG93KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVk
UGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCksIGZyb250ZW5kV2luZG93LT5kb2N1bWVudCgpLT5w
YWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0
dGluZ3M+KCkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQ
YWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJvbnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBh
Z2UoKSwgbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4o
KSkKICAgICAsIG1fZnJvbnRlbmRXaW5kb3coZnJvbnRlbmRXaW5kb3cuY29weVJlZigpKQogewog
ICAgIEFTU0VSVF9BUkcoZnJvbnRlbmRXaW5kb3csIGZyb250ZW5kV2luZG93KTsKQEAgLTU2Nyw3
ICs1NjcsNyBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
YXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+
cGFnZSgpICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGF1dG8gbW9ja1BheW1l
bnRDb29yZGluYXRvciA9IG5ldyBNb2NrUGF5bWVudENvb3JkaW5hdG9yKCpmcmFtZS0+cGFnZSgp
KTsKLSAgICAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0UGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8UGF5bWVudENvb3JkaW5hdG9yPigqbW9ja1BheW1lbnRDb29yZGluYXRvcikpOwor
ICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQYXltZW50Q29vcmRpbmF0b3IobWFrZVVuaXF1ZTxQ
YXltZW50Q29vcmRpbmF0b3I+KCptb2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CiAgICAgfQogI2Vu
ZGlmCiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCB2b2lkIEludGVybmFsczo6ZW5hYmxlTW9ja1Nw
ZWVjaFN5bnRoZXNpemVyKCkKICAgICBpZiAoIXN5bnRoZXNpcykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOworICAgIHN5bnRoZXNp
cy0+c2V0UGxhdGZvcm1TeW50aGVzaXplcihtYWtlVW5pcXVlPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrPihzeW50aGVzaXMpKTsKIH0KIAogI2VuZGlmCkBAIC0yNDg3LDcgKzI0ODcsNyBA
QCBSZWZQdHI8V2luZG93UHJveHk+IEludGVybmFsczo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgYXV0byogaW5zcGVjdGVkUGFnZSA9IGNvbnRleHRE
b2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgYXV0byogd2luZG93ID0gaW5zcGVjdGVk
UGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CiAgICAgYXV0byBmcm9u
dGVuZFdpbmRvd1Byb3h5ID0gd2luZG93LT5vcGVuKCp3aW5kb3csICp3aW5kb3csIHVybCwgIiIs
ICIiKS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kID0gc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3du
Y2FzdDxET01XaW5kb3c+KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CisgICAgbV9p
bnNwZWN0b3JGcm9udGVuZCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yU3R1YkZyb250ZW5kPigqaW5z
cGVjdGVkUGFnZSwgZG93bmNhc3Q8RE9NV2luZG93Pihmcm9udGVuZFdpbmRvd1Byb3h5LT53aW5k
b3coKSkpOwogICAgIHJldHVybiBmcm9udGVuZFdpbmRvd1Byb3h5OwogfQogCkBAIC0zMDA3LDcg
KzMwMDcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldFZpZXdFeHBvc2VkUmVj
dChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZgogCiB2b2lkIEludGVybmFsczo6c2V0
UHJpbnRpbmcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIHByaW50Q29udGV4dEZvclRl
c3RpbmcoKSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKKyAgICBw
cmludENvbnRleHRGb3JUZXN0aW5nKCkgPSBtYWtlVW5pcXVlPFByaW50Q29udGV4dD4oZnJhbWUo
KSk7CiAgICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpLT5iZWdpbih3aWR0aCwgaGVpZ2h0KTsK
IH0KIApAQCAtMzQ0Niw3ICszNDQ2LDcgQEAgdm9pZCBJbnRlcm5hbHM6OmVuYWJsZUF1dG9TaXpl
TW9kZShib29sIGVuYWJsZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogdm9pZCBJbnRlcm5h
bHM6OmluaXRpYWxpemVNb2NrQ0RNKCkKIHsKLSAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFj
dG9yeShbXSAoTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5
TW9ja0NETT4oY2RtKTsgfSwKKyAgICBMZWdhY3lDRE06OnJlZ2lzdGVyQ0RNRmFjdG9yeShbXSAo
TGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5TW9ja0NETT4oY2RtKTsg
fSwKICAgICAgICAgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeU1vY2tD
RE06OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpOwogfQogCkBAIC00MjM5LDcgKzQyMzks
NyBAQCB2b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRlc3ROdW1iZXIpCiAgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBtaWNyb3Rhc2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rhc2tRdWV1
ZTo6bWFpblRocmVhZFF1ZXVlKCksICpkb2N1bWVudCwgW2RvY3VtZW50LCB0ZXN0TnVtYmVyXSgp
IHsKKyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNy
b3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50LCBbZG9j
dW1lbnQsIHRlc3ROdW1iZXJdKCkgewogICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RGVidWcsIG1ha2VTdHJpbmcoIk1p
Y3JvVGFzayAjIiwgdGVzdE51bWJlciwgIiBoYXMgcnVuLiIpKTsKICAgICB9KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTGVnYWN5TW9ja0NETS5jcHAKaW5kZXggM2NkMTI4MTY4ZGZiOGVhMWI2
ZjNkNGUzN2VmMGFiNzg1MjViYTE2Mi4uNjAyNzJkMzQ5N2Y0Yjg2NWNkYjAzNzBmZTQxZDNkNmZi
ZGU4YjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RN
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCkBAIC03
NCw3ICs3NCw3IEBAIGJvb2wgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVn
YWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0NETVNlc3Npb24+KGNsaWVudCk7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NETVNlc3Npb24+KGNsaWVudCk7CiB9CiAKIHN0
YXRpYyBVaW50OEFycmF5KiBpbml0RGF0YVByZWZpeCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDU2Nzk2ZWU5MDBiYmYzYjZjYzA1Y2Y2YTIyOTZlZmQ0
M2I5ZWY3YjYuLmNlNWQ4ZjdkNmJkZjM4YjU5MjIwOTMwMmE2ZTZkNzFiMzY5NjYzMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6c2V0U3VwcG9ydGVkRGF0YVR5cGVzKFZlY3RvcjxTdHJp
bmc+JiYgdHlwZXMpCiAKIHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlPiBNb2NrQ0RNRmFjdG9y
eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TW9ja0NETT4obWFrZVdlYWtQdHIoKnRoaXMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxN
b2NrQ0RNPihtYWtlV2Vha1B0cigqdGhpcykpOwogfQogCiBNb2NrQ0RNOjpNb2NrQ0RNKFdlYWtQ
dHI8TW9ja0NETUZhY3Rvcnk+IGZhY3RvcnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxMTgxZGFlNzJlMTNlMmJiZDE1M2U4MTFjMTQzNjRk
MWNkOGExODcuLjc3OGE5MThhNmI5MDc1NWNiODZkM2FhYTc0Zjc5YjNlNjE4ZDRjOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIGJvb2wgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuYWJsZWQoKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8TW9ja0NvbnRlbnRGaWx0ZXI+IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPE1vY2tDb250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE1vY2tDb250ZW50
RmlsdGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKaW5kZXggZDNhYzVkODdkMTllMmE4NTM2MWMx
MTU3MmNmMzExZjBjODNiMjQ1Yi4uZDQwZGVkMWRhMTE5OGNhYTM0NTlkNjc3ZTFmZTg0ZjViZmI5
NDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3Zp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgTW9ja0dhbWVwYWRQcm92aWRlcjo6c2V0TW9ja0dh
bWVwYWREZXRhaWxzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGdhCiAgICAgaWYgKG1f
bW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdKQogICAgICAgICBtX21vY2tHYW1lcGFkVmVjdG9yW2lu
ZGV4XS0+dXBkYXRlRGV0YWlscyhnYW1lcGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOwog
ICAgIGVsc2UKLSAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1vY2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNv
dW50KTsKKyAgICAgICAgbV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0gPSBtYWtlVW5pcXVlPE1v
Y2tHYW1lcGFkPihpbmRleCwgZ2FtZXBhZElELCBheGlzQ291bnQsIGJ1dHRvbkNvdW50KTsKIH0K
IAogYm9vbCBNb2NrR2FtZXBhZFByb3ZpZGVyOjpjb25uZWN0TW9ja0dhbWVwYWQodW5zaWduZWQg
aW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVD
bGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNw
cAppbmRleCBkYmU5MDczZDZhZGViZmM1MDE1OWNjMmVkYmIyMjgzY2NkMTdiYTg1Li44ZjE2NDdj
MWYzMjI1MTgxNmM3Y2YwODk2MTgyYWUzNDIzNWM1MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBX
b3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0
eXBlLCBNZXNzYWdlTGV2ZWwKIHsKICAgICBTdHJpbmcgbWVzc2FnZVRleHQ7CiAgICAgYXJndW1l
bnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZVRleHQpOwotICAgIGF1dG8gbWVz
c2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFy
Z3VtZW50cyksIGV4ZWMpOworICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWws
IG1lc3NhZ2VUZXh0LCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpOwogICAgIG1fd29ya2VyR2xv
YmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCmluZGV4IDkyNjdlODdkN2Nm
NmZhZmFjYjNhNDY2MWY2OGY4MTlhZTZjNTQ1OGUuLjY5MDNiZTVlYzI1ZmI5MWVmZjc3NzZlNDQ3
NmFkNGVhMmJjZTczMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmNwcApAQCAtODUsNyArODUsNyBAQCBib29sIFdvcmtlckV2ZW50UXVldWU6OmVucXVldWVF
dmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1
dG8qIGV2ZW50UHRyID0gZXZlbnQucHRyKCk7Ci0gICAgYXV0byBldmVudERpc3BhdGNoZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEV2ZW50RGlzcGF0Y2hlcj4oV1RGTW92ZShldmVudCksICp0aGlzKTsK
KyAgICBhdXRvIGV2ZW50RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8RXZlbnREaXNwYXRjaGVyPihX
VEZNb3ZlKGV2ZW50KSwgKnRoaXMpOwogICAgIG1fZXZlbnREaXNwYXRjaGVyTWFwLmFkZChldmVu
dFB0ciwgZXZlbnREaXNwYXRjaGVyLmdldCgpKTsKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQucG9zdFRhc2soW2V2ZW50RGlzcGF0Y2hlciA9IFdURk1vdmUoZXZlbnREaXNwYXRjaGVyKV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGV2ZW50RGlzcGF0Y2hlci0+ZGlz
cGF0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAK
aW5kZXggN2JhNmVkYjUyMDhmMjJjM2Y4ZjE2ZGUyOWQ4MjViNzcxZjZjM2U5ZS4uYjE3ZDY2MzYz
YWMzNTgwZTdhMzQ0MDA4MWEyZjdjNjNhMDczODc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTYyLDkgKzYyLDkgQEAgV29ya2VyR2xvYmFs
U2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYgb3JpZ2kKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV91c2Vy
QWdlbnQodXNlckFnZW50KQogICAgICwgbV90aHJlYWQodGhyZWFkKQotICAgICwgbV9zY3JpcHQo
c3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKLSAgICAsIG1f
aW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRy
b2xsZXI+KCp0aGlzKSkKLSAgICAsIG1fbWljcm90YXNrUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxN
aWNyb3Rhc2tRdWV1ZT4obV9zY3JpcHQtPnZtKCkpKQorICAgICwgbV9zY3JpcHQobWFrZVVuaXF1
ZTxXb3JrZXJTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJv
bGxlcihtYWtlVW5pcXVlPFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAs
IG1fbWljcm90YXNrUXVldWUobWFrZVVuaXF1ZTxNaWNyb3Rhc2tRdWV1ZT4obV9zY3JpcHQtPnZt
KCkpKQogICAgICwgbV9pc09ubGluZShpc09ubGluZSkKICAgICAsIG1fc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSkKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKQEAgLTg2LDcgKzg2LDcg
QEAgV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBS
ZWY8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2kKICAgICAgICAgb3JpZ2luLT5ncmFudFN0b3JhZ2VB
Y2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3ko
U2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbikpKTsKLSAgICBzZXRD
b250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5
KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykp
OwogfQogCiBXb3JrZXJHbG9iYWxTY29wZTo6fldvcmtlckdsb2JhbFNjb3BlKCkKQEAgLTM2Miw5
ICszNjIsOSBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbgogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykK
LSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxT
dGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3Nh
Z2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2Fn
ZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwo
KSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlw
ZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpM
b2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCp0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRl
eCBhNzVjMDE1NmM1OWUzOGRkOTk5ZDZjZWMxZGRlZWRlMjNiZTE4N2IzLi40ZTlmNTE5YWVmZWRk
MjVmODgzZjYzYWNhMGE0Nzg5ZmYwMjdlNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtNTUsNyArNTUsNyBAQCBXb3JrZXJHbG9i
YWxTY29wZVByb3h5JiBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpjcmVhdGUoV29ya2VyJiB3b3Jr
ZXIpCiAKIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpXb3JrZXJNZXNzYWdpbmdQcm94eShXb3JrZXIm
IHdvcmtlck9iamVjdCkKICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCh3b3JrZXJPYmpl
Y3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9pbnNwZWN0b3JQcm94eShzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmplY3QuaWRlbnRpZmll
cigpKSkKKyAgICAsIG1faW5zcGVjdG9yUHJveHkobWFrZVVuaXF1ZTxXb3JrZXJJbnNwZWN0b3JQ
cm94eT4od29ya2VyT2JqZWN0LmlkZW50aWZpZXIoKSkpCiAgICAgLCBtX3dvcmtlck9iamVjdCgm
d29ya2VyT2JqZWN0KQogewogICAgIEFTU0VSVCgoaXM8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpICYmIGlzTWFpblRocmVhZCgpKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQg
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0CiAgICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsK
ICAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2sp
KTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFdURk1vdmUodGFzaykpKTsK
KyAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+KFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGJj
ZDk0ZTZhYzA0MDNhY2Q2YTU0YmFjNDFmYWI0MWU1YmY1NTI3ZGEuLmJmYWM5NTkyZGZhYTc5MjEw
MDY1YjM0NTliZDIyMTYxOTU3ODQ4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmNwcApAQCAtODYsNyArODYsNyBAQCBjbGFzcyBNb2RlUHJlZGljYXRlIHsKIH07CiAK
IFdvcmtlclJ1bkxvb3A6OldvcmtlclJ1bkxvb3AoKQotICAgIDogbV9zaGFyZWRUaW1lcihzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtlclNoYXJlZFRpbWVyPigpKQorICAgIDogbV9zaGFyZWRUaW1lciht
YWtlVW5pcXVlPFdvcmtlclNoYXJlZFRpbWVyPigpKQogewogfQogCkBAIC0yNTAsMTIgKzI1MCwx
MiBAQCB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2smJiB0YXNrKQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewotICAgIG1fbWVzc2FnZVF1
ZXVlLmFwcGVuZEFuZEtpbGwoc3RkOjptYWtlX3VuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBk
ZWZhdWx0TW9kZSgpKSk7CisgICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChtYWtlVW5p
cXVlPFRhc2s+KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsKIH0KIAogdm9pZCBXb3Jr
ZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYm
IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CisgICAgbV9tZXNz
YWdlUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgbW9kZSkpOwog
fQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3REZWJ1Z2dlclRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5jcHAKaW5kZXggMTk5MTJmMDI3NWZlYTE5NDgwNTQyYTA3MDk3NWRjYjBjN2Qy
ODAzNS4uMjI4ZjNkMTdmZjAwMjJlNjJlNjM2NDUzMmQ1NTZiOTUwN2EwMThmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMTE1LDcgKzEx
NSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0CiAKICAgICBBU1NFUlQoc2NyaXB0UmVxdWVz
dC5odHRwTWV0aG9kKCkgPT0gIkdFVCIpOwogCi0gICAgYXV0byByZXF1ZXN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOworICAgIGF1
dG8gcmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihXVEZNb3ZlKHNjcmlwdFJl
cXVlc3QpKTsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQ3LDcg
KzE0Nyw3IEBAIGNvbnN0IFVSTCYgV29ya2VyU2NyaXB0TG9hZGVyOjpyZXNwb25zZVVSTCgpIGNv
bnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFdvcmtlclNjcmlwdExvYWRl
cjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaW5pdGlhdG9ySWRlbnRpZmll
cikKIHsKLSAgICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVz
dD4obV91cmwpOworICAgIGF1dG8gcmVxdWVzdCA9IG1ha2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0
PihtX3VybCk7CiAgICAgcmVxdWVzdC0+c2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICByZXF1
ZXN0LT5zZXRJbml0aWF0b3JJZGVudGlmaWVyKGluaXRpYXRvcklkZW50aWZpZXIpOwogICAgIHJl
dHVybiByZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4
IDFmNzU2MTg2YTIwZjAxNjllNDc4NDM5NTFiZWUzNjg3ZTAwMjRmYmEuLjNjMzg1OGJkYTliNDRi
NTdmYWRiMzllZmEyZTBhMGYzYTMwNDExOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVh
ZChjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbgog
ICAgICwgbV93b3JrZXJEZWJ1Z2dlclByb3h5KHdvcmtlckRlYnVnZ2VyUHJveHkpCiAgICAgLCBt
X3dvcmtlclJlcG9ydGluZ1Byb3h5KHdvcmtlclJlcG9ydGluZ1Byb3h5KQogICAgICwgbV9ydW50
aW1lRmxhZ3MocnVudGltZUZsYWdzKQotICAgICwgbV9zdGFydHVwRGF0YShzdGQ6Om1ha2VfdW5p
cXVlPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIs
IHVzZXJBZ2VudCwgaXNPbmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3ksIHRvcE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKKyAgICAsIG1f
c3RhcnR1cERhdGEobWFrZVVuaXF1ZTxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4oc2NyaXB0VVJM
LCBuYW1lLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCBzb3VyY2VDb2RlLCBzdGFy
dE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycywgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCB0b3BPcmlnaW4sIHRpbWVPcmlnaW4sIHNl
c3Npb25JRCkpCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgLCBtX2lkYkNvbm5l
Y3Rpb25Qcm94eShjb25uZWN0aW9uUHJveHkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRl
eCBiMmQyNjE1YTEyNjNkMTYyNjYxODIwMDQ2NDhmOTBlZGE2OTIwNmI1Li41OWM3MWM0ZDE0NzYy
N2NmZDlkMzFhNDVlYWJjY2NkYWUxMDNlNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC04OCw3
ICs4OCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZGVyZWZFdmVudFRhcmdldCgp
CiBhdXRvIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlYWR5KCkgLT4gUmVhZHlQcm9taXNlJgog
ewogICAgIGlmICghbV9yZWFkeVByb21pc2UpIHsKLSAgICAgICAgbV9yZWFkeVByb21pc2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlYWR5UHJvbWlzZT4oKTsKKyAgICAgICAgbV9yZWFkeVByb21pc2Ug
PSBtYWtlVW5pcXVlPFJlYWR5UHJvbWlzZT4oKTsKIAogICAgICAgICBpZiAobV9pc1N0b3BwZWQg
fHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCkuaXNWYWxpZCgpKQogICAg
ICAgICAgICAgcmV0dXJuICptX3JlYWR5UHJvbWlzZTsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIHJl
bGF0aXZlU2NyaXB0VVJMLCBjbwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpSZWdpc3RlcjsKICAgICBqb2JEYXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25z
OwogCi0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigq
dGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVkdWxl
Sm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlzZSks
IFdURk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpy
ZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJl
CiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0
aW9uOiBVbnJlZ2lzdGVyaW5nIHNlcnZpY2Ugd29ya2VyLiBKb2IgSUQ6ICUiIFBSSXU2NCwgam9i
RGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAotICAgIHNjaGVk
dWxlSm9iKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihtYWtlVW5pcXVl
PFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRh
dGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0
aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJUeXBl
LCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMzIsNyArMjMyLDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJM
JiBzY29wZVVSTCwgY29uc3QgVVJMJgogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInJlbW92ZVJlZ2lzdHJhdGlvbjogVXBkYXRpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJ
RDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0
KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9i
PigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOworICAgIHNjaGVk
dWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjpzY2hlZHVsZUpvYihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpvYj4mJiBqb2IpCkBA
IC0yNjksNyArMjY5LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3Ry
YXRpb24oY29uc3QgU3RyaW5nJiBjbGllbnRVUkwsIFJlZjxEZWZlcnIKICAgICB9CiAKICAgICB1
aW50NjRfdCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRpbmdQcm9taXNl
SWRlbnRpZmllcjsKLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gc3RkOjptYWtlX3VuaXF1ZTxQ
ZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cykpOworICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBtYWtlVW5pcXVlPFBlbmRpbmdQcm9taXNl
PihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CiAgICAgbV9w
ZW5kaW5nUHJvbWlzZXMuYWRkKHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgV1RGTW92ZShwZW5k
aW5nUHJvbWlzZSkpOwogCiAgICAgYXV0byBjb250ZXh0SWRlbnRpZmllciA9IHRoaXMtPmNvbnRl
eHRJZGVudGlmaWVyKCk7CkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpnZXRSZWdpc3RyYXRpb25zKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
ICAgICB9CiAKICAgICB1aW50NjRfdCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFz
dFBlbmRpbmdQcm9taXNlSWRlbnRpZmllcjsKLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gc3Rk
OjptYWtlX3VuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRp
bmdBY3Rpdml0eSgqdGhpcykpOworICAgIGF1dG8gcGVuZGluZ1Byb21pc2UgPSBtYWtlVW5pcXVl
PFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0
aGlzKSk7CiAgICAgbV9wZW5kaW5nUHJvbWlzZXMuYWRkKHBlbmRpbmdQcm9taXNlSWRlbnRpZmll
ciwgV1RGTW92ZShwZW5kaW5nUHJvbWlzZSkpOwogCiAgICAgYXV0byBjb250ZXh0SWRlbnRpZmll
ciA9IHRoaXMtPmNvbnRleHRJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4
IGVkYmM4ZjkxZWU0MzQ2MmE1MDQ5ZTg4YzFjZWY1ZWZhNzYyYzk4ZmYuLmNiNWMyMjFmYzk0ODhk
N2MwMDcyOTgzYTE1Nzg5NWRjYThjNmNlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0x
MTUsNyArMTE1LDcgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vjb24KIAogICAgIHNlcnZpY2VXb3Jr
ZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKIAotICAgIG1fcGVuZGluZ1NlcnZp
Y2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChpZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5p
cXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBpZGVudGlmaWVyLCB0
aW1lb3V0KSk7CisgICAgbV9wZW5kaW5nU2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdHMu
YWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVz
dD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQpKTsKIAogICAgIGF1dG8mIHRocmVhZCA9IHNl
cnZpY2VXb3JrZXItPnRocmVhZCgpOwogICAgIHRocmVhZC5zdG9wKFt0aGlzLCBpZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VyID0gV1RGTW92ZShzZXJ2aWNlV29ya2VyKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGM2MTczNjEzY2FjYjU1ZDY5MDU4YmUyYzdl
MmE1ZmJkODUyOWM3NzYuLjllNzI4YzNhN2FmYTQ2Yzk0OWNkY2JlMGQ2ZmViMDRhOTUzMWNjZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMTE0LDcgKzExNCw3
IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBh
Z2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgYWxsU2VydmljZVdvcmtlclRocmVhZFBy
b3hpZXMoKS5hZGQodGhpcyk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBt
X3JlbW90ZURlYnVnZ2FibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJEZWJ1Z2dh
YmxlPigqdGhpcywgZGF0YSk7CisgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlID0gbWFrZVVuaXF1ZTxT
ZXJ2aWNlV29ya2VyRGVidWdnYWJsZT4oKnRoaXMsIGRhdGEpOwogICAgIG1fcmVtb3RlRGVidWdn
YWJsZS0+c2V0UmVtb3RlRGVidWdnaW5nQWxsb3dlZCh0cnVlKTsKICAgICBtX3JlbW90ZURlYnVn
Z2FibGUtPmluaXQoKTsKICNlbmRpZgpAQCAtMTY4LDcgKzE2OCw3IEBAIFJlZjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUNhY2hlU3RvcmFn
ZUNvbm5lY3RpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGZXRjaExvYWRlcj4gU2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpjcmVhdGVCbG9iTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNv
bnN0IFVSTCYgYmxvYlVSTCkKIHsKLSAgICBhdXRvIGxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
RmV0Y2hMb2FkZXI+KGNsaWVudCwgbnVsbHB0cik7CisgICAgYXV0byBsb2FkZXIgPSBtYWtlVW5p
cXVlPEZldGNoTG9hZGVyPihjbGllbnQsIG51bGxwdHIpOwogICAgIGxvYWRlci0+c3RhcnRMb2Fk
aW5nQmxvYlVSTChtX2RvY3VtZW50LCBibG9iVVJMKTsKICAgICBpZiAoIWxvYWRlci0+aXNTdGFy
dGVkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cAppbmRleCAxZGQzNDEzNzRjNDQ0NWEzNDk3MzJkNDRmZGVkMTU0Nzc0ODFjMGI0Li45MmNiYTA4
NWQzYWNmNmEyOTNmMDZiNTVkZjQ1ZjRkZmM3OTNmYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9w
ZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1bGxGaWxlbmFtZSkKIAogICAgIFNRTGl0
ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRGlyZWN0b3J5RXhpc3RzKG1fZGF0YWJhc2VEaXJl
Y3RvcnkpOwogCi0gICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlRGF0YWJh
c2U+KCk7CisgICAgbV9kYXRhYmFzZSA9IG1ha2VVbmlxdWU8U1FMaXRlRGF0YWJhc2U+KCk7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlLT5vcGVuKGZ1bGxGaWxlbmFtZSkpIHsKICAgICAgICAgZXJyb3JN
ZXNzYWdlID0gIkZhaWxlZCB0byBvcGVuIHJlZ2lzdHJhdGlvbiBkYXRhYmFzZSI7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKaW5kZXggZmU1Y2M4NTllNjVhNmUzMmE3OGI1Mjg5NzVhMTMyZTc0YmYxNzg3
ZS4uOTMyNmEzYmFjNjU5YTI0NjcwNWU5MjBhODg4NDZkZjRkMGU5NjliMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE0
NCw3ICsxNDQsNyBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKICAgICAvLyBQYWdlcyBzaG91bGQgbm90IGhh
dmUgYmVlbiBhYmxlIHRvIG1ha2UgYSBuZXcgcmVnaXN0cmF0aW9uIHRvIHRoaXMga2V5IHdoaWxl
IHRoZSBpbXBvcnQgd2FzIHN0aWxsIHRha2luZyBwbGFjZS4KICAgICBBU1NFUlQoIW1fcmVnaXN0
cmF0aW9ucy5jb250YWlucyhkYXRhLnJlZ2lzdHJhdGlvbi5rZXkpKTsKIAotICAgIGF1dG8gcmVn
aXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4oKnRoaXMs
IGRhdGEucmVnaXN0cmF0aW9uLmtleSwgZGF0YS5yZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUs
IGRhdGEucmVnaXN0cmF0aW9uLnNjb3BlVVJMLCBkYXRhLnNjcmlwdFVSTCk7CisgICAgYXV0byBy
ZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0
YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0
YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRhdGEuc2NyaXB0VVJMKTsKICAgICByZWdpc3RyYXRp
b24tPnNldExhc3RVcGRhdGVUaW1lKGRhdGEucmVnaXN0cmF0aW9uLmxhc3RVcGRhdGVUaW1lKTsK
ICAgICBhdXRvIHJlZ2lzdHJhdGlvblB0ciA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKICAgICBhZGRS
ZWdpc3RyYXRpb24oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKQEAgLTMwNCw3ICszMDQsNyBAQCBT
V1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUs
IFN0cmluZyYmIHJlZ2lzdHJhdGlvbgogewogICAgIEFTU0VSVCghcmVnaXN0cmF0aW9uRGF0YWJh
c2VEaXJlY3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogICAg
IGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgbV9yZWdpc3RyYXRpb25T
dG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVnaXN0cmF0aW9uU3RvcmU+KCp0aGlzLCBXVEZNb3Zl
KHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5KSk7CisgICAgICAgIG1fcmVnaXN0cmF0aW9u
U3RvcmUgPSBtYWtlVW5pcXVlPFJlZ2lzdHJhdGlvblN0b3JlPigqdGhpcywgV1RGTW92ZShyZWdp
c3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSkpOwogICAgIGVsc2UKICAgICAgICAgcmVnaXN0cmF0
aW9uU3RvcmVJbXBvcnRDb21wbGV0ZSgpOwogCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTV1Nl
cnZlcjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogICAgIC8v
IElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQgam9iLgogCiAgICAgYXV0byYgam9i
UXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0
aGlzLCAmam9iRGF0YV0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZl
ckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJh
dGlvbktleSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBqb2JRdWV1ZS5lbnF1
ZXVlSm9iKGpvYkRhdGEpOwpAQCAtODIwLDcgKzgyMCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2lu
LCBTCiAKICAgICBpZiAoY2xpZW50SWRlbnRpZmllcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFT
U0VSVCghaXRlcmF0b3ItPnZhbHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIpOwotICAg
ICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IHN0ZDo6
bWFrZV91bmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWlu
LCB0aGlzXSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vy
c1RpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4oW2NsaWVudE9yaWdpbiwgY2xpZW50UmVnaXN0cmFi
bGVEb21haW4sIHRoaXNdIHsKICAgICAgICAgICAgIFZlY3RvcjxTV1NlcnZlcldvcmtlcio+IHdv
cmtlcnNUb1Rlcm1pbmF0ZTsKICAgICAgICAgICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5u
aW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
d29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPm9yaWdpbigpID09IGNsaWVudE9yaWdpbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmluZGV4IDhiNjhiNzBmMDFkMjUyNzhhZjUzOGFiY2U5MTRiOGM3
YzY4YWI4MzcuLmRjYWY1YThhNzEwZjc5NDQ2NDdkZTNjZDVlOTgwNjM5OWE4ZmQ1MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICAg
ICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0VXBkYXRlVmlhQ2FjaGUoam9iLnJlZ2lzdHJhdGlvbk9w
dGlvbnMudXBkYXRlVmlhQ2FjaGUpOwogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogRm91bmQgcmVnaXN0cmF0
aW9uICVsbHUgZm9yIGpvYiAlcyBidXQgaXQgbmVlZHMgdXBkYXRpbmciLCB0aGlzLCByZWdpc3Ry
YXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIG5ld1Jl
Z2lzdHJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2Vy
dmVyLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlh
Q2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CisgICAgICAgIGF1dG8gbmV3UmVn
aXN0cmF0aW9uID0gbWFrZVVuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1f
cmVnaXN0cmF0aW9uS2V5LCBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwg
am9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0VVJMKTsKICAgICAgICAgbV9zZXJ2ZXIuYWRkUmVnaXN0
cmF0aW9uKFdURk1vdmUobmV3UmVnaXN0cmF0aW9uKSk7CiAKICAgICAgICAgUkVMRUFTRV9MT0co
U2VydmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IE5v
IGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiBmb3Igam9iICVzLCBjb25zdHJ1Y3RpbmcgYSBuZXcgb25l
LiIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCmluZGV4IDJiN2EyZmUzZmJiNThkNGM0ZWUzOGZjMDRiNTM2YTNlNGUwYzc3ZTcuLjNi
ZTc1N2UwMmFlMTlkNzU5MGVjMDdiM2ZhNGNiZTdkNjNjZTgxZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVn
aXN0ZXJQYWludChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsCiAgICAgICAgIFJlZlB0cjxKU0NTU1Bh
aW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFp
bnRDYWxsYmFjaz4+KHN0YXRlLCBwYWludFZhbHVlLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwogCi0gICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50LnJl
bGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1dEFy
Z3VtZW50cykpOworICAgICAgICBhdXRvIHBhaW50RGVmaW5pdGlvbiA9IG1ha2VVbmlxdWU8UGFp
bnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNl
Tm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVu
dHMpKTsKICAgICAgICAgcGFpbnREZWZpbml0aW9uTWFwKCkuYWRkKG5hbWUsIFdURk1vdmUocGFp
bnREZWZpbml0aW9uKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0Q29uc29sZUNsaWVudC5jcHAKaW5kZXggOGU4YTJhNGNhMjNlMmI5M2RhMTM0YWZiNTJk
MGU5NTc2YzQwMjE1OS4uM2YwOTI1NjNiZDUyYWM0YTRiYmVkYTQxNWMyMzdhMmQxZGZkYWRiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldENvbnNvbGVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNw
cApAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFdvcmtsZXRDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0
aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZQogewogICAgIFN0cmlu
ZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyht
ZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNz
YWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRz
KSwgZXhlYyk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2NvcGUuYWRkQ29uc29sZU1lc3NhZ2UoV1RG
TW92ZShtZXNzYWdlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCmluZGV4IDRiYjc4OGVhNjNjZDZiYmRjNTMyNTg3ZTA1MTBkNTMyNTI2
MDZmZmEuLmNlZjgyZjdiNDExZDIxOGM3MzNkNjZmYTlkYmEyZDkzMTI1YWU4MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNDksNyAr
NDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV29ya2xldEdsb2JhbFNjb3BlKTsK
IFdvcmtsZXRHbG9iYWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVu
dCwgU2NyaXB0U291cmNlQ29kZSYmIGNvZGUpCiAgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRy
KGRvY3VtZW50KSkKICAgICAsIG1fc2Vzc2lvbklEKG1fZG9jdW1lbnQtPnNlc3Npb25JRCgpKQot
ICAgICwgbV9zY3JpcHQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrbGV0U2NyaXB0Q29udHJvbGxlcj4o
dGhpcykpCisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtsZXRTY3JpcHRDb250cm9sbGVy
Pih0aGlzKSkKICAgICAsIG1fdG9wT3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUo
KSkKICAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKICAgICAsIG1fY29kZShXVEZNb3ZlKGNvZGUp
KQpAQCAtNjIsNyArNjIsNyBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRHbG9iYWxTY29w
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFNjcmlwdFNvdXJjZUNvZGUmJiBjbwogICAgIEFTU0VSVChk
b2N1bWVudC5wYWdlKCkpOwogCiAgICAgc2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koU2VjdXJpdHlP
cmlnaW5Qb2xpY3k6OmNyZWF0ZShtX3RvcE9yaWdpbi5jb3B5UmVmKCkpKTsKLSAgICBzZXRDb250
ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+
KFVSTCB7IG1fY29kZS51cmwoKSB9LCAqdGhpcykpOworICAgIHNldENvbnRlbnRTZWN1cml0eVBv
bGljeShtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgp
IH0sICp0aGlzKSk7CiB9CiAKIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxTY29w
ZSgpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENvbnNv
bGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXMKIHsKICAgICBp
ZiAoIW1fZG9jdW1lbnQgfHwgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIHx8ICFtZXNzYWdlKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlLT5zb3VyY2UoKSwg
bWVzc2FnZS0+dHlwZSgpLCBtZXNzYWdlLT5sZXZlbCgpLCBtZXNzYWdlLT5tZXNzYWdlKCksIDAp
KTsKKyAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rv
cjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1l
c3NhZ2UtPmxldmVsKCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOwogfQogCiB2b2lkIFdvcmts
ZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldFNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDFjZWU5ZWIzNDIxY2Q5OWE1NmM4ODYwYjhlY2Rk
NDU5NmY4MGQyZGUuLjcxMzM5MDBmMTcxZWVmNDE1NjczZDRlOTBkNWNmNzdjZmViYzJiYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpp
bml0U2NyaXB0V2l0aFN1YmNsYXNzKCkKICAgICBBU1NFUlQobV93b3JrbGV0R2xvYmFsU2NvcGVX
cmFwcGVyLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXIpOwog
ICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3Rv
dHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtsZXRHbG9iYWxTY29w
ZVdyYXBwZXIpOwogCi0gICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
bGV0Q29uc29sZUNsaWVudD4oKm1fd29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICBtX2NvbnNvbGVD
bGllbnQgPSBtYWtlVW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xvYmFs
U2NvcGUpOwogICAgIG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlci0+c2V0Q29uc29sZUNsaWVu
dChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBjZDYxMzIyNjk3OTc5ZDZmNzI1ZGJkN2I2ODU0MTViZTM1OGZmMmFmLi4w
NTI5MzQ0MDFmNmI4MWE4MmI0Njg4MWJkMDIwZTVkNGUyZTU2MGM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCBTdHJpbmcgWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlVVJMKCkgY29uc3QKIFhNTEh0dHBSZXF1ZXN0VXBsb2FkJiBYTUxIdHRw
UmVxdWVzdDo6dXBsb2FkKCkKIHsKICAgICBpZiAoIW1fdXBsb2FkKQotICAgICAgICBtX3VwbG9h
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+KCp0aGlzKTsKKyAgICAg
ICAgbV91cGxvYWQgPSBtYWtlVW5pcXVlPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX3VwbG9hZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5j
cHAKaW5kZXggYWQ3ZTEzYzhhMTk0YWQ1NmQ2MjM0MjAwMDE3Y2JhNzdmZTgwYjc0Mi4uYTkyNDQw
OWVlNDZjNTNlNzNiMjdhNDlhMTllZmU5Njk3MjE2NzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhGdW5jdGlvbnMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1do
aXRlc3BhY2UoVUNoYXIgYykKICAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXG4nIHx8IGMg
PT0gJ1xyJyB8fCBjID09ICdcdCc7CiB9CiAKLSNkZWZpbmUgREVGSU5FX0ZVTkNUSU9OX0NSRUFU
T1IoU3VmZml4KSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlv
biMjU3VmZml4KCkgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGdW4jI1N1ZmZpeD4oKTsgfQor
I2RlZmluZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihTdWZmaXgpIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNTdWZmaXgoKSB7IHJldHVybiBtYWtlVW5p
cXVlPEZ1biMjU3VmZml4PigpOyB9CiAKIGNsYXNzIEludGVydmFsIHsKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCmluZGV4IDA0NjE1YzNkNWYwMzEzMTA2OTM4ZmFh
MDVmYjM5Yzk5Y2UxMjNiNWMuLmMxYmJjNTRlYjgzMDE2OTExOWM4NjgzMWE0ZjJhNmU3YzAwNDU2
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNwcApAQCAtMjYzLDcgKzI2Myw3
IEBAIGJvb2wgZXZhbHVhdGVQcmVkaWNhdGUoY29uc3QgRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikK
IAogICAgIC8vIGZvb1szXSBtZWFucyBmb29bcG9zaXRpb24oKT0zXQogICAgIGlmIChyZXN1bHQu
aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIEVxVGVzdE9wKEVxVGVzdE9wOjpPUF9FUSwgRnVu
Y3Rpb246OmNyZWF0ZSgicG9zaXRpb24iX3MpLCBzdGQ6Om1ha2VfdW5pcXVlPE51bWJlcj4ocmVz
dWx0LnRvTnVtYmVyKCkpKS5ldmFsdWF0ZSgpLnRvQm9vbGVhbigpOworICAgICAgICByZXR1cm4g
RXFUZXN0T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlvbjo6Y3JlYXRlKCJwb3NpdGlvbiJfcyks
IG1ha2VVbmlxdWU8TnVtYmVyPihyZXN1bHQudG9OdW1iZXIoKSkpLmV2YWx1YXRlKCkudG9Cb29s
ZWFuKCk7CiAKICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbigpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXggZWMyYzZhZTA0NTlhMDY5MjU2
YTY2MmY3MmM4NzI2N2ZlYTFhNDViZC4uNjMwNGU5MjgxMWE5MzRmN2RlNzRjOGM5NGIyYjY5YzAw
NGVhNDk2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4
c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3Bw
CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBYU0xTdHlsZVNoZWV0Ojpsb2FkQ2hpbGRTaGVldHMo
KQogCiB2b2lkIFhTTFN0eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZikKIHsKLSAgICBhdXRvIGNoaWxkUnVsZSA9IHN0ZDo6bWFrZV91bmlxdWU8WFNMSW1wb3J0UnVs
ZT4odGhpcywgaHJlZik7CisgICAgYXV0byBjaGlsZFJ1bGUgPSBtYWtlVW5pcXVlPFhTTEltcG9y
dFJ1bGU+KHRoaXMsIGhyZWYpOwogICAgIG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkUnVsZS5yZWxl
YXNlKCkpOwogICAgIG1fY2hpbGRyZW4ubGFzdCgpLT5sb2FkU2hlZXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZTAyNGVm
YjU2YmY2NTJiOTBhOWExZDRmODEzMDY0OTE4MzBkOGUwZi4uNzA0ODg5MmE1YWEwZWY5YTU1ZmJk
MjQwOGNkMTc5MTRkMDJhOWM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjphcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5wdXRTb3VyY2UpCiB2b2lkIFhN
TERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBj
b25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24gcG9zaXRpb24pCiB7CiAgICAgaWYgKCFtX3htbEVy
cm9ycykKLSAgICAgICAgbV94bWxFcnJvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFhNTEVycm9ycz4o
KmRvY3VtZW50KCkpOworICAgICAgICBtX3htbEVycm9ycyA9IG1ha2VVbmlxdWU8WE1MRXJyb3Jz
PigqZG9jdW1lbnQoKSk7CiAgICAgbV94bWxFcnJvcnMtPmhhbmRsZUVycm9yKHR5cGUsIG0sIHBv
c2l0aW9uKTsKICAgICBpZiAodHlwZSAhPSBYTUxFcnJvcnM6Ondhcm5pbmcpCiAgICAgICAgIG1f
c2F3RXJyb3IgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDEwMzIwMDdiNmViMTNlY2RhYTViY2I5
ZTQ4MmFkM2E2OGUxMjIzMWIuLmI5OWIzMDg5NzM4NTUwOWViYWIwNDUyMTM5NzUzOWIwNzBjZWU3
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNr
cyB7CiBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKGNvbnN0
IHhtbENoYXIqIHhtbExvY2FsTmFtZSwgY29uc3QgeG1sQ2hhciogeG1sUHJlZml4LCBjb25zdCB4
bWxDaGFyKiB4bWxVUkksIGludCBudW1OYW1lc3BhY2VzLCBjb25zdCB4bWxDaGFyKiogbmFtZXNw
YWNlcywgaW50IG51bUF0dHJpYnV0ZXMsIGludCBudW1EZWZhdWx0ZWQsIGNvbnN0IHhtbENoYXIq
KiBhdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91
bmlxdWU8UGVuZGluZ1N0YXJ0RWxlbWVudE5TQ2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdTdGFydEVsZW1lbnROU0NhbGxiYWNrPigpOwogCiAg
ICAgICAgIGNhbGxiYWNrLT54bWxMb2NhbE5hbWUgPSB4bWxTdHJkdXAoeG1sTG9jYWxOYW1lKTsK
ICAgICAgICAgY2FsbGJhY2stPnhtbFByZWZpeCA9IHhtbFN0cmR1cCh4bWxQcmVmaXgpOwpAQCAt
MTIyLDEyICsxMjIsMTIgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFw
cGVuZEVuZEVsZW1lbnROU0NhbGxiYWNrKCkKICAgICB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50TlNDYWxsYmFjaz4oKSk7Cisg
ICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChtYWtlVW5pcXVlPFBlbmRpbmdFbmRFbGVtZW50TlND
YWxsYmFjaz4oKSk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2so
Y29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s+KCk7CisgICAgICAg
IGF1dG8gY2FsbGJhY2sgPSBtYWtlVW5pcXVlPFBlbmRpbmdDaGFyYWN0ZXJzQ2FsbGJhY2s+KCk7
CiAKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAgIGNh
bGxiYWNrLT5sZW4gPSBsZW47CkBAIC0xMzcsNyArMTM3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxi
YWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrKGNv
bnN0IHhtbENoYXIqIHRhcmdldCwgY29uc3QgeG1sQ2hhciogZGF0YSkKICAgICB7Ci0gICAgICAg
IGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb25DYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVu
ZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNr
LT50YXJnZXQgPSB4bWxTdHJkdXAodGFyZ2V0KTsKICAgICAgICAgY2FsbGJhY2stPmRhdGEgPSB4
bWxTdHJkdXAoZGF0YSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNr
cyB7CiAKICAgICB2b2lkIGFwcGVuZENEQVRBQmxvY2tDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBz
LCBpbnQgbGVuKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9
IG1ha2VVbmlxdWU8UGVuZGluZ0NEQVRBQmxvY2tDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxs
YmFjay0+cyA9IHhtbFN0cm5kdXAocywgbGVuKTsKICAgICAgICAgY2FsbGJhY2stPmxlbiA9IGxl
bjsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZv
aWQgYXBwZW5kQ29tbWVudENhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMpCiAgICAgewotICAgICAg
ICBhdXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ29tbWVudENhbGxiYWNr
PigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ29tbWVudENh
bGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RyZHVwKHMpOwogCkBAIC0x
NjYsNyArMTY2LDcgQEAgY2xhc3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVu
ZEludGVybmFsU3Vic2V0Q2FsbGJhY2soY29uc3QgeG1sQ2hhciogbmFtZSwgY29uc3QgeG1sQ2hh
ciogZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciogc3lzdGVtSUQpCiAgICAgewotICAgICAgICBh
dXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxs
YmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ0ludGVy
bmFsU3Vic2V0Q2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPm5hbWUgPSB4bWxTdHJk
dXAobmFtZSk7CiAgICAgICAgIGNhbGxiYWNrLT5leHRlcm5hbElEID0geG1sU3RyZHVwKGV4dGVy
bmFsSUQpOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIGNsYXNzIFBlbmRpbmdDYWxsYmFja3MgewogCiAg
ICAgdm9pZCBhcHBlbmRFcnJvckNhbGxiYWNrKFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNv
bnN0IHhtbENoYXIqIG1lc3NhZ2UsIE9yZGluYWxOdW1iZXIgbGluZU51bWJlciwgT3JkaW5hbE51
bWJlciBjb2x1bW5OdW1iZXIpCiAgICAgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjpt
YWtlX3VuaXF1ZTxQZW5kaW5nRXJyb3JDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFj
ayA9IG1ha2VVbmlxdWU8UGVuZGluZ0Vycm9yQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJh
Y2stPm1lc3NhZ2UgPSB4bWxTdHJkdXAobWVzc2FnZSk7CiAgICAgICAgIGNhbGxiYWNrLT50eXBl
ID0gdHlwZTsKQEAgLTU2NSw3ICs1NjUsNyBAQCBib29sIFhNTERvY3VtZW50UGFyc2VyOjpzdXBw
b3J0c1hNTFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogWE1MRG9jdW1lbnRQYXJzZXI6
OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX3Zp
ZXcoZnJhbWVWaWV3KQotICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKHN0ZDo6bWFrZV91bmlxdWU8
UGVuZGluZ0NhbGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhtYWtlVW5pcXVl
PFBlbmRpbmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJlbnROb2RlKCZkb2N1bWVudCkKICAg
ICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlv
bigpKQogewpAQCAtNTczLDcgKzU3Myw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVu
dFBhcnNlcihEb2N1bWVudCYgZG9jdW1lbnQsIEZyYW1lVmlldyogZnJhbWVWaWV3KQogCiBYTUxE
b2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21l
bnQsIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29u
dGVudFBvbGljeSkKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC5kb2N1
bWVudCgpLCBwYXJzZXJDb250ZW50UG9saWN5KQotICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKHN0
ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKKyAgICAsIG1fcGVuZGluZ0NhbGxi
YWNrcyhtYWtlVW5pcXVlPFBlbmRpbmdDYWxsYmFja3M+KCkpCiAgICAgLCBtX2N1cnJlbnROb2Rl
KCZmcmFnbWVudCkKICAgICAsIG1fc2NyaXB0U3RhcnRQb3NpdGlvbihUZXh0UG9zaXRpb246OmJl
bG93UmFuZ2VQb3NpdGlvbigpKQogICAgICwgbV9wYXJzaW5nRnJhZ21lbnQodHJ1ZSkKQEAgLTEz
MjksNyArMTMyOSw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKCkKICAgICAgICAg
eG1sVHJlZVZpZXdlci50cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKTsKICAgICB9IGVsc2Ug
aWYgKG1fc2F3WFNMVHJhbnNmb3JtKSB7CiAgICAgICAgIHhtbERvY1B0ciBkb2MgPSB4bWxEb2NQ
dHJGb3JTdHJpbmcoZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgbV9vcmlnaW5h
bFNvdXJjZUZvclRyYW5zZm9ybS50b1N0cmluZygpLCBkb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KSk7Ci0gICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5zZm9ybVNvdXJjZShzdGQ6Om1ha2VfdW5p
cXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5z
Zm9ybVNvdXJjZShtYWtlVW5pcXVlPFRyYW5zZm9ybVNvdXJjZT4oZG9jKSk7CiAKICAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhmYWxzZSk7IC8vIE1ha2UgdGhlIGRvY3VtZW50IHRoaW5r
IGl0J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSBYU0wgc3R5bGVzaGVldHMuCiAgICAgICAgIGRv
Y3VtZW50KCktPmFwcGx5UGVuZGluZ1hTTFRyYW5zZm9ybXNOb3dJZlNjaGVkdWxlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggMDViYzk1M2Y3ZjBkZGM3ODdiMWU2
MzA0ODc2OTZjMjA4NTljYWUwZi4uZDY5ZTE0OTkyZDU4Njc1MWNhMDQzNDI2MzYyYTZmNDFjMjY5
OWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02NTcsNyArNjU3
LDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKFZlY3RvcjxDYXBh
YmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlc3Npb25Ib3N0PihjYXBh
YmlsaXRpZXNMaXN0LnRha2VMYXN0KCkpOworICAgIGF1dG8gc2Vzc2lvbkhvc3QgPSBtYWtlVW5p
cXVlPFNlc3Npb25Ib3N0PihjYXBhYmlsaXRpZXNMaXN0LnRha2VMYXN0KCkpOwogICAgIGF1dG8q
IHNlc3Npb25Ib3N0UHRyID0gc2Vzc2lvbkhvc3QuZ2V0KCk7CiAgICAgc2Vzc2lvbkhvc3RQdHIt
PmNvbm5lY3RUb0Jyb3dzZXIoW3RoaXMsIGNhcGFiaWxpdGllc0xpc3QgPSBXVEZNb3ZlKGNhcGFi
aWxpdGllc0xpc3QpLCBzZXNzaW9uSG9zdCA9IFdURk1vdmUoc2Vzc2lvbkhvc3QpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxTdHJpbmc+
IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViRHJpdmVyL2dsaWIvU2Vzc2lvbkhvc3RHbGliLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIv
Z2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCmluZGV4IGM4ZjBhMGVjN2IwYTA2NjEyY2E2NzM4ZDAw
MmExM2QwZjQzYzEyZDguLjE3N2FhNTRmMjIyOTdhYzMxNjE0ZDM1M2JlOWYzYTc5ZDFhYWIxOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCisr
KyBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0xNzQsNyAr
MTc0LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6bGF1bmNoQnJvd3NlcihGdW5jdGlvbjx2b2lkIChP
cHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21wbGUKICAgICB9LCB0aGlzKTsKIAogICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZGJ1c0FkZHJlc3MoZ19zdHJkdXBfcHJpbnRmKCJ0Y3A6aG9zdD0lcyxw
b3J0PSV1IiwgIjEyNy4wLjAuMSIsIHBvcnQpKTsKLSAgICBjb25uZWN0VG9Ccm93c2VyKHN0ZDo6
bWFrZV91bmlxdWU8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVz
QWRkcmVzcyksIG1fY2FuY2VsbGFibGUuZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KSk7CisgICAgY29ubmVjdFRvQnJvd3NlcihtYWtlVW5pcXVlPENvbm5lY3RUb0Jyb3dzZXJBc3lu
Y0RhdGE+KHRoaXMsIFdURk1vdmUoZGJ1c0FkZHJlc3MpLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQogCiB2b2lkIFNlc3Npb25Ib3N0Ojpjb25u
ZWN0VG9Ccm93c2VyKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0VG9Ccm93c2VyQXN5bmNEYXRhPiYm
IGRhdGEpCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3NhZ2VU
b0JhY2tlbmQobG9uZyBtZXNzYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NF
UlQobV9jb25uZWN0aW9uSUQpOwogICAgIEFTU0VSVChtX3RhcmdldC5pZCk7CiAKLSAgICBhdXRv
IG1lc3NhZ2VDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVzc2Fn
ZUNvbnRleHQgeyBtZXNzYWdlSUQsIHRoaXMgfSk7CisgICAgYXV0byBtZXNzYWdlQ29udGV4dCA9
IG1ha2VVbmlxdWU8TWVzc2FnZUNvbnRleHQ+KE1lc3NhZ2VDb250ZXh0IHsgbWVzc2FnZUlELCB0
aGlzIH0pOwogICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9kYnVzQ29ubmVjdGlvbi5nZXQo
KSwgbnVsbHB0ciwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfT0JKRUNUX1BBVEgsCiAgICAgICAg
IElOU1BFQ1RPUl9EQlVTX0lOVEVSRkFDRSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggMmUyOTZiMjlmNDNh
NGZjODhlNzAwOTMyNGE1ZTIzYjBiZTljZDUxYy4uOTMwM2QyYWRjMTVlZjZmYjMxMGI2ZmIxNmQw
NzBjYzg1M2ZkYzNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlz
aygpCiAgICAgaWYgKHJlc291cmNlTG9nUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fZmlsZU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihyZXNv
dXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAg
ICBtX2ZpbGVNb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4ocmVzb3VyY2VMb2dQYXRo
LCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZpbGVNb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlTW9uaXRvcj4oc3RvcmFnZVBhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXNdIChG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0b3IgPSBt
YWtlVW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3JrUXVldWUuY29weVJlZigp
LCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAodHlwZSA9PSBGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGU6OlJlbW92YWwpIHsKICAgICAgICAgICAgIC8vIERpcmVjdG9yeSB3
YXMgcmVtb3ZlZCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKaW5kZXggNjc1ZjBkYWY1OWNlOWI0Zjg4N2I3OTRiYzg5MmVjNDRhODM3NTZmMy4uZjIy
ODY2MzU1YzVhZjVhMjYyMDU2MzdhZTUyZmRmNzFjOTE2MjIwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTE1OSwxNSArMTU5LDE1IEBA
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBuCiAgICAgCiAgICAgcG9zdFRhc2soW3RoaXMsIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5Lmlzb2xhdGVkQ29weSgpLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0XSB7CiAgICAgICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlzSVRQRGF0YWJhc2VF
bmFibGVkKCkpIHsKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlz
dGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gbWFrZVVuaXF1ZTxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1
ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KTsKIAotICAgICAgICAgICAgYXV0byBtZW1vcnlTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVl
dWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwotICAgICAgICAgICAgYXV0byBwZXJzaXN0ZW50
U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZT4oKm1lbW9yeVN0b3JlLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBhdXRvIG1lbW9yeVN0b3JlID0gbWFrZVVu
aXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3Rp
Y3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CisgICAgICAgICAgICBhdXRvIHBlcnNp
c3RlbnRTdG9yZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KTsKIAogICAgICAgICAgICAgZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZS5nZXQoKSkucG9wdWxhdGVG
cm9tTWVtb3J5U3RvcmUoKm1lbW9yeVN0b3JlKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIG1fc3RhdGlzdGljc1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCk7Ci0gICAgICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdlID0gc3RkOjptYWtl
X3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KGRvd25jYXN0
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSwg
bV9zdGF0aXN0aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAg
ICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0KTsKKyAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UgPSBtYWtlVW5pcXVl
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRp
c3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBGSVhNRSgxOTMyOTcpOiBUaGlzIHNob3VsZCBiZSByZXZpc2VkIGFmdGVy
IHRoZSBVSVByb2Nlc3MgdmVyc2lvbiBnb2VzIGF3YXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Q
cm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAppbmRleCAy
YzRkMmZmOTQ4MDljNDJhNjExNjczYjVmYjVjYWRiZmE1OTE2MDRlLi5jOWIwYzNiMjE1N2FkOGFl
YmU3NDZmNGYzOWZiNWVmY2Q3NWU3MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
clNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgY2xhc3MgQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0Q2xpZW50IGZpbmFsIDogcHVibGljIFdl
YktpdFNvdXBSZXF1ZXN0R2VuZXJpY0NsaWVudAogICAgICAgICBpZiAoIWN1c3RvbVByb3RvY29s
TWFuYWdlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIGN1c3RvbVByb3Rv
Y29sSUQgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXItPmFkZEN1c3RvbVByb3RvY29sKHN0ZDo6bWFr
ZV91bmlxdWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpXZWJTb3VwUmVxdWVzdEFzeW5j
RGF0YT4oV1RGTW92ZSh0YXNrKSwgcmVxdWVzdCkpOworICAgICAgICBhdXRvIGN1c3RvbVByb3Rv
Y29sSUQgPSBjdXN0b21Qcm90b2NvbE1hbmFnZXItPmFkZEN1c3RvbVByb3RvY29sKG1ha2VVbmlx
dWU8TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YT4o
V1RGTW92ZSh0YXNrKSwgcmVxdWVzdCkpOwogICAgICAgICBjdXN0b21Qcm90b2NvbE1hbmFnZXIt
PnN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElELCB3ZWJraXRTb3VwUmVxdWVzdEdlbmVyaWNH
ZXRSZXF1ZXN0KHJlcXVlc3QpKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXgg
ZjRkNzVkOWRkMzE4MjAwNDQ5YTJhYjJlNThlODg2MzEyMGM3Nzc0NC4uNTA3ZjRmNmZmYzNkNDA2
OWMxMzc4MjY1Mjc1YzY2MDY1NGI0YzgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC01Niw3
ICs1Niw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hCiAgICAgICAgIHBhcmFtZXRlcnMuYmxv
YkZpbGVSZWZlcmVuY2VzID0gY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKS0+Ymxv
YlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2IocmVxdWVzdC51cmwoKSk7CiAgICAgcGFyYW1ldGVycy5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVz
ZTsKIAotICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptYWtlX3Vu
aXF1ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9y
RG93bmxvYWRzKCksIFdURk1vdmUocGFyYW1ldGVycyksIGRvd25sb2FkSUQsICpuZXR3b3JrU2Vz
c2lvbiwgJmNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgp
LCBzdWdnZXN0ZWROYW1lKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRzLmFkZChkb3dubG9hZElE
LCBtYWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgZG93bmxvYWRJRCwgKm5l
dHdvcmtTZXNzaW9uLCAmY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKS0+YmxvYlJl
Z2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRh
dGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmlx
dWVfcHRyPERvd25sb2FkPiYmIGRvd25sb2FkKQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIERvd25s
b2FkTWFuYWdlcjo6d2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtE
YXRhVGFzayYgbmV0dwogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnROZXR3b3JrTG9hZFRv
RG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xv
YWQ+JiYgbmV0d29ya0xvYWQsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlciwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYm
IGJsb2JGaWxlUmVmZXJlbmNlcywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBBU1NFUlQoIW1fcGVuZGluZ0Rv
d25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7Ci0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9h
ZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNw
b25zZSkpOworICAgIG1fcGVuZGluZ0Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgbWFrZVVuaXF1
ZTxQZW5kaW5nRG93bmxvYWQ+KG1fY2xpZW50LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uRm9yRG93
bmxvYWRzKCksIFdURk1vdmUobmV0d29ya0xvYWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1h
bmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJ
RCBkb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCkBAIC0xMjMs
NyArMTIzLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbHNlCi0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6
bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9u
SUQpOworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93
bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVz
dW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgQVNT
RVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHAKaW5kZXgg
YTg4NGFjYjI5NWQ0MmNlOTNlMjFiYWM0MzMwODRkN2JiYzQzM2U2NS4uYWUzY2E3ZTBlNGVlN2Vj
ODVkZWEyZTMwOWUxZDNjMjBiNzQ5NjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFwLmNwcApAQCAtNjEsNyArNjEsNyBA
QCBEb3dubG9hZE1hcDo6RG93bmxvYWRNYXBUeXBlOjpBZGRSZXN1bHQgRG93bmxvYWRNYXA6OmFk
ZChEb3dubG9hZElEIGRvd25sb2FkSUQsCiAgICAgYXV0byByZXN1bHQgPSBtX2Rvd25sb2Fkcy5h
ZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGlmIChtX2Rvd25sb2Fkcy5z
aXplKCkgPT0gMSkgewogICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRBc3NlcnRpb24pOwotICAg
ICAgICBtX2Rvd25sb2FkQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0
aW9uPihnZXRwaWQoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJv
dW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZEFzc2VydGlvbiA9IG1ha2VVbmlx
dWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0cGlkKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3Nl
cnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAgICAgICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiVG9vayAnV2ViS2l0IGRvd25sb2FkcycgYXNzZXJ0aW9uIGluIE5l
dHdvcmtQcm9jZXNzIik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAppbmRleCBhMjc4Mjhk
N2E4YmQ4NGE3YWUzNzcxNjg2Nzg2OTFjNzY3ZjI3OTZkLi41OTEyM2YyYzQ4ZjFjMWU0MTc5YmIx
ZDViY2UxNTcwYzZiNzU0ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUGVuZGlu
Z0Rvd25sb2FkOjpQZW5kaW5nRG93bmxvYWQoSVBDOjpDb25uZWN0aW9uKiBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgRG93bmxvYWRJ
RCBkb3dubG9hZElELCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeUltcGwqIGJsb2JSZWdpc3RyeSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1l
KQotICAgIDogbV9uZXR3b3JrTG9hZChzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhp
cywgYmxvYlJlZ2lzdHJ5LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBuZXR3b3JrU2Vzc2lvbikpCisg
ICAgOiBtX25ldHdvcmtMb2FkKG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVn
aXN0cnksIFdURk1vdmUocGFyYW1ldGVycyksIG5ldHdvcmtTZXNzaW9uKSkKICAgICAsIG1fcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24pCiB7CiAgICAgbV9p
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVu
dGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVk
ZW50aWFsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYmJlOWE5YWE0NmE5NjM0
MDI4MmY3MGQyZDNkNGZjMmRkM2M0ZTgyZC4uMjRkMjgxMWQwY2EzZDQxNTliYTM4MWExN2Q2NmJh
M2M5MTIxNWEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTkwMiw3ICs5MDIs
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU1dDb25u
ZWN0aW9ucygpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hT
V1NlcnZlckNvbm5lY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXImJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+
c3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCk7Ci0gICAgYXV0byBjb25uZWN0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJTV1NlcnZlckNvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNl
cnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQpOworICAgIGF1dG8gY29ubmVjdGlv
biA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBz
ZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklEKTsKICAgICAKICAgICBTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVj
dGlvbi0+aWRlbnRpZmllcigpOwogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbiAtICVzIiwgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcAppbmRleCA0NDQyMGZmNWZmMjI5OWJlMzc1NGNlMzdj
ZGRjN2VlNjE2MmUxOTMxLi41NDM1MjgyOGU2ODcyMWFmMGJhZGUwYzAyNzViZTJmMDk1YTE2NjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE5l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoVXNl
ckNvbnRlbnRDb250cm9sbAogdm9pZCBOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6YWRk
Q29udGVudFJ1bGVMaXN0cyhVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERh
dGE+PiYmIGNvbnRlbnRSdWxlTGlzdHMpCiB7CiAgICAgYXV0byYgYmFja2VuZCA9ICptX2NvbnRl
bnRFeHRlbnNpb25CYWNrZW5kcy5lbnN1cmUoaWRlbnRpZmllciwgW10gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4
dGVuc2lvbnNCYWNrZW5kPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigpOwogICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKIAogICAgIGZvciAoYXV0byYmIGNvbnRlbnRSdWxlTGlzdCA6IGNvbnRl
bnRSdWxlTGlzdHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDg1NmNhMWYwOTVlMTAzYzU0MmFkNGU0MzAwMGJj
YjcwZmYxZmIzMDcuLjhhNmM1YTFmMjE4ZDNjOWFiMjEwNGRmMDk0NjkyY2MzZjY1NTIyNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxv
Yi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tC
bG9iLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2ViS2l0
QmxvYlJlc291cmNlRG9tYWluID0gIldlYktpdEJsb2JSZXNvdXJjZSI7CiAKIE5ldHdvcmtEYXRh
VGFza0Jsb2I6Ok5ldHdvcmtEYXRhVGFza0Jsb2IoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIEJs
b2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ29udGVudFNuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRTbmlmZiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0
YUZpbGVSZWZlcmVuY2U+PiYgZmlsZVJlZmVyZW5jZXMpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2so
c2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RV
c2UsIGZhbHNlLCBmYWxzZSkKLSAgICAsIG1fc3RyZWFtKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNG
aWxlU3RyZWFtPigqdGhpcykpCisgICAgLCBtX3N0cmVhbShtYWtlVW5pcXVlPEFzeW5jRmlsZVN0
cmVhbT4oKnRoaXMpKQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhmaWxlUmVmZXJlbmNlcykKICAg
ICAsIG1fbmV0d29ya1Byb2Nlc3Moc2Vzc2lvbi5uZXR3b3JrUHJvY2VzcygpKQogewpAQCAtNDY3
LDcgKzQ2Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQoKQogICAgIH0K
IAogICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2Fk
TWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2Fk
Pihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24t
PnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKKyAgICBhdXRvIGRvd25sb2FkID0g
bWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElE
LCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQoKSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAg
ICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9hZC5nZXQoKTsKICAgICBkb3dubG9hZE1hbmFn
ZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2sobV9wZW5kaW5nRG93bmxvYWRJRCwgV1RGTW92
ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3Bl
bmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKaW5kZXggZjY1NDI5
NThiNDcxMDNkMzgxZjhjYzUzNzBkOWQ2YjU5NGRjMTE2Yy4uMTkzMjZmMmY0N2RjOWY0ZjYyMjhh
NGM5YWE4NGY2YzlmYWFiYjczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fZGF0YWJh
c2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPigpOworICAgICAg
ICBtX2RhdGFiYXNlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZT4oKTsKICAg
ICAgICAgYm9vbCBpc0RhdGFiYXNlT3BlbiA9IG1fZGF0YWJhc2UtPm9wZW4ocGF0aCwgV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6Ok9wZW5Nb2RlOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghaXNE
YXRhYmFzZU9wZW4pIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTgwLDcgKzgwLDcgQEAgTmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXI6Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKCkKICAg
ICAgICAgLy8gU2luY2Ugd2UgYXJlIHVzaW5nIGEgd29ya2VyUXVldWUsIHRoZSBzZXF1ZW50aWFs
IGRpc3BhdGNoIGJsb2NrcyBtYXkgYmUgY2FsbGVkIGJ5IGRpZmZlcmVudCB0aHJlYWRzLgogICAg
ICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCk7CiAKLSAgICAgICAgbV9z
dGF0ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4oKm1f
ZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CisgICAgICAgIG1fc3RhdGVtZW50
ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+KCptX2RhdGFiYXNlLCBodHRw
c1VwZ3JhZGVDaGVja2VyUXVlcnkpOwogICAgICAgICBpbnQgaXNTdGF0ZW1lbnRQcmVwYXJlZCA9
IChtX3N0YXRlbWVudC0+cHJlcGFyZSgpID09IFNRTElURV9PSyk7CiAgICAgICAgIEFTU0VSVChp
c1N0YXRlbWVudFByZXBhcmVkKTsKICAgICAgICAgaWYgKCFpc1N0YXRlbWVudFByZXBhcmVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCA5MTA3
ZmVjMWUzNGRiNDQ4ODE2MjI4Njg2MjJjOGZiZWI1YjM4ODNjLi5lZTgwYWM2ZWExYTc3OTc3M2Ew
NzEwZTE3ODg3MDYzNzY3YzUxMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29t
cGxlCiAgICAgfQogCiAgICAgaWYgKG1fbG9hZFRocm90dGxlTGF0ZW5jeSA+IDBfcykgewotICAg
ICAgICBtX3Rocm90dGxlID0gc3RkOjptYWtlX3VuaXF1ZTxUaHJvdHRsZT4oKnRoaXMsIG1fbG9h
ZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgbV90aHJvdHRsZSA9IG1ha2VVbmlxdWU8VGhyb3R0bGU+KCp0aGlz
LCBtX2xvYWRUaHJvdHRsZUxhdGVuY3ksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCAxMTc2
ZjUzN2E4NTgwOWI0YmFlMWNlNzY4YjU2NTM1YjE1ZDVlYmIzLi5mOWE0ZDA0MTM2NTIxYWY1YTU5
NDI4N2FiNDJiZTRjZWRmNjgzMjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBO
ZXR3b3JrTG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QKICAgICAgICAgbV9mcmFtZUlELAogICAgICAgICBtX3N0b3JlZENy
ZWRlbnRpYWxzUG9saWN5CiAgICAgfTsKLSAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gc3Rk
OjptYWtlX3VuaXF1ZTxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+KG1fbmV0d29ya1Byb2Nl
c3MuZ2V0KCksIFdURk1vdmUocGFyYW1ldGVycyksIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzLCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIg
PSBXVEZNb3ZlKGhhbmRsZXIpLCBpc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQoKV0oYXV0byYm
IGVycm9yKSBtdXRhYmxlIHsKKyAgICBtX2NvcnNQcmVmbGlnaHRDaGVja2VyID0gbWFrZVVuaXF1
ZTxOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI+KG1fbmV0d29ya1Byb2Nlc3MuZ2V0KCksIFdU
Rk1vdmUocGFyYW1ldGVycyksIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
LCBbdGhpcywgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGhhbmRsZXIgPSBXVEZNb3ZlKGhh
bmRsZXIpLCBpc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQoKV0oYXV0byYmIGVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tDT1JTUmVxdWVzdFdp
dGhQcmVmbGlnaHQgLSBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodCBw
cmVmbGlnaHQgY29tcGxldGUsIHN1Y2Nlc3M6ICVkIGZvclJlZGlyZWN0PyAlZCIsIGVycm9yLmlz
TnVsbCgpLCBpc1JlZGlyZWN0ZWQpOwogCiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsK
QEAgLTQ0Niw3ICs0NDYsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIE5ldHdvcmtMb2FkQ2hl
Y2tlcjo6Y29udGVudFNlY3VyaXR5UG9saWN5KCkKIHsKICAgICBpZiAoIW1fY29udGVudFNlY3Vy
aXR5UG9saWN5ICYmIG1fY3NwUmVzcG9uc2VIZWFkZXJzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBQ
YXNzIHRoZSBVUkwgb2YgdGhlIHByb3RlY3RlZCByZXNvdXJjZSBpbnN0ZWFkIG9mIGl0cyBvcmln
aW4uCi0gICAgICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0sIG1fb3JpZ2luLT50b1N0cmluZygp
IH0pOworICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1ha2VVbmlxdWU8Q29udGVu
dFNlY3VyaXR5UG9saWN5PihVUkwgeyBVUkwgeyB9LCBtX29yaWdpbi0+dG9TdHJpbmcoKSB9KTsK
ICAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ktPmRpZFJlY2VpdmVIZWFkZXJzKCptX2Nz
cFJlc3BvbnNlSGVhZGVycywgU3RyaW5nIHsgbV9yZWZlcnJlciB9LCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydFBhcnNpbmdFcnJvcnM6Ok5vKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY29u
dGVudFNlY3VyaXR5UG9saWN5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBjNzc2N2QyY2VlZDcxYTAwNDFlNjBmOWFjYThi
YjhkMjIxNzI2M2Q0Li4xNDQzMGViNzZhNDA5M2IxNDE0ZWMxYjhmOTU4YjBlYTRhMTJhMzVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtNTA5LDkgKzUwOSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKQogICAgICAgICAgICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3Rv
cmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9u
LmdldCgpKSk7CiAgICAgfQogCi0gICAgbV9kZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29v
a2llU3RvcmFnZSkpOworICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2Up
KTsKICNlbGlmIFVTRShDVVJMKSB8fCBVU0UoU09VUCkKLSAgICBtX2RlZmF1bHROZXR3b3JrU3Rv
cmFnZVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgbV9kZWZhdWx0
TmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogI2VuZGlmCiB9
CiAKQEAgLTU0MSw5ICs1NDEsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVTZXNzaW9u
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZwogICAgICAgICAg
ICAgY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2ll
U3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAg
IH0KIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwg
V1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1vdmUoc3Rv
cmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKICNlbGlmIFVTRShDVVJMKSB8
fCBVU0UoU09VUCkKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CisgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9u
SUQpOwogI2VuZGlmCiB9CiAKQEAgLTI0NjQsNyArMjQ2NCw3IEBAIFNXU2VydmVyJiBOZXR3b3Jr
UHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAg
ICAgICAgLy8gSWYgdGhlcmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9u
SUQgY29tZSBmcm9tPwogICAgICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwg
IXBhdGguaXNFbXB0eSgpKTsKICAgICAgICAgCi0gICAgICAgIGF1dG8gdmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIFdU
Rk1vdmUocGF0aCksIHNlc3Npb25JRCk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBtYWtlVW5pcXVl
PFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIFdURk1vdmUocGF0
aCksIHNlc3Npb25JRCk7CiAgICAgICAgIGlmIChtX3Nob3VsZERpc2FibGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkpCiAgICAgICAgICAgICB2YWx1ZS0+ZGlzYWJsZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogICAgICAgICByZXR1cm4gdmFsdWU7
CkBAIC0yNjExLDcgKzI2MTEsNyBAQCBjbGFzcyBRdW90YVVzZXJJbml0aWFsaXplciBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlUXVvdGFVc2VyIHsKIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMoU3RvcmFnZVF1b3RhTWFuYWdlciYgbWFuYWdlciwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKLSAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyksIHNlc3Npb25JRCwgb3JpZ2luLCB1c2VyID0gc3RkOjptYWtlX3VuaXF1ZTxRdW90YVVz
ZXJJbml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQs
IG9yaWdpbiwgdXNlciA9IG1ha2VVbmlxdWU8UXVvdGFVc2VySW5pdGlhbGl6ZXI+KG1hbmFnZXIp
XSgpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB0aGlzLT5pZGJTZXJ2ZXIoc2Vzc2lvbklEKS5pbml0aWFsaXplUXVvdGFVc2Vy
KG9yaWdpbik7CkBAIC0yNjI1LDcgKzI2MjUsNyBAQCBTdG9yYWdlUXVvdGFNYW5hZ2VyJiBOZXR3
b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQog
ICAgICAgICByZXR1cm4gU3RvcmFnZVF1b3RhTWFuYWdlcnMgeyB9OwogICAgIH0pLml0ZXJhdG9y
LT52YWx1ZTsKICAgICByZXR1cm4gKnN0b3JhZ2VRdW90YU1hbmFnZXJzLm1hbmFnZXJzUGVyT3Jp
Z2luKCkuZW5zdXJlKG9yaWdpbiwgW3RoaXMsICZzdG9yYWdlUXVvdGFNYW5hZ2Vycywgc2Vzc2lv
bklELCAmb3JpZ2luXSB7Ci0gICAgICAgIGF1dG8gbWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8
U3RvcmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFuYWdlcnMuZGVmYXVsdFF1b3RhKG9y
aWdpbiksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0odWludDY0X3QgcXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykgewor
ICAgICAgICBhdXRvIG1hbmFnZXIgPSBtYWtlVW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KHN0
b3JhZ2VRdW90YU1hbmFnZXJzLmRlZmF1bHRRdW90YShvcmlnaW4pLCBbdGhpcywgc2Vzc2lvbklE
LCBvcmlnaW5dKHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U3BhY2UsIHVpbnQ2NF90
IHNwYWNlSW5jcmVhc2UsIGF1dG8gY2FsbGJhY2spIHsKICAgICAgICAgICAgIHRoaXMtPnJlcXVl
c3RTdG9yYWdlU3BhY2Uoc2Vzc2lvbklELCBvcmlnaW4sIHF1b3RhLCBjdXJyZW50U3BhY2UsIHNw
YWNlSW5jcmVhc2UsIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgfSk7CiAgICAgICAgIGlu
aXRpYWxpemVRdW90YVVzZXJzKCptYW5hZ2VyLCBzZXNzaW9uSUQsIG9yaWdpbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMzIxMWU5MGY2
NTE4MzZhM2IwNzZjMzIyYWFiODYzNDgxN2Q0YzczYS4uNDA5NGM2NjlkMDg5MWY0OGQxNDM5YWYz
YWZhZTg4MGI2NGUwMjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzIDog
cHVibGljIEF1eGlsaWFyeVByb2Nlc3MsIHByaXZhdGUgRG93bmxvYWRNYW5hZ2VyOjpDbGllbnQs
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRTdXBwbGVtZW50KCkKICAg
ICB7Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCksIHN0ZDo6
bWFrZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQoVDo6c3Vw
cGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAgIH0KIAogICAgIHZvaWQg
cmVtb3ZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBlYzZhODBjODQ4OWRlZjMyZDc4OWI3NGJlYzEy
NzM1N2JlYzU1ODM1Li41N2RkMzBhYzE2YTViZGFmODFlNzU0NzEzNThiNzhkNzk1ODk5YzU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXIK
IAogICAgIGlmIChzeW5jaHJvbm91c1JlcGx5IHx8IHBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RI
VFRQUmVzcG9uc2VBY2Nlc3MgfHwgcGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSkgewogICAg
ICAgICBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSA9IGlzTWFp
bkZyYW1lTG9hZCgpID8gTmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZTo6TWFpbkZyYW1lIDog
TmV0d29ya0xvYWRDaGVja2VyOjpMb2FkVHlwZTo6T3RoZXI7Ci0gICAgICAgIG1fbmV0d29ya0xv
YWRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5lY3Rp
b24ubmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlvbnMg
fSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2luYWxS
ZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBtX3Bh
cmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdodFBv
bGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVycy5pc0hU
VFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygp
LCByZXF1ZXN0TG9hZFR5cGUpOworICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlciA9IG1ha2VV
bmlxdWU8TmV0d29ya0xvYWRDaGVja2VyPihjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCksIEZl
dGNoT3B0aW9ucyB7IG1fcGFyYW1ldGVycy5vcHRpb25zIH0sIG1fcGFyYW1ldGVycy5zZXNzaW9u
SUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBIVFRQ
SGVhZGVyTWFwIHsgbV9wYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgfSwgVVJMIHsg
bV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkgfSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi5j
b3B5UmVmKCksIG1fcGFyYW1ldGVycy5wcmVmbGlnaHRQb2xpY3ksIG9yaWdpbmFsUmVxdWVzdCgp
Lmh0dHBSZWZlcnJlcigpLCBtX3BhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBzaG91
bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSwgcmVxdWVzdExvYWRUeXBlKTsKICAg
ICAgICAgaWYgKG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgICAgICBt
X25ldHdvcmtMb2FkQ2hlY2tlci0+c2V0Q1NQUmVzcG9uc2VIZWFkZXJzKENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IG1fcGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMu
dmFsdWUoKSB9KTsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtMTE5LDcgKzEx
OSw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyCiAjZW5kaWYKICAgICB9CiAgICAgaWYgKHN5
bmNocm9ub3VzUmVwbHkpCi0gICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3luY2hyb25vdXNMb2FkRGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7
CisgICAgICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IG1ha2VVbmlxdWU8U3luY2hyb25vdXNM
b2FkRGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7CiB9CiAKIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6fk5ldHdvcmtSZXNvdXJjZUxvYWRlcigpCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5j
ZXMgPSBuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCkuZmlsZXNJbkJsb2Iob3JpZ2luYWxS
ZXF1ZXN0KCkudXJsKCkpOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KTsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4o
KnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVy
cyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0
d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1
YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29y
a0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCmluZGV4IDA0
ZTNkMDI1MjIwZGU0YzQzYzczNjJkYTE0MWRmMzJiYTIwMzBmYWYuLjU5MTg4NTc1N2E4NDc1MWM4
MzE4ZjdiZTVkMjc1YTdmMTFjNWE0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1NvY2tldENoYW5uZWwuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1NvY2tldENo
YW5uZWw+IE5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCB1aW50NjRfdCBp
ZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3Jr
U29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlmaWVyKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8TmV0d29ya1NvY2tldENoYW5uZWw+KGNvbm5l
Y3Rpb24sIGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpLCByZXF1ZXN0LCBwcm90b2NvbCwgaWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXN1bHQtPm1f
c29ja2V0KSB7CiAgICAgICAgIHJlc3VsdC0+ZGlkQ2xvc2UoMCwgIkNhbm5vdCBjcmVhdGUgYSB3
ZWIgc29ja2V0IHRhc2siX3MpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggZDkwY2NjYTk4
MGE4ZWZmYzJkNGYzOGY1ZTNmNmJjMGFhMmMyZTU0Ni4uMmM2NDI3ZTY0ODIyY2VmNWQxYTgxMjAy
NWVmZDZjODU0NTQxY2U4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUHJlY29ubmVjdFRhc2s6OlByZWNv
bm5lY3RUYXNrKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya0xvYWRQYXJh
bWUKICAgICB9CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9
PSBQcmVjb25uZWN0T25seTo6WWVzKTsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpu
ZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xv
YWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24p
OwogCiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KDYwMDAwX3MpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggOGY0NzYzYzlkYzg2YWI0YTQyZDk0NmYyNmRi
MjhiY2M2OTAyOWNiZS4uMjAxNDUzZjg0MzcwNDY3ZTQzMzA1YTBhNTU5NDJmM2U1YjhiYzEwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9p
ZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6c2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdyaXRp
bmdUb0xvY2FsU3RvcmFnZSkKLSAgICAgICAgbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGls
ZVdyaXRpbmdUb0xvY2FsU3RvcmFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VkZGVuVGVybWluYXRp
b25EaXNhYmxlcj4oKTsKKyAgICAgICAgbV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVdy
aXRpbmdUb0xvY2FsU3RvcmFnZSA9IG1ha2VVbmlxdWU8U3VkZGVuVGVybWluYXRpb25EaXNhYmxl
cj4oKTsKIAogICAgIG1fZGlkU2NoZWR1bGVEYXRhYmFzZVVwZGF0ZSA9IHRydWU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApp
bmRleCAzZTlkMTdkNjAyZDM0MTc3MDMzYzkzMzhiNGJiZTZkYTBiYWJhOGE0Li5iMDgzZDVkMzJh
NTFlNjFkYTQzNzZkZjk0NDZlZjExMTRlYTZiZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC04NCwxNyArODQsMTcg
QEAgQ2FjaGU6OkNhY2hlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVmPFN0b3Jh
Z2U+JiYgc3RvcmFnZSwgT3B0aW9uU2V0PEMKIHsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9T
UEVDVUxBVElWRV9SRVZBTElEQVRJT04pCiAgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoQ2FjaGVP
cHRpb246OlNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKSkgewotICAgICAgICBtX2xvd1Bvd2VyTW9k
ZU5vdGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpMb3dQb3dlck1vZGVOb3RpZmll
cj4oW3RoaXNdKGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKSB7CisgICAgICAgIG1fbG93UG93
ZXJNb2RlTm90aWZpZXIgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVy
PihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKICAgICAgICAgICAgIEFTU0VS
VChXVEY6OlJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgIGlmIChpc0xvd1Bvd2VyTW9k
ZUVuYWJsZWQpCiAgICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbnVs
bHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9zcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyKTsKLSAgICAgICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1h
bmFnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBt
X3N0b3JhZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdl
ciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5n
ZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBpZiAoIW1fbG93UG93
ZXJNb2RlTm90aWZpZXItPmlzTG93UG93ZXJNb2RlRW5hYmxlZCgpKQotICAgICAgICAgICAgbV9z
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKKyAgICAgICAgICAgIG1fc3BlY3VsYXRp
dmVMb2FkTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMs
IG1fc3RvcmFnZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM3NSwxMiArMzc1LDEyIEBA
IHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYm
IGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAgCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVz
cG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3Jr
UHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3Bv
bnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVz
dEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVz
dCwgcmVzcG9uc2UpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJl
ZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVx
dWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2Vz
cygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgcmVxdWVzdCwgcmVzcG9uc2Up
KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURh
dGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
NDU3LDcgKzQ1Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnVwZGF0ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxCiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSA9IGV4aXN0aW5nRW50cnkucmVzcG9uc2UoKTsKICAgICBX
ZWJDb3JlOjp1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlvbihyZXNwb25zZSwg
dmFsaWRhdGluZ1Jlc3BvbnNlKTsKIAotICAgIGF1dG8gdXBkYXRlRW50cnkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEVudHJ5PihleGlzdGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRy
eS5idWZmZXIoKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3Jr
UHJvY2VzcygpLmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5hbFJlcXVlc3QsIHJlc3Bv
bnNlKSk7CisgICAgYXV0byB1cGRhdGVFbnRyeSA9IG1ha2VVbmlxdWU8RW50cnk+KGV4aXN0aW5n
RW50cnkua2V5KCksIHJlc3BvbnNlLCBleGlzdGluZ0VudHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpj
b2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCksIG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UpKTsKICAgICBhdXRvIHVwZGF0
ZVJlY29yZCA9IHVwZGF0ZUVudHJ5LT5lbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKTsKIAogICAgIG1f
c3RvcmFnZS0+c3RvcmUodXBkYXRlUmVjb3JkLCB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCA3
YWUxYzJmZTdkY2U2MDdiOWY4YTUzZDk5YTFiZDc5ODUzOTliY2YxLi4xZjQxNDRhOGZhZTg3YmY1
ZmM1YzgzZWQ5MDJiNmZmMDhhMDY0YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29u
c3QKIAogc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZChj
b25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKIHsKLSAgICBhdXRvIGVudHJ5ID0g
c3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4oc3RvcmFnZUVudHJ5KTsKKyAgICBhdXRvIGVudHJ5ID0g
bWFrZVVuaXF1ZTxFbnRyeT4oc3RvcmFnZUVudHJ5KTsKIAogICAgIFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXIgZGVjb2RlcihzdG9yYWdlRW50cnkuaGVhZGVyLmRhdGEoKSwgc3RvcmFnZUVudHJ5
LmhlYWRlci5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW50cnktPm1fcmVzcG9u
c2UpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDk0YjYwNjhhMGRm
ZWQ3NDJmYWZmZGU1NzY4ODcwNWFlN2E0NjIwMWIuLmJiOTdjN2EzZjI3NjE3NmQwOWZmNDgzNWIy
ZjNiOTdlZjJlNThmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAg
LTU5LDcgKzU5LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNh
Y2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICBwYXJhbWV0ZXJzLmNv
bnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNv
bnRlbnQ7CiAgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENv
bnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKICAgICBwYXJhbWV0ZXJzLnJlcXVl
c3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKLSAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3Vu
aXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpj
YWNoZS5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCkpKTsKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3Jr
TG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpjYWNoZS5uZXR3b3Jr
UHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpKTsKIH0KIAogU3BlY3VsYXRpdmVMb2FkOjp+U3BlY3VsYXRpdmVMb2FkKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCmluZGV4IDFjZDZiNDkyZjgx
YTVhODFkMjRjYTc5MTA4ZGE2YjE5ZTBjMDAzZjEuLjU3ZThlNzU5OWIxY2NhNjViMjZlMDZlYzM4
NzJlZTJkZDk0OWRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OlBlbmRpbmdGcmFtZUxvYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxQZW5kaW5nRnJhbWVMCiAg
ICAgdm9pZCByZWdpc3RlclN1YnJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IEtleSYgc3VicmVzb3VyY2VLZXkpCiAgICAgewogICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBtX3N1YnJlc291cmNlTG9hZHMuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8U3VicmVzb3VyY2VMb2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkp
OworICAgICAgICBtX3N1YnJlc291cmNlTG9hZHMuYXBwZW5kKG1ha2VVbmlxdWU8U3VicmVzb3Vy
Y2VMb2FkPihyZXF1ZXN0LCBzdWJyZXNvdXJjZUtleSkpOwogICAgICAgICBtX2xvYWRIeXN0ZXJl
c2lzQWN0aXZpdHkuaW1wdWxzZSgpOwogICAgIH0KIApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmUoY29uc3QgS2V5JiBzdG9yYWdlS2V5LCBS
ZXRyaWV2ZUNvbXBsZXRpb25ICiAgICAgQVNTRVJUKG1fcGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5z
KHN0b3JhZ2VLZXkpKTsKICAgICAvLyBGSVhNRTogVGhpcyBicmVha3MgaW5jcmVtZW50YWwgbG9h
ZGluZyB3aGVuIHRoZSByZXZhbGlkYXRpb24gaXMgbm90IHN1Y2Nlc3NmdWwuCiAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3BlbmRpbmdSZXRyaWV2ZVJlcXVlc3RzLmVuc3VyZShzdG9yYWdlS2V5LCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJldHJp
ZXZlQ29tcGxldGlvbkhhbmRsZXI+PigpOwogICAgIH0pOwogICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUtPmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CkBAIC00MDQs
NyArNDA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjphZGRQcmVsb2FkZWRFbnRy
eShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb24KICAgICBBU1NFUlQoZW50cnkpOwog
ICAgIEFTU0VSVCghZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKICAgICBhdXRvIGtleSA9IGVu
dHJ5LT5rZXkoKTsKLSAgICBtX3ByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3Vu
aXF1ZTxQcmVsb2FkZWRFbnRyeT4oV1RGTW92ZShlbnRyeSksIFdURk1vdmUocmV2YWxpZGF0aW9u
UmVxdWVzdCksIFt0aGlzLCBrZXksIGZyYW1lSURdIHsKKyAgICBtX3ByZWxvYWRlZEVudHJpZXMu
YWRkKGtleSwgbWFrZVVuaXF1ZTxQcmVsb2FkZWRFbnRyeT4oV1RGTW92ZShlbnRyeSksIFdURk1v
dmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIFt0aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAgICAg
YXV0byBwcmVsb2FkZWRFbnRyeSA9IG1fcHJlbG9hZGVkRW50cmllcy50YWtlKGtleSk7CiAgICAg
ICAgIEFTU0VSVChwcmVsb2FkZWRFbnRyeSk7CiAgICAgICAgIGlmIChwcmVsb2FkZWRFbnRyeS0+
d2FzUmV2YWxpZGF0ZWQoKSkKQEAgLTQ0OSw3ICs0NDksNyBAQCBib29sIFNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMoY29uc3QgS2V5JiBrZXksIEVudHJ5KiBl
bnRyeQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIGNvbXBsZXRpb25I
YW5kbGVyIDogKmNvbXBsZXRpb25IYW5kbGVycykKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZW50cnkgPyBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PigqZW50cnkpIDogbnVsbHB0cik7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGVudHJ5ID8gbWFrZVVuaXF1ZTxFbnRyeT4oKmVudHJ5KSA6
IG51bGxwdHIpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00NjgsNyArNDY4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3Vi
cmVzb3VyY2VJbmZvJiBzdWJyZXMKIAogICAgIExPRyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVBy
ZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIFNwZWN1bGF0aXZlbHkgcmV2YWxpZGF0aW5nICcl
cyc6Iiwga2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gcmV2YWxp
ZGF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4obV9jYWNoZSwgZnJhbWVJ
RCwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJldmFs
aWRhdGlvblJlcXVlc3QsIGZyYW1lSURdKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0
ZWRFbnRyeSkgeworICAgIGF1dG8gcmV2YWxpZGF0b3IgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZl
TG9hZD4obV9jYWNoZSwgZnJhbWVJRCwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgV1RGTW92ZShlbnRy
eSksIFt0aGlzLCBrZXksIHJldmFsaWRhdGlvblJlcXVlc3QsIGZyYW1lSURdKHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJldmFsaWRh
dGVkRW50cnkgfHwgIXJldmFsaWRhdGVkRW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKICAgICAg
ICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8IHJldmFsaWRhdGVkRW50cnktPmtleSgpID09
IGtleSk7CiAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6
OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29uc3QgR2xvYmFsRnJhbWVJRCYgZgogICAg
ICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwgc3VicmVzb3VyY2VJbmZvLCBmcmFtZUlEKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVs
b2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOb3QgcHJlbG9hZGluZyAnJXMnIGJlY2F1c2UgaXQg
aXMgbWFya2VkIGFzIHRyYW5zaWVudCIsIGtleS5pZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7
Ci0gICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgc3RkOjptYWtlX3Vu
aXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywga2V5LCBmcmFtZUlEXSB7CisgICAgICAgICAgICBt
X25vdFByZWxvYWRlZEVudHJpZXMuYWRkKGtleSwgbWFrZVVuaXF1ZTxFeHBpcmluZ0VudHJ5Pihb
dGhpcywga2V5LCBmcmFtZUlEXSB7CiAgICAgICAgICAgICAgICAgbG9nU3BlY3VsYXRpdmVMb2Fk
aW5nRGlhZ25vc3RpY01lc3NhZ2UobV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLCBmcmFtZUlELCBE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmVudHJ5UmlnaHRseU5vdFdhcm1lZFVwS2V5KCkpOwogICAg
ICAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5yZW1vdmUoa2V5KTsKICAgICAgICAg
ICAgIH0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGJiZmM2NDk4OTBmOTVjYzdlMDRjZTgy
YTRmZTMyOTQ0ZGMxYWIxZjAuLjgwNGM0Mjk4Y2MzZTNjMjgxNGZkYmMyYmJiNmNiZWU1NzU4NGFl
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMjkwLDggKzI5MCw4IEBAIHZvaWQgU3RvcmFn
ZTo6c3luY2hyb25pemUoKQogICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQ
cm9jZXNzKSBzeW5jaHJvbml6aW5nIGNhY2hlIik7CiAKICAgICBiYWNrZ3JvdW5kSU9RdWV1ZSgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIG11dGFi
bGUgewotICAgICAgICBhdXRvIHJlY29yZEZpbHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVu
dHNGaWx0ZXI+KCk7Ci0gICAgICAgIGF1dG8gYmxvYkZpbHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudHNGaWx0ZXI+KCk7CisgICAgICAgIGF1dG8gcmVjb3JkRmlsdGVyID0gbWFrZVVuaXF1
ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAgYXV0byBibG9iRmlsdGVyID0gbWFrZVVuaXF1
ZTxDb250ZW50c0ZpbHRlcj4oKTsKIAogICAgICAgICAvLyBNb3N0IG9mIHRoZSBkaXNrIHNwYWNl
IHVzYWdlIGlzIGluIGJsb2JzIGlmIHdlIGFyZSB1c2luZyB0aGVtLiBBcHByb3hpbWF0ZSByZWNv
cmRzIGZpbGUgc2l6ZXMgdG8gYXZvaWQgZXhwZW5zaXZlIHN0YXQoKSBjYWxscy4KICAgICAgICAg
c2l6ZV90IHJlY29yZHNTaXplID0gMDsKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIFN0b3JhZ2U6
OnJlYWRSZWNvcmQoUmVhZE9wZXJhdGlvbiYgcmVhZE9wZXJhdGlvbiwgY29uc3QgRGF0YSYgcmVj
b3JkRGF0YSkKICAgICB9CiAKICAgICByZWFkT3BlcmF0aW9uLmV4cGVjdGVkQm9keUhhc2ggPSBt
ZXRhRGF0YS5ib2R5SGFzaDsKLSAgICByZWFkT3BlcmF0aW9uLnJlc3VsdFJlY29yZCA9IHN0ZDo6
bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihTdG9yYWdlOjpSZWNvcmQgeworICAgIHJlYWRP
cGVyYXRpb24ucmVzdWx0UmVjb3JkID0gbWFrZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3Jh
Z2U6OlJlY29yZCB7CiAgICAgICAgIG1ldGFEYXRhLmtleSwKICAgICAgICAgbWV0YURhdGEudGlt
ZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRhLApAQCAtNzU4LDcgKzc1OCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUPiBib29sIHJldHJpZXZlRnJvbU1lbW9yeShjb25zdCBUJiBvcGVyYXRpb25zLCBj
b25zdCBLZXkmIGtleSwKICAgICAgICAgaWYgKG9wZXJhdGlvbi0+cmVjb3JkLmtleSA9PSBrZXkp
IHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNz
KSBmb3VuZCB3cml0ZSBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MiKTsKICAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcmVjb3JkID0gb3BlcmF0aW9uLT5yZWNvcmQsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6
UmVjb3JkPihyZWNvcmQpLCB7IH0pOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmlxdWU8U3RvcmFnZTo6UmVjb3JkPihyZWNvcmQpLCB7IH0pOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtODYyLDcgKzg2Miw3
IEBAIHZvaWQgU3RvcmFnZTo6cmV0cmlldmUoY29uc3QgS2V5JiBrZXksIHVuc2lnbmVkIHByaW9y
aXR5LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kCiAgICAgaWYgKHJldHJpZXZlRnJvbU1lbW9yeSht
X2FjdGl2ZVdyaXRlT3BlcmF0aW9ucywga2V5LCBjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gcmVhZE9wZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVh
ZE9wZXJhdGlvbj4oKnRoaXMsIGtleSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IGF1dG8gcmVhZE9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8UmVhZE9wZXJhdGlvbj4oKnRoaXMsIGtl
eSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgcmVhZE9wZXJhdGlvbi0+dGlt
aW5ncy5zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICByZWFkT3BlcmF0aW9u
LT50aW1pbmdzLmRpc3BhdGNoQ291bnRBdFN0YXJ0ID0gbV9yZWFkT3BlcmF0aW9uRGlzcGF0Y2hD
b3VudDsKQEAgLTg3OSw3ICs4NzksNyBAQCB2b2lkIFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFJlY29y
ZCYgcmVjb3JkLCBNYXBwZWRCb2R5SGFuZGxlciYmIG1hcHBlZEJvZHlIYW5kbGVyLAogICAgIGlm
ICghbV9jYXBhY2l0eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB3cml0ZU9wZXJhdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVPcGVyYXRpb24+KCp0aGlzLCByZWNvcmQsIFdURk1v
dmUobWFwcGVkQm9keUhhbmRsZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
YXV0byB3cml0ZU9wZXJhdGlvbiA9IG1ha2VVbmlxdWU8V3JpdGVPcGVyYXRpb24+KCp0aGlzLCBy
ZWNvcmQsIFdURk1vdmUobWFwcGVkQm9keUhhbmRsZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgbV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLnByZXBlbmQoV1RGTW92ZSh3cml0
ZU9wZXJhdGlvbikpOwogCiAgICAgLy8gQWRkIGtleSB0byB0aGUgZmlsdGVyIGFscmVhZHkgaGVy
ZSBhcyB3ZSBkbyBsb29rdXBzIGZyb20gdGhlIHBlbmRpbmcgb3BlcmF0aW9ucyB0b28uCkBAIC04
OTgsNyArODk4LDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUs
IE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICBBU1NFUlQodHJhdmVy
c2VIYW5kbGVyKTsKICAgICAvLyBBdm9pZCBub24tdGhyZWFkIHNhZmUgRnVuY3Rpb24gY29waWVz
LgogCi0gICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8VHJh
dmVyc2VPcGVyYXRpb24+KG1ha2VSZWYoKnRoaXMpLCB0eXBlLCBmbGFncywgV1RGTW92ZSh0cmF2
ZXJzZUhhbmRsZXIpKTsKKyAgICBhdXRvIHRyYXZlcnNlT3BlcmF0aW9uUHRyID0gbWFrZVVuaXF1
ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhpcyksIHR5cGUsIGZsYWdzLCBXVEZNb3Zl
KHRyYXZlcnNlSGFuZGxlcikpOwogICAgIGF1dG8mIHRyYXZlcnNlT3BlcmF0aW9uID0gKnRyYXZl
cnNlT3BlcmF0aW9uUHRyOwogICAgIG1fYWN0aXZlVHJhdmVyc2VPcGVyYXRpb25zLmFkZChXVEZN
b3ZlKHRyYXZlcnNlT3BlcmF0aW9uUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5jcHAKaW5kZXggN2I4ODkyMjk5NTM5ZGIzNGM1YjM5MTRkM2IyMTRjZThiODE0M2I5
OC4uNjNhZDA0MDlmZGQyMzZmNmUzYzJjYTMwZTg3ZTRhN2MwYTI5NTkwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJj
ZXNFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgU3RvcmFnZTo6
UmVjb3JkIFN1YnJlc291cmNlc0VudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAog
CiBzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IFN1YnJlc291cmNlc0VudHJ5Ojpk
ZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZUVudHJ5KQog
ewotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1YnJlc291cmNlc0VudHJ5Pihz
dG9yYWdlRW50cnkpOworICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPFN1YnJlc291cmNlc0Vu
dHJ5PihzdG9yYWdlRW50cnkpOwogCiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNv
ZGVyKHN0b3JhZ2VFbnRyeS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUo
KSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbnRyeS0+bV9zdWJyZXNvdXJjZXMpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAKaW5kZXggZDhhMDU5NDBkNzE5N2ViMzIyNWEzNmJjNTEzYTJkYjYxMGRiMGNkOC4uNzEwNGQx
Zjc0Y2Q3MDFjYmNlY2ZhYjU3ZDI0ZWJmZjhkYWViZWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCkBAIC03Myw4ICs3
Myw4IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07CiB2
b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCi0gICAgICAgIG1f
c2Vzc2lvblByZWZldGNoZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoRW50cmllc01hcD4o
KTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvblByZWZldGNoZXMtPmFkZChyZXF1ZXN0
VXJsLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlc3Bv
bnNlKSwgV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBt
YWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
c2Vzc2lvblByZWZldGNoZXMtPmFkZChyZXF1ZXN0VXJsLCBtYWtlVW5pcXVlPFByZWZldGNoQ2Fj
aGU6OkVudHJ5PihXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShidWZmZXIpKSk7CiAgICAgLy8g
TGltaXQgcHJlZmV0Y2hlcyBmb3Igc2FtZSB1cmwgdG8gMS4KICAgICBpZiAoIWFkZFJlc3VsdC5p
c05ld0VudHJ5KQogICAgICAgICByZXR1cm47CkBAIC04Niw5ICs4Niw5IEBAIHZvaWQgUHJlZmV0
Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzCiB2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlUmVkaXJlY3QoY29uc3QgVVJM
JiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0KQogewogICAgIGlm
ICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKLSAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOworICAgICAgICBtX3Nlc3Npb25Q
cmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CiAgICAgcmVkaXJl
Y3RSZXF1ZXN0LmNsZWFyUHVycG9zZSgpOwotICAgIG1fc2Vzc2lvblByZWZldGNoZXMtPnNldChy
ZXF1ZXN0VXJsLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3Zl
KHJlZGlyZWN0UmVzcG9uc2UpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCkpKTsKKyAgICBtX3Nl
c3Npb25QcmVmZXRjaGVzLT5zZXQocmVxdWVzdFVybCwgbWFrZVVuaXF1ZTxQcmVmZXRjaENhY2hl
OjpFbnRyeT4oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZWRpcmVjdFJlcXVl
c3QpKSk7CiAgICAgbV9zZXNzaW9uRXhwaXJhdGlvbkxpc3QuYXBwZW5kKHN0ZDo6bWFrZV90dXBs
ZShyZXF1ZXN0VXJsLCBXYWxsVGltZTo6bm93KCkpKTsKICAgICBpZiAoIW1fZXhwaXJhdGlvblRp
bWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fZXhwaXJhdGlvblRpbWVyLnN0YXJ0T25lU2hvdChl
eHBpcmF0aW9uVGltZW91dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KaW5kZXggMDc3ZjE2ZmE2NTA2NTJj
Nzg3YTZmMDMxNjA5MDkwMjY4ZWJiOGFjMC4uY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjViYmM4ZTRh
NWU5OGExNWM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29u
c3QgTmV0d29ya1Byb2Nlc3NDCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBOZXR3b3JrUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25z
dApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtUHJvY2Vz
c0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIm
IE5ldHdvcmtQcm9jZXNzOjpuZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcigpCiB7CiAgICAgaWYg
KCFtX25ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyKQotICAgICAgICBtX25ldHdvcmtIVFRQU1Vw
Z3JhZGVDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
cj4oKTsKKyAgICAgICAgbV9uZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciA9IG1ha2VVbmlxdWU8
TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI+KCk7CiAgICAgcmV0dXJuICptX25ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggNGE2MWRmMTRkY2Zm
MmU2YzNkMGUwOTBlZDNlNTFjYjYwMzE1ZTY0NC4uNDY4Njg5MzVjNmM2NDJjMjA0ODI4OGZiZTM4
NzkwM2MwMTI4MjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtODAyLDcgKzgwMiw3IEBAIC0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgICAgIFJlZjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4g
cHJvdGVjdGVkTmV0d29ya0RhdGFUYXNrKCpuZXR3b3JrRGF0YVRhc2spOwogICAgICAgICBhdXRv
IGRvd25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CiAgICAg
ICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IF9zZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmRv
d25sb2FkTWFuYWdlcigpOwotICAgICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2Fk
VGFzaywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZp
bGVuYW1lKCkpOworICAgICAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OkRv
d25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRvd25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Np
b24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
ICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxv
YWQoKmRvd25sb2FkKTsKICAgICAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0
d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25s
b2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9h
ZExvY2F0aW9uKCkpOwpAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2Nv
YTo6c2V0Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVh
dGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya1Nlc3Npb25Db2NvYT4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ29jb2E+KG5ldHdvcmtQcm9j
ZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAogc3RhdGljIE5TRGljdGlvbmFyeSAqcHJv
eHlEaWN0aW9uYXJ5KGNvbnN0IFVSTCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkp
CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0
d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrUwogewogICAgIC8v
IEZJWE1FOiBVc2UgcHJvdG9jb2wuCiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tl
dFRhc2s+IHRhc2sgPSBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmdldCgpIHdlYlNv
Y2tldFRhc2tXaXRoUmVxdWVzdDogcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJv
ZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpXTsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsK
IH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tl
dFRhc2smIHRhc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCmluZGV4IGJlNjgwMWYzMGNkZjQ5MDAyNTRjMjI0
YjliMTFmYmRmNzNmZTJlMzEuLjViZTE3MDI2NmY0NWI4YmY3MmVmNTZiMTAwODdjYjU5YmI1NmRi
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
UHJvY2Vzc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrUHJvY2Vzc0N1cmwuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdlU2Vzc2lvbigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphbGxv
d1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYgaG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1cmwuaAppbmRleCBkNDcw
OWE1ZTRhYzhhMmZiNmFjZWI1NmM1N2ViZjBiNWM3NDBkNDU2Li5lMThhNDM5MGIxODhhMjdlOTMx
OGM1MjQwNDU1ZjA2NGNmNmJkNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtTZXNzaW9uQ3VybC5oCkBAIC0zNSw3ICszNSw3IEBAIGNs
YXNzIE5ldHdvcmtTZXNzaW9uQ3VybCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrU2Vzc2lvbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gY3JlYXRl
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHdvcmtTZXNzaW9uQ3VybD4obmV0
d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIH0KICAgICBOZXR3b3JrU2Vz
c2lvbkN1cmwoTmV0d29ya1Byb2Nlc3MmLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKICAgICB+TmV0d29ya1Nlc3Npb25DdXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc0lPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzSU9TLm1tCmluZGV4IDIzNzQ1Mjg4YTA2ZDAxMTQ1OTE5NjhiNTA4NmRlYjVmNDVh
YTBhYzYuLmM4Yjg2YzUxMTEzN2UzNzRlYzBiZTBjMGViNWIzZmViNGYwOWJkMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3IoKQogewogICAgIGlmICghbV9wYXlt
ZW50Q29vcmRpbmF0b3IpCi0gICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOworICAgICAgICBtX3Bh
eW1lbnRDb29yZGluYXRvciA9IG1ha2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+
KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcGF5bWVudENvb3JkaW5hdG9yOwogfQogCkBAIC04Miw3
ICs4Miw3IEBAIGNvbnN0IFN0cmluZyYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBh
eW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkmIGNvb3JkaW5hdG9yLCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxl
cj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBheW1lbnRB
dXRob3JpemF0aW9uQ29udHJvbGxlcj4oY29vcmRpbmF0b3IsIHJlcXVlc3QpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYXltZW50Q29vcmRpbmF0b3JBZGRNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYsIElQQzo6TWVzc2FnZVJlY2VpdmVyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRl
eCBkNDZjNTAzZDgxZTk4MzRlNWQyYTI1NjYwYzg3MjNlYWU3ZTE3MGVjLi40ZmFjYzgyMTNlZjg1
MDVjZjlkNTQ4YjIzYzU2NmRkM2QwYmUwYWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC04OTcs
NyArODk3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAgbV9k
b3dubG9hZE91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihHX09VVFBVVF9TVFJFQU0ob3V0cHV0U3Ry
ZWFtLmxlYWtSZWYoKSkpOwogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0gbV9zZXNzaW9u
LT5uZXR3b3JrUHJvY2VzcygpLmRvd25sb2FkTWFuYWdlcigpOwotICAgIGF1dG8gZG93bmxvYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rv
d25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFt
ZSgpKTsKKyAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oZG93bmxvYWRN
YW5hZ2VyLCBtX3BlbmRpbmdEb3dubG9hZElELCAqdGhpcywgbV9zZXNzaW9uLT5zZXNzaW9uSUQo
KSwgc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgYXV0byogZG93bmxvYWRQdHIgPSBkb3dubG9h
ZC5nZXQoKTsKICAgICBkb3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2so
bV9wZW5kaW5nRG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogICAgIGRvd25sb2FkUHRy
LT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNz
U291cC5jcHAKaW5kZXggODNjMmYyOGVhNWM3MDM0ZGFhN2RiNjQ2MjFiNDQ0ZWRkNWQ5NmFmOS4u
N2E3NDgxZjdkNDI1ZjAyMzM3YTBjMTBhZGY5ZDY1NGY3MGVjN2RkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aQogCiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrUHJvY2Vzczo6
cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SWdub3JlVExTRXJyb3JzKGJv
b2wgaWdub3JlVExTRXJyb3JzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCAzMGZjOGE1MzU1ZDA4NDUy
YWMzNjFiMWRjZWE5N2M4NGYzNjA3ZmVkLi40MDczNjFmMDM2ZTc5ODkxNzY3ZDgwN2ZiYjYzYzkw
NDRiMjYwYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Nlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogTmV0d29ya1Nlc3Npb25Tb3VwOjpOZXR3b3JrU2Vzc2lvblNvdXAo
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBOZXR3b3JrU2Vzc2lvbihuZXR3b3JrUHJvY2Vz
cywgcGFyYW1ldGVycykKLSAgICAsIG1fbmV0d29ya1Nlc3Npb24oc3RkOjptYWtlX3VuaXF1ZTxT
b3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKKyAgICAsIG1fbmV0d29ya1Nlc3Npb24o
bWFrZVVuaXF1ZTxTb3VwTmV0d29ya1Nlc3Npb24+KG1fc2Vzc2lvbklEKSkKIHsKICAgICBhdXRv
KiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIEFTU0VSVChz
dG9yYWdlU2Vzc2lvbik7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IE5ldHdvcmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3Jr
U28KICAgICByZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlLmdldCgpLCBibG9i
UmVnaXN0cnkoKSk7CiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygid3NzIikpCiAg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cE1lc3NhZ2UuZ2V0KCksICJuZXR3b3JrLWV2ZW50
IiwgR19DQUxMQkFDSyh3ZWJTb2NrZXRNZXNzYWdlTmV0d29ya0V2ZW50Q2FsbGJhY2spLCBudWxs
cHRyKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVs
LCBzb3VwU2Vzc2lvbigpLCBzb3VwTWVzc2FnZS5nZXQoKSwgcHJvdG9jb2wpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBN
ZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9u
U291cC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9u
U291cC5oCmluZGV4IGY5ZWY0YmI1NDMwYmJmNzNiMDRhMGUzYmVjMjQ3OTI4ZDU5ZTcxNmIuLjQ2
NmIyNzgyYmY5M2M3NzA3MGY3OTdkZDM2NTIzNGNjMWRlM2ZiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKQEAg
LTQ0LDcgKzQ0LDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25Tb3VwIGZpbmFsIDogcHVibGljIE5l
dHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNz
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0d29y
a1Nlc3Npb25Tb3VwPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAg
fQogICAgIE5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYsIE5ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvblNvdXAoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJL
aXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAppbmRleCBmY2FiMDhmYzFiZDhlMzM4MjNiZmU3
NGM3ZmQ5NzY5MGY1ODY0Y2YzLi44NzQ1MjVlMzhjZTcwNGViZTFkYWE3MTBiYjU1YzAxY2MwNThl
YWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0
U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCkBAIC0xMDEsNyArMTAx
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhH
SW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCB2b2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHN0cmVhbS0+cHJpdi0+cGVuZGluZ0FzeW5jUmVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8QXN5
bmNSZWFkRGF0YT4oV1RGTW92ZSh0YXNrKSwgYnVmZmVyLCBjb3VudCk7CisgICAgc3RyZWFtLT5w
cml2LT5wZW5kaW5nQXN5bmNSZWFkID0gbWFrZVVuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3Zl
KHRhc2spLCBidWZmZXIsIGNvdW50KTsKIH0KIAogc3RhdGljIGdzc2l6ZSB3ZWJraXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtUmVhZEZpbmlzaChHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmlu
ZGV4IGVkYjVmNTFmMGE1MzUwY2U1NTZiOWUyOTI0NjliM2I5ZTAzNzFmMGIuLjkyNjY2OGMzOGZm
ZjcwOGFlNTAyZjU4ZmQ0MTUyODgwM2VjNTU1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCkBA
IC0xMzYsNyArMTM2LDcgQEAgdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVyOjpyZWdpc3Rlck1ETlNO
YW1lKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBQQUw6OlNlc3MKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFBl
bmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25uZWN0aW9u
KCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsKKyAgICBh
dXRvIHBlbmRpbmdSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxQZW5kaW5nUmVnaXN0cmF0aW9uUmVxdWVz
dD4obWFrZVJlZihtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpKSwgcmVxdWVzdElkZW50aWZpZXIs
IFdURk1vdmUobmFtZSksIHNlc3Npb25JRCk7CiAgICAgYXV0byogcmVjb3JkID0gJnBlbmRpbmdS
ZXF1ZXN0LT5yZWNvcmQ7CiAgICAgYXV0byBlcnJvciA9IEROU1NlcnZpY2VSZWdpc3RlclJlY29y
ZChzZXJ2aWNlLAogICAgICAgICByZWNvcmQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRvci5jcHAKaW5kZXggMzUzZWFj
OGNlMTFiNjkwNmVmYWRkMmZkMjcxOGI5N2FiNTJjZGE0ZC4uYWI3MDZkYzJlOTM0YTlhN2VmOTky
Njg5Nzk3NGJkYzc1NGVhM2RmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ01vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENNb25pdG9yLmNwcApAQCAtNDQsNyArNDQsNyBA
QCB2b2lkIE5ldHdvcmtSVENNb25pdG9yOjpzdGFydFVwZGF0aW5nKCkKIHsKICAgICBtX2lzU3Rh
cnRlZCA9IHRydWU7CiAgICAgbV9ydGNQcm92aWRlci5jYWxsT25SVENOZXR3b3JrVGhyZWFkKFt0
aGlzXSgpIHsKLSAgICAgICAgbV9tYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxydGM6OkJhc2lj
TmV0d29ya01hbmFnZXI+KCk7CisgICAgICAgIG1fbWFuYWdlciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKICAgICAgICAgbV9t
YW5hZ2VyLT5TaWduYWxOZXR3b3Jrc0NoYW5nZWQuY29ubmVjdCh0aGlzLCAmTmV0d29ya1JUQ01v
bml0b3I6Om9uTmV0d29ya3NDaGFuZ2VkKTsKICAgICAgICAgbV9tYW5hZ2VyLT5TdGFydFVwZGF0
aW5nKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcAppbmRleCBhNWFjNTcyMTM3OWRiM2Qx
YjI1ODc1NTg2MTAzMGJiYTRkYjllYjhlLi4xNWQ0NGQwYWQ5ZGIwZjNiMDU5OWUxYTMzZWZjZmRi
ODk2MWE2NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgTmV0d29y
a1JUQ1Byb3ZpZGVyOjpOZXR3b3JrUlRDUHJvdmlkZXIoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24KICAgICA6IG1fY29ubmVjdGlvbigmY29ubmVjdGlvbikKICAgICAs
IG1fcnRjTW9uaXRvcigqdGhpcykKICAgICAsIG1fcnRjTmV0d29ya1RocmVhZChjcmVhdGVUaHJl
YWQoKSkKLSAgICAsIG1fcGFja2V0U29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVmPHJ0Yzo6QmFz
aWNQYWNrZXRTb2NrZXRGYWN0b3J5PihtX3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkpKQorICAgICwg
bV9wYWNrZXRTb2NrZXRGYWN0b3J5KG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PHJ0Yzo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5PihtX3J0Y05ldHdvcmtUaHJlYWQuZ2V0KCkp
KQogewogI2lmIGRlZmluZWQoTkRFQlVHKQogICAgIHJ0Yzo6TG9nTWVzc2FnZTo6TG9nVG9EZWJ1
ZyhydGM6OkxTX05PTkUpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgTmV0d29ya1JUQ1Byb3Zp
ZGVyOjpjcmVhdGVTb2NrZXQodWludDY0X3QgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPHJ0
Yzo6CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGFkZFNvY2tldChp
ZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRp
ZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwgdHlwZSkpOworICAgIGFkZFNvY2tldChpZGVu
dGlmaWVyLCBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRo
aXMsIFdURk1vdmUoc29ja2V0KSwgdHlwZSkpOwogfQogCiB2b2lkIE5ldHdvcmtSVENQcm92aWRl
cjo6Y3JlYXRlVURQU29ja2V0KHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFJUQ05ldHdvcms6
OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBv
cnQpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdU
Q1BDb25uZWN0aW9uKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IG5ld0MKIHsKICAgICBj
YWxsT25SVENOZXR3b3JrVGhyZWFkKFt0aGlzLCBpZGVudGlmaWVyLCBuZXdDb25uZWN0aW9uU29j
a2V0SWRlbnRpZmllcl0oKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxydGM6OkFzeW5jUGFj
a2V0U29ja2V0PiBzb2NrZXQgPSBtX3BlbmRpbmdJbmNvbWluZ1NvY2tldHMudGFrZShuZXdDb25u
ZWN0aW9uU29ja2V0SWRlbnRpZmllcik7Ci0gICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMs
IFdURk1vdmUoc29ja2V0KSwgTGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2ZXJDb25u
ZWN0aW9uVENQKSk7CisgICAgICAgIGFkZFNvY2tldChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPExp
YldlYlJUQ1NvY2tldENsaWVudD4oaWRlbnRpZmllciwgKnRoaXMsIFdURk1vdmUoc29ja2V0KSwg
TGliV2ViUlRDU29ja2V0Q2xpZW50OjpUeXBlOjpTZXJ2ZXJDb25uZWN0aW9uVENQKSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXgg
MzgzODJiMDlkNGZiM2JlMjY0Zjg5Yjc3ODQxYTQxZDdjMDhjYWMwNS4uYzVlZjZkOTlhNTYwZGQx
NDg4ZjE4NDk5NWFlOGE3YjE2ZDlhZDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3Bh
dGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNSZXF1
ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBD
IiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIC8vIEhhbmQgb2Zm
IGJvdGggdGhlIGRlY29kZXIgYW5kIGVuY29kZXIgdG8gdGhlIHdvcmsgcXVldWUgbWVzc2FnZSBy
ZWNlaXZlci4KICAgICB3b3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKCp0aGlzLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZv
aWQgQ29ubmVjdGlvbjo6bWFya0N1cnJlbnRseURpc3BhdGNoZWRNZXNzYWdlQXNJbnZhbGlkKCkK
IAogc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IENvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdl
RW5jb2RlcihTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgU3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50NjRfdCYgc3luY1Jl
cXVlc3RJRCkKIHsKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1l
c3NhZ2VOYW1lLCBkZXN0aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5zZXRJc1N5bmNNZXNzYWdl
KHRydWUpOwogCiAgICAgLy8gRW5jb2RlIHRoZSBzeW5jIHJlcXVlc3QgSUQuCkBAIC03NTYsNyAr
NzU2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjplbmFibGVJbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGlu
ZygpCiAgICAgaWYgKG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxN
ZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25uZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVz
c2FnZXMpOworICAgIG1faW5jb21pbmdNZXNzYWdlc1Rocm90dGxlciA9IG1ha2VVbmlxdWU8TWVz
c2FnZXNUaHJvdHRsZXI+KCp0aGlzLCAmQ29ubmVjdGlvbjo6ZGlzcGF0Y2hJbmNvbWluZ01lc3Nh
Z2VzKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25u
ZWN0aW9uV29ya1F1ZXVlKCkKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIENvbm5lY3Rpb246OmRp
c3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigi
SVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKKyAgICBhdXRvIHJlcGx5
RW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJTeW5jTWVzc2FnZVJlcGx5Iiwg
c3luY1JlcXVlc3RJRCk7CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkg
PT0gIklQQyIgJiYgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09ICJXcmFwcGVkQXN5bmNNZXNzYWdl
Rm9yVGVzdGluZyIpIHsKICAgICAgICAgaWYgKCFtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxv
d2VkRm9yVGVzdGluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmlu
ZGV4IDIwZjVlYzViMjAyYmVjMmJkZjU4ZjAyMGViZGVlZjgzMTQ5MzExYmYuLmFkYzRhYWQ5ODgx
OGZhMDZhZmM2YmU4OTYxNDVkNTYzMTU4MzJkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKQEAgLTQzMyw3ICs0MzMsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmQo
VCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9u
PgogewogICAgIENPTVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVk
KTsKIAotICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVj
ZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVy
ID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0
aW5hdGlvbklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAg
ICAgCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25z
KTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoQXN5bmNSZXBs
eShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdAogewogICAgIENP
TVBJTEVfQVNTRVJUKCFUOjppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIAotICAgIGF1
dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCks
IFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1
ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
ICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAg
ICBlbmNvZGVyLT5lbmNvZGUobGlzdGVuZXJJRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3Nh
Z2UuYXJndW1lbnRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRl
eCBjY2EwNzM5MGFkZWM0NDZkZTc0NjZjZjhlMTAxMjNjMjc5Mzg1MzUyLi5mZDUxNzAxNzEyYjA2
MjlkNDcyNTJkMDQwODk2YzY0ZmNiY2JiMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
ZWNvZGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBE
ZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh3cmFwcGVkTWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4od3JhcHBlZE1lc3NhZ2UuZGF0YSgp
LCB3cmFwcGVkTWVzc2FnZS5zaXplKCksIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdy
YXBwZWRNZXNzYWdlLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOwogfQog
CiBzdGF0aWMgaW5saW5lIGNvbnN0IHVpbnQ4X3QqIHJvdW5kVXBUb0FsaWdubWVudChjb25zdCB1
aW50OF90KiBwdHIsIHVuc2lnbmVkIGFsaWdubWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCA4NTQ1MmNkYTdlMDQ1ZTQ0NTVlMDdiOTNiYWZjYTM1
YjEwMjAwMTFlLi5hNzQ5YWFiODcwMDU0Y2ViNjkwZTVmMTRmNDA3NTYzZmZjZDBmOWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0xODIsNyArMTgy
LDcgQEAgdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVj
b2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRgogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OkFz
eW5jUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbbGlzdGVuZXJJRCA9ICpsaXN0ZW5lcklELCBj
b25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxl
IHsKLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiQXN5
bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2FnZVJlcGx5TmFtZSgpLCAwKTsKKyAgICAgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPigiQXN5bmNSZXBseSIsIFQ6OmFzeW5jTWVzc2Fn
ZVJlcGx5TmFtZSgpLCAwKTsKICAgICAgICAgKmVuY29kZXIgPDwgbGlzdGVuZXJJRDsKICAgICAg
ICAgVDo6c2VuZChXVEZNb3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBhcmdzLi4u
KTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmlu
ZGV4IDNkNmYzNDI4OTJiYzg4MzkwNjc4ZThjMzY0NjM5MTEwZGU0ZjU3MjYuLjc3MTQ0OGE0NGQw
ODg2ZGQwMWJiMGMyZGU2NGRjOWE0Mjg2MjdhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVzc2FnZVNlbmRl
ciB7CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlz
IHN5bmMhIik7CiAKLSAgICAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFbmNv
ZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAg
ICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwg
VTo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3Nh
Z2UuYXJndW1lbnRzKCkpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdU
Rk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCAzNzAyYWNjN2RmNTFiZDg0
NmI5M2FmNjRiZjA3MGE0YzEwMDM5MTlmLi44N2RkMjhmODA4Njc4MmNlMmEzZGY3OTBmNGFjMGU2
ZDc0OWRhYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9D
b25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
Q29ubmVjdGlvbkNvY29hLm1tCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIDog
bV94cGNDb25uZWN0aW9uKHhwY0Nvbm5lY3Rpb24pCiAgICAgICAgICwgbV93YXRjaGRvZ1RpbWVy
KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nOjp3
YXRjaGRvZ1RpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgLCBt
X2Fzc2VydGlvbihzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9u
Pih4cGNfY29ubmVjdGlvbl9nZXRfcGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJDb25uZWN0
aW9uVGVybWluYXRpb25XYXRjaGRvZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dy
b3VuZCkpCisgICAgICAgICwgbV9hc3NlcnRpb24obWFrZVVuaXF1ZTxXZWJLaXQ6OlByb2Nlc3NB
bmRVSUFzc2VydGlvbj4oeHBjX2Nvbm5lY3Rpb25fZ2V0X3BpZChtX3hwY0Nvbm5lY3Rpb24uZ2V0
KCkpLCAiQ29ubmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2ciX3MsIFdlYktpdDo6QXNzZXJ0aW9u
U3RhdGU6OkJhY2tncm91bmQpKQogI2VuZGlmCiAgICAgewogICAgICAgICBtX3dhdGNoZG9nVGlt
ZXIuc3RhcnRPbmVTaG90KGludGVydmFsKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIENvbm5l
Y3Rpb246Om9wZW4oKQogICAgICAgICBtX2lzQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAgICAgCiAg
ICAgICAgIC8vIFNlbmQgdGhlIGluaXRpYWxpemUgbWVzc2FnZSwgd2hpY2ggY29udGFpbnMgYSBz
ZW5kIHJpZ2h0IGZvciB0aGUgc2VydmVyIHRvIHVzZS4KLSAgICAgICAgYXV0byBlbmNvZGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwg
MCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oIklQQyIsICJJ
bml0aWFsaXplQ29ubmVjdGlvbiIsIDApOwogICAgICAgICBlbmNvZGVyLT5lbmNvZGUoTWFjaFBv
cnQobV9yZWNlaXZlUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpKTsKIAogICAgICAgICBp
bml0aWFsaXplU2VuZFNvdXJjZSgpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3Qq
IGhlYWRlcikKICAgICAgICAgdWludDhfdCogYm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGhlYWRlciArIDEpOwogICAgICAgICBzaXplX3QgYm9keVNpemUgPSBoZWFkZXItPm1zZ2hf
c2l6ZSAtIHNpemVvZihtYWNoX21zZ19oZWFkZXJfdCk7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RGVjb2Rlcj4oYm9keSwgYm9keVNpemUsIG51bGxwdHIsIFZlY3RvcjxBdHRh
Y2htZW50PiB7IH0pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPihib2R5LCBi
b2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7CiAgICAgfQogCiAgICAg
Ym9vbCBtZXNzYWdlQm9keUlzT09MID0gaGVhZGVyLT5tc2doX2lkID09IG91dE9mTGluZUJvZHlN
ZXNzYWdlSUQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBjcmVhdGVNZXNzYWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAg
ICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkZXNjcmlw
dG9yLT5vdXRfb2ZfbGluZS5hZGRyZXNzKTsKICAgICAgICAgc2l6ZV90IG1lc3NhZ2VCb2R5U2l6
ZSA9IGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLnNpemU7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSB7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIFtdKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkgewogICAgICAgICAgICAgdm1fZGVhbGxvY2F0
ZShtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oYnVmZmVy
KSwgbGVuZ3RoKTsKICAgICAgICAgfSwgV1RGTW92ZShhdHRhY2htZW50cykpOwogICAgIH0KQEAg
LTQ1OCw3ICs0NTgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1l
c3NhZ2VEZWNvZGVyKG1hY2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgdWludDhfdCogbWVz
c2FnZUJvZHkgPSBkZXNjcmlwdG9yRGF0YTsKICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0g
aGVhZGVyLT5tc2doX3NpemUgLSAoZGVzY3JpcHRvckRhdGEgLSByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihoZWFkZXIpKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+
KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUoYXR0YWNobWVu
dHMpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2Fn
ZUJvZHlTaXplLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIC8vIFRoZSBy
ZWNlaXZlIGJ1ZmZlciBzaXplIHNob3VsZCBhbHdheXMgaW5jbHVkZSB0aGUgbWF4aW11bSB0cmFp
bGVyIHNpemUuCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWNlaXZlU291
cmNlRXZlbnRIYW5kbGVyKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24oc3RkOjptYWtlX3VuaXF1ZTxJbXBv
cnRhbmNlQXNzZXJ0aW9uPihoZWFkZXIpKTsKKyAgICBkZWNvZGVyLT5zZXRJbXBvcnRhbmNlQXNz
ZXJ0aW9uKG1ha2VVbmlxdWU8SW1wb3J0YW5jZUFzc2VydGlvbj4oaGVhZGVyKSk7CiAjZW5kaWYK
IAogICAgIGlmIChkZWNvZGVyLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gIklQQyIgJiYgZGVj
b2Rlci0+bWVzc2FnZU5hbWUoKSA9PSAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4
IDYzYjZiZTcyNzFlNDQ1ODgzOTUwNWFhOTE1ZTM4NzNmODUxNGRlZGQuLjc3YWY5YjI4NTg0NTI2
YmI3MGM3ZmZjOGUzMjU2YTNiYWExM2EyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgYm9v
bCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzQm9k
eU91dE9mTGluZSgpKQogICAgICAgICBtZXNzYWdlQm9keSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KG9vbE1lc3NhZ2VCb2R5LT5kYXRhKCkpOwogCi0gICAgYXV0byBkZWNvZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUo
KSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIGF1dG8gZGVjb2RlciA9IG1h
a2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCksIG51
bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIAogICAgIHByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UoV1RGTW92ZShkZWNvZGVyKSk7CiAKQEAgLTQ4Miw3ICs0ODIsNyBAQCBib29sIENvbm5lY3Rp
b246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0g
RVdPVUxEQkxPQ0spIHsKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIG1fcGVuZGluZ091dHB1
dE1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1l
c3NhZ2UpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ091dHB1dE1lc3NhZ2UgPSBtYWtlVW5pcXVl
PFVuaXhNZXNzYWdlPihXVEZNb3ZlKG91dHB1dE1lc3NhZ2UpKTsKICAgICAgICAgICAgIG1fd3Jp
dGVTb2NrZXRNb25pdG9yLnN0YXJ0KG1fc29ja2V0LmdldCgpLCBHX0lPX09VVCwgbV9jb25uZWN0
aW9uUXVldWUtPnJ1bkxvb3AoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKEdJT0NvbmRpdGlvbiBjb25kaXRpb24pIC0+IGdib29sZWFuIHsKICAgICAgICAgICAgICAg
ICBpZiAoY29uZGl0aW9uICYgR19JT19PVVQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG1fcGVuZGluZ091dHB1dE1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IDY0MGY0NTI5OWUzYjI2NmUwMjY5Y2NjY2M5
NDUyYjNiYTU3OWVmYjEuLjVhZGZkODJiZWNhNDZkYjAyNDQ3ZThiY2I2ZDM4NGMyYzAxNTZhNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWRFdmVudEhhbmRsZXIo
KQogICAgICAgICBpZiAoIW1fcmVhZEJ1ZmZlci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8v
IFdlIGhhdmUgYSBtZXNzYWdlLCBsZXQncyBkaXNwYXRjaCBpdC4KICAgICAgICAgICAgIFZlY3Rv
cjxBdHRhY2htZW50PiBhdHRhY2htZW50cygwKTsKLSAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVm
ZmVyLnNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgICAgICAgICAg
YXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtX3JlYWRCdWZmZXIuZGF0YSgpLCBt
X3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAg
ICAgICAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGlu
Z0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhvc3RpbmdDb250
ZXh0Lm1tCmluZGV4IDgyMzJkYjRlYjU2ZWFjYjZmOGNlODU1NjY0YjhiNzgyYWI2NTBhOTguLjdh
ZWU0N2VhYjk1ZjU4YTZiNDE3ODVjMGY0ZmY3ZjAyYjA0Y2Y0NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQpAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0Nv
bnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvclBvcnQoY29uc3QgTWFjaFNlbmRS
aWdodCYgc2VydmVyUG9ydCkKIHsKLSAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3Rp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0PigpOwogCiAgICAgTlNE
aWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKICAgICAgICAga0NBQ29udGV4dFBvcnROdW1iZXIgOiBA
KHNlcnZlclBvcnQuc2VuZFJpZ2h0KCkpLApAQCAtNTIsNyArNTIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9y
dChjb25zdCBNYQogI2lmIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKIHN0ZDo6
dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVh
dGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKGNvbnN0IExheWVySG9zdGluZ0NvbnRleHRPcHRp
b25zJiBvcHRpb25zKQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0Nv
bnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAgbGF5ZXJIb3N0
aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9kZTo6T3V0T2ZQ
cm9jZXNzOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQpAQCAtODIsNyArODIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4
dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aQogI2lmIFBMQVRG
T1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3Rp
bmdDb250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKCkKIHsKLSAg
ICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVySG9zdGlu
Z0NvbnRleHQ+KCk7CisgICAgYXV0byBsYXllckhvc3RpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxM
YXllckhvc3RpbmdDb250ZXh0PigpOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fbGF5ZXJI
b3N0aW5nTW9kZSA9IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKICAgICBsYXllckhv
c3RpbmdDb250ZXh0LT5tX2NvbnRleHQgPSBbQ0FDb250ZXh0IGNvbnRleHRXaXRoQ0dTQ29ubmVj
dGlvbjpDR1NNYWluQ29ubmVjdGlvbklEKCkgb3B0aW9uczpAeyBrQ0FDb250ZXh0Q0lGaWx0ZXJC
ZWhhdmlvciA6IEAiaWdub3JlIiB9XTsKICAgICByZXR1cm4gbGF5ZXJIb3N0aW5nQ29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDM2NmI5ODNjYzBiZWE1ODM4NjNhN2NkNjMzM2Y5NDhkZjc0ODQ0MzUuLmNl
ODI2N2QyZWU3OGNhY2IzZGRhMGE5YjM3NWJmYWFmYzY4NmVlNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjEy
LDcgKzIxMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluCiAKIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1l
dGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxF
dmVudHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKQogewotICAgIGF1dG8gcGx1Z2lu
Q29udHJvbGxlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5Db250cm9sbGVyUHJveHk+
KHRoaXMsIGNyZWF0aW9uUGFyYW1ldGVycyk7CisgICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJv
eHkgPSBtYWtlVW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJh
bWV0ZXJzKTsKIAogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclBy
b3h5UHRyID0gcGx1Z2luQ29udHJvbGxlclByb3h5LmdldCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJMLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJVVJMLmgKaW5kZXggYmJkNDIzYmNmNTcxNWU0YWQ3MGJmNTJkZWY4YzJjMzBjNDFiZjBmNi4u
M2U2MWJiZDAwMGUxZjRjZGI2YzJhMzZjYTRmNzVlOTA0ZjgzNWNmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElVUkwuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMgT2JqZWN0
SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgQVNTRVJUKGJhc2VVUkwp
OwogICAgICAgICBiYXNlVVJMLT5wYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGF1dG8g
YWJzb2x1dGVVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPigqYmFzZVVSTC0+bV9wYXJz
ZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IG1h
a2VVbmlxdWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVV
UkwpOwogICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgYWJzb2x1dGVVUkxTdHJpbmcgPSBhYnNv
bHV0ZVVSTC0+c3RyaW5nKCk7CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVBJOjpV
UkwoV1RGTW92ZShhYnNvbHV0ZVVSTCksIGFic29sdXRlVVJMU3RyaW5nKSk7CkBAIC0xMjEsNyAr
MTIxLDcgQEAgY2xhc3MgVVJMIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVUkw+
IHsKICAgICB7CiAgICAgICAgIGlmIChtX3BhcnNlZFVSTCkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgbV9wYXJzZWRVUkwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6VVJMPihXVEY6OlVS
TCgpLCBtX3N0cmluZyk7CisgICAgICAgIG1fcGFyc2VkVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVS
TD4oV1RGOjpVUkwoKSwgbV9zdHJpbmcpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIG1fc3Ry
aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9i
amVjdEludm9jYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3Rl
T2JqZWN0SW52b2NhdGlvbi5tbQppbmRleCAyNTkyODQ3ZTM0MWEzYjZmNzI4NzU0YmQ3ODhhNjY1
M2RkMjIxNWIwLi5kM2ZmNjIxZWMwZjRhMTBkNzU2NDg3Y2MyMTZmNDk1Y2U4NmQ3MmE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2Nh
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0
SW52b2NhdGlvbi5tbQpAQCAtODMsNyArODMsNyBAQCBib29sIFJlbW90ZU9iamVjdEludm9jYXRp
b246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZU9iamVjdEludm9jYXRpbwog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJsb2NrU2lnbmF0dXJlKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQubV9yZXBseUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlcGx5SW5mbz4ocmVwbHlJRCwgV1RGTW92ZShibG9ja1NpZ25hdHVyZSkpOworICAg
ICAgICByZXN1bHQubV9yZXBseUluZm8gPSBtYWtlVW5pcXVlPFJlcGx5SW5mbz4ocmVwbHlJRCwg
V1RGTW92ZShibG9ja1NpZ25hdHVyZSkpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5Lm1tCmluZGV4IDY1ZGE5ZWZmMDFiNDNlYTU3MTA4MDJmNmM0NmE2ZDAyMDI2NTY5
M2UuLjQ4OTk3NjI5MzJiN2FmNjkyMjFkMDUwYWY2NzQ1ODM2ZmMzODdiMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0KQEAgLTEwOSw3ICsxMDksNyBAQCAtIChpZClfaW5pdFdpdGhXZWJQYWdlOihXZWJL
aXQ6OldlYlBhZ2UmKXBhZ2UKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CisgICAgX3Jl
bW90ZU9iamVjdFJlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lz
dHJ5PihzZWxmLCBwYWdlKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTE5LDcgKzExOSw3
IEBAIC0gKGlkKV9pbml0V2l0aFdlYlBhZ2VQcm94eTooV2ViS2l0OjpXZWJQYWdlUHJveHkmKXBh
Z2UKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpS
ZW1vdGVPYmplY3RSZWdpc3RyeT4oc2VsZiwgcGFnZSk7CisgICAgX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBwYWdl
KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIC0gKHZvaWQpX3Nl
bmRJbnZvY2F0aW9uOihOU0ludm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVt
b3RlT2JqZWN0SW50CiAgICAgICAgIGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25h
dHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlwZSwg
InYiKSkKICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4
Y2VwdGlvbiBmb3JtYXQ6QCJSZXR1cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBiZSAn
dm9pZCcuICglcykiLCBzZWxfZ2V0TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAgICAg
ICAgcmVwbHlJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9j
YXRpb246OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1Np
Z25hdHVyZSk7CisgICAgICAgIHJlcGx5SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVP
YmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIHJl
cGx5QmxvY2tTaWduYXR1cmUpOwogCiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGJsb2NrIG9iamVj
dCBzbyB3ZSB3b24ndCB0cnkgdG8gZW5jb2RlIGl0LgogICAgICAgICBpZCBudWxsID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRl
eHRNZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRDb250
ZXh0TWVudUl0ZW0uY3BwCmluZGV4IDdlZDExZTZjMTcxZTIwYmUxZTllYWRiMzA3ZTcxZmM0OGJm
ZGU4NDkuLmZhZWZlZDJkY2M4MzhlZTk1NzM5MDY1ZGFjNjNmMTM1NjNmMGQzYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJ
dGVtLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdENv
bnRleHRNZW51SXRlbUNyZWF0ZShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJgogewogICAg
IFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIE5VTEwpKTsKIAotICAg
IGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0
ZW1HbGliPihpdGVtRGF0YSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVl
PFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKICAgICBjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mIHN1Yk1lbnUgPSBpdGVtRGF0YS5zdWJtZW51KCk7CiAgICAg
aWYgKCFzdWJNZW51LmlzRW1wdHkoKSkKICAgICAgICAgd2Via2l0Q29udGV4dE1lbnVJdGVtU2V0
U3ViTWVudShpdGVtLCBhZG9wdEdSZWYod2Via2l0Q29udGV4dE1lbnVDcmVhdGUoc3ViTWVudSkp
KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250
ZXh0X21lbnVfaXRlbV9uZXcoR3RrQWN0aW9uKiBhY3Rpb24pCiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoR1RLX0lTX0FDVElPTihhY3Rpb24pLCBudWxscHRyKTsKIAogICAgIFdlYktpdENvbnRl
eHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsKLSAgICBpdGVtLT5wcml2
LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oYWN0
aW9uKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4oYWN0aW9uKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpAQCAtMTY3LDcgKzE2
Nyw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19mcm9tX2dhY3Rpb24oR0FjdGlvbiogYWN0aW9uCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
IXRhcmdldCB8fCBnX3ZhcmlhbnRfaXNfb2ZfdHlwZSh0YXJnZXQsIGdfYWN0aW9uX2dldF9wYXJh
bWV0ZXJfdHlwZShhY3Rpb24pKSwgbnVsbHB0cik7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0
ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0
ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbiwgU3Ry
aW5nOjpmcm9tVVRGOChsYWJlbCksIHRhcmdldCk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0g
PSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGFjdGlvbiwgU3RyaW5nOjpmcm9t
VVRGOChsYWJlbCksIHRhcmdldCk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTE5NCw3ICsx
OTQsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9u
ZXdfZnJvbV9zdG9ja19hY3Rpb24oV2ViS2l0Q29udAogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAgIENvbnRleHRNZW51SXRlbVR5
cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVja2FibGUoYWN0aW9uKSA/IENo
ZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRD
b250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFj
dGlvbkdldExhYmVsKGFjdGlvbikpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVu
aXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlv
bkdldEFjdGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldExhYmVsKGFj
dGlvbikpOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0yMTYsNyArMjE2LDcgQEAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tf
YWN0aW9uX3dpdGhfbGFiZWwKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdF
QktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9N
RU5VX0lURU0sIG51bGxwdHIpKTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJr
aXRDb250ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25U
eXBlIDogQWN0aW9uVHlwZTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4odHlwZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rp
b25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOworICAgIGl0
ZW0tPnByaXYtPm1lbnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPih0
eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBTdHJpbmc6
OmZyb21VVEY4KGxhYmVsKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTIzOSw3ICsyMzks
NyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdf
d2l0aF9zdWJtZW51KGNvbnN0IGdjaGFyKiBsYQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRF
TShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxwdHIpKTsK
LSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29udGV4dE1l
bnVJdGVtR2xpYj4oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFn
LCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBt
YWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KEFjdGlvblR5cGUsIENvbnRleHRNZW51
SXRlbUJhc2VBcHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9tVVRGOChsYWJlbCkpOwogICAgIGl0
ZW0tPnByaXYtPnN1Yk1lbnUgPSBzdWJtZW51OwogICAgIHdlYmtpdENvbnRleHRNZW51U2V0UGFy
ZW50SXRlbShzdWJtZW51LCBpdGVtKTsKIApAQCAtMjU2LDcgKzI1Niw3IEBAIFdlYktpdENvbnRl
eHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29u
c3QgZ2NoYXIqIGxhCiBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lbnVf
aXRlbV9uZXdfc2VwYXJhdG9yKHZvaWQpCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBp
dGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9D
T05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBhcmF0b3JUeXBlLCBD
b250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOworICAgIGl0ZW0tPnByaXYtPm1l
bnVJdGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihTZXBhcmF0b3JUeXBl
LCBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIGl0
ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KaW5kZXggN2FkMzMzMTQ1
MzkxODg4OWZkM2I5ODk2Mzg2YThiZWQxZjUxOWExNC4uMzkxNGE0YzIwMTRhOWE1NGE2MzQ4OGE0
ZTc0MzgxOWM2YThkYjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpA
QCAtNzksNyArNzksNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bVNob3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFTU0VS
VCh2aWV3Q29udHJvbGxlcik7CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1f
YXV0aG9yaXphdGlvblByZXNlbnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVx
dWVzdC5nZXQoKSwgdmlld0NvbnRyb2xsZXIpOworICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQ
cm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbWFrZVVuaXF1ZTxQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRS
ZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNTRVJUKCFwYXltZW50
Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBheW1lbnRDb29yZGlu
YXRvclByb3h5LT5tX3NoZWV0V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dpdGhDb250ZW50Vmll
d0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IGIwMDIwZWRlNDc4YzFjZTUz
YjEwNmVlY2NmZTI2NDMwMTJhNDZkZmIuLjZlZGUxN2IyY2E5MjgxZjgwNTI2OTVlMWZmMzJhMDky
MzhhYThjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hF
eHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94
RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTE1Myw3ICsxNTMsNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8SGFu
ZGxlPgogICAgICAgICByZXR1cm4ge3sgfX07CiAKICAgICBIYW5kbGUgaGFuZGxlOwotICAgIGhh
bmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNp
b25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEo
KSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9u
ID0gbWFrZVVuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uSW1wbD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7CiAg
ICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuY3BwCmluZGV4IDE4ZGMyZmI4ZWQxM2QxNTM0MTJlYTMwZTI5MTExNzhlYWNl
ZmM1YWUuLjcwNDMwZjQ0MzEyYzhhNTYyY2UxNWZjNzMyZjY5ZDM4NzZmZTljMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBU
ZXh0dXJlTWFwcGVyTGF5ZXImIHRleG1hcExheWVyKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXIm
IGNvbXBvc2l0aW9uTGF5ZXIpCiB7CiAgICAgYXV0byYgY29tcG9zaXRpb25TdGF0ZSA9IGNvbXBv
c2l0aW9uTGF5ZXJJbXBsKGNvbXBvc2l0aW9uTGF5ZXIpLmNvbXBvc2l0aW9uU3RhdGUoKTsKICAg
ICBpZiAoIWNvbXBvc2l0aW9uU3RhdGUubGF5ZXIpIHsKLSAgICAgICAgY29tcG9zaXRpb25TdGF0
ZS5sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckxheWVyPigpOworICAgICAg
ICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+
KCk7CiAgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXItPnNldElEKGNvbXBvc2l0aW9uTGF5
ZXIuaWQoKSk7CiAgICAgfQogICAgIHJldHVybiAqY29tcG9zaXRpb25TdGF0ZS5sYXllcjsKQEAg
LTQxOCw3ICs0MTgsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZW5zdXJlUm9v
dExheWVyKCkKICAgICBpZiAobV9yb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cm9vdExheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAg
bV9yb290TGF5ZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICBtX3Jv
b3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldERy
YXdzQ29udGVudChmYWxzZSk7CiAgICAgbV9yb290TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQzRCgwLCAwLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAppbmRleCBjZDNlNTdjNmJjYjlkOGRjMWZmOTlj
YWQ1OWM0ZTEzZmY2NjAzYTZiLi5iY2IyMzU5NzViMTMzZDJlMjc2NzZkMjgzZmU4OTEzODFhMGQ1
ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVh
ZGVkQ29tcG9zaXRvci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmPFRocmVhZGVkQ29tcG9zaXRv
cj4gVGhyZWFkZWRDb21wb3NpdG9yOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlz
cGwKIFRocmVhZGVkQ29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKENsaWVudCYgY2xpZW50
LCBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Q2xpZW50JiBkaXNwbGF5UmVmcmVzaE1v
bml0b3JDbGllbnQsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCwgY29uc3QgSW50U2l6ZSYg
dmlld3BvcnRTaXplLCBmbG9hdCBzY2FsZUZhY3RvciwgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFn
cyBwYWludEZsYWdzKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9wYWludEZsYWdz
KHBhaW50RmxhZ3MpCi0gICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChzdGQ6Om1ha2VfdW5pcXVl
PENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0pKQorICAg
ICwgbV9jb21wb3NpdGluZ1J1bkxvb3AobWFrZVVuaXF1ZTxDb21wb3NpdGluZ1J1bkxvb3A+KFt0
aGlzXSB7IHJlbmRlckxheWVyVHJlZSgpOyB9KSkKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SKQogICAgICwgbV9kaXNwbGF5UmVmcmVzaE1vbml0b3IoVGhy
ZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNyZWF0ZShkaXNwbGF5SUQsIGRpc3BsYXlSZWZy
ZXNoTW9uaXRvckNsaWVudCkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAKaW5kZXggNjFlMWY5NDAyNTIzODVkYjgwNWVj
MTIyZGZmMWM5ZTRmMWI3MjU2My4uZDRiNTI0YzgyOWVjNjY3MjFkZjFhNzBkMmQ1MTNhZTRlYjNm
M2QyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9i
amVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9i
amVjdE1hcC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBOUFJlbW90ZU9iamVjdE1hcDo6bnBP
YmplY3RQcm94eURlc3Ryb3llZChOUE9iamVjdCogbnBPYmplY3QpCiB1aW50NjRfdCBOUFJlbW90
ZU9iamVjdE1hcDo6cmVnaXN0ZXJOUE9iamVjdChOUE9iamVjdCogbnBPYmplY3QsIFBsdWdpbiog
cGx1Z2luKQogewogICAgIHVpbnQ2NF90IG5wT2JqZWN0SUQgPSBnZW5lcmF0ZU5QT2JqZWN0SUQo
KTsKLSAgICBtX3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIHN0ZDo6bWFrZV91
bmlxdWU8TlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwg
bnBPYmplY3QpLnJlbGVhc2UoKSk7CisgICAgbV9yZWdpc3RlcmVkTlBPYmplY3RzLnNldChucE9i
amVjdElELCBtYWtlVW5pcXVlPE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyPih0aGlzLCBwbHVnaW4s
IG5wT2JqZWN0SUQsIG5wT2JqZWN0KS5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0
SUQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCmluZGV4IDdiMDJiNWUxMmYzMmM3MmQz
OGY1MjA0NWJiNmQ2YTIzYjYyYWUyZTEuLjI2MWQ3YTg5NjkzMDZhODkyNWM0YWIzNmU0Nzk0N2Iz
OTZjMTI1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCkBAIC0yMDYsNyArMjA2LDcg
QEAgc3RhdGljIGJvb2wgbW9kdWxlTWl4ZXNHdGtTeW1ib2xzKE1vZHVsZSogbW9kdWxlKQogCiBi
b29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjp0cnlMb2FkKCkKIHsKLSAgICBtX21vZHVsZSA9IHN0
ZDo6bWFrZV91bmlxdWU8TW9kdWxlPihtX3BsdWdpblBhdGgpOworICAgIG1fbW9kdWxlID0gbWFr
ZVVuaXF1ZTxNb2R1bGU+KG1fcGx1Z2luUGF0aCk7CiAgICAgaWYgKCFtX21vZHVsZS0+bG9hZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbQppbmRleCAxZjJkZTRkMDM3ZWEzZTgzMDI4N2FiOThjYjJhOGYyMWM0ZWNlYTJlLi4wZDIy
N2ZmYzFkOWM1NTU2YWFkOTJlN2VlMTU3NjVlMTZiMzQ0MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0xNTIsMTMgKzE1MiwxMyBAQCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMoY29uc3QgTGF5ZXJQ
cm9wZXJ0aQogICAgIC8vIEZJWE1FOiBMYXllclByb3BlcnRpZXMgc2hvdWxkbid0IGJlIGNvcHlh
YmxlOyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNsb25lIHNob3VsZCBjb3B5IHRoZSByZWxldmFu
dCBwcm9wZXJ0aWVzLgogCiAgICAgaWYgKG90aGVyLnRyYW5zZm9ybSkKLSAgICAgICAgdHJhbnNm
b3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90
aGVyLnRyYW5zZm9ybSk7CisgICAgICAgIHRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOwogCiAgICAgaWYgKG90aGVy
LnN1YmxheWVyVHJhbnNmb3JtKQotICAgICAgICBzdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXllclRy
YW5zZm9ybSk7CisgICAgICAgIHN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKIAogICAg
IGlmIChvdGhlci5maWx0ZXJzKQotICAgICAgICBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7CisgICAgICAgIGZpbHRl
cnMgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0ZXJz
KTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtMzU0LDcgKzM1NCw3IEBA
IGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFu
c2Zvcm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgcmVz
dWx0LnRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXg+KHRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC50cmFuc2Zvcm0gPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOwogICAgIH0KIAogICAg
IGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQp
IHsKQEAgLTM2Miw3ICszNjIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpM
YXllclByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodHJhbnNmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICByZXN1bHQuc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm0pOworICAgICAgICByZXN1bHQu
c3VibGF5ZXJUcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4Pih0cmFuc2Zvcm0pOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRp
ZXMgJiBIaWRkZW5DaGFuZ2VkKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJvdW5kZWRSZWN0KSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIHJlc3VsdC5zaGFwZVJvdW5k
ZWRSZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Pihyb3Vu
ZGVkUmVjdCk7CisgICAgICAgIHJlc3VsdC5zaGFwZVJvdW5kZWRSZWN0ID0gbWFrZVVuaXF1ZTxX
ZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAgfQogCiAgICAgaWYg
KHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIFNoYXBlUGF0aENoYW5nZWQpIHsKQEAgLTQ3MSw3
ICs0NzEsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRp
ZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFzRnJvbnRCdWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBpZiAoaGFzRnJvbnRCdWZmZXIpIHsKLSAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3JlID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7CisgICAg
ICAgICAgICBhdXRvIGJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU+KG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqYmFja2lu
Z1N0b3JlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKQEAg
LTQ4Niw3ICs0ODYsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclBy
b3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgfQogCiAgICAgaWYg
KHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEZpbHRlcnNDaGFuZ2VkKSB7Ci0gICAgICAgIGF1
dG8gZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4o
KTsKKyAgICAgICAgYXV0byBmaWx0ZXJzID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpmaWx0ZXJzKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmVzdWx0LmZpbHRlcnMgPSBXVEZNb3ZlKGZp
bHRlcnMpOwpAQCAtNjAyLDcgKzYwMiw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVyVHJlZVRyCiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGllcz4gbGF5ZXJQcm9w
ZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CisgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRpZXM+IGxheWVyUHJvcGVydGllcyA9IG1ha2VVbmlx
dWU8TGF5ZXJQcm9wZXJ0aWVzPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpsYXll
clByb3BlcnRpZXMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKaW5kZXggOTc4YzRi
YmVkN2I1Y2Q5MWNhYWVjMTU0YmM4YmExNGJhYjc1MzQ2MS4uZTgyNmEzMGIxMmUyNGVjZjQzMGM2
OWI3NmIxYTZmMjhmNWJiOThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtNTIyLDcgKzUyMiw3IEBAIGJvb2wgUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc05ld1Jvb3ROb2RlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlID0gc3RkOjptYWtl
X3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUg
PSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKIAogICAgIGJvb2wgaGFzQ2hhbmdl
ZFByb3BlcnRpZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDaGFuZ2VkUHJvcGVydGll
cykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRt
YXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBD
YWlyby5jcHAKaW5kZXggYzczNDdjNzllNjY5MzgzNzg1ZDA1ZDIyOWU0N2I3NDdjMWYwY2E1NS4u
YjJjZDQ4NDY2NzdjZTk3ZGZhYzI4NTg0OTBjMWVhNDM0Zjk2MjkzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAtNjAs
NyArNjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCiB7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gaW1hZ2UgPSBjcmVhdGVDYWlyb1N1cmZhY2UoKTsKICAgICBSZWZQdHI8Y2Fpcm9fdD4gYml0
bWFwQ29udGV4dCA9IGFkb3B0UmVmKGNhaXJvX2NyZWF0ZShpbWFnZS5nZXQoKSkpOwotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3Jl
YXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgpKSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQ
b2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nn
L1NoYXJlYWJsZUJpdG1hcENHLmNwcAppbmRleCA5MmYxMDYyYjI5MGY3NzVkYjVhZTdlZDE5NTJh
OWNhODU4YWIzMTIyLi4wMTZhYmJkOTkzZTE4YTQ1YzAxYTdmMDQ5N2RjYzMxYTUzYjQzNzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCkBAIC0x
MDAsNyArMTAwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNU
TShiaXRtYXBDb250ZXh0LmdldCgpLCAwLCBtX3NpemUuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4
dFNjYWxlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDEsIC0xKTsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3NDb250ZXh0PihiaXRtYXBDb250ZXh0LmdldCgpKTsK
IH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0
bWFwRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1NoYXJlYWJsZUJpdG1h
cERpcmVjdDJELmNwcAppbmRleCBkNmEwNDU4NmY0MTMyZTVkNGI1NjhjYzMzODk0NjY5MDY4MDNj
ZDVhLi5lYjRjZjU3MTkxMDE0ZjMxNDg2NTRmY2U4YzM4MmEwYTEzMDRlYzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAK
QEAgLTcwLDcgKzcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIG1fYml0bWFwID0gY3Jl
YXRlRGlyZWN0MkRTdXJmYWNlKCk7CiAgICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBiaXRt
YXBDb250ZXh0ID0gRGlyZWN0MkQ6OmNyZWF0ZVJlbmRlclRhcmdldEZyb21XSUNCaXRtYXAobV9i
aXRtYXAuZ2V0KCkpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRl
eHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRmFjdG9yeShiaXRtYXBDb250ZXh0LmdldCgp
KSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEludFBvaW50JiBkc3RQb2ludCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5j
cHAKaW5kZXggOTgxYTk4NWJiZGU1ZjFjYjY1Zjk2Y2JiMjEzOWZiY2YxOWQ3ZGNlNS4uZTEyMmVl
M2VkYjFjNDIxOWQxZDg0MTk5MzIxYTgwMDNkNTJjODIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKQEAgLTE0OCw3ICsxNDgs
NyBAQCB2b2lkIEhUVFBDb29raWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZlciYgb2Jz
ZXJ2ZXIpCiAKICAgICBBU1NFUlQoIW1fb2JzZXJ2ZWRDb29raWVNYW5hZ2VyUHJveHkpOwogCi0g
ICAgbV9jb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJV2Vi
Q29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXI+KCp0aGlzKTsKKyAgICBtX2Nvb2tpZU1hbmFnZXJQ
cm94eU9ic2VydmVyID0gbWFrZVVuaXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZl
cj4oKnRoaXMpOwogCiAgICAgYXV0byogcG9vbCA9IG1fb3duaW5nRGF0YVN0b3JlLT5wcm9jZXNz
UG9vbEZvckNvb2tpZVN0b3JhZ2VPcGVyYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IGQ4M2M2YjhmOTgwNjk2MDM2Mjc2Y2JhZWZk
NTQyZDhhNmZkMGNkMDEuLjU0Zjc3ZjAwNGM5NzFmYzFjODZlOGYxY2NkYTBkM2I2ODA3OGRjNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtOTUs
NyArOTUsNyBAQCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiwgY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogd2tDbAogCiB2b2lkIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9J
bXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOworICAg
IFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtYWtl
VW5pcXVlPFdlYktpdDo6V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkp
OwogfQogCiB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTE1
Niw3ICsxNTYsNyBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVm
IGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogICAgIH07CiAKICAgICBXZWJL
aXQ6OldlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCA9ICpXZWJLaXQ6OnRvSW1wbChjb250ZXh0
UmVmKTsKLSAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
SGlzdG9yeUNsaWVudD4od2tDbGllbnQpKTsKKyAgICBwcm9jZXNzUG9vbC5zZXRIaXN0b3J5Q2xp
ZW50KG1ha2VVbmlxdWU8SGlzdG9yeUNsaWVudD4od2tDbGllbnQpKTsKIAogICAgIGJvb2wgYWRk
c1Zpc2l0ZWRMaW5rcyA9IHByb2Nlc3NQb29sLmhpc3RvcnlDbGllbnQoKS5hZGRzVmlzaXRlZExp
bmtzKCk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHREb3dubG9hZAogICAg
ICAgICB9CiAgICAgfTsKIAotICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3du
bG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOwor
ICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXREb3dubG9hZENsaWVudChtYWtlVW5p
cXVlPERvd25sb2FkQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldENv
bm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENv
bm5lY3Rpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRleCAxMWI4MzRiNGVl
MmE5YTY4NzYyNmM3MzJiZjU4YTQ4ODIzZjYzMzRhLi44ODhiNzViYzdjZWM4OWQxNmUwN2Y2MTdl
N2JiMmNlMjk3OWZhNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0dlb2xvY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFdLVHlwZUlE
IFdLR2VvbG9jYXRpb25NYW5hZ2VyR2V0VHlwZUlEKCkKIAogdm9pZCBXS0dlb2xvY2F0aW9uTWFu
YWdlclNldFByb3ZpZGVyKFdLR2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdl
clJlZiwgY29uc3QgV0tHZW9sb2NhdGlvblByb3ZpZGVyQmFzZSogd2tQcm92aWRlcikKIHsKLSAg
ICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CisgICAgdG9JbXBsKGdl
b2xvY2F0aW9uTWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViR2VvbG9jYXRp
b25Qcm92aWRlcj4od2tQcm92aWRlcikpOwogfQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2Vy
UHJvdmlkZXJEaWRDaGFuZ2VQb3NpdGlvbihXS0dlb2xvY2F0aW9uTWFuYWdlclJlZiBnZW9sb2Nh
dGlvbk1hbmFnZXJSZWYsIFdLR2VvbG9jYXRpb25Qb3NpdGlvblJlZiBwb3NpdGlvblJlZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCmluZGV4IGIyMjNkNmY4N2JmYTVlOTZlM2U1MGRhMmRkNzhmZjBkMmRkNDE2Y2Uu
Ljc2OTIzOTkwYWI1YjllYTIxMzg1ZjFkMzU2OWU4YjUwYWE3ZjY1ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBXS1R5cGVJRCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRUeXBl
SUQoKQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBjb25zdCBXS05vdGlmaWNhdGlvblByb3ZpZGVyQmFz
ZSogd2tQcm92aWRlcikKIHsKLSAgICB0b0ltcGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKHN0
ZDo6bWFrZV91bmlxdWU8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKKyAg
ICB0b0ltcGwobWFuYWdlclJlZiktPnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI+KHdrUHJvdmlkZXIpKTsKIH0KIAogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1h
bmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMzlkNmI0MjE0OWZhYjA2MWNlNGRkZmU1YjFjMTdlMjk4
MWZkZmMzZS4uNjFhNjliMWYzYTZkYTc0OTZhZDQ3MjY5NzBiODVmMmM5MTE4MTNmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC05NDgsNyArOTQ4LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZUNvbnRleHRNZW51Q2wKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwo
cGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1l
bnVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRDb250ZXh0TWVu
dUNsaWVudChtYWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsK
QEAgLTk1Nyw3ICs5NTcsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogCiB2b2lkIFdLUGFn
ZVNldFBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0b0lt
cGwocGFnZVJlZiktPnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxXZWJQYWdlRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFn
ZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNl
KiB3a0NsaWVudCkKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50QmFzZSogd2tDbAog
ICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZENsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEZpbmRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRGaW5kQ2xpZW50KG1ha2VVbmlxdWU8RmluZENsaWVudD4od2tDbGllbnQpKTsKIH0K
IAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDM4LDcg
KzEwMzgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbAogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNl
dEZpbmRNYXRjaGVzQ2xpZW50KG1ha2VVbmlxdWU8RmluZE1hdGNoZXNDbGllbnQ+KHdrQ2xpZW50
KSk7CiB9CiAKIHZvaWQgV0tQYWdlU2V0UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIHdrQ2xpZW50
KQpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVjdGVkQnUKIAogdm9pZCBX
S1BhZ2VTZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRm9y
bUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Rm9ybUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYkZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9J
bXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2ViRm9ybUNsaWVudD4od2tD
bGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTExOTks
NyArMTE5OSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKIAogICAgIFdlYlBhZ2VQcm94eSog
d2ViUGFnZVByb3h5ID0gdG9JbXBsKHBhZ2VSZWYpOwogCi0gICAgYXV0byBsb2FkZXJDbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPExvYWRlckNsaWVudD4od2tDbGllbnQpOworICAgIGF1dG8gbG9h
ZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KTsKIAogICAgIC8v
IEl0IHdvdWxkIGJlIG5pY2UgdG8gZ2V0IHJpZCBvZiB0aGlzIGNvZGUgYW5kIHRyYW5zaXRpb24g
YWxsIGNsaWVudHMgdG8gdXNpbmcgZGlkTGF5b3V0IGluc3RlYWQgb2YKICAgICAvLyBkaWRGaXJz
dExheW91dEluRnJhbWUgYW5kIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWUu
IEluIHRoZSBtZWFudGltZSwgdGhpcyBpcyByZXF1aXJlZApAQCAtMTI4MSw3ICsxMjgxLDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChw
YWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UG9saWN5Q2xpZW50Pih3
a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0UG9saWN5Q2xpZW50KG1ha2VVbmlx
dWU8UG9saWN5Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTIwNzUsNyArMjA3NSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgIH0KICAg
ICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFVJQ2xpZW50Pih3a0NsaWVudCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0VUlDbGllbnQo
bWFrZVVuaXF1ZTxVSUNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdl
TmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlv
bkNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMjQ1Miw3ICsyNDUyLDcgQEAgY2xhc3MgU3RhdGVD
bGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlU3RhdGVDbGllbnRCYXNlPiwg
cHVibGljIFBhZ2UKIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdLUGFnZVJlZiBwYWdl
LCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIHsKICAgICBpZiAoY2xpZW50KQotICAg
ICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6Om1ha2VfdW5p
cXVlPFN0YXRlQ2xpZW50PihjbGllbnQpKTsKKyAgICAgICAgdG9JbXBsKHBhZ2UpLT5zZXRQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIobWFrZVVuaXF1ZTxTdGF0ZUNsaWVudD4oY2xpZW50KSk7CiAgICAg
ZWxzZQogICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihudWxs
cHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9X
S1BhZ2VQcml2YXRlTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
UGFnZVByaXZhdGVNYWMubW0KaW5kZXggZjc2M2FmNjAwM2RhNDY2NzM2MzFlOTFlYTgxYjgzYjVj
OTdhMDg3ZC4uMzVlZjkyMjE1NGUxOTYzMDBlNGI2ZWU3NWQ0Yzk4MTc4NWJjM2UyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVN
YWMubW0KQEAgLTUyLDcgKzUyLDcgQEAgLSAoaWQpaW5pdFdpdGhQYWdlOihSZWZQdHI8V2ViS2l0
OjpXZWJQYWdlUHJveHk+JiYpcGFnZQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX3BhZ2Ug
PSBXVEZNb3ZlKHBhZ2UpOwotICAgIF9vYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYsIEAiVVJMIik7CisgICAgX29ic2VydmVyID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsK
ICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfb2JzZXJ2ZXIpOwogCiAg
ICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy93cGUvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1Zp
ZXcuY3BwCmluZGV4IDc4YmJhMzk2N2I2MTk3YzBlOGE3YzIzYWMzZGE4Y2QxMzJlN2M0YmUuLjk2
NDA2ZDBhYWZiYzM1NTU2MGI1ZDMxOTdhMDBjMjVmNTc1OWEzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwCkBAIC02OCw1ICs2OCw1IEBAIHZvaWQg
V0tWaWV3U2V0Vmlld0NsaWVudChXS1ZpZXdSZWYgdmlldywgY29uc3QgV0tWaWV3Q2xpZW50QmFz
ZSogY2xpZW50KQogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbCh2aWV3KS0+c2V0Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8Vmlld0NsaWVudD4oY2xpZW50KSk7CisgICAgdG9JbXBsKHZp
ZXcpLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxWaWV3Q2xpZW50PihjbGllbnQpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IDI2NTU1NGYzZDdmMmQ3YWQyOTZlOWYzZjlm
YTExMzg4Yjc4ZmQ1NjQuLjQ5Njc3ODhhMTA1N2ZhODgyYTBhMDFjOGRiZjUwMDJlOTIyNmVjMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjAyLDcgKzYwMiw3IEBAIC0g
KGluc3RhbmNldHlwZSlfaW5pdFdpdGhQYWdlUmVmOihXS1BhZ2VSZWYpcGFnZVJlZgogCiAgICAg
X3BhZ2UgPSBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKTsKIAotICAgIF9wYWdlTG9hZFN0YXRlT2Jz
ZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihz
ZWxmKTsKKyAgICBfcGFnZUxvYWRTdGF0ZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlBh
Z2VMb2FkU3RhdGVPYnNlcnZlcj4oc2VsZik7CiAgICAgX3BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5h
ZGRPYnNlcnZlcigqX3BhZ2VMb2FkU3RhdGVPYnNlcnZlcik7CiAKICAgICBBU1NFUlQoIWJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXJNYXAoKS5jb250YWlucyhfcGFnZS5nZXQoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3Jl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3Jl
Lm1tCmluZGV4IDEzNzJjYTQxMDZjNzZlMWQ2MjM1ZDYxNGFkNWMxZTZhNTZlYTA1YTEuLjgxZDM3
MDNiMGVlYTgyZTVlNmM2MmYzMjIyYWM0ZTY4MTlmNmIzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTEw
OCw3ICsxMDgsNyBAQCAtICh2b2lkKWFkZE9ic2VydmVyOihpZDxXS0hUVFBDb29raWVTdG9yZU9i
c2VydmVyPilvYnNlcnZlcgogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdL
SFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKKyAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVyPihvYnNlcnZlcik7
CiAgICAgX2Nvb2tpZVN0b3JlLT5yZWdpc3Rlck9ic2VydmVyKCpyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQppbmRleCBiYWNlNWFjN2VjMDBiMTg5OGFkMmRmNzJjYjFiMTk0NDY3ZGNl
YzlkLi5lYmFjNTY4ZTNkZGI2ODcwZjg1YjAxNTA4ZWMyMGZhYWI3ZjIwNGQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAt
MzczLDcgKzM3Myw3IEBAIC0gKGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPilfZG93bmxvYWREZWxl
Z2F0ZQogLSAodm9pZClfc2V0RG93bmxvYWREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2FkRGVsZWdh
dGU+KWRvd25sb2FkRGVsZWdhdGUKIHsKICAgICBfZG93bmxvYWREZWxlZ2F0ZSA9IGRvd25sb2Fk
RGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXREb3dubG9hZENsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6RG93bmxvYWRDbGllbnQ+KGRvd25sb2FkRGVsZWdhdGUpKTsKKyAgICBf
cHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpEb3dubG9h
ZENsaWVudD4oZG93bmxvYWREZWxlZ2F0ZSkpOwogfQogCiAtIChpZCA8X1dLQXV0b21hdGlvbkRl
bGVnYXRlPilfYXV0b21hdGlvbkRlbGVnYXRlCkBAIC0zODQsNyArMzg0LDcgQEAgLSAoaWQgPF9X
S0F1dG9tYXRpb25EZWxlZ2F0ZT4pX2F1dG9tYXRpb25EZWxlZ2F0ZQogLSAodm9pZClfc2V0QXV0
b21hdGlvbkRlbGVnYXRlOihpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilhdXRvbWF0aW9uRGVs
ZWdhdGUKIHsKICAgICBfYXV0b21hdGlvbkRlbGVnYXRlID0gYXV0b21hdGlvbkRlbGVnYXRlOwot
ICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0b21hdGlvbkRlbGVnYXRlKSk7CisgICAg
X3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRv
bWF0aW9uQ2xpZW50PihzZWxmLCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKIH0KIAogLSAodm9pZClf
d2FybUluaXRpYWxQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXggOWJiNzVjN2Ey
MTE3M2I5ZjcwMWQ2MjYzNDdlNjc5MjUzMjRhYmZkNS4uYTAwYjIwM2NjOTA1OTMwMWJlY2M0NjFk
NjFiNDY3MzJiODU2MTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtMTQ2LDcgKzE0
Niw3IEBAIHByaXZhdGU6CiAKIC0gKHZvaWQpYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxX
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmlu
ZyAqKW5hbWUKIHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VI
YW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVn
YXRlPihzZWxmLCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNv
bnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhh
bmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCBB
UEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIGlmICghX3VzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5n
ZXQoKSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2Vw
dGlvbiBmb3JtYXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGgg
bmFtZSAnJUAnIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpAQCAtMjMwLDcg
KzIzMCw3IEBAIC0gKHZvaWQpX3JlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c0Fzc29jaWF0ZWRXaXRo
VXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXCiAKIC0gKHZvaWQpX2FkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOihpZCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pc2NyaXB0TWVzc2FnZUhh
bmRsZXIgbmFtZTooTlNTdHJpbmcgKiluYW1lIHVzZXJDb250ZW50V29ybGQ6KF9XS1VzZXJDb250
ZW50V29ybGQgKil1c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgYXV0byBoYW5kbGVyID0gV2ViS2l0
OjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUp
LCBuYW1lLCAqdXNlckNvbnRlbnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOworICAgIGF1dG8g
aGFuZGxlciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5p
cXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5k
bGVyLCBuYW1lKSwgbmFtZSwgKnVzZXJDb250ZW50V29ybGQtPl91c2VyQ29udGVudFdvcmxkKTsK
ICAgICBpZiAoIV91c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS0+YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQXR0ZW1wdCB0byBhZGQgc2NyaXB0IG1l
c3NhZ2UgaGFuZGxlciB3aXRoIG5hbWUgJyVAJyB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4iLCBu
YW1lXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IDA5NTFlOTQ0MzdiY2U0NjY1ZDYxNWJkMDQwZDI2ZGYyMGI2NGRmMzQuLjRkNDQw
NDVhMzQxYWY0MWE5ZTA0YjExMDU5YTk3YjAwMzdkZTM2MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNzU3LDcgKzc1Nyw3IEBAIC0g
KHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqKWNvbmZpZ3VyYXRpb24KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIF9pbXBs
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihzZWxmLCBzZWxmLCBwcm9j
ZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsKKyAgICBfaW1wbCA9IG1ha2VV
bmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2wsIHBhZ2VD
b25maWd1cmF0aW9uLmNvcHlSZWYoKSk7CiAgICAgX3BhZ2UgPSAmX2ltcGwtPnBhZ2UoKTsKIAog
ICAgIF9pbXBsLT5zZXRBdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHModHJ1ZSk7CkBA
IC03NjksMTQgKzc2OSwxNCBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246
KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAKICAgICBfcGFnZS0+c2V0
QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudChjb25maWd1cmF0aW9uLl9hcHBsaWNh
dGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KTsKIAotICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKKyAgICBfbmF2
aWdhdGlvblN0YXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZT4oc2VsZik7
CiAgICAgX3BhZ2UtPnNldE5hdmlnYXRpb25DbGllbnQoX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRl
TmF2aWdhdGlvbkNsaWVudCgpKTsKIAotICAgIF91aURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOwotICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7Ci0gICAgX3BhZ2UtPnNl
dERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudD4oc2VsZikpOworICAgIF91aURlbGVnYXRlID0gbWFrZVVuaXF1ZTxX
ZWJLaXQ6OlVJRGVsZWdhdGU+KHNlbGYpOworICAgIF9wYWdlLT5zZXRGaW5kQ2xpZW50KG1ha2VV
bmlxdWU8V2ViS2l0OjpGaW5kQ2xpZW50PihzZWxmKSk7CisgICAgX3BhZ2UtPnNldERpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dD4oc2VsZikpOwogCi0gICAgX2ljb25Mb2FkaW5nRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7CisgICAgX2ljb25Mb2FkaW5nRGVs
ZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7CiAK
ICAgICBfdXNlUGxhdGZvcm1GaW5kVUkgPSBZRVM7CiAKQEAgLTM0MjUsNyArMzQyNSw3IEBAIC0g
KHZvaWQpc2V0QWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM6KEJPT0wpYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uCiAgICAgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzID0gYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXM7CiAKICAgICBpZiAo
YWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgJiYgIV9nZXN0dXJlQ29udHJvbGxl
cikgewotICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2UpOworICAgICAgICBfZ2VzdHVyZUNvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqX3BhZ2Up
OwogICAgICAgICBfZ2VzdHVyZUNvbnRyb2xsZXItPmluc3RhbGxTd2lwZUhhbmRsZXIoc2VsZiwg
W3NlbGYgc2Nyb2xsVmlld10pOwogICAgICAgICBpZiAoV0tXZWJWaWV3ICphbHRlcm5hdGVXZWJW
aWV3ID0gW19jb25maWd1cmF0aW9uIF9hbHRlcm5hdGVXZWJWaWV3Rm9yTmF2aWdhdGlvbkdlc3R1
cmVzXSkKICAgICAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+c2V0QWx0ZXJuYXRlQmFja0Zv
cndhcmRMaXN0U291cmNlUGFnZShhbHRlcm5hdGVXZWJWaWV3LT5fcGFnZS5nZXQoKSk7CkBAIC01
Njc4LDcgKzU2NzgsNyBAQCAtICh2b2lkKV9zZXRJbnB1dERlbGVnYXRlOihpZCA8X1dLSW5wdXRE
ZWxlZ2F0ZT4paW5wdXREZWxlZ2F0ZQogICAgIH07CiAKICAgICBpZiAoaW5wdXREZWxlZ2F0ZSkK
LSAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3JtQ2xpZW50
PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRGb3JtQ2xpZW50KG1ha2VVbmlxdWU8Rm9ybUNs
aWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEZvcm1DbGllbnQobnVs
bHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0b21hdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KaW5kZXggN2FkMDczYjhjZDZkZDQyMDNlMWE3NjA1
OGY3YzdkZjJhOWY4YWQ3Yi4uMmFkZWVhNzYwYzY5OGIxOGFlNTkxZTU3MDU3MTMyOTVmMjRjNTZk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9t
YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpAQCAtNzIsNyArNzIsNyBAQCAtIChpZCA8X1dLQXV0b21h
dGlvblNlc3Npb25EZWxlZ2F0ZT4pZGVsZWdhdGUKIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxf
V0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0ZQogewogICAgIF9kZWxlZ2F0ZSA9
IGRlbGVnYXRlOwotICAgIF9zZXNzaW9uLT5zZXRDbGllbnQoZGVsZWdhdGUgPyBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KGRlbGVnYXRlKSA6IG51bGxw
dHIpOworICAgIF9zZXNzaW9uLT5zZXRDbGllbnQoZGVsZWdhdGUgPyBtYWtlVW5pcXVlPFdlYktp
dDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+KGRlbGVnYXRlKSA6IG51bGxwdHIpOwogfQogCiAt
IChOU1N0cmluZyAqKXNlc3Npb25JZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggOGMyMTMzMzBlYjBlZDM5YzVmMTJkNWJjNmFkYTVm
YjgxM2JkZGNhYi4uMGRkNDA5YTQzZGU2NTMwMGM5ZjBjYzg1NDQ3YWMyZjcxM2VjOTQ5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtNzYsNyAr
NzYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
bV9yZW1vdGVJbnNwZWN0b3JQcm94eSA9IFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OmNyZWF0ZSgpOwotICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKKyAgICBt
X3JlbW90ZUluc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpfV0tSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudD4oc2VsZik7CiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+
c2V0Q2xpZW50KG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50LmdldCgpKTsKIAogICAgIHJldHVybiBz
ZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHAKaW5kZXggOGQyZjg4YWUwMDMyYTBkOTM0NWU2ODAwYTk3ODU4YjQyOGE0ZDZkOS4uMDY4
NzBkMjFkZWU3Y2E0Zjg5ZGI5ZTM0MmY2ZjBmNWZkM2Y1NGE1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0xNjkxLDcgKzE2
OTEsNyBAQCBpbmxpbmUgdm9pZCByZWFkeVNRTGl0ZVN0YXRlbWVudChzdGQ6OnVuaXF1ZV9wdHI8
U1FMaXRlU3RhdGVtZW50PiYgc3RhdGVtZW50LCBTUQogICAgICAgICBzdGF0ZW1lbnQgPSBudWxs
cHRyOwogICAgIH0KICAgICBpZiAoIXN0YXRlbWVudCkgewotICAgICAgICBzdGF0ZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4oZGIsIHN0cik7CisgICAgICAgIHN0YXRl
bWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihkYiwgc3RyKTsKICAgICAgICAgaWYg
KHN0YXRlbWVudC0+cHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAgICAgIExPR19FUlJP
UigiUHJlcGFyaW5nIHN0YXRlbWVudCAlcyBmYWlsZWQiLCBzdHIuYXNjaWkoKS5kYXRhKCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA1OGNkMDNjMzNlMjgwNzhkYmExNTc4
MmIxZGE3NWJjYjRhMzI3NDg2Li4yMTg2NjA0NTE5Mjc2OWJlNmRmZjg1OWE2MzIwNDNkNTEzNTY5
YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0QXV0b21hdGlvblNlc3Npb25Db25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3Qp
CiAKICAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uID0gYWRvcHRSZWYobmV3IFdlYkF1dG9tYXRp
b25TZXNzaW9uKCkpOwogICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldFNlc3Npb25JZGVu
dGlmaWVyKFN0cmluZzo6ZnJvbVVURjgoc2Vzc2lvbi0+cHJpdi0+aWQuZGF0YSgpKSk7Ci0gICAg
c2Vzc2lvbi0+cHJpdi0+c2Vzc2lvbi0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QXV0b21h
dGlvblNlc3Npb25DbGllbnQ+KHNlc3Npb24pKTsKKyAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9u
LT5zZXRDbGllbnQobWFrZVVuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikp
OwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkRpc3Bvc2UoR09iamVj
dCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDk3ZTkyNTYwMTc3MzdiNzY2
NWFjYzhlYjJmMzU4ZWIyZWM1OTAwYjkuLjI4NThkZjZmMzRkNGZhNjIxMjA5YmYxZWIxZTEwODg1
YWQwNWU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdENvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTU2LDYgKzU2LDYgQEAgY2xh
c3MgQ29udGV4dE1lbnVDbGllbnQgZmluYWw6IHB1YmxpYyBBUEk6OkNvbnRleHRNZW51Q2xpZW50
IHsKIAogdm9pZCBhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldENvbnRleHRN
ZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+KHdlYlZpZXcpKTsK
KyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRDb250ZXh0TWVudUNsaWVudCht
YWtlVW5pcXVlPENvbnRleHRNZW51Q2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCmluZGV4IGQzMmI1OWM1NDc2NjdhN2VjODc3
MTgxMDUyYmQxYTc0OWMwZGJjMWMuLmEzNzNiMjk0NTcxNjc5MWEyZDRjMzA3YmQ1ZTBhOTI5Yzgx
NDBhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcApAQCAt
NTYsNSArNTYsNSBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgZmluYWwgOiBw
dWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbgogCiB2b2lkIGF0dGFjaEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250
ZXh0KQogewotICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5z
ZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRXZWJDb250
ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50KG1ha2VVbmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pih3ZWJDb250
ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZWFkNGYyMzQ5OTE2NzA0ZDE3ZDFmMjMw
NjQwODlmN2ExYTA0NTk0Zi4uZTc3MWRkNzE4N2U1ODU5YWRiZDVhMDE2ZjhjYTkzNWQyOGU4NGE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93
bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdERvd25sb2FkQ2xpZW50LmNwcApAQCAtMTE4LDUgKzExOCw1IEBAIGNsYXNzIERvd25sb2Fk
Q2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgewogCiB2b2lkIGF0dGFj
aERvd25sb2FkQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7
Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldERvd25s
b2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHdlYkNvbnRleHQpKTsK
KyAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxv
YWRDbGllbnQobWFrZVVuaXF1ZTxEb3dubG9hZENsaWVudD4od2ViQ29udGV4dCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKaW5kZXggMjE4MDgzZTc2OTdhNTEzOThmMmVlMDk0Y2RiMDY4YzIwODM3
YjFmYS4uOWI1ODE4YTk4MzZmMzc2MmQ4OTYyMmUzNjJjM2ZjOGIyZDNlYmZkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwCkBAIC0yNjcsOCArMjY3LDggQEAgdm9pZCB3ZWJraXRGYXZpY29uRGF0YWJh
c2VPcGVuKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgcGEK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZSogcHJp
diA9IGRhdGFiYXNlLT5wcml2OwotICAgIHByaXYtPmljb25EYXRhYmFzZSA9IHN0ZDo6bWFrZV91
bmlxdWU8SWNvbkRhdGFiYXNlPigpOwotICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0Q2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0SWNvbkRhdGFiYXNlQ2xpZW50PihkYXRhYmFzZSkpOwor
ICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG1ha2VVbmlxdWU8SWNvbkRhdGFiYXNlPigpOworICAg
IHByaXYtPmljb25EYXRhYmFzZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SWNvbkRhdGFi
YXNlQ2xpZW50PihkYXRhYmFzZSkpOwogICAgIEljb25EYXRhYmFzZTo6ZGVsYXlEYXRhYmFzZUNs
ZWFudXAoKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldEVuYWJsZWQodHJ1ZSk7CiAgICAg
cHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYlByZWZlcmVu
Y2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3Bw
CmluZGV4IDRmOTgwZDRlZTI1OGFjYWM0NTU4MzIzY2E3YmQ3MWNjZGYzYmVlYjEuLjc2NzVjOWNi
M2E1ZWRhZjg4NjRkMTdhMTc5MjE3Y2I5NDIzMzY1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKQEAg
LTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRGaW5kQ29udHJvbGxlckNvbnN0cnVj
dGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZmluZF9jb250
cm9sbGVyX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKICAgICBXZWJLaXRG
aW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIgPSBXRUJLSVRfRklORF9DT05UUk9MTEVSKG9i
amVjdCk7Ci0gICAgZ2V0UGFnZShmaW5kQ29udHJvbGxlcikuc2V0RmluZENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRDb250cm9sbGVyKSk7CisgICAgZ2V0UGFnZShmaW5k
Q29udHJvbGxlcikuc2V0RmluZENsaWVudChtYWtlVW5pcXVlPEZpbmRDbGllbnQ+KGZpbmRDb250
cm9sbGVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEZpbmRDb250cm9sbGVyR2V0UHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNw
ZWMqIHBhcmFtU3BlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZvcm1DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAKaW5kZXggMTM0ZDFjNmNlYmU1NjdmYzU0ZDk3MGY4NzZi
ZTAyOTMxZDMyODIyZC4uYmM2N2EzNTdkYzA3NDQ1YTM1MjhmODBmMGFiZDc5ZDA3YzNiYzA0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9y
bUNsaWVudC5jcHAKQEAgLTQ4LDUgKzQ4LDUgQEAgY2xhc3MgRm9ybUNsaWVudCBmaW5hbCA6IHB1
YmxpYyBBUEk6OkZvcm1DbGllbnQgewogCiB2b2lkIGF0dGFjaEZvcm1DbGllbnRUb1ZpZXcoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3
KS5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVudD4od2ViVmlldykpOwor
ICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1DbGllbnQobWFrZVVuaXF1
ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCAyZTE1OTQ1ZGZhZDI5YzMxNTUwZDFhZDNjNGRkMTQ5OGJlN2I3MjA0Li44Y2JhNDIyZWQ1ZTM4
YmY4NGM3NjA1OTRkNmNmMGY2NTg4Y2JlYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHAK
QEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJT
dGFydChXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIG1hbmFnZXIpCiAgICAgfQogCiAgICAgaWYg
KCFtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIpIHsKLSAgICAgICAgbWFuYWdlci0+cHJp
di0+Z2VvY2x1ZVByb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Q
cm92aWRlcj4oKTsKKyAgICAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyID0gbWFr
ZVVuaXF1ZTxHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICAgICAgbWFuYWdlci0+
cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zZXRFbmFibGVIaWdoQWNjdXJhY3kobWFuYWdlci0+cHJp
di0+aGlnaEFjY3VyYWN5RW5hYmxlZCk7CiAgICAgfQogICAgIG1hbmFnZXItPnByaXYtPmdlb2Ns
dWVQcm92aWRlci0+c3RhcnQoW21hbmFnZXJdKEdlb2xvY2F0aW9uUG9zaXRpb24mJiBjb3JlUG9z
aXRpb24sIE9wdGlvbmFsPENTdHJpbmc+IGVycm9yKSB7CkBAIC0zMTIsNyArMzEyLDcgQEAgV2Vi
S2l0R2VvbG9jYXRpb25NYW5hZ2VyKiB3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUoV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHIKIHsKICAgICBhdXRvKiBtYW5hZ2VyID0gV0VCS0lUX0dFT0xP
Q0FUSU9OX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX01BTkFH
RVIsIG51bGxwdHIpKTsKICAgICBtYW5hZ2VyLT5wcml2LT5tYW5hZ2VyID0gcHJveHk7Ci0gICAg
cHJveHktPnNldFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlcj4o
bWFuYWdlcikpOworICAgIHByb3h5LT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPEdlb2xvY2F0aW9u
UHJvdmlkZXI+KG1hbmFnZXIpKTsKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SWNvbkxvYWRp
bmdDbGllbnQuY3BwCmluZGV4IGYzZjdmZmJmMzJjNDkxZmExNDI4OTU3NTQxMDY4YzU3YWYwMDdm
MDQuLjY1ZmQ3YzY5OTIzODgwMTE1NThjNjdkZWIyNWZkYWEyN2Y2NmM1MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9h
ZGluZ0NsaWVudC5jcHAKQEAgLTYyLDUgKzYyLDUgQEAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQg
OiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CiAKIHZvaWQgYXR0YWNoSWNvbkxvYWRp
bmdDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJW
aWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uo
d2ViVmlldykuc2V0SWNvbkxvYWRpbmdDbGllbnQobWFrZVVuaXF1ZTxJY29uTG9hZGluZ0NsaWVu
dD4od2ViVmlldykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IGE5M2Zm
MjViMzlhMjkyNTYwMGQyYzRhZWNjZWNiYzc1NzBkNWRmM2QuLjkyNjJhODRkZWNlMjViZjBiZGY1
YzU5YjQ4ZDAwMjU4NTJmMzZiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAg
LTE3OSw1ICsxNzksNSBAQCBjbGFzcyBXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6
IHB1YmxpYyBBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50IHsKIAogdm9pZCBhdHRhY2hJbmplY3Rl
ZEJ1bmRsZUNsaWVudFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQogewot
ICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50
Pih3ZWJDb250ZXh0KSk7CisgICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNv
bnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5qZWN0ZWRC
dW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNw
cAppbmRleCAyMzZlODFjMTM5MGIzZWMzYzE1NDkxODY4NmJhZmE1ZTUzODY0Njg3Li41NTE2MzY0
NDc3NTU3NDdiNzBhYzVlNzZiMWQxMDRkNjFjMGI1Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpX
ZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJvCiAgICAg
LCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobm90aWZpY2F0aW9uTWFuYWdlcikKIHsKICAgICBBU1NF
UlQobV9ub3RpZmljYXRpb25NYW5hZ2VyKTsKLSAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXItPnNl
dFByb3ZpZGVyKHN0ZDo6bWFrZV91bmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlzKSk7
CisgICAgbV9ub3RpZmljYXRpb25NYW5hZ2VyLT5zZXRQcm92aWRlcihtYWtlVW5pcXVlPE5vdGlm
aWNhdGlvblByb3ZpZGVyPigqdGhpcykpOwogfQogCiBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
cjo6fldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCA1YmNlZjY4ZjY1ZDIz
MTg5ODBjZjkxZGFlNTkzZDc2NjcxNDhhOTg5Li44OTZlMTNkYWQ5N2JlN2ZmNzc2YzAzYmY2ZTdk
MDI3ODJlMDMyMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0yMjUsNiArMjI1LDYgQEAgY2xhc3MgVUlDbGllbnQg
OiBwdWJsaWMgQVBJOjpVSUNsaWVudCB7CiAKIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKLSAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3
KS5zZXRVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAg
d2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuc2V0VUlDbGllbnQobWFrZVVuaXF1ZTxVSUNs
aWVudD4od2ViVmlldykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCA0ZmY0
YWIzZmFkYWE4MWM1ODE3NzdhNjlkMDQ5YzM5YmQxOTZjZWNmLi4yNTVlOGU1YTY3OTI3NjQ4MzNk
MzdkYWZmOWY1NzkwZjA4NTk2NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKQEAgLTIz
OSw3ICsyMzksNyBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfcmVnaXN0
ZXJfc2NyaXB0X21lc3NhZ2VfaGFuZGxlcihXZWJLaXRVc2VyQwogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKG5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcj4g
aGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjpt
YWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1lKSwgU3RyaW5n
Ojpmcm9tVVRGOChuYW1lKSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsK
KyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUp
LCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIHJldHVybiBtYW5h
Z2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApAQCAtMjg5LDcgKzI4OSw3IEBAIGdib29sZWFuIHdl
YmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVy
X2luX3dvcmxkKFdlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod29ybGROYW1lLCBGQUxTRSk7
CiAKICAgICBSZWY8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPQotICAgICAgICBX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0TWVz
c2FnZUNsaWVudEd0az4obWFuYWdlciwgbmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIHdl
YmtpdFVzZXJDb250ZW50V29ybGQod29ybGROYW1lKSk7CisgICAgICAgIFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5h
Z2VyLCBuYW1lKSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRXb3Js
ZCh3b3JsZE5hbWUpKTsKICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+dXNlckNvbnRlbnRDb250
cm9sbGVyLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKaW5kZXggNTk0ZDFiYmNhODRiM2Q2YzcxNTQyMWYwOGYyM2FmYWZmODhlYmIwNy4u
OGM2ODk4Mjk1MzlmNDIyMzhiMzA3ZjU1NTYwOGE1YzUwMDJkY2Y0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAg
LTM2OCw5ICszNjgsOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBh
dHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAK
ICAgICBwcml2LT5nZW9sb2NhdGlvbk1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0R2VvbG9jYXRp
b25NYW5hZ2VyQ3JlYXRlKHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5PigpKSk7Ci0gICAgcHJpdi0+bm90aWZpY2F0aW9uUHJvdmlkZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5wcm9jZXNz
UG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdlYkNvbnRl
eHQpOworICAgIHByaXYtPm5vdGlmaWNhdGlvblByb3ZpZGVyID0gbWFrZVVuaXF1ZTxXZWJLaXRO
b3RpZmljYXRpb25Qcm92aWRlcj4ocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLCB3ZWJDb250ZXh0KTsKICNpZiBQTEFURk9STShHVEsp
ICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIHByaXYtPnJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyPih3ZWJDb250ZXh0KTsKKyAgICBwcml2LT5yZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhh
bmRsZXIgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcj4od2ViQ29u
dGV4dCk7CiAjZW5kaWYKIH0KIApAQCAtNjc5LDcgKzY3OSw3IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwg
Z2Jvb2xlCiAgICAgICAgICAgICBnX3dhcm5pbmcoIk5vdCBlbmFibGluZyBhdXRvbWF0aW9uIG9u
IFdlYktpdFdlYkNvbnRleHQgYmVjYXVzZSB0aGVyZSdzIGFub3RoZXIgY29udGV4dCB3aXRoIGF1
dG9tYXRpb24gZW5hYmxlZCwgb25seSBvbmUgaXMgYWxsb3dlZCIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRpb25DbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQpOworICAg
ICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXRB
dXRvbWF0aW9uQ2xpZW50Pihjb250ZXh0KTsKICAgICB9IGVsc2UKICAgICAgICAgY29udGV4dC0+
cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggODFmMDJl
NGM5NjNmMGNmODFiNDdkYjYyODg2MDg5N2Q4NDNkNjNmYS4uNzQzMGMzZmNmZDU0YzQ2ZWZhNjRl
MTJmZDk3ZGU1YTkzMjk4YTQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTcyOSw3ICs3MjksNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgd2Via2l0
V2ViQ29udGV4dENyZWF0ZVBhZ2VGb3JXZWJWaWV3KHByaXYtPmNvbnRleHQuZ2V0KCksIHdlYlZp
ZXcsIHByaXYtPnVzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgcHJpdi0+cmVsYXRlZFZpZXcpOwog
Ci0gICAgcHJpdi0+bG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlTG9hZFN0YXRl
T2JzZXJ2ZXI+KHdlYlZpZXcpOworICAgIHByaXYtPmxvYWRPYnNlcnZlciA9IG1ha2VVbmlxdWU8
UGFnZUxvYWRTdGF0ZU9ic2VydmVyPih3ZWJWaWV3KTsKICAgICBnZXRQYWdlKHdlYlZpZXcpLnBh
Z2VMb2FkU3RhdGUoKS5hZGRPYnNlcnZlcigqcHJpdi0+bG9hZE9ic2VydmVyKTsKIAogICAgIC8v
IFRoZSByZWxhdGVkIHZpZXcgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlvbi4K
QEAgLTc0NSw3ICs3NDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uc3RydWN0ZWQo
R09iamVjdCogb2JqZWN0KQogI2VuZGlmCiAKICNpZiBQTEFURk9STShXUEUpCi0gICAgcHJpdi0+
dmlldy0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmlldykp
OworICAgIHByaXYtPnZpZXctPnNldENsaWVudChtYWtlVW5pcXVlPFdlYlZpZXdDbGllbnQ+KHdl
YlZpZXcpKTsKICNlbmRpZgogCiAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBhZnRlciBhdHRhY2hV
SUNsaWVudFRvVmlldygpIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudCgpIGNhbGxz
IHNldENhblJ1bk1vZGFsKCkgd2l0aCB0cnVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCBmMDlkNmM3ZTkyMDY4M2E3NTY2
NTI3Njk2N2U3NDdjYzZjZWViNDgxLi4wNmIzYjgzNjA2NWQ5ZjY2YTA3OThhMjA5NTUxM2NhODY4
YjMxYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVu
dEltcGwoR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQogLy8gUGFnZUNsaWVudCdzIHB1cmUgdmlydHVh
bCBmdW5jdGlvbnMKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBQYWdlQ2xpZW50
SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3M+KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0Uo
bV92aWV3V2lkZ2V0KSksIHByb2Nlc3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPigqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdF
QktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24m
IHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RW1vamlDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RW1vamlDaG9vc2VyLmNwcAppbmRleCAzMWUwOTczZmUxMDAzYzZlYTY1MjMwNjFhNjdjOTQ5
ZDUzZWJkNmI3Li4yZDFjMmNiMzY4YTk5MzMxNjk3NDI0NmEwZWQ1OTljMjhkY2FlNmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNo
b29zZXIuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0RW1vamlDaG9v
c2VyU2V0dXBFbW9qaVNlY3Rpb25zKFdlYktpdEVtb2ppQ2hvb3NlciogY2hvb3NlciwgR3QKICAg
ICAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gbnVsbHB0cjsKICAg
ICB9OwogCi0gICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsYmFja1RpbWVyPihXVEZNb3ZlKHBvcHVsYXRlU2VjdGlvbnMpKTsKKyAg
ICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBtYWtlVW5pcXVlPENhbGxi
YWNrVGltZXI+KFdURk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOwogICAgIGNob29zZXItPnByaXYt
PnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0UHJpb3JpdHkoR19QUklPUklUWV9ERUZBVUxUX0lE
TEUpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNUaW1lci0+c2V0TmFtZSgi
W1dlYktpdEVtb2ppQ2hvb3Nlcl0gcG9wdWxhdGUgc2VjdGlvbnMgdGltZXIiKTsKICAgICBjaG9v
c2VyLT5wcml2LT5wb3B1bGF0ZVNlY3Rpb25zVGltZXItPnN0YXJ0UmVwZWF0aW5nKHsgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggZjljNWE3
NTFmZWFlMWNjMTVkYjEyZjIzOWM3NzUxMjU4YmQyZDMwMC4uNWJhNjEwZTdkOWE0NGQwNDczODM4
MWUyM2QwNDBiZGE5MmMzZmM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcApAQCAtMTA2LDEzICsxMDYsMTMgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQ
cm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVx
dWUKICAgICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Vz
ZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAgIGF1dG8gdXNlckNvbnRlbnRNYW5hZ2Vy
UmVzdWx0ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFkZCh1c2VyQ29udGVudE1hbmFnZXIpOwog
ICAgIGlmICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBh
dXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKHN0ZDo6bWFrZV91
bmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpVc2Vy
Q29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICAgICAgYXV0byBoYW5kbGVyID0gV2Vi
U2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGll
bnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29y
bGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFu
ZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vha19yZWYoR19PQkpFQ1Qo
dXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4odXNlckNv
bnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogCiAgICAgYXV0byogY2xpZW50
ID0gbV9pbnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0
aGlzLCAmcmVxdWVzdFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1v
dGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVl
c3RVUkwucG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCBy
ZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmdldCgpOwogCiAgICAgR1N0cmluZyogaHRtbCA9IGdfc3RyaW5nX25ldygKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViSW5zcGVjdG9yLmNwcApp
bmRleCBiY2FiOGQ1YjQ0YmYyZjFkOWVkOTdhNDMzY2EyMWQ5ZTk3ZGM4ODI0Li44MGQyMGFhNzYw
M2JhZGFiOTAwZmU0YmQxNTkwYWFkMzliMzBlMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCkBAIC0zNjEsNyAr
MzYxLDcgQEAgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJraXRXZWJJbnNwZWN0b3JDcmVhdGUoV2Vi
SW5zcGVjdG9yUHJveHkqIHdlYkluc3BlY3RvcikKIHsKICAgICBXZWJLaXRXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvciA9IFdFQktJVF9XRUJfSU5TUEVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfSU5TUEVDVE9SLCBOVUxMKSk7CiAgICAgaW5zcGVjdG9yLT5wcml2LT53ZWJJbnNwZWN0
b3IgPSB3ZWJJbnNwZWN0b3I7Ci0gICAgd2ViSW5zcGVjdG9yLT5zZXRDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOworICAgIHdlYkluc3Bl
Y3Rvci0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0SW5zcGVjdG9yQ2xpZW50PihpbnNwZWN0
b3IpKTsKICAgICByZXR1cm4gaW5zcGVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDFiOWRkOGQx
ZjQ2MDIxNGY1YTc3MjY3MmMyZmI2NTM3MGI1MjBjNWUuLjg4YjNjZjQzYmZlNjhlZTk3YzczMWI3
NjRkNDQ5OTBhN2JmYzVhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC01NjYsNyArNTY2LDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAg
Z3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmlld1dpZGdldCwgUGFzdGVib2FyZEhlbHBl
cjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdCgpKTsKIAogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFV19CQVNFKG9iamVjdCktPnByaXY7Ci0gICAgcHJp
di0+cGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXdXaWRn
ZXQpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2
aWV3V2lkZ2V0KTsKICAgICBwcml2LT5kaWFsb2cgPSBudWxscHRyOwogfQogCkBAIC0xMjIwLDcg
KzEyMjAsNyBAQCBHZXN0dXJlQ29udHJvbGxlciYgd2Via2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29u
dHJvbGxlcihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlldwogewogICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJpdi0+Z2Vz
dHVyZUNvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmdlc3R1cmVDb250cm9sbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxHZXN0dXJlQ29udHJvbGxlcj4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSksIHN0
ZDo6bWFrZV91bmlxdWU8VG91Y2hHZXN0dXJlQ29udHJvbGxlcj4od2ViVmlld0Jhc2UpKTsKKyAg
ICAgICAgcHJpdi0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEdlc3R1cmVDb250cm9s
bGVyPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgbWFrZVVuaXF1ZTxUb3VjaEdlc3R1cmVDb250
cm9sbGVyPih3ZWJWaWV3QmFzZSkpOwogICAgIHJldHVybiAqcHJpdi0+Z2VzdHVyZUNvbnRyb2xs
ZXI7CiB9CiAKQEAgLTE1MDEsNyArMTUwMSw3IEBAIERyYWdBbmREcm9wSGFuZGxlciYgd2Via2l0
V2ViVmlld0Jhc2VEcmFnQW5kRHJvcEhhbmRsZXIoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpCiB7
CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7
CiAgICAgaWYgKCFwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXIpCi0gICAgICAgIHByaXYtPmRyYWdB
bmREcm9wSGFuZGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0FuZERyb3BIYW5kbGVyPigqcHJp
di0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyID0gbWFrZVVu
aXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOwogICAgIHJldHVybiAq
cHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBP
UlQpCkBAIC0xNzEzLDcgKzE3MTMsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVu
Y2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZQogICAgIGlm
IChwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIpCiAgICAgICAgIHByaXYtPnZpZXdHZXN0dXJl
Q29udHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwogICAgIGVsc2UgewotICAgICAgICBwcml2
LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKKyAgICAgICAgcHJpdi0+dmlld0dl
c3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cj4oKnByaXYtPnBhZ2VQcm94eSk7CiAgICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxl
ci0+c2V0U3dpcGVHZXN0dXJlRW5hYmxlZChwcml2LT5pc0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVFbmFibGVkKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tCmluZGV4IDBiYTUwODg4NjA0OTU3ZTI1ZGZiZWFjNDY2NWZiMTc4MmE0MjA2OGUu
LjE0NjAzZDVhZmViYWY2ZGVlMDExOTc5NTc3MDM4ODM0OWQ0ZTdiMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC05MzMsNyArOTMzLDcgQEAgLSAodm9p
ZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCiAgICAgaWYgKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpJY29uTG9h
ZGluZ0NsaWVudDo6ZGVsZWdhdGVTZWxlY3RvcigpXSkKLSAgICAgICAgX2RhdGEtPl9pbXBsLT5w
YWdlKCkuc2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxJY29uTG9hZGluZ0Ns
aWVudD4oc2VsZikpOworICAgICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGlu
Z0NsaWVudChtYWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CiB9CiAKIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2wmKXByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmKWNvbmZpZ3VyYXRpb24KQEAgLTk0NSw3ICs5NDUsNyBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJL
aXQ6OldlYlByb2Nlc3NQb29sJgogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAog
ICAgIF9kYXRhID0gW1tXS1ZpZXdEYXRhIGFsbG9jXSBpbml0XTsKLSAgICBfZGF0YS0+X2ltcGwg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIG51bGxwdHIsIHBy
b2Nlc3NQb29sLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICBfZGF0YS0+X2ltcGwgPSBt
YWtlVW5pcXVlPFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIG51bGxwdHIsIHByb2Nlc3NQb29s
LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIAogICAgIFtzZWxmIG1heWJlSW5zdGFsbEljb25M
b2FkaW5nQ2xpZW50XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA4NTEyOWE1NDg3YzlmZmJlZDU2NjQ2Y2MxMGRkMTg4
M2M5ODc1NmQzLi5lMjA4YTVjNTVkNzU4ODU3M2RmZjQzNjAzMzc3ZWY4ZDE2MzU4NWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNw
cApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGFnZUNsaWVudEltcGw6
OlBhZ2VDbGllbnRJbXBsKFdLV1BFOjpWaWV3JiB2aWV3KQogICAgIDogbV92aWV3KHZpZXcpCi0g
ICAgLCBtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsR2Vz
dHVyZUNvbnRyb2xsZXI+KCkpCisgICAgLCBtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyKG1ha2VV
bmlxdWU8U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI+KCkpCiB7CiB9CiAKQEAgLTYzLDcgKzYzLDcg
QEAgSVBDOjpBdHRhY2htZW50IFBhZ2VDbGllbnRJbXBsOjpob3N0RmlsZURlc2NyaXB0b3IoKQog
CiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0
ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPiht
X3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4obV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CiB9CiAK
IHZvaWQgUGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6
UmVnaW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BF
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCmlu
ZGV4IGJlNTBmMTI3NGU4YzFmYTQ5MTA5YWEyODU1YjhiYjQxNTcxNzA0NGYuLjEyZTMyZmFkNDAw
MjhjNzdlNTcwMzA5Mjg0OTg0NDBkMDMwY2UwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAtNDIsOCArNDIsOCBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogbmFtZXNwYWNlIFdLV1BFIHsKIAogVmlldzo6VmlldyhzdHJ1Y3Qgd3BlX3ZpZXdf
YmFja2VuZCogYmFja2VuZCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgYmFzZUNvbmZp
Z3VyYXRpb24pCi0gICAgOiBtX2NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Vmlld0NsaWVu
dD4oKSkKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBs
PigqdGhpcykpCisgICAgOiBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6Vmlld0NsaWVudD4oKSkK
KyAgICAsIG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPigqdGhpcykpCiAg
ICAgLCBtX3NpemUgeyA4MDAsIDYwMCB9CiAgICAgLCBtX3ZpZXdTdGF0ZUZsYWdzIHsgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6
OklzRm9jdXNlZCwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc0luV2luZG93IH0KICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQpAQCAt
MTg0LDcgKzE4NCw3IEBAIFZpZXc6On5WaWV3KCkKIHZvaWQgVmlldzo6c2V0Q2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OlZpZXdDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50
KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50Pigp
OworICAgICAgICBtX2NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpOwogICAg
IGVsc2UKICAgICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKaW5kZXggZTFkYzg1
N2ZmOTk1ZWQwY2U2YTg1MzY1OWNjNWIxMzU2MWNiMzY2Yy4uYjRmMjdiNmQzNGUyNDJiYTU1MzVh
YjViMmU0ZWNlNTMxNWQwOWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvcXQvV1BFUXRWaWV3LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV1BFUXRWaWV3
Ojpub3RpZnlMb2FkQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZl
bnQgZXZlbnQsCiAKICAgICBpZiAoc3RhdHVzU2V0KSB7CiAgICAgICAgIFdQRVF0Vmlld0xvYWRS
ZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUodmlldy0+dXJsKCksIGxvYWRTdGF0dXMs
ICIiKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2Fk
UmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1
ZXN0UHJpdmF0ZSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVz
dD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVx
dWVzdFByaXZhdGUpOwogICAgICAgICBRX0VNSVQgdmlldy0+bG9hZGluZ0NoYW5nZWQobG9hZFJl
cXVlc3QuZ2V0KCkpOwogICAgIH0KIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFdQRVF0Vmll
dzo6bm90aWZ5TG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZl
bnQsIGNvbnN0CiAgICAgICAgIGxvYWRTdGF0dXMgPSBXUEVRdFZpZXc6OkxvYWRTdGF0dXM6Okxv
YWRGYWlsZWRTdGF0dXM7CiAKICAgICBXUEVRdFZpZXdMb2FkUmVxdWVzdFByaXZhdGUgbG9hZFJl
cXVlc3RQcml2YXRlKFFVcmwoUVN0cmluZyhmYWlsaW5nVVJJKSksIGxvYWRTdGF0dXMsIGVycm9y
LT5tZXNzYWdlKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxv
YWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJl
cXVlc3RQcml2YXRlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+
IGxvYWRSZXF1ZXN0ID0gbWFrZVVuaXF1ZTxXUEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVl
c3RQcml2YXRlKTsKICAgICBRX0VNSVQgdmlldy0+bG9hZGluZ0NoYW5nZWQobG9hZFJlcXVlc3Qu
Z2V0KCkpOwogfQogCkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIHZvaWQganNBc3luY1JlYWR5
Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIK
ICovCiB2b2lkIFdQRVF0Vmlldzo6cnVuSmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHQs
IGNvbnN0IFFKU1ZhbHVlJiBjYWxsYmFjaykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SmF2YXNj
cmlwdENhbGxiYWNrRGF0YT4gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SmF2YXNjcmlwdENhbGxi
YWNrRGF0YT4oY2FsbGJhY2ssIFFQb2ludGVyPFdQRVF0Vmlldz4odGhpcykpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gbWFrZVVuaXF1ZTxKYXZh
c2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8V1BFUXRWaWV3Pih0aGlzKSk7
CiAgICAgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KG1fd2ViVmlldy5nZXQoKSwgc2Ny
aXB0LnRvVXRmOCgpLmNvbnN0RGF0YSgpLCBudWxscHRyLCBqc0FzeW5jUmVhZHlDYWxsYmFjaywg
ZGF0YS5yZWxlYXNlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcAppbmRleCBhODUyNmNlZDAyMGY2MzQ0
ZTcyZmJjYzNhYTQ0OWMyZGQzYWJkMWY5Li4xM2ZkMzdhZWZmMmI2NTM1ZDU0ZjMxNGM0MTZlMWNi
ODY4ZTNlODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0
L1dQRVF0Vmlld0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFdQRVF0Vmlld0JhY2tlbmQ+IFdQRVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZShjb25zdCBRU2l6
ZUYmIHNpemUsIFEKICAgICBpZiAoIWVnbENvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V1BFUXRWaWV3QmFja2VuZD4oc2l6ZSwg
ZWdsRGlzcGxheSwgZWdsQ29udGV4dCwgY29udGV4dCwgdmlldyk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8V1BFUXRWaWV3QmFja2VuZD4oc2l6ZSwgZWdsRGlzcGxheSwgZWdsQ29udGV4dCwgY29u
dGV4dCwgdmlldyk7CiB9CiAKIFdQRVF0Vmlld0JhY2tlbmQ6OldQRVF0Vmlld0JhY2tlbmQoY29u
c3QgUVNpemVGJiBzaXplLCBFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgZWdsQ29udGV4
dCwgUVBvaW50ZXI8UU9wZW5HTENvbnRleHQ+IGNvbnRleHQsIFFQb2ludGVyPFdQRVF0Vmlldz4g
dmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMmM3OGRmNTAwZjc0NjM3NWQzMWQ4NGQ4
ODZlMzJhMmQ4OGFiMWNlYy4uMTlhZWY5NDRmNzRmNjJjMTlkNDg5OWI5Mzg2NjAwZmE3MWM0NjQ4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTczLDExICs3MywxMSBAQCBzdGF0aWMgY29u
c3QgU2Vjb25kcyBkZWZhdWx0UGFnZUxvYWRUaW1lb3V0ID0gMzAwX3M7CiBzdGF0aWMgY29uc3Qg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSBkZWZhdWx0
UGFnZUxvYWRTdHJhdGVneSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VM
b2FkU3RyYXRlZ3k6Ok5vcm1hbDsKIAogV2ViQXV0b21hdGlvblNlc3Npb246OldlYkF1dG9tYXRp
b25TZXNzaW9uKCkKLSAgICA6IG1fY2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudD4oKSkKKyAgICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudD4oKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRS
b3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0
Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZG9tYWlu
RGlzcGF0Y2hlcihBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2JhY2tlbmRE
aXNwYXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fZG9tYWluTm90aWZpZXIoc3RkOjptYWtlX3VuaXF1
ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPihtX2Zyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fZG9tYWluTm90aWZpZXIobWFrZVVuaXF1ZTxBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVy
PihtX2Zyb250ZW5kUm91dGVyKSkKICAgICAsIG1fbG9hZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJldlYkF1dG9tYXRpb25TZXNzaW9uOjpsb2FkVGltZXJGaXJlZCkKIHsKICNpZiBFTkFC
TEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA2YjA5YmFkYjhkMGNlYmFiZjJjNjlmNjAwOWIx
YmQxZDIzYzA5ZTU4Li41M2IzNzcwN2U4N2M1MWRjNGFlOWQ2MzliMWQ0ZjMyNjM4MDY4YjFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApA
QCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBt
ZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8CiB7CiAgICAgQ09NUElM
RV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBl
bmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlx
dWU8SVBDOjpFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlv
bklEKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICBy
ZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdhdGUubW0K
aW5kZXggYTM0NGRmZjljZTBkNTM1Y2EzMGRiMmJlYjViY2JkN2MwZDc0Y2ZiNC4uMTYzZmI5NTJl
ZTBlYTliNzFhM2Q0OWQzZGQ5N2NlMDA0M2NjNjhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tCkBAIC00NCw3ICs0NCw3
IEBAIEljb25Mb2FkaW5nRGVsZWdhdGU6On5JY29uTG9hZGluZ0RlbGVnYXRlKCkKIAogc3RkOjp1
bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+IEljb25Mb2FkaW5nRGVsZWdhdGU6OmNy
ZWF0ZUljb25Mb2FkaW5nQ2xpZW50KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJ
Y29uTG9hZGluZ0NsaWVudD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEljb25Mb2Fk
aW5nQ2xpZW50PigqdGhpcyk7CiB9CiAKIFJldGFpblB0cjxpZCA8X1dLSWNvbkxvYWRpbmdEZWxl
Z2F0ZT4gPiBJY29uTG9hZGluZ0RlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCAzMDJmNjgyMjgyYmNjN2VlMzhkM2Y2
NzI3ZDZkMjNmODRiMjg5ZGE4Li43YjYyNGFiZmEyZjQxMTA0MGEwNmIyYjI2N2RiYmIzMmNkODFj
ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAg
LTc4LDEzICs3OCwxMyBAQCBVSURlbGVnYXRlOjp+VUlEZWxlZ2F0ZSgpCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4gVUlE
ZWxlZ2F0ZTo6Y3JlYXRlQ29udGV4dE1lbnVDbGllbnQoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENvbnRleHRNZW51Q2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q29udGV4dE1lbnVDbGllbnQ+KCp0aGlzKTsKIH0KICNlbmRpZgogCiBzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpVSUNsaWVudD4gVUlEZWxlZ2F0ZTo6Y3JlYXRlVUlDbGllbnQoKQogewotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVJQ2xpZW50PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VUlDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0YWluUHRyPGlkIDxXS1VJRGVsZWdhdGU+
ID4gVUlEZWxlZ2F0ZTo6ZGVsZWdhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRl
eCBhODEzZjU1MTdkZjFlZTU5MzFmMzI1MzI0YWJiODBjOWNlM2E1MzRkLi45MWNmOTQ4MGM3NTE4
Y2Q5YmIxN2U5ZmNhNGU5MTZkMGIwNzNiMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6
Y3JlYXRlTWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpCiAgICAgICAgIHNv
dXJjZS0+c2V0SXNSZW1vdGUodHJ1ZSk7CiAgICAgICAgIHNldHRpbmdzID0gc291cmNlLT5zZXR0
aW5ncygpOwogICAgICAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZCkpOwotICAgICAg
ICBtX3Byb3hpZXMuYWRkKGlkLCBzdGQ6Om1ha2VfdW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKm1f
cHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc291cmNlKSkpOworICAgICAgICBtX3Byb3hp
ZXMuYWRkKGlkLCBtYWtlVW5pcXVlPFNvdXJjZVByb3h5PihpZCwgKm1fcHJvY2Vzcy5jb25uZWN0
aW9uKCksIFdURk1vdmUoc291cmNlKSkpOwogICAgIH0gZWxzZQogICAgICAgICBpbnZhbGlkQ29u
c3RyYWludHMgPSBXVEZNb3ZlKHNvdXJjZU9yRXJyb3IuZXJyb3JNZXNzYWdlKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdWNjZWVkZWQsIGludmFsaWRDb25zdHJhaW50cywgV1RGTW92ZShzZXR0
aW5ncykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0KaW5kZXggMzA3MGQ1NzQ0M2ZkZjcxOTYwODYwMzBlM2U2MzE0MWUwNjc4
NTgyNi4uZTVlMzJkMmZhMmEwODYwNDE3YzZjZjgwZDdiY2U1OWI5YTczOWFlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKICAgICBpZiAoIVtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJv
b2xGb3JLZXk6QCJXZWJLaXRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciJdKQogICAgICAg
ICBpbnN0YWxsTWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7CiAKLSAgICBzZXRMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQ+KCkpOworICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudChtYWtlVW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CiB9
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnN0YXJ0RGlzcGxheUxpbmsoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCB1bnNpZ25lZCBvYnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgYXV0byBkaXNwbGF5TGluayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGxheUxpbms+KGRpc3Bs
YXlJRCk7CisgICAgYXV0byBkaXNwbGF5TGluayA9IG1ha2VVbmlxdWU8RGlzcGxheUxpbms+KGRp
c3BsYXlJRCk7CiAgICAgZGlzcGxheUxpbmstPmFkZE9ic2VydmVyKGNvbm5lY3Rpb24sIG9ic2Vy
dmVySUQpOwogICAgIG1fZGlzcGxheUxpbmtzLmFwcGVuZChXVEZNb3ZlKGRpc3BsYXlMaW5rKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tCmluZGV4IDVjMjFjYTc1YTE4MjljNTBmMWQ4MmY1Nzc3OGI0ZTg2ZTY5ZDcw
ZWEuLmIxZWM4NDZiN2I0NjA1NDhjZTBmODZkN2E1ZDExN2E2NzY3OGM0ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4
cGVjdGVkbHlVbnN1c3BlbmRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCkKICAgICBhdXRvIGJh
Y2tncm91bmRBY3Rpdml0eVRpbWVvdXRIYW5kbGVyID0gW2FjdGl2aXR5VG9rZW4gPSBtX3Rocm90
dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpIC0gbGFtYmRh
LCBiYWNrZ3JvdW5kIGFjdGl2aXR5IHRpbWVkIG91dCIsIHdlYWtUaGlzLmdldCgpKTsKICAgICB9
OwotICAgIG1fdW5leHBlY3RlZEFjdGl2aXR5VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OkRlZmVycmFibGVPbmVTaG90VGltZXI+KFdURk1vdmUoYmFja2dyb3VuZEFjdGl2aXR5VGlt
ZW91dEhhbmRsZXIpLCB1bmV4cGVjdGVkQWN0aXZpdHlEdXJhdGlvbik7CisgICAgbV91bmV4cGVj
dGVkQWN0aXZpdHlUaW1lciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RU
aW1lcj4oV1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0
ZWRBY3Rpdml0eUR1cmF0aW9uKTsKICAgICBjb21wbGV0aW9uKCk7CiB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggY2FiMDU1MDlm
YjZkMDJiYjQzZTg4ZDhkNjU0ODlmZmI3MjJmZTgwMi4uOGRmNGRhN2IzMjA4MDk0NmRmNzFjOTI4
MjE2NTNmNmVhOTQwNzU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KQEAgLTEzMTUsNyArMTMxNSw3IEBAIHN0YXRpYyBOU1RyYWNraW5nQXJlYU9w
dGlvbnMgdHJhY2tpbmdBcmVhT3B0aW9ucygpCiAKIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChO
U1ZpZXcgPFdlYlZpZXdJbXBsRGVsZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViVmll
dywgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJiBjb25maWd1cmF0aW9uKQogICAgIDogbV92aWV3KHZpZXcpCi0gICAgLCBtX3BhZ2VDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlldywgb3V0ZXJXZWJWaWV3KSkK
KyAgICAsIG1fcGFnZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRl
cldlYlZpZXcpKQogICAgICwgbV9wYWdlKHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKm1fcGFn
ZUNsaWVudCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpCiAgICAgLCBtX25lZWRzVmlld0ZyYW1l
SW5XaW5kb3dDb29yZGluYXRlcyhtX3BhZ2UtPnByZWZlcmVuY2VzKCkucGx1Z2luc0VuYWJsZWQo
KSkKICAgICAsIG1faW50cmluc2ljQ29udGVudFNpemUoQ0dTaXplTWFrZShOU1ZpZXdOb0ludHJp
bnNpY01ldHJpYywgTlNWaWV3Tm9JbnRyaW5zaWNNZXRyaWMpKQpAQCAtMTM1Myw3ICsxMzUzLDcg
QEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4g
KnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWIKICAgICB2aWV3LmxheWVyQ29udGVudHNQbGFjZW1l
bnQgPSBOU1ZpZXdMYXllckNvbnRlbnRzUGxhY2VtZW50VG9wTGVmdDsKIAogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLSAgICBtX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KHZpZXcpKTsKKyAgICBtX3BhZ2UtPnNl
dEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KHZp
ZXcpKTsKICNlbmRpZgogCiAgICAgV2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdD
b3VudCsrOwpAQCAtMTcxMSw5ICsxNzExLDkgQEAgQ0dTaXplIFdlYlZpZXdJbXBsOjpmaXhlZExh
eW91dFNpemUoKSBjb25zdAogc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6RHJhd2luZ0FyZWFQcm94
eT4gV2ViVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzKQogewogICAgIGlmIChbW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0
c10gb2JqZWN0Rm9yS2V5OkAiV2ViS2l0MlVzZVJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIl0g
Ym9vbFZhbHVlXSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNz
KTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHk+KG1fcGFnZSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNzKTsKIH0KIAog
Ym9vbCBXZWJWaWV3SW1wbDo6aXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nKCkgY29uc3QKQEAgLTMz
NTYsNyArMzM1Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkK
IHZvaWQgV2ViVmlld0ltcGw6OnNldFRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRv
ciYgdGV4dEluZGljYXRvciwgV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lIGxp
ZmV0aW1lKQogewogICAgIGlmICghbV90ZXh0SW5kaWNhdG9yV2luZG93KQotICAgICAgICBtX3Rl
eHRJbmRpY2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJbmRpY2F0
b3JXaW5kb3c+KG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSk7CisgICAgICAgIG1fdGV4dEluZGlj
YXRvcldpbmRvdyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92
aWV3LmdldEF1dG9yZWxlYXNlZCgpKTsKIAogICAgIE5TUmVjdCB0ZXh0Qm91bmRpbmdSZWN0SW5T
Y3JlZW5Db29yZGluYXRlcyA9IFtbbV92aWV3IHdpbmRvd10gY29udmVydFJlY3RUb1NjcmVlbjpb
bV92aWV3IGNvbnZlcnRSZWN0OnRleHRJbmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZp
ZXdDb29yZGluYXRlcygpIHRvVmlldzpuaWxdXTsKICAgICBtX3RleHRJbmRpY2F0b3JXaW5kb3ct
PnNldFRleHRJbmRpY2F0b3IodGV4dEluZGljYXRvciwgTlNSZWN0VG9DR1JlY3QodGV4dEJvdW5k
aW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMpLCBsaWZldGltZSk7CkBAIC00MzU4LDcgKzQzNTgs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW0oV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIFZpZXdHZXN0dXJlQ29udHJvbGxlciYgV2ViVmll
d0ltcGw6OmVuc3VyZUdlc3R1cmVDb250cm9sbGVyKCkKIHsKICAgICBpZiAoIW1fZ2VzdHVyZUNv
bnRyb2xsZXIpCi0gICAgICAgIG1fZ2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZpZXdHZXN0dXJlQ29udHJvbGxlcj4obV9wYWdlKTsKKyAgICAgICAgbV9nZXN0dXJlQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3BhZ2UpOwogICAgIHJl
dHVybiAqbV9nZXN0dXJlQ29udHJvbGxlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCA4ZWFjZDkx
YTFlNmFlNDg1NjVjOWU1OGNjZGExMGYzZWE0NDRjMjc2Li42MjY0ZGRiN2Y3OTBjMmZjY2NkZjQx
MGRmNmUyYzkzMzdiNjVkMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZv
aWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmluY29ycG9yYXRlVXBkYXRl
KGNvbnN0IFVwZGF0ZUluZm8mIHVwCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9iYWNr
aW5nU3RvcmUpCi0gICAgICAgIG1fYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNr
aW5nU3RvcmU+KHVwZGF0ZUluZm8udmlld1NpemUsIHVwZGF0ZUluZm8uZGV2aWNlU2NhbGVGYWN0
b3IsIG1fd2ViUGFnZVByb3h5KTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBtYWtlVW5pcXVl
PEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2Fs
ZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOwogCiAgICAgbV9iYWNraW5nU3RvcmUtPmluY29ycG9y
YXRlVXBkYXRlKHVwZGF0ZUluZm8pOwogCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBEcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2lu
ZyhXVEY6OkZ1bmMKICAgICB9CiAKICAgICBpZiAoIW1fZHJhd2luZ01vbml0b3IpCi0gICAgICAg
IG1fZHJhd2luZ01vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4obV93ZWJQYWdlUHJveHkpOworICAgICAg
ICBtX2RyYXdpbmdNb25pdG9yID0gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljczo6RHJhd2luZ01vbml0b3I+KG1fd2ViUGFnZVByb3h5KTsKICAgICBtX2RyYXdp
bmdNb25pdG9yLT5zdGFydChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCmlu
ZGV4IGEyZDAzODZhY2Y1ZDhhZDUzNWM3OTEyYTg4NmNiZDBmMDA1NDc4NjguLjZhYTI0N2JkODc3
MDIxNTg4MjQ3MTZhNjY1ZWUxYjc4Njk2YTZhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTE3OCw3ICsxNzgsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8RGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2U6Okhhc2hTYWx0Rm9yT3Jp
Z2luPiBEZXZpY2VJZEhhc2hTYWx0U3RvcgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBhdXRvIGhhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2Fs
dEZvck9yaWdpbj4oV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUo
cGFyZW50U2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNh
bHQpKTsKKyAgICBhdXRvIGhhc2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1ZTxIYXNoU2FsdEZv
ck9yaWdpbj4oV1RGTW92ZShzZWN1cml0eU9yaWdpbkRhdGEudmFsdWUoKSksIFdURk1vdmUocGFy
ZW50U2VjdXJpdHlPcmlnaW5EYXRhLnZhbHVlKCkpLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQp
KTsKIAogICAgIGhhc2hTYWx0Rm9yT3JpZ2luLT5sYXN0VGltZVVzZWQgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMobGFzdFRpbWVVc2VkKTsKIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNh
bGwoU2VjdXJpdHlPcmlnCiAKICAgICAgICAgU3RyaW5nIGRldmljZUlkSGFzaFNhbHQgPSBidWls
ZGVyLnRvU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBuZXdIYXNoU2FsdEZvck9yaWdpbiA9IHN0
ZDo6bWFrZV91bmlxdWU8SGFzaFNhbHRGb3JPcmlnaW4+KFdURk1vdmUoZG9jdW1lbnRPcmlnaW4p
LCBXVEZNb3ZlKHBhcmVudE9yaWdpbiksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAg
ICAgICBhdXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0gbWFrZVVuaXF1ZTxIYXNoU2FsdEZvck9y
aWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RG
TW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CiAKICAgICAgICAgcmV0dXJuIG5ld0hhc2hTYWx0Rm9y
T3JpZ2luOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAppbmRleCA2M2E0OWI1
NjdkYjhkYTUzZjU3OTlhNTAzNDRmMzEyNTFmNWU5Njg0Li5kYzVhZGYxYTNlNGI5NGFhMDE0YjQz
MGVmYTY2ZGUwOWY5NWNhN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuY3BwCkBAIC04OCwxMSArODgsMTEgQEAgRG93
bmxvYWRQcm94eSYgRG93bmxvYWRQcm94eU1hcDo6Y3JlYXRlRG93bmxvYWRQcm94eShXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wKIAogICAgIGlmIChtX2Rvd25sb2Fkcy5zaXplKCkgPT0gMSAm
JiBtX3Nob3VsZFRha2VBc3NlcnRpb24pIHsKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkVUlB
c3NlcnRpb24pOwotICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBkb3du
bG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAg
bV9kb3dubG9hZFVJQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRD
dXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgZG93bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6
VW5ib3VuZGVkTmV0d29ya2luZyk7CiAKICAgICAgICAgQVNTRVJUKCFtX2Rvd25sb2FkTmV0d29y
a2luZ0Fzc2VydGlvbik7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzcyk7Ci0gICAg
ICAgIG1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9j
ZXNzQXNzZXJ0aW9uPihtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgZG93
bmxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CisgICAgICAg
IG1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0
aW9uPihtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgZG93bmxvYWRzIl9z
LCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiAKICAgICAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nlc3MgdG9vayAnV2ViS2l0IGRvd25sb2Fk
cycgYXNzZXJ0aW9ucyBmb3IgVUlQcm9jZXNzIGFuZCBOZXR3b3JrUHJvY2VzcyIpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dhbWVwYWQvVUlHYW1lcGFkUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92
aWRlci5jcHAKaW5kZXggZWNhYWMzMDFiNGJkZjQ2ZjJjODljZGRlNzFkMTkzMjU0NTE0ZjY0MC4u
ZjRiN2JlYTY1ODUwOTkxZTk0OTRhNjIyM2Q1NGI5ODJhZWNmZDEwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbENvbm5lY3Rl
ZEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxQbGF0Zm9ybUdhbWVwYWQKICAgICBmb3IgKGF1dG8qIGdh
bWVwYWQgOiBpbml0aWFsR2FtZXBhZHMpIHsKICAgICAgICAgaWYgKCFnYW1lcGFkKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBz
dGQ6Om1ha2VfdW5pcXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOworICAgICAgICBtX2dhbWVwYWRz
W2dhbWVwYWQtPmluZGV4KCldID0gbWFrZVVuaXF1ZTxVSUdhbWVwYWQ+KCpnYW1lcGFkKTsKICAg
ICB9CiAKICAgICBmb3IgKGF1dG8mIHBvb2wgOiBtX3Byb2Nlc3NQb29sc1VzaW5nR2FtZXBhZHMp
CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBVSUdhbWVwYWRQcm92aWRlcjo6cGxhdGZvcm1HYW1l
cGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYgZ2FtZXBhZCkKICAgICAgICAgbV9nYW1lcGFk
cy5ncm93KGdhbWVwYWQuaW5kZXgoKSArIDEpOwogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRzW2dh
bWVwYWQuaW5kZXgoKV0pOwotICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IHN0ZDo6
bWFrZV91bmlxdWU8VUlHYW1lcGFkPihnYW1lcGFkKTsKKyAgICBtX2dhbWVwYWRzW2dhbWVwYWQu
aW5kZXgoKV0gPSBtYWtlVW5pcXVlPFVJR2FtZXBhZD4oZ2FtZXBhZCk7CiAKICAgICBzY2hlZHVs
ZUdhbWVwYWRTdGF0ZVN5bmMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggOTFlY2UxZjBkYWZmZTNl
YTYzYWRiYzBkOTFlYWM0ZDE4MTExMzA5YS4uYmQ2OTcyM2EwZTEzMjczYjFjNWU3NjIyYWE2MzJm
OWZlYWFkZmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wgYmFja2dyb3Vu
ZCkKIERvd25sb2FkUHJveHkmIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJv
eHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7CiAgICAgaWYgKCFt
X2Rvd25sb2FkUHJveHlNYXApCi0gICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RG93bmxvYWRQcm94eU1hcD4oKnRoaXMpOworICAgICAgICBtX2Rvd25sb2FkUHJv
eHlNYXAgPSBtYWtlVW5pcXVlPERvd25sb2FkUHJveHlNYXA+KCp0aGlzKTsKIAogICAgIHJldHVy
biBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkobV9wcm9jZXNzUG9vbCwg
cmVzb3VyY2VSZXF1ZXN0KTsKIH0KQEAgLTEyMTEsNyArMTIxMSw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFdlCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRha2VVcGxvYWRBc3NlcnRpb24o
KQogewogICAgIEFTU0VSVCghbV91cGxvYWRBc3NlcnRpb24pOwotICAgIG1fdXBsb2FkQXNzZXJ0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzSWRlbnRpZmll
cigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3Jr
aW5nKTsKKyAgICBtX3VwbG9hZEFzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlv
bj4ocHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0
ZTo6VW5ib3VuZGVkTmV0d29ya2luZyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
Y2xlYXJVcGxvYWRBc3NlcnRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCmluZGV4IDJhYWZmMWVjMmE2NTQ5MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIuLjQ3
YTNlOWIyM2JhMTI2NTE5OGI2MGVkZGY2YzRkZDk4NmZjZDIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTU2LDE0ICs1NiwxNCBAQCBSZWY8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0
ZShXZWJQcm9jZXNzUAogCiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJD
b250ZXh0U3VwcGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtl
X3VuaXF1ZTxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPigpKQorICAgICwgbV9wcm92aWRlciht
YWtlVW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCkpCiB7CiB9CiAKIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcihzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpOb3RpZmljYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKICAgICBpZiAoIXByb3ZpZGVy
KSB7Ci0gICAgICAgIG1fcHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0
aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5pcXVlPEFQSTo6Tm90
aWZpY2F0aW9uUHJvdmlkZXI+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Q
cm9jZXNzUHJveHlVbml4LmNwcAppbmRleCBmNmY0NzliMWUwMzkyZjMyMjE2MGE2NDk0YWVjNjJl
MGEwNjc5NmRkLi44NDM2OWQzMzQ0MDdjZmJjMmU4M2FhODI3YzVjYzBlNWRiOTEyMmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vz
c1Byb3h5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUGx1Z2lu
UHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nl
c3NDcmVhdGlvblBhCiAjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIGJvb2wgcGx1Z2luUmVxdWly
ZXNHdGsyKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
TW9kdWxlPiBtb2R1bGUgPSBzdGQ6Om1ha2VfdW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0aCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gbW9kdWxlID0gbWFrZVVuaXF1ZTxNb2R1bGU+KHBs
dWdpblBhdGgpOwogICAgIGlmICghbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gbW9kdWxlLT5mdW5jdGlvblBvaW50ZXI8Z3BvaW50ZXI+KCJndGtfb2Jq
ZWN0X2dldF90eXBlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRs
ZXIuY3BwCmluZGV4IDAwYTk5MTg4NjE0ODczOTM4YTZjYjRhYmQ5OTE0YmM4NjI5NDVjZjcuLjRj
ZTI2MmU5ZGNiYjRiMWIwZmYwYWQ1ZGI5N2ViOTdmMzYwNzM3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgdm9p
ZCBQcm9jZXNzVGhyb3R0bGVyOjpkaWRDb25uZWN0VG9Qcm9jZXNzKFByb2Nlc3NJRCBwaWQpCiAK
ICAgICBtX3N1c3BlbmRUaW1lci5zdG9wKCk7CiAgICAgaWYgKG1fc2hvdWxkVGFrZVVJQmFja2dy
b3VuZEFzc2VydGlvbikKLSAgICAgICAgbV9hc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBy
b2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNz
ZXJ0aW9uU3RhdGUoKSk7CisgICAgICAgIG1fYXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNz
QW5kVUlBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFzc2VydGlv
blN0YXRlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9hc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFByb2Nlc3NBc3NlcnRpb24+KHBpZCwgIldlYiBjb250ZW50IHZpc2liaWxpdHkiX3MsIGFz
c2VydGlvblN0YXRlKCkpOworICAgICAgICBtX2Fzc2VydGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vz
c0Fzc2VydGlvbj4ocGlkLCAiV2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3Rh
dGUoKSk7CiAgICAgbV9wcm9jZXNzLmRpZFNldEFzc2VydGlvblN0YXRlKGFzc2VydGlvblN0YXRl
KCkpOwogICAgIG1fYXNzZXJ0aW9uLT5zZXRDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCA2MGYwMmM2MTBmY2Q5
ODgzMDYzOWM1N2IzZTlkNjFmZjFmZDUyNWZkLi4yNzRhYmQzMDI5YzAwNzczMzlkZmUzNzQ4ZmYz
MDY5N2M5YjQ4YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5tbQpAQCAtMTA3LDcgKzEwNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MpCiAgICAgOiBEcmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVy
VHJlZSwgd2ViUGFnZVByb3h5LCBwcm9jZXNzKQotICAgICwgbV9yZW1vdGVMYXllclRyZWVIb3N0
KHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpKQorICAgICwgbV9y
ZW1vdGVMYXllclRyZWVIb3N0KG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMp
KQogewogI2lmIEhBVkUoSU9TVVJGQUNFKQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcG9vbCBz
dXJmYWNlcyBpbiB0aGUgVUkgcHJvY2Vzcy4KQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OnVwZGF0ZURlYnVnSW5kaWNhdG9yKEludFNpemUg
Y29udGVudHNTaXplLAogCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Omlu
aXRpYWxpemVEZWJ1Z0luZGljYXRvcigpCiB7Ci0gICAgbV9kZWJ1Z0luZGljYXRvckxheWVyVHJl
ZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUhvc3Q+KCp0aGlzKTsKKyAg
ICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJU
cmVlSG9zdD4oKnRoaXMpOwogICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVIb3N0LT5zZXRJ
c0RlYnVnTGF5ZXJUcmVlSG9zdCh0cnVlKTsKIAogICAgIG1fdGlsZU1hcEhvc3RMYXllciA9IGFk
b3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
CmluZGV4IDMwMDI1ZDQyOTlmM2JjYTA0ODVkMzA0ZDgzMzU4MTc2MTBiYTUwYmQuLjhhNGU1MDQ4
MTdlYmMxMjVjZTg5OGMxYzI5MWQ5YTZlNGQ1ZjU4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVIb3N0OjpjcmVh
dGVMYXllcihjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmUKIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtl
Tm9kZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3Bl
cnRpZXMmIHByb3BlcnRpZXMpCiB7CiAgICAgYXV0byBtYWtlV2l0aExheWVyID0gWyZdIChSZXRh
aW5QdHI8Q0FMYXllcj4gbGF5ZXIpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKGxheWVyKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KHByb3BlcnRp
ZXMubGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwogICAgIH07CiAgICAgYXV0byBtYWtlQWRvcHRp
bmdMYXllciA9IFsmXSAoQ0FMYXllciogbGF5ZXIpIHsKICAgICAgICAgcmV0dXJuIG1ha2VXaXRo
TGF5ZXIoYWRvcHROUyhsYXllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQppbmRleCBl
ODhiYmM2MDhkNGZiMDU4Mzg0ZDI5YjI2OTgxNTkyZWRhODE0ZWJhLi40ZmQ0ZWEyNjllOGNjMWJk
ZmZiMmViMjU5N2Q0Zjc1MGQ4NDI0MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQpA
QCAtNzMsNyArNzMsNyBAQCBSZW1vdGVMYXllclRyZWVOb2RlOjp+UmVtb3RlTGF5ZXJUcmVlTm9k
ZSgpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJUcmVlTm9kZT4gUmVtb3RlTGF5ZXJUcmVl
Tm9kZTo6Y3JlYXRlV2l0aFBsYWluTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEIGxheWVySUQpCiB7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IGxheWVyID0gYWRv
cHROUyhbW1dLUGxhaW5SZW1vdGVMYXllciBhbGxvY10gaW5pdF0pOwotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUobGF5ZXIp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihsYXllcklELCBX
VEZNb3ZlKGxheWVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlTm9kZTo6ZGV0YWNoRnJv
bVBhcmVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0KaW5kZXgg
NjI5YTljNjUwZDQzYzBkNTYxYzgxOTMzYmEwZDE0ZThkMzNlYTQ0NC4uMGMxMjZhZTZhZjc1ZTQx
MzhhZmQwMDg2ODM5NTY2MjlmZjcwMDIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJU
cmVlSG9zdElPUy5tbQpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFVJVmlldz4g
Y3JlYXRlUmVtb3RlVmlldyhwaWRfdCBwaWQsIHVpbnQzMl90IGNvbnRleHRJRCkKIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9k
ZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRp
ZXMmIHByb3BlcnRpZXMpCiB7CiAgICAgYXV0byBtYWtlV2l0aFZpZXcgPSBbJl0gKFJldGFpblB0
cjxVSVZpZXc+IHZpZXcpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3Rl
TGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKHZpZXcpKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXll
cklELCBXVEZNb3ZlKHZpZXcpKTsKICAgICB9OwogICAgIGF1dG8gbWFrZUFkb3B0aW5nVmlldyA9
IFsmXSAoVUlWaWV3KiB2aWV3KSB7CiAgICAgICAgIHJldHVybiBtYWtlV2l0aFZpZXcoYWRvcHRO
Uyh2aWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KaW5kZXggODFhMmViOWE2MzVkNTk4NDE2MDBm
NzgzNTIwNGFjODRiZDZkNWMyOC4uYjg5MDY4MWU5ZTdhNTEzYmEzNDM2N2NlZjM5ODliZTNiMTlk
OWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hp
bGRyZW4oY29uc3QgUwogCiAgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAg
ICAgaWYgKHNjcm9sbENvbnRhaW5lckxheWVyKCkpCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05v
ZGVEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUz4oKnRoaXMpOworICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUg
PSBtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlz
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBu
dWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQppbmRleCBiNTZlMmVhNjRkYTUyMDMxZGZhZjEy
OGVjMjQ4Y2QxNWM3MTAwOTI2Li5kMGJkZDNjNTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFhYjU3
ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TLm1tCkBAIC00Myw3ICs0Myw3IEBAIFJlZjxTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Ny
b2xsaW5nVHJlZSwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAg
ICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGluZ05vZGVE
ZWxlZ2F0ZShtYWtlVW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+
KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFj
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggMzJhMWUzM2FhODU2
N2MwYjYxNjJlMDY3ODNjZjM3NmNmNjE5MDdlMi4uMjMzZmZkMDIxZTYzOGJmMTg4ZjhkY2FiZDc3
OWM3NDUyOTQzNzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlUmVtb3RlTWFjOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNj
cm9sbGluZ1RyZWUmIHRyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdO
b2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyh0
cmVlLCBub2RlVHlwZSwgbm9kZUlEKQotICAgICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3Vu
aXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VV
bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1v
dGVNYWMuY3BwCmluZGV4IGQ4OTYwY2VjMzBlNDMzMTlhYTAyN2Q5YTIxZmNlZmM4Mzc2MzUwNDMu
LmI2Y2EzY2JiYTgwODA3YWY3YjlmNjk5YmU5YjFiMmFhOWNkYzFjMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlUmVtb3RlTWFjLmNwcApAQCAtNDEsNyArNDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
TgogCiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKFNjcm9sbGluZ1RyZWUmIHRyZWUs
IFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlTWFjKHRyZWUsIG5vZGVJRCkKLSAgICAsIG1fc2Nyb2xsZXJQYWlyKHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigqdGhpcykpCisgICAgLCBtX3Njcm9sbGVyUGFpciht
YWtlVW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlk
U2VydmljZS5tbQppbmRleCA5ZWFlMThlZGQ1ZjRkMmRjNWRmMzhlOTZkMDUwNTA5M2JjYTliMzk4
Li5hYmQwZTdlNzI5NDc5MTI4Y2I2YWZmZjdmMjE4MTI2M2U0ZGE5ODM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0hpZFNlcnZpY2UubW0KQEAgLTkyLDcgKzkyLDcgQEAgVW5pcXVlUmVmPEhpZENvbm5lY3Rpb24+
IEhpZFNlcnZpY2U6OmNyZWF0ZUhpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2aWNlKQog
CiB2b2lkIEhpZFNlcnZpY2U6OmRldmljZUFkZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKIHsK
LSAgICBhdXRvIGRyaXZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3RhcEhpZERyaXZlcj4oY3JlYXRl
SGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKKyAgICBhdXRvIGRyaXZlciA9IG1ha2VVbmlxdWU8Q3Rh
cEhpZERyaXZlcj4oY3JlYXRlSGlkQ29ubmVjdGlvbihkZXZpY2UpKTsKICAgICAvLyBHZXQgYXV0
aGVudGljYXRvciBpbmZvIGZyb20gdGhlIGRldmljZS4KICAgICBkcml2ZXItPnRyYW5zYWN0KGVu
Y29kZUVtcHR5QXV0aGVudGljYXRvclJlcXVlc3QoQ3RhcFJlcXVlc3RDb21tYW5kOjprQXV0aGVu
dGljYXRvckdldEluZm8pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHB0ciA9IGRy
aXZlci5nZXQoKV0oVmVjdG9yPHVpbnQ4X3Q+JiYgcmVzcG9uc2UpIHsKICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA5OWQ2ZWEzMzQxNTNlY2Y0OWQ0
NTg0Yzc0M2RjNjgxNjg4NDE1NTIwLi44NDZhNWFhMjdkZmFiM2QyNzRjZmZhNDg3Mzg2MWYyNTg3
ZDE3ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9j
YXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eT4gV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQcm9j
ZXNzUG9vCiAKIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgOiBXZWJDb250ZXh0U3Vw
cGxlbWVudChwcm9jZXNzUG9vbCkKLSAgICAsIG1fcHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkpCisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8
QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpKQogewogICAgIFdlYkNvbnRleHRTdXBwbGVtZW50
Ojpwcm9jZXNzUG9vbCgpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkdlb2xvY2F0
aW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKIH0KQEAgLTU0
LDcgKzU0LDcgQEAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG8KIHZvaWQgV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okdlb2xvY2F0aW9u
UHJvdmlkZXI+JiYgcHJvdmlkZXIpCiB7CiAgICAgaWYgKCFwcm92aWRlcikKLSAgICAgICAgbV9w
cm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpHZW9sb2NhdGlvblByb3ZpZGVyPigpOwor
ICAgICAgICBtX3Byb3ZpZGVyID0gbWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+
KCk7CiAgICAgZWxzZQogICAgICAgICBtX3Byb3ZpZGVyID0gV1RGTW92ZShwcm92aWRlcik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9j
dXNNYW5hZ2VyLmNwcAppbmRleCAyY2RjZDE3NjUyOTlmZTc3NjQ5YmFiZjlkZTNlNzRlOGIwZjAw
ZTM3Li4zMzY0YmNiY2M5MTE4NGE2YmE3NTQxZWY5MGIwZjk2MDRjZGU0ZGRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
ci5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdl
cjo6dXBkYXRlUGxheWJhY2tBdHRyaWJ1dGVzRnJvbU1lZGlhU3RhdGUoV2ViUGFnZQogCiB2b2lk
IFdlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudChXZWJQ
YWdlUHJveHkmIHByb3h5LCB1aW50NjRfdCBlbGVtZW50SUQpCiB7Ci0gICAgbV9mb2N1c2VkTWVk
aWFFbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxGb2N1c2VkTWVkaWFFbGVtZW50PigmcHJveHks
IGVsZW1lbnRJRCk7CisgICAgbV9mb2N1c2VkTWVkaWFFbGVtZW50ID0gbWFrZVVuaXF1ZTxGb2N1
c2VkTWVkaWFFbGVtZW50PigmcHJveHksIGVsZW1lbnRJRCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFT
ZXNzaW9uRm9jdXNNYW5hZ2VyOjpjbGVhckZvY3VzZWRNZWRpYUVsZW1lbnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IGM0YjkyYzgzY2ZlYTI5YjMxZWRiYjM0YWE4NDAyNWJhNWM4YjAzYjcuLmJkYTU5Y2Q4
MDUxNTc2NDZiMzA4ZDJmZDIzNmYzZDExODI3MWUwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQzLDcg
KzQzLDcgQEAgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRl
bmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKIHsKLSAgICBhdXRv
IHRhcmdldEFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0QWdl
bnQ+KG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCkpOwor
ICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRB
Z2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7
CiAKICAgICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQ4NWIzMWQ0YWVmZjJhMjA0YWUwY2E2
NmFlZjI3ZDM3Mjg1MzdkN2UuLmQ4NjFkZThkMTEzNzU4ODBjMzUzNmI2NTM3NzRhYTBjMDMxOTBi
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzk3LDE1
ICszOTcsMTUgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNs
aWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICAgICAsIG1fY29uZmlndXJhdGlv
bihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VV
bmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50
KG1ha2VVbmlxdWVSZWY8QVBJOjpIaXN0b3J5Q2xpZW50PigpKQotICAgICwgbV9pY29uTG9hZGlu
Z0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCkpCi0gICAg
LCBtX2Zvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCi0gICAg
LCBtX3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKLSAgICAsIG1f
ZmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKLSAgICAsIG1f
ZmluZE1hdGNoZXNDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50
PigpKQorICAgICwgbV9pY29uTG9hZGluZ0NsaWVudChtYWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRp
bmdDbGllbnQ+KCkpCisgICAgLCBtX2Zvcm1DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGll
bnQ+KCkpCisgICAgLCBtX3VpQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKKyAg
ICAsIG1fZmluZENsaWVudChtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVudD4oKSkKKyAgICAsIG1f
ZmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PigpKQog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwgbV9jb250ZXh0TWVudUNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCkpCisgICAgLCBtX2NvbnRleHRN
ZW51Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKICNlbmRpZgot
ICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJOYXZpZ2F0aW9uU3Rh
dGU+KCkpCisgICAgLCBtX25hdmlnYXRpb25TdGF0ZShtYWtlVW5pcXVlPFdlYk5hdmlnYXRpb25T
dGF0ZT4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAoKm1f
Y29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCkpCiAgICAgLCBtX3ByZWZlcmVuY2VzKCptX2NvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VzKCkpCkBAIC00MTYsNyArNDE2LDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBQYWcKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgeyBtX2Nv
bmZpZ3VyYXRpb24tPm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KCkgfQogICAgICwgbV90
cmVhdHNTSEExQ2VydGlmaWNhdGVzQXNJbnNlY3VyZShtX2NvbmZpZ3VyYXRpb24tPnRyZWF0c1NI
QTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlKCkpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQotICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxs
c2NyZWVuQ2xpZW50PigpKQorICAgICwgbV9mdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8QVBJ
OjpGdWxsc2NyZWVuQ2xpZW50PigpKQogI2VuZGlmCiAgICAgLCBtX2dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyKCp0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIoKnRoaXMpCkBAIC00MzUsOSArNDM1LDkgQEAgV2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCBQYWcKICNlbmRpZgogICAgICwgbV9wYWdlTG9hZFN0YXRlKCp0aGlzKQogICAgICwgbV9j
b25maWd1cmF0aW9uUHJlZmVyZW5jZVZhbHVlcyhtX2NvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VW
YWx1ZXMoKSkKLSAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFdl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX2luc3BlY3RvckNvbnRy
b2xsZXIobWFrZVVuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQogI2lm
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKHN0
ZDo6bWFrZV91bmlxdWU8V2ViUGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVj
dG9yRGVidWdnYWJsZShtYWtlVW5pcXVlPFdlYlBhZ2VEZWJ1Z2dhYmxlPigqdGhpcykpCiAjZW5k
aWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7CkBAIC00NzcsNyAr
NDc3LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWcKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2
ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3RhdGVDaGFuZ2UpLCBbdGhpc10g
eworICAgIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPFJ1bkxv
b3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVyOjpXZWxsS25v
d25SdW5Mb29wT3JkZXJzOjpBY3Rpdml0eVN0YXRlQ2hhbmdlKSwgW3RoaXNdIHsKICAgICAgICAg
dGhpcy0+ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCk7CiAgICAgfSk7CiAjZW5kaWYKQEAg
LTYwMSw3ICs2MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9saWN5Q2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4mJiBwb2xpY3lDbAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9ybUNsaWVudD4mJiBmb3Jt
Q2xpZW50KQogewogICAgIGlmICghZm9ybUNsaWVudCkgewotICAgICAgICBtX2Zvcm1DbGllbnQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAgICAgICAgbV9mb3JtQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYg
dWlDbGllbnQpCiB7CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgICAgICBtX3VpQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC02MjgsNyArNjI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYKIHsKICAgICBib29sIGhh
c0NsaWVudCA9IGljb25Mb2FkaW5nQ2xpZW50LmdldCgpOwogICAgIGlmICghaWNvbkxvYWRpbmdD
bGllbnQpCi0gICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CisgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBt
X2ljb25Mb2FkaW5nQ2xpZW50ID0gV1RGTW92ZShpY29uTG9hZGluZ0NsaWVudCk7CiAKQEAgLTY1
MCw3ICs2NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVy
KHN0ZDo6dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcgogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xp
ZW50KQogewogICAgIGlmICghZmluZENsaWVudCkgewotICAgICAgICBtX2ZpbmRDbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKKyAgICAgICAgbV9maW5kQ2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50KQogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZp
bmRNYXRjaGVzQ2xpZW50PiYmIGZpbmRNYXRjaGVzQ2xpZW50KQogewogICAgIGlmICghZmluZE1h
dGNoZXNDbGllbnQpIHsKLSAgICAgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICAgICAgbV9maW5kTWF0Y2hlc0Ns
aWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNjc2LDcgKzY3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEaWFnbm9zdGljTG9n
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+JiYgY29udGV4dE1lbnVDbGllbnQpCiB7CiAgICAgaWYg
KCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAgICAgICBtX2NvbnRl
eHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnN0IFdLUGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50QmFzZSoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faW5qZWN0ZWRCdW5kbGVD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsK
KyAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQ+KCk7CiAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudC0+aW5pdGlhbGl6ZShj
bGllbnQpOwogfQogCkBAIC03NzYsNyArNzc2LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQK
ICAgICB9CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1
c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBw
cm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgYXV0
byBzdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0
aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CisgICAgYXV0byBzdXNw
ZW5kZWRQYWdlID0gbWFrZVVuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nl
c3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJp
bmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5n
LCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9y
IHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKS50
b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5n
KCkgOiAwKTsKIApAQCAtODQ5LDcgKzg0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRh
Y2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBB
U1NFUlQoIW1fZnVsbFNjcmVlbk1hbmFnZXIpOwotICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xp
ZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpKTsKKyAgICBtX2Z1bGxTY3JlZW5N
YW5hZ2VyID0gbWFrZVVuaXF1ZTxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PigqdGhpcywgcGFn
ZUNsaWVudCgpLmZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQoKSk7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiBIQVZFKEFWS0lUKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIEFTU0VSVCghbV9wbGF5YmFja1Nl
c3Npb25NYW5hZ2VyKTsKQEAgLTg2MCwyMiArODYwLDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAgICAg
QVNTRVJUKCFtX3BheW1lbnRDb29yZGluYXRvcik7Ci0gICAgbV9wYXltZW50Q29vcmRpbmF0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PigqdGhpcyk7Cisg
ICAgbV9wYXltZW50Q29vcmRpbmF0b3IgPSBtYWtlVW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5PigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBB
U1NFUlQoIW1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIpOwotICAgIG1fc3lzdGVtUHJldmlld0Nv
bnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhp
cyk7CisgICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8U3lzdGVtUHJl
dmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
ICAgICBBU1NFUlQoIW1fY3JlZGVudGlhbHNNZXNzZW5nZXIpOwotICAgIG1fY3JlZGVudGlhbHNN
ZXNzZW5nZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5PigqdGhpcyk7CisgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IG1ha2VVbmlxdWU8V2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgSEFW
RShQRU5DSUxLSVQpCiAgICAgQVNTRVJUKCFtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyKTsKLSAg
ICBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcj4oKnRoaXMpOworICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIgPSBt
YWtlVW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CiAjZW5kaWYKIH0KIApA
QCAtOTQzLDcgKzk0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmF3aW5nQXJlYShzdGQ6
OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlCiAKICNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9kcmF3aW5nQXJl
YS0+dHlwZSgpID09IERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSkgewotICAgICAgICBt
X3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICAgICAgbV9zY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Pigq
dGhpcyk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gT24gaU9TLCBtYWlu
IGZyYW1lIHNjcm9sbHMgYXJlIHNlbnQgaW4gdGVybXMgb2YgdmlzaWJsZSByZWN0IHVwZGF0ZXMu
CiAgICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS0+c2V0UHJvcGFnYXRlc01haW5G
cmFtZVNjcm9sbHMoZmFsc2UpOwpAQCAtMTAwNiwxNyArMTAwNiwxNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2xvc2UoKQogICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX25hdmln
YXRpb25DbGllbnQgPSBtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKTsKICAg
ICBtX3BvbGljeUNsaWVudCA9IG51bGxwdHI7Ci0gICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKLSAgICBtX2Zvcm1DbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKLSAgICBtX3VpQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwotICAgIG1fZmluZENsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOwotICAgIG1fZmluZE1hdGNoZXND
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CisgICAg
bV9pY29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4o
KTsKKyAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKKyAg
ICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOworICAgIG1fZmluZENs
aWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5kQ2xpZW50PigpOworICAgIG1fZmluZE1hdGNoZXND
bGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCk7CiAgICAgbV9kaWFn
bm9zdGljTG9nZ2luZ0NsaWVudCA9IG51bGxwdHI7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0
TWVudUNsaWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6
OkNvbnRleHRNZW51Q2xpZW50PigpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGdWxsc2Ny
ZWVuQ2xpZW50PigpOworICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpG
dWxsc2NyZWVuQ2xpZW50PigpOwogI2VuZGlmCiAKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkucmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlzKTsKQEAgLTEyMTYsNyArMTIx
Niw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSk7CiAKLSAgICBhdXRvIG5hdmlnYXRpb24g
PSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpTdWJzdGl0dXRlRGF0YT4oZGF0YS52ZWN0b3IoKSwgTUlNRVR5cGUsIGVuY29k
aW5nLCBiYXNlVVJMLCB1c2VyRGF0YSkpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdh
dGlvblN0YXRlLT5jcmVhdGVMb2FkRGF0YU5hdmlnYXRpb24obWFrZVVuaXF1ZTxBUEk6OlN1YnN0
aXR1dGVEYXRhPihkYXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVz
ZXJEYXRhKSk7CiAgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29w
eVJlZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVz
ZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQsIHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQpA
QCAtMjQwNSw3ICsyNDA1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKKyAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQg
PSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBjb2FsZXNj
ZWRXaGVlbEV2ZW50LT5hcHBlbmQoZXZlbnQpOwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hl
ZWxFdmVudHMuYXBwZW5kKFdURk1vdmUoY29hbGVzY2VkV2hlZWxFdmVudCkpOwogICAgIHNlbmRX
aGVlbEV2ZW50KGV2ZW50KTsKQEAgLTI0MTMsNyArMjQxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50KCkKIHsKLSAgICBh
dXRvIG5leHRDb2FsZXNjZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdl
YldoZWVsRXZlbnQ+PigpOworICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gbWFrZVVuaXF1
ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CiAgICAgV2ViV2hlZWxFdmVudCBuZXh0
V2hlZWxFdmVudCA9IGNvYWxlc2NlZFdoZWVsRXZlbnQobV93aGVlbEV2ZW50UXVldWUsICpuZXh0
Q29hbGVzY2VkRXZlbnQuZ2V0KCkpOwogICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVu
dHMuYXBwZW5kKFdURk1vdmUobmV4dENvYWxlc2NlZEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZl
bnQobmV4dFdoZWVsRXZlbnQpOwpAQCAtMjk3NCw3ICsyOTc0LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIHMKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwogICAgIH0KIAot
ICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm92aXNpb25hbFBhZ2VQ
cm94eT4oKnRoaXMsIG5ld1Byb2Nlc3MuY29weVJlZigpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2VQ
cm94eSksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVl
c3RJc1JlZGlyZWN0KCksIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCk7CisgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFBy
b3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5UmVmKCksIFdURk1vdmUo
c3VzcGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlv
bi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgp
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKIAogICAgIGlmIChhdXRvKiBpdGVtID0g
bmF2aWdhdGlvbi50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdl
UHJveHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwg
JXMiLCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTU2OTQsNyArNTY5NCw3
IEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6ZnVsbFNjcmVlbk1h
bmFnZXIoKQogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZ1bGxzY3JlZW5DbGllbnQoc3RkOjp1bmlx
dWVfcHRyPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4mJiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGll
bnQpIHsKLSAgICAgICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgICAgIG1fZnVsbHNjcmVlbkNsaWVudCA9IG1ha2VV
bmlxdWU8QVBJOjpGdWxsc2NyZWVuQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC03NDI4LDcgKzc0MjgsNyBAQCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eSYgV2ViUGFnZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdAogICAgIGlmICht
X3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcikKICAgICAgICAgcmV0dXJuICptX3Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIAotICAgIG1fdXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eT4oKnRoaXMpOworICAgIG1fdXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyID0gbWFrZVVuaXF1ZTxVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eT4oKnRoaXMpOwogICAgIHJldHVybiAqbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXI7CiB9CiAKQEAgLTgxMzQsNyArODEzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCiAg
ICAgbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7CiAK
ICAgICBpZiAobV9zY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZCAmJiAhbV9z
Y3JvbGxpbmdQZXJmb3JtYW5jZURhdGEpCi0gICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGE+KGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdp
bmdBcmVhKSk7CisgICAgICAgIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbWFrZVVuaXF1
ZTxSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGE+KGRvd25jYXN0PFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX2RyYXdpbmdBcmVhKSk7CiAgICAgZWxzZSBp
ZiAoIW1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQpCiAgICAgICAgIG1f
c2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhID0gbnVsbHB0cjsKIH0KQEAgLTkxODEsNyArOTE4MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFNwZWVjaFN5bnRoZXNpemVyKCkKIFdlYlBhZ2VQ
cm94eTo6U3BlZWNoU3ludGhlc2lzRGF0YSYgV2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVzaXNE
YXRhKCkKIHsKICAgICBpZiAoIW1fc3BlZWNoU3ludGhlc2lzRGF0YSkKLSAgICAgICAgbV9zcGVl
Y2hTeW50aGVzaXNEYXRhID0gU3BlZWNoU3ludGhlc2lzRGF0YSB7IHN0ZDo6bWFrZV91bmlxdWU8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKKyAgICAgICAgbV9zcGVlY2hTeW50aGVzaXNEYXRhID0g
U3BlZWNoU3ludGhlc2lzRGF0YSB7IG1ha2VVbmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cj4odGhpcyksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsK
ICAgICByZXR1cm4gKm1fc3BlZWNoU3ludGhlc2lzRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXggOGJkZjhjZjgzODhjZGM3YmZhY2Zm
MmI3ZTYwNWQwYTgxOGRhYWM2NC4uOTYyZjNiZWQyZDgyNTY5YTA3ZGQ0ZTljZGFiOGZjYzcyMTE5
ZjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJs
ZShSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gZ2VuZXJhdGVBZGRSZXF1ZXN0SWRl
bnRpZmllcigpOwotICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmll
ciwgc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOwor
ICAgIG1fcGVuZGluZ0FkZFJlcXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgbWFrZVVuaXF1
ZTxDYWNoZWRQcm9jZXNzPihwcm9jZXNzLmNvcHlSZWYoKSkpOwogCiAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBXZWJQcm9jZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3Np
YmxlKCk6IENoZWNraW5nIGlmIHByb2Nlc3MgJWkgaXMgcmVzcG9uc2l2ZSBiZWZvcmUgY2FjaGlu
ZyBpdC4uLiIsIHRoaXMsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIHByb2Nl
c3MtPmlzUmVzcG9uc2l2ZShbdGhpcywgcHJvY2Vzc1Bvb2wgPSBtYWtlUmVmKHByb2Nlc3MtPnBy
b2Nlc3NQb29sKCkpLCByZXF1ZXN0SWRlbnRpZmllcl0oYm9vbCBpc1Jlc3BvbnNpdmUpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBiOTc2NzkxMDU0
YjgyOTRkOWY3OWU5ZjBhYTRiOTZhYmExMTQzN2FiLi45MmQ5N2RlMTBhZTg1NWI0MjM0MjY1NmFk
ZGU4MDAwYjg3NmY1MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC0yMzMsMTUgKzIzMywxNSBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIGdsb2JhbFVSTFNjaGVtZXNXaXRoQ3VzdG9tUHJvdAogV2Vi
UHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQogICAgIDogbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24uY29w
eSgpKQogICAgICwgbV9kZWZhdWx0UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCi0g
ICAgLCBtX2luamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZUNsaWVudD4oKSkKLSAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKLSAgICAsIG1fZG93bmxvYWRDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQotICAgICwgbV9oaXN0b3J5Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkK
LSAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisgICAgLCBtX2luamVjdGVkQnVuZGxl
Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKSkKKyAgICAsIG1f
YXV0b21hdGlvbkNsaWVudChtYWtlVW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKSkKKyAg
ICAsIG1fZG93bmxvYWRDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQor
ICAgICwgbV9oaXN0b3J5Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudD4oKSkKKyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlx
dWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCiAgICAgLCBtX3Zpc2l0ZWRM
aW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgICwgbV9oaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcihzdGQ6Om1ha2VfdW5p
cXVlPEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyPigqdGhpcykpCi0gICAgLCBt
X3BlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIoc3RkOjptYWtlX3VuaXF1ZTxQZXJBY3Rp
dml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyPigqdGhpcykpCisgICAgLCBtX2hpZ2hQZXJmb3JtYW5j
ZUdyYXBoaWNzVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NV
c2FnZVNhbXBsZXI+KCp0aGlzKSkKKyAgICAsIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcihtYWtlVW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0aGlzKSkK
ICNlbmRpZgogICAgICwgbV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkobV9jb25maWd1
cmF0aW9uLT5hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkoKSkKICAgICAsIG1fc2hvdWxk
VGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbihtX2NvbmZpZ3VyYXRpb24tPnNob3VsZFRha2VVSUJh
Y2tncm91bmRBc3NlcnRpb24oKSkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjppbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIGNsaWVudCkK
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNs
aWVudCkKLSAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKKyAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNs
aWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBlbHNl
CiAgICAgICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CkBA
IC0zNzcsNyArMzc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZUNvbm5lY3Rp
b25DbGllbnQoY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEIKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQ+JiYgaGlzdG9yeUNsaWVudCkKIHsKICAgICBpZiAoIWhpc3RvcnlDbGll
bnQpCi0gICAgICAgIG1faGlzdG9yeUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpMZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKTsKKyAgICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gbWFr
ZVVuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOwogICAgIGVsc2UKICAg
ICAgICAgbV9oaXN0b3J5Q2xpZW50ID0gV1RGTW92ZShoaXN0b3J5Q2xpZW50KTsKIH0KQEAgLTM4
NSw3ICszODUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Qwogdm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+
JiYgZG93bmxvYWRDbGllbnQpCiB7CiAgICAgaWYgKCFkb3dubG9hZENsaWVudCkKLSAgICAgICAg
bV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4o
KTsKKyAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpEb3dubG9hZENs
aWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBXVEZNb3ZlKGRv
d25sb2FkQ2xpZW50KTsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4m
JiBkbwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PiYmIGF1dG9tYXRpb25DbGllbnQpCiB7CiAgICAg
aWYgKCFhdXRvbWF0aW9uQ2xpZW50KQotICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21hdGlvbkNsaWVudD4oKTsKKyAgICAgICAgbV9hdXRvbWF0
aW9uQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCk7CiAgICAgZWxz
ZQogICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQp
OwogfQpAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDCiB7CiAjaWYg
RU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICAgICBpZiAoIWN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudCkKLSAgICAgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pigp
OworICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2N1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KTsKICNlbmRpZgpAQCAtNDkyLDcgKzQ5Miw3IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkm
IFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3
aXRoCiAgICAgICAgIHJldHVybiAqbV9uZXR3b3JrUHJvY2VzczsKICAgICB9CiAKLSAgICBhdXRv
IG5ldHdvcmtQcm9jZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5Pigq
dGhpcyk7CisgICAgYXV0byBuZXR3b3JrUHJvY2VzcyA9IG1ha2VVbmlxdWU8TmV0d29ya1Byb2Nl
c3NQcm94eT4oKnRoaXMpOwogCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKIApAQCAtMjUyOCw3ICsyNTI4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWEKICAgICAgICAgbV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5yZW1v
dmUobV9wcmV3YXJtSW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5yYW5kb20oKSk7CiAK
ICAgICBhdXRvJiB2YWx1ZSA9IG1fcHJld2FybUluZm9ybWF0aW9uUGVyUmVnaXN0cmFibGVEb21h
aW4uZW5zdXJlKHJlZ2lzdHJhYmxlRG9tYWluLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkNvcmU6OlByZXdhcm1JbmZvcm1hdGlvbj4oKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uPigpOwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKIAogICAgICp2YWx1ZSA9IHByZXdhcm1JbmZvcm1hdGlvbjsKQEAgLTI1NzUs
MTIgKzI1NzUsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9h
ZHMoUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lEKQogICAgICAgICBtX25ldHdvcmtQcm9jZXNz
LT50YWtlVXBsb2FkQXNzZXJ0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBBU1NFUlQoIW1fdWlQ
cm9jZXNzVXBsb2FkQXNzZXJ0aW9uKTsKLSAgICAgICAgbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNz
SUQoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVkTmV0d29y
a2luZyk7CisgICAgICAgIG1fdWlQcm9jZXNzVXBsb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQ
cm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgdXBsb2FkcyJf
cywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogICAgIH0KICAgICAKICAg
ICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc2VzV2l0aFVwbG9hZHMuYWRkKHByb2Nlc3NJRCwgbnVs
bHB0cik7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpV
bmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2Vi
S2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSUQpCkBAIC0yNjE3LDEyICsyNjE3LDEyIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldFdlYlByb2Nlc3NJc1BsYXlpbmdBdWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpCiAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVGhl
IG51bWJlciBvZiBwcm9jZXNzZXMgcGxheWluZyBhdWRpYmxlIG1lZGlhIGlzIG5vdyBvbmUuIFRh
a2luZyBVSSBwcm9jZXNzIGFzc2VydGlvbi4iKTsKIAogICAgICAgICBBU1NFUlQoIW1fdWlQcm9j
ZXNzTWVkaWFQbGF5YmFja0Fzc2VydGlvbik7Ci0gICAgICAgIG1fdWlQcm9jZXNzTWVkaWFQbGF5
YmFja0Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3Vy
cmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0
ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICAgICAg
bV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNz
ZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVkaWEgUGxheWJhY2siX3Ms
IEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246Ok1lZGlhUGxheWJh
Y2spOwogICAgIH0KIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNQbGF5aW5nQXVkaWJs
ZU1lZGlhLmFkZChwcm9jZXNzSUQsIG51bGxwdHIpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJv
Y2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBNZWRp
YSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlvblJlYXNv
bjo6TWVkaWFQbGF5YmFjayk7CisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlx
dWU8UHJvY2Vzc0Fzc2VydGlvbj4ocHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgIldlYktp
dCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQsIEFzc2VydGlv
blJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFy
V2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA5NWI1ODYzOWYzYzQwY2M2MzAwYTQ0ZjJjMDQ0OWVmZmVmOGFkMTM2Li5iY2ZkZjNh
MzhkN2JjNzk2NmNkODc0ZWQwMmJhMDM2ZGZmM2M0YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBXZWJQcm9jZXNz
UHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNp
dGVEYXRhU3RvcmUqCiAgICAgLCBtX3Zpc2libGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRl
ckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCiAgICAg
LCBtX3dlYnNpdGVEYXRhU3RvcmUod2Vic2l0ZURhdGFTdG9yZSkKICNpZiBQTEFURk9STShDT0NP
QSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0
aGlzKSkKKyAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9pc1By
ZXdhcm1lZChpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDE4
Mjk0ZDM3ZmU0OWVlZDZkNjlkZmZmZjVmMmY2NTA3MGI2NmNkOTAuLjdiZGQwM2QzYzhlYzhlMDY2
MmU3N2QwMTgyNTBiNTA4OGMyNmNmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTU0LDEyICs1NCwxMiBAQCBzdGQ6
OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFja2VuZENhaXJvPiBCYWNraW5nU3RvcmU6OmNyZWF0
ZUJhY2tlbmQoKQogICAgICAgICBHZGtWaXN1YWwqIHZpc3VhbCA9IGd0a193aWRnZXRfZ2V0X3Zp
c3VhbChtX3dlYlBhZ2VQcm94eS52aWV3V2lkZ2V0KCkpOwogICAgICAgICBHZGtTY3JlZW4qIHNj
cmVlbiA9IGdka192aXN1YWxfZ2V0X3NjcmVlbih2aXN1YWwpOwogICAgICAgICBBU1NFUlQoZG93
bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihzaGFyZWREaXNwbGF5KS5uYXRpdmUoKSA9PSBHREtf
U0NSRUVOX1hESVNQTEFZKHNjcmVlbikpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxCYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5f
Z2V0X3Jvb3Rfd2luZG93KHNjcmVlbikpLAorICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTE+KEdES19XSU5ET1dfWElEKGdka19zY3JlZW5fZ2V0X3Jv
b3Rfd2luZG93KHNjcmVlbikpLAogICAgICAgICAgICAgR0RLX1ZJU1VBTF9YVklTVUFMKHZpc3Vh
bCksIGdka192aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksIG1fc2l6ZSwgbV9kZXZpY2VTY2FsZUZh
Y3Rvcik7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCYWNr
aW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsPihtX3NpemUsIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1fc2l6
ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKIHZvaWQgQmFja2luZ1N0b3JlOjpwYWludChj
YWlyb190KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IGI4
NzRmYjBmYjJlMmE3ZTdlYzM2Y2M0NGUzOWQ2MjQ5MDZhNGM1ZjEuLmY4ODhjMGY0NDZjNjI3MTI3
YzgzNzViZTBkODFhNmEzZjJjMDlmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTI0OSw3ICsyNDksNyBA
QCB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6Y29ubmVjdGlvbkNsb3NlZCgpCiB2b2lkIFJl
bW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2
NF90IHRhcmdldElEKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNwZWN0b3JQcm94eU1h
cC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCksIFt0aGlzLCBj
b25uZWN0aW9uSUQsIHRhcmdldElEXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklELCB0YXJnZXRJRCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29u
bmVjdGlvbklELCB0YXJnZXRJRCk7CiAgICAgfSk7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdF
bnRyeSkgewogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zaG93KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVdheWxhbmQuY3BwCmluZGV4IDM4MzEwMDA1ODg5NGRlYzBmYjdiNTFjYWEwOWEy
MzlkNzdkMDhhOGIuLjg5MzI3OWZiY2Y1OGFlYWYyYWZkNmIxYTQ3YzFjNzZjMjNkODJiZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdT
dG9yZVdheWxhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVy
YXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgQWNjZWxl
cmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpjaGVja1JlcXVpcmVtZW50cygpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlx
dWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gbWFrZVVuaXF1
ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKICNlbHNlCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6
bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJl
bnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNp
b25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdM
PihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5k
aWYKICAgICAgICAgaWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2Ui
KSB8fCBnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikp
CiAgICAgICAgICAgICBnbEltYWdlVGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQ
Rk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImds
RUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCmluZGV4IGU5YWU2NTUyYTdhMmQ4NjJj
NGJkNGVlMTBlZDJlYzM2ZTkyZjgzMWQuLmNhNjUzZTVlYmE3MGM5NjE1NWZmNzY0ODhjM2VkZjQy
ODFmODU3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5k
RHJvcEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5k
RHJvcEhhbmRsZXIuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgU2VsZWN0aW9uRGF0YSogRHJhZ0Fu
ZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwg
Y28KICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJvcHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0
ID0gbV9kcm9wcGluZ0NvbnRleHRzLmFkZChjb250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgaWYgKCFkcm9wcGluZ0NvbnRleHQpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aWRn
ZXQgPSBtX3BhZ2Uudmlld1dpZGdldCgpOwotICAgICAgICBkcm9wcGluZ0NvbnRleHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwgcG9zaXRpb24pOworICAgICAg
ICBkcm9wcGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPERyb3BwaW5nQ29udGV4dD4oY29udGV4dCwg
cG9zaXRpb24pOwogICAgICAgICBWZWN0b3I8R2RrQXRvbT4gYWNjZXB0YWJsZVRhcmdldHMoUGFz
dGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkuZHJvcEF0b21zRm9yQ29udGV4dCh3aWRnZXQsIGRy
b3BwaW5nQ29udGV4dC0+Z2RrQ29udGV4dCkpOwogICAgICAgICBkcm9wcGluZ0NvbnRleHQtPnBl
bmRpbmdEYXRhUmVxdWVzdHMgPSBhY2NlcHRhYmxlVGFyZ2V0cy5zaXplKCk7CiAgICAgICAgIGZv
ciAoYXV0byYgdGFyZ2V0IDogYWNjZXB0YWJsZVRhcmdldHMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCBjYmUzODBiMjQwZDk2
MDExMTcyN2I3NzBhODI1ZTA5ZTA1NDdjOWVkLi5jM2Q5OTczYzcwZGMyMDg5YzY4M2Q2NWE5MTNk
YTI5NGQ1ZmZlYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5jcHAKQEAgLTQyMCw5ICs0MjAsOSBAQCBib29sIFdheWxhbmRDb21wb3Np
dG9yOjppbml0aWFsaXplRUdMKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKE9Q
RU5HTF9FUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0
ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KG51bGxwdHIs
ICBmYWxzZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBnbEV4
dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxscHRyLCAgZmFs
c2UpOwogI2Vsc2UKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBnbEV4
dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4obnVsbHB0ciwg
R0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49
IDMyMCk7CiAjZW5kaWYKICAgICBpZiAoZ2xFeHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX0VH
TF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwiKSkKICAgICAgICAgZ2xJbWFnZVRhcmdldFRleHR1cmUyRCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0M+KGVnbEdldFByb2NBZGRyZXNz
KCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1tCmluZGV4IGMyMzQx
MWMxZjA5YjAxMGE2NTI1NGIzNjlkZDMxNjlkMzFmMGMwZTAuLjYxZTg1OTRkNWI3YzQxYWFmOWZj
ODJjNjUzOGRiOWFkNzE4NTYzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIubW0KQEAgLTU4LDcgKzU4LDcgQEAgRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXI6On5FZGl0YWJsZUltYWdlQ29udHJvbGxlcigpCiBFZGl0YWJs
ZUltYWdlJiBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6ZW5zdXJlRWRpdGFibGVJbWFnZShXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlbWJlZGRlZFZpZXdJRCkKIHsKICAg
ICBhdXRvIHJlc3VsdCA9IG1fZWRpdGFibGVJbWFnZXMuZW5zdXJlKGVtYmVkZGVkVmlld0lELCBb
Jl0gewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4gaW1hZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2U+KCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxF
ZGl0YWJsZUltYWdlPiBpbWFnZSA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZT4oKTsKICAgICAg
ICAgaW1hZ2UtPmRyYXdpbmdWaWV3ID0gbV93ZWJQYWdlUHJveHktPnBhZ2VDbGllbnQoKS5jcmVh
dGVEcmF3aW5nVmlldyhlbWJlZGRlZFZpZXdJRCk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0
aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tB
cHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3Lm1tCmluZGV4IGQwM2ExNzI2YWIzMzRhMDBlNjBm
YmMwNTBiNTBlNWMzMzc1YWY3MjAuLjdmMGY5NDg0ZmQ3Nzc0ZGQxMTU3YWUyODg1YzkwYTNiZjJl
ZTc5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0
aW9uU3RhdGVUcmFja2luZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQpAQCAtNjUsNyArNjUsNyBAQCAtICh2
b2lkKWRpZE1vdmVUb1dpbmRvdwogICAgIGlmICghc2VsZi5fY29udGVudFZpZXcud2luZG93IHx8
IF9hcHBsaWNhdGlvblN0YXRlVHJhY2tlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX2FwcGxp
Y2F0aW9uU3RhdGVUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkFwcGxpY2F0aW9u
U3RhdGVUcmFja2VyPihzZWxmLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50
ZXJpbmdCYWNrZ3JvdW5kKSwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQpKTsKKyAgICBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6
QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNlbGYsIEBzZWxlY3RvcihfYXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmluaXNoU25hcHNob3R0
aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9uV2lsbEVu
dGVyRm9yZWdyb3VuZCkpOwogICAgIAogICAgIGlmIChfbGFzdE9ic2VydmVkU3RhdGVXYXNCYWNr
Z3JvdW5kICYmICFbc2VsZiBpc0JhY2tncm91bmRdKQogICAgICAgICBbc2VsZiBfYXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW0KaW5kZXggYzI5OTIxNDU4YWYwMWZkOTdhNDAwOTJjNzEzZjY3YzQxZmY3
N2U3ZS4uMDRmOWM2ZTI3MDJlN2Q4N2NlNTY4YmUyMDIxMWU3MDZkNzFiYzJlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTE2Nyw3ICsxNjcs
NyBAQCAtIChpbnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29s
OihXZWJLaXQ6OldlYlByb2Nlc3NQb29sJilwcgogICAgIF9wYWdlLT5zZXREZWxlZ2F0ZXNTY3Jv
bGxpbmcodHJ1ZSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgX3BhZ2UtPnNl
dEZ1bGxzY3JlZW5DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGll
bnQ+KF93ZWJWaWV3KSk7CisgICAgX3BhZ2UtPnNldEZ1bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1
ZTxXZWJLaXQ6OkZ1bGxzY3JlZW5DbGllbnQ+KF93ZWJWaWV3KSk7CiAjZW5kaWYKIAogICAgIFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3MoKS53a1ZpZXdDb3VudCsrOwpAQCAtMjM5
LDcgKzIzOSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUg
cHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAKICAgICBXZWJLaXQ6OkluaXRp
YWxpemVXZWJLaXQyKCk7CiAKLSAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbD4oc2VsZiwgd2ViVmlldyk7CisgICAgX3BhZ2VDbGllbnQgPSBt
YWtlVW5pcXVlPFdlYktpdDo6UGFnZUNsaWVudEltcGw+KHNlbGYsIHdlYlZpZXcpOwogICAgIF93
ZWJWaWV3ID0gd2ViVmlldzsKIAogICAgIHJldHVybiBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRp
b25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pXTsKQEAgLTU0MSw3ICs1NDEsNyBAQCAtICh2b2lkKV93ZWJWaWV3RGVzdHJveWVk
CiAKIC0gKHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk+KV9jcmVhdGVE
cmF3aW5nQXJlYVByb3h5OihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eSYpcHJvY2VzcwogewotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eT4oKl9wYWdlLCBwcm9jZXNzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpfcGFnZSwgcHJvY2Vzcyk7CiB9CiAK
IC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjZWFmZDE2MzJhYjMz
ZmUyODhkNzg4ZGE3MmM4MjIxN2I0YzBkYjFiLi44ZDIzY2EwZmEwNTM0MWRhZDg1NWMzM2JiNDM4
MWQxZjYzMzM2NzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTgwNiw3ICs4MDYsNyBAQCAtICh2b2lk
KXNldHVwSW50ZXJhY3Rpb24KICAgICAKICAgICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9w
dE5TKFtbV0tBY3Rpb25TaGVldEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsK
ICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50IHNldERlbGVnYXRlOnNlbGZdOwotICAgIF9zbWFy
dE1hZ25pZmljYXRpb25Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXI+KHNlbGYpOworICAgIF9zbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXI+KHNlbGYpOwogICAgIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQgPSBOTzsKICAg
ICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5POwogICAgIF9pc0RvdWJsZVRhcFBlbmRpbmcg
PSBOTzsKQEAgLTgyMSw3ICs4MjEsNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RSSVZFTl9URVhUX0NIRUNLSU5HKQotICAgIF90ZXh0
Q2hlY2tpbmdDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlRleHRDaGVja2lu
Z0NvbnRyb2xsZXI+KCpfcGFnZSk7CisgICAgX3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBtYWtl
VW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlcj4oKl9wYWdlKTsKICNlbmRpZgog
CiAgICAgX2hhc1NldFVwSW50ZXJhY3Rpb25zID0gWUVTOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAg
LSAoQk9PTCliZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXcKICAgICAgICAgcmV0dXJuIE5P
OwogCiAgICAgaWYgKCFfaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIpCi0gICAgICAgIF9pbnB1dFZp
ZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRh
dGVEZWZlcnJlcj4oc2VsZik7CisgICAgICAgIF9pbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IG1h
a2VVbmlxdWU8V2ViS2l0OjpJbnB1dFZpZXdVcGRhdGVEZWZlcnJlcj4oc2VsZik7CiAKICAgICBC
T09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVyOwogICAgIHsKQEAgLTUzMzcsNyArNTMzNyw3IEBA
IC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1CiAgICAgICAgIC8vIERlZmVyIHZpZXcgdXBkYXRlcyB1
bnRpbCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgYSBub3RpY2VhYmxlIGZsYXNo
IHdoZW4gc3dpdGNoaW5nIGZvY3VzCiAgICAgICAgIC8vIGJldHdlZW4gZWxlbWVudHMgdGhhdCBy
ZXF1aXJlIHRoZSBrZXlib2FyZC4KICAgICAgICAgaWYgKCFpbnB1dFZpZXdVcGRhdGVEZWZlcnJl
cikKLSAgICAgICAgICAgIGlucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKKyAgICAgICAgICAgIGlu
cHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0
ZURlZmVycmVyPihzZWxmKTsKICAgICAgICAgW3NlbGYgX2VsZW1lbnREaWRCbHVyXTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDgyZDM1NDIxN2I3MDY0MjAxZTNkN2IwNzZlNWIwNTliOTYwMTFjZjMuLjMxYjdkODMwZDMw
N2ZhZDg1YzI2ZDU4YzBlZjZhNzJiMjM1ODkzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtOTEyLDcgKzkxMiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMoY29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
biYgaW5mb3JtYXRpb24sCiAgICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vz
cygpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwog
ICAgIGlmIChtX2VkaXRvclN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIGVsaW1pbmF0ZSBtX2RlZmVycmVkRWxlbWVudERp
ZEZvY3VzQXJndW1lbnRzIGFsdG9nZXRoZXIsIGluIGZhdm9yIG9mIG9ubHkgZGVmZXJyaW5nIGFj
dGlvbnMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIHBvc3QtbGF5b3V0IGVkaXRvciBzdGF0ZSBpbmZv
cm1hdGlvbi4KLSAgICAgICAgbV9kZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IHN0
ZDo6bWFrZV91bmlxdWU8RWxlbWVudERpZEZvY3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNB
cmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05v
ZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCB9KTsKKyAgICAgICAgbV9k
ZWZlcnJlZEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyA9IG1ha2VVbmlxdWU8RWxlbWVudERpZEZv
Y3VzQXJndW1lbnRzPihFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgeyBpbmZvcm1hdGlvbiwgdXNl
cklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1
c2VyRGF0YU9iamVjdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1OCw3ICsx
MjU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAogc3RkOjp1bmlxdWVfcHRyPFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRv
ckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIHBheW1l
bnRDb29yZGluYXRvclByb3h5LCBQS1BheW1lbnRSZXF1ZXN0ICpwYXltZW50UmVxdWVzdCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyPihwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QpOworICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1l
bnRDb29yZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdCk7CiB9CiAKIFVJVmlld0NvbnRyb2xs
ZXIgKldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCA4MzQzNDg4OWNkY2Yy
NDljMWMyNzkxYmQwN2JmZmZhMjAxY2Y0ODdkLi5hOTEyOTUzZWM5MWMyNzMzNjI2NzYzZGFmOWRh
MjZiMjQ5MzNjNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCkBAIC0xMDgsNyArMTA4LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VD
bGllbnRJbXBsKE5TVmlldyogdmlldywgV0tXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogUGFnZUNs
aWVudEltcGxDb2NvYSh3ZWJWaWV3KQogICAgICwgbV92aWV3KHZpZXcpCiAjaWYgVVNFKERJQ1RB
VElPTl9BTFRFUk5BVElWRVMpCi0gICAgLCBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcihz
dGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcj4oKSkKKyAgICAsIG1f
YWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyPigpKQogI2VuZGlmCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCmluZGV4IGI1
NDdkYzI3MmMyOWNlZjhhODRiMTYwZGVjMTlkYTgwYjMzODExYTIuLjM0YTY5YmJlMGJiMGQxNzZi
NTUxYmFmMmQ3YTM1YzFmYWFjMDM3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCkBAIC0xNTEs
NyArMTUxLDcgQEAgLSAoaWQpaW5pdFdpdGhXaW5kb3c6KE5TV2luZG93ICopd2luZG93IHdlYlZp
ZXc6KE5TVmlldyAqKXdlYlZpZXcgcGFnZTooV2ViS2l0OjoKICAgICBfd2ViVmlldyA9IHdlYlZp
ZXc7CiAgICAgX3BhZ2UgPSAmcGFnZTsKIAotICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVv
RnVsbHNjcmVlbk1vZGVsQ2xpZW50PigpOworICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQgPSBt
YWtlVW5pcXVlPFdlYktpdDo6V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNj
cmVlbk1vZGVsQ2xpZW50PigpOwogICAgIF92aWRlb0Z1bGxzY3JlZW5DbGllbnQtPnNldFBhcmVu
dChzZWxmKTsKIAogICAgIFtzZWxmIHZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmlu
ZGV4IDlkNDVkMjEwMTEwZGE5OTMwMWJjMjAwZWUzNTNhZmM5ZWVkNTVkYTEuLjY5ZDlkOWUyZDQ0
NDg0M2QxNTI3MGY1MTE3Zjc3NGNkMjM3ZDVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQpAQCAtMTY5LDggKzE2OSw4IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFBhZ2U6KFdlYktpdDo6V2ViUGFnZVByb3h5JilwYWdlIHZp
ZXc6KE5TVmlldyAqKXZpZXcgdXNlCiAgICAgX3ZpZXcgPSB2aWV3OwogICAgIF91c2VQbGF0Zm9y
bUZpbmRVSSA9IHVzZVBsYXRmb3JtRmluZFVJOwogICAgIAotICAgIF9wYWdlLT5zZXRGaW5kTWF0
Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+
KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RmluZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZE1hdGNo
ZXNDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJGaW5kQ2xpZW50PihzZWxmKSk7
CisgICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OlRleHRGaW5kZXJG
aW5kQ2xpZW50PihzZWxmKSk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAK
aW5kZXggZWQwZDVmZmU5NTg5Zjk1ZTQ0YTA3ZjIyMThlZDgyYzAwZjAxN2Q3ZS4uZTc0YWRhYzFl
NjVlYmU1Yzk5YjMxZDkwNjdhZTYxMTU4ZjM5ODdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTE0
Myw3ICsxNDMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6ZGlkQ2xvc2UoQ29ubmVj
dGlvbklEKQogdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QoQ29ubmVjdGlvbklE
IGNvbm5lY3Rpb25JRCwgVGFyZ2V0SUQgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsK
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1faW5zcGVjdG9yUHJveHlNYXAuZW5zdXJlKHN0ZDo6bWFr
ZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpLCBbdGhpcywgY29ubmVjdGlvbklELCB0YXJn
ZXRJRCwgJnR5cGVdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5z
cGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCB0eXBlKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0
aW9uSUQsIHRhcmdldElELCB0eXBlKTsKICAgICB9KTsKIAogICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3RW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMWI2ZDlj
YzU0ZmM2MGI1M2U0NDAyNzFmMjMwOGU3YzBmNDdjODc0Yy4uYTg4MzNmNjI0ODdmOWE2NzIxMDM5
OWVjOWY4ZmY1ZTA5MjcxMmVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
c29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAK
QEAgLTg0LDExICs4NCwxMSBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
cGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8qIGNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50cy5lbnN1cmUocmVxdWVz
dFVSTC5ob3N0QW5kUG9ydCgpLCBbdGhpcywgJnJlcXVlc3RVUkxdIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3Qo
KS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CisgICAg
ICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5o
b3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwog
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIAogICAgIC8vIFNldHVwIHRhcmdldCBwb3N0
TWVzc2FnZSBsaXN0ZW5lcgotICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5k
bGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyks
ICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAg
IGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1
ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250
ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogICAgIHBhZ2VQcm94eS5wYWdlR3JvdXAoKS51c2Vy
Q29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5n
ZXQoKSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGh0bWxCdWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3QyRC5jcHAKaW5kZXggYjY3
ZDczYTRkYzQ4OGIzMWZkYzlhNDcyMTk2OTE0MDQyNzQ0ODgyNS4uNWQ1MGFlNTU0NjgwYTZlOWUz
ZGEyY2U4NGJlNTY0ZDVjMzIzN2Y3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL0JhY2tpbmdTdG9yZURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8QmFja2luZ1N0b3JlQmFja2Vu
ZERpcmVjdDJEPiBCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQoKQogewotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmREaXJlY3QyREltcGw+KG1fc2l6ZSwg
bV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3Jl
QmFja2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAog
dm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KElEMkQxUmVuZGVyVGFyZ2V0KiByZW5kZXJUYXJnZXQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1Bh
Z2VDbGllbnRJbXBsLmNwcAppbmRleCBjZDZmMDhmZjE4YmQ1NWMxNTU0NDYzZDRhNDBiNTFlNDVi
MmVhYjlmLi4wMzA3YzRmOWYxNDNmODZkYzYyMDhiNDg0YmU4ZGI0MjJkYzBmNDE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKFdlYlZpZXcmIHZpZXcpCiAv
LyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVfcHRyPERy
YXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxE
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKm1fdmlldy5wYWdlKCksIHByb2Nl
c3MpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzPigqbV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudElt
cGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggY2Q1MzUyZGY3YWEwNGU2
OWQ5YjBmOThlZDAwMWU1YzYzMzJmNzU5My4uNjdlNWU0YjI3YTNhZTgwYWI2NjhmNmMzNDE3YzBm
MGNlNmI3ZjA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApAQCAt
MjE4LDcgKzIxOCw3IEBAIGJvb2wgV2ViVmlldzo6cmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3Mo
KQogfQogCiBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQYWdlQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYXJlbnRXaW5kb3cpCi0gICAgOiBtX3BhZ2VD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50SW1wbD4oKnRoaXMpKQorICAgIDogbV9w
YWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKIHsKICAgICByZWdp
c3RlcldlYlZpZXdXaW5kb3dDbGFzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCA0ZjgxMGNjZjM4
ZWNmYTJjOTllY2JkYTg5ZDA0MWNlYjhkMjMzM2I4Li5hYWIzNDU3Y2VkNjRhNWE5MTBjZGM1NjJh
Y2MwMTE1MDBkM2M2Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2Ft
ZXBhZC9XZWJHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBX
ZWJHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxHYW1lcGFkcyhjb25zdCBWZWN0b3I8R2FtZXBh
ZERhdGE+JiBnYW1lcGFkRGEKICAgICAgICAgaWYgKGdhbWVwYWREYXRhc1tpXS5pc051bGwoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1fZ2FtZXBhZHNbaV0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7CisgICAgICAgIG1fZ2FtZXBh
ZHNbaV0gPSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhc1tpXSk7CiAgICAgICAg
IG1fcmF3R2FtZXBhZHNbaV0gPSBtX2dhbWVwYWRzW2ldLmdldCgpOwogICAgIH0KIH0KQEAgLTc2
LDcgKzc2LDcgQEAgdm9pZCBXZWJHYW1lcGFkUHJvdmlkZXI6OmdhbWVwYWRDb25uZWN0ZWQoY29u
c3QgR2FtZXBhZERhdGEmIGdhbWVwYWREYXRhKQogCiAgICAgQVNTRVJUKCFtX2dhbWVwYWRzW2dh
bWVwYWREYXRhLmluZGV4KCldKTsKIAotICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgo
KV0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhKTsKKyAgICBtX2dh
bWVwYWRzW2dhbWVwYWREYXRhLmluZGV4KCldID0gbWFrZVVuaXF1ZTxXZWJHYW1lcGFkPihnYW1l
cGFkRGF0YSk7CiAgICAgbV9yYXdHYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IG1fZ2Ft
ZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0uZ2V0KCk7CiAKICAgICBmb3IgKGF1dG8qIGNsaWVu
dCA6IG1fY2xpZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGYzZWM3MjA4N2NhMjg4Njdm
NTRkOWRmMGY1MGQ4NzEwMmUwMTZmYTIuLmNhODVkNTg1ZGNmMWI3NmVmMGI4ZDExZDU5YWQ2NjA0
YWMzZjE4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXS1R5cGVJ
RCBXS0J1bmRsZUdldFR5cGVJRCgpCiAKIHZvaWQgV0tCdW5kbGVTZXRDbGllbnQoV0tCdW5kbGVS
ZWYgYnVuZGxlUmVmLCBXS0J1bmRsZUNsaWVudEJhc2UgKndrQ2xpZW50KQogewotICAgIFdlYktp
dDo6dG9JbXBsKGJ1bmRsZVJlZiktPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYnVu
ZGxlUmVmKS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVu
dD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVNldFNlcnZpY2VXb3JrZXJQcm94eUNy
ZWF0aW9uQ2FsbGJhY2soV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCB2b2lkICgqY2FsbGJhY2spKHVp
bnQ2NF90KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggZjEyYTViYTc3NGQ2Y2M2
OGQwODRmMWY2MDIxY2ViZjM4MWFhM2E1OC4uZGMwNzU4YWQ3NWFmMzYxZGZiZTgxNmViMTEzZjQx
YzdmMDlkODFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTc3LDcgKzc3LDcg
QEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkKIHZvaWQgV0tCdW5kbGVQYWdlU2V0
Q29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4
dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYp
LT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTSh3a0NsaWVudCk7CkBA
IC04NiwyMiArODYsMjIgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGUKIAogdm9pZCBXS0J1bmRs
ZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFn
ZUVkaXRvckNsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VS
ZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0NsaWVudCA/IHN0ZDo6bWFrZV91
bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ+KCp3a0NsaWVudCkg
OiBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudD4oKSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KHdrQ2xpZW50ID8gbWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudD4oKndrQ2xpZW50KSA6IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRp
dG9yQ2xpZW50PigpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRm9ybUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVu
dD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRC
dW5kbGVGb3JtQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3Jt
Q2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBhZ2VMb2FkZXJD
bGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJh
c2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChw
YWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KG1ha2VVbmlxdWU8V2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tCdW5kbGVQYWdlU2V0UmVzb3VyY2VMb2FkQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS0J1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAg
ICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVJlc291cmNl
TG9hZENsaWVudD4od2tDbGllbnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+c2V0
SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBX
S0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVu
ZGxlUGFnZVBvbGljeUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTExLDcgKzExMSw3IEBAIHZv
aWQgV0tCdW5kbGVQYWdlU2V0UG9saWN5Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZVBhZ2VQb2xpY3lDbGllCiAKIHZvaWQgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3
a0NsaWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRs
ZVVJQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudD4o
d2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRGdWxsU2NyZWVuQ2xpZW50KFdL
QnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50QmFzZSog
d2tDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXgg
MzE0MzJmODk4ZmRiNGU5ZmNmYmM2Y2RiOGM4NGE5ZTU1MWUyODU2OS4uNjlmN2FmMjJiNTY3NTA0
ZDRmMzFmMGQ3YTcwYjg3NGUwOWZhNTVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlUGFnZU92
ZXJsYXlHZXRUeXBlSUQoKQogCiBXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92
ZXJsYXlDcmVhdGUoV0tCdW5kbGVQYWdlT3ZlcmxheUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewot
ICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJ
bXBsPih3a0NsaWVudCk7CisgICAgYXV0byBjbGllbnRJbXBsID0gbWFrZVVuaXF1ZTxQYWdlT3Zl
cmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsKICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6V2Vi
UGFnZU92ZXJsYXk6OmNyZWF0ZShXVEZNb3ZlKGNsaWVudEltcGwpKS5sZWFrUmVmKCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCmluZGV4
IGM2ODllODljZDBlMDY0MWJhOWI1N2Q5OGVkODNjMGZiNjRmNGI1ODguLmQ2ZmZkMWNjYzA0YTkz
YTdhMDlkMmIzNjU1OWE4ZjBjMDk1MGZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMv
V0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgV0tCdW5kbGVQYWdl
QmFubmVyUmVmIFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKENBTGF5
ZXIgKmxheWVyLAogICAgIGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvIGNsaWVudEltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNsaWVudElt
cGwgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUJhbm5lckNsaWVudEltcGw+KHdrQ2xpZW50KTsK
ICAgICByZXR1cm4gdG9BUEkoJldlYktpdDo6UGFnZUJhbm5lcjo6Y3JlYXRlKGxheWVyLCBoZWln
aHQsIGNsaWVudEltcGwucmVsZWFzZSgpKS5sZWFrUmVmKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvRE9NL0RPTU9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDc0ZWQ3YzRiMmZkZDk5N2UxZTVi
Y2MzMjYzMWFiNzY1OTQyNjY1ZDcuLjIyYjQwZTQzOWJiYjYwMTVlMThhYThjMjU1OGUwZTY5M2Y1
ZWIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwCkBA
IC03OCwxNCArNzgsNiBAQCBzdGF0aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyTWFwJiBk
b21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0
aWMgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyJiBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hl
RnJhbWVPYnNlcnZlcihXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCi17Ci0gICAgRE9NT2JqZWN0Q2Fj
aGVGcmFtZU9ic2VydmVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFt
ZU9ic2VydmVycygpLmFkZCgmZnJhbWUsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyPihmcmFtZSk7Ci0gICAgcmV0dXJuICpyZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOwotfQotCiBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIg
ZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTA3LDcgKzk5LDcgQEAgY2xhc3Mg
RE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmUKICAgICAgICAgaWYgKGRvbVdpbmRvdyAmJiAoIW1fZG9tV2luZG93
T2JzZXJ2ZXIgfHwgbV9kb21XaW5kb3dPYnNlcnZlci0+d2luZG93KCkgIT0gZG9tV2luZG93KSkg
ewogICAgICAgICAgICAgLy8gTmV3IERPTVdpbmRvdywgY2xlYXIgdGhlIGNhY2hlIGFuZCBjcmVh
dGUgYSBuZXcgRE9NV2luZG93T2JzZXJ2ZXIuCiAgICAgICAgICAgICBjbGVhcigpOwotICAgICAg
ICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93T2Jz
ZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlzKTsKKyAgICAgICAgICAgIG1fZG9tV2luZG93T2JzZXJ2
ZXIgPSBtYWtlVW5pcXVlPERPTVdpbmRvd09ic2VydmVyPigqZG9tV2luZG93LCAqdGhpcyk7CiAg
ICAgICAgIH0KIAogICAgICAgICBtX29iamVjdHMuYXBwZW5kKCZkYXRhKTsKQEAgLTE5Myw2ICsx
ODUsMTQgQEAgY2xhc3MgRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyIGZpbmFsOiBwdWJsaWMg
V2ViQ29yZTo6RnJhbWVEZXN0cnVjdGlvbk9ic2VydmUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RE9N
V2luZG93T2JzZXJ2ZXI+IG1fZG9tV2luZG93T2JzZXJ2ZXI7CiB9OwogCitzdGF0aWMgRE9NT2Jq
ZWN0Q2FjaGVGcmFtZU9ic2VydmVyJiBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJhbWVPYnNl
cnZlcihXZWJDb3JlOjpGcmFtZSYgZnJhbWUpCit7CisgICAgRE9NT2JqZWN0Q2FjaGVGcmFtZU9i
c2VydmVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gZG9tT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVy
cygpLmFkZCgmZnJhbWUsIG51bGxwdHIpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVG
cmFtZU9ic2VydmVyPihmcmFtZSk7CisgICAgcmV0dXJuICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OworfQorCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIHN0ZDo6dW5pcXVlX3B0cjxET01PYmplY3RD
YWNoZURhdGE+PiBET01PYmplY3RNYXA7CiAKIHN0YXRpYyBET01PYmplY3RNYXAmIGRvbU9iamVj
dHMoKQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dCh2b2lkKiBv
YmplY3RIYW5kbGUsIHZvaWQqIHdyYXBwZXIpCiB7CiAgICAgRE9NT2JqZWN0TWFwOjpBZGRSZXN1
bHQgcmVzdWx0ID0gZG9tT2JqZWN0cygpLmFkZChvYmplY3RIYW5kbGUsIG51bGxwdHIpOwogICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7
CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPERPTU9iamVjdENh
Y2hlRGF0YT4oR19PQkpFQ1Qod3JhcHBlcikpOwogfQogCiB2b2lkIERPTU9iamVjdENhY2hlOjpw
dXQoV2ViQ29yZTo6Tm9kZSogb2JqZWN0SGFuZGxlLCB2b2lkKiB3cmFwcGVyKQpAQCAtMjI2LDcg
KzIyNiw3IEBAIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RI
YW5kbGUsIHZvaWQqIHdyYXBwZXIpCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3
cmFwcGVyKSk7CiAgICAgaWYgKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IG9iamVjdEhhbmRsZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICBnZXRPckNyZWF0ZURPTU9iamVjdENhY2hlRnJh
bWVPYnNlcnZlcigqZnJhbWUpLmFkZE9iamVjdENhY2hlRGF0YSgqcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdl
ci5jcHAKaW5kZXggNGNjZWM2MmVmMGUxMTMxZmExM2Y3ZmIwNjBjODBlMDdlZTQyNTFhZi4uNGQ3
NDJlNDA5YmJmYzdjZmFiNDA4Y2Q2NTM4YWVmOWYyMjhmZDcyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lv
bk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBA
IHZvaWQgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6aW5pdGlhbGl6ZShJbmplY3RlZEJ1bmRsZSog
YnVuZGxlLCBBUEk6Ok9iamVjdCogdXNlCiAgICAgc2Nhbk1vZHVsZXMod2ViRXh0ZW5zaW9uc0Rp
cmVjdG9yeSwgbW9kdWxlUGF0aHMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1
bGVQYXRocy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvIG1vZHVsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8TW9kdWxlPihtb2R1bGVQYXRoc1tpXSk7CisgICAgICAgIGF1dG8gbW9kdWxlID0gbWFr
ZVVuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ldKTsKICAgICAgICAgaWYgKCFtb2R1bGUtPmxv
YWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZVdlYkV4
dGVuc2lvbihtb2R1bGUuZ2V0KCksIHVzZXJEYXRhLmdldCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFZGl0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkVkaXRvci5jcHAKaW5kZXggMDQwNzJlYjg2NGRiZTM1ZjgwZGZjODZhZDBlODgz
YzNlOTljZTQ0Zi4uY2NiNTFlMGQ5NjQwYzY2Zjg1OTZlNDc0MTcxNDA1OGU5MTM5NzY4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAg
V2ViS2l0V2ViRWRpdG9yKiB3ZWJraXRXZWJFZGl0b3JDcmVhdGUoV2ViS2l0V2ViUGFnZSogd2Vi
UGFnZSkKIHsKICAgICBXZWJLaXRXZWJFZGl0b3IqIGVkaXRvciA9IFdFQktJVF9XRUJfRURJVE9S
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfRURJVE9SLCBudWxscHRyKSk7CiAgICAgZWRp
dG9yLT5wcml2LT53ZWJQYWdlID0gd2ViUGFnZTsKLSAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3
ZWJQYWdlKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlRWRpdG9yQ2xpZW50PihlZGl0b3IpKTsKKyAgICB3ZWJraXRXZWJQYWdlR2V0UGFnZSh3ZWJQ
YWdlKS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQobWFrZVVuaXF1ZTxQYWdlRWRpdG9y
Q2xpZW50PihlZGl0b3IpKTsKICAgICByZXR1cm4gZWRpdG9yOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4IDRhMjNiZjU2MDEwN2MzMWYxYTRk
ZTJjOTYxMjk5YTcwMTA4MTc1MDEuLmUzMDZlM2ZlZjI2MzFkNTQ2NjU1NzExNmU1ZTQ4N2QzNzFj
Nzg1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCkBA
IC0xOTYsNyArMTk2LDcgQEAgY2xhc3MgV2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW4KIFdlYktpdFdlYkV4dGVu
c2lvbiogd2Via2l0V2ViRXh0ZW5zaW9uQ3JlYXRlKEluamVjdGVkQnVuZGxlKiBidW5kbGUpCiB7
CiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24gPSBXRUJLSVRfV0VCX0VYVEVOU0lP
TihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0VYVEVOU0lPTiwgTlVMTCkpOwotICAgIGJ1
bmRsZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5k
bGVDbGllbnQ+KGV4dGVuc2lvbikpOworICAgIGJ1bmRsZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWU8
V2ViRXh0ZW5zaW9uSW5qZWN0ZWRCdW5kbGVDbGllbnQ+KGV4dGVuc2lvbikpOwogICAgIHJldHVy
biBleHRlbnNpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAppbmRl
eCBmYzVkOTVmZmM0OTE5NWZiNDI3ZDRjZGIwZmU1NWFiNTBkMzg1NTQwLi5jOTIwNGIyMzk4MWQ3
ZjE3YWQwNzNiOWVkNDEyYTg3NzY4NWNlN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdl
YlBhZ2UuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIFdlYktpdEZyYW1lKiB3ZWJraXRG
cmFtZUdldE9yQ3JlYXRlKFdlYkZyYW1lKiB3ZWJGcmFtZSkKICAgICBpZiAod3JhcHBlclB0cikK
ICAgICAgICAgcmV0dXJuIHdyYXBwZXJQdHItPndlYmtpdEZyYW1lKCk7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dEZyYW1lV3JhcHBlcj4gd3JhcHBlciA9IG1ha2VVbmlxdWU8V2ViS2l0RnJhbWVXcmFwcGVyPigq
d2ViRnJhbWUpOwogICAgIHdyYXBwZXJQdHIgPSB3cmFwcGVyLmdldCgpOwogICAgIHdlYkZyYW1l
TWFwKCkuc2V0KHdlYkZyYW1lLCBXVEZNb3ZlKHdyYXBwZXIpKTsKICAgICByZXR1cm4gd3JhcHBl
clB0ci0+d2Via2l0RnJhbWUoKTsKQEAgLTY3OSwxMSArNjc5LDExIEBAIFdlYktpdFdlYlBhZ2Uq
IHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKICAgICBXZWJLaXRXZWJQYWdl
KiBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfUEFH
RSwgTlVMTCkpOwogICAgIHBhZ2UtPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdlOwogCi0gICAgd2Vi
UGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVSZXNvdXJjZUxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxQYWdlUmVzb3VyY2VMb2FkQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUxvYWRlckNsaWVu
dD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKLSAgICB3
ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVVJ
Q2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUZvcm1DbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5z
ZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVlPFBhZ2VSZXNvdXJj
ZUxvYWRDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQobWFrZVVuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7CisgICAgd2Vi
UGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPFBhZ2VD
b250ZXh0TWVudUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxl
VUlDbGllbnQobWFrZVVuaXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5z
ZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxQYWdlRm9ybUNsaWVudD4ocGFn
ZSkpOwogCiAgICAgcmV0dXJuIHBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0
ZXJhdG9yLm1tCmluZGV4IDgxMDU1Y2U3ZmRlYmEzMThkYWIwNjgyNjM0YzZiZDg0YTM3ZmFlOGMu
LjA4NGYzMDA1ZDYxMDNkNGUyNTAzM2MyNTZjNzBjMGUwNjQwNDFjZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0
ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tCkBAIC00NSw3ICs0NSw3IEBAIC0gKGlkKWluaXRX
aXRoUmFuZ2U6KFdLRE9NUmFuZ2UgKilyYW5nZQogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIF90ZXh0SXRlcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
OlRleHRJdGVyYXRvcj4oV2ViS2l0Ojp0b1dlYkNvcmVSYW5nZShyYW5nZSkpOworICAgIF90ZXh0
SXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oV2ViS2l0Ojp0b1dl
YkNvcmVSYW5nZShyYW5nZSkpOwogICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW0KaW5kZXggNDg4MDBiYjMxNzkwNjVlNGU3MzI5MzA2OTA1NDY4MGU0
MzRhZjFmZi4uNDIwMjM5NmFiYWZhZjMwZDcxODlhZWI2ODUwOWVhMjcxNzFiOTc0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNTQ0LDcgKzU0NCw3IEBAIC0gKHZvaWQp
X3NldEZvcm1EZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVByaXZh
dGU+KWZvcm1EZWxlZ2F0CiAgICAgfTsKIAogICAgIGlmIChmb3JtRGVsZWdhdGUpCi0gICAgICAg
IF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxGb3Jt
Q2xpZW50PihzZWxmKSk7CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAgICAgICBfcGFn
ZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KG51bGxwdHIpOwogfQpAQCAtNjczLDcgKzY3
Myw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJ
bkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgfTsKIAogICAgIGlmIChlZGl0aW5n
RGVsZWdhdGUpCi0gICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPENsaWVudD4oc2VsZikpOworICAgICAgICBfcGFnZS0+c2V0SW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQobWFrZVVuaXF1ZTxDbGllbnQ+KHNlbGYpKTsKICAgICBlbHNl
CiAgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChudWxscHRyKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGIwZGNiOTAwMGJlOTE1MjhjN2MwNzFmNjZkN2U4
YzMwMWNlOTVhNzYuLmU0NTUyNjE4MGMwMWJiZDM1YWU1MjVlODI1YmQ3ZDRhY2ZkZjlhODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIFJlZlB0cjxJbmplY3RlZEJ1
bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhCiBJbmplY3RlZEJ1bmRsZTo6SW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1fcGF0aChwYXJhbWV0ZXJzLmlu
amVjdGVkQnVuZGxlUGF0aCkKICAgICAsIG1fcGxhdGZvcm1CdW5kbGUoMCkKLSAgICAsIG1fY2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpKQorICAg
ICwgbV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCiB7
CiB9CiAKQEAgLTExNSw3ICsxMTUsNyBAQCBJbmplY3RlZEJ1bmRsZTo6fkluamVjdGVkQnVuZGxl
KCkKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6Q2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkKLSAg
ICAgICAgbV9jbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkNs
aWVudD4oKTsKKyAgICAgICAgbV9jbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OkNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGll
bnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmNwcAppbmRleCA3MzM1Mjc2NTg3MWQ4MjU1YTIzZGI3YjU1ZTZkNDRlZTcz
MzkyMmQ3Li4yZTU3YWYyNDgzYmQzNmIzZGQ4NWU0ZWMxOGRkZTEwZjQ0MzZlODZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVs
LmNwcApAQCAtMTMyLDM4ICsxMzIsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpzZW5kTWVzc2FnZShUJiYgbWVzc2FnZSwgc2l6ZV90IGJ5dGUKICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi1XZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5u
ZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGF1dG8gYnl0ZUxlbmd0aCA9
IG1lc3NhZ2Uuc2l6ZUluQnl0ZXMoKTsKLSAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQo
Ynl0ZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBTZW5kRmFpbDsKLQotICAgIGlmIChtX3BlbmRp
bmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3
b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IG1lc3NhZ2UgfSwgYnl0ZUxlbmd0aCk7Ci0g
ICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nTWVzc2FnZT4obWVzc2FnZSkpOwotCi0gICAgcmV0dXJuIFNlbmRTdWNjZXNzOwot
fQotCi1XZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQo
Y29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKLXsKLSAgICBpZiAoIWluY3JlYXNlQnVmZmVyZWRBbW91bnQo
Ynl0ZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBTZW5kRmFpbDsKLQotICAgIGlmIChtX3BlbmRp
bmdNZXNzYWdlcy5pc0VtcHR5KCkpCi0gICAgICAgIHNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3
b3JrU29ja2V0Q2hhbm5lbDo6U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0
ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9wZW5kaW5nTWVz
c2FnZXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ01lc3NhZ2U+KGJpbmFyeURhdGEs
IGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKLQotICAgIHJldHVybiBTZW5kU3VjY2VzczsKLX0K
LQogY2xhc3MgQmxvYkxvYWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBC
bG9iTG9hZGVyKFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6QmxvYiYgYmxv
YiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAg
ICA6IG1fbG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcj4o
V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpKQorICAg
ICAgICA6IG1fbG9hZGVyKG1ha2VVbmlxdWU8V2ViQ29yZTo6RmlsZVJlYWRlckxvYWRlcj4oV2Vi
Q29yZTo6RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpKQogICAgICAg
ICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAg
ewogICAgICAgICBtX2xvYWRlci0+c3RhcnQoZG9jdW1lbnQsIGJsb2IpOwpAQCAtMjI2LDcgKzE5
OSw3IEBAIGNsYXNzIFBlbmRpbmdNZXNzYWdlIHsKIAogICAgIFBlbmRpbmdNZXNzYWdlKFdlYkNv
cmU6OkRvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6QmxvYiYgYmxvYiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICA6IG1fdHlwZShUeXBl
OjpCbG9iKQotICAgICAgICAsIG1fYmxvYkxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPEJsb2JMb2Fk
ZXI+KGRvY3VtZW50LCBibG9iLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpCisgICAgICAg
ICwgbV9ibG9iTG9hZGVyKG1ha2VVbmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJsb2IsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSkKICAgICB7CiAgICAgfQogCkBAIC0yNDQsMTMgKzIx
Nyw0MCBAQCBjbGFzcyBQZW5kaW5nTWVzc2FnZSB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JM
b2FkZXI+IG1fYmxvYkxvYWRlcjsKIH07CiAKK1dlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgYXV0
byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOworICAgIGlmICghaW5jcmVhc2VC
dWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIFNlbmRGYWlsOworCisg
ICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgc2VuZE1lc3NhZ2Uo
TWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgbWVzc2FnZSB9LCBi
eXRlTGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZCht
YWtlVW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdlKSk7CisKKyAgICByZXR1cm4gU2VuZFN1
Y2Nlc3M7Cit9CisKK1dlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlEYXRhLCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQoreworICAgIGlmICghaW5jcmVhc2VCdWZmZXJl
ZEFtb3VudChieXRlTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIFNlbmRGYWlsOworCisgICAgaWYg
KG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgc2VuZE1lc3NhZ2UoTWVzc2Fn
ZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zm
c2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBtX3Bl
bmRpbmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4oYmluYXJ5RGF0
YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOworCisgICAgcmV0dXJuIFNlbmRTdWNjZXNzOwor
fQorCiBXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQo
V2ViQ29yZTo6QmxvYiYgYmxvYikKIHsKICAgICAvLyBBdm9pZCB0aGUgQmxvYiBxdWV1ZSBhbmQg
bG9hZGluZyBmb3IgZW1wdHkgYmxvYnMuCiAgICAgaWYgKCFibG9iLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIHNlbmQoSlNDOjpBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJsb2Iuc2l6ZSgpLCAxKSwgMCwg
MCk7CiAKLSAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5k
aW5nTWVzc2FnZT4obV9kb2N1bWVudC5nZXQoKSwgYmxvYiwgW3RoaXNdIHsKKyAgICBtX3BlbmRp
bmdNZXNzYWdlcy5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nTWVzc2FnZT4obV9kb2N1bWVudC5n
ZXQoKSwgYmxvYiwgW3RoaXNdIHsKICAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdNZXNzYWdlcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1lc3NhZ2UgPSBtX3BlbmRpbmdNZXNzYWdl
cy5maXJzdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCA3MjliMjQ1ZDlkOWRk
N2U4ZmIzNjhlMWY0M2EzNjRhY2YwZjY2ODhiLi4zZDg5ZGQ3ZGU1MzQ2MWM0YjNhNjdmNDMxNWIw
MmQ1MDY0YTllMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgY2xhc3MgQXN5bmNSZXNvbHZlckZhY3RvcnkgOiBwdWJsaWMgd2VicnRjOjpBc3luY1Jlc29s
dmVyRmFjdG9yeSB7CiAKIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlPiBMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24od2VicnRj
OjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiBvYnNlcnZlciwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0
b3J5KiBzb2NrZXRGYWN0b3J5LCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVEND
b25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGli
V2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCAqc29ja2V0RmFjdG9y
eSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Jlc29sdmVy
RmFjdG9yeT4oKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVh
dGVQZWVyQ29ubmVjdGlvbihvYnNlcnZlciwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubGliV2Vi
UlRDTmV0d29yaygpLm1vbml0b3IoKSwgKnNvY2tldEZhY3RvcnksIFdURk1vdmUoY29uZmlndXJh
dGlvbiksIG1ha2VVbmlxdWU8QXN5bmNSZXNvbHZlckZhY3Rvcnk+KCkpOwogfQogCiB2b2lkIExp
YldlYlJUQ1Byb3ZpZGVyOjpkaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMoKQpAQCAtMTA0
LDcgKzEwNCw3IEBAIGNsYXNzIFJUQ1NvY2tldEZhY3RvcnkgZmluYWwgOiBwdWJsaWMgcnRjOjpQ
YWNrZXRTb2NrZXRGYWN0b3J5IHsKIAogc3RkOjp1bmlxdWVfcHRyPHJ0Yzo6UGFja2V0U29ja2V0
RmFjdG9yeT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVNvY2tldEZhY3RvcnkoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBTdHJpbmcmJiB1c2VyQWdlbnQpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UlRDU29ja2V0RmFjdG9yeT4oc2Vzc2lvbklELCBXVEZNb3ZlKHVzZXJBZ2Vu
dCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJUQ1NvY2tldEZhY3Rvcnk+KHNlc3Npb25JRCwg
V1RGTW92ZSh1c2VyQWdlbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29j
a2V0RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKaW5kZXggZjhiN2VkMjI5YzRmNmYyZGMwMzYxMzJj
Yzk2ZTQxMWVlY2E1NzAyZS4uMjM1ODJkZTc1OWI5ODQ1ZWI3ZmU0MDY0NDM2NWVmYmMxOWI3NWQx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcApAQCAtNTAsNyArNTAsNyBA
QCBzdGF0aWMgaW5saW5lIHJ0Yzo6U29ja2V0QWRkcmVzcyBwcmVwYXJlU29ja2V0QWRkcmVzcyhj
b25zdCBydGM6OlNvY2tldEFkZHJlc3MmCiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldl
YlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldChjb25zdCBydGM6OlNvY2tl
dEFkZHJlc3MmIGFkZHJlc3MsIHVpbnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQsIGlu
dCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29j
a2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKKyAg
ICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3Vu
aXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyVENQLCBh
ZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CiAgICAgbV9zb2NrZXRzLnNldChzb2NrZXQt
PmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2lk
ZW50aWZpZXIgPSBzb2NrZXQtPmlkZW50aWZpZXIoKSwgYWRkcmVzcyA9IHByZXBhcmVTb2NrZXRB
ZGRyZXNzKGFkZHJlc3MsIG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zKSwgbWluUG9y
dCwgbWF4UG9ydCwgb3B0aW9uc10oKSB7CkBAIC02Niw3ICs2Niw3IEBAIHJ0Yzo6QXN5bmNQYWNr
ZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmNyZWF0ZVNlcnZlclRjcFNvY2tldChj
b25zdCBydGM6CiAKIHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQqIExpYldlYlJUQ1NvY2tldEZhY3Rv
cnk6OmNyZWF0ZVVkcFNvY2tldChjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIGFkZHJlc3MsIHVp
bnQxNl90IG1pblBvcnQsIHVpbnQxNl90IG1heFBvcnQpCiB7Ci0gICAgYXV0byBzb2NrZXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJ
ZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRjOjpTb2Nr
ZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2Nr
ZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpU
eXBlOjpVRFAsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygpKTsKICAgICBtX3NvY2tldHMu
c2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCiAgICAgY2FsbE9uTWFp
blRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigpLCBhZGRyZXNzID0gcHJl
cGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlv
bnMpLCBtaW5Qb3J0LCBtYXhQb3J0XSgpIHsKQEAgLTgwLDcgKzgwLDcgQEAgcnRjOjpBc3luY1Bh
Y2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNvbnN0
IHJ0Yzo6U29ja2UKIAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFj
dG9yeTo6Y3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgbG9j
YWxBZGRyZXNzLCBjb25zdCBydGM6OlNvY2tldEFkZHJlc3MmIHJlbW90ZUFkZHJlc3MsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nJiYgdXNlckFnZW50LCBpbnQgb3B0aW9ucykKIHsK
LSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29ja2V0PigqdGhp
cywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6VHlwZTo6Q2xp
ZW50VENQLCBsb2NhbEFkZHJlc3MsIHJlbW90ZUFkZHJlc3MpOworICAgIGF1dG8gc29ja2V0ID0g
bWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRp
ZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywgcmVt
b3RlQWRkcmVzcyk7CiAgICAgc29ja2V0LT5zZXRTdGF0ZShMaWJXZWJSVENTb2NrZXQ6OlNUQVRF
X0NPTk5FQ1RJTkcpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNv
Y2tldC5nZXQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCog
TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0YzoK
IAogcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRl
TmV3Q29ubmVjdGlvblNvY2tldChMaWJXZWJSVENTb2NrZXQmIHNlcnZlclNvY2tldCwgdWludDY0
X3QgbmV3Q29ubmVjdGlvblNvY2tldElkZW50aWZpZXIsIGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVz
cyYgcmVtb3RlQWRkcmVzcykKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldl
YlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0LmxvY2Fs
QWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKKyAgICBhdXRvIHNvY2tldCA9IG1ha2VVbmlxdWU8
TGliV2ViUlRDU29ja2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldl
YlJUQ1NvY2tldDo6VHlwZTo6U2VydmVyQ29ubmVjdGlvblRDUCwgc2VydmVyU29ja2V0LmxvY2Fs
QWRkcmVzcygpLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNldFN0YXRlKExpYldlYlJU
Q1NvY2tldDo6U1RBVEVfQ09OTkVDVEVEKTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRl
bnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5OjpkZXRhY2goTGliV2ViUlRDU29ja2V0JiBzb2NrZXQpCiAKIHJ0
Yzo6QXN5bmNSZXNvbHZlckludGVyZmFjZSogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRl
QXN5bmNSZXNvbHZlcigpCiB7Ci0gICAgYXV0byByZXNvbHZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOworICAgIGF1
dG8gcmVzb2x2ZXIgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1Jlc29sdmVyPigrK3NfdW5pcXVlUmVz
b2x2ZXJJZGVudGlmaWVyKTsKICAgICBhdXRvKiByZXNvbHZlclBvaW50ZXIgPSByZXNvbHZlci5n
ZXQoKTsKICAgICBtX3Jlc29sdmVycy5zZXQocmVzb2x2ZXJQb2ludGVyLT5pZGVudGlmaWVyKCks
IFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4gcmVzb2x2ZXJQb2ludGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IDE2YTFhN2Y4MzQ0NjA1M2YzM2Q2NTRl
ODMzMzIyOTUwZWU5OTRkNzIuLmQ3M2YxZjE2Zjg5MDc2OWM3MmNjOWRkNDQwZDIyOTIxZmY1ZmZh
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgewogICAgIGV4cGxpY2l0IFBsdWdp
bkRlc3RydWN0aW9uUHJvdGVjdG9yKE5ldHNjYXBlUGx1Z2luKiBwbHVnaW4pCiAgICAgewogICAg
ICAgICBpZiAocGx1Z2luKQotICAgICAgICAgICAgbV9wcm90ZWN0b3IgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yPihzdGF0aWNf
Y2FzdDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpOworICAgICAgICAgICAgbV9wcm90
ZWN0b3IgPSBtYWtlVW5pcXVlPFBsdWdpbkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJv
dGVjdG9yPihzdGF0aWNfY2FzdDxQbHVnaW4qPihwbHVnaW4pLT5jb250cm9sbGVyKCkpOwogICAg
IH0KICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggNjlhM2M5M2Yx
MzI2ZmE0YzZmN2ZlYmY4YWIxYjJjYTRjNzc2YmMwZS4uNTlmNDgyNTFmMjg4NTRjNmQxNjgwYjFk
NjRkZmFhNWE0N2M2ODEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMzUwLDcgKzM1
MCw3IEBAIHVpbnQzMl90IE5ldHNjYXBlUGx1Z2luOjpzY2hlZHVsZVRpbWVyKHVuc2lnbmVkIGlu
dGVydmFsLCBib29sIHJlcGVhdCwgdm9pZCAoKnRpCiAgICAgLy8gRklYTUU6IEhhbmRsZSB3cmFw
cGluZyBhcm91bmQuCiAgICAgdW5zaWduZWQgdGltZXJJRCA9ICsrbV9uZXh0VGltZXJJRDsKIAot
ICAgIGF1dG8gdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPih0aGlzLCB0aW1lcklELCBp
bnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVl
PFRpbWVyPih0aGlzLCB0aW1lcklELCBpbnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogICAg
IAogICAgIC8vIEZJWE1FOiBCYXNlZCBvbiB0aGUgcGx1Zy1pbiB2aXNpYmlsaXR5LCBmaWd1cmUg
b3V0IGlmIHdlIHNob3VsZCB0aHJvdHRsZSB0aGUgdGltZXIsIG9yIGlmIHdlIHNob3VsZCBzdGFy
dCBpdCBhdCBhbGwuCiAgICAgdGltZXItPnN0YXJ0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
blN0cmVhbS5jcHAKaW5kZXggMDQ5NjI4ZjVjNjI3MDJlNGQ1ZDQxMTE4MjAxMjNiYTVmNGI5NjUy
NC4uYmRhYTE0NDc4NDIyNjk1ZDUwZWE4NDhhYWZjY2JjZTEyZDJhZDkyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAgICAgICAg
aWYgKCFtX2RlbGl2ZXJ5RGF0YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8dWludDhfdD4+KCk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0
YSA9IG1ha2VVbmlxdWU8VmVjdG9yPHVpbnQ4X3Q+PigpOwogCiAgICAgICAgIG1fZGVsaXZlcnlE
YXRhLT5yZXNlcnZlQ2FwYWNpdHkobV9kZWxpdmVyeURhdGEtPnNpemUoKSArIGxlbmd0aCk7CiAg
ICAgICAgIG1fZGVsaXZlcnlEYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQ
bHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAppbmRleCA0NGQxMWI1N2MzZWE2ZDUxOGMxOGQwNGI4
MjJkMjg2ZDUzZTk2OGNmLi4wN2Q1NTZjM2I3ZmM2MzcxOWMyYTI1NTllMGFhZDZjMjI2YzA3Y2E1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94
MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAgLTEzNiwxMCArMTM2
LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxOZXRzY2FwZVBsdWdpblgxMT4gTmV0c2NhcGVQbHVnaW5Y
MTE6OmNyZWF0ZShOZXRzY2FwZVBsdWdpbiYgcGx1CiAKICNpZiBQTEFURk9STShHVEspCiAgICAg
aWYgKHBsdWdpbi5pc1dpbmRvd2VkKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXksIHdpbmRvd0lEKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwgZGlzcGxheSwgd2lu
ZG93SUQpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBs
dWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXRzY2Fw
ZVBsdWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5KTsKIH0KIAogTmV0c2NhcGVQbHVnaW5YMTE6Ok5l
dHNjYXBlUGx1Z2luWDExKE5ldHNjYXBlUGx1Z2luJiBwbHVnaW4sIERpc3BsYXkqIGRpc3BsYXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAK
aW5kZXggZjM3YzJjYzI0ZTNkZDk3NjNmM2ViZGQ2MzJkOGJmZGI3NzE0NDM0Ny4uOWFiNTgzNzMw
Yjg5ZGJkOTYwMWQ2NTIwZWY4ZjliMGJlMDA2ZGM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtOTUsNyArOTUsNyBAQCBib29s
IFBsdWdpblByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAg
ICAgbV9jb25uZWN0aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlzKTsKIAogICAgIC8vIEFzayB0aGUg
cGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4uCi0gICAgbV9wZW5kaW5nUGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnM+KCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gbWFrZVVu
aXF1ZTxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+KCk7CiAKICAgICBtX3BlbmRpbmdQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMtPnBsdWdpbkluc3RhbmNlSUQgPSBtX3BsdWdpbkluc3RhbmNlSUQ7
CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT53aW5kb3dOUE9iamVjdElE
ID0gd2luZG93TlBPYmplY3RJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA3YWI4OTY2ZGI5MDVhZGQxMjM5NDgxNjUwYjE5ZGU0
YTdlN2QyMjNmLi4xMTlkMmI5MGMyYjQ0MjMxZjI1Njk1N2U2MmRkY2E4ZjEzMGZjNzMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAt
ODk4LDcgKzg5OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJFdmVudD4gUGx1Z2luVmlldzo6Y3Jl
YXRlV2ViRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpIGNvbnN0CiAgICAgaWYgKGV2ZW50Lm1ldGFL
ZXkoKSkKICAgICAgICAgbW9kaWZpZXJzLmFkZChXZWJFdmVudDo6TW9kaWZpZXI6Ok1ldGFLZXkp
OwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0
dG9uLCBldmVudC5idXR0b25zKCksIG1fcGx1Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2lu
dChldmVudC5vZmZzZXRYKCksIGV2ZW50Lm9mZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlv
bigpLCAwLCAwLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTW91c2VFdmVudD4odHlwZSwgYnV0dG9uLCBldmVudC5i
dXR0b25zKCksIG1fcGx1Z2luLT5jb252ZXJ0VG9Sb290VmlldyhJbnRQb2ludChldmVudC5vZmZz
ZXRYKCksIGV2ZW50Lm9mZnNldFkoKSkpLCBldmVudC5zY3JlZW5Mb2NhdGlvbigpLCAwLCAwLCAw
LCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lIHsgfSwgMCk7CiB9CiAKIHZvaWQgUGx1
Z2luVmlldzo6aGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwCmluZGV4IDQ5ZDIwYzdjNDljMDJhYTk1OWFhNGFlNGQ5ZWVjOGZlODNjNWZl
N2MuLjE4OGFkYjA5NTkyZjkyMmExMDFmMmYzNzNlOTAzOTk2N2IxOWEyZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2
aWNlV29ya2VyQ29udAogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgbW92ZWQg
ZGlyZWN0bHkgdG8gV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbgogICAgIC8v
IElmIGl0IHdlcmVuJ3QgZm9yIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCdzIGRlcGVu
ZGVuY2Ugb24gV2ViRG9jdW1lbnRMb2FkZXIsIHRoaXMgY291bGQgYWxyZWFkeSBoYXBwZW4uCiAg
ICAgLy8gRklYTUU6IFdlaXJkIHRvIHBhc3MgbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCBhcyBh
IEZyYW1lSWRlbnRpZmllci4KLSAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9uSUQs
IG1fcGFnZUlELCBmcmFtZUlkZW50aWZpZXJGcm9tSUQoKyttX3ByZXZpb3VzU2VydmljZVdvcmtl
cklEKSwgZWZmZWN0aXZlVXNlckFnZW50KTsKKyAgICBhdXRvIGZyYW1lTG9hZGVyQ2xpZW50ID0g
bWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KCp0aGlzLCBzZXNzaW9u
SUQsIG1fcGFnZUlELCBmcmFtZUlkZW50aWZpZXJGcm9tSUQoKyttX3ByZXZpb3VzU2VydmljZVdv
cmtlcklEKSwgZWZmZWN0aXZlVXNlckFnZW50KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fk
ZXJDbGllbnRGb3JNYWluRnJhbWUgPSBmcmFtZUxvYWRlckNsaWVudC5nZXQoKTsKICAgICBtX2xv
YWRlcnMuYWRkKFdURk1vdmUoZnJhbWVMb2FkZXJDbGllbnQpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCBmY2QwOThlNDg0MGE1OGEyYjVhMjE5N2ViNTI5MWUwYTRmNDgyOWYyLi4wZTZi
OTQzZDE1OWM2MTIyYTliNDQ0ZmU2OGYwNTc1MDY5ZDExZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcApAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sCiAKIHN0ZDo6
dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9v
c2VyKENvbG9yQ2hvb3NlckNsaWVudCYgY2xpZW50LCBjb25zdCBDb2xvciYgaW5pdGlhbENvbG9y
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1fcGFn
ZSwgJmNsaWVudCwgaW5pdGlhbENvbG9yKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb2xv
ckNob29zZXI+KCZtX3BhZ2UsICZjbGllbnQsIGluaXRpYWxDb2xvcik7CiB9CiAKICNlbmRpZgpA
QCAtODAyLDcgKzgwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb2xvckNob29zZXI+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsCiAKIHN0ZDo6dW5pcXVl
X3B0cjxEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyKERhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQmIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXI+KCZtX3BhZ2UsICZjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA3Y2RhYWNkMWZjMWQ0NmQ2NWVhZGMzZjNhNjEzNGFh
MzU1OGEyZDExLi5kNjdiNjJjMDJlNjg4M2I0NDg2NWZiYTE1ODUxNmVhMGNiY2I1YzVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpzaG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICB9
CiAKICAgICBpZiAoIW1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCkKLSAgICAgICAgbV9wYWlu
dEluZGljYXRvckxheWVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBhaW50SW5kaWNhdG9y
TGF5ZXJDbGllbnQ+KCp0aGlzKTsKKyAgICAgICAgbV9wYWludEluZGljYXRvckxheWVyQ2xpZW50
ID0gbWFrZVVuaXF1ZTxSZXBhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQ+KCp0aGlzKTsKIAogICAg
IGF1dG8gcGFpbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShtX3BhZ2UtPmRyYXdpbmdB
cmVhKCktPmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICptX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGll
bnQpOwogICAgIApAQCAtMTYyLDkgKzE2Miw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojpz
aG93UGFpbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBwYWludExheWVyLT5zZXRC
YWNrZ3JvdW5kQ29sb3IoQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMC4yZikpOwogCiAgICAgS2V5
ZnJhbWVWYWx1ZUxpc3QgZmFkZUtleWZyYW1lcyhBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7Ci0g
ICAgZmFkZUtleWZyYW1lcy5pbnNlcnQoc3RkOjptYWtlX3VuaXF1ZTxGbG9hdEFuaW1hdGlvblZh
bHVlPigwLCAxKSk7CisgICAgZmFkZUtleWZyYW1lcy5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFu
aW1hdGlvblZhbHVlPigwLCAxKSk7CiAKLSAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAuMjUsIDApKTsKKyAgICBmYWRlS2V5ZnJh
bWVzLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAuMjUsIDApKTsKICAg
ICAKICAgICBhdXRvIG9wYWNpdHlBbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwogICAg
IG9wYWNpdHlBbmltYXRpb24tPnNldER1cmF0aW9uKDAuMjUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9h
cmRPdmVycmlkZXMuY3BwCmluZGV4IDc5MDA4NGNlNDhkMjI2YjEwZTY2NWI4Mjg0NDM0OWZkYWFm
ZmVlNDYuLjY5ZjBhZTgyNzk1MDdiNzI5NjVmNjVjMjE2ODczYzQ4MWFkZjRkNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJk
T3ZlcnJpZGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBXZWJQ
YXN0ZWJvYXJkT3ZlcnJpZGVzOjphZGRPdmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHIKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3ZlcnJpZGVzTWFwLmFkZChw
YXN0ZWJvYXJkTmFtZSwgbnVsbHB0cik7CiAKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkp
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhf
dD4+PiB0eXBlTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgVmVjdG9yPHVp
bnQ4X3Q+Pj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8dWludDhfdD4+PiB0eXBlTWFwID0gbWFrZVVuaXF1ZTxIYXNoTWFwPFN0cmluZywgVmVjdG9y
PHVpbnQ4X3Q+Pj4oKTsKICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1v
dmUodHlwZU1hcCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggOWNmZmNjOWE5
ZmQyYjY0NDQ5MjJmODU0YWQ5N2QxZDMzMWU3MGIwZS4uYjI0NTgxYzk3ZTdhODgxNmY0NmFmOTMx
OWE5MWVhMjFiNzJiZDY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtNTUwLDcgKzU1MCw3
IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKEdyYXBoaWNzTGF5CiAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKTsKICAgICB9IGVsc2UgewogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMYXllclRyZWVIb3N0PihtX3dlYlBhZ2UpOworICAgICAgICBtX2xheWVy
VHJlZUhvc3QgPSBtYWtlVW5pcXVlPExheWVyVHJlZUhvc3Q+KG1fd2ViUGFnZSk7CiAjZWxzZQog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXgg
YzA3Mzk2ZjAyZjFmYTY1ZjQ1YWNlZTcyZjEzNGY0ZmIyZDllODkwOS4uNTM1OGNkNjg2M2IzMjI2
OTU4ZWUyNzRlZmQwMzJhZDIwMDY0ZGQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIHN0ZDo6dW5p
cXVlX3B0cjxEcmF3aW5nQXJlYT4gRHJhd2luZ0FyZWE6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdl
LCBjb25zdCBXZWJQYWdlCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb246Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Pih3ZWJQYWdlLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VuZGlmCiAg
ICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWU6Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhPih3ZWJQYWdlLCBwYXJh
bWV0ZXJzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOwogI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKSB8fCBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgY2FzZSBEcmF3aW5nQXJlYVR5cGVDb29y
ZGluYXRlZEdyYXBoaWNzOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M+KHdlYlBhZ2Us
IHBhcmFtZXRlcnMpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDQ1MmY1M2JjZWRjMDA0N2Y3MzNkMWMzNGJj
ZDc2NTExOTJjYjhiZTYuLjQ2ZThhYTA5OTg2NDVhOGNlNWQyZDdiOTU3Zjk5YWZkYzM4ZjQ2ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBA
IC0yMjAsNyArMjIwLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tp
bmdTdG9yZSgpCiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCk7
CiAKICAgICBpZiAoIW1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUpCi0gICAgICAgIG1fcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlPih0aGlzKTsKKyAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IG1ha2VVbmlx
dWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOwogCiAgICAgdXBkYXRlQmFja2luZ1N0
b3JlKCk7CiB9CkBAIC01MjEsNyArNTIxLDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjp0cmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkK
IHsKLSAgICBtX3Byb3BlcnRpZXMudHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4odmFsdWUpOworICAgIG1fcHJvcGVydGllcy50cmFuc2Zvcm0gPSBtYWtl
VW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9wZXJ0aWVzLm5v
dGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VHJhbnNmb3Jt
Q2hhbmdlZCk7CiB9CiAKQEAgLTUzMiw3ICs1MzIsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKIAogdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB2YWx1ZSkKIHsKLSAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zv
cm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAg
bV9wcm9wZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD4odmFsdWUpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQo
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCk7CiB9
CiAKQEAgLTczOCw3ICs3MzgsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0T3Bh
Y2l0eShmbG9hdCB2YWx1ZSkKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEZpbHRl
cnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBtX3Byb3BlcnRpZXMu
ZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7Cisg
ICAgbV9wcm9wZXJ0aWVzLmZpbHRlcnMgPSBtYWtlVW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KGZp
bHRlcnMpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQoUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKTsKIH0KIApAQCAtODI2LDcgKzgyNiw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSCiAgICAgaWYgKG1fcHJvcGVydGllcy5zaGFwZVJv
dW5kZWRSZWN0ICYmICptX3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9PSByb3VuZGVkUmVj
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3Qg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICBt
X3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IG1ha2VVbmlxdWU8RmxvYXRSb3VuZGVkUmVj
dD4ocm91bmRlZFJlY3QpOwogICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQo
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlNoYXBlUm91bmRlZFJlY3RDaGFuZ2VkKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlVGlsZWRCYWNraW5nLmNwcAppbmRleCAxY2JkMWI0YmE3OWE3ZGY5Y2U1NWUwNDIxZDQ0ZTY1
YjQwODgyMWMyLi4wOTk1MzZiOTNjMDExYWMzZjJhMDczYzNjYTQ2NGYwNzI2NDY5Y2YxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
VGlsZWRCYWNraW5nLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nOjpQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKICAgICA6IFBsYXRm
b3JtQ0FMYXllclJlbW90ZShsYXllclR5cGUsIG93bmVyLCBjb250ZXh0KQotICAgICwgbV90aWxl
Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPih0aGlzKSkKKyAgICAs
IG1fdGlsZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxUaWxlQ29udHJvbGxlcj4odGhpcykpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbQppbmRleCA1ZTUwZTBiYTFlZjEyNDZjNmFlMDhmMjlkOTJhODMwZTBkYjRmMjM3Li40NDQ2
ZjM0ZDA0Y2NmYmZiZWIzNjliYTQ0YzMyMDZiZjBkZDIzZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC01OCw3ICs1OCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IERyYXdpbmdBcmVhKERy
YXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSwgcGFyYW1ldGVycy5kcmF3aW5nQXJlYUlkZW50
aWZpZXIsIHdlYlBhZ2UpCi0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUNvbnRleHQoc3RkOjptYWtl
X3VuaXF1ZTxSZW1vdGVMYXllclRyZWVDb250ZXh0Pih3ZWJQYWdlKSkKKyAgICAsIG1fcmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dChtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRleHQ+KHdlYlBh
Z2UpKQogICAgICwgbV9yb290TGF5ZXIoR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5
ZXJGYWN0b3J5KCksICp0aGlzKSkKICAgICAsIG1fbGF5ZXJGbHVzaFRpbWVyKCp0aGlzLCAmUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKQogewpAQCAtNDIzLDcgKzQyMyw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpXaWxsQ29tbWl0
TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpKSk7CiAKICAgICBNZXNz
YWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlIG1l
c3NhZ2UobGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwotICAgIGF1dG8g
Y29tbWl0RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8SVBDOjpFbmNvZGVyPihNZXNzYWdlczo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpyZWNlaXZl
ck5hbWUoKSwgTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1p
dExheWVyVHJlZTo6bmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgYXV0byBj
b21taXRFbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgp
LCBNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJU
cmVlOjpuYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICBjb21taXRFbmNvZGVy
LT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICAvLyBGSVhNRTogTW92ZSBhbGwg
YmFja2luZyBzdG9yZSBmbHVzaGluZyBtYW5hZ2VtZW50IHRvIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlQ29sbGVjdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAppbmRleCBmMGViZmVkYmIyZTk1M2FkMGZjMDdmOWY4MTY2MDlkYjk3MzViNjY1Li41
Mjk2NWZlNGM1YmIzNWM0OWFkYTA3MDAzYjMzNzE0MzZiNzI1NTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAg
UmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSog
cGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIAogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRl
U3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewotICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUo
c3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7CisgICAgYXV0byBmcmFt
ZSA9IGNyZWF0ZShtYWtlVW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKICAgICBwYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5m
cmFtZUlEKCkpKTsKIAogICAgIGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5j
b3JlUGFnZSgpLCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MDFmZjFhNGY0NTdlNTM5MzU2MTQzMjRhMDk0ODg0MDNhNzUwNTVhMS4uOWUyMGYwYWNiMjBjMmMz
ZmUwYTg2ZWEzZWI4ZjA5YjlhNTNkMjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4MywyMSArMzgzLDIxIEBAIFdlYlBhZ2U6OldlYlBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICAsIG1fdGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5KG1ha2VVbmlxdWVS
ZWY8VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5PigqdGhpcykpCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQotICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yKHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4o
KnRoaXMpKQorICAgICwgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yKG1ha2VVbmlxdWU8
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcj4oKnRoaXMpKQogI2VsaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFkpICYmIFBMQVRGT1JNKEdUSykKICAgICAsIG1fYWNjZXNzaWJpbGl0eU9iamVjdChu
dWxscHRyKQogI2VuZGlmCiAgICAgLCBtX3NldENhblN0YXJ0TWVkaWFUaW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZXZWJQYWdlOjpzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCkKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICAsIG1fY29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCisg
ICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UGFnZUNvbnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlmCi0gICAgLCBtX2VkaXRvckNsaWVudCB7
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0K
LSAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OkZvcm1DbGllbnQ+KCkpCi0gICAgLCBtX2xvYWRlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQ
STo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCkpCi0gICAgLCBtX3Jlc291cmNl
TG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNl
TG9hZENsaWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCisgICAgLCBtX2VkaXRvckNsaWVudCB7IG1h
a2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpIH0KKyAgICAsIG1f
Zm9ybUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCkp
CisgICAgLCBtX2xvYWRlckNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBh
Z2VMb2FkZXJDbGllbnQ+KCkpCisgICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChtYWtlVW5pcXVl
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4oKSkKKyAgICAsIG1fdWlD
bGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCkpCiAg
ICAgLCBtX2ZpbmRDb250cm9sbGVyKG1ha2VVbmlxdWVSZWY8RmluZENvbnRyb2xsZXI+KHRoaXMp
KQotICAgICwgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2Vi
UGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1faW5zcGVjdG9y
VGFyZ2V0Q29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9s
bGVyPigqdGhpcykpCiAgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVy
SUQpKQogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIobWFrZVVuaXF1ZVJlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcj4oKnRoaXMpKQpAQCAtNDY0LDIxICs0NjQsMjEgQEAgV2ViUGFnZTo6V2ViUGFn
ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBsdWdJbkNsaWVudCA9IG5ldyBXZWJQbHVn
SW5DbGllbnQoKnRoaXMpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1h
aW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KCp0
aGlzKTsKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKLSAgICBw
YWdlQ29uZmlndXJhdGlvbi5wZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1
cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNl
TG9nZ2luZ0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50Pigq
dGhpcyk7CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24ud2ViR0xT
dGF0ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMU3RhdGVUcmFja2VyPihbdGhpc10o
Ym9vbCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpIHsKKyAgICBwYWdlQ29uZmlndXJhdGlv
bi53ZWJHTFN0YXRlVHJhY2tlciA9IG1ha2VVbmlxdWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlz
XShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkgewogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNldElzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTChpc1VzaW5n
SGlnaFBlcmZvcm1hbmNlV2ViR0wpKTsKICAgICB9KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNQ
RUVDSF9TWU5USEVTSVMpCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uc3BlZWNoU3ludGhlc2lzQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQ+KCp0aGlzKTsK
KyAgICBwYWdlQ29uZmlndXJhdGlvbi5zcGVlY2hTeW50aGVzaXNDbGllbnQgPSBtYWtlVW5pcXVl
PFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlzKTsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8
V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+KCp0aGlzKTsKICNlbmRpZgogCiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSAmV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKTsKQEAgLTQ5MywxNCArNDkzLDE0IEBAIFdl
YlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKLSAg
ICBwYWdlQ29uZmlndXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oKnRoaXMpOworICAgIHBh
Z2VDb25maWd1cmF0aW9uLmF1dGhlbnRpY2F0b3JDb29yZGluYXRvckNsaWVudCA9IG1ha2VVbmlx
dWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yPigqdGhpcyk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNh
dGlvbk1hbmlmZXN0ID0gcGFyYW1ldGVycy5hcHBsaWNhdGlvbk1hbmlmZXN0OwogI2VuZGlmCiAK
LSAgICBtX3BhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24pKTsKKyAgICBtX3BhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24pKTsKIAogICAgIC8vIFNldCB0aGUgc2Vzc2lvbklEICpiZWZvcmUqIHVwZGF0aW5n
IHRoZSBwcmVmZXJlbmNlcyBhcyB0aGUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBwcmVmZXJlbmNl
cyBtYXkgbmVlZCB0byBvdmVycmlkZSBpdC4KICAgICBpZiAocGFyYW1ldGVycy5zZXNzaW9uSUQu
aXNWYWxpZCgpKQpAQCAtODUzLDcgKzg1Myw3IEBAIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5k
bGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6
UGFnZUNvbnRleHRNZW51Q2xpZW50PiYmIGNvbnRleHRNZW51Q2xpZW50KQogewogICAgIGlmICgh
Y29udGV4dE1lbnVDbGllbnQpIHsKLSAgICAgICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50Pigp
OworICAgICAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlQ29u
dGV4dE1lbnVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdQogdm9pZCBXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCkKIHsKICAgICBpZiAo
IWVkaXRvckNsaWVudCkgewotICAgICAgICBtX2VkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpOworICAgICAgICBtX2VkaXRv
ckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50Pigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJ
bmplY3RlZEJ1bmRsZToKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PiYmIGZvcm1D
bGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xpZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKKyAg
ICAgICAgbV9mb3JtQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3Jt
Q2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04ODQsNyArODg0LDcgQEAg
dm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkYKIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
TG9hZGVyQ2xpZW50PiYmIGxvYWRlckNsaWVudCkKIHsKICAgICBpZiAoIWxvYWRlckNsaWVudCkg
ewotICAgICAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAgICAgICAgbV9sb2FkZXJDbGllbnQgPSBt
YWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkwNSw3ICs5MDUsNyBAQCB2b2lkIFdlYlBhZ2U6Omlu
aXRpYWxpemVJbmplY3RlZEJ1bmRsZVBvbGljeUNsaWVudChXS0J1bmRsZVBhZ2VQb2xpY3lDbGll
bnRCYXNlKgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50
PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIW1fcmVzb3VyY2VMb2FkQ2xpZW50KQotICAgICAgICBt
X3Jlc291cmNlTG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOworICAgICAgICBtX3Jlc291cmNlTG9hZENsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpOwog
ICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7
CiB9CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVJl
c291cmNlTG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEIKIHZvaWQgV2Vi
UGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PiYmIHVpQ2xpZW50KQogewogICAgIGlmICghdWlDbGll
bnQpIHsKLSAgICAgICAgbV91aUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3Rl
ZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOworICAgICAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTE0MTAsMTQgKzE0MTAsMTQgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIG1fY29udGV4dE1lbnVDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVu
dUNsaWVudD4oKTsKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5kaWYKLSAgICBtX2Vk
aXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9y
Q2xpZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKTsKLSAgICBtX2xvYWRlckNsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKKyAgICBt
X2VkaXRvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9yQ2xp
ZW50PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6Rm9ybUNsaWVudD4oKTsKKyAgICBtX2xvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKICAgICBtX3BvbGljeUNsaWVudC5p
bml0aWFsaXplKDApOwotICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7Ci0gICAgbV91aUNs
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50
PigpOworICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVk
QnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CisgICAgbV91aUNsaWVudCA9IG1ha2VVbmlx
dWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50PigpOwogI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKICAgICBtX2Z1bGxTY3JlZW5DbGllbnQuaW5pdGlhbGl6ZSgwKTsKICNlbmRp
ZgpAQCAtNDY5Niw3ICs0Njk2LDcgQEAgdm9pZCBXZWJQYWdlOjpiZWdpblByaW50aW5nKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbykKICNlbmRpZgog
CiAgICAgaWYgKCFtX3ByaW50Q29udGV4dCkgewotICAgICAgICBtX3ByaW50Q29udGV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8UHJpbnRDb250ZXh0Pihjb3JlRnJhbWUpOworICAgICAgICBtX3ByaW50
Q29udGV4dCA9IG1ha2VVbmlxdWU8UHJpbnRDb250ZXh0Pihjb3JlRnJhbWUpOwogICAgICAgICBt
X3BhZ2UtPmRpc3BhdGNoQmVmb3JlUHJpbnRFdmVudCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJh
dGlvbkd0ay5jcHAKaW5kZXggYjE2MDI3MDk1Zjc3YjZkMjk5NTk4NThmYjRiMTU0ZDE5ZmVjZjFm
Yi4uMzFlZmYxMWY3YWUwYTNlYjhjZmJiNmZmMmIzZGJhNTE2MjRjMWVjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRP
cGVyYXRpb25HdGsuY3BwCkBAIC03MjcsNyArNzI3LDcgQEAgdm9pZCBXZWJQcmludE9wZXJhdGlv
bkd0azo6cHJpbnQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBkb3VibGUgeERQSSwgZG91Ymxl
IHkKIHsKICAgICBBU1NFUlQobV9wcmludENvbnRleHQpOwogCi0gICAgYXV0byBkYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxQcmludFBhZ2VzRGF0YT4odGhpcyk7CisgICAgYXV0byBkYXRhID0gbWFr
ZVVuaXF1ZTxQcmludFBhZ2VzRGF0YT4odGhpcyk7CiAgICAgaWYgKCFkYXRhLT5pc1ZhbGlkKSB7
CiAgICAgICAgIGNhaXJvX3N1cmZhY2VfZmluaXNoKHN1cmZhY2UpOwogICAgICAgICBwcmludERv
bmUoaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoZnJhbWVVUkwoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1t
CmluZGV4IDlhYmIyYTc5Mjk5ZDU5NmI5MWU2ZWY2MWNhNDNlZjg2MTkwYTkwNDkuLjkzNDE4YWIy
MWQ3NGZjOTQ1OGEwMjI0ZTRjYjQ4YTczNDE3ODA5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAg
LTk4LDcgKzk4LDcgQEAgYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZEluZGljYXRvcihG
cmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmUKICAgICBpZiAoIXRleHRJbmRp
Y2F0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fZmluZEluZGljYXRvck92ZXJs
YXlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9T
PihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNhdG9yLmdldCgpKTsKKyAgICBtX2ZpbmRJbmRpY2F0
b3JPdmVybGF5Q2xpZW50ID0gbWFrZVVuaXF1ZTxGaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElP
Uz4oc2VsZWN0ZWRGcmFtZSwgdGV4dEluZGljYXRvci5nZXQoKSk7CiAgICAgbV9maW5kSW5kaWNh
dG9yUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodGV4dEluZGljYXRvci0+c2VsZWN0aW9uUmVjdElu
Um9vdFZpZXdDb29yZGluYXRlcygpKTsKICAgICBtX2ZpbmRJbmRpY2F0b3JPdmVybGF5ID0gUGFn
ZU92ZXJsYXk6OmNyZWF0ZSgqbV9maW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudCwgUGFnZU92ZXJs
YXk6Ok92ZXJsYXlUeXBlOjpEb2N1bWVudCk7CiAgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5w
YWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5pbnN0YWxsUGFnZU92ZXJsYXkoKm1fZmluZEluZGljYXRv
ck92ZXJsYXksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RG9Ob3RGYWRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3Bw
CmluZGV4IDkwNjg3Yzk3NGFjZjMzZDgyYjhjNjRiOTQ4ZTZlZTlhMzBlZTJlOWMuLjA2ZmNjNDcx
NTkzZWI3OGVkZWJmY2M2M2Y4OTQ0YjNkZmFlOWRhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcApAQCAtODMs
NyArODMsNyBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6cmVxdWVzdFJlZnJlc2hD
YWxsYmFjaygpCiAgICAgaWYgKCFtX2hhc1NlbnRNZXNzYWdlKSB7CiAgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGluayhtX29ic2VydmVySUQsIGRpc3BsYXlJ
RCgpKSwgMCk7CiAgICAgICAgIG1faGFzU2VudE1lc3NhZ2UgPSB0cnVlOwotICAgICAgICBtX3J1
bkxvb3BPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5M
b29wRW50cnksIFt0aGlzXSgpIHsKKyAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7CiAgICAgICAg
ICAgICB0aGlzLT5tX2ZpcnN0Q2FsbGJhY2tJbkN1cnJlbnRSdW5sb29wID0gdHJ1ZTsKICAgICAg
ICAgfSk7CiAgICAgICAgIG1fcnVuTG9vcE9ic2VydmVyLT5zY2hlZHVsZShDRlJ1bkxvb3BHZXRD
dXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4
IGRmNjAwMzY0NTk4ZjEzNDYyOWRhYjYyNzA2ZWFmNjg2MWU1ZmYzM2QuLjRjYjNkZjlhZWE1Mjll
ZmY1MjYzMzZjODFmMTMwMjA0NWJhM2UwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KQEAgLTg3LDcgKzg3LDcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGMK
ICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0T3BhcXVlOllFU107CiAgICAgW21faG9zdGluZ0xheWVy
IHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOwogCi0gICAgbV9sYXllckZsdXNoUnVuTG9vcE9ic2Vy
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRpY19j
YXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5
ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBtX2xheWVyRmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4o
UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3Ro
aXNdKCkgewogICAgICAgICB0aGlzLT5sYXllckZsdXNoUnVuTG9vcENhbGxiYWNrKCk7CiAgICAg
fSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA3NjAwNTUw
YzVjYTg4NjBkNmU3NmNmZTdiZjk0NjQ2N2I3YWRhMjEzLi40NzdhNzFlYzZjOTQ5NjAwNTM5YTNl
OGNiYzBlNThkZGRmM2RlZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xNTU5LDcgKzE1NTksNyBAQCB2b2lkIFdlYlByb2Nlc3M6Om1hcmtBbGxMYXllcnNW
b2xhdGlsZShXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbgogICAgIEFT
U0VSVCghbV9wYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVDb3VudGVyKTsKICAgICBtX2NvdW50
T2ZQYWdlc0ZhaWxpbmdUb01hcmtWb2xhdGlsZSA9IDA7CiAKLSAgICBtX3BhZ2VNYXJraW5nTGF5
ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJz
QXNWb2xhdGlsZUNvdW50ZXI+KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoUmVmQ291bnRlckV2ZW50KSB7CisgICAgbV9wYWdlTWFya2luZ0xh
eWVyc0FzVm9sYXRpbGVDb3VudGVyID0gbWFrZVVuaXF1ZTxQYWdlTWFya2luZ0xheWVyc0FzVm9s
YXRpbGVDb3VudGVyPihbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKFJlZkNvdW50ZXJFdmVudCkgewogICAgICAgICBpZiAobV9wYWdlTWFya2lu
Z0xheWVyc0FzVm9sYXRpbGVDb3VudGVyLT52YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0xODA4LDcgKzE4MDgsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldEVuYWJsZWRTZXJ2aWNl
cyhib29sIGhhc0ltYWdlU2VydmljZXMsIGJvb2wgaGFzU2VsZWN0aW9uU2VydgogCiB2b2lkIFdl
YlByb2Nlc3M6OmVuc3VyZUF1dG9tYXRpb25TZXNzaW9uUHJveHkoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWRlbnRpZmllcikKIHsKLSAgICBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk+KHNlc3Npb25JZGVudGlmaWVyKTsK
KyAgICBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBtYWtlVW5pcXVlPFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk+KHNlc3Npb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpk
ZXN0cm95QXV0b21hdGlvblNlc3Npb25Qcm94eSgpCkBAIC0xODQxLDcgKzE4NDEsNyBAQCBib29s
IFdlYlByb2Nlc3M6Omhhc1Zpc2libGVXZWJQYWdlKCkgY29uc3QKIExpYldlYlJUQ05ldHdvcmsm
IFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogewogICAgIGlmICghbV9saWJXZWJSVENO
ZXR3b3JrKQotICAgICAgICBtX2xpYldlYlJUQ05ldHdvcmsgPSBzdGQ6Om1ha2VfdW5pcXVlPExp
YldlYlJUQ05ldHdvcms+KCk7CisgICAgICAgIG1fbGliV2ViUlRDTmV0d29yayA9IG1ha2VVbmlx
dWU8TGliV2ViUlRDTmV0d29yaz4oKTsKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsK
IH0KIApAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUcKICAgICAv
LyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFu
YWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMg
dGhlCiAgICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24g
cHVycG9zZXMuCiAgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zZXRDb25uZWN0aW9uKHN0ZDo6bWFrZV91bmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCBwYWdlSUQsIHN0b3JlKSk7Cisg
ICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVl
PFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBwYWdlR3JvdXBJ
RCwgcGFnZUlELCBzdG9yZSkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
ZTUzN2U1OTFkZjdmZDMyMTJkZjllM2E2ZmMzMTMzOTk3MGQ3OTlkNC4uNjFhZjMxYjY1OWI4N2Fm
ZDQwZGNlYTg1OTI0Njc0MzM3MDdmMWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC0xNDgsNyArMTQ4LDcgQEAgY2xhc3MgV2ViUHJvY2VzcwogICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkU3VwcGxlbWVudCgpCiAgICAgewotICAgICAgICBt
X3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFQ+
KCp0aGlzKSk7CisgICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1lbnROYW1lKCks
IG1ha2VVbmlxdWU8VD4oKnRoaXMpKTsKICAgICB9CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29u
bmVjdGlvbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggMjcyMGI4NmZjZDJmZmVl
NjAyMmY1YWQ1ZWVkNTBiY2YzNjkyZDdmOC4uOWFmMDBlZThhYTBmMWNkODQwYTgxNzM3OTBmYTA2
MjMwMDQ2ZmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGNsYXNz
IFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyOjpTb3VyY2UgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNv
dXJjZSB7CiAgICAgewogICAgICAgICBBU1NFUlQoZGV2aWNlVHlwZSAhPSBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpVbmtub3duKTsKICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6QXVkaW8p
Ci0gICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZl
cj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4obnVsbHB0cikpOworICAg
ICAgICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlx
dWVSZWY8U2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2U+KG51bGxwdHIpKTsKICAgICB9CiAKICAgICB+
U291cmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCmluZGV4IGI0N2QxZDhhZmEwM2ZlZDM2ZGVjYWQ5ODlkNzJkYmM0MTg0ODdmNTku
LjNiOTA2YTgwYzVhZDhmNjliZWY3N2Y5YThjNzY0YWY4MDlmNDk1NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMzEwLDcg
KzMxMCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZShQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OlRhc2tTdGF0ZSB0CiAKICAgICAvLyBXZSB3ZXJlIGF3YWtl
bmVkIGZyb20gc3VzcGVuc2lvbiB1bmV4cGVjdGVkbHkuIE5vdGlmeSB0aGUgV2ViUHJvY2Vzc1By
b3h5LCBidXQgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIG9uIG91ciBwYXJlbnQgUElECiAgICAg
Ly8gdG8gZW5zdXJlIHRoYXQgaXQgdG9vIGlzIGF3YWtlbmVkLgotICAgIGF1dG8gdWlQcm9jZXNz
QXNzZXJ0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5yZW1vdGVQcm9jZXNzSUQoKSwgIlVuZXhwZWN0ZWRseSByZXN1bWVk
IiwgQXNzZXJ0aW9uU3RhdGU6OkJhY2tncm91bmQsIEFzc2VydGlvblJlYXNvbjo6RmluaXNoVGFz
ayk7CisgICAgYXV0byB1aVByb2Nlc3NBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3Nl
cnRpb24+KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpLCAiVW5l
eHBlY3RlZGx5IHJlc3VtZWQiLCBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCwgQXNzZXJ0aW9u
UmVhc29uOjpGaW5pc2hUYXNrKTsKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6UHJvY2Vzc1dhc1VuZXhw
ZWN0ZWRseVVuc3VzcGVuZGVkKCksIFt1aVByb2Nlc3NBc3NlcnRpb24gPSBXVEZNb3ZlKHVpUHJv
Y2Vzc0Fzc2VydGlvbildIHsgfSk7CiB9CiAjZW5kaWYKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lk
IFdlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29u
IHJlYXNvbikKICAgICB9CiAKICAgICBpZiAoIW1fY3B1TW9uaXRvcikgewotICAgICAgICBtX2Nw
dU1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENQVU1vbml0b3I+KGNwdU1vbml0b3JpbmdJbnRl
cnZhbCwgW3RoaXNdKGRvdWJsZSBjcHVVc2FnZSkgeworICAgICAgICBtX2NwdU1vbml0b3IgPSBt
YWtlVW5pcXVlPENQVU1vbml0b3I+KGNwdU1vbml0b3JpbmdJbnRlcnZhbCwgW3RoaXNdKGRvdWJs
ZSBjcHVVc2FnZSkgewogICAgICAgICAgICAgaWYgKG1fcHJvY2Vzc1R5cGUgPT0gUHJvY2Vzc1R5
cGU6OlNlcnZpY2VXb3JrZXIpCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUGVy
Zm9ybWFuY2VMb2dnaW5nLCAiJXAgLSBTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGV4Y2VlZGVkIENQ
VSBsaW1pdCBvZiAlLjFmJSUgKHdhcyB1c2luZyAlLjFmJSUpIiwgdGhpcywgbV9jcHVMaW1pdC52
YWx1ZSgpICogMTAwLCBjcHVVc2FnZSAqIDEwMCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4
IDM2OTA5NWNkYWQxZDM0NzExYTA2NzZkODczNmE5MGUxOTNlMjkwNWUuLjIyOGY0YTM2ZDRiMGYy
MjJjMTc4NjBkMGJjNDk4YzFmOWUwODlhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlZjxT
dG9yYWdlU3luY01hbmFnZXI+IFN0b3JhZ2VTeW5jTWFuYWdlcjo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIH0KIAogU3RvcmFnZVN5bmNNYW5hZ2VyOjpTdG9yYWdlU3luY01hbmFnZXIoY29u
c3QgU3RyaW5nJiBwYXRoKQotICAgIDogbV90aHJlYWQoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdl
VGhyZWFkPigpKQorICAgIDogbV90aHJlYWQobWFrZVVuaXF1ZTxTdG9yYWdlVGhyZWFkPigpKQog
ICAgICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRDb3B5KCkpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNw
cAppbmRleCA0NDM5MzgyOTVmNGUxYzI5ZGQwNDg2YjQzMWJhN2ZlYTM1MjlkMTZkLi45Yzc1MTRl
MzQ2MmM0YjRkOGE4NTYwNWVkMDI5ZGJkMTkyNWQ2YjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU3Rv
cmFnZVRocmVhZDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCghbV9xdWV1ZS5raWxsZWQoKSAm
JiBtX3RocmVhZCk7Ci0gICAgbV9xdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlv
bjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICBtX3F1ZXVlLmFwcGVuZChtYWtl
VW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9uKSkpOwogfQogCiB2b2lk
IFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU3RvcmFn
ZVRocmVhZDo6dGVybWluYXRlKCkKICAgICBpZiAoIW1fdGhyZWFkKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3F1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+
PihbdGhpc10geworICAgIG1fcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAo
KT4+KFt0aGlzXSB7CiAgICAgICAgIHBlcmZvcm1UZXJtaW5hdGUoKTsKICAgICB9KSk7CiAgICAg
bV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCBiOTM0ZDFhM2IxYmFhODMxYWRkZjNhYmU1
ZTA3NzBhYjFjZjc3ZmEyLi44MDZjYjA5OTVkMGEwN2M3MTgyNzFkMjEwNTA3MDM5OGM0MDNiYzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
QEAgLTk4LDcgKzk4LDcgQEAgU3RvcmFnZVRyYWNrZXImIFN0b3JhZ2VUcmFja2VyOjp0cmFja2Vy
KCkKIFN0b3JhZ2VUcmFja2VyOjpTdG9yYWdlVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQ
YXRoKQogICAgIDogbV9zdG9yYWdlRGlyZWN0b3J5UGF0aChzdG9yYWdlUGF0aC5pc29sYXRlZENv
cHkoKSkKICAgICAsIG1fY2xpZW50KDApCi0gICAgLCBtX3RocmVhZChzdGQ6Om1ha2VfdW5pcXVl
PFN0b3JhZ2VUaHJlYWQ+KCkpCisgICAgLCBtX3RocmVhZChtYWtlVW5pcXVlPFN0b3JhZ2VUaHJl
YWQ+KCkpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAgICwgbV9uZWVkc0luaXRpYWxpemF0
aW9uKGZhbHNlKQogICAgICwgbV9TdG9yYWdlRGF0YWJhc2VJZGxlSW50ZXJ2YWwoZGVmYXVsdFN0
b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwLmNwcApp
bmRleCA0M2VhNDVkYWU4OTIwNmM4MjlhNTE0ZDRkYThlM2QxYzk3Y2MxMjg0Li44NTFjYzEwMTdk
ZWQwMGMwNmQ0NmQyYzg1OWQ3MDAwMGI2ZDcyZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3RvcmFnZVNlc3Npb25N
YXAuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiog
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzdG9yYWdlU2Vzc2lvbihjb25zdCBQCiBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkKIHsKICAgICBpZiAoIWRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24oKSkKLSAgICAgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpOworICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCkgPSBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiAgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCk7CiB9CiAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQogICAgICAgICAgICAgY29v
a2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFn
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgZGVm
YXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCks
IFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOworICAgIGRlZmF1bHRO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBXVEZNb3ZlKHNl
c3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKICNlbmRpZgogfQogCkBAIC0xMDAsMTEg
KzEwMCwxMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbihj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjbwogICAgICAgICAgICAgY29va2llU3Rv
cmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOwogICAgIH0KIAotICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oc2Vzc2lvbklELCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RG
TW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1h
a2VVbmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQsIFdURk1v
dmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKIAogI2VsaWYgVVNF
KENVUkwpCiAgICAgZ2xvYmFsU2Vzc2lvbk1hcCgpLmVuc3VyZShzZXNzaW9uSUQsIFtzZXNzaW9u
SURdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CiAgICAgfSk7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKaW5kZXggMTg3NmI5NjBiOTQ3MDgxNGMzNTBi
YzU5MjZhNGM4MWFlZGYzOTAyMy4uN2I4Njk4MWEzZjQ4ZTUwZjhiM2NjYWMzNzA2OTE3ZDRhZjFm
ZGJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTE1OSw1ICsxNTksNSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0
dGluZ3M+IFdlYkluc3BlY3RvckNsaQogICAgICAgICAgICAgZGVsZXRlU2V0dGluZyhuYW1lKTsK
ICAgICAgICAgfQogICAgIH07Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
RnJvbnRlbmRTZXR0aW5nc0NGPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEluc3BlY3RvckZy
b250ZW5kU2V0dGluZ3NDRj4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0K
aW5kZXggZGQ1YWViY2IyZWNjODQzNTI3YWRiYTEwN2E4OTliM2RmMzYyOTA0ZS4uYWZlMTFhODBi
OWYxYzljZTc2YTM1NjJmYTYzYzQ1YmY3MWQxMWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlv
bkNvbnRlbnQubW0KQEAgLTE4MCw3ICsxODAsNyBAQCAtICh2b2lkKXNldFZpZXdwb3J0Q29uc3Ry
YWluZWRMYXllcnM6KFdURjo6SGFzaE1hcDxDQUxheWVyICosIHN0ZDo6dW5pcXVlX3B0cjxXZQog
CiAgICAgZm9yIChhdXRvJiBsYXllckFuZENvbnN0cmFpbnRzIDogbGF5ZXJNYXApIHsKICAgICAg
ICAgQ0FMYXllciogbGF5ZXIgPSBsYXllckFuZENvbnN0cmFpbnRzLmtleTsKLSAgICAgICAgYXV0
byBsYXllckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRh
dGE+KCk7CisgICAgICAgIGF1dG8gbGF5ZXJEYXRhID0gbWFrZVVuaXF1ZTxWaWV3cG9ydENvbnN0
cmFpbmVkTGF5ZXJEYXRhPigpOwogCiAgICAgICAgIGxheWVyRGF0YS0+bV9lbmNsb3NpbmdBY2Nl
bGVyYXRlZFNjcm9sbExheWVyID0gc3RpY2t5Q29udGFpbmVycy5nZXQobGF5ZXIpOwogICAgICAg
ICBsYXllckRhdGEtPm1fdmlld3BvcnRDb25zdHJhaW50cyA9IFdURk1vdmUobGF5ZXJBbmRDb25z
dHJhaW50cy52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnkubW0KaW5kZXggYThiNmEwNDM5M2VjMDAwMTQ2NTM4ZDRjZjY1YmQ2NDBjNzRiZDkwMS4u
NWFkODFiNGEzYjQ5YjVkMDYzOTM2NTY4M2ExYmNmNWQ1N2VmMzg2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtMTMzLDcgKzEzMyw3IEBA
IC0gKGlkKWluaXQKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBfZW50cmllc0J5VVJM
ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBfZW50cmllc0J5RGF0
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKKyAgICBfZW50cmllc0J5
RGF0ZSA9IG1ha2VVbmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKIAogICAgIHJldHVybiBzZWxm
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW0KaW5kZXggYjczOTU5MzVlNTEwYmYzYjdmMGM0OGVkZDQzNmM1OGJiYzQ4MWQ4ZS4uODZm
OWQzZDQyMjM4NDZiYzk1Y2JjOTU2NDVhMWNhNzMyMGFmZTE5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0zNDgsNyArMzQ4
LDcgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5TRGljdGlvbmFy
eSAqKWRpY3QKICAgICAgICAgY29yZShfcHJpdmF0ZSktPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUo
dHJ1ZSk7CiAgICAgCiAgICAgaWYgKE5TQXJyYXkgKnJlZGlyZWN0VVJMcyA9IFtkaWN0IF93ZWJr
aXRfYXJyYXlGb3JLZXk6cmVkaXJlY3RVUkxzS2V5XSkgewotICAgICAgICBhdXRvIHJlZGlyZWN0
VVJMc1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAg
IGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsK
ICAgICAgICAgcmVkaXJlY3RVUkxzVmVjdG9yLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KFtyZWRp
cmVjdFVSTHMgY291bnRdKTsKIAogICAgICAgICBmb3IgKGlkIHJlZGlyZWN0VVJMIGluIHJlZGly
ZWN0VVJMcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQppbmRleCBlMTdjNzg4
MWE1MTdmMGMzNTVmODc1NjliNjBkYTNmMjE1YTFlYmE3Li5mNWU3ZmJjZjEyZTQ3ZjkwZGVlZjFl
YTJjZmViNzE3NDI2ODgwYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbQpA
QCAtNDkzLDcgKzQ5Myw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0dldFNjcmlwdGFibGVOUE9iamVj
dFJlcGx5KG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIHVpbnQzMl90IHBsCiAgICAgaWYgKCFpbnN0
YW5jZVByb3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAgaW5zdGFuY2VQ
cm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmplY3RJ
RCkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBseShyZXF1ZXN0SUQsIG1ha2VV
bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpHZXRTY3JpcHRhYmxlTlBPYmplY3RS
ZXBseT4ob2JqZWN0SUQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCkBAIC01MDks
NyArNTA5LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhblJlcGx5KG1hY2hfcG9ydF90IGNs
aWVudFBvcnQsIHVpbnQzMl90IHBsdWdpbklELCB1aW50MzIKICAgICBpZiAoIWluc3RhbmNlUHJv
eHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAgICAgCi0gICAgaW5zdGFuY2VQcm94
eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CisgICAgaW5zdGFuY2VQ
cm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OkJvb2xlYW5SZXBseT4ocmVzdWx0KSk7CiAgICAgcmV0dXJuIEtFUk5f
U1VDQ0VTUzsKIH0KIApAQCAtNTI4LDcgKzUyOCw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0Jvb2xl
YW5BbmREYXRhUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQs
CiAgICAgICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7CiAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiByZXN1bHQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCByZWludGVycHJldF9jYXN0PFVJbnQ4
Kj4ocmVzdWx0RGF0YSksIHJlc3VsdExlbmd0aCkpOwotICAgIGluc3RhbmNlUHJveHktPnNldEN1
cnJlbnRSZXBseShyZXF1ZXN0SUQsIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5OjpCb29sZWFuQW5kRGF0YVJlcGx5PihyZXR1cm5WYWx1ZSwgcmVzdWx0KSk7Cisg
ICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxO
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVwbHk+KHJldHVyblZh
bHVlLCByZXN1bHQpKTsKICAgICAKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQpAQCAtNTQ1
LDcgKzU0NSw3IEBAIGtlcm5fcmV0dXJuX3QgV0tQQ0luc3RhbnRpYXRlUGx1Z2luUmVwbHkobWFj
aF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luCiAgICAgaWYgKCFpbnN0YW5jZVBy
b3h5KQogICAgICAgICByZXR1cm4gS0VSTl9GQUlMVVJFOwogCi0gICAgaW5zdGFuY2VQcm94eS0+
c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6Okluc3RhbnRpYXRlUGx1Z2luUmVwbHk+KHJlc3VsdCwgcmVuZGVyQ29u
dGV4dElELCBzdGF0aWNfY2FzdDxSZW5kZXJlclR5cGU+KHJlbmRlcmVyVHlwZSkpKTsKKyAgICBp
bnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQbHVnaW5SZXBseT4ocmVzdWx0LCBy
ZW5kZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVyVHlwZT4ocmVuZGVyZXJUeXBlKSkp
OwogICAgIHJldHVybiBLRVJOX1NVQ0NFU1M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCmluZGV4IDIwMmM2
ZGVhZjEzZDA3YzZlM2E1Njk4YjFjZGI1OWExOWI1ZGEwMzkuLjUyYmY3YmQxMmU0ZTM3MTJkMzE0
NzVlMmE1MzlhNDI4Y2ZmOGZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMzYyLDcgKzM2Miw3IEBA
IE1ldGhvZCogUHJveHlJbnN0YW5jZTo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKICAgICAvLyBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIG1hcCB1bmxlc3MgYW4gZW50cnkg
d2FzIGFkZGVkIHdoaWxlIHdlIHdlcmUgaW4gd2FpdEZvclJlcGx5LgogICAgIGF1dG8gbWFwQWRk
UmVzdWx0ID0gbV9tZXRob2RzLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0cik7CiAgICAgaWYgKG1h
cEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkKLSAgICAgICAgbWFwQWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJveHlNZXRob2Q+KG1l
dGhvZE5hbWUpOworICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVu
aXF1ZTxQcm94eU1ldGhvZD4obWV0aG9kTmFtZSk7CiAKICAgICByZXR1cm4gbWFwQWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCBGaWVsZCogUHJv
eHlJbnN0YW5jZTo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8v
IEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hp
bGUgd2Ugd2VyZSBpbiB3YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX2Zp
ZWxkcy5hZGQobmFtZS5pbXBsKCksIG51bGxwdHIpOwogICAgIGlmIChtYXBBZGRSZXN1bHQuaXNO
ZXdFbnRyeSAmJiByZXBseS0+bV9yZXN1bHQpCi0gICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOworICAg
ICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm94eUZpZWxk
PihpZGVudGlmaWVyKTsKICAgICByZXR1cm4gbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9I
b3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4
IGM2YTM1ZjIxY2UxODhiNDMzM2Y2YTNjNDYyYWZiYWM4ODRjZmQ3Y2QuLmVlMTljNTY3YzAxZmEx
OGM1ZThkYzYxYjA4Yzg5NGU1MjAwMmRhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2Fw
ZVBsdWdpblZpZXcubW0KQEAgLTE2OSw3ICsxNjksNyBAQCAtIChCT09MKWNyZWF0ZVBsdWdpbgog
ICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoX3Byb3h5LT5yZW5kZXJlclR5cGUoKSA9PSBV
c2VTb2Z0d2FyZVJlbmRlcmVyKQotICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRleHRJRCgpKTsK
KyAgICAgICAgX3NvZnR3YXJlUmVuZGVyZXIgPSBtYWtlVW5pcXVlPFNvZnR3YXJlQ0FSZW5kZXJl
cj4oX3Byb3h5LT5yZW5kZXJDb250ZXh0SUQoKSk7CiAgICAgZWxzZQogICAgICAgICBbc2VsZiBj
cmVhdGVQbHVnaW5MYXllcl07CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQpp
bmRleCBmN2FlZGJjZWQ0ZDdmNWM0YmEzZTk2ZTM1NjFjYTdmMGIyNjVjOGFjLi44ZWMxYmY3OWVl
MzJhMmFjMWJiY2Y3YTIxZTczZTdlMWUwMWRiMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXIubW0KQEAgLTM1LDcgKzM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFdlYk5ldHNjYXBlUGx1
Z2luRXZlbnRIYW5kbGVyPiBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3IKIHsKICAg
ICBzd2l0Y2ggKFtwbHVnaW5WaWV3IGV2ZW50TW9kZWxdKSB7CiAgICAgY2FzZSBOUEV2ZW50TW9k
ZWxDb2NvYToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXJDb2NvYT4ocGx1Z2luVmlldyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ29jb2E+KHBsdWdpblZpZXcpOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMDJmZjIxODZkZjg0YTlhOTBkN2U5YzI2YzA3
NjI3OWUzMjIxMTM3OC4uMTYwNjYzZTg2MWY3MTBlYmZlZDFkNzY4NTY1ZGQyMmExMTRlOGUxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblZpZXcubW0KQEAgLTE2NTUsNyArMTY1NSw3IEBAIC0gKHVpbnQzMl90KXNjaGVk
dWxlVGltZXJXaXRoSW50ZXJ2YWw6KHVpbnQzMl90KWludGVydmFsIHJlcGVhdDooTlBCb29sKXJl
cGVhdCB0CiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIGlmICghdGltZXJzKQotICAgICAg
ICB0aW1lcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8dWludDMyX3QsIHN0ZDo6dW5pcXVl
X3B0cjxQbHVnaW5UaW1lcj4+PigpOworICAgICAgICB0aW1lcnMgPSBtYWtlVW5pcXVlPEhhc2hN
YXA8dWludDMyX3QsIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5UaW1lcj4+PigpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPiogc2xvdDsKICAgICB1aW50MzJfdCB0aW1lcklEOwpA
QCAtMTY2Myw3ICsxNjYzLDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZh
bDoodWludDMyX3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0IHQKICAgICAgICAgdGlt
ZXJJRCA9ICsrY3VycmVudFRpbWVySUQ7CiAgICAgd2hpbGUgKCF0aW1lcnMtPmlzVmFsaWRLZXko
dGltZXJJRCkgfHwgKihzbG90ID0gJnRpbWVycy0+YWRkKHRpbWVySUQsIG51bGxwdHIpLml0ZXJh
dG9yLT52YWx1ZSkpOwogCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2lu
VGltZXI+KHBsdWdpbiwgdGltZXJJRCwgaW50ZXJ2YWwsIHJlcGVhdCwgdGltZXJGdW5jKTsKKyAg
ICBhdXRvIHRpbWVyID0gbWFrZVVuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1Z2luLCB0aW1lcklELCBp
bnRlcnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOwogCiAgICAgaWYgKF9zaG91bGRGaXJlVGltZXJz
KQogICAgICAgICB0aW1lci0+c3RhcnQoX2lzQ29tcGxldGVseU9ic2N1cmVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQubW0KaW5kZXggMWNiYzJmYmEyYjdjYzhlZjg3OWVhMWJmNzExYjMxYjNiZDU4MmJj
Yi4uNTdmYmJmYWQ5ZTY0Yjc2NzhhZDNhY2NlODA3NzhiYWNmMDM3ODFiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFn
ZXJDbGllbnQubW0KQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJh
c2VNYW5hZ2VyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2lu
KQogICAgIHsKLSAgICAgICAgYXV0byBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWRNb2Rp
ZnlPcmlnaW5EYXRhPihjbGllbnQsIG9yaWdpbik7CisgICAgICAgIGF1dG8gY29udGV4dCA9IG1h
a2VVbmlxdWU8RGlkTW9kaWZ5T3JpZ2luRGF0YT4oY2xpZW50LCBvcmlnaW4pOwogICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtjb250ZXh0ID0gV1RGTW92ZShjb250ZXh0KV0gewogICAgICAgICAg
ICAgY29udGV4dC0+Y2xpZW50LmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNvbnRleHQtPm9yaWdp
bik7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA1NDVhOGU4
NGNiODQ4OWQ5MTg2NmNiYWM5MTI5NmIwZmQzNWI1MWQ3Li4yNDE0MGNkZTNlYzkzYjIwNzU5ZmQ2
MzAyZDFhMzA5NTJlMTkyYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTA2
Nyw3ICsxMDY3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlz
dG9yeSgpCiBzdGF0aWMgdm9pZCBhZGRSZWRpcmVjdFVSTChXZWJIaXN0b3J5SXRlbSAqaXRlbSwg
Y29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKCFpdGVtLT5fcHJpdmF0ZS0+X3JlZGlyZWN0
VVJMcykKLSAgICAgICAgaXRlbS0+X3ByaXZhdGUtPl9yZWRpcmVjdFVSTHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAgICAgICBpdGVtLT5fcHJpdmF0ZS0+X3JlZGly
ZWN0VVJMcyA9IG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAKICAgICAvLyBPdXIgQVBJ
IGFsbG93cyB1cyB0byBzdG9yZSBhbGwgdGhlIFVSTHMgaW4gdGhlIHJlZGlyZWN0IGNoYWluLCBi
dXQgZm9yCiAgICAgLy8gbm93IHdlIG9ubHkgaGF2ZSBhIHVzZSBmb3IgdGhlIGZpbmFsIFVSTC4K
QEAgLTEzODAsNyArMTM4MCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUq
IGNhY2hlZEZyYW1lKQogewotICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3Jt
RGF0YShzdGQ6Om1ha2VfdW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihtX3dlYkZy
YW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50VmlldykpOworICAgIGNhY2hlZEZy
YW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhPihtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+d2ViRnJhbWVWaWV3LmRvY3VtZW50
VmlldykpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBBdCB0aGlzIHBvaW50
IHdlIGtub3cgdGhpcyBmcmFtZSBpcyBnb2luZyB0byBiZSBjYWNoZWQuIFN0b3AgYWxsIHBsdWdp
bnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggMWMwMDgwOTc2OTJmZjliMDcxZmNlNWFj
NGE0YjQ2OTJkMTM3ZWQ5NS4uN2QzZTVlYzllNjE1ZTFkNDhjM2QwNWQ3MWE1OWM0NTFmZWI3NjZi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIEZyb250ZW5k
Q2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwCiAgICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9y
Q2xpZW50OnRoaXNdOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9s
bGVyLmdldCgpIGZyb250ZW5kV2ViVmlld10pOwotICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZp
ZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zy
b250ZW5kUGFnZSwgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKKyAgICBtX2Zyb250ZW5kQ2xp
ZW50ID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRX
ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0ZWRQYWdlQ29udHJvbGxlciwg
bV9mcm9udGVuZFBhZ2UsIGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAKICAgICBSZXRhaW5Q
dHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kID0gYWRvcHROUyhb
W1dlYkluc3BlY3RvckZyb250ZW5kIGFsbG9jXSBpbml0V2l0aEZyb250ZW5kQ2xpZW50Om1fZnJv
bnRlbmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21faW5zcGVjdGVkV2ViVmlldyBpbnNwZWN0b3Jd
IHNldEZyb250ZW5kOndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRl
ck1vY2subW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVu
dGF0aW9uUHJvdmlkZXJNb2NrLm1tCmluZGV4IDI1MzY0OGQ4ZTg0NTkxMWUyYWUyOGMwYmI4NjNj
YjU3ZjdjMzAwMzkuLjI3NmQ5ZjE1ZWY4ZmE1ZTFmZWQ0MzhlZDljMWQyNTlhNzg1ODM1MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50
YXRpb25Qcm92aWRlck1vY2subW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQpAQCAtMzYsNyArMzYsNyBAQCAt
IChpZClpbml0CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgbV9jb3JlID0gc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2s+KCk7CisgICAgbV9jb3JlID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2s+KCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGE5MDYyMmMyMDc0ZTBjZGNl
Y2VmMmM2YzFjODQ5NDVkNGU5ZGZmYWIuLjNhOTRiYjkxMGQyNTllZmFhODkxZDUyOWU4MGQyYjVi
MDAyMGI0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQpAQCAtMzc4LDcgKzM3OCw3IEBAIC0gKHZvaWQpX2F0dGFjaFNjcmlwdERlYnVnZ2VyCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlNjcmlwdERlYnVnZ2VyPihnbG9iYWxPYmplY3QpOworICAgIF9wcml2
YXRlLT5zY3JpcHREZWJ1Z2dlciA9IG1ha2VVbmlxdWU8V2ViU2NyaXB0RGVidWdnZXI+KGdsb2Jh
bE9iamVjdCk7CiB9CiAKIC0gKHZvaWQpX2RldGFjaFNjcmlwdERlYnVnZ2VyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIubW0KaW5kZXggNzJjMjBjNjkzZmVjYmE5NzEwNDYzNDE2NDFjY2UxMTQ5
NGRlNGE2OS4uNjAyNDAyOTk2MmVjMzRmMDBmNGFhZDk0MzJhN2ZjNDJiYTFkMTc0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4gV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlcjo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2UmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4ocGFnZSk7CiB9CiAK
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXIoV2ViQ29yZTo6UGFnZSYgcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0KaW5kZXggMWE3MjU4YjQyM2E4NDU3ODkxZTQxNWUx
MGQwMDI1NjczMGFhMmJkZS4uZTM2M2I4NWIyYjNkNWFlMTQ3M2M4MzcyNzE4NTgzNGQ1MTc4N2Ix
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRl
cmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRl
cmF0b3IubW0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooRE9NUmFuZ2Ug
KilyYW5nZQogICAgICAgICByZXR1cm4gc2VsZjsKICAgICAKICAgICBfcHJpdmF0ZSA9IFtbV2Vi
VGV4dEl0ZXJhdG9yUHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgX3ByaXZhdGUtPl90ZXh0SXRl
cmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5n
ZSkpOworICAgIF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I+KGNvcmUocmFuZ2UpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGJkOWNiYzEyMmRlZGUy
OGYzNmI5ZmI1Zjc3NzI3Njg0ZGFiODQyZjcuLjI4ZjZjMjUzMjViNGM0NWEyYjA2ZTIzN2ZhM2Ji
YmI5YWUzMGM4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTEyMjUsNyArMTIyNSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWly
a3NVc2VyU2NyaXB0Q29udGVudHMoKQogLSh2b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0
CiB7CiAgICAgc3RhdGljIE5TU3RyaW5nICpvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMgPSBs
ZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpOwotICAgIF9wcml2YXRlLT5ncm91
cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2ViU2NyaXB0
V29ybGQgd29ybGRdKSwgc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtz
U2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigp
LCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcykpOworICAgIF9wcml2YXRl
LT5ncm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZShbV2Vi
U2NyaXB0V29ybGQgd29ybGRdKSwgbWFrZVVuaXF1ZTxVc2VyU2NyaXB0PihvdXRsb29rUXVpcmtz
U2NyaXB0Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigp
LCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcykpOwogCiB9CiAjZW5kaWYK
QEAgLTE0MzksNyArMTQzOSw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUgZ3JvdXBOYW1lOihOU1N0CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVu
dUNsaWVudChzZWxmKTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuYWJsZSB0aGlzIG9uIGlP
UyBhcyB3ZWxsLgotICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4oc2VsZik7Cisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBtYWtlVW5pcXVl
PFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50PihzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwogI2Vsc2UK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50
SU9TKHNlbGYpOwpAQCAtNDYzMCw3ICs0NjMwLDcgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRv
R3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwK
ICAgICBpZiAoIXdvcmxkKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVzZXJTY3JpcHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lID09
IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVj
dEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8g
SW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CisgICAgYXV0byB1c2Vy
U2NyaXB0ID0gbWFrZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSA9
PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmpl
Y3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/
IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91
cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCgqY29yZSh3b3JsZCksIFdU
Rk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBAIC00NjUzLDcgKzQ2NTMsNyBAQCArICh2b2lkKV9h
ZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJT
Y3JpcHRXb3JsZCAqKQogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gc3R5bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwg
dXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3Qp
LCBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJh
bWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAgYXV0
byBzdHlsZVNoZWV0ID0gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRv
U3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVj
dGVkRnJhbWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJ
bmplY3RJblRvcEZyYW1lT25seSwgVXNlclN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAt
PnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KCpjb3JlKHdvcmxkKSwg
V1RGTW92ZShzdHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiB9CiAKQEAg
LTk0MDQsNyArOTQwNCw3IEBAIC0gKFZlY3RvcjxTdHJpbmc+KV9kaWN0YXRpb25BbHRlcm5hdGl2
ZXM6KHVpbnQ2NF90KWRpY3RhdGlvbkNvbnRleHQKIC0gKFdlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyJilfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIKIHsKICAgICBpZiAoIV9wcml2YXRl
LT5fc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIpCi0gICAgICAgIF9wcml2YXRlLT5fc2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyPihzZWxmKTsKKyAgICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNl
bGYpOwogICAgIHJldHVybiAqX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsK
IH0KICNlbmRpZgpAQCAtOTQ2Myw3ICs5NDYzLDcgQEAgLSAodm9pZClfc2V0VGV4dEluZGljYXRv
cjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvcgogLSAodm9pZClfc2V0VGV4dEluZGljYXRv
cjooVGV4dEluZGljYXRvciYpdGV4dEluZGljYXRvciB3aXRoTGlmZXRpbWU6KFRleHRJbmRpY2F0
b3JXaW5kb3dMaWZldGltZSlsaWZldGltZQogewogICAgIGlmICghX3ByaXZhdGUtPnRleHRJbmRp
Y2F0b3JXaW5kb3cpCi0gICAgICAgIF9wcml2YXRlLT50ZXh0SW5kaWNhdG9yV2luZG93ID0gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0SW5kaWNhdG9yV2luZG93PihzZWxmKTsKKyAgICAgICAgX3ByaXZh
dGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBtYWtlVW5pcXVlPFRleHRJbmRpY2F0b3JXaW5kb3c+
KHNlbGYpOwogCiAgICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVz
ID0gW3NlbGYgY29udmVydFJlY3Q6W3NlbGYgX2NvbnZlcnRSZWN0RnJvbVJvb3RWaWV3OnRleHRJ
bmRpY2F0b3IudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpXSB0b1ZpZXc6
bmlsXTsKICAgICBOU1JlY3QgdGV4dEJvdW5kaW5nUmVjdEluU2NyZWVuQ29vcmRpbmF0ZXMgPSBb
c2VsZi53aW5kb3cgY29udmVydFJlY3RUb1NjcmVlbjp0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dD
b29yZGluYXRlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5tbQppbmRleCAxMDYwYzJkODU0YWRhMGRjYWZiMzM1NTljODExZTRlZTQ5NGNjNmUwLi44
MjM4YTRlYzVmZWUxNjgzNjRlZDEzMDRiYzc1MTVmNTUxN2ZlODkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTk2LDcgKzk2LDcgQEAg
TGF5ZXJGbHVzaENvbnRyb2xsZXI6OkxheWVyRmx1c2hDb250cm9sbGVyKFdlYlZpZXcqIHdlYlZp
ZXcpCiBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmlld0xheWVyRmx1c2hTY2hlZHVs
ZXIoTGF5ZXJGbHVzaENvbnRyb2xsZXIqIGZsdXNoQ29udHJvbGxlcikKICAgICA6IG1fZmx1c2hD
b250cm9sbGVyKGZsdXNoQ29udHJvbGxlcikKIHsKLSAgICBtX3J1bkxvb3BPYnNlcnZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRklu
ZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okxh
eWVyRmx1c2gpLCBbdGhpc10oKSB7CisgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVl
PFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oV2ViQ29yZTo6
UnVuTG9vcE9ic2VydmVyOjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3Ro
aXNdKCkgewogICAgICAgICB0aGlzLT5sYXllckZsdXNoQ2FsbGJhY2soKTsKICAgICB9KTsKIH0K
QEAgLTIwOCw3ICsyMDgsNyBAQCAtIChpZClpbml0CiAgICAgcGx1Z2luRGF0YWJhc2VDbGllbnRD
b3VudCsrOwogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCi0gICAgbV9hbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dFVJQ29udHJvbGxlcj4oKTsKKyAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
ciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOwog
I2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKaW5kZXggNGUyMzFhODM5ZTRjNzFl
ZjU4YTA1ZTg4NjhhMDFmOWQzYjU2ZDM4Ny4uOWIxNDY3NDdmZjc3YmMwYWI1ZTY1MDRhNzkxZDVh
YzFjZmYwZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHAKQEAgLTI0NywxMSArMjQ3LDExIEBAIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQogICAgICwgbV9tb3Zp
bmdXaW5kb3coZmFsc2UpCiAgICAgLCBtX3RpbWVyKCp0aGlzLCAmRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlcjo6dGltZXJGaXJlZCkKICNpZiBVU0UoQ0EpCi0gICAgLCBtX2xheWVyQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpKQorICAgICwgbV9sYXllckNsaWVudCht
YWtlVW5pcXVlPExheWVyQ2xpZW50Pih0aGlzKSkKICAgICAsIG1fcm9vdENoaWxkKFBsYXRmb3Jt
Q0FMYXllcldpbjo6Y3JlYXRlKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGF5ZXIsIG1fbGF5
ZXJDbGllbnQuZ2V0KCkpKQogI2VuZGlmCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAg
ICwgbV9mdWxsc2NyZWVuV2luZG93KHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRl
RnVsbHNjcmVlbldpbmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bkNsaWVudCo+KHRoaXMpKSkKKyAgICAsIG1fZnVsbHNjcmVlbldpbmRvdyhtYWtlVW5pcXVlPE1l
ZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KHN0YXRpY19jYXN0PE1lZGlhUGxheWVy
UHJpdmF0ZUZ1bGxzY3JlZW5DbGllbnQqPih0aGlzKSkpCiAjZW5kaWYKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCBhYmE2
M2RhYjhiMzFlNDdhYmQ4MDg4YjM3ODNhODBlYzU0YzEwMjE4Li4wZjZiZWVmZmFkMWRjMDE1Yzhh
NDc3ZTdmYmU1YzliNmFhZmFmZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBQbHVnaW5T
dHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIs
IGNvbnN0IGNoYXIKIAogICAgIGlmIChtX3RyYW5zZmVyTW9kZSAhPSBOUF9BU0ZJTEVPTkxZKSB7
CiAgICAgICAgIGlmICghbV9kZWxpdmVyeURhdGEpCi0gICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPGNoYXI+PigpOworICAgICAgICAgICAgbV9kZWxp
dmVyeURhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4oKTsKIAogICAgICAgICBpbnQgb2xk
U2l6ZSA9IG1fZGVsaXZlcnlEYXRhLT5zaXplKCk7CiAgICAgICAgIG1fZGVsaXZlcnlEYXRhLT5y
ZXNpemUob2xkU2l6ZSArIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAyMTM2MzE3ZjI5OTlkNWUxMzc0OWRmMzhlMTlhOGY0
ZDJmMjViZDYwLi41NDcxNmEwYmIyYjFmYWI3NWQ4MWRlNDJhZWU5NmVlYTJmNmIxM2U2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTUx
MCw3ICs1MTAsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmxvYWQoRnJhbWVMb2FkUmVxdWVzdCYm
IGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGlmaWNhdAogICAgIH0gZWxzZSBpZiAoIW1f
cGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1cmwp
KQogICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKIAotICAgIHNjaGVkdWxlUmVx
dWVzdChzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpblJlcXVlc3Q+KFdURk1vdmUoZnJhbWVMb2FkUmVx
dWVzdCksIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEsIGFyZVBvcHVwc0FsbG93ZWQoKSkp
OworICAgIHNjaGVkdWxlUmVxdWVzdChtYWtlVW5pcXVlPFBsdWdpblJlcXVlc3Q+KFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIHNlbmROb3RpZmljYXRpb24sIG5vdGlmeURhdGEsIGFyZVBvcHVw
c0FsbG93ZWQoKSkpOwogCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAKaW5kZXggMDU3
MjhmM2VkMzcyMDUwNGFmNTVmOTg3N2Y4NjIxYmRjMDVjZTYyMi4uNTIwNDU5NGFiNmY4NGQ1NzAw
MDQwZGZkMjk4MWMzZjU2M2VkZmYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgUGx1Z2luVmll
dzo6d25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFN
IGxQYXJhbSkKICAgICBpZiAobWVzc2FnZSA9PSBXTV9VU0VSICsgMSAmJgogICAgICAgICBtX3Bs
dWdpbi0+cXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtUaHJvdHRsZVdNVXNlclBsdXNPbmVN
ZXNzYWdlcykpIHsKICAgICAgICAgaWYgKCFtX21lc3NhZ2VUaHJvdHRsZXIpCi0gICAgICAgICAg
ICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJv
dHRsZXJXaW4+KHRoaXMpOworICAgICAgICAgICAgbV9tZXNzYWdlVGhyb3R0bGVyID0gbWFrZVVu
aXF1ZTxQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luPih0aGlzKTsKIAogICAgICAgICBtX21lc3Nh
Z2VUaHJvdHRsZXItPmFwcGVuZE1lc3NhZ2UoaFduZCwgbWVzc2FnZSwgd1BhcmFtLCBsUGFyYW0p
OwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDRhNDliOTRiYmE1
OGQwYzU0NjMzMjljM2Y2ZWYyM2U4NDg4YjdhZjMuLjdiMjk5Y2VlMjVlY2QxMGJiYTYyMWM4NTgx
YjA2YWUwNmM1YTFkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBz
dGF0aWMgY29uc3Qgc2l6ZV90IG1heEZpbGVQYXRoc0xpc3RTaXplID0gVVNIUlRfTUFYOwogV2Vi
Q2hyb21lQ2xpZW50OjpXZWJDaHJvbWVDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1f
d2ViVmlldyh3ZWJWaWV3KQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgICwgbV9ub3Rp
ZmljYXRpb25zRGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlPih3ZWJWaWV3KSkKKyAgICAsIG1fbm90aWZpY2F0aW9uc0RlbGVnYXRlKG1ha2VV
bmlxdWU8V2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZT4od2ViVmlldykpCiAjZW5kaWYK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1MTc3MGNlNDY4ZDM3MzQy
NTY5MjQ3MjJhMjE3YzhkZjQyMDc1NWJkLi4yMzQ2ZWI5ZDFhMGFjYmNkNTRkMDI2Mzk3MjA3MDAx
ZWE3YzAxY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMDgsNyArMTA4
LDcgQEAgY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cml2YXRlIHsKIH07CiAKIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVu
dChXZWJGcmFtZSogd2ViRnJhbWUpCi0gICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShzdGQ6
Om1ha2VfdW5pcXVlPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQorICAgIDogbV9w
b2xpY3lMaXN0ZW5lclByaXZhdGUobWFrZVVuaXF1ZTxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJp
dmF0ZT4oKSkKICAgICAsIG1fd2ViRnJhbWUod2ViRnJhbWUpCiAgICAgLCBtX21hbnVhbExvYWRl
cigwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkgCkBAIC05NzQsNyAr
OTc0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRGF0YVRvQ2Fj
aGVkRnJhbWUoQ2FjaGVkRnJhbWUqIGNhY2hlZEZyYW0KIAogICAgIEFTU0VSVChjb3JlRnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPT0gY2FjaGVkRnJhbWUtPmRvY3VtZW50TG9hZGVy
KCkpOwogCi0gICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KHN0YXRpY19jYXN0PElXZWJE
YXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkpKSkpOworICAgIGNhY2hlZEZyYW1lLT5zZXRDYWNoZWRGcmFtZVBsYXRmb3JtRGF0
YShtYWtlVW5pcXVlPFdlYkNhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPihzdGF0aWNfY2FzdDxJV2Vi
RGF0YVNvdXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpKSkpKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNzU2OTU5MGMxYjNjZjM4MTZmYzQyYTM1YmYzZjY2
YmZkNzg5MDIyNC4uZjgwYWUwNDhiODJkYmRiMjM0NjU0NjhkOTMzYzYwYTcwOTcyYzdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgSW5zcGVjdG9yOjpG
cm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3BlbkxvY2FsRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHIKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2Zyb250ZW5kUGFnZSA9IGNv
cmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsKLSAgICBtX2Zyb250ZW5kQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4obV9pbnNwZWN0ZWRXZWJWaWV3
LCBtX2luc3BlY3RlZFdlYlZpZXdIYW5kbGUsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3
LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkpOwor
ICAgIG1fZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwgZnJvbnRl
bmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMsIGNyZWF0
ZUZyb250ZW5kU2V0dGluZ3MoKSk7CiAgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50LmdldCgp
KTsKICAgICBtX2Zyb250ZW5kSGFuZGxlID0gZnJvbnRlbmRId25kOwogICAgIHJldHVybiB0aGlz
OwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQo
KQogICAgIGJvb2wgY3JlYXRpbmdIaWdobGlnaHQgPSAhbV9oaWdobGlnaHQ7CiAKICAgICBpZiAo
Y3JlYXRpbmdIaWdobGlnaHQpCi0gICAgICAgIG1faGlnaGxpZ2h0ID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJOb2RlSGlnaGxpZ2h0PihtX2luc3BlY3RlZFdlYlZpZXcpOworICAgICAgICBtX2hpZ2hs
aWdodCA9IG1ha2VVbmlxdWU8V2ViTm9kZUhpZ2hsaWdodD4obV9pbnNwZWN0ZWRXZWJWaWV3KTsK
IAogICAgIGlmIChtX2hpZ2hsaWdodC0+aXNTaG93aW5nKCkpCiAgICAgICAgIG1faGlnaGxpZ2h0
LT51cGRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJv
cGVydHlCYWcuY3BwCmluZGV4IDI3YWYxYmFlNjUzZWZmMDJmNjcwNGY3ZTM5YWQwZTFhYzUwYWQ3
MGIuLjhhZmJhMGY2ZDUzYWZkNTU1ODQ1YzE5NTM2YzJhOWMxZWM1ZjM3ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtNDMs
NyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gV2ViRWxlbWVudFByb3Bl
cnR5QmFnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBX
ZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQpCi0gICAgOiBtX3Jlc3VsdChzdGQ6Om1ha2VfdW5pcXVlPEhpdFRlc3RS
ZXN1bHQ+KHJlc3VsdCkpCisgICAgOiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+
KHJlc3VsdCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeUl0ZW0uY3BwCmluZGV4IGE4MWMwMGU1NmM1ZGUyYWViYzEyYWI4YjZkYjExYmM5MzRl
YmJiZGEuLmZiODhlMzllN2I1NmFjMzJkY2Y1Y2Y1MDExYzM1NDgxNzFhNmMzYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTExNSw3ICsxMTUsNyBA
QCBIUkVTVUxUIFdlYkhpc3RvcnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlv
bihfSW5fb3B0XyB2b2lkKiBkaWN0aW9uYQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3Ry
aW5nPj4gcmVkaXJlY3RVUkxzVmVjdG9yOwogICAgIGlmIChDRkFycmF5UmVmIHJlZGlyZWN0VVJM
c1JlZiA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rp
b25hcnlSZWYsIHJlZGlyZWN0VVJMc0tleSkpKSB7CiAgICAgICAgIENGSW5kZXggc2l6ZSA9IENG
QXJyYXlHZXRDb3VudChyZWRpcmVjdFVSTHNSZWYpOwotICAgICAgICByZWRpcmVjdFVSTHNWZWN0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PihzaXplKTsKKyAgICAgICAgcmVk
aXJlY3RVUkxzVmVjdG9yID0gbWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oc2l6ZSk7CiAgICAg
ICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgICgqcmVk
aXJlY3RVUkxzVmVjdG9yKVtpXSA9IFN0cmluZyhzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChyZWRpcmVjdFVSTHNSZWYsIGkpKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9D
QUQzRFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKaW5kZXggMmYxZjJmNDgwN2ViOWM0ZmU3MDgz
NWRiNzhlMzRhMzRiY2ZmMzZkMC4uZDY1ZGUxOWVlOTljNDUxNDQ1ZGZiZjFiMTM1OWRjMmE4YmEz
OGM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29y
ZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCkBAIC0yMjQsNyAr
MjI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEQzRFBvc3RQcm9jZXNzaW5nQ29udGV4dD4gQ0FEM0RS
ZW5kZXJlcjo6Y3JlYXRlRDNEUG9zdFByb2Nlc3NpbmcKICAgICBtZW1jcHkob3ZlcmxheVF1YWRC
dWZmZXIsIG92ZXJsYXlRdWFkVmVydGljZXMsIHNpemVvZihvdmVybGF5UXVhZFZlcnRpY2VzKSk7
CiAgICAgb3ZlcmxheVF1YWQtPlVubG9jaygpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8RDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0PihzY2VuZVRleHR1cmUsIG92ZXJsYXlRdWFkKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+KHNjZW5lVGV4
dHVyZSwgb3ZlcmxheVF1YWQpOwogfQogCiAvLyBGSVhNRTogPHJkYXI6Ly82NTA3ODUxPiBTaGFy
ZSB0aGlzIGNvZGUgd2l0aCBDb3JlQW5pbWF0aW9uJ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IGZmZTIzNTdlOTM2NWZlZDIw
MjYzZDdiZDg2OGVhNzNjY2VhYTJkODUuLjkyNTMyZGJkY2E0MWI4NTMxZTkxNjhjZGRkZTMxYjU3
YTdmNDU2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNh
dGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0
aW9uQ2VudGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdHJ1Y3QgV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyUHJpdmF0ZSB7CiBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50
ZXI6Om1fZGVmYXVsdENlbnRlciA9IDA7CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90
aWZpY2F0aW9uQ2VudGVyKCkKLSAgICA6IGQoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRp
b25DZW50ZXJQcml2YXRlPigpKQorICAgIDogZChtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNl
bnRlclByaXZhdGU+KCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAppbmRleCBjMjMwOGVlMDViNmU4NzQ3ZWRjMjk3NWFmMjlhNmRkMGNkNDlkYzE5Li4x
NDM5MDAyNjU0NGU5ZDY3NzUwN2I5NTViOTkwMGU3NDg1ZDJkYjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcApAQCAtMTg4MCw3ICsxODgwLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5k
bGVNb3VzZUV2ZW50KFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkK
ICAgICAgICAgbW91c2VFdmVudC5zZXRDbGlja0NvdW50KGdsb2JhbENsaWNrQ291bnQpOwogICAg
ICAgICBoYW5kbGVkID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5tb3VzZU1v
dmVkKG1vdXNlRXZlbnQpOwogICAgICAgICBpZiAoIW1fbW91c2VPdXRUcmFja2VyKSB7Ci0gICAg
ICAgICAgICBtX21vdXNlT3V0VHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8VFJBQ0tNT1VTRUVW
RU5UPigpOworICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxUUkFDS01PVVNFRVZFTlQ+KCk7CiAgICAgICAgICAgICBtX21vdXNl
T3V0VHJhY2tlci0+Y2JTaXplID0gc2l6ZW9mKFRSQUNLTU9VU0VFVkVOVCk7CiAgICAgICAgICAg
ICBtX21vdXNlT3V0VHJhY2tlci0+ZHdGbGFncyA9IFRNRV9MRUFWRTsKICAgICAgICAgICAgIG1f
bW91c2VPdXRUcmFja2VyLT5od25kVHJhY2sgPSBtX3ZpZXdXaW5kb3c7CkBAIC02Nzk0LDcgKzY3
OTQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUoX0lu
XyBCU1RSIG1pbWVUeXBlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYgKCFt
X2VtYmVkZGVkVmlld01JTUVUeXBlcykKLSAgICAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgbV9lbWJlZGRl
ZFZpZXdNSU1FVHlwZXMgPSBtYWtlVW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKTsKIAogICAgIG1f
ZW1iZWRkZWRWaWV3TUlNRVR5cGVzLT5hZGQodG9TdHJpbmcobWltZVR5cGUpKTsKICAgICByZXR1
cm4gU19PSzsKQEAgLTY4OTQsNyArNjg5NCw3IEBAIHZvaWQgV2ViVmlldzo6ZW50ZXJWaWRlb0Z1
bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50CiAg
ICAgICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyKTsKICAgICB9CiAKLSAg
ICBtX2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI+KCk7CisgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyID0g
bWFrZVVuaXF1ZTxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyPigpOwogICAgIG1fZnVsbFNjcmVl
blZpZGVvQ29udHJvbGxlci0+c2V0VmlkZW9FbGVtZW50KCZ2aWRlb0VsZW1lbnQpOwogICAgIG1f
ZnVsbFNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAjZW5kaWYKQEAg
LTY5NDYsNyArNjk0Niw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3JvdXAo
X0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAKICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9j
YXN0PFdlYlNjcmlwdFdvcmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHVzZXJTY3JpcHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwgdG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCisgICAgYXV0byB1c2VyU2NyaXB0ID0gbWFr
ZVVuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdo
aXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLAogICAgICAgICB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QsIGJsYWNrbGlzdENvdW50KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50
U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLAogICAg
ICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxs
RnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh3b3JsZC0+d29ybGQoKSwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSk7CkBAIC02OTczLDcgKzY5NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJT
dHlsZVNoZWV0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgV2ViU2NyaXB0V29ybGQqIHdvcmxkID0g
cmVpbnRlcnByZXRfY2FzdDxXZWJTY3JpcHRXb3JsZCo+KGlXb3JsZCk7Ci0gICAgYXV0byBzdHls
ZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1
cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdW
ZWN0b3IoYmxhY2tsaXN0LCBibGFja2xpc3RDb3VudCksCisgICAgYXV0byBzdHlsZVNoZWV0ID0g
bWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1Zl
Y3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0
LCBibGFja2xpc3RDb3VudCksCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYkluamVjdElu
QWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwgVXNl
clN0eWxlVXNlckxldmVsKTsKICAgICB2aWV3R3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigp
LmFkZFVzZXJTdHlsZVNoZWV0KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJ
bmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKICAgICByZXR1cm4gU19PSzsKQEAgLTcyMzcsNyAr
NzIzNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGFj
Y2VsZXJhdGVkKQogICAgIH0KICNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAgICBpZiAo
YWNjZWxlcmF0ZWQgJiYgIW1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQpCi0gICAgICAg
IG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PigqdGhpcyk7CisgICAgICAgIG1fYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0PigqdGhpcyk7CiAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBhY2NlbGVyYXRl
ZDsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDEwOGEzMTUyNGIxZTYxZTUxOTI0MzU1NzQ1OTY1YzJmODBkMDA4MjQuLjViNzdm
MTAyY2Q4ZWM3ZjhkMDlkZDY5ZmY2NzA4M2UxY2Y0MWU5NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjEgQEAKKzIwMTktMDgt
MTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBB
ZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtl
VW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKGFkZFVSTFRvUmVkaXJlY3RDYWxsYmFjayk6CisgICAg
ICAgIChzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwpOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6cnVuVUlTY3JpcHQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmls
ZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAg
ICAgICAgKGR1bXBGcmFtZXNBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9F
dmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAoZXZlbnRQcmVzc2VkTW91c2VCdXR0
b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dp
bi9EUlREYXRhT2JqZWN0LmNwcDoKKyAgICAgICAgKERSVERhdGFPYmplY3Q6OlNldERhdGEpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAg
ICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6RnJhbWVMb2FkRGVsZWdhdGUpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKERSVFVuZG9NYW5hZ2Vy
OjpEUlRVbmRvTWFuYWdlcik6CisgICAgICAgIChVSURlbGVnYXRlOjpVSURlbGVnYXRlKToKKyAg
ICAgICAgKFVJRGVsZWdhdGU6OnJlc2V0VW5kb01hbmFnZXIpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuSlNU
ZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9IYXNoTWFwLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdE1vdmluZ1VzaW5nRW5zdXJlKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OnRlc3RNb3ZpbmdVc2luZ0FkZCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Mb2NrLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkxvY2tUZXN0KToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Ro
cmVhZEdyb3VwLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkNBUmluZ0J1ZmZlclRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpjcmVhdGVUZXN0VmFsdWUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpj
cmVhdGVOZXdQYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0
RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Oldl
YktpdDJVc2VyTWVzc2FnZVJvdW5kVHJpcFRlc3Q6OlNldFVwKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpXZWJLaXQyV2lsbExvYWRUZXN0OjpTZXRVcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Rm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZVRlc3Q6
OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcDoKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToK
KyAgICAgICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Qcm94eUhUVFBTKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VXRpbDo6dG9TVEQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5tbToKKyAgICAgICAgKGFwcGx5V29ya2Fyb3VuZFRvQWxsb3dXcml0aW5nQXR0
cmlidXRlZFN0cmluZ3NUb0l0ZW1Qcm92aWRlcnMpOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3
IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjphZGRUb1dpbmRvdzpdKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW06CisgICAgICAgICgtW1Rlc3RGb250
T3B0aW9ucyBpbml0V2l0aEZvbnRPcHRpb25zOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9TdHJpbmdGdW5jdGlvbnMuaDoK
KyAgICAgICAgKFdUUjo6dG9TVEQpOgorICAgICAgICAoV1RSOjp0b1dURlN0cmluZyk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6OmNyZWF0
ZVRlc3RVUkwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cnVuVGVzdCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2NyaXB0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChXVFI6OmdldEdES0tleVN5
bUZvcktleVJlZik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xs
ZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3Rh
dGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0
S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5
Ojptb3VzZURvd24pOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclByb3h5Ojptb3VzZVVwKToK
KyAgICAgICAgKFdUUjo6RXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8pOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwOgorICAgICAgICAo
V1RSOjp3cGVLZXlTeW1Gb3JLZXlSZWYpOgorCiAyMDE5LTA4LTE1ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdo
aWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZCwgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQg
YW5ub3RhdGlvbiBwYXJ0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDkwYzY0
YzM2MTRjZGM0MmRiNmY0OTQyYmRlMWFkMTMwZmQxZmQ5Y2IuLmQ3Y2MyOGNiMGIyNjJhOWY4OWNj
NGM5NzlhZGU0YjkyNWNkZWQwODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBA
IC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNjMsMTEgKzM2NCwxMSBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBhZGRVUkxUb1JlZGlyZWN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bgogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVuZ3Ro
ID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKG9yaWdpbi5nZXQoKSk7Ci0gICAg
YXV0byBvcmlnaW5CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsg
MSk7CisgICAgYXV0byBvcmlnaW5CdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4obWF4TGVu
Z3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhvcmlnaW4uZ2V0KCksIG9yaWdp
bkJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBtYXhMZW5ndGggPSBKU1N0cmlu
Z0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoZGVzdGluYXRpb24uZ2V0KCkpOwotICAgIGF1dG8g
ZGVzdGluYXRpb25CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsg
MSk7CisgICAgYXV0byBkZXN0aW5hdGlvbkJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPiht
YXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGRlc3RpbmF0aW9uLmdl
dCgpLCBkZXN0aW5hdGlvbkJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0
UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xMzE4LDcgKzEzMTksNyBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKUwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBzaXplX3QgbWF4TGVu
Z3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGhlYWRlci5nZXQoKSk7Ci0g
ICAgYXV0byBoZWFkZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3Ro
ICsgMSk7CisgICAgYXV0byBoZWFkZXJCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4obWF4
TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhoZWFkZXIuZ2V0KCksIGhl
YWRlckJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBUZXN0UnVubmVyKiBjb250
cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7CkBAIC0yMzk0LDcgKzIzOTUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNob3Vs
ZFBhaW50QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKQogdm9pZCBUZXN0
UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5uZWwp
CiB7CiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5n
U2l6ZShjaGFubmVsKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltd
PihtYXhMZW5ndGggKyAxKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFy
PihtYXhMZW5ndGggKyAxKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGNoYW5uZWwsIGJ1
ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsgMSk7CiAKICAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNl
dExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoeyBidWZmZXIuZ2V0KCkgfSk7CkBAIC0yNDY0LDcgKzI0
NjUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnJ1blVJU2NyaXB0KEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1N0cmluZ1JlZiBzY3JpcHQsIEpTVmFsdWVSZQogICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxi
YWNrKGNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKIAogICAgIGlmICghbV9VSVNjcmlwdENvbnRleHQp
Ci0gICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXVFI6OlVJU2Ny
aXB0Q29udGV4dD4oKnRoaXMpOworICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9IG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFdUUjo6VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CiAK
ICAgICBTdHJpbmcgc2NyaXB0U3RyaW5nKEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihzY3JpcHQp
LCBKU1N0cmluZ0dldExlbmd0aChzY3JpcHQpKTsKICAgICBtX1VJU2NyaXB0Q29udGV4dC0+cnVu
VUlTY3JpcHQoc2NyaXB0U3RyaW5nLCBjYWxsYmFja0lEKTsKQEAgLTI1MjEsNyArMjUyMiw3IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0T3BlblBhbmVsRmlsZXMoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYgZmlsZXNWYWx1ZSkKIAogICAgICAgICBhdXRvIGZpbGUgPSBhZG9wdChKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGZpbGVWYWx1ZSwgbnVsbHB0cikpOwogICAgICAgICBz
aXplX3QgZmlsZUJ1ZmZlclNpemUgPSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUo
ZmlsZS5nZXQoKSkgKyAxOwotICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGNoYXJbXT4oZmlsZUJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGZpbGVCdWZmZXIgPSBt
YWtlVW5pcXVlQXJyYXk8Y2hhcj4oZmlsZUJ1ZmZlclNpemUpOwogICAgICAgICBKU1N0cmluZ0dl
dFVURjhDU3RyaW5nKGZpbGUuZ2V0KCksIGZpbGVCdWZmZXIuZ2V0KCksIGZpbGVCdWZmZXJTaXpl
KTsKIAogICAgICAgICBtX29wZW5QYW5lbEZpbGVzLnB1c2hfYmFjayhmaWxlQnVmZmVyLmdldCgp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAyZTkz
OTdmZjU5NDkyNTAwZmIwODY4NzFjOGFmN2M2ZjE2NjlhYmY0Li4wOGRlOWJkOTJlZDJmYjFhYjA3
ZGFmYTc5ZWNjOWY4MDk0NTk4NmIzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCkBAIC05Nyw2ICs5Nyw3IEBACiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZp
bGVnZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGlu
Zy5oPgorI2ltcG9ydCA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTUzNSw3
ICsxNTM2LDcgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVzQXNUZXh0KFdlYkZyYW1lICpm
cmFtZSkKICAgICAvLyB0aGUgcmVzdWx0IHdpdGhvdXQgYW55IGNvbnZlcnNpb24uCiAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcoKF9fYnJpZGdlIENGU3RyaW5nUmVmKWlubmVyVGV4dCkpOwogICAgIHNpemVf
dCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZ1Jl
Zi5nZXQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVm
ZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oYnVmZmVy
U2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdO
b25TdHJpY3Qoc3RyaW5nUmVmLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAg
IFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiJUBcbiIsIFN0cmluZzo6ZnJvbVVURjhXaXRoTGF0aW4x
RmFsbGJhY2soYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGggLSAxKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQppbmRleCA0NjFiZDNkZjNlYmIyNjAzYWMzMjE4Mjg4MjE4ZGQ4ZjY5MTY4
ZmZkLi4zYmUzMzIyMWQ2YjNlYmMzNTZkNTFlMzM0YTI0ZDkyOWFlMjUzYTllIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAt
NTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q2xhc3NNZXRob2RTd2l6emxl
cj4gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXJGb3JWCiB7CiAgICAgaWYgKFt2aWV3
IGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3IGNsYXNzXV0pCiAgICAgICAgIHZpZXcgPSBbKFdl
YkhUTUxWaWV3ICopdmlldyBfaGl0Vmlld0ZvckV2ZW50OmV2ZW50XTsKLSAgICByZXR1cm4gIVt2
aWV3IGlzS2luZE9mQ2xhc3M6W05TU2Nyb2xsZXIgY2xhc3NdXSA/IHN0ZDo6bWFrZV91bmlxdWU8
Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1v
dXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1v
dXNlQnV0dG9ucykpIDogTlVMTDsKKyAgICByZXR1cm4gIVt2aWV3IGlzS2luZE9mQ2xhc3M6W05T
U2Nyb2xsZXIgY2xhc3NdXSA/IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZl
bnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpIDogTlVMTDsKIH0KIAog
c3RhdGljIE5TVUludGVnZXIgc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCmluZGV4IGNlODJlYTFlMjdk
YmQyNzkyYjEwNDljNDk0ZWFmMGI4OWM0OWVhZDEuLmNkZmU4YWNiNDY4Yzc0ZDBhZTA4NGNmODc2
ZDUzNGZmMWUzYmE1N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlRE
YXRhT2JqZWN0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVj
dC5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCBTVERNRVRIT0RJTVAgRFJURGF0YU9iamVjdDo6U2V0
RGF0YShfSW5fIEZPUk1BVEVUQyogcGZvcm1hdGV0YywgX0luXyBTVEdNRURJVU0qCiAgICAgaWYg
KCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0g
ICAgYXV0byBmb3JtYXRldGMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZPUk1BVEVUQz4oKTsKKyAgICBh
dXRvIGZvcm1hdGV0YyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPEZPUk1BVEVU
Qz4oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1RHTUVESVVNLCBTdGdNZWRpdW1EZWxldGVyPiBw
U3RnTWVkKG5ldyBTVEdNRURJVU0pOwogCiAgICAgWmVyb01lbW9yeShmb3JtYXRldGMuZ2V0KCks
IHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuY3BwCmluZGV4IGM4MGRmMWJlNWYyZGU0N2QzYjgzMTYzN2VmNmU5ZmJjZDkz
NGM4ZTYuLjExYzkzMzliMTZkODA0ZDJjMjAxYzkzMjlmNGE4YzM1NDQyYTgzY2IgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcApAQCAtNzIsOSAr
NzIsOSBAQCBzdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoSVdlYkZyYW1l
KiB3ZWJGcmFtZSkKIH0KIAogRnJhbWVMb2FkRGVsZWdhdGU6OkZyYW1lTG9hZERlbGVnYXRlKCkK
LSAgICA6IG1fZ2NDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8R0NDb250cm9sbGVyPigpKQot
ICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyPigpKQotICAgICwgbV90ZXh0SW5wdXRDb250cm9sbGVyKHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dElucHV0Q29udHJvbGxlcj4oKSkKKyAgICA6IG1fZ2NDb250cm9sbGVyKG1h
a2VVbmlxdWU8R0NDb250cm9sbGVyPigpKQorICAgICwgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cihtYWtlVW5pcXVlPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPigpKQorICAgICwgbV90ZXh0SW5w
dXRDb250cm9sbGVyKG1ha2VVbmlxdWU8VGV4dElucHV0Q29udHJvbGxlcj4oKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCmluZGV4IGQxN2NmNzRmNGZiYmE1
NzE0Nzc2Y2IwMDc3ZTlkNzBmNzI0YzNkNjMuLjhmODJmMGQ5MjZjMGFkNjk2MTAxYTViMTM1NGU3
ZTcwZjQzODQ0M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVn
YXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKQEAg
LTEwNCw4ICsxMDQsOCBAQCBjbGFzcyBEUlRVbmRvTWFuYWdlciB7CiB9OwogCiBEUlRVbmRvTWFu
YWdlcjo6RFJUVW5kb01hbmFnZXIoKQotICAgIDogbV9yZWRvU3RhY2soc3RkOjptYWtlX3VuaXF1
ZTxEUlRVbmRvU3RhY2s+KCkpCi0gICAgLCBtX3VuZG9TdGFjayhzdGQ6Om1ha2VfdW5pcXVlPERS
VFVuZG9TdGFjaz4oKSkKKyAgICA6IG1fcmVkb1N0YWNrKG1ha2VVbmlxdWU8RFJUVW5kb1N0YWNr
PigpKQorICAgICwgbV91bmRvU3RhY2sobWFrZVVuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCiB7CiB9
CiAKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIERSVFVuZG9NYW5hZ2VyOjp1bmRvKCkKIH0KIAog
VUlEZWxlZ2F0ZTo6VUlEZWxlZ2F0ZSgpCi0gICAgOiBtX3VuZG9NYW5hZ2VyKHN0ZDo6bWFrZV91
bmlxdWU8RFJUVW5kb01hbmFnZXI+KCkpCisgICAgOiBtX3VuZG9NYW5hZ2VyKG1ha2VVbmlxdWU8
RFJUVW5kb01hbmFnZXI+KCkpCiAgICAgLCBtX2Rlc2t0b3BOb3RpZmljYXRpb25zKG5ldyBEUlRE
ZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyKQogewogICAgIG1fZnJhbWUuYm90dG9tID0gMDsK
QEAgLTE2MCw3ICsxNjAsNyBAQCBVSURlbGVnYXRlOjpVSURlbGVnYXRlKCkKIAogdm9pZCBVSURl
bGVnYXRlOjpyZXNldFVuZG9NYW5hZ2VyKCkKIHsKLSAgICBtX3VuZG9NYW5hZ2VyID0gc3RkOjpt
YWtlX3VuaXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKKyAgICBtX3VuZG9NYW5hZ2VyID0gbWFrZVVu
aXF1ZTxEUlRVbmRvTWFuYWdlcj4oKTsKIH0KIAogSFJFU1VMVCBVSURlbGVnYXRlOjpRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKaW5kZXggMjEzNmU5OGQ4ZWJiODc1
ZDU5N2ZjNmUwN2M3YjAxZWQ1Yjg0YWUxNi4uZDhlMzIzZWRlM2RhODkyMzU5ZGJkMzQ4Mzk4OGU0
YzBlM2E4NThhMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVz
dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIApAQCAtNzUsNyArNzYsNyBAQCA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBy
dW5KU1Rlc3QoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgV0tQYQogICAg
IFV0aWw6OnJ1bigmY29udGV4dC5kaWRGaW5pc2gpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY29udGV4dC5hY3R1YWxTdHJpbmcu
Z2V0KCkpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZl
clNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNp
emUpOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoY29udGV4dC5hY3R1YWxTdHJpbmcuZ2V0
KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgCiAgICAgcmV0dXJuIGNvbXBhcmVK
U1Jlc3VsdChzY3JpcHQsIGJ1ZmZlci5nZXQoKSwgZXhwZWN0ZWRSZXN1bHQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAppbmRleCA4ZjhkNzY4YTUzYzI3NTFhMjQz
ZTA1OTVlMmMwYzBmNDQ1ZGQ5NmM4Li45NDk5YmM2YTAwZDE5NzJlMjY1MGRlNmQwZTM1ZTA3MmYz
NzA3ZWFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVz
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFjZSBVdGlsIHsK
QEAgLTY5LDcgKzcwLDcgQEAgV0tDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1
bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3ROYW1lLCBXS1QKIHN0ZDo6c3RyaW5nIHRv
U1REKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3Ry
aW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpOwotICAgIGF1dG8gYnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0g
bWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5n
dGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJT
aXplKTsKICAgICByZXR1cm4gc3RkOjpzdHJpbmcoYnVmZmVyLmdldCgpLCBzdHJpbmdMZW5ndGgg
LSAxKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVj
dGVkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcAppbmRl
eCA1MGY5MTFkYjU5MGVmMjIyMDJjNGFiODEwZDdjN2E4MDBmNWVkYWExLi4yYTA2ZjhiYTVjYTlm
ZWI0OTJhMzUyMmM1YzY1NTAxMzhkMjIzN2U1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9FeHBlY3RlZC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRXhwZWN0ZWQuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQs
IHVuaXF1ZV9wdHIpCiB7CiAgICAgLy8gVW5pcXVlIHNub3dmbGFrZXMgY2Fubm90IGJlIGNvcGll
ZC4KICAgICB7Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlx
dWU8c25vd2ZsYWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQobWFrZVVu
aXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CiAg
ICAgICAgIEVYUEVDVF9FUShtZWx0ZWQsIDApOwogICAgIH0KQEAgLTQyNiw3ICs0MjYsNyBAQCBU
RVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0KCk7CiAK
ICAgICB7Ci0gICAgICAgIGF1dG8gcyA9IG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8
c25vd2ZsYWtlPigpKTsKKyAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1
ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBVbmV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93
Zmxha2U+PiBjKFdURk1vdmUocykpOwogICAgICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7
CiAgICAgICAgIEVYUEVDVF9FUShtZWx0ZWQsIDApOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIFRFU1Qo
V1RGX0V4cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIH07CiAKICAgICB7Ci0gICAgICAgIEV4cGVj
dGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMoc3RkOjptYWtlX3VuaXF1ZTxz
bm93Zmxha2U+KCkpOworICAgICAgICBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtl
PiwgaW50PiBzKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKTsKICAgICAgICAgcGxvdyhXVEZNb3Zl
KHMpLnZhbHVlKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtlcywgMSk7CkBAIC00
NTUsNyArNDU1LDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIpCiAgICAgc25vd2Zs
YWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDxpbnQsIHN0ZDo6dW5pcXVl
X3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25vd2Zs
YWtlPigpKSk7CisgICAgICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dmbGFr
ZT4+IHMobWFrZVVuZXhwZWN0ZWQobWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpKTsKICAgICAgICAg
cGxvdyhXVEZNb3ZlKHMpLmVycm9yKCkpOwogICAgIH0KICAgICBFWFBFQ1RfRVEoc25vd2ZsYWtl
cywgMSk7CkBAIC00NjMsNyArNDYzLDcgQEAgVEVTVChXVEZfRXhwZWN0ZWQsIHVuaXF1ZV9wdHIp
CiAgICAgc25vd2ZsYWtlOjpyZXNldCgpOwogCiAgICAgewotICAgICAgICBFeHBlY3RlZDx2b2lk
LCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChzdGQ6Om1ha2Vf
dW5pcXVlPHNub3dmbGFrZT4oKSkpOworICAgICAgICBFeHBlY3RlZDx2b2lkLCBzdGQ6OnVuaXF1
ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4o
KSkpOwogICAgICAgICBwbG93KFdURk1vdmUocykuZXJyb3IoKSk7CiAgICAgfQogICAgIEVYUEVD
VF9FUShzbm93Zmxha2VzLCAxKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hDb3VudGVkU2V0LmNwcAppbmRleCA4NGRhNWVjM2ZmYzI0OGFjZGQ5ZTM2MzMwMzhjNjlk
YWU4OTEyMDk5Li43YjhmYWYyODhhYmMwN2NmYWY4YjUyNzEyMzhmNzZkMDEzMDEyZWU2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50ZWRTZXQuY3BwCkBA
IC0yNDEsNyArMjQxLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleSkK
IAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVu
aXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAg
ICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9F
USgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpA
QCAtMjU5LDcgKzI1OSw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlxdWVQdHJLZXlJ
bml0aWFsQ291bnQpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlx
dWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXI+KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMTIp
OwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25z
dHJ1Y3Rpb25Db3VudCk7CkBAIC0yOTgsNyArMjk4LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRT
ZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hDb3VudGVk
U2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5p
cXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9
IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHIpKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIFRFU1QoV1RGX0hhc2hDb3VudGVkU2V0LCBVbmlx
dWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8
c3RkOjp1bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5p
cXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikp
OwogCkBAIC0zMjMsNyArMzIzLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0
cktleV9HZXRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1bmlx
dWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdl
dCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0z
MzcsNyArMzM3LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9SZW1v
dmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0
byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0g
dW5pcXVlUHRyLmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0
cikpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFw
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCmluZGV4IDlm
ZGY1MWQ1MDc0OGVjMGMyN2VmZDIxYzNjZmI4NTJhNDQyODFiOTAuLmE3MGMxNjM1NmI2YzFkMjY5
NjdmNzVjNjkxMGJjMWMwMTQ2MjRmOGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hNYXAuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVl
UHRyS2V5KQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVj
dG9yQ291bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQ
dHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgbWFw
LmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yMzAsNyArMjMw
LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIp
CiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBh
dXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1
ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50
KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciks
IDIpOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5
X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRy
PGludD4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1h
cC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjU1LDcgKzI1NSw3IEBAIFRFU1Qo
V1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9HZXRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFz
aE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlx
dWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0y
NjksNyArMjY5LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5n
UmF3UG9pbnRlcikKIAogICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVz
dHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5p
cXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAg
IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAg
ICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI4OSw3ICsyODksNyBAQCBU
RVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfVGFrZVVzaW5nUmF3UG9pbnRlcikKIAogICAg
IEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBp
bnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUo
dW5pcXVlUHRyKSwgMik7CiAKQEAgLTU2MywxMiArNTYzLDEyIEBAIFRFU1QoV1RGX0hhc2hNYXAs
IEVuc3VyZV9VbmlxdWVQb2ludGVyKQogewogICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5p
cXVlX3B0cjx1bnNpZ25lZD4+IG1hcDsKICAgICB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
bWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkPigxKTsg
fSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBt
YWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZD4oMSk7IH0pOwogICAgICAg
ICBFWFBFQ1RfRVEoMXUsICptYXAuZ2V0KDEpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgYWRk
UmVzdWx0Lml0ZXJhdG9yLT5rZXkpOwogICAgICAgICBFWFBFQ1RfVFJVRShhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1hcC5lbnN1cmUoMSwgW10geyBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZD4oMik7IH0pOworICAgICAgICBhdXRvIGFk
ZFJlc3VsdDIgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPHVuc2lnbmVkPigyKTsgfSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKm1h
cC5nZXQoMSkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQyLml0ZXJhdG9yLT52
YWx1ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgYWRkUmVzdWx0Mi5pdGVyYXRvci0+
a2V5KTsKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIHRlc3RNb3ZpbmdVc2luZ0Vuc3VyZShSZWY8
UmVmTG9nZ2VyPiYmIGxvZ2dlcikKIHsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1
ZV9wdHI8T2JqZWN0V2l0aFJlZkxvZ2dlcj4+IG1hcDsKICAgICAKLSAgICBtYXAuZW5zdXJlKDEs
IFsmXSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+KFdURk1v
dmUobG9nZ2VyKSk7IH0pOworICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0dXJuIG1ha2VVbmlx
dWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIpKTsgfSk7CiB9CiAKIHZvaWQg
dGVzdE1vdmluZ1VzaW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQpAQCAtNjEzLDcgKzYx
Myw3IEBAIHZvaWQgdGVzdE1vdmluZ1VzaW5nQWRkKFJlZjxSZWZMb2dnZXI+JiYgbG9nZ2VyKQog
ICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RXaXRoUmVmTG9nZ2Vy
Pj4gbWFwOwogCiAgICAgYXV0byYgc2xvdCA9IG1hcC5hZGQoMSwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOwotICAgIHNsb3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFdpdGhSZWZMb2dnZXI+
KFdURk1vdmUobG9nZ2VyKSk7CisgICAgc2xvdCA9IG1ha2VVbmlxdWU8T2JqZWN0V2l0aFJlZkxv
Z2dlcj4oV1RGTW92ZShsb2dnZXIpKTsKIH0KIAogVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX0xh
bWJkYXNDYXB0dXJpbmdCeVJlZmVyZW5jZSkKQEAgLTY5OSw3ICs2OTksNyBAQCBzdHJ1Y3QgRGVy
ZWZPYnNlcnZlciB7CiAKIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0ck5vdFplcm9lZEJlZm9yZURl
cmVmKQogewotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcmVmT2JzZXJ2
ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsK
IAogICAgIEhhc2hNYXA8UmVmUHRyPERlcmVmT2JzZXJ2ZXI+LCBpbnQ+IG1hcDsKICAgICBtYXAu
YWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSwgNSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0hhc2hTZXQuY3BwCmluZGV4IGJjZjE1OWMzMzgxNmFlZWFiM2NjMzMyZmE1ZDgwZWU0
MzVkZDZmYTYuLmU2NmI5Yzc3ZTcwNTc4NGRhNDYxZmUxMjcwOGQ3MTAzZDc4NWMzYWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwCkBAIC0xMjgsNyArMTI4LDcg
QEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFzaFNldDxzdGQ6OnVu
aXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1dG8g
dW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyPigpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVY
UEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291
bnQpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9G
aW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+
IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOwor
ICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50
Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBzZXQuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBURVNUKFdURl9IYXNoU2V0LCBV
bmlxdWVQdHJLZXlfQ29udGFpbnNVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaFNldDxzdGQ6
OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwog
ICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMTcxLDcgKzE3MSw3IEBAIFRF
U1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktleV9SZW1vdmVVc2luZ1Jhd1BvaW50ZXIpCiAKICAg
ICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4g
c2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpKTsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0
cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4+IHNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAg
IGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1ZVB0ci5n
ZXQoKTsKICAgICBzZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTI5OCw3ICsyOTgs
NyBAQCBzdHJ1Y3QgRGVyZWZPYnNlcnZlciB7CiAKIFRFU1QoV1RGX0hhc2hTZXQsIFJlZlB0ck5v
dFplcm9lZEJlZm9yZURlcmVmKQogewotICAgIGF1dG8gb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlcmVmT2JzZXJ2ZXI+KCk7CisgICAgYXV0byBvYnNlcnZlciA9IG1ha2VVbmlxdWU8RGVy
ZWZPYnNlcnZlcj4oKTsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPERlcmVmT2JzZXJ2ZXI+PiBzZXQ7
CiAgICAgc2V0LmFkZChhZG9wdFJlZihvYnNlcnZlci5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3BwCmluZGV4IDY1N2JlNDFkNjIwNzI0NDY3
YTU1NDllMmFiNWExOTQxYzRlMzczYzEuLmI3NzBhNWIyN2MxZDJiMDk1YTViYjU5ZDY1YWMzZjRk
YzRlNGU2OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RI
YXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNl
dC5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRy
S2V5KQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIg
PSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgbGlzdC5h
ZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQpOwpAQCAtMzk2LDcgKzM5Niw3IEBA
IFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikK
IHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1
dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVl
UHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRv
IHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikp
OwogCkBAIC00MTAsNyArNDEwLDcgQEAgVEVTVChXVEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktl
eV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1
ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8aW50Pig1KTsKICAgICBhdXRvIHB0ciA9IHVuaXF1ZVB0ci5nZXQoKTsKICAgICBs
aXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC00MjEsOSArNDIxLDkgQEAgVEVTVChX
VEZfTGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9JbnNlcnRCZWZvcmVVc2luZ1Jhd1BvaW50ZXIp
CiB7CiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPGludD4+IGxpc3Q7CiAKLSAgICBh
dXRvIHVuaXF1ZVB0cldpdGgyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDIpOworICAgIGF1dG8g
dW5pcXVlUHRyV2l0aDIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDIp
OwogICAgIGF1dG8gcHRyV2l0aDIgPSB1bmlxdWVQdHJXaXRoMi5nZXQoKTsKLSAgICBhdXRvIHVu
aXF1ZVB0cldpdGg0ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDQpOworICAgIGF1dG8gdW5pcXVl
UHRyV2l0aDQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDQpOwogICAg
IGF1dG8gcHRyV2l0aDQgPSB1bmlxdWVQdHJXaXRoNC5nZXQoKTsKIAogICAgIGxpc3QuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyV2l0aDIpKTsKQEAgLTQzNSw3ICs0MzUsNyBAQCBURVNUKFdURl9MaXN0
SGFzaFNldCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRlcikKICAgICBB
U1NFUlRfRVEocHRyV2l0aDQsIGxpc3QubGFzdCgpLmdldCgpKTsKICAgICBBU1NFUlRfRVEoNCwg
Kmxpc3QubGFzdCgpLmdldCgpKTsKIAotICAgIGF1dG8gdW5pcXVlUHRyV2l0aDMgPSBzdGQ6Om1h
a2VfdW5pcXVlPGludD4oMyk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMyk7CiAgICAgYXV0byBwdHJXaXRoMyA9IHVuaXF1
ZVB0cldpdGgzLmdldCgpOwogCiAgICAgbGlzdC5pbnNlcnRCZWZvcmUocHRyV2l0aDQsIFdURk1v
dmUodW5pcXVlUHRyV2l0aDMpKTsKQEAgLTQ2Miw3ICs0NjIsNyBAQCBURVNUKFdURl9MaXN0SGFz
aFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIExpc3RIYXNo
U2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gbGlzdDsK
IAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1
Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGF1dG8qIHB0ciA9IHVuaXF1ZVB0ci5nZXQo
KTsKICAgICBsaXN0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0xvY2suY3BwCmluZGV4IDJkY2NlZGNhZGNjNmMyMjI3M2RlYmMyMGYzZmY2Nzdj
ODczMjkwMjcuLmE4ZjAzYjA3ZDY4Yjg1ZjlkZTI4NjA0OWYzYzYxYTNmZTM5MmYxZTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvV29yZExvY2suaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpA
QCAtNDIsOSArNDMsOSBAQCBzdHJ1Y3QgTG9ja0luc3BlY3RvciB7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMb2NrVHlwZT4KIHZvaWQgcnVuTG9ja1Rlc3QodW5zaWduZWQgbnVtVGhyZWFkR3JvdXBzLCB1
bnNpZ25lZCBudW1UaHJlYWRzUGVyR3JvdXAsIHVuc2lnbmVkIHdvcmtQZXJDcml0aWNhbFNlY3Rp
b24sIHVuc2lnbmVkIG51bUl0ZXJhdGlvbnMpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExvY2tU
eXBlW10+IGxvY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxMb2NrVHlwZVtdPihudW1UaHJlYWRHcm91
cHMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxkb3VibGVbXT4gd29yZHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPGRvdWJsZVtdPihudW1UaHJlYWRHcm91cHMpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZQ
dHI8VGhyZWFkPltdPiB0aHJlYWRzID0gc3RkOjptYWtlX3VuaXF1ZTxSZWZQdHI8VGhyZWFkPltd
PihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXApOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxMb2NrVHlwZVtdPiBsb2NrcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PExvY2tUeXBlW10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgYXV0byB3b3JkcyA9IG1ha2VVbmlx
dWVBcnJheTxkb3VibGU+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJl
ZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVj
azxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRHcm91cHMgKiBudW1UaHJlYWRzUGVyR3JvdXAp
OwogCiAgICAgZm9yICh1bnNpZ25lZCB0aHJlYWRHcm91cEluZGV4ID0gbnVtVGhyZWFkR3JvdXBz
OyB0aHJlYWRHcm91cEluZGV4LS07KSB7CiAgICAgICAgIHdvcmRzW3RocmVhZEdyb3VwSW5kZXhd
ID0gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BhcmtpbmdM
b3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKaW5k
ZXggNDUyZTIyNzcxZGMwNjRhZGFhZmU2MjBlYjMzZTgwMTMwZjc5ZjE5Ny4uZTAwYTA5YjJhMTdh
YTczNDg1NmU0MmMxMTQ1Y2JlNjA4NjNmMGEwNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3QgU2luZ2xl
TGF0Y2hUZXN0IHsKIAogdm9pZCBydW5QYXJraW5nVGVzdCh1bnNpZ25lZCBudW1MYXRjaGVzLCB1
bnNpZ25lZCBkZWxheSwgdW5zaWduZWQgbnVtVGhyZWFkcywgdW5zaWduZWQgbnVtU2luZ2xlVW5w
YXJrcykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0g
c3RkOjptYWtlX3VuaXF1ZTxTaW5nbGVMYXRjaFRlc3RbXT4obnVtTGF0Y2hlcyk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNpbmdsZUxhdGNoVGVzdFtdPiB0ZXN0cyA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKIAogICAgIGZv
ciAodW5zaWduZWQgbGF0Y2hJbmRleCA9IG51bUxhdGNoZXM7IGxhdGNoSW5kZXgtLTspCiAgICAg
ICAgIHRlc3RzW2xhdGNoSW5kZXhdLmluaXRpYWxpemUobnVtVGhyZWFkcyk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCmluZGV4IDA4MWRmOWU0ZmMxZDI1
MWQ4MTRiMjI2NGJkMmQwZTA1MmMwYmQ0MWYuLmY0ZWY5ODNiMWE5ZmJlODk4MDdjNzVhYzI4ZmRi
NjI2ZDlhOTZhMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jl
ZkNvdW50ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50
ZXIuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgVEVTVChXVEYsIFJlZkNvdW50ZXIpCiBURVNUKFdU
RiwgUmVmQ291bnRlckRlbGV0ZUNvdW50ZXJXaXRoT3V0c3RhbmRpbmdUb2tlbnMpCiB7CiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdENvdW50ZXI+IGNvdW50ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRlc3RDb3VudGVyPihbJl0oUmVmQ291bnRlckV2ZW50IGV2ZW50KSB7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IG1ha2VVbmlxdWU8VGVz
dENvdW50ZXI+KFsmXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsKICAgICAgICAgICAgIGlmICgh
Y291bnRlci0+dmFsdWUoKSkKICAgICAgICAgICAgICAgICBjb3VudGVyID0gbnVsbHB0cjsKICAg
ICAgICAgfSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJl
YWRHcm91cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRHcm91cC5j
cHAKaW5kZXggZjQwZWRhOGI0YzNkN2U2Y2MzZmU0MTE5MzM3NzVlMDA0MzAxNzJhYi4uYTZmMTUx
OWMwMDIxZGU2OTQ1MGM4NGIwYmJiM2I2ZjVlMjUxYjU0MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRp
YyB1bnNpZ25lZCBjb3VudFRocmVhZEdyb3VwcyhWZWN0b3I8UmVmPFRocmVhZD4+JiB0aHJlYWRz
KQogCiBURVNUKFdURiwgVGhyZWFkR3JvdXBSZW1vdmUpCiB7Ci0gICAgY29uc3QgdW5zaWduZWQg
TnVtYmVyT2ZUaHJlYWRzID0gNjQ7CisgICAgY29uc3QgdW5zaWduZWQgTnVtYmVyT2ZUaHJlYWRz
ID0gMTY7CiAKICAgICBMb2NrIGxvY2s7CiAgICAgQ29uZGl0aW9uIHRocmVhZFJ1bm5pbmdDb25k
aXRpb247CkBAIC0xNzksOCArMTc5LDExIEBAIFRFU1QoV1RGLCBUaHJlYWRHcm91cFJlbW92ZSkK
IAogICAgIEVYUEVDVF9FUSgwVSwgY291bnRUaHJlYWRHcm91cHModGhyZWFkcykpOwogCi0gICAg
dGhyZWFkUnVubmluZyA9IGZhbHNlOwotICAgIHRocmVhZFJ1bm5pbmdDb25kaXRpb24ubm90aWZ5
QWxsKCk7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2spOworICAg
ICAgICB0aHJlYWRSdW5uaW5nID0gZmFsc2U7CisgICAgICAgIHRocmVhZFJ1bm5pbmdDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1i
ZXJPZlRocmVhZHM7IGkrKykKICAgICAgICAgdGhyZWFkc1tpXS0+d2FpdEZvckNvbXBsZXRpb24o
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKaW5kZXggMGVm
MWYxZGE0NGJhYzUxNTRmZmZkMzMyMTM5NWU5ZjFlMmQyYTdjMi4uNTFlY2EwNzY4ZDJjY2UxYzlh
MzI5NTU1MmQzNTAwOWZmNGZkNTZiYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvVmFyaWFudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VmFyaWFudC5jcHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBURVNUKFdURl9WYXJpYW50LCBDb25zdHJ1
Y3RvckRlc3RydWN0b3IpCiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6VGVzdGlu
Z1Njb3BlIHNjb3BlOwogCiAgICAgewotICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICAgICAgYXV0byB1
bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAg
ICAgICAgIFZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+LCBpbnQ+IHYgPSBXVEZNb3ZlKHVuaXF1ZVB0cik7CiAKICAgICAgICAgRVhQRUNUX0VRKDF1
LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwCmluZGV4IDQ3YzE1YjljNzFmOTMw
OWY5MzRiYWM4ZDM0ZjRiMjgxMmRmZWFkZjkuLjdlNjMwNjkzZWVjNjA0MWEzNzUwNDRhZjk0OWQ4
NzQ2YjY5NWNhNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dl
YWtQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3Bw
CkBAIC01NzksMTAgKzU3OSwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldEV4cGFu
c2lvbikKICAgICAgICAgRVhQRUNUX0VRKHdlYWtIYXNoU2V0LmNhcGFjaXR5KCksIDB1KTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoaW5pdGlhbENhcGFjaXR5IC8gbWF4TG9hZENhcCk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbml0aWFsQ2FwYWNpdHkgLyBtYXhMb2FkQ2FwOyAr
K2kpIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNlPigp
OworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAg
ICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3RzLmFwcGVu
ZChXVEZNb3ZlKG9iamVjdCkpOwotICAgICAgICAgICAgb3RoZXJPYmplY3RzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEJhc2U+KCkpOworICAgICAgICAgICAgb3RoZXJPYmplY3RzLmFwcGVuZCht
YWtlVW5pcXVlPEJhc2U+KCkpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuY2hlY2tDb25zaXN0
ZW5jeSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShzX2Jhc2VXZWFrUmVmZXJlbmNl
cywgb3RoZXJPYmplY3RzLnNpemUoKSk7CkBAIC02MTYsNyArNjE2LDcgQEAgVEVTVChXVEZfV2Vh
a1B0ciwgV2Vha0hhc2hTZXRFeHBhbnNpb24pCiAgICAgICAgIEVYUEVDVF9FUSh3ZWFrSGFzaFNl
dC5jYXBhY2l0eSgpLCAwdSk7CiAgICAgICAgIHVuc2lnbmVkIG9iamVjdENvdW50ID0gaW5pdGlh
bENhcGFjaXR5ICogMjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9iamVjdENv
dW50OyArK2kpIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNlPigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAg
ICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAgICAgICBvYmplY3Rz
LmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuY2hlY2tD
b25zaXN0ZW5jeSgpOwpAQCAtNjY4LDEwICs2NjgsMTAgQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vh
a0hhc2hTZXRDb21wdXRlc0VtcHR5KQogICAgIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4g
d2Vha0hhc2hTZXQ7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzZT4+IG9iamVj
dHM7Ci0gICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7
CisgICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAg
IHdlYWtIYXNoU2V0LmFkZCgqZmlyc3RPYmplY3QpOwogICAgICAgICBkbyB7Ci0gICAgICAgICAg
ICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1
dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQu
YWRkKCpvYmplY3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3Qp
KTsKICAgICAgICAgfSB3aGlsZSAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSA9PSBmaXJzdE9i
amVjdC5nZXQoKSk7CkBAIC03MzUsOCArNzM1LDggQEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hh
c2hTZXRDb21wdXRlU2l6ZSkKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIFdlYWtIYXNoU2V0
PEJhc2U+IHdlYWtIYXNoU2V0OwotICAgICAgICBhdXRvIGZpcnN0T2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxCYXNlPigpOwotICAgICAgICBhdXRvIGxhc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhc2U+KCk7CisgICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+
KCk7CisgICAgICAgIGF1dG8gbGFzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAg
ICAgd2Vha0hhc2hTZXQuYWRkKCpmaXJzdE9iamVjdCk7CiAgICAgICAgIHdlYWtIYXNoU2V0LmFk
ZCgqbGFzdE9iamVjdCk7CiAgICAgICAgIGlmICh3ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpICE9
IGZpcnN0T2JqZWN0LmdldCgpKQpAQCAtNzYwLDEwICs3NjAsMTAgQEAgVEVTVChXVEZfV2Vha1B0
ciwgV2Vha0hhc2hTZXRDb21wdXRlU2l6ZSkKICAgICB7CiAgICAgICAgIFdlYWtIYXNoU2V0PEJh
c2U+IHdlYWtIYXNoU2V0OwogICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJhc2U+PiBv
YmplY3RzOwotICAgICAgICBhdXRvIG5vbkZpcnN0T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNlPigpOworICAgICAgICBhdXRvIG5vbkZpcnN0T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigp
OwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm5vbkZpcnN0T2JqZWN0KTsKICAgICAgICAgZG8g
ewotICAgICAgICAgICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7Cisg
ICAgICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAg
IHdlYWtIYXNoU2V0LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdU
Rk1vdmUob2JqZWN0KSk7CiAgICAgICAgIH0gd2hpbGUgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0
KCkgPT0gbm9uRmlyc3RPYmplY3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0NBUmluZ0J1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ0FSaW5nQnVmZmVyLmNwcAppbmRleCAyYWFiNjVkZDhmZDdlZjA3MDUx
ZmI2Zjc1Njc1OGNkZTcwMmUwN2ExLi44MWQ3YmEyOTFhZTlmNGFiN2NmMmU1ZjlhYWQ2MmM5NDI0
MzUzNjcyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FS
aW5nQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FS
aW5nQnVmZmVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBDQVJpbmdCdWZmZXJUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCiAgICAgewog
ICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgICAgIG1fcmluZ0J1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOworICAgICAgICBtX3JpbmdCdWZm
ZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxDQVJpbmdCdWZmZXI+KCk7CiAg
ICAgfQogCiAgICAgLy8gQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKGRvdWJsZSBzYW1wbGVSYXRl
LCBVSW50MzIgbnVtQ2hhbm5lbHMsIFBDTUZvcm1hdCBmb3JtYXQsIGJvb2wgaXNJbnRlcmxlYXZl
ZCwgc2l6ZV90IGNhcGFjaXR5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGNkZGU2NzAwMjk3NjljZDc1ZmEw
N2ExNjFhODVlMWI5MTZhOTM1ZDQuLmRjYTQ2MzYwMmU5NmQ2MGEwNDUxMzgxMjFjYmJkY2VmYmVl
OWU1YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxj
dWxhdGlvblZhbHVlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQ2FsY3VsYXRpb25E
ZWxldGlvblRlc3ROb2RlIDogcHVibGljIFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uTm9kZSB7CiAK
IHN0YXRpYyBSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkK
IHsKLSAgICBhdXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25U
ZXN0Tm9kZT4oKTsKKyAgICBhdXRvIG5vZGUgPSBtYWtlVW5pcXVlPENhbGN1bGF0aW9uRGVsZXRp
b25UZXN0Tm9kZT4oKTsKICAgICByZXR1cm4gV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3Jl
YXRlKFdURk1vdmUobm9kZSksIFdlYkNvcmU6OlZhbHVlUmFuZ2VBbGwpOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlkb0hpZE1lc3NhZ2VUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRl
c3QuY3BwCmluZGV4IGY1OGRhOGE0MjA3M2VjOTliYmVlMzRhODViZWMzNGMwODVjNTJhNjQuLjBj
MWEwNjlmMTNjMzljNDA5ZTVkNWUxYjAzYTdlOTJiZjliMzY2YzIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3Bw
CkBAIC00OCwxMCArNDgsMTAgQEAgVEVTVChGaWRvSGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXRT
aXplKQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9IDB4MDUwNjA3MDg7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGE7CiAKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZp
ZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwg
VmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0
ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0luaXQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5zaXplKCkpOwogICAg
IEVYUEVDVF9FUSg2NHUsIGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCkuc2l6ZSgpKTsK
IAotICAgIGF1dG8gY29udGludWF0aW9uUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlk
Q29udGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOworICAgIGF1
dG8gY29udGludWF0aW9uUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkQ29udGludWF0aW9uUGFj
a2V0PihjaGFubmVsSWQsIDAsIFdURk1vdmUoZGF0YSkpOwogICAgIEVYUEVDVF9FUSg2NHUsIGNv
bnRpbnVhdGlvblBhY2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCkpOwogfQogCkBAIC03
MCw3ICs3MCw3IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0RGF0YSkKICAg
ICB1aW50MzJfdCBjaGFubmVsSWQgPSAweEY1MDYwNzA4OwogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5kIGNtZCA9IEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprV2luazsKLSAgICBhdXRvIGluaXRQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEp
LCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBpbml0UGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlk
SW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFZlY3Rvcjx1aW50OF90PihkYXRhKSwgZGF0YS5z
aXplKCkpOwogICAgIHNpemVfdCBpbmRleCA9IDA7CiAKICAgICBWZWN0b3I8dWludDhfdD4gc2Vy
aWFsaXplZCA9IGluaXRQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CkBAIC05NCw3ICs5NCw3
IEBAIFRFU1QoRmlkb0hpZE1lc3NhZ2VUZXN0LCBUZXN0UGFja2V0Q29uc3RydWN0b3JzKQogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhIHsxMCwgMTF9OwogICAgIEZpZG9IaWREZXZpY2VDb21tYW5k
IGNtZCA9IEZpZG9IaWREZXZpY2VDb21tYW5kOjprV2luazsKICAgICBzaXplX3QgbGVuZ3RoID0g
ZGF0YS5zaXplKCk7Ci0gICAgYXV0byBvcmlnUGFja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxGaWRv
SGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7Cisg
ICAgYXV0byBvcmlnUGFja2V0ID0gbWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5l
bElkLCBjbWQsIFdURk1vdmUoZGF0YSksIGxlbmd0aCk7CiAKICAgICBzaXplX3QgcGF5bG9hZExl
bmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ob3JpZ1BhY2tldC0+cGF5bG9hZExlbmd0aCgpKTsK
ICAgICBWZWN0b3I8dWludDhfdD4gb3JpZ0RhdGEgPSBvcmlnUGFja2V0LT5nZXRTZXJpYWxpemVk
RGF0YSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zp
bGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKaW5kZXggMWVkMTMyOGY4MTMwOWUxMmUxMzcxY2IzYWRmZTZiMGE5NzgzZWViNi4u
MjI4MzgzYTBmMzBhOWIxMzlmNmFhZjQzZjk1Y2VkZDgwOTE2NmU2YSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiAgICAgYXV0
byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAg
ICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBh
dGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlw
ZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVt
cEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlOjpNb2RpZmljYXRpb246CkBAIC0xOTAsNyArMTkwLDcgQEAgVEVTVF9GKEZpbGVNb25p
dG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVDaGFuZ2VzKQogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBX
b3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVlIik7CiAKLSAgICBhdXRvIG1vbml0b3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVl
LmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CisgICAg
YXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRl
c3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkg
ewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmlj
YXRpb246CkBAIC0yNTAsNyArMjUwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0
RGVsZXRpb24pCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0
IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
ZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5p
cXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10g
KEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTI4OSw3ICsyODks
NyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQog
CiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1ZXVl
Iik7CiAKLSAgICBhdXRvIG1vbml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPih0
ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxl
Q2hhbmdlVHlwZSB0eXBlKSB7CisgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9u
aXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRv
cjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewogICAgICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICBjYXNlIEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMzQ2LDcgKzM0Niw3IEBAIFRF
U1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2Up
CiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVl
dWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+
KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZp
bGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVN
b25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25p
dG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpNb2RpZmljYXRpb246CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDkyZDhhMTkyY2E3
YjJhMTA4MTU2NTk5N2IwZWE1YjFmOWFlYThmNjUuLjIxOWU5NjZkYmViYWE4NGQzNjAyNzIyZTk1
OWUzMmY2NGZiNGRiMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEN1cmxDb29raWVz
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgewogICAgICAgICBtX2Nvb2tpZURpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgpOwogCi0gICAgICAgIG1f
Y29va2llSmFyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2ll
ZGIuc3FsIikpOworICAgICAgICBtX2Nvb2tpZUphciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Q29v
a2llSmFyREI+KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nvb2tpZURp
cmVjdG9yeSwgImNvb2tpZWRiLnNxbCIpKTsKICAgICAgICAgbV9jb29raWVKYXItPm9wZW4oKTsK
ICAgICAgICAgbV9jb29raWVKYXItPnNldEFjY2VwdFBvbGljeShDb29raWVBY2NlcHRQb2xpY3k6
OkFsd2F5cyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAppbmRleCA1YzBhZTMz
MTMyOGIzNmIwYmE3MGExOGQ5OTM2Njk0MTJhY2EyOWE5Li5iM2IzYmMzY2Y0OWQ3ODU0MzA1ODQ5
ZGRhMTIxMmYxOTMyYTBkMjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5DcmVhdGVQYWdlLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2Us
IFdLVVJMUmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9w
ZW5lZFdlYlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtl
X3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtl
VW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVp
Q2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEku
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvTW9kYWxBbGVydHNTUEkuY3Bw
CmluZGV4IGE0ZmJhMTI3YzZlNGQwM2U2M2Q5YTgxNzJhMzliM2NiOGIxNDcyYzcuLjdiYzM1MjRm
MmJkYjlkYmQ3YTQzNWEzY2M2YWQzODMyZTk0NGVkZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJM
UmVxdWVzdFJlZiB1cmxSZXF1ZXN0LCBXS0RpYwogewogICAgIEVYUEVDVF9UUlVFKG9wZW5lZFdl
YlZpZXcgPT0gbnVsbHB0cik7CiAKLSAgICBvcGVuZWRXZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVdlYlZpZXc+KHBhZ2UpOworICAgIG9wZW5lZFdlYlZpZXcgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4ocGFnZSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudFY1IHVpQ2xpZW50
OwogICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRF
bmRFZGl0aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVs
ZERpZEJlZ2luQW5kRW5kRWRpdGluZy5jcHAKaW5kZXggMGY3ZmQ0MGE2M2U1ZWNmNzhjOTY4ZGY4
MDM4ZDE5MjIxZWRiZjdkNS4uY2QxOWQ3Y2RlNTg4OTYyNWYxMjIxMmZjNzUzY2ZkNTVlMjc4ZDky
MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxk
RGlkQmVnaW5BbmRFbmRFZGl0aW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHN0cnVjdCBXZWJLaXQyVGV4dEZpZWxkQmVnaW5BbmRFZGl0RWRpdGluZ1Rlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBj
b250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0
KCJUZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmdFdmVudHNUZXN0IikpOwogICAgICAgICBz
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAgICB3
ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0KCkp
OworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQu
Z2V0KCkpOwogICAgICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXctPnBhZ2UoKSwgdGhp
cyk7CiAKICAgICAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCmluZGV4IGM3YjAyNTFiZmNmMjFh
YTRhYmQxMTRjODU1MDc5MjQxZDY2MTc0ZTkuLjlkYzNhNmRhOTk1MDljMjcxMTIxZDRjM2E0NTMw
ODRmZWU5ODliZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L1VzZXJNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9V
c2VyTWVzc2FnZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgV2ViS2l0MlVzZXJNZXNzYWdl
Um91bmRUcmlwVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgewogICAgICAgICBjb250ZXh0
ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJVc2Vy
TWVzc2FnZVRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQu
Z2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIHNldFBhZ2VMb2FkZXJD
bGllbnQod2ViVmlldy0+cGFnZSgpLCB0aGlzKTsKIAogICAgICAgICBkaWRGaW5pc2hMb2FkID0g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxs
TG9hZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XaWxsTG9hZC5jcHAK
aW5kZXggZWQ5ZjBmZmM3MDI1YWIxMmNiNTM5NjdmNzIwNWZmOTZjODliZTY5OS4uNTJmMThkY2Vi
NDJkNTFhYzA4Mzk1YjYyMDAxZDRhOTU0MGY3NDUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExvYWQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcApAQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBXZWJL
aXQyV2lsbExvYWRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnRl
eHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIldp
bGxMb2FkVGVzdCIpKTsKICAgICAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5n
ZXQoKSwgdGhpcyk7CiAKLSAgICAgICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZv
cm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8
UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0LmdldCgpKTsKIAogICAgICAgICBkaWRSZWNlaXZlTWVz
c2FnZSA9IGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUlu
QnVuZGxlX0J1bmRsZS5tbQppbmRleCBhZWJhMWMzNDhmYmM2NmExNzBlNTM5ZTBhNzI4NmFlZTkx
NTNlNjA0Li44OTk1M2Q5YmNiZTUzYjllY2JhNWVlMmNiOWMxMzE5ODg0NmY5NmFhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFwcGVh
cmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlRnJhbWUuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tCdW5kbGVQYWdlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUGFnZVByaXZh
dGUuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCkBAIC03MCw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byByZXN1bHRT
dHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KHNjcmlwdENvbnRleHQsIHJlc3VsdCwg
bnVsbHB0cikpOwogCiAgICAgICAgIGF1dG8gYnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShyZXN1bHRTdHJpbmcuZ2V0KCkpOwotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBi
dWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oYnVmZmVyU2l6ZSk7CiAgICAgICAgIEpTU3Ry
aW5nR2V0VVRGOENTdHJpbmcocmVzdWx0U3RyaW5nLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZl
clNpemUpOwogCiAgICAgICAgIFdLQnVuZGxlUGFnZVNldFVzZURhcmtBcHBlYXJhbmNlKG1fcGFn
ZSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwCmluZGV4IDQwY2EzNDgwMGNjNDk3MDI0ZWE4
NWVmODkwMjRlNzc4NGExMTkwOGMuLjdjOGM4YjUyMTU0YWM0ZWIwOThlNjk1MTc5MDY5YTA1ZWJk
YzY2YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0QXV0aGVudGljYXRpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwCkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGlj
IHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QgY2hhcioKIHsKICAgICBpZiAobWVzc2FnZS0+bWV0aG9kID09IFNPVVBfTUVU
SE9EX0NPTk5FQ1QpIHsKICAgICAgICAgZ19hc3NlcnRfY21wdWludChzb3VwX3NlcnZlcl9nZXRf
cG9ydChzZXJ2ZXIpLCA9PSwgZ1Byb3h5U2VydmVyUG9ydCk7Ci0gICAgICAgIGF1dG8gdHVubmVs
ID0gc3RkOjptYWtlX3VuaXF1ZTxUdW5uZWw+KHNlcnZlciwgbWVzc2FnZSk7CisgICAgICAgIGF1
dG8gdHVubmVsID0gbWFrZVVuaXF1ZTxUdW5uZWw+KHNlcnZlciwgbWVzc2FnZSk7CiAgICAgICAg
IGF1dG8qIHR1bm5lbFB0ciA9IHR1bm5lbC5nZXQoKTsKICAgICAgICAgdHVubmVsUHRyLT5jb25u
ZWN0KFt0dW5uZWwgPSBXVEZNb3ZlKHR1bm5lbCldKGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkg
ewogICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkgewpAQCAtMzk1LDcgKzM5NSw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Qcm94eShQcm94eUF1dGhlbnRpY2F0
aW9uVGVzdCogdGVzdCwgZ2NvbnN0CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGlj
YXRpb25Qcm94eUhUVFBTKFByb3h5QXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogewotICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdFRl
c3RTZXJ2ZXI+KFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFBTKTsKKyAgICBhdXRvIGh0dHBz
U2VydmVyID0gbWFrZVVuaXF1ZTxXZWJLaXRUZXN0U2VydmVyPihXZWJLaXRUZXN0U2VydmVyOjpT
ZXJ2ZXJIVFRQUyk7CiAgICAgaHR0cHNTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CiAKICAg
ICB0ZXN0LT5sb2FkVVJJKGh0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcHJveHkvYXV0aC10
ZXN0Lmh0bWwiKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcAppbmRleCAxMjU2MjQxOTZhNzFjNmQz
YWQ1YmNkZDI5ZjE0MmI4NmFiYjlmZDExLi5lNDAwMDc2MzNmMjM2MjQwNTI5ZGY1NGFlODYzMjA4
N2JkMzY5NTJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9ET01ET01XaW5kb3dUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcApAQCAtMzAsNyArMzAsNyBAQCBzdGF0aWMgZ2Jv
b2xlYW4gY2xpY2tlZENhbGxiYWNrKFdlYktpdERPTURPTVdpbmRvdyosIFdlYktpdERPTUV2ZW50
KiwgV2ViS2l0RE9NRAogCiBjbGFzcyBXZWJLaXRET01ET01XaW5kb3dUZXN0IDogcHVibGljIFdl
YlByb2Nlc3NUZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlBy
b2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdERPTURP
TVdpbmRvd1Rlc3Q+KCk7IH0KKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NU
ZXN0PiBjcmVhdGUoKSB7IHJldHVybiBtYWtlVW5pcXVlPFdlYktpdERPTURPTVdpbmRvd1Rlc3Q+
KCk7IH0KIAogcHJpdmF0ZToKICAgICBndWludDY0IHdlYlBhZ2VGcm9tQXJncyhHVmFyaWFudCog
YXJncykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGls
aXRpZXNDb2NvYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRp
ZXNDb2NvYS5tbQppbmRleCA4ZDJlZThhZDE2Y2FkNjc5NTY4ZWQ5YjZkNzVjZWNkODIxNTBmZWRi
Li4zZjgwNGFkZGEyNDlhMDZhYTgwZTg3YWI2MTg0YzQ1N2Q3NDYwOTgzIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiBuYW1lc3BhY2UgVXRpbCB7CkBAIC0zOCw3ICszOSw3IEBAIHN0
ZDo6c3RyaW5nIHRvU1REKE5TU3RyaW5nICpzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6OnN0
cmluZygpOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBbc3RyaW5nIGxlbmd0aE9mQnl0ZXNV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1h
a2VVbmlxdWVBcnJheTxjaGFyPihidWZmZXJTaXplKTsKICAgICBOU1VJbnRlZ2VyIHN0cmluZ0xl
bmd0aDsKICAgICBbc3RyaW5nIGdldEJ5dGVzOmJ1ZmZlci5nZXQoKSBtYXhMZW5ndGg6YnVmZmVy
U2l6ZSB1c2VkTGVuZ3RoOiZzdHJpbmdMZW5ndGggZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmcgb3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgcmVtYWlu
aW5nUmFuZ2U6MF07CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5n
TGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRl
eCA1NDZjYTZlMjIyZDlmZWE4MWNlN2JlNGUyYzJkMzk4NWM1YjQ0ZjBmLi4yNDc1NzI4OThiNmE4
NzljN2EzNmI0ZmM2NWI5MTUzMzA0NzBmZmQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0yOTQsNyArMjk0LDcgQEAgc3RhdGljIHZvaWQgYXBwbHlX
b3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygp
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBzd2l6emxl
cjsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9v
bmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHN3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
bGFzc01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3
cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNS
VEZEKSk7CisgICAgICAgIHN3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVy
PihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlm
aWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJ
ZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CiAgICAgfSk7CiB9
CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dS
ZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBv
bmNlIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIGZpeGVkLgotICAgIF9zaGFyZWRD
YWxsb3V0QmFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+
KFtVSUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOworICAgIF9zaGFyZWRDYWxs
b3V0QmFyU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxv
dXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOwogICAgIF9pbnB1dFNlc3Npb25DaGFuZ2VD
b3VudCA9IDA7CiAgICAgYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3Ry
aW5nc1RvSXRlbVByb3ZpZGVycygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0Rm9udE9wdGlvbnMubW0KaW5kZXggODYyNjM1NDQzMzVhN2Y1ZDk3MWI1ZGMwZDI1OWU1NWRj
MGQ3M2M2Ni4uNGJkZTZjNTEwMGQyYmQ2ZmU0YmI5MGZhY2JlMjVkMzM5YTUwNTRiYiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpAQCAtODQsNyArODQsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZv
bnRPcHRpb25zCiAKICAgICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXplWmVybzsKICAgICBfc2hhZG93
Qmx1clJhZGl1cyA9IDA7Ci0gICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9u
dE9wdGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHNoYXJlZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOworICAgIF9yZXBsYWNlRm9udE9w
dGlvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zy
b21TdHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKICAg
ICBfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMgPSBOTzsKICAgICBfaGFzTXVsdGlwbGVGb250cyA9
IE5POwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRleCBkNDYxNzE0M2VlZDFk
YThhODJjYjRlMGIwMDlmNmRlNGRlMDEzNzk2Li5jOWE1MmMxNWY3NzA4MzA2ODNjOGVmZjY4OTQy
OWJkMGJjMWY1NjQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKQEAgLTY0OCw3
ICs2NDgsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbAogICAgIAogICAgIEpTVmFsdWVQcm90
ZWN0KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogCi0gICAgYXV0byBzY3JvbGxD
b21wbGV0aW9uQ2FsbGJhY2tEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxDb21wbGV0aW9u
Q2FsbGJhY2tEYXRhPihjb250ZXh0LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsKKyAgICBhdXRv
IHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBtYWtlVW5pcXVlPFNjcm9sbENvbXBsZXRp
b25DYWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogICAgIGF1
dG8gc2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0ciA9IHNjcm9sbENvbXBsZXRpb25DYWxs
YmFja0RhdGEucmVsZWFzZSgpOwogICAgIGJvb2wgY2FsbGJhY2tXaWxsQmVDYWxsZWQgPSBXS0J1
bmRsZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhwYWdlLCBl
eGVjdXRlQ2FsbGJhY2ssIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGFQdHIpOwogICAgIGlm
ICghY2FsbGJhY2tXaWxsQmVDYWxsZWQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNzExNmNjOTgx
NTY2OWQ5NDk0ZGJmOGRlNDhiYWVlY2Q2Mzc0YzM3Ni4uODNiMmIzMGIxMzMyZWM3N2JmZWZjYzI5
ZmRkMWEyZTQ4M2NiNWYyMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBl
UmVmIGluaXRpYWxpemF0aW9uVXNlcgogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFn
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKIHsKICAgICBib29sIGlzTWFpblBhZ2UgPSBtX3BhZ2Vz
LmlzRW1wdHkoKTsKLSAgICBtX3BhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVk
QnVuZGxlUGFnZT4ocGFnZSkpOworICAgIG1fcGFnZXMuYXBwZW5kKG1ha2VVbmlxdWU8SW5qZWN0
ZWRCdW5kbGVQYWdlPihwYWdlKSk7CiAKICAgICBzZXRVcEluamVjdGVkQnVuZGxlQ2xpZW50cyhw
YWdlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKaW5kZXggNTI3NTY2ZGMzZjg0YTdkYjQyMjMzNDdmZDYxYzNiMjUzODZl
NGY3My4uMTNlNjUzMTA2YjQxMGI4OTY1NzFjZDEwMDBlYmU2MjM5MWNhNDI1YSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZU51bWJlcnMuaD4KQEAgLTIzOTgsNyArMjM5OSw3IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0T3BlblBhbmVsRmlsZXMoSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1
dG8gZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBu
dWxscHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAg
IGF1dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihmaWxlQnVmZmVyU2l6ZSk7
CiAgICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5n
ZXQoKSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGZpbGVV
UkxzLmdldCgpLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aEJhc2VVUkwobV90ZXN0VVJMLmdldCgp
LCBmaWxlQnVmZmVyLmdldCgpKSkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAppbmRleCAwZTVjMDdjYTcyOWI2ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMy
YzAwMTdjLi5kMzU2M2EyMTYwOTEzNzA5ZWFhODA2NTA2MjNmY2ZmZDgzYTYyOGQzIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZUZyYW1lLmg+CiAjaW5jbHVkZSA8YXRrL2F0ay5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dV
bmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC03MzAsNyArNzMx
LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgY29udmVydFRvSlNPYmplY3RBcnJheShjb25zdCBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW0KICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9
IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwogCiAgICAgc2l6
ZV90IGVsZW1lbnRDb3VudCA9IGNoaWxkcmVuLnNpemUoKTsKLSAgICBhdXRvIHZhbHVlRWxlbWVu
dHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTVmFsdWVSZWZbXT4oZWxlbWVudENvdW50KTsKKyAgICBh
dXRvIHZhbHVlRWxlbWVudHMgPSBtYWtlVW5pcXVlQXJyYXk8SlNWYWx1ZVJlZj4oZWxlbWVudENv
dW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgaSsrKQogICAg
ICAgICB2YWx1ZUVsZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNoaWxkcmVuW2ld
LT53cmFwcGVyQ2xhc3MoKSwgY2hpbGRyZW5baV0uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9TdHJpbmdGdW5jdGlvbnMuaAppbmRleCBkYWYxNGNhNzA1NDg2YmZjMjA2NDMxMjNkZTUw
OTFiNzllNWQwMTMxLi5jZWYxNmY2Yjk5YzRhMGUxOGMxNmY5M2NkMjg1YjJkOTdjZTg5MWY4IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03Myw3ICs3NCw3IEBAIGlubGluZSBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gdG9KUyhjb25zdCBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4m
IHN0cmluZykKIGlubGluZSBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcpCiB7
CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1Np
emUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihi
dWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihidWZm
ZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4Q1N0cmlu
ZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CkBAIC04Niw3ICs4Nyw3IEBA
IGlubGluZSBzdGQ6OnN0cmluZyB0b1NURChjb25zdCBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4m
IHN0cmluZykKIGlubGluZSBXVEY6OlN0cmluZyB0b1dURlN0cmluZyhXS1N0cmluZ1JlZiBzdHJp
bmcpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0
cmluZ1NpemUoc3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hh
cltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFy
PihidWZmZXJTaXplKTsKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRVVEY4
Q1N0cmluZ05vblN0cmljdChzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAg
cmV0dXJuIFdURjo6U3RyaW5nOjpmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhidWZmZXIuZ2V0
KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAppbmRleCBlYThhZmI1ZjRlZjg0ZTRhMmRkZjI4NjRhMWFlOWY3NzVmY2UzNzQ3
Li5kNjk0ZTE2ZDcyZjE1YzMwZTdhM2NiZjg1NWNlNTk5M2M3ODA4YzAzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtODIsNiArODIsNyBAQAogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVO
dW1iZXJzLmg+CiAKQEAgLTQ3OSw3ICs0ODAsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0
aWFsaXplKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+IHBhZ2VHcm91cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJXZWJLaXRUZXN0UnVubmVyUGFnZUdyb3VwIikpOwogICAgIG1fcGFnZUdy
b3VwLmFkb3B0KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIocGFnZUdyb3VwSWRlbnRp
Zmllci5nZXQoKSkpOwogCi0gICAgbV9ldmVudFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1
ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKKyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtl
VW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRoaXMpOwogfQogCiBXS1JldGFpblB0cjxXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVDb250ZXh0Q29uZmln
dXJhdGlvbihjb25zdCBUZXN0T3B0aW9uczo6Q29udGV4dE9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0
CkBAIC01MjEsNyArNTIyLDcgQEAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4g
VGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY28KICAgICAgICAgbV9j
b250ZXh0ID0gcGxhdGZvcm1BZGp1c3RDb250ZXh0KGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0
aENvbmZpZ3VyYXRpb24oY29udGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpKS5nZXQoKSwgY29udGV4
dENvbmZpZ3VyYXRpb24uZ2V0KCkpOwogICAgICAgICBtX2NvbnRleHRPcHRpb25zID0gb3B0aW9u
cy5jb250ZXh0T3B0aW9uczsKIAotICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOwor
ICAgICAgICBtX2dlb2xvY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2xvY2F0aW9uUHJv
dmlkZXJNb2NrPihtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgICAgIGlmIChjb25zdCBjaGFyKiBk
dW1wUmVuZGVyVHJlZVRlbXAgPSBsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKSkgewogICAgICAgICAg
ICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRy
ZWVUZW1wKTsKQEAgLTk1NCw3ICs5NTUsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAg
IC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGVuc3VyZSB0aGF0IHRoZXJlIGlz
IG9ubHkgb25lIHBhZ2Ugb3Blbi4KIAogICAgIC8vIFJlc2V0IHRoZSBFdmVudFNlbmRlciBmb3Ig
ZWFjaCB0ZXN0LgotICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8RXZl
bnRTZW5kZXJQcm94eT4odGhpcyk7CisgICAgbV9ldmVudFNlbmRlclByb3h5ID0gbWFrZVVuaXF1
ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBJcyB0aGlzIG5lZWRl
ZD8gTm90aGluZyBpbiBUZXN0Q29udHJvbGxlciBjaGFuZ2VzIHByZWZlcmVuY2VzIGR1cmluZyB0
ZXN0cywgYW5kIGlmIHRoZXJlIGlzCiAgICAgLy8gc29tZSBvdGhlciBjb2RlIGRvaW5nIHRoaXMs
IGl0IHNob3VsZCBwcm9iYWJseSBiZSByZXNwb25zaWJsZSBmb3IgY2xlYW51cCB0b28uCkBAIC0x
MjM1LDEzICsxMjM2LDEzIEBAIHN0YXRpYyBXS1VSTFJlZiBjcmVhdGVUZXN0VVJMKGNvbnN0IGNo
YXIqIHBhdGhPclVSTCkKICAgICBjb25zdCBjaGFyKiBmaWxlUHJlZml4ID0gImZpbGU6Ly8iOwog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKGZpbGVQcmVmaXgp
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gYnVmZmVyOworICAgIFVuaXF1ZUFycmF5
PGNoYXI+IGJ1ZmZlcjsKICAgICBpZiAoaXNBYnNvbHV0ZVBhdGgpIHsKLSAgICAgICAgYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGxlbmd0aCArIDEpOwor
ICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4ocHJlZml4TGVuZ3RoICsgbGVu
Z3RoICsgMSk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0KCksIGZpbGVQcmVmaXgpOwogICAg
ICAgICBzdHJjcHkoYnVmZmVyLmdldCgpICsgcHJlZml4TGVuZ3RoLCBwYXRoT3JVUkwpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVm
aXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCArIDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFy
YXRvcgorICAgICAgICBidWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4ocHJlZml4TGVuZ3Ro
ICsgUEFUSF9NQVggKyBsZW5ndGggKyAyKTsgLy8gMSBmb3IgdGhlIHBhdGhTZXBhcmF0b3IKICAg
ICAgICAgc3RyY3B5KGJ1ZmZlci5nZXQoKSwgZmlsZVByZWZpeCk7CiAgICAgICAgIGlmICghZ2V0
Y3dkKGJ1ZmZlci5nZXQoKSArIHByZWZpeExlbmd0aCwgUEFUSF9NQVgpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xNjUxLDcgKzE2NTIsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpydW5U
ZXN0KGNvbnN0IGNoYXIqIGlucHV0TGluZSkKICAgICBUZXN0T3B0aW9ucyBvcHRpb25zID0gdGVz
dE9wdGlvbnNGb3JUZXN0KGNvbW1hbmQpOwogCiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdr
VVJMID0gYWRvcHRXSyhjcmVhdGVUZXN0VVJMKGNvbW1hbmQucGF0aE9yVVJMLmNfc3RyKCkpKTsK
LSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxUZXN0SW52b2NhdGlv
bj4od2tVUkwuZ2V0KCksIG9wdGlvbnMpOworICAgIG1fY3VycmVudEludm9jYXRpb24gPSBtYWtl
VW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9ucyk7CiAKICAgICBpZiAo
Y29tbWFuZC5zaG91bGREdW1wUGl4ZWxzIHx8IG1fc2hvdWxkRHVtcFBpeGVsc0ZvckFsbFRlc3Rz
KQogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5zZXRJc1BpeGVsVGVzdChjb21tYW5kLmV4
cGVjdGVkUGl4ZWxIYXNoKTsKQEAgLTI5NjMsNyArMjk2NCw3IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKQogCiB2b2lkIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiBjb25maWd1cmF0aW9uLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBtX21h
aW5XZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbmZpZ3VyYXRp
b24sIG9wdGlvbnMpOworICAgIG1fbWFpbldlYlZpZXcgPSBtYWtlVW5pcXVlPFBsYXRmb3JtV2Vi
Vmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CiB9CiAKIFBsYXRmb3JtV2ViVmlldyogVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFy
ZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBjb25zdCBUZXN0
T3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKaW5kZXggYTVhZWEyMWMwOTAwMDU5ZTc5ZmE3ZDEyYmZhMTVmZDgxOWQxNmI2YS4uZjgxZjBi
OTQ2OTU3NmQzNjEwMjZkMzU2ZWZjNDgxYmE5Zjc5OWYwZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE2OTAsNyArMTY5MCw3IEBAIHZvaWQgVGVzdElu
dm9jYXRpb246OnJ1blVJU2lkZVNjcmlwdChXS1N0cmluZ1JlZiBzY3JpcHQsIHVuc2lnbmVkIHNj
cmlwdENhbGxiYWNrCiAgICAgbV9wZW5kaW5nVUlTY3JpcHRJbnZvY2F0aW9uRGF0YSA9IG51bGxw
dHI7CiAKICAgICBpZiAoIW1fVUlTY3JpcHRDb250ZXh0KQotICAgICAgICBtX1VJU2NyaXB0Q29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8VUlTY3JpcHRDb250ZXh0PigqdGhpcyk7CisgICAgICAg
IG1fVUlTY3JpcHRDb250ZXh0ID0gbWFrZVVuaXF1ZTxVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsK
ICAgICAKICAgICBtX1VJU2NyaXB0Q29udGV4dC0+cnVuVUlTY3JpcHQodG9XVEZTdHJpbmcoc2Ny
aXB0KSwgc2NyaXB0Q2FsbGJhY2tJRCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggMGZiZjhlYTUyM2QzNDhkMjU2
ZWNjNTIzMDQyZGVhMDJmZWNkZDFkYy4uMGViZjdiZmQwMDM5ZjRlZjgwOTMyYzFlYjUxOTJmZjU0
ZWUzYzRhMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0
T3B0CiAgICAgICAgIFtjb3BpZWRDb25maWd1cmF0aW9uIF9zZXRBcHBsaWNhdGlvbk1hbmlmZXN0
OltfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjp0ZXh0
IG1hbmlmZXN0VVJMOm5pbCBkb2N1bWVudFVSTDpuaWxdXTsKICAgICB9CiAKLSAgICBtX21haW5X
ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvcGllZENvbmZpZ3Vy
YXRpb24uZ2V0KCksIG9wdGlvbnMpOworICAgIG1fbWFpbldlYlZpZXcgPSBtYWtlVW5pcXVlPFBs
YXRmb3JtV2ViVmlldz4oY29waWVkQ29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7CiAgICAg
ZmluaXNoQ3JlYXRpbmdQbGF0Zm9ybVdlYlZpZXcobV9tYWluV2ViVmlldy5nZXQoKSwgb3B0aW9u
cyk7CiAKICAgICBpZiAob3B0aW9ucy5wdW5jaE91dFdoaXRlQmFja2dyb3VuZHNJbkRhcmtNb2Rl
KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldERlZmF1bHRDYWxl
bmRhclR5cGUoTlNTdHJpbmcgKmlkZW50aWZpZXIpCiB7CiAgICAgbV9vdmVycmlkZGVuQ2FsZW5k
YXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICBpZiAoIW1fY2FsZW5kYXJTd2l6emxlcikK
LSAgICAgICAgbV9jYWxlbmRhclN3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhv
ZFN3aXp6bGVyPihbTlNDYWxlbmRhciBjbGFzc10sIEBzZWxlY3RvcihjdXJyZW50Q2FsZW5kYXIp
LCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRDYWxlbmRhcikpOworICAgICAgICBtX2Nh
bGVuZGFyU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0NhbGVu
ZGFyIGNsYXNzXSwgQHNlbGVjdG9yKGN1cnJlbnRDYWxlbmRhciksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihzd2l6emxlZENhbGVuZGFyKSk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0
Q29udGVudEV4dGVuc2lvbnMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9F
dmVudFNlbmRlclByb3h5R3RrLmNwcAppbmRleCBkZTU3OGY3M2ZjMzZlY2QxNTg5Yzk5ZjhkYmY4
ZmNjYzM5ODdiNDJlLi5iMTdlY2E4ZmY4ZDIyMTEzNWUyZDZiNjFjNjM1YTQxNTBiZDNhM2JmIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3Rr
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3Rr
LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTI3MSw3ICsyNzIsNyBAQCBpbnQg
Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5zaWduZWQgbG9jYXRp
b24sIGd1aW50KiBtb2RpZmllcgogICAgICAgICByZXR1cm4gR0RLX0tFWV9GMTI7CiAKICAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShrZXlS
ZWYpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNp
emUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNpemUp
OwogICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIuZ2V0KCksIGJ1ZmZl
clNpemUpOwogICAgIGNoYXIgY2hhckNvZGUgPSBidWZmZXIuZ2V0KClbMF07CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KaW5kZXggNmE2MWRm
OGUzNWQ2ZmEwOGM4YjE0YzUxYTgyM2M2MmQwODA1ZDRkMi4uZjNjNDE3YzdmYjdjYWE0ZGU0Nzc3
YzdhNDk0ZjUzYWYzMmExOGJmZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVGVzdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VGVzdENvbnRyb2xsZXJJT1MubW0KQEAgLTE1MSw4ICsxNTEsOCBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdAogCiAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5jbGVhcigpOwogICAgIGlm
ICghb3B0aW9ucy5zaG91bGRQcmVzZW50UG9wb3ZlcnMpIHsKLSAgICAgICAgbV9wcmVzZW50UG9w
b3ZlclN3aXp6bGVycy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyPihbVUlWaWV3Q29udHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50Vmlld0NvbnRy
b2xsZXI6YW5pbWF0ZWQ6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7Ci0gICAgICAgIG1fcHJlc2VudFBv
cG92ZXJTd2l6emxlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6
emxlcj4oW1VJUG9wb3ZlckNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IocHJlc2VudFBvcG92
ZXJGcm9tUmVjdDppblZpZXc6cGVybWl0dGVkQXJyb3dEaXJlY3Rpb25zOmFuaW1hdGVkOiksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3Zl
cikpKTsKKyAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQobWFrZVVuaXF1
ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlWaWV3Q29udHJvbGxlciBjbGFzc10sIEBzZWxl
Y3RvcihwcmVzZW50Vmlld0NvbnRyb2xsZXI6YW5pbWF0ZWQ6Y29tcGxldGlvbjopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVQcmVzZW50Vmlld0NvbnRyb2xsZXJPclBvcG92ZXIpKSk7
CisgICAgICAgIG1fcHJlc2VudFBvcG92ZXJTd2l6emxlcnMuYXBwZW5kKG1ha2VVbmlxdWU8SW5z
dGFuY2VNZXRob2RTd2l6emxlcj4oW1VJUG9wb3ZlckNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0
b3IocHJlc2VudFBvcG92ZXJGcm9tUmVjdDppblZpZXc6cGVybWl0dGVkQXJyb3dEaXJlY3Rpb25z
OmFuaW1hdGVkOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29u
dHJvbGxlck9yUG9wb3ZlcikpKTsKICAgICB9CiAgICAgCiAgICAgQk9PTCBzaG91bGRSZXN0b3Jl
Rmlyc3RSZXNwb25kZXIgPSBOTzsKQEAgLTI2OSw5ICsyNjksOSBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKQogCiAgICAgYXV0byBjb250cm9sbGVyQ2xhc3MgPSBVSUtleWJvYXJkSW5wdXRNb2RlQ29u
dHJvbGxlci5jbGFzczsKICAgICBtX2lucHV0TW9kZVN3aXp6bGVycy5yZXNlcnZlQ2FwYWNpdHko
Myk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3Io
Y3VycmVudElucHV0TW9kZSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElu
cHV0TW9kZSkpKTsKLSAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBz
ZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlSW5QcmVmZXJlbmNlKSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOwotICAgIG1faW5wdXRNb2RlU3dpenpsZXJz
LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+
KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGFjdGl2ZUlucHV0TW9kZXMpLCByZWludGVycHJl
dF9jYXN0PElNUD4oc3dpenpsZUFjdGl2ZUlucHV0TW9kZXMpKSk7CisgICAgbV9pbnB1dE1vZGVT
d2l6emxlcnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxl
cj4oY29udHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoY3VycmVudElucHV0TW9kZSksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihzd2l6emxlQ3VycmVudElucHV0TW9kZSkpKTsKKyAgICBtX2lucHV0TW9k
ZVN3aXp6bGVycy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlSW5QcmVmZXJl
bmNlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOwor
ICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPEluc3Rh
bmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGFjdGl2ZUlucHV0
TW9kZXMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUFjdGl2ZUlucHV0TW9kZXMpKSk7
CiAgICAgW1VJS2V5Ym9hcmRJbXBsLnNoYXJlZEluc3RhbmNlIHByZXBhcmVLZXlib2FyZElucHV0
TW9kZUZyb21QcmVmZXJlbmNlczpuaWxdOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQppbmRleCBkMWNmYzZhMzMyMWUwMjljOGJhODExNWY0
YTZkOTIwN2Y4ZTcxODRmLi44OWNlNGVmMTI2YzE1ZDkyZGNmNzY2NTBjZTZlZWY1Yjg5MjMxNzJl
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0K
QEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bih1bnNp
Z25lZCBidXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZQogCiAgICAgTlNWaWV3
ICp0YXJnZXRWaWV3ID0gW21fdGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpIGhpdFRlc3Q6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKICAgICBpZiAodGFyZ2V0
VmlldykgewotICAgICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBz
ZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6
bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CisgICAgICAgIGF1dG8gZXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtO
U0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJl
dF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKICAgICAgICAg
W05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgICAgICBbdGFyZ2V0VmlldyBtb3Vz
ZURvd246ZXZlbnRdOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwpAQCAt
MzU3LDcgKzM1Nyw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VVcCh1bnNpZ25lZCBi
dXR0b25OdW1iZXIsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzCiAgICAgICAgIHRhcmdldFZp
ZXcgPSBtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKIAog
ICAgIEFTU0VSVCh0YXJnZXRWaWV3KTsKLSAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9u
c1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVu
dCBjbGFzc10sIEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CisgICAgYXV0byBldmVu
dFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6
emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwog
ICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OmV2ZW50XTsKICAgICBbdGFyZ2V0VmlldyBtb3Vz
ZVVwOmV2ZW50XTsKICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpuaWxdOwpAQCAtNTkzLDcg
KzU5Myw3IEBAIHZvaWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VNb3ZlVG8oZG91YmxlIHgsIGRv
dWJsZSB5KQogICAgIC8vIEFsd2F5cyB0YXJnZXQgZHJhZ3MgYXQgdGhlIFdLV2ViVmlldyB0byBh
bGxvdyBmb3IgZHJhZy1zY3JvbGxpbmcgb3V0c2lkZSB0aGUgdmlldy4KICAgICBOU1ZpZXcgKnRh
cmdldFZpZXcgPSBpc0RyYWcgPyBtX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0
Zm9ybVZpZXcoKSA6IFttX3Rlc3RDb250cm9sbGVyLT5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZp
ZXcoKSBoaXRUZXN0OndpbmRvd0xvY2F0aW9uXTsKICAgICBpZiAodGFyZ2V0VmlldykgewotICAg
ICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10sIEBzZWxlY3RvcihwcmVz
c2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkRXZlbnRQcmVz
c2VkTW91c2VCdXR0b25zKSk7CisgICAgICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25z
U3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNz
XSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4o
c3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKICAgICAgICAgW05TQXBwIF9zZXRD
dXJyZW50RXZlbnQ6ZXZlbnRdOwogICAgICAgICBpZiAoaXNEcmFnKQogICAgICAgICAgICAgW3Rh
cmdldFZpZXcgbW91c2VEcmFnZ2VkOmV2ZW50XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd3BlL0V2ZW50U2VuZGVyUHJveHlXUEUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci93cGUvRXZlbnRTZW5kZXJQcm94eVdQRS5jcHAKaW5kZXggNDY5YmZhZjBlOGNmMjkwNzMw
YmFiZmEwNzgzNmQ4NzdlYzcwZThmNS4uMjYwMGI2ODNjMDc1YzljMTIwNjhlN2IyYWUxNTIzNGE4
MDg4ZGMyZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5k
ZXJQcm94eVdQRS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5k
ZXJQcm94eVdQRS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJUZXN0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDx3cGUv
d3BlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXVFIgewog
CkBAIC0yNzksNyArMjgwLDcgQEAgc3RhdGljIHVpbnQzMl90IHdwZUtleVN5bUZvcktleVJlZihX
S1N0cmluZ1JlZiBrZXlSZWYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1aW50MzIKICAgICAgICAgcmV0
dXJuIFdQRV9LRVlfRjEyOwogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1h
eGltdW1VVEY4Q1N0cmluZ1NpemUoa2V5UmVmKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlx
dWVBcnJheTxjaGFyPihidWZmZXJTaXplKTsKICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGtl
eVJlZiwgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBjaGFyIGNoYXJDb2RlID0gYnVm
ZmVyLmdldCgpWzBdOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376665</attachid>
            <date>2019-08-18 23:44:56 -0700</date>
            <delta_ts>2019-08-19 02:03:12 -0700</delta_ts>
            <desc>B: makeUnique / makeUniqueWithoutFastMallocCheck</desc>
            <filename>bug-200620-20190818234452.patch</filename>
            <type>text/plain</type>
            <size>1559115</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Nzg5NjkzZTI3Mzc4YzFiMTYwNmFiOTdlNzFkNDc2YTdhMWNjOTRlLi5kZDhmNTdlNTZkMzFjZDdi
NTIyMzlkZGJmYWExMDE5MzkwNGIzMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMTEgQEAKKzIwMTktMDgtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
RGF0YTo6c2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpT
Q2FsbGJhY2tPYmplY3QpOgorICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmNwcDoKKyAgICAgICAg
KE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKToKKyAg
ICAgICAgKE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKToKKyAgICAgICAgKiBBUEkvSlNNYXJr
aW5nQ29uc3RyYWludFByaXZhdGUuY3BwOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBBZGRNYXJr
aW5nQ29uc3RyYWludCk6CisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAg
KC1bSlNXcmFwcGVyTWFwIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKiBB
UEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW06CisgICAgICAgIChBcmd1bWVudFR5cGVEZWxlZ2F0
ZTo6dHlwZUludGVnZXIpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVEb3Vi
bGUpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVsZWdhdGU6OnR5cGVCb29sKToKKyAgICAgICAg
KEFyZ3VtZW50VHlwZURlbGVnYXRlOjp0eXBlSWQpOgorICAgICAgICAoQXJndW1lbnRUeXBlRGVs
ZWdhdGU6OnR5cGVPZkNsYXNzKToKKyAgICAgICAgKEFyZ3VtZW50VHlwZURlbGVnYXRlOjp0eXBl
U3RydWN0KToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZUludGVnZXIpOgorICAg
ICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBlRG91YmxlKToKKyAgICAgICAgKFJlc3VsdFR5
cGVEZWxlZ2F0ZTo6dHlwZUJvb2wpOgorICAgICAgICAoUmVzdWx0VHlwZURlbGVnYXRlOjp0eXBl
Vm9pZCk6CisgICAgICAgIChSZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVJZCk6CisgICAgICAgIChS
ZXN1bHRUeXBlRGVsZWdhdGU6OnR5cGVPZkNsYXNzKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxl
Z2F0ZTo6dHlwZUJsb2NrKToKKyAgICAgICAgKFJlc3VsdFR5cGVEZWxlZ2F0ZTo6dHlwZVN0cnVj
dCk6CisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24pOgorICAgICAg
ICAqIEFQSS9nbGliL0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoanNjQ29udGV4dFNldFZpcnR1
YWxNYWNoaW5lKToKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcDoKKyAgICAg
ICAgKEpTQzo6V3JhcHBlck1hcDo6V3JhcHBlck1hcCk6CisgICAgICAgICogYXNzZW1ibGVyL1By
b2JlU3RhY2suY3BwOgorICAgICAgICAoSlNDOjpQcm9iZTo6U3RhY2s6OmVuc3VyZVBhZ2VGb3Ip
OgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvQjNQcm9jZWR1
cmUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpQcm9jZWR1cmUpOgorICAgICAg
ICAoSlNDOjpCMzo6UHJvY2VkdXJlOjpkb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6QjM6OlBy
b2NlZHVyZTo6bmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YmFj
a3dhcmRzQ0ZHKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YmFja3dhcmRzRG9taW5h
dG9ycyk6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmFkZERhdGFTZWN0aW9uKToKKyAg
ICAgICAgKiBiMy9haXIvQWlyQ29kZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNvZGU6
OmNDYWxsU3BlY2lhbCk6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6cHJlcGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAqIGIzL2Fp
ci90ZXN0YWlyLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuaDoKKyAgICAgICAgKGNvbXBpbGVQ
cm9jKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNl
U25pcHBldFBhcmFtcy5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUpJVERhdGFTbG93KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjplbnN1cmVDYXRjaExpdmVuZXNzSXNDb21wdXRlZEZvckJ5dGVjb2Rl
T2Zmc2V0U2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgICogYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9maWxl
OjphZGQpOgorICAgICAgICAqIGJ5dGVjb2RlL0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5j
cHA6CisgICAgICAgIChKU0M6OkRlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6ZW5zdXJlRGVm
ZXJyZWRTb3VyY2VEdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoK
KyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4
aXRTaXRlRmVlZGJhY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcDoK
KyAgICAgICAgKEpTQzo6R2V0QnlJZFZhcmlhbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgICogYnl0
ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpDb21wcmVz
c2VkTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVIb2xkZXI6OmFkZCk6CisgICAgICAgICogYnl0ZWNv
ZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6UG9seVByb3RvQWNjZXNz
Q2hhaW46OmNsb25lKToKKyAgICAgICAgKiBieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvclN0dWJJbmZvKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFyaWFu
dC5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRWYXJpYW50OjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwOgorICAgICAgICAoSlNDOjpSZWNvcmRl
ZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3Rh
dHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2Vz
OjphZGRQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRk
SW5CeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdX
YXRjaHBvaW50LmNwcDoKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJ
bmZvOjplbnN1cmVSZWZlcmVuY2VBbmRBZGRXYXRjaHBvaW50KToKKyAgICAgICAgKiBieXRlY29k
ZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZv
OjphZGRBY2Nlc3NDYXNlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xv
dyk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xvdyk6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OkFic3RyYWN0SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGRm
Zy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OkdyYXBoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6bGl2ZW5lc3NGb3IpOgorICAgICAgICAoSlNDOjpERkc6Okdy
YXBoOjpraWxsc0Zvcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNQU0NGRyk6
CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMpOgorICAgICAg
ICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
ZW5zdXJlQmFja3dhcmRzQ0ZHKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZW5zdXJlQmFj
a3dhcmRzRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpKSVRDb21waWxlcik6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGls
ZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkcmVzc09mRG91
YmxlQ29uc3RhbnQpOgorICAgICAgICAqIGRmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpj
b21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6CisgICAg
ICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2xv
d1BhdGhDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpzbG93UGF0aE1vdmUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0U3RydWN0dXJlQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAg
KiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdXb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29ya2xpc3Q6OmNyZWF0ZU5ld1Ro
cmVhZCk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAg
IChKU0M6OmRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGZ0bC9GVExBYnN0
cmFjdEhlYXAuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkluZGV4ZWRBYnN0cmFjdEhlYXA6OmF0
U2xvdyk6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExGYWlsLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpmYWlsKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmxhenlTbG93UGF0aCk6CisgICAgICAgICogZnRsL0ZU
TFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpTdGF0ZTo6U3RhdGUpOgorICAgICAgICAq
IGhlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHA6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3Bh
Y2U6OmFsbG9jYXRvckZvclNsb3cpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAg
IChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFwOjpwcm90ZWN0ZWRPYmplY3RU
eXBlQ291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6b2JqZWN0VHlwZUNvdW50cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6OmFkZENvcmVDb25zdHJhaW50cyk6CisgICAgICAgICogaGVhcC9IZWFw
SW5saW5lcy5oOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6OmJ1aWxkU25hcHNob3QpOgorICAgICAgICAq
IGhlYXAvSXNvQ2VsbFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OmFkZFNsb3cp
OgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpJc29TdWJz
cGFjZTo6SXNvU3Vic3BhY2UpOgorICAgICAgICAqIGhlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpNYXJraW5nQ29uc3RyYWludFNldDo6YWRkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRM
ZXZlbCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6
cHJvZmlsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVu
dDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29s
ZUNsaWVudDo6d2FyblVuaW1wbGVtZW50ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcjo6cmVwb3J0QVBJRXhjZXB0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJl
RGVidWdnZXJBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFn
ZW50OjpJbnNwZWN0b3JBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6Okluc3BlY3RvckNvbnNvbGVBZ2VudCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6Y291bnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmNvdW50UmVzZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9ySGVhcEFnZW50OjpJbnNwZWN0b3JIZWFwQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdl
bnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRBZ2VudDo6SW5zcGVj
dG9yVGFyZ2V0QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQ6OkpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRFbmRwb2ludC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjpjcmVhdGVDbGllbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHk6CisgICAgICAgICog
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFj
LXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1
bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9j
b21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21h
aW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXpl
cy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1
cmUtZ3VhcmRzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdDoK
KyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlV2l0aG91
dExpbmtpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAqIGppdC9KSVRU
aHVua3MuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OkpJVFRodW5rcyk6CisgICAgICAg
ICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWNDYWxsKToK
KyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAocnVuSlNDKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6cHVzaExhYmVs
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyQXJlbmE6OmlkZW50aWZp
ZXJBcmVuYSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21waWxhdGlvbjo6ZXhlY3V0aW9uQ291bnRlckZvcik6
CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmdldFN0YWNrVHJh
Y2UpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3cpOgorICAgICAgICAq
IHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvblJhcmVE
YXRhOjpjcmVhdGVBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJh
eVNwZWNpZXNXYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVSYXJlRGF0YUlmTmVlZGVkKToK
KyAgICAgICAgKiBydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNS
dW5Mb29wVGltZXI6Ok1hbmFnZXI6OlBlclZNRGF0YTo6UGVyVk1EYXRhKToKKyAgICAgICAgKEpT
Qzo6SlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJlZ2lzdGVyVk0pOgorICAgICAgICAqIHJ1bnRp
bWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6
YWRkRGVsZXRlZE9mZnNldCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSk6CisgICAgICAgICog
cnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0
RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OmVuc3VyZVRl
bXBsYXRlT2JqZWN0TWFwSW1wbCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmVuc3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBv
aW50U2V0KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnNldE9iamVjdFRvU3RyaW5nVmFsdWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xUYWJs
ZTo6bG9jYWxUb0VudHJ5KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQ
YXJ0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnByZXBhcmVGb3JUeXBlUHJvZmlsaW5n
KToKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OnNldFJhcmVEYXRhQ29kZUJsb2NrKToKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVTZXQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFw
ZTo6cHJvcGVydHlIYXNoKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6Vk06OlZNKToKKyAgICAgICAgKEpTQzo6Vk06OmVuc3VyZUhlYXBQcm9maWxlcik6CisgICAg
ICAgIChKU0M6OlZNOjplbmFibGVUeXBlUHJvZmlsZXIpOgorICAgICAgICAoSlNDOjpWTTo6ZW5h
YmxlQ29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgIChKU0M6OlZNOjpxdWV1ZU1pY3JvdGFz
ayk6CisgICAgICAgIChKU0M6OlZNOjplbnN1cmVTaGFkb3dDaGlja2VuKToKKyAgICAgICAgKiB3
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjplbWl0UGF0Y2hwb2ludCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJh
dG9yOjplbWl0Q2hlY2spOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGVBaXIp
OgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpwYXJzZUFuZENvbXBpbGUpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6CisgICAgICAgICogd2FzbS9X
YXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46OndvcmspOgorICAg
ICAgICAqIHdhc20vV2FzbVdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6V29ya2xp
c3Q6OldvcmtsaXN0KToKKyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB5YXJyL1lhcnJJ
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6YXRvbVBhcmVudGhlc2VzU3Vi
cGF0dGVybkVuZCk6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6cmVnZXhCZWdp
bik6CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFy
ckdlbmVyYXRvcjo6Y29tcGlsZSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6Cisg
ICAgICAgIChKU0M6OllhcnI6OkNoYXJhY3RlckNsYXNzQ29uc3RydWN0b3I6OmNoYXJDbGFzcyk6
CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OllhcnJQYXR0ZXJu
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9y
OjpyZXNldEZvclJlcGFyc2luZyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29u
c3RydWN0b3I6OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbik6CisgICAgICAgIChKU0M6
OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
QmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjpjb3B5
RGlzanVuY3Rpb24pOgorICAgICAgICAoSlNDOjpZYXJyOjphbnljaGFyQ3JlYXRlKToKKyAgICAg
ICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAgIChKU0M6OllhcnI6OlBhdHRlcm5EaXNq
dW5jdGlvbjo6YWRkTmV3QWx0ZXJuYXRpdmUpOgorICAgICAgICAqIHlhcnIvY3JlYXRlX3JlZ2V4
X3RhYmxlczoKKyAgICAgICAgKiB5YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRhYmxl
cy5weToKKwogMjAxOS0wOC0xOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5j
b20+CiAKICAgICAgICAgW0pTQ10gQ29ycmVjdCBhLT5hbiBpbiBlcnJvciBtZXNzYWdlcyBhbmQg
QVBJIGRvY2Jsb2NrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCAyMjBlYjFkOWU1ZmQwZDczYzY4NjY4YzVhMmY0NGE5ODZkMWEx
OGY2Li5kYWNhMmNjZDZiNmQ5NTFiNTc2ZDViZjdhZDg3ZTVjYTNmZTA0NWNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc4IEBACisyMDE5LTA4LTE4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBm
YXN0LWFsbG9jYXRlZCwgbWFrZVVuaXF1ZSAvIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrIHBhcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaXMgc2Vjb25kIHBhcnQgb2YgYnVnIDIwMDYyMCBwYXRjaC4gSSBzcGxpdCBJIHNw
bGl0IGl0IGludG8gdGhyZWUgcGllY2VzIHRvIG1ha2Ugcm9sbC1vdXQgZWFzeS4KKyAgICAgICAg
aGlzIHBhcnQsIHdlIGNvbnZlcnQgc3RkOjptYWtlX3VuaXF1ZSB0byBXVEY6Om1ha2VVbmlxdWUg
b3IgV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjay4KKyAgICAgICAgSW4gdGhl
IHRoaXJkIHBhdGNoLCB3ZSB3aWxsIGFkZCBhIHN0YXRpY19hc3NlcnQgdG8gbWFrZVVuaXF1ZSwg
d2hpY2ggZW5zdXJlcyB0aGUgZ2l2ZW4gY2xhc3MgVCBpcyBGYXN0TWFsbG9jZWQgb3IgSXNvSGVh
cGVkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBgV1RGOjptYWtlVW5pcXVlPFQ+YCBhbmQg
YFdURjo6bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VD5gIGFzIGRyb3AtaW4gcmVw
bGFjZW1lbnQgZm9yIGBzdGQ6Om1ha2VfdW5pcXVlPFQ+YC4KKyAgICAgICAgYFdURjo6bWFrZVVu
aXF1ZTxUPmAgaGFzIG9uZSBhZGRpdGlvbmFsIGBzdGF0aWNfYXNzZXJ0YCBjaGVjayB3aGljaCBl
bnN1cmVzIGBUYCBGYXN0TWFsbG9jIC8gSXNvSGVhcCBhbm5vdGF0ZWQuIElmIGl0IGlzIG5vdCwg
dGhlCisgICAgICAgIGNvbXBpbGUgZXJyb3IgaGFwcGVucy4KKworICAgICAgICBJbiB0aGlzIHBh
dGNoLCBJIHRyaWVkIHVzaW5nIHRoaXMgZXZlcnl3aGVyZSBpbiBXZWJLaXQgYXMgbXVjaCBhcyBw
b3NzaWJsZS4gQW5kIHdlIGZvdW5kIHRoYXQgc3VycHJpc2luZ2x5IG1hbnkgY2xhc3NlcyBhcmUg
bWlzc2luZworICAgICAgICBGYXN0TWFsbG9jIGFubm90YXRpb24gYW5kIGFsbG9jYXRlZCBmcm9t
IHN5c3RlbS1tYWxsb2MuIFVzaW5nIFdURjo6bWFrZVVuaXF1ZSBlbmZvcmNlcyBjbGFzc2VzIC8g
c3RydWN0cyB0byB1c2UgRmFzdE1hbGxvYy4KKworICAgICAgICBXVEY6Om1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrIGlzIG9mZmVyZWQgZm9yIHRoZSBjb3JuZXIgY2FzZXMuIFRoaXMg
aXMgaWRlbnRpY2FsIHRvIHN0ZDo6bWFrZV91bmlxdWUuIFdlIHVzZSB0aGlzIGZvciBjbGFzc2Vz
CisgICAgICAgIHRoYXQgYXJlIG9mZmVyZWQgYnkgbm9uLVdlYktpdCBjb2RlIGJhc2UsIGxpa2Us
IHpsaWIuIFRoaXMgY2xlYXIgbmFtZSBjYW4gbWFrZSB1cyBlYXNpbHkgZmluZCB0aGlzIGFsbG9j
YXRpb24gaXMgaW50ZW50aW9uYWxseSBkb25lCisgICAgICAgIGJ5IHN5c3RlbS1tYWxsb2MuCisK
KyAgICAgICAgV2UgZG8gbm90IHRha2UgdGhlIGZvbGxvd2luZyBkaXJlY3Rpb24sIGBXVEY6Om1h
a2VVbmlxdWVgIGF1dG9tYXRpY2FsbHkgYWxsb2NhdGVzIEZhc3RNYWxsb2MgZXZlbiBpZiBGYXN0
TWFsbG9jIGFubm90YXRpb24gaXMgbm90IGF0dGFjaGVkLgorICAgICAgICBTaW5jZSBkZWZhdWx0
IGRlbGV0ZXIgaXMgcGVyZm9ybWluZyBgZGVsZXRlYCBhbmQgdGhpcyBpcyBub3Qgd2hhdCB3ZSB3
YW50IGZvciBGYXN0TWFsbG9jZWQgb25lcywgd2UgbmVlZCB0byByZXR1cm4KKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFQsIEZhc3RGcmVlRGVsZXRlcj4gZm9yIFQgaWYgVCBkb2VzIG5vdCBoYXZl
IEZhc3RNYWxsb2MtYW5ub3RhdGlvbi4gQXV0b21hdGljYWxseSBkb2luZyB0aGlzIHNvdW5kcyBh
IGJpdCBkYW5nZXJvdXMuCisKKyAgICAgICAgICAgIGF1dG8gcG9pbnRlciA9IFdURjo6bWFrZVVu
aXF1ZTxUPigpOworICAgICAgICAgICAgLy8gU3VwZXIgZGFuZ2Vyb3VzLCBidXQgc29tZXRpbWVz
IGl0IGlzIHJlcXVpcmVkLi4uCisgICAgICAgICAgICBhdXRvKiByYXdQb2ludGVyID0gcG9pbnRl
ci5yZWxlYXNlKCk7CisgICAgICAgICAgICAvLyBQYXNzaW5nIHJhd1BvaW50ZXIgdG8gc29tZXdo
ZXJlLCBhbmQKKyAgICAgICAgICAgIGRlbGV0ZSByYXdQb2ludGVyOworCisgICAgICAgIFRoZSBh
Ym92ZSBvbmUgYmVjb21lcyBpbnZhbGlkIGJlY2F1c2UgcG9pbnRlciBtYXkgc3RhcnQgcmVxdWly
aW5nIG5vbiBgZGVsZXRlYCBkZXN0cm95aW5nIGZ1bmN0aW9uLgorICAgICAgICBJbiB0aGUgYWJv
dmUgY2FzZSwgdGhlIGNvcnJlY3Qgd2F5IGJlY29tZXMgdGhlIGZvbGxvd2luZy4KKworICAgICAg
ICAgICAgcmF3UG9pbnRlci0+flQoKTsKKyAgICAgICAgICAgIGZhc3RGcmVlKHJhd1BvaW50ZXIp
OworCisgICAgICAgIFRoaXMgbG9va3Mgbm9uLWludHVpdGl2ZS4gQW5kIGhhdmluZyB0d28gd2F5
cyB0byBkZXN0cm95aW5nIG9iamVjdHMgKGBkZWxldGVgIG9yIHRoZSBhYm92ZSBvbmUpIGNhbiBi
ZSBlcnJvci1wcm9uZS4KKyAgICAgICAgSWYgd2UgaGF2ZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RCBmb3IgVCwgd2UgZG8gbm90IG5lZWQgdG8gY2FyZSBhYm91dCB0aGlzLiAibmV3IiBhbmQgImRl
bGV0ZSIgb3BlcmF0b3JzIGFyZSBkZWZpbmVkLCBhbmQgQysrIHdheSB3b3Jrcy4KKyAgICAgICAg
VGhlIHNpbXBsZSBpbnZhcmlhbnQsICJtYWtlVW5pcXVlIGp1c3QgZG9lcyBgbmV3YCBpbnRlcm5h
bGx5LiBBbmQgYGRlbGV0ZWAgb3BlcmF0b3IgZG9lcyBgZGVsZXRlYC4gZGVmYXVsdCBkZWxldGVy
IGlzIGp1c3QgZG9pbmcgYGRlbGV0ZWAiLCBpcyBrZXB0LgorCisgICAgICAgIFdoaWxlIHdlIG5l
ZWQgdG8gYW5ub3RhdGUgbWFueSBjbGFzc2VzIHdpdGggV1RGX01BS0VfRkFTVF9BTExPQ0FURUQs
IGl0IGlzIG9uZSB0aW1lIGNvc3Qgd2hlbiB3ZSBhZGQgYSBjbGFzcy4KKyAgICAgICAgQW5kLCBi
eSBpbnRyb2R1Y2luZyBgV1RGOjptYWtlVW5pcXVlPD5gLCB3ZSBubyBsb25nZXIgZm9yZ2V0IGFk
ZGluZyB0aGlzLgorCisgICAgICAgICAgICBtYWtlVW5pcXVlKC4uLikKKyAgICAgICAgICAgIHN0
YXRpY19hc3NlcnQoVCBpcyBGYXN0TWFsbG9jZWQgb3IgSXNvSGVhcGVkKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlX3VuaXF1ZTxUPiguLi4pCisKKyAgICAgICAgKiBiZW5jaG1hcmtzL0xvY2tG
YWlybmVzc1Rlc3QuY3BwOgorICAgICAgICAqIGJlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHA6
CisgICAgICAgICogd3RmL0NvbmN1cnJlbnRWZWN0b3IuaDoKKyAgICAgICAgKiB3dGYvQ3Jvc3NU
aHJlYWRUYXNrSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRs
ZXI6OnRhc2tSdW5Mb29wKToKKyAgICAgICAgKiB3dGYvRmlsZVByaW50U3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdURjo6RmlsZVByaW50U3RyZWFtOjpvcGVuKToKKyAgICAgICAgKiB3dGYvRnVuY3Rp
b24uaDoKKyAgICAgICAgKFdURjo6RnVuY3Rpb248T3V0KToKKyAgICAgICAgKiB3dGYvSGFzaFRh
YmxlLmg6CisgICAgICAgIChXVEY6OktleVRyYWl0cz46Okhhc2hUYWJsZSk6CisgICAgICAgICog
d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKToKKyAgICAgICAg
KiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWUpOgorICAgICAg
ICAoV1RGOjptYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjayk6CisgICAgICAgICogd3Rm
L1N0cmVhbUJ1ZmZlci5oOgorICAgICAgICAoV1RGOjpTdHJlYW1CdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogd3RmL1VuaXF1ZVJlZi5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlUmVmV2l0
aG91dEZhc3RNYWxsb2NDaGVjayk6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWYpOgorICAg
ICAgICAqIHd0Zi9nbGliL1J1bkxvb3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6
ZGlzcGF0Y2hBZnRlcik6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6CisgICAg
ICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRv
cik6CisKIDIwMTktMDgtMTggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtNYWNdIFVzZSB0aGUgUElEIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mgd2hl
biBpc3N1aW5nIGxvY2FsIGZpbGUgcmVhZCBzYW5kYm94IGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjZmM3MWRlOTcyNjA5NzE5Y2M1MjA5NjU1OTljZjgzYWZlMzkxMmFmLi44NmM1MjM1Y2RmN2Q1
NGYwNDM4MjUyNjhiMzc3MDRkMzgzNmI3NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYyNiBA
QAorMjAxOS0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxv
Y2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjayBwYXJ0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAK
KworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICAqIE1vZHVsZXMv
YXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5p
bmcpOgorICAgICAgICAqIE1vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCZWFjb246OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMv
Y2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0Nh
Y2hlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9iYWxTY29wZUNh
Y2hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUNhY2hlczo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVk
ZW50aWFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JDcmVkZW50aWFsczo6ZnJv
bSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNG
cm9tQ2VuYyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6Y3JlYXRlKToKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVT
ZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpsb2FkQmxvYik6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OmZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2Fk
ZXI6OnN0YXJ0KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKToKKyAgICAgICAg
KiBNb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwcm92aWRlR2VvbG9jYXRpb25Ubyk6CisgICAgICAgICogTW9kdWxlcy9nZW9s
b2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0b3JHZW9sb2NhdGlvbjo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvRE9N
V2luZG93SW5kZXhlZERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2U6OmZyb20pOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OklEQkNvbm5lY3Rp
b25Ub1NlcnZlcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmVuc3VyZVF1b3RhVXNlcik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4VmFsdWVTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OkluZGV4VmFsdWVTdG9yZTo6YWRkUmVjb3JkKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVt
b3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb246OnJlY29yZFZhbHVlQ2hhbmdlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNl
SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9y
ZTo6c2V0RGF0YWJhc2VJbmZvKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRl
eDo6cHV0SW5kZXhLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRl
eDo6bWF5YmVPcGVuQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
TWVtb3J5T2JqZWN0U3RvcmU6Om1heWJlT3BlbkN1cnNvcik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlQW5kUG9wdWxhdGVJ
bml0aWFsRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNo
RGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjYWNoZWRTdGF0ZW1lbnQpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjptYXliZUNyZWF0ZUJhY2tpbmdT
dG9yZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNv
cjo6Y3JlYXRlU1FMaXRlU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCVHJhbnNhY3Rpb246OmJlZ2luKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OmRpZE9wZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVxdWVzdERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3REYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpkZWxldGVEYXRhYmFzZVN1Y2Nlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6cHV0T3JBZGRTdWNjZXNzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6Z2V0QWxsUmVjb3Jkc1N1Y2Nlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YTo6b3BlbkN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJSZXN1bHREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25JbmZvOjp2ZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
SW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uSW5mbzo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCVHJhbnNhY3Rpb25JbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkluZm86OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJv
Y2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6
OnF1b3RhTWFuYWdlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYWNhcGFiaWxpdGllcy9OYXZp
Z2F0b3JNZWRpYUNhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JN
ZWRpYUNhcGFiaWxpdGllczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24v
V2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJNZWRpYVNl
c3Npb25NYW5hZ2VyOjptb2NrUGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYk1lZGlhU2Vz
c2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJj
ZTo6c2V0TGl2ZVNlZWthYmxlUmFuZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1l
ZGlhRGV2aWNlczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVVc2VyTWVkaWFUbyk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlcjo6Y2hhbm5lbEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bmV3VHJhbnNjZWl2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZWl2ZXJCYWNr
ZW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2Nl
aXZlckJhY2tlbmRGcm9tU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlh
RW5kcG9pbnQ6OmNyZWF0ZURhdGFDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1
ZGlvUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OmNyZWF0ZURUTUZCYWNrZW5kKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kOjpjcmVhdGVSZWNlaXZlckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTZW5kZXJCYWNrZW5kKToKKyAgICAg
ICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwcm92aWRlTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3F1b3RhL0RPTVdpbmRv
d1F1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1F1b3RhOjpmcm9tKToKKyAg
ICAgICAgKiBNb2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVs
ZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxl
cy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
czo6ZW5zdXJlUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1
ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZEZp
bHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6
Y3JlYXRlS2VybmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkJpcXVhZFByb2Nlc3Nvcjo6Z2V0RnJl
cXVlbmN5UmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdl
ck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxN
ZXJnZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheU5vZGU6
OkRlbGF5Tm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheVByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29y
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFs
aXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6Ok9zY2ls
bGF0b3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVyaW9k
aWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lQW5h
bHlzZXI6OlJlYWx0aW1lQW5hbHlzZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFs
eXNlcjo6c2V0RmZ0U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OlNj
cmlwdFByb2Nlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
ckRTUEtlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyRFNQS2VybmVsOjps
YXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyTm9kZTo6V2F2
ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nl
c3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVL
ZXJuZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5j
cHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkTWVzc2FnZTo6Rmlkb0hpZE1lc3NhZ2UpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcDoKKyAgICAgICAg
KGZpZG86OkZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgorICAg
ICAgICAoZmlkbzo6Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6
ZWREYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6
OnNjaGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVk
dWxlVHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5h
bWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VUcmFja2VyOjpyZWNvcmRDcmVhdGluZ0RhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVjb3JkRGVsZXRpbmdEYXRhYmFzZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAgIChXZWJDb3JlOjpT
UUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yV2ViRHJpdmVyOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9O
YXZpZ2F0b3JHUFUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yR1BVOjpmcm9tKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmlu
aXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OlJl
bmRlckZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRhbDo6Q29tcHV0ZUZ1bmN0aW9uRGVmaW5p
dGlvbldyaXRlcjo6Y3JlYXRlRW50cnlQb2ludFNjYWZmb2xkaW5nKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6TWV0YWw6OlR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5vZGUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6Q2hlY2tlcjo6YXNzaWduQ29uY3JldGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpDaGVja2VyOjphc3NpZ25UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpD
aGVja2VyOjpmb3J3YXJkVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6cGFyc2VTZW1h
bnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck5hdmlnYXRvckdQVTo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2Vp
dmVCaW5hcnlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENs
b3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRVcGdyYWRlVVJMKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25u
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVldWVCbG9iRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJh
bWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVG
cmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6Y3Jl
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldERlZmxh
dGVGcmFtZXI6OmVuYWJsZURlZmxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVm
bGF0ZUZyYW1lcjo6ZGVmbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXREZWZsYXRl
RnJhbWVyOjppbmZsYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZXI6OldlYlNv
Y2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEluZmxhdGVyOjpXZWJT
b2NrZXRJbmZsYXRlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldlYlZSLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvcldlYlZSOjpmcm9tKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c3RhcnRDYWNo
aW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0YXRlcyk6CisgICAgICAgICog
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRp
b246OnVwZGF0ZUZpbmlzaGVkU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlVGFz
a1RvRXZlbnRMb29wKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzRXZlbnRUYXJnZXRDYXN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3ApOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp0cmFuc2ZlckFycmF5QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
Y29kZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1ZNQ2xpZW50RGF0YTo6aW5pdE5vcm1hbFdvcmxkKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJy
aWRnZS9jL2NfY2xhc3MuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0NsYXNzOjptZXRo
b2ROYW1lZCBjb25zdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDQ2xhc3M6OmZpZWxkTmFt
ZWQgY29uc3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfY2xhc3MubW06CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xhc3M6Om1ldGhvZE5hbWVkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6Ok9iamNDbGFzczo6ZmllbGROYW1lZCBjb25zdCk6CisgICAgICAgICog
YnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2Fs
bE9iakNGYWxsYmFja09iamVjdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29tYmlu
ZWRVUkxGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpD
b21iaW5lZFVSTEZpbHRlcnM6OkNvbWJpbmVkVVJMRmlsdGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Q29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKToKKyAg
ICAgICAgKiBjcnlwdG8vU3VidGxlQ3J5cHRvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1h
bGl6ZUNyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jvc3NU
aHJlYWRDb3B5SW1wb3J0UGFyYW1zKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6CisgICAgICAgICog
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NEZWZh
dWx0U3R5bGVTaGVldHM6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjph
cHBlbmRTb3VyY2VzKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxvY2FsRm9udEZhY2VzRm9yRmFtaWx5
UmVnaXN0ZXJlZCk6CisgICAgICAgICogY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NHcm91cGluZ1J1bGU6OmNzc1J1bGVzIGNvbnN0KToKKyAgICAgICAgKiBj
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlOjpzYXZlQ2FjaGVkSW1hZ2VGb3JTaXplKToKKyAgICAgICAgKiBjc3Mv
Q1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NLZXlmcmFtZXNSdWxl
Ojpjc3NSdWxlcyk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y3NzUnVsZXMpOgorICAgICAgICAqIGNzcy9ET01DU1NQ
YWludFdvcmtsZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ1NTUGFpbnRXb3JrbGV0Ojpm
cm9tKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Ojpmcm9tKToKKyAg
ICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFJ1bGVTZXRzOjpEb2N1bWVudFJ1bGVTZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1lZGlhUXVlcnlTdHlsZUlmTmVlZGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVJ1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6cmVzZXRBdXRob3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpl
bnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyk6CisgICAgICAgICogY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjpjb2xs
ZWN0U2xvdHRlZFBzZXVkb0VsZW1lbnRSdWxlc0ZvclNsb3QpOgorICAgICAgICAqIGNzcy9Gb250
RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVm
ZmVyKToKKyAgICAgICAgKiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6d3JhcEZv
ckRlcHJlY2F0ZWRDU1NPTSk6CisgICAgICAgICogY3NzL1J1bGVGZWF0dXJlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6OmFkZCk6CisgICAgICAgICogY3NzL1J1bGVTZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkVG9SdWxlU2V0KToKKyAgICAgICAgKiBj
c3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aCk6CisgICAgICAgICog
Y3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0VGV4dFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdEJveFNoYWRvdyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KToKKyAgICAg
ICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVT
dHlsZVByb3BlcnRpZXM6OmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJh
dGlvbik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2spOgorICAgICAg
ICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAgICAgICAgKGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlJ
bmhlcml0VmFsdWVTZXR0ZXIpOgorICAgICAgICAoZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eVZh
bHVlU2V0dGVyKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Q1NTUGFyc2VySW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXJJbXBsOjpjb25zdW1lTWVkaWFSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OmNvbnN1bWVTdXBwb3J0c1J1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUtleWZyYW1lc1J1bGUpOgorICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2Vs
ZWN0b3I6OnBhcnNlUGFnZVBzZXVkb1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0VsZW1lbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjpDU1NQYXJzZXJTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3RvclZlY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKToK
KyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN1bWVCYXNpY1NoYXBlUGF0aCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NT
ZWxlY3RvclBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3RvclBhcnNlcjo6
Y29uc3VtZVBzZXVkbyk6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1
cmVCYWNrdXBRdWV1ZSk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6Oml0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c2V0RHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VPcmllbnRhdGlv
blRvKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpidWlsZEFjY2Vz
c0tleUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbXBsZW1lbnRhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Zm9ybUNvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVRleHRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6dXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmF4T2JqZWN0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnNldFBhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFj
Y2Vzc1NWR0V4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1
cml0eUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRleHRBdXRvU2l6aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnJlZ2lzdGVyQ1NTUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y29udGVudENoYW5nZU9ic2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb21UaW1lckhvbGRpbmdUYW5rKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVQYXJzZXJZ
aWVsZFRva2VuKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3Rv
cmFnZUFjY2Vzczo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3Rv
cmFnZUFjY2Vzczo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKToKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5xdWV1ZVRvVXBncmFkZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGFzc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6ZGF0YXNldCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVJbnRlcnNl
Y3Rpb25PYnNlcnZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlUmVz
aXplT2JzZXJ2ZXJEYXRhKToKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjphZGQpOgorICAgICAgICAqIGRvbS9F
dmVudE5hbWVzLmg6CisgICAgICAgICogZG9tL0V2ZW50UGF0aC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudFBhdGg6OmJ1aWxkUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGg6
OkV2ZW50UGF0aCk6CisgICAgICAgICogZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk6OmFkZE9ic2VydmVy
KToKKyAgICAgICAgKiBkb20vS2V5Ym9hcmRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpxdWV1ZU11dGF0aW9uT2JzZXJ2ZXJDb21wb3Vu
ZE1pY3JvdGFzayk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpj
cmVhdGVJZk5lZWRlZCk6CisgICAgICAgICogZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6
b2JzZXJ2ZWRTdWJ0cmVlTm9kZVdpbGxEZXRhY2gpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om1hdGVyaWFsaXplUmFyZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcik6CisgICAgICAgICogZG9tL05vZGVSYXJl
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjplbnN1cmVOb2RlTGlzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjplbnN1cmVNdXRhdGlvbk9ic2VydmVy
RGF0YSk6CisgICAgICAgICogZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJhZGlvQnV0dG9uR3JvdXBzOjphZGRCdXR0b24pOgorICAgICAgICAqIGRvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpyZXBvcnRVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmVuc3VyZVJlamVjdGVkUHJvbWlzZVRy
YWNrZXJTbG93KToKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6YWRkU2xvdEVsZW1lbnRC
eU5hbWUpOgorICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xvdCk6CisgICAgICAgICogZG9tL1RyZWVT
Y29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmFkZEVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6YWRkRWxlbWVudEJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVl
U2NvcGU6OmFkZEltYWdlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6YWRkSW1h
Z2VFbGVtZW50QnlVc2VtYXApOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpsYWJlbEVs
ZW1lbnRGb3JJZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJkRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpFZGl0b3IpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9u
UmVjdEdhdGhlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJlY3RHYXRoZXJl
cjo6Y2xlYXJBbmRDcmVhdGVOb3RpZmllcik6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6
CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRN
TENvbnZlcnRlcjo6SFRNTENvbnZlcnRlcik6CisgICAgICAgIChIVE1MQ29udmVydGVyQ2FjaGVz
Ojpjb21wdXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNv
bnRlbnQpOgorICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNhbGxPbkZpbGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxl
U3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0pOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpyZWFkSW50ZXJuYWwpOgorICAgICAg
ICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJh
bWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZFBhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUGFnZTo6Q2FjaGVkUGFnZSk6CisgICAgICAgICogaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjphZGRJZkNhY2hl
YWJsZSk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKToKKyAgICAgICAgKiBodG1sL0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OnJlc2V0Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKToKKyAgICAgICAgKiBodG1sL0Zv
cm1Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNhdmVkRm9ybVN0YXRlOjpkZXNl
cmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6Y3JlYXRlU2F2ZWRG
b3JtU3RhdGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OnRha2VTdGF0
ZUZvckZvcm1FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpyZWxMaXN0IGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QXJlYUVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnNldEltYWdl
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSBjb25z
dCk6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAqIGh0bWwv
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUVsZW1lbnQ6OmFkZFRvUGFzdE5hbWVzTWFwKToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpzYW5k
Ym94KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW1hZ2VMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cmVzZXRMaXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxMaW5rRWxlbWVudDo6c2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVt
ZW50OjpyZWxMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoSW5pdGlhbGl6YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UpOgor
ICAgICAgICAqIGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp1cGRhdGVBZnRlclN0eWxlUmVzb2x1dGlvbik6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFy
eUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN1bW1hcnlFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
UHVibGljVVJMTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNVUkxNYW5hZ2Vy
OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OnNldE1lc3NhZ2VET01BbmRTdGFydFRpbWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSk6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0OjpEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmluaXRpYWxpemVOZXdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cHJpbnRUb0NvbnNvbGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByZWxv
YWRTY2FubmVyOjplbWl0UnVsZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6Omlu
c2VydEhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZSk6CisgICAgICAgICog
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEVs
ZW1lbnRTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjppbnNl
cnRBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudFN0YWNrOjpwdXNoQ29tbW9u
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpjcmVhdGVQ
cmVsb2FkUmVxdWVzdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0
ZXJUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVkSFRUUEJvZHlT
dWZmaXhUcmVlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojpy
ZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1Rl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpw
YXJzZXIpOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFdlYlZUVFRleHRUcmFjazo6cGFyc2VyKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQ
SUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGlu
ZUFQSUhvc3Q6OmNsZWFyQWxsV3JhcHBlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjppbnNlcnRCZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01FZGl0b3I6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6
OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE91dGVy
SFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6Omluc2VydEFkamFjZW50SFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpzZXROb2RlVmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdl
c3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVET01B
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVQYWdl
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJsZVN0YXRlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChQYXJzZWRT
dHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0
eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6cmVzb3VyY2VDcmVhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRzKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6Okluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDUFVQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNQ
VVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFz
QWdlbnQ6Okluc3BlY3RvckNhbnZhc0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RlZE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHls
ZUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6SW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6Okluc3BlY3Rvck1lbW9yeUFnZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Okluc3BlY3Rvck5ldHdvcmtBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVy
bmFsU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3Rh
cnRGcm9tQ29uc29sZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpzdG9wRnJvbUNvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
V29ya2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yV29ya2VyQWdlbnQ6
Okluc3BlY3RvcldvcmtlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dlYkNv
bnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25zb2xlQWdlbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb25zb2xlQWdlbnQ6OmRpZEZh
aWxMb2FkaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJIZWFwQWdlbnQ6OldlYkhlYXBBZ2VudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKToKKyAg
ICAgICAgKiBsYXlvdXQvTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJveEZvckxheW91dEJveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3Jt
YXR0aW5nUm9vdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3Rh
dGU6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMgY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZTo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmU6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayk6CisgICAgICAgICogbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OnNwbGl0IGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCb3g6OkJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6ZW5zdXJlUmFyZURh
dGEpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpjcmVhdGVUYWJsZVN0cnVj
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OnByaW50TGF5b3V0VHJlZUZvckxpdmVE
b2N1bWVudHMpOgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlkOjphcHBlbmRDZWxsKToKKyAg
ICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0Nv
bnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQcmVmbGlnaHRSZXNwb25zZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgICogbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmluaXRGb3JTeW50aGVzaXplZERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpkZXRhY2hDaGlsZHJlbik6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudCk6CisgICAg
ICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlSGlzdG9yeU5h
dmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1
bGVQYWdlQmxvY2spOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y2hlY2tGb3JIZWFkQ2hhcnNldCk6CisgICAgICAgICogbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2Fk
ZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpN
YWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjbGVhclByZWxvYWRz
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKiBsb2FkZXIvaW9zL1ByZXZpZXdM
b2FkZXIubW06CisgICAgICAgICgtW1dlYlByZXZpZXdMb2FkZXIgaW5pdFdpdGhSZXNvdXJjZUxv
YWRlcjpyZXNvdXJjZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJQcmV2aWV3TG9hZGVyIGNv
bm5lY3Rpb246ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdM
b2FkZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNv
bnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24pOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZEVtYmVkZGVkT2JqZWN0VG9VcGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlld0xheW91dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGVGb3JQYWdpbmF0aW9uSWZOZWVk
ZWQpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOYXZpZ2F0b3JCYXNlOjpzZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojppbml0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0UmVzb3VyY2VVc2FnZU92
ZXJsYXlWaXNpYmxlKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAg
ICogcGFnZS9QYWdlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwOjpjYXB0
aW9uUHJlZmVyZW5jZXMpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1hcmspOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2U6OmNsZWFyTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6Om1lYXN1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2U6OmNsZWFyTWVhc3VyZXMpOgorICAg
ICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29u
dGV4dDo6b3V0cHV0TGlua2VkRGVzdGluYXRpb25zKToKKyAgICAgICAgKiBwYWdlL1JlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXI6OnN0YXJ0VGltZXIpOgorICAgICAgICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
QmFzZTo6U2V0dGluZ3NCYXNlKToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJT
Y3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2Vy
U3R5bGVTaGVldCk6CisgICAgICAgICogcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcjo6Q1NTQW5pbWF0aW9uQ29udHJvbGxlcik6
CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3Jh
cHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yOjpQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0ZWRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyOjpGaWxs
TGF5ZXJzUHJvcGVydHlXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5p
bWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAg
ICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojp1cGRhdGVTb3VyY2VTZWxmKToKKyAgICAgICAgKiBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRD
U1BEaXJlY3RpdmUpOgorICAgICAgICAqIHBhZ2UvbGludXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlM
aW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlT3ZlcmxheTo6cGxhdGZv
cm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBwYWdlL21hYy9QYWdlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6YWRkU2NoZWR1bGVQYWlyKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZSk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZCk6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlVHJlZTo6Y29tbWl0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6YXBwZW5k
Q2hpbGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpibGVuZE1peGVkVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1JlbW90ZUNvbW1hbmRM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNjcm9s
bEFuaW1hdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjplbnN1
cmVTbmFwT2Zmc2V0c0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9CdXM6OkF1ZGlvQnVzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpj
b3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9SZXNhbXBsZXI6OmNvbmZpZ3VyZUNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHlu
YW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpzZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2Fk
ZXI6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFJURktlcm5lbDo6SFJURktlcm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGS2Vy
bmVsOjpjcmVhdGVJbXB1bHNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL011
bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdWx0aUNoYW5uZWxS
ZXNhbXBsZXI6Ok11bHRpQ2hhbm5lbFJlc2FtcGxlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiOjppbml0aWFsaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Np
b246OkF1ZGlvU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVz
dGluYXRpb25NYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291cmNl
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVEYXRhU291cmNlOjpzZXRJbnB1dEZv
cm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1
dEZvcm1hdCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6CisgICAg
ICAgICogcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZWREZWNvZGVyOjpkZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29k
ZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNldHVwUG93ZXJPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxD
b250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1GYWN0b3J5Q2xlYXJLZXk6OmNyZWF0ZUNETSk6CisgICAgICAgICogcGxhdGZvcm0vZ2Ft
ZXBhZC9jb2NvYS9HYW1lQ29udHJvbGxlckdhbWVwYWRQcm92aWRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkdhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNlQWRkZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpLZXllZERlY29kZXJHZW5lcmljOjpEaWN0aW9uYXJ5OjphZGQpOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZWREZWNvZGVyOjpkZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OktleWVkRGVjb2RlckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9y
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpTY3Jv
bGxBbmltYXRvckdlbmVyaWMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5l
cmljOjplbnN1cmVTbW9vdGhTY3JvbGxpbmdBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZERlY29k
ZXI6OmRlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXI6OmVuY29kZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpzdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0OjpUZXh0TGF5b3V0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6
OmVuc3VyZURlcml2ZWRGb250RGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Ym91bmRzRm9yR2x5cGggY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
dHJpZXZlT3JBZGRDYWNoZWRGb250cyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZUZvbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlRm9u
dHM6OkdseXBoUGFnZUNhY2hlRW50cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3Rlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmg6CisgICAgICAgIChXZWJD
b3JlOjpHbHlwaE1ldHJpY3NNYXA8VD46OmxvY2F0ZVBhZ2VTbG93Q2FzZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6c3RhcnRBbmltYXRpb25Bc3luY2hyb25vdXNseSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6Ok1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2U6OnNlZWthYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9p
bnRHcmFwaDo6ZmluZE9yQ3JlYXRlTm9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6c2V0U2hhcGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9u
Ojpjb3B5U2hhcGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dDNEQU5HTEUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcmVwYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNRmFjdG9yeUZh
aXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjOjpwbGF0Zm9ybVBpY2tlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJh
bmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpu
b3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpsZWdp
YmxlT3V0cHV0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVzb3Vy
Y2VMb2FkZXJTaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNr
UHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpzZXRBc3NldFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQzo6c2V0TWVkaWFTZWxlY3Rpb25PcHRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0
QXNzZXRUcmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckFWRk9iakM6OnJlYWRUcmFja01ldGFkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVJvdGF0aW9uU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRh
dGVMYXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVNlc3Np
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRoVG9sZXJhbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZUxhc3RJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZWdpc3Rlck1l
ZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6c2Vla2FibGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZUN1cnJl
bnRGcmFtZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRQbGF5ZXJJdGVtVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpzZXRBc3NldFRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0TWVk
aWFTZWxlY3Rvbk9wdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFzc2V0VHJhY2spOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNBOjplbnN1cmVMYXllckFuaW1hdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtl
eWZyYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpzZXRDb250ZW50c1NjYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjphZGp1c3RUaWxlQ292ZXJhZ2VSZWN0Rm9y
U2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjp0aWxlZFNjcm9s
bGluZ0luZGljYXRvckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2Nv
YS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNvY29hOjpjb21tb25Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
ckNvY29hOjpzZXRTaGFwZVJvdW5kZWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbToKKyAgICAgICAgKC1bV2ViVGlsZWRC
YWNraW5nTGF5ZXIgY3JlYXRlVGlsZUNvbnRyb2xsZXI6XSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQbGF0Zm9y
bUNBTGF5ZXJXaW46OlBsYXRmb3JtQ0FMYXllcldpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcDoKKyAgICAgICAgKFdlYlRp
bGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSk6Cisg
ICAgICAgIChXZWJDb3JlOjptX3ByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJEYXRhOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRp
b25Db3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5U3BlY2lmaWNhdGlv
bkNvcmVUZXh0Ojpmb250UmFuZ2VzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6
OmVuc3VyZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbToKKyAgICAgICAgKFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L1Rl
eHR1cmVDYWNoZUNWLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ1Y6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpy
ZXBsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9h
ZEV4dGVybmFsRG9jdW1lbnRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZW5zdXJlQXVkaW9Tb3VyY2VQcm92
aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaE5leHRIb2xlUHVuY2hC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lck1TRTo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaDo6cHVz
aE5leHRIb2xlUHVuY2hCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoOjpyZWdpc3Rlck1lZGlhRW5naW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94OjpwYXJzZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUluZm9ybWF0aW9uQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklTT1NjaGVtZUluZm9ybWF0aW9uQm94OjpwYXJzZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpjcmVhdGVVcGRhdGVTY29w
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpjcmVhdGVDb21tYW5k
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWlu
dGluZ0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChOaWNvc2lhOjpQYWludGluZ0NvbnRleHRD
YWlybzo6Rm9yUGFpbnRpbmc6OkZvclBhaW50aW5nKToKKyAgICAgICAgKE5pY29zaWE6OlBhaW50
aW5nQ29udGV4dENhaXJvOjpGb3JSZWNvcmRpbmc6OkZvclJlY29yZGluZyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVN
YXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsLmNw
cDoKKyAgICAgICAgKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6
Y3JlYXRlRmFjdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExheWVy
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkdDM0RMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdl
QmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkltYWdlQmFj
a2luZ1RleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFwcGVkU3ltYm9sTmFtZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
RVMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
M0RUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpUZXh0dXJlTWFwcGVyR0wpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyOjpjbG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtU3RhdGU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
U3RhdGU6OnNldExhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1TdGF0ZTo6c2V0U2Vjb25kYXJ5UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZ1bGxTY3JlZW5D
b250cm9sbGVyOjpGdWxsU2NyZWVuQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpGdWxs
U2NyZWVuQ29udHJvbGxlcjo6ZW50ZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAo
V2ViQ29yZTo6bV9wcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlV2luZG93c0JpdG1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQnVmZmVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmJ1ZmZlcmVkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVvUHJlc2VudGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUltYWdlUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V0tDQUltYWdlUXVldWU6OldLQ0FJbWFnZVF1ZXVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRl
Rm9yR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2Fy
ZENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHYWRnZXQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2lkZ2V0OjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNjcm9sbGJhcjo6UmVuZGVyVGhlbWVTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVDb21ib0JveDo6UmVuZGVyVGhlbWVDb21ib0JveCk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OmRlY29kZUhlbHBlcik6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKEdJRkZyYW1lQ29u
dGV4dDo6ZGVjb2RlKToKKyAgICAgICAgKEdJRkltYWdlUmVhZGVyOjphZGRGcmFtZUlmTmVjZXNz
YXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6ZGVjb2RlQXRJbmRl
eCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVRpbGVDYWNoZTo6TGVnYWN5VGlsZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVRp
bGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJh
Z0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFu
ZFBhc3RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tOgorICAgICAgICAo
V2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvU2Nyb2xsQW5pbWF0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3RlQ29tbWFuZExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVBVkZJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZG
SW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1fY2Fw
dHVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyQXVkaW9DYXB0dXJlU291cmNlOjpH
U3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp3ZWJraXRfbWVkaWFfc3RyZWFtX3NyY19pbml0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVy
VmlkZW9DYXB0dXJlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Om1fY2FwdHVyZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJWaWRlb0VuY29k
ZXJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclZpZGVvRW5jb2RlckZh
Y3Rvcnk6OkNyZWF0ZVZpZGVvRW5jb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2ljUGFja2V0U29ja2V0RmFjdG9yeTo6QmFzaWNQYWNrZXRTb2NrZXRGYWN0b3J5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmluaXRpYWxpemVQZWVyQ29ubmVjdGlvbkZhY3RvcnlBbmRUaHJlYWRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y2VydGlmaWNhdGVHZW5l
cmF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQcm92
aWRlckdTdHJlYW1lcjo6Y3JlYXRlRGVjb2RlckZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDUHJvdmlkZXJHU3RyZWFtZXI6OmNyZWF0ZUVuY29kZXJGYWN0b3J5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bUNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW1Db2NvYTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29h
Ojpjb252ZXJ0VG9ZVVYpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlQ29jb2E6OnJvdGF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L1JUQ05vdGlmaWVyc01vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlRGF0YUNoYW5u
ZWxOb3RpZmllcjo6ZmlyZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVmZmVyZWQgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFVUkxEZWNvZGVyOjpjcmVhdGVEZWNvZGVUYXNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
OjpSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2VuZEJv
ZHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgX3Jlc3RhcnRdKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29va2llSmFyREI6OnNlYXJjaENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVN
YW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ29udGV4dDo6Q3Vy
bENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6d2lsbFNldHVwU3NsQ3R4
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxGb3JtRGF0YVN0cmVhbTo6Z2V0UG9zdERhdGEpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OnJ1bk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OmRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0
U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW06CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZSBjYWxsRnVuY3Rpb25Pbk1haW5UaHJlYWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE5TUmVzb2x2ZVF1ZXVlU291cDo6cmVzb2x2ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50aWFsRnJvbVBlcnNpc3RlbnRTdG9yYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRm
b3JtL3RleHQvTG9jYWxlSUNVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZUlDVTo6Y3JlYXRlTGFiZWxWZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tNb250aExhYmVscyk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVGYWxsYmFja0FNUE1MYWJlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQv
TG9jYWxlTm9uZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENvZGVjSUNVOjpyZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjTGF0aW4xOjpy
ZWdpc3RlckNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNSZXBsYWNl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0
ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENvZGVjVVRGODo6cmVnaXN0ZXJDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQv
VGV4dENvZGVjVXNlckRlZmluZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVXNl
ckRlZmluZWQ6OnJlZ2lzdGVyQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9M
b2NhbGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3VGV4dENvZGVjV2luKToKKyAgICAgICAgKiBwbGF0
Zm9ybS92ci9vcGVudnIvVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWUlBsYXRmb3JtTWFuYWdlck9wZW5WUjo6Z2V0VlJEaXNwbGF5cyk6CisgICAgICAgICogcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckRyYWdBbmREcm9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2VhcmNoUG9w
dXBNZW51REIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51REI6OmNyZWF0
ZVByZXBhcmVkU3RhdGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldDRGF0YU9iamVjdDo6U2V0RGF0YSk6CisgICAgICAg
ICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6
OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxleExpbmVM
YXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpjcmVhdGVSb290SW5saW5lQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wbGV4TGluZUxheW91dDo6bGlua1RvRW5kTGluZUlmTmVlZGVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZsb2F0aW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmpl
Y3Q6OmNvcHlUb05ld0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGlu
Z09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRpbmdPYmplY3RzOjpjb21wdXRlUGxhY2VkRmxvYXRzVHJlZSk6CisgICAgICAgICogcmVuZGVy
aW5nL0dyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlH
cmlkQXJlYSk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OnVwZGF0ZUJhc2VsaW5l
QWxpZ25tZW50Q29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJl
c3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0pOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGlzdEJhc2VkVGVzdFJlc3VsdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjptdXRhYmxlTGlzdEJhc2VkVGVzdFJl
c3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjphZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT3Zl
cmxhcE1hcDo6cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0SW50b1RyYWNrZWRSZW5k
ZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25lZERlc2NlbmRhbnRzTWFwOjph
ZGREZXNjZW5kYW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWdpblVwZGF0
ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmVu
c3VyZUJsb2NrUmFyZURhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxpbmVDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVHcmlk
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlRmxvYXRpbmdP
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlTGluZUJv
eGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bWF0ZXJpYWxpemVSYXJl
QmxvY2tGbG93RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb250cm9sU3RhdGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpjcmVhdGVJbmxpbmVCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5vZGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudENvbnRhaW5lcjo6c2V0UmVuZGVyQm94RnJhZ21lbnRJ
bmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhZ21lbnRlZEZsb3c6OmNvbnRhaW5pbmdGcmFnbWVudE1h
cCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdlb21ldHJ5TWFwOjpwdXNoVmlldyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tz
Rm9yQXV0b1JlcGVhdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjcmVh
dGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjpSZW5kZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dC
b3gpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxh
dGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBbmNl
c3RvckNsaXBwaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5n
OjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OnN0YXJ0VHJhbnNpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2gpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9y
dENvbnN0cmFpbmVkTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojpj
cmVhdGVMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11bHRpQ29sdW1uRmxvdyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnN0eWxlRGlkQ2hh
bmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0OjpjcmVhdGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpy
ZXBhaW50Vmlld1JlY3RhbmdsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3
Ojpjb21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmltYWdlUXVhbGl0
eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVwYWludFJlZ2lv
bkFjY3VtdWxhdG9yOjpSZXBhaW50UmVnaW9uQWNjdW11bGF0b3IpOgorICAgICAgICAqIHJlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6
OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjphcHBlbmRGbG9hdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xs
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblJhbmdlRGF0YTo6Y29sbGVjdEJvdW5k
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQ6OnJ1blJlc29sdmVyIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWludEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlTGluZUxheW91dDo6Z2VuZXJhdGVMaW5lQm94VHJlZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5n
OjphZGRUZXh0Tm9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxz
IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUluc2V0U2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2ly
Y2xlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRWxsaXBzZVNoYXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZVBvbHlnb25TaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNo
YXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVCb3hTaGFwZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVQ
YXRoOjpibGVuZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRh
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxsTGF5ZXI6OkZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5
ZXI6Om9wZXJhdG9yPSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjbG9uZVB0cik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmVuc3VyZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZH
UmVuZGVyU3R5bGVEZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93U1ZHRGF0
YTo6U3R5bGVTaGFkb3dTVkdEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhZG93
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWRE
YXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpSZW5kZXJTVkdJ
bWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lOjpjcmVhdGVJbmxpbmVGbG93Qm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6YXBwbHlSZXNvdXJj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRl
cm4pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jlc291cmNlczo6c2V0Q2xpcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJj
ZXM6OnNldEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNldE1hcmtl
clN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFya2VyTWlkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFya2VyRW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Jlc291cmNlczo6c2V0TWFza2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlczo6c2V0RmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OnNl
dFN0cm9rZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJl
bmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVN
ZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVp
bGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9S
ZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRl
cjo6UmVuZGVyVHJlZVVwZGF0ZXIpOgorICAgICAgICAqIHN0eWxlL1N0eWxlSW52YWxpZGF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkludmFsaWRhdG9yOjpJbnZhbGlkYXRvcik6
CisgICAgICAgICogc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OmNvbW1pdFJlbGF0aW9uc1RvUmVuZGVyU3R5bGUpOgorICAgICAgICAqIHN0eWxlL1N0
eWxlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZXNvbHZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmFjdGl2ZVN0eWxlU2hlZXRzQ29udGFp
bnMgY29uc3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmUpOgorICAgICAgICAqIHN2
Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdUYXJnZXQp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6OlNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6ZW5zdXJl
U1ZHUmFyZURhdGEpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdXBwbGVtZW50YWxUcmFuc2Zvcm0p
OgorICAgICAgICAqIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aEJ5dGVTdHJlYW06OmNvcHkgY29uc3QpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24v
U01JTFRpbWVDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWlu
ZXI6OnNjaGVkdWxlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5OjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9ySW1wbC5oOgorICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQcmltaXRpdmVQcm9wZXJ0eUFuaW1hdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbFNldHRpbmdzOjpmcm9tKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHViRnJvbnRlbmQ6Okluc3BlY3RvclN0dWJG
cm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OkludGVybmFscyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmVuYWJsZU1vY2tTcGVlY2hTeW50aGVzaXplcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9wZW5EdW1teUluc3BlY3RvckZyb250ZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0UHJpbnRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjppbml0aWFsaXplTW9ja0NETSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnF1ZXVlTWljcm9UYXNrKToKKyAgICAgICAgKiB0ZXN0aW5nL0xlZ2FjeU1vY2tD
RE0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5TW9ja0NETTo6Y3JlYXRlU2Vzc2lvbik6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjcmVh
dGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrR2FtZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHMpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckV2ZW50UXVldWU6OmVucXVldWVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6V29y
a2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmFk
ZE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1By
b3h5KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2Fn
ZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpXb3JrZXJSdW5Mb29wKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6
V29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpy
ZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdp
c3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVt
b3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0Nv
bnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2Fk
ZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxp
dGVEYXRhYmFzZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAgICAgICAqIHdvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2Jh
bFNjb3BlOjpyZWdpc3RlclBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0Q29uc29s
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0Q29uc29sZUNsaWVudDo6bWVz
c2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OldvcmtsZXRH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OmFkZENv
bnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdFdpdGhTdWJjbGFzcyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp1cGxvYWQpOgorICAgICAgICAqIHhtbC9Y
UGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgICogeG1sL1hQYXRoUHJlZGljYXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlhQYXRoOjpldmFsdWF0ZVByZWRpY2F0ZSk6CisgICAgICAgICogeG1s
L1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFN0eWxlU2hl
ZXQ6OmxvYWRDaGlsZFNoZWV0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJv
cik6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kU3RhcnRFbGVtZW50TlND
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRFbmRF
bGVtZW50TlNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjph
cHBlbmRDaGFyYWN0ZXJzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxi
YWNrczo6YXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5kQ0RBVEFCbG9ja0NhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENvbW1lbnRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRJbnRlcm5hbFN1YnNldENh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZEVycm9y
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OlhNTERvY3Vt
ZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpkb0VuZCk6
CisKIDIwMTktMDgtMTggIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbTEZDXVtURkNdIENvbXB1dGUgY29sdW1uIG1pbi9tYXggd2lkdGhzIGFuZCB0YWJsZSB3aWR0
aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDYwZTdmYjU2Yzk3MDVlMTlmYzg5YmM4YTZiZDRmNDIz
ZWYxNjI1YmUuLmZiZjA0ZjI4OTA0MzFhNDRlZDk5ZWQ5YzkzMGU2MmRhYWVkNDJmZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA4LTE4ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIG1ha2VVbmlxdWU8VD4s
IHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZCwgbWFrZVVuaXF1ZSAvIG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrIHBhcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgorCisgICAgICAgICogcGFsL2NyeXB0by9vcGVuc3NsL0NyeXB0b0RpZ2VzdE9w
ZW5TU0wuY3BwOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3RDb250ZXh0SW1wbDo6Y3JlYXRl
KToKKyAgICAgICAgKiBwYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHA6CisgICAgICAgIChQQUw6
OkNsb2NrOjpjcmVhdGUpOgorICAgICAgICAqIHBhbC9zeXN0ZW0vbWFjL0Nsb2NrQ00ubW06Cisg
ICAgICAgIChDbG9jazo6Y3JlYXRlKToKKwogMjAxOS0wOC0xNCAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIG1hY09TIDwgMTAu
MTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRy
aXZlci9DaGFuZ2VMb2cKaW5kZXggZTZhNTNiMzExZTJlY2QyMTY3ODUzNWFlMWEzMDliMDA5YWVh
YWE3ZS4uNjY5ZWUxZjY4YzA2ZTNiNjZjZTBhYmYxNTczMDA2N2E4YjRhYmU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBl
bnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKworICAgICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3BwOgorICAgICAgICAoV2ViRHJpdmVy
OjpXZWJEcml2ZXJTZXJ2aWNlOjpjb25uZWN0VG9Ccm93c2VyKToKKyAgICAgICAgKiBnbGliL1Nl
c3Npb25Ib3N0R2xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb25Ib3N0OjpsYXVu
Y2hCcm93c2VyKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6OnNlbmRNZXNzYWdl
VG9CYWNrZW5kKToKKwogMjAxOS0wOC0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQg
aXMgZmFzdC1hbGxvY2F0ZWQsIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIGFubm90YXRpb24gcGFy
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA0YTVlOTUyOWIzODg0YjgwMTQ1MDRkYmJjMDk0OTlhZjcxZWVhZTE2Li44
ZDFkZWViYjQyZGY2MWUyNGM1Y2QxNDkzMDQ3YmRiNzU1ZWJmNDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU2NSBAQAorMjAxOS0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMg
ZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2ND
aGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0
b3J5Rm9yTmV3U3RhdGlzdGljcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFw
OjphZGQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9h
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjpOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TG9hZENoZWNrZXI6OmNoZWNrQ09SU1JlcXVlc3RXaXRoUHJlZmxpZ2h0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZVF1b3RhVXNlcnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6c3RvcmFnZVF1b3RhTWFuYWdlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmFk
ZFN1cHBsZW1lbnQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFy
dE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpjcmVhdGUp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6OnNjaGVkdWxlRGF0YWJhc2VVcGRh
dGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRP
ckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlQXJlYTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyU2V0OjphZGQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VHJhbnNpZW50
TG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6Om1ha2VFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
Q2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpDYWNoZTo6dXBkYXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmRl
Y29kZVN0b3JhZ2VSZWNvcmQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRp
bmdGcmFtZUxvYWQ6OnJlZ2lzdGVyU3VicmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRyaWV2ZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9h
ZGVkRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6c3luY2hyb25pemUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlN0b3JhZ2U6OnJlYWRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OnJldHJpZXZlRnJvbU1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Rv
cmFnZTo6cmV0cmlldmUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6
OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJz
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3Vy
Y2VzRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNl
c0VudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6
c3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRjaENhY2hlOjpzdG9yZVJlZGlyZWN0KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3Rv
cmFnZVNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6bmV0
d29ya0hUVFBTVXBncmFkZUNoZWNrZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxl
Z2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFzazpdKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24g
Y29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Npb25DdXJs
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cGF5bWVudENvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdl
U2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vz
c2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvblNvdXA6Ok5ldHdv
cmtTZXNzaW9uU291cCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uU291cDo6Y3Jl
YXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
U2Vzc2lvblNvdXAuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBS
ZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0
cmVhbVJlYWRBc3luYyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtN
RE5TUmVnaXN0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTUROU1JlZ2lzdGVyOjpy
ZWdpc3Rlck1ETlNOYW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ01vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDTW9uaXRvcjo6c3Rh
cnRVcGRhdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSVENQcm92aWRlcjo6TmV0d29y
a1JUQ1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVh
dGVTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUlRDUHJvdmlkZXI6OndyYXBOZXdU
Q1BDb25uZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
TWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVN5bmNNZXNzYWdlRW5j
b2Rlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVuYWJsZUluY29taW5nTWVzc2FnZXNU
aHJvdHRsaW5nKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2Fn
ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoQXN5
bmNSZXBseSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAo
SVBDOjpEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
SGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlQXN5bmMpOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvblRl
cm1pbmF0aW9uV2F0Y2hkb2c6OkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nKToKKyAgICAg
ICAgKElQQzo6Q29ubmVjdGlvbjo6b3Blbik6CisgICAgICAgIChJUEM6OmNyZWF0ZU1lc3NhZ2VE
ZWNvZGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVjZWl2ZVNvdXJjZUV2ZW50SGFu
ZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAgIChJUEM6
OkNvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
d2luL0Nvbm5lY3Rpb25XaW4uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5t
bToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yUG9ydCk6
CisgICAgICAgIChXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFs
SG9zdGluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0Ojpj
cmVhdGVGb3JFeHRlcm5hbFBsdWdpbkhvc3RpbmdQcm9jZXNzKToKKyAgICAgICAgKiBQbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0FQSVVSTC5oOgorICAgICAgICAoQVBJOjpVUkw6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6
OlVSTDo6cGFyc2VVUkxJZk5lY2Vzc2FyeSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVP
YmplY3RJbnZvY2F0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5IF9pbml0V2l0aFdlYlBhZ2U6XSk6CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5IF9pbml0V2l0aFdlYlBhZ2VQcm94eTpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkgX3NlbmRJbnZvY2F0aW9uOmludGVyZmFjZTpdKToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKHdlYmtpdENvbnRl
eHRNZW51SXRlbUNyZWF0ZSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3
KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKToK
KyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24p
OgorICAgICAgICAod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlv
bl93aXRoX2xhYmVsKToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0
aF9zdWJtZW51KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJh
dG9yKToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJv
eEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dGV4bWFwTGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmVuc3VyZVJvb3RM
YXllcik6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
Q29tcG9zaXRvcjo6VGhyZWFkZWRDb21wb3NpdG9yKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lu
cy9OUFJlbW90ZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUmVtb3RlT2JqZWN0
TWFwOjpyZWdpc3Rlck5QT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luTW9kdWxlOjp0cnlMb2FkKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9j
YWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRt
YXBEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVT
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OkhUVFBDb29raWVTdG9yZTo6cmVnaXN0ZXJPYnNlcnZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChX
S0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudCk6CisgICAgICAgIChXS0NvbnRleHRTZXRI
aXN0b3J5Q2xpZW50KToKKyAgICAgICAgKFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlvbk1hbmFnZXIuY3BwOgorICAgICAg
ICAoV0tHZW9sb2NhdGlvbk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXS05vdGlmaWNhdGlv
bk1hbmFnZXJTZXRQcm92aWRlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNl
dFBhZ2VGaW5kQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVu
dCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQp
OgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VTdGF0ZUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tOgorICAgICAgICAoLVtXS09ic2VydmFibGVQYWdlU3RhdGUgaW5pdFdpdGhQYWdl
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93cGUvV0tWaWV3LmNwcDoKKyAgICAgICAg
KFdLVmlld1NldFZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgX2luaXRXaXRoUGFnZVJlZjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgorICAgICAgICAoLVtXS0hUVFBDb29raWVTdG9y
ZSBhZGRPYnNlcnZlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldERvd25sb2FkRGVsZWdhdGU6
XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpuYW1lOl0pOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bmFtZTp1c2VyQ29udGVudFdvcmxkOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHNldEFs
bG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24g
c2V0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWFkeVNRTGl0ZVN0YXRlbWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmNwcDoKKyAgICAgICAgKHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uQ29uc3RydWN0ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHA6Cisg
ICAgICAgIChhdHRhY2hDb250ZXh0TWVudUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHA6CisgICAg
ICAgIChhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHA6CisgICAgICAg
IChhdHRhY2hEb3dubG9hZENsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRGYXZpY29u
RGF0YWJhc2VPcGVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAod2Via2l0RmluZENvbnRyb2xsZXJDb25zdHJ1Y3RlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZvcm1DbGllbnQuY3BwOgorICAg
ICAgICAoYXR0YWNoRm9ybUNsaWVudFRvVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEdlb2xvY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRHZW9sb2Nh
dGlvbk1hbmFnZXJDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJ
Y29uTG9hZGluZ0NsaWVudC5jcHA6CisgICAgICAgIChhdHRhY2hJY29uTG9hZGluZ0NsaWVudFRv
Vmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYktpdE5vdGlm
aWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwOgorICAgICAgICAoYXR0YWNoVUlDbGllbnRUb1ZpZXcpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAo
d2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRs
ZXIpOgorICAgICAgICAod2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3JlZ2lzdGVyX3Njcmlw
dF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1
Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAod2Via2l0V2ViVmlld0NvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRFbW9qaUNob29zZXIuY3BwOgorICAgICAgICAod2Via2l0RW1vamlDaG9vc2VyU2V0dXBF
bW9qaVNlY3Rpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJ
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkluc3BlY3Rvci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJJbnNw
ZWN0b3JDcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxlcik6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFz
ZURpZFJlbGF1bmNoV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRd
KToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJh
dGlvbjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcDoKKyAgICAgICAgKFdLV1BFOjpW
aWV3OjpWaWV3KToKKyAgICAgICAgKFdLV1BFOjpWaWV3OjpzZXRDbGllbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHA6CisgICAgICAgIChXUEVRdFZpZXc6
Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3Ojpub3RpZnlM
b2FkRmFpbGVkQ2FsbGJhY2spOgorICAgICAgICAoV1BFUXRWaWV3OjpydW5KYXZhU2NyaXB0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdQRVF0Vmlld0JhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6QXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5OjpzZW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRp
bmdEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3Jl
YXRlSWNvbkxvYWRpbmdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OmNyZWF0ZVVJQ2xpZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OmNyZWF0ZU1l
ZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGluayk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
V2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2lu
Z0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRUZXh0SW5kaWNh
dG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmVuc3VyZUdlc3R1cmVDb250cm9s
bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpkaXNwYXRjaEFm
dGVyRW5zdXJpbmdEcmF3aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6
Z2V0RGF0YUZyb21EZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2U6OmNvbXBsZXRlRGV2aWNlSWRIYXNoU2FsdEZvck9yaWdpbkNhbGwpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1hcC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VUlHYW1lcGFkUHJvdmlkZXI6OnNldEluaXRpYWxDb25uZWN0ZWRHYW1lcGFkcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6dGFrZVVwbG9hZEFz
c2VydGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNldFByb3ZpZGVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAg
ICAoV2ViS2l0OjpwbHVnaW5SZXF1aXJlc0d0azIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6ZGlk
Q29ubmVjdFRvUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
aW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZUhvc3Q6Om1ha2VOb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjptYWtlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVNYWMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjOjpTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbToKKyAgICAgICAgKFdlYktp
dDo6SGlkU2VydmljZTo6ZGV2aWNlQWRkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHZW9s
b2NhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9u
TWFuYWdlclByb3h5OjpXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5OjpzZXRQcm92aWRlcik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlcjo6c2V0Rm9jdXNlZE1lZGlhRWxlbWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjptX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SWNvbkxv
YWRpbmdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpbmRDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9z
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmlu
Z1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERyYXdpbmdBcmVh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBy
b2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRGdWxsc2NyZWVuQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojp1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxlY3Rpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzcGVlY2hTeW50aGVzaXNEYXRh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc0NhY2hlOjphZGRQcm9jZXNzSWZQb3NzaWJsZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNldEluamVjdGVkQnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnNldEhpc3RvcnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
c2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0
QXV0b21hdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZGlkQ29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2Fkcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlh
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpC
YWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1Jl
bW90ZUluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3Rv
ckNsaWVudDo6aW5zcGVjdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJh
Y2tpbmdTdG9yZVdheWxhbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdBbmREcm9w
SGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5kQ29tcG9zaXRvcjo6
aW5pdGlhbGl6ZUVHTCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29u
dHJvbGxlci5tbToKKyAgICAgICAgKFdlYktpdDo6RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmVu
c3VyZUVkaXRhYmxlSW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlv
blN0YXRlVHJhY2tpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS0FwcGxpY2F0aW9uU3RhdGVUcmFj
a2luZ1ZpZXcgZGlkTW92ZVRvV2luZG93XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jb21tb25Jbml0aWFsaXph
dGlvbldpdGhQcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGluaXRXaXRoRnJhbWU6cHJvY2Vzc1Bvb2w6Y29uZmlndXJhdGlvbjp3ZWJWaWV3Ol0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVEcmF3aW5nQXJlYVByb3h5Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBiZWNvbWVGaXJzdFJlc3BvbmRlckZvcldlYlZpZXddKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfZWxlbWVudERpZEZvY3VzOnVzZXJJc0ludGVyYWN0aW5nOmJsdXJQcmV2
aW91c05vZGU6YWN0aXZpdHlTdGF0ZUNoYW5nZXM6dXNlck9iamVjdDpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjplbGVtZW50RGlkRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyIGluaXRXaXRoV2luZG93OndlYlZpZXc6cGFnZTpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbToKKyAgICAgICAgKC1bV0tUZXh0Rmlu
ZGVyQ2xpZW50IGluaXRXaXRoUGFnZTp2aWV3OnVzZVBsYXRmb3JtRmluZFVJOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRh
c2spOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmNyZWF0ZUJhY2tlbmQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlhbEdhbWVwYWRzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR2FtZXBhZFByb3ZpZGVyOjpnYW1lcGFkQ29ubmVjdGVkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdLQnVuZGxlU2V0Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRD
b250ZXh0TWVudUNsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQp
OgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Rm9ybUNsaWVudCk6CisgICAgICAgIChXS0J1bmRs
ZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLQnVuZGxlUGFnZVNldFJlc291
cmNlTG9hZENsaWVudCk6CisgICAgICAgIChXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5
LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJhbm5lck1hYy5t
bToKKyAgICAgICAgKFdLQnVuZGxlUGFnZUJhbm5lckNyZWF0ZUJhbm5lcldpdGhDQUxheWVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmpl
Y3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVG
cmFtZU9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNp
b25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJFZGl0b3IuY3BwOgorICAgICAgICAod2Via2l0V2ViRWRpdG9yQ3JlYXRlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4
dGVuc2lvbi5jcHA6CisgICAgICAgICh3ZWJraXRXZWJFeHRlbnNpb25DcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHA6
CisgICAgICAgICh3ZWJraXRGcmFtZUdldE9yQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlBh
Z2VDcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTVRleHRJdGVyYXRvci5tbToKKyAgICAgICAgKC1bV0tET01UZXh0SXRlcmF0b3IgaW5pdFdp
dGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAo
LVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgX3NldEZvcm1EZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlOjpJbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpzZXRDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ01lc3NhZ2U6OlBlbmRpbmdNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6c2VuZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVTb2NrZXRGYWN0b3J5KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVTZXJ2
ZXJUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5Ojpj
cmVhdGVVZHBTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5
OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KToKKyAgICAgICAgKFdlYktpdDo6
TGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlQXN5bmNSZXNvbHZlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I6OlBsdWdpbkRlc3RydWN0
aW9uUHJvdGVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6c2NoZWR1
bGVUaW1lcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06
OmRlbGl2ZXJEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Y
MTE6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6Y3JlYXRlV2ViRXZlbnQgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUNvbG9yQ2hvb3Nlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6c2hvd1Bh
aW50UmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJv
YXJkT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZE92ZXJyaWRl
czo6YWRkT3ZlcnJpZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmNyZWF0ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVuc3VyZUJhY2tp
bmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0VHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJs
YXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0
U2hhcGVSb3VuZGVkUmVjdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXll
clJlbW90ZVRpbGVkQmFja2luZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5
ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV90ZXh0QXV0b1Npemlu
Z0FkanVzdG1lbnRUaW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVk
QnVuZGxlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dEluamVjdGVkQnVuZGxlRm9ybUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
dEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YmVnaW5QcmludGlu
Zyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpwcmludCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRHJhd2luZ0FyZWFNYWMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJh
Y2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWFya0Fs
bExheWVyc1ZvbGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlQXV0
b21hdGlvblNlc3Npb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmxpYldl
YlJUQ05ldHdvcmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRTdXBwbGVt
ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNvdXJjZTo6
U291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZSk6CisK
IDIwMTktMDgtMTggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtNYWNdIFVzZSB0aGUgUElEIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3Mgd2hlbiBpc3N1
aW5nIGxvY2FsIGZpbGUgcmVhZCBzYW5kYm94IGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
aW5kZXggOTNlN2U4MzU4ZWM2YjFhYTA3NzkzOTExMjkwZmY4N2UxMjNmYjQ0NS4uMDI0MmY4NjM0
Y2VhZjVhYmRmNDg3NGQwOGVhNGU3OTRkMTkyZmY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMiBAQAorMjAxOS0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQg
aXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFnZVN5bmNNYW5hZ2VyKToKKyAgICAgICAgKiBTdG9y
YWdlL1N0b3JhZ2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6
ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6dGVybWluYXRlKToK
KyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9OZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwOgorICAgICAgICAoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKToKKyAgICAgICAgKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZW5zdXJlU2Vzc2lvbik6CisKIDIwMTktMDgtMTUgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUV10gRW5hYmxlIENv
cmVGb3VuZGF0aW9uIHVzZSBpZiBidWlsZGluZyBmb3IgQXBwbGUgdGFyZ2V0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Y2YvQ2hhbmdlTG9nCmluZGV4IGM2M2VmYWJhNWQ4ODY4M2JlZmJmMTY5NThmZjFmZTAwMDRlYTlj
NmIuLjA2ZTc5NjBlZmY2ZWMwNjYxNGFlZGVkZGEzZGUwYmE3NzEyNGExMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDgtMTggIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxU
Piwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVu
aXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZyb250ZW5kU2V0
dGluZ3MpOgorCiAyMDE5LTA4LTEwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNDg0NTQpOiBXSzEgaW5zcGVj
dG9yIGZyb250ZW5kIGNsaWVudCBkb2Vzbid0IHF1ZXVlIG1lc3NhZ2VzIHRvIHRoZSBmcm9udGVu
ZCBiZWZvcmUgaXQncyBsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCAwMWQy
MDhlYzMwYTAyMTg5YjdkNzJjNTUzNGMwNjk3NjZmMDU5OTRhLi41NTFhMGI3NzlhMGU0OTEyNTAx
MDRmNjVjNzg5NmM4NjI3YmQwMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTktMDgtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlz
IGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbToKKyAgICAgICAg
KC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQgc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczpz
dGlja3lDb250YWluZXJNYXA6XSk6CisKIDIwMTktMDgtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2gg
ZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBhbm5v
dGF0aW9uIHBhcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBkYjhjM2NkYmVlN2Y4
ZWViNWMyOGNjYzA4YmQwZjkyMzJlMTg3NDc0Li5mZjhjMTIzZDQ3MTg0MDI0M2FiMWI0M2U2ODYw
MTBkMjRmYWMyMjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTktMDgtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxs
b2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFy
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBIaXN0
b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGluaXRdKToK
KyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoLVtXZWJIaXN0
b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5tbToKKyAgICAgICAgKFdLUENH
ZXRTY3JpcHRhYmxlTlBPYmplY3RSZXBseSk6CisgICAgICAgIChXS1BDQm9vbGVhblJlcGx5KToK
KyAgICAgICAgKFdLUENCb29sZWFuQW5kRGF0YVJlcGx5KToKKyAgICAgICAgKFdLUENJbnN0YW50
aWF0ZVBsdWdpblJlcGx5KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNl
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQcm94eUluc3RhbmNlOjptZXRob2ROYW1lZCk6CisgICAg
ICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6OmZpZWxkTmFtZWQpOgorICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IGNyZWF0ZVBsdWdpbl0pOgorICAgICAgICAqIFBsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXIubW06CisgICAgICAgIChXZWJOZXRzY2Fw
ZVBsdWdpbkV2ZW50SGFuZGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IHNjaGVk
dWxlVGltZXJXaXRoSW50ZXJ2YWw6cmVwZWF0OnRpbWVyRnVuYzpdKToKKyAgICAgICAgKiBTdG9y
YWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdp
bkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKGFkZFJlZGlyZWN0VVJMKToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0YWNoU2NyaXB0RGVidWdn
ZXJdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06
CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXZWJUZXh0SXRlcmF0
b3IgaW5pdFdpdGhSYW5nZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlZpZXcgX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHRdKToKKyAgICAgICAgKC1b
V2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToK
KyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6d29ybGQ6c291cmNlOnVy
bDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0ZWRGcmFtZXM6XSk6Cisg
ICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDp3b3JsZDpzb3VyY2U6
dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6CisgICAgICAgICgtW1dl
YlZpZXcgX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyXSk6CisgICAgICAgICgtW1dlYlZpZXcg
X3NldFRleHRJbmRpY2F0b3I6d2l0aExpZmV0aW1lOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlld0RhdGEubW06CisgICAgICAgIChXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6V2ViVmll
d0xheWVyRmx1c2hTY2hlZHVsZXIpOgorICAgICAgICAoLVtXZWJWaWV3UHJpdmF0ZSBpbml0XSk6
CisKIDIwMTktMDgtMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFRpZHkgdXAgY2hlY2tzIHRvIHNlZSBpZiBhIGNoYXJhY3RlciBpcyBpbiB0aGUgTGF0aW4tMSBy
YW5nZSBieSB1c2luZyBpc0xhdGluMSBjb25zaXN0ZW50bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwppbmRleCBhMGIxNzIzZjBkOWE4NWQzMDRlZjFkMTg1OWViMjYyOWQ5Mzk0Njk1Li45ZjI0
YWYyMGQ1MTMwMmVhMTMwYzlkZmE3MGIyMTViMTUzMWYyMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTktMDgtMTggIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hp
Y2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBtYWtlVW5pcXVlIC8gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2sgcGFydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkg
R2FyZW4uCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIp
OgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpsb2FkKToKKyAgICAgICAg
KiBQbHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6d25kUHJvYyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JD
bGllbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoK
KyAgICAgICAgKFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKToK
KyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6
aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6Q0FEM0RS
ZW5kZXJlcjo6Y3JlYXRlRDNEUG9zdFByb2Nlc3NpbmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJO
b3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpX
ZWJOb3RpZmljYXRpb25DZW50ZXIpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViVmlldzo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpyZWdpc3RlckVt
YmVkZGVkVmlld01JTUVUeXBlKToKKyAgICAgICAgKFdlYlZpZXc6OmVudGVyVmlkZW9GdWxsc2Ny
ZWVuRm9yVmlkZW9FbGVtZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTY3JpcHRUb0dy
b3VwKToKKyAgICAgICAgKFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cCk6CisgICAg
ICAgIChXZWJWaWV3OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKwogMjAxOS0wOC0xNSAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtXVEZdIEFkZCBt
YWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEIGFubm90YXRpb24gcGFydApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAppbmRleCAwN2Q3MDliYTEyYzgyYzg1NDgyZDczYzcyMzc3
ZjUxOWU3ZmMyYTVjLi5kMGU2MjUyODJhODRmNGYzNWVlZGVkMTk1ZWRiOGRjODk3YjFhNTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtNTgs
NyArNTgsNyBAQCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGEgewogICAgIHZvaWQgc2V0UHJp
dmF0ZVByb3BlcnR5KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFtX3ByaXZhdGVQ
cm9wZXJ0aWVzKQotICAgICAgICAgICAgbV9wcml2YXRlUHJvcGVydGllcyA9IHN0ZDo6bWFrZV91
bmlxdWU8SlNQcml2YXRlUHJvcGVydHlNYXA+KCk7CisgICAgICAgICAgICBtX3ByaXZhdGVQcm9w
ZXJ0aWVzID0gbWFrZVVuaXF1ZTxKU1ByaXZhdGVQcm9wZXJ0eU1hcD4oKTsKICAgICAgICAgbV9w
cml2YXRlUHJvcGVydGllcy0+c2V0UHJpdmF0ZVByb3BlcnR5KHZtLCBvd25lciwgcHJvcGVydHlO
YW1lLCB2YWx1ZSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAppbmRleCBhZTNhNmZlM2FjZjljNmE4
MDM5NGUxZDczNGZhMzE3ZDkwOGZhZTJjLi45Y2EzYjRiZjQwODUwNzUwYjhiYzQxOTQ5Zjc1MDQy
YjM1NzIzMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+KiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmFzQ2FsbGJhY2tPYmpl
Y3QoRW5jbwogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6SlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIHZvaWQqIGRhdGEpCiAgICAgOiBQYXJlbnQoZXhlYy0+dm0o
KSwgc3RydWN0dXJlKQotICAgICwgbV9jYWxsYmFja09iamVjdERhdGEoc3RkOjptYWtlX3VuaXF1
ZTxKU0NhbGxiYWNrT2JqZWN0RGF0YT4oZGF0YSwganNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNr
T2JqZWN0RGF0YShtYWtlVW5pcXVlPEpTQ2FsbGJhY2tPYmplY3REYXRhPihkYXRhLCBqc0NsYXNz
KSkKIHsKIH0KIApAQCAtNjcsNyArNjcsNyBAQCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OkpT
Q2FsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZQogdGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFj
a09iamVjdChWTSYgdm0sIEpTQ2xhc3NSZWYganNDbGFzcywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgOiBQYXJlbnQodm0sIHN0cnVjdHVyZSkKLSAgICAsIG1fY2FsbGJhY2tPYmplY3REYXRh
KHN0ZDo6bWFrZV91bmlxdWU8SlNDYWxsYmFja09iamVjdERhdGE+KG51bGxwdHIsIGpzQ2xhc3Mp
KQorICAgICwgbV9jYWxsYmFja09iamVjdERhdGEobWFrZVVuaXF1ZTxKU0NhbGxiYWNrT2JqZWN0
RGF0YT4obnVsbHB0ciwganNDbGFzcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2xhc3NSZWYuY3BwCmluZGV4IGYxYzlkNTcwMmE4YWE2OTA0NGRmYjI5NWI0NzFmY2ZjYmM4
OTBiNmIuLjdlZWMyYTkwYTQ0Zjg2MGJhYTIyNzZiOTZkNDVmMmJkNjg2MTcwODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtNTksMjEgKzU5LDIxIEBAIE9w
YXF1ZUpTQ2xhc3M6Ok9wYXF1ZUpTQ2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmlu
aXRpb24sIE9wYXF1ZUpTQ2xhc3MqCiAgICAgaW5pdGlhbGl6ZVRocmVhZGluZygpOwogCiAgICAg
aWYgKGNvbnN0IEpTU3RhdGljVmFsdWUqIHN0YXRpY1ZhbHVlID0gZGVmaW5pdGlvbi0+c3RhdGlj
VmFsdWVzKSB7Ci0gICAgICAgIG1fc3RhdGljVmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFx
dWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CisgICAgICAgIG1fc3RhdGljVmFsdWVzID0g
bWFrZVVuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljVmFsdWVzVGFibGU+KCk7CiAgICAgICAgIHdo
aWxlIChzdGF0aWNWYWx1ZS0+bmFtZSkgewogICAgICAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9
IFN0cmluZzo6ZnJvbVVURjgoc3RhdGljVmFsdWUtPm5hbWUpOwogICAgICAgICAgICAgaWYgKCF2
YWx1ZU5hbWUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1ZXMtPnNldCh2
YWx1ZU5hbWUuaW1wbCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0YXRp
Y1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNWYWx1
ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7CisgICAgICAgICAgICAgICAgbV9zdGF0aWNWYWx1
ZXMtPnNldCh2YWx1ZU5hbWUuaW1wbCgpLCBtYWtlVW5pcXVlPFN0YXRpY1ZhbHVlRW50cnk+KHN0
YXRpY1ZhbHVlLT5nZXRQcm9wZXJ0eSwgc3RhdGljVmFsdWUtPnNldFByb3BlcnR5LCBzdGF0aWNW
YWx1ZS0+YXR0cmlidXRlcywgdmFsdWVOYW1lKSk7CiAgICAgICAgICAgICArK3N0YXRpY1ZhbHVl
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIHN0
YXRpY0Z1bmN0aW9uID0gZGVmaW5pdGlvbi0+c3RhdGljRnVuY3Rpb25zKSB7Ci0gICAgICAgIG1f
c3RhdGljRnVuY3Rpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxPcGFxdWVKU0NsYXNzU3RhdGljRnVu
Y3Rpb25zVGFibGU+KCk7CisgICAgICAgIG1fc3RhdGljRnVuY3Rpb25zID0gbWFrZVVuaXF1ZTxP
cGFxdWVKU0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGU+KCk7CiAgICAgICAgIHdoaWxlIChzdGF0
aWNGdW5jdGlvbi0+bmFtZSkgewogICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSA9IFN0
cmluZzo6ZnJvbVVURjgoc3RhdGljRnVuY3Rpb24tPm5hbWUpOwogICAgICAgICAgICAgaWYgKCFm
dW5jdGlvbk5hbWUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgbV9zdGF0aWNGdW5jdGlvbnMt
PnNldChmdW5jdGlvbk5hbWUuaW1wbCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY0Z1bmN0aW9u
RW50cnk+KHN0YXRpY0Z1bmN0aW9uLT5jYWxsQXNGdW5jdGlvbiwgc3RhdGljRnVuY3Rpb24tPmF0
dHJpYnV0ZXMpKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRpY0Z1bmN0aW9ucy0+c2V0KGZ1bmN0
aW9uTmFtZS5pbXBsKCksIG1ha2VVbmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oc3RhdGljRnVu
Y3Rpb24tPmNhbGxBc0Z1bmN0aW9uLCBzdGF0aWNGdW5jdGlvbi0+YXR0cmlidXRlcykpOwogICAg
ICAgICAgICAgKytzdGF0aWNGdW5jdGlvbjsKICAgICAgICAgfQogICAgIH0KQEAgLTEyOCwyMSAr
MTI4LDIxIEBAIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YTo6T3BhcXVlSlNDbGFzc0NvbnRleHRE
YXRhKEpTQzo6Vk0mLCBPcGFxdWVKU0NsYXNzKiBqc0NsCiAgICAgOiBtX2NsYXNzKGpzQ2xhc3Mp
CiB7CiAgICAgaWYgKGpzQ2xhc3MtPm1fc3RhdGljVmFsdWVzKSB7Ci0gICAgICAgIHN0YXRpY1Zh
bHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlPigp
OworICAgICAgICBzdGF0aWNWYWx1ZXMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNW
YWx1ZXNUYWJsZT4oKTsKICAgICAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBqc0NsYXNzLT5tX3N0YXRpY1ZhbHVlcy0+ZW5kKCk7CiAgICAg
ICAgIGZvciAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxlOjpjb25zdF9pdGVyYXRvciBp
dCA9IGpzQ2xhc3MtPm1fc3RhdGljVmFsdWVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwogICAgICAgICAgICAgU3Ry
aW5nIHZhbHVlTmFtZSA9IGl0LT5rZXktPmlzb2xhdGVkQ29weSgpOwotICAgICAgICAgICAgc3Rh
dGljVmFsdWVzLT5hZGQodmFsdWVOYW1lLmltcGwoKSwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNW
YWx1ZUVudHJ5PihpdC0+dmFsdWUtPmdldFByb3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5
LCBpdC0+dmFsdWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOworICAgICAgICAgICAgc3RhdGlj
VmFsdWVzLT5hZGQodmFsdWVOYW1lLmltcGwoKSwgbWFrZVVuaXF1ZTxTdGF0aWNWYWx1ZUVudHJ5
PihpdC0+dmFsdWUtPmdldFByb3BlcnR5LCBpdC0+dmFsdWUtPnNldFByb3BlcnR5LCBpdC0+dmFs
dWUtPmF0dHJpYnV0ZXMsIHZhbHVlTmFtZSkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYg
KGpzQ2xhc3MtPm1fc3RhdGljRnVuY3Rpb25zKSB7Ci0gICAgICAgIHN0YXRpY0Z1bmN0aW9ucyA9
IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlPigpOwor
ICAgICAgICBzdGF0aWNGdW5jdGlvbnMgPSBtYWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NTdGF0aWNG
dW5jdGlvbnNUYWJsZT4oKTsKICAgICAgICAgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1Rh
YmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBqc0NsYXNzLT5tX3N0YXRpY0Z1bmN0aW9ucy0+ZW5k
KCk7CiAgICAgICAgIGZvciAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlOjpjb25z
dF9pdGVyYXRvciBpdCA9IGpzQ2xhc3MtPm1fc3RhdGljRnVuY3Rpb25zLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPmtleS0+aXNBdG9tKCkpOwot
ICAgICAgICAgICAgc3RhdGljRnVuY3Rpb25zLT5hZGQoaXQtPmtleS0+aXNvbGF0ZWRDb3B5KCks
IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljRnVuY3Rpb25FbnRyeT4oaXQtPnZhbHVlLT5jYWxsQXNG
dW5jdGlvbiwgaXQtPnZhbHVlLT5hdHRyaWJ1dGVzKSk7CisgICAgICAgICAgICBzdGF0aWNGdW5j
dGlvbnMtPmFkZChpdC0+a2V5LT5pc29sYXRlZENvcHkoKSwgbWFrZVVuaXF1ZTxTdGF0aWNGdW5j
dGlvbkVudHJ5PihpdC0+dmFsdWUtPmNhbGxBc0Z1bmN0aW9uLCBpdC0+dmFsdWUtPmF0dHJpYnV0
ZXMpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCBPcGFxdWVKU0Ns
YXNzQ29udGV4dERhdGEmIE9wYXF1ZUpTQ2xhc3M6OmNvbnRleHREYXRhKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhPiYgY29u
dGV4dERhdGEgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9wYXF1ZUpTQ2xhc3NEYXRh
KCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNvbnRleHRE
YXRhKQotICAgICAgICBjb250ZXh0RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8T3BhcXVlSlNDbGFz
c0NvbnRleHREYXRhPihleGVjLT52bSgpLCB0aGlzKTsKKyAgICAgICAgY29udGV4dERhdGEgPSBt
YWtlVW5pcXVlPE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YT4oZXhlYy0+dm0oKSwgdGhpcyk7CiAg
ICAgcmV0dXJuICpjb250ZXh0RGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmNwcAppbmRleCBkOWVlNjc0
MDM0OWNmZWZkZmJjYzBkMzEwOTRmMWY0ZGU1YTUyYzFlLi5iYTRhNWExNjY5N2FmNWY4YTk3MjJl
NTc0NjllMzk0ZDk3OTA0MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIEpTQ29udGV4dEdyb3VwQWRkTWFya2luZ0NvbnN0cmFpbnQoSlNDb250ZXh0R3JvdXBSZWYg
Z3JvdXAsIEpTTWFya2luZ0NvbnN0cgogICAgIC8vIGVsc2UgZ2V0cyBtYXJrZWQuCiAgICAgQ29u
c3RyYWludFZvbGF0aWxpdHkgdm9sYXRpbGl0eSA9IENvbnN0cmFpbnRWb2xhdGlsaXR5OjpHcmV5
ZWRCeU1hcmtpbmc7CiAgICAgCi0gICAgYXV0byBjb25zdHJhaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oCisgICAgYXV0byBjb25zdHJhaW50ID0gbWFrZVVu
aXF1ZTxTaW1wbGVNYXJraW5nQ29uc3RyYWludD4oCiAgICAgICAgIHRvQ1N0cmluZygiQW1jIiwg
Y29uc3RyYWludEluZGV4LCAiKCIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjb25z
dHJhaW50Q2FsbGJhY2spKSwgIikiKSwKICAgICAgICAgdG9DU3RyaW5nKCJBUEkgTWFya2luZyBD
b25zdHJhaW50ICMiLCBjb25zdHJhaW50SW5kZXgsICIgKCIsIFJhd1BvaW50ZXIoYml0d2lzZV9j
YXN0PHZvaWQqPihjb25zdHJhaW50Q2FsbGJhY2spKSwgIiwgIiwgUmF3UG9pbnRlcih1c2VyRGF0
YSksICIpIiksCiAgICAgICAgIFtjb25zdHJhaW50Q2FsbGJhY2ssIHVzZXJEYXRhXQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQppbmRleCBkNDY5Yjc1YTMxZjBlZmNh
OWQwN2FiYjAzYjBiZTY2MTYxYjM5NTY3Li40YjU5OTA3M2ZlNzZiNDg2NDQzNjk5YWJkY2IzNGM0
MTY0YmMyZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpA
QCAtNjA2LDcgKzYwNiw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEdsb2JhbENvbnRleHRS
ZWY6KEpTR2xvYmFsQ29udGV4dFJlZiljb250ZXh0CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0
aW9ucyB2YWx1ZU9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2lu
dGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CiAgICAgbV9jYWNoZWRPYmpDV3JhcHBlcnMg
PSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVl
T3B0aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNpdHk6MF07CiAKLSAgICBtX2NhY2hlZEpTV3JhcHBl
cnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQg
aWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNvbnRleHQpLT52bSgpKTsKKyAgICBtX2NhY2hlZEpT
V3JhcHBlcnMgPSBtYWtlVW5pcXVlPEpTQzo6V2Vha0dDTWFwPF9fdW5zYWZlX3VucmV0YWluZWQg
aWQsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGNvbnRleHQpLT52bSgpKTsKIAogICAgIEFTU0VSVCgh
dG9KU0dsb2JhbE9iamVjdChjb250ZXh0KS0+d3JhcHBlck1hcCgpKTsKICAgICB0b0pTR2xvYmFs
T2JqZWN0KGNvbnRleHQpLT5zZXRXcmFwcGVyTWFwKHNlbGYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KaW5kZXggZWU5MzI4MjFlZjc0
YmQ2ODkxYWU4ZjI5ZmFkN2JiYTVhZmVhMGNiYy4uNzNjYjQyNzA0MzgxODMxZTgxOWQ5ZDk0M2Vi
OWU1NDQwMzA5NmY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpD
Q2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakND
YWxsYmFja0Z1bmN0aW9uLm1tCkBAIC0xOTUsMTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdlcigpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SW50
ZWdlcjxUPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1bWVudElu
dGVnZXI8VD4+KCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0
aWMgUmVzdWx0VHlwZSB0eXBlRG91YmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPENhbGxiYWNrQXJndW1lbnREb3VibGU8VD4+KCk7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnREb3VibGU8VD4+KCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEJvb2xlYW4+KCk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPENhbGxiYWNrQXJndW1lbnRCb29sZWFuPigpOwogICAgIH0KIAogICAgIHN0YXRpYyBS
ZXN1bHRUeXBlIHR5cGVWb2lkKCkKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgUmVzdWx0VHlwZSB0eXBlSWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudElkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxDYWxsYmFja0FyZ3VtZW50SWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUg
dHlwZU9mQ2xhc3MoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkKQEAgLTIyOCwx
OSArMjI4LDE5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
ICAgIGlmIChjbHMgPT0gW0pTVmFsdWUgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudEpTVmFsdWU+KCk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxDYWxsYmFja0FyZ3VtZW50SlNWYWx1ZT4oKTsKICAgICAgICAgaWYgKGNs
cyA9PSBbTlNTdHJpbmcgY2xhc3NdKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbGJhY2tBcmd1bWVudE5TU3RyaW5nPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TU3RyaW5nPigpOwogICAgICAgICBpZiAoY2xzID09IFtO
U051bWJlciBjbGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxs
YmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxD
YWxsYmFja0FyZ3VtZW50TlNOdW1iZXI+KCk7CiAgICAgICAgIGlmIChjbHMgPT0gW05TRGF0ZSBj
bGFzc10pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3Vt
ZW50TlNEYXRlPigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tBcmd1
bWVudE5TRGF0ZT4oKTsKICAgICAgICAgaWYgKGNscyA9PSBbTlNBcnJheSBjbGFzc10pCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja0FyZ3VtZW50TlNBcnJheT4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0FycmF5
PigpOwogICAgICAgICBpZiAoY2xzID09IFtOU0RpY3Rpb25hcnkgY2xhc3NdKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1bWVudE5TRGljdGlvbmFyeT4o
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJndW1lbnROU0RpY3Rp
b25hcnk+KCk7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tBcmd1
bWVudE9mQ2xhc3M+KGNscyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrQXJn
dW1lbnRPZkNsYXNzPihjbHMpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZXN1bHRUeXBlIHR5cGVC
bG9jayhjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCkBAIC0yNTIsNyArMjUyLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgU3RyaW5nUmFuZ2UgY29weShiZWdpbiwgZW5kKTsKICAgICAgICAg
aWYgKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IHZhbHVlVG9UeXBlSW52b2NhdGlvbkZvcihj
b3B5KSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrQXJndW1l
bnRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8Q2FsbGJhY2tBcmd1bWVudFN0cnVjdD4oaW52b2NhdGlvbiwgY29weSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIH07CkBAIC0zMzUsNDUgKzMzNSw0NSBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlSW50ZWdl
cigpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsYmFja1Jlc3Vs
dE51bWVyaWM8VD4+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0
TnVtZXJpYzxUPj4oKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0
YXRpYyBSZXN1bHRUeXBlIHR5cGVEb3VibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHROdW1lcmljPFQ+PigpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxDYWxsYmFja1Jlc3VsdE51bWVyaWM8VD4+KCk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlc3VsdFR5cGUgdHlwZUJvb2woKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRCb29sZWFuPigpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxDYWxsYmFja1Jlc3VsdEJvb2xlYW4+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3Vs
dFR5cGUgdHlwZVZvaWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Q2FsbGJhY2tSZXN1bHRWb2lkPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxsYmFj
a1Jlc3VsdFZvaWQ+KCk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZUlkKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhbGxiYWNrUmVzdWx0SWQ+KCk7CiAgICAg
fQogCiAgICAgc3RhdGljIFJlc3VsdFR5cGUgdHlwZU9mQ2xhc3MoY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tS
ZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRJZD4o
KTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlQmxvY2soY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bGJhY2tSZXN1bHRJZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1
bHRJZD4oKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVzdWx0VHlwZSB0eXBlU3RydWN0KGNvbnN0
IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpCiAgICAgewogICAgICAgICBTdHJpbmdSYW5n
ZSBjb3B5KGJlZ2luLCBlbmQpOwogICAgICAgICBpZiAoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9u
ID0gdHlwZVRvVmFsdWVJbnZvY2F0aW9uRm9yKGNvcHkpKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9jYXRpb24sIGNvcHkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbGJhY2tSZXN1bHRTdHJ1Y3Q+KGludm9j
YXRpb24sIGNvcHkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9OwpAQCAtNjYy
LDcgKzY2Miw3IEBAIHN0YXRpYyBKU09iamVjdFJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvcklu
dm9jYXRpb24oSlNDb250ZXh0ICpjb250ZXh0LCBOU0ludm9jCiAgICAgSlNDOjpFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwogICAgIEpTQzo6Vk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwotICAg
IGF1dG8gaW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbklt
cGw+KGludm9jYXRpb24sIHR5cGUsIGluc3RhbmNlQ2xhc3MsIFdURk1vdmUoYXJndW1lbnRzKSwg
V1RGTW92ZShyZXN1bHQpKTsKKyAgICBhdXRvIGltcGwgPSBtYWtlVW5pcXVlPEpTQzo6T2JqQ0Nh
bGxiYWNrRnVuY3Rpb25JbXBsPihpbnZvY2F0aW9uLCB0eXBlLCBpbnN0YW5jZUNsYXNzLCBXVEZN
b3ZlKGFyZ3VtZW50cyksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgY29uc3QgU3RyaW5nJiBuYW1l
ID0gaW1wbC0+bmFtZSgpOwogICAgIHJldHVybiB0b1JlZihKU0M6Ok9iakNDYWxsYmFja0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbmFtZSwgV1RGTW92
ZShpbXBsKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRl
eHQuY3BwCmluZGV4IGUwMWU5NzBjN2Y1ODAzNjU2MThlZjFkYWI4NTU0NGQ3MDRmOWI0N2EuLjc4
ZDc2NTVmZjgwNzc2MGQ0NjA4YTYxN2U1N2M5MGYxNTQyNzk5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBz
dGF0aWMgdm9pZCBqc2NDb250ZXh0U2V0VmlydHVhbE1hY2hpbmUoSlNDQ29udGV4dCogY29udGV4
dCwgR1JlZlB0cjxKU0NWaXJ0dWFsTQogICAgICAgICAgICAgcHJpdi0+anNDb250ZXh0ID0gSlNS
ZXRhaW5QdHI8SlNHbG9iYWxDb250ZXh0UmVmPihBZG9wdCwgSlNHbG9iYWxDb250ZXh0Q3JlYXRl
SW5Hcm91cChqc2NWaXJ0dWFsTWFjaGluZUdldENvbnRleHRHcm91cChwcml2LT52bS5nZXQoKSks
IG51bGxwdHIpKTsKICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KU0dsb2JhbE9iamVj
dChwcml2LT5qc0NvbnRleHQuZ2V0KCkpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+d3Jh
cHBlck1hcCgpKQotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRXcmFwcGVyTWFwKHN0ZDo6
bWFrZV91bmlxdWU8SlNDOjpXcmFwcGVyTWFwPihwcml2LT5qc0NvbnRleHQuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0V3JhcHBlck1hcChtYWtlVW5pcXVlPEpTQzo6V3Jh
cHBlck1hcD4ocHJpdi0+anNDb250ZXh0LmdldCgpKSk7CiAgICAgICAgIGpzY1ZpcnR1YWxNYWNo
aW5lQWRkQ29udGV4dChwcml2LT52bS5nZXQoKSwgY29udGV4dCk7CiAgICAgfSBlbHNlIGlmIChw
cml2LT52bSkgewogICAgICAgICBBU1NFUlQocHJpdi0+anNDb250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NXcmFwcGVyTWFwLmNwcAppbmRleCAxMWJiN2Mw
Yjg3MzdkYjY3ZGQxN2RjZDI0ZjcwMjk0MzQ0NjlhODAzLi5mNTIzZWE0MTk5ZjhhYmQ3MzJmNzdi
NjI4MTQxMjAxMzRiYjhiZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDV3JhcHBlck1hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9n
bGliL0pTQ1dyYXBwZXJNYXAuY3BwCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogV3JhcHBlck1hcDo6V3JhcHBlck1hcChKU0dsb2JhbENvbnRleHRSZWYganNDb250ZXh0KQot
ICAgIDogbV9jYWNoZWRKU1dyYXBwZXJzKHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpXZWFrR0NNYXA8
Z3BvaW50ZXIsIEpTQzo6SlNPYmplY3Q+Pih0b0pTKGpzQ29udGV4dCktPnZtKCkpKQorICAgIDog
bV9jYWNoZWRKU1dyYXBwZXJzKG1ha2VVbmlxdWU8SlNDOjpXZWFrR0NNYXA8Z3BvaW50ZXIsIEpT
Qzo6SlNPYmplY3Q+Pih0b0pTKGpzQ29udGV4dCktPnZtKCkpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNwcAppbmRleCBhNzVmNThkYzE0
NmIzYjY0OTVjZWIxNjdhZGY0ZGFiZmYwNmIwYzg5Li5kYTQ3NzA1MWYzNDVlMDcxNjhmYzdkMDZl
MGM3ZjUyNjMxMTg2ZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
UHJvYmVTdGFjay5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBQYWdlKiBTdGFjazo6ZW5zdXJlUGFn
ZUZvcih2b2lkKiBhZGRyZXNzKQogICAgIGlmIChMSUtFTFkoaXQgIT0gbV9wYWdlcy5lbmQoKSkp
CiAgICAgICAgIG1fbGFzdEFjY2Vzc2VkUGFnZSA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICBlbHNl
IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2U+KGJhc2VBZGRyZXNzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IHBhZ2Ug
PSBtYWtlVW5pcXVlPFBhZ2U+KGJhc2VBZGRyZXNzKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBt
X3BhZ2VzLmFkZChiYXNlQWRkcmVzcywgV1RGTW92ZShwYWdlKSk7CiAgICAgICAgIG1fbGFzdEFj
Y2Vzc2VkUGFnZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCBkYmFhNGM5OTBhZDQ4ZjAz
ZjRhNzUxYzllNDBmOWY2YTZmZjA0ODM5Li4zY2M3NWMzNGE1MTNmMmY2ZmI0OTYyMWFmYTg4N2Fi
YmUyNTk0MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApA
QCAtMTI0MSw3ICsxMjQxLDcgQEAgY2xhc3MgTG93ZXJUb0FpciB7CiAgICAgdm9pZCBwcmludChW
YWx1ZSogb3JpZ2luLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBh
dXRvIHByaW50TGlzdCA9IFByaW50ZXI6Om1ha2VQcmludFJlY29yZExpc3QoYXJndW1lbnRzLi4u
KTsKLSAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2FzdDxBaXI6OlByaW50U3Bl
Y2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QWlyOjpQcmludFNwZWNp
YWw+KHByaW50TGlzdCkpKTsKKyAgICAgICAgYXV0byBwcmludFNwZWNpYWwgPSBzdGF0aWNfY2Fz
dDxBaXI6OlByaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QWlyOjpQ
cmludFNwZWNpYWw+KHByaW50TGlzdCkpKTsKICAgICAgICAgSW5zdCBpbnN0KEFpcjo6UGF0Y2gs
IG9yaWdpbiwgQXJnOjpzcGVjaWFsKHByaW50U3BlY2lhbCkpOwogICAgICAgICBQcmludGVyOjph
cHBlbmRBaXJBcmdzKGluc3QsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4p
OwogICAgICAgICBhcHBlbmQoV1RGTW92ZShpbnN0KSk7CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCBj
bGFzcyBMb3dlclRvQWlyIHsKICAgICB7CiAgICAgICAgIGlmICghZmllbGQpIHsKICAgICAgICAg
ICAgIGZpZWxkID0gc3RhdGljX2Nhc3Q8VCo+KAotICAgICAgICAgICAgICAgIG1fY29kZS5hZGRT
cGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLikpKTsKKyAgICAgICAgICAgICAgICBtX2NvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVl
PFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKSk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuY3BwCmluZGV4IGZmY2IyZDRlMjcxNDQyOTcwZTU0NjQzNjY3MGY3ZjI5ZGViMWFi
MWMuLjJlY2NkYWMwNDllNjhkMTEzZTIzZjk3ZjI0MzUzYTVkNGFhYTNiOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIFByb2NlZHVyZTo6UHJvY2VkdXJlKCkKICAgICA6IG1f
Y2ZnKG5ldyBDRkcoKnRoaXMpKQogICAgICwgbV9sYXN0UGhhc2VOYW1lKCJpbml0aWFsIikKLSAg
ICAsIG1fYnlwcm9kdWN0cyhzdGQ6Om1ha2VfdW5pcXVlPE9wYXF1ZUJ5cHJvZHVjdHM+KCkpCisg
ICAgLCBtX2J5cHJvZHVjdHMobWFrZVVuaXF1ZTxPcGFxdWVCeXByb2R1Y3RzPigpKQogICAgICwg
bV9jb2RlKG5ldyBBaXI6OkNvZGUoKnRoaXMpKQogewogICAgIG1fY29kZS0+c2V0TnVtRW50cnlw
b2ludHMobV9udW1FbnRyeXBvaW50cyk7CkBAIC0zMTEsMjggKzMxMSwyOCBAQCB2b2lkIFByb2Nl
ZHVyZTo6ZGVsZXRlT3JwaGFucygpCiBEb21pbmF0b3JzJiBQcm9jZWR1cmU6OmRvbWluYXRvcnMo
KQogewogICAgIGlmICghbV9kb21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPERvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9kb21pbmF0b3JzID0g
bWFrZVVuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2RvbWluYXRvcnM7
CiB9CiAKIE5hdHVyYWxMb29wcyYgUHJvY2VkdXJlOjpuYXR1cmFsTG9vcHMoKQogewogICAgIGlm
ICghbV9uYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3Vu
aXF1ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBtYWtl
VW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7
CiB9CiAKIEJhY2t3YXJkc0NGRyYgUHJvY2VkdXJlOjpiYWNrd2FyZHNDRkcoKQogewogICAgIGlm
ICghbV9iYWNrd2FyZHNDRkcpCi0gICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3Vu
aXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKKyAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBtYWtl
VW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7
CiB9CiAKIEJhY2t3YXJkc0RvbWluYXRvcnMmIFByb2NlZHVyZTo6YmFja3dhcmRzRG9taW5hdG9y
cygpCiB7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCi0gICAgICAgIG1fYmFja3dh
cmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRo
aXMpOworICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBtYWtlVW5pcXVlPEJhY2t3YXJk
c0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5hdG9yczsK
IH0KIApAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQqIFByb2NlZHVyZTo6YWRkRGF0YVNlY3Rpb24o
c2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxEYXRhU2VjdGlvbj4oc2l6ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFTZWN0
aW9uPiBkYXRhU2VjdGlvbiA9IG1ha2VVbmlxdWU8RGF0YVNlY3Rpb24+KHNpemUpOwogICAgIHZv
aWQqIHJlc3VsdCA9IGRhdGFTZWN0aW9uLT5kYXRhKCk7CiAgICAgbV9ieXByb2R1Y3RzLT5hZGQo
V1RGTW92ZShkYXRhU2VjdGlvbikpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAppbmRleCAzM2Y4YWJmZWZiYzFmOGY5MTY1NDVhM2Jk
Y2ExOTZiMGNjNjZjMzk4Li5kNWQ2OWMzMGE1OTkxNzVmMjgxNDgzNjI4NjM2ZmNiNzcwNjgwMTY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKQEAgLTE3OSw3ICsx
NzksNyBAQCBDQ2FsbFNwZWNpYWwqIENvZGU6OmNDYWxsU3BlY2lhbCgpCiB7CiAgICAgaWYgKCFt
X2NDYWxsU3BlY2lhbCkgewogICAgICAgICBtX2NDYWxsU3BlY2lhbCA9IHN0YXRpY19jYXN0PEND
YWxsU3BlY2lhbCo+KAotICAgICAgICAgICAgYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEND
YWxsU3BlY2lhbD4oKSkpOworICAgICAgICAgICAgYWRkU3BlY2lhbChtYWtlVW5pcXVlPENDYWxs
U3BlY2lhbD4oKSkpOwogICAgIH0KIAogICAgIHJldHVybiBtX2NDYWxsU3BlY2lhbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKaW5kZXggZjM2YjliMmZl
NjY4MTYwYjg4OTliMGM1MGIzMTk3ZDc1ODgyNGY4MC4uOTVjYWEwMDRkOGViMzkyMzMwZTFjY2Ji
NjM5YTVjZWU3OWNiYzc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIHByZXBhcmVGb3JHZW5lcmF0aW9u
KENvZGUmIGNvZGUpCiAgICAgICAgICAgICBkYXRhTG9nKGNvZGUpOwogICAgICAgICB9CiAKLSAg
ICAgICAgY29kZS5tX2dlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM+KGNvZGUpOworICAgICAgICBjb2RlLm1f
Z2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVycyA9IG1ha2VVbmlxdWU8R2VuZXJhdGVBbmRBbGxv
Y2F0ZVJlZ2lzdGVycz4oY29kZSk7CiAgICAgICAgIGNvZGUubV9nZW5lcmF0ZUFuZEFsbG9jYXRl
UmVnaXN0ZXJzLT5wcmVwYXJlRm9yR2VuZXJhdGlvbigpOwogCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVzdGFpci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL3Rlc3RhaXIuY3BwCmluZGV4IGVmMTU0NGMwN2JiMzJh
OTAzN2YyY2I3MWUxNWU3NGE5YmU2MWJmOTQuLjNkY2EyOTY3ODhiMDAxMDY4ZTAxZjQyM2UxMTZj
N2MyYTRlN2RhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvdGVz
dGFpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci90ZXN0YWlyLmNwcApA
QCAtOTAsNyArOTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QjM6OkNvbXBpbGF0aW9uPiBjb21waWxl
KEIzOjpQcm9jZWR1cmUmIHByb2MpCiAgICAgZ2VuZXJhdGUocHJvYy5jb2RlKCksIGppdCk7CiAg
ICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgbnVsbHB0cik7CiAKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEIz
OjpDb21waWxhdGlvbj4oCiAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21w
aWxhdGlvblB0clRhZywgInRlc3RhaXIgY29tcGlsYXRpb24iKSwgcHJvYy5yZWxlYXNlQnlwcm9k
dWN0cygpKTsKIH0KIApAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCB0ZXN0SW52YWxpZGF0ZUNh
Y2hlZFRlbXBSZWdpc3RlcnMoKQogICAgIHJvb3QtPmFwcGVuZChNb3ZlLCBudWxscHRyLCBBcmc6
OmJpZ0ltbShiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KCZ0aGluZ3MpKSwgYmFzZSk7CiAKICAgICBC
Mzo6QmFzaWNCbG9jayogcGF0Y2hQb2ludDFSb290ID0gcHJvYy5hZGRCbG9jaygpOwotICAgIEIz
OjpBaXI6OlNwZWNpYWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6
bWFrZV91bmlxdWU8QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVj
aWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQ
YXRjaHBvaW50U3BlY2lhbD4oKSk7CiAKICAgICAvLyBJbiBQYXRjaHBvaW50LCBMb2FkIHRoaW5n
c1swXSAtPiB0bXAuIFRoaXMgd2lsbCBtYXRlcmlhbGl6ZSB0aGUgYWRkcmVzcyBpbiB4MTcgKGRh
dGFNZW1vcnlSZWdpc3RlcikuCiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludDEg
PSBwYXRjaFBvaW50MVJvb3QtPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBC
Mzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAgLTE5MzAsNyArMTkzMCw3IEBAIHZvaWQgdGVzdEFy
Z3VtZW50UmVnUGlubmVkKCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRH
UFIwOwogICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIEIzOjpBaXI6OlNwZWNp
YWwqIHBhdGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8
QjM6OlBhdGNocG9pbnRTcGVjaWFsPigpKTsKKyAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBv
aW50U3BlY2lhbCA9IGNvZGUuYWRkU3BlY2lhbChtYWtlVW5pcXVlPEIzOjpQYXRjaHBvaW50U3Bl
Y2lhbD4oKSk7CiAKICAgICBCMzo6QmFzaWNCbG9jayogYjNSb290ID0gcHJvYy5hZGRCbG9jaygp
OwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBiM1Jvb3QtPmFwcGVuZE5l
dzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgQjM6Ok9yaWdpbigpKTsKQEAg
LTE5NjIsNyArMTk2Miw3IEBAIHZvaWQgdGVzdEFyZ3VtZW50UmVnUGlubmVkMigpCiAgICAgR1BS
UmVnIHBpbm5lZCA9IEdQUkluZm86OmFyZ3VtZW50R1BSMDsKICAgICBwcm9jLnBpblJlZ2lzdGVy
KHBpbm5lZCk7CiAKLSAgICBCMzo6QWlyOjpTcGVjaWFsKiBwYXRjaHBvaW50U3BlY2lhbCA9IGNv
ZGUuYWRkU3BlY2lhbChzdGQ6Om1ha2VfdW5pcXVlPEIzOjpQYXRjaHBvaW50U3BlY2lhbD4oKSk7
CisgICAgQjM6OkFpcjo6U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNp
YWwobWFrZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOwogCiAgICAgQjM6OkJhc2lj
QmxvY2sqIGIzUm9vdCA9IHByb2MuYWRkQmxvY2soKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gYjNSb290LT5hcHBlbmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgQjM6OlZvaWQsIEIzOjpPcmlnaW4oKSk7CkBAIC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIHRl
c3RBcmd1bWVudFJlZ1Bpbm5lZDMoKQogICAgIEdQUlJlZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1
bWVudEdQUjA7CiAgICAgcHJvYy5waW5SZWdpc3RlcihwaW5uZWQpOwogCi0gICAgQjM6OkFpcjo6
U3BlY2lhbCogcGF0Y2hwb2ludFNwZWNpYWwgPSBjb2RlLmFkZFNwZWNpYWwoc3RkOjptYWtlX3Vu
aXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpOworICAgIEIzOjpBaXI6OlNwZWNpYWwqIHBh
dGNocG9pbnRTcGVjaWFsID0gY29kZS5hZGRTcGVjaWFsKG1ha2VVbmlxdWU8QjM6OlBhdGNocG9p
bnRTcGVjaWFsPigpKTsKIAogICAgIEIzOjpCYXNpY0Jsb2NrKiBiM1Jvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGIzUm9vdC0+YXBw
ZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBCMzo6T3JpZ2luKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCmluZGV4IGNlNTM4YWI0ODIzY2FiYjEyMzQwNzVj
YzhmY2Q3ODAxNTI4YTBhMjcuLjFjMDcwZDE3OWVkMzliZjZkZGYwMWUzYmIzM2NiNjQ5YzNmYjcz
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmgKQEAgLTE4OSw3ICsxODksNyBAQCBleHRl
cm4gTG9jayBjcmFzaExvY2s7CiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBj
b21waWxlUHJvYyhQcm9jZWR1cmUmIHByb2NlZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwgPSBPcHRp
b25zOjpkZWZhdWx0QjNPcHRMZXZlbCgpKQogewogICAgIHByb2NlZHVyZS5zZXRPcHRMZXZlbChv
cHRMZXZlbCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KEIzOjpj
b21waWxlKHByb2NlZHVyZSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPihC
Mzo6Y29tcGlsZShwcm9jZWR1cmUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FjY2Vzc0Nhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuY3BwCmluZGV4IGMxMDg1OWFjZWQzZGI3OGI2NjQ5NzZhMDhiOGU1YjQ4ZDY1MmIyZjMu
Ljc3ZmI2NWRhMGI3YTA2YzdkNjU4YmFiZGI0ZTUxMDhhNzkxN2VlYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKQEAgLTg1Myw3ICs4NTMsNyBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlSW1wbChBY2Nlc3NHZW5lcmF0aW9uU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgc3RhdGUuc2V0U3BpbGxTdGF0ZUZvckpTR2V0dGVyU2V0dGVyKHNw
aWxsU3RhdGUpOwogCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghYWNjZXNzLmNhbGxMaW5r
SW5mbygpKTsKLSAgICAgICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbExpbmtJbmZvPigpOworICAgICAgICAgICAgYWNjZXNzLm1fY2FsbExpbmtJbmZv
ID0gbWFrZVVuaXF1ZTxDYWxsTGlua0luZm8+KCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBJ
ZiB3ZSBnZW5lcmF0ZWQgYSBwb2x5bW9ycGhpYyBjYWxsIHN0dWIgdGhhdCBqdW1wZWQgYmFjayB0
byB0aGUgZ2V0dGVyCiAgICAgICAgICAgICAvLyBzdHViLCB3aGljaCB0aGVuIGp1bXBlZCBiYWNr
IHRvIHRoZSBtYWluIGNvZGUsIHRoZW4gd2UnZCBoYXZlIGEgcmVhY2hhYmlsaXR5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJh
bXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2VTbmlwcGV0
UGFyYW1zLmNwcAppbmRleCAyYmQ5ZmU2NTE5OWQwN2YxNzNlMzgzMGRjNzRlNDY3ZWI5ZDU0MWZj
Li45MjU3ZmMyMjY2NTI5Zjg2MTM3ZDVkYWQ4YzkyNDk3MTgzOTA0NzQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlU25pcHBldFBh
cmFtcy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBTbG93UGF0aENhbGxHZW5lcmF0b3JX
aXRoQXJndW1lbnRzIDogcHVibGljIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zOjpTbG93UAogICAg
IHZvaWQgQWNjZXNzQ2FzZVNuaXBwZXRQYXJhbXM6OmFkZFNsb3dQYXRoQ2FsbEltcGwoQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCBmcm9tLCBDQ2FsbEhlbHBlcnMmIGppdCwgT3BlcmF0aW9uVHlwZSBv
cGVyYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0LCBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPiBhcmdz
KSBcCiAgICAgeyBcCiAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgdG8gPSBqaXQubGFiZWwo
KTsgXAotICAgICAgICBtX2dlbmVyYXRvcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2xvd1Bh
dGhDYWxsR2VuZXJhdG9yV2l0aEFyZ3VtZW50czxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0LCBPcGVy
YXRpb25UeXBlLCBSZXN1bHRUeXBlLCBfX1ZBX0FSR1NfXz4+KGZyb20sIHRvLCBvcGVyYXRpb24s
IHJlc3VsdCwgYXJncykpOyBcCisgICAgICAgIG1fZ2VuZXJhdG9ycy5hcHBlbmQobWFrZVVuaXF1
ZTxTbG93UGF0aENhbGxHZW5lcmF0b3JXaXRoQXJndW1lbnRzPENDYWxsSGVscGVyczo6SnVtcExp
c3QsIE9wZXJhdGlvblR5cGUsIFJlc3VsdFR5cGUsIF9fVkFfQVJHU19fPj4oZnJvbSwgdG8sIG9w
ZXJhdGlvbiwgcmVzdWx0LCBhcmdzKSk7IFwKICAgICB9IFwKIAogU05JUFBFVF9TTE9XX1BBVEhf
Q0FMTFMoSlNDX0RFRklORV9DQUxMX09QRVJBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDMzYmIwYzA2
NjM1MzgxZTg5OGY2NWE4NzRmMWYzNmE4Yzk0ODIzYWYuLjEwYzY1YmI5ZGQ3MDlhOWFmN2FiYTZj
ZWI4YTliNzM1OTc3MTY0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC02NSwxNSArNjUsMTUgQEAgdm9pZCBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IElu
c3RydWN0aW9uU3RyZWFtJgogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMg
YmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXpl
KCkgKyAyKTsKIAotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFz
aWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFbnRyeUJsb2NrKTsKLSAgICBhdXRvIGZpcnN0
QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpFbnRyeUJsb2NrKTsKKyAgICBhdXRvIGVudHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29k
ZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayk7CisgICAgYXV0byBm
aXJzdEJsb2NrID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNC
bG9jazo6RW50cnlCbG9jayk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9j
ay5nZXQoKSk7CiAKICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKICAgICBhcHBlbmRCbG9j
ayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsKIAotICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7Cisg
ICAgYXV0byBleGl0ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFz
aWNCbG9jazo6RXhpdEJsb2NrKTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIg
PSBmYWxzZTsKIApAQCAtODQsNyArODQsNyBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29t
cHV0ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mCiAgICAg
ICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50
IGJ5dGVjb2RlIGlzIGEganVtcCB0YXJnZXQsIHRoZW4gaXQncyB0aGUgbGVhZGVyIG9mIGl0cyBv
d24gYmFzaWMgYmxvY2suCiAgICAgICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBU
YXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKLSAg
ICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNC
bG9jaz4oaW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IG1ha2VVbmlx
dWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihpbnN0cnVjdGlvbik7CiAgICAgICAgICAgICBjdXJyZW50
ID0gbmV3QmxvY2suZ2V0KCk7CiAgICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Js
b2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVkQmxvY2sgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAppbmRleCBkOGRhYzE1ODVmYWIy
Yjk5OGMxZTVkODg3NTJiYTEyZGY2ZGFkYmRlLi4zOTNmMTgyNGU0MWE0YmViNTE0YzYyYTY5NmYz
M2E4MzcyNDk1Y2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNp
dFdlYWsoVk0mIHZtKQogCiB2b2lkIENhbGxMaW5rSW5mbzo6c2V0RnJhbWVTaHVmZmxlRGF0YShj
b25zdCBDYWxsRnJhbWVTaHVmZmxlRGF0YSYgc2h1ZmZsZURhdGEpCiB7Ci0gICAgbV9mcmFtZVNo
dWZmbGVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlRGF0YT4oc2h1ZmZs
ZURhdGEpOworICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9IG1ha2VVbmlxdWU8Q2FsbEZyYW1lU2h1
ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGRhYjU5NjllZTAw
ODk0NmMzNTQ2YTIyNzEwNmFhYTZjNTFhNjVkMzAuLmE2YWZhMWY2MWFiYjkzYmY5MWU0NjE1MTRh
MzhhMTlmNzU2YjU1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0xMzU3LDcgKzEzNTcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVM
TEludElubGluZUNhY2hlcygpCiBDb2RlQmxvY2s6OkpJVERhdGEmIENvZGVCbG9jazo6ZW5zdXJl
SklURGF0YVNsb3coY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKIHsKICAgICBBU1NFUlQoIW1f
aml0RGF0YSk7Ci0gICAgbV9qaXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxKSVREYXRhPigpOwor
ICAgIG1faml0RGF0YSA9IG1ha2VVbmlxdWU8SklURGF0YT4oKTsKICAgICByZXR1cm4gKm1faml0
RGF0YTsKIH0KIApAQCAtMTU3MCw3ICsxNTcwLDcgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpyYXJl
Q2FzZVByb2ZpbGVDb3VudEZvckJ5dGVjb2RlT2Zmc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2sK
IHZvaWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFJlZ2lzdGVyU2V0IGNhbGxl
ZVNhdmVSZWdpc3RlcnMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2sp
OwotICAgIGVuc3VyZUpJVERhdGEobG9ja2VyKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PihjYWxsZWVTYXZlUmVnaXN0ZXJzKTsK
KyAgICBlbnN1cmVKSVREYXRhKGxvY2tlcikubV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gbWFrZVVu
aXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oY2FsbGVlU2F2ZVJlZ2lzdGVycyk7CiB9CiAKIHZv
aWQgQ29kZUJsb2NrOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKHN0ZDo6dW5pcXVlX3B0cjxSZWdp
c3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJBdE9mZnNldExpc3QpCkBAIC0xODEwLDcgKzE4MTAs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZW5zdXJlQ2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRl
Y29kZU9mZnNldFNsb3coY29uc3QgT3BDYXRjaAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
UGFyYW1ldGVycygpOyArK2kpCiAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoaSkpOwogCi0gICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7
CisgICAgYXV0byBwcm9maWxlcyA9IG1ha2VVbmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcHJvZmlsZXMtPm1fc2l6ZTsgKytpKQogICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIu
Z2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDg3MDY4YmE2NWRkODVjMjNm
YmU0YTQ5MGU5NzRhNzI4MWYyNTYwNGMuLjMxNDM4ZTBhYzUwNjliMjc0OTY5ODg4NmFiMTEyMDA3
NmJjYjczYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTk0Myw3ICs5NDMsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKICAgICAgICAgaWYgKCFt
X3JhcmVEYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIHJhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIGF1dG8gcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJh
cmVEYXRhPigpOwogICAgICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgLy8gbV9jYXRj
aFByb2ZpbGVzIGNhbiBiZSB0b3VjaGVkIGZyb20gY29tcGlsZXIgdGhyZWFkcy4KICAgICAgICAg
ICAgIG1fcmFyZURhdGEgPSBXVEZNb3ZlKHJhcmVEYXRhKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKaW5kZXggMmQ5
NDMxY2YwYjE0NGZhM2EyYzIyMWE2NmU5NDA3MGM3NzUwZTBlMC4uYjFhMDFmZmE0ZDkzNDhmZWNi
MjRjOTY4OGJjODAwNTJmOTM4ODZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgRXhpdFBy
b2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRl
KQogICAgIC8vIElmIHdlJ3ZlIG5ldmVyIHNlZW4gYW55IGZyZXF1ZW50IGV4aXRzIHRoZW4gY3Jl
YXRlIHRoZSBsaXN0IGFuZCBwdXQgdGhpcyBzaXRlCiAgICAgLy8gaW50byBpdC4KICAgICBpZiAo
IXByb2ZpbGUubV9mcmVxdWVudEV4aXRTaXRlcykgewotICAgICAgICBwcm9maWxlLm1fZnJlcXVl
bnRFeGl0U2l0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRlPj4o
KTsKKyAgICAgICAgcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzID0gbWFrZVVuaXF1ZTxWZWN0
b3I8RnJlcXVlbnRFeGl0U2l0ZT4+KCk7CiAgICAgICAgIHByb2ZpbGUubV9mcmVxdWVudEV4aXRT
aXRlcy0+YXBwZW5kKHNpdGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suY3BwCmluZGV4IDRmNDhhMWQ2Yzk4NzIyZTVhYzJlY2U4N2U1MDQwMjMy
ZjlhNWQ2YjEuLjRmYjExNTczMDAzYjUyZWZkOWE4NjZmYjNiZGY3NzUwOThjZWZhYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgRGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrOjpjb21waWxhdGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayosIENv
ZGVCbG9jayosCiBWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPiYgRGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrOjplbnN1cmVEZWZlcnJlZFNvdXJjZUR1bXAoKQogewogICAgIGlmICghbV9kZWZl
cnJlZFNvdXJjZUR1bXApCi0gICAgICAgIG1fZGVmZXJyZWRTb3VyY2VEdW1wID0gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPj4oKTsKKyAgICAgICAgbV9kZWZlcnJl
ZFNvdXJjZUR1bXAgPSBtYWtlVW5pcXVlPFZlY3RvcjxEZWZlcnJlZFNvdXJjZUR1bXA+PigpOwog
ICAgIHJldHVybiAqbV9kZWZlcnJlZFNvdXJjZUR1bXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAppbmRleCBkYjlhZDE2MGFjMjgx
MzBmMzk4NDFmZjNiZmViMzJiNjgzZGRlYWQ2Li5kZjRkNzdjZTNmNjNiNTIwMDc1NTQ0YzQxYTE2
Y2IyMzFkN2RmYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGNhc2UgQWNjZXNzQ2FzZTo6R2V0dGVyOiB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5r
U3RhdHVzID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2FsbExpbmtTdGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3RhdHVzPigpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBhY2Nl
c3MuYXM8R2V0dGVyU2V0dGVyQWNjZXNzQ2FzZT4oKS5jYWxsTGlua0luZm8oKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgKmNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2Nr
LCAqY2FsbExpbmtJbmZvLCBjYWxsRXhpdFNpdGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCmluZGV4IGZjMWY0NjBkZTk2NTQx
ZDhmYTA5OWNiYjQ1ZjIzMDljMmEzMzM4MGYuLmVkOGQ0OTNmN2VlNmYxZGEyYjkwOWFkNTdjNjI3
NzE4MTNjMmQ2YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRWYXJpYW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCBHZXRCeUlkVmFyaWFudCYgR2V0QnlJ
ZFZhcmlhbnQ6Om9wZXJhdG9yPShjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgbV9j
dXN0b21BY2Nlc3NvckdldHRlciA9IG90aGVyLm1fY3VzdG9tQWNjZXNzb3JHZXR0ZXI7CiAgICAg
bV9kb21BdHRyaWJ1dGUgPSBvdGhlci5tX2RvbUF0dHJpYnV0ZTsKICAgICBpZiAob3RoZXIubV9j
YWxsTGlua1N0YXR1cykKLSAgICAgICAgbV9jYWxsTGlua1N0YXR1cyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxMaW5rU3RhdHVzKTsKKyAgICAgICAgbV9j
YWxsTGlua1N0YXR1cyA9IG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCpvdGhlci5tX2NhbGxM
aW5rU3RhdHVzKTsKICAgICBlbHNlCiAgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBudWxscHRy
OwogICAgIHJldHVybiAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuY3BwCmluZGV4IDA5MjlkNmZiNDEy
Njc0ZWQ3ZjIwNDA0NWZiNDI1ZWI3ZDM4ZDNjOTMuLjZlZWIxNDViMzM3OTY2MmFmMWMxNTAwMTkw
NzY3MjdhMzllZTJiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogQ29tcHJlc3NlZExhenlPcGVyYW5kVmFsdWVQcm9maWxl
SG9sZGVyOjphZGQoCiAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgY29uc3QgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkKIHsKICAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAg
bV9kYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6TGlzdD4o
KTsKKyAgICAgICAgbV9kYXRhID0gbWFrZVVuaXF1ZTxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZTo6
TGlzdD4oKTsKICAgICBlbHNlIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
ZGF0YS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChtX2RhdGEtPmF0KGkpLmtleSgp
ID09IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
UHJvdG9BY2Nlc3NDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQ
cm90b0FjY2Vzc0NoYWluLmgKaW5kZXggYjQ5ZTRlMjQyZTUyZjA4MTMxNWU0OGZiMWUxYmNjMjk3
ZTUyOGFlMC4uYTFlY2I5NGRkMGQxODY3MDg2MzUyZjUyYjViNThjMzE5M2VlY2ZlYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWlu
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0No
YWluLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgUG9seVByb3RvQWNjZXNzQ2hhaW4gewogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBjbG9uZSgpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRo
aXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4oKnRo
aXMpOwogICAgIH0KIAogICAgIGNvbnN0IFZlY3RvcjxTdHJ1Y3R1cmUqPiYgY2hhaW4oKSBjb25z
dCB7IHJldHVybiBtX2NoYWluOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAppbmRleCAyMmY0NTU4MTRiODRhZjRmZTc0Y2Fm
MjM0MDFkMzBhZGFkYWU1YzZlLi4zYjMwMjMzOWYwMzUwZGFjNDI4ZjNmMDRjYzczNTJhM2FlNTIx
YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9y
cGhpY0FjY2Vzcy5jcHAKQEAgLTYxNiw3ICs2MTYsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0
IFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRlKAogICAgIG1fc3R1YlJvdXRpbmUgPSBjcmVh
dGVKSVRTdHViUm91dGluZShjb2RlLCB2bSwgY29kZUJsb2NrLCBkb2VzQ2FsbHMsIGNlbGxzVG9N
YXJrLCBjb2RlQmxvY2tUaGF0T3duc0V4Y2VwdGlvbkhhbmRsZXJzLCBjYWxsU2l0ZUluZGV4Rm9y
RXhjZXB0aW9uSGFuZGxpbmcpOwogICAgIG1fd2F0Y2hwb2ludHMgPSBXVEZNb3ZlKHN0YXRlLndh
dGNocG9pbnRzKTsKICAgICBpZiAoIXN0YXRlLndlYWtSZWZlcmVuY2VzLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV93ZWFrUmVmZXJlbmNlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFdyaXRlQmFy
cmllcjxKU0NlbGw+Pj4oV1RGTW92ZShzdGF0ZS53ZWFrUmVmZXJlbmNlcykpOworICAgICAgICBt
X3dlYWtSZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+
PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7CiAgICAgaWYgKFBvbHltb3JwaGljQWNj
ZXNzSW50ZXJuYWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29k
ZS5jb2RlKCksICJcbiIpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuY3BwCmluZGV4IGMyZDk1MzIwY2ViZDU2ZGJkYzkzZWViZDZjMzE0
MGE3ZGY3Y2MyMDkuLmQ2NDJiY2NmZTc5NzY2YzUyNzliYmM4MTA4NzAxZWI3Zjg1ODI0ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAK
QEAgLTIwMiw3ICsyMDIsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3JTdHViSW5mbygKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBD
b21wbGV4R2V0U3RhdHVzOjpJbmxpbmVhYmxlOiB7CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4gY2FsbExpbmtTdGF0dXMgPQotICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1ha2VVbmlxdWU8Q2FsbExpbmtTdGF0dXM+KCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGFjY2Vzcy5hczxHZXR0
ZXJTZXR0ZXJBY2Nlc3NDYXNlPigpLmNhbGxMaW5rSW5mbygpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAqY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssICpjYWxsTGlu
a0luZm8sIGNhbGxFeGl0U2l0ZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKaW5kZXggNWQ2YjI5MDQ1Y2E2NzVjNTZmYTcxZDU0
NzVhMTE1YjJkZjZmM2M1ZS4uNzJjNmNhYzg0ZmIyN2JjZjVlNDE3YzQ5NmU2MzYyZjcyZTZjMGEy
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJp
YW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFB1dEJ5SWRWYXJpYW50JiBQdXRCeUlkVmFyaWFudDo6
b3BlcmF0b3I9KGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvdGhlcikKICAgICBtX2NvbmRpdGlvblNl
dCA9IG90aGVyLm1fY29uZGl0aW9uU2V0OwogICAgIG1fb2Zmc2V0ID0gb3RoZXIubV9vZmZzZXQ7
CiAgICAgaWYgKG90aGVyLm1fY2FsbExpbmtTdGF0dXMpCi0gICAgICAgIG1fY2FsbExpbmtTdGF0
dXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPigqb3RoZXIubV9jYWxsTGlua1N0
YXR1cyk7CisgICAgICAgIG1fY2FsbExpbmtTdGF0dXMgPSBtYWtlVW5pcXVlPENhbGxMaW5rU3Rh
dHVzPigqb3RoZXIubV9jYWxsTGlua1N0YXR1cyk7CiAgICAgZWxzZQogICAgICAgICBtX2NhbGxM
aW5rU3RhdHVzID0gbnVsbHB0cjsKICAgICByZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKaW5kZXggOTZkMjJl
Y2ZhMGE0Yzc1NmVkZmY2MWYwMDEzZjcyNThlN2QzZmJkNS4uNTNmMjA4YmNhZGVkM2RlYTJkZWUx
OGEwZTg5NjA1YzQ5MGExOTViZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcApAQCAtNDUsNyArNDUsNyBAQCBSZWNvcmRlZFN0
YXR1c2VzOjpSZWNvcmRlZFN0YXR1c2VzKFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKIAogQ2Fs
bExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCiB7Ci0g
ICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0
dXMpOworICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3Rh
dHVzKTsKICAgICBDYWxsTGlua1N0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAg
IGNhbGxzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0
cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTMsNyArNTMsNyBAQCBDYWxsTGlua1N0YXR1
cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbgogCiBHZXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlk
U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMm
IHN0YXR1cykKIHsKLSAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJ
ZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8R2V0QnlJ
ZFN0YXR1cz4oc3RhdHVzKTsKICAgICBHZXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIu
Z2V0KCk7CiAgICAgZ2V0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92
ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYxLDcgKzYxLDcgQEAgR2V0
QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2Rl
T3JpZ2luJiBjb2RlT3JpZ2luLAogICAgIAogUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQ
dXRCeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtl
VW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7CiAgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0
ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVP
cmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC02OSw3
ICs2OSw3IEBAIFB1dEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0
dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwKIAogSW5CeUlkU3RhdHVzKiBSZWNvcmRl
ZFN0YXR1c2VzOjphZGRJbkJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwg
Y29uc3QgSW5CeUlkU3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEluQnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9
IG1ha2VVbmlxdWU8SW5CeUlkU3RhdHVzPihzdGF0dXMpOwogICAgIEluQnlJZFN0YXR1cyogcmVz
dWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGlucy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29k
ZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAppbmRleCAzMGExZjA1NTI1OWUzZGVkMWE3MTY4
ZWUzNTI2ZjcyYzA4NGJlZTVhLi5mY2MyOTExODAyNDRlMGIzMjI5ZTJmZDc2MzAwN2JlNzlhODc0
MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQqIFdhdGNocG9pbnRzT25TdHJ1Y3R1
cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJ
bmZvLCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYga2V5KQogewogICAgIGlmICghaG9s
ZGVyUmVmKQotICAgICAgICBob2xkZXJSZWYgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdGNocG9pbnRz
T25TdHJ1Y3R1cmVTdHViSW5mbz4oY29kZUJsb2NrLCBzdHViSW5mbyk7CisgICAgICAgIGhvbGRl
clJlZiA9IG1ha2VVbmlxdWU8V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvPihjb2RlQmxv
Y2ssIHN0dWJJbmZvKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9j
b2RlQmxvY2sgPT0gY29kZUJsb2NrKTsKICAgICAgICAgQVNTRVJUKGhvbGRlclJlZi0+bV9zdHVi
SW5mbyA9PSBzdHViSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCA3MjIyZDQ4MmFkMWU1ZTI4NmNlZjU5ZDRm
ZjFlMWY1ZWIwNzEwNzhkLi40OTE5NWQxNTcyMWQyY2RhNGY3NDhhZThkYmUyYWYwMDlhMjhhN2Ez
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0IFN0
cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nlc3NDYXNlKAogICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2VzcyA9IHN0ZDo6bWFrZV91bmlxdWU8
UG9seW1vcnBoaWNBY2Nlc3M+KCk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1v
cnBoaWNBY2Nlc3M+IGFjY2VzcyA9IG1ha2VVbmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2Fz
ZT4sIDI+IGFjY2Vzc0Nhc2VzOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCBlMDA2ZDE2Yjli
OGEwZmMzMGYwNDMzY2RlNjAyZWNjM2IxNjhkNDJlLi4yYzlhMGIzMDFlYjA5OGUxMTVlZjFlMzZi
MTI3YmUyOWUzYWJkYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMmIFVubGlua2VkQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyhD
b2RlQmxvY2sqIGNvZAogICAgICAgICBpZiAoIW1fbGl2ZW5lc3MpIHsKICAgICAgICAgICAgIC8v
IFRoZXJlIGlzIGEgY2hhbmNlIHR3byBjb21waWxlciB0aHJlYWRzIHJhY2VkIHRvIHRoZSBzbG93
IHBhdGguCiAgICAgICAgICAgICAvLyBHcmFiYmluZyB0aGUgbG9jayBhYm92ZSBkZWZlbmRzIGFn
YWluc3QgY29tcHV0aW5nIGxpdmVuZXNzIHR3aWNlLgotICAgICAgICAgICAgbV9saXZlbmVzcyA9
IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPihjb2RlQmxvY2spOwor
ICAgICAgICAgICAgbV9saXZlbmVzcyA9IG1ha2VVbmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzPihjb2RlQmxvY2spOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA0MzcwOTUx
OWViNjE2ZTI2NTEwNmVmMWQ1NTI5NjE3ZDY0NWM5YmM5Li41MTI1MzZjMGQ0NDg1N2E0Y2E3NmU4
MTNmZTE0ODAzYTk3M2ZmYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDAyLDcgKzQwMiw3IEBAIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBpZiAoIW1fcmFy
ZURhdGEpIHsKICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gbG9ja0R1cmluZ01hcmtpbmcoKmhl
YXAoKSwgY2VsbExvY2soKSk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJh
cmVEYXRhPigpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApp
bmRleCBmYmVjOWY3MmNhMmZkMWExOGJhY2IwNzNlNjg3MjU0YjcwYjllYmUxLi40OWQ5ZDJmZDNl
NmZlOWZiNGI1MjdmNjc3YWJkNWJkNGE1MTIyNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpk
ZWNvZGVDYWNoZWRDb2RlQmxvY2tzKFZNJiB2bSkKIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
OjpSYXJlRGF0YSYgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xv
dygpCiB7CiAgICAgQVNTRVJUKCFtX3JhcmVEYXRhKTsKLSAgICBtX3JhcmVEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxSYXJl
RGF0YT4oKTsKICAgICByZXR1cm4gKm1fcmFyZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAz
Y2IzM2MzN2VjZmQ2YmZlNzQyOGU1MDExZWQ2YWFjNWQ5YmFmMjE0Li4zNmE2Njk0N2RjMTkwYmRm
YzhhYmRiMzk2YzUwMGU1OGI3YTdlZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC00MDEsNyArNDAxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgYmVmb3JlID0gTW9ub3RvbmljVGlt
ZTo6bm93KCk7CiAKICAgICAgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICAg
ICAgICAgIGF1dG8gYnl0ZWNvZGVHZW5lcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2Rl
R2VuZXJhdG9yPih2bSwgbm9kZSwgdW5saW5rZWRDb2RlQmxvY2ssIGNvZGVHZW5lcmF0aW9uTW9k
ZSwgZW52aXJvbm1lbnQpOworICAgICAgICAgICAgYXV0byBieXRlY29kZUdlbmVyYXRvciA9IG1h
a2VVbmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+KHZtLCBub2RlLCB1bmxpbmtlZENvZGVCbG9jaywg
Y29kZUdlbmVyYXRpb25Nb2RlLCBlbnZpcm9ubWVudCk7CiAgICAgICAgICAgICBhdXRvIHJlc3Vs
dCA9IGJ5dGVjb2RlR2VuZXJhdG9yLT5nZW5lcmF0ZSgpOwogCiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoT3B0aW9uczo6cmVwb3J0Qnl0ZWNvZGVDb21waWxlVGltZXMoKSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAppbmRleCBmMjBhMzU3ZWNiNzNhYTdlZmU0Y2IxMDdkMWNjYjdlOWRjOTAwMzM5Li4y
NzY1NjkyNmE4ZDI5ZDI3ZWJlZWFhOWZmZGNhMjAzY2MyNWZhMGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC01OCw3ICs1OCw3IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpBYnN0cmFjdEludGVycHJldGVyKEdyYXBoJiBncmFwaCwgQWJzdHJhCiAgICAgLCBtX3N0
YXRlKHN0YXRlKQogewogICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgIG1f
cGhpQ2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFBoaUNoaWxkcmVuPihtX2dyYXBoKTsKKyAg
ICAgICAgbV9waGlDaGlsZHJlbiA9IG1ha2VVbmlxdWU8UGhpQ2hpbGRyZW4+KG1fZ3JhcGgpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggNWIwYzg3ZmZlZTUyYjJhOWU1MDExZTViZjhjNzFj
MDEyOTQyZWZkMC4uZTY4M2E4MjFiMjJiY2ZlNTZiMzllZjQxYTExZjFjMmRkYmQ2NjE2YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgR3Jh
cGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwg
bV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaygpKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1f
Y29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1
ZTxTU0FDRkc+KCp0aGlzKSkKKyAgICAsIG1fc3NhQ0ZHKG1ha2VVbmlxdWU8U1NBQ0ZHPigqdGhp
cykpCiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwoMCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShC
ZWZvcmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5v
dFN0YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTg2LDggKzg2LDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2
bSwgUGxhbiYgcGxhbikKICAgICAKICAgICBtX2hhc0RlYnVnZ2VyRW5hYmxlZCA9IG1fcHJvZmls
ZWRCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IE9wdGlvbnM6OmZv
cmNlRGVidWdnZXJCeXRlY29kZUdlbmVyYXRpb24oKTsKICAgICAKLSAgICBtX2luZGV4aW5nQ2Fj
aGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dJbmRleGluZz4oKnRoaXMpOwotICAgIG1fYWJzdHJh
Y3RWYWx1ZXNDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4o
KnRoaXMpOworICAgIG1faW5kZXhpbmdDYWNoZSA9IG1ha2VVbmlxdWU8Rmxvd0luZGV4aW5nPigq
dGhpcyk7CisgICAgbV9hYnN0cmFjdFZhbHVlc0NhY2hlID0gbWFrZVVuaXF1ZTxGbG93TWFwPEFi
c3RyYWN0VmFsdWU+PigqdGhpcyk7CiAKICAgICByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJ1Y3R1
cmVTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIHRoaXMtPnN0cmluZ1N0cnVjdHVyZSA9IHJlZ2lzdGVy
U3RydWN0dXJlKHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CkBAIC0xMDk3LDcgKzEwOTcsNyBA
QCBGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgR3JhcGg6OmxpdmVuZXNzRm9yKENvZGVCbG9jayogY29k
ZUJsb2NrKQogICAgIGlmIChpdGVyICE9IG1fYnl0ZWNvZGVMaXZlbmVzcy5lbmQoKSkKICAgICAg
ICAgcmV0dXJuICppdGVyLT52YWx1ZTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5
dGVjb2RlTGl2ZW5lc3M+IGxpdmVuZXNzID0gc3RkOjptYWtlX3VuaXF1ZTxGdWxsQnl0ZWNvZGVM
aXZlbmVzcz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+IGxp
dmVuZXNzID0gbWFrZVVuaXF1ZTxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4oKTsKICAgICBjb2RlQmxv
Y2stPmxpdmVuZXNzQW5hbHlzaXMoKS5jb21wdXRlRnVsbExpdmVuZXNzKGNvZGVCbG9jaywgKmxp
dmVuZXNzKTsKICAgICBGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0ID0gKmxpdmVuZXNzOwog
ICAgIG1fYnl0ZWNvZGVMaXZlbmVzcy5hZGQoY29kZUJsb2NrLCBXVEZNb3ZlKGxpdmVuZXNzKSk7
CkBAIC0xMTE1LDcgKzExMTUsNyBAQCBCeXRlY29kZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3IoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgaWYgKGl0ZXIgIT0gbV9ieXRlY29kZUtpbGxzLmVuZCgp
KQogICAgICAgICByZXR1cm4gKml0ZXItPnZhbHVlOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUtpbGxzPiBraWxscyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxscz4o
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVLaWxscz4ga2lsbHMgPSBtYWtlVW5pcXVl
PEJ5dGVjb2RlS2lsbHM+KCk7CiAgICAgY29kZUJsb2NrLT5saXZlbmVzc0FuYWx5c2lzKCkuY29t
cHV0ZUtpbGxzKGNvZGVCbG9jaywgKmtpbGxzKTsKICAgICBCeXRlY29kZUtpbGxzJiByZXN1bHQg
PSAqa2lsbHM7CiAgICAgbV9ieXRlY29kZUtpbGxzLmFkZChjb2RlQmxvY2ssIFdURk1vdmUoa2ls
bHMpKTsKQEAgLTE1NTMsNyArMTU1Myw3IEBAIENQU0NGRyYgR3JhcGg6OmVuc3VyZUNQU0NGRygp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVy
c2lvbik7CiAgICAgaWYgKCFtX2Nwc0NGRykKLSAgICAgICAgbV9jcHNDRkcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENQU0NGRz4oKnRoaXMpOworICAgICAgICBtX2Nwc0NGRyA9IG1ha2VVbmlxdWU8Q1BT
Q0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nwc0NGRzsKIH0KIApAQCAtMTU2MSw3ICsxNTYx
LDcgQEAgQ1BTRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOwog
ICAgIGlmICghbV9jcHNEb21pbmF0b3JzKQotICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6
Om1ha2VfdW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNEb21pbmF0
b3JzID0gbWFrZVVuaXF1ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nw
c0RvbWluYXRvcnM7CiB9CiAKQEAgLTE1NjksNyArMTU2OSw3IEBAIFNTQURvbWluYXRvcnMmIEdy
YXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0g
PT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOwogICAgIGlmICghbV9zc2FEb21pbmF0b3Jz
KQotICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRv
cnM+KCp0aGlzKTsKKyAgICAgICAgbV9zc2FEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxTU0FEb21p
bmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAKQEAgLTE1
NzgsNyArMTU3OCw3IEBAIENQU05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxM
b29wcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29u
dmVyc2lvbik7CiAgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOwogICAgIGlmICghbV9jcHNOYXR1
cmFsTG9vcHMpCi0gICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxD
UFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBtYWtl
VW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jcHNOYXR1cmFs
TG9vcHM7CiB9CiAKQEAgLTE1ODcsNyArMTU4Nyw3IEBAIFNTQU5hdHVyYWxMb29wcyYgR3JhcGg6
OmVuc3VyZVNTQU5hdHVyYWxMb29wcygpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNT
QSk7CiAgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgIGlmICghbV9zc2FOYXR1cmFsTG9v
cHMpCi0gICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1
cmFsTG9vcHM+KCp0aGlzKTsKKyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBtYWtlVW5pcXVl
PFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7
CiB9CiAKQEAgLTE1OTYsNyArMTU5Niw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJh
Y2t3YXJkc0NGRygpCiAgICAgLy8gV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1
dHVyZSB0byB3b3JrIG92ZXIgQ1BTLCBidXQgdG9kYXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4K
ICAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJk
c0NGRykKLSAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJk
c0NGRz4oKnRoaXMpOworICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IG1ha2VVbmlxdWU8QmFja3dh
cmRzQ0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKIH0KIApAQCAtMTYw
NCw3ICsxNjA0LDcgQEAgQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJk
c0RvbWluYXRvcnMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAg
IGlmICghbV9iYWNrd2FyZHNEb21pbmF0b3JzKQotICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRv
cnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICAg
ICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbWFrZVVuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3Jz
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9CiAKQEAgLTE2
MTIsNyArMTYxMiw3IEBAIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJl
Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9y
bSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKLSAgICAg
ICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKKyAgICAgICAgbV9jb250cm9sRXF1aXZhbGVu
Y2VBbmFseXNpcyA9IG1ha2VVbmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlz
KTsKICAgICByZXR1cm4gKm1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggNjM5MDQzZTll
MjdmYmUwZTBiOTJhYjQ2YTY2OWJlMTQxMDUwMzM3MC4uZjJiNjY0MDJlM2FkMGU3MmRmY2UwNWI2
NWFmM2ZjOTI2ZDAwOWRhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgSklUQ29tcGlsZXI6OkpJVENvbXBpbGVyKEdy
YXBoJiBkZmcpCiAgICAgLCBtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcihkZmcubV92bSkKIHsK
ICAgICBpZiAoVU5MSUtFTFkoc2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkgfHwgbV9ncmFwaC5tX3Zt
Lm1fcGVyQnl0ZWNvZGVQcm9maWxlcikpCi0gICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxEaXNhc3NlbWJsZXI+KGRmZyk7CisgICAgICAgIG1fZGlzYXNzZW1ibGVyID0g
bWFrZVVuaXF1ZTxEaXNhc3NlbWJsZXI+KGRmZyk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAg
bV9qaXRDb2RlLT50aWVyVXBJbkxvb3BIaWVyYXJjaHkgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFu
LnRpZXJVcEluTG9vcEhpZXJhcmNoeSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIHRpZXJVcEJ5dGVj
b2RlIDogbV9ncmFwaC5tX3BsYW4udGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMoKSkKQEAgLTM0
Myw3ICszNDMsNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIpCiAgICAgfQogCiAgICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyLmRpZEJ1aWxk
TWFwcGluZygpKQotICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAoc3Rk
OjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlciksIGxpbmtCdWZmZXIpKTsKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9D
b2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1Rv
Q29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBsaW5rQnVmZmVyKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGVt
aXRTdGFja092ZXJmbG93Q2hlY2soSklUQ29tcGlsZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0JiBzdGFja092ZXJmbG93KQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGUoKQogCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnko
KTsKLSAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4o
KnRoaXMpOworICAgIG1fc3BlY3VsYXRpdmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigq
dGhpcyk7CiAKICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBh
dmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCiAgICAgSnVtcExpc3Qgc3RhY2tPdmVyZmxvdzsKQEAg
LTQwMiw5ICs0MDIsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBtX3NwZWN1
bGF0aXZlLT5jcmVhdGVPU1JFbnRyaWVzKCk7CiAgICAgc2V0RW5kT2ZDb2RlKCk7CiAKLSAgICBh
dXRvIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2Nv
ZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICBhdXRvIGxpbmtCdWZmZXIgPSBt
YWtlVW5pcXVlPExpbmtCdWZmZXI+KCp0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25D
YW5GYWlsKTsKICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewotICAg
ICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIoc3RkOjptYWtlX3VuaXF1ZTxGYWlsZWRG
aW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CisgICAgICAgIG1fZ3JhcGgubV9wbGFuLnNldEZp
bmFsaXplcihtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4obV9ncmFwaC5tX3BsYW4pKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlKCkKIAogICAgIGRpc2Fzc2VtYmxlKCpsaW5rQnVmZmVyKTsKIAotICAg
IG1fZ3JhcGgubV9wbGFuLnNldEZpbmFsaXplcihzdGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXpl
cj4oCisgICAgbV9ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8SklURmluYWxp
emVyPigKICAgICAgICAgbV9ncmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgp
LCBXVEZNb3ZlKGxpbmtCdWZmZXIpKSk7CiB9CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIGNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZs
YWcoKTsKIAogICAgIC8vID09PSBGdW5jdGlvbiBib2R5IGNvZGUgZ2VuZXJhdGlvbiA9PT0KLSAg
ICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMp
OworICAgIG1fc3BlY3VsYXRpdmUgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7
CiAgICAgY29tcGlsZUJvZHkoKTsKICAgICBzZXRFbmRPZk1haW5QYXRoKCk7CiAKQEAgLTUwNyw5
ICs1MDcsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIHNldEVu
ZE9mQ29kZSgpOwogCiAgICAgLy8gPT09IExpbmsgPT09Ci0gICAgYXV0byBsaW5rQnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBp
bGF0aW9uQ2FuRmFpbCk7CisgICAgYXV0byBsaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVm
ZmVyPigqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgaWYg
KGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX3Bs
YW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihtX2dyYXBo
Lm1fcGxhbikpOworICAgICAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6ZXIobWFrZVVuaXF1
ZTxGYWlsZWRGaW5hbGl6ZXI+KG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbGluaygqbGlua0J1ZmZlcik7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBKSVRD
b21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVjayA9IGxpbmtCdWZmZXItPmxvY2F0aW9uT2Y8SlNF
bnRyeVB0clRhZz4oYXJpdHlDaGVjayk7CiAKLSAgICBtX2dyYXBoLm1fcGxhbi5zZXRGaW5hbGl6
ZXIoc3RkOjptYWtlX3VuaXF1ZTxKSVRGaW5hbGl6ZXI+KAorICAgIG1fZ3JhcGgubV9wbGFuLnNl
dEZpbmFsaXplcihtYWtlVW5pcXVlPEpJVEZpbmFsaXplcj4oCiAgICAgICAgIG1fZ3JhcGgubV9w
bGFuLCBtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSwgd2l0
aEFyaXR5Q2hlY2spKTsKIH0KIApAQCAtNTUwLDcgKzU1MCw3IEBAIHZvaWQqIEpJVENvbXBpbGVy
OjphZGRyZXNzT2ZEb3VibGVDb25zdGFudChOb2RlKiBub2RlKQogICAgICAgICByZXR1cm4gaXQt
PnNlY29uZDsKIAogICAgIGlmICghbV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cykKLSAgICAgICAg
bV9ncmFwaC5tX2RvdWJsZUNvbnN0YW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFnPGRvdWJsZT4+
KCk7CisgICAgICAgIG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMgPSBtYWtlVW5pcXVlPEJhZzxk
b3VibGU+PigpOwogCiAgICAgZG91YmxlKiBhZGRyZXNzSW5Db25zdGFudFBvb2wgPSBtX2dyYXBo
Lm1fZG91YmxlQ29uc3RhbnRzLT5hZGQoKTsKICAgICAqYWRkcmVzc0luQ29uc3RhbnRQb29sID0g
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNz
QW5hbHlzaXNQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNz
QW5hbHlzaXNQaGFzZS5jcHAKaW5kZXggYmI4MDAyNzRkZGNiNjMwMzQ3ODM3MzdlMzhhZDFlNjFl
OWM1ZWEwNC4uYTk0NDA0NzQ1OTI1MjE4NDViYTMxODgzN2IxM2I5ZjRhMzE3ZWYzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFseXNpc1Bo
YXNlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBMaXZlbmVzc0FuYWx5c2lzUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICAsIG1fbGl2ZUF0VGFpbChtX2dyYXBoKQogICAgIHsKICAg
ICAgICAgbV9ncmFwaC5tX2luZGV4aW5nQ2FjaGUtPnJlY29tcHV0ZSgpOwotICAgICAgICBtX3dv
cmtzZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtzZXQ+KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hl
LT5udW1JbmRpY2VzKCkpOworICAgICAgICBtX3dvcmtzZXQgPSBtYWtlVW5pcXVlPFdvcmtzZXQ+
KG1fZ3JhcGgubV9pbmRleGluZ0NhY2hlLT5udW1JbmRpY2VzKCkpOwogICAgIH0KIAogICAgIGJv
b2wgcnVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IDM0YWNiYzFm
ZTIyZmI3N2YzNTgwZGEzNjc5OWM4MjE0YmViYzlkNjIuLmI2OTQ5YWEwMzVjMTJmYTc0OWQ1ODBj
YzdjMmFlY2NhOGQ5MmMxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApA
QCAtMjk3LDcgKzI5Nyw3IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5U
aHJlYWRJbXBsKCkKICAgICBpZiAobV9tb2RlID09IEZUTEZvck9TUkVudHJ5TW9kZSkgewogICAg
ICAgICBib29sIHJlc3VsdCA9IHBlcmZvcm1PU1JFbnRyeXBvaW50Q3JlYXRpb24oZGZnKTsKICAg
ICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgIG1fZmluYWxpemVyID0gc3RkOjptYWtl
X3VuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fZmluYWxpemVy
ID0gbWFrZVVuaXF1ZTxGYWlsZWRGaW5hbGl6ZXI+KCp0aGlzKTsKICAgICAgICAgICAgIHJldHVy
biBGYWlsUGF0aDsKICAgICAgICAgfQogICAgICAgICBSVU5fUEhBU0UocGVyZm9ybUNQU1JldGhy
ZWFkaW5nKTsKQEAgLTM5OCw3ICszOTgsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6
Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgY2FzZSBGVExGb3JPU1JFbnRyeU1vZGU6IHsKICNp
ZiBFTkFCTEUoRlRMX0pJVCkKICAgICAgICAgaWYgKEZUTDo6Y2FuQ29tcGlsZShkZmcpID09IEZU
TDo6Q2Fubm90Q29tcGlsZSkgewotICAgICAgICAgICAgbV9maW5hbGl6ZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOworICAgICAgICAgICAgbV9maW5hbGl6ZXIg
PSBtYWtlVW5pcXVlPEZhaWxlZEZpbmFsaXplcj4oKnRoaXMpOwogICAgICAgICAgICAgcmV0dXJu
IEZhaWxQYXRoOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDc4LDcgKzQ3OCw3IEBAIFBsYW46
OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKCkKICAgICAgICAgUlVO
X1BIQVNFKHBlcmZvcm1XYXRjaHBvaW50Q29sbGVjdGlvbik7CiAgICAgICAgIAogICAgICAgICBp
ZiAoRlRMOjpjYW5Db21waWxlKGRmZykgPT0gRlRMOjpDYW5ub3RDb21waWxlKSB7Ci0gICAgICAg
ICAgICBtX2ZpbmFsaXplciA9IHN0ZDo6bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPigqdGhp
cyk7CisgICAgICAgICAgICBtX2ZpbmFsaXplciA9IG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVy
PigqdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3Bw
CmluZGV4IDg3MTU5NWIxZmYyNTliZWU0NGM3MWNlMDNkN2Q4ZThiZDY0MzY1MzcuLjUzNGQ2NGI1
MzhmYTE4MGFmNDhlODlkNGY4MjYwMmZiNDVjOTIxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKQEAgLTQ0OCw3ICs0NDgs
NyBAQCBjbGFzcyBTU0FDb252ZXJzaW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZh
bHVlc0F0SGVhZC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVh
cigpOwotICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9j
azo6U1NBRGF0YT4oYmxvY2spOworICAgICAgICAgICAgYmxvY2stPnNzYSA9IG1ha2VVbmlxdWU8
QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogZW50cnlwb2ludEluZGV4VG9Bcmd1bWVudHNCbG9jaykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDdjZjQy
NTIxYTYyMTE3OGZmODUxMmFmZjlmZmZhMzI1MjAwMjI0ZDYuLmNkY2RhYTYwZDg5OGEzYjY2ZDdi
Mjk4ZjY2ODE4Yzc5ZGM0OGM4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aENhbGwoCiAgICAgU3BpbGxSZWdp
c3RlcnNNb2RlIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCByZXF1aXJlbWVu
dCwKICAgICBSZXN1bHRUeXBlIHJlc3VsdCwgQXJndW1lbnRzLi4uIGFyZ3VtZW50cykKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxsUmVzdWx0QW5kQXJndW1lbnRzU2xvd1BhdGhH
ZW5lcmF0b3I8SnVtcFR5cGUsIEZ1bmN0aW9uVHlwZSwgUmVzdWx0VHlwZSwgQXJndW1lbnRzLi4u
Pj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsbFJlc3VsdEFuZEFyZ3VtZW50c1Nsb3dQYXRo
R2VuZXJhdG9yPEp1bXBUeXBlLCBGdW5jdGlvblR5cGUsIFJlc3VsdFR5cGUsIEFyZ3VtZW50cy4u
Lj4+KAogICAgICAgICBmcm9tLCBqaXQsIGZ1bmN0aW9uLCBzcGlsbE1vZGUsIHJlcXVpcmVtZW50
LCByZXN1bHQsIGFyZ3VtZW50cy4uLik7CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBKdW1wVHlwZSwgdHlwZW5hbWUgRGVzdGluYXRpb25UeXBlLCB0eXBlbmFtZSBT
b3VyY2VUeXBlLCB1bnNpZwogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRv
cj4gc2xvd1BhdGhNb3ZlKAogICAgIEp1bXBUeXBlIGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQs
IFNvdXJjZVR5cGUgc291cmNlW251bWJlck9mQXNzaWdubWVudHNdLCBEZXN0aW5hdGlvblR5cGUg
ZGVzdGluYXRpb25bbnVtYmVyT2ZBc3NpZ25tZW50c10pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9u
VHlwZSwgU291cmNlVHlwZSwgbnVtYmVyT2ZBc3NpZ25tZW50cz4+KAorICAgIHJldHVybiBtYWtl
VW5pcXVlPEFzc2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5
cGUsIFNvdXJjZVR5cGUsIG51bWJlck9mQXNzaWdubWVudHM+PigKICAgICAgICAgZnJvbSwgaml0
LCBkZXN0aW5hdGlvbiwgc291cmNlKTsKIH0KIApAQCAtMjQ5LDcgKzI0OSw3IEBAIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBT
b3VyY2VUeXBlIHNvdXJjZUFycmF5WzFdID0geyBzb3VyY2UgfTsKICAgICBEZXN0aW5hdGlvblR5
cGUgZGVzdGluYXRpb25BcnJheVsxXSA9IHsgZGVzdGluYXRpb24gfTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBc3NpZ25pbmdTbG93UGF0aEdlbmVyYXRvcjxKdW1wVHlwZSwgRGVzdGlu
YXRpb25UeXBlLCBTb3VyY2VUeXBlLCAxPj4oCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXNzaWdu
aW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERlc3RpbmF0aW9uVHlwZSwgU291cmNlVHlw
ZSwgMT4+KAogICAgICAgICBmcm9tLCBqaXQsIGRlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5
KTsKIH0KIApAQCAtMjU5LDcgKzI1OSw3IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoTW92ZSgKIHsKICAgICBTb3VyY2VUeXBlIHNvdXJjZUFycmF5
WzJdID0geyBzb3VyY2UxLCBzb3VyY2UyIH07CiAgICAgRGVzdGluYXRpb25UeXBlIGRlc3RpbmF0
aW9uQXJyYXlbMl0gPSB7IGRlc3RpbmF0aW9uMSwgZGVzdGluYXRpb24yIH07Ci0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8QXNzaWduaW5nU2xvd1BhdGhHZW5lcmF0b3I8SnVtcFR5cGUsIERl
c3RpbmF0aW9uVHlwZSwgU291cmNlVHlwZSwgMj4+KAorICAgIHJldHVybiBtYWtlVW5pcXVlPEFz
c2lnbmluZ1Nsb3dQYXRoR2VuZXJhdG9yPEp1bXBUeXBlLCBEZXN0aW5hdGlvblR5cGUsIFNvdXJj
ZVR5cGUsIDI+PigKICAgICAgICAgZnJvbSwgaml0LCBkZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VB
cnJheSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggMjA3YTliNjliNDg4NTViNTZiMWY4MzcyMDY1MWMyYmM3NmUzOGY5ZS4u
NzBlNzA1ZDc4NDkzMmQ5ZDNmYzI3MjQ5MTMyZWZkM2UzZTVkNjUyNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJl
c3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZQogICAgIC8vIEkgd2FudCBhIHNsb3cgcGF0aCB0
aGF0IGFsc28gbG9hZHMgb3V0IHRoZSBzdG9yYWdlIHBvaW50ZXIsIGFuZCB0aGF0J3MKICAgICAv
LyB3aGF0IHRoaXMgY3VzdG9tIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yIGdp
dmVzIG1lLiBJdCdzIGEgbG90CiAgICAgLy8gb2Ygd29yayBmb3IgYSB2ZXJ5IHNtYWxsIHBpZWNl
IG9mIGZ1bmN0aW9uYWxpdHkuIDotLwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I+KAorICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5l
cmF0b3I+KAogICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld1Jhd09iamVjdCwg
cmVzdWx0R1BSLCBzdG9yYWdlR1BSLAogICAgICAgICBzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCkp
OwogCkBAIC04OTksNyArODk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9k
ZSogbm9kZSwgR1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBwcm9wZXJ0eVJlZykKICAgICAgICAgc2xv
d1BhdGguYXBwZW5kKGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+
YXJyYXlNb2RlKCkpKTsKICAgICB9CiAgICAgCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihtYWtlVW5pcXVlPEFycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAg
ICBzbG93UGF0aCwgdGhpcywgbm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHRlbXBHUFIsIHN0
cnVjdHVyZUdQUikpOwogICAgIAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwpAQCAtMjI0
MiwxMCArMjI0MiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0
cmluZyhOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAgICAgIGlmIChwcm90b3R5cGVDaGFpbklz
U2FuZSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9y
PigKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICAgICAgICAgIG91dE9mQm91bmRz
LCB0aGlzLCBKU1ZhbHVlUmVncyhzY3JhdGNoUmVnKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsK
ICNlbHNlCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVl
PFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5l
cmF0b3I+KAogICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBKU1ZhbHVlUmVncyhy
ZXN1bHRUYWdSZWcsIHNjcmF0Y2hSZWcpLAogICAgICAgICAgICAgICAgIGJhc2VSZWcsIHByb3Bl
cnR5UmVnKSk7CiAjZW5kaWYKQEAgLTc2MTksNyArNzYxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCByZXN1
bHRHUFIsIHN0cnVjdHVyZSwKICAgICAgICAgICAgICAgICBrbm93bkxlbmd0aCwgbWluQ2FwYWNp
dHkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGdlbmVyYXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yPigKKyAgICAg
ICAgYXV0byBnZW5lcmF0b3IgPSBtYWtlVW5pcXVlPENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNT
bG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgcmVzdWx0R1BS
LCBzdHJ1Y3R1cmUsIGxlbmd0aEdQUiwgbWluQ2FwYWNpdHkpOwogICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihXVEZNb3ZlKGdlbmVyYXRvcikpOwogICAgIH0KQEAgLTg0MzksNyArODQzOSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFs
bG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9y
PigKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxv
Y2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4o
CiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUs
IHJlc3VsdEdQUiwgdGVtcFZhbHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSKSk7CiAgICAg
fQogCkBAIC05MTM1LDcgKzkxMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3RydWN0
dXJlQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGNlbGxHUFIsIEdQUlJlZyB0ZW1wRwogICAgICAg
ICBHUFJSZWcgc3RydWN0dXJlR1BSOwogICAgICAgICAKICAgICAgICAgaWYgKHRlbXBHUFIgPT0g
SW52YWxpZEdQUlJlZykgewotICAgICAgICAgICAgc3RydWN0dXJlID0gc3RkOjptYWtlX3VuaXF1
ZTxHUFJUZW1wb3Jhcnk+KHRoaXMpOworICAgICAgICAgICAgc3RydWN0dXJlID0gbWFrZVVuaXF1
ZTxHUFJUZW1wb3Jhcnk+KHRoaXMpOwogICAgICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0
dXJlLT5ncHIoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIgPSB0
ZW1wR1BSOwpAQCAtMTMxNzYsNyArMTMxNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwog
CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKCptX2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxl
U2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5p
cXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4o
CiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVz
dWx0R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsCiAgICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNp
emVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmlu
ZGV4IGZhMzk2ZjRmMTkyYThiYjRhZWY5OWQwMzcxOTI0YTJhMzhjNjQ1ZTguLmJhNjEyOGVmZTli
YjM2OGZlM2IwNjYyM2I1MWVlM2VlYWQzYzRmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBA
IC05NSw4ICs5NSw4IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgY2FzZSBQaGFzZU1vZGU6Okdsb2JhbDogewogICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogCi0g
ICAgICAgICAgICBtX3N0YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxJblBsYWNlQWJzdHJhY3RTdGF0
ZT4obV9ncmFwaCk7Ci0gICAgICAgICAgICBtX2ludGVycHJldGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxBYnN0cmFjdEludGVycHJldGVyPEluUGxhY2VBYnN0cmFjdFN0YXRlPj4obV9ncmFwaCwgKm1f
c3RhdGUpOworICAgICAgICAgICAgbV9zdGF0ZSA9IG1ha2VVbmlxdWU8SW5QbGFjZUFic3RyYWN0
U3RhdGU+KG1fZ3JhcGgpOworICAgICAgICAgICAgbV9pbnRlcnByZXRlciA9IG1ha2VVbmlxdWU8
QWJzdHJhY3RJbnRlcnByZXRlcjxJblBsYWNlQWJzdHJhY3RTdGF0ZT4+KG1fZ3JhcGgsICptX3N0
YXRlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9pc0NvbnZlcmdlZCA9IGZhbHNlOwog
ICAgICAgICAgICAgCkBAIC0xMDcsOCArMTA3LDggQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgLy8gdG93YXJkcyBiZWxpZXZp
bmcgdGhhdCBhbGwgbm9kZXMgbmVlZCBiYXJyaWVycy4gIk5lZWRpbmcgYSBiYXJyaWVyIiBpcyBs
aWtlCiAgICAgICAgICAgICAvLyBzYXlpbmcgdGhhdCB0aGUgbm9kZSBpcyBpbiBhIHBhc3QgZXBv
Y2guICJOb3QgbmVlZGluZyBhIGJhcnJpZXIiIGlzIGxpa2Ugc2F5aW5nCiAgICAgICAgICAgICAv
LyB0aGF0IHRoZSBub2RlIGlzIGluIHRoZSBjdXJyZW50IGVwb2NoLgotICAgICAgICAgICAgbV9z
dGF0ZUF0SGVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2RlKj4+Piht
X2dyYXBoKTsKLSAgICAgICAgICAgIG1fc3RhdGVBdFRhaWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJs
b2NrTWFwPEhhc2hTZXQ8Tm9kZSo+Pj4obV9ncmFwaCk7CisgICAgICAgICAgICBtX3N0YXRlQXRI
ZWFkID0gbWFrZVVuaXF1ZTxCbG9ja01hcDxIYXNoU2V0PE5vZGUqPj4+KG1fZ3JhcGgpOworICAg
ICAgICAgICAgbV9zdGF0ZUF0VGFpbCA9IG1ha2VVbmlxdWU8QmxvY2tNYXA8SGFzaFNldDxOb2Rl
Kj4+PihtX2dyYXBoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQmxvY2tMaXN0IHBvc3RP
cmRlciA9IG1fZ3JhcGguYmxvY2tzSW5Qb3N0T3JkZXIoKTsKICAgICAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAppbmRleCBlNmMyMjIxZWUzMDE1NDRj
NzJhOWNlODM1Zjk4MGZmMzZmMDI0YjdkLi44ZjkzMDM0YjBjNmY5MGJhNjZmNGJmNWM1M2JlMWI0
ZjBmYmE3NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmts
aXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcApA
QCAtMTUwLDcgKzE1MCw3IEBAIGNsYXNzIFdvcmtsaXN0OjpUaHJlYWRCb2R5IDogcHVibGljIEF1
dG9tYXRpY1RocmVhZCB7CiAgICAgICAgIGlmIChtX3JlbGF0aXZlUHJpb3JpdHkpCiAgICAgICAg
ICAgICBUaHJlYWQ6OmN1cnJlbnQoKS5jaGFuZ2VQcmlvcml0eShtX3JlbGF0aXZlUHJpb3JpdHkp
OwogICAgICAgICAKLSAgICAgICAgbV9jb21waWxhdGlvblNjb3BlID0gc3RkOjptYWtlX3VuaXF1
ZTxDb21waWxhdGlvblNjb3BlPigpOworICAgICAgICBtX2NvbXBpbGF0aW9uU2NvcGUgPSBtYWtl
VW5pcXVlPENvbXBpbGF0aW9uU2NvcGU+KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdGhyZWFk
SXNTdG9wcGluZyhjb25zdCBBYnN0cmFjdExvY2tlciYpIG92ZXJyaWRlCkBAIC0yMTQsNyArMjE0
LDcgQEAgdm9pZCBXb3JrbGlzdDo6ZmluaXNoQ3JlYXRpb24odW5zaWduZWQgbnVtYmVyT2ZUaHJl
YWRzLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKIAogdm9pZCBXb3JrbGlzdDo6Y3JlYXRlTmV3VGhy
ZWFkKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIGludCByZWxhdGl2ZVByaW9yaXR5KQog
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWREYXRhPiBkYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxUaHJlYWREYXRhPih0aGlzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkRGF0YT4gZGF0
YSA9IG1ha2VVbmlxdWU8VGhyZWFkRGF0YT4odGhpcyk7CiAgICAgZGF0YS0+bV90aHJlYWQgPSBh
ZG9wdFJlZihuZXcgVGhyZWFkQm9keShsb2NrZXIsICp0aGlzLCAqZGF0YSwgbV9sb2NrLCBtX3Bs
YW5FbnF1ZXVlZC5jb3B5UmVmKCksIHJlbGF0aXZlUHJpb3JpdHkpKTsKICAgICBtX3RocmVhZHMu
YXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCmluZGV4IDE5YjExNWM5ZmRkNjdjYmM4YWUx
MDljNjQ0NTc0MjhiYTNhZGZhNTMuLjAwYmRhNjU3Mjc5Y2Y3YTk5ZGJhYjE0OWIwOWM3MDNkNjhi
MzViZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlz
YXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rp
c2Fzc2VtYmxlci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBBc3luY2hyb25vdXNEaXNhc3NlbWJs
ZXImIGFzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlcigpCiB2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9u
b3VzbHkoCiAgICAgY29uc3QgQ1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RGlzYXNzZW1ibHlQdHJUYWc+JiBjb2RlUmVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hh
ciogcHJlZml4KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPERpc2Fzc2VtYmx5VGFzaz4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGlzYXNzZW1ibHlUYXNrPiB0YXNrID0gbWFrZVVuaXF1ZTxEaXNhc3NlbWJseVRhc2s+KCk7
CiAgICAgdGFzay0+aGVhZGVyID0gc3RyZHVwKGhlYWRlci5kYXRhKCkpOyAvLyBZdWNrISBXZSBu
ZWVkIHRoaXMgYmVjYXVzZSBDU3RyaW5nIGRvZXMgcmFjeSByZWZjb3VudGluZy4KICAgICB0YXNr
LT5jb2RlUmVmID0gY29kZVJlZjsKICAgICB0YXNrLT5zaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAppbmRleCA5MGFlMmY0ZmUwNmEx
NTJjYWU1Nzg1ZTJjMDNjOTk5YjY4MzJiYzFiLi5lYzgwZWE2N2IyNTZmODkxOGQ0ODgzYThjNTJi
OGYzNzk1ODNhYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXAuY3BwCkBAIC0xNTcsMTEgKzE1NywxMSBAQCBjb25zdCBBYnN0cmFjdEhlYXAmIEluZGV4
ZWRBYnN0cmFjdEhlYXA6OmF0U2xvdyhwdHJkaWZmX3QgaW5kZXgpCiAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHNpemVfdD4oaW5kZXgpID49IG1fc21hbGxJbmRpY2VzLnNpemUoKSk7CiAgICAgCiAg
ICAgaWYgKFVOTElLRUxZKCFtX2xhcmdlSW5kaWNlcykpCi0gICAgICAgIG1fbGFyZ2VJbmRpY2Vz
ID0gc3RkOjptYWtlX3VuaXF1ZTxNYXBUeXBlPigpOworICAgICAgICBtX2xhcmdlSW5kaWNlcyA9
IG1ha2VVbmlxdWU8TWFwVHlwZT4oKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBYnN0cmFjdEhl
YXA+JiBmaWVsZCA9IG1fbGFyZ2VJbmRpY2VzLT5hZGQoaW5kZXgsIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKICAgICBpZiAoIWZpZWxkKSB7Ci0gICAgICAgIGZpZWxkID0gc3RkOjptYWtlX3Vu
aXF1ZTxBYnN0cmFjdEhlYXA+KCk7CisgICAgICAgIGZpZWxkID0gbWFrZVVuaXF1ZTxBYnN0cmFj
dEhlYXA+KCk7CiAgICAgICAgIGluaXRpYWxpemUoKmZpZWxkLCBpbmRleCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCA1ZDA0YjcyZjA0ODMx
ZDA2MzAyMzA0ZDFlYjdlNDkyOWQ0ODA0MjdmLi40NjM1Y2M5NmY5MTA5MWY3M2YwOGQxZjc1MmIw
NDdkMTA1M2JmYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpS
ZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICBWTSYgdm0gPSBncmFwaC5tX3ZtOwogCiAgICAg
aWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQotICAgICAgICBzdGF0ZS5wcm9jLT5jb2RlKCku
c2V0RGlzYXNzZW1ibGVyKHN0ZDo6bWFrZV91bmlxdWU8QjM6OkFpcjo6RGlzYXNzZW1ibGVyPigp
KTsKKyAgICAgICAgc3RhdGUucHJvYy0+Y29kZSgpLnNldERpc2Fzc2VtYmxlcihtYWtlVW5pcXVl
PEIzOjpBaXI6OkRpc2Fzc2VtYmxlcj4oKSk7CiAKICAgICB7CiAgICAgICAgIEdyYXBoU2FmZXBv
aW50IHNhZmVwb2ludChzdGF0ZS5ncmFwaCwgc2FmZXBvaW50UmVzdWx0KTsKQEAgLTc4LDcgKzc4
LDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVw
b2ludFJlc3VsdCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWdpc3RlckF0T2Zmc2V0TGlzdD4gcmVnaXN0ZXJPZmZzZXRzID0KLSAgICAgICAgc3RkOjptYWtl
X3VuaXF1ZTxSZWdpc3RlckF0T2Zmc2V0TGlzdD4oc3RhdGUucHJvYy0+Y2FsbGVlU2F2ZVJlZ2lz
dGVyQXRPZmZzZXRMaXN0KCkpOworICAgICAgICBtYWtlVW5pcXVlPFJlZ2lzdGVyQXRPZmZzZXRM
aXN0PihzdGF0ZS5wcm9jLT5jYWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKSk7CiAgICAg
aWYgKHNob3VsZER1bXBEaXNhc3NlbWJseSgpKQogICAgICAgICBkYXRhTG9nKCJVbndpbmQgaW5m
byBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRUeXBlOjpGVExKSVQp
LCAiOiAiLCAqcmVnaXN0ZXJPZmZzZXRzLCAiXG4iKTsKICAgICBjb2RlQmxvY2stPnNldENhbGxl
ZVNhdmVSZWdpc3RlcnMoV1RGTW92ZShyZWdpc3Rlck9mZnNldHMpKTsKQEAgLTE0Miw3ICsxNDIs
NyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlc3VsdCYgc2FmZXBv
aW50UmVzdWx0KQogICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4obG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsK
IAotICAgIHN0YXRlLmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8TGlua0J1ZmZlcj4oaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7Cisg
ICAgc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVyID0gbWFrZVVuaXF1ZTxMaW5rQnVm
ZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKIAogICAgIGlmIChz
dGF0ZS5maW5hbGl6ZXItPmIzQ29kZUxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsK
ICAgICAgICAgc3RhdGUuYWxsb2NhdGlvbkZhaWxlZCA9IHRydWU7CkBAIC0xNTEsNyArMTUxLDcg
QEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50OjpSZXN1bHQmIHNhZmVwb2lu
dFJlc3VsdCkKICAgICAKICAgICBCMzo6UENUb09yaWdpbk1hcCBvcmlnaW5NYXAgPSBzdGF0ZS5w
cm9jLT5yZWxlYXNlUENUb09yaWdpbk1hcCgpOwogICAgIGlmICh2bS5zaG91bGRCdWlsZGVyUENU
b0NvZGVPcmlnaW5NYXBwaW5nKCkpCi0gICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmln
aW5NYXAoc3RkOjptYWtlX3VuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyKHZtLCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0Nv
ZGVMaW5rQnVmZmVyKSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0UENUb0NvZGVPcmlnaW5NYXAo
bWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKHZt
LCBXVEZNb3ZlKG9yaWdpbk1hcCkpLCAqc3RhdGUuZmluYWxpemVyLT5iM0NvZGVMaW5rQnVmZmVy
KSk7CiAKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPiBsYWJlbCA9IHN0YXRl
LmZpbmFsaXplci0+YjNDb2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZjxKU0VudHJ5UHRyVGFnPihz
dGF0ZS5wcm9jLT5lbnRyeXBvaW50TGFiZWwoMCkpOwogICAgIHN0YXRlLmdlbmVyYXRlZEZ1bmN0
aW9uID0gbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZh
aWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGYWlsLmNwcAppbmRleCAxNjUz
MzUwOWNkMGI0ODJjNzRiY2E2NzMxODc2M2YyZTBmMDlkZGYxLi5jM2Y5MzM5MmYyNmU2ZmM5NWY5
YzJjYzU5MjllZDM0YzZiYzMwYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEZhaWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMRmFpbC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIERGRzsKIAogdm9pZCBmYWlsKFN0
YXRlJiBzdGF0ZSkKIHsKLSAgICBzdGF0ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6
bWFrZV91bmlxdWU8RmFpbGVkRmluYWxpemVyPihzdGF0ZS5ncmFwaC5tX3BsYW4pKTsKKyAgICBz
dGF0ZS5ncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKG1ha2VVbmlxdWU8RmFpbGVkRmluYWxpemVy
PihzdGF0ZS5ncmFwaC5tX3BsYW4pKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggMDg1NDA1NmVjN2QxNjJiMTFj
ZGMyMWNkNzhmZTE1MTdmN2FjZjNlYi4uOTVkYjY5NjFlOGU5MDc3MGNkNmU1NTY3MzAyMmI0NDc2
M2I1ODA2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC0xNjYsNyAr
MTY2LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIGppdC51bnRhZ1Jl
dHVybkFkZHJlc3MoKTsKICAgICAgICAgICAgIG1haW5QYXRoSnVtcHMuYXBwZW5kKGppdC5qdW1w
KCkpOwogCi0gICAgICAgICAgICBsaW5rQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVm
ZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgICAg
IGxpbmtCdWZmZXIgPSBtYWtlVW5pcXVlPExpbmtCdWZmZXI+KGppdCwgY29kZUJsb2NrLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxU
b0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvY2F0aW9uRmFpbGVkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBs
aW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwogICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbWFpblBhdGhKdW1wID0gaml0Lmp1bXAoKTsKICAgICAg
ICAgCi0gICAgICAgIGxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KGpp
dCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworICAgICAgICBsaW5rQnVmZmVy
ID0gbWFrZVVuaXF1ZTxMaW5rQnVmZmVyPihqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25D
YW5GYWlsKTsKICAgICAgICAgaWYgKGxpbmtCdWZmZXItPmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsK
ICAgICAgICAgICAgIHN0YXRlLmFsbG9jYXRpb25GYWlsZWQgPSB0cnVlOwogICAgICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IGFmMWJhNGJmOTBhOGZkMGJhMjUwMmM2NDdlMmMxNzE0MTIyZGU3ZDQuLjA5YjM0Mjcz
Y2JiN2NhYjQ0Y2Q4NjNlOTliMjg1OTBlODdjOTRiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE1MDgwLDcgKzE1MDgwLDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua0J1
ZmZlci5saW5rKGdlbmVyYXRvckp1bXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4odm0tPmdldENUSVN0dWIobGF6
eVNsb3dQYXRoR2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxMYXp5U2xvd1BhdGg+IGxhenlTbG93UGF0aCA9IHN0ZDo6bWFrZV91bmlx
dWU8TGF6eVNsb3dQYXRoPigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF6eVNsb3dQYXRoPiBsYXp5U2xvd1BhdGggPSBtYWtlVW5pcXVlPExhenlT
bG93UGF0aD4oKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmtl
ZFBhdGNoYWJsZUp1bXAgPSBDb2RlTG9jYXRpb25KdW1wPEpTSW50ZXJuYWxQdHJUYWc+KGxpbmtC
dWZmZXIubG9jYXRpb25PZjxKU0ludGVybmFsUHRyVGFnPihwYXRjaGFibGVKdW1wKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKaW5kZXggNjUzZWM2ZjY5NjA0OWI3NTJh
YzI0YTc3OTMxMGQ0YWQ5N2JiMDNkYi4uNGE0ODRmYTZkNDY0MzBkNzFlNTcwMDhiZjFlOTlmNmMy
NWI4NDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKQEAgLTYwLDEw
ICs2MCwxMCBAQCBTdGF0ZTo6U3RhdGUoR3JhcGgmIGdyYXBoKQogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVyKHN0ZDo6bWFrZV91bmlxdWU8SklU
RmluYWxpemVyPihncmFwaC5tX3BsYW4pKTsKKyAgICBncmFwaC5tX3BsYW4uc2V0RmluYWxpemVy
KG1ha2VVbmlxdWU8SklURmluYWxpemVyPihncmFwaC5tX3BsYW4pKTsKICAgICBmaW5hbGl6ZXIg
PSBzdGF0aWNfY2FzdDxKSVRGaW5hbGl6ZXIqPihncmFwaC5tX3BsYW4uZmluYWxpemVyKCkpOwog
Ci0gICAgcHJvYyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2VkdXJlPigpOworICAgIHByb2MgPSBt
YWtlVW5pcXVlPFByb2NlZHVyZT4oKTsKIAogICAgIHByb2MtPnNldE9yaWdpblByaW50ZXIoCiAg
ICAgICAgIFtdIChQcmludFN0cmVhbSYgb3V0LCBCMzo6T3JpZ2luIG9yaWdpbikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRleCAyMmQ3
ZmQ2NWQ1YTE3NTViNWIyZDNiNzhkZGE1NWMwZDAwN2UxY2NiLi4wMjFiMGNkYjlkZmFjMThiMzY4
NjQyOGE5ODIzZjI4MTEwYmI3OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Db21wbGV0ZVN1YnNwYWNlLmNwcApAQCAtODAsNyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxl
dGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICAgICAgZGF0YUxv
ZygiQ3JlYXRpbmcgQmxvY2tEaXJlY3RvcnkvTG9jYWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwg
IiwgIiwgYXR0cmlidXRlcygpLCAiLCAiLCBzaXplQ2xhc3MsICIuXG4iKTsKICAgICAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9yeSA9Ci0gICAgICAg
IHN0ZDo6bWFrZV91bmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xh
c3MpOworICAgICAgICBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwg
c2l6ZUNsYXNzKTsKICAgICBCbG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0
b3J5LmdldCgpOwogICAgIG1fZGlyZWN0b3JpZXMuYXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0
b3J5KSk7CiAgICAgCkBAIC04OCw3ICs4OCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNl
OjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJl
Y3RvcnkobG9ja2VyLCBkaXJlY3RvcnkpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMb2Nh
bEFsbG9jYXRvcj4gdW5pcXVlTG9jYWxBbGxvY2F0b3IgPQotICAgICAgICBzdGQ6Om1ha2VfdW5p
cXVlPExvY2FsQWxsb2NhdG9yPihkaXJlY3RvcnkpOworICAgICAgICBtYWtlVW5pcXVlPExvY2Fs
QWxsb2NhdG9yPihkaXJlY3RvcnkpOwogICAgIExvY2FsQWxsb2NhdG9yKiBsb2NhbEFsbG9jYXRv
ciA9IHVuaXF1ZUxvY2FsQWxsb2NhdG9yLmdldCgpOwogICAgIG1fbG9jYWxBbGxvY2F0b3JzLmFw
cGVuZChXVEZNb3ZlKHVuaXF1ZUxvY2FsQWxsb2NhdG9yKSk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCmluZGV4IGEwMWI1YTJiNGFlZmQzZTUyOTY5NzdhNWM4Mzg0MDQyZTVh
Mjk1NmEuLjk3MTk5ZTE4NmRlNzJkNzcyNzk3MzVjOWQzYzk5NDBjODVjNDhhZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0yODksMTUgKzI4OSwxNSBAQCBIZWFwOjpIZWFw
KFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0
ZXNQZXJDeWNsZSkKICAgICAsIG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5Y2xlKQogICAg
ICwgbV9vYmplY3RTcGFjZSh0aGlzKQotICAgICwgbV9tYWNoaW5lVGhyZWFkcyhzdGQ6Om1ha2Vf
dW5pcXVlPE1hY2hpbmVUaHJlYWRzPigpKQotICAgICwgbV9jb2xsZWN0b3JTbG90VmlzaXRvcihz
dGQ6Om1ha2VfdW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgIkMiKSkKLSAgICAsIG1fbXV0YXRv
clNsb3RWaXNpdG9yKHN0ZDo6bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCAiTSIpKQot
ICAgICwgbV9tdXRhdG9yTWFya1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+
KCkpCi0gICAgLCBtX3JhY2VNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJh
eT4oKSkKLSAgICAsIG1fY29uc3RyYWludFNldChzdGQ6Om1ha2VfdW5pcXVlPE1hcmtpbmdDb25z
dHJhaW50U2V0PigqdGhpcykpCisgICAgLCBtX21hY2hpbmVUaHJlYWRzKG1ha2VVbmlxdWU8TWFj
aGluZVRocmVhZHM+KCkpCisgICAgLCBtX2NvbGxlY3RvclNsb3RWaXNpdG9yKG1ha2VVbmlxdWU8
U2xvdFZpc2l0b3I+KCp0aGlzLCAiQyIpKQorICAgICwgbV9tdXRhdG9yU2xvdFZpc2l0b3IobWFr
ZVVuaXF1ZTxTbG90VmlzaXRvcj4oKnRoaXMsICJNIikpCisgICAgLCBtX211dGF0b3JNYXJrU3Rh
Y2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAsIG1fcmFjZU1hcmtTdGFjayht
YWtlVW5pcXVlPE1hcmtTdGFja0FycmF5PigpKQorICAgICwgbV9jb25zdHJhaW50U2V0KG1ha2VV
bmlxdWU8TWFya2luZ0NvbnN0cmFpbnRTZXQ+KCp0aGlzKSkKICAgICAsIG1faGFuZGxlU2V0KHZt
KQotICAgICwgbV9jb2RlQmxvY2tzKHN0ZDo6bWFrZV91bmlxdWU8Q29kZUJsb2NrU2V0PigpKQot
ICAgICwgbV9qaXRTdHViUm91dGluZXMoc3RkOjptYWtlX3VuaXF1ZTxKSVRTdHViUm91dGluZVNl
dD4oKSkKKyAgICAsIG1fY29kZUJsb2NrcyhtYWtlVW5pcXVlPENvZGVCbG9ja1NldD4oKSkKKyAg
ICAsIG1faml0U3R1YlJvdXRpbmVzKG1ha2VVbmlxdWU8SklUU3R1YlJvdXRpbmVTZXQ+KCkpCiAg
ICAgLCBtX3ZtKHZtKQogICAgIC8vIFdlIHNlZWQgd2l0aCAxMG1zIHNvIHRoYXQgR0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSBkb2Vzbid0IGNvbnRpbnVvdXNseSAKICAgICAvLyBzY2hl
ZHVsZSB0aGUgdGltZXIgaWYgd2UndmUgbmV2ZXIgZG9uZSBhIGNvbGxlY3Rpb24uCkBAIC0zMDUs
OCArMzA1LDggQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwg
bV9lZGVuQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OnRyeUNyZWF0ZUVkZW5U
aW1lcih0aGlzKSkKICAgICAsIG1fc3dlZXBlcihhZG9wdFJlZigqbmV3IEluY3JlbWVudGFsU3dl
ZXBlcih0aGlzKSkpCiAgICAgLCBtX3N0b3BJZk5lY2Vzc2FyeVRpbWVyKGFkb3B0UmVmKCpuZXcg
U3RvcElmTmVjZXNzYXJ5VGltZXIodm0pKSkKLSAgICAsIG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0
YWNrKHN0ZDo6bWFrZV91bmlxdWU8TWFya1N0YWNrQXJyYXk+KCkpCi0gICAgLCBtX3NoYXJlZE11
dGF0b3JNYXJrU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tBcnJheT4oKSkKKyAgICAs
IG1fc2hhcmVkQ29sbGVjdG9yTWFya1N0YWNrKG1ha2VVbmlxdWU8TWFya1N0YWNrQXJyYXk+KCkp
CisgICAgLCBtX3NoYXJlZE11dGF0b3JNYXJrU3RhY2sobWFrZVVuaXF1ZTxNYXJrU3RhY2tBcnJh
eT4oKSkKICAgICAsIG1faGVscGVyQ2xpZW50KCZoZWFwSGVscGVyUG9vbCgpKQogICAgICwgbV90
aHJlYWRMb2NrKEJveDxMb2NrPjo6Y3JlYXRlKCkpCiAgICAgLCBtX3RocmVhZENvbmRpdGlvbihB
dXRvbWF0aWNUaHJlYWRDb25kaXRpb246OmNyZWF0ZSgpKQpAQCAtMzE0LDcgKzMxNCw3IEBAIEhl
YXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBtX3dvcmxkU3RhdGUuc3Rv
cmUoMCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBudW1iZXJPZlBhcmFsbGVsVGhyZWFk
cyA9IGhlYXBIZWxwZXJQb29sKCkubnVtYmVyT2ZUaHJlYWRzKCk7IGkgPCBudW1iZXJPZlBhcmFs
bGVsVGhyZWFkczsgKytpKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG90VmlzaXRvcj4g
dmlzaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzLCB0b0NTdHJpbmco
IlAiLCBpICsgMSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvdFZpc2l0b3I+IHZpc2l0
b3IgPSBtYWtlVW5pcXVlPFNsb3RWaXNpdG9yPigqdGhpcywgdG9DU3RyaW5nKCJQIiwgaSArIDEp
KTsKICAgICAgICAgaWYgKE9wdGlvbnM6Om9wdGltaXplUGFyYWxsZWxTbG90VmlzaXRvcnNGb3JT
dG9wcGVkTXV0YXRvcigpKQogICAgICAgICAgICAgdmlzaXRvci0+b3B0aW1pemVGb3JTdG9wcGVk
TXV0YXRvcigpOwogICAgICAgICBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVu
ZCh2aXNpdG9yLmdldCgpKTsKQEAgLTMyMywxNyArMzIzLDE3IEBAIEhlYXA6OkhlYXAoVk0qIHZt
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAKICAgICBpZiAoT3B0aW9uczo6dXNlQ29uY3VycmVu
dEdDKCkpIHsKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVN0b2NoYXN0aWNNdXRhdG9yU2NoZWR1
bGVyKCkpCi0gICAgICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3RvY2hh
c3RpY1NwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlzKTsKKyAgICAgICAgICAgIG1fc2No
ZWR1bGVyID0gbWFrZVVuaXF1ZTxTdG9jaGFzdGljU3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4o
KnRoaXMpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3NjaGVkdWxlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3BhY2VUaW1lTXV0YXRvclNjaGVkdWxlcj4oKnRoaXMpOworICAgICAgICAgICAg
bV9zY2hlZHVsZXIgPSBtYWtlVW5pcXVlPFNwYWNlVGltZU11dGF0b3JTY2hlZHVsZXI+KCp0aGlz
KTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSBzaW11bGF0ZSB0dXJuaW5nIG9mZiBjb25j
dXJyZW50IEdDIGJ5IG1ha2luZyB0aGUgc2NoZWR1bGVyIHNheSB0aGF0IHRoZSB3b3JsZAogICAg
ICAgICAvLyBzaG91bGQgYWx3YXlzIGJlIHN0b3BwZWQgd2hlbiB0aGUgY29sbGVjdG9yIGlzIHJ1
bm5pbmcuCi0gICAgICAgIG1fc2NoZWR1bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91
c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CisgICAgICAgIG1fc2NoZWR1bGVyID0g
bWFrZVVuaXF1ZTxTeW5jaHJvbm91c1N0b3BUaGVXb3JsZE11dGF0b3JTY2hlZHVsZXI+KCk7CiAg
ICAgfQogICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJpZnlIZWFwKCkpCi0gICAgICAgIG1fdmVy
aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhlYXBWZXJpZmllcj4odGhpcywgT3B0aW9uczo6bnVt
YmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkRm9yVmVyaWZpY2F0aW9uKCkpOworICAgICAgICBtX3Zlcmlm
aWVyID0gbWFrZVVuaXF1ZTxIZWFwVmVyaWZpZXI+KHRoaXMsIE9wdGlvbnM6Om51bWJlck9mR0ND
eWNsZXNUb1JlY29yZEZvclZlcmlmaWNhdGlvbigpKTsKICAgICAKICAgICBtX2NvbGxlY3RvclNs
b3RWaXNpdG9yLT5vcHRpbWl6ZUZvclN0b3BwZWRNdXRhdG9yKCk7CiAKQEAgLTg5OSw3ICs4OTks
NyBAQCBzaXplX3QgSGVhcDo6cHJvdGVjdGVkT2JqZWN0Q291bnQoKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8VHlwZUNvdW50U2V0PiBIZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFR5cGVDb3VudFNldD4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1
bHQgPSBtYWtlVW5pcXVlPFR5cGVDb3VudFNldD4oKTsKICAgICBmb3JFYWNoUHJvdGVjdGVkQ2Vs
bCgKICAgICAgICAgWyZdIChKU0NlbGwqIGNlbGwpIHsKICAgICAgICAgICAgIHJlY29yZFR5cGUo
KnZtKCksICpyZXN1bHQsIGNlbGwpOwpAQCAtOTA5LDcgKzkwOSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiBIZWFwOjpvYmplY3RUeXBlQ291bnRzKCkKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVl
PFR5cGVDb3VudFNldD4oKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZUNvdW50U2V0PiByZXN1
bHQgPSBtYWtlVW5pcXVlPFR5cGVDb3VudFNldD4oKTsKICAgICBIZWFwSXRlcmF0aW9uU2NvcGUg
aXRlcmF0aW9uU2NvcGUoKnRoaXMpOwogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxs
KAogICAgICAgICBpdGVyYXRpb25TY29wZSwKQEAgLTI4NTYsNyArMjg1Niw3IEBAIHZvaWQgSGVh
cDo6YWRkQ29yZUNvbnN0cmFpbnRzKCkKICAgICAgICAgfSwKICAgICAgICAgQ29uc3RyYWludFZv
bGF0aWxpdHk6OlNlbGRvbUdyZXllZCk7CiAgICAgCi0gICAgbV9jb25zdHJhaW50U2V0LT5hZGQo
c3RkOjptYWtlX3VuaXF1ZTxNYXJrU3RhY2tNZXJnaW5nQ29uc3RyYWludD4oKnRoaXMpKTsKKyAg
ICBtX2NvbnN0cmFpbnRTZXQtPmFkZChtYWtlVW5pcXVlPE1hcmtTdGFja01lcmdpbmdDb25zdHJh
aW50PigqdGhpcykpOwogfQogCiB2b2lkIEhlYXA6OmFkZE1hcmtpbmdDb25zdHJhaW50KHN0ZDo6
dW5pcXVlX3B0cjxNYXJraW5nQ29uc3RyYWludD4gY29uc3RyYWludCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCmluZGV4IDViNjljZDVlMzVmNjJiNTA2NjNhOWNiZGM3
Mzk0ZDFiZDY3YWQxZDguLmUxZWI2Yzc4MzNkNDg1ODcxYTljNTMzY2ZkNDczMWM3NWY5YjExZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtMjE3LDcgKzIx
Nyw3IEBAIGlubGluZSB2b2lkIEhlYXA6OmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVl
ZGVkKCkKIGlubGluZSBIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4mIEhlYXA6Om1hcmtM
aXN0U2V0KCkKIHsKICAgICBpZiAoIW1fbWFya0xpc3RTZXQpCi0gICAgICAgIG1fbWFya0xpc3RT
ZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPj4oKTsK
KyAgICAgICAgbV9tYXJrTGlzdFNldCA9IG1ha2VVbmlxdWU8SGFzaFNldDxNYXJrZWRBcmd1bWVu
dEJ1ZmZlcio+PigpOwogICAgIHJldHVybiAqbV9tYXJrTGlzdFNldDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCA1
YjlhYzg5ZGFiZjA0YTA2MTRkYzEwZmJiYWYxNmMwZjRhNDk5ZjdlLi4yZDJiYzhmYjliMjdmZTlm
OWIxYjViZTU0Y2I3NTFmODNlMGQzZDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEhl
YXBTbmFwc2hvdEJ1aWxkZXI6OmJ1aWxkU25hcHNob3QoKQogCiAgICAgUHJldmVudENvbGxlY3Rp
b25TY29wZSBwcmV2ZW50Q29sbGVjdGlvblNjb3BlKG1fcHJvZmlsZXIudm0oKS5oZWFwKTsKIAot
ICAgIG1fc25hcHNob3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEhlYXBTbmFwc2hvdD4obV9wcm9maWxl
ci5tb3N0UmVjZW50U25hcHNob3QoKSk7CisgICAgbV9zbmFwc2hvdCA9IG1ha2VVbmlxdWU8SGVh
cFNuYXBzaG90PihtX3Byb2ZpbGVyLm1vc3RSZWNlbnRTbmFwc2hvdCgpKTsKICAgICB7CiAgICAg
ICAgIG1fcHJvZmlsZXIuc2V0QWN0aXZlU25hcHNob3RCdWlsZGVyKHRoaXMpOwogICAgICAgICBt
X3Byb2ZpbGVyLnZtKCkuaGVhcC5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVs
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IGI4ZTQz
MDE5MWU2YjFkYzI5YWE1YzBmMTBjZGQ2ZTliYjE5OGZkYTkuLjdjMmVkMjQwMmZkNzMwMWZjMDk5
YThkZmI1ZDNjMzM2YWVhZDExMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIE5FVkVSX0lOTElORSBCaXRtYXA8TWFya2VkQmxv
Y2s6OmF0b21zUGVyQmxvY2s+KiBJc29DZWxsU2V0OjphZGRTbG93KHNpemVfdCBibG9jCiAgICAg
YXV0byYgYml0c1B0clJlZiA9IG1fYml0c1tibG9ja0luZGV4XTsKICAgICBhdXRvKiBiaXRzID0g
Yml0c1B0clJlZi5nZXQoKTsKICAgICBpZiAoIWJpdHMpIHsKLSAgICAgICAgYml0c1B0clJlZiA9
IHN0ZDo6bWFrZV91bmlxdWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9tc1BlckJsb2NrPj4oKTsK
KyAgICAgICAgYml0c1B0clJlZiA9IG1ha2VVbmlxdWU8Qml0bWFwPE1hcmtlZEJsb2NrOjphdG9t
c1BlckJsb2NrPj4oKTsKICAgICAgICAgYml0cyA9IGJpdHNQdHJSZWYuZ2V0KCk7CiAgICAgICAg
IFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgICAgIG1fYmxvY2tzV2l0aEJpdHNbYmxvY2tJ
bmRleF0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3Bw
CmluZGV4IGQ1MTAwMGViYTg3ZjMxZGU0ODFiZWQwOGE1ZjJmZWQ4YTYzOWZmOTkuLmNkM2U3ZTU2
MTU0NTY2ZGNmOGMxNTE2M2ExNWI3MmYyNzY4ZjI5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSXNvU3Vic3BhY2U6Oklz
b1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2Vs
bFR5cGUsIHMKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQogICAg
ICwgbV9sb2NhbEFsbG9jYXRvcigmbV9kaXJlY3RvcnkpCi0gICAgLCBtX2lzb0FsaWduZWRNZW1v
cnlBbGxvY2F0b3Ioc3RkOjptYWtlX3VuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigp
KQorICAgICwgbV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvcj4oKSkKIHsKICAgICBpbml0aWFsaXplKGhlYXBDZWxsVHlwZSwgbV9p
c29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTZXQuY3BwCmluZGV4IGIzYWJkMmM1MjI0
ZmNlM2U1Y2UxMmM0ZjE2M2VkNDgyM2RhZTY5OGUuLjE3ODBjMDhhNDcwZjI3NjIzMTYzN2VmNjgx
MTdjOWE0ZTMyYzFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtpbmdDb25zdHJhaW50U2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJraW5nQ29uc3RyYWludFNldC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNYXJraW5nQ29u
c3RyYWludFNldDo6ZGlkU3RhcnRNYXJraW5nKCkKIAogdm9pZCBNYXJraW5nQ29uc3RyYWludFNl
dDo6YWRkKENTdHJpbmcgYWJicmV2aWF0ZWROYW1lLCBDU3RyaW5nIG5hbWUsIDo6RnVuY3Rpb248
dm9pZChTbG90VmlzaXRvciYpPiBmdW5jdGlvbiwgQ29uc3RyYWludFZvbGF0aWxpdHkgdm9sYXRp
bGl0eSwgQ29uc3RyYWludENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5LCBDb25zdHJhaW50UGFyYWxs
ZWxpc20gcGFyYWxsZWxpc20pCiB7Ci0gICAgYWRkKHN0ZDo6bWFrZV91bmlxdWU8U2ltcGxlTWFy
a2luZ0NvbnN0cmFpbnQ+KFdURk1vdmUoYWJicmV2aWF0ZWROYW1lKSwgV1RGTW92ZShuYW1lKSwg
V1RGTW92ZShmdW5jdGlvbiksIHZvbGF0aWxpdHksIGNvbmN1cnJlbmN5LCBwYXJhbGxlbGlzbSkp
OworICAgIGFkZChtYWtlVW5pcXVlPFNpbXBsZU1hcmtpbmdDb25zdHJhaW50PihXVEZNb3ZlKGFi
YnJldmlhdGVkTmFtZSksIFdURk1vdmUobmFtZSksIFdURk1vdmUoZnVuY3Rpb24pLCB2b2xhdGls
aXR5LCBjb25jdXJyZW5jeSwgcGFyYWxsZWxpc20pKTsKIH0KIAogdm9pZCBNYXJraW5nQ29uc3Ry
YWludFNldDo6YWRkKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCmluZGV4IDgyYmUzYmJi
NDRjYjZjNTc3NmI4ZWNmN2ZhMGM5NDBkNWQ1YTU4MjUuLjUzYTkxYTIzYzFkODkyOTE4ZWU0Mjk0
MWE2NWY1Mjc4NjdkNDMzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3MKIAogICAgIFN0cmluZyBtZXNzYWdl
OwogICAgIGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwotICAg
IG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNz
YWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIGV4ZWMpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRk
TWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBl
eGVjKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpjb3VudChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKICAgICAgICAgICAgIGlmIChleGlzdGluZ1RpdGxlID09IHRpdGxl
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRl
bmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRp
dGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtl
U3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAg
ICAgICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91
bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VU
eXBlOjpQcm9maWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICAgICAg
ICAgICAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJv
ZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmIHRpdGwKIAogICAgIC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhl
IGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5p
c0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3QiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwi
IiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIpOwotICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VT
b3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kLCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIHdhcm5pbmcpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29u
c29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJ
LCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5n
KSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzdGFydENvbnNvbGVQ
cm9maWxlKCkKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNs
aWVudDo6c2NyZWVuc2hvdChFeGVjU3RhdGUqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKQogdm9p
ZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Ondhcm5VbmltcGxlbWVudGVkKGNvbnN0IFN0
cmluZyYgbWV0aG9kKQogewogICAgIFN0cmluZyBtZXNzYWdlID0gbWV0aG9kICsgIiBpcyBjdXJy
ZW50bHkgaWdub3JlZCBpbiBKYXZhU2NyaXB0IGNvbnRleHQgaW5zcGVjdGlvbi4iOwotICAgIG1f
Y29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29s
ZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSkpOworICAgIG1fY29uc29sZUFnZW50LT5hZGRN
ZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVz
c2FnZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjOGRhNTJlZmQxM2M0OTFjY2FlNjM5NWUwNzRj
NDY0NGU3MGNjMGE3Li5iZGJkMzFkNjMxMmIyYzA1NmQ3YzQ3ODE1ZGM2MTVkMTIyNmQ5MjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC02Myw3ICs2Myw3
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXI6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQotICAgICwg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmplY3RlZFNjcmlwdE1h
bmFnZXI+KCp0aGlzLCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKKyAgICAsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKG1ha2VVbmlxdWU8SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhp
cywgSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUoKSkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3
YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQogICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihnbG9i
YWxPYmplY3QpCiAgICAgLCBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUo
KSkKQEAgLTcxLDExICs3MSwxMSBAQCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcihKU0dsb2JhbE9iagogewogICAgIGF1
dG8gY29udGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250ZXh0KTsKKyAgICBh
dXRvIGNvbnNvbGVBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQ29uc29sZUFnZW50Pihjb250
ZXh0KTsKICAgICBtX2NvbnNvbGVBZ2VudCA9IGNvbnNvbGVBZ2VudC5nZXQoKTsKICAgICBtX2Fn
ZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIAotICAgIG1fY29uc29sZUNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50PihtX2NvbnNv
bGVBZ2VudCk7CisgICAgbV9jb25zb2xlQ2xpZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQ+KG1fY29uc29sZUFnZW50KTsKIAogICAgIG1fZXhlY3V0aW9uU3RvcHdh
dGNoLT5zdGFydCgpOwogfQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZXBvcnRBUElFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBF
eGNlCiAgICAgICAgICAgICBDb25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UsIFN0cmluZygpLCAwLCAwKTsKICAgICB9CiAKLSAgICBtX2NvbnNvbGVBZ2VudC0+
YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJy
b3JNZXNzYWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRk
TWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdl
LCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogQ29uc29sZUNsaWVudCogSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjpjb25zb2xlQ2xpZW50KCkgY29uc3QKQEAgLTI4MCw3ICsy
ODAsNyBAQCBJbnNwZWN0b3JBZ2VudCYgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
OjplbnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckFnZW50KSB7
CiAgICAgICAgIGF1dG8gY29udGV4dCA9IGpzQWdlbnRDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8g
aW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50Pihjb250ZXh0
KTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JBZ2VudCA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yQWdl
bnQ+KGNvbnRleHQpOwogICAgICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnQu
Z2V0KCk7CiAgICAgICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50KSk7
CiAgICAgfQpAQCAtMjkxLDcgKzI5MSw3IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQmIEpTR2xv
YmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlRGVidWdnZXJBZ2VudCgpCiB7CiAg
ICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0ganNBZ2Vu
dENvbnRleHQoKTsKLSAgICAgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsK
KyAgICAgICAgYXV0byBkZWJ1Z2dlckFnZW50ID0gbWFrZVVuaXF1ZTxKU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQ+KGNvbnRleHQsIG1fY29uc29sZUFnZW50KTsKICAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50ID0gZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICAgICAgbV9jb25zb2xlQ2xpZW50LT5z
ZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KG1fZGVidWdnZXJBZ2VudCk7CiAgICAgICAgIG1fYWdl
bnRzLmFwcGVuZChXVEZNb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKQEAgLTMyNywyMCArMzI3LDIwIEBA
IHZvaWQgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVMYXp5QWdlbnRz
KCkKIAogICAgIGVuc3VyZUluc3BlY3RvckFnZW50KCk7CiAKLSAgICBtX2FnZW50cy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4oY29udGV4dCkpOwor
ICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50
Pihjb250ZXh0KSk7CiAKICAgICBlbnN1cmVEZWJ1Z2dlckFnZW50KCk7CiAKLSAgICBhdXRvIHNj
cmlwdFByb2ZpbGVyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclNjcmlwdFBy
b2ZpbGVyQWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8gc2NyaXB0UHJvZmlsZXJBZ2VudFB0ciA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCk7CiAgICAg
bV9jb25zb2xlQ2xpZW50LT5zZXRJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFBy
b2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlw
dFByb2ZpbGVyQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gaGVhcEFnZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JIZWFwQWdlbnQ+KGNvbnRleHQpOworICAgIGF1dG8gaGVhcEFnZW50ID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3JIZWFwQWdlbnQ+KGNvbnRleHQpOwogICAgIGlmIChtX2NvbnNv
bGVBZ2VudCkKICAgICAgICAgbV9jb25zb2xlQWdlbnQtPnNldEluc3BlY3RvckhlYXBBZ2VudCho
ZWFwQWdlbnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGhlYXBBZ2VudCkp
OwogCi0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9iYWxPYmplY3RB
dWRpdEFnZW50Pihjb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SlNH
bG9iYWxPYmplY3RBdWRpdEFnZW50Pihjb250ZXh0KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGMwYjVjOWFhZDE4YzA4Y2VkZGMzNjk2NmJm
MDQ2ODUxNDE3NjI2NDMuLjQxN2U3NzVmYjgwMjQ5YzA0MDMxMzdhODI3ODIxMzczMjdkMzMyYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiBJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQoQWdlbnRDb250ZXh0JiBjb250ZXh0
KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJJbnNwZWN0b3IiX3MpCiAgICAgLCBtX2Vudmly
b25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3Bl
Y3RvckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29u
dGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmNwcAppbmRleCA3ZWRiYzgwNjYwZjM2ZDZhODFhYTkxZmI4ZmEzZmRkZGVkYWU2ZjI2
Li41ZDI0YzY5ZTZiZjQ1ZDcyZmIwYmRhNTNiNGM0NTc1OTg2MTNjYmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIGNvbnN0IGludCBl
eHBpcmVDb25zb2xlTWVzc2FnZXNTdGVwID0gMTA7CiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6Oklu
c3BlY3RvckNvbnNvbGVBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoIkNvbnNvbGUiX3MpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihj
b250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPENvbnNv
bGVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9i
YWNrZW5kRGlzcGF0Y2hlcihDb25zb2xlQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgbGFiZQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlv
bj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVs
LCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKLSAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6
Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBN
ZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIGNyZWF0
ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKKyAgICAgICAgYWRkTWVzc2Fn
ZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25z
b2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5p
bmcsIGNyZWF0ZVNjcmlwdENhbGxTdGFja0ZvckNvbnNvbGUoZXhlYywgMSkpKTsKICAgICB9CiB9
CiAKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpsb2dU
aW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwsCiAgICAgaWYg
KGl0ID09IG1fdGltZXMuZW5kKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0
byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAgICAgU3RyaW5nIHdhcm5pbmcg
PSBtYWtlU3RyaW5nKCJUaW1lciBcIiIsIGxhYmVsLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKLSAg
ICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdl
PihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgICAgICBh
ZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpUaW1pbmcsIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
Zywgd2FybmluZywgV1RGTW92ZShjYWxsU3RhY2spKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSA9IGl0LT52YWx1ZTsKICAgICBTZWNvbmRz
IGVsYXBzZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZTsKICAgICBTdHJpbmcg
bWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRX
aWR0aChlbGFwc2VkLm1pbGxpc2Vjb25kcygpLCAzKSwgIm1zIik7Ci0gICAgYWRkTWVzc2FnZVRv
Q29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNz
YWdlLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFdURk1vdmUoY2FsbFN0YWNrKSkpOworICAgIGFkZE1l
c3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWVz
c2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFN0cmluZyYgbGFiZWwpCkBAIC0xODQsMTQgKzE4NCwxNCBAQCB2b2lkIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbAogICAgIGlmIChpdCA9PSBtX3RpbWVzLmVuZCgpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/CiAgICAg
ICAgIFN0cmluZyB3YXJuaW5nID0gbWFrZVN0cmluZygiVGltZXIgXCIiLCBsYWJlbCwgIlwiIGRv
ZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OlRpbWluZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5nLCBXVEZNb3ZlKGNhbGxT
dGFjaykpKTsKKyAgICAgICAgYWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcsIFdURk1vdmUoY2FsbFN0YWNrKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUgPSBpdC0+
dmFsdWU7CiAgICAgU2Vjb25kcyBlbGFwc2VkID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFy
dFRpbWU7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKGxhYmVsLCAiOiAiLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkV2lkdGgoZWxhcHNlZC5taWxsaXNlY29uZHMoKSwgMyksICJtcyIp
OwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlRpbWluZywgTWVzc2Fn
ZUxldmVsOjpEZWJ1ZywgbWVzc2FnZSwgV1RGTW92ZShjYWxsU3RhY2spKSk7CisgICAgYWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6VGltaW5nLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBtZXNz
YWdlLCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKIAogICAgIG1fdGltZXMucmVtb3ZlKGl0KTsKIH0K
QEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiAgICAgLy8gRklYTUU6IFdl
YiBJbnNwZWN0b3Igc2hvdWxkIGhhdmUgYSBiZXR0ZXIgVUkgZm9yIGNvdW50ZXJzLCBidXQgZm9y
IG5vdyB3ZSBqdXN0IGxvZyBhbiB1cGRhdGVkIGNvdW50ZXIgdmFsdWUuCiAKICAgICBTdHJpbmcg
bWVzc2FnZSA9IG1ha2VTdHJpbmcobGFiZWwsICI6ICIsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUp
OwotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpEZWJ1ZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVj
LCAxKSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2Fn
ZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxl
dmVsOjpEZWJ1ZywgbWVzc2FnZSwgY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVj
LCAxKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKQEAgLTIzNiw3ICsyMzYsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbAogICAgIGlmIChpdCA9PSBtX2NvdW50cy5lbmQoKSkg
ewogICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9j
YWxpemF0aW9uPwogICAgICAgICBTdHJpbmcgd2FybmluZyA9IG1ha2VTdHJpbmcoIkNvdW50ZXIg
XCIiLCBsYWJlbCwgIlwiIGRvZXMgbm90IGV4aXN0Iik7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0Nv
bnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29u
c29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3YXJuaW5n
LCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CisgICAgICAgIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCB3
YXJuaW5nLCBjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5k
ZXggZTVmMjQ4MmEzY2FhMDhhYTgxNjQ1ZmE4Yzc5YzUyOWJhNDM4MGQwYS4uMjVmMWQzZTcyODFj
NmIwZmI4MzMwZmYxMzc4NzM2NDNlYmM2MGVkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJy
ZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW8KIAogSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRlYnVnZ2VyIl9zKQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0
Y2hlcihtYWtlVW5pcXVlPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250
ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoRGVidWdnZXJCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwg
bV9zY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0LmVudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVy
KCkpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0
TWFuYWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IGI1MzVmZjYxOTJhYWNlZmM3
OWI0ZjZjZDkzZGYxMjAxYTM3MTQ4YWMuLjU4MmMzNWQzNjdkZmUxZTRmN2RjNGU5YTU2ODRkY2Ey
YTRlM2I0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtNDIsNyArNDIsNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIEluc3BlY3RvckhlYXBBZ2VudDo6SW5zcGVjdG9ySGVhcEFn
ZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSGVh
cCJfcykKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxI
ZWFwRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1f
ZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4oY29u
dGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEhlYXBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJv
ZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAppbmRleCA1NmZjMWI3OThkYTBlZWVlYTAy
MzMxZWQ1MjU0YTk1MDIxMDA1ODc0Li5jYmFkODFkNjk5NDQwYTczM2IwYWYwNDE2OTRhODZjYTll
NmU4ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5zcGVjdG9yU2NyaXB0
UHJvZmlsZXJBZ2VudDo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudChBZ2VudENvbnRleHQm
IGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIlNjcmlwdFByb2ZpbGVyIl9zKQot
ICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRQcm9maWxl
ckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPFNjcmlwdFByb2ZpbGVyRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
U2NyaXB0UHJvZmlsZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERp
c3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9lbnZpcm9ubWVudChjb250ZXh0LmVudmlyb25tZW50
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yVGFyZ2V0QWdlbnQuY3BwCmluZGV4IDNhY2E0MTA1MTBmZTUwMGYw
NWJmYmFhYzQ2N2ZmZGFjY2IyMWM1MjQuLjkzNTA2OGM3YWUxMTk3MTA1NDRjMWY3Njc5ODIyZGZi
NjZlNTZiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRhcmdldEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUYXJnZXRBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvclRhcmdldEFnZW50OjpJbnNwZWN0
b3JUYXJnZXRBZ2VudChGcm9udGVuZFJvdXRlciYgZnJvbnRlbmRSb3V0ZXIsIEJhY2tlbmREaXNw
YXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcikKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiVGFy
Z2V0Il9zKQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxUYXJn
ZXRGcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmRE
aXNwYXRjaGVyKG1ha2VVbmlxdWU8VGFyZ2V0RnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZFJv
dXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFRhcmdldEJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZTMyOWEzYjQzY2Q2MDk2NWQ5Zjc3ODVh
NDgyMjAxMWFiMzY2ZmE1My4uOWIzZjM3OWQ1ZTVhNDkwZGJlMzc1YzcyYWM5OWZhNzIwYjlhY2Nl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiBlCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdl
VG9Db25zb2xlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6
OkpTLCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkxvZywgbWVzc2FnZSwgY3JlYXRl
U2NyaXB0Q2FsbFN0YWNrKCZzdGF0ZSksIDApKTsKKyAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNj
cmlwdENhbGxTdGFjaygmc3RhdGUpLCAwKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNH
bG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCmluZGV4IDE0NWQwNTE2
YjhlMzk2ODg3OGQ5MmNiNTk0YWE1OTliYWZhMzlkMzIuLjNiN2MzZTIxZDMxYzFjMmY1YjZkMWJh
MGMxNmY0ODg4M2U2Y2YzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50OjpKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChKU0FnZW50Q29u
dGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvclJ1bnRpbWVBZ2VudChjb250ZXh0KQotICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxSdW50aW1lRnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKG1ha2VVbmlxdWU8UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9u
dGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFJ1bnRpbWVCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwg
bV9nbG9iYWxPYmplY3QoY29udGV4dC5pbnNwZWN0ZWRHbG9iYWxPYmplY3QpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAppbmRl
eCA3MTAxNjY4YTk3Yzg3NDQ4MTJmNDY1NmYxNmUwYjdkZDU5NGYxYTYwLi5jYzk2NDAwNTY3OWRi
ZmNkNGZlMDI5MDZiYzkzYzIzYjJjODJlY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKQEAgLTE0NCwxMSArMTQ0LDExIEBA
IE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNy
ZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tlCiAKICAgICBTb2NrZXQ6OnNldHVwKHNvY2tldCk7CiAK
LSAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNvY2tldDo6Q29ubmVjdGlv
bj4oKTsKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFNvY2tldDo6Q29ubmVjdGlv
bj4oKTsKIAogICAgIGNvbm5lY3Rpb24tPnBvbGwgPSBTb2NrZXQ6OnByZXBhcmVQb2xsaW5nKHNv
Y2tldCk7CiAgICAgY29ubmVjdGlvbi0+c29ja2V0ID0gc29ja2V0OwotICAgIGNvbm5lY3Rpb24t
PnBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVBhcnNlcj4oaWQsIFNvY2tldDo6QnVm
ZmVyU2l6ZSk7CisgICAgY29ubmVjdGlvbi0+cGFyc2VyID0gbWFrZVVuaXF1ZTxNZXNzYWdlUGFy
c2VyPihpZCwgU29ja2V0OjpCdWZmZXJTaXplKTsKICAgICBjb25uZWN0aW9uLT5wYXJzZXItPnNl
dERpZFBhcnNlTWVzc2FnZUxpc3RlbmVyKFt0aGlzXShDb25uZWN0aW9uSUQgaWQsIFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpIHsKICAgICAgICAgaWYgKG1faW5zcGVjdG9yQ2xpZW50KQogICAgICAg
ICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmRpZFJlY2VpdmVXZWJJbnNwZWN0b3JFdmVudChpZCwg
V1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludC5oCmluZGV4IDcwZjJkN2E0ODEzNDcwZjgxMzczMmIzYjk3N2I1YjczYTQx
OTYwYjUuLjMyMDQwMGZkNWIzY2RiMmM0YjE1ZGJkYzkzMDQ2YmJmZDAwY2FkYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5oCkBAIC00
Nyw3ICs0Nyw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50PiBjcmVhdGUoUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudCogaW5zcGVjdG9yQ2xpZW50LCBjb25zdCBjaGFyKiBuYW1lKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ+KGlu
c3BlY3RvckNsaWVudCwgbmFtZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50PihpbnNwZWN0b3JDbGllbnQsIG5hbWUpOwogICAgIH0KIAog
ICAgIFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50KFJlbW90ZUluc3BlY3RvckNvbm5lY3Rp
b25DbGllbnQqLCBjb25zdCBjaGFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggMzVmZTRhYmIyYmFlYzJmMTQ5NTY2MTU2NjNjYTZj
NTBhNmI5Mjk1MS4uY2MyYjU2NjFiZTFiNTJiNmYzZDM4NDU5ZmM2MzZmYzkyMjNhNmUyZSAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAt
MTM5LDggKzEzOSw4IEBAIGNsYXNzIE9iakNHZW5lcmF0b3JUZW1wbGF0ZXM6CiAgICAgW18ke3Zh
cmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyIHJlbGVhc2VdOwogICAgIF8ke3ZhcmlhYmxlTmFtZVBy
ZWZpeH1IYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvciR7ZG9tYWluTmFtZX1CYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8JHtkb21haW5OYW1lfUJhY2tl
bmREaXNwYXRjaGVyLCBBbHRlcm5hdGUke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+Pigi
JHtkb21haW5OYW1lfSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNo
ZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNw
ZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8g
YWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7
ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tl
bmREaXNwYXRjaGVyPj4oIiR7ZG9tYWluTmFtZX0iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQo
V1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25z
LXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1w
bGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCBhMThlODJkOWYzZmUwNjFmNDJkMGI4MDI4ODQ3YTc1
N2E3ODBjZGJkLi4zNDk3NTkyMTMwMzcxNGMzMWIzNGViMDIwZDFjZGY3ZTE1Y2FlY2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxs
L2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0
ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTc3Miw4ICs3
NzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIg
cmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rv
ck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29y
a0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+Pigi
TmV0d29yayJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsK
KyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsi
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2Nv
bnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5l
cmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0Cmlu
ZGV4IDIyNDFkZjZhYmEzNjBjYTdmNmVmZjNiY2NmMGE1MzE2ZmFkY2QzMjYuLjdlYmEwMTY5NGIw
ODg0ZDJiYjcxMGNhNDFkMTkzZDQxNzYxN2EzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0xMTkwLDggKzExOTAsOCBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZGF0YWJhc2VIYW5kbGVyIHJlbGVhc2VdOwog
ICAgIF9kYXRhYmFzZUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRl
cm5hdGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KCJEYXRhYmFz
ZSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0g
bWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNw
YXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRhdGFiYXNlIl9z
LCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250
cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJl
dHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDQ5ZTBiNDVlNjE4NTZkOGViY2JkNTYw
ZDI3NDEwNGFkZWZiZDEwNWQuLmRmZmY1NDIyNmM5MTc3ZDhhMDExMzAwYzQ4NmZhNGZiNDE5NWM4
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4t
cGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEwNjksOCArMTA2OSw4IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19kYXRhYmFzZUhhbmRsZXIgcmVsZWFz
ZV07CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRv
IGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPj4oIkRh
dGFiYXNlIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwor
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJh
c2UiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAg
X2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvZG9tYWluLWF2YWlsYWJpbGl0eS5qc29uLXJlc3VsdAppbmRleCBlOTE3MzVjNWI2ZWMz
NzRiMGMzZDk2Mjk2Njg1ZDhhYzc4NDhiMWUyLi4wZGZiMzIxNTFjYWVkODdlNWUyNDZiN2RlYTJk
OTdkYmM2NjY3YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW4tYXZhaWxhYmlsaXR5Lmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbi1hdmFpbGFiaWxpdHkuanNvbi1yZXN1bHQKQEAgLTc4
NCw4ICs3ODQsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtfZG9tYWluQUhh
bmRsZXIgcmVsZWFzZV07CiAgICAgX2RvbWFpbkFIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsK
IAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0lu
c3BlY3RvckRvbWFpbkFCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRl
cm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8
RG9tYWluQUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21haW5BQmFja2VuZERpc3BhdGNo
ZXI+PigiRG9tYWluQSJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNo
ZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNw
ZWN0b3JEb21haW5BQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJu
YXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkFC
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQUJhY2tlbmREaXNwYXRjaGVyPj4oIkRv
bWFpbkEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAg
ICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkp
OwogfQogCkBAIC04MDIsOCArODAyLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAg
ICBbX2RvbWFpbkJIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9kb21haW5CSGFuZGxlciA9IFtoYW5k
bGVyIHJldGFpbl07CiAKLSAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5CQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwot
ICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PERvbWFpbkJCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9tYWluQkJh
Y2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbkIiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRl
cm5hdGVEaXNwYXRjaGVyKSk7CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVu
aXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQkJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKKyAg
ICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVB
Z2VudDxEb21haW5CQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJCYWNrZW5kRGlz
cGF0Y2hlcj4+KCJEb21haW5CIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlz
cGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0
ZXJuYXRlQWdlbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlp
bmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5n
LWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5kZXggYmI1Mjk0YTgyMTkyNTIzZDA4MzMxYTkw
YTIyYzRjNjk4NGY4Y2EzNS4uMmJlNzMwOTI4OTMzOWEyNTkwYTM3N2YxMjY4NGQ5ZmQ0YzYzMjcw
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVz
Lmpzb24tcmVzdWx0CkBAIC0xMDQxLDggKzEwNDEsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIFtfbmV0d29yazFIYW5kbGVyIHJlbGVhc2VdOwogICAgIF9uZXR3b3JrMUhhbmRs
ZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCi0gICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJu
YXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3b3JrMSJfcywgKl9jb250cm9sbGVy
LCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3Bh
dGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVy
PihoYW5kbGVyKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVO
ZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdU
Rk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRy
YUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIApAQCAtMTA1OSw4ICsxMDU5LDgg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBbX25ldHdvcmszSGFuZGxlciByZWxl
YXNlXTsKICAgICBfbmV0d29yazNIYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1
dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5l
dHdvcmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+Pigi
TmV0d29yazMiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7
CisgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9y
TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CisgICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazNCYWNr
ZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcj4+KCJOZXR3
b3JrMyJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKICAg
ICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQv
ZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggYzBiM2NjOTUyODY2MzY0M2E3NjVmNWYzZWU4
ODczYjE1ZTQzNjk4Mi4uNzlhYTljZTVhZDg2YzFlNjk4OTIwZjIwNDI1ZjdjNDcwOWZhNDhhMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZW51
bS12YWx1ZXMuanNvbi1yZXN1bHQKQEAgLTgxNiw4ICs4MTYsOCBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogICAgIFtfY29tbWFuZERvbWFpbkhhbmRsZXIgcmVsZWFzZV07CiAgICAgX2Nv
bW1hbmREb21haW5IYW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3RvckNvbW1hbmREb21h
aW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9
IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8Q29tbWFuZERvbWFp
bkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNo
ZXI+PigiQ29tbWFuZERvbWFpbiJfcywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURp
c3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9i
akNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAg
IGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFn
ZW50PENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFp
bkJhY2tlbmREaXNwYXRjaGVyPj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RG
TW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJh
QWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9n
ZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9n
ZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggMzFk
YmM4Yzk5OGI1YzE0MTE1MDg2MjRjNGMyOGI2NmY4MWUxOGM4MS4uNTEwZTE3NWNjYzJmM2MwYzY0
YTJlNjUwY2M2ODJjNTQ3NGJiNGZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlu
cy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVyYXRlLWRv
bWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAtNzk5LDggKzc5OSw4IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgW19uZXR3b3JrMUhhbmRsZXIgcmVsZWFz
ZV07CiAgICAgX25ldHdvcmsxSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07CiAKLSAgICBhdXRv
IGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3
b3JrMUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJh
Y2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5l
dHdvcmsxIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwor
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29y
azEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAg
X2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9l
eHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAppbmRleCBh
MThlODJkOWYzZmUwNjFmNDJkMGI4MDI4ODQ3YTc1N2E3ODBjZGJkLi4zNDk3NTkyMTMwMzcxNGMz
MWIzNGViMDIwZDFjZGY3ZTE1Y2FlY2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgt
bWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxh
dGZvcm0uanNvbi1yZXN1bHQKQEAgLTc3Miw4ICs3NzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogICAgIFtfbmV0d29ya0hhbmRsZXIgcmVsZWFzZV07CiAgICAgX25ldHdvcmtIYW5k
bGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAotICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlcj4o
aGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29ya0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5h
dGVOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yayJfcywgKl9jb250cm9sbGVyLCBX
VEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNo
ZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+KGhh
bmRsZXIpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURp
c3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29y
a0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQo
V1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggODM0MmU1ZmM1ZWZjYTI4NDlkZmQxMmRiN2FhNGFiNDk4MmI2MWZlOC4uZWY5MDY2OTQz
MGJiMTI2ZTY4OWJiYzdiZmZhOWJiMGY1NDQ3MzNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtNjU0LDcgKzY1NCw3IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91dExpbmtpbmco
SklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWShP
cHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSB8fCAobV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVy
ICYmIE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKSkpCi0gICAgICAg
IG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxKSVREaXNhc3NlbWJsZXI+KG1fY29k
ZUJsb2NrKTsKKyAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBtYWtlVW5pcXVlPEpJVERpc2Fzc2Vt
Ymxlcj4obV9jb2RlQmxvY2spOwogICAgIGlmIChVTkxJS0VMWShtX3ZtLT5tX3BlckJ5dGVjb2Rl
UHJvZmlsZXIpKSB7CiAgICAgICAgIG1fY29tcGlsYXRpb24gPSBhZG9wdFJlZigKICAgICAgICAg
ICAgIG5ldyBQcm9maWxlcjo6Q29tcGlsYXRpb24oCkBAIC05MDEsNyArOTAxLDcgQEAgQ29tcGls
YXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdp
bk1hcEJ1aWxkZXIuZGlkQnVpbGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQ
Q1RvQ29kZU9yaWdpbk1hcChzdGQ6Om1ha2VfdW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZN
b3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsKKyAgICAgICAg
bV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmln
aW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikp
OwogICAgIAogICAgIENvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmVzdWx0ID0gRklOQUxJWkVfQ09E
RSgKICAgICAgICAgcGF0Y2hCdWZmZXIsIEpTRW50cnlQdHJUYWcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggMTZiZjcwZDgwMTc0NDIzMDUwMmEyZDhiMTk3Y2Q0
MDFjODAyNGYzOC4uNWJkZjgzMDQ2NTA0Mzk5NGUxMWJhZmZlZDUyYmI3ODVjMWJhMGE2MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtMzcsNyArMzcsNyBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKIEpJVFRodW5rczo6SklUVGh1bmtzKCkKLSAgICA6IG1faG9zdEZ1
bmN0aW9uU3R1Yk1hcChzdGQ6Om1ha2VfdW5pcXVlPEhvc3RGdW5jdGlvblN0dWJNYXA+KCkpCisg
ICAgOiBtX2hvc3RGdW5jdGlvblN0dWJNYXAobWFrZVVuaXF1ZTxIb3N0RnVuY3Rpb25TdHViTWFw
PigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMzg4
ZmIwZTYyNzA4YjM0ZWNiOTcxZTk0NmI0NmIxOTNjNGNhZTNiLi44ZjlhODY0ZTRmZTg2MjZhMWZl
ZmMwYzMwN2M5ZTQ2NTY2MmY1YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKQEAgLTEwOTIsNyArMTA5Miw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q2FsbEZyYW1lU2h1ZmZsZXI+IGZyYW1lU2h1ZmZsZXI7CiAgICAgaWYg
KGNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKGNhbGxM
aW5rSW5mby5pc1RhaWxDYWxsKCkpOwotICAgICAgICBmcmFtZVNodWZmbGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxDYWxsRnJhbWVTaHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNo
dWZmbGVEYXRhKCkpOworICAgICAgICBmcmFtZVNodWZmbGVyID0gbWFrZVVuaXF1ZTxDYWxsRnJh
bWVTaHVmZmxlcj4oc3R1YkppdCwgKmNhbGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBj
aGVja2VkIHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNlbGwsIGFuZCB3ZSBjYW4KICAgICAgICAgLy8g
dXNlIHRoZSBhZGRpdGlvbmFsIHJlZ2lzdGVyIHRoaXMgYnV5cyB1cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKaW5kZXggNDFmMmIyYzdmZjY5M2JhYzQ4YmEwMzk0MWU4ZWRkYjA2ZDYyOTBiMS4uODVlYjRk
OWI5ODZjMjllMWExYjEwZDJlZDNkOTJlMDAxOGVjYTBmNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
QEAgLTI5NjksNyArMjk2OSw3IEBAIGludCBydW5KU0MoY29uc3QgQ29tbWFuZExpbmUmIG9wdGlv
bnMsIGJvb2wgaXNXb3JrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgICAgIEpTTG9ja0hvbGRl
ciBsb2NrZXIodm0pOwogCiAgICAgICAgIGlmIChvcHRpb25zLm1fcHJvZmlsZSAmJiAhdm0ubV9w
ZXJCeXRlY29kZVByb2ZpbGVyKQotICAgICAgICAgICAgdm0ubV9wZXJCeXRlY29kZVByb2ZpbGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9maWxlcjo6RGF0YWJhc2U+KHZtKTsKKyAgICAgICAgICAg
IHZtLm1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG1ha2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNl
Pih2bSk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0s
IEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIG9wdGlvbnMubV9h
cmd1bWVudHMpOwogICAgICAgICBnbG9iYWxPYmplY3QtPnNldFJlbW90ZURlYnVnZ2luZ0VuYWJs
ZWQob3B0aW9ucy5tX2VuYWJsZVJlbW90ZURlYnVnZ2luZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGQzMDlhMDNhYmVmODM1YzA1MjQ4YTgwNzUzNzFlYWEx
NmU3ZDhiZi4uMTZlNjM3NDM2MGQ5OGQ4N2Q1NzQ5MmFhYjljZWE0NTRkZTZiMWEzMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFBh
cnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEpTUGFyc2VyQnVpbHRpbk1vZGUKICAgICAsIG1faW1tZWRpYXRlUGFyZW50QWxsb3dzRnVuY3Rp
b25EZWNsYXJhdGlvbkluU3RhdGVtZW50KGZhbHNlKQogICAgICwgbV9kZWJ1Z2dlclBhcnNlRGF0
YShkZWJ1Z2dlclBhcnNlRGF0YSkKIHsKLSAgICBtX2xleGVyID0gc3RkOjptYWtlX3VuaXF1ZTxM
ZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSwgc2NyaXB0TW9kZSk7CisgICAgbV9sZXhlciA9IG1h
a2VVbmlxdWU8TGV4ZXJUeXBlPih2bSwgYnVpbHRpbk1vZGUsIHNjcmlwdE1vZGUpOwogICAgIG1f
bGV4ZXItPnNldENvZGUoc291cmNlLCAmbV9wYXJzZXJBcmVuYSk7CiAgICAgbV90b2tlbi5tX2xv
Y2F0aW9uLmxpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKTsKICAgICBtX3Rv
a2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDY5YWEwYmMxOTBhZjY3ODNkODkyOGMz
NTlhYTNiMTBiYjFmYmQ4NzMuLjBhNWVkZTRiODQyNWNmZDFiMzE3Yzc2YzUxZWE3Mzc4MTc4MGI1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjA0LDcgKzIwNCw3
IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgdm9pZCBwdXNoTGFiZWwoY29uc3QgSWRlbnRpZmllciog
bGFiZWwsIGJvb2wgaXNMb29wKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xhYmVscykKLSAgICAg
ICAgICAgIG1fbGFiZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxMYWJlbFN0YWNrPigpOworICAgICAg
ICAgICAgbV9sYWJlbHMgPSBtYWtlVW5pcXVlPExhYmVsU3RhY2s+KCk7CiAgICAgICAgIG1fbGFi
ZWxzLT5hcHBlbmQoU2NvcGVMYWJlbEluZm8geyBsYWJlbC0+aW1wbCgpLCBpc0xvb3AgfSk7CiAg
ICAgfQogCkBAIC0xOTQxLDcgKzE5NDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAg
ICAgICBlbmRMb2NhdGlvbi5saW5lU3RhcnRPZmZzZXQgPSBtX2xleGVyLT5jdXJyZW50TGluZVN0
YXJ0T2Zmc2V0KCk7CiAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gbV9sZXhlci0+
Y3VycmVudE9mZnNldCgpOwogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSBlbmRMb2NhdGlv
bi5zdGFydE9mZnNldCAtIGVuZExvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKLSAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXJzZWROb2RlPihtX3BhcnNlckFyZW5hLAorICAgICAg
ICByZXN1bHQgPSBtYWtlVW5pcXVlPFBhcnNlZE5vZGU+KG1fcGFyc2VyQXJlbmEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydExvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5kTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFydENvbHVtbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyQXJlbmEuaAppbmRleCBkZjE3YmU1MzY2M2U3Y2I3YjcwYzQ4NzcwZjlhMDUyOWNm
MzNhN2VlLi40MTAwMDZkOTI3NTFjZTk2YjkyY2I5NjI1NjM1ZWE3Y2Y3OGVjNGQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xODAsNyArMTgwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElkZW50aWZpZXJBcmVuYSYgaWRlbnRpZmllckFy
ZW5hKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZICghbV9pZGVudGlmaWVy
QXJlbmEpKQotICAgICAgICAgICAgICAgIG1faWRlbnRpZmllckFyZW5hID0gc3RkOjptYWtlX3Vu
aXF1ZTxJZGVudGlmaWVyQXJlbmE+KCk7CisgICAgICAgICAgICAgICAgbV9pZGVudGlmaWVyQXJl
bmEgPSBtYWtlVW5pcXVlPElkZW50aWZpZXJBcmVuYT4oKTsKICAgICAgICAgICAgIHJldHVybiAq
bV9pZGVudGlmaWVyQXJlbmE7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCmluZGV4IDA1MDMyYjVk
MTMxMDhjMGViNjIwZTlkYWU4MjBjZWY3YWM3NTMxOGMuLjM1NzExYjVmYTY0MjY5ZTY3NzRhYjcw
ZTIxZGQ1MDI1MTY5YzhlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0
aW9uQ291bnRlciogQ29tcGlsYXRpb246OmV4ZWN1dGlvbkNvdW50ZXJGb3IoY29uc3QgT3JpZ2lu
U3RhY2smIG9yaWdpbikKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhlY3V0aW9uQ291bnRlcj4m
IGNvdW50ZXIgPSBtX2NvdW50ZXJzLmFkZChvcmlnaW4sIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKICAgICBpZiAoIWNvdW50ZXIpCi0gICAgICAgIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV4ZWN1dGlvbkNvdW50ZXI+KCk7CisgICAgICAgIGNvdW50ZXIgPSBtYWtlVW5pcXVlPEV4ZWN1
dGlvbkNvdW50ZXI+KCk7CiAKICAgICByZXR1cm4gY291bnRlci5nZXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCA3MGM3MTQ3MzMyNDQ0MDgwNzg3OTM0
MDE5ODY2NzNjOTdlMWVhODNkLi5hNjRkZTNmZGQ2NjI1NTE4YWM1ZDEyNmNlYWM3OGI2ZjIxMjVh
NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0xNzQsNyAr
MTc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gZ2V0U3RhY2tUcmFj
ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBzaXplX3QgZnJhbWVzVG9Ta2lwID0gdXNlQ3VycmVudEZyYW1lID8gMCA6IDE7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPFN0YWNrRnJhbWU+PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdGFja0Zy
YW1lPj4oKTsKICAgICB2bS5pbnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShvYmosICpzdGFja1Ry
YWNlLCBmcmFtZXNUb1NraXAsIGdsb2JhbE9iamVjdC0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWUo
KSk7CiAgICAgaWYgKCFzdGFja1RyYWNlLT5pc0VtcHR5KCkpCiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoZXhlYywgZXhlYyA9PSB2bS50b3BDYWxsRnJhbWUgfHwgZXhlYy0+aXNHbG9iYWxFeGVjKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggNDM5ZTIwOWIwYTVmOGZiODI5Yjc5MTk3NTc0ODhjNDE1NjM0MjczZi4u
ZWYyZTgzMDg3NDFiODg1MmU1NjIzMjZmOTYyNTdjOWQwMjkzNWQzMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0x
MTAsNyArMTEwLDcgQEAgRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZy
b21HbG9iYWxDb2RlKAogRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgRnVuY3Rpb25FeGVj
dXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQogewogICAgIEFTU0VSVCghbV9yYXJlRGF0YSk7
Ci0gICAgYXV0byByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAg
YXV0byByYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgcmFyZURhdGEtPm1f
bGluZUNvdW50ID0gbGluZUNvdW50KCk7CiAgICAgcmFyZURhdGEtPm1fZW5kQ29sdW1uID0gZW5k
Q29sdW1uKCk7CiAgICAgcmFyZURhdGEtPm1fcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0ID0gcGFyYW1l
dGVyc1N0YXJ0T2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblJhcmVEYXRhLmgKaW5kZXggNDYyMzY0MWM1OThlM2ViYjVmYmE2YmMwMjM3MjY0ZTUw
NTJmZDE3OS4uNTJiMjhiMTNjN2UyZTI1ZDIxYmJiYWIzYWQzMWQ1YjZiYzBjZGVlNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAt
MTU2LDcgKzE1Niw3IEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGE6OkFsbG9jYXRpb25Qcm9maWxl
Q2xlYXJpbmdXYXRjaHBvaW50IGZpbmFsIDogcHVibGljIFdhdGNoCiBpbmxpbmUgV2F0Y2hwb2lu
dCogRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlQWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNo
cG9pbnQoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFoYXNBbGxvY2F0aW9uUHJvZmlsZUNsZWFy
aW5nV2F0Y2hwb2ludCgpKTsKLSAgICBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2lu
dD4odGhpcyk7CisgICAgbV9hbGxvY2F0aW9uUHJvZmlsZUNsZWFyaW5nV2F0Y2hwb2ludCA9IG1h
a2VVbmlxdWU8QWxsb2NhdGlvblByb2ZpbGVDbGVhcmluZ1dhdGNocG9pbnQ+KHRoaXMpOwogICAg
IHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlQ2xlYXJpbmdXYXRjaHBvaW50LmdldCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggMWE1N2VmM2RjZmU5MTllNzBiMzdmYTdlMzQ4NTRhMTNlOTA1M2ZhZS4uY2M4Nzc2N2Yx
MDhiY2M0ODNiMzE1ZjExMmZhOWM1MzQ3ZjUyMDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc3LDggKzQ3Nyw4IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fZGVidWdnZXIgPSAwOwogCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlcj4oKnRoaXMpOwotICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JDb250
cm9sbGVyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29u
dHJvbGxlcj4oKnRoaXMpOworICAgIG1faW5zcGVjdG9yRGVidWdnYWJsZSA9IG1ha2VVbmlxdWU8
SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlPigqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JEZWJ1Z2dh
YmxlLT5pbml0KCk7CiAgICAgbV9jb25zb2xlQ2xpZW50ID0gbV9pbnNwZWN0b3JDb250cm9sbGVy
LT5jb25zb2xlQ2xpZW50KCk7CiAjZW5kaWYKQEAgLTExNDUsNTcgKzExNDUsNTcgQEAgY2FwaXRh
bE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVG
bGFnID8gY2FwaXRhbE5hbWUKIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3Rv
dHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9hcnJheUl0ZXJhdG9y
UHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9h
cnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9y
UHJvdG90eXBlTmV4dCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9hcnJheUl0
ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90
eXBlTmV4dC0+aW5zdGFsbCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJy
YXlQcm90b3R5cGUoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAg
ICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludCk7CisgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQg
PSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludCk7CiAgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNo
cG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobWFwSXRlcmF0
b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgIG1fbWFwSXRl
cmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1f
bWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CiAgICAgICAgIG1f
bWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAgfQog
ICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBB
ZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX21hcFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9y
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9tYXBJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX21h
cEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1i
b2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0KIAogICAgIHsKICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNo
cG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0g
ICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dCk7CisgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IG1ha2VV
bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+KHRoaXMsIGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dCk7CiAgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFs
bCh2bSk7CiAgICAgfQogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1f
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICBtX3NldFByb3RvdHlw
ZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywg
Y29uZGl0aW9uLCBtX3NldEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9z
ZXRQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgIH0K
IAogICAgIHsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgbV9zdHJpbmdJdGVyYXRvclByb3RvdHlw
ZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBt
X3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdJdGVy
YXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0
aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKICAgICAgICAgbV9zdHJp
bmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAg
ICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFk
YXB0aXZlV2F0Y2hwb2ludChtX3N0cmluZ1Byb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5h
bWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBt
X3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zdHJpbmdQcm90
b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25k
aXRpb24sIG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwogICAgICAgICBtX3N0
cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAgICAg
fQogCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBz
ZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5zZXQpOwotICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRpb24sIG1fbWFwU2V0V2F0Y2hwb2ludCk7Cisg
ICAgICAgIG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMs
IGNvbmRpdGlvbiwgbV9tYXBTZXRXYXRjaHBvaW50KTsKICAgICAgICAgbV9tYXBQcm90b3R5cGVT
ZXRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1f
c2V0UHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmFkZCk7Ci0gICAgICAgIG1f
c2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNv
bmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uZGl0aW9uLCBtX3NldEFkZFdhdGNo
cG9pbnQpOwogICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0p
OwogICAgIH0KIApAQCAtMTIwNiw3ICsxMjA2LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
ICAgICAgICAgdGhpcy0+c3ltYm9sUHJvdG90eXBlKCk7CiAKICAgICAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJv
dG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKTsKLSAgICAgICAgbV9udW1iZXJQ
cm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBj
b25kaXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQ
cm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25kaXRp
b24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KTsKICAgICAgICAgbV9udW1iZXJQcm90b3R5
cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwodm0pOwogICAgICAgICBtX251bWJlclByb3Rv
VG9TdHJpbmdGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVy
UHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwog
ICAgIH0KQEAgLTE5MzIsMTAgKzE5MzIsMTAgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5z
dGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoRXhlY1N0YXRlKiBleGVjKQogICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2FycmF5U3BlY2llc1dhdGNocG9pbnQuaXNCZWluZ1dhdGNoZWQoKSk7CiAgICAg
bV9hcnJheVNwZWNpZXNXYXRjaHBvaW50LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMg
d2F0Y2hwb2ludC4iKTsKIAotICAgIG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9p
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBv
aW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25zdHJ1Y3RvckNvbmRpdGlvbiwgbV9h
cnJheVNwZWNpZXNXYXRjaHBvaW50KTsKKyAgICBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JX
YXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIG1f
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CiAgICAgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9y
V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CiAKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVz
V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24s
IG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCk7CisgICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2ll
c1dhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBzcGVjaWVzQ29uZGl0aW9uLCBtX2Fy
cmF5U3BlY2llc1dhdGNocG9pbnQpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRj
aHBvaW50LT5pbnN0YWxsKHZtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMDQ3YzE2NjUzZTcxYjFhODA2YmQ5ZmM3ZDU2NjQz
YTVmOTg4ZjExZS4uODQ1MzVjYTVjNjAwY2VjYmQ4YjQ3OGY2NWI1M2NkMDdlMzZhODM5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01
MjEsNyArNTIxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgewogICAgICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8SlNHbG9i
YWxPYmplY3RSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8SlNH
bG9iYWxPYmplY3RSYXJlRGF0YT4oKTsKICAgICB9CiAgICAgICAgIAogcHVibGljOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCmluZGV4IDFh
ZjAwMzY1M2NiOGMzZGU2NDNmOGM0OTEyN2FiYjNlNTUxM2Q1YWQuLjMyN2ZlZDA2YzY3YTViZjEx
MjUxZjlmNGRlZDgzOWU3MDMzYzhhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBKU1J1bkxv
b3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpzZXRSdW5Mb29wKE1hbmFnZXIqIG1hbmFnZXIs
IENGUnVuTG9vcFIKICNlbHNlCiBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6UGVyVk1EYXRhOjpQ
ZXJWTURhdGEoTWFuYWdlciYgbWFuYWdlcikKICAgICA6IHJ1bkxvb3AoJlJ1bkxvb3A6OmN1cnJl
bnQoKSkKLSAgICAsIHRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcDo6VGltZXI8TWFuYWdl
cj4+KCpydW5Mb29wLCAmbWFuYWdlciwgJkpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lckRp
ZEZpcmVDYWxsYmFjaykpCisgICAgLCB0aW1lcihtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPE1h
bmFnZXI+PigqcnVuTG9vcCwgJm1hbmFnZXIsICZKU1J1bkxvb3BUaW1lcjo6TWFuYWdlcjo6dGlt
ZXJEaWRGaXJlQ2FsbGJhY2spKQogewogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgdGlt
ZXItPnNldFByaW9yaXR5KFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6SmF2YXNjcmlwdFRpbWVyKTsK
QEAgLTE3Miw3ICsxNzIsNyBAQCBKU1J1bkxvb3BUaW1lcjo6TWFuYWdlciYgSlNSdW5Mb29wVGlt
ZXI6Ok1hbmFnZXI6OnNoYXJlZCgpCiAKIHZvaWQgSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnJl
Z2lzdGVyVk0oVk0mIHZtKQogewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UGVy
Vk1EYXRhPigqdGhpcyk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZTxQZXJWTURhdGE+KCp0
aGlzKTsKICNpZiBVU0UoQ0YpCiAgICAgZGF0YS0+c2V0UnVuTG9vcCh0aGlzLCB2bS5ydW5Mb29w
KCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlNYXBIYXNoVGFibGUuaAppbmRleCA1ZjA3OGQyYTUwOWQyYjQ0MjAwZjdhNGFmMzg4MTI0
NmNiMmQ1OGE3Li41MjkwMjBkZjBmMWRjMmEyODZmODAwYWJhZDlkN2ViN2QzZjhlZTk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRh
YmxlLmgKQEAgLTQ0OCw3ICs0NDgsNyBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgUHJvcGVydHlU
YWJsZTo6Z2V0RGVsZXRlZE9mZnNldCgpCiBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGRE
ZWxldGVkT2Zmc2V0KFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAgICBpZiAoIW1fZGVsZXRl
ZE9mZnNldHMpCi0gICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxQcm9wZXJ0eU9mZnNldD4+KCk7CisgICAgICAgIG1fZGVsZXRlZE9mZnNldHMgPSBtYWtl
VW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCk7CiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+
YXBwZW5kKG9mZnNldCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5VGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlUYWJsZS5jcHAKaW5kZXggNTllYzQxYzQ5YWU4MmY0N2Y2OTg2ODA2ZGQ2MTQzOTQ0
YTQyYjVkNi4uYjFiYjY3OTE5OTI2NWFmY2JjY2M4MzY1NmQ4ZDU2ZmM1YjRhMzU0NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIGNvbnN0IFBy
b3BlcnR5VGFibGUmIG90aGVyKQogICAgIC8vIENvcHkgdGhlIG1fZGVsZXRlZE9mZnNldHMgdmVj
dG9yLgogICAgIFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4qIG90aGVyRGVsZXRlZE9mZnNldHMgPSBv
dGhlci5tX2RlbGV0ZWRPZmZzZXRzLmdldCgpOwogICAgIGlmIChvdGhlckRlbGV0ZWRPZmZzZXRz
KQotICAgICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UHJv
cGVydHlPZmZzZXQ+Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CisgICAgICAgIG1fZGVsZXRlZE9m
ZnNldHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxQcm9wZXJ0eU9mZnNldD4+KCpvdGhlckRlbGV0ZWRP
ZmZzZXRzKTsKIH0KIAogUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2ln
bmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCkBAIC0xMDcs
NyArMTA3LDcgQEAgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShWTSYgdm0sIHVuc2lnbmVk
IGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWIKICAgICAvLyBDb3B5IHRoZSBtX2Rl
bGV0ZWRPZmZzZXRzIHZlY3Rvci4KICAgICBWZWN0b3I8UHJvcGVydHlPZmZzZXQ+KiBvdGhlckRl
bGV0ZWRPZmZzZXRzID0gb3RoZXIubV9kZWxldGVkT2Zmc2V0cy5nZXQoKTsKICAgICBpZiAob3Ro
ZXJEZWxldGVkT2Zmc2V0cykKLSAgICAgICAgbV9kZWxldGVkT2Zmc2V0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFByb3BlcnR5T2Zmc2V0Pj4oKm90aGVyRGVsZXRlZE9mZnNldHMpOworICAg
ICAgICBtX2RlbGV0ZWRPZmZzZXRzID0gbWFrZVVuaXF1ZTxWZWN0b3I8UHJvcGVydHlPZmZzZXQ+
Pigqb3RoZXJEZWxldGVkT2Zmc2V0cyk7CiB9CiAKIHZvaWQgUHJvcGVydHlUYWJsZTo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApp
bmRleCAwNzFiMWY2NjMxNWNlM2FlOGRjZmUxNzVmZjYzNjZmNWM2MzJhZmZjLi43MGU1OTNkNTNl
YmRkODFkOGMwODEzYTI5NzcwZTk0MGNlMDQxMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQogCiAgICAgbV9udW1TdWJwYXR0ZXJucyA9IHBhdHRlcm4ubV9udW1T
dWJwYXR0ZXJuczsKICAgICBpZiAoIXBhdHRlcm4ubV9jYXB0dXJlR3JvdXBOYW1lcy5pc0VtcHR5
KCkgfHwgIXBhdHRlcm4ubV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LmlzRW1wdHkoKSkgewotICAg
ICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSYXJlRGF0YT4oKTsKKyAgICAgICAg
bV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KCk7CiAgICAgICAgIG1fcmFyZURhdGEt
Pm1fY2FwdHVyZUdyb3VwTmFtZXMuc3dhcChwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMpOwog
ICAgICAgICBtX3JhcmVEYXRhLT5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguc3dhcChwYXR0ZXJu
Lm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaAppbmRleCAzOWNkZDkxMTZlMDI3ZTNkYjYwNDBkYmQ4ZmU1MjcwZDJlOTk1
ZDhkLi5lOGRhODUyNmU3YzdlODFmYmVhNzVjODg5ODgxNjFiOWFmODkxNzEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIFJl
Z0V4cCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGVu
c3VyZVJlZ0V4cEpJVENvZGUoKQogICAgIHsKICAgICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUp
Ci0gICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnI6Ollh
cnJDb2RlQmxvY2s+KCk7CisgICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUgPSBtYWtlVW5pcXVl
PFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7CiAgICAgICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2Rl
LmdldCgpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRleCAyMzdkN2RlNjg4ZGQyMDc2NTAyMDEyMTZj
ZDBkNTQ2ODBjNDk2ZWFhLi5lZTZlMThjZWZkYmU3OWY0YmMyZWIyMTk3ZmY1MzkxMDRlMWY3OTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIGF1dG8gU2NyaXB0RXhlY3V0YWJsZTo6ZW5zdXJl
VGVtcGxhdGVPYmplY3RNYXBJbXBsKHN0ZDo6dW5pcXVlX3B0cjxUZW1wbGF0ZU9iamVjCiB7CiAg
ICAgaWYgKGRlc3QpCiAgICAgICAgIHJldHVybiAqZGVzdDsKLSAgICBhdXRvIHJlc3VsdCA9IHN0
ZDo6bWFrZV91bmlxdWU8VGVtcGxhdGVPYmplY3RNYXA+KCk7CisgICAgYXV0byByZXN1bHQgPSBt
YWtlVW5pcXVlPFRlbXBsYXRlT2JqZWN0TWFwPigpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNl
KCk7CiAgICAgZGVzdCA9IFdURk1vdmUocmVzdWx0KTsKICAgICByZXR1cm4gKmRlc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCAyOTNjNDY0NzJl
NzQ4OTQxY2E5Y2MyYWRhYzE2YTNkMmRjNWRlZWVjLi4wMWNkMmJkNTQ3ZmUwMmI1MDQ3YTZkNDVi
M2M4YWQ2ZmQ1MmJkYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKQEAgLTg1Niw3ICs4NTYsNyBAQCBXYXRjaHBvaW50U2V0KiBTdHJ1Y3R1cmU6OmVu
c3VyZVByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KFZNJiB2bSwgUHJvcGVydAogICAg
IFN0cnVjdHVyZVJhcmVEYXRhKiByYXJlRGF0YSA9IHRoaXMtPnJhcmVEYXRhKCk7CiAgICAgaWYg
KCFyYXJlRGF0YS0+bV9yZXBsYWNlbWVudFdhdGNocG9pbnRTZXRzKSB7CiAgICAgICAgIHJhcmVE
YXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMgPQotICAgICAgICAgICAgc3RkOjptYWtl
X3VuaXF1ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50TWFwPigpOworICAg
ICAgICAgICAgbWFrZVVuaXF1ZTxTdHJ1Y3R1cmVSYXJlRGF0YTo6UHJvcGVydHlXYXRjaHBvaW50
TWFwPigpOwogICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIH0KICAgICBhdXRv
IHJlc3VsdCA9IHJhcmVEYXRhLT5tX3JlcGxhY2VtZW50V2F0Y2hwb2ludFNldHMtPmFkZChvZmZz
ZXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlUmFyZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlUmFyZURhdGEuY3BwCmluZGV4IDk5YThkOWY3ZGFhYzIxN2U0YzgxZTdlNzEyNmU5YzAy
YjM3NGVkM2YuLmQzY2YxODNiMGY2ZDdjNDg5ODgwMGFiNjhlZTQ4Y2QxMjhmN2ZlMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5j
cHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpzZXRPYmplY3RU
b1N0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBTdHJ1Y3R1cgogICAgIEFTU0VS
VChjb25kaXRpb25TZXQuc3RydWN0dXJlc0Vuc3VyZVZhbGlkaXR5KCkpOwogICAgIGZvciAoT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uIDogY29uZGl0aW9uU2V0KSB7CiAgICAgICAg
IGlmIChjb25kaXRpb24uY29uZGl0aW9uKCkua2luZCgpID09IFByb3BlcnR5Q29uZGl0aW9uOjpQ
cmVzZW5jZSkgewotICAgICAgICAgICAgbV9vYmplY3RUb1N0cmluZ0FkYXB0aXZlSW5mZXJyZWRW
YWx1ZVdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFRvU3RyaW5nQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50PihlcXVpdkNvbmRpdGlvbiwgdGhpcyk7Cisg
ICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVJbmZlcnJlZFZhbHVlV2F0Y2hwb2lu
dCA9IG1ha2VVbmlxdWU8T2JqZWN0VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnQ+KGVxdWl2Q29uZGl0aW9uLCB0aGlzKTsKICAgICAgICAgICAgIG1fb2JqZWN0
VG9TdHJpbmdBZGFwdGl2ZUluZmVycmVkVmFsdWVXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX29iamVjdFRvU3RyaW5nQWRhcHRpdmVXYXRjaHBv
aW50U2V0LmFkZChjb25kaXRpb24sIHRoaXMpLT5pbnN0YWxsKHZtKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCAzOTJmMjE3YzE0ZWZhZWI1
NDViZjBkNGY3NzkwYzExMjc5MzJiYzg1Li5hNGE4NzBmYzFmY2FkMzVjNDM5NWYxMDliMjJhOTlj
NDIwZDc0MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgY29uc3QgU3ltYm9sVGFibGU6OkxvY2FsVG9FbnRy
eVZlYyYgU3ltYm9sVGFibGU6OmxvY2FsVG9FbnRyeShjb25zdCBDb25jdXJyZW50SlMKICAgICAg
ICAgICAgICAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgb2Zmc2V0LnNjb3BlT2Zmc2V0KCkub2Zm
c2V0KCkgKyAxKTsKICAgICAgICAgfQogICAgIAotICAgICAgICBtX2xvY2FsVG9FbnRyeSA9IHN0
ZDo6bWFrZV91bmlxdWU8TG9jYWxUb0VudHJ5VmVjPihzaXplLCBudWxscHRyKTsKKyAgICAgICAg
bV9sb2NhbFRvRW50cnkgPSBtYWtlVW5pcXVlPExvY2FsVG9FbnRyeVZlYz4oc2l6ZSwgbnVsbHB0
cik7CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX21hcCkgewogICAgICAgICAgICAgVmFy
T2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhbHVlLnZhck9mZnNldCgpOwogICAgICAgICAgICAgaWYg
KG9mZnNldC5pc1Njb3BlKCkpCkBAIC0xNTksNyArMTU5LDcgQEAgU3ltYm9sVGFibGUqIFN5bWJv
bFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAgICAgICAgIHJlc3VsdC0+bV9hcmd1bWVu
dHMuc2V0KHZtLCByZXN1bHQsIGFyZ3VtZW50cyk7CiAgICAgCiAgICAgaWYgKG1fcmFyZURhdGEp
IHsKLSAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW1ib2xU
YWJsZVJhcmVEYXRhPigpOworICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEgPSBtYWtlVW5pcXVl
PFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBp
dGVyID0gbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5iZWdpbigpOwpAQCAtMTkxLDcgKzE5MSw3
IEBAIHZvaWQgU3ltYm9sVGFibGU6OnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYpCiAgICAgaWYgKG1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7
CisgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKIAog
ICAgIGZvciAoYXV0byBpdGVyID0gbV9tYXAuYmVnaW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgbV9yYXJlRGF0YS0+bV91bmlxdWVJRE1hcC5z
ZXQoaXRlci0+a2V5LCBUeXBlUHJvZmlsZXJOZWVkc1VuaXF1ZUlER2VuZXJhdGlvbik7CkBAIC0y
MTAsNyArMjEwLDcgQEAgQ29kZUJsb2NrKiBTeW1ib2xUYWJsZTo6cmFyZURhdGFDb2RlQmxvY2so
KQogdm9pZCBTeW1ib2xUYWJsZTo6c2V0UmFyZURhdGFDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICBtX3JhcmVEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRh
ID0gbWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwogCiAgICAgQVNTRVJUKCFtX3Jh
cmVEYXRhLT5tX2NvZGVCbG9jayk7CiAgICAgbV9yYXJlRGF0YS0+bV9jb2RlQmxvY2suc2V0KCpj
b2RlQmxvY2stPnZtKCksIHRoaXMsIGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IDQxMGViNmQ1YWUxNmYzNjAyMjZkYjM4MjNmN2VlODI4
ZWNjYWIzODMuLjQxYWNhOWQzZDRkOWI4YTU2YWU2ODUyMzBlOGQ2Njc1MmFjMGQwMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBAIC0zNjIsNyArMzYyLDcg
QEAgU3RyaW5nIFN0cnVjdHVyZVNoYXBlOjpwcm9wZXJ0eUhhc2goKQogICAgICAgICBidWlsZGVy
LmFwcGVuZChtX3Byb3RvLT5wcm9wZXJ0eUhhc2goKSk7CiAgICAgfQogCi0gICAgbV9wcm9wZXJ0
eUhhc2ggPSBzdGQ6Om1ha2VfdW5pcXVlPFN0cmluZz4oYnVpbGRlci50b1N0cmluZygpKTsKKyAg
ICBtX3Byb3BlcnR5SGFzaCA9IG1ha2VVbmlxdWU8U3RyaW5nPihidWlsZGVyLnRvU3RyaW5nKCkp
OwogICAgIHJldHVybiAqbV9wcm9wZXJ0eUhhc2g7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAppbmRleCA0ZTJkMGQzMjRhMjRlMjMyY2QxOTUzODkyZWQ4YjBhMzNiMGIwNWVl
Li5iNzA5MmMwOGVmNzJiMGVjYTg5ZmYwYjVjNGJlMWFlNTlhYTFkYmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNTIsMTggKzI1MiwxOCBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX3J1bkxvb3AoQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpKQogI2VuZGlmIC8vIFVTRShDRikKICAgICAsIGhlYXAodGhpcywgaGVhcFR5cGUp
Ci0gICAgLCBmYXN0TWFsbG9jQWxsb2NhdG9yKHN0ZDo6bWFrZV91bmlxdWU8RmFzdE1hbGxvY0Fs
aWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCi0gICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRv
cihzdGQ6Om1ha2VfdW5pcXVlPEdpZ2FjYWdlQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNh
Z2U6OlByaW1pdGl2ZSkpCi0gICAgLCBqc1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3Ioc3RkOjptYWtl
X3VuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0b3I+KEdpZ2FjYWdlOjpKU1ZhbHVl
KSkKLSAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEhlYXBDZWxs
VHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlvbiwgSGVhcENlbGw6OkF1
eGlsaWFyeSkpKQotICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENlbGxUeXBlKHN0ZDo6bWFr
ZV91bmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVlZERlc3RydWN0
aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKLSAgICAsIGNlbGxI
ZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1dGVz
KERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAsIGRlc3Ry
dWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxIZWFwQ2VsbFR5cGU+KENl
bGxBdHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKLSAgICAs
IHN0cmluZ0hlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBl
PigpKQotICAgICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKHN0ZDo6bWFrZV91bmlx
dWU8SlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCBmYXN0TWFsbG9j
QWxsb2NhdG9yKG1ha2VVbmlxdWU8RmFzdE1hbGxvY0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkp
CisgICAgLCBwcmltaXRpdmVHaWdhY2FnZUFsbG9jYXRvcihtYWtlVW5pcXVlPEdpZ2FjYWdlQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcj4oR2lnYWNhZ2U6OlByaW1pdGl2ZSkpCisgICAgLCBqc1ZhbHVl
R2lnYWNhZ2VBbGxvY2F0b3IobWFrZVVuaXF1ZTxHaWdhY2FnZUFsaWduZWRNZW1vcnlBbGxvY2F0
b3I+KEdpZ2FjYWdlOjpKU1ZhbHVlKSkKKyAgICAsIGF1eGlsaWFyeUhlYXBDZWxsVHlwZShtYWtl
VW5pcXVlPEhlYXBDZWxsVHlwZT4oQ2VsbEF0dHJpYnV0ZXMoRG9lc05vdE5lZWREZXN0cnVjdGlv
biwgSGVhcENlbGw6OkF1eGlsaWFyeSkpKQorICAgICwgaW1tdXRhYmxlQnV0dGVyZmx5SGVhcENl
bGxUeXBlKG1ha2VVbmlxdWU8SGVhcENlbGxUeXBlPihDZWxsQXR0cmlidXRlcyhEb2VzTm90TmVl
ZERlc3RydWN0aW9uLCBIZWFwQ2VsbDo6SlNDZWxsV2l0aEludGVyaW9yUG9pbnRlcnMpKSkKKyAg
ICAsIGNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxBdHRyaWJ1
dGVzKERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIGRl
c3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUobWFrZVVuaXF1ZTxIZWFwQ2VsbFR5cGU+KENlbGxB
dHRyaWJ1dGVzKE5lZWRzRGVzdHJ1Y3Rpb24sIEhlYXBDZWxsOjpKU0NlbGwpKSkKKyAgICAsIHN0
cmluZ0hlYXBDZWxsVHlwZShtYWtlVW5pcXVlPEpTU3RyaW5nSGVhcENlbGxUeXBlPigpKQorICAg
ICwgZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8SlNEZXN0cnVjdGli
bGVPYmplY3RIZWFwQ2VsbFR5cGU+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICwg
d2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoc3RkOjptYWtlX3VuaXF1ZTxKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlPigpKQotICAgICwgd2ViQXNzZW1ibHlGdW5jdGlv
bkhlYXBDZWxsVHlwZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkFzc2VtYmx5RnVuY3Rpb25IZWFwQ2Vs
bFR5cGU+KCkpCisgICAgLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShtYWtlVW5p
cXVlPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU+KCkpCisgICAgLCB3ZWJBc3Nl
bWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKG1ha2VVbmlxdWU8V2ViQXNzZW1ibHlGdW5jdGlvbkhl
YXBDZWxsVHlwZT4oKSkKICNlbmRpZgogICAgICwgcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgiUHJpbWl0aXZlIEdpZ2FjYWdlIEF1eGlsaWFyeSIsIGhlYXAsIGF1eGlsaWFyeUhlYXBD
ZWxsVHlwZS5nZXQoKSwgcHJpbWl0aXZlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6
MHgzZTdjZDc2MgogICAgICwganNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoIkpTVmFsdWUg
R2lnYWNhZ2UgQXV4aWxpYXJ5IiwgaGVhcCwgYXV4aWxpYXJ5SGVhcENlbGxUeXBlLmdldCgpLCBq
c1ZhbHVlR2lnYWNhZ2VBbGxvY2F0b3IuZ2V0KCkpIC8vIEhhc2g6MHgyNDFlOTQ2CkBAIC0yOTYs
NyArMjk2LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAg
ICwgbV9hdG9tU3RyaW5nVGFibGUodm1UeXBlID09IERlZmF1bHQgPyBUaHJlYWQ6OmN1cnJlbnQo
KS5hdG9tU3RyaW5nVGFibGUoKSA6IG5ldyBBdG9tU3RyaW5nVGFibGUpCiAgICAgLCBwcm9wZXJ0
eU5hbWVzKG51bGxwdHIpCiAgICAgLCBlbXB0eUxpc3QobmV3IEFyZ0xpc3QpCi0gICAgLCBtYWNo
aW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQoc3RkOjptYWtlX3VuaXF1
ZTxTaW1wbGVTdGF0cz4oKSkKKyAgICAsIG1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRG
b3JCYXNlbGluZUpJVChtYWtlVW5pcXVlPFNpbXBsZVN0YXRzPigpKQogICAgICwgY3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb25NYXAoKnRoaXMpCiAgICAgLCBzdHJpbmdDYWNoZSgqdGhpcykKICAg
ICAsIHN5bWJvbEltcGxUb1N5bWJvbE1hcCgqdGhpcykKQEAgLTMxMiw4ICszMTIsOCBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2luaXRpYWxpemlu
Z09iamVjdENsYXNzKDApCiAjZW5kaWYKICAgICAsIG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KDAp
Ci0gICAgLCBtX2NvZGVDYWNoZShzdGQ6Om1ha2VfdW5pcXVlPENvZGVDYWNoZT4oKSkKLSAgICAs
IG1fYnVpbHRpbkV4ZWN1dGFibGVzKHN0ZDo6bWFrZV91bmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVz
PigqdGhpcykpCisgICAgLCBtX2NvZGVDYWNoZShtYWtlVW5pcXVlPENvZGVDYWNoZT4oKSkKKyAg
ICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKG1ha2VVbmlxdWU8QnVpbHRpbkV4ZWN1dGFibGVzPigq
dGhpcykpCiAgICAgLCBtX3R5cGVQcm9maWxlckVuYWJsZWRDb3VudCgwKQogICAgICwgbV9wcmlt
aXRpdmVHaWdhY2FnZUVuYWJsZWQoSXNXYXRjaGVkKQogICAgICwgbV9jb250cm9sRmxvd1Byb2Zp
bGVyRW5hYmxlZENvdW50KDApCkBAIC00MDcsNyArNDA3LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIExMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9u
cygqdGhpcyk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZVByb2ZpbGVyKCkp
KSB7Ci0gICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJv
ZmlsZXI6OkRhdGFiYXNlPigqdGhpcyk7CisgICAgICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9
IG1ha2VVbmlxdWU8UHJvZmlsZXI6OkRhdGFiYXNlPigqdGhpcyk7CiAKICAgICAgICAgU3RyaW5n
UHJpbnRTdHJlYW0gcGF0aE91dDsKICAgICAgICAgY29uc3QgY2hhciogcHJvZmlsZXJQYXRoID0g
Z2V0ZW52KCJKU0NfUFJPRklMRVJfUEFUSCIpOwpAQCAtNDIzLDcgKzQyMyw3IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAvLyB3b24ndCB1c2UgdGhpcy4K
ICAgICBtX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYobmV3IFNpbXBsZVR5cGVkQXJy
YXlDb250cm9sbGVyKCkpOwogCi0gICAgbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PigqdGhpcyk7CisgICAgbV9i
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5PigqdGhpcyk7CiAKICAgICBpZiAoT3B0aW9uczo6dXNlVHlwZVByb2ZpbGVyKCkpCiAg
ICAgICAgIGVuYWJsZVR5cGVQcm9maWxlcigpOwpAQCAtNDQyLDkgKzQ0Miw5IEBAIFZNOjpWTShW
TVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNlbmRpZiAvLyBFTkFCTEUoU0FNUExJ
TkdfUFJPRklMRVIpCiAKICAgICBpZiAoT3B0aW9uczo6dXNlUmFuZG9taXppbmdGdXp6ZXJBZ2Vu
dCgpKQotICAgICAgICBzZXRGdXp6ZXJBZ2VudChzdGQ6Om1ha2VfdW5pcXVlPFJhbmRvbWl6aW5n
RnV6emVyQWdlbnQ+KCp0aGlzKSk7CisgICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8
UmFuZG9taXppbmdGdXp6ZXJBZ2VudD4oKnRoaXMpKTsKICAgICBlbHNlIGlmIChPcHRpb25zOjp1
c2VEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQoKSkKLSAgICAgICAgc2V0RnV6emVyQWdlbnQo
c3RkOjptYWtlX3VuaXF1ZTxEb3VibGVQcmVkaWN0aW9uRnV6emVyQWdlbnQ+KCp0aGlzKSk7Cisg
ICAgICAgIHNldEZ1enplckFnZW50KG1ha2VVbmlxdWU8RG91YmxlUHJlZGljdGlvbkZ1enplckFn
ZW50PigqdGhpcykpOwogCiAgICAgaWYgKE9wdGlvbnM6OmFsd2F5c0dlbmVyYXRlUENUb0NvZGVP
cmlnaW5NYXAoKSkKICAgICAgICAgc2V0U2hvdWxkQnVpbGRQQ1RvQ29kZU9yaWdpbk1hcHBpbmco
KTsKQEAgLTQ1Nyw5ICs0NTcsOSBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbnkgc3R1YnMg
dGhhdCB0aGUgSklUIGlzIGdvaW5nIHRvIHVzZSBhcmUgaW5pdGlhbGl6ZWQgaW4gbm9uLWNvbXBp
bGF0aW9uIHRocmVhZHMuCiAgICAgaWYgKGNhblVzZUpJVCgpKSB7Ci0gICAgICAgIGppdFN0dWJz
ID0gc3RkOjptYWtlX3VuaXF1ZTxKSVRUaHVua3M+KCk7CisgICAgICAgIGppdFN0dWJzID0gbWFr
ZVVuaXF1ZTxKSVRUaHVua3M+KCk7CiAjaWYgRU5BQkxFKEZUTF9KSVQpCi0gICAgICAgIGZ0bFRo
dW5rcyA9IHN0ZDo6bWFrZV91bmlxdWU8RlRMOjpUaHVua3M+KCk7CisgICAgICAgIGZ0bFRodW5r
cyA9IG1ha2VVbmlxdWU8RlRMOjpUaHVua3M+KCk7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQp
CiAgICAgICAgIGdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JDYWxs
KTsKICAgICAgICAgZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1wb2xpbmVGb3IoQ29kZUZvckNv
bnN0cnVjdCk7CkBAIC02MTksNyArNjE5LDcgQEAgV2F0Y2hkb2cmIFZNOjplbnN1cmVXYXRjaGRv
ZygpCiBIZWFwUHJvZmlsZXImIFZNOjplbnN1cmVIZWFwUHJvZmlsZXIoKQogewogICAgIGlmICgh
bV9oZWFwUHJvZmlsZXIpCi0gICAgICAgIG1faGVhcFByb2ZpbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxIZWFwUHJvZmlsZXI+KCp0aGlzKTsKKyAgICAgICAgbV9oZWFwUHJvZmlsZXIgPSBtYWtlVW5p
cXVlPEhlYXBQcm9maWxlcj4oKnRoaXMpOwogICAgIHJldHVybiAqbV9oZWFwUHJvZmlsZXI7CiB9
CiAKQEAgLTEwNDEsOCArMTA0MSw4IEBAIHN0YXRpYyBib29sIGRpc2FibGVQcm9maWxlcldpdGhS
ZXNwZWN0VG9Db3VudCh1bnNpZ25lZCYgY291bnRlciwgY29uc3QgRnVuYyYgZG9ECiBib29sIFZN
OjplbmFibGVUeXBlUHJvZmlsZXIoKQogewogICAgIGF1dG8gZW5hYmxlVHlwZVByb2ZpbGVyID0g
W3RoaXNdICgpIHsKLSAgICAgICAgdGhpcy0+bV90eXBlUHJvZmlsZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFR5cGVQcm9maWxlcj4oKTsKLSAgICAgICAgdGhpcy0+bV90eXBlUHJvZmlsZXJMb2cgPSBz
dGQ6Om1ha2VfdW5pcXVlPFR5cGVQcm9maWxlckxvZz4oKnRoaXMpOworICAgICAgICB0aGlzLT5t
X3R5cGVQcm9maWxlciA9IG1ha2VVbmlxdWU8VHlwZVByb2ZpbGVyPigpOworICAgICAgICB0aGlz
LT5tX3R5cGVQcm9maWxlckxvZyA9IG1ha2VVbmlxdWU8VHlwZVByb2ZpbGVyTG9nPigqdGhpcyk7
CiAgICAgfTsKIAogICAgIHJldHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3VudCht
X3R5cGVQcm9maWxlckVuYWJsZWRDb3VudCwgZW5hYmxlVHlwZVByb2ZpbGVyKTsKQEAgLTEwNjEs
NyArMTA2MSw3IEBAIGJvb2wgVk06OmRpc2FibGVUeXBlUHJvZmlsZXIoKQogYm9vbCBWTTo6ZW5h
YmxlQ29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAgICAgYXV0byBlbmFibGVDb250cm9sRmxvd1By
b2ZpbGVyID0gW3RoaXNdICgpIHsKLSAgICAgICAgdGhpcy0+bV9jb250cm9sRmxvd1Byb2ZpbGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9sRmxvd1Byb2ZpbGVyPigpOworICAgICAgICB0aGlz
LT5tX2NvbnRyb2xGbG93UHJvZmlsZXIgPSBtYWtlVW5pcXVlPENvbnRyb2xGbG93UHJvZmlsZXI+
KCk7CiAgICAgfTsKIAogICAgIHJldHVybiBlbmFibGVQcm9maWxlcldpdGhSZXNwZWN0VG9Db3Vu
dChtX2NvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVkQ291bnQsIGVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIpOwpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgdm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRh
dGEoKQogCiB2b2lkIFZNOjpxdWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBSZWY8TWljcm90YXNrPiYmIHRhc2spCiB7Ci0gICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRUYXNrPigqdGhpcywgJmdsb2JhbE9iamVjdCwgV1RG
TW92ZSh0YXNrKSkpOworICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8UXVl
dWVkVGFzaz4oKnRoaXMsICZnbG9iYWxPYmplY3QsIFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9p
ZCBWTTo6ZHJhaW5NaWNyb3Rhc2tzKCkKQEAgLTEyMzAsMTQgKzEyMzAsMTQgQEAgdm9pZCBWTTo6
ZW5zdXJlU2hhZG93Q2hpY2tlbigpCiB7CiAgICAgaWYgKG1fc2hhZG93Q2hpY2tlbikKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fc2hhZG93Q2hpY2tlbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93
Q2hpY2tlbj4oKTsKKyAgICBtX3NoYWRvd0NoaWNrZW4gPSBtYWtlVW5pcXVlPFNoYWRvd0NoaWNr
ZW4+KCk7CiB9CiAKICNkZWZpbmUgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKG5hbWUsIGhlYXBDZWxsVHlwZSwgdHlwZSkgXAogICAgIElzb1N1YnNwYWNlKiBWTTo6bmFt
ZSMjU2xvdygpIFwKICAgICB7IFwKICAgICAgICAgQVNTRVJUKCFtXyMjbmFtZSk7IFwKLSAgICAg
ICAgYXV0byBzcGFjZSA9IHN0ZDo6bWFrZV91bmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFD
RV9JTklUKGhlYXAsIGhlYXBDZWxsVHlwZSwgdHlwZSk7IFwKKyAgICAgICAgYXV0byBzcGFjZSA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGhlYXBDZWxs
VHlwZSwgdHlwZSk7IFwKICAgICAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsgXAogICAgICAg
ICBtXyMjbmFtZSA9IFdURk1vdmUoc3BhY2UpOyBcCiAgICAgICAgIHJldHVybiBtXyMjbmFtZS5n
ZXQoKTsgXApAQCAtMTI2OCw3ICsxMjY4LDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3BhY2UsIGNlbGxIZWEKICAg
ICBJc29TdWJzcGFjZSogVk06Om5hbWUjI1Nsb3coKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VS
VCghbV8jI25hbWUpOyBcCi0gICAgICAgIGF1dG8gc3BhY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
YWNlQW5kU2V0PiBJU09fU1VCU1BBQ0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBc
CisgICAgICAgIGF1dG8gc3BhY2UgPSBtYWtlVW5pcXVlPFNwYWNlQW5kU2V0PiBJU09fU1VCU1BB
Q0VfSU5JVChoZWFwLCBoZWFwQ2VsbFR5cGUsIHR5cGUpOyBcCiAgICAgICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7IFwKICAgICAgICAgbV8jI25hbWUgPSBXVEZNb3ZlKHNwYWNlKTsgXAogICAg
ICAgICByZXR1cm4gJm1fIyNuYW1lLT5zcGFjZTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5kZXggZTdjZGY4NmQ5ZmIzMjBlNGNl
ZTNkOWJjZjU0ZDAzYmQyMDdhZjVjMS4uOWQ1NTUzZTA1YzgyNTg0MDNlODVhMjMwYWQzZTUxNjVk
Nzk3Y2U2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwCkBAIC00MTcsNyArNDE3LDcgQEAgY2xhc3MgQWlySVJHZW5lcmF0b3Igewog
ICAgIHZvaWQgZW1pdFBhdGNocG9pbnQoQmFzaWNCbG9jayogYmFzaWNCbG9jaywgQjM6OlBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2gsIFRtcCByZXN1bHQsIFZlY3RvcjxDb25zdHJhaW5lZFRtcCwgaW5s
aW5lU2l6ZT4mJiBhcmdzKQogICAgIHsKICAgICAgICAgaWYgKCFtX3BhdGNocG9pbnRTcGVjaWFs
KQotICAgICAgICAgICAgbV9wYXRjaHBvaW50U3BlY2lhbCA9IHN0YXRpY19jYXN0PEIzOjpQYXRj
aHBvaW50U3BlY2lhbCo+KG1fY29kZS5hZGRTcGVjaWFsKHN0ZDo6bWFrZV91bmlxdWU8QjM6OlBh
dGNocG9pbnRTcGVjaWFsPigpKSk7CisgICAgICAgICAgICBtX3BhdGNocG9pbnRTcGVjaWFsID0g
c3RhdGljX2Nhc3Q8QjM6OlBhdGNocG9pbnRTcGVjaWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFr
ZVVuaXF1ZTxCMzo6UGF0Y2hwb2ludFNwZWNpYWw+KCkpKTsKIAogICAgICAgICBJbnN0IGluc3Qo
UGF0Y2gsIHBhdGNoLCBBcmc6OnNwZWNpYWwobV9wYXRjaHBvaW50U3BlY2lhbCkpOwogICAgICAg
ICBJbnN0IHJlc3VsdE1vdjsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBjbGFzcyBBaXJJUkdlbmVyYXRv
ciB7CiAKICAgICAgICAgLy8gRklYTUU6IE1ha2UgYSBoYXNobWFwIG9mIHRoZXNlLgogICAgICAg
ICBCMzo6Q2hlY2tTcGVjaWFsOjpLZXkga2V5KGJyYW5jaCk7Ci0gICAgICAgIEIzOjpDaGVja1Nw
ZWNpYWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVjaWFsKj4obV9jb2RlLmFk
ZFNwZWNpYWwoc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkpKSk7CisgICAg
ICAgIEIzOjpDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBzdGF0aWNfY2FzdDxCMzo6Q2hlY2tTcGVj
aWFsKj4obV9jb2RlLmFkZFNwZWNpYWwobWFrZVVuaXF1ZTxCMzo6Q2hlY2tTcGVjaWFsPihrZXkp
KSk7CiAKICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgbmVlZCBmb3IgZHVtbXkgdmFsdWVz
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQw
NDAKQEAgLTIxMzksMTAgKzIxMzksMTAgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6b3JpZ2luKCkg
LT4gQjM6Ok9yaWdpbgogCiBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlv
bj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlQWlyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGls
YXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rp
b25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNt
VG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1h
dGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVy
VXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigp
OworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCi0g
ICAgY29tcGlsYXRpb25Db250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q0NhbGxIZWxwZXJzPigpOwotICAgIGNvbXBpbGF0aW9uQ29udGV4dC53YXNtRW50cnlw
b2ludEpJVCA9IHN0ZDo6bWFrZV91bmlxdWU8Q0NhbGxIZWxwZXJzPigpOworICAgIGNvbXBpbGF0
aW9uQ29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVlPENDYWxsSGVscGVy
cz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBtYWtlVW5p
cXVlPENDYWxsSGVscGVycz4oKTsKIAogICAgIEIzOjpQcm9jZWR1cmUgcHJvY2VkdXJlOwogICAg
IENvZGUmIGNvZGUgPSBwcm9jZWR1cmUuY29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDkyZDlmNDhmYzgwYTk3MWUyYTBj
NDllY2UyMmE0YzI1YzEwZmY4NDYuLjdhMjQzMTliN2M3YjE3NDhkODkzNzY0MGI2YTNmZDg4Yzdj
NGNlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKQEAgLTE1NTEsMTAgKzE1NTEsMTAgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmln
aW4oKSAtPiBPcmlnaW4KIAogRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rp
b24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0
aW9uQ29udGV4dCwgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9u
TGVuZ3RoLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIGluZm8sIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9k
ZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNt
RXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VV
bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIAotICAgIGNvbXBpbGF0aW9uQ29udGV4dC5lbWJl
ZGRlckVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVlPENDYWxsSGVscGVycz4oKTsKLSAg
ICBjb21waWxhdGlvbkNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQgPSBzdGQ6Om1ha2VfdW5pcXVl
PENDYWxsSGVscGVycz4oKTsKKyAgICBjb21waWxhdGlvbkNvbnRleHQuZW1iZWRkZXJFbnRyeXBv
aW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CisgICAgY29tcGlsYXRpb25Db250
ZXh0Lndhc21FbnRyeXBvaW50SklUID0gbWFrZVVuaXF1ZTxDQ2FsbEhlbHBlcnM+KCk7CiAKICAg
ICBQcm9jZWR1cmUgcHJvY2VkdXJlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QkJRUGxhbi5jcHAKaW5kZXggNTQwZDJkOWI1MTYyNWM3M2I2ZGY3OTE4MTM5YzBiYjRiNzExZWEx
Zi4uOTRhMTdkMzQxOWI0ODJhMDliYjFmYTkzMzQ1YTEyOGQxZmI2N2MyNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMzIzLDcgKzMyMyw3IEBAIHZv
aWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50LmNv
bXBpbGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgICAgICAg
ICAgICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5lbnRyeXBvaW50
LmNvbXBpbGF0aW9uID0gbWFrZVVuaXF1ZTxCMzo6Q29tcGlsYXRpb24+KAogICAgICAgICAgICAg
ICAgICAgICBGSU5BTElaRV9DT0RFKGxpbmtCdWZmZXIsIEIzQ29tcGlsYXRpb25QdHJUYWcsICJX
ZWJBc3NlbWJseSBCQlEgZnVuY3Rpb25bJWldICVzIG5hbWUgJXMiLCBmdW5jdGlvbkluZGV4LCBz
aWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJbmRleE9yTmFt
ZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVTZWN0aW9uLT5n
ZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAgICAgICAgICAg
ICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwogICAgICAg
ICAgICAgfQpAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3Qg
QWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxG
dW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QjM6OkNv
bXBpbGF0aW9uPigKKyAgICAgICAgICAgICAgICBlbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rp
b24tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4o
CiAgICAgICAgICAgICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgQjNDb21waWxh
dGlvblB0clRhZywgIkVtYmVkZGVyLT5XZWJBc3NlbWJseSBlbnRyeXBvaW50WyVpXSAlcyBuYW1l
ICVzIiwgZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCks
IG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9y
bWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRh
dGEoKSksCiAgICAgICAgICAgICAgICAgICAgIFdURk1vdmUoY29udGV4dC5lbWJlZGRlckVudHJ5
cG9pbnRCeXByb2R1Y3RzKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggYzUxM2ZkMmY1MGVkNmZiMTdjMzM4NWVmMjkwNTI3
ODE3MzkyMTAzNy4uMGQ3YTAzYzM2MTI5Y2QxZGUyYzU0ZmZjZDUwMjk1YjU2YzViODk5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBvbWdFbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxCMzo6Q29tcGlsYXRpb24+KAorICAgIG9tZ0VudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBt
YWtlVW5pcXVlPEIzOjpDb21waWxhdGlvbj4oCiAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1
ZmZlciwgQjNDb21waWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5IE9NRyBmdW5jdGlvblslaV0g
JXMgbmFtZSAlcyIsIG1fZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWko
KS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21v
ZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5h
c2NpaSgpLmRhdGEoKSksCiAgICAgICAgIFdURk1vdmUoY29udGV4dC53YXNtRW50cnlwb2ludEJ5
cHJvZHVjdHMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVdvcmtsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5j
cHAKaW5kZXggMzZkNzRjMTRiMThjNzA3YjgxMmEwNDg3ZjkxZTI5YzM4NTM5MWRlMi4uNjYwZjk1
NjU3MzhiMTBhMzBmM2U3Y2M4MThhMzJjODU4NzgyMTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgV29ya2xpc3Q6
OldvcmtsaXN0KCkKICAgICBtX3RocmVhZHMucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQ29tcGls
YXRpb25UaHJlYWRzKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDb21waWxhdGlvblRocmVhZHM7IGkrKykKLSAg
ICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsaXN0
OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKKyAgICAgICAgbV90aHJlYWRzLnVuY2hlY2tlZEFw
cGVuZChtYWtlVW5pcXVlPFdvcmtsaXN0OjpUaHJlYWQ+KGxvY2tlciwgKnRoaXMpKTsKIH0KIAog
V29ya2xpc3Q6On5Xb3JrbGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1RvV2FzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1Rv
V2FzbS5jcHAKaW5kZXggNWRkNDUxYmVhODRkNTkwYmJmMGZjYjA3NmUyNmZmZDNjYzdiODFhYy4u
NzM1MjIwMjg5MzdjNmRhYzFmYzQ3M2M3ZTRjZGM2NDk1OGNlOGVhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0
aW9uQ29udGV4dCYgY29tcAogewogICAgIENDYWxsSGVscGVycyYgaml0ID0gKmNvbXBpbGF0aW9u
Q29udGV4dC5lbWJlZGRlckVudHJ5cG9pbnRKSVQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1ha2VV
bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUo
KTsKIAogICAgIC8vIEZJWE1FIFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAppbmRleCA3ZjAzM2ZlYzFjMzY5YTk0MjNi
MzNjZjhlYjMzMzRjNTFjZTA4MDhiLi5jNGI3N2NhZGJlNWVlYTU3M2VjODUyYjk1ZWY2YTc4OWI4
Mjg1MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAKQEAgLTE3MDYsNyArMTcwNiw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAgICAgICAg
ICAgICBkdW1wRGlzanVuY3Rpb24obV9ib2R5RGlzanVuY3Rpb24uZ2V0KCkpOwogI2VuZGlmCiAK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3Zl
KG1fYm9keURpc2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxs
b2NhdG9yLCBsb2NrKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qnl0ZWNvZGVQYXR0ZXJu
PihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNlc0luZm8sIG1fcGF0
dGVybiwgYWxsb2NhdG9yLCBsb2NrKTsKICAgICB9CiAKICAgICB2b2lkIGNoZWNrSW5wdXQodW5z
aWduZWQgY291bnQpCkBAIC0xOTI2LDcgKzE5MjYsNyBAQCBjbGFzcyBCeXRlQ29tcGlsZXIgewog
ICAgICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQgPSBwYXJlbnRoZXNlc0JlZ2luLmF0b20uc3Vi
cGF0dGVybklkOwogCiAgICAgICAgIHVuc2lnbmVkIG51bVN1YnBhdHRlcm5zID0gbGFzdFN1YnBh
dHRlcm5JZCAtIHN1YnBhdHRlcm5JZCArIDE7Ci0gICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNq
dW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJu
cywgY2FsbEZyYW1lU2l6ZSk7CisgICAgICAgIGF1dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9
IG1ha2VVbmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6
ZSk7CiAKICAgICAgICAgdW5zaWduZWQgZmlyc3RUZXJtSW5QYXJlbnRoZXNlcyA9IGJlZ2luVGVy
bSArIDE7CiAgICAgICAgIHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPnRlcm1zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoZW5kVGVybSAtIGZpcnN0VGVybUluUGFyZW50aGVzZXMgKyAyKTsKQEAgLTE5
OTcsNyArMTk5Nyw3IEBAIGNsYXNzIEJ5dGVDb21waWxlciB7CiAKICAgICB2b2lkIHJlZ2V4QmVn
aW4odW5zaWduZWQgbnVtU3VicGF0dGVybnMsIHVuc2lnbmVkIGNhbGxGcmFtZVNpemUsIGJvb2wg
b25jZVRocm91Z2gpCiAgICAgewotICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZURpc2p1bmN0aW9uPihudW1TdWJwYXR0ZXJucywgY2FsbEZyYW1lU2l6ZSk7
CisgICAgICAgIG1fYm9keURpc2p1bmN0aW9uID0gbWFrZVVuaXF1ZTxCeXRlRGlzanVuY3Rpb24+
KG51bVN1YnBhdHRlcm5zLCBjYWxsRnJhbWVTaXplKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rp
b24tPnRlcm1zLmFwcGVuZChCeXRlVGVybTo6Qm9keUFsdGVybmF0aXZlQmVnaW4ob25jZVRocm91
Z2gpKTsKICAgICAgICAgbV9ib2R5RGlzanVuY3Rpb24tPnRlcm1zWzBdLmZyYW1lTG9jYXRpb24g
PSAwOwogICAgICAgICBtX2N1cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggZTFlMzEwODY0ZTJhOTQ0MmM0MTU1MThjOGU4
Njc1YzhhZDEwYzRhNi4uNDhhNzdkNzcyN2I0NTcxZTlhMmQwNWYxMjZmMDNlMjZhY2I4ZmFjOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTM4OTksNyArMzg5OSw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OmR1bXBEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OmR1bXBSZWdFeHBEaXNhc3NlbWJseSgpKSkK
LSAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gc3RkOjptYWtlX3VuaXF1ZTxZYXJyRGlzYXNz
ZW1ibGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1fZGlzYXNzZW1ibGVyID0gbWFrZVVuaXF1ZTxZ
YXJyRGlzYXNzZW1ibGVyPih0aGlzKTsKIAogICAgICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAg
ICAgICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0U3RhcnRPZkNvZGUobGFiZWwoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKaW5kZXggNDlmNzdmNjljNjg1
YzY1MjAzZGYzZjAzNGM5MGQxODc3YzkyZGM5Yi4uZmNjNTFiMjc3ZjUwMTEwM2I3YzY1YmJkMzNh
NWNhNDEwZDgxYzBlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIGNsYXNzIENoYXJhY3RlckNsYXNzQ29uc3RydWN0b3Ig
ewogICAgIHsKICAgICAgICAgY29hbGVzY2VUYWJsZXMoKTsKIAotICAgICAgICBhdXRvIGNoYXJh
Y3RlckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAgICAgICAg
YXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7CiAKICAg
ICAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fbWF0Y2hlcy5zd2FwKG1fbWF0Y2hlcyk7CiAgICAgICAg
IGNoYXJhY3RlckNsYXNzLT5tX3Jhbmdlcy5zd2FwKG1fcmFuZ2VzKTsKQEAgLTQ0MSw3ICs0NDEs
NyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0cnVjdG9yIHsKICAgICAgICAgLCBtX2NoYXJhY3Rl
ckNsYXNzQ29uc3RydWN0b3IocGF0dGVybi5pZ25vcmVDYXNlKCksIHBhdHRlcm4udW5pY29kZSgp
ID8gQ2Fub25pY2FsTW9kZTo6VW5pY29kZSA6IENhbm9uaWNhbE1vZGU6OlVDUzIpCiAgICAgICAg
ICwgbV9zdGFja0xpbWl0KHN0YWNrTGltaXQpCiAgICAgewotICAgICAgICBhdXRvIGJvZHkgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKKyAgICAgICAgYXV0byBib2R5
ID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5t
X2JvZHkgPSBib2R5LmdldCgpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3
QWx0ZXJuYXRpdmUoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChX
VEZNb3ZlKGJvZHkpKTsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBjbGFzcyBZYXJyUGF0dGVybkNvbnN0
cnVjdG9yIHsKICAgICAgICAgbV9wYXR0ZXJuLnJlc2V0Rm9yUmVwYXJzaW5nKCk7CiAgICAgICAg
IG1fY2hhcmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvci5yZXNldCgpOwogCi0gICAgICAgIGF1dG8gYm9k
eSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICBhdXRv
IGJvZHkgPSBtYWtlVW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4oKTsKICAgICAgICAgbV9wYXR0
ZXJuLm1fYm9keSA9IGJvZHkuZ2V0KCk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBib2R5LT5h
ZGROZXdBbHRlcm5hdGl2ZSgpOwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBw
ZW5kKFdURk1vdmUoYm9keSkpOwpAQCAtNjA4LDcgKzYwOCw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJu
Q29uc3RydWN0b3IgewogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIEFTU0VSVCghb3B0R3Jv
dXBOYW1lKTsKIAotICAgICAgICBhdXRvIHBhcmVudGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlvbj4obV9hbHRlcm5hdGl2ZSk7CisgICAgICAgIGF1
dG8gcGFyZW50aGVzZXNEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9u
PihtX2FsdGVybmF0aXZlKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5hcHBlbmQo
UGF0dGVyblRlcm0oUGF0dGVyblRlcm06OlR5cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm4sIHN1YnBh
dHRlcm5JZCwgcGFyZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwgY2FwdHVyZSwgZmFsc2UpKTsK
ICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IHBhcmVudGhlc2VzRGlzanVuY3Rpb24tPmFkZE5ld0Fs
dGVybmF0aXZlKCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RG
TW92ZShwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uKSk7CkBAIC02MTYsNyArNjE2LDcgQEAgY2xhc3Mg
WWFyclBhdHRlcm5Db25zdHJ1Y3RvciB7CiAKICAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNz
ZXJ0aW9uQmVnaW4oYm9vbCBpbnZlcnQgPSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGF1dG8gcGFy
ZW50aGVzZXNEaXNqdW5jdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9u
PihtX2FsdGVybmF0aXZlKTsKKyAgICAgICAgYXV0byBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uID0g
bWFrZVVuaXF1ZTxQYXR0ZXJuRGlzanVuY3Rpb24+KG1fYWx0ZXJuYXRpdmUpOwogICAgICAgICBt
X2FsdGVybmF0aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlw
ZVBhcmVudGhldGljYWxBc3NlcnRpb24sIG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwg
cGFyZW50aGVzZXNEaXNqdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGludmVydCkpOwogICAgICAgICBt
X2FsdGVybmF0aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUo
KTsKICAgICAgICAgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwpAQCAt
NzA3LDcgKzcwNyw3IEBAIGNsYXNzIFlhcnJQYXR0ZXJuQ29uc3RydWN0b3IgewogICAgICAgICAg
ICAgUGF0dGVybkFsdGVybmF0aXZlKiBhbHRlcm5hdGl2ZSA9IGRpc2p1bmN0aW9uLT5tX2FsdGVy
bmF0aXZlc1thbHRdLmdldCgpOwogICAgICAgICAgICAgaWYgKCFmaWx0ZXJTdGFydHNXaXRoQk9M
IHx8ICFhbHRlcm5hdGl2ZS0+bV9zdGFydHNXaXRoQk9MKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFuZXdEaXNqdW5jdGlvbikgewotICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOworICAgICAgICAgICAgICAg
ICAgICBuZXdEaXNqdW5jdGlvbiA9IG1ha2VVbmlxdWU8UGF0dGVybkRpc2p1bmN0aW9uPigpOwog
ICAgICAgICAgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbi0+bV9wYXJlbnQgPSBkaXNqdW5jdGlv
bi0+bV9wYXJlbnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFBhdHRlcm5B
bHRlcm5hdGl2ZSogbmV3QWx0ZXJuYXRpdmUgPSBuZXdEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJu
YXRpdmUoKTsKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0
ZXJuKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZykKIAogc3Rk
Ojp1bmlxdWVfcHRyPENoYXJhY3RlckNsYXNzPiBhbnljaGFyQ3JlYXRlKCkKIHsKLSAgICBhdXRv
IGNoYXJhY3RlckNsYXNzID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKKyAg
ICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTsKICAg
ICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4MDAsIDB4
N2YpKTsKICAgICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0
ZXJSYW5nZSgweDAwODAsIDB4MTBmZmZmKSk7CiAgICAgY2hhcmFjdGVyQ2xhc3MtPm1fY2hhcmFj
dGVyV2lkdGhzID0gQ2hhcmFjdGVyQ2xhc3NXaWR0aHM6Okhhc0JvdGhCTVBBbmROb25CTVA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCAwYjdkYjJlYmE4YWQ1
MmRlZDJiNWY3ZTY3ZTU0NWI4YzE2Yzk0NWM3Li43ZTgyYzg1NWE4NzhlNmMxODBlZDUyMWYxZjdh
ZDQ4ZDhjMWZiYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgK
QEAgLTM0MSw3ICszNDEsNyBAQCBzdHJ1Y3QgUGF0dGVybkRpc2p1bmN0aW9uIHsKICAgICAKICAg
ICBQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFkZE5ld0FsdGVybmF0aXZlKCkKICAgICB7Ci0gICAgICAg
IG1fYWx0ZXJuYXRpdmVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5BbHRlcm5hdGl2
ZT4odGhpcykpOworICAgICAgICBtX2FsdGVybmF0aXZlcy5hcHBlbmQobWFrZVVuaXF1ZTxQYXR0
ZXJuQWx0ZXJuYXRpdmU+KHRoaXMpKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBhdHRl
cm5BbHRlcm5hdGl2ZSo+KG1fYWx0ZXJuYXRpdmVzLmxhc3QoKS5nZXQoKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvY3JlYXRlX3JlZ2V4X3RhYmxlcwppbmRleCBj
MWY5Zjk5ZGUwOTFjZWNiMmUxZGI1NWMzOGZhMzYwMzExZWUzN2Y0Li42OWNkODg4NjU3ODU0Y2Q1
NDQ1Zjg2M2UyMmQ1NWZmYjljNDBlZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9jcmVhdGVfcmVnZXhfdGFibGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL2NyZWF0ZV9yZWdleF90YWJsZXMKQEAgLTk1LDExICs5NSwxMSBAQCBmb3IgbmFtZSwgY2xh
c3NlcyBpbiB0eXBlcy5pdGVtcygpOgogICAgIGZ1bmN0aW9uICs9ICgie1xuIikKICAgICBpZiBl
bWl0VGFibGVzIGFuZCBjbGFzc2VzWyJVc2VUYWJsZSJdOgogICAgICAgICBpZiAiSW52ZXJzZSIg
aW4gY2xhc3NlczoKLSAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVy
Q2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCB0cnVlKTtc
biIgJSAoY2xhc3Nlc1siSW52ZXJzZSJdKSkKKyAgICAgICAgICAgIGZ1bmN0aW9uICs9ICgiICAg
IGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBtYWtlVW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRh
LCB0cnVlKTtcbiIgJSAoY2xhc3Nlc1siSW52ZXJzZSJdKSkKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGZ1bmN0aW9uICs9ICgiICAgIGF1dG8gY2hhcmFjdGVyQ2xhc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENoYXJhY3RlckNsYXNzPihfJXNEYXRhLCBmYWxzZSk7XG4iICUgKG5hbWUpKQorICAg
ICAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IG1ha2VVbmlx
dWU8Q2hhcmFjdGVyQ2xhc3M+KF8lc0RhdGEsIGZhbHNlKTtcbiIgJSAobmFtZSkpCiAgICAgZWxz
ZToKLSAgICAgICAgZnVuY3Rpb24gKz0gKCIgICAgYXV0byBjaGFyYWN0ZXJDbGFzcyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q2hhcmFjdGVyQ2xhc3M+KCk7XG4iKQorICAgICAgICBmdW5jdGlvbiArPSAo
IiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJDbGFzcz4oKTtc
biIpCiAgICAgaGFzQk1QQ2hhcmFjdGVycyA9IEZhbHNlCiAgICAgaGFzTm9uQk1QQ2hhcmFjdGVy
cyA9IEZhbHNlCiAgICAgZm9yIChtaW4sIG1heCkgaW4gcmFuZ2VzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3BlcnR5VGFibGVz
LnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvZ2VuZXJhdGVZYXJyVW5pY29kZVByb3Bl
cnR5VGFibGVzLnB5CmluZGV4IGY5ZmVmNDY4ZDJiNWRkYTZhYWVlYWIwYjNmYzA1OGNkM2VlY2Vh
YzEuLjUyNmZiNmU3YWMzYTIyN2E2ZDQzY2JiZWZkMjcwMmQxYTBjNTRjZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2dlbmVyYXRlWWFyclVuaWNvZGVQcm9wZXJ0eVRh
Ymxlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9nZW5lcmF0ZVlhcnJVbmlj
b2RlUHJvcGVydHlUYWJsZXMucHkKQEAgLTUyOSw3ICs1MjksNyBAQCBkZWYgZHVtcE1hdGNoRGF0
YShzZWxmLCBmaWxlLCB2YWx1ZXNQZXJMaW5lLCBkYXRhTGlzdCwgZm9ybWF0dGVyKToKICAgICBk
ZWYgZHVtcChzZWxmLCBmaWxlLCBjb21tYUFmdGVyKToKICAgICAgICAgZmlsZS53cml0ZSgic3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxDaGFyYWN0ZXJDbGFzcz4ge30oKVxue3tcbiIuZm9ybWF0KHNl
bGYuZ2V0Q3JlYXRlRnVuY05hbWUoKSkpCiAgICAgICAgIGZpbGUud3JpdGUoIiAgICAvLyBOYW1l
ID0ge30sIG51bWJlciBvZiBjb2RlUG9pbnRzOiB7fVxuIi5mb3JtYXQoc2VsZi5uYW1lLCBzZWxm
LmNvZGVQb2ludENvdW50KSkKLSAgICAgICAgZmlsZS53cml0ZSgiICAgIGF1dG8gY2hhcmFjdGVy
Q2xhc3MgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYXJhY3RlckNsYXNzPihcbiIpCisgICAgICAgIGZp
bGUud3JpdGUoIiAgICBhdXRvIGNoYXJhY3RlckNsYXNzID0gbWFrZVVuaXF1ZTxDaGFyYWN0ZXJD
bGFzcz4oXG4iKQogICAgICAgICBmaWxlLndyaXRlKCIgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxVQ2hhcjMyPigiKQogICAgICAgICBzZWxmLmR1bXBNYXRjaERhdGEoZmlsZSwgOCwgc2Vs
Zi5tYXRjaGVzLCBsYW1iZGEgZmlsZSwgbWF0Y2g6IChmaWxlLndyaXRlKCJ7MDowPSM0eH0iLmZv
cm1hdChtYXRjaCkpKSkKICAgICAgICAgZmlsZS53cml0ZSgiKSxcbiIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAgYi9Tb3VyY2UvV1RGL2Jl
bmNobWFya3MvTG9ja0ZhaXJuZXNzVGVzdC5jcHAKaW5kZXggY2M3MDdkZTNmZjRlYzEzOGNmYTQ2
YWI0YzhlMTNhYmI2NTkzY2JhMS4uOGM5N2MxYTI0MWI3MjlhZjhmMzFmMzU5YzdmNTE3N2E2MzQw
OWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tGYWlybmVzc1Rlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrRmFpcm5lc3NUZXN0LmNwcApAQCAt
NjEsOCArNjEsOCBAQCBzdHJ1Y3QgQmVuY2htYXJrIHsKICAgICBzdGF0aWMgdm9pZCBydW4oY29u
c3QgY2hhciogbmFtZSkKICAgICB7CiAgICAgICAgIExvY2tUeXBlIGxvY2s7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2ln
bmVkW10+KG51bVRocmVhZHMpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVh
ZD5bXT4gdGhyZWFkcyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhy
ZWFkcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZFtdPiBjb3VudHMgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZFtdPihudW1UaHJlYWRzKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxSZWZQdHI8VGhyZWFkPltdPihudW1UaHJlYWRzKTsK
ICAgICAKICAgICAgICAgdm9sYXRpbGUgYm9vbCBrZWVwR29pbmcgPSB0cnVlOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwIGIvU291cmNl
L1dURi9iZW5jaG1hcmtzL0xvY2tTcGVlZFRlc3QuY3BwCmluZGV4IGYxNTY1MGQ0YzljOGZhNjc3
MGY4OTEyZjA5ZGZlMzkyOTEzMDdjMzQuLmJlN2FiYTM5MGViNTNlMzU4MWUzNmY0YThiOTUwMGQw
ZTI5OWY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvYmVuY2htYXJrcy9Mb2NrU3BlZWRUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV1RGL2JlbmNobWFya3MvTG9ja1NwZWVkVGVzdC5jcHAKQEAgLTc0
LDkgKzc0LDkgQEAgc3RydWN0IEJlbmNobWFyayB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9j
a1R5cGU+CiAgICAgc3RhdGljIHZvaWQgcnVuKGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2l0aFBhZGRpbmc8TG9ja1R5cGU+W10+IGxvY2tzID0gc3Rk
OjptYWtlX3VuaXF1ZTxXaXRoUGFkZGluZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+W10+IHRocmVhZHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVh
ZHNQZXJHcm91cCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaXRoUGFkZGluZzxMb2NrVHlw
ZT5bXT4gbG9ja3MgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXaXRoUGFkZGlu
ZzxMb2NrVHlwZT5bXT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFdpdGhQYWRkaW5nPGRvdWJsZT5bXT4gd29yZHMgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxs
b2NDaGVjazxXaXRoUGFkZGluZzxkb3VibGU+W10+KG51bVRocmVhZEdyb3Vwcyk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZWZQdHI8VGhyZWFkPltdPiB0aHJlYWRzID0gbWFrZVVuaXF1ZVdp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8UmVmUHRyPFRocmVhZD5bXT4obnVtVGhyZWFkR3JvdXBzICog
bnVtVGhyZWFkc1Blckdyb3VwKTsKIAogICAgICAgICB2b2xhdGlsZSBib29sIGtlZXBHb2luZyA9
IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaCBi
L1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaAppbmRleCAwYjU0MWI4YzczZDBmNTk4
NjUxYmY5NWU3NjkzYjgwN2M5OTlmNzhhLi44ODRlZDczMjMzNzYxYTI5ZmI0OTZmMGFkMDk4OTY3
NTQ1ZTcwMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgK
KysrIGIvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZlY3Rvci5oCkBAIC0yNTQsNyArMjU0LDcg
QEAgY2xhc3MgQ29uY3VycmVudFZlY3RvciBmaW5hbCB7CiAgICAgdm9pZCBhbGxvY2F0ZVNlZ21l
bnQoKQogICAgIHsKICAgICAgICAgbV9zZWdtZW50cy5ncm93KG1fbnVtU2VnbWVudHMgKyAxKTsK
LSAgICAgICAgbV9zZWdtZW50c1ttX251bVNlZ21lbnRzKytdID0gc3RkOjptYWtlX3VuaXF1ZTxT
ZWdtZW50PigpOworICAgICAgICBtX3NlZ21lbnRzW21fbnVtU2VnbWVudHMrK10gPSBtYWtlVW5p
cXVlPFNlZ21lbnQ+KCk7CiAgICAgfQogCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwIGIvU291cmNl
L1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKaW5kZXggODNjMjA3NTFmODVmNGU0
ZDIwMTU2MTQ0MWNhODMxNDFjYjVjMzdmZi4uYzYzYzA1NWEwYTAzNDFkZjZhNWFmMjcwYTRhY2Ni
OGQ1N2Q3ODQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAK
QEAgLTczLDcgKzczLDcgQEAgdm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9v
cCgpCiAKICAgICB3aGlsZSAoIW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpIHsKICAgICAgICAgewot
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEF1dG9kcmFpbmVkUG9vbD4gYXV0b2RyYWluZWRQ
b29sID0gKG1fdXNlQXV0b2RyYWluZWRQb29sID09IEF1dG9kcmFpbmVkUG9vbEZvclJ1bkxvb3A6
OlVzZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPEF1dG9kcmFpbmVkUG9vbD4oKSA6IG51bGxwdHI7Cisg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2RyYWluZWRQb29sPiBhdXRvZHJhaW5lZFBv
b2wgPSAobV91c2VBdXRvZHJhaW5lZFBvb2wgPT0gQXV0b2RyYWluZWRQb29sRm9yUnVuTG9vcDo6
VXNlKSA/IG1ha2VVbmlxdWU8QXV0b2RyYWluZWRQb29sPigpIDogbnVsbHB0cjsKIAogICAgICAg
ICAgICAgbV90YXNrUXVldWUud2FpdEZvck1lc3NhZ2UoKS5wZXJmb3JtVGFzaygpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIGIvU291
cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAppbmRleCAzZTI1M2NmMmFjMjE5Y2M4NTU4
NGQ0MmM0NTFlZmM3Y2E3OWI2NGVhLi43MDc0YzAzYWJhZjhmY2YzOTc3ZjJiMTFhYjljM2Q2ZTM4
MTYxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEZpbGVQcmludFN0cmVhbT4gRmlsZVByaW50U3RyZWFtOjpvcGVuKGNv
bnN0IGNoYXIqIGZpbGVuYW1lLCBjb24KICAgICBpZiAoIWZpbGUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmlsZVByaW50U3RyZWFtPihm
aWxlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWxlUHJpbnRTdHJlYW0+KGZpbGUpOwogfQog
CiB2b2lkIEZpbGVQcmludFN0cmVhbTo6dnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xp
c3QgYXJnTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmluZGV4IDA1ZTM2OTc4MjViYzNkMzQ5ZjQ4ZDY4YzMyYTY4
NjIyNTVmYjU4M2UuLjBiNzk1ODY3NDgwZmQwMzIyNDEyNDU0ZTdkMGFmODMzOGQ2ZTNhOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYv
RnVuY3Rpb24uaApAQCAtNjcsMTEgKzY3LDExIEBAIGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+
IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAm
JiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVU
eXBlPjo6dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVU
eXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24oQ2FsbGFibGVUeXBlJiYgY2FsbGFi
bGUpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6
OkNhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxh
YmxlKSkpIHsgfQorICAgICAgICA6IG1fY2FsbGFibGVXcmFwcGVyKG1ha2VVbmlxdWU8RGV0YWls
OjpDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShjYWxs
YWJsZSkpKSB7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3Mg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6
dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1
bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24oRnVuY3Rpb25U
eXBlIGYpCi0gICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXRh
aWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYp
KSkgeyB9CisgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIobWFrZVVuaXF1ZTxEZXRhaWw6OkNh
bGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKSkgeyB9
CiAKICAgICBPdXQgb3BlcmF0b3IoKShJbi4uLiBpbikgY29uc3QKICAgICB7CkBAIC04NCwxNCAr
ODQsMTQgQEAgY2xhc3MgRnVuY3Rpb248T3V0KEluLi4uKT4gewogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhKHN0ZDo6
aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dHlwZT46OnZhbHVlKSAmJiBz
dGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+CiAg
ICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKICAgICB7Ci0g
ICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWw6OkNhbGxh
YmxlV3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7
CisgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxl
V3JhcHBlcjxDYWxsYWJsZVR5cGUsIE91dCwgSW4uLi4+PihXVEZNb3ZlKGNhbGxhYmxlKSk7CiAg
ICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dGlvblR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVy
PEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcG9pbnRlcjxGdW5jdGlvblR5cGU+Ojp0eXBlPjo6dmFsdWU+Ojp0eXBlPgogICAgIEZ1
bmN0aW9uJiBvcGVyYXRvcj0oRnVuY3Rpb25UeXBlIGYpCiAgICAgewotICAgICAgICBtX2NhbGxh
YmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV0YWlsOjpDYWxsYWJsZVdyYXBwZXI8RnVu
Y3Rpb25UeXBlLCBPdXQsIEluLi4uPj4oV1RGTW92ZShmKSk7CisgICAgICAgIG1fY2FsbGFibGVX
cmFwcGVyID0gbWFrZVVuaXF1ZTxEZXRhaWw6OkNhbGxhYmxlV3JhcHBlcjxGdW5jdGlvblR5cGUs
IE91dCwgSW4uLi4+PihXVEZNb3ZlKGYpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoVGFibGUuaAppbmRleCAzYjFlOTUzMDNkZTU0MDUxNDNmYjU2M2NjYjgwNDdlNWFjZWFk
MGIzLi5hNGQwNzdmODRmMDJhMWZhMWMxYmUwMzRhODZlYjM1MGQ2ZDdmNDljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFi
bGUuaApAQCAtNTg4LDEwICs1ODgsMTAgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICwgbV9k
ZWxldGVkQ291bnQoMCkKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAgICAgICAgICwg
bV9pdGVyYXRvcnMoMCkKLSAgICAgICAgLCBtX211dGV4KHN0ZDo6bWFrZV91bmlxdWU8TG9jaz4o
KSkKKyAgICAgICAgLCBtX211dGV4KG1ha2VVbmlxdWU8TG9jaz4oKSkKICNlbmRpZgogI2lmIERV
TVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQotICAgICAgICAsIG1fc3RhdHMoc3RkOjptYWtl
X3VuaXF1ZTxTdGF0cz4oKSkKKyAgICAgICAgLCBtX3N0YXRzKG1ha2VVbmlxdWU8U3RhdHM+KCkp
CiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTMzNCwxMCArMTMzNCwxMCBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAgICAgLCBtX2RlbGV0ZWRDb3VudCgwKQogI2lmIENIRUNLX0hBU0hUQUJMRV9J
VEVSQVRPUlMKICAgICAgICAgLCBtX2l0ZXJhdG9ycyhudWxscHRyKQotICAgICAgICAsIG1fbXV0
ZXgoc3RkOjptYWtlX3VuaXF1ZTxMb2NrPigpKQorICAgICAgICAsIG1fbXV0ZXgobWFrZVVuaXF1
ZTxMb2NrPigpKQogI2VuZGlmCiAjaWYgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RBQkxFCi0g
ICAgICAgICwgbV9zdGF0cyhzdGQ6Om1ha2VfdW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykp
CisgICAgICAgICwgbV9zdGF0cyhtYWtlVW5pcXVlPFN0YXRzPigqb3RoZXIubV9zdGF0cykpCiAj
ZW5kaWYKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG90aGVyS2V5Q291bnQgPSBvdGhlci5zaXpl
KCk7CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgSGFz
aFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlU
cmFpdHM+OjpIYXNoVGFibGUoSGFzaFRhYmxlJiYgb3RoZXIpCiAjaWYgQ0hFQ0tfSEFTSFRBQkxF
X0lURVJBVE9SUwogICAgICAgICA6IG1faXRlcmF0b3JzKG51bGxwdHIpCi0gICAgICAgICwgbV9t
dXRleChzdGQ6Om1ha2VfdW5pcXVlPExvY2s+KCkpCisgICAgICAgICwgbV9tdXRleChtYWtlVW5p
cXVlPExvY2s+KCkpCiAjZW5kaWYKICAgICB7CiAgICAgICAgIG90aGVyLmludmFsaWRhdGVJdGVy
YXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDll
ODcyMGY2ZDlhNzk4MGI5NWU1YjEzYzVlNjU1YzM4OTQ5MzA0YjUuLjUzNzljMGE0ZDVjOGM2ZjM2
N2Q5MTY5NmUwZDZhMThjNWQ5ZmVjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
c2V0U2hvdWxkVXNlUGVyaW9kaWNNZW1vcnlNb25pdG9yKGJvb2wgdXNlKQogICAgIH0KIAogICAg
IGlmICh1c2UpIHsKLSAgICAgICAgbV9tZWFzdXJlbWVudFRpbWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxSdW5Mb29wOjpUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+PihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Om1lYXN1cmVtZW50VGltZXJGaXJlZCk7Cisg
ICAgICAgIG1fbWVhc3VyZW1lbnRUaW1lciA9IG1ha2VVbmlxdWU8UnVuTG9vcDo6VGltZXI8TWVt
b3J5UHJlc3N1cmVIYW5kbGVyPj4oUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjptZWFzdXJlbWVudFRpbWVyRmlyZWQpOwogICAgICAgICBtX21lYXN1cmVtZW50
VGltZXItPnN0YXJ0UmVwZWF0aW5nKDMwX3MpOwogICAgIH0gZWxzZQogICAgICAgICBtX21lYXN1
cmVtZW50VGltZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGli
RXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCBhZjY1ZTA4Y2E4
ODAyNDBlYTlmMTljM2MxZmMxZmRjNTdhYjRkNGFiLi5kOWJhMWU2YjY4MjE3YmMxYzYyMDU1ZTU0
YzVkODc2MTMxOGMzYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtNTY1LDYgKzU2NSwyMyBA
QCBjb25zdGV4cHIgc2l6ZV90IGNseih1aW50MzJfdCB2YWx1ZSwgWmVyb1N0YXR1cyBtaWdodEJl
WmVybyA9IFplcm9TdGF0dXM6Ok1heUJlWgogCiB9IC8vIG5hbWVzcGFjZSBzdGQKIAorbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNzIFQsIGNsYXNzLi4uIEFyZ3M+CitBTFdBWVNfSU5M
SU5FIGRlY2x0eXBlKGF1dG8pIG1ha2VVbmlxdWUoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4KK0FMV0FZU19JTkxJTkUgZGVjbHR5
cGUoYXV0bykgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uIGFyZ3Mp
Cit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2RlZmluZSBXVEZNb3ZlKHZh
bHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKQogCiB1c2luZyBX
VEY6OktCOwpAQCAtNTg1LDMgKzYwMiw1IEBAIHVzaW5nIFdURjo6bWVyZ2VEZWR1cGxpY2F0ZWRT
b3J0ZWQ7CiB1c2luZyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y7CiB1c2luZyBXVEY6OnNhZmVD
YXN0OwogdXNpbmcgV1RGOjp0cnlCaW5hcnlTZWFyY2g7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWU7
Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1C
dWZmZXIuaAppbmRleCAyNmJiYzhmZDY3YTQ5MzQ2MzIyMWQ2MTk2MThlYjdjNjQ2ODY0MDMwLi5j
YTMzZjg2N2QzOGI1NzU5MjAxNDFkNTIzYzMwN2FhZTdjODIwYjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZm
ZXIuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBTdHJlYW1CdWZmZXIgewogICAgICAgICBtX3Np
emUgKz0gc2l6ZTsKICAgICAgICAgd2hpbGUgKHNpemUpIHsKICAgICAgICAgICAgIGlmICghbV9i
dWZmZXIuc2l6ZSgpIHx8IG1fYnVmZmVyLmxhc3QoKS0+c2l6ZSgpID09IEJsb2NrU2l6ZSkKLSAg
ICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxCbG9jaz4oKSk7
CisgICAgICAgICAgICAgICAgbV9idWZmZXIuYXBwZW5kKG1ha2VVbmlxdWU8QmxvY2s+KCkpOwog
ICAgICAgICAgICAgc2l6ZV90IGFwcGVuZFNpemUgPSBzdGQ6Om1pbihCbG9ja1NpemUgLSBtX2J1
ZmZlci5sYXN0KCktPnNpemUoKSwgc2l6ZSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5sYXN0KCkt
PmFwcGVuZChkYXRhLCBhcHBlbmRTaXplKTsKICAgICAgICAgICAgIGRhdGEgKz0gYXBwZW5kU2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oIGIvU291cmNlL1dURi93
dGYvVW5pcXVlUmVmLmgKaW5kZXggNzNlOWRmZWMwNmZkNzg3ZjNiMDZiM2RjOWRhNjVhNTUwNGQx
YzAyOS4uOTk4YjQzZTEyMjZlODZjY2RlMzI4YmJkZmVlYWI2ZjJjODM4ZGYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysrIGIvU291cmNlL1dURi93dGYvVW5pcXVl
UmVmLmgKQEAgLTMzLDExICszMywxNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIFVuaXF1ZVJlZjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4g
QXJncz4KLVVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLiBhcmdzKQorVW5pcXVl
UmVmPFQ+IG1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdz
KQogewogICAgIHJldHVybiBVbmlxdWVSZWY8VD4oKm5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLikpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgorVW5p
cXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFyZ3MpCit7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFQ+KHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBVbmlxdWVSZWYgewog
cHVibGljOgpAQCAtNjMsNyArNjksNyBAQCBjbGFzcyBVbmlxdWVSZWYgewogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUPiBtb3ZlVG9VbmlxdWVQdHIoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVmKTsgfQog
CiBwcml2YXRlOgotICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBV
bmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOworICAgIHRlbXBsYXRlPGNsYXNz
IFUsIGNsYXNzLi4uIEFyZ3M+IGZyaWVuZCBVbmlxdWVSZWY8VT4gbWFrZVVuaXF1ZVJlZldpdGhv
dXRGYXN0TWFsbG9jQ2hlY2soQXJncyYmLi4uKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmll
bmQgY2xhc3MgVW5pcXVlUmVmOwogCiAgICAgVW5pcXVlUmVmKFQmIG90aGVyKQpAQCAtNzksMyAr
ODUsNCBAQCBjbGFzcyBVbmlxdWVSZWYgewogCiB1c2luZyBXVEY6OlVuaXF1ZVJlZjsKIHVzaW5n
IFdURjo6bWFrZVVuaXF1ZVJlZjsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGli
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCmluZGV4IDVlNWJhOGFi
ZWJkYmQ0OWJiYjgzN2RkNGM0ZmQ2OWJkNmZmYzM2MWYuLmZiMjExZDBhMjk2MWRmYzE2YWE2ZTIx
YTIxYTk3NGRmZjE1MjY5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9v
cEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRp
b24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICBnX3NvdXJjZV9zZXRfbmFtZShz
b3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKICAgICBnX3Nv
dXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190aW1lKCkg
KyBkdXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwogCi0gICAgc3RkOjp1bmlxdWVf
cHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaXNw
YXRjaEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGF0Y2hBZnRl
ckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2so
c291cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQoc3RhdGljX2Nh
c3Q8RGlzcGF0Y2hBZnRlckNvbnRleHQqPih1c2VyRGF0YSkpOwogICAgICAgICBjb250ZXh0LT5k
aXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZGNiYTA2MDgyYzVm
NjZlMzE5YTE1ZWU1OTdmYzY0OTc2NmIwNWU2Yy4uNWJmNGU2ZDAxZGU4NDNlZDI4Nzg4M2VhM2Ew
M2U4NDk0OTNiZWNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0xNzksNyAr
MTc5LDcgQEAgY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Oklt
cGwgewogfTsKIAogU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJh
dG9yKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcsIHVuc2lnbmVkIGluZGV4KQotICAgIDog
bV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051
bGwoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRl
eCkpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3
LmlzTnVsbCgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJl
YWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSks
IGluZGV4KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
aWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJz
ZXIuY3BwCmluZGV4IGZkYjhjZTI5MmQ3MzhkYTQyMDM4YWE5NjVhZjNhY2ExNzhhODBjZWIuLjhk
Yzc2ZmEyZTU5ZWE2N2UwMjE3MzhjMzExYTM1NzdmNGQzNmU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZl
c3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBB
cHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFByb3BlcnR5SW52YWxpZFVSTChj
b25zdCBTdHJpbmcmIHByb3AKIHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nRGV2
ZWxvcGVyV2FybmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1fY29uc29s
ZUNvbnRleHQpCi0gICAgICAgIG1fY29uc29sZUNvbnRleHQtPmFkZENvbnNvbGVNZXNzYWdlKHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oSlNDOjpNZXNzYWdlU291
cmNlOjpPdGhlciwgSlNDOjpNZXNzYWdlVHlwZTo6TG9nLCBKU0M6Ok1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgbWFrZVN0cmluZygiUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCAiX3MsIG1fbWFu
aWZlc3RVUkwuc3RyaW5nKCksICI6ICJfcywgbWVzc2FnZSkpKTsKKyAgICAgICAgbV9jb25zb2xl
Q29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihKU0M6Ok1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBKU0M6Ok1lc3NhZ2VUeXBlOjpMb2cs
IEpTQzo6TWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5nKCJQYXJzaW5nIGFwcGxpY2F0
aW9uIG1hbmlmZXN0ICJfcywgbV9tYW5pZmVzdFVSTC5zdHJpbmcoKSwgIjogIl9zLCBtZXNzYWdl
KSkpOwogfQogCiBVUkwgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VTdGFydFVSTChj
b25zdCBKU09OOjpPYmplY3QmIG1hbmlmZXN0LCBjb25zdCBVUkwmIGRvY3VtZW50VVJMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAKaW5k
ZXggOWJmYTVmOTQ5OTRiMDU0NTA2YjgyNmEzMTRiODI1ODI3ZWE0MWFkYi4uN2U0Zjc5NDcxZTJj
NTlmZTcxYzE0ODEzMmY0YjU1MWQ4ZmZjNzkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iZWFjb24vTmF2aWdhdG9yQmVhY29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCkBAIC01Miw3ICs1Miw3IEBAIE5hdmln
YXRvckJlYWNvbiogTmF2aWdhdG9yQmVhY29uOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG9yKQog
ewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JCZWFjb24qPihT
dXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkp
OwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckJlYWNvbj4obmF2aWdhdG9yKTsKKyAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gbWFrZVVuaXF1ZTxOYXZpZ2F0b3JCZWFjb24+KG5hdmlnYXRvcik7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01X
aW5kb3dDYWNoZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01XaW5kb3dD
YWNoZXMuY3BwCmluZGV4IDVlZDFmNWNjYTY0MWViMDRlYzBlMGEwY2UwNmM4MzcyNDU2OGEyZmYu
LjYxNTM5NDMwZGZiOTYxNmZkMjg4ZmVkOTJjYjk0NGZmNDQ2YjAxMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NV2luZG93Q2FjaGVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTVdpbmRvd0NhY2hlcy5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgRE9NV2luZG93Q2FjaGVzKiBET01XaW5kb3dDYWNoZXM6OmZyb20oRE9NV2luZG93KiB3
aW5kb3cpCiB7CiAgICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd0Nh
Y2hlcyo+KFN1cHBsZW1lbnQ8RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1l
KCkpKTsKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dDYWNoZXM+KHdpbmRvdyk7CisgICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93Q2FjaGVzPih3aW5kb3cpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9Xb3JrZXJHbG9i
YWxTY29wZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckds
b2JhbFNjb3BlQ2FjaGVzLmNwcAppbmRleCAwNjU2YmVmMGIxNzE4ZTMzZGJjN2ZhMGVlNjBjNTdk
NDhlMzhkNGU4Li41MTE4YTQ4ODUwZjI0MmQwNDRkM2I0MGZmMGUzYjIzYmI5NmUyOGY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNjb3BlQ2Fj
aGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1dvcmtlckdsb2JhbFNj
b3BlQ2FjaGVzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcyog
V29ya2VyR2xvYmFsU2NvcGVDYWNoZXM6OmZyb20oV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQog
ewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxXb3JrZXJHbG9iYWxTY29wZUNh
Y2hlcyo+KFN1cHBsZW1lbnQ8V29ya2VyR2xvYmFsU2NvcGU+Ojpmcm9tKCZzY29wZSwgc3VwcGxl
bWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzPihzY29w
ZSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyR2xvYmFs
U2NvcGVDYWNoZXM+KHNjb3BlKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygmc2NvcGUsIHN1cHBsZW1lbnROYW1lKCksIFdURk1v
dmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY3JlZGVudGlhbG1hbmFnZW1lbnQvTmF2aWdhdG9yQ3JlZGVudGlhbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50
aWFscy5jcHAKaW5kZXggNzFmNDM4Y2Y3ODZjNzZkN2I1ODcyMTU1OTc2NjhiNjIzNjFiNTk5My4u
MTE4MWJkOTg1YTIyYmE0OTNmODM2MzFkN2U0MWZlZTg3OWI1NmIzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVudC9OYXZpZ2F0b3JDcmVkZW50
aWFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jcmVkZW50aWFsbWFuYWdlbWVu
dC9OYXZpZ2F0b3JDcmVkZW50aWFscy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTmF2aWdhdG9yQ3Jl
ZGVudGlhbHMqIE5hdmlnYXRvckNyZWRlbnRpYWxzOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9y
KQogewogICAgIE5hdmlnYXRvckNyZWRlbnRpYWxzKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8
TmF2aWdhdG9yQ3JlZGVudGlhbHMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdh
dG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yQ3JlZGVudGlh
bHM+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9y
Q3JlZGVudGlhbHM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgp
OwogICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3Zl
KG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCBiNmZkNjhk
NjcyZWRlMzg3NzhjMTVjNmZlYWFmNDZiNDU1ZTVhMWNkLi43NWVkYjZhOTM2Mzg4MGU1ODdjMzU3
NTZiMTRkZWM5ZjliNDVlNjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTEzMyw3ICsxMzMs
NyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1T
cGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgICAgICBhdXRvIHN5c3RlbUlEID0gSVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVrU3lzdGVtSUQodmlldywgb2Zm
c2V0KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgICAg
IGlmIChzeXN0ZW1JRCA9PSBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6OmZhaXJQbGF5U3lz
dGVtSUQoKSkgewotICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gc3RkOjptYWtlX3VuaXF1ZTxJ
U09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CisgICAgICAgICAgICBhdXRvIGZwc1Bzc2gg
PSBtYWtlVW5pcXVlPElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveD4oKTsKICAgICAgICAgICAg
IGlmICghZnBzUHNzaC0+cmVhZCh2aWV3LCBvZmZzZXQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBwc3NoQm94ZXMuYXBwZW5kKFdURk1vdmUoZnBz
UHNzaCkpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhCiAjZWxz
ZQogICAgICAgICBVTlVTRURfUEFSQU0oc3lzdGVtSUQpOwogI2VuZGlmCi0gICAgICAgIGF1dG8g
cHNzaEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94PigpOworICAgICAgICBhdXRvIHBzc2hCb3ggPSBtYWtlVW5pcXVlPElTT1Byb3RlY3Rp
b25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKICAgICAgICAgaWYgKCFwc3NoQm94LT5yZWFk
KHZpZXcsIG9mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNLmNwcAppbmRleCA4MjYyODkzZmUwYWY5OTkxNGVkMzllOTYwY2YxMGE3NTM0MDcw
NWI2Li44MzdkZjEyM2FlNTk2ZjM1MzdjOTE1MjcwM2UzZDI3MWIzNDZlYjUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETS5jcHAKQEAgLTYxLDE1ICs2MSwxNSBAQCBzdHJ1Y3QgQ0RNRmFjdG9yeSB7CiBzdGF0
aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFjdG9yaWVzKCkKIHsKICAgICBz
dGF0aWMgYXV0byBjZG1zID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxDRE1GYWN0b3J5Kj4g
ewotICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxMZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sCisgICAgICAg
IG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPExl
Z2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKICAgICAgICAgICAgIExlZ2FjeUNETVBy
aXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktl
eTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCiAKICAgICAgICAgLy8gRklYTUU6IGlu
aXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMTgsIGh0
dHA6Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2Fj
eUNETSogY2RtKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXll
cj4oY2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsg
cmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LAogICAgICAg
ICAgICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0
ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKIAogI2lmIChIQVZF
KEFWQ09OVEVOVEtFWVNFU1NJT04pIHx8IEhBVkUoQVZTVFJFQU1TRVNTSU9OKSkgJiYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4o
Y2RtKTsgfSwKKyAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0
dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2RtKTsgfSwKICAg
ICAgICAgICAgIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVt
LCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVU
eXBlKSwKICNlbmRpZgogICAgIH0pOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxMZWdhY3lDRE0+IExlZ2FjeUNETTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQog
ICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDRE0+KGtleVN5c3Rl
bSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNPihrZXlTeXN0ZW0pOwogfQogCiBM
ZWdhY3lDRE06OkxlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVBy
aXZhdGVDbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L2xlZ2FjeS9MZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXkuY3BwCmluZGV4IGM5MzE2ZGZkOGFiYjQw
NTQ5MmY1NTVlYjNkMWIzZDA5MTdjZWZmNTAuLjNhOGMwMGY1MjMxZjUyYTZlODlkMTgzZDE1MTFj
M2FjODc3M2ExZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L0xlZ2FjeUNETVByaXZhdGVDbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6
c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpjcmVhdGVTZXNz
aW9uKExlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDRE1TZXNzaW9uQ2xlYXJLZXk+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VV
bmlxdWU8Q0RNU2Vzc2lvbkNsZWFyS2V5PihjbGllbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IGFkZGM1NDg5NmI4
YTQ0MzhjZmJmZDA2NTgwYWRiYzg2MGE4MWY4NjQuLmRiNjM5MGU3Zjk5MjU5NzdiODdjYTAwOWVk
YWJkNTFjZGI2NjczMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6
bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQog
ICAgIH0KIAogICAgIG1fYmxvYkxvYWRlci5lbXBsYWNlKCp0aGlzKTsKLSAgICBtX2Jsb2JMb2Fk
ZXItPmxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCptX2Jsb2JMb2FkZXIs
IGNvbnN1bWVyKTsKKyAgICBtX2Jsb2JMb2FkZXItPmxvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hM
b2FkZXI+KCptX2Jsb2JMb2FkZXIsIGNvbnN1bWVyKTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9h
ZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1f
YmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggY2QzNDVlYjllYzM0MGMzNmUwZjBh
NmVlZDgyZGQ5ODhiNGY5N2QzOS4uOTQwMTNjZjRlYTY1MjM4ZDgzYjliNGM4MWRiN2QxODE2NTMy
NDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpmZXRjaChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QKIAogICAgIHJl
c3BvbnNlLT5hZGRBYm9ydFN0ZXBzKHJlcXVlc3Quc2lnbmFsKCkpOwogCi0gICAgcmVzcG9uc2Ut
Pm1fYm9keUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Qm9keUxvYWRlcj4ocmVzcG9uc2UuZ2V0
KCksIFdURk1vdmUocmVzcG9uc2VDYWxsYmFjaykpOworICAgIHJlc3BvbnNlLT5tX2JvZHlMb2Fk
ZXIgPSBtYWtlVW5pcXVlPEJvZHlMb2FkZXI+KHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKHJlc3Bv
bnNlQ2FsbGJhY2spKTsKICAgICBpZiAoIXJlc3BvbnNlLT5tX2JvZHlMb2FkZXItPnN0YXJ0KGNv
bnRleHQsIHJlcXVlc3QpKQogICAgICAgICByZXNwb25zZS0+bV9ib2R5TG9hZGVyID0gbnVsbHB0
cjsKIH0KQEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogCiBib29sIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX2xvYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlzLCAmbV9yZXNwb25zZS5tX2JvZHktPmNv
bnN1bWVyKCkpOworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxGZXRjaExvYWRlcj4oKnRoaXMs
ICZtX3Jlc3BvbnNlLm1fYm9keS0+Y29uc3VtZXIoKSk7CiAgICAgbV9sb2FkZXItPnN0YXJ0KGNv
bnRleHQsIHJlcXVlc3QpOwogICAgIHJldHVybiBtX2xvYWRlci0+aXNTdGFydGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9yR2FtZXBhZC5j
cHAKaW5kZXggNjEwMjA4OTljYmM0YTdlNDMzYjE1MWRjY2FlYmZlOTA3NjRkM2UyZC4uODUwZDIy
ZGUyODViYjMzNWQyMmU4YzJlMjUzYjdhYjZlMGM2MDM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBOYXZpZ2F0b3JHYW1lcGFkKiBOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKE5hdmlnYXRvciog
bmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvckdhbWVwYWQqIHN1cHBsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxOYXZpZ2F0b3JHYW1lcGFkKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9tKG5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAg
ICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+
KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yR2Ft
ZXBhZD4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAg
ICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3Vw
cGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBiMDlmYzM0MzNi
YmZiYjcyOGYzMTVjMTUzM2E2ZjJjOWU0ZmMwMDcxLi5jZDgwNzBiMjA3ZGI4YTM0NDAyNmNmZjYx
MDViODVlZTE5YmM1MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xNTUsNyArMTU1
LDcgQEAgY29uc3QgY2hhciogR2VvbG9jYXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgp
CiB2b2lkIHByb3ZpZGVHZW9sb2NhdGlvblRvKFBhZ2UqIHBhZ2UsIEdlb2xvY2F0aW9uQ2xpZW50
JiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKHBhZ2UpOwotICAgIFN1cHBsZW1lbnQ8UGFnZT46OnBy
b3ZpZGVUbyhwYWdlLCBHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIHN0
ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRpb25Db250cm9sbGVyPigqcGFnZSwgY2xpZW50KSk7Cisg
ICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIEdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxHZW9sb2NhdGlvbkNvbnRyb2xsZXI+KCpw
YWdlLCBjbGllbnQpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vTmF2aWdhdG9yR2VvbG9jYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9s
b2NhdGlvbi5jcHAKaW5kZXggYjM0ZjQ5YTY3MWQ4NWY1MTQyYjhiYWYwZjUyYmE5OTFhYzQzNTlk
Yy4uMzVkZmJmOGYzZjI1NjljMDEzNTM1NjYzMDBmNWI3ODM3ZGUyOGZiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZpZ2F0b3JHZW9s
b2NhdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgTmF2aWdhdG9yR2VvbG9jYXRpb24qIE5hdmln
YXRvckdlb2xvY2F0aW9uOjpmcm9tKE5hdmlnYXRvciYgbmF2aWdhdG9yKQogewogICAgIE5hdmln
YXRvckdlb2xvY2F0aW9uKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2aWdhdG9yR2VvbG9j
YXRpb24qPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20oJm5hdmlnYXRvciwgc3VwcGxlbWVu
dE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewotICAgICAgICBhdXRvIG5ld1N1cHBs
ZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdlb2xvY2F0aW9uPihuYXZpZ2F0b3Ip
OworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmlnYXRvckdlb2xv
Y2F0aW9uPihuYXZpZ2F0b3IpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5n
ZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKCZuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdU
Rk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCmlu
ZGV4IGM3MjAzYTlhODY0MDk3MDUwZDNkYzAwNzkyZjdhNmI1ODFmYWEyNWUuLjVlOWQ5Nzk2NmJm
ZGU1OGU2NjA5OWE1MDllNjE4Yjg0YzE4ZDA1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNw
cApAQCAtNTIsNyArNTIsNyBAQCBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UqIERPTVdpbmRvd0lu
ZGV4ZWREYXRhYmFzZTo6ZnJvbShET01XaW5kb3cqIHdpbmRvdykKIHsKICAgICBET01XaW5kb3dJ
bmRleGVkRGF0YWJhc2UqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dJbmRleGVk
RGF0YWJhc2UqPihTdXBwbGVtZW50PERPTVdpbmRvdz46OmZyb20od2luZG93LCBzdXBwbGVtZW50
TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cp
OworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTVdpbmRvd0luZGV4
ZWREYXRhYmFzZT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQu
Z2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1v
dmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBmNDMwOTBjNGRjYzNlZGU1ZTI3
ZDFhYTQ0Mzg0NDQ3ZDg0OWM2NDBiLi45YTc4MTI3ODQ2M2VkMGE0YTBhZGRkM2Y3ZGIwYzU2NTY5
NjJiOWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQklu
ZGV4Pj4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogICAg
IGlmICghaW5mbykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdEZvdW5kRXJyb3IsICJG
YWlsZWQgdG8gZXhlY3V0ZSAnaW5kZXgnIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBzcGVjaWZp
ZWQgaW5kZXggd2FzIG5vdCBmb3VuZC4iX3MgfTsKIAotICAgIGF1dG8gaW5kZXggPSBzdGQ6Om1h
a2VfdW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaW5mbywgKnRo
aXMpOworICAgIGF1dG8gaW5kZXggPSBtYWtlVW5pcXVlPElEQkluZGV4Pigqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCAqaW5mbywgKnRoaXMpOwogCiAgICAgUmVmPElEQkluZGV4PiByZWZlcmVu
Y2VkSW5kZXggeyAqaW5kZXggfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGZhMmNkN2VhZDA5YjYwNTUyNWI4Y2I0
NDFlZjcwMDFkODMzNTAxMDAuLjQyMjQzZmJhNTczMTI5NTQxODg5NGEzMjA0M2U4OWUwYjJjMWE1
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0
U3RvcmU+PiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplYwog
ICAgIGlmICghaW5mbyB8fCAoIWZvdW5kICYmICFpc1ZlcnNpb25DaGFuZ2UoKSkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ29i
amVjdFN0b3JlJyBvbiAnSURCVHJhbnNhY3Rpb24nOiBUaGUgc3BlY2lmaWVkIG9iamVjdCBzdG9y
ZSB3YXMgbm90IGZvdW5kLiJfcyB9OwogCi0gICAgYXV0byBvYmplY3RTdG9yZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZv
LCAqdGhpcyk7CisgICAgYXV0byBvYmplY3RTdG9yZSA9IG1ha2VVbmlxdWU8SURCT2JqZWN0U3Rv
cmU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppbmZvLCAqdGhpcyk7CiAgICAgYXV0byog
cmF3T2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZS5nZXQoKTsKICAgICBtX3JlZmVyZW5jZWRPYmpl
Y3RTdG9yZXMuc2V0KG9iamVjdFN0b3JlTmFtZSwgV1RGTW92ZShvYmplY3RTdG9yZSkpOwogCkBA
IC02NjcsNyArNjY3LDcgQEAgUmVmPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6Y3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJgogCiAgICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihtX3JlZmVyZW5jZWRPYmplY3RTdG9yZUxvY2spOwogCi0gICAgYXV0byBvYmpl
Y3RTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCT2JqZWN0U3RvcmU+KCpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGluZm8sICp0aGlzKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gbWFrZVVu
aXF1ZTxJREJPYmplY3RTdG9yZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5mbywgKnRo
aXMpOwogICAgIGF1dG8qIHJhd09iamVjdFN0b3JlID0gb2JqZWN0U3RvcmUuZ2V0KCk7CiAgICAg
bV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChpbmZvLm5hbWUoKSwgV1RGTW92ZShvYmplY3RT
dG9yZSkpOwogCkBAIC03NTUsNyArNzU1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkluZGV4PiBJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXgoSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3IKICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+Y3JlYXRlSW5kZXhPblNlcnZlcihvcGVyYXRpb24sIGluZm8p
OwogICAgIH0pKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElEQkluZGV4Pigqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbmZvLCBvYmplY3RTdG9yZSk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8SURCSW5kZXg+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGluZm8sIG9iamVj
dFN0b3JlKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlSW5kZXhPblNlcnZlcihJ
REJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL1dvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcAppbmRl
eCBhNDg1MDNiNGQyZDgwNDI5NDY4NGE2NWE2NWViZDY0ZjIzM2NkN2I5Li45Yjc1Nzc0OTIxYjQ2
NTA2ZjU4M2RlN2ZlYzQyNTBlODU0YWNlNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRl
eGVkRGF0YWJhc2UuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlSW5kZXhl
ZERhdGFiYXNlKiBXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZTo6ZnJvbShXb3JrZXJH
CiAgICAgICAgIGlmICghY29ubmVjdGlvblByb3h5KQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZT4oc2NvcGUsICpjb25uZWN0aW9uUHJveHkpOwor
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPFdvcmtlckdsb2JhbFNjb3Bl
SW5kZXhlZERhdGFiYXNlPihzY29wZSwgKmNvbm5lY3Rpb25Qcm94eSk7CiAgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJnNjb3BlLCBz
dXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDk0OGNmNzQ2NjNhZTY5YzgyZGE0NDRlMDkz
NDczZGQ4NTZkNGRlOTMuLjM3NzExZGMxMDNkYjZjOWE5YjgxM2RiYzlkZjc5OWI3ZTI2YTZkNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJl
ZjxJREJDb25uZWN0aW9uVG9TZXJ2ZXI+IElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y3JlYXRlKElE
QkNvbm5lY3Rpb25Ub1NlcnZlckRlCiAKIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6SURCQ29ubmVj
dGlvblRvU2VydmVyKElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlJiBkZWxlZ2F0ZSkKICAg
ICA6IG1fZGVsZWdhdGUobWFrZVdlYWtQdHIoZGVsZWdhdGUpKQotICAgICwgbV9wcm94eShzdGQ6
Om1ha2VfdW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94eT4oKnRoaXMpKQorICAgICwgbV9wcm94eSht
YWtlVW5pcXVlPElEQkNvbm5lY3Rpb25Qcm94eT4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5z
YWN0aW9uT3BlcmF0aW9uLmNwcAppbmRleCAyNzUzZmQwYzI0NTdiOWMwOWQ5ZDg5ZTRmNzYyYjQ3
OWY4YjQ0MGIxLi44ZTFkZTA2ZDcxZThmMGIyMjNkNjg2ZTVlMWE4YTIyMDliNzQzODQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rp
b25PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgVHJhbnNhY3Rp
b25PcGVyYXRpb246OlRyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgSURCUmVxdWUKICAgICBpZiAobV9pbmRleElkZW50aWZpZXIpCiAgICAgICAgIG1faW5k
ZXhSZWNvcmRUeXBlID0gcmVxdWVzdC5yZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGUoKTsKICAgICBp
ZiAoYXV0byogY3Vyc29yID0gcmVxdWVzdC5wZW5kaW5nQ3Vyc29yKCkpCi0gICAgICAgIG1fY3Vy
c29ySWRlbnRpZmllciA9IHN0ZDo6bWFrZV91bmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihj
dXJzb3ItPmluZm8oKS5pZGVudGlmaWVyKCkpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIg
PSBtYWtlVW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRp
ZmllcigpKTsKIAogICAgIG1faWRiUmVxdWVzdCA9ICZyZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRl
eCA1NWI0MTI0NDFlZjE3MjUwOGNmMDVkZjFmY2E2ZDFjNGZkNTBlOTQwLi40ZmU2YzRhODdkNWMz
ZDViMDUxMGM2ZWJiN2MzZmYxNWE2MjI0MDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIFVuaXF1ZUlEQkRhdGFiYXNlJiBJREJTZXJ2ZXI6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0
YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVuCiAKICAgICBhdXRvIHVuaXF1ZUlEQkRhdGFiYXNl
ID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC5hZGQoaWRlbnRpZmllciwgbnVsbHB0cik7CiAgICAg
aWYgKHVuaXF1ZUlEQkRhdGFiYXNlLmlzTmV3RW50cnkpCi0gICAgICAgIHVuaXF1ZUlEQkRhdGFi
YXNlLml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VW5pcXVlSURCRGF0YWJhc2U+
KCp0aGlzLCBpZGVudGlmaWVyKTsKKyAgICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3It
PnZhbHVlID0gbWFrZVVuaXF1ZTxVbmlxdWVJREJEYXRhYmFzZT4oKnRoaXMsIGlkZW50aWZpZXIp
OwogCiAgICAgcmV0dXJuICp1bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWU7CiB9CkBA
IC0xMzUsNyArMTM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2Vy
dmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2UKICAgICBpZiAobV9kYXRh
YmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVtb3J5SURCQmFj
a2luZ1N0b3JlOjpjcmVhdGUobV9zZXNzaW9uSUQsIGlkZW50aWZpZXIpOwogCi0gICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlSURCQmFja2luZ1N0b3JlPihtX3Nlc3Npb25JRCwgaWRl
bnRpZmllciwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5
RmlsZUhhbmRsZXIsIG1fcGVyT3JpZ2luUXVvdGEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZT4obV9zZXNzaW9uSUQsIGlkZW50aWZpZXIsIG1fZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCBtX2JhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyLCBtX3Blck9y
aWdpblF1b3RhKTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBJREJTZXJ2
ZXI6OlF1b3RhVXNlcjo6aW5pdGlhbGl6ZVNwYWNlVXNlZCh1aW50NjRfdCBzcGFjZVVzZWQpCiBJ
REJTZXJ2ZXI6OlF1b3RhVXNlciYgSURCU2VydmVyOjplbnN1cmVRdW90YVVzZXIoY29uc3QgQ2xp
ZW50T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgcmV0dXJuICptX3F1b3RhVXNlcnMuZW5zdXJlKG9y
aWdpbiwgW3RoaXMsICZvcmlnaW5dIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UXVvdGFVc2VyPigqdGhpcywgbV9xdW90YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdp
biksIENsaWVudE9yaWdpbiB7IG9yaWdpbiB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UXVvdGFVc2VyPigqdGhpcywgbV9xdW90YU1hbmFnZXJHZXR0ZXIobV9zZXNzaW9uSUQsIG9yaWdp
biksIENsaWVudE9yaWdpbiB7IG9yaWdpbiB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
bmRleFZhbHVlU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKaW5kZXggNjk4M2M5ZDdlYWZmNTYxNjcyMDRkOTUyZjFm
MjI2N2JiNDBjYTRiYS4uOGQ5MjFkOGVmZTZiYTg0MGEzMGQ2MWRmZGM2YTcyMWU4MjhhNDNhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0luZGV4
VmFsdWVTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0luZGV4VmFsdWVTdG9yZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgSURCRXJyb3IgSW5kZXhW
YWx1ZVN0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYgaW5kZXhLZXksIGNvbnN0IElE
QktleURhdGEKICAgICAgICAgcmV0dXJuIElEQkVycm9yKENvbnN0cmFpbnRFcnJvcik7CiAKICAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBzdGQ6Om1ha2VfdW5pcXVlPEluZGV4VmFsdWVFbnRyeT4obV91bmlxdWUpOworICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxJbmRleFZhbHVlRW50cnk+KG1fdW5p
cXVlKTsKIAogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZEtleSh2YWx1ZUtleSk7CiAg
ICAgbV9vcmRlcmVkS2V5cy5pbnNlcnQoaW5kZXhLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKaW5kZXggNDdjYzQyZmQyNmQ2NDczYzY0MTkyN2U5
OTJkNGVjNmU4ZDdiZjhlZS4uNWU3MTQ0OTc4NGEwZGEwNzY3Nzg5YThkZWRjNTIyNjg5ZjRkOGRj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCiBzdGQ6OnVuaXF1ZV9wdHI8
TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uOjpjcmVhdGUoTWVtb3J5SURCQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIGNvbnN0IElE
QlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0b3JlLCBpbmZvKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbj4oYmFja2luZ1N0
b3JlLCBpbmZvKTsKIH0KIAogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246Ok1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3Jl
LCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCkBAIC01Miw3ICs1Miw3IEBAIE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihN
ZW1vcnlJREJCYWNraW5nU3RvCiAgICAgICAgIElEQkRhdGFiYXNlSW5mbyBpbmZvOwogICAgICAg
ICBhdXRvIGVycm9yID0gbV9iYWNraW5nU3RvcmUuZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8o
aW5mbyk7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKLSAgICAgICAgICAgIG1fb3JpZ2lu
YWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5mbyk7
CisgICAgICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRh
YmFzZUluZm8+KGluZm8pOwogICAgIH0KIH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgTWVt
b3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJlY29yZFZhbHVlQ2hhbmdlZChNZW1vcnlPYmpl
Y3RTdG9yZSYgb2JqZWN0CiAKICAgICBhdXRvIG9yaWdpbmFsQWRkUmVzdWx0ID0gbV9vcmlnaW5h
bFZhbHVlcy5hZGQoJm9iamVjdFN0b3JlLCBudWxscHRyKTsKICAgICBpZiAob3JpZ2luYWxBZGRS
ZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgb3JpZ2luYWxBZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKKyAgICAgICAgb3JpZ2luYWxB
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsKIAog
ICAgIGF1dG8qIG1hcCA9IG9yaWdpbmFsQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBmZmMzNWMzOTFlZTJjNDBj
MjI5MTI5ZGI1ZDFhYWZjOWUyMGE4ZDgyLi41M2M1MGYzY2FlODM3MThjM2NkNTQ2NWQwNGNmMTNi
Y2Q1YTFmMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDgsNyAr
NDgsNyBAQCBzdGF0aWMgdWludDY0X3QgbWF4R2VuZXJhdGVkS2V5VmFsdWUgPSAweDIwMDAwMDAw
MDAwMDAwOwogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5SURCQmFja2luZ1N0b3JlPiBNZW1vcnlJ
REJCYWNraW5nU3RvcmU6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElE
QkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KHNlc3Npb25JRCwgaWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihzZXNzaW9uSUQsIGlk
ZW50aWZpZXIpOwogfQogCiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdT
dG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKQEAgLTYyLDcgKzYyLDcgQEAgTWVtb3J5SURCQmFja2luZ1N0b3JlOjp+
TWVtb3J5SURCQmFja2luZ1N0b3JlKCkgPSBkZWZhdWx0OwogSURCRXJyb3IgTWVtb3J5SURCQmFj
a2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGlu
Zm8pCiB7CiAgICAgaWYgKCFtX2RhdGFiYXNlSW5mbykKLSAgICAgICAgbV9kYXRhYmFzZUluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNl
TmFtZSgpLCAwKTsKKyAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAwKTsKIAogICAgIGluZm8gPSAq
bV9kYXRhYmFzZUluZm87CiAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKQEAgLTczLDcgKzczLDcg
QEAgdm9pZCBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnNldERhdGFiYXNlSW5mbyhjb25zdCBJREJE
YXRhYmFzZUluZm8mIGluZm8pCiAgICAgLy8gSXQgaXMgbm90IHZhbGlkIHRvIGRpcmVjdGx5IHNl
dCBkYXRhYmFzZSBpbmZvIG9uIGEgYmFja2luZyBzdG9yZSB0aGF0IGhhc24ndCBhbHJlYWR5IHNl
dCBpdHMgb3duIGRhdGFiYXNlIGluZm8uCiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKIAot
ICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGlu
Zm8pOworICAgIG1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGlu
Zm8pOwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rp
b24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJbmRleC5jcHAKaW5kZXggNDlk
ZGNhNmJkNDBkMjlkNDJlMzhiODUxMzFjODlmZGZlN2Q0NzkyZC4uODU5NWRiYjhmNGE3ZWUzZDE5
MWUzMWZiNjEwYjA0OTc1Yjg3NDYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCkBAIC0xOTQsNyArMTk0LDcg
QEAgSURCRXJyb3IgTWVtb3J5SW5kZXg6OnB1dEluZGV4S2V5KGNvbnN0IElEQktleURhdGEmIHZh
bHVlS2V5LCBjb25zdCBJbmRleEtleSYgaW4KICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SW5k
ZXg6OnByb3Zpc2lvbmFsUHV0SW5kZXhLZXkiKTsKIAogICAgIGlmICghbV9yZWNvcmRzKSB7Ci0g
ICAgICAgIG1fcmVjb3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8SW5kZXhWYWx1ZVN0b3JlPihtX2lu
Zm8udW5pcXVlKCkpOworICAgICAgICBtX3JlY29yZHMgPSBtYWtlVW5pcXVlPEluZGV4VmFsdWVT
dG9yZT4obV9pbmZvLnVuaXF1ZSgpKTsKICAgICAgICAgbm90aWZ5Q3Vyc29yc09mQWxsUmVjb3Jk
c0NoYW5nZWQoKTsKICAgICB9CiAKQEAgLTI1OSw3ICsyNTksNyBAQCBNZW1vcnlJbmRleEN1cnNv
ciogTWVtb3J5SW5kZXg6Om1heWJlT3BlbkN1cnNvcihjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZv
KQogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5SW5k
ZXhDdXJzb3I+KCp0aGlzLCBpbmZvKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFr
ZVVuaXF1ZTxNZW1vcnlJbmRleEN1cnNvcj4oKnRoaXMsIGluZm8pOwogICAgIHJldHVybiByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApp
bmRleCBkODY1YjY0MjFhNWM3ZWE0YjBlNmU4Y2RlMzkxN2U3ZmNlNjI3Mjc2Li43MTU1YjU5N2E0
MjBmNTllMTM5NWI5MjgxZGU4YzJkNjRkYWE4NzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5j
cHAKQEAgLTI2MSw4ICsyNjEsOCBAQCBJREJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVj
b3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbgogCiAgICAgaWYg
KCFtX2tleVZhbHVlU3RvcmUpIHsKICAgICAgICAgQVNTRVJUKCFtX29yZGVyZWRLZXlzKTsKLSAg
ICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsK
LSAgICAgICAgbV9vcmRlcmVkS2V5cyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YVNldD4o
KTsKKyAgICAgICAgbV9rZXlWYWx1ZVN0b3JlID0gbWFrZVVuaXF1ZTxLZXlWYWx1ZU1hcD4oKTsK
KyAgICAgICAgbV9vcmRlcmVkS2V5cyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNr
PElEQktleURhdGFTZXQ+KCk7CiAgICAgfQogCiAgICAgYXV0byBtYXBSZXN1bHQgPSBtX2tleVZh
bHVlU3RvcmUtPnNldChrZXlEYXRhLCB2YWx1ZS5kYXRhKCkpOwpAQCAtNDk5LDcgKzQ5OSw3IEBA
IE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yKiBNZW1vcnlPYmplY3RTdG9yZTo6bWF5YmVPcGVuQ3Vy
c29yKGNvbnN0IElEQkN1cnNvckluZm8mCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxNZW1vcnlPYmplY3RTdG9yZUN1cnNvcj4oKnRoaXMsIGluZm8pOworICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPE1lbW9yeU9iamVjdFN0b3JlQ3Vy
c29yPigqdGhpcywgaW5mbyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNDBiNmI2Nzhl
YWRiN2EzZDM2NjZjODNjYTE4YzkyMGFlMzk4MDk5ZS4uNGQ5ZTNhY2M3MmNjMzU4ZDVhMjUwZGUy
OWQ5Njg3NTFkMWI3NGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTU5Niw3ICs1OTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmNyZWF0ZUFuZFBvcHVsYXRlSW5pdGlhbAogICAgIH0KIAogICAgIC8v
IFRoaXMgaW5pdGlhbCBkYXRhYmFzZSBpbmZvIG1hdGNoZXMgdGhlIGRlZmF1bHQgdmFsdWVzIHdl
IGp1c3QgcHV0IGludG8gdGhlIG1ldGFkYXRhIGRhdGFiYXNlLgotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCAw
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KG1faWRlbnRpZmllci5k
YXRhYmFzZU5hbWUoKSwgMCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZXh0cmFjdEV4aXN0aW5nRGF0YWJhc2VJbmZvKCkKQEAg
LTYzMSw3ICs2MzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmV4dHJhY3RFeGlzdGluZ0RhdGFiYXNlSQogICAgICAgICB9CiAgICAg
fQogCi0gICAgYXV0byBkYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oZGF0YWJhc2VOYW1lLCBkYXRhYmFzZVZlcnNpb24pOworICAgIGF1dG8gZGF0YWJhc2VJ
bmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VW
ZXJzaW9uKTsKIAogICAgIHsKICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9zcWxpdGVE
QiwgIlNFTEVDVCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYywgbWF4SW5kZXhJRCBGUk9NIE9i
amVjdFN0b3JlSW5mbzsiX3MpOwpAQCAtNzkzLDcgKzc5Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvCiAKICAgICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKIAot
ICAgIG1fc3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOworICAg
IG1fc3FsaXRlREIgPSBtYWtlVW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9z
cWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICBjbG9zZVNRTGl0ZURCKCk7CkBAIC05MDMsMTEgKzkwMywxMSBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGVzdGFibGlzaCB0cmFuc2FjdGlvbiBpZGVudGlmaWVyIHRoYXQg
YWxyZWFkeSBleGlzdHMiX3MgfTsKICAgICB9CiAKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJUcmFuc2FjdGlvbj4oKnRoaXMsIGluZm8p
OworICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFNRTGl0ZUlEQlRy
YW5zYWN0aW9uPigqdGhpcywgaW5mbyk7CiAKICAgICBhdXRvIGVycm9yID0gYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKm1fc3FsaXRlREIpOwogICAgIGlmIChlcnJvci5pc051bGwo
KSAmJiBpbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsK
LSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJbmZvKTsKKyAgICAgICAg
bV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2UgPSBtYWtlVW5pcXVlPElE
QkRhdGFiYXNlSW5mbz4oKm1fZGF0YWJhc2VJbmZvKTsKIAogICAgICAgICBTUUxpdGVTdGF0ZW1l
bnQgc3FsKCptX3NxbGl0ZURCLCAiVVBEQVRFIElEQkRhdGFiYXNlSW5mbyBTRVQgdmFsdWUgPSA/
IHdoZXJlIGtleSA9ICdEYXRhYmFzZVZlcnNpb24nOyJfcyk7CiAgICAgICAgIGlmIChzcWwucHJl
cGFyZSgpICE9IFNRTElURV9PSwpAQCAtMjYzNCw3ICsyNjM0LDcgQEAgU1FMaXRlU3RhdGVtZW50
KiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNhY2hlZFN0YXRlbWVudChTUUxpdGVJREJCYWNraW5n
U3RvcmU6OlMKICAgICB9CiAKICAgICBpZiAobV9zcWxpdGVEQikgewotICAgICAgICBtX2NhY2hl
ZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXSA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlU3RhdGVtZW50PigqbV9zcWxpdGVEQiwgc3RhdGVtZW50KTsKKyAgICAgICAgbV9jYWNo
ZWRTdGF0ZW1lbnRzW3N0YXRpY19jYXN0PHNpemVfdD4oc3FsKV0gPSBtYWtlVW5pcXVlPFNRTGl0
ZVN0YXRlbWVudD4oKm1fc3FsaXRlREIsIHN0YXRlbWVudCk7CiAgICAgICAgIGlmIChtX2NhY2hl
ZFN0YXRlbWVudHNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzcWwpXS0+cHJlcGFyZSgpICE9IFNRTElU
RV9PSykKICAgICAgICAgICAgIG1fY2FjaGVkU3RhdGVtZW50c1tzdGF0aWNfY2FzdDxzaXplX3Q+
KHNxbCldID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IGY4NDA1
YTc5OGEzNjgxMGRjNTc2YWYxZTczYmNhZjUzMTAyMzdiYWYuLmM2YjNmZDk1M2EwZDUzYWMxNTY4
ZTI4NDhjYmM3OGExMmYxOTU3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlZmV0Y2hMaW1pdCA9IDg7CiAKIHN0ZDo6dW5p
cXVlX3B0cjxTUUxpdGVJREJDdXJzb3I+IFNRTGl0ZUlEQkN1cnNvcjo6bWF5YmVDcmVhdGUoU1FM
aXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZv
KQogewotICAgIGF1dG8gY3Vyc29yID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVJREJDdXJzb3I+
KHRyYW5zYWN0aW9uLCBpbmZvKTsKKyAgICBhdXRvIGN1cnNvciA9IG1ha2VVbmlxdWU8U1FMaXRl
SURCQ3Vyc29yPih0cmFuc2FjdGlvbiwgaW5mbyk7CiAKICAgICBpZiAoIWN1cnNvci0+ZXN0YWJs
aXNoU3RhdGVtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTksNyArNTksNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vyc29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJl
Q3JlYXRlKFNRTGl0ZUlEQlRyYW5zYWN0aQogCiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCQ3Vy
c29yPiBTUUxpdGVJREJDdXJzb3I6Om1heWJlQ3JlYXRlQmFja2luZ1N0b3JlQ3Vyc29yKFNRTGl0
ZUlEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgY29uc3QgdWludDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkK
IHsKLSAgICBhdXRvIGN1cnNvciA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlSURCQ3Vyc29yPih0
cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgcmFuZ2UpOworICAgIGF1dG8gY3Vy
c29yID0gbWFrZVVuaXF1ZTxTUUxpdGVJREJDdXJzb3I+KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9y
ZUlELCBpbmRleElELCByYW5nZSk7CiAKICAgICBpZiAoIWN1cnNvci0+ZXN0YWJsaXNoU3RhdGVt
ZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk5LDcgKzE5OSw3IEBAIGJvb2wg
U1FMaXRlSURCQ3Vyc29yOjpjcmVhdGVTUUxpdGVTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBzcWwp
CiAgICAgQVNTRVJUKCFtX2N1cnJlbnRVcHBlcktleS5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1f
dHJhbnNhY3Rpb24tPnNxbGl0ZVRyYW5zYWN0aW9uKCkpOwogCi0gICAgbV9zdGF0ZW1lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV90cmFuc2FjdGlvbi0+c3FsaXRlVHJh
bnNhY3Rpb24oKS0+ZGF0YWJhc2UoKSwgc3FsKTsKKyAgICBtX3N0YXRlbWVudCA9IG1ha2VVbmlx
dWU8U1FMaXRlU3RhdGVtZW50PihtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2FjdGlvbigpLT5k
YXRhYmFzZSgpLCBzcWwpOwogCiAgICAgaWYgKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3Rh
dGVtZW50IChwcmVwYXJlL2lkKSAtICclcyciLCBtX3RyYW5zYWN0aW9uLT5zcWxpdGVUcmFuc2Fj
dGlvbigpLT5kYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCBT
UUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1cnNvcjo6aW50ZXJuYWxGZXRj
aE5leHRSZWNvcmQoU1FMaXRlQ3VycwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY3Vyc29y
VHlwZSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZhbHVlKQotICAgICAgICAgICAg
cmVjb3JkLnJlY29yZC52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVmFsdWU+KFRocmVhZFNh
ZmVEYXRhQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShrZXlEYXRhKSksIGJsb2JVUkxzLCBibG9iRmls
ZVBhdGhzKTsKKyAgICAgICAgICAgIHJlY29yZC5yZWNvcmQudmFsdWUgPSBtYWtlVW5pcXVlPElE
QlZhbHVlPihUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoa2V5RGF0YSkpLCBi
bG9iVVJMcywgYmxvYkZpbGVQYXRocyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFkZXNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpLCByZWNvcmQu
cmVjb3JkLnByaW1hcnlLZXkpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBk
ZXNlcmlhbGl6ZSB2YWx1ZSBkYXRhIGZyb20gZGF0YWJhc2Ugd2hpbGUgYWR2YW5jaW5nIGluZGV4
IGN1cnNvciIpOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1
bHQgU1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZChTUUxpdGVDdXJzCiAK
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAgICBvYmplY3RT
dG9yZVN0YXRlbWVudC5nZXRDb2x1bW5CbG9iQXNWZWN0b3IoMCwga2V5RGF0YSk7Ci0gICAgICAg
ICAgICByZWNvcmQucmVjb3JkLnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxJREJWYWx1ZT4oVGhy
ZWFkU2FmZURhdGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSk7CisgICAgICAgICAg
ICByZWNvcmQucmVjb3JkLnZhbHVlID0gbWFrZVVuaXF1ZTxJREJWYWx1ZT4oVGhyZWFkU2FmZURh
dGFCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGtleURhdGEpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
cmVzdWx0ID09IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0
aGF0IHRoZSByZWNvcmQgd2UncmUgdHJ5aW5nIHRvIHJldHJpZXZlIGhhcyBiZWVuIHJlbW92ZWQg
ZnJvbSB0aGUgb2JqZWN0IHN0b3JlLgogICAgICAgICAgICAgLy8gU2tpcCBvdmVyIGl0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYTZhM2M1ZmZmMzM4MGMyNWVmNzM2MWU2
ODhiZWYzNmMwNjE1ZmM4My4uZDIxMmRlMmI2Yjg4YWZmZTBhMzViMGZkMGZkMzNmYzg2N2NlY2Jk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC01OCw3ICs1OCw3IEBAIElE
QkVycm9yIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpiZWdpbihTUUxpdGVEYXRhYmFzZSYgZGF0YWJh
c2UpCiB7CiAgICAgQVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKIAotICAgIG1fc3FsaXRl
VHJhbnNhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZVRyYW5zYWN0aW9uPihkYXRhYmFz
ZSwgbV9pbmZvLm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKKyAgICBt
X3NxbGl0ZVRyYW5zYWN0aW9uID0gbWFrZVVuaXF1ZTxTUUxpdGVUcmFuc2FjdGlvbj4oZGF0YWJh
c2UsIG1faW5mby5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAg
bV9zcWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4oKTsKIAogICAgIGlmIChtX3NxbGl0ZVRyYW5zYWN0
aW9uLT5pblByb2dyZXNzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCA0YTUxOTRk
OTIxNWJiNjE1ZDNhZDgwMjc4MjY4MWY0YzIzMmQ1N2RmLi45ZjNhZjExMDllOWQ0ZGJhZjk5OTQ1
Y2E5ZDI3ZjMzODc2YTQ1N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTQzMyw3
ICs0MzMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVCYWNraW5nU3RvcmUo
dWludDY0X3QgZGVsZXRlZFZlcnNpb24pCiAgICAgLy8gd2Ugd29uJ3QgaGF2ZSBhIG1fbW9zdFJl
Y2VudERlbGV0ZWREYXRhYmFzZUluZm8uIEluIHRoYXQgY2FzZSwgd2UnbGwgbWFudWZhY3R1cmUg
b25lIHVzaW5nIHRoZQogICAgIC8vIHBhc3NlZCBpbiBkZWxldGVkVmVyc2lvbiBhcmd1bWVudC4K
ICAgICBpZiAoIW1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8pCi0gICAgICAgIG1fbW9z
dFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBkZWxldGVkVmVyc2lvbik7CisgICAg
ICAgIG1fbW9zdFJlY2VudERlbGV0ZWREYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4obV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLCBkZWxldGVkVmVyc2lvbik7CiAK
ICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdCkgewogICAgICAgICBtX2N1cnJlbnRPcGVu
REJSZXF1ZXN0LT5ub3RpZnlEaWREZWxldGVEYXRhYmFzZSgqbV9tb3N0UmVjZW50RGVsZXRlZERh
dGFiYXNlSW5mbyk7CkBAIC03ODQsNyArNzg0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkT3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8sIGNvbnN0IEkK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUiKTsKICAgICAKLSAgICBtX2Rh
dGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKKyAg
ICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihpbmZvKTsKICAg
ICBtX2JhY2tpbmdTdG9yZU9wZW5FcnJvciA9IGVycm9yOwogCiAgICAgQVNTRVJUKG1faXNPcGVu
aW5nQmFja2luZ1N0b3JlKTsKQEAgLTE3MzEsNyArMTczMSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID09IHRyYW5z
YWN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rp
b24gfHwgJm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5kYXRhYmFzZUNvbm5lY3Rpb24oKSA9
PSBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24pOwogICAgICAgICBBU1NFUlQobV92
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwotICAgICAg
ICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOworICAgICAg
ICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwogICAgIH0KIAogICAg
IElEQkVycm9yIHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkID8gdHJhbnNhY3Rpb24tPnJlc3VsdCgpIDog
ZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggZjE3YTRlNTUyM2ZiNWY2MWIwMjZhMDkxNDdmODE0MWQ1YjY0MTM5YS4uODU0MGNhNzg2ZDU3
MzU4ZDk4MmM3M2U2NDYwZjdmOGYwYTg4MzQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNTEsNyArNTEsNyBAQCBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFi
YXNlQ29ubgogICAgIEFTU0VSVChkYXRhYmFzZSk7CiAKICAgICBpZiAobV90cmFuc2FjdGlvbklu
Zm8ubW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkKLSAgICAgICAg
bV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZv
PihkYXRhYmFzZS0+aW5mbygpKTsKKyAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IG1h
a2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPihkYXRhYmFzZS0+aW5mbygpKTsKIAogICAgIGlmIChh
dXRvKiBzZXJ2ZXIgPSBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+c2VydmVyKCkpCiAgICAgICAgIHNl
cnZlci0+cmVnaXN0ZXJUcmFuc2FjdGlvbigqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAppbmRl
eCBiMTBkODQwOTliMjUyOGU2ZjczYzI4YjE1MDRhOGE5MzI0ZDBiMjFhLi4yMTY0MTZhZmExMWNm
MjU1ZDM2ZGVmYjNlZmYzNmVmYWYxOTU3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAgSURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKCkKIAogSURCUmVxdWVz
dERhdGE6OklEQlJlcXVlc3REYXRhKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5
JiBjb25uZWN0aW9uUHJveHksIGNvbnN0IElEQk9wZW5EQlJlcXVlc3QmIHJlcXVlc3QpCiAgICAg
OiBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25Qcm94eS5zZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihzdGQ6Om1ha2Vf
dW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oY29ubmVjdGlvblByb3h5LCByZXF1ZXN0KSkK
KyAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIobWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+KGNvbm5lY3Rpb25Qcm94eSwgcmVxdWVzdCkpCiAgICAgLCBtX2RhdGFiYXNlSWRlbnRpZmll
cihyZXF1ZXN0LmRhdGFiYXNlSWRlbnRpZmllcigpKQogICAgICwgbV9yZXF1ZXN0ZWRWZXJzaW9u
KHJlcXVlc3QudmVyc2lvbigpKQogICAgICwgbV9yZXF1ZXN0VHlwZShyZXF1ZXN0LnJlcXVlc3RU
eXBlKCkpCkBAIC00OSw4ICs0OSw4IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShj
b25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByCiAKIElEQlJl
cXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9u
JiBvcGVyYXRpb24pCiAgICAgOiBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKG9wZXJhdGlv
bi50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkuY29ubmVjdGlvblByb3h5KCkuc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIoKSkKLSAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIoc3RkOjptYWtlX3Vu
aXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpKQotICAg
ICwgbV90cmFuc2FjdGlvbklkZW50aWZpZXIoc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlk
ZW50aWZpZXI+KG9wZXJhdGlvbi50cmFuc2FjdGlvbklkZW50aWZpZXIoKSkpCisgICAgLCBtX3Jl
cXVlc3RJZGVudGlmaWVyKG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRp
b24uaWRlbnRpZmllcigpKSkKKyAgICAsIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKG1ha2VVbmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihvcGVyYXRpb24udHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkpKQogICAgICwgbV9vYmplY3RTdG9yZUlkZW50aWZpZXIob3BlcmF0aW9uLm9iamVjdFN0b3Jl
SWRlbnRpZmllcigpKQogICAgICwgbV9pbmRleElkZW50aWZpZXIob3BlcmF0aW9uLmluZGV4SWRl
bnRpZmllcigpKQogewpAQCAtNTgsNyArNTgsNyBAQCBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVz
dERhdGEoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQogICAgICAg
ICBtX2luZGV4UmVjb3JkVHlwZSA9IG9wZXJhdGlvbi5pbmRleFJlY29yZFR5cGUoKTsKIAogICAg
IGlmIChvcGVyYXRpb24uY3Vyc29ySWRlbnRpZmllcigpKQotICAgICAgICBtX2N1cnNvcklkZW50
aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlv
bi5jdXJzb3JJZGVudGlmaWVyKCkpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtl
VW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKm9wZXJhdGlvbi5jdXJzb3JJZGVudGlmaWVy
KCkpOwogfQogCiBJREJSZXF1ZXN0RGF0YTo6SURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVz
dERhdGEmIG90aGVyKQpAQCAtNzEsMTEgKzcxLDExIEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1
ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgb3RoZXIpCiAgICAgLCBtX3JlcXVlc3RUeXBl
KG90aGVyLm1fcmVxdWVzdFR5cGUpCiB7CiAgICAgaWYgKG90aGVyLm1fcmVxdWVzdElkZW50aWZp
ZXIpCi0gICAgICAgIG1fcmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBt
X3JlcXVlc3RJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpv
dGhlci5tX3JlcXVlc3RJZGVudGlmaWVyKTsKICAgICBpZiAob3RoZXIubV90cmFuc2FjdGlvbklk
ZW50aWZpZXIpCi0gICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmll
cik7CisgICAgICAgIG1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNv
dXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX3RyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYg
KG90aGVyLm1fY3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgbV9jdXJzb3JJZGVudGlmaWVyID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpvdGhlci5tX2N1cnNvcklk
ZW50aWZpZXIpOworICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBtYWtlVW5pcXVlPElEQlJl
c291cmNlSWRlbnRpZmllcj4oKm90aGVyLm1fY3Vyc29ySWRlbnRpZmllcik7CiB9CiAKIElEQlJl
cXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJSZXF1ZXN0RGF0YSYgdGhhdCwgSXNv
bGF0ZWRDb3B5VGFnKQpAQCAtMTAyLDExICsxMDIsMTEgQEAgdm9pZCBJREJSZXF1ZXN0RGF0YTo6
aXNvbGF0ZWRDb3B5KGNvbnN0IElEQlJlcXVlc3REYXRhJiBzb3VyY2UsIElEQlJlcXVlc3REYXRh
JgogICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSWRlbnRpZmllciA9IHNvdXJjZS5tX2Rh
dGFiYXNlSWRlbnRpZmllci0+aXNvbGF0ZWRDb3B5KCk7CiAKICAgICBpZiAoc291cmNlLm1fcmVx
dWVzdElkZW50aWZpZXIpCi0gICAgICAgIGRlc3RpbmF0aW9uLm1fcmVxdWVzdElkZW50aWZpZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKnNvdXJjZS5tX3JlcXVl
c3RJZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9yZXF1ZXN0SWRlbnRpZmllciA9
IG1ha2VVbmlxdWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fcmVxdWVzdElkZW50
aWZpZXIpOwogICAgIGlmIChzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpCi0gICAgICAg
IGRlc3RpbmF0aW9uLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3VyY2UubV90cmFuc2FjdGlvbklkZW50aWZpZXIpOwor
ICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSWRlbnRpZmllciA9IG1ha2VVbmlxdWU8
SURCUmVzb3VyY2VJZGVudGlmaWVyPigqc291cmNlLm1fdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsK
ICAgICBpZiAoc291cmNlLm1fY3Vyc29ySWRlbnRpZmllcikKLSAgICAgICAgZGVzdGluYXRpb24u
bV9jdXJzb3JJZGVudGlmaWVyID0gc3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZp
ZXI+KCpzb3VyY2UubV9jdXJzb3JJZGVudGlmaWVyKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9j
dXJzb3JJZGVudGlmaWVyID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCpzb3Vy
Y2UubV9jdXJzb3JJZGVudGlmaWVyKTsKIH0KIAogdWludDY0X3QgSURCUmVxdWVzdERhdGE6OnNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKaW5kZXggNDVj
ZmZhZWE2MDNhNTNiNTk5MDRjOGIxNGI3YTFkZWY3ZDI1ZjMxMC4uNDA4YjRlNDYyODczMzdiOWFj
MzQ0YWZiZjQ2OTE1ODY4ZTgwZjM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmgKQEAgLTE1Niw3ICsxNTYs
NyBAQCBib29sIElEQlJlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVx
dWVzdERhdGEmIHJlcXVlc3QpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5p
cXVlPElEQlJlc291cmNlSWRlbnRpZmllcj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElE
QlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50
aWZpZXI+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJlcXVlc3QubV9yZXF1ZXN0SWRlbnRpZmllciA9
IFdURk1vdmUob2JqZWN0KTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBib29sIElEQlJlcXVlc3REYXRh
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCUmVxdWVzdERhdGEmIHJlcXVlc3QpCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGhhc09iamVjdCkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCUmVzb3VyY2VJ
ZGVudGlmaWVyPiBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlJlc291cmNlSWRlbnRpZmll
cj4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2Jq
ZWN0ID0gbWFrZVVuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIHJlcXVlc3QubV90cmFuc2FjdGlvbklkZW50aWZpZXIgPSBXVEZNb3ZlKG9iamVjdCk7CkBA
IC0xNzQsNyArMTc0LDcgQEAgYm9vbCBJREJSZXF1ZXN0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNPYmplY3QpIHsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPElEQlJlc291cmNlSWRlbnRpZmllcj4gb2JqZWN0ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxJREJSZXNvdXJjZUlkZW50aWZpZXI+IG9iamVjdCA9IG1ha2VVbmlxdWU8SURC
UmVzb3VyY2VJZGVudGlmaWVyPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmpl
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXF1ZXN0Lm1fY3Vyc29y
SWRlbnRpZmllciA9IFdURk1vdmUob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAppbmRleCBhODk0
NTRlNmU2M2Y2ZWI3Y2I1MDM4YjljOTMyZmEyMTg2MzNlZGM2Li40Y2JkNWQ5YmRmMGE4NTIzYmY3
ZjUyYWM1YmM1Y2I0YjdlZDEwNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC01NywxNSArNTcs
MTUgQEAgSURCUmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXN1bHREYXRhJiBv
dGhlcikKICAgICAsIG1fcmVzdWx0SW50ZWdlcihvdGhlci5tX3Jlc3VsdEludGVnZXIpCiB7CiAg
ICAgaWYgKG90aGVyLm1fZGF0YWJhc2VJbmZvKQotICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3RoZXIubV9kYXRhYmFzZUluZm8pOwor
ICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqb3Ro
ZXIubV9kYXRhYmFzZUluZm8pOwogICAgIGlmIChvdGhlci5tX3RyYW5zYWN0aW9uSW5mbykKLSAg
ICAgICAgbV90cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9u
SW5mbz4oKm90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbklu
Zm8gPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKm90aGVyLm1fdHJhbnNhY3Rpb25J
bmZvKTsKICAgICBpZiAob3RoZXIubV9yZXN1bHRLZXkpCi0gICAgICAgIG1fcmVzdWx0S2V5ID0g
c3RkOjptYWtlX3VuaXF1ZTxJREJLZXlEYXRhPigqb3RoZXIubV9yZXN1bHRLZXkpOworICAgICAg
ICBtX3Jlc3VsdEtleSA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKm90aGVyLm1fcmVzdWx0S2V5
KTsKICAgICBpZiAob3RoZXIubV9nZXRSZXN1bHQpCi0gICAgICAgIG1fZ2V0UmVzdWx0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3VsdCk7CisgICAgICAg
IG1fZ2V0UmVzdWx0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCpvdGhlci5tX2dldFJlc3Vs
dCk7CiAgICAgaWYgKG90aGVyLm1fZ2V0QWxsUmVzdWx0KQotICAgICAgICBtX2dldEFsbFJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqb3RoZXIubV9nZXRBbGxSZXN1
bHQpOworICAgICAgICBtX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0
Pigqb3RoZXIubV9nZXRBbGxSZXN1bHQpOwogfQogCiBJREJSZXN1bHREYXRhOjpJREJSZXN1bHRE
YXRhKGNvbnN0IElEQlJlc3VsdERhdGEmIHRoYXQsIElzb2xhdGVkQ29weVRhZykKQEAgLTg3LDE1
ICs4NywxNSBAQCB2b2lkIElEQlJlc3VsdERhdGE6Omlzb2xhdGVkQ29weShjb25zdCBJREJSZXN1
bHREYXRhJiBzb3VyY2UsIElEQlJlc3VsdERhdGEmIGRlcwogICAgIGRlc3RpbmF0aW9uLm1fcmVz
dWx0SW50ZWdlciA9IHNvdXJjZS5tX3Jlc3VsdEludGVnZXI7CiAKICAgICBpZiAoc291cmNlLm1f
ZGF0YWJhc2VJbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX2RhdGFiYXNlSW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqc291cmNlLm1fZGF0YWJhc2VJbmZvLCBJREJE
YXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fZGF0YWJh
c2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpzb3VyY2UubV9kYXRhYmFzZUlu
Zm8sIElEQkRhdGFiYXNlSW5mbzo6SXNvbGF0ZWRDb3B5KTsKICAgICBpZiAoc291cmNlLm1fdHJh
bnNhY3Rpb25JbmZvKQotICAgICAgICBkZXN0aW5hdGlvbi5tX3RyYW5zYWN0aW9uSW5mbyA9IHN0
ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigqc291cmNlLm1fdHJhbnNhY3Rpb25J
bmZvLCBJREJUcmFuc2FjdGlvbkluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0
aW9uLm1fdHJhbnNhY3Rpb25JbmZvID0gbWFrZVVuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KCpz
b3VyY2UubV90cmFuc2FjdGlvbkluZm8sIElEQlRyYW5zYWN0aW9uSW5mbzo6SXNvbGF0ZWRDb3B5
KTsKICAgICBpZiAoc291cmNlLm1fcmVzdWx0S2V5KQotICAgICAgICBkZXN0aW5hdGlvbi5tX3Jl
c3VsdEtleSA9IHN0ZDo6bWFrZV91bmlxdWU8SURCS2V5RGF0YT4oKnNvdXJjZS5tX3Jlc3VsdEtl
eSwgSURCS2V5RGF0YTo6SXNvbGF0ZWRDb3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24ubV9yZXN1
bHRLZXkgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCpzb3VyY2UubV9yZXN1bHRLZXksIElEQktl
eURhdGE6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYgKHNvdXJjZS5tX2dldFJlc3VsdCkKLSAgICAg
ICAgZGVzdGluYXRpb24ubV9nZXRSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3Vs
dD4oKnNvdXJjZS5tX2dldFJlc3VsdCwgSURCR2V0UmVzdWx0OjpJc29sYXRlZENvcHkpOworICAg
ICAgICBkZXN0aW5hdGlvbi5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0Pigq
c291cmNlLm1fZ2V0UmVzdWx0LCBJREJHZXRSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiAgICAgaWYg
KHNvdXJjZS5tX2dldEFsbFJlc3VsdCkKLSAgICAgICAgZGVzdGluYXRpb24ubV9nZXRBbGxSZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkdldEFsbFJlc3VsdD4oKnNvdXJjZS5tX2dldEFsbFJl
c3VsdCwgSURCR2V0QWxsUmVzdWx0OjpJc29sYXRlZENvcHkpOworICAgICAgICBkZXN0aW5hdGlv
bi5tX2dldEFsbFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigqc291cmNlLm1f
Z2V0QWxsUmVzdWx0LCBJREJHZXRBbGxSZXN1bHQ6Oklzb2xhdGVkQ29weSk7CiB9CiAKIElEQlJl
c3VsdERhdGEgSURCUmVzdWx0RGF0YTo6ZXJyb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQpAQCAtMTExLDcgKzEx
MSw3IEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2Vzcyhj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlCiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQg
eyByZXF1ZXN0SWRlbnRpZmllciB9OwogICAgIHJlc3VsdC5tX3R5cGUgPSBJREJSZXN1bHRUeXBl
OjpPcGVuRGF0YWJhc2VTdWNjZXNzOwogICAgIHJlc3VsdC5tX2RhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQubV9kYXRhYmFz
ZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oY29ubmVjdGlvbi5kYXRh
YmFzZSgpLT5pbmZvKCkpOworICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8
SURCRGF0YWJhc2VJbmZvPihjb25uZWN0aW9uLmRhdGFiYXNlKCktPmluZm8oKSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxLDE1ICsxMjEsMTUgQEAgSURCUmVzdWx0RGF0YSBJREJS
ZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmkKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IHJlcXVlc3RJZGVudGlmaWVyIH07CiAg
ICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6Ok9wZW5EYXRhYmFzZVVwZ3JhZGVOZWVk
ZWQ7CiAgICAgcmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0
aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpLmlkZW50aWZpZXIoKTsKLSAgICByZXN1bHQubV9kYXRh
YmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24u
ZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJhc2UoKS0+aW5mbygpKTsKLSAgICByZXN1bHQubV90
cmFuc2FjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4odHJh
bnNhY3Rpb24uaW5mbygpKTsKKyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBtYWtlVW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4odHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkuZGF0YWJh
c2UoKS0+aW5mbygpKTsKKyAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBtYWtlVW5pcXVl
PElEQlRyYW5zYWN0aW9uSW5mbz4odHJhbnNhY3Rpb24uaW5mbygpKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCiBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmRlbGV0ZURhdGFiYXNlU3Vj
Y2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBJREJEYXRhYmFzZUluZm8mIGluZm8pCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQge0lE
QlJlc3VsdFR5cGU6OkRlbGV0ZURhdGFiYXNlU3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsK
LSAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oaW5mbyk7CisgICAgcmVzdWx0Lm1fZGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJE
YXRhYmFzZUluZm8+KGluZm8pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3MSwyMSAr
MTcxLDIxIEBAIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6cmVuYW1lSW5kZXhTdWNjZXNz
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxCiBJREJSZXN1bHREYXRhIElEQlJlc3Vs
dERhdGE6OnB1dE9yQWRkU3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiByZXN1bHRLZXkpCiB7CiAgICAgSURCUmVz
dWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpQdXRPckFkZFN1Y2Nlc3MsIHJlcXVlc3RJ
ZGVudGlmaWVyIH07Ci0gICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gc3RkOjptYWtlX3VuaXF1ZTxJ
REJLZXlEYXRhPihyZXN1bHRLZXkpOworICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IG1ha2VVbmlx
dWU8SURCS2V5RGF0YT4ocmVzdWx0S2V5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJS
ZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRS
ZXN1bHQpCiB7CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRS
ZWNvcmRTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAgIHJlc3VsdC5tX2dldFJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOworICAgIHJlc3Vs
dC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PihnZXRSZXN1bHQpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0QWxs
UmVjb3Jkc1N1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgSURCR2V0QWxsUmVzdWx0JiBnZXRBbGxSZXN1bHQpCiB7CiAgICAgSURCUmVz
dWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpHZXRBbGxSZWNvcmRzU3VjY2VzcywgcmVx
dWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRBbGxSZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKKyAgICByZXN1bHQubV9nZXRB
bGxSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldEFsbFJlc3VsdD4oZ2V0QWxsUmVzdWx0KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMDQsMTQgKzIwNCwxNCBAQCBJREJSZXN1bHREYXRh
IElEQlJlc3VsdERhdGE6OmRlbGV0ZVJlY29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiByZQogSURCUmVzdWx0RGF0YSBJREJSZXN1bHREYXRhOjpvcGVuQ3Vyc29yU3VjY2Vz
cyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBJ
REJHZXRSZXN1bHQmIGdldFJlc3VsdCkKIHsKICAgICBJREJSZXN1bHREYXRhIHJlc3VsdCB7IElE
QlJlc3VsdFR5cGU6Ok9wZW5DdXJzb3JTdWNjZXNzLCByZXF1ZXN0SWRlbnRpZmllciB9OwotICAg
IHJlc3VsdC5tX2dldFJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0UmVzdWx0PihnZXRS
ZXN1bHQpOworICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0
PihnZXRSZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQlJlc3VsdERhdGEgSURC
UmVzdWx0RGF0YTo6aXRlcmF0ZUN1cnNvclN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQpCiB7
CiAgICAgSURCUmVzdWx0RGF0YSByZXN1bHQgeyBJREJSZXN1bHRUeXBlOjpJdGVyYXRlQ3Vyc29y
U3VjY2VzcywgcmVxdWVzdElkZW50aWZpZXIgfTsKLSAgICByZXN1bHQubV9nZXRSZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKKyAgICByZXN1bHQubV9n
ZXRSZXN1bHQgPSBtYWtlVW5pcXVlPElEQkdldFJlc3VsdD4oZ2V0UmVzdWx0KTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAppbmRleCA3MTdiM2UyZGU1M2IzNTNmZWI2ZGQ3
NTUwMGEwZTVlNjhjOTQ3YTNmLi42MjA2MmExZTI5NWY3YjU5ODE1ODk1YjU3YmVjMDA4ZTViMTg3
NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXN1bHREYXRhLmgKQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVj
b2RlciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2Jq
ZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CisgICAgICAgIGF1dG8g
b2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCk7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgICAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0xOTMs
NyArMTkzLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0
YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc09iamVjdCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhh
c09iamVjdCkgewotICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJh
bnNhY3Rpb25JbmZvPigpOworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCVHJh
bnNhY3Rpb25JbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQog
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fdHJhbnNh
Y3Rpb25JbmZvID0gV1RGTW92ZShvYmplY3QpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRl
Y29kZShEZWNvZGVyJiBkCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3QpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKLSAgICAgICAg
YXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPElEQktleURhdGE+KCk7CisgICAgICAgIGF1
dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJLZXlEYXRhPigpOwogICAgICAgICBPcHRpb25hbDxJ
REJLZXlEYXRhPiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsKICAgICAg
ICAgaWYgKCFvcHRpb25hbCkKQEAgLTIxNCw3ICsyMTQsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBPcHRpb25hbDxJREJSZXN1bHREYXRhPiBJREJSZXN1bHREYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7Ci0gICAgICAgIGF1dG8gb2JqZWN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CisgICAgICAgIGF1dG8gb2JqZWN0
ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoKm9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBy
ZXN1bHQubV9nZXRSZXN1bHQgPSBXVEZNb3ZlKG9iamVjdCk7CkBAIC0yMjMsNyArMjIzLDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4gSURCUmVzdWx0
RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVj
dCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewot
ICAgICAgICBhdXRvIG9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCR2V0QWxsUmVzdWx0Pigp
OworICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOwog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0QWxsUmVzdWx0ID0gV1RGTW92ZShv
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlRyYW5zYWN0aW9uSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAppbmRleCA5ODNjMWMxMWM5OWI0NWI2
Y2U1NDRkZmNhYzAzN2U0YzczNzI5NWMzLi40ZmI5OTkxOWY2N2Q1ZjdjOWFiYzEwOWUyZTMwMDBj
Y2U0YzQ0MDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcApAQCAtNTUsNyArNTUsNyBA
QCBJREJUcmFuc2FjdGlvbkluZm8gSURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJzaW9uQ2hhbmdlKGNv
bnN0IElEQlNlcnZlcjo6SURCQ29ubmVjdAogICAgIElEQlRyYW5zYWN0aW9uSW5mbyByZXN1bHQo
KElEQlJlc291cmNlSWRlbnRpZmllcihjb25uZWN0aW9uKSkpOwogICAgIHJlc3VsdC5tX21vZGUg
PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2U7CiAgICAgcmVzdWx0Lm1fbmV3VmVy
c2lvbiA9IG5ld1ZlcnNpb247Ci0gICAgcmVzdWx0Lm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4ob3JpZ2luYWxEYXRhYmFzZUluZm8pOwor
ICAgIHJlc3VsdC5tX29yaWdpbmFsRGF0YWJhc2VJbmZvID0gbWFrZVVuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KG9yaWdpbmFsRGF0YWJhc2VJbmZvKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBA
IC02Nyw3ICs2Nyw3IEBAIElEQlRyYW5zYWN0aW9uSW5mbzo6SURCVHJhbnNhY3Rpb25JbmZvKGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAsIG1fb2JqZWN0U3RvcmVzKGluZm8u
bV9vYmplY3RTdG9yZXMpCiB7CiAgICAgaWYgKGluZm8ubV9vcmlnaW5hbERhdGFiYXNlSW5mbykK
LSAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0
YWJhc2VJbmZvPigqaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZvKTsKKyAgICAgICAgbV9vcmln
aW5hbERhdGFiYXNlSW5mbyA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigqaW5mby5tX29y
aWdpbmFsRGF0YWJhc2VJbmZvKTsKIH0KIAogSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2Fj
dGlvbkluZm8oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiB0aGF0LCBJc29sYXRlZENvcHlUYWcp
CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25JbmZvOjppc29sYXRlZENvcHko
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBzb3VyY2UsIElEQlRyYW5zCiAgICAgICAgIGRlc3Rp
bmF0aW9uLm1fb2JqZWN0U3RvcmVzLnVuY2hlY2tlZEFwcGVuZChvYmplY3RTdG9yZS5pc29sYXRl
ZENvcHkoKSk7CiAKICAgICBpZiAoc291cmNlLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pCi0gICAg
ICAgIGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxEYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX29yaWdpbmFsRGF0YWJhc2VJbmZvLCBJREJEYXRh
YmFzZUluZm86Oklzb2xhdGVkQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fb3JpZ2luYWxE
YXRhYmFzZUluZm8gPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKnNvdXJjZS5tX29yaWdp
bmFsRGF0YWJhc2VJbmZvLCBJREJEYXRhYmFzZUluZm86Oklzb2xhdGVkQ29weSk7CiB9CiAKICNp
ZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKaW5kZXggOTMwZDgwMjM2MTgy
MzJhYmY2YzA4MWRmMjEyOTU4ZmY2MmE1NTVlZC4uN2I5NDc3ZThlYzU1NGM5MTNkMmE0OGJlNTU4
ZTE2MzNkOTNmY2U5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uaApAQCAtMTE5LDcgKzExOSw3
IEBAIGJvb2wgSURCVHJhbnNhY3Rpb25JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURC
VHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
aGFzT2JqZWN0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkRhdGFi
YXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW5mby5tX29yaWdpbmFsRGF0YWJhc2VJbmZv
ID0gV1RGTW92ZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCA4N2Ix
YWRjZDk2NjYyMDZlYzk3MTY2MDM2MmI0MGU1YWQ3ZDgwMWQxLi5jOTY4OTQ0NGZkMjI0MDJjZWQy
MTEzYjNiZmEwYjlhNTI2YzY3M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBSZWY8SW5Qcm9jZXNzSURCU2VydmVyPiBJblByb2Nlc3NJREJTZXJ2ZXI6
OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogU3RvcmFnZVF1b3RhTWFuYWdl
ciogSW5Qcm9jZXNzSURCU2VydmVyOjpxdW90YU1hbmFnZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4pCiB7CiAgICAgcmV0dXJuIG1fcXVvdGFNYW5hZ2Vycy5lbnN1cmUob3JpZ2luLCBbXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0
b3JhZ2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90YSwgdWlu
dDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNr
KSB7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFN0b3JhZ2VRdW90YU1hbmFnZXI+KFN0b3Jh
Z2VRdW90YU1hbmFnZXI6OmRlZmF1bHRRdW90YSgpLCBbXSh1aW50NjRfdCBxdW90YSwgdWludDY0
X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUluY3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7
CiAgICAgICAgICAgICBjYWxsYmFjayhxdW90YSArIGN1cnJlbnRTcGFjZSArIHNwYWNlSW5jcmVh
c2UpOwogICAgICAgICB9KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY2FwYWJpbGl0aWVzL05hdmlnYXRvck1l
ZGlhQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBhYmls
aXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGY4NzI1NzRlODVjMjQw
ODc3MmIxZDExYTJlOGJjYjZkZDYwZGEyOTcuLmEzMWJhZGI1NGFjOTgxZTBlM2JhZGFmZTIwOTg3
ODI5ZDNmNzQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjYXBh
YmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjYXBhYmlsaXRpZXMvTmF2aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIE5hdmlnYXRvck1lZGlhQ2FwYWJpbGl0aWVzJiBOYXZpZ2F0
b3JNZWRpYUNhcGFiaWxpdGllczo6ZnJvbShOYXZpZ2F0b3ImIG5hdmlnYXRvCiB7CiAgICAgTmF2
aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0
b3JNZWRpYUNhcGFiaWxpdGllcyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbSgmbmF2aWdh
dG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFDYXBh
YmlsaXRpZXM+KCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2
aWdhdG9yTWVkaWFDYXBhYmlsaXRpZXM+KCk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBw
bGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJm5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5h
Z2VyLmNwcAppbmRleCA1MGQwYmIwYjFlZDUzYTQzMjQ1OGQ5ZmI3MTM1NzBhZTBlY2EwZDA2Li5i
OTc0MzRjNGU2MjQ1ZDczY2NmMmQ2MjVhMGExYjAzZTEyOTBjYmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJNZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV2ViTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25zdCBTdHJpbmcm
CiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6
bW9ja1BpY2tlcigpCiB7CiAgICAgaWYgKCFtX3BpY2tlck92ZXJyaWRlKQotICAgICAgICBtX3Bp
Y2tlck92ZXJyaWRlID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TW9jaz4oKnRoaXMpOworICAgICAgICBtX3BpY2tlck92ZXJyaWRlID0gbWFrZVVuaXF1ZTxNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jaz4oKnRoaXMpOwogCiAgICAgcmV0dXJuICptX3BpY2tl
ck92ZXJyaWRlLmdldCgpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHVpbnQ2NF90IFdlYk1lZGlh
U2Vzc2lvbk1hbmFnZXI6OmFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KFdlYk1lZGlhU2Vz
c2lvbk1hCiAKICAgICBMT0coTWVkaWEsICJXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjphZGRQbGF5
YmFja1RhcmdldFBpY2tlckNsaWVudCglcCArICVsbHUpIiwgJmNsaWVudCwgY29udGV4dElkKTsK
IAotICAgIG1fY2xpZW50U3RhdGUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50U3RhdGU+
KGNsaWVudCwgY29udGV4dElkKSk7CisgICAgbV9jbGllbnRTdGF0ZS5hcHBlbmQobWFrZVVuaXF1
ZTxDbGllbnRTdGF0ZT4oY2xpZW50LCBjb250ZXh0SWQpKTsKIAogICAgIGlmIChtX2V4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlIHx8IG1fcGxheWJhY2tUYXJnZXQpCiAgICAgICAgIHNjaGVk
dWxlRGVsYXllZFRhc2soSW5pdGlhbENvbmZpZ3VyYXRpb25UYXNrIHwgVGFyZ2V0Q2xpZW50c0Nv
bmZpZ3VyYXRpb25UYXNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZDQxN2ExMjE2OTExMTIxNWQ1NDIyOTFlMDNjNTlk
NWQ2ZTdlYjNmNC4uN2NiYzZhMTMzNTFlMGQzMmNlMjU1YTliYWRjYjk3NDRkYWY0ZDQ0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAKQEAgLTE3OCw5ICsxNzgsOSBAQCBNZWRpYVRpbWUgTWVkaWFTb3VyY2U6OmN1cnJlbnRUaW1l
KCkgY29uc3QKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNl
OjpidWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYnVmZmVyZWQgJiYgbV9hY3RpdmVTb3Vy
Y2VCdWZmZXJzLT5sZW5ndGgoKSAmJiBzdGQ6OmFsbF9vZihtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMt
PmJlZ2luKCksIG1fYWN0aXZlU291cmNlQnVmZmVycy0+ZW5kKCksIFtdKGF1dG8mIGJ1ZmZlcikg
eyByZXR1cm4gIWJ1ZmZlci0+aXNCdWZmZXJlZERpcnR5KCk7IH0pKQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CiAK
LSAgICBtX2J1ZmZlcmVkID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7
CisgICAgbV9idWZmZXJlZCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogICAg
IGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogKm1fYWN0aXZlU291cmNlQnVmZmVycykKICAgICAg
ICAgc291cmNlQnVmZmVyLT5zZXRCdWZmZXJlZERpcnR5KGZhbHNlKTsKIApAQCAtMTkwLDcgKzE5
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpi
dWZmZXJlZCgpIGNvbnN0CiAKICAgICAvLyAxLiBJZiBhY3RpdmVTb3VyY2VCdWZmZXJzLmxlbmd0
aCBlcXVhbHMgMCB0aGVuIHJldHVybiBhbiBlbXB0eSBUaW1lUmFuZ2VzIG9iamVjdCBhbmQgYWJv
cnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKGFjdGl2ZVJhbmdlcy5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZl
cmVkKTsKIAogICAgIC8vIDIuIExldCBhY3RpdmUgcmFuZ2VzIGJlIHRoZSByYW5nZXMgcmV0dXJu
ZWQgYnkgYnVmZmVyZWQgZm9yIGVhY2ggU291cmNlQnVmZmVyIG9iamVjdCBpbiBhY3RpdmVTb3Vy
Y2VCdWZmZXJzLgogICAgIC8vIDMuIExldCBoaWdoZXN0IGVuZCB0aW1lIGJlIHRoZSBsYXJnZXN0
IHJhbmdlIGVuZCB0aW1lIGluIHRoZSBhY3RpdmUgcmFuZ2VzLgpAQCAtMjAzLDcgKzIwMyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpidWZmZXJl
ZCgpIGNvbnN0CiAKICAgICAvLyBSZXR1cm4gYW4gZW1wdHkgcmFuZ2UgaWYgYWxsIHJhbmdlcyBh
cmUgZW1wdHkuCiAgICAgaWYgKCFoaWdoZXN0RW5kVGltZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigqbV9idWZmZXJlZCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKm1fYnVmZmVyZWQpOwogCiAgICAg
Ly8gNC4gTGV0IGludGVyc2VjdGlvbiByYW5nZXMgZXF1YWwgYSBUaW1lUmFuZ2Ugb2JqZWN0IGNv
bnRhaW5pbmcgYSBzaW5nbGUgcmFuZ2UgZnJvbSAwIHRvIGhpZ2hlc3QgZW5kIHRpbWUuCiAgICAg
bV9idWZmZXJlZC0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgaGlnaGVzdEVuZFRpbWUpOwpA
QCAtMjIxLDcgKzIyMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1l
ZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiAgICAgICAgIG1fYnVmZmVyZWQtPmludGVyc2Vj
dFdpdGgoc291cmNlUmFuZ2VzKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2J1ZmZlcmVkKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJj
ZTo6c2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCkBAIC0zNDQsNyArMzQ0LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OnNldExpdmVTZWVrYWJsZVJhbmdlKGRvdWJs
ZSBzdGFydCwgZG91YmxlIGVuZCkKIAogICAgIC8vIFNldCBsaXZlIHNlZWthYmxlIHJhbmdlIHRv
IGJlIGEgbmV3IG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgY29udGFpbmluZyBhIHNpbmds
ZSByYW5nZQogICAgIC8vIHdob3NlIHN0YXJ0IHBvc2l0aW9uIGlzIHN0YXJ0IGFuZCBlbmQgcG9z
aXRpb24gaXMgZW5kLgotICAgIG1fbGl2ZVNlZWthYmxlID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKKyAgICBtX2xpdmVTZWVrYWJsZSA9IG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3Rh
cnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSk7CiAKICAgICByZXR1cm4geyB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JNZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCmluZGV4IGU0MTgyNzgzOGQ2MmNhMzhmYzNiZjNi
ZTc4ZjhmNGFhOGFlNTI1OTYuLjdiMzU4ZjVlMGRlNDJmYjIyNjhkMzY5MDNlNThkYjVlYjc4ZTkw
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgTmF2aWdhdG9y
TWVkaWFEZXZpY2VzKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6OmZyb20oTmF2aWdhdG9yKiBuYXZp
Z2F0b3IpCiB7CiAgICAgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKiBzdXBwbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8TmF2aWdhdG9yTWVkaWFEZXZpY2VzKj4oU3VwcGxlbWVudDxOYXZpZ2F0b3I+Ojpmcm9t
KG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSkpOwogICAgIGlmICghc3VwcGxlbWVudCkgewot
ICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvck1l
ZGlhRGV2aWNlcz4obmF2aWdhdG9yLT53aW5kb3coKSk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxl
bWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3ItPndpbmRv
dygpKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAg
IHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwCmluZGV4IDhkN2U2M2NjNjA2ZDZkYTE5
ZmJkYjEyZGU1NGZiODU1ZmRmNjJjOTkuLjE0ZGYxMTYxZGFlNjhjYzQ2Y2I0OWVhYWUyMWY1ZWY5
ODllMmFjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBVc2VyTWVk
aWFDb250cm9sbGVyOjp+VXNlck1lZGlhQ29udHJvbGxlcigpCiAKIHZvaWQgcHJvdmlkZVVzZXJN
ZWRpYVRvKFBhZ2UqIHBhZ2UsIFVzZXJNZWRpYUNsaWVudCogY2xpZW50KQogewotICAgIFVzZXJN
ZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFDb250cm9sbGVyOjpzdXBw
bGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xsZXI+KGNsaWVu
dCkpOworICAgIFVzZXJNZWRpYUNvbnRyb2xsZXI6OnByb3ZpZGVUbyhwYWdlLCBVc2VyTWVkaWFD
b250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFVzZXJNZWRpYUNvbnRyb2xs
ZXI+KGNsaWVudCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTZWN1cmUoRG9jdW1lbnRM
b2FkZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggYWFhNDAwMDIwNzM2NWZmY2JlNTI4MTI4ZTI4Y2Uw
MmY2YzYwN2NkZC4uYzk4NWJjMTlhMzFkMDExNDU2NWFiYWJhNWYwNjBlZTUwZGE2MTE0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIFJlZjxSVENEYXRhQ2hhbm5lbEV2ZW50PiBMaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXI6OmNoYW5uZWxFdmVudChTY3JpcHRFeGVjdXRpCiAgICAgaW5pdC5uZWdvdGlh
dGVkID0gZGF0YUNoYW5uZWwtPm5lZ290aWF0ZWQoKTsKICAgICBpbml0LmlkID0gZGF0YUNoYW5u
ZWwtPmlkKCk7CiAKLSAgICBhdXRvIGhhbmRsZXIgPSAgc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUoZGF0YUNoYW5uZWwpKTsKKyAgICBhdXRvIGhh
bmRsZXIgPSAgbWFrZVVuaXF1ZTxMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI+KFdURk1vdmUo
ZGF0YUNoYW5uZWwpKTsKICAgICBhdXRvIGNoYW5uZWwgPSBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRl
KGNvbnRleHQsIFdURk1vdmUoaGFuZGxlciksIGZyb21TdGRTdHJpbmcobGFiZWwpLCBXVEZNb3Zl
KGluaXQpKTsKIAogICAgIHJldHVybiBSVENEYXRhQ2hhbm5lbEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmRhdGFjaGFubmVsRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXND
YW5jZWxhYmxlOjpObywgV1RGTW92ZShjaGFubmVsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGRlZjFmOTFlZWU5ZWQ2ZWM3OGQxM2M2OWVjNDM0
OGYwYWE2OGQzNjcuLmQxYTc0Yjg1NzFiZWU3ZWU1ZTljMzE2MmVjYTJmNGQ2ZmY0MWU0NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0zOTcsNyAr
Mzk3LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVUcmFjayhydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXYKICAgICB9CiAgICAgfQogCi0gICAgcmVj
ZWl2ZXItPnNldEJhY2tlbmQoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJh
Y2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2ZXIpKSk7CisgICAgcmVjZWl2ZXItPnNldEJhY2tlbmQo
bWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ+KFdURk1vdmUocnRjUmVjZWl2
ZXIpKSk7CiAgICAgYXV0byYgdHJhY2sgPSByZWNlaXZlci0+dHJhY2soKTsKICAgICBhZGRQZW5k
aW5nVHJhY2tFdmVudChyZWNlaXZlci5yZWxlYXNlTm9uTnVsbCgpLCB0cmFjaywgcnRjU3RyZWFt
cywgbnVsbHB0cik7CiB9CkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVu
ZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKCkKICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQubmV3UmVt
b3RlVHJhbnNjZWl2ZXIoc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJh
Y2tlbmQ+KFdURk1vdmUocnRjVHJhbnNjZWl2ZXIpKSwgc291cmNlLnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlciht
YWtlVW5pcXVlPExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFu
c2NlaXZlcikpLCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogfQogCkBAIC00OTks
NyArNDk5LDcgQEAgdm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpuZXdUcmFuc2NlaXZlcihy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBUcmFuc2MKICAgICBpZiAoIXNvdXJjZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25uZWN0
aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2Uu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgYXV0byYgbmV3VHJhbnNjZWl2ZXIgPSBtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihtYWtlVW5pcXVlPExpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShydGNUcmFuc2NlaXZlcikpLCBzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSk7CiAKICAgICBhZGRQZW5kaW5nVHJhY2tFdmVudChtYWtlUmVmKG5ld1Ry
YW5zY2VpdmVyLnJlY2VpdmVyKCkpLCBuZXdUcmFuc2NlaXZlci5yZWNlaXZlcigpLnRyYWNrKCks
IHJ0Y1JlY2VpdmVyLT5zdHJlYW1zKCksIG1ha2VSZWYobmV3VHJhbnNjZWl2ZXIpKTsKIH0KQEAg
LTUzNCw3ICs1MzQsNyBAQCBPcHRpb25hbDxMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5k
cz4gTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Y3JlYXRlVHJhbnNjZQogICAgIGlmICghcmVzdWx0
Lm9rKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHRyYW5zY2Vp
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJl
c3VsdC5Nb3ZlVmFsdWUoKSk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IG1ha2VVbmlxdWU8TGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihyZXN1bHQuTW92ZVZhbHVlKCkpOwogICAgIHJl
dHVybiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpCYWNrZW5kcyB7IHRyYW5zY2VpdmVyLT5jcmVh
dGVTZW5kZXJCYWNrZW5kKG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLCBXVEZNb3ZlKHNvdXJjZSkp
LCB0cmFuc2NlaXZlci0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCksIFdURk1vdmUodHJhbnNjZWl2
ZXIpIH07CiB9CiAKQEAgLTU4NSw3ICs1ODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRD
UnRwVHJhbnNjZWl2ZXJCYWNrZW5kPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50Ojp0cmFuc2NlaQog
ewogICAgIGZvciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX2JhY2tlbmQtPkdldFRyYW5zY2VpdmVy
cygpKSB7CiAgICAgICAgIGlmICh0cmFuc2NlaXZlci0+c2VuZGVyKCkuZ2V0KCkgPT0gYmFja2Vu
ZC5ydGNTZW5kZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4ocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UnRw
VHJhbnNjZWl2ZXJJbnRlcmZhY2U+KHRyYW5zY2VpdmVyKSk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlJ0cFRyYW5zY2VpdmVySW50ZXJmYWNlPih0cmFuc2NlaXZlcikpOwogICAg
IH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTY1NCw3ICs2NTQsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBMaWJXZWJSVENNZWRpYUVuZHBvaW50OjpjcmVh
dGVEYXRhQ2hhbm5lbAogewogICAgIGF1dG8gaW5pdCA9IExpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjo6ZnJvbVJUQ0RhdGFDaGFubmVsSW5pdChvcHRpb25zKTsKICAgICBhdXRvIGNoYW5uZWwg
PSBtX2JhY2tlbmQtPkNyZWF0ZURhdGFDaGFubmVsKGxhYmVsLnV0ZjgoKS5kYXRhKCksICZpbml0
KTsKLSAgICByZXR1cm4gY2hhbm5lbCA/IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyPihXVEZNb3ZlKGNoYW5uZWwpKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGNo
YW5uZWwgPyBtYWtlVW5pcXVlPExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcj4oV1RGTW92ZShj
aGFubmVsKSkgOiBudWxscHRyOwogfQogCiB2b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6Ok9u
RGF0YUNoYW5uZWwocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6RGF0YUNoYW5uZWxJbnRlcmZh
Y2U+IGRhdGFDaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjA3ZjE1ZTY0NTdiOWRmY2FjMWMzMzllYTM5ZmVh
MWQ3Nzg1OWQ4Yi4uZmM5MWNjZDBiYmQxZmRiYmE3NjQyZTcwNGYzN2ZlODVjYzcyZmQ1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGVlckNvbm5lY3Rp
b25CYWNrZW5kPiBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlCiAKICAgICBwYWdl
LT5saWJXZWJSVENQcm92aWRlcigpLnNldEVuYWJsZVdlYlJUQ0VuY3J5cHRpb24ocGFnZS0+c2V0
dGluZ3MoKS53ZWJSVENFbmNyeXB0aW9uRW5hYmxlZCgpKTsKIAotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24s
IHBhZ2UtPmxpYldlYlJUQ1Byb3ZpZGVyKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4ocGVlckNvbm5lY3Rpb24sIHBhZ2UtPmxpYldlYlJU
Q1Byb3ZpZGVyKCkpOwogfQogCiBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tlbmQgUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ7CkBAIC0zMTEsNyArMzExLDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpW
aWRlb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmkKICAgICBhdXRv
IHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdU
Rk1vdmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNv
dXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2Vu
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51
bGxwdHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBS
VENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAidmlk
ZW8iX3MsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwg
bnVsbHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAg
ICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7
CkBAIC0zMzQsNyArMzM0LDcgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRp
b1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXUKICAgICBhdXRvIHNv
dXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1v
dmUodHJhY2tJZCkpOwogICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJj
ZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxw
dHIpOworICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2Vu
ZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENS
dHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCAiYXVkaW8i
X3MsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVs
bHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAgICAg
bV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CkBA
IC00MDAsNyArNDAwLDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8UlRDUnRwU2VuZGVyPiBmaW5k
RXhpc3RpbmdTZW5kZXIoY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHAKIEV4Y2VwdGlvbk9yPFJl
ZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYWNr
KE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRz
KQogewogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YlJUQ1VuaWZpZWRQbGFuRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxw
dHIpOworICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFtX2VuZHBvaW50
LT5hZGRUcmFjaygqc2VuZGVyQmFja2VuZCwgdHJhY2ssIG1lZGlhU3RyZWFtSWRzKSkKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYWNr
Il9zIH07CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVy
Pj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cgogICAg
ICAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLmtpbmQoKTsKICAgICAgICAgU3Ry
aW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0
byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kPigqdGhpcywgbnVsbHB0cik7CisgICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VV
bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgICAg
ICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBtYWtlUmVmKHRy
YWNrKSwgVmVjdG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJh
Y2tlbmQpKTsKICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKHRyYWNrS2lu
ZCwgdHJhY2tJZCk7CiAgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZl
cjo6Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShyZWNlaXZlciksIG51bGxwdHIp
OwpAQCAtNDcyLDcgKzQ3Miw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+
IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmllZFBsYW5F
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFN0cmlu
ZyB7IHRyYWNrS2luZCB9LCBpbml0KTsKIAotICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6
bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwor
ICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IG1ha2VVbmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVy
OjpjcmVhdGUoKnRoaXMsIFN0cmluZyh0cmFja0tpbmQpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZN
b3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihX
VEZNb3ZlKG5ld1NlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgdHJh
Y2tLaW5kKTsKIH0KQEAgLTQ4Miw3ICs0ODIsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJh
bnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2Vpdgog
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1Vu
aWZpZWRQbGFuRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gYWRkVW5pZmllZFBsYW5UcmFuc2Nl
aXZlcihXVEZNb3ZlKHRyYWNrKSwgaW5pdCk7CiAKLSAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRy
KTsKKyAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1J0cFNlbmRl
ckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvJiBiYWNrZW5kID0gKnNlbmRlckJh
Y2tlbmQ7CiAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgdHJh
Y2suY29weVJlZigpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsK
ICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKGJhY2tlbmQsIHRyYWNrLCBWZWN0b3I8U3Ry
aW5nPiB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
LmNwcAppbmRleCA2ODUwZTZhODVlOTAyNGJiMTE0NWI2Yjk0MjI5YzBmNjE0MmRmN2FhLi42YWVl
YTEzMzg5MmQyMDYzZjAzNTM5YjhlZWM0ZGI5YmNlNjRkN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZv
aWQgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBT
ZW5kUGFyYW1ldGVycyYgcGFyYW1lCiAKIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVyQmFj
a2VuZD4gTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZDo6Y3JlYXRlRFRNRkJhY2tlbmQoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ0RUTUZTZW5kZXJCYWNrZW5kPiht
X3J0Y1NlbmRlci0+R2V0RHRtZlNlbmRlcigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJX
ZWJSVENEVE1GU2VuZGVyQmFja2VuZD4obV9ydGNTZW5kZXItPkdldER0bWZTZW5kZXIoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IGViODcxZWI3ZGIwMzg4NGY0Y2M3
ZTBhZGVmNjg3ODJlMWMwOTcyZDcuLjVjMGQ3ZTk1ZTJmZDEyZTNmODRmMTdjZmJlYjZkODY3YTUx
ZjJlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4gTGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kOjpjcmVhdGVSZWNlaXZlckJhY2tlbmQoKQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZD4obV9ydGNUcmFu
c2NlaXZlci0+cmVjZWl2ZXIoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGliV2ViUlRDUnRw
UmVjZWl2ZXJCYWNrZW5kPihtX3J0Y1RyYW5zY2VpdmVyLT5yZWNlaXZlcigpKTsKIH0KIAogc3Rk
Ojp1bmlxdWVfcHRyPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+IExpYldlYlJUQ1J0cFRyYW5z
Y2VpdmVyQmFja2VuZDo6Y3JlYXRlU2VuZGVyQmFja2VuZChMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQmIGJhY2tlbmQsIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ6OlNvdXJjZSYmIHNv
dXJjZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kPihiYWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3Vy
Y2UpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPihi
YWNrZW5kLCBtX3J0Y1RyYW5zY2VpdmVyLT5zZW5kZXIoKSwgV1RGTW92ZShzb3VyY2UpKTsKIH0K
IAogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNr
ZW5kOjpkaXJlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAwYzMyOGZhZTQ0MjM1OTkyNTMz
MDcyYzg1ZDZiMzJmZGM2YzEzODM4Li4wZWJhZmY4OWZmYmM1MDAzZTI0NjFiYWRlZTUyMDM5MTE3
MWNiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlm
aWNhdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IE9w
dGlvbgogICAgICwgbV9ib2R5KG9wdGlvbnMuYm9keSkKICAgICAsIG1fdGFnKG9wdGlvbnMudGFn
KQogICAgICwgbV9zdGF0ZShJZGxlKQotICAgICwgbV90YXNrVGltZXIoc3RkOjptYWtlX3VuaXF1
ZTxUaW1lcj4oW3RoaXNdICgpIHsgc2hvdygpOyB9KSkKKyAgICAsIG1fdGFza1RpbWVyKG1ha2VV
bmlxdWU8VGltZXI+KFt0aGlzXSAoKSB7IHNob3coKTsgfSkpCiB7CiAgICAgaWYgKCFvcHRpb25z
Lmljb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gaWNvblVSTCA9IGRvY3VtZW50LmNvbXBs
ZXRlVVJMKG9wdGlvbnMuaWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKaW5kZXgg
YTYyMDM1MzkzYzdmYjNmNmRkZjAxYzVjODlkNzRmM2I1ZWRkMmQ0NC4uZDQ4ZjIwNWE5ZTI0MTRl
MDdkNzIyZjkwMzI1YTdjMzY0ZDQ4OTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNw
cApAQCAtNTgsNyArNTgsNyBAQCBjb25zdCBjaGFyKiBOb3RpZmljYXRpb25Db250cm9sbGVyOjpz
dXBwbGVtZW50TmFtZSgpCiAKIHZvaWQgcHJvdmlkZU5vdGlmaWNhdGlvbihQYWdlKiBwYWdlLCBO
b3RpZmljYXRpb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICBOb3RpZmljYXRpb25Db250cm9sbGVy
Ojpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUo
KSwgc3RkOjptYWtlX3VuaXF1ZTxOb3RpZmljYXRpb25Db250cm9sbGVyPihjbGllbnQpKTsKKyAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8ocGFnZSwgTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxOb3RpZmljYXRpb25Db250cm9s
bGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9ET01XaW5kb3dRdW90YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcAppbmRleCAwM2ZlOWUzODY3
OGY0MDUwNzMyNTUwOWMyMDM4NjdjOWNmODIwZmYxLi5jOThjOTk4NmRlZDZjZDIwNTQyNjE3MjE1
ZjY1MzZjZTU4ZjI3OTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3Rh
L0RPTVdpbmRvd1F1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RP
TVdpbmRvd1F1b3RhLmNwcApAQCAtNTcsNyArNTcsNyBAQCBET01XaW5kb3dRdW90YSogRE9NV2lu
ZG93UXVvdGE6OmZyb20oRE9NV2luZG93KiB3aW5kb3cpCiB7CiAgICAgRE9NV2luZG93UXVvdGEq
IHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxET01XaW5kb3dRdW90YSo+KFN1cHBsZW1lbnQ8RE9N
V2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBs
ZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01XaW5kb3dRdW90YT4od2luZG93KTsKKyAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gbWFr
ZVVuaXF1ZTxET01XaW5kb3dRdW90YT4od2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5l
d1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnRO
YW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA3
YmExZDNkNGIzNjk0NDBjNjRlMTdkZDIwY2E5NDUzOGI4YWQ5Yjc0Li43YTA4MDQ1OTU2OTgzYTMx
ZjZkODM0ZWY3ZWE3NzJmYTY2NzM2YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IE5hdmlnYXRvclN0b3JhZ2VRdW90YSogTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKE5hdmln
YXRvciogbmF2aWdhdG9yKQogewogICAgIE5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3VwcGxlbWVu
dCA9IHN0YXRpY19jYXN0PE5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8TmF2aWdh
dG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1cHBs
ZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxO
YXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yU3RvcmFnZVF1b3RhPih3aW5kb3cpOwogICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlkZVRvKG5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZpZ2F0b3JT
dG9yYWdlUXVvdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9Xb3JrZXJOYXZp
Z2F0b3JTdG9yYWdlUXVvdGEuY3BwCmluZGV4IDk1YzNlNDM2NDczMTYyYTUwZDYxYjVjZTc1MTY1
ZWU2OGIyMWI3MjcuLjFhMWM4NDdkYzQ5N2RjNjQ4NDVmNTZlY2U1OTI2M2E0MjZhZjYzMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2aWdhdG9yU3Rv
cmFnZVF1b3RhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5h
dmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV29ya2VyTmF2aWdhdG9y
U3RvcmFnZVF1b3RhKiBXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20oV29ya2VyTmF2
aWdhdG9yKgogewogICAgIFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSogc3VwcGxlbWVudCA9
IHN0YXRpY19jYXN0PFdvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YSo+KFN1cHBsZW1lbnQ8V29y
a2VyTmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBp
ZiAoIXN1cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+KHdpbmRvdyk7CisgICAgICAgIGF1
dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8V29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3Rh
Pih3aW5kb3cpOwogICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAg
ICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdT
dXBwbGVtZW50KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggMzc5NTY1MjZmYmYy
ODY5MGVjZjAzOTk1MmM1MmY2ZTA0NDZiY2I0Yy4uOTY5YzIzN2Y3YzgxNTUxNTNkZTA3MWVjOTZh
NjFhNGE0NjJkM2Y5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIERP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpcyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpmcm9tKERP
TVdpbmRvdyogd2luZG93KQogewogICAgIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyogc3VwcGxl
bWVudCA9IHN0YXRpY19jYXN0PERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcyo+KFN1cHBsZW1lbnQ8
RE9NV2luZG93Pjo6ZnJvbSh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxET01XaW5kb3dTcGVlY2hTeW50aGVzaXM+KHdpbmRvdyk7CisgICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IG1ha2VVbmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3aW5kb3cpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKICAgICAgICAgcHJvdmlk
ZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
cy5jcHAKaW5kZXggNzJiNTYzZTRiYmY3ZGNlMDNmYTMwODgwZDJmYTc3MGI4OTg2OTNhNC4uZTdi
NjJhMWExN2JkOTZhOWY1YTEzZmQwOWU3NDlhYjRiY2UxOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC03Myw3ICs3Myw3
IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjp2b2ljZXNEaWRDaGFuZ2UoKQogUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplciYgU3BlZWNoU3ludGhlc2lzOjplbnN1cmVQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyKCkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcikKLSAgICAg
ICAgbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKKyAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKTsKICAg
ICByZXR1cm4gKm1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRl
eCA2MmY2OGVjNjYzYTgwMjEyYzZmM2FmN2I4NWUyM2M2YjRmNzQyYTBhLi4yZjU0MjcyYWM1YzAx
ZDBhMjMwZTVjMGRmMDQ1MjRhZmIyYTRlMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtNTYsNyArNTYsNyBA
QCB2b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyhSZWY8QXJyYXlCdWZmZXI+JiYg
YXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKLSAgICBhdXRvIGRlY29kaW5nVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2RpbmdUYXNr
PihXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CisgICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBtYWtl
VW5pcXVlPERlY29kaW5nVGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlLCBXVEZN
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogICAgIG1fcXVl
dWUuYXBwZW5kKFdURk1vdmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5vdGUgdGhhdCBvd25lcnNoaXAg
b2YgdGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1ZXVlLgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGUuY3BwCmluZGV4IGJhOGMyNTVhZTdkN2RhNzNiYzlmZjY1NTQzZjFlMzdiYzk1
NDA0YjMuLjBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZhNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGUuY3BwCkBAIC00MCw4ICs0MCw4IEBAIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2Rl
OjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
CiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlw
ZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8
QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQpKTsKKyAgICBhZGRJbnB1
dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VV
bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBvdXRwdXRDaGFubmVsQ291bnQpKTsKIH0KIAog
Ly8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpIGFzIGFuIG9wdGltaXphdGlvbiBhbGxvd2luZyB0
aGlzIG5vZGUgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaW4tcGxhY2UgcHJvY2Vzc2luZywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZS5jcHAKaW5kZXggYmMxODljMDhjYmVmYzdjMTk2MDY0NjZjMDc2OGI4ZmE2MzRi
MTZhYi4uMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZlNzkwYWJmYmU2ZTk4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZS5jcHAKQEAgLTQyLDggKzQyLDggQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpB
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKLSAgICBhZGRJ
bnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0
cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CisgICAgYWRk
SW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgLy8gVGhlIHN1YmNs
YXNzIG11c3QgY3JlYXRlIG1fcHJvY2Vzc29yLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDQw
YWMzMmM1YzU1YzNkMzJkMGUxNGI2YTdkMjJiMjQ2NzM5MGY0YmYuLjI1MTBjNDBhN2Y2MTIzZDRj
N2ZjMmQ2NDBhOTBiNGYwYTk4ZTZmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGUKICAgICBtX3BsYXliYWNrUmF0ZSA9IEF1ZGlv
UGFyYW06OmNyZWF0ZShjb250ZXh0LCAicGxheWJhY2tSYXRlIiwgMS4wLCAtTWF4UmF0ZSwgTWF4
UmF0ZSk7CiAKICAgICAvLyBEZWZhdWx0IHRvIG1vbm8uICBBIGNhbGwgdG8gc2V0QnVmZmVyKCkg
d2lsbCBzZXQgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMgdG8gdGhhdCBvZiB0aGUgYnVm
ZmVyLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhp
cywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywg
MSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5NTZjMTU4NjIxODljNzE0MjljYmNm
ZDYwMDQyZjAwYzk4YmFlZjYuLmQ0Y2RiNzY1OGMwZjM1YjVmYzlhMjJjZTg5OGJjYjJiOTllZTRk
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmll
cigpKQogI2VuZGlmCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVy
aWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5l
cmljRXZlbnRRdWV1ZT4oKnRoaXMpKQogewogICAgIC8vIEFjY29yZGluZyB0byBzcGVjIEF1ZGlv
Q29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVyIHBhZ2UgbmF2aWdhdGUuCiAgICAgLy8gTGV0cyBt
YXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0aXZpdHkgYW5kIHVubWFy
ayBpdCBpbiBjbGVhciBtZXRob2QuCkBAIC0xNjYsNyArMTY2LDcgQEAgQXVkaW9Db250ZXh0OjpB
dWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QKICNlbmRpZgogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCiAgICAgLCBt
X21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKLSAgICAs
IG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykp
CisgICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1ZTxHZW5lcmljRXZlbnRRdWV1ZT4oKnRoaXMp
KQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC00MzIsNyArNDMyLDcgQEAgRXhjZXB0
aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gQXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlC
dWZmZXImIGFycmF5QnVmZmUKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVm
PEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYg
c3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxi
YWNrKQogewogICAgIGlmICghbV9hdWRpb0RlY29kZXIpCi0gICAgICAgIG1fYXVkaW9EZWNvZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICAgICAgbV9hdWRp
b0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNvZGVyPigpOwogICAgIG1fYXVkaW9E
ZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUoKSwgV1RG
TW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJhY2spKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAppbmRleCA5NzU4ODc1NDc0N2UxNTI0ODE4OWY0OTcwYzZkMzNlM2M2YWUxZTEx
Li5kOWFiYjk3NzdhOWQyNWVlYWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5h
dGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYQogICAgICwgbV9t
dXRlZChmYWxzZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlc3RpbmF0aW9uKTsKLSAg
ICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAg
YWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwogfQogCiBBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6fkF1ZGlvRGVzdGluYXRpb25Ob2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IDE2Mzcz
Y2U5Mzc4ZDMyMmZkZDljMjUzZjljNzZkOTYzZTYxM2NkM2IuLjRhODI1NWU2ZjBhZjA3NjcxMzhl
NDY4OThmOGI2MzZhYjJkNzU2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBCaXF1YWRG
aWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CiAKICAg
ICAvLyBJbml0aWFsbHkgc2V0dXAgYXMgbG93cGFzcyBmaWx0ZXIuCi0gICAgbV9wcm9jZXNzb3Ig
PSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZFByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwg
MSwgZmFsc2UpOworICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxCaXF1YWRQcm9jZXNzb3I+
KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIGZhbHNlKTsKIH0KIAogQmlxdWFkRmlsdGVyVHlwZSBC
aXF1YWRGaWx0ZXJOb2RlOjp0eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCAwZTRlMzY4NWI4MmNlNDc3
ZWM0ZTU4NTQ3ZjE2YWQ4YjcwZmM3OTA0Li5lODRiOTgwMzU2NzBmYjFkY2MzMjcwOTY2M2QyYjM5
MDU1MmU2NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwCkBAIC02Miw3ICs2Miw3IEBAIEJpcXVhZFByb2Nlc3Nvcjo6fkJp
cXVhZFByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gQmlxdWFk
UHJvY2Vzc29yOjpjcmVhdGVLZXJuZWwoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEJpcXVhZERTUEtlcm5lbD4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmlxdWFkRFNQ
S2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBCaXF1YWRQcm9jZXNzb3I6OmNoZWNrRm9yRGlydHlD
b2VmZmljaWVudHMoKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQmlxdWFkUHJvY2Vzc29yOjpn
ZXRGcmVxdWVuY3lSZXNwb25zZShpbnQgbkZyZXF1ZW5jaWVzLCBjb25zdCBmbG9hdCogZnJlcXVl
CiAgICAgLy8gdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgcHJvY2Vzc2luZyBydW5uaW5n
IGluIHRoZSBhdWRpbwogICAgIC8vIHRocmVhZCBvbiB0aGUgbWFpbiBrZXJuZWxzLgogICAgIAot
ICAgIGF1dG8gcmVzcG9uc2VLZXJuZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEJpcXVhZERTUEtlcm5l
bD4odGhpcyk7CisgICAgYXV0byByZXNwb25zZUtlcm5lbCA9IG1ha2VVbmlxdWU8QmlxdWFkRFNQ
S2VybmVsPih0aGlzKTsKIAogICAgIHJlc3BvbnNlS2VybmVsLT5nZXRGcmVxdWVuY3lSZXNwb25z
ZShuRnJlcXVlbmNpZXMsIGZyZXF1ZW5jeUh6LCBtYWdSZXNwb25zZSwgcGhhc2VSZXNwb25zZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1l
cmdlck5vZGUuY3BwCmluZGV4IDIwYjhkYTE5ZTVmNDM5Y2ZlNTQ1NWYwMWRjMjkwODc0NDZiMjNj
MDguLmRmNTBmMjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMyZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3Bw
CkBAIC01OSw5ICs1OSw5IEBAIENoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuCiAKICAgICAvLyBDcmVh
dGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5wdXRzLgogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQotICAgICAgICBhZGRJbnB1dChzdGQ6Om1ha2Vf
dW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgICAgIGFkZElucHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5p
cXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogICAgIAogICAgIGluaXRpYWxpemUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxp
dHRlck5vZGUuY3BwCmluZGV4IDQ2MzU0OThjMDM0YzU5MzBiNGU4ZjIyMDg2ZTE0YjJiNGJkMjkx
MTcuLjgyZjY5YTA0Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkxYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2Rl
LmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIENoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxp
dHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlCiB7CiAgICAg
c2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwogCi0gICAgYWRkSW5wdXQoc3Rk
OjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZElucHV0KG1ha2VV
bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKIAogICAgIC8vIENyZWF0ZSBhIGZpeGVkIG51
bWJlciBvZiBvdXRwdXRzIChhYmxlIHRvIGhhbmRsZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hh
bm5lbHMgZmVkIHRvIGFuIGlucHV0KS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZPdXRwdXRzOyArK2kpCi0gICAgICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1
ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgICAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxB
dWRpb05vZGVPdXRwdXQ+KHRoaXMsIDEpKTsKICAgICAKICAgICBpbml0aWFsaXplKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApp
bmRleCAyMzgyZGFiY2M5Yzk5MjdjYWMzMWQzMjc1ZjIyMDNjYzhmNThhMDkzLi5lMzY2NzdjZmQ3
NDVlOGJiZTAyZGEzZGM0ZGQ3YmExZjFhNTNkZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAgLTUyLDggKzUyLDggQEAgQ29u
dm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVDb252b2x2ZXIpOwogCi0gICAg
YWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwotICAgIGFk
ZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworICAg
IGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRw
dXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKIAogICAgIC8vIE5vZGUt
c3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCiAgICAgbV9jaGFubmVsQ291bnQgPSAyOwpA
QCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZlck5vZGU6OnNldEJ1
ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQogCiAgICAgLy8gQ3JlYXRlIHRoZSByZXZlcmIgd2l0
aCB0aGUgZ2l2ZW4gaW1wdWxzZSByZXNwb25zZS4KICAgICBib29sIHVzZUJhY2tncm91bmRUaHJl
YWRzID0gIWNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCk7Ci0gICAgYXV0byByZXZlcmIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJldmVyYj4oYnVmZmVyQnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nl
c3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUsIDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBt
X25vcm1hbGl6ZSk7CisgICAgYXV0byByZXZlcmIgPSBtYWtlVW5pcXVlPFJldmVyYj4oYnVmZmVy
QnVzLmdldCgpLCBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMsIE1heEZGVFNpemUs
IDIsIHVzZUJhY2tncm91bmRUaHJlYWRzLCBtX25vcm1hbGl6ZSk7CiAKICAgICB7CiAgICAgICAg
IC8vIFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDQyNjVhMDA3NDllYWZmZjZhOWUxYjlkMWRk
YTYwZDRkYjcwMjhiMDMuLjgxYmQ3ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdjZTI1NTc4MDJiOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heEQKICAgICA6IEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9k
ZVR5cGVEZWxheSk7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERlbGF5UHJv
Y2Vzc29yPihjb250ZXh0LCBzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpOworICAgIG1fcHJv
Y2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwg
MSwgbWF4RGVsYXlUaW1lKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91
YmxlIG1heERlbGF5VGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggYTc1YmE2YjdjOTJlNzQ0NGM2NTYwOGU4YWUxOGY5
ZDUwMDAyNmEwNC4uMTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5ZTZkMmFjYmE2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgRGVsYXlQcm9jZXNzb3I6On5EZWxheVByb2Nlc3NvcigpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gRGVsYXlQcm9jZXNzb3I6OmNyZWF0ZUtl
cm5lbCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVsYXlEU1BLZXJuZWw+KHRo
aXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlbGF5RFNQS2VybmVsPih0aGlzKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKaW5kZXggYWEwZTRhODAx
MTllYmVkOWRkMzY5NmIzZmExMzA1ZGRmMzJiZDA1Mi4uMTQwOTZkOGYwYzU5NmE1Mjk3MTY2NmVm
ODI2N2EwMjNmZGI0NGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00Niw4ICs0Niw4IEBA
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEeW5h
bWljc0NvbXByZXNzb3IpOwogCi0gICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05v
ZGVJbnB1dD4odGhpcykpOwotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9k
ZU91dHB1dD4odGhpcywgZGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKKyAgICBhZGRJ
bnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1h
a2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykpOwogCiAgICAgbV90aHJlc2hvbGQgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwg
InRocmVzaG9sZCIsIC0yNCwgLTEwMCwgMCk7CiAgICAgbV9rbmVlID0gQXVkaW9QYXJhbTo6Y3Jl
YXRlKGNvbnRleHQsICJrbmVlIiwgMzAsIDAsIDQwKTsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBE
eW5hbWljc0NvbXByZXNzb3JOb2RlOjppbml0aWFsaXplKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7ICAgIAotICAgIG1fZHluYW1pY3NDb21wcmVzc29y
ID0gc3RkOjptYWtlX3VuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUoKSwgZGVm
YXVsdE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIG1fZHluYW1pY3NDb21wcmVzc29yID0g
bWFrZVVuaXF1ZTxEeW5hbWljc0NvbXByZXNzb3I+KHNhbXBsZVJhdGUoKSwgZGVmYXVsdE51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpOwogfQogCiB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OnVu
aW5pdGlhbGl6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUu
Y3BwCmluZGV4IDZjOTRhNTIzYzNiMmEwMjEyYjJhNTRhMWE5YzhmMDI2YmJkMWRiNWYuLjI1N2Rm
MmVjZTIzMzhjYmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC00Niw4ICs0Niw4IEBAIEdhaW5Ob2Rl
OjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAKICAg
ICBtX2dhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImdhaW4iLCAxLjAsIDAuMCwg
MS4wKTsKIAotICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRo
aXMpKTsKLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIDEpKTsKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAxKSk7CiAK
ICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXgg
MzgxYWU3Mjc5NGZiMGU3ZmVhNjMzMWFiZDMzYjIwYzE1ODQ1ZmY5Yi4uOTEyZTZlYjIzMjE0NTY0
M2Q2ZmRhZmJjMTFlOTY3NjRjM2QyZjVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsCiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZSk7CiAKICAgICAvLyBEZWZhdWx0IHRv
IHN0ZXJlby4gVGhpcyBjb3VsZCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIG1lZGlhIGVs
ZW1lbnQgLnNyYyBpcyBzZXQgdG8uCi0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAyKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CkBAIC04OSw3ICs4
OSw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAKICAgICAgICAgaWYgKHNvdXJjZVNhbXBs
ZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3Ig
PSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgpOwotICAgICAgICAgICAgbV9tdWx0aUNo
YW5uZWxSZXNhbXBsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4o
c2NhbGVGYWN0b3IsIG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICAgICAgbV9tdWx0aUNoYW5u
ZWxSZXNhbXBsZXIgPSBtYWtlVW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0
b3IsIG51bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
QnlwYXNzIHJlc2FtcGxpbmcuCiAgICAgICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDViMmE1MDBkZDI5NGQx
MDU1OGJjN2EwOGNmNzcxNmU0MjZiNWMyYWMuLmU0M2Y1NDQ4YmMyNmI4NmFmNjkzZDAwOTk5NWM2
NzM0ZjY5NTVkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lCiAgICAgYXVkaW9Tb3VyY2VQcm92aWRlci0+c2V0
Q2xpZW50KHRoaXMpOwogICAgIAogICAgIC8vIERlZmF1bHQgdG8gc3RlcmVvLiBUaGlzIGNvdWxk
IGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIGZvcm1hdCBvZiB0aGUgTWVkaWFTdHJlYW0ncyBhdWRp
byB0cmFjay4KLSAgICBhZGRPdXRwdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+
KHRoaXMsIDIpKTsKKyAgICBhZGRPdXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRo
aXMsIDIpKTsKIAogICAgIGluaXRpYWxpemUoKTsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzLCBmbG9hdCBzb3VyY2UKICAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBudWxs
cHRyOwogICAgIGVsc2UgewogICAgICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1w
bGVSYXRlIC8gc2FtcGxlUmF0ZTsKLSAgICAgICAgbV9tdWx0aUNoYW5uZWxSZXNhbXBsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPE11bHRpQ2hhbm5lbFJlc2FtcGxlcj4oc2NhbGVGYWN0b3IsIG51bWJl
ck9mQ2hhbm5lbHMpOworICAgICAgICBtX211bHRpQ2hhbm5lbFJlc2FtcGxlciA9IG1ha2VVbmlx
dWU8TXVsdGlDaGFubmVsUmVzYW1wbGVyPihzY2FsZUZhY3RvciwgbnVtYmVyT2ZDaGFubmVscyk7
CiAgICAgfQogCiAgICAgbV9zb3VyY2VOdW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVs
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5jcHAKaW5kZXggNWI1MDI5YmZiY2U3N2FkNWI2YzNjODgzMjYwZGI5ZGVmZGY2MTA0Yi4uYTk5
Y2VhYWQ2YjVjMjFlMDlkZDIyNTNjMmFjZjMwNDU1NDc1M2U3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTY4LDcgKzY4
LDcgQEAgT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzZXRUeXBlKG1fdHlwZSk7CiAKICAgICAvLyBBbiBv
c2NpbGxhdG9yIGlzIGFsd2F5cyBtb25vLgotICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1
ZGlvTm9kZU91dHB1dD4odGhpcywgMSkpOwogCiAgICAgaW5pdGlhbGl6ZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKaW5kZXggZjY0NzQ2
OWUyMzU1ZWIzYTBjMDliM2IwODUyYmZiZWM2ZTQ4ZDI4ZC4uNTFjNjk5MTZmZmRlNzBmNWU2ODBh
YTkyN2NlZmVmN2NhNzMyYzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFBhbm5lck5vZGU6OlBhbm5lck5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIC8vIExvYWQg
dGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEph
dmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNlLgogICAgIG1f
aHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5
bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7CiAKLSAgICBhZGRJ
bnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Ci0gICAgYWRkT3V0
cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisgICAgYWRk
SW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOwogCiAgICAgLy8gTm9kZS1zcGVj
aWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KICAgICBtX2NoYW5uZWxDb3VudCA9IDI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKaW5kZXgg
YmIyYTA3ZDIzNTRlYmFmOTRkMDA0NjVhNGI0MWQ4NjA1NTU5OTg2Yi4uZWM5YTE3YzRmNTZlYjk5
NjZkYzE3NjI3ZTkzNDA1YmExZmQ0OGM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgUGVy
aW9kaWNXYXZlOjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyhjb25zdCBmbG9hdCogcmVhbERhdGEs
IGNvbnN0IGZsb2F0KiBpCiAgICAgICAgIHJlYWxQWzBdID0gMDsKIAogICAgICAgICAvLyBDcmVh
dGUgdGhlIGJhbmQtbGltaXRlZCB0YWJsZS4KLSAgICAgICAgbV9iYW5kTGltaXRlZFRhYmxlcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KG1fcGVyaW9kaWNXYXZlU2l6
ZSkpOworICAgICAgICBtX2JhbmRMaW1pdGVkVGFibGVzLmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4obV9wZXJpb2RpY1dhdmVTaXplKSk7CiAKICAgICAgICAgLy8gQXBwbHkgYW4g
aW52ZXJzZSBGRlQgdG8gZ2VuZXJhdGUgdGhlIHRpbWUtZG9tYWluIHRhYmxlIGRhdGEuCiAgICAg
ICAgIGZsb2F0KiBkYXRhID0gbV9iYW5kTGltaXRlZFRhYmxlc1tyYW5nZUluZGV4XS0+ZGF0YSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFu
YWx5c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFs
eXNlci5jcHAKaW5kZXggM2I2MjgxZDFlODQzZWQyOTljZjYxNTNjNzMyNzk3MDc0MTgwNjc3OC4u
ODAyMzczNDA3Zjc1ZDQ3ZTI1OWViNjA1NjM4MGY2MzVmMTNhY2VmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIFJlYWx0aW1lQW5hbHlzZXI6OlJlYWx0aW1lQW5hbHlzZXIoKQogICAgICwg
bV9taW5EZWNpYmVscyhEZWZhdWx0TWluRGVjaWJlbHMpCiAgICAgLCBtX21heERlY2liZWxzKERl
ZmF1bHRNYXhEZWNpYmVscykKIHsKLSAgICBtX2FuYWx5c2lzRnJhbWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZGVEZyYW1lPihEZWZhdWx0RkZUU2l6ZSk7CisgICAgbV9hbmFseXNpc0ZyYW1lID0gbWFr
ZVVuaXF1ZTxGRlRGcmFtZT4oRGVmYXVsdEZGVFNpemUpOwogfQogCiBSZWFsdGltZUFuYWx5c2Vy
Ojp+UmVhbHRpbWVBbmFseXNlcigpID0gZGVmYXVsdDsKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBS
ZWFsdGltZUFuYWx5c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAobV9mZnRTaXplICE9IHNpemUpIHsKLSAgICAgICAgbV9hbmFseXNp
c0ZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxGRlRGcmFtZT4oc2l6ZSk7CisgICAgICAgIG1fYW5h
bHlzaXNGcmFtZSA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KHNpemUpOwogICAgICAgICAvLyBtX21h
Z25pdHVkZUJ1ZmZlciBoYXMgc2l6ZSA9IGZmdFNpemUgLyAyIGJlY2F1c2UgaXQgY29udGFpbnMg
ZmxvYXRzIHJlZHVjZWQgZnJvbSBjb21wbGV4IHZhbHVlcyBpbiBtX2FuYWx5c2lzRnJhbWUuCiAg
ICAgICAgIG1fbWFnbml0dWRlQnVmZmVyLmFsbG9jYXRlKHNpemUgLyAyKTsKICAgICAgICAgbV9m
ZnRTaXplID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IGQ1OWRlY2Y5OTUxNmY2ZDAxYWY5YzFk
OWZkYmYxZDBiMTAxOWU0MGYuLmQ1YjNhZmJmMjcxMDE0NTE0OTRiMTg5Mzc3NjhiNjA1ZjZhM2I0
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3Jp
cHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNjgsOCArNjgsOCBAQCBTY3JpcHRQcm9jZXNzb3JOb2Rl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZQogICAgIEFTU0VSVChudW1iZXJPZklucHV0Q2hhbm5lbHMgPD0gQXVkaW9Db250ZXh0Ojpt
YXhOdW1iZXJPZkNoYW5uZWxzKCkpOwogCiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVKYXZhU2Ny
aXB0KTsKLSAgICBhZGRJbnB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlz
KSk7Ci0gICAgYWRkT3V0cHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlz
LCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91
dHB1dD4odGhpcywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogCiAgICAgaW5pdGlhbGl6ZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyRFNQS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlckRTUEtlcm5lbC5jcHAKaW5kZXggNDEwZDFkYWY1Yzg5NTQwMDlmZjA2MzZhODI5MDBiZjk0
YWY0ZjhmMS4uZjNkMjEyMmRmNTFjNGYxYTI5MjI0ZTY5M2FiNDk1YmJjMmI5MzhlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BL
ZXJuZWwuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgdm9pZCBXYXZlU2hhcGVyRFNQS2VybmVsOjps
YXp5SW5pdGlhbGl6ZU92ZXJzYW1wbGluZygpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAogICAgIGlmICghbV90ZW1wQnVmZmVyKSB7Ci0gICAgICAgIG1fdGVtcEJ1ZmZlciA9IHN0ZDo6
bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogMik7Ci0gICAg
ICAgIG1fdGVtcEJ1ZmZlcjIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVu
ZGVyaW5nUXVhbnR1bSAqIDQpOwotICAgICAgICBtX3VwU2FtcGxlciA9IHN0ZDo6bWFrZV91bmlx
dWU8VXBTYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtKTsKLSAgICAgICAgbV9kb3duU2FtcGxlciA9
IHN0ZDo6bWFrZV91bmlxdWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKLSAg
ICAgICAgbV91cFNhbXBsZXIyID0gc3RkOjptYWtlX3VuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmlu
Z1F1YW50dW0gKiAyKTsKLSAgICAgICAgbV9kb3duU2FtcGxlcjIgPSBzdGQ6Om1ha2VfdW5pcXVl
PERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFudHVtICogNCk7CisgICAgICAgIG1fdGVtcEJ1ZmZl
ciA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihSZW5kZXJpbmdRdWFudHVtICogMik7Cisg
ICAgICAgIG1fdGVtcEJ1ZmZlcjIgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oUmVuZGVy
aW5nUXVhbnR1bSAqIDQpOworICAgICAgICBtX3VwU2FtcGxlciA9IG1ha2VVbmlxdWU8VXBTYW1w
bGVyPihSZW5kZXJpbmdRdWFudHVtKTsKKyAgICAgICAgbV9kb3duU2FtcGxlciA9IG1ha2VVbmlx
dWU8RG93blNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAgICAgbV91cFNhbXBs
ZXIyID0gbWFrZVVuaXF1ZTxVcFNhbXBsZXI+KFJlbmRlcmluZ1F1YW50dW0gKiAyKTsKKyAgICAg
ICAgbV9kb3duU2FtcGxlcjIgPSBtYWtlVW5pcXVlPERvd25TYW1wbGVyPihSZW5kZXJpbmdRdWFu
dHVtICogNCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDg0ODY5OTNmMjEwODRjY2M2MWNjZDgwYjJj
MTg3ZTA4YzE1NWZkMDEuLjZlN2U4ZGQxYzljMTlmYTNjODVlM2Q5ZDg1NWFiOWY0NTc4NWI3OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5v
ZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250
ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdh
dmVTaGFwZXIpOwotICAgIG1fcHJvY2Vzc29yID0gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVy
UHJvY2Vzc29yPihjb250ZXh0LnNhbXBsZVJhdGUoKSwgMSk7CisgICAgbV9wcm9jZXNzb3IgPSBt
YWtlVW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2FtcGxlUmF0ZSgpLCAxKTsK
IAogICAgIGluaXRpYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4IDI4OWMzOWY1ZjNmOWY3
YTc5ZTlhNWI2YTZkODMxNWI1OTFmNDMyZGEuLmJmZTVlMGU0N2ZiODRhMjhjNjNjNmUyOGIzMmUw
ZmMxMWU1YzY3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcApAQCAtNDYsNyArNDYsNyBAQCBXYXZlU2hhcGVy
UHJvY2Vzc29yOjp+V2F2ZVNoYXBlclByb2Nlc3NvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6Y3JlYXRlS2VybmVsKCkKIHsKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlzKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxXYXZlU2hhcGVyRFNQS2VybmVsPih0aGlzKTsKIH0KIAogdm9pZCBX
YXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1cnZlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2Fn
ZS5jcHAKaW5kZXggOGMzZDEzNDZjNDAzMGNmYjNkODI3NzM3YTBhMTVmM2YxY2I5YmFkNy4uMWI5
MTJkOThkOWYwNGYzMDc0YTFiOGUxYTYyNjAxYTQyZmFmMzU3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCkBA
IC0xNTAsOSArMTUwLDkgQEAgRmlkb0hpZE1lc3NhZ2U6OkZpZG9IaWRNZXNzYWdlKHVpbnQzMl90
IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQgdHlwZSwgY28KICAgICB1aW50OF90IHNl
cXVlbmNlID0gMDsKIAogICAgIHNpemVfdCBwb3MgPSBkYXRhLnNpemUoKSA+IGtIaWRJbml0UGFj
a2V0RGF0YVNpemUgPyBrSGlkSW5pdFBhY2tldERhdGFTaXplIDogZGF0YS5zaXplKCk7Ci0gICAg
bV9wYWNrZXRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFu
bmVsSWQsIHR5cGUsIGdldEluaXRQYWNrZXREYXRhKGRhdGEpLCBkYXRhLnNpemUoKSkpOworICAg
IG1fcGFja2V0cy5hcHBlbmQobWFrZVVuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElk
LCB0eXBlLCBnZXRJbml0UGFja2V0RGF0YShkYXRhKSwgZGF0YS5zaXplKCkpKTsKICAgICBmb3Ig
KDsgcG9zIDwgZGF0YS5zaXplKCk7IHBvcyArPSBrSGlkQ29udGludWF0aW9uUGFja2V0RGF0YVNp
emUpCi0gICAgICAgIG1fcGFja2V0cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkQ29u
dGludWF0aW9uUGFja2V0PihjaGFubmVsSWQsIHNlcXVlbmNlKyssIGdldENvbnRpbnVhdGlvblBh
Y2tldERhdGEoZGF0YSwgcG9zKSkpOworICAgICAgICBtX3BhY2tldHMuYXBwZW5kKG1ha2VVbmlx
dWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSsrLCBnZXRD
b250aW51YXRpb25QYWNrZXREYXRhKGRhdGEsIHBvcykpKTsKIH0KIAogRmlkb0hpZE1lc3NhZ2U6
OkZpZG9IaWRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxGaWRvSGlkSW5pdFBhY2tldD4gaW5pdFBh
Y2tldCwgc2l6ZV90IHJlbWFpbmluZ1NpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKaW5kZXggNTViN2IyZDcxNTM2
YTIzNTQ5MTNhZTM2ZTlmYjkxZWYwMGE4ZjA4My4uMjZiODBhYThhNWYxMzk2M2M3NjhlN2U5MjNi
YmFhYjJiODdiNWVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVGcm9tU2Vy
aWFsaXplZERhdGEoYwogICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1aW50OF90PigpOwogICAgIGRh
dGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBkYXRhU2l6ZSk7CiAKLSAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjb21t
YW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5
bG9hZFNpemUpOwogfQogCiAvLyBVMkYgSW5pdGlhbGl6YXRpb24gcGFja2V0IGlzIGRlZmluZWQg
YXM6CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRDb250aW51YXRp
b25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb20KICAgICBhdXRv
IGRhdGEgPSBWZWN0b3I8dWludDhfdD4oKTsKICAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJl
Z2luKCkgKyBpbmRleCwgZGF0YVNpemUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShk
YXRhKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4o
Y2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9CiAKIC8vIFUyRiBDb250aW51
YXRpb24gcGFja2V0IGlzIGRlZmluZWQgYXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDAyMTQ1ZDBjYzJlOGM5ZWFkYjBjODgyOTQx
Yjg1OWZjMGFlODA1MmQuLjViNjRhMDg3NDZhZjgwODBjZDJlNzI1MDNmYTAwZDNjOTQ5ZmIwMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CkBAIC0yNTAsNyArMjUwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0YWJhc2U6Om9wZW5BbmRW
ZXJpZnlWZXJzaW9uKGJvb2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gcmVzdWx0OwotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VPcGVu
VGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5jaHJvbml6ZXIsIHJlc3Vs
dCk7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxEYXRhYmFzZU9wZW5UYXNrPigqdGhpcywg
c2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKICAgICB0aHJl
YWQuc2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwogICAgIHN5bmNocm9uaXpl
ci53YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKIApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgRGF0
YWJhc2U6OmNsb3NlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRocmVhZC5zY2hl
ZHVsZUltbWVkaWF0ZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRo
aXMsIHN5bmNocm9uaXplcikpOworICAgIHRocmVhZC5zY2hlZHVsZUltbWVkaWF0ZVRhc2sobWFr
ZVVuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplcikpOwogCiAgICAg
Ly8gRklYTUU6IGlPUyBkZXBlbmRzIG9uIHRoaXMgZnVuY3Rpb24gYmxvY2tpbmcgdW50aWwgdGhl
IGRhdGFiYXNlIGlzIGNsb3NlZCBhcyBwYXJ0CiAgICAgLy8gb2YgY2xvc2luZyBhbGwgb3BlbiBk
YXRhYmFzZXMgZnJvbSBhIHByb2Nlc3MgYXNzZXJ0aW9uIGV4cGlyYXRpb24gaGFuZGxlci4KQEAg
LTUzMiw3ICs1MzIsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uKCkKICAg
ICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9u
ID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOwotICAgIGF1dG8gdGFzayA9IHN0ZDo6
bWFrZV91bmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KFdURk1vdmUodHJhbnNhY3Rpb24p
KTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPihX
VEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERh
dGFiYXNlVHJhbnNhY3Rpb25UYXNrICVwIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGFzay5nZXQo
KSwgdGFzay0+dHJhbnNhY3Rpb24oKSk7CiAgICAgZGF0YWJhc2VUaHJlYWQoKS5zY2hlZHVsZVRh
c2soV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBEYXRhYmFzZTo6
c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewog
ICAgIGF1dG8mIHRocmVhZCA9IGRhdGFiYXNlVGhyZWFkKCk7CiAKLSAgICBhdXRvIHRhc2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPigmdHJhbnNhY3Rpb24pOwor
ICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+KCZ0cmFu
c2FjdGlvbik7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrICVwIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RlcFxuIiwgdGFzay5nZXQoKSk7CiAg
ICAgdGhyZWFkLnNjaGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsKIH0KQEAgLTc2Myw3ICs3NjMs
NyBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1lcygpCiAgICAgaWYgKHRocmVh
ZC50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKIAotICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0YWJhc2VUYWJsZU5h
bWVzVGFzaz4oKnRoaXMsIHN5bmNocm9uaXplciwgcmVzdWx0KTsKKyAgICBhdXRvIHRhc2sgPSBt
YWtlVW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIsIHJl
c3VsdCk7CiAgICAgdGhyZWFkLnNjaGVkdWxlSW1tZWRpYXRlVGFzayhXVEZNb3ZlKHRhc2spKTsK
ICAgICBzeW5jaHJvbml6ZXIud2FpdEZvclRhc2tDb21wbGV0aW9uKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5k
ZXggM2JhYmQ0OTU2NmYxNGExYjNjMGQzYjE3YmY0YzdmMzJjNWUzZDVmNy4uZDY0OTdjMzk3ZmE0
NzQyODU5ZTA1ODYyMjM2ZWRlZTQzZDRlZjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFk
KCkKLSAgICA6IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihzdGQ6Om1ha2VfdW5pcXVlPFNRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3I+KCkpCisgICAgOiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3Io
bWFrZVVuaXF1ZTxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQogewogICAgIG1fc2VsZlJl
ZiA9IHRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZDhkZGNjNTk4NTUxNTc2ZDJhMmMxMGY0MmU0
YWQxMmE4MjU5YjUxOS4uYzI4YTk2ZjQ1ODM5ZWY1NGRhZjFmOTlhMWFkNThkN2VjZDRhNjc1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUcmFja2VyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjph
ZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogICAgIExvY2tIb2xkZXIgb3BlbkRh
dGFiYXNlTWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKIAogICAgIGlmICghbV9vcGVu
RGF0YWJhc2VNYXApCi0gICAgICAgIG1fb3BlbkRhdGFiYXNlTWFwID0gc3RkOjptYWtlX3VuaXF1
ZTxEYXRhYmFzZU9yaWdpbk1hcD4oKTsKKyAgICAgICAgbV9vcGVuRGF0YWJhc2VNYXAgPSBtYWtl
VW5pcXVlPERhdGFiYXNlT3JpZ2luTWFwPigpOwogCiAgICAgYXV0byBvcmlnaW4gPSBkYXRhYmFz
ZS5zZWN1cml0eU9yaWdpbigpOwogCkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBEYXRhYmFzZVRy
YWNrZXI6OnJlY29yZENyZWF0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6ZW5zdXJlIGhlcmUgdG8gYXZv
aWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdpbiBldmVyeSB0aW1lLgogICAg
IGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nQ3JlYXRlZC5nZXQob3JpZ2luKTsKICAgICBpZiAoIW5h
bWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaENv
dW50ZWRTZXQ8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byBvd25lZFNldCA9IG1ha2VVbmlxdWU8
SGFzaENvdW50ZWRTZXQ8U3RyaW5nPj4oKTsKICAgICAgICAgbmFtZVNldCA9IG93bmVkU2V0Lmdl
dCgpOwogICAgICAgICBtX2JlaW5nQ3JlYXRlZC5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBX
VEZNb3ZlKG93bmVkU2V0KSk7CiAgICAgfQpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OnJlY29yZERlbGV0aW5nRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcmlnaW4sIGMKICAgICAvLyBXZSBkb24ndCB1c2UgSGFzaE1hcDo6ZW5zdXJlIGhlcmUg
dG8gYXZvaWQgbWFraW5nIGFuIGlzb2xhdGVkIGNvcHkgb2YgdGhlIG9yaWdpbiBldmVyeSB0aW1l
LgogICAgIGF1dG8qIG5hbWVTZXQgPSBtX2JlaW5nRGVsZXRlZC5nZXQob3JpZ2luKTsKICAgICBp
ZiAoIW5hbWVTZXQpIHsKLSAgICAgICAgYXV0byBvd25lZFNldCA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaFNldDxTdHJpbmc+PigpOworICAgICAgICBhdXRvIG93bmVkU2V0ID0gbWFrZVVuaXF1ZTxI
YXNoU2V0PFN0cmluZz4+KCk7CiAgICAgICAgIG5hbWVTZXQgPSBvd25lZFNldC5nZXQoKTsKICAg
ICAgICAgbV9iZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbi5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShv
d25lZFNldCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjBkNjk3MzQ3NzRkYmZiZjMwYmQ4ZjM5
Y2U0YzU5NTcyMTRlOTAwYy4uNGNiMDQxZTQ1MmM4MGY1ZjU5YmIyNzIxZWFiOGVjMWE4ZjYxODM2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU1FMVHJh
bnNhY3Rpb246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlvbmEK
ICAgICBlbHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJtaXNzaW9ucyB8PSBEYXRhYmFz
ZUF1dGhvcml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1l
bnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RG
TW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAgIGF1dG8gc3RhdGVtZW50ID0g
bWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1l
bnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RG
TW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOwogCiAgICAgaWYgKG1fZGF0YWJhc2Ut
PmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50LT5zZXREYXRhYmFzZURlbGV0ZWRFcnJvcigp
OwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlv
bkFuZFByZWZsaWdodCgpCiAgICAgfQogCiAgICAgQVNTRVJUKCFtX3NxbGl0ZVRyYW5zYWN0aW9u
KTsKLSAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVUcmFu
c2FjdGlvbj4obV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKSwgbV9yZWFkT25seSk7CisgICAg
bV9zcWxpdGVUcmFuc2FjdGlvbiA9IG1ha2VVbmlxdWU8U1FMaXRlVHJhbnNhY3Rpb24+KG1fZGF0
YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCksIG1fcmVhZE9ubHkpOwogCiAgICAgbV9kYXRhYmFzZS0+
cmVzZXREZWxldGVzKCk7CiAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZUF1dGhvcml6ZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRy
aXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRyaXZlci9OYXZpZ2F0b3JXZWJE
cml2ZXIuY3BwCmluZGV4IDc5YWE1NjE4MWZmZWYzYWIxYTkyYWE1N2ZlY2RiNmZiYTU5ZTZmMGIu
LjEyOWQ4NmZmY2ZiZDE1N2E4MGIwMTkyZTNiNDk5NzEzM2JlYjc4MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmNw
cApAQCAtNTYsNyArNTYsNyBAQCBOYXZpZ2F0b3JXZWJEcml2ZXIqIE5hdmlnYXRvcldlYkRyaXZl
cjo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JXZWJEcml2ZXIq
IHN1cHBsZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JXZWJEcml2ZXIqPihTdXBwbGVtZW50
PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYg
KCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8TmF2aWdhdG9yV2ViRHJpdmVyPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQg
PSBtYWtlVW5pcXVlPE5hdmlnYXRvcldlYkRyaXZlcj4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9
IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L05hdmlnYXRvckdQVS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9OYXZpZ2F0b3JHUFUuY3BwCmluZGV4IDg4YTk3ODA0NGJj
MWU3MDg5MzM1NjVkYzYyZDBhMzE0NmIzOGI0MjYuLjM3NmQxNTVjYTliMmY1ZDJhNGFiMTg1MmM3
NzZkOWMxOGYyZTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L05hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvTmF2
aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBAQCBOYXZpZ2F0b3JHUFUqIE5hdmlnYXRvckdQ
VTo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBOYXZpZ2F0b3JHUFUqIHN1cHBs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46
OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50
KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdh
dG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPE5hdmln
YXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAg
ICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3
U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9u
LmgKaW5kZXggMWIzNDI1MDRkNjk1NTA4ZjA4MTZjY2I1NTgyZjViZDlhYTc2MWE2Yi4uNWY1N2Vm
MTE3NzUzMWEwYWMzZDk2MGRlYjFkNDM4NzExYTRmMDViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW51
bWVyYXRpb25EZWZpbml0aW9uLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgRW51bWVyYXRpb25E
ZWZpbml0aW9uIGZpbmFsIDogcHVibGljIE5hbWVkVHlwZSB7CiAKICAgICBib29sIGFkZChFbnVt
ZXJhdGlvbk1lbWJlciYmIG1lbWJlcikKICAgICB7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbV9t
ZW1iZXJzLmFkZChtZW1iZXIubmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPEVudW1lcmF0aW9uTWVt
YmVyPihXVEZNb3ZlKG1lbWJlcikpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX21lbWJlcnMu
YWRkKG1lbWJlci5uYW1lKCksIG1ha2VVbmlxdWU8RW51bWVyYXRpb25NZW1iZXI+KFdURk1vdmUo
bWVtYmVyKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xW
YXJpYWJsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKaW5kZXggM2QwMjgxM2E2NDczNjgzMTc0
YjMyMzk3ZjRiODdmYTQzN2RmZjc0ZS4uZmE4NjU1MWUzOGQyNDkwZmI0MGE2ZWMyODAwNWE0NzEx
ZWUwMzBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaApAQCAtNjUsNyAr
NjUsNyBAQCBjbGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uIGZpbmFsIHsKICAgICAgICAgLCBtX25h
bWUoV1RGTW92ZShuYW1lKSkKICAgICB7CiAgICAgICAgIGlmIChzZW1hbnRpYyB8fCAhcXVhbGlm
aWVycy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxSYXJlRGF0YT4oV1RGTW92ZShxdWFsaWZpZXJzKSwgV1RGTW92ZShzZW1hbnRpYykpOworICAg
ICAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8UmFyZURhdGE+KFdURk1vdmUocXVhbGlm
aWVycyksIFdURk1vdmUoc2VtYW50aWMpKTsKICAgICB9CiAKICAgICB+VmFyaWFibGVEZWNsYXJh
dGlvbigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKaW5kZXgg
ZGRhNTI1OTliZjA5N2ZiOWZmNmI2YzI3NjYyYmU4YjZiMjM3NDJiOS4uNWRkOWM4ZTA2YzczYjgw
YzU2OGZjMzFmNmNjNmI4NTZhYjYzNmI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRl
ci5jcHAKQEAgLTc0OCw5ICs3NDgsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlQb2ludFNjYWZm
b2xkaW5nPiBSZW5kZXJGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVudAogICAgICAg
ICByZXR1cm4gdGhpcy0+Z2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKCk7CiAgICAgfTsKICAgICBp
ZiAoJmZ1bmN0aW9uRGVmaW5pdGlvbiA9PSBtX21hdGNoZWRTZW1hbnRpY3MudmVydGV4U2hhZGVy
KQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZXJ0ZXhFbnRyeVBvaW50U2NhZmZv
bGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9t
YXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2Vt
YW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZlcnRleEF0dHJp
YnV0ZXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZXJ0ZXhFbnRyeVBvaW50U2NhZmZv
bGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9t
YXRjaGVkU2VtYW50aWNzLnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2Vt
YW50aWNzLnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0
ZU5leHRWYXJpYWJsZU5hbWUpLCBtX21hdGNoZWRTZW1hbnRpY3MubWF0Y2hlZFZlcnRleEF0dHJp
YnV0ZXMpOwogICAgIGlmICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGlj
cy5mcmFnbWVudFNoYWRlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RnJhZ21l
bnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNz
LCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyRW50cnlQb2lu
dEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgbV9s
YXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVkU2VtYW50
aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RnJhZ21lbnRFbnRyeVBvaW50U2NhZmZvbGRpbmc+KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRy
aW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVkU2VtYW50aWNzLmZyYWdtZW50U2hhZGVyRW50
cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MuZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1h
cCwgbV9sYXlvdXQsIFdURk1vdmUoZ2VuZXJhdGVOZXh0VmFyaWFibGVOYW1lKSwgbV9tYXRjaGVk
U2VtYW50aWNzLm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApAQCAtNzc0LDcgKzc3NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVBvaW50U2NhZmZv
bGRpbmc+IENvbXB1dGVGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OmNyZWF0ZUVuCiAgICAgICAg
IHJldHVybiB0aGlzLT5nZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUoKTsKICAgICB9OwogICAgIGlm
ICgmZnVuY3Rpb25EZWZpbml0aW9uID09IG1fbWF0Y2hlZFNlbWFudGljcy5zaGFkZXIpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbXB1dGVFbnRyeVBvaW50U2NhZmZvbGRpbmc+
KGZ1bmN0aW9uRGVmaW5pdGlvbiwgbV9pbnRyaW5zaWNzLCBtX3R5cGVOYW1lciwgbV9tYXRjaGVk
U2VtYW50aWNzLmVudHJ5UG9pbnRJdGVtcywgbV9tYXRjaGVkU2VtYW50aWNzLnJlc291cmNlTWFw
LCBtX2xheW91dCwgV1RGTW92ZShnZW5lcmF0ZU5leHRWYXJpYWJsZU5hbWUpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q29tcHV0ZUVudHJ5UG9pbnRTY2FmZm9sZGluZz4oZnVuY3Rpb25E
ZWZpbml0aW9uLCBtX2ludHJpbnNpY3MsIG1fdHlwZU5hbWVyLCBtX21hdGNoZWRTZW1hbnRpY3Mu
ZW50cnlQb2ludEl0ZW1zLCBtX21hdGNoZWRTZW1hbnRpY3MucmVzb3VyY2VNYXAsIG1fbGF5b3V0
LCBXVEZNb3ZlKGdlbmVyYXRlTmV4dFZhcmlhYmxlTmFtZSkpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggMjVmZWUyMjEzNDI1MzYwY2FjNGVk
YTkzNjQ0ZjYwZTBiODhhNmVjYS4uMDhmOTUxZTJmMzdlMDg3NzQyNDFmMTA3YWMxMGNkNGMyOTAx
M2ExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0
YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjcyLDE5ICsyNzIsMTkgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3JlYXRlTmFtZU5vZGUo
QVNUOjpVbm5hbWVkVHlwZSYgdW4KICAgICBzd2l0Y2ggKHVubmFtZWRUeXBlLmtpbmQoKSkgewog
ICAgIGNhc2UgQVNUOjpVbm5hbWVkVHlwZTo6S2luZDo6VHlwZVJlZmVyZW5jZTogewogICAgICAg
ICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5h
bWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlZmVyZW5jZVR5cGVO
YW1lTm9kZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCB0eXBlUmVmZXJlbmNlLnJl
c29sdmVkVHlwZSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVmZXJlbmNlVHlwZU5h
bWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHR5cGVSZWZlcmVuY2UucmVz
b2x2ZWRUeXBlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OlBv
aW50ZXI6IHsKICAgICAgICAgYXV0byYgcG9pbnRlclR5cGUgPSBkb3duY2FzdDxBU1Q6OlBvaW50
ZXJUeXBlPih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBv
aW50ZXJUeXBlTmFtZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgcG9pbnRl
clR5cGUuYWRkcmVzc1NwYWNlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQb2ludGVy
VHlwZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIHBvaW50ZXJUeXBl
LmFkZHJlc3NTcGFjZSgpKTsKICAgICB9CiAgICAgY2FzZSBBU1Q6OlVubmFtZWRUeXBlOjpLaW5k
OjpBcnJheVJlZmVyZW5jZTogewogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUgPSBk
b3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50
LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNl
KCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9k
ZT4ocGFyZW50LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRk
cmVzc1NwYWNlKCkpOwogICAgIH0KICAgICBjYXNlIEFTVDo6VW5uYW1lZFR5cGU6OktpbmQ6OkFy
cmF5OiB7CiAgICAgICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlUeXBl
Pih1bm5hbWVkVHlwZSk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5VHlw
ZU5hbWVOb2RlPihwYXJlbnQsIGdlbmVyYXRlTmV4dFR5cGVOYW1lKCksIGFycmF5VHlwZS5udW1F
bGVtZW50cygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXJyYXlUeXBlTmFtZU5vZGU+
KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1lbnRzKCkp
OwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
Q2hlY2tlci5jcHAKaW5kZXggNjMyNTVkNDY0YWViNTAzZmY5MDA2NGVmNGRiMzQ1YzI4OGFkZTMz
Ny4uYmI5YzYwMTVhZTA5YmZhYmZjNmUzYTdkZTNmODA5Njc4OWNhN2UyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCkBA
IC05NjIsMTQgKzk2MiwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKIAogdm9pZCBDaGVja2VyOjphc3NpZ25Db25j
cmV0ZVR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWY8QVNUOjpVbm5hbWVkVHlw
ZT4gdW5uYW1lZFR5cGUsIEFTVDo6VHlwZUFubm90YXRpb24gdHlwZUFubm90YXRpb24gPSBBU1Q6
OlJpZ2h0VmFsdWUoKSkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4
cHJlc3Npb24sIHN0ZDo6bWFrZV91bmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVk
VHlwZSkpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHlwZU1hcC5hZGQoJmV4cHJlc3Npb24s
IG1ha2VVbmlxdWU8UmVzb2x2aW5nVHlwZT4oV1RGTW92ZSh1bm5hbWVkVHlwZSkpKTsKICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIGV4cHJl
c3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlvbikpOwogfQogCiB2
b2lkIENoZWNrZXI6OmFzc2lnblR5cGUoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBSZWZQ
dHI8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+IHJlc29sdmFibGVUeXBlUmVmZXJlbmNlLCBBU1Q6
OlR5cGVBbm5vdGF0aW9uIHR5cGVBbm5vdGF0aW9uID0gQVNUOjpSaWdodFZhbHVlKCkpCiB7Ci0g
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2Vf
dW5pcXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpKSk7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5p
cXVlPFJlc29sdmluZ1R5cGU+KFdURk1vdmUocmVzb2x2YWJsZVR5cGVSZWZlcmVuY2UpKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICBl
eHByZXNzaW9uLnNldFR5cGVBbm5vdGF0aW9uKFdURk1vdmUodHlwZUFubm90YXRpb24pKTsKIH0K
QEAgLTk3NywxMCArOTc3LDEwIEBAIHZvaWQgQ2hlY2tlcjo6YXNzaWduVHlwZShBU1Q6OkV4cHJl
c3Npb24mIGV4cHJlc3Npb24sIFJlZlB0cjxSZXNvbHZhYmxlVHlwZVJlZmVyCiB2b2lkIENoZWNr
ZXI6OmZvcndhcmRUeXBlKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgUmVzb2x2aW5nVHlw
ZSYgcmVzb2x2aW5nVHlwZSwgQVNUOjpUeXBlQW5ub3RhdGlvbiB0eXBlQW5ub3RhdGlvbiA9IEFT
VDo6UmlnaHRWYWx1ZSgpKQogewogICAgIHJlc29sdmluZ1R5cGUudmlzaXQoV1RGOjptYWtlVmlz
aXRvcihbJl0oUmVmPEFTVDo6VW5uYW1lZFR5cGU+JiByZXN1bHQpIHsKLSAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBzdGQ6Om1ha2VfdW5pcXVlPFJl
c29sdmluZ1R5cGU+KHJlc3VsdC5jb3B5UmVmKCkpKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3R5cGVNYXAuYWRkKCZleHByZXNzaW9uLCBtYWtlVW5pcXVlPFJlc29sdmluZ1R5cGU+KHJl
c3VsdC5jb3B5UmVmKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKICAgICB9LCBbJl0oUmVmUHRyPFJlc29sdmFibGVUeXBlUmVmZXJl
bmNlPiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgm
ZXhwcmVzc2lvbiwgc3RkOjptYWtlX3VuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJl
ZigpKSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90eXBlTWFwLmFkZCgmZXhwcmVzc2lv
biwgbWFrZVVuaXF1ZTxSZXNvbHZpbmdUeXBlPihyZXN1bHQuY29weVJlZigpKSk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfSkp
OwogICAgIGV4cHJlc3Npb24uc2V0VHlwZUFubm90YXRpb24oV1RGTW92ZSh0eXBlQW5ub3RhdGlv
bikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
YXJzZXIuY3BwCmluZGV4IDc5NzA4YTFkYWU5OGY0MWY4ZDc4YzI0YTQ0OTgxZjgyN2FkYzhjY2Yu
LmQ4NGU3NDliNDViZDkwMjI0ZDQ1MjYwNzc3NGQyZDMxM2U3OGI0YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKQEAgLTc0
MCwxOSArNzQwLDE5IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVNlbWFudGljKCkgLT4gRXhwZWN0ZWQ8
c3RkOjp1bmlxdWVfcHRyPEFTVDo6U2VtYW50aWM+LCBFcnJvcj4KICAgICBzd2l0Y2ggKHRva2Vu
LT50eXBlKSB7CiAgICAgY2FzZSBUb2tlbjo6VHlwZTo6QXR0cmlidXRlOiB7CiAgICAgICAgIFBB
UlNFKHJlc3VsdCwgU3RhZ2VJbk91dFNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpt
YWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICBy
ZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAg
ICAgfQogICAgIGNhc2UgVG9rZW46OlR5cGU6OlNwZWNpYWxpemVkOiAgewogICAgICAgICBQQVJT
RShyZXN1bHQsIFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Ci0gICAgICAgIHJldHVy
biB7IHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpTZW1hbnRpYz4oV1RGTW92ZSgqcmVzdWx0KSkgfTsK
KyAgICAgICAgcmV0dXJuIHsgbWFrZVVuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1
bHQpKSB9OwogICAgIH0KICAgICBjYXNlIFRva2VuOjpUeXBlOjpSZWdpc3RlcjogIHsKICAgICAg
ICAgUEFSU0UocmVzdWx0LCBSZXNvdXJjZVNlbWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3Rk
OjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGljPihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAg
ICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07
CiAgICAgfQogICAgIGRlZmF1bHQ6ICB7CiAgICAgICAgIFBBUlNFKHJlc3VsdCwgQnVpbHRJblNl
bWFudGljKTsKLSAgICAgICAgcmV0dXJuIHsgc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlNlbWFudGlj
PihXVEZNb3ZlKCpyZXN1bHQpKSB9OworICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlPEFTVDo6
U2VtYW50aWM+KFdURk1vdmUoKnJlc3VsdCkpIH07CiAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9Xb3JrZXJOYXZpZ2F0b3JHUFUuY3BwCmlu
ZGV4IGJmOTBmNmMzNjA1NDhkNTJjOGZkOGVlZWM3NTNjNzhkOGZhOWJmMWMuLmQ5NTIyMzA1YWRh
MWVlOTcxZjE2NTI4ZGUwNjYwNGJiNmE5NmIwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dvcmtlck5hdmlnYXRvckdQVS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV29ya2VyTmF2aWdhdG9yR1BVLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBXb3JrZXJOYXZpZ2F0b3JHUFUqIFdvcmtlck5hdmlnYXRvckdQVTo6ZnJvbShXb3JrZXJOYXZp
Z2F0b3IqIG5hdmlnYXRvcikKIHsKICAgICBXb3JrZXJOYXZpZ2F0b3JHUFUqIHN1cHBsZW1lbnQg
PSBzdGF0aWNfY2FzdDxXb3JrZXJOYXZpZ2F0b3JHUFUqPihTdXBwbGVtZW50PFdvcmtlck5hdmln
YXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBw
bGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
V29ya2VyTmF2aWdhdG9yR1BVPigpOworICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBtYWtl
VW5pcXVlPFdvcmtlck5hdmlnYXRvckdQVT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1
cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnRO
YW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggZWQ1YTNjYzgzNGZl
MTlkNDg4OGI4NTU1MDRiYTE1NWQ0ODNmYzQwNy4uYzFiYWM4NmQzYWIyYjBkOTEzZmNlNzQyMTQz
MWE5NDQ1OWVlZDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y2xlYXJDbGllbnQoKQogCiB2b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkQ29ubmVjdCgpCiB7Ci0gICAgbV9w
ZW5kaW5nVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGlmIChtX2Ns
aWVudCkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRDb25uZWN0KCk7CiAgICAgfSkpOwpAQCAt
MTY0LDcgKzE2NCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRDb25uZWN0KCkKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNz
YWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2Fn
ZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikgewog
ICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1l
c3NhZ2UobWVzc2FnZSk7CiAgICAgfSkpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfdD4mJiBiaW5hcnlEYXRhKQog
ewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIG11dGFibGUgeworICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGJpbmFyeURhdGEgPSBXVEZNb3ZlKGJpbmFyeURhdGEpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpIG11dGFibGUgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5hcnlEYXRhKSk7CiAgICAg
fSkpOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8dWludDhfCiAKIHZvaWQg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudCh1bnNpZ25lZCBidWZmZXJlZEFtb3VudCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBidWZmZXJlZEFtb3VudF0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKG1ha2VVbmlx
dWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgYnVmZmVyZWRBbW91bnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jikg
ewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkVXBkYXRl
QnVmZmVyZWRBbW91bnQoYnVmZmVyZWRBbW91bnQpOwogICAgIH0pKTsKQEAgLTE5Nyw3ICsxOTcs
NyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkVXBk
YXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgYgogCiB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIHsKLSAgICBt
X3BlbmRpbmdUYXNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1
ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
OwogICAgIH0pKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIAogdm9pZCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVk
IHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgdW5z
aWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgbV9wZW5kaW5n
VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24gPSByZWFz
b24uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIG1fcGVu
ZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVuaGFuZGxlZEJ1ZmZlcmVk
QW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29uID0gcmVhc29u
Lmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2xvc2UodW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCByZWFz
b24pOwogICAgICAgICB9KSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIHVuaGFuZGxlZEJ1
ZmZlcmUKIAogdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQogewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAg
IG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwogICAgIH0pKTsKQEAgLTIzMCw3ICsyMzAs
NyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VFcnJvcigpCiAKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRVcGdyYWRlVVJMKCkKIHsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsK
KyAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFVwZ3JhZGVVUkwoKTsKICAgICB9KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNjA3
MTQ0MDkyNGZiMmNlNjdmNTM0MDYyZDc5ZThlM2IwNGVlMWM1MC4uYTA3YTg3NjNhZmI5NjliNDIw
NzBiYzQ5YTg2MjM5Yjc4M2Q2ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtOTcsNyArOTcsNyBAQCBX
ZWJTb2NrZXRDaGFubmVsOjpDb25uZWN0U3RhdHVzIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3Qo
Y29uc3QgVVJMJiByZXF1ZXN0ZWRVUgogICAgIG1fYWxsb3dDb29raWVzID0gdmFsaWRhdGVkVVJM
LT5hcmVDb29raWVzQWxsb3dlZDsKICAgICBTdHJpbmcgdXNlckFnZW50ID0gbV9kb2N1bWVudC0+
dXNlckFnZW50KG1fZG9jdW1lbnQtPnVybCgpKTsKICAgICBTdHJpbmcgY2xpZW50T3JpZ2luID0g
bV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpOwotICAgIG1faGFuZHNoYWtl
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRIYW5kc2hha2U+KHZhbGlkYXRlZFVSTC0+dXJs
LCBwcm90b2NvbCwgdXNlckFnZW50LCBjbGllbnRPcmlnaW4sIG1fYWxsb3dDb29raWVzKTsKKyAg
ICBtX2hhbmRzaGFrZSA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRV
UkwtPnVybCwgcHJvdG9jb2wsIHVzZXJBZ2VudCwgY2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2ll
cyk7CiAgICAgbV9oYW5kc2hha2UtPnJlc2V0KCk7CiAgICAgaWYgKG1fZGVmbGF0ZUZyYW1lci5j
YW5EZWZsYXRlKCkpCiAgICAgICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3Io
bV9kZWZsYXRlRnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKQEAgLTcwMyw3ICs3
MDMsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiB2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OmVucXVldWVUZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewog
ICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVl
dWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4o
KTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFt
ZS0+b3BDb2RlID0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZVRleHQ7CiAgICAgZnJhbWUtPmZyYW1l
VHlwZSA9IFF1ZXVlZEZyYW1lVHlwZVN0cmluZzsKICAgICBmcmFtZS0+c3RyaW5nRGF0YSA9IHN0
cmluZzsKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVU
ZXh0RnJhbWUoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpl
bnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVR
dWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBhdXRvIGZyYW1lID0g
c3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKKyAgICBhdXRvIGZyYW1lID0gbWFrZVVu
aXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZy
YW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7CiAgICAgZnJhbWUtPnZlY3Rv
ckRhdGEucmVzaXplKGRhdGFMZW5ndGgpOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2Rl
LCBjb25zdCBjaGFyCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVldWVCbG9iRnJhbWUoV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIEJsb2ImIGJsb2IpCiB7CiAgICAgQVNTRVJUKG1f
b3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAg
IGF1dG8gZnJhbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZEZyYW1lPigpOworICAgIGF1dG8g
ZnJhbWUgPSBtYWtlVW5pcXVlPFF1ZXVlZEZyYW1lPigpOwogICAgIGZyYW1lLT5vcENvZGUgPSBv
cENvZGU7CiAgICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVlZEZyYW1lVHlwZUJsb2I7CiAgICAg
ZnJhbWUtPmJsb2JEYXRhID0gJmJsb2I7CkBAIC03NjMsNyArNzYzLDcgQEAgdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgICAgICAgICBy
ZWYoKTsgLy8gV2lsbCBiZSBkZXJlZmVkIGFmdGVyIGRpZEZpbmlzaExvYWRpbmcoKSBvciBkaWRG
YWlsKCkuCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2Jsb2JMb2FkZXIpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChmcmFtZS0+YmxvYkRhdGEpOwotICAgICAgICAgICAgICAgIG1fYmxvYkxv
YWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRl
cjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRl
ciA9IG1ha2VVbmlxdWU8RmlsZVJlYWRlckxvYWRlcj4oRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFz
QXJyYXlCdWZmZXIsIHRoaXMpOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9
IEJsb2JMb2FkZXJTdGFydGVkOwogICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlci0+c3RhcnQo
bV9kb2N1bWVudC5nZXQoKSwgKmZyYW1lLT5ibG9iRGF0YSk7CiAgICAgICAgICAgICAgICAgbV9v
dXRnb2luZ0ZyYW1lUXVldWUucHJlcGVuZChXVEZNb3ZlKGZyYW1lKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5jcHAKaW5kZXggZjJmYTYyMDljMDQ4ZjUxNTE4YTI1ZWVjMTNhZWYyNTY0YzlmNGU3Yi4u
ZWUzM2VhMGZlNWNmMWQ1YmY3OWEyZGEwNjcwN2I3M2NkM2E3OGM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
RnJhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFdlYlNvY2tldERlZmxhdGVGcmFtZXI6Oldl
YlNvY2tldERlZmxhdGVGcmFtZXIoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjpjcmVhdGVFeHRlbnNpb25Qcm9j
ZXNzb3IoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldEV4dGVuc2lv
bkRlZmxhdGVGcmFtZT4odGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0RXh0
ZW5zaW9uRGVmbGF0ZUZyYW1lPih0aGlzKTsKIH0KIAogYm9vbCBXZWJTb2NrZXREZWZsYXRlRnJh
bWVyOjpjYW5EZWZsYXRlKCkgY29uc3QKQEAgLTE3MCw4ICsxNzAsOCBAQCBib29sIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXI6OmNhbkRlZmxhdGUoKSBjb25zdAogI2lmIFVTRShaTElCKQogdm9pZCBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJT
b2NrZXREZWZsYXRlcjo6Q29udGV4dFRha2VPdmVyTW9kZSBtb2RlKQogewotICAgIG1fZGVmbGF0
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldERlZmxhdGVyPih3aW5kb3dCaXRzLCBtb2Rl
KTsKLSAgICBtX2luZmxhdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTb2NrZXRJbmZsYXRlcj4o
KTsKKyAgICBtX2RlZmxhdGVyID0gbWFrZVVuaXF1ZTxXZWJTb2NrZXREZWZsYXRlcj4od2luZG93
Qml0cywgbW9kZSk7CisgICAgbV9pbmZsYXRlciA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SW5mbGF0
ZXI+KCk7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5pbml0aWFsaXplKCkgfHwgIW1faW5mbGF0ZXIt
PmluaXRpYWxpemUoKSkgewogICAgICAgICBtX2RlZmxhdGVyID0gbnVsbHB0cjsKICAgICAgICAg
bV9pbmZsYXRlciA9IG51bGxwdHI7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjplbmFibGVEZWZsYXRlKGludCB3aW5kb3dCaXRzLCBXZWJTb2NrZXREZWZs
YXRlcjo6Q28KIHN0ZDo6dW5pcXVlX3B0cjxEZWZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyOjpkZWZsYXRlKFdlYlNvY2tldEZyYW1lJiBmcmFtZSkKIHsKICNpZiBVU0Uo
WkxJQikKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0ZVJlc3VsdEhv
bGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPERlZmxhdGVSZXN1bHRI
b2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6aXNO
b25Db250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgfHwgIWZyYW1lLnBheWxvYWRMZW5ndGgpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYgKCFtX2RlZmxhdGVyLT5hZGRCeXRlcyhmcmFt
ZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSB8fCAhbV9kZWZsYXRlci0+ZmluaXNoKCkp
IHsKQEAgLTE5Niw3ICsxOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVmbGF0ZVJlc3VsdEhvbGRl
cj4gV2ViU29ja2V0RGVmbGF0ZUZyYW1lcjo6ZGVmbGF0ZShXZWJTb2NrZXRGcgogICAgIGZyYW1l
LnBheWxvYWRMZW5ndGggPSBtX2RlZmxhdGVyLT5zaXplKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
ICNlbHNlCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4o
dGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVmbGF0ZVJlc3VsdEhvbGRlcj4odGhpcyk7
CiAjZW5kaWYKIH0KIApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZUZy
YW1lcjo6cmVzZXREZWZsYXRlQ29udGV4dCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmZsYXRlUmVz
dWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKFdlYlNvY2tldEZyYW1l
JiBmcmFtZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5mbGF0ZVJl
c3VsdEhvbGRlcj4odGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPEluZmxhdGVS
ZXN1bHRIb2xkZXI+KHRoaXMpOwogICAgIGlmICghZW5hYmxlZCgpICYmIGZyYW1lLmNvbXByZXNz
KSB7CiAgICAgICAgIHJlc3VsdC0+ZmFpbCgiQ29tcHJlc3NlZCBiaXQgbXVzdCBiZSAwIGlmIG5v
IG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZXIuY3BwCmluZGV4IDFkNmYxNzgyMmM4MDUyODFiNzBhNDE2MjBkY2RlZTZh
ZDJhYjg4OWMuLjRhNDg2NWY4NDk0ZDA2MTNlYWMzMjFhNTk0ZjhiYWUxOTk5NmJiMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBXZWJTb2NrZXREZWZsYXRlcjo6V2ViU29ja2V0
RGVmbGF0ZXIoaW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUgY29udGV4dAogewog
ICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPj0gOCk7CiAgICAgQVNTRVJUKG1fd2luZG93Qml0cyA8
PSAxNSk7Ci0gICAgbV9zdHJlYW0gPSBzdGQ6Om1ha2VfdW5pcXVlPHpfc3RyZWFtPigpOworICAg
IG1fc3RyZWFtID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8el9zdHJlYW0+KCk7
CiAgICAgbWVtc2V0KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKIH0KIApA
QCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgV2ViU29ja2V0RGVmbGF0ZXI6OnJlc2V0KCkKIFdlYlNv
Y2tldEluZmxhdGVyOjpXZWJTb2NrZXRJbmZsYXRlcihpbnQgd2luZG93Qml0cykKICAgICA6IG1f
d2luZG93Qml0cyh3aW5kb3dCaXRzKQogewotICAgIG1fc3RyZWFtID0gc3RkOjptYWtlX3VuaXF1
ZTx6X3N0cmVhbT4oKTsKKyAgICBtX3N0cmVhbSA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPHpfc3RyZWFtPigpOwogICAgIG1lbXNldChtX3N0cmVhbS5nZXQoKSwgMCwgc2l6ZW9m
KHpfc3RyZWFtKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDk5NDA3M2VhYTVlOGIyMzBkMWM4YjAwYzE2YzU5NjQzZTk3ODQyNjguLmRjNmY2
NjBmZDM4OGNlZmZhZjBlYmVmNmU2NjBlNmI2OTViYjYzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6bWFpblRocmVhZEluaXRpYWxpemUo
U2NyaXB0RXhlY3V0CiAKICAgICBib29sIHNlbnQgPSBsb2FkZXJQcm94eS5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKHsKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzazo6Q2xlYW51cFRhc2ssCi0gICAgICAgIFtjbGllbnRXcmFwcGVyID0gY2xpZW50V3JhcHBl
ci5jb3B5UmVmKCksICZsb2FkZXJQcm94eSwgcGVlciA9IHN0ZDo6bWFrZV91bmlxdWU8UGVlcj4o
Y2xpZW50V3JhcHBlci5jb3B5UmVmKCksIGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSwg
V1RGTW92ZShwcm92aWRlcikpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgW2NsaWVudFdyYXBwZXIgPSBjbGllbnRXcmFwcGVyLmNvcHlSZWYoKSwg
JmxvYWRlclByb3h5LCBwZWVyID0gbWFrZVVuaXF1ZTxQZWVyPihjbGllbnRXcmFwcGVyLmNvcHlS
ZWYoKSwgbG9hZGVyUHJveHksIGNvbnRleHQsIHRhc2tNb2RlLCBXVEZNb3ZlKHByb3ZpZGVyKSld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAg
ICAgICAgICAgICBpZiAoY2xpZW50V3JhcHBlci0+ZmFpbGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0
aW9uKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiBCcmlkZ2U6OmluaXRpYWxpemUoKSBxdWl0
dGVkIGVhcmxpZXIsIHdlIG5lZWQgdG8ga2ljayBtYWluVGhyZWFkRGVzdHJveSgpIHRvIGRlbGV0
ZSB0aGUgcGVlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VidnIvTmF2
aWdhdG9yV2ViVlIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JX
ZWJWUi5jcHAKaW5kZXggZDk3YjVjMmE4NWE5ZDIzMjhmOTg0MGY0NGQzZDFlOTYzMmM4MmQ5ZS4u
Nzc2YzQzYWVjMGI5YjViZGVhZGMzZGQ4OTEyNmFjZWQ2YmE3NTE2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JXZWJWUi5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgTmF2aWdhdG9yV2ViVlIqIE5hdmlnYXRvcldlYlZSOjpmcm9tKE5hdmlnYXRvciogbmF2aWdh
dG9yKQogewogICAgIE5hdmlnYXRvcldlYlZSKiBzdXBwbGVtZW50ID0gc3RhdGljX2Nhc3Q8TmF2
aWdhdG9yV2ViVlIqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBw
bGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3
U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yV2ViVlI+KCk7CisgICAgICAg
IGF1dG8gbmV3U3VwcGxlbWVudCA9IG1ha2VVbmlxdWU8TmF2aWdhdG9yV2ViVlI+KCk7CiAgICAg
ICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8o
bmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0RpZ2VzdE9wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vb3Bl
bnNzbC9DcnlwdG9EaWdlc3RPcGVuU1NMLmNwcAppbmRleCBiYzIzZDU5Y2MzMTIzN2IxNDk3YTc2
YWNjNTlkM2VhZjVkMmI1ODQwLi42Y2E2N2YzOTFhMzFmY2QzODY5MjU1YjIxZjJmY2I3ZjNmYmY5
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9vcGVuc3NsL0Ny
eXB0b0RpZ2VzdE9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvRGlnZXN0T3BlblNTTC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RydWN0
IENyeXB0b0RpZ2VzdENvbnRleHRJbXBsIDogcHVibGljIENyeXB0b0RpZ2VzdENvbnRleHQgewog
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBjcmVhdGUo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvRGlnZXN0Q29u
dGV4dEltcGw+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENyeXB0b0RpZ2VzdENvbnRl
eHRJbXBsPigpOwogICAgIH0KIAogICAgIENyeXB0b0RpZ2VzdENvbnRleHRJbXBsKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9DbG9ja0dlbmVyaWMuY3BwCmluZGV4IDMxNTMx
NjgwODA3YjcyZDVlZjkzODA5MTRlN2FlMjQwYWQ5ZDAzOTcuLmU1M2UxOTViMzVmNDk4Zjc5NTI1
MTUxZWJjMmFjZWI1ZmFmY2QyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3lzdGVtL0Nsb2NrR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0
ZW0vQ2xvY2tHZW5lcmljLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgUEFMIHsKIAog
c3RkOjp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2xv
Y2tHZW5lcmljPigpOwogfQogCiBDbG9ja0dlbmVyaWM6OkNsb2NrR2VuZXJpYygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvQ2xvY2tDTS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9DbG9ja0NNLm1tCmluZGV4IGM2ODkzMjE1ZjA2
YjBjNjc0ZDU0NjA4MzNiMWE0ZDUxY2MzMmI2MTQuLjllMDcxYjc4MTRlNDRmZTAwNDQyZTY2Yzcy
MGIyYmZiMzEzMDY5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVt
L21hYy9DbG9ja0NNLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9D
bG9ja0NNLm1tCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBjb25zdCBpbnQzMl90IERlZmF1bHRU
aW1lU2NhbGUgPSAxMDAwOwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2xvY2s+IENsb2NrOjpjcmVhdGUo
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENsb2NrQ00+KCk7CisgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Q2xvY2tDTT4oKTsKIH0KIAogQ2xvY2tDTTo6Q2xvY2tDTSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBjYWNhYjg1
NjhjODYxMTJkOWNkZmVmYzMwOTAyNmFkOWM4MTUzM2U1Li5iMzVmYzE1NjQzN2YxY2EwOWQ2NDIy
YmQ1OWM3MTMzZmFjMmM2MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKQEAgLTE1NzUsNyArMTU3NSw3IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cmVjb21wdXRlSXNJZ25vcmVkKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11
dGF0ZXMoKQogewogICAgIGlmICghbV9jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKQotICAg
ICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFY
Q29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZT4oKTsKKyAgICAgICAgbV9jb21wdXRlZE9iamVj
dEF0dHJpYnV0ZUNhY2hlID0gbWFrZVVuaXF1ZTxBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2Fj
aGU+KCk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdDb21wdXRlZE9iamVj
dEF0dHJpYnV0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApp
bmRleCBlZGZkYmIwYTA2ZmQ2ZWRhMjUwNDhiOTcxOWI5ZWYxYmE5ZTEzNDQzLi5lNmRlYTk2MTFm
OWI0ODgwYTVhMTliOWFkMWUxYmRlNzFjMTg0Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcApAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9u
Ojp1cGRhdGVGaW5pc2hlZFN0YXRlKERpZFNlZWsgZGlkU2VlaywgU3luY2hyb25vdXNseU5vdGlm
eSBzeW5jCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHN5bmNocm9ub3VzbHkgbm90aWZ5
IGlzIGZhbHNlLCBxdWV1ZSBhIG1pY3JvdGFzayB0byBydW4gZmluaXNoIG5vdGlmaWNhdGlvbiBz
dGVwcyBmb3IgYW5pbWF0aW9uIHVubGVzcyB0aGVyZQogICAgICAgICAgICAgLy8gaXMgYWxyZWFk
eSBhIG1pY3JvdGFzayBxdWV1ZWQgdG8gcnVuIHRob3NlIHN0ZXBzIGZvciBhbmltYXRpb24uCiAg
ICAgICAgICAgICBtX2ZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzTWljcm90YXNrUGVuZGluZyA9IHRy
dWU7Ci0gICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKCkgeworICAgICAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLmFwcGVuZChtYWtlVW5pcXVlPFZvaWRNaWNyb3Rhc2s+KFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldICgpIHsKICAgICAgICAgICAgICAgICBpZiAobV9maW5p
c2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcpIHsKICAgICAgICAgICAgICAgICAg
ICAgbV9maW5pc2hOb3RpZmljYXRpb25TdGVwc01pY3JvdGFza1BlbmRpbmcgPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICAgICAgZmluaXNoTm90aWZpY2F0aW9uU3RlcHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGRiMGMxZGM3NmY4
YTI4OTcwNDVlZTJjZmM5MTkyM2Q1OGRmMWI2ZjkuLmM1YzQ3MDYxYmZhY2ExZmNhNzI4YmUyN2Iw
YTJiNGE5ZjBiMzAyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpx
dWV1ZVRhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0LCBSZWY8SlNDOjpNaWNy
CiAgICAgSlNET01XaW5kb3dCYXNlJiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5k
b3dCYXNlJj4ob2JqZWN0KTsKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxi
YWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7Ci0gICAgYXV0byBtaWNyb3Rh
c2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihNaWNyb3Rh
c2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAg
YXV0byBtaWNyb3Rhc2sgPSBtYWtlVW5pcXVlPEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrPihN
aWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCksICp0aGlzT2JqZWN0LnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7
CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXggNjI5NWY1ODRj
ZmU4YTE3MjlkZGY2YjE4ZDc3NTQ5ZmQ0NGM5YTBiZS4uZGI1ZTc3MzQ5MGJlZGZiZjNlMGMxMGNm
MjNkMGEzNmM4YTNiZGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTU2LDExICs1NiwxMSBAQCBFdmVudFRhcmdldCog
SlNFdmVudFRhcmdldDo6dG9XcmFwcGVkKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHN0ZDo6dW5p
cXVlX3B0cjxKU0V2ZW50VGFyZ2V0V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3QoVk0mIHZtLCBK
U1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoYXV0byogdGFyZ2V0ID0ganNEeW5hbWljQ2Fz
dDxKU0V2ZW50VGFyZ2V0Kj4odm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJnZXQtPndyYXBwZWQoKSwgKnRhcmdl
dCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih0YXJn
ZXQtPndyYXBwZWQoKSwgKnRhcmdldCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRvSlNET01X
aW5kb3codm0sIHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEpT
RXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQoKSwgKndpbmRvdyk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPEpTRXZlbnRUYXJnZXRXcmFwcGVyPih3aW5kb3ctPndyYXBwZWQo
KSwgKndpbmRvdyk7CiAgICAgaWYgKGF1dG8qIHNjb3BlID0gdG9KU1dvcmtlckdsb2JhbFNjb3Bl
KHZtLCB0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxKU0V2ZW50
VGFyZ2V0V3JhcHBlcj4oc2NvcGUtPndyYXBwZWQoKSwgKnNjb3BlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8SlNFdmVudFRhcmdldFdyYXBwZXI+KHNjb3BlLT53cmFwcGVkKCksICpzY29w
ZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCBkODMxNjA0Y2Jh
ZWI4N2YwN2QxMmVhZGRhNGJmMDUzMWE3MGJiNDAyLi45YmQ2NjQ0NjAxNzA1NDk1YTk0ZTdiM2Zh
ZGYwNDhmM2M3YjA0M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmpl
Y3QmIG9iamVjdCwgUmVmPEoKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxi
YWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0byYgY29udGV4
dCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtl
X3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oY29udGV4dC5taWNyb3Rhc2tRdWV1
ZSgpLCBjb250ZXh0LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICBhdXRvIG1pY3JvdGFzayA9IG1ha2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2s+KGNvbnRleHQubWljcm90YXNrUXVldWUoKSwgY29udGV4dCwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAg
fSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IDExNGZmM2M4YTVkZjAzOTAyODNiMWE2N2NlNjA4ZDdmNDI0NmU3
YzIuLjM1Y2NkNDk2MzVlMDYxMTk0ZTk3MjkzZTcxMmY3YWEzNzJjNDliYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApA
QCAtMzMwMCw3ICszMzAwLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmUKICAgICBpZiAoYXJy
YXlCdWZmZXJzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRv
IGNvbnRlbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KGFy
cmF5QnVmZmVycy5zaXplKCkpOworICAgIGF1dG8gY29udGVudHMgPSBtYWtlVW5pcXVlPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4oYXJyYXlCdWZmZXJzLnNpemUoKSk7CiAKICAgICBIYXNoU2V0
PEpTQzo6QXJyYXlCdWZmZXIqPiB2aXNpdGVkOwogICAgIGZvciAoc2l6ZV90IGFycmF5QnVmZmVy
SW5kZXggPSAwOyBhcnJheUJ1ZmZlckluZGV4IDwgYXJyYXlCdWZmZXJzLnNpemUoKTsgYXJyYXlC
dWZmZXJJbmRleCsrKSB7CkBAIC0zNDUxLDcgKzM0NTEsNyBAQCBFeGNlcHRpb25PcjxSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0
YXRlJgogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBXYXNtTW9kdWxlQXJyYXkgd2FzbU1v
ZHVsZXM7CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5PiBzaGFyZWRCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4g
c2hhcmVkQnVmZmVycyA9IG1ha2VVbmlxdWU8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PigpOwog
ICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZzdGF0ZSwgdmFsdWUs
IG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBpbWFnZUJpdG1hcHMsCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICB3YXNtTW9kdWxlcywgCkBAIC0zNDY5LDcgKzM0NjksNyBAQCBF
eGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoRXhlY1N0YXRlJgogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29u
dGVudHNBcnJheS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCA9PSBTZXJpYWxpemF0aW9u
Q29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UgPyBXVEZNb3ZlKHNoYXJlZEJ1ZmZlcnMpIDogbnVs
bHB0ciwgV1RGTW92ZShpbWFnZUJ1ZmZlcnMpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAg
ICAgICAgICAgICAgICwgc3RkOjptYWtlX3VuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21Nb2R1
bGVzKQorICAgICAgICAgICAgICAgICwgbWFrZVVuaXF1ZTxXYXNtTW9kdWxlQXJyYXk+KHdhc21N
b2R1bGVzKQogI2VuZGlmCiAgICAgICAgICAgICAgICAgKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDVjNDY2Mjk0
YmVlNTZjMjFiZjBmNjNkMTViMGY4ZGYwZjI3YTNhMGUuLjRmNGIwY2YzYjdlZWNkZGQwNzg3MDI1
NTIwODg5NWU0NWZhMmEwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKGFycmF5TGVuZ3Ro
KTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5ID0gc3RkOjptYWtlX3VuaXF1
ZTxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KCk7CisgICAgYXV0byBhcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkgPSBtYWtlVW5pcXVlPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4oKTsKICAgICB3
aGlsZSAoYXJyYXlMZW5ndGgtLSkgewogICAgICAgICB1bnNpZ25lZCBidWZmZXJTaXplOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlclNpemUpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmNwcAppbmRleCAyNDZmNjRhOWY2
MzIyYjU4NzBjYmI2ODJlZGIyZDRlZGI5NTNlYzdjLi4zYjExMjUyYWU2NGNhZjJlNGZlNzM5ZTMx
ZWUxMDk5NTRkNTZhNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlSlNDbGllbnREYXRhLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEpTVk1DbGllbnRE
YXRhOjppbml0Tm9ybWFsV29ybGQoVk0qIHZtKQogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnRE
YXRhID0gbmV3IEpTVk1DbGllbnREYXRhKCp2bSk7CiAgICAgdm0tPmNsaWVudERhdGEgPSBjbGll
bnREYXRhOyAvLyB+Vk0gZGVsZXRlcyB0aGlzIHBvaW50ZXIuCiAgICAgCi0gICAgdm0tPmhlYXAu
YWRkTWFya2luZ0NvbnN0cmFpbnQoc3RkOjptYWtlX3VuaXF1ZTxET01HQ091dHB1dENvbnN0cmFp
bnQ+KCp2bSwgKmNsaWVudERhdGEpKTsKKyAgICB2bS0+aGVhcC5hZGRNYXJraW5nQ29uc3RyYWlu
dChtYWtlVW5pcXVlPERPTUdDT3V0cHV0Q29uc3RyYWludD4oKnZtLCAqY2xpZW50RGF0YSkpOwog
ICAgICAgICAKICAgICBjbGllbnREYXRhLT5tX25vcm1hbFdvcmxkID0gRE9NV3JhcHBlcldvcmxk
OjpjcmVhdGUoKnZtLCB0cnVlKTsKICAgICB2bS0+bV90eXBlZEFycmF5Q29udHJvbGxlciA9IGFk
b3B0UmVmKG5ldyBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4
IDE2YTc2YzQ5NTI5YTRiYjg3MWNiNjZjYTNhZDc1YTJkNzZhODA2NTUuLmQyMzk4NTdhYTNiZGRl
OWZlYjljYjg3NDBmY2Y1ZDY0OWUzNTBkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcg
QEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KCkKICAgICBBU1NFUlQo
bV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNPYmplY3QobV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgqbV92bSkpLT5nbG9iYWxPYmplY3QoKSA9PSBt
X3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCptX3dvcmtlckdsb2JhbFNjb3BlKTsK
KyAgICBtX2NvbnNvbGVDbGllbnQgPSBtYWtlVW5pcXVlPFdvcmtlckNvbnNvbGVDbGllbnQ+KCpt
X3dvcmtlckdsb2JhbFNjb3BlKTsKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c2V0
Q29uc29sZUNsaWVudChtX2NvbnNvbGVDbGllbnQuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfY2xhc3MuY3BwCmluZGV4IDI5YzgxODY4MzZlYTA1NDExZThmMWVkNjQxYzA1NzBjZTgx
NzY4MTUuLmFhNTZlMmZkZTg1NTc3YWNmOWMwNDc0Yzg5ODc3ZjRlMGQ1YzUxMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCkBAIC04MSw3ICs4MSw3IEBAIE1ldGhvZCogQ0NsYXNz
OjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0YW5jZSogaW5zdGFu
Y2UpIGNvbnN0CiAgICAgY29uc3QgQ0luc3RhbmNlKiBpbnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Q0luc3RhbmNlKj4oaW5zdGFuY2UpOwogICAgIE5QT2JqZWN0KiBvYmogPSBpbnN0LT5nZXRPYmpl
Y3QoKTsKICAgICBpZiAobV9pc2EtPmhhc01ldGhvZCAmJiBtX2lzYS0+aGFzTWV0aG9kKG9iaiwg
aWRlbnQpKSB7Ci0gICAgICAgIGF1dG8gbWV0aG9kID0gc3RkOjptYWtlX3VuaXF1ZTxDTWV0aG9k
PihpZGVudCk7CisgICAgICAgIGF1dG8gbWV0aG9kID0gbWFrZVVuaXF1ZTxDTWV0aG9kPihpZGVu
dCk7CiAgICAgICAgIENNZXRob2QqIHJldCA9IG1ldGhvZC5nZXQoKTsKICAgICAgICAgbV9tZXRo
b2RzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAgICAgcmV0dXJuIHJl
dDsKQEAgLTEwMyw3ICsxMDMsNyBAQCBGaWVsZCogQ0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29uc3QKICAgICBjb25zdCBD
SW5zdGFuY2UqIGluc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBDSW5zdGFuY2UqPihpbnN0YW5jZSk7
CiAgICAgTlBPYmplY3QqIG9iaiA9IGluc3QtPmdldE9iamVjdCgpOwogICAgIGlmIChtX2lzYS0+
aGFzUHJvcGVydHkgJiYgbV9pc2EtPmhhc1Byb3BlcnR5KG9iaiwgaWRlbnQpKSB7Ci0gICAgICAg
IGF1dG8gZmllbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPENGaWVsZD4oaWRlbnQpOworICAgICAgICBh
dXRvIGZpZWxkID0gbWFrZVVuaXF1ZTxDRmllbGQ+KGlkZW50KTsKICAgICAgICAgQ0ZpZWxkKiBy
ZXQgPSBmaWVsZC5nZXQoKTsKICAgICAgICAgbV9maWVsZHMuc2V0KG5hbWUuaW1wbCgpLCBXVEZN
b3ZlKGZpZWxkKSk7CiAgICAgICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19jbGFzcy5tbQppbmRleCBiODZmNzUxYTBhNzEzOGJlMDA3NzZhNzhjYmMyYTZkNDVk
ZDM3NTAyLi5hM2Q4ZDMyZjI4ZGQ4MDU4YTRhYjQ0MjczOTUzNDQwNzRmMjZjNzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCBN
ZXRob2QqIE9iamNDbGFzczo6bWV0aG9kTmFtZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SW5zdGFuY2UqKSBjb25zdAogICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgPSBbdGhpc0NsYXNz
IHdlYlNjcmlwdE5hbWVGb3JTZWxlY3RvcjpvYmpjTWV0aG9kU2VsZWN0b3JdOwogCiAgICAgICAg
ICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNT
dHJpbmcqKW1ldGhvZE5hbWUuZ2V0KCldKSB8fCAhc3RyY21wKG9iamNNZXRob2RTZWxlY3Rvck5h
bWUsIGJ1ZmZlci5kYXRhKCkpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBtZXRob2QgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamNNZXRob2Q+KHRoaXNDbGFzcywgb2JqY01ldGhvZFNlbGVjdG9yKTsK
KyAgICAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IG1ha2VVbmlxdWU8T2JqY01ldGhvZD4odGhp
c0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpOwogICAgICAgICAgICAgICAgIG1ldGhvZFB0ciA9
IG1ldGhvZC5nZXQoKTsKICAgICAgICAgICAgICAgICBtX21ldGhvZENhY2hlLmFkZChuYW1lLmlt
cGwoKSwgV1RGTW92ZShtZXRob2QpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE4OSw3
ICsxODksNyBAQCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29ucwogICAgICAgICAgICAgICAgIG1hcHBl
ZE5hbWUgPSBbdGhpc0NsYXNzIHdlYlNjcmlwdE5hbWVGb3JLZXk6VVRGOEtleU5hbWVdOwogCiAg
ICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21hcHBlZE5hbWUgaXNFcXVhbDooX19icmlk
Z2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB8fCBba2V5TmFtZSBpc0VxdWFsOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWZpZWxkTmFtZS5nZXQoKV0pIHsKLSAgICAgICAgICAgICAgICBhdXRv
IG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilrZXlOYW1lKTsKKyAgICAgICAgICAgICAgICBhdXRvIG5ld0ZpZWxkID0gbWFrZVVuaXF1
ZTxPYmpjRmllbGQ+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilrZXlOYW1lKTsKICAgICAgICAgICAg
ICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdldCgpOwogICAgICAgICAgICAgICAgIG1fZmllbGRDYWNo
ZS5hZGQobmFtZS5pbXBsKCksIFdURk1vdmUobmV3RmllbGQpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTIyMCw3ICsyMjAsNyBAQCBGaWVsZCogT2JqY0NsYXNzOjpmaWVsZE5hbWVkKFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEluc3RhbmNlKiBpbnN0YW5jZSkgY29ucwogICAgICAg
ICAgICAgICAgICAgICBtYXBwZWROYW1lID0gW3RoaXNDbGFzcyB3ZWJTY3JpcHROYW1lRm9yS2V5
Om9iamNJdmFyTmFtZV07CiAKICAgICAgICAgICAgICAgICBpZiAoKG1hcHBlZE5hbWUgJiYgW21h
cHBlZE5hbWUgaXNFcXVhbDooX19icmlkZ2UgTlNTdHJpbmcgKilmaWVsZE5hbWUuZ2V0KCldKSB8
fCAhc3RyY21wKG9iamNJdmFyTmFtZSwganNOYW1lLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgYXV0byBuZXdGaWVsZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY0ZpZWxkPihvYmpjSVZh
cik7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBtYWtlVW5pcXVlPE9iamNG
aWVsZD4ob2JqY0lWYXIpOwogICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdl
dCgpOwogICAgICAgICAgICAgICAgICAgICBtX2ZpZWxkQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBX
VEZNb3ZlKG5ld0ZpZWxkKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IGUwOGIwNDhlM2I1Njg0Mjk4
Y2RlZmQ5M2ViOTE4ODM4OTE1NmY0MzguLjNiOTNlMTg3ODM4NTRjMjQ0NDZlMWNmYTU3NTg0NjZm
MGYwYTdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0K
QEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBpZiAoW3Rh
cmdldE9iamVjdCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1l
dGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopXSl7CiAgICAgICAgIE9iamNDbGFzcyog
b2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0NsYXNzKj4ob2JqY0luc3RhbmNlLT5nZXRDbGFz
cygpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9k
KHN0ZDo6bWFrZV91bmlxdWU8T2JqY01ldGhvZD4ob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9y
KGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChtYWtlVW5p
cXVlPE9iamNNZXRob2Q+KG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZva2VVbmRlZmlu
ZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1w
Kj4oZXhlYy0+anNDYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwogICAgICAgICBmYWxsYmFja01l
dGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChl
eGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcAppbmRleCA4M2Q0NGUwNjdm
YmRmNTQ3ZjZjODhiNjdhMzZlYjUzZjY5MTQ2NmVlLi5mMTcxYTU4MjAzZjk4YWYxNTU0NzgwZTA1
MTllMDRhMWU1M2EwYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lk
IENvbWJpbmVkVVJMRmlsdGVyczo6cHJpbnQoKSBjb25zdAogI2VuZGlmCiAKIENvbWJpbmVkVVJM
RmlsdGVyczo6Q29tYmluZWRVUkxGaWx0ZXJzKCkKLSAgICA6IG1fcHJlZml4VHJlZVJvb3Qoc3Rk
OjptYWtlX3VuaXF1ZTxQcmVmaXhUcmVlVmVydGV4PigpKQorICAgIDogbV9wcmVmaXhUcmVlUm9v
dChtYWtlVW5pcXVlPFByZWZpeFRyZWVWZXJ0ZXg+KCkpCiB7CiB9CiAKQEAgLTIwOSw3ICsyMDks
NyBAQCB2b2lkIENvbWJpbmVkVVJMRmlsdGVyczo6YWRkUGF0dGVybih1aW50NjRfdCBhY3Rpb25J
ZCwgY29uc3QgVmVjdG9yPFRlcm0+JiBwYXR0ZQogICAgICAgICBpZiAobmV4dEVudHJ5SW5kZXgg
IT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgICAgIGxhc3RQcmVmaXhUcmVlID0gbGFzdFByZWZp
eFRyZWUtPmVkZ2VzW25leHRFbnRyeUluZGV4XS5jaGlsZC5nZXQoKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBsYXN0UHJlZml4VHJlZS0+ZWRnZXMuYXBwZW5kKFByZWZpeFRyZWVFZGdl
KHttX2FscGhhYmV0LmludGVybmVkKHRlcm0pLCBzdGQ6Om1ha2VfdW5pcXVlPFByZWZpeFRyZWVW
ZXJ0ZXg+KCl9KSk7CisgICAgICAgICAgICBsYXN0UHJlZml4VHJlZS0+ZWRnZXMuYXBwZW5kKFBy
ZWZpeFRyZWVFZGdlKHttX2FscGhhYmV0LmludGVybmVkKHRlcm0pLCBtYWtlVW5pcXVlPFByZWZp
eFRyZWVWZXJ0ZXg+KCl9KSk7CiAgICAgICAgICAgICBsYXN0UHJlZml4VHJlZSA9IGxhc3RQcmVm
aXhUcmVlLT5lZGdlcy5sYXN0KCkuY2hpbGQuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IDk2ZTJkNjM0Yjg5M2IzOTkzMDRh
OGIyYjI4NWU2MWY0ZTQ2OWRjMGMuLmIyYTlhNzgzNTIyNzcyODNmOTVkODQ5ZDAzYjE1NmZjZGM3
MjFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC0xMTUsMzEg
KzExNSwzMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgIGNhc2UgT3BlcmF0aW9uczo6
RGVjcnlwdDoKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmllcikgewogICAgICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1MxX3YxXzU6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpSU0FfT0FFUDogewogICAgICAgICAgICAgYXV0byBwYXJhbXMg
PSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhj
ZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBh
cmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NCQzoKICAgICAgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ0ZCOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFt
cyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4oc3Rh
dGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0NiY0NmYlBhcmFtcz4ocGFy
YW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVz
Q2JjQ2ZiUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfQ1RSOiB7CiAgICAgICAg
ICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0N0
clBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0N0clBh
cmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxn
b3JpdGhtQWVzQ3RyUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfR0NNOiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bUFlc0djbVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUFl
c0djbVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICBzd2l0Y2ggKCppZGVudGlmaWVyKSB7CiAgICAgICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBU1NBX1BLQ1MxX3YxXzU6CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkVDRFNBOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZl
cnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0
KCkpOwpAQCAtMTYwLDEzICsxNjAsMTMgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgICAgIGlmIChoYXNoSWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gaGFzaElkZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAg
cGFyYW1zLmhhc2hJZGVudGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVl
KCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bUVjZHNhUGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxD
cnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBX1BT
UzogewogICAgICAgICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9B
bGdvcml0aG1Sc2FQc3NQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7CiAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVy
cm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdv
cml0aG1Sc2FQc3NQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5p
cXVlPENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xODAsNyArMTgwLDcgQEAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
Pj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMjU2OgogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8zODQ6CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yIH07CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FFU19QS0NTMV92MV81OiB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRo
bVJzYUtleUdlblBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3Ig
fSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRo
bVJzYUtleUdlblBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlx
dWU8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5R2VuUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpSU0FTU0FfUEtDUzFfdjFfNToKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVD
cnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkS2V5R2VuUGFyYW1zPihwYXJhbXMpOworICAgICAgICAg
ICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRLZXlHZW5QYXJh
bXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19DVFI6CkBAIC0yMTMsNyArMjEzLDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpBRVNfS1c6IHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1zID0gY29udmVydERpY3Rp
b25hcnk8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwog
ICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1BZXNLZXlQYXJhbXM+KHBhcmFtcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OkhNQUM6IHsKQEAgLTIyMywxNCArMjIzLDE0IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6
ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVz
dWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihwYXJhbXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpFQ0RTQToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpFQ0RIOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0aW9uYXJ5
PENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihzdGF0ZSwgdmFsdWUuZ2V0KCkpOwogICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciB9KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5
cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihwYXJhbXMpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKQEAgLTI0OSw3ICsyNDksNyBA
QCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogCiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNv
bnZlcnREaWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXM+KHN0YXRl
LCBuZXdWYWx1ZSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOwotICAgICAgICAgICAgcmVzdWx0ID0g
c3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zPihwYXJh
bXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdvcml0aG1FY2Ro
S2V5RGVyaXZlUGFyYW1zPihwYXJhbXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpIS0RGOiB7CkBAIC0yNTks
NyArMjU5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAgICAgICAgICAgIGlmIChoYXNo
SWRlbnRpZmllci5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaElk
ZW50aWZpZXIucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcGFyYW1zLmhhc2hJZGVu
dGlmaWVyID0gaGFzaElkZW50aWZpZXIucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBh
cmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhr
ZGZQYXJhbXM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlBCS0RGMjogewpAQCAtMjY5LDcgKzI2
OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAoaGFzaElkZW50
aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hJZGVudGlm
aWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNoSWRlbnRpZmll
ciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAgICAgICAgcmVz
dWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFt
cyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBia2Rm
MlBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGRlZmF1bHQ6CkBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPj4gbm9ybWFsaXplQ3J5cHRvQWwKICAg
ICBjYXNlIE9wZXJhdGlvbnM6OkltcG9ydEtleToKICAgICAgICAgc3dpdGNoICgqaWRlbnRpZmll
cikgewogICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQUVTX1BLQ1Mx
X3YxXzU6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVl
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFf
NToKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FfUFNTOgpAQCAt
MjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgICAgICBpZiAo
aGFzaElkZW50aWZpZXIuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhh
c2hJZGVudGlmaWVyLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHBhcmFtcy5oYXNo
SWRlbnRpZmllciA9IGhhc2hJZGVudGlmaWVyLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAgICAg
ICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0aG1Sc2FIYXNoZWRJ
bXBvcnRQYXJhbXM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENy
eXB0b0FsZ29yaXRobVJzYUhhc2hlZEltcG9ydFBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0NUUjoKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAog
ICAgICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkFFU19HQ006CiAgICAgICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0NGQjoKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpITUFDOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnREaWN0
aW9uYXJ5PENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KHN0YXRlLCB2YWx1ZS5nZXQoKSk7
CkBAIC0zMDcsMTkgKzMwNywxOSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3JtYWxpemVDcnlwdG9BbAogICAgICAgICAg
ICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICBwYXJh
bXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmllci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1h
Y0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5
cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNEU0E6
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6RUNESDogewogICAgICAg
ICAgICAgYXV0byBwYXJhbXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1FY0tl
eVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFy
YW1zPihwYXJhbXMpOworICAgICAgICAgICAgcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1FY0tleVBhcmFtcz4ocGFyYW1zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7
CisgICAgICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+KHBhcmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzI5LDcg
KzMyOSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgY2FzZSBPcGVyYXRpb25zOjpV
bndyYXBLZXk6CiAgICAgICAgIHN3aXRjaCAoKmlkZW50aWZpZXIpIHsKICAgICAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1c6Ci0gICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBh
cmFtcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtMzQ0LDcgKzM0NCw3
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4+IG5vcm1hbGl6ZUNyeXB0b0FsCiAgICAgICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6QUVTX0tXOiB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtcyA9IGNvbnZlcnRE
aWN0aW9uYXJ5PENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4oc3RhdGUsIHZhbHVlLmdldCgp
KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENyeXB0b0FsZ29yaXRobUFlc0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtQWVzS2V5UGFyYW1zPihwYXJhbXMp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpITUFDOiB7CkBAIC0zNTQsMTIgKzM1NCwxMiBAQCBzdGF0aWMgRXhj
ZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+PiBub3Jt
YWxpemVDcnlwdG9BbAogICAgICAgICAgICAgaWYgKGhhc2hJZGVudGlmaWVyLmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgIHJldHVybiBoYXNoSWRlbnRpZmllci5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgICAgICAgICBwYXJhbXMuaGFzaElkZW50aWZpZXIgPSBoYXNoSWRlbnRpZmll
ci5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1zKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcz4ocGFyYW1z
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6SEtERjoKICAgICAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpQQktERjI6Ci0gICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CisgICAgICAgICAgICByZXN1bHQgPSBt
YWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+KHBhcmFtcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpAQCAtNTIwLDE2ICs1MjAsMTYgQEAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcm9zc1RocmVhZENvcHlJbXBv
cnRQYXJhbXMoY28KIHsKICAgICBzd2l0Y2ggKGltcG9ydFBhcmFtcy5wYXJhbWV0ZXJzQ2xhc3Mo
KSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6Q2xhc3M6Ok5vbmU6IHsK
LSAgICAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPigpOwogICAgICAgICByZXN1bHQtPmlkZW50aWZpZXIgPSBpbXBvcnRQ
YXJhbXMuaWRlbnRpZmllcjsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6RWNLZXlQYXJhbXM6Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zPihjcm9z
c1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXM+KGltcG9ydFBh
cmFtcykpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtRWNLZXlQ
YXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFt
cz4oaW1wb3J0UGFyYW1zKSkpOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyczo6
Q2xhc3M6OkhtYWNLZXlQYXJhbXM6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENy
eXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPENyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXM+KGNyb3NzVGhyZWFkQ29w
eShkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1IbWFjS2V5UGFyYW1zPihpbXBvcnRQYXJhbXMpKSk7
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzOjpDbGFzczo6UnNhSGFzaGVkSW1w
b3J0UGFyYW1zOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDcnlwdG9BbGdvcml0
aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGNyb3NzVGhyZWFkQ29weShkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FIYXNoZWRJbXBvcnRQYXJhbXM+KGltcG9ydFBhcmFtcykpKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFyYW1zPihj
cm9zc1RocmVhZENvcHkoZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhSGFzaGVkSW1wb3J0UGFy
YW1zPihpbXBvcnRQYXJhbXMpKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IGRiY2NjOTAwZjMzNzQ4Y2QyMDY3ZjYwY2IyOTBj
MGJkNjAwNjU1MzMuLmE0MmY1NjRmODFmZTFmMGVhMDk0NDNkMWYxMDUzYzFjM2NkMGNmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTIxNywxMiAr
MjE3LDEyIEBAIGNsYXNzIENTU0NhbGNQcmltaXRpdmVWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1ND
YWxjRXhwcmVzc2lvbk5vZGUgewogICAgIHsKICAgICAgICAgc3dpdGNoIChjYXRlZ29yeSgpKSB7
CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyOgotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZs
b2F0VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lv
bk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlv
bkNhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+
KGNvbnZlcnNpb25EYXRhKSwgV2ViQ29yZTo6Rml4ZWQpKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+Y29tcHV0ZUxl
bmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkpOwogICAgICAgICBj
YXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQ6CiAgICAgICAgIGNhc2UgQ2FsY3VsYXRp
b25DYXRlZ29yeTo6UGVyY2VudExlbmd0aDogewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1fdmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KG1f
dmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEZsb2F0Q29udmVyc2lvbiB8IFBlcmNlbnRDb252
ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAgICAgICB9CiAgICAgICAgIC8vIE9ubHkgdHlw
ZXMgdGhhdCBjb3VsZCBiZSBwYXJ0IG9mIGEgTGVuZ3RoIGV4cHJlc3Npb24gY2FuIGJlIGNvbnZl
cnRlZAogICAgICAgICAvLyB0byBhIENhbGNFeHByZXNzaW9uTm9kZS4gQ2FsY3VsYXRpb25DYXRl
Z29yeTo6UGVyY2VudE51bWJlciBtYWtlcyBubyBzZW5zZSBhcyBhIExlbmd0aC4KQEAgLTUyMCw3
ICs1MjAsNyBAQCBjbGFzcyBDU1NDYWxjT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIENTU0NhbGNF
eHByZXNzaW9uTm9kZSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICBub2Rlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShub2RlKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25PcGVyYXRpb24+KFdU
Rk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q2Fs
Y0V4cHJlc3Npb25PcGVyYXRpb24+KFdURk1vdmUobm9kZXMpLCBtX29wZXJhdG9yKTsKICAgICB9
CiAKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBmaW5hbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAppbmRleCBjNDRjZWJjNTEyMGVkODMyNmQ5
YTFiMmE2NTZiOTM2N2I2ZTE5MTI4Li5lNWFlOGI3N2E1MTRmMDljM2I0OTQ0MWI1NjJmNWMyYTFl
Yzc1MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNw
cApAQCAtMTY3LDExICsxNjcsMTEgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmxvYWRG
dWxsRGVmYXVsdFN0eWxlKCkKICAgICAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBudWxs
cHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghZGVmYXVsdFN0eWxlKTsKLSAgICAg
ICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVh
c2UoKTsKKyAgICAgICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0Pigp
LnJlbGVhc2UoKTsKICAgICB9CiAKLSAgICBkZWZhdWx0U3R5bGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVTZXQ+KCkucmVsZWFzZSgpOwotICAgIGRlZmF1bHRQcmludFN0eWxlID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5p
cXVlPFJ1bGVTZXQ+KCkucmVsZWFzZSgpOworICAgIGRlZmF1bHRQcmludFN0eWxlID0gbWFrZVVu
aXF1ZTxSdWxlU2V0PigpLnJlbGVhc2UoKTsKICAgICBtZWRpYVF1ZXJ5U3R5bGVTaGVldCA9ICZT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShDU1NQYXJzZXJDb250ZXh0KFVBU2hlZXRNb2RlKSku
bGVha1JlZigpOwogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCkBAIC0xOTAsMTAgKzE5MCwx
MCBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSgp
CiAgICAgQVNTRVJUKCFkZWZhdWx0U3R5bGUpOwogICAgIEFTU0VSVCghc2ltcGxlRGVmYXVsdFN0
eWxlU2hlZXQpOwogCi0gICAgZGVmYXVsdFN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0U3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCku
cmVsZWFzZSgpOwogICAgIC8vIFRoZXJlIGFyZSBubyBtZWRpYS1zcGVjaWZpYyBydWxlcyBpbiB0
aGUgc2ltcGxlIGRlZmF1bHQgc3R5bGUuCiAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBkZWZhdWx0
U3R5bGU7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0
PigpLnJlbGVhc2UoKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVT
ZXQ+KCkucmVsZWFzZSgpOwogCiAgICAgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQgPSBwYXJzZVVB
U2hlZXQoc2ltcGxlVXNlckFnZW50U3R5bGVTaGVldCwgc3RybGVuKHNpbXBsZVVzZXJBZ2VudFN0
eWxlU2hlZXQpKTsKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KCpzaW1wbGVE
ZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
Y3BwCmluZGV4IDc3MDliNWRlYWZiZmU5ZjlhYjExYWMwNzdjNjE5ZDc5NGQxNjQyZjIuLjY0NmMx
NGExMWFjNjQ1Yjk5MjYxNDlmMjllOTgwMGM0YzcyNjdiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNv
dXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAg
ICAgICAgICAgICBib29sIGFsbG93RG93bmxvYWRpbmcgPSBmb3VuZFNWR0ZvbnQgfHwgKHNldHRp
bmdzICYmIHNldHRpbmdzLT5kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQoKSk7CiAgICAg
ICAgICAgICBpZiAoYWxsb3dEb3dubG9hZGluZyAmJiBpdGVtLmlzU3VwcG9ydGVkRm9ybWF0KCkg
JiYgZG9jdW1lbnQpIHsKICAgICAgICAgICAgICAgICBpZiAoQ2FjaGVkRm9udCogY2FjaGVkRm9u
dCA9IGl0ZW0uY2FjaGVkRm9udChkb2N1bWVudCwgZm91bmRTVkdGb250LCBpc0luaXRpYXRpbmdF
bGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlKSkKLSAgICAgICAgICAgICAgICAgICAgc291cmNl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIGl0ZW0ucmVz
b3VyY2UoKSwgY2FjaGVkRm9udCk7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VV
bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGNhY2hl
ZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNvdXJj
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJl
c291cmNlKCksIG51bGxwdHIsIGZvbnRGYWNlRWxlbWVudCk7CisgICAgICAgICAgICBzb3VyY2Ug
PSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgp
LCBudWxscHRyLCBmb250RmFjZUVsZW1lbnQpOwogCiAgICAgICAgIGlmIChzb3VyY2UpCiAgICAg
ICAgICAgICBmb250RmFjZS5hZG9wdFNvdXJjZShXVEZNb3ZlKHNvdXJjZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggMDVlM2EzZjZlMjFiYzkyODE3ODU1NjlhMTRh
YTUwZmY1MmU0YTI3MC4uMThlODM0ZDY5MGE2ZWI1MTAxZGM5MGM4ZGU1ZGI1ZTdhMWIwYzVkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAg
dm9pZCBDU1NGb250RmFjZVNldDo6ZW5zdXJlTG9jYWxGb250RmFjZXNGb3JGYW1pbHlSZWdpc3Rl
cmVkKGNvbnN0IFN0cmluZyYgZmFtaWwKICAgICAgICAgZmFtaWx5TGlzdC0+YXBwZW5kKENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRm9udEZhbWlseVZhbHVlKGZhbWlseU5hbWUpKTsK
ICAgICAgICAgZmFjZS0+c2V0RmFtaWxpZXMoZmFtaWx5TGlzdC5nZXQoKSk7CiAgICAgICAgIGZh
Y2UtPnNldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMoaXRlbSk7Ci0gICAgICAgIGZhY2UtPmFk
b3B0U291cmNlKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZhY2UuZ2V0KCks
IGZhbWlseU5hbWUpKTsKKyAgICAgICAgZmFjZS0+YWRvcHRTb3VyY2UobWFrZVVuaXF1ZTxDU1NG
b250RmFjZVNvdXJjZT4oZmFjZS5nZXQoKSwgZmFtaWx5TmFtZSkpOwogICAgICAgICBBU1NFUlQo
IWZhY2UtPmNvbXB1dGVGYWlsdXJlU3RhdGUoKSk7CiAgICAgICAgIGZhY2VzLmFwcGVuZChXVEZN
b3ZlKGZhY2UpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jv
dXBpbmdSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCmlu
ZGV4IGRlNmYzOWQzZjVkODczMWQ5OWU1ZWIzYzk2OGUyOWFkMWVhY2JmZTYuLmM2YzVjMzk1NDBh
NWM1MDVjZGY0ZDU5Yzc0NmMzOTE4NWM5ZTAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91
cGluZ1J1bGUuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQ1NTUnVsZSogQ1NTR3JvdXBpbmdSdWxl
OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogQ1NTUnVsZUxpc3QmIENTU0dyb3VwaW5nUnVs
ZTo6Y3NzUnVsZXMoKSBjb25zdAogewogICAgIGlmICghbV9ydWxlTGlzdENTU09NV3JhcHBlcikK
LSAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGl2ZUNT
U1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxlJj4o
KnRoaXMpKTsKKyAgICAgICAgbV9ydWxlTGlzdENTU09NV3JhcHBlciA9IG1ha2VVbmlxdWU8TGl2
ZUNTU1J1bGVMaXN0PENTU0dyb3VwaW5nUnVsZT4+KGNvbnN0X2Nhc3Q8Q1NTR3JvdXBpbmdSdWxl
Jj4oKnRoaXMpKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RDU1NPTVdyYXBwZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCBmZmRk
M2QwYWE2NTdmMjVlYWYzMWQ1NzBjNTg2OGVkNTMwOWUyZWZkLi41NTUxZjJjNjkxN2QwMzMwNzI2
YWNkZjgxMDkxYTkxZmFiNGUwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgR2VuZXJhdGVkSW1hZ2UqIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZEltYWdlRm9yU2l6ZShGbG9hdFNpemUgc2l6ZSkK
IHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShGbG9h
dFNpemUgc2l6ZSwgR2VuZXJhdGVkSW1hZ2UmIGltYWdlKQogewogICAgIEFTU0VSVCghbV9pbWFn
ZXMuY29udGFpbnMoc2l6ZSkpOwotICAgIG1faW1hZ2VzLmFkZChzaXplLCBzdGQ6Om1ha2VfdW5p
cXVlPENhY2hlZEdlbmVyYXRlZEltYWdlPigqdGhpcywgc2l6ZSwgaW1hZ2UpKTsKKyAgICBtX2lt
YWdlcy5hZGQoc2l6ZSwgbWFrZVVuaXF1ZTxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4oKnRoaXMsIHNp
emUsIGltYWdlKSk7CiB9CiAKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6ZXZpY3RDYWNo
ZWRHZW5lcmF0ZWRJbWFnZShGbG9hdFNpemUgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlm
cmFtZXNSdWxlLmNwcAppbmRleCBjOTA5ODMyZGEwZTUxOTAyNTM1MTNhMzk4MzE5MWE3YzJmMzkz
MDA1Li42ZjFlYjMzODZkOWZiYzcyZDQ0Mzc4NWQxZDE5YzRkZDhjNWMzN2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgQ1NTS2V5
ZnJhbWVSdWxlKiBDU1NLZXlmcmFtZXNSdWxlOjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAog
Q1NTUnVsZUxpc3QmIENTU0tleWZyYW1lc1J1bGU6OmNzc1J1bGVzKCkKIHsKICAgICBpZiAoIW1f
cnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPExpdmVDU1NSdWxlTGlzdDxDU1NLZXlmcmFtZXNSdWxlPj4oKnRoaXMp
OworICAgICAgICBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyID0gbWFrZVVuaXF1ZTxMaXZlQ1NTUnVs
ZUxpc3Q8Q1NTS2V5ZnJhbWVzUnVsZT4+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fcnVsZUxpc3RD
U1NPTVdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA0
ODBhODk4NTIzN2FkYTkwYTExNzhlMGIyNzllMGU2NjgwN2UzMzQxLi5jODhkMWVkYzkzYjdhNmM4
M2YyMTc3YmFjNzY3ZjliNzgyZWU3NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwCkBAIC0zMjksNyArMzI5LDcgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlcygpCiAgICAgaWYgKCFjYW5BY2Nlc3NSdWxlcygpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoIW1fcnVsZUxpc3RDU1NPTVdyYXBwZXIpCi0gICAgICAgIG1fcnVs
ZUxpc3RDU1NPTVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0eWxlU2hlZXRDU1NSdWxlTGlz
dD4odGhpcyk7CisgICAgICAgIG1fcnVsZUxpc3RDU1NPTVdyYXBwZXIgPSBtYWtlVW5pcXVlPFN0
eWxlU2hlZXRDU1NSdWxlTGlzdD4odGhpcyk7CiAgICAgcmV0dXJuIG1fcnVsZUxpc3RDU1NPTVdy
YXBwZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQ
YWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5j
cHAKaW5kZXggNjVhMmZkZjhkZmFjYjRkN2Y3MWQ3NjFjYjIxNjZiMWE5Mjg0YzA3MC4uOTE0YmRl
NGEyZGU5YWEyMTA2YzAxMDYzYjgwOGQ5Y2E0ZmZmNmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRE9NQ1NTUGFpbnRXb3Jr
bGV0KiBET01DU1NQYWludFdvcmtsZXQ6OmZyb20oRE9NQ1NTTmFtZXNwYWNlJiBjc3MpCiB7CiAg
ICAgYXV0byogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PERPTUNTU1BhaW50V29ya2xldCo+KFN1
cHBsZW1lbnQ8RE9NQ1NTTmFtZXNwYWNlPjo6ZnJvbSgmY3NzLCBzdXBwbGVtZW50TmFtZSgpKSk7
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8RE9NQ1NTUGFpbnRXb3JrbGV0Pihjc3MpOworICAgICAgICBhdXRvIG5l
d1N1cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1BhaW50V29ya2xldD4oY3NzKTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7CiAgICAgICAgIHByb3ZpZGVUbygm
Y3NzLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5j
cHAKaW5kZXggN2VjZDkzZDdkYzNkNDMyZWFmODJiYzk1NmU2MWQ0ODlhNTEwNjI1Yi4uMGRmNmFh
ZTk2ZjBlMWM3MGIzNzU1NjE2NDllZTM1ZDI4ZWI0YzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcApAQCAtODQsNyArODQs
NyBAQCBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5KiBET01DU1NSZWdpc3RlckN1c3RvbVBy
b3BlcnR5Ojpmcm9tKERPTUNTU05hbWVzcGFjZQogewogICAgIGF1dG8qIHN1cHBsZW1lbnQgPSBz
dGF0aWNfY2FzdDxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Kj4oU3VwcGxlbWVudDxET01D
U1NOYW1lc3BhY2U+Ojpmcm9tKCZjc3MsIHN1cHBsZW1lbnROYW1lKCkpKTsKICAgICBpZiAoIXN1
cHBsZW1lbnQpIHsKLSAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5Pihjc3MpOworICAgICAgICBhdXRvIG5ld1N1
cHBsZW1lbnQgPSBtYWtlVW5pcXVlPERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk+KGNzcyk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92
aWRlVG8oJmNzcywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCmluZGV4IGQ4NTk2ZmQx
YjI0NTlkZTA3ZTFjODk5Y2MwNzlmYzE5ODUxMTY1ZTkuLjgyYjdmY2MzMGU1ODI3NDk5MjAyZTI4
YjgzMDg2Y2YwZmE0NGFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBEb2N1bWVudFJ1bGVTZXRzOjpzX2lzSW52YWxpZGF0
aW5nU3R5bGVXaXRoUnVsZVNldHMgeyBmYWxzZSB9OwogRG9jdW1lbnRSdWxlU2V0czo6RG9jdW1l
bnRSdWxlU2V0cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogICAgIDogbV9zdHlsZVJl
c29sdmVyKHN0eWxlUmVzb2x2ZXIpCiB7Ci0gICAgbV9hdXRob3JTdHlsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKTsKKyAgICBtX2F1dGhvclN0eWxlID0gbWFrZVVuaXF1ZTxSdWxlU2V0
PigpOwogICAgIG1fYXV0aG9yU3R5bGUtPmRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKTsKIH0KIApA
QCAtNzgsNyArNzgsNyBAQCB2b2lkIERvY3VtZW50UnVsZVNldHM6OnVwZGF0ZVVzZXJBZ2VudE1l
ZGlhUXVlcnlTdHlsZUlmTmVlZGVkKCkgY29uc3QKIAogICAgIC8vIE1lZGlhIHF1ZXJpZXMgb24g
dXNlciBhZ2VudCBzaGVldCBuZWVkIHRvIGV2YWx1YXRlZCBpbiBkb2N1bWVudCBjb250ZXh0LiBU
aGV5IGJlaGF2ZSBsaWtlIGF1dGhvciBzaGVldHMgaW4gdGhpcyByZXNwZWN0LgogICAgIGF1dG8m
IG1lZGlhUXVlcnlFdmFsdWF0b3IgPSBtX3N0eWxlUmVzb2x2ZXIubWVkaWFRdWVyeUV2YWx1YXRv
cigpOwotICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlU2V0PigpOworICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlID0gbWFrZVVuaXF1ZTxS
dWxlU2V0PigpOwogICAgIG1fdXNlckFnZW50TWVkaWFRdWVyeVN0eWxlLT5hZGRSdWxlc0Zyb21T
aGVldCgqQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjptZWRpYVF1ZXJ5U3R5bGVTaGVldCwgbWVkaWFR
dWVyeUV2YWx1YXRvciwgJm1fc3R5bGVSZXNvbHZlcik7CiAKICAgICAvLyBWaWV3cG9ydCBkZXBl
bmRlbnQgcXVlcmllcyBhcmUgY3VycmVudGx5IHRvbyBpbmVmZmljaWVudCB0byBhbGxvdyBvbiBV
QSBzaGVldC4KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjppbml0aWFs
aXplVXNlclN0eWxlKCkKIHsKICAgICBhdXRvJiBleHRlbnNpb25TdHlsZVNoZWV0cyA9IG1fc3R5
bGVSZXNvbHZlci5kb2N1bWVudCgpLmV4dGVuc2lvblN0eWxlU2hlZXRzKCk7CiAgICAgYXV0byYg
bWVkaWFRdWVyeUV2YWx1YXRvciA9IG1fc3R5bGVSZXNvbHZlci5tZWRpYVF1ZXJ5RXZhbHVhdG9y
KCk7Ci0gICAgYXV0byB0ZW1wVXNlclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0Pigp
OworICAgIGF1dG8gdGVtcFVzZXJTdHlsZSA9IG1ha2VVbmlxdWU8UnVsZVNldD4oKTsKICAgICBp
ZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBh
Z2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
cGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbWVkaWFRdWVyeUV2YWx1YXRvciwgJm1fc3R5bGVS
ZXNvbHZlcik7CiAgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25T
dHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLCAqdGVtcFVzZXJTdHlsZSwgbWVk
aWFRdWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29sdmVyKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxS
dWxlRmVhdHVyZT4mIHJ1bGVzKQogICAgIHNpemVfdCBzaXplID0gcnVsZXMuc2l6ZSgpOwogICAg
IGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBydWxlU2V0ID0g
c3RkOjptYWtlX3VuaXF1ZTxSdWxlU2V0PigpOworICAgIGF1dG8gcnVsZVNldCA9IG1ha2VVbmlx
dWU8UnVsZVNldD4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAg
ICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlc1tpXS5ydWxlLCBydWxlc1tpXS5zZWxlY3Rvcklu
ZGV4LCBydWxlc1tpXS5zZWxlY3Rvckxpc3RJbmRleCk7CiAgICAgcnVsZVNldC0+c2hyaW5rVG9G
aXQoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+
IG1ha2VSdWxlU2V0KGNvbnN0IFZlY3RvcjxSdWxlRmVhdHVyZT4mIHJ1bGVzKQogdm9pZCBEb2N1
bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKCkKIHsKICAgICBtX2lzQXV0aG9yU3R5bGVE
ZWZpbmVkID0gdHJ1ZTsKLSAgICBtX2F1dGhvclN0eWxlID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxl
U2V0PigpOworICAgIG1fYXV0aG9yU3R5bGUgPSBtYWtlVW5pcXVlPFJ1bGVTZXQ+KCk7CiAgICAg
bV9hdXRob3JTdHlsZS0+ZGlzYWJsZUF1dG9TaHJpbmtUb0ZpdCgpOwogfQogCkBAIC0xOTUsMTIg
KzE5NSwxMiBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZh
bGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJgogICAgICAgICAgICAgYXV0byBhcnJh
eUluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCpmZWF0dXJlLm1hdGNoRWxlbWVudCk7CiAg
ICAgICAgICAgICBhdXRvJiBydWxlU2V0ID0gbWF0Y2hFbGVtZW50QXJyYXlbYXJyYXlJbmRleF07
CiAgICAgICAgICAgICBpZiAoIXJ1bGVTZXQpCi0gICAgICAgICAgICAgICAgcnVsZVNldCA9IHN0
ZDo6bWFrZV91bmlxdWU8UnVsZVNldD4oKTsKKyAgICAgICAgICAgICAgICBydWxlU2V0ID0gbWFr
ZVVuaXF1ZTxSdWxlU2V0PigpOwogICAgICAgICAgICAgcnVsZVNldC0+YWRkUnVsZShmZWF0dXJl
LnJ1bGUsIGZlYXR1cmUuc2VsZWN0b3JJbmRleCwgZmVhdHVyZS5zZWxlY3Rvckxpc3RJbmRleCk7
CiAgICAgICAgICAgICBpZiAoZmVhdHVyZS5pbnZhbGlkYXRpb25TZWxlY3RvcikKICAgICAgICAg
ICAgICAgICBpbnZhbGlkYXRpb25TZWxlY3RvckFycmF5W2FycmF5SW5kZXhdLmFwcGVuZChmZWF0
dXJlLmludmFsaWRhdGlvblNlbGVjdG9yKTsKICAgICAgICAgfQotICAgICAgICBhdXRvIGludmFs
aWRhdGlvblJ1bGVTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8SW52YWxpZGF0aW9uUnVs
ZVNldD4+KCk7CisgICAgICAgIGF1dG8gaW52YWxpZGF0aW9uUnVsZVNldHMgPSBtYWtlVW5pcXVl
PFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4oKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBp
ZiAobWF0Y2hFbGVtZW50QXJyYXlbaV0pCiAgICAgICAgICAgICAgICAgaW52YWxpZGF0aW9uUnVs
ZVNldHMtPmFwcGVuZCh7IHN0YXRpY19jYXN0PE1hdGNoRWxlbWVudD4oaSksIFdURk1vdmUobWF0
Y2hFbGVtZW50QXJyYXlbaV0pLCBXVEZNb3ZlKGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlbaV0p
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKaW5kZXgg
MDVkMzg1YTU1OGM0OGM0OGVlOGRhOTBmNmExOGNiNGU3NWE2YTk1YS4uMDViNDU3ZmQ2ODIwYzY3
ZjBlMGZiZTkzMDg3YjhjZWYwODI5ZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJ1
bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yPiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y29sbGVjdFNsb3R0
ZWRQc2UKICAgICBpZiAobV9tYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBydWxlRGF0YVZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNl
dDo6UnVsZURhdGFWZWN0b3I+KCk7CisgICAgYXV0byBydWxlRGF0YVZlY3RvciA9IG1ha2VVbmlx
dWU8UnVsZVNldDo6UnVsZURhdGFWZWN0b3I+KCk7CiAgICAgcnVsZURhdGFWZWN0b3ItPnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9tYXRjaGVkUnVsZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8m
IG1hdGNoZWRSdWxlIDogbV9tYXRjaGVkUnVsZXMpCiAgICAgICAgIHJ1bGVEYXRhVmVjdG9yLT51
bmNoZWNrZWRBcHBlbmQoKm1hdGNoZWRSdWxlLnJ1bGVEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
Y3BwCmluZGV4IDIxMjI0NWRlZGNhZmY5NTZhZDQ0MTA3YjllYjQ0Y2I0MTMyOGFhZGIuLmUxYjFh
ZjIwZmIxMWFlM2RmZWUxOTJjYWM5MmU2MmNkZWE1NTdkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcApAQCAtNDksNyArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29s
IHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBS
ZWY8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiYgYXJyYXlCdWZmZXJWaWV3KQogewotICAgIGF1dG8g
c291cmNlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOworICAg
IGF1dG8gc291cmNlID0gbWFrZVVuaXF1ZTxDU1NGb250RmFjZVNvdXJjZT4oZm9udEZhY2UsIFN0
cmluZygpLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGFycmF5QnVmZmVyVmlldykpOwogICAg
IGZvbnRGYWNlLmFkb3B0U291cmNlKFdURk1vdmUoc291cmNlKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCAzYjIwZDQxMzMzNzUzM2Q2Y2IzYzU4Y2IzZDEwNGYwZjA0YjVl
NjE5Li5lMWUxZDcyMTIxMWU2ZGUwMWE4YTg2ZTBkNDBkODUyODk5N2IzNTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNw
cApAQCAtMzI5LDcgKzMyOSw3IEBAIFJlZlB0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjp3cmFwRm9yRGVwcmVjYXRlZENTCiAgICAgLy8gVGhl
IG1hcCBpcyBoZXJlIHRvIG1haW50YWluIHRoZSBvYmplY3QgaWRlbnRpdHkgb2YgdGhlIENTU1Zh
bHVlcyBvdmVyIG11bHRpcGxlIGludm9jYXRpb25zLgogICAgIC8vIEZJWE1FOiBJdCBpcyBsaWtl
bHkgdGhhdCB0aGUgaWRlbnRpdHkgaXMgbm90IGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxp
dHkgYW5kIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZC4KICAgICBpZiAoIW1fY3Nzb21WYWx1
ZVdyYXBwZXJzKQotICAgICAgICBtX2Nzc29tVmFsdWVXcmFwcGVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8SGFzaE1hcDxDU1NWYWx1ZSosIFdlYWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+Pj4oKTsK
KyAgICAgICAgbV9jc3NvbVZhbHVlV3JhcHBlcnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8Q1NTVmFs
dWUqLCBXZWFrUHRyPERlcHJlY2F0ZWRDU1NPTVZhbHVlPj4+KCk7CiAgICAgCiAgICAgYXV0byYg
Y2xvbmVkVmFsdWUgPSBtX2Nzc29tVmFsdWVXcmFwcGVycy0+YWRkKGludGVybmFsVmFsdWUsIFdl
YWtQdHI8RGVwcmVjYXRlZENTU09NVmFsdWU+KCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
Y2xvbmVkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAppbmRleCBkZmZkYTZmNTFk
Zjk1NGQyMDZmMDNkMGM3MzU2MGRkYTM5MmQxNDMwLi40NGVlYjFkNzAyZDJmOWRjYjZiMTJiNTUy
NzgxNTY3ZmQwMGQyZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVs
ZURhdGEmIHJ1bGVEYXRhKQogCiAgICAgZm9yIChhdXRvJiBuYW1lQW5kTWF0Y2ggOiBzZWxlY3Rv
ckZlYXR1cmVzLmNsYXNzZXMpIHsKICAgICAgICAgY2xhc3NSdWxlcy5lbnN1cmUobmFtZUFuZE1h
dGNoLmZpcnN0LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9y
PFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmQoUnVs
ZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3RvckluZGV4KCksIHJ1bGVE
YXRhLnNlbGVjdG9yTGlzdEluZGV4KCksIG5hbWVBbmRNYXRjaC5zZWNvbmQpKTsKICAgICAgICAg
aWYgKG5hbWVBbmRNYXRjaC5zZWNvbmQgPT0gTWF0Y2hFbGVtZW50OjpIb3N0KQogICAgICAgICAg
ICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG5hbWVBbmRNYXRjaC5maXJzdCk7CkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1
bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAgYXV0byogc2VsZWN0b3IgPSBzZWxlY3RvckFuZE1h
dGNoLmZpcnN0OwogICAgICAgICBhdXRvIG1hdGNoRWxlbWVudCA9IHNlbGVjdG9yQW5kTWF0Y2gu
c2Vjb25kOwogICAgICAgICBhdHRyaWJ1dGVSdWxlcy5lbnN1cmUoc2VsZWN0b3ItPmF0dHJpYnV0
ZSgpLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksIFtdIHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSdWxlRmVhdHVyZT4+KCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOwogICAgICAg
ICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuc2VsZWN0b3JMaXN0SW5kZXgoKSwg
bWF0Y2hFbGVtZW50LCBzZWxlY3RvcikpOwogICAgICAgICBpZiAobWF0Y2hFbGVtZW50ID09IE1h
dGNoRWxlbWVudDo6SG9zdCkKICAgICAgICAgICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmFk
ZChzZWxlY3Rvci0+YXR0cmlidXRlKCkubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKSk7CkBAIC0yMDEsMTQgKzIwMSwxNCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29u
c3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuYXBw
ZW5kVmVjdG9yKG90aGVyLnVuY29tbW9uQXR0cmlidXRlUnVsZXMpOwogICAgIGZvciAoYXV0byYg
a2V5VmFsdWVQYWlyIDogb3RoZXIuY2xhc3NSdWxlcykgewogICAgICAgICBjbGFzc1J1bGVzLmVu
c3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGNsYXNzZXNB
ZmZlY3RpbmdIb3N0LmFkZChvdGhlci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhl
ci5jbGFzc2VzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CiAKICAgICBmb3IgKGF1dG8mIGtleVZhbHVl
UGFpciA6IG90aGVyLmF0dHJpYnV0ZVJ1bGVzKSB7CiAgICAgICAgIGF0dHJpYnV0ZVJ1bGVzLmVu
c3VyZShrZXlWYWx1ZVBhaXIua2V5LCBbXSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxWZWN0b3I8UnVsZUZlYXR1cmU+PigpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAgICAgfQogICAgIGF0dHJpYnV0
ZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5iZWdpbigp
LCBvdGhlci5hdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5j
cHAKaW5kZXggZmE2YjkxMjAyMTNlYzU0YmI2NTkwM2NmYWU2NjliZDQ2NmZiYjAyNy4uM2JiYmJm
ZWJjYTAwOTk3ODJhZjM5ODFlYjg2NzM2Y2U2ODAzNmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNw
cApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUnVsZVNldDo6YWRkVG9SdWxlU2V0KGNvbnN0IEF0
b21TdHJpbmcmIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3QgUnVsZURhCiAgICAgICAgIHJl
dHVybjsKICAgICBhdXRvJiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CiAgICAgaWYgKCFydWxlcykKLSAgICAgICAgcnVsZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJ1bGVEYXRhVmVjdG9yPigpOworICAgICAgICBydWxlcyA9IG1ha2VVbmlxdWU8UnVsZURhdGFW
ZWN0b3I+KCk7CiAgICAgcnVsZXMtPmFwcGVuZChydWxlRGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA2OWFmNTU4MTU2NTRiZTMyMGYx
YTlmZDcxYTc3NjY3ZDkyOTNmYTk3Li44ODc3NWFkN2JhOGFhNTkwYWQ3YmY3MmEzN2QzYjVmNjVi
NWQyZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBA
IC0zNDgsOSArMzQ4LDkgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRUbzEwMFBlcmNlbnRNaW51c0xlbmd0aChjb25zdCBMZW5ndGgKICAgICAvLyBUdXJuIHRo
aXMgaW50byBhIGNhbGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5n
dGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVy
Y2VudCkpKTsKLSAgICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENh
bGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJh
dG9yOjpTdWJ0cmFjdCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxD
YWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhz
LnVuY2hlY2tlZEFwcGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgp
KTsKKyAgICBhdXRvIG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RG
TW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0
aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDlhMTkxZDE3
ZGQ4ZTNlZGNjMWMxMzBjMjY1OTBlMGNhNmY0ZTM2YTMuLmM1YzJiZjVkMGY1ZmM3OTEwYWZmMTYy
NTk5OTBjNDM4NjYwYzE0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKQEAgLTgxMyw3ICs4MTMsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICAg
ICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKCpzaGFkb3dW
YWx1ZS5jb2xvcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5jb2xvcigpOwotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRv
d1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNW
YWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBhdXRvIHNoYWRv
d0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJl
YWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywg
Y29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICBp
ZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0Zp
cnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVu
dHJ5CiAgICAgICAgIGVsc2UKQEAgLTgyOSw3ICs4MjksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1
aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbFRleHRTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbAogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdFRleHRT
aGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0
U2hhZG93KCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRTaGFkb3coc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT50ZXh0
U2hhZG93KCkgPyBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPnRleHRTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dFNoYWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC04NDQsNyArODQ0LDcgQEAgaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVy
aXRCb3hTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkt
PmJveFNoYWRvdygpID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZl
ci5wYXJlbnRTdHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKKyAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmJv
eFNoYWRvdygpID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqc3R5bGVSZXNvbHZlci5wYXJlbnRT
dHlsZSgpLT5ib3hTaGFkb3coKSkgOiBudWxscHRyKTsKIH0KIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQm94U2hhZG93KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEzNTksNyArMTM1OSw3IEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3Vu
dGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRl
bnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBzdGF0
aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1ZhbHVlRGlzYyk7Ci0g
ICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50
Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVl
LT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENv
dW50ZXJDb250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwg
Y291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAg
IGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnRpZXMuY3BwCmluZGV4IDRjZjZjNmY3YWI3ZGY5ZmMwNDMzNGJiZThkZDA1YTNiNTU5ZTkz
NWMuLjE5Y2IwMzNkNzBiYjVhODk2ODY1NTcyNzU1Yjk2Yjk3NzA1MWNiNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0xNTMwLDcgKzE1MzAsNyBAQCBDU1NTdHls
ZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xh
cmF0aW9uKCkKICAgICAgICAgQVNTRVJUKCFtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgp
KTsKICAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdy
YXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4o
KnRoaXMpOworICAgIG1fY3Nzb21XcmFwcGVyID0gbWFrZVVuaXF1ZTxQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQog
CkBAIC0xNTQwLDcgKzE1NDAsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eQogICAgICAgICBB
U1NFUlQobV9jc3NvbVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSA9PSAmcGFyZW50RWxlbWVudCk7
CiAgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQotICAgIG1fY3Nzb21XcmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPigqdGhpcywg
cGFyZW50RWxlbWVudCk7CisgICAgbV9jc3NvbVdyYXBwZXIgPSBtYWtlVW5pcXVlPElubGluZUNT
U1N0eWxlRGVjbGFyYXRpb24+KCp0aGlzLCBwYXJlbnRFbGVtZW50KTsKICAgICByZXR1cm4gKm1f
Y3Nzb21XcmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
M2E1MmMzNjE5OWE3OWEyNWUwOWMwMWQ4ZmEwYzUwYWVmZjY4MmJiNS4uZGU0ZGE1ZjU1MTI5OTA5
MzFkYTg2YzVjN2U4M2JjYjEwMTgwOGJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMTcxNSw3ICsxNzE1LDcgQEAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0
aWVzKiBTdHlsZVJlc29sdmVyOjpjYXNjYWRlZFByb3BlcnRpZXNGb3JSb2xsYmFjaygKICAgICAg
ICAgaWYgKGF1dGhvclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIGF1dGhvclJvbGxiYWNr
OwogCi0gICAgICAgIGF1dG8gbmV3QXV0aG9yUm9sbGJhY2soc3RkOjptYWtlX3VuaXF1ZTxDYXNj
YWRlZFByb3BlcnRpZXM+KGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpKTsKKyAgICAgICAgYXV0byBu
ZXdBdXRob3JSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9u
LCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBjYXNj
YWRlIGNvbnRhaW5zIFVBIHJ1bGVzIGFuZCB1c2VyIHJ1bGVzIGJ1dCBubyBhdXRob3IgcnVsZXMu
CiAgICAgICAgIG5ld0F1dGhvclJvbGxiYWNrLT5hZGROb3JtYWxNYXRjaGVzKG1hdGNoUmVzdWx0
LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0
VUFSdWxlLCBmYWxzZSk7CkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVkUHJvcGVydGllc0ZvclJvbGxi
YWNrKAogICAgICAgICBpZiAodXNlclJvbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuIHVzZXJS
b2xsYmFjazsKIAotICAgICAgICBhdXRvIG5ld1VzZXJSb2xsYmFjayhzdGQ6Om1ha2VfdW5pcXVl
PENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0aW9uLCB3cml0aW5nTW9kZSkpOworICAgICAgICBh
dXRvIG5ld1VzZXJSb2xsYmFjayhtYWtlVW5pcXVlPENhc2NhZGVkUHJvcGVydGllcz4oZGlyZWN0
aW9uLCB3cml0aW5nTW9kZSkpOwogCiAgICAgICAgIC8vIFRoaXMgc3BlY2lhbCByb2xsYmFjayBj
YXNjYWRlIGNvbnRhaW5zIG9ubHkgVUEgcnVsZXMuCiAgICAgICAgIG5ld1VzZXJSb2xsYmFjay0+
YWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFS
dWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vw
cm9wLnBsCmluZGV4IDk5N2M0YzAzNjdkZDVkMGQ2NDVkNWVkZjUxZWVjNGJmYjBjMzIxMDUuLjAy
YTM2ZWZlMDVkM2NjOWZlOTdkZDVjMGUyNTkzYWU3OWZkNmMyYzYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXBy
b3AucGwKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdWIgZ2VuZXJhdGVGaWxsTGF5ZXJQcm9wZXJ0eUlu
aGVyaXRWYWx1ZVNldHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiRmlsbExh
eWVyKiBwcmV2aW91c0NoaWxkID0gbnVsbHB0cjtcbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRp
bmRlbnQgLiAiZm9yIChhdXRvKiBwYXJlbnQgPSAmc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgp
LT4iIC4gZ2V0TGF5ZXJzRnVuY3Rpb24oJG5hbWUpIC4gIigpOyBwYXJlbnQgJiYgcGFyZW50LT4i
IC4gJHRlc3RGdW5jdGlvbiAuICIoKTsgcGFyZW50ID0gcGFyZW50LT5uZXh0KCkpIHtcbiI7CiAg
ICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRz
ZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICBwcmV2aW91c0NoaWxkLT5zZXROZXh0
KHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlwZSgkbmFtZSkg
LiAiKSk7XG4iOworICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcHJldmlv
dXNDaGlsZC0+c2V0TmV4dChtYWtlVW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5
cGUoJG5hbWUpIC4gIikpO1xuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAg
ICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRlbnQg
Lj0gJGluZGVudCAuICIgICAgfVxuIjsKICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIg
ICAgY2hpbGQtPiIgLiAkc2V0dGVyIC4gIihwYXJlbnQtPiIgLiAkZ2V0dGVyIC4gIigpKTtcbiI7
CkBAIC04MzcsNyArODM3LDcgQEAgc3ViIGdlbmVyYXRlRmlsbExheWVyUHJvcGVydHlWYWx1ZVNl
dHRlciB7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIC8vIFdhbGsgZWFjaCB2
YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVk
ZWQuXG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkge1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIGlmICghY2hpbGQpIHtcbiI7Ci0gICRzZXR0ZXJDb250
ZW50IC49ICRpbmRlbnQgLiAiICAgICAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dChzdGQ6
Om1ha2VfdW5pcXVlPEZpbGxMYXllcj4oIiAuIGdldEZpbGxMYXllclR5cGUoJG5hbWUpIC4gIikp
O1xuIjsKKyAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICAgICBwcmV2aW91
c0NoaWxkLT5zZXROZXh0KG1ha2VVbmlxdWU8RmlsbExheWVyPigiIC4gZ2V0RmlsbExheWVyVHlw
ZSgkbmFtZSkgLiAiKSk7XG4iOwogICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAg
ICAgICAgIGNoaWxkID0gcHJldmlvdXNDaGlsZC0+bmV4dCgpO1xuIjsKICAgJHNldHRlckNvbnRl
bnQgLj0gJGluZGVudCAuICIgICAgICAgIH1cbiI7CiAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlTWFwKCktPiIgLiBnZXRGaWxsTGF5ZXJN
YXBmdW5jdGlvbigkbmFtZSkgLiAiKCIgLiAkQ1NTUHJvcGVydHlJZCAuICIsICpjaGlsZCwgaXRl
bSk7XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5k
ZXggNjdjZmRmNTZkNjI1MDUzYTAxMTE5OTJkNzExZjhjOGZmZGI5NWRjMi4uZDc1ZTRmYzkyYzc3
YjA3YjFlNTNkYWQzMzg3ZTU1MWEzOTBjMjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIENTU1BhcnNlckltcGw6OkNT
U1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBzdHJpCiAgICAgLCBtX3N0eWxlU2hlZXQoc3R5bGVTaGVldCkKICAgICAsIG1fb2JzZXJ2ZXJX
cmFwcGVyKHdyYXBwZXIpCiB7Ci0gICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gc3RkOjptYWtl
X3VuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogc3RkOjptYWtlX3VuaXF1
ZTxDU1NUb2tlbml6ZXI+KHN0cmluZyk7CisgICAgbV90b2tlbml6ZXIgPSB3cmFwcGVyID8gbWFr
ZVVuaXF1ZTxDU1NUb2tlbml6ZXI+KHN0cmluZywgKndyYXBwZXIpIDogbWFrZVVuaXF1ZTxDU1NU
b2tlbml6ZXI+KHN0cmluZyk7CiAgICAgaWYgKGNvbnRleHQuZGVmZXJyZWRDU1NQYXJzZXJFbmFi
bGVkICYmICF3cmFwcGVyICYmIHN0eWxlU2hlZXQgJiYgcnVsZVBhcnNpbmcgPT0gQ1NTUGFyc2Vy
OjpSdWxlUGFyc2luZzo6RGVmZXJyZWQpCiAgICAgICAgIG1fZGVmZXJyZWRQYXJzZXIgPSBDU1NE
ZWZlcnJlZFBhcnNlcjo6Y3JlYXRlKGNvbnRleHQsIHN0cmluZywgKnN0eWxlU2hlZXQpOwogfQpA
QCAtMjgyLDkgKzI4Miw5IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBh
Z2VTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsCiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yOwogICAgIGlmICghdHlwZVNlbGVj
dG9yLmlzTnVsbCgpICYmIHBzZXVkby5pc051bGwoKSkKLSAgICAgICAgc2VsZWN0b3IgPSBzdGQ6
Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCks
IHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CisgICAgICAg
IHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJTZWxlY3Rvcj4oUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSgpLCB0eXBlU2VsZWN0b3IsIHN0eWxlU2hlZXQtPmRlZmF1bHROYW1lc3BhY2UoKSkp
OwogICAgIGVsc2UgewotICAgICAgICBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFy
c2VyU2VsZWN0b3I+KCk7CisgICAgICAgIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKICAgICAgICAgaWYgKCFwc2V1ZG8uaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IHNlbGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPihDU1NQYXJzZXJT
ZWxlY3Rvcjo6cGFyc2VQYWdlUHNldWRvU2VsZWN0b3IocHNldWRvKSk7CiAgICAgICAgICAgICBp
ZiAoIXNlbGVjdG9yIHx8IHNlbGVjdG9yLT5tYXRjaCgpICE9IENTU1NlbGVjdG9yOjpQYWdlUHNl
dWRvQ2xhc3MpCkBAIC01MzUsNyArNTM1LDcgQEAgUmVmUHRyPFN0eWxlUnVsZU5hbWVzcGFjZT4g
Q1NTUGFyc2VySW1wbDo6Y29uc3VtZU5hbWVzcGFjZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW4KIFJl
ZlB0cjxTdHlsZVJ1bGVNZWRpYT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZU1lZGlhUnVsZShDU1NQ
YXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2spCiB7CiAg
ICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCi0gICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6
Y3JlYXRlKE1lZGlhUXVlcnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgc3RkOjpt
YWtlX3VuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVk
UGFyc2VyKSk7CisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVNZWRpYTo6Y3JlYXRlKE1lZGlhUXVl
cnlQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeVNldChwcmVsdWRlLCBNZWRpYVF1ZXJ5UGFyc2VyQ29u
dGV4dChtX2NvbnRleHQpKS5yZWxlYXNlTm9uTnVsbCgpLCAgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0
eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKIApAQCAtNTYzLDcgKzU2Myw3IEBAIFJl
ZlB0cjxTdHlsZVJ1bGVTdXBwb3J0cz4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZVN1cHBvcnRzUnVs
ZShDU1NQYXJzZXJUb2tlblJhbmdlCiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBQYXJzZSBl
cnJvciwgaW52YWxpZCBAc3VwcG9ydHMgY29uZGl0aW9uCiAKICAgICBpZiAobV9kZWZlcnJlZFBh
cnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5z
ZXJpYWxpemUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBzdGQ6Om1ha2VfdW5pcXVl
PERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsK
KyAgICAgICAgcmV0dXJuIFN0eWxlUnVsZVN1cHBvcnRzOjpjcmVhdGUocHJlbHVkZS5zZXJpYWxp
emUoKS5zdHJpcFdoaXRlU3BhY2UoKSwgc3VwcG9ydGVkLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5
bGVHcm91cFJ1bGVMaXN0PihibG9jaywgKm1fZGVmZXJyZWRQYXJzZXIpKTsKIAogICAgIGlmICht
X29ic2VydmVyV3JhcHBlcikgewogICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2JzZXJ2ZXIo
KS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlOjpTdXBwb3J0cywgbV9vYnNlcnZlcldyYXBwZXIt
PnN0YXJ0T2Zmc2V0KHByZWx1ZGUpKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBSZWZQdHI8U3R5bGVS
dWxlS2V5ZnJhbWVzPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lS2V5ZnJhbWVzUnVsZShib29sIHdl
YmtpdFByZWZpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gUGFyc2UgZXJyb3I7IGV4cGVj
dGVkIGlkZW50IHRva2VuIGluIEBrZXlmcmFtZXMgaGVhZGVyCiAKICAgICBpZiAobV9kZWZlcnJl
ZFBhcnNlcikKLSAgICAgICAgcmV0dXJuIFN0eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKG5hbWUs
IHN0ZDo6bWFrZV91bmlxdWU8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+KGJsb2NrLCAqbV9k
ZWZlcnJlZFBhcnNlcikpOworICAgICAgICByZXR1cm4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpjcmVh
dGUobmFtZSwgbWFrZVVuaXF1ZTxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlzdD4oYmxvY2ssICpt
X2RlZmVycmVkUGFyc2VyKSk7CiAKICAgICBpZiAobV9vYnNlcnZlcldyYXBwZXIpIHsKICAgICAg
ICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlSGVhZGVyKFN0eWxlUnVs
ZTo6S2V5ZnJhbWVzLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZzZXQocmFuZ2VDb3B5KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCmlu
ZGV4IDRkYmVmNDA1OGM3MTYyY2Q5NjQ2ZWE3NjRkY2JiOWJiY2YzMWU0NTkuLmEwODcwZDM3NjJj
ZWE0MmY1YjVlYWJkMDVlYTc0NGYyZDlkNmIzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUGFnZVBz
ZXVkb1NlbGVjdG9yKFN0CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8gc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwor
ICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAg
IHNlbGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0Ns
YXNzKTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UGFnZVBzZXVkb1R5cGUocHNldWRv
VHlwZSk7CiAgICAgcmV0dXJuIHNlbGVjdG9yOwpAQCAtNjMsNyArNjMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1BhcnNlclNlbGVjdG9yOjpwYXJzZVBzZXVkb0Vs
ZW1lbnRTZWxlY3RvcgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
YXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7Cisg
ICAgYXV0byBzZWxlY3RvciA9IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAg
c2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
KTsKICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVudFR5cGUocHNldWRv
VHlwZSk7CiAgICAgQXRvbVN0cmluZyBuYW1lOwpAQCAtODQsMTMgKzg0LDEzIEBAIHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyU2VsZWN0b3I6OnBhcnNlUHNldWRv
Q2xhc3NTZWxlY3RvcihTCiB7CiAgICAgYXV0byBwc2V1ZG9UeXBlID0gcGFyc2VQc2V1ZG9DbGFz
c0FuZENvbXBhdGliaWxpdHlFbGVtZW50U3RyaW5nKHBzZXVkb1R5cGVTdHJpbmcpOwogICAgIGlm
IChwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Vua25v
d24pIHsKLSAgICAgICAgYXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2Vy
U2VsZWN0b3I+KCk7CisgICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNl
clNlbGVjdG9yPigpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKICAgICAgICAgc2VsZWN0b3ItPm1fc2VsZWN0b3ItPnNl
dFBzZXVkb0NsYXNzVHlwZShwc2V1ZG9UeXBlLnBzZXVkb0NsYXNzKTsKICAgICAgICAgcmV0dXJu
IHNlbGVjdG9yOwogICAgIH0KICAgICBpZiAocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRv
RWxlbWVudCAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd24pIHsKLSAgICAgICAg
YXV0byBzZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7Cisg
ICAgICAgIGF1dG8gc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwog
ICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQpOwogICAgICAgICBzZWxlY3Rvci0+bV9zZWxlY3Rvci0+c2V0UHNldWRvRWxlbWVu
dFR5cGUocHNldWRvVHlwZS5jb21wYXRpYmlsaXR5UHNldWRvRWxlbWVudCk7CiAgICAgICAgIHNl
bGVjdG9yLT5tX3NlbGVjdG9yLT5zZXRWYWx1ZShwc2V1ZG9UeXBlU3RyaW5nLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkpOwpAQCAtMTAwLDEyICsxMDAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPENT
U1BhcnNlclNlbGVjdG9yPiBDU1NQYXJzZXJTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9DbGFzc1NlbGVj
dG9yKFMKIH0KIAogQ1NTUGFyc2VyU2VsZWN0b3I6OkNTU1BhcnNlclNlbGVjdG9yKCkKLSAgICA6
IG1fc2VsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKKyAgICA6IG1fc2Vs
ZWN0b3IobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvcj4oKSkKIHsKIH0KIAogQ1NTUGFyc2VyU2VsZWN0
b3I6OkNTU1BhcnNlclNlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKQotICAg
IDogbV9zZWxlY3RvcihzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdRTmFtZSkpCisg
ICAgOiBtX3NlbGVjdG9yKG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1lKSkKIHsKIH0K
IApAQCAtMTI2LDcgKzEyNiw3IEBAIENTU1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFyc2VyU2VsZWN0
b3IoKQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiYmIHNlbGVjdG9yVmVjdG9yKQog
ewotICAgIG1fc2VsZWN0b3ItPnNldFNlbGVjdG9yTGlzdChzdGQ6Om1ha2VfdW5pcXVlPENTU1Nl
bGVjdG9yTGlzdD4oV1RGTW92ZShzZWxlY3RvclZlY3RvcikpKTsKKyAgICBtX3NlbGVjdG9yLT5z
ZXRTZWxlY3Rvckxpc3QobWFrZVVuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KFdURk1vdmUoc2VsZWN0
b3JWZWN0b3IpKSk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OnNldExhbmdBcmd1bWVu
dExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxBdG9tU3RyaW5nPj4gYXJndW1lbnRMaXN0KQpA
QCAtMjA5LDEyICsyMDksMTIgQEAgdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YXBwZW5kVGFnSGlz
dG9yeShDU1NQYXJzZXJTZWxlY3RvckNvbWJpbmF0b3IgcmVsYXRpb24sIHMKIAogdm9pZCBDU1NQ
YXJzZXJTZWxlY3Rvcjo6cHJlcGVuZFRhZ1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z1FOYW1lLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKIHsKLSAgICBhdXRvIHNlY29uZCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CisgICAgYXV0byBzZWNvbmQg
PSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogICAgIHNlY29uZC0+bV9zZWxlY3Rv
ciA9IFdURk1vdmUobV9zZWxlY3Rvcik7CiAgICAgc2Vjb25kLT5tX3RhZ0hpc3RvcnkgPSBXVEZN
b3ZlKG1fdGFnSGlzdG9yeSk7CiAgICAgbV90YWdIaXN0b3J5ID0gV1RGTW92ZShzZWNvbmQpOwog
Ci0gICAgbV9zZWxlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NTU2VsZWN0b3I+KHRhZ1FOYW1l
LCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpOworICAgIG1fc2VsZWN0b3IgPSBtYWtlVW5pcXVlPENT
U1NlbGVjdG9yPih0YWdRTmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKICAgICBtX3NlbGVj
dG9yLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3IpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDQ4OGU2
MDIzZjIwMDI0YWZmZWY4NjE3YTUxNGM0MDliZjQ5ZDFlZjMuLjcwOGVjNzc3M2MxOGQ2ZTA4ZTAw
MWNhZmEzZDI4YzgwZDlmODcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBzdGF0aWMgUmVmUHRy
PENTU0Jhc2ljU2hhcGVQYXRoPiBjb25zdW1lQmFzaWNTaGFwZVBhdGgoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgYXJncwogICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gU3RyaW5nVG9rZW4pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gYnl0ZVN0cmVhbSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CisgICAgYXV0byBieXRlU3RyZWFtID0g
bWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsKICAgICBpZiAoIWJ1aWxkU1ZHUGF0aEJ5
dGVTdHJlYW1Gcm9tU3RyaW5nKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1
ZSgpLnRvU3RyaW5nKCksICpieXRlU3RyZWFtLCBVbmFsdGVyZWRQYXJzaW5nKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
U2VsZWN0b3JQYXJzZXIuY3BwCmluZGV4IDZiM2FjYzg1ZTZmYzVlNWNiYjk1YWI5ZmUxYTZjN2Nh
OWVmODEwNDcuLmYzMzIzYjIyNmI0YjAxMDBjOTgzYzQ4NjYzNzVmMWU2NTdiMTczOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC01
NjQsNyArNTY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxl
Y3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyhDU1NQYXJzZXJUb2sKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhbmc6IHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBDU1MgU2VsZWN0b3JzIExldmVsIDQgYWxsb3dzIDpsYW5nKCotZm9vKQotICAgICAgICAg
ICAgYXV0byBhcmd1bWVudExpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxBdG9tU3RyaW5n
Pj4oKTsKKyAgICAgICAgICAgIGF1dG8gYXJndW1lbnRMaXN0ID0gbWFrZVVuaXF1ZTxWZWN0b3I8
QXRvbVN0cmluZz4+KCk7CiAgICAgICAgICAgICBpZiAoIWNvbnN1bWVMYW5nQXJndW1lbnRMaXN0
KGFyZ3VtZW50TGlzdCwgYmxvY2spKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICAgICAgc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RGTW92ZShhcmd1bWVu
dExpc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUuY3BwCmluZGV4IDllYjVkN2U0OWY1NmExZTk4ZDFmYmI5YjIzZTZlYTcyZTIyNjE1OGYu
Ljg4MTE3ZjE5ZTRiMjZiYTI1YmZmMjVhODU1OTE3MzJiYjdhM2U3ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcApAQCAtMzM0LDcg
KzMzNCw3IEBAIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjpFbGVtZW50UXVldWUmIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnN1cmVCYWNrCiB7CiAgICAgaWYgKCFzX3Byb2Nlc3Np
bmdCYWNrdXBFbGVtZW50UXVldWUpIHsKICAgICAgICAgc19wcm9jZXNzaW5nQmFja3VwRWxlbWVu
dFF1ZXVlID0gdHJ1ZTsKLSAgICAgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgp
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEJhY2t1cEVsZW1lbnRRdWV1ZU1pY3JvdGFzaz4oKSk7
CisgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVu
aXF1ZTxCYWNrdXBFbGVtZW50UXVldWVNaWNyb3Rhc2s+KCkpOwogICAgIH0KICAgICByZXR1cm4g
YmFja3VwRWxlbWVudFF1ZXVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmlu
ZGV4IGU3OTNmMjBkOTMxYmY4NGM4NWZhYjlhZDI0ZjgzZmU4YTQ4YTJmMWQuLmQzYWY3MGZiOGJh
MzM2YmZhNjE4YmY5YzEyNTZiMTA3ZDlkMjVhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBEYXRhVHJhbnNmZXI6OmRpZEFkZEZpbGVU
b0l0ZW1MaXN0KCkKIERhdGFUcmFuc2Zlckl0ZW1MaXN0JiBEYXRhVHJhbnNmZXI6Oml0ZW1zKCkK
IHsKICAgICBpZiAoIW1faXRlbUxpc3QpCi0gICAgICAgIG1faXRlbUxpc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CisgICAgICAgIG1faXRlbUxpc3Qg
PSBtYWtlVW5pcXVlPERhdGFUcmFuc2Zlckl0ZW1MaXN0PigqdGhpcyk7CiAgICAgcmV0dXJuICpt
X2l0ZW1MaXN0OwogfQogCkBAIC00MTYsNyArNDE2LDcgQEAgYm9vbCBEYXRhVHJhbnNmZXI6Omhh
c1N0cmluZ09mVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9ySW5wdXRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LCBjb25zdCBTdHJpbmcmIGh0bWxUZXh0KQogewotICAg
IGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8U3RhdGljUGFzdGVib2FyZD4oKTsK
KyAgICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCk7CiAg
ICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvcGxhaW4iX3MsIHBsYWluVGV4dCk7CiAg
ICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcoInRleHQvaHRtbCJfcywgaHRtbFRleHQpOwogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFUcmFuc2Zlcihkb2N1bWVudCwgU3RvcmVNb2RlOjpS
ZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgVHlwZTo6SW5wdXRFdmVudCkpOwpAQCAtNDcx
LDcgKzQ3MSw3IEBAIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJh
Zyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFu
c2Zlcjo6Y3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQog
ewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9j
dW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdyaXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpY1Bhc3Rl
Ym9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOworICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoZG9jdW1lbnQsIFN0b3JlTW9kZTo6UmVhZFdy
aXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCksIFR5cGU6OkRyYWdBbmREcm9wRGF0
YSkpOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3Jp
Z2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwog
fQpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRGF0YVRyYW5zZmVyOjpzZXREcmFnSW1hZ2UoRWxl
bWVudCogZWxlbWVudCwgaW50IHgsIGludCB5KQogICAgIG1fZHJhZ0ltYWdlID0gaW1hZ2U7CiAg
ICAgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIGlmICghbV9kcmFnSW1hZ2VMb2FkZXIpCi0g
ICAgICAgICAgICBtX2RyYWdJbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RHJhZ0ltYWdl
TG9hZGVyPih0aGlzKTsKKyAgICAgICAgICAgIG1fZHJhZ0ltYWdlTG9hZGVyID0gbWFrZVVuaXF1
ZTxEcmFnSW1hZ2VMb2FkZXI+KHRoaXMpOwogICAgICAgICBtX2RyYWdJbWFnZUxvYWRlci0+c3Rh
cnRMb2FkaW5nKG1fZHJhZ0ltYWdlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggMzM2MjIzMTA4MWIxM2Y3
MmRjMThkYWM1ZjM5MDdhNWU3YzE3YjBiZi4uZjIxMTMxZmY4Mjc4MjFkYzc0ZTg1MGE5OGYxYmIy
MzA5OWUwMjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcjo6aXNBY3RpdmVBdChQYWdlKiBwYWdlKQogCiB2b2lkIHByb3ZpZGVEZXZp
Y2VPcmllbnRhdGlvblRvKFBhZ2UmIHBhZ2UsIERldmljZU9yaWVudGF0aW9uQ2xpZW50JiBjbGll
bnQpCiB7Ci0gICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpwcm92aWRlVG8oJnBhZ2Us
IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtl
X3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI+KGNsaWVudCkpOworICAgIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cHJvdmlkZVRvKCZwYWdlLCBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyPihjbGllbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDNjN2VlZDk1ZGVjZTc5OWQ2MDhjYjVjNzVkOTI1ZmI5
YjdmZDMwNC4uZDJjNjYyYzY4Y2U1YzgxNzAxNWI4NGYyMTc1NTY4N2FjYWJkYmViNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MjEsMTkgKzUyMSwxOSBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
LCB1bnNpZwogICAgICwgbV9xdWlya3MobWFrZVVuaXF1ZVJlZjxRdWlya3M+KCp0aGlzKSkKICAg
ICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIobV9mcmFtZSA/IFJlZjxDYWNoZWRSZXNvdXJjZUxv
YWRlcj4obV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKSkgOiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKG51bGxwdHIpKQog
ICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNpb24pCi0gICAgLCBtX3N0
eWxlU2NvcGUoc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKLSAgICAsIG1f
ZXh0ZW5zaW9uU3R5bGVTaGVldHMoc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0
cz4oKnRoaXMpKQotICAgICwgbV92aXNpdGVkTGlua1N0YXRlKHN0ZDo6bWFrZV91bmlxdWU8Vmlz
aXRlZExpbmtTdGF0ZT4oKnRoaXMpKQotICAgICwgbV9tYXJrZXJzKHN0ZDo6bWFrZV91bmlxdWU8
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2NvcGUobWFr
ZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fZXh0ZW5zaW9uU3R5bGVTaGVl
dHMobWFrZVVuaXF1ZTxFeHRlbnNpb25TdHlsZVNoZWV0cz4oKnRoaXMpKQorICAgICwgbV92aXNp
dGVkTGlua1N0YXRlKG1ha2VVbmlxdWU8VmlzaXRlZExpbmtTdGF0ZT4oKnRoaXMpKQorICAgICwg
bV9tYXJrZXJzKG1ha2VVbmlxdWU8RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyPigqdGhpcykpCiAg
ICAgLCBtX3N0eWxlUmVjYWxjVGltZXIoW3RoaXNdIHsgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOyB9
KQogICAgICwgbV9kb2N1bWVudENyZWF0aW9uVGltZShNb25vdG9uaWNUaW1lOjpub3coKSkKLSAg
ICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVubmVyPigqdGhpcykp
Ci0gICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1vZHVsZUxvYWRl
cj4oKnRoaXMpKQorICAgICwgbV9zY3JpcHRSdW5uZXIobWFrZVVuaXF1ZTxTY3JpcHRSdW5uZXI+
KCp0aGlzKSkKKyAgICAsIG1fbW9kdWxlTG9hZGVyKG1ha2VVbmlxdWU8U2NyaXB0TW9kdWxlTG9h
ZGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRy
YW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1z
VGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV94bWxWZXJzaW9uKCIxLjAiX3MpCi0gICAgLCBt
X2NvbnN0YW50UHJvcGVydHlNYXAoc3RkOjptYWtlX3VuaXF1ZTxDb25zdGFudFByb3BlcnR5TWFw
PigqdGhpcykpCisgICAgLCBtX2NvbnN0YW50UHJvcGVydHlNYXAobWFrZVVuaXF1ZTxDb25zdGFu
dFByb3BlcnR5TWFwPigqdGhpcykpCiAgICAgLCBtX2RvY3VtZW50Q2xhc3Nlcyhkb2N1bWVudENs
YXNzZXMpCiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQpAQCAtNTQ1LDEwICs1NDUsMTAgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWcKICNlbmRp
ZgogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVu
dERlbGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVW
SUNFX09SSUVOVEFUSU9OKQotICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxEZXZpY2VNb3Rpb25DbGllbnRJT1M+KCkpCi0gICAgLCBtX2RldmljZU1vdGlvbkNvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VNb3Rpb25Db250cm9sbGVyPigqbV9kZXZpY2VN
b3Rpb25DbGllbnQpKQotICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TPigpKQotICAgICwgbV9kZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXI+KCptX2RldmljZU9yaWVudGF0aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlTW90aW9u
Q2xpZW50KG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ2xpZW50SU9TPigpKQorICAgICwgbV9kZXZp
Y2VNb3Rpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4oKm1f
ZGV2aWNlTW90aW9uQ2xpZW50KSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQobWFr
ZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUz4oKSkKKyAgICAsIG1fZGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKG1ha2VVbmlxdWU8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
PigqbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudCkpCiAjZW5kaWYKICAgICAsIG1fcGVuZGluZ1Rh
c2tzVGltZXIoKnRoaXMsICZEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCkKICAgICAs
IG1fdmlzdWFsVXBkYXRlc1N1cHByZXNzaW9uVGltZXIoKnRoaXMsICZEb2N1bWVudDo6dmlzdWFs
VXBkYXRlc1N1cHByZXNzaW9uVGltZXJGaXJlZCkKQEAgLTc2NSw3ICs3NjUsNyBAQCBFbGVtZW50
KiBEb2N1bWVudDo6ZWxlbWVudEZvckFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkKIAogdm9p
ZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlDYWNoZSgpCiB7Ci0gICAgbV9hY2Nlc3NLZXlDYWNo
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+PihbdGhpc10geworICAgIG1fYWNjZXNzS2V5Q2FjaGUgPSBtYWtlVW5p
cXVlPEhhc2hNYXA8U3RyaW5nLCBFbGVtZW50KiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4o
W3RoaXNdIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEVsZW1lbnQqLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBub2RlIDogY29tcG9zZWRUcmVl
RGVzY2VuZGFudHMoKnRoaXMpKSB7CiAgICAgICAgICAgICBpZiAoIWlzPEVsZW1lbnQ+KG5vZGUp
KQpAQCAtNzkwLDcgKzc5MCw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBEb2N1bWVu
dDo6c2VsZWN0b3JRdWVyeUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHNlbGVjCiAgICAgaWYgKHNl
bGVjdG9yU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRh
eEVycm9yIH07CiAgICAgaWYgKCFtX3NlbGVjdG9yUXVlcnlDYWNoZSkKLSAgICAgICAgbV9zZWxl
Y3RvclF1ZXJ5Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnlDYWNoZT4oKTsK
KyAgICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUgPSBtYWtlVW5pcXVlPFNlbGVjdG9yUXVlcnlD
YWNoZT4oKTsKICAgICByZXR1cm4gbV9zZWxlY3RvclF1ZXJ5Q2FjaGUtPmFkZChzZWxlY3RvclN0
cmluZywgKnRoaXMpOwogfQogCkBAIC04NTUsNyArODU1LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVz
ZXRBY3RpdmVMaW5rQ29sb3IoKQogRE9NSW1wbGVtZW50YXRpb24mIERvY3VtZW50OjppbXBsZW1l
bnRhdGlvbigpCiB7CiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uKQotICAgICAgICBtX2ltcGxl
bWVudGF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOwor
ICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gbWFrZVVuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9pbXBsZW1lbnRhdGlvbjsKIH0KIApAQCAtMTc3MCw3ICsx
NzcwLDcgQEAgTm9kZTo6Tm9kZVR5cGUgRG9jdW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKIEZvcm1D
b250cm9sbGVyJiBEb2N1bWVudDo6Zm9ybUNvbnRyb2xsZXIoKQogewogICAgIGlmICghbV9mb3Jt
Q29udHJvbGxlcikKLSAgICAgICAgbV9mb3JtQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Rm9ybUNvbnRyb2xsZXI+KCk7CisgICAgICAgIG1fZm9ybUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PEZvcm1Db250cm9sbGVyPigpOwogICAgIHJldHVybiAqbV9mb3JtQ29udHJvbGxlcjsKIH0KIApA
QCAtMTk5NSw3ICsxOTk1LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVGV4dFJlbmRlcmVyKFRl
eHQmIHRleHQsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWRUZXh0LCB1bnMKICAgICBBU1NFUlQo
IW1faW5SZW5kZXJUcmVlVXBkYXRlKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBpblJlbmRlclRy
ZWVVcGRhdGUobV9pblJlbmRlclRyZWVVcGRhdGUsIHRydWUpOwogCi0gICAgYXV0byB0ZXh0VXBk
YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CisgICAgYXV0byB0
ZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CiAgICAgdGV4dFVw
ZGF0ZS0+YWRkVGV4dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRUZXh0LCBsZW5ndGhPZlJlcGxh
Y2VkVGV4dCwgV1RGOjpudWxsb3B0IH0pOwogCiAgICAgUmVuZGVyVHJlZVVwZGF0ZXIgcmVuZGVy
VHJlZVVwZGF0ZXIoKnRoaXMpOwpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAgdm9pZCBEb2N1bWVudDo6
cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNp
emUsIGludCYKIFN0eWxlUmVzb2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5
bGVSZXNvbHZlcigpCiB7CiAgICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyKQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdHlsZVJlc29sdmVyPigqdGhpcyk7CisgICAgICAgIG1fdXNlckFnZW50U2hh
ZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFN0eWxlUmVzb2x2ZXI+KCp0aGlzKTsK
ICAgICByZXR1cm4gKm1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7CiB9CiAKQEAg
LTI2ODAsNyArMjY4MCw3IEBAIEFYT2JqZWN0Q2FjaGUqIERvY3VtZW50OjpheE9iamVjdENhY2hl
KCkgY29uc3QKIAogICAgIEFTU0VSVCgmdG9wRG9jdW1lbnQgPT0gdGhpcyB8fCAhbV9heE9iamVj
dENhY2hlKTsKICAgICBpZiAoIXRvcERvY3VtZW50Lm1fYXhPYmplY3RDYWNoZSkgewotICAgICAg
ICB0b3BEb2N1bWVudC5tX2F4T2JqZWN0Q2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEFYT2JqZWN0
Q2FjaGU+KHRvcERvY3VtZW50KTsKKyAgICAgICAgdG9wRG9jdW1lbnQubV9heE9iamVjdENhY2hl
ID0gbWFrZVVuaXF1ZTxBWE9iamVjdENhY2hlPih0b3BEb2N1bWVudCk7CiAgICAgICAgIGhhc0V2
ZXJDcmVhdGVkQW5BWE9iamVjdENhY2hlID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIHRvcERv
Y3VtZW50Lm1fYXhPYmplY3RDYWNoZS5nZXQoKTsKQEAgLTMwNDQsNyArMzA0NCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnNldFBhcnNpbmcoYm9vbCBiKQogICAgIG1fYlBhcnNpbmcgPSBiOwogCiAgICAg
aWYgKG1fYlBhcnNpbmcgJiYgIW1fc2hhcmVkT2JqZWN0UG9vbCkKLSAgICAgICAgbV9zaGFyZWRP
YmplY3RQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxEb2N1bWVudFNoYXJlZE9iamVjdFBvb2w+KCk7
CisgICAgICAgIG1fc2hhcmVkT2JqZWN0UG9vbCA9IG1ha2VVbmlxdWU8RG9jdW1lbnRTaGFyZWRP
YmplY3RQb29sPigpOwogCiAgICAgaWYgKCFtX2JQYXJzaW5nICYmIHZpZXcoKSAmJiAhdmlldygp
LT5uZWVkc0xheW91dCgpKQogICAgICAgICB2aWV3KCktPmZpcmVMYXlvdXRSZWxhdGVkTWlsZXN0
b25lc0lmTmVlZGVkKCk7CkBAIC01NTc0LDcgKzU1NzQsNyBAQCBjb25zdCBTVkdEb2N1bWVudEV4
dGVuc2lvbnMqIERvY3VtZW50OjpzdmdFeHRlbnNpb25zKCkKIFNWR0RvY3VtZW50RXh0ZW5zaW9u
cyYgRG9jdW1lbnQ6OmFjY2Vzc1NWR0V4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9zdmdFeHRl
bnNpb25zKQotICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0Rv
Y3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOworICAgICAgICBtX3N2Z0V4dGVuc2lvbnMgPSBtYWtl
VW5pcXVlPFNWR0RvY3VtZW50RXh0ZW5zaW9ucz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9zdmdF
eHRlbnNpb25zOwogfQogCkBAIC01Nzc5LDcgKzU3NzksNyBAQCB2b2lkIERvY3VtZW50Ojppbml0
U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50
LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCkuCiAgICAgICAgIHNldENvb2tpZVVSTChV
UkwoeyB9LCBlbXB0eVN0cmluZygpKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luUG9saWN5
KFNlY3VyaXR5T3JpZ2luUG9saWN5OjpjcmVhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1
ZSgpKSk7Ci0gICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlz
KSk7CisgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShtYWtlVW5pcXVlPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4oVVJMIHsgeyB9LCBlbXB0eVN0cmluZygpIH0sICp0aGlzKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3OTgsNyArNTc5OCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICBpc1NlY3VyaXR5T3JpZ2luVW5pcXVlID0g
ZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkudGFpbnRpbmcoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlOwogCiAgICAgc2V0U2VjdXJpdHlP
cmlnaW5Qb2xpY3koU2VjdXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZShpc1NlY3VyaXR5T3JpZ2lu
VW5pcXVlID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3VybCkpKTsKLSAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjptYWtl
X3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7Cisg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9s
aWN5PihVUkwgeyBtX3VybCB9LCAqdGhpcykpOwogCiAgICAgU3RyaW5nIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5ID0gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkub3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3koKTsKICAgICBpZiAoIW92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5LmlzTnVsbCgpKQpAQCAtNjAzNiw3ICs2MDM2LDcgQEAgU3RyaW5nIERvY3VtZW50OjpuYW1l
Rm9yQ1NTQ2FudmFzRWxlbWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVu
dCkKIFRleHRBdXRvU2l6aW5nJiBEb2N1bWVudDo6dGV4dEF1dG9TaXppbmcoKQogewogICAgIGlm
ICghbV90ZXh0QXV0b1NpemluZykKLSAgICAgICAgbV90ZXh0QXV0b1NpemluZyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VGV4dEF1dG9TaXppbmc+KCk7CisgICAgICAgIG1fdGV4dEF1dG9TaXppbmcgPSBt
YWtlVW5pcXVlPFRleHRBdXRvU2l6aW5nPigpOwogICAgIHJldHVybiAqbV90ZXh0QXV0b1Npemlu
ZzsKIH0KICNlbmRpZiAvLyBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAtNjQwMyw3ICs2NDAz
LDcgQEAgdm9pZCBEb2N1bWVudDo6d2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCgpCiB2b2lkIERv
Y3VtZW50OjpkaWRBZGRXaGVlbEV2ZW50SGFuZGxlcihOb2RlJiBub2RlKQogewogICAgIGlmICgh
bV93aGVlbEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV93aGVlbEV2ZW50VGFyZ2V0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAgICAgIG1fd2hlZWxFdmVudFRhcmdl
dHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwogCiAgICAgbV93aGVlbEV2ZW50VGFy
Z2V0cy0+YWRkKCZub2RlKTsKIApAQCAtNjQ2Myw3ICs2NDYzLDcgQEAgdm9pZCBEb2N1bWVudDo6
ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoTm9kZSYgaGFuZGxlcikKIHsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIGlmICghbV90b3VjaEV2ZW50VGFyZ2V0cykKLSAgICAgICAgbV90b3Vj
aEV2ZW50VGFyZ2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRTZXQ+KCk7CisgICAg
ICAgIG1fdG91Y2hFdmVudFRhcmdldHMgPSBtYWtlVW5pcXVlPEV2ZW50VGFyZ2V0U2V0PigpOwog
CiAgICAgbV90b3VjaEV2ZW50VGFyZ2V0cy0+YWRkKCZoYW5kbGVyKTsKIApAQCAtODA1Miw3ICs4
MDUyLDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dDaGFubmVs
JiBjaGFubmVsLCBXVEZMb2dMZXZlbCBsZXZlbCwgVmUKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IG1lc3NhZ2VMZXZlbEZyb21XVEZMb2dMZXZlbChs
ZXZlbCk7Ci0gICAgICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
OjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2Fn
ZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKCkp
KTsKKyAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdU
Rk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUoKSkpOwogCiAgICAg
ICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogICAgIH0pOwpAQCAtODA4
Nyw3ICs4MDg3LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdAogCiBib29sIERvY3VtZW50Ojpy
ZWdpc3RlckNTU1Byb3BlcnR5KENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSYmIHByb3ApCiB7
Ci0gICAgcmV0dXJuIG1fQ1NTUmVnaXN0ZXJlZFByb3BlcnR5U2V0LmFkZChwcm9wLm5hbWUsIHN0
ZDo6bWFrZV91bmlxdWU8Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5PihXVEZNb3ZlKHByb3Ap
KSkuaXNOZXdFbnRyeTsKKyAgICByZXR1cm4gbV9DU1NSZWdpc3RlcmVkUHJvcGVydHlTZXQuYWRk
KHByb3AubmFtZSwgbWFrZVVuaXF1ZTxDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk+KFdURk1v
dmUocHJvcCkpKS5pc05ld0VudHJ5OwogfQogCiB2b2lkIERvY3VtZW50OjpkZXRhY2hGcm9tRnJh
bWUoKQpAQCAtODE4MSw3ICs4MTgxLDcgQEAgRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb24KICAgICAg
ICAgcmV0dXJuIHRvcERvY3VtZW50KCkuZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3ND
b250cm9sbGVyKCk7CiAKICAgICBpZiAoIW1fZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyKQotICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3NDb250cm9sbGVyPigqdGhpcyk7CisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fZGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyOwogfQogCkBAIC04MjEyLDcgKzgyMTIsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBSZWY8UGFpbnRXbwogQ29udGVudENoYW5nZU9ic2VydmVyJiBEb2N1bWVu
dDo6Y29udGVudENoYW5nZU9ic2VydmVyKCkKIHsKICAgICBpZiAoIW1fY29udGVudENoYW5nZU9i
c2VydmVyKQotICAgICAgICBtX2NvbnRlbnRDaGFuZ2VPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udGVudENoYW5nZU9ic2VydmVyPigqdGhpcyk7CisgICAgICAgIG1fY29udGVudENoYW5n
ZU9ic2VydmVyID0gbWFrZVVuaXF1ZTxDb250ZW50Q2hhbmdlT2JzZXJ2ZXI+KCp0aGlzKTsKICAg
ICByZXR1cm4gKm1fY29udGVudENoYW5nZU9ic2VydmVyOyAKIH0KIApAQCAtODIyMCw3ICs4MjIw
LDcgQEAgRE9NVGltZXJIb2xkaW5nVGFuayYgRG9jdW1lbnQ6OmRvbVRpbWVySG9sZGluZ1Rhbmso
KQogewogICAgIGlmIChtX2RvbVRpbWVySG9sZGluZ1RhbmspCiAgICAgICAgIHJldHVybiAqbV9k
b21UaW1lckhvbGRpbmdUYW5rOwotICAgIG1fZG9tVGltZXJIb2xkaW5nVGFuayA9IHN0ZDo6bWFr
ZV91bmlxdWU8RE9NVGltZXJIb2xkaW5nVGFuaz4oKTsKKyAgICBtX2RvbVRpbWVySG9sZGluZ1Rh
bmsgPSBtYWtlVW5pcXVlPERPTVRpbWVySG9sZGluZ1Rhbms+KCk7CiAgICAgcmV0dXJuICptX2Rv
bVRpbWVySG9sZGluZ1Rhbms7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTg1OTBjMTBl
NDgzNjc3ZGJiZDIwZjhiMjQzMDM4M2E2YTk2ODJlZC4uMTYxMmU0MjBlY2ExMWM0ZGFkMTM1Y2Q5
MTBmZTQ1NzZlZmU3MmFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEyODQsNyArMTI4NCw3
IEBAIGNsYXNzIERvY3VtZW50CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRQYXJzZXJZ
aWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsK
ICAgICB9CiAKICAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSBjb25zdCB7IHJl
dHVybiBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcAppbmRleCAwMWM3Zjk2ZTAyZTllYmQ1ODg1M2ZiNWRiMWM0Yjg4MjFl
MmY5NzI4Li4wMzcwM2I2MmJjNjUwNTU3OGIzODliOTk5MzhhNGRhYWI2ZDc2YzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtNTksNyArNTksNyBAQCBj
bGFzcyBEb2N1bWVudEV2ZW50UXVldWU6OlRpbWVyIGZpbmFsIDogcHVibGljIFN1c3BlbmRhYmxl
VGltZXIgewogCiBEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZShEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQotICAgICwgbV9wZW5kaW5n
RXZlbnRUaW1lcihzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcykpCisgICAgLCBtX3BlbmRp
bmdFdmVudFRpbWVyKG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzKSkKICAgICAsIG1faXNDbG9zZWQo
ZmFsc2UpCiB7CiAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4
IDcyOTFkNGFkZWU5ZjQxNzdmZGJmZWZlZWZkZGYyNjcwNTRhOWM0ZjAuLmU3NjQxYWY2MjE4YmYx
M2FiMGUzYzY4OTIwMjBkZTg4OWM0ZTkwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihOb2RlJiBub2RlLCBjb25zdCBEb2N1bWVu
dE1hcmtlciYgbmV3TWEKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFya2VyTGlzdD4mIGxpc3QgPSBt
X21hcmtlcnMuYWRkKCZub2RlLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBpZiAo
IWxpc3QpIHsKLSAgICAgICAgbGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8TWFya2VyTGlzdD4oKTsK
KyAgICAgICAgbGlzdCA9IG1ha2VVbmlxdWU8TWFya2VyTGlzdD4oKTsKICAgICAgICAgbGlzdC0+
YXBwZW5kKFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIobmV3TWFya2VyKSk7CiAgICAgfSBlbHNlIGlm
IChzaG91bGRJbnNlcnRBc1NlcGFyYXRlTWFya2VyKG5ld01hcmtlcikpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbWVyZ2UgZGljdGF0aW9uIG1hcmtlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4IDgxZWZiMTBkNWU3NmVkYjZmNmQzODM1MzAw
NTFkMjljMzg4ZWFmZGIuLjg1NWEyYTA2NTZmNzFiNDVlZThkNGZmZjI4NGE1MzUzNzlhMzg3OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCkBAIC00
OCw3ICs0OCw3IEBAIERvY3VtZW50U3RvcmFnZUFjY2VzcyogRG9jdW1lbnRTdG9yYWdlQWNjZXNz
Ojpmcm9tKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvKiBzdXBwbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnRTdG9yYWdlQWNjZXNzKj4oU3VwcGxlbWVudDxEb2N1bWVudD46OmZy
b20oJmRvY3VtZW50LCBzdXBwbGVtZW50TmFtZSgpKSk7CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7
Ci0gICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG9jdW1lbnRT
dG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IG1h
a2VVbmlxdWU8RG9jdW1lbnRTdG9yYWdlQWNjZXNzPihkb2N1bWVudCk7CiAgICAgICAgIHN1cHBs
ZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwogICAgICAgICBwcm92aWRlVG8oJmRvY3VtZW50
LCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CkBAIC0x
ODMsNyArMTgzLDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgYm9vbCBzaG91
bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlID0gd2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6WWVzIHx8IHByb21wdFdhc1Nob3duID09IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bjo6Tm87CiAKICAgICAgICAgaWYgKHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKLSAgICAg
ICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVuY2UgPSBtYWtlV2Vha1B0cigq
ZG9jdW1lbnQpXSAoKSB7CisgICAgICAgICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1
ZXVlKCkuYXBwZW5kKG1ha2VVbmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNl
ID0gbWFrZVdlYWtQdHIoKmRvY3VtZW50KV0gKCkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC0+ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CiAgICAgICAgICAg
ICB9KSk7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7Ci0gICAgICAg
ICAgICBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8Vm9pZE1pY3JvdGFzaz4oW2RvY3VtZW50UmVmZXJlbmNlID0gV1RGTW92ZShkb2N1bWVu
dFJlZmVyZW5jZSldICgpIHsKKyAgICAgICAgICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFk
UXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxWb2lkTWljcm90YXNrPihbZG9jdW1lbnRSZWZlcmVu
Y2UgPSBXVEZNb3ZlKGRvY3VtZW50UmVmZXJlbmNlKV0gKCkgewogICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpKQogICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC0+Y29uc3VtZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOwogICAg
ICAgICAgICAgfSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
CiAKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3JhcnlUaW1lVXNlckdl
c3R1cmUoKQogewotICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50
KTsKKyAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gbWFrZVVuaXF1ZTxVc2VyR2VzdHVyZUlu
ZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAxOTNlOGI4NDY3MGE4MTdhNTY3YzBhMmVjZTg2NDg1
ZmM3MjkwNjdkLi5jY2MyNWFkZDc0MTViZGU2YmQ3MjBjNzQ0MTViMjYxZmVmNjY5ZDU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00ODksNyArNDg5LDcgQEAgTmFtZWROb2RlTWFwJiBFbGVt
ZW50OjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVN
YXAgPSByYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKSkKICAgICAgICAgcmV0dXJuICphdHRyaWJ1dGVN
YXA7CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAoc3RkOjptYWtlX3VuaXF1ZTxOYW1l
ZE5vZGVNYXA+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSkpOworICAgIHJhcmVEYXRhLnNl
dEF0dHJpYnV0ZU1hcChtYWtlVW5pcXVlPE5hbWVkTm9kZU1hcD4oY29uc3RfY2FzdDxFbGVtZW50
Jj4oKnRoaXMpKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5hdHRyaWJ1dGVNYXAoKTsKIH0KIApA
QCAtMjMxOSw3ICsyMzE5LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRJc0RlZmluZWRDdXN0b21FbGVt
ZW50KEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVyZmEKICAgICBzZXRGbGFn
KElzQ3VzdG9tRWxlbWVudCk7CiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0
YSgpOwogICAgIGlmICghZGF0YS5jdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZSgpKQotICAgICAg
ICBkYXRhLnNldEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKHN0ZDo6bWFrZV91bmlxdWU8Q3Vz
dG9tRWxlbWVudFJlYWN0aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKKyAgICAgICAgZGF0
YS5zZXRDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZShtYWtlVW5pcXVlPEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblF1ZXVlPihlbGVtZW50SW50ZXJmYWNlKSk7CiAgICAgaW52YWxpZGF0ZVN0eWxlRm9y
U3VidHJlZSgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlQ3VzdG9t
RWxlbWVudFN0YXRlKCp0aGlzKTsKIH0KQEAgLTIzNTYsNyArMjM1Niw3IEBAIHZvaWQgRWxlbWVu
dDo6ZW5xdWV1ZVRvVXBncmFkZShKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRl
cmZhY2UpCiAgICAgYXV0byYgZGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGJv
b2wgYWxyZWFkeVNjaGVkdWxlZFRvVXBncmFkZSA9IGRhdGEuY3VzdG9tRWxlbWVudFJlYWN0aW9u
UXVldWUoKTsKICAgICBpZiAoIWFscmVhZHlTY2hlZHVsZWRUb1VwZ3JhZGUpCi0gICAgICAgIGRh
dGEuc2V0Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21F
bGVtZW50UmVhY3Rpb25RdWV1ZT4oZWxlbWVudEludGVyZmFjZSkpOworICAgICAgICBkYXRhLnNl
dEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlKG1ha2VVbmlxdWU8Q3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWU+KGVsZW1lbnRJbnRlcmZhY2UpKTsKICAgICBkYXRhLmN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlKCktPmVucXVldWVFbGVtZW50VXBncmFkZSgqdGhpcywgYWxyZWFkeVNjaGVkdWxl
ZFRvVXBncmFkZSk7CiB9CiAKQEAgLTMzOTEsNyArMzM5MSw3IEBAIERPTVRva2VuTGlzdCYgRWxl
bWVudDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEmIGRhdGEgPSBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEuY2xhc3NMaXN0KCkpCi0gICAgICAgIGRh
dGEuc2V0Q2xhc3NMaXN0KHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRN
TE5hbWVzOjpjbGFzc0F0dHIpKTsKKyAgICAgICAgZGF0YS5zZXRDbGFzc0xpc3QobWFrZVVuaXF1
ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwogICAgIHJldHVy
biAqZGF0YS5jbGFzc0xpc3QoKTsKIH0KIApAQCAtMzM5OSw3ICszMzk5LDcgQEAgRGF0YXNldERP
TVN0cmluZ01hcCYgRWxlbWVudDo6ZGF0YXNldCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBk
YXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmRhdGFzZXQoKSkK
LSAgICAgICAgZGF0YS5zZXREYXRhc2V0KHN0ZDo6bWFrZV91bmlxdWU8RGF0YXNldERPTVN0cmlu
Z01hcD4oKnRoaXMpKTsKKyAgICAgICAgZGF0YS5zZXREYXRhc2V0KG1ha2VVbmlxdWU8RGF0YXNl
dERPTVN0cmluZ01hcD4oKnRoaXMpKTsKICAgICByZXR1cm4gKmRhdGEuZGF0YXNldCgpOwogfQog
CkBAIC0zNTQzLDcgKzM1NDMsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEmIEVsZW1lbnQ6
OmVuc3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpCiB7CiAgICAgYXV0byYgcmFyZURhdGEg
PSBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKICAgICBpZiAoIXJhcmVEYXRhLmludGVyc2VjdGlv
bk9ic2VydmVyRGF0YSgpKQotICAgICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZl
ckRhdGEoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOworICAg
ICAgICByYXJlRGF0YS5zZXRJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEobWFrZVVuaXF1ZTxJbnRl
cnNlY3Rpb25PYnNlcnZlckRhdGE+KCkpOwogICAgIHJldHVybiAqcmFyZURhdGEuaW50ZXJzZWN0
aW9uT2JzZXJ2ZXJEYXRhKCk7CiB9CiAKQEAgLTM1NjksNyArMzU2OSw3IEBAIFJlc2l6ZU9ic2Vy
dmVyRGF0YSYgRWxlbWVudDo6ZW5zdXJlUmVzaXplT2JzZXJ2ZXJEYXRhKCkKIHsKICAgICBhdXRv
JiByYXJlRGF0YSA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghcmFyZURhdGEu
cmVzaXplT2JzZXJ2ZXJEYXRhKCkpCi0gICAgICAgIHJhcmVEYXRhLnNldFJlc2l6ZU9ic2VydmVy
RGF0YShzdGQ6Om1ha2VfdW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0YT4oKSk7CisgICAgICAgIHJh
cmVEYXRhLnNldFJlc2l6ZU9ic2VydmVyRGF0YShtYWtlVW5pcXVlPFJlc2l6ZU9ic2VydmVyRGF0
YT4oKSk7CiAgICAgcmV0dXJuICpyYXJlRGF0YS5yZXNpemVPYnNlcnZlckRhdGEoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IGQ5ZTY2MzQ5Y2JkYmEw
YmI4MWQyYWNmYmZkYzBkNDMzNzhjNjU4ZGIuLjBiMDlkMDgyYzM2ZWRkZDg0YjljZGU5ODgyNTI3
MmRiNWY5NmU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpcwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBhdXRvIGxpc3RlbmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8RXZl
bnRMaXN0ZW5lclZlY3Rvcj4oKTsKKyAgICBhdXRvIGxpc3RlbmVycyA9IG1ha2VVbmlxdWU8RXZl
bnRMaXN0ZW5lclZlY3Rvcj4oKTsKICAgICBsaXN0ZW5lcnMtPnVuY2hlY2tlZEFwcGVuZChSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUobGlzdGVuZXIpLCBvcHRpb25zKSk7
CiAgICAgbV9lbnRyaWVzLmFwcGVuZCh7IGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lcnMpIH0p
OwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggOWU5MzA4YmI1
ZGExNDYxZTM1OGUzY2M2MmZlYWZkY2ZjZDBjYzdhZC4uNWI2YWI2ODc1NWI2MWJmZTJkNGE2OGJj
YmU3NTI0ZmQwZGRhYmI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0zMzksMTMgKzMz
OSwxMyBAQCBzdHJ1Y3QgRXZlbnROYW1lcyB7CiAgICAgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNI
KERPTV9FVkVOVF9OQU1FU19ERUNMQVJFKQogI3VuZGVmIERPTV9FVkVOVF9OQU1FU19ERUNMQVJF
CiAKLSAgICAvLyBGSVhNRTogVGhlIGZyaWVuZCBkZWNsYXJhdGlvbiB0byBzdGQ6Om1ha2VfdW5p
cXVlIGJlbG93IGRvZXMgbm90IHdvcmsgaW4gd2luZG93cyBwb3J0LgorICAgIC8vIEZJWE1FOiBU
aGUgZnJpZW5kIGRlY2xhcmF0aW9uIHRvIG1ha2VVbmlxdWUgYmVsb3cgZG9lcyBub3Qgd29yayBp
biB3aW5kb3dzIHBvcnQuCiAgICAgLy8KICAgICAvLyB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcy4u
LiBBcmdzPgotICAgIC8vIGZyaWVuZCB0eXBlbmFtZSBzdGQ6Ol9VbmlxdWVfaWY8VD46Ol9TaW5n
bGVfb2JqZWN0IHN0ZDo6bWFrZV91bmlxdWUoQXJncyYmLi4uKTsKKyAgICAvLyBmcmllbmQgdHlw
ZW5hbWUgc3RkOjpfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdCBtYWtlVW5pcXVlKEFyZ3Mm
Ji4uLik7CiAgICAgLy8KICAgICAvLyBUaGlzIGNyZWF0ZSBmdW5jdGlvbiBzaG91bGQgYmUgZGVs
ZXRlZCBsYXRlciBhbmQgaXMgb25seSBmb3Iga2VlcGluZyBFdmVudE5hbWVzIGFzIHByaXZhdGUu
Ci0gICAgLy8gc3RkOjptYWtlX3VuaXF1ZSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorICAgIC8v
IG1ha2VVbmlxdWUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KICAgICAvLwogICAgIHRlbXBsYXRl
PGNsYXNzLi4uIEFyZ3M+CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVzPiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCmluZGV4IGRiMTQy
OGQxZDQyNjA1OGNiNjViMWViNmZhY2EyM2RiOTg5MjgyYmQuLmEwYWQwYWQ3YzQ4MjY5MmU2Mzhl
NTcyODBmMWEyOTI0N2FjZWMxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCkBAIC0xMTUs
MTcgKzExNSwxNyBAQCB2b2lkIEV2ZW50UGF0aDo6YnVpbGRQYXRoKE5vZGUmIG9yaWdpbmFsVGFy
Z2V0LCBFdmVudCYgZXZlbnQpCiB7CiAgICAgdXNpbmcgTWFrZUV2ZW50Q29udGV4dCA9IHN0ZDo6
dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+ICgqKShOb2RlJiwgRXZlbnRUYXJnZXQqLCBFdmVudFRh
cmdldCosIGludCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgTWFrZUV2ZW50Q29udGV4dCBtYWtl
RXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5vZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0
LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgY2xvc2VkU2hhZG93RGVwdGgpIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pigmbm9kZSwgY3VycmVudFRhcmdl
dCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEV2ZW50Q29udGV4dD4oJm5vZGUsIGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93
RGVwdGgpOwogICAgIH07CiAgICAgaWYgKGlzPE1vdXNlRXZlbnQ+KGV2ZW50KSB8fCBldmVudC5p
c0ZvY3VzRXZlbnQoKSkgewogICAgICAgICBtYWtlRXZlbnRDb250ZXh0ID0gW10gKE5vZGUmIG5v
ZGUsIEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQg
Y2xvc2VkU2hhZG93RGVwdGgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxFdmVudENvbnRleHQ+IHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4
dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ+KG5vZGUs
IGN1cnJlbnRUYXJnZXQsIHRhcmdldCwgY2xvc2VkU2hhZG93RGVwdGgpOwogICAgICAgICB9Owog
ICAgIH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChpczxUb3VjaEV2ZW50Pihl
dmVudCkpIHsKICAgICAgICAgbWFrZUV2ZW50Q29udGV4dCA9IFtdIChOb2RlJiBub2RlLCBFdmVu
dFRhcmdldCogY3VycmVudFRhcmdldCwgRXZlbnRUYXJnZXQqIHRhcmdldCwgaW50IGNsb3NlZFNo
YWRvd0RlcHRoKSAtPiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRDb250ZXh0PiB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVu
dFRhcmdldCwgdGFyZ2V0LCBjbG9zZWRTaGFkb3dEZXB0aCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0
LCBjbG9zZWRTaGFkb3dEZXB0aCk7CiAgICAgICAgIH07CiAgICAgfQogI2VuZGlmCkBAIC0xNDks
NyArMTQ5LDcgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdl
dCwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pigqbm9kZSkuZG9tV2luZG93KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNsb3NlZFNo
YWRvd0RlcHRoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZCht
YWtlVW5pcXVlPFdpbmRvd0V2ZW50Q29udGV4dD4oKm5vZGUsICp3aW5kb3csICp0YXJnZXQsIGNs
b3NlZFNoYWRvd0RlcHRoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEV2ZW50UGF0
aDo6RXZlbnRQYXRoKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIHRhcmdldHMpCiAgICAgICAgIEFT
U0VSVCh0YXJnZXQpOwogICAgICAgICBOb2RlKiBvcmlnaW4gPSAqdGFyZ2V0cy5iZWdpbigpOwog
ICAgICAgICBpZiAoIXRhcmdldC0+aXNDbG9zZWRTaGFkb3dIaWRkZW4oKm9yaWdpbikpCi0gICAg
ICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJn
ZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CisgICAgICAgICAgICBtX3BhdGguYXBwZW5kKG1ha2VV
bmlxdWU8RXZlbnRDb250ZXh0Pih0YXJnZXQsIHRhcmdldCwgb3JpZ2luLCAwKSk7CiAgICAgfQog
fQogCkBAIC0zMTcsNyArMzE3LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoY29uc3QgVmVjdG9y
PEV2ZW50VGFyZ2V0Kj4mIHRhcmdldHMpCiAgICAgZm9yIChhdXRvKiB0YXJnZXQgOiB0YXJnZXRz
KSB7CiAgICAgICAgIEFTU0VSVCh0YXJnZXQpOwogICAgICAgICBBU1NFUlQoIWlzPE5vZGU+KHRh
cmdldCkpOwotICAgICAgICBtX3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRDb250
ZXh0PihudWxscHRyLCB0YXJnZXQsICp0YXJnZXRzLmJlZ2luKCksIDApKTsKKyAgICAgICAgbV9w
YXRoLmFwcGVuZChtYWtlVW5pcXVlPEV2ZW50Q29udGV4dD4obnVsbHB0ciwgdGFyZ2V0LCAqdGFy
Z2V0cy5iZWdpbigpLCAwKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9J
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwCmluZGV4IGIzYTA2ZTQ3YjA3MDBmN2M0N2QzZDlh
ZWYzM2Y0NDM3MjRlMGM1NWUuLjk0MGVmY2FlZDgzMDkxYzI1ODNmYTllMzM2ZWYzZDc4YzU0YWEz
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnku
Y3BwCkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5OjphZGRP
YnNlcnZlcihjb25zdCBBdG9tU3RyaW5nJiBpZCwgSWRUYXJnZXRPYnNlcnZlCiAgICAgCiAgICAg
SWRUb09ic2VydmVyU2V0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9yZWdpc3RyeS5hZGQoaWQu
aW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE9ic2VydmVyU2V0PigpOwor
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPYnNlcnZlclNldD4o
KTsKIAogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZChvYnNlcnZlcik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXggN2U3YTM0Nzk3Yjg2MjlmNjJmN2Y3ODZh
YjE0YzVjNmY1YmQ5MGIxNC4uY2U4NTZiYjU1ZDViZDk5ZTY2ZjUwY2I1NWIwYmU0NzkwZTA5ODQ1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcApAQCAtOTYsNyArOTYsNyBAQCBp
bmxpbmUgS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpID0gZGVmYXVsdDsKIGlubGluZSBL
ZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYg
a2V5LCBSZWZQdHI8V2luZG93UHJveHk+JiYgdmlldykKICAgICA6IFVJRXZlbnRXaXRoS2V5U3Rh
dGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksIENhbkJ1YmJsZTo6
WWVzLCBJc0NhbmNlbGFibGU6OlllcywgSXNDb21wb3NlZDo6WWVzLAogICAgICAgICBrZXkudGlt
ZXN0YW1wKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCksIHZpZXcuY29weVJlZigpLCAwLCBr
ZXkubW9kaWZpZXJzKCksIElzVHJ1c3RlZDo6WWVzKQotICAgICwgbV91bmRlcmx5aW5nUGxhdGZv
cm1FdmVudChzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5KSkKKyAg
ICAsIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQobWFrZVVuaXF1ZTxQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ+KGtleSkpCiAjaWYgRU5BQkxFKEtFWUJPQVJEX0tFWV9BVFRSSUJVVEUpCiAgICAgLCBt
X2tleShrZXkua2V5KCkpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVy
LmNwcAppbmRleCA2NmM1ZWEwYjlkNjM0NTQ0MzgxMmZiMTMxZmZlNWRiZTZjYTFkZGYzLi4xOTNm
Mjc4MDVhNWFlZDRiNjA2ZTljZWVhM2E5YTM1ZDhiMWU5OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIHZvaWQgcXVl
dWVNdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2soKQogICAgIGlmIChtdXRhdGlvbk9i
c2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1ZWRGbGFnKQogICAgICAgICByZXR1cm47CiAgICAg
bXV0YXRpb25PYnNlcnZlckNvbXBvdW5kTWljcm90YXNrUXVldWVkRmxhZyA9IHRydWU7Ci0gICAg
TWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PE11dGF0aW9uT2JzZXJ2ZXJNaWNyb3Rhc2s+KCkpOworICAgIE1pY3JvdGFza1F1ZXVlOjptYWlu
VGhyZWFkUXVldWUoKS5hcHBlbmQobWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVyTWljcm90YXNr
PigpKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQo
UmVmPE11dGF0aW9uUmVjb3JkPiYmIG11dGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5jcHAKaW5kZXggNTJkYTYxZjc0ZjFm
NTdhZjY4NTQ5ZjM2NjU2MzA2ZDhkMTcwM2M3OS4uMDI3NmU0MmJlNWJkODNmZjQyYTc5MzU2YmRl
OWNlNzM2MDk5Y2JkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXJJbnRlcmVzdEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlckludGVyZXN0R3JvdXAuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXA6OmNyCiAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA+KFdURk1vdmUob2JzZXJ2ZXJzKSwgb2xkVmFsdWVGbGFnKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4oV1RGTW92ZShvYnNl
cnZlcnMpLCBvbGRWYWx1ZUZsYWcpOwogfQogCiBib29sIE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwOjppc09sZFZhbHVlUmVxdWVzdGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBjOGZjMDEwNjcy
NDVlNGUzNjE5N2EyZjZkNGQxZTQ1NzU0N2JiYzhhLi5lNWM2ZGQxNmE0ZGI2MDliYTUyNzNhNDdh
ZjdmYTY4MjY2MmEyYzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbjo6b2JzZXJ2ZWRTdWJ0cmVlTm9kZVdpbGxEZXRhY2goTm9kZSYg
bm9kZSkKICAgICBtX29ic2VydmVyLT5zZXRIYXNUcmFuc2llbnRSZWdpc3RyYXRpb24oKTsKIAog
ICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcykgewotICAgICAgICBtX3RyYW5z
aWVudFJlZ2lzdHJhdGlvbk5vZGVzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PEdDUmVhY2hh
YmxlUmVmPE5vZGU+Pj4oKTsKKyAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcyA9
IG1ha2VVbmlxdWU8SGFzaFNldDxHQ1JlYWNoYWJsZVJlZjxOb2RlPj4+KCk7CiAKICAgICAgICAg
QVNTRVJUKCFtX25vZGVLZXB0QWxpdmUpOwogICAgICAgICBtX25vZGVLZXB0QWxpdmUgPSAmbV9u
b2RlOyAvLyBCYWxhbmNlZCBpbiB0YWtlVHJhbnNpZW50UmVnaXN0cmF0aW9ucy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAppbmRleCA3MWMwNTE0YjBjNTcyMjA1YTc3YzQ5OTAzYmY2OWU4OGE0NWQwMzg3Li4wYWNj
ZjJlNDM0ODZhYWYzMjM4NDU5NTIxMzMzNTdhZTA5MzQxZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC0zOTUsOSArMzk1LDkgQEAgdm9pZCBOb2RlOjp3aWxsQmVEZWxldGVkRnJvbShEb2N1bWVudCYg
ZG9jdW1lbnQpCiB2b2lkIE5vZGU6Om1hdGVyaWFsaXplUmFyZURhdGEoKQogewogICAgIGlmIChp
czxFbGVtZW50PigqdGhpcykpCi0gICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVsZW1lbnRSYXJlRGF0YT4oKTsKKyAgICAgICAgbV9yYXJlRGF0YSA9IG1ha2VVbmlxdWU8RWxl
bWVudFJhcmVEYXRhPigpOwogICAgIGVsc2UKLSAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8Tm9kZVJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1
ZTxOb2RlUmFyZURhdGE+KCk7CiB9CiAKIHZvaWQgTm9kZTo6Y2xlYXJSYXJlRGF0YSgpCkBAIC0y
MjAyLDcgKzIyMDIsNyBAQCBFdmVudFRhcmdldERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpCiAKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNfZXZlbnRUYXJnZXREYXRhTWFw
TG9jayk7CiAgICAgc2V0SGFzRXZlbnRUYXJnZXREYXRhKHRydWUpOwotICAgIHJldHVybiAqZXZl
bnRUYXJnZXREYXRhTWFwKCkuYWRkKHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRUYXJnZXRE
YXRhPigpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAo
KS5hZGQodGhpcywgbWFrZVVuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJhdG9yLT52YWx1
ZTsKIH0KIAogdm9pZCBOb2RlOjpjbGVhckV2ZW50VGFyZ2V0RGF0YSgpCkBAIC0yMjc0LDcgKzIy
NzQsNyBAQCB2b2lkIE5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2Vy
dmVyJiBvYnNlcnZlciwgTXV0YXRpb25PYnNlcnZlcgogICAgIH0KIAogICAgIGlmICghcmVnaXN0
cmF0aW9uKSB7Ci0gICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmli
dXRlRmlsdGVyKSk7CisgICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChtYWtlVW5pcXVlPE11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyYXRpb24+KG9ic2VydmVyLCAqdGhpcywgb3B0aW9ucywgYXR0cmlidXRl
RmlsdGVyKSk7CiAgICAgICAgIHJlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJ5Lmxhc3QoKS5nZXQoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCAxOWIyMmM5NzNhNDQyOWRk
ODhkZTg4MjRkYjc0MzRiMjIyYjMzOWFjLi44YTYxMTQxMDcxZGI0ZDZjZDIzMDVkNmU2YjIyZjQ0
ZTc4YjBjNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0yNzgsNyArMjc4LDcg
QEAgY2xhc3MgTm9kZVJhcmVEYXRhIHsKICAgICBOb2RlTGlzdHNOb2RlRGF0YSYgZW5zdXJlTm9k
ZUxpc3RzKCkKICAgICB7CiAgICAgICAgIGlmICghbV9ub2RlTGlzdHMpCi0gICAgICAgICAgICBt
X25vZGVMaXN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CisgICAg
ICAgICAgICBtX25vZGVMaXN0cyA9IG1ha2VVbmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CiAg
ICAgICAgIHJldHVybiAqbV9ub2RlTGlzdHM7CiAgICAgfQogCkBAIC0yODYsNyArMjg2LDcgQEAg
Y2xhc3MgTm9kZVJhcmVEYXRhIHsKICAgICBOb2RlTXV0YXRpb25PYnNlcnZlckRhdGEmIGVuc3Vy
ZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkKICAgICB7CiAgICAgICAgIGlmICghbV9tdXRhdGlvbk9i
c2VydmVyRGF0YSkKLSAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKKyAgICAgICAgICAgIG1fbXV0
YXRpb25PYnNlcnZlckRhdGEgPSBtYWtlVW5pcXVlPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4o
KTsKICAgICAgICAgcmV0dXJuICptX211dGF0aW9uT2JzZXJ2ZXJEYXRhOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKaW5kZXggNTMzN2M1OGNkZmJiYWFi
MjMwMTg0NTAyNjM4ZGM2MzQ0OWY3OTZhYy4uNjFiYmM0ZWRmZjkzNGE2NDQ2ZWEyNTY3NTU2NjNm
ZDU0Njg3N2UzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3Jv
dXBzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCkBA
IC0xOTgsMTEgKzE5OCwxMSBAQCB2b2lkIFJhZGlvQnV0dG9uR3JvdXBzOjphZGRCdXR0b24oSFRN
TElucHV0RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25h
bWVUb0dyb3VwTWFwKQotICAgICAgICBtX25hbWVUb0dyb3VwTWFwID0gc3RkOjptYWtlX3VuaXF1
ZTxOYW1lVG9Hcm91cE1hcD4oKTsKKyAgICAgICAgbV9uYW1lVG9Hcm91cE1hcCA9IG1ha2VVbmlx
dWU8TmFtZVRvR3JvdXBNYXA+KCk7CiAKICAgICBhdXRvJiBncm91cCA9IG1fbmFtZVRvR3JvdXBN
YXAtPmFkZChlbGVtZW50Lm5hbWUoKS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIWdyb3VwKQotICAgICAgICBncm91cCA9IHN0ZDo6bWFrZV91bmlxdWU8UmFkaW9C
dXR0b25Hcm91cD4oKTsKKyAgICAgICAgZ3JvdXAgPSBtYWtlVW5pcXVlPFJhZGlvQnV0dG9uR3Jv
dXA+KCk7CiAgICAgZ3JvdXAtPmFkZChlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGM4MjVhN2VkZWU2YmIyZDVmNTE2
YzZkM2U2ZWE3NDEwZTZlY2M3NTYuLjA0YWZlOWQ3OGFkMGJkMTAyOGE2NzAzYzBmYzNkNGY2NTNi
MTNkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKQEAgLTM3OSw4ICszNzksOCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9y
dEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbgogewogICAgIGlm
IChtX2luRGlzcGF0Y2hFcnJvckV2ZW50KSB7CiAgICAgICAgIGlmICghbV9wZW5kaW5nRXhjZXB0
aW9ucykKLSAgICAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOwotICAgICAgICBt
X3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nRXhjZXB0
aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBX
VEZNb3ZlKGNhbGxTdGFjaykpKTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBt
YWtlVW5pcXVlPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0V4Y2VwdGlvbj4+PigpOwor
ICAgICAgICBtX3BlbmRpbmdFeGNlcHRpb25zLT5hcHBlbmQobWFrZVVuaXF1ZTxQZW5kaW5nRXhj
ZXB0aW9uPihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJM
LCBXVEZNb3ZlKGNhbGxTdGFjaykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE0
LDkgKzQxNCw5IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0VW5oYW5kbGVk
UHJvbWlzZVJlamVjdGlvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhCiAgICAgU3RyaW5nIGVycm9yTWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjogIiwgcmVzdWx0
TWVzc2FnZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
IG1lc3NhZ2U7CiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY2FsbFN0
YWNrLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjYWxsU3RhY2sucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgZWxzZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6
OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7
CiAgICAgYWRkQ29uc29sZU1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKQEAgLTUwOSw3
ICs1MDksNyBAQCBSZWplY3RlZFByb21pc2VUcmFja2VyJiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjplbnN1cmVSZWplY3RlZFByb21pc2VUcmFja2VyU2xvdwogICAgIC8vIFdoZW4gaW5pdGlhbGl6
aW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHZtKCkgaXMgbm90IHJlYWR5LgogCiAgICAgQVNT
RVJUKCFtX3JlamVjdGVkUHJvbWlzZVRyYWNrZXIpOwotICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJh
Y2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVqZWN0ZWRQcm9taXNlVHJhY2tlcj4oKnRoaXMsIHZt
KCkpOworICAgIG1fcmVqZWN0ZWRQcm9taXNlVHJhY2tlciA9IG1ha2VVbmlxdWU8UmVqZWN0ZWRQ
cm9taXNlVHJhY2tlcj4oKnRoaXMsIHZtKCkpOwogICAgIHJldHVybiAqbV9yZWplY3RlZFByb21p
c2VUcmFja2VyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5k
ZXggNTVkYzJjODdhNGFjMjAyZDcxYWRkYTY2ZDU5NmI1ZmVhMGJjODg1Ni4uMjEwOWNlNGEyMjhj
M2U3YmE4N2E0YmE1MmIyZGIyODIzNjA4NzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1
ZXJ5LmNwcApAQCAtNjMzLDcgKzYzMyw3IEBAIEV4Y2VwdGlvbk9yPFNlbGVjdG9yUXVlcnkmPiBT
ZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgRG9jCiAgICAg
aWYgKG1fZW50cmllcy5zaXplKCkgPT0gbWF4aW11bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUpCiAg
ICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRyaWVzLnJhbmRvbSgpKTsKIAotICAgIHJldHVy
biAqbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIHN0ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVy
eT4oV1RGTW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAq
bV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIG1ha2VVbmlxdWU8U2VsZWN0b3JRdWVyeT4oV1RGTW92
ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKaW5kZXggNjk2M2I2ODM3OWQ4OGYyN2E4NGUyZjFkYTY1MTUzODE4MDViMjkz
Yy4uNjc4NmMwZDIxZTFiMmMyYTU3ODUxYmQwODUxNjRjMWExZTkyYzk5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcApAQCAtNTgsNyArNTgsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290
KERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93Um9vdE1vZGUgdHlwZSkKICAgICA6IERvY3VtZW50
RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUoKnRo
aXMsIGRvY3VtZW50KQogICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX3N0eWxlU2NvcGUoc3Rk
OjptYWtlX3VuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKKyAgICAsIG1fc3R5bGVTY29wZSht
YWtlVW5pcXVlPFN0eWxlOjpTY29wZT4oKnRoaXMpKQogewogfQogCkBAIC02Nyw3ICs2Nyw3IEBA
IFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8U2xvdEFzc2lnbm1lbnQ+JiYgc2xvCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50
LCBDcmVhdGVTaGFkb3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAg
ICAsIG1fdHlwZShTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQotICAgICwgbV9zdHlsZVNjb3Bl
KHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigqdGhpcykpCisgICAgLCBtX3N0eWxlU2Nv
cGUobWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlzKSkKICAgICAsIG1fc2xvdEFzc2lnbm1l
bnQoV1RGTW92ZShzbG90QXNzaWdubWVudCkpCiB7CiB9CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9p
ZCBTaGFkb3dSb290Ojptb3ZlU2hhZG93Um9vdFRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG5ld0Rv
Y3VtZW50KQogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXBh
cmVudFRyZWVTY29wZSgpIHx8ICZwYXJlbnRUcmVlU2NvcGUoKS0+ZG9jdW1lbnRTY29wZSgpID09
ICZuZXdEb2N1bWVudCk7CiAKICAgICAvLyBTdHlsZSBzY29wZXMgYXJlIGRvY3VtZW50IHNwZWNp
ZmljLgotICAgIG1fc3R5bGVTY29wZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3R5bGU6OlNjb3BlPigq
dGhpcyk7CisgICAgbV9zdHlsZVNjb3BlID0gbWFrZVVuaXF1ZTxTdHlsZTo6U2NvcGU+KCp0aGlz
KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZtX3N0eWxl
U2NvcGUtPmRvY3VtZW50KCkgPT0gJm5ld0RvY3VtZW50KTsKIH0KIApAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgU2hhZG93Um9vdDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmlu
ZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzCiB7CiAgICAgQVNTRVJUKCZzbG90LnJvb3ROb2Rl
KCkgPT0gdGhpcyk7CiAgICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50KQotICAgICAgICBtX3Nsb3RB
c3NpZ25tZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTbG90QXNzaWdubWVudD4oKTsKKyAgICAgICAg
bV9zbG90QXNzaWdubWVudCA9IG1ha2VVbmlxdWU8U2xvdEFzc2lnbm1lbnQ+KCk7CiAKICAgICBy
ZXR1cm4gbV9zbG90QXNzaWdubWVudC0+YWRkU2xvdEVsZW1lbnRCeU5hbWUobmFtZSwgc2xvdCwg
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKaW5kZXggYTQxOWRk
YTUyOGFjY2JkYTZkZTlkZGYxYTU0ODY0Y2ZkZjkxNjBlZi4uNDVjMDhlYTM2YWZlMTM5N2JlMGVj
YmZiMjllMjI4ZWNkMGM5OTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RB
c3NpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3Bw
CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRC
eU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW4KICAgICAgICAgLy8g
dG8gYXZvaWQgYWx3YXlzIGhhdmluZyBhIHZlY3RvciBvZiBhbGwgY2hpbGQgbm9kZXMgb2YgYSBz
aGFkb3cgaG9zdC4KICAgICAgICAgaWYgKHNsb3ROYW1lID09IGRlZmF1bHRTbG90TmFtZSgpKQog
ICAgICAgICAgICAgbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNsb3Q+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNsb3Q+KCk7CiAgICAgfSk7CiAgICAgYXV0byYgc2xvdCA9ICphZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlOwogICAgIGJvb2wgbmVlZHNTbG90Y2hhbmdlRXZlbnQgPSBzaGFkb3dSb290LnNob3Vs
ZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNBc3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsIHNs
b3QpOwpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFzc2lnblRvU2xv
dChOb2RlJiBjaGlsZCwgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWUpCiAgICAgfQogCiAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3Nsb3RzLmVuc3VyZShzbG90TmFtZSwgW10gewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTbG90PigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTbG90PigpOwogICAgIH0pOwogICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFzc2ln
bmVkTm9kZXMuYXBwZW5kKCZjaGlsZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4
IDJmMjg3MGQxNjY5ZDQ0YmM2MTg0YTcyZWM2M2ViMzIzZjUyN2QzOWYuLjUzMWFjZGY0ZGQ2NTY4
ZTBmNDYyMWViNTBkODlkZWU0NjdkNTVhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBA
IC02NCw3ICs2NCw3IEBAIFRyZWVTY29wZTo6VHJlZVNjb3BlKFNoYWRvd1Jvb3QmIHNoYWRvd1Jv
b3QsIERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fcm9vdE5vZGUoc2hhZG93Um9vdCkKICAg
ICAsIG1fZG9jdW1lbnRTY29wZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKCZk
b2N1bWVudCkKLSAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6bWFrZV91bmlx
dWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkpCiB7CiAgICAg
c2hhZG93Um9vdC5zZXRUcmVlU2NvcGUoKnRoaXMpOwogfQpAQCAtNzMsNyArNzMsNyBAQCBUcmVl
U2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX3Jvb3ROb2RlKGRv
Y3VtZW50KQogICAgICwgbV9kb2N1bWVudFNjb3BlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRU
cmVlU2NvcGUobnVsbHB0cikKLSAgICAsIG1faWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KHN0ZDo6
bWFrZV91bmlxdWU8SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5PigpKQorICAgICwgbV9pZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkobWFrZVVuaXF1ZTxJZFRhcmdldE9ic2VydmVyUmVnaXN0cnk+KCkp
CiB7CiAgICAgZG9jdW1lbnQuc2V0VHJlZVNjb3BlKCp0aGlzKTsKIH0KQEAgLTE0MSw3ICsxNDEs
NyBAQCBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBUcmVlU2NvcGU6OmdldEFsbEVsZW1lbnRzQnlJ
ZChjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50SQogdm9pZCBUcmVlU2NvcGU6OmFkZEVsZW1lbnRC
eUlkKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBlbGVtZW50SWQsIEVsZW1lbnQmIGVsZW1lbnQsIGJv
b2wgbm90aWZ5T2JzZXJ2ZXJzKQogewogICAgIGlmICghbV9lbGVtZW50c0J5SWQpCi0gICAgICAg
IG1fZWxlbWVudHNCeUlkID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVkTWFwPigp
OworICAgICAgICBtX2VsZW1lbnRzQnlJZCA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1h
cD4oKTsKICAgICBtX2VsZW1lbnRzQnlJZC0+YWRkKGVsZW1lbnRJZCwgZWxlbWVudCwgKnRoaXMp
OwogICAgIGlmIChub3RpZnlPYnNlcnZlcnMpCiAgICAgICAgIG1faWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5LT5ub3RpZnlPYnNlcnZlcnMoZWxlbWVudElkKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBF
bGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSkgY29uc3QKIHZvaWQgVHJlZVNjb3BlOjphZGRFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJp
bmdJbXBsJiBuYW1lLCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghbV9lbGVtZW50c0J5
TmFtZSkKLSAgICAgICAgbV9lbGVtZW50c0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNj
b3BlT3JkZXJlZE1hcD4oKTsKKyAgICAgICAgbV9lbGVtZW50c0J5TmFtZSA9IG1ha2VVbmlxdWU8
VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKICAgICBtX2VsZW1lbnRzQnlOYW1lLT5hZGQobmFtZSwg
ZWxlbWVudCwgKnRoaXMpOwogfQogCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBUcmVlU2NvcGU6
OmFkZEltYWdlTWFwKEhUTUxNYXBFbGVtZW50JiBpbWFnZU1hcCkKICAgICBpZiAoIW5hbWUpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAoIW1faW1hZ2VNYXBzQnlOYW1lKQotICAgICAgICBtX2lt
YWdlTWFwc0J5TmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsK
KyAgICAgICAgbV9pbWFnZU1hcHNCeU5hbWUgPSBtYWtlVW5pcXVlPFRyZWVTY29wZU9yZGVyZWRN
YXA+KCk7CiAgICAgbV9pbWFnZU1hcHNCeU5hbWUtPmFkZCgqbmFtZSwgaW1hZ2VNYXAsICp0aGlz
KTsKIH0KIApAQCAtMjYzLDcgKzI2Myw3IEBAIEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6Omdl
dEltYWdlTWFwKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpIGNvbnN0CiB2b2lkIFRyZWVTY29wZTo6
YWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUsIEhUTUxJ
bWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2ltYWdlc0J5VXNlbWFwKQotICAg
ICAgICBtX2ltYWdlc0J5VXNlbWFwID0gc3RkOjptYWtlX3VuaXF1ZTxUcmVlU2NvcGVPcmRlcmVk
TWFwPigpOworICAgICAgICBtX2ltYWdlc0J5VXNlbWFwID0gbWFrZVVuaXF1ZTxUcmVlU2NvcGVP
cmRlcmVkTWFwPigpOwogICAgIHJldHVybiBtX2ltYWdlc0J5VXNlbWFwLT5hZGQobmFtZSwgZWxl
bWVudCwgKnRoaXMpOwogfQogCkBAIC0zMDAsNyArMzAwLDcgQEAgSFRNTExhYmVsRWxlbWVudCog
VHJlZVNjb3BlOjpsYWJlbEVsZW1lbnRGb3JJZChjb25zdCBBdG9tU3RyaW5nJiBmb3JBdHRyaWJ1
dGVWYWwKIAogICAgIGlmICghbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSkgewogICAgICAgICAvLyBQ
b3B1bGF0ZSB0aGUgbWFwIG9uIGZpcnN0IGFjY2Vzcy4KLSAgICAgICAgbV9sYWJlbHNCeUZvckF0
dHJpYnV0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1hcD4oKTsKKyAgICAg
ICAgbV9sYWJlbHNCeUZvckF0dHJpYnV0ZSA9IG1ha2VVbmlxdWU8VHJlZVNjb3BlT3JkZXJlZE1h
cD4oKTsKIAogICAgICAgICBmb3IgKGF1dG8mIGxhYmVsIDogZGVzY2VuZGFudHNPZlR5cGU8SFRN
TExhYmVsRWxlbWVudD4obV9yb290Tm9kZSkpIHsKICAgICAgICAgICAgIGNvbnN0IEF0b21TdHJp
bmcmIGZvclZhbHVlID0gbGFiZWwuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihmb3JB
dHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3OTM0MmM0OTc3NTNkOWExNTI2
ZTA1NTU0OWZjNzc5NzIxNGJmNmU0Li44OTFjMTI4OGM2ZTMxNGFjY2FlOWI2MjcxOTc4MTg4MWU3
NDJkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zODAsMTIgKzM4MCwxMiBA
QCBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRGF0YVRyYW5zZmVyRm9yQ2xpcGJvYXJk
RXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LAogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2Ug
Q2xpcGJvYXJkRXZlbnRLaW5kOjpDb3B5OgogICAgIGNhc2UgQ2xpcGJvYXJkRXZlbnRLaW5kOjpD
dXQ6Ci0gICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShk
b2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRXcml0ZSwgc3RkOjptYWtlX3Vu
aXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6
UmVhZFdyaXRlLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3RlYm9hcmQ+KCkpOwogICAgIGNhc2UgQ2xp
cGJvYXJkRXZlbnRLaW5kOjpQYXN0ZUFzUGxhaW5UZXh0OgogICAgICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJs
ZWQoKSkgewogICAgICAgICAgICAgYXV0byBwbGFpblRleHRUeXBlID0gInRleHQvcGxhaW4iX3M7
CiAgICAgICAgICAgICBhdXRvIHBsYWluVGV4dCA9IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlB
bmRQYXN0ZSgpLT5yZWFkU3RyaW5nKHBsYWluVGV4dFR5cGUpOwotICAgICAgICAgICAgYXV0byBw
YXN0ZWJvYXJkID0gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOworICAgICAg
ICAgICAgYXV0byBwYXN0ZWJvYXJkID0gbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpOwog
ICAgICAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVTdHJpbmcocGxhaW5UZXh0VHlwZSwgcGxhaW5U
ZXh0KTsKICAgICAgICAgICAgIHJldHVybiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZShkb2N1bWVudCwgRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJlYWRvbmx5LCBXVEZNb3Zl
KHBhc3RlYm9hcmQpKTsKICAgICAgICAgfQpAQCAtMzk2LDEwICszOTYsMTAgQEAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZURhdGFUcmFuc2ZlckZvckNsaXBib2FyZEV2ZW50KERvY3Vt
ZW50JiBkb2N1bWVudCwKICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ29weToK
ICAgICBjYXNlIENsaXBib2FyZEV2ZW50S2luZDo6QmVmb3JlQ3V0OgogICAgIGNhc2UgQ2xpcGJv
YXJkRXZlbnRLaW5kOjpCZWZvcmVQYXN0ZToKLSAgICAgICAgcmV0dXJuIERhdGFUcmFuc2Zlcjo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6
SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsKKyAgICAgICAg
cmV0dXJuIERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRh
VHJhbnNmZXI6OlN0b3JlTW9kZTo6SW52YWxpZCwgbWFrZVVuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJk
PigpKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKGRvY3VtZW50LCBEYXRhVHJhbnNmZXI6OlN0
b3JlTW9kZTo6SW52YWxpZCwgc3RkOjptYWtlX3VuaXF1ZTxTdGF0aWNQYXN0ZWJvYXJkPigpKTsK
KyAgICByZXR1cm4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoZG9jdW1lbnQs
IERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpJbnZhbGlkLCBtYWtlVW5pcXVlPFN0YXRpY1Bhc3Rl
Ym9hcmQ+KCkpOwogfQogCiAvLyBSZXR1cm5zIHdoZXRoZXIgY2FsbGVyIHNob3VsZCBjb250aW51
ZSB3aXRoICJ0aGUgZGVmYXVsdCBwcm9jZXNzaW5nIiwgd2hpY2ggaXMgdGhlIHNhbWUgYXMKQEAg
LTExODMsOSArMTE4Myw5IEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKEVkaXRDb21t
YW5kQ29tcG9zaXRpb24mIGNvbXBvc2l0aW9uKQogCiBFZGl0b3I6OkVkaXRvcihGcmFtZSYgZnJh
bWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9raWxsUmluZyhzdGQ6Om1ha2VfdW5p
cXVlPFBBTDo6S2lsbFJpbmc+KCkpCi0gICAgLCBtX3NwZWxsQ2hlY2tlcihzdGQ6Om1ha2VfdW5p
cXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQotICAgICwgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcj4oZnJhbWUpKQor
ICAgICwgbV9raWxsUmluZyhtYWtlVW5pcXVlPFBBTDo6S2lsbFJpbmc+KCkpCisgICAgLCBtX3Nw
ZWxsQ2hlY2tlcihtYWtlVW5pcXVlPFNwZWxsQ2hlY2tlcj4oZnJhbWUpKQorICAgICwgbV9hbHRl
cm5hdGl2ZVRleHRDb250cm9sbGVyKG1ha2VVbmlxdWU8QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cj4oZnJhbWUpKQogICAgICwgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyKCp0aGlzLCAmRWRpdG9yOjpl
ZGl0b3JVSVVwZGF0ZVRpbWVyRmlyZWQpCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVU
RUNUSU9OKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fdGVsZXBob25lTnVtYmVy
RGV0ZWN0aW9uVXBkYXRlVGltZXIoKnRoaXMsICZFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxl
cGhvbmVOdW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAppbmRleCAwZGRjMTViZGMwZDMwNGY0NTQzYTA1OTYyYmM2Y2M3NjQ1
ZjU0Nzk0Li4yYzIwMjhjYzYzYzFiOTM4YmM2NmZmNGJlYTU4OTkyNThlOWE0YTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApA
QCAtMTYzMSw3ICsxNjMxLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6dXBkYXRl
Tm9kZXNJbnNlcnRlZChOb2RlICpub2RlKQogUmVwbGFjZW1lbnRGcmFnbWVudCogUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OmVuc3VyZVJlcGxhY2VtZW50RnJhZ21lbnQoKQogewogICAgIGlmICgh
bV9yZXBsYWNlbWVudEZyYWdtZW50KQotICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5n
ZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkpOworICAgICAgICBtX3JlcGxhY2VtZW50RnJhZ21lbnQg
PSBtYWtlVW5pcXVlPFJlcGxhY2VtZW50RnJhZ21lbnQ+KG1fZG9jdW1lbnRGcmFnbWVudC5nZXQo
KSwgZW5kaW5nU2VsZWN0aW9uKCkpOwogICAgIHJldHVybiBtX3JlcGxhY2VtZW50RnJhZ21lbnQu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
UmVjdEdhdGhlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uUmVjdEdh
dGhlcmVyLmNwcAppbmRleCAzYjQwNjg4Y2I0ZGE2NTZiMzQ0NTg3YzA4ODg2MzZjMGFiMTU2NmNm
Li5mOWI2NGM1YzhjODk2YmYzMjI2MzA4NzA5ZjI2YWE2NjdlMWVkOTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyPiBT
ZWxlY3Rpb25SZWN0R2F0aGVyZXI6OmNsZWFyQW5kCiAgICAgbV9nYXBSZWN0cy5jbGVhcigpOwog
ICAgIG1faXNUZXh0T25seSA9IHRydWU7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxO
b3RpZmllcj4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPE5vdGlmaWVyPigqdGhpcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAppbmRleCA2M2E0ZThlNTM5NzRmNzg4Y2ZlYmMyY2I3ZDIyZDkwYzcyNzk3Yzhh
Li5iYjBjOWEyMjYxOGUzM2JhOTU4MWRiZGRmMWVhNTJlMjdmYTkzMmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC02NTAsNyArNjUwLDcgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24g
PSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2Vu
ZE9mZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3RoKCk7CiAgICAgICAgIGlmICghbV9mbG93UnVu
UmVzb2x2ZXJDYWNoZSB8fCAmbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZibG9j
a0Zsb3cpIHsKICAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93
ID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA/IDAgOiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0ZXh0
Tm9kZSk7Ci0gICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsK
KyAgICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBtYWtlVW5pcXVlPFNpbXBsZUxp
bmVMYXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQpOwogICAgICAgICB9CiAg
ICAgICAgIC8vIFNraXAgdG8gbV9vZmZzZXQgcG9zaXRpb24uCiAgICAgICAgIGF1dG8gcmFuZ2Ug
PSBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAwYTgz
YWMwOTU5Mjc0YzA3ODBkNWQ3YjM4NWYwMTljMGU4NmUzYzc0Li45Y2Y4NmE0YTE1ZjFjN2M2ZjAy
ODE1NTY0N2FmYTAwNTlhZTNiNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCkBAIC0zODAsNyArMzgwLDcgQEAgSFRNTENvbnZlcnRlcjo6SFRN
TENvbnZlcnRlcihjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiAg
ICAgX2ZsYWdzLnJlYWNoZWRTdGFydCA9IGZhbHNlOwogICAgIF9mbGFncy5yZWFjaGVkRW5kID0g
ZmFsc2U7CiAgICAgCi0gICAgX2NhY2hlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SFRNTENvbnZlcnRl
ckNhY2hlcz4oKTsKKyAgICBfY2FjaGVzID0gbWFrZVVuaXF1ZTxIVE1MQ29udmVydGVyQ2FjaGVz
PigpOwogfQogCiBIVE1MQ29udmVydGVyOjp+SFRNTENvbnZlcnRlcigpCkBAIC01NTEsNyArNTUx
LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21wdXRlZFN0eWxl
UHJvcGVydHlGb3JFbGVtZW50KEVsZW1lbnQmIGUKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9jb21w
dXRlZFN0eWxlcy5hZGQoJmVsZW1lbnQsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcj4oJmVsZW1lbnQsIHRydWUpOworICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxDb21wdXRlZFN0eWxlRXh0cmFjdG9yPigmZWxl
bWVudCwgdHJ1ZSk7CiAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciYgY29tcHV0ZWRTdHlsZSA9
ICpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiBjb21wdXRlZFN0eWxlLnByb3Bl
cnR5VmFsdWUocHJvcGVydHlJZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXgg
ZmI0MzcxNjMwM2FlMjViODE5MjkyZDI3MWNhMmNhZTY4NGI5YzAyZS4uYzNjOGY4YjMyNGJmZWNk
Y2U5ZTVjNGViMTliNWI3NDYwODkyOGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApA
QCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2Fu
aXRpemluZ1dlYkNvbnRlbnQoKQogewogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdl
Q29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMoKTsKICAgICAKLSAgICBhdXRvIHBhZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBh
dXRvIHBhZ2UgPSBtYWtlVW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsK
ICAgICBwYWdlLT5zZXRJc0ZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiAgICAgcGFnZS0+c2V0
dGluZ3MoKS5zZXRNZWRpYUVuYWJsZWQoZmFsc2UpOwogICAgIHBhZ2UtPnNldHRpbmdzKCkuc2V0
U2NyaXB0RW5hYmxlZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0
cmVhbS5jcHAKaW5kZXggYTA5NWVlYWU5YjJhNzk3YmRhYmFlMzQ5NDBmZGM2YTNjZTMwNDI0Yi4u
ZDU4MTEyZmY5YmRmNmNkN2QxOTg1NTJkODY2OTkxZjg1YjdhMWMzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRp
YyB2b2lkIGNhbGxPbkZpbGVUaHJlYWQoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAg
ICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBxdWV1ZS5nZXQoKS5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKKyAgICBxdWV1ZS5n
ZXQoKS5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oV1RGTW92ZShmdW5jdGlv
bikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNs
aWVudCYgY2xpZW50KQotICAgIDogbV9pbnRlcm5hbHMoc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5h
bHM+KGNsaWVudCkpCisgICAgOiBtX2ludGVybmFscyhtYWtlVW5pcXVlPEludGVybmFscz4oY2xp
ZW50KSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5jcHAKaW5kZXggOWFkM2RhOWVmZmYwZjNhNzA3YTA2MDFmNzg2MDFkNWQ4
NjgyNThmNS4uOTlhN2I1YzZmOTg3YTE0YmExOTA5NDU4OTg3YWU4NGVjZmM0ZjA4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gRmlsZVJlYWRlcjo6cmVhZEludGVybmFsKEJsb2ImIGJsb2IsIEZpbGVSZWFk
ZXJMb2FkZXI6OlJlYWRUeXAKICAgICBtX3N0YXRlID0gTE9BRElORzsKICAgICBtX2Vycm9yID0g
bnVsbHB0cjsKIAotICAgIG1fbG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlUmVhZGVyTG9h
ZGVyPihtX3JlYWRUeXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhp
cykpOworICAgIG1fbG9hZGVyID0gbWFrZVVuaXF1ZTxGaWxlUmVhZGVyTG9hZGVyPihtX3JlYWRU
eXBlLCBzdGF0aWNfY2FzdDxGaWxlUmVhZGVyTG9hZGVyQ2xpZW50Kj4odGhpcykpOwogICAgIG1f
bG9hZGVyLT5zZXRFbmNvZGluZyhtX2VuY29kaW5nKTsKICAgICBtX2xvYWRlci0+c2V0RGF0YVR5
cGUobV9ibG9iLT50eXBlKCkpOwogICAgIG1fbG9hZGVyLT5zdGFydChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRl
eCA2YWU1NTJjYmNlZmJhMzVhZjU0OTRhZDgwYTE0NzMxZDAwYWNhM2QxLi41YzhmMThlM2RhYjBl
YjI1OTdhZDVlODIyMTM5YmQ4OGZmMzI0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShG
cmFtZSYgZnJhbWUpCiAKICAgICAvLyBDcmVhdGUgdGhlIENhY2hlZEZyYW1lcyBmb3IgYWxsIEZy
YW1lcyBpbiB0aGUgRnJhbWVUcmVlLgogICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZnJhbWUudHJl
ZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGlu
ZygpKQotICAgICAgICBtX2NoaWxkRnJhbWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhY2hl
ZEZyYW1lPigqY2hpbGQpKTsKKyAgICAgICAgbV9jaGlsZEZyYW1lcy5hcHBlbmQobWFrZVVuaXF1
ZTxDYWNoZWRGcmFtZT4oKmNoaWxkKSk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChtX2RvY3VtZW50
LT5kb21XaW5kb3coKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC0+ZnJhbWUoKSk7
CkBAIC0xNzIsNyArMTcyLDcgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lJiBmcmFt
ZSkKICAgICAvLyBBY3RpdmUgRE9NIG9iamVjdHMgbXVzdCBiZSBzdXNwZW5kZWQgYmVmb3JlIHdl
IGNhY2hlIHRoZSBmcmFtZSBzY3JpcHQgZGF0YS4KICAgICBtX2RvY3VtZW50LT5zdXNwZW5kKFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZSk7CiAKLSAgICBtX2NhY2hlZEZyYW1lU2NyaXB0
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0Q2FjaGVkRnJhbWVEYXRhPihmcmFtZSk7Cisg
ICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEgPSBtYWtlVW5pcXVlPFNjcmlwdENhY2hlZEZyYW1l
RGF0YT4oZnJhbWUpOwogCiAgICAgbV9kb2N1bWVudC0+ZG9tV2luZG93KCktPnN1c3BlbmRGb3JQ
YWdlQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggMDY4
NmFlOGZlY2U0NGYxZWY2OTBlNWY4ZjZhYmU4NDYxNDYzZGY3ZC4uOTc0N2E0MDQwMTZhYzg2OGQy
Zjc3OTZlNTMzMDQzNmZmYTU4NzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2Uu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNv
dW50ZWRMZWFrQ291bnRlciwgY2FjaGVkUGFnZUNvdW50ZXIsICgiQ2FjaGVkCiBDYWNoZWRQYWdl
OjpDYWNoZWRQYWdlKFBhZ2UmIHBhZ2UpCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fZXhw
aXJhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkgKyBTZWNvbmRzKHBhZ2Uuc2V0dGluZ3Mo
KS5iYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsKCkpKQotICAgICwgbV9jYWNoZWRN
YWluRnJhbWUoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRGcmFtZT4ocGFnZS5tYWluRnJhbWUoKSkp
CisgICAgLCBtX2NhY2hlZE1haW5GcmFtZShtYWtlVW5pcXVlPENhY2hlZEZyYW1lPihwYWdlLm1h
aW5GcmFtZSgpKSkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgY2FjaGVkUGFnZUNvdW50ZXIuaW5j
cmVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggMDAyOTY1NTg5
MmQxNTRjYjUwNDNlMWRhMjI4MjU4NzlmNjNlZGRlNS4uM2JhMjRiOWRlMmU5OTQxOTZhMGRmOTJm
YzM2NjNjZWVhNWJmNGI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAt
NDc4LDcgKzQ3OCw3IEBAIGJvb2wgUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRl
bSYgaXRlbSwgUGFnZSogcGFnZSkKICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IGZpcmUg
YW55IEpTIGV2ZW50cyBpbiB0aGlzIHNjb3BlLgogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKLSAgICAgICAgaXRlbS5t
X2NhY2hlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKKyAgICAg
ICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBtYWtlVW5pcXVlPENhY2hlZFBhZ2U+KCpwYWdlKTsKICAg
ICAgICAgaXRlbS5tX3BydW5pbmdSZWFzb24gPSBQcnVuaW5nUmVhc29uOjpOb25lOwogICAgICAg
ICBtX2l0ZW1zLmFkZCgmaXRlbSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKaW5kZXggN2E5OTFmMTdiMDNkODNlOTA1ZjdkM2UwNjA3YmY1MmE5OWI4MGU0NS4uYjE0
ZDMxMDE1OGI2NDVmZTg2OTlmN2Y5OWY0MTg1OGJkNTVhZTI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBl
OjpyZXF1ZXN0SWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgICAgIG1fZmls
ZUljb25Mb2FkZXItPmludmFsaWRhdGUoKTsKIAogICAgIEZpbGVJY29uTG9hZGVyQ2xpZW50JiBj
bGllbnQgPSAqdGhpczsKLSAgICBtX2ZpbGVJY29uTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKKyAgICBtX2ZpbGVJY29uTG9hZGVyID0gbWFrZVVuaXF1
ZTxGaWxlSWNvbkxvYWRlcj4oY2xpZW50KTsKIAogICAgIGNocm9tZS0+bG9hZEljb25Gb3JGaWxl
cyhwYXRocywgKm1fZmlsZUljb25Mb2FkZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IDgwNmU1ZjNkYWViZTI5NGUzMzAyMzBkZmE1
ZWRlOGM5MmQ1OGMzMTguLjE3YzAyN2NmZGZhMWJiNDNiNjQ1ZWU2MmQ1OGM4YWMzMjA2ZDg3Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAg
LTI3OSw3ICsyNzksNyBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
ZXNldEZvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcigpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oYXNIVE1MRWxlbWVudCgpLmlzQ29ubmVjdGVkKCkpOwotICAgIG1f
Zm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxGb3JtQXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVsZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMpOworICAgIG1fZm9ybUF0dHJpYnV0ZVRhcmdldE9i
c2VydmVyID0gbWFrZVVuaXF1ZTxGb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXI+KGFzSFRNTEVs
ZW1lbnQoKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGZvcm1BdHRyKSwgKnRoaXMp
OwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZVRhcmdldENo
YW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCBlYTViMDlh
YWEwOGRiMjczOTYxYjk1MzQyMmYwM2RkN2FkNmU0NjcxLi5kMGUwM2Y1NmNiMDYzZTI3ZjExMzQw
YTI3MTNkNGY5NjFiNWFlNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNw
cApAQCAtMjAwLDcgKzIwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4gU2F2
ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgc2l6ZV90
IGl0ZW1Db3VudCA9IHN0YXRlVmVjdG9yW2luZGV4KytdLnRvVUludCgpOwogICAgIGlmICghaXRl
bUNvdW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHNhdmVkRm9ybVN0YXRl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKKyAgICBhdXRvIHNhdmVkRm9y
bVN0YXRlID0gbWFrZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZT4oKTsKICAgICB3aGlsZSAoaXRlbUNv
dW50LS0pIHsKICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSBzdGF0ZVZlY3Rvci5zaXplKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM2NSwxMyArMzY1LDEzIEBAIHN0YXRpYyBT
dHJpbmcgZm9ybVN0YXRlU2lnbmF0dXJlKCkKIHN0ZDo6dW5pcXVlX3B0cjxGb3JtQ29udHJvbGxl
cjo6U2F2ZWRGb3JtU3RhdGVNYXA+IEZvcm1Db250cm9sbGVyOjpjcmVhdGVTYXZlZEZvcm1TdGF0
ZU1hcChjb25zdCBGb3JtRWxlbWVudExpc3RIYXNoU2V0JiBjb250cm9sTGlzdCkKIHsKICAgICBG
b3JtS2V5R2VuZXJhdG9yIGtleUdlbmVyYXRvcjsKLSAgICBhdXRvIHN0YXRlTWFwID0gc3RkOjpt
YWtlX3VuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4oKTsKKyAgICBhdXRvIHN0YXRlTWFwID0gbWFr
ZVVuaXF1ZTxTYXZlZEZvcm1TdGF0ZU1hcD4oKTsKICAgICBmb3IgKGF1dG8mIGNvbnRyb2wgOiBj
b250cm9sTGlzdCkgewogICAgICAgICBpZiAoIWNvbnRyb2wtPnNob3VsZFNhdmVBbmRSZXN0b3Jl
Rm9ybUNvbnRyb2xTdGF0ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGF1dG8m
IGZvcm1TdGF0ZSA9IHN0YXRlTWFwLT5hZGQoa2V5R2VuZXJhdG9yLmZvcm1LZXkoKmNvbnRyb2wp
LmltcGwoKSwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICBpZiAoIWZvcm1TdGF0
ZSkKLSAgICAgICAgICAgIGZvcm1TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U2F2ZWRGb3JtU3Rh
dGU+KCk7CisgICAgICAgICAgICBmb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRl
PigpOwogICAgICAgICBmb3JtU3RhdGUtPmFwcGVuZENvbnRyb2xTdGF0ZShjb250cm9sLT5uYW1l
KCksIGNvbnRyb2wtPnR5cGUoKSwgY29udHJvbC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKSk7CiAg
ICAgfQogICAgIHJldHVybiBzdGF0ZU1hcDsKQEAgLTQwMyw3ICs0MDMsNyBAQCBGb3JtQ29udHJv
bFN0YXRlIEZvcm1Db250cm9sbGVyOjp0YWtlU3RhdGVGb3JGb3JtRWxlbWVudChjb25zdCBIVE1M
Rm9ybUNvbnRyb2xFbAogICAgIGlmIChtX3NhdmVkRm9ybVN0YXRlTWFwLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoKTsKICAgICBpZiAoIW1fZm9ybUtleUdlbmVy
YXRvcikKLSAgICAgICAgbV9mb3JtS2V5R2VuZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGb3Jt
S2V5R2VuZXJhdG9yPigpOworICAgICAgICBtX2Zvcm1LZXlHZW5lcmF0b3IgPSBtYWtlVW5pcXVl
PEZvcm1LZXlHZW5lcmF0b3I+KCk7CiAgICAgU2F2ZWRGb3JtU3RhdGVNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9zYXZlZEZvcm1TdGF0ZU1hcC5maW5kKG1fZm9ybUtleUdlbmVyYXRvci0+Zm9ybUtleShj
b250cm9sKS5pbXBsKCkpOwogICAgIGlmIChpdCA9PSBtX3NhdmVkRm9ybVN0YXRlTWFwLmVuZCgp
KQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA1ZjQ3OGYyMWNjNDY1ZTIyZjRmNTQ0MDhmNDQ4
YTRkMDliMjRmNDlmLi4zZWYxOThjZTc0YzMzZDk3Y2EzMWVlNDMyNGNlZjllOTlhZjg3N2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMzE0LDcgKzMx
NCw3IEBAIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6Omhhc1JlbChSZWxhdGlvbiByZWxhdGlvbikg
Y29uc3QKIERPTVRva2VuTGlzdCYgSFRNTEFuY2hvckVsZW1lbnQ6OnJlbExpc3QoKSBjb25zdAog
ewogICAgIGlmICghbV9yZWxMaXN0KSB7Ci0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91
bmlxdWU8RE9NVG9rZW5MaXN0Pihjb25zdF9jYXN0PEhUTUxBbmNob3JFbGVtZW50Jj4oKnRoaXMp
LCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3VtZW50JiwgU3RyaW5nVmlldyB0b2tlbikgewor
ICAgICAgICBtX3JlbExpc3QgPSBtYWtlVW5pcXVlPERPTVRva2VuTGlzdD4oY29uc3RfY2FzdDxI
VE1MQW5jaG9yRWxlbWVudCY+KCp0aGlzKSwgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVu
dCYsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgICAg
ICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b2tlbiwgIm5vcmVmZXJyZXIiKSB8
fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLCAibm9vcGVuZXIiKSB8fCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKHRva2VuLCAiYXIiKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5jcHAKaW5kZXggNThmYzcwMmYwMzc0MWUwNTQ0ZTkzZDY1YWEwMDYyYzAzNWM5
YjNjYS4uNTExNGIyMDM3NDIyMGNhNGRkODZkMjE1NzIzNTUyNTA5MjQ3NzUzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIEhU
TUxBcmVhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFJlZ2lvbigpCiBib29sIEhUTUxBcmVhRWxl
bWVudDo6bWFwTW91c2VFdmVudChMYXlvdXRQb2ludCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6
ZSYgc2l6ZSwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlmIChtX2xhc3RTaXplICE9
IHNpemUpIHsKLSAgICAgICAgbV9yZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdGg+KGdldFJl
Z2lvbihzaXplKSk7CisgICAgICAgIG1fcmVnaW9uID0gbWFrZVVuaXF1ZTxQYXRoPihnZXRSZWdp
b24oc2l6ZSkpOwogICAgICAgICBtX2xhc3RTaXplID0gc2l6ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggMDc3MTVjYmI1MDk1NGE2MjYz
NmM5MzMwNWE3NjUzMzU5ZDFlNmY2Yi4uMjAxNGVmZTc1Y2VjNDYwZTM3OTFlMzYzZjU2MjhlNTAw
MWI4ZGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAg
LTk1Miw3ICs5NTIsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpzZXRJbWFnZUJ1ZmZlcihz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKSBjbwogICAgIG1faW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKICAgICBtX2lt
YWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShkZWZhdWx0
SW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zZXRT
dHJva2VUaGlja25lc3MoMSk7Ci0gICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlcj4obV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9jayhIVE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpKTsK
ICAgICBIVE1MRWxlbWVudDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpLmhlYXAucmVw
b3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQobWVtb3J5Q29zdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggOTc2YzhlMGE5YTA2YTliODNkNmNhOTQxYmQ1ZGQzN2I5
ZjMzODVjNS4uMzI4MTc2YjY5ZThjZDFiZjIyZDRlNzYzMjdlOWYyOTI5NjhhYjQxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lk
IEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYg
KGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY2Fj
aGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAg
ICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7
CiAKICAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuY3BwCmluZGV4IGYxNTc4NzRlNmQ1MzRlM2Y2MTM0ZTRhNWRmNGY1MWJlMmY2N2EzMWEuLjYw
ZGQxZmIyNTIwMzg2MGQzZDkyYTdhNWFjYjMzMWMyYWIwNGI1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgY29uc3QgQXRv
bVN0cmluZyYgRGV0YWlsc1Nsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChjb25z
dCBOb2RlJiBjaGlsZCkKIFJlZjxIVE1MRGV0YWlsc0VsZW1lbnQ+IEhUTUxEZXRhaWxzRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICBhdXRvIGRldGFpbHMgPSBhZG9wdFJlZigqbmV3IEhUTUxEZXRhaWxzRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwotICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93
Um9vdDo6Y3JlYXRlKGRvY3VtZW50LCBzdGQ6Om1ha2VfdW5pcXVlPERldGFpbHNTbG90QXNzaWdu
bWVudD4oKSkpOworICAgIGRldGFpbHMtPmFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRl
KGRvY3VtZW50LCBtYWtlVW5pcXVlPERldGFpbHNTbG90QXNzaWdubWVudD4oKSkpOwogICAgIHJl
dHVybiBkZXRhaWxzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcAppbmRleCAwY2Q3NWJjM2U5NTNlYTY5NDBlNmZjMjYzYjQwZjE5MGY0YWYz
ZjczLi43OWYzZDM5ZmE0ZDllY2YyODg5OWNmZTc3NzI2YjVjZTNmNjUwMGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ3OSw3ICs0
NzksNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZpc2libGVWYWxpZGF0
aW9uTWVzc2FnZSgpCiAgICAgaWYgKHJlbmRlcmVyKCkgJiYgd2lsbFZhbGlkYXRlKCkpCiAgICAg
ICAgIG1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZSgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAg
IGlmICghbV92YWxpZGF0aW9uTWVzc2FnZSkKLSAgICAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9
IHN0ZDo6bWFrZV91bmlxdWU8VmFsaWRhdGlvbk1lc3NhZ2U+KHRoaXMpOworICAgICAgICBtX3Zh
bGlkYXRpb25NZXNzYWdlID0gbWFrZVVuaXF1ZTxWYWxpZGF0aW9uTWVzc2FnZT4odGhpcyk7CiAg
ICAgbV92YWxpZGF0aW9uTWVzc2FnZS0+dXBkYXRlVmFsaWRhdGlvbk1lc3NhZ2UobWVzc2FnZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5jcHAKaW5kZXggNmVjMjJkNzc0OWYyZjc4YmQzMWVmNzdlYTYzNjA3M2I3MWM1OWZmMi4u
YTJiMDBlOGY4MTZkYTFjMjIxYjFjMzY2ZWE2ZTY4OWMzYjFjNjhiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTExOSw3
ICsxMTksNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVs
ZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rp
b25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKKyAgICBhdXRvIGNhY2hlID0gbWFrZVVuaXF1ZTxDb2xs
ZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKICAgICBIYXNoU2V0PEF0b21TdHJpbmdJbXBs
Kj4gZm91bmRJbnB1dEVsZW1lbnRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKaW5kZXggYzc2ZDQ5M2E2MmNlZDgzMDg4MDFiNmIwMWQzMzIxZTBhMzMzZjUxZC4uNDM1
ZDk1MTRkZDI5ZGRkMWY2ZGZiMWQxNjllMzQ3ZTMxNWEzMDE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIHZvaWQgSFRNTEZvcm1F
bGVtZW50OjphZGRUb1Bhc3ROYW1lc01hcChGb3JtTmFtZWRJdGVtKiBpdGVtLCBjb25zdCBBdG9t
U3RyaW5nJiBwCiAgICAgaWYgKHBhc3ROYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmICghbV9wYXN0TmFtZXNNYXApCi0gICAgICAgIG1fcGFzdE5hbWVzTWFwID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7CisgICAgICAgIG1fcGFzdE5hbWVzTWFwID0gbWFr
ZVVuaXF1ZTxQYXN0TmFtZXNNYXA+KCk7CiAgICAgbV9wYXN0TmFtZXNNYXAtPnNldChwYXN0TmFt
ZS5pbXBsKCksIGl0ZW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwCmluZGV4IDAyZDdkNGU0ZmJlODZmNTI3MGY1ODRiNmE4ZGViOWJlNDZmOTdhYTkuLmIx
YzgyMWRkOWJhYmEyYTIwY2IyOWUxYzFjZmQ5MGQ3MWZlYzU4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFJlZjxIVE1MSUZy
YW1lRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBECiBET01Ub2tlbkxpc3QmIEhUTUxJRnJhbWVFbGVtZW50OjpzYW5kYm94KCkK
IHsKICAgICBpZiAoIW1fc2FuZGJveCkgewotICAgICAgICBtX3NhbmRib3ggPSBzdGQ6Om1ha2Vf
dW5pcXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIHNhbmRib3hBdHRyLCBbXShEb2N1bWVudCYsIFN0
cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9zYW5kYm94ID0gbWFrZVVuaXF1ZTxET01Ub2tl
bkxpc3Q+KCp0aGlzLCBzYW5kYm94QXR0ciwgW10oRG9jdW1lbnQmLCBTdHJpbmdWaWV3IHRva2Vu
KSB7CiAgICAgICAgICAgICByZXR1cm4gU2VjdXJpdHlDb250ZXh0Ojppc1N1cHBvcnRlZFNhbmRi
b3hQb2xpY3kodG9rZW4pOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAwYzI1Y2RkODBkNWY4YTc3MGExZDk3MDA1Nzg0N2E4
OWM1NjgzZGJkLi4zNzZjNTIxOTY0ZTBmNzFiNmZkOWMyMTcyZDYyMDFjMjkyNTdhMWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBA
QCBSZWY8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogSFRNTEltYWdlTG9hZGVyJiBIVE1MSW5wdXRFbGVt
ZW50OjplbnN1cmVJbWFnZUxvYWRlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAg
ICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0
aGlzKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlciA9IG1ha2VVbmlxdWU8SFRNTEltYWdlTG9hZGVy
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2ltYWdlTG9hZGVyOwogfQogCkBAIC0xNjQxLDcgKzE2
NDEsNyBAQCBSZWZQdHI8SFRNTERhdGFMaXN0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6ZGF0
YUxpc3QoKSBjb25zdAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpyZXNldExpc3RBdHRyaWJ1dGVU
YXJnZXRPYnNlcnZlcigpCiB7CiAgICAgaWYgKGlzQ29ubmVjdGVkKCkpCi0gICAgICAgIG1fbGlz
dEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0QXR0cmlidXRl
VGFyZ2V0T2JzZXJ2ZXI+KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGlzdEF0dHIp
LCB0aGlzKTsKKyAgICAgICAgbV9saXN0QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcj4oYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihsaXN0QXR0ciksIHRoaXMpOwogICAgIGVsc2UKICAgICAgICAgbV9saXN0QXR0cmli
dXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCmluZGV4IGI4NjM0Y2FkYWZhMThhMGEyN2NjZjcyOGY5YmJmNTZjYjdmNzhk
MTYuLmY2YTdiYzgwMjRmZmE1ZTRiZDcxZjY5YTI3Yzk3YzhjOTM2YmI0ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIEhU
TUxMaW5rRWxlbWVudDo6c3R5bGVTaGVldElzTG9hZGluZygpIGNvbnN0CiBET01Ub2tlbkxpc3Qm
IEhUTUxMaW5rRWxlbWVudDo6c2l6ZXMoKQogewogICAgIGlmICghbV9zaXplcykKLSAgICAgICAg
bV9zaXplcyA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6ZXNBdHRy
KTsKKyAgICAgICAgbV9zaXplcyA9IG1ha2VVbmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgc2l6
ZXNBdHRyKTsKICAgICByZXR1cm4gKm1fc2l6ZXM7CiB9CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCB2
b2lkIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoTGlua0V2ZW50U2VuZGVy
KiBldmVudFNlbmRlcikKIERPTVRva2VuTGlzdCYgSFRNTExpbmtFbGVtZW50OjpyZWxMaXN0KCkK
IHsKICAgICBpZiAoIW1fcmVsTGlzdCkgCi0gICAgICAgIG1fcmVsTGlzdCA9IHN0ZDo6bWFrZV91
bmlxdWU8RE9NVG9rZW5MaXN0PigqdGhpcywgSFRNTE5hbWVzOjpyZWxBdHRyLCBbXShEb2N1bWVu
dCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcgdG9rZW4pIHsKKyAgICAgICAgbV9yZWxMaXN0ID0gbWFr
ZVVuaXF1ZTxET01Ub2tlbkxpc3Q+KCp0aGlzLCBIVE1MTmFtZXM6OnJlbEF0dHIsIFtdKERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyB0b2tlbikgewogICAgICAgICAgICAgcmV0dXJuIExp
bmtSZWxBdHRyaWJ1dGU6OmlzU3VwcG9ydGVkKGRvY3VtZW50LCB0b2tlbik7CiAgICAgICAgIH0p
OwogICAgIHJldHVybiAqbV9yZWxMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggYjU1YzQ2OTA2MWRjYzA0ZjJhMTE5YTI1NTM4ZWYwODJmZTZlNDM1NS4u
ZjY0ZmU5MmI2YjdkMDFjNDk0YjU3YTc2NWUyYTU1YjY0YjNmMDQzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00ODEsNyArNDgxLDcgQEAgSFRNTE1lZGlh
RWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hJbml0aWFsaXph
dGlvbigpCiB7Ci0gICAgbV9tZWRpYVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhRWxl
bWVudFNlc3Npb24+KCp0aGlzKTsKKyAgICBtX21lZGlhU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TWVk
aWFFbGVtZW50U2Vzc2lvbj4oKnRoaXMpOwogCiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2
aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlRm9y
RnVsbHNjcmVlbik7CiAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
TWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWEpOwpAQCAt
MzAyNyw3ICszMDI3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5j
ZShjb25zdCBNZWRpYVRpbWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0KIAogICAgIC8vIDUgLSBJ
ZiB0aGUgc2VlayB3YXMgaW4gcmVzcG9uc2UgdG8gYSBET00gbWV0aG9kIGNhbGwgb3Igc2V0dGlu
ZyBvZiBhbiBJREwgYXR0cmlidXRlLCB0aGVuIGNvbnRpbnVlCiAgICAgLy8gdGhlIHNjcmlwdC4g
VGhlIHJlbWFpbmRlciBvZiB0aGVzZSBzdGVwcyBtdXN0IGJlIHJ1biBhc3luY2hyb25vdXNseS4K
LSAgICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0
aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRpdmVUb2xlcmFuY2UpOworICAgIG1fcGVuZGlu
Z1NlZWsgPSBtYWtlVW5pcXVlPFBlbmRpbmdTZWVrPihub3csIHRpbWUsIG5lZ2F0aXZlVG9sZXJh
bmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSk7CiAgICAgaWYgKGZyb21ET00pIHsKICAgICAgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUiwgImVucXVldWluZyBzZWVrIGZyb20gIiwgbm93LCAiIHRvICIs
IHRpbWUpOwogICAgICAgICBtX3NlZWtUYXNrUXVldWUuc2NoZWR1bGVUYXNrKHN0ZDo6YmluZCgm
SFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3V0cHV0RWxlbWVudC5jcHAKaW5kZXggZGQ0ZmEyZDcwZTRmNDNmNDJiODIyMmQzN2Q0NDE4
ZjFhMTMxZWQ4Ny4uNTZiNzIwNmFlM2JlOGYxMGE4ODE0YWU5YWZhYzYyYmZlYjU2MDlhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIs
NyBAQCB2b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIERPTVRva2VuTGlzdCYgSFRNTE91dHB1dEVsZW1lbnQ6Omh0bWxGb3IoKQogewog
ICAgIGlmICghbV90b2tlbnMpCi0gICAgICAgIG1fdG9rZW5zID0gc3RkOjptYWtlX3VuaXF1ZTxE
T01Ub2tlbkxpc3Q+KCp0aGlzLCBmb3JBdHRyKTsKKyAgICAgICAgbV90b2tlbnMgPSBtYWtlVW5p
cXVlPERPTVRva2VuTGlzdD4oKnRoaXMsIGZvckF0dHIpOwogICAgIHJldHVybiAqbV90b2tlbnM7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
CmluZGV4IGRkYTk0NDlkNTdhZDQyMDg1ODYyN2RlZDNmZGQ5MTgxMzIxNWZlMmIuLjViOTlkNTU1
NTMwNDk3MDkzYzZiY2E5OTU4N2M3YTJmNzI1NTkwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlQWZ0ZXJTdHlsZVJlc29sdXRpb24oKQogICAg
IGlmIChyZW5kZXJlcigpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgewogICAgICAgICBpZiAo
aXNJbWFnZVR5cGUoKSkgewogICAgICAgICAgICAgaWYgKCFtX2ltYWdlTG9hZGVyKQotICAgICAg
ICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxJbWFnZUxvYWRl
cj4oKnRoaXMpOworICAgICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIgPSBtYWtlVW5pcXVlPEhU
TUxJbWFnZUxvYWRlcj4oKnRoaXMpOwogICAgICAgICAgICAgaWYgKG1fbmVlZHNJbWFnZVJlbG9h
ZCkKICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9y
aW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4IDEwYmMwOWZmMDk5Yzg4OGIyMjYyNjkzOTBi
OGUxZjhiZTRjZTM5NjcuLmIwNDkzOWI5YzJkNzI3MDIxMzc5YzVhNGRkMzQwNDdkODEyYWQ5NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgY2xhc3MgU3VtbWFyeVNsb3RFbGVtZW50IGZpbmFsIDogcHVibGljIFNsb3RBc3Np
Z25tZW50IHsKIFJlZjxIVE1MU3VtbWFyeUVsZW1lbnQ+IEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKIHsK
ICAgICBSZWY8SFRNTFN1bW1hcnlFbGVtZW50PiBzdW1tYXJ5ID0gYWRvcHRSZWYoKm5ldyBIVE1M
U3VtbWFyeUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKLSAgICBzdW1tYXJ5LT5hZGRTaGFk
b3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCwgc3RkOjptYWtlX3VuaXF1ZTxTdW1t
YXJ5U2xvdEVsZW1lbnQ+KCkpKTsKKyAgICBzdW1tYXJ5LT5hZGRTaGFkb3dSb290KFNoYWRvd1Jv
b3Q6OmNyZWF0ZShkb2N1bWVudCwgbWFrZVVuaXF1ZTxTdW1tYXJ5U2xvdEVsZW1lbnQ+KCkpKTsK
ICAgICByZXR1cm4gc3VtbWFyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAKaW5kZXggYTVlNzVhYWZmNTJkZGY5ZjU3NTQ1YmEwNjdlZWM3ODk4ODhkZDlhYi4u
NjdmZjIxMjUyZjFiOGU4MzEwYTFkN2NiYjIzMmVhOGM3MzkzOGEwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRNTFZp
ZGVvRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKICAgICB1cGRhdGVEaXNwbGF5U3RhdGUo
KTsKICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkpIHsKICAgICAgICAgaWYgKCFt
X2ltYWdlTG9hZGVyKQotICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SFRNTEltYWdlTG9hZGVyPigqdGhpcyk7CisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0g
bWFrZVVuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgbV9pbWFnZUxvYWRl
ci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5pbWFnZVJlc291cmNlKCkuc2V0
Q2FjaGVkSW1hZ2UobV9pbWFnZUxvYWRlci0+aW1hZ2UoKSk7CkBAIC0xMjcsNyArMTI3LDcgQEAg
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW4KIAogICAgICAgICBpZiAoc2hvdWxkRGlzcGxheVBvc3Rl
ckltYWdlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAg
ICAgICBtX2ltYWdlTG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxIVE1MSW1hZ2VMb2FkZXI+KCp0
aGlzKTsKKyAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gbWFrZVVuaXF1ZTxIVE1MSW1h
Z2VMb2FkZXI+KCp0aGlzKTsKICAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21F
bGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggN2JlYmM3YTEwY2NiZWQ1M2NmZThjYWY4
YTA3Yzc4ZTZjNTc5ZDY0Zi4uYjY2OGRhMWYzMjE0ZGJmOWI5MTYxZWZhODMyNTZjOTVjYTgyMTFk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFB1YmxpY1VSTE1h
bmFnZXI+IFB1YmxpY1VSTE1hbmFnZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogewotICAgIGF1dG8gcHVibGljVVJMTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8
UHVibGljVVJMTWFuYWdlcj4oY29udGV4dCk7CisgICAgYXV0byBwdWJsaWNVUkxNYW5hZ2VyID0g
bWFrZVVuaXF1ZTxQdWJsaWNVUkxNYW5hZ2VyPihjb250ZXh0KTsKICAgICBwdWJsaWNVUkxNYW5h
Z2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcHVibGljVVJMTWFuYWdlcjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggOGFmNzNhOGEw
MDU0OTgwYWQxNzkwNjk1NmE4NDMyYTZmOWNkYjE0Yi4uZjVkYWIwZjQyZjJkMDUzZTcwM2M2YzU3
MjNjYTE2MDM3MWQxYTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0
aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5jcHAKQEAgLTExNSw5ICsxMTUsOSBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgp
KTsKICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOwogICAgIGlmICghbV9idWJibGUpCi0gICAgICAg
IG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNz
YWdlOjpidWlsZEJ1YmJsZVRyZWUpOworICAgICAgICBtX3RpbWVyID0gbWFrZVVuaXF1ZTxUaW1l
cj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlk
YXRpb25NZXNzYWdlOjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcik7CisgICAgICAgIG1fdGlt
ZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNz
YWdlRE9NQW5kU3RhcnRUaW1lcik7CiAgICAgbV90aW1lci0+c3RhcnRPbmVTaG90KDBfcyk7CiB9
CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpzZXRNZXNzYWdl
RE9NQW5kU3RhcnRUaW1lcigpCiAgICAgaWYgKG1hZ25pZmljYXRpb24gPD0gMCkKICAgICAgICAg
bV90aW1lciA9IG51bGxwdHI7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1fdGltZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVU
cmVlKTsKKyAgICAgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRh
dGlvbk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgICAgICBtX3RpbWVyLT5zdGFydE9u
ZVNob3Qoc3RkOjptYXgoNV9zLCAxX21zICogc3RhdGljX2Nhc3Q8ZG91YmxlPihtX21lc3NhZ2Uu
bGVuZ3RoKCkpICogbWFnbmlmaWNhdGlvbikpOwogICAgIH0KIH0KQEAgLTIzNCw3ICsyMzQsNyBA
QCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpyZXF1ZXN0VG9IaWRlTWVzc2FnZSgpCiAgICAgfQog
CiAgICAgLy8gV2UgbXVzdCBub3QgbW9kaWZ5IHRoZSBET00gdHJlZSBpbiB0aGlzIGNvbnRleHQg
YnkgdGhlIHNhbWUgcmVhc29uIGFzIHNldE1lc3NhZ2UoKS4KLSAgICBtX3RpbWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUaW1lcj4oKnRoaXMsICZWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxl
VHJlZSk7CisgICAgbV90aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmVmFsaWRhdGlv
bk1lc3NhZ2U6OmRlbGV0ZUJ1YmJsZVRyZWUpOwogICAgIG1fdGltZXItPnN0YXJ0T25lU2hvdCgw
X3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGIxNjc3ODQ0MjhjM2JmZTllNmYx
NmE3Nzg0MGQzZjNiYjk3MDViOTYuLjUzYzljNTY2MDQyN2M0ODZlMzJhYmMwYzJkNjU0Y2NjNTZj
MDI4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0cnVjdCBE
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0IHsKIAogICAgIERpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGNs
aXApCiAgICAgICAgIDogY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBkaXNwbGF5TGlzdENv
bnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0
OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUsIGNsaXAs
IEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3Bs
YXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0LCBkaXNwbGF5TGlzdCwgc3RhdGUs
IGNsaXAsIEFmZmluZVRyYW5zZm9ybSgpKTsKICAgICAgICAgfSkKICAgICB7CiAgICAgfQpAQCAt
MjExOCw3ICsyMTE4LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKFVOTElLRUxZKG1fdXNl
c0Rpc3BsYXlMaXN0RHJhd2luZykpIHsKICAgICAgICAgaWYgKCFtX3JlY29yZGluZ0NvbnRleHQp
Ci0gICAgICAgICAgICBtX3JlY29yZGluZ0NvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3Bs
YXlMaXN0RHJhd2luZ0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dFN0YXRlKCksIEZsb2F0UmVjdChG
bG9hdFBvaW50Ojp6ZXJvKCksIGNhbnZhc0Jhc2UoKS5zaXplKCkpKTsKKyAgICAgICAgICAgIG1f
cmVjb3JkaW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dD4o
R3JhcGhpY3NDb250ZXh0U3RhdGUoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgY2Fu
dmFzQmFzZSgpLnNpemUoKSkpOwogICAgICAgICByZXR1cm4gJm1fcmVjb3JkaW5nQ29udGV4dC0+
Y29udGV4dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNjMxMTkxNzU3MGYyZGIyODU5NGNiYjM0
OTAyNDY5OTdiNTgzZmJlMC4uY2Q0NzIxMjYxYjJlMDIyYjU1MjVkZDNkM2NhNTQ2OWY5YzBiM2Vh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTEzNTksNyArMTM1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogI2Rl
ZmluZSBFTkFCTEVfSUZfUkVRVUVTVEVEKHR5cGUsIHZhcmlhYmxlLCBuYW1lTGl0ZXJhbCwgY2Fu
RW5hYmxlKSBcCiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgbmFtZUxpdGVy
YWwpKSB7IFwKICAgICAgICAgaWYgKCF2YXJpYWJsZSkgeyBcCi0gICAgICAgICAgICB2YXJpYWJs
ZSA9IChjYW5FbmFibGUpID8gc3RkOjptYWtlX3VuaXF1ZTx0eXBlPigqdGhpcykgOiBudWxscHRy
OyBcCisgICAgICAgICAgICB2YXJpYWJsZSA9IChjYW5FbmFibGUpID8gbWFrZVVuaXF1ZTx0eXBl
PigqdGhpcykgOiBudWxscHRyOyBcCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgIT0gbnVsbHB0
cikgXAogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxl
RXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsgXAogICAgICAgICB9IFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGUwNmJm
OTlkNTkxNTk2Mzk4MGE2MTFjMzJhODM5ZTI5N2YxMjgwNDUuLmU1ZmRlNzAzMzc0NTZhMzFlMTU3
MWVlMTBmM2ZkMjY0MmRiMDM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIFdlYkdM
RXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIG5hbWUpCiAjZGVmaW5lIEVOQUJMRV9JRl9SRVFVRVNURUQodHlwZSwgdmFyaWFibGUsIG5h
bWVMaXRlcmFsLCBjYW5FbmFibGUpIFwKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBuYW1lTGl0ZXJhbCkpIHsgXAogICAgICAgICBpZiAoIXZhcmlhYmxlKSB7IFwKLSAgICAg
ICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBzdGQ6Om1ha2VfdW5pcXVlPHR5cGU+KCp0
aGlzKSA6IG51bGxwdHI7IFwKKyAgICAgICAgICAgIHZhcmlhYmxlID0gKGNhbkVuYWJsZSkgPyBt
YWtlVW5pcXVlPHR5cGU+KCp0aGlzKSA6IG51bGxwdHI7IFwKICAgICAgICAgICAgIGlmICh2YXJp
YWJsZSAhPSBudWxscHRyKSBcCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOyBcCiAgICAgICAgIH0gXApAQCAt
MTMyLDcgKzEzMiw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV9leHRTaGFk
ZXJUZXh0dXJlTE9EID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFk
ZXJfdGV4dHVyZV9sb2QiX3MpOwotICAgICAgICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxP
RCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRoaXMpOworICAgICAg
ICAgICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IG1ha2VVbmlxdWU8RVhUU2hhZGVyVGV4
dHVyZUxPRD4oKnRoaXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRW5hYmxlRXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMTU5LDcgKzE1OSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAg
bV93ZWJnbERyYXdCdWZmZXJzID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VY
VF9kcmF3X2J1ZmZlcnMiX3MpOwotICAgICAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOworICAgICAgICAgICAg
ICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IG1ha2VVbmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRo
aXMpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRW5hYmxl
RXh0ZW5zaW9uKCp0aGlzLCBuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTcx
LDcgKzE3MSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICAgICAgbV9hbmdsZUluc3Rh
bmNlZEFycmF5cyA9IG51bGxwdHI7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0
YW5jZWRfYXJyYXlzIl9zKTsKLSAgICAgICAgICAgICAgICBtX2FuZ2xlSW5zdGFuY2VkQXJyYXlz
ID0gc3RkOjptYWtlX3VuaXF1ZTxBTkdMRUluc3RhbmNlZEFycmF5cz4oKnRoaXMpOworICAgICAg
ICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBtYWtlVW5pcXVlPEFOR0xFSW5zdGFu
Y2VkQXJyYXlzPigqdGhpcyk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRFbmFibGVFeHRlbnNpb24oKnRoaXMsIG5hbWUpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDNlY2U3ZWViNzQyZmFkYjZmZTE4YjMzZWI1YTYx
MzljZWQ0MWJhNTYuLmQxNjZmYjIzOTA3NmQzNjI2NWQ5NmM2NDVmMDcxODc1YWM4MmJiMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCkBAIC03OTksOCArNzk5LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCgpCiAgICAgbV9jb250ZXh0LT52aWV3cG9y
dCgwLCAwLCBjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVpZ2h0KCkpOwogICAgIG1f
Y29udGV4dC0+c2Npc3NvcigwLCAwLCBjYW52YXNTaXplLndpZHRoKCksIGNhbnZhc1NpemUuaGVp
Z2h0KCkpOwogCi0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKHN0ZDo6bWFr
ZV91bmlxdWU8V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7Ci0gICAg
bV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
UmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250
ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG1ha2VVbmlxdWU8V2ViR0xSZW5kZXJpbmdDb250
ZXh0TG9zdENhbGxiYWNrPih0aGlzKSk7CisgICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VD
YWxsYmFjayhtYWtlVW5pcXVlPFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxi
YWNrPih0aGlzKSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2V0dXBG
bGFncygpCkBAIC0xNTc5LDcgKzE1NzksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNvbXBpbGVTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKICAgICAgICAgUmVmPEluc3Bl
Y3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiBzdGFja1RyYWNlID0gSW5zcGVjdG9yOjpjcmVhdGVTY3Jp
cHRDYWxsU3RhY2soSlNFeGVjU3RhdGU6OmN1cnJlbnRTdGF0ZSgpKTsKIAogICAgICAgICBmb3Ig
KGF1dG8mIGVycm9yIDogZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpLnNwbGl0KCdcbicpKQotICAg
ICAgICAgICAgY2FudmFzLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6UmVuZGVyaW5n
LCBNZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiV2ViR0w6ICIgKyBlcnJv
ciwgc3RhY2tUcmFjZS5jb3B5UmVmKCkpKTsKKyAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1lbnQo
KS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVs
OjpFcnJvciwgIldlYkdMOiAiICsgZXJyb3IsIHN0YWNrVHJhY2UuY29weVJlZigpKSk7CiAgICAg
fQogfQogCkBAIC01ODA4LDkgKzU4MDgsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnByaW50VG9Db25zb2xlKE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJgogICAg
IC8vIEVycm9yIG1lc3NhZ2VzIGNhbiBvY2N1ciBkdXJpbmcgZnVuY3Rpb24gY2FsbHMsIHNvIHNo
b3cgc3RhY2sgdHJhY2VzIGZvciB0aGVtLgogICAgIGlmIChsZXZlbCA9PSBNZXNzYWdlTGV2ZWw6
OkVycm9yKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4gc3RhY2tU
cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJy
ZW50U3RhdGUoKSk7Ci0gICAgICAgIGNvbnNvbGVNZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3Nh
Z2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlLCBXVEZNb3ZlKHN0YWNrVHJhY2UpKTsKKyAgICAg
ICAgY29uc29sZU1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3Nh
Z2UsIFdURk1vdmUoc3RhY2tUcmFjZSkpOwogICAgIH0gZWxzZQotICAgICAgICBjb25zb2xlTWVz
c2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6UmVuZGVyaW5nLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZSk7Cisg
ICAgICAgIGNvbnNvbGVNZXNzYWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPihNZXNzYWdlU291cmNlOjpSZW5kZXJpbmcsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBt
ZXNzYWdlKTsKIAogICAgIGF1dG8qIGNhbnZhcyA9IGh0bWxDYW52YXMoKTsKICAgICBpZiAoY2Fu
dmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNj
YW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIu
Y3BwCmluZGV4IGU4NTkwY2NjNjk3MjhhZjM5MzAxZDNhZThkODk4OGY1YzE1YTRiMmEuLmFlZmU0
NTdmNGVmZjA0MzY1NzYzY2IyNmY3MTc4NDYzZTMyZTFkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTIwMSw3ICsyMDEsNyBA
QCB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAgICAgIGlmICghdXJsLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2Nhbm5lciB2aWEgc2Nh
bigpOiB3aXRob3V0IGl0IHdlIHdpbGwgZ2V0IHJlbGF0aXZlIFVSTHMgd3JvbmcuCiAgICAgICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGluIHRo
ZSBwcmVsb2FkIHJlcXVlc3Q/Ci0gICAgICAgICAgICBtX3JlcXVlc3RzLT5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxQcmVsb2FkUmVxdWVzdD4oImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENh
Y2hlZFJlc291cmNlOjpUeXBlOjpDU1NTdHlsZVNoZWV0LCBTdHJpbmcoKSwgUHJlbG9hZFJlcXVl
c3Q6Ok1vZHVsZVNjcmlwdDo6Tm8sIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZykpOworICAg
ICAgICAgICAgbV9yZXF1ZXN0cy0+YXBwZW5kKG1ha2VVbmlxdWU8UHJlbG9hZFJlcXVlc3Q+KCJj
c3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Q1NTU3R5bGVT
aGVldCwgU3RyaW5nKCksIFByZWxvYWRSZXF1ZXN0OjpNb2R1bGVTY3JpcHQ6Ok5vLCBSZWZlcnJl
clBvbGljeTo6RW1wdHlTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAgICBtX3N0YXRlID0gSW5p
dGlhbDsKICAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJ1bGUs
ICJjaGFyc2V0IikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggNTFiYWU0YzIxY2Y5NDBkY2Q4YzZkMzIwYmM0ZGJkNjYy
NmJlN2Q5Zi4uOWFjNDQ0ZWYwYTY3MWY4YTQ3Njk5NTdhZTMyMjJiZDhkMTAwN2Q5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cApAQCAtNTAzLDcgKzUwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0aW9uRGF0YT4gSFRNTENvbnN0cnVjdGlvblNpdGU6Omluc2VydEhUTUxFCiAgICAgSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlKiBlbGVtZW50SW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICBSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVu
dEludGVyZmFjZSh0b2tlbiwgJmVsZW1lbnRJbnRlcmZhY2UpOwogICAgIGlmIChVTkxJS0VMWShl
bGVtZW50SW50ZXJmYWNlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9t
RWxlbWVudENvbnN0cnVjdGlvbkRhdGE+KCplbGVtZW50SW50ZXJmYWNlLCB0b2tlbi5uYW1lKCks
IFdURk1vdmUodG9rZW4uYXR0cmlidXRlcygpKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPigqZWxlbWVudEludGVyZmFjZSwgdG9rZW4u
bmFtZSgpLCBXVEZNb3ZlKHRva2VuLmF0dHJpYnV0ZXMoKSkpOwogICAgIGF0dGFjaExhdGVyKGN1
cnJlbnROb2RlKCksICplbGVtZW50KTsKICAgICBtX29wZW5FbGVtZW50cy5wdXNoKEhUTUxTdGFj
a0l0ZW06OmNyZWF0ZShlbGVtZW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUodG9rZW4pKSk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA0ZmY0ZTJiODc4OGE5MTliZjQyZDE3YWQ5ZmQ2
NTFiOWIwM2FkMTliLi5kZDllYTA0YzZmNTAwYzg2NGI4Yzk0YzE5MzgzNzg3N2FmZmRlNWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAKQEAgLTUzLDExICs1MywxMSBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBh
cnNlcihIVE1MRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyKGRvY3VtZW50KQogICAgICwgbV9vcHRpb25zKGRvY3VtZW50KQogICAgICwgbV90b2tlbml6
ZXIobV9vcHRpb25zKQotICAgICwgbV9zY3JpcHRSdW5uZXIoc3RkOjptYWtlX3VuaXF1ZTxIVE1M
U2NyaXB0UnVubmVyPihkb2N1bWVudCwgc3RhdGljX2Nhc3Q8SFRNTFNjcmlwdFJ1bm5lckhvc3Qm
PigqdGhpcykpKQotICAgICwgbV90cmVlQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxUcmVl
QnVpbGRlcj4oKnRoaXMsIGRvY3VtZW50LCBwYXJzZXJDb250ZW50UG9saWN5KCksIG1fb3B0aW9u
cykpCi0gICAgLCBtX3BhcnNlclNjaGVkdWxlcihzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQYXJzZXJT
Y2hlZHVsZXI+KCp0aGlzKSkKKyAgICAsIG1fc2NyaXB0UnVubmVyKG1ha2VVbmlxdWU8SFRNTFNj
cmlwdFJ1bm5lcj4oZG9jdW1lbnQsIHN0YXRpY19jYXN0PEhUTUxTY3JpcHRSdW5uZXJIb3N0Jj4o
KnRoaXMpKSkKKyAgICAsIG1fdHJlZUJ1aWxkZXIobWFrZVVuaXF1ZTxIVE1MVHJlZUJ1aWxkZXI+
KCp0aGlzLCBkb2N1bWVudCwgcGFyc2VyQ29udGVudFBvbGljeSgpLCBtX29wdGlvbnMpKQorICAg
ICwgbV9wYXJzZXJTY2hlZHVsZXIobWFrZVVuaXF1ZTxIVE1MUGFyc2VyU2NoZWR1bGVyPigqdGhp
cykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShkb2N1bWVudCkKLSAgICAsIG1fcHJlbG9h
ZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRNTFJlc291cmNlUHJlbG9hZGVyPihkb2N1bWVudCkpCisg
ICAgLCBtX3ByZWxvYWRlcihtYWtlVW5pcXVlPEhUTUxSZXNvdXJjZVByZWxvYWRlcj4oZG9jdW1l
bnQpKQogewogfQogCkBAIC03MCw3ICs3MCw3IEBAIGlubGluZSBIVE1MRG9jdW1lbnRQYXJzZXI6
OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVuCiAg
ICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQuZG9jdW1lbnQoKSwgcmF3UG9s
aWN5KQogICAgICwgbV9vcHRpb25zKGZyYWdtZW50LmRvY3VtZW50KCkpCiAgICAgLCBtX3Rva2Vu
aXplcihtX29wdGlvbnMpCi0gICAgLCBtX3RyZWVCdWlsZGVyKHN0ZDo6bWFrZV91bmlxdWU8SFRN
TFRyZWVCdWlsZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJDb250
ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCisgICAgLCBtX3RyZWVCdWlsZGVyKG1ha2VVbmlxdWU8
SFRNTFRyZWVCdWlsZGVyPigqdGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBwYXJzZXJD
b250ZW50UG9saWN5KCksIG1fb3B0aW9ucykpCiAgICAgLCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZShm
cmFnbWVudC5kb2N1bWVudCgpKQogewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctaHRtbC1mcmFnbWVudHMKQEAgLTMxNSw3
ICszMTUsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJv
bm91c01vZGUgbW9kZSkKICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CiAgICAgICAg
IEFTU0VSVChtX3Rva2VuaXplci5pc0luRGF0YVN0YXRlKCkpOwogICAgICAgICBpZiAoIW1fcHJl
bG9hZFNjYW5uZXIpIHsKLSAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5lcj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwg
ZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgICAgICAgICBtX3ByZWxvYWRT
Y2FubmVyID0gbWFrZVVuaXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1l
bnQoKS0+dXJsKCksIGRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICAg
ICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOwogICAg
ICAgICB9CiAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKm1fcHJlbG9hZGVyLCAqZG9j
dW1lbnQoKSk7CkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omlu
c2VydChTZWdtZW50ZWRTdHJpbmcmJiBzb3VyY2UpCiAgICAgICAgIC8vIENoZWNrIHRoZSBkb2N1
bWVudC53cml0ZSgpIG91dHB1dCB3aXRoIGEgc2VwYXJhdGUgcHJlbG9hZCBzY2FubmVyIGFzCiAg
ICAgICAgIC8vIHRoZSBtYWluIHNjYW5uZXIgY2FuJ3QgZGVhbCB3aXRoIGluc2VydGlvbnMuCiAg
ICAgICAgIGlmICghbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lcikKLSAgICAgICAgICAgIG1faW5z
ZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxQcmVsb2FkU2Nhbm5l
cj4obV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CisgICAgICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gbWFrZVVu
aXF1ZTxIVE1MUHJlbG9hZFNjYW5uZXI+KG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCksIGRv
Y3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBtX2luc2VydGlvblByZWxv
YWRTY2FubmVyLT5hcHBlbmRUb0VuZChzb3VyY2UpOwogICAgICAgICBtX2luc2VydGlvblByZWxv
YWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50U3RhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKaW5kZXggMzBj
NWI0NmRmMTAzZGJkZjZmNGI3Y2U0MDljYzNhYTE2YzU0NjAxMi4uNmVmMTcxMmI5ZDYzYjcxYWNi
N2MxNjlmNjJiNDljODJmMzEwNTgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEhUTUxFbGVt
ZW50U3RhY2s6Omluc2VydEFib3ZlKFJlZjxIVE1MU3RhY2tJdGVtPiYmIGl0ZW0sIEVsZW1lbnRS
ZWNvcmQmIHJlYwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgKyttX3N0YWNrRGVw
dGg7Ci0gICAgICAgIHJlY29yZEFib3ZlLT5zZXROZXh0KHN0ZDo6bWFrZV91bmlxdWU8RWxlbWVu
dFJlY29yZD4oV1RGTW92ZShpdGVtKSwgcmVjb3JkQWJvdmUtPnJlbGVhc2VOZXh0KCkpKTsKKyAg
ICAgICAgcmVjb3JkQWJvdmUtPnNldE5leHQobWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZN
b3ZlKGl0ZW0pLCByZWNvcmRBYm92ZS0+cmVsZWFzZU5leHQoKSkpOwogICAgICAgICByZWNvcmRB
Ym92ZS0+bmV4dCgpLT5lbGVtZW50KCkuYmVnaW5QYXJzaW5nQ2hpbGRyZW4oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6
OnB1c2hDb21tb24oUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSkKICAgICBBU1NFUlQobV9yb290
Tm9kZSk7CiAKICAgICArK21fc3RhY2tEZXB0aDsKLSAgICBtX3RvcCA9IHN0ZDo6bWFrZV91bmlx
dWU8RWxlbWVudFJlY29yZD4oV1RGTW92ZShpdGVtKSwgV1RGTW92ZShtX3RvcCkpOworICAgIG1f
dG9wID0gbWFrZVVuaXF1ZTxFbGVtZW50UmVjb3JkPihXVEZNb3ZlKGl0ZW0pLCBXVEZNb3ZlKG1f
dG9wKSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cG9wQ29tbW9uKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDUz
YTE3MmQzM2FmY2RhOGZmODhkMzQ0ZDljMGVmMDkwM2NkZWNjOTIuLjMzZDdiM2JiMDhiNjUyZDBj
ZDY5YmNlZGYxZjg2MDYzMWFmYWExNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIFRv
a2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lciB7CiAgICAgICAgIGlmICghTGlua0xv
YWRlcjo6aXNTdXBwb3J0ZWRUeXBlKHR5cGUudmFsdWUoKSwgbV90eXBlQXR0cmlidXRlKSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6
bWFrZV91bmlxdWU8UHJlbG9hZFJlcXVlc3Q+KGluaXRpYXRvckZvcihtX3RhZ0lkKSwgbV91cmxU
b0xvYWQsIHByZWRpY3RlZEJhc2VVUkwsIHR5cGUudmFsdWUoKSwgbV9tZWRpYUF0dHJpYnV0ZSwg
bV9tb2R1bGVTY3JpcHQsIG1fcmVmZXJyZXJQb2xpY3kpOworICAgICAgICBhdXRvIHJlcXVlc3Qg
PSBtYWtlVW5pcXVlPFByZWxvYWRSZXF1ZXN0Pihpbml0aWF0b3JGb3IobV90YWdJZCksIG1fdXJs
VG9Mb2FkLCBwcmVkaWN0ZWRCYXNlVVJMLCB0eXBlLnZhbHVlKCksIG1fbWVkaWFBdHRyaWJ1dGUs
IG1fbW9kdWxlU2NyaXB0LCBtX3JlZmVycmVyUG9saWN5KTsKICAgICAgICAgcmVxdWVzdC0+c2V0
Q3Jvc3NPcmlnaW5Nb2RlKG1fY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICAgICAgcmVxdWVzdC0+c2V0
Tm9uY2UobV9ub25jZUF0dHJpYnV0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRv
a2VuLmgKaW5kZXggZjcxYjIxZDI3ODk1ZTU3OGFiNDdmNWNmNTQwMjU4M2UzNjEyMWQwMi4uM2Y3
NDZkYzZkNjY3YzQzNzExYjY4ZDA5YjQyMDJkMjNmZjBjMDg4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFRva2VuLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBpbmxpbmUgdm9pZCBIVE1M
VG9rZW46OmJlZ2luRE9DVFlQRSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmluaXRpYWxp
emVkKTsKICAgICBtX3R5cGUgPSBET0NUWVBFOwotICAgIG1fZG9jdHlwZURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPERvY3R5cGVEYXRhPigpOworICAgIG1fZG9jdHlwZURhdGEgPSBtYWtlVW5pcXVl
PERvY3R5cGVEYXRhPigpOwogfQogCiBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRE9DVFlQ
RShVQ2hhciBjaGFyYWN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3Iu
Y3BwCmluZGV4IGFjNmU3OTQ0MzAwNzAzNjQyMWViMTZkZjgzYTkwZDNkMjc3MmY4NTYuLjA2MWQ5
NTY3Yjc4NGQ5YjBiYWNmM2Y2ZGI5Y2RlNWE4MDZiMDFjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFhTU0luZm8+IFhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVx
dWVzdCYgcmVxdWUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGRpZEJsb2Nr
RW50aXJlUGFnZSA9IG1feHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90ZWN0aW9uRGlzcG9zaXRpb246
OkJsb2NrRW5hYmxlZDsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxYU1NJbmZvPihtX2Rv
Y3VtZW50VVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UsIG1fZGlkU2VuZFZhbGlkWFNTUHJvdGVjdGlv
bkhlYWRlcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8WFNTSW5mbz4obV9kb2N1bWVudFVSTCwg
ZGlkQmxvY2tFbnRpcmVQYWdlLCBtX2RpZFNlbmRWYWxpZFhTU1Byb3RlY3Rpb25IZWFkZXIpOwog
fQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclN0YXJ0VG9rZW4oY29uc3QgRmlsdGVyVG9rZW5S
ZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzEyLDcgKzcxMiw3IEBAIFN1ZmZpeFRyZWU8QVNDSUlDb2Rl
Ym9vaz4qIFhTU0F1ZGl0b3I6OmRlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWUoKQogICAgIGNvbnN0
IHVuc2lnbmVkIHN1ZmZpeFRyZWVEZXB0aCA9IDU7CiAKICAgICBpZiAoIW1fZGVjb2RlZEhUVFBC
b2R5U3VmZml4VHJlZSAmJiBtX2RlY29kZWRIVFRQQm9keS5sZW5ndGgoKSA+PSBtaW5pbXVtTGVu
Z3RoRm9yU3VmZml4VHJlZSkKLSAgICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlID0g
c3RkOjptYWtlX3VuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQ
Qm9keSwgc3VmZml4VHJlZURlcHRoKTsKKyAgICAgICAgbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhU
cmVlID0gbWFrZVVuaXF1ZTxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJvb2s+PihtX2RlY29kZWRIVFRQ
Qm9keSwgc3VmZml4VHJlZURlcHRoKTsKICAgICByZXR1cm4gbV9kZWNvZGVkSFRUUEJvZHlTdWZm
aXhUcmVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAzYTYzN2RhZWYwMTI0ZTJlNGVk
MzM2YjY2Mzc1MmQwMDIyYjViZTAxLi5kNTY2YmNjNzk0YWE3MjRhYmU2MGEwODBhM2YyY2Y5NTFm
NDUzN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCBSZW5kZXJUZXh0Q29u
dHJvbElubmVyQmxvY2sqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBj
b25zdAogT3B0aW9uYWw8RWxlbWVudFN0eWxlPiBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6
OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxl
KiBzaGFkb3dIb3N0U3R5bGUpCiB7CiAgICAgYXV0byBzdHlsZSA9IGRvd25jYXN0PEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgq
c2hhZG93SG9zdFN0eWxlKTsKLSAgICByZXR1cm4gRWxlbWVudFN0eWxlKHN0ZDo6bWFrZV91bmlx
dWU8UmVuZGVyU3R5bGU+KFdURk1vdmUoc3R5bGUpKSk7CisgICAgcmV0dXJuIEVsZW1lbnRTdHls
ZShtYWtlVW5pcXVlPFJlbmRlclN0eWxlPihXVEZNb3ZlKHN0eWxlKSkpOwogfQogCiAvLyBNQVJL
OiBUZXh0Q29udHJvbFBsYWNlaG9sZGVyRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5jcHAKaW5kZXggZTQwMjAwYTlhN2Ey
MjVkZGZkODc0NGQ4YzkzYmRlNjkwOTY0NzAwOS4uNDkzNGQ3MjljMTk4ZDA4MDU5YWM4YzlmMGIx
NzRhOTVlNzZmNzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRHZW5lcmljVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZEdlbmVyaWNUZXh0VHJhY2suY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYgY3Vl
KQogV2ViVlRUUGFyc2VyJiBJbmJhbmRHZW5lcmljVGV4dFRyYWNrOjpwYXJzZXIoKQogewogICAg
IGlmICghbV93ZWJWVFRQYXJzZXIpCi0gICAgICAgIG1fd2ViVlRUUGFyc2VyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRo
aXMpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgICAgICBtX3dlYlZUVFBhcnNlciA9
IG1ha2VVbmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQq
Pih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gKm1fd2ViVlRU
UGFyc2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFu
ZFdlYlZUVFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdl
YlZUVFRleHRUcmFjay5jcHAKaW5kZXggODU1YmIyMzkyN2ViMTBhMzVhNTlkMTJiZTBkMjM1YTcz
Y2FiYzEwZS4uMTBmYWExMmY5MGI0NjBiNTA1NmYyNTY3Y2MyZDk4MTI3ZDhmYWE4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNw
cApAQCAtNTQsNyArNTQsNyBAQCBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6On5JbmJhbmRXZWJWVFRU
ZXh0VHJhY2soKSA9IGRlZmF1bHQ7CiBXZWJWVFRQYXJzZXImIEluYmFuZFdlYlZUVFRleHRUcmFj
azo6cGFyc2VyKCkKIHsKICAgICBpZiAoIW1fd2ViVlRUUGFyc2VyKQotICAgICAgICBtX3dlYlZU
VFBhcnNlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJW
VFRQYXJzZXJDbGllbnQqPih0aGlzKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAg
ICAgbV93ZWJWVFRQYXJzZXIgPSBtYWtlVW5pcXVlPFdlYlZUVFBhcnNlcj4oc3RhdGljX2Nhc3Q8
V2ViVlRUUGFyc2VyQ2xpZW50Kj4odGhpcyksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgcmV0dXJuICptX3dlYlZUVFBhcnNlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCA4ZjI5YzdmMTY3OWEwZmEyOTE4ZGVj
ZmE1MTNlMmQ4MDI3MWEzNWUyLi43YTFlMWJjNDY5MWIyMTE2ODhjM2NmNWRhNjE5YWM2MWRiZDZm
ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNr
LmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJG
aXJlZCgpCiAgICAgLy8gNC4gRG93bmxvYWQ6IElmIFVSTCBpcyBub3QgdGhlIGVtcHR5IHN0cmlu
ZywgcGVyZm9ybSBhIHBvdGVudGlhbGx5IENPUlMtZW5hYmxlZCBmZXRjaCBvZiBVUkwsIHdpdGgg
dGhlCiAgICAgLy8gbW9kZSBiZWluZyB0aGUgc3RhdGUgb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBj
cm9zc29yaWdpbiBjb250ZW50IGF0dHJpYnV0ZSwgdGhlIG9yaWdpbiBiZWluZyB0aGUKICAgICAv
LyBvcmlnaW4gb2YgdGhlIG1lZGlhIGVsZW1lbnQncyBEb2N1bWVudCwgYW5kIHRoZSBkZWZhdWx0
IG9yaWdpbiBiZWhhdmlvdXIgc2V0IHRvIGZhaWwuCi0gICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRleHRUcmFja0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50
Jj4oKnRoaXMpLCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tF
bGVtZW50LT5kb2N1bWVudCgpKSk7CisgICAgbV9sb2FkZXIgPSBtYWtlVW5pcXVlPFRleHRUcmFj
a0xvYWRlcj4oc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTG9hZGVyQ2xpZW50Jj4oKnRoaXMpLCBzdGF0
aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oJm1fdHJhY2tFbGVtZW50LT5kb2N1bWVu
dCgpKSk7CiAgICAgaWYgKCFtX2xvYWRlci0+bG9hZChtX3VybCwgKm1fdHJhY2tFbGVtZW50KSkK
ICAgICAgICAgbV90cmFja0VsZW1lbnQtPmRpZENvbXBsZXRlTG9hZChIVE1MVHJhY2tFbGVtZW50
OjpGYWlsdXJlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJSG9zdC5jcHAKaW5kZXggMDMxMDgwZTFhYjY2ZDMyY2M5YzA3MTc4ZjAyZjkzNTIzYmM3MDZi
MC4uOTAyOWI5MmQ4YjgzZjJkN2JlZDZkOGU1NDU3NmMwYTE2OGNhNTI1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgUmVmPENvbW1hbmRMaW5lQVBJSG9zdD4gQ29tbWFuZExpbmVBUElIb3N0OjpjcmVhdGUo
KQogfQogCiBDb21tYW5kTGluZUFQSUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCgpCi0gICAgOiBt
X2luc3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpKQor
ICAgIDogbV9pbnNwZWN0ZWRPYmplY3QobWFrZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKSkK
IHsKIH0KIApAQCAtMTk2LDcgKzE5Niw3IEBAIEpTVmFsdWUgQ29tbWFuZExpbmVBUElIb3N0Ojp3
cmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB2b2lk
IENvbW1hbmRMaW5lQVBJSG9zdDo6Y2xlYXJBbGxXcmFwcGVycygpCiB7CiAgICAgbV93cmFwcGVy
cy5jbGVhckFsbFdyYXBwZXJzKCk7Ci0gICAgbV9pbnNwZWN0ZWRPYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOworICAgIG1faW5zcGVjdGVkT2JqZWN0ID0gbWFr
ZVVuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA2YzMxZTQ5OGU0MzRk
MzAwYjBmMWM2ZWFiODQzNDY3NzZjZjBhMmZjLi44Mzg5MDhkYzkzNmVmYTZiYTI2Yzc5MTY3MTQ0
ZGI3ZGU5ZTJhZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAt
ODksNyArODksNyBAQCBjbGFzcyBET01FZGl0b3I6Okluc2VydEJlZm9yZUFjdGlvbiBmaW5hbCA6
IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHBlcmZvcm0oKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+cGFyZW50Tm9kZSgp
KSB7Ci0gICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZW1vdmVDaGlsZEFjdGlvbj4oKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUpOworICAgICAg
ICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+
KCptX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlKTsKICAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gbV9yZW1vdmVDaGlsZEFjdGlvbi0+cGVyZm9ybSgpOwogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKTsKQEAgLTM4NSwyNyArMzg1LDI3IEBAIERPTUVkaXRvcjo6fkRPTUVkaXRvcigp
ID0gZGVmYXVsdDsKIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjppbnNlcnRCZWZvcmUo
Tm9kZSYgcGFyZW50Tm9kZSwgUmVmPE5vZGU+JiYgbm9kZSwgTm9kZSogYW5jaG9yTm9kZSkKIHsK
LSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRCZWZv
cmVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKKyAgICBy
ZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBh
cmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gRE9NRWRpdG9yOjpyZW1vdmVDaGlsZChOb2RlJiBwYXJlbnROb2RlLCBOb2RlJiBub2Rl
KQogewotICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92
ZUNoaWxkQWN0aW9uPihwYXJlbnROb2RlLCBub2RlKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5w
ZXJmb3JtKG1ha2VVbmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUsIG5vZGUpKTsK
IH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUoRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAg
IHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldEF0dHJpYnV0ZUFj
dGlvbj4oZWxlbWVudCwgbmFtZSwgdmFsdWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZv
cm0obWFrZVVuaXF1ZTxTZXRBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUsIHZhbHVlKSk7
CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6cmVtb3ZlQXR0cmlidXRlKEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5
LnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQs
IG5hbWUpKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0obWFrZVVuaXF1ZTxSZW1vdmVB
dHRyaWJ1dGVBY3Rpb24+KGVsZW1lbnQsIG5hbWUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
RE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBO
b2RlKiYgbmV3Tm9kZSkKIHsKLSAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2V0
T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VVbmlx
dWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKICAgICBhdXRvJiByYXdBY3Rpb24g
PSAqYWN0aW9uOwogICAgIGF1dG8gcmVzdWx0ID0gbV9oaXN0b3J5LnBlcmZvcm0oV1RGTW92ZShh
Y3Rpb24pKTsKICAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTQxNSwyMiArNDE1
LDIyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5v
ZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSomCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVk
aXRvcjo6aW5zZXJ0QWRqYWNlbnRIVE1MKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
d2hlcmUsIGNvbnN0IFN0cmluZyYgaHRtbCkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZv
cm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRBZGphY2VudEhUTUxBY3Rpb24+KGVsZW1lbnQsIHdo
ZXJlLCBodG1sKSk7CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8SW5z
ZXJ0QWRqYWNlbnRIVE1MQWN0aW9uPihlbGVtZW50LCB3aGVyZSwgaHRtbCkpOwogfQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQoVGV4dCYgdGV4dE5vZGUs
IGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBlcmZvcm0oc3Rk
OjptYWtlX3VuaXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCkpOwor
ICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJlcGxhY2VXaG9sZVRleHRB
Y3Rpb24+KHRleHROb2RlLCB0ZXh0KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUVkaXRv
cjo6cmVwbGFjZUNoaWxkKE5vZGUmIHBhcmVudE5vZGUsIFJlZjxOb2RlPiYmIG5ld05vZGUsIE5v
ZGUmIG9sZE5vZGUpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKHN0ZDo6bWFrZV91
bmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgV1RGTW92ZShuZXdOb2Rl
KSwgb2xkTm9kZSkpOworICAgIHJldHVybiBtX2hpc3RvcnkucGVyZm9ybShtYWtlVW5pcXVlPFJl
cGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdURk1vdmUobmV3Tm9kZSksIG9sZE5v
ZGUpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRE9NRWRpdG9yOjpzZXROb2RlVmFsdWUoTm9k
ZSYgbm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LnBl
cmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXROb2RlVmFsdWVBY3Rpb24+KG5vZGUsIHZhbHVlKSk7
CisgICAgcmV0dXJuIG1faGlzdG9yeS5wZXJmb3JtKG1ha2VVbmlxdWU8U2V0Tm9kZVZhbHVlQWN0
aW9uPihub2RlLCB2YWx1ZSkpOwogfQogCiBzdGF0aWMgYm9vbCBwb3B1bGF0ZUVycm9yU3RyaW5n
KEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0LCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IGNjNWUx
MjNiNTQxYzlmMGQ0ZGY0YmE4ZTgyNzVmNTM1MmRkOWE5ZmYuLmYyZTU4NmZlNDMwYjhiY2U4MjFi
ZDdlMjdmM2VmN2ZjMjVhOTczNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Q
YXRjaFN1cHBvcnQuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5n
VG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8RE9NUGF0Y2hTdXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0
KE5vZGUmIG5vZGUsIFVudXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKIHsKLSAgICBhdXRv
IGRpZ2VzdCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlnZXN0PigpOworICAgIGF1dG8gZGlnZXN0ID0g
bWFrZVVuaXF1ZTxEaWdlc3Q+KCk7CiAgICAgZGlnZXN0LT5ub2RlID0gJm5vZGU7CiAgICAgU0hB
MSBzaGExOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggNTIwMzcwNmI1M2IzMmIwYmE0ZjBlZDRkNGJhNDAwYjZjNzliNWUxNS4u
NjNmZjNhYjYyM2E0NDZjZDYyMGVlNDdlMzkyMDU1Y2VhNTFhODc2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtOTMsMTAgKzkz
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDbGllbnQpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50
czo6Y3JlYXRlKCp0aGlzKSkKLSAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKHN0ZDo6bWFr
ZV91bmlxdWU8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyPigqdGhpcywgV2ViSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpjcmVhdGUoKSkpCisgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihtYWtlVW5p
cXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdlYkluamVjdGVkU2NyaXB0SG9z
dDo6Y3JlYXRlKCkpKQogICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3Jl
YXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVh
dGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVmKCkpKQotICAgICwgbV9vdmVybGF5KHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yT3ZlcmxheT4ocGFnZSwgaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAs
IG1fb3ZlcmxheShtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk+KHBhZ2UsIGluc3BlY3RvckNs
aWVudCkpCiAgICAgLCBtX2V4ZWN1dGlvblN0b3B3YXRjaChTdG9wd2F0Y2g6OmNyZWF0ZSgpKQog
ICAgICwgbV9zY3JpcHREZWJ1Z1NlcnZlcihwYWdlKQogICAgICwgbV9wYWdlKHBhZ2UpCkBAIC0x
MDYsNyArMTA2LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQ
YWdlJiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKIAogICAgIGF1dG8gcGFnZUNv
bnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7CiAKLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0
ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRleHQpOworICAgIGF1dG8g
Y29uc29sZUFnZW50ID0gbWFrZVVuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFn
ZW50LmdldCgpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsK
IH0KQEAgLTE1MywzNyArMTUzLDM3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRl
TGF6eUFnZW50cygpCiAgICAgZW5zdXJlSW5zcGVjdG9yQWdlbnQoKTsKICAgICBlbnN1cmVQYWdl
QWdlbnQoKTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSdW50
aW1lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8
UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKIAotICAgIGF1dG8gZGVidWdnZXJBZ2Vu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0KTsKKyAg
ICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBtYWtlVW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihwYWdl
Q29udGV4dCk7CiAgICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gZGVidWdnZXJBZ2VudC5nZXQo
KTsKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFnZW50KSk7CiAKLSAgICBt
X2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlTmV0d29ya0FnZW50PihwYWdlQ29u
dGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckNT
U0FnZW50PihwYWdlQ29udGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPFBh
Z2VOZXR3b3JrQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VV
bmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAgICAgZW5zdXJlRE9NQWdl
bnQoKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOwotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsK
LSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ+KHBhZ2VDb250ZXh0KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwg
ZGVidWdnZXJBZ2VudFB0cikpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5h
cHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4ocGFnZUNvbnRleHQpKTsK
KyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFn
ZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlx
dWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQo
bWFrZVVuaXF1ZTxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4ocGFnZUNvbnRleHQpKTsKICNlbmRp
ZgogCi0gICAgYXV0byBzY3JpcHRQcm9maWxlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgYXV0byBzY3Jp
cHRQcm9maWxlckFnZW50UHRyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFn
ZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50KHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCkpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHNjcmlwdFByb2ZpbGVyQWdlbnRQdHIpKTsKIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9VU0FHRSkKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvck1lbW9yeUFnZW50PihwYWdlQ29u
dGV4dCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckNQVVByb2Zp
bGVyQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8
SW5zcGVjdG9yTWVtb3J5QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CiAjZW5kaWYKLSAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlSGVhcEFnZW50PihwYWdlQ29udGV4dCkpOwot
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VBdWRpdEFnZW50PihwYWdl
Q29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckNhbnZhc0FnZW50PihwYWdlQ29udGV4dCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAgbV9h
Z2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8UGFnZUhlYXBBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxQYWdlQXVkaXRBZ2VudD4ocGFnZUNvbnRleHQp
KTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JDYW52YXNBZ2VudD4o
cGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxJbnNwZWN0b3JU
aW1lbGluZUFnZW50PihwYWdlQ29udGV4dCkpOwogCiAgICAgaWYgKGF1dG8mIGNvbW1hbmRMaW5l
QVBJSG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkK
ICAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5pbml0KG1faW5zdHJ1bWVudGluZ0FnZW50cy5j
b3B5UmVmKCkpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIEluc3BlY3RvckFnZW50JiBJbnNwZWN0b3JD
b250cm9sbGVyOjplbnN1cmVJbnNwZWN0b3JBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2luc3BlY3Rv
ckFnZW50KSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbnRleHQgPSBwYWdlQWdlbnRDb250ZXh0KCk7
Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rv
ckFnZW50PihwYWdlQ29udGV4dCk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yQWdlbnQgPSBtYWtl
VW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgICAgIG1faW5zcGVjdG9y
QWdlbnQgPSBpbnNwZWN0b3JBZ2VudC5nZXQoKTsKICAgICAgICAgbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5zZXRJbnNwZWN0b3JBZ2VudChtX2luc3BlY3RvckFnZW50KTsKICAgICAgICAgbV9hZ2Vu
dHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBJ
bnNwZWN0b3JET01BZ2VudCYgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlRE9NQWdlbnQoKQog
ewogICAgIGlmICghbV9pbnNwZWN0b3JET01BZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250
ZXh0ID0gcGFnZUFnZW50Q29udGV4dCgpOwotICAgICAgICBhdXRvIGRvbUFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIG1fb3ZlcmxheS5nZXQo
KSk7CisgICAgICAgIGF1dG8gZG9tQWdlbnQgPSBtYWtlVW5pcXVlPEluc3BlY3RvckRPTUFnZW50
PihwYWdlQ29udGV4dCwgbV9vdmVybGF5LmdldCgpKTsKICAgICAgICAgbV9pbnNwZWN0b3JET01B
Z2VudCA9IGRvbUFnZW50LmdldCgpOwogICAgICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShk
b21BZ2VudCkpOwogICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCBJbnNwZWN0b3JQYWdlQWdlbnQm
IEluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVBhZ2VBZ2VudCgpCiB7CiAgICAgaWYgKCFtX2lu
c3BlY3RvclBhZ2VBZ2VudCkgewogICAgICAgICBhdXRvIHBhZ2VDb250ZXh0ID0gcGFnZUFnZW50
Q29udGV4dCgpOwotICAgICAgICBhdXRvIHBhZ2VBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwgbV9pbnNwZWN0b3JDbGllbnQsIG1fb3Zlcmxh
eS5nZXQoKSk7CisgICAgICAgIGF1dG8gcGFnZUFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JQ
YWdlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2luc3BlY3RvckNsaWVudCwgbV9vdmVybGF5LmdldCgp
KTsKICAgICAgICAgbV9pbnNwZWN0b3JQYWdlQWdlbnQgPSBwYWdlQWdlbnQuZ2V0KCk7CiAgICAg
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHBhZ2VBZ2VudCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAppbmRleCAwMGQ1ZjE4NTJj
ZWJhMjcwYzNhZjgxYzEzMjA5MDA1ZGE3YjExOGE4Li5jODEwM2RkN2RiYjgzMjBlYWIyZTZhZDVl
MzJjMmQ1MmQ3MmIwNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckhpc3RvcnkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3BlY3Rv
ckhpc3Rvcnk6OnBlcmZvcm0oc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4gYWN0aW9uKQogCiB2b2lk
IEluc3BlY3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJsZVN0YXRlKCkKIHsKLSAgICBwZXJmb3JtKHN0
ZDo6bWFrZV91bmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCkpOworICAgIHBlcmZvcm0obWFrZVVu
aXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEluc3Bl
Y3Rvckhpc3Rvcnk6OnVuZG8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDE0OTVmMzllMmE0NWUzYzcyYTk2MTRhZmY1NzllNjRk
ZGY1NWMwYjUuLmRiZTU1NTNmMDEyMTczNGE5NjU5MTM4NDZhYWQ0NmJmMjc3OTczZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIFBhcnNlZFN0eWxlU2hlZXQ6OnNldFNvdXJjZURhdGEoc3Rk
Ojp1bmlxdWVfcHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4gc291cmNlRAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9zb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNl
RGF0YUxpc3Q+KCk7CisgICAgbV9zb3VyY2VEYXRhID0gbWFrZVVuaXF1ZTxSdWxlU291cmNlRGF0
YUxpc3Q+KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiB0
byByZXRhaW4gdGhlIG9yaWdpbmFsIGZsYXQgc291cmNlRGF0YSBzdHJ1Y3R1cmUKICAgICAvLyBj
b250YWluaW5nIG9ubHkgc3R5bGUgcnVsZXMsIGV2ZW4gdGhvdWdoIENTU1BhcnNlciBub3cgcHJv
dmlkZXMgdGhlIGZ1bGwgcnVsZSBzb3VyY2UgZGF0YSB0cmVlLgpAQCAtMTMyMCw3ICsxMzIwLDcg
QEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRl
bnRzOjpjcmVhdGUoKTsKLSAgICBhdXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtl
X3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CisgICAgYXV0byBydWxlU291cmNlRGF0YVJl
c3VsdCA9IG1ha2VVbmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwogICAgIAogICAgIENTU1Bh
cnNlckNvbnRleHQgY29udGV4dChwYXJzZXJDb250ZXh0Rm9yRG9jdW1lbnQobV9wYWdlU3R5bGVT
aGVldC0+b3duZXJEb2N1bWVudCgpKSk7CiAgICAgU3R5bGVTaGVldEhhbmRsZXIgaGFuZGxlciht
X3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgbV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVu
dCgpLCBydWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBkM2I3NTlmMjljY2YxYWUx
ODAyODBkNWUxNzM2NzBkMjljNGY4Y2MxLi5mZDdjYWQzMDc2N2U3NzViMTY3NWVjNDU0ZWY3YTA4
YmIwMzZkNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZwogewogICAgIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogCi0gICAgYXV0
byByZXNvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4ocmVxdWVzdElk
LCBsb2FkZXJJZCk7CisgICAgYXV0byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVlPFJlc291cmNl
RGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5
cGUpOwogICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RG
TW92ZShyZXNvdXJjZURhdGEpKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpyZXNvdXJjZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZwogewogICAgIGVuc3VyZU5vRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwog
Ci0gICAgYXV0byByZXNvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlRGF0YT4o
cmVxdWVzdElkLCBsb2FkZXJJZCk7CisgICAgYXV0byByZXNvdXJjZURhdGEgPSBtYWtlVW5pcXVl
PFJlc291cmNlRGF0YT4ocmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5z
ZXRDYWNoZWRSZXNvdXJjZSgmY2FjaGVkUmVzb3VyY2UpOwogICAgIG1fcmVxdWVzdElkVG9SZXNv
dXJjZURhdGFNYXAuc2V0KHJlcXVlc3RJZCwgV1RGTW92ZShyZXNvdXJjZURhdGEpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCA0MzUxZTg3MmE5ZTVhMzY0NzI5ZjViNGZiMjYyMTZjNzMzMDJjOGRkLi4z
NjRhZWE3ZDRiNWQ5MTE3OTMyNzVkNjQ2ZjI5NWU2N2JmMGVlZWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKEluc3Ry
dW1lbnRpbmdBZ2VudHM6OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2luamVjdGVkU2NyaXB0TWFu
YWdlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcj4oKnRoaXMsIFdl
YkluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKCkpKQorICAgICwgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIobWFrZVVuaXF1ZTxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI+KCp0aGlzLCBXZWJJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSgpKSkKICAgICAsIG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRl
bmRSb3V0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlz
cGF0Y2hlcjo6Y3JlYXRlKG1fZnJvbnRlbmRSb3V0ZXIuY29weVJlZigpKSkKICAgICAsIG1fZXhl
Y3V0aW9uU3RvcHdhdGNoKFN0b3B3YXRjaDo6Y3JlYXRlKCkpCkBAIC02OSw3ICs2OSw3IEBAIFdv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIoV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsCiAKICAgICBhdXRvIHdvcmtlckNvbnRleHQgPSB3b3JrZXJB
Z2VudENvbnRleHQoKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOworICAgIGF1dG8gY29uc29sZUFn
ZW50ID0gbWFrZVVuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KHdvcmtlckNvbnRleHQpOwogICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5n
ZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CiB9CkBA
IC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0
RnJvbnRlbmQoKQogICAgIG1fZXhlY3V0aW9uU3RvcHdhdGNoLT5yZXNldCgpOwogICAgIG1fZXhl
Y3V0aW9uU3RvcHdhdGNoLT5zdGFydCgpOwogCi0gICAgbV9mb3J3YXJkaW5nQ2hhbm5lbCA9IHN0
ZDo6bWFrZV91bmlxdWU8V29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsPihtX3dvcmtlckdsb2Jh
bFNjb3BlKTsKKyAgICBtX2ZvcndhcmRpbmdDaGFubmVsID0gbWFrZVVuaXF1ZTxXb3JrZXJUb1Bh
Z2VGcm9udGVuZENoYW5uZWw+KG1fd29ya2VyR2xvYmFsU2NvcGUpOwogICAgIG1fZnJvbnRlbmRS
b3V0ZXItPmNvbm5lY3RGcm9udGVuZCgqbV9mb3J3YXJkaW5nQ2hhbm5lbC5nZXQoKSk7CiAgICAg
bV9hZ2VudHMuZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKCZtX2Zyb250ZW5kUm91dGVyLmdl
dCgpLCAmbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CiB9CkBAIC0xNjQsMTggKzE2NCwxOCBA
QCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogCiAg
ICAgYXV0byB3b3JrZXJDb250ZXh0ID0gd29ya2VyQWdlbnRDb250ZXh0KCk7CiAKLSAgICBtX2Fn
ZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJSdW50aW1lQWdlbnQ+KHdvcmtlckNv
bnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJSdW50aW1lQWdl
bnQ+KHdvcmtlckNvbnRleHQpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBp
ZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihtX3dvcmtlckdsb2JhbFNjb3BlKSkgewot
ICAgICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VyQWdl
bnQ+KHdvcmtlckNvbnRleHQpKTsKLSAgICAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8V29ya2VyTmV0d29ya0FnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJBZ2VudD4od29ya2VyQ29udGV4dCkp
OworICAgICAgICBtX2FnZW50cy5hcHBlbmQobWFrZVVuaXF1ZTxXb3JrZXJOZXR3b3JrQWdlbnQ+
KHdvcmtlckNvbnRleHQpKTsKICAgICB9CiAjZW5kaWYKIAotICAgIG1fYWdlbnRzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFdlYkhlYXBBZ2VudD4od29ya2VyQ29udGV4dCkpOwotICAgIG1fYWdl
bnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KHdvcmtlckNv
bnRleHQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJBdWRp
dEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8
V2ViSGVhcEFnZW50Pih3b3JrZXJDb250ZXh0KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VV
bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4od29ya2VyQ29udGV4dCkpOworICAgIG1fYWdlbnRz
LmFwcGVuZChtYWtlVW5pcXVlPFdvcmtlckF1ZGl0QWdlbnQ+KHdvcmtlckNvbnRleHQpKTsKIAog
ICAgIGlmIChhdXRvJiBjb21tYW5kTGluZUFQSUhvc3QgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+Y29tbWFuZExpbmVBUElIb3N0KCkpCiAgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+aW5p
dChtX2luc3RydW1lbnRpbmdBZ2VudHMuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcAppbmRleCBhOGQzYzg5OWMzMjgwYTI4ZTY3MzJjZjg4YWI4NGQwMDBkNDVl
ZDJkLi5mZGYwNDRjNTc5YjM2OGMzMjA1MWI2NWRjNDQwZTM4N2Y2MDE4ZmI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50KFBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoIkFwcGxpY2F0aW9uQ2FjaGUiX3MsIGNvbnRleHQpCi0gICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6QXBwbGlj
YXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisg
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6QXBwbGljYXRp
b25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6QXBwbGljYXRpb25DYWNoZUJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAg
LCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1BVUHJvZmls
ZXJBZ2VudC5jcHAKaW5kZXggY2Y5NGNhODA5NmZmNTcxZDc0ZDc3M2IxZjAwMjc1MDU0YzBjZTFm
OS4uMTE2MjRlMjQwOTQ2NGZjMWUxZTY1YTY5OThkYmQxYjA2ODJmMGIyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDUFVQcm9maWxlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNQVVBy
b2ZpbGVyQWdlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKIEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQ6Okluc3BlY3RvckNQVVByb2ZpbGVyQWdl
bnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
Q1BVUHJvZmlsZXIiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6
Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q1BVUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNQVVByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpDUFVQ
cm9maWxlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hl
ciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDRiNjk5NDVlYzcwNjdmOTY0M2U0ODA3MzAz
NDg0MjY4NmQ2MTlmYjguLjQ0ZTljNWFiZWI0Yzk2NmFiYWVhOTQ0YTQwZDVlMDNkNDcyZDExZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JD
U1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYgcnVsZSkKIAogSW5zcGVjdG9yQ1NTQWdl
bnQ6Okluc3BlY3RvckNTU0FnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IElu
c3BlY3RvckFnZW50QmFzZSgiQ1NTIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3Bh
dGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJv
bnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxDU1NG
cm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNr
ZW5kRGlzcGF0Y2hlcihDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlc3VsdCA9
IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVNo
ZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkpOworICAgIGF1dG8gcmVz
dWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShtYWtlVW5pcXVlPFNldFN0eWxlU2hl
ZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CiAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2Vu
dDo6dG9FcnJvclN0cmluZyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKIH0KQEAgLTY0Niw3
ICs2NDYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplYwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVl
dCwgY29tcG91bmRJZCwgdGV4dCkpOworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50
LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3Bl
Y3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKICAgICBpZiAocGVyZm9ybVJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFn
ZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9i
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21B
Z2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0UnVsZVNlbGVjdG9y
QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOworICAg
IGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0obWFrZVVu
aXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5k
SWQsIHNlbGVjdG9yKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhw
ZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTc1
Nyw3ICs3NTcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBzdHlsZVNoZQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFkZFJ1bGVBY3Rpb24+
KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKTsKKyAgICBhdXRvIGFjdGlvbiA9IG1ha2VV
bmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOwogICAg
IGF1dG8mIHJhd0FjdGlvbiA9ICphY3Rpb247CiAgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9t
QWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmIChwZXJm
b3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDliZTA2MTE5
ZmIzMjE5NzAwNzI5NzIyZDgzNmE4MTZiMjVmMWMwMTUuLjBlNTBjNzViYTQ4NzUxNTU2ZTQxMmRj
Yjk3YWQxOTY2OTY1YTk5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3RvckNhbnZhc0FnZW50OjpJbnNwZWN0
b3JDYW52YXNBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJDYW52YXMiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q2FudmFzRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VV
bmlxdWU8SW5zcGVjdG9yOjpDYW52YXNGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRl
bmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkNhbnZhc0Jh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICAsIG1faW5zcGVjdGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCkBAIC00
MzYsNyArNDM2LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6cmVjb3JkQ2FudmFzQWN0
aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmQKICAgICBpZiAoIWluc3BlY3Rv
ckNhbnZhcy0+Y3VycmVudEZyYW1lSGFzRGF0YSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jb250ZXh0KCkuY2FudmFzQmFz
ZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICAgICAgYXV0byYgcXVldWUg
PSBNaWNyb3Rhc2tRdWV1ZTo6bWFpblRocmVhZFF1ZXVlKCk7Ci0gICAgICAgICAgICBxdWV1ZS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4ocXVldWUs
ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBbJiwgcHJvdGVjdGVkSW5zcGVjdG9yQ2FudmFzID0g
aW5zcGVjdG9yQ2FudmFzLmNvcHlSZWYoKV0geworICAgICAgICAgICAgcXVldWUuYXBwZW5kKG1h
a2VVbmlxdWU8QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2s+KHF1ZXVlLCAqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgWyYsIHByb3RlY3RlZEluc3BlY3RvckNhbnZhcyA9IGluc3BlY3RvckNhbnZh
cy5jb3B5UmVmKCldIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FudmFzRWxlbWVudCA9
IHByb3RlY3RlZEluc3BlY3RvckNhbnZhcy0+Y2FudmFzRWxlbWVudCgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChjYW52YXNFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihjYW52YXNFbGVtZW50
LT5kb2N1bWVudCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggNmMxOTZlMGNjNjgyYjQ0MjU2YzdkZGFhZTA5MGFhMGFhZDU1MzE3ZC4uZjBhMjhjMTMz
MWM1YmIzMDg4ZDUzZTcyNDNkYmFmNGVlYjYzZTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTI4Myw3ICsy
ODMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoRXhjZXB0aW9u
JiYgZXhjZXB0aW9uKQogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBhZ2VB
Z2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCiAgICAgOiBJ
bnNwZWN0b3JBZ2VudEJhc2UoIkRPTSJfcywgY29udGV4dCkKICAgICAsIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgICwgbV9mcm9udGVu
ZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hl
cihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6RE9NRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZy
b250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01C
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
KQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKICAgICAsIG1f
b3ZlcmxheShvdmVybGF5KQpAQCAtMzAxLDggKzMwMSw4IEBAIEluc3BlY3RvckRPTUFnZW50Ojp+
SW5zcGVjdG9yRE9NQWdlbnQoKQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqKQogewotICAgIG1faGlzdG9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9ySGlzdG9yeT4oKTsKLSAgICBtX2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8
RE9NRWRpdG9yPigqbV9oaXN0b3J5KTsKKyAgICBtX2hpc3RvcnkgPSBtYWtlVW5pcXVlPEluc3Bl
Y3Rvckhpc3Rvcnk+KCk7CisgICAgbV9kb21FZGl0b3IgPSBtYWtlVW5pcXVlPERPTUVkaXRvcj4o
Km1faGlzdG9yeSk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yRE9N
QWdlbnQodGhpcyk7CiAgICAgbV9kb2N1bWVudCA9IG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUo
KS5kb2N1bWVudCgpOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICBOb2RlKiBw
YXJlbnQgPSBpbm5lclBhcmVudE5vZGUobm9kZSk7CiAgICAgICAgIGlmICghcGFyZW50KSB7CiAg
ICAgICAgICAgICAvLyBOb2RlIGJlaW5nIHB1c2hlZCBpcyBkZXRhY2hlZCAtPiBwdXNoIHN1YnRy
ZWUgcm9vdC4KLSAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxOb2Rl
VG9JZE1hcD4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gbWFrZVVuaXF1ZTxOb2RlVG9J
ZE1hcD4oKTsKICAgICAgICAgICAgIGRhbmdsaW5nTWFwID0gbmV3TWFwLmdldCgpOwogICAgICAg
ICAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5hcHBlbmQobmV3TWFwLnJlbGVhc2UoKSk7CiAg
ICAgICAgICAgICBhdXRvIGNoaWxkcmVuID0gSlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKQEAgLTExNzcsNyArMTE3Nyw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxIaWdobGlnaHRDb25maWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25m
aWdGcm9tSW5zcGVjdG9yCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1
dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7
CisgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEhpZ2hsaWdodENvbmZpZz4o
KTsKICAgICBib29sIHNob3dJbmZvID0gZmFsc2U7IC8vIERlZmF1bHQ6IGZhbHNlIChkbyBub3Qg
c2hvdyBhIHRvb2x0aXApLgogICAgIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVh
bigic2hvd0luZm8iLCBzaG93SW5mbyk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9
IHNob3dJbmZvOwpAQCAtMTE5NiwxMyArMTE5NiwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVu
YQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nJiwg
aW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IEpTT046Ok9iamVjdCog
Y29sb3IsIGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQ
YWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9h
dFF1YWQ+KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgYXV0byBxdWFkID0g
bWFrZVVuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiAg
ICAgaW5uZXJIaWdobGlnaHRRdWFkKFdURk1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29sb3Is
IHVzZVBhZ2VDb29yZGluYXRlcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hs
aWdodFF1YWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpBcnJheSYgcXVh
ZEFycmF5LCBjb25zdCBKU09OOjpPYmplY3QqIGNvbG9yLCBjb25zdCBKU09OOjpPYmplY3QqIG91
dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIGF1dG8g
cXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigpOworICAgIGF1dG8gcXVhZCA9IG1h
a2VVbmlxdWU8RmxvYXRRdWFkPigpOwogICAgIGlmICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVh
ZC5nZXQoKSkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCBRdWFkIGZvcm1hdCJf
czsKICAgICAgICAgcmV0dXJuOwpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpT
T046OkFycmEKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0
ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQsIGNvbnN0IEpTT046Ok9iamVjdCogY29sb3Is
IGNvbnN0IEpTT046Ok9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29v
cmRpbmF0ZXMpCiB7Ci0gICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhpZ2hsaWdodENvbmZpZz4oKTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlx
dWU8SGlnaGxpZ2h0Q29uZmlnPigpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBh
cnNlQ29sb3IoY29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBw
YXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT51c2VQYWdlQ29v
cmRpbmF0ZXMgPSB1c2VQYWdlQ29vcmRpbmF0ZXMgPyAqdXNlUGFnZUNvb3JkaW5hdGVzIDogZmFs
c2U7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGln
aHRGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZgogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIGF1
dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7
CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxIaWdobGlnaHRDb25m
aWc+KCk7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdh
eXMgc2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgogICAgICAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250
ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKQEAgLTEzOTgsNyArMTM5OCw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIG1faW5zcGVjdGVkTm9kZSA9IG5vZGU7CiAK
ICAgICBpZiAoYXV0byYgY29tbWFuZExpbmVBUElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyJj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmNvbW1hbmRMaW5lQVBJ
SG9zdCgpKQotICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChz
dGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOworICAgICAgICBjb21tYW5k
TGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChtYWtlVW5pcXVlPEluc3BlY3RhYmxlTm9k
ZT4obm9kZSkpOwogCiAgICAgbV9zdXBwcmVzc0V2ZW50TGlzdGVuZXJDaGFuZ2VkRXZlbnQgPSBm
YWxzZTsKIH0KQEAgLTIzMTQsNyArMjMxNCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrKQotICAgICAgICBtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1
dGVUYXNrPih0aGlzKTsKKyAgICAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IG1ha2VV
bmlxdWU8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4odGhpcyk7CiAgICAgbV9yZXZhbGlk
YXRlU3R5bGVBdHRyVGFzay0+c2NoZWR1bGVGb3IoJmVsZW1lbnQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5jcHAKaW5kZXggZTk3MWE5OWY3MDUyNGQ4MzE4MWFlNzE1ZDgyNjU4ODExZmUwODgw
OC4uODFmMTRkYzE3YmZhMDQ3NDdlM2QyM2U0NTNmNWU0YWY4ZDA5ZmQ4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChQ
YWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET01T
dG9yYWdlIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQu
ZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTVN0b3JhZ2VC
YWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMp
KQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuY3BwCmluZGV4IGIzN2E1NjBjZTgwNzY4YzY2NDQwODUxNWZiMDU1MTI2MTY1YmVk
ODIuLjM1OGE4NTY1MTJlYTRkNzE5NjMzMmEyMDY5OTBkZTMyNTAwNDEwYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dDo6ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlJiBkYXRhYmFzZSkKIAogSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQp
CiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkRhdGFiYXNlIl9zLCBjb250ZXh0KQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkRhdGFiYXNl
RnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJv
bnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpEYXRhYmFzZUZyb250ZW5kRGlz
cGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRj
aGVyKEluc3BlY3Rvcjo6RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAppbmRl
eCBlMWUwODJlNDFhZDJkNTI0ZjU3ZWYxMDY0MDI4ODc2MTE1NjgyNGI5Li5iNTk4MmNlZTM3ZTM3
NDQ3MDUzOTQ2YmNmNGM0MzRiNDMxZWY5YTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAt
NDgsNyArNDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250
ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJMYXllclRyZWUiX3MsIGNvbnRleHQpCi0g
ICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TGF5
ZXJUcmVlRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAs
IG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpMYXllclRyZWVGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5k
RGlzcGF0Y2hlcihJbnNwZWN0b3I6OkxheWVyVHJlZUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUo
Y29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCmlu
ZGV4IDI5Yzc2ZDBjN2ZlYTkyMmMyYTNkOTk0MTRjOTg2ZWE4ZDI4ZDc3YjUuLjI4MzI5NTFmNTM4
MDEyMWZhNDUyYmZhOGQ0NzBmNGQzNWU3ODliMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEluc3BlY3Rvck1lbW9yeUFn
ZW50OjpJbnNwZWN0b3JNZW1vcnlBZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKCJNZW1vcnkiX3MsIGNvbnRleHQpCi0gICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6TWVtb3J5RnJvbnRlbmRE
aXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKKyAgICAsIG1fZnJvbnRlbmREaXNw
YXRjaGVyKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpNZW1vcnlGcm9udGVuZERpc3BhdGNoZXI+KGNv
bnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0
b3I6Ok1lbW9yeUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggM2U0ZTk2ZWIyMzFhMDU0
YjIxMjEyNDdiYzJjYjA5MTY1ZjAyNjViMy4uNWQwODE2MzgwY2RjNjZjN2Q3OTYwYzEyZDM0OGEw
ZmJmM2Y3YjExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgY2xh
c3MgSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50IHsKIAogSW5zcGVjdG9yTmV0d29ya0FnZW50OjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRC
YXNlKCJOZXR3b3JrIl9zLCBjb250ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRl
eHQuZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1
ZTxJbnNwZWN0b3I6Ok5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRS
b3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6Ok5ldHdvcmtCYWNr
ZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQog
ICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNjcmlwdE1hbmFn
ZXIpCi0gICAgLCBtX3Jlc291cmNlc0RhdGEoc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3Vy
Y2VzRGF0YT4oKSkKKyAgICAsIG1fcmVzb3VyY2VzRGF0YShtYWtlVW5pcXVlPE5ldHdvcmtSZXNv
dXJjZXNEYXRhPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMzI5ZTFiMGM1YWQ5MmZiNDUx
ZGYxNzY3MzNhZTJhZTM1OGZiNDkzNy4uYzY0MWE2YTA0ODQxOTMyNjhlMjllOTBmZjAxMjZhYjkx
MWM5MzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzMzLDcgKzMzMyw3IEBAIERvY3VtZW50TG9hZGVy
KiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluCiAKIEluc3BlY3RvclBhZ2VBZ2VudDo6SW5zcGVjdG9yUGFnZUFnZW50KFBhZ2VB
Z2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JP
dmVybGF5KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJQYWdlIl9zLCBjb250
ZXh0KQotICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OlBhZ2VGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQorICAg
ICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJbnNwZWN0b3I6OlBhZ2VGcm9udGVu
ZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwgbV9iYWNrZW5kRGlz
cGF0Y2hlcihJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQu
aW5zcGVjdGVkUGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CmluZGV4IDNhMzYxZTkxZTZmMmRlYjAwNDJlMThhN2M2NGM3YjUxNmY5YjgwYzUuLjMwZDg2Yzc0
NjNjNDdmNWIzYWQyYjM4Y2Y1ZGUyNDlkNDRlYjlhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApA
QCAtODcsNyArODcsNyBAQCBzdGF0aWMgQ0ZSdW5Mb29wUmVmIGN1cnJlbnRSdW5Mb29wKCkKIAog
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudChQYWdlQWdlbnRD
b250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJUaW1lbGluZSJfcywg
Y29udGV4dCkKLSAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yOjpUaW1lbGluZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6VGlt
ZWxpbmVGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5zcGVj
dGVkUGFnZShjb250ZXh0Lmluc3BlY3RlZFBhZ2UpCiB7CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4Q2Fs
bFN0YWNrRGVwdGgpCiAgICAgLy8gRklYTUU6IEFic3RyYWN0IGF3YXkgcGxhdGZvcm0tc3BlY2lm
aWMgY29kZSBvbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3
NDggaXMgZml4ZWQuCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2ZyYW1lU3RhcnRPYnNl
cnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRklu
ZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3BlY3RvckZy
YW1lQmVnaW4pLCBbdGhpc10oKSB7CisgICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVy
OjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpJbnNwZWN0b3JGcmFtZUJlZ2luKSwgW3RoaXNdKCkg
ewogICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1Nl
cnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIwMiw3ICsyMDIs
NyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50
KiBtYXhDYWxsU3RhY2tEZXB0aCkKICAgICAgICAgbV9ydW5Mb29wTmVzdGluZ0xldmVsKys7CiAg
ICAgfSk7CiAKLSAgICBtX2ZyYW1lU3RvcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5M
b29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtu
b3duUnVuTG9vcE9yZGVyczo6SW5zcGVjdG9yRnJhbWVFbmQpLCBbdGhpc10oKSB7CisgICAgbV9m
cmFtZVN0b3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2Fz
dDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6Okluc3Bl
Y3RvckZyYW1lRW5kKSwgW3RoaXNdKCkgewogICAgICAgICBpZiAoIW1fdHJhY2tpbmcgfHwgbV9l
bnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZwogICAg
ICAgICAgICAgICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwog
ICAgICAgICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJV
bm5hbWVkIFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwi
IiwgdGl0bGUsICJcIiBhbHJlYWR5IGV4aXN0cyIpOwotICAgICAgICAgICAgICAgICAgICBjb25z
b2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAgICAgICAgICAgICAgICBjb25z
b2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4o
TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGUsIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBTdHJpbmcmIHRpdGwKICAgICBpZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpIHsKICAgICAgICAgLy8gRklY
TUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KICAgICAg
ICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhpc3Qi
X3MgOiBtYWtlU3RyaW5nKCJQcm9maWxlIFwiIiwgdGl0bGUsICJcIiBkb2VzIG5vdCBleGlzdCIp
OwotICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3Vu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5
cGU6OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOworICAgICAg
ICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVz
c2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OlByb2ZpbGVFbmQs
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JXb3JrZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50
LmNwcAppbmRleCA5MTYxZDg0M2NkMzhlNGQ5NjYxMjZhY2RkMzZlODNkZDE4ZjUxMDAyLi4xZTM5
OGVkZDFhOWVhM2VmMjZiZTA5ZWMwM2Q2YzZjMmNkMzk4ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApA
QCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBJbnNwZWN0b3JX
b3JrZXJBZ2VudDo6SW5zcGVjdG9yV29ya2VyQWdlbnQoUGFnZUFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiV29ya2VyIl9zLCBjb250ZXh0KQotICAgICwg
bV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OldvcmtlckZy
b250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6V29ya2VyRnJvbnRlbmREaXNwYXRj
aGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIo
SW5zcGVjdG9yOjpXb3JrZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpKQogICAgICwgbV9wYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29s
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFn
ZW50LmNwcAppbmRleCAyZWVkMWNlNjBiMzAyMmFkOTgyNGZhNjI4YTM1ZGRjNTQ0NDk2MGQ5Li5j
MjA5NGI5OTJkMzU0MTYwZjE3ZWUyOGY2NDEwYTc5M2RjZGU5ZjM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC03Miw3
ICs3Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QKIAogICAgIGlmIChyZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpID49IDQwMCkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoIkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEg
c3RhdHVzIG9mICIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICIgKCIsIHJlc3BvbnNlLmh0
dHBTdGF0dXNUZXh0KCksICcpJyk7Ci0gICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjpt
YWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2Fn
ZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCku
c3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAgICAgIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJj
ZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2Fn
ZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlm
aWVyKSk7CiAgICAgfQogfQogCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50
OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBS
ZXNvCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkp
OwogICAgIH0KIAotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjptYWtlX3VuaXF1ZTxDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6OkxvZywgTWVz
c2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZS50b1N0cmluZygpLCBlcnJvci5mYWlsaW5nVVJMKCks
IDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CisgICAgYWRkTWVzc2FnZVRvQ29u
c29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBN
ZXNzYWdlVHlwZTo6TG9nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLnRvU3RyaW5nKCks
IGVycm9yLmZhaWxpbmdVUkwoKSwgMCwgMCwgbnVsbHB0ciwgcmVxdWVzdElkZW50aWZpZXIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9XZWJIZWFwQWdlbnQuY3BwCmluZGV4IGNhZmVhYjk1ZWFmYzFhYmUyNDRhZTE1
ZDc2Yjk2NmUwMDVlOTMxOTcuLjg2NWJiZDA3YjZmMDk4Y2E3ZTY2NTBkOGFmZWZiY2Y2ZWYwNTE5
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViSGVhcEFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkhlYXBBZ2Vu
dC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBTZW5kR2FyYmFnZUNvbGxlY3Rpb25FdmVudHNU
YXNrOjp0aW1lckZpcmVkKCkKIFdlYkhlYXBBZ2VudDo6V2ViSGVhcEFnZW50KFdlYkFnZW50Q29u
dGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckhlYXBBZ2VudChjb250ZXh0KQogICAgICwg
bV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuaW5zdHJ1bWVudGluZ0FnZW50cykKLSAgICAs
IG1fc2VuZEdhcmJhZ2VDb2xsZWN0aW9uRXZlbnRzVGFzayhzdGQ6Om1ha2VfdW5pcXVlPFNlbmRH
YXJiYWdlQ29sbGVjdGlvbkV2ZW50c1Rhc2s+KCp0aGlzKSkKKyAgICAsIG1fc2VuZEdhcmJhZ2VD
b2xsZWN0aW9uRXZlbnRzVGFzayhtYWtlVW5pcXVlPFNlbmRHYXJiYWdlQ29sbGVjdGlvbkV2ZW50
c1Rhc2s+KCp0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IDVlYWZiNmEzMjg0
NmU3MDAxNTNhYzgyNjgxYjdiZTUwZDNhZmU0OGMuLjg5ODViYzk0NWZlNzVlMGU4NTFhMzZkZTM1
ODRhYjA0NzFjMGZkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogUGFnZVJ1bnRpbWVBZ2VudDo6UGFnZVJ1bnRpbWVB
Z2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yUnVudGltZUFn
ZW50KGNvbnRleHQpCi0gICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3Rvcjo6UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJv
dXRlcikpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAg
LCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6UnVudGltZUJhY2tlbmREaXNwYXRjaGVy
OjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMoY29udGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9pbnNw
ZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggYjIwY2JiYzk1MDcwMjgxMWI2NTg5YWMxZGZiZDU3MzM5MTkzZDMzNy4uODA4MmVl
MzFlZWM2MGEyZjYwMzI5ZGJhYmQ0ZDk4NDJmNmE1NWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgV29ya2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRl
YnVnZ2VyQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV29ya2VyRGVidWdnZXJBZ2VudDo6YnJl
YWtwb2ludEFjdGlvbkxvZyhFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiB7Ci0gICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3Rh
dGUpKSk7CisgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShtYWtlVW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZVR5cGU6OkxvZywg
TWVzc2FnZUxldmVsOjpMb2csIG1lc3NhZ2UsIGNyZWF0ZVNjcmlwdENhbGxTdGFjaygmc3RhdGUp
KSk7CiB9CiAKIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2Ny
aXB0Rm9yRXZhbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IGludCogZXhlY3V0aW9u
Q29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKaW5kZXggYmQ5ZDRj
YWRlZmIyZmFhMWYyZTBiMjU3OTU1YWQ1MTI0ZTE3OTRlZS4uMWYzZmFiYTMxMjZmMmU5YjM2Yjg0
ZDEzZTczYmYxZmRhMzE3NTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xh
eW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgTGF5b3V0U3RhdGU6OmxheW91dEZvcm1hdHRpbmdDb250
ZXh0U3VidHJlZShjb25zdCBCb3gmIGxheW91dFJvb3QpCiBEaXNwbGF5OjpCb3gmIExheW91dFN0
YXRlOjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAog
ewogICAgIHJldHVybiAqbV9sYXlvdXRUb0Rpc3BsYXlCb3guZW5zdXJlKCZsYXlvdXRCb3gsIFsm
bGF5b3V0Qm94XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OkJv
eD4obGF5b3V0Qm94LnN0eWxlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5
OjpCb3g+KGxheW91dEJveC5zdHlsZSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAK
QEAgLTE0MCwxMyArMTQwLDEzIEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0
ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgICAg
ICAvLyBzaG91bGQgbm90IGludGVyZmVyZSB3aXRoIHRoZSBjb250ZW50IGluc2lkZS4KICAgICAg
ICAgICAgIC8vIDxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0Ij48L2Rpdj48ZGl2IHN0eWxlPSJvdmVy
ZmxvdzogaGlkZGVuIj4gPC0gaXMgYSBub24taW50cnVzaXZlIGZsb2F0LCBiZWNhdXNlIG92ZXJm
bG93OiBoaWRkZW4gdHJpZ2dlcnMgbmV3IGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dC48L2Rpdj4K
ICAgICAgICAgICAgIGlmIChmb3JtYXR0aW5nUm9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxp
bmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGlu
Z1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5l
Rm9ybWF0dGluZ1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdS
b290KSwgKnRoaXMpOwogCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBmb3JtYXR0aW5n
IGNvbnRleHQgaW5oZXJpdHMgdGhlIGZsb2F0cyBmcm9tIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBj
b250ZXh0LgogICAgICAgICAgICAgLy8gRmluZCB0aGUgZm9ybWF0dGluZyBzdGF0ZSBpbiB3aGlj
aCB0aGlzIGZvcm1hdHRpbmcgcm9vdCBsaXZlcywgbm90IHRoZSBvbmUgaXQgY3JlYXRlcyBhbmQg
dXNlIGl0cyBmbG9hdGluZyBzdGF0ZS4KICAgICAgICAgICAgIGF1dG8mIHBhcmVudEZvcm1hdHRp
bmdTdGF0ZSA9IGNyZWF0ZUZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQo
Zm9ybWF0dGluZ1Jvb3QuZm9ybWF0dGluZ0NvbnRleHRSb290KCkpOyAKICAgICAgICAgICAgIGF1
dG8mIHBhcmVudEZsb2F0aW5nU3RhdGUgPSBwYXJlbnRGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdT
dGF0ZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRm9ybWF0
dGluZ1N0YXRlPihwYXJlbnRGbG9hdGluZ1N0YXRlLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KHBhcmVudEZsb2F0aW5nU3RhdGUs
ICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0KIApAQCAtMTU0LDcg
KzE1NCw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmNyZWF0ZUZvcm1hdHRpbmdT
dGF0ZUZvckZvcm1hdHRpbmdSb290SWZOZWVkZWQoY29uCiAgICAgICAgIHJldHVybiAqbV9mb3Jt
YXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9ybWF0dGluZ1Jvb3QsIFsmXSB7CiAKICAgICAgICAgICAg
IC8vIEJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBhbHdheXMgZXN0YWJsaXNoZXMgYSBuZXcgZmxv
YXRpbmcgc3RhdGUuCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCbG9ja0Zv
cm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nUm9v
dCksICp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJsb2NrRm9ybWF0dGlu
Z1N0YXRlPihGbG9hdGluZ1N0YXRlOjpjcmVhdGUoKnRoaXMsIGZvcm1hdHRpbmdSb290KSwgKnRo
aXMpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgfQogCkBAIC0xNjIsNyArMTYy
LDcgQEAgRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ1N0YXRl
Rm9yRm9ybWF0dGluZ1Jvb3RJZk5lZWRlZChjb24KICAgICAgICAgcmV0dXJuICptX2Zvcm1hdHRp
bmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nUm9vdCwgWyZdIHsKIAogICAgICAgICAgICAgLy8g
VGFibGUgZm9ybWF0dGluZyBjb250ZXh0IGFsd2F5cyBlc3RhYmxpc2hlcyBhIG5ldyBmbG9hdGlu
ZyBzdGF0ZSAtYW5kIGl0IHN0YXlzIGVtcHR5LgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6OmNyZWF0ZSgqdGhp
cywgZm9ybWF0dGluZ1Jvb3QpLCAqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxUYWJsZUZvcm1hdHRpbmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3Jt
YXR0aW5nUm9vdCksICp0aGlzKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0K
IApAQCAtMTc0LDE4ICsxNzQsMTggQEAgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0
PiBMYXlvdXRTdGF0ZTo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQm8KICAgICBBU1NF
UlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7
CiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRp
bmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZG93
bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3Jt
YXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBpbmxp
bmVGb3JtYXR0aW5nU3RhdGUpOwogICAgIH0KIAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJv
b3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgQVNTRVJU
KGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRP
bmx5KCkpOwogICAgICAgICBhdXRvJiBibG9ja0Zvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PEJs
b2NrRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0aW5nUm9v
dElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pihmb3JtYXR0aW5nQ29udGV4dFJvb3Qs
IGJsb2NrRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmxvY2tG
b3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBibG9ja0Zvcm1hdHRpbmdT
dGF0ZSk7CiAgICAgfQogCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hl
c1RhYmxlRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICBhdXRvJiB0YWJsZUZvcm1hdHRp
bmdTdGF0ZSA9IGRvd25jYXN0PFRhYmxlRm9ybWF0dGluZ1N0YXRlPihjcmVhdGVGb3JtYXR0aW5n
U3RhdGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOwot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUYWJsZUZvcm1hdHRpbmdDb250ZXh0Pihm
b3JtYXR0aW5nQ29udGV4dFJvb3QsIHRhYmxlRm9ybWF0dGluZ1N0YXRlKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGFibGVGb3JtYXR0aW5nQ29udGV4dD4oZm9ybWF0dGluZ0NvbnRleHRS
b290LCB0YWJsZUZvcm1hdHRpbmdTdGF0ZSk7CiAgICAgfQogCiAgICAgQ1JBU0goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBhMWNkNmQ2ZjFiN2ViOTBmY2M3OTA1
ZTMxZTlmMDRmZTNiZjgyNjBiLi41MDhkNjYxMjlkMTQ4N2M0ZTg0NDA5MzkzZGEzMzQwOTE5ZWE3
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yODEsNyArMjgx
LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnQo
KSBjb25zdAogICAgICAgICAgICAgaWYgKCF0cmVhdEFzSW5saW5lQ29udGFpbmVyKGxheW91dEJv
eCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBz
dGFydCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcuIDxzcGFuPikuCi0gICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVlPElubGluZUl0ZW0+
KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyU3RhcnQpKTsKKyAgICAgICAg
ICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKG1ha2VVbmlxdWU8SW5saW5lSXRlbT4o
bGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpDb250YWluZXJTdGFydCkpOwogICAgICAgICAg
ICAgYXV0byYgY29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwogICAg
ICAgICAgICAgaWYgKCFjb250YWluZXIuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTIsMTcgKzI5MiwxNyBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVldWUudGFrZUxhc3QoKTsKICAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGVuZCBvZiBhbiBpbmxpbmUgY29udGFpbmVyIChlLmcuIDwvc3Bhbj4pLgog
ICAgICAgICAgICAgaWYgKHRyZWF0QXNJbmxpbmVDb250YWluZXIobGF5b3V0Qm94KSkKLSAgICAg
ICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShzdGQ6Om1ha2VfdW5pcXVl
PElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6Q29udGFpbmVyRW5kKSk7
CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVuaXF1
ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lckVuZCkp
OwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCkpCi0gICAg
ICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1
ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWsp
KTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShtYWtlVW5p
cXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVh
aykpOwogICAgICAgICAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVk
KCkpCi0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oc3RkOjpt
YWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0
KSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0obWFrZVVu
aXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkZsb2F0KSk7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5s
aW5lTGV2ZWxCb3goKSk7CiAgICAgICAgICAgICAgICAgaWYgKGxheW91dEJveC5oYXNUZXh0Q29u
dGVudCgpKQogICAgICAgICAgICAgICAgICAgICBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBw
ZW5kVGV4dEl0ZW1zKGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygpLCBsYXlvdXRCb3gpOwog
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRl
LmFkZElubGluZUl0ZW0oc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVJdGVtPihsYXlvdXRCb3gsIElu
bGluZUl0ZW06OlR5cGU6OkJveCkpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lSXRlbShtYWtlVW5pcXVlPElubGluZUl0ZW0+KGxheW91dEJveCwgSW5saW5l
SXRlbTo6VHlwZTo6Qm94KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRv
KiBuZXh0U2libGluZyA9IGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC5jcHAK
aW5kZXggZjc0MWRlNDg5ZTk0MjQ2MWQ3NjkyZTJlNDA0MTU5MzgzYjBjODE2MC4uMGEyMTMwMjEz
ZjEyNGVlYjVmN2Y3MTEyZTg4NmQ3MTJjNTMxZGEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVu
cyhjb25zdCBMaW5lOjpDb250ZW4KICAgICAgICAgICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChs
b2dpY2FsUmVjdC50b3BMZWZ0KCkpOwogICAgICAgICAgICAgZGlzcGxheUJveC5zZXRDb250ZW50
Qm94V2lkdGgobG9naWNhbFJlY3Qud2lkdGgoKSk7CiAgICAgICAgICAgICBkaXNwbGF5Qm94LnNl
dENvbnRlbnRCb3hIZWlnaHQobG9naWNhbFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLmFkZElubGluZVJ1bihzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXk6OlJ1bj4o
bG9naWNhbFJlY3QpKTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4o
bWFrZVVuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0KSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCkBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6SW5saW5lTGF5b3V0OjpjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMaW5lOjpD
b250ZW4KICAgICAgICAgICAgICAgICB0b3BMZWZ0ICs9IEdlb21ldHJ5OjppbkZsb3dQb3NpdGlv
bmVkUG9zaXRpb25PZmZzZXQobGF5b3V0U3RhdGUoKSwgbGF5b3V0Qm94KTsKICAgICAgICAgICAg
IGRpc3BsYXlCb3guc2V0VG9wTGVmdCh0b3BMZWZ0KTsKICAgICAgICAgICAgIGxpbmVCb3hSZWN0
LmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsUmVjdC53aWR0aCgpKTsKLSAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+
KGxvZ2ljYWxSZWN0KSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lUnVu
KG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCkpOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OklubGluZUxheW91dDo6Y3JlYXRlRGlzcGxheVJ1bnMoY29uc3QgTGluZTo6
Q29udGVuCiAgICAgICAgICAgICBhdXRvIHByZXZpb3VzUnVuQ2FuQmVFeHRlbmRlZCA9IHByZXZp
b3VzTGluZVJ1biAmJiBwcmV2aW91c0xpbmVSdW4tPnRleHRDb250ZXh0KCkgPyBwcmV2aW91c0xp
bmVSdW4tPnRleHRDb250ZXh0KCktPmNhbkJlRXh0ZW5kZWQgOiBmYWxzZTsKICAgICAgICAgICAg
IGF1dG8gcmVxdWlyZXNOZXdSdW4gPSAhaW5kZXggfHwgIXByZXZpb3VzUnVuQ2FuQmVFeHRlbmRl
ZCB8fCAmbGF5b3V0Qm94ICE9ICZwcmV2aW91c0xpbmVSdW4tPmxheW91dEJveCgpOwogICAgICAg
ICAgICAgaWYgKHJlcXVpcmVzTmV3UnVuKQotICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRJbmxpbmVSdW4oc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5OjpSdW4+KGxvZ2ljYWxSZWN0
LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgdGV4dENvbnRleHQtPnN0YXJ0LCB0ZXh0Q29u
dGV4dC0+bGVuZ3RoIH0pKTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5s
aW5lUnVuKG1ha2VVbmlxdWU8RGlzcGxheTo6UnVuPihsb2dpY2FsUmVjdCwgRGlzcGxheTo6UnVu
OjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5zdGFydCwgdGV4dENvbnRleHQtPmxlbmd0aCB9
KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRvJiBsYXN0RGlzcGxh
eVJ1biA9IGZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpOwogICAgICAgICAgICAg
ICAgIGxhc3REaXNwbGF5UnVuLT5leHBhbmRIb3Jpem9udGFsbHkobG9naWNhbFJlY3Qud2lkdGgo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuY3BwCmluZGV4IDRmMjBhNmZmMWQ3MGNlMzQ5YmRlMGViZWRmZThmODBhMzVlODVh
MjguLmVkNjUyMDViN2RiOTliMGY2YWIxMGYzZWVlYWEwN2M0NDZiN2Y4ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3Bw
CkBAIC01NCw3ICs1NCw3IEBAIExpbmU6OkNvbnRlbnQ6OlJ1bjo6UnVuKGNvbnN0IElubGluZUl0
ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFRleHRDb250ZXh0JiB0ZXh0Q29uCiAKIExpbmU6OkxpbmUo
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBJbml0aWFsQ29uc3RyYWludHMm
IGluaXRpYWxDb25zdHJhaW50cywgU2tpcFZlcnRpY2FsQWxpZ21lbnQgc2tpcFZlcnRpY2FsQWxp
Z21lbnQpCiAgICAgOiBtX2xheW91dFN0YXRlKGxheW91dFN0YXRlKQotICAgICwgbV9jb250ZW50
KHN0ZDo6bWFrZV91bmlxdWU8TGluZTo6Q29udGVudD4oKSkKKyAgICAsIG1fY29udGVudChtYWtl
VW5pcXVlPExpbmU6OkNvbnRlbnQ+KCkpCiAgICAgLCBtX2xvZ2ljYWxUb3BMZWZ0KGluaXRpYWxD
b25zdHJhaW50cy5sb2dpY2FsVG9wTGVmdCkKICAgICAsIG1fYmFzZWxpbmUoeyBpbml0aWFsQ29u
c3RyYWludHMuaGVpZ2h0QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQsIGluaXRpYWxDb25zdHJh
aW50cy5oZWlnaHRBbmRCYXNlbGluZS5oZWlnaHQgLSBpbml0aWFsQ29uc3RyYWludHMuaGVpZ2h0
QW5kQmFzZWxpbmUuYmFzZWxpbmVPZmZzZXQgfSkKICAgICAsIG1faW5pdGlhbFN0cnV0KGluaXRp
YWxDb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS5zdHJ1dCkKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIExpbmU6OmFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRV
bml0IGxvZ2ljYWxXaWR0aCkKIAogdm9pZCBMaW5lOjphcHBlbmROb25CcmVha2FibGVTcGFjZShj
b25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBEaXNwbGF5OjpSZWN0JiBsb2dpY2Fs
UmVjdCkKIHsKLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxD
b250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5y
dW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2Fs
UmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsUmVjdC53aWR0aCgp
OwogfQogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChj
b25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICB9
CiAKICAgICBhdXRvIHRleHRDb250ZXh0ID0gQ29udGVudDo6UnVuOjpUZXh0Q29udGV4dCB7IGlu
bGluZUl0ZW0uc3RhcnQoKSwgaW5saW5lSXRlbS5pc0NvbGxhcHNlZCgpID8gMSA6IGlubGluZUl0
ZW0ubGVuZ3RoKCksIGlzQ29tcGxldGVseUNvbGxhcHNlZCwgaW5saW5lSXRlbS5pc1doaXRlc3Bh
Y2UoKSwgY2FuQmVFeHRlbmRlZCB9OwotICAgIGF1dG8gbGluZUl0ZW0gPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnQ6OlJ1bj4oaW5saW5lSXRlbSwgdGV4dENvbnRleHQsIGxvZ2ljYWxSZWN0KTsK
KyAgICBhdXRvIGxpbmVJdGVtID0gbWFrZVVuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0s
IHRleHRDb250ZXh0LCBsb2dpY2FsUmVjdCk7CiAgICAgaWYgKGlzVHJpbW1hYmxlICYmICFpc0Nv
bXBsZXRlbHlDb2xsYXBzZWQpCiAgICAgICAgIG1fdHJpbW1hYmxlQ29udGVudC5hZGQobGluZUl0
ZW0uZ2V0KCkpOwogCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBMaW5lOjphcHBlbmROb25SZXBs
YWNlZElubGluZUJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGwK
ICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGlu
bGluZUl0ZW0pKTsKICAgICB9CiAKLSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxDb250ZW50OjpSdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAg
bV9jb250ZW50LT5ydW5zKCkuYXBwZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJ
dGVtLCBsb2dpY2FsUmVjdCkpOwogICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSAobG9naWNh
bFdpZHRoICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kKTsK
ICAgICBtX3RyaW1tYWJsZUNvbnRlbnQuY2xlYXIoKTsKIH0KQEAgLTMyMyw3ICszMjMsNyBAQCB2
b2lkIExpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRl
bSkKICAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGluZUl0ZW0sIHsgfSk7
CiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KCkpOwogICAgIH0K
LSAgICBtX2NvbnRlbnQtPnJ1bnMoKS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50OjpS
dW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KSk7CisgICAgbV9jb250ZW50LT5ydW5zKCkuYXBw
ZW5kKG1ha2VVbmlxdWU8Q29udGVudDo6UnVuPihpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCkpOwog
fQogCiB2b2lkIExpbmU6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBJbmxpbmVJ
dGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IHJ1bkhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcApp
bmRleCBmMTMwODlhNzA4ZjNmZTNmZjliNzdmNzIwOTZjZGE0MmVmMzZlMjIyLi41ZTZjMjU2ZGIw
YjMwOWFhZjFlMjU4MjFmMGUxZTE4ZTU2NDUyZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCkBAIC04
OSw3ICs4OSw3IEBAIHZvaWQgSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVt
cyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVudCwgY29uc3QKIHsKICAgICBhdXRvIHRleHQgPSBp
bmxpbmVCb3gudGV4dENvbnRlbnQoKTsKICAgICBpZiAoIXRleHQubGVuZ3RoKCkpCi0gICAgICAg
IHJldHVybiBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJ
dGVtPihpbmxpbmVCb3gsIDAsIDAsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICByZXR1cm4gaW5s
aW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5lQm94LCAw
LCAwLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lQm94LnN0eWxl
KCk7CiAgICAgYXV0byBwcmVzZXJ2ZU5ld2xpbmUgPSBzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUoKTsK
QEAgLTk5LDIwICs5OSwyMCBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRU
ZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiAgICAgd2hpbGUgKGN1
cnJlbnRQb3NpdGlvbiA8IHRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgLy8gU29mdCBsaW5lYnJl
YWs/CiAgICAgICAgIGlmIChpc1NvZnRMaW5lQnJlYWsodGV4dFtjdXJyZW50UG9zaXRpb25dLCBw
cmVzZXJ2ZU5ld2xpbmUpKSB7Ci0gICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwg
MSwgdHJ1ZSwgZmFsc2UpKTsKKyAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKG1ha2VV
bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwgY3VycmVudFBvc2l0aW9uLCAxLCB0cnVl
LCBmYWxzZSkpOwogICAgICAgICAgICAgKytjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRl
eHRbY3VycmVudFBvc2l0aW9uXSwgcHJlc2VydmVOZXdsaW5lKSkgewogICAgICAgICAgICAgYXV0
byBsZW5ndGggPSBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHRleHQsIGN1cnJlbnRQ
b3NpdGlvbiwgcHJlc2VydmVOZXdsaW5lKTsKICAgICAgICAgICAgIGF1dG8gaXNDb2xsYXBzZWQg
PSBjb2xsYXBzZVdoaXRlU3BhY2UgJiYgbGVuZ3RoID4gMTsKLSAgICAgICAgICAgIGlubGluZUNv
bnRlbnQuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lVGV4dEl0ZW0+KGlubGluZUJveCwg
Y3VycmVudFBvc2l0aW9uLCBsZW5ndGgsIHRydWUsIGlzQ29sbGFwc2VkKSk7CisgICAgICAgICAg
ICBpbmxpbmVDb250ZW50LmFwcGVuZChtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihpbmxpbmVC
b3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCB0cnVlLCBpc0NvbGxhcHNlZCkpOwogICAgICAg
ICAgICAgY3VycmVudFBvc2l0aW9uICs9IGxlbmd0aDsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKICAgICAgICAgYXV0byBsZW5ndGggPSBtb3ZlVG9OZXh0QnJlYWthYmxlUG9z
aXRpb24oY3VycmVudFBvc2l0aW9uLCBsaW5lQnJlYWtJdGVyYXRvciwgc3R5bGUpOwotICAgICAg
ICBpbmxpbmVDb250ZW50LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElubGluZVRleHRJdGVtPihp
bmxpbmVCb3gsIGN1cnJlbnRQb3NpdGlvbiwgbGVuZ3RoLCBmYWxzZSwgZmFsc2UpKTsKKyAgICAg
ICAgaW5saW5lQ29udGVudC5hcHBlbmQobWFrZVVuaXF1ZTxJbmxpbmVUZXh0SXRlbT4oaW5saW5l
Qm94LCBjdXJyZW50UG9zaXRpb24sIGxlbmd0aCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIGN1
cnJlbnRQb3NpdGlvbiArPSBsZW5ndGg7CiAgICAgfQogfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0SXRlbT4gSW5saW5lVGV4dEl0ZW06OnNwbGl0KHVuc2ln
bmVkIHNwbGl0UG9zaXRpb24sIHVuCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3BsaXRQb3NpdGlv
biA+PSB0aGlzLT5zdGFydCgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChzcGxpdFBvc2l0aW9uICsg
bGVuZ3RoIDw9IGVuZCgpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVUZXh0
SXRlbT4obGF5b3V0Qm94KCksIHNwbGl0UG9zaXRpb24sIGxlbmd0aCwgaXNXaGl0ZXNwYWNlKCks
IGlzQ29sbGFwc2VkKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZVRleHRJdGVtPihs
YXlvdXRCb3goKSwgc3BsaXRQb3NpdGlvbiwgbGVuZ3RoLCBpc1doaXRlc3BhY2UoKSwgaXNDb2xs
YXBzZWQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3guY3BwCmluZGV4IDgwODRlMmJiNjllOGM5MmFhYTliN2JlNmQ4YTE0Yjc3OTUyOTEy
MDMuLjNiYWY5ZWFhMWZiYTkyYzcwZjRjNmM3MzI5NWIxMzhiMzFiYzViOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtNDUsNyArNDUs
NyBAQCBCb3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5cGVGbAogICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkK
IHsKICAgICBpZiAoaXNSZXBsYWNlZCgpKQotICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnJlcGxh
Y2VkID0gc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlZD4oKnRoaXMpOworICAgICAgICBlbnN1cmVS
YXJlRGF0YSgpLnJlcGxhY2VkID0gbWFrZVVuaXF1ZTxSZXBsYWNlZD4oKnRoaXMpOwogfQogCiBC
b3g6OkJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5
bGUmJiBzdHlsZSkKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBjb25zdCBCb3g6OkJveFJhcmVEYXRhJiBC
b3g6OnJhcmVEYXRhKCkgY29uc3QKIEJveDo6Qm94UmFyZURhdGEmIEJveDo6ZW5zdXJlUmFyZURh
dGEoKQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFyZURhdGFN
YXAoKS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hSYXJlRGF0
YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAoKS5lbnN1
cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxCb3hSYXJlRGF0YT4oKTsgfSkuaXRlcmF0
b3ItPnZhbHVlOwogfQogCiB2b2lkIEJveDo6cmVtb3ZlUmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmlu
ZGV4IGFiMjg0ZWEwOTliOGZhM2ZmYTcyNzRlMDZlNGNlY2NhZjg0NzQzMDcuLmYyYWZjYWJkMGEz
ODFjNmQ1YzhkYTM5ZDM0NmUxYWVhMzNkNDdiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTEzMCwyNSAr
MTMwLDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRC
b3goY29uc3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+
KGNoaWxkUmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDbGVhcmx5IHRoZXJlIG11c3Qg
YmUgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoaXMuCiAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJl
ci5zdHlsZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAg
Y2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJveD4oZG93bmNhc3Q8UmVuZGVyVGV4
dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJl
bnRSZW5kZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VV
bmlxdWU8Qm94Pihkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKS5vcmlnaW5hbFRl
eHQoKSwgUmVuZGVyU3R5bGU6OmNsb25lKHBhcmVudFJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPEJv
eD4oZG93bmNhc3Q8UmVuZGVyVGV4dD4oY2hpbGRSZW5kZXJlcikub3JpZ2luYWxUZXh0KCksIFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudFJlbmRlcmVy
LnN0eWxlKCksIERpc3BsYXlUeXBlOjpJbmxpbmUpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5b3V0
Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGRvd25jYXN0PFJlbmRlclRleHQ+KGNoaWxkUmVuZGVyZXIp
Lm9yaWdpbmFsVGV4dCgpLCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlz
cGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CiAgICAg
ICAgIHJldHVybiBjaGlsZExheW91dEJveDsKICAgICB9CiAKICAgICBhdXRvJiByZW5kZXJlciA9
IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVyZXIpOwogICAgIGF1dG8gZGlzcGxh
eVR5cGUgPSByZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKTsKICAgICBpZiAoaXM8UmVuZGVyTGlu
ZUJyZWFrPihyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJveD4o
ZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIu
c3R5bGUoKSkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1
dGVzKHJlbmRlcmVyKSwgUmVuZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKIAog
ICAgIGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpKSB7CiAgICAgICAgIC8vIENvbnN0cnVj
dCB0aGUgcHJpbmNpcGFsIHRhYmxlIHdyYXBwZXIgYm94IChhbmQgbm90IHRoZSB0YWJsZSBib3gg
aXRzZWxmKS4KLSAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRh
aW5lcj4oQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OlRhYmxlV3Jh
cHBlckJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAg
ICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRy
aWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVXcmFwcGVyQm94IH0sIFJlbmRlclN0eWxl
OjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJSZXBs
YWNlZD4ocmVuZGVyZXIpKSB7CiAgICAgICAgIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlw
ZTo6QmxvY2spCi0gICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8
Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8
Qm94PihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVu
ZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKKyAgICAgICAgICAgIGNoaWxkTGF5
b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVu
ZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgLy8gRklYTUU6IFdl
IGRvbid0IHlldCBzdXBwb3J0IGFsbCByZXBsYWNlZCBlbGVtZW50cyBhbmQgdGhpcyBpcyB0ZW1w
b3JhcnkgYW55d2F5LgogICAgICAgICBpZiAoY2hpbGRMYXlvdXRCb3gtPnJlcGxhY2VkKCkpCiAg
ICAgICAgICAgICBjaGlsZExheW91dEJveC0+cmVwbGFjZWQoKS0+c2V0SW50cmluc2ljU2l6ZShk
b3duY2FzdDxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpLmludHJpbnNpY1NpemUoKSk7CkBAIC0x
NjMsMTggKzE2MywxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRl
TGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgICAgICAgICAgICAg
IGF1dG8gc3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAg
ICAgICAgICAgICAgICAgc3R5bGUtPnNldFRvcCh7IG9mZnNldC0+aGVpZ2h0KCksIEZpeGVkIH0p
OwogICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRMZWZ0KHsgb2Zmc2V0LT53aWR0aCgpLCBGaXhl
ZCB9KTsKLSAgICAgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGFpbmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFdURk1vdmUoKnN0eWxlKSk7
CisgICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4o
ZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBXVEZNb3ZlKCpzdHlsZSkpOwogICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6
Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94
ID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1dGVzKHJlbmRlcmVyKSwgUmVu
ZGVyU3R5bGU6OmNsb25lKHJlbmRlcmVyLnN0eWxlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmIChk
aXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lKQotICAgICAgICAgICAgY2hpbGRMYXlv
dXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVu
ZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAg
ICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0
ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAg
ICAgICBlbHNlIGlmIChkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6SW5saW5lQmxvY2spCi0g
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihl
bGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5z
dHlsZSgpKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFp
bmVyPihlbGVtZW50QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5k
ZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKGRpc3BsYXlUeXBlID09IERpc3BsYXlU
eXBlOjpUYWJsZUNhcHRpb24gfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ2Vs
bCkgewotICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRh
aW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xvbmUocmVu
ZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVl
PENvbnRhaW5lcj4oZWxlbWVudEF0dHJpYnV0ZXMocmVuZGVyZXIpLCBSZW5kZXJTdHlsZTo6Y2xv
bmUocmVuZGVyZXIuc3R5bGUoKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGRpc3BsYXlUeXBlID09
IERpc3BsYXlUeXBlOjpUYWJsZVJvd0dyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBl
OjpUYWJsZUhlYWRlckdyb3VwIHx8IGRpc3BsYXlUeXBlID09IERpc3BsYXlUeXBlOjpUYWJsZUZv
b3Rlckdyb3VwCiAgICAgICAgICAgICB8fCBkaXNwbGF5VHlwZSA9PSBEaXNwbGF5VHlwZTo6VGFi
bGVSb3cgfHwgZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uR3JvdXAgfHwg
ZGlzcGxheVR5cGUgPT0gRGlzcGxheVR5cGU6OlRhYmxlQ29sdW1uKSB7Ci0gICAgICAgICAgICBj
aGlsZExheW91dEJveCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGFpbmVyPihlbGVtZW50QXR0cmli
dXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgpKSk7Cisg
ICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihlbGVtZW50
QXR0cmlidXRlcyhyZW5kZXJlciksIFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci5zdHlsZSgp
KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVE
X1lFVCgpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lk
IFRyZWVCdWlsZGVyOjpjcmVhdGVUYWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFi
bGVSZW5kZXJlciwgQ29udGFpbgogICAgICAgICB0YWJsZUNoaWxkID0gdGFibGVDaGlsZC0+bmV4
dFNpYmxpbmcoKTsKICAgICB9CiAKLSAgICBhdXRvIHRhYmxlQm94ID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250YWluZXI+KEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6OkVsZW1lbnRUeXBlOjpU
YWJsZUJveCB9LCBSZW5kZXJTdHlsZTo6Y2xvbmUodGFibGVSZW5kZXJlci5zdHlsZSgpKSk7Cisg
ICAgYXV0byB0YWJsZUJveCA9IG1ha2VVbmlxdWU8Q29udGFpbmVyPihCb3g6OkVsZW1lbnRBdHRy
aWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6VGFibGVCb3ggfSwgUmVuZGVyU3R5bGU6OmNsb25l
KHRhYmxlUmVuZGVyZXIuc3R5bGUoKSkpOwogICAgIGFwcGVuZENoaWxkKHRhYmxlV3JhcHBlckJv
eCwgKnRhYmxlQm94KTsKICAgICB3aGlsZSAodGFibGVDaGlsZCkgewogICAgICAgICBUcmVlQnVp
bGRlcjo6Y3JlYXRlU3ViVHJlZShkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGFibGVDaGlsZCks
ICp0YWJsZUJveCk7CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBwcmludExheW91dFRyZWVGb3JM
aXZlRG9jdW1lbnRzKCkKICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZmluZCBhIHdheSB0byBv
dXRwdXQgZ2VvbWV0cnkgd2l0aG91dCBsYXlvdXQgY29udGV4dC4KICAgICAgICAgYXV0byYgcmVu
ZGVyVmlldyA9ICpkb2N1bWVudC0+cmVuZGVyVmlldygpOwogICAgICAgICBhdXRvIGluaXRpYWxD
b250YWluaW5nQmxvY2sgPSBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0VHJlZShyZW5kZXJWaWV3
KTsKLSAgICAgICAgYXV0byBsYXlvdXRTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5b3V0OjpM
YXlvdXRTdGF0ZT4oKmluaXRpYWxDb250YWluaW5nQmxvY2spOworICAgICAgICBhdXRvIGxheW91
dFN0YXRlID0gbWFrZVVuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRlPigqaW5pdGlhbENvbnRhaW5p
bmdCbG9jayk7CiAgICAgICAgIGxheW91dFN0YXRlLT5zZXRRdWlya3NNb2RlKHJlbmRlclZpZXcu
ZG9jdW1lbnQoKS5pbkxpbWl0ZWRRdWlya3NNb2RlKCkgPyBMYXlvdXRTdGF0ZTo6UXVpcmtzTW9k
ZTo6TGltaXRlZCA6IChyZW5kZXJWaWV3LmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkgPyBMYXlv
dXRTdGF0ZTo6UXVpcmtzTW9kZTo6WWVzIDogTGF5b3V0U3RhdGU6OlF1aXJrc01vZGU6Ok5vKSk7
CiAgICAgICAgIGxheW91dFN0YXRlLT51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgc2hvd0xheW91
dFRyZWUoKmluaXRpYWxDb250YWluaW5nQmxvY2ssIGxheW91dFN0YXRlLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcApp
bmRleCA5ZTA4NWZkYjRhMDg1MzRjYTAyYmMxODI5ZDc2YTJkNDk4NzAxNGE1Li4zZTZiZGYzOWIy
ZDcwZTA0YzcxZjAzOTQxNzc0YWM1MGEyY2JmYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuY3BwCkBAIC0xMTgsMTMgKzExOCwx
MyBAQCB2b2lkIFRhYmxlR3JpZDo6YXBwZW5kQ2VsbChjb25zdCBCb3gmIHRhYmxlQ2VsbEJveCkK
ICAgICAgICAgICAgIGluaXRpYWxTbG90UG9zaXRpb24ubW92ZSgxLCAwKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICBhdXRvIGNlbGxJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxDZWxsSW5mbz4odGFi
bGVDZWxsQm94LCBpbml0aWFsU2xvdFBvc2l0aW9uLCBDZWxsU2l6ZSB7IHJvd1NwYW4sIGNvbHVt
blNwYW4gfSk7CisgICAgYXV0byBjZWxsSW5mbyA9IG1ha2VVbmlxdWU8Q2VsbEluZm8+KHRhYmxl
Q2VsbEJveCwgaW5pdGlhbFNsb3RQb3NpdGlvbiwgQ2VsbFNpemUgeyByb3dTcGFuLCBjb2x1bW5T
cGFuIH0pOwogICAgIC8vIFJvdyBhbmQgY29sdW1uIHNwYW5uZXJzIGNyZWF0ZSBhZGRpdGlvbmFs
IHNsb3RzLgogICAgIGZvciAoaW50IHJvdyA9IDE7IHJvdyA8PSByb3dTcGFuOyArK3Jvdykgewog
ICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAxOyBjb2x1bW4gPD0gY29sdW1uU3BhbjsgKytjb2x1
bW4pIHsKICAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBTbG90UG9zaXRpb24geyBpbml0aWFs
U2xvdFBvc2l0aW9uLngoKSArIHJvdyAtIDEsIGluaXRpYWxTbG90UG9zaXRpb24ueSgpICsgY29s
dW1uIC0gMSB9OwogICAgICAgICAgICAgQVNTRVJUKCFtX3Nsb3RNYXAuY29udGFpbnMocG9zaXRp
b24pKTsKLSAgICAgICAgICAgIG1fc2xvdE1hcC5hZGQocG9zaXRpb24sIHN0ZDo6bWFrZV91bmlx
dWU8U2xvdEluZm8+KCpjZWxsSW5mbykpOworICAgICAgICAgICAgbV9zbG90TWFwLmFkZChwb3Np
dGlvbiwgbWFrZVVuaXF1ZTxTbG90SW5mbz4oKmNlbGxJbmZvKSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgLy8gSW5pdGlhbGl6ZSBjb2x1bW5zL3Jvd3MgaWYgbmVlZGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDUxZDc3ZTRhZjFkYmRkZjA0NWE5MmMxYzhh
ZDNiOTllYWNlYjk3YjUuLmI0OThhMjI0YjE5MGM2Y2U4NDRlYjlkZDdlYjliN2ExMDVkNzZkYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZShE
b2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2EKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29u
dGVudEZpbHRlcj4oV1RGTW92ZShmaWx0ZXJzKSwgZG9jdW1lbnRMb2FkZXIpOworICAgIHJldHVy
biBtYWtlVW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURk1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9h
ZGVyKTsKIH0KIAogQ29udGVudEZpbHRlcjo6Q29udGVudEZpbHRlcihDb250YWluZXImJiBjb250
ZW50RmlsdGVycywgRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBkMGQ1
NGI5N2VhZTcyMDQyNmY5NjFjOGRhZTg5NWUyMDM2OWNlZGNjLi5jNGNlNWY1NTIxNzBiM2NmYzhi
ODQxYjU5YTUxMGZkNzVhYTgzZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgdmFs
aWRhdGVQcmVmbGlnaHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzCiAgICAgaWYgKCFwYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2socmVzcG9u
c2UsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzZWN1cml0eU9yaWdpbiwgZXJyb3JEZXNjcmlw
dGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxDcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4oc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogICAg
IGlmICghcmVzdWx0LT5wYXJzZShyZXNwb25zZSkKICAgICAgICAgfHwgIXJlc3VsdC0+YWxsb3dz
Q3Jvc3NPcmlnaW5NZXRob2QocmVxdWVzdC5odHRwTWV0aG9kKCksIHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBlcnJvckRlc2NyaXB0aW9uKQogICAgICAgICB8fCAhcmVzdWx0LT5hbGxvd3NDcm9z
c09yaWdpbkhlYWRlcnMocmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCksIHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBlcnJvckRlc2NyaXB0aW9uKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKaW5kZXggZGUwOWU3MDM5OWNjNzQ3ZTg4NzM2OTc4MzcyNGU2ZGFhOWZj
Nzg4Yi4uMDQ1NWNhZmM1OWZmN2I2ZWExZjlhMmNkMzkzMWE2OWU5ZjY5NDQ1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgRG9j
dW1lbnRMb2FkZXI6OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3Vic3RpdHV0ZUQKICAgICAsIG1fb3JpZ2luYWxTdWJzdGl0dXRlRGF0YVdhc1Zh
bGlkKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNl
RGVsaXZlcnlUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VE
ZWxpdmVyeVRpbWVyRmlyZWQpCiAgICAgLCBtX2RhdGFMb2FkVGltZXIoKnRoaXMsICZEb2N1bWVu
dExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KQotICAgICwgbV9hcHBsaWNhdGlv
bkNhY2hlSG9zdChzdGQ6Om1ha2VfdW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykp
CisgICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0KG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNo
ZUhvc3Q+KCp0aGlzKSkKIHsKIH0KIApAQCAtMTMzNiw3ICsxMzM2LDcgQEAgdWludDY0X3QgRG9j
dW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCkKICAgICBpZiAobWFuaWZlc3RV
UkwuaXNFbXB0eSgpIHx8ICFtYW5pZmVzdFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgYXV0byBtYW5pZmVzdExvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8QXBwbGljYXRp
b25NYW5pZmVzdExvYWRlcj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7Cisg
ICAgYXV0byBtYW5pZmVzdExvYWRlciA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25NYW5pZmVzdExv
YWRlcj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7CiAgICAgYXV0byogcmF3
TWFuaWZlc3RMb2FkZXIgPSBtYW5pZmVzdExvYWRlci5nZXQoKTsKICAgICBhdXRvIGNhbGxiYWNr
SUQgPSBuZXh0Q2FsbGJhY2tJRCsrOwogICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMu
c2V0KFdURk1vdmUobWFuaWZlc3RMb2FkZXIpLCBjYWxsYmFja0lEKTsKQEAgLTE0MjcsNyArMTQy
Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYgYXJj
aGl2ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2
ZSYgYXJjaGl2ZSkKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKLSAg
ICAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uPigpOworICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24gPSBtYWtlVW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7CiAgICAgbV9h
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRBbGxSZXNvdXJjZXMoYXJjaGl2ZSk7CiB9CiAK
QEAgLTE0MzYsNyArMTQzNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFsbEFyY2hpdmVS
ZXNvdXJjZXMoQXJjaGl2ZSYgYXJjaGl2ZSkKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hp
dmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIHJlc291cmNlKQogewogICAgIGlmICgh
bV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uKQotICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7
CisgICAgICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbiA9IG1ha2VVbmlxdWU8QXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbj4oKTsKICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24t
PmFkZFJlc291cmNlKFdURk1vdmUocmVzb3VyY2UpKTsKIH0KIApAQCAtMTk2Myw3ICsxOTYzLDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bG9hZE1haW5SZXNvdXJjZShSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBieSBjbGVhcmlu
ZyBtX3JlcXVlc3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVIb3N0CiAgICAg
ICAgIC8vIGlzIG5vdyBpbiBhIHN0YXRlIHdoZXJlIHN0YXJ0aW5nIGFuIGVtcHR5IGxvYWQgd2ls
bCBiZSBpbmNvbnNpc3RlbnQuIFJlcGxhY2UgaXQgd2l0aAogICAgICAgICAvLyBhIG5ldyBBcHBs
aWNhdGlvbkNhY2hlSG9zdC4KLSAgICAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdCA9IHN0ZDo6
bWFrZV91bmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKTsKKyAgICAgICAgbV9hcHBs
aWNhdGlvbkNhY2hlSG9zdCA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlz
KTsKICAgICAgICAgbWF5YmVMb2FkRW1wdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTIxMjIsNyArMjEyMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lv
bkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIGljb25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEljb25M
b2FkZXI+KCp0aGlzLCBpY29uLnVybCk7CisgICAgYXV0byBpY29uTG9hZGVyID0gbWFrZVVuaXF1
ZTxJY29uTG9hZGVyPigqdGhpcywgaWNvbi51cmwpOwogICAgIGF1dG8qIHJhd0ljb25Mb2FkZXIg
PSBpY29uTG9hZGVyLmdldCgpOwogICAgIG1faWNvbkxvYWRlcnMuc2V0KFdURk1vdmUoaWNvbkxv
YWRlciksIG5ld0NhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCmluZGV4IDA0NTNkN2U2ZDllMzY1NjAyYWM5YWJkOTk5YjRlMmZhYjEzMmFkYjQuLjkzODM0
MmQwOTM1MDJlZmM2ODkwNWM2YzM0YTk4MTdiYWQ1NDIxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCkBAIC01NzgsNyArNTc4LDcgQEAgUGFnZUNvbmZpZ3VyYXRpb24g
cGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKCkKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8RW1wdHlQcm9ncmVzc1RyYWNrZXJDbGllbnQ+IGR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9ICZkdW1t
eVByb2dyZXNzVHJhY2tlckNsaWVudC5nZXQoKTsKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmRp
YWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50PigpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmRpYWdub3N0aWNMb2dnaW5n
Q2xpZW50ID0gbWFrZVVuaXF1ZTxFbXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigpOwogCiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgPSBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6Y3JlYXRlKHsgfSwgeyB9KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5k
YXRhYmFzZVByb3ZpZGVyID0gYWRvcHRSZWYoKm5ldyBFbXB0eURhdGFiYXNlUHJvdmlkZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZTBmNDYxNDhmMmRmYWE4N2Y2
YjI0MjYzN2Q1MDg5MTg1MjBhNjBhMi4uODNiZWIyNzE3ZDMzN2MzNDFjMDE1ZWNmNDZkNGYzNzNl
MDhiMTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNzAsMTAg
KzI3MCwxMCBAQCBjbGFzcyBGcmFtZUxvYWRlcjo6RnJhbWVQcm9ncmVzc1RyYWNrZXIgewogRnJh
bWVMb2FkZXI6OkZyYW1lTG9hZGVyKEZyYW1lJiBmcmFtZSwgRnJhbWVMb2FkZXJDbGllbnQmIGNs
aWVudCkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAg
LCBtX3BvbGljeUNoZWNrZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2xpY3lDaGVja2VyPihmcmFtZSkp
Ci0gICAgLCBtX2hpc3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q29udHJvbGxlcj4oZnJh
bWUpKQorICAgICwgbV9wb2xpY3lDaGVja2VyKG1ha2VVbmlxdWU8UG9saWN5Q2hlY2tlcj4oZnJh
bWUpKQorICAgICwgbV9oaXN0b3J5KG1ha2VVbmlxdWU8SGlzdG9yeUNvbnRyb2xsZXI+KGZyYW1l
KSkKICAgICAsIG1fbm90aWZpZXIoZnJhbWUpCi0gICAgLCBtX3N1YmZyYW1lTG9hZGVyKHN0ZDo6
bWFrZV91bmlxdWU8U3ViZnJhbWVMb2FkZXI+KGZyYW1lKSkKKyAgICAsIG1fc3ViZnJhbWVMb2Fk
ZXIobWFrZVVuaXF1ZTxTdWJmcmFtZUxvYWRlcj4oZnJhbWUpKQogICAgICwgbV9taXhlZENvbnRl
bnRDaGVja2VyKGZyYW1lKQogICAgICwgbV9zdGF0ZShGcmFtZVN0YXRlUHJvdmlzaW9uYWwpCiAg
ICAgLCBtX2xvYWRUeXBlKEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkKQpAQCAtMzIxLDcgKzMyMSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQogICAgIG1fc3RhdGVNYWNoaW5lLmFkdmFuY2VU
byhGcmFtZUxvYWRlclN0YXRlTWFjaGluZTo6RGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50
KTsKIAogICAgIG1fbmV0d29ya2luZ0NvbnRleHQgPSBtX2NsaWVudC5jcmVhdGVOZXR3b3JraW5n
Q29udGV4dCgpOwotICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxGcmFt
ZVByb2dyZXNzVHJhY2tlcj4obV9mcmFtZSk7CisgICAgbV9wcm9ncmVzc1RyYWNrZXIgPSBtYWtl
VW5pcXVlPEZyYW1lUHJvZ3Jlc3NUcmFja2VyPihtX2ZyYW1lKTsKIH0KIAogdm9pZCBGcmFtZUxv
YWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoY29uc3QgVVJMJikKQEAgLTM0Niw3ICsz
NDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudChjb25z
dCBVUkwmKQogICAgIG1fbmVlZHNDbGVhciA9IHRydWU7CiAKICAgICBtX25ldHdvcmtpbmdDb250
ZXh0ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKLSAgICBtX3Byb2dyZXNz
VHJhY2tlciA9IHN0ZDo6bWFrZV91bmlxdWU8RnJhbWVQcm9ncmVzc1RyYWNrZXI+KG1fZnJhbWUp
OworICAgIG1fcHJvZ3Jlc3NUcmFja2VyID0gbWFrZVVuaXF1ZTxGcmFtZVByb2dyZXNzVHJhY2tl
cj4obV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9v
bCBkZWZlcnMpCkBAIC0yNjc4LDcgKzI2NzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hD
aGlsZHJlbigpCiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
YnJvd3NpbmctdGhlLXdlYi5odG1sI25hdmlnYXRlCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdmln
YXRpb25EaXNhYmxlcj4gbmF2aWdhdGlvbkRpc2FibGVyOwogICAgIGlmIChtX2ZyYW1lLmlzTWFp
bkZyYW1lKCkpCi0gICAgICAgIG5hdmlnYXRpb25EaXNhYmxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TmF2aWdhdGlvbkRpc2FibGVyPigmbV9mcmFtZSk7CisgICAgICAgIG5hdmlnYXRpb25EaXNhYmxl
ciA9IG1ha2VVbmlxdWU8TmF2aWdhdGlvbkRpc2FibGVyPigmbV9mcmFtZSk7CiAKICAgICAvLyBB
bnkgc3ViZnJhbWUgaW5zZXJ0ZWQgYnkgdW5sb2FkIGV2ZW50IGhhbmRsZXJzIGV4ZWN1dGVkIGlu
IHRoZSBsb29wIGJlbG93IHdpbGwgbm90IGdldCB1bmxvYWRlZAogICAgIC8vIGJlY2F1c2Ugd2Ug
Y3JlYXRlIGEgY29weSBvZiB0aGUgc3ViZnJhbWVzIGxpc3QgYmVmb3JlIGxvb3BpbmcuIFRoZXJl
Zm9yZSwgaXQgd291bGQgYmUgdW5zYWZlIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKaW5kZXggY2RmNjQ5NTI2ZmUzZDFmMzMyOGQ2ZTM2YzIwMTA4N2MzMWYxNjU1Yi4uNDA4YzUz
NjQyOWUzYjA4Nzc5OGViOTdlNzY4NjRjYzk0ODY2NjdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmNwcApAQCAtMTQyLDIyICsxNDIsMjIgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxMaW5rUHJlbG9hZFJlc291cmNlQ2xpZW50PiBjcmVhdGVMaW5rUHJlbG9hZFJlc291cmNlQ2xp
ZW4KIHsKICAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVkUmVz
b3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtQcmVsb2FkSW1hZ2VSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNo
ZWRJbWFnZT4ocmVzb3VyY2UpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxv
YWRJbWFnZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZEltYWdlPihyZXNv
dXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OlNjcmlwdDoKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkU2NyaXB0PihyZXNvdXJjZSkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxMaW5rUHJlbG9hZERlZmF1bHRSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBk
b3duY2FzdDxDYWNoZWRTY3JpcHQ+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6VHlwZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TGlua1ByZWxvYWRTdHlsZVJlc291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZENT
U1N0eWxlU2hlZXQ+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExpbmtQ
cmVsb2FkU3R5bGVSZXNvdXJjZUNsaWVudD4obG9hZGVyLCBkb3duY2FzdDxDYWNoZWRDU1NTdHls
ZVNoZWV0PihyZXNvdXJjZSkpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6OkZvbnRS
ZXNvdXJjZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TGlua1ByZWxvYWRGb250
UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWRGb250UmVzb3VyY2VDbGllbnQ+
KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkRm9udD4ocmVzb3VyY2UpKTsKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3Vy
Y2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExpbmtQcmVsb2FkRGVmYXVsdFJl
c291cmNlQ2xpZW50Pihsb2FkZXIsIGRvd25jYXN0PENhY2hlZFRleHRUcmFjaz4ocmVzb3VyY2Up
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGlua1ByZWxvYWREZWZhdWx0UmVzb3VyY2VD
bGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkVGV4dFRyYWNrPihyZXNvdXJjZSkpOwogI2Vu
ZGlmCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWVkaWFSZXNvdXJjZToKICAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubWVkaWFQ
cmVsb2FkaW5nRW5hYmxlZCgpKTsKICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6VHlwZTo6UmF3UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPExpbmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2Fj
aGVkUmF3UmVzb3VyY2U+KHJlc291cmNlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPExp
bmtQcmVsb2FkUmF3UmVzb3VyY2VDbGllbnQ+KGxvYWRlciwgZG93bmNhc3Q8Q2FjaGVkUmF3UmVz
b3VyY2U+KHJlc291cmNlKSk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJl
c291cmNlOgogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Okljb246CiAjaWYgRU5BQkxF
KFNWR19GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmNwcAppbmRleCA1NThjNzgwNDk1N2VjODgyODgxOGVmNTYxOWJmOTgzZDNmOTQwYTU1Li4zYzJj
MjUyYWE1MWI5NjkyOTVlY2YxNDgxMjU0YTMyNDBlYzQyYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9p
ZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KERvY3VtZW50JiBpbml0aWF0
aW5nRG9jdW1lbnQsIGRvdWJsZQogICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxp
c3QgaXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCiAgICAgaWYgKCFt
X3JlZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpIHsKICAgICAgICAgYXV0
byBsb2NrQmFja0ZvcndhcmRMaXN0ID0gZGVsYXkgPD0gMSA/IExvY2tCYWNrRm9yd2FyZExpc3Q6
OlllcyA6IExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vOwotICAgICAgICBzY2hlZHVsZShzdGQ6Om1h
a2VfdW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0Pihpbml0aWF0aW5nRG9jdW1lbnQsIGRlbGF5LCAm
bV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZ
ZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKKyAgICAgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxT
Y2hlZHVsZWRSZWRpcmVjdD4oaW5pdGlhdGluZ0RvY3VtZW50LCBkZWxheSwgJm1fZnJhbWUuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFj
a0ZvcndhcmRMaXN0KSk7CiAgICAgfQogfQogCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKERvY3VtZW50JiBpbml0aWF0
aW5nRG9jdW1lbnQsIFMKICAgICAvLyBUaGlzIG1heSBoYXBwZW4gd2hlbiBhIGZyYW1lIGNoYW5n
ZXMgdGhlIGxvY2F0aW9uIG9mIGFub3RoZXIgZnJhbWUuCiAgICAgYm9vbCBkdXJpbmdMb2FkID0g
IWxvYWRlci5zdGF0ZU1hY2hpbmUoKS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKTsK
IAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2U+
KGluaXRpYXRpbmdEb2N1bWVudCwgJnNlY3VyaXR5T3JpZ2luLCB1cmwsIHJlZmVycmVyLCBsb2Nr
SGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZExvY2F0aW9u
Q2hhbmdlPihpbml0aWF0aW5nRG9jdW1lbnQsICZzZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJl
ciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVGb3JtU3VibWlzc2lvbihSZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvbikKQEAg
LTQ2OCw3ICs0NjgsNyBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1
Ym1pc3Npb24oUmVmPEZvcm1TdWJtaXNzaW9uPiYmIHN1Ym1pc3NpbwogICAgICAgICBsb2NrQmFj
a0ZvcndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzOwogICAgIH0KICAgICAKLSAg
ICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uPihXVEZN
b3ZlKHN1Ym1pc3Npb24pLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CisgICAg
c2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlzc2lvbj4oV1RGTW92ZShzdWJt
aXNzaW9uKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOwogfQogCiB2b2lkIE5h
dmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChEb2N1bWVudCYgaW5pdGlhdGluZ0Rv
Y3VtZW50KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2No
ZWR1bGVSZWZyZXNoKERvY3VtZW50JiBpbml0aWF0aW5nRG9jdW1lbnQpCiAgICAgaWYgKHVybC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlx
dWU8U2NoZWR1bGVkUmVmcmVzaD4oaW5pdGlhdGluZ0RvY3VtZW50LCAmbV9mcmFtZS5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIG1fZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZl
cnJlcigpKSk7CisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVsZWRSZWZyZXNoPihpbml0
aWF0aW5nRG9jdW1lbnQsICZtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVy
bCwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKIH0KIAogdm9pZCBOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKQEAg
LTQ5OCwxMyArNDk4LDEzIEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0
b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCiAgICAgfQogCiAgICAgLy8gSW4gYWxsIG90aGVyIGNh
c2VzLCBzY2hlZHVsZSB0aGUgaGlzdG9yeSB0cmF2ZXJzYWwgdG8gb2NjdXIgYXN5bmNocm9ub3Vz
bHkuCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRIaXN0b3J5TmF2aWdh
dGlvbj4oc3RlcHMpKTsKKyAgICBzY2hlZHVsZShtYWtlVW5pcXVlPFNjaGVkdWxlZEhpc3RvcnlO
YXZpZ2F0aW9uPihzdGVwcykpOwogfQogCiB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVk
dWxlUGFnZUJsb2NrKERvY3VtZW50JiBvcmlnaW5Eb2N1bWVudCkKIHsKICAgICBpZiAoc2hvdWxk
U2NoZWR1bGVOYXZpZ2F0aW9uKCkpCi0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8
U2NoZWR1bGVkUGFnZUJsb2NrPihvcmlnaW5Eb2N1bWVudCkpOworICAgICAgICBzY2hlZHVsZSht
YWtlVW5pcXVlPFNjaGVkdWxlZFBhZ2VCbG9jaz4ob3JpZ2luRG9jdW1lbnQpKTsKIH0KIAogdm9p
ZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjp0aW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggZTE3YTlkYzcyZGUwMzdjOTYzNGJjMWNjOTNjMmMx
YTc3YTg2YmZhMy4uMjgxN2E3NjY2NDU3YjIzOTczYTY4ZmNmN2JjMDE4MGMxMmJmNWNkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTIwMSw3ICsyMDEs
NyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6aW5jcmVtZW50UHJvZ3Jlc3ModW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZQogCiAgICAgYXV0byYgaXRlbSA9IG1fcHJvZ3Jl
c3NJdGVtcy5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwogICAgIGlm
ICghaXRlbSkgewotICAgICAgICBpdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9ncmVzc0l0ZW0+
KGVzdGltYXRlZExlbmd0aCk7CisgICAgICAgIGl0ZW0gPSBtYWtlVW5pcXVlPFByb2dyZXNzSXRl
bT4oZXN0aW1hdGVkTGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCmluZGV4IGVhNWRiZmJhYWIy
MGJmZDQzZGVhY2YxZTc3NjExYzM0MzNhYmFiODMuLjgyNDZiYjA3MDZjZDBjMDcxZjg5OTYyODk4
NmE1YmE1MWM0OGI2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVz
b3VyY2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNl
RGVjb2Rlci5jcHAKQEAgLTUzNSw3ICs1MzUsNyBAQCBib29sIFRleHRSZXNvdXJjZURlY29kZXI6
OmNoZWNrRm9ySGVhZENoYXJzZXQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbiwgYm9vbAog
ICAgIGlmIChtX2NvbnRlbnRUeXBlID09IFhNTCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBtX2NoYXJzZXRQYXJzZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBhcnNl
cj4oKTsKKyAgICBtX2NoYXJzZXRQYXJzZXIgPSBtYWtlVW5pcXVlPEhUTUxNZXRhQ2hhcnNldFBh
cnNlcj4oKTsKICAgICByZXR1cm4gY2hlY2tGb3JNZXRhQ2hhcnNldChkYXRhLCBsZW4pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGNhOWU2YzQz
NDNkNzQwMTA1NTNhOWUxMGZhNjU2M2VlNTIzOTFiYmUuLmZhOTI2ZWEwNjJhZGZmMjA1NzBjOGEz
NjkxMjQ2NzJiOWVmNTY2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3
Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbV9jdWVQYXJzZXIpCi0gICAgICAgIG1fY3VlUGFyc2VyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJWVFRQYXJzZXI+KHN0YXRpY19jYXN0PFdlYlZUVFBhcnNlckNsaWVudCo+KHRoaXMpLCBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBtX2N1ZVBhcnNlciA9IG1ha2VVbmlx
dWU8V2ViVlRUUGFyc2VyPihzdGF0aWNfY2FzdDxXZWJWVFRQYXJzZXJDbGllbnQqPih0aGlzKSwg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAogICAgIHdoaWxlIChtX3BhcnNlT2Zmc2V0IDwg
YnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgYXV0byBkYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0
YShtX3BhcnNlT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmNwcAppbmRleCBhMTI2M2UyZjA0NTc0YjRmMGVlNzNjMDRlOGI2MmY1Yzgw
NzJhNzU4Li43NzUzMmY4NjEzNGUwNDNhZDM3ZDNmNTk5OThhNmY1N2E0MjQxNzQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0x
MTUsMTEgKzExNSwxMSBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChjb250
ZW50U2VjdXJpdHlQb2xpY3kpOwogCiAgICAgYXV0byBzZWN1cml0eU9yaWdpbkNvcHkgPSBzZWN1
cml0eU9yaWdpbi0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgYXV0byBjb250ZW50U2VjdXJpdHlQb2xp
Y3lDb3B5ID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KGdsb2JhbFNj
b3BlLnVybCgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGlj
eUNvcHkgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oZ2xvYmFsU2NvcGUudXJs
KCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHktPmNvcHlT
dGF0ZUZyb20oY29udGVudFNlY3VyaXR5UG9saWN5KTsKICAgICBjb250ZW50U2VjdXJpdHlQb2xp
Y3lDb3B5LT5jb3B5VXBncmFkZUluc2VjdXJlUmVxdWVzdFN0YXRlRnJvbSgqY29udGVudFNlY3Vy
aXR5UG9saWN5KTsKIAotICAgIGF1dG8gb3B0aW9uc0NvcHkgPSBzdGQ6Om1ha2VfdW5pcXVlPExv
YWRlclRhc2tPcHRpb25zPihvcHRpb25zLCByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLmlzTnVsbCgp
ID8gb3V0Z29pbmdSZWZlcnJlciA6IHJlcXVlc3QuaHR0cFJlZmVycmVyKCksIFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW5Db3B5KSk7CisgICAgYXV0byBvcHRpb25zQ29weSA9IG1ha2VVbmlxdWU8TG9h
ZGVyVGFza09wdGlvbnM+KG9wdGlvbnMsIHJlcXVlc3QuaHR0cFJlZmVycmVyKCkuaXNOdWxsKCkg
PyBvdXRnb2luZ1JlZmVycmVyIDogcmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgV1RGTW92ZShzZWN1
cml0eU9yaWdpbkNvcHkpKTsKIAogICAgIC8vIEFsbCBsb2FkcyBzdGFydCBvdXQgYXMgRG9jdW1l
bnQuIEluc2lkZSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIHdlIHVwZ3JhZGUgdGhpcyB0byBhIFdv
cmtlciBsb2FkLgogICAgIEFTU0VSVChvcHRpb25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250
ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZjk3ZWIw
MDQyNWJkMjliM2NiNmJjYjM0NWZiZmQ2NTIyNDA4ZjhjZS4uYmJhOTEwNDE5MTU0ZWNmNDNjMTIy
ZTJkOTBjZjg2NDU1OTdhOTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKE5vZGUmIG5vZGUs
IFdURjo6RnVuY3Rpb248Ym9vbAogICAgIC8vIGJ1dCB3ZSBjYW4gYXBwcm94aW1hdGUgdGhhdCBi
eSBjaGVja2luZyBpZiBzY3JpcHRpbmcgaXMgZW5hYmxlZCByaWdodCBub3cuCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxRdWFsaWZpZWROYW1lPj4gdGFnTmFtZXNUb0ZpbHRlcjsKICAgICBp
ZiAoZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLmlzU2NyaXB0RW5h
YmxlZCgpKSB7Ci0gICAgICAgIHRhZ05hbWVzVG9GaWx0ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZl
Y3RvcjxRdWFsaWZpZWROYW1lPj4oKTsKKyAgICAgICAgdGFnTmFtZXNUb0ZpbHRlciA9IG1ha2VV
bmlxdWU8VmVjdG9yPFF1YWxpZmllZE5hbWU+PigpOwogICAgICAgICB0YWdOYW1lc1RvRmlsdGVy
LT5hcHBlbmQoSFRNTE5hbWVzOjpub3NjcmlwdFRhZyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA4MzY4YTk1NzA1ZTMxOTJkMWY4
MTdmZjJlY2Q2ODM3ZTNmOWUxMzVkLi5lZjkzYjM1MWU3OTFkNTI3ZGFlODBmODdjNTI1YTdkYzE0
ZTdlNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
QEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpzZXRCb2R5RGF0YUZyb20oY29u
c3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBtX2ltYWdlT2JzZXJ2ZXItPmNh
Y2hlZEltYWdlcygpLmFkZCh0aGlzKTsKIAogICAgIGlmIChtX2ltYWdlICYmIGlzPFNWR0ltYWdl
PigqbV9pbWFnZSkpCi0gICAgICAgIG1fc3ZnSW1hZ2VDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8
U1ZHSW1hZ2VDYWNoZT4oJmRvd25jYXN0PFNWR0ltYWdlPigqbV9pbWFnZSkpOworICAgICAgICBt
X3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJ
bWFnZT4oKm1faW1hZ2UpKTsKIH0KIAogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkBAIC0zNTcsNyArMzU3LDcgQEAgaW5saW5lIHZv
aWQgQ2FjaGVkSW1hZ2U6OmNyZWF0ZUltYWdlKCkKIAogICAgIGlmIChtX2ltYWdlKSB7CiAgICAg
ICAgIGlmIChpczxTVkdJbWFnZT4oKm1faW1hZ2UpKQotICAgICAgICAgICAgbV9zdmdJbWFnZUNh
Y2hlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNhY2hlPigmZG93bmNhc3Q8U1ZHSW1hZ2U+
KCptX2ltYWdlKSk7CisgICAgICAgICAgICBtX3N2Z0ltYWdlQ2FjaGUgPSBtYWtlVW5pcXVlPFNW
R0ltYWdlQ2FjaGU+KCZkb3duY2FzdDxTVkdJbWFnZT4oKm1faW1hZ2UpKTsKIAogICAgICAgICAv
LyBTZW5kIHF1ZXVlZCBjb250YWluZXIgc2l6ZSByZXF1ZXN0cy4KICAgICAgICAgaWYgKG1faW1h
Z2UtPnVzZXNDb250YWluZXJTaXplKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IGJlNjE4M2FiZmE1OWQ1YzhlMTYyZmVj
MWQ2NTUyNDUyM2FkZTI3OGMuLmY5YTc1ZjM1NDUyNzY5MDJhOWU0YTVjMzViNmFjNmIxZjE1MGMz
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGly
ZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyCiAgICAg
ICAgIENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJl
c3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQoUmVkaXJlY3RQYWlyKHJlcXVlc3QsIHJlc3BvbnNlKSk7
Ci0gICAgICAgIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50PihtX2NsaWVudHMpLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4odGhpcyksIFdURk1vdmUocmVxdWVzdCksIHN0ZDo6bWFrZV91bmlxdWU8
UmVzb3VyY2VSZXNwb25zZT4ocmVzcG9uc2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVzcG9uc2VdIChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgaXRlcmF0ZUNsaWVudHMoQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+KG1fY2xpZW50cyksIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPih0aGlzKSwgV1RGTW92ZShyZXF1
ZXN0KSwgbWFrZVVuaXF1ZTxSZXNvdXJjZVJlc3BvbnNlPihyZXNwb25zZSksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+KHRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCByZXNwb25z
ZV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2Us
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggZTQzMGU0
NDdhYzQ5NDYzNmM5ODRlNzRkNDBiOTFlNjVjZGViYjUwYi4uMDU2N2QxZDVkZThjNmYxM2UxODY4
NDRhZWQ3NTU3NWNmMTdlMTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCkBAIC01NDYsNyArNTQ2LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJj
ZTo6YWRkQ2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAg
Ly8gVGhlcmVmb3JlLCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBzZW5kaW5nIGNhbGxiYWNrcyBv
biBhIGNhY2hlIGhpdCBsaWtlIG90aGVyIENhY2hlZFJlc291cmNlcywKICAgICAgICAgLy8gd2Ug
c2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmQgZW5zdXJlIHdlIG5ldmVyIGZpbmlzaCBzeW5jaHJv
bm91c2x5LgogICAgICAgICBBU1NFUlQoIW1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suY29udGFp
bnMoJmNsaWVudCkpOwotICAgICAgICBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrLmFkZCgmY2xp
ZW50LCBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrPigqdGhpcywgY2xpZW50KSk7CisgICAgICAg
IG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2suYWRkKCZjbGllbnQsIG1ha2VVbmlxdWU8Q2FsbGJh
Y2s+KCp0aGlzLCBjbGllbnQpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggODQzYTlkMWY5ZDZjODVmMTAwMGEyYzQwZjE5NjRiNDdhMmViMWM3YS4uYjM0Yjhm
ZDM1YzEwNzdhNTQ1MmFiYjM0MzIzNjFiNGNjM2QxMWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03OTEsNyAr
NzkxLDcgQEAgUmVzb3VyY2VFcnJvck9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPj4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXUKICAgICAvLyBFbnRyeSBwb2ludCB0byBo
dHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbWFpbi1mZXRjaC4KICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBvcmlnaW5hbFJlcXVlc3Q7CiAgICAgaWYgKENhY2hlZFJl
c291cmNlOjpzaG91bGRVc2VQaW5nTG9hZCh0eXBlKSB8fCByZXF1ZXN0Lm9wdGlvbnMoKS5kZXN0
aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykgewotICAg
ICAgICBvcmlnaW5hbFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4o
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IG1h
a2VVbmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKICAg
ICAgICAgb3JpZ2luYWxSZXF1ZXN0LT5jbGVhckhUVFBSZWZlcnJlcigpOwogICAgICAgICBvcmln
aW5hbFJlcXVlc3QtPmNsZWFySFRUUE9yaWdpbigpOwogICAgIH0KQEAgLTEzOTEsNyArMTM5MSw3
IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmVsCiAgICAgICAgIHJlc291cmNlVmFsdWUtPmluY3Jl
YXNlUHJlbG9hZENvdW50KCk7CiAKICAgICAgICAgaWYgKCFtX3ByZWxvYWRzKQotICAgICAgICAg
ICAgbV9wcmVsb2FkcyA9IHN0ZDo6bWFrZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3Vy
Y2UqPj4oKTsKKyAgICAgICAgICAgIG1fcHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0
PENhY2hlZFJlc291cmNlKj4+KCk7CiAgICAgICAgIG1fcHJlbG9hZHMtPmFkZChyZXNvdXJjZVZh
bHVlLmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNlOwpAQCAtMTQzMyw3ICsxNDMz
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJQcmVsb2FkcyhDbGVhclByZWxv
YWRzTW9kZSBtb2RlKQogICAgICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAgICAgICBpZiAobW9k
ZSA9PSBDbGVhclByZWxvYWRzTW9kZTo6Q2xlYXJTcGVjdWxhdGl2ZVByZWxvYWRzICYmIHJlc291
cmNlLT5pc0xpbmtQcmVsb2FkKCkpIHsKICAgICAgICAgICAgIGlmICghcmVtYWluaW5nTGlua1By
ZWxvYWRzKQotICAgICAgICAgICAgICAgIHJlbWFpbmluZ0xpbmtQcmVsb2FkcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPj4oKTsKKyAgICAgICAgICAgICAg
ICByZW1haW5pbmdMaW5rUHJlbG9hZHMgPSBtYWtlVW5pcXVlPExpc3RIYXNoU2V0PENhY2hlZFJl
c291cmNlKj4+KCk7CiAgICAgICAgICAgICByZW1haW5pbmdMaW5rUHJlbG9hZHMtPmFkZChyZXNv
dXJjZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggZDNiODA1MTQyM2MzZmM1MjRiZDhi
NmY1NWYzNWE2YWMyMjMwYjIwMi4uM2RlYWQ0NmMxZDRkNzhjZjdjZGYwM2FmZmNiZWYzOTI3ODI2
M2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6OmVuc3VyZVNlc3Npb25SZXNvdXJjZU1h
cChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IENhY2hlZFJlCiAgICAgQVNTRVJUKHNlc3Np
b25JRC5pc1ZhbGlkKCkpOwogICAgIGF1dG8mIG1hcCA9IG1fc2Vzc2lvblJlc291cmNlcy5hZGQo
c2Vzc2lvbklELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFtYXApCi0gICAg
ICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CisgICAgICAg
IG1hcCA9IG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VNYXA+KCk7CiAgICAgcmV0dXJuICptYXA7
CiB9CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRvQ2Fj
aGUoTmF0aXZlSW1hZ2VQdHImJiBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgcmVt
b3ZlSW1hZ2VGcm9tQ2FjaGUodXJsLCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92
ZSBjYWNoZSBlbnRyeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KIAogICAgIGF1dG8gYml0bWFwSW1h
Z2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCBudWxscHRyKTsKLSAgICBh
dXRvIGNhY2hlZEltYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRJbWFnZT4odXJsLCBiaXRt
YXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKTsKKyAgICBhdXRvIGNhY2hlZEltYWdlID0gbWFrZVVuaXF1ZTxDYWNoZWRJbWFnZT4odXJs
LCBiaXRtYXBJbWFnZS5wdHIoKSwgc2Vzc2lvbklELCBjb29raWVKYXIsIGRvbWFpbkZvckNhY2hl
UGFydGl0aW9uKTsKIAogICAgIGNhY2hlZEltYWdlLT5hZGRDbGllbnQoZHVtbXlDYWNoZWRJbWFn
ZUNsaWVudCgpKTsKICAgICBjYWNoZWRJbWFnZS0+c2V0RGVjb2RlZFNpemUoYml0bWFwSW1hZ2Ut
PmRlY29kZWRTaXplKCkpOwpAQCAtNDczLDcgKzQ3Myw3IEBAIGF1dG8gTWVtb3J5Q2FjaGU6Omxy
dUxpc3RGb3IoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSAtPiBMUlVMaXN0JgogCiAgICAgbV9h
bGxSZXNvdXJjZXMucmVzZXJ2ZUNhcGFjaXR5KHF1ZXVlSW5kZXggKyAxKTsKICAgICB3aGlsZSAo
bV9hbGxSZXNvdXJjZXMuc2l6ZSgpIDw9IHF1ZXVlSW5kZXgpCi0gICAgICAgIG1fYWxsUmVzb3Vy
Y2VzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPExSVUxpc3Q+KCkpOworICAgICAg
ICBtX2FsbFJlc291cmNlcy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxMUlVMaXN0PigpKTsK
ICAgICByZXR1cm4gKm1fYWxsUmVzb3VyY2VzW3F1ZXVlSW5kZXhdOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL1ByZXZpZXdMb2FkZXIubW0KaW5kZXggZjZiODIyMTc5MTZjYWQ5NWJm
ZTk2MGJiM2UzNzg0YTI3MGE5YmE2Ny4uYzVjYTVjMjVmMTFiNGQ4YTljYTkzZWZjODg5MDk5MDdm
NmI3NjYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9QcmV2aWV3TG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvUHJldmlld0xvYWRlci5tbQpA
QCAtODYsNyArODYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjoo
UmVzb3VyY2VMb2FkZXImKXJlc291cmNlTG9hZGVyIHJlc291cmNlUgogCiAgICAgX3Jlc291cmNl
TG9hZGVyID0gbWFrZVdlYWtQdHIocmVzb3VyY2VMb2FkZXIpOwogICAgIF9yZXNwb25zZSA9IHJl
c291cmNlUmVzcG9uc2U7Ci0gICAgX2NvbnZlcnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmll
d0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNlKTsKKyAgICBfY29udmVydGVyID0gbWFrZVVuaXF1
ZTxQcmV2aWV3Q29udmVydGVyPihzZWxmLCBfcmVzcG9uc2UpOwogICAgIF9idWZmZXJlZERhdGFB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIF9zaG91
bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0
dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygp
OwogCkBAIC0yNDYsNyArMjQ2LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rp
b24gKiljb25uZWN0aW9uIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKICAgICB9CiAK
ICAgICBfY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoW3NlbGYsIHJldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0gKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpIHsKLSAgICAgICAgX2NvbnZl
cnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJldmlld0NvbnZlcnRlcj4oc2VsZiwgX3Jlc3BvbnNl
LCBwYXNzd29yZCk7CisgICAgICAgIF9jb252ZXJ0ZXIgPSBtYWtlVW5pcXVlPFByZXZpZXdDb252
ZXJ0ZXI+KHNlbGYsIF9yZXNwb25zZSwgcGFzc3dvcmQpOwogICAgICAgICBbX2NvbnZlcnRlci0+
cGxhdGZvcm1Db252ZXJ0ZXIoKSBhcHBlbmREYXRhQXJyYXk6X2J1ZmZlcmVkRGF0YUFycmF5Lmdl
dCgpXTsKICAgICAgICAgW19jb252ZXJ0ZXItPnBsYXRmb3JtQ29udmVydGVyKCkgZmluaXNoZWRB
cHBlbmRpbmdEYXRhXTsKICAgICB9KTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBQcmV2aWV3TG9hZGVy
Ojp+UHJldmlld0xvYWRlcigpCiBzdGQ6OnVuaXF1ZV9wdHI8UHJldmlld0xvYWRlcj4gUHJldmll
d0xvYWRlcjo6Y3JlYXRlKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewogICAgIEFTU0VSVChQcmV2aWV3Q29udmVydGVyOjpzdXBwb3J0
c01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQcmV2aWV3TG9hZGVyPihsb2FkZXIsIHJlc3BvbnNlKTsKIH0KIAogYm9vbCBQcmV2aWV3
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYzQ3OWNh
MWY5Y2IwN2Q0YWM3YjRiOWZiMjI4NTFmMGM5OTRiMTcxNC4uNGNjZGFiMDRiN2IzZjU1MzRjZWNj
MmExOWVjMGE0YmNiN2FiMTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250
ZXh0TWVudT4gQ29udGV4dE1lbnVDb250cm9sbGVyOjptYXliZUNyZWF0ZUNvbnRleHRNZW51KEV2
ZW50CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0
TWVudT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudT4oKTsKIH0KIAogdm9p
ZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCYgZXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IGY2M2RhYTdmNjM0
NzI1NTg4NzNkYjNiNTgzYmMyNTEyYTE3NzUyN2EuLmNkYzc0ZjZkZTA5ZTkzZGU5YWFiOTIzNTZl
ZjJmYmY0NGRkMmQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwCkBAIC04OCw3ICs4OCw3IEBAIGNsYXNzIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5IGZpbmFs
IDogcHVibGljIFJlZ2lvbk92ZXJsYXkgewogCiBib29sIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5
Ojp1cGRhdGVSZWdpb24oKQogewotICAgIGF1dG8gcmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxS
ZWdpb24+KCk7CisgICAgYXV0byByZWdpb24gPSBtYWtlVW5pcXVlPFJlZ2lvbj4oKTsKICAgICAK
ICAgICBmb3IgKGNvbnN0IEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKCFm
cmFtZS0+dmlldygpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCA0OGMwNzM0NzcwZWIxMTBjMWM1ZDg0NTNkZDA4Nzk5MmU1NjQ5YTFl
Li5kMjBiOThjNDE1ZWVjODI3NmY4OTAwZjI0YzY3YTk3ZjEwMWQwYTA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgRXZlbnRIYW5kbGVyOjpF
dmVudEhhbmRsZXIoRnJhbWUmIGZyYW1lKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fcGVu
ZGluZ01vbWVudHVtV2hlZWxFdmVudHNUaW1lcigqdGhpcywgJkV2ZW50SGFuZGxlcjo6Y2xlYXJM
YXRjaGVkU3RhdGUpCiAjZW5kaWYKLSAgICAsIG1fYXV0b3Njcm9sbENvbnRyb2xsZXIoc3RkOjpt
YWtlX3VuaXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKKyAgICAsIG1fYXV0b3Njcm9sbENv
bnRyb2xsZXIobWFrZVVuaXF1ZTxBdXRvc2Nyb2xsQ29udHJvbGxlcj4oKSkKICNpZiAhRU5BQkxF
KElPU19UT1VDSF9FVkVOVFMpCiAgICAgLCBtX2Zha2VNb3VzZU1vdmVFdmVudFRpbWVyKCp0aGlz
LCAmRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRUaW1lckZpcmVkKQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMjMzNzI5NDJiMzc2M2Q5MjkzZDI2NWIzNWFj
YzE1MjVlMzRjYzAwZi4uYTVlNWVkZTBiNGI3NDdlNDc5NGRjNzk0MDZhZWZjY2JiMzg1ZGQ2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTI5MSw3ICsxMjkxLDcgQEAgUmVuZGVy
Qm94KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiB2b2lkIEZyYW1lVmll
dzo6YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRk
ZWRPYmplY3QpCiB7CiAgICAgaWYgKCFtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlKQotICAgICAg
ICBtX2VtYmVkZGVkT2JqZWN0c1RvVXBkYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxMaXN0SGFzaFNl
dDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+PigpOworICAgICAgICBtX2VtYmVkZGVkT2JqZWN0c1Rv
VXBkYXRlID0gbWFrZVVuaXF1ZTxMaXN0SGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+Pigp
OwogCiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50JiBlbGVtZW50ID0gZW1iZWRkZWRPYmplY3Qu
ZnJhbWVPd25lckVsZW1lbnQoKTsKICAgICBpZiAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1l
bnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpKSB7CkBAIC0xNDI3LDcgKzE0Mjcs
NyBAQCB2b2lkIEZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIpCiAgICAgYm9vbCBoYWRTbG93UmVwYWludE9iamVjdHMgPSBoYXNTbG93UmVwYWlu
dE9iamVjdHMoKTsKIAogICAgIGlmICghbV9zbG93UmVwYWludE9iamVjdHMpCi0gICAgICAgIG1f
c2xvd1JlcGFpbnRPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IFJlbmRl
ckVsZW1lbnQqPj4oKTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBtYWtlVW5pcXVl
PEhhc2hTZXQ8Y29uc3QgUmVuZGVyRWxlbWVudCo+PigpOwogCiAgICAgbV9zbG93UmVwYWludE9i
amVjdHMtPmFkZCgmcmVuZGVyZXIpOwogICAgIGlmIChoYWRTbG93UmVwYWludE9iamVjdHMpCkBA
IC0xNDYyLDcgKzE0NjIsNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmpl
Y3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB2b2lkIEZyYW1lVmlldzo6YWRkVmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdChSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
aWYgKCFtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKQotICAgICAgICBtX3ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzID0gc3RkOjptYWtlX3VuaXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0U2V0PigpOworICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gbWFrZVVu
aXF1ZTxWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0PigpOwogCiAgICAgaWYgKCFtX3ZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzLT5jb250YWlucyhvYmplY3QpKSB7CiAgICAgICAgIG1fdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmFkZChvYmplY3QpOwpAQCAtNDg2Niw3ICs0ODY2LDcg
QEAgU3RyaW5nIEZyYW1lVmlldzo6dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0CiBi
b29sIEZyYW1lVmlldzo6YWRkU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFi
bGVBcmVhKQogewogICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYXMpCi0gICAgICAgIG1fc2Nyb2xs
YWJsZUFyZWFzID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxhYmxlQXJlYVNldD4oKTsKKyAgICAg
ICAgbV9zY3JvbGxhYmxlQXJlYXMgPSBtYWtlVW5pcXVlPFNjcm9sbGFibGVBcmVhU2V0PigpOwog
ICAgIAogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhcy0+YWRkKHNjcm9sbGFibGVBcmVhKS5pc05l
d0VudHJ5KSB7CiAgICAgICAgIHNjcm9sbGFibGVBcmVhU2V0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKaW5kZXggNzMwOThmMWZh
MWYxMDcxZTYxZmNkM2FhNjUzNTMzMGQzZTg5YmY1OS4uZTg1OGM5MmNiZjhjMzFhMzIxYmYzODAw
OTdhYmE1NWYxNTcwMDBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXdMYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xh
eW91dENvbnRleHQuY3BwCkBAIC01OTYsMTQgKzU5NiwxNCBAQCB2b2lkIEZyYW1lVmlld0xheW91
dENvbnRleHQ6OnB1c2hMYXlvdXRTdGF0ZShSZW5kZXJFbGVtZW50JiByb290KQogICAgIEFTU0VS
VCghbV9wYWludE9mZnNldENhY2hlRGlzYWJsZUNvdW50KTsKICAgICBBU1NFUlQoIWxheW91dFN0
YXRlKCkpOwogCi0gICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckxheW91dFN0YXRlPihyb290KSk7CisgICAgbV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVu
ZChtYWtlVW5pcXVlPFJlbmRlckxheW91dFN0YXRlPihyb290KSk7CiB9CiAKIGJvb2wgRnJhbWVW
aWV3TGF5b3V0Q29udGV4dDo6cHVzaExheW91dFN0YXRlRm9yUGFnaW5hdGlvbklmTmVlZGVkKFJl
bmRlckJsb2NrRmxvdyYgbGF5b3V0Um9vdCkKIHsKICAgICBpZiAobGF5b3V0U3RhdGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obGF5b3V0Um9vdCwgUmVuZGVyTGF5b3V0U3Rh
dGU6OklzUGFnaW5hdGVkOjpZZXMpKTsKKyAgICBtX2xheW91dFN0YXRlU3RhY2suYXBwZW5kKG1h
a2VVbmlxdWU8UmVuZGVyTGF5b3V0U3RhdGU+KGxheW91dFJvb3QsIFJlbmRlckxheW91dFN0YXRl
OjpJc1BhZ2luYXRlZDo6WWVzKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCkBAIC02MTMs
NyArNjEzLDcgQEAgYm9vbCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpwdXNoTGF5b3V0U3RhdGUo
UmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2kKICAgICBhdXRvKiBsYXlvdXRTdGF0
ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CiAgICAgaWYgKCFsYXlvdXRTdGF0ZSB8fCAhbmVlZHNG
dWxsUmVwYWludCgpIHx8IGxheW91dFN0YXRlLT5pc1BhZ2luYXRlZCgpIHx8IHJlbmRlcmVyLmVu
Y2xvc2luZ0ZyYWdtZW50ZWRGbG93KCkKICAgICAgICAgfHwgbGF5b3V0U3RhdGUtPmxpbmVHcmlk
KCkgfHwgKHJlbmRlcmVyLnN0eWxlKCkubGluZUdyaWQoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVHcmlkKCkgJiYgcmVuZGVyZXIuaXNSZW5kZXJCbG9ja0Zsb3coKSkpIHsKLSAgICAgICAg
bV9sYXlvdXRTdGF0ZVN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckxheW91dFN0
YXRlPihtX2xheW91dFN0YXRlU3RhY2ssIHJlbmRlcmVyLCBvZmZzZXQsIHBhZ2VIZWlnaHQsIHBh
Z2VIZWlnaHRDaGFuZ2VkKSk7CisgICAgICAgIG1fbGF5b3V0U3RhdGVTdGFjay5hcHBlbmQobWFr
ZVVuaXF1ZTxSZW5kZXJMYXlvdXRTdGF0ZT4obV9sYXlvdXRTdGF0ZVN0YWNrLCByZW5kZXJlciwg
b2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdlZCkpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
QmFzZS5jcHAKaW5kZXggOGMzYzUyYTA3MzUyMjc5MGNkMGM0YTYwZGMwNWU2MTQxMmMxOWFlOS4u
NTIyN2U0MmFjMDk2Y2U2OTI1ZDdlYzZhMThlNTE5MjVkMmUwMDZiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvckJhc2UuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgU2VydmljZVdvcmtlckNv
bnRhaW5lciYgTmF2aWdhdG9yQmFzZTo6c2VydmljZVdvcmtlcigpCiB7CiAgICAgQVNTRVJUKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJs
ZWQoKSk7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJDb250YWluZXIpCi0gICAgICAgIG1fc2Vy
dmljZVdvcmtlckNvbnRhaW5lciA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckNvbnRh
aW5lcj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CisgICAgICAgIG1fc2Vydmlj
ZVdvcmtlckNvbnRhaW5lciA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckNvbnRhaW5lcj4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3NlcnZpY2VXb3Jr
ZXJDb250YWluZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDM5NWQyZjAxMjMzY2I5ODll
N2VmNTU1Y2M3MThiZTk0ODk2NzEyZDkuLjNmNTgxODM5OTUyMjBhMzgzZjNmODc2OGE5YmY4MzRh
M2YyZjM4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjExLDI2ICsyMTEsMjYgQEAgc3RhdGlj
IGNvbnN0ZXhwciBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gcGFnZUluaXRpYWxBY3Rp
dml0eVN0YXRlKCkKIH0KIAogUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25m
aWd1cmF0aW9uKQotICAgIDogbV9jaHJvbWUoc3RkOjptYWtlX3VuaXF1ZTxDaHJvbWU+KCp0aGlz
LCAqcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50KSkKLSAgICAsIG1fZHJhZ0NhcmV0Q29u
dHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERyYWdDYXJldENvbnRyb2xsZXI+KCkpCisgICAgOiBt
X2Nocm9tZShtYWtlVW5pcXVlPENocm9tZT4oKnRoaXMsICpwYWdlQ29uZmlndXJhdGlvbi5jaHJv
bWVDbGllbnQpKQorICAgICwgbV9kcmFnQ2FyZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8RHJhZ0Nh
cmV0Q29udHJvbGxlcj4oKSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICwgbV9kcmFn
Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPERyYWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VD
b25maWd1cmF0aW9uLmRyYWdDbGllbnQpKQorICAgICwgbV9kcmFnQ29udHJvbGxlcihtYWtlVW5p
cXVlPERyYWdDb250cm9sbGVyPigqdGhpcywgKnBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQp
KQogI2VuZGlmCi0gICAgLCBtX2ZvY3VzQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEZvY3Vz
Q29udHJvbGxlcj4oKnRoaXMsIHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKSkKKyAgICAsIG1f
Zm9jdXNDb250cm9sbGVyKG1ha2VVbmlxdWU8Rm9jdXNDb250cm9sbGVyPigqdGhpcywgcGFnZUlu
aXRpYWxBY3Rpdml0eVN0YXRlKCkpKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwg
bV9jb250ZXh0TWVudUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNvbnRy
b2xsZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQorICAg
ICwgbV9jb250ZXh0TWVudUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxDb250ZXh0TWVudUNvbnRyb2xs
ZXI+KCp0aGlzLCAqcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQpKQogI2VuZGlm
Ci0gICAgLCBtX3VzZXJJbnB1dEJyaWRnZShzdGQ6Om1ha2VfdW5pcXVlPFVzZXJJbnB1dEJyaWRn
ZT4oKnRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNs
aWVudCkpCisgICAgLCBtX3VzZXJJbnB1dEJyaWRnZShtYWtlVW5pcXVlPFVzZXJJbnB1dEJyaWRn
ZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8SW5zcGVj
dG9yQ29udHJvbGxlcj4oKnRoaXMsIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCkp
CiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQotICAgICwgbV9wb2ludGVyQ2FwdHVyZUNvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXI+KCp0aGlzKSkK
KyAgICAsIG1fcG9pbnRlckNhcHR1cmVDb250cm9sbGVyKG1ha2VVbmlxdWU8UG9pbnRlckNhcHR1
cmVDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQot
ICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyTG9j
a0NvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcG9pbnRlckxvY2tDb250cm9sbGVyKG1ha2VV
bmlxdWU8UG9pbnRlckxvY2tDb250cm9sbGVyPigqdGhpcykpCiAjZW5kaWYKICAgICAsIG1fc2V0
dGluZ3MoU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fcHJvZ3Jlc3Moc3RkOjptYWtl
X3VuaXF1ZTxQcm9ncmVzc1RyYWNrZXI+KCpwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNr
ZXJDbGllbnQpKQotICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
LmJhY2tGb3J3YXJkQ2xpZW50KSkpCisgICAgLCBtX3Byb2dyZXNzKG1ha2VVbmlxdWU8UHJvZ3Jl
c3NUcmFja2VyPigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKKyAg
ICAsIG1fYmFja0ZvcndhcmRDb250cm9sbGVyKG1ha2VVbmlxdWU8QmFja0ZvcndhcmRDb250cm9s
bGVyPigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkp
KQogICAgICwgbV9tYWluRnJhbWUoRnJhbWU6OmNyZWF0ZSh0aGlzLCBudWxscHRyLCBwYWdlQ29u
ZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUpKQogICAgICwgbV9lZGl0b3JDbGll
bnQoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQpKQogICAgICwgbV9wbHVn
SW5DbGllbnQocGFnZUNvbmZpZ3VyYXRpb24ucGx1Z0luQ2xpZW50KQpAQCAtMjUwLDkgKzI1MCw5
IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAg
ICAsIG1fZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXIoKnRoaXMsICZQYWdl
Ojpkb21UaW1lckFsaWdubWVudEludGVydmFsSW5jcmVhc2VUaW1lckZpcmVkKQogICAgICwgbV9h
Y3Rpdml0eVN0YXRlKHBhZ2VJbml0aWFsQWN0aXZpdHlTdGF0ZSgpKQogICAgICwgbV9hbHRlcm5h
dGl2ZVRleHRDbGllbnQocGFnZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KQot
ICAgICwgbV9jb25zb2xlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVDbGllbnQ+
KCp0aGlzKSkKKyAgICAsIG1fY29uc29sZUNsaWVudChtYWtlVW5pcXVlPFBhZ2VDb25zb2xlQ2xp
ZW50PigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgLCBtX2luc3Bl
Y3RvckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnYWJsZT4oKnRoaXMpKQor
ICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8UGFnZURlYnVnZ2FibGU+KCp0
aGlzKSkKICNlbmRpZgogICAgICwgbV9zb2NrZXRQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1
cmF0aW9uLnNvY2tldFByb3ZpZGVyKSkKICAgICAsIG1fY29va2llSmFyKFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24uY29va2llSmFyKSkKQEAgLTI2OCwxNiArMjY4LDE2IEBAIFBhZ2U6OlBhZ2Uo
UGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fcGxheWJhY2tD
b250cm9sc01hbmFnZXJVcGRhdGVUaW1lcigqdGhpcywgJlBhZ2U6OnBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyVXBkYXRlVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV9pc1V0aWxpdHlQYWdlKGlz
VXRpbGl0eVBhZ2VDaHJvbWVDbGllbnQoY2hyb21lKCkuY2xpZW50KCkpKQotICAgICwgbV9wZXJm
b3JtYW5jZU1vbml0b3IoaXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IHN0ZDo6bWFrZV91bmlx
dWU8UGVyZm9ybWFuY2VNb25pdG9yPigqdGhpcykpCi0gICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlm
aWVyKHN0ZDo6bWFrZV91bmlxdWU8TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlz
TG93UG93ZXJNb2RlRW5hYmxlZCkgeyBoYW5kbGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQb3dl
ck1vZGVFbmFibGVkKTsgfSkpCi0gICAgLCBtX3BlcmZvcm1hbmNlTG9nZ2luZyhzdGQ6Om1ha2Vf
dW5pcXVlPFBlcmZvcm1hbmNlTG9nZ2luZz4oKnRoaXMpKQorICAgICwgbV9wZXJmb3JtYW5jZU1v
bml0b3IoaXNVdGlsaXR5UGFnZSgpID8gbnVsbHB0ciA6IG1ha2VVbmlxdWU8UGVyZm9ybWFuY2VN
b25pdG9yPigqdGhpcykpCisgICAgLCBtX2xvd1Bvd2VyTW9kZU5vdGlmaWVyKG1ha2VVbmlxdWU8
TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2RlRW5hYmxlZCkg
eyBoYW5kbGVMb3dNb2RlUG93ZXJDaGFuZ2UoaXNMb3dQb3dlck1vZGVFbmFibGVkKTsgfSkpCisg
ICAgLCBtX3BlcmZvcm1hbmNlTG9nZ2luZyhtYWtlVW5pcXVlPFBlcmZvcm1hbmNlTG9nZ2luZz4o
KnRoaXMpKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8
fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pKQotICAgICwgbV9zZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJvbGxl
cj4oKnRoaXMpKQorICAgICwgbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX3JlY2Vu
dFdoZWVsRXZlbnREZWx0YUZpbHRlcihXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpKQot
ICAgICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxQYWdlT3Zlcmxh
eUNvbnRyb2xsZXI+KCp0aGlzKSkKKyAgICAsIG1fcGFnZU92ZXJsYXlDb250cm9sbGVyKG1ha2VV
bmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKEFQUExFX1BB
WSkKLSAgICAsIG1fcGF5bWVudENvb3JkaW5hdG9yKHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudENv
b3JkaW5hdG9yPigqcGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkK
KyAgICAsIG1fcGF5bWVudENvb3JkaW5hdG9yKG1ha2VVbmlxdWU8UGF5bWVudENvb3JkaW5hdG9y
PigqcGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KSkKICNlbmRpZgog
I2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgLCBtX2F1dGhlbnRpY2F0b3JDb29yZGluYXRvciht
YWtlVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JDb29yZGluYXRvcj4oV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbi5hdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQpKSkKQEAgLTU1OSw3ICs1NTks
NyBAQCB2b2lkIFBhZ2U6OmluaXRHcm91cCgpCiB7CiAgICAgQVNTRVJUKCFtX3NpbmdsZVBhZ2VH
cm91cCk7CiAgICAgQVNTRVJUKCFtX2dyb3VwKTsKLSAgICBtX3NpbmdsZVBhZ2VHcm91cCA9IHN0
ZDo6bWFrZV91bmlxdWU8UGFnZUdyb3VwPigqdGhpcyk7CisgICAgbV9zaW5nbGVQYWdlR3JvdXAg
PSBtYWtlVW5pcXVlPFBhZ2VHcm91cD4oKnRoaXMpOwogICAgIG1fZ3JvdXAgPSBtX3NpbmdsZVBh
Z2VHcm91cC5nZXQoKTsKIH0KIApAQCAtMjYzMyw3ICsyNjMzLDcgQEAgdm9pZCBQYWdlOjpzZXRS
ZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIH0KIAogICAgIGlm
ICghbV9yZXNvdXJjZVVzYWdlT3ZlcmxheSAmJiBtX3NldHRpbmdzLT5hY2NlbGVyYXRlZENvbXBv
c2l0aW5nRW5hYmxlZCgpKQotICAgICAgICBtX3Jlc291cmNlVXNhZ2VPdmVybGF5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMpOworICAgICAgICBtX3Jlc291
cmNlVXNhZ2VPdmVybGF5ID0gbWFrZVVuaXF1ZTxSZXNvdXJjZVVzYWdlT3ZlcmxheT4oKnRoaXMp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNv
bGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAK
aW5kZXggODI0NmFkYzFhMTgwYjEzOGE4MDJjNTY0NTU0M2ZmYjJhM2VlMjg0YS4uODNhMjQwMzAw
NDk0NWIxYWUwMjczMzczY2FkN2VhOTkyNGU2Y2MxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlQ29uc29sZUNsaWVudC5jcHAKQEAgLTE2MSw5ICsxNjEsOSBAQCB2b2lkIFBhZ2VDb25zb2xl
Q2xpZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBt
ZXNzYWdlOwogCiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6
TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQsIGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1
ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VU
ZXh0LCBjYWxsU3RhY2sucmVsZWFzZU5vbk51bGwoKSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAg
IGVsc2UKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQs
IHN1Z2dlc3RlZFVSTCwgc3VnZ2VzdGVkTGluZU51bWJlciwgc3VnZ2VzdGVkQ29sdW1uTnVtYmVy
LCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gbWFrZVVuaXF1
ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxl
dmVsLCBtZXNzYWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdn
ZXN0ZWRDb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICBhZGRN
ZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlbCBsCiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGJvb2wgZ290TWVz
c2FnZSA9IGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsK
IAotICAgIGF1dG8gbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2VU
ZXh0LCBhcmd1bWVudHMuY29weVJlZigpLCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtl
VW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgYXJndW1lbnRzLmNvcHlSZWYoKSwgZXhlYyk7
CiAKICAgICBTdHJpbmcgdXJsID0gbWVzc2FnZS0+dXJsKCk7CiAgICAgdW5zaWduZWQgbGluZU51
bWJlciA9IG1lc3NhZ2UtPmxpbmUoKTsKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIFBhZ2VDb25z
b2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPFNjcmlwdEFy
Z3VtZW50cz4mJgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRhdGFVUkwuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBhZGRNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdl
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUgc2NyZWVuc2hvdCJfcywg
V1RGTW92ZShhcmd1bWVudHMpKSk7CisgICAgICAgICAgICBhZGRNZXNzYWdlKG1ha2VVbmlxdWU8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVz
c2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQ291bGQgbm90IGNhcHR1cmUg
c2NyZWVuc2hvdCJfcywgV1RGTW92ZShhcmd1bWVudHMpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNs
aWVudDo6c2NyZWVuc2hvdChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxTY3JpcHRBcmd1bWVu
dHM+JiYKICAgICBmb3IgKHNpemVfdCBpID0gKCF0YXJnZXQgPyAwIDogMSk7IGkgPCBhcmd1bWVu
dHMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhZGp1c3RlZEFyZ3VtZW50cy5hcHBl
bmQoeyBzdGF0ZS0+dm0oKSwgYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpIH0pOwogICAgIGFyZ3Vt
ZW50cyA9IFNjcmlwdEFyZ3VtZW50czo6Y3JlYXRlKCpzdGF0ZSwgV1RGTW92ZShhZGp1c3RlZEFy
Z3VtZW50cykpOwotICAgIGFkZE1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6SW1h
Z2UsIE1lc3NhZ2VMZXZlbDo6TG9nLCBkYXRhVVJMLCBXVEZNb3ZlKGFyZ3VtZW50cykpKTsKKyAg
ICBhZGRNZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oTWVzc2Fn
ZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6OkltYWdlLCBNZXNzYWdlTGV2ZWw6Okxv
ZywgZGF0YVVSTCwgV1RGTW92ZShhcmd1bWVudHMpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCA5MTkzNjA0NWMyZmFmNzZjYWM1
ZTJjNjllNjIzM2YyY2UzMGJmOWIxLi4xMjhjMThmMTRiOTA4ZTcxYmM3Y2VmYjM5NjIwN2ZlYmJj
MDBmMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0xMTYsOSArMTE2LDkgQEAg
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcyYgUGFnZUdyb3VwOjpjYXB0aW9uUHJlZmVyZW5jZXMoKQog
ewogICAgIGlmICghbV9jYXB0aW9uUHJlZmVyZW5jZXMpIHsKICNpZiBQTEFURk9STShNQUMpIHx8
IEhBVkUoTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUkspCi0gICAgICAgIG1fY2FwdGlvblBy
ZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rj4oKnRoaXMpOworICAgICAgICBtX2NhcHRpb25QcmVmZXJlbmNlcyA9IG1ha2VVbmlxdWU8Q2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY+KCp0aGlzKTsKICNlbHNlCi0gICAgICAgIG1fY2Fw
dGlvblByZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxDYXB0aW9uVXNlclByZWZlcmVuY2Vz
PigqdGhpcyk7CisgICAgICAgIG1fY2FwdGlvblByZWZlcmVuY2VzID0gbWFrZVVuaXF1ZTxDYXB0
aW9uVXNlclByZWZlcmVuY2VzPigqdGhpcyk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZS5jcHAKaW5kZXggNmMxNWIzZmFhODNmNWNhZTBkOTE3NmQwMGM4YWZjMTVi
NzY2OTMxNi4uY2JiYWMyMWQ0MDA1YjFiMGUxMTgwMjJmN2FhMTRhOGJjZmVkODUyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFBlcmZv
cm1hbmNlOjpyZXNvdXJjZVRpbWluZ0J1ZmZlckZ1bGxUaW1lckZpcmVkKCkKIEV4Y2VwdGlvbk9y
PHZvaWQ+IFBlcmZvcm1hbmNlOjptYXJrKGNvbnN0IFN0cmluZyYgbWFya05hbWUpCiB7CiAgICAg
aWYgKCFtX3VzZXJUaW1pbmcpCi0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlx
dWU8VXNlclRpbWluZz4oKnRoaXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVl
PFVzZXJUaW1pbmc+KCp0aGlzKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5nLT5t
YXJrKG1hcmtOYW1lKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpAQCAtMjc5LDE0
ICsyNzksMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1hcmsoY29uc3QgU3Ry
aW5nJiBtYXJrTmFtZSkKIHZvaWQgUGVyZm9ybWFuY2U6OmNsZWFyTWFya3MoY29uc3QgU3RyaW5n
JiBtYXJrTmFtZSkKIHsKICAgICBpZiAoIW1fdXNlclRpbWluZykKLSAgICAgICAgbV91c2VyVGlt
aW5nID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyVGltaW5nPigqdGhpcyk7CisgICAgICAgIG1fdXNl
clRpbWluZyA9IG1ha2VVbmlxdWU8VXNlclRpbWluZz4oKnRoaXMpOwogICAgIG1fdXNlclRpbWlu
Zy0+Y2xlYXJNYXJrcyhtYXJrTmFtZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFBlcmZvcm1h
bmNlOjptZWFzdXJlKGNvbnN0IFN0cmluZyYgbWVhc3VyZU5hbWUsIGNvbnN0IFN0cmluZyYgc3Rh
cnRNYXJrLCBjb25zdCBTdHJpbmcmIGVuZE1hcmspCiB7CiAgICAgaWYgKCFtX3VzZXJUaW1pbmcp
Ci0gICAgICAgIG1fdXNlclRpbWluZyA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclRpbWluZz4oKnRo
aXMpOworICAgICAgICBtX3VzZXJUaW1pbmcgPSBtYWtlVW5pcXVlPFVzZXJUaW1pbmc+KCp0aGlz
KTsKIAogICAgIGF1dG8gcmVzdWx0ID0gbV91c2VyVGltaW5nLT5tZWFzdXJlKG1lYXN1cmVOYW1l
LCBzdGFydE1hcmssIGVuZE1hcmspOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkBA
IC0zMDAsNyArMzAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGVyZm9ybWFuY2U6Om1lYXN1cmUo
Y29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSwgY29uc3QgU3RyaW5nJgogdm9pZCBQZXJmb3JtYW5j
ZTo6Y2xlYXJNZWFzdXJlcyhjb25zdCBTdHJpbmcmIG1lYXN1cmVOYW1lKQogewogICAgIGlmICgh
bV91c2VyVGltaW5nKQotICAgICAgICBtX3VzZXJUaW1pbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJUaW1pbmc+KCp0aGlzKTsKKyAgICAgICAgbV91c2VyVGltaW5nID0gbWFrZVVuaXF1ZTxVc2Vy
VGltaW5nPigqdGhpcyk7CiAgICAgbV91c2VyVGltaW5nLT5jbGVhck1lYXN1cmVzKG1lYXN1cmVO
YW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDAzNzBmMjg4
N2Y2NWI1N2IzY2Q4OTdlNGZjNjllOGEyZWZiODc1ZGYuLjQ0MjkxYWVmYTM3YzhhN2E4NDQ4YmVj
MzlhZWVhYzI0MzllYzQ3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAg
LTMyMSw3ICszMjEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6b3V0cHV0TGlua2VkRGVzdGluYXRp
b25zKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBEbwogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIW1fbGlua2VkRGVzdGluYXRpb25zKSB7Ci0gICAgICAgIG1fbGlua2VkRGVz
dGluYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPFN0cmluZywgUmVmPEVsZW1lbnQ+
Pj4oKTsKKyAgICAgICAgbV9saW5rZWREZXN0aW5hdGlvbnMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8
U3RyaW5nLCBSZWY8RWxlbWVudD4+PigpOwogICAgICAgICBjb2xsZWN0TGlua2VkRGVzdGluYXRp
b25zKGRvY3VtZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyLmNwcAppbmRleCA1NmEwMTFjNGNlZTk5Nzg5OTAxZmFkMzYzMDJi
ZTEwYzM0NTY2NTI3Li4zYjg4MWRmYmIxNzE3ZjRlNDExYTZjNTM0NDU5NWZiZDNhYjQzMDZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIGJvb2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjppc1NjaGVk
dWxlZCgpIGNvbnN0CiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcihT
ZWNvbmRzIGRlbGF5KQogewogICAgIEFTU0VSVCghaXNTY2hlZHVsZWQoKSk7Ci0gICAgbV9yZWZy
ZXNoVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CisgICAgbV9yZWZyZXNoVGltZXIgPSBt
YWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxh
eVJlZnJlc2hGaXJlZCk7CiAgICAgbV9yZWZyZXNoVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5o
CmluZGV4IGZhZGU2MmZjNzg3ZWU0ODk3OWFmNmRkODI2NjI3Nzk4MDRkMzc1MTcuLjZmMDYwODE3
ODI2ZWM1NmM2ZWU4YTVmOGNkMzk0NGVjMmQ0MTkwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcj4gY3JlYXRlKFBhZ2UmIHBhZ2UpCiAgICAgewot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI+
KHBhZ2UpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXI+KHBhZ2UpOwogICAgIH0KIAogICAgIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcihQYWdlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDQyMzQxODI4MGVhMmVl
M2M5YmZkZmM5MWNkMTI3Yjk2OGViMWUxYmYuLjBkZWIwNjQxNDhmOTcyNmNkMzhiNDEwMDVkNTIy
OTcyNjBjMWM2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0x
ODksNyArMTg5LDcgQEAgdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU8KICAgICBMb2NrZXI8TG9jaz4g
bG9ja2VyKG9yaWdpbkFjY2Vzc01hcExvY2spOwogICAgIE9yaWdpbkFjY2Vzc01hcDo6QWRkUmVz
dWx0IHJlc3VsdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmFkZChzb3VyY2VTdHJpbmcsIG51bGxwdHIp
OwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8T3JpZ2luQWNjZXNzV2hpdGVMaXN0PigpOworICAgICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxPcmlnaW5BY2Nlc3NXaGl0ZUxp
c3Q+KCk7CiAKICAgICBPcmlnaW5BY2Nlc3NXaGl0ZUxpc3QqIGxpc3QgPSByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLmdldCgpOwogICAgIGxpc3QtPmFwcGVuZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0
aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNz
RW50cnk6OkRpc2FsbG93U3ViZG9tYWlucywgT3JpZ2luQWNjZXNzRW50cnk6OlRyZWF0SVBBZGRy
ZXNzQXNJUEFkZHJlc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCBi
Njg0ODk2ZjM5ODg0NjI1NGExNzk3YWRjZGVkNjY2NjA1ZTg1ZDVjLi4yN2VlYTZjMGFiOTM4ZWJj
OGY5NjVkYWNiODIwMzExNDQzMTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2Uu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGxheW91dFNjaGVkdWxl
VGhyZXNob2xkID0gMjUwX21zOwogCiBTZXR0aW5nc0Jhc2U6OlNldHRpbmdzQmFzZShQYWdlKiBw
YWdlKQogICAgIDogbV9wYWdlKG51bGxwdHIpCi0gICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxpZXMo
c3RkOjptYWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQorICAgICwgbV9mb250R2Vu
ZXJpY0ZhbWlsaWVzKG1ha2VVbmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKICAgICAsIG1f
bGF5b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAgICAgLCBtX21pbmltdW1E
T01UaW1lckludGVydmFsKERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUludGVydmFsKCkpCiAgICAg
LCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIoKnRoaXMsICZTZXR0aW5nc0Jhc2U6Omlt
YWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBiOWNlOThjYzZjYTVjMjQ1NmNkYjk0ZjVkYzQx
YjRkMmI1MGU5OGY2Li42NTIzMTFkN2E1NWY1NTA3YTA1YWE0M2I2MmM4MDIwODcyMmRiYWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpmb3JFYWNoVXNlck1lc3Nh
Z2VIYW5kbGVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgVXNlck1lCiAKIHZvaWQgVXNlckNvbnRlbnRD
b250cm9sbGVyOjphZGRVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5p
cXVlX3B0cjxVc2VyU2NyaXB0PiB1c2VyU2NyaXB0KQogewotICAgIGF1dG8mIHNjcmlwdHNJbldv
cmxkID0gbV91c2VyU2NyaXB0cy5lbnN1cmUoJndvcmxkLCBbJl0geyByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxVc2VyU2NyaXB0VmVjdG9yPigpOyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgYXV0
byYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLmVuc3VyZSgmd29ybGQsIFsmXSB7IHJl
dHVybiBtYWtlVW5pcXVlPFVzZXJTY3JpcHRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJT
Y3JpcHRzKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiAKIHZvaWQgVXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyU3R5bGVTaGVldChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1
ZV9wdHI8VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0LCBVc2VyU3R5bGVJbmplY3Rpb25U
aW1lIGluamVjdGlvblRpbWUpCiB7Ci0gICAgYXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91
c2VyU3R5bGVTaGVldHMuZW5zdXJlKCZ3b3JsZCwgWyZdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VXNlclN0eWxlU2hlZXRWZWN0b3I+KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRv
JiBzdHlsZVNoZWV0c0luV29ybGQgPSBtX3VzZXJTdHlsZVNoZWV0cy5lbnN1cmUoJndvcmxkLCBb
Jl0geyByZXR1cm4gbWFrZVVuaXF1ZTxVc2VyU3R5bGVTaGVldFZlY3Rvcj4oKTsgfSkuaXRlcmF0
b3ItPnZhbHVlOwogICAgIHN0eWxlU2hlZXRzSW5Xb3JsZC0+YXBwZW5kKFdURk1vdmUodXNlclN0
eWxlU2hlZXQpKTsKIAogICAgIGlmIChpbmplY3Rpb25UaW1lID09IEluamVjdEluRXhpc3RpbmdE
b2N1bWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0
YUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5j
cHAKaW5kZXggZjI1OWFlYjFhMGE5ZTVjZTdhMTM0ZjBkMTI2OWVjMzE0YzlhOWMzMS4uMzA0ZDk0
YTc1YmYzNjFkOGRkNDZmNmFmZmFmZTMxYzNlZjgyYTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2hlZWxFdmVudERlbHRhRmlsdGVyLmNwcApAQCAtNDMsOSArNDMsOSBAQCBXaGVlbEV2
ZW50RGVsdGFGaWx0ZXI6On5XaGVlbEV2ZW50RGVsdGFGaWx0ZXIoKSA9IGRlZmF1bHQ7CiBzdGQ6
OnVuaXF1ZV9wdHI8V2hlZWxFdmVudERlbHRhRmlsdGVyPiBXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6
OmNyZWF0ZSgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdoZWVsRXZlbnREZWx0YUZpbHRlck1hYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxX
aGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWM+KCk7CiAjZWxzZQotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEJhc2ljV2hlZWxFdmVudERlbHRhRmlsdGVyPigpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAKaW5kZXggMTQ0NjYzY2FlOTU5NzljZmNjN2M0YTIyNDJlMWQxNjFkNjEwMjkyNS4uMTNj
MzFmNTc2NGI3YjIyNGEyYjdlYTU1YWUzM2E2YjM5ODZiOTZkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lkIENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjph
bmltYXRpb25XaWxsQmVSZW1vdmVkKEFuaW1hdGlvbkJhc2UmIGFuaW1hdAogfQogCiBDU1NBbmlt
YXRpb25Db250cm9sbGVyOjpDU1NBbmltYXRpb25Db250cm9sbGVyKEZyYW1lJiBmcmFtZSkKLSAg
ICA6IG1fZGF0YShzdGQ6Om1ha2VfdW5pcXVlPENTU0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRl
PihmcmFtZSkpCisgICAgOiBtX2RhdGEobWFrZVVuaXF1ZTxDU1NBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZT4oZnJhbWUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNzRlZWRjOTk2NmU5Zjgx
YWNiOTk2Y2YzNzY5ODNkYWI2ODU1NDBjNi4uYmFlYjI0NzY1NzE2NzM3Yjg0YTFjYzhmMTlkZTAx
NzNmMzY3ZTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTE3LDkgKzExNyw5IEBAIHN0YXRpYyBpbmxp
bmUgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0
eUJsZW5kaW5nQ2xpCiB7CiAgICAgQVNTRVJUKGZyb20gJiYgdG8pOwogICAgIGlmIChmcm9tLT5z
dHlsZSgpICE9IHRvLT5zdHlsZSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
aGFkb3dEYXRhPigqdG8pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigq
dG8pOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oYmxlbmQoZnJv
bS0+bG9jYXRpb24oKSwgdG8tPmxvY2F0aW9uKCksIHByb2dyZXNzKSwKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTaGFkb3dEYXRhPihibGVuZChmcm9tLT5sb2NhdGlvbigpLCB0by0+bG9jYXRpb24o
KSwgcHJvZ3Jlc3MpLAogICAgICAgICBibGVuZChmcm9tLT5yYWRpdXMoKSwgdG8tPnJhZGl1cygp
LCBwcm9ncmVzcyksCiAgICAgICAgIGJsZW5kKGZyb20tPnNwcmVhZCgpLCB0by0+c3ByZWFkKCks
IHByb2dyZXNzKSwKICAgICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20tPnN0eWxlKCksIHRvLT5z
dHlsZSgpLCBwcm9ncmVzcyksCkBAIC05NzQsMTUgKzk3NCwxNSBAQCBjbGFzcyBQcm9wZXJ0eVdy
YXBwZXJWaXNpdGVkQWZmZWN0ZWRDb2xvciA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBw
ZXJCYXNlCiAgICAgUHJvcGVydHlXcmFwcGVyVmlzaXRlZEFmZmVjdGVkQ29sb3IoQ1NTUHJvcGVy
dHlJRCBwcm9wLCBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0LCB2
b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoY29uc3QgQ29sb3ImKSwKICAgICAgICAgY29uc3Qg
Q29sb3ImIChSZW5kZXJTdHlsZTo6KnZpc2l0ZWRHZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRl
clN0eWxlOjoqdmlzaXRlZFNldHRlcikoY29uc3QgQ29sb3ImKSkKICAgICAgICAgOiBBbmltYXRp
b25Qcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCi0gICAgICAgICwgbV93cmFwcGVyKHN0ZDo6bWFr
ZV91bmlxdWU8UHJvcGVydHlXcmFwcGVyQ29sb3I+KHByb3AsIGdldHRlciwgc2V0dGVyKSkKLSAg
ICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlXcmFwcGVy
Q29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIpKQorICAgICAgICAsIG1f
d3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3JhcHBlckNvbG9yPihwcm9wLCBnZXR0ZXIsIHNl
dHRlcikpCisgICAgICAgICwgbV92aXNpdGVkV3JhcHBlcihtYWtlVW5pcXVlPFByb3BlcnR5V3Jh
cHBlckNvbG9yPihwcm9wLCB2aXNpdGVkR2V0dGVyLCB2aXNpdGVkU2V0dGVyKSkKICAgICB7CiAg
ICAgfQogICAgIFByb3BlcnR5V3JhcHBlclZpc2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5
SUQgcHJvcCwgTWF5YmVJbnZhbGlkQ29sb3JUYWcsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6
OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xv
ciYpLAogICAgICAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqdmlzaXRlZEdldHRlciko
KSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6Oip2aXNpdGVkU2V0dGVyKShjb25zdCBDb2xvciYp
KQogICAgICAgICA6IEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKLSAgICAgICAg
LCBtX3dyYXBwZXIoc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRD
b2xvcj4ocHJvcCwgZ2V0dGVyLCBzZXR0ZXIpKQotICAgICAgICAsIG1fdmlzaXRlZFdyYXBwZXIo
c3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVdyYXBwZXJNYXliZUludmFsaWRDb2xvcj4ocHJvcCwg
dmlzaXRlZEdldHRlciwgdmlzaXRlZFNldHRlcikpCisgICAgICAgICwgbV93cmFwcGVyKG1ha2VV
bmlxdWU8UHJvcGVydHlXcmFwcGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIGdldHRlciwgc2V0
dGVyKSkKKyAgICAgICAgLCBtX3Zpc2l0ZWRXcmFwcGVyKG1ha2VVbmlxdWU8UHJvcGVydHlXcmFw
cGVyTWF5YmVJbnZhbGlkQ29sb3I+KHByb3AsIHZpc2l0ZWRHZXR0ZXIsIHZpc2l0ZWRTZXR0ZXIp
KQogICAgIHsKICAgICB9CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNv
bnN0IFJlbmRlclN0eWxlKiBiKSBjb25zdCBvdmVycmlkZQpAQCAtMTIyOSwxOSArMTIyOSwxOSBA
QCBjbGFzcyBGaWxsTGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFuaW1hdGlvblByb3Bl
cnR5V3JhcHBlckJhc2UgewogICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOgogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWDoKLSAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVydHlX
cmFwcGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBl
cj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0
aW9uLCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dy
b3VuZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKKyAgICAgICAgICAgIG1fZmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyID0gbWFrZVVuaXF1ZTxGaWxsTGF5ZXJQb3NpdGlvblByb3BlcnR5V3JhcHBlcj4o
cHJvcGVydHksICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9u
LCAmRmlsbExheWVyOjpiYWNrZ3JvdW5kWE9yaWdpbiwgJkZpbGxMYXllcjo6c2V0QmFja2dyb3Vu
ZFhPcmlnaW4sIEVkZ2U6OlJpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblk6Ci0gICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3Jh
cHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyUG9zaXRpb25Qcm9wZXJ0eVdyYXBwZXI+
KHByb3BlcnR5LCAmRmlsbExheWVyOjp5UG9zaXRpb24sICZGaWxsTGF5ZXI6OnNldFlQb3NpdGlv
biwgJkZpbGxMYXllcjo6YmFja2dyb3VuZFlPcmlnaW4sICZGaWxsTGF5ZXI6OnNldEJhY2tncm91
bmRZT3JpZ2luLCBFZGdlOjpCb3R0b20pOworICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0
eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclBvc2l0aW9uUHJvcGVydHlXcmFwcGVyPihw
cm9wZXJ0eSwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24s
ICZGaWxsTGF5ZXI6OmJhY2tncm91bmRZT3JpZ2luLCAmRmlsbExheWVyOjpzZXRCYWNrZ3JvdW5k
WU9yaWdpbiwgRWRnZTo6Qm90dG9tKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemU6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZ3JvdW5kU2l6ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXpl
OgotICAgICAgICAgICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEZpbGxMYXllclByb3BlcnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxs
TGF5ZXI6OnNpemVMZW5ndGgsICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOworICAgICAgICAg
ICAgbV9maWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgPSBtYWtlVW5pcXVlPEZpbGxMYXllclByb3Bl
cnR5V3JhcHBlcjxMZW5ndGhTaXplPj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OnNpemVMZW5ndGgs
ICZGaWxsTGF5ZXI6OnNldFNpemVMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgICAgICAgICBtX2ZpbGxMYXll
clByb3BlcnR5V3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVBy
b3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpz
ZXRJbWFnZSk7CisgICAgICAgICAgICBtX2ZpbGxMYXllclByb3BlcnR5V3JhcHBlciA9IG1ha2VV
bmlxdWU8RmlsbExheWVyU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHksICZGaWxs
TGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc3MCw3ICsxNzcwLDcg
QEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldy
YXBwZXJNYXAoKQogICAgICAgICAgICAgbG9uZ2hhbmRXcmFwcGVycy51bmNoZWNrZWRBcHBlbmQo
bV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJbmRleF0uZ2V0KCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGTW92ZShsb25naGFuZFdy
YXBwZXJzKSkpOworICAgICAgICBtX3Byb3BlcnR5V3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKG1h
a2VVbmlxdWU8U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyPihwcm9wZXJ0eUlELCBXVEZNb3ZlKGxv
bmdoYW5kV3JhcHBlcnMpKSk7CiAgICAgICAgIGluZGV4RnJvbVByb3BlcnR5SUQocHJvcGVydHlJ
RCkgPSBhbmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQgKyBpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmlu
ZGV4IDcwNDdlODNkZTc4NWRiODFiNmQ5OTBhOTQ4MzdiYTcxZDcyODI5YTAuLjhmMGY2YmY1M2Iw
M2UwOGY3MDMzMTY2ZWI4Yzc0ZDZiZjk3MjgzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYg
aGVhZGVyLCBDb250ZW50U2VjdXJpCiB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXBkYXRl
U291cmNlU2VsZihjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAg
bV9zZWxmU291cmNlUHJvdG9jb2wgPSBzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpOwotICAgIG1f
c2VsZlNvdXJjZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
PigqdGhpcywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2Vj
dXJpdHlPcmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOworICAgIG1f
c2VsZlNvdXJjZSA9IG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlPigqdGhp
cywgbV9zZWxmU291cmNlUHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luLmhvc3QoKSwgc2VjdXJpdHlP
cmlnaW4ucG9ydCgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgZmFsc2UpOwogfQogCiB2b2lkIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YXBwbHlQb2xpY3lUb1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCBkZGJkOGNkZTI3ODBlOTJkYmEyMGUw
YWJkOTljZjA0OTg0M2Y0YzRkLi5jMDE1NmRkZjAxYzk0N2U1MDRiNTY5ZDBhNDExNjk4YzU1OGYz
ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OkNvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3QoQ29udGVudFNlCiAKIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0PiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojpj
cmVhdGUoQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaGVhZGVy
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIHR5cGUsIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UG9saWN5RnJvbSBmcm9tKQogewotICAgIGF1dG8gZGlyZWN0aXZlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4ocG9saWN5LCB0eXBl
KTsKKyAgICBhdXRvIGRpcmVjdGl2ZXMgPSBtYWtlVW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q+KHBvbGljeSwgdHlwZSk7CiAgICAgZGlyZWN0aXZlcy0+cGFyc2UoaGVh
ZGVyLCBmcm9tKTsKIAogICAgIGlmICghY2hlY2tFdmFsKGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURp
cmVjdGl2ZShkaXJlY3RpdmVzLT5tX3NjcmlwdFNyYy5nZXQoKSkpKSB7CkBAIC00NTIsNyArNDUy
LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpzZXRDU1BEaXJl
Y3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAgbV9wb2xpY3kucmVwb3J0RHVw
bGljYXRlRGlyZWN0aXZlKG5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRpcmVj
dGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZh
bHVlKTsKKyAgICBkaXJlY3RpdmUgPSBtYWtlVW5pcXVlPENTUERpcmVjdGl2ZVR5cGU+KCp0aGlz
LCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6YXBwbHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBzYW5kYm94UG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9S
ZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgv
UmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKaW5kZXggOGI4N2JjYWRkNTFmYzZmN2Y3MGI5
NjI3MmMzZGYyMzI0MTk2ZGNiYi4uYzA3YjEyNzY5Y2QwNGJhN2IzMWY4OGM0NmE5ZjA2YjZhZDZi
NDlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVzYWdl
T3ZlcmxheUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNl
VXNhZ2VPdmVybGF5TGludXguY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgY2xhc3MgUmVzb3VyY2VV
c2FnZU92ZXJsYXlQYWludGVyIGZpbmFsIDogcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQgewog
CiB2b2lkIFJlc291cmNlVXNhZ2VPdmVybGF5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewotICAg
IG1fb3ZlcmxheVBhaW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlVXNhZ2VPdmVybGF5
UGFpbnRlcj4oKnRoaXMpOworICAgIG1fb3ZlcmxheVBhaW50ZXIgPSBtYWtlVW5pcXVlPFJlc291
cmNlVXNhZ2VPdmVybGF5UGFpbnRlcj4oKnRoaXMpOwogICAgIG1fcGFpbnRMYXllciA9IEdyYXBo
aWNzTGF5ZXI6OmNyZWF0ZShvdmVybGF5KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ncmFw
aGljc0xheWVyRmFjdG9yeSgpLCAqbV9vdmVybGF5UGFpbnRlcik7CiAgICAgbV9wYWludExheWVy
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgbV9wYWludExheWVyLT5zZXRT
aXplKHsgbm9ybWFsV2lkdGgsIG5vcm1hbEhlaWdodCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9QYWdl
TWFjLm1tCmluZGV4IGQ3YWRmZmQ3MmY5ZmE4ZmU5N2FmY2RhMDcxOGQ4M2M2ZTA5MDg1MGMuLjA4
NjNhZDI2NzI1ZDY1NTQ3NTJiN2FjMjE0OGVlZDFjNmRmYzIzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvUGFnZU1hYy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFBhZ2U6OnBsYXRmb3JtSW5pdGlh
bGl6ZSgpCiB2b2lkIFBhZ2U6OmFkZFNjaGVkdWxlUGFpcihSZWY8U2NoZWR1bGVQYWlyPiYmIHBh
aXIpCiB7CiAgICAgaWYgKCFtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycykKLSAgICAgICAgbV9zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlUGFpckhhc2hTZXQ+
KCk7CisgICAgICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gbWFrZVVuaXF1ZTxTY2hlZHVs
ZVBhaXJIYXNoU2V0PigpOwogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5hZGQocGFpci5w
dHIoKSk7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX21haW5GcmFtZS5nZXQoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAppbmRleCAzMDZjZmVkMTljZTZkMDBiNjJhODUyNDk3MDAyOGI4MDQ1ZmFkODIzLi4w
MGFmMzk0NzhkYzc1ZjcwMjljMjQ4NDU0ZWYwMWFiMGM2YzdkMTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqIHBhZ2UpCiAg
ICAgOiBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKQogICAgICwgbV91cGRhdGVOb2RlU2Nyb2xs
UG9zaXRpb25UaW1lcigqdGhpcywgJkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNj
cm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmlyZWQpCi0gICAgLCBtX3Njcm9sbGlu
Z1N0YXRlVHJlZShzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4odGhpcykpCisg
ICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZShtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4o
dGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IDc2NDBkNTVkOTZh
M2YwOTU5YjkzMWVmMDQzM2VjMTVmYTIwN2RiZDQuLmM4OTBmOWViYTAwNGNhODc4MDE0MWI4NWNl
ZWUwMDU1NjJlMmU0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcApAQCAtNzEsNyArNzEs
NyBAQCBGbG9hdFNpemUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0
aW5hdGlvbk9mZnNldCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29u
dGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4o
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBp
bml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNw
cAppbmRleCA5NjgyZDJjMWJjZWUzNzU3MTNjMzQ2ZDNlMzNjZDRkYzEzNWFmYzc4Li5iZTU3Yzli
ODY5ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0MGM4MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKQEAgLTEwMSw3ICsx
MDEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQoUmVmPFNjcm9sbGlu
Z1N0YXRlTm9kZT4mJiBjaGlsZE5vZGUpCiAgICAgY2hpbGROb2RlLT5zZXRQYXJlbnQodGhpcyk7
CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pCi0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1f
Y2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+
KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7CiAgICAgc2V0
UHJvcGVydHlDaGFuZ2VkKENoaWxkTm9kZXMpOwogfQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQg
U2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYm
IGNoaWxkTm9kZSwgc2l6ZV90CiAKICAgICBpZiAoIW1fY2hpbGRyZW4pIHsKICAgICAgICAgQVNT
RVJUKCFpbmRleCk7Ci0gICAgICAgIG1fY2hpbGRyZW4gPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBt
YWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgfQog
CiAgICAgaWYgKGluZGV4ID4gbV9jaGlsZHJlbi0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAppbmRleCBmNjFl
MjhlMGVjNTAzMDEyYjM3MmZiMjU1NjlhOGNiN2RkNTNhYTcwLi43MTU3ZTE2ODYwZjQ5YzkxZGRh
MzViYmM0ZWFmZTk4MTllYWNiZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBTY3JvbGxpbmdTdGF0ZVRyZWU6OmNvbW1p
dChMYXllclJlcHJlc2VudGF0aQogICAgIH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVz
IGFuZCByZXNldHMgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSwgYnV0IGxlYXZlcyB0aGUgdHJlZSBz
dHJ1Y3R1cmUgaW50YWN0LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+
IHRyZWVTdGF0ZUNsb25lID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdTdGF0ZVRyZWU+KCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlQ2xvbmUg
PSBtYWtlVW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4oKTsKICAgICB0cmVlU3RhdGVDbG9uZS0+
c2V0UHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbihwcmVmZXJyZWRMYXllclJlcHJlc2VudGF0
aW9uKTsKIAogICAgIGlmIChtX3Jvb3RTdGF0ZU5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5jcHAKaW5kZXggZWE3NGUyY2E0MjQy
OWE4ZTJiZTlmOWEzNzllMzY3ZGE0ZGRkYTNkMS4uNzI5NjE1YTY5ZjAxMjI2MzE1MTQ3ZWNmZGI1
NTI4YjAxOTlmMzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVOb2RlLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+JiYgY2hpbGROb2RlKQog
ICAgIGNoaWxkTm9kZS0+c2V0UGFyZW50KHRoaXMpOwogCiAgICAgaWYgKCFtX2NoaWxkcmVuKQot
ICAgICAgICBtX2NoaWxkcmVuID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPFNjcm9s
bGluZ1RyZWVOb2RlPj4+KCk7CisgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3Rv
cjxSZWZQdHI8U2Nyb2xsaW5nVHJlZU5vZGU+Pj4oKTsKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQo
V1RGTW92ZShjaGlsZE5vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWMubW0KaW5kZXggMWM3YWI3NmExNTFlNjM1MGQ4YjYxNGMzNmQwNWJjZTY1YzZjOTU4NC4uYjQz
ZWE5OTVmYWY2YjQ3MDMzNWZiZjA3YTIwODZhNmIzNWY3MGVmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0zNiw3ICszNiw3IEBAIHN0YXRpYyBib29sIGdFbmFi
bGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9IHRydWU7CiAKIHN0ZDo6dW5p
cXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9h
dFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHkpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0
aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0
aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJl
ZGljdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAK
aW5kZXggNGZmOTgwNGVhZWMxMzA2YjI2OGEyNDVmMjc3MWExMTJlMjhkMmExZS4uM2ZjNDMxYTQ3
NDYxZDhjNDQzZGI0YjYyMmQ2ZWE5MDYzNGRhMGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguY3BwCkBAIC0yODgsOSArMjg4LDkgQEAgTGVuZ3RoIGNvbnZlcnRUbzEwMFBlcmNlbnRNaW51
c0xlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCkKICAgICAvLyBUdXJuIHRoaXMgaW50byBhIGNh
bGMgZXhwcmVzc2lvbjogY2FsYygxMDAlIC0gbGVuZ3RoKQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPj4gbGVuZ3RoczsKICAgICBsZW5ndGhzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoMik7Ci0gICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKLSAg
ICBsZW5ndGhzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9u
TGVuZ3RoPihsZW5ndGgpKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhw
cmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhzKSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFj
dCk7CisgICAgbGVuZ3Rocy51bmNoZWNrZWRBcHBlbmQobWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lv
bkxlbmd0aD4oTGVuZ3RoKDEwMCwgUGVyY2VudCkpKTsKKyAgICBsZW5ndGhzLnVuY2hlY2tlZEFw
cGVuZChtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihsZW5ndGgpKTsKKyAgICBhdXRv
IG9wID0gbWFrZVVuaXF1ZTxDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbj4oV1RGTW92ZShsZW5ndGhz
KSwgQ2FsY09wZXJhdG9yOjpTdWJ0cmFjdCk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlv
blZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApAQCAtMzAy
LDcgKzMwMiw3IEBAIHN0YXRpYyBMZW5ndGggYmxlbmRNaXhlZFR5cGVzKGNvbnN0IExlbmd0aCYg
ZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dyCiAgICAgaWYgKHByb2dyZXNzID49
IDEuMCkKICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAKLSAgICBhdXRvIGJsZW5kID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoPihmcm9tLCB0bywgcHJvZ3Jl
c3MpOworICAgIGF1dG8gYmxlbmQgPSBtYWtlVW5pcXVlPENhbGNFeHByZXNzaW9uQmxlbmRMZW5n
dGg+KGZyb20sIHRvLCBwcm9ncmVzcyk7CiAgICAgcmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZh
bHVlOjpjcmVhdGUoV1RGTW92ZShibGVuZCksIFZhbHVlUmFuZ2VBbGwpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlbW90ZUNvbW1hbmRMaXN0ZW5lci5jcHAKaW5kZXgg
NTUyYjEyZjZjMWU4Y2RhNmZmZWE2NDc4NjkyMjI5ZWE5M2VkMTdjYS4uOGUzNWUzMDRjMWU3MjU3
YmM2NGM2YWQxMGVkZGU5NjQyMDRlNjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICNpZiAoIVBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUMp
KSB8fCAhSEFWRShNRURJQV9QTEFZRVIpCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExp
c3RlbmVyPiBSZW1vdGVDb21tYW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDbGllbnQmIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVD
b21tYW5kTGlzdGVuZXI+KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29t
bWFuZExpc3RlbmVyPihjbGllbnQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCBkOTE1NGQ5MzUxYTJmMzM2NmRkZDA1ZmU2MGZk
ZWJiOWMxYTFlNzM4Li5mOGVkYzg4MmQ3ZjM2MDAyZTE5ODUxMGQ4MWI4ZWIzNGFhNTAwN2M4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
ICYmICFQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVf
cHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFibGVBcmVh
JiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxB
bmltYXRvcj4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFu
aW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGM2MmFkODM0ZTZiMzgwOGUxZWNkYThiYTEz
MTJkM2Q5NTcwNWU5NmEuLjk2ZDBmMzAwYjM0MThlNjA4MjFkYTJkYTJhNjQxODljNGRlZTBiM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgU2Nyb2xsQW5pbWF0b3ImIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxBbmltYXRvcigp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3Njcm9sbEFuaW1hdG9yKSB7CiAgICAgICAgIGlmICh1c2Vz
TW9ja1Njcm9sbEFuaW1hdG9yKCkpIHsKLSAgICAgICAgICAgIG1fc2Nyb2xsQW5pbWF0b3IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdG9yTW9jaz4oY29uc3RfY2FzdDxTY3JvbGxhYmxl
QXJlYSY+KCp0aGlzKSwgW3RoaXNdKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeworICAgICAgICAg
ICAgbV9zY3JvbGxBbmltYXRvciA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3JNb2NrPihjb25z
dF9jYXN0PFNjcm9sbGFibGVBcmVhJj4oKnRoaXMpLCBbdGhpc10oY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSB7CiAgICAgICAgICAgICAgICAgbG9nTW9ja1Njcm9sbEFuaW1hdG9yTWVzc2FnZShtZXNz
YWdlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UKQEAgLTQzNSw3ICs0MzUsNyBA
QCBib29sIFNjcm9sbGFibGVBcmVhOjpoYXNMYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiBT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIFNjcm9sbGFibGVBcmVhOjplbnN1cmVT
bmFwT2Zmc2V0c0luZm8oKQogewogICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCi0gICAgICAg
IG1fc25hcE9mZnNldHNJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88TGF5b3V0VW5pdD4+KCk7CisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gbWFrZVVuaXF1
ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+KCk7CiAgICAgcmV0dXJuICptX3Nu
YXBPZmZzZXRzSW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9i
YWxEYXRhLmNwcAppbmRleCBhMjgwMTBlY2ZlNWEzNjdhZDlkMGIyOWEyMDA1NjNhMGY1NjFkNTYw
Li4yN2E3MzY0MTZiYTA0YzA1M2MyZTc3ZGIyYzU1ODE0NDQwZDJmMGY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtNDAsMTQgKzQwLDE0IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERh
dGEoKQotICAgIDogbV9jYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKHN0ZDo6bWFrZV91
bmlxdWU8Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycz4oKSkKKyAgICA6IG1fY2FjaGVk
UmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycyhtYWtlVW5pcXVlPENhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnM+KCkpCiAgICAgLCBtX2V2ZW50TmFtZXMoRXZlbnROYW1lczo6Y3JlYXRlKCkp
Ci0gICAgLCBtX3RocmVhZFRpbWVycyhzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZFRpbWVycz4oKSkK
LSAgICAsIG1fcXVhbGlmaWVkTmFtZUNhY2hlKHN0ZDo6bWFrZV91bmlxdWU8UXVhbGlmaWVkTmFt
ZUNhY2hlPigpKQorICAgICwgbV90aHJlYWRUaW1lcnMobWFrZVVuaXF1ZTxUaHJlYWRUaW1lcnM+
KCkpCisgICAgLCBtX3F1YWxpZmllZE5hbWVDYWNoZShtYWtlVW5pcXVlPFF1YWxpZmllZE5hbWVD
YWNoZT4oKSkKICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2lzTWFpblRocmVhZChpc01haW5UaHJl
YWQoKSkKICNlbmRpZgotICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1Uoc3RkOjptYWtlX3VuaXF1
ZTxJQ1VDb252ZXJ0ZXJXcmFwcGVyPigpKQorICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1UobWFr
ZVVuaXF1ZTxJQ1VDb252ZXJ0ZXJXcmFwcGVyPigpKQogewogICAgIC8vIFRoaXMgY29uc3RydWN0
b3Igd2lsbCBoYXZlIGJlZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgYmVpbmcg
Y2FsbGVkIG9uCiAgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9u
Y2UgcGVyIHRocmVhZCAtIHRoaXMgbWFrZXMgdGhpcyBhIGNvbnZlbmllbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAppbmRleCAyZjg5MmQ2YjE5YWJhNDIzMGU5
MjRjNzYxODczOGZjNmNiNDhmN2VjLi5lNzBkNDZkMGI5ZjI0MDdmOTA4NTQ4ZmE4ZjJlOThjOWRh
NDU2M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCkBA
IC02NCw3ICs2NCw3IEBAIEF1ZGlvQnVzOjpBdWRpb0J1cyh1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBzaXplX3QgbGVuZ3RoLCBib29sIGFsbG9jYXRlKQogICAgIG1fY2hhbm5lbHMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIHsKLSAgICAgICAgYXV0byBjaGFubmVs
ID0gYWxsb2NhdGUgPyBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5lbD4obGVuZ3RoKSA6IHN0
ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVsPihudWxscHRyLCBsZW5ndGgpOworICAgICAgICBh
dXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IG1ha2VVbmlxdWU8QXVkaW9DaGFubmVsPihsZW5ndGgp
IDogbWFrZVVuaXF1ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0aCk7CiAgICAgICAgIG1f
Y2hhbm5lbHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoY2hhbm5lbCkpOwogICAgIH0KIApAQCAt
NDg5LDcgKzQ4OSw3IEBAIHZvaWQgQXVkaW9CdXM6OmNvcHlXaXRoR2FpbkZyb20oY29uc3QgQXVk
aW9CdXMgJnNvdXJjZUJ1cywgZmxvYXQqIGxhc3RNaXhHYWluLCBmCiAKICAgICBpZiAoZnJhbWVz
VG9EZXppcHBlcikgewogICAgICAgICBpZiAoIW1fZGV6aXBwZXJHYWluVmFsdWVzLmdldCgpIHx8
IG1fZGV6aXBwZXJHYWluVmFsdWVzLT5zaXplKCkgPCBmcmFtZXNUb0RlemlwcGVyKQotICAgICAg
ICAgICAgbV9kZXppcHBlckdhaW5WYWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxvYXRB
cnJheT4oZnJhbWVzVG9EZXppcHBlcik7CisgICAgICAgICAgICBtX2RlemlwcGVyR2FpblZhbHVl
cyA9IG1ha2VVbmlxdWU8QXVkaW9GbG9hdEFycmF5PihmcmFtZXNUb0RlemlwcGVyKTsKIAogICAg
ICAgICBmbG9hdCogZ2FpblZhbHVlcyA9IG1fZGV6aXBwZXJHYWluVmFsdWVzLT5kYXRhKCk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFtZXNUb0RlemlwcGVyOyArK2kpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKaW5kZXggODQ3
ZTUyYWE4MjQyNTJkMWJjYmExNzNkZGI1NzdjN2E1YjI5NTNlMi4uN2I5ODkzZDM4YWM0MTc0NTMx
NzQxYjc3MjRjNmZmMmFiZDAxZGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9DaGFubmVsLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgQXVkaW9DaGFubmVsIGZp
bmFsIHsKICAgICAgICAgLCBtX3Jhd1BvaW50ZXIoMCkKICAgICAgICAgLCBtX3NpbGVudCh0cnVl
KQogICAgIHsKLSAgICAgICAgbV9tZW1CdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRmxv
YXRBcnJheT4obGVuZ3RoKTsKKyAgICAgICAgbV9tZW1CdWZmZXIgPSBtYWtlVW5pcXVlPEF1ZGlv
RmxvYXRBcnJheT4obGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBBICJibGFuayIgYXVkaW8gY2hh
bm5lbCAtLSBtdXN0IGNhbGwgc2V0KCkgYmVmb3JlIGl0J3MgdXNlZnVsLi4uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAKaW5kZXggODY5MDZi
YTUxMjQ3NTg2OTJjNjgzZTJiYzkwMzgzNTAxZWFiOGZkOS4uMjg0YzA1NDk0MzI1OTM0NGVhY2Uz
MjQxOGFkYTliODMwM2RhMmU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcApAQCAtMzksNyArMzksNyBAQCBjb25zdCBkb3VibGUgQXVk
aW9SZXNhbXBsZXI6Ok1heFJhdGUgPSA4LjA7CiBBdWRpb1Jlc2FtcGxlcjo6QXVkaW9SZXNhbXBs
ZXIoKQogICAgIDogbV9yYXRlKDEuMCkKIHsKLSAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICBtX2tlcm5lbHMuYXBw
ZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKICAgICBtX3NvdXJj
ZUJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUoMSwgMCwgZmFsc2UpOwogfQogCkBAIC00Nyw3ICs0Nyw3
IEBAIEF1ZGlvUmVzYW1wbGVyOjpBdWRpb1Jlc2FtcGxlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzKQogICAgIDogbV9yYXRlKDEuMCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICBtX2tlcm5lbHMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsKKyAgICAgICAgbV9rZXJuZWxz
LmFwcGVuZChtYWtlVW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CiAKICAgICBt
X3NvdXJjZUJ1cyA9IEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgMCwgZmFsc2Up
OwogfQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEF1ZGlvUmVzYW1wbGVyOjpjb25maWd1cmVDaGFu
bmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgIC8vIEZpcnN0IGRlYWwgd2l0aCBh
ZGRpbmcgb3IgcmVtb3Zpbmcga2VybmVscy4KICAgICBpZiAobnVtYmVyT2ZDaGFubmVscyA+IGN1
cnJlbnRTaXplKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGN1cnJlbnRTaXplOyBpIDwg
bnVtYmVyT2ZDaGFubmVsczsgKytpKQotICAgICAgICAgICAgbV9rZXJuZWxzLmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEF1ZGlvUmVzYW1wbGVyS2VybmVsPih0aGlzKSk7CisgICAgICAgICAgICBt
X2tlcm5lbHMuYXBwZW5kKG1ha2VVbmlxdWU8QXVkaW9SZXNhbXBsZXJLZXJuZWw+KHRoaXMpKTsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9rZXJuZWxzLnJlc2l6ZShudW1iZXJPZkNoYW5uZWxzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvci5jcHAKaW5kZXggYjI1NTE4ZDg4MGE4ZDJkOTk0YTc2OTZiOGZhZGE5ZTU1NDhjMjllYi4u
NTEzNzk5YTg1MTJmNDI3YjRlNGI4ZDliMjk0NWE5NGQzNDkxODc3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCkBAIC0y
NzEsOCArMjcxLDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5l
bHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICBtX3ByZUZpbHRlclBhY2tzLmNsZWFy
KCk7CiAgICAgbV9wb3N0RmlsdGVyUGFja3MuY2xlYXIoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSB7Ci0gICAgICAgIG1fcHJlRmlsdGVyUGFj
a3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7Ci0gICAg
ICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmls
dGVyUGFjazQ+KCkpOworICAgICAgICBtX3ByZUZpbHRlclBhY2tzLmFwcGVuZChtYWtlVW5pcXVl
PFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOworICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBl
bmQobWFrZVVuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAgICB9CiAKICAgICBtX3Nv
dXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFu
bmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yS2VybmVsLmNwcAppbmRleCA3MzRiMDY2Y2RhNDhiYzJjN2E3OWVkZjUw
N2QwNmMwNTZjNzBhMDkwLi5hZmVkYjdiNGNkMGE1YTYxZDFhOWZlMjc4YzM0MDM4M2Y5OGUyMWIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBEeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWw6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscykKIAogICAgIG1fcHJlRGVsYXlCdWZmZXJzLmNsZWFyKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkKLSAgICAgICAgbV9wcmVEZWxheUJ1
ZmZlcnMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9GbG9hdEFycmF5PihNYXhQcmVEZWxh
eUZyYW1lcykpOworICAgICAgICBtX3ByZURlbGF5QnVmZmVycy5hcHBlbmQobWFrZVVuaXF1ZTxB
dWRpb0Zsb2F0QXJyYXk+KE1heFByZURlbGF5RnJhbWVzKSk7CiB9CiAKIHZvaWQgRHluYW1pY3ND
b21wcmVzc29yS2VybmVsOjpzZXRQcmVEZWxheVRpbWUoZmxvYXQgcHJlRGVsYXlUaW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCmluZGV4IDRjMDJiNjk5MmIw
NjM4M2I4MDM1NzM3ODc4ZGJmNjVhMjZmYjljMzEuLjRjMTUyMDY3ZDQ0YWM0Yjg1NDE5MjFhYWVk
Mjk1OTgyYjk2OTM3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0ZGVEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFt
ZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBGRlRGcmFtZTo6ZG9QYWRkZWRGRlQoY29uc3Qg
ZmxvYXQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKIAogc3RkOjp1bmlxdWVfcHRyPEZGVEZyYW1l
PiBGRlRGcmFtZTo6Y3JlYXRlSW50ZXJwb2xhdGVkRnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1l
MSwgY29uc3QgRkZURnJhbWUmIGZyYW1lMiwgZG91YmxlIHgpCiB7Ci0gICAgYXV0byBuZXdGcmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZyYW1lMS5mZnRTaXplKCkpOworICAgIGF1
dG8gbmV3RnJhbWUgPSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmcmFtZTEuZmZ0U2l6ZSgpKTsKIAog
ICAgIG5ld0ZyYW1lLT5pbnRlcnBvbGF0ZUZyZXF1ZW5jeUNvbXBvbmVudHMoZnJhbWUxLCBmcmFt
ZTIsIHgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRh
dGFiYXNlTG9hZGVyLmNwcAppbmRleCBmNDViZTg0N2NlNzEwZGNlZGEyZTBlYzEwNmI3NWJmMjY4
NTc4OWNkLi5hNDc0YTcwYzQwODUyYWUyZTFmOWY1OGE0OWEwMDAzNjE1ODBiMzE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5j
cHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWQoKQogICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9ocnRmRGF0YWJhc2UuZ2V0KCkp
IHsKICAgICAgICAgLy8gTG9hZCB0aGUgZGVmYXVsdCBIUlRGIGRhdGFiYXNlLgotICAgICAgICBt
X2hydGZEYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURkRhdGFiYXNlPihtX2RhdGFiYXNl
U2FtcGxlUmF0ZSk7CisgICAgICAgIG1faHJ0ZkRhdGFiYXNlID0gbWFrZVVuaXF1ZTxIUlRGRGF0
YWJhc2U+KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAKaW5kZXggYzg0YWI5NzUxYTE0
NTk4OWEwMzc3ZmFkMWY0YTc1ZThmMTdlMmIyNC4uNjA1MjMyY2QxYTk5YzkyMzNkOWFkMTA0OWJh
MzA3ZTIxNzczOGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkVsZXZhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5jcHAKQEAgLTI0NCw4ICsyNDQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVs
ZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6Y3JlYXRlRm9yU3ViamVjdChjb25zdCBTdHJpbmcmIHN1
YgogICAgIGlmICghaXNFbGV2YXRpb25Hb29kKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgCi0gICAgYXV0byBrZXJuZWxMaXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5l
bExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0
ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7Cisg
ICAgYXV0byBrZXJuZWxMaXN0TCA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9m
VG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktl
cm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CiAKICAgICAvLyBMb2FkIGNvbnZvbHV0
aW9uIGtlcm5lbHMgZnJvbSBIUlRGIGZpbGVzLgogICAgIGludCBpbnRlcnBvbGF0ZWRJbmRleCA9
IDA7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEhSVEZFbGV2YXRpb24+IEhS
VEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWIKICAgICAgICAg
fQogICAgIH0KICAgICAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9u
PihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwg
c2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGTW92
ZShrZXJuZWxMaXN0TCksIFdURk1vdmUoa2VybmVsTGlzdFIpLCBlbGV2YXRpb24sIHNhbXBsZVJh
dGUpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJURkVsZXZhdGlvbjo6
Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbGV2YXRpb24qIGhydGZFbGV2YXRpb24x
LCBIUlRGRWxldmF0aW9uKiBocnRmRWxldmF0aW9uMiwgZmxvYXQgeCwgZmxvYXQgc2FtcGxlUmF0
ZSkKQEAgLTI4NSw4ICsyODUsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SFJURkVsZXZhdGlvbj4gSFJU
RkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKEhSVEZFbAogICAgICAgICAK
ICAgICBBU1NFUlQoeCA+PSAwLjAgJiYgeCA8IDEuMCk7CiAgICAgCi0gICAgYXV0byBrZXJuZWxM
aXN0TCA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemlt
dXRocyk7Ci0gICAgYXV0byBrZXJuZWxMaXN0UiA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURktlcm5l
bExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0byBrZXJuZWxMaXN0TCA9IG1h
a2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxBemltdXRocyk7CisgICAgYXV0
byBrZXJuZWxMaXN0UiA9IG1ha2VVbmlxdWU8SFJURktlcm5lbExpc3Q+KE51bWJlck9mVG90YWxB
emltdXRocyk7CiAKICAgICBIUlRGS2VybmVsTGlzdCoga2VybmVsTGlzdEwxID0gaHJ0ZkVsZXZh
dGlvbjEtPmtlcm5lbExpc3RMKCk7CiAgICAgSFJURktlcm5lbExpc3QqIGtlcm5lbExpc3RSMSA9
IGhydGZFbGV2YXRpb24xLT5rZXJuZWxMaXN0UigpOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVCeUludGVycG9s
YXRpbmdTbGljZXMoSFJURkVsCiAgICAgLy8gSW50ZXJwb2xhdGUgZWxldmF0aW9uIGFuZ2xlLgog
ICAgIGRvdWJsZSBhbmdsZSA9ICgxLjAgLSB4KSAqIGhydGZFbGV2YXRpb24xLT5lbGV2YXRpb25B
bmdsZSgpICsgeCAqIGhydGZFbGV2YXRpb24yLT5lbGV2YXRpb25BbmdsZSgpOwogICAgIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2VybmVsTGlz
dEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGljX2Nhc3Q8aW50PihhbmdsZSksIHNhbXBs
ZVJhdGUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEhSVEZFbGV2YXRpb24+KFdURk1vdmUoa2Vy
bmVsTGlzdEwpLCBXVEZNb3ZlKGtlcm5lbExpc3RSKSwgc3RhdGljX2Nhc3Q8aW50PihhbmdsZSks
IHNhbXBsZVJhdGUpOwogfQogCiB2b2lkIEhSVEZFbGV2YXRpb246OmdldEtlcm5lbHNGcm9tQXpp
bXV0aChkb3VibGUgYXppbXV0aEJsZW5kLCB1bnNpZ25lZCBhemltdXRoSW5kZXgsIEhSVEZLZXJu
ZWwqICZrZXJuZWxMLCBIUlRGS2VybmVsKiAma2VybmVsUiwgZG91YmxlJiBmcmFtZURlbGF5TCwg
ZG91YmxlJiBmcmFtZURlbGF5UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
Rktlcm5lbC5jcHAKaW5kZXggZWRmNmM2MGQwZGI4MTRkOTRjMGY3MWI2MzA2ZTQzODI2NTNhYTRj
Ny4uMzc1NTIxNmFlMjg3YTcxYzc0MjkyOWE1M2M5NTkwOTZkYjFkYmI3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAg
SFJURktlcm5lbDo6SFJURktlcm5lbChBdWRpb0NoYW5uZWwqIGNoYW5uZWwsIHNpemVfdCBmZnRT
aXplLCBmbG9hdCBzYW1wbGVSYXRlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mZnRGcmFt
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+KGZmdFNpemUpOworICAgIG1fZmZ0RnJhbWUg
PSBtYWtlVW5pcXVlPEZGVEZyYW1lPihmZnRTaXplKTsKICAgICBtX2ZmdEZyYW1lLT5kb1BhZGRl
ZEZGVChpbXB1bHNlUmVzcG9uc2UsIHRydW5jYXRlZFJlc3BvbnNlTGVuZ3RoKTsKIH0KIApAQCAt
MTAzLDcgKzEwMyw3IEBAIHNpemVfdCBIUlRGS2VybmVsOjpmZnRTaXplKCkgY29uc3QKIAogc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvQ2hhbm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW1wdWxzZVJlc3Bv
bnNlKCkKIHsKLSAgICBhdXRvIGNoYW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvQ2hhbm5l
bD4oZmZ0U2l6ZSgpKTsKKyAgICBhdXRvIGNoYW5uZWwgPSBtYWtlVW5pcXVlPEF1ZGlvQ2hhbm5l
bD4oZmZ0U2l6ZSgpKTsKICAgICBGRlRGcmFtZSBmZnRGcmFtZSgqbV9mZnRGcmFtZSk7CiAKICAg
ICAvLyBBZGQgbGVhZGluZyBkZWxheSBiYWNrIGluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL011bHRpQ2hhbm5lbFJlc2FtcGxlci5jcHAKaW5kZXggYmJiZjE2
NDQ2MjA3NjM5ZTM1Y2Y3OTU2NDgyODI2M2QzZTkzNzNhZS4uNWJmOWFiOTVkMDE1NzUwMDgxNWQ2
MTMxYWIxZDg5NzQxYmUxZmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIE11
bHRpQ2hhbm5lbFJlc2FtcGxlcjo6TXVsdGlDaGFubmVsUmVzYW1wbGVyKGRvdWJsZSBzY2FsZUZh
Y3RvciwgdW5zaWduZWQgbnVtYmVyCiB7CiAgICAgLy8gQ3JlYXRlIGVhY2ggY2hhbm5lbCdzIHJl
c2FtcGxlci4KICAgICBmb3IgKHVuc2lnbmVkIGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRl
eCA8IG51bWJlck9mQ2hhbm5lbHM7ICsrY2hhbm5lbEluZGV4KQotICAgICAgICBtX2tlcm5lbHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2luY1Jlc2FtcGxlcj4oc2NhbGVGYWN0b3IpKTsKKyAg
ICAgICAgbV9rZXJuZWxzLmFwcGVuZChtYWtlVW5pcXVlPFNpbmNSZXNhbXBsZXI+KHNjYWxlRmFj
dG9yKSk7CiB9CiAKIHZvaWQgTXVsdGlDaGFubmVsUmVzYW1wbGVyOjpwcm9jZXNzKEF1ZGlvU291
cmNlUHJvdmlkZXIqIHByb3ZpZGVyLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
YW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmNwcAppbmRl
eCBhYzcyODZhYzlhMDYwYjc1MzRjYjJlZGU5MjFkNmNiZDc3YTk3YTg4Li40MGI5ZDAxZGMxODRi
OTZkNWRmM2FiOWI3ZjQwOTQ2M2E5NzgzNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1Bhbm5lci5jcHAKQEAgLTQzLDExICs0MywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVy
PiBQYW5uZXI6OmNyZWF0ZShQYW5uaW5nTW9kZWxUeXBlIG1vZGVsLCBmbG9hdCBzYW1wbGVSYXRl
LAogCiAgICAgc3dpdGNoIChtb2RlbCkgewogICAgIGNhc2UgUGFubmluZ01vZGVsVHlwZTo6RXF1
YWxwb3dlcjoKLSAgICAgICAgcGFubmVyID0gc3RkOjptYWtlX3VuaXF1ZTxFcXVhbFBvd2VyUGFu
bmVyPihzYW1wbGVSYXRlKTsKKyAgICAgICAgcGFubmVyID0gbWFrZVVuaXF1ZTxFcXVhbFBvd2Vy
UGFubmVyPihzYW1wbGVSYXRlKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFBhbm5pbmdN
b2RlbFR5cGU6OkhSVEY6Ci0gICAgICAgIHBhbm5lciA9IHN0ZDo6bWFrZV91bmlxdWU8SFJURlBh
bm5lcj4oc2FtcGxlUmF0ZSwgZGF0YWJhc2VMb2FkZXIpOworICAgICAgICBwYW5uZXIgPSBtYWtl
VW5pcXVlPEhSVEZQYW5uZXI+KHNhbXBsZVJhdGUsIGRhdGFiYXNlTG9hZGVyKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggZTAyMzk0YWE1YjE0OWNkMTU5NjkxMmEy
NTY4MWZmNWVhNDRhZDhkMi4uYzhiZDY0YTQxYmY2MTJlODllM2MyMTRmYTIyZGNjNTk5NDhlNTRk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVy
YXRpb25Ub1N0cmluZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gUGxhdGZvcm1NZWRp
YVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtTWVkaWFTZXNzaW9uPihjbGllbnQpOwog
fQogCiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmIuY3BwCmluZGV4IDMwNDNmYzhhMDRkZjBkNzdjMTBhYTAzNzliZDI2YTM5ZDQ2Y2U2YmEu
LjhhNjc1NWM1NGFkMDBhM2E4MTAxODc0MjE2MmNjZDA3NGRlMTBlMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgUmV2
ZXJiOjppbml0aWFsaXplKEF1ZGlvQnVzKiBpbXB1bHNlUmVzcG9uc2VCdWZmZXIsIHNpemVfdCBy
ZW5kZXJTbGljZVNpemUsCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1SZXNwb25zZUNo
YW5uZWxzOyArK2kpIHsKICAgICAgICAgQXVkaW9DaGFubmVsKiBjaGFubmVsID0gaW1wdWxzZVJl
c3BvbnNlQnVmZmVyLT5jaGFubmVsKGkpOwogCi0gICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxSZXZlcmJDb252b2x2ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6
ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVyUGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRz
KSk7CisgICAgICAgIG1fY29udm9sdmVycy5hcHBlbmQobWFrZVVuaXF1ZTxSZXZlcmJDb252b2x2
ZXI+KGNoYW5uZWwsIHJlbmRlclNsaWNlU2l6ZSwgbWF4RkZUU2l6ZSwgY29udm9sdmVyUmVuZGVy
UGhhc2UsIHVzZUJhY2tncm91bmRUaHJlYWRzKSk7CiAKICAgICAgICAgY29udm9sdmVyUmVuZGVy
UGhhc2UgKz0gcmVuZGVyU2xpY2VTaXplOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCmluZGV4IDE0NWRmODFlMmE2YmEyYzJk
YWE5YmI0MWU2YjVjYWJhZjM4NWY5MWMuLmE5YzkzNWMxYTI4NWFiMTM2MmQ4ZmYxZGY4Y2ViYTVh
N2U1YWE3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
Q29udm9sdmVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNv
bnZvbHZlcihBdWRpb0NoYW5uZWwqIGltcHVsc2VSZXNwb25zZSwgc2l6ZV90IHJlbmRlclNsaQog
CiAgICAgICAgIGJvb2wgdXNlRGlyZWN0Q29udm9sdmVyID0gIXN0YWdlT2Zmc2V0OwogCi0gICAg
ICAgIGF1dG8gc3RhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdlPihy
ZXNwb25zZSwgdG90YWxSZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFnZU9m
ZnNldCwgc3RhZ2VTaXplLCBmZnRTaXplLCByZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXplLCAm
bV9hY2N1bXVsYXRpb25CdWZmZXIsIHVzZURpcmVjdENvbnZvbHZlcik7CisgICAgICAgIGF1dG8g
c3RhZ2UgPSBtYWtlVW5pcXVlPFJldmVyYkNvbnZvbHZlclN0YWdlPihyZXNwb25zZSwgdG90YWxS
ZXNwb25zZUxlbmd0aCwgcmV2ZXJiVG90YWxMYXRlbmN5LCBzdGFnZU9mZnNldCwgc3RhZ2VTaXpl
LCBmZnRTaXplLCByZW5kZXJQaGFzZSwgcmVuZGVyU2xpY2VTaXplLCAmbV9hY2N1bXVsYXRpb25C
dWZmZXIsIHVzZURpcmVjdENvbnZvbHZlcik7CiAKICAgICAgICAgYm9vbCBpc0JhY2tncm91bmRT
dGFnZSA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAKaW5kZXggMGZkZTQyMWFmMmY4MmZkNDg3NGQ5NGY2
YWYxZDYzNDcyMzljNjU2ZS4uNGZmOTUzYjI2MDQ5MTdkMzQ1MjAzOTQwNWI2NWRlMmJkNWExZWFi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyU3RhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlclN0YWdlLmNwcApAQCAtNTUsMTYgKzU1LDE2IEBAIFJldmVyYkNvbnZvbHZlclN0YWdl
OjpSZXZlcmJDb252b2x2ZXJTdGFnZShjb25zdCBmbG9hdCogaW1wdWxzZVJlc3BvbnNlLCBzaXpl
X3QsCiAgICAgQVNTRVJUKGFjY3VtdWxhdGlvbkJ1ZmZlcik7CiAKICAgICBpZiAoIW1fZGlyZWN0
TW9kZSkgewotICAgICAgICBtX2ZmdEtlcm5lbCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZURnJhbWU+
KGZmdFNpemUpOworICAgICAgICBtX2ZmdEtlcm5lbCA9IG1ha2VVbmlxdWU8RkZURnJhbWU+KGZm
dFNpemUpOwogICAgICAgICBtX2ZmdEtlcm5lbC0+ZG9QYWRkZWRGRlQoaW1wdWxzZVJlc3BvbnNl
ICsgc3RhZ2VPZmZzZXQsIHN0YWdlTGVuZ3RoKTsKLSAgICAgICAgbV9mZnRDb252b2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZGVENvbnZvbHZlcj4oZmZ0U2l6ZSk7CisgICAgICAgIG1fZmZ0Q29u
dm9sdmVyID0gbWFrZVVuaXF1ZTxGRlRDb252b2x2ZXI+KGZmdFNpemUpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIEFTU0VSVCghc3RhZ2VPZmZzZXQpOwogICAgICAgICBBU1NFUlQoc3RhZ2VMZW5n
dGggPD0gZmZ0U2l6ZSAvIDIpOwogCi0gICAgICAgIG1fZGlyZWN0S2VybmVsID0gc3RkOjptYWtl
X3VuaXF1ZTxBdWRpb0Zsb2F0QXJyYXk+KGZmdFNpemUgLyAyKTsKKyAgICAgICAgbV9kaXJlY3RL
ZXJuZWwgPSBtYWtlVW5pcXVlPEF1ZGlvRmxvYXRBcnJheT4oZmZ0U2l6ZSAvIDIpOwogICAgICAg
ICBtX2RpcmVjdEtlcm5lbC0+Y29weVRvUmFuZ2UoaW1wdWxzZVJlc3BvbnNlLCAwLCBzdGFnZUxl
bmd0aCk7Ci0gICAgICAgIG1fZGlyZWN0Q29udm9sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxEaXJl
Y3RDb252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CisgICAgICAgIG1fZGlyZWN0Q29udm9sdmVy
ID0gbWFrZVVuaXF1ZTxEaXJlY3RDb252b2x2ZXI+KHJlbmRlclNsaWNlU2l6ZSk7CiAgICAgfQog
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFsbG9jYXRlKHJlbmRlclNsaWNlU2l6ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCA1YmY4ZmRhNmIyOTEyYjE4
ZjExOTBkY2JlNzA4MmJmNjg0YmVlOThmLi4xYTU0OTVmZDc2NGQ5YzNjYzZlZGI1ODFmYTQ4MGVh
ZWFkMTQ1OWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9JT0NhbGxiYWNrJiBjYWxsCiAgICAgaWYgKG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMgIT0gMikKICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0aW5hdGlv
bjo6Y3JlYXRlKCV1LCAldSwgJWYpIC0gdW5oYW5kbGVkIG91dHB1dCBjaGFubmVscyIsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSk7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyPihj
YWxsYmFjaywgc2FtcGxlUmF0ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcj4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOwogfQogCiBmbG9hdCBBdWRpb0Rl
c3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCmluZGV4IDhh
Zjg3N2VjMmM0Y2EwYWJkMzA3NDgzNWY1NGIzNGFlYmYwNDMzYTIuLjRiZGU3ZTQxZTJiNjQzN2Nk
MGZmNzI1ZTRkMDc5ZDY4Zjg5ZTdkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKQEAgLTgwLDcgKzgw
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246
OmNyZWF0ZShBdWRpb0lPQ2FsbGJhY2smIGNhbGwKICAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyAhPSAyKQogICAgICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
JXUsICV1LCAlZikgLSB1bmhhbmRsZWQgb3V0cHV0IGNoYW5uZWxzIiwgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlKTsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvRGVzdGluYXRpb25JT1M+KGNhbGxiYWNrLCBzYW1wbGVS
YXRlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxBdWRpb0Rlc3RpbmF0aW9uSU9TPihjYWxsYmFj
aywgc2FtcGxlUmF0ZSk7CiB9CiAKIGZsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2Ft
cGxlUmF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbQppbmRleCA0ZTJhODg4OTRhZmJjYmEyMThjZjllNjczODc1NjlmMzJm
OWNkNTlkLi42Mzk4MjQwYmJkOGQ5NjczMDJkZjdlOWVjZmY0MDc1MDJkYTZlMjA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1Mu
bW0KQEAgLTcyLDcgKzcyLDcgQEAgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6QXVkaW9TZXNzaW9uUHJp
dmF0ZShBdWRpb1Nlc3Npb24qKQogfQogCiBBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCi0g
ICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0aGlz
KSkKKyAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KHRoaXMp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
QXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggNzY0YTM0N2Y5ODI5ZTFlODQ3NWJkMmVh
MTI4MGFhMTc1MDI2ZWNmYy4uOWZlNjRiYWFhNDc4NGZlY2RhYjNkNmRkYjVlMjc4MzgxZTFlMDcw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVz
dGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9EZXN0aW5hdGlvbj4gQXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKEF1ZGlvSU9DYWxsYmFj
ayYgY2FsbAogICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzICE9IDIpCiAgICAgICAgIExP
RyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSgldSwgJXUsICVmKSAtIHVuaGFuZGxl
ZCBvdXRwdXQgY2hhbm5lbHMiLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVk
aW9EZXN0aW5hdGlvbk1hYz4oY2FsbGJhY2ssIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEF1ZGlvRGVzdGluYXRpb25NYWM+KGNhbGxiYWNrLCBzYW1wbGVSYXRlKTsKIH0KIAog
ZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVEYXRhU291
cmNlLm1tCmluZGV4IDc3ZDQzMTY1NjY5OTBlOTAxYjkyMGJmNzc4ZDk2OWU5ZjE4ZjE4OGEuLjQx
YWZlMzlmMjMyYWU1ODgwODYwZjA4NGQ1NTZjYjRhNWQ4YWUyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxlRGF0YVNvdXJj
ZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIE9TU3RhdHVzIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
c2V0SW5wdXRGb3JtYXQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBmCiB7CiAgICAg
QVNTRVJUKGZvcm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX2lucHV0RGVzY3JpcHRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4oZm9ybWF0KTsK
KyAgICBtX2lucHV0RGVzY3JpcHRpb24gPSBtYWtlVW5pcXVlPENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbj4oZm9ybWF0KTsKICAgICBpZiAobV9vdXRwdXREZXNjcmlwdGlvbikKICAgICAgICAgcmV0
dXJuIHNldHVwQ29udmVydGVyKCk7CiAKQEAgLTEyMCw5ICsxMjAsOSBAQCBPU1N0YXR1cyBBdWRp
b1NhbXBsZURhdGFTb3VyY2U6OnNldE91dHB1dEZvcm1hdChjb25zdCBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mCiAgICAgQVNTRVJUKG1faW5wdXREZXNjcmlwdGlvbik7CiAgICAgQVNTRVJUKGZv
cm1hdC5zYW1wbGVSYXRlKCkgPj0gMCk7CiAKLSAgICBtX291dHB1dERlc2NyaXB0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+KGZvcm1hdCk7CisgICAgbV9v
dXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihm
b3JtYXQpOwogICAgIGlmICghbV9yaW5nQnVmZmVyKQotICAgICAgICBtX3JpbmdCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENBUmluZ0J1ZmZlcj4oKTsKKyAgICAgICAgbV9yaW5nQnVmZmVyID0g
bWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KCk7CiAKICAgICBtX3JpbmdCdWZmZXItPmFsbG9jYXRl
KGZvcm1hdCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX21heGltdW1TYW1wbGVDb3VudCkpOwogICAg
IG1fc2NyYXRjaEJ1ZmZlciA9IEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDo6Y3JlYXRlKG1fb3V0cHV0
RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCksIG1fbWF4aW11bVNhbXBsZUNvdW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Np
b25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lv
bk1hYy5jcHAKaW5kZXggN2Y2ZWY5ZDMzZGIxZmI0N2U3Y2YxNGM1OTA0YTQ2MTEyYjE1MjIzMi4u
Y2MwNGYwYmUzMDk3NDk4YjgzNjZlOTI0MjA3M2VjZTNlMTk3NWFiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKQEAg
LTYyLDcgKzYyLDcgQEAgY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiB9OwogCiBBdWRpb1Nl
c3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxB
dWRpb1Nlc3Npb25Qcml2YXRlPihpc011dGVkKCkpKQorICAgIDogbV9wcml2YXRlKG1ha2VVbmlx
dWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oaXNNdXRlZCgpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwCmluZGV4IGI5ODAzYmZhMDIzMjQz
NTdjMGRmZTA0NzMxM2QyYzNlYzMwNGNiOTIuLjdhNDdmNTYwOGJiYjZkZTlkMzc3M2IxN2U5OGU0
NzY0YTI0MjIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RGVjb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29k
ZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5
ZWREZWNvZGVyQ0Y+KGRhdGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVj
b2RlckNGPihkYXRhLCBzaXplKTsKIH0KIAogS2V5ZWREZWNvZGVyQ0Y6OktleWVkRGVjb2RlckNG
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDFhNjI3ZWEwMGI5MmNiYWE2Y2Y3YzM1
NWQ1ZTQ0NWVjNDg2MWE0MTIuLjQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIx
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8
S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29kZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEtleWVkRW5jb2RlckNGPigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtl
eWVkRW5jb2RlckNGPigpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25h
cnlSZWY+IGNyZWF0ZURpY3Rpb25hcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCmluZGV4IGI2ODkyMjgwNWU1ZDM3
M2RlN2YwYWVkNzg5MDgyNWFjY2NjMTIwMzkuLjA3YTQ1Y2FkNzhiNmQ0MzdmYWE4NDI1MjY5OWMw
ZDQ4NmQ3OGVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5U
aHJlYWRTaGFyZWRUaW1lckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9N
YWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQg
c2V0dXBQb3dlck9ic2VydmVyKCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIFBvd2Vy
T2JzZXJ2ZXIqIHBvd2VyT2JzZXJ2ZXI7CiAgICAgaWYgKCFwb3dlck9ic2VydmVyKQotICAgICAg
ICBwb3dlck9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxQb3dlck9ic2VydmVyPihyZXN0YXJ0
U2hhcmVkVGltZXIpLnJlbGVhc2UoKTsKKyAgICAgICAgcG93ZXJPYnNlcnZlciA9IG1ha2VVbmlx
dWU8UG93ZXJPYnNlcnZlcj4ocmVzdGFydFNoYXJlZFRpbWVyKS5yZWxlYXNlKCk7CiAjZWxpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRGb3JBcHBsaWNh
dGlvbk5vdGlmaWNhdGlvbiA9IGZhbHNlOwogICAgIGlmICghcmVnaXN0ZXJlZEZvckFwcGxpY2F0
aW9uTm90aWZpY2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDEyYWIz
MjFjYjQ3NzJiZTcwMDE1MDBmMTk2Zjc4YjZlYmU1ZTJiZDUuLjA1YzU1MjRkZWZjNzc3NjExZGY3
NWY0OWIxOTFkN2ZkNjlmNDU4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC02
NSw3ICs2NSw3IEBAIGJvb2wgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmVuYWJsZWQo
KQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI+IE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyPigpOwogfQogCiB2b2lkIE5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjppbml0aWFsaXplKGNvbnN0IFVSTCogdXJsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRleCBhZTBiZDIwOWNjZDZmMzE3YzkxOTMyNWEx
NmExOGE5OWNkMTU3MmU0Li4wZDJhNjIxODZiNWE1NGUyYjg1MWZmOTZkNTI4MTAxZjg0NjZmNDA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpAQCAtNTAsNyArNTAsNyBAQCBib29sIFBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjplbmFibGVkKCkKIAogc3RkOjp1bmlxdWVfcHRy
PFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcj4oKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkhhbmRs
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KaW5kZXggZTgzNjlj
NmU1MDE2ZTIzY2Y4NzNiOTUzN2QyYWZiNGYwYmM2ODUyMi4uOGZlMzhhZDBjY2UyZmQ1NDJkMjk3
MDE3ZmRhMmQxY2IzNTViNzcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBTY3JvbGxD
b250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBj
b25zdCBWZWN0b3IKICAgICAgICAgaWYgKHNuYXBQb2ludHMuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gc3RkOjptYWtlX3VuaXF1
ZTxTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZT4oKTsKKyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUg
PSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBBbmltYXRvclN0YXRlPigpOwogICAgIH0KIAogICAgIGlm
IChzbmFwUG9pbnRzLmlzRW1wdHkoKSAmJiBtX3Njcm9sbFNuYXBTdGF0ZS0+c25hcE9mZnNldHNG
b3JBeGlzKG90aGVyU2Nyb2xsRXZlbnRBeGlzKGF4aXMpKS5pc0VtcHR5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKaW5kZXggNTAzZjk3YjkyMDE4ZGE4N2MyNDg4OTFiMjI2NzlhYmI3
MDA1YjMwMC4uOTZjODUxMjkzNWFiOWI2OThlODk4NTUxNjNiYjZkMjJhYzliODJlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxDRE1Qcml2YXRlPiBDRE1GYWN0b3J5Q2xlYXJLZXk6OmNyZWF0ZUNETShjb25zdCBTdHJp
bmcmIGtleVN5c3RlCiAjZWxzZQogICAgIEFTU0VSVChzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0
ZW0pKTsKICNlbmRpZgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENETVByaXZhdGVDbGVh
cktleT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlQ2xlYXJLZXk+KCk7CiB9
CiAKIGJvb2wgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2NvY29hL0dhbWVDb250cm9sbGVyR2FtZXBhZFByb3ZpZGVyLm1t
CmluZGV4IGY3MjBjZmQzMzQzZjliYWQzM2E0OTE5YTc4Zjg2NmY5ZDg2MmEwYWQuLjVhNmViNDA0
MzllZjU5MDU3MmE3YzI5ZWZjMzM4ZDkyZjIzOWM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dhbWVwYWQvY29jb2EvR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9jb2NvYS9HYW1lQ29udHJv
bGxlckdhbWVwYWRQcm92aWRlci5tbQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEdhbWVDb250cm9s
bGVyR2FtZXBhZFByb3ZpZGVyOjpjb250cm9sbGVyRGlkQ29ubmVjdChHQ0NvbnRyb2xsZXIgKmNv
bnRyb2xsZQogICAgIExPRyhHYW1lcGFkLCAiR2FtZUNvbnRyb2xsZXJHYW1lcGFkUHJvdmlkZXIg
Y29udHJvbGxlciAlcCBhZGRlZCIsIGNvbnRyb2xsZXIpOwogCiAgICAgdW5zaWduZWQgaW5kZXgg
PSBpbmRleEZvck5ld2x5Q29ubmVjdGVkRGV2aWNlKCk7Ci0gICAgYXV0byBnYW1lcGFkID0gc3Rk
OjptYWtlX3VuaXF1ZTxHYW1lQ29udHJvbGxlckdhbWVwYWQ+KGNvbnRyb2xsZXIsIGluZGV4KTsK
KyAgICBhdXRvIGdhbWVwYWQgPSBtYWtlVW5pcXVlPEdhbWVDb250cm9sbGVyR2FtZXBhZD4oY29u
dHJvbGxlciwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZlY3Rvci5zaXplKCkgPD0gaW5k
ZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4ICsgMSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3Zp
ZGVyLmNwcAppbmRleCA1NzQzOTFiNWMxMTFhMzJiZTkxMjVjYTZjZTA2MDBmNWQ2MzgyMjU3Li42
ZDE0YjZiMjE2MTBiODZjZTRjMDAxM2U1MDkxMWI4OGY5NWUxYTYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRl
ci5jcHAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEhJREdhbWVwYWRQcm92aWRlcjo6ZGV2aWNl
QWRkZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogICAgIExPRyhHYW1lcGFkLCAiSElER2FtZXBh
ZFByb3ZpZGVyIGRldmljZSAlcCBhZGRlZCIsIGRldmljZSk7CiAKICAgICB1bnNpZ25lZCBpbmRl
eCA9IGluZGV4Rm9yTmV3bHlDb25uZWN0ZWREZXZpY2UoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SElER2FtZXBhZD4gZ2FtZXBhZCA9IHN0ZDo6bWFrZV91bmlxdWU8SElER2FtZXBhZD4oZGV2aWNl
LCBpbmRleCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhJREdhbWVwYWQ+IGdhbWVwYWQgPSBtYWtl
VW5pcXVlPEhJREdhbWVwYWQ+KGRldmljZSwgaW5kZXgpOwogCiAgICAgaWYgKG1fZ2FtZXBhZFZl
Y3Rvci5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIG1fZ2FtZXBhZFZlY3Rvci5ncm93KGluZGV4
ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RGVjb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZERlY29kZXJHZW5lcmljLmNwcAppbmRleCBhNGEzMGI1MmFiZTQ4YWY4NTBkYzdjNzQ3YTNiY2Rl
MWQ1MWZkYTVmLi4wZTU5NzIzMjFiNWY3M2Y1NzJiZDc5NjU4ODExZjAwM2E5NWVkNDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVy
aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVy
R2VuZXJpYy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgS2V5ZWREZWNvZGVyR2VuZXJpYzo6
RGljdGlvbmFyeSB7CiAgICAgdXNpbmcgTm9kZSA9IFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBi
b29sLCB1aW50MzJfdCwgdWludDY0X3QsIGludDMyX3QsIGludDY0X3QsIGZsb2F0LCBkb3VibGUs
IFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJy
YXk+PjsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgYWRkKGNvbnN0IFN0
cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgc3RkOjptYWtlX3VuaXF1ZTxO
b2RlPihzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKSk7IH0KKyAgICB2b2lkIGFkZChjb25zdCBTdHJp
bmcmIGtleSwgVCYmIHZhbHVlKSB7IG1fbWFwLmFkZChrZXksIG1ha2VVbmlxdWU8Tm9kZT4oc3Rk
Ojpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CiAgICAgTm9kZSYgZ2V0KGNvbnN0IFN0cmluZyYga2V5
KSB7IHJldHVybiAqbV9tYXAuZ2V0KGtleSk7IH0KIAogcHJpdmF0ZToKQEAgLTc3LDcgKzc3LDcg
QEAgc3RhdGljIGJvb2wgcmVhZFNpbXBsZVZhbHVlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIm
IGRlY29kZXIsIEtleWVkRGVjb2RlckdlbmUKIAogc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rl
cj4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRh
dGEsIHNpemUpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEtleWVkRGVjb2RlckdlbmVyaWM+KGRh
dGEsIHNpemUpOwogfQogCiBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmlj
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpAQCAtODYsNyArODYsNyBAQCBLZXll
ZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogICAgIEtleWVkRW5jb2RlckdlbmVyaWM6OlR5cGUgdHlwZTsKICAgICBT
dHJpbmcga2V5OwogCi0gICAgbV9yb290RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGlj
dGlvbmFyeT4oKTsKKyAgICBtX3Jvb3REaWN0aW9uYXJ5ID0gbWFrZVVuaXF1ZTxEaWN0aW9uYXJ5
PigpOwogICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChtX3Jvb3REaWN0aW9uYXJ5LmdldCgp
KTsKIAogICAgIGJvb2wgb2sgPSB0cnVlOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIEtleWVkRGVjb2Rl
ckdlbmVyaWM6OktleWVkRGVjb2RlckdlbmVyaWMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgYXV0byogY3VycmVudERpY3RpbmFyeSA9IG1fZGljdGlvbmFyeVN0YWNrLmxhc3Qo
KTsKLSAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RGlj
dGlvbmFyeT4oKTsKKyAgICAgICAgICAgIGF1dG8gbmV3RGljdGlvbmFyeSA9IG1ha2VVbmlxdWU8
RGljdGlvbmFyeT4oKTsKICAgICAgICAgICAgIG1fZGljdGlvbmFyeVN0YWNrLmFwcGVuZChuZXdE
aWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAgICAgIGN1cnJlbnREaWN0aW5hcnktPmFkZChrZXks
IFdURk1vdmUobmV3RGljdGlvbmFyeSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYsMTMg
KzE1NiwxMyBAQCBLZXllZERlY29kZXJHZW5lcmljOjpLZXllZERlY29kZXJHZW5lcmljKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgb2sgPSByZWFkU3RyaW5n
KGRlY29kZXIsIGtleSk7CiAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgYXV0byBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8QXJyYXk+
KCk7CisgICAgICAgICAgICBhdXRvIG5ld0FycmF5ID0gbWFrZVVuaXF1ZTxBcnJheT4oKTsKICAg
ICAgICAgICAgIG1fYXJyYXlTdGFjay5hcHBlbmQobmV3QXJyYXkuZ2V0KCkpOwogICAgICAgICAg
ICAgbV9kaWN0aW9uYXJ5U3RhY2subGFzdCgpLT5hZGQoa2V5LCBXVEZNb3ZlKG5ld0FycmF5KSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEtleWVkRW5jb2Rl
ckdlbmVyaWM6OlR5cGU6OkJlZ2luQXJyYXlFbGVtZW50OiB7Ci0gICAgICAgICAgICBhdXRvIG5l
d0RpY3Rpb25hcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPERpY3Rpb25hcnk+KCk7CisgICAgICAgICAg
ICBhdXRvIG5ld0RpY3Rpb25hcnkgPSBtYWtlVW5pcXVlPERpY3Rpb25hcnk+KCk7CiAgICAgICAg
ICAgICBtX2RpY3Rpb25hcnlTdGFjay5hcHBlbmQobmV3RGljdGlvbmFyeS5nZXQoKSk7CiAgICAg
ICAgICAgICBtX2FycmF5U3RhY2subGFzdCgpLT5hcHBlbmQoV1RGTW92ZShuZXdEaWN0aW9uYXJ5
KSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDJmODQxMDQ3NDYzOTU1
OGYyOTVlODFhNTE3MTlhODczNGIzMmQ1OGEuLjIxY2MxZWJlNGE5MDFhMTNjNzQ0MDNkYzAxY2Yy
ZmM4MTgxMzAxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXllZEVuY29kZXI+IEtleWVkRW5jb2Rlcjo6
ZW5jb2RlcigpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8S2V5ZWRFbmNvZGVyR2Vu
ZXJpYz4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxLZXllZEVuY29kZXJHZW5lcmljPigpOwog
fQogCiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcm
IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xs
QW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcAppbmRleCA3YWU2NWM1YThkMzA5ZTNkZWVmNTNjZThjZjFl
MzAyNDI2ZDI3YzE0Li4yMDhhZjdiODQ3OWVjYWVmNTUzMGNjYzU1N2I3MzZlYmFiY2JjYjhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9y
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxB
bmltYXRvckdlbmVyaWMuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAgc3RhdGljIGNvbnN0IFNlY29u
ZHMgc2Nyb2xsQ2FwdHVyZVRocmVzaG9sZCB7IDE1MF9tcyB9OwogCiBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNj
cm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1h
dG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9s
bEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvckdl
bmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFy
ZWEpCiAgICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKICAgICAsIG1fb3Zlcmxh
eVNjcm9sbGJhckFuaW1hdGlvblRpbWVyKCp0aGlzLCAmU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpv
dmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCkKIHsKLSAgICBtX2tpbmV0aWNBbmlt
YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xs
YWJsZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX2tpbmV0aWNB
bmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fc2Nyb2xsYWJs
ZUFyZWEsIFt0aGlzXShGbG9hdFBvaW50JiYgcG9zaXRpb24pIHsKICNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKICAgICAgICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQogICAgICAgICAgICAg
bV9zbW9vdGhBbmltYXRpb24tPnNldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbik7CkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjplbnN1cmVTbW9vdGhTY3JvbGxp
bmdBbmltYXRpb24oKQogICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEFuaW1h
dGlvblNtb290aD4obV9zY3JvbGxhYmxlQXJlYSwgbV9jdXJyZW50UG9zaXRpb24sIFt0aGlzXShG
bG9hdFBvaW50JiYgcG9zaXRpb24pIHsKKyAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1ha2VVbmlx
dWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPihtX3Njcm9sbGFibGVBcmVhLCBtX2N1cnJlbnRQb3Np
dGlvbiwgW3RoaXNdKEZsb2F0UG9pbnQmJiBwb3NpdGlvbikgewogICAgICAgICB1cGRhdGVQb3Np
dGlvbihXVEZNb3ZlKHBvc2l0aW9uKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcAppbmRleCBlN2RkMTkxNDA0MTcx
OTY4ZjkwZDZmZWEzMzU0ZTE0Y2VmNmY1NTY3Li4zNjFlOWRmMzI0NWJlNTY1YjBlMmE0MWRmMThi
MjZmZmJjNzE5Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tl
eWVkRGVjb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWREZWNvZGVyR2xpYi5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBLZXllZERlY29kZXI6OmRlY29kZXIoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlx
dWU8S2V5ZWREZWNvZGVyR2xpYj4oZGF0YSwgc2l6ZSk7CiB9CiAKIEtleWVkRGVjb2RlckdsaWI6
OktleWVkRGVjb2RlckdsaWIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRl
eCA3NDA0YmNiZDQ0OWFhNDkyMWI4Y2UyYjdlMDE4NDQ5NTAxMDZmNjgwLi43MGQyNGMxMTkzZjhl
NWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBLZXllZEVuY29k
ZXI6OmVuY29kZXIoKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEtleWVkRW5jb2Rl
ckdsaWI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8S2V5ZWRFbmNvZGVyR2xpYj4oKTsKIH0K
IAogS2V5ZWRFbmNvZGVyR2xpYjo6S2V5ZWRFbmNvZGVyR2xpYigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggZjFjOTBlNTk4ODkz
YWRhODM0NzlmYzdiMzgzYTkwYTUzNWJmMmE5OS4uYjJiZDQ3Y2IxNjE0Y2RhZTVkODllZWExN2I0
MmM0Nzg2YmMyZDliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNs
ZWFyVGltZXIoKQogdm9pZCBCaXRtYXBJbWFnZTo6c3RhcnRUaW1lcihTZWNvbmRzIGRlbGF5KQog
ewogICAgIEFTU0VSVCghbV9mcmFtZVRpbWVyKTsKLSAgICBtX2ZyYW1lVGltZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsK
KyAgICBtX2ZyYW1lVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJkJpdG1hcEltYWdl
OjphZHZhbmNlQW5pbWF0aW9uKTsKICAgICBtX2ZyYW1lVGltZXItPnN0YXJ0T25lU2hvdChkZWxh
eSk7CiB9CiAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFuaW1h
dGlvbigpCiB2b2lkIEJpdG1hcEltYWdlOjpkZWNvZGUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYg
Y2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2RlY29kaW5nQ2FsbGJhY2tzKQotICAgICAgICBtX2Rl
Y29kaW5nQ2FsbGJhY2tzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8RnVuY3Rpb248dm9pZCgp
PiwgMT4+KCk7CisgICAgICAgIG1fZGVjb2RpbmdDYWxsYmFja3MgPSBtYWtlVW5pcXVlPFZlY3Rv
cjxGdW5jdGlvbjx2b2lkKCk+LCAxPj4oKTsKIAogICAgIG1fZGVjb2RpbmdDYWxsYmFja3MtPmFw
cGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDBkMzU1
NjE4OTcwZmIyNzdmNzJlNzg5OTBlM2Y0ZjJhMjE2ZmJjNjkuLjM1M2ZjYTY2MDEzMjY0YjAyNDYy
YTU3MTIyNGQwNWExODFkOTY4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcApAQCAtNzcsNyArNzcs
NyBAQCBjbGFzcyBUZXh0TGF5b3V0IHsKICAgICBUZXh0TGF5b3V0KFJlbmRlclRleHQmIHRleHQs
IGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBmbG9hdCB4UG9zKQogICAgICAgICA6IG1fZm9udChm
b250KQogICAgICAgICAsIG1fcnVuKGNvbnN0cnVjdFRleHRSdW4odGV4dCwgeFBvcykpCi0gICAg
ICAgICwgbV9jb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleFRleHRDb250cm9sbGVy
PihtX2ZvbnQsIG1fcnVuLCB0cnVlKSkKKyAgICAgICAgLCBtX2NvbnRyb2xsZXIobWFrZVVuaXF1
ZTxDb21wbGV4VGV4dENvbnRyb2xsZXI+KG1fZm9udCwgbV9ydW4sIHRydWUpKQogICAgIHsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggYzQ0
MWU1NTNjM2FjNmY0NjRiZDM1YWE5YTkwMjdjMGI0Yjg1ZTVlMS4uYTI5MjMxZTg3OTc1ZmEzMTll
ODY0NTQxNzkwYjQ4MjU0NDUzYTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHAKQEAgLTM5MCw3ICszOTAsNyBAQCBHbHlwaERhdGEgRm9udDo6Z2x5cGhEYXRh
Rm9yQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKSBjb25zdAogYXV0byBGb250OjplbnN1cmVE
ZXJpdmVkRm9udERhdGEoKSBjb25zdCAtPiBEZXJpdmVkRm9udHMmCiB7CiAgICAgaWYgKCFtX2Rl
cml2ZWRGb250RGF0YSkKLSAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlcml2ZWRGb250cz4oKTsKKyAgICAgICAgbV9kZXJpdmVkRm9udERhdGEgPSBtYWtlVW5p
cXVlPERlcml2ZWRGb250cz4oKTsKICAgICByZXR1cm4gKm1fZGVyaXZlZEZvbnREYXRhOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNmU4NGU2YTdkOThi
OGNjYzMzY2JmM2M4MTc3N2JlM2VmZTJjN2ZhNi4uZjhiODIzMzVkZWUxMmI3NzU4ZTYwYzBhYzdk
YmZlYmRhYmQzYWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApA
QCAtMzM4LDcgKzMzOCw3IEBAIEFMV0FZU19JTkxJTkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0Zv
ckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogCiAgICAgYm91bmRzID0gcGxhdGZvcm1Cb3VuZHNG
b3JHbHlwaChnbHlwaCk7CiAgICAgaWYgKCFtX2dseXBoVG9Cb3VuZHNNYXApCi0gICAgICAgIG1f
Z2x5cGhUb0JvdW5kc01hcCA9IHN0ZDo6bWFrZV91bmlxdWU8R2x5cGhNZXRyaWNzTWFwPEZsb2F0
UmVjdD4+KCk7CisgICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhN
ZXRyaWNzTWFwPEZsb2F0UmVjdD4+KCk7CiAgICAgbV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRy
aWNzRm9yR2x5cGgoZ2x5cGgsIGJvdW5kcyk7CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDA3YTEw
ODc1YzZmOGQyNDhjY2U2ZGQ4MTg2MjI5ZDdkYTljY2Y5ZWIuLjgyZjBiNjE5OThjNjkwYzRmZDFj
MjE4M2E0MTBhOTI2MDRkZDJhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEq
IEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvCiAgICAgICAgICAgICAgICAgaXQgPSBmb250UGxhdGZvcm1EYXRhQ2FjaGUoKS5maW5k
KGtleSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ICE9IGZvbnRQbGF0Zm9ybURhdGFDYWNo
ZSgpLmVuZCgpKTsKICAgICAgICAgICAgICAgICBpZiAoZm9udFBsYXRmb3JtRGF0YUZvckFsdGVy
bmF0ZU5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGl0LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Rm9udFBsYXRmb3JtRGF0YT4oKmZvbnRQbGF0Zm9ybURhdGFGb3JBbHRlcm5hdGVOYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgaXQtPnZhbHVlID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1E
YXRhPigqZm9udFBsYXRmb3JtRGF0YUZvckFsdGVybmF0ZU5hbWUpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwCmluZGV4IDcyNzRkYjBkYjMyYjNiNDFiM2UwZTFiMWVkMGZiMmFlYThi
MzZhM2IuLjY0ODE4ZjRiNTE1NWQ0MmJmYWM4MWI2MWY0YjVmOWNkZWE1NDUyZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTI1
NCw3ICsyNTQsNyBAQCBzdGF0aWMgUmVmPEZvbnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRD
YWNoZWRGb250cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aQogICAgICAgICByZXR1cm4gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Zm9udHMuZ2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRy
eSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgbmV3RW50cnkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZv
bnRzOjpjcmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CisgICAgbmV3RW50cnkgPSBtYWtl
VW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4oV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZv
bnRzOjpjcmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSk7CiAgICAgUmVmPEZvbnRDYXNjYWRl
Rm9udHM+IGdseXBocyA9IG5ld0VudHJ5LT5mb250cy5nZXQoKTsKIAogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQcnVuZUludGVydmFsID0gNTA7CkBAIC0zMjYsOSArMzI2
LDkgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4gRm9udENhc2Nh
ZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmEKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q+IGRpc3BsYXlMaXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q+KCk7CiAgICAgR3JhcGhpY3NDb250ZXh0IHJlY29yZGluZ0NvbnRleHQoWyZd
KEdyYXBoaWNzQ29udGV4dCYgZGlzcGxheUxpc3RDb250ZXh0KSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oZGlzcGxheUxpc3RDb250ZXh0
LCAqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5z
Zm9ybSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OlJlY29yZGVy
PihkaXNwbGF5TGlzdENvbnRleHQsICpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9h
dFJlY3QoKSwgQWZmaW5lVHJhbnNmb3JtKCkpOwogICAgIH0pOwogICAgIAogICAgIEZsb2F0UG9p
bnQgc3RhcnRQb2ludChzdGFydFgsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAppbmRleCBkYjc0MzAyZTlkYWE0ZWI1
MmMwY2UwODFmZDU2MDUyNzk1NzhmYmY0Li4xMmFjODM3ZmNkMjQ2NWY5ZjgxZGViMDY4N2FhNzc2
ZDVlYTA2NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZUZvbnRzLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIEZvbnRDYXNjYWRl
Rm9udHM6OkdseXBoUGFnZUNhY2hlRW50cnk6OnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hh
cjMyIGNoYQogewogICAgIEFTU0VSVCghZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3Rlciku
Z2x5cGgpOwogICAgIGlmICghbV9taXhlZEZvbnQpIHsKLSAgICAgICAgbV9taXhlZEZvbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9zaW5nbGVGb250LmdldCgpKTsK
KyAgICAgICAgbV9taXhlZEZvbnQgPSBtYWtlVW5pcXVlPE1peGVkRm9udEdseXBoUGFnZT4obV9z
aW5nbGVGb250LmdldCgpKTsKICAgICAgICAgbV9zaW5nbGVGb250ID0gbnVsbHB0cjsKICAgICB9
CiAgICAgbV9taXhlZEZvbnQtPnNldEdseXBoRGF0YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGds
eXBoRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
TWV0cmljc01hcC5oCmluZGV4IDI1OWU5NzUzM2NhZWRjZmMxNDVmZjdhYjQyOGVhMTY5ZjY0YjE1
OTQuLjc5ZTJmNTM4OGM0NmU1ODkyMzAxNjFjNDc0NTI1NDE5MjQ3ZTgyYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC0x
MzAsMTAgKzEzMCwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NN
YXA8VD46OkdseXBoTWV0cmljc1BhZ2UmIEdseXBoTWV0cmljc01hcAogICAgIH0KIAogICAgIGlm
ICghbV9wYWdlcykKLSAgICAgICAgbV9wYWdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxp
bnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+KCk7CisgICAgICAgIG1fcGFn
ZXMgPSBtYWtlVW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNz
UGFnZT4+PigpOwogCiAgICAgYXV0byYgcGFnZSA9IG1fcGFnZXMtPmVuc3VyZShwYWdlTnVtYmVy
LCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdseXBoTWV0cmljc1BhZ2U+
KHVua25vd25NZXRyaWNzKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHbHlwaE1ldHJp
Y3NQYWdlPih1bmtub3duTWV0cmljcygpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
cmV0dXJuICpwYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcAppbmRleCBhYWUzYTMwYjExNmVkZGUyNDU5NWFkOGZiYzFmY2U3
NDU2NTAwYTUxLi42Y2QwMGMyNjU3MGQ5ZGIzYjlmYWE3ZTIwMjNhZjFhNWU3ZTYzYTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNw
cApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAgICAgaWYgKG1fdHJhbnNmb3JtKQog
ICAgICAgICAqbV90cmFuc2Zvcm0gPSBtYXRyaXg7CiAgICAgZWxzZQotICAgICAgICBtX3RyYW5z
Zm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7Cisg
ICAgICAgIG1fdHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4obWF0
cml4KTsKIH0KIAogY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIEdyYXBoaWNzTGF5ZXI6OmNo
aWxkcmVuVHJhbnNmb3JtKCkgY29uc3QKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXI6OnNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgpCiAgICAgaWYgKG1fY2hpbGRyZW5UcmFuc2Zvcm0pCiAgICAgICAgICptX2NoaWxkcmVu
VHJhbnNmb3JtID0gbWF0cml4OwogICAgIGVsc2UKLSAgICAgICAgbV9jaGlsZHJlblRyYW5zZm9y
bSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KG1hdHJpeCk7CisgICAg
ICAgIG1fY2hpbGRyZW5UcmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4
PihtYXRyaXgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXI6OnNldE1hc2tMYXllcihSZWZQdHI8
R3JhcGhpY3NMYXllcj4mJiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCAwMDlkNDg2ODk1ZDU2ODYyNTQwMTFkZjU2MDBh
NzIxMTI0MzBlNjJmLi43YTFmZWFhYzc5ZTc4YmE4OGZjYWRjYjg1ZTMyOTlmZDc5YTAwNDNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRmxvYXRBbmltYXRpb25WYWx1ZSA6IHB1YmxpYyBB
bmltYXRpb25WYWx1ZSB7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uVmFsdWU+IGNs
b25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8RmxvYXRBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIGZsb2F0IHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQpAQCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlIDogcHVibGljIEFuaW1hdGlvblZhbHVlIHsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFs
dWU+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWU+KCp0aGlzKTsKICAgICB9CiAKICAgICBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShjb25z
dCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSYgb3RoZXIpCkBAIC0xNjMsNyArMTYzLDcgQEAgY2xh
c3MgRmlsdGVyQW5pbWF0aW9uVmFsdWUgOiBwdWJsaWMgQW5pbWF0aW9uVmFsdWUgewogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1
ZT4oKnRoaXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1
ZT4oKnRoaXMpOwogICAgIH0KIAogICAgIEZpbHRlckFuaW1hdGlvblZhbHVlKGNvbnN0IEZpbHRl
ckFuaW1hdGlvblZhbHVlJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAppbmRleCA4ZWNmMzNmODk4Yjc0NDkxMWY3MDVhMTQ5ZmY3ODhiNjdiNmQ5NGVm
Li4zOTk5NjcyYjlmNTg5MzI4NmNmMzJkYjFjYzZiODBhMzMxODJhZGM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9p
ZCBJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWMKIHZvaWQgSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uQXN5bmNocm9u
b3VzbHkoKQogewogICAgIGlmICghbV9hbmltYXRpb25TdGFydFRpbWVyKQotICAgICAgICBtX2Fu
aW1hdGlvblN0YXJ0VGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPigqdGhpcywgJkltYWdl
OjpzdGFydEFuaW1hdGlvbik7CisgICAgICAgIG1fYW5pbWF0aW9uU3RhcnRUaW1lciA9IG1ha2VV
bmlxdWU8VGltZXI+KCp0aGlzLCAmSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKTsKICAgICBpZiAobV9h
bmltYXRpb25TdGFydFRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9h
bmltYXRpb25TdGFydFRpbWVyLT5zdGFydE9uZVNob3QoMF9zKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA3NTdmMDk1NjdkYzVk
ZmRmNWJlMDI2Mzk2MzlkMWVmZWM3MThjMGRiLi5hYmU4Njk0MTk0ZmY3YzE3NTEwMGI2OTg4MDRh
MTI0MGJkNjJjODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgY2xhc3MgTnVsbE1lZGlhUGxheWVy
UHJpdmF0ZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogCiAg
ICAgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAg
IGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7IH0KIAogICAgIGRv
dWJsZSBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAwOyB9CkBAIC0zNTUsNyArMzU1LDcgQEAgUmVmPE1lZGlhUGxheWVyPiBNZWRpYVBs
YXllcjo6Y3JlYXRlKE1lZGlhUGxheWVyQ2xpZW50JiBjbGllbnQpCiBNZWRpYVBsYXllcjo6TWVk
aWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1fY2xpZW50KCZjbGll
bnQpCiAgICAgLCBtX3JlbG9hZFRpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVy
RmlyZWQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxOdWxsTWVkaWFQbGF5ZXJQ
cml2YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPE51bGxNZWRpYVBsYXll
clByaXZhdGU+KHRoaXMpKQogewogfQogCkBAIC01MTEsNyArNTExLDcgQEAgdm9pZCBNZWRpYVBs
YXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUoY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBj
dXJyZW50KQogI2VuZGlmCiAgICAgICAgIG1fcHJpdmF0ZS0+bG9hZChtX3VybC5zdHJpbmcoKSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wcml2YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxOdWxs
TWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKKyAgICAgICAgbV9wcml2YXRlID0gbWFrZVVuaXF1
ZTxOdWxsTWVkaWFQbGF5ZXJQcml2YXRlPih0aGlzKTsKICAgICAgICAgY2xpZW50KCkubWVkaWFQ
bGF5ZXJFbmdpbmVVcGRhdGVkKHRoaXMpOwogICAgICAgICBjbGllbnQoKS5tZWRpYVBsYXllclJl
c291cmNlTm90U3VwcG9ydGVkKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMDBkODVhNDk5
NjQyYjNmNTIzN2IzMGJmZjVmNGU2YjQyOTEzMGVjZC4uMWQyZmMwMDkyMDRhOGMwMjU1NDFiMmEy
ZDdjNWYwZDBiZTVjOTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UgewogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5l
dHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1heE1lZGlhVGltZVNlZWthYmxlKCkgPT0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpID8gc3Rk
OjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCkgOiBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtVGltZVJhbmdlcz4obWluTWVkaWFUaW1lU2Vla2FibGUoKSwgbWF4TWVkaWFUaW1lU2Vl
a2FibGUoKSk7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IHNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gbWF4TWVkaWFUaW1lU2Vla2FibGUoKSA9PSBN
ZWRpYVRpbWU6Onplcm9UaW1lKCkgPyBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKSA6
IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVrYWJsZSgpLCBt
YXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWth
YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1heE1lZGlh
VGltZVNlZWthYmxlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KG1heFRpbWVTZWVrYWJsZSgpKTsgfQogICAgIHZpcnR1YWwgZG91YmxlIG1pblRpbWVTZWVrYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKaW5kZXggM2U2ODgwNTViZGNjMGIxMGU0MTYwY2Yx
NDBkNGZhY2U5MjMyMGE2NS4uNWFkOTMzNDliZmI0MGRhNGZmMzA4YWRhOTg0OTdmYzM3NWUxMDhh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxp
dGllcy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRmxvYXRQb2ludEdyYXBoOjpOb2RlKiBGbG9hdFBv
aW50R3JhcGg6OmZpbmRPckNyZWF0ZU5vZGUoRmxvYXRQb2ludCBwb2ludCkKICAgICAgICAgICAg
IHJldHVybiB0ZXN0Tm9kZS5nZXQoKTsKICAgICB9CiAKLSAgICBtX2FsbE5vZGVzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4ocG9pbnQpKTsKKyAgICBtX2Fs
bE5vZGVzLmFwcGVuZChtYWtlVW5pcXVlPEZsb2F0UG9pbnRHcmFwaDo6Tm9kZT4ocG9pbnQpKTsK
ICAgICByZXR1cm4gbV9hbGxOb2Rlcy5sYXN0KCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCmluZGV4IDlkY2VlODc2MTYyNWMwMTQ4OGI0
ZDkwZDFhZjIyZTM1NDM1ZDRhNWUuLjZhNzAxYzFhMTI4OTc5ZDRjOTQ4YjFhN2JhYjU2OGYxMDI0
N2NmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcApA
QCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgUmVnaW9uOjpzZXRTaGFwZShTaGFwZSYmIHNoYXBlKQog
ICAgIH0KIAogICAgIGlmICghbV9zaGFwZSkKLSAgICAgICAgbV9zaGFwZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKKyAgICAgICAgbV9zaGFwZSA9IG1ha2VVbmlx
dWU8U2hhcGU+KFdURk1vdmUoc2hhcGUpKTsKICAgICBlbHNlCiAgICAgICAgICptX3NoYXBlID0g
V1RGTW92ZShzaGFwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5oCmluZGV4IDQwZjk2YmZhZmIwZGIwMzVkYTY5ZDU5NmMwMTUyYzFjYmFmMTc4Y2MuLmJjMzlj
MzAwMDBlYThiNmI1YTllNjBjZjJiYzVhZTE4NjY2NGI2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgUmVnaW9u
IHsKICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZSYsIGNvbnN0IFNo
YXBlJik7CiAgICAgfTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY29weVNoYXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFwZSA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhcGU+KCptX3NoYXBl
KSA6IG51bGxwdHI7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNvcHlTaGFwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhcGUgPyBtYWtlVW5pcXVlPFNoYXBlPigqbV9zaGFwZSkgOiBudWxs
cHRyOyB9CiAgICAgdm9pZCBzZXRTaGFwZShTaGFwZSYmKTsKIAogICAgIEludFJlY3QgbV9ib3Vu
ZHM7CkBAIC0yOTAsNyArMjkwLDcgQEAgT3B0aW9uYWw8UmVnaW9uPiBSZWdpb246OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBkZWNvZGVyID4+IHNoYXBlOwogICAgICAgICBpZiAo
IXNoYXBlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmVnaW9u
Lm1fc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOworICAg
ICAgICByZWdpb24ubV9zaGFwZSA9IG1ha2VVbmlxdWU8U2hhcGU+KFdURk1vdmUoKnNoYXBlKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHsgcmVnaW9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAK
aW5kZXggMWU0ZTdmYWMzNmM3YzMwYTY1NmYxZWZkMDBhYWNlNmQ0Yzk1Y2VkYS4uNjkzOWY5MTdh
ZTZmYWIxM2VjMWM5MWQ0YWE4MTU1NjZhOTE3MGRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRUcmFja1JlcHJlc2VudGF0aW9uLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBOdWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gOiBw
dWJsaWMgVGV4dFRyYWNrUmVwcmVzZW50YXRpb24gewogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dFRy
YWNrUmVwcmVzZW50YXRpb24+IFRleHRUcmFja1JlcHJlc2VudGF0aW9uOjpjcmVhdGUoVGV4dFRy
YWNrUmVwcmVzZW50YXRpb25DbGllbnQmKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE51bGxUZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxO
dWxsVGV4dFRyYWNrUmVwcmVzZW50YXRpb24+KCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0M0RB
TkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHQzREFOR0xFLmNwcAppbmRleCA3N2EzZTE4YzFjNmMyZTI3ZGQ2M2FlMjk2ZjZlYzlh
MWVhMmZhZTFmLi42MTI2MGU5YzgzZGM0YTU1Mjg1NzFjOTlkNGEyNzA1YjE2Y2E0ZTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHQzREFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHQzREFOR0xFLmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKIEV4dGVuc2lv
bnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9l
eHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVu
c2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOworICAgICAgICBtX2V4dGVu
c2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzREFOR0xFPih0aGlzLCBpc0dMRVMyQ29tcGxp
YW50KCkpOwogICAgIHJldHVybiAqbV9leHRlbnNpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggNWNkNzc3MmFjMmVlMWNl
YTkwMTBlODMzNzFlYTZhYWVmN2YwNjk1OC4uNmIzYzkyMmU2YWViZTU5MjBhZTY1ZTU3YWYwNWVk
ZTRhZDAzNzQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbQpAQCAtMzEzLDEyICszMTMsMTIgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6cHJlcGFyZShDTUl0ZW1Db3VudCBtYXhGcmFtZXMsIGNvbnN0IEF1ZGlvU3RyZWEK
IHsKICAgICBBU1NFUlQobWF4RnJhbWVzID49IDApOwogCi0gICAgbV90YXBEZXNjcmlwdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigqcHJvY2Vzc2lu
Z0Zvcm1hdCk7CisgICAgbV90YXBEZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4oKnByb2Nlc3NpbmdGb3JtYXQp
OwogICAgIGludCBudW1iZXJPZkNoYW5uZWxzID0gcHJvY2Vzc2luZ0Zvcm1hdC0+bUNoYW5uZWxz
UGVyRnJhbWU7CiAgICAgZG91YmxlIHNhbXBsZVJhdGUgPSBwcm9jZXNzaW5nRm9ybWF0LT5tU2Ft
cGxlUmF0ZTsKICAgICBBU1NFUlQoc2FtcGxlUmF0ZSA+PSAwKTsKIAotICAgIG1fb3V0cHV0RGVz
Y3JpcHRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbj4o
KTsKKyAgICBtX291dHB1dERlc2NyaXB0aW9uID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uPigpOwogICAgIG1fb3V0cHV0RGVzY3Jp
cHRpb24tPm1TYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICBtX291dHB1dERlc2NyaXB0aW9u
LT5tRm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CiAgICAgbV9vdXRwdXREZXNjcmlw
dGlvbi0+bUZvcm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZDsK
QEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcmVw
YXJlKENNSXRlbUNvdW50IG1heEZyYW1lcywgY29uc3QgQXVkaW9TdHJlYQogICAgIC8vIE1ha2Ug
dGhlIHJpbmdidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIHN0b3JlIGF0IGxlYXN0IHR3byBjYWxsYmFj
a3Mgd29ydGggb2YgYXVkaW8sIG9yIDFzLCB3aGljaGV2ZXIgaXMgbGFyZ2VyLgogICAgIHNpemVf
dCBjYXBhY2l0eSA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHNpemVfdD4oMiAqIG1heEZyYW1lcyks
IHN0YXRpY19jYXN0PHNpemVfdD4oa1JpbmdCdWZmZXJEdXJhdGlvbiAqIHNhbXBsZVJhdGUpKTsK
IAotICAgIG1fcmluZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPigpOwor
ICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWU8Q0FSaW5nQnVmZmVyPigpOwogICAgIG1fcmlu
Z0J1ZmZlci0+YWxsb2NhdGUoQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKCpwcm9jZXNzaW5nRm9y
bWF0KSwgY2FwYWNpdHkpOwogCiAgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUt
bGVuZ3RoIHN0cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygp
IG9wZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRl
eCAzNjFhOTkyZjBjNDY1MGNmMmI5NjI4YTY0MmU5N2I1ZGJhMGUyYTNjLi40ZmM2Nzg3ZGQ4ZDkw
N2NhZDZhMjc3ZjM5YjFlZDMyZWQ2NzlhNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RN
UHJpdmF0ZT4gQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpjcmVhdGVDRE0oY29uc3QgU3Ry
aW5nJgogICAgIGlmICghc3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nPigpOwogfQogCiBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDJjYzA4YTlh
M2I1MWNiZjdhYjE5NzQyMDJhOThiMTY5ZGI0M2MxMDEuLjBjZDAxMjlhM2NkOWVhZjg2M2FkNDc4
OTgzODUwMzFkOGI3NmVmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xNDcsMTAgKzE0NywxMCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8TGVnYWN5Q0RNU2Vzc2lvbj4gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRl
U2Vzc2lvbihMZQogI2VuZGlmCiAgICAgCiAgICAgaWYgKHNob3VsZFVzZUFWQ29udGVudEtleVNl
c3Npb24gJiYgQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmlzQXZhaWxhYmxlKCkpCi0g
ICAgICAgIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJz
LnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNsaWVudCk7CisgICAgICAgIHNlc3Npb24gPSBtYWtl
VW5pcXVlPENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uPihXVEZNb3ZlKHBhcmFtZXRlcnMu
dmFsdWUoKS5wcm90b2NvbHMpLCBwYXJhbWV0ZXJzLnZhbHVlKCkudmVyc2lvbiwgKnRoaXMsIGNs
aWVudCk7CiAgICAgZWxzZQogI2lmIEhBVkUoQVZTVFJFQU1TRVNTSU9OKQotICAgICAgICBzZXNz
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihXVEZNb3Zl
KHBhcmFtZXRlcnMudmFsdWUoKS5wcm90b2NvbHMpLCAqdGhpcywgY2xpZW50KTsKKyAgICAgICAg
c2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbj4oV1RGTW92ZShw
YXJhbWV0ZXJzLnZhbHVlKCkucHJvdG9jb2xzKSwgKnRoaXMsIGNsaWVudCk7CiAjZWxzZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCA4NTdmMzFmMjc3MmY0MDgx
ZmJhNjM4ZjgxMGMxMTQ5NDI4NThiOTRiLi41OWNmOGJhMjEzMTZiMzA3YzA1MDIzZWQ1NmQ5YjM5
ZDI1NjE3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6YnVmZmVy
ZWQoKSBjCiAgICAgaWYgKCFtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMpCiAgICAgICAgIG1fY2Fj
aGVkTG9hZGVkVGltZVJhbmdlcyA9IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCk7CiAKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCptX2NhY2hlZExv
YWRlZFRpbWVSYW5nZXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdl
cz4oKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246Om1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9XZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAppbmRleCAzOTVj
ZTc4MmU4YzU4MDQ1OTYxNjI0Njk4MGYzM2VhZGYwM2I3OGIyLi41ZjViNmY2OTUyYjQ5M2E5ODg3
YmFmYzdmMzBiN2JlZTczMzQxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1dlYk1lZGlh
U2Vzc2lvbk1hbmFnZXJNYWMuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWM6On5XZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjKCkgPSBkZWZhdWx0OwogV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlciYgV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYzo6
cGxhdGZvcm1QaWNrZXIoKQogewogICAgIGlmICghbV90YXJnZXRQaWNrZXIpCi0gICAgICAgIG1f
dGFyZ2V0UGlja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TWFjPigqdGhpcyk7CisgICAgICAgIG1fdGFyZ2V0UGlja2VyID0gbWFrZVVuaXF1ZTxNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyTWFjPigqdGhpcyk7CiAKICAgICByZXR1cm4gKm1fdGFyZ2V0UGlj
a2VyLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYzJjOGFlNmMxZWUxYzU2NDIyMmU1
MDJiMzI5YzU5MmU1ZmEyYThlZS4uM2I3MGU3NjYzOWU1OTQwYWYxZjJiMWQ1YmYyNjczYWUzMmRl
Y2ExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGljIGRpc3Bh
dGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKLSAgICAgICAgcmVn
aXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y+KHBsYXllcik7IH0sCisgICAgICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGPihwbGF5ZXIpOyB9LAogICAgICAgICAgICAgZ2V0
U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNLZXlTeXN0ZW0p
OwogfQogCkBAIC02NzQsNyArNjc0LDcgQEAgc3RhdGljIGJvb2wgdGltZVJhbmdlSXNWYWxpZEFu
ZE5vdEVtcHR5KENNVGltZSBzdGFydCwgQ01UaW1lIGR1cmF0aW9uKQogCiBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdAogewotICAgIGF1dG8gdGltZVJhbmdl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOworICAgIGF1dG8gdGlt
ZVJhbmdlcyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogCiAgICAgaWYgKCFh
dlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CkBA
IC0xMTM5LDcgKzExMzksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVNlc3NpbwogICAgIGlmICgha2V5
U3lzdGVtSXNTdXBwb3J0ZWQoa2V5U3lzdGVtKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y+KCp0
aGlzLCBjbGllbnQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRp
b25DRj4oKnRoaXMsIGNsaWVudCk7CiB9CiAKICNlbGlmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQpAQCAtMTcxMSw3ICsxNzExLDcgQEAgdm9pZCBBVkZXcmFwcGVyOjpub3RpZmljYXRp
b25DYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIEMKICAg
ICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayhpZj0lZCkgJXMi
LCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ob2JzZXJ2ZXIpLCBub3RpZmljYXRpb25OYW1l
KTsKICNlbmRpZgogCi0gICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxOb3RpZmljYXRpb25DYWxsYmFja0RhdGE+KHByb3BlcnR5TmFtZSwgb2JzZXJ2ZXIpOworICAg
IGF1dG8gbm90aWZpY2F0aW9uRGF0YSA9IG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9uQ2FsbGJhY2tE
YXRhPihwcm9wZXJ0eU5hbWUsIG9ic2VydmVyKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbm90aWZpY2F0aW9uRGF0YS5yZWxlYXNlKCksIHByb2Nl
c3NOb3RpZmljYXRpb24pOwogfQpAQCAtMTgzNyw3ICsxODM3LDcgQEAgdm9pZCBBVkZXcmFwcGVy
OjpsZWdpYmxlT3V0cHV0Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQVZDRlBsYXllckl0ZW1MZWdp
YmxlT3V0cHUKIAogICAgIEFTU0VSVChsZWdpYmxlT3V0cHV0ID09IHNlbGYtPm1fbGVnaWJsZU91
dHB1dCk7CiAKLSAgICBhdXRvIGxlZ2libGVPdXRwdXREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxM
ZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmluZ3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMs
IFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250ZXh0KTsKKyAgICBhdXRvIGxlZ2libGVP
dXRwdXREYXRhID0gbWFrZVVuaXF1ZTxMZWdpYmxlT3V0cHV0RGF0YT4oYXR0cmlidXRlZFN0cmlu
Z3MsIG5hdGl2ZVNhbXBsZUJ1ZmZlcnMsIFBBTDo6dG9NZWRpYVRpbWUoaXRlbVRpbWUpLCBjb250
ZXh0KTsKIAogICAgIGRpc3BhdGNoX2FzeW5jX2YoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
bGVnaWJsZU91dHB1dERhdGEucmVsZWFzZSgpLCBwcm9jZXNzQ3VlKTsKIH0KQEAgLTE5MzEsNyAr
MTkzMSw3IEBAIEJvb2xlYW4gQVZGV3JhcHBlcjo6cmVzb3VyY2VMb2FkZXJTaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2UoQVZDRkFzCiAKICAgICBMT0coTWVkaWEsICJBVkZX
cmFwcGVyOjpyZXNvdXJjZUxvYWRlclNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXF1ZXN0ZWRSZXNv
dXJjZSglcCkiLCBzZWxmKTsKIAotICAgIGF1dG8gbG9hZFJlcXVlc3REYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxMb2FkUmVxdWVzdERhdGE+KGxvYWRpbmdSZXF1ZXN0LCBjb250ZXh0KTsKKyAgICBh
dXRvIGxvYWRSZXF1ZXN0RGF0YSA9IG1ha2VVbmlxdWU8TG9hZFJlcXVlc3REYXRhPihsb2FkaW5n
UmVxdWVzdCwgY29udGV4dCk7CiAKICAgICBkaXNwYXRjaF9hc3luY19mKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIGxvYWRSZXF1ZXN0RGF0YS5yZWxlYXNlKCksIHByb2Nlc3NTaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVzb3VyY2UpOwogCkBAIC0xOTU4LDcgKzE5NTgsNyBAQCBQbGF0Zm9ybUxh
eWVyKiBBVkZXcmFwcGVyOjpwbGF0Zm9ybUxheWVyKCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICAvLyBDcmVhdGUgYSBQbGF0Zm9ybUNBTGF5ZXIgc28gd2UgY2FuIHJlc2l6ZSB0aGUgdmlkZW8g
bGF5ZXIgdG8gbWF0Y2ggdGhlIGVsZW1lbnQgc2l6ZS4KLSAgICBtX2xheWVyQ2xpZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4odGhpcyk7CisgICAgbV9sYXllckNsaWVudCA9IG1h
a2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMpOwogICAgIGlmICghbV9sYXllckNsaWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJh
Y2tQcml2YXRlQVZGT2JqQy5tbQppbmRleCBlMTRhZjFhMjdmMjZiZDFhZDYwMjg2MDRhNTc1MmYw
ZGY5YThkZjUyLi43ZGUxNGMyNTcxZjdkMzhlZWNiYjM0OGZkYTNjNzRhNDNkZWI4MmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9BdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1t
CkBAIC0zMywxMyArMzMsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDOjpBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMoQVZQbGF5ZXJJdGVtVHJhY2sq
IHRyYWNrKQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZP
YmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwog
fQogCiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhN
ZWRpYVNlbGVjdGlvbk9wdGlvbkFWRk9iakMmIG9wdGlvbikKLSAgICA6IG1faW1wbChzdGQ6Om1h
a2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCisgICAgOiBtX2lt
cGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pKQogewogICAg
IHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQpAQCAtNTksNyArNTksNyBAQCB2b2lkIEF1
ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6cmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCkKIAogdm9p
ZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldFBsYXllckl0ZW1UcmFjayhBVlBsYXllckl0
ZW1UcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNr
UHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAgbV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRy
YWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRy
YWNrKCk7CiB9CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCBBVlBsYXllckl0ZW1UcmFjayogQXVkaW9U
cmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogfQogCiBBdWRpb1RyYWNrUHJp
dmF0ZUFWRk9iakM6OkF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNr
KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpD
SW1wbD4odHJhY2spKQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCiB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sg
KnRyYWNrKQogewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVB
VkZPYmpDSW1wbD4odHJhY2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZh
dGVBVkZPYmpDSW1wbD4odHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwog
fQogCkBAIC04Nyw3ICs4Nyw3IEBAIEFWQXNzZXRUcmFjayogQXVkaW9UcmFja1ByaXZhdGVBVkZP
YmpDOjphc3NldFRyYWNrKCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1l
ZGlhU2VsZWN0aW9uT3B0aW9uKE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQog
ewotICAgIG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1w
bD4ob3B0aW9uKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2Jq
Q0ltcGw+KG9wdGlvbik7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmNwcAppbmRleCBlYzBkMGVkZGJmNzNiZWVkYTY3MTdiN2E1MThj
NzMyMTI2MDk1YWUyLi5kZjUyMjZhNGVhMDM2ZTU2ZmEyNTM5YTYyNzYyYTIzOGFlNzBlMGE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpBdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNrLCBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQyogcGFyZW50KQotICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlx
dWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQorICAgIDogbV9pbXBsKG1ha2VV
bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJhY2spKQogICAgICwgbV9wYXJlbnQo
cGFyZW50KQogewogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwpAQCAtNTIsNyArNTIs
NyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZXNldFByb3Bl
cnRpZXNGcm9tVHJhY2soKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayAqdHJhY2spCiB7Ci0gICAgbV9pbXBsID0g
c3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CisgICAg
bV9pbXBsID0gbWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0cmFjayk7CiAg
ICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IDU0ODIwZDIyNTE5N2RiN2Y5YmU3M2Y0
ZmJkMmNlYzg3OGY5YTgwMDguLjMyNmRhZGJiMTdkMDg5MTE3MGViNzU0NTNiNjM0OGQ3ZmU4Mzk3
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpA
QCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6cmVhZFRyYWNrTWV0
YWRhdGEoKQogICAgICAgICB8fCAhbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkK
ICAgICAgICAgfHwgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+dHJhbnNmb3JtKCkudmFsdWUoKSAh
PSBmaW5hbFRyYW5zZm9ybQogICAgICAgICB8fCBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5zaXpl
KCkgIT0gc2l6ZSkKLSAgICAgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIHNp
emUsIGtDVlBpeGVsRm9ybWF0VHlwZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6Oklz
Q0dJbWFnZUNvbXBhdGlibGU6Olllcyk7CisgICAgICAgIG1faW1hZ2VSb3RhdGlvblNlc3Npb24g
PSBtYWtlVW5pcXVlPEltYWdlUm90YXRpb25TZXNzaW9uVlQ+KFdURk1vdmUoZmluYWxUcmFuc2Zv
cm0pLCBzaXplLCBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lv
blZUOjpJc0NHSW1hZ2VDb21wYXRpYmxlOjpZZXMpOwogCiAgICAgbV9zaXplID0gZXhwYW5kZWRJ
bnRTaXplKG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJvdGF0ZWRTaXplKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KaW5kZXggNWNkMjI0MDNhYTJjMmVmNjIyZTMwMGQwMDc0MWZjMGMzMzM5
YmYzNi4uN2ZjMDE4YWU1OGVhZjUyNTYwZGVlNmIzNGExYTk3Y2U3ZDAxZDIxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmEKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCisgICAgcmVnaXN0
cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlxdWU8TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1
cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVk
aWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOwog
ICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUo
KSk7CiB9CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYKIAogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uKHBsYXllcikKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
KHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKKyAg
ICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVuR3Jhdml0eShN
ZWRpYVBsYXllcjo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KQogICAgICwgbV9vYmpjT2JzZXJ2
ZXIoYWRvcHROUyhbW1dlYkNvcmVBVkZNb3ZpZU9ic2VydmVyIGFsbG9jXSBpbml0V2l0aFBsYXll
cjptYWtlV2Vha1B0cigqdGhpcyldKSkKICAgICAsIG1fdmlkZW9GcmFtZUhhc0RyYXduKGZhbHNl
KQpAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNlcnZlc1BpdGNoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAgYXV0byB0
aW1lUmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAg
YXV0byB0aW1lUmFuZ2VzID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAKICAg
ICBpZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKQEAgLTE4
OTIsNyArMTg5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
dXBkYXRlUm90YXRpb25TZXNzaW9uKCkKICAgICAgICAgJiYgbV9pbWFnZVJvdGF0aW9uU2Vzc2lv
bi0+c2l6ZSgpID09IG5hdHVyYWxTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ltYWdl
Um90YXRpb25TZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
PihXVEZNb3ZlKGZpbmFsVHJhbnNmb3JtKSwgbmF0dXJhbFNpemUsIGtDVlBpeGVsRm9ybWF0VHlw
ZV8zMkJHUkEsIEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OklzQ0dJbWFnZUNvbXBhdGlibGU6Olll
cyk7CisgICAgbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlv
blNlc3Npb25WVD4oV1RGTW92ZShmaW5hbFRyYW5zZm9ybSksIG5hdHVyYWxTaXplLCBrQ1ZQaXhl
bEZvcm1hdFR5cGVfMzJCR1JBLCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpJc0NHSW1hZ2VDb21w
YXRpYmxlOjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMjIxNiw3ICsy
MjE2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVM
YXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogI2Vsc2UKICAgICAgICAgTlNEaWN0aW9uYXJ5ICph
dHRyaWJ1dGVzID0gbmlsOwogI2VuZGlmCi0gICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRp
Y3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CisgICAgICAgIG1fcGl4ZWxCdWZmZXJDb25mb3JtZXIg
PSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25h
cnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBA
IC0yMjY1LDcgKzIyNjUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaAogICAgIHNpemVfdCBo
ZWlnaHQgPSBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsK
IAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAgIG1fdmlkZW9UZXh0dXJl
Q29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQp
OworICAgICAgICBtX3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJl
Q29waWVyQ1Y+KCpjb250ZXh0KTsKIAogICAgIHJldHVybiBtX3ZpZGVvVGV4dHVyZUNvcGllci0+
Y29weUltYWdlVG9QbGF0Zm9ybVRleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIHdpZHRo
LCBoZWlnaHQsIG91dHB1dFRleHR1cmUsIG91dHB1dFRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9y
bWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KQEAgLTIzMzAs
NyArMjMzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVTZXNzCiB7CiAgICAgaWYgKCFrZXlTeXN0
ZW1Jc1N1cHBvcnRlZChrZXlTeXN0ZW0pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBh
dXRvIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpD
Pih0aGlzLCBjbGllbnQpOworICAgIGF1dG8gc2Vzc2lvbiA9IG1ha2VVbmlxdWU8Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakM+KHRoaXMsIGNsaWVudCk7CiAgICAgbV9zZXNzaW9uID0gbWFrZVdl
YWtQdHIoKnNlc3Npb24pOwogICAgIHJldHVybiBXVEZNb3ZlKHNlc3Npb24pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDcyZDFhZjE3ZTk3NzBjMjI4N2Y3ZjVjY2U5Yzg3NmUz
Mzk4M2I1MjIuLmQ4Y2VmZWI1ODRmODYzZjEzNWE4YTExODIxYTI4ZDMyNGM4ZmM0YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTE0MSw3ICsxNDEsNyBAQCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyhNZWRpYQogICAgICwgbV9wbGF5aW5nKDApCiAgICAgLCBtX3NlZWtpbmcoZmFsc2UpCiAg
ICAgLCBtX2xvYWRpbmdQcm9ncmVzc2VkKGZhbHNlKQotICAgICwgbV92aWRlb0Z1bGxzY3JlZW5M
YXllck1hbmFnZXIoc3RkOjptYWtlX3VuaXF1ZTxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJP
YmpDPigpKQorICAgICwgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXIobWFrZVVuaXF1ZTxW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPigpKQogICAgICwgbV9lZmZlY3RpdmVSYXRl
Q2hhbmdlZExpc3RlbmVyKEVmZmVjdGl2ZVJhdGVDaGFuZ2VkTGlzdGVuZXI6OmNyZWF0ZSgqdGhp
cywgW21fc3luY2hyb25pemVyIHRpbWViYXNlXSkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgLCBtX2xvZ2dlcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3QKICAgICBpZiAoIWlzQXZhaWxhYmxlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQz4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIqIHBsYXll
cikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+KHBsYXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUs
IDAsIDAsIDAsIDApOwogICAgIEFTU0VSVChBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9u
KCkuaXNBdmFpbGFibGUoKSk7CiB9CkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlh
VGltZSYgdGkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidGltZSA9ICIsIHRpbWUsICIs
IG5lZ2F0aXZlVGhyZXNob2xkID0gIiwgbmVnYXRpdmVUaHJlc2hvbGQsICIsIHBvc2l0aXZlVGhy
ZXNob2xkID0gIiwgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAgICAgbV9zZWVraW5nID0gdHJ1ZTsK
LSAgICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwg
bmVnYXRpdmVUaHJlc2hvbGQsIHBvc2l0aXZlVGhyZXNob2xkKTsKKyAgICBtX3BlbmRpbmdTZWVr
ID0gbWFrZVVuaXF1ZTxQZW5kaW5nU2Vlaz4odGltZSwgbmVnYXRpdmVUaHJlc2hvbGQsIHBvc2l0
aXZlVGhyZXNob2xkKTsKIAogICAgIGlmIChtX3NlZWtUaW1lci5pc0FjdGl2ZSgpKQogICAgICAg
ICBtX3NlZWtUaW1lci5zdG9wKCk7CkBAIC01NDcsNyArNTQ3LDcgQEAgTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWFkeVN0YXRl
KCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihtaW5NZWRpYVRpbWVTZWVr
YWJsZSgpLCBtYXhNZWRpYVRpbWVTZWVrYWJsZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KG1pbk1lZGlhVGltZVNlZWthYmxlKCksIG1heE1lZGlhVGltZVNl
ZWthYmxlKCkpOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjptYXhNZWRpYVRpbWVTZWVrYWJsZSgpIGNvbnN0CkBAIC01NjIsNyArNTYyLDcgQEAg
TWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6bWluTWVkaWFU
aW1lU2Vla2FibGUoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0
ZS0+YnVmZmVyZWQoKSA6IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwor
ICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5i
dWZmZXJlZCgpIDogbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpkaWRMb2FkaW5nUHJvZ3Jlc3Mo
KSBjb25zdApAQCAtNjA2LDcgKzYwNiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjp1cGRhdGVMYXN0SW1hZ2UoKQogCiAgICAgaWYgKCFtX3JnYkNvbmZvcm1l
cikgewogICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilr
Q1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJC
R1JBKSB9OwotICAgICAgICBtX3JnYkNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxC
dWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzKTsK
KyAgICAgICAgbV9yZ2JDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYXR0cmlidXRlcyk7CiAgICAgfQogCiAgICAg
bV9sYXN0SW1hZ2UgPSBtX3JnYkNvbmZvcm1lci0+Y3JlYXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoR3JhCiAgICAgc2l6ZV90IGhlaWdodCA9IENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQo
bV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAgaWYgKCFtX3ZpZGVvVGV4dHVyZUNvcGll
cikKLSAgICAgICAgbV92aWRlb1RleHR1cmVDb3BpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFZpZGVv
VGV4dHVyZUNvcGllckNWPigqY29udGV4dCk7CisgICAgICAgIG1fdmlkZW9UZXh0dXJlQ29waWVy
ID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJDVj4oKmNvbnRleHQpOwogCiAgICAgcmV0
dXJuIG1fdmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5SW1hZ2VUb1BsYXRmb3JtVGV4dHVyZShtX2xh
c3RQaXhlbEJ1ZmZlci5nZXQoKSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0VGV4dHVyZSwgb3V0cHV0
VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlB
bHBoYSwgZmxpcFkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGNhM2IxMTM1
NTJiMzg4NWM5OTk3N2RhZTJhMjFlYTE2NTc3ZWRhODAuLjlkZWVlNDZmMmNhMjQ1Mjk1M2RmNWNh
ODhiYjY5ZjgxOGU3ZTRlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTE4Myw3
ICsxODMsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYQogICAgIDogbV9wbGF5ZXIocGxheWVy
KQogICAgICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZm
ZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAg
ICwgbV9jbG9jayhQQUw6OkNsb2NrOjpjcmVhdGUoKSkKLSAgICAsIG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyKHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
T2JqQz4oKSkKKyAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKICAgICAs
IG1fbG9nSWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQpAQCAt
MjIwLDcgKzIyMCw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygpCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJl
Z2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4ocGxheWVyKTsgfSwgZ2V0U3Vw
cG9ydGVkVHlwZXMsCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7
IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4o
cGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCiAgICAgICAgICAgICBzdXBwb3J0c1R5cGUs
IDAsIDAsIDAsIDApOwogfQogCkBAIC0xMDU0LDEyICsxMDU0LDEyIEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVUcmFja3MoKQogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnNlZWthYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQ
bGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlQ3VycmVudEZyYW1lSW1h
Z2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1faW1hZ2VQYWludGVyLnBpeGVsQnVm
ZmVyQ29uZm9ybWVyKQotICAgICAgICBtX2ltYWdlUGFpbnRlci5waXhlbEJ1ZmZlckNvbmZvcm1l
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENG
RGljdGlvbmFyeVJlZilAeyAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVs
Rm9ybWF0VHlwZUtleTogQChrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBKSB9KTsKKyAgICAgICAg
bV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3JtZXIgPSBtYWtlVW5pcXVlPFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1Y+KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsgKF9fYnJpZGdlIE5T
U3RyaW5nICopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXk6IEAoa0NWUGl4ZWxGb3Jt
YXRUeXBlXzMyQkdSQSkgfSk7CiAKICAgICBBU1NFUlQobV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZm
ZXJDb25mb3JtZXIpOwogICAgIGlmICghbV9pbWFnZVBhaW50ZXIucGl4ZWxCdWZmZXJDb25mb3Jt
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZP
YmpDLmNwcAppbmRleCBjODcxYzU5NDgzNTUwODU3MTgyYzdhMjRkNTUzNGI4NWE1ZDRlZjdlLi4y
OTQ4M2JhNWU5OGQ5NWZhOGU1ZWM5YTZhMTBiZjY0MWFhZTM1NTljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNr
UHJpdmF0ZUFWRk9iakMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAKQEAgLTM0LDE5
ICszNCwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9i
akM6OlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQyhBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCi0g
ICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPih0
cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBs
Pih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CiAKIFZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDKEFWQXNzZXRUcmFj
ayogdHJhY2spCi0gICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFW
Rk9iakNJbXBsPih0cmFjaykpCisgICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxBVlRyYWNrUHJpdmF0
ZUFWRk9iakNJbXBsPih0cmFjaykpCiB7CiAgICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7
CiB9CiAKIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpD
KE1lZGlhU2VsZWN0aW9uT3B0aW9uQVZGT2JqQyYgb3B0aW9uKQotICAgIDogbV9pbXBsKHN0ZDo6
bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKSkKKyAgICA6IG1f
aW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KG9wdGlvbikpCiB7CiAg
ICAgcmVzZXRQcm9wZXJ0aWVzRnJvbVRyYWNrKCk7CiB9CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQg
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjpyZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKQogCiB2
b2lkIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzo6c2V0UGxheWVySXRlbVRyYWNrKEFWUGxheWVy
SXRlbVRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPEFWVHJh
Y2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBtYWtlVW5pcXVlPEFW
VHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFByb3BlcnRpZXNGcm9t
VHJhY2soKTsKIH0KIApAQCAtNzcsNyArNzcsNyBAQCBBVlBsYXllckl0ZW1UcmFjayogVmlkZW9U
cmFja1ByaXZhdGVBVkZPYmpDOjpwbGF5ZXJJdGVtVHJhY2soKQogCiB2b2lkIFZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQzo6c2V0QXNzZXRUcmFjayhBVkFzc2V0VHJhY2sgKnRyYWNrKQogewotICAg
IG1faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4odHJh
Y2spOworICAgIG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4o
dHJhY2spOwogICAgIHJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogfQogCkBAIC04OCw3ICs4
OCw3IEBAIEFWQXNzZXRUcmFjayogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOjphc3NldFRyYWNr
KCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM6OnNldE1lZGlhU2VsZWN0b25PcHRp
b24oTWVkaWFTZWxlY3Rpb25PcHRpb25BVkZPYmpDJiBvcHRpb24pCiB7Ci0gICAgbV9pbXBsID0g
c3RkOjptYWtlX3VuaXF1ZTxBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsPihvcHRpb24pOworICAg
IG1faW1wbCA9IG1ha2VVbmlxdWU8QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbD4ob3B0aW9uKTsK
ICAgICByZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1By
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCBmY2MyNDk2YTEzNWFhNGY3M2E4ZmU1NDhkMTRlMGM4MDAwNGFkMWIwLi45NzU2
Y2ZmYWZkOGMzZjZmZTNiNDdhMjMzMzcxYjc0ZGVjOThkMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQpAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMoQVZBc3NldFRyYWNrKiB0cmFjaywgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMq
IHBhcmVudCkKLSAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5pcXVlPEFWVHJhY2tQcml2YXRlQVZG
T2JqQ0ltcGw+KHRyYWNrKSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPEFWVHJhY2tQcml2YXRl
QVZGT2JqQ0ltcGw+KHRyYWNrKSkKICAgICAsIG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fdHJh
Y2tJRCgtMSkKICAgICAsIG1fc2VsZWN0ZWQoZmFsc2UpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQg
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnJlc2V0UHJvcGVydGllc0Zyb21U
cmFjaygpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldEFz
c2V0VHJhY2soQVZBc3NldFRyYWNrICp0cmFjaykKIHsKLSAgICBtX2ltcGwgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKKyAgICBtX2ltcGwgPSBt
YWtlVW5pcXVlPEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGw+KHRyYWNrKTsKICAgICByZXNldFBy
b3BlcnRpZXNGcm9tVHJhY2soKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggMTcxZjI3NzJjOTRh
NjljZGE3MzQ5M2NjOWM4Yzc4NzhiMDAxMDhkZC4uODc2NTM0NDUyMDI0ZTYxNjUxNDE3YTA0YTBk
OTQ1MDU4YTk1NDAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNjM2LDEyICsxNjM2LDEyIEBAIHZv
aWQgR3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKENvbW1pdFN0YXRlJiBj
b21taXRTdGF0ZSwgY29uc3QgVHJhCiAgICAgaWYgKHVzZXNEaXNwbGF5TGlzdERyYXdpbmcoKSAm
JiBtX2RyYXdzQ29udGVudCAmJiAoIW1faGFzRXZlclBhaW50ZWQgfHwgaGFkRGlydHlSZWN0cykp
IHsKICAgICAgICAgVHJhY2VTY29wZSB0cmFjaW5nU2NvcGUoRGlzcGxheUxpc3RSZWNvcmRTdGFy
dCwgRGlzcGxheUxpc3RSZWNvcmRFbmQpOwogCi0gICAgICAgIG1fZGlzcGxheUxpc3QgPSBzdGQ6
Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdD4oKTsKKyAgICAgICAgbV9kaXNw
bGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0PigpOwogICAgICAg
ICAKICAgICAgICAgRmxvYXRSZWN0IGluaXRpYWxDbGlwKGJvdW5kc09yaWdpbigpLCBzaXplKCkp
OwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlM
aXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1fZGlzcGxheUxpc3QsIEdyYXBoaWNzQ29udGV4dFN0
YXRlKCksIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsICptX2Rpc3BsYXlM
aXN0LCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpLCBpbml0aWFsQ2xpcCwgQWZmaW5lVHJhbnNmb3Jt
KCkpOwogICAgICAgICB9KTsKICAgICAgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29u
dGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQpAQCAtMjg2Nyw3
ICsyODY3LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1h
dGlvbigpIGNvbnN0CiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlTGF5ZXJBbmltYXRpb25z
KCkKIHsKICAgICBpZiAoIW1fYW5pbWF0aW9ucykKLSAgICAgICAgbV9hbmltYXRpb25zID0gc3Rk
OjptYWtlX3VuaXF1ZTxMYXllckFuaW1hdGlvbnM+KCk7CisgICAgICAgIG1fYW5pbWF0aW9ucyA9
IG1ha2VVbmlxdWU8TGF5ZXJBbmltYXRpb25zPigpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uJiBjYUFuaW0sIEFuaW1h
dGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQg
aW5kZXgsIGludCBzdWJJbmRleCwgU2Vjb25kcyB0aW1lT2Zmc2V0KQpAQCAtMzkwMyw3ICszOTAz
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OmVuc3VyZUNsb25lTGF5ZXJzKENsb25lSUQgY2xv
bmVJRCwgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4KICAgICBjb250ZW50c0xheWVyID0gbnVsbHB0
cjsKIAogICAgIGlmICghbV9sYXllckNsb25lcykKLSAgICAgICAgbV9sYXllckNsb25lcyA9IHN0
ZDo6bWFrZV91bmlxdWU8TGF5ZXJDbG9uZXM+KCk7CisgICAgICAgIG1fbGF5ZXJDbG9uZXMgPSBt
YWtlVW5pcXVlPExheWVyQ2xvbmVzPigpOwogCiAgICAgcHJpbWFyeUxheWVyID0gZmluZE9yTWFr
ZUNsb25lKGNsb25lSUQsIG1fbGF5ZXIuZ2V0KCksIG1fbGF5ZXJDbG9uZXMtPnByaW1hcnlMYXll
ckNsb25lcywgY2xvbmVMZXZlbCk7CiAgICAgc3RydWN0dXJhbExheWVyID0gZmluZE9yTWFrZUNs
b25lKGNsb25lSUQsIG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX2xheWVyQ2xvbmVzLT5zdHJ1
Y3R1cmFsTGF5ZXJDbG9uZXMsIGNsb25lTGV2ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDRkNjRjMmM0
YjE5YjMxYjgwNTRjMWJjNDFhYzAyMjU3M2JlZmY1NjIuLjMwNWVmZDMzM2JkNjExYzZlZjVlNGMx
YjI2MjI4ODc1MjU2ZjI0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgU3RyaW5n
IFRpbGVDb250cm9sbGVyOjp6b29tZWRPdXRUaWxlR3JpZENvbnRhaW5lckxheWVyTmFtZSgpCiBU
aWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290UGxhdGZv
cm1MYXllcikKICAgICA6IG1fdGlsZUNhY2hlTGF5ZXIocm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAg
LCBtX2RldmljZVNjYWxlRmFjdG9yKG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSkKLSAgICAsIG1fdGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1
ZTxUaWxlR3JpZD4oKnRoaXMpKQorICAgICwgbV90aWxlR3JpZChtYWtlVW5pcXVlPFRpbGVHcmlk
PigqdGhpcykpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25UaW1lcigqdGhpcywgJlRpbGVDb250
cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fdGlsZVNpemVDaGFu
Z2VUaW1lcigqdGhpcywgJlRpbGVDb250cm9sbGVyOjp0aWxlU2l6ZUNoYW5nZVRpbWVyRmlyZWQs
IHRpbGVTaXplVXBkYXRlRGVsYXkpCiAgICAgLCBtX21hcmdpbkVkZ2VzKGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKQpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgVGlsZUNvbnRyb2xsZXI6OnNl
dENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCiAgICAgaWYgKG1fem9vbWVkT3V0Q29udGVudHNT
Y2FsZSAmJiBtX3pvb21lZE91dENvbnRlbnRzU2NhbGUgPT0gdGlsZUdyaWQoKS5zY2FsZSgpICYm
IHRpbGVHcmlkKCkuc2NhbGUoKSAhPSBzY2FsZSAmJiAhbV9oYXNUaWxlc1dpdGhUZW1wb3JhcnlT
Y2FsZUZhY3RvcikgewogICAgICAgICBtX3pvb21lZE91dFRpbGVHcmlkID0gV1RGTW92ZShtX3Rp
bGVHcmlkKTsKICAgICAgICAgbV96b29tZWRPdXRUaWxlR3JpZC0+c2V0SXNab29tZWRPdXRUaWxl
R3JpZCh0cnVlKTsKLSAgICAgICAgbV90aWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdy
aWQ+KCp0aGlzKTsKKyAgICAgICAgbV90aWxlR3JpZCA9IG1ha2VVbmlxdWU8VGlsZUdyaWQ+KCp0
aGlzKTsKICAgICAgICAgdGlsZUdyaWRzQ2hhbmdlZCgpOwogICAgIH0KIApAQCAtNTAwLDcgKzUw
MCw3IEBAIEZsb2F0UmVjdCBUaWxlQ29udHJvbGxlcjo6YWRqdXN0VGlsZUNvdmVyYWdlUmVjdEZv
clNjcm9sbGluZyhjb25zdCBGbG9hdFJlY3QmIGNvCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgaWYgKCFtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEpCi0gICAgICAgICAgICBtX2hpc3Rv
cmljYWxWZWxvY2l0eURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpc3RvcmljYWxWZWxvY2l0eURh
dGE+KCk7CisgICAgICAgICAgICBtX2hpc3RvcmljYWxWZWxvY2l0eURhdGEgPSBtYWtlVW5pcXVl
PEhpc3RvcmljYWxWZWxvY2l0eURhdGE+KCk7CiAKICAgICAgICAgbV92ZWxvY2l0eSA9IG1faGlz
dG9yaWNhbFZlbG9jaXR5RGF0YS0+dmVsb2NpdHlGb3JOZXdEYXRhKHNjcm9sbE9mZnNldCwgY29u
dGVudHNTY2FsZSwgTW9ub3RvbmljVGltZTo6bm93KCkpOwogICAgIH07CkBAIC02ODUsNyArNjg1
LDcgQEAgSW50UmVjdCBUaWxlQ29udHJvbGxlcjo6dGlsZUNvdmVyYWdlUmVjdCgpIGNvbnN0CiBQ
bGF0Zm9ybUNBTGF5ZXIqIFRpbGVDb250cm9sbGVyOjp0aWxlZFNjcm9sbGluZ0luZGljYXRvckxh
eWVyKCkKIHsKICAgICBpZiAoIW1fY292ZXJhZ2VNYXApCi0gICAgICAgIG1fY292ZXJhZ2VNYXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb3ZlcmFnZU1hcD4oKnRoaXMpOworICAgICAgICBtX2Nv
dmVyYWdlTWFwID0gbWFrZVVuaXF1ZTxUaWxlQ292ZXJhZ2VNYXA+KCp0aGlzKTsKIAogICAgIHJl
dHVybiAmbV9jb3ZlcmFnZU1hcC0+bGF5ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVy
Q29jb2EubW0KaW5kZXggYTQ4NTIzY2Y1MTc2YjMxZjJhY2M0OTg0YjJlY2Q4ZTJjODc0ZjYwNy4u
MzZhYzJmNzg0YjAwNmZmOWM3MDNmNDFlN2JmZjY4N2ExYWE0YzY3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllckNvY29hOjpjb21tb25Jbml0KCkKICAgICAgICAgV2ViVGlsZWRCYWNraW5nTGF5ZXIqIHRp
bGVkQmFja2luZ0xheWVyID0gc3RhdGljX2Nhc3Q8V2ViVGlsZWRCYWNraW5nTGF5ZXIqPihtX2xh
eWVyLmdldCgpKTsKICAgICAgICAgVGlsZUNvbnRyb2xsZXIqIHRpbGVDb250cm9sbGVyID0gW3Rp
bGVkQmFja2luZ0xheWVyIGNyZWF0ZVRpbGVDb250cm9sbGVyOnRoaXNdOwogCi0gICAgICAgIG1f
Y3VzdG9tU3VibGF5ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNBTGF5ZXJMaXN0Pih0
aWxlQ29udHJvbGxlci0+Y29udGFpbmVyTGF5ZXJzKCkpOworICAgICAgICBtX2N1c3RvbVN1Ymxh
eWVycyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNv
bnRhaW5lckxheWVycygpKTsKICAgICB9CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CkBAIC05NDcsNyArOTQ3LDcgQEAgRmxvYXRSb3VuZGVkUmVjdCBQbGF0Zm9ybUNBTGF5ZXJDb2Nv
YTo6c2hhcGVSb3VuZGVkUmVjdCgpIGNvbnN0CiB2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjpz
ZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0KQog
ewogICAgIEFTU0VSVChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVTaGFwZUxheWVyKTsKLSAgICBt
X3NoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0Um91bmRlZFJlY3Q+KHJv
dW5kZWRSZWN0KTsKKyAgICBtX3NoYXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPEZsb2F0Um91
bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogICAgIFBhdGggc2hhcGVQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvY29jb2EvV2ViVGlsZWRCYWNraW5nTGF5ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQpp
bmRleCBjMTkxZjM5MWM2NDU3MmNjOTk1NWE0N2M2Y2I3YjkwMDc4NjcyNjM5Li5iM2UyMWY2NDBh
ZTkxYTBkMWY1OTM4NDZhODUwZmVjMjJmYTc4YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tpbmdMYXllci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9XZWJUaWxlZEJhY2tp
bmdMYXllci5tbQpAQCAtNjIsNyArNjIsNyBAQCAtIChpZClpbml0V2l0aExheWVyOihpZClsYXll
cgogLSAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXIqKWNyZWF0ZVRpbGVDb250cm9sbGVyOihXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXIqKXJvb3RMYXllcgogewogICAgIEFTU0VSVCghX3RpbGVDb250
cm9sbGVyKTsKLSAgICBfdGlsZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6
OlRpbGVDb250cm9sbGVyPihyb290TGF5ZXIpOworICAgIF90aWxlQ29udHJvbGxlciA9IG1ha2VV
bmlxdWU8V2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI+KHJvb3RMYXllcik7CiAgICAgcmV0dXJuIF90
aWxlQ29udHJvbGxlci5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRl
eCAxNWQ0ZTQ2YjA2Yzc2YzE3ZjM0MDUxMzljNmM5NzljMTAxN2IzNjk2Li5kNmE3YzE2OGYwZTQ0
MWZkN2QyOTBmYzRmZTMxMzYwYzU4NWQ1Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNw
cApAQCAtMTUyLDcgKzE1Miw3IEBAIFBsYXRmb3JtQ0FMYXllcldpbjo6UGxhdGZvcm1DQUxheWVy
V2luKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtTGF5ZXIqIGxheWVyCiAgICAgaWYgKHVz
ZXNUaWxlZEJhY2tpbmdMYXllcigpKSB7CiAgICAgICAgIGludGVybiA9IG5ldyBXZWJUaWxlZEJh
Y2tpbmdMYXllcldpbih0aGlzKTsKICAgICAgICAgVGlsZUNvbnRyb2xsZXIqIHRpbGVDb250cm9s
bGVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWJUaWxlZEJhY2tpbmdMYXllcldpbio+KGludGVybikt
PmNyZWF0ZVRpbGVDb250cm9sbGVyKHRoaXMpOwotICAgICAgICBtX2N1c3RvbVN1YmxheWVycyA9
IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DQUxheWVyTGlzdD4odGlsZUNvbnRyb2xsZXItPmNv
bnRhaW5lckxheWVycygpKTsKKyAgICAgICAgbV9jdXN0b21TdWJsYXllcnMgPSBtYWtlVW5pcXVl
PFBsYXRmb3JtQ0FMYXllckxpc3Q+KHRpbGVDb250cm9sbGVyLT5jb250YWluZXJMYXllcnMoKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGludGVybiA9IG5ldyBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbCh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XZWJUaWxlZEJhY2tpbmdMYXllcldpbi5jcHAKaW5kZXgg
MjI0ZDhiYmVlZDM5OTJhZWVmYzkzMmExYmVlODBkYzYzZmNhMmY4Yi4uYzVhNzNlOGQzYWU5YmI0
OWE5NmJlMjdmNTMyN2UwNmMwNjIxNGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dlYlRpbGVkQmFja2luZ0xheWVyV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV2ViVGlsZWRCYWNraW5nTGF5
ZXJXaW4uY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJUaWxlZEJhY2tpbmdMYXllcldp
bjo6c2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImIHZhbHVlKQogVGlsZUNvbnRyb2xsZXIqIFdl
YlRpbGVkQmFja2luZ0xheWVyV2luOjpjcmVhdGVUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5
ZXIqIHJvb3RMYXllcikKIHsKICAgICBBU1NFUlQoIW1fdGlsZUNvbnRyb2xsZXIpOwotICAgIG1f
dGlsZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbGVDb250cm9sbGVyPihyb290TGF5
ZXIpOworICAgIG1fdGlsZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFRpbGVDb250cm9sbGVyPihy
b290TGF5ZXIpOwogICAgIHJldHVybiBtX3RpbGVDb250cm9sbGVyLmdldCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA1MGI3ZDljMjNjMDFhYmZjM2Ew
NTE3OGMxMDUyNTEwNzBmMTVkNmRiLi4wNGYyYTlmZjU0NjlhYTViYTI0ZDE0OTU2NTRiNjBmMGJj
NDNkMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3QKICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSgKICAgICAgICAgWyZwbGF0Zm9ybUNvbnRl
eHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBw
bGF0Zm9ybUNvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQpOwogICAgICAgICB9KTsK
IH0KIApAQCAtNTQsMTQgKzU0LDE0IEBAIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0
SW1wbEZhY3RvcnkgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0CiAgICAgcmV0
dXJuIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkoCiAgICAgICAg
IFtjYWlyb0NvbnRleHRdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
Pihjb250ZXh0LCBjYWlyb0NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvPihjb250ZXh0LCBjYWlyb0NvbnRleHQpOwogICAgICAg
ICB9KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxh
dGZvcm1Db250ZXh0KQogICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBGbG9hdFJl
Y3QgeyB9LCBBZmZpbmVUcmFuc2Zvcm0geyB9KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQocGxh
dGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCisgICAgLCBtX3ByaXZh
dGUobWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU+KG1fcGxhdGZvcm1D
b250ZXh0KSkKIHsKICAgICBtX3BsYXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2
YXRlKG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRm
b3JtQ29udGV4dC5jcigpKTsKQEAgLTY5LDkgKzY5LDkgQEAgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQ
bGEKIAogR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjYWlyb190KiBjYWlyb0NvbnRleHQpCiAgICAgOiBH
cmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5zZm9y
bSB7IH0pCi0gICAgLCBtX293bmVkUGxhdGZvcm1Db250ZXh0KHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCisgICAgLCBtX293bmVkUGxhdGZvcm1D
b250ZXh0KG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNhaXJvQ29udGV4dCkpCiAg
ICAgLCBtX3BsYXRmb3JtQ29udGV4dCgqbV9vd25lZFBsYXRmb3JtQ29udGV4dCkKLSAgICAsIG1f
cHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZT4o
bV9wbGF0Zm9ybUNvbnRleHQpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCkpCiB7CiAgICAgbV9wbGF0
Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwog
ICAgIG1fcHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQuY3IoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDEzNzQxNWYzZWFiZjUzMjFmYzM1Y2FjMjBlMWUxMjc4NGQ3
NTIyMzMuLmUwMWU2MGI5ZWVlN2JhMTgzOTdhNjNlZjRhMTc2NjdmZmRjNGE0NWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6
OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgICAgICAgICAgW3RoaXNdKFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHkmIHByb3h5KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IExvY2tIb2xkZXIgaG9sZGVyKHByb3h5LmxvY2soKSk7Ci0gICAgICAgICAgICAgICAgcHJveHku
cHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4obV9jb21wb3NpdG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNo
b3VsZEJsZW5kLCBHTF9SR0JBKSk7CisgICAgICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZm
ZXIobWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb21wb3Np
dG9yVGV4dHVyZSwgbV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBHTF9SR0JB
KSk7CiAgICAgICAgICAgICB9OwogI2lmIFVTRShOSUNPU0lBKQogICAgICAgICBwcm94eU9wZXJh
dGlvbihkb3duY2FzdDxOaWNvc2lhOjpDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4obV9u
aWNvc2lhTGF5ZXItPmltcGwoKSkucHJveHkoKSk7CkBAIC0zMDgsNyArMzA4LDcgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWMKIAogICAgIFJlZlB0cjxjYWlyb190PiBjciA9IGFkb3B0UmVmKGNh
aXJvX2NyZWF0ZShtX2RhdGEubV9zdXJmYWNlLmdldCgpKSk7CiAgICAgbV9kYXRhLm1fcGxhdGZv
cm1Db250ZXh0LnNldENyKGNyLmdldCgpKTsKLSAgICBtX2RhdGEubV9jb250ZXh0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3Jl
YXRlRmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQpKTsKKyAgICBtX2RhdGEubV9jb250
ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6Y3JlYXRlRmFjdG9yeShtX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQpKTsKICAgICBzdWNjZXNz
ID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA4MGI1ZDRmYmQyNzJkZWU0MzViNWNlN2MwODRl
ZTM1OWE1MDFlZDY0Li5kMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFmYTM0ZTQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ0dDb2xvclNwCiAg
ICAgICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1f
ZGF0YS5jb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQ+KGNnQ29udGV4
dC5nZXQoKSk7CisgICAgICAgIG1fZGF0YS5jb250ZXh0ID0gbWFrZVVuaXF1ZTxHcmFwaGljc0Nv
bnRleHQ+KGNnQ29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAgICAgY29udGV4dCgpLnNjYWxlKEZs
b2F0U2l6ZSgxLCAtMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDcxODhlNDM3ZDJj
ODg2NzI2ZDNkM2Y0ZGViNDFiZjI1Y2IwNmIzODAuLmZmN2ZjNjYzNjhiZDJjNjYwYzQ4YzEwNjc0
NWY5YmE4OWIzZGRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEzNzEsNyArMTM3
MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0
ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAKICAgICBhdXRvIFtzeW50aGV0aWNCb2xk
LCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoZm9udC5nZXQo
KSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIHN5bnRoZXRp
Y0JvbGQsIHN5bnRoZXRpY09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpLCBm
b250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCksIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVy
aW5nTW9kZSgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250
LmdldCgpLCBzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3Jp
cHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpLCBmb250
RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7CiB9CiAKIHR5cGVkZWYgSGFzaFNldDxS
ZXRhaW5QdHI8Q1RGb250UmVmPiwgV1RGOjpSZXRhaW5QdHJPYmplY3RIYXNoPENURm9udFJlZj4s
IFdURjo6UmV0YWluUHRyT2JqZWN0SGFzaFRyYWl0czxDVEZvbnRSZWY+PiBGYWxsYmFja0RlZHVw
U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApp
bmRleCAxY2UwYzk0N2UxN2U5YTY4ZWVhZDNhNGQ1N2I1OWQ4ZmExNmNlZjI5Li4wZGU5MzRhN2Iz
ODQxMDBlZWI3NmQ3N2Y0NTZhMTgyZmJiYWJjZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFt
aWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIEZvbnRSYW5n
ZXMgRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dDo6Zm9udFJhbmdlcyhjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvCiAKICAgICAgICAgYXV0byBbc3ludGhldGljQm9sZCwgc3ludGhldGlj
T2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZvbnRGb3JTeW50aGVzaXNDb21w
dXRhdGlvbi5nZXQoKSwgZm9udERlc2NyaXB0aW9uKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIAotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgp
LCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0
aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRl
eHRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZv
cm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERl
c2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwg
Zm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIAogICAgIEFTU0VSVChmb250UGxhdGZvcm1EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHQzRENvY29hLm1tCmluZGV4IDRhMDdhYzAzMjJlMjlkNjdjY2M4Yjc1MzVjMDA4MDBjMTcxN2Qy
YTQuLjJjM2NhYzBhYWEwNTYzYWYxZWQ0YjMzOTM4Njk4OTgzMjIwNTdjOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNE
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0M0RDb2NvYS5tbQpAQCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyB2b2lkIHNl
dEdQVUJ5UmVnaXN0cnlJRChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIGNvbnRleHRPYmosIENH
TFBpeGVsRm9yCiAKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGlj
c0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSwgR3JhcGhpY3NDb250ZXh0M0QqIHNoYXJlZENvbnRl
eHQpCiAgICAgOiBtX2F0dHJzKGF0dHJzKQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlx
dWU8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzKSkKKyAgICAsIG1fcHJpdmF0ZShtYWtl
VW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcykpCiB7CiAjaWYgIVVTRShBTkdM
RSkKICNpZiBVU0UoT1BFTkdMX0VTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDVjNzMzZTNiYWQxZTlkM2QyNWMxZWQ1
N2Y1YWNkZmZmM2E0Y2I5OWYuLjM4NzVmY2ZkMzA2ZGY4NmQzNDc0ZWUxODYwYmE1OTBhM2E4YmMx
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UubW0KQEAgLTMyNiw3ICszMjYsNyBAQCBHcmFwaGljc0NvbnRleHQmIElPU3VyZmFj
ZTo6ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCkKICAgICBpZiAobV9ncmFwaGljc0NvbnRleHQpCiAg
ICAgICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CiAKLSAgICBtX2dyYXBoaWNzQ29udGV4
dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihlbnN1cmVQbGF0Zm9ybUNvbnRl
eHQoKSk7CisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dD4oZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5zZXRJ
c0FjY2VsZXJhdGVkQ29udGV4dCh0cnVlKTsKIAogICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRl
eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9U
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbQppbmRleCA2ZTYw
ZWJmMWZmYTY1OTBmNmYzNGU1MjhhM2UzMzU4MzE4YjVlYmRmLi4yNzg3NDY4MTY2ZmVmMWI1ZjY0
NjIxZmViNWJiNWU1MGQ5ZDZkYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1RleHRUcmFja1JlcHJlc2VudGF0
aW9uQ29jb2EubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBAZW5kCiAKIHN0ZDo6dW5pcXVlX3B0cjxU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbj4gVGV4dFRyYWNrUmVwcmVzZW50YXRpb246OmNyZWF0ZShU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2E+KGNsaWVudCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8VGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYT4oY2xpZW50KTsK
IH0KIAogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYTo6VGV4dFRyYWNrUmVwcmVzZW50YXRp
b25Db2NvYShUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvVGV4dHVyZUNhY2hlQ1YubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQpp
bmRleCA1NzdlYzI4NDYzOTJhNzIxNWQ5OThhYTMxMGQzZDhkNjMzZjVmMWVjLi45ZjFmNjZiM2Jk
NTlmNTliMWFkM2NiNzA1Yzg1NjU0NDIyN2VjMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9UZXh0dXJlQ2FjaGVDVi5tbQpAQCAtNTAsNyArNTAs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZUNhY2hlQ1Y+IFRleHR1cmVDYWNoZUNWOjpjcmVh
dGUoR3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIFJldGFpblB0cjxUZXh0dXJlQ2FjaGVUeXBlPiBzdHJvbmdDYWNoZSA9IGFkb3B0Q0YoY2Fj
aGUpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVDYWNoZUNWPihjb250ZXh0
LCBXVEZNb3ZlKHN0cm9uZ0NhY2hlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZUNh
Y2hlQ1Y+KGNvbnRleHQsIFdURk1vdmUoc3Ryb25nQ2FjaGUpKTsKIH0KIAogVGV4dHVyZUNhY2hl
Q1Y6OlRleHR1cmVDYWNoZUNWKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0LCBSZXRhaW5QdHI8
VGV4dHVyZUNhY2hlVHlwZT4mJiBjYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcAppbmRleCA4ZmVhYTJmNWQ3NTMyOGU0MzZiZjlkODhiOGRjMDViYWMxYzJlMWYz
Li5jNTYxZjVmOWVhYjk5NjIxMWE4YjIyMjE5Nzc2ZDY4ZjM5ZTE2NDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwbGF5TGlzdD4gUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGlu
aXRpYWxDbGlwLCBib29sCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q+IHJlcGxh
eUxpc3Q7CiAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpCi0gICAgICAgIHJlcGxh
eUxpc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0PigpOworICAgICAgICByZXBsYXlM
aXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdD4oKTsKIAogICAgIHNpemVfdCBudW1JdGVtcyA9
IG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1JdGVtczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNTU3YjhlMDA4NjJk
NmFiYzU4MDRiNDE0MzIxMDA4MGE4MzUxNmQxZS4uMzBiYjQ4Y2M4ZjBjNDk1NDQ4YWI2NWY2ODEx
NzJjY2M2YmNhNTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtNjcsNyArNjcsNyBA
QCB2b2lkIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6bG9hZEV4dGVybmFsRG9jdW1lbnRJZk5l
ZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlcgogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFTVkdV
UklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UobV91cmwsICpjYWNoZWRSZXNvdXJj
ZUxvYWRlci5kb2N1bWVudCgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2FjaGVkU1ZHRG9j
dW1lbnRSZWZlcmVuY2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFNWR0RvY3VtZW50UmVmZXJl
bmNlPihtX3VybCk7CisgICAgbV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSA9IG1ha2VVbmlx
dWU8Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2U+KG1fdXJsKTsKICAgICBtX2NhY2hlZFNWR0Rv
Y3VtZW50UmVmZXJlbmNlLT5sb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRpb25zKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDY1NjNjOGJmZWViMzViYTUzMjdm
NDg5NjFlZDYyMWZlM2Q1M2FhNDEuLjcxYTRhYjJmNDgyNWYxYTU0MzE5MTgwMzRiMzUzMWVjZGE4
YTBmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgICAgICAgICAgRmNQYXR0ZXJuQWRkU3RyaW5n
KHJlc3VsdFBhdHRlcm4uZ2V0KCksIEZDX0ZPTlRfVkFSSUFUSU9OUywgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBGY0NoYXI4Kj4odmFyaWFudHMudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICNlbmRp
ZgotICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1E
YXRhPihmb250RmFjZS5nZXQoKSwgcmVzdWx0UGF0dGVybi5nZXQoKSwgZm9udERlc2NyaXB0aW9u
LmNvbXB1dGVkUGl4ZWxTaXplKCksIGZpeGVkV2lkdGgsIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y09ibGlxdWUsIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlvbigpKTsKKyAgICBhdXRvIHBsYXRm
b3JtRGF0YSA9IG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udEZhY2UuZ2V0KCksIHJl
c3VsdFBhdHRlcm4uZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBm
aXhlZFdpZHRoLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRp
b24ub3JpZW50YXRpb24oKSk7CiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBmb250IGhhcyBhbiBl
bmNvZGluZyBjb21wYXRpYmxlIHdpdGggRm9udGNvbmZpZy4gRm9udGNvbmZpZyBjdXJyZW50bHkK
ICAgICAvLyBzdXBwb3J0cyB0aHJlZSBlbmNvZGluZ3MgaW4gRmNGcmVlVHlwZUNoYXJJbmRleDog
VW5pY29kZSwgU3ltYm9sIGFuZCBBcHBsZVJvbWFuLgogICAgIC8vIElmIHRoaXMgZm9udCBkb2Vz
bid0IGhhdmUgb25lIG9mIHRoZXNlIHRocmVlIGVuY29kaW5ncywgZG9uJ3Qgc2VsZWN0IGl0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5k
ZXggMTM3NjVmNDNkYTg2NjhkMmRlODJlNjcxZDgxODBkNjg0NDI4NDNiMC4uNTg5NDNkMmE5MGRm
YzU1MDFmMmRjYWE4ZWNmMGU5MGUxYWM3ZjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmUKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAgICBpZiAoRlRf
TmV3X01lbW9yeV9GYWNlKGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+
KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCAwLCAmZnJlZVR5cGVGYWNlKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KIAog
Ym9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcm
IGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9UZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcAppbmRleCA4Njk4MTM2NDUxM2I4ZTZmMGQ3YjJkZGE1YmI4ZDFmODcyZTdmNTc2Li43
MWZkYTBkOTI0Y2QyNTVkYjNlZjEwNzdmOWUxMDc4MTRlMjQzZGY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC05NSw3ICs5NSw3
IEBAIFJlZlB0cjxUZXh0dXJlPiBUZXh0dXJlOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIEZvcm1hdCBmb3JtYXQsIGludCB3CiAgICAgICAgIG51bVRpbGVzID0gMDsKICAgICB9
CiAKLSAgICBhdXRvIHRleHR1cmVJZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1bnNpZ25l
ZD4+KG51bVRpbGVzKTsKKyAgICBhdXRvIHRleHR1cmVJZHMgPSBtYWtlVW5pcXVlPFZlY3Rvcjx1
bnNpZ25lZD4+KG51bVRpbGVzKTsKICAgICB0ZXh0dXJlSWRzLT5maWxsKDAsIG51bVRpbGVzKTsK
IAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXM7IGkrKykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0YTlmZGVjM2VjNTkx
MmNlMjViMWU2YjI1YjkxNDRmYThmNDBjN2QwLi5hYjM3ZWUwNDFlYjI4YzNjODJmMzVhZjM2M2Nj
ZWRiOWI0MmIxNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzCiB7
CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aW5pdGlhbGl6ZURlYnVnQ2F0
ZWdvcnkoKTsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkgewotICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI+KHBsYXllcik7IH0sCisgICAgICAgIHJlZ2lzdHJhcihbXShNZWRp
YVBsYXllciogcGxheWVyKSB7IHJldHVybiBtYWtlVW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcj4ocGxheWVyKTsgfSwKICAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBw
b3J0c1R5cGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIHN1cHBvcnRzS2V5U3lzdGVtKTsK
ICAgICB9CiB9CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIAogc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgYXV0byB0aW1lUmFuZ2VzID0gc3RkOjptYWtlX3Vu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiAgICAgaWYgKG1fZXJyb3JPY2N1cmVkIHx8IGlz
TGl2ZVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIApAQCAtMjM3Niw3ICsy
Mzc2LDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1Np
bmsoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmVuc3VyZUF1ZGlv
U291cmNlUHJvdmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKQotICAg
ICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXI+KCk7CisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IG1h
a2VVbmlxdWU8QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcj4oKTsKIH0KIAogQXVkaW9Tb3Vy
Y2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NvdXJjZVByb3Zp
ZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcAppbmRleCBjZTg3MzRlZjdkY2IzNjNlNzY1OGIxZGVmM2E3YTdiMzY2NGNhMjYzLi5i
MDJlMjhlZGNkNDA3ZmRmZjhjYmVhNzhhZDFhNmU3YjBjN2I1OGE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC03MTAsMTkg
KzcxMCwxOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0
dXJlVG9Db21wb3NpdG9yKCkKICAgICAgICAgICAgIGlmICghcHJveHkuaXNBY3RpdmUoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RW
aWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9G
cmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2lu
Z0ZhbGxiYWNrVmlkZW9TaW5rKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRl
b0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRl
cj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNr
VmlkZW9TaW5rKTsKIAogICAgICAgICAgICAgR0x1aW50IHRleHR1cmVJRCA9IGZyYW1lSG9sZGVy
LT50ZXh0dXJlSUQoKTsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CiAgICAgICAgICAgICBpZiAodGV4dHVy
ZUlEKSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5z
aXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7Cisg
ICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9s
ZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAgICAgICAgICAgICAg
bGF5ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RGTW92ZShmcmFtZUhv
bGRlcikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZl
ciA9IHByb3h5LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6ZSgpLCBHTF9ET05U
X0NBUkUpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghbGF5ZXJCdWZmZXIpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRl
KFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkpOwogICAgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlLT5yZXNldChmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+aGFz
QWxwaGFDaGFubmVsKCkgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4
dHVyZTo6Tm9GbGFnKTsKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1
cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnVwZGF0ZVRleHR1cmUobGF5
ZXJCdWZmZXItPnRleHR1cmVHTCgpKTsKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0
RXh0cmFGbGFncyhtX3RleHR1cmVNYXBwZXJGbGFncyB8IChmcmFtZUhvbGRlci0+aGFzQWxwaGFD
aGFubmVsKCkgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCkpOwpAQCAtOTEyLDcg
KzkxMiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgaWYgKCFHU1RfSVNfU0FNUExF
KG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxh
Z3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFt
ZUhvbGRlciA9IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCks
IG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8gdGV4dHVyZUlEID0gZnJh
bWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlEKQpAQCAtOTIzLDcgKzky
Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzCiAgICAgICAgIHNpemUgPSBzaXplLnRyYW5z
cG9zZWRTaXplKCk7CiAKICAgICBpZiAoIW1fdmlkZW9UZXh0dXJlQ29waWVyKQotICAgICAgICBt
X3ZpZGVvVGV4dHVyZUNvcGllciA9IHN0ZDo6bWFrZV91bmlxdWU8VmlkZW9UZXh0dXJlQ29waWVy
R1N0cmVhbWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOworICAgICAgICBt
X3ZpZGVvVGV4dHVyZUNvcGllciA9IG1ha2VVbmlxdWU8VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyPihURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcpOwogCiAgICAgcmV0dXJuIG1f
dmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4
dHVyZUlELCBzaXplLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBmbGlwWSwgbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uKTsK
IH0KQEAgLTkzOSw3ICs5MzksNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBpZiAoIUdTVF9J
U19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVy
ZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhv
bGRlcj4gZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2Ft
cGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRvIHRleHR1
cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJRCkKQEAg
LTk1Myw3ICs5NTMsNyBAQCBOYXRpdmVJbWFnZVB0ciBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKICAgICBjb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKIAogICAgIGlmICghbV92aWRlb1RleHR1cmVDb3BpZXIpCi0gICAgICAg
IG1fdmlkZW9UZXh0dXJlQ29waWVyID0gc3RkOjptYWtlX3VuaXF1ZTxWaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CisgICAgICAg
IG1fdmlkZW9UZXh0dXJlQ29waWVyID0gbWFrZVVuaXF1ZTxWaWRlb1RleHR1cmVDb3BpZXJHU3Ry
ZWFtZXI+KFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyk7CiAKICAgICBpZiAoIW1f
dmlkZW9UZXh0dXJlQ29waWVyLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGV4
dHVyZUlELCBzaXplLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSwgZmFsc2UsIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbikpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTE0OCw4ICsxMTQ4LDggQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAg
ICAgIFt0aGlzXShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAg
ICAgewogICAgICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4g
bGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPigwLCBtX3NpemUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RP
TlRfQ0FSRSk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R1N0cmVhbWVySG9sZVB1bmNo
Q2xpZW50PiBob2xlUHVuY2hDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdTdHJlYW1lckhvbGVQ
dW5jaENsaWVudD4obV92aWRlb1NpbmsuZ2V0KCkpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlciA9IG1ha2VV
bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KDAsIG1fc2l6ZSwgVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGROb3RCbGVuZCwgR0xfRE9OVF9DQVJFKTsKKyAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxHU3RyZWFtZXJIb2xlUHVuY2hDbGllbnQ+IGhvbGVQdW5jaENsaWVudCA9
IG1ha2VVbmlxdWU8R1N0cmVhbWVySG9sZVB1bmNoQ2xpZW50PihtX3ZpZGVvU2luay5nZXQoKSk7
CiAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0SG9sZVB1bmNoQ2xpZW50KFdURk1vdmUoaG9s
ZVB1bmNoQ2xpZW50KSk7CiAgICAgICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihXVEZNb3Zl
KGxheWVyQnVmZmVyKSk7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwCmluZGV4IDc0M2RjYzUyNjhjNDI2ZWNkOGY4OTA4MmQ5ZjdlNTMzYjQx
Y2NiMTkuLjk4MTBjMjU3YjM3NzZmZmQ4ZDQyMTJlOTY5NGJlOTJiMjU5NzM1MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC02MzMsNyArNjMzLDcg
QEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KEdzdEJhc2VTcmMqIGJh
c2VTcmMsIGJvb2wgbm90aWZ5QXN5bmNDb20KICAgICAgICAgICAgIGxvYWRPcHRpb25zIHw9IFBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0YTsKICAgICAg
ICAgcHJpdi0+cmVzb3VyY2UgPSBwcml2LT5sb2FkZXItPnJlcXVlc3RSZXNvdXJjZShSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCksIGxvYWRPcHRpb25zKTsKICAgICAgICAgaWYgKHByaXYtPnJlc291
cmNlKSB7Ci0gICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rvci5nZXQoKSwgUmVz
b3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CisgICAgICAgICAgICBwcml2LT5yZXNvdXJjZS0+c2V0
Q2xpZW50KG1ha2VVbmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHByb3RlY3Rv
ci5nZXQoKSwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKSk7CiAgICAgICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHByb3RlY3Rvci5nZXQoKSwgIlN0YXJ0ZWQgcmVxdWVzdCIpOwogICAgICAgICAg
ICAgaWYgKG5vdGlmeUFzeW5jQ29tcGxldGlvbikKICAgICAgICAgICAgICAgICBnc3RfYmFzZV9z
cmNfc3RhcnRfY29tcGxldGUoR1NUX0JBU0VfU1JDKHNyYyksIEdTVF9GTE9XX09LKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNw
cAppbmRleCA0ZTlkMTlkODUyN2Q2OTYyMGNmNWFhOTQxMDczNjI4MzgxYjNjOWYwLi5lNjg4MGQ5
OGU3ZmNhZDFkMDUzZjg0ZWQzOGE2ZmQ4MTk4ZGU3Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpyZWdpc3Rlck1lZGlh
RW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlCiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckFu
ZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMoKTsKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCh3
ZWJraXRfbXNlX2RlYnVnLCAid2Via2l0bXNlIiwgMCwgIldlYktpdCBNU0UgbWVkaWEgcGxheWVy
Iik7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpIHsKLSAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlh
UGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFPihwbGF5ZXIpOyB9LAorICAgICAgICByZWdpc3RyYXIoW10oTWVkaWFQ
bGF5ZXIqIHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0U+KHBsYXllcik7IH0sCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3Vw
cG9ydHNUeXBlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdXBwb3J0c0tleVN5c3RlbSk7
CiAgICAgfQogfQpAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpzZXRSYXRlKGZsb2F0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1l
UmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmJ1ZmZlcmVkKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkg
OiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKKyAgICByZXR1cm4gbV9t
ZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmJ1ZmZlcmVkKCkgOiBtYWtlVW5pcXVlPFBsYXRm
b3JtVGltZVJhbmdlcz4oKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0U6OnNvdXJjZVNldHVwKEdzdEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2
YXRlSG9sZVB1bmNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVw
dW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCmluZGV4IDExNzI0NTg0MTBlOWEx
NDUzYjYzNWIwZjhkOTFiOWZiNGE2OTZjNTguLjBmMDhjMTlkYmRiZTY5YjA2ZjdiNzU1M2Y4YWI0
OTdkNDdlMzc3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xl
UHVuY2guY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1
bmNoOjpwdXNoTmV4dEhvbGVQdW5jaEJ1ZmZlcigpCiAgICAgICAgIFt0aGlzXShUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkKICAgICAgICAgewogICAgICAgICAgICAgTG9j
a0hvbGRlciBob2xkZXIocHJveHkubG9jaygpKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPigwLCBtX3NpemUsIFRl
eHR1cmVNYXBwZXJHTDo6U2hvdWxkTm90QmxlbmQsIEdMX0RPTlRfQ0FSRSk7CisgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVy
QnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oMCwg
bV9zaXplLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZE5vdEJsZW5kLCBHTF9ET05UX0NBUkUpOwog
ICAgICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwog
ICAgICAgICB9OwogCkBAIC0xNDEsNyArMTQxLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUUK
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g6OnJlZ2lzdGVyTWVkaWFFbmdpbmUo
TWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewotICAgIHJlZ2lzdHJhcihbXShNZWRp
YVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJp
dmF0ZUhvbGVQdW5jaD4ocGxheWVyKTsgfSwKKyAgICByZWdpc3RyYXIoW10oTWVkaWFQbGF5ZXIq
IHBsYXllcikgeyByZXR1cm4gbWFrZVVuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2g+
KHBsYXllcik7IH0sCiAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gvTWVkaWFQbGF5ZXJQcml2YXRl
SG9sZVB1bmNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ob2xlcHVuY2gv
TWVkaWFQbGF5ZXJQcml2YXRlSG9sZVB1bmNoLmgKaW5kZXggMjM5YzRmNzI4YWJiYmVjMTAzOTdh
M2UwMzNiZGY0MzRlNDVkNDc2Yy4uOGJmNzIxMzE4ODE5YzQwMjY3YjcyMWZhOWI4MmFjMWNkOTI2
ZjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaG9sZXB1
bmNoL01lZGlhUGxheWVyUHJpdmF0ZUhvbGVQdW5jaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hvbGVwdW5jaC9NZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2guaApA
QCAtNzksNyArNzksNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVIb2xlUHVuY2ggOiBwdWJs
aWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQwogICAgIE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTWVkaWFQ
bGF5ZXI6OkVtcHR5OyB9OwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRhOyB9OwogCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsgfTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOyB9OwogCiAg
ICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU2NoZW1lSW5mb0JveC5jcHAKaW5kZXggZDhkNzQwMWE3
NTYwMDQ2Yzk4YWZmOGNiMTFlYjJlNzIyM2M5ODFjZS4uYmRmZGJkYzk2Y2YwZTFiNTBhNzI4NTgy
ODhjOWIyZjQ3NGY3ZDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TY2hlbWVJbmZvQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3guY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBhcnNl
KERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAob3B0aW9uYWxCb3hUeXBlLnZhbHVlKCkuZmlyc3QgPT0gSVNPU2NoZW1lVHlw
ZUJveDo6Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZVR5cGVCb3ggPSBzdGQ6Om1h
a2VfdW5pcXVlPElTT1NjaGVtZVR5cGVCb3g+KCk7CisgICAgICAgIG1fc2NoZW1lVHlwZUJveCA9
IG1ha2VVbmlxdWU8SVNPU2NoZW1lVHlwZUJveD4oKTsKICAgICAgICAgaWYgKCFtX3NjaGVtZVR5
cGVCb3gtPnJlYWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgSVNPUHJvdGVjdGlvblNjaGVtZUluZm9Cb3g6OnBh
cnNlKERhdGFWaWV3JiB2aWV3LCB1bnNpZ25lZCYgb2Zmc2V0KQogICAgIH0KIAogICAgIGlmIChv
cHRpb25hbEJveFR5cGUudmFsdWUoKS5maXJzdCA9PSBJU09TY2hlbWVJbmZvcm1hdGlvbkJveDo6
Ym94VHlwZU5hbWUoKSkgewotICAgICAgICBtX3NjaGVtZUluZm9ybWF0aW9uQm94ID0gc3RkOjpt
YWtlX3VuaXF1ZTxJU09TY2hlbWVJbmZvcm1hdGlvbkJveD4oKTsKKyAgICAgICAgbV9zY2hlbWVJ
bmZvcm1hdGlvbkJveCA9IG1ha2VVbmlxdWU8SVNPU2NoZW1lSW5mb3JtYXRpb25Cb3g+KCk7CiAg
ICAgICAgIGlmICghbV9zY2hlbWVJbmZvcm1hdGlvbkJveC0+cmVhZCh2aWV3LCBsb2NhbE9mZnNl
dCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPU2NoZW1lSW5mb3JtYXRpb25C
b3guY3BwCmluZGV4IGI0ZjI3N2E2ODQ3Y2MyMGQ0ZmM5ZDYyNmY5Y2FjYzc0MzBhZGFmNzAuLmM4
M2M0ZmY3YjM4YWJmMWFlMjJmZmU1ZTcyYzdhMWY4NmEwOGViMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09TY2hlbWVJbmZvcm1hdGlvbkJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1NjaGVtZUlu
Zm9ybWF0aW9uQm94LmNwcApAQCAtNDcsNyArNDcsNyBAQCBib29sIElTT1NjaGVtZUluZm9ybWF0
aW9uQm94OjpwYXJzZShEYXRhVmlldyYgdmlldywgdW5zaWduZWQmIG9mZnNldCkKICAgICAgICAg
aWYgKGxvY2FsT2Zmc2V0ICsgc2NoZW1lU3BlY2lmaWNCb3hUeXBlLnZhbHVlKCkuc2Vjb25kID4g
b2Zmc2V0ICsgbV9zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1f
c2NoZW1lU3BlY2lmaWNEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxJU09UcmFja0VuY3J5cHRpb25C
b3g+KCk7CisgICAgICAgIG1fc2NoZW1lU3BlY2lmaWNEYXRhID0gbWFrZVVuaXF1ZTxJU09UcmFj
a0VuY3J5cHRpb25Cb3g+KCk7CiAgICAgICAgIGlmICghbV9zY2hlbWVTcGVjaWZpY0RhdGEtPnJl
YWQodmlldywgbG9jYWxPZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAzMjdlYmY2MDYyNTkwOWZiZTJjNWI2
YmQ1MTk4YWNhMTlhNDVkNGE0Li41MDc5MzhiZTExMDVjZjQyNjA0NTU5MTNiMGM1ZTk5ZDRmNTRm
OWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiAK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250
RGVzY3JpcHRvci5nZXQoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4oZm9udERlc2NyaXB0b3IuZ2V0KCkpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJ
bnRlZ3JhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcAppbmRleCAxMDljMmM1Nzc2NzlhMTIxNGFhNmVh
MTAxYzZmNDgwZmJhMmVjNjAxLi41YmVlNjEzZmNmNmI0NmEwN2M2MjhlNTgwMTZmNDliYjkwMjFi
MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcApAQCAtNjIsNyAr
NjIsNyBAQCB2b2lkIFNjZW5lSW50ZWdyYXRpb246OnJlcXVlc3RVcGRhdGUoKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNjZW5lSW50ZWdyYXRpb246
OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxVcGRh
dGVTY29wZT4obWFrZVJlZigqdGhpcykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFVwZGF0ZVNj
b3BlPihtYWtlUmVmKCp0aGlzKSk7CiB9CiAKIFNjZW5lSW50ZWdyYXRpb246OkNsaWVudDo6fkNs
aWVudCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMmIxYWVjZjBkMWI3ZTZhMzQxYmY5NGJmZmFl
ZDIyMGYxYTQ1ODYzOC4uNTBlMGMzYzdkOTc2ODI2YmE3YmI4MTg1ZDFlZTE0MjEyOWFkYTAyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgYXV0byBjcmVhdGVDb21tYW5kKEFyZ3MmJi4uLiBh
cmd1bWVudHMpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPE9wZXIKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiBhdXRvIGNyZWF0ZUNvbW1hbmQoKSAtPiBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfYmFzZV9vZjxPcGVyYXRpb25EYXRhPD4sIFQ+Ojp2YWx1ZSwgc3RkOjp1bmlxdWVf
cHRyPFBhaW50aW5nT3BlcmF0aW9uPj4KIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxU
PigpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFQ+KCk7CiB9CiAKIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBQ
YWludGluZ09wZXJhdGlvbnMmIGNvbW1hbmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDBjOGE2NzBlM2EwYTM2MzA3
ZTNmMjk5ZWNkYTAyNTUyZmQ3NzRlZDEuLmIzNTA4ZDUxN2IyNGU0NzVjMDhhZjQ4YjMzZTQzMWZk
Mjc5MjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0Nv
bnRleHRDYWlyby5jcHAKQEAgLTcwLDggKzcwLDggQEAgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZv
clBhaW50aW5nOjpGb3JQYWludGluZyhCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgfSk7CiAKICAg
ICBtX2NhaXJvLmNvbnRleHQgPSBhZG9wdFJlZihjYWlyb19jcmVhdGUobV9jYWlyby5zdXJmYWNl
LmdldCgpKSk7Ci0gICAgbV9wbGF0Zm9ybUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OlBsYXRmb3JtQ29udGV4dENhaXJvPihtX2NhaXJvLmNvbnRleHQuZ2V0KCkpOwotICAgIG1f
Z3JhcGhpY3NDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ+KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y3JlYXRlRmFjdG9yeSgqbV9w
bGF0Zm9ybUNvbnRleHQpKTsKKyAgICBtX3BsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KG1fY2Fpcm8uY29udGV4dC5nZXQoKSk7CisgICAg
bV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4o
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KCptX3BsYXRm
b3JtQ29udGV4dCkpOwogfQogCiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUGFpbnRpbmc6On5G
b3JQYWludGluZygpCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB2b2lkIFBhaW50aW5nQ29udGV4dENh
aXJvOjpGb3JQYWludGluZzo6cmVwbGF5KGNvbnN0IFBhaW50aW5nT3BlcmF0aW9ucyYgcGFpbnRp
bgogCiBQYWludGluZ0NvbnRleHRDYWlybzo6Rm9yUmVjb3JkaW5nOjpGb3JSZWNvcmRpbmcoUGFp
bnRpbmdPcGVyYXRpb25zJiBwYWludGluZ09wZXJhdGlvbnMpCiB7Ci0gICAgbV9ncmFwaGljc0Nv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4oCisgICAg
bV9ncmFwaGljc0NvbnRleHQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4o
CiAgICAgICAgIFsmcGFpbnRpbmdPcGVyYXRpb25zXShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENhaXJvT3BlcmF0aW9uUmVjb3JkZXI+KGNvbnRleHQsIHBhaW50aW5nT3BlcmF0aW9ucyk7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxDYWlyb09wZXJhdGlvblJlY29yZGVyPihjb250
ZXh0LCBwYWludGluZ09wZXJhdGlvbnMpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVy
SW1wbC5jcHAKaW5kZXggZDRjOWI2MDViNGNkMjhlMzQ4ZWZkODUzMzUwMzhiNThjOWE0ZGRmYS4u
OGUzNzkwZjdhYjU0ZjZiM2Q5NTZmMzA3MDRjNDI5YzJhY2RjMzE2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tp
bmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBl
ckltcGwuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGF1dG8gQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBl
ckltcGw6OmNyZWF0ZUZhY3RvcnkoKSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3Rvcnko
CiAgICAgICAgIFtdKEJhY2tpbmdTdG9yZSYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsPigpOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw+KCk7CiAgICAg
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDM4ZmRkOTNk
YTZiMTM4ODMxNDA1OTE2NTNjZGYyOWUwN2RlMzIzOTYuLjc1NjkyYzdjNGE3YmZkYjE4NzFkZjE4
MDJlMzg3NzUzNmI2MTU1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBl
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIGF1dG8gQ29tcG9zaXRpb25MYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVh
dGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAgICBb
XSh1aW50NjRfdCwgQ29tcG9zaXRpb25MYXllciYpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1w
bD4oKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCmluZGV4IDU2MTcy
OGI1ZWYxZjQwZDgwYzUzNTk5MjY3MTA2NmFkODc0ODE5YTcuLjJmYjBlYzk1OTE1YWViMGJhMDk2
ZjgwYmM2OTBkMmYzYjI4NDhjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90
ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcApAQCAtMzksNyAr
MzksNyBAQCBhdXRvIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5
KENsaWVudCYgY2xpZW50KSAtPiBGYWN0b3J5CiB7CiAgICAgcmV0dXJuIEZhY3RvcnkoCiAgICAg
ICAgIFsmY2xpZW50XShDb250ZW50TGF5ZXImKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbD4oY2xpZW50KTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihj
bGllbnQpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDM0RMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExh
eWVyLmNwcAppbmRleCA1MmVjNzBiNjgxZjdiYzU2M2E2NzQ3NTQzNjIzODc2YjAzMTM5YTliLi45
YTliZDQ2ODNiMjY3NDJhZmVjYjE0OTFmNjE0NGYyYTc4YzU5NTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0MzRExh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhR0MzRExheWVyLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEdDM0RMYXll
cjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgICAgIGF1dG8mIHByb3h5ID0gZG93bmNhc3Q8
Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fY29udGVudExheWVyLT5p
bXBsKCkpLnByb3h5KCk7CiAKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIocHJveHkubG9jaygp
KTsKLSAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1cmUs
IHRleHR1cmVTaXplLCBmbGFncywgbV9jb250ZXh0Lm1faW50ZXJuYWxDb2xvckZvcm1hdCkpOwor
ICAgICAgICBwcm94eS5wdXNoTmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNp
emUsIGZsYWdzLCBtX2NvbnRleHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAg
ICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tp
bmdUZXh0dXJlTWFwcGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhSW1hZ2VCYWNraW5nVGV4dHVyZU1hcHBlckltcGwuY3Bw
CmluZGV4IGEyYWUzNGEzMTMyN2U4NzE1NjU0MTQ2ZDE4Zjc3YzdhNjdmMjQyMTYuLmQzNTNjOGJl
MWI1YmZhMTE2YjZjYjg1MjA5NzAyNzdjYzkzMjQ1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFJbWFnZUJhY2tpbmdU
ZXh0dXJlTWFwcGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBhdXRvIEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsOjpj
cmVhdGVGYWN0b3J5KCkgLT4gRmFjdG9yeQogewogICAgIHJldHVybiBGYWN0b3J5KAogICAgICAg
ICBbXShJbWFnZUJhY2tpbmcmKSB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxJbWFnZUJhY2tpbmdUZXh0dXJlTWFwcGVySW1wbD4oKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPEltYWdlQmFja2luZ1RleHR1cmVNYXBwZXJJbXBsPigpOwogICAgICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggZTY4NDhmY2Vj
YTQxZTk3MzZmMmEzODE3YTlmZDAzY2ViYWUzYWMxMS4uYjk2MzYzYjU1MTkzNTZjOGNkZjQ2NTQz
NjMyNmVkMDZjZWNlZDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3Bw
CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChH
QzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0
ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9u
cyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29t
cGxpYW50KCkpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMz
RE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5z
aW9uczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggYjI0ZGYwMzVlMjg4ZTFlYjJmOGFmOWY3YWI5MWQ3NzlkMGFjYTQ5ZS4u
MmEwZTViNzZlNGQ2YmFiNzBlOTBiMmYzZDI4ZWI0M2MwN2Y0MjUxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC02NTYsNyArNjU2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKICAgICBBTkdMRVJlc291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZvclNoYWRl
cjsKIAogICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1lSGFzaE1h
cEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOworICAgICAg
ICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBtYWtlVW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwog
ICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRlcnMu
Z2V0KCkpOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsKIApA
QCAtMTAyMyw3ICsxMDIzLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjptYXBwZWRTeW1i
b2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAgICAgICAgLy8g
QXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVlc3RlZCBiZWZv
cmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBhbmQgYXJlbid0
IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0uCiAgICAgICAg
IGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JT
aGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKKyAgICAgICAgICAg
IG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IG1ha2VVbmlxdWU8U2hhZGVyTmFtZUhhc2g+KCk7CiAg
ICAgICAgIHNldEN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlcihuYW1lSGFzaE1hcEZvclNoYWRl
cnMuZ2V0KCkpOwogCiAgICAgICAgIGF1dG8gZ2VuZXJhdGVkTmFtZSA9IGdlbmVyYXRlSGFzaGVk
TmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcAppbmRl
eCAyNDMwNDZkOTg5YWQ3MzhmN2M5ZjcxNDk1NTY3Yzk2YmIzNGM1NjQxLi43MGEyMGQ1MGMzNTIx
YTYxMjNlNmVmYWYxZjQ3NjhmNjQ5NWNkZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9uczNEJiBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAg
ICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+
KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IG1ha2VV
bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAg
ICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBAQCBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0M0RBdHRyaWJ1dGVzCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0
M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4
dDNEKiBzaGFyZWRDb250ZXh0KQogICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV9j
b21waWxlcihpc0dMRVMyQ29tcGxpYW50KCkgPyBTSF9FU1NMX09VVFBVVCA6IFNIX0dMU0xfQ09N
UEFUSUJJTElUWV9PVVRQVVQpCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKKyAgICAsIG1fcHJpdmF0
ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUp
KQogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
M0RUZXh0dXJlTWFwcGVyLmNwcAppbmRleCBlZDZjY2YxOTRiYmVlMWUwMGZkNDM5ZjYxYTZkZTYy
ZTQwMzAyZWEzLi44ZmQzYWQ0ZjcyZDc2NGJkOTVkMjIwZjU4MWVkMmI3OTYyODgzYzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTA2
LDkgKzEwNiw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGlj
c0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CiAjaWYgVVNFKE5JQ09TSUEpCi0gICAg
bV9uaWNvc2lhTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5pY29zaWE6OkdDM0RMYXllcj4oKnRo
aXMsIHJlbmRlclN0eWxlKTsKKyAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3Np
YTo6R0MzRExheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2Vsc2UKLSAgICBtX3RleG1hcExh
eWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0
aGlzLCByZW5kZXJTdHlsZSk7CisgICAgbV90ZXhtYXBMYXllciA9IG1ha2VVbmlxdWU8VGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOwogI2VuZGlmCiAK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTMyNSwxMCArMzI1LDEwIEBAIEV4dGVuc2lv
bnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAgIGlmICghbV9leHRl
bnNpb25zKSB7CiAjaWYgVVNFKE9QRU5HTF9FUykKICAgICAgICAgLy8gZ2xHZXRTdHJpbmdpIGlz
IG5vdCBhdmFpbGFibGUgb24gR0xFUzIuCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxzZSk7CisgICAgICAgIG1f
ZXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMRVM+KHRoaXMsICBmYWxz
ZSk7CiAjZWxzZQogICAgICAgICAvLyBGcm9tIE9wZW5HTCAzLjIgb24gd2UgdXNlIHRoZSBDb3Jl
IHByb2ZpbGUsIGFuZCB0aGVyZSB3ZSBtdXN0IHVzZSBnbEdldFN0cmluZ2kuCi0gICAgICAgIG1f
ZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBH
TENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisgICAgICAgIG1fZXh0ZW5z
aW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBHTENvbnRleHQ6OmN1
cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CiAjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuICpt
X2V4dGVuc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXIuY3BwCmluZGV4IDE0ZjFkYmYxOGQ5MWIzOTA3NWUyZDUwZjIxNDliNzc2YmJjMTc0OTMuLjY2
MzIzMTU2OTViYTIxYzI2N2QxNTU5MzJlYmE5MTQ3ZmI2NmFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRm
b3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkK
IAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHkt
PmxvY2soKSk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRl
eHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRleHQubV9p
bnRlcm5hbENvbG9yRm9ybWF0KSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNo
TmV4dEJ1ZmZlcihtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiht
X2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzLCBtX2NvbnRl
eHQubV9pbnRlcm5hbENvbG9yRm9ybWF0KSk7CiAgICAgfQogCiAgICAgbV9jb250ZXh0Lm1hcmtM
YXllckNvbXBvc2l0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggOTc0Yjg1NzhiODhh
YTY0MzUwOTFlOGIwYzM4YmIyZGI3MTBlZjEwMi4uYTJmNzU4NjZlMzIzYjhmZGJhNDNhMDA3ZDQ0
N2FhYTQ2NTc2YmZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTE4Niw3ICsxODYsNyBA
QCBUZXh0dXJlTWFwcGVyR0w6OlRleHR1cmVNYXBwZXJHTCgpCiAKICAgICBtX2RhdGEgPSBuZXcg
VGV4dHVyZU1hcHBlckdMRGF0YShwbGF0Zm9ybUNvbnRleHQpOwogI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKLSAgICBtX3RleHR1cmVQb29sID0gc3RkOjptYWtlX3VuaXF1ZTxCaXRtYXBUZXh0
dXJlUG9vbD4obV9jb250ZXh0QXR0cmlidXRlcyk7CisgICAgbV90ZXh0dXJlUG9vbCA9IG1ha2VV
bmlxdWU8Qml0bWFwVGV4dHVyZVBvb2w+KG1fY29udGV4dEF0dHJpYnV0ZXMpOwogI2VuZGlmCiB9
CiAKQEAgLTc5MCw3ICs3OTAsNyBAQCBSZWY8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckdM
OjpjcmVhdGVUZXh0dXJlKEdMaW50IGludGVybmFsRm9ybWF0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlcj4gVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCgp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlckdMPigpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJHTD4oKTsKIH0KIAogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDdhZmRm
MzBhMDViY2E1Mzk3YjgwMThiZmViZDg5ZTBlMWRhNTAzMzMuLmUxMWEwYmIyN2I4MTBjMmQ1Mjc2
YjJhOWIwYzUwOWY4ODk1MDY2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZgogICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwogICAg
IHRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7CiAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdM
Jj4odGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQpOwot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworICAgIHJldHVybiBtYWtlVW5p
cXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBt
X2V4dHJhRmxhZ3MpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggYzcxNGY2ZDc4YzFjZjFhNjFkNGRmZjZiNDIw
NTIxYjAyZWNkN2M1MC4uMzc5MzY3NWFjOGQ2YjNjMzJhM2IzMTgxOTNlNDlhN2IzN2RjNDg4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApA
QCAtNzEsOCArNzEsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmFj
dGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjbwogICAgIGlmIChtX3Rhcmdl
dExheWVyICYmIG1fY3VycmVudEJ1ZmZlcikKICAgICAgICAgbV90YXJnZXRMYXllci0+c2V0Q29u
dGVudHNMYXllcihtX2N1cnJlbnRCdWZmZXIuZ2V0KCkpOwogCi0gICAgbV9yZWxlYXNlVW51c2Vk
QnVmZmVyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVk
KTsKLSAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8
UnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4+KFJ1bkxvb3A6
OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNvbXBv
c2l0b3JUaHJlYWRVcGRhdGVUaW1lckZpcmVkKTsKKyAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJz
VGltZXIgPSBtYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQpOworICAgIG1fY29t
cG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAm
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Y29tcG9zaXRvclRocmVhZFVwZGF0ZVRp
bWVyRmlyZWQpOwogCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX2NvbXBvc2l0b3JU
aHJlYWRVcGRhdGVUaW1lci0+c2V0UHJpb3JpdHkoUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpDb21w
b3NpdGluZ1RocmVhZFVwZGF0ZVRpbWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYzczZjAxYjJkZjU3OTFiNTA1
ZDZmN2Q0MGYzMmFlMDJlZTY0MjYzMi4uMTcxODEzMzY3OTUwMzM0MWUzMGNlZDM4NmQyZDc3M2E3
ZWZmZjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQogCiAgICAgLy8gRW5zdXJlIHRoZSBU
aWxlZEJhY2tpbmdTdG9yZSBvYmplY3QsIGFuZCBlbmZvcmNlIGEgY29tcGxldGUgcmVwYWludCBp
ZiBpdCdzIG5vdCBiZWVuIHByZXNlbnQgeWV0LgogICAgIGlmICghbGF5ZXJTdGF0ZS5tYWluQmFj
a2luZ1N0b3JlKSB7Ci0gICAgICAgIGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IHN0ZDo6
bWFrZV91bmlxdWU8VGlsZWRCYWNraW5nU3RvcmU+KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2Nh
bGUoKSk7CisgICAgICAgIGxheWVyU3RhdGUubWFpbkJhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8
VGlsZWRCYWNraW5nU3RvcmU+KGltcGwsIGVmZmVjdGl2ZUNvbnRlbnRzU2NhbGUoKSk7CiAgICAg
ICAgIG1fcGVuZGluZ1Zpc2libGVSZWN0QWRqdXN0bWVudCA9IHRydWU7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzYmU0MzEx
ZGVhYTAyNDk3YzdlZDFjZGNhMTM0NWJhNWE2ODAzMTA5Li40YTY5NzgyMmU0ZGUyY2RiOGI2NmY4
MWQ0MDRkOGRiZTgyYjQ5ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJh
Y2tpbmdTdG9yZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3Jl
OjpjcmVhdGVUaWxlcyhjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYg
cwogICAgIHVuc2lnbmVkIHRpbGVzVG9DcmVhdGVDb3VudCA9IHRpbGVzVG9DcmVhdGUuc2l6ZSgp
OwogICAgIGZvciAodW5zaWduZWQgbiA9IDA7IG4gPCB0aWxlc1RvQ3JlYXRlQ291bnQ7ICsrbikg
ewogICAgICAgICBUaWxlOjpDb29yZGluYXRlIGNvb3JkaW5hdGUgPSB0aWxlc1RvQ3JlYXRlW25d
OwotICAgICAgICBtX3RpbGVzLmFkZChjb29yZGluYXRlLCBzdGQ6Om1ha2VfdW5pcXVlPFRpbGU+
KCp0aGlzLCBjb29yZGluYXRlKSk7CisgICAgICAgIG1fdGlsZXMuYWRkKGNvb3JkaW5hdGUsIG1h
a2VVbmlxdWU8VGlsZT4oKnRoaXMsIGNvb3JkaW5hdGUpKTsKICAgICB9CiAgICAgcmVxdWlyZWRU
aWxlQ291bnQgLT0gdGlsZXNUb0NyZWF0ZUNvdW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUu
Y3BwCmluZGV4IGM4OGU5YmVmOWQ2NmNhMmI1NTAxOGM5MGY0YjBhNDI4YjQ2ODJlZjguLjRlYWYw
MDExMjBjNDdmZmNlNTVhYjRkZmE5MjE4M2NlOGIzMTk0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
U3RhdGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFRyYW5zZm9ybVN0YXRlJiBUcmFuc2Zvcm1TdGF0
ZTo6b3BlcmF0b3I9KGNvbnN0IFRyYW5zZm9ybVN0YXRlJiBvdGhlcikKICAgICBpZiAobV9tYXBR
dWFkKSB7CiAgICAgICAgIG1fbGFzdFBsYW5hclF1YWQgPSBvdGhlci5tX2xhc3RQbGFuYXJRdWFk
OwogICAgICAgICBpZiAob3RoZXIubV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAg
ICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVh
ZD4oKm90aGVyLm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOworICAgICAgICAgICAgbV9sYXN0
UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqb3RoZXIubV9sYXN0
UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBs
YW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRyOwogICAgIH0KQEAgLTUwLDcgKzUwLDcgQEAgVHJh
bnNmb3JtU3RhdGUmIFRyYW5zZm9ybVN0YXRlOjpvcGVyYXRvcj0oY29uc3QgVHJhbnNmb3JtU3Rh
dGUmIG90aGVyKQogICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBudWxscHRyOwogCiAgICAg
aWYgKG90aGVyLm1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pCi0gICAgICAgIG1fYWNjdW11bGF0ZWRU
cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIu
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0g
PSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIubV9hY2N1bXVsYXRlZFRy
YW5zZm9ybSk7CiAgICAgICAgIAogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTEyOSwxMiArMTI5
LDEyIEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Gcm9tQ29uCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBhY2N1
bXVsYXRlZCB0cmFuc2Zvcm0gZnJvbSBsYXN0IHRpbWUsIG11bHRpcGx5IGluIHRoaXMgdHJhbnNm
b3JtCiAgICAgaWYgKG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKG1fZGly
ZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQotICAgICAgICAgICAgbV9hY2N1bXVs
YXRlZFRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRy
YW5zZm9ybUZyb21Db250YWluZXIgKiAqbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSk7CisgICAgICAg
ICAgICBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxUcmFuc2Zvcm1hdGlvbk1h
dHJpeD4odHJhbnNmb3JtRnJvbUNvbnRhaW5lciAqICptX2FjY3VtdWxhdGVkVHJhbnNmb3JtKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdGlw
bHkodHJhbnNmb3JtRnJvbUNvbnRhaW5lcik7CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRlID09
IEFjY3VtdWxhdGVUcmFuc2Zvcm0pIHsKICAgICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3RhcnRl
ZCB0byBhY2N1bXVsYXRlCi0gICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKTsK
KyAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRp
b25NYXRyaXg+KHRyYW5zZm9ybUZyb21Db250YWluZXIpOwogICAgIH0KICAgICAKICAgICBpZiAo
YWNjdW11bGF0ZSA9PSBGbGF0dGVuVHJhbnNmb3JtKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9p
ZCBUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgRmxvYXRR
dWFkKiBxdWFkKQogICAgIC8vIE1hcCB0aGUgcXVhZCBiYWNrIHRocm91Z2ggYW55IHRyYW5zZm9y
bSBvciBvZmZzZXQgYmFjayBpbnRvIHRoZSBsYXN0IGZsYXR0ZW5pbmcgY29vcmRpbmF0ZSBzcGFj
ZS4KICAgICBGbG9hdFF1YWQgYmFja01hcHBlZFF1YWQoKnF1YWQpOwogICAgIG1hcFF1YWQoYmFj
a01hcHBlZFF1YWQsIGludmVyc2VEaXJlY3Rpb24oKSk7Ci0gICAgbV9sYXN0UGxhbmFyU2Vjb25k
YXJ5UXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihiYWNrTWFwcGVkUXVhZCk7Cisg
ICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPihiYWNr
TWFwcGVkUXVhZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFk
JiBxdWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sKiB3YXNDbGFtcGVkKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5oCmluZGV4IDEwODYzNzQwMGEyMGZhMmYwOWRmNmFk
NDM5MzNjYTdkYTE3ZjQ4NjEuLmI2MjU4MzZhNWNlMjI1YmY0N2YzMzBjMDhjMjlkOGM3NTY1MmVl
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgVHJh
bnNmb3JtU3RhdGUgewogICAgICAgICAvLyBXZSBtdXN0IGJlIGluIGEgZmxhdHRlbmVkIHN0YXRl
IChubyBhY2N1bXVsYXRlZCBvZmZzZXQpIHdoZW4gc2V0dGluZyB0aGlzIHNlY29uZGFyeSBxdWFk
LgogICAgICAgICBBU1NFUlQobV9hY2N1bXVsYXRlZE9mZnNldCA9PSBMYXlvdXRTaXplKCkpOwog
ICAgICAgICBpZiAocXVhZCkKLSAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKnF1YWQpOworICAgICAgICAgICAgbV9sYXN0
UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IG1ha2VVbmlxdWU8RmxvYXRRdWFkPigqcXVhZCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSBudWxscHRy
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggZDA4OWQwZjZlYzA0MzQ0NmE0Yjg4YzU5ZjMyMjUxZGU3
YmUzODgyNC4uYTQ2ZDgwMjU2ZmNmYzk0MTJiOTI2MzlhNzI5MmMwMzM5ZmRlZTQ2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAKQEAgLTY0Miw3ICs2NDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0
YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgIGJv
b2wgc3ludGhlc2l6ZUJvbGQgPSBpc0dESUZvbnRXZWlnaHRCb2xkKHdlaWdodCkgJiYgIWlzR0RJ
Rm9udFdlaWdodEJvbGQobG9nRm9udC5sZldlaWdodCk7CiAgICAgYm9vbCBzeW50aGVzaXplSXRh
bGljID0gaXNJdGFsaWMoZm9udERlc2NyaXB0aW9uLml0YWxpYygpKSAmJiAhbG9nRm9udC5sZkl0
YWxpYzsKIAotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZvcm1E
YXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCks
IHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOworICAgIGF1dG8gcmVz
dWx0ID0gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERl
c2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXpl
SXRhbGljLCB1c2VHREkpOwogCiAjaWYgVVNFKENHKQogICAgIGJvb2wgZm9udENyZWF0aW9uRmFp
bGVkID0gIXJlc3VsdC0+Y2dGb250KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5k
ZXggYzgyOWRhYWNmNjM0OTNjNDJmNmI2MDU5MzQ3NDE2ZWUyZGUwMzkwNy4uZWE1MzAxMDg2ZWM3
ODhmN2QyMDI4NjQwYmJjYmExNWM1ODA0YTllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgZm9u
dFJlZmVyZW5jZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKICAg
ICBpZiAoIWZvbnRSZWZlcmVuY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2Us
IGZvbnROYW1lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
Pihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IGFiN2M3OTBkNjBmMmU4Zjc0YWYwM2MwNmFj
ZmM3MmM4ZTM5YzIyZDkuLmVlZWFmZWJkOTMzY2E5Yzc4ZGQwNTE0MTNkMjMzNDRjYTg1M2IwMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC05MSw3ICs5MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlCiAgICAgaWYgKCFmb250UmVmZXJlbmNlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250TmFt
ZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29u
c3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0Z1bGxTY3JlZW5Db250cm9sbGVyLmNwcAppbmRleCAxZTQ5MWMx
NTY4M2YxODRhZGFjNzUwZmVhZDAzMjFlZTA5NzM2MzkzLi5jYzdhZDNlYzMxMGJhZmY5ZjJkNTMx
M2VhMzdlYmI2NjdjNzlkNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRnVsbFNjcmVlbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9GdWxsU2NyZWVuQ29udHJvbGxlci5jcHAKQEAgLTEwNCw3
ICsxMDQsNyBAQCBMUkVTVUxUIEZ1bGxTY3JlZW5Db250cm9sbGVyOjpQcml2YXRlOjpmdWxsc2Ny
ZWVuQ2xpZW50V25kUHJvYyhIV05EIGh3bmQsIFVJTlQgbQogfQogCiBGdWxsU2NyZWVuQ29udHJv
bGxlcjo6RnVsbFNjcmVlbkNvbnRyb2xsZXIoRnVsbFNjcmVlbkNvbnRyb2xsZXJDbGllbnQqIGNs
aWVudCkKLSAgICA6IG1fcHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFByaXZhdGU+KHRoaXMsIGNs
aWVudCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxQcml2YXRlPih0aGlzLCBjbGllbnQp
KQogewogICAgIEFTU0VSVF9BUkcoY2xpZW50LCBjbGllbnQpOwogfQpAQCAtMTMyLDEzICsxMzIs
MTMgQEAgdm9pZCBGdWxsU2NyZWVuQ29udHJvbGxlcjo6ZW50ZXJGdWxsU2NyZWVuKCkKICAgICBt
X3ByaXZhdGUtPm1fb3JpZ2luYWxGcmFtZSA9IG9yaWdpbmFsRnJhbWU7CiAKICAgICBBU1NFUlQo
IW1fcHJpdmF0ZS0+bV9iYWNrZ3JvdW5kV2luZG93KTsKLSAgICBtX3ByaXZhdGUtPm1fYmFja2dy
b3VuZFdpbmRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVl
bldpbmRvdz4obV9wcml2YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdp
bmRvdyA9IG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdz4obV9w
cml2YXRlLmdldCgpKTsKICAgICBtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdpbmRvdy0+Y3JlYXRl
V2luZG93KDApOwogICAgIDo6QW5pbWF0ZVdpbmRvdyhtX3ByaXZhdGUtPm1fYmFja2dyb3VuZFdp
bmRvdy0+aHduZCgpLCBrRnVsbFNjcmVlbkFuaW1hdGlvbkR1cmF0aW9uLCBBV19CTEVORCB8IEFX
X0FDVElWQVRFKTsKIAogICAgIG1fcHJpdmF0ZS0+bV9jbGllbnQtPmZ1bGxTY3JlZW5DbGllbnRX
aWxsRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUtPm1fZnVsbFNjcmVl
bldpbmRvdyk7Ci0gICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQo
KSk7CisgICAgbV9wcml2YXRlLT5tX2Z1bGxTY3JlZW5XaW5kb3cgPSBtYWtlVW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUZ1bGxzY3JlZW5XaW5kb3c+KG1fcHJpdmF0ZS5nZXQoKSk7CiAgICAgQVNT
RVJUKG1fcHJpdmF0ZS0+bV9mdWxsU2NyZWVuV2luZG93KTsKICAgICBtX3ByaXZhdGUtPm1fZnVs
bFNjcmVlbldpbmRvdy0+Y3JlYXRlV2luZG93KDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJv
V2luLmNwcAppbmRleCAxMDY3Yjk2MDkzZGIyZWQ1OTFhMjFhMzFkOWQwMjU2ZGMxMjkzZTg5Li5m
MTQ0MjU3MmNjNmQxZDU0YmJlZTU4YmRiYzM2ZWRmNzc0YWFiYjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDYWlyb1dpbi5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnBsYXRmb3JtSW5pdChIREMgZGMsIGJvb2wgaGFzQWxwaGEpCiAKICAgICBjYWlyb190KiBjciA9
IGNyZWF0ZUNhaXJvQ29udGV4dFdpdGhIREMoZGMsIGhhc0FscGhhKTsKIAotICAgIG1fZGF0YSA9
IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybUNvbnRleHRDYWlybz4oY3IpKTsKKyAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+KGNyKSk7CiAg
ICAgbV9kYXRhLT5wbGF0Zm9ybUNvbnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX2Rh
dGEpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBkYzsKICAgICBpZiAocGxhdGZvcm1Db250ZXh0KCkt
PmNyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDlmMmQzODg4NTAw
YzY5Zjg1M2VmZTUyZmIzZTk4OTM5NWQ1NDY1ZDkuLmQzZTQ3N2UxMjAxYmI2MThjNzc5MDZiNTY1
YjllMzQzMDdhYTEwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApAQCAtNjMs
NyArNjMsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChIREMgaGRjLCBJRDJE
MURDUmVuZGVyVGFyZ2V0KiogcmVuZGVyVGFyZ2V0LCBSRQogCiAgICAgKCpyZW5kZXJUYXJnZXQp
LT5CaW5kREMoaGRjLCAmcmVjdCk7CiAKLSAgICBhdXRvIG93bmVkUGxhdGZvcm1Db250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oKnJlbmRlclRhcmdldCk7
CisgICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQ+KCpyZW5kZXJUYXJnZXQpOwogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUoV1RGTW92ZShvd25lZFBsYXRmb3JtQ29udGV4dCksIEJpdG1h
cFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogICAgIG1fZGF0YS0+bV9oZGMgPSBo
ZGM7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
SW5pdChIREMgaGRjLCBib29sIGhhc0FscGhhKQogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ+KHJlbmRlclRhcmdldC5nZXQoKSk7Cisg
ICAgYXV0byBvd25lZFBsYXRmb3JtQ29udGV4dCA9IG1ha2VVbmlxdWU8UGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQ+KHJlbmRlclRhcmdldC5nZXQoKSk7CiAgICAgbV9kYXRhID0gbmV3IEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZShXVEZNb3ZlKG93bmVkUGxhdGZvcm1Db250ZXh0KSwgQml0
bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAgICAgbV9kYXRhLT5tX2hkYyA9
IGhkYzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBiZDc2
ZWZiYmE5ZDBlODk3ZDNkMjg4ZTg1ZThkMjQ0NGNjNGY4ZjRlLi4xZWJiNWIwOWQzODUzN2MwMTky
MjBiOTQ3ZGNhZDk0NGQ4ZTEwMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmNwcApAQCAtNDYsNyArNDYsNyBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4
dEltcGxGYWN0b3J5IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y3JlYXRlRgogICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dEltcGxGYWN0b3J5KAogICAgICAg
ICBbJnBsYXRmb3JtQ29udGV4dF0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQ+KGNvbnRleHQsIHBsYXRmb3JtQ29udGV4dCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHBsYXRmb3Jt
Q29udGV4dCk7CiAgICAgICAgIH0pOwogfQogCkBAIC01NSwxNCArNTUsMTQgQEAgR3JhcGhpY3ND
b250ZXh0OjpHcmFwaGljc0NvbnRleHRJbXBsRmFjdG9yeSBHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ6OmNyZWF0ZUYKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRl
eHRJbXBsRmFjdG9yeSgKICAgICAgICAgW3JlbmRlclRhcmdldF0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNvbnRleHQsIHJlbmRlclRhcmdldCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ+KGNv
bnRleHQsIHJlbmRlclRhcmdldCk7CiAgICAgICAgIH0pOwogfQogCiBHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQpCiAgICAg
OiBHcmFwaGljc0NvbnRleHRJbXBsKGNvbnRleHQsIEZsb2F0UmVjdCB7IH0sIEFmZmluZVRyYW5z
Zm9ybSB7IH0pCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChwbGF0Zm9ybUNvbnRleHQpCi0gICAg
LCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZh
dGU+KG1fcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0Nv
bnRleHRUeXBlOjpHUFVNZW1vcnkpKQorICAgICwgbV9wcml2YXRlKG1ha2VVbmlxdWU8R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3BsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250
ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KSkKIHsKICAgICBtX3Bs
YXRmb3JtQ29udGV4dC5zZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKG1fcHJpdmF0ZS5nZXQoKSk7
CiAgICAgbV9wcml2YXRlLT5zeW5jQ29udGV4dChtX3BsYXRmb3JtQ29udGV4dCk7CkBAIC03MCw5
ICs3MCw5IEBAIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29udGV4CiAKIEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKICAgICA6IEdyYXBoaWNzQ29u
dGV4dEltcGwoY29udGV4dCwgRmxvYXRSZWN0IHsgfSwgQWZmaW5lVHJhbnNmb3JtIHsgfSkKLSAg
ICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKKyAgICAsIG1fb3duZWRQbGF0Zm9ybUNvbnRleHQo
bWFrZVVuaXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4ocmVuZGVyVGFyZ2V0KSkKICAgICAs
IG1fcGxhdGZvcm1Db250ZXh0KCptX293bmVkUGxhdGZvcm1Db250ZXh0KQotICAgICwgbV9wcml2
YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlPihtX3Bs
YXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlw
ZTo6R1BVTWVtb3J5KSkKKyAgICAsIG1fcHJpdmF0ZShtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4
dFBsYXRmb3JtUHJpdmF0ZT4obV9wbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0
bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSkpCiB7CiAgICAgbV9wbGF0Zm9ybUNv
bnRleHQuc2V0R3JhcGhpY3NDb250ZXh0UHJpdmF0ZShtX3ByaXZhdGUuZ2V0KCkpOwogICAgIG1f
cHJpdmF0ZS0+c3luY0NvbnRleHQobV9wbGF0Zm9ybUNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2lu
LmNwcAppbmRleCA1YmRlNGNlZGY1MTZhOTE3OWE2ZDNkM2IzZTMzZDEzNGVkNWFiNTExLi4xZDgw
NDIwY2Y3ZWM2Y2Q3NzVhNjJiYWVhMjJmOTkwNjA3ZWI0Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0V2lu
LmNwcApAQCAtOTUsNyArOTUsNyBAQCBHcmFwaGljc0NvbnRleHQ6OldpbmRvd3NCaXRtYXA6On5X
aW5kb3dzQml0bWFwKCkKIAogc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDo6V2luZG93
c0JpdG1hcD4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVXaW5kb3dzQml0bWFwKGNvbnN0IEludFNp
emUmIHNpemUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2luZG93c0JpdG1hcD4o
bV9kYXRhLT5tX2hkYywgc2l6ZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2luZG93c0JpdG1h
cD4obV9kYXRhLT5tX2hkYywgc2l6ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkQu
Y3BwCmluZGV4IDA2YzE3NDU3OWE0YmMxMzA5MWYzNGI1Nzk0YWFhOTI5OTNiYmJhMjQuLjM1YTlm
ZjYxMTM1MWMzM2M3MTc0ZDkyYTFmZGNmNDQ3MGU4MWE4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEaXJlY3Qy
RC5jcHAKQEAgLTExMiw4ICsxMTIsOCBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhYwogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBOb3RlOiBUaGlzIHBsYWNlcyB0aGUgYml0bWFwY29udGV4dCBp
bnRvIGEgbG9ja2VkIHN0YXRlIGJlY2F1c2Ugb2YgdGhlIEJlZ2luRHJhdyBjYWxsIGluIHRoZSBj
b25zdHJ1Y3Rvci4KLSAgICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7Ci0gICAgbV9k
YXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRhLnBs
YXRmb3JtQ29udGV4dC5nZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250
ZXh0VHlwZTo6R1BVTWVtb3J5KTsKKyAgICBtX2RhdGEucGxhdGZvcm1Db250ZXh0ID0gbWFrZVVu
aXF1ZTxQbGF0Zm9ybUNvbnRleHREaXJlY3QyRD4oYml0bWFwQ29udGV4dC5nZXQoKSk7CisgICAg
bV9kYXRhLmNvbnRleHQgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4obV9kYXRhLnBsYXRm
b3JtQ29udGV4dC5nZXQoKSwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0
VHlwZTo6R1BVTWVtb3J5KTsKIAogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRleCA1ODM4ZWMxNTdhMmM3
YjcxNjNiNzE2ODJhNGViOGM4MDM0ZTk2MzIxLi42ZDY0YWU5YTZlM2E0MTdmYjE0ZjEyMTY2ZjY4
ZDNjOWE1NTI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uLmNwcApAQCAtODIsNyArODIsNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246On5NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oKQogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKSB7Ci0gICAg
ICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbj4ocGxheWVyKTsgfSwKKyAg
ICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1ha2VVbmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uPihwbGF5ZXIpOyB9LAogICAgICAg
ICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgMCk7CiAgICAg
fQogfQpAQCAtMzAxLDcgKzMwMSw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJl
ZCgpIGNvbnN0CiB7IAotICAgIGF1dG8gcmFuZ2VzID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9y
bVRpbWVSYW5nZXM+KCk7CisgICAgYXV0byByYW5nZXMgPSBtYWtlVW5pcXVlPFBsYXRmb3JtVGlt
ZVJhbmdlcz4oKTsKICAgICBpZiAobV9wcmVzZW50ZXIgJiYgbV9wcmVzZW50ZXItPm1heFRpbWVM
b2FkZWQoKSA+IDApCiAgICAgICAgIHJhbmdlcy0+YWRkKE1lZGlhVGltZTo6emVyb1RpbWUoKSwg
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fcHJlc2VudGVyLT5tYXhUaW1lTG9hZGVkKCkp
KTsKICAgICByZXR1cm4gcmFuZ2VzOwpAQCAtODg4LDcgKzg4OCw3IEBAIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6Q3VzdG9tVmlkZW9QcmVzZW50ZXI6OkN1c3RvbVZpZGVvUHJl
c2VudGVyKE1lCiAgICAgbV9zb3VyY2VSZWN0LmJvdHRvbSA9IDE7CiAgICAgbV9zb3VyY2VSZWN0
LnJpZ2h0ID0gMTsKIAotICAgIG1fcHJlc2VudGVyRW5naW5lID0gc3RkOjptYWtlX3VuaXF1ZTxE
aXJlY3QzRFByZXNlbnRlcj4oKTsKKyAgICBtX3ByZXNlbnRlckVuZ2luZSA9IG1ha2VVbmlxdWU8
RGlyZWN0M0RQcmVzZW50ZXI+KCk7CiAgICAgaWYgKCFtX3ByZXNlbnRlckVuZ2luZSkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vV0tDQUltYWdlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1dLQ0FJbWFnZVF1ZXVlLmNwcAppbmRleCA4YzBlYjI0YjE5YzcxMzBkMzYyNTc1ZTdi
NDgwZDY0MzlhOGFlNGI2Li45ZDdkOTJlOGVhZDk2YTFiYmRmYmQxZDkyZGM5NjYyMWM2YzQyZjc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vV0tDQUlt
YWdlUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9X
S0NBSW1hZ2VRdWV1ZS5jcHAKQEAgLTUxLDEzICs1MSwxMyBAQCBzdGF0aWMgdm9pZCBXS0NBSW1h
Z2VRdWV1ZVJlbGVhc2UoQ0FJbWFnZVF1ZXVlUmVmIGlxKQogfQogCiBXS0NBSW1hZ2VRdWV1ZTo6
V0tDQUltYWdlUXVldWUodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3Qg
Y2FwYWNpdHkpCi0gICAgOiBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxXS0NBSW1hZ2VRdWV1
ZVByaXZhdGU+KCkpCisgICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxXS0NBSW1hZ2VRdWV1ZVBy
aXZhdGU+KCkpCiB7CiAgICAgbV9wcml2YXRlLT5tX2ltYWdlUXVldWUgPSBhZG9wdENGKHdrQ0FJ
bWFnZVF1ZXVlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIGNhcGFjaXR5KSk7CiB9CiAKIFdLQ0FJbWFn
ZVF1ZXVlOjpXS0NBSW1hZ2VRdWV1ZShjb25zdCBXS0NBSW1hZ2VRdWV1ZSYgbykKLSAgICA6IG1f
cHJpdmF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKKyAgICA6
IG1fcHJpdmF0ZShtYWtlVW5pcXVlPFdLQ0FJbWFnZVF1ZXVlUHJpdmF0ZT4oKSkKIHsKICAgICBt
X3ByaXZhdGUtPm1faW1hZ2VRdWV1ZSA9IG8ubV9wcml2YXRlLT5tX2ltYWdlUXVldWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggNzFh
MDBhMzBjMGZhZWRkOWI0MGVjNGZmYWRmMTc4NjM4ZjI1Yjg1NC4uNDIyNTJkMzRiNTRmZTZjMmMy
NmI1MjJjNjYwZTg2MmYwNTZlZjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDMsMjQgKzQzLDI0IEBAIGVudW0gQ2xpcGJvYXJkRGF0
YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRl
Rm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJv
YXJkPigiQ0xJUEJPQVJEIik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oIkNM
SVBCT0FSRCIpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxQYXN0ZWJvYXJkPigiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9h
cmQ+KCJQUklNQVJZIik7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCkKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihTZWxlY3Rpb25EYXRhOjpj
cmVhdGUoKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oU2VsZWN0aW9uRGF0
YTo6Y3JlYXRlKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAg
IEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8UGFzdGVib2FyZD4oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
SGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcAppbmRleCAwNGU5NmFiNTkyZWI5ODI5NDQ3YzMzM2ZiYTgxODc3Mjk3MDdmMDMzLi5hZjhm
ZjM0MjQ2YmM5NzJmMWE1ZmY3MzdmOTkyOTgwOWZiNjY5YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC0zMDEsNyArMzAxLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBi
b2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWwKIAogICAgIGlmIChudW1iZXJPZlRhcmdldHMgPiAw
ICYmIHRhYmxlKSB7CiAgICAgICAgIFNldEZvclNjb3BlPFNlbGVjdGlvbkRhdGEqPiBjaGFuZ2Uo
c2V0dGluZ0NsaXBib2FyZFNlbGVjdGlvbiwgY29uc3RfY2FzdDxTZWxlY3Rpb25EYXRhKj4oJnNl
bGVjdGlvbikpOwotICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBib2Fy
ZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBXVEZNb3ZlKHByaW1hcnlTZWxl
Y3Rpb25DbGVhcmVkKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8Q2xpcGJvYXJk
U2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1vdmUocHJpbWFyeVNlbGVj
dGlvbkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YShj
bGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENsaXBib2FyZENvbnRlbnRzQ2Fs
bGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgZGF0YS5nZXQoKSkpIHsKICAg
ICAgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShjbGlwYm9hcmQsIG51bGxwdHIs
IDApOwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEoKSBz
dWNjZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sgdGFrZXMgdGhlIG93bmVyc2hp
cCBvZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHYWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR2FkZ2V0LmNwcAppbmRleCBiZGNjOTllODU5ZDQ5NzUwNzhm
ZjNjNWUyZWJjMzg1ZDliOTViOTUyLi43M2UwNzU4YTZlZGQxZTE5MzIzMTA4M2Y4OWE3ZTdmZGYy
MGQxMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHYWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZUdhZGdldC5jcHAKQEAgLTM1LDIwICszNSwyMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhl
bWVHYWRnZXQ+IFJlbmRlclRoZW1lR2FkZ2V0OjpjcmVhdGUoY29uc3QgUmVuZGVyVGhlbWVHYQog
ewogICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6
VHlwZTo6R2VuZXJpYzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhl
bWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGluZ3Ms
IHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2FkZ2V0OjpUeXBlOjpUZXh0RmllbGQ6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2Fk
Z2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lVGV4dEZpZWxkR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxp
bmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6UmFkaW86
CiAgICAgY2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6Q2hlY2s6Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQs
IHNpYmxpbmdzLCBwb3NpdGlvbik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRo
ZW1lVG9nZ2xlR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAg
Y2FzZSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6QXJyb3c6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQXJyb3dHYWRnZXQ+KGluZm8sIHBhcmVudCwgc2libGlu
Z3MsIHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVBcnJv
d0dhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIGNhc2UgUmVu
ZGVyVGhlbWVHYWRnZXQ6OlR5cGU6Okljb246Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFJlbmRlclRoZW1lSWNvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRp
b24pOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUljb25HYWRnZXQ+KGlu
Zm8sIHBhcmVudCwgc2libGluZ3MsIHBvc2l0aW9uKTsKICAgICBjYXNlIFJlbmRlclRoZW1lR2Fk
Z2V0OjpUeXBlOjpTY3JvbGxiYXI6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlv
bik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyR2FkZ2V0
PihpbmZvLCBwYXJlbnQsIHNpYmxpbmdzLCBwb3NpdGlvbik7CiAgICAgY2FzZSBSZW5kZXJUaGVt
ZUdhZGdldDo6VHlwZTo6QnV0dG9uOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5mbywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24p
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbkdhZGdldD4oaW5m
bywgcGFyZW50LCBzaWJsaW5ncywgcG9zaXRpb24pOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVt
ZVdpZGdldC5jcHAKaW5kZXggMDVkMTJkZDllYWZiZWYwMmE0NTljYTUyNzY0MTdhNWI5YjBlODk3
Ni4uY2E2ZWQ5MThhNTAzM2UyOTc2ZGI4NGQ4OWMyMDQ4ODcwMGYwMmJjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lV2lkZ2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVXaWRnZXQuY3BwCkBAIC00Miw0
OSArNDIsNDkgQEAgUmVuZGVyVGhlbWVXaWRnZXQmIFJlbmRlclRoZW1lV2lkZ2V0OjpnZXRPckNy
ZWF0ZShUeXBlIHdpZGdldFR5cGUpCiAgICAgYXV0byBhZGRSZXN1bHQgPSB3aWRnZXRNYXAoKS5l
bnN1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdpZGdldFR5cGUpLCBbd2lkZ2V0VHlwZV0oKSAt
PiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyVGhlbWVXaWRnZXQ+IHsKICAgICAgICAgc3dpdGNoICh3
aWRnZXRUeXBlKSB7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRp
Y2FsU2Nyb2xsYmFyUmlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CiAgICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6
OlR5cGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUws
IFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsLCBSZW5kZXJUaGVtZVNjcm9sbGJhcjo6
VmVydGljYWxQb3NpdGlvbjo6TGVmdCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlZlcnRpY2FsUG9z
aXRpb246OkxlZnQpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpUeXBlOjpIb3Jp
em9udGFsU2Nyb2xsYmFyOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVu
ZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBSZW5kZXJUaGVt
ZVNjcm9sbGJhcjo6TW9kZTo6RnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRo
ZW1lU2Nyb2xsYmFyOjpNb2RlOjpGdWxsKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdl
dDo6VHlwZTo6VmVydGljYWxTY3JvbGxJbmRpY2F0b3JSaWdodDoKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05f
VkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOworICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVTY3JvbGxiYXI+KEdUS19PUklFTlRB
VElPTl9WRVJUSUNBTCwgUmVuZGVyVGhlbWVTY3JvbGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CiAg
ICAgICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2Nyb2xsSW5kaWNh
dG9yTGVmdDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1l
U2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFy
OjpNb2RlOjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9u
OjpMZWZ0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2Nyb2xs
YmFyPihHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpNb2Rl
OjpJbmRpY2F0b3IsIFJlbmRlclRoZW1lU2Nyb2xsYmFyOjpWZXJ0aWNhbFBvc2l0aW9uOjpMZWZ0
KTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNjcm9s
bEluZGljYXRvcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRo
ZW1lU2Nyb2xsYmFyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgUmVuZGVyVGhlbWVTY3Jv
bGxiYXI6Ok1vZGU6OkluZGljYXRvcik7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxS
ZW5kZXJUaGVtZVNjcm9sbGJhcj4oR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIFJlbmRlclRo
ZW1lU2Nyb2xsYmFyOjpNb2RlOjpJbmRpY2F0b3IpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1l
V2lkZ2V0OjpUeXBlOjpDaGVja0J1dHRvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uPihSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbjo6
VHlwZTo6Q2hlY2spOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVU
b2dnbGVCdXR0b24+KFJlbmRlclRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpDaGVjayk7CiAgICAg
ICAgIGNhc2UgUmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlJhZGlvQnV0dG9uOgotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVUb2dnbGVCdXR0b24+KFJlbmRl
clRoZW1lVG9nZ2xlQnV0dG9uOjpUeXBlOjpSYWRpbyk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW5kZXJUaGVtZVRvZ2dsZUJ1dHRvbj4oUmVuZGVyVGhlbWVUb2dnbGVCdXR0b246
OlR5cGU6OlJhZGlvKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0
dG9uOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCdXR0
b24+KFJlbmRlclRoZW1lQnV0dG9uOjpEZWZhdWx0OjpObyk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJ1dHRvbj4oUmVuZGVyVGhlbWVCdXR0b246OkRlZmF1bHQ6
Ok5vKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6QnV0dG9uRGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lQnV0dG9u
PihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFJlbmRlclRoZW1lQnV0dG9uPihSZW5kZXJUaGVtZUJ1dHRvbjo6RGVmYXVsdDo6
WWVzKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6Q29tYm9Cb3g6Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUNvbWJvQm94Pigp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVDb21ib0JveD4oKTsK
ICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6RW50cnk6Ci0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUVudHJ5PigpOworICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVFbnRyeT4oKTsKICAgICAgICAgY2FzZSBS
ZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6U2VsZWN0ZWRFbnRyeToKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclRoZW1lRW50cnk+KFJlbmRlclRoZW1lRW50cnk6OlNl
bGVjdGVkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVuZGVyVGhlbWVF
bnRyeT4oUmVuZGVyVGhlbWVFbnRyeTo6U2VsZWN0ZWQ6Olllcyk7CiAgICAgICAgIGNhc2UgUmVu
ZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNlYXJjaEVudHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTZWFyY2hFbnRyeT4oKTsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lU2VhcmNoRW50cnk+KCk7CiAgICAgICAgIGNhc2Ug
UmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlNwaW5CdXR0b246Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNwaW5CdXR0b24+KCk7CiAgICAgICAgIGNhc2Ug
UmVuZGVyVGhlbWVXaWRnZXQ6OlR5cGU6OlZlcnRpY2FsU2xpZGVyOgotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVTbGlkZXI+KEdUS19PUklFTlRBVElPTl9W
RVJUSUNBTCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRl
cj4oR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdp
ZGdldDo6VHlwZTo6SG9yaXpvbnRhbFNsaWRlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclRoZW1lU2xpZGVyPihHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVNsaWRlcj4oR1RLX09S
SUVOVEFUSU9OX0hPUklaT05UQUwpOwogICAgICAgICBjYXNlIFJlbmRlclRoZW1lV2lkZ2V0OjpU
eXBlOjpQcm9ncmVzc0JhcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJl
bmRlclRoZW1lUHJvZ3Jlc3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVy
bWluYXRlKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRlclRoZW1lUHJvZ3Jl
c3NCYXI+KFJlbmRlclRoZW1lUHJvZ3Jlc3NCYXI6Ok1vZGU6OkRldGVybWluYXRlKTsKICAgICAg
ICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6SW5kZXRlcm1pbmF0ZVByb2dyZXNzQmFy
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVQcm9ncmVz
c0Jhcj4oUmVuZGVyVGhlbWVQcm9ncmVzc0Jhcjo6TW9kZTo6SW5kZXRlcm1pbmF0ZSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVByb2dyZXNzQmFyPihSZW5kZXJU
aGVtZVByb2dyZXNzQmFyOjpNb2RlOjpJbmRldGVybWluYXRlKTsKICAgICAgICAgY2FzZSBSZW5k
ZXJUaGVtZVdpZGdldDo6VHlwZTo6TGlzdFZpZXc6Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxSZW5kZXJUaGVtZUxpc3RWaWV3PigpOworICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UmVuZGVyVGhlbWVMaXN0Vmlldz4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVt
ZVdpZGdldDo6VHlwZTo6SWNvbjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlclRoZW1lSWNvbj4oKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clRoZW1lSWNvbj4oKTsKICAgICAgICAgY2FzZSBSZW5kZXJUaGVtZVdpZGdldDo6VHlwZTo6V2lu
ZG93OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVXaW5k
b3c+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZVdpbmRvdz4o
KTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xMzksNyArMTM5LDcgQEAgUmVuZGVyVGhlbWVTY3JvbGxiYXI6OlJl
bmRlclRoZW1lU2Nyb2xsYmFyKEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBNb2RlIG1vZGUK
ICAgICBpbmZvLnR5cGUgPSBSZW5kZXJUaGVtZUdhZGdldDo6VHlwZTo6R2VuZXJpYzsKICAgICBp
bmZvLm5hbWUgPSAiY29udGVudHMiOwogICAgIGluZm8uY2xhc3NMaXN0LmNsZWFyKCk7Ci0gICAg
bV9jb250ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8s
IEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgY2hpbGRyZW4sIG1fc2Nyb2xsYmFyLmdldCgpKTsK
KyAgICBtX2NvbnRlbnRzID0gbWFrZVVuaXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywg
R1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCBjaGlsZHJlbiwgbV9zY3JvbGxiYXIuZ2V0KCkpOwog
ICAgIGluZm8ubmFtZSA9ICJzbGlkZXIiOwogICAgIG1fc2xpZGVyID0gUmVuZGVyVGhlbWVHYWRn
ZXQ6OmNyZWF0ZShpbmZvLCBtX2NvbnRlbnRzLT5jaGlsZChtX3Ryb3VnaFBvc2l0aW9uKSk7CiB9
CkBAIC0xOTcsNyArMTk3LDcgQEAgUmVuZGVyVGhlbWVDb21ib0JveDo6UmVuZGVyVGhlbWVDb21i
b0JveCgpCiAgICAgfTsKICAgICBpbmZvLm5hbWUgPSAiYm94IjsKICAgICBpbmZvLmNsYXNzTGlz
dCA9IHsgImhvcml6b250YWwiLCAibGlua2VkIiB9OwotICAgIG1fYm94ID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJUaGVtZUJveEdhZGdldD4oaW5mbywgR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwsIGNoaWxkcmVuLCBtX2NvbWJvQm94LmdldCgpKTsKKyAgICBtX2JveCA9IG1ha2VVbmlxdWU8
UmVuZGVyVGhlbWVCb3hHYWRnZXQ+KGluZm8sIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCBj
aGlsZHJlbiwgbV9jb21ib0JveC5nZXQoKSk7CiAgICAgUmVuZGVyVGhlbWVHYWRnZXQqIGJ1dHRv
biA9IG1fYm94LT5jaGlsZCgwKTsKICAgICBpbmZvLmNsYXNzTGlzdC5yZW1vdmVMYXN0KCk7CiAg
ICAgbV9idXR0b25Cb3ggPSBSZW5kZXJUaGVtZUdhZGdldDo6Y3JlYXRlKGluZm8sIGJ1dHRvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDg0MDdjMTEwMWRkZDZkYjZlMzc4ZGVm
Y2IzYWI4MjZiZjcyNjQ1NGQuLjc4Njk3ZWIwMDAwZjdmN2I4MmE3ZDBlY2Y1Zjk4NWExZTkyODlj
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wg
Qk1QSW1hZ2VEZWNvZGVyOjpkZWNvZGVIZWxwZXIoYm9vbCBvbmx5U2l6ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX3JlYWRlcikgewotICAgICAgICBtX3JlYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1n
RGF0YU9mZnNldCwgZmFsc2UpOworICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8Qk1QSW1h
Z2VSZWFkZXI+KHRoaXMsIG1fZGVjb2RlZE9mZnNldCwgaW1nRGF0YU9mZnNldCwgZmFsc2UpOwog
ICAgICAgICBtX3JlYWRlci0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3YmE3ZWQ5MTAxY2UyNWE5YmY2ZTIzMTA4N2JmMGJj
MTE0Y2MyMmQ2Li40ZjM0ODdlMzM0NzY0MDU0NzRjZjg2YjVjNjA2ZDJjMTk4OGM3Y2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgR0lGSW1h
Z2VEZWNvZGVyOjpkZWNvZGUodW5zaWduZWQgaGFsdEF0RnJhbWUsIEdJRlF1ZXJ5IHF1ZXJ5LCBi
b29sIGFsbERhdGFSCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpIHsKLSAg
ICAgICAgbV9yZWFkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsK
KyAgICAgICAgbV9yZWFkZXIgPSBtYWtlVW5pcXVlPEdJRkltYWdlUmVhZGVyPih0aGlzKTsKICAg
ICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhLmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuY3BwCmluZGV4IDFjY2E1ZTU5ZWViMzUxYjA1OGEyMWRiMTM0ZjY0Mzc5MWU1
MDc3Y2EuLmQ3NzE4NmVhOTczOWJkZmIyYzU2MjI4ZWU0Y2Y1ZTg4MjhkODg1OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlUmVhZGVyLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIGJvb2wgR0lGRnJhbWVDb250
ZXh0OjpkZWNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgV2Vi
Q29yZTo6CiAgICAgICAgIGlmICghaXNEYXRhU2l6ZURlZmluZWQoKSB8fCAhaXNIZWFkZXJEZWZp
bmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBtX2x6d0NvbnRleHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEdJRkxaV0NvbnRleHQ+KGNsaWVudCwgdGhpcyk7CisgICAgICAg
IG1fbHp3Q29udGV4dCA9IG1ha2VVbmlxdWU8R0lGTFpXQ29udGV4dD4oY2xpZW50LCB0aGlzKTsK
ICAgICAgICAgaWYgKCFtX2x6d0NvbnRleHQtPnByZXBhcmVUb0RlY29kZSgpKSB7CiAgICAgICAg
ICAgICBtX2x6d0NvbnRleHQgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNzg2LDcgKzc4Niw3IEBAIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OnNldFJlbWFpbmluZ0J5dGVz
KHNpemVfdCByZW1haW5pbmdCeXRlcykKIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OmFkZEZyYW1lSWZO
ZWNlc3NhcnkoKQogewogICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5KCkgfHwgbV9mcmFtZXMubGFz
dCgpLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7CisgICAgICAgIG1fZnJhbWVz
LmFwcGVuZChtYWtlVW5pcXVlPEdJRkZyYW1lQ29udGV4dD4obV9mcmFtZXMuc2l6ZSgpKSk7CiB9
CiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgbWV0aG9kIHRvIGNsb3NlIHRvIGRvTFpXKCkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDE4NzBiYjE2MGI4NDk0OGYwYjU5ZGU0NTExNjM2
YmE0YzBmMzhmMmUuLmZmNmExYzg3YWU2ZjA1YjQ5Y2NjMTI4YWJlMDVjMzAzZDZlZWJhZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBJQ09J
bWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgICAgICAgICAgLy8g
V2UgbmVlZCB0byBoYXZlIGFscmVhZHkgc2l6ZWQgbV9mcmFtZUJ1ZmZlckNhY2hlIGJlZm9yZSB0
aGlzLCBhbmQKICAgICAgICAgICAgIC8vIHdlIG11c3Qgbm90IHJlc2l6ZSBpdCBhZ2FpbiBsYXRl
ciAoc2VlIGNhdXRpb24gaW4gZnJhbWVDb3VudCgpKS4KICAgICAgICAgICAgIEFTU0VSVChtX2Zy
YW1lQnVmZmVyQ2FjaGUuc2l6ZSgpID09IG1fZGlyRW50cmllcy5zaXplKCkpOwotICAgICAgICAg
ICAgbV9ibXBSZWFkZXJzW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8Qk1QSW1hZ2VSZWFkZXI+
KHRoaXMsIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOworICAgICAgICAgICAgbV9i
bXBSZWFkZXJzW2luZGV4XSA9IG1ha2VVbmlxdWU8Qk1QSW1hZ2VSZWFkZXI+KHRoaXMsIGRpckVu
dHJ5Lm1faW1hZ2VPZmZzZXQsIDAsIHRydWUpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2lu
ZGV4XS0+c2V0RGF0YShtX2RhdGEuZ2V0KCkpOwogICAgICAgICAgICAgbV9ibXBSZWFkZXJzW2lu
ZGV4XS0+c2V0QnVmZmVyKCZtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZWJmZTQ1MzBmNzE4NTMwNzJlM2E1
M2QyZmNjNjYwZTdhMDk2Y2Y0My4uMGMwNTQ5YjVhM2VlMDRhZjI5Y2E3ZDYwNjAzNWZjZmU2MTc0
ODUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC02NTMsNyArNjUzLDcg
QEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0gICAg
ICAgIG1fcmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxKUEVHSW1hZ2VSZWFkZXI+KHRoaXMpOwor
ICAgICAgICBtX3JlYWRlciA9IG1ha2VVbmlxdWU8SlBFR0ltYWdlUmVhZGVyPih0aGlzKTsKIAog
ICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVk
IGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCBjMThhMzliNTkxMzNhMzE4ZjE1MTA1ODFlOGY5MWViZGQ3Njg3
OWFiLi42MmNiOWIyMmEwMWYyNmU5ZjJjZDQxZGVhMzgxYjM2MzY4OTdlZTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgUE5HSW1hZ2VEZWNv
ZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgdW5zaWduZWQgaGFsdEF0RnJhbWUsIGJvb2wgYWxs
RGF0YVJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZWFkZXIpCi0gICAgICAgIG1f
cmVhZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CisgICAgICAg
IG1fcmVhZGVyID0gbWFrZVVuaXF1ZTxQTkdJbWFnZVJlYWRlcj4odGhpcyk7CiAKICAgICAvLyBJ
ZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2ZSByZWNlaXZlZCBhbGwgdGhl
IGRhdGEsIGRlY29kaW5nCiAgICAgLy8gaGFzIGZhaWxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLm1tCmluZGV4IDIwOWY4OGY0N2EzYjdjZGMwMTQz
ZGU5MmUyNGJhZGRmOTY2NGI1ZjQuLmNhZTNkY2YxNjQ3OTZjZWVjYjY4YjI0NDhmMTEzM2MxMGVj
OWMyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
Q2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5tbQpAQCAtNjksNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBMZWdhY3lUaWxlQ2Fj
aGU6OkxlZ2FjeVRpbGVDYWNoZShXQUtXaW5kb3cqIHdpbmRvdykKICAgICA6IG1fd2luZG93KHdp
bmRvdykKICAgICAsIG1fdG9tYnN0b25lKGFkb3B0TlMoW1tMZWdhY3lUaWxlQ2FjaGVUb21ic3Rv
bmUgYWxsb2NdIGluaXRdKSkKLSAgICAsIG1fem9vbWVkT3V0VGlsZUdyaWQoc3RkOjptYWtlX3Vu
aXF1ZTxMZWdhY3lUaWxlR3JpZD4oKnRoaXMsIG1fdGlsZVNpemUpKQorICAgICwgbV96b29tZWRP
dXRUaWxlR3JpZChtYWtlVW5pcXVlPExlZ2FjeVRpbGVHcmlkPigqdGhpcywgbV90aWxlU2l6ZSkp
CiAgICAgLCBtX3RpbGVDcmVhdGlvblRpbWVyKCp0aGlzLCAmTGVnYWN5VGlsZUNhY2hlOjp0aWxl
Q3JlYXRpb25UaW1lckZpcmVkKQogewogICAgIFtob3N0TGF5ZXIoKSBpbnNlcnRTdWJsYXllcjpt
X3pvb21lZE91dFRpbGVHcmlkLT50aWxlSG9zdExheWVyKCkgYXRJbmRleDowXTsKQEAgLTIzNiw3
ICsyMzYsNyBAQCB2b2lkIExlZ2FjeVRpbGVDYWNoZTo6Y29tbWl0U2NhbGVDaGFuZ2UoKQogCiAg
ICAgaWYgKG1fY3VycmVudFNjYWxlICE9IG1fem9vbWVkT3V0VGlsZUdyaWQtPnNjYWxlKCkpIHsK
ICAgICAgICAgaWYgKCFtX3pvb21lZEluVGlsZUdyaWQpIHsKLSAgICAgICAgICAgIG1fem9vbWVk
SW5UaWxlR3JpZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGVnYWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3Rp
bGVTaXplKTsKKyAgICAgICAgICAgIG1fem9vbWVkSW5UaWxlR3JpZCA9IG1ha2VVbmlxdWU8TGVn
YWN5VGlsZUdyaWQ+KCp0aGlzLCBtX3RpbGVTaXplKTsKICAgICAgICAgICAgIFtob3N0TGF5ZXIo
KSBhZGRTdWJsYXllcjptX3pvb21lZEluVGlsZUdyaWQtPnRpbGVIb3N0TGF5ZXIoKV07CiAgICAg
ICAgICAgICBob3N0TGF5ZXJTaXplQ2hhbmdlZCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE5MWFjNzY5NjIxNTEyMTUz
ZGJkY2IwNzhkZDY2ZjQ2NTUzYmMyMWQuLjAyNzFiOTNlNzA1Y2UyYzQyZDYzMmZlMmRiMjlhYTQ2
ZTgzNmQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCkBAIC02NiwxMiArNjYsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJh
Z0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGFzdGVib2FyZD4oImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9h
cmQiKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0
ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpKTsK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wYXN0ZWJvYXJkTmFt
ZSgpKTsKIH0KIAogI2VuZGlmCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihjaGFuZ2VDb3VudEZvclBhc3RlYm9hcmQoKSk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY2hhbmdlQ291bnRGb3JQYXN0ZWJvYXJkKCkp
OwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNr
TG9vay5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KaW5kZXgg
YTlkOWU0NzEwNTAxN2Q2NGQ4MmUzN2M4YWEzMWNlNjQ2OTAyNTY4NS4uYzJiNWEwYjA4YmRmNzVl
OGMwMWNkOWJkMmQ1MWMzMTQ5MzA1ZjM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UXVpY2tMb29rLm1tCkBAIC04NCw3ICs4NCw3IEBAIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IHJl
Z2lzdGVyUUxQcmV2aWV3Q29udmVydGVySWZOZWVkZWQoTlNVUkwgKnVybCwgTlNTdHJpbmcKICAg
ICBpZiAoW1FMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0
OnVwZGF0ZWRNSU1FVHlwZS5nZXQoKV0pIHsKICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB1
dGkgPSBhZG9wdE5TKFBBTDo6c29mdExpbmtfUXVpY2tMb29rX1FMVHlwZUNvcHlVVElGb3JVUkxB
bmRNaW1lVHlwZSh1cmwsIHVwZGF0ZWRNSU1FVHlwZS5nZXQoKSkpOwogCi0gICAgICAgIGF1dG8g
Y29udmVydGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcmV2aWV3Q29udmVydGVyPihkYXRhLCB1dGku
Z2V0KCkpOworICAgICAgICBhdXRvIGNvbnZlcnRlciA9IG1ha2VVbmlxdWU8UHJldmlld0NvbnZl
cnRlcj4oZGF0YSwgdXRpLmdldCgpKTsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZXZpZXdS
ZXF1ZXN0ID0gY29udmVydGVyLT5wcmV2aWV3UmVxdWVzdCgpOwogCiAgICAgICAgIC8vIFdlIHVz
ZSBbcmVxdWVzdCBVUkxdIGhlcmUgaW5zdGVhZCBvZiB1cmwgc2luY2UgaXQgd2lsbCBiZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5l
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9SZW1vdGVDb21tYW5kTGlzdGVu
ZXJJT1MubW0KaW5kZXggMTA3Yzc3Yzc1M2VhYjdkOTJkYTI5NDg3Y2E2ZjY1ZjgwNzA0ODIxMy4u
NmQ5Y2NlMTViODc0ZjE1ZjE1NDg3NWVhMGVlNmI5ZjEwMzVhODM2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1JlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUmVtb3RlQ29tbWFuZExpc3RlbmVySU9TLm1t
CkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXI+
IFJlbW90ZUNvbW1hbmRMaXN0ZW5lcjo6Y3JlYXRlKFJlbW90ZUNvbW1hCiAgICAgaWYgKCFNZWRp
YVBsYXllckxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M+KGNsaWVudCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVySU9TPihjbGllbnQpOwogfQog
CiBSZW1vdGVDb21tYW5kTGlzdGVuZXJJT1M6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lcklPUyhSZW1v
dGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5tbQppbmRleCAwMWYwYTliYjIwYTI0OGI2OTk4
ODU2NDcwYWVlMzc0YTk4Y2ZhNTFjLi5lZDYzMmVhNWUzZjU1OTdlOWQ3NmZkMmU1NTY5NTYxZmU2
YzRjMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5p
bWF0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbEFuaW1h
dG9ySU9TLm1tCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKFNjcm9sbGFi
bGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxBbmltYXRvcklPUz4oc2Nyb2xsYWJsZUFyZWEpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFNjcm9sbEFuaW1hdG9ySU9TPihzY3JvbGxhYmxlQXJlYSk7CiB9CiAKIFNjcm9sbEFuaW1hdG9y
SU9TOjpTY3JvbGxBbmltYXRvcklPUyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQ
RS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5j
cHAKaW5kZXggMDU0M2VkNWU5ZmM5ZmNmZTNiYmFhNDAzNTVlNDA3MmY5ZjNjM2Y0MC4uZjhhNjFl
YzcwYzBjMWE0Y2QzNzdmMGU3Y2Q2NzZlZmI5ZGU1YmM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQ
YXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFBhc3RlYm9hcmQ+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2Fy
ZD4oKTsKIH0KIAogUGFzdGVib2FyZDo6UGFzdGVib2FyZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDUxNTIwZGNiYmVhNTkyMTg1YzMyNjcw
MmNiYTY5ZmU4OGI0ZDRkZGUuLjhlYjE1Y2Y4ODUyZDk4NTc0NDdlMDU5YzM4YWNhZWJhMjM0MTVk
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBA
IC0xMDAsNyArMTAwLDcgQEAgUGFzdGVib2FyZDo6UGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvbWkKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewogICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGFzdGVib2FyZD4oTlNHZW5lcmFsUGJvYXJkKTsKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYXN0ZWJvYXJkPihOU0dlbmVyYWxQYm9hcmQpOwogICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogfQogCkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkKIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgp
CiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihOU0RyYWdQYm9hcmQpOworICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KE5TRHJhZ1Bib2FyZCk7CiAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0
ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGFzdGVi
b2FyZE5hbWUoKSwgZHJhZ0RhdGEuZmlsZU5hbWVzKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCksIGRyYWdEYXRhLmZpbGVOYW1l
cygpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUmVtb3RlQ29tbWFuZExpc3RlbmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1JlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYy5tbQppbmRleCAwNWNjMDg5NTdlMWQ1MDEyNGRk
NjMyZTJhNGM4OTIxMjk4OTY5NjExLi4xYWEyY2Q4MDEzMmYyYzIxZWUzOGI5ZmZiZGI4MzM3M2Ji
ZjRjMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUmVtb3RlQ29t
bWFuZExpc3RlbmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9SZW1v
dGVDb21tYW5kTGlzdGVuZXJNYWMubW0KQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQ29tbWFuZExpc3RlbmVyPiBSZW1vdGVDb21t
YW5kTGlzdGVuZXI6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVDb21tYW5kTGlzdGVuZXJNYWM+
KGNsaWVudCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlQ29tbWFuZExpc3RlbmVyTWFj
PihjbGllbnQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRMaXN0ZW5lck1hYzo6dXBkYXRlU3Vw
cG9ydGVkQ29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tCmluZGV4IGE4MzE3NTEyMmVjMmU0YjZiNmRlNTFiZTZkZjUyNjRiNDFh
MWY4YzQuLjY4NjBlMzNjM2EzYjIxNTYzMDVmYjMxYWY0MjdkYzQ5MDIzNTg3YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTY5
Nyw3ICs2OTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsQW5pbWF0b3JN
YWM+KHNjcm9sbGFibGVBcmVhKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRv
ck1hYz4oc2Nyb2xsYWJsZUFyZWEpOwogfQogCiBTY3JvbGxBbmltYXRvck1hYzo6U2Nyb2xsQW5p
bWF0b3JNYWMoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFW
RkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IDFiOWRjNTM0NWI4ODFlYjM2ZDk2ZmNlMzU4
MmRmMGU1NGExMzg1YmEuLmUyNDQ1YmM4MjNmODZlMDU1YjBlNTc4NzdkNmNmNTMxYTRmZmNjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4gTWVkaWFS
ZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKICAgICBpZiAoIXdyaXRlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVJlY29y
ZGVyUHJpdmF0ZUFWRkltcGw+KHdyaXRlci5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGF1ZGlv
VHJhY2tJZCksIFdURk1vdmUodmlkZW9UcmFja0lkKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsPih3cml0ZXIucmVsZWFzZU5vbk51bGwoKSwgV1RG
TW92ZShhdWRpb1RyYWNrSWQpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJZCkpOwogfQogCiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZUFWRkltcGw6Ok1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbChSZWY8TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI+JiYgd3JpdGVyLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQs
IFN0cmluZyYmIHZpZGVvVHJhY2tJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggZGI5NGZkYWY4M2E4YWJkNjdhZmNmZDZlYTM2
OWZhYTg5YzQ2YzNlMi4uNTlhYjM4NDBmZDczNmNhMTQ1MDE2YzdmNjYwZWNhM2IwOTAzMjQ4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZS5j
cHAKQEAgLTkxLDE0ICs5MSwxNCBAQCBBdWRpb0NhcHR1cmVGYWN0b3J5JiBHU3RyZWFtZXJBdWRp
b0NhcHR1cmVTb3VyY2U6OmZhY3RvcnkoKQogCiBHU3RyZWFtZXJBdWRpb0NhcHR1cmVTb3VyY2U6
OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZShHU3RyZWFtZXJDYXB0dXJlRGV2aWNlIGRldmlj
ZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBTdHJpbmcgeyBkZXZpY2UucGVyc2lzdGVudElkKCkg
fSwgU3RyaW5nIHsgZGV2aWNlLmxhYmVsKCkgfSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBt
X2NhcHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oZGV2aWNl
KSkKKyAgICAsIG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPihk
ZXZpY2UpKQogewogICAgIGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQogCiBHU3RyZWFt
ZXJBdWRpb0NhcHR1cmVTb3VyY2U6OkdTdHJlYW1lckF1ZGlvQ2FwdHVyZVNvdXJjZShTdHJpbmcm
JiBkZXZpY2VJRCwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgaGFzaFNhbHQpCiAgICAgOiBSZWFs
dGltZU1lZGlhU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBXVEZNb3Zl
KGRldmljZUlEKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShoYXNoU2FsdCkpCi0gICAgLCBtX2Nh
cHR1cmVyKHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyQXVkaW9DYXB0dXJlcj4oKSkKKyAgICAs
IG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJBdWRpb0NhcHR1cmVyPigpKQogewogICAg
IGluaXRpYWxpemVHU3RyZWFtZXJEZWJ1ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJNZWRpYVN0cmVhbVNvdXJjZS5jcHAKaW5kZXggZDVkZmMzODQxM2U2NTMwOGRiMTU3
OTZiMmJlYzkzZTkwYTU2OTEzOC4uMDgzZDQ0NzI4MzlmOWJiYzNmNjk0NjZkMTFmMzg0OTEzNjY3
YzZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lck1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFTdHJlYW1Tb3Vy
Y2UuY3BwCkBAIC00MzUsOCArNDM1LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVh
bV9zcmNfY2xhc3NfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNyY0NsYXNzKiBrbGFzcykKIAogc3Rh
dGljIHZvaWQgd2Via2l0X21lZGlhX3N0cmVhbV9zcmNfaW5pdChXZWJLaXRNZWRpYVN0cmVhbVNy
Yyogc2VsZikKIHsKLSAgICBzZWxmLT5tZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtVHJhY2tPYnNlcnZlcj4oc2VsZik7Ci0gICAgc2Vs
Zi0+bWVkaWFTdHJlYW1PYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0TWVkaWFTdHJl
YW1PYnNlcnZlcj4oc2VsZik7CisgICAgc2VsZi0+bWVkaWFTdHJlYW1UcmFja09ic2VydmVyID0g
bWFrZVVuaXF1ZTxXZWJLaXRNZWRpYVN0cmVhbVRyYWNrT2JzZXJ2ZXI+KHNlbGYpOworICAgIHNl
bGYtPm1lZGlhU3RyZWFtT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdE1lZGlhU3RyZWFtT2Jz
ZXJ2ZXI+KHNlbGYpOwogICAgIHNlbGYtPmZsb3dDb21iaW5lciA9IGdzdF9mbG93X2NvbWJpbmVy
X25ldygpOwogICAgIHNlbGYtPnZpZGVvU3JjLnJlc2V0KHRydWUpOwogICAgIHNlbGYtPmF1ZGlv
U3JjLnJlc2V0KGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVv
Q2FwdHVyZVNvdXJjZS5jcHAKaW5kZXggZTVkOWIwZTAyNzZlZGRhNWRiZDUyMGJjMTBmMzUxODBk
MDE1ZDY5Yi4uOTdiZTFmMTJmYmIyMmRjMzU4Yzk5YzgzOWY5ODFmMTY1NmE4ZTEyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKQEAg
LTEyNywxNCArMTI3LDE0IEBAIERpc3BsYXlDYXB0dXJlRmFjdG9yeSYgR1N0cmVhbWVyVmlkZW9D
YXB0dXJlU291cmNlOjpkaXNwbGF5RmFjdG9yeSgpCiAKIEdTdHJlYW1lclZpZGVvQ2FwdHVyZVNv
dXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyYmIGRldmljZUlELCBTdHJp
bmcmJiBuYW1lLCBTdHJpbmcmJiBoYXNoU2FsdCwgY29uc3QgZ2NoYXIgKnNvdXJjZV9mYWN0b3J5
KQogICAgIDogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UoV1RGTW92ZShkZXZpY2VJRCksIFdU
Rk1vdmUobmFtZSksIFdURk1vdmUoaGFzaFNhbHQpKQotICAgICwgbV9jYXB0dXJlcihzdGQ6Om1h
a2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KHNvdXJjZV9mYWN0b3J5KSkKKyAgICAs
IG1fY2FwdHVyZXIobWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihzb3VyY2VfZmFj
dG9yeSkpCiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CiAKIEdTdHJlYW1l
clZpZGVvQ2FwdHVyZVNvdXJjZTo6R1N0cmVhbWVyVmlkZW9DYXB0dXJlU291cmNlKEdTdHJlYW1l
ckNhcHR1cmVEZXZpY2UgZGV2aWNlLCBTdHJpbmcmJiBoYXNoU2FsdCkKICAgICA6IFJlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlKFN0cmluZyB7IGRldmljZS5wZXJzaXN0ZW50SWQoKSB9LCBTdHJp
bmcgeyBkZXZpY2UubGFiZWwoKSB9LCBXVEZNb3ZlKGhhc2hTYWx0KSkKLSAgICAsIG1fY2FwdHVy
ZXIoc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJWaWRlb0NhcHR1cmVyPihkZXZpY2UpKQorICAg
ICwgbV9jYXB0dXJlcihtYWtlVW5pcXVlPEdTdHJlYW1lclZpZGVvQ2FwdHVyZXI+KGRldmljZSkp
CiB7CiAgICAgaW5pdGlhbGl6ZUdTdHJlYW1lckRlYnVnKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9F
bmNvZGVyRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvR1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeS5jcHAKaW5kZXggY2QwZTZjZDQz
ZjVlNDBiNDg4MDI5ZWJlNGRhNGIyMTUyNzk3MDBkYi4uODM1ODFlODVhMzk2MmQ5N2UwMTc0M2Ix
MGU1NmNlYWExNTFjZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0dTdHJlYW1lclZpZGVvRW5jb2RlckZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9HU3RyZWFtZXJW
aWRlb0VuY29kZXJGYWN0b3J5LmNwcApAQCAtNTEzLDE0ICs1MTMsMTQgQEAgc3RkOjp1bmlxdWVf
cHRyPHdlYnJ0Yzo6VmlkZW9FbmNvZGVyPiBHU3RyZWFtZXJWaWRlb0VuY29kZXJGYWN0b3J5OjpD
cmVhdGVWaWRlb0UKICAgICAgICAgZ19vYmplY3RfZ2V0KHdlYnJ0Y2VuY29kZXIuZ2V0KCksICJl
bmNvZGVyIiwgJmVuY29kZXIub3V0UHRyKCksIE5VTEwpOwogCiAgICAgICAgIGlmIChlbmNvZGVy
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVlA4RW5jb2Rl
cj4oZm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEdTdHJlYW1lclZQOEVu
Y29kZXI+KGZvcm1hdCk7CiAKICAgICAgICAgR1NUX0lORk8oIlVzaW5nIFZQOCBFbmNvZGVyIGZy
b20gTGliV2ViUlRDLiIpOwotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTx3ZWJydGM6
OkxpYnZweFZwOEVuY29kZXI+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazx3ZWJydGM6OkxpYnZweFZwOEVuY29kZXI+KCk7CiAgICAgfQogCiAgICAg
aWYgKGZvcm1hdC5uYW1lID09IGNyaWNrZXQ6OmtIMjY0Q29kZWNOYW1lKQotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHU3RyZWFtZXJIMjY0RW5jb2Rlcj4oZm9ybWF0KTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8R1N0cmVhbWVySDI2NEVuY29kZXI+KGZvcm1hdCk7CiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3Bw
CmluZGV4IDY5MTFjNmZhZTQ0ZDY3YmI4NGJiYTAxNTJmNjMwYjlhZmNlMDNjYjAuLjc0NTMzYzVm
YTRkZjBkNGU1YTY0ZDc1Y2U2MjdiMzI0MmM0NmI4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcApAQCAtODIsNyArODIsNyBAQCBjbGFzcyBCYXNpY1BhY2tldFNvY2tl
dEZhY3RvcnkgOiBwdWJsaWMgcnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3RvcnkgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEJhc2ljUGFja2V0
U29ja2V0RmFjdG9yeShydGM6OlRocmVhZCYgbmV0d29ya1RocmVhZCkKLSAgICAgICAgOiBtX3Nv
Y2tldEZhY3RvcnkobWFrZVVuaXF1ZVJlZjxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4o
Jm5ldHdvcmtUaHJlYWQpKQorICAgICAgICA6IG1fc29ja2V0RmFjdG9yeShtYWtlVW5pcXVlUmVm
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OkJhc2ljUGFja2V0U29ja2V0RmFjdG9yeT4oJm5l
dHdvcmtUaHJlYWQpKQogICAgIHsKICAgICB9CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0aWMg
dm9pZCBpbml0aWFsaXplUGVlckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyhQZWVyQ29ubmVj
dGlvbkZhY3RvcnlBbmRUaAogICAgIHJlc3VsdCA9IGZhY3RvcnlBbmRUaHJlYWRzLnNpZ25hbGlu
Z1RocmVhZC0+U3RhcnQoKTsKICAgICBBU1NFUlQocmVzdWx0KTsKIAotICAgIGZhY3RvcnlBbmRU
aHJlYWRzLmF1ZGlvRGV2aWNlTW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENBdWRp
b01vZHVsZT4oKTsKKyAgICBmYWN0b3J5QW5kVGhyZWFkcy5hdWRpb0RldmljZU1vZHVsZSA9IG1h
a2VVbmlxdWU8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUGVl
ckNvbm5lY3Rpb25GYWN0b3J5QW5kVGhyZWFkcyYgc3RhdGljRmFjdG9yeUFuZFRocmVhZHMoKQpA
QCAtMjg5LDEwICsyODksMTAgQEAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWUKICAgICBhdXRvJiBm
YWN0b3J5QW5kVGhyZWFkcyA9IGdldFN0YXRpY0ZhY3RvcnlBbmRUaHJlYWRzKG1fdXNlTmV0d29y
a1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIpOwogCiAgICAgaWYgKCFmYWN0b3J5QW5kVGhyZWFkcy5u
ZXR3b3JrTWFuYWdlcikKLSAgICAgICAgZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAg
ZmFjdG9yeUFuZFRocmVhZHMubmV0d29ya01hbmFnZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxydGM6OkJhc2ljTmV0d29ya01hbmFnZXI+KCk7CiAKICAgICBpZiAoIWZhY3Rv
cnlBbmRUaHJlYWRzLnBhY2tldFNvY2tldEZhY3RvcnkpCi0gICAgICAgIGZhY3RvcnlBbmRUaHJl
YWRzLnBhY2tldFNvY2tldEZhY3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljUGFja2V0U29j
a2V0RmFjdG9yeT4oKmZhY3RvcnlBbmRUaHJlYWRzLm5ldHdvcmtUaHJlYWQpOworICAgICAgICBm
YWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5ID0gbWFrZVVuaXF1ZTxCYXNpY1Bh
Y2tldFNvY2tldEZhY3Rvcnk+KCpmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkKTsKICAg
ICBmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5LT5zZXREaXNhYmxlTm9uTG9j
YWxob3N0Q29ubmVjdGlvbnMobV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMpOwogCiAg
ICAgcmV0dXJuIGNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCAqZmFjdG9yeUFuZFRocmVh
ZHMubmV0d29ya01hbmFnZXIsICpmYWN0b3J5QW5kVGhyZWFkcy5wYWNrZXRTb2NrZXRGYWN0b3J5
LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBudWxscHRyKTsKQEAgLTMxNSw3ICszMTUsNyBAQCBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gTGliV2Vi
UlRDUHJvdmlkZXI6OmNyZWF0ZVBlZQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPGNyaWNrZXQ6OkJh
c2ljUG9ydEFsbG9jYXRvcj4gcG9ydEFsbG9jYXRvcjsKICAgICBmYWN0b3J5QW5kVGhyZWFkcy5z
aWduYWxpbmdUaHJlYWQtPkludm9rZTx2b2lkPihSVENfRlJPTV9IRVJFLCBbJl0oKSB7Ci0gICAg
ICAgIGF1dG8gYmFzaWNQb3J0QWxsb2NhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxjcmlja2V0OjpC
YXNpY1BvcnRBbGxvY2F0b3I+KCZuZXR3b3JrTWFuYWdlciwgJnBhY2tldFNvY2tldEZhY3Rvcnkp
OworICAgICAgICBhdXRvIGJhc2ljUG9ydEFsbG9jYXRvciA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPGNyaWNrZXQ6OkJhc2ljUG9ydEFsbG9jYXRvcj4oJm5ldHdvcmtNYW5hZ2Vy
LCAmcGFja2V0U29ja2V0RmFjdG9yeSk7CiAgICAgICAgIGlmICghbV9lbmFibGVFbnVtZXJhdGlu
Z0FsbE5ldHdvcmtJbnRlcmZhY2VzKQogICAgICAgICAgICAgYmFzaWNQb3J0QWxsb2NhdG9yLT5z
ZXRfZmxhZ3MoYmFzaWNQb3J0QWxsb2NhdG9yLT5mbGFncygpIHwgY3JpY2tldDo6UE9SVEFMTE9D
QVRPUl9ESVNBQkxFX0FEQVBURVJfRU5VTUVSQVRJT04pOwogICAgICAgICBwb3J0QWxsb2NhdG9y
ID0gV1RGTW92ZShiYXNpY1BvcnRBbGxvY2F0b3IpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHJ0Yzo6
UlRDQ2VydGlmaWNhdGVHZW5lcmF0b3ImIExpYldlYlJUQ1Byb3ZpZGVyOjpjZXJ0aWZpY2F0ZUdl
bmVyYXRvcigpCiB7CiAgICAgYXV0byYgZmFjdG9yeUFuZFRocmVhZHMgPSBnZXRTdGF0aWNGYWN0
b3J5QW5kVGhyZWFkcyhtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyKTsKICAgICBp
ZiAoIWZhY3RvcnlBbmRUaHJlYWRzLmNlcnRpZmljYXRlR2VuZXJhdG9yKQotICAgICAgICBmYWN0
b3J5QW5kVGhyZWFkcy5jZXJ0aWZpY2F0ZUdlbmVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8cnRj
OjpSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvcj4oZmFjdG9yeUFuZFRocmVhZHMuc2lnbmFsaW5nVGhy
ZWFkLmdldCgpLCBmYWN0b3J5QW5kVGhyZWFkcy5uZXR3b3JrVGhyZWFkLmdldCgpKTsKKyAgICAg
ICAgZmFjdG9yeUFuZFRocmVhZHMuY2VydGlmaWNhdGVHZW5lcmF0b3IgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxydGM6OlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yPihmYWN0b3J5
QW5kVGhyZWFkcy5zaWduYWxpbmdUaHJlYWQuZ2V0KCksIGZhY3RvcnlBbmRUaHJlYWRzLm5ldHdv
cmtUaHJlYWQuZ2V0KCkpOwogCiAgICAgcmV0dXJuICpmYWN0b3J5QW5kVGhyZWFkcy5jZXJ0aWZp
Y2F0ZUdlbmVyYXRvcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXJHU3RyZWFtZXIuY3BwCmluZGV4IDE1ZTJhODc4OWMwN2ZiMGQwYWVjNmY2YzIwZjdiYjE3ZmE4
ZGI3ZDIuLjViODI3M2IwODUxOTZmZmQzMGU0ZDdhN2Y2NTUxMGJlYzA4MDMxNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtNDQs
MTIgKzQ0LDEyIEBAIGJvb2wgTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpCiAK
IHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlZpZGVvRGVjb2RlckZhY3Rvcnk+IExpYldlYlJUQ1By
b3ZpZGVyR1N0cmVhbWVyOjpjcmVhdGVEZWNvZGVyRmFjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8R1N0cmVhbWVyVmlkZW9EZWNvZGVyRmFjdG9yeT4oKTsKKyAgICByZXR1
cm4gbWFrZVVuaXF1ZTxHU3RyZWFtZXJWaWRlb0RlY29kZXJGYWN0b3J5PigpOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpWaWRlb0VuY29kZXJGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRl
ckdTdHJlYW1lcjo6Y3JlYXRlRW5jb2RlckZhY3RvcnkoKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPEdTdHJlYW1lclZpZGVvRW5jb2RlckZhY3Rvcnk+KCk7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8R1N0cmVhbWVyVmlkZW9FbmNvZGVyRmFjdG9yeT4oKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbUNvY29hLmNwcAppbmRleCA4MmNiY2IxYzY2ZDMyZWExOGNkZWIxNjc5MzhkNjhkM2IxMmU0
MTlhLi5mN2Q4NWRjNjBhNjFhODE0NmRiYTBkMDNlNTVkNzU3NjJmZTkwZjgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZh
dGVNZWRpYVN0cmVhbUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hLmNwcApAQCAtMTg4
LDggKzE4OCw4IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbUNvY29hOjphdWRp
b1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiBzCiAgICAgICAgIGlmICghcmVtb3Rl
SU9Vbml0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1faW5wdXREZXNjcmlwdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihpbnB1dERlc2Ny
aXB0aW9uKTsKLSAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1f
aW5wdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlxdWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihp
bnB1dERlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9vdXRwdXREZXNjcmlwdGlvbiA9IG1ha2VVbmlx
dWU8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPihvdXRwdXREZXNjcmlwdGlvbik7CiAKICAgICAg
ICAgbV9kYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoZGVzY3JpcHRp
b24uc2FtcGxlUmF0ZSgpICogMiwgc3RyZWFtVHJhY2soKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBlOGUzZDM0ODZkYTQzYWFjMWRkNTRiNzhlNmI0
ZGY0ZGM5ODE2NzkwLi42MTFhYzE2YjllY2I4Njg5OGEzNzI2NDcxYzc2MjA3MTJmYjliMzg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUoKQogICAg
IGNvbnN0IGJvb2wgaXNOb25JbnRlcmxlYXZlZCA9IHRydWU7CiAgICAgRmlsbE91dEFTQkRGb3JM
UENNKG1fc3RyZWFtRm9ybWF0LCBzYW1wbGVSYXRlKCksIGNoYW5uZWxDb3VudCwgYml0c1BlckJ5
dGUgKiBieXRlc1BlckZsb2F0LCBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQsIGlzRmxvYXQs
IGlzQmlnRW5kaWFuLCBpc05vbkludGVybGVhdmVkKTsKIAotICAgIG1fYXVkaW9CdWZmZXJMaXN0
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJBdWRpb0J1ZmZlckxpc3Q+KG1fc3RyZWFtRm9ybWF0LCBt
X3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKKyAg
ICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG1ha2VVbmlxdWU8V2ViQXVkaW9CdWZmZXJMaXN0PihtX3N0
cmVhbUZvcm1hdCwgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgKiBtX21heGltaXVtRnJh
bWVDb3VudCk7CiAKICAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9u
OwogICAgIENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShOVUxMLCAmbV9zdHJlYW1Gb3Jt
YXQsIDAsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZmb3JtYXREZXNjcmlwdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggZjlkYzRh
ODQ3ZjRhMzU1ZDljY2ZmNGNkZTAzMDhkMGQ1YzVjNDQ1Ni4uMzg4ZDcxZTI0YjI1ZWJmNmQ3Nzg4
MTRmZGQwYTk2NjNiMTcwNTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2E6OmNvbnZlcnRUb1lVVihD
VlBpeAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNv
bmZvcm1lcikKLSAgICAgICAgbV9waXhlbEJ1ZmZlckNvbmZvcm1lciA9IHN0ZDo6bWFrZV91bmlx
dWU8UGl4ZWxCdWZmZXJDb25mb3JtZXJDVj4oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilAeyAo
X19icmlkZ2UgTlNTdHJpbmcgKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleTogQChw
cmVmZXJlZFBpeGVsQnVmZmVyRm9ybWF0KCkpIH0pOworICAgICAgICBtX3BpeGVsQnVmZmVyQ29u
Zm9ybWVyID0gbWFrZVVuaXF1ZTxQaXhlbEJ1ZmZlckNvbmZvcm1lckNWPigoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKUB7IChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVlBpeGVsQnVmZmVyUGl4ZWxG
b3JtYXRUeXBlS2V5OiBAKHByZWZlcmVkUGl4ZWxCdWZmZXJGb3JtYXQoKSkgfSk7CiAKICAgICBy
ZXR1cm4gbV9waXhlbEJ1ZmZlckNvbmZvcm1lci0+Y29udmVydChwaXhlbEJ1ZmZlcik7CiB9CkBA
IC03NSw3ICs3NSw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBSZWFsdGltZU91dGdv
aW5nVmlkZW9Tb3VyY2VDb2NvYTo6cm90YXRlUGl4ZWxCdWZmZXIoCiAgICAgICAgIEludFNpemUg
c2l6ZSA9IHsgKGludClDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpICwgKGludClD
VlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSB9OwogICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKHJvdGF0aW9uVG9Bbmds
ZShyb3RhdGlvbikpOwotICAgICAgICBtX3JvdGF0aW9uU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zvcm0pLCBzaXplLCBDVlBp
eGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwgSW1hZ2VSb3RhdGlvblNl
c3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOworICAgICAgICBtX3JvdGF0aW9uU2Vz
c2lvbiA9IG1ha2VVbmlxdWU8SW1hZ2VSb3RhdGlvblNlc3Npb25WVD4oV1RGTW92ZSh0cmFuc2Zv
cm0pLCBzaXplLCBDVlBpeGVsQnVmZmVyR2V0UGl4ZWxGb3JtYXRUeXBlKHBpeGVsQnVmZmVyKSwg
SW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6SXNDR0ltYWdlQ29tcGF0aWJsZTo6Tm8pOwogICAgIH0K
IAogICAgIHJldHVybiBtX3JvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKHBpeGVsQnVmZmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ05vdGlmaWVyc01vY2suY3BwCmlu
ZGV4IDJmMWZiNTVlZTY3MWYyZjIyOGZjNTE1MWQwZGQ2OWNmOGVjNjk1Y2IuLjJjN2M0MWJkNjk2
ZmYxZjliYWIzODM4MWE0YjU4Mzg1NjhiMThhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDTm90aWZpZXJzTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENOb3RpZmllcnNNb2NrLmNwcApAQCAtOTgsNyArOTgsNyBAQCBSZW1v
dGVEYXRhQ2hhbm5lbE5vdGlmaWVyOjpSZW1vdGVEYXRhQ2hhbm5lbE5vdGlmaWVyKFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNsaQogCiB2b2lkIFJlbW90ZURhdGFDaGFubmVsTm90aWZpZXI6OmZp
cmUoKQogewotICAgIG1fY2xpZW50LT5kaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChzdGQ6Om1ha2Vf
dW5pcXVlPFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2s+KCJSVENEYXRhQ2hhbm5lbEhhbmRsZXJN
b2NrIiwgUlRDRGF0YUNoYW5uZWxJbml0KCkpKTsKKyAgICBtX2NsaWVudC0+ZGlkQWRkUmVtb3Rl
RGF0YUNoYW5uZWwobWFrZVVuaXF1ZTxSVENEYXRhQ2hhbm5lbEhhbmRsZXJNb2NrPigiUlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jayIsIFJUQ0RhdGFDaGFubmVsSW5pdCgpKSk7CiB9CiAKIERhdGFD
aGFubmVsU3RhdGVOb3RpZmllcjo6RGF0YUNoYW5uZWxTdGF0ZU5vdGlmaWVyKFJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudCogY2xpZW50LCBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA1NTk5MzM4MmIz
YTFkYzM2ZDgzNTZiNjFiMjVjNzAwMmUwNzM0N2ZlLi4zODdhMjFkYWY0NTUyMzk2OGFlZTRmNzk0
MTlkM2Q4Yjg4NjkwZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBNZWRpYVBs
YXllciBFbmlnbmUgU3VwcG9ydAogdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB7Ci0gICAg
cmVnaXN0cmFyKFtdIChNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlPihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRU
eXBlcywKKyAgICByZWdpc3RyYXIoW10gKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIG1h
a2VVbmlxdWU8TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U+KHBsYXllcik7IH0sIGdldFN1cHBv
cnRlZFR5cGVzLAogICAgICAgICBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOwogfQogCkBAIC0x
NjYsNyArMTY2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICBpZiAobV9tZWRpYVNv
dXJjZVByaXZhdGUpCiAgICAgICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZS0+YnVmZmVy
ZWQoKTsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4o
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKIGJv
b2wgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJj
ZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJj
ZUhhbmRsZS5jcHAKaW5kZXggY2M2N2NlNjg4ZjNiY2EyMjI2OTBiNDNmMTA1ODc4YmE5ZTNjMjhm
OC4uOTA1MTQzMTYyMWE4YzEwOGE2ZWYwZjUxZWI2MGY3NzRhZmNjMGExMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNw
cApAQCAtMTU5LDkgKzE1OSw5IEBAIEJsb2JSZXNvdXJjZUhhbmRsZTo6QmxvYlJlc291cmNlSGFu
ZGxlKEJsb2JEYXRhKiBibG9iRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLCBtX2Fz
eW5jIHsgYXN5bmMgfQogewogICAgIGlmIChtX2FzeW5jKQotICAgICAgICBtX2FzeW5jU3RyZWFt
ID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKTsKKyAgICAgICAgbV9h
c3luY1N0cmVhbSA9IG1ha2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcyk7CiAgICAgZWxz
ZQotICAgICAgICBtX3N0cmVhbSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZVN0cmVhbT4oKTsKKyAg
ICAgICAgbV9zdHJlYW0gPSBtYWtlVW5pcXVlPEZpbGVTdHJlYW0+KCk7CiB9CiAKIEJsb2JSZXNv
dXJjZUhhbmRsZTo6fkJsb2JSZXNvdXJjZUhhbmRsZSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggODEx
MmI5NzNlZWY1NGVkN2E1YzdhNTE0Y2YxMDJhYzk5MWU3NjUzMy4uYjU0MWY2MmVlMDA1MjAzNjJj
MTU1N2Y3Y2E0OTY0YTIzN2I4NzQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBE
ZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVj
b2RpbmdSZXN1bHREaXNwYQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGNy
ZWF0ZURlY29kZVRhc2soY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYgc2No
ZWR1bGVDb250ZXh0LCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZVRhc2s+KAorICAgIHJldHVy
biBtYWtlVW5pcXVlPERlY29kZVRhc2s+KAogICAgICAgICB1cmwuc3RyaW5nKCksCiAgICAgICAg
IHNjaGVkdWxlQ29udGV4dCwKICAgICAgICAgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAK
aW5kZXggMzBjMjdmNTc2YTE3N2U2YjZhYjE5NDc0MGE3ZDkwMjViNjU5ZmNhZC4uNmEzMWUzZTUy
N2Y4ZWM5MmQ2ZjYyYjk2Y2RkODE5NDQxNGI1NWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVnaXN0ZXJCdWlsdGluU3luY2hyb25vdXNMb2FkZXIoY29u
c3QgQXRvbVN0cmluZyYgcHJvdG9jb2wKIH0KIAogUmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFu
ZGxlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQsIGJvb2wgZGVmZXJzTG9hZGluZywg
Ym9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYp
Ci0gICAgOiBkKHN0ZDo6bWFrZV91bmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5hbD4odGhpcywg
Y29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRDb250ZW50U25p
ZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91bGRDb250ZW50
RW5jb2RpbmdTbmlmZikpCisgICAgOiBkKG1ha2VVbmlxdWU8UmVzb3VyY2VIYW5kbGVJbnRlcm5h
bD4odGhpcywgY29udGV4dCwgcmVxdWVzdCwgY2xpZW50LCBkZWZlcnNMb2FkaW5nLCBzaG91bGRD
b250ZW50U25pZmYgJiYgc2hvdWxkQ29udGVudFNuaWZmVVJMKHJlcXVlc3QudXJsKCkpLCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZikpCiB7CiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLmlzVmFs
aWQoKSkgewogICAgICAgICBzY2hlZHVsZUZhaWx1cmUoSW52YWxpZFVSTEZhaWx1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggZGFkOTAxMGY5NTcwZWJjNTY3NjMz
NTQzZmQxZmM1MDJmODQ2OWI5OS4uNzEzYjRkZmIzMGIyYWZkZmJlYWZmNGVlNTM3MGEyNTQ2ZmFk
M2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xNjksNyArMTY5
LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2Fn
ZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1
ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwog
ICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBt
X3NlbWFwaG9yZS53YWl0KCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVz
cG9uc2UKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92
ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3NlbWFwaG9yZS53YWl0KCk7CkBAIC0y
MjYsNyArMjI2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YShDRkQKICAgICB9OwogICAgIAogICAg
IGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6
Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKKyAgICAgICAg
bV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1v
dmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZSh3
b3JrKSk7CiB9CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGaW5pc2hMb2FkaW5nKCkKICAg
ICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkKLSAgICAgICAgbV9tZXNzYWdlUXVl
dWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+KFdURk1vdmUod29y
aykpKTsKKyAgICAgICAgbV9tZXNzYWdlUXVldWUtPmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9u
PHZvaWQoKT4+KFdURk1vdmUod29yaykpKTsKICAgICBlbHNlCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoV1RGTW92ZSh3b3JrKSk7CiB9CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWls
KENGRXJyb3JSZWYKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBt
X21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4o
V1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlx
dWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTMxMSw3ICszMTEsNyBAQCBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OgogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVu
Y3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+
YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAg
IGVsc2UKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBtX3Nl
bWFwaG9yZS53YWl0KCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxl
bmcKICAgICB9OwogCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAgICAgICBtX21lc3NhZ2VR
dWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh3
b3JrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZSh3b3JrKSkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChXVEZNb3ZlKHdvcmspKTsKIH0KQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFNl
bmRCb2R5RGF0YShDRgogICAgIH07CiAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCi0gICAgICAg
IG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+
PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQobWFrZVVu
aXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAgICAgZWxzZQogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBA
IEJvb2xlYW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6Y2FuUmVzcG9uZFRvUHJvCiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdl
UXVldWUpCi0gICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxG
dW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVl
LT5hcHBlbmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkKCk+PihXVEZNb3ZlKHdvcmspKSk7CiAg
ICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUod29yaykpOwogICAgIG1f
c2VtYXBob3JlLndhaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBjOWI1M2UzMTJh
ZDg1NTc2ZDM2NmVmNGRjNTM3NDM5MWZlOGM2OTBjLi5iYTU1ZjAwNDhiOGU0ZGRjNWIwNzM0ZDk5
M2RjOWIxM2I4Y2IyYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC01MjMsNyArNTIz
LDcgQEAgLSAodm9pZClfcmVzdGFydAogCiAgICAgX3Jlc291cmNlID0gc2VsZi5zZXNzaW9uLmxv
YWRlci5yZXF1ZXN0UmVzb3VyY2Uoc2VsZi5vcmlnaW5hbFJlcXVlc3QsIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nKTsKICAgICBpZiAoX3Jl
c291cmNlKQotICAgICAgICBfcmVzb3VyY2UtPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudD4oc2VsZikpOworICAgICAgICBfcmVzb3Vy
Y2UtPnNldENsaWVudChtYWtlVW5pcXVlPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVu
dD4oc2VsZikpOwogfQogCiAtICh2b2lkKV9jYW5jZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IGE0NWE1ZjRlNGEw
MjhmZTZlN2YyZGZiNzVlYzJjOGFlYzkzZWQyYmIuLjEwMTYyNGYyOTAwYTk0Y2M3ZDFhODk5ODk2
NzZkNmI0NWFiN2ZhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIE9wdGlvbmFsPFZl
Y3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0CiAgICAgICAgICJBTkQgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdMT0Ig
PykpICJcCiAgICAgICAgICJPUkRFUiBCWSBsZW5ndGgocGF0aCkgREVTQywgbGFzdHVwZGF0ZWQi
OwogCi0gICAgYXV0byBwc3RtdCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50Piht
X2RhdGFiYXNlLCBzcWwpOworICAgIGF1dG8gcHN0bXQgPSBtYWtlVW5pcXVlPFNRTGl0ZVN0YXRl
bWVudD4obV9kYXRhYmFzZSwgc3FsKTsKICAgICBpZiAoIXBzdG10KQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCkBAIC01NjYsNyArNTY2LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6ZGVs
ZXRlQWxsQ29va2llcygpCiAKIHZvaWQgQ29va2llSmFyREI6OmNyZWF0ZVByZXBhcmVTdGF0ZW1l
bnQoY29uc3QgU3RyaW5nJiBzcWwpCiB7Ci0gICAgYXV0byBzdGF0ZW1lbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNRTGl0ZVN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsKTsKKyAgICBhdXRvIHN0YXRl
bWVudCA9IG1ha2VVbmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWwpOwogICAg
IGludCByZXQgPSBzdGF0ZW1lbnQtPnByZXBhcmUoKTsKICAgICBBU1NFUlQocmV0ID09IFNRTElU
RV9PSyk7CiAgICAgbV9zdGF0ZW1lbnRzLmFkZChzcWwsIFdURk1vdmUoc3RhdGVtZW50KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAKaW5kZXggZmE1YzhkMmQyMWI2MjczODE1ZDAyM2E0ZjIwNDU1MDE2ZTk2
MzhhZi4uZTJiNGI1ZGZiZGE2MmEzYzBjYjZiZjkxODFiYmQ2OGZkN2E0YTA4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9h
ZEluZGV4KCkKICAgICAgICAgLS1lbmQ7IC8vIExhc3QgbGluZSBpcyBlbXB0eQogICAgIHdoaWxl
IChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IGl0LT5zdHJpcFdoaXRlU3BhY2Uo
KTsKLSAgICAgICAgYXV0byBjYWNoZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsQ2FjaGVF
bnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsKKyAgICAgICAgYXV0byBjYWNoZUVudHJ5
ID0gbWFrZVVuaXF1ZTxDdXJsQ2FjaGVFbnRyeT4odXJsLCBudWxscHRyLCBtX2NhY2hlRGlyKTsK
IAogICAgICAgICBpZiAoY2FjaGVFbnRyeS0+aXNDYWNoZWQoKSAmJiBjYWNoZUVudHJ5LT5lbnRy
eVNpemUoKSA8IG1fc3RvcmFnZVNpemVMaW1pdCkgewogICAgICAgICAgICAgbV9jdXJyZW50U3Rv
cmFnZVNpemUgKz0gY2FjaGVFbnRyeS0+ZW50cnlTaXplKCk7CkBAIC0yMTMsNyArMjEzLDcgQEAg
dm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUm
IGpvYiwgUmVzb3VyY2VSZXNwb25zZSYKIAogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVFbnRyeSh1
cmwpOyAvLyBJbnZhbGlkYXRlIGV4aXN0aW5nIGVudHJ5IG9uIDIwMAogCi0gICAgICAgIGF1dG8g
Y2FjaGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybENhY2hlRW50cnk+KHVybCwgJmpvYiwg
bV9jYWNoZURpcik7CisgICAgICAgIGF1dG8gY2FjaGVFbnRyeSA9IG1ha2VVbmlxdWU8Q3VybENh
Y2hlRW50cnk+KHVybCwgJmpvYiwgbV9jYWNoZURpcik7CiAgICAgICAgIGJvb2wgY2FjaGVhYmxl
ID0gY2FjaGVFbnRyeS0+cGFyc2VSZXNwb25zZUhlYWRlcnMocmVzcG9uc2UpOwogICAgICAgICBp
ZiAoY2FjaGVhYmxlKSB7CiAgICAgICAgICAgICBjYWNoZUVudHJ5LT5zZXRJc0xvYWRpbmcodHJ1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
b250ZXh0LmNwcAppbmRleCA3ZDE3MjE3YzJlNDQyYWM2ZjNkZThjNGI2MGE5NTI2YzlmNjU4NDJh
Li43YjA0ZmEyNmE0MmFiOTc4YWUwN2JkMzFmMGU2OTE1NTFiYmM0NjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCBDdXJsQ29udGV4dDo6Q3VybENvbnRleHQoKQogICAgIGlmIChhdXRv
IHZhbHVlID0gZW52VmFyLnJlYWRBczxzaWduZWQ+KCJXRUJLSVRfQ1VSTF9NQVhfSE9TVF9DT05O
RUNUSU9OUyIpKQogICAgICAgICBtYXhIb3N0Q29ubmVjdGlvbnMgPSAqdmFsdWU7CiAKLSAgICBt
X3NjaGVkdWxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlcXVlc3RTY2hlZHVsZXI+KG1heENv
bm5lY3RzLCBtYXhUb3RhbENvbm5lY3Rpb25zLCBtYXhIb3N0Q29ubmVjdGlvbnMpOworICAgIG1f
c2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxDdXJsUmVxdWVzdFNjaGVkdWxlcj4obWF4Q29ubmVjdHMs
IG1heFRvdGFsQ29ubmVjdGlvbnMsIG1heEhvc3RDb25uZWN0aW9ucyk7CiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgbV92ZXJib3NlID0gZW52VmFyLmRlZmluZWQoIkRFQlVHX0NVUkwiKTsKQEAgLTMz
Niw3ICszMzYsNyBAQCBDVVJMY29kZSBDdXJsSGFuZGxlOjp3aWxsU2V0dXBTc2xDdHgodm9pZCog
c3NsQ3R4KQogICAgICAgICByZXR1cm4gQ1VSTEVfQUJPUlRFRF9CWV9DQUxMQkFDSzsKIAogICAg
IGlmICghbV9zc2xWZXJpZmllcikKLSAgICAgICAgbV9zc2xWZXJpZmllciA9IHN0ZDo6bWFrZV91
bmlxdWU8Q3VybFNTTFZlcmlmaWVyPihzc2xDdHgpOworICAgICAgICBtX3NzbFZlcmlmaWVyID0g
bWFrZVVuaXF1ZTxDdXJsU1NMVmVyaWZpZXI+KHNzbEN0eCk7CiAKICAgICByZXR1cm4gQ1VSTEVf
T0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IDlmYzY2ZWMwMjBlMjk5NmQzOGQwNjBh
ZDc4ZDM2ZjExNGFlNDgxYzYuLjc4NWQ2Y2I4ZTZkYzhmYWZlOGU4MTBkZmJmZGY0Y2U3NjJmNGIz
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Rm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIGNvbnN0IFZlY3Rv
cjxjaGFyPiogQ3VybEZvcm1EYXRhU3RyZWFtOjpnZXRQb3N0RGF0YSgpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgaWYgKCFtX3Bvc3REYXRhKQotICAgICAgICBtX3Bvc3REYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8Y2hhcj4+KG1fZm9ybURhdGEtPmZsYXR0ZW4oKSk7Cisg
ICAgICAgIG1fcG9zdERhdGEgPSBtYWtlVW5pcXVlPFZlY3RvcjxjaGFyPj4obV9mb3JtRGF0YS0+
ZmxhdHRlbigpKTsKIAogICAgIHJldHVybiBtX3Bvc3REYXRhLmdldCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCmluZGV4IGE4YmI4ZDgxYTdhYmQ3MTc0M2JkMzk1ZGNjODY2MzE3OWZkZTJk
NTUuLmNjZGJiMjgyMzlmMjJjMzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEN1cmxNdWx0
aXBhcnRIYW5kbGU+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmNyZWF0ZUlmTmVlZGVkKEN1cmxNdWwK
ICAgICBpZiAoIWJvdW5kYXJ5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEN1cmxNdWx0aXBhcnRIYW5kbGU+KGNsaWVudCwgKmJvdW5kYXJ5
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDdXJsTXVsdGlwYXJ0SGFuZGxlPihjbGllbnQsICpi
b3VuZGFyeSk7CiB9CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0
cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAw
NzAzNGJiNjJkN2JiZTY0MGQ0ZjgwMWM0ZTE4NDIyM2RmMjQxM2RjLi5iMmEyMmRhMjJkNmMwMTU1
NTA3NTk5NWY2YjgzMDg2ZmVhODFmZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2
b2lkIEN1cmxSZXF1ZXN0OjpjYWxsQ2xpZW50KEZ1bmN0aW9uPHZvaWQoQ3VybFJlcXVlc3QmLCBD
dXJsUmVxdWVzdENsaWVudCYpPiYmCiB2b2lkIEN1cmxSZXF1ZXN0OjpydW5Pbk1haW5UaHJlYWQo
RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiB7CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAg
ICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9p
ZCgpPj4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+YXBwZW5kKG1h
a2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNrKSkpOwogICAgIGVsc2UgaWYg
KGlzTWFpblRocmVhZCgpKQogICAgICAgICB0YXNrKCk7CiAgICAgZWxzZQpAQCAtMjA1LDcgKzIw
NSw3IEBAIENVUkwqIEN1cmxSZXF1ZXN0OjpzZXR1cFRyYW5zZmVyKCkKICAgICBhdXRvIGh0dHBI
ZWFkZXJGaWVsZHMgPSBtX3JlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpOwogICAgIGFwcGVuZEFj
Y2VwdExhbmd1YWdlSGVhZGVyKGh0dHBIZWFkZXJGaWVsZHMpOwogCi0gICAgbV9jdXJsSGFuZGxl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXJsSGFuZGxlPigpOworICAgIG1fY3VybEhhbmRsZSA9IG1h
a2VVbmlxdWU8Q3VybEhhbmRsZT4oKTsKIAogICAgIG1fY3VybEhhbmRsZS0+c2V0VXJsKG1fcmVx
dWVzdC51cmwoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDkxODM3YWY5ZjNl
NDc3M2I1YzcxYzFjMjYwZGI5NmY1ODZiMjExYWYuLjNhYTVmNTJkYjYyN2FiYjBlY2NhZjI5MjEz
ZGNlMTJmYmM2ZmJjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtMTQzLDcgKzE0
Myw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2N1cmxNdWx0aUhhbmRsZSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3VybE11bHRpSGFuZGxlPigpOworICAgIG1fY3VybE11bHRpSGFuZGxlID0g
bWFrZVVuaXF1ZTxDdXJsTXVsdGlIYW5kbGU+KCk7CiAgICAgbV9jdXJsTXVsdGlIYW5kbGUtPnNl
dE1heENvbm5lY3RzKG1fbWF4Q29ubmVjdHMpOwogICAgIG1fY3VybE11bHRpSGFuZGxlLT5zZXRN
YXhUb3RhbENvbm5lY3Rpb25zKG1fbWF4VG90YWxDb25uZWN0aW9ucyk7CiAgICAgbV9jdXJsTXVs
dGlIYW5kbGUtPnNldE1heEhvc3RDb25uZWN0aW9ucyhtX21heEhvc3RDb25uZWN0aW9ucyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDQ3YjM3ODNlNjQ2MjlhOTJlZThkYTQwYmQ0Nzk3MGM3
OTZlYTU0ODYuLjcwN2QwYTY2M2E3MTg2ZGIxMDUwNGRkYzI4NjZiNzY5NzdkMzRiN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgUmUKIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKiBSZXNvdXJjZUhhbmRsZTo6ZGVsZWdh
dGUoKQogewogICAgIGlmICghZC0+bV9kZWxlZ2F0ZSkKLSAgICAgICAgZC0+bV9kZWxlZ2F0ZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU+KCp0aGlzKTsKKyAg
ICAgICAgZC0+bV9kZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8Q3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU+KCp0aGlzKTsKIAogICAgIHJldHVybiBkLT5tX2RlbGVnYXRlLmdldCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggYTM2N2ZkYTYyYTZkMjEyYTQ5NTVl
Njg4OWM2NTcyMGM5ZWZhZjIxYi4uMTNhODMyYzI2NjliNGNlOGNiZWJmMzEzNGJhMDg5ZDkwMmRm
YTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0yMDIsNyAr
MjAyLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzdG9wVGhyZWFkKCkKIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2FsbE9uV29ya2VyVGhyZWFkKEZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV90YXNrUXVl
dWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZSh0YXNr
KSkpOworICAgIG1fdGFza1F1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPEZ1bmN0aW9uPHZvaWQoKT4+
KFdURk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpleGVj
dXRlVGFza3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IGRlMGI3ZTFmMTg3YjUwNzY1YTlkMTdjMmVj
NGVjODAzM2Q4M2YzNDEuLmYxMGViNjI1ZWEwODEzMDI5Mjc4MDdjZWMxZTJmZjZlNzNmMjRjMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVS
ZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlv
blF1ZXVlRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZCljYWxsRnVuY3Rpb25P
bk1haW5UaHJlYWQ6KEZ1bmN0aW9uPHZvaWQoKT4mJilmdW5jdGlvbgogewogICAgIC8vIFN5bmMg
eGhyIHVzZXMgdGhlIG1lc3NhZ2UgcXVldWUuCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQotICAg
ICAgICByZXR1cm4gbV9tZXNzYWdlUXVldWUtPmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0
aW9uPHZvaWQoKT4+KFdURk1vdmUoZnVuY3Rpb24pKSk7CisgICAgICAgIHJldHVybiBtX21lc3Nh
Z2VRdWV1ZS0+YXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCgpPj4oV1RGTW92ZShmdW5j
dGlvbikpKTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlLgogICAgIGlmICghc2No
ZWR1bGVkV2l0aEN1c3RvbVJ1bkxvb3BNb2RlKG1fc2NoZWR1bGVkUGFpcnMpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVRdWV1ZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Jlc29sdmVR
dWV1ZVNvdXAuY3BwCmluZGV4IDRiYjMwYTg3MWRlNTcwMzliN2I3MTkzNGZlYzM3NjNhNWE0YTgy
ZDkuLmQ0YmE0ZTk1MDQxNWJiNDA2YmFiYzAxYjZkMjBjNjZkNGY4NGIyZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNSZXNvbHZlUXVldWVTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TUmVzb2x2
ZVF1ZXVlU291cC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIEROU1Jlc29sdmVRdWV1ZVNv
dXA6OnJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDY0X3QgaWRlbnRpZmllciwg
RAogCiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYWRkcmVzcy5nZXQoKSksICJpZGVu
dGlmaWVyIiwgR1VJTlRfVE9fUE9JTlRFUihpZGVudGlmaWVyKSk7CiAKLSAgICBtX2NvbXBsZXRp
b25BbmRDYW5jZWxIYW5kbGVycy5hZGQoaWRlbnRpZmllciwgc3RkOjptYWtlX3VuaXF1ZTxETlNS
ZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxlcnM+KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOworICAgIG1fY29tcGxldGlv
bkFuZENhbmNlbEhhbmRsZXJzLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlV2l0aG91dEZhc3RN
YWxsb2NDaGVjazxETlNSZXNvbHZlUXVldWVTb3VwOjpDb21wbGV0aW9uQW5kQ2FuY2VsSGFuZGxl
cnM+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKGNhbmNlbGxhYmxlKSkpOwog
fQogCiB2b2lkIEROU1Jlc29sdmVRdWV1ZVNvdXA6OnN0b3BSZXNvbHZlKHVpbnQ2NF90IGlkZW50
aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggMGE3MjcyNDdk
ZmFmYzE4ODFmMWEyYzQ1ODgxZGU0MWZiMzQ5ZTIyNy4uMGIxYjdjZmY1MWY5ZWJlMTI5ODJlMTZl
YzU4ZjZlODY2MzQ3NDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApA
QCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDcmVkZW50
aWFsRnJvbVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFByb3RlY3Rpb25TCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY3JldFNlcnZp
Y2VTZWFyY2hEYXRhPihjYW5jZWxsYWJsZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGF1dG8gZGF0YSA9IG1ha2VVbmlxdWU8U2VjcmV0U2VydmljZVNlYXJjaERhdGE+KGNhbmNl
bGxhYmxlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgc2VjcmV0X3NlcnZpY2Vf
c2VhcmNoKG51bGxwdHIsIFNFQ1JFVF9TQ0hFTUFfQ09NUEFUX05FVFdPUkssIGF0dHJpYnV0ZXMu
Z2V0KCksCiAgICAgICAgIHN0YXRpY19jYXN0PFNlY3JldFNlYXJjaEZsYWdzPihTRUNSRVRfU0VB
UkNIX1VOTE9DSyB8IFNFQ1JFVF9TRUFSQ0hfTE9BRF9TRUNSRVRTKSwgY2FuY2VsbGFibGUsCiAg
ICAgICAgIFtdKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVy
IHVzZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jp
ZGlSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIu
aAppbmRleCAxMGZlY2JjNDE5NDc5NWYzMmQxY2E3ZTc2MDlhYzRmZjIwOTJjZDIzLi5hYWZlZDNk
ZTc5Yjk5YWFjNDc2OWM3NmI1NWY2YzFjYmI2NjFiOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEJpZGlS
ZXNvbHZlckJhc2U8SXRlcmF0b3IsIFJ1biwgRGVyaXZlZENsYXNzPjo6YXBwZW5kUnVuSW50ZXJu
YWwoKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGVuZE9mZnNldCA+PSBzdGFydE9mZnNldCkK
LSAgICAgICAgICAgIG1fcnVucy5hcHBlbmRSdW4oc3RkOjptYWtlX3VuaXF1ZTxSdW4+KHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CisgICAgICAg
ICAgICBtX3J1bnMuYXBwZW5kUnVuKG1ha2VVbmlxdWU8UnVuPihzdGFydE9mZnNldCwgZW5kT2Zm
c2V0ICsgMSwgY29udGV4dCgpLCBtX2RpcmVjdGlvbikpOwogCiAgICAgICAgIG1fZW9yLmluY3Jl
bWVudCgpOwogICAgICAgICBtX3NvciA9IG1fZW9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Mb2NhbGVJQ1UuY3BwCmluZGV4IDU5ZTFmYzcyYTJiZjI5Njk0NWE4NmY4NTUyYjg2Mzc2
YTllYTU4NmQuLjJjOGNjZTczMDg4ZmE1YWQwY2Y1OTU5Y2NlNGY5NjkxYmYzNTdhMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIGljdTsKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxl
OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPExvY2FsZUlDVT4obG9jYWxlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPExvY2FsZUlDVT4obG9jYWxlLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogfQogCiBMb2NhbGVJQ1U6OkxvY2FsZUlDVShjb25zdCBjaGFyKiBsb2NhbGUpCkBAIC0x
NjMsMjIgKzE2MywyMiBAQCBzdGF0aWMgU3RyaW5nIGdldERhdGVGb3JtYXRQYXR0ZXJuKGNvbnN0
IFVEYXRlRm9ybWF0KiBkYXRlRm9ybWF0KQogc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+
PiBMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9ybWF0KiBkYXRlRm9y
bWF0LCBVRGF0ZUZvcm1hdFN5bWJvbFR5cGUgdHlwZSwgaW50MzJfdCBzdGFydEluZGV4LCBpbnQz
Ml90IHNpemUpCiB7CiAgICAgaWYgKCFkYXRlRm9ybWF0KQotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgaWYgKHVkYXRfY291bnRTeW1ib2xzKGRhdGVGb3JtYXQs
IHR5cGUpICE9IHN0YXJ0SW5kZXggKyBzaXplKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9y
PFN0cmluZz4+KCk7CiAKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0cmluZz4+KCk7CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+
PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwogICAgIGZvciAoaW50MzJf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSB1ZGF0X2dldFN5bWJvbHMoZGF0
ZUZvcm1hdCwgdHlwZSwgc3RhcnRJbmRleCArIGksIDAsIDAsICZzdGF0dXMpOwogICAgICAgICBp
ZiAoc3RhdHVzICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKTsKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZm
ZXIobGVuZ3RoKTsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgICAgICB1ZGF0
X2dldFN5bWJvbHMoZGF0ZUZvcm1hdCwgdHlwZSwgc3RhcnRJbmRleCArIGksIGJ1ZmZlci5kYXRh
KCksIGxlbmd0aCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIGxh
YmVscy0+YXBwZW5kKFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKSk7CiAgICAgfQogICAg
IHJldHVybiBXVEZNb3ZlKGxhYmVscyk7CkBAIC0xODYsNyArMTg2LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxTdHJpbmc+PiBMb2NhbGVJQ1U6OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVE
YXRlRm9ybWF0KgogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVh
dGVGYWxsYmFja01vbnRoTGFiZWxzKCkKIHsKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91
bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZl
Y3RvcjxTdHJpbmc+PigpOwogICAgIGxhYmVscy0+cmVzZXJ2ZUNhcGFjaXR5KFdURl9BUlJBWV9M
RU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IFdURl9BUlJBWV9MRU5HVEgoV1RGOjptb250aEZ1bGxOYW1lKTsgKytpKQogICAgICAgICBsYWJl
bHMtPmFwcGVuZChXVEY6Om1vbnRoRnVsbE5hbWVbaV0pOwpAQCAtMjA4LDcgKzIwOCw3IEBAIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBMb2NhbGVJQ1U6Om1vbnRoTGFiZWxzKCkKIAogc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gY3JlYXRlRmFsbGJhY2tBTVBNTGFiZWxzKCkK
IHsKLSAgICBhdXRvIGxhYmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7
CisgICAgYXV0byBsYWJlbHMgPSBtYWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgIGxh
YmVscy0+cmVzZXJ2ZUNhcGFjaXR5KDIpOwogICAgIGxhYmVscy0+YXBwZW5kKCJBTSIpOwogICAg
IGxhYmVscy0+YXBwZW5kKCJQTSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGVOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9j
YWxlTm9uZS5jcHAKaW5kZXggYmI2YjI2YmE1OWNiMzZiOTg5YjdlNmY1ODYzMGM3YTdiM2I1NmVh
Ny4uNzgxNWE0NzhlMDI5NzQ1NTk2NTc2YzJkZWQyMjExOTM2YWE5NmExYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGNs
YXNzIExvY2FsZU5vbmUgOiBwdWJsaWMgTG9jYWxlIHsKIAogc3RkOjp1bmlxdWVfcHRyPExvY2Fs
ZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8TG9jYWxlTm9uZT4oKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbGVO
b25lPigpOwogfQogCiBMb2NhbGVOb25lOjp+TG9jYWxlTm9uZSgpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAppbmRleCBmOGUxNjcw
ODQ5YTk1ODk4YTE0NTdiYzk4ZGE5MWU0YmRlNzg0Yzc5Li5lNWYyODE2NmM2ZGQzNGJjNTM1MDli
NmEwMDIwYTg4ODkwN2MyY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY0lDVS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q29kZWNJQ1UuY3BwCkBAIC0xNTYsNDMgKzE1Niw0MyBAQCB2b2lkIFRleHRDb2RlY0lDVTo6
cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKICAgICAgICAgLy8g
aHR0cDovL2RlbW8uaWN1LXByb2plY3Qub3JnL2ljdS1iaW4vY29udmV4cAogICAgICAgICBpZiAo
IXN0cmNtcChuYW1lLCAid2luZG93cy04NzQiKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5h
bWUsIFtuYW1lXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4
dENvZGVjSUNVPihuYW1lLCAid2luZG93cy04NzQtMjAwMCIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtODc0LTIwMDAiKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCFzdHJjbXAobmFtZSwgIndpbmRvd3MtOTQ5IikpIHsKICAgICAgICAgICAgIHJlZ2lz
dHJhcihuYW1lLCBbbmFtZV0gewotICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIndpbmRvd3MtOTQ5LTIwMDAiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dzLTk0OS0y
MDAwIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1jeXJpbGxpYyIpKSB7CiAgICAgICAg
ICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy03XzMtMTAuMiIpOworICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1hY29z
LTdfMy0xMC4yIik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1ncmVlayIpKSB7CiAgICAg
ICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJtYWNvcy02XzItMTAuNCIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4obmFtZSwgIm1h
Y29zLTZfMi0xMC40Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghc3RyY21wKG5hbWUsICJ4LW1hYy1jZW50cmFsZXVycm9t
YW4iKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFjb3Mt
MjktMTAuMiIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lD
VT4obmFtZSwgIm1hY29zLTI5LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIngtbWFjLXR1
cmtpc2giKSkgewogICAgICAgICAgICAgcmVnaXN0cmFyKG5hbWUsIFtuYW1lXSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCAibWFj
b3MtMzUtMTAuMiIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2Rl
Y0lDVT4obmFtZSwgIm1hY29zLTM1LTEwLjIiKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgIkVVQy1L
UiIpKSB7CiAgICAgICAgICAgICByZWdpc3RyYXIobmFtZSwgW25hbWVdIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNJQ1U+KG5hbWUsICJ3aW5kb3dz
LTk0OSIpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0lDVT4o
bmFtZSwgIndpbmRvd3MtOTQ5Iik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBUZXh0Q29kZWNJQ1U6OnJl
Z2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiAgICAgICAgIGNvbnN0
IGNoYXIqIGNhbm9uaWNhbENvbnZlcnRlck5hbWUgPSB1Y252X2dldENhbm9uaWNhbE5hbWUobmFt
ZSwgIklBTkEiLCAmZXJyb3IpOwogICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKGVycm9yKSk7CiAg
ICAgICAgIHJlZ2lzdHJhcihuYW1lLCBbbmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZV0gewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjSUNVPihuYW1lLCBj
YW5vbmljYWxDb252ZXJ0ZXJOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRl
eHRDb2RlY0lDVT4obmFtZSwgY2Fub25pY2FsQ29udmVydGVyTmFtZSk7CiAgICAgICAgIH0pOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjTGF0aW4xLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0
aW4xLmNwcAppbmRleCAxYTRkNTUxMjVjNTk4YjU0YjhiNDlhYjJmMDYzYmYzYThmNzA0NTkyLi5i
YWRjZjZiZDFmZjhiYTIyMTQ0ZjU0MDlhOWQxOGMzODFlYmMyZjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwCkBAIC05Myw3ICs5Myw3
IEBAIHZvaWQgVGV4dENvZGVjTGF0aW4xOjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdO
YW1lUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjTGF0aW4xOjpyZWdpc3RlckNv
ZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQogewogICAgIHJlZ2lzdHJhcigid2lu
ZG93cy0xMjUyIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29k
ZWNMYXRpbjE+KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHRDb2RlY0xhdGluMT4o
KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNSZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1JlcGxhY2VtZW50LmNwcAppbmRleCAxNzY1YmY3OTIxNTk3NWIxNTdjOGIzZjc0
YzU1NzJjNDcxZTIxMTQxLi5jOGI1NThjOGNhMmQzYWZkMzAyMTRiY2ZjMzdhMTQ1Nzc1NmExM2Ew
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1JlcGxh
Y2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1Jl
cGxhY2VtZW50LmNwcApAQCAtNDksNyArNDksNyBAQCB2b2lkIFRleHRDb2RlY1JlcGxhY2VtZW50
OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0cmFyIHJlZ2lzdHJhcgog
dm9pZCBUZXh0Q29kZWNSZXBsYWNlbWVudDo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0
cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoInJlcGxhY2VtZW50IiwgW10gewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNSZXBsYWNlbWVudD4oKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjUmVwbGFjZW1lbnQ+KCk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VVRGMTYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5j
cHAKaW5kZXggYmUwMDY1NjQ0NjQ4ZmNlMGMzNzlkM2M3NDNlZTIyN2VhOWVkYTZmNC4uOTBjNDQ3
NWQwMjBiOWY0NzFiNWJlNzdjM2NhYWMwZmRjOThjYmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKQEAgLTU0LDEwICs1NCwxMCBAQCB2
b2lkIFRleHRDb2RlY1VURjE2OjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVn
aXN0cmFyIHJlZ2lzdHJhcikKIHZvaWQgVGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyQ29kZWNzKFRl
eHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCiB7CiAgICAgcmVnaXN0cmFyKCJVVEYtMTZMRSIs
IFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGMTY+KHRy
dWUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNVVEYxNj4odHJ1ZSk7CiAg
ICAgfSk7CiAgICAgcmVnaXN0cmFyKCJVVEYtMTZCRSIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGMTY+KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8VGV4dENvZGVjVVRGMTY+KGZhbHNlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKaW5kZXggNDA2ZGQ3YzNm
OTgyMDNkODViMmE2NDU0M2E2MTE4MDYxZWUyYzkwZi4uMjI2NDMxMTlmYWYzNmZmMzc0OGIwM2Fi
N2QxOGZmNjU2MGU4Yzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEY4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjguY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgVGV4dENvZGVjVVRGODo6cmVn
aXN0ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCiB2b2lk
IFRleHRDb2RlY1VURjg6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3Ry
YXIpCiB7CiAgICAgcmVnaXN0cmFyKCJVVEYtOCIsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VGV4dENvZGVjVVRGOD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VGV4dENvZGVjVVRGOD4oKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcAppbmRleCAyOTZjNDY5ZjE2
OWZiOTExZGM4ZGJkN2E2NDdlYTU2NDFlMmZmZTE5Li40OGFkYmE5ZDRiMWE3YTlhNjU4YWVmOWRm
YWRmODVhZGRlOWRjZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFRleHRD
b2RlY1VzZXJEZWZpbmVkOjpyZWdpc3RlckVuY29kaW5nTmFtZXMoRW5jb2RpbmdOYW1lUmVnaXN0
cmFyIHJlZ2lzdHJhcgogdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVnaXN0ZXJDb2RlY3Mo
VGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKIHsKICAgICByZWdpc3RyYXIoIngtdXNlci1k
ZWZpbmVkIiwgW10gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29kZWNV
c2VyRGVmaW5lZD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dENvZGVjVXNlckRl
ZmluZWQ+KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL0xvY2FsZU1hYy5tbQppbmRleCBhNTE3YmUzNDFmNmFjNGJlOGU4OTNjZmFkN2MyMjg4NDVk
NmE4MjgwLi4yYjNkMDNhMzhhNWQyMDFiYjZkY2I4ZWJlNDRmNDZmZWVmYzY3ZTBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCkBAIC02Nyw3ICs2
Nyw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNMb2NhbGU+IGRldGVybWluZUxvY2FsZShjb25zdCBT
dHJpbmcmIGxvY2FsZSkKIAogc3RkOjp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PExvY2FsZU1hYz4oZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJpbmcoKSkuZ2V0KCkpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPExvY2FsZU1hYz4oZGV0ZXJtaW5lTG9jYWxlKGxvY2FsZS5zdHJp
bmcoKSkuZ2V0KCkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gY3Jl
YXRlRGF0ZVRpbWVGb3JtYXR0ZXIoTlNMb2NhbGUqIGxvY2FsZSwgTlNDYWxlbmRhciogY2FsZW5k
YXIsIE5TRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSwgTlNEYXRlRm9ybWF0dGVyU3R5bGUg
dGltZVN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdp
bi5jcHAKaW5kZXggNmExNjBkZWNjZmM5MjZhZWYzN2RlMjNlOTdmNjJlOGY1YzY3OTA2YS4uYWEw
MGE0YWQ2ZjViNTk5ODJiNmI0NzczMTcxYzhiYzdjMDMzOTAwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0
YXRpYyBMQ0lEIExDSURGcm9tTG9jYWxlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSkKIAogc3Rk
Ojp1bmlxdWVfcHRyPExvY2FsZT4gTG9jYWxlOjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgbG9j
YWxlKQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPExvY2FsZVdpbj4oTENJREZyb21M
b2NhbGUobG9jYWxlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxlV2luPihMQ0lERnJv
bUxvY2FsZShsb2NhbGUpKTsKIH0KIAogaW5saW5lIExvY2FsZVdpbjo6TG9jYWxlV2luKExDSUQg
bGNpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRD
b2RlY1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNX
aW4uY3BwCmluZGV4IGFmNDY5MTM5MDgxZTgwYzEyMDdiODJjOTdmZGZhM2M3NzIxYTY1MTEuLjJj
ZWI0NzVlNWZhZWJiNjcwYzc0MTQ0NzVhNDcyOTI0OTUyZGNhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vVGV4dENvZGVjV2luLmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIHN0YXRpYyBVSU5UIGdldENvZGVQYWdlKGNvbnN0IGNoYXIqIG5hbWUpCiAKIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29kZWNXaW4oY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZywgY29uc3Qgdm9pZCopCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VGV4dENvZGVjV2luPihnZXRDb2RlUGFnZShlbmNvZGluZy5uYW1lKCkpKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Q29kZWNXaW4+KGdldENvZGVQYWdlKGVuY29kaW5nLm5hbWUo
KSkpOwogfQogCiBUZXh0Q29kZWNXaW46OlRleHRDb2RlY1dpbihVSU5UIGNvZGVQYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5h
Z2VyT3BlblZSLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3ZyL29wZW52ci9WUlBsYXRm
b3JtTWFuYWdlck9wZW5WUi5jcHAKaW5kZXggZDFkYzY3MzY4NmY2NTFlM2UwMzI5MWI3YzAyYzMx
YjBjMTY5YmJjMi4uZTdjZjcxMzdlMzNhYTU1YmY3ZTU4NWVlMTY0ZTY3M2QzYWFlZWM2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdnIvb3BlbnZyL1ZSUGxhdGZvcm1NYW5h
Z2VyT3BlblZSLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS92ci9vcGVudnIvVlJQ
bGF0Zm9ybU1hbmFnZXJPcGVuVlIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxWUlBsYXRmb3JtTWFuYWdlck9wZW5WUj4gVlJQbGF0Zm9ybU1hbmFnZXJPcGVuVlI6OmNyZWF0
ZSgpCiAgICAgaWYgKCF2cjo6VlJfSXNSdW50aW1lSW5zdGFsbGVkKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybU1hbmFn
ZXJPcGVuVlI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8VlJQbGF0Zm9ybU1hbmFnZXJPcGVu
VlI+KCk7CiB9CiAKIFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjp+VlJQbGF0Zm9ybU1hbmFnZXJP
cGVuVlIoKQpAQCAtNzgsNyArNzgsNyBAQCBWZWN0b3I8V2Vha1B0cjxWUlBsYXRmb3JtRGlzcGxh
eT4+IFZSUGxhdGZvcm1NYW5hZ2VyT3BlblZSOjpnZXRWUkRpc3BsYXlzKCkKIAogICAgIFZlY3Rv
cjxXZWFrUHRyPFZSUGxhdGZvcm1EaXNwbGF5Pj4gZGlzcGxheXM7CiAgICAgaWYgKCFtX2Rpc3Bs
YXkpCi0gICAgICAgIG1fZGlzcGxheSA9IHN0ZDo6bWFrZV91bmlxdWU8VlJQbGF0Zm9ybURpc3Bs
YXlPcGVuVlI+KG1fc3lzdGVtLCBjaGFwZXJvbmUsIGNvbXBvc2l0b3IpOworICAgICAgICBtX2Rp
c3BsYXkgPSBtYWtlVW5pcXVlPFZSUGxhdGZvcm1EaXNwbGF5T3BlblZSPihtX3N5c3RlbSwgY2hh
cGVyb25lLCBjb21wb3NpdG9yKTsKICAgICBkaXNwbGF5cy5hcHBlbmQobWFrZVdlYWtQdHIoKm1f
ZGlzcGxheSkpOwogICAgIHJldHVybiBkaXNwbGF5czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBhYmFkZGM3ZmJjYTIzNTllZmY1Yjk4
MTFjMTk1ZjZiNWFiYzFiYTgzLi4xNjk3ODU1ZmU3MmY2MzdlNjVhZDQ3NzcyYWZhNjFjNzQ3MTky
NDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFBhc3RlYm9hcmRPd25l
clduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3CiAKIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5kUGFzdGUoKQogewot
ICAgIGF1dG8gcGFzdGVib2FyZCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oKTsKKyAg
ICBhdXRvIHBhc3RlYm9hcmQgPSBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KCk7CiAgICAgQ09NUHRy
PElEYXRhT2JqZWN0PiBjbGlwYm9hcmREYXRhOwogICAgIGlmICghU1VDQ0VFREVEKE9sZUdldENs
aXBib2FyZCgmY2xpcGJvYXJkRGF0YSkpKQogICAgICAgICBjbGlwYm9hcmREYXRhID0gMDsKQEAg
LTEwNiwxNiArMTA2LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JEcmFnQW5kRHJvcCgpCiB7CiAgICAgQ09NUHRyPFdDRGF0YU9iamVjdD4gZGF0
YU9iamVjdDsKICAgICBXQ0RhdGFPYmplY3Q6OmNyZWF0ZUluc3RhbmNlKCZkYXRhT2JqZWN0KTsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkYXRhT2JqZWN0LmdldCgpKTsK
IH0KIAogLy8gc3RhdGljCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yRHJhZ0FuZERyb3AoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlm
IChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8UGFzdGVib2FyZD4oZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgLy8g
RklYTUU6IFNob3VsZCBhZGQgYSBjb25zdCBvdmVybG9hZCBvZiBkcmFnRGF0YU1hcCBzbyB3ZSBk
b24ndCBuZWVkIGEgY29uc3RfY2FzdCBoZXJlLgotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBhc3RlYm9hcmQ+KGNvbnN0X2Nhc3Q8RHJhZ0RhdGEmPihkcmFnRGF0YSkuZHJhZ0RhdGFNYXAo
KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oY29uc3RfY2FzdDxEcmFnRGF0
YSY+KGRyYWdEYXRhKS5kcmFnRGF0YU1hcCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudURCLmNwcAppbmRleCAxOTY0OWM1
NjZjZmNmNWY0MjQzMDlkMWQ4ZDEwMGIwYjRmZjc3MGE4Li42ZjdmNGJhMTY2MGI0ZjdhOTc3MjEy
Yzg1NjNhNDNjNjY1ZTMwYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2VhcmNoUG9wdXBNZW51REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TZWFyY2hQb3B1cE1lbnVEQi5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbnQgU2VhcmNoUG9w
dXBNZW51REI6OmV4ZWN1dGVTaW1wbGVTcWwoY29uc3QgU3RyaW5nJiBzcWwsIGJvb2wgaWdub3Jl
RXJyb3IpCiAKIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+IFNlYXJjaFBvcHVwTWVu
dURCOjpjcmVhdGVQcmVwYXJlZFN0YXRlbWVudChjb25zdCBTdHJpbmcmIHNxbCkKIHsKLSAgICBh
dXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVtZW50PihtX2RhdGFi
YXNlLCBzcWwpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0ZW1l
bnQ+KG1fZGF0YWJhc2UsIHNxbCk7CiAgICAgaW50IHJldCA9IHN0YXRlbWVudC0+cHJlcGFyZSgp
OwogICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0gU1FMSVRFX09LKTsKICAgICByZXR1cm4g
c3RhdGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0
YU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNw
cAppbmRleCBkYmY5OWE0NWNlNzAzYTlkODU3YTBlNjAxOWQ2ODA2ZGQxMWZhMTdiLi4yNDEwMDNh
MTAwMzFhM2Q3ZTZkN2FhMWUyNGE0OWNiOTg5ODIwY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFNURE1FVEhP
RElNUCBXQ0RhdGFPYmplY3Q6OlNldERhdGEoRk9STUFURVRDKiBwZm9ybWF0ZXRjLCBTVEdNRURJ
VU0qIHBtZWRpdW0sIEJPCiAgICAgaWYgKCFwZm9ybWF0ZXRjIHx8ICFwbWVkaXVtKQogICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgYXV0byBmZXRjID0gc3RkOjptYWtlX3VuaXF1ZTxG
T1JNQVRFVEM+KCk7CisgICAgYXV0byBmZXRjID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Rk9STUFURVRDPigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVEdNRURJVU0sIFN0Z01l
ZGl1bURlbGV0ZXI+IHBTdGdNZWQobmV3IFNUR01FRElVTSk7CiAKICAgICBaZXJvTWVtb3J5KGZl
dGMuZ2V0KCksIHNpemVvZihGT1JNQVRFVEMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0Zp
bHRlci5jcHAKaW5kZXggYzAwNGZjOWU3MDRhNmFkMzIzNDlmYjgyNGNkYzVkZGQwMzYwMWI1Yy4u
NDc5ODFhZTY5OTFkYzY0OTE1MjBmYzgyNDMyZWNjNDk1ODY0NDNmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBGaQogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0OwogCi0gICAgYXV0
byBidWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlvdXNF
ZmZlY3QpOworICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4o
JnByZXZpb3VzRWZmZWN0KTsKICAgICBtX3NvdXJjZUFscGhhID0gYnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpKTsKIAogICAgIGZvciAoYXV0byYgZWZmZWN0
RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcz4oKmZpbHRlcikpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
b21wbGV4TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExp
bmVMYXlvdXQuY3BwCmluZGV4IDAxMzM3ODdkOWQzMDYyYjFjYTc5YjE2MDc5NjNmMjBjMTA3MWVk
NTMuLmJkM2M5YmVlODcyOTg2ZWM2MWIxYTMwYTA0OTViOGMwYTI2ZmQ2MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcApAQCAtODIsNyArODIs
NyBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBk
aXIsIElubGluZUl0ZXJhdG9yIGl0ZXIpCiAKIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1
bj4gY3JlYXRlUnVuKGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0JiBvYmosIElubGlu
ZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
QmlkaVJ1bj4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRp
cigpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCaWRpUnVuPihzdGFydCwgZW5kLCBvYmosIHJl
c29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogfQogCiB2b2lkIENvbXBsZXhMaW5l
TGF5b3V0OjphcHBlbmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+KiBydW5zLCBp
bnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCYgb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXIm
IHJlc29sdmVyKQpAQCAtMTMwLDEyICsxMzAsMTIgQEAgdm9pZCBDb21wbGV4TGluZUxheW91dDo6
YXBwZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiogcnVucywgaW50IHN0YXIK
IHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBDb21wbGV4TGluZUxheW91dDo6Y3JlYXRl
Um9vdElubGluZUJveCgpCiB7CiAgICAgaWYgKGlzPFJlbmRlclNWR1RleHQ+KG1fZmxvdykpIHsK
LSAgICAgICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jvb3RJbmxpbmVCb3g+KGRv
d25jYXN0PFJlbmRlclNWR1RleHQ+KG1fZmxvdykpOworICAgICAgICBhdXRvIGJveCA9IG1ha2VV
bmlxdWU8U1ZHUm9vdElubGluZUJveD4oZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4obV9mbG93KSk7
CiAgICAgICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0
dXJuIGJveDsKICAgICB9CiAgICAgICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJv
b3RJbmxpbmVCb3g+KG1fZmxvdyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8Um9vdElubGluZUJv
eD4obV9mbG93KTsKIH0KIAogUm9vdElubGluZUJveCogQ29tcGxleExpbmVMYXlvdXQ6OmNyZWF0
ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3goKQpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgaW5saW5lIEJp
ZGlSdW4qIENvbXBsZXhMaW5lTGF5b3V0OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlz
dDxCaWRpUnVuPiYgYmkKICAgICAgICAgd2hpbGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNl
Q29udGV4dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBiYXNlQ29udGV4dCA9IHBhcmVudDsKIAot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4gbmV3VHJhaWxpbmdSdW4gPSBzdGQ6Om1h
a2VfdW5pcXVlPEJpZGlSdW4+KGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwg
dHJhaWxpbmdTcGFjZVJ1bi0+cmVuZGVyZXIoKSwgYmFzZUNvbnRleHQsIFVfT1RIRVJfTkVVVFJB
TCk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IG1h
a2VVbmlxdWU8QmlkaVJ1bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0
cmFpbGluZ1NwYWNlUnVuLT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFM
KTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAgICAg
ICAgdHJhaWxpbmdTcGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuLmdldCgpOwogICAgICAgICBpZiAo
ZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKQEAgLTE2MTcsNyArMTYxNyw3IEBAIHZv
aWQgQ29tcGxleExpbmVMYXlvdXQ6OmxpbmtUb0VuZExpbmVJZk5lZWRlZChMaW5lTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlKQogICAgICAgICBpZiAobGF5b3V0U3RhdGUuY2hlY2tGb3JGbG9hdHNG
cm9tTGFzdExpbmUoKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21WaXN1YWxPdmVy
ZmxvdyA9IGxhc3RSb290Qm94KCktPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygpOwogICAg
ICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21MYXlvdXRPdmVyZmxvdyA9IGxhc3RSb290Qm94KCkt
PmxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdygpOwotICAgICAgICAgICAgYXV0byBuZXdMaW5l
Qm94ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+KG1fZmxv
dyk7CisgICAgICAgICAgICBhdXRvIG5ld0xpbmVCb3ggPSBtYWtlVW5pcXVlPFRyYWlsaW5nRmxv
YXRzUm9vdElubGluZUJveD4obV9mbG93KTsKICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdGbG9h
dHNMaW5lQm94ID0gbmV3TGluZUJveC5nZXQoKTsKICAgICAgICAgICAgIG1fbGluZUJveGVzLmFw
cGVuZExpbmVCb3goV1RGTW92ZShuZXdMaW5lQm94KSk7CiAgICAgICAgICAgICB0cmFpbGluZ0Zs
b2F0c0xpbmVCb3gtPnNldENvbnN0cnVjdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GbG9hdGluZ09iamVjdHMuY3BwCmluZGV4IDRjZGQxMzljNDg3NTE2ZWEwZTdiMTIxM2I3MDNi
ZDM0MjdhYjAxOGMuLmE2YzY0ODE4YzQ5NzQ1NjA5MGY2NjIzYzMwNGI1ZDYyNzcwN2FlNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC03NSw3
ICs3NSw3IEBAIEZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gmIHJlbmRl
cmVyLCBUeXBlIHR5cGUsIGNvbnN0IExheW91dFJlY3QmCiAKIHN0ZDo6dW5pcXVlX3B0cjxGbG9h
dGluZ09iamVjdD4gRmxvYXRpbmdPYmplY3Q6OmNyZWF0ZShSZW5kZXJCb3gmIHJlbmRlcmVyKQog
ewotICAgIGF1dG8gb2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVu
ZGVyZXIpOworICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVu
ZGVyZXIpOwogICAgIG9iamVjdC0+c2V0U2hvdWxkUGFpbnQoIXJlbmRlcmVyLmhhc1NlbGZQYWlu
dGluZ0xheWVyKCkpOyAvLyBJZiBhIGxheWVyIGV4aXN0cywgdGhlIGZsb2F0IHdpbGwgcGFpbnQg
aXRzZWxmLiBPdGhlcndpc2Ugc29tZW9uZSBlbHNlIHdpbGwuCiAgICAgb2JqZWN0LT5zZXRJc0Rl
c2NlbmRhbnQodHJ1ZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTgzLDEyICs4MywxMiBAQCBz
dGQ6OnVuaXF1ZV9wdHI8RmxvYXRpbmdPYmplY3Q+IEZsb2F0aW5nT2JqZWN0OjpjcmVhdGUoUmVu
ZGVyQm94JiByZW5kZXJlcikKIAogc3RkOjp1bmlxdWVfcHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9h
dGluZ09iamVjdDo6Y29weVRvTmV3Q29udGFpbmVyKExheW91dFNpemUgb2Zmc2V0LCBib29sIHNo
b3VsZFBhaW50LCBib29sIGlzRGVzY2VuZGFudCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0
KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1h
cmdpbk9mZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxGbG9hdGluZ09iamVjdD4ocmVuZGVyZXIoKSwgdHlwZSgpLCBMYXlvdXRSZWN0KGZy
YW1lUmVjdCgpLmxvY2F0aW9uKCkgLSBvZmZzZXQsIGZyYW1lUmVjdCgpLnNpemUoKSksIG1hcmdp
bk9mZnNldCgpLCBzaG91bGRQYWludCwgaXNEZXNjZW5kYW50KTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPEZsb2F0aW5nT2JqZWN0PiBGbG9hdGluZ09iamVjdDo6Y2xvbmVGb3JOZXdQYXJlbnQoKSBj
b25zdAogewotICAgIGF1dG8gY2xvbmVPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5n
T2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0LCBtX21hcmdpbk9mZnNldCwg
bV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOworICAgIGF1dG8gY2xvbmVPYmplY3QgPSBt
YWtlVW5pcXVlPEZsb2F0aW5nT2JqZWN0PihyZW5kZXJlcigpLCB0eXBlKCksIG1fZnJhbWVSZWN0
LCBtX21hcmdpbk9mZnNldCwgbV9zaG91bGRQYWludCwgbV9pc0Rlc2NlbmRhbnQpOwogICAgIGNs
b25lT2JqZWN0LT5tX3BhZ2luYXRpb25TdHJ1dCA9IG1fcGFnaW5hdGlvblN0cnV0OwogICAgIGNs
b25lT2JqZWN0LT5tX2lzUGxhY2VkID0gbV9pc1BsYWNlZDsKICAgICByZXR1cm4gY2xvbmVPYmpl
Y3Q7CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OmNvbXB1dGVQbGFj
ZWRGbG9hdHNUcmVlKCkKICAgICBpZiAobV9zZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0aW5nT2Jq
ZWN0VHJlZT4oKTsKKyAgICBtX3BsYWNlZEZsb2F0c1RyZWUgPSBtYWtlVW5pcXVlPEZsb2F0aW5n
T2JqZWN0VHJlZT4oKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NldC5iZWdpbigpLCBlbmQgPSBt
X3NldC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBm
bG9hdGluZ09iamVjdCA9IGl0LT5nZXQoKTsKICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5p
c1BsYWNlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IGM3MmQwMWQ4MWM3ZDcx
NjYxNTc5ZTNiYTAxODMwZTQyOWQzMGY2ODguLjFlOTExYWU2MGE2MTI2ODlhNDk3ZmYyZDViN2Yw
ZDUwYjg3ZTI5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTIzMyw3ICsyMzMs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3Jp
ZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYQogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFy
eWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6
ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBl
bmRPZlZhcnlpbmdUcmFja0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgIGlm
IChpc0VtcHR5QXJlYUVub3VnaChyb3dTcGFuLCBjb2x1bW5TcGFuKSkgewotICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRB
cmVhPihHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9y
b3dJbmRleCArIHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4o
bV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4o
R3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5k
ZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29s
dW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CiAgICAgICAgICAgICAvLyBB
ZHZhbmNlIHRoZSBpdGVyYXRvciB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdlIHdv
dWxkIHJldHVybiB0aGUgc2FtZSBncmlkIGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAgICAg
ICsrdmFyeWluZ1RyYWNrSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAppbmRl
eCA1ZmMzMjgxNTNhNmQ4YmZjNDg4M2JhNTEyMWNjYTBiZjZmMmU5OWQwLi42NjA5MDk4ZjljODcw
NDY4ODExNDE4YWIxNzgyOTQxN2JlZTJkMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZv
aWQgR3JpZEJhc2VsaW5lQWxpZ25tZW50Ojp1cGRhdGVCYXNlbGluZUFsaWdubWVudENvbnRleHQo
SXRlbVBvc2l0aW9uIHByZWZlcmVuCiAKICAgICAvLyBMb29raW5nIGZvciBhIGNvbXBhdGlibGUg
YmFzZWxpbmUtc2hhcmluZyBncm91cC4KICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0g
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2Vs
aW5lQ29udGV4dD4oY2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CisgICAgICAg
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPEJhc2VsaW5lQ29udGV4dD4o
Y2hpbGQsIHByZWZlcmVuY2UsIGFzY2VudCwgZGVzY2VudCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IGF1dG8qIGNvbnRleHQgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogICAgICAg
ICBjb250ZXh0LT51cGRhdGVTaGFyZWRHcm91cChjaGlsZCwgcHJlZmVyZW5jZSwgYXNjZW50LCBk
ZXNjZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Np
emluZ0FsZ29yaXRobS5jcHAKaW5kZXggYWRkZWRjNDI4YjFmMmZkYjM1MDNlODEyNjI2Yjk3Njkz
YTNlN2I1Zi4uYjJiMDExYmRmNzQ5MWIzNWFiMWRiYjdhYzZiMjYzOTYxNzIxY2NhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRo
bS5jcHAKQEAgLTY4MSw3ICs2ODEsNyBAQCBkb3VibGUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
Ojpjb21wdXRlRmxleEZhY3RvclVuaXRTaXplKGNvbnN0IFZlY3RvcjxHcmlkVHJhYwogICAgICAg
ICAgICAgbGVmdE92ZXJTcGFjZSAtPSBiYXNlU2l6ZTsKICAgICAgICAgICAgIGZsZXhGYWN0b3JT
dW0gLT0gZmxleEZhY3RvcjsKICAgICAgICAgICAgIGlmICghdHJhY2tzVG9UcmVhdEFzSW5mbGV4
aWJsZSkKLSAgICAgICAgICAgICAgICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxUcmFja0luZGV4U2V0PigpOworICAgICAgICAgICAgICAgIHRyYWNrc1RvVHJl
YXRBc0luZmxleGlibGUgPSBtYWtlVW5pcXVlPFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAgICAg
ICB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlLT5hZGQoaW5kZXgpOwogICAgICAgICAgICAgdmFs
aWRGbGV4RmFjdG9yVW5pdCA9IGZhbHNlOwogICAgICAgICB9CkBAIC0xMjYwLDEwICsxMjYwLDEw
IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cChHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lCiAgICAgbV9zaXppbmdPcGVyYXRpb24gPSBzaXpp
bmdPcGVyYXRpb247CiAgICAgc3dpdGNoIChtX3NpemluZ09wZXJhdGlvbikgewogICAgIGNhc2Ug
SW50cmluc2ljU2l6ZUNvbXB1dGF0aW9uOgotICAgICAgICBtX3N0cmF0ZWd5ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5PigqdGhpcyk7CisgICAgICAgIG1fc3RyYXRl
Z3kgPSBtYWtlVW5pcXVlPEluZGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUcmFja1NpemluZzoKLSAgICAgICAgbV9zdHJhdGVneSA9IHN0ZDo6
bWFrZV91bmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKKyAgICAgICAgbV9zdHJh
dGVneSA9IG1ha2VVbmlxdWU8RGVmaW5pdGVTaXplU3RyYXRlZ3k+KCp0aGlzKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKaW5kZXggNzNiMzY1NDc2NzE0MGEwMzcwZTRkNTY5NTZlNTRmMjY3NGI1OGIzNi4uYjNjNDAw
NzkwMmRmNjA0ODYyYTVhYzdjMjk5OGNiYWQ3M2YxMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtOTYsNyArOTYsNyBAQCBIaXRUZXN0UmVzdWx0
OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pc092
ZXJXaWRnZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBO
b2RlU2V0IGluIGNhc2Ugb2YgbGlzdCBoaXQgdGVzdC4KLSAgICBtX2xpc3RCYXNlZFRlc3RSZXN1
bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVT
ZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKKyAgICBtX2xpc3RC
YXNlZFRlc3RSZXN1bHQgPSBvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQgPyBtYWtlVW5pcXVl
PE5vZGVTZXQ+KCpvdGhlci5tX2xpc3RCYXNlZFRlc3RSZXN1bHQpIDogbnVsbHB0cjsKIH0KIAog
SGl0VGVzdFJlc3VsdDo6fkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7CkBAIC0xMTMsNyArMTEz
LDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRl
c3RSZXN1bHQmIG90aGVyKQogICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0
KCk7CiAKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiBsaXN0IGhpdCB0
ZXN0LgotICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlzdEJhc2VkVGVzdFJl
c3VsdCA/IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2VkVGVzdFJl
c3VsdCkgOiBudWxscHRyOworICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG90aGVyLm1fbGlz
dEJhc2VkVGVzdFJlc3VsdCA/IG1ha2VVbmlxdWU8Tm9kZVNldD4oKm90aGVyLm1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCkgOiBudWxscHRyOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjkwLDE0
ICs2OTAsMTQgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgb3RoZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXEKIGNvbnN0IEhpdFRlc3RSZXN1bHQ6
Ok5vZGVTZXQmIEhpdFRlc3RSZXN1bHQ6Omxpc3RCYXNlZFRlc3RSZXN1bHQoKSBjb25zdAogewog
ICAgIGlmICghbV9saXN0QmFzZWRUZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RS
ZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2Vk
VGVzdFJlc3VsdCA9IG1ha2VVbmlxdWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJh
c2VkVGVzdFJlc3VsdDsKIH0KIAogSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgSGl0VGVzdFJlc3Vs
dDo6bXV0YWJsZUxpc3RCYXNlZFRlc3RSZXN1bHQoKQogewogICAgIGlmICghbV9saXN0QmFzZWRU
ZXN0UmVzdWx0KQotICAgICAgICBtX2xpc3RCYXNlZFRlc3RSZXN1bHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVTZXQ+KCk7CisgICAgICAgIG1fbGlzdEJhc2VkVGVzdFJlc3VsdCA9IG1ha2VVbmlx
dWU8Tm9kZVNldD4oKTsKICAgICByZXR1cm4gKm1fbGlzdEJhc2VkVGVzdFJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAppbmRleCA0M2M2NTM4NzZj
Zjk4NGE2MmI2ZmM5Mjk0NWQzZGQ2OTBjYTNlZGI5Li4xNWZkZTU0ZGU1ZDM0OTkyMDgyZDQzOWEy
OTBhNTFmOTI1Y2MyZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0
b3IuaApAQCAtNDkzLDcgKzQ5Myw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbnVtYmVyT2ZJ
c29sYXRlQW5jZXN0b3JzKGNvbnN0IElubGluZUl0ZXJhdG9yJiBpdGVyKQogLy8gb2YgQmlkaVJl
c29sdmVyIHdoaWNoIGtub3dzIG5vdGhpbmcgYWJvdXQgUmVuZGVyT2JqZWN0cy4KIHN0YXRpYyBp
bmxpbmUgdm9pZCBhZGRQbGFjZWhvbGRlclJ1bkZvcklzb2xhdGVkSW5saW5lKElubGluZUJpZGlS
ZXNvbHZlciYgcmVzb2x2ZXIsIFJlbmRlck9iamVjdCYgb2JqLCB1bnNpZ25lZCBwb3MsIFJlbmRl
ckVsZW1lbnQmIHJvb3QpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IGlzb2xhdGVk
UnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihwb3MsIHBvcywgb2JqLCByZXNvbHZlci5j
b250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmlkaVJ1bj4g
aXNvbGF0ZWRSdW4gPSBtYWtlVW5pcXVlPEJpZGlSdW4+KHBvcywgcG9zLCBvYmosIHJlc29sdmVy
LmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOwogICAgIC8vIEZJWE1FOiBpc29sYXRlZFJ1bnMo
KSBjb3VsZCBiZSBhIGhhc2ggb2Ygb2JqZWN0LT5ydW4gYW5kIHRoZW4gd2UgY291bGQgY2hlYXBs
eQogICAgIC8vIEFTU0VSVCBoZXJlIHRoYXQgd2UgZGlkbid0IGNyZWF0ZSBtdWx0aXBsZSBvYmpl
Y3RzIGZvciB0aGUgc2FtZSBpbmxpbmUuCiAgICAgcmVzb2x2ZXIuc2V0V2hpdGVzcGFjZUNvbGxh
cHNpbmdUcmFuc2l0aW9uRm9ySXNvbGF0ZWRSdW4oKmlzb2xhdGVkUnVuLCByZXNvbHZlci53aGl0
ZXNwYWNlQ29sbGFwc2luZ1N0YXRlKCkuY3VycmVudFRyYW5zaXRpb24oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJPdmVybGFwTWFwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBNYXAuY3BwCmluZGV4IDc4ZmMwODg2YWJlMTdk
YjExOTA0ZGY4YjFmZjc2ZTkyMDhlOTllN2IuLjk2YWY5NWE0NTU2OTUwZTgxMjZiOTUzNzM1MzRk
NDc2ZGFlMzU2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92
ZXJsYXBNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllck92ZXJsYXBN
YXAuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgYm9vbCBMYXllck92ZXJsYXBNYXA6Om92ZXJsYXBz
TGF5ZXJzKGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY29uc3QgTGF5b3V0UmVjdCYKIAogdm9p
ZCBMYXllck92ZXJsYXBNYXA6OnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcigpCiB7Ci0gICAgbV9v
dmVybGFwU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8T3ZlcmxhcE1hcENvbnRhaW5lcj4o
bV9yb290TGF5ZXIpKTsKKyAgICBtX292ZXJsYXBTdGFjay5hcHBlbmQobWFrZVVuaXF1ZTxPdmVy
bGFwTWFwQ29udGFpbmVyPihtX3Jvb3RMYXllcikpOwogfQogCiB2b2lkIExheWVyT3ZlcmxhcE1h
cDo6cG9wQ29tcG9zaXRpbmdDb250YWluZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggNGRiYTNmMWM0MTA1YWZiMGU4ZTRjNzZhN2NmY2I5ZTVmZmY3MTg1
NC4uMDAxOTI1ODgyZTUwMjhjOGEyMDk5YjRiYmRlMzczMTY1YjRhMjRmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGlj
IHZvaWQgaW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMoY29uc3QgUmVuZGVyQmxvY2smIGNv
bnRhaW5lciwgUmVuZGVyQm8KICAgICB9CiAgICAgCiAgICAgYXV0byYgZGVzY2VuZGFudFNldCA9
IHBlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+ZW5zdXJlKCZjb250YWluZXIsIFtdIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+
KCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0
PigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGJvb2wgYWRkZWQgPSBkZXNjZW5k
YW50U2V0LT5hZGQoJmRlc2NlbmRhbnQpLmlzTmV3RW50cnk7CkBAIC0xMTUsNyArMTE1LDcgQEAg
c3RhdGljIHZvaWQgaW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMoY29uc3QgUmVuZGVyQmxv
Y2smIGNvbnRhaW5lciwgUmVuZGVyQm8KICAgICB9CiAgICAgCiAgICAgYXV0byYgY29udGFpbmVy
U2V0ID0gcGVyY2VudEhlaWdodENvbnRhaW5lck1hcC0+ZW5zdXJlKCZkZXNjZW5kYW50LCBbXSB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxv
Y2sqPj4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SGFzaFNldDxjb25zdCBSZW5kZXJC
bG9jayo+PigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVCghY29udGFp
bmVyU2V0LT5jb250YWlucygmY29udGFpbmVyKSk7CkBAIC0xNjEsNyArMTYxLDcgQEAgY2xhc3Mg
UG9zaXRpb25lZERlc2NlbmRhbnRzTWFwIHsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8mIGRl
c2NlbmRhbnRzID0gbV9kZXNjZW5kYW50c01hcC5lbnN1cmUoJmNvbnRhaW5pbmdCbG9jaywgW10g
ewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHJhY2tlZFJlbmRlcmVyTGlz
dEhhc2hTZXQ+KCk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUcmFja2VkUmVuZGVy
ZXJMaXN0SGFzaFNldD4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAg
IGJvb2wgaXNOZXdFbnRyeSA9IG1vdmVEZXNjZW5kYW50VG9FbmQgPT0gTW92ZURlc2NlbmRhbnRU
b0VuZDo6WWVzID8gZGVzY2VuZGFudHMtPmFwcGVuZE9yTW92ZVRvTGFzdCgmcG9zaXRpb25lZERl
c2NlbmRhbnQpLmlzTmV3RW50cnkKQEAgLTUyOCw3ICs1MjgsNyBAQCBzdGF0aWMgaW5saW5lIFVw
ZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKiBjdXJyZW50VXBkYXRlU2Nyb2xs
SW5mb0FmdAogdm9pZCBSZW5kZXJCbG9jazo6YmVnaW5VcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlv
dXRUcmFuc2FjdGlvbigpCiB7CiAgICAgaWYgKCF1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRU
cmFuc2FjdGlvblN0YWNrKCkpCi0gICAgICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRy
YW5zYWN0aW9uU3RhY2soKSA9IHN0ZDo6bWFrZV91bmlxdWU8RGVsYXllZFVwZGF0ZVNjcm9sbElu
Zm9TdGFjaz4oKTsKKyAgICAgICAgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b25TdGFjaygpID0gbWFrZVVuaXF1ZTxEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1N0YWNrPigpOwog
ICAgIGlmICh1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvblN0YWNrKCktPmlz
RW1wdHkoKSB8fCBjdXJyZW50VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24o
KS0+dmlldyAhPSAmdmlldygpKQogICAgICAgICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRU
cmFuc2FjdGlvblN0YWNrKCktPmFwcGVuZChVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFu
c2FjdGlvbih2aWV3KCkpKTsKICAgICArK2N1cnJlbnRVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlv
dXRUcmFuc2FjdGlvbigpLT5uZXN0ZWRDb3VudDsKQEAgLTYyMCw3ICs2MjAsNyBAQCBzdGF0aWMg
UmVuZGVyQmxvY2tSYXJlRGF0YSYgZW5zdXJlQmxvY2tSYXJlRGF0YShjb25zdCBSZW5kZXJCbG9j
ayYgYmxvY2spCiAgICAgCiAgICAgYXV0byYgcmFyZURhdGEgPSBnUmFyZURhdGFNYXAtPmFkZCgm
YmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXJhcmVEYXRhKQotICAg
ICAgICByYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tSYXJlRGF0YT4oKTsK
KyAgICAgICAgcmFyZURhdGEgPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrUmFyZURhdGE+KCk7CiAg
ICAgcmV0dXJuICpyYXJlRGF0YS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA3ZjFlNjM5NzA2M2JlNGY4ZGY5YjU3ZjE3NWQ2
ZTI2ZTc4ZWZiMTM0Li5iODY0MmQxNzIwM2JkNGJmMjViZGUxNzFmOTg3MGFmN2Q1YTQzYTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtNjc4
LDcgKzY3OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxpbmVDaGlsZHJlbihi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlCiAgICAgbV9zaW1wbGVMaW5lTGF5
b3V0ID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9jb21wbGV4TGluZUxheW91dCkKLSAgICAgICAg
bV9jb21wbGV4TGluZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGxleExpbmVMYXlvdXQ+
KCp0aGlzKTsKKyAgICAgICAgbV9jb21wbGV4TGluZUxheW91dCA9IG1ha2VVbmlxdWU8Q29tcGxl
eExpbmVMYXlvdXQ+KCp0aGlzKTsKIAogICAgIG1fY29tcGxleExpbmVMYXlvdXQtPmxheW91dExp
bmVCb3hlcyhyZWxheW91dENoaWxkcmVuLCByZXBhaW50TG9naWNhbFRvcCwgcmVwYWludExvZ2lj
YWxCb3R0b20pOwogfQpAQCAtMjAxOSw3ICsyMDE5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmxheW91dExpbmVHcmlkQm94KCkKICAgICAKICAgICBzZXRMaW5lR3JpZEJveCgwKTsKIAotICAg
IGF1dG8gbGluZUdyaWRCb3ggPSBzdGQ6Om1ha2VfdW5pcXVlPFJvb3RJbmxpbmVCb3g+KCp0aGlz
KTsKKyAgICBhdXRvIGxpbmVHcmlkQm94ID0gbWFrZVVuaXF1ZTxSb290SW5saW5lQm94PigqdGhp
cyk7CiAgICAgbGluZUdyaWRCb3gtPnNldEhhc1RleHRDaGlsZHJlbigpOyAvLyBOZWVkZWQgdG8g
bWFrZSB0aGUgbGluZSBhc2NlbnQvZGVzY2VudCBhY3R1YWxseSBiZSBob25vcmVkIGluIHF1aXJr
cyBtb2RlLgogICAgIGxpbmVHcmlkQm94LT5zZXRDb25zdHJ1Y3RlZCgpOwogICAgIEdseXBoT3Zl
cmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwIHRleHRCb3hEYXRhTWFwOwpAQCAtMjI2MCw3ICsyMjYw
LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVy
QmxvY2smIHJvb3RCbG9jaywgY29uc3QgUGFpbnQKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNy
ZWF0ZUZsb2F0aW5nT2JqZWN0cygpCiB7Ci0gICAgbV9mbG9hdGluZ09iamVjdHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0aW5nT2JqZWN0cz4oKnRoaXMpOworICAgIG1fZmxvYXRpbmdPYmplY3Rz
ID0gbWFrZVVuaXF1ZTxGbG9hdGluZ09iamVjdHM+KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZWN0cygpCkBAIC0zNjc3LDcgKzM2NzcsNyBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlTGluZUJveGVzKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQVNTRVJUKCFtX2NvbXBsZXhMaW5lTGF5b3V0KTsKLSAgICBtX2NvbXBsZXhMaW5lTGF5
b3V0ID0gc3RkOjptYWtlX3VuaXF1ZTxDb21wbGV4TGluZUxheW91dD4oKnRoaXMpOworICAgIG1f
Y29tcGxleExpbmVMYXlvdXQgPSBtYWtlVW5pcXVlPENvbXBsZXhMaW5lTGF5b3V0PigqdGhpcyk7
CiAKICAgICBpZiAoU2ltcGxlTGluZUxheW91dDo6Y2FuVXNlRm9yTGluZUJveFRyZWUoKnRoaXMs
ICptX3NpbXBsZUxpbmVMYXlvdXQpKSB7CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OmdlbmVy
YXRlTGluZUJveFRyZWUoKnRoaXMsICptX3NpbXBsZUxpbmVMYXlvdXQpOwpAQCAtMzczNSw3ICsz
NzM1LDcgQEAgUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YSYgUmVuZGVy
QmxvY2tGbG93OjplbnN1cmVSYXJlQmxvY2tGbG93RGEKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpt
YXRlcmlhbGl6ZVJhcmVCbG9ja0Zsb3dEYXRhKCkKIHsKICAgICBBU1NFUlQoIWhhc1JhcmVCbG9j
a0Zsb3dEYXRhKCkpOwotICAgIG1fcmFyZUJsb2NrRmxvd0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGE+KCp0aGlzKTsKKyAgICBt
X3JhcmVCbG9ja0Zsb3dEYXRhID0gbWFrZVVuaXF1ZTxSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJs
b2NrRmxvd1JhcmVEYXRhPigqdGhpcyk7CiB9CiAKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBkYjNhNmRhOGYxYTMy
MTUzNzAwZTczNDE3ZDEwZjZhNDgxMzA4MzVmLi45Njc3ZGFlOWNmZTI4YjFkYzM5MDVjM2E4MmIw
NmVjNmVjZGNkYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAt
MTE4LDcgKzExOCw3IEBAIHN0YXRpYyBDb250cm9sU3RhdGVzUmVuZGVyZXJNYXAmIGNvbnRyb2xT
dGF0ZXNSZW5kZXJlck1hcCgpCiBzdGF0aWMgQ29udHJvbFN0YXRlcyogY29udHJvbFN0YXRlc0Zv
clJlbmRlcmVyKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIpCiB7CiAgICAgcmV0dXJuIGNvbnRy
b2xTdGF0ZXNSZW5kZXJlck1hcCgpLmVuc3VyZSgmcmVuZGVyZXIsIFtdIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbFN0YXRlcz4oKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Q29udHJvbFN0YXRlcz4oKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7
CiB9CiAKQEAgLTIxMjIsNyArMjEyMiw3IEBAIExheW91dFNpemUgUmVuZGVyQm94OjpvZmZzZXRG
cm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0CiAKIHN0
ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJCb3g6OmNyZWF0ZUlubGluZUJv
eCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRo
aXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZUVsZW1lbnRCb3g+KCp0aGlzKTsKIH0K
IAogdm9pZCBSZW5kZXJCb3g6OmRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4
IGJjYmE3YjQxNjg1YTNmNDEyMGMxZWVhNTQ2MTAyZjgzNmQ1NmFhMjYuLjkwMWM0MTEwZTFjNTZi
YTYwYTRkZDNiYTdiOTNmYWFmNjA0MWNiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjUzOCw3ICsyNTM4LDcgQEAgYXV0
byBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZW5zdXJlQ29udGludWF0aW9uQ2hhaW5Ob2RlKCkgLT4g
Q29udGludWF0aW9uQ2hhaW5Ob2QKIHsKICAgICBzZXRIYXNDb250aW51YXRpb25DaGFpbk5vZGUo
dHJ1ZSk7CiAgICAgcmV0dXJuICpjb250aW51YXRpb25DaGFpbk5vZGVNYXAoKS5lbnN1cmUodGhp
cywgWyZdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGludWF0aW9uQ2hh
aW5Ob2RlPigqdGhpcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENvbnRpbnVhdGlvbkNo
YWluTm9kZT4oKnRoaXMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IDIyMTA0NDM0ZTQ1ZDZjOTg0
NzZmZmQyOWFiNTUwYmQ2MmFjNDA4ZmUuLmMxZTAzZjA5N2VmNTlhZDVhMTZiMTk0YzljMDVkNjQ5
ZjdmZjE1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3Vu
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAK
QEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgIGlmIChwbGFj
ZS5wYXJlbnQpCiAgICAgICAgIHBsYWNlLnBhcmVudC0+aW5zZXJ0QWZ0ZXIobmV3Tm9kZSwgcGxh
Y2UucHJldmlvdXNTaWJsaW5nLmdldCgpLCBpZGVudGlmaWVyKTsKIAotICAgIG1hcHMuYWRkKCZy
ZW5kZXJlciwgc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyTWFwPigpKS5pdGVyYXRvci0+dmFsdWUt
PmFkZChpZGVudGlmaWVyLCBuZXdOb2RlLmNvcHlSZWYoKSk7CisgICAgbWFwcy5hZGQoJnJlbmRl
cmVyLCBtYWtlVW5pcXVlPENvdW50ZXJNYXA+KCkpLml0ZXJhdG9yLT52YWx1ZS0+YWRkKGlkZW50
aWZpZXIsIG5ld05vZGUuY29weVJlZigpKTsKICAgICByZW5kZXJlci5zZXRIYXNDb3VudGVyTm9k
ZU1hcCh0cnVlKTsKIAogICAgIGlmIChuZXdOb2RlLT5wYXJlbnQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRDb250YWluZXIuY3BwCmluZGV4IDUx
YTllNDY4NDM0NGQyNjM3ZDA0YTkxZmI1OWEzY2Q2ZWY4ZjA2ZWQuLjdmNmNhYmMwNTkxMjEwODFj
NGQ3Mjg2MDIxOWJkNGI5Yzg1Yjk0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFnbWVudENvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYWdtZW50Q29udGFpbmVyLmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIFJl
bmRlckJveEZyYWdtZW50SW5mbyogUmVuZGVyRnJhZ21lbnRDb250YWluZXI6OnNldFJlbmRlckJv
eEZyYWdtZW50SW5mbyhjb25zdCBSCiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CiAKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQm94RnJhZ21lbnRJbmZvPiYgYm94SW5mbyA9IG1fcmVuZGVy
Qm94RnJhZ21lbnRJbmZvLmFkZChib3gsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQm94RnJhZ21l
bnRJbmZvPihsb2dpY2FsTGVmdEluc2V0LCBsb2dpY2FsUmlnaHRJbnNldCwgY29udGFpbmluZ0Js
b2NrQ2hhaW5Jc0luc2V0KSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJCb3hGcmFnbWVudEluZm8+JiBib3hJbmZvID0gbV9yZW5kZXJCb3hGcmFnbWVudEluZm8u
YWRkKGJveCwgbWFrZVVuaXF1ZTxSZW5kZXJCb3hGcmFnbWVudEluZm8+KGxvZ2ljYWxMZWZ0SW5z
ZXQsIGxvZ2ljYWxSaWdodEluc2V0LCBjb250YWluaW5nQmxvY2tDaGFpbklzSW5zZXQpKS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgcmV0dXJuIGJveEluZm8uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZsb3cuY3BwCmluZGV4IDQ0ZjU2
MzViYTUzYWUzZjdlOTRkN2FjOGU0OTY3MzkwZjU4YzJlNTYuLjg0NmRkM2EwMmFhODZhYWY3MTVj
MDk0ZThjMzUwYzE2NmE4NjdiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcApAQCAtMTExNSw3ICsxMTE1LDcgQEAgUmVuZGVyRnJh
Z21lbnRDb250YWluZXIqIFJlbmRlckZyYWdtZW50ZWRGbG93OjpjdXJyZW50RnJhZ21lbnQoKSBj
b25zdAogQ29udGFpbmluZ0ZyYWdtZW50TWFwJiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6Y29udGFp
bmluZ0ZyYWdtZW50TWFwKCkKIHsKICAgICBpZiAoIW1fbGluZVRvRnJhZ21lbnRNYXApCi0gICAg
ICAgIG1fbGluZVRvRnJhZ21lbnRNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRhaW5pbmdGcmFn
bWVudE1hcD4oKTsKKyAgICAgICAgbV9saW5lVG9GcmFnbWVudE1hcCA9IG1ha2VVbmlxdWU8Q29u
dGFpbmluZ0ZyYWdtZW50TWFwPigpOwogCiAgICAgcmV0dXJuICptX2xpbmVUb0ZyYWdtZW50TWFw
LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdl
b21ldHJ5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1h
cC5jcHAKaW5kZXggYjkwNDVlNjc5MDg3M2FiZjgxYTkwZGZhNWJiYjExMDkzYzY3N2IwMi4uNTJj
NzkwZDRlNTc4OWIxNzhlMjZjOGFiZDhiYTdiMTNjYzU5MTUxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAg
dm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cHVzaChjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk0KICAgICAKICAgICBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAm
IHN0ZXAgPSBtX21hcHBpbmdbbV9pbnNlcnRpb25Qb3NpdGlvbl07CiAgICAgaWYgKCF0LmlzSW50
ZWdlclRyYW5zbGF0aW9uKCkpCi0gICAgICAgIHN0ZXAubV90cmFuc2Zvcm0gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih0KTsKKyAgICAgICAgc3RlcC5tX3RyYW5zZm9y
bSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KHQpOwogICAgIGVsc2UKICAgICAg
ICAgc3RlcC5tX29mZnNldCA9IExheW91dFNpemUodC5lKCksIHQuZigpKTsKIApAQCAtMjM1LDcg
KzIzNSw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hWaWV3KGNvbnN0IFJlbmRlclZp
ZXcqIHZpZXcsIGNvbnN0IExheW91dFNpemUmIHNjcm9sCiAgICAgUmVuZGVyR2VvbWV0cnlNYXBT
dGVwJiBzdGVwID0gbV9tYXBwaW5nW21faW5zZXJ0aW9uUG9zaXRpb25dOwogICAgIHN0ZXAubV9v
ZmZzZXQgPSBzY3JvbGxPZmZzZXQ7CiAgICAgaWYgKHQpCi0gICAgICAgIHN0ZXAubV90cmFuc2Zv
cm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigqdCk7CisgICAgICAg
IHN0ZXAubV90cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4PigqdCk7
CiAgICAgCiAgICAgc3RlcEluc2VydGVkKHN0ZXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwCmluZGV4IGUzNWEyYzEzMjI1ZDQ3MjVjZDg4YzIyZjZkMDRjY2M5ZDBm
MzQ5N2YuLjQ5YWQwMzU1NTM3MzQyMjVmMWRkZDYzM2I0MmMxMzgzMmNjZWZiZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTU0NCw3ICs1NDQsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0
eVRyYWNrc0ZvckF1dG9SZXBlYQogICAgIHVuc2lnbmVkIGxhc3RBdXRvUmVwZWF0VHJhY2sgPSBm
aXJzdEF1dG9SZXBlYXRUcmFjayArIGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhkaXJlY3Rpb24pOwog
CiAgICAgaWYgKCFncmlkLmhhc0dyaWRJdGVtcygpKSB7Ci0gICAgICAgIGVtcHR5VHJhY2tJbmRl
eGVzID0gc3RkOjptYWtlX3VuaXF1ZTxPcmRlcmVkVHJhY2tJbmRleFNldD4oKTsKKyAgICAgICAg
ZW1wdHlUcmFja0luZGV4ZXMgPSBtYWtlVW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIHRyYWNrSW5kZXggPSBmaXJzdEF1dG9SZXBlYXRUcmFjazsg
dHJhY2tJbmRleCA8IGxhc3RBdXRvUmVwZWF0VHJhY2s7ICsrdHJhY2tJbmRleCkKICAgICAgICAg
ICAgIGVtcHR5VHJhY2tJbmRleGVzLT5hZGQodHJhY2tJbmRleCk7CiAgICAgfSBlbHNlIHsKQEAg
LTU1Miw3ICs1NTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJl
bmRlckdyaWQ6OmNvbXB1dGVFbXB0eVRyYWNrc0ZvckF1dG9SZXBlYQogICAgICAgICAgICAgR3Jp
ZEl0ZXJhdG9yIGl0ZXJhdG9yKGdyaWQsIGRpcmVjdGlvbiwgdHJhY2tJbmRleCk7CiAgICAgICAg
ICAgICBpZiAoIWl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFlbXB0eVRyYWNrSW5kZXhlcykKLSAgICAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4
ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9yZGVyZWRUcmFja0luZGV4U2V0PigpOworICAgICAgICAg
ICAgICAgICAgICBlbXB0eVRyYWNrSW5kZXhlcyA9IG1ha2VVbmlxdWU8T3JkZXJlZFRyYWNrSW5k
ZXhTZXQ+KCk7CiAgICAgICAgICAgICAgICAgZW1wdHlUcmFja0luZGV4ZXMtPmFkZCh0cmFja0lu
ZGV4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzMyLDcgKzczMiw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxHcmlkQXJlYT4gUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3Bl
Y2lmaWVkUG9zaXRpb25zT3V0CiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZDcm9zc0RpcmVjdGlv
biA9IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1bnNpZ25lZCBjcm9zc0Rp
cmVjdGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9Q
bGFjZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAgR3JpZFNwYW4gY3Jvc3NE
aXJlY3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4o
ZW5kT2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiArIGNyb3NzRGlyZWN0aW9u
U3BhblNpemUpOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdyaWRBcmVhPihzcGVjaWZp
ZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zIDogc3Bl
Y2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHNwZWNp
ZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxHcmlkQXJlYT4oc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9z
c0RpcmVjdGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0
aW9uID09IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBv
c2l0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJ
dGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9Hcmlk
SXRlbXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRl
eCA4OTEzZTc2YzlkNjFjOWQyNTQxOTkwYTkwMWI3YjAyOTRlNDhhYWRjLi5mNTFlMmZlYjM3ZTFm
Y2YwZmQwZTc5MWFlNjRmMDNlZTg4YTJhN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSwgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgY29uc3QgZmxvYXQgaW1hZ2VE
ZXZpY2VQaXhlbFJhdGlvKQogICAgIDogUmVuZGVyUmVwbGFjZWQoZWxlbWVudCwgV1RGTW92ZShz
dHlsZSksIEludFNpemUoKSkKLSAgICAsIG1faW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3Rk
OjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2Up
IDogc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQorICAgICwgbV9pbWFn
ZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlPigqc3R5bGVJbWFnZSkgOiBtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkp
CiAgICAgLCBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyhpbWFnZURldmljZVBpeGVsUmF0aW8pCiB7
CiAgICAgdXBkYXRlQWx0VGV4dCgpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFJlbmRlckltYWdlOjpS
ZW5kZXJJbWFnZShFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlLCBTdHlsZUlt
YWdlKiBzdHlsCiAKIFJlbmRlckltYWdlOjpSZW5kZXJJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQs
IFJlbmRlclN0eWxlJiYgc3R5bGUsIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UpCiAgICAgOiBSZW5k
ZXJSZXBsYWNlZChkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIEludFNpemUoKSkKLSAgICAsIG1f
aW1hZ2VSZXNvdXJjZShzdHlsZUltYWdlID8gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZT4oKnN0eWxlSW1hZ2UpIDogc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJ
bWFnZVJlc291cmNlPigpKQorICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBtYWtl
VW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBtYWtl
VW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggOWQ4YTY1OTM0YmEzZmQyNTQ3NGMzOWM5MWZl
ZWM0M2FhMGM5ZjlmNS4uMTUzMjVjZGExNjkwNjdhNTY5MWI4ODVhOGRmZGM3YWE5MDM2NDA0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTExMDAsNyAr
MTEwMCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpkZWxldGVMaW5lcygpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUlubGluZUZsb3dCb3goKQog
ewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGbG93Qm94PigqdGhpcyk7CiB9CiAKIElubGluZUZs
b3dCb3gqIFJlbmRlcklubGluZTo6Y3JlYXRlQW5kQXBwZW5kSW5saW5lRmxvd0JveCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBmOWYwZDBkNGNlZTY2YzFm
NDNkZTUzMmI2MTAwNTMyYmZiNjE1MDhjLi4xODU0Njg3MDUxNmU0ZDBmZDVlMmIwMjhkZWIzYmM0
MGNlNmM4YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTcwMCw3ICs3MDAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCgp
CiAgICAgICAgIC8vIElnbm9yZSBub24tb3ZlcmZsb3cgbGF5ZXJzIGFuZCByZWZsZWN0aW9ucy4K
ICAgICAgICAgaWYgKGNoaWxkLT5pc05vcm1hbEZsb3dPbmx5KCkgJiYgIWlzUmVmbGVjdGlvbkxh
eWVyKCpjaGlsZCkpIHsKICAgICAgICAgICAgIGlmICghbV9ub3JtYWxGbG93TGlzdCkKLSAgICAg
ICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVu
ZGVyTGF5ZXIqPj4oKTsKKyAgICAgICAgICAgICAgICBtX25vcm1hbEZsb3dMaXN0ID0gbWFrZVVu
aXF1ZTxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4oKTsKICAgICAgICAgICAgIG1fbm9ybWFsRmxvd0xp
c3QtPmFwcGVuZChjaGlsZCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03NTYsNyArNzU2LDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMs
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3IKICAgICBpZiAoaW5jbHVkZUhpZGRlbkxheWVyICYmICFp
c05vcm1hbEZsb3dPbmx5KCkpIHsKICAgICAgICAgYXV0byYgbGF5ZXJMaXN0ID0gKHpJbmRleCgp
ID49IDApID8gcG9zaXRpdmVaT3JkZXJMaXN0IDogbmVnYXRpdmVaT3JkZXJMaXN0OwogICAgICAg
ICBpZiAoIWxheWVyTGlzdCkKLSAgICAgICAgICAgIGxheWVyTGlzdCA9IHN0ZDo6bWFrZV91bmlx
dWU8VmVjdG9yPFJlbmRlckxheWVyKj4+KCk7CisgICAgICAgICAgICBsYXllckxpc3QgPSBtYWtl
VW5pcXVlPFZlY3RvcjxSZW5kZXJMYXllcio+PigpOwogICAgICAgICBsYXllckxpc3QtPmFwcGVu
ZCh0aGlzKTsKICAgICB9CiAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgYm9vbCBoYWRUcmFuc2Zvcm0gPSAhIW1fdHJhbnNmb3Jt
OwogICAgIGlmIChoYXNUcmFuc2Zvcm0gIT0gaGFkVHJhbnNmb3JtKSB7CiAgICAgICAgIGlmICho
YXNUcmFuc2Zvcm0pCi0gICAgICAgICAgICBtX3RyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8
VHJhbnNmb3JtYXRpb25NYXRyaXg+KCk7CisgICAgICAgICAgICBtX3RyYW5zZm9ybSA9IG1ha2VV
bmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG1fdHJhbnNmb3JtID0gbnVsbHB0cjsKICAgICAgICAgCkBAIC01NTI3LDcgKzU1MjcsNyBAQCBS
ZWY8Q2xpcFJlY3RzPiBSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3RzKGNvbnN0IENsaXBSZWN0
c0NvbnRleHQmIGNsaXBSZWN0c0NvbgogICAgIH0KICAgICAKICAgICBpZiAoIW1fY2xpcFJlY3Rz
Q2FjaGUpCi0gICAgICAgIG1fY2xpcFJlY3RzQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENsaXBS
ZWN0c0NhY2hlPigpOworICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0gbWFrZVVuaXF1ZTxDbGlw
UmVjdHNDYWNoZT4oKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9j
bGlwUmVjdHNSb290W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXI7
CiAgICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9zY3JvbGxiYXJSZWxldmFuY3lbY2xpcFJlY3RzVHlw
ZV0gPSBjbGlwUmVjdHNDb250ZXh0Lm92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5OwpAQCAt
NjEwNSw3ICs2MTA1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xlYXJDbGlwUmVjdHMoQ2xpcFJl
Y3RzVHlwZSB0eXBlVG9DbGVhcikKIFJlbmRlckxheWVyQmFja2luZyogUmVuZGVyTGF5ZXI6OmVu
c3VyZUJhY2tpbmcoKQogewogICAgIGlmICghbV9iYWNraW5nKSB7Ci0gICAgICAgIG1fYmFja2lu
ZyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJCYWNraW5nPigqdGhpcyk7CisgICAgICAg
IG1fYmFja2luZyA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJCYWNraW5nPigqdGhpcyk7CiAgICAg
ICAgIGNvbXBvc2l0b3IoKS5sYXllckJlY2FtZUNvbXBvc2l0ZWQoKnRoaXMpOwogCiAgICAgICAg
IHVwZGF0ZUZpbHRlclBhaW50aW5nU3RyYXRlZ3koKTsKQEAgLTY1MjMsNyArNjUyMyw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlCiAKICAgICBpZiAocmVuZGVyZXIoKS5pc0hUTUxNYXJxdWVl
KCkgJiYgcmVuZGVyZXIoKS5zdHlsZSgpLm1hcnF1ZWVCZWhhdmlvcigpICE9IE1hcnF1ZWVCZWhh
dmlvcjo6Tm9uZSAmJiByZW5kZXJlcigpLmlzQm94KCkpIHsKICAgICAgICAgaWYgKCFtX21hcnF1
ZWUpCi0gICAgICAgICAgICBtX21hcnF1ZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlck1hcnF1
ZWU+KHRoaXMpOworICAgICAgICAgICAgbV9tYXJxdWVlID0gbWFrZVVuaXF1ZTxSZW5kZXJNYXJx
dWVlPih0aGlzKTsKICAgICAgICAgbV9tYXJxdWVlLT51cGRhdGVNYXJxdWVlU3R5bGUoKTsKICAg
ICB9IGVsc2UgaWYgKG1fbWFycXVlZSkKICAgICAgICAgbV9tYXJxdWVlID0gbnVsbHB0cjsKQEAg
LTY3MzUsNyArNjczNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmVuc3VyZUxheWVyRmlsdGVycygp
CiAgICAgaWYgKG1fZmlsdGVycykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fZmlsdGVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXJGaWx0ZXJzPigqdGhpcyk7CisgICAgbV9m
aWx0ZXJzID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllckZpbHRlcnM+KCp0aGlzKTsKIH0KIAogdm9p
ZCBSZW5kZXJMYXllcjo6Y2xlYXJMYXllckZpbHRlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAyMmVkNmRkN2MwMjUyYjE5NTNk
ZTNiZTE1Mzk3MWIxMjlhZTFjNzRiLi4xMjFkMTJmMjY5ZjkwZDEzYzZjY2RkMDk3YjkyMmUzYWRh
Y2UyNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcApAQCAtMTYyNyw3ICsxNjI3LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUFuY2VzdG9yQ2xpcHBpbmdTdGFjayhWZWN0b3I8Q29tcG9zaXRlZENsaXBEYXRhPiYKICAg
ICB9CiAgICAgCiAgICAgaWYgKCFtX2FuY2VzdG9yQ2xpcHBpbmdTdGFjaykgewotICAgICAgICBt
X2FuY2VzdG9yQ2xpcHBpbmdTdGFjayA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJBbmNlc3RvckNs
aXBwaW5nU3RhY2s+KFdURk1vdmUoY2xpcHBpbmdEYXRhKSk7CisgICAgICAgIG1fYW5jZXN0b3JD
bGlwcGluZ1N0YWNrID0gbWFrZVVuaXF1ZTxMYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjaz4oV1RG
TW92ZShjbGlwcGluZ0RhdGEpKTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0aW5n
LCBzdHJlYW0gPDwgImxheWVyICIgPDwgJm1fb3duaW5nTGF5ZXIgPDwgIiBhbmNlc3RvckNsaXBw
aW5nU3RhY2sgIiA8PCAqbV9hbmNlc3RvckNsaXBwaW5nU3RhY2spOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0zMTc4LDE3ICszMTc4LDE3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uJiBh
bmltCiAgICAgICAgIAogICAgICAgICBib29sIGlzRmlyc3RPckxhc3RLZXlmcmFtZSA9IGtleSA9
PSAwIHx8IGtleSA9PSAxOwogICAgICAgICBpZiAoKGhhc1RyYW5zZm9ybSAmJiBpc0ZpcnN0T3JM
YXN0S2V5ZnJhbWUpIHx8IGN1cnJlbnRLZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KENTU1Byb3Bl
cnR5VHJhbnNmb3JtKSkKLSAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQoc3RkOjpt
YWtlX3VuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT50
cmFuc2Zvcm0oKSwgdGYpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFr
ZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT50cmFu
c2Zvcm0oKSwgdGYpKTsKIAogICAgICAgICBpZiAoKGhhc09wYWNpdHkgJiYgaXNGaXJzdE9yTGFz
dEtleWZyYW1lKSB8fCBjdXJyZW50S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0
eU9wYWNpdHkpKQotICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQoc3RkOjptYWtlX3Vu
aXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPihrZXksIGtleWZyYW1lU3R5bGUtPm9wYWNpdHkoKSwg
dGYpKTsKKyAgICAgICAgICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CiAKICAg
ICAgICAgaWYgKChoYXNGaWx0ZXIgJiYgaXNGaXJzdE9yTGFzdEtleWZyYW1lKSB8fCBjdXJyZW50
S2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eUZpbHRlcikpCi0gICAgICAgICAg
ICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFs
dWU+KGtleSwga2V5ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRmKSk7CisgICAgICAgICAgICBmaWx0
ZXJWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5
ZnJhbWVTdHlsZS0+ZmlsdGVyKCksIHRmKSk7CiAKICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8y
KQogICAgICAgICBpZiAoKGhhc0JhY2tkcm9wRmlsdGVyICYmIGlzRmlyc3RPckxhc3RLZXlmcmFt
ZSkgfHwgY3VycmVudEtleWZyYW1lLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRC
YWNrZHJvcEZpbHRlcikpCi0gICAgICAgICAgICBiYWNrZHJvcEZpbHRlclZlY3Rvci5pbnNlcnQo
c3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oa2V5LCBrZXlmcmFtZVN0eWxl
LT5iYWNrZHJvcEZpbHRlcigpLCB0ZikpOworICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0
b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KGtleSwga2V5ZnJhbWVT
dHlsZS0+YmFja2Ryb3BGaWx0ZXIoKSwgdGYpKTsKICNlbmRpZgogICAgIH0KIApAQCAtMzI0Myw4
ICszMjQzLDggQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3Vi
bGUgdGltZU9mZnNldCwgQ1NTUHJvcGVydHlJRCBwcm9wZXIKICAgICAgICAgY29uc3QgQW5pbWF0
aW9uKiBvcGFjaXR5QW5pbSA9IHRvU3R5bGUtPnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU9wYWNpdHkpOwogICAgICAgICBpZiAob3BhY2l0eUFuaW0gJiYgIW9wYWNpdHlBbmltLT5p
c0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qg
b3BhY2l0eVZlY3RvcihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7Ci0gICAgICAgICAgICBvcGFj
aXR5VmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAs
IGNvbXBvc2l0aW5nT3BhY2l0eShmcm9tU3R5bGUtPm9wYWNpdHkoKSkpKTsKLSAgICAgICAgICAg
IG9wYWNpdHlWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1
ZT4oMSwgY29tcG9zaXRpbmdPcGFjaXR5KHRvU3R5bGUtPm9wYWNpdHkoKSkpKTsKKyAgICAgICAg
ICAgIG9wYWNpdHlWZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRBbmltYXRpb25WYWx1ZT4o
MCwgY29tcG9zaXRpbmdPcGFjaXR5KGZyb21TdHlsZS0+b3BhY2l0eSgpKSkpOworICAgICAgICAg
ICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGbG9hdEFuaW1hdGlvblZhbHVlPigx
LCBjb21wb3NpdGluZ09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpOwogICAgICAgICAgICAg
Ly8gVGhlIGJveFNpemUgcGFyYW0gaXMgb25seSB1c2VkIGZvciB0cmFuc2Zvcm0gYW5pbWF0aW9u
cyAod2hpY2ggY2FuIG9ubHkgcnVuIG9uIFJlbmRlckJveGVzKSwgc28gd2UgcGFzcyBhbiBlbXB0
eSBzaXplIGhlcmUuCiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRp
b24ob3BhY2l0eVZlY3RvciwgRmxvYXRTaXplKCksIG9wYWNpdHlBbmltLCBHcmFwaGljc0xheWVy
OjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFByb3BlcnR5T3BhY2l0eSksIHRp
bWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRoYXQgdGhlIGNvcnJl
Y3Qgb3BhY2l0eSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBlbmRzLCBhbHNvIHNldCB0
aGUgZmluYWwgb3BhY2l0eS4KQEAgLTMyNTgsOCArMzI1OCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5SUQg
cHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogdHJhbnNmb3JtQW5pbSA9IHRvU3R5bGUt
PnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSk7CiAgICAgICAgIGlm
ICh0cmFuc2Zvcm1BbmltICYmICF0cmFuc2Zvcm1BbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24o
KSkgewogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNmb3JtVmVjdG9yKEFuaW1h
dGVkUHJvcGVydHlUcmFuc2Zvcm0pOwotICAgICAgICAgICAgdHJhbnNmb3JtVmVjdG9yLmluc2Vy
dChzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUt
PnRyYW5zZm9ybSgpKSk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KHN0ZDo6
bWFrZV91bmlxdWU8VHJhbnNmb3JtQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPnRyYW5zZm9y
bSgpKSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG1ha2VVbmlxdWU8VHJh
bnNmb3JtQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+dHJhbnNmb3JtKCkpKTsKKyAgICAg
ICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxUcmFuc2Zvcm1BbmltYXRp
b25WYWx1ZT4oMSwgdG9TdHlsZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAgICAgIGlmIChtX2dy
YXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHNuYXBwZWRJbnRSZWN0
KHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkpLnNpemUoKSwgdHJhbnNmb3JtQW5pbSwgR3Jh
cGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eVRy
YW5zZm9ybSksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJlIHRo
YXQgdGhlIGNvcnJlY3QgdHJhbnNmb3JtIGlzIHZpc2libGUgd2hlbiB0aGUgYW5pbWF0aW9uIGVu
ZHMsIGFsc28gc2V0IHRoZSBmaW5hbCB0cmFuc2Zvcm0uCiAgICAgICAgICAgICAgICAgdXBkYXRl
VHJhbnNmb3JtKCp0b1N0eWxlKTsKQEAgLTMyNzIsOCArMzI3Miw4IEBAIGJvb2wgUmVuZGVyTGF5
ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1Byb3BlcnR5
SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogZmlsdGVyQW5pbSA9IHRvU3R5bGUt
PnRyYW5zaXRpb25Gb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUZpbHRlcik7CiAgICAgICAgIGlmIChm
aWx0ZXJBbmltICYmICFmaWx0ZXJBbmltLT5pc0VtcHR5T3JaZXJvRHVyYXRpb24oKSkgewogICAg
ICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgZmlsdGVyVmVjdG9yKEFuaW1hdGVkUHJvcGVydHlG
aWx0ZXIpOwotICAgICAgICAgICAgZmlsdGVyVmVjdG9yLmluc2VydChzdGQ6Om1ha2VfdW5pcXVl
PEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmZpbHRlcigpKSk7Ci0gICAgICAg
ICAgICBmaWx0ZXJWZWN0b3IuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9u
VmFsdWU+KDEsIHRvU3R5bGUtPmZpbHRlcigpKSk7CisgICAgICAgICAgICBmaWx0ZXJWZWN0b3Iu
aW5zZXJ0KG1ha2VVbmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+Zmls
dGVyKCkpKTsKKyAgICAgICAgICAgIGZpbHRlclZlY3Rvci5pbnNlcnQobWFrZVVuaXF1ZTxGaWx0
ZXJBbmltYXRpb25WYWx1ZT4oMSwgdG9TdHlsZS0+ZmlsdGVyKCkpKTsKICAgICAgICAgICAgIGlm
IChtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihmaWx0ZXJWZWN0b3IsIEZsb2F0U2l6ZSgp
LCBmaWx0ZXJBbmltLCBHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihB
bmltYXRlZFByb3BlcnR5RmlsdGVyKSwgdGltZU9mZnNldCkpIHsKICAgICAgICAgICAgICAgICAv
LyBUbyBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBmaWx0ZXIgaXMgdmlzaWJsZSB3aGVuIHRoZSBh
bmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIGZpbHRlci4KICAgICAgICAgICAgICAg
ICB1cGRhdGVGaWx0ZXJzKCp0b1N0eWxlKTsKQEAgLTMyODcsOCArMzI4Nyw4IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIENTU1By
b3BlcnR5SUQgcHJvcGVyCiAgICAgICAgIGNvbnN0IEFuaW1hdGlvbiogYmFja2Ryb3BGaWx0ZXJB
bmltID0gdG9TdHlsZS0+dHJhbnNpdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0QmFj
a2Ryb3BGaWx0ZXIpOwogICAgICAgICBpZiAoYmFja2Ryb3BGaWx0ZXJBbmltICYmICFiYWNrZHJv
cEZpbHRlckFuaW0tPmlzRW1wdHlPclplcm9EdXJhdGlvbigpKSB7CiAgICAgICAgICAgICBLZXlm
cmFtZVZhbHVlTGlzdCBiYWNrZHJvcEZpbHRlclZlY3RvcihBbmltYXRlZFByb3BlcnR5V2Via2l0
QmFja2Ryb3BGaWx0ZXIpOwotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0
KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDAsIGZyb21TdHlsZS0+YmFj
a2Ryb3BGaWx0ZXIoKSkpOwotICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXJWZWN0b3IuaW5zZXJ0
KHN0ZDo6bWFrZV91bmlxdWU8RmlsdGVyQW5pbWF0aW9uVmFsdWU+KDEsIHRvU3R5bGUtPmJhY2tk
cm9wRmlsdGVyKCkpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydCht
YWtlVW5pcXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigwLCBmcm9tU3R5bGUtPmJhY2tkcm9wRmls
dGVyKCkpKTsKKyAgICAgICAgICAgIGJhY2tkcm9wRmlsdGVyVmVjdG9yLmluc2VydChtYWtlVW5p
cXVlPEZpbHRlckFuaW1hdGlvblZhbHVlPigxLCB0b1N0eWxlLT5iYWNrZHJvcEZpbHRlcigpKSk7
CiAgICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24oYmFja2Ryb3BG
aWx0ZXJWZWN0b3IsIEZsb2F0U2l6ZSgpLCBiYWNrZHJvcEZpbHRlckFuaW0sIEdyYXBoaWNzTGF5
ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlXZWJraXRCYWNr
ZHJvcEZpbHRlciksIHRpbWVPZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVG8gZW5zdXJl
IHRoYXQgdGhlIGNvcnJlY3QgYmFja2Ryb3AgZmlsdGVyIGlzIHZpc2libGUgd2hlbiB0aGUgYW5p
bWF0aW9uIGVuZHMsIGFsc28gc2V0IHRoZSBmaW5hbCBiYWNrZHJvcCBmaWx0ZXIuCiAgICAgICAg
ICAgICAgICAgdXBkYXRlQmFja2Ryb3BGaWx0ZXJzKCp0b1N0eWxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNDEyYzJj
NzliMTIyMjU3ZGYzYWViNDY2NjljMmMwNGNiNmQ5YmQ5ZS4uZmVkMGJkYjc2ZjFhOTNhNWViMzA0
ODI1MmIxZmM4NDdmZGI0MDg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OlJlbmRlckxheWVyQ29tcG9zaXRvcihSZW5kZXJWaWV3JiByZW5kZXJWaWV3
KQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG1fcmVuZGVyVmlldy5mcmFt
ZVZpZXcoKS5wbGF0Zm9ybVdpZGdldCgpKQotICAgICAgICBtX2xlZ2FjeVNjcm9sbGluZ0xheWVy
Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVy
Q29vcmRpbmF0b3I+KHBhZ2UoKS5jaHJvbWUoKS5jbGllbnQoKSwgaXNNYWluRnJhbWVDb21wb3Np
dG9yKCkpOworICAgICAgICBtX2xlZ2FjeVNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3IgPSBtYWtl
VW5pcXVlPExlZ2FjeVdlYktpdFNjcm9sbGluZ0xheWVyQ29vcmRpbmF0b3I+KHBhZ2UoKS5jaHJv
bWUoKS5jbGllbnQoKSwgaXNNYWluRnJhbWVDb21wb3NpdG9yKCkpOwogI2VuZGlmCiB9CiAKQEAg
LTYxMiw3ICs2MTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5Rmx1c2hC
ZWZvcmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKgogewogICAgIGlmICghbV9s
YXllclVwZGF0ZXIpIHsKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEID0gcGFn
ZSgpLmNocm9tZSgpLmRpc3BsYXlJRCgpOwotICAgICAgICBtX2xheWVyVXBkYXRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8R3JhcGhpY3NMYXllclVwZGF0ZXI+KCp0aGlzLCBkaXNwbGF5SUQpOworICAg
ICAgICBtX2xheWVyVXBkYXRlciA9IG1ha2VVbmlxdWU8R3JhcGhpY3NMYXllclVwZGF0ZXI+KCp0
aGlzLCBkaXNwbGF5SUQpOwogICAgIH0KICAgICAKICAgICBtX2xheWVyVXBkYXRlci0+c2NoZWR1
bGVVcGRhdGUoKTsKQEAgLTQ3OTIsNyArNDc5Miw3IEBAIHZvaWQgTGVnYWN5V2ViS2l0U2Nyb2xs
aW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJz
CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZXdwb3J0Q29uc3RyYWludHM+IGNvbnN0cmFp
bnRzOwogICAgICAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaXNTdGlja2lseVBvc2l0aW9uZWQo
KSkgewotICAgICAgICAgICAgY29uc3RyYWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0aWNreVBv
c2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz4oY29tcG9zaXRvci5jb21wdXRlU3RpY2t5Vmlld3Bv
cnRDb25zdHJhaW50cygqbGF5ZXIpKTsKKyAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gbWFrZVVu
aXF1ZTxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0
ZVN0aWNreVZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7CiAgICAgICAgICAgICBjb25zdCBS
ZW5kZXJMYXllciogZW5jbG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXIgPSBudWxscHRyOwogICAg
ICAgICAgICAgaWYgKGNvbXBvc2l0b3IuaXNBc3luY1Njcm9sbGFibGVTdGlja3lMYXllcigqbGF5
ZXIsICZlbmNsb3NpbmdUb3VjaFNjcm9sbGFibGVMYXllcikgJiYgZW5jbG9zaW5nVG91Y2hTY3Jv
bGxhYmxlTGF5ZXIpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZW5jbG9zaW5nVG91Y2hTY3Jv
bGxhYmxlTGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKQEAgLTQ4MDAsNyArNDgwMCw3IEBAIHZvaWQg
TGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6cmVnaXN0ZXJBbGxWaWV3cG9y
dENvbnN0cmFpbmVkTGF5ZXJzCiAgICAgICAgICAgICAgICAgc3RpY2t5Q29udGFpbmVyTWFwLmFk
ZChsYXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSwgZW5j
bG9zaW5nVG91Y2hTY3JvbGxhYmxlTGF5ZXItPmJhY2tpbmcoKS0+c2Nyb2xsQ29udGFpbmVyTGF5
ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChsYXllci0+cmVuZGVyZXIoKS5pc0ZpeGVkUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgY29u
c3RyYWludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzPihjb21wb3NpdG9yLmNvbXB1dGVGaXhlZFZpZXdwb3J0Q29uc3RyYWludHMoKmxheWVyKSk7
CisgICAgICAgICAgICBjb25zdHJhaW50cyA9IG1ha2VVbmlxdWU8Rml4ZWRQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHM+KGNvbXBvc2l0b3IuY29tcHV0ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50
cygqbGF5ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApp
bmRleCA0Yjg2ZmUyYWQxNzVkY2U4NmFkMzg1MmJkZmMxNTJmZDEzMDhkNDVlLi4xMjhjOTZkYWUw
YjMxMDA2Y2EyNWQ1YTU2YzcyMGJjODkwZDM0ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKCkKIHZvaWQgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6Y3JlYXRlTGF5ZXIoKQogewogICAgIEFTU0VSVCghbV9sYXllcik7
Ci0gICAgbV9sYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyTGF5ZXI+KCp0aGlzKTsKKyAg
ICBtX2xheWVyID0gbWFrZVVuaXF1ZTxSZW5kZXJMYXllcj4oKnRoaXMpOwogICAgIHNldEhhc0xh
eWVyKHRydWUpOwogICAgIG1fbGF5ZXItPmluc2VydE9ubHlUaGlzTGF5ZXIoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYmM1NTI3Yjhj
NDZhNGRlMDY2ZjY5ZTVhMzEwYzg4NjgxOTZmYzIzYS4uMWFhZTA5ZDAwYjI2ZWEzY2FkZWE4Njcy
ZTI3NzkyOWJmZDE3YTYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCcmVhay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgaW50IFJlbmRlckxpbmVCcmVhazo6YmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwKIAog
c3RkOjp1bmlxdWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJlbmRlckxpbmVCcmVhazo6Y3JlYXRl
SW5saW5lQm94KCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbmxpbmVFbGVtZW50
Qm94PigqdGhpcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5saW5lRWxlbWVudEJveD4oKnRo
aXMpOwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6c2V0SW5saW5lQm94V3JhcHBlcihJbmxp
bmVFbGVtZW50Qm94KiBpbmxpbmVCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtbkZsb3cuY3BwCmluZGV4IDliYjlhNTM5ZDY2NDJkZjkwMDI2YTc4
MmFmOGNmODRkYzQ5ZGEyYTkuLjQxMDNkYWQ0ODQ0ZGQyNGEzMDJhNzMyYWYyMjE5YWM5MDAwMWNi
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
bkZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVt
bkZsb3cuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChS
ZW5kZXJNdWx0aUNvbHVtbkZsb3cpOwogCiBSZW5kZXJNdWx0aUNvbHVtbkZsb3c6OlJlbmRlck11
bHRpQ29sdW1uRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJGcmFnbWVudGVkRmxvdyhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCi0gICAg
LCBtX3NwYW5uZXJNYXAoc3RkOjptYWtlX3VuaXF1ZTxTcGFubmVyTWFwPigpKQorICAgICwgbV9z
cGFubmVyTWFwKG1ha2VVbmlxdWU8U3Bhbm5lck1hcD4oKSkKICAgICAsIG1fbGFzdFNldFdvcmtl
ZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCiAgICAgLCBtX2NvbHVtbldpZHRo
KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDRkYTNi
ZDczNzcxYmExNzE5MGVhYzM1ZGE2MzhlMjQzZjE5MDI5MDcuLjBiZjUxOTNkZTQ4NDQ1YmNjNjc3
ZTkxNGU4YWQzZGY4MWNlYjgyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCkBAIC0xODkzLDcgKzE4OTMsNyBAQCBjb25zdCBSZW5kZXJPYmplY3Q6OlJlbmRl
ck9iamVjdFJhcmVEYXRhJiBSZW5kZXJPYmplY3Q6OnJhcmVEYXRhKCkgY29uc3QKIFJlbmRlck9i
amVjdDo6UmVuZGVyT2JqZWN0UmFyZURhdGEmIFJlbmRlck9iamVjdDo6ZW5zdXJlUmFyZURhdGEo
KQogewogICAgIHNldEhhc1JhcmVEYXRhKHRydWUpOwotICAgIHJldHVybiAqcmFyZURhdGFNYXAo
KS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJPYmplY3RS
YXJlRGF0YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHJldHVybiAqcmFyZURhdGFNYXAo
KS5lbnN1cmUodGhpcywgW10geyByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJPYmplY3RSYXJlRGF0
YT4oKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3Zl
UmFyZURhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggNmQ1NmI1ZWNhMmM2YjI3NjhhZmJiMmQ0Y2ZmMGFjMDg4
MmU5ZmRjNi4uMGRmZTI4Mjc2NGY0MDhiNjIwYmVmNWQ5ZjU4ZTg4YTZjYzc2YzA4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbik7CiAKIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHls
ZSYmIHN0eWxlKQogICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3QoZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCi0gICAgLCBtX3NuYXBzaG90UmVzb3VyY2Uoc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJJ
bWFnZVJlc291cmNlPigpKQorICAgICwgbV9zbmFwc2hvdFJlc291cmNlKG1ha2VVbmlxdWU8UmVu
ZGVySW1hZ2VSZXNvdXJjZT4oKSkKIHsKICAgICBtX3NuYXBzaG90UmVzb3VyY2UtPmluaXRpYWxp
emUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5k
ZXggMTg2Y2E4NzBlZDEwOTEzZDU4Yjg1NDllYjk2ZGUzMzZlMzQ1NTM1OS4uZTkxYTEzMzcxOTkx
MmQxOGZhNTVlMzZkODM1NTg4NTdjMmQxOGIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwCkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBSZW5kZXJUYWJsZTo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHkKICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBDU1MyIHNwZWMsIHlvdSBvbmx5IHVzZSBm
aXhlZCB0YWJsZSBsYXlvdXQgaWYgYW4KICAgICAgICAgLy8gZXhwbGljaXQgd2lkdGggaXMgc3Bl
Y2lmaWVkIG9uIHRoZSB0YWJsZS4gIEF1dG8gd2lkdGggaW1wbGllcyBhdXRvIHRhYmxlIGxheW91
dC4KICAgICAgICAgaWYgKHN0eWxlKCkudGFibGVMYXlvdXQoKSA9PSBUYWJsZUxheW91dFR5cGU6
OkZpeGVkICYmICFzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpKQotICAgICAgICAgICAg
bV90YWJsZUxheW91dCA9IHN0ZDo6bWFrZV91bmlxdWU8Rml4ZWRUYWJsZUxheW91dD4odGhpcyk7
CisgICAgICAgICAgICBtX3RhYmxlTGF5b3V0ID0gbWFrZVVuaXF1ZTxGaXhlZFRhYmxlTGF5b3V0
Pih0aGlzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90YWJsZUxheW91dCA9IHN0ZDo6
bWFrZV91bmlxdWU8QXV0b1RhYmxlTGF5b3V0Pih0aGlzKTsKKyAgICAgICAgICAgIG1fdGFibGVM
YXlvdXQgPSBtYWtlVW5pcXVlPEF1dG9UYWJsZUxheW91dD4odGhpcyk7CiAgICAgfQogCiAgICAg
Ly8gSWYgYm9yZGVyIHdhcyBjaGFuZ2VkLCBpbnZhbGlkYXRlIGNvbGxhcHNlZCBib3JkZXJzIGNh
Y2hlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGFhZDBjMTQ3
ZjExZDM5YjNhZDE2Y2FkZGMxNTNjMzIyZTkyZDdhMGEuLmI2MzA1ZGU1ZjYzMTZjNGRiMjYwYTc5
OWNkMTE2YmJkMWFlNTQ0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAKQEAgLTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6ZGlydHlMaW5lQm94ZXMo
Ym9vbCBmdWxsTGF5b3V0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVy
VGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SW5s
aW5lVGV4dEJveD4oKnRoaXMpOworICAgIHJldHVybiBtYWtlVW5pcXVlPElubGluZVRleHRCb3g+
KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lVGV4
dEJveCYgdGV4dEJveCkKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6bW9t
ZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQgb2Zmc2V0QWZ0ZXJMYXN0
VHlwCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvJiBzZWN1cmVUZXh0VGltZXIgPSBzZWN1cmVU
ZXh0VGltZXJzKCkuYWRkKHRoaXMsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAo
IXNlY3VyZVRleHRUaW1lcikKLSAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKKyAgICAgICAgc2VjdXJlVGV4dFRpbWVyID0g
bWFrZVVuaXF1ZTxTZWN1cmVUZXh0VGltZXI+KCp0aGlzKTsKICAgICBzZWN1cmVUZXh0VGltZXIt
PnJlc3RhcnQob2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0ZXIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYzE0NDUxYTE4ZWVhN2E1NzFhMjc3Nzg5
OGE3OWNjOGI0M2ZmMzE0Mi4uNWZlYzY3OGM2YmI1ZGYwZTQ5MjJiMDEyYzNmMjY4ZGJhYjRhN2I2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtNDkyLDcgKzQ5
Miw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0
UmVjdCYgcmVwYWludFJlY3QpIGNvbnN0CiAgICAgLy8gRklYTUU6IE1heWJlIHRoZXJlIHNob3Vs
ZCBiZSBhIHJlZ2lvbiB0eXBlIHRoYXQgZG9lcyB0aGlzIGF1dG9tYXRpY2FsbHkuCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1SZXBhaW50UmVnaW9uR3JpZFNpemUgPSAxNiAqIDE2
OwogICAgIGlmIChtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbi0+Z3JpZFNpemUoKSA+IG1heGlt
dW1SZXBhaW50UmVnaW9uR3JpZFNpemUpCi0gICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVn
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9u
LT5ib3VuZHMoKSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gbWFrZVVu
aXF1ZTxSZWdpb24+KG1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uLT5ib3VuZHMoKSk7CiB9CiAK
IHZvaWQgUmVuZGVyVmlldzo6Zmx1c2hBY2N1bXVsYXRlZFJlcGFpbnRSZWdpb24oKSBjb25zdApA
QCAtNzI0LDcgKzcyNCw3IEBAIGJvb2wgUmVuZGVyVmlldzo6dXNlc0NvbXBvc2l0aW5nKCkgY29u
c3QKIFJlbmRlckxheWVyQ29tcG9zaXRvciYgUmVuZGVyVmlldzo6Y29tcG9zaXRvcigpCiB7CiAg
ICAgaWYgKCFtX2NvbXBvc2l0b3IpCi0gICAgICAgIG1fY29tcG9zaXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CisgICAgICAgIG1fY29tcG9zaXRv
ciA9IG1ha2VVbmlxdWU8UmVuZGVyTGF5ZXJDb21wb3NpdG9yPigqdGhpcyk7CiAKICAgICByZXR1
cm4gKm1fY29tcG9zaXRvcjsKIH0KQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIFJlbmRlclZpZXc6
OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bAogSW1hZ2VRdWFsaXR5Q29udHJvbGxlciYgUmVuZGVyVmlldzo6aW1hZ2VRdWFsaXR5
Q29udHJvbGxlcigpCiB7CiAgICAgaWYgKCFtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIpCi0gICAg
ICAgIG1faW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW1hZ2VRdWFs
aXR5Q29udHJvbGxlcj4oKnRoaXMpOworICAgICAgICBtX2ltYWdlUXVhbGl0eUNvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1faW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKIH0KIApAQCAtODM0LDcgKzgzNCw3IEBAIFJlbmRl
clZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcjo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9y
KFJlbmRlclZpZXcqIHZpZXcpCiAKICAgICBtX3dhc0FjY3VtdWxhdGluZ1JlcGFpbnRSZWdpb24g
PSAhIXJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbjsKICAgICBpZiAo
IW1fd2FzQWNjdW11bGF0aW5nUmVwYWludFJlZ2lvbikKLSAgICAgICAgcm9vdFJlbmRlclZpZXct
Pm1fYWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KCk7
CisgICAgICAgIHJvb3RSZW5kZXJWaWV3LT5tX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbiA9IG1h
a2VVbmlxdWU8UmVnaW9uPigpOwogICAgIG1fcm9vdFZpZXcgPSBtYWtlV2Vha1B0cigqcm9vdFJl
bmRlclZpZXcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5j
cHAKaW5kZXggZmRjZDU5YzUyYzVmMzI4ZjUyMDlmMDBjMWY4ZDgxNmFkYzVmNzY2OC4uNDQ1NTg0
MWFmMzJmZjE1MjUyY2ZhMjhlZDhhNjljM2U0OWYxZjMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIGZsb2F0IFJvb3RJ
bmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbVN0cmluZyYgZWxsaXBzaXNTdHIsICBi
b29sIGx0ciwgZmxvCiAgICAgICAgIGdFbGxpcHNpc0JveE1hcCA9IG5ldyBFbGxpcHNpc0JveE1h
cCgpOwogCiAgICAgQVNTRVJUKCFoYXNFbGxpcHNpc0JveCgpKTsKLSAgICBhdXRvKiBlbGxpcHNp
c0JveCA9IGdFbGxpcHNpc0JveE1hcC0+c2V0KHRoaXMsIHN0ZDo6bWFrZV91bmlxdWU8RWxsaXBz
aXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNpc1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtICht
YXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQo
KSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNIb3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJh
dG9yLT52YWx1ZS5nZXQoKTsKKyAgICBhdXRvKiBlbGxpcHNpc0JveCA9IGdFbGxpcHNpc0JveE1h
cC0+c2V0KHRoaXMsIG1ha2VVbmlxdWU8RWxsaXBzaXNCb3g+KGJsb2NrRmxvdygpLCBlbGxpcHNp
c1N0ciwgdGhpcywgZWxsaXBzaXNXaWR0aCAtIChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2lj
YWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWlnaHQoKSwgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNI
b3Jpem9udGFsKCksIG1hcmt1cEJveCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKICAgICBzZXRI
YXNFbGxpcHNpc0JveCh0cnVlKTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBhbiBSVEwgdmVy
c2lvbiBvZiB0aGlzPwogICAgIGlmIChsdHIgJiYgKHgoKSArIGxvZ2ljYWxXaWR0aCgpICsgZWxs
aXBzaXNXaWR0aCkgPD0gYmxvY2tSaWdodEVkZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5oCmluZGV4IDdkZjI4Mjg4YTRkNTVjMmM3ZDI2YWQ0YmMwMTc2ZDBiNzYx
NzgzNjQuLjI0N2U1NWMwNjllOWZlODgxY2FmNGJmYmMyYjRhZWYxOWUzNjE3YTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApAQCAtMTQ1LDcgKzE0NSw3IEBAIGNs
YXNzIFJvb3RJbmxpbmVCb3ggOiBwdWJsaWMgSW5saW5lRmxvd0JveCwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFJvb3RJbmxpbmVCb3g+CiAgICAgICAgIGlmIChtX2Zsb2F0cykKICAgICAgICAgICAg
IG1fZmxvYXRzLT5hcHBlbmQobWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9mbG9hdHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENsZWFuTGluZUZsb2F0
TGlzdD4oMSwgbWFrZVdlYWtQdHIoZmxvYXRpbmdCb3gpKTsKKyAgICAgICAgICAgIG1fZmxvYXRz
ID0gbWFrZVVuaXF1ZTxDbGVhbkxpbmVGbG9hdExpc3Q+KDEsIG1ha2VXZWFrUHRyKGZsb2F0aW5n
Qm94KSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVGbG9hdChSZW5kZXJCb3gmIGZsb2F0aW5n
Qm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdl
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNw
cAppbmRleCBlYzVlNzM1NmE2NGQxMjQ5ZGRhMTE0N2U4YmJhMzFmNDc5MGI0YmYyLi5iOWJhZDBh
MDlmMjliZjdhZGM5ZDMzM2Y0ZTgxMWMzZWExYjkzZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcApAQCAtMTMxLDEzICsxMzEsMTMgQEAg
c3RhdGljIFNlbGVjdGlvbkRhdGEgY29sbGVjdChjb25zdCBTZWxlY3Rpb25SYW5nZURhdGE6OkNv
bnRleHQmIHNlbGVjdGlvbiwgYm9vbAogICAgIHdoaWxlIChzdGFydCAmJiBzdGFydCAhPSBzdG9w
KSB7CiAgICAgICAgIGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKnN0YXJ0LCBzZWxl
Y3Rpb24pKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWlu
dGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMg
d2VsbC4KLSAgICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwg
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKKyAg
ICAgICAgICAgIG9sZFNlbGVjdGlvbkRhdGEucmVuZGVyZXJzLnNldChzdGFydCwgbWFrZVVuaXF1
ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPigqc3RhcnQsIHRydWUpKTsKICAgICAgICAgICAgIGlmIChy
ZXBhaW50RGlmZmVyZW5jZSkgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byogYmxvY2sgPSBj
b250YWluaW5nQmxvY2tCZWxvd1ZpZXcoKnN0YXJ0KTsgYmxvY2s7IGJsb2NrID0gY29udGFpbmlu
Z0Jsb2NrQmVsb3dWaWV3KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgYmxv
Y2tJbmZvID0gb2xkU2VsZWN0aW9uRGF0YS5ibG9ja3MuYWRkKGJsb2NrLCBudWxscHRyKS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KCpibG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IG1ha2VVbmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rp
b25JbmZvPigqYmxvY2spOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMjEzLDEzICsyMTMsMTMgQEAgSW50UmVjdCBTZWxlY3Rpb25SYW5nZURhdGE6OmNv
bGxlY3RCb3VuZHMoQ2xpcFRvVmlzaWJsZUNvbnRlbnQgY2xpcFRvVmlzaWJsZUNvbnQKICAgICAg
ICAgaWYgKChzdGFydC0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rp
b25Db250ZXh0LnN0YXJ0KCkgfHwgc3RhcnQgPT0gbV9zZWxlY3Rpb25Db250ZXh0LmVuZCgpKQog
ICAgICAgICAgICAgJiYgc3RhcnQtPnNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZv
ciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWlu
ZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIHJlbmRlcmVycy5zZXQoc3RhcnQsIHN0ZDo6bWFrZV91
bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKnN0YXJ0LCBjbGlwVG9WaXNpYmxlQ29udGVudCA9
PSBDbGlwVG9WaXNpYmxlQ29udGVudDo6WWVzKSk7CisgICAgICAgICAgICByZW5kZXJlcnMuc2V0
KHN0YXJ0LCBtYWtlVW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpzdGFydCwgY2xpcFRvVmlz
aWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6OlllcykpOwogICAgICAgICAgICAg
YXV0byogYmxvY2sgPSBzdGFydC0+Y29udGFpbmluZ0Jsb2NrKCk7CiAgICAgICAgICAgICB3aGls
ZSAoYmxvY2sgJiYgIWlzPFJlbmRlclZpZXc+KCpibG9jaykpIHsKICAgICAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4mIGJsb2NrSW5mbyA9IHJlbmRlcmVy
cy5hZGQoYmxvY2ssIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgICAgICAgICBp
ZiAoYmxvY2tJbmZvKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBibG9ja0luZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KCpibG9j
aywgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPT0gQ2xpcFRvVmlzaWJsZUNvbnRlbnQ6Olllcyk7Cisg
ICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gbWFrZVVuaXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZv
PigqYmxvY2ssIGNsaXBUb1Zpc2libGVDb250ZW50ID09IENsaXBUb1Zpc2libGVDb250ZW50OjpZ
ZXMpOwogICAgICAgICAgICAgICAgIGJsb2NrID0gYmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBTZWxlY3Rp
b25SYW5nZURhdGE6OmFwcGx5KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1v
ZGUgYmxvY2tSZXAKICAgICBzZWxlY3Rpb25JdGVyYXRvciA9IFNlbGVjdGlvbkl0ZXJhdG9yKHNl
bGVjdGlvblN0YXJ0KTsKICAgICBmb3IgKGF1dG8qIGN1cnJlbnRSZW5kZXJlciA9IHNlbGVjdGlv
blN0YXJ0OyBjdXJyZW50UmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmVyICE9IHNlbGVjdGlvbkVu
ZDsgY3VycmVudFJlbmRlcmVyID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAg
IGlmIChpc1ZhbGlkUmVuZGVyZXJGb3JTZWxlY3Rpb24oKmN1cnJlbnRSZW5kZXJlciwgbV9zZWxl
Y3Rpb25Db250ZXh0KSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVj
dGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlv
bkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOworICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclNlbGVjdGlvbkluZm8+IHNlbGVjdGlvbkluZm8gPSBtYWtlVW5pcXVlPFJlbmRl
clNlbGVjdGlvbkluZm8+KCpjdXJyZW50UmVuZGVyZXIsIHRydWUpOwogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQogICAgICAgICAgICAgZm9yIChhdXRvJiByZWN0IDogc2VsZWN0aW9uSW5m
by0+Y29sbGVjdGVkU2VsZWN0aW9uUmVjdHMoKSkKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlv
blJlY3RHYXRoZXJlci5hZGRSZWN0KHNlbGVjdGlvbkluZm8tPnJlcGFpbnRDb250YWluZXIoKSwg
cmVjdCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTZWxlY3Rpb25SYW5nZURhdGE6OmFwcGx5
KGNvbnN0IENvbnRleHQmIG5ld1NlbGVjdGlvbiwgUmVwYWludE1vZGUgYmxvY2tSZXAKICAgICAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYgYmxv
Y2tJbmZvID0gbmV3U2VsZWN0ZWRCbG9ja3MuYWRkKGNvbnRhaW5pbmdCbG9jaywgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGJsb2NrSW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPigqY29udGFpbmluZ0Jsb2NrKTsKKyAg
ICAgICAgICAgICAgICBibG9ja0luZm8gPSBtYWtlVW5pcXVlPFJlbmRlckJsb2NrU2VsZWN0aW9u
SW5mbz4oKmNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2Nr
ID0gY29udGFpbmluZ0Jsb2NrLT5jb250YWluaW5nQmxvY2soKTsKICNpZiBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvblJlY3RHYXRoZXJlci5hZGRH
YXBSZWN0cyhibG9ja0luZm8tPnJlcGFpbnRDb250YWluZXIoKSwgYmxvY2tJbmZvLT5yZWN0cygp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRl
eCA4Yzc2NmU2ZGUyYzc0YWQwMzc5NzMzMzFmYzdmNWE0NzQ5MDE1YjhlLi5jMzYyZjRlNTdiMDBm
OWNlMzlhNzNlY2U4MTFjMmM4MzJkNjUwYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC05OTcsNyArOTk3LDcgQEAgTGF5b3V0OjpMYXlv
dXQoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3VudCwgY29uc3Qg
UmVuZGVyQmxvY2sKIGNvbnN0IFJ1blJlc29sdmVyJiBMYXlvdXQ6OnJ1blJlc29sdmVyKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fcnVuUmVzb2x2ZXIpCi0gICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2NrRmxvd1JlbmRlcmVyLCAqdGhpcyk7
CisgICAgICAgIG1fcnVuUmVzb2x2ZXIgPSBtYWtlVW5pcXVlPFJ1blJlc29sdmVyPihtX2Jsb2Nr
Rmxvd1JlbmRlcmVyLCAqdGhpcyk7CiAgICAgcmV0dXJuICptX3J1blJlc29sdmVyOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAKaW5kZXggMWJmOThlNGVlYjQzYmEyMmNkYTRlNmY1ZDNiYzJhNWY5ZmM0YjRiNy4u
MDYyNWIxNmJkNTQzMTk3M2VkMzFkZTk5OGFlZDg4OWIwMTJiYTNiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApA
QCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYg
ZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2hhZG93RGF0YT4gZGVidWdTaGFkb3cgPSBudWxscHRyOwogICAgIGlmIChmbG93
LnNldHRpbmdzKCkuc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQoKSkgewotICAg
ICAgICBkZWJ1Z1NoYWRvdyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oSW50UG9pbnQo
MCwgMCksIDEwLCAyMCwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3IoMCwgMjU1LCAw
LCAyMDApKTsKKyAgICAgICAgZGVidWdTaGFkb3cgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KElu
dFBvaW50KDAsIDApLCAxMCwgMjAsIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUsIENvbG9yKDAs
IDI1NSwgMCwgMjAwKSk7CiAgICAgICAgIHRleHRQYWludGVyLnNldFNoYWRvdyhkZWJ1Z1NoYWRv
dy5nZXQoKSk7CiAgICAgfQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBnZW5lcmF0ZUxpbmVC
b3hUcmVlKFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiAgICAg
ICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+IGJpZGlSdW5zOwogICAgICAgICBmb3IgKGF1dG8gaXQg
PSByYW5nZS5iZWdpbigpOyBpdCAhPSByYW5nZS5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAg
YXV0byBydW4gPSAqaXQ7Ci0gICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4oc3RkOjptYWtl
X3VuaXF1ZTxCaWRpUnVuPihydW4ubG9jYWxTdGFydCgpLCBydW4ubG9jYWxFbmQoKSwgY29uc3Rf
Y2FzdDxSZW5kZXJPYmplY3QmPihydW4ucmVuZGVyZXIoKSksIGJpZGlDb250ZXh0LnB0cigpLCBV
X0xFRlRfVE9fUklHSFQpKTsKKyAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVuZFJ1bihtYWtlVW5p
cXVlPEJpZGlSdW4+KHJ1bi5sb2NhbFN0YXJ0KCksIHJ1bi5sb2NhbEVuZCgpLCBjb25zdF9jYXN0
PFJlbmRlck9iamVjdCY+KHJ1bi5yZW5kZXJlcigpKSwgYmlkaUNvbnRleHQucHRyKCksIFVfTEVG
VF9UT19SSUdIVCkpOwogICAgICAgICB9CiAKICAgICAgICAgTGluZUluZm8gbGluZUluZm87CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcAppbmRleCAzYmExMzBk
NDU1OWQ3MjkyZDg5MWY1NTNjZjE0ODBmODY2YmIyYmFkLi40YjQzZTZhY2JlMGVlZGFmNGVhZjRk
MmU1ZDVhNDQ2MzkwNjA1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dEF1dG9TaXppbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0
b1NpemluZy5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIFRleHRBdXRvU2l6aW5nOjphZGRU
ZXh0Tm9kZShUZXh0JiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXplKQogICAgIExPRyhUZXh0QXV0
b3NpemluZywgIiBhZGRBdXRvU2l6ZWROb2RlICVwIGNhbmRpZGF0ZVNpemU9JWYiLCAmbm9kZSwg
Y2FuZGlkYXRlU2l6ZSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RleHROb2Rlcy5hZGQ8VGV4
dEF1dG9TaXppbmdIYXNoVHJhbnNsYXRvcj4obm9kZS5yZW5kZXJlcigpLT5zdHlsZSgpLCBudWxs
cHRyKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRBdXRvU2l6aW5nVmFsdWU+KCk7
CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFRleHRBdXRv
U2l6aW5nVmFsdWU+KCk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkVGV4dE5v
ZGUobm9kZSwgY2FuZGlkYXRlU2l6ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVCcmVha2VyLmNwcAppbmRleCAyYjFjMWZhMDNjYTFjNTc1NjkwMjc3YTVlODEy
ODcxMDEwZDQ0NjdlLi5kMTE2NjE1YTcyNmM1YTBhOTQzZDliOWY2ZTA5NDBiOTVlNjkwOTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHZvaWQgTGluZUJyZWFrZXI6OnNraXBMZWFkaW5nV2hpdGVzcGFjZShJbmxp
bmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyLCBMaW5lSW5mbyYKICAgICAgICAgaWYgKG9iamVjdC5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25z
KG1fYmxvY2ssIGRvd25jYXN0PFJlbmRlckJveD4ob2JqZWN0KSwgd2lkdGguc2hvdWxkSW5kZW50
VGV4dCgpKTsKICAgICAgICAgICAgIGlmIChvYmplY3Quc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxh
eUlubGluZVR5cGUoKSkgewotICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMoKS5hcHBlbmRS
dW4oc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPigwLCAxLCBvYmplY3QsIHJlc29sdmVyLmNvbnRl
eHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCku
YXBwZW5kUnVuKG1ha2VVbmlxdWU8QmlkaVJ1bj4oMCwgMSwgb2JqZWN0LCByZXNvbHZlci5jb250
ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CiAgICAgICAgICAgICAgICAgbGluZUluZm8uaW5jcmVt
ZW50UnVuc0Zyb21MZWFkaW5nV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKG9iamVjdC5pc0Zsb2F0aW5nKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCmluZGV4IDRiMTU5N2U5ZjIxYzljZDRiMmYwZDg4
MzQ3NDQ3NzVmMWQ4YmRlMDEuLmQ1MjA5MmI2OGVkOGUyYzhmZGE1MTVjOTBjZDUyMjM1NmQ2NTVj
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
Y3BwCkBAIC03Niw3ICs3Niw3IEBAIEludFNoYXBlSW50ZXJ2YWwgTWFyZ2luSW50ZXJ2YWxHZW5l
cmF0b3I6OmludGVydmFsQXQoaW50IHkpIGNvbnN0CiBzdGQ6OnVuaXF1ZV9wdHI8UmFzdGVyU2hh
cGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRl
cnZhbHMoaW50IHNoYXBlTWFyZ2luKSBjb25zdAogewogICAgIGludCBtYXJnaW5JbnRlcnZhbHNT
aXplID0gKG9mZnNldCgpID4gc2hhcGVNYXJnaW4pID8gc2l6ZSgpIDogc2l6ZSgpIC0gb2Zmc2V0
KCkgKiAyICsgc2hhcGVNYXJnaW4gKiAyOwotICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luSW50ZXJ2YWxzU2l6ZSwgc3RkOjptYXgo
c2hhcGVNYXJnaW4sIG9mZnNldCgpKSk7CisgICAgYXV0byByZXN1bHQgPSBtYWtlVW5pcXVlPFJh
c3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5JbnRlcnZhbHNTaXplLCBzdGQ6Om1heChzaGFwZU1h
cmdpbiwgb2Zmc2V0KCkpKTsKICAgICBNYXJnaW5JbnRlcnZhbEdlbmVyYXRvciBtYXJnaW5JbnRl
cnZhbEdlbmVyYXRvcihzaGFwZU1hcmdpbik7CiAKICAgICBmb3IgKGludCB5ID0gYm91bmRzKCku
eSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggMzAyMzFhMGJlMWJiYzYzZTRiZTNkMjUwNTEyYmVkM2Qx
OTU5NDA5OS4uZjVlZmVmZGQzMmIzMDU0N2FkYmQ4ZWIwOGY1NGU2M2IwMjQwZmQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTQ2LDI0ICs0NiwyNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVh
dGVJbnNldFNoYXBlKGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGJvdW5kcykKIHsKICAgICBBU1NF
UlQoYm91bmRzLnJlY3QoKS53aWR0aCgpID49IDAgJiYgYm91bmRzLnJlY3QoKS5oZWlnaHQoKSA+
PSAwKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxCb3hTaGFwZT4oYm91bmRzKTsKIH0KIAogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlQ2lyY2xlU2hhcGUoY29uc3QgRmxvYXRQb2ludCYgY2Vu
dGVyLCBmbG9hdCByYWRpdXMpCiB7CiAgICAgQVNTRVJUKHJhZGl1cyA+PSAwKTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkg
LSByYWRpdXMsIGNlbnRlci55KCkgLSByYWRpdXMsIHJhZGl1cyoyLCByYWRpdXMqMiksIEZsb2F0
U2l6ZShyYWRpdXMsIHJhZGl1cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJlY3RhbmdsZVNo
YXBlPihGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJhZGl1cywgY2VudGVyLnkoKSAtIHJhZGl1cywg
cmFkaXVzKjIsIHJhZGl1cyoyKSwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSk7CiB9CiAKIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShjb25zdCBGbG9h
dFBvaW50JiBjZW50ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgcmFkaWkpCiB7CiAgICAgQVNTRVJUKHJh
ZGlpLndpZHRoKCkgPj0gMCAmJiByYWRpaS5oZWlnaHQoKSA+PSAwKTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxSZWN0YW5nbGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRp
aS53aWR0aCgpLCBjZW50ZXIueSgpIC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwg
cmFkaWkuaGVpZ2h0KCkqMiksIHJhZGlpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZWN0YW5n
bGVTaGFwZT4oRmxvYXRSZWN0KGNlbnRlci54KCkgLSByYWRpaS53aWR0aCgpLCBjZW50ZXIueSgp
IC0gcmFkaWkuaGVpZ2h0KCksIHJhZGlpLndpZHRoKCkqMiwgcmFkaWkuaGVpZ2h0KCkqMiksIHJh
ZGlpKTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlUG9seWdvblNo
YXBlKHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVs
ZSBmaWxsUnVsZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2x5Z29uU2hhcGU+
KFdURk1vdmUodmVydGljZXMpLCBmaWxsUnVsZSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UG9s
eWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEZsb2F0UmVjdCBwaHlzaWNhbFJlY3RUb0xvZ2ljYWwoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBmbG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKQEAgLTEy
OCw3ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShj
b25zdCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBlLCBjb25zdCBMYQogICAgICAgICBjb25zdCBWZWN0
b3I8TGVuZ3RoPiYgdmFsdWVzID0gcG9seWdvbi52YWx1ZXMoKTsKICAgICAgICAgc2l6ZV90IHZh
bHVlc1NpemUgPSB2YWx1ZXMuc2l6ZSgpOwogICAgICAgICBBU1NFUlQoISh2YWx1ZXNTaXplICUg
MikpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEZsb2F0UG9pbnQ+Pih2YWx1ZXNTaXplIC8gMik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzID0g
bWFrZVVuaXF1ZTxWZWN0b3I8RmxvYXRQb2ludD4+KHZhbHVlc1NpemUgLyAyKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVlc1NpemU7IGkgKz0gMikgewogICAgICAgICAg
ICAgRmxvYXRQb2ludCB2ZXJ0ZXgoCiAgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0
aCh2YWx1ZXMuYXQoaSksIGJveFdpZHRoKSwKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0
IHRocmVzaG9sZCwgYwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QgPSBzbmFwcGVkSW50UmVjdChp
bWFnZVIpOwogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIp
OwotICAgIGF1dG8gaW50ZXJ2YWxzID0gc3RkOjptYWtlX3VuaXF1ZTxSYXN0ZXJTaGFwZUludGVy
dmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKKyAgICBhdXRvIGlu
dGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVp
Z2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVm
ZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoaW1hZ2VSZWN0LnNpemUoKSwgVW5hY2NlbGVyYXRlZCk7CiAKQEAgLTIxOCw3ICsyMTgsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSog
aW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byBy
YXN0ZXJTaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGU+KFdURk1vdmUoaW50ZXJ2
YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOworICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5p
cXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsK
ICAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHJhc3Rl
clNoYXBlLT5tX21hcmdpbiA9IG1hcmdpbjsKICAgICByZXR1cm4gcmFzdGVyU2hhcGU7CkBAIC0y
MzAsNyArMjMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlQm94U2hh
cGUoY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBXcmkKIAogICAgIEZsb2F0UmVjdCBy
ZWN0KDAsIDAsIHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgpLCByb3VuZGVkUmVjdC5yZWN0KCku
aGVpZ2h0KCkpOwogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmRzKHJlY3QsIHJvdW5kZWRSZWN0
LnJhZGlpKCkpOwotICAgIGF1dG8gc2hhcGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJveFNoYXBlPihi
b3VuZHMpOworICAgIGF1dG8gc2hhcGUgPSBtYWtlVW5pcXVlPEJveFNoYXBlPihib3VuZHMpOwog
ICAgIHNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgc2hhcGUtPm1fbWFy
Z2luID0gbWFyZ2luOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IGNkOTRmODljMDJiMGI4YzEzNTE5NDU3ZTQ0ZDBkZGFm
NmQ4N2YxZmEuLjk0ODQzMTcxOTQ3YzAyMzA5YWI3ZjRmYjFiOTdjMjYzODgyZWUzNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5o
CkBAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgU2hhcGVPdXRzaWRlSW5mbyBmaW5hbCB7CiAgICAg
ICAgIEluZm9NYXAmIGluZm9NYXAgPSBTaGFwZU91dHNpZGVJbmZvOjppbmZvTWFwKCk7CiAgICAg
ICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBpbmZvID0gaW5mb01hcC5nZXQoJmtleSkpCiAgICAg
ICAgICAgICByZXR1cm4gKmluZm87Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gaW5mb01hcC5hZGQo
JmtleSwgc3RkOjptYWtlX3VuaXF1ZTxTaGFwZU91dHNpZGVJbmZvPihrZXkpKTsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBpbmZvTWFwLmFkZCgma2V5LCBtYWtlVW5pcXVlPFNoYXBlT3V0c2lkZUlu
Zm8+KGtleSkpOwogICAgICAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAg
fQogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUluZm8oY29uc3QgUmVuZGVyQm94JiBrZXkpIHsgaW5m
b01hcCgpLnJlbW92ZSgma2V5KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMGM5OGY5MTY2ZjdlMTUyOTcwM2JjZGIyYzhjODNjYzgw
YmI3YmYyNC4uNzQ0YzkwYjhmYjNmNTI3NjhhNTM4ZDIxMzU4MzYyY2E2MzQ4MjdlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC0zNTgs
NyArMzU4LDcgQEAgUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVQYXRoOjpibGVuZChjb25zdCBC
YXNpY1NoYXBlJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpIGMKIAogICAgIGF1dG8mIGZyb21QYXRo
ID0gZG93bmNhc3Q8QmFzaWNTaGFwZVBhdGg+KGZyb20pOwogCi0gICAgYXV0byByZXN1bHRpbmdQ
YXRoQnl0ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOworICAgIGF1
dG8gcmVzdWx0aW5nUGF0aEJ5dGVzID0gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKTsK
ICAgICBidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oKmZyb21QYXRoLm1fYnl0ZVN0cmVh
bSwgKm1fYnl0ZVN0cmVhbSwgKnJlc3VsdGluZ1BhdGhCeXRlcywgcHJvZ3Jlc3MpOwogCiAgICAg
YXV0byByZXN1bHQgPSBCYXNpY1NoYXBlUGF0aDo6Y3JlYXRlKFdURk1vdmUocmVzdWx0aW5nUGF0
aEJ5dGVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29u
dGVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5o
CmluZGV4IGU3YmIwNjE2NTAyZDk5ZDZkYjQzOTJiYjQ2OGE5YWI0NjljZTQ5NGEuLjJjMTJkZDli
NDBkZDQwYjNjMGJmNjc0OTMyMmFlMmIwZmQxZTA3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCkBAIC05NSw3ICs5NSw3IEBAIGNsYXNzIEltYWdl
Q29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxS
ZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBj
bG9uZUludGVybmFsKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBz
dGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuY29weVJlZigpKTsKKyAg
ICAgICAgYXV0byBpbWFnZSA9IG1ha2VVbmlxdWU8SW1hZ2VDb250ZW50RGF0YT4obV9pbWFnZS5j
b3B5UmVmKCkpOwogICAgICAgICBpbWFnZS0+c2V0QWx0VGV4dChhbHRUZXh0KCkpOwogICAgICAg
ICByZXR1cm4gaW1hZ2U7CiAgICAgfQpAQCAtMTI2LDcgKzEyNiw3IEBAIGNsYXNzIFRleHRDb250
ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFRleHRDb250ZW50RGF0YT4obV90ZXh0KTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250
ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1ha2VVbmlxdWU8
VGV4dENvbnRlbnREYXRhPihtX3RleHQpOyB9CiAKICAgICBTdHJpbmcgbV90ZXh0OwogfTsKQEAg
LTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBDb3VudGVyQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMg
Q29udGVudERhdGEgewogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRS
ZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QgZmluYWw7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0
YT4oc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlcigpKSk7CisgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4obWFrZVVuaXF1ZTxDb3VudGVy
Q29udGVudD4oY291bnRlcigpKSk7CiAgICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvdW50
ZXJDb250ZW50PiBtX2NvdW50ZXI7CkBAIC0xOTAsNyArMTkwLDcgQEAgY2xhc3MgUXVvdGVDb250
ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiAKIHByaXZhdGU6CiAgICAgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVu
dERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFF1b3RlQ29udGVudERhdGE+KHF1b3RlKCkpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbWFrZVVuaXF1
ZTxRdW90ZUNvbnRlbnREYXRhPihxdW90ZSgpKTsgfQogCiAgICAgUXVvdGVUeXBlIG1fcXVvdGU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAppbmRl
eCBmM2Q5MWRjOGRiYzhkOWU0NmM2MDFiOTU4NDNiOWE5NTJmM2IyZDFkLi4zMDAxNGQwNGY3MGZi
OTE4MTc0Mjg3NjAzZmRlYWI3MjM5NTYxNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCBGaWxsTGF5ZXI6OkZpbGxM
YXllcihGaWxsTGF5ZXJUeXBlIHR5cGUpCiB9CiAKIEZpbGxMYXllcjo6RmlsbExheWVyKGNvbnN0
IEZpbGxMYXllciYgbykKLSAgICA6IG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8
RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKKyAgICA6IG1fbmV4dChvLm1fbmV4dCA/
IG1ha2VVbmlxdWU8RmlsbExheWVyPigqby5tX25leHQpIDogbnVsbHB0cikKICAgICAsIG1faW1h
Z2Uoby5tX2ltYWdlKQogICAgICwgbV94UG9zaXRpb24oby5tX3hQb3NpdGlvbikKICAgICAsIG1f
eVBvc2l0aW9uKG8ubV95UG9zaXRpb24pCkBAIC0xMTcsNyArMTE3LDcgQEAgRmlsbExheWVyOjp+
RmlsbExheWVyKCkKIAogRmlsbExheWVyJiBGaWxsTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBGaWxs
TGF5ZXImIG8pCiB7Ci0gICAgbV9uZXh0ID0gby5tX25leHQgPyBzdGQ6Om1ha2VfdW5pcXVlPEZp
bGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CisgICAgbV9uZXh0ID0gby5tX25leHQgPyBt
YWtlVW5pcXVlPEZpbGxMYXllcj4oKm8ubV9uZXh0KSA6IG51bGxwdHI7CiAKICAgICBtX2ltYWdl
ID0gby5tX2ltYWdlOwogICAgIG1feFBvc2l0aW9uID0gby5tX3hQb3NpdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDI0OWJhNDdl
NTg0M2VjYzYyZTZmZDRmMjZhZjFjZjUzOGExNjNmOWMuLmZiNDNjMjBlNWNlOTllY2UxOWY0NTJm
ZDlmODc5NjRkODE0YmI3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFJlbmRlclN0eWxlIFJlbmRlclN0
eWxlOjpjbG9uZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gUmVuZGVyU3R5bGU6OmNsb25lUHRyKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENs
b25lKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oc3R5bGUsIENsb25lKTsK
IH0KIAogUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERp
c3BsYXkoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBEaXNwbGF5VHlwZSBkaXNwbGF5
KQpAQCAtNDA5LDcgKzQwOSw3IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVk
UHNldWRvU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwc2V1CiAgICAgUmVuZGVy
U3R5bGUqIHJlc3VsdCA9IHBzZXVkby5nZXQoKTsKIAogICAgIGlmICghbV9jYWNoZWRQc2V1ZG9T
dHlsZXMpCi0gICAgICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQ
c2V1ZG9TdHlsZUNhY2hlPigpOworICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcyA9IG1ha2VV
bmlxdWU8UHNldWRvU3R5bGVDYWNoZT4oKTsKIAogICAgIG1fY2FjaGVkUHNldWRvU3R5bGVzLT5h
cHBlbmQoV1RGTW92ZShwc2V1ZG8pKTsKIApAQCAtMTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBSZW5k
ZXJTdHlsZTo6YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICBhdXRvJiBkYXRhID0gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKICAg
ICBpZiAoIWRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykKLSAgICAgICAgZGF0YS5j
dXN0b21QYWludFdhdGNoZWRQcm9wZXJ0aWVzID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PFN0
cmluZz4+KCk7CisgICAgICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyA9IG1h
a2VVbmlxdWU8SGFzaFNldDxTdHJpbmc+PigpOwogICAgIGRhdGEuY3VzdG9tUGFpbnRXYXRjaGVk
UHJvcGVydGllcy0+YWRkKG5hbWUpOwogfQogCkBAIC0xMzAxLDcgKzEzMDEsNyBAQCB2b2lkIFJl
bmRlclN0eWxlOjpzZXRDb250ZW50KFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlLCBib29sIGFk
ZCkKIHsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0Q29udGVudChz
dGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KGltYWdlLnJlbGVhc2VOb25OdWxsKCkp
LCBhZGQpOworICAgIHNldENvbnRlbnQobWFrZVVuaXF1ZTxJbWFnZUNvbnRlbnREYXRhPihpbWFn
ZS5yZWxlYXNlTm9uTnVsbCgpKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29u
dGVudChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBhZGQpCkBAIC0xMzEwLDEzICsxMzEwLDEz
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJv
b2wgYWRkKQogICAgIGlmIChhZGQgJiYgZGF0YS5jb250ZW50KSB7CiAgICAgICAgIGF1dG8mIGxh
c3QgPSBsYXN0Q29udGVudCgqZGF0YS5jb250ZW50KTsKICAgICAgICAgaWYgKCFpczxUZXh0Q29u
dGVudERhdGE+KGxhc3QpKQotICAgICAgICAgICAgbGFzdC5zZXROZXh0KHN0ZDo6bWFrZV91bmlx
dWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpKTsKKyAgICAgICAgICAgIGxhc3Quc2V0TmV4dCht
YWtlVW5pcXVlPFRleHRDb250ZW50RGF0YT4oc3RyaW5nKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgYXV0byYgdGV4dENvbnRlbnQgPSBkb3duY2FzdDxUZXh0Q29udGVudERhdGE+KGxh
c3QpOwogICAgICAgICAgICAgdGV4dENvbnRlbnQuc2V0VGV4dCh0ZXh0Q29udGVudC50ZXh0KCkg
KyBzdHJpbmcpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZGF0YS5jb250ZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZyk7CisgICAgICAgIGRh
dGEuY29udGVudCA9IG1ha2VVbmlxdWU8VGV4dENvbnRlbnREYXRhPihzdHJpbmcpOwogICAgICAg
ICBhdXRvJiBhbHRUZXh0ID0gZGF0YS5hbHRUZXh0OwogICAgICAgICBpZiAoIWFsdFRleHQuaXNO
dWxsKCkpCiAgICAgICAgICAgICBkYXRhLmNvbnRlbnQtPnNldEFsdFRleHQoYWx0VGV4dCk7CkBA
IC0xMzI3LDEyICsxMzI3LDEyIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1
bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKIHsKICAgICBpZiAo
IWNvdW50ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRDb250ZW50KHN0ZDo6bWFrZV91bmlx
dWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwgYWRkKTsKKyAgICBzZXRD
b250ZW50KG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnREYXRhPihXVEZNb3ZlKGNvdW50ZXIpKSwg
YWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVudChRdW90ZVR5cGUgcXVvdGUs
IGJvb2wgYWRkKQogewotICAgIHNldENvbnRlbnQoc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNvbnRl
bnREYXRhPihxdW90ZSksIGFkZCk7CisgICAgc2V0Q29udGVudChtYWtlVW5pcXVlPFF1b3RlQ29u
dGVudERhdGE+KHF1b3RlKSwgYWRkKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29udGVu
dEFsdFRleHQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBDb3Vu
dGVyRGlyZWN0aXZlTWFwJiBSZW5kZXJTdHlsZTo6YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKQog
ewogICAgIGF1dG8mIG1hcCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY291bnRl
ckRpcmVjdGl2ZXM7CiAgICAgaWYgKCFtYXApCi0gICAgICAgIG1hcCA9IHN0ZDo6bWFrZV91bmlx
dWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKTsKKyAgICAgICAgbWFwID0gbWFrZVVuaXF1ZTxDb3Vu
dGVyRGlyZWN0aXZlTWFwPigpOwogICAgIHJldHVybiAqbWFwOwogfQogCkBAIC0xNjcxLDE0ICsx
NjcxLDE0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFkanVzdFRyYW5zaXRpb25zKCkKIEFuaW1hdGlv
bkxpc3QmIFJlbmRlclN0eWxlOjplbnN1cmVBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuYW5pbWF0aW9ucykKLSAgICAgICAgbV9yYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5hbmltYXRpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxBbmlt
YXRpb25MaXN0PigpOworICAgICAgICBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmFu
aW1hdGlvbnMgPSBtYWtlVW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCk7CiAgICAgcmV0dXJuICptX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLT5hbmltYXRpb25zOwogfQogCiBBbmltYXRpb25MaXN0JiBSZW5k
ZXJTdHlsZTo6ZW5zdXJlVHJhbnNpdGlvbnMoKQogewogICAgIGlmICghbV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucykKLSAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uTGlz
dD4oKTsKKyAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS50cmFuc2l0aW9u
cyA9IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKTsKICAgICByZXR1cm4gKm1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRyYW5zaXRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCmluZGV4IDIwYjJhODExNGIw
YzhlOWViZDQ4MjcwNzlhOTgyMGYyZWMwZGNkYzIuLjZlMzdjZjhmYjhhYmE1NWVjMzMwYTk2MDMz
YThhOTU0YzdjYjA0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgU3R5bGVTaGFk
b3dTVkdEYXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoKQogCiBpbmxpbmUgU3R5bGVTaGFkb3dTVkdE
YXRhOjpTdHlsZVNoYWRvd1NWR0RhdGEoY29uc3QgU3R5bGVTaGFkb3dTVkdEYXRhJiBvdGhlcikK
ICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVTaGFkb3dTVkdEYXRhPigpCi0gICAgLCBzaGFkb3cob3Ro
ZXIuc2hhZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqb3RoZXIuc2hhZG93KSA6
IG51bGxwdHIpCisgICAgLCBzaGFkb3cob3RoZXIuc2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dE
YXRhPigqb3RoZXIuc2hhZG93KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcAppbmRleCAzZDYxYzk0YzAxNjYxNjA4NThk
YWJkODQwOWZjNDA4NjcwZTUwMWNhLi5jMTdlYWY4NTliMGJmYWE3ZGFiYzAwOGQ0ZTc0MGZjNjMw
YTRiODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEu
Y3BwCkBAIC0zMyw3ICszMyw3IEBAIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEoY29uc3QgU2hhZG93
RGF0YSYgbykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQogICAgICwgbV9zdHlsZShvLm1fc3R5
bGUpCiAgICAgLCBtX2lzV2Via2l0Qm94U2hhZG93KG8ubV9pc1dlYmtpdEJveFNoYWRvdykKLSAg
ICAsIG1fbmV4dChvLm1fbmV4dCA/IHN0ZDo6bWFrZV91bmlxdWU8U2hhZG93RGF0YT4oKm8ubV9u
ZXh0KSA6IG51bGxwdHIpCisgICAgLCBtX25leHQoby5tX25leHQgPyBtYWtlVW5pcXVlPFNoYWRv
d0RhdGE+KCpvLm1fbmV4dCkgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5k
ZXggYWQyY2JkOTU3ZWVmODI1NjBjZmIzNTJlOWY1MGIzOWU2MzNhMjZmZi4uOTZkYmJhMDA3ZTZh
NjRhN2Q2OTdhMjlhMjFkNjIxYWQ0NDc1NGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtMTcy
LDcgKzE3Miw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCB2aXNpdGVkTGlua1Rl
eHRFbXBoYXNpc0NvbG9yKG8udmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcikKICAgICAsIGNh
cmV0Q29sb3Ioby5jYXJldENvbG9yKQogICAgICwgdmlzaXRlZExpbmtDYXJldENvbG9yKG8udmlz
aXRlZExpbmtDYXJldENvbG9yKQotICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBzdGQ6
Om1ha2VfdW5pcXVlPFNoYWRvd0RhdGE+KCpvLnRleHRTaGFkb3cpIDogbnVsbHB0cikKKyAgICAs
IHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPigqby50ZXh0
U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCBjdXJzb3JEYXRhKG8uY3Vyc29yRGF0YSkKICAgICAs
IGluZGVudChvLmluZGVudCkKICAgICAsIGVmZmVjdGl2ZVpvb20oby5lZmZlY3RpdmVab29tKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDZmYmIyYjdiMGMzZWIwM2U4NjlhMWVhYWM5MTYx
MTE5YzljNjFlOWIuLmJkZDAxOTE1YWEyNzhkZDZhNjY0OGZmNGMzZmJkYjNmY2NkMTQyYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTEzOSwxMyArMTM5LDEzIEBAIGlubGluZSBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0
eWxlUmFyZU5vbkluCiAgICAgLCBzY3JvbGxTbmFwQXJlYShvLnNjcm9sbFNuYXBBcmVhKQogI2Vu
ZGlmCiAgICAgLCBjb250ZW50KG8uY29udGVudCA/IG8uY29udGVudC0+Y2xvbmUoKSA6IG51bGxw
dHIpCi0gICAgLCBjb3VudGVyRGlyZWN0aXZlcyhvLmNvdW50ZXJEaXJlY3RpdmVzID8gc3RkOjpt
YWtlX3VuaXF1ZTxDb3VudGVyRGlyZWN0aXZlTWFwPigqby5jb3VudGVyRGlyZWN0aXZlcykgOiBu
dWxscHRyKQorICAgICwgY291bnRlckRpcmVjdGl2ZXMoby5jb3VudGVyRGlyZWN0aXZlcyA/IG1h
a2VVbmlxdWU8Q291bnRlckRpcmVjdGl2ZU1hcD4oKm8uY291bnRlckRpcmVjdGl2ZXMpIDogbnVs
bHB0cikKICAgICAsIGFsdFRleHQoby5hbHRUZXh0KQotICAgICwgYm94U2hhZG93KG8uYm94U2hh
ZG93ID8gc3RkOjptYWtlX3VuaXF1ZTxTaGFkb3dEYXRhPigqby5ib3hTaGFkb3cpIDogbnVsbHB0
cikKKyAgICAsIGJveFNoYWRvdyhvLmJveFNoYWRvdyA/IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4o
Km8uYm94U2hhZG93KSA6IG51bGxwdHIpCiAgICAgLCB3aWxsQ2hhbmdlKG8ud2lsbENoYW5nZSkK
ICAgICAsIGJveFJlZmxlY3Qoby5ib3hSZWZsZWN0KQotICAgICwgYW5pbWF0aW9ucyhvLmFuaW1h
dGlvbnMgPyBzdGQ6Om1ha2VfdW5pcXVlPEFuaW1hdGlvbkxpc3Q+KCpvLmFuaW1hdGlvbnMpIDog
bnVsbHB0cikKLSAgICAsIHRyYW5zaXRpb25zKG8udHJhbnNpdGlvbnMgPyBzdGQ6Om1ha2VfdW5p
cXVlPEFuaW1hdGlvbkxpc3Q+KCpvLnRyYW5zaXRpb25zKSA6IG51bGxwdHIpCisgICAgLCBhbmlt
YXRpb25zKG8uYW5pbWF0aW9ucyA/IG1ha2VVbmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8uYW5pbWF0
aW9ucykgOiBudWxscHRyKQorICAgICwgdHJhbnNpdGlvbnMoby50cmFuc2l0aW9ucyA/IG1ha2VV
bmlxdWU8QW5pbWF0aW9uTGlzdD4oKm8udHJhbnNpdGlvbnMpIDogbnVsbHB0cikKICAgICAsIG1h
c2soby5tYXNrKQogICAgICwgbWFza0JveEltYWdlKG8ubWFza0JveEltYWdlKQogICAgICwgcGFn
ZVNpemUoby5wYWdlU2l6ZSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVO
b25JbgogICAgICwganVzdGlmeUl0ZW1zKG8uanVzdGlmeUl0ZW1zKQogICAgICwganVzdGlmeVNl
bGYoby5qdXN0aWZ5U2VsZikKICAgICAsIGN1c3RvbVByb3BlcnRpZXMoby5jdXN0b21Qcm9wZXJ0
aWVzKQotICAgICwgY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0
Y2hlZFByb3BlcnRpZXMgPyBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3Vz
dG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBudWxscHRyKQorICAgICwgY3VzdG9tUGFpbnRX
YXRjaGVkUHJvcGVydGllcyhvLmN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnRpZXMgPyBtYWtlVW5p
cXVlPEhhc2hTZXQ8U3RyaW5nPj4oKm8uY3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVydGllcykgOiBu
dWxscHRyKQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKICAgICAsIHRvdWNoQWN0aW9ucyhv
LnRvdWNoQWN0aW9ucykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCAyYzZmMzE3OGVlYjI2YzdiMmMwZDk1YWUxMDhiN2Vm
Y2M2ZTIyYzRlLi4yNGNkZTRiZDYxZTcxNGMyMzIzYjllNWNkMmNmMjY5ZTI4NDVmOWFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAt
NTAsNyArNTAsNyBAQCBSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UoU1ZHSW1hZ2VFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyU1ZHTW9kZWxP
YmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1Vw
ZGF0ZSh0cnVlKQogICAgICwgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSh0cnVlKQotICAgICwgbV9p
bWFnZVJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNvdXJjZT4oKSkKKyAg
ICAsIG1faW1hZ2VSZXNvdXJjZShtYWtlVW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiB7
CiAgICAgaW1hZ2VSZXNvdXJjZSgpLmluaXRpYWxpemUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IDNjMzEwNTZk
MWNhYjFmZWExMDQ5MDc4MGQwMGM4ZGNkMmM3OTgwNjguLmJhMWNkMDUyZGFkYWExY2UxODQxYzdj
MjNjYWYzM2ZhYTRlMzQ3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVuZGVyU1ZHSW5saW5lOjpS
ZW5kZXJTVkdJbmxpbmUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0eWwKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+IFJlbmRlclNWR0lubGluZTo6
Y3JlYXRlSW5saW5lRmxvd0JveCgpCiB7Ci0gICAgYXV0byBib3ggPSBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0lubGluZUZsb3dCb3g+KCp0aGlzKTsKKyAgICBhdXRvIGJveCA9IG1ha2VVbmlxdWU8U1ZH
SW5saW5lRmxvd0JveD4oKnRoaXMpOwogICAgIGJveC0+c2V0SGFzVmlydHVhbExvZ2ljYWxIZWln
aHQoKTsKICAgICByZXR1cm4gYm94OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggNjdlNmY5ODk3ZDI3NzQ0ZmQ0
MTMzZmYyNzY3MTRjNGU5ZGE2NjViMC4uZGJmNDkwM2Y4OWY0ZGM5MmVkZmYzMDUzOTI1ODY5ZjMy
ZTJkOTljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZVRleHQuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZW5kZXJTVkdJbmxp
bmVUZXh0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVy
U3R5bGUKIAogc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclNWR0lubGluZVRl
eHQ6OmNyZWF0ZVRleHRCb3goKQogewotICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdJbmxpbmVUZXh0Qm94PigqdGhpcyk7CisgICAgYXV0byBib3ggPSBtYWtlVW5pcXVlPFNWR0lu
bGluZVRleHRCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0
KCk7CiAgICAgcmV0dXJuIGJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMWIzZWYyNGNjOTJk
MjA1MmEzNGFhZDIwODgyMzMwZTFhMTIzYjg0Zi4uMWFkMjY0OTY0NjcwOWMyM2YwZGI5Y2ZhZTRi
ODYzYzI0N2IzNjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpidWls
ZFByaW1pdGl2ZXMoU1ZHRmkKICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3ggPSBmaWx0
ZXIudGFyZ2V0Qm91bmRpbmdCb3goKTsKIAogICAgIC8vIEFkZCBlZmZlY3RzIHRvIHRoZSBidWls
ZGVyCi0gICAgYXV0byBidWlsZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVy
PihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7CisgICAgYXV0byBidWlsZGVyID0gbWFr
ZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPihTb3VyY2VHcmFwaGljOjpjcmVhdGUoZmlsdGVyKSk7
CiAgICAgYnVpbGRlci0+c2V0UHJpbWl0aXZlVW5pdHMoZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2
ZVVuaXRzKCkpOwogICAgIGJ1aWxkZXItPnNldFRhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5k
aW5nQm94KTsKICAgICAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5k
ZQogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFscmVhZHkgYnVpbHQsIG9yIHdlJ3JlIGluIGEg
Y3ljbGUsIG9yIHdlJ3JlIG1hcmtlZCBmb3IgcmVtb3ZhbC4gUmVnYXJkbGVzcywganVzdCBkbyBu
b3RoaW5nIG1vcmUgbm93LgogICAgIH0KIAotICAgIGF1dG8gZmlsdGVyRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsdGVyRGF0YT4oKTsKKyAgICBhdXRvIGZpbHRlckRhdGEgPSBtYWtlVW5pcXVl
PEZpbHRlckRhdGE+KCk7CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gcmVuZGVy
ZXIub2JqZWN0Qm91bmRpbmdCb3goKTsKIAogICAgIGZpbHRlckRhdGEtPmJvdW5kYXJpZXMgPSBT
VkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlckVsZW1lbnQ+KCZmaWx0
ZXJFbGVtZW50KCksIGZpbHRlckVsZW1lbnQoKS5maWx0ZXJVbml0cygpLCB0YXJnZXRCb3VuZGlu
Z0JveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCBkOGFkMDgwNDY2YzVjNmQ5ZWVjZjA3OGNk
ZmY2NDI2YzYxNGEwY2UyLi41NTJjZTVhMzNhODA2MmU2YmVlMGIwNGFlM2YxNjBmMDk5ZWI1MmY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IFJlbgogCiAgICAgYXV0byYgZ3JhZGllbnREYXRhID0gbV9ncmFkaWVudE1hcC5hZGQo
JnJlbmRlcmVyLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFncmFkaWVudERh
dGEpCi0gICAgICAgIGdyYWRpZW50RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhZGllbnREYXRh
PigpOworICAgICAgICBncmFkaWVudERhdGEgPSBtYWtlVW5pcXVlPEdyYWRpZW50RGF0YT4oKTsK
IAogICAgIGJvb2wgaXNQYWludGluZ1RleHQgPSByZXNvdXJjZU1vZGUuY29udGFpbnMoUmVuZGVy
U1ZHUmVzb3VyY2VNb2RlOjpBcHBseVRvVGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggYWE1
NzY1ZWQzNzliNmFiMWI5NDQ3MjZmNWI1ZWU0NTQzODNjNDY0ZS4uNGM4MTliOWJjNTVkYzJiZmE4
MmZiYmMwOTdmNjM3NTg1YjViMTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKIAogICAgIGJvb2wgbWlzc2luZ01hc2tlckRhdGEg
PSAhbV9tYXNrZXIuY29udGFpbnMoJnJlbmRlcmVyKTsKICAgICBpZiAobWlzc2luZ01hc2tlckRh
dGEpCi0gICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIHN0ZDo6bWFrZV91bmlxdWU8TWFz
a2VyRGF0YT4oKSk7CisgICAgICAgIG1fbWFza2VyLnNldCgmcmVuZGVyZXIsIG1ha2VVbmlxdWU8
TWFza2VyRGF0YT4oKSk7CiAKICAgICBNYXNrZXJEYXRhKiBtYXNrZXJEYXRhID0gbV9tYXNrZXIu
Z2V0KCZyZW5kZXJlcik7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0g
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENv
b3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGNjMmNiZmNm
MGZlOWE1OWVjZTE1ZjUyZjM1NzJkYjU5ZDE2MzIwZDYuLjMxYmM1ZjE5MzFiZGFlNTBhYWM2NjEz
NTlmYzBhMjZmMTc4NTg2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTExNyw3ICsxMTcsNyBA
QCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIEJ1aWxkIHBhdHRlcm4uCi0gICAgYXV0byBwYXR0ZXJuRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8UGF0dGVybkRhdGE+KCk7CisgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0
dGVybkRhdGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUo
Y29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICAvLyBDb21w
dXRlIHBhdHRlcm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDM0YjBhZTc1YmRjMDA1NjU3NmQ1
MTM4MDE4NWVmZTZiYzcyYzcwNmUuLjZhNjcxMThmZjFiMjU4YjMwM2M5NTYzODU5M2Y0NzRlZTg5
YmJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJlbmRlclNWR1NoYXBlOjp+UmVuZGVyU1ZHU2hhcGUo
KSA9IGRlZmF1bHQ7CiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnVwZGF0ZVNoYXBlRnJvbUVsZW1l
bnQoKQogewotICAgIG1fcGF0aCA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0aD4ocGF0aEZyb21HcmFw
aGljc0VsZW1lbnQoJmdyYXBoaWNzRWxlbWVudCgpKSk7CisgICAgbV9wYXRoID0gbWFrZVVuaXF1
ZTxQYXRoPihwYXRoRnJvbUdyYXBoaWNzRWxlbWVudCgmZ3JhcGhpY3NFbGVtZW50KCkpKTsKICAg
ICBwcm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKICAgICBtX2ZpbGxCb3VuZGluZ0JveCA9IGNh
bGN1bGF0ZU9iamVjdEJvdW5kaW5nQm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5kZXggYmY3ODY0NDNkZGQ2MGQ2MjFiY2Q1NzliODc3MGVk
Y2Q5MWQyOWZhOS4uOWM3MzdjYWZmOGI5Mjc2Y2M0MTA2MDJmNTc5YTlmMzY0ZTVhMDhiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcApAQCAtNTA4
LDcgKzUwOCw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRDbGlwcGVyKFJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlciogY2xpcHBlcikKICAgICBBU1NFUlQoY2xpcHBlci0+cmVzb3VyY2VUeXBlKCkg
PT0gQ2xpcHBlclJlc291cmNlVHlwZSk7CiAKICAgICBpZiAoIW1fY2xpcHBlckZpbHRlck1hc2tl
ckRhdGEpCi0gICAgICAgIG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPENsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhPigpOworICAgICAgICBtX2NsaXBwZXJGaWx0ZXJN
YXNrZXJEYXRhID0gbWFrZVVuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKIAogICAg
IG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEtPmNsaXBwZXIgPSBjbGlwcGVyOwogICAgIHJldHVy
biB0cnVlOwpAQCAtNTI5LDcgKzUyOSw3IEBAIGJvb2wgU1ZHUmVzb3VyY2VzOjpzZXRGaWx0ZXIo
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikKICAgICBBU1NFUlQoZmlsdGVyLT5yZXNv
dXJjZVR5cGUoKSA9PSBGaWx0ZXJSZXNvdXJjZVR5cGUpOwogCiAgICAgaWYgKCFtX2NsaXBwZXJG
aWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2VyRGF0YT4oKTsKKyAgICAgICAgbV9jbGlw
cGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+
KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhLT5maWx0ZXIgPSBmaWx0ZXI7CiAg
ICAgcmV0dXJuIHRydWU7CkBAIC01NTAsNyArNTUwLDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNl
dE1hcmtlclN0YXJ0KFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJTdGFydCkKICAgICBB
U1NFUlQobWFya2VyU3RhcnQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNlVHlwZSk7
CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBtYWtlVW5p
cXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlclN0YXJ0ID0gbWFy
a2VyU3RhcnQ7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NzEsNyArNTcxLDcgQEAgYm9vbCBTVkdS
ZXNvdXJjZXM6OnNldE1hcmtlck1pZChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyTWlk
KQogICAgIEFTU0VSVChtYXJrZXJNaWQtPnJlc291cmNlVHlwZSgpID09IE1hcmtlclJlc291cmNl
VHlwZSk7CiAKICAgICBpZiAoIW1fbWFya2VyRGF0YSkKLSAgICAgICAgbV9tYXJrZXJEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxNYXJrZXJEYXRhPigpOworICAgICAgICBtX21hcmtlckRhdGEgPSBt
YWtlVW5pcXVlPE1hcmtlckRhdGE+KCk7CiAKICAgICBtX21hcmtlckRhdGEtPm1hcmtlck1pZCA9
IG1hcmtlck1pZDsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBib29sIFNW
R1Jlc291cmNlczo6c2V0TWFya2VyRW5kKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJrZXJF
bmQpCiAgICAgQVNTRVJUKG1hcmtlckVuZC0+cmVzb3VyY2VUeXBlKCkgPT0gTWFya2VyUmVzb3Vy
Y2VUeXBlKTsKIAogICAgIGlmICghbV9tYXJrZXJEYXRhKQotICAgICAgICBtX21hcmtlckRhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPE1hcmtlckRhdGE+KCk7CisgICAgICAgIG1fbWFya2VyRGF0YSA9
IG1ha2VVbmlxdWU8TWFya2VyRGF0YT4oKTsKIAogICAgIG1fbWFya2VyRGF0YS0+bWFya2VyRW5k
ID0gbWFya2VyRW5kOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wg
U1ZHUmVzb3VyY2VzOjpzZXRNYXNrZXIoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlcikK
ICAgICBBU1NFUlQobWFza2VyLT5yZXNvdXJjZVR5cGUoKSA9PSBNYXNrZXJSZXNvdXJjZVR5cGUp
OwogCiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJEYXRhKQotICAgICAgICBtX2NsaXBw
ZXJGaWx0ZXJNYXNrZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDbGlwcGVyRmlsdGVyTWFza2Vy
RGF0YT4oKTsKKyAgICAgICAgbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSA9IG1ha2VVbmlxdWU8
Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+KCk7CiAKICAgICBtX2NsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhLT5tYXNrZXIgPSBtYXNrZXI7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MzYsNyArNjM2LDcg
QEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldEZpbGwoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIq
IGZpbGwpCiAgICAgICAgICAgIHx8IGZpbGwtPnJlc291cmNlVHlwZSgpID09IFJhZGlhbEdyYWRp
ZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxsU3Ryb2tlRGF0YSkKLSAgICAgICAg
bV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsbFN0cm9rZURhdGE+KCk7Cisg
ICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVlPEZpbGxTdHJva2VEYXRhPigpOwog
CiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+ZmlsbCA9IGZpbGw7CiAgICAgcmV0dXJuIHRydWU7CkBA
IC02NTksNyArNjU5LDcgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OnNldFN0cm9rZShSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lciogc3Ryb2tlKQogICAgICAgICAgICB8fCBzdHJva2UtPnJlc291cmNl
VHlwZSgpID09IFJhZGlhbEdyYWRpZW50UmVzb3VyY2VUeXBlKTsKIAogICAgIGlmICghbV9maWxs
U3Ryb2tlRGF0YSkKLSAgICAgICAgbV9maWxsU3Ryb2tlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
RmlsbFN0cm9rZURhdGE+KCk7CisgICAgICAgIG1fZmlsbFN0cm9rZURhdGEgPSBtYWtlVW5pcXVl
PEZpbGxTdHJva2VEYXRhPigpOwogCiAgICAgbV9maWxsU3Ryb2tlRGF0YS0+c3Ryb2tlID0gc3Ry
b2tlOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCAxOTE5NWFhMWRhYmM2NmU0YjM1NjU5NzJl
YzkxZjg5NDc3ZjQwMzliLi4xZWViNzhmNTdiM2ViYjMxYjRjZGU4ZTUzMDJkZGUwOWUwNDhjMGJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0Nh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0Nh
Y2hlLmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjphZGRSZXNv
dXJjZXNGcm9tUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0CiAgICAgQVNT
RVJUKCFtX2NhY2hlLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogCiAgICAgLy8gQnVpbGQgYSBsaXN0
IG9mIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXNzZWQgUmVuZGVyT2JqZWN0
Ci0gICAgYXV0byBuZXdSZXNvdXJjZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR1Jlc291cmNlcz4o
KTsKKyAgICBhdXRvIG5ld1Jlc291cmNlcyA9IG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2VzPigpOwog
ICAgIGlmICghbmV3UmVzb3VyY2VzLT5idWlsZENhY2hlZFJlc291cmNlcyhyZW5kZXJlciwgc3R5
bGUpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCAzMjQxMDI1ODRjMWYxMTNk
MGVlZDMzMjE0YTY3ZjU1MzRhYjBmNTlhLi44MTBhMGI4ODBhOGFhNGRhZTAyZmFiNDQ2YTk0MWVk
ZDljNWE3MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBTVkdUZXh0
TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVyZXIoUmVu
ZGVyU1ZHSW5saW4KICAgICBpZiAobV9pc0NvbXBsZXhUZXh0KQogICAgICAgICBtX3NpbXBsZVdp
ZHRoSXRlcmF0b3IgPSBudWxscHRyOwogICAgIGVsc2UKLSAgICAgICAgbV9zaW1wbGVXaWR0aEl0
ZXJhdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXaWR0aEl0ZXJhdG9yPigmc2NhbGVkRm9udCwgbV9y
dW4pOworICAgICAgICBtX3NpbXBsZVdpZHRoSXRlcmF0b3IgPSBtYWtlVW5pcXVlPFdpZHRoSXRl
cmF0b3I+KCZzY2FsZWRGb250LCBtX3J1bik7CiB9CiAKIHN0cnVjdCBNZWFzdXJlVGV4dERhdGEg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlci5jcHAKaW5kZXggZDM3YmVlOGNiY2U1NTYxNTExYjI0ZTM2NGUxYWY2NGFhZDdh
YTc1ZC4uZTZiMjczMjBkOTJmZTg1NmQ4Mzc0MTA4ZWQ5NTQyZTA5MWVlYWY0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXIuY3BwCkBAIC0xMjIsMjIgKzEyMiwyMiBAQCBzdGF0aWMgdm9pZCBnZXRJbmxpbmVSdW4oUmVu
ZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBib3VuZGFyeSwgUmVuZGVyT2JqZQogCiBS
ZW5kZXJUcmVlQnVpbGRlcjo6UmVuZGVyVHJlZUJ1aWxkZXIoUmVuZGVyVmlldyYgdmlldykKICAg
ICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9maXJzdExldHRlckJ1aWxkZXIoc3RkOjptYWtlX3Vu
aXF1ZTxGaXJzdExldHRlcj4oKnRoaXMpKQotICAgICwgbV9saXN0QnVpbGRlcihzdGQ6Om1ha2Vf
dW5pcXVlPExpc3Q+KCp0aGlzKSkKLSAgICAsIG1fbXVsdGlDb2x1bW5CdWlsZGVyKHN0ZDo6bWFr
ZV91bmlxdWU8TXVsdGlDb2x1bW4+KCp0aGlzKSkKLSAgICAsIG1fdGFibGVCdWlsZGVyKHN0ZDo6
bWFrZV91bmlxdWU8VGFibGU+KCp0aGlzKSkKLSAgICAsIG1fcnVieUJ1aWxkZXIoc3RkOjptYWtl
X3VuaXF1ZTxSdWJ5PigqdGhpcykpCi0gICAgLCBtX2Zvcm1Db250cm9sc0J1aWxkZXIoc3RkOjpt
YWtlX3VuaXF1ZTxGb3JtQ29udHJvbHM+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tCdWlsZGVyKHN0
ZDo6bWFrZV91bmlxdWU8QmxvY2s+KCp0aGlzKSkKLSAgICAsIG1fYmxvY2tGbG93QnVpbGRlcihz
dGQ6Om1ha2VfdW5pcXVlPEJsb2NrRmxvdz4oKnRoaXMpKQotICAgICwgbV9pbmxpbmVCdWlsZGVy
KHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lPigqdGhpcykpCi0gICAgLCBtX3N2Z0J1aWxkZXIoc3Rk
OjptYWtlX3VuaXF1ZTxTVkc+KCp0aGlzKSkKKyAgICAsIG1fZmlyc3RMZXR0ZXJCdWlsZGVyKG1h
a2VVbmlxdWU8Rmlyc3RMZXR0ZXI+KCp0aGlzKSkKKyAgICAsIG1fbGlzdEJ1aWxkZXIobWFrZVVu
aXF1ZTxMaXN0PigqdGhpcykpCisgICAgLCBtX211bHRpQ29sdW1uQnVpbGRlcihtYWtlVW5pcXVl
PE11bHRpQ29sdW1uPigqdGhpcykpCisgICAgLCBtX3RhYmxlQnVpbGRlcihtYWtlVW5pcXVlPFRh
YmxlPigqdGhpcykpCisgICAgLCBtX3J1YnlCdWlsZGVyKG1ha2VVbmlxdWU8UnVieT4oKnRoaXMp
KQorICAgICwgbV9mb3JtQ29udHJvbHNCdWlsZGVyKG1ha2VVbmlxdWU8Rm9ybUNvbnRyb2xzPigq
dGhpcykpCisgICAgLCBtX2Jsb2NrQnVpbGRlcihtYWtlVW5pcXVlPEJsb2NrPigqdGhpcykpCisg
ICAgLCBtX2Jsb2NrRmxvd0J1aWxkZXIobWFrZVVuaXF1ZTxCbG9ja0Zsb3c+KCp0aGlzKSkKKyAg
ICAsIG1faW5saW5lQnVpbGRlcihtYWtlVW5pcXVlPElubGluZT4oKnRoaXMpKQorICAgICwgbV9z
dmdCdWlsZGVyKG1ha2VVbmlxdWU8U1ZHPigqdGhpcykpCiAjaWYgRU5BQkxFKE1BVEhNTCkKLSAg
ICAsIG1fbWF0aE1MQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPE1hdGhNTD4oKnRoaXMpKQorICAg
ICwgbV9tYXRoTUxCdWlsZGVyKG1ha2VVbmlxdWU8TWF0aE1MPigqdGhpcykpCiAjZW5kaWYKLSAg
ICAsIG1fY29udGludWF0aW9uQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPENvbnRpbnVhdGlvbj4o
KnRoaXMpKQorICAgICwgbV9jb250aW51YXRpb25CdWlsZGVyKG1ha2VVbmlxdWU8Q29udGludWF0
aW9uPigqdGhpcykpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICwgbV9mdWxsU2Ny
ZWVuQnVpbGRlcihzdGQ6Om1ha2VfdW5pcXVlPEZ1bGxTY3JlZW4+KCp0aGlzKSkKKyAgICAsIG1f
ZnVsbFNjcmVlbkJ1aWxkZXIobWFrZVVuaXF1ZTxGdWxsU2NyZWVuPigqdGhpcykpCiAjZW5kaWYK
IHsKICAgICBSRUxFQVNFX0FTU0VSVCghc19jdXJyZW50IHx8ICZtX3ZpZXcgIT0gJnNfY3VycmVu
dC0+bV92aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDlhOThkMjVjMzJiOTM2NGI0NmE2YWVjZmMz
Y2ZmZGM2YzQ2NmY0ZDIuLmI5ZDIwN2Y3ZGZkMzI0NmZlMDMwODZjODRjYTIwMWJjYjdiOTE5Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
VXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVVcGRhdGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBSZW5kZXJUcmVlVXBkYXRlcjo6UGFy
ZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVz
KgogCiBSZW5kZXJUcmVlVXBkYXRlcjo6UmVuZGVyVHJlZVVwZGF0ZXIoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fZ2VuZXJhdGVkQ29udGVu
dChzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkKKyAgICAsIG1fZ2Vu
ZXJhdGVkQ29udGVudChtYWtlVW5pcXVlPEdlbmVyYXRlZENvbnRlbnQ+KCp0aGlzKSkKICAgICAs
IG1fYnVpbGRlcihyZW5kZXJWaWV3KCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUludmFsaWRhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
SW52YWxpZGF0b3IuY3BwCmluZGV4IGRhZTExY2IyZjYyODk5MTg0NTNhMTI4MDlhZTQzYjgxMjRi
NmIxMmIuLjZkNjk1YTY2MGQwZTRlMDQ1YTI2ZGFiZTMzMzFlY2EyNmZhZDJlYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlSW52YWxpZGF0b3IuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0
YXRpYyBib29sIHNob3VsZERpcnR5QWxsU3R5bGUoY29uc3QgVmVjdG9yPFN0eWxlU2hlZXRDb250
ZW50cyo+JiBzaGVldHMpCiB9CiAKIEludmFsaWRhdG9yOjpJbnZhbGlkYXRvcihjb25zdCBWZWN0
b3I8U3R5bGVTaGVldENvbnRlbnRzKj4mIHNoZWV0cywgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciYgbWVkaWFRdWVyeUV2YWx1YXRvcikKLSAgICA6IG1fb3duZWRSdWxlU2V0KHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNldD4oKSkKKyAgICA6IG1fb3duZWRSdWxlU2V0KG1ha2VVbmlxdWU8UnVsZVNl
dD4oKSkKICAgICAsIG1fcnVsZVNldCgqbV9vd25lZFJ1bGVTZXQpCiAgICAgLCBtX2RpcnRpZXNB
bGxTdHlsZShzaG91bGREaXJ0eUFsbFN0eWxlKHNoZWV0cykpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlbGF0aW9ucy5jcHAKaW5kZXggNGQ4MTQ4YjRlMzFkNzRkNmEwYTUxNzU0ZGVlNWVh
YjgwNzU5YWJhYS4uMDYyZDU5NjRkNzdlYzVkYjgzYjNmNDFhY2JhYTg3ZWZjZTk4ZGQ2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZWxhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcApAQCAtNDAsNyArNDAsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UmVsYXRpb25zPiBjb21taXRSZWxhdGlvbnNUb1JlbmRlclN0eWxlKFJl
bmRlclN0eWxlJiBzdHlsZSwgY29ucwogCiAgICAgYXV0byBhcHBlbmRTdHlsZVJlbGF0aW9uID0g
WyZyZW1haW5pbmdSZWxhdGlvbnNdIChjb25zdCBSZWxhdGlvbiYgcmVsYXRpb24pIHsKICAgICAg
ICAgaWYgKCFyZW1haW5pbmdSZWxhdGlvbnMpCi0gICAgICAgICAgICByZW1haW5pbmdSZWxhdGlv
bnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbGF0aW9ucz4oKTsKKyAgICAgICAgICAgIHJlbWFpbmlu
Z1JlbGF0aW9ucyA9IG1ha2VVbmlxdWU8UmVsYXRpb25zPigpOwogICAgICAgICByZW1haW5pbmdS
ZWxhdGlvbnMtPmFwcGVuZChyZWxhdGlvbik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlLmNwcAppbmRleCA5ZjBkMWFkNzQ5MGJmZWFiMjQwN2NlN2JjODhiMDk1MTE2ZDBiMjIy
Li5kY2I2NWJjMDljMzQ3NzliNjNhMjkzMjRlMjRkMzcyYmZjNmEyM2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNjb3BlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBTdHlsZVJlc29sdmVyJiBTY29w
ZTo6cmVzb2x2ZXIoKQogICAgIGlmICghbV9yZXNvbHZlcikgewogICAgICAgICBTZXRGb3JTY29w
ZTxib29sPiBpc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1faXNVcGRhdGluZ1N0eWxlUmVzb2x2
ZXIsIHRydWUgfTsKIAotICAgICAgICBtX3Jlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTdHls
ZVJlc29sdmVyPihtX2RvY3VtZW50KTsKKyAgICAgICAgbV9yZXNvbHZlciA9IG1ha2VVbmlxdWU8
U3R5bGVSZXNvbHZlcj4obV9kb2N1bWVudCk7CiAKICAgICAgICAgaWYgKCFtX3NoYWRvd1Jvb3Qp
IHsKICAgICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7
CkBAIC01NjMsNyArNTYzLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4g
U2NvcGU6OmFjdGl2ZVN0eWxlU2hlZXRzRm9ySW5zcGVjdG9yKCkKIGJvb2wgU2NvcGU6OmFjdGl2
ZVN0eWxlU2hlZXRzQ29udGFpbnMoY29uc3QgQ1NTU3R5bGVTaGVldCogc2hlZXQpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZvckZhc3RMb29rdXAp
IHsKLSAgICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3Vw
ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PGNvbnN0IENTU1N0eWxlU2hlZXQqPj4oKTsKKyAg
ICAgICAgbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JGYXN0TG9va3VwID0gbWFr
ZVVuaXF1ZTxIYXNoU2V0PGNvbnN0IENTU1N0eWxlU2hlZXQqPj4oKTsKICAgICAgICAgZm9yIChh
dXRvJiBhY3RpdmVTdHlsZVNoZWV0IDogbV9hY3RpdmVTdHlsZVNoZWV0cykKICAgICAgICAgICAg
IG1fd2Vha0NvcHlPZkFjdGl2ZVN0eWxlU2hlZXRMaXN0Rm9yRmFzdExvb2t1cC0+YWRkKGFjdGl2
ZVN0eWxlU2hlZXQuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJl
ZVJlc29sdmVyLmNwcAppbmRleCA4NDZhMjMxYWQyYjE4YjVkN2YyOTQ5MDE2ZDA5ZjIyM2RkNjll
ODhiLi5hMDBmNGZlMGY0Y2NiNTJkZDgzMWE5NGUyNmE1ODY0ZTVjMWI3OTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC01NDgsNyArNTQ4LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlKCkKIAogICAgIG1f
ZGlkU2VlUGVuZGluZ1N0eWxlc2hlZXQgPSBtX2RvY3VtZW50LnN0eWxlU2NvcGUoKS5oYXNQZW5k
aW5nU2hlZXRzQmVmb3JlQm9keSgpOwogCi0gICAgbV91cGRhdGUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFVwZGF0ZT4obV9kb2N1bWVudCk7CisgICAgbV91cGRhdGUgPSBtYWtlVW5pcXVlPFVwZGF0ZT4o
bV9kb2N1bWVudCk7CiAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChhZG9wdFJlZigqbmV3IFNjb3Bl
KG1fZG9jdW1lbnQpKSk7CiAgICAgbV9wYXJlbnRTdGFjay5hcHBlbmQoUGFyZW50KG1fZG9jdW1l
bnQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApp
bmRleCBiYzUxNDM0YjBiMmI4ZTBiZjc3ZTU3YTRhNzZlNGQ0YmNlZWU5OTY1Li4yNWYzODYzZDA3
OTU0YWM4ZDZhNjNlNjg2NGExZjA3NmIwZDUxYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zKERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3Jl
c291cmNlc0NhY2hlKHN0ZDo6bWFrZV91bmlxdWU8U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCisgICAg
LCBtX3Jlc291cmNlc0NhY2hlKG1ha2VVbmlxdWU8U1ZHUmVzb3VyY2VzQ2FjaGU+KCkpCiAgICAg
LCBtX2FyZUFuaW1hdGlvbnNQYXVzZWQoIWRvY3VtZW50LnBhZ2UoKSB8fCAhZG9jdW1lbnQucGFn
ZSgpLT5pc1Zpc2libGUoKSkKIHsKIH0KQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBF
bGVtZW50JiBlbAogCiAgICAgYXV0byByZXN1bHQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYWRkKGlk
LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFbGVtZW50cz4oKTsKKyAg
ICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG1ha2VVbmlxdWU8UGVuZGluZ0VsZW1lbnRz
PigpOwogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFkZCgmZWxlbWVudCk7CiAKICAgICBl
bGVtZW50LnNldEhhc1BlbmRpbmdSZXNvdXJjZXMoKTsKQEAgLTI3OSw3ICsyNzksNyBAQCBIYXNo
U2V0PFNWR0VsZW1lbnQqPiogU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpzZXRPZkVsZW1lbnRzUmVm
ZXJlbmNpbmdUYXJnZXQoU1ZHRQogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1l
bnRSZWZlcmVuY2luZ1RhcmdldChTVkdFbGVtZW50JiByZWZlcmVuY2luZ0VsZW1lbnQsIFNWR0Vs
ZW1lbnQmIHJlZmVyZW5jZWRFbGVtZW50KQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9lbGVtZW50
RGVwZW5kZW5jaWVzLmVuc3VyZSgmcmVmZXJlbmNlZEVsZW1lbnQsIFsmcmVmZXJlbmNpbmdFbGVt
ZW50XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8U1ZHRWxlbWVu
dCo+PihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U1ZHRWxlbWVudCo+IHsgJnJlZmVyZW5jaW5nRWxl
bWVudCB9KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8SGFzaFNldDxTVkdFbGVtZW50Kj4+
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTVkdFbGVtZW50Kj4geyAmcmVmZXJlbmNpbmdFbGVtZW50
IH0pOwogICAgIH0pOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUtPmFkZCgmcmVmZXJlbmNpbmdFbGVtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAppbmRleCAzODdjOWMxNDllYWFmNmQwYjZhYWMyZDBmMjQwMmViYTUyOTg2
MWJhLi5hOTRhOTE4YTMyOTRkMmQ0Mjk3NjRlZTdhZWI4MWZkZGZhNDQzOTExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIE5FVkVSX0lOTElO
RSBIYXNoTWFwPEF0b21TdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4gY3JlYXRlQXR0cmlidXRl
TmFtZVQKIFNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCwgQ3JlYXRlU1ZHRWxlbWVudCkKICAgICAsIFNWR0xhbmdTcGFjZSh0aGlzKQotICAgICwg
bV9wcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeShzdGQ6Om1ha2VfdW5pcXVlPFNWR1Byb3BlcnR5QW5p
bWF0b3JGYWN0b3J5PigpKQorICAgICwgbV9wcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeShtYWtlVW5p
cXVlPFNWR1Byb3BlcnR5QW5pbWF0b3JGYWN0b3J5PigpKQogewogICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewpAQCAt
MTk2LDcgKzE5Niw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpD
aGFuZ2UgY2hhbmdlKQogU1ZHRWxlbWVudFJhcmVEYXRhJiBTVkdFbGVtZW50OjplbnN1cmVTVkdS
YXJlRGF0YSgpCiB7CiAgICAgaWYgKCFtX3N2Z1JhcmVEYXRhKQotICAgICAgICBtX3N2Z1JhcmVE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdFbGVtZW50UmFyZURhdGE+KCk7CisgICAgICAgIG1f
c3ZnUmFyZURhdGEgPSBtYWtlVW5pcXVlPFNWR0VsZW1lbnRSYXJlRGF0YT4oKTsKICAgICByZXR1
cm4gKm1fc3ZnUmFyZURhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFwaGljc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxl
bWVudC5jcHAKaW5kZXggYTc1ODkwZjMxODA0NjhkMTUyNGJlZTg1NDM1OWQwMzU2ZWI1MjIyZC4u
ODBlYzdmYzg2MjkyYjYzYmJiYTg1MWUxMWUxMDZmYTE1MmY5MTQ3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBBZmZpbmVU
cmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29u
c3QKIEFmZmluZVRyYW5zZm9ybSogU1ZHR3JhcGhpY3NFbGVtZW50OjpzdXBwbGVtZW50YWxUcmFu
c2Zvcm0oKQogewogICAgIGlmICghbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0pCi0gICAgICAgIG1f
c3VwcGxlbWVudGFsVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxBZmZpbmVUcmFuc2Zvcm0+
KCk7CisgICAgICAgIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtID0gbWFrZVVuaXF1ZTxBZmZpbmVU
cmFuc2Zvcm0+KCk7CiAgICAgcmV0dXJuIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtLmdldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCmluZGV4IDZmMGFjYWNmMTll
ZTg1MGRiNGU2OTEwZDNlODNkMjY0OTRkNjdlYjAuLjQzNGQ5MWViM2RmOGFkODc5ZjgzOWE0ODk2
Njg2NzgwYjQwOWYyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0
ZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCkBA
IC04Niw3ICs4Niw3IEBAIGNsYXNzIFNWR1BhdGhCeXRlU3RyZWFtIHsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gY29weSgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKnRoaXMpOworICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVhbT4oKnRoaXMpOwogICAgIH0KIAog
ICAgIERhdGFJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFp
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIu
Y3BwCmluZGV4IGUwNDIzY2U5ODE1ZmEwZjI1NTYzYTNiNTQzMTQwODZhYzM1NmZmNDQuLjNlYjU3
YWQyZjIxZGZhNjRiOWIxMTgwMWY0MjcyODM2MDJiNzViN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgU01JTFRpbWVDb250YWluZXI6OnNjaGVkdWxlKFNWR1NNSUxFbGVtZW50KiBhbmlt
YXRpb24sIFNWR0VsZW1lbnQqIHRhcmdldCwKICAgICBFbGVtZW50QXR0cmlidXRlUGFpciBrZXko
dGFyZ2V0LCBhdHRyaWJ1dGVOYW1lKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QW5pbWF0aW9uc1Zl
Y3Rvcj4mIHNjaGVkdWxlZCA9IG1fc2NoZWR1bGVkQW5pbWF0aW9ucy5hZGQoa2V5LCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzY2hlZHVsZWQpCi0gICAgICAgIHNjaGVkdWxl
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8QW5pbWF0aW9uc1ZlY3Rvcj4oKTsKKyAgICAgICAgc2NoZWR1
bGVkID0gbWFrZVVuaXF1ZTxBbmltYXRpb25zVmVjdG9yPigpOwogICAgIEFTU0VSVCghc2NoZWR1
bGVkLT5jb250YWlucyhhbmltYXRpb24pKTsKICAgICBzY2hlZHVsZWQtPmFwcGVuZChhbmltYXRp
b24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA4MDlh
ZmY1ZDg4NTM3MTIwNzJhZDg3MTU2NzM1ZTkzMGY5YmEzNWNkLi41YzU2YjY5OTk1YmM5MmY0Y2E4
ODFlMmI5MWU5ZjM3ZmY1YzM4ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6
ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKICAgICBpZiAoYWxsRGF0YVJlY2Vp
dmVkKSB7CiAgICAgICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRpb24gPSBwYWdlQ29uZmlndXJhdGlv
bldpdGhFbXB0eUNsaWVudHMoKTsKLSAgICAgICAgbV9jaHJvbWVDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKKyAgICAgICAgbV9jaHJvbWVDbGll
bnQgPSBtYWtlVW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKICAgICAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CiAKICAg
ICAgICAgLy8gRklYTUU6IElmIHRoaXMgU1ZHIGVuZHMgdXAgbG9hZGluZyBpdHNlbGYsIHdlIG1p
Z2h0IGxlYWsgdGhlIHdvcmxkLgpAQCAtNDY2LDcgKzQ2Niw3IEBAIEVuY29kZWREYXRhU3RhdHVz
IFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgLy8g
VGhpcyB3aWxsIGJlY29tZSBhbiBpc3N1ZSB3aGVuIFNWR0ltYWdlIHdpbGwgYmUgYWJsZSB0byBs
b2FkIG90aGVyCiAgICAgICAgIC8vIFNWR0ltYWdlIG9iamVjdHMsIGJ1dCB3ZSdyZSBzYWZlIG5v
dywgYmVjYXVzZSBTVkdJbWFnZSBjYW4gb25seSBiZQogICAgICAgICAvLyBsb2FkZWQgYnkgYSB0
b3AtbGV2ZWwgZG9jdW1lbnQuCi0gICAgICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFn
ZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgICAgICBtX3BhZ2UgPSBtYWtlVW5p
cXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICAgICAgbV9wYWdlLT5z
ZXR0aW5ncygpLnNldE1lZGlhRW5hYmxlZChmYWxzZSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGlu
Z3MoKS5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygp
LnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAppbmRleCBl
NWVmYWFlYTcxMTFiYzZjOTU3ZDk3MmQ3NDU0OGRlOTJkOGExMzNlLi5jZWJhYTM2M2JmNTI3YmJi
MzhlNTY3ZDNlM2Q0MmJmODQzMTAyYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBl
LCB0eXBlbmFtZSBBbmltYXRlZFByb3BlcnR5ID0gU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0
eT4KICAgICBzdGF0aWMgUmVmPEFuaW1hdGVkUHJvcGVydHk+IGNyZWF0ZShTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFuaW1h
dGVkUHJvcGVydHkoY29udGV4dEVsZW1lbnQsIHN0ZDo6bWFrZV91bmlxdWU8RGVjb3JhdGVkUHJv
cGVydHk8RGVjb3JhdGlvblR5cGUsIFByb3BlcnR5VHlwZT4+KCkpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQW5pbWF0ZWRQcm9wZXJ0eShjb250ZXh0RWxlbWVudCwgbWFrZVVuaXF1
ZTxEZWNvcmF0ZWRQcm9wZXJ0eTxEZWNvcmF0aW9uVHlwZSwgUHJvcGVydHlUeXBlPj4oKSkpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZSwgdHlwZW5hbWUgQW5p
bWF0ZWRQcm9wZXJ0eSA9IFNWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHk+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3JJbXBsLmgKaW5kZXggMjg4NzQxYjEyOTA1Y2I4NTE0MzA1NDA5MGM0ZTJjOTEz
OWIzNWJmMy4uZDA3MzdhY2JhMzMxZmUxMjM0N2I4MzRmZjdhYTMwMTAwYWQxNTYxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvckltcGwuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBTVkdBbmlt
YXRlZEFuZ2xlQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yPFNWR0FuaQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTY4LDcgKzY4LDcgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFuaW1hdG9yPFNWR0EKIAogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRCb29sZWFuPiYgYW5pbWF0
ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wg
aXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1h
dG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTg5LDcgKzg5
LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjwKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVk
RW51bWVyYXRpb24+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEVudW1lcmF0aW9u
QW5pbWF0b3I8RW51bVR5cGU+PihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9k
ZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdBbmltYXRlZEVudW1lcmF0aW9uQW5pbWF0b3I8RW51bVR5cGU+PihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTExMSw3ICsxMTEsNyBAQCBj
bGFzcyBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3I8U1ZHQQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+JiBhbmlt
YXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9v
bCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcj4oYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTMyLDcg
KzEzMiw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuCiAKICAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2Fs
Y01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2Rl
IGxlbmd0aE1vZGUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdB
bmltYXRlZExlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9u
TW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwor
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0
ZWQsIGlzQWRkaXRpdmUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE1Myw3
ICsxNTMsNyBAQCBjbGFzcyBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1
YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogCiAgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZExl
bmd0aExpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9k
ZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUsIFNWR0xlbmd0
aE1vZGUgbGVuZ3RoTW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwg
YW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxlbmd0
aE1vZGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZExlbmd0aExpc3RB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC0xNzIsNyArMTcyLDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW4KIHB1YmxpYzoK
ICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0xODksNyArMTg5LDcgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9yPFMKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4mIGFuaW1hdGVkLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBh
bmltYXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdBbmltYXRlZE51bWJlckxpc3RBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgpAQCAtMjA2
LDcgKzIwNiw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RBbmltYXRvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdB
bmltYXRlZFBhdGhTZWdMaXN0PiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9k
ZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQYXRo
U2VnTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZCwgYW5pbWF0aW9uTW9kZSwg
Y2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdBbmltYXRlZFBhdGhTZWdMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2
ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjI0LDcgKzIyNCw3IEBAIGNsYXNzIFNWR0FuaW1h
dGVkUG9pbnRMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFu
aW1hdG9yPFNWCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFBvaW50TGlzdD4mIGFuaW1hdGVk
LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlz
QWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTI0
Myw3ICsyNDMsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE9yaWVudFR5cGVBbmltYXRvciBmaW5hbCA6
IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8UwogcHVibGljOgogICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZH
QW5pbWF0ZWRPcmllbnRUeXBlPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9k
ZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRPcmll
bnRUeXBlQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR0FuaW1hdGVkT3JpZW50VHlwZUFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmlt
YXRlZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTI2Miw3ICsyNjIsNyBAQCBjbGFzcyBTVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFBy
b3BlcnR5QQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvPiYg
YW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUs
IGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNB
Y2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRl
ZCwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTI4MSw3ICsyODEsNyBAQCBjbGFzcyBTVkdBbmltYXRlZFJl
Y3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZH
QW5pbQogCiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFJlY3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBh
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29s
IGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdB
bmltYXRlZFJlY3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1h
dGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMjk4LDcgKzI5OCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVk
U3RyaW5nQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
PFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFN0cmluZz4mIGFuaW1hdGVkLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVk
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I+KGF0dHJp
YnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRl
ZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMzM4LDcgKzMzOCw3IEBAIGNs
YXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0Fu
aW1hdGVkUHJvcGVydHlBbmltYXRvCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBj
YWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBp
c0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBsLmgKaW5kZXgg
NGVkYTM0YzliMTg4OGZmZDZkM2Q2NjMyY2YwY2Y2ZDMzYTZmYTllMS4uMzk3ZmYwOTE1OTQwMGQz
M2MwNTJiMTFkODI4Y2I4ZTM3YjNjODA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1h
dG9ySW1wbC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVPcmllbnRB
bmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hCiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWRP
cmllbnRUeXBlPiYgYW5pbWF0ZWQyLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNN
b2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkQW5nbGVPcmllbnRB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZU9yaWVudEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1l
LCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTExMyw3ICsxMTMsNyBA
QCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYQogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRl
Z2VyPiYgYW5pbWF0ZWQxLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiYgYW5pbWF0ZWQyLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWRJbnRl
Z2VyUGFpckFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZDEsIGFuaW1hdGVkMiwgYW5p
bWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTE1Niw3ICsxNTYsNyBAQCBjbGFzcyBTVkdBbmltYXRlZE51bWJlclBh
aXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdAog
cHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWROdW1iZXI+JiBhbmltYXRlZDEsIFJlZjxTVkdBbmlt
YXRlZE51bWJlcj4mIGFuaW1hdGVkMiwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZE51bWJlclBhaXJB
bmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQxLCBhbmltYXRlZDIsIGFuaW1hdGlvbk1v
ZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8U1ZHQW5pbWF0ZWROdW1iZXJQYWlyQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkMSwgYW5pbWF0ZWQyLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgKaW5kZXgg
MjY0YzM2YjY5MDc0Y2NmM2UyZTI5ZDI2NzcyMWNmNTM3NDU3MDMxMS4uYTM1ZTI1MGE5YjE1MWY5
ZTg5N2Y4NWY2MzY3YzM4N2RiYjNjYTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHRGVjb3JhdGVkRW51bWVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdEZWNvcmF0ZWRFbnVtZXJhdGlvbi5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIFNWR0RlY29yYXRlZEVudW1lcmF0aW9uIDogcHVibGljIFNWR0RlY29yYXRlZFBy
aW1pdGl2ZTxEZWNvcmF0aW9uVHlwZSwgRW51CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IEVudW1UeXBlJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19p
bnRlZ3JhbDxEZWNvcmF0aW9uVHlwZT46OnZhbHVlLCAiRGVjb3JhdGlvblR5cGUgZm9ybSBlbnVt
IHNob3VsZCBiZSBpbnRlZ3JhbC4iKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24+KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8U1ZHRGVjb3JhdGVkRW51bWVyYXRpb24+KHZhbHVlKTsKICAgICB9CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVQcm9w
ZXJ0eUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRp
dmVQcm9wZXJ0eUFuaW1hdG9yLmgKaW5kZXggNDEyMTcyMjBiZGZjZmVmZjY3YzE2MDkxM2FkMTRk
NmI5OWJhMTQyYy4uNjhiMmUwYjExMzdhZGU4ZDM3ZjgwZTBlMjk4YjVkZTI0ZDAxYTgyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlUHJvcGVy
dHlBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1p
dGl2ZVByb3BlcnR5QW5pbWF0b3IuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBTVkdQcmltaXRp
dmVQcm9wZXJ0eUFuaW1hdG9yIDogcHVibGljIFNWR1Byb3BlcnR5QW5pbWF0b3I8QW5pbWF0aW9u
RnVuY3RpbwogcHVibGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlv
bk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRl
ZCwgYm9vbCBpc0FkZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShw
cm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0
aXZlKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4
IDExODg4NmM0ZjhiYjcyMzZhNDQ2ZmZhZDAzODY5ZmYwYjBkY2RlOTUuLmZkM2RjOTYwZmZhN2Qz
MTI5MDEzN2Q0NTJjZGUxYTI4NzlhN2VkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAg
LTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZH
VmFsdWVQcm9wZXJ0eUFuaW1hdG9yPFNWR0xlbmd0aCwgU1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNW
R1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNN
b2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHBy
b3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRp
dmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50
KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgK
aW5kZXggNWVlOGFjM2QwZjRlMTJjNjJhNWVmYzAwZmY1M2I1OTBlNDAwZjM2OC4uYWU5NGUyOWVk
NGI4NjEzYjk5Y2Q5NzQ4NmVkMGIwNjI4MjZjMDJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1h
dG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdMZW5ndGhM
aXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVy
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgfQogCiAgICAg
dm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggNTU4MjU4ZDJiZmM2YTI2
ZmQxNGVhZjI5MTcyZWE3ODI1ZDhkNzI1Yi4uMjQzNzg5YmI5ZDI3OWE2ZTg1M2UwODY0NGI2NGJl
ZTg1MWU1ZWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgY29uc3QgY2hhciogSW50ZXJuYWxTZXR0aW5nczo6c3Vw
cGxlbWVudE5hbWUoKQogSW50ZXJuYWxTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6ZnJvbShQ
YWdlKiBwYWdlKQogewogICAgIGlmICghU3VwcGxlbWVudDxQYWdlPjo6ZnJvbShwYWdlLCBzdXBw
bGVtZW50TmFtZSgpKSkKLSAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2Us
IHN1cHBsZW1lbnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBw
ZXI+KHBhZ2UpKTsKKyAgICAgICAgU3VwcGxlbWVudDxQYWdlPjo6cHJvdmlkZVRvKHBhZ2UsIHN1
cHBsZW1lbnROYW1lKCksIG1ha2VVbmlxdWU8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXI+KHBhZ2Up
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIqPihTdXBw
bGVtZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKS0+aW50ZXJuYWxTZXR0
aW5ncygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMjQzYjc2
ZjIwYmQxNGQ2Y2Q4MmRjMTY1OWRhYzM4NWNmZjc3NTU1ZS4uMzZlN2Q2OWMzZGI2Y2I4ZmU2OWMy
ZjAxZTk1MmVmOTRjOGMwNzI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtMzQxLDcgKzM0MSw3IEBAIGNsYXNzIEluc3BlY3RvclN0dWJGcm9udGVuZCBmaW5hbCA6IHB1
YmxpYyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLCBwdWJsaWMKIH07CiAKIEluc3BlY3Rv
clN0dWJGcm9udGVuZDo6SW5zcGVjdG9yU3R1YkZyb250ZW5kKFBhZ2UmIGluc3BlY3RlZFBhZ2Us
IFJlZlB0cjxET01XaW5kb3c+JiYgZnJvbnRlbmRXaW5kb3cpCi0gICAgOiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKSwgZnJv
bnRlbmRXaW5kb3ctPmRvY3VtZW50KCktPnBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKKyAgICA6IEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwoJmluc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLCBmcm9u
dGVuZFdpbmRvdy0+ZG9jdW1lbnQoKS0+cGFnZSgpLCBtYWtlVW5pcXVlPEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPigpKQogICAgICwgbV9mcm9udGVuZFdpbmRvdyhmcm9u
dGVuZFdpbmRvdy5jb3B5UmVmKCkpCiB7CiAgICAgQVNTRVJUX0FSRyhmcm9udGVuZFdpbmRvdywg
ZnJvbnRlbmRXaW5kb3cpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIEludGVybmFsczo6SW50ZXJuYWxz
KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7
CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkp
IHsKICAgICAgICAgYXV0byBtb2NrUGF5bWVudENvb3JkaW5hdG9yID0gbmV3IE1vY2tQYXltZW50
Q29vcmRpbmF0b3IoKmZyYW1lLT5wYWdlKCkpOwotICAgICAgICBmcmFtZS0+cGFnZSgpLT5zZXRQ
YXltZW50Q29vcmRpbmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50Q29vcmRpbmF0b3I+KCpt
b2NrUGF5bWVudENvb3JkaW5hdG9yKSk7CisgICAgICAgIGZyYW1lLT5wYWdlKCktPnNldFBheW1l
bnRDb29yZGluYXRvcihtYWtlVW5pcXVlPFBheW1lbnRDb29yZGluYXRvcj4oKm1vY2tQYXltZW50
Q29vcmRpbmF0b3IpKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTE0MTcsNyArMTQxNyw3IEBAIHZv
aWQgSW50ZXJuYWxzOjplbmFibGVNb2NrU3BlZWNoU3ludGhlc2l6ZXIoKQogICAgIGlmICghc3lu
dGhlc2lzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzeW50aGVzaXMtPnNldFBsYXRmb3JtU3lu
dGhlc2l6ZXIoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4o
c3ludGhlc2lzKSk7CisgICAgc3ludGhlc2lzLT5zZXRQbGF0Zm9ybVN5bnRoZXNpemVyKG1ha2VV
bmlxdWU8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+KHN5bnRoZXNpcykpOwogfQogCiAj
ZW5kaWYKQEAgLTI0ODcsNyArMjQ4Nyw3IEBAIFJlZlB0cjxXaW5kb3dQcm94eT4gSW50ZXJuYWxz
OjpvcGVuRHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBhdXRv
KiBpbnNwZWN0ZWRQYWdlID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAg
ICBhdXRvKiB3aW5kb3cgPSBpbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5k
b21XaW5kb3coKTsKICAgICBhdXRvIGZyb250ZW5kV2luZG93UHJveHkgPSB3aW5kb3ctPm9wZW4o
KndpbmRvdywgKndpbmRvdywgdXJsLCAiIiwgIiIpLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwotICAg
IG1faW5zcGVjdG9yRnJvbnRlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvclN0dWJGcm9u
dGVuZD4oKmluc3BlY3RlZFBhZ2UsIGRvd25jYXN0PERPTVdpbmRvdz4oZnJvbnRlbmRXaW5kb3dQ
cm94eS0+d2luZG93KCkpKTsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kID0gbWFrZVVuaXF1ZTxJ
bnNwZWN0b3JTdHViRnJvbnRlbmQ+KCppbnNwZWN0ZWRQYWdlLCBkb3duY2FzdDxET01XaW5kb3c+
KGZyb250ZW5kV2luZG93UHJveHktPndpbmRvdygpKSk7CiAgICAgcmV0dXJuIGZyb250ZW5kV2lu
ZG93UHJveHk7CiB9CiAKQEAgLTMwMDcsNyArMzAwNyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IElu
dGVybmFsczo6c2V0Vmlld0V4cG9zZWRSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRo
LCBmCiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRQcmludGluZyhpbnQgd2lkdGgsIGludCBoZWlnaHQp
CiB7Ci0gICAgcHJpbnRDb250ZXh0Rm9yVGVzdGluZygpID0gc3RkOjptYWtlX3VuaXF1ZTxQcmlu
dENvbnRleHQ+KGZyYW1lKCkpOworICAgIHByaW50Q29udGV4dEZvclRlc3RpbmcoKSA9IG1ha2VV
bmlxdWU8UHJpbnRDb250ZXh0PihmcmFtZSgpKTsKICAgICBwcmludENvbnRleHRGb3JUZXN0aW5n
KCktPmJlZ2luKHdpZHRoLCBoZWlnaHQpOwogfQogCkBAIC0zNDQ2LDcgKzM0NDYsNyBAQCB2b2lk
IEludGVybmFsczo6ZW5hYmxlQXV0b1NpemVNb2RlKGJvb2wgZW5hYmxlZCwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQogCiB2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tDRE0oKQogewotICAg
IExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAorICAgIExlZ2FjeUNE
TTo6cmVnaXN0ZXJDRE1GYWN0b3J5KFtdIChMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVu
aXF1ZTxMZWdhY3lNb2NrQ0RNPihjZG0pOyB9LAogICAgICAgICBMZWdhY3lNb2NrQ0RNOjpzdXBw
b3J0c0tleVN5c3RlbSwgTGVnYWN5TW9ja0NETTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlw
ZSk7CiB9CiAKQEAgLTQyMzksNyArNDIzOSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpxdWV1ZU1pY3Jv
VGFzayhpbnQgdGVzdE51bWJlcikKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIG1pY3JvdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8QWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2s+KE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKSwgKmRvY3VtZW50
LCBbZG9jdW1lbnQsIHRlc3ROdW1iZXJdKCkgeworICAgIGF1dG8gbWljcm90YXNrID0gbWFrZVVu
aXF1ZTxBY3RpdmVET01DYWxsYmFja01pY3JvdGFzaz4oTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLCAqZG9jdW1lbnQsIFtkb2N1bWVudCwgdGVzdE51bWJlcl0oKSB7CiAgICAgICAg
IGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCB0ZXN0TnVtYmVyLCAiIGhhcyBy
dW4uIikpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0xl
Z2FjeU1vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9MZWdhY3lNb2NrQ0RNLmNw
cAppbmRleCAzY2QxMjgxNjhkZmI4ZWExYjZmM2Q0ZTM3ZWYwYWI3ODUyNWJhMTYyLi42MDI3MmQz
NDk3ZjRiODY1Y2RiMDM3MGZlNDFkM2Q2ZmJkZThiN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0xlZ2FjeU1vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTGVnYWN5TW9ja0NETS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgYm9vbCBMZWdhY3lNb2NrQ0RN
OjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIHN0ZDo6dW5pcXVl
X3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBMZWdhY3lNb2NrQ0RNOjpjcmVhdGVTZXNzaW9uKExlZ2Fj
eUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxNb2NrQ0RNU2Vzc2lvbj4oY2xpZW50KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxNb2NrQ0RN
U2Vzc2lvbj4oY2xpZW50KTsKIH0KIAogc3RhdGljIFVpbnQ4QXJyYXkqIGluaXREYXRhUHJlZml4
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNTY3OTZl
ZTkwMGJiZjNiNmNjMDVjZjZhMjI5NmVmZDQzYjllZjdiNi4uY2U1ZDhmN2Q2YmRmMzhiNTkyMjA5
MzAyYTZlNmQ3MWIzNjk2NjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjpzZXRTdXBw
b3J0ZWREYXRhVHlwZXMoVmVjdG9yPFN0cmluZz4mJiB0eXBlcykKIAogc3RkOjp1bmlxdWVfcHRy
PENETVByaXZhdGU+IE1vY2tDRE1GYWN0b3J5OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJikKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNb2NrQ0RNPihtYWtlV2Vha1B0cigqdGhpcykp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPE1vY2tDRE0+KG1ha2VXZWFrUHRyKCp0aGlzKSk7CiB9
CiAKIE1vY2tDRE06Ok1vY2tDRE0oV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gZmFjdG9yeSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggNTExODFk
YWU3MmUxM2UyYmJkMTUzZTgxMWMxNDM2NGQxY2Q4YTE4Ny4uNzc4YTkxOGE2YjkwNzU1Y2I4NmQz
YWFhNzRmNzliM2U2MThkNGM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgYm9vbCBNb2NrQ29udGVudEZpbHRlcjo6
ZW5hYmxlZCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxNb2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRl
bnRGaWx0ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TW9ja0Nv
bnRlbnRGaWx0ZXI+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TW9ja0NvbnRlbnRGaWx0ZXI+
KCk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrR2FtZXBhZFByb3ZpZGVyLmNwcApp
bmRleCBkM2FjNWQ4N2QxOWUyYTg1MzYxYzExNTcyY2YzMTFmMGM4M2IyNDViLi5kNDBkZWQxZGEx
MTk4Y2FhMzQ1OWQ2NzdlMWZlODRmNWJmYjk0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tHYW1lcGFkUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0dhbWVwYWRQcm92aWRlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBNb2Nr
R2FtZXBhZFByb3ZpZGVyOjpzZXRNb2NrR2FtZXBhZERldGFpbHModW5zaWduZWQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgZ2EKICAgICBpZiAobV9tb2NrR2FtZXBhZFZlY3RvcltpbmRleF0pCiAgICAg
ICAgIG1fbW9ja0dhbWVwYWRWZWN0b3JbaW5kZXhdLT51cGRhdGVEZXRhaWxzKGdhbWVwYWRJRCwg
YXhpc0NvdW50LCBidXR0b25Db3VudCk7CiAgICAgZWxzZQotICAgICAgICBtX21vY2tHYW1lcGFk
VmVjdG9yW2luZGV4XSA9IHN0ZDo6bWFrZV91bmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1l
cGFkSUQsIGF4aXNDb3VudCwgYnV0dG9uQ291bnQpOworICAgICAgICBtX21vY2tHYW1lcGFkVmVj
dG9yW2luZGV4XSA9IG1ha2VVbmlxdWU8TW9ja0dhbWVwYWQ+KGluZGV4LCBnYW1lcGFkSUQsIGF4
aXNDb3VudCwgYnV0dG9uQ291bnQpOwogfQogCiBib29sIE1vY2tHYW1lcGFkUHJvdmlkZXI6OmNv
bm5lY3RNb2NrR2FtZXBhZCh1bnNpZ25lZCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCmluZGV4IGRiZTkwNzNkNmFkZWJmYzUwMTU5Y2My
ZWRiYjIyODNjY2QxN2JhODUuLjhmMTY0N2MxZjMyMjUxODE2YzdjZjA4OTYxODJhZTM0MjM1YzUx
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb25zb2xlQ2xpZW50LmNw
cApAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFdvcmtlckNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbAogewogICAgIFN0cmlu
ZyBtZXNzYWdlVGV4dDsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyht
ZXNzYWdlVGV4dCk7Ci0gICAgYXV0byBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRzKSwgZXhlYyk7CisgICAgYXV0byBtZXNz
YWdlID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZVRleHQsIFdURk1vdmUoYXJndW1lbnRz
KSwgZXhlYyk7CiAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZN
b3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRR
dWV1ZS5jcHAKaW5kZXggOTI2N2U4N2Q3Y2Y2ZmFmYWNiM2E0NjYxZjY4ZjgxOWFlNmM1NDU4ZS4u
NjkwM2JlNWVjMjVmYjkxZWZmNzc3NmU0NDc2YWQ0ZWEyYmNlNzMxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3BwCkBAIC04NSw3ICs4NSw3IEBAIGJvb2wg
V29ya2VyRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byogZXZlbnRQdHIgPSBldmVudC5wdHIoKTsKLSAg
ICBhdXRvIGV2ZW50RGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8RXZlbnREaXNwYXRjaGVy
PihXVEZNb3ZlKGV2ZW50KSwgKnRoaXMpOworICAgIGF1dG8gZXZlbnREaXNwYXRjaGVyID0gbWFr
ZVVuaXF1ZTxFdmVudERpc3BhdGNoZXI+KFdURk1vdmUoZXZlbnQpLCAqdGhpcyk7CiAgICAgbV9l
dmVudERpc3BhdGNoZXJNYXAuYWRkKGV2ZW50UHRyLCBldmVudERpc3BhdGNoZXIuZ2V0KCkpOwog
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5wb3N0VGFzayhbZXZlbnREaXNwYXRjaGVyID0g
V1RGTW92ZShldmVudERpc3BhdGNoZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAg
ICAgICAgZXZlbnREaXNwYXRjaGVyLT5kaXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3YmE2ZWRiNTIwOGYyMmMzZjhmMTZkZTI5
ZDgyNWI3NzFmNmMzZTllLi5iMTdkNjYzNjNhYzM1ODBlN2EzNDQwMDgxYTJmN2M2M2EwNzM4NzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAt
NjIsOSArNjIsOSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3Qg
VVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQpCiAgICAgLCBtX3RocmVh
ZCh0aHJlYWQpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlclNjcmlwdENv
bnRyb2xsZXI+KHRoaXMpKQotICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKHN0ZDo6bWFrZV91
bmlxdWU8V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4oKnRoaXMpKQotICAgICwgbV9taWNyb3Rh
c2tRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPE1pY3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkp
CisgICAgLCBtX3NjcmlwdChtYWtlVW5pcXVlPFdvcmtlclNjcmlwdENvbnRyb2xsZXI+KHRoaXMp
KQorICAgICwgbV9pbnNwZWN0b3JDb250cm9sbGVyKG1ha2VVbmlxdWU8V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcj4oKnRoaXMpKQorICAgICwgbV9taWNyb3Rhc2tRdWV1ZShtYWtlVW5pcXVlPE1p
Y3JvdGFza1F1ZXVlPihtX3NjcmlwdC0+dm0oKSkpCiAgICAgLCBtX2lzT25saW5lKGlzT25saW5l
KQogICAgICwgbV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICwgbV9ldmVudFF1
ZXVlKCp0aGlzKQpAQCAtODYsNyArODYsNyBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaQogICAg
ICAgICBvcmlnaW4tPmdyYW50U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCk7CiAKICAg
ICBzZXRTZWN1cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKFdU
Rk1vdmUob3JpZ2luKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV91cmwgfSwgKnRoaXMpKTsKKyAg
ICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kobWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+KFVSTCB7IG1fdXJsIH0sICp0aGlzKSk7CiB9CiAKIFdvcmtlckdsb2JhbFNjb3BlOjp+V29y
a2VyR2xvYmFsU2NvcGUoKQpAQCAtMzYyLDkgKzM2Miw5IEBAIHZvaWQgV29ya2VyR2xvYmFsU2Nv
cGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4gbWVz
c2FnZTsKICAgICBpZiAoY2FsbFN0YWNrKQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2cs
IGxldmVsLCBtZXNzYWdlVGV4dCwgY2FsbFN0YWNrLnJlbGVhc2VOb25OdWxsKCksIHJlcXVlc3RJ
ZGVudGlmaWVyKTsKKyAgICAgICAgbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25z
b2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBsZXZlbCwgbWVzc2FnZVRleHQs
IGNhbGxTdGFjay5yZWxlYXNlTm9uTnVsbCgpLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgZWxz
ZQotICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVN
ZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgc291
cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmll
cik7CisgICAgICAgIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3Nh
Z2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzb3VyY2VV
UkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKTsK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoKnRoaXMs
IFdURk1vdmUobWVzc2FnZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGE3NWMwMTU2YzU5ZTM4ZGQ5OTlkNmNlYzFkZGVl
ZGUyM2JlMTg3YjMuLjRlOWY1MTlhZWZlZGQyNWY4ODNmNjNhY2EwYTQ3ODlmZjAyN2U0YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIFdvcmtlckdsb2JhbFNjb3BlUHJveHkmIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHk6OmNyZWF0ZShXb3JrZXImIHdvcmtlcikKIAogV29ya2VyTWVzc2FnaW5nUHJveHk6Oldv
cmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciYgd29ya2VyT2JqZWN0KQogICAgIDogbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KHdvcmtlck9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0g
ICAgLCBtX2luc3BlY3RvclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8V29ya2VySW5zcGVjdG9yUHJv
eHk+KHdvcmtlck9iamVjdC5pZGVudGlmaWVyKCkpKQorICAgICwgbV9pbnNwZWN0b3JQcm94eSht
YWtlVW5pcXVlPFdvcmtlckluc3BlY3RvclByb3h5Pih3b3JrZXJPYmplY3QuaWRlbnRpZmllcigp
KSkKICAgICAsIG1fd29ya2VyT2JqZWN0KCZ3b3JrZXJPYmplY3QpCiB7CiAgICAgQVNTRVJUKChp
czxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgaXNNYWluVGhyZWFkKCkp
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3Nh
Z2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnQKICAgICAgICAgKytt
X3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwogICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogICAgIH0gZWxzZQotICAgICAgICBtX3F1ZXVl
ZEVhcmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBw
ZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNr
KSkpOwogfQogCiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyUnVuTG9vcC5jcHAKaW5kZXggYmNkOTRlNmFjMDQwM2FjZDZhNTRiYWM0MWZhYjQxZTVi
ZjU1MjdkYS4uYmZhYzk1OTJkZmFhNzkyMTAwNjViMzQ1OWJkMjIxNjE5NTc4NDg3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNs
YXNzIE1vZGVQcmVkaWNhdGUgewogfTsKIAogV29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCgp
Ci0gICAgOiBtX3NoYXJlZFRpbWVyKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyU2hhcmVkVGltZXI+
KCkpCisgICAgOiBtX3NoYXJlZFRpbWVyKG1ha2VVbmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkp
CiB7CiB9CiAKQEAgLTI1MCwxMiArMjUwLDEyIEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAKIHZvaWQgV29ya2VyUnVu
TG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYm
IHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChzdGQ6Om1ha2VfdW5p
cXVlPFRhc2s+KFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpKTsKKyAgICBtX21lc3NhZ2VR
dWV1ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVs
dE1vZGUoKSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewot
ICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUo
dGFzayksIG1vZGUpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxUYXNr
PihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdERl
YnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAxOTkxMmYwMjc1
ZmVhMTk0ODA1NDJhMDcwOTc1ZGNiMGM3ZDI4MDM1Li4yMjhmM2QxN2ZmMDAyMmU2MmU2MzY0NTMy
ZDU1NmI5NTA3YTAxOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6
OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXQK
IAogICAgIEFTU0VSVChzY3JpcHRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiR0VUIik7CiAKLSAg
ICBhdXRvIHJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlUmVxdWVzdD4oV1RGTW92
ZShzY3JpcHRSZXF1ZXN0KSk7CisgICAgYXV0byByZXF1ZXN0ID0gbWFrZVVuaXF1ZTxSZXNvdXJj
ZVJlcXVlc3Q+KFdURk1vdmUoc2NyaXB0UmVxdWVzdCkpOwogICAgIGlmICghcmVxdWVzdCkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgY29uc3QgVVJMJiBXb3JrZXJTY3Jp
cHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKIAogc3RkOjp1bmlxdWVfcHRyPFJlc291cmNl
UmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBpbml0aWF0b3JJZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVxdWVzdCA9IHN0ZDo6
bWFrZV91bmlxdWU8UmVzb3VyY2VSZXF1ZXN0PihtX3VybCk7CisgICAgYXV0byByZXF1ZXN0ID0g
bWFrZVVuaXF1ZTxSZXNvdXJjZVJlcXVlc3Q+KG1fdXJsKTsKICAgICByZXF1ZXN0LT5zZXRIVFRQ
TWV0aG9kKCJHRVQiX3MpOwogICAgIHJlcXVlc3QtPnNldEluaXRpYXRvcklkZW50aWZpZXIoaW5p
dGlhdG9ySWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggMWY3NTYxODZhMjBmMDE2OWU0Nzg0Mzk1MWJlZTM2
ODdlMDAyNGZiYS4uM2MzODU4YmRhOWI0NGI1N2ZhZGIzOWVmYTJlMGEwZjNhMzA0MTE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IFdvcmtlclRocmVhZDo6V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAgICAgLCBtX3dvcmtlckRlYnVnZ2VyUHJveHkod29y
a2VyRGVidWdnZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29ya2VyUmVw
b3J0aW5nUHJveHkpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBt
X3N0YXJ0dXBEYXRhKHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyVGhyZWFkU3RhcnR1cERhdGE+KHNj
cmlwdFVSTCwgbmFtZSwgaWRlbnRpZmllciwgdXNlckFnZW50LCBpc09ubGluZSwgc291cmNlQ29k
ZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMsIHNob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgdG9wT3JpZ2luLCB0aW1lT3Jp
Z2luLCBzZXNzaW9uSUQpKQorICAgICwgbV9zdGFydHVwRGF0YShtYWtlVW5pcXVlPFdvcmtlclRo
cmVhZFN0YXJ0dXBEYXRhPihzY3JpcHRVUkwsIG5hbWUsIGlkZW50aWZpZXIsIHVzZXJBZ2VudCwg
aXNPbmxpbmUsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ks
IHRvcE9yaWdpbiwgdGltZU9yaWdpbiwgc2Vzc2lvbklEKSkKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICAsIG1faWRiQ29ubmVjdGlvblByb3h5KGNvbm5lY3Rpb25Qcm94eSkKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGIyZDI2MTVhMTI2M2QxNjI2NjE4MjAwNDY0OGY5
MGVkYTY5MjA2YjUuLjU5YzcxYzRkMTQ3NjI3Y2ZkOWQzMWE0NWVhYmNjY2RhZTEwM2U3OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpkZXJlZkV2ZW50VGFyZ2V0KCkKIGF1dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cmVhZHkoKSAtPiBSZWFkeVByb21pc2UmCiB7CiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZSkgewot
ICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZHlQcm9taXNlPigp
OworICAgICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWU8UmVhZHlQcm9taXNlPigpOwog
CiAgICAgICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gKm1fcmVhZHlQcm9taXNl
OwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVn
aXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0
YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOwogICAgIGpvYkRhdGEucmVn
aXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2Vf
dW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VySm9i
PigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNj
b3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMDYsNyArMjA2LDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3Qg
VVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVnaXN0ZXJpbmcgc2VydmljZSB3b3Jr
ZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVy
LnRvVUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNl
V29ya2VySm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwor
ICAgIHNjaGVkdWxlSm9iKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckpvYj4oKnRoaXMsIFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwsIFdvcmtlclR5cGUsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVw
ZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBD
T05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBVcGRh
dGluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmll
cigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihzdGQ6Om1h
a2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZN
b3ZlKGpvYkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2IobWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2Vy
Sm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VySm9iPiYmIGpvYikKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwg
UmVmPERlZmVycgogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmll
ciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAgIGF1dG8gcGVuZGluZ1By
b21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihXVEZNb3ZlKHByb21pc2Up
LCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBwZW5kaW5nUHJvbWlzZSA9
IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlzZSksIG1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocGVuZGluZ1Byb21p
c2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAKICAgICBhdXRvIGNvbnRl
eHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsKQEAgLTMzNCw3ICszMzQs
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0KIAogICAgIHVpbnQ2NF90IHBlbmRpbmdQ
cm9taXNlSWRlbnRpZmllciA9ICsrbV9sYXN0UGVuZGluZ1Byb21pc2VJZGVudGlmaWVyOwotICAg
IGF1dG8gcGVuZGluZ1Byb21pc2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdQcm9taXNlPihX
VEZNb3ZlKHByb21pc2UpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSk7CisgICAgYXV0byBw
ZW5kaW5nUHJvbWlzZSA9IG1ha2VVbmlxdWU8UGVuZGluZ1Byb21pc2U+KFdURk1vdmUocHJvbWlz
ZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5h
ZGQocGVuZGluZ1Byb21pc2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBlbmRpbmdQcm9taXNlKSk7CiAK
ICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElkZW50aWZpZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggZWRiYzhmOTFlZTQzNDYyYTUwNDllODhjMWNlZjVl
ZmE3NjJjOThmZi4uY2I1YzIyMWZjOTQ4OGQ3YzAwNzI5ODNhMTU3ODk1ZGNhOGM2Y2VjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFNXQ29udGV4dE1h
bmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
LCBTZWNvbgogCiAgICAgc2VydmljZVdvcmtlci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRl
ZCgpOwogCi0gICAgbV9wZW5kaW5nU2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdHMuYWRk
KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVx
dWVzdD4oKnRoaXMsIGlkZW50aWZpZXIsIHRpbWVvdXQpKTsKKyAgICBtX3BlbmRpbmdTZXJ2aWNl
V29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgbWFrZVVuaXF1ZTxTZXJ2
aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywgaWRlbnRpZmllciwgdGltZW91dCkp
OwogCiAgICAgYXV0byYgdGhyZWFkID0gc2VydmljZVdvcmtlci0+dGhyZWFkKCk7CiAgICAgdGhy
ZWFkLnN0b3AoW3RoaXMsIGlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXIgPSBXVEZNb3ZlKHNlcnZp
Y2VXb3JrZXIpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXgg
YzYxNzM2MTNjYWNiNTVkNjkwNThiZTJjN2UyYTVmYmQ4NTI5Yzc3Ni4uOWU3MjhjM2E3YWZhNDZj
OTQ5Y2RjYmUwZDZmZWIwNGE5NTMxY2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAg
ICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveGllcygpLmFkZCh0aGlzKTsKIAogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQotICAgIG1fcmVtb3RlRGVidWdnYWJsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U2VydmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBkYXRhKTsKKyAgICBtX3JlbW90
ZURlYnVnZ2FibGUgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigqdGhpcywg
ZGF0YSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2Vk
KHRydWUpOwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+aW5pdCgpOwogI2VuZGlmCkBAIC0xNjgs
NyArMTY4LDcgQEAgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6Y3JlYXRlQ2FjaGVTdG9yYWdlQ29ubmVjdGkKIAogc3RkOjp1bmlxdWVfcHRyPEZl
dGNoTG9hZGVyPiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZUJsb2JMb2FkZXIoRmV0
Y2hMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVVJMJiBibG9iVVJMKQogewotICAgIGF1dG8g
bG9hZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxGZXRjaExvYWRlcj4oY2xpZW50LCBudWxscHRyKTsK
KyAgICBhdXRvIGxvYWRlciA9IG1ha2VVbmlxdWU8RmV0Y2hMb2FkZXI+KGNsaWVudCwgbnVsbHB0
cik7CiAgICAgbG9hZGVyLT5zdGFydExvYWRpbmdCbG9iVVJMKG1fZG9jdW1lbnQsIGJsb2JVUkwp
OwogICAgIGlmICghbG9hZGVyLT5pc1N0YXJ0ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDFkZDM0MTM3NGM0NDQ1YTM0OTczMmQ0
NGZkZWQxNTQ3NzQ4MWMwYjQuLjkyY2JhMDg1ZDNhY2Y2YTI5M2YwNmI1NWRmNDVmNGRmYzc5M2Zi
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
ZnVsbEZpbGVuYW1lKQogCiAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VEaXJl
Y3RvcnlFeGlzdHMobV9kYXRhYmFzZURpcmVjdG9yeSk7CiAKLSAgICBtX2RhdGFiYXNlID0gc3Rk
OjptYWtlX3VuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKKyAgICBtX2RhdGFiYXNlID0gbWFrZVVu
aXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKICAgICBpZiAoIW1fZGF0YWJhc2UtPm9wZW4oZnVsbEZp
bGVuYW1lKSkgewogICAgICAgICBlcnJvck1lc3NhZ2UgPSAiRmFpbGVkIHRvIG9wZW4gcmVnaXN0
cmF0aW9uIGRhdGFiYXNlIjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBmZTVjYzg1OWU2NWE2
ZTMyYTc4YjUyODk3NWExMzJlNzRiZjE3ODdlLi45MzI2YTNiYWM2NTlhMjQ2NzA1ZTkyMGE4ODg0
NmRmNGQwZTk2OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OmFk
ZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQog
ICAgIC8vIFBhZ2VzIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFibGUgdG8gbWFrZSBhIG5ldyByZWdp
c3RyYXRpb24gdG8gdGhpcyBrZXkgd2hpbGUgdGhlIGltcG9ydCB3YXMgc3RpbGwgdGFraW5nIHBs
YWNlLgogICAgIEFTU0VSVCghbV9yZWdpc3RyYXRpb25zLmNvbnRhaW5zKGRhdGEucmVnaXN0cmF0
aW9uLmtleSkpOwogCi0gICAgYXV0byByZWdpc3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNX
U2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBkYXRhLnJl
Z2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSwgZGF0YS5yZWdpc3RyYXRpb24uc2NvcGVVUkwsIGRh
dGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0
cmF0aW9uLnVwZGF0ZVZpYUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5z
Y3JpcHRVUkwpOwogICAgIHJlZ2lzdHJhdGlvbi0+c2V0TGFzdFVwZGF0ZVRpbWUoZGF0YS5yZWdp
c3RyYXRpb24ubGFzdFVwZGF0ZVRpbWUpOwogICAgIGF1dG8gcmVnaXN0cmF0aW9uUHRyID0gcmVn
aXN0cmF0aW9uLmdldCgpOwogICAgIGFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHJlZ2lzdHJhdGlv
bikpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIFNXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dP
cmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uCiB7CiAgICAg
QVNTRVJUKCFyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkgfHwgbV9zZXNz
aW9uSUQuaXNFcGhlbWVyYWwoKSk7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgp
KQotICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpc3Ry
YXRpb25TdG9yZT4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3Rvcnkp
KTsKKyAgICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZSA9IG1ha2VVbmlxdWU8UmVnaXN0cmF0aW9u
U3RvcmU+KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5KSk7CiAg
ICAgZWxzZQogICAgICAgICByZWdpc3RyYXRpb25TdG9yZUltcG9ydENvbXBsZXRlKCk7CiAKQEAg
LTMyMSw3ICszMjEsNyBAQCB2b2lkIFNXU2VydmVyOjpzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYmIGpvYkRhdGEpCiAgICAgLy8gSWYgaXQgaXMsIHN0YWNrIGl0IGFsb25nIHdpdGgg
dGhhdCBqb2IuCiAKICAgICBhdXRvJiBqb2JRdWV1ZSA9ICptX2pvYlF1ZXVlcy5lbnN1cmUoam9i
RGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgW3RoaXMsICZqb2JEYXRhXSB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lz
dHJhdGlvbktleSgpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXJKb2JRdWV1
ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIAogICAgIGpvYlF1ZXVlLmVucXVldWVKb2Ioam9iRGF0YSk7CkBAIC04MjAsNyArODIw
LDcgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKIAogICAgIGlmIChjbGllbnRJZGVudGlmaWVy
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKCFpdGVyYXRvci0+dmFsdWUudGVybWluYXRl
U2VydmljZVdvcmtlcnNUaW1lcik7Ci0gICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVT
ZXJ2aWNlV29ya2Vyc1RpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcj4oW2NsaWVudE9yaWdp
biwgY2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNdIHsKKyAgICAgICAgaXRlcmF0b3ItPnZh
bHVlLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPihbY2xp
ZW50T3JpZ2luLCBjbGllbnRSZWdpc3RyYWJsZURvbWFpbiwgdGhpc10gewogICAgICAgICAgICAg
VmVjdG9yPFNXU2VydmVyV29ya2VyKj4gd29ya2Vyc1RvVGVybWluYXRlOwogICAgICAgICAgICAg
Zm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMo
KSkgewogICAgICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpICYmIHdvcmtlci0+
b3JpZ2luKCkgPT0gY2xpZW50T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggOGI2OGI3
MGYwMWQyNTI3OGFmNTM4YWJjZTkxNGI4YzdjNjhhYjgzNy4uZGNhZjVhOGE3MTBmNzk0NDY0N2Rl
M2NkNWU5ODA2Mzk5YThmZDUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0yODYsNyArMjg2
LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYgam9iKQogICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRVcGRhdGVW
aWFDYWNoZShqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSk7CiAgICAgICAg
IFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnJ1blJl
Z2lzdGVySm9iOiBGb3VuZCByZWdpc3RyYXRpb24gJWxsdSBmb3Igam9iICVzIGJ1dCBpdCBuZWVk
cyB1cGRhdGluZyIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCks
IGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGF1dG8gbmV3UmVnaXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxT
V1NlcnZlclJlZ2lzdHJhdGlvbj4obV9zZXJ2ZXIsIG1fcmVnaXN0cmF0aW9uS2V5LCBqb2IucmVn
aXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSwgam9iLnNjb3BlVVJMLCBqb2Iuc2NyaXB0
VVJMKTsKKyAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBtYWtlVW5pcXVlPFNXU2VydmVy
UmVnaXN0cmF0aW9uPihtX3NlcnZlciwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRp
b25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iuc2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOwog
ICAgICAgICBtX3NlcnZlci5hZGRSZWdpc3RyYXRpb24oV1RGTW92ZShuZXdSZWdpc3RyYXRpb24p
KTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpv
YlF1ZXVlOjpydW5SZWdpc3RlckpvYjogTm8gZXhpc3RpbmcgcmVnaXN0cmF0aW9uIGZvciBqb2Ig
JXMsIGNvbnN0cnVjdGluZyBhIG5ldyBvbmUuIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMmI3YTJmZTNmYmI1OGQ0YzRl
ZTM4ZmMwNGI1MzZhM2U0ZTBjNzdlNy4uM2JlNzU3ZTAyYWUxOWQ3NTkwZWMwN2IzZmE0Y2JlN2Q2
M2NlODFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBh
aW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwKICAgICAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oc3RhdGUsIHBhaW50VmFsdWUs
IGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2Vw
dGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKLSAgICAgICAgYXV0byBwYWludERl
ZmluaXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRD
b25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFBy
b3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CisgICAgICAgIGF1dG8gcGFpbnRE
ZWZpbml0aW9uID0gbWFrZVVuaXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3Ry
dWN0b3IuZ2V0KCksIHBhaW50LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0
aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3VtZW50cykpOwogICAgICAgICBwYWludERlZmluaXRpb25N
YXAoKS5hZGQobmFtZSwgV1RGTW92ZShwYWludERlZmluaXRpb24pKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRDb25zb2xlQ2xpZW50LmNwcAppbmRleCA4
ZThhMmE0Y2EyM2UyYjkzZGExMzRhZmI1MmQwZTk1NzZjNDAyMTU5Li4zZjA5MjU2M2JkNTJhYzRh
NGJiZWRhNDE1YzIzN2EyZDFkZmRhZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldENvbnNvbGVDbGllbnQuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgV29ya2xl
dENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3NhZ2VMZXZlCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0OwogICAgIGFyZ3VtZW50cy0+
Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2VUZXh0KTsKLSAgICBhdXRvIG1lc3NhZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShhcmd1bWVu
dHMpLCBleGVjKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNz
YWdlVGV4dCwgV1RGTW92ZShhcmd1bWVudHMpLCBleGVjKTsKICAgICBtX3dvcmtsZXRHbG9iYWxT
Y29wZS5hZGRDb25zb2xlTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggNGJiNzg4ZWE2
M2NkNmJiZGM1MzI1ODdlMDUxMGQ1MzI1MjYwNmZmYS4uY2VmODJmN2I0MTFkMjE4YzczM2Q2NmZh
OWRiYTJkOTMxMjVhZTgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChXb3JrbGV0R2xvYmFsU2NvcGUpOwogV29ya2xldEdsb2JhbFNjb3BlOjpXb3JrbGV0R2xv
YmFsU2NvcGUoRG9jdW1lbnQmIGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlJiYgY29kZSkKICAg
ICA6IG1fZG9jdW1lbnQobWFrZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9zZXNzaW9uSUQo
bV9kb2N1bWVudC0+c2Vzc2lvbklEKCkpCi0gICAgLCBtX3NjcmlwdChzdGQ6Om1ha2VfdW5pcXVl
PFdvcmtsZXRTY3JpcHRDb250cm9sbGVyPih0aGlzKSkKKyAgICAsIG1fc2NyaXB0KG1ha2VVbmlx
dWU8V29ya2xldFNjcmlwdENvbnRyb2xsZXI+KHRoaXMpKQogICAgICwgbV90b3BPcmlnaW4oU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKQogICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQog
ICAgICwgbV9jb2RlKFdURk1vdmUoY29kZSkpCkBAIC02Miw3ICs2Miw3IEBAIFdvcmtsZXRHbG9i
YWxTY29wZTo6V29ya2xldEdsb2JhbFNjb3BlKERvY3VtZW50JiBkb2N1bWVudCwgU2NyaXB0U291
cmNlQ29kZSYmIGNvCiAgICAgQVNTRVJUKGRvY3VtZW50LnBhZ2UoKSk7CiAKICAgICBzZXRTZWN1
cml0eU9yaWdpblBvbGljeShTZWN1cml0eU9yaWdpblBvbGljeTo6Y3JlYXRlKG1fdG9wT3JpZ2lu
LmNvcHlSZWYoKSkpOwotICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgbV9jb2RlLnVybCgpIH0sICp0aGlzKSk7
CisgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG1ha2VVbmlxdWU8Q29udGVudFNlY3VyaXR5
UG9saWN5PihVUkwgeyBtX2NvZGUudXJsKCkgfSwgKnRoaXMpKTsKIH0KIAogV29ya2xldEdsb2Jh
bFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdv
cmtsZXRHbG9iYWxTY29wZTo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lcwogewogICAgIGlmICghbV9kb2N1bWVudCB8fCBpc0pTRXhlY3V0aW9u
Rm9yYmlkZGVuKCkgfHwgIW1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2RvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KG1lc3NhZ2UtPnNvdXJjZSgpLCBtZXNzYWdlLT50eXBlKCksIG1lc3NhZ2UtPmxldmVs
KCksIG1lc3NhZ2UtPm1lc3NhZ2UoKSwgMCkpOworICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZS0+c291
cmNlKCksIG1lc3NhZ2UtPnR5cGUoKSwgbWVzc2FnZS0+bGV2ZWwoKSwgbWVzc2FnZS0+bWVzc2Fn
ZSgpLCAwKSk7CiB9CiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMWNl
ZTllYjM0MjFjZDk5YTU2Yzg4NjBiOGVjZGQ0NTk2ZjgwZDJkZS4uNzEzMzkwMGYxNzFlZWY0MTU2
NzNkNGU5MGQ1Y2Y3N2NmZWJjMmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1dvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQg
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHRXaXRoU3ViY2xhc3MoKQogICAgIEFT
U0VSVChtX3dvcmtsZXRHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbE9iamVjdCgpID09IG1fd29y
a2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAgICAgQVNTRVJUKGFzT2JqZWN0KG1fd29ya2xldEds
b2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCptX3ZtKSktPmdsb2JhbE9iamVj
dCgpID09IG1fd29ya2xldEdsb2JhbFNjb3BlV3JhcHBlcik7CiAKLSAgICBtX2NvbnNvbGVDbGll
bnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtsZXRDb25zb2xlQ2xpZW50PigqbV93b3JrbGV0R2xv
YmFsU2NvcGUpOworICAgIG1fY29uc29sZUNsaWVudCA9IG1ha2VVbmlxdWU8V29ya2xldENvbnNv
bGVDbGllbnQ+KCptX3dvcmtsZXRHbG9iYWxTY29wZSk7CiAgICAgbV93b3JrbGV0R2xvYmFsU2Nv
cGVXcmFwcGVyLT5zZXRDb25zb2xlQ2xpZW50KG1fY29uc29sZUNsaWVudC5nZXQoKSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGNkNjEzMjI2OTc5NzlkNmY3
MjVkYmQ3YjY4NTQxNWJlMzU4ZmYyYWYuLjA1MjkzNDQwMWY2YjgxYTgyYjQ2ODgxYmQwMjBlNWQ0
ZTJlNTYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjc1LDcg
KzI3NSw3IEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VVUkwoKSBjb25zdAogWE1M
SHR0cFJlcXVlc3RVcGxvYWQmIFhNTEh0dHBSZXF1ZXN0Ojp1cGxvYWQoKQogewogICAgIGlmICgh
bV91cGxvYWQpCi0gICAgICAgIG1fdXBsb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxYTUxIdHRwUmVx
dWVzdFVwbG9hZD4oKnRoaXMpOworICAgICAgICBtX3VwbG9hZCA9IG1ha2VVbmlxdWU8WE1MSHR0
cFJlcXVlc3RVcGxvYWQ+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fdXBsb2FkOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCBhZDdlMTNjOGExOTRhZDU2ZDYyMzQy
MDAwMTdjYmE3N2ZlODBiNzQyLi5hOTI0NDA5ZWU0NmM1M2U3M2IyN2E0OWExOWVmZTk2OTcyMTY3
M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzV2hpdGVzcGFjZShVQ2hhciBjKQogICAgIHJldHVybiBj
ID09ICcgJyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1x0JzsKIH0KIAotI2Rl
ZmluZSBERUZJTkVfRlVOQ1RJT05fQ1JFQVRPUihTdWZmaXgpIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8RnVuY3Rpb24+IGNyZWF0ZUZ1bmN0aW9uIyNTdWZmaXgoKSB7IHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPEZ1biMjU3VmZml4PigpOyB9CisjZGVmaW5lIERFRklORV9GVU5DVElPTl9DUkVBVE9S
KFN1ZmZpeCkgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gY3JlYXRlRnVuY3Rpb24j
I1N1ZmZpeCgpIHsgcmV0dXJuIG1ha2VVbmlxdWU8RnVuIyNTdWZmaXg+KCk7IH0KIAogY2xhc3Mg
SW50ZXJ2YWwgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
UHJlZGljYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKaW5k
ZXggMDQ2MTVjM2Q1ZjAzMTMxMDY5MzhmYWEwNWZiMzljOTljZTEyM2I1Yy4uYzFiYmM1NGViODMw
MTY5MTE5Yzg2ODMxYTRmMmE2ZTdjMDA0NTY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoUHJlZGljYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVk
aWNhdGUuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgYm9vbCBldmFsdWF0ZVByZWRpY2F0ZShjb25z
dCBFeHByZXNzaW9uJiBleHByZXNzaW9uKQogCiAgICAgLy8gZm9vWzNdIG1lYW5zIGZvb1twb3Np
dGlvbigpPTNdCiAgICAgaWYgKHJlc3VsdC5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gRXFU
ZXN0T3AoRXFUZXN0T3A6Ok9QX0VRLCBGdW5jdGlvbjo6Y3JlYXRlKCJwb3NpdGlvbiJfcyksIHN0
ZDo6bWFrZV91bmlxdWU8TnVtYmVyPihyZXN1bHQudG9OdW1iZXIoKSkpLmV2YWx1YXRlKCkudG9C
b29sZWFuKCk7CisgICAgICAgIHJldHVybiBFcVRlc3RPcChFcVRlc3RPcDo6T1BfRVEsIEZ1bmN0
aW9uOjpjcmVhdGUoInBvc2l0aW9uIl9zKSwgbWFrZVVuaXF1ZTxOdW1iZXI+KHJlc3VsdC50b051
bWJlcigpKSkuZXZhbHVhdGUoKS50b0Jvb2xlYW4oKTsKIAogICAgIHJldHVybiByZXN1bHQudG9C
b29sZWFuKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dExpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNw
cAppbmRleCBlYzJjNmFlMDQ1OWEwNjkyNTZhNjYyZjcyYzg3MjY3ZmVhMWE0NWJkLi42MzA0ZTky
ODExYTkzNGY3ZGU3NGM4Yzk0YjJiNjljMDA0ZWE0OTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFhTTFN0
eWxlU2hlZXQ6OmxvYWRDaGlsZFNoZWV0cygpCiAKIHZvaWQgWFNMU3R5bGVTaGVldDo6bG9hZENo
aWxkU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmKQogewotICAgIGF1dG8gY2hpbGRSdWxlID0gc3Rk
OjptYWtlX3VuaXF1ZTxYU0xJbXBvcnRSdWxlPih0aGlzLCBocmVmKTsKKyAgICBhdXRvIGNoaWxk
UnVsZSA9IG1ha2VVbmlxdWU8WFNMSW1wb3J0UnVsZT4odGhpcywgaHJlZik7CiAgICAgbV9jaGls
ZHJlbi5hcHBlbmQoY2hpbGRSdWxlLnJlbGVhc2UoKSk7CiAgICAgbV9jaGlsZHJlbi5sYXN0KCkt
PmxvYWRTaGVldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCBlMDI0ZWZiNTZiZjY1MmI5MGE5YTFkNGY4MTMwNjQ5MTgzMGQ4
ZTBmLi43MDQ4ODkyYTVhYTBlZjlhNTVmYmQyNDA4Y2QxNzkxNGQwMmE5Yzg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChSZWZQdHI8U3RyaW5nSW1w
bD4mJiBpbnB1dFNvdXJjZSkKIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKFhN
TEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIG0sIFRleHRQb3NpdGlvbiBwb3Np
dGlvbikKIHsKICAgICBpZiAoIW1feG1sRXJyb3JzKQotICAgICAgICBtX3htbEVycm9ycyA9IHN0
ZDo6bWFrZV91bmlxdWU8WE1MRXJyb3JzPigqZG9jdW1lbnQoKSk7CisgICAgICAgIG1feG1sRXJy
b3JzID0gbWFrZVVuaXF1ZTxYTUxFcnJvcnM+KCpkb2N1bWVudCgpKTsKICAgICBtX3htbEVycm9y
cy0+aGFuZGxlRXJyb3IodHlwZSwgbSwgcG9zaXRpb24pOwogICAgIGlmICh0eXBlICE9IFhNTEVy
cm9yczo6d2FybmluZykKICAgICAgICAgbV9zYXdFcnJvciA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5k
ZXggMTAzMjAwN2I2ZWIxM2VjZGFhNWJjYjllNDgyYWQzYTY4ZTEyMjMxYi4uYjk5YjMwODk3Mzg1
NTA5ZWJhYjA0NTIxMzk3NTM5YjA3MGNlZTcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtOTIsNyArOTIs
NyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFN0
YXJ0RWxlbWVudE5TQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogeG1sTG9jYWxOYW1lLCBjb25zdCB4
bWxDaGFyKiB4bWxQcmVmaXgsIGNvbnN0IHhtbENoYXIqIHhtbFVSSSwgaW50IG51bU5hbWVzcGFj
ZXMsIGNvbnN0IHhtbENoYXIqKiBuYW1lc3BhY2VzLCBpbnQgbnVtQXR0cmlidXRlcywgaW50IG51
bURlZmF1bHRlZCwgY29uc3QgeG1sQ2hhcioqIGF0dHJpYnV0ZXMpCiAgICAgewotICAgICAgICBh
dXRvIGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nU3RhcnRFbGVtZW50TlNDYWxs
YmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVuZGluZ1N0YXJ0
RWxlbWVudE5TQ2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnhtbExvY2FsTmFtZSA9
IHhtbFN0cmR1cCh4bWxMb2NhbE5hbWUpOwogICAgICAgICBjYWxsYmFjay0+eG1sUHJlZml4ID0g
eG1sU3RyZHVwKHhtbFByZWZpeCk7CkBAIC0xMjIsMTIgKzEyMiwxMiBAQCBjbGFzcyBQZW5kaW5n
Q2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kRW5kRWxlbWVudE5TQ2FsbGJhY2soKQogICAg
IHsKLSAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0Vu
ZEVsZW1lbnROU0NhbGxiYWNrPigpKTsKKyAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKG1ha2VV
bmlxdWU8UGVuZGluZ0VuZEVsZW1lbnROU0NhbGxiYWNrPigpKTsKICAgICB9CiAKICAgICB2b2lk
IGFwcGVuZENoYXJhY3RlcnNDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAg
IHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ0NoYXJh
Y3RlcnNDYWxsYmFjaz4oKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1ha2VVbmlxdWU8UGVu
ZGluZ0NoYXJhY3RlcnNDYWxsYmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0
cm5kdXAocywgbGVuKTsKICAgICAgICAgY2FsbGJhY2stPmxlbiA9IGxlbjsKQEAgLTEzNyw3ICsx
MzcsNyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kUHJvY2Vz
c2luZ0luc3RydWN0aW9uQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogdGFyZ2V0LCBjb25zdCB4bWxD
aGFyKiBkYXRhKQogICAgIHsKLSAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6bWFrZV91bmlx
dWU8UGVuZGluZ1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkNhbGxiYWNrPigpOworICAgICAgICBhdXRv
IGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2FsbGJh
Y2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2stPnRhcmdldCA9IHhtbFN0cmR1cCh0YXJnZXQpOwog
ICAgICAgICBjYWxsYmFjay0+ZGF0YSA9IHhtbFN0cmR1cChkYXRhKTsKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBjbGFzcyBQZW5kaW5nQ2FsbGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kQ0RBVEFCbG9j
a0NhbGxiYWNrKGNvbnN0IHhtbENoYXIqIHMsIGludCBsZW4pCiAgICAgewotICAgICAgICBhdXRv
IGNhbGxiYWNrID0gc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ0RBVEFCbG9ja0NhbGxiYWNrPigp
OworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nQ0RBVEFCbG9ja0Nh
bGxiYWNrPigpOwogCiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1cChzLCBsZW4pOwog
ICAgICAgICBjYWxsYmFjay0+bGVuID0gbGVuOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIGNsYXNzIFBl
bmRpbmdDYWxsYmFja3MgewogCiAgICAgdm9pZCBhcHBlbmRDb21tZW50Q2FsbGJhY2soY29uc3Qg
eG1sQ2hhciogcykKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBlbmRpbmdDb21tZW50Q2FsbGJhY2s+KCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBt
YWtlVW5pcXVlPFBlbmRpbmdDb21tZW50Q2FsbGJhY2s+KCk7CiAKICAgICAgICAgY2FsbGJhY2st
PnMgPSB4bWxTdHJkdXAocyk7CiAKQEAgLTE2Niw3ICsxNjYsNyBAQCBjbGFzcyBQZW5kaW5nQ2Fs
bGJhY2tzIHsKIAogICAgIHZvaWQgYXBwZW5kSW50ZXJuYWxTdWJzZXRDYWxsYmFjayhjb25zdCB4
bWxDaGFyKiBuYW1lLCBjb25zdCB4bWxDaGFyKiBleHRlcm5hbElELCBjb25zdCB4bWxDaGFyKiBz
eXN0ZW1JRCkKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBlbmRpbmdJbnRlcm5hbFN1YnNldENhbGxiYWNrPigpOworICAgICAgICBhdXRvIGNhbGxiYWNr
ID0gbWFrZVVuaXF1ZTxQZW5kaW5nSW50ZXJuYWxTdWJzZXRDYWxsYmFjaz4oKTsKIAogICAgICAg
ICBjYWxsYmFjay0+bmFtZSA9IHhtbFN0cmR1cChuYW1lKTsKICAgICAgICAgY2FsbGJhY2stPmV4
dGVybmFsSUQgPSB4bWxTdHJkdXAoZXh0ZXJuYWxJRCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgY2xh
c3MgUGVuZGluZ0NhbGxiYWNrcyB7CiAKICAgICB2b2lkIGFwcGVuZEVycm9yQ2FsbGJhY2soWE1M
RXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29uc3QgeG1sQ2hhciogbWVzc2FnZSwgT3JkaW5hbE51
bWJlciBsaW5lTnVtYmVyLCBPcmRpbmFsTnVtYmVyIGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdFcnJvckNhbGxiYWNr
PigpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gbWFrZVVuaXF1ZTxQZW5kaW5nRXJyb3JDYWxs
YmFjaz4oKTsKIAogICAgICAgICBjYWxsYmFjay0+bWVzc2FnZSA9IHhtbFN0cmR1cChtZXNzYWdl
KTsKICAgICAgICAgY2FsbGJhY2stPnR5cGUgPSB0eXBlOwpAQCAtNTY1LDcgKzU2NSw3IEBAIGJv
b2wgWE1MRG9jdW1lbnRQYXJzZXI6OnN1cHBvcnRzWE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZl
cnNpb24pCiBYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlcihkb2N1bWVudCkKICAgICAsIG1fdmlldyhmcmFtZVZpZXcpCi0gICAgLCBtX3BlbmRpbmdD
YWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tzPigpKQorICAgICwgbV9w
ZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNrcz4oKSkKICAgICAsIG1f
Y3VycmVudE5vZGUoJmRvY3VtZW50KQogICAgICwgbV9zY3JpcHRTdGFydFBvc2l0aW9uKFRleHRQ
b3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiB7CkBAIC01NzMsNyArNTczLDcgQEAgWE1M
RG9jdW1lbnRQYXJzZXI6OlhNTERvY3VtZW50UGFyc2VyKERvY3VtZW50JiBkb2N1bWVudCwgRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCiAKIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBhcnNl
cihEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogcGFyZW50RWxlbWVudCwgUGFy
c2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogICAgIDogU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKGZyYWdtZW50LmRvY3VtZW50KCksIHBhcnNlckNvbnRlbnRQb2xpY3kpCi0g
ICAgLCBtX3BlbmRpbmdDYWxsYmFja3Moc3RkOjptYWtlX3VuaXF1ZTxQZW5kaW5nQ2FsbGJhY2tz
PigpKQorICAgICwgbV9wZW5kaW5nQ2FsbGJhY2tzKG1ha2VVbmlxdWU8UGVuZGluZ0NhbGxiYWNr
cz4oKSkKICAgICAsIG1fY3VycmVudE5vZGUoJmZyYWdtZW50KQogICAgICwgbV9zY3JpcHRTdGFy
dFBvc2l0aW9uKFRleHRQb3NpdGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCiAgICAgLCBtX3Bh
cnNpbmdGcmFnbWVudCh0cnVlKQpAQCAtMTMyOSw3ICsxMzI5LDcgQEAgdm9pZCBYTUxEb2N1bWVu
dFBhcnNlcjo6ZG9FbmQoKQogICAgICAgICB4bWxUcmVlVmlld2VyLnRyYW5zZm9ybURvY3VtZW50
VG9UcmVlVmlldygpOwogICAgIH0gZWxzZSBpZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsKICAgICAg
ICAgeG1sRG9jUHRyIGRvYyA9IHhtbERvY1B0ckZvclN0cmluZyhkb2N1bWVudCgpLT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLnRvU3RyaW5nKCks
IGRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJh
bnNmb3JtU291cmNlKHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtU291cmNlPihkb2MpKTsKKyAg
ICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNlKG1ha2VVbmlxdWU8VHJhbnNmb3Jt
U291cmNlPihkb2MpKTsKIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsg
Ly8gTWFrZSB0aGUgZG9jdW1lbnQgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IFhT
TCBzdHlsZXNoZWV0cy4KICAgICAgICAgZG9jdW1lbnQoKS0+YXBwbHlQZW5kaW5nWFNMVHJhbnNm
b3Jtc05vd0lmU2NoZWR1bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApp
bmRleCAwNWJjOTUzZjdmMGRkYzc4N2IxZTYzMDQ4NzY5NmMyMDg1OWNhZTBmLi5kNjllMTQ5OTJk
NTg2NzUxY2EwNDM0MjYzNjJhNmY0MWMyNjk5ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJp
dmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVy
U2VydmljZS5jcHAKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNv
bm5lY3RUb0Jyb3dzZXIoVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSG9zdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xpc3QudGFrZUxhc3QoKSk7CisgICAg
YXV0byBzZXNzaW9uSG9zdCA9IG1ha2VVbmlxdWU8U2Vzc2lvbkhvc3Q+KGNhcGFiaWxpdGllc0xp
c3QudGFrZUxhc3QoKSk7CiAgICAgYXV0byogc2Vzc2lvbkhvc3RQdHIgPSBzZXNzaW9uSG9zdC5n
ZXQoKTsKICAgICBzZXNzaW9uSG9zdFB0ci0+Y29ubmVjdFRvQnJvd3NlcihbdGhpcywgY2FwYWJp
bGl0aWVzTGlzdCA9IFdURk1vdmUoY2FwYWJpbGl0aWVzTGlzdCksIHNlc3Npb25Ib3N0ID0gV1RG
TW92ZShzZXNzaW9uSG9zdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAo
ZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEds
aWIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKaW5kZXgg
YzhmMGEwZWM3YjBhMDY2MTJjYTY3MzhkMDAyYTEzZDBmNDNjMTJkOC4uMTc3YWE1NGYyMjI5N2Fj
MzE2MTRkMzUzYmU5ZjNhNzlkMWFhYjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9n
bGliL1Nlc3Npb25Ib3N0R2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1Nlc3Np
b25Ib3N0R2xpYi5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpsYXVu
Y2hCcm93c2VyKEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBs
ZQogICAgIH0sIHRoaXMpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkYnVzQWRkcmVzcyhnX3N0
cmR1cF9wcmludGYoInRjcDpob3N0PSVzLHBvcnQ9JXUiLCAiMTI3LjAuMC4xIiwgcG9ydCkpOwot
ICAgIGNvbm5lY3RUb0Jyb3dzZXIoc3RkOjptYWtlX3VuaXF1ZTxDb25uZWN0VG9Ccm93c2VyQXN5
bmNEYXRhPih0aGlzLCBXVEZNb3ZlKGRidXNBZGRyZXNzKSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBjb25uZWN0VG9Ccm93c2VyKG1ha2VV
bmlxdWU8Q29ubmVjdFRvQnJvd3NlckFzeW5jRGF0YT4odGhpcywgV1RGTW92ZShkYnVzQWRkcmVz
cyksIG1fY2FuY2VsbGFibGUuZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiB9
CiAKIHZvaWQgU2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dzZXIoc3RkOjp1bmlxdWVfcHRyPENv
bm5lY3RUb0Jyb3dzZXJBc3luY0RhdGE+JiYgZGF0YSkKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lk
IFNlc3Npb25Ib3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChsb25nIG1lc3NhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25JRCk7CiAgICAgQVNTRVJU
KG1fdGFyZ2V0LmlkKTsKIAotICAgIGF1dG8gbWVzc2FnZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPE1lc3NhZ2VDb250ZXh0PihNZXNzYWdlQ29udGV4dCB7IG1lc3NhZ2VJRCwgdGhpcyB9KTsK
KyAgICBhdXRvIG1lc3NhZ2VDb250ZXh0ID0gbWFrZVVuaXF1ZTxNZXNzYWdlQ29udGV4dD4oTWVz
c2FnZUNvbnRleHQgeyBtZXNzYWdlSUQsIHRoaXMgfSk7CiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25f
Y2FsbChtX2RidXNDb25uZWN0aW9uLmdldCgpLCBudWxscHRyLAogICAgICAgICBJTlNQRUNUT1Jf
REJVU19PQkpFQ1RfUEFUSCwKICAgICAgICAgSU5TUEVDVE9SX0RCVVNfSU5URVJGQUNFLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcAppbmRleCAyZTI5NmIyOWY0M2E0ZmM4OGU3MDA5MzI0YTVlMjNiMGJlOWNkNTFjLi45
MzAzZDJhZGMxNWVmNmZiMzEwYjZmYjE2ZDA3MGNjODUzZmRjM2MzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApA
QCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKCkKICAgICBpZiAocmVzb3VyY2VMb2dQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9maWxlTW9uaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RmlsZU1vbml0b3I+KHJlc291cmNlTG9nUGF0aCwgbV93b3JrUXVldWUuY29weVJl
ZigpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChGaWxlTW9uaXRvcjo6
RmlsZUNoYW5nZVR5cGUgdHlwZSkgeworICAgIG1fZmlsZU1vbml0b3IgPSBtYWtlVW5pcXVlPEZp
bGVNb25pdG9yPihyZXNvdXJjZUxvZ1BhdGgsIG1fd29ya1F1ZXVlLmNvcHlSZWYoKSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VU
eXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJl
Y3RvcnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsZU1v
bml0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVNb25pdG9yPihzdG9yYWdlUGF0aCwgbV93b3Jr
UXVldWUuY29weVJlZigpLCBbdGhpc10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBl
KSB7CisgICAgbV9maWxlTW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHN0b3JhZ2VQ
YXRoLCBtX3dvcmtRdWV1ZS5jb3B5UmVmKCksIFt0aGlzXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgIGlmICh0eXBlID09IEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZTo6UmVtb3ZhbCkgewog
ICAgICAgICAgICAgLy8gRGlyZWN0b3J5IHdhcyByZW1vdmVkIQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA2NzVmMGRhZjU5Y2U5YjRmODg3
Yjc5NGJjODkyZWM0NGE4Mzc1NmYzLi5mMjI4NjYzNTVjNWFmNWEyNjIwNTYzN2FlNTJmZGY3MWM5
MTYyMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcApAQCAtMTU5LDE1ICsxNTksMTUgQEAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG4KICAgICAK
ICAgICBwb3N0VGFzayhbdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCksIHNob3VsZEluY2x1
ZGVMb2NhbGhvc3RdIHsKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuaXNJVFBEYXRhYmFzZUVuYWJsZWQoKSkgewotICAgICAgICAgICAgbV9zdGF0
aXN0aWNzU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgICAgICAgICAgbV9zdGF0
aXN0aWNzU3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlPigqdGhpcywgbV9zdGF0aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCi0gICAgICAgICAgICBhdXRvIG1lbW9y
eVN0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU+KCp0aGlzLCBtX3N0YXRpc3RpY3NRdWV1ZSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7Ci0g
ICAgICAgICAgICBhdXRvIHBlcnNpc3RlbnRTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPigqbWVtb3J5U3RvcmUsIG1fc3RhdGlz
dGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICAgICAgICAg
IGF1dG8gbWVtb3J5U3RvcmUgPSBtYWtlVW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZT4oKnRoaXMsIG1fc3RhdGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0
KTsKKyAgICAgICAgICAgIGF1dG8gcGVyc2lzdGVudFN0b3JlID0gbWFrZVVuaXF1ZTxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+KCptZW1vcnlTdG9yZSwgbV9zdGF0aXN0
aWNzUXVldWUsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwogCiAgICAgICAgICAg
ICBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlz
dGljc1N0b3JlLmdldCgpKS5wb3B1bGF0ZUZyb21NZW1vcnlTdG9yZSgqbWVtb3J5U3RvcmUpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZT4oKnRoaXMsIG1fc3Rh
dGlzdGljc1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKLSAgICAgICAgICAgIG1fcGVy
c2lzdGVudFN0b3JhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZT4oZG93bmNhc3Q8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpLCBtX3N0YXRpc3RpY3NRdWV1ZSwgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9IG1h
a2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlPigqdGhpcywgbV9zdGF0
aXN0aWNzUXVldWUsIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOworICAgICAgICAgICAgbV9wZXJz
aXN0ZW50U3RvcmFnZSA9IG1ha2VVbmlxdWU8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlPihkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU+KCpt
X3N0YXRpc3RpY3NTdG9yZSksIG1fc3RhdGlzdGljc1F1ZXVlLCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FKDE5MzI5Nyk6IFRo
aXMgc2hvdWxkIGJlIHJldmlzZWQgYWZ0ZXIgdGhlIFVJUHJvY2VzcyB2ZXJzaW9uIGdvZXMgYXdh
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9zb3VwL0xlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclNvdXAuY3BwCmluZGV4IDJjNGQyZmY5NDgwOWM0MmE2MTE2NzNiNWZiNWNhZGJm
YTU5MTYwNGUuLmM5YjBjM2IyMTU3YWQ4YWViZTc0NmY0ZjM5ZmI1ZWZjZDc1ZTcxNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvc291cC9MZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJTb3VwLmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDdXN0b21Qcm90b2NvbFJlcXVl
c3RDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0U291cFJlcXVlc3RHZW5lcmljQ2xpZW50CiAg
ICAgICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+
YWRkQ3VzdG9tUHJvdG9jb2woc3RkOjptYWtlX3VuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7
CisgICAgICAgIGF1dG8gY3VzdG9tUHJvdG9jb2xJRCA9IGN1c3RvbVByb3RvY29sTWFuYWdlci0+
YWRkQ3VzdG9tUHJvdG9jb2wobWFrZVVuaXF1ZTxMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OldlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPihXVEZNb3ZlKHRhc2spLCByZXF1ZXN0KSk7CiAgICAg
ICAgIGN1c3RvbVByb3RvY29sTWFuYWdlci0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQs
IHdlYmtpdFNvdXBSZXF1ZXN0R2VuZXJpY0dldFJlcXVlc3QocmVxdWVzdCkpOwogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBmNGQ3NWQ5ZGQzMTgyMDA0NDlhMmFiMmU1OGU4ODYz
MTIwYzc3NzQ0Li41MDdmNGY2ZmZjM2Q0MDY5YzEzNzgyNjUyNzVjNjYwNjU0YjRjODM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6
OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25s
b2EKICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihyZXF1ZXN0
LnVybCgpKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwogCi0gICAgbV9wZW5kaW5nRG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgZG93bmxvYWRJRCwgKm5ldHdvcmtTZXNzaW9uLCAmY2xpZW50KCkubmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKS0+YmxvYlJlZ2lzdHJ5KCksIHN1Z2dlc3RlZE5hbWUpKTsKKyAgICBtX3BlbmRp
bmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIG1ha2VVbmlxdWU8UGVuZGluZ0Rvd25sb2FkPiht
X2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25sb2FkcygpLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBkb3dubG9hZElELCAqbmV0d29ya1Nlc3Npb24sICZjbGllbnQoKS5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKSwgc3VnZ2VzdGVkTmFtZSkpOwogfQog
CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxv
YWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYgZG93bmxvYWQpCkBA
IC05MCw3ICs5MCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjp3aWxsRGVjaWRlUGVuZGluZ0Rv
d25sb2FkRGVzdGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3CiB2b2lkIERvd25sb2FkTWFu
YWdlcjo6Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQs
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiBuZXR3b3JrTG9hZCwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYgYmxvYkZpbGVSZWZlcmVuY2VzLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewogICAgIEFTU0VSVCghbV9wZW5kaW5nRG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsK
LSAgICBtX3BlbmRpbmdEb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIHN0ZDo6bWFrZV91bmlxdWU8
UGVuZGluZ0Rvd25sb2FkPihtX2NsaWVudC5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbkZvckRvd25s
b2FkcygpLCBXVEZNb3ZlKG5ldHdvcmtMb2FkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgbV9wZW5kaW5nRG93bmxvYWRz
LmFkZChkb3dubG9hZElELCBtYWtlVW5pcXVlPFBlbmRpbmdEb3dubG9hZD4obV9jbGllbnQucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb25Gb3JEb3dubG9hZHMoKSwgV1RGTW92ZShuZXR3b3JrTG9hZCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25z
ZSkpOwogfQogCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYm9v
bCBhbGxvd092ZXJ3cml0ZSkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdl
cjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRv
d25sbwogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UK
LSAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRv
d25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CisgICAgYXV0byBkb3dubG9hZCA9IG1ha2VV
bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwog
CiAgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25s
b2FkSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFwLmNwcAppbmRleCBhODg0YWNiMjk1ZDQyY2U5M2UyMWJhYzQzMzA4NGQ3
YmJjNDMzZTY1Li5hZTNjYTdlMGU0ZWU3ZWM4NWRlYTJlMzA5ZTFkM2MyMGI3NDk2NTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYXAuY3BwCkBAIC02MSw3ICs2MSw3IEBAIERvd25sb2FkTWFwOjpEb3dubG9hZE1hcFR5cGU6
OkFkZFJlc3VsdCBEb3dubG9hZE1hcDo6YWRkKERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBh
dXRvIHJlc3VsdCA9IG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2Fk
KSk7CiAgICAgaWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEFTU0VSVCgh
bV9kb3dubG9hZEFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxvYWRBc3NlcnRpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldHBpZCgpLCAiV2ViS2l0IGRvd25sb2Fk
cyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rv
d25sb2FkQXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRwaWQoKSwg
IldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5n
KTsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUb29rICdXZWJLaXQg
ZG93bmxvYWRzJyBhc3NlcnRpb24gaW4gTmV0d29ya1Byb2Nlc3MiKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuY3BwCmluZGV4IGEyNzgyOGQ3YThiZDg0YTdhZTM3NzE2ODY3ODY5MWM3NjdmMjc5
NmQuLjU5MTIzZjJjNDhmMWMxZTQxNzliYjFkNWJjZTE1NzBjNmI3NTRlOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBQZW5kaW5nRG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6
OkNvbm5lY3Rpb24qIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzLCBEb3dubG9hZElEIGRvd25sb2FkSUQsIE5ldHdvcmtTZXNzaW9uJiBu
ZXR3b3JrU2Vzc2lvbiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5LCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCi0gICAgOiBtX25ldHdvcmtMb2FkKHN0ZDo6bWFr
ZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1l
dGVycyksIG5ldHdvcmtTZXNzaW9uKSkKKyAgICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxO
ZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0
d29ya1Nlc3Npb24pKQogICAgICwgbV9wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbikKIHsKICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxz
ID0gcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQ
b2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCBiYmU5YTlhYTQ2YTk2MzQwMjgyZjcwZDJkM2Q0ZmMyZGQzYzRlODJkLi4yNGQy
ODExZDBjYTNkNDE1OWJhMzgxYTE3ZDY2YmEzYzkxMjE1YTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnVucmVnaXN0ZXJTV0Nvbm5lY3Rpb25zKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBz
ZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKTsK
LSAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNXU2VydmVyQ29ubmVj
dGlvbj4obV9uZXR3b3JrUHJvY2Vzcywgc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Np
b25JRCk7CisgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlckNvbm5l
Y3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIHNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpLCBzZXNz
aW9uSUQpOwogICAgIAogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLT5pZGVudGlmaWVyKCk7CiAgICAgTE9HKFNl
cnZpY2VXb3JrZXIsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dT
ZXJ2ZXJDb25uZWN0aW9uIC0gJXMiLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCmluZGV4
IDQ0NDIwZmY1ZmYyMjk5YmUzNzU0Y2UzN2NkZGM3ZWU2MTYyZTE5MzEuLjU0MzUyODI4ZTY4NzIx
YWYwYmFkZTBjMDI3NWJlMmYwOTVhMTY2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OmNv
bnRlbnRFeHRlbnNpb25zQmFja2VuZChVc2VyQ29udGVudENvbnRyb2xsCiB2b2lkIE5ldHdvcmtD
b250ZW50UnVsZUxpc3RNYW5hZ2VyOjphZGRDb250ZW50UnVsZUxpc3RzKFVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+JiYgY29udGVudFJ1bGVMaXN0cykKIHsKICAg
ICBhdXRvJiBiYWNrZW5kID0gKm1fY29udGVudEV4dGVuc2lvbkJhY2tlbmRzLmVuc3VyZShpZGVu
dGlmaWVyLCBbXSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQ+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgZm9yIChhdXRv
JiYgY29udGVudFJ1bGVMaXN0IDogY29udGVudFJ1bGVMaXN0cykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggODU2
Y2ExZjA5NWUxMDNjNTQyYWQ0ZTQzMDAwYmNiNzBmZjFmYjMwNy4uOGE2YzVhMWYyMThkM2M5YWIy
MTA0ZGYwOTQ2OTJjYzNmNjU1MjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBjb25zdCB3ZWJLaXRCbG9iUmVzb3VyY2VEb21haW4gPSAiV2ViS2l0Qmxv
YlJlc291cmNlIjsKIAogTmV0d29ya0RhdGFUYXNrQmxvYjo6TmV0d29ya0RhdGFUYXNrQmxvYihO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgQmxvYlJlZ2lzdHJ5SW1wbCYgYmxvYlJlZ2lzdHJ5LCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiBmaWxlUmVmZXJlbmNl
cykKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSwgZmFsc2UsIGZhbHNlKQotICAgICwgbV9zdHJl
YW0oc3RkOjptYWtlX3VuaXF1ZTxBc3luY0ZpbGVTdHJlYW0+KCp0aGlzKSkKKyAgICAsIG1fc3Ry
ZWFtKG1ha2VVbmlxdWU8QXN5bmNGaWxlU3RyZWFtPigqdGhpcykpCiAgICAgLCBtX2ZpbGVSZWZl
cmVuY2VzKGZpbGVSZWZlcmVuY2VzKQogICAgICwgbV9uZXR3b3JrUHJvY2VzcyhzZXNzaW9uLm5l
dHdvcmtQcm9jZXNzKCkpCiB7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjpkb3dubG9hZCgpCiAgICAgfQogCiAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0g
bV9uZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93
bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1l
KCkpOworICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1h
bmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQsICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgp
LCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2Fk
LmdldCgpOwogICAgIGRvd25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayht
X3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHIt
PmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmNwcAppbmRleCBmNjU0Mjk1OGI0NzEwM2QzODFmOGNjNTM3MGQ5ZDZiNTk0ZGMx
MTZjLi4xOTMyNmYyZjQ3ZGM5ZjRmNjIyOGE0YzlhYTg0ZjZjOWZhYWJiNzNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3Jh
ZGVDaGVja2VyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tl
cjo6TmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9kYXRhYmFzZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2U+KCk7CisgICAgICAgIG1fZGF0YWJhc2UgPSBtYWtlVW5pcXVlPFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlPigpOwogICAgICAgICBib29sIGlzRGF0YWJhc2VPcGVuID0gbV9k
YXRhYmFzZS0+b3BlbihwYXRoLCBXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6T3Blbk1vZGU6OlJl
YWRPbmx5KTsKICAgICAgICAgaWYgKCFpc0RhdGFiYXNlT3BlbikgewogI2lmIFBMQVRGT1JNKENP
Q09BKQpAQCAtODAsNyArODAsNyBAQCBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6TmV0d29y
a0hUVFBTVXBncmFkZUNoZWNrZXIoKQogICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgdXNpbmcgYSB3
b3JrZXJRdWV1ZSwgdGhlIHNlcXVlbnRpYWwgZGlzcGF0Y2ggYmxvY2tzIG1heSBiZSBjYWxsZWQg
YnkgZGlmZmVyZW50IHRocmVhZHMuCiAgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVUaHJlYWRp
bmdDaGVja3MoKTsKIAotICAgICAgICBtX3N0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50PigqbV9kYXRhYmFzZSwgaHR0cHNVcGdyYWRlQ2hlY2tlclF1
ZXJ5KTsKKyAgICAgICAgbV9zdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudD4oKm1fZGF0YWJhc2UsIGh0dHBzVXBncmFkZUNoZWNrZXJRdWVyeSk7CiAgICAgICAg
IGludCBpc1N0YXRlbWVudFByZXBhcmVkID0gKG1fc3RhdGVtZW50LT5wcmVwYXJlKCkgPT0gU1FM
SVRFX09LKTsKICAgICAgICAgQVNTRVJUKGlzU3RhdGVtZW50UHJlcGFyZWQpOwogICAgICAgICBp
ZiAoIWlzU3RhdGVtZW50UHJlcGFyZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwCmluZGV4IDkxMDdmZWMxZTM0ZGI0NDg4MTYyMjg2ODYyMmM4ZmJlYjVi
Mzg4M2MuLmVlODBhYzZlYTFhNzc5NzczYTA3MTBlMTc4ODcwNjM3NjdjNTEyYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yMTUsNyArMjE1
LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGUKICAgICB9CiAKICAgICBpZiAobV9sb2FkVGhy
b3R0bGVMYXRlbmN5ID4gMF9zKSB7Ci0gICAgICAgIG1fdGhyb3R0bGUgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRocm90dGxlPigqdGhpcywgbV9sb2FkVGhyb3R0bGVMYXRlbmN5LCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX3Rocm90dGxlID0g
bWFrZVVuaXF1ZTxUaHJvdHRsZT4oKnRoaXMsIG1fbG9hZFRocm90dGxlTGF0ZW5jeSwgV1RGTW92
ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENoZWNrZXIuY3BwCmluZGV4IDExNzZmNTM3YTg1ODA5YjRiYWUxY2U3NjhiNTY1MzViMTVk
NWViYjMuLmY5YTRkMDQxMzY1MjFhZjVhNTk0Mjg3YWI0MmJlNGNlZGY2ODMyOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAK
QEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkQ2hlY2tlcjo6Y2hlY2tDT1JTUmVx
dWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdAogICAgICAgICBtX2Zy
YW1lSUQsCiAgICAgICAgIG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kKICAgICB9OwotICAgIG1f
Y29yc1ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcj4obV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
bV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3Rl
ZCA9IGlzUmVkaXJlY3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgeworICAgIG1fY29yc1By
ZWZsaWdodENoZWNrZXIgPSBtYWtlVW5pcXVlPE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcj4o
bV9uZXR3b3JrUHJvY2Vzcy5nZXQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbV9zaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIFt0aGlzLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlciksIGlzUmVkaXJlY3RlZCA9IGlzUmVkaXJl
Y3RlZCgpXShhdXRvJiYgZXJyb3IpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJjaGVja0NPUlNSZXF1ZXN0V2l0aFByZWZsaWdodCAtIG1ha2VDcm9zc09yaWdpbkFj
Y2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0IHByZWZsaWdodCBjb21wbGV0ZSwgc3VjY2VzczogJWQg
Zm9yUmVkaXJlY3Q/ICVkIiwgZXJyb3IuaXNOdWxsKCksIGlzUmVkaXJlY3RlZCk7CiAKICAgICAg
ICAgaWYgKCFlcnJvci5pc051bGwoKSkgewpAQCAtNDQ2LDcgKzQ0Niw3IEBAIENvbnRlbnRTZWN1
cml0eVBvbGljeSogTmV0d29ya0xvYWRDaGVja2VyOjpjb250ZW50U2VjdXJpdHlQb2xpY3koKQog
ewogICAgIGlmICghbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgbV9jc3BSZXNwb25zZUhlYWRl
cnMpIHsKICAgICAgICAgLy8gRklYTUU6IFBhc3MgdGhlIFVSTCBvZiB0aGUgcHJvdGVjdGVkIHJl
c291cmNlIGluc3RlYWQgb2YgaXRzIG9yaWdpbi4KLSAgICAgICAgbV9jb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRTZWN1cml0eVBvbGljeT4oVVJMIHsgVVJM
IHsgfSwgbV9vcmlnaW4tPnRvU3RyaW5nKCkgfSk7CisgICAgICAgIG1fY29udGVudFNlY3VyaXR5
UG9saWN5ID0gbWFrZVVuaXF1ZTxDb250ZW50U2VjdXJpdHlQb2xpY3k+KFVSTCB7IFVSTCB7IH0s
IG1fb3JpZ2luLT50b1N0cmluZygpIH0pOwogICAgICAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGlj
eS0+ZGlkUmVjZWl2ZUhlYWRlcnMoKm1fY3NwUmVzcG9uc2VIZWFkZXJzLCBTdHJpbmcgeyBtX3Jl
ZmVycmVyIH0sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0UGFyc2luZ0Vycm9yczo6Tm8p
OwogICAgIH0KICAgICByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGM3
NzY3ZDJjZWVkNzFhMDA0MWU2MGY5YWNhOGJiOGQyMjE3MjYzZDQuLjE0NDMwZWI3NmE0MDkzYjE0
MTRlYzFiOGY5NThiMGVhNGExMmEzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01MDksOSArNTA5LDkgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVT
dG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHNlc3Npb24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBtX2RlZmF1
bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RG
TW92ZShzZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSk7CisgICAgbV9kZWZhdWx0TmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lv
biksIFdURk1vdmUoY29va2llU3RvcmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQ
KQotICAgIG1fZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKTsKKyAgICBtX2RlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtYWtlVW5p
cXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CiAjZW5kaWYKIH0KIApAQCAtNTQxLDkgKzU0MSw5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmVuc3VyZVNlc3Npb24oY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZV
UkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0
b3JhZ2VTZXNzaW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQs
IFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Np
b24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3Rv
cmFnZSkpOwogI2VsaWYgVVNFKENVUkwpIHx8IFVTRShTT1VQKQotICAgIGFkZFJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oc2Vz
c2lvbklEKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7CiAjZW5kaWYKIH0KIApAQCAtMjQ2NCw3ICsy
NDY0LDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3
aGVyZSBkaWQgdGhpcyBQQUw6OlNlc3Npb25JRCBjb21lIGZyb20/CiAgICAgICAgIEFTU0VSVChz
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSB8fCAhcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICAKLSAg
ICAgICAgYXV0byB2YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVS
ZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKKyAgICAg
ICAgYXV0byB2YWx1ZSA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dP
cmlnaW5TdG9yZT4oKSwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklEKTsKICAgICAgICAgaWYgKG1f
c2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSkKICAgICAg
ICAgICAgIHZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
KCk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKQEAgLTI2MTEsNyArMjYxMSw3IEBAIGNsYXNzIFF1
b3RhVXNlckluaXRpYWxpemVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VRdW90YVVz
ZXIgewogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplUXVvdGFVc2VycyhTdG9yYWdl
UXVvdGFNYW5hZ2VyJiBtYW5hZ2VyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENs
aWVudE9yaWdpbiYgb3JpZ2luKQogewotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBvcmlnaW4sIHVzZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFF1b3RhVXNlckluaXRpYWxpemVyPihtYW5hZ2VyKV0oKSBtdXRh
YmxlIHsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgb3JpZ2luLCB1c2VyID0gbWFrZVVuaXF1ZTxRdW90
YVVzZXJJbml0aWFsaXplcj4obWFuYWdlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMtPmlkYlNlcnZlcihzZXNz
aW9uSUQpLmluaXRpYWxpemVRdW90YVVzZXIob3JpZ2luKTsKQEAgLTI2MjUsNyArMjYyNSw3IEBA
IFN0b3JhZ2VRdW90YU1hbmFnZXImIE5ldHdvcmtQcm9jZXNzOjpzdG9yYWdlUXVvdGFNYW5hZ2Vy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiAgICAgICAgIHJldHVybiBTdG9yYWdlUXVvdGFNYW5h
Z2VycyB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIHJldHVybiAqc3RvcmFnZVF1
b3RhTWFuYWdlcnMubWFuYWdlcnNQZXJPcmlnaW4oKS5lbnN1cmUob3JpZ2luLCBbdGhpcywgJnN0
b3JhZ2VRdW90YU1hbmFnZXJzLCBzZXNzaW9uSUQsICZvcmlnaW5dIHsKLSAgICAgICAgYXV0byBt
YW5hZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlUXVvdGFNYW5hZ2VyPihzdG9yYWdlUXVv
dGFNYW5hZ2Vycy5kZWZhdWx0UXVvdGEob3JpZ2luKSwgW3RoaXMsIHNlc3Npb25JRCwgb3JpZ2lu
XSh1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNwYWNlLCB1aW50NjRfdCBzcGFjZUlu
Y3JlYXNlLCBhdXRvIGNhbGxiYWNrKSB7CisgICAgICAgIGF1dG8gbWFuYWdlciA9IG1ha2VVbmlx
dWU8U3RvcmFnZVF1b3RhTWFuYWdlcj4oc3RvcmFnZVF1b3RhTWFuYWdlcnMuZGVmYXVsdFF1b3Rh
KG9yaWdpbiksIFt0aGlzLCBzZXNzaW9uSUQsIG9yaWdpbl0odWludDY0X3QgcXVvdGEsIHVpbnQ2
NF90IGN1cnJlbnRTcGFjZSwgdWludDY0X3Qgc3BhY2VJbmNyZWFzZSwgYXV0byBjYWxsYmFjaykg
ewogICAgICAgICAgICAgdGhpcy0+cmVxdWVzdFN0b3JhZ2VTcGFjZShzZXNzaW9uSUQsIG9yaWdp
biwgcXVvdGEsIGN1cnJlbnRTcGFjZSwgc3BhY2VJbmNyZWFzZSwgV1RGTW92ZShjYWxsYmFjaykp
OwogICAgICAgICB9KTsKICAgICAgICAgaW5pdGlhbGl6ZVF1b3RhVXNlcnMoKm1hbmFnZXIsIHNl
c3Npb25JRCwgb3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCAzMjExZTkwZjY1MTgzNmEzYjA3NmMzMjJhYWI4NjM0ODE3ZDRjNzNh
Li40MDk0YzY2OWQwODkxZjQ4ZDE0MzlhZjNhZmFlODgwYjY0ZTAyNTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xNTIsNyArMTUyLDcg
QEAgY2xhc3MgTmV0d29ya1Byb2Nlc3MgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2VzcywgcHJpdmF0
ZSBEb3dubG9hZE1hbmFnZXI6OkNsaWVudCwKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAg
ICB2b2lkIGFkZFN1cHBsZW1lbnQoKQogICAgIHsKLSAgICAgICAgbV9zdXBwbGVtZW50cy5hZGQo
VDo6c3VwcGxlbWVudE5hbWUoKSwgc3RkOjptYWtlX3VuaXF1ZTxUPigqdGhpcykpOworICAgICAg
ICBtX3N1cHBsZW1lbnRzLmFkZChUOjpzdXBwbGVtZW50TmFtZSgpLCBtYWtlVW5pcXVlPFQ+KCp0
aGlzKSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGVj
NmE4MGM4NDg5ZGVmMzJkNzg5Yjc0YmVjMTI3MzU3YmVjNTU4MzUuLjU3ZGQzMGFjMTZhNWJkYWY4
MWU3NTQ3MTM1OGI3OGQ3OTU4OTljNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBA
QCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcgogCiAgICAgaWYgKHN5bmNocm9ub3VzUmVwbHkgfHwg
cGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyB8fCBwYXJhbWV0ZXJz
Lm9wdGlvbnMua2VlcEFsaXZlKSB7CiAgICAgICAgIE5ldHdvcmtMb2FkQ2hlY2tlcjo6TG9hZFR5
cGUgcmVxdWVzdExvYWRUeXBlID0gaXNNYWluRnJhbWVMb2FkKCkgPyBOZXR3b3JrTG9hZENoZWNr
ZXI6OkxvYWRUeXBlOjpNYWluRnJhbWUgOiBOZXR3b3JrTG9hZENoZWNrZXI6OkxvYWRUeXBlOjpP
dGhlcjsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE5l
dHdvcmtMb2FkQ2hlY2tlcj4oY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLCBGZXRjaE9wdGlv
bnMgeyBtX3BhcmFtZXRlcnMub3B0aW9ucyB9LCBtX3BhcmFtZXRlcnMuc2Vzc2lvbklELCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgSFRUUEhlYWRlck1h
cCB7IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzIH0sIFVSTCB7IG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpIH0sIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4uY29weVJlZigp
LCBtX3BhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5LCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVm
ZXJyZXIoKSwgbV9wYXJhbWV0ZXJzLmlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCksIHJlcXVlc3RMb2FkVHlwZSk7CisgICAgICAgIG1f
bmV0d29ya0xvYWRDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZENoZWNrZXI+KGNvbm5l
Y3Rpb24ubmV0d29ya1Byb2Nlc3MoKSwgRmV0Y2hPcHRpb25zIHsgbV9wYXJhbWV0ZXJzLm9wdGlv
bnMgfSwgbV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIEhUVFBIZWFkZXJNYXAgeyBtX3BhcmFtZXRlcnMub3JpZ2lu
YWxSZXF1ZXN0SGVhZGVycyB9LCBVUkwgeyBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSB9LCBt
X3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLmNvcHlSZWYoKSwgbV9wYXJhbWV0ZXJzLnByZWZsaWdo
dFBvbGljeSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIG1fcGFyYW1ldGVycy5p
c0hUVFBTVXBncmFkZUVuYWJsZWQsIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cygpLCByZXF1ZXN0TG9hZFR5cGUpOwogICAgICAgICBpZiAobV9wYXJhbWV0ZXJzLmNzcFJlc3Bv
bnNlSGVhZGVycykKICAgICAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5zZXRDU1BSZXNw
b25zZUhlYWRlcnMoQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgbV9wYXJh
bWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycy52YWx1ZSgpIH0pOwogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCkBAIC0xMTksNyArMTE5LDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXIK
ICNlbmRpZgogICAgIH0KICAgICBpZiAoc3luY2hyb25vdXNSZXBseSkKLSAgICAgICAgbV9zeW5j
aHJvbm91c0xvYWREYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTeW5jaHJvbm91c0xvYWREYXRhPihX
VEZNb3ZlKHN5bmNocm9ub3VzUmVwbHkpKTsKKyAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRh
ID0gbWFrZVVuaXF1ZTxTeW5jaHJvbm91c0xvYWREYXRhPihXVEZNb3ZlKHN5bmNocm9ub3VzUmVw
bHkpKTsKIH0KIAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjp+TmV0d29ya1Jlc291cmNlTG9hZGVy
KCkKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBw
YXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IG5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0
cnkoKS5maWxlc0luQmxvYihvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSk7CiAKICAgICBwYXJhbWV0
ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwotICAgIG1fbmV0d29ya0xvYWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVn
aXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25l
dHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lv
bi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7
CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0
YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1NvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMDRlM2QwMjUyMjBkZTRjNDNjNzM2MmRhMTQxZGYzMmJh
MjAzMGZhZi4uNTkxODg1NzU3YTg0NzUxYzgzMThmN2JlNWQyNzVhN2YxMWM1YTRhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU29ja2V0Q2hhbm5lbD4gTmV0d29ya1NvY2tldENoYW5uZWw6OmNy
ZWF0ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTb2NrZXRDaGFubmVsPihjb25uZWN0aW9uLCBjb25u
ZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgcmVxdWVz
dCwgcHJvdG9jb2wsIGlkZW50aWZpZXIpOworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxO
ZXR3b3JrU29ja2V0Q2hhbm5lbD4oY29ubmVjdGlvbiwgY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vz
cygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIHJlcXVlc3QsIHByb3RvY29sLCBpZGVudGlm
aWVyKTsKICAgICBpZiAoIXJlc3VsdC0+bV9zb2NrZXQpIHsKICAgICAgICAgcmVzdWx0LT5kaWRD
bG9zZSgwLCAiQ2Fubm90IGNyZWF0ZSBhIHdlYiBzb2NrZXQgdGFzayJfcyk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcAppbmRleCBkOTBjY2NhOTgwYThlZmZjMmQ0ZjM4ZjVlM2Y2YmMwYWEyYzJlNTQ2
Li4yYzY0MjdlNjQ4MjJjZWY1ZDFhODEyMDI1ZWZkNmM4NTQ1NDFjZTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApAQCAtNTMsNyArNTMs
NyBAQCBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBOZXR3b3JrTG9hZFBhcmFtZQogICAgIH0KIAogICAgIEFTU0VSVChwYXJhbWV0
ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5lY3RPbmx5OjpZZXMpOwotICAgIG1f
bmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0
ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdvcmtM
b2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFy
YW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9u
ZVNob3QoNjAwMDBfcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCBk
Y2EyOWZkODUyNTIxNzMxMmRkYjkyNTgwZmE4YmEwNzIzYjQwYzM0Li45NjY4MjNkOGFlODc3YmRl
OWE1Y2ZhZjMwNWU1YzZiZmFlMjU1MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHAKQEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpzY2hlZHVs
ZURhdGFiYXNlVXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2Rpc2FibGVT
dWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlKQotICAgICAgICBtX2Rp
c2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyPigpOworICAgICAgICBtX2Rpc2Fi
bGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlV3JpdGluZ1RvTG9jYWxTdG9yYWdlID0gbWFrZVVuaXF1
ZTxTdWRkZW5UZXJtaW5hdGlvbkRpc2FibGVyPigpOwogCiAgICAgbV9kaWRTY2hlZHVsZURhdGFi
YXNlVXBkYXRlID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAppbmRl
eCA2MDU3YjhlMDcwOTg5NzVlMWE2YTU5ZDc0YzI3ZmY2YjVmZjE2ODFiLi4xYTE0MGRjMzlkMWQ3
Y2ZiMDJhNzhjNDlhNDA5MTA2NDFlZWQ2MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBTdG9yYWdlQXJlYSYgTG9jYWxTdG9yYWdlTmFtZXNw
YWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZ2luRGF0YSYmCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcmV0dXJuICptX3N0b3JhZ2VBcmVhTWFw
LmVuc3VyZShzZWN1cml0eU9yaWdpbiwgWyZdKCkgbXV0YWJsZSB7Ci0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VBcmVhPihpc0VwaGVtZXJhbCA9PSBJc0VwaGVtZXJhbDo6
WWVzID8gbnVsbHB0ciA6IHRoaXMsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBtX3F1b3RhSW5C
eXRlcywgV1RGTW92ZSh3b3JrUXVldWUpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U3Rv
cmFnZUFyZWE+KGlzRXBoZW1lcmFsID09IElzRXBoZW1lcmFsOjpZZXMgPyBudWxscHRyIDogdGhp
cywgV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzLCBXVEZNb3ZlKHdvcmtR
dWV1ZSkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS5jcHAKaW5kZXggZTg2ZGUyNGMzODYxMWUwZjUzYzA2MjE5YzM3
MDIwZWM1ZDAxMzEwNS4uZWUyNjdlNDRkZjYwOTc3OGJkNmUwOTY1ZTg2ZjE2MTJlMmY0YjMzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1Nlc3Np
b25TdG9yYWdlTmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBA
IFN0b3JhZ2VBcmVhJiBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVTdG9yYWdl
QXJlYShTZWN1cml0eU9yaWdpbkRhdGEmCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgcmV0dXJuICptX3N0b3JhZ2VBcmVhTWFwLmVuc3VyZShzZWN1cml0eU9yaWdpbiwg
WyZdKCkgbXV0YWJsZSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VB
cmVhPihudWxscHRyLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgbV9xdW90YUluQnl0ZXMsIFdU
Rk1vdmUod29ya1F1ZXVlKSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFN0b3JhZ2VBcmVh
PihudWxscHRyLCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgbV9xdW90YUluQnl0ZXMsIFdURk1v
dmUod29ya1F1ZXVlKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhLmNwcAppbmRleCBmMWI1YTJiMjZmZjE1NWViODM2NTg5MzY1ZDllYjIwMGIxZDY5NTc0Li4z
ZjA4NDYwZmQzYzQ1OGNhOWE2MWNmNTQ5ZDQzNjIwMTk5MmE1NGJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAK
QEAgLTgzLDcgKzgzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdlQXJl
YTo6Y2xvbmUoKSBjb25zdAogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFT
U0VSVCghbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwogCi0gICAgYXV0byBzdG9yYWdlQXJlYSA9
IHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZUFyZWE+KG51bGxwdHIsIG1fc2VjdXJpdHlPcmlnaW4s
IG1fcXVvdGFJbkJ5dGVzLCBtX3F1ZXVlLmNvcHlSZWYoKSk7CisgICAgYXV0byBzdG9yYWdlQXJl
YSA9IG1ha2VVbmlxdWU8U3RvcmFnZUFyZWE+KG51bGxwdHIsIG1fc2VjdXJpdHlPcmlnaW4sIG1f
cXVvdGFJbkJ5dGVzLCBtX3F1ZXVlLmNvcHlSZWYoKSk7CiAgICAgc3RvcmFnZUFyZWEtPm1fc3Rv
cmFnZU1hcCA9IG1fc3RvcmFnZU1hcDsKIAogICAgIHJldHVybiBzdG9yYWdlQXJlYTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwCmluZGV4IDUyYzIxMzU4MjQ5YmUzYmE5NmEzNGYxMDc3ZTFlNjY4ODgwMWZi
ZDkuLjc4MzE4YmMzZGU1MjkzNjNlOGYyZDA3ZGQ1YmUwMjMxZWNhNzgxZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsCiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX3Nlc3Npb25TdG9yYWdlTmFtZXNw
YWNlcy5lbnN1cmUoc3RvcmFnZU5hbWVzcGFjZUlELCBbcXVvdGFJbkJ5dGVzXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPihxdW90YUlu
Qnl0ZXMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZT4ocXVvdGFJbkJ5dGVzKTsKICAgICB9KTsKIH0KIApAQCAtMjMyLDcgKzIzMiw3IEBAIExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJu
IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy5lbnN1cmUoc3RvcmFnZU5hbWVzcGFjZUlELCBbdGhp
cywgc3RvcmFnZU5hbWVzcGFjZUlEXSgpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPigqdGhpcywgc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPigqdGhpcywgc3Rv
cmFnZU5hbWVzcGFjZUlEKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKQEAg
LTI0NCw3ICsyNDQsNyBAQCBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VN
YW5hZ2VyOjpnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIHJldHVybiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXMu
ZW5zdXJlKHsgc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luKSB9LCBb
XSB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZT4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlPigpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIApA
QCAtMjU3LDcgKzI1Nyw3IEBAIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdl
cjo6Z2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50CiAKICAgICByZXR1cm4g
bV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuZW5zdXJlKHN0b3JhZ2VOYW1lc3BhY2VJRCwgW10g
ewogICAgICAgICAvLyBXZSBjdXJyZW50bHkgaGF2ZSBubyBsaW1pdCBvbiBzZXNzaW9uIHN0b3Jh
Z2UuCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4oc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCmluZGV4IGM5ZjQ1MTZkN2Y5MzM0ZTNjNzg3YjgwMjVi
NDE5ZTc1ZjU4OGY5Y2IuLmUwMTEwZWFhODA5YzVkNzYyODk5N2ZkMTZjNzU2ZmEzMDg1Mzc0YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFN0b3Jh
Z2VNYW5hZ2VyU2V0OjphZGQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGxvY2FsU3RvcmFnZQogCiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlc3Npb25JRCwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgbV9zdG9yYWdlTWFuYWdlcnMuZW5zdXJlKHNlc3Npb25JRCwgWyZdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZU1hbmFn
ZXI+KFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0b3J5KSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U3RvcmFnZU1hbmFnZXI+KFdURk1vdmUobG9jYWxTdG9yYWdlRGlyZWN0
b3J5KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1RyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAppbmRleCA2ZWFkZTIyMTI2ZmIx
MDRhZWQwMjMyYmMxYTFmYzUzM2Y1OTUyMGI3Li5kMDJlM2JmMzM1YmVlZTdiZmZlYzcyNzBjMjRm
NjY1YWU5Nzk1Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBTdG9yYWdlQXJlYSYgVHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlOjpnZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFNlY3VyaXR5T3JpZwogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHJldHVybiAqbV9zdG9yYWdlQXJl
YU1hcC5lbnN1cmUoc2VjdXJpdHlPcmlnaW4sIFsmXSgpIG11dGFibGUgewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlQXJlYT4obnVsbHB0ciwgV1RGTW92ZShzZWN1cml0
eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzLCBXVEZNb3ZlKHdvcmtRdWV1ZSkpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTdG9yYWdlQXJlYT4obnVsbHB0ciwgV1RGTW92ZShzZWN1cml0eU9y
aWdpbiksIG1fcXVvdGFJbkJ5dGVzLCBXVEZNb3ZlKHdvcmtRdWV1ZSkpOwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDNlOWQxN2Q2MDJkMzQxNzcwMzNjOTMz
OGI0YmJlNmRhMGJhYmE4YTQuLmIwODNkNWQzMmE1MWU2MWRhNDM3NmRmOTQ0NmVmMTExNGVhNmJm
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKQEAgLTg0LDE3ICs4NCwxNyBAQCBDYWNoZTo6Q2FjaGUoTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBSZWY8U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8Qwog
ewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAg
ICBpZiAob3B0aW9ucy5jb250YWlucyhDYWNoZU9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24pKSB7Ci0gICAgICAgIG1fbG93UG93ZXJNb2RlTm90aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9k
ZUVuYWJsZWQpIHsKKyAgICAgICAgbV9sb3dQb3dlck1vZGVOb3RpZmllciA9IG1ha2VVbmlxdWU8
V2ViQ29yZTo6TG93UG93ZXJNb2RlTm90aWZpZXI+KFt0aGlzXShib29sIGlzTG93UG93ZXJNb2Rl
RW5hYmxlZCkgewogICAgICAgICAgICAgQVNTRVJUKFdURjo6UnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgICAgICAgICAgaWYgKGlzTG93UG93ZXJNb2RlRW5hYmxlZCkKICAgICAgICAgICAgICAgICBt
X3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBudWxscHRyOwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIpOwotICAgICAg
ICAgICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcj4oKnRoaXMsIG1fc3RvcmFnZS5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSk7CiAgICAgICAgIGlmICghbV9sb3dQb3dlck1vZGVOb3RpZmllci0+aXNMb3dQb3dlck1v
ZGVFbmFibGVkKCkpCi0gICAgICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI+KCp0aGlzLCBtX3N0b3JhZ2UuZ2V0
KCkpOworICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbWFrZVVuaXF1ZTxT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyPigqdGhpcywgbV9zdG9yYWdlLmdldCgpKTsKICAgICB9CiAj
ZW5kaWYKIApAQCAtMzc1LDEyICszNzUsMTIgQEAgdm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2
ZShSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAg
ICAKIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0
YSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJl
cXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0
VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+
KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwg
V2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVz
dCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJl
cXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWlu
Z1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCks
IHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VD
YWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29s
bGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC00NTcsNyArNDU3LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6dXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXEKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gZXhp
c3RpbmdFbnRyeS5yZXNwb25zZSgpOwogICAgIFdlYkNvcmU6OnVwZGF0ZVJlc3BvbnNlSGVhZGVy
c0FmdGVyUmV2YWxpZGF0aW9uKHJlc3BvbnNlLCB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCi0gICAg
YXV0byB1cGRhdGVFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KGV4aXN0aW5nRW50cnku
a2V5KCksIHJlc3BvbnNlLCBleGlzdGluZ0VudHJ5LmJ1ZmZlcigpLCBXZWJDb3JlOjpjb2xsZWN0
VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCksIG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICBhdXRvIHVwZGF0ZUVudHJ5
ID0gbWFrZVVuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0
aW5nRW50cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMo
bmV0d29ya1Byb2Nlc3MoKS5kZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgb3JpZ2luYWxSZXF1ZXN0
LCByZXNwb25zZSkpOwogICAgIGF1dG8gdXBkYXRlUmVjb3JkID0gdXBkYXRlRW50cnktPmVuY29k
ZUFzU3RvcmFnZVJlY29yZCgpOwogCiAgICAgbV9zdG9yYWdlLT5zdG9yZSh1cGRhdGVSZWNvcmQs
IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IDdhZTFjMmZlN2RjZTYwN2I5ZjhhNTNkOTlhMWJk
Nzk4NTM5OWJjZjEuLjFmNDE0NGE4ZmFlODdiZjVmYzVjODNlZDkwMmI2ZmYwOGEwNjRhZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5
OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IEVudHJ5OjpkZWNvZGVTdG9yYWdlUmVjb3JkKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFn
ZUVudHJ5KQogewotICAgIGF1dG8gZW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihzdG9y
YWdlRW50cnkpOworICAgIGF1dG8gZW50cnkgPSBtYWtlVW5pcXVlPEVudHJ5PihzdG9yYWdlRW50
cnkpOwogCiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKHN0b3JhZ2VFbnRy
eS5oZWFkZXIuZGF0YSgpLCBzdG9yYWdlRW50cnkuaGVhZGVyLnNpemUoKSk7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShlbnRyeS0+bV9yZXNwb25zZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKaW5kZXggOTRiNjA2OGEwZGZlZDc0MmZhZmZkZTU3Njg4NzA1YWU3YTQ2MjAx
Yi4uYmI5N2M3YTNmMjc2MTc2ZDA5ZmY0ODM1YjJmM2I5N2VmMmU1OGZhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNTksNyArNTksNyBAQCBTcGVjdWxhdGl2ZUxv
YWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGds
b2JhbEZyYW1lSQogICAgIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gQ29udGVu
dFNuaWZmaW5nUG9saWN5OjpEb05vdFNuaWZmQ29udGVudDsKICAgICBwYXJhbWV0ZXJzLmNvbnRl
bnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6
OlNuaWZmOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IG1fb3JpZ2luYWxSZXF1ZXN0OwotICAg
IG1fbmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVs
bHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29y
a1Nlc3Npb24oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOworICAgIG1fbmV0
d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkpOwogfQogCiBTcGVjdWxhdGl2ZUxvYWQ6
On5TcGVjdWxhdGl2ZUxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5jcHAKaW5kZXggMWNkNmI0OTJmODFhNWE4MWQyNGNhNzkxMDhkYTZiMTllMGMwMDNm
MS4uNTdlOGU3NTk5YjFjY2E2NWIyNmUwNmVjMzg3MmVlMmRkOTQ5ZGY2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCkBAIC0xNzQsNyArMTc0LDcg
QEAgY2xhc3MgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UGVuZGluZ0ZyYW1lTG9hZCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFBlbmRpbmdGcmFtZUwKICAgICB2b2lkIHJlZ2lzdGVyU3VicmVzb3VyY2VM
b2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiBzdWJyZXNvdXJj
ZUtleSkKICAgICB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAg
IG1fc3VicmVzb3VyY2VMb2Fkcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTdWJyZXNvdXJjZUxv
YWQ+KHJlcXVlc3QsIHN1YnJlc291cmNlS2V5KSk7CisgICAgICAgIG1fc3VicmVzb3VyY2VMb2Fk
cy5hcHBlbmQobWFrZVVuaXF1ZTxTdWJyZXNvdXJjZUxvYWQ+KHJlcXVlc3QsIHN1YnJlc291cmNl
S2V5KSk7CiAgICAgICAgIG1fbG9hZEh5c3RlcmVzaXNBY3Rpdml0eS5pbXB1bHNlKCk7CiAgICAg
fQogCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXRy
aWV2ZShjb25zdCBLZXkmIHN0b3JhZ2VLZXksIFJldHJpZXZlQ29tcGxldGlvbkgKICAgICBBU1NF
UlQobV9wZW5kaW5nUHJlbG9hZHMuY29udGFpbnMoc3RvcmFnZUtleSkpOwogICAgIC8vIEZJWE1F
OiBUaGlzIGJyZWFrcyBpbmNyZW1lbnRhbCBsb2FkaW5nIHdoZW4gdGhlIHJldmFsaWRhdGlvbiBp
cyBub3Qgc3VjY2Vzc2Z1bC4KICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcGVuZGluZ1JldHJpZXZl
UmVxdWVzdHMuZW5zdXJlKHN0b3JhZ2VLZXksIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8VmVjdG9yPFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXI+PigpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlcj4+KCk7CiAg
ICAgfSk7CiAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OmFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50
cnksIGNvbgogICAgIEFTU0VSVChlbnRyeSk7CiAgICAgQVNTRVJUKCFlbnRyeS0+bmVlZHNWYWxp
ZGF0aW9uKCkpOwogICAgIGF1dG8ga2V5ID0gZW50cnktPmtleSgpOwotICAgIG1fcHJlbG9hZGVk
RW50cmllcy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPFByZWxvYWRlZEVudHJ5PihXVEZNb3Zl
KGVudHJ5KSwgV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3RoaXMsIGtleSwgZnJhbWVJ
RF0geworICAgIG1fcHJlbG9hZGVkRW50cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPFByZWxvYWRl
ZEVudHJ5PihXVEZNb3ZlKGVudHJ5KSwgV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgW3Ro
aXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICBhdXRvIHByZWxvYWRlZEVudHJ5ID0gbV9wcmVs
b2FkZWRFbnRyaWVzLnRha2Uoa2V5KTsKICAgICAgICAgQVNTRVJUKHByZWxvYWRlZEVudHJ5KTsK
ICAgICAgICAgaWYgKHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpKQpAQCAtNDQ5LDcg
KzQ0OSw3IEBAIGJvb2wgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c2F0aXNmeVBlbmRpbmdSZXF1
ZXN0cyhjb25zdCBLZXkmIGtleSwgRW50cnkqIGVudHJ5CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGZvciAoYXV0byYgY29tcGxldGlvbkhhbmRsZXIgOiAqY29tcGxldGlvbkhhbmRsZXJz
KQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbnRyeSA/IHN0ZDo6bWFrZV91bmlxdWU8RW50
cnk+KCplbnRyeSkgOiBudWxscHRyKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW50cnkg
PyBtYWtlVW5pcXVlPEVudHJ5PigqZW50cnkpIDogbnVsbHB0cik7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJl
dmFsaWRhdGVTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlcwogCiAgICAg
TE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2Vzcykg
U3BlY3VsYXRpdmVseSByZXZhbGlkYXRpbmcgJyVzJzoiLCBrZXkuaWRlbnRpZmllcigpLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgYXV0byByZXZhbGlkYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8U3Bl
Y3VsYXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZN
b3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CisgICAgYXV0byByZXZhbGlk
YXRvciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZh
bGlkYXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9u
UmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5
KSB7CiAgICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCAhcmV2YWxpZGF0ZWRFbnRy
eS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkg
fHwgcmV2YWxpZGF0ZWRFbnRyeS0+a2V5KCkgPT0ga2V5KTsKIApAQCAtNTU5LDcgKzU1OSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlv
bihjb25zdCBHbG9iYWxGcmFtZUlEJiBmCiAgICAgICAgICAgICBwcmVsb2FkRW50cnkoa2V5LCBz
dWJyZXNvdXJjZUluZm8sIGZyYW1lSUQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExP
RyhOZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5v
dCBwcmVsb2FkaW5nICclcycgYmVjYXVzZSBpdCBpcyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwga2V5
LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIG1fbm90UHJlbG9hZGVk
RW50cmllcy5hZGQoa2V5LCBzdGQ6Om1ha2VfdW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBr
ZXksIGZyYW1lSURdIHsKKyAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50cmllcy5hZGQoa2V5
LCBtYWtlVW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1lSURdIHsKICAgICAg
ICAgICAgICAgICBsb2dTcGVjdWxhdGl2ZUxvYWRpbmdEaWFnbm9zdGljTWVzc2FnZShtX2NhY2hl
Lm5ldHdvcmtQcm9jZXNzKCksIGZyYW1lSUQsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZW50cnlS
aWdodGx5Tm90V2FybWVkVXBLZXkoKSk7CiAgICAgICAgICAgICAgICAgbV9ub3RQcmVsb2FkZWRF
bnRyaWVzLnJlbW92ZShrZXkpOwogICAgICAgICAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAK
aW5kZXggYmJmYzY0OTg5MGY5NWNjN2UwNGNlODJhNGZlMzI5NDRkYzFhYjFmMC4uODA0YzQyOThj
YzNlM2MyODE0ZmRiYzJiYmI2Y2JlZTU3NTg0YWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBA
IC0yOTAsOCArMjkwLDggQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAgICAgTE9HKE5l
dHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIHN5bmNocm9uaXppbmcgY2FjaGUi
KTsKIAogICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcmVjb3JkRmls
dGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKLSAgICAgICAgYXV0byBi
bG9iRmlsdGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50c0ZpbHRlcj4oKTsKKyAgICAgICAg
YXV0byByZWNvcmRGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOworICAgICAg
ICBhdXRvIGJsb2JGaWx0ZXIgPSBtYWtlVW5pcXVlPENvbnRlbnRzRmlsdGVyPigpOwogCiAgICAg
ICAgIC8vIE1vc3Qgb2YgdGhlIGRpc2sgc3BhY2UgdXNhZ2UgaXMgaW4gYmxvYnMgaWYgd2UgYXJl
IHVzaW5nIHRoZW0uIEFwcHJveGltYXRlIHJlY29yZHMgZmlsZSBzaXplcyB0byBhdm9pZCBleHBl
bnNpdmUgc3RhdCgpIGNhbGxzLgogICAgICAgICBzaXplX3QgcmVjb3Jkc1NpemUgPSAwOwpAQCAt
NDg5LDcgKzQ4OSw3IEBAIHZvaWQgU3RvcmFnZTo6cmVhZFJlY29yZChSZWFkT3BlcmF0aW9uJiBy
ZWFkT3BlcmF0aW9uLCBjb25zdCBEYXRhJiByZWNvcmREYXRhKQogICAgIH0KIAogICAgIHJlYWRP
cGVyYXRpb24uZXhwZWN0ZWRCb2R5SGFzaCA9IG1ldGFEYXRhLmJvZHlIYXNoOwotICAgIHJlYWRP
cGVyYXRpb24ucmVzdWx0UmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+
KFN0b3JhZ2U6OlJlY29yZCB7CisgICAgcmVhZE9wZXJhdGlvbi5yZXN1bHRSZWNvcmQgPSBtYWtl
VW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3JkIHsKICAgICAgICAgbWV0YURh
dGEua2V5LAogICAgICAgICBtZXRhRGF0YS50aW1lU3RhbXAsCiAgICAgICAgIGhlYWRlckRhdGEs
CkBAIC03NTgsNyArNzU4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgcmV0cmlldmVGcm9t
TWVtb3J5KGNvbnN0IFQmIG9wZXJhdGlvbnMsIGNvbnN0IEtleSYga2V5LAogICAgICAgICBpZiAo
b3BlcmF0aW9uLT5yZWNvcmQua2V5ID09IGtleSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtD
YWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGZvdW5kIHdyaXRlIG9wZXJhdGlvbiBpbiBw
cm9ncmVzcyIpOwogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtyZWNvcmQg
PSBvcGVyYXRpb24tPnJlY29yZCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KHJlY29yZCksIHsgfSk7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+
KHJlY29yZCksIHsgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBTdG9yYWdlOjpyZXRyaWV2ZShj
b25zdCBLZXkmIGtleSwgdW5zaWduZWQgcHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlvbkhhbmQK
ICAgICBpZiAocmV0cmlldmVGcm9tTWVtb3J5KG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLCBrZXks
IGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWFkT3Bl
cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkT3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byByZWFkT3BlcmF0aW9uID0gbWFrZVVu
aXF1ZTxSZWFkT3BlcmF0aW9uPigqdGhpcywga2V5LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAKICAgICByZWFkT3BlcmF0aW9uLT50aW1pbmdzLnN0YXJ0VGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOwogICAgIHJlYWRPcGVyYXRpb24tPnRpbWluZ3MuZGlzcGF0Y2hDb3VudEF0U3Rh
cnQgPSBtX3JlYWRPcGVyYXRpb25EaXNwYXRjaENvdW50OwpAQCAtODc5LDcgKzg3OSw3IEBAIHZv
aWQgU3RvcmFnZTo6c3RvcmUoY29uc3QgUmVjb3JkJiByZWNvcmQsIE1hcHBlZEJvZHlIYW5kbGVy
JiYgbWFwcGVkQm9keUhhbmRsZXIsCiAgICAgaWYgKCFtX2NhcGFjaXR5KQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIHdyaXRlT3BlcmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZU9w
ZXJhdGlvbj4oKnRoaXMsIHJlY29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlciksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBhdXRvIHdyaXRlT3BlcmF0aW9uID0gbWFrZVVu
aXF1ZTxXcml0ZU9wZXJhdGlvbj4oKnRoaXMsIHJlY29yZCwgV1RGTW92ZShtYXBwZWRCb2R5SGFu
ZGxlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBtX3BlbmRpbmdXcml0ZU9w
ZXJhdGlvbnMucHJlcGVuZChXVEZNb3ZlKHdyaXRlT3BlcmF0aW9uKSk7CiAKICAgICAvLyBBZGQg
a2V5IHRvIHRoZSBmaWx0ZXIgYWxyZWFkeSBoZXJlIGFzIHdlIGRvIGxvb2t1cHMgZnJvbSB0aGUg
cGVuZGluZyBvcGVyYXRpb25zIHRvby4KQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIFN0b3JhZ2U6
OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxh
Z3MsIFRyYXZlcgogICAgIEFTU0VSVCh0cmF2ZXJzZUhhbmRsZXIpOwogICAgIC8vIEF2b2lkIG5v
bi10aHJlYWQgc2FmZSBGdW5jdGlvbiBjb3BpZXMuCiAKLSAgICBhdXRvIHRyYXZlcnNlT3BlcmF0
aW9uUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxUcmF2ZXJzZU9wZXJhdGlvbj4obWFrZVJlZigqdGhp
cyksIHR5cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikpOworICAgIGF1dG8gdHJh
dmVyc2VPcGVyYXRpb25QdHIgPSBtYWtlVW5pcXVlPFRyYXZlcnNlT3BlcmF0aW9uPihtYWtlUmVm
KCp0aGlzKSwgdHlwZSwgZmxhZ3MsIFdURk1vdmUodHJhdmVyc2VIYW5kbGVyKSk7CiAgICAgYXV0
byYgdHJhdmVyc2VPcGVyYXRpb24gPSAqdHJhdmVyc2VPcGVyYXRpb25QdHI7CiAgICAgbV9hY3Rp
dmVUcmF2ZXJzZU9wZXJhdGlvbnMuYWRkKFdURk1vdmUodHJhdmVyc2VPcGVyYXRpb25QdHIpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAppbmRleCA3Yjg4OTIyOTk1
MzlkYjM0YzViMzkxNGQzYjIxNGNlOGI4MTQzYjk4Li42M2FkMDQwOWZkZDIzNmY2ZTNjMmNhMzBl
ODdlNGE3YzBhMjk1OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNw
cApAQCAtOTMsNyArOTMsNyBAQCBTdG9yYWdlOjpSZWNvcmQgU3VicmVzb3VyY2VzRW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJj
ZXNFbnRyeT4gU3VicmVzb3VyY2VzRW50cnk6OmRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3Rv
cmFnZTo6UmVjb3JkJiBzdG9yYWdlRW50cnkpCiB7Ci0gICAgYXV0byBlbnRyeSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U3VicmVzb3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CisgICAgYXV0byBlbnRy
eSA9IG1ha2VVbmlxdWU8U3VicmVzb3VyY2VzRW50cnk+KHN0b3JhZ2VFbnRyeSk7CiAKICAgICBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoc3RvcmFnZUVudHJ5LmhlYWRlci5kYXRh
KCksIHN0b3JhZ2VFbnRyeS5oZWFkZXIuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGVudHJ5LT5tX3N1YnJlc291cmNlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAppbmRleCBkOGEwNTk0MGQ3MTk3ZWIzMjI1
YTM2YmM1MTNhMmRiNjEwZGIwY2Q4Li43MTA0ZDFmNzRjZDcwMWNiY2VjZmFiNTdkMjRlYmZmOGRh
ZWJlZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1By
ZWZldGNoQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5jcHAKQEAgLTczLDggKzczLDggQEAgc3RhdGljIGNvbnN0IFNlY29uZHMg
ZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIHZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29u
c3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9z
ZXNzaW9uUHJlZmV0Y2hlcykKLSAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9z
ZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJlcXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8UHJlZmV0
Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAg
ICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFw
PigpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9uUHJlZmV0Y2hlcy0+YWRkKHJlcXVl
c3RVcmwsIG1ha2VVbmlxdWU8UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVzcG9uc2Up
LCBXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICAvLyBMaW1pdCBwcmVmZXRjaGVzIGZvciBzYW1lIHVy
bCB0byAxLgogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsK
QEAgLTg2LDkgKzg2LDkgQEAgdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJl
cXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXMKIHZvaWQgUHJlZmV0Y2hD
YWNoZTo6c3RvcmVSZWRpcmVjdChjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZWRpcmVjdFJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQotICAg
ICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVmZXRjaEVudHJp
ZXNNYXA+KCk7CisgICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZl
dGNoRW50cmllc01hcD4oKTsKICAgICByZWRpcmVjdFJlcXVlc3QuY2xlYXJQdXJwb3NlKCk7Ci0g
ICAgbV9zZXNzaW9uUHJlZmV0Y2hlcy0+c2V0KHJlcXVlc3RVcmwsIHN0ZDo6bWFrZV91bmlxdWU8
UHJlZmV0Y2hDYWNoZTo6RW50cnk+KFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUo
cmVkaXJlY3RSZXF1ZXN0KSkpOworICAgIG1fc2Vzc2lvblByZWZldGNoZXMtPnNldChyZXF1ZXN0
VXJsLCBtYWtlVW5pcXVlPFByZWZldGNoQ2FjaGU6OkVudHJ5PihXVEZNb3ZlKHJlZGlyZWN0UmVz
cG9uc2UpLCBXVEZNb3ZlKHJlZGlyZWN0UmVxdWVzdCkpKTsKICAgICBtX3Nlc3Npb25FeHBpcmF0
aW9uTGlzdC5hcHBlbmQoc3RkOjptYWtlX3R1cGxlKHJlcXVlc3RVcmwsIFdhbGxUaW1lOjpub3co
KSkpOwogICAgIGlmICghbV9leHBpcmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9l
eHBpcmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KGV4cGlyYXRpb25UaW1lb3V0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3ND
b2NvYS5tbQppbmRleCAwNzdmMTZmYTY1MDY1MmM3ODdhNmYwMzE2MDkwOTAyNjhlYmI4YWMwLi5j
Y2UyNmFjZmIwNGNmNzA3NGU3NjNmNWJiYzhlNGE1ZTk4YTE1YzlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKIAogc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6
OnBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNz
aW9uSUQoKSk7CiB9CiAKIFJldGFpblB0cjxDRkRhdGFSZWY+IE5ldHdvcmtQcm9jZXNzOjpzb3Vy
Y2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0CkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgp
CiBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlciYgTmV0d29ya1Byb2Nlc3M6Om5ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyKCkKIHsKICAgICBpZiAoIW1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNr
ZXIpCi0gICAgICAgIG1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyPigpOworICAgICAgICBtX25ldHdvcmtIVFRQ
U1VwZ3JhZGVDaGVja2VyID0gbWFrZVVuaXF1ZTxOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcj4o
KTsKICAgICByZXR1cm4gKm1fbmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQppbmRleCA0YTYxZGYxNGRjZmYyZTZjM2QwZTA5MGVkM2U1MWNiNjAzMTVlNjQ0
Li40Njg2ODkzNWM2YzY0MmMyMDQ4Mjg4ZmJlMzg3OTAzYzAxMjgyMDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC04MDIsNyArODAyLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Np
b24gKilzZXNzaW9uIGRhdGFUYXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGEKICAgICAg
ICAgUmVmPE5ldHdvcmtEYXRhVGFza0NvY29hPiBwcm90ZWN0ZWROZXR3b3JrRGF0YVRhc2soKm5l
dHdvcmtEYXRhVGFzayk7CiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFz
ay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsKICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2VyID0g
X3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRNYW5hZ2VyKCk7Ci0gICAgICAgIGF1
dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2Fk
TWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCks
IG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgICAgIGF1dG8gZG93
bmxvYWQgPSBtYWtlVW5pcXVlPFdlYktpdDo6RG93bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93
bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRh
VGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJh
bnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZCgqZG93bmxvYWQpOwogICAgICAgICBBU1NF
UlQoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9h
ZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG5l
dHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CkBAIC04OTcsNyArODk3
LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Np
b24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1By
b2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lvbkNvY29hPihuZXR3b3Jr
UHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TmV0
d29ya1Nlc3Npb25Db2NvYT4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOwog
fQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwcm94eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRw
UHJveHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eSkKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjcmVhdGVXZWJT
b2NrZXRUYXNrKE5ldHdvcmtTCiB7CiAgICAgLy8gRklYTUU6IFVzZSBwcm90b2NvbC4KICAgICBS
ZXRhaW5QdHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzaz4gdGFzayA9IFttX3Nlc3Npb25XaXRo
Q3JlZGVudGlhbFN0b3JhZ2UuZ2V0KCkgd2ViU29ja2V0VGFza1dpdGhSZXF1ZXN0OiByZXF1ZXN0
Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVI
VFRQQm9keSldOwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvY2tldFRhc2s+KGNo
YW5uZWwsIFdURk1vdmUodGFzaykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRh
c2s+KGNoYW5uZWwsIFdURk1vdmUodGFzaykpOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29j
b2E6OmFkZFdlYlNvY2tldFRhc2soV2ViU29ja2V0VGFzayYgdGFzaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAK
aW5kZXggYmU2ODAxZjMwY2RmNDkwMDI1NGMyMjRiOWIxMWZiZGY3M2ZlMmUzMS4uNWJlMTcwMjY2
ZjQ1YjhiZjcyZWY1NmIxMDA4N2NiNTliYjU2ZGJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKIAogc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtQ3Jl
YXRlRGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFsbG93U3BlY2lmaWNIVFRQU0NlcnRpZmljYXRlRm9y
SG9zdChjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgU3RyaW5n
JiBob3N0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtTZXNzaW9uQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtTZXNzaW9uQ3VybC5oCmluZGV4IGQ0NzA5YTVlNGFjOGEyZmI2YWNlYjU2YzU3ZWJmMGI1
Yzc0MGQ0NTYuLmUxOGE0MzkwYjE4OGEyN2U5MzE4YzUyNDA0NTVmMDY0Y2Y2YmQ2NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrU2Vzc2lvbkN1
cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Nlc3Np
b25DdXJsLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25DdXJsIGZpbmFs
IDogcHVibGljIE5ldHdvcmtTZXNzaW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU2Vzc2lvbkN1cmw+KG5l
dHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8TmV0d29ya1Nlc3Npb25DdXJsPihuZXR3b3JrUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7CiAgICAgfQogICAgIE5ldHdvcmtTZXNzaW9uQ3VybChOZXR3b3JrUHJvY2VzcyYsIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIH5OZXR3b3JrU2Vzc2lvbkN1
cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0KaW5kZXggMjM3NDUy
ODhhMDZkMDExNDU5MTk2OGI1MDg2ZGViNWY0NWFhMGFjNi4uYzhiODZjNTExMTM3ZTM3NGVjMGJl
MGMwZWI1YjNmZWI0ZjA5YmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NJ
T1MubW0KQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSYgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBheW1lbnRDb29y
ZGluYXRvcigpCiB7CiAgICAgaWYgKCFtX3BheW1lbnRDb29yZGluYXRvcikKLSAgICAgICAgbV9w
YXltZW50Q29vcmRpbmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5PigqdGhpcyk7CisgICAgICAgIG1fcGF5bWVudENvb3JkaW5hdG9yID0gbWFrZVVuaXF1
ZTxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4oKnRoaXMpOwogICAgIHJldHVybiAqbV9wYXlt
ZW50Q29vcmRpbmF0b3I7CiB9CiAKQEAgLTgyLDcgKzgyLDcgQEAgY29uc3QgU3RyaW5nJiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yU291cmNlQXBwbGlj
YXRpb24KIAogc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXph
dGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYgY29vcmRpbmF0b3IsIFBL
UGF5bWVudFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPihjb29yZGluYXRvciwgcmVxdWVzdCk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25Db250cm9sbGVyPihjb29y
ZGluYXRvciwgcmVxdWVzdCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGQ0NmM1MDNkODFlOTgzNGU1ZDJhMjU2NjBj
ODcyM2VhZTdlMTcwZWMuLjRmYWNjODIxM2VmODUwNWNmOWQ1NDhiMjNjNTY2ZGQzZDBiZTBhYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTg5Nyw3ICs4OTcsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza1NvdXA6OmRvd25sb2FkKCkKICAgICBtX2Rvd25sb2FkT3V0cHV0U3RyZWFtID0gYWRvcHRH
UmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7CiAKICAgICBhdXRv
JiBkb3dubG9hZE1hbmFnZXIgPSBtX3Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93bmxvYWRN
YW5hZ2VyKCk7Ci0gICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+
KGRvd25sb2FkTWFuYWdlciwgbV9wZW5kaW5nRG93bmxvYWRJRCwgKnRoaXMsIG1fc2Vzc2lvbi0+
c2Vzc2lvbklEKCksIHN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIGF1dG8gZG93bmxvYWQgPSBt
YWtlVW5pcXVlPERvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIG1fcGVuZGluZ0Rvd25sb2FkSUQs
ICp0aGlzLCBtX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBzdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAg
ICBhdXRvKiBkb3dubG9hZFB0ciA9IGRvd25sb2FkLmdldCgpOwogICAgIGRvd25sb2FkTWFuYWdl
ci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhtX3BlbmRpbmdEb3dubG9hZElELCBXVEZNb3Zl
KGRvd25sb2FkKSk7CiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVu
ZGluZ0Rvd25sb2FkTG9jYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAppbmRleCA4M2MyZjI4ZWE1Yzcw
MzRkYWE3ZGI2NDYyMWI0NDRlZGQ1ZDk2YWY5Li43YTc0ODFmN2Q0MjVmMDIzMzdhMGMxMGFkZjlk
NjU0ZjcwZWM3ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5l
dHdvcmtQcm9jZXNzQ3JlYXRpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+
KFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNv
dXAuY3BwCmluZGV4IDMwZmM4YTUzNTVkMDg0NTJhYzM2MWIxZGNlYTk3Yzg0ZjM2MDdmZWQuLjQw
NzM2MWYwMzZlNzk4OTE3NjdkODA3ZmJiNjNjOTA0NGIyNjBhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrU2Vzc2lvblNvdXAuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOZXR3b3JrU2Vz
c2lvblNvdXA6Ok5ldHdvcmtTZXNzaW9uU291cChOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nl
c3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6
IE5ldHdvcmtTZXNzaW9uKG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzKQotICAgICwgbV9uZXR3
b3JrU2Vzc2lvbihzdGQ6Om1ha2VfdW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lvbj4obV9zZXNzaW9u
SUQpKQorICAgICwgbV9uZXR3b3JrU2Vzc2lvbihtYWtlVW5pcXVlPFNvdXBOZXR3b3JrU2Vzc2lv
bj4obV9zZXNzaW9uSUQpKQogewogICAgIGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCk7CiAgICAgQVNTRVJUKHN0b3JhZ2VTZXNzaW9uKTsKQEAgLTEyNCw3ICsx
MjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Tb3Vw
OjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTbwogICAgIHJlcXVlc3QudXBkYXRlU291cE1l
c3NhZ2Uoc291cE1lc3NhZ2UuZ2V0KCksIGJsb2JSZWdpc3RyeSgpKTsKICAgICBpZiAocmVxdWVz
dC51cmwoKS5wcm90b2NvbElzKCJ3c3MiKSkKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzb3Vw
TWVzc2FnZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKHdlYlNvY2tldE1lc3Nh
Z2VOZXR3b3JrRXZlbnRDYWxsYmFjayksIG51bGxwdHIpOwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHNvdXBTZXNzaW9uKCksIHNvdXBNZXNzYWdl
LmdldCgpLCBwcm90b2NvbCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4o
Y2hhbm5lbCwgc291cFNlc3Npb24oKSwgc291cE1lc3NhZ2UuZ2V0KCksIHByb3RvY29sKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmgKaW5kZXggZjllZjRiYjU0MzBiYmY3
M2IwNGEwZTNiZWMyNDc5MjhkNTllNzE2Yi4uNDY2YjI3ODJiZjkzYzc3MDcwZjc5N2RkMzY1MjM0
Y2MxZGUzZmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtTZXNzaW9uU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrU2Vzc2lvblNvdXAuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBOZXR3b3Jr
U2Vzc2lvblNvdXAgZmluYWwgOiBwdWJsaWMgTmV0d29ya1Nlc3Npb24gewogcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1Nlc3Npb24+IGNyZWF0ZShOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtTZXNzaW9uU291cD4obmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocGFyYW1ldGVycykpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXR3b3JrU2Vzc2lvblNvdXA+KG5ldHdvcmtQcm9jZXNz
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICB9CiAgICAgTmV0d29ya1Nlc3Npb25Tb3VwKE5l
dHdvcmtQcm9jZXNzJiwgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAg
fk5ldHdvcmtTZXNzaW9uU291cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3Bw
CmluZGV4IGZjYWIwOGZjMWJkOGUzMzgyM2JmZTc0YzdmZDk3NjkwZjU4NjRjZjMuLjg3NDUyNWUz
OGNlNzA0ZWJlMWRhYTcxMGJiNTVjMDFjYzA1OGVhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRTb3Vw
UmVxdWVzdElucHV0U3RyZWFtUmVhZEFzeW5jKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIHZv
aQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5
bmNSZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1JlYWREYXRhPihXVEZNb3ZlKHRhc2spLCBi
dWZmZXIsIGNvdW50KTsKKyAgICBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQgPSBtYWtl
VW5pcXVlPEFzeW5jUmVhZERhdGE+KFdURk1vdmUodGFzayksIGJ1ZmZlciwgY291bnQpOwogfQog
CiBzdGF0aWMgZ3NzaXplIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkRmluaXNoKEdJ
bnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBHRXJyb3IqKiBl
cnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtNRE5TUmVnaXN0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKaW5kZXggZWRiNWY1MWYwYTUzNTBjZTU1NmI5ZTI5
MjQ2OWIzYjllMDM3MWYwYi4uOTI2NjY4YzM4ZmZmNzA4YWU1MDJmNThmZDQxNTI4ODAzZWM1NTVj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a01ETlNSZWdpc3Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya01ETlNSZWdpc3Rlci5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIE5ldHdv
cmtNRE5TUmVnaXN0ZXI6OnJlZ2lzdGVyTUROU05hbWUodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIFBBTDo6U2VzcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBwZW5kaW5n
UmVxdWVzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UGVuZGluZ1JlZ2lzdHJhdGlvblJlcXVlc3Q+KG1h
a2VSZWYobV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKSksIHJlcXVlc3RJZGVudGlmaWVyLCBXVEZN
b3ZlKG5hbWUpLCBzZXNzaW9uSUQpOworICAgIGF1dG8gcGVuZGluZ1JlcXVlc3QgPSBtYWtlVW5p
cXVlPFBlbmRpbmdSZWdpc3RyYXRpb25SZXF1ZXN0PihtYWtlUmVmKG1fY29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkpLCByZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShuYW1lKSwgc2Vzc2lvbklEKTsK
ICAgICBhdXRvKiByZWNvcmQgPSAmcGVuZGluZ1JlcXVlc3QtPnJlY29yZDsKICAgICBhdXRvIGVy
cm9yID0gRE5TU2VydmljZVJlZ2lzdGVyUmVjb3JkKHNlcnZpY2UsCiAgICAgICAgIHJlY29yZCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENNb25pdG9yLmNwcAppbmRleCAzNTNlYWM4Y2UxMWI2OTA2ZWZhZGQyZmQyNzE4Yjk3YWI1
MmNkYTRkLi5hYjcwNmRjMmU5MzRhOWE3ZWY5OTI2ODk3OTc0YmRjNzU0ZWEzZGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDTW9uaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q01vbml0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgTmV0d29ya1JUQ01vbml0b3I6OnN0
YXJ0VXBkYXRpbmcoKQogewogICAgIG1faXNTdGFydGVkID0gdHJ1ZTsKICAgICBtX3J0Y1Byb3Zp
ZGVyLmNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXNdKCkgewotICAgICAgICBtX21hbmFnZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPHJ0Yzo6QmFzaWNOZXR3b3JrTWFuYWdlcj4oKTsKKyAgICAgICAg
bV9tYW5hZ2VyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY05l
dHdvcmtNYW5hZ2VyPigpOwogICAgICAgICBtX21hbmFnZXItPlNpZ25hbE5ldHdvcmtzQ2hhbmdl
ZC5jb25uZWN0KHRoaXMsICZOZXR3b3JrUlRDTW9uaXRvcjo6b25OZXR3b3Jrc0NoYW5nZWQpOwog
ICAgICAgICBtX21hbmFnZXItPlN0YXJ0VXBkYXRpbmcoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuY3BwCmluZGV4IGE1YWM1NzIxMzc5ZGIzZDFiMjU4NzU1ODYxMDMwYmJhNGRiOWViOGUuLjE1
ZDQ0ZDBhZDlkYjBmM2IwNTk5ZTFhMzNlZmNmZGI4OTYxYTY1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVy
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBOZXR3b3JrUlRDUHJvdmlkZXI6Ok5ldHdvcmtSVENQcm92
aWRlcihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbgogICAgIDogbV9j
b25uZWN0aW9uKCZjb25uZWN0aW9uKQogICAgICwgbV9ydGNNb25pdG9yKCp0aGlzKQogICAgICwg
bV9ydGNOZXR3b3JrVGhyZWFkKGNyZWF0ZVRocmVhZCgpKQotICAgICwgbV9wYWNrZXRTb2NrZXRG
YWN0b3J5KG1ha2VVbmlxdWVSZWY8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rvcnk+KG1fcnRj
TmV0d29ya1RocmVhZC5nZXQoKSkpCisgICAgLCBtX3BhY2tldFNvY2tldEZhY3RvcnkobWFrZVVu
aXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8cnRjOjpCYXNpY1BhY2tldFNvY2tldEZhY3Rv
cnk+KG1fcnRjTmV0d29ya1RocmVhZC5nZXQoKSkpCiB7CiAjaWYgZGVmaW5lZChOREVCVUcpCiAg
ICAgcnRjOjpMb2dNZXNzYWdlOjpMb2dUb0RlYnVnKHJ0Yzo6TFNfTk9ORSk7CkBAIC0xMDQsNyAr
MTA0LDcgQEAgdm9pZCBOZXR3b3JrUlRDUHJvdmlkZXI6OmNyZWF0ZVNvY2tldCh1aW50NjRfdCBp
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8cnRjOjoKICAgICAgICAgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8
TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQp
LCB0eXBlKSk7CisgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRD
U29ja2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCB0eXBlKSk7
CiB9CiAKIHZvaWQgTmV0d29ya1JUQ1Byb3ZpZGVyOjpjcmVhdGVVRFBTb2NrZXQodWludDY0X3Qg
aWRlbnRpZmllciwgY29uc3QgUlRDTmV0d29yazo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWlu
dDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lk
IE5ldHdvcmtSVENQcm92aWRlcjo6d3JhcE5ld1RDUENvbm5lY3Rpb24odWludDY0X3QgaWRlbnRp
ZmllciwgdWludDY0X3QgbmV3QwogewogICAgIGNhbGxPblJUQ05ldHdvcmtUaHJlYWQoW3RoaXMs
IGlkZW50aWZpZXIsIG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPHJ0Yzo6QXN5bmNQYWNrZXRTb2NrZXQ+IHNvY2tldCA9IG1fcGVuZGlu
Z0luY29taW5nU29ja2V0cy50YWtlKG5ld0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKTsKLSAg
ICAgICAgYWRkU29ja2V0KGlkZW50aWZpZXIsIHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29j
a2V0Q2xpZW50PihpZGVudGlmaWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENT
b2NrZXRDbGllbnQ6OlR5cGU6OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsKKyAgICAgICAgYWRkU29j
a2V0KGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8TGliV2ViUlRDU29ja2V0Q2xpZW50PihpZGVudGlm
aWVyLCAqdGhpcywgV1RGTW92ZShzb2NrZXQpLCBMaWJXZWJSVENTb2NrZXRDbGllbnQ6OlR5cGU6
OlNlcnZlckNvbm5lY3Rpb25UQ1ApKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCAzODM4MmIwOWQ0ZmIzYmUyNjRmODliNzc4NDFh
NDFkN2MwOGNhYzA1Li5jNWVmNmQ5OWE1NjBkZDE0ODhmMTg0OTk1YWU4YTdiMTZkOWFkMjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMzQzLDcgKzM0
Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJN
ZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIHJlcGx5RW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4oIklQQyIs
ICJTeW5jTWVzc2FnZVJlcGx5Iiwgc3luY1JlcXVlc3RJRCk7CisgICAgYXV0byByZXBseUVuY29k
ZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5bmNS
ZXF1ZXN0SUQpOwogCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUgZGVjb2RlciBhbmQgZW5jb2Rl
ciB0byB0aGUgd29yayBxdWV1ZSBtZXNzYWdlIHJlY2VpdmVyLgogICAgIHdvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlci5kaWRSZWNlaXZlU3luY01lc3NhZ2UoKnRoaXMsIGRlY29kZXIsIHJlcGx5RW5j
b2Rlcik7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjptYXJrQ3VycmVudGx5
RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4g
Q29ubmVjdGlvbjo6Y3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKQogewotICAgIGF1dG8gZW5jb2Rl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RW5jb2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2Fn
ZU5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5j
b2Rlcj4obWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZU5hbWUsIGRlc3RpbmF0aW9uSUQpOwog
ICAgIGVuY29kZXItPnNldElzU3luY01lc3NhZ2UodHJ1ZSk7CiAKICAgICAvLyBFbmNvZGUgdGhl
IHN5bmMgcmVxdWVzdCBJRC4KQEAgLTc1Niw3ICs3NTYsNyBAQCB2b2lkIENvbm5lY3Rpb246OmVu
YWJsZUluY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nKCkKICAgICBpZiAobV9pbmNvbWluZ01lc3Nh
Z2VzVGhyb3R0bGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luY29taW5nTWVzc2FnZXNU
aHJvdHRsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VzVGhyb3R0bGVyPigqdGhpcywgJkNv
bm5lY3Rpb246OmRpc3BhdGNoSW5jb21pbmdNZXNzYWdlcyk7CisgICAgbV9pbmNvbWluZ01lc3Nh
Z2VzVGhyb3R0bGVyID0gbWFrZVVuaXF1ZTxNZXNzYWdlc1Rocm90dGxlcj4oKnRoaXMsICZDb25u
ZWN0aW9uOjpkaXNwYXRjaEluY29taW5nTWVzc2FnZXMpOwogfQogCiB2b2lkIENvbm5lY3Rpb246
OnBvc3RDb25uZWN0aW9uRGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoKQpAQCAtODQzLDcg
Kzg0Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byByZXBseUVuY29kZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJUEMiLCAiU3luY01lc3NhZ2VSZXBseSIsIHN5
bmNSZXF1ZXN0SUQpOworICAgIGF1dG8gcmVwbHlFbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVy
PigiSVBDIiwgIlN5bmNNZXNzYWdlUmVwbHkiLCBzeW5jUmVxdWVzdElEKTsKIAogICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkgPT0gIldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nIikgewogICAgICAgICBpZiAo
IW1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggMjBmNWVjNWIyMDJiZWMyYmRmNThmMDIw
ZWJkZWVmODMxNDkzMTFiZi4uYWRjNGFhZDk4ODE4ZmEwNmFmYzZiZTg5NjE0NWQ1NjMxNTgzMmRi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDMzLDcgKzQz
Myw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6
OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0
aW5hdGlvbklEKTsKKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJl
Y2VpdmVyTmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVu
Y29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKICAgICAKICAgICByZXR1cm4gc2VuZE1lc3NhZ2Uo
V1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlv
bkhhbmRsZXIsIHVpbnQ2NF90CiB7CiAgICAgQ09NUElMRV9BU1NFUlQoIVQ6OmlzU3luYywgQXN5
bmNNZXNzYWdlRXhwZWN0ZWQpOwogCi0gICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxFbmNvZGVyPihUOjpyZWNlaXZlck5hbWUoKSwgVDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6OnJlY2VpdmVyTmFtZSgp
LCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBu
ZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklE
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IGNjYTA3MzkwYWRlYzQ0NmRlNzQ2NmNmOGUx
MDEyM2MyNzkzODUzNTIuLmZkNTE3MDE3MTJiMDYyOWQ0NzI1MmQwNDA4OTZjNjRmY2JjYmIyYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IERlY29kZXI6OnVud3JhcEZvclRlc3RpbmcoRGVj
b2RlciYgZGVjb2RlcikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdyYXBwZWRNZXNzYWdlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxE
ZWNvZGVyPih3cmFwcGVkTWVzc2FnZS5kYXRhKCksIHdyYXBwZWRNZXNzYWdlLnNpemUoKSwgbnVs
bHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29k
ZXI+KHdyYXBwZWRNZXNzYWdlLmRhdGEoKSwgd3JhcHBlZE1lc3NhZ2Uuc2l6ZSgpLCBudWxscHRy
LCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgdWludDhf
dCogcm91bmRVcFRvQWxpZ25tZW50KGNvbnN0IHVpbnQ4X3QqIHB0ciwgdW5zaWduZWQgYWxpZ25t
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDg1
NDUyY2RhN2UwNDVlNDQ1NWUwN2I5M2JhZmNhMzViMTAyMDAxMWUuLmE3NDlhYWI4NzAwNTRjZWI2
OTBlNWYxNGY0MDc1NjNmZmNkMGY5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9I
YW5kbGVNZXNzYWdlLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VBc3lu
YyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1G
CiAgICAgfQogCiAgICAgdHlwZW5hbWUgVDo6QXN5bmNSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9
IFtsaXN0ZW5lcklEID0gKmxpc3RlbmVySUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rp
b24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgewotICAgICAgICBhdXRvIGVuY29kZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVw
bHlOYW1lKCksIDApOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+
KCJBc3luY1JlcGx5IiwgVDo6YXN5bmNNZXNzYWdlUmVwbHlOYW1lKCksIDApOwogICAgICAgICAq
ZW5jb2RlciA8PCBsaXN0ZW5lcklEOwogICAgICAgICBUOjpzZW5kKFdURk1vdmUoZW5jb2Rlciks
IFdURk1vdmUoY29ubmVjdGlvbiksIGFyZ3MuLi4pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggM2Q2ZjM0Mjg5MmJjODgzOTA2NzhlOGMz
NjQ2MzkxMTBkZTRmNTcyNi4uNzcxNDQ4YTQ0ZDA4ODZkZDAxYmIwYzJkZTY0ZGM5YTQyODYyN2Ey
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtNDMs
NyArNDMsNyBAQCBjbGFzcyBNZXNzYWdlU2VuZGVyIHsKICAgICB7CiAgICAgICAgIHN0YXRpY19h
c3NlcnQoIVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKIAotICAgICAgICBhdXRvIGVu
Y29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpu
YW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVl
PEVuY29kZXI+KFU6OnJlY2VpdmVyTmFtZSgpLCBVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwog
ICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAgICAgICAgIAog
ICAgICAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNv
Y29hLm1tCmluZGV4IDM3MDJhY2M3ZGY1MWJkODQ2YjkzYWY2NGJmMDcwYTRjMTAwMzkxOWYuLjg3
ZGQyOGY4MDg2NzgyY2UyYTNkZjc5MGY0YWMwZTZkNzQ5ZGFiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTkyLDcg
KzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3hwY0Nvbm5lY3Rpb24oeHBjQ29ubmVjdGlv
bikKICAgICAgICAgLCBtX3dhdGNoZG9nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmQ29u
bmVjdGlvblRlcm1pbmF0aW9uV2F0Y2hkb2c6OndhdGNoZG9nVGltZXJGaXJlZCkKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICAsIG1fYXNzZXJ0aW9uKHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpQcm9jZXNzQW5kVUlBc3NlcnRpb24+KHhwY19jb25uZWN0aW9uX2dldF9waWQobV94
cGNDb25uZWN0aW9uLmdldCgpKSwgIkNvbm5lY3Rpb25UZXJtaW5hdGlvbldhdGNoZG9nIl9zLCBX
ZWJLaXQ6OkFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kKSkKKyAgICAgICAgLCBtX2Fzc2VydGlv
bihtYWtlVW5pcXVlPFdlYktpdDo6UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPih4cGNfY29ubmVjdGlv
bl9nZXRfcGlkKG1feHBjQ29ubmVjdGlvbi5nZXQoKSksICJDb25uZWN0aW9uVGVybWluYXRpb25X
YXRjaGRvZyJfcywgV2ViS2l0OjpBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZCkpCiAjZW5kaWYK
ICAgICB7CiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNob3QoaW50ZXJ2YWwpOwpA
QCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgICAgIG1faXND
b25uZWN0ZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gU2VuZCB0aGUgaW5pdGlhbGl6
ZSBtZXNzYWdlLCB3aGljaCBjb250YWlucyBhIHNlbmQgcmlnaHQgZm9yIHRoZSBzZXJ2ZXIgdG8g
dXNlLgotICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEVuY29kZXI+KCJJ
UEMiLCAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZTxFbmNvZGVyPigiSVBDIiwgIkluaXRpYWxpemVDb25uZWN0aW9uIiwgMCk7CiAg
ICAgICAgIGVuY29kZXItPmVuY29kZShNYWNoUG9ydChtX3JlY2VpdmVQb3J0LCBNQUNIX01TR19U
WVBFX01BS0VfU0VORCkpOwogCiAgICAgICAgIGluaXRpYWxpemVTZW5kU291cmNlKCk7CkBAIC00
MTIsNyArNDEyLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGVNZXNz
YWdlRGVjb2RlcihtYWNoX21zZ19oZWFkZXJfdCogaGVhZGVyKQogICAgICAgICB1aW50OF90KiBi
b2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaGVhZGVyICsgMSk7CiAgICAgICAgIHNp
emVfdCBib2R5U2l6ZSA9IGhlYWRlci0+bXNnaF9zaXplIC0gc2l6ZW9mKG1hY2hfbXNnX2hlYWRl
cl90KTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihib2R5LCBi
b2R5U2l6ZSwgbnVsbHB0ciwgVmVjdG9yPEF0dGFjaG1lbnQ+IHsgfSk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPERlY29kZXI+KGJvZHksIGJvZHlTaXplLCBudWxscHRyLCBWZWN0b3I8QXR0
YWNobWVudD4geyB9KTsKICAgICB9CiAKICAgICBib29sIG1lc3NhZ2VCb2R5SXNPT0wgPSBoZWFk
ZXItPm1zZ2hfaWQgPT0gb3V0T2ZMaW5lQm9keU1lc3NhZ2VJRDsKQEAgLTQ1MCw3ICs0NTAsNyBA
QCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZU1lc3NhZ2VEZWNvZGVyKG1h
Y2hfbXNnX2hlYWRlcl90KiBoZWFkZXIpCiAgICAgICAgIHVpbnQ4X3QqIG1lc3NhZ2VCb2R5ID0g
c3RhdGljX2Nhc3Q8dWludDhfdCo+KGRlc2NyaXB0b3ItPm91dF9vZl9saW5lLmFkZHJlc3MpOwog
ICAgICAgICBzaXplX3QgbWVzc2FnZUJvZHlTaXplID0gZGVzY3JpcHRvci0+b3V0X29mX2xpbmUu
c2l6ZTsKIAotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPihtZXNzYWdl
Qm9keSwgbWVzc2FnZUJvZHlTaXplLCBbXShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBs
ZW5ndGgpIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHks
IG1lc3NhZ2VCb2R5U2l6ZSwgW10oY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgbGVuZ3Ro
KSB7CiAgICAgICAgICAgICB2bV9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm1fYWRkcmVzc190PihidWZmZXIpLCBsZW5ndGgpOwogICAgICAgICB9LCBXVEZN
b3ZlKGF0dGFjaG1lbnRzKSk7CiAgICAgfQpAQCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVy
X3QqIGhlYWRlcikKICAgICB1aW50OF90KiBtZXNzYWdlQm9keSA9IGRlc2NyaXB0b3JEYXRhOwog
ICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBoZWFkZXItPm1zZ2hfc2l6ZSAtIChkZXNjcmlw
dG9yRGF0YSAtIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGhlYWRlcikpOwogCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rlcj4obWVzc2FnZUJvZHksIG1lc3NhZ2VCb2R5U2l6
ZSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgIHJldHVybiBtYWtlVW5pcXVl
PERlY29kZXI+KG1lc3NhZ2VCb2R5LCBtZXNzYWdlQm9keVNpemUsIG51bGxwdHIsIFdURk1vdmUo
YXR0YWNobWVudHMpKTsKIH0KIAogLy8gVGhlIHJlY2VpdmUgYnVmZmVyIHNpemUgc2hvdWxkIGFs
d2F5cyBpbmNsdWRlIHRoZSBtYXhpbXVtIHRyYWlsZXIgc2l6ZS4KQEAgLTUyNiw3ICs1MjYsNyBA
QCB2b2lkIENvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIoKQogICAgICAgICBy
ZXR1cm47CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZGVjb2Rlci0+c2V0SW1wb3J0YW5jZUFz
c2VydGlvbihzdGQ6Om1ha2VfdW5pcXVlPEltcG9ydGFuY2VBc3NlcnRpb24+KGhlYWRlcikpOwor
ICAgIGRlY29kZXItPnNldEltcG9ydGFuY2VBc3NlcnRpb24obWFrZVVuaXF1ZTxJbXBvcnRhbmNl
QXNzZXJ0aW9uPihoZWFkZXIpKTsKICNlbmRpZgogCiAgICAgaWYgKGRlY29kZXItPm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSAiSVBDIiAmJiBkZWNvZGVyLT5tZXNzYWdlTmFtZSgpID09ICJJbml0
aWFsaXplQ29ubmVjdGlvbiIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNjNiNmJlNzI3MWU0NDU4ODM5NTA1YWE5MTVl
Mzg3M2Y4NTE0ZGVkZC4uNzdhZjliMjg1ODQ1MjZiYjcwYzdmZmM4ZTMyNTZhM2JhYTEzYTI4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5p
eC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdl
KCkKICAgICBpZiAobWVzc2FnZUluZm8uaXNCb2R5T3V0T2ZMaW5lKCkpCiAgICAgICAgIG1lc3Nh
Z2VCb2R5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob29sTWVzc2FnZUJvZHktPmRhdGEo
KSk7CiAKLSAgICBhdXRvIGRlY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kZXI+KG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpLCBudWxscHRyLCBXVEZNb3ZlKGF0dGFjaG1l
bnRzKSk7CisgICAgYXV0byBkZWNvZGVyID0gbWFrZVVuaXF1ZTxEZWNvZGVyPihtZXNzYWdlQm9k
eSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSwgbnVsbHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykp
OwogCiAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIApAQCAt
NDgyLDcgKzQ4Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1l
c3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYg
KGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFV09VTERCTE9DSykgewogI2lmIFVTRShHTElC
KQotICAgICAgICAgICAgbV9wZW5kaW5nT3V0cHV0TWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlxdWU8
VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0TWVzc2FnZSkpOworICAgICAgICAgICAgbV9wZW5k
aW5nT3V0cHV0TWVzc2FnZSA9IG1ha2VVbmlxdWU8VW5peE1lc3NhZ2U+KFdURk1vdmUob3V0cHV0
TWVzc2FnZSkpOwogICAgICAgICAgICAgbV93cml0ZVNvY2tldE1vbml0b3Iuc3RhcnQobV9zb2Nr
ZXQuZ2V0KCksIEdfSU9fT1VULCBtX2Nvbm5lY3Rpb25RdWV1ZS0+cnVuTG9vcCgpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoR0lPQ29uZGl0aW9uIGNvbmRpdGlvbikg
LT4gZ2Jvb2xlYW4gewogICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiBHX0lPX09VVCkg
ewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9wZW5kaW5nT3V0cHV0TWVzc2FnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5k
ZXggNjQwZjQ1Mjk5ZTNiMjY2ZTAyNjljY2NjYzk0NTJiM2JhNTc5ZWZiMS4uNWFkZmQ4MmJlY2E0
NmRiMDI0NDdlOGJjYjZkMzg0YzJjMDE1NmE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQg
Q29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCiAgICAgICAgIGlmICghbV9yZWFkQnVmZmVy
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIG1lc3NhZ2UsIGxldCdzIGRp
c3BhdGNoIGl0LgogICAgICAgICAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzKDAp
OwotICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGVyPiht
X3JlYWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCBXVEZNb3Zl
KGF0dGFjaG1lbnRzKSk7CisgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBtYWtlVW5pcXVlPERl
Y29kZXI+KG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5zaXplKCksIG51bGxwdHIs
IFdURk1vdmUoYXR0YWNobWVudHMpKTsKICAgICAgICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2UoV1RGTW92ZShkZWNvZGVyKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL0xheWVySG9zdGluZ0NvbnRleHQubW0KaW5kZXggODIzMmRiNGViNTZlYWNi
NmY4Y2U4NTU2NjRiOGI3ODJhYjY1MGE5OC4uN2FlZTQ3ZWFiOTVmNThhNmI0MTc4NWMwZjRmZjdm
MDJiMDRjZjQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTGF5ZXJI
b3N0aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9MYXllckhv
c3RpbmdDb250ZXh0Lm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dGQ6OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gTGF5ZXJIb3N0aW5nQ29udGV4dDo6
Y3JlYXRlRm9yUG9ydChjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZXJ2ZXJQb3J0KQogewotICAgIGF1
dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29u
dGV4dD4oKTsKKyAgICBhdXRvIGxheWVySG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVy
SG9zdGluZ0NvbnRleHQ+KCk7CiAKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAewogICAg
ICAgICBrQ0FDb250ZXh0UG9ydE51bWJlciA6IEAoc2VydmVyUG9ydC5zZW5kUmlnaHQoKSksCkBA
IC01Miw3ICs1Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXll
ckhvc3RpbmdDb250ZXh0OjpjcmVhdGVGb3JQb3J0KGNvbnN0IE1hCiAjaWYgSEFWRShPVVRfT0Zf
UFJPQ0VTU19MQVlFUl9IT1NUSU5HKQogc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRl
eHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFsSG9zdGluZ1Byb2Nlc3Mo
Y29uc3QgTGF5ZXJIb3N0aW5nQ29udGV4dE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBs
YXllckhvc3RpbmdDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxMYXllckhvc3RpbmdDb250ZXh0
PigpOworICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9IG1ha2VVbmlxdWU8TGF5ZXJIb3N0
aW5nQ29udGV4dD4oKTsKICAgICBsYXllckhvc3RpbmdDb250ZXh0LT5tX2xheWVySG9zdGluZ01v
ZGUgPSBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCkBAIC04Miw3ICs4Miw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBMYXllckhvc3RpbmdDb250ZXh0OjpjcmVh
dGVGb3JFeHRlcm5hbEhvc3RpCiAjaWYgUExBVEZPUk0oTUFDKQogc3RkOjp1bmlxdWVfcHRyPExh
eWVySG9zdGluZ0NvbnRleHQ+IExheWVySG9zdGluZ0NvbnRleHQ6OmNyZWF0ZUZvckV4dGVybmFs
UGx1Z2luSG9zdGluZ1Byb2Nlc3MoKQogewotICAgIGF1dG8gbGF5ZXJIb3N0aW5nQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8TGF5ZXJIb3N0aW5nQ29udGV4dD4oKTsKKyAgICBhdXRvIGxheWVy
SG9zdGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPExheWVySG9zdGluZ0NvbnRleHQ+KCk7CiAgICAg
bGF5ZXJIb3N0aW5nQ29udGV4dC0+bV9sYXllckhvc3RpbmdNb2RlID0gTGF5ZXJIb3N0aW5nTW9k
ZTo6T3V0T2ZQcm9jZXNzOwogICAgIGxheWVySG9zdGluZ0NvbnRleHQtPm1fY29udGV4dCA9IFtD
QUNvbnRleHQgY29udGV4dFdpdGhDR1NDb25uZWN0aW9uOkNHU01haW5Db25uZWN0aW9uSUQoKSBv
cHRpb25zOkB7IGtDQUNvbnRleHRDSUZpbHRlckJlaGF2aW9yIDogQCJpZ25vcmUiIH1dOwogICAg
IHJldHVybiBsYXllckhvc3RpbmdDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMzY2Yjk4M2NjMGJlYTU4
Mzg2M2E3Y2Q2MzMzZjk0OGRmNzQ4NDQzNS4uY2U4MjY3ZDJlZTc4Y2FjYjNkZGEwYTliMzc1YmZh
YWZjNjg2ZWU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6U3RyaW4KIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJu
YWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIGJv
b2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVy
Q2xpZW50SUQpCiB7Ci0gICAgYXV0byBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4odGhpcywgY3JlYXRpb25QYXJhbWV0ZXJzKTsK
KyAgICBhdXRvIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1ha2VVbmlxdWU8UGx1Z2luQ29udHJv
bGxlclByb3h5Pih0aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOwogCiAgICAgUGx1Z2luQ29udHJv
bGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVyUHJveHlQdHIgPSBwbHVnaW5Db250cm9sbGVyUHJv
eHkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkwuaAppbmRleCBiYmQ0MjNiY2Y1NzE1
ZTRhZDcwYmY1MmRlZjhjMmMzMGM0MWJmMGY2Li4zZTYxYmJkMDAwZTFmNGNkYjZjMmEzNmNhNGY3
NWU5MDRmODM1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJVVJM
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTC5oCkBAIC00NCw3ICs0NCw3
IEBAIGNsYXNzIFVSTCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMPiB7CiAg
ICAgewogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNlVVJM
SWZOZWNlc3NhcnkoKTsKLSAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlx
dWU8V1RGOjpVUkw+KCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOwor
ICAgICAgICBhdXRvIGFic29sdXRlVVJMID0gbWFrZVVuaXF1ZTxXVEY6OlVSTD4oKmJhc2VVUkwt
Pm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CiAgICAgICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBhYnNvbHV0ZVVSTFN0cmluZyA9IGFic29sdXRlVVJMLT5zdHJpbmcoKTsKIAogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUEk6OlVSTChXVEZNb3ZlKGFic29sdXRlVVJMKSwgYWJz
b2x1dGVVUkxTdHJpbmcpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBVUkwgOiBwdWJsaWMg
T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVSTD4gewogICAgIHsKICAgICAgICAgaWYgKG1fcGFy
c2VkVVJMKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3BhcnNlZFVSTCA9IHN0ZDo6
bWFrZV91bmlxdWU8V1RGOjpVUkw+KFdURjo6VVJMKCksIG1fc3RyaW5nKTsKKyAgICAgICAgbV9w
YXJzZWRVUkwgPSBtYWtlVW5pcXVlPFdURjo6VVJMPihXVEY6OlVSTCgpLCBtX3N0cmluZyk7CiAg
ICAgfQogCiAgICAgV1RGOjpTdHJpbmcgbV9zdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCmluZGV4IDI1
OTI4NDdlMzQxYTNiNmY3Mjg3NTRiZDc4OGE2NjUzZGQyMjE1YjAuLmQzZmY2MjFlYzBmNGExMGQ3
NTY0ODdjYzIxNmY0OTVjZTg2ZDcyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCkBAIC04Myw3ICs4Myw3
IEBAIGJvb2wgUmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgUmVtb3RlT2JqZWN0SW52b2NhdGlvCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YmxvY2tTaWduYXR1cmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJl
c3VsdC5tX3JlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbHlJbmZvPihyZXBseUlELCBX
VEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CisgICAgICAgIHJlc3VsdC5tX3JlcGx5SW5mbyA9IG1h
a2VVbmlxdWU8UmVwbHlJbmZvPihyZXBseUlELCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggNjVkYTllZmYw
MWI0M2VhNTcxMDgwMmY2YzQ2YTZkMDIwMjY1NjkzZS4uNDg5OTc2MjkzMmI3YWY2OTIyMWQwNTBh
ZjY3NDU4MzZmYzM4N2IwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTA5LDcgKzEwOSw3IEBA
IC0gKGlkKV9pbml0V2l0aFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSYpcGFnZQogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90
ZU9iamVjdFJlZ2lzdHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJl
Z2lzdHJ5PihzZWxmLCBwYWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5p
cXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9CkBAIC0xMTksNyArMTE5LDcgQEAgLSAoaWQpX2luaXRXaXRoV2ViUGFnZVBy
b3h5OihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpcGFnZQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5PihzZWxmLCBw
YWdlKTsKKyAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVt
b3RlT2JqZWN0UmVnaXN0cnk+KHNlbGYsIHBhZ2UpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBA
IC0xNjAsNyArMTYwLDcgQEAgLSAodm9pZClfc2VuZEludm9jYXRpb246KE5TSW52b2NhdGlvbiAq
KWludm9jYXRpb24gaW50ZXJmYWNlOihfV0tSZW1vdGVPYmplY3RJbnQKICAgICAgICAgaWYgKHN0
cmNtcChbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUJsb2Nr
U2lnbmF0dXJlXS5tZXRob2RSZXR1cm5UeXBlLCAidiIpKQogICAgICAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlJldHVybiB2YWx1
ZSBvZiBibG9jayBhcmd1bWVudCBtdXN0IGJlICd2b2lkJy4gKCVzKSIsIHNlbF9nZXROYW1lKGlu
dm9jYXRpb24uc2VsZWN0b3IpXTsKIAotICAgICAgICByZXBseUluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJl
cGx5SWRlbnRpZmllcigpLCByZXBseUJsb2NrU2lnbmF0dXJlKTsKKyAgICAgICAgcmVwbHlJbmZv
ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5SW5mbz4o
Z2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgcmVwbHlCbG9ja1NpZ25hdHVyZSk7CiAKICAgICAg
ICAgLy8gUmVwbGFjZSB0aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0IHRyeSB0byBlbmNvZGUg
aXQuCiAgICAgICAgIGlkIG51bGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggN2VkMTFl
NmMxNzFlMjBiZTFlOWVhZGIzMDdlNzFmYzQ4YmZkZTg0OS4uZmFlZmVkMmRjYzgzOGVlOTU3Mzkw
NjVkYWM2M2YxMzU2M2YwZDNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2dsaWIvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC05NCw3ICs5NCw3IEBAIFdl
YktpdENvbnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlKGNvbnN0IFdl
YkNvbnRleHRNZW51SXRlbURhdGEmCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVt
ID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05U
RVhUX01FTlVfSVRFTSwgTlVMTCkpOwogCi0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KGl0ZW1EYXRhKTsKKyAgICBpdGVt
LT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVtR2xpYj4oaXRl
bURhdGEpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgc3ViTWVu
dSA9IGl0ZW1EYXRhLnN1Ym1lbnUoKTsKICAgICBpZiAoIXN1Yk1lbnUuaXNFbXB0eSgpKQogICAg
ICAgICB3ZWJraXRDb250ZXh0TWVudUl0ZW1TZXRTdWJNZW51KGl0ZW0sIGFkb3B0R1JlZih3ZWJr
aXRDb250ZXh0TWVudUNyZWF0ZShzdWJNZW51KSkpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdlYktp
dENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyhHdGtBY3Rpb24q
IGFjdGlvbikKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChHVEtfSVNfQUNUSU9OKGFjdGlvbiks
IG51bGxwdHIpOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NP
TlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRF
TSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOworICAgIGl0ZW0tPnByaXYtPm1lbnVJ
dGVtID0gbWFrZVVuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihhY3Rpb24pOwogCiAgICAg
cmV0dXJuIGl0ZW07CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbihHQWN0aW9uKiBhY3Rp
b24KICAgICBnX3JldHVybl92YWxfaWZfZmFpbCghdGFyZ2V0IHx8IGdfdmFyaWFudF9pc19vZl90
eXBlKHRhcmdldCwgZ19hY3Rpb25fZ2V0X3BhcmFtZXRlcl90eXBlKGFjdGlvbikpLCBudWxscHRy
KTsKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01F
TlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIG51bGxw
dHIpKTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29u
dGV4dE1lbnVJdGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0
KTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJ
dGVtR2xpYj4oYWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSwgdGFyZ2V0KTsKIAogICAg
IHJldHVybiBpdGVtOwogfQpAQCAtMTk0LDcgKzE5NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRl
bSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbihXZWJLaXRD
b250CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9N
RU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxs
cHRyKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVB
Y3Rpb25Jc0NoZWNrYWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5
cGU7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRl
eHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFn
KGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CisgICAg
aXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+
KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdlYmtp
dENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CiAKICAgICByZXR1cm4gaXRlbTsK
IH0KQEAgLTIxNiw3ICsyMTYsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250
ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb25fd2l0aF9sYWJlbAogCiAgICAgV2Vi
S2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwogICAgIENv
bnRleHRNZW51SXRlbVR5cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9uSXNDaGVja2Fi
bGUoYWN0aW9uKSA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGli
Pih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCBTdHJp
bmc6OmZyb21VVEY4KGxhYmVsKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5p
cXVlPFdlYkNvbnRleHRNZW51SXRlbUdsaWI+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9u
R2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKIAogICAgIHJl
dHVybiBpdGVtOwogfQpAQCAtMjM5LDcgKzIzOSw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSog
d2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2NoYXIqIGxh
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBp
dGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9D
T05URVhUX01FTlVfSVRFTSwgbnVsbHB0cikpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJDb250ZXh0TWVudUl0ZW1HbGliPihBY3Rpb25UeXBlLCBDb250
ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsK
KyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IG1ha2VVbmlxdWU8V2ViQ29udGV4dE1lbnVJdGVt
R2xpYj4oQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnLCBTdHJp
bmc6OmZyb21VVEY4KGxhYmVsKSk7CiAgICAgaXRlbS0+cHJpdi0+c3ViTWVudSA9IHN1Ym1lbnU7
CiAgICAgd2Via2l0Q29udGV4dE1lbnVTZXRQYXJlbnRJdGVtKHN1Ym1lbnUsIGl0ZW0pOwogCkBA
IC0yNTYsNyArMjU2LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fbmV3X3dpdGhfc3VibWVudShjb25zdCBnY2hhciogbGEKIFdlYktpdENvbnRleHRN
ZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3Iodm9pZCkKIHsK
ICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lU
RU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBudWxscHRyKSk7
Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvbnRleHRN
ZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBT
dHJpbmcoKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBtYWtlVW5pcXVlPFdlYkNvbnRl
eHRNZW51SXRlbUdsaWI+KFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9u
LCBTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eU1hYy5tbQppbmRleCA3YWQzMzMxNDUzOTE4ODg5ZmQzYjk4OTYzODZhOGJlZDFmNTE5
YTE0Li4zOTE0YTRjMjAxNGE5YTU0YTYzNDg4YTRlNzQzODE5YzZhOGRiM2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9y
aWdpbmF0aW5nVVJMCiAKICAgICAgICAgQVNTRVJUKHZpZXdDb250cm9sbGVyKTsKIAotICAgICAg
ICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigqcGF5bWVu
dENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0LmdldCgpLCB2aWV3Q29udHJvbGxlcik7
CisgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVzZW50
ZXIgPSBtYWtlVW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVy
KTsKIAogICAgICAgICBBU1NFUlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2lu
ZG93KTsKICAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cgPSBb
TlNXaW5kb3cgd2luZG93V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29j
b2EubW0KaW5kZXggNzYwY2U0NjAxMjYyNDk4NzQ4ZmJkNmMxYzBkM2E3ZDFlNzNlYTM2Yy4uNWZj
MjhmNjc2MjM5ZjM2NmUwMWM3NmFiNDMzYzI4OTJiOWNhNWNjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtMTYxLDcg
KzE2MSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxIYW5kbGU+CiAgICAgICAgIHJldHVybiB7eyB9fTsK
IAogICAgIEhhbmRsZSBoYW5kbGU7Ci0gICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8U2FuZGJveEV4dGVuc2lvbkltcGw+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwor
ICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBtYWtlVW5pcXVlPFNhbmRib3hFeHRlbnNp
b25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEo
KSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggMThkYzJm
YjhlZDEzZDE1MzQxMmVhMzBlMjkxMTE3OGVhY2VmYzVhZS4uNzA0MzBmNDQzMTJjOGE1NjJjZTE1
ZmM3MzJmNjlkMzg3NmZlOWMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIFRleHR1cmVNYXBwZXJMYXllciYgdGV4bWFwTGF5
ZXIoTmljb3NpYTo6Q29tcG9zaXRpb25MYXllciYgY29tcG9zaXRpb25MYXllcikKIHsKICAgICBh
dXRvJiBjb21wb3NpdGlvblN0YXRlID0gY29tcG9zaXRpb25MYXllckltcGwoY29tcG9zaXRpb25M
YXllcikuY29tcG9zaXRpb25TdGF0ZSgpOwogICAgIGlmICghY29tcG9zaXRpb25TdGF0ZS5sYXll
cikgewotICAgICAgICBjb21wb3NpdGlvblN0YXRlLmxheWVyID0gc3RkOjptYWtlX3VuaXF1ZTxU
ZXh0dXJlTWFwcGVyTGF5ZXI+KCk7CisgICAgICAgIGNvbXBvc2l0aW9uU3RhdGUubGF5ZXIgPSBt
YWtlVW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICAgICAgY29tcG9zaXRpb25TdGF0
ZS5sYXllci0+c2V0SUQoY29tcG9zaXRpb25MYXllci5pZCgpKTsKICAgICB9CiAgICAgcmV0dXJu
ICpjb21wb3NpdGlvblN0YXRlLmxheWVyOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjplbnN1cmVSb290TGF5ZXIoKQogICAgIGlmIChtX3Jvb3RMYXll
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yb290TGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJMYXllcj4oKTsKKyAgICBtX3Jvb3RMYXllciA9IG1ha2VVbmlxdWU8VGV4
dHVyZU1hcHBlckxheWVyPigpOwogICAgIG1fcm9vdExheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZh
bHNlKTsKICAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBtX3Jv
b3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
CmluZGV4IGNkM2U1N2M2YmNiOWQ4ZGMxZmY5OWNhZDU5YzRlMTNmZjY2MDNhNmIuLmJjYjIzNTk3
NWIxMzNkMmUyNzY3NmQyODNmZTg5MTM4MWEwZDVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBSZWY8VGhyZWFkZWRDb21wb3NpdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmNyZWF0
ZShDbGllbnQmIGNsaWVudCwgVGhyZWFkZWREaXNwbAogVGhyZWFkZWRDb21wb3NpdG9yOjpUaHJl
YWRlZENvbXBvc2l0b3IoQ2xpZW50JiBjbGllbnQsIFRocmVhZGVkRGlzcGxheVJlZnJlc2hNb25p
dG9yOjpDbGllbnQmIGRpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCwgUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlELCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHNjYWxlRmFj
dG9yLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzIHBhaW50RmxhZ3MpCiAgICAgOiBtX2NsaWVu
dChjbGllbnQpCiAgICAgLCBtX3BhaW50RmxhZ3MocGFpbnRGbGFncykKLSAgICAsIG1fY29tcG9z
aXRpbmdSdW5Mb29wKHN0ZDo6bWFrZV91bmlxdWU8Q29tcG9zaXRpbmdSdW5Mb29wPihbdGhpc10g
eyByZW5kZXJMYXllclRyZWUoKTsgfSkpCisgICAgLCBtX2NvbXBvc2l0aW5nUnVuTG9vcChtYWtl
VW5pcXVlPENvbXBvc2l0aW5nUnVuTG9vcD4oW3RoaXNdIHsgcmVuZGVyTGF5ZXJUcmVlKCk7IH0p
KQogI2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAg
LCBtX2Rpc3BsYXlSZWZyZXNoTW9uaXRvcihUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6
Y3JlYXRlKGRpc3BsYXlJRCwgZGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50KSkKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1h
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNw
cAppbmRleCA2MWUxZjk0MDI1MjM4NWRiODA1ZWMxMjJkZmYxYzllNGYxYjcyNTYzLi5kNGI1MjRj
ODI5ZWM2NjcyMWRmMWE3MGQyZDUxM2FlNGViM2YzZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcApAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIE5QUmVtb3RlT2JqZWN0TWFwOjpucE9iamVjdFByb3h5RGVzdHJveWVkKE5QT2JqZWN0
KiBucE9iamVjdCkKIHVpbnQ2NF90IE5QUmVtb3RlT2JqZWN0TWFwOjpyZWdpc3Rlck5QT2JqZWN0
KE5QT2JqZWN0KiBucE9iamVjdCwgUGx1Z2luKiBwbHVnaW4pCiB7CiAgICAgdWludDY0X3QgbnBP
YmplY3RJRCA9IGdlbmVyYXRlTlBPYmplY3RJRCgpOwotICAgIG1fcmVnaXN0ZXJlZE5QT2JqZWN0
cy5zZXQobnBPYmplY3RJRCwgc3RkOjptYWtlX3VuaXF1ZTxOUE9iamVjdE1lc3NhZ2VSZWNlaXZl
cj4odGhpcywgcGx1Z2luLCBucE9iamVjdElELCBucE9iamVjdCkucmVsZWFzZSgpKTsKKyAgICBt
X3JlZ2lzdGVyZWROUE9iamVjdHMuc2V0KG5wT2JqZWN0SUQsIG1ha2VVbmlxdWU8TlBPYmplY3RN
ZXNzYWdlUmVjZWl2ZXI+KHRoaXMsIHBsdWdpbiwgbnBPYmplY3RJRCwgbnBPYmplY3QpLnJlbGVh
c2UoKSk7CiAKICAgICByZXR1cm4gbnBPYmplY3RJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHAKaW5kZXggN2IwMmI1ZTEyZjMyYzcyZDM4ZjUyMDQ1YmI2ZDZhMjNiNjJhZTJlMS4uMjYx
ZDdhODk2OTMwNmE4OTI1YzRhYjM2ZTQ3OTQ3YjM5NmMxMjUyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bk1vZHVsZS5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgYm9vbCBtb2R1bGVNaXhlc0d0
a1N5bWJvbHMoTW9kdWxlKiBtb2R1bGUpCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnRy
eUxvYWQoKQogewotICAgIG1fbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1fcGx1
Z2luUGF0aCk7CisgICAgbV9tb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obV9wbHVnaW5QYXRo
KTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDFmMmRlNGQwMzdlYTNlODMw
Mjg3YWI5OGNiMmE4ZjIxYzRlY2VhMmUuLjBkMjI3ZmZjMWQ5YzU1NTZhYWQ5MmU3ZWUxNTc2NWUx
NmIzNDQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTE1Miwx
MyArMTUyLDEzIEBAIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6
OkxheWVyUHJvcGVydGllcyhjb25zdCBMYXllclByb3BlcnRpCiAgICAgLy8gRklYTUU6IExheWVy
UHJvcGVydGllcyBzaG91bGRuJ3QgYmUgY29weWFibGU7IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
Y2xvbmUgc2hvdWxkIGNvcHkgdGhlIHJlbGV2YW50IHByb3BlcnRpZXMuCiAKICAgICBpZiAob3Ro
ZXIudHJhbnNmb3JtKQotICAgICAgICB0cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKKyAgICAgICAgdHJh
bnNmb3JtID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVy
LnRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuc3VibGF5ZXJUcmFuc2Zvcm0pCi0gICAgICAg
IHN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKKyAgICAgICAgc3VibGF5ZXJU
cmFuc2Zvcm0gPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3Ro
ZXIuc3VibGF5ZXJUcmFuc2Zvcm0pOwogCiAgICAgaWYgKG90aGVyLmZpbHRlcnMpCi0gICAgICAg
IGZpbHRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCpv
dGhlci5maWx0ZXJzKTsKKyAgICAgICAgZmlsdGVycyA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CkBAIC0zNTQsNyArMzU0LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLAogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRyYW5zZm9ybSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQudHJhbnNmb3JtID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4odHJhbnNmb3JtKTsKKyAgICAgICAg
cmVzdWx0LnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGll
cyAmIFN1YmxheWVyVHJhbnNmb3JtQ2hhbmdlZCkgewpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0cmFuc2Zvcm0p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5zdWJsYXllclRy
YW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+
KHRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdC5zdWJsYXllclRyYW5zZm9ybSA9IG1ha2VVbmlx
dWU8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+KHRyYW5zZm9ybSk7CiAgICAgfQogCiAg
ICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEhpZGRlbkNoYW5nZWQpIHsKQEAgLTQy
NSw3ICs0MjUsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsCiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocm91bmRlZFJlY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKLSAgICAgICAgcmVzdWx0LnNoYXBlUm91bmRlZFJlY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0KTsKKyAgICAgICAgcmVzdWx0LnNo
YXBlUm91bmRlZFJlY3QgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3Q+KHJv
dW5kZWRSZWN0KTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYg
U2hhcGVQYXRoQ2hhbmdlZCkgewpAQCAtNDcxLDcgKzQ3MSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNGcm9udEJ1ZmZlcikpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChoYXNGcm9udEJ1ZmZlcikgewotICAg
ICAgICAgICAgYXV0byBiYWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlPihudWxscHRyKTsKKyAgICAgICAgICAgIGF1dG8gYmFja2luZ1N0b3JlID0g
bWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4obnVsbHB0cik7CiAgICAgICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKCpiYWNraW5nU3RvcmUpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIApAQCAtNDg2LDcgKzQ4Niw3IEBAIGJvb2wgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYg
RmlsdGVyc0NoYW5nZWQpIHsKLSAgICAgICAgYXV0byBmaWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPigpOworICAgICAgICBhdXRvIGZpbHRlcnMgPSBt
YWtlVW5pcXVlPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+KCk7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoKmZpbHRlcnMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICByZXN1bHQuZmlsdGVycyA9IFdURk1vdmUoZmlsdGVycyk7CkBAIC02MDIsNyArNjAyLDcgQEAg
Ym9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgUmVtb3RlTGF5ZXJUcmVlVHIKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXll
cklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGF5ZXJQcm9wZXJ0aWVzPiBsYXllclByb3BlcnRpZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPExh
eWVyUHJvcGVydGllcz4oKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGll
cz4gbGF5ZXJQcm9wZXJ0aWVzID0gbWFrZVVuaXF1ZTxMYXllclByb3BlcnRpZXM+KCk7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmxheWVyUHJvcGVydGllcykpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcAppbmRleCA5NzhjNGJiZWQ3YjVjZDkxY2FhZWMxNTRiYzhiYTE0YmFi
NzUzNDYxLi5lODI2YTMwYjEyZTI0ZWNmNDMwYzY5Yjc2YjFhNmYyOGY1YmI5OGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBA
IC01MjIsNyArNTIyLDcgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzTmV3Um9vdE5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgbV9z
Y3JvbGxpbmdTdGF0ZVRyZWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1N0YXRlVHJlZT4o
KTsKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVU
cmVlPigpOwogCiAgICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydGllczsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc0NoYW5nZWRQcm9wZXJ0aWVzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAppbmRleCBjNzM0N2M3OWU2Njkz
ODM3ODVkMDVkMjI5ZTQ3Yjc0N2MxZjBjYTU1Li5iMmNkNDg0NjY3N2NlOTdkZmFjMjg1ODQ5MGMx
ZWE0MzRmOTYyOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFy
ZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxH
cmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkK
IHsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZSA9IGNyZWF0ZUNhaXJvU3VyZmFj
ZSgpOwogICAgIFJlZlB0cjxjYWlyb190PiBiaXRtYXBDb250ZXh0ID0gYWRvcHRSZWYoY2Fpcm9f
Y3JlYXRlKGltYWdlLmdldCgpKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNyZWF0ZUZhY3RvcnkoYml0bWFw
Q29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dD4o
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjcmVhdGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0
KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4
IDkyZjEwNjJiMjkwZjc3NWRiNWFlN2VkMTk1MmE5Y2E4NThhYjMxMjIuLjAxNmFiYmQ5OTNlMThh
NDVjMDFhN2YwNDk3ZGNjMzFhNTNiNDM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDAsIG1f
c2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oYml0bWFwQ29udGV4dC5nZXQo
KSwgMSwgLTEpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
PihiaXRtYXBDb250ZXh0LmdldCgpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmFwaGljc0Nv
bnRleHQ+KGJpdG1hcENvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dpbi9TaGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vU2hhcmVhYmxlQml0bWFwRGlyZWN0MkQuY3BwCmluZGV4IGQ2YTA0NTg2
ZjQxMzJlNWQ0YjU2OGNjMzM4OTQ2NjkwNjgwM2NkNWEuLmViNGNmNTcxOTEwMTRmMzE0ODY1NGZj
ZThjMzgyYTBhMTMwNGVjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9T
aGFyZWFibGVCaXRtYXBEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2lu
L1NoYXJlYWJsZUJpdG1hcERpcmVjdDJELmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpCiB7CiAgICAgbV9iaXRtYXAgPSBjcmVhdGVEaXJlY3QyRFN1cmZhY2UoKTsKICAgICBD
T01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IGJpdG1hcENvbnRleHQgPSBEaXJlY3QyRDo6Y3JlYXRl
UmVuZGVyVGFyZ2V0RnJvbVdJQ0JpdG1hcChtX2JpdG1hcC5nZXQoKSk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmNyZWF0ZUZhY3RvcnkoYml0bWFwQ29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtl
VW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjcmVh
dGVGYWN0b3J5KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRt
YXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIGRzdFBv
aW50LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAppbmRleCA5ODFhOTg1YmJkZTVmMWNiNjVm
OTZjYmIyMTM5ZmJjZjE5ZDdkY2U1Li5lMTIyZWUzZWRiMWM0MjE5ZDFkODQxOTkzMjFhODAwM2Q1
MmM4MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSFRUUENv
b2tpZVN0b3JlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgSFRUUENvb2tpZVN0b3JlOjpy
ZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKIAogICAgIEFTU0VSVCghbV9vYnNl
cnZlZENvb2tpZU1hbmFnZXJQcm94eSk7CiAKLSAgICBtX2Nvb2tpZU1hbmFnZXJQcm94eU9ic2Vy
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxBUElXZWJDb29raWVNYW5hZ2VyUHJveHlPYnNlcnZlcj4o
KnRoaXMpOworICAgIG1fY29va2llTWFuYWdlclByb3h5T2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPEFQ
SVdlYkNvb2tpZU1hbmFnZXJQcm94eU9ic2VydmVyPigqdGhpcyk7CiAKICAgICBhdXRvKiBwb29s
ID0gbV9vd25pbmdEYXRhU3RvcmUtPnByb2Nlc3NQb29sRm9yQ29va2llU3RvcmFnZU9wZXJhdGlv
bnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5k
ZXggZDgzYzZiOGY5ODA2OTYwMzYyNzZjYmFlZmQ1NDJkOGE2ZmQwY2QwMS4uNTRmNzdmMDA0Yzk3
MWZjMWM4NmU4ZjFjY2RhMGQzYjY4MDc4ZGM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0
Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNl
KiB3a0NsCiAKIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSog
d2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEluamVjdGVk
QnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZikt
PnNldEluamVjdGVkQnVuZGxlQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJDb250ZXh0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0SGlz
dG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9y
eUNsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV0tDb250ZXh0
U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0
SGlzdG9yeUNsCiAgICAgfTsKIAogICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sID0gKldlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpOwotICAgIHByb2Nlc3NQb29sLnNldEhp
c3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxIaXN0b3J5Q2xpZW50Pih3a0NsaWVudCkpOwor
ICAgIHByb2Nlc3NQb29sLnNldEhpc3RvcnlDbGllbnQobWFrZVVuaXF1ZTxIaXN0b3J5Q2xpZW50
Pih3a0NsaWVudCkpOwogCiAgICAgYm9vbCBhZGRzVmlzaXRlZExpbmtzID0gcHJvY2Vzc1Bvb2wu
aGlzdG9yeUNsaWVudCgpLmFkZHNWaXNpdGVkTGlua3MoKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBA
IHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IGNvbnN0IFdLQ29udGV4dERvd25sb2FkCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgV2ViS2l0
Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJl
ZiktPnNldERvd25sb2FkQ2xpZW50KG1ha2VVbmlxdWU8RG93bmxvYWRDbGllbnQ+KHdrQ2xpZW50
KSk7CiB9CiAKIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwCmluZGV4IDExYjgzNGI0ZWUyYTlhNjg3NjI2YzczMmJmNThhNDg4MjNmNjMz
NGEuLjg4OGI3NWJjN2NlYzg5ZDE2ZTA3ZjYxN2U3YmIyY2UyOTc5ZmE2MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLR2VvbG9jYXRpb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0dlb2xvY2F0aW9uTWFuYWdlci5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tHZW9sb2NhdGlvbk1hbmFnZXJHZXRUeXBl
SUQoKQogCiB2b2lkIFdLR2VvbG9jYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tHZW9sb2NhdGlv
bk1hbmFnZXJSZWYgZ2VvbG9jYXRpb25NYW5hZ2VyUmVmLCBjb25zdCBXS0dlb2xvY2F0aW9uUHJv
dmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1wbChnZW9sb2NhdGlvbk1hbmFnZXJS
ZWYpLT5zZXRQcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+
KHdrUHJvdmlkZXIpKTsKKyAgICB0b0ltcGwoZ2VvbG9jYXRpb25NYW5hZ2VyUmVmKS0+c2V0UHJv
dmlkZXIobWFrZVVuaXF1ZTxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPih3a1Byb3ZpZGVyKSk7CiB9
CiAKIHZvaWQgV0tHZW9sb2NhdGlvbk1hbmFnZXJQcm92aWRlckRpZENoYW5nZVBvc2l0aW9uKFdL
R2VvbG9jYXRpb25NYW5hZ2VyUmVmIGdlb2xvY2F0aW9uTWFuYWdlclJlZiwgV0tHZW9sb2NhdGlv
blBvc2l0aW9uUmVmIHBvc2l0aW9uUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYjIyM2Q2Zjg3YmZh
NWU5NmUzZTUwZGEyZGQ3OGZmMGQyZGQ0MTZjZS4uNzY5MjM5OTBhYjViOWVhMjEzODVmMWQzNTY5
ZThiNTBhYTdmNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdLVHlwZUlE
IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFR5cGVJRCgpCiAKIHZvaWQgV0tOb3RpZmljYXRpb25N
YW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIGNv
bnN0IFdLTm90aWZpY2F0aW9uUHJvdmlkZXJCYXNlKiB3a1Byb3ZpZGVyKQogewotICAgIHRvSW1w
bChtYW5hZ2VyUmVmKS0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJOb3RpZmljYXRp
b25Qcm92aWRlcj4od2tQcm92aWRlcikpOworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+c2V0UHJv
dmlkZXIobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4od2tQcm92aWRlcikpOwog
fQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlv
bihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAzOWQ2
YjQyMTQ5ZmFiMDYxY2U0ZGRmZTViMWMxN2UyOTgxZmRmYzNlLi42MWE2OWIxZjNhNmRhNzQ5NmFk
NDcyNjk3MGI4NWYyYzkxMTgxM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKQEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVu
dUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogICAg
ICAgICB9CiAgICAgfTsKIAotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q29udGV4dE1lbnVDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1l
bnVDbGllbnQ+KHdrQ2xpZW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlUmVmKTsK
ICAgICBVTlVTRURfUEFSQU0od2tDbGllbnQpOwpAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1Bh
Z2VDb250ZXh0TWVudUNsCiAKIHZvaWQgV0tQYWdlU2V0UGFnZURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dEJhc2UqIHdrQ2xpZW50KQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXREaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudChtYWtlVW5pcXVlPFdlYlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4od2tDbGll
bnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJl
ZiwgY29uc3QgV0tQYWdlRmluZENsaWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtOTk1LDcgKzk5NSw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0
IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4o
d2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZpbmRDbGllbnQobWFrZVVuaXF1
ZTxGaW5kQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kTWF0
Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZE1hdGNoZXNDbGll
bnRCYXNlKiB3a0NsaWVudCkKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kTWF0
Y2hlc0NsCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGaW5k
TWF0Y2hlc0NsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZpbmRNYXRjaGVzQ2xpZW50Pih3a0NsaWVu
dCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0RmluZE1hdGNoZXNDbGllbnQobWFrZVVuaXF1
ZTxGaW5kTWF0Y2hlc0NsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdl
SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUluamVj
dGVkQnVuZGxlQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlSW5qZWN0ZWRCdQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0g
ICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViRm9y
bUNsaWVudD4od2tDbGllbnQpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEZvcm1DbGllbnQo
bWFrZVVuaXF1ZTxXZWJGb3JtQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLUGFnZVNl
dFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNs
aWVudEJhc2UqIHdrQ2xpZW50KQpAQCAtMTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBXS1BhZ2VTZXRQ
YWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGll
bnRCYXNlKgogCiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgPSB0b0ltcGwocGFnZVJl
Zik7CiAKLSAgICBhdXRvIGxvYWRlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyQ2xp
ZW50Pih3a0NsaWVudCk7CisgICAgYXV0byBsb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPExvYWRl
ckNsaWVudD4od2tDbGllbnQpOwogCiAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlk
IG9mIHRoaXMgY29kZSBhbmQgdHJhbnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlv
dXQgaW5zdGVhZCBvZgogICAgIC8vIGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJl
cXVpcmVkCkBAIC0xMjgxLDcgKzEyODEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAg
ICAgIH0KICAgICB9OwogCi0gICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRQb2xpY3lDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRQb2xpY3lDbGllbnQobWFrZVVuaXF1ZTxQb2xpY3lDbGllbnQ+KHdrQ2xpZW50KSk7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjA3NSw3ICsyMDc1LDcgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50
QmFzZSogd2tDbGllbnQKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0b0ltcGwocGFnZVJlZikt
PnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3a0NsaWVu
dCkpOwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCkBAIC0y
NDUyLDcgKzI0NTIsNyBAQCBjbGFzcyBTdGF0ZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNs
aWVudDxXS1BhZ2VTdGF0ZUNsaWVudEJhc2U+LCBwdWJsaWMgUGFnZQogdm9pZCBXS1BhZ2VTZXRQ
YWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZVN0YXRlQ2xpZW50QmFzZSogY2xp
ZW50KQogewogICAgIGlmIChjbGllbnQpCi0gICAgICAgIHRvSW1wbChwYWdlKS0+c2V0UGFnZUxv
YWRTdGF0ZU9ic2VydmVyKHN0ZDo6bWFrZV91bmlxdWU8U3RhdGVDbGllbnQ+KGNsaWVudCkpOwor
ICAgICAgICB0b0ltcGwocGFnZSktPnNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihtYWtlVW5pcXVl
PFN0YXRlQ2xpZW50PihjbGllbnQpKTsKICAgICBlbHNlCiAgICAgICAgIHRvSW1wbChwYWdlKS0+
c2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQppbmRleCBmNzYz
YWY2MDAzZGE0NjY3MzYzMWU5MWVhODFiODNiNWM5N2EwODdkLi4zNWVmOTIyMTU0ZTE5NjMwMGU0
YjZlZTc1ZDRjOTgxNzg1YmMzZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtNTIsNyArNTIsNyBAQCAtIChp
ZClpbml0V2l0aFBhZ2U6KFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJilwYWdlCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKICAgICBfcGFnZSA9IFdURk1vdmUocGFnZSk7Ci0gICAgX29ic2Vy
dmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4oc2Vs
ZiwgQCJVUkwiKTsKKyAgICBfb2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRT
dGF0ZU9ic2VydmVyPihzZWxmLCBAIlVSTCIpOwogICAgIF9wYWdlLT5wYWdlTG9hZFN0YXRlKCku
YWRkT2JzZXJ2ZXIoKl9vYnNlcnZlcik7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3dwZS9XS1ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmlldy5jcHAKaW5kZXggNzhiYmEzOTY3YjYxOTdj
MGU4YTdjMjNhYzNkYThjZDEzMmU3YzRiZS4uOTY0MDZkMGFhZmJjMzU1NTYwYjVkMzE5N2EwMGMy
NWY1NzU5YTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3Bl
L1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mvd3BlL1dLVmll
dy5jcHAKQEAgLTY4LDUgKzY4LDUgQEAgdm9pZCBXS1ZpZXdTZXRWaWV3Q2xpZW50KFdLVmlld1Jl
ZiB2aWV3LCBjb25zdCBXS1ZpZXdDbGllbnRCYXNlKiBjbGllbnQpCiAgICAgICAgIH0KICAgICB9
OwogCi0gICAgdG9JbXBsKHZpZXcpLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxWaWV3Q2xp
ZW50PihjbGllbnQpKTsKKyAgICB0b0ltcGwodmlldyktPnNldENsaWVudChtYWtlVW5pcXVlPFZp
ZXdDbGllbnQ+KGNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5k
ZXggMjY1NTU0ZjNkN2YyZDdhZDI5NmU5ZjNmOWZhMTEzODhiNzhmZDU2NC4uNDk2Nzc4OGExMDU3
ZmE4ODJhMGEwMWM4ZGJmNTAwMmU5MjI2ZWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyLm1tCkBAIC02MDIsNyArNjAyLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aFBhZ2VS
ZWY6KFdLUGFnZVJlZilwYWdlUmVmCiAKICAgICBfcGFnZSA9IFdlYktpdDo6dG9JbXBsKHBhZ2VS
ZWYpOwogCi0gICAgX3BhZ2VMb2FkU3RhdGVPYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHNlbGYpOworICAgIF9wYWdlTG9hZFN0YXRlT2Jz
ZXJ2ZXIgPSBtYWtlVW5pcXVlPFdlYktpdDo6UGFnZUxvYWRTdGF0ZU9ic2VydmVyPihzZWxmKTsK
ICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpfcGFnZUxvYWRTdGF0ZU9i
c2VydmVyKTsKIAogICAgIEFTU0VSVCghYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlck1hcCgpLmNv
bnRhaW5zKF9wYWdlLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KaW5kZXggMTM3MmNhNDEwNmM3NmUxZDYy
MzVkNjE0YWQ1YzFlNmE1NmVhMDVhMS4uODFkMzcwM2IwZWVhODJlNWU2YzYyZjMyMjJhYzRlNjgx
OWY2YjNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
SFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMTA4LDcgKzEwOCw3IEBAIC0gKHZvaWQpYWRkT2Jz
ZXJ2ZXI6KGlkPFdLSFRUUENvb2tpZVN0b3JlT2JzZXJ2ZXI+KW9ic2VydmVyCiAgICAgaWYgKCFy
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcj4ob2Jz
ZXJ2ZXIpOworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFdLSFRUUENv
b2tpZVN0b3JlT2JzZXJ2ZXI+KG9ic2VydmVyKTsKICAgICBfY29va2llU3RvcmUtPnJlZ2lzdGVy
T2JzZXJ2ZXIoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGJhY2U1YWM3
ZWMwMGIxODk4YWQyZGY3MmNiMWIxOTQ0NjdkY2VjOWQuLmViYWM1NjhlM2RkYjY4NzBmODViMDE1
MDhlYzIwZmFhYjdmMjA0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0zNzMsNyArMzczLDcgQEAgLSAoaWQgPF9XS0Rv
d25sb2FkRGVsZWdhdGU+KV9kb3dubG9hZERlbGVnYXRlCiAtICh2b2lkKV9zZXREb3dubG9hZERl
bGVnYXRlOihpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4pZG93bmxvYWREZWxlZ2F0ZQogewogICAg
IF9kb3dubG9hZERlbGVnYXRlID0gZG93bmxvYWREZWxlZ2F0ZTsKLSAgICBfcHJvY2Vzc1Bvb2wt
PnNldERvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9hZENsaWVu
dD4oZG93bmxvYWREZWxlZ2F0ZSkpOworICAgIF9wcm9jZXNzUG9vbC0+c2V0RG93bmxvYWRDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Pihkb3dubG9hZERlbGVnYXRlKSk7
CiB9CiAKIC0gKGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+KV9hdXRvbWF0aW9uRGVsZWdhdGUK
QEAgLTM4NCw3ICszODQsNyBAQCAtIChpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPilfYXV0b21h
dGlvbkRlbGVnYXRlCiAtICh2b2lkKV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KGlkIDxfV0tBdXRv
bWF0aW9uRGVsZWdhdGU+KWF1dG9tYXRpb25EZWxlZ2F0ZQogewogICAgIF9hdXRvbWF0aW9uRGVs
ZWdhdGUgPSBhdXRvbWF0aW9uRGVsZWdhdGU7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0
aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50PihzZWxm
LCBhdXRvbWF0aW9uRGVsZWdhdGUpKTsKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25D
bGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1dG9tYXRp
b25EZWxlZ2F0ZSkpOwogfQogCiAtICh2b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50
Q29udHJvbGxlci5tbQppbmRleCA5YmI3NWM3YTIxMTczYjlmNzAxZDYyNjM0N2U2NzkyNTMyNGFi
ZmQ1Li5hMDBiMjAzY2M5MDU5MzAxYmVjYzQ2MWQ2MWI0NjczMmI4NTYxMmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRl
bnRDb250cm9sbGVyLm1tCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHJpdmF0ZToKIAogLSAodm9pZClh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjooaWQgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+KXNjcmlw
dE1lc3NhZ2VIYW5kbGVyIG5hbWU6KE5TU3RyaW5nICopbmFtZQogewotICAgIGF1dG8gaGFuZGxl
ciA9IFdlYktpdDo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5p
cXVlPFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU+KHNlbGYsIHNjcmlwdE1lc3NhZ2VIYW5k
bGVyLCBuYW1lKSwgbmFtZSwgQVBJOjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsK
KyAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVh
dGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxmLCBzY3JpcHRN
ZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CiAgICAgaWYgKCFfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKSkKICAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkF0dGVtcHQgdG8gYWRk
IHNjcmlwdCBtZXNzYWdlIGhhbmRsZXIgd2l0aCBuYW1lICclQCcgd2hlbiBvbmUgYWxyZWFkeSBl
eGlzdHMuIiwgbmFtZV07CiB9CkBAIC0yMzAsNyArMjMwLDcgQEAgLSAodm9pZClfcmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzQXNzb2NpYXRlZFdpdGhVc2VyQ29udGVudFdvcmxkOihfV0tVc2VyQ29u
dGVudFcKIAogLSAodm9pZClfYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6KGlkIDxXS1NjcmlwdE1l
c3NhZ2VIYW5kbGVyPilzY3JpcHRNZXNzYWdlSGFuZGxlciBuYW1lOihOU1N0cmluZyAqKW5hbWUg
dXNlckNvbnRlbnRXb3JsZDooX1dLVXNlckNvbnRlbnRXb3JsZCAqKXVzZXJDb250ZW50V29ybGQK
IHsKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJLaXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlPihzZWxm
LCBzY3JpcHRNZXNzYWdlSGFuZGxlciwgbmFtZSksIG5hbWUsICp1c2VyQ29udGVudFdvcmxkLT5f
dXNlckNvbnRlbnRXb3JsZCk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViS2l0OjpXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxl
Z2F0ZT4oc2VsZiwgc2NyaXB0TWVzc2FnZUhhbmRsZXIsIG5hbWUpLCBuYW1lLCAqdXNlckNvbnRl
bnRXb3JsZC0+X3VzZXJDb250ZW50V29ybGQpOwogICAgIGlmICghX3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSkpCiAg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3Jt
YXQ6QCJBdHRlbXB0IHRvIGFkZCBzY3JpcHQgbWVzc2FnZSBoYW5kbGVyIHdpdGggbmFtZSAnJUAn
IHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiIsIG5hbWVdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMWQ4YzA3MTBmNTY1YzBiYjZm
NTUwZTk1NmMyMmQwMDI2YTM3MjU5MC4uZTA3NDRhZjhiNGFkYWE4OGRlMWRkMWEyMGY2M2ViZmM1
ZWJiNTYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC03NTcsNyArNzU3LDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBwYWdlQ29uZmlndXJhdGlvbi5j
b3B5UmVmKCkpOworICAgIF9pbXBsID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OldlYlZpZXdJbXBsPihz
ZWxmLCBzZWxmLCBwcm9jZXNzUG9vbCwgcGFnZUNvbmZpZ3VyYXRpb24uY29weVJlZigpKTsKICAg
ICBfcGFnZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNldEF1dG9tYXRpY2FsbHlB
ZGp1c3RzQ29udGVudEluc2V0cyh0cnVlKTsKQEAgLTc2OSwxNCArNzY5LDE0IEBAIC0gKHZvaWQp
X2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNv
bmZpZ3VyYXRpb24KIAogICAgIF9wYWdlLT5zZXRBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNl
ckFnZW50KGNvbmZpZ3VyYXRpb24uX2FwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQp
OwogCi0gICAgX25hdmlnYXRpb25TdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpOYXZp
Z2F0aW9uU3RhdGU+KHNlbGYpOworICAgIF9uYXZpZ2F0aW9uU3RhdGUgPSBtYWtlVW5pcXVlPFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlPihzZWxmKTsKICAgICBfcGFnZS0+c2V0TmF2aWdhdGlvbkNs
aWVudChfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVOYXZpZ2F0aW9uQ2xpZW50KCkpOwogCi0gICAg
X3VpRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7
Ci0gICAgX3BhZ2UtPnNldEZpbmRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkZpbmRD
bGllbnQ+KHNlbGYpKTsKLSAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7Cisg
ICAgX3VpRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6VUlEZWxlZ2F0ZT4oc2VsZik7Cisg
ICAgX3BhZ2UtPnNldEZpbmRDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkZpbmRDbGllbnQ+KHNl
bGYpKTsKKyAgICBfcGFnZS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PihzZWxmKSk7CiAKLSAgICBfaWNvbkxvYWRp
bmdEZWxlZ2F0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRl
PihzZWxmKTsKKyAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8V2ViS2l0OjpJ
Y29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKIAogICAgIF91c2VQbGF0Zm9ybUZpbmRVSSA9IFlF
UzsKIApAQCAtMzQzMCw3ICszNDMwLDcgQEAgLSAodm9pZClzZXRBbGxvd3NCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb24KICAgICBf
YWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMgPSBhbGxvd3NCYWNrRm9yd2FyZE5h
dmlnYXRpb25HZXN0dXJlczsKIAogICAgIGlmIChhbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25H
ZXN0dXJlcyAmJiAhX2dlc3R1cmVDb250cm9sbGVyKSB7Ci0gICAgICAgIF9nZXN0dXJlQ29udHJv
bGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpf
cGFnZSk7CisgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpfcGFnZSk7CiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxl
ci0+aW5zdGFsbFN3aXBlSGFuZGxlcihzZWxmLCBbc2VsZiBzY3JvbGxWaWV3XSk7CiAgICAgICAg
IGlmIChXS1dlYlZpZXcgKmFsdGVybmF0ZVdlYlZpZXcgPSBbX2NvbmZpZ3VyYXRpb24gX2FsdGVy
bmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXNdKQogICAgICAgICAgICAgX2dlc3R1cmVD
b250cm9sbGVyLT5zZXRBbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdlKGFsdGVybmF0
ZVdlYlZpZXctPl9wYWdlLmdldCgpKTsKQEAgLTU2ODMsNyArNTY4Myw3IEBAIC0gKHZvaWQpX3Nl
dElucHV0RGVsZWdhdGU6KGlkIDxfV0tJbnB1dERlbGVnYXRlPilpbnB1dERlbGVnYXRlCiAgICAg
fTsKIAogICAgIGlmIChpbnB1dERlbGVnYXRlKQotICAgICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVu
dChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3BhZ2UtPnNl
dEZvcm1DbGllbnQobWFrZVVuaXF1ZTxGb3JtQ2xpZW50PihzZWxmKSk7CiAgICAgZWxzZQogICAg
ICAgICBfcGFnZS0+c2V0Rm9ybUNsaWVudChudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpp
bmRleCA3YWQwNzNiOGNkNmRkNDIwM2UxYTc2MDU4ZjdjN2RmMmE5ZjhhZDdiLi4yYWRlZWE3NjBj
Njk4YjE4YWU1OTFlNTcwNTcxMzI5NWYyNGM1NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCkBAIC03
Miw3ICs3Miw3IEBAIC0gKGlkIDxfV0tBdXRvbWF0aW9uU2Vzc2lvbkRlbGVnYXRlPilkZWxlZ2F0
ZQogLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0F1dG9tYXRpb25TZXNzaW9uRGVsZWdhdGU+
KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3Nlc3Npb24tPnNl
dENsaWVudChkZWxlZ2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudD4oZGVsZWdhdGUpIDogbnVsbHB0cik7CisgICAgX3Nlc3Npb24tPnNldENsaWVu
dChkZWxlZ2F0ZSA/IG1ha2VVbmlxdWU8V2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4o
ZGVsZWdhdGUpIDogbnVsbHB0cik7CiB9CiAKIC0gKE5TU3RyaW5nICopc2Vzc2lvbklkZW50aWZp
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCA4
YzIxMzMzMGViMGVkMzljNWYxMmQ1YmM2YWRhNWZiODEzYmRkY2FiLi4wZGQ0MDlhNDNkZTY1MzAw
YzlmMGNjODU0NDdhYzJmNzEzZWM5NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tCkBAIC03Niw3ICs3Niw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0gV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKCk7Ci0gICAgbV9yZW1vdGVJbnNw
ZWN0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlDbGllbnQ+KHNlbGYpOworICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFr
ZVVuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsK
ICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0b3JD
bGllbnQuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCA4ZDJmODhhZTAwMzJhMGQ5
MzQ1ZTY4MDBhOTc4NThiNDI4YTRkNmQ5Li4wNjg3MGQyMWRlZTdjYTRmODlkYjllMzQyZjZmMGY1
ZmQzZjU0YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKQEAgLTE2OTEsNyArMTY5MSw3IEBAIGlubGluZSB2b2lkIHJlYWR5U1FM
aXRlU3RhdGVtZW50KHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQs
IFNRCiAgICAgICAgIHN0YXRlbWVudCA9IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghc3RhdGVt
ZW50KSB7Ci0gICAgICAgIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMaXRlU3RhdGVt
ZW50PihkYiwgc3RyKTsKKyAgICAgICAgc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxpdGVTdGF0
ZW1lbnQ+KGRiLCBzdHIpOwogICAgICAgICBpZiAoc3RhdGVtZW50LT5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJQcmVwYXJpbmcgc3RhdGVtZW50ICVzIGZh
aWxlZCIsIHN0ci5hc2NpaSgpLmRhdGEoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3Bw
CmluZGV4IDU4Y2QwM2MzM2UyODA3OGRiYTE1NzgyYjFkYTc1YmNiNGEzMjc0ODYuLjIxODY2MDQ1
MTkyNzY5YmU2ZGZmODU5YTYzMjA0M2Q1MTM1NjljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lv
bkNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIHNlc3Npb24tPnByaXYtPnNlc3Np
b24gPSBhZG9wdFJlZihuZXcgV2ViQXV0b21hdGlvblNlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+
cHJpdi0+c2Vzc2lvbi0+c2V0U2Vzc2lvbklkZW50aWZpZXIoU3RyaW5nOjpmcm9tVVRGOChzZXNz
aW9uLT5wcml2LT5pZC5kYXRhKCkpKTsKLSAgICBzZXNzaW9uLT5wcml2LT5zZXNzaW9uLT5zZXRD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudD4oc2Vzc2lvbikp
OworICAgIHNlc3Npb24tPnByaXYtPnNlc3Npb24tPnNldENsaWVudChtYWtlVW5pcXVlPEF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9uKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEF1
dG9tYXRpb25TZXNzaW9uRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDb250ZXh0TWVudUNsaWVu
dC5jcHAKaW5kZXggOTdlOTI1NjAxNzczN2I3NjY1YWNjOGViMmYzNThlYjJlYzU5MDBiOS4uMjg1
OGRmNmYzNGQ0ZmE2MjEyMDliZjFlYjFlMTA4ODVhZDA1ZTc1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q29udGV4dE1lbnVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENvbnRleHRNZW51Q2xp
ZW50LmNwcApAQCAtNTYsNiArNTYsNiBAQCBjbGFzcyBDb250ZXh0TWVudUNsaWVudCBmaW5hbDog
cHVibGljIEFQSTo6Q29udGV4dE1lbnVDbGllbnQgewogCiB2b2lkIGF0dGFjaENvbnRleHRNZW51
Q2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgd2Via2l0V2ViVmll
d0dldFBhZ2Uod2ViVmlldykuc2V0Q29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxD
b250ZXh0TWVudUNsaWVudD4od2ViVmlldykpOworICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdl
YlZpZXcpLnNldENvbnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+
KHdlYlZpZXcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5j
cHAKaW5kZXggZDMyYjU5YzU0NzY2N2E3ZWM4NzcxODEwNTJiZDFhNzQ5YzBkYmMxYy4uYTM3M2Iy
OTQ1NzE2NzkxYTJkNGMzMDdiZDVlMGE5MjljODE0MGE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCkBAIC01Niw1ICs1Niw1IEBAIGNsYXNzIEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVuCiAKIHZvaWQgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250
ZXh0KFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4
dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpLnNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4od2Vi
Q29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0
KS5zZXRMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcApp
bmRleCBlYWQ0ZjIzNDk5MTY3MDRkMTdkMWYyMzA2NDA4OWY3YTFhMDQ1OTRmLi5lNzcxZGQ3MTg3
ZTU4NTlhZGJkNWEwMTZmOGNhOTM1ZDI4ZTg0YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC0x
MTgsNSArMTE4LDUgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpE
b3dubG9hZENsaWVudCB7CiAKIHZvaWQgYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQoV2Vi
S2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKIHsKLSAgICB3ZWJraXRXZWJDb250ZXh0R2V0UHJv
Y2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0RG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxE
b3dubG9hZENsaWVudD4od2ViQ29udGV4dCkpOworICAgIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9j
ZXNzUG9vbCh3ZWJDb250ZXh0KS5zZXREb3dubG9hZENsaWVudChtYWtlVW5pcXVlPERvd25sb2Fk
Q2xpZW50Pih3ZWJDb250ZXh0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMTgwODNl
NzY5N2E1MTM5OGYyZWUwOTRjZGIwNjhjMjA4MzdiMWZhLi45YjU4MThhOTgzNmYzNzYyZDg5NjIy
ZTM2MmMzZmM4YjJkM2ViZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTI2Nyw4ICsyNjcs
OCBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNl
KiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJL
aXRGYXZpY29uRGF0YWJhc2VQcml2YXRlKiBwcml2ID0gZGF0YWJhc2UtPnByaXY7Ci0gICAgcHJp
di0+aWNvbkRhdGFiYXNlID0gc3RkOjptYWtlX3VuaXF1ZTxJY29uRGF0YWJhc2U+KCk7Ci0gICAg
cHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXRJY29u
RGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbWFr
ZVVuaXF1ZTxJY29uRGF0YWJhc2U+KCk7CisgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXRJY29uRGF0YWJhc2VDbGllbnQ+KGRhdGFiYXNlKSk7CiAgICAg
SWNvbkRhdGFiYXNlOjpkZWxheURhdGFiYXNlQ2xlYW51cCgpOwogICAgIHByaXYtPmljb25EYXRh
YmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRl
QnJvd3NpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNGY5ODBkNGVlMjU4YWNhYzQ1NTgz
MjNjYTdiZDcxY2NkZjNiZWViMS4uNzY3NWM5Y2IzYTVlZGFmODg2NGQxN2ExNzkyMTdjYjk0MjMz
NjViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdEZpbmRDb250cm9sbGVyLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdEZpbmRDb250cm9sbGVyQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfcGFyZW50X2NsYXNzKS0+Y29uc3Ry
dWN0ZWQob2JqZWN0KTsKIAogICAgIFdlYktpdEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxl
ciA9IFdFQktJVF9GSU5EX0NPTlRST0xMRVIob2JqZWN0KTsKLSAgICBnZXRQYWdlKGZpbmRDb250
cm9sbGVyKS5zZXRGaW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8RmluZENsaWVudD4oZmluZENv
bnRyb2xsZXIpKTsKKyAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5zZXRGaW5kQ2xpZW50KG1h
a2VVbmlxdWU8RmluZENsaWVudD4oZmluZENvbnRyb2xsZXIpKTsKIH0KIAogc3RhdGljIHZvaWQg
d2Via2l0RmluZENvbnRyb2xsZXJHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rm9ybUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAppbmRl
eCAxMzRkMWM2Y2ViZTU2N2ZjNTRkOTcwZjg3NmJlMDI5MzFkMzI4MjJkLi5iYzY3YTM1N2RjMDc0
NDVhMzUyOGY4MGYwYWJkNzlkMDdjM2JjMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGb3JtQ2xpZW50LmNwcApAQCAtNDgsNSArNDgsNSBA
QCBjbGFzcyBGb3JtQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Rm9ybUNsaWVudCB7CiAKIHZv
aWQgYXR0YWNoRm9ybUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAg
IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEZvcm1DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxGb3JtQ2xpZW50Pih3ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0dldFBhZ2Uod2Vi
Vmlldykuc2V0Rm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHdlYlZpZXcpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRHZW9sb2NhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDJlMTU5NDVkZmFkMjljMzE1NTBkMWFkM2M0
ZGQxNDk4YmU3YjcyMDQuLjhjYmE0MjJlZDVlMzhiZjg0Yzc2MDU5NGQ2Y2YwZjY1ODhjYmVhNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEdlb2xv
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0R2VvbG9jYXRpb25NYW5hZ2VyLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdEdlb2xvY2F0aW9uTWFuYWdlclN0YXJ0KFdlYktpdEdlb2xvY2F0aW9uTWFuYWdl
ciogbWFuYWdlcikKICAgICB9CiAKICAgICBpZiAoIW1hbmFnZXItPnByaXYtPmdlb2NsdWVQcm92
aWRlcikgewotICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyPigpOworICAgICAgICBtYW5hZ2Vy
LT5wcml2LT5nZW9jbHVlUHJvdmlkZXIgPSBtYWtlVW5pcXVlPEdlb2NsdWVHZW9sb2NhdGlvblBy
b3ZpZGVyPigpOwogICAgICAgICBtYW5hZ2VyLT5wcml2LT5nZW9jbHVlUHJvdmlkZXItPnNldEVu
YWJsZUhpZ2hBY2N1cmFjeShtYW5hZ2VyLT5wcml2LT5oaWdoQWNjdXJhY3lFbmFibGVkKTsKICAg
ICB9CiAgICAgbWFuYWdlci0+cHJpdi0+Z2VvY2x1ZVByb3ZpZGVyLT5zdGFydChbbWFuYWdlcl0o
R2VvbG9jYXRpb25Qb3NpdGlvbiYmIGNvcmVQb3NpdGlvbiwgT3B0aW9uYWw8Q1N0cmluZz4gZXJy
b3IpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCBXZWJLaXRHZW9sb2NhdGlvbk1hbmFnZXIqIHdlYmtp
dEdlb2xvY2F0aW9uTWFuYWdlckNyZWF0ZShXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcgogewogICAg
IGF1dG8qIG1hbmFnZXIgPSBXRUJLSVRfR0VPTE9DQVRJT05fTUFOQUdFUihnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fTUFOQUdFUiwgbnVsbHB0cikpOwogICAgIG1hbmFnZXIt
PnByaXYtPm1hbmFnZXIgPSBwcm94eTsKLSAgICBwcm94eS0+c2V0UHJvdmlkZXIoc3RkOjptYWtl
X3VuaXF1ZTxHZW9sb2NhdGlvblByb3ZpZGVyPihtYW5hZ2VyKSk7CisgICAgcHJveHktPnNldFBy
b3ZpZGVyKG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlcj4obWFuYWdlcikpOwogICAgIHJl
dHVybiBtYW5hZ2VyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJY29uTG9hZGluZ0NsaWVudC5jcHAKaW5kZXggZjNmN2ZmYmYz
MmM0OTFmYTE0Mjg5NTc1NDEwNjhjNTdhZjAwN2YwNC4uNjVmZDdjNjk5MjM4ODAxMTU1OGM2N2Rl
YjI1ZmRhYTI3ZjY2YzUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SWNvbkxvYWRpbmdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEljb25Mb2FkaW5nQ2xpZW50LmNwcApAQCAtNjIsNSArNjIs
NSBAQCBjbGFzcyBJY29uTG9hZGluZ0NsaWVudCA6IHB1YmxpYyBBUEk6Okljb25Mb2FkaW5nQ2xp
ZW50IHsKIAogdm9pZCBhdHRhY2hJY29uTG9hZGluZ0NsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewotICAgIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldEljb25M
b2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHdlYlZpZXcp
KTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5zZXRJY29uTG9hZGluZ0NsaWVu
dChtYWtlVW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAKaW5kZXggYTkzZmYyNWIzOWEyOTI1NjAwZDJjNGFlY2NlY2JjNzU3
MGQ1ZGYzZC4uOTI2MmE4NGRlY2UyNWJmMGJkZjVjNTliNDhkMDAyNTg1MmYzNmJhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcApAQCAtMTc5LDUgKzE3OSw1IEBAIGNsYXNzIFdlYktp
dEluamVjdGVkQnVuZGxlQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGVD
bGllbnQgewogCiB2b2lkIGF0dGFjaEluamVjdGVkQnVuZGxlQ2xpZW50VG9Db250ZXh0KFdlYktp
dFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCiB7Ci0gICAgd2Via2l0V2ViQ29udGV4dEdldFByb2Nl
c3NQb29sKHdlYkNvbnRleHQpLnNldEluamVjdGVkQnVuZGxlQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8V2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQ+KHdlYkNvbnRleHQpKTsKKyAgICB3ZWJraXRX
ZWJDb250ZXh0R2V0UHJvY2Vzc1Bvb2wod2ViQ29udGV4dCkuc2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQobWFrZVVuaXF1ZTxXZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudD4od2ViQ29udGV4dCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDIzNmU4MWMxMzkwYjNlYzNjMTU0
OTE4Njg2YmFmYTVlNTM4NjQ2ODcuLjU1MTYzNjQ0Nzc1NTc0N2I3MGFjNWU3NmIxZDEwNGQ2MWMw
YjVjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyKFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm8KICAgICAsIG1fbm90aWZpY2F0aW9uTWFuYWdlcihub3Rp
ZmljYXRpb25NYW5hZ2VyKQogewogICAgIEFTU0VSVChtX25vdGlmaWNhdGlvbk1hbmFnZXIpOwot
ICAgIG1fbm90aWZpY2F0aW9uTWFuYWdlci0+c2V0UHJvdmlkZXIoc3RkOjptYWtlX3VuaXF1ZTxO
b3RpZmljYXRpb25Qcm92aWRlcj4oKnRoaXMpKTsKKyAgICBtX25vdGlmaWNhdGlvbk1hbmFnZXIt
PnNldFByb3ZpZGVyKG1ha2VVbmlxdWU8Tm90aWZpY2F0aW9uUHJvdmlkZXI+KCp0aGlzKSk7CiB9
CiAKIFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwCmluZGV4IDViY2VmNjhmNjVkMjMxODk4MGNmOTFkYWU1OTNkNzY2NzE0OGE5ODku
Ljg5NmUxM2RhZDk3YmU3ZmY3NzZjMDNiZjZlN2QwMjc4MmUwMzIxYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKQEAgLTIy
NSw2ICsyMjUsNiBAQCBjbGFzcyBVSUNsaWVudCA6IHB1YmxpYyBBUEk6OlVJQ2xpZW50IHsKIAog
dm9pZCBhdHRhY2hVSUNsaWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAg
IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLnNldFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8VUlDbGllbnQ+KHdlYlZpZXcpKTsKKyAgICB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3
KS5zZXRVSUNsaWVudChtYWtlVW5pcXVlPFVJQ2xpZW50Pih3ZWJWaWV3KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
Q29udGVudE1hbmFnZXIuY3BwCmluZGV4IDRmZjRhYjNmYWRhYTgxYzU4MTc3N2E2OWQwNDljMzli
ZDE5NmNlY2YuLjI1NWU4ZTVhNjc5Mjc2NDgzM2QzN2RhZmY5ZjU3OTBmMDg1OTY2NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJDb250ZW50
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIGdib29sZWFuIHdlYmtp
dF91c2VyX2NvbnRlbnRfbWFuYWdlcl9yZWdpc3Rlcl9zY3JpcHRfbWVzc2FnZV9oYW5kbGVyKFdl
YktpdFVzZXJDCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwobmFtZSwgRkFMU0UpOwogCiAgICAg
UmVmPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0KLSAgICAgICAgV2ViU2NyaXB0
TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGll
bnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4KG5hbWUpLCBBUEk6OlVzZXJD
b250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgICAgICBXZWJTY3JpcHRNZXNzYWdlSGFu
ZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudEd0az4obWFuYWdlciwg
bmFtZSksIFN0cmluZzo6ZnJvbVVURjgobmFtZSksIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9y
bWFsV29ybGQoKSk7CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPnVzZXJDb250ZW50Q29udHJv
bGxlci0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogfQogCkBA
IC0yODksNyArMjg5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX3Jl
Z2lzdGVyX3NjcmlwdF9tZXNzYWdlX2hhbmRsZXJfaW5fd29ybGQoV2UKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbCh3b3JsZE5hbWUsIEZBTFNFKTsKIAogICAgIFJlZjxXZWJTY3JpcHRNZXNzYWdl
SGFuZGxlcj4gaGFuZGxlciA9Ci0gICAgICAgIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVh
dGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50R3RrPihtYW5hZ2VyLCBuYW1l
KSwgU3RyaW5nOjpmcm9tVVRGOChuYW1lKSwgd2Via2l0VXNlckNvbnRlbnRXb3JsZCh3b3JsZE5h
bWUpKTsKKyAgICAgICAgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVl
PFNjcmlwdE1lc3NhZ2VDbGllbnRHdGs+KG1hbmFnZXIsIG5hbWUpLCBTdHJpbmc6OmZyb21VVEY4
KG5hbWUpLCB3ZWJraXRVc2VyQ29udGVudFdvcmxkKHdvcmxkTmFtZSkpOwogICAgIHJldHVybiBt
YW5hZ2VyLT5wcml2LT51c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA1OTRkMWJiY2E4NGIz
ZDZjNzE1NDIxZjA4ZjIzYWZhZmY4OGViYjA3Li44YzY4OTgyOTUzOWY0MjIzOGIzMDdmNTU1NjA4
YTVjNTAwMmRjZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzY4LDkgKzM2OCw5IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKIAogICAgIHByaXYtPmdlb2xvY2F0aW9uTWFuYWdl
ciA9IGFkb3B0R1JlZih3ZWJraXRHZW9sb2NhdGlvbk1hbmFnZXJDcmVhdGUocHJpdi0+cHJvY2Vz
c1Bvb2wtPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpKTsKLSAgICBw
cml2LT5ub3RpZmljYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0Tm90aWZp
Y2F0aW9uUHJvdmlkZXI+KHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eT4oKSwgd2ViQ29udGV4dCk7CisgICAgcHJpdi0+bm90aWZpY2F0aW9u
UHJvdmlkZXIgPSBtYWtlVW5pcXVlPFdlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyPihwcml2LT5w
cm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCksIHdl
YkNvbnRleHQpOwogI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
Ci0gICAgcHJpdi0+cmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI+KHdlYkNvbnRleHQpOworICAgIHBy
aXYtPnJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlciA9IG1ha2VVbmlxdWU8UmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyPih3ZWJDb250ZXh0KTsKICNlbmRpZgogfQogCkBAIC02Nzks
NyArNjc5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dl
ZChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBnYm9vbGUKICAgICAgICAgICAgIGdfd2Fybmlu
ZygiTm90IGVuYWJsaW5nIGF1dG9tYXRpb24gb24gV2ViS2l0V2ViQ29udGV4dCBiZWNhdXNlIHRo
ZXJlJ3MgYW5vdGhlciBjb250ZXh0IHdpdGggYXV0b21hdGlvbiBlbmFibGVkLCBvbmx5IG9uZSBp
cyBhbGxvd2VkIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgY29u
dGV4dC0+cHJpdi0+YXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0QXV0
b21hdGlvbkNsaWVudD4oY29udGV4dCk7CisgICAgICAgIGNvbnRleHQtPnByaXYtPmF1dG9tYXRp
b25DbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdEF1dG9tYXRpb25DbGllbnQ+KGNvbnRleHQpOwog
ICAgIH0gZWxzZQogICAgICAgICBjb250ZXh0LT5wcml2LT5hdXRvbWF0aW9uQ2xpZW50ID0gbnVs
bHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCA4MWYwMmU0Yzk2M2YwY2Y4MWI0N2RiNjI4ODYwODk3ZDg0
M2Q2M2ZhLi43NDMwYzNmY2ZkNTRjNDZlZmE2NGUxMmZkOTdkZTVhOTMyOThhNDgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApA
QCAtNzI5LDcgKzcyOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChH
T2JqZWN0KiBvYmplY3QpCiAKICAgICB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZp
ZXcocHJpdi0+Y29udGV4dC5nZXQoKSwgd2ViVmlldywgcHJpdi0+dXNlckNvbnRlbnRNYW5hZ2Vy
LmdldCgpLCBwcml2LT5yZWxhdGVkVmlldyk7CiAKLSAgICBwcml2LT5sb2FkT2JzZXJ2ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBhZ2VMb2FkU3RhdGVPYnNlcnZlcj4od2ViVmlldyk7CisgICAgcHJp
di0+bG9hZE9ic2VydmVyID0gbWFrZVVuaXF1ZTxQYWdlTG9hZFN0YXRlT2JzZXJ2ZXI+KHdlYlZp
ZXcpOwogICAgIGdldFBhZ2Uod2ViVmlldykucGFnZUxvYWRTdGF0ZSgpLmFkZE9ic2VydmVyKCpw
cml2LT5sb2FkT2JzZXJ2ZXIpOwogCiAgICAgLy8gVGhlIHJlbGF0ZWQgdmlldyBpcyBvbmx5IHZh
bGlkIGR1cmluZyB0aGUgY29uc3RydWN0aW9uLgpAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFdQRSkKLSAgICBwcml2LT52aWV3LT5zZXRDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJWaWV3Q2xpZW50Pih3ZWJWaWV3KSk7CisgICAgcHJpdi0+dmlldy0+c2V0Q2xpZW50
KG1ha2VVbmlxdWU8V2ViVmlld0NsaWVudD4od2ViVmlldykpOwogI2VuZGlmCiAKICAgICAvLyBU
aGlzIG5lZWRzIHRvIGJlIGFmdGVyIGF0dGFjaFVJQ2xpZW50VG9WaWV3KCkgYmVjYXVzZSBXZWJQ
YWdlUHJveHk6OnNldFVJQ2xpZW50KCkgY2FsbHMgc2V0Q2FuUnVuTW9kYWwoKSB3aXRoIHRydWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwCmluZGV4IGYwOWQ2YzdlOTIwNjgzYTc1NjY1Mjc2OTY3ZTc0N2NjNmNlZWI0ODEuLjA2YjNi
ODM2MDY1ZDlmNjZhMDc5OGEyMDk1NTEzY2E4NjhiMzFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChHdGtXaWRnZXQqIHZpZXdXaWRnZXQp
CiAvLyBQYWdlQ2xpZW50J3MgcHVyZSB2aXJ0dWFsIGZ1bmN0aW9ucwogc3RkOjp1bmlxdWVfcHRy
PERyYXdpbmdBcmVhUHJveHk+IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcz4oKndlYmtpdFdlYlZpZXdCYXNl
R2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpKSwgcHJvY2Vzcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+
KCp3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3V2lk
Z2V0KSksIHByb2Nlc3MpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNE
aXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFbW9qaUNob29zZXIuY3BwCmluZGV4IDMx
ZTA5NzNmZTEwMDNjNmVhNjUyMzA2MWE2N2M5NDlkNTNlYmQ2YjcuLjJkMWMyY2IzNjhhOTkzMzE2
OTc0MjQ2YTBlZDU5OWMyOGRjYWU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0RW1vamlDaG9vc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVtb2ppQ2hvb3Nlci5jcHAKQEAgLTUxOSw3ICs1MTksNyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRFbW9qaUNob29zZXJTZXR1cEVtb2ppU2VjdGlvbnMoV2ViS2l0
RW1vamlDaG9vc2VyKiBjaG9vc2VyLCBHdAogICAgICAgICBjaG9vc2VyLT5wcml2LT5wb3B1bGF0
ZVNlY3Rpb25zVGltZXIgPSBudWxscHRyOwogICAgIH07CiAKLSAgICBjaG9vc2VyLT5wcml2LT5w
b3B1bGF0ZVNlY3Rpb25zVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxiYWNrVGltZXI+KFdU
Rk1vdmUocG9wdWxhdGVTZWN0aW9ucykpOworICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2Vj
dGlvbnNUaW1lciA9IG1ha2VVbmlxdWU8Q2FsbGJhY2tUaW1lcj4oV1RGTW92ZShwb3B1bGF0ZVNl
Y3Rpb25zKSk7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9wdWxhdGVTZWN0aW9uc1RpbWVyLT5zZXRQ
cmlvcml0eShHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAgICAgY2hvb3Nlci0+cHJpdi0+cG9w
dWxhdGVTZWN0aW9uc1RpbWVyLT5zZXROYW1lKCJbV2ViS2l0RW1vamlDaG9vc2VyXSBwb3B1bGF0
ZSBzZWN0aW9ucyB0aW1lciIpOwogICAgIGNob29zZXItPnByaXYtPnBvcHVsYXRlU2VjdGlvbnNU
aW1lci0+c3RhcnRSZXBlYXRpbmcoeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcAppbmRleCBmOWM1YTc1MWZlYWUxY2MxNWRiMTJmMjM5Yzc3NTEyNThi
ZDJkMzAwLi41YmE2MTBlN2Q5YTQ0ZDA0NzM4MzgxZTIzZDA0MGJkYTkyYzNmYzlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0xMDYsMTMgKzEw
NiwxMyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVz
dChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFu
YWdlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7
CiAgICAgYXV0byB1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdl
cnMuYWRkKHVzZXJDb250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJl
c3VsdC5pc05ld0VudHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50Pigq
dGhpcyksICJpbnNwZWN0b3IiLCBBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdvcmxkKCkp
OworICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJ
OjpVc2VyQ29udGVudFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKICAgICAgICAgd2Via2l0VXNlckNv
bnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5h
Z2VyKS0+YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogICAgICAg
ICBnX29iamVjdF93ZWFrX3JlZihHX09CSkVDVCh1c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVy
cHJldF9jYXN0PEdXZWFrTm90aWZ5Pih1c2VyQ29udGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlz
KTsKICAgICB9CiAKICAgICBhdXRvKiBjbGllbnQgPSBtX2luc3BlY3RvckNsaWVudHMuZW5zdXJl
KHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgW3RoaXMsICZyZXF1ZXN0VVJMXSB7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVS
TC5ob3N0KCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMp
OworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+KHJlcXVl
c3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgpLnZhbHVlKCksICp0
aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKICAgICBHU3RyaW5nKiBodG1s
ID0gZ19zdHJpbmdfbmV3KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJJbnNwZWN0b3IuY3BwCmluZGV4IGJjYWI4ZDViNDRiZjJmMWQ5ZWQ5N2E0
MzNjYTIxZDllOTdkYzg4MjQuLjgwZDIwYWE3NjAzYmFkYWI5MDBmZTRiZDE1OTBhYWQzOWIzMGUy
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
SW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkluc3BlY3Rvci5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCBXZWJLaXRXZWJJbnNwZWN0b3Iq
IHdlYmtpdFdlYkluc3BlY3RvckNyZWF0ZShXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9y
KQogewogICAgIFdlYktpdFdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gV0VCS0lUX1dFQl9JTlNQ
RUNUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9JTlNQRUNUT1IsIE5VTEwpKTsKICAg
ICBpbnNwZWN0b3ItPnByaXYtPndlYkluc3BlY3RvciA9IHdlYkluc3BlY3RvcjsKLSAgICB3ZWJJ
bnNwZWN0b3ItPnNldENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEluc3BlY3RvckNsaWVu
dD4oaW5zcGVjdG9yKSk7CisgICAgd2ViSW5zcGVjdG9yLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXRJbnNwZWN0b3JDbGllbnQ+KGluc3BlY3RvcikpOwogICAgIHJldHVybiBpbnNwZWN0b3I7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAKaW5kZXggMWI5ZGQ4ZDFmNDYwMjE0ZjVhNzcyNjcyYzJmYjY1MzcwYjUy
MGM1ZS4uODhiM2NmNDNiZmU2OGVlOTdjNzMxYjc2NGQ0NDk5MGE3YmZjNWE4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKQEAgLTU2Niw3ICs1NjYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlz
dCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS50YXJnZXRMaXN0KCkp
OwogCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVX
X0JBU0Uob2JqZWN0KS0+cHJpdjsKLSAgICBwcml2LT5wYWdlQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ2xpZW50SW1wbD4odmlld1dpZGdldCk7CisgICAgcHJpdi0+cGFnZUNsaWVudCA9
IG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KHZpZXdXaWRnZXQpOwogICAgIHByaXYtPmRpYWxv
ZyA9IG51bGxwdHI7CiB9CiAKQEAgLTEyMjAsNyArMTIyMCw3IEBAIEdlc3R1cmVDb250cm9sbGVy
JiB3ZWJraXRXZWJWaWV3QmFzZUdlc3R1cmVDb250cm9sbGVyKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jh
c2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgcHJp
di0+Z2VzdHVyZUNvbnRyb2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdlc3R1cmVDb250cm9sbGVy
PihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSwgc3RkOjptYWtlX3VuaXF1ZTxUb3VjaEdlc3R1cmVD
b250cm9sbGVyPih3ZWJWaWV3QmFzZSkpOworICAgICAgICBwcml2LT5nZXN0dXJlQ29udHJvbGxl
ciA9IG1ha2VVbmlxdWU8R2VzdHVyZUNvbnRyb2xsZXI+KEdUS19XSURHRVQod2ViVmlld0Jhc2Up
LCBtYWtlVW5pcXVlPFRvdWNoR2VzdHVyZUNvbnRyb2xsZXI+KHdlYlZpZXdCYXNlKSk7CiAgICAg
cmV0dXJuICpwcml2LT5nZXN0dXJlQ29udHJvbGxlcjsKIH0KIApAQCAtMTUwMSw3ICsxNTAxLDcg
QEAgRHJhZ0FuZERyb3BIYW5kbGVyJiB3ZWJraXRXZWJWaWV3QmFzZURyYWdBbmREcm9wSGFuZGxl
cihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAoIXByaXYtPmRyYWdBbmREcm9w
SGFuZGxlcikKLSAgICAgICAgcHJpdi0+ZHJhZ0FuZERyb3BIYW5kbGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxEcmFnQW5kRHJvcEhhbmRsZXI+KCpwcml2LT5wYWdlUHJveHkpOworICAgICAgICBwcml2
LT5kcmFnQW5kRHJvcEhhbmRsZXIgPSBtYWtlVW5pcXVlPERyYWdBbmREcm9wSGFuZGxlcj4oKnBy
aXYtPnBhZ2VQcm94eSk7CiAgICAgcmV0dXJuICpwcml2LT5kcmFnQW5kRHJvcEhhbmRsZXI7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTE3MTMsNyArMTcxMyw3IEBAIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYmtpdFdlYlZpZXdCYXNlCiAgICAgaWYgKHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxl
cikKICAgICAgICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyLT5jb25uZWN0VG9Qcm9jZXNz
KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHByaXYtPnZpZXdHZXN0dXJlQ29udHJvbGxlciA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI+KCpwcml2LT5wYWdl
UHJveHkpOworICAgICAgICBwcml2LT52aWV3R2VzdHVyZUNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyPigqcHJpdi0+cGFnZVByb3h5KTsKICAgICAg
ICAgcHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyLT5zZXRTd2lwZUdlc3R1cmVFbmFibGVkKHBy
aXYtPmlzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZUVuYWJsZWQpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggMGJhNTA4ODg2MDQ5
NTdlMjVkZmJlYWM0NjY1ZmIxNzgyYTQyMDY4ZS4uMTQ2MDNkNWFmZWJhZjZkZWUwMTE5Nzk1Nzcw
Mzg4MzQ5ZDRlN2IzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KQEAgLTkzMyw3ICs5MzMsNyBAQCAtICh2b2lkKW1heWJlSW5zdGFsbEljb25Mb2FkaW5nQ2xp
ZW50CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBpZiAoW3Nl
bGYgcmVzcG9uZHNUb1NlbGVjdG9yOkljb25Mb2FkaW5nQ2xpZW50OjpkZWxlZ2F0ZVNlbGVjdG9y
KCldKQotICAgICAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5zZXRJY29uTG9hZGluZ0NsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PihzZWxmKSk7CisgICAgICAgIF9kYXRh
LT5faW1wbC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VVbmlxdWU8SWNvbkxvYWRp
bmdDbGllbnQ+KHNlbGYpKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5T
UmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHJvY2Vzc1Bv
b2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpY29uZmlndXJh
dGlvbgpAQCAtOTQ1LDcgKzk0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihO
U1JlY3QpZnJhbWUgcHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmCiAgICAgV2Vi
S2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxs
b2NdIGluaXRdOwotICAgIF9kYXRhLT5faW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpX
ZWJWaWV3SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJh
dGlvbikpOworICAgIF9kYXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXZWJWaWV3SW1w
bD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwog
CiAgICAgW3NlbGYgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRdOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDg1
MTI5YTU0ODdjOWZmYmVkNTY2NDZjYzEwZGQxODgzYzk4NzU2ZDMuLmUyMDhhNWM1NWQ3NTg4NTcz
ZGZmNDM2MDMzNzdlZjhkMTYzNTg1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoV0tXUEU6OlZpZXcm
IHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4oKSkKKyAgICAsIG1f
c2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTY3JvbGxHZXN0dXJlQ29udHJvbGxl
cj4oKSkKIHsKIH0KIApAQCAtNjMsNyArNjMsNyBAQCBJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVu
dEltcGw6Omhvc3RGaWxlRGVzY3JpcHRvcigpCiAKIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJl
YVByb3h5PiBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KG1fdmlldy5wYWdlKCksIHByb2Nlc3MpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzPiht
X3ZpZXcucGFnZSgpLCBwcm9jZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmll
d05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggYmU1MGYxMjc0ZThjMWZhNDkxMDlhYTI4
NTViOGJiNDE1NzE3MDQ0Zi4uMTJlMzJmYWQ0MDAyOGM3N2U1NzAzMDkyODQ5ODQ0MGQwMzBjZTA0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC00
Miw4ICs0Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiBuYW1lc3BhY2UgV0tXUEUgewog
CiBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25zdCBBUEk6
OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKLSAgICA6IG1fY2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQotICAgICwgbV9wYWdlQ2xpZW50KHN0
ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKKyAgICA6IG1fY2xpZW50KG1h
a2VVbmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlx
dWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKICAgICAsIG1fc2l6ZSB7IDgwMCwgNjAwIH0KICAg
ICAsIG1fdmlld1N0YXRlRmxhZ3MgeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0Fj
dGl2ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNGb2N1c2VkLCBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cgfQog
ICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCkBAIC0xODQsNyArMTg0LDcgQEAgVmlldzo6flZpZXco
KQogdm9pZCBWaWV3OjpzZXRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Vmlld0NsaWVudD4m
JiBjbGllbnQpCiB7CiAgICAgaWYgKCFjbGllbnQpCi0gICAgICAgIG1fY2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CisgICAgICAgIG1fY2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6OlZpZXdDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2NsaWVudCA9IFdU
Rk1vdmUoY2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvcXQvV1BFUXRWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
cXQvV1BFUXRWaWV3LmNwcAppbmRleCBlMWRjODU3ZmY5OTVlZDBjZTZhODUzNjU5Y2M1YjEzNTYx
Y2IzNjZjLi5iNGYyN2I2ZDM0ZTI0MmJhNTUzNWFiNWIyZTRlY2U1MzE1ZDA5ZDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXcuY3BwCkBAIC0x
NTAsNyArMTUwLDcgQEAgdm9pZCBXUEVRdFZpZXc6Om5vdGlmeUxvYWRDaGFuZ2VkQ2FsbGJhY2so
V2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCBldmVudCwKIAogICAgIGlmIChzdGF0dXNT
ZXQpIHsKICAgICAgICAgV1BFUXRWaWV3TG9hZFJlcXVlc3RQcml2YXRlIGxvYWRSZXF1ZXN0UHJp
dmF0ZSh2aWV3LT51cmwoKSwgbG9hZFN0YXR1cywgIiIpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V1BFUXRWaWV3TG9hZFJlcXVlc3Q+IGxvYWRSZXF1ZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxX
UEVRdFZpZXdMb2FkUmVxdWVzdD4obG9hZFJlcXVlc3RQcml2YXRlKTsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFdQRVF0Vmlld0xvYWRSZXF1ZXN0PiBsb2FkUmVxdWVzdCA9IG1ha2VVbmlxdWU8
V1BFUXRWaWV3TG9hZFJlcXVlc3Q+KGxvYWRSZXF1ZXN0UHJpdmF0ZSk7CiAgICAgICAgIFFfRU1J
VCB2aWV3LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiAgICAgfQogfQpAQCAt
MTY2LDcgKzE2Niw3IEBAIHZvaWQgV1BFUXRWaWV3Ojpub3RpZnlMb2FkRmFpbGVkQ2FsbGJhY2so
V2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QKICAgICAgICAgbG9hZFN0YXR1
cyA9IFdQRVF0Vmlldzo6TG9hZFN0YXR1czo6TG9hZEZhaWxlZFN0YXR1czsKIAogICAgIFdQRVF0
Vmlld0xvYWRSZXF1ZXN0UHJpdmF0ZSBsb2FkUmVxdWVzdFByaXZhdGUoUVVybChRU3RyaW5nKGZh
aWxpbmdVUkkpKSwgbG9hZFN0YXR1cywgZXJyb3ItPm1lc3NhZ2UpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdQRVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXUEVRdFZpZXdMb2FkUmVxdWVzdD4gbG9hZFJlcXVlc3QgPSBtYWtlVW5pcXVlPFdQ
RVF0Vmlld0xvYWRSZXF1ZXN0Pihsb2FkUmVxdWVzdFByaXZhdGUpOwogICAgIFFfRU1JVCB2aWV3
LT5sb2FkaW5nQ2hhbmdlZChsb2FkUmVxdWVzdC5nZXQoKSk7CiB9CiAKQEAgLTQzOSw3ICs0Mzks
NyBAQCBzdGF0aWMgdm9pZCBqc0FzeW5jUmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlcgogKi8KIHZvaWQgV1BFUXRWaWV3OjpydW5KYXZh
U2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCwgY29uc3QgUUpTVmFsdWUmIGNhbGxiYWNrKQog
ewotICAgIHN0ZDo6dW5pcXVlX3B0cjxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPiBkYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxKYXZhc2NyaXB0Q2FsbGJhY2tEYXRhPihjYWxsYmFjaywgUVBvaW50ZXI8
V1BFUXRWaWV3Pih0aGlzKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEphdmFzY3JpcHRDYWxsYmFj
a0RhdGE+IGRhdGEgPSBtYWtlVW5pcXVlPEphdmFzY3JpcHRDYWxsYmFja0RhdGE+KGNhbGxiYWNr
LCBRUG9pbnRlcjxXUEVRdFZpZXc+KHRoaXMpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcnVuX2ph
dmFzY3JpcHQobV93ZWJWaWV3LmdldCgpLCBzY3JpcHQudG9VdGY4KCkuY29uc3REYXRhKCksIG51
bGxwdHIsIGpzQXN5bmNSZWFkeUNhbGxiYWNrLCBkYXRhLnJlbGVhc2UoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL3F0L1dQRVF0Vmlld0JhY2tl
bmQuY3BwCmluZGV4IGE4NTI2Y2VkMDIwZjYzNDRlNzJmYmNjM2FhNDQ5YzJkZDNhYmQxZjkuLjEz
ZmQzN2FlZmYyYjY1MzVkNTRmMzE0YzQxNmUxY2I4NjhlM2U4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvcXQvV1BFUXRWaWV3QmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9xdC9XUEVRdFZpZXdCYWNrZW5kLmNwcApA
QCAtNjUsNyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V1BFUXRWaWV3QmFja2VuZD4gV1BFUXRW
aWV3QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFFTaXplRiYgc2l6ZSwgUQogICAgIGlmICghZWdsQ29u
dGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXplLCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250
ZXh0LCB2aWV3KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXUEVRdFZpZXdCYWNrZW5kPihzaXpl
LCBlZ2xEaXNwbGF5LCBlZ2xDb250ZXh0LCBjb250ZXh0LCB2aWV3KTsKIH0KIAogV1BFUXRWaWV3
QmFja2VuZDo6V1BFUXRWaWV3QmFja2VuZChjb25zdCBRU2l6ZUYmIHNpemUsIEVHTERpc3BsYXkg
ZGlzcGxheSwgRUdMQ29udGV4dCBlZ2xDb250ZXh0LCBRUG9pbnRlcjxRT3BlbkdMQ29udGV4dD4g
Y29udGV4dCwgUVBvaW50ZXI8V1BFUXRWaWV3PiB2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApp
bmRleCAyYzc4ZGY1MDBmNzQ2Mzc1ZDMxZDg0ZDg4NmUzMmEyZDg4YWIxY2VjLi4xOWFlZjk0NGY3
NGY2MmMxOWQ0ODk5YjkzODY2MDBmYTcxYzQ2NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApA
QCAtNzMsMTEgKzczLDExIEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRQYWdlTG9hZFRp
bWVvdXQgPSAzMDBfczsKIHN0YXRpYyBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpQYWdlTG9hZFN0cmF0ZWd5IGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5ID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOwogCiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6V2ViQXV0b21hdGlvblNlc3Npb24oKQotICAgIDogbV9jbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQorICAgIDog
bV9jbGllbnQobWFrZVVuaXF1ZTxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PigpKQogICAg
ICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2Jh
Y2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRl
ci5jb3B5UmVmKCkpKQogICAgICwgbV9kb21haW5EaXNwYXRjaGVyKEF1dG9tYXRpb25CYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKG1fYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9k
b21haW5Ob3RpZmllcihzdGQ6Om1ha2VfdW5pcXVlPEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNo
ZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQorICAgICwgbV9kb21haW5Ob3RpZmllcihtYWtlVW5pcXVl
PEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+KG1fZnJvbnRlbmRSb3V0ZXIpKQogICAgICwg
bV9sb2FkVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViQXV0b21hdGlvblNlc3Npb246
OmxvYWRUaW1lckZpcmVkKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfQUNUSU9OU19BUEkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4
IDZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTguLjUzYjM3NzA3ZTg3YzUx
ZGM0YWU5ZDYzOWIxZDRmMzI2MzgwNjhiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0xMzcsNyArMTM3LDcgQEAgYm9vbCBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIE9wdGlvblNldDwKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01l
c3NhZ2VFeHBlY3RlZCk7CiAKLSAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElQ
Qzo6RW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7
CisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KFQ6OnJlY2VpdmVy
TmFtZSgpLCBUOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOwogICAgIGVuY29kZXItPmVuY29kZSht
ZXNzYWdlLmFyZ3VtZW50cygpKTsKIAogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVu
Y29kZXIpLCBzZW5kT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9JY29uTG9hZGluZ0RlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQppbmRleCBhMzQ0ZGZmOWNlMGQ1MzVjYTMwZGIy
YmViNWJjYmQ3YzBkNzRjZmI0Li4xNjNmYjk1MmVlMGVhOWI3MWEzZDQ5ZDNkZDk3Y2UwMDQzY2M2
OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGlu
Z0RlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2Fk
aW5nRGVsZWdhdGUubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6fklj
b25Mb2FkaW5nRGVsZWdhdGUoKQogCiBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0Ns
aWVudD4gSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6Y3JlYXRlSWNvbkxvYWRpbmdDbGllbnQoKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEljb25Mb2FkaW5nQ2xpZW50PigqdGhpcyk7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KCp0aGlzKTsKIH0KIAogUmV0
YWluUHRyPGlkIDxfV0tJY29uTG9hZGluZ0RlbGVnYXRlPiA+IEljb25Mb2FkaW5nRGVsZWdhdGU6
OmRlbGVnYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CmluZGV4IDMwMmY2ODIyODJiY2M3ZWUzOGQzZjY3MjdkNmQyM2Y4NGIyODlkYTguLjdiNjI0YWJm
YTJmNDExMDQwYTA2YjJiMjY3ZGJiYjMyY2Q4MWNkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtNzgsMTMgKzc4LDEzIEBAIFVJRGVsZWdhdGU6
On5VSURlbGVnYXRlKCkKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiBVSURlbGVnYXRlOjpjcmVhdGVDb250ZXh0TWVudUNs
aWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4dE1lbnVDbGllbnQ+
KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxDb250ZXh0TWVudUNsaWVudD4oKnRoaXMp
OwogfQogI2VuZGlmCiAKIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiBVSURlbGVnYXRl
OjpjcmVhdGVVSUNsaWVudCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VUlDbGll
bnQ+KCp0aGlzKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxVSUNsaWVudD4oKnRoaXMpOwogfQog
CiBSZXRhaW5QdHI8aWQgPFdLVUlEZWxlZ2F0ZT4gPiBVSURlbGVnYXRlOjpkZWxlZ2F0ZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGE4MTNmNTUxN2RmMWVlNTkzMWYzMjUzMjRh
YmI4MGM5Y2UzYTUzNGQuLjkxY2Y5NDgwYzc1MThjZDliYjE3ZTlmY2E0ZTkxNmQwYjA3M2IwOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjcmVhdGVNZWRpYVNvdXJjZUZvckNhcHR1cmVE
ZXZpY2VXaXRoQ29uc3RyYWkKICAgICAgICAgc291cmNlLT5zZXRJc1JlbW90ZSh0cnVlKTsKICAg
ICAgICAgc2V0dGluZ3MgPSBzb3VyY2UtPnNldHRpbmdzKCk7CiAgICAgICAgIEFTU0VSVCghbV9w
cm94aWVzLmNvbnRhaW5zKGlkKSk7Ci0gICAgICAgIG1fcHJveGllcy5hZGQoaWQsIHN0ZDo6bWFr
ZV91bmlxdWU8U291cmNlUHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92
ZShzb3VyY2UpKSk7CisgICAgICAgIG1fcHJveGllcy5hZGQoaWQsIG1ha2VVbmlxdWU8U291cmNl
UHJveHk+KGlkLCAqbV9wcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzb3VyY2UpKSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIGludmFsaWRDb25zdHJhaW50cyA9IFdURk1vdmUoc291cmNlT3JF
cnJvci5lcnJvck1lc3NhZ2UpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2NlZWRlZCwgaW52
YWxpZENvbnN0cmFpbnRzLCBXVEZNb3ZlKHNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzMDcwZDU3
NDQzZmRmNzE5NjA4NjAzMGUzZTYzMTQxZTA2Nzg1ODI2Li5lNWUzMmQyZmEyYTA4NjA0MTdjNmNm
ODBkN2JjZTU5YjlhNzM5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIGlmICghW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFN1cHByZXNzTWVt
b3J5UHJlc3N1cmVIYW5kbGVyIl0pCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIoKTsKIAotICAgIHNldExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKSk7CisgICAgc2V0
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG1ha2VVbmlxdWU8TGVnYWN5Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC01MTQsNyArNTE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnREaXNwbGF5TGlu
ayhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVuc2lnbmVkIG9ic2UKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlMaW5rID0gc3RkOjpt
YWtlX3VuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKKyAgICBhdXRvIGRpc3BsYXlMaW5r
ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGluaz4oZGlzcGxheUlEKTsKICAgICBkaXNwbGF5TGluay0+
YWRkT2JzZXJ2ZXIoY29ubmVjdGlvbiwgb2JzZXJ2ZXJJRCk7CiAgICAgbV9kaXNwbGF5TGlua3Mu
YXBwZW5kKFdURk1vdmUoZGlzcGxheUxpbmspKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggNWMyMWNhNzVh
MTgyOWM1MGYxZDgyZjU3Nzc4YjRlODZlNjlkNzBlYS4uYjFlYzg0NmI3YjQ2MDU0OGNlMGY4NmQ3
YTVkMTE3YTY3Njc4YzRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKQogICAgIGF1dG8gYmFja2dyb3VuZEFjdGl2aXR5VGltZW91dEhhbmRs
ZXIgPSBbYWN0aXZpdHlUb2tlbiA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1dhc1VuZXhw
ZWN0ZWRseVVuc3VzcGVuZGVkKCkgLSBsYW1iZGEsIGJhY2tncm91bmQgYWN0aXZpdHkgdGltZWQg
b3V0Iiwgd2Vha1RoaXMuZ2V0KCkpOwogICAgIH07Ci0gICAgbV91bmV4cGVjdGVkQWN0aXZpdHlU
aW1lciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcj4o
V1RGTW92ZShiYWNrZ3JvdW5kQWN0aXZpdHlUaW1lb3V0SGFuZGxlciksIHVuZXhwZWN0ZWRBY3Rp
dml0eUR1cmF0aW9uKTsKKyAgICBtX3VuZXhwZWN0ZWRBY3Rpdml0eVRpbWVyID0gbWFrZVVuaXF1
ZTxXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPihXVEZNb3ZlKGJhY2tncm91bmRBY3Rp
dml0eVRpbWVvdXRIYW5kbGVyKSwgdW5leHBlY3RlZEFjdGl2aXR5RHVyYXRpb24pOwogICAgIGNv
bXBsZXRpb24oKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQppbmRleCBjYWIwNTUwOWZiNmQwMmJiNDNlODhkOGQ2NTQ4OWZmYjcyMmZl
ODAyLi44ZGY0ZGE3YjMyMDgwOTQ2ZGY3MWM5MjgyMTY1M2Y2ZWE5NDA3NTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTMxNSw3ICsxMzE1
LDcgQEAgc3RhdGljIE5TVHJhY2tpbmdBcmVhT3B0aW9ucyB0cmFja2luZ0FyZWFPcHRpb25zKCkK
IAogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4g
KnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBt
X3ZpZXcodmlldykKLSAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGll
bnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQorICAgICwgbV9wYWdlQ2xpZW50KG1ha2VVbmlx
dWU8UGFnZUNsaWVudEltcGw+KHZpZXcsIG91dGVyV2ViVmlldykpCiAgICAgLCBtX3BhZ2UocHJv
Y2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKSkKICAgICAsIG1fbmVlZHNWaWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKG1fcGFnZS0+
cHJlZmVyZW5jZXMoKS5wbHVnaW5zRW5hYmxlZCgpKQogICAgICwgbV9pbnRyaW5zaWNDb250ZW50
U2l6ZShDR1NpemVNYWtlKE5TVmlld05vSW50cmluc2ljTWV0cmljLCBOU1ZpZXdOb0ludHJpbnNp
Y01ldHJpYykpCkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwo
TlNWaWV3IDxXZWJWaWV3SW1wbERlbGVnYXRlPiAqdmlldywgV0tXZWJWaWV3ICpvdXRlcldlYgog
ICAgIHZpZXcubGF5ZXJDb250ZW50c1BsYWNlbWVudCA9IE5TVmlld0xheWVyQ29udGVudHNQbGFj
ZW1lbnRUb3BMZWZ0OwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fcGFnZS0+
c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNs
aWVudD4odmlldykpOworICAgIG1fcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVl
PFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4odmlldykpOwogI2VuZGlmCiAKICAgICBXZWJQcm9j
ZXNzUG9vbDo6c3RhdGlzdGljcygpLndrVmlld0NvdW50Kys7CkBAIC0xNzExLDkgKzE3MTEsOSBA
QCBDR1NpemUgV2ViVmlld0ltcGw6OmZpeGVkTGF5b3V0U2l6ZSgpIGNvbnN0CiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBXZWJWaWV3SW1wbDo6Y3JlYXRlRHJhd2lu
Z0FyZWFQcm94eShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CiAgICAgaWYgKFtbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXQyVXNl
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEiXSBib29sVmFsdWVdKQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3BhZ2Us
IHByb2Nlc3MpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eT4obV9wYWdlLCBwcm9jZXNz
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5PihtX3BhZ2UsIHByb2Nlc3MpOwogfQogCiBib29sIFdlYlZpZXdJbXBsOjppc1VzaW5nVUlT
aWRlQ29tcG9zaXRpbmcoKSBjb25zdApAQCAtMzM1Niw3ICszMzU2LDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGV4dElu
ZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yJiB0ZXh0SW5kaWNhdG9yLCBXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgbGlmZXRpbWUpCiB7CiAgICAgaWYgKCFtX3RleHRJ
bmRpY2F0b3JXaW5kb3cpCi0gICAgICAgIG1fdGV4dEluZGljYXRvcldpbmRvdyA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvdz4obV92aWV3LmdldEF1dG9yZWxl
YXNlZCgpKTsKKyAgICAgICAgbV90ZXh0SW5kaWNhdG9yV2luZG93ID0gbWFrZVVuaXF1ZTxXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yV2luZG93PihtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCkpOwogCiAg
ICAgTlNSZWN0IHRleHRCb3VuZGluZ1JlY3RJblNjcmVlbkNvb3JkaW5hdGVzID0gW1ttX3ZpZXcg
d2luZG93XSBjb252ZXJ0UmVjdFRvU2NyZWVuOlttX3ZpZXcgY29udmVydFJlY3Q6dGV4dEluZGlj
YXRvci50ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgdG9WaWV3Om5pbF1d
OwogICAgIG1fdGV4dEluZGljYXRvcldpbmRvdy0+c2V0VGV4dEluZGljYXRvcih0ZXh0SW5kaWNh
dG9yLCBOU1JlY3RUb0NHUmVjdCh0ZXh0Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyks
IGxpZmV0aW1lKTsKQEAgLTQzNTgsNyArNDM1OCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNhdmVC
YWNrRm9yd2FyZFNuYXBzaG90Rm9ySXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQog
Vmlld0dlc3R1cmVDb250cm9sbGVyJiBXZWJWaWV3SW1wbDo6ZW5zdXJlR2VzdHVyZUNvbnRyb2xs
ZXIoKQogewogICAgIGlmICghbV9nZXN0dXJlQ29udHJvbGxlcikKLSAgICAgICAgbV9nZXN0dXJl
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld0dlc3R1cmVDb250cm9sbGVyPihtX3Bh
Z2UpOworICAgICAgICBtX2dlc3R1cmVDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI+KG1fcGFnZSk7CiAgICAgcmV0dXJuICptX2dlc3R1cmVDb250cm9sbGVyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwCmluZGV4IDhlYWNkOTFhMWU2YWU0ODU2NWM5ZTU4Y2NkYTEwZjNlYTQ0
NGMyNzYuLjYyNjRkZGI3Zjc5MGMyZmNjY2RmNDEwZGY2ZTJjOTMzN2I2NWQyODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljczo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uc3QgVXBkYXRlSW5mbyYgdXAKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgbV9iYWNraW5n
U3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZT4odXBkYXRlSW5mby52aWV3U2l6
ZSwgdXBkYXRlSW5mby5kZXZpY2VTY2FsZUZhY3RvciwgbV93ZWJQYWdlUHJveHkpOworICAgICAg
ICBtX2JhY2tpbmdTdG9yZSA9IG1ha2VVbmlxdWU8QmFja2luZ1N0b3JlPih1cGRhdGVJbmZvLnZp
ZXdTaXplLCB1cGRhdGVJbmZvLmRldmljZVNjYWxlRmFjdG9yLCBtX3dlYlBhZ2VQcm94eSk7CiAK
ICAgICBtX2JhY2tpbmdTdG9yZS0+aW5jb3Jwb3JhdGVVcGRhdGUodXBkYXRlSW5mbyk7CiAKQEAg
LTQ0Miw3ICs0NDIsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNz
OjpkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKFdURjo6RnVuYwogICAgIH0KIAogICAgIGlm
ICghbV9kcmF3aW5nTW9uaXRvcikKLSAgICAgICAgbV9kcmF3aW5nTW9uaXRvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdNb25p
dG9yPihtX3dlYlBhZ2VQcm94eSk7CisgICAgICAgIG1fZHJhd2luZ01vbml0b3IgPSBtYWtlVW5p
cXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcj4o
bV93ZWJQYWdlUHJveHkpOwogICAgIG1fZHJhd2luZ01vbml0b3ItPnN0YXJ0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
ZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKaW5kZXggYTJkMDM4NmFjZjVkOGFkNTM1Yzc5MTJh
ODg2Y2JkMGYwMDU0Nzg2OC4uNmFhMjQ3YmQ4NzcwMjE1ODgyNDcxNmE2NjVlZTFiNzg2OTZhNmE0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRT
dG9yYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZXZpY2VJZEhh
c2hTYWx0U3RvcmFnZTo6SGFzaFNhbHRGb3JPcmlnaW4+IERldmljZUlkSGFzaFNhbHRTdG9yCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaGFzaFNhbHRGb3JPcmln
aW4gPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5
T3JpZ2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFs
dWUoKSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOworICAgIGF1dG8gaGFzaFNhbHRGb3JP
cmlnaW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKHNlY3VyaXR5T3Jp
Z2luRGF0YS52YWx1ZSgpKSwgV1RGTW92ZShwYXJlbnRTZWN1cml0eU9yaWdpbkRhdGEudmFsdWUo
KSksIFdURk1vdmUoZGV2aWNlSWRIYXNoU2FsdCkpOwogCiAgICAgaGFzaFNhbHRGb3JPcmlnaW4t
Pmxhc3RUaW1lVXNlZCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0VGltZVVzZWQpOwog
CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6Y29tcGxl
dGVEZXZpY2VJZEhhc2hTYWx0Rm9yT3JpZ2luQ2FsbChTZWN1cml0eU9yaWcKIAogICAgICAgICBT
dHJpbmcgZGV2aWNlSWRIYXNoU2FsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAotICAgICAgICBh
dXRvIG5ld0hhc2hTYWx0Rm9yT3JpZ2luID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2FsdEZvck9y
aWdpbj4oV1RGTW92ZShkb2N1bWVudE9yaWdpbiksIFdURk1vdmUocGFyZW50T3JpZ2luKSwgV1RG
TW92ZShkZXZpY2VJZEhhc2hTYWx0KSk7CisgICAgICAgIGF1dG8gbmV3SGFzaFNhbHRGb3JPcmln
aW4gPSBtYWtlVW5pcXVlPEhhc2hTYWx0Rm9yT3JpZ2luPihXVEZNb3ZlKGRvY3VtZW50T3JpZ2lu
KSwgV1RGTW92ZShwYXJlbnRPcmlnaW4pLCBXVEZNb3ZlKGRldmljZUlkSGFzaFNhbHQpKTsKIAog
ICAgICAgICByZXR1cm4gbmV3SGFzaFNhbHRGb3JPcmlnaW47CiAgICAgfSkuaXRlcmF0b3ItPnZh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHlNYXAuY3BwCmluZGV4IDYzYTQ5YjU2N2RiOGRhNTNmNTc5OWE1MDM0NGYzMTI1MWY1
ZTk2ODQuLmRjNWFkZjFhM2U0Yjk0YWEwMTRiNDMwZWZhNjZkZTA5Zjk1Y2E3YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eU1h
cC5jcHAKQEAgLTg4LDExICs4OCwxMSBAQCBEb3dubG9hZFByb3h5JiBEb3dubG9hZFByb3h5TWFw
OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbAogCiAgICAg
aWYgKG1fZG93bmxvYWRzLnNpemUoKSA9PSAxICYmIG1fc2hvdWxkVGFrZUFzc2VydGlvbikgewog
ICAgICAgICBBU1NFUlQoIW1fZG93bmxvYWRVSUFzc2VydGlvbik7Ci0gICAgICAgIG1fZG93bmxv
YWRVSUFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4oZ2V0Q3Vy
cmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IGRvd25sb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVu
Ym91bmRlZE5ldHdvcmtpbmcpOworICAgICAgICBtX2Rvd25sb2FkVUlBc3NlcnRpb24gPSBtYWtl
VW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIldlYktpdCBk
b3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIAogICAg
ICAgICBBU1NFUlQoIW1fZG93bmxvYWROZXR3b3JraW5nQXNzZXJ0aW9uKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9wcm9jZXNzKTsKLSAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3Nl
cnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpV
bmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV9kb3dubG9hZE5ldHdvcmtpbmdBc3NlcnRp
b24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgIldlYktpdCBkb3dubG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWRO
ZXR3b3JraW5nKTsKIAogICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJ
UHJvY2VzcyB0b29rICdXZWJLaXQgZG93bmxvYWRzJyBhc3NlcnRpb25zIGZvciBVSVByb2Nlc3Mg
YW5kIE5ldHdvcmtQcm9jZXNzIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR2FtZXBhZC9VSUdhbWVwYWRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HYW1lcGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcAppbmRleCBlY2FhYzMwMWI0YmRm
NDZmMmM4OWNkZGU3MWQxOTMyNTQ1MTRmNjQwLi5mNGI3YmVhNjU4NTA5OTFlOTQ5NGE2MjIzZDU0
Yjk4MmFlY2ZkMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L1VJR2FtZXBhZFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1l
cGFkL1VJR2FtZXBhZFByb3ZpZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFVJR2FtZXBh
ZFByb3ZpZGVyOjpzZXRJbml0aWFsQ29ubmVjdGVkR2FtZXBhZHMoY29uc3QgVmVjdG9yPFBsYXRm
b3JtR2FtZXBhZAogICAgIGZvciAoYXV0byogZ2FtZXBhZCA6IGluaXRpYWxHYW1lcGFkcykgewog
ICAgICAgICBpZiAoIWdhbWVwYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9n
YW1lcGFkc1tnYW1lcGFkLT5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8VUlHYW1lcGFkPigq
Z2FtZXBhZCk7CisgICAgICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC0+aW5kZXgoKV0gPSBtYWtlVW5p
cXVlPFVJR2FtZXBhZD4oKmdhbWVwYWQpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgcG9vbCA6
IG1fcHJvY2Vzc1Bvb2xzVXNpbmdHYW1lcGFkcykKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFVJ
R2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1HYW1lcGFk
JiBnYW1lcGFkKQogICAgICAgICBtX2dhbWVwYWRzLmdyb3coZ2FtZXBhZC5pbmRleCgpICsgMSk7
CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSk7Ci0gICAgbV9nYW1l
cGFkc1tnYW1lcGFkLmluZGV4KCldID0gc3RkOjptYWtlX3VuaXF1ZTxVSUdhbWVwYWQ+KGdhbWVw
YWQpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZC5pbmRleCgpXSA9IG1ha2VVbmlxdWU8VUlHYW1l
cGFkPihnYW1lcGFkKTsKIAogICAgIHNjaGVkdWxlR2FtZXBhZFN0YXRlU3luYygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCA5MWVjZTFmMGRhZmZlM2VhNjNhZGJjMGQ5MWVhYzRkMTgxMTEzMDlhLi5i
ZDY5NzIzYTBlMTMyNzNiMWM1ZTc2MjJhYTYzMmY5ZmVhYWRmY2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bnRoZXNpemVB
cHBJc0JhY2tncm91bmQoYm9vbCBiYWNrZ3JvdW5kKQogRG93bmxvYWRQcm94eSYgTmV0d29ya1By
b2Nlc3NQcm94eTo6Y3JlYXRlRG93bmxvYWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKIHsKICAgICBpZiAoIW1fZG93bmxvYWRQcm94eU1hcCkKLSAgICAgICAg
bV9kb3dubG9hZFByb3h5TWFwID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZFByb3h5TWFwPigq
dGhpcyk7CisgICAgICAgIG1fZG93bmxvYWRQcm94eU1hcCA9IG1ha2VVbmlxdWU8RG93bmxvYWRQ
cm94eU1hcD4oKnRoaXMpOwogCiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRl
RG93bmxvYWRQcm94eShtX3Byb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpOwogfQpAQCAtMTIx
MSw3ICsxMjExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNw
YWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2UKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6dGFrZVVwbG9hZEFzc2VydGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX3VwbG9hZEFz
c2VydGlvbik7Ci0gICAgbV91cGxvYWRBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFByb2Nl
c3NBc3NlcnRpb24+KHByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNz
ZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIG1fdXBsb2FkQXNzZXJ0aW9u
ID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzSWRlbnRpZmllcigpLCAiV2Vi
S2l0IHVwbG9hZHMiX3MsIEFzc2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhclVwbG9hZEFzc2VydGlvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmFhZmYxZWMyYTY1NDkw
ZDg4NTQzOTk2YmY4MTAyYzJkNDljNTA0Mi4uNDdhM2U5YjIzYmExMjY1MTk4YjYwZWRkZjZjNGRk
OTg2ZmNkMjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApA
QCAtNTYsMTQgKzU2LDE0IEBAIFJlZjxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+IFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQCiAKIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQ
b29sKiBwcm9jZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29s
KQotICAgICwgbV9wcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Tm90aWZpY2F0aW9uUHJv
dmlkZXI+KCkpCisgICAgLCBtX3Byb3ZpZGVyKG1ha2VVbmlxdWU8QVBJOjpOb3RpZmljYXRpb25Q
cm92aWRlcj4oKSkKIHsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNl
dFByb3ZpZGVyKHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiYmIHBy
b3ZpZGVyKQogewogICAgIGlmICghcHJvdmlkZXIpIHsKLSAgICAgICAgbV9wcm92aWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKTsKKyAgICAgICAgbV9w
cm92aWRlciA9IG1ha2VVbmlxdWU8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGY2
ZjQ3OWIxZTAzOTJmMzIyMTYwYTY0OTRhZWM2MmUwYTA2Nzk2ZGQuLjg0MzY5ZDMzNDQwN2NmYmMy
ZTgzYWE4MjdjNWNjMGU1ZGI5MTIyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlh
bGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGEKICNpZiBQTEFURk9STShH
VEspCiBzdGF0aWMgYm9vbCBwbHVnaW5SZXF1aXJlc0d0azIoY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IG1vZHVsZSA9IHN0ZDo6bWFrZV91
bmlxdWU8TW9kdWxlPihwbHVnaW5QYXRoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlPiBt
b2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4ocGx1Z2luUGF0aCk7CiAgICAgaWYgKCFtb2R1bGUt
PmxvYWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtb2R1bGUtPmZ1bmN0
aW9uUG9pbnRlcjxncG9pbnRlcj4oImd0a19vYmplY3RfZ2V0X3R5cGUiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKaW5kZXggMDBhOTkxODg2MTQ4NzM5
MzhhNmNiNGFiZDk5MTRiYzg2Mjk0NWNmNy4uNGNlMjYyZTlkY2JiNGIxYjBmZjBhZDVkYjk3ZWI5
N2YzNjA3Mzc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Ro
cm90dGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxl
ci5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6OmRpZENvbm5l
Y3RUb1Byb2Nlc3MoUHJvY2Vzc0lEIHBpZCkKIAogICAgIG1fc3VzcGVuZFRpbWVyLnN0b3AoKTsK
ICAgICBpZiAobV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKQotICAgICAgICBtX2Fz
c2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPihwaWQsICJX
ZWIgY29udGVudCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKKyAgICAgICAgbV9h
c3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBbmRVSUFzc2VydGlvbj4ocGlkLCAiV2ViIGNv
bnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgZWxzZQotICAgICAg
ICBtX2Fzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGlkLCAi
V2ViIGNvbnRlbnQgdmlzaWJpbGl0eSJfcywgYXNzZXJ0aW9uU3RhdGUoKSk7CisgICAgICAgIG1f
YXNzZXJ0aW9uID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwaWQsICJXZWIgY29udGVu
dCB2aXNpYmlsaXR5Il9zLCBhc3NlcnRpb25TdGF0ZSgpKTsKICAgICBtX3Byb2Nlc3MuZGlkU2V0
QXNzZXJ0aW9uU3RhdGUoYXNzZXJ0aW9uU3RhdGUoKSk7CiAgICAgbV9hc3NlcnRpb24tPnNldENs
aWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5Lm1tCmluZGV4IDYwZjAyYzYxMGZjZDk4ODMwNjM5YzU3YjNlOWQ2MWZmMWZkNTI1ZmQu
LjI3NGFiZDMwMjljMDA3NzMzOWRmZTM3NDhmZjMwNjk3YzliNDhiNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMDcsNyArMTA3LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlUHJveHksIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICA6IERyYXdpbmdBcmVhUHJv
eHkoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVlLCB3ZWJQYWdlUHJveHksIHByb2Nlc3Mp
Ci0gICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3Qoc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXll
clRyZWVIb3N0PigqdGhpcykpCisgICAgLCBtX3JlbW90ZUxheWVyVHJlZUhvc3QobWFrZVVuaXF1
ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcykpCiB7CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwb29sIHN1cmZhY2VzIGluIHRoZSBVSSBwcm9jZXNzLgpA
QCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
dXBkYXRlRGVidWdJbmRpY2F0b3IoSW50U2l6ZSBjb250ZW50c1NpemUsCiAKIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6aW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKCkKIHsK
LSAgICBtX2RlYnVnSW5kaWNhdG9yTGF5ZXJUcmVlSG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8UmVt
b3RlTGF5ZXJUcmVlSG9zdD4oKnRoaXMpOworICAgIG1fZGVidWdJbmRpY2F0b3JMYXllclRyZWVI
b3N0ID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVIb3N0PigqdGhpcyk7CiAgICAgbV9kZWJ1
Z0luZGljYXRvckxheWVyVHJlZUhvc3QtPnNldElzRGVidWdMYXllclRyZWVIb3N0KHRydWUpOwog
CiAgICAgbV90aWxlTWFwSG9zdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRd
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggMzAwMjVkNDI5OWYzYmNhMDQ4NWQz
MDRkODMzNTgxNzYxMGJhNTBiZC4uOGE0ZTUwNDgxN2ViYzEyNWNlODk4YzFjMjkxZDlhNmU0ZDVm
NTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTI1Miw3ICsyNTIsNyBAQCB2
b2lkIFJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKGNvbnN0IFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllckNyZQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5v
ZGU+IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykKIHsKICAgICBh
dXRvIG1ha2VXaXRoTGF5ZXIgPSBbJl0gKFJldGFpblB0cjxDQUxheWVyPiBsYXllcikgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0
aWVzLmxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4ocHJvcGVydGllcy5sYXllcklELCBXVEZNb3ZlKGxheWVyKSk7
CiAgICAgfTsKICAgICBhdXRvIG1ha2VBZG9wdGluZ0xheWVyID0gWyZdIChDQUxheWVyKiBsYXll
cikgewogICAgICAgICByZXR1cm4gbWFrZVdpdGhMYXllcihhZG9wdE5TKGxheWVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlTm9kZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVOb2RlLm1tCmluZGV4IGU4OGJiYzYwOGQ0ZmIwNTgzODRkMjliMjY5ODE1
OTJlZGE4MTRlYmEuLjRmZDRlYTI2OWU4Y2MxYmRmZmIyZWIyNTk3ZDRmNzUwZDg0MjQwNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVOb2RlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tCkBAIC03Myw3ICs3Myw3IEBAIFJlbW90ZUxheWVy
VHJlZU5vZGU6On5SZW1vdGVMYXllclRyZWVOb2RlKCkKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
YXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRCkKIHsKICAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIgPSBhZG9wdE5TKFtbV0tQbGFpblJlbW90ZUxheWVyIGFs
bG9jXSBpbml0XSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVl
Tm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFJl
bW90ZUxheWVyVHJlZU5vZGU+KGxheWVySUQsIFdURk1vdmUobGF5ZXIpKTsKIH0KIAogdm9pZCBS
ZW1vdGVMYXllclRyZWVOb2RlOjpkZXRhY2hGcm9tUGFyZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlSG9z
dElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlSG9zdElPUy5tbQppbmRleCA2MjlhOWM2NTBkNDNjMGQ1NjFjODE5MzNiYTBk
MTRlOGQzM2VhNDQ0Li4wYzEyNmFlNmFmNzVlNDEzOGFmZDAwODY4Mzk1NjYyOWZmNzAwMjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Jl
bW90ZUxheWVyVHJlZUhvc3RJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVIb3N0SU9TLm1tCkBAIC02MSw3ICs2MSw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8VUlWaWV3PiBjcmVhdGVSZW1vdGVWaWV3KHBpZF90IHBpZCwg
dWludDMyX3QgY29udGV4dElEKQogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+
IFJlbW90ZUxheWVyVHJlZUhvc3Q6Om1ha2VOb2RlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyYgcHJvcGVydGllcykKIHsKICAgICBhdXRv
IG1ha2VXaXRoVmlldyA9IFsmXSAoUmV0YWluUHRyPFVJVmlldz4gdmlldykgewotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxh
eWVySUQsIFdURk1vdmUodmlldykpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVM
YXllclRyZWVOb2RlPihwcm9wZXJ0aWVzLmxheWVySUQsIFdURk1vdmUodmlldykpOwogICAgIH07
CiAgICAgYXV0byBtYWtlQWRvcHRpbmdWaWV3ID0gWyZdIChVSVZpZXcqIHZpZXcpIHsKICAgICAg
ICAgcmV0dXJuIG1ha2VXaXRoVmlldyhhZG9wdE5TKHZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5t
bQppbmRleCA4MWEyZWI5YTYzNWQ1OTg0MTYwMGY3ODM1MjA0YWM4NGJkNmQ1YzI4Li5iODkwNjgx
ZTllN2E1MTNiYTM0MzY3Y2VmMzk4OWJlM2IxOWQ5Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1t
CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTCiAKICAgICBpZiAoc3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbENvbnRhaW5lckxheWVyKSkgewogICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KSkKLSAgICAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gc3RkOjptYWtlX3VuaXF1
ZTxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcyk7CisgICAgICAg
ICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IG1ha2VVbmlxdWU8U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1t
CmluZGV4IGI1NmUyZWE2NGRhNTIwMzFkZmFmMTI4ZWMyNDhjZDE1YzcxMDA5MjYuLmQwYmRkM2M1
N2RiYmNiZWYwNzBlODUxYWZlMDRlZWU2YWFiNTdkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTQz
LDcgKzQzLDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M+IFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MKIAogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
UyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBXZWJDb3JlOjpTY3JvbGxp
bmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCi0gICAgLCBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZShz
dGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0
aGlzKSkKKyAgICAsIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKG1ha2VVbmlxdWU8U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlTWFjLmNwcAppbmRleCAzMmExZTMzYWE4NTY3YzBiNjE2MmUwNjc4M2NmMzc2Y2Y2MTkwN2Uy
Li4yMzNmZmQwMjFlNjM4YmYxODhmOGRjYWJkNzc5Yzc0NTI5NDM3Mjk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJl
bW90ZU1hYy5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMoU2Nyb2xsaW5nVHJlZSYgdHJlZSwgU2Nyb2xsaW5n
Tm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjKHRyZWUsIG5vZGVUeXBlLCBub2RlSUQpCi0gICAg
LCBtX3Njcm9sbGVyUGFpcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbGVyUGFpck1hYz4oKnRoaXMp
KQorICAgICwgbV9zY3JvbGxlclBhaXIobWFrZVVuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0aGlz
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKaW5kZXggZDg5NjBjZWMzMGU0
MzMxOWFhMDI3ZDlhMjFmY2VmYzgzNzYzNTA0My4uYjZjYTNjYmJhODA4MDdhZjdiOWY2OTliZTli
MWIyYWE5Y2RjMWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjPiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVSZW1vdGVNYWM6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVS
ZW1vdGVNYWMoU2Nyb2xsaW5nVHJlZSYgdHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAg
ICA6IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWModHJlZSwgbm9kZUlEKQot
ICAgICwgbV9zY3JvbGxlclBhaXIoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxlclBhaXJNYWM+KCp0
aGlzKSkKKyAgICAsIG1fc2Nyb2xsZXJQYWlyKG1ha2VVbmlxdWU8U2Nyb2xsZXJQYWlyTWFjPigq
dGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRTZXJ2aWNlLm1tCmluZGV4IDllYWUxOGVkZDVm
NGQyZGM1ZGYzOGU5NmQwNTA1MDkzYmNhOWIzOTguLmFiZDBlN2U3Mjk0NzkxMjhjYjZhZmZmN2Yy
MTgxMjYzZTRkYTk4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0hpZFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkU2VydmljZS5tbQpAQCAtOTIsNyArOTIs
NyBAQCBVbmlxdWVSZWY8SGlkQ29ubmVjdGlvbj4gSGlkU2VydmljZTo6Y3JlYXRlSGlkQ29ubmVj
dGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCiAKIHZvaWQgSGlkU2VydmljZTo6ZGV2aWNlQWRk
ZWQoSU9ISUREZXZpY2VSZWYgZGV2aWNlKQogewotICAgIGF1dG8gZHJpdmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0aW9uKGRldmljZSkpOworICAg
IGF1dG8gZHJpdmVyID0gbWFrZVVuaXF1ZTxDdGFwSGlkRHJpdmVyPihjcmVhdGVIaWRDb25uZWN0
aW9uKGRldmljZSkpOwogICAgIC8vIEdldCBhdXRoZW50aWNhdG9yIGluZm8gZnJvbSB0aGUgZGV2
aWNlLgogICAgIGRyaXZlci0+dHJhbnNhY3QoZW5jb2RlRW1wdHlBdXRoZW50aWNhdG9yUmVxdWVz
dChDdGFwUmVxdWVzdENvbW1hbmQ6OmtBdXRoZW50aWNhdG9yR2V0SW5mbyksIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHRyID0gZHJpdmVyLmdldCgpXShWZWN0b3I8dWludDhfdD4m
JiByZXNwb25zZSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDk5ZDZlYTMzNDE1M2VjZjQ5ZDQ1ODRjNzQzZGM2ODE2ODg0MTU1MjAuLjg0NmE1
YWEyN2RmYWIzZDI3NGNmZmE0ODczODYxZjI1ODdkMTdmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ2
LDcgKzQ2LDcgQEAgUmVmPFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5PiBXZWJHZW9sb2NhdGlv
bk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb28KIAogV2ViR2VvbG9jYXRpb25NYW5h
Z2VyUHJveHk6OldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9j
ZXNzUG9vbCkKICAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotICAgICwg
bV9wcm92aWRlcihzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKSkK
KyAgICAsIG1fcHJvdmlkZXIobWFrZVVuaXF1ZTxBUEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCkp
CiB7CiAgICAgV2ViQ29udGV4dFN1cHBsZW1lbnQ6OnByb2Nlc3NQb29sKCktPmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgKnRoaXMpOwogfQpAQCAtNTQsNyArNTQsNyBAQCBXZWJHZW9sb2NhdGlvbk1h
bmFnZXJQcm94eTo6V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqIHBy
b2Nlc3NQbwogdm9pZCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eTo6c2V0UHJvdmlkZXIoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4mJiBwcm92aWRlcikKIHsKICAg
ICBpZiAoIXByb3ZpZGVyKQotICAgICAgICBtX3Byb3ZpZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxB
UEk6Okdlb2xvY2F0aW9uUHJvdmlkZXI+KCk7CisgICAgICAgIG1fcHJvdmlkZXIgPSBtYWtlVW5p
cXVlPEFQSTo6R2VvbG9jYXRpb25Qcm92aWRlcj4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fcHJv
dmlkZXIgPSBXVEZNb3ZlKHByb3ZpZGVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXIuY3BwCmluZGV4IDJjZGNkMTc2
NTI5OWZlNzc2NDliYWJmOWRlM2U3NGU4YjBmMDBlMzcuLjMzNjRiY2JjYzkxMTg0YTZiYTc1NDFl
ZjkwYjBmOTYwNGNkZTRkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Yk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZv
aWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyOjp1cGRhdGVQbGF5YmFja0F0dHJpYnV0ZXNG
cm9tTWVkaWFTdGF0ZShXZWJQYWdlCiAKIHZvaWQgV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2Vy
OjpzZXRGb2N1c2VkTWVkaWFFbGVtZW50KFdlYlBhZ2VQcm94eSYgcHJveHksIHVpbnQ2NF90IGVs
ZW1lbnRJRCkKIHsKLSAgICBtX2ZvY3VzZWRNZWRpYUVsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEZvY3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxlbWVudElEKTsKKyAgICBtX2ZvY3VzZWRN
ZWRpYUVsZW1lbnQgPSBtYWtlVW5pcXVlPEZvY3VzZWRNZWRpYUVsZW1lbnQ+KCZwcm94eSwgZWxl
bWVudElEKTsKIH0KIAogdm9pZCBXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI6OmNsZWFyRm9j
dXNlZE1lZGlhRWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYzRiOTJjODNjZmVhMjliMzFlZGJi
MzRhYTg0MDI1YmE1YzhiMDNiNy4uYmRhNTljZDgwNTE1NzY0NmIzMDhkMmZkMjM2ZjNkMTE4Mjcx
ZTBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZUluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJQYWdlSW5zcGVjdG9yQ29u
dHJvbGxlcjo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQog
ICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJv
dXRlci5jb3B5UmVmKCkpKQogewotICAgIGF1dG8gdGFyZ2V0QWdlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwg
bV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7CisgICAgYXV0byB0YXJnZXRBZ2VudCA9IG1ha2VV
bmlxdWU8V2ViUGFnZUluc3BlY3RvclRhcmdldEFnZW50PihtX2Zyb250ZW5kUm91dGVyLmdldCgp
LCBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpKTsKIAogICAgIG1fdGFyZ2V0QWdlbnQgPSB0YXJn
ZXRBZ2VudC5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggZTY5YmM3NTk2MjNkODMyMDg5ZmUyMDYxYjVhN2M2NTMwMjNmYjFmNi4uMmVkOGE2MGEx
NTAwYjI3ZTNlYTZiZGRmYzFmYjc4MzkyYWEyNTdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zOTcsMTUgKzM5NywxNSBAQCBXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MsIFBhZwogICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAg
ICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGll
bnQ+KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Okhpc3RvcnlD
bGllbnQ+KCkpCi0gICAgLCBtX2ljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpJY29uTG9hZGluZ0NsaWVudD4oKSkKLSAgICAsIG1fZm9ybUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fdWlDbGllbnQoc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OlVJQ2xpZW50PigpKQotICAgICwgbV9maW5kQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpGaW5kQ2xpZW50PigpKQotICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCisgICAgLCBtX2ljb25Mb2FkaW5nQ2xp
ZW50KG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKSkKKyAgICAsIG1fZm9ybUNs
aWVudChtYWtlVW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fdWlDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OlVJQ2xpZW50PigpKQorICAgICwgbV9maW5kQ2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpGaW5kQ2xpZW50PigpKQorICAgICwgbV9maW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVl
PEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+KCkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0g
ICAgLCBtX2NvbnRleHRNZW51Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDb250ZXh0TWVu
dUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkNv
bnRleHRNZW51Q2xpZW50PigpKQogI2VuZGlmCi0gICAgLCBtX25hdmlnYXRpb25TdGF0ZShzdGQ6
Om1ha2VfdW5pcXVlPFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKKyAgICAsIG1fbmF2aWdhdGlvblN0
YXRlKG1ha2VVbmlxdWU8V2ViTmF2aWdhdGlvblN0YXRlPigpKQogICAgICwgbV9wcm9jZXNzKHBy
b2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cCgqbV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkK
ICAgICAsIG1fcHJlZmVyZW5jZXMoKm1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZXMoKSkKQEAg
LTQxNiw3ICs0MTYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogICAgICwgbV9vdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeSB7IG1fY29uZmlndXJhdGlvbi0+b3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3koKSB9CiAgICAgLCBtX3RyZWF0c1NIQTFDZXJ0aWZpY2F0ZXNBc0luc2Vj
dXJlKG1fY29uZmlndXJhdGlvbi0+dHJlYXRzU0hBMVNpZ25lZENlcnRpZmljYXRlc0FzSW5zZWN1
cmUoKSkKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxzY3JlZW5DbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCisgICAgLCBtX2Z1
bGxzY3JlZW5DbGllbnQobWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCkpCiAjZW5k
aWYKICAgICAsIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIoKnRoaXMpCiAg
ICAgLCBtX25vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigqdGhpcykKQEAgLTQz
NSw5ICs0MzUsOSBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdl
Q2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZwogI2VuZGlmCiAgICAgLCBtX3Bh
Z2VMb2FkU3RhdGUoKnRoaXMpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb25QcmVmZXJlbmNlVmFsdWVz
KG1fY29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpKQotICAgICwgbV9pbnNwZWN0b3JD
b250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI+KCp0
aGlzKSkKKyAgICAsIG1faW5zcGVjdG9yQ29udHJvbGxlcihtYWtlVW5pcXVlPFdlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyPigqdGhpcykpCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0g
ICAgLCBtX2luc3BlY3RvckRlYnVnZ2FibGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlRGVidWdn
YWJsZT4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8V2Vi
UGFnZURlYnVnZ2FibGU+KCp0aGlzKSkKICNlbmRpZgogICAgICwgbV9yZXNldFJlY2VudENyYXNo
Q291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVj
ZW50Q3Jhc2hDb3VudCkKIHsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IFBhZwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBtX2FjdGl2aXR5U3RhdGVD
aGFuZ2VEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KHN0YXRp
Y19jYXN0PENGSW5kZXg+KFJ1bkxvb3BPYnNlcnZlcjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6
QWN0aXZpdHlTdGF0ZUNoYW5nZSksIFt0aGlzXSB7CisgICAgbV9hY3Rpdml0eVN0YXRlQ2hhbmdl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihzdGF0aWNfY2FzdDxDRklu
ZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1bkxvb3BPcmRlcnM6OkFjdGl2aXR5U3Rh
dGVDaGFuZ2UpLCBbdGhpc10gewogICAgICAgICB0aGlzLT5kaXNwYXRjaEFjdGl2aXR5U3RhdGVD
aGFuZ2UoKTsKICAgICB9KTsKICNlbmRpZgpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQb2xpY3lDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6UG9saWN5Q2xpZW50
PiYmIHBvbGljeUNsCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiYmIGZvcm1DbGllbnQpCiB7CiAgICAgaWYgKCFmb3JtQ2xp
ZW50KSB7Ci0gICAgICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGb3Jt
Q2xpZW50PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Rm9ybUNs
aWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjExLDcgKzYxMSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRGb3JtQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZvcm1D
bGllbnQ+JiYgZm9ybUNsaWVudCkKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJiB1aUNsaWVudCkKIHsKICAgICBpZiAoIXVpQ2xp
ZW50KSB7Ci0gICAgICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlDbGll
bnQ+KCk7CisgICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6VUlDbGllbnQ+KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxv
YWRpbmdDbGllbnQ+JgogewogICAgIGJvb2wgaGFzQ2xpZW50ID0gaWNvbkxvYWRpbmdDbGllbnQu
Z2V0KCk7CiAgICAgaWYgKCFpY29uTG9hZGluZ0NsaWVudCkKLSAgICAgICAgbV9pY29uTG9hZGlu
Z0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4oKTsKKyAg
ICAgICAgbV9pY29uTG9hZGluZ0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJY29uTG9hZGluZ0Ns
aWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1faWNvbkxvYWRpbmdDbGllbnQgPSBXVEZNb3Zl
KGljb25Mb2FkaW5nQ2xpZW50KTsKIApAQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3Rh
dGU6Ok9ic2VyCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kQ2xpZW50
KSB7Ci0gICAgICAgIG1fZmluZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpGaW5kQ2xp
ZW50PigpOworICAgICAgICBtX2ZpbmRDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6RmluZENsaWVu
dD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTY2MCw3ICs2NjAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5k
Q2xpZW50PiYmIGZpbmRDbGllbnQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXND
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+JiYgZmluZE1hdGNo
ZXNDbGllbnQpCiB7CiAgICAgaWYgKCFmaW5kTWF0Y2hlc0NsaWVudCkgewotICAgICAgICBtX2Zp
bmRNYXRjaGVzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50
PigpOworICAgICAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRN
YXRjaGVzQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzYsNyArNjc2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkRpYWdub3N0aWNMb2cKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250
ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4mJiBj
b250ZXh0TWVudUNsaWVudCkKIHsKICAgICBpZiAoIWNvbnRleHRNZW51Q2xpZW50KSB7Ci0gICAg
ICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q29udGV4dE1l
bnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5
MSw3ICs2OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQo
Y29uc3QgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9pbmplY3RlZEJ1bmRsZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PigpOworICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQg
PSBtYWtlVW5pcXVlPFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudD4oKTsKICAgICBtX2luamVj
dGVkQnVuZGxlQ2xpZW50LT5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKQEAgLTc3Niw3ICs3NzYs
NyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIH0KIAogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTog
U3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICpt
YWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKTsKKyAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBtYWtlVW5pcXVlPFN1c3Bl
bmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwg
c2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KTsKIAogICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIg
Y3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2Fy
ZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxv
Z2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/
IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOwogCkBAIC04NDksNyArODQ5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuTWFuYWdlcik7
Ci0gICAgbV9mdWxsU2NyZWVuTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eT4oKnRoaXMsIHBhZ2VDbGllbnQoKS5mdWxsU2NyZWVuTWFuYWdlclByb3h5
Q2xpZW50KCkpOworICAgIG1fZnVsbFNjcmVlbk1hbmFnZXIgPSBtYWtlVW5pcXVlPFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk+KCp0aGlzLCBwYWdlQ2xpZW50KCkuZnVsbFNjcmVlbk1hbmFnZXJQ
cm94eUNsaWVudCgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEhBVkUo
QVZLSVQpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCiAgICAgQVNTRVJUKCFtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXIpOwpAQCAtODYwLDIyICs4
NjAsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQog
CiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBBU1NFUlQoIW1fcGF5bWVudENvb3JkaW5hdG9y
KTsKLSAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX3BheW1lbnRDb29yZGluYXRvciA9IG1h
a2VVbmlxdWU8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNlbmRpZgogCiAj
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIEFTU0VSVCghbV9zeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcik7Ci0gICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8
U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKKyAgICBtX3N5c3RlbVByZXZpZXdDb250
cm9sbGVyID0gbWFrZVVuaXF1ZTxTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcj4oKnRoaXMpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIEFTU0VSVCghbV9jcmVkZW50aWFsc01l
c3Nlbmdlcik7Ci0gICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKKyAgICBtX2NyZWRlbnRp
YWxzTWVzc2VuZ2VyID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eT4oKnRoaXMpOwogI2VuZGlmCiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICBBU1NFUlQoIW1f
ZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIpOwotICAgIG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVkaXRhYmxlSW1hZ2VDb250cm9sbGVyPigqdGhpcyk7CisgICAg
bV9lZGl0YWJsZUltYWdlQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8RWRpdGFibGVJbWFnZUNvbnRy
b2xsZXI+KCp0aGlzKTsKICNlbmRpZgogfQogCkBAIC05NDMsNyArOTQzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldERyYXdpbmdBcmVhKHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5
PiYmIGRyYXdpbmdBcmUKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JN
KENPQ09BKQogICAgIGlmIChtX2RyYXdpbmdBcmVhLT50eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBl
UmVtb3RlTGF5ZXJUcmVlKSB7Ci0gICAgICAgIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSA9
IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eT4oKnRoaXMp
OworICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkgPSBtYWtlVW5pcXVlPFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk+KCp0aGlzKTsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgICAgICAvLyBPbiBpT1MsIG1haW4gZnJhbWUgc2Nyb2xscyBhcmUgc2VudCBpbiB0
ZXJtcyBvZiB2aXNpYmxlIHJlY3QgdXBkYXRlcy4KICAgICAgICAgbV9zY3JvbGxpbmdDb29yZGlu
YXRvclByb3h5LT5zZXRQcm9wYWdhdGVzTWFpbkZyYW1lU2Nyb2xscyhmYWxzZSk7CkBAIC0xMDA2
LDE3ICsxMDA2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgbV9sb2FkZXJD
bGllbnQgPSBudWxscHRyOwogICAgIG1fbmF2aWdhdGlvbkNsaWVudCA9IG1ha2VVbmlxdWVSZWY8
QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50ID0gbnVsbHB0cjsK
LSAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okljb25Mb2Fk
aW5nQ2xpZW50PigpOwotICAgIG1fZm9ybUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpG
b3JtQ2xpZW50PigpOwotICAgIG1fdWlDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6VUlD
bGllbnQ+KCk7Ci0gICAgbV9maW5kQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRD
bGllbnQ+KCk7Ci0gICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpGaW5kTWF0Y2hlc0NsaWVudD4oKTsKKyAgICBtX2ljb25Mb2FkaW5nQ2xpZW50ID0gbWFrZVVu
aXF1ZTxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PigpOworICAgIG1fZm9ybUNsaWVudCA9IG1ha2VV
bmlxdWU8QVBJOjpGb3JtQ2xpZW50PigpOworICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQ
STo6VUlDbGllbnQ+KCk7CisgICAgbV9maW5kQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZpbmRD
bGllbnQ+KCk7CisgICAgbV9maW5kTWF0Y2hlc0NsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpGaW5k
TWF0Y2hlc0NsaWVudD4oKTsKICAgICBtX2RpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbnVsbHB0
cjsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBtX2NvbnRleHRNZW51Q2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4
dE1lbnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+KCk7CiAjZW5k
aWYKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CisgICAgbV9mdWxsc2Ny
ZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+KCk7CiAjZW5kaWYK
IAogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0Zv
clBhZ2UoKnRoaXMpOwpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGMKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3Mo
eyB9KTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVM
b2FkRGF0YU5hdmlnYXRpb24oc3RkOjptYWtlX3VuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRhPihk
YXRhLnZlY3RvcigpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhKSk7Cisg
ICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2
aWdhdGlvbihtYWtlVW5pcXVlPEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1J
TUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEpKTsKICAgICBsb2FkRGF0YVdpdGhO
YXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1J
TUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7
CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CkBAIC0yNDE0LDcgKzI0MTQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBl
dmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gY29hbGVzY2VkV2hlZWxF
dmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PigpOwor
ICAgIGF1dG8gY29hbGVzY2VkV2hlZWxFdmVudCA9IG1ha2VVbmlxdWU8VmVjdG9yPE5hdGl2ZVdl
YldoZWVsRXZlbnQ+PigpOwogICAgIGNvYWxlc2NlZFdoZWVsRXZlbnQtPmFwcGVuZChldmVudCk7
CiAgICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShjb2Fs
ZXNjZWRXaGVlbEV2ZW50KSk7CiAgICAgc2VuZFdoZWVsRXZlbnQoZXZlbnQpOwpAQCAtMjQyMiw3
ICsyNDIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0
aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4
dFF1ZXVlZFdoZWVsRXZlbnQoKQogewotICAgIGF1dG8gbmV4dENvYWxlc2NlZEV2ZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CisgICAgYXV0byBu
ZXh0Q29hbGVzY2VkRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50
Pj4oKTsKICAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50ID0gY29hbGVzY2VkV2hlZWxF
dmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRFdmVudC5nZXQoKSk7CiAgICAg
bV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShuZXh0Q29hbGVz
Y2VkRXZlbnQpKTsKICAgICBzZW5kV2hlZWxFdmVudChuZXh0V2hlZWxFdmVudCk7CkBAIC0yOTgz
LDcgKzI5ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAgICBtX3Byb3Zpc2lv
bmFsUGFnZSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9wcm92aXNpb25hbFBhZ2UgPSBzdGQ6
Om1ha2VfdW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgbmV3UHJvY2Vzcy5jb3B5
UmVmKCksIFdURk1vdmUoc3VzcGVuZGVkUGFnZVByb3h5KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9u
SUQoKSwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKSwgbmF2aWdhdGlvbi5j
dXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KTsKKyAgICBtX3By
b3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBu
ZXdQcm9jZXNzLmNvcHlSZWYoKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlUHJveHkpLCBuYXZpZ2F0
aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgp
LCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQpOwogCiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLnRhcmdldEl0ZW0oKSkgewog
ICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25J
bk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0Zjgo
KS5kYXRhKCkpOwpAQCAtNTcwMyw3ICs1NzAzLDcgQEAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eSogV2ViUGFnZVByb3h5OjpmdWxsU2NyZWVuTWFuYWdlcigpCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGdWxsc2NyZWVuQ2xpZW50
PiYmIGNsaWVudCkKIHsKICAgICBpZiAoIWNsaWVudCkgewotICAgICAgICBtX2Z1bGxzY3JlZW5D
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4oKTsKKyAgICAg
ICAgbV9mdWxsc2NyZWVuQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0MzcsNyArNzQzNyw3IEBAIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJveHk6OnVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0CiAgICAgaWYgKG1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyKQogICAgICAgICByZXR1cm4gKm1fdXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOwogCi0gICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7
CisgICAgbV91c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIgPSBtYWtlVW5pcXVlPFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5PigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX3VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIH0KIApAQCAtODE0Myw3ICs4
MTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNvbGxl
Y3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3Njcm9sbFBlcmZvcm1hbmNlRGF0YUNv
bGxlY3Rpb25FbmFibGVkID0gZW5hYmxlZDsKIAogICAgIGlmIChtX3Njcm9sbFBlcmZvcm1hbmNl
RGF0YUNvbGxlY3Rpb25FbmFibGVkICYmICFtX3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSkKLSAg
ICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eT4oKm1fZHJhd2luZ0FyZWEpKTsKKyAgICAgICAgbV9zY3JvbGxp
bmdQZXJmb3JtYW5jZURhdGEgPSBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1Bl
cmZvcm1hbmNlRGF0YT4oZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4o
Km1fZHJhd2luZ0FyZWEpKTsKICAgICBlbHNlIGlmICghbV9zY3JvbGxQZXJmb3JtYW5jZURhdGFD
b2xsZWN0aW9uRW5hYmxlZCkKICAgICAgICAgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEgPSBu
dWxscHRyOwogfQpAQCAtOTE5MCw3ICs5MTkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0
U3BlZWNoU3ludGhlc2l6ZXIoKQogV2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVzaXNEYXRhJiBX
ZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc0RhdGEoKQogewogICAgIGlmICghbV9zcGVlY2hT
eW50aGVzaXNEYXRhKQotICAgICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50
aGVzaXNEYXRhIHsgc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0
aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAg
ICAgICBtX3NwZWVjaFN5bnRoZXNpc0RhdGEgPSBTcGVlY2hTeW50aGVzaXNEYXRhIHsgbWFrZVVu
aXF1ZTxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPih0aGlzKSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHJldHVybiAqbV9zcGVlY2hTeW50aGVz
aXNEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNw
cAppbmRleCA4YmRmOGNmODM4OGNkYzdiZmFjZmYyYjdlNjA1ZDBhODE4ZGFhYzY0Li45NjJmM2Jl
ZDJkODI1NjlhMDdkZDRlOWNkYWI4ZmNjNzIxMTlmN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBXZWJQcm9j
ZXNzQ2FjaGU6OmFkZFByb2Nlc3NJZlBvc3NpYmxlKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIgPSBnZW5lcmF0ZUFkZFJlcXVlc3RJZGVudGlmaWVyKCk7Ci0gICAgbV9wZW5kaW5nQWRk
UmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZFBy
b2Nlc3M+KHByb2Nlc3MuY29weVJlZigpKSk7CisgICAgbV9wZW5kaW5nQWRkUmVxdWVzdHMuYWRk
KHJlcXVlc3RJZGVudGlmaWVyLCBtYWtlVW5pcXVlPENhY2hlZFByb2Nlc3M+KHByb2Nlc3MuY29w
eVJlZigpKSk7CiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFdlYlBy
b2Nlc3NDYWNoZTo6YWRkUHJvY2Vzc0lmUG9zc2libGUoKTogQ2hlY2tpbmcgaWYgcHJvY2VzcyAl
aSBpcyByZXNwb25zaXZlIGJlZm9yZSBjYWNoaW5nIGl0Li4uIiwgdGhpcywgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgcHJvY2Vzcy0+aXNSZXNwb25zaXZlKFt0aGlzLCBwcm9j
ZXNzUG9vbCA9IG1ha2VSZWYocHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKSksIHJlcXVlc3RJZGVudGlm
aWVyXShib29sIGlzUmVzcG9uc2l2ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCmluZGV4IGI5NzY3OTEwNTRiODI5NGQ5Zjc5ZTlmMGFhNGI5NmFiYTExNDM3
YWIuLjkyZDk3ZGUxMGFlODU1YjQyMzQyNjU2YWRkZTgwMDBiODc2ZjUwMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIzMywxNSArMjMzLDE1IEBA
IHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgZ2xvYmFs
VVJMU2NoZW1lc1dpdGhDdXN0b21Qcm90CiBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX2Nv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5jb3B5KCkpCiAgICAgLCBtX2RlZmF1bHRQYWdlR3Jv
dXAoV2ViUGFnZUdyb3VwOjpjcmVhdGUoKSkKLSAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50PigpKQotICAgICwgbV9h
dXRvbWF0aW9uQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9uQ2xpZW50Pigp
KQotICAgICwgbV9kb3dubG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxvYWRD
bGllbnQ+KCkpCi0gICAgLCBtX2hpc3RvcnlDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Okxl
Z2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQotICAgICwgbV9jdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dD4oKSkKKyAgICAsIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlQ2xpZW50PigpKQorICAgICwgbV9hdXRvbWF0aW9uQ2xpZW50KG1ha2VVbmlxdWU8
QVBJOjpBdXRvbWF0aW9uQ2xpZW50PigpKQorICAgICwgbV9kb3dubG9hZENsaWVudChtYWtlVW5p
cXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCisgICAgLCBtX2hpc3RvcnlDbGllbnQobWFrZVVu
aXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQorICAgICwgbV9jdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudD4oKSkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpj
cmVhdGUoKSkKICNpZiBQTEFURk9STShNQUMpCi0gICAgLCBtX2hpZ2hQZXJmb3JtYW5jZUdyYXBo
aWNzVXNhZ2VTYW1wbGVyKHN0ZDo6bWFrZV91bmlxdWU8SGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NV
c2FnZVNhbXBsZXI+KCp0aGlzKSkKLSAgICAsIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2Ft
cGxlcihzdGQ6Om1ha2VfdW5pcXVlPFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXI+KCp0
aGlzKSkKKyAgICAsIG1faGlnaFBlcmZvcm1hbmNlR3JhcGhpY3NVc2FnZVNhbXBsZXIobWFrZVVu
aXF1ZTxIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlcj4oKnRoaXMpKQorICAgICwg
bV9wZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyKG1ha2VVbmlxdWU8UGVyQWN0aXZpdHlT
dGF0ZUNQVVVzYWdlU2FtcGxlcj4oKnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2Fsd2F5c1J1bnNB
dEJhY2tncm91bmRQcmlvcml0eShtX2NvbmZpZ3VyYXRpb24tPmFsd2F5c1J1bnNBdEJhY2tncm91
bmRQcmlvcml0eSgpKQogICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9uKG1f
Y29uZmlndXJhdGlvbi0+c2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbigpKQpAQCAtMzY0
LDcgKzM2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVDbGllbnQoY29uc3Qg
V0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KQogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SW5q
ZWN0ZWRCdW5kbGVDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGVDbGll
bnQ+JiYgY2xpZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2luamVjdGVkQnVu
ZGxlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlQ2xpZW50Pigp
OworICAgICAgICBtX2luamVjdGVkQnVuZGxlQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAgbV9pbmplY3RlZEJ1bmRsZUNs
aWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjppbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudChjb25zdCBXS0NvbnRleHRDb25u
ZWN0aW9uQ2xpZW50Qgogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SGlzdG9yeUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4mJiBoaXN0b3J5Q2xp
ZW50KQogewogICAgIGlmICghaGlzdG9yeUNsaWVudCkKLSAgICAgICAgbV9oaXN0b3J5Q2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpOwor
ICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhp
c3RvcnlDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEZN
b3ZlKGhpc3RvcnlDbGllbnQpOwogfQpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29udGV4
dEhpc3RvcnlDCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4mJiBkb3dubG9hZENsaWVudCkKIHsKICAgICBp
ZiAoIWRvd25sb2FkQ2xpZW50KQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gc3RkOjptYWtl
X3VuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpOworICAgICAgICBtX2Rvd25sb2FkQ2xpZW50
ID0gbWFrZVVuaXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpOwogICAgIGVsc2UKICAgICAgICAg
bV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUoZG93bmxvYWRDbGllbnQpOwogfQpAQCAtMzkzLDcg
KzM5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGRvCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpz
ZXRBdXRvbWF0aW9uQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+
JiYgYXV0b21hdGlvbkNsaWVudCkKIHsKICAgICBpZiAoIWF1dG9tYXRpb25DbGllbnQpCi0gICAg
ICAgIG1fYXV0b21hdGlvbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50PigpOworICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6
QXV0b21hdGlvbkNsaWVudD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fYXV0b21hdGlvbkNsaWVu
dCA9IFdURk1vdmUoYXV0b21hdGlvbkNsaWVudCk7CiB9CkBAIC00MDIsNyArNDAyLDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2V0TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkMKIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NP
TF9NQU5BR0VSKQogICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQotICAgICAg
ICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CisgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dD4oKTsKICAgICBlbHNlCiAgICAgICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0g
V1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOwogI2VuZGlmCkBAIC00OTIsNyAr
NDkyLDcgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdv
cmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgcmV0dXJuICptX25ldHdv
cmtQcm9jZXNzOwogICAgIH0KIAotICAgIGF1dG8gbmV0d29ya1Byb2Nlc3MgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE5ldHdvcmtQcm9jZXNzUHJveHk+KCp0aGlzKTsKKyAgICBhdXRvIG5ldHdvcmtQcm9j
ZXNzID0gbWFrZVVuaXF1ZTxOZXR3b3JrUHJvY2Vzc1Byb3h5PigqdGhpcyk7CiAKICAgICBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCkBAIC0yNTI4LDcgKzI1
MjgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9u
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYQogICAgICAgICBtX3ByZXdhcm1JbmZvcm1h
dGlvblBlclJlZ2lzdHJhYmxlRG9tYWluLnJlbW92ZShtX3ByZXdhcm1JbmZvcm1hdGlvblBlclJl
Z2lzdHJhYmxlRG9tYWluLnJhbmRvbSgpKTsKIAogICAgIGF1dG8mIHZhbHVlID0gbV9wcmV3YXJt
SW5mb3JtYXRpb25QZXJSZWdpc3RyYWJsZURvbWFpbi5lbnN1cmUocmVnaXN0cmFibGVEb21haW4s
IFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6UHJld2FybUlu
Zm9ybWF0aW9uPigpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJDb3JlOjpQcmV3YXJt
SW5mb3JtYXRpb24+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgKnZhbHVlID0g
cHJld2FybUluZm9ybWF0aW9uOwpAQCAtMjU3NSwxMiArMjU3NSwxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpzZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNz
SUQpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnRha2VVcGxvYWRBc3NlcnRpb24oKTsKICAg
ICAgICAgCiAgICAgICAgIEFTU0VSVCghbV91aVByb2Nlc3NVcGxvYWRBc3NlcnRpb24pOwotICAg
ICAgICBtX3VpUHJvY2Vzc1VwbG9hZEFzc2VydGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvY2Vz
c0Fzc2VydGlvbj4oZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiV2ViS2l0IHVwbG9hZHMiX3MsIEFz
c2VydGlvblN0YXRlOjpVbmJvdW5kZWROZXR3b3JraW5nKTsKKyAgICAgICAgbV91aVByb2Nlc3NV
cGxvYWRBc3NlcnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQ
cm9jZXNzSUQoKSwgIldlYktpdCB1cGxvYWRzIl9zLCBBc3NlcnRpb25TdGF0ZTo6VW5ib3VuZGVk
TmV0d29ya2luZyk7CiAgICAgfQogICAgIAogICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzZXNX
aXRoVXBsb2Fkcy5hZGQocHJvY2Vzc0lELCBudWxscHRyKTsKICAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQg
dXBsb2FkcyJfcywgQXNzZXJ0aW9uU3RhdGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOworICAgIHJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICJXZWJLaXQgdXBsb2FkcyJfcywgQXNzZXJ0aW9uU3Rh
dGU6OlVuYm91bmRlZE5ldHdvcmtpbmcpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVh
cldlYlByb2Nlc3NIYXNVcGxvYWRzKFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKQEAgLTI2
MTcsMTIgKzI2MTcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0V2ViUHJvY2Vzc0lzUGxh
eWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmkKICAgICAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJUaGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBwbGF5aW5n
IGF1ZGlibGUgbWVkaWEgaXMgbm93IG9uZS4gVGFraW5nIFVJIHByb2Nlc3MgYXNzZXJ0aW9uLiIp
OwogCiAgICAgICAgIEFTU0VSVCghbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uKTsK
LSAgICAgICAgbV91aVByb2Nlc3NNZWRpYVBsYXliYWNrQXNzZXJ0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJXZWJLaXQgTWVk
aWEgUGxheWJhY2siX3MsIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kLCBBc3NlcnRpb25SZWFz
b246Ok1lZGlhUGxheWJhY2spOworICAgICAgICBtX3VpUHJvY2Vzc01lZGlhUGxheWJhY2tBc3Nl
cnRpb24gPSBtYWtlVW5pcXVlPFByb2Nlc3NBc3NlcnRpb24+KGdldEN1cnJlbnRQcm9jZXNzSUQo
KSwgIldlYktpdCBNZWRpYSBQbGF5YmFjayJfcywgQXNzZXJ0aW9uU3RhdGU6OkZvcmVncm91bmQs
IEFzc2VydGlvblJlYXNvbjo6TWVkaWFQbGF5YmFjayk7CiAgICAgfQogCiAgICAgYXV0byByZXN1
bHQgPSBtX3Byb2Nlc3Nlc1BsYXlpbmdBdWRpYmxlTWVkaWEuYWRkKHByb2Nlc3NJRCwgbnVsbHB0
cik7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRpb25TdGF0
ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKKyAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxQcm9jZXNzQXNzZXJ0aW9uPihwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCAiV2ViS2l0IE1lZGlhIFBsYXliYWNrIl9zLCBBc3NlcnRp
b25TdGF0ZTo6Rm9yZWdyb3VuZCwgQXNzZXJ0aW9uUmVhc29uOjpNZWRpYVBsYXliYWNrKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1l
ZGlhKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk1YjU4NjM5ZjNjNDBjYzYzMDBh
NDRmMmMwNDQ5ZWZmZWY4YWQxMzYuLmJjZmRmM2EzOGQ3YmM3OTY2Y2Q4NzRlZDAyYmEwMzZkZmYz
YzRhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApA
QCAtMTUxLDcgKzE1MSw3IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlBy
b2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSoKICAgICAsIG1fdmlzaWJs
ZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlQmFja2dyb3VuZFJl
c3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKICAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRl
RGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
ICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KHN0ZDo6bWFrZV91bmlxdWU8VXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4oKnRoaXMpKQorICAgICwgbV91c2VyTWVkaWFDYXB0
dXJlTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4o
KnRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2lzUHJld2FybWVkKGlzUHJld2FybWVkID09IElzUHJl
d2FybWVkOjpZZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWly
by9CYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9jYWlyby9C
YWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggMTgyOTRkMzdmZTQ5ZWVkNmQ2OWRmZmZmNWYyZjY1
MDcwYjY2Y2Q5MC4uN2JkZDAzZDNjOGVjOGUwNjYyZTc3ZDAxODI1MGI1MDg4YzI2Y2ZiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJv
LmNwcApAQCAtNTQsMTIgKzU0LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNr
ZW5kQ2Fpcm8+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlQmFja2VuZCgpCiAgICAgICAgIEdka1Zpc3Vh
bCogdmlzdWFsID0gZ3RrX3dpZGdldF9nZXRfdmlzdWFsKG1fd2ViUGFnZVByb3h5LnZpZXdXaWRn
ZXQoKSk7CiAgICAgICAgIEdka1NjcmVlbiogc2NyZWVuID0gZ2RrX3Zpc3VhbF9nZXRfc2NyZWVu
KHZpc3VhbCk7CiAgICAgICAgIEFTU0VSVChkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHNo
YXJlZERpc3BsYXkpLm5hdGl2ZSgpID09IEdES19TQ1JFRU5fWERJU1BMQVkoc2NyZWVuKSk7Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gx
MT4oR0RLX1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb1gxMT4oR0RL
X1dJTkRPV19YSUQoZ2RrX3NjcmVlbl9nZXRfcm9vdF93aW5kb3coc2NyZWVuKSksCiAgICAgICAg
ICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlz
dWFsKSwgbV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICB9CiAjZW5kaWYKIAotICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhY2tpbmdTdG9yZUJhY2tlbmRDYWlyb0ltcGw+KG1f
c2l6ZSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFja2lu
Z1N0b3JlQmFja2VuZENhaXJvSW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKIH0K
IAogdm9pZCBCYWNraW5nU3RvcmU6OnBhaW50KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90
ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1JlbW90
ZUluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggYjg3NGZiMGZiMmUyYTdlN2VjMzZjYzQ0ZTM5ZDYy
NDkwNmE0YzVmMS4uZjg4OGMwZjQ0NmM2MjcxMjdjODM3NWJlMGQ4MWE2YTNmMmMwOWY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvUmVtb3RlSW5zcGVjdG9y
Q2xpZW50LmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50
Ojpjb25uZWN0aW9uQ2xvc2VkKCkKIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0
KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQpCiB7CiAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2luc3BlY3RvclByb3h5TWFwLmVuc3VyZShzdGQ6Om1ha2VfcGFpcihjb25u
ZWN0aW9uSUQsIHRhcmdldElEKSwgW3RoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SURdIHsKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJveHk+KCp0aGlz
LCBjb25uZWN0aW9uSUQsIHRhcmdldElEKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVt
b3RlSW5zcGVjdG9yUHJveHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEKTsKICAgICB9
KTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUtPnNob3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKaW5kZXgg
MzgzMTAwMDU4ODk0ZGVjMGZiN2I1MWNhYTA5YTIzOWQ3N2QwOGE4Yi4uODkzMjc5ZmJjZjU4YWVh
ZjJhZmQ2YjFhNDdjMWM3NmMyM2Q4MmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAK
QEAgLTc5LDkgKzc5LDkgQEAgYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNo
ZWNrUmVxdWlyZW1lbnRzKCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFVTRShP
UEVOR0xfRVMpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4g
Z2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVs
bHB0ciwgIGZhbHNlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5H
TEVTPiBnbEV4dGVuc2lvbnMgPSBtYWtlVW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPihudWxs
cHRyLCAgZmFsc2UpOwogI2Vsc2UKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMz
RE9wZW5HTD4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xFeHRlbnNpb25zID0g
bWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29udGV4dDo6Y3VycmVu
dCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgICAgICBpZiAoZ2xFeHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZSIpIHx8IGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMo
IkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKICAgICAgICAgICAgIGdsSW1hZ2VUYXJnZXRU
ZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRP
RVNQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxl
ci5jcHAKaW5kZXggZTlhZTY1NTJhN2EyZDg2MmM0YmQ0ZWUxMGVkMmVjMzZlOTJmODMxZC4uY2E2
NTNlNWViYTcwYzk2MTU1ZmY3NjQ4OGMzZWRmNDI4MWY4NTcxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKQEAgLTIwMiw3ICsy
MDIsNyBAQCBTZWxlY3Rpb25EYXRhKiBEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdEYXRhU2VsZWN0
aW9uKEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcm9w
cGluZ0NvbnRleHQ+JiBkcm9wcGluZ0NvbnRleHQgPSBtX2Ryb3BwaW5nQ29udGV4dHMuYWRkKGNv
bnRleHQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWRyb3BwaW5nQ29udGV4
dCkgewogICAgICAgICBHdGtXaWRnZXQqIHdpZGdldCA9IG1fcGFnZS52aWV3V2lkZ2V0KCk7Ci0g
ICAgICAgIGRyb3BwaW5nQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RHJvcHBpbmdDb250ZXh0
Pihjb250ZXh0LCBwb3NpdGlvbik7CisgICAgICAgIGRyb3BwaW5nQ29udGV4dCA9IG1ha2VVbmlx
dWU8RHJvcHBpbmdDb250ZXh0Pihjb250ZXh0LCBwb3NpdGlvbik7CiAgICAgICAgIFZlY3RvcjxH
ZGtBdG9tPiBhY2NlcHRhYmxlVGFyZ2V0cyhQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS5k
cm9wQXRvbXNGb3JDb250ZXh0KHdpZGdldCwgZHJvcHBpbmdDb250ZXh0LT5nZGtDb250ZXh0KSk7
CiAgICAgICAgIGRyb3BwaW5nQ29udGV4dC0+cGVuZGluZ0RhdGFSZXF1ZXN0cyA9IGFjY2VwdGFi
bGVUYXJnZXRzLnNpemUoKTsKICAgICAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBhY2NlcHRhYmxl
VGFyZ2V0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5k
Q29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBv
c2l0b3IuY3BwCmluZGV4IGNiZTM4MGIyNDBkOTYwMTExNzI3Yjc3MGE4MjVlMDllMDU0N2M5ZWQu
LmMzZDk5NzNjNzBkYzIwODljNjgzZDY1YTkxM2RhMjk0ZDVmZmViYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcApAQCAtNDIwLDkg
KzQyMCw5IEBAIGJvb2wgV2F5bGFuZENvbXBvc2l0b3I6OmluaXRpYWxpemVFR0woKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICNpZiBVU0UoT1BFTkdMX0VTKQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxF
eHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0ciwgIGZhbHNlKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IGdsRXh0ZW5zaW9ucyA9IG1ha2VVbmlxdWU8RXh0ZW5z
aW9uczNET3BlbkdMRVM+KG51bGxwdHIsICBmYWxzZSk7CiAjZWxzZQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8
RXh0ZW5zaW9uczNET3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lv
bigpID49IDMyMCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gZ2xF
eHRlbnNpb25zID0gbWFrZVVuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KG51bGxwdHIsIEdMQ29u
dGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKICNlbmRpZgogICAgIGlmIChnbEV4
dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlIikgfHwgZ2xFeHRlbnNpb25zLT5z
dXBwb3J0cygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpKQogICAgICAgICBnbEltYWdlVGFy
Z2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVS
RTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRP
RVMiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIubW0KaW5kZXggYzIzNDExYzFmMDliMDEwYTY1MjU0YjM2OWRkMzE2OWQz
MWYwYzBlMC4uNjFlODU5NGQ1YjdjNDFhYWY5ZmM4MmM2NTM4ZGI5YWQ3MTg1NjM0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJv
bGxlci5tbQpAQCAtNTgsNyArNTgsNyBAQCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6fkVkaXRh
YmxlSW1hZ2VDb250cm9sbGVyKCkKIEVkaXRhYmxlSW1hZ2UmIEVkaXRhYmxlSW1hZ2VDb250cm9s
bGVyOjplbnN1cmVFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVk
Vmlld0lEIGVtYmVkZGVkVmlld0lEKQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9lZGl0YWJsZUlt
YWdlcy5lbnN1cmUoZW1iZWRkZWRWaWV3SUQsIFsmXSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxFZGl0YWJsZUltYWdlPiBpbWFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8RWRpdGFibGVJbWFnZT4o
KTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+IGltYWdlID0gbWFrZVVu
aXF1ZTxFZGl0YWJsZUltYWdlPigpOwogICAgICAgICBpbWFnZS0+ZHJhd2luZ1ZpZXcgPSBtX3dl
YlBhZ2VQcm94eS0+cGFnZUNsaWVudCgpLmNyZWF0ZURyYXdpbmdWaWV3KGVtYmVkZGVkVmlld0lE
KTsKICAgICAgICAgcmV0dXJuIGltYWdlOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcu
bW0KaW5kZXggZDAzYTE3MjZhYjMzNGEwMGU2MGZiYzA1MGI1MGU1YzMzNzVhZjcyMC4uN2YwZjk0
ODRmZDc3NzRkZDExNTdhZTI4ODVjOTBhM2JmMmVlNzlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQXBwbGljYXRpb25TdGF0ZVRyYWNraW5nVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdW
aWV3Lm1tCkBAIC02NSw3ICs2NSw3IEBAIC0gKHZvaWQpZGlkTW92ZVRvV2luZG93CiAgICAgaWYg
KCFzZWxmLl9jb250ZW50Vmlldy53aW5kb3cgfHwgX2FwcGxpY2F0aW9uU3RhdGVUcmFja2VyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBfYXBwbGljYXRpb25TdGF0ZVRyYWNrZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6QXBwbGljYXRpb25TdGF0ZVRyYWNrZXI+KHNlbGYsIEBzZWxlY3Rv
cihfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpLCBAc2VsZWN0b3IoX2FwcGxpY2F0aW9u
RGlkRmluaXNoU25hcHNob3R0aW5nQWZ0ZXJFbnRlcmluZ0JhY2tncm91bmQpLCBAc2VsZWN0b3Io
X2FwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCkpOworICAgIF9hcHBsaWNhdGlvblN0YXRl
VHJhY2tlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpBcHBsaWNhdGlvblN0YXRlVHJhY2tlcj4oc2Vs
ZiwgQHNlbGVjdG9yKF9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCksIEBzZWxlY3Rvcihf
YXBwbGljYXRpb25EaWRGaW5pc2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCks
IEBzZWxlY3RvcihfYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKSk7CiAgICAgCiAgICAg
aWYgKF9sYXN0T2JzZXJ2ZWRTdGF0ZVdhc0JhY2tncm91bmQgJiYgIVtzZWxmIGlzQmFja2dyb3Vu
ZF0pCiAgICAgICAgIFtzZWxmIF9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBjMjk5MjE0
NThhZjAxZmQ5N2E0MDA5MmM3MTNmNjdjNDFmZjc3ZTdlLi4wNGY5YzZlMjcwMmU3ZDg3Y2U1Njhi
ZTIwMjExZTcwNmQ3MWJjMmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9u
SW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXBy
CiAgICAgX3BhZ2UtPnNldERlbGVnYXRlc1Njcm9sbGluZyh0cnVlKTsKIAogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKLSAgICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudChzdGQ6Om1ha2Vf
dW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4oX3dlYlZpZXcpKTsKKyAgICBfcGFnZS0+
c2V0RnVsbHNjcmVlbkNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4o
X3dlYlZpZXcpKTsKICNlbmRpZgogCiAgICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3RhdGlz
dGljcygpLndrVmlld0NvdW50Kys7CkBAIC0yMzksNyArMjM5LDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIF9wYWdl
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPihzZWxmLCB3
ZWJWaWV3KTsKKyAgICBfcGFnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdlQ2xpZW50
SW1wbD4oc2VsZiwgd2ViVmlldyk7CiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OwogCiAgICAgcmV0
dXJuIFtzZWxmIF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDpwcm9jZXNzUG9v
bCBjb25maWd1cmF0aW9uOldURk1vdmUoY29uZmlndXJhdGlvbildOwpAQCAtNTQxLDcgKzU0MSw3
IEBAIC0gKHZvaWQpX3dlYlZpZXdEZXN0cm95ZWQKIAogLSAoc3RkOjp1bmlxdWVfcHRyPFdlYktp
dDo6RHJhd2luZ0FyZWFQcm94eT4pX2NyZWF0ZURyYXdpbmdBcmVhUHJveHk6KFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Jilwcm9jZXNzCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UsIHByb2Nlc3MpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eT4oKl9wYWdlLCBwcm9jZXNzKTsKIH0KIAogLSAodm9pZClfcHJvY2Vzc0RpZEV4aXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCmluZGV4IDI4Njc2YTlmNzBmNDZlYjkwMjRlNDViNmI3M2I2OGI4MTc1Mzg2Mzgu
LjU5OGUzMmEwZmQ0ZWZkN2NkNWQ5Zjk3NWVhMjcxYjg1YjlhYTMwYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQpAQCAtODA2LDcgKzgwNiw3IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogICAgIAogICAg
IF9hY3Rpb25TaGVldEFzc2lzdGFudCA9IGFkb3B0TlMoW1tXS0FjdGlvblNoZWV0QXNzaXN0YW50
IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwogICAgIFtfYWN0aW9uU2hlZXRBc3Npc3RhbnQg
c2V0RGVsZWdhdGU6c2VsZl07Ci0gICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4oc2Vs
Zik7CisgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYktp
dDo6U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlcj4oc2VsZik7CiAgICAgX2lzRXhwZWN0aW5n
RmFzdFNpbmdsZVRhcENvbW1pdCA9IE5POwogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0g
Tk87CiAgICAgX2lzRG91YmxlVGFwUGVuZGluZyA9IE5POwpAQCAtODIxLDcgKzgyMSw3IEBAIC0g
KHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoUExBVEZPUk1fRFJJ
VkVOX1RFWFRfQ0hFQ0tJTkcpCi0gICAgX3RleHRDaGVja2luZ0NvbnRyb2xsZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlcj4oKl9wYWdlKTsKKyAgICBf
dGV4dENoZWNraW5nQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViS2l0OjpUZXh0Q2hlY2tpbmdD
b250cm9sbGVyPigqX3BhZ2UpOwogI2VuZGlmCiAKICAgICBfaGFzU2V0VXBJbnRlcmFjdGlvbnMg
PSBZRVM7CkBAIC0xMTk2LDcgKzExOTYsNyBAQCAtIChCT09MKWJlY29tZUZpcnN0UmVzcG9uZGVy
Rm9yV2ViVmlldwogICAgICAgICByZXR1cm4gTk87CiAKICAgICBpZiAoIV9pbnB1dFZpZXdVcGRh
dGVEZWZlcnJlcikKLSAgICAgICAgX2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1VwZGF0ZURlZmVycmVyPihzZWxmKTsKKyAgICAgICAg
X2lucHV0Vmlld1VwZGF0ZURlZmVycmVyID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OklucHV0Vmlld1Vw
ZGF0ZURlZmVycmVyPihzZWxmKTsKIAogICAgIEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXI7
CiAgICAgewpAQCAtNTMzNyw3ICs1MzM3LDcgQEAgLSAodm9pZClfZWxlbWVudERpZEZvY3VzOihj
b25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mKWluZm9ybWF0aW9uIHUKICAg
ICAgICAgLy8gRGVmZXIgdmlldyB1cGRhdGVzIHVudGlsIHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlv
biB0byBhdm9pZCBhIG5vdGljZWFibGUgZmxhc2ggd2hlbiBzd2l0Y2hpbmcgZm9jdXMKICAgICAg
ICAgLy8gYmV0d2VlbiBlbGVtZW50cyB0aGF0IHJlcXVpcmUgdGhlIGtleWJvYXJkLgogICAgICAg
ICBpZiAoIWlucHV0Vmlld1VwZGF0ZURlZmVycmVyKQotICAgICAgICAgICAgaW5wdXRWaWV3VXBk
YXRlRGVmZXJyZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVm
ZXJyZXI+KHNlbGYpOworICAgICAgICAgICAgaW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIgPSBtYWtl
VW5pcXVlPFdlYktpdDo6SW5wdXRWaWV3VXBkYXRlRGVmZXJyZXI+KHNlbGYpOwogICAgICAgICBb
c2VsZiBfZWxlbWVudERpZEJsdXJdOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggODJkMzU0MjE3YjcwNjQyMDFlM2Q3YjA3
NmU1YjA1OWI5NjAxMWNmMy4uMzFiN2Q4MzBkMzA3ZmFkODVjMjZkNThjMGVmNmE3MmIyMzU4OTMy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC05MTIsNyArOTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1cyhj
b25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbiwKICAgICBBUEk6Ok9i
amVjdCogdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCk7CiAgICAgaWYgKG1fZWRpdG9yU3RhdGUuaXNNaXNz
aW5nUG9zdExheW91dERhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8g
ZWxpbWluYXRlIG1fZGVmZXJyZWRFbGVtZW50RGlkRm9jdXNBcmd1bWVudHMgYWx0b2dldGhlciwg
aW4gZmF2b3Igb2Ygb25seSBkZWZlcnJpbmcgYWN0aW9ucyB0aGF0IGFyZSBkZXBlbmRlbnQgb24g
cG9zdC1sYXlvdXQgZWRpdG9yIHN0YXRlIGluZm9ybWF0aW9uLgotICAgICAgICBtX2RlZmVycmVk
RWxlbWVudERpZEZvY3VzQXJndW1lbnRzID0gc3RkOjptYWtlX3VuaXF1ZTxFbGVtZW50RGlkRm9j
dXNBcmd1bWVudHM+KEVsZW1lbnREaWRGb2N1c0FyZ3VtZW50cyB7IGluZm9ybWF0aW9uLCB1c2Vy
SXNJbnRlcmFjdGluZywgYmx1clByZXZpb3VzTm9kZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIHVz
ZXJEYXRhT2JqZWN0IH0pOworICAgICAgICBtX2RlZmVycmVkRWxlbWVudERpZEZvY3VzQXJndW1l
bnRzID0gbWFrZVVuaXF1ZTxFbGVtZW50RGlkRm9jdXNBcmd1bWVudHM+KEVsZW1lbnREaWRGb2N1
c0FyZ3VtZW50cyB7IGluZm9ybWF0aW9uLCB1c2VySXNJbnRlcmFjdGluZywgYmx1clByZXZpb3Vz
Tm9kZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIHVzZXJEYXRhT2JqZWN0IH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChS
ZWY8VwogCiBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IFdl
YlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYgcGF5bWVudENvb3JkaW5hdG9yUHJveHksIFBLUGF5bWVu
dFJlcXVlc3QgKnBheW1lbnRSZXF1ZXN0KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KHBheW1lbnRDb29yZGluYXRvclBy
b3h5LCBwYXltZW50UmVxdWVzdCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRS
ZXF1ZXN0KTsKIH0KIAogVUlWaWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50Q29v
cmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tCmluZGV4IDgzNDM0ODg5Y2RjZjI0OWMxYzI3OTFiZDA3YmZmZmEyMDFjZjQ4N2Qu
LmE5MTI5NTNlYzkxYzI3MzM2MjY3NjNkYWY5ZGEyNmIyNDkzM2M2ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTEwOCw3ICsx
MDgsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoTlNWaWV3KiB2aWV3LCBXS1dl
YlZpZXcgKndlYlZpZXcpCiAgICAgOiBQYWdlQ2xpZW50SW1wbENvY29hKHdlYlZpZXcpCiAgICAg
LCBtX3ZpZXcodmlldykKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKLSAgICAsIG1f
YWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyPigpKQorICAgICwgbV9hbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIo
bWFrZVVuaXF1ZTxBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCkpCiAjZW5kaWYKIHsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggYjU0N2RjMjcyYzI5Y2VmOGE4NGIxNjBkZWMxOWRh
ODBiMzM4MTFhMi4uMzRhNjliYmUwYmIwZDE3NmI1NTFiYWYyZDdhMzVjMWZhYWMwMzdhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTE1MSw3ICsxNTEsNyBAQCAtIChpZClpbml0V2l0aFdp
bmRvdzooTlNXaW5kb3cgKil3aW5kb3cgd2ViVmlldzooTlNWaWV3ICopd2ViVmlldyBwYWdlOihX
ZWJLaXQ6OgogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKICAgICBfcGFnZSA9ICZwYWdlOwogCi0g
ICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+KCk7Cisg
ICAgX3ZpZGVvRnVsbHNjcmVlbkNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+KCk7CiAgICAgX3Zp
ZGVvRnVsbHNjcmVlbkNsaWVudC0+c2V0UGFyZW50KHNlbGYpOwogCiAgICAgW3NlbGYgdmlkZW9D
b250cm9sc01hbmFnZXJEaWRDaGFuZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0KaW5kZXggOWQ0NWQyMTAxMTBkYTk5MzAxYmMyMDBl
ZTM1M2FmYzllZWQ1NWRhMS4uNjlkOWQ5ZTJkNDQ0ODQzZDE1MjcwZjUxMTdmNzc0Y2QyMzdkNWRi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xp
ZW50Lm1tCkBAIC0xNjksOCArMTY5LDggQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGFnZToo
V2ViS2l0OjpXZWJQYWdlUHJveHkmKXBhZ2UgdmlldzooTlNWaWV3ICopdmlldyB1c2UKICAgICBf
dmlldyA9IHZpZXc7CiAgICAgX3VzZVBsYXRmb3JtRmluZFVJID0gdXNlUGxhdGZvcm1GaW5kVUk7
CiAgICAgCi0gICAgX3BhZ2UtPnNldEZpbmRNYXRjaGVzQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2VsZikpOwotICAgIF9wYWdlLT5zZXRGaW5k
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpUZXh0RmluZGVyRmluZENsaWVudD4oc2Vs
ZikpOworICAgIF9wYWdlLT5zZXRGaW5kTWF0Y2hlc0NsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6
VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKKyAgICBfcGFnZS0+c2V0RmluZENsaWVudCht
YWtlVW5pcXVlPFdlYktpdDo6VGV4dEZpbmRlckZpbmRDbGllbnQ+KHNlbGYpKTsKIAogICAgIHJl
dHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0
L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlZDBkNWZmZTk1ODlmOTVlNDRhMDdm
MjIxOGVkODJjMDBmMDE3ZDdlLi5lNzRhZGFjMWU2NWViZTVjOTliMzFkOTA2N2FlNjExNThmMzk4
N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yQ2xpZW50OjpkaWRDbG9zZShDb25uZWN0aW9uSUQpCiB2b2lkIFJlbW90ZUluc3BlY3Rv
ckNsaWVudDo6aW5zcGVjdChDb25uZWN0aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJn
ZXRJRCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9pbnNw
ZWN0b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJ
RCksIFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElELCAmdHlwZV0gewotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rp
b25JRCwgdGFyZ2V0SUQsIHR5cGUpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJ
bnNwZWN0b3JQcm94eT4oKnRoaXMsIGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQsIHR5cGUpOwogICAg
IH0pOwogCiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcAppbmRleCAxYjZkOWNjNTRmYzYwYjUzZTQ0MDI3MWYyMzA4ZTdjMGY0
N2M4NzRjLi5hODgzM2Y2MjQ4N2Y5YTY3MjEwMzk5ZWM5ZjhmZjVlMDkyNzEyZWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtODQsMTEgKzg0LDExIEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJv
eHkmIHBhZ2VQcm94eSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogY2xpZW50ID0gbV9p
bnNwZWN0b3JDbGllbnRzLmVuc3VyZShyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIFt0aGlzLCAm
cmVxdWVzdFVSTF0gewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVJbnNw
ZWN0b3JDbGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwu
cG9ydCgpLnZhbHVlKCksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
SW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLmhvc3QoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
VVJMLnBvcnQoKS52YWx1ZSgpLCAqdGhpcyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogCiAgICAgLy8gU2V0dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVl
PFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRl
bnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVz
c2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlz
KSwgImluc3BlY3RvciIsIEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiAg
ICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIg
aHRtbEJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFj
a2luZ1N0b3JlRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0JhY2tp
bmdTdG9yZURpcmVjdDJELmNwcAppbmRleCBiNjdkNzNhNGRjNDg4YjMxZmRjOWE0NzIxOTY5MTQw
NDI3NDQ4ODI1Li41ZDUwYWU1NTQ2ODBhNmU5ZTNkYTJjZTg0YmU1NjRkNWMzMjM3ZjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQmFja2luZ1N0b3JlRGlyZWN0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9CYWNraW5nU3RvcmVEaXJlY3Qy
RC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0ZDo6
dW5pcXVlX3B0cjxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkQ+IEJhY2tpbmdTdG9yZTo6Y3Jl
YXRlQmFja2VuZCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QmFja2luZ1N0b3Jl
QmFja2VuZERpcmVjdDJESW1wbD4obV9zaXplLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxCYWNraW5nU3RvcmVCYWNrZW5kRGlyZWN0MkRJbXBsPihtX3NpemUs
IG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCiB2b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoSUQy
RDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGNkNmYw
OGZmMThiZDU1YzE1NTQ0NjNkNGE0MGI1MWU0NWIyZWFiOWYuLjAzMDdjNGY5ZjE0M2Y4NmRjNjIw
OGI0ODRiZThkYjQyMmRjMGY0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDYsNyArNDYsNyBAQCBQYWdlQ2xpZW50SW1wbDo6UGFn
ZUNsaWVudEltcGwoV2ViVmlldyYgdmlldykKIC8vIFBhZ2VDbGllbnQncyBwdXJlIHZpcnR1YWwg
ZnVuY3Rpb25zCiBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gUGFnZUNsaWVudElt
cGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzPigqbV92aWV3LnBhZ2UoKSwgcHJvY2Vzcyk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9j
ZXNzKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheShjb25z
dCBXZWJDb3JlOjpSZWdpb24mIHJlZ2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAppbmRleCBjZDUzNTJkZjdhYTA0ZTY5ZDliMGY5OGVkMDAxZTVjNjMzMmY3NTkzLi42
N2U1ZTRiMjdhM2FlODBhYjY2OGY2YzM0MTdjMGYwY2U2YjdmMDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgYm9vbCBXZWJWaWV3
OjpyZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpCiB9CiAKIFdlYlZpZXc6OldlYlZpZXcoUkVD
VCByZWN0LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05E
IHBhcmVudFdpbmRvdykKLSAgICA6IG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VD
bGllbnRJbXBsPigqdGhpcykpCisgICAgOiBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xp
ZW50SW1wbD4oKnRoaXMpKQogewogICAgIHJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2FtZXBhZC9XZWJHYW1lcGFk
UHJvdmlkZXIuY3BwCmluZGV4IDRmODEwY2NmMzhlY2ZhMmM5OWVjYmRhODlkMDQxY2ViOGQyMzMz
YjguLmFhYjM0NTdjZWQ2NGE1YTkxMGNkYzU2MmFjYzAxMTUwMGQzYzZjYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HYW1lcGFkL1dlYkdhbWVwYWRQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dhbWVwYWQvV2ViR2FtZXBhZFByb3ZpZGVy
LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdlYkdhbWVwYWRQcm92aWRlcjo6c2V0SW5pdGlh
bEdhbWVwYWRzKGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVwYWREYQogICAgICAgICBp
ZiAoZ2FtZXBhZERhdGFzW2ldLmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgbV9nYW1lcGFkc1tpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2FtZXBhZD4oZ2FtZXBh
ZERhdGFzW2ldKTsKKyAgICAgICAgbV9nYW1lcGFkc1tpXSA9IG1ha2VVbmlxdWU8V2ViR2FtZXBh
ZD4oZ2FtZXBhZERhdGFzW2ldKTsKICAgICAgICAgbV9yYXdHYW1lcGFkc1tpXSA9IG1fZ2FtZXBh
ZHNbaV0uZ2V0KCk7CiAgICAgfQogfQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFdlYkdhbWVwYWRQ
cm92aWRlcjo6Z2FtZXBhZENvbm5lY3RlZChjb25zdCBHYW1lcGFkRGF0YSYgZ2FtZXBhZERhdGEp
CiAKICAgICBBU1NFUlQoIW1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0pOwogCi0gICAg
bV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR2Ft
ZXBhZD4oZ2FtZXBhZERhdGEpOworICAgIG1fZ2FtZXBhZHNbZ2FtZXBhZERhdGEuaW5kZXgoKV0g
PSBtYWtlVW5pcXVlPFdlYkdhbWVwYWQ+KGdhbWVwYWREYXRhKTsKICAgICBtX3Jhd0dhbWVwYWRz
W2dhbWVwYWREYXRhLmluZGV4KCldID0gbV9nYW1lcGFkc1tnYW1lcGFkRGF0YS5pbmRleCgpXS5n
ZXQoKTsKIAogICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5jcHAKaW5kZXggZjNlYzcyMDg3Y2EyODg2N2Y1NGQ5ZGYwZjUwZDg3MTAyZTAxNmZhMi4uY2E4
NWQ1ODVkY2YxYjc2ZWYwYjhkMTFkNTlhZDY2MDRhYzNmMTg2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUu
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIFdLVHlwZUlEIFdLQnVuZGxlR2V0VHlwZUlEKCkKIAogdm9p
ZCBXS0J1bmRsZVNldENsaWVudChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlQ2xpZW50
QmFzZSAqd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+c2V0Q2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUNsaWVudD4od2tDbGll
bnQpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5zZXRDbGllbnQobWFrZVVuaXF1
ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdL
QnVuZGxlU2V0U2VydmljZVdvcmtlclByb3h5Q3JlYXRpb25DYWxsYmFjayhXS0J1bmRsZVJlZiBi
dW5kbGVSZWYsIHZvaWQgKCpjYWxsYmFjaykodWludDY0X3QpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCBmMTJhNWJhNzc0ZDZjYzY4ZDA4NGYxZjYwMjFjZWJmMzgxYWEzYTU4Li5k
YzA3NThhZDc1YWYzNjFkZmJlODE2ZWIxMTNmNDFjN2YwOWQ4MWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcApAQCAtNzcsNyArNzcsNyBAQCBXS1R5cGVJRCBXS0J1bmRsZVBhZ2VHZXRU
eXBlSUQoKQogdm9pZCBXS0J1bmRsZVBhZ2VTZXRDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRCYXNlKiB3a0NsaWVu
dCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdl
UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ+KHdrQ2xpZW50KSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1l
bnVDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50Pih3a0NsaWVudCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAg
ICAgVU5VU0VEX1BBUkFNKHdrQ2xpZW50KTsKQEAgLTg2LDIyICs4NiwyMiBAQCB2b2lkIFdLQnVu
ZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1
bmRsZVBhZ2VDb250ZQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldEVkaXRvckNsaWVudChXS0J1bmRs
ZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50QmFzZSogd2tDbGllbnQp
CiB7Ci0gICAgV2ViS2l0Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KHdrQ2xpZW50ID8gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudD4oKndrQ2xpZW50KSA6IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmpl
Y3RlZEJ1bmRsZTo6RWRpdG9yQ2xpZW50PigpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVm
KS0+c2V0SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQod2tDbGllbnQgPyBtYWtlVW5pcXVlPFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Pigqd2tDbGllbnQpIDogbWFrZVVu
aXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkpOwogfQogCiB2b2lkIFdL
QnVuZGxlUGFnZVNldEZvcm1DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxl
UGFnZUZvcm1DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdl
UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Pih3a0NsaWVudCkpOworICAgIFdlYktpdDo6
dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQobWFrZVVuaXF1ZTxX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgV2ViS2l0
Ojp0b0ltcGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChzdGQ6
Om1ha2VfdW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Pih3a0Ns
aWVudCkpOworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudD4od2tDbGllbnQpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VTZXRSZXNvdXJjZUxv
YWRDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVJlc291cmNlTG9h
ZENsaWVudEJhc2UqIHdrQ2xpZW50KQogewotICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5z
ZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Pih3a0NsaWVudCkpOworICAg
IFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291cmNlTG9hZENs
aWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xp
ZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVuZGxlUGFnZVNldFBvbGljeUNsaWVudChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVQYWdlUG9saWN5Q2xpZW50QmFzZSogd2tD
bGllbnQpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRQb2xpY3lDbGll
bnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVBvbGljeUNsaWUKIAogdm9p
ZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5k
bGVQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICBXZWJLaXQ6OnRvSW1wbChwYWdl
UmVmKS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ+KHdrQ2xpZW50KSk7CisgICAgV2ViS2l0Ojp0b0lt
cGwocGFnZVJlZiktPnNldEluamVjdGVkQnVuZGxlVUlDbGllbnQobWFrZVVuaXF1ZTxXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Pih3a0NsaWVudCkpOwogfQogCiB2b2lkIFdLQnVu
ZGxlUGFnZVNldEZ1bGxTY3JlZW5DbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVu
ZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnRCYXNlKiB3a0NsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVy
bGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VPdmVybGF5LmNwcAppbmRleCAzMTQzMmY4OThmZGI0ZTlmY2ZiYzZjZGI4Yzg0
YTllNTUxZTI4NTY5Li42OWY3YWYyMmI1Njc1MDRkNGYzMWYwZDdhNzBiODc0ZTA5ZmE1NWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCkBAIC0yMTcsNyArMjE3
LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdlT3ZlcmxheUdldFR5cGVJRCgpCiAKIFdLQnVuZGxl
UGFnZU92ZXJsYXlSZWYgV0tCdW5kbGVQYWdlT3ZlcmxheUNyZWF0ZShXS0J1bmRsZVBhZ2VPdmVy
bGF5Q2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgYXV0byBjbGllbnRJbXBsID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlT3ZlcmxheUNsaWVudEltcGw+KHdrQ2xpZW50KTsKKyAgICBhdXRvIGNs
aWVudEltcGwgPSBtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q2xpZW50SW1wbD4od2tDbGllbnQpOwog
ICAgIHJldHVybiB0b0FQSSgmV2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6Y3JlYXRlKFdURk1vdmUo
Y2xpZW50SW1wbCkpLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9X
S0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KaW5kZXggYzY4OWU4OWNkMGUwNjQxYmE5YjU3ZDk4ZWQ4
M2MwZmI2NGY0YjU4OC4uZDZmZmQxY2NjMDRhOTNhN2EwOWQyYjM2NTU5YThmMGMwOTUwZmYxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KQEAg
LTEwNCw3ICsxMDQsNyBAQCBXS0J1bmRsZVBhZ2VCYW5uZXJSZWYgV0tCdW5kbGVQYWdlQmFubmVy
Q3JlYXRlQmFubmVyV2l0aENBTGF5ZXIoQ0FMYXllciAqbGF5ZXIsCiAgICAgaWYgKHdrQ2xpZW50
ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8gY2xp
ZW50SW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpQYWdlQmFubmVyQ2xpZW50SW1wbD4o
d2tDbGllbnQpOworICAgIGF1dG8gY2xpZW50SW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpQYWdl
QmFubmVyQ2xpZW50SW1wbD4od2tDbGllbnQpOwogICAgIHJldHVybiB0b0FQSSgmV2ViS2l0OjpQ
YWdlQmFubmVyOjpjcmVhdGUobGF5ZXIsIGhlaWdodCwgY2xpZW50SW1wbC5yZWxlYXNlKCkpLmxl
YWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9ET00vRE9NT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNoZS5j
cHAKaW5kZXggNzRlZDdjNGIyZmRkOTk3ZTFlNWJjYzMyNjMxYWI3NjU5NDI2NjVkNy4uMjJiNDBl
NDM5YmJiNjAxNWUxOGFhOGMyNTU4ZTBlNjkzZjVlYjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL0RPTS9ET01PYmplY3RDYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL0RPTS9ET01PYmplY3RDYWNoZS5jcHAKQEAgLTc4LDE0ICs3OCw2IEBAIHN0YXRpYyBET01P
YmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXAmIGRvbU9iamVjdENhY2hlRnJhbWVPYnNlcnZlcnMo
KQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2
ZXImIGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1l
JiBmcmFtZSkKLXsKLSAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZmcmFtZSwgbnVs
bHB0cik7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXI+
KGZyYW1lKTsKLSAgICByZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KIGNsYXNz
IERPTU9iamVjdENhY2hlRnJhbWVPYnNlcnZlciBmaW5hbDogcHVibGljIFdlYkNvcmU6OkZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC0xMDcsNyArOTksNyBAQCBjbGFzcyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXIg
ZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZQogICAgICAgICBp
ZiAoZG9tV2luZG93ICYmICghbV9kb21XaW5kb3dPYnNlcnZlciB8fCBtX2RvbVdpbmRvd09ic2Vy
dmVyLT53aW5kb3coKSAhPSBkb21XaW5kb3cpKSB7CiAgICAgICAgICAgICAvLyBOZXcgRE9NV2lu
ZG93LCBjbGVhciB0aGUgY2FjaGUgYW5kIGNyZWF0ZSBhIG5ldyBET01XaW5kb3dPYnNlcnZlci4K
ICAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgICAgICBtX2RvbVdpbmRvd09ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dPYnNlcnZlcj4oKmRvbVdpbmRvdywgKnRoaXMpOwor
ICAgICAgICAgICAgbV9kb21XaW5kb3dPYnNlcnZlciA9IG1ha2VVbmlxdWU8RE9NV2luZG93T2Jz
ZXJ2ZXI+KCpkb21XaW5kb3csICp0aGlzKTsKICAgICAgICAgfQogCiAgICAgICAgIG1fb2JqZWN0
cy5hcHBlbmQoJmRhdGEpOwpAQCAtMTkzLDYgKzE4NSwxNCBAQCBjbGFzcyBET01PYmplY3RDYWNo
ZUZyYW1lT2JzZXJ2ZXIgZmluYWw6IHB1YmxpYyBXZWJDb3JlOjpGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxET01XaW5kb3dPYnNlcnZlcj4gbV9kb21XaW5kb3dP
YnNlcnZlcjsKIH07CiAKK3N0YXRpYyBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXImIGdldE9y
Q3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSkK
K3sKKyAgICBET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQg
PSBkb21PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXJzKCkuYWRkKCZmcmFtZSwgbnVsbHB0cik7Cisg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gbWFrZVVuaXF1ZTxET01PYmplY3RDYWNoZUZyYW1lT2JzZXJ2ZXI+KGZyYW1lKTsKKyAgICBy
ZXR1cm4gKnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDx2b2lk
Kiwgc3RkOjp1bmlxdWVfcHRyPERPTU9iamVjdENhY2hlRGF0YT4+IERPTU9iamVjdE1hcDsKIAog
c3RhdGljIERPTU9iamVjdE1hcCYgZG9tT2JqZWN0cygpCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9p
ZCBET01PYmplY3RDYWNoZTo6cHV0KHZvaWQqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikK
IHsKICAgICBET01PYmplY3RNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBkb21PYmplY3RzKCkuYWRk
KG9iamVjdEhhbmRsZSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RD
YWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IG1ha2VVbmlxdWU8RE9NT2JqZWN0Q2FjaGVEYXRhPihHX09CSkVDVCh3cmFwcGVyKSk7
CiB9CiAKIHZvaWQgRE9NT2JqZWN0Q2FjaGU6OnB1dChXZWJDb3JlOjpOb2RlKiBvYmplY3RIYW5k
bGUsIHZvaWQqIHdyYXBwZXIpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBET01PYmplY3RDYWNo
ZTo6cHV0KFdlYkNvcmU6Ok5vZGUqIG9iamVjdEhhbmRsZSwgdm9pZCogd3JhcHBlcikKICAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxET01PYmplY3RDYWNoZURhdGE+KEdfT0JK
RUNUKHdyYXBwZXIpKTsKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxE
T01PYmplY3RDYWNoZURhdGE+KEdfT0JKRUNUKHdyYXBwZXIpKTsKICAgICBpZiAoV2ViQ29yZTo6
RnJhbWUqIGZyYW1lID0gb2JqZWN0SGFuZGxlLT5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAg
IGdldE9yQ3JlYXRlRE9NT2JqZWN0Q2FjaGVGcmFtZU9ic2VydmVyKCpmcmFtZSkuYWRkT2JqZWN0
Q2FjaGVEYXRhKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNp
b25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCA0Y2NlYzYyZWYwZTExMzFm
YTEzZjdmYjA2MGM4MGUwN2VlNDI1MWFmLi40ZDc0MmU0MDliYmZjN2NmYWI0MDhjZDY1MzhhZWY5
ZjIyOGZkNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1h
bmFnZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJLaXRFeHRlbnNpb25NYW5hZ2Vy
Ojppbml0aWFsaXplKEluamVjdGVkQnVuZGxlKiBidW5kbGUsIEFQSTo6T2JqZWN0KiB1c2UKICAg
ICBzY2FuTW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBtb2R1bGVQYXRocyk7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+KG1vZHVsZVBhdGhzW2ld
KTsKKyAgICAgICAgYXV0byBtb2R1bGUgPSBtYWtlVW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0aHNb
aV0pOwogICAgICAgICBpZiAoIW1vZHVsZS0+bG9hZCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGlmIChpbml0aWFsaXplV2ViRXh0ZW5zaW9uKG1vZHVsZS5nZXQoKSwgdXNlckRh
dGEuZ2V0KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAppbmRleCAw
NDA3MmViODY0ZGJlMzVmODBkZmM4NmFkMGU4ODNjM2U5OWNlNDRmLi5jY2I1MWUwZDk2NDBjNjZm
ODU5NmU0NzQxNzE0MDU4ZTkxMzk3Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RWRpdG9yLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRXZWJFZGl0b3IqIHdlYmtpdFdlYkVk
aXRvckNyZWF0ZShXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIFdlYktpdFdlYkVkaXRv
ciogZWRpdG9yID0gV0VCS0lUX1dFQl9FRElUT1IoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9FRElUT1IsIG51bGxwdHIpKTsKICAgICBlZGl0b3ItPnByaXYtPndlYlBhZ2UgPSB3ZWJQYWdl
OwotICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVk
aXRvckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOwor
ICAgIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKHdlYlBhZ2UpLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudChtYWtlVW5pcXVlPFBhZ2VFZGl0b3JDbGllbnQ+KGVkaXRvcikpOwogICAgIHJldHVy
biBlZGl0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5j
cHAKaW5kZXggNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5NjEyOTlhNzAxMDgxNzUwMS4uZTMwNmUz
ZmVmMjYzMWQ1NDY2NTU3MTE2ZTVlNDg3ZDM3MWM3ODU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBjbGFzcyBXZWJF
eHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkluamVjdGVk
QnVuZGxlOjpDbGllbgogV2ViS2l0V2ViRXh0ZW5zaW9uKiB3ZWJraXRXZWJFeHRlbnNpb25DcmVh
dGUoSW5qZWN0ZWRCdW5kbGUqIGJ1bmRsZSkKIHsKICAgICBXZWJLaXRXZWJFeHRlbnNpb24qIGV4
dGVuc2lvbiA9IFdFQktJVF9XRUJfRVhURU5TSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfRVhURU5TSU9OLCBOVUxMKSk7Ci0gICAgYnVuZGxlLT5zZXRDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNsaWVudD4oZXh0ZW5zaW9uKSk7CisgICAg
YnVuZGxlLT5zZXRDbGllbnQobWFrZVVuaXF1ZTxXZWJFeHRlbnNpb25JbmplY3RlZEJ1bmRsZUNs
aWVudD4oZXh0ZW5zaW9uKSk7CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IGZjNWQ5NWZmYzQ5MTk1ZmI0MjdkNGNkYjBm
ZTU1YWI1MGQzODU1NDAuLmM5MjA0YjIzOTgxZDdmMTdhZDA3M2I5ZWQ0MTJhODc3Njg1Y2U3ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBA
QCBzdGF0aWMgV2ViS2l0RnJhbWUqIHdlYmtpdEZyYW1lR2V0T3JDcmVhdGUoV2ViRnJhbWUqIHdl
YkZyYW1lKQogICAgIGlmICh3cmFwcGVyUHRyKQogICAgICAgICByZXR1cm4gd3JhcHBlclB0ci0+
d2Via2l0RnJhbWUoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXRGcmFtZVdyYXBwZXI+
IHdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdEZyYW1lV3JhcHBlcj4oKndlYkZyYW1l
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0RnJhbWVXcmFwcGVyPiB3cmFwcGVyID0gbWFr
ZVVuaXF1ZTxXZWJLaXRGcmFtZVdyYXBwZXI+KCp3ZWJGcmFtZSk7CiAgICAgd3JhcHBlclB0ciA9
IHdyYXBwZXIuZ2V0KCk7CiAgICAgd2ViRnJhbWVNYXAoKS5zZXQod2ViRnJhbWUsIFdURk1vdmUo
d3JhcHBlcikpOwogICAgIHJldHVybiB3cmFwcGVyUHRyLT53ZWJraXRGcmFtZSgpOwpAQCAtNjc5
LDExICs2NzksMTEgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0V2ViUGFnZUNyZWF0ZShXZWJQYWdl
KiB3ZWJQYWdlKQogICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSBXRUJLSVRfV0VCX1BBR0UoZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9QQUdFLCBOVUxMKSk7CiAgICAgcGFnZS0+cHJpdi0+
d2ViUGFnZSA9IHdlYlBhZ2U7CiAKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVJlc291
cmNlTG9hZENsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ+KHBh
Z2UpKTsKLSAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlTG9hZGVyQ2xpZW50PihwYWdlKSk7Ci0gICAgd2ViUGFnZS0+c2V0
SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb250
ZXh0TWVudUNsaWVudD4ocGFnZSkpOwotICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlVUlD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlVUlDbGllbnQ+KHBhZ2UpKTsKLSAgICB3ZWJQYWdl
LT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlRm9ybUNs
aWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2Fk
Q2xpZW50KG1ha2VVbmlxdWU8UGFnZVJlc291cmNlTG9hZENsaWVudD4ocGFnZSkpOworICAgIHdl
YlBhZ2UtPnNldEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChtYWtlVW5pcXVlPFBhZ2VM
b2FkZXJDbGllbnQ+KHBhZ2UpKTsKKyAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRl
eHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50PihwYWdlKSk7Cisg
ICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChtYWtlVW5pcXVlPFBhZ2VVSUNs
aWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudCht
YWtlVW5pcXVlPFBhZ2VGb3JtQ2xpZW50PihwYWdlKSk7CiAKICAgICByZXR1cm4gcGFnZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KaW5kZXggODEwNTVjZTdmZGVi
YTMxOGRhYjA2ODI2MzRjNmJkODRhMzdmYWU4Yy4uMDg0ZjMwMDVkNjEwM2Q0ZTI1MDMzYzI1NmM3
MGMwZTA2NDA0MWNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0K
QEAgLTQ1LDcgKzQ1LDcgQEAgLSAoaWQpaW5pdFdpdGhSYW5nZTooV0tET01SYW5nZSAqKXJhbmdl
CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3RleHRJdGVyYXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2Vi
Q29yZVJhbmdlKHJhbmdlKSk7CisgICAgX3RleHRJdGVyYXRvciA9IG1ha2VVbmlxdWU8V2ViQ29y
ZTo6VGV4dEl0ZXJhdG9yPihXZWJLaXQ6OnRvV2ViQ29yZVJhbmdlKHJhbmdlKSk7CiAgICAgcmV0
dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA0ODgw
MGJiMzE3OTA2NWU0ZTczMjkzMDY5MDU0NjgwZTQzNGFmMWZmLi40MjAyMzk2YWJhZmFmMzBkNzE4
OWFlYjY4NTA5ZWEyNzE3MWI5NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CkBAIC01NDQsNyArNTQ0LDcgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQ
cm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4pZm9ybURlbGVnYXQKICAgICB9OwogCiAg
ICAgaWYgKGZvcm1EZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9y
bUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHNlbGYpKTsKKyAgICAgICAgX3Bh
Z2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNsaWVudChtYWtlVW5pcXVlPEZvcm1DbGllbnQ+KHNl
bGYpKTsKICAgICBlbHNlCiAgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGll
bnQobnVsbHB0cik7CiB9CkBAIC02NzMsNyArNjczLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0Rl
bGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVs
ZWcKICAgICB9OwogCiAgICAgaWYgKGVkaXRpbmdEZWxlZ2F0ZSkKLSAgICAgICAgX3BhZ2UtPnNl
dEluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q2xpZW50PihzZWxm
KSk7CisgICAgICAgIF9wYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChtYWtlVW5p
cXVlPENsaWVudD4oc2VsZikpOwogICAgIGVsc2UKICAgICAgICAgX3BhZ2UtPnNldEluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXgg
YjBkY2I5MDAwYmU5MTUyOGM3YzA3MWY2NmQ3ZThjMzAxY2U5NWE3Ni4uZTQ1NTI2MTgwYzAxYmJk
MzVhZTUyNWU4MjViZDdkNGFjZmRmOWE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0xMDQs
NyArMTA0LDcgQEAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRl
KFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmEKIEluamVjdGVkQnVuZGxlOjpJbmpl
Y3RlZEJ1bmRsZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogICAgIDogbV9wYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgICwgbV9w
bGF0Zm9ybUJ1bmRsZSgwKQotICAgICwgbV9jbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpDbGllbnQ+KCkpCisgICAgLCBtX2NsaWVudChtYWtlVW5pcXVlPEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OkNsaWVudD4oKSkKIHsKIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIElu
amVjdGVkQnVuZGxlOjp+SW5qZWN0ZWRCdW5kbGUoKQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpDbGllbnQ+JiYgY2xp
ZW50KQogewogICAgIGlmICghY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOworICAgICAgICBtX2NsaWVudCA9
IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Q2xpZW50PigpOwogICAgIGVsc2UKICAg
ICAgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDczMzUy
NzY1ODcxZDgyNTVhMjNkYjdiNTVlNmQ0NGVlNzMzOTIyZDcuLjJlNTdhZjI0ODNiZDM2YjNkZDg1
ZTRlYzE4ZGRlMTBmNDQzNmU4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xMzIsMzggKzEzMiwxMSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRNZXNzYWdlKFQm
JiBtZXNzYWdlLCBzaXplX3QgYnl0ZQogICAgIHNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLVdlYlNvY2tldENoYW5u
ZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCi17Ci0gICAgYXV0byBieXRlTGVuZ3RoID0gbWVzc2FnZS5zaXplSW5CeXRlcygpOwotICAg
IGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJu
IFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAg
ICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5n
IHsgbWVzc2FnZSB9LCBieXRlTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGVuZGluZ01l
c3NhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtZXNzYWdlKSk7
Ci0KLSAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Ci19Ci0KLVdlYlNvY2tldENoYW5uZWw6OlNlbmRS
ZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5h
cnlEYXRhLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQotewotICAg
IGlmICghaW5jcmVhc2VCdWZmZXJlZEFtb3VudChieXRlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJu
IFNlbmRGYWlsOwotCi0gICAgaWYgKG1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkKLSAgICAg
ICAgc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7
IElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlE
YXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0gfSwgYnl0ZUxlbmd0aCk7Ci0g
ICAgZWxzZQotICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxQZW5kaW5nTWVzc2FnZT4oYmluYXJ5RGF0YSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOwot
Ci0gICAgcmV0dXJuIFNlbmRTdWNjZXNzOwotfQotCiBjbGFzcyBCbG9iTG9hZGVyIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJsb2JMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnQq
IGRvY3VtZW50LCBXZWJDb3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9sb2FkZXIoc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpS
ZWFkQXNBcnJheUJ1ZmZlciwgdGhpcykpCisgICAgICAgIDogbV9sb2FkZXIobWFrZVVuaXF1ZTxX
ZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyPihXZWJDb3JlOjpGaWxlUmVhZGVyTG9hZGVyOjpSZWFk
QXNBcnJheUJ1ZmZlciwgdGhpcykpCiAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICB7CiAgICAgICAgIG1fbG9hZGVyLT5zdGFydChk
b2N1bWVudCwgYmxvYik7CkBAIC0yMjYsNyArMTk5LDcgQEAgY2xhc3MgUGVuZGluZ01lc3NhZ2Ug
ewogCiAgICAgUGVuZGluZ01lc3NhZ2UoV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJD
b3JlOjpCbG9iJiBibG9iLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgICAgIDogbV90eXBlKFR5cGU6OkJsb2IpCi0gICAgICAgICwgbV9ibG9iTG9h
ZGVyKHN0ZDo6bWFrZV91bmlxdWU8QmxvYkxvYWRlcj4oZG9jdW1lbnQsIGJsb2IsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKSkKKyAgICAgICAgLCBtX2Jsb2JMb2FkZXIobWFrZVVuaXF1ZTxC
bG9iTG9hZGVyPihkb2N1bWVudCwgYmxvYiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKQog
ICAgIHsKICAgICB9CiAKQEAgLTI0NCwxMyArMjE3LDQwIEBAIGNsYXNzIFBlbmRpbmdNZXNzYWdl
IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogfTsKIAor
V2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGJ5dGVMZW5ndGggPSBtZXNzYWdlLnNpemVJ
bkJ5dGVzKCk7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQor
ICAgICAgICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNF
bXB0eSgpKQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5u
ZWw6OlNlbmRTdHJpbmcgeyBtZXNzYWdlIH0sIGJ5dGVMZW5ndGgpOworICAgIGVsc2UKKyAgICAg
ICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKG1ha2VVbmlxdWU8UGVuZGluZ01lc3NhZ2U+KG1l
c3NhZ2UpKTsKKworICAgIHJldHVybiBTZW5kU3VjY2VzczsKK30KKworV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZm
ZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
Cit7CisgICAgaWYgKCFpbmNyZWFzZUJ1ZmZlcmVkQW1vdW50KGJ5dGVMZW5ndGgpKQorICAgICAg
ICByZXR1cm4gU2VuZEZhaWw7CisKKyAgICBpZiAobV9wZW5kaW5nTWVzc2FnZXMuaXNFbXB0eSgp
KQorICAgICAgICBzZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNl
bmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVu
Z3RoKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5p
cXVlPFBlbmRpbmdNZXNzYWdlPihiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7
CisKKyAgICByZXR1cm4gU2VuZFN1Y2Nlc3M7Cit9CisKIFdlYlNvY2tldENoYW5uZWw6OlNlbmRS
ZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChXZWJDb3JlOjpCbG9iJiBibG9iKQogewogICAg
IC8vIEF2b2lkIHRoZSBCbG9iIHF1ZXVlIGFuZCBsb2FkaW5nIGZvciBlbXB0eSBibG9icy4KICAg
ICBpZiAoIWJsb2Iuc2l6ZSgpKQogICAgICAgICByZXR1cm4gc2VuZChKU0M6OkFycmF5QnVmZmVy
OjpjcmVhdGUoYmxvYi5zaXplKCksIDEpLCAwLCAwKTsKIAotICAgIG1fcGVuZGluZ01lc3NhZ2Vz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgp
LCBibG9iLCBbdGhpc10geworICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChtYWtlVW5pcXVl
PFBlbmRpbmdNZXNzYWdlPihtX2RvY3VtZW50LmdldCgpLCBibG9iLCBbdGhpc10gewogICAgICAg
ICB3aGlsZSAoIW1fcGVuZGluZ01lc3NhZ2VzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0
byYgbWVzc2FnZSA9IG1fcGVuZGluZ01lc3NhZ2VzLmZpcnN0KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXIuY3BwCmluZGV4IDcyOWIyNDVkOWQ5ZGQ3ZThmYjM2OGUxZjQzYTM2NGFjZjBmNjY4OGIu
LjNkODlkZDdkZTUzNDYxYzRiM2E2N2Y0MzE1YjAyZDUwNjRhOWUxZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBBc3luY1Jlc29sdmVyRmFjdG9y
eSA6IHB1YmxpYyB3ZWJydGM6OkFzeW5jUmVzb2x2ZXJGYWN0b3J5IHsKIAogcnRjOjpzY29wZWRf
cmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVy
OjpjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImIG9i
c2VydmVyLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkqIHNvY2tldEZhY3RvcnksIHdlYnJ0Yzo6
UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9u
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpMaWJXZWJSVENQcm92aWRlcjo6Y3JlYXRlUGVlckNv
bm5lY3Rpb24ob2JzZXJ2ZXIsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxpYldlYlJUQ05ldHdv
cmsoKS5tb25pdG9yKCksICpzb2NrZXRGYWN0b3J5LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBz
dGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVzb2x2ZXJGYWN0b3J5PigpKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6TGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKG9ic2VydmVyLCBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5saWJXZWJSVENOZXR3b3JrKCkubW9uaXRvcigpLCAqc29j
a2V0RmFjdG9yeSwgV1RGTW92ZShjb25maWd1cmF0aW9uKSwgbWFrZVVuaXF1ZTxBc3luY1Jlc29s
dmVyRmFjdG9yeT4oKSk7CiB9CiAKIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OmRpc2FibGVOb25M
b2NhbGhvc3RDb25uZWN0aW9ucygpCkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3MgUlRDU29ja2V0
RmFjdG9yeSBmaW5hbCA6IHB1YmxpYyBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkgewogCiBzdGQ6
OnVuaXF1ZV9wdHI8cnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5PiBMaWJXZWJSVENQcm92aWRlcjo6
Y3JlYXRlU29ja2V0RmFjdG9yeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyYmIHVz
ZXJBZ2VudCkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxSVENTb2NrZXRGYWN0b3J5
PihzZXNzaW9uSUQsIFdURk1vdmUodXNlckFnZW50KSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UlRDU29ja2V0RmFjdG9yeT4oc2Vzc2lvbklELCBXVEZNb3ZlKHVzZXJBZ2VudCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5LmNwcApp
bmRleCBmOGI3ZWQyMjljNGY2ZjJkYzAzNjEzMmNjOTZlNDExZWVjYTU3MDJlLi4yMzU4MmRlNzU5
Yjk4NDVlYjdmZTQwNjQ0MzY1ZWZiYzE5Yjc1ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tl
dEZhY3RvcnkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbmxpbmUgcnRjOjpTb2NrZXRB
ZGRyZXNzIHByZXBhcmVTb2NrZXRBZGRyZXNzKGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYKIAog
cnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlU2Vy
dmVyVGNwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3Qg
bWluUG9ydCwgdWludDE2X3QgbWF4UG9ydCwgaW50IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBzb2Nr
ZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVT
b2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlNlcnZlclRDUCwgYWRkcmVz
cywgcnRjOjpTb2NrZXRBZGRyZXNzKCkpOworICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxM
aWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2Vi
UlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJUQ1AsIGFkZHJlc3MsIHJ0Yzo6U29ja2V0QWRkcmVzcygp
KTsKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkp
OwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmll
cigpLCBhZGRyZXNzID0gcHJlcGFyZVNvY2tldEFkZHJlc3MoYWRkcmVzcywgbV9kaXNhYmxlTm9u
TG9jYWxob3N0Q29ubmVjdGlvbnMpLCBtaW5Qb3J0LCBtYXhQb3J0LCBvcHRpb25zXSgpIHsKQEAg
LTY2LDcgKzY2LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFj
dG9yeTo6Y3JlYXRlU2VydmVyVGNwU29ja2V0KGNvbnN0IHJ0YzoKIAogcnRjOjpBc3luY1BhY2tl
dFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Y3JlYXRlVWRwU29ja2V0KGNvbnN0IHJ0
Yzo6U29ja2V0QWRkcmVzcyYgYWRkcmVzcywgdWludDE2X3QgbWluUG9ydCwgdWludDE2X3QgbWF4
UG9ydCkKIHsKLSAgICBhdXRvIHNvY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDU29j
a2V0PigqdGhpcywgKytzX3VuaXF1ZVNvY2tldElkZW50aWZpZXIsIExpYldlYlJUQ1NvY2tldDo6
VHlwZTo6VURQLCBhZGRyZXNzLCBydGM6OlNvY2tldEFkZHJlc3MoKSk7CisgICAgYXV0byBzb2Nr
ZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4oKnRoaXMsICsrc191bmlxdWVTb2NrZXRJ
ZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6OlVEUCwgYWRkcmVzcywgcnRjOjpTb2Nr
ZXRBZGRyZXNzKCkpOwogICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNv
Y2tldC5nZXQoKSk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0gc29ja2V0
LT5pZGVudGlmaWVyKCksIGFkZHJlc3MgPSBwcmVwYXJlU29ja2V0QWRkcmVzcyhhZGRyZXNzLCBt
X2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyksIG1pblBvcnQsIG1heFBvcnRdKCkgewpA
QCAtODAsNyArODAsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRG
YWN0b3J5OjpjcmVhdGVVZHBTb2NrZXQoY29uc3QgcnRjOjpTb2NrZQogCiBydGM6OkFzeW5jUGFj
a2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVDbGllbnRUY3BTb2NrZXQo
Y29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiBsb2NhbEFkZHJlc3MsIGNvbnN0IHJ0Yzo6U29ja2V0
QWRkcmVzcyYgcmVtb3RlQWRkcmVzcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcm
JiB1c2VyQWdlbnQsIGludCBvcHRpb25zKQogewotICAgIGF1dG8gc29ja2V0ID0gc3RkOjptYWtl
X3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3NfdW5pcXVlU29ja2V0SWRlbnRpZmll
ciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpDbGllbnRUQ1AsIGxvY2FsQWRkcmVzcywgcmVtb3Rl
QWRkcmVzcyk7CisgICAgYXV0byBzb2NrZXQgPSBtYWtlVW5pcXVlPExpYldlYlJUQ1NvY2tldD4o
KnRoaXMsICsrc191bmlxdWVTb2NrZXRJZGVudGlmaWVyLCBMaWJXZWJSVENTb2NrZXQ6OlR5cGU6
OkNsaWVudFRDUCwgbG9jYWxBZGRyZXNzLCByZW1vdGVBZGRyZXNzKTsKICAgICBzb2NrZXQtPnNl
dFN0YXRlKExpYldlYlJUQ1NvY2tldDo6U1RBVEVfQ09OTkVDVElORyk7CiAgICAgbV9zb2NrZXRz
LnNldChzb2NrZXQtPmlkZW50aWZpZXIoKSwgc29ja2V0LmdldCgpKTsKIApAQCAtOTYsNyArOTYs
NyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVh
dGVDbGllbnRUY3BTb2NrZXQoY29uc3QgcnRjOgogCiBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBM
aWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KExpYldlYlJU
Q1NvY2tldCYgc2VydmVyU29ja2V0LCB1aW50NjRfdCBuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRp
ZmllciwgY29uc3QgcnRjOjpTb2NrZXRBZGRyZXNzJiByZW1vdGVBZGRyZXNzKQogewotICAgIGF1
dG8gc29ja2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3Nf
dW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJDb25u
ZWN0aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJlc3MpOwor
ICAgIGF1dG8gc29ja2V0ID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENTb2NrZXQ+KCp0aGlzLCArK3Nf
dW5pcXVlU29ja2V0SWRlbnRpZmllciwgTGliV2ViUlRDU29ja2V0OjpUeXBlOjpTZXJ2ZXJDb25u
ZWN0aW9uVENQLCBzZXJ2ZXJTb2NrZXQubG9jYWxBZGRyZXNzKCksIHJlbW90ZUFkZHJlc3MpOwog
ICAgIHNvY2tldC0+c2V0U3RhdGUoTGliV2ViUlRDU29ja2V0OjpTVEFURV9DT05ORUNURUQpOwog
ICAgIG1fc29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAK
QEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIExpYldlYlJUQ1NvY2tldEZhY3Rvcnk6OmRldGFjaChM
aWJXZWJSVENTb2NrZXQmIHNvY2tldCkKIAogcnRjOjpBc3luY1Jlc29sdmVySW50ZXJmYWNlKiBM
aWJXZWJSVENTb2NrZXRGYWN0b3J5OjpjcmVhdGVBc3luY1Jlc29sdmVyKCkKIHsKLSAgICBhdXRv
IHJlc29sdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJXZWJSVENSZXNvbHZlcj4oKytzX3VuaXF1
ZVJlc29sdmVySWRlbnRpZmllcik7CisgICAgYXV0byByZXNvbHZlciA9IG1ha2VVbmlxdWU8TGli
V2ViUlRDUmVzb2x2ZXI+KCsrc191bmlxdWVSZXNvbHZlcklkZW50aWZpZXIpOwogICAgIGF1dG8q
IHJlc29sdmVyUG9pbnRlciA9IHJlc29sdmVyLmdldCgpOwogICAgIG1fcmVzb2x2ZXJzLnNldChy
ZXNvbHZlclBvaW50ZXItPmlkZW50aWZpZXIoKSwgV1RGTW92ZShyZXNvbHZlcikpOwogICAgIHJl
dHVybiByZXNvbHZlclBvaW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAK
aW5kZXggMTZhMWE3ZjgzNDQ2MDUzZjMzZDY1NGU4MzMzMjI5NTBlZTk5NGQ3Mi4uZDczZjFmMTZm
ODkwNzY5YzcyY2M5ZGQ0NDBkMjI5MjFmZjVmZmE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJv
d3NlckZ1bmNzLmNwcApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblBy
b3RlY3RvciB7CiAgICAgZXhwbGljaXQgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IoTmV0c2Nh
cGVQbHVnaW4qIHBsdWdpbikKICAgICB7CiAgICAgICAgIGlmIChwbHVnaW4pCi0gICAgICAgICAg
ICBtX3Byb3RlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2luQ29udHJvbGxlcjo6UGx1Z2lu
RGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+KHBsdWdpbiktPmNvbnRy
b2xsZXIoKSk7CisgICAgICAgICAgICBtX3Byb3RlY3RvciA9IG1ha2VVbmlxdWU8UGx1Z2luQ29u
dHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3I+KHN0YXRpY19jYXN0PFBsdWdpbio+
KHBsdWdpbiktPmNvbnRyb2xsZXIoKSk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAppbmRleCA2OWEzYzkzZjEzMjZmYTRjNmY3ZmViZjhhYjFiMmNhNGM3NzZi
YzBlLi41OWY0ODI1MWYyODg1NGM2ZDE2ODBiMWQ2NGRmYWE1YTQ3YzY4MTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgdWludDMyX3QgTmV0c2NhcGVQbHVn
aW46OnNjaGVkdWxlVGltZXIodW5zaWduZWQgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCB2b2lkICgq
dGkKICAgICAvLyBGSVhNRTogSGFuZGxlIHdyYXBwaW5nIGFyb3VuZC4KICAgICB1bnNpZ25lZCB0
aW1lcklEID0gKyttX25leHRUaW1lcklEOwogCi0gICAgYXV0byB0aW1lciA9IHN0ZDo6bWFrZV91
bmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7
CisgICAgYXV0byB0aW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KHRoaXMsIHRpbWVySUQsIGludGVy
dmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7CiAgICAgCiAgICAgLy8gRklYTUU6IEJhc2VkIG9uIHRo
ZSBwbHVnLWluIHZpc2liaWxpdHksIGZpZ3VyZSBvdXQgaWYgd2Ugc2hvdWxkIHRocm90dGxlIHRo
ZSB0aW1lciwgb3IgaWYgd2Ugc2hvdWxkIHN0YXJ0IGl0IGF0IGFsbC4KICAgICB0aW1lci0+c3Rh
cnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAwNDk2MjhmNWM2
MjcwMmU0ZDVkNDExMTgyMDEyM2JhNWY0Yjk2NTI0Li5iZGFhMTQ0Nzg0MjI2OTVkNTBlYTg0OGFh
ZmNjYmNlMTJkMmFkOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBA
IC0xOTMsNyArMTkzLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGEo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAobV90cmFuc2Zlck1vZGUg
IT0gTlBfQVNGSUxFT05MWSkgewogICAgICAgICBpZiAoIW1fZGVsaXZlcnlEYXRhKQotICAgICAg
ICAgICAgbV9kZWxpdmVyeURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1aW50OF90Pj4o
KTsKKyAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gbWFrZVVuaXF1ZTxWZWN0b3I8dWludDhf
dD4+KCk7CiAKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2VydmVDYXBhY2l0eShtX2RlbGl2
ZXJ5RGF0YS0+c2l6ZSgpICsgbGVuZ3RoKTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPmFwcGVu
ZChieXRlcywgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwCmlu
ZGV4IDQ0ZDExYjU3YzNlYTZkNTE4YzE4ZDA0YjgyMmQyODZkNTNlOTY4Y2YuLjA3ZDU1NmMzYjdm
YzYzNzE5YzJhMjU1OWUwYWFkNmMyMjZjMDdjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcApAQCAtMTM2LDEwICsxMzYsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPE5ldHNj
YXBlUGx1Z2luWDExPiBOZXRzY2FwZVBsdWdpblgxMTo6Y3JlYXRlKE5ldHNjYXBlUGx1Z2luJiBw
bHUKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAocGx1Z2luLmlzV2luZG93ZWQoKSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TmV0c2NhcGVQbHVnaW5YMTE+KHBsdWdpbiwg
ZGlzcGxheSwgd2luZG93SUQpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxOZXRzY2FwZVBs
dWdpblgxMT4ocGx1Z2luLCBkaXNwbGF5LCB3aW5kb3dJRCk7CiAjZW5kaWYKIAotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luWDExPihwbHVnaW4sIGRpc3BsYXkp
OwogfQogCiBOZXRzY2FwZVBsdWdpblgxMTo6TmV0c2NhcGVQbHVnaW5YMTEoTmV0c2NhcGVQbHVn
aW4mIHBsdWdpbiwgRGlzcGxheSogZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBmMzdjMmNjMjRlM2RkOTc2M2YzZWJk
ZDYzMmQ4YmZkYjc3MTQ0MzQ3Li45YWI1ODM3MzBiODlkYmQ5NjAxZDY1MjBlZjhmOWIwYmUwMDZk
YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUoY29u
c3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFBsdWdpblBy
b3h5KHRoaXMpOwogCiAgICAgLy8gQXNrIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRlIGEg
cGx1Zy1pbi4KLSAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycz4oKTsKKyAgICBtX3BlbmRpbmdQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMgPSBtYWtlVW5pcXVlPFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cz4oKTsKIAogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGx1Z2luSW5z
dGFuY2VJRCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMtPndpbmRvd05QT2JqZWN0SUQgPSB3aW5kb3dOUE9iamVjdElEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDdh
Yjg5NjZkYjkwNWFkZDEyMzk0ODE2NTBiMTlkZTRhN2U3ZDIyM2YuLjExOWQyYjkwYzJiNDQyMzFm
MjU2OTU3ZTYyZGRjYThmMTMwZmM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC04OTgsNyArODk4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFdlYkV2ZW50PiBQbHVnaW5WaWV3OjpjcmVhdGVXZWJFdmVudChNb3VzZUV2ZW50JiBldmVu
dCkgY29uc3QKICAgICBpZiAoZXZlbnQubWV0YUtleSgpKQogICAgICAgICBtb2RpZmllcnMuYWRk
KFdlYkV2ZW50OjpNb2RpZmllcjo6TWV0YUtleSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJNb3VzZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVn
aW4tPmNvbnZlcnRUb1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zm
c2V0WSgpKSksIGV2ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1v
ZGlmaWVycywgV2FsbFRpbWUgeyB9LCAwKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNb3Vz
ZUV2ZW50Pih0eXBlLCBidXR0b24sIGV2ZW50LmJ1dHRvbnMoKSwgbV9wbHVnaW4tPmNvbnZlcnRU
b1Jvb3RWaWV3KEludFBvaW50KGV2ZW50Lm9mZnNldFgoKSwgZXZlbnQub2Zmc2V0WSgpKSksIGV2
ZW50LnNjcmVlbkxvY2F0aW9uKCksIDAsIDAsIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2Fs
bFRpbWUgeyB9LCAwKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCYg
ZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDlkMjBjN2M0
OWMwMmFhOTU5YWE0YWU0ZDllZWM4ZmU4M2M1ZmU3Yy4uMTg4YWRiMDk1OTJmOTIyYTEwMWYyZjM3
M2U5MDM5OTY3YjE5YTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApA
QCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omlu
c3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250CiAgICAgLy8gRklYTUU6
IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBtb3ZlZCBkaXJlY3RseSB0byBXZWJDb3JlOjpTV0NvbnRl
eHRNYW5hZ2VyOjpDb25uZWN0aW9uCiAgICAgLy8gSWYgaXQgd2VyZW4ndCBmb3IgU2VydmljZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50J3MgZGVwZW5kZW5jZSBvbiBXZWJEb2N1bWVudExvYWRlciwg
dGhpcyBjb3VsZCBhbHJlYWR5IGhhcHBlbi4KICAgICAvLyBGSVhNRTogV2VpcmQgdG8gcGFzcyBt
X3ByZXZpb3VzU2VydmljZVdvcmtlcklEIGFzIGEgRnJhbWVJZGVudGlmaWVyLgotICAgIGF1dG8g
ZnJhbWVMb2FkZXJDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJGcmFtZUxv
YWRlckNsaWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsIGZyYW1lSWRlbnRpZmllckZy
b21JRCgrK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQpLCBlZmZlY3RpdmVVc2VyQWdlbnQpOwor
ICAgIGF1dG8gZnJhbWVMb2FkZXJDbGllbnQgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJGcmFt
ZUxvYWRlckNsaWVudD4oKnRoaXMsIHNlc3Npb25JRCwgbV9wYWdlSUQsIGZyYW1lSWRlbnRpZmll
ckZyb21JRCgrK21fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQpLCBlZmZlY3RpdmVVc2VyQWdlbnQp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IGZyYW1l
TG9hZGVyQ2xpZW50LmdldCgpOwogICAgIG1fbG9hZGVycy5hZGQoV1RGTW92ZShmcmFtZUxvYWRl
ckNsaWVudCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGZjZDA5OGU0ODQwYTU4YTJi
NWEyMTk3ZWI1MjkxZTBhNGY0ODI5ZjIuLjBlNmI5NDNkMTU5YzYxMjJhOWI0NDRmZTY4ZjA1NzUw
NjlkMTFkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC03OTMsNyArNzkzLDcgQEAgdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbiwKIAogc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIoQ29sb3JDaG9vc2VyQ2xpZW50JiBjbGll
bnQsIGNvbnN0IENvbG9yJiBpbml0aWFsQ29sb3IpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8V2ViQ29sb3JDaG9vc2VyPigmbV9wYWdlLCAmY2xpZW50LCBpbml0aWFsQ29sb3IpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvbG9yQ2hvb3Nlcj4oJm1fcGFnZSwgJmNsaWVudCwg
aW5pdGlhbENvbG9yKTsKIH0KIAogI2VuZGlmCkBAIC04MDIsNyArODAyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPENvbG9yQ2hvb3Nlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVDb2xvckNob29zZXIo
Q29sb3JDaG9vc2VyQ2wKIAogc3RkOjp1bmlxdWVfcHRyPERhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoRGF0YUxp
c3RTdWdnZXN0aW9uc0NsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcj4oJm1fcGFnZSwgJmNsaWVudCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyPigmbV9wYWdlLCAm
Y2xpZW50KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDdj
ZGFhY2QxZmMxZDQ2ZDY1ZWFkYzNmM2E2MTM0YWEzNTU4YTJkMTEuLmQ2N2I2MmMwMmU2ODgzYjQ0
ODY1ZmJhMTU4NTE2ZWEwY2JjYjVjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBA
IC0xNTEsNyArMTUxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghbV9wYWludEluZGljYXRv
ckxheWVyQ2xpZW50KQotICAgICAgICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudD4oKnRoaXMpOworICAgICAg
ICBtX3BhaW50SW5kaWNhdG9yTGF5ZXJDbGllbnQgPSBtYWtlVW5pcXVlPFJlcGFpbnRJbmRpY2F0
b3JMYXllckNsaWVudD4oKnRoaXMpOwogCiAgICAgYXV0byBwYWludExheWVyID0gR3JhcGhpY3NM
YXllcjo6Y3JlYXRlKG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+Z3JhcGhpY3NMYXllckZhY3Rvcnko
KSwgKm1fcGFpbnRJbmRpY2F0b3JMYXllckNsaWVudCk7CiAgICAgCkBAIC0xNjIsOSArMTYyLDkg
QEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNob3dQYWludFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIHBhaW50TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigxLjBmLCAw
LjBmLCAwLjBmLCAwLjJmKSk7CiAKICAgICBLZXlmcmFtZVZhbHVlTGlzdCBmYWRlS2V5ZnJhbWVz
KEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICBmYWRlS2V5ZnJhbWVzLmluc2VydChzdGQ6
Om1ha2VfdW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKKyAgICBmYWRlS2V5ZnJh
bWVzLmluc2VydChtYWtlVW5pcXVlPEZsb2F0QW5pbWF0aW9uVmFsdWU+KDAsIDEpKTsKIAotICAg
IGZhZGVLZXlmcmFtZXMuaW5zZXJ0KHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1
ZT4oMC4yNSwgMCkpOworICAgIGZhZGVLZXlmcmFtZXMuaW5zZXJ0KG1ha2VVbmlxdWU8RmxvYXRB
bmltYXRpb25WYWx1ZT4oMC4yNSwgMCkpOwogICAgIAogICAgIGF1dG8gb3BhY2l0eUFuaW1hdGlv
biA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CiAgICAgb3BhY2l0eUFuaW1hdGlvbi0+c2V0RHVyYXRp
b24oMC4yNSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRlcy5jcHAKaW5kZXggNzkwMDg0
Y2U0OGQyMjZiMTBlNjY1YjgyODQ0MzQ5ZmRhYWZmZWU0Ni4uNjlmMGFlODI3OTUwN2I3Mjk2NWY2
NWMyMTY4NzNjNDgxYWRmNGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNw
cApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OmFkZE92ZXJy
aWRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cgogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9vdmVycmlkZXNNYXAuYWRkKHBhc3RlYm9hcmROYW1lLCBudWxscHRyKTsKIAog
ICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PigpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SGFzaE1hcDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBtYWtl
VW5pcXVlPEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PigpOwogICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGTW92ZSh0eXBlTWFwKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcAppbmRleCA5Y2ZmY2M5YTlmZDJiNjQ0NDkyMmY4NTRhZDk3ZDFkMzMxZTcw
YjBlLi5iMjQ1ODFjOTdlN2E4ODE2ZjQ2YWY5MzE5YTkxZWEyMWI3MmJkNjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCkBAIC01NTAsNyArNTUwLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5h
dGVkR3JhcGhpY3M6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkK
ICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFi
bGVkKHRydWUpOwogICAgIH0gZWxzZSB7CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQot
ICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPExheWVyVHJlZUhvc3Q+
KG1fd2ViUGFnZSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG1ha2VVbmlxdWU8TGF5ZXJU
cmVlSG9zdD4obV93ZWJQYWdlKTsKICNlbHNlCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAppbmRleCBjMDczOTZmMDJmMWZhNjVmNDVhY2VlNzJmMTM0
ZjRmYjJkOWU4OTA5Li41MzU4Y2Q2ODYzYjMyMjY5NThlZTI3NGVmZDAzMmFkMjAwNjRkZDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3Bw
CkBAIC01MCwxMyArNTAsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhPiBEcmF3aW5n
QXJlYTo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFdlYlBhZ2UKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjYXNlIERyYXdpbmdBcmVh
VHlwZVRpbGVkQ29yZUFuaW1hdGlvbjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT4od2Vi
UGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZVJlbW90
ZUxheWVyVHJlZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWE+KHdlYlBhZ2UsIHBhcmFtZXRlcnMpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT4od2ViUGFnZSwgcGFyYW1ldGVycyk7
CiAjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpIHx8IFVTRShURVhUVVJFX01BUFBFUikK
ICAgICBjYXNlIERyYXdpbmdBcmVhVHlwZUNvb3JkaW5hdGVkR3JhcGhpY3M6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4od2Vi
UGFnZSwgcGFyYW1ldGVycyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcz4od2ViUGFnZSwgcGFyYW1ldGVycyk7CiAjZW5kaWYKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5k
ZXggNDUyZjUzYmNlZGMwMDQ3ZjczM2QxYzM0YmNkNzY1MTE5MmNiOGJlNi4uNDZlOGFhMDk5ODY0
NWE4Y2U1ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQobV9wcm9w
ZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsKIAogICAgIGlmICghbV9wcm9wZXJ0aWVzLmJh
Y2tpbmdTdG9yZSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KHRoaXMpOworICAgICAgICBtX3Byb3Bl
cnRpZXMuYmFja2luZ1N0b3JlID0gbWFrZVVuaXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4o
dGhpcyk7CiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmUoKTsKIH0KQEAgLTUyMSw3ICs1MjEsNyBA
QCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnRyYW5zZm9ybSgp
IGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAgIG1fcHJvcGVydGllcy50cmFuc2Zv
cm0gPSBzdGQ6Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CisgICAg
bV9wcm9wZXJ0aWVzLnRyYW5zZm9ybSA9IG1ha2VVbmlxdWU8VHJhbnNmb3JtYXRpb25NYXRyaXg+
KHZhbHVlKTsKICAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNTMyLDcgKzUz
Miw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c3VibGF5
ZXJUcmFuc2Zvcm0oKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0U3Vi
bGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHZhbHVlKQogewotICAg
IG1fcHJvcGVydGllcy5zdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNm
b3JtYXRpb25NYXRyaXg+KHZhbHVlKTsKKyAgICBtX3Byb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zv
cm0gPSBtYWtlVW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pih2YWx1ZSk7CiAgICAgbV9wcm9w
ZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
U3VibGF5ZXJUcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIApAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQg
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRPcGFjaXR5KGZsb2F0IHZhbHVlKQogCiB2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKQogewotICAgIG1fcHJvcGVydGllcy5maWx0ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxG
aWx0ZXJPcGVyYXRpb25zPihmaWx0ZXJzKTsKKyAgICBtX3Byb3BlcnRpZXMuZmlsdGVycyA9IG1h
a2VVbmlxdWU8RmlsdGVyT3BlcmF0aW9ucz4oZmlsdGVycyk7CiAgICAgbV9wcm9wZXJ0aWVzLm5v
dGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RmlsdGVyc0No
YW5nZWQpOwogfQogCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFIK
ICAgICBpZiAobV9wcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgJiYgKm1fcHJvcGVydGllcy5z
aGFwZVJvdW5kZWRSZWN0ID09IHJvdW5kZWRSZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRSb3Vu
ZGVkUmVjdD4ocm91bmRlZFJlY3QpOworICAgIG1fcHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0
ID0gbWFrZVVuaXF1ZTxGbG9hdFJvdW5kZWRSZWN0Pihyb3VuZGVkUmVjdCk7CiAgICAgbV9wcm9w
ZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
U2hhcGVSb3VuZGVkUmVjdENoYW5nZWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
VGlsZWRCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCmluZGV4IDFj
YmQxYjRiYTc5YTdkZjljZTU1ZTA0MjFkNDRlNjViNDA4ODIxYzIuLjA5OTUzNmI5M2MwMTFhYzNm
MmEwNzNjM2NhNDY0ZjA3MjY0NjljZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwCkBAIC0zNiw3ICsz
Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVU
aWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyhMYXllclR5cGUg
bGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVD
b250ZXh0JiBjb250ZXh0KQogICAgIDogUGxhdGZvcm1DQUxheWVyUmVtb3RlKGxheWVyVHlwZSwg
b3duZXIsIGNvbnRleHQpCi0gICAgLCBtX3RpbGVDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8
VGlsZUNvbnRyb2xsZXI+KHRoaXMpKQorICAgICwgbV90aWxlQ29udHJvbGxlcihtYWtlVW5pcXVl
PFRpbGVDb250cm9sbGVyPih0aGlzKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDVlNTBlMGJhMWVmMTI0NmM2
YWUwOGYyOWQ5MmE4MzBlMGRiNGYyMzcuLjQ0NDZmMzRkMDRjY2ZiZmJlYjM2OWJhNDRjMzIwNmJm
MGRkMjNlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogICAgIDogRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlUmVtb3RlTGF5ZXJUcmVl
LCBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciwgd2ViUGFnZSkKLSAgICAsIG1fcmVt
b3RlTGF5ZXJUcmVlQ29udGV4dChzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQ+KHdlYlBhZ2UpKQorICAgICwgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0KG1ha2VVbmlxdWU8
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dD4od2ViUGFnZSkpCiAgICAgLCBtX3Jvb3RMYXllcihHcmFw
aGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpKQogICAgICwg
bV9sYXllckZsdXNoVGltZXIoKnRoaXMsICZSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1
c2hMYXllcnMpCiB7CkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OldpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbi50
cmFuc2FjdGlvbklEKCkpKTsKIAogICAgIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpDb21taXRMYXllclRyZWUgbWVzc2FnZShsYXllclRyYW5zYWN0aW9uLCBzY3Jv
bGxpbmdUcmFuc2FjdGlvbik7Ci0gICAgYXV0byBjb21taXRFbmNvZGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxJUEM6OkVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjpDb21taXRMYXllclRyZWU6OnJlY2VpdmVyTmFtZSgpLCBNZXNzYWdlczo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlOjpuYW1lKCksIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBhdXRvIGNvbW1pdEVuY29kZXIgPSBtYWtlVW5pcXVlPElQ
Qzo6RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNv
bW1pdExheWVyVHJlZTo6cmVjZWl2ZXJOYW1lKCksIE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU6Om5hbWUoKSwgbV9pZGVudGlmaWVyLnRv
VUludDY0KCkpOwogICAgIGNvbW1pdEVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygp
KTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFn
ZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGYwZWJmZWRiYjJlOTUz
YWQwZmMwN2Y5ZjgxNjYwOWRiOTczNWI2NjUuLjUyOTY1ZmU0YzViYjM1YzQ5YWRhMDcwMDNiMzM3
MTQzNmI3MjU1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVh
dGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogCiBS
ZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQp
CiB7Ci0gICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9h
ZGVyQ2xpZW50PigpKTsKKyAgICBhdXRvIGZyYW1lID0gY3JlYXRlKG1ha2VVbmlxdWU8V2ViRnJh
bWVMb2FkZXJDbGllbnQ+KCkpOwogICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3Jl
RnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJh
bWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjZjFmMmQ2MzcyNzgyMjY5MjAxZjFkZjJiN2Jk
Njk4MWM5ZmFhZGJjLi5jZjY3OGEyYjUwNWQ3OTYxNjczMzU3NGE4ZDlhMGE1Y2ViMDk4MDBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzgz
LDIxICszODMsMjEgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV90ZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHkobWFrZVVuaXF1ZVJlZjxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJv
eHk+KCp0aGlzKSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEsp
Ci0gICAgLCBtX3ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Ioc3RkOjptYWtlX3VuaXF1ZTxW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yPigqdGhpcykpCisgICAgLCBtX3ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IobWFrZVVuaXF1ZTxWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
PigqdGhpcykpCiAjZWxpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oR1RLKQog
ICAgICwgbV9hY2Nlc3NpYmlsaXR5T2JqZWN0KG51bGxwdHIpCiAjZW5kaWYKICAgICAsIG1fc2V0
Q2FuU3RhcnRNZWRpYVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2U6OnNldENh
blN0YXJ0TWVkaWFUaW1lckZpcmVkKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgICwg
bV9jb250ZXh0TWVudUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlBhZ2VDb250ZXh0TWVudUNsaWVudD4oKSkKKyAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFr
ZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCkpCiAj
ZW5kaWYKLSAgICAsIG1fZWRpdG9yQ2xpZW50IHsgc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCkgfQotICAgICwgbV9mb3JtQ2xpZW50KHN0ZDo6bWFr
ZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKLSAgICAsIG1fbG9h
ZGVyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRl
ckNsaWVudD4oKSkKLSAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3VyY2VMb2FkQ2xpZW50PigpKQotICAgICwgbV91aUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4o
KSkKKyAgICAsIG1fZWRpdG9yQ2xpZW50IHsgbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpFZGl0b3JDbGllbnQ+KCkgfQorICAgICwgbV9mb3JtQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6Rm9ybUNsaWVudD4oKSkKKyAgICAsIG1fbG9hZGVyQ2xpZW50KG1ha2VV
bmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudD4oKSkKKyAgICAsIG1f
cmVzb3VyY2VMb2FkQ2xpZW50KG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRsZTo6UmVzb3Vy
Y2VMb2FkQ2xpZW50PigpKQorICAgICwgbV91aUNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudD4oKSkKICAgICAsIG1fZmluZENvbnRyb2xsZXIobWFrZVVu
aXF1ZVJlZjxGaW5kQ29udHJvbGxlcj4odGhpcykpCi0gICAgLCBtX2luc3BlY3RvclRhcmdldENv
bnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxl
cj4oKnRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyKG1ha2VVbmlxdWU8
V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyKFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFy
YW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCkpCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQogICAgICwgbV9nZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcihtYWtlVW5pcXVl
UmVmPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyPigqdGhpcykpCkBAIC00NjQs
MjEgKzQ2NCwyMSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24ucGx1Z0luQ2xpZW50ID0gbmV3IFdlYlBsdWdJbkNsaWVudCgqdGhpcyk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5l
dyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQoKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9u
LmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudD4oKnRoaXMpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLnBlcmZvcm1hbmNl
TG9nZ2luZ0NsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xp
ZW50PigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQgPSBtYWtlVW5pcXVlPFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50PigqdGhpcyk7CisgICAg
cGFnZUNvbmZpZ3VyYXRpb24ucGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50ID0gbWFrZVVuaXF1ZTxX
ZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ+KCp0aGlzKTsKIAogI2lmIEVOQUJMRShXRUJHTCkK
LSAgICBwYWdlQ29uZmlndXJhdGlvbi53ZWJHTFN0YXRlVHJhY2tlciA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViR0xTdGF0ZVRyYWNrZXI+KFt0aGlzXShib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VX
ZWJHTCkgeworICAgIHBhZ2VDb25maWd1cmF0aW9uLndlYkdMU3RhdGVUcmFja2VyID0gbWFrZVVu
aXF1ZTxXZWJHTFN0YXRlVHJhY2tlcj4oW3RoaXNdKGJvb2wgaXNVc2luZ0hpZ2hQZXJmb3JtYW5j
ZVdlYkdMKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SXNVc2lu
Z0hpZ2hQZXJmb3JtYW5jZVdlYkdMKGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkpOwogICAg
IH0pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi5zcGVlY2hTeW50aGVzaXNDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnNwZWVj
aFN5bnRoZXNpc0NsaWVudCA9IG1ha2VVbmlxdWU8V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Pigq
dGhpcyk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHBhZ2VDb25maWd1cmF0
aW9uLnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWYWxpZGF0
aW9uTWVzc2FnZUNsaWVudD4oKnRoaXMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLnZhbGlkYXRp
b25NZXNzYWdlQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVudD4o
KnRoaXMpOwogI2VuZGlmCiAKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSA9ICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZSgpOwpAQCAtNDkzLDE0ICs0OTMsMTQgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHBhZ2VDb25maWd1cmF0aW9uLmF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yPigqdGhpcyk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I+KCp0aGlzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uTWFuaWZlc3QgPSBwYXJhbWV0ZXJzLmFw
cGxpY2F0aW9uTWFuaWZlc3Q7CiAjZW5kaWYKIAotICAgIG1fcGFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIG1fcGFnZSA9IG1ha2VV
bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgLy8gU2V0IHRo
ZSBzZXNzaW9uSUQgKmJlZm9yZSogdXBkYXRpbmcgdGhlIHByZWZlcmVuY2VzIGFzIHRoZSBwcml2
YXRlQnJvd3NpbmdFbmFibGVkIHByZWZlcmVuY2VzIG1heSBuZWVkIHRvIG92ZXJyaWRlIGl0Lgog
ICAgIGlmIChwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc1ZhbGlkKCkpCkBAIC04NTMsNyArODUzLDcg
QEAgdWludDY0X3QgV2ViUGFnZTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAog
dm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+JiYgY29u
dGV4dE1lbnVDbGllbnQpCiB7CiAgICAgaWYgKCFjb250ZXh0TWVudUNsaWVudCkgewotICAgICAg
ICBtX2NvbnRleHRNZW51Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpQYWdlQ29udGV4dE1lbnVDbGllbnQ+KCk7CisgICAgICAgIG1fY29udGV4dE1lbnVDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVudUNsaWVu
dD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQg
V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpJbmplY3RlZEJ1CiB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+
JiYgZWRpdG9yQ2xpZW50KQogewogICAgIGlmICghZWRpdG9yQ2xpZW50KSB7Ci0gICAgICAgIG1f
ZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0
b3JDbGllbnQ+KCk7CisgICAgICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Oklu
amVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRWRpdG9y
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOgogdm9pZCBXZWJQYWdl
OjpzZXRJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5qZWN0
ZWRCdW5kbGU6OkZvcm1DbGllbnQ+JiYgZm9ybUNsaWVudCkKIHsKICAgICBpZiAoIWZvcm1DbGll
bnQpIHsKLSAgICAgICAgbV9mb3JtQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVj
dGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOworICAgICAgICBtX2Zvcm1DbGllbnQgPSBtYWtlVW5p
cXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQ+KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEluamVjdGVkQnVu
ZGxlRm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1bmRsZTo6Rgogdm9p
ZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50
KQogewogICAgIGlmICghbG9hZGVyQ2xpZW50KSB7Ci0gICAgICAgIG1fbG9hZGVyQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50Pigp
OworICAgICAgICBtX2xvYWRlckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbmplY3RlZEJ1bmRs
ZTo6UGFnZUxvYWRlckNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTA1
LDcgKzkwNSw3IEBAIHZvaWQgV2ViUGFnZTo6aW5pdGlhbGl6ZUluamVjdGVkQnVuZGxlUG9saWN5
Q2xpZW50KFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudEJhc2UqCiB2b2lkIFdlYlBhZ2U6OnNldElu
amVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVj
dGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+JiYgY2xpZW50KQogewogICAgIGlmICghbV9y
ZXNvdXJjZUxvYWRDbGllbnQpCi0gICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7Cisg
ICAgICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVu
ZGxlOjpSZXNvdXJjZUxvYWRDbGllbnQ+KCk7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNl
TG9hZENsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKIH0KQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkluamVjdGVkQgogdm9pZCBXZWJQYWdlOjpzZXRJbmplY3RlZEJ1bmRsZVVJQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+JiYg
dWlDbGllbnQpCiB7CiAgICAgaWYgKCF1aUNsaWVudCkgewotICAgICAgICBtX3VpQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7Cisg
ICAgICAgIG1fdWlDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VV
SUNsaWVudD4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQxMCwxNCArMTQxMCwx
NCBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCi0gICAgbV9jb250ZXh0TWVudUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpJ
bmplY3RlZEJ1bmRsZTo6UGFnZUNvbnRleHRNZW51Q2xpZW50PigpOworICAgIG1fY29udGV4dE1l
bnVDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VDb250ZXh0TWVu
dUNsaWVudD4oKTsKICNlbmRpZgotICAgIG1fZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7Ci0gICAgbV9mb3JtQ2xpZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOwot
ICAgIG1fbG9hZGVyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxl
OjpQYWdlTG9hZGVyQ2xpZW50PigpOworICAgIG1fZWRpdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxB
UEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ+KCk7CisgICAgbV9mb3JtQ2xpZW50ID0g
bWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50PigpOworICAgIG1fbG9h
ZGVyQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xp
ZW50PigpOwogICAgIG1fcG9saWN5Q2xpZW50LmluaXRpYWxpemUoMCk7Ci0gICAgbV9yZXNvdXJj
ZUxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291
cmNlTG9hZENsaWVudD4oKTsKLSAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ+KCk7CisgICAgbV9yZXNvdXJjZUxvYWRDbGll
bnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlJlc291cmNlTG9hZENsaWVudD4o
KTsKKyAgICBtX3VpQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdl
VUlDbGllbnQ+KCk7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIG1fZnVsbFNjcmVl
bkNsaWVudC5pbml0aWFsaXplKDApOwogI2VuZGlmCkBAIC00Njk2LDcgKzQ2OTYsNyBAQCB2b2lk
IFdlYlBhZ2U6OmJlZ2luUHJpbnRpbmcoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvKQogI2VuZGlmCiAKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KSB7
Ci0gICAgICAgIG1fcHJpbnRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmludENvbnRleHQ+
KGNvcmVGcmFtZSk7CisgICAgICAgIG1fcHJpbnRDb250ZXh0ID0gbWFrZVVuaXF1ZTxQcmludENv
bnRleHQ+KGNvcmVGcmFtZSk7CiAgICAgICAgIG1fcGFnZS0+ZGlzcGF0Y2hCZWZvcmVQcmludEV2
ZW50KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCBiMTYwMjcwOTVm
NzdiNmQyOTk1OTg1OGZiNGIxNTRkMTlmZWNmMWZiLi4zMWVmZjExZjdhZTBhM2ViOGNmYmI2ZmYy
YjNkYmE1MTYyNGMxZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTcyNyw3ICs3
MjcsNyBAQCB2b2lkIFdlYlByaW50T3BlcmF0aW9uR3RrOjpwcmludChjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UsIGRvdWJsZSB4RFBJLCBkb3VibGUgeQogewogICAgIEFTU0VSVChtX3ByaW50Q29u
dGV4dCk7CiAKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50UGFnZXNEYXRh
Pih0aGlzKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlPFByaW50UGFnZXNEYXRhPih0aGlz
KTsKICAgICBpZiAoIWRhdGEtPmlzVmFsaWQpIHsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV9maW5p
c2goc3VyZmFjZSk7CiAgICAgICAgIHByaW50RG9uZShpbnZhbGlkUGFnZVJhbmdlVG9QcmludChm
cmFtZVVSTCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggOWFiYjJhNzkyOTlkNTk2YjkxZTZl
ZjYxY2E0M2VmODYxOTBhOTA0OS4uOTM0MThhYjIxZDc0ZmM5NDU4YTAyMjRlNGNiNDhhNzM0MTc4
MDlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0Zp
bmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQpAQCAtOTgsNyArOTgsNyBAQCBib29sIEZpbmRDb250
cm9sbGVyOjp1cGRhdGVGaW5kSW5kaWNhdG9yKEZyYW1lJiBzZWxlY3RlZEZyYW1lLCBib29sIGlz
U2hvd2luZ092ZQogICAgIGlmICghdGV4dEluZGljYXRvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgbV9maW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
RmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M+KHNlbGVjdGVkRnJhbWUsIHRleHRJbmRpY2F0
b3IuZ2V0KCkpOworICAgIG1fZmluZEluZGljYXRvck92ZXJsYXlDbGllbnQgPSBtYWtlVW5pcXVl
PEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TPihzZWxlY3RlZEZyYW1lLCB0ZXh0SW5kaWNh
dG9yLmdldCgpKTsKICAgICBtX2ZpbmRJbmRpY2F0b3JSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0
ZXh0SW5kaWNhdG9yLT5zZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpOwogICAg
IG1fZmluZEluZGljYXRvck92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKCptX2ZpbmRJbmRp
Y2F0b3JPdmVybGF5Q2xpZW50LCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsK
ICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3Rh
bGxQYWdlT3ZlcmxheSgqbV9maW5kSW5kaWNhdG9yT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVN
b2RlOjpEb05vdEZhZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL0RyYXdpbmdBcmVhTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9EcmF3aW5nQXJlYU1hYy5jcHAKaW5kZXggOTA2ODdjOTc0YWNmMzNkODJiOGM2
NGI5NDhlNmVlOWEzMGVlMmU5Yy4uMDZmY2M0NzE1OTNlYjc4ZWRlYmZjYzYzZjg5NDRiM2RmYWU5
ZGFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Ry
YXdpbmdBcmVhTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvRHJhd2luZ0FyZWFNYWMuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKICAgICBpZiAoIW1faGFzU2Vu
dE1lc3NhZ2UpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTdGFydERpc3Bs
YXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCkpLCAwKTsKICAgICAgICAgbV9oYXNTZW50
TWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIG1fcnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1bkxvb3BFbnRyeSwgW3RoaXNdKCkgeworICAgICAg
ICBtX3J1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8UnVuTG9vcE9ic2VydmVyPihrQ0ZSdW5M
b29wRW50cnksIFt0aGlzXSgpIHsKICAgICAgICAgICAgIHRoaXMtPm1fZmlyc3RDYWxsYmFja0lu
Q3VycmVudFJ1bmxvb3AgPSB0cnVlOwogICAgICAgICB9KTsKICAgICAgICAgbV9ydW5Mb29wT2Jz
ZXJ2ZXItPnNjaGVkdWxlKENGUnVuTG9vcEdldEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggZGY2MDAzNjQ1OThmMTM0NjI5ZGFiNjI3MDZl
YWY2ODYxZTVmZjMzZC4uNGNiM2RmOWFlYTUyOWVmZjUyNjMzNmM4MWYxMzAyMDQ1YmEzZTBjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAtODcsNyArODcs
NyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgYwogICAgIFttX2hvc3RpbmdMYXllciBzZXRPcGFx
dWU6WUVTXTsKICAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAK
LSAgICBtX2xheWVyRmx1c2hSdW5Mb29wT2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNv
cmU6OlJ1bkxvb3BPYnNlcnZlcj4oc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oUnVuTG9vcE9ic2VydmVy
OjpXZWxsS25vd25SdW5Mb29wT3JkZXJzOjpMYXllckZsdXNoKSwgW3RoaXNdKCkgeworICAgIG1f
bGF5ZXJGbHVzaFJ1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9i
c2VydmVyPihzdGF0aWNfY2FzdDxDRkluZGV4PihSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1
bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVy
Rmx1c2hSdW5Mb29wQ2FsbGJhY2soKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDZhNTQ3Nzc3Yzc2ZjhmZWZkYTkxMTMyMzA0NDFiYTI0Y2Y3
ZjJkYzAuLjc0ZjU5YzIyMzYwOGI0ZWUyN2JkZjc5OTcyOWQwNDVmNzg4OWM2YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE1NTksNyArMTU1OSw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6bWFya0FsbExheWVyc1ZvbGF0aWxlKFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgQVNTRVJUKCFtX3BhZ2VNYXJraW5nTGF5ZXJzQXNW
b2xhdGlsZUNvdW50ZXIpOwogICAgIG1fY291bnRPZlBhZ2VzRmFpbGluZ1RvTWFya1ZvbGF0aWxl
ID0gMDsKIAotICAgIG1fcGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlciA9IHN0ZDo6
bWFrZV91bmlxdWU8UGFnZU1hcmtpbmdMYXllcnNBc1ZvbGF0aWxlQ291bnRlcj4oW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZWZDb3VudGVy
RXZlbnQpIHsKKyAgICBtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXIgPSBtYWtl
VW5pcXVlPFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXI+KFt0aGlzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVmQ291bnRlckV2ZW50
KSB7CiAgICAgICAgIGlmIChtX3BhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXItPnZh
bHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE4MTAsNyArMTgxMCw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6c2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2aWNlcywgYm9v
bCBoYXNTZWxlY3Rpb25TZXJ2CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlQXV0b21hdGlvblNl
c3Npb25Qcm94eShjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGlmaWVyKQogewotICAgIG1fYXV0
b21hdGlvblNlc3Npb25Qcm94eSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eT4oc2Vzc2lvbklkZW50aWZpZXIpOworICAgIG1fYXV0b21hdGlvblNlc3Npb25Qcm94
eSA9IG1ha2VVbmlxdWU8V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eT4oc2Vzc2lvbklkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lBdXRvbWF0aW9uU2Vzc2lvblByb3h5
KCkKQEAgLTE4NDMsNyArMTg0Myw3IEBAIGJvb2wgV2ViUHJvY2Vzczo6aGFzVmlzaWJsZVdlYlBh
Z2UoKSBjb25zdAogTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29y
aygpCiB7CiAgICAgaWYgKCFtX2xpYldlYlJUQ05ldHdvcmspCi0gICAgICAgIG1fbGliV2ViUlRD
TmV0d29yayA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDTmV0d29yaz4oKTsKKyAgICAgICAg
bV9saWJXZWJSVENOZXR3b3JrID0gbWFrZVVuaXF1ZTxMaWJXZWJSVENOZXR3b3JrPigpOwogICAg
IHJldHVybiAqbV9saWJXZWJSVENOZXR3b3JrOwogfQogCkBAIC0xODU0LDcgKzE4NTQsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyh1aW50NjRfdCBwYWdlRwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1
bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBhdXRvJiBpcGNDb25u
ZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwot
ICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24oc3RkOjptYWtl
X3VuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgcGFn
ZUdyb3VwSUQsIHBhZ2VJRCwgc3RvcmUpKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24+KGlwY0Nvbm5lY3Rpb24sIHBhZ2VHcm91cElELCBwYWdlSUQsIHN0b3JlKSk7CiB9CiAKIHZv
aWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA1OTZkZGRhMDgyNWRlZmZiNThlZmZmZjA2Mjgz
ZDM2NmE3ZjYyNmEwLi5lNmFmMmM5MzhjMWU0MDRjMjA2ZjQzODQyNTM1ZDg2ZTI4Y2Q4NzhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBj
bGFzcyBXZWJQcm9jZXNzCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhZGRT
dXBwbGVtZW50KCkKICAgICB7Ci0gICAgICAgIG1fc3VwcGxlbWVudHMuYWRkKFQ6OnN1cHBsZW1l
bnROYW1lKCksIHN0ZDo6bWFrZV91bmlxdWU8VD4oKnRoaXMpKTsKKyAgICAgICAgbV9zdXBwbGVt
ZW50cy5hZGQoVDo6c3VwcGxlbWVudE5hbWUoKSwgbWFrZVVuaXF1ZTxUPigqdGhpcykpOwogICAg
IH0KIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyLmNwcAppbmRleCAyNzIwYjg2ZmNkMmZmZWU2MDIyZjVhZDVlZWQ1MGJjZjM2OTJkN2Y4Li45
YWYwMGVlOGFhMGYxY2Q4NDBhODE3Mzc5MGZhMDYyMzAwNDZmZGUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OlNv
dXJjZSA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlIHsKICAgICB7CiAgICAgICAgIEFTU0VS
VChkZXZpY2VUeXBlICE9IENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlVua25vd24pOwogICAg
ICAgICBpZiAodHlwZSA9PSBUeXBlOjpBdWRpbykKLSAgICAgICAgICAgIG1fcmluZ0J1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0FSaW5nQnVmZmVyPihtYWtlVW5pcXVlUmVmPFNoYXJlZFJpbmdC
dWZmZXJTdG9yYWdlPihudWxscHRyKSk7CisgICAgICAgICAgICBtX3JpbmdCdWZmZXIgPSBtYWtl
VW5pcXVlPENBUmluZ0J1ZmZlcj4obWFrZVVuaXF1ZVJlZjxTaGFyZWRSaW5nQnVmZmVyU3RvcmFn
ZT4obnVsbHB0cikpOwogICAgIH0KIAogICAgIH5Tb3VyY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggNzdiYjNhNDU1OGIx
ZjRhMjliYWUyMGUyNTc2OGJhZTRmNThkOWFmYi4uOWM2NGNhZjA1ZTgzMTM0MDFlZjRhN2ZmODI0
NGIxMGI4OGYwYTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
V2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpw
cm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKFByb2Nlc3NUYXNrU3RhdGVPYnNlcnZlcjo6VGFza1N0
YXRlIHQKIAogICAgIC8vIFdlIHdlcmUgYXdha2VuZWQgZnJvbSBzdXNwZW5zaW9uIHVuZXhwZWN0
ZWRseS4gTm90aWZ5IHRoZSBXZWJQcm9jZXNzUHJveHksIGJ1dCB0YWtlIGEgcHJvY2VzcyBhc3Nl
cnRpb24gb24gb3VyIHBhcmVudCBQSUQKICAgICAvLyB0byBlbnN1cmUgdGhhdCBpdCB0b28gaXMg
YXdha2VuZWQuCi0gICAgYXV0byB1aVByb2Nlc3NBc3NlcnRpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFByb2Nlc3NBc3NlcnRpb24+KHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nl
c3NJRCgpLCAiVW5leHBlY3RlZGx5IHJlc3VtZWQiLCBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3Vu
ZCwgQXNzZXJ0aW9uUmVhc29uOjpGaW5pc2hUYXNrKTsKKyAgICBhdXRvIHVpUHJvY2Vzc0Fzc2Vy
dGlvbiA9IG1ha2VVbmlxdWU8UHJvY2Vzc0Fzc2VydGlvbj4ocGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+cmVtb3RlUHJvY2Vzc0lEKCksICJVbmV4cGVjdGVkbHkgcmVzdW1lZCIsIEFzc2VydGlv
blN0YXRlOjpCYWNrZ3JvdW5kLCBBc3NlcnRpb25SZWFzb246OkZpbmlzaFRhc2spOwogICAgIHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpQcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQoKSwgW3VpUHJv
Y2Vzc0Fzc2VydGlvbiA9IFdURk1vdmUodWlQcm9jZXNzQXNzZXJ0aW9uKV0geyB9KTsKIH0KICNl
bmRpZgpAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRv
clN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24gcmVhc29uKQogICAgIH0KIAogICAgIGlmICgh
bV9jcHVNb25pdG9yKSB7Ci0gICAgICAgIG1fY3B1TW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8
Q1BVTW9uaXRvcj4oY3B1TW9uaXRvcmluZ0ludGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVzYWdl
KSB7CisgICAgICAgIG1fY3B1TW9uaXRvciA9IG1ha2VVbmlxdWU8Q1BVTW9uaXRvcj4oY3B1TW9u
aXRvcmluZ0ludGVydmFsLCBbdGhpc10oZG91YmxlIGNwdVVzYWdlKSB7CiAgICAgICAgICAgICBp
ZiAobV9wcm9jZXNzVHlwZSA9PSBQcm9jZXNzVHlwZTo6U2VydmljZVdvcmtlcikKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICIlcCAtIFNlcnZp
Y2Ugd29ya2VyIHByb2Nlc3MgZXhjZWVkZWQgQ1BVIGxpbWl0IG9mICUuMWYlJSAod2FzIHVzaW5n
ICUuMWYlJSkiLCB0aGlzLCBtX2NwdUxpbWl0LnZhbHVlKCkgKiAxMDAsIGNwdVVzYWdlICogMTAw
KTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdl
L1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggMzY5MDk1Y2RhZDFkMzQ3MTFhMDY3NmQ4NzM2
YTkwZTE5M2UyOTA1ZS4uMjI4ZjRhMzZkNGIwZjIyMmMxNzg2MGQwYmM0OThjMWY5ZTA4OWEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdl
ci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUmVmPFN0b3JhZ2VTeW5jTWFuYWdlcj4gU3RvcmFnZVN5
bmNNYW5hZ2VyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoKQogfQogCiBTdG9yYWdlU3luY01h
bmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcihjb25zdCBTdHJpbmcmIHBhdGgpCi0gICAgOiBtX3Ro
cmVhZChzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCisgICAgOiBtX3RocmVhZCht
YWtlVW5pcXVlPFN0b3JhZ2VUaHJlYWQ+KCkpCiAgICAgLCBtX3BhdGgocGF0aC5pc29sYXRlZENv
cHkoKSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4IDQ0MzkzODI5NWY0ZTFjMjlkZDA0
ODZiNDMxYmE3ZmVhMzUyOWQxNmQuLjljNzUxNGUzNDYyYzRiNGQ4YTg1NjA1ZWQwMjlkYmQxOTI1
ZDZiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjpkaXNwYXRjaChGdW5jdGlv
bjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxlZCgpICYmIG1fdGhyZWFkKTsKLSAgICBtX3F1ZXVlLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEZ1bmN0aW9uPHZvaWQgKCk+PihXVEZNb3ZlKGZ1bmN0aW9u
KSkpOworICAgIG1fcXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFdU
Rk1vdmUoZnVuY3Rpb24pKSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWluYXRlKCkK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgIGlm
ICghbV90aHJlYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcXVldWUuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8RnVuY3Rpb248dm9pZCAoKT4+KFt0aGlzXSB7CisgICAgbV9xdWV1ZS5hcHBl
bmQobWFrZVVuaXF1ZTxGdW5jdGlvbjx2b2lkICgpPj4oW3RoaXNdIHsKICAgICAgICAgcGVyZm9y
bVRlcm1pbmF0ZSgpOwogICAgIH0pKTsKICAgICBtX3RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmlu
ZGV4IGI5MzRkMWEzYjFiYWE4MzFhZGRmM2FiZTVlMDc3MGFiMWNmNzdmYTIuLjgwNmNiMDk5NWQw
YTA3YzcxODI3MWQyMTA1MDcwMzk4YzQwM2JjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBTdG9yYWdlVHJh
Y2tlciYgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXIoKQogU3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VU
cmFja2VyKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgpCiAgICAgOiBtX3N0b3JhZ2VEaXJlY3Rv
cnlQYXRoKHN0b3JhZ2VQYXRoLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9jbGllbnQoMCkKLSAg
ICAsIG1fdGhyZWFkKHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKKyAgICAsIG1f
dGhyZWFkKG1ha2VVbmlxdWU8U3RvcmFnZVRocmVhZD4oKSkKICAgICAsIG1faXNBY3RpdmUoZmFs
c2UpCiAgICAgLCBtX25lZWRzSW5pdGlhbGl6YXRpb24oZmFsc2UpCiAgICAgLCBtX1N0b3JhZ2VE
YXRhYmFzZUlkbGVJbnRlcnZhbChkZWZhdWx0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXAuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXAuY3BwCmluZGV4IDQzZWE0NWRhZTg5MjA2YzgyOWE1MTRk
NGRhOGUzZDFjOTdjYzEyODQuLjg1MWNjMTAxN2RlZDAwYzA2ZDQ2ZDJjODU5ZDcwMDAwYjZkNzJk
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L05ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN0
b3JhZ2VTZXNzaW9uKGNvbnN0IFAKIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQogewogICAgIGlm
ICghZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICBkZWZhdWx0TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4oUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgICAg
IGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPihQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsK
ICAgICByZXR1cm4gKmRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKIH0KIApAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0
aW5nU2Vzc2lvbigpCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxT
dG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHNlc3Np
b24uZ2V0KCkpKTsKICAgICB9CiAKLSAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgV1RGTW92ZShzZXNzaW9uKSwgV1RGTW92ZShj
b29raWVTdG9yYWdlKSk7CisgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gbWFr
ZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCksIFdURk1vdmUoc2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFn
ZSkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMCwxMSArMTAwLDExIEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwOjplbnN1cmVTZXNzaW9uKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQsIGNvCiAgICAgICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdl
U2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNz
aW9uLmdldCgpKSk7CiAgICAgfQogCi0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihzZXNzaW9uSUQs
IFdURk1vdmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpKTsKKyAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+KHNlc3Npb25JRCwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUo
Y29va2llU3RvcmFnZSkpOwogCiAjZWxpZiBVU0UoQ1VSTCkKICAgICBnbG9iYWxTZXNzaW9uTWFw
KCkuZW5zdXJlKHNlc3Npb25JRCwgW3Nlc3Npb25JRF0gewotICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+KHNlc3Npb25JRCk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4o
c2Vzc2lvbklEKTsKICAgICB9KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cAppbmRleCAxODc2Yjk2MGI5NDcwODE0YzM1MGJjNTkyNmE0YzgxYWVkZjM5MDIzLi43Yjg2OTgx
YTNmNDhlNTBmOGIzY2NhYzM3MDY5MTdkNGFmMWZkYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcApAQCAtMTU5LDUgKzE1OSw1IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gV2ViSW5zcGVjdG9yQ2xpCiAgICAg
ICAgICAgICBkZWxldGVTZXR0aW5nKG5hbWUpOwogICAgICAgICB9CiAgICAgfTsKLSAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CisgICAg
cmV0dXJuIG1ha2VVbmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGPigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQ
b3NpdGlvbkNvbnRlbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQppbmRleCBkZDVhZWJjYjJlY2M4NDM1MjdhZGJh
MTA3YTg5OWIzZGYzNjI5MDRlLi5hZmUxMWE4MGI5ZjFjOWNlNzZhMzU2MmZhNjNjNDViZjcxZDEx
ZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGaXhlZFBvc2l0aW9uQ29udGVudC5tbQpAQCAtMTgwLDcgKzE4MCw3
IEBAIC0gKHZvaWQpc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczooV1RGOjpIYXNoTWFwPENB
TGF5ZXIgKiwgc3RkOjp1bmlxdWVfcHRyPFdlCiAKICAgICBmb3IgKGF1dG8mIGxheWVyQW5kQ29u
c3RyYWludHMgOiBsYXllck1hcCkgewogICAgICAgICBDQUxheWVyKiBsYXllciA9IGxheWVyQW5k
Q29uc3RyYWludHMua2V5OwotICAgICAgICBhdXRvIGxheWVyRGF0YSA9IHN0ZDo6bWFrZV91bmlx
dWU8Vmlld3BvcnRDb25zdHJhaW5lZExheWVyRGF0YT4oKTsKKyAgICAgICAgYXV0byBsYXllckRh
dGEgPSBtYWtlVW5pcXVlPFZpZXdwb3J0Q29uc3RyYWluZWRMYXllckRhdGE+KCk7CiAKICAgICAg
ICAgbGF5ZXJEYXRhLT5tX2VuY2xvc2luZ0FjY2VsZXJhdGVkU2Nyb2xsTGF5ZXIgPSBzdGlja3lD
b250YWluZXJzLmdldChsYXllcik7CiAgICAgICAgIGxheWVyRGF0YS0+bV92aWV3cG9ydENvbnN0
cmFpbnRzID0gV1RGTW92ZShsYXllckFuZENvbnN0cmFpbnRzLnZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRleCBhOGI2YTA0MzkzZWMw
MDAxNDY1MzhkNGNmNjViZDY0MGM3NGJkOTAxLi41YWQ4MWI0YTNiNDliNWQwNjM5MzY1NjgzYTFi
Y2Y1ZDU3ZWYzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5
L1dlYkhpc3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJI
aXN0b3J5Lm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgLSAoaWQpaW5pdAogICAgICAgICByZXR1cm4g
bmlsOwogICAgIAogICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdOwotICAgIF9lbnRyaWVzQnlEYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRlVG9F
bnRyaWVzTWFwPigpOworICAgIF9lbnRyaWVzQnlEYXRlID0gbWFrZVVuaXF1ZTxEYXRlVG9FbnRy
aWVzTWFwPigpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBiNzM5NTkzNWU1MTBiZjNi
N2YwYzQ4ZWRkNDM2YzU4YmJjNDgxZDhlLi44NmY5ZDNkNDIyMzg0NmJjOTVjYmM5NTY0NWExY2E3
MzIwYWZlMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KQEAgLTM0OCw3ICszNDgsNyBAQCAtIChpZClpbml0RnJvbURpY3Rpb25h
cnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgICAgICBjb3JlKF9wcml2
YXRlKS0+c2V0TGFzdFZpc2l0V2FzRmFpbHVyZSh0cnVlKTsKICAgICAKICAgICBpZiAoTlNBcnJh
eSAqcmVkaXJlY3RVUkxzID0gW2RpY3QgX3dlYmtpdF9hcnJheUZvcktleTpyZWRpcmVjdFVSTHNL
ZXldKSB7Ci0gICAgICAgIGF1dG8gcmVkaXJlY3RVUkxzVmVjdG9yID0gc3RkOjptYWtlX3VuaXF1
ZTxWZWN0b3I8U3RyaW5nPj4oKTsKKyAgICAgICAgYXV0byByZWRpcmVjdFVSTHNWZWN0b3IgPSBt
YWtlVW5pcXVlPFZlY3RvcjxTdHJpbmc+PigpOwogICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3It
PnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW3JlZGlyZWN0VVJMcyBjb3VudF0pOwogCiAgICAgICAg
IGZvciAoaWQgcmVkaXJlY3RVUkwgaW4gcmVkaXJlY3RVUkxzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSG9zdFByb3h5Lm1tCmluZGV4IGUxN2M3ODgxYTUxN2YwYzM1NWY4NzU2OWI2MGRhM2YyMTVh
MWViYTcuLmY1ZTdmYmNmMTJlNDdmOTBkZWVmMWVhMmNmZWI3MTc0MjY4ODBhY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SG9zdFByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L05ldHNjYXBlUGx1Z2luSG9zdFByb3h5Lm1tCkBAIC00OTMsNyArNDkzLDcgQEAga2Vybl9yZXR1
cm5fdCBXS1BDR2V0U2NyaXB0YWJsZU5QT2JqZWN0UmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9y
dCwgdWludDMyX3QgcGwKICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBL
RVJOX0ZBSUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVz
dElELCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6R2V0U2Ny
aXB0YWJsZU5QT2JqZWN0UmVwbHk+KG9iamVjdElEKSk7CisgICAgaW5zdGFuY2VQcm94eS0+c2V0
Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgbWFrZVVuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHk6OkdldFNjcmlwdGFibGVOUE9iamVjdFJlcGx5PihvYmplY3RJRCkpOwogICAgIHJldHVy
biBLRVJOX1NVQ0NFU1M7CiB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCBrZXJuX3JldHVybl90IFdL
UENCb29sZWFuUmVwbHkobWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgdWludDMyX3QgcGx1Z2luSUQs
IHVpbnQzMgogICAgIGlmICghaW5zdGFuY2VQcm94eSkKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJ
TFVSRTsKICAgICAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElE
LCBzdGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJl
cGx5PihyZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVz
dElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Qm9vbGVhblJlcGx5
PihyZXN1bHQpKTsKICAgICByZXR1cm4gS0VSTl9TVUNDRVNTOwogfQogCkBAIC01MjgsNyArNTI4
LDcgQEAga2Vybl9yZXR1cm5fdCBXS1BDQm9vbGVhbkFuZERhdGFSZXBseShtYWNoX3BvcnRfdCBj
bGllbnRQb3J0LCB1aW50MzJfdCBwbHVnaW5JRCwKICAgICAgICAgcmV0dXJuIEtFUk5fRkFJTFVS
RTsKIAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHREYXRhKSwgcmVzdWx0TGVuZ3Ro
KSk7Ci0gICAgaW5zdGFuY2VQcm94eS0+c2V0Q3VycmVudFJlcGx5KHJlcXVlc3RJRCwgc3RkOjpt
YWtlX3VuaXF1ZTxOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkJvb2xlYW5BbmREYXRhUmVw
bHk+KHJldHVyblZhbHVlLCByZXN1bHQpKTsKKyAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50
UmVwbHkocmVxdWVzdElELCBtYWtlVW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
Qm9vbGVhbkFuZERhdGFSZXBseT4ocmV0dXJuVmFsdWUsIHJlc3VsdCkpOwogICAgIAogICAgIHJl
dHVybiBLRVJOX1NVQ0NFU1M7CiB9CkBAIC01NDUsNyArNTQ1LDcgQEAga2Vybl9yZXR1cm5fdCBX
S1BDSW5zdGFudGlhdGVQbHVnaW5SZXBseShtYWNoX3BvcnRfdCBjbGllbnRQb3J0LCB1aW50MzJf
dCBwbHVnaW4KICAgICBpZiAoIWluc3RhbmNlUHJveHkpCiAgICAgICAgIHJldHVybiBLRVJOX0ZB
SUxVUkU7CiAKLSAgICBpbnN0YW5jZVByb3h5LT5zZXRDdXJyZW50UmVwbHkocmVxdWVzdElELCBz
dGQ6Om1ha2VfdW5pcXVlPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6SW5zdGFudGlhdGVQ
bHVnaW5SZXBseT4ocmVzdWx0LCByZW5kZXJDb250ZXh0SUQsIHN0YXRpY19jYXN0PFJlbmRlcmVy
VHlwZT4ocmVuZGVyZXJUeXBlKSkpOworICAgIGluc3RhbmNlUHJveHktPnNldEN1cnJlbnRSZXBs
eShyZXF1ZXN0SUQsIG1ha2VVbmlxdWU8TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpJbnN0
YW50aWF0ZVBsdWdpblJlcGx5PihyZXN1bHQsIHJlbmRlckNvbnRleHRJRCwgc3RhdGljX2Nhc3Q8
UmVuZGVyZXJUeXBlPihyZW5kZXJlclR5cGUpKSk7CiAgICAgcmV0dXJuIEtFUk5fU1VDQ0VTUzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
UHJveHlJbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW0KaW5kZXggMjAyYzZkZWFmMTNkMDdjNmUzYTU2OThiMWNkYjU5YTE5
YjVkYTAzOS4uNTJiZjdiZDEyZTRlMzcxMmQzMTQ3NWUyYTUzOWE0MjhjZmY4ZmE0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgTWV0aG9kKiBQcm94eUluc3RhbmNlOjptZXRo
b2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIC8vIEFkZCBhIG5ldyBlbnRy
eSB0byB0aGUgbWFwIHVubGVzcyBhbiBlbnRyeSB3YXMgYWRkZWQgd2hpbGUgd2Ugd2VyZSBpbiB3
YWl0Rm9yUmVwbHkuCiAgICAgYXV0byBtYXBBZGRSZXN1bHQgPSBtX21ldGhvZHMuYWRkKG5hbWUu
aW1wbCgpLCBudWxscHRyKTsKICAgICBpZiAobWFwQWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgcmVw
bHktPm1fcmVzdWx0KQotICAgICAgICBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3Rk
OjptYWtlX3VuaXF1ZTxQcm94eU1ldGhvZD4obWV0aG9kTmFtZSk7CisgICAgICAgIG1hcEFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5TWV0aG9kPihtZXRob2ROYW1l
KTsKIAogICAgIHJldHVybiBtYXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQpA
QCAtMzk3LDcgKzM5Nyw3IEBAIEZpZWxkKiBQcm94eUluc3RhbmNlOjpmaWVsZE5hbWVkKFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgLy8gQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBtYXAg
dW5sZXNzIGFuIGVudHJ5IHdhcyBhZGRlZCB3aGlsZSB3ZSB3ZXJlIGluIHdhaXRGb3JSZXBseS4K
ICAgICBhdXRvIG1hcEFkZFJlc3VsdCA9IG1fZmllbGRzLmFkZChuYW1lLmltcGwoKSwgbnVsbHB0
cik7CiAgICAgaWYgKG1hcEFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIHJlcGx5LT5tX3Jlc3VsdCkK
LSAgICAgICAgbWFwQWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
UHJveHlGaWVsZD4oaWRlbnRpZmllcik7CisgICAgICAgIG1hcEFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWUgPSBtYWtlVW5pcXVlPFByb3h5RmllbGQ+KGlkZW50aWZpZXIpOwogICAgIHJldHVybiBt
YXBBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdp
blZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0
ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYzZhMzVmMjFjZTE4OGI0MzMzZjZhM2M0NjJh
ZmJhYzg4NGNmZDdjZC4uZWUxOWM1NjdjMDFmYTE4YzVlOGRjNjFiMDhjODk0ZTUyMDAyZGFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9z
dGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTY5LDcgKzE2
OSw3IEBAIC0gKEJPT0wpY3JlYXRlUGx1Z2luCiAgICAgICAgIHJldHVybiBOTzsKIAogICAgIGlm
IChfcHJveHktPnJlbmRlcmVyVHlwZSgpID09IFVzZVNvZnR3YXJlUmVuZGVyZXIpCi0gICAgICAg
IF9zb2Z0d2FyZVJlbmRlcmVyID0gc3RkOjptYWtlX3VuaXF1ZTxTb2Z0d2FyZUNBUmVuZGVyZXI+
KF9wcm94eS0+cmVuZGVyQ29udGV4dElEKCkpOworICAgICAgICBfc29mdHdhcmVSZW5kZXJlciA9
IG1ha2VVbmlxdWU8U29mdHdhcmVDQVJlbmRlcmVyPihfcHJveHktPnJlbmRlckNvbnRleHRJRCgp
KTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIGNyZWF0ZVBsdWdpbkxheWVyXTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5FdmVudEhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyLm1tCmluZGV4IGY3YWVkYmNlZDRkN2Y1YzRiYTNlOTZl
MzU2MWNhN2YwYjI2NWM4YWMuLjhlYzFiZjc5ZWUzMmEyYWMxYmJjZjdhMjFlNzNlN2UxZTAxZGIx
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5FdmVudEhhbmRsZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlci5tbQpAQCAtMzUsNyArMzUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXI+IFdlYk5ldHNjYXBl
UGx1Z2luRXZlbnRIYW5kbGVyOjpjcgogewogICAgIHN3aXRjaCAoW3BsdWdpblZpZXcgZXZlbnRN
b2RlbF0pIHsKICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOgotICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNvY29hPihwbHVnaW5W
aWV3KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViTmV0c2NhcGVQbHVnaW5FdmVudEhh
bmRsZXJDb2NvYT4ocGx1Z2luVmlldyk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRl
eCAwMmZmMjE4NmRmODRhOWE5MGQ3ZTljMjZjMDc2Mjc5ZTMyMjExMzc4Li4xNjA2NjNlODYxZjcx
MGViZmVkMWQ3Njg1NjVkZDIyYTExNGU4ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTY1NSw3
ICsxNjU1LDcgQEAgLSAodWludDMyX3Qpc2NoZWR1bGVUaW1lcldpdGhJbnRlcnZhbDoodWludDMy
X3QpaW50ZXJ2YWwgcmVwZWF0OihOUEJvb2wpcmVwZWF0IHQKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCiAgICAgaWYgKCF0aW1lcnMpCi0gICAgICAgIHRpbWVycyA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRyPFBsdWdpblRpbWVyPj4+KCk7CisgICAg
ICAgIHRpbWVycyA9IG1ha2VVbmlxdWU8SGFzaE1hcDx1aW50MzJfdCwgc3RkOjp1bmlxdWVfcHRy
PFBsdWdpblRpbWVyPj4+KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luVGltZXI+KiBz
bG90OwogICAgIHVpbnQzMl90IHRpbWVySUQ7CkBAIC0xNjYzLDcgKzE2NjMsNyBAQCAtICh1aW50
MzJfdClzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCByZXBlYXQ6
KE5QQm9vbClyZXBlYXQgdAogICAgICAgICB0aW1lcklEID0gKytjdXJyZW50VGltZXJJRDsKICAg
ICB3aGlsZSAoIXRpbWVycy0+aXNWYWxpZEtleSh0aW1lcklEKSB8fCAqKHNsb3QgPSAmdGltZXJz
LT5hZGQodGltZXJJRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlKSk7CiAKLSAgICBhdXRvIHRp
bWVyID0gc3RkOjptYWtlX3VuaXF1ZTxQbHVnaW5UaW1lcj4ocGx1Z2luLCB0aW1lcklELCBpbnRl
cnZhbCwgcmVwZWF0LCB0aW1lckZ1bmMpOworICAgIGF1dG8gdGltZXIgPSBtYWtlVW5pcXVlPFBs
dWdpblRpbWVyPihwbHVnaW4sIHRpbWVySUQsIGludGVydmFsLCByZXBlYXQsIHRpbWVyRnVuYyk7
CiAKICAgICBpZiAoX3Nob3VsZEZpcmVUaW1lcnMpCiAgICAgICAgIHRpbWVyLT5zdGFydChfaXND
b21wbGV0ZWx5T2JzY3VyZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQppbmRleCAxY2JjMmZiYTJi
N2NjOGVmODc5ZWExYmY3MTFiMzFiM2JkNTgyYmNiLi41N2ZiYmZhZDllNjRiNzY3OGFkM2FjY2U4
MDc3OGJhY2YwMzc4MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQpAQCAtOTgsNyArOTgsNyBA
QCBjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
aXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQmIGNsaWVudCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiAgICAgewotICAgICAgICBhdXRvIGNvbnRl
eHQgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZE1vZGlmeU9yaWdpbkRhdGE+KGNsaWVudCwgb3JpZ2lu
KTsKKyAgICAgICAgYXV0byBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaWRNb2RpZnlPcmlnaW5EYXRh
PihjbGllbnQsIG9yaWdpbik7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbnRleHQgPSBX
VEZNb3ZlKGNvbnRleHQpXSB7CiAgICAgICAgICAgICBjb250ZXh0LT5jbGllbnQuZGlzcGF0Y2hE
aWRNb2RpZnlPcmlnaW4oY29udGV4dC0+b3JpZ2luKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDU0NWE4ZTg0Y2I4NDg5ZDkxODY2Y2JhYzkxMjk2YjBmZDM1
YjUxZDcuLjI0MTQwY2RlM2VjOTNiMjA3NTlmZDYzMDJkMWEzMDk1MmUxOTJiMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMDY3LDcgKzEwNjcsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKIHN0YXRpYyB2b2lkIGFkZFJlZGly
ZWN0VVJMKFdlYkhpc3RvcnlJdGVtICppdGVtLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBp
ZiAoIWl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzKQotICAgICAgICBpdGVtLT5fcHJpdmF0
ZS0+X3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7Cisg
ICAgICAgIGl0ZW0tPl9wcml2YXRlLT5fcmVkaXJlY3RVUkxzID0gbWFrZVVuaXF1ZTxWZWN0b3I8
U3RyaW5nPj4oKTsKIAogICAgIC8vIE91ciBBUEkgYWxsb3dzIHVzIHRvIHN0b3JlIGFsbCB0aGUg
VVJMcyBpbiB0aGUgcmVkaXJlY3QgY2hhaW4sIGJ1dCBmb3IKICAgICAvLyBub3cgd2Ugb25seSBo
YXZlIGEgdXNlIGZvciB0aGUgZmluYWwgVVJMLgpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1E
YXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVkRnJhbWUpCiB7Ci0gICAgY2FjaGVk
RnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKHN0ZDo6bWFrZV91bmlxdWU8V2ViQ2Fj
aGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9wcml2YXRlLT53ZWJGcmFtZVZpZXcu
ZG9jdW1lbnRWaWV3KSk7CisgICAgY2FjaGVkRnJhbWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGE+KG1fd2ViRnJhbWUtPl9w
cml2YXRlLT53ZWJGcmFtZVZpZXcuZG9jdW1lbnRWaWV3KSk7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGlzIGZyYW1lIGlzIGdvaW5n
IHRvIGJlIGNhY2hlZC4gU3RvcCBhbGwgcGx1Z2lucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpp
bmRleCAxYzAwODA5NzY5MmZmOWIwNzFmY2U1YWM0YTRiNDY5MmQxMzdlZDk1Li43ZDNlNWVjOWU2
MTVlMWQ0OGMzZDA1ZDcxYTU5YzQ1MWZlYjc2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
CkBAIC0xMDksNyArMTA5LDcgQEAgRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6
Om9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3AKICAgICBbd2luZG93
Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CiAKICAgICBtX2Zyb250
ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgZnJvbnRlbmRXZWJWaWV3XSk7
Ci0gICAgbV9mcm9udGVuZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwg
aW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIG1fZnJvbnRlbmRQYWdlLCBjcmVhdGVGcm9udGVuZFNl
dHRpbmdzKCkpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0
KCksIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSwgY3JlYXRlRnJvbnRl
bmRTZXR0aW5ncygpKTsKIAogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2Vi
SW5zcGVjdG9yRnJvbnRlbmQgPSBhZG9wdE5TKFtbV2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2Nd
IGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6bV9mcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtb
bV9pbnNwZWN0ZWRXZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJv
bnRlbmQuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlck1vY2subW0KaW5kZXgg
MjUzNjQ4ZDhlODQ1OTExZTJhZTI4YzBiYjg2M2NiNTdmN2MzMDAzOS4uMjc2ZDlmMTVlZjhmYTVl
MWZlZDQzOGVkOWMxZDI1OWE3ODU4MzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyTW9jay5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uUHJvdmlk
ZXJNb2NrLm1tCkBAIC0zNiw3ICszNiw3IEBAIC0gKGlkKWluaXQKICAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBtX2NvcmUg
PSBzdGQ6Om1ha2VfdW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKKyAgICBt
X2NvcmUgPSBtYWtlVW5pcXVlPERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaz4oKTsKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggYTkwNjIyYzIwNzRlMGNkY2VjZWYyYzZjMWM4NDk0NWQ0ZTlkZmZhYi4uM2E5
NGJiOTEwZDI1OWVmYWE4OTFkNTI5ZTgwZDJiNWIwMDIwYjRmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0zNzgsNyArMzc4LDcgQEAgLSAodm9p
ZClfYXR0YWNoU2NyaXB0RGVidWdnZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9w
cml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2NyaXB0RGVidWdn
ZXI+KGdsb2JhbE9iamVjdCk7CisgICAgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gbWFrZVVu
aXF1ZTxXZWJTY3JpcHREZWJ1Z2dlcj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAogLSAodm9pZClfZGV0
YWNoU2NyaXB0RGVidWdnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQppbmRleCA3MmMy
MGM2OTNmZWNiYTk3MTA0NjM0MTY0MWNjZTExNDk0ZGU0YTY5Li42MDI0MDI5OTYyZWMzNGYwMGY0
YWFkOTQzMmE3ZmM0MmJhMWQxNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCkBA
IC0zMyw3ICszMyw3IEBACiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyPiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpjcmVhdGUoV2ViQ29yZTo6UGFn
ZSYgcGFnZSkKIHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyPihwYWdlKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyPihwYWdlKTsKIH0KIAogV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
cjo6V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcihXZWJDb3JlOjpQYWdlJiBwYWdlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3Iu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpp
bmRleCAxYTcyNThiNDIzYTg0NTc4OTFlNDE1ZTEwZDAwMjU2NzMwYWEyYmRlLi5lMzYzYjg1YjJi
M2Q1YWUxNDczYzgzNzI3MTg1ODM0ZDUxNzg3YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpAQCAtNjksNyArNjksNyBAQCAt
IChpZClpbml0V2l0aFJhbmdlOihET01SYW5nZSAqKXJhbmdlCiAgICAgICAgIHJldHVybiBzZWxm
OwogICAgIAogICAgIF9wcml2YXRlID0gW1tXZWJUZXh0SXRlcmF0b3JQcml2YXRlIGFsbG9jXSBp
bml0XTsKLSAgICBfcHJpdmF0ZS0+X3RleHRJdGVyYXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
Q29yZTo6VGV4dEl0ZXJhdG9yPihjb3JlKHJhbmdlKSk7CisgICAgX3ByaXZhdGUtPl90ZXh0SXRl
cmF0b3IgPSBtYWtlVW5pcXVlPFdlYkNvcmU6OlRleHRJdGVyYXRvcj4oY29yZShyYW5nZSkpOwog
ICAgIHJldHVybiBzZWxmOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KaW5kZXggYmQ5Y2JjMTIyZGVkZTI4ZjM2YjlmYjVmNzc3Mjc2ODRkYWI4NDJmNy4u
MjhmNmMyNTMyNWI0YzQ1YTJiMDZlMjM3ZmEzYmJiYjlhZTMwYzg2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTIyNSw3ICsxMjI1LDcgQEAgc3Rh
dGljIE5TU3RyaW5nICpsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpCiAtKHZv
aWQpX2luamVjdE91dGxvb2tRdWlya3NTY3JpcHQKIHsKICAgICBzdGF0aWMgTlNTdHJpbmcgKm91
dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cyA9IGxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENv
bnRlbnRzKCk7Ci0gICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5h
ZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBzdGQ6Om1ha2VfdW5p
cXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3Rv
cjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVj
dEluQWxsRnJhbWVzKSk7CisgICAgX3ByaXZhdGUtPmdyb3VwLT51c2VyQ29udGVudENvbnRyb2xs
ZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKFtXZWJTY3JpcHRXb3JsZCB3b3JsZF0pLCBtYWtlVW5p
cXVlPFVzZXJTY3JpcHQ+KG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3Rv
cjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVj
dEluQWxsRnJhbWVzKSk7CiAKIH0KICNlbmRpZgpAQCAtMTQzOSw3ICsxNDM5LDcgQEAgLSAodm9p
ZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFt
ZSBncm91cE5hbWU6KE5TU3QKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBu
ZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvbnRleHRN
ZW51Q2xpZW50ID0gbmV3IFdlYkNvbnRleHRNZW51Q2xpZW50KHNlbGYpOwogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgZW5hYmxlIHRoaXMgb24gaU9TIGFzIHdlbGwuCi0gICAgcGFnZUNvbmZpZ3Vy
YXRpb24udmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlZhbGlk
YXRpb25NZXNzYWdlQ2xpZW50PihzZWxmKTsKKyAgICBwYWdlQ29uZmlndXJhdGlvbi52YWxpZGF0
aW9uTWVzc2FnZUNsaWVudCA9IG1ha2VVbmlxdWU8V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ+
KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3JDbGllbnQoc2VsZik7CiAjZWxzZQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9t
ZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CkBAIC00NjMwLDcgKzQ2MzAs
NyBAQCArICh2b2lkKV9hZGRVc2VyU2NyaXB0VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUg
d29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybAogICAgIGlmICghd29ybGQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlw
dD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9y
KGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUgPT0gV2ViSW5qZWN0QXREb2N1bWVudFN0YXJ0ID8g
SW5qZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgaW5qZWN0ZWRGcmFt
ZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdElu
VG9wRnJhbWVPbmx5KTsKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3Jp
cHQ+KHNvdXJjZSwgdXJsLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3Rv
cihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/
IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsIGluamVjdGVkRnJh
bWVzID09IFdlYkluamVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJ
blRvcEZyYW1lT25seSk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5h
ZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxkKSwgV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKQEAg
LTQ2NTMsNyArNDY1Myw3IEBAICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDooTlNT
dHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopCiAgICAgaWYgKCF3b3Js
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzdHlsZVNoZWV0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxVc2VyU3R5bGVTaGVldD4oc291cmNlLCB1cmwsIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlz
dCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzID09IFdlYkluamVj
dEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSwg
VXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVz
ZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9T
dHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxG
cmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5
bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRk
VXNlclN0eWxlU2hlZXQoKmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJ
bkV4aXN0aW5nRG9jdW1lbnRzKTsKIH0KIApAQCAtOTQwNCw3ICs5NDA0LDcgQEAgLSAoVmVjdG9y
PFN0cmluZz4pX2RpY3RhdGlvbkFsdGVybmF0aXZlczoodWludDY0X3QpZGljdGF0aW9uQ29udGV4
dAogLSAoV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXImKV9zZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlcgogewogICAgIGlmICghX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cikKLSAgICAgICAgX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOworICAgICAg
ICBfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CiAgICAgcmV0dXJuICpfcHJpdmF0ZS0+
X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogfQogI2VuZGlmCkBAIC05NDYzLDcgKzk0NjMs
NyBAQCAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNh
dG9yCiAtICh2b2lkKV9zZXRUZXh0SW5kaWNhdG9yOihUZXh0SW5kaWNhdG9yJil0ZXh0SW5kaWNh
dG9yIHdpdGhMaWZldGltZTooVGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKWxpZmV0aW1lCiB7
CiAgICAgaWYgKCFfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdykKLSAgICAgICAgX3ByaXZh
dGUtPnRleHRJbmRpY2F0b3JXaW5kb3cgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbmRpY2F0b3JX
aW5kb3c+KHNlbGYpOworICAgICAgICBfcHJpdmF0ZS0+dGV4dEluZGljYXRvcldpbmRvdyA9IG1h
a2VVbmlxdWU8VGV4dEluZGljYXRvcldpbmRvdz4oc2VsZik7CiAKICAgICBOU1JlY3QgdGV4dEJv
dW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXMgPSBbc2VsZiBjb252ZXJ0UmVjdDpbc2VsZiBf
Y29udmVydFJlY3RGcm9tUm9vdFZpZXc6dGV4dEluZGljYXRvci50ZXh0Qm91bmRpbmdSZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzKCldIHRvVmlldzpuaWxdOwogICAgIE5TUmVjdCB0ZXh0Qm91bmRp
bmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UmVjdFRvU2Ny
ZWVuOnRleHRCb3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCmluZGV4IDEwNjBjMmQ4NTRhZGEw
ZGNhZmIzMzU1OWM4MTFlNGVlNDk0Y2M2ZTAuLjgyMzhhNGVjNWZlZTE2ODM2NGVkMTMwNGJjNzUx
NWY1NTE3ZmU4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld0RhdGEubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5tbQpAQCAtOTYsNyArOTYsNyBAQCBMYXllckZsdXNoQ29udHJvbGxlcjo6TGF5ZXJG
bHVzaENvbnRyb2xsZXIoV2ViVmlldyogd2ViVmlldykKIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1
bGVyOjpXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcihMYXllckZsdXNoQ29udHJvbGxlciogZmx1
c2hDb250cm9sbGVyKQogICAgIDogbV9mbHVzaENvbnRyb2xsZXIoZmx1c2hDb250cm9sbGVyKQog
ewotICAgIG1fcnVuTG9vcE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpSdW5M
b29wT2JzZXJ2ZXI+KHN0YXRpY19jYXN0PENGSW5kZXg+KFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZl
cjo6V2VsbEtub3duUnVuTG9vcE9yZGVyczo6TGF5ZXJGbHVzaCksIFt0aGlzXSgpIHsKKyAgICBt
X3J1bkxvb3BPYnNlcnZlciA9IG1ha2VVbmlxdWU8V2ViQ29yZTo6UnVuTG9vcE9ic2VydmVyPihz
dGF0aWNfY2FzdDxDRkluZGV4PihXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI6OldlbGxLbm93blJ1
bkxvb3BPcmRlcnM6OkxheWVyRmx1c2gpLCBbdGhpc10oKSB7CiAgICAgICAgIHRoaXMtPmxheWVy
Rmx1c2hDYWxsYmFjaygpOwogICAgIH0pOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKGlkKWlu
aXQKICAgICBwbHVnaW5EYXRhYmFzZUNsaWVudENvdW50Kys7CiAKICNpZiBVU0UoRElDVEFUSU9O
X0FMVEVSTkFUSVZFUykKLSAgICBtX2FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyPigpOworICAg
IG1fYWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI+KCk7CiAjZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcAppbmRleCA0ZTIzMWE4MzllNGM3MWVmNThhMDVlODg2OGEwMWY5ZDNiNTZkMzg3Li45
YjE0Njc0N2ZmNzdiYzBhYjVlNjUwNGE3OTFkNWFjMWNmZjBkOGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcApAQCAt
MjQ3LDExICsyNDcsMTEgQEAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6RnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcigpCiAgICAgLCBtX21vdmluZ1dpbmRvdyhmYWxzZSkKICAgICAsIG1fdGlt
ZXIoKnRoaXMsICZGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp0aW1lckZpcmVkKQogI2lmIFVT
RShDQSkKLSAgICAsIG1fbGF5ZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxMYXllckNsaWVudD4o
dGhpcykpCisgICAgLCBtX2xheWVyQ2xpZW50KG1ha2VVbmlxdWU8TGF5ZXJDbGllbnQ+KHRoaXMp
KQogICAgICwgbV9yb290Q2hpbGQoUGxhdGZvcm1DQUxheWVyV2luOjpjcmVhdGUoUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVMYXllciwgbV9sYXllckNsaWVudC5nZXQoKSkpCiAjZW5kaWYKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgLCBtX2Z1bGxzY3JlZW5XaW5kb3coc3RkOjpt
YWtlX3VuaXF1ZTxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuV2luZG93PihzdGF0aWNfY2Fz
dDxNZWRpYVBsYXllclByaXZhdGVGdWxsc2NyZWVuQ2xpZW50Kj4odGhpcykpKQorICAgICwgbV9m
dWxsc2NyZWVuV2luZG93KG1ha2VVbmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldp
bmRvdz4oc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbkNsaWVudCo+KHRo
aXMpKSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IGFiYTYzZGFiOGIzMWU0N2FiZDgwODhiMzc4M2E4MGVj
NTRjMTAyMTguLjBmNmJlZWZmYWQxZGMwMTVjOGE0NzdlN2ZiZTVjOWI2YWFmYWZmMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKQEAg
LTQzMyw3ICs0MzMsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogCiAgICAgaWYgKG1fdHJh
bnNmZXJNb2RlICE9IE5QX0FTRklMRU9OTFkpIHsKICAgICAgICAgaWYgKCFtX2RlbGl2ZXJ5RGF0
YSkKLSAgICAgICAgICAgIG1fZGVsaXZlcnlEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
Y2hhcj4+KCk7CisgICAgICAgICAgICBtX2RlbGl2ZXJ5RGF0YSA9IG1ha2VVbmlxdWU8VmVjdG9y
PGNoYXI+PigpOwogCiAgICAgICAgIGludCBvbGRTaXplID0gbV9kZWxpdmVyeURhdGEtPnNpemUo
KTsKICAgICAgICAgbV9kZWxpdmVyeURhdGEtPnJlc2l6ZShvbGRTaXplICsgbGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDIx
MzYzMTdmMjk5OWQ1ZTEzNzQ5ZGYzOGUxOWE4ZjRkMmYyNWJkNjAuLjU0NzE2YTBiYjJiMWZhYjc1
ZDgxZGU0MmFlZTk2ZWVhMmY2YjEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNTEwLDcgKzUxMCw3IEBAIE5QRXJyb3IgUGx1Z2lu
Vmlldzo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgYm9vbCBzZW5k
Tm90aWZpY2F0CiAgICAgfSBlbHNlIGlmICghbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpCiAgICAgICAgIHJldHVybiBOUEVSUl9HRU5F
UklDX0VSUk9SOwogCi0gICAgc2NoZWR1bGVSZXF1ZXN0KHN0ZDo6bWFrZV91bmlxdWU8UGx1Z2lu
UmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlmaWNhdGlvbiwgbm90
aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CisgICAgc2NoZWR1bGVSZXF1ZXN0KG1ha2VV
bmlxdWU8UGx1Z2luUmVxdWVzdD4oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgc2VuZE5vdGlm
aWNhdGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSk7CiAKICAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblZpZXdXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lu
cy9QbHVnaW5WaWV3V2luLmNwcAppbmRleCAwNTcyOGYzZWQzNzIwNTA0YWY1NWY5ODc3Zjg2MjFi
ZGMwNWNlNjIyLi41MjA0NTk0YWI2Zjg0ZDU3MDAwNDBkZmQyOTgxYzNmNTYzZWRmZjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXdXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlld1dpbi5jcHAK
QEAgLTMxMCw3ICszMTAsNyBAQCBQbHVnaW5WaWV3Ojp3bmRQcm9jKEhXTkQgaFduZCwgVUlOVCBt
ZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIGlmIChtZXNzYWdlID09
IFdNX1VTRVIgKyAxICYmCiAgICAgICAgIG1fcGx1Z2luLT5xdWlya3MoKS5jb250YWlucyhQbHVn
aW5RdWlya1Rocm90dGxlV01Vc2VyUGx1c09uZU1lc3NhZ2VzKSkgewogICAgICAgICBpZiAoIW1f
bWVzc2FnZVRocm90dGxlcikKLSAgICAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlciA9IHN0ZDo6
bWFrZV91bmlxdWU8UGx1Z2luTWVzc2FnZVRocm90dGxlcldpbj4odGhpcyk7CisgICAgICAgICAg
ICBtX21lc3NhZ2VUaHJvdHRsZXIgPSBtYWtlVW5pcXVlPFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJX
aW4+KHRoaXMpOwogCiAgICAgICAgIG1fbWVzc2FnZVRocm90dGxlci0+YXBwZW5kTWVzc2FnZSho
V25kLCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggNGE0OWI5NGJiYTU4ZDBjNTQ2MzMyOWMzZjZlZjIzZTg0ODhiN2Fm
My4uN2IyOTljZWUyNWVjZDEwYmJhNjIxYzg1ODFiMDZhZTA2YzVhMWQxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RmlsZVBh
dGhzTGlzdFNpemUgPSBVU0hSVF9NQVg7CiBXZWJDaHJvbWVDbGllbnQ6OldlYkNocm9tZUNsaWVu
dChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCi0gICAgLCBtX25vdGlmaWNhdGlvbnNEZWxlZ2F0ZShzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU+KHdlYlZpZXcpKQorICAgICwg
bV9ub3RpZmljYXRpb25zRGVsZWdhdGUobWFrZVVuaXF1ZTxXZWJEZXNrdG9wTm90aWZpY2F0aW9u
c0RlbGVnYXRlPih3ZWJWaWV3KSkKICNlbmRpZgogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDUxNzcwY2U0NjhkMzczNDI1NjkyNDcyMmEyMTdjOGRmNDIwNzU1YmQuLjIz
NDZlYjlkMWEwYWNiY2Q1NGQwMjYzOTcyMDcwMDFlYTdjMDFjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBjbGFzcyBXZWJGcmFtZUxvYWRlckNs
aWVudDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGUgewogfTsKIAogV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lKiB3ZWJGcmFtZSkKLSAgICA6
IG1fcG9saWN5TGlzdGVuZXJQcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByaXZhdGU+KCkpCisgICAgOiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZShtYWtlVW5p
cXVlPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPigpKQogICAgICwgbV93ZWJGcmFtZSh3
ZWJGcmFtZSkKICAgICAsIG1fbWFudWFsTG9hZGVyKDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25z
ZVRvUGx1Z2luKGZhbHNlKSAKQEAgLTk3NCw3ICs5NzQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSogY2FjaGVk
RnJhbQogCiAgICAgQVNTRVJUKGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9
PSBjYWNoZWRGcmFtZS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAKLSAgICBjYWNoZWRGcmFtZS0+c2V0
Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoc3RkOjptYWtlX3VuaXF1ZTxXZWJDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YT4oc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNl
KGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpKSk7CisgICAgY2FjaGVkRnJh
bWUtPnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhKG1ha2VVbmlxdWU8V2ViQ2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGE+KHN0YXRpY19jYXN0PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJj
ZShjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpKSkpOwogI2Vsc2UKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA3
NTY5NTkwYzFiM2NmMzgxNmZjNDJhMzViZjNmNjZiZmQ3ODkwMjI0Li5mODBhZTA0OGI4MmRiZGIy
MzQ2NTQ2OGQ5MzNjNjBhNzA5NzJjN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAg
LTE2OSw3ICsxNjksNyBAQCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9y
Q2xpZW50OjpvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cgogICAgICAgICByZXR1cm4g
MDsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwot
ICAgIG1fZnJvbnRlbmRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50PihtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0hhbmRsZSwg
ZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMs
IGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG1ha2VV
bmlxdWU8V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+KG1faW5zcGVjdGVkV2ViVmlldywgbV9p
bnNwZWN0ZWRXZWJWaWV3SGFuZGxlLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJv
bnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKTsKICAgICBt
X2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KG1fZnJvbnRlbmRDbGllbnQuZ2V0KCkpOwogICAgIG1fZnJvbnRlbmRIYW5kbGUgPSBm
cm9udGVuZEh3bmQ7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodCgpCiAgICAgYm9vbCBjcmVhdGluZ0hpZ2hsaWdo
dCA9ICFtX2hpZ2hsaWdodDsKIAogICAgIGlmIChjcmVhdGluZ0hpZ2hsaWdodCkKLSAgICAgICAg
bV9oaWdobGlnaHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYk5vZGVIaWdobGlnaHQ+KG1faW5zcGVj
dGVkV2ViVmlldyk7CisgICAgICAgIG1faGlnaGxpZ2h0ID0gbWFrZVVuaXF1ZTxXZWJOb2RlSGln
aGxpZ2h0PihtX2luc3BlY3RlZFdlYlZpZXcpOwogCiAgICAgaWYgKG1faGlnaGxpZ2h0LT5pc1No
b3dpbmcoKSkKICAgICAgICAgbV9oaWdobGlnaHQtPnVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggMjdhZjFiYWU2
NTNlZmYwMmY2NzA0ZjdlMzlhZDBlMWFjNTBhZDcwYi4uOGFmYmEwZjZkNTNhZmQ1NTU4NDVjMTk1
MzZjMmE5YzFlYzVmMzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJF
bGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiAvLyBXZWJFbGVtZW50UHJvcGVydHlCYWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxl
bWVudFByb3BlcnR5QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKLSAgICA6IG1fcmVz
dWx0KHN0ZDo6bWFrZV91bmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKKyAgICA6IG1fcmVz
dWx0KG1ha2VVbmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggYTgxYzAw
ZTU2YzVkZTJhZWJjMTJhYjhiNmRiMTFiYzkzNGViYmJkYS4uZmI4OGUzOWU3YjU2YWMzMmRjZjVj
ZjUwMTFjMzU0ODE3MWE2YzNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeUl0ZW06Omlu
aXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKF9Jbl9vcHRfIHZvaWQqIGRpY3Rpb25hCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiByZWRpcmVjdFVSTHNWZWN0b3I7CiAg
ICAgaWYgKENGQXJyYXlSZWYgcmVkaXJlY3RVUkxzUmVmID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeVJlZiwgcmVkaXJlY3RVUkxzS2V5KSkp
IHsKICAgICAgICAgQ0ZJbmRleCBzaXplID0gQ0ZBcnJheUdldENvdW50KHJlZGlyZWN0VVJMc1Jl
Zik7Ci0gICAgICAgIHJlZGlyZWN0VVJMc1ZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9y
PFN0cmluZz4+KHNpemUpOworICAgICAgICByZWRpcmVjdFVSTHNWZWN0b3IgPSBtYWtlVW5pcXVl
PFZlY3RvcjxTdHJpbmc+PihzaXplKTsKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQogICAgICAgICAgICAgKCpyZWRpcmVjdFVSTHNWZWN0b3IpW2ldID0gU3RyaW5n
KHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlZGlyZWN0
VVJMc1JlZiwgaSkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNw
cAppbmRleCAyZjFmMmY0ODA3ZWI5YzRmZTcwODM1ZGI3OGUzNGEzNGJjZmYzNmQwLi5kNjVkZTE5
ZWU5OWM0NTE0NDVkZmJmMWIxMzU5ZGMyYThiYTM4Yzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMv
Q0FEM0RSZW5kZXJlci5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RDNE
UG9zdFByb2Nlc3NpbmdDb250ZXh0PiBDQUQzRFJlbmRlcmVyOjpjcmVhdGVEM0RQb3N0UHJvY2Vz
c2luZwogICAgIG1lbWNweShvdmVybGF5UXVhZEJ1ZmZlciwgb3ZlcmxheVF1YWRWZXJ0aWNlcywg
c2l6ZW9mKG92ZXJsYXlRdWFkVmVydGljZXMpKTsKICAgICBvdmVybGF5UXVhZC0+VW5sb2NrKCk7
CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEM0RQb3N0UHJvY2Vzc2luZ0NvbnRleHQ+
KHNjZW5lVGV4dHVyZSwgb3ZlcmxheVF1YWQpOworICAgIHJldHVybiBtYWtlVW5pcXVlPEQzRFBv
c3RQcm9jZXNzaW5nQ29udGV4dD4oc2NlbmVUZXh0dXJlLCBvdmVybGF5UXVhZCk7CiB9CiAKIC8v
IEZJWE1FOiA8cmRhcjovLzY1MDc4NTE+IFNoYXJlIHRoaXMgY29kZSB3aXRoIENvcmVBbmltYXRp
b24ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9u
Q2VudGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRl
ci5jcHAKaW5kZXggZmZlMjM1N2U5MzY1ZmVkMjAyNjNkN2JkODY4ZWE3M2NjZWFhMmQ4NS4uOTI1
MzJkYmRjYTQxYjg1MzFlOTE2OGNkZGRlMzFiNTdhN2Y0NTZiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC01NCw3ICs1NCw3
IEBAIHN0cnVjdCBXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlIHsKIElXZWJOb3RpZmljYXRp
b25DZW50ZXIqIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6bV9kZWZhdWx0Q2VudGVyID0gMDsKIAog
V2ViTm90aWZpY2F0aW9uQ2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIoKQotICAgIDogZChz
dGQ6Om1ha2VfdW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCisgICAgOiBk
KG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGMyMzA4ZWUwNWI2ZTg3
NDdlZGMyOTc1YWYyOWE2ZGQwY2Q0OWRjMTkuLjE0MzkwMDI2NTQ0ZTlkNjc3NTA3Yjk1NWI5OTAw
ZTc0ODVkMmRiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xODgwLDcg
KzE4ODAsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoVUlOVCBtZXNzYWdlLCBX
UEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgICAgICBtb3VzZUV2ZW50LnNldENsaWNr
Q291bnQoZ2xvYmFsQ2xpY2tDb3VudCk7CiAgICAgICAgIGhhbmRsZWQgPSBtX3BhZ2UtPm1haW5G
cmFtZSgpLmV2ZW50SGFuZGxlcigpLm1vdXNlTW92ZWQobW91c2VFdmVudCk7CiAgICAgICAgIGlm
ICghbV9tb3VzZU91dFRyYWNrZXIpIHsKLSAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyID0g
c3RkOjptYWtlX3VuaXF1ZTxUUkFDS01PVVNFRVZFTlQ+KCk7CisgICAgICAgICAgICBtX21vdXNl
T3V0VHJhY2tlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFRSQUNLTU9VU0VF
VkVOVD4oKTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5jYlNpemUgPSBzaXplb2Yo
VFJBQ0tNT1VTRUVWRU5UKTsKICAgICAgICAgICAgIG1fbW91c2VPdXRUcmFja2VyLT5kd0ZsYWdz
ID0gVE1FX0xFQVZFOwogICAgICAgICAgICAgbV9tb3VzZU91dFRyYWNrZXItPmh3bmRUcmFjayA9
IG1fdmlld1dpbmRvdzsKQEAgLTY3OTQsNyArNjc5NCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVn
aXN0ZXJFbWJlZGRlZFZpZXdNSU1FVHlwZShfSW5fIEJTVFIgbWltZVR5cGUpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAKICAgICBpZiAoIW1fZW1iZWRkZWRWaWV3TUlNRVR5cGVzKQotICAg
ICAgICBtX2VtYmVkZGVkVmlld01JTUVUeXBlcyA9IHN0ZDo6bWFrZV91bmlxdWU8SGFzaFNldDxT
dHJpbmc+PigpOworICAgICAgICBtX2VtYmVkZGVkVmlld01JTUVUeXBlcyA9IG1ha2VVbmlxdWU8
SGFzaFNldDxTdHJpbmc+PigpOwogCiAgICAgbV9lbWJlZGRlZFZpZXdNSU1FVHlwZXMtPmFkZCh0
b1N0cmluZyhtaW1lVHlwZSkpOwogICAgIHJldHVybiBTX09LOwpAQCAtNjg5NCw3ICs2ODk0LDcg
QEAgdm9pZCBXZWJWaWV3OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1M
VmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQKICAgICAgICAgQVNTRVJUKCFtX2Z1bGxTY3JlZW5W
aWRlb0NvbnRyb2xsZXIpOwogICAgIH0KIAotICAgIG1fZnVsbFNjcmVlblZpZGVvQ29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcj4oKTsKKyAgICBt
X2Z1bGxTY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI+KCk7CiAgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5zZXRWaWRlb0Vs
ZW1lbnQoJnZpZGVvRWxlbWVudCk7CiAgICAgbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyLT5l
bnRlckZ1bGxzY3JlZW4oKTsKICNlbmRpZgpAQCAtNjk0Niw3ICs2OTQ2LDcgQEAgSFJFU1VMVCBX
ZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChfSW5fIEJTVFIgZ3JvdXBOYW1lLCBfSW5fb3B0
XyBJV2ViU2NyaXB0V28KICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgIFdlYlNjcmlw
dFdvcmxkKiB3b3JsZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQp
OwotICAgIGF1dG8gdXNlclNjcmlwdCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclNjcmlwdD4oc291
cmNlLCB0b1VSTCh1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QsIHdoaXRlbGlzdENvdW50
KSwKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBtYWtlVW5pcXVlPFVzZXJTY3JpcHQ+KHNvdXJjZSwg
dG9VUkwodXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksCiAg
ICAgICAgIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLCBpbmplY3Rp
b25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFy
dCA6IEluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgIGluamVjdGVkRnJhbWVzID09IFdlYklu
amVjdEluQWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25s
eSk7CiAgICAgdmlld0dyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0
KHdvcmxkLT53b3JsZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKQEAgLTY5NzMsNyArNjk3Myw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKF9Jbl8gQlNUUiBn
cm91cE5hbWUsIF9Jbl9vcHRfIElXZWJTY3JpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAK
ICAgICBXZWJTY3JpcHRXb3JsZCogd29ybGQgPSByZWludGVycHJldF9jYXN0PFdlYlNjcmlwdFdv
cmxkKj4oaVdvcmxkKTsKLSAgICBhdXRvIHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVz
ZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlz
dCwgd2hpdGVsaXN0Q291bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENv
dW50KSwKKyAgICBhdXRvIHN0eWxlU2hlZXQgPSBtYWtlVW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihz
b3VyY2UsIHRvVVJMKHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291
bnQpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwKICAgICAgICAg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1l
cyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwogICAgIHZpZXdH
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQod29ybGQtPndv
cmxkKCksIFdURk1vdmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwog
ICAgIHJldHVybiBTX09LOwpAQCAtNzIzNyw3ICs3MjM3LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKGJvb2wgYWNjZWxlcmF0ZWQpCiAgICAgfQogI2VsaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIGlmIChhY2NlbGVyYXRlZCAmJiAhbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCkKLSAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0
aGlzKTsKKyAgICAgICAgbV9hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IG1ha2VVbmlx
dWU8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+KCp0aGlzKTsKICAgICBtX2lzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZyA9IGFjY2VsZXJhdGVkOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2JmYzg1OTc0NTIyODJkZTk5
M2MzZGI0MGQzMDc3Mjg1YjdjNzBlYy4uMTNkMjU0NDQxMzk1M2QxN2MzZjdmYjUzYzU3NzQ0Mzk3
YjE4MjI3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyMSBAQAorMjAxOS0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3aGljaCBlbnN1
cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIG1ha2VVbmlxdWUgLyBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjayBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoYWRk
VVJMVG9SZWRpcmVjdENhbGxiYWNrKToKKyAgICAgICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFy
SGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dz
Rm9yQ2hhbm5lbCk6CisgICAgICAgIChUZXN0UnVubmVyOjpydW5VSVNjcmlwdCk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRPcGVuUGFuZWxGaWxlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06Cisg
ICAgICAgIChldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZvclZpZXdBbmRFdmVudCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwOgorICAgICAg
ICAoRFJURGF0YU9iamVjdDo6U2V0RGF0YSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpGcmFt
ZUxvYWREZWxlZ2F0ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUu
Y3BwOgorICAgICAgICAoRFJUVW5kb01hbmFnZXI6OkRSVFVuZG9NYW5hZ2VyKToKKyAgICAgICAg
KFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUpOgorICAgICAgICAoVUlEZWxlZ2F0ZTo6cmVzZXRVbmRv
TWFuYWdlcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KU1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6
dG9TVEQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0V4cGVjdGVkLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0
TW92aW5nVXNpbmdFbnN1cmUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdE1vdmluZ1Vz
aW5nQWRkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6cnVuTG9ja1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BhcmtpbmdMb3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1JlZkNvdW50ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkR3JvdXAuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFy
aWFudC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZm
ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q0FSaW5nQnVmZmVyVGVzdDo6U2V0VXAp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVl
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVRlc3RWYWx1ZSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVz
LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRo
aW5DcmVhdGVQYWdlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2Up
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L01vZGFsQWxlcnRzU1BJLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJlZ2luQW5kRW5kRWRpdGluZy5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6V2ViS2l0MlVzZXJNZXNzYWdlUm91bmRUcmlwVGVz
dDo6U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2Fk
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OldlYktpdDJXaWxsTG9hZFRlc3Q6OlNldFVw
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFw
cGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGb3Jj
ZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlVGVzdDo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3Bw
OgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50
aWNhdGlvblByb3h5SFRUUFMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwOgorICAgICAgICAoV2ViS2l0RE9NRE9NV2luZG93VGVz
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0
aWVzQ29jb2EubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjp0b1NURCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoYXBw
bHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVy
cyk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5pdFdpdGhGcmFtZTpjb25maWd1cmF0aW9u
OmFkZFRvV2luZG93Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0
aW9ucy5tbToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIGluaXRXaXRoRm9udE9wdGlvbnM6
XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRp
bmdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dE9wZW5QYW5lbEZpbGVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oOgorICAgICAgICAoV1RSOjp0b1NURCk6CisgICAg
ICAgIChXVFI6OnRvV1RGU3RyaW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2VuZXJhdGVQYWdlQ29uZmlndXJhdGlv
bik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50
VmFsdWVzKToKKyAgICAgICAgKFdUUjo6Y3JlYXRlVGVzdFVSTCk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpydW5UZXN0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtQ3JlYXRlV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpydW5VSVNpZGVTY3Jp
cHQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmll
dyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXREZWZhdWx0Q2FsZW5kYXJUeXBl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3RrLmNw
cDoKKyAgICAgICAgKFdUUjo6Z2V0R0RLS2V5U3ltRm9yS2V5UmVmKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06Cisg
ICAgICAgIChXVFI6OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlRG93bik6CisgICAgICAgIChXVFI6
OkV2ZW50U2VuZGVyUHJveHk6Om1vdXNlVXApOgorICAgICAgICAoV1RSOjpFdmVudFNlbmRlclBy
b3h5Ojptb3VzZU1vdmVUbyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRT
ZW5kZXJQcm94eVdQRS5jcHA6CisgICAgICAgIChXVFI6OndwZUtleVN5bUZvcktleVJlZik6CisK
IDIwMTktMDgtMTcgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtFU05leHRdIEltcGxlbWVudCBvcHRpb25hbCBjaGFpbmluZwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmNwcAppbmRleCA5MGM2NGMzNjE0Y2RjNDJkYjZmNDk0MmJkZTFhZDEzMGZk
MWZkOWNiLi5kN2NjMjhjYjBiMjYyYTlmODljYzRjOTc5YWRlNGI5MjVjZGVkMDg1IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
V2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzYzLDEx
ICszNjQsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgYWRkVVJMVG9SZWRpcmVjdENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW4KICAgICBBU1NFUlQoISpleGNlcHRp
b24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3Ry
aW5nU2l6ZShvcmlnaW4uZ2V0KCkpOwotICAgIGF1dG8gb3JpZ2luQnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gb3JpZ2luQnVmZmVyID0g
bWFrZVVuaXF1ZUFycmF5PGNoYXI+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0VVRG
OENTdHJpbmcob3JpZ2luLmdldCgpLCBvcmlnaW5CdWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEp
OwogCiAgICAgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGRl
c3RpbmF0aW9uLmdldCgpKTsKLSAgICBhdXRvIGRlc3RpbmF0aW9uQnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gZGVzdGluYXRpb25CdWZm
ZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSwgZGVzdGluYXRpb25CdWZmZXIuZ2V0KCks
IG1heExlbmd0aCArIDEpOwogCiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19j
YXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTMx
OCw3ICsxMzE5LDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJI
ZWFkZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlMKICAgICBBU1NFUlQoISpleGNl
cHRpb24pOwogCiAgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShoZWFkZXIuZ2V0KCkpOwotICAgIGF1dG8gaGVhZGVyQnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KG1heExlbmd0aCArIDEpOworICAgIGF1dG8gaGVhZGVyQnVmZmVy
ID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KG1heExlbmd0aCArIDEpOwogICAgIEpTU3RyaW5nR2V0
VVRGOENTdHJpbmcoaGVhZGVyLmdldCgpLCBoZWFkZXJCdWZmZXIuZ2V0KCksIG1heExlbmd0aCAr
IDEpOwogCiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5u
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMjM5NCw3ICsyMzk1LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGJvb2wgc2hvdWxk
UGFpbnRCcm9rZW5JbWFnZSkKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0QWNjdW1tdWxhdGVMb2dzRm9y
Q2hhbm5lbChKU1N0cmluZ1JlZiBjaGFubmVsKQogewogICAgIHNpemVfdCBtYXhMZW5ndGggPSBK
U1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoY2hhbm5lbCk7Ci0gICAgYXV0byBidWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obWF4TGVuZ3RoICsgMSk7CisgICAgYXV0byBi
dWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJp
bmdHZXRVVEY4Q1N0cmluZyhjaGFubmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwog
CiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKHsgYnVm
ZmVyLmdldCgpIH0pOwpAQCAtMjQ2NCw3ICsyNDY1LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpydW5V
SVNjcmlwdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgc2NyaXB0LCBKU1ZhbHVl
UmUKICAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhjYWxsYmFja0lELCBjYWxsYmFjayk7CiAK
ICAgICBpZiAoIW1fVUlTY3JpcHRDb250ZXh0KQotICAgICAgICBtX1VJU2NyaXB0Q29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8V1RSOjpVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAg
bV9VSVNjcmlwdENvbnRleHQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxXVFI6
OlVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOwogCiAgICAgU3RyaW5nIHNjcmlwdFN0cmluZyhKU1N0
cmluZ0dldENoYXJhY3RlcnNQdHIoc2NyaXB0KSwgSlNTdHJpbmdHZXRMZW5ndGgoc2NyaXB0KSk7
CiAgICAgbV9VSVNjcmlwdENvbnRleHQtPnJ1blVJU2NyaXB0KHNjcmlwdFN0cmluZywgY2FsbGJh
Y2tJRCk7CkBAIC0yNTIxLDcgKzI1MjIsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9wZW5QYW5l
bEZpbGVzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGZpbGVzVmFsdWUpCiAKICAg
ICAgICAgYXV0byBmaWxlID0gYWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBmaWxl
VmFsdWUsIG51bGxwdHIpKTsKICAgICAgICAgc2l6ZV90IGZpbGVCdWZmZXJTaXplID0gSlNTdHJp
bmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGZpbGUuZ2V0KCkpICsgMTsKLSAgICAgICAgYXV0
byBmaWxlQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZpbGVCdWZmZXJTaXplKTsK
KyAgICAgICAgYXV0byBmaWxlQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGZpbGVCdWZm
ZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhmaWxlLmdldCgpLCBmaWxl
QnVmZmVyLmdldCgpLCBmaWxlQnVmZmVyU2l6ZSk7CiAKICAgICAgICAgbV9vcGVuUGFuZWxGaWxl
cy5wdXNoX2JhY2soZmlsZUJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KaW5kZXggMmU5Mzk3ZmY1OTQ5MjUwMGZiMDg2ODcxYzhhZjdjNmYx
NjY5YWJmNC4uMDhkZTliZDkyZWQyZmIxYWIwN2RhZmE3OWVjYzlmODA5NDU5ODZiMyAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtOTcsNiArOTcsNyBA
QAogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VbmlxdWVBcnJh
eS5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE1MzUsNyArMTUzNiw3IEBAIHN0YXRpYyBOU1N0cmluZyAq
ZHVtcEZyYW1lc0FzVGV4dChXZWJGcmFtZSAqZnJhbWUpCiAgICAgLy8gdGhlIHJlc3VsdCB3aXRo
b3V0IGFueSBjb252ZXJzaW9uLgogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdS
ZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilpbm5lclRleHQpKTsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4
aW11bVVURjhDU3RyaW5nU2l6ZShzdHJpbmdSZWYuZ2V0KCkpOwotICAgIGF1dG8gYnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0g
bWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBzdHJpbmdMZW5n
dGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KHN0cmluZ1JlZi5nZXQoKSwgYnVm
ZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIiVAXG4i
LCBTdHJpbmc6OmZyb21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGJ1ZmZlci5nZXQoKSwgc3RyaW5n
TGVuZ3RoIC0gMSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggNDYxYmQzZGYz
ZWJiMjYwM2FjMzIxODI4ODIxOGRkOGY2OTE2OGZmZC4uM2JlMzMyMjFkNmIzZWJjMzU2ZDUxZTMz
NGEyNGQ5MjlhZTI1M2E5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTU2OCw3ICs1NjgsNyBAQCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPENsYXNzTWV0aG9kU3dpenpsZXI+IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3
aXp6bGVyRm9yVgogewogICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBj
bGFzc11dKQogICAgICAgICB2aWV3ID0gWyhXZWJIVE1MVmlldyAqKXZpZXcgX2hpdFZpZXdGb3JF
dmVudDpldmVudF07Ci0gICAgcmV0dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Njcm9sbGVy
IGNsYXNzXV0gPyBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50
IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0
PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKSA6IE5VTEw7CisgICAgcmV0
dXJuICFbdmlldyBpc0tpbmRPZkNsYXNzOltOU1Njcm9sbGVyIGNsYXNzXV0gPyBtYWtlVW5pcXVl
PENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRN
b3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRN
b3VzZUJ1dHRvbnMpKSA6IE5VTEw7CiB9CiAKIHN0YXRpYyBOU1VJbnRlZ2VyIHN3aXp6bGVkRXZl
bnRQcmVzc2VkTW91c2VCdXR0b25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EUlREYXRhT2JqZWN0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EUlREYXRh
T2JqZWN0LmNwcAppbmRleCBjZTgyZWExZTI3ZGJkMjc5MmIxMDQ5YzQ5NGVhZjBiODljNDllYWQx
Li5jZGZlOGFjYjQ2OGM3NGQwYWUwODRjZjg3NmQ1MzRmZjFlM2JhNTdjIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVjdC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgU1RE
TUVUSE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEoX0luXyBGT1JNQVRFVEMqIHBmb3JtYXRl
dGMsIF9Jbl8gU1RHTUVESVVNKgogICAgIGlmICghcGZvcm1hdGV0YyB8fCAhcG1lZGl1bSkKICAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGF1dG8gZm9ybWF0ZXRjID0gc3RkOjptYWtl
X3VuaXF1ZTxGT1JNQVRFVEM+KCk7CisgICAgYXV0byBmb3JtYXRldGMgPSBtYWtlVW5pcXVlV2l0
aG91dEZhc3RNYWxsb2NDaGVjazxGT1JNQVRFVEM+KCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNU
R01FRElVTSwgU3RnTWVkaXVtRGVsZXRlcj4gcFN0Z01lZChuZXcgU1RHTUVESVVNKTsKIAogICAg
IFplcm9NZW1vcnkoZm9ybWF0ZXRjLmdldCgpLCBzaXplb2YoRk9STUFURVRDKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAppbmRleCBjODBkZjFi
ZTVmMmRlNDdkM2I4MzE2MzdlZjZlOWZiY2Q5MzRjOGU2Li4xMWM5MzM5YjE2ZDgwNGQyYzIwMWM5
MzI5ZjRhOGMzNTQ0MmE4M2NiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgc3RyaW5nIGRlc2NyaXB0aW9uU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KElXZWJGcmFtZSogd2ViRnJhbWUpCiB9CiAKIEZyYW1lTG9hZERl
bGVnYXRlOjpGcmFtZUxvYWREZWxlZ2F0ZSgpCi0gICAgOiBtX2djQ29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPEdDQ29udHJvbGxlcj4oKSkKLSAgICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIoc3RkOjptYWtlX3VuaXF1ZTxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4oKSkKLSAgICAsIG1f
dGV4dElucHV0Q29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHRJbnB1dENvbnRyb2xsZXI+
KCkpCisgICAgOiBtX2djQ29udHJvbGxlcihtYWtlVW5pcXVlPEdDQ29udHJvbGxlcj4oKSkKKyAg
ICAsIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcj4oKSkKKyAgICAsIG1fdGV4dElucHV0Q29udHJvbGxlcihtYWtlVW5pcXVlPFRleHRJ
bnB1dENvbnRyb2xsZXI+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9VSURlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVn
YXRlLmNwcAppbmRleCBkMTdjZjc0ZjRmYmJhNTcxNDc3NmNiMDA3N2U5ZDcwZjcyNGMzZDYzLi44
ZjgyZjBkOTI2YzBhZDY5NjEwMWE1YjEzNTRlN2U3MGY0Mzg0NDNmIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCkBAIC0xMDQsOCArMTA0LDggQEAgY2xhc3MgRFJUVW5k
b01hbmFnZXIgewogfTsKIAogRFJUVW5kb01hbmFnZXI6OkRSVFVuZG9NYW5hZ2VyKCkKLSAgICA6
IG1fcmVkb1N0YWNrKHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb1N0YWNrPigpKQotICAgICwgbV91
bmRvU3RhY2soc3RkOjptYWtlX3VuaXF1ZTxEUlRVbmRvU3RhY2s+KCkpCisgICAgOiBtX3JlZG9T
dGFjayhtYWtlVW5pcXVlPERSVFVuZG9TdGFjaz4oKSkKKyAgICAsIG1fdW5kb1N0YWNrKG1ha2VV
bmlxdWU8RFJUVW5kb1N0YWNrPigpKQogewogfQogCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBE
UlRVbmRvTWFuYWdlcjo6dW5kbygpCiB9CiAKIFVJRGVsZWdhdGU6OlVJRGVsZWdhdGUoKQotICAg
IDogbV91bmRvTWFuYWdlcihzdGQ6Om1ha2VfdW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpKQorICAg
IDogbV91bmRvTWFuYWdlcihtYWtlVW5pcXVlPERSVFVuZG9NYW5hZ2VyPigpKQogICAgICwgbV9k
ZXNrdG9wTm90aWZpY2F0aW9ucyhuZXcgRFJURGVza3RvcE5vdGlmaWNhdGlvblByZXNlbnRlcikK
IHsKICAgICBtX2ZyYW1lLmJvdHRvbSA9IDA7CkBAIC0xNjAsNyArMTYwLDcgQEAgVUlEZWxlZ2F0
ZTo6VUlEZWxlZ2F0ZSgpCiAKIHZvaWQgVUlEZWxlZ2F0ZTo6cmVzZXRVbmRvTWFuYWdlcigpCiB7
Ci0gICAgbV91bmRvTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8RFJUVW5kb01hbmFnZXI+KCk7
CisgICAgbV91bmRvTWFuYWdlciA9IG1ha2VVbmlxdWU8RFJUVW5kb01hbmFnZXI+KCk7CiB9CiAK
IEhSRVNVTFQgVUlEZWxlZ2F0ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0phdmFTY3JpcHRUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRl
c3QuY3BwCmluZGV4IDIxMzZlOThkOGViYjg3NWQ1OTdmYzZlMDdjN2IwMWVkNWI4NGFlMTYuLmQ4
ZTMyM2VkZTNkYTg5MjM1OWRiZDM0ODM5ODhlNGMwZTNhODU4YTMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvSmF2YVNjcmlwdFRlc3QuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVl
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVB
cnJheS5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKQEAgLTc1LDcgKzc2LDcgQEAg
Ojp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgcnVuSlNUZXN0KGNvbnN0IGNoYXIqLCBjb25zdCBj
aGFyKiwgY29uc3QgY2hhciosIFdLUGEKICAgICBVdGlsOjpydW4oJmNvbnRleHQuZGlkRmluaXNo
KTsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJp
bmdTaXplKGNvbnRleHQuYWN0dWFsU3RyaW5nLmdldCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1h
a2VVbmlxdWVBcnJheTxjaGFyPihidWZmZXJTaXplKTsKICAgICBKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKGNvbnRleHQuYWN0dWFsU3RyaW5nLmdldCgpLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUp
OwogICAgIAogICAgIHJldHVybiBjb21wYXJlSlNSZXN1bHQoc2NyaXB0LCBidWZmZXIuZ2V0KCks
IGV4cGVjdGVkUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1VdGlsaXRpZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5j
cHAKaW5kZXggOGY4ZDc2OGE1M2MyNzUxYTI0M2UwNTk1ZTJjMGMwZjQ0NWRkOTZjOC4uMDVmMGQ0
ZjJhMzI5ZmY2MzY4ZTAxYmVjMzk4YTlhZjk2ZTU2NjFiOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdl
YktpdC9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiBuYW1lc3BhY2UgVXRpbCB7CkBAIC02OSw3ICs3MCw3IEBAIFdLQ29udGV4dFJl
ZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0
ZXN0TmFtZSwgV0tUCiBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUo
c3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZm
ZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3Ry
aW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAg
IHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCmluZGV4IDUwZjkxMWRi
NTkwZWYyMjIwMmM0YWI4MTBkN2M3YTgwMGY1ZWRhYTEuLjJhMDZmOGJhNWNhOWZlYjQ5MmEzNTIy
YzVjNjU1MDEzOGQyMjM3ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0V4cGVjdGVkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FeHBl
Y3RlZC5jcHAKQEAgLTQxNyw3ICs0MTcsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0
cikKIHsKICAgICAvLyBVbmlxdWUgc25vd2ZsYWtlcyBjYW5ub3QgYmUgY29waWVkLgogICAgIHsK
LSAgICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxh
a2U+KCkpOworICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dm
bGFrZT4oKSk7CiAgICAgICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAgRVhQ
RUNUX0VRKG1lbHRlZCwgMCk7CiAgICAgfQpAQCAtNDI2LDcgKzQyNiw3IEBAIFRFU1QoV1RGX0V4
cGVjdGVkLCB1bmlxdWVfcHRyKQogICAgIHNub3dmbGFrZTo6cmVzZXQoKTsKIAogICAgIHsKLSAg
ICAgICAgYXV0byBzID0gbWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+
KCkpOworICAgICAgICBhdXRvIHMgPSBtYWtlVW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFr
ZT4oKSk7CiAgICAgICAgIFVuZXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPHNub3dmbGFrZT4+IGMo
V1RGTW92ZShzKSk7CiAgICAgICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKICAgICAgICAg
RVhQRUNUX0VRKG1lbHRlZCwgMCk7CkBAIC00NDcsNyArNDQ3LDcgQEAgVEVTVChXVEZfRXhwZWN0
ZWQsIHVuaXF1ZV9wdHIpCiAgICAgfTsKIAogICAgIHsKLSAgICAgICAgRXhwZWN0ZWQ8c3RkOjp1
bmlxdWVfcHRyPHNub3dmbGFrZT4sIGludD4gcyhzdGQ6Om1ha2VfdW5pcXVlPHNub3dmbGFrZT4o
KSk7CisgICAgICAgIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxzbm93Zmxha2U+LCBpbnQ+IHMo
bWFrZVVuaXF1ZTxzbm93Zmxha2U+KCkpOwogICAgICAgICBwbG93KFdURk1vdmUocykudmFsdWUo
KSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAgLTQ1NSw3ICs0NTUs
NyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93Zmxha2U6OnJlc2V0
KCk7CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPGludCwgc3RkOjp1bmlxdWVfcHRyPHNub3dm
bGFrZT4+IHMobWFrZVVuZXhwZWN0ZWQoc3RkOjptYWtlX3VuaXF1ZTxzbm93Zmxha2U+KCkpKTsK
KyAgICAgICAgRXhwZWN0ZWQ8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8c25vd2ZsYWtlPj4gcyhtYWtl
VW5leHBlY3RlZChtYWtlVW5pcXVlPHNub3dmbGFrZT4oKSkpOwogICAgICAgICBwbG93KFdURk1v
dmUocykuZXJyb3IoKSk7CiAgICAgfQogICAgIEVYUEVDVF9FUShzbm93Zmxha2VzLCAxKTsKQEAg
LTQ2Myw3ICs0NjMsNyBAQCBURVNUKFdURl9FeHBlY3RlZCwgdW5pcXVlX3B0cikKICAgICBzbm93
Zmxha2U6OnJlc2V0KCk7CiAKICAgICB7Ci0gICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5p
cXVlX3B0cjxzbm93Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKHN0ZDo6bWFrZV91bmlxdWU8c25v
d2ZsYWtlPigpKSk7CisgICAgICAgIEV4cGVjdGVkPHZvaWQsIHN0ZDo6dW5pcXVlX3B0cjxzbm93
Zmxha2U+PiBzKG1ha2VVbmV4cGVjdGVkKG1ha2VVbmlxdWU8c25vd2ZsYWtlPigpKSk7CiAgICAg
ICAgIHBsb3coV1RGTW92ZShzKS5lcnJvcigpKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKHNub3dm
bGFrZXMsIDEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aENvdW50ZWRTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaENvdW50
ZWRTZXQuY3BwCmluZGV4IDg0ZGE1ZWMzZmZjMjQ4YWNkZDllMzYzMzAzOGM2OWRhZTg5MTIwOTku
LjdiOGZhZjI4OGFiYzA3Y2ZhZjhiNTI3MTIzOGY3NmQwMTMwMTJlZTYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hDb3VudGVkU2V0LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoQ291bnRlZFNldC5jcHAKQEAgLTI0MSw3ICsy
NDEsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5KQogCiAgICAgSGFz
aENvdW50ZWRTZXQ8c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
PiBoYXNoQ291bnRlZFNldDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOworICAgIGF1dG8gdW5pcXVlUHRyID0g
bWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPigpOwogICAgIGhhc2hDb3Vu
dGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0yNTksNyAr
MjU5LDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleUluaXRpYWxDb3Vu
dCkKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3Ry
dWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRv
IHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsK
ICAgICBoYXNoQ291bnRlZFNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAxMik7CiAKICAgICBF
WFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNv
dW50KTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVl
UHRyS2V5X0ZpbmRVc2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaENvdW50ZWRTZXQ8c3RkOjp1
bmlxdWVfcHRyPGludD4+IGhhc2hDb3VudGVkU2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVl
V2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRy
LmdldCgpOwogICAgIGhhc2hDb3VudGVkU2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBA
IC0zMTIsNyArMzEyLDcgQEAgVEVTVChXVEZfSGFzaENvdW50ZWRTZXQsIFVuaXF1ZVB0cktleV9D
b250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1
ZV9wdHI8aW50Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRo
b3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0
KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMy
Myw3ICszMjMsNyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X0dldFVz
aW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoQ291bnRlZFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50
Pj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8aW50Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1h
bGxvY0NoZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAg
aGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTMzNyw3ICszMzcs
NyBAQCBURVNUKFdURl9IYXNoQ291bnRlZFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3
UG9pbnRlcikKIAogICAgIEhhc2hDb3VudGVkU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPj4gaGFzaENvdW50ZWRTZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAg
ICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQdHIu
Z2V0KCk7CiAgICAgaGFzaENvdW50ZWRTZXQuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggOWZkZjUxZDUwNzQ4
ZWMwYzI3ZWZkMjFjM2NmYjg1MmE0NDI4MWI5MC4uYTcwYzE2MzU2YjZjMWQyNjk2N2Y3NWM2OTEw
YmMxYzAxNDYyNGY4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaE1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5j
cHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXkpCiAK
ICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
PiwgaW50PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
c3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VV
bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBtYXAuYWRkKFdURk1v
dmUodW5pcXVlUHRyKSwgMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBURVNU
KFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBI
YXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVl
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFr
ZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVu
aXF1ZVB0ci5nZXQoKTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAg
LTI0NCw3ICsyNDQsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfQ29udGFpbnNV
c2luZ1Jhd1BvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8aW50PiwgaW50
PiBtYXA7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50Pig1KTsK
KyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGlu
dD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgbWFwLmFkZChXVEZN
b3ZlKHVuaXF1ZVB0ciksIDIpOwogCkBAIC0yNTUsNyArMjU1LDcgQEAgVEVTVChXVEZfSGFzaE1h
cCwgVW5pcXVlUHRyS2V5X0dldFVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoTWFwPHN0ZDo6
dW5pcXVlX3B0cjxpbnQ+LCBpbnQ+IG1hcDsKIAotICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxpbnQ+KDUpOworICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZVdpdGhv
dXRGYXN0TWFsbG9jQ2hlY2s8aW50Pig1KTsKICAgICBpbnQqIHB0ciA9IHVuaXF1ZVB0ci5nZXQo
KTsKICAgICBtYXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKQEAgLTI2OSw3ICsyNjks
NyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVy
KQogCiAgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4sIGludD4gbWFwOwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBt
YWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0
b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQo
V1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1QoV1RGX0hh
c2hNYXAsIFVuaXF1ZVB0cktleV9UYWtlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgSGFzaE1hcDxz
dGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwog
Ci0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVj
dG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
ciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIp
LCAyKTsKIApAQCAtNTYzLDEyICs1NjMsMTIgQEAgVEVTVChXVEZfSGFzaE1hcCwgRW5zdXJlX1Vu
aXF1ZVBvaW50ZXIpCiB7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPHVu
c2lnbmVkPj4gbWFwOwogICAgIHsKLSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJl
KDEsIFtdIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQ+KDEpOyB9KTsKKyAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuZW5zdXJlKDEsIFtdIHsgcmV0dXJuIG1ha2VVbmlxdWVX
aXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkPigxKTsgfSk7CiAgICAgICAgIEVYUEVDVF9F
USgxdSwgKm1hcC5nZXQoMSkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsICphZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1bHQuaXRl
cmF0b3ItPmtleSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
LSAgICAgICAgYXV0byBhZGRSZXN1bHQyID0gbWFwLmVuc3VyZSgxLCBbXSB7IHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPHVuc2lnbmVkPigyKTsgfSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0MiA9
IG1hcC5lbnN1cmUoMSwgW10geyByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8dW5zaWduZWQ+KDIpOyB9KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCAqbWFwLmdldCgxKSk7
CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgKmFkZFJlc3VsdDIuaXRlcmF0b3ItPnZhbHVlLmdldCgp
KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBhZGRSZXN1bHQyLml0ZXJhdG9yLT5rZXkpOwpAQCAt
NjA1LDcgKzYwNSw3IEBAIHZvaWQgdGVzdE1vdmluZ1VzaW5nRW5zdXJlKFJlZjxSZWZMb2dnZXI+
JiYgbG9nZ2VyKQogewogICAgIEhhc2hNYXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxPYmpl
Y3RXaXRoUmVmTG9nZ2VyPj4gbWFwOwogICAgIAotICAgIG1hcC5lbnN1cmUoMSwgWyZdIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShsb2dnZXIp
KTsgfSk7CisgICAgbWFwLmVuc3VyZSgxLCBbJl0geyByZXR1cm4gbWFrZVVuaXF1ZTxPYmplY3RX
aXRoUmVmTG9nZ2VyPihXVEZNb3ZlKGxvZ2dlcikpOyB9KTsKIH0KIAogdm9pZCB0ZXN0TW92aW5n
VXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCkBAIC02MTMsNyArNjEzLDcgQEAgdm9p
ZCB0ZXN0TW92aW5nVXNpbmdBZGQoUmVmPFJlZkxvZ2dlcj4mJiBsb2dnZXIpCiAgICAgSGFzaE1h
cDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFdpdGhSZWZMb2dnZXI+PiBtYXA7CiAK
ICAgICBhdXRvJiBzbG90ID0gbWFwLmFkZCgxLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7Ci0g
ICAgc2xvdCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0V2l0aFJlZkxvZ2dlcj4oV1RGTW92ZShs
b2dnZXIpKTsKKyAgICBzbG90ID0gbWFrZVVuaXF1ZTxPYmplY3RXaXRoUmVmTG9nZ2VyPihXVEZN
b3ZlKGxvZ2dlcikpOwogfQogCiBURVNUKFdURl9IYXNoTWFwLCBFbnN1cmVfTGFtYmRhc0NhcHR1
cmluZ0J5UmVmZXJlbmNlKQpAQCAtNjk5LDcgKzY5OSw3IEBAIHN0cnVjdCBEZXJlZk9ic2VydmVy
IHsKIAogVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyTm90WmVyb2VkQmVmb3JlRGVyZWYpCiB7Ci0g
ICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZPYnNlcnZlcj4oKTsKKyAg
ICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVyPigpOwogCiAgICAgSGFz
aE1hcDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4sIGludD4gbWFwOwogICAgIG1hcC5hZGQoYWRvcHRS
ZWYob2JzZXJ2ZXIuZ2V0KCkpLCA1KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aFNldC5jcHAKaW5kZXggYmNmMTU5YzMzODE2YWVlYWIzY2MzMzJmYTVkODBlZTQzNWRkNmZhNi4u
ZTY2YjljNzdlNzA1Nzg0ZGE0NjFmZTEyNzA4ZDcxMDNkNzg1YzNhYSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBURVNUKFdU
Rl9IYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAg
YXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+
KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1
LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0x
NDQsNyArMTQ0LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X0ZpbmRVc2luZ1Jh
d1BvaW50ZXIpCiB7CiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gc2V0OwogCi0g
ICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1
bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAg
IGludCogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQ
dHIpKTsKIApAQCAtMTU4LDcgKzE1OCw3IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFVuaXF1ZVB0cktl
eV9Db250YWluc1VzaW5nUmF3UG9pbnRlcikKIHsKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0
cjxpbnQ+PiBzZXQ7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8aW50
Pig1KTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCkBAIC0xNzEsNyArMTcxLDcgQEAgVEVTVChXVEZfSGFz
aFNldCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAgIEhhc2hTZXQ8
c3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBzZXQ7CiAKLSAg
ICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8Q29uc3RydWN0b3JE
ZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBw
dHIgPSB1bmlxdWVQdHIuZ2V0KCk7CiAgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwog
CkBAIC0xOTEsNyArMTkxLDcgQEAgVEVTVChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1Rha2VV
c2luZ1Jhd1BvaW50ZXIpCiAKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3Rv
ckRlc3RydWN0b3JDb3VudGVyPj4gc2V0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CisgICAgYXV0byB1bmlx
dWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAg
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAg
IHNldC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpKTsKIApAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVj
dCBEZXJlZk9ic2VydmVyIHsKIAogVEVTVChXVEZfSGFzaFNldCwgUmVmUHRyTm90WmVyb2VkQmVm
b3JlRGVyZWYpCiB7Ci0gICAgYXV0byBvYnNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyZWZP
YnNlcnZlcj4oKTsKKyAgICBhdXRvIG9ic2VydmVyID0gbWFrZVVuaXF1ZTxEZXJlZk9ic2VydmVy
PigpOwogCiAgICAgSGFzaFNldDxSZWZQdHI8RGVyZWZPYnNlcnZlcj4+IHNldDsKICAgICBzZXQu
YWRkKGFkb3B0UmVmKG9ic2VydmVyLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9MaXN0SGFzaFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9MaXN0SGFzaFNldC5jcHAKaW5kZXggNjU3YmU0MWQ2MjA3MjQ0NjdhNTU0OWUyYWI1
YTE5NDFjNGUzNzNjMS4uYjc3MGE1YjI3YzFkMmIwOTVhNWJiNTlkNjVhYzNmNGRjNGU0ZTY4ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTGlzdEhhc2hTZXQuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xpc3RIYXNoU2V0LmNwcApAQCAt
MzgwLDcgKzM4MCw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlxdWVQdHJLZXkpCiAKICAg
ICBMaXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cj4+IGxpc3Q7CiAKLSAgICBhdXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3Ry
dWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKKyAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlx
dWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICBsaXN0LmFkZChXVEZNb3Zl
KHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CkBAIC0zOTYsNyArMzk2LDcgQEAgVEVTVChXVEZf
TGlzdEhhc2hTZXQsIFVuaXF1ZVB0cktleV9GaW5kVXNpbmdSYXdQb2ludGVyKQogewogICAgIExp
c3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxpbnQ+KDUpOwogICAgIGF1dG8gcHRyID0gdW5p
cXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTQx
MCw3ICs0MTAsNyBAQCBURVNUKFdURl9MaXN0SGFzaFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5z
VXNpbmdSYXdQb2ludGVyKQogewogICAgIExpc3RIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxpbnQ+
PiBsaXN0OwogCi0gICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7
CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxp
bnQ+KDUpOwogICAgIGF1dG8gcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxpc3QuYWRkKFdU
Rk1vdmUodW5pcXVlUHRyKSk7CiAKQEAgLTQyMSw5ICs0MjEsOSBAQCBURVNUKFdURl9MaXN0SGFz
aFNldCwgVW5pcXVlUHRyS2V5X0luc2VydEJlZm9yZVVzaW5nUmF3UG9pbnRlcikKIHsKICAgICBM
aXN0SGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8aW50Pj4gbGlzdDsKIAotICAgIGF1dG8gdW5pcXVl
UHRyV2l0aDIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oMik7CisgICAgYXV0byB1bmlxdWVQdHJX
aXRoMiA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oMik7CiAgICAgYXV0
byBwdHJXaXRoMiA9IHVuaXF1ZVB0cldpdGgyLmdldCgpOwotICAgIGF1dG8gdW5pcXVlUHRyV2l0
aDQgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNCk7CisgICAgYXV0byB1bmlxdWVQdHJXaXRoNCA9
IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPGludD4oNCk7CiAgICAgYXV0byBwdHJX
aXRoNCA9IHVuaXF1ZVB0cldpdGg0LmdldCgpOwogCiAgICAgbGlzdC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHJXaXRoMikpOwpAQCAtNDM1LDcgKzQzNSw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBV
bmlxdWVQdHJLZXlfSW5zZXJ0QmVmb3JlVXNpbmdSYXdQb2ludGVyKQogICAgIEFTU0VSVF9FUShw
dHJXaXRoNCwgbGlzdC5sYXN0KCkuZ2V0KCkpOwogICAgIEFTU0VSVF9FUSg0LCAqbGlzdC5sYXN0
KCkuZ2V0KCkpOwogCi0gICAgYXV0byB1bmlxdWVQdHJXaXRoMyA9IHN0ZDo6bWFrZV91bmlxdWU8
aW50PigzKTsKKyAgICBhdXRvIHVuaXF1ZVB0cldpdGgzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0
TWFsbG9jQ2hlY2s8aW50PigzKTsKICAgICBhdXRvIHB0cldpdGgzID0gdW5pcXVlUHRyV2l0aDMu
Z2V0KCk7CiAKICAgICBsaXN0Lmluc2VydEJlZm9yZShwdHJXaXRoNCwgV1RGTW92ZSh1bmlxdWVQ
dHJXaXRoMykpOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIFRFU1QoV1RGX0xpc3RIYXNoU2V0LCBVbmlx
dWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgTGlzdEhhc2hTZXQ8c3RkOjp1
bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiBsaXN0OwogCi0gICAgYXV0
byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50
ZXI+KCk7CisgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI+KCk7CiAgICAgYXV0byogcHRyID0gdW5pcXVlUHRyLmdldCgpOwogICAgIGxp
c3QuYWRkKFdURk1vdmUodW5pcXVlUHRyKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0xvY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
TG9jay5jcHAKaW5kZXggMmRjY2VkY2FkY2M2YzIyMjczZGViYzIwZjNmZjY3N2M4NzMyOTAyNy4u
YThmMDNiMDdkNjhiODVmOWRlMjg2MDQ5ZjNjNjFhM2ZlMzkyZjFlNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYv
TG9jay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9Xb3JkTG9jay5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC00Miw5ICs0
Myw5IEBAIHN0cnVjdCBMb2NrSW5zcGVjdG9yIHsKIHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBl
Pgogdm9pZCBydW5Mb2NrVGVzdCh1bnNpZ25lZCBudW1UaHJlYWRHcm91cHMsIHVuc2lnbmVkIG51
bVRocmVhZHNQZXJHcm91cCwgdW5zaWduZWQgd29ya1BlckNyaXRpY2FsU2VjdGlvbiwgdW5zaWdu
ZWQgbnVtSXRlcmF0aW9ucykKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TG9ja1R5cGVbXT4gbG9j
a3MgPSBzdGQ6Om1ha2VfdW5pcXVlPExvY2tUeXBlW10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPGRvdWJsZVtdPiB3b3JkcyA9IHN0ZDo6bWFrZV91bmlxdWU8ZG91Ymxl
W10+KG51bVRocmVhZEdyb3Vwcyk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFJlZlB0cjxUaHJlYWQ+
W10+IHRocmVhZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZlB0cjxUaHJlYWQ+W10+KG51bVRocmVh
ZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPExvY2tU
eXBlW10+IGxvY2tzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8TG9ja1R5cGVb
XT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBhdXRvIHdvcmRzID0gbWFrZVVuaXF1ZUFycmF5PGRv
dWJsZT4obnVtVGhyZWFkR3JvdXBzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmUHRyPFRocmVh
ZD5bXT4gdGhyZWFkcyA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFJlZlB0cjxU
aHJlYWQ+W10+KG51bVRocmVhZEdyb3VwcyAqIG51bVRocmVhZHNQZXJHcm91cCk7CiAKICAgICBm
b3IgKHVuc2lnbmVkIHRocmVhZEdyb3VwSW5kZXggPSBudW1UaHJlYWRHcm91cHM7IHRocmVhZEdy
b3VwSW5kZXgtLTspIHsKICAgICAgICAgd29yZHNbdGhyZWFkR3JvdXBJbmRleF0gPSAwOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAppbmRleCA0NTJlMjI3
NzFkYzA2NGFkYWFmZTYyMGViMzNlODAxMzBmNzlmMTk3Li5lMDBhMDliMmExN2FhNzM0ODU2ZTQy
YzExNDVjYmU2MDg2M2YwYTA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9QYXJraW5nTG90LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
YXJraW5nTG90LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHN0cnVjdCBTaW5nbGVMYXRjaFRlc3Qg
ewogCiB2b2lkIHJ1blBhcmtpbmdUZXN0KHVuc2lnbmVkIG51bUxhdGNoZXMsIHVuc2lnbmVkIGRl
bGF5LCB1bnNpZ25lZCBudW1UaHJlYWRzLCB1bnNpZ25lZCBudW1TaW5nbGVVbnBhcmtzKQogewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTaW5nbGVMYXRjaFRlc3RbXT4gdGVzdHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNpbmdsZUxhdGNoVGVzdFtdPihudW1MYXRjaGVzKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2luZ2xlTGF0Y2hUZXN0W10+IHRlc3RzID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8U2luZ2xlTGF0Y2hUZXN0W10+KG51bUxhdGNoZXMpOwogCiAgICAgZm9yICh1bnNpZ25l
ZCBsYXRjaEluZGV4ID0gbnVtTGF0Y2hlczsgbGF0Y2hJbmRleC0tOykKICAgICAgICAgdGVzdHNb
bGF0Y2hJbmRleF0uaW5pdGlhbGl6ZShudW1UaHJlYWRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKaW5kZXggMDgxZGY5ZTRmYzFkMjUxZDgxNGIyMjY0
YmQyZDBlMDUyYzBiZDQxZi4uZjRlZjk4M2IxYTlmYmU4OTgwN2M3NWFjMjhmZGI2MjZkOWE5NmEx
MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKQEAg
LTE3MCw3ICsxNzAsNyBAQCBURVNUKFdURiwgUmVmQ291bnRlcikKIFRFU1QoV1RGLCBSZWZDb3Vu
dGVyRGVsZXRlQ291bnRlcldpdGhPdXRzdGFuZGluZ1Rva2VucykKIHsKICAgICB7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZXN0Q291bnRlcj4gY291bnRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
VGVzdENvdW50ZXI+KFsmXShSZWZDb3VudGVyRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFRlc3RDb3VudGVyPiBjb3VudGVyID0gbWFrZVVuaXF1ZTxUZXN0Q291bnRlcj4o
WyZdKFJlZkNvdW50ZXJFdmVudCBldmVudCkgewogICAgICAgICAgICAgaWYgKCFjb3VudGVyLT52
YWx1ZSgpKQogICAgICAgICAgICAgICAgIGNvdW50ZXIgPSBudWxscHRyOwogICAgICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZEdyb3VwLmNwcAppbmRleCA4
MWUxYjJjNjNjZTcyNTQ2YmEwOTUwMGNjYjg3NTk0ZjYwNGQxZDUxLi5hZGIwMDkyNDJkNmJhMjNj
NjdlMjZhNjkzYjgyODdkMmE1MTMxMzliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9UaHJlYWRHcm91cC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVGhyZWFkR3JvdXAuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHVuc2lnbmVk
IGNvdW50VGhyZWFkR3JvdXBzKFZlY3RvcjxSZWY8VGhyZWFkPj4mIHRocmVhZHMpCiAKIFRFU1Qo
V1RGLCBUaHJlYWRHcm91cFJlbW92ZSkKIHsKLSAgICBjb25zdCB1bnNpZ25lZCBOdW1iZXJPZlRo
cmVhZHMgPSA2NDsKKyAgICBjb25zdCB1bnNpZ25lZCBOdW1iZXJPZlRocmVhZHMgPSAxNjsKIAog
ICAgIExvY2sgbG9jazsKICAgICBDb25kaXRpb24gY29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmFyaWFudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAppbmRleCAwZWYxZjFkYTQ0YmFjNTE1NGZmZmQzMzIx
Mzk1ZTlmMWUyZDJhN2MyLi41MWVjYTA3NjhkMmNjZTFjOWEzMjk1NTUyZDM1MDA5ZmY0ZmQ1NmJi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcApAQCAtMjEyLDcg
KzIxMiw3IEBAIFRFU1QoV1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKICAgICBD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7CiAKICAgICB7
Ci0gICAgICAgIGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOworICAgICAgICBhdXRvIHVuaXF1ZVB0ciA9IG1ha2VVbmlxdWU8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKTsKICAgICAgICAgVmFyaWFudDxzdGQ6OnVu
aXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gdiA9IFdURk1vdmUo
dW5pcXVlUHRyKTsKIAogICAgICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvV2Vha1B0ci5jcHAKaW5kZXggNDdjMTViOWM3MWY5MzA5ZjkzNGJhYzhkMzRmNGIyODEyZGZl
YWRmOS4uN2U2MzA2OTNlZWM2MDQxYTM3NTA0NGFmOTQ5ZDg3NDZiNjk1Y2E2YiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTU3OSwxMCArNTc5LDEwIEBA
IFRFU1QoV1RGX1dlYWtQdHIsIFdlYWtIYXNoU2V0RXhwYW5zaW9uKQogICAgICAgICBFWFBFQ1Rf
RVEod2Vha0hhc2hTZXQuY2FwYWNpdHkoKSwgMHUpOwogICAgICAgICBFWFBFQ1RfVFJVRShpbml0
aWFsQ2FwYWNpdHkgLyBtYXhMb2FkQ2FwKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGluaXRpYWxDYXBhY2l0eSAvIG1heExvYWRDYXA7ICsraSkgewotICAgICAgICAgICAgYXV0
byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBhdXRvIG9i
amVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0LmFkZCgq
b2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7Ci0g
ICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKSk7
CisgICAgICAgICAgICBvdGhlck9iamVjdHMuYXBwZW5kKG1ha2VVbmlxdWU8QmFzZT4oKSk7CiAg
ICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIH0KICAg
ICAgICAgRVhQRUNUX0VRKHNfYmFzZVdlYWtSZWZlcmVuY2VzLCBvdGhlck9iamVjdHMuc2l6ZSgp
KTsKQEAgLTYxNiw3ICs2MTYsNyBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldEV4cGFu
c2lvbikKICAgICAgICAgRVhQRUNUX0VRKHdlYWtIYXNoU2V0LmNhcGFjaXR5KCksIDB1KTsKICAg
ICAgICAgdW5zaWduZWQgb2JqZWN0Q291bnQgPSBpbml0aWFsQ2FwYWNpdHkgKiAyOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7ICsraSkgewotICAgICAgICAg
ICAgYXV0byBvYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgICAgICBh
dXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgICAgIHdlYWtIYXNoU2V0
LmFkZCgqb2JqZWN0KTsKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURk1vdmUob2JqZWN0
KSk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5jaGVja0NvbnNpc3RlbmN5KCk7CkBAIC02Njgs
MTAgKzY2OCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVzRW1wdHkp
CiAgICAgewogICAgICAgICBXZWFrSGFzaFNldDxCYXNlPiB3ZWFrSGFzaFNldDsKICAgICAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCYXNlPj4gb2JqZWN0czsKLSAgICAgICAgYXV0byBmaXJz
dE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBmaXJzdE9i
amVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpmaXJz
dE9iamVjdCk7CiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gb2JqZWN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYXNlPigpOworICAgICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5pcXVl
PEJhc2U+KCk7CiAgICAgICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKm9iamVjdCk7CiAgICAgICAg
ICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogICAgICAgICB9IHdoaWxlICh3
ZWFrSGFzaFNldC5iZWdpbigpLmdldCgpID09IGZpcnN0T2JqZWN0LmdldCgpKTsKQEAgLTczNSw4
ICs3MzUsOCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogCiAg
ICAgd2hpbGUgKDEpIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7Ci0g
ICAgICAgIGF1dG8gZmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7Ci0gICAg
ICAgIGF1dG8gbGFzdE9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAg
YXV0byBmaXJzdE9iamVjdCA9IG1ha2VVbmlxdWU8QmFzZT4oKTsKKyAgICAgICAgYXV0byBsYXN0
T2JqZWN0ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICB3ZWFrSGFzaFNldC5hZGQoKmZp
cnN0T2JqZWN0KTsKICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpsYXN0T2JqZWN0KTsKICAgICAg
ICAgaWYgKHdlYWtIYXNoU2V0LmJlZ2luKCkuZ2V0KCkgIT0gZmlyc3RPYmplY3QuZ2V0KCkpCkBA
IC03NjAsMTAgKzc2MCwxMCBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVT
aXplKQogICAgIHsKICAgICAgICAgV2Vha0hhc2hTZXQ8QmFzZT4gd2Vha0hhc2hTZXQ7CiAgICAg
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QmFzZT4+IG9iamVjdHM7Ci0gICAgICAgIGF1dG8g
bm9uRmlyc3RPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2U+KCk7CisgICAgICAgIGF1dG8g
bm9uRmlyc3RPYmplY3QgPSBtYWtlVW5pcXVlPEJhc2U+KCk7CiAgICAgICAgIHdlYWtIYXNoU2V0
LmFkZCgqbm9uRmlyc3RPYmplY3QpOwogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhdXRvIG9i
amVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzZT4oKTsKKyAgICAgICAgICAgIGF1dG8gb2JqZWN0
ID0gbWFrZVVuaXF1ZTxCYXNlPigpOwogICAgICAgICAgICAgd2Vha0hhc2hTZXQuYWRkKCpvYmpl
Y3QpOwogICAgICAgICAgICAgb2JqZWN0cy5hcHBlbmQoV1RGTW92ZShvYmplY3QpKTsKICAgICAg
ICAgfSB3aGlsZSAod2Vha0hhc2hTZXQuYmVnaW4oKS5nZXQoKSA9PSBub25GaXJzdE9iamVjdC5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0FS
aW5nQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdC
dWZmZXIuY3BwCmluZGV4IDJhYWI2NWRkOGZkN2VmMDcwNTFmYjZmNzU2NzU4Y2RlNzAyZTA3YTEu
LjgxZDdiYTI5MWFlOWY0YWI3Y2YyZTVmOWFhZDYyYzk0MjQzNTM2NzIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQVJpbmdCdWZmZXIuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKLSAgICAgICAgbV9yaW5nQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
QVJpbmdCdWZmZXI+KCk7CisgICAgICAgIG1fcmluZ0J1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0
RmFzdE1hbGxvY0NoZWNrPENBUmluZ0J1ZmZlcj4oKTsKICAgICB9CiAKICAgICAvLyBDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24oZG91YmxlIHNhbXBsZVJhdGUsIFVJbnQzMiBudW1DaGFubmVscywg
UENNRm9ybWF0IGZvcm1hdCwgYm9vbCBpc0ludGVybGVhdmVkLCBzaXplX3QgY2FwYWNpdHkpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25W
YWx1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3VsYXRpb25W
YWx1ZS5jcHAKaW5kZXggY2RkZTY3MDAyOTc2OWNkNzVmYTA3YTE2MWE4NWUxYjkxNmE5MzVkNC4u
ZGNhNDYzNjAyZTk2ZDYwYTA0NTEzODEyMWNiYmRjZWZiZWU5ZTVjMiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBDYWxjdWxhdGlvbkRlbGV0aW9uVGVzdE5vZGUgOiBwdWJs
aWMgV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25Ob2RlIHsKIAogc3RhdGljIFJlZjxXZWJDb3JlOjpD
YWxjdWxhdGlvblZhbHVlPiBjcmVhdGVUZXN0VmFsdWUoKQogewotICAgIGF1dG8gbm9kZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlPigpOworICAgIGF1dG8g
bm9kZSA9IG1ha2VVbmlxdWU8Q2FsY3VsYXRpb25EZWxldGlvblRlc3ROb2RlPigpOwogICAgIHJl
dHVybiBXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShub2RlKSwgV2Vi
Q29yZTo6VmFsdWVSYW5nZUFsbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWRvSGlkTWVzc2FnZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAKaW5kZXggZjU4ZGE4YTQy
MDczZWM5OWJiZWUzNGE4NWJlYzM0YzA4NWM1MmE2NC4uMGMxYTA2OWYxM2MzOWM0MDllNWQ1ZTFi
MDNhN2U5MmJmOWIzNjZjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpZG9IaWRNZXNzYWdlVGVzdC5jcHAKQEAgLTQ4LDEwICs0OCwxMCBAQCBU
RVNUKEZpZG9IaWRNZXNzYWdlVGVzdCwgVGVzdFBhY2tldFNpemUpCiAgICAgdWludDMyX3QgY2hh
bm5lbElkID0gMHgwNTA2MDcwODsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKIAotICAgIGF1
dG8gaW5pdFBhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5u
ZWxJZCwgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJbml0LCBWZWN0b3I8dWludDhfdD4oZGF0YSks
IGRhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIGluaXRQYWNrZXQgPSBtYWtlVW5pcXVlPEZpZG9IaWRJ
bml0UGFja2V0PihjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdCwgVmVjdG9y
PHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDY0dSwgaW5pdFBh
Y2tldC0+Z2V0U2VyaWFsaXplZERhdGEoKS5zaXplKCkpOwogCi0gICAgYXV0byBjb250aW51YXRp
b25QYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNo
YW5uZWxJZCwgMCwgV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250aW51YXRpb25QYWNrZXQg
PSBtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJZCwgMCwgV1RG
TW92ZShkYXRhKSk7CiAgICAgRVhQRUNUX0VRKDY0dSwgY29udGludWF0aW9uUGFja2V0LT5nZXRT
ZXJpYWxpemVkRGF0YSgpLnNpemUoKSk7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgVEVTVChGaWRv
SGlkTWVzc2FnZVRlc3QsIFRlc3RQYWNrZXREYXRhKQogICAgIHVpbnQzMl90IGNoYW5uZWxJZCA9
IDB4RjUwNjA3MDg7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgezEwLCAxMX07CiAgICAgRmlk
b0hpZERldmljZUNvbW1hbmQgY21kID0gRmlkb0hpZERldmljZUNvbW1hbmQ6OmtXaW5rOwotICAg
IGF1dG8gaW5pdFBhY2tldCA9IHN0ZDo6bWFrZV91bmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNo
YW5uZWxJZCwgY21kLCBWZWN0b3I8dWludDhfdD4oZGF0YSksIGRhdGEuc2l6ZSgpKTsKKyAgICBh
dXRvIGluaXRQYWNrZXQgPSBtYWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQs
IGNtZCwgVmVjdG9yPHVpbnQ4X3Q+KGRhdGEpLCBkYXRhLnNpemUoKSk7CiAgICAgc2l6ZV90IGlu
ZGV4ID0gMDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBzZXJpYWxpemVkID0gaW5pdFBhY2tldC0+
Z2V0U2VyaWFsaXplZERhdGEoKTsKQEAgLTk0LDcgKzk0LDcgQEAgVEVTVChGaWRvSGlkTWVzc2Fn
ZVRlc3QsIFRlc3RQYWNrZXRDb25zdHJ1Y3RvcnMpCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEg
ezEwLCAxMX07CiAgICAgRmlkb0hpZERldmljZUNvbW1hbmQgY21kID0gRmlkb0hpZERldmljZUNv
bW1hbmQ6OmtXaW5rOwogICAgIHNpemVfdCBsZW5ndGggPSBkYXRhLnNpemUoKTsKLSAgICBhdXRv
IG9yaWdQYWNrZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVs
SWQsIGNtZCwgV1RGTW92ZShkYXRhKSwgbGVuZ3RoKTsKKyAgICBhdXRvIG9yaWdQYWNrZXQgPSBt
YWtlVW5pcXVlPEZpZG9IaWRJbml0UGFja2V0PihjaGFubmVsSWQsIGNtZCwgV1RGTW92ZShkYXRh
KSwgbGVuZ3RoKTsKIAogICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihvcmlnUGFja2V0LT5wYXlsb2FkTGVuZ3RoKCkpOwogICAgIFZlY3Rvcjx1aW50OF90PiBv
cmlnRGF0YSA9IG9yaWdQYWNrZXQtPmdldFNlcmlhbGl6ZWREYXRhKCk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCAxZWQxMzI4
ZjgxMzA5ZTEyZTEzNzFjYjNhZGZlNmIwYTk3ODNlZWI2Li4yMjgzODNhMGYzMGE5YjEzOWY2YWFm
NDNmOTVjZWRkODA5MTY2ZTZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBURVNUX0YoRmlsZU1v
bml0b3JUZXN0LCBEZXRlY3RDaGFuZ2UpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1
ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6
bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJl
ZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1v
bml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVl
LmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAg
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoK
QEAgLTE5MCw3ICsxOTAsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RNdWx0aXBs
ZUNoYW5nZXMpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0
IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8Rmls
ZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1v
bml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAgICBhdXRvIG1vbml0b3IgPSBtYWtlVW5p
cXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwgdGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10g
KEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBlKSB7CiAgICAgICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBG
aWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6Ok1vZGlmaWNhdGlvbjoKQEAgLTI1MCw3ICsyNTAs
NyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGlvbikKIAogICAgIGF1dG8g
dGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAg
YXV0byBtb25pdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRo
KCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUg
dHlwZSkgeworICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBG
aWxlUGF0aCgpLCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFu
Z2VUeXBlIHR5cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdl
VHlwZTo6TW9kaWZpY2F0aW9uOgpAQCAtMjg5LDcgKzI4OSw3IEBAIFRFU1RfRihGaWxlTW9uaXRv
clRlc3QsIERldGVjdENoYW5nZUFuZFRoZW5EZWxldGUpCiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9
IFdvcmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIAotICAgIGF1dG8gbW9uaXRv
ciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgpLCB0ZXN0UXVl
dWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5cGUpIHsKKyAg
ICBhdXRvIG1vbml0b3IgPSBtYWtlVW5pcXVlPEZpbGVNb25pdG9yPih0ZW1wRmlsZVBhdGgoKSwg
dGVzdFF1ZXVlLmNvcHlSZWYoKSwgW10gKEZpbGVNb25pdG9yOjpGaWxlQ2hhbmdlVHlwZSB0eXBl
KSB7CiAgICAgICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlOjpN
b2RpZmljYXRpb246CkBAIC0zNDYsNyArMzQ2LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwg
RGV0ZWN0RGVsZXRlQnV0Tm90U3Vic2VxdWVudENoYW5nZSkKIAogICAgIGF1dG8gdGVzdFF1ZXVl
ID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwogCi0gICAgYXV0byBtb25p
dG9yID0gc3RkOjptYWtlX3VuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRoKCksIHRlc3RR
dWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUgdHlwZSkgewor
ICAgIGF1dG8gbW9uaXRvciA9IG1ha2VVbmlxdWU8RmlsZU1vbml0b3I+KHRlbXBGaWxlUGF0aCgp
LCB0ZXN0UXVldWUuY29weVJlZigpLCBbXSAoRmlsZU1vbml0b3I6OkZpbGVDaGFuZ2VUeXBlIHR5
cGUpIHsKICAgICAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIHN3aXRj
aCAodHlwZSkgewogICAgICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGU6
Ok1vZGlmaWNhdGlvbjoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jdXJsL0Nvb2tpZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2N1cmwvQ29va2llcy5jcHAKaW5kZXggOTJkOGExOTJjYTdiMmExMDgxNTY1OTk3YjBlYTViMWY5
YWVhOGY2NS4uMjE5ZTk2NmRiZWJhYTg0ZDM2MDI3MjJlOTU5ZTMyZjY0ZmI0ZGIyZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgQ3VybENvb2tpZXM6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKICAgICB7CiAgICAgICAgIG1fY29va2llRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KCk7CiAKLSAgICAgICAgbV9jb29raWVKYXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkNvcmU6OkNvb2tpZUphckRCPihGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9jb29raWVEaXJlY3RvcnksICJjb29raWVkYi5zcWwiKSk7CisgICAgICAgIG1f
Y29va2llSmFyID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2llZGIuc3Fs
IikpOwogICAgICAgICBtX2Nvb2tpZUphci0+b3BlbigpOwogICAgICAgICBtX2Nvb2tpZUphci0+
c2V0QWNjZXB0UG9saWN5KENvb2tpZUFjY2VwdFBvbGljeTo6QWx3YXlzKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9DbG9zZUZyb21XaXRoaW5D
cmVhdGVQYWdlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJv
bVdpdGhpbkNyZWF0ZVBhZ2UuY3BwCmluZGV4IDVjMGFlMzMxMzI4YjM2YjBiYTcwYTE4ZDk5MzY2
OTQxMmFjYTI5YTkuLmIzYjNiYzNjZjQ5ZDc4NTQzMDU4NDlkZGExMjEyZjE5MzJhMGQyMGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Nsb3NlRnJvbVdpdGhp
bkNyZWF0ZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Ns
b3NlRnJvbVdpdGhpbkNyZWF0ZVBhZ2UuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBXS1Bh
Z2VSZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJl
cXVlc3QsIFdLRGljCiB7CiAgICAgRVhQRUNUX1RSVUUob3BlbmVkV2ViVmlldyA9PSBudWxscHRy
KTsKIAotICAgIG9wZW5lZFdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmll
dz4ocGFnZSk7CisgICAgb3BlbmVkV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3
PihwYWdlKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50VjUgdWlDbGllbnQ7CiAgICAgbWVtc2V0KCZ1
aUNsaWVudCwgMCwgc2l6ZW9mKHVpQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9Nb2RhbEFsZXJ0c1NQSS5jcHAKaW5kZXggYTRmYmExMjdjNmU0ZDAz
ZTYzZDlhODE3MmEzOWIzY2I4YjE0NzJjNy4uN2JjMzUyNGYyYmRiOWRiZDdhNDM1YTNjYzZhZDM4
MzJlOTQ0ZWRkNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
TW9kYWxBbGVydHNTUEkuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L01vZGFsQWxlcnRzU1BJLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBXS1BhZ2VSZWYg
Y3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3Qs
IFdLRGljCiB7CiAgICAgRVhQRUNUX1RSVUUob3BlbmVkV2ViVmlldyA9PSBudWxscHRyKTsKIAot
ICAgIG9wZW5lZFdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtV2ViVmlldz4ocGFn
ZSk7CisgICAgb3BlbmVkV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3PihwYWdl
KTsKIAogICAgIFdLUGFnZVVJQ2xpZW50VjUgdWlDbGllbnQ7CiAgICAgbWVtc2V0KCZ1aUNsaWVu
dCwgMCwgc2l6ZW9mKHVpQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVGV4dEZpZWxkRGlkQmVnaW5BbmRFbmRFZGl0aW5n
LmNwcAppbmRleCAwZjdmZDQwYTYzZTVlY2Y3OGM5NjhkZjgwMzhkMTkyMjFlZGJmN2Q1Li5jZDE5
ZDdjZGU1ODg5NjI1ZjEyMjEyZmM3NTNjZmQ1NWUyNzhkOTIzIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9UZXh0RmllbGREaWRCZWdpbkFuZEVuZEVkaXRpbmcu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1RleHRGaWVsZERpZEJl
Z2luQW5kRW5kRWRpdGluZy5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgc3RydWN0IFdlYktpdDJUZXh0
RmllbGRCZWdpbkFuZEVkaXRFZGl0aW5nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3Qgewog
ICAgICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6
OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlRleHRGaWVsZERpZEJlZ2luQW5k
RW5kRWRpdGluZ0V2ZW50c1Rlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50
KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCi0gICAgICAgIHdlYlZpZXcgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CisgICAgICAgIHdlYlZpZXcgPSBt
YWtlVW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIHNldFBh
Z2VMb2FkZXJDbGllbnQod2ViVmlldy0+cGFnZSgpLCB0aGlzKTsKIAogICAgICAgICBkaWRGaW5p
c2hMb2FkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9Vc2VyTWVzc2FnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9V
c2VyTWVzc2FnZS5jcHAKaW5kZXggYzdiMDI1MWJmY2YyMWFhNGFiZDExNGM4NTUwNzkyNDFkNjYx
NzRlOS4uOWRjM2E2ZGE5OTUwOWMyNzExMjFkNGMzYTQ1MzA4NGZlZTk4OWJkNyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvVXNlck1lc3NhZ2UuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZXNzYWdlLmNwcApAQCAtOTMs
NyArOTMsNyBAQCBjbGFzcyBXZWJLaXQyVXNlck1lc3NhZ2VSb3VuZFRyaXBUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CiAgICAgICAgIGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0
ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlVzZXJNZXNzYWdlVGVzdCIpKTsKICAgICAg
ICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwgdGhpcyk7CiAKLSAgICAg
ICAgd2ViVmlldyA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250ZXh0Lmdl
dCgpKTsKKyAgICAgICAgd2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb250
ZXh0LmdldCgpKTsKICAgICAgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LT5wYWdlKCks
IHRoaXMpOwogCiAgICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dpbGxMb2FkLmNwcAppbmRleCBlZDlmMGZmYzcwMjVhYjEy
Y2I1Mzk2N2Y3MjA1ZmY5NmM4OWJlNjk5Li41MmYxOGRjZWI0MmQ1MWFjMDgzOTViNjIwMDFkNGE5
NTQwZjc0NTJkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9X
aWxsTG9hZC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV2lsbExv
YWQuY3BwCkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIFdlYktpdDJXaWxsTG9hZFRlc3QgOiBwdWJs
aWMgOjp0ZXN0aW5nOjpUZXN0IHsKICAgICAgICAgY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3Jl
YXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiV2lsbExvYWRUZXN0IikpOwogICAgICAg
ICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsKIAotICAgICAg
ICB3ZWJWaWV3ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRleHQuZ2V0
KCkpOworICAgICAgICB3ZWJWaWV3ID0gbWFrZVVuaXF1ZTxQbGF0Zm9ybVdlYlZpZXc+KGNvbnRl
eHQuZ2V0KCkpOwogCiAgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlID0gZmFsc2U7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0ZvcmNlTGln
aHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvbWFjL0ZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tCmluZGV4
IGFlYmExYzM0OGZiYzY2YTE3MGU1MzllMGE3Mjg2YWVlOTE1M2U2MDQuLjg5OTUzZDliY2JlNTNi
OWVjYmE1ZWUyY2I5YzEzMTk4ODQ2Zjk2YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L21hYy9Gb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvRm9yY2VMaWdodEFw
cGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxX
ZWJLaXQvV0tCdW5kbGVGcmFtZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVBhZ2UuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKQEAgLTcwLDcgKzcx
LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IGFkb3B0KEpTVmFsdWVU
b1N0cmluZ0NvcHkoc2NyaXB0Q29udGV4dCwgcmVzdWx0LCBudWxscHRyKSk7CiAKICAgICAgICAg
YXV0byBidWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHJlc3Vs
dFN0cmluZy5nZXQoKSk7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxj
aGFyW10+KGJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJh
eTxjaGFyPihidWZmZXJTaXplKTsKICAgICAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhyZXN1
bHRTdHJpbmcuZ2V0KCksIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAKICAgICAgICAgV0tC
dW5kbGVQYWdlU2V0VXNlRGFya0FwcGVhcmFuY2UobV9wYWdlLCB0cnVlKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24u
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNh
dGlvbi5jcHAKaW5kZXggNDBjYTM0ODAwY2M0OTcwMjRlYTg1ZWY4OTAyNGU3Nzg0YTExOTA4Yy4u
N2M4YzhiNTIxNTRhYzRlYjA5OGU2OTUxNzkwNjlhMDVlYmRjNjZhYyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNh
dGlvbi5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhT
b3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogewog
ICAgIGlmIChtZXNzYWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfQ09OTkVDVCkgewogICAgICAg
ICBnX2Fzc2VydF9jbXB1aW50KHNvdXBfc2VydmVyX2dldF9wb3J0KHNlcnZlciksID09LCBnUHJv
eHlTZXJ2ZXJQb3J0KTsKLSAgICAgICAgYXV0byB0dW5uZWwgPSBzdGQ6Om1ha2VfdW5pcXVlPFR1
bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKKyAgICAgICAgYXV0byB0dW5uZWwgPSBtYWtlVW5pcXVl
PFR1bm5lbD4oc2VydmVyLCBtZXNzYWdlKTsKICAgICAgICAgYXV0byogdHVubmVsUHRyID0gdHVu
bmVsLmdldCgpOwogICAgICAgICB0dW5uZWxQdHItPmNvbm5lY3QoW3R1bm5lbCA9IFdURk1vdmUo
dHVubmVsKV0oY29uc3QgY2hhciogZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICBpZiAoZXJy
b3JNZXNzYWdlKSB7CkBAIC0zOTUsNyArMzk1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdB
dXRoZW50aWNhdGlvblByb3h5KFByb3h5QXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3QK
IAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5SFRUUFMoUHJveHlB
dXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgYXV0byBodHRw
c1NlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0VGVzdFNlcnZlcj4oV2ViS2l0VGVzdFNl
cnZlcjo6U2VydmVySFRUUFMpOworICAgIGF1dG8gaHR0cHNTZXJ2ZXIgPSBtYWtlVW5pcXVlPFdl
YktpdFRlc3RTZXJ2ZXI+KFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFBTKTsKICAgICBodHRw
c1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKIAogICAgIHRlc3QtPmxvYWRVUkkoaHR0cHNT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9wcm94eS9hdXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5k
b3dUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdp
bmRvd1Rlc3QuY3BwCmluZGV4IDEyNTYyNDE5NmE3MWM2ZDNhZDViY2RkMjlmMTQyYjg2YWJiOWZk
MTEuLmU0MDAwNzYzM2YyMzYyNDA1MjlkZjU0YWU4NjMyMDg3YmQzNjk1MmYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rl
c3QuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBjbGlja2VkQ2FsbGJhY2so
V2ViS2l0RE9NRE9NV2luZG93KiwgV2ViS2l0RE9NRXZlbnQqLCBXZWJLaXRET01ECiAKIGNsYXNz
IFdlYktpdERPTURPTVdpbmRvd1Rlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJu
IG1ha2VVbmlxdWU8V2ViS2l0RE9NRE9NV2luZG93VGVzdD4oKTsgfQogCiBwcml2YXRlOgogICAg
IGd1aW50NjQgd2ViUGFnZUZyb21BcmdzKEdWYXJpYW50KiBhcmdzKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCmluZGV4IDhkMmVl
OGFkMTZjYWQ2Nzk1NjhlZDliNmQ3NWNlY2Q4MjE1MGZlZGIuLmQzNWJjOGMzNmQ2MGNjZGM1ZDU1
NGU1OWJiZjIyYTFiMWQ4MDdlZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5h
bWVzcGFjZSBVdGlsIHsKQEAgLTM4LDcgKzM5LDcgQEAgc3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJp
bmcgKnN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CiAKICAgICBzaXplX3Qg
YnVmZmVyU2l6ZSA9IFtzdHJpbmcgbGVuZ3RoT2ZCeXRlc1VzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KGJ1ZmZlclNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKICAgICBOU1VJbnRlZ2VyIHN0cmluZ0xlbmd0
aDsKICAgICBbc3RyaW5nIGdldEJ5dGVzOmJ1ZmZlci5nZXQoKSBtYXhMZW5ndGg6YnVmZmVyU2l6
ZSB1c2VkTGVuZ3RoOiZzdHJpbmdMZW5ndGggZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmcg
b3B0aW9uczowIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgcmVtYWluaW5n
UmFuZ2U6MF07CiAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCBj
NGJhY2QwNTNjM2NmM2U0Nzg0Mzk0MjhjYjEzNDQzY2JmYThjN2ZlLi4xZGJhNzYwMTdmMTY2ZWIx
ZDkyZGU1MWE2YmJmMDUxNTNkMjdhZDA5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tCkBAIC0yOTQsNyArMjk0LDcgQEAgc3RhdGljIHZvaWQgYXBwbHlXb3Jr
YXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5nc1RvSXRlbVByb3ZpZGVycygpCiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBzd2l6emxlcjsK
ICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNl
KCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHN3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxDbGFz
c01ldGhvZFN3aXp6bGVyPihOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0
YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
Pih3cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNSVEZE
KSk7CisgICAgICAgIHN3aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihO
U0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3MsIEBzZWxlY3Rvcih3cml0YWJsZVR5cGVJZGVudGlmaWVy
c0Zvckl0ZW1Qcm92aWRlciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPih3cml0YWJsZVR5cGVJZGVu
dGlmaWVyc0Zvckl0ZW1Qcm92aWRlcldpdGhvdXRQdWJsaWNSVEZEKSk7CiAgICAgfSk7CiB9CiAK
QEAgLTM0Nyw3ICszNDcsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNl
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIGZpeGVkLgotICAgIF9zaGFyZWRDYWxs
b3V0QmFyU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtV
SUNhbGxvdXRCYXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOworICAgIF9zaGFyZWRDYWxsb3V0
QmFyU3dpenpsZXIgPSBtYWtlVW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtVSUNhbGxvdXRC
YXIgY2xhc3NdLCBAc2VsZWN0b3Ioc2hhcmVkQ2FsbG91dEJhciksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihzdXBwcmVzc1VJQ2FsbG91dEJhcikpOwogICAgIF9pbnB1dFNlc3Npb25DaGFuZ2VDb3Vu
dCA9IDA7CiAgICAgYXBwbHlXb3JrYXJvdW5kVG9BbGxvd1dyaXRpbmdBdHRyaWJ1dGVkU3RyaW5n
c1RvSXRlbVByb3ZpZGVycygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0
Rm9udE9wdGlvbnMubW0KaW5kZXggODYyNjM1NDQzMzVhN2Y1ZDk3MWI1ZGMwZDI1OWU1NWRjMGQ3
M2M2Ni4uNGJkZTZjNTEwMGQyYmQ2ZmU0YmI5MGZhY2JlMjVkMzM5YTUwNTRiYiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpAQCAtODQsNyArODQsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRP
cHRpb25zCiAKICAgICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXplWmVybzsKICAgICBfc2hhZG93Qmx1
clJhZGl1cyA9IDA7Ci0gICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVyID0gc3RkOjptYWtl
X3VuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9w
dGlvbnMiKSwgQHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRlcnByZXRfY2FzdDxJ
TVA+KHNoYXJlZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOworICAgIF9yZXBsYWNlRm9udE9wdGlv
bnNTd2l6emxlciA9IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oTlNDbGFzc0Zyb21T
dHJpbmcoQCJOU0ZvbnRPcHRpb25zIiksIEBzZWxlY3RvcihzaGFyZWRGb250T3B0aW9ucyksIHJl
aW50ZXJwcmV0X2Nhc3Q8SU1QPihzaGFyZWRGb250T3B0aW9uc0ZvclRlc3RpbmcpKTsKICAgICBf
aGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMgPSBOTzsKICAgICBfaGFzTXVsdGlwbGVGb250cyA9IE5P
OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRleCBkNDYxNzE0M2VlZDFkYThh
ODJjYjRlMGIwMDlmNmRlNGRlMDEzNzk2Li5jOWE1MmMxNWY3NzA4MzA2ODNjOGVmZjY4OTQyOWJk
MGJjMWY1NjQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKQEAgLTY0OCw3ICs2
NDgsNyBAQCB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6OmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbAogICAgIAogICAgIEpTVmFsdWVQcm90ZWN0
KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogCi0gICAgYXV0byBzY3JvbGxDb21w
bGV0aW9uQ2FsbGJhY2tEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxDb21wbGV0aW9uQ2Fs
bGJhY2tEYXRhPihjb250ZXh0LCBmdW5jdGlvbkNhbGxiYWNrT2JqZWN0KTsKKyAgICBhdXRvIHNj
cm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGEgPSBtYWtlVW5pcXVlPFNjcm9sbENvbXBsZXRpb25D
YWxsYmFja0RhdGE+KGNvbnRleHQsIGZ1bmN0aW9uQ2FsbGJhY2tPYmplY3QpOwogICAgIGF1dG8g
c2Nyb2xsQ29tcGxldGlvbkNhbGxiYWNrRGF0YVB0ciA9IHNjcm9sbENvbXBsZXRpb25DYWxsYmFj
a0RhdGEucmVsZWFzZSgpOwogICAgIGJvb2wgY2FsbGJhY2tXaWxsQmVDYWxsZWQgPSBXS0J1bmRs
ZVBhZ2VSZWdpc3RlclNjcm9sbE9wZXJhdGlvbkNvbXBsZXRpb25DYWxsYmFjayhwYWdlLCBleGVj
dXRlQ2FsbGJhY2ssIHNjcm9sbENvbXBsZXRpb25DYWxsYmFja0RhdGFQdHIpOwogICAgIGlmICgh
Y2FsbGJhY2tXaWxsQmVDYWxsZWQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNzExNmNjOTgxNTY2
OWQ5NDk0ZGJmOGRlNDhiYWVlY2Q2Mzc0YzM3Ni4uODNiMmIzMGIxMzMyZWM3N2JmZWZjYzI5ZmRk
MWEyZTQ4M2NiNWYyMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVm
IGluaXRpYWxpemF0aW9uVXNlcgogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSkKIHsKICAgICBib29sIGlzTWFpblBhZ2UgPSBtX3BhZ2VzLmlz
RW1wdHkoKTsKLSAgICBtX3BhZ2VzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluamVjdGVkQnVu
ZGxlUGFnZT4ocGFnZSkpOworICAgIG1fcGFnZXMuYXBwZW5kKG1ha2VVbmlxdWU8SW5qZWN0ZWRC
dW5kbGVQYWdlPihwYWdlKSk7CiAKICAgICBzZXRVcEluamVjdGVkQnVuZGxlQ2xpZW50cyhwYWdl
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKaW5kZXggNTI3NTY2ZGMzZjg0YTdkYjQyMjMzNDdmZDYxYzNiMjUzODZlNGY3
My4uMTNlNjUzMTA2YjQxMGI4OTY1NzFjZDEwMDBlYmU2MjM5MWNhNDI1YSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBA
IC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaD4KQEAgLTIzOTgsNyArMjM5OSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0T3BlblBhbmVsRmlsZXMoSlNWYWx1ZVJlZiBmaWxlc1ZhbHVlKQogCiAgICAgICAgIGF1dG8g
ZmlsZSA9IGFkb3B0KEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgZmlsZVZhbHVlLCBudWxs
cHRyKSk7CiAgICAgICAgIHNpemVfdCBmaWxlQnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShmaWxlLmdldCgpKSArIDE7Ci0gICAgICAgIGF1dG8gZmlsZUJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmaWxlQnVmZmVyU2l6ZSk7CisgICAgICAgIGF1
dG8gZmlsZUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihmaWxlQnVmZmVyU2l6ZSk7CiAg
ICAgICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoZmlsZS5nZXQoKSwgZmlsZUJ1ZmZlci5nZXQo
KSwgZmlsZUJ1ZmZlclNpemUpOwogCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGZpbGVVUkxz
LmdldCgpLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aEJhc2VVUkwobV90ZXN0VVJMLmdldCgpLCBm
aWxlQnVmZmVyLmdldCgpKSkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRrLmNwcAppbmRleCAwZTVjMDdjYTcyOWI2ZGZjYjM4YzgwNDI2ZDM5MjQ0ZTMyYzAw
MTdjLi5kMzU2M2EyMTYwOTEzNzA5ZWFhODA2NTA2MjNmY2ZmZDgzYTYyOGQzIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZUZyYW1lLmg+CiAjaW5jbHVkZSA8YXRrL2F0ay5oPgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlx
dWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC03MzAsNyArNzMxLDcg
QEAgc3RhdGljIEpTVmFsdWVSZWYgY29udmVydFRvSlNPYmplY3RBcnJheShjb25zdCBWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW0KICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdL
QnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwogCiAgICAgc2l6ZV90
IGVsZW1lbnRDb3VudCA9IGNoaWxkcmVuLnNpemUoKTsKLSAgICBhdXRvIHZhbHVlRWxlbWVudHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEpTVmFsdWVSZWZbXT4oZWxlbWVudENvdW50KTsKKyAgICBhdXRv
IHZhbHVlRWxlbWVudHMgPSBtYWtlVW5pcXVlQXJyYXk8SlNWYWx1ZVJlZj4oZWxlbWVudENvdW50
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgaSsrKQogICAgICAg
ICB2YWx1ZUVsZW1lbnRzW2ldID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIGNoaWxkcmVuW2ldLT53
cmFwcGVyQ2xhc3MoKSwgY2hpbGRyZW5baV0uZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9TdHJpbmdGdW5jdGlvbnMuaAppbmRleCBkYWYxNGNhNzA1NDg2YmZjMjA2NDMxMjNkZTUwOTFi
NzllNWQwMTMxLi5lNmVkN2U5NmEyM2U0NWJjNWVlOGQxNGUyYWJjMjlmYTg4ZDQ3OGZjIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmgKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03Myw3ICs3NCw3IEBAIGlubGluZSBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gdG9KUyhjb25zdCBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4mIHN0
cmluZykKIGlubGluZSBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcpCiB7CiAg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUo
c3RyaW5nKTsKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihidWZm
ZXJTaXplKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0No
ZWNrPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IFdLU3Ry
aW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUpOwogICAg
IHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwogfQpA
QCAtODYsNyArODcsNyBAQCBpbmxpbmUgc3RkOjpzdHJpbmcgdG9TVEQoY29uc3QgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+JiBzdHJpbmcpCiBpbmxpbmUgV1RGOjpTdHJpbmcgdG9XVEZTdHJpbmco
V0tTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdH
ZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOwogICAgIHNp
emVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KHN0cmlu
ZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gV1RGOjpTdHJpbmc6OmZy
b21VVEY4V2l0aExhdGluMUZhbGxiYWNrKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGVhOGFm
YjVmNGVmODRlNGEyZGRmMjg2NGExYWU5Zjc3NWZjZTM3NDcuLmQ2OTRlMTZkNzJmMTVjMzBlN2Ez
Y2JmODU1Y2U1OTkzYzc4MDhjMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC04Miw2ICs4Miw3IEBACiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIApAQCAtNDc5LDcg
KzQ4MCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0
IGNoYXIqIGFyZ3ZbXSkKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gcGFnZUdyb3VwSWRl
bnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIldlYktpdFRl
c3RSdW5uZXJQYWdlR3JvdXAiKSk7CiAgICAgbV9wYWdlR3JvdXAuYWRvcHQoV0tQYWdlR3JvdXBD
cmVhdGVXaXRoSWRlbnRpZmllcihwYWdlR3JvdXBJZGVudGlmaWVyLmdldCgpKSk7CiAKLSAgICBt
X2V2ZW50U2VuZGVyUHJveHkgPSBzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRo
aXMpOworICAgIG1fZXZlbnRTZW5kZXJQcm94eSA9IG1ha2VVbmlxdWU8RXZlbnRTZW5kZXJQcm94
eT4odGhpcyk7CiB9CiAKIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+IFRl
c3RDb250cm9sbGVyOjpnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRp
b25zOjpDb250ZXh0T3B0aW9ucyYgb3B0aW9ucykgY29uc3QKQEAgLTUyMSw3ICs1MjIsNyBAQCBX
S1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBUZXN0Q29udHJvbGxlcjo6Z2VuZXJh
dGVQYWdlQ29uZmlndXJhdGlvbihjbwogICAgICAgICBtX2NvbnRleHQgPSBwbGF0Zm9ybUFkanVz
dENvbnRleHQoYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb250ZXh0
Q29uZmlndXJhdGlvbi5nZXQoKSkpLmdldCgpLCBjb250ZXh0Q29uZmlndXJhdGlvbi5nZXQoKSk7
CiAgICAgICAgIG1fY29udGV4dE9wdGlvbnMgPSBvcHRpb25zLmNvbnRleHRPcHRpb25zOwogCi0g
ICAgICAgIG1fZ2VvbG9jYXRpb25Qcm92aWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R2VvbG9jYXRp
b25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIG1fZ2VvbG9jYXRpb25Q
cm92aWRlciA9IG1ha2VVbmlxdWU8R2VvbG9jYXRpb25Qcm92aWRlck1vY2s+KG1fY29udGV4dC5n
ZXQoKSk7CiAKICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGR1bXBSZW5kZXJUcmVlVGVtcCA9IGxp
YnJhcnlQYXRoRm9yVGVzdGluZygpKSB7CiAgICAgICAgICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9s
ZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwpAQCAtOTU0LDcgKzk1
NSw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMo
Y29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rp
b24gc2hvdWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgog
CiAgICAgLy8gUmVzZXQgdGhlIEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCi0gICAgbV9ldmVu
dFNlbmRlclByb3h5ID0gc3RkOjptYWtlX3VuaXF1ZTxFdmVudFNlbmRlclByb3h5Pih0aGlzKTsK
KyAgICBtX2V2ZW50U2VuZGVyUHJveHkgPSBtYWtlVW5pcXVlPEV2ZW50U2VuZGVyUHJveHk+KHRo
aXMpOwogCiAgICAgLy8gRklYTUU6IElzIHRoaXMgbmVlZGVkPyBOb3RoaW5nIGluIFRlc3RDb250
cm9sbGVyIGNoYW5nZXMgcHJlZmVyZW5jZXMgZHVyaW5nIHRlc3RzLCBhbmQgaWYgdGhlcmUgaXMK
ICAgICAvLyBzb21lIG90aGVyIGNvZGUgZG9pbmcgdGhpcywgaXQgc2hvdWxkIHByb2JhYmx5IGJl
IHJlc3BvbnNpYmxlIGZvciBjbGVhbnVwIHRvby4KQEAgLTEyMzUsMTMgKzEyMzYsMTMgQEAgc3Rh
dGljIFdLVVJMUmVmIGNyZWF0ZVRlc3RVUkwoY29uc3QgY2hhciogcGF0aE9yVVJMKQogICAgIGNv
bnN0IGNoYXIqIGZpbGVQcmVmaXggPSAiZmlsZTovLyI7CiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBwcmVmaXhMZW5ndGggPSBzdHJsZW4oZmlsZVByZWZpeCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y2hhcltdPiBidWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gYnVmZmVyOwogICAgIGlm
IChpc0Fic29sdXRlUGF0aCkgewotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNo
YXJbXT4ocHJlZml4TGVuZ3RoICsgbGVuZ3RoICsgMSk7CisgICAgICAgIGJ1ZmZlciA9IG1ha2VV
bmlxdWVBcnJheTxjaGFyPihwcmVmaXhMZW5ndGggKyBsZW5ndGggKyAxKTsKICAgICAgICAgc3Ry
Y3B5KGJ1ZmZlci5nZXQoKSwgZmlsZVByZWZpeCk7CiAgICAgICAgIHN0cmNweShidWZmZXIuZ2V0
KCkgKyBwcmVmaXhMZW5ndGgsIHBhdGhPclVSTCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIFBBVEhfTUFYICsg
bGVuZ3RoICsgMik7IC8vIDEgZm9yIHRoZSBwYXRoU2VwYXJhdG9yCisgICAgICAgIGJ1ZmZlciA9
IG1ha2VVbmlxdWVBcnJheTxjaGFyPihwcmVmaXhMZW5ndGggKyBQQVRIX01BWCArIGxlbmd0aCAr
IDIpOyAvLyAxIGZvciB0aGUgcGF0aFNlcGFyYXRvcgogICAgICAgICBzdHJjcHkoYnVmZmVyLmdl
dCgpLCBmaWxlUHJlZml4KTsKICAgICAgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmdldCgpICsgcHJl
Zml4TGVuZ3RoLCBQQVRIX01BWCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTE2NTEsNyAr
MTY1Miw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJ1blRlc3QoY29uc3QgY2hhciogaW5wdXRM
aW5lKQogICAgIFRlc3RPcHRpb25zIG9wdGlvbnMgPSB0ZXN0T3B0aW9uc0ZvclRlc3QoY29tbWFu
ZCk7CiAKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tVUkwgPSBhZG9wdFdLKGNyZWF0ZVRl
c3RVUkwoY29tbWFuZC5wYXRoT3JVUkwuY19zdHIoKSkpOwotICAgIG1fY3VycmVudEludm9jYXRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RJbnZvY2F0aW9uPih3a1VSTC5nZXQoKSwgb3B0aW9u
cyk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbiA9IG1ha2VVbmlxdWU8VGVzdEludm9jYXRpb24+
KHdrVVJMLmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChjb21tYW5kLnNob3VsZER1bXBQaXhl
bHMgfHwgbV9zaG91bGREdW1wUGl4ZWxzRm9yQWxsVGVzdHMpCiAgICAgICAgIG1fY3VycmVudElu
dm9jYXRpb24tPnNldElzUGl4ZWxUZXN0KGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwpAQCAt
Mjk2Myw3ICsyOTY0LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVz
dChjb25zdCBUZXN0SW52b2NhdGlvbiYpCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
Q3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0
IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFBsYXRmb3JtV2ViVmlldz4oY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CisgICAgbV9t
YWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb25maWd1cmF0aW9uLCBv
cHRpb25zKTsKIH0KIAogUGxhdGZvcm1XZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1D
cmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBhNWFlYTIxYzA5MDAw
NTllNzlmYTdkMTJiZmExNWZkODE5ZDE2YjZhLi5mODFmMGI5NDY5NTc2ZDM2MTAyNmQzNTZlZmM0
ODFiYTlmNzk5ZjBkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTY5MCw3ICsxNjkwLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6cnVuVUlTaWRlU2Ny
aXB0KFdLU3RyaW5nUmVmIHNjcmlwdCwgdW5zaWduZWQgc2NyaXB0Q2FsbGJhY2sKICAgICBtX3Bl
bmRpbmdVSVNjcmlwdEludm9jYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmICghbV9VSVNj
cmlwdENvbnRleHQpCi0gICAgICAgIG1fVUlTY3JpcHRDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxVSVNjcmlwdENvbnRleHQ+KCp0aGlzKTsKKyAgICAgICAgbV9VSVNjcmlwdENvbnRleHQgPSBt
YWtlVW5pcXVlPFVJU2NyaXB0Q29udGV4dD4oKnRoaXMpOwogICAgIAogICAgIG1fVUlTY3JpcHRD
b250ZXh0LT5ydW5VSVNjcmlwdCh0b1dURlN0cmluZyhzY3JpcHQpLCBzY3JpcHRDYWxsYmFja0lE
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbQppbmRleCAwZmJmOGVhNTIzZDM0OGQyNTZlY2M1MjMwNDJkZWEwMmZlY2RkMWRj
Li4wZWJmN2JmZDAwMzlmNGVmODA5MzJjMWViNTE5MmZmNTRlZTNjNGEzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0x
NjgsNyArMTY4LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKICAgICAgICAgW2NvcGllZENv
bmZpZ3VyYXRpb24gX3NldEFwcGxpY2F0aW9uTWFuaWZlc3Q6W19XS0FwcGxpY2F0aW9uTWFuaWZl
c3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOnRleHQgbWFuaWZlc3RVUkw6bmlsIGRvY3Vt
ZW50VVJMOm5pbF1dOwogICAgIH0KIAotICAgIG1fbWFpbldlYlZpZXcgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtV2ViVmlldz4oY29waWVkQ29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7
CisgICAgbV9tYWluV2ViVmlldyA9IG1ha2VVbmlxdWU8UGxhdGZvcm1XZWJWaWV3Pihjb3BpZWRD
b25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKICAgICBmaW5pc2hDcmVhdGluZ1BsYXRmb3Jt
V2ViVmlldyhtX21haW5XZWJWaWV3LmdldCgpLCBvcHRpb25zKTsKIAogICAgIGlmIChvcHRpb25z
LnB1bmNoT3V0V2hpdGVCYWNrZ3JvdW5kc0luRGFya01vZGUpCkBAIC0yMjYsNyArMjI2LDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0RGVmYXVsdENhbGVuZGFyVHlwZShOU1N0cmluZyAqaWRl
bnRpZmllcikKIHsKICAgICBtX292ZXJyaWRkZW5DYWxlbmRhcklkZW50aWZpZXIgPSBpZGVudGlm
aWVyOwogICAgIGlmICghbV9jYWxlbmRhclN3aXp6bGVyKQotICAgICAgICBtX2NhbGVuZGFyU3dp
enpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0NhbGVuZGFy
IGNsYXNzXSwgQHNlbGVjdG9yKGN1cnJlbnRDYWxlbmRhciksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
Pihzd2l6emxlZENhbGVuZGFyKSk7CisgICAgICAgIG1fY2FsZW5kYXJTd2l6emxlciA9IG1ha2VV
bmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TQ2FsZW5kYXIgY2xhc3NdLCBAc2VsZWN0b3Io
Y3VycmVudENhbGVuZGFyKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkQ2FsZW5kYXIp
KTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRDb250ZW50RXh0ZW5zaW9ucygpCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9FdmVudFNlbmRlclByb3h5R3Rr
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3Bw
CmluZGV4IGRlNTc4ZjczZmMzNmVjZDE1ODljOTlmOGRiZjhmY2NjMzk4N2I0MmUuLmIxN2VjYThm
ZjhkMjIxMTM1ZTJkNmI2MWM2MzVhNDE1MGJkM2EzYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL0V2ZW50U2VuZGVyUHJveHlHdGsuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMjcxLDcgKzI3Miw3IEBAIGludCBnZXRHREtLZXlTeW1Gb3JLZXlSZWYo
V0tTdHJpbmdSZWYga2V5UmVmLCB1bnNpZ25lZCBsb2NhdGlvbiwgZ3VpbnQqIG1vZGlmaWVyCiAg
ICAgICAgIHJldHVybiBHREtfS0VZX0YxMjsKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tT
dHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGtleVJlZik7Ci0gICAgYXV0byBidWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oYnVmZmVyU2l6ZSk7CisgICAgYXV0byBidWZmZXIg
PSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oYnVmZmVyU2l6ZSk7CiAgICAgV0tTdHJpbmdHZXRVVEY4
Q1N0cmluZyhrZXlSZWYsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CiAgICAgY2hhciBjaGFy
Q29kZSA9IGJ1ZmZlci5nZXQoKVswXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9UZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCA2YTYxZGY4ZTM1ZDZmYTA4YzhiMTRjNTFhODIz
YzYyZDA4MDVkNGQyLi5mM2M0MTdjN2ZiN2NhYTRkZTQ3NzdjN2E0OTRmNTNhZjMyYTE4YmZkIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQpA
QCAtMTUxLDggKzE1MSw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0
ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0CiAKICAgICBtX3ByZXNl
bnRQb3BvdmVyU3dpenpsZXJzLmNsZWFyKCk7CiAgICAgaWYgKCFvcHRpb25zLnNob3VsZFByZXNl
bnRQb3BvdmVycykgewotICAgICAgICBtX3ByZXNlbnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KFtVSVZpZXdDb250cm9sbGVy
IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0
aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVByZXNlbnRWaWV3Q29udHJvbGxl
ck9yUG9wb3ZlcikpKTsKLSAgICAgICAgbV9wcmVzZW50UG9wb3ZlclN3aXp6bGVycy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihbVUlQb3BvdmVyQ29udHJv
bGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21SZWN0OmluVmlldzpwZXJt
aXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOworICAgICAgICBtX3ByZXNl
bnRQb3BvdmVyU3dpenpsZXJzLmFwcGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenps
ZXI+KFtVSVZpZXdDb250cm9sbGVyIGNsYXNzXSwgQHNlbGVjdG9yKHByZXNlbnRWaWV3Q29udHJv
bGxlcjphbmltYXRlZDpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZVByZXNlbnRWaWV3Q29udHJvbGxlck9yUG9wb3ZlcikpKTsKKyAgICAgICAgbV9wcmVzZW50UG9w
b3ZlclN3aXp6bGVycy5hcHBlbmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihb
VUlQb3BvdmVyQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3RvcihwcmVzZW50UG9wb3ZlckZyb21S
ZWN0OmluVmlldzpwZXJtaXR0ZWRBcnJvd0RpcmVjdGlvbnM6YW5pbWF0ZWQ6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlUHJlc2VudFZpZXdDb250cm9sbGVyT3JQb3BvdmVyKSkpOwog
ICAgIH0KICAgICAKICAgICBCT09MIHNob3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRlciA9IE5POwpA
QCAtMjY5LDkgKzI2OSw5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEtleWJvYXJkSW5wdXRN
b2RlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICAgICBhdXRvIGNvbnRy
b2xsZXJDbGFzcyA9IFVJS2V5Ym9hcmRJbnB1dE1vZGVDb250cm9sbGVyLmNsYXNzOwogICAgIG1f
aW5wdXRNb2RlU3dpenpsZXJzLnJlc2VydmVDYXBhY2l0eSgzKTsKLSAgICBtX2lucHV0TW9kZVN3
aXp6bGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBzZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVDdXJyZW50SW5wdXRNb2RlKSkpOwotICAgIG1faW5w
dXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3RhbmNl
TWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywgQHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1v
ZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1
dE1vZGUpKSk7Ci0gICAgbV9pbnB1dE1vZGVTd2l6emxlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29udHJvbGxlckNsYXNzLCBAc2Vs
ZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlQWN0
aXZlSW5wdXRNb2RlcykpKTsKKyAgICBtX2lucHV0TW9kZVN3aXp6bGVycy51bmNoZWNrZWRBcHBl
bmQobWFrZVVuaXF1ZTxJbnN0YW5jZU1ldGhvZFN3aXp6bGVyPihjb250cm9sbGVyQ2xhc3MsIEBz
ZWxlY3RvcihjdXJyZW50SW5wdXRNb2RlKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVD
dXJyZW50SW5wdXRNb2RlKSkpOworICAgIG1faW5wdXRNb2RlU3dpenpsZXJzLnVuY2hlY2tlZEFw
cGVuZChtYWtlVW5pcXVlPEluc3RhbmNlTWV0aG9kU3dpenpsZXI+KGNvbnRyb2xsZXJDbGFzcywg
QHNlbGVjdG9yKGN1cnJlbnRJbnB1dE1vZGVJblByZWZlcmVuY2UpLCByZWludGVycHJldF9jYXN0
PElNUD4oc3dpenpsZUN1cnJlbnRJbnB1dE1vZGUpKSk7CisgICAgbV9pbnB1dE1vZGVTd2l6emxl
cnMudW5jaGVja2VkQXBwZW5kKG1ha2VVbmlxdWU8SW5zdGFuY2VNZXRob2RTd2l6emxlcj4oY29u
dHJvbGxlckNsYXNzLCBAc2VsZWN0b3IoYWN0aXZlSW5wdXRNb2RlcyksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihzd2l6emxlQWN0aXZlSW5wdXRNb2RlcykpKTsKICAgICBbVUlLZXlib2FyZEltcGwu
c2hhcmVkSW5zdGFuY2UgcHJlcGFyZUtleWJvYXJkSW5wdXRNb2RlRnJvbVByZWZlcmVuY2VzOm5p
bF07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2Vu
ZGVyUHJveHkubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5
Lm1tCmluZGV4IGQxY2ZjNmEzMzIxZTAyOWM4YmE4MTE1ZjRhNmQ5MjA3ZjhlNzE4NGYuLjg5Y2U0
ZWYxMjZjMTVkOTJkY2Y3NjY1MGNlNmVlZjViODkyMzE3MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQpAQCAtMzI1LDcgKzMyNSw3IEBAIHZv
aWQgRXZlbnRTZW5kZXJQcm94eTo6bW91c2VEb3duKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllCiAKICAgICBOU1ZpZXcgKnRhcmdldFZpZXcgPSBbbV90ZXN0
Q29udHJvbGxlci0+bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgaGl0VGVzdDpbZXZlbnQg
bG9jYXRpb25JbldpbmRvd11dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8g
ZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNz
TWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1
dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1
dHRvbnMpKTsKKyAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9
IG1ha2VVbmlxdWU8Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0
b3IocHJlc3NlZE1vdXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2
ZW50UHJlc3NlZE1vdXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVu
dDpldmVudF07CiAgICAgICAgIFt0YXJnZXRWaWV3IG1vdXNlRG93bjpldmVudF07CiAgICAgICAg
IFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBF
dmVudFNlbmRlclByb3h5Ojptb3VzZVVwKHVuc2lnbmVkIGJ1dHRvbk51bWJlciwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnMKICAgICAgICAgdGFyZ2V0VmlldyA9IG1fdGVzdENvbnRyb2xsZXIt
Pm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwogCiAgICAgQVNTRVJUKHRhcmdldFZpZXcp
OwotICAgIGF1dG8gZXZlbnRQcmVzc2VkTW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENsYXNzTWV0aG9kU3dpenpsZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHBy
ZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFBy
ZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3
aXp6bGVyID0gbWFrZVVuaXF1ZTxDbGFzc01ldGhvZFN3aXp6bGVyPihbTlNFdmVudCBjbGFzc10s
IEBzZWxlY3RvcihwcmVzc2VkTW91c2VCdXR0b25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3
aXp6bGVkRXZlbnRQcmVzc2VkTW91c2VCdXR0b25zKSk7CiAgICAgW05TQXBwIF9zZXRDdXJyZW50
RXZlbnQ6ZXZlbnRdOwogICAgIFt0YXJnZXRWaWV3IG1vdXNlVXA6ZXZlbnRdOwogICAgIFtOU0Fw
cCBfc2V0Q3VycmVudEV2ZW50Om5pbF07CkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBFdmVudFNl
bmRlclByb3h5Ojptb3VzZU1vdmVUbyhkb3VibGUgeCwgZG91YmxlIHkpCiAgICAgLy8gQWx3YXlz
IHRhcmdldCBkcmFncyBhdCB0aGUgV0tXZWJWaWV3IHRvIGFsbG93IGZvciBkcmFnLXNjcm9sbGlu
ZyBvdXRzaWRlIHRoZSB2aWV3LgogICAgIE5TVmlldyAqdGFyZ2V0VmlldyA9IGlzRHJhZyA/IG1f
dGVzdENvbnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIDogW21fdGVzdENv
bnRyb2xsZXItPm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIGhpdFRlc3Q6d2luZG93TG9j
YXRpb25dOwogICAgIGlmICh0YXJnZXRWaWV3KSB7Ci0gICAgICAgIGF1dG8gZXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0aG9kU3dpenps
ZXI+KFtOU0V2ZW50IGNsYXNzXSwgQHNlbGVjdG9yKHByZXNzZWRNb3VzZUJ1dHRvbnMpLCByZWlu
dGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRFdmVudFByZXNzZWRNb3VzZUJ1dHRvbnMpKTsKKyAg
ICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9IG1ha2VVbmlxdWU8
Q2xhc3NNZXRob2RTd2l6emxlcj4oW05TRXZlbnQgY2xhc3NdLCBAc2VsZWN0b3IocHJlc3NlZE1v
dXNlQnV0dG9ucyksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZEV2ZW50UHJlc3NlZE1v
dXNlQnV0dG9ucykpOwogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpldmVudF07CiAg
ICAgICAgIGlmIChpc0RyYWcpCiAgICAgICAgICAgICBbdGFyZ2V0VmlldyBtb3VzZURyYWdnZWQ6
ZXZlbnRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93cGUvRXZlbnRTZW5k
ZXJQcm94eVdQRS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclBy
b3h5V1BFLmNwcAppbmRleCA0NjliZmFmMGU4Y2YyOTA3MzBiYWJmYTA3ODM2ZDg3N2VjNzBlOGY1
Li4yNjAwYjY4M2MwNzVjOWMxMjA2OGU3YjJhZTE1MjM0YTgwODhkYzJmIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL3dwZS9FdmVudFNlbmRlclByb3h5V1BFLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPHdwZS93cGUuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTI3OSw3ICsyODAsNyBAQCBz
dGF0aWMgdWludDMyX3Qgd3BlS2V5U3ltRm9yS2V5UmVmKFdLU3RyaW5nUmVmIGtleVJlZiwgdW5z
aWduZWQgbG9jYXRpb24sIHVpbnQzMgogICAgICAgICByZXR1cm4gV1BFX0tFWV9GMTI7CiAKICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShr
ZXlSZWYpOwotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGJ1ZmZl
clNpemUpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNp
emUpOwogICAgIFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoa2V5UmVmLCBidWZmZXIuZ2V0KCksIGJ1
ZmZlclNpemUpOwogICAgIGNoYXIgY2hhckNvZGUgPSBidWZmZXIuZ2V0KClbMF07CiAK
</data>
<flag name="commit-queue"
          id="392454"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376666</attachid>
            <date>2019-08-19 00:16:04 -0700</date>
            <delta_ts>2019-08-19 00:54:34 -0700</delta_ts>
            <desc>C: makeUnique should perform static-assert</desc>
            <filename>bug-200620-20190819001603.patch</filename>
            <type>text/plain</type>
            <size>5080</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRhY2EyY2NkNmI2ZDk1MWI1NzZkNWJm
N2FkODdlNWNhM2ZlMDQ1Y2YuLjc1OGI2ZDI4NmM0ZThlNmFmN2YyODRhNjQ3YzZhNWMyYjk4MGYy
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2gg
ZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBhY3R1YWwgc3RhdGljX2Fzc2VydCBwYXJ0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBUaGlzIGlzIHRoZSBs
YXN0IHBhcnQgb2YgdGhlIHNwbGl0IHBhdGNoIGZyb20gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDYyMC4KKyAgICAgICAgRXhwb3NlIFQ6OndlYmtpdEZhc3RNYWxs
b2NlZCB0eXBlIHRvIHBlcmZvcm0gc3RhdGljX2Fzc2VydCBpbiBtYWtlVW5pcXVlLgorICAgICAg
ICBtYWtlVW5pcXVlIGFuZCBtYWtlVW5pcXVlUmVmIHN0YXJ0IHBlcmZvcm1pbmcgc3RhdGljX2Fz
c2VydCBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgdHlwZSBUIGlzIEZhc3RNYWxsb2NlZCAvIElz
b0hlYXBlZC4KKworICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL1N0
ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAgKiB3dGYv
VW5pcXVlUmVmLmg6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWYpOgorCiAyMDE5LTA4LTE4
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dURl0gQWRk
IG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZCwgbWFrZVVu
aXF1ZSAvIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrIHBhcnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRl
eCAzZjBmYjJlMWNlZWFlZjA2NTljMzRjODI3MWJlZWMxMDgyMzc1NmVkLi44OTE3MmY1NTBlZDEz
YjQ3OWFiZjI1NDBlOGQxYjQ0M2ZmMmM5ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTktMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2Nh
dGVkLCBhY3R1YWwgc3RhdGljX2Fzc2VydCBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZiBHYXJlbi4KKworICAgICAgICBFeHBvc2UgVDo6d2Via2l0RmFzdE1hbGxvY2VkIHR5cGUgdG8g
cGVyZm9ybSBzdGF0aWNfYXNzZXJ0IGluIG1ha2VVbmlxdWUuCisKKyAgICAgICAgKiBibWFsbG9j
L0lzb0hlYXAuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmg6CisKIDIwMTkt
MDctMjQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbYm1h
bGxvY10gQWRkIElzb0hlYXAgdGVzdCB0byBlbnN1cmUgdGhhdCBJc29IZWFwIHBhZ2VzIGFyZSBu
b3QgYWxsb2NhdGluZyB0b28gbGFyZ2UgVkEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zh
c3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCBlZmVmYjNhMzEz
M2U4M2Y2NDMzNmZkMmVjMmRhNTJhNTQ4MzJlNjIxLi44ZTRkOGVjNjM2OTMzODNjNzE5ZGNhNDMz
OTIyYWI3OTkyZmMxOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgK
KysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0yOTcsMTMgKzI5NywxNCBAQCB1
c2luZyBXVEY6OmZhc3RBbGlnbmVkRnJlZTsKICAgICAgICAgQVNTRVJUKGxvY2F0aW9uKTsgXAog
ICAgICAgICByZXR1cm4gbG9jYXRpb247IFwKICAgICB9IFwKKyAgICB1c2luZyB3ZWJraXRGYXN0
TWFsbG9jZWQgPSBpbnQ7IFwKIAogI2RlZmluZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBcCiBw
dWJsaWM6IFwKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9JTVBMIFwKIHByaXZhdGU6IFwK
LXR5cGVkZWYgaW50IF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8K
K3VzaW5nIF9fdGhpc0lzSGVyZVRvRm9yY2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8gPSBpbnQK
IAogI2RlZmluZSBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQgXAogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEX0lNUEwgXAotdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9Gb3JjZUFT
ZW1pY29sb25BZnRlclRoaXNNYWNybwordXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFTZW1pY29s
b25BZnRlclRoaXNNYWNybyA9IGludApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGli
RXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCBkOWJhMWU2YjY4
MjE3YmMxYzYyMDU1ZTU0YzVkODc2MTMxOGMzYmQyLi5iY2RmNjhmODM0OWZlZTQ4MmFlN2I2MjVh
ZGY3Y2Y5ZjVhZTU0Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtNTcwLDYgKzU3MCw3IEBA
IG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJncz4KIEFMV0FZ
U19JTkxJTkUgZGVjbHR5cGUoYXV0bykgbWFrZVVuaXF1ZShBcmdzJiYuLi4gYXJncykKIHsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjp3ZWJraXRGYXN0TWFsbG9j
ZWQsIGludD46OnZhbHVlLCAiVCBpcyBGYXN0TWFsbG9jZWQiKTsKICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxUPihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJl
Zi5oCmluZGV4IDk5OGI0M2UxMjI2ZTg2Y2NkZTMyOGJiZGZlZWFiNmYyYzgzOGRmMDguLjRiZjM2
OGRhZWRjYzc3ZTA0MGQ5YzY5NjU4YWFhYmQxZDNhMzQ1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VuaXF1ZVJlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCkBAIC00
MSw2ICs0MSw3IEBAIFVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2ND
aGVjayhBcmdzJiYuLi4gYXJncykKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+
CiBVbmlxdWVSZWY8VD4gbWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4gYXJncykKIHsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBUOjp3ZWJraXRGYXN0TWFsbG9jZWQsIGlu
dD46OnZhbHVlLCAiVCBpcyBGYXN0TWFsbG9jZWQiKTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8VD4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAppbmRleCBlZWNhNzM5ZDJiMzk0ZTg2MDM1MWJh
MWI0NjRkZTU0NzhiOWJiMTY3Li4xNTQwMWI3YjY5MzY1ZDczZDY0YTE3ODI2YzkwOWZjNzdmOWNl
NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaApAQCAtODIsNyArODIsOCBAQCBwdWJsaWM6
IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVsZXRl
OyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0ZTsgXAordXNp
bmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBcCiBwcml2YXRlOiBcCi10eXBlZGVmIGludCBf
X21ha2VCaXNvTWFsbG9jZWRNYWNyb1NlbWljb2xvbmlmaWVyCit1c2luZyBfX21ha2VCaXNvTWFs
bG9jZWRNYWNyb1NlbWljb2xvbmlmaWVyID0gaW50CiAKIH0gfSAvLyBuYW1lc3BhY2UgYm1hbGxv
Yzo6YXBpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVz
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKaW5kZXggYzA0NGQ3
NzNiODc5YTY2ZGZhZGQyZTJjYTMxNWVlZWEzNzZmZmE0YS4uMjYzMWM2MDg5OTM0NWYyYjhmYTA4
YWYwOTFmZDAzYjA5NjRmMjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElubGlu
ZXMuaApAQCAtMTIzLDggKzEyMyw5IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9yIGRl
bGV0ZVtdKHZvaWQqIHApID0gZGVsZXRlOyBcCit1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQgPSBp
bnQ7IFwKIHByaXZhdGU6IFwKLXR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1h
Y3JvU2VtaWNvbG9uaWZpZXIKK3VzaW5nIF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1hY3JvU2Vt
aWNvbG9uaWZpZXIgPSBpbnQKIAogI2RlZmluZSBNQUtFX0JJU09fTUFMTE9DRURfSU1QTChpc29U
eXBlKSBcCiA6OmJtYWxsb2M6OmFwaTo6SXNvSGVhcDxpc29UeXBlPiYgaXNvVHlwZTo6Ymlzb0hl
YXAoKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376672</attachid>
            <date>2019-08-19 00:54:25 -0700</date>
            <delta_ts>2019-08-19 00:54:25 -0700</delta_ts>
            <desc>C: makeUnique should perform static-assert</desc>
            <filename>bug-200620-20190819005424.patch</filename>
            <type>text/plain</type>
            <size>6622</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRhY2EyY2NkNmI2ZDk1MWI1NzZkNWJm
N2FkODdlNWNhM2ZlMDQ1Y2YuLjc1OGI2ZDI4NmM0ZThlNmFmN2YyODRhNjQ3YzZhNWMyYjk4MGYy
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2gg
ZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2NhdGVkLCBhY3R1YWwgc3RhdGljX2Fzc2VydCBwYXJ0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBUaGlzIGlzIHRoZSBs
YXN0IHBhcnQgb2YgdGhlIHNwbGl0IHBhdGNoIGZyb20gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMDYyMC4KKyAgICAgICAgRXhwb3NlIFQ6OndlYmtpdEZhc3RNYWxs
b2NlZCB0eXBlIHRvIHBlcmZvcm0gc3RhdGljX2Fzc2VydCBpbiBtYWtlVW5pcXVlLgorICAgICAg
ICBtYWtlVW5pcXVlIGFuZCBtYWtlVW5pcXVlUmVmIHN0YXJ0IHBlcmZvcm1pbmcgc3RhdGljX2Fz
c2VydCBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgdHlwZSBUIGlzIEZhc3RNYWxsb2NlZCAvIElz
b0hlYXBlZC4KKworICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgICogd3RmL1N0
ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlKToKKyAgICAgICAgKiB3dGYv
VW5pcXVlUmVmLmg6CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVSZWYpOgorCiAyMDE5LTA4LTE4
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dURl0gQWRk
IG1ha2VVbmlxdWU8VD4sIHdoaWNoIGVuc3VyZXMgVCBpcyBmYXN0LWFsbG9jYXRlZCwgbWFrZVVu
aXF1ZSAvIG1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrIHBhcnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1NjkzYTEzMmRhYmZjM2ZlNTk1YjNkYjcxNjYyYzNkYWI3OGI4N2IyLi4zZGZkYjAwZDc3ZTY0
NWY2ZTk2MzZkNGJkZDVjZDVhOGFhNzY2NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTktMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV1RGXSBBZGQgbWFrZVVuaXF1ZTxUPiwgd2hpY2ggZW5zdXJlcyBUIGlzIGZhc3QtYWxsb2Nh
dGVkLCBhY3R1YWwgc3RhdGljX2Fzc2VydCBwYXJ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZiBHYXJlbi4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJs
Lmg6CisKIDIwMTktMDgtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIGVudW1lcmF0ZURldmljZXMgc2hvdWxkIHJldHVybiB0aGUgc2FtZSBKUyBvYmplY3Rz
IGlmIGNhbGxlZCB0d2ljZQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nIGIv
U291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDNmMGZiMmUxY2VlYWVmMDY1OWMzNGM4Mjcx
YmVlYzEwODIzNzU2ZWQuLjg5MTcyZjU1MGVkMTNiNDc5YWJmMjU0MGU4ZDFiNDQzZmYyYzllMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wOC0xOSAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBtYWtlVW5pcXVlPFQ+LCB3
aGljaCBlbnN1cmVzIFQgaXMgZmFzdC1hbGxvY2F0ZWQsIGFjdHVhbCBzdGF0aWNfYXNzZXJ0IHBh
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDYy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEV4cG9zZSBU
Ojp3ZWJraXRGYXN0TWFsbG9jZWQgdHlwZSB0byBwZXJmb3JtIHN0YXRpY19hc3NlcnQgaW4gbWFr
ZVVuaXF1ZS4KKworICAgICAgICAqIGJtYWxsb2MvSXNvSGVhcC5oOgorICAgICAgICAqIGJtYWxs
b2MvSXNvSGVhcElubGluZXMuaDoKKwogMjAxOS0wNy0yNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBBZGQgSXNvSGVhcCB0ZXN0IHRvIGVu
c3VyZSB0aGF0IElzb0hlYXAgcGFnZXMgYXJlIG5vdCBhbGxvY2F0aW5nIHRvbyBsYXJnZSBWQQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93dGYv
RmFzdE1hbGxvYy5oCmluZGV4IGVmZWZiM2EzMTMzZTgzZjY0MzM2ZmQyZWMyZGE1MmE1NDgzMmU2
MjEuLjhlNGQ4ZWM2MzY5MzM4M2M3MTlkY2E0MzM5MjJhYjc5OTJmYzE5NGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFs
bG9jLmgKQEAgLTI5NywxMyArMjk3LDE0IEBAIHVzaW5nIFdURjo6ZmFzdEFsaWduZWRGcmVlOwog
ICAgICAgICBBU1NFUlQobG9jYXRpb24pOyBcCiAgICAgICAgIHJldHVybiBsb2NhdGlvbjsgXAog
ICAgIH0gXAorICAgIHVzaW5nIHdlYmtpdEZhc3RNYWxsb2NlZCA9IGludDsgXAogCiAjZGVmaW5l
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIFwKIHB1YmxpYzogXAogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEX0lNUEwgXAogcHJpdmF0ZTogXAotdHlwZWRlZiBpbnQgX190aGlzSXNIZXJlVG9G
b3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybwordXNpbmcgX190aGlzSXNIZXJlVG9Gb3JjZUFT
ZW1pY29sb25BZnRlclRoaXNNYWNybyA9IGludAogCiAjZGVmaW5lIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRCBcCiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURfSU1QTCBcCi10eXBl
ZGVmIGludCBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvCit1c2lu
ZyBfX3RoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xvbkFmdGVyVGhpc01hY3JvID0gaW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0
ZExpYkV4dHJhcy5oCmluZGV4IGQ5YmExZTZiNjgyMTdiYzFjNjIwNTVlNTRjNWQ4NzYxMzE4YzNi
ZDIuLmJjZGY2OGY4MzQ5ZmVlNDgyYWU3YjYyNWFkZjdjZjlmNWFlNTRmOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oCkBAIC01NzAsNiArNTcwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTxj
bGFzcyBULCBjbGFzcy4uLiBBcmdzPgogQUxXQVlTX0lOTElORSBkZWNsdHlwZShhdXRvKSBtYWtl
VW5pcXVlKEFyZ3MmJi4uLiBhcmdzKQogeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PHR5cGVuYW1lIFQ6OndlYmtpdEZhc3RNYWxsb2NlZCwgaW50Pjo6dmFsdWUsICJUIGlzIEZhc3RN
YWxsb2NlZCIpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFQ+KHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZVJl
Zi5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKaW5kZXggOTk4YjQzZTEyMjZlODZjY2Rl
MzI4YmJkZmVlYWI2ZjJjODM4ZGYwOC4uNGJmMzY4ZGFlZGNjNzdlMDQwZDljNjk2NThhYWFiZDFk
M2EzNDVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKKysrIGIvU291
cmNlL1dURi93dGYvVW5pcXVlUmVmLmgKQEAgLTQxLDYgKzQxLDcgQEAgVW5pcXVlUmVmPFQ+IG1h
a2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrKEFyZ3MmJi4uLiBhcmdzKQogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4KIFVuaXF1ZVJlZjxUPiBtYWtlVW5pcXVlUmVm
KEFyZ3MmJi4uLiBhcmdzKQogeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVu
YW1lIFQ6OndlYmtpdEZhc3RNYWxsb2NlZCwgaW50Pjo6dmFsdWUsICJUIGlzIEZhc3RNYWxsb2Nl
ZCIpOwogICAgIHJldHVybiBtYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxUPihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaAppbmRleCBlNjJiYzRhMDdl
ODJlM2VjZjdjZjJmNjhhNDFlNGEyYWRhNzBmYjkxLi41ZTk3NGY1ZmJkYjhjMDQ5NzVhNTUxMWIw
ZGM0YTE0MmQxMDFhMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmgKQEAgLTQyLDYgKzQyLDcgQEAgc3RydWN0IFNhbWVT
aXRlSW5mbzsKIGVudW0gY2xhc3MgQ29va2llQWNjZXB0UG9saWN5OwogCiBjbGFzcyBDb29raWVK
YXJDdXJsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAppbmRleCBlZWNhNzM5ZDJiMzk0ZTg2MDM1
MWJhMWI0NjRkZTU0NzhiOWJiMTY3Li4xNTQwMWI3YjY5MzY1ZDczZDY0YTE3ODI2YzkwOWZjNzdm
OWNlNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXAuaApAQCAtODIsNyArODIsOCBAQCBwdWJs
aWM6IFwKICAgICBcCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHNpemUpID0gZGVs
ZXRlOyBcCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBwKSA9IGRlbGV0ZTsgXAor
dXNpbmcgd2Via2l0RmFzdE1hbGxvY2VkID0gaW50OyBcCiBwcml2YXRlOiBcCi10eXBlZGVmIGlu
dCBfX21ha2VCaXNvTWFsbG9jZWRNYWNyb1NlbWljb2xvbmlmaWVyCit1c2luZyBfX21ha2VCaXNv
TWFsbG9jZWRNYWNyb1NlbWljb2xvbmlmaWVyID0gaW50CiAKIH0gfSAvLyBuYW1lc3BhY2UgYm1h
bGxvYzo6YXBpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxp
bmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbmxpbmVzLmgKaW5kZXggYzA0
NGQ3NzNiODc5YTY2ZGZhZGQyZTJjYTMxNWVlZWEzNzZmZmE0YS4uMjYzMWM2MDg5OTM0NWYyYjhm
YTA4YWYwOTFmZDAzYjA5NjRmMjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29IZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcElu
bGluZXMuaApAQCAtMTIzLDggKzEyMyw5IEBAIHB1YmxpYzogXAogICAgIFwKICAgICB2b2lkKiBv
cGVyYXRvciBuZXdbXShzaXplX3Qgc2l6ZSkgPSBkZWxldGU7IFwKICAgICB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQqIHApID0gZGVsZXRlOyBcCit1c2luZyB3ZWJraXRGYXN0TWFsbG9jZWQg
PSBpbnQ7IFwKIHByaXZhdGU6IFwKLXR5cGVkZWYgaW50IF9fbWFrZUJpc29NYWxsb2NlZElubGlu
ZU1hY3JvU2VtaWNvbG9uaWZpZXIKK3VzaW5nIF9fbWFrZUJpc29NYWxsb2NlZElubGluZU1hY3Jv
U2VtaWNvbG9uaWZpZXIgPSBpbnQKIAogI2RlZmluZSBNQUtFX0JJU09fTUFMTE9DRURfSU1QTChp
c29UeXBlKSBcCiA6OmJtYWxsb2M6OmFwaTo6SXNvSGVhcDxpc29UeXBlPiYgaXNvVHlwZTo6Ymlz
b0hlYXAoKSBcCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>